diff --git a/.devcontainer.json b/.devcontainer.json new file mode 100644 index 00000000000000..c0ae5292d6b572 --- /dev/null +++ b/.devcontainer.json @@ -0,0 +1,25 @@ +{ + "name": "Node.js Core Developer Environment", + "runArgs": [ + "--platform=linux/amd64" + ], + "customizations": { + "vscode": { + "extensions": [ + "github.vscode-pull-request-github", + "ms-vsliveshare.vsliveshare", + "vscode-icons-team.vscode-icons", + "visualstudioexptteam.vscodeintellicode" + ], + "settings": { + "terminal.integrated.profiles.linux": { + "zsh (login)": { + "path": "zsh", + "args": ["-l"] + } + } + } + } + }, + "image": "nodejs/devcontainer:nightly" +} diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json deleted file mode 100644 index 75fda6e5b319b9..00000000000000 --- a/.devcontainer/devcontainer.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "Node.js Core Developer Environment", - "extensions": [ - "github.vscode-pull-request-github", - "ms-vsliveshare.vsliveshare", - "vscode-icons-team.vscode-icons", - "visualstudioexptteam.vscodeintellicode" - ], - "image": "nodejs/devcontainer:nightly", - "settings": { - "terminal.integrated.profiles.linux": { - "zsh (login)": { - "path": "zsh", - "args": ["-l"] - } - } - } -} diff --git a/.github/workflows/auto-start-ci.yml b/.github/workflows/auto-start-ci.yml index 2588bc82da3f66..077824621de03c 100644 --- a/.github/workflows/auto-start-ci.yml +++ b/.github/workflows/auto-start-ci.yml @@ -45,7 +45,7 @@ jobs: if: needs.get-prs-for-ci.outputs.numbers != '' runs-on: ubuntu-latest steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false diff --git a/.github/workflows/build-tarball.yml b/.github/workflows/build-tarball.yml index c5911684070fba..7a06ef9230e3fa 100644 --- a/.github/workflows/build-tarball.yml +++ b/.github/workflows/build-tarball.yml @@ -30,9 +30,6 @@ concurrency: env: PYTHON_VERSION: '3.12' FLAKY_TESTS: keep_retrying - CC: sccache clang - CXX: sccache clang++ - SCCACHE_GHA_ENABLED: 'true' permissions: contents: read @@ -42,17 +39,13 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: ${{ env.PYTHON_VERSION }} - - name: Set up sccache - uses: Mozilla-Actions/sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad # v0.0.9 - with: - version: v0.10.0 - name: Environment Information run: npx envinfo - name: Make tarball @@ -68,13 +61,20 @@ jobs: with: name: tarballs path: tarballs + compression-level: 0 test-tarball-linux: needs: build-tarball runs-on: ubuntu-24.04 + env: + CC: sccache clang + CXX: sccache clang++ + SCCACHE_GHA_ENABLED: 'true' steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false + sparse-checkout: .github/actions/install-clang + sparse-checkout-cone-mode: false - name: Set up Python ${{ env.PYTHON_VERSION }} uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: @@ -86,7 +86,7 @@ jobs: - name: Environment Information run: npx envinfo - name: Download tarball - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 + uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 with: name: tarballs path: tarballs @@ -94,15 +94,19 @@ jobs: run: | tar xzf tarballs/*.tar.gz -C $RUNNER_TEMP echo "TAR_DIR=$RUNNER_TEMP/`basename tarballs/*.tar.gz .tar.gz`" >> $GITHUB_ENV - - name: Copy directories needed for testing - run: | - cp -r tools/eslint $TAR_DIR/tools - cp -r tools/eslint-rules $TAR_DIR/tools - name: Build run: | - cd $TAR_DIR - make build-ci -j4 V=1 + make -C "$TAR_DIR" build-ci -j4 V=1 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + with: + persist-credentials: false + sparse-checkout: | + tools/eslint + tools/eslint-rules + - name: Move directories needed for testing + run: | + mv tools/eslint "$TAR_DIR/tools" + mv tools/eslint-rules "$TAR_DIR/tools" - name: Test run: | - cd $TAR_DIR - make run-ci -j4 V=1 TEST_CI_ARGS="-p dots --measure-flakiness 9" + make -C "$TAR_DIR" run-ci -j4 V=1 TEST_CI_ARGS="-p dots --measure-flakiness 9" diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 969ec37ee63ece..e4e2eabfe7ef1d 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -23,19 +23,19 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2 + uses: github/codeql-action/init@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.30.0 with: languages: ${{ matrix.language }} config-file: ./.github/codeql-config.yml - name: Autobuild - uses: github/codeql-action/autobuild@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2 + uses: github/codeql-action/autobuild@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.30.0 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2 + uses: github/codeql-action/analyze@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.30.0 with: category: /language:${{matrix.language}} diff --git a/.github/workflows/commit-lint.yml b/.github/workflows/commit-lint.yml index 4cd44c6d18538f..6703752b8eef7e 100644 --- a/.github/workflows/commit-lint.yml +++ b/.github/workflows/commit-lint.yml @@ -17,7 +17,7 @@ jobs: run: | echo "plusOne=$((${{ github.event.pull_request.commits }} + 1))" >> $GITHUB_OUTPUT echo "minusOne=$((${{ github.event.pull_request.commits }} - 1))" >> $GITHUB_OUTPUT - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: fetch-depth: ${{ steps.nb-of-commits.outputs.plusOne }} persist-credentials: false diff --git a/.github/workflows/commit-queue.yml b/.github/workflows/commit-queue.yml index f1690f648d33b6..5dd31f4f9486b7 100644 --- a/.github/workflows/commit-queue.yml +++ b/.github/workflows/commit-queue.yml @@ -59,7 +59,7 @@ jobs: if: needs.get_mergeable_prs.outputs.numbers != '' runs-on: ubuntu-latest steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: # A personal token is required because pushing with GITHUB_TOKEN will # prevent commits from running CI after they land. It needs diff --git a/.github/workflows/coverage-linux-without-intl.yml b/.github/workflows/coverage-linux-without-intl.yml index c8e0cafa0f7098..ba47dced88f9b8 100644 --- a/.github/workflows/coverage-linux-without-intl.yml +++ b/.github/workflows/coverage-linux-without-intl.yml @@ -49,7 +49,7 @@ jobs: if: false runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} @@ -80,6 +80,6 @@ jobs: - name: Clean tmp run: rm -rf coverage/tmp && rm -rf out - name: Upload - uses: codecov/codecov-action@39a2af19d997be74586469d4062e173ecae614f6 # v5.4.3+ + uses: codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 # v5.5.0 with: directory: ./coverage diff --git a/.github/workflows/coverage-linux.yml b/.github/workflows/coverage-linux.yml index 4e620a7a848f24..0fd2d543be0451 100644 --- a/.github/workflows/coverage-linux.yml +++ b/.github/workflows/coverage-linux.yml @@ -49,7 +49,7 @@ jobs: if: false runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} @@ -80,6 +80,6 @@ jobs: - name: Clean tmp run: rm -rf coverage/tmp && rm -rf out - name: Upload - uses: codecov/codecov-action@39a2af19d997be74586469d4062e173ecae614f6 # v5.4.3+ + uses: codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 # v5.5.0 with: directory: ./coverage diff --git a/.github/workflows/coverage-windows.yml b/.github/workflows/coverage-windows.yml index 3b4848778bc273..aa8cd20e003a85 100644 --- a/.github/workflows/coverage-windows.yml +++ b/.github/workflows/coverage-windows.yml @@ -43,9 +43,9 @@ permissions: jobs: coverage-windows: if: github.event.pull_request.draft == false - runs-on: windows-2022 + runs-on: windows-2025 steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} @@ -71,6 +71,6 @@ jobs: - name: Clean tmp run: npx rimraf ./coverage/tmp - name: Upload - uses: codecov/codecov-action@39a2af19d997be74586469d4062e173ecae614f6 # v5.4.3+ + uses: codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 # v5.5.0 with: directory: ./coverage diff --git a/.github/workflows/create-release-proposal.yml b/.github/workflows/create-release-proposal.yml index 58cf5a0bba55f6..f88992dcdb017e 100644 --- a/.github/workflows/create-release-proposal.yml +++ b/.github/workflows/create-release-proposal.yml @@ -33,7 +33,7 @@ jobs: RELEASE_LINE: ${{ inputs.release-line }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: ref: ${{ env.STAGING_BRANCH }} persist-credentials: false diff --git a/.github/workflows/daily-wpt-fyi.yml b/.github/workflows/daily-wpt-fyi.yml index 3cc6e6c54cd28c..64ab04bae7f0f3 100644 --- a/.github/workflows/daily-wpt-fyi.yml +++ b/.github/workflows/daily-wpt-fyi.yml @@ -63,7 +63,7 @@ jobs: SHORT_SHA=$(node -p 'process.version.split(/-nightly\d{8}/)[1]') echo "NIGHTLY_REF=$(gh api /repos/nodejs/node/commits/$SHORT_SHA --jq '.sha')" >> $GITHUB_ENV - name: Checkout ${{ steps.setup-node.outputs.node-version }} - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false ref: ${{ env.NIGHTLY_REF || steps.setup-node.outputs.node-version }} @@ -79,7 +79,7 @@ jobs: run: rm -rf wpt working-directory: test/fixtures - name: Checkout epochs/daily WPT - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: repository: web-platform-tests/wpt persist-credentials: false @@ -104,7 +104,7 @@ jobs: run: rm -rf deps/undici - name: Checkout undici if: ${{ env.WPT_REPORT != '' }} - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: repository: nodejs/undici persist-credentials: false diff --git a/.github/workflows/daily.yml b/.github/workflows/daily.yml index ae2b7a577f7b0f..43f8bb3df1eb2d 100644 --- a/.github/workflows/daily.yml +++ b/.github/workflows/daily.yml @@ -15,7 +15,7 @@ jobs: build-lto: runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index 1793edd12ce261..3ca1a569ea3bbd 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -24,7 +24,7 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} diff --git a/.github/workflows/find-inactive-collaborators.yml b/.github/workflows/find-inactive-collaborators.yml index 269bc2db172be8..725824e6f18cfb 100644 --- a/.github/workflows/find-inactive-collaborators.yml +++ b/.github/workflows/find-inactive-collaborators.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: fetch-depth: 0 persist-credentials: false diff --git a/.github/workflows/find-inactive-tsc.yml b/.github/workflows/find-inactive-tsc.yml index 9e294994ba8180..4ee5d2a595c6ee 100644 --- a/.github/workflows/find-inactive-tsc.yml +++ b/.github/workflows/find-inactive-tsc.yml @@ -20,13 +20,13 @@ jobs: steps: - name: Checkout the repo - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: fetch-depth: 0 persist-credentials: false - name: Clone nodejs/TSC repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: fetch-depth: 0 path: .tmp diff --git a/.github/workflows/license-builder.yml b/.github/workflows/license-builder.yml index c62e9b1f08fe54..6c7dc8721d382b 100644 --- a/.github/workflows/license-builder.yml +++ b/.github/workflows/license-builder.yml @@ -17,7 +17,7 @@ jobs: if: github.repository == 'nodejs/node' runs-on: ubuntu-latest steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - run: ./tools/license-builder.sh # Run the license builder tool diff --git a/.github/workflows/lint-release-proposal.yml b/.github/workflows/lint-release-proposal.yml index 101fa9964f0c73..c3e0ee34d18188 100644 --- a/.github/workflows/lint-release-proposal.yml +++ b/.github/workflows/lint-release-proposal.yml @@ -23,7 +23,7 @@ jobs: contents: read pull-requests: read steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - name: Lint release commit title format diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml index b3db61eca640f7..9f7030b4ad0fbd 100644 --- a/.github/workflows/linters.yml +++ b/.github/workflows/linters.yml @@ -25,7 +25,7 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} @@ -40,7 +40,7 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} @@ -55,7 +55,7 @@ jobs: if: ${{ github.event.pull_request && github.event.pull_request.draft == false && github.base_ref == github.event.repository.default_branch }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: fetch-depth: 0 persist-credentials: false @@ -93,7 +93,7 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} @@ -118,7 +118,7 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} @@ -135,7 +135,7 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - name: Use Python ${{ env.PYTHON_VERSION }} @@ -153,7 +153,7 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - run: shellcheck -V @@ -163,7 +163,7 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - uses: mszostok/codeowners-validator@7f3f5e28c6d7b8dfae5731e54ce2272ca384592f @@ -173,7 +173,7 @@ jobs: if: ${{ github.event.pull_request }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: fetch-depth: 2 persist-credentials: false @@ -182,7 +182,7 @@ jobs: lint-readme: runs-on: ubuntu-latest steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - name: Get team members if possible diff --git a/.github/workflows/notify-on-push.yml b/.github/workflows/notify-on-push.yml index bdda058f104795..d21f3e7943ccfb 100644 --- a/.github/workflows/notify-on-push.yml +++ b/.github/workflows/notify-on-push.yml @@ -35,7 +35,7 @@ jobs: contents: read pull-requests: write steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - name: Check commit message diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 45a5ab30e74ff6..2b4dfa7189645e 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -38,7 +38,7 @@ jobs: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - name: Checkout code - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false @@ -73,6 +73,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: Upload to code-scanning - uses: github/codeql-action/upload-sarif@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2 + uses: github/codeql-action/upload-sarif@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.30.0 with: sarif_file: results.sarif diff --git a/.github/workflows/test-internet.yml b/.github/workflows/test-internet.yml index 7d25113c024f78..759bbfee76b573 100644 --- a/.github/workflows/test-internet.yml +++ b/.github/workflows/test-internet.yml @@ -33,8 +33,9 @@ concurrency: env: PYTHON_VERSION: '3.12' FLAKY_TESTS: keep_retrying - CC: clang - CXX: clang++ + CC: sccache clang + CXX: sccache clang++ + SCCACHE_GHA_ENABLED: 'true' permissions: contents: read @@ -44,13 +45,17 @@ jobs: if: github.repository == 'nodejs/node' || github.event_name != 'schedule' runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: ${{ env.PYTHON_VERSION }} + - name: Set up sccache + uses: Mozilla-Actions/sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad # v0.0.9 + with: + version: v0.10.0 - name: Environment Information run: npx envinfo - name: Build diff --git a/.github/workflows/test-linux.yml b/.github/workflows/test-linux.yml index 789689c25cd4bf..88da01978c3917 100644 --- a/.github/workflows/test-linux.yml +++ b/.github/workflows/test-linux.yml @@ -43,7 +43,7 @@ jobs: matrix: os: [ubuntu-24.04, ubuntu-24.04-arm] steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false path: node diff --git a/.github/workflows/test-macos.yml b/.github/workflows/test-macos.yml index c74e200acb0295..510cb96411062f 100644 --- a/.github/workflows/test-macos.yml +++ b/.github/workflows/test-macos.yml @@ -47,7 +47,7 @@ jobs: CXX: sccache g++ SCCACHE_GHA_ENABLED: 'true' steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false path: node diff --git a/.github/workflows/timezone-update.yml b/.github/workflows/timezone-update.yml index e951b848ad4155..51dd8f155b89fa 100644 --- a/.github/workflows/timezone-update.yml +++ b/.github/workflows/timezone-update.yml @@ -20,12 +20,12 @@ jobs: steps: - name: Checkout nodejs/node - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - name: Checkout unicode-org/icu-data - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: path: icu-data persist-credentials: false diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml index 4004304746d651..38d5d152dcdf42 100644 --- a/.github/workflows/tools.yml +++ b/.github/workflows/tools.yml @@ -297,7 +297,7 @@ jobs: run: | git config --global user.name "Node.js GitHub Bot" git config --global user.email "github-bot@iojs.org" - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 if: github.event_name == 'schedule' || inputs.id == 'all' || inputs.id == matrix.id with: persist-credentials: false diff --git a/.github/workflows/update-openssl.yml b/.github/workflows/update-openssl.yml index f4f198104bfd23..ee9a3e0fa11c03 100644 --- a/.github/workflows/update-openssl.yml +++ b/.github/workflows/update-openssl.yml @@ -14,7 +14,7 @@ jobs: if: github.repository == 'nodejs/node' runs-on: ubuntu-latest steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - name: Check and download new OpenSSL version diff --git a/.github/workflows/update-v8.yml b/.github/workflows/update-v8.yml index 0b290e41ada4a0..d45ecd102a016b 100644 --- a/.github/workflows/update-v8.yml +++ b/.github/workflows/update-v8.yml @@ -16,11 +16,11 @@ jobs: if: github.repository == 'nodejs/node' runs-on: ubuntu-latest steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - name: Cache node modules and update-v8 - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 + uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4 id: cache-v8-npm env: cache-name: cache-v8-npm diff --git a/.github/workflows/update-wpt.yml b/.github/workflows/update-wpt.yml index 57eacd91d8c908..d49c5350fd7e8b 100644 --- a/.github/workflows/update-wpt.yml +++ b/.github/workflows/update-wpt.yml @@ -27,7 +27,7 @@ jobs: subsystem: ${{ fromJSON(github.event.inputs.subsystems || '["url", "WebCryptoAPI"]') }} steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false diff --git a/.gitignore b/.gitignore index 60a3ff8b4a4cd8..90ebce4cb674ac 100644 --- a/.gitignore +++ b/.gitignore @@ -7,8 +7,7 @@ .* # Exclude specific dotfiles that we want to track. !deps/**/.* -!.devcontainer/ -!.devcontainer/.devcontainer.json +!.devcontainer.json !test/fixtures/**/.* !.clang-format !.cpplint diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a1e5cb6b2ee24..5c947ebdd17194 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,7 +37,8 @@ release. -22.19.0
+22.20.0
+22.19.0
22.18.0
22.17.1
22.17.0
diff --git a/README.md b/README.md index 9b728ffd86547d..061831c2be02e5 100644 --- a/README.md +++ b/README.md @@ -767,6 +767,8 @@ maintaining the Node.js project. **Akhil Marsonya** <> (he/him) * [meixg](https://github.com/meixg) - **Xuguang Mei** <> (he/him) +* [milesguicent](https://github.com/milesguicent) - + **Miles Guicent** <> (he/him) * [preveen-stack](https://github.com/preveen-stack) - **Preveen Padmanabhan** <> (he/him) * [RaisinTen](https://github.com/RaisinTen) - diff --git a/SECURITY.md b/SECURITY.md index d5cc79095371e3..9862585a92391c 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -102,6 +102,22 @@ vulnerability in the context of the Node.js threat model. In other words, it cannot assume that a trusted element (such as the operating system) has been compromised. +### Experimental platforms + +Node.js maintains a tier-based support system for operating systems and +hardware combinations (Tier 1, Tier 2, and Experimental). For platforms +classified as "Experimental" in the [supported platforms](BUILDING.md#supported-platforms) +documentation: + +* Security vulnerabilities that only affect experimental platforms will **not** be accepted as valid security issues. +* Any issues on experimental platforms will be treated as normal bugs. +* No CVEs will be issued for issues that only affect experimental platforms +* Bug bounty rewards are not available for experimental platform-specific issues + +This policy recognizes that experimental platforms may not compile, may not +pass the test suite, and do not have the same level of testing and support +infrastructure as Tier 1 and Tier 2 platforms. + Being able to cause the following through control of the elements that Node.js does not trust is considered a vulnerability: @@ -284,3 +300,8 @@ Security notifications will be distributed via the following methods. If you have suggestions on how this process could be improved, please visit the [nodejs/security-wg](https://github.com/nodejs/security-wg) repository. + +## Incident Response Plan + +In the event of a security incident, please refer to the +[Security Incident Response Plan](https://github.com/nodejs/security-wg/blob/main/INCIDENT_RESPONSE_PLAN.md). diff --git a/benchmark/dgram/array-vs-concat.js b/benchmark/dgram/array-vs-concat.js index b5662acfc4033b..c859771e711095 100644 --- a/benchmark/dgram/array-vs-concat.js +++ b/benchmark/dgram/array-vs-concat.js @@ -5,18 +5,18 @@ const common = require('../common.js'); const dgram = require('dgram'); const PORT = common.PORT; -// `num` is the number of send requests to queue up each time. +// `n` is the number of send requests to queue up each time. // Keep it reasonably high (>10) otherwise you're benchmarking the speed of // event loop cycles more than anything else. const bench = common.createBenchmark(main, { - len: [64, 256, 512, 1024], - num: [100], - chunks: [1, 2, 4, 8], + len: [64, 512, 1024], + n: [100], + chunks: [1, 4], type: ['concat', 'multi'], dur: [5], }); -function main({ dur, len, num, type, chunks }) { +function main({ dur, len, n, type, chunks }) { const chunk = []; for (let i = 0; i < chunks; i++) { chunk.push(Buffer.allocUnsafe(Math.round(len / chunks))); @@ -28,11 +28,11 @@ function main({ dur, len, num, type, chunks }) { const onsend = type === 'concat' ? onsendConcat : onsendMulti; function onsendConcat() { - if (sent++ % num === 0) { + if (sent++ % n === 0) { // The setImmediate() is necessary to have event loop progress on OSes // that only perform synchronous I/O on nonblocking UDP sockets. setImmediate(() => { - for (let i = 0; i < num; i++) { + for (let i = 0; i < n; i++) { socket.send(Buffer.concat(chunk), PORT, '127.0.0.1', onsend); } }); @@ -40,11 +40,11 @@ function main({ dur, len, num, type, chunks }) { } function onsendMulti() { - if (sent++ % num === 0) { + if (sent++ % n === 0) { // The setImmediate() is necessary to have event loop progress on OSes // that only perform synchronous I/O on nonblocking UDP sockets. setImmediate(() => { - for (let i = 0; i < num; i++) { + for (let i = 0; i < n; i++) { socket.send(chunk, PORT, '127.0.0.1', onsend); } }); diff --git a/benchmark/fs/readfile-permission-enabled.js b/benchmark/fs/readfile-permission-enabled.js index c688e9eecb0e00..4d784ab343467a 100644 --- a/benchmark/fs/readfile-permission-enabled.js +++ b/benchmark/fs/readfile-permission-enabled.js @@ -12,8 +12,8 @@ const filename = tmpdir.resolve(`.removeme-benchmark-garbage-${process.pid}`); const bench = common.createBenchmark(main, { duration: [5], - encoding: ['', 'utf-8'], - len: [1024, 16 * 1024 * 1024], + encoding: ['utf-8'], + len: [1024], concurrent: [1, 10], }, { flags: [ diff --git a/benchmark/http/bench-parser.js b/benchmark/http/bench-parser.js index f2c120cd97f133..0a1e8f7b5e8a0f 100644 --- a/benchmark/http/bench-parser.js +++ b/benchmark/http/bench-parser.js @@ -16,7 +16,6 @@ function main({ len, n }) { const kOnHeadersComplete = HTTPParser.kOnHeadersComplete | 0; const kOnBody = HTTPParser.kOnBody | 0; const kOnMessageComplete = HTTPParser.kOnMessageComplete | 0; - const CRLF = '\r\n'; function processHeader(header, n) { const parser = newParser(REQUEST); @@ -43,12 +42,12 @@ function main({ len, n }) { return parser; } - let header = `GET /hello HTTP/1.1${CRLF}Content-Type: text/plain${CRLF}`; + let header = `GET /hello HTTP/1.1\r\nContent-Type: text/plain\r\n`; for (let i = 0; i < len; i++) { - header += `X-Filler${i}: ${Math.random().toString(36).substring(2)}${CRLF}`; + header += `X-Filler${i}: ${Math.random().toString(36).substring(2)}\r\n`; } - header += CRLF; + header += '\r\n'; processHeader(Buffer.from(header), n); } diff --git a/benchmark/sqlite/sqlite-prepare-select-all.js b/benchmark/sqlite/sqlite-prepare-select-all.js index e7ea882f16fd83..c8487dca471b84 100644 --- a/benchmark/sqlite/sqlite-prepare-select-all.js +++ b/benchmark/sqlite/sqlite-prepare-select-all.js @@ -26,25 +26,33 @@ const bench = common.createBenchmark(main, { function main(conf) { const db = new sqlite.DatabaseSync(':memory:'); - db.exec('CREATE TABLE foo (text_column TEXT, integer_column INTEGER, real_column REAL, blob_column BLOB)'); - const fooInsertStatement = db.prepare( - 'INSERT INTO foo (text_column, integer_column, real_column, blob_column) VALUES (?, ?, ?, ?)', - ); - - for (let i = 0; i < conf.tableSeedSize; i++) { - fooInsertStatement.run( - crypto.randomUUID(), - Math.floor(Math.random() * 100), - Math.random(), - Buffer.from('example blob data'), + // Create only the necessary table for the benchmark type. + // If the statement includes 'foo_large', create the foo_large table; otherwise, create the foo table. + if (conf.statement.includes('foo_large')) { + db.exec('CREATE TABLE foo_large (text_8kb_column TEXT)'); + const fooLargeInsertStatement = db.prepare( + 'INSERT INTO foo_large (text_8kb_column) VALUES (?)', + ); + const largeText = 'a'.repeat(8 * 1024); + for (let i = 0; i < conf.tableSeedSize; i++) { + fooLargeInsertStatement.run(largeText); + } + } else { + db.exec( + 'CREATE TABLE foo (text_column TEXT, integer_column INTEGER, real_column REAL, blob_column BLOB)', + ); + const fooInsertStatement = db.prepare( + 'INSERT INTO foo (text_column, integer_column, real_column, blob_column) VALUES (?, ?, ?, ?)', ); - } - db.exec('CREATE TABLE foo_large (text_8kb_column TEXT)'); - const fooLargeInsertStatement = db.prepare('INSERT INTO foo_large (text_8kb_column) VALUES (?)'); - const largeText = 'a'.repeat(8 * 1024); - for (let i = 0; i < conf.tableSeedSize; i++) { - fooLargeInsertStatement.run(largeText); + for (let i = 0; i < conf.tableSeedSize; i++) { + fooInsertStatement.run( + crypto.randomUUID(), + Math.floor(Math.random() * 100), + Math.random(), + Buffer.from('example blob data'), + ); + } } let i; @@ -53,8 +61,7 @@ function main(conf) { const stmt = db.prepare(conf.statement); bench.start(); - for (i = 0; i < conf.n; i += 1) - deadCodeElimination = stmt.all(); + for (i = 0; i < conf.n; i += 1) deadCodeElimination = stmt.all(); bench.end(conf.n); assert.ok(deadCodeElimination !== undefined); diff --git a/benchmark/sqlite/sqlite-prepare-select-get.js b/benchmark/sqlite/sqlite-prepare-select-get.js index 2308fe8947654b..0fff29ce5686da 100644 --- a/benchmark/sqlite/sqlite-prepare-select-get.js +++ b/benchmark/sqlite/sqlite-prepare-select-get.js @@ -20,25 +20,33 @@ const bench = common.createBenchmark(main, { function main(conf) { const db = new sqlite.DatabaseSync(':memory:'); - db.exec('CREATE TABLE foo (text_column TEXT, integer_column INTEGER, real_column REAL, blob_column BLOB)'); - const fooInsertStatement = db.prepare( - 'INSERT INTO foo (text_column, integer_column, real_column, blob_column) VALUES (?, ?, ?, ?)', - ); - - for (let i = 0; i < conf.tableSeedSize; i++) { - fooInsertStatement.run( - crypto.randomUUID(), - Math.floor(Math.random() * 100), - Math.random(), - Buffer.from('example blob data'), + // Create only the necessary table for the benchmark type. + // If the statement includes 'foo_large', create the foo_large table; otherwise, create the foo table. + if (conf.statement.includes('foo_large')) { + db.exec('CREATE TABLE foo_large (text_8kb_column TEXT)'); + const fooLargeInsertStatement = db.prepare( + 'INSERT INTO foo_large (text_8kb_column) VALUES (?)', + ); + const largeText = 'a'.repeat(8 * 1024); + for (let i = 0; i < conf.tableSeedSize; i++) { + fooLargeInsertStatement.run(largeText); + } + } else { + db.exec( + 'CREATE TABLE foo (text_column TEXT, integer_column INTEGER, real_column REAL, blob_column BLOB)', + ); + const fooInsertStatement = db.prepare( + 'INSERT INTO foo (text_column, integer_column, real_column, blob_column) VALUES (?, ?, ?, ?)', ); - } - db.exec('CREATE TABLE foo_large (text_8kb_column TEXT)'); - const fooLargeInsertStatement = db.prepare('INSERT INTO foo_large (text_8kb_column) VALUES (?)'); - const largeText = 'a'.repeat(8 * 1024); - for (let i = 0; i < conf.tableSeedSize; i++) { - fooLargeInsertStatement.run(largeText); + for (let i = 0; i < conf.tableSeedSize; i++) { + fooInsertStatement.run( + crypto.randomUUID(), + Math.floor(Math.random() * 100), + Math.random(), + Buffer.from('example blob data'), + ); + } } let i; @@ -47,8 +55,7 @@ function main(conf) { const stmt = db.prepare(conf.statement); bench.start(); - for (i = 0; i < conf.n; i += 1) - deadCodeElimination = stmt.get(); + for (i = 0; i < conf.n; i += 1) deadCodeElimination = stmt.get(); bench.end(conf.n); assert.ok(deadCodeElimination !== undefined); diff --git a/benchmark/util/diff.js b/benchmark/util/diff.js index 3ec024c24df6d0..7e40b3cd30f63b 100644 --- a/benchmark/util/diff.js +++ b/benchmark/util/diff.js @@ -5,7 +5,7 @@ const common = require('../common'); const bench = common.createBenchmark(main, { n: [1e3], - length: [1e3, 2e3], + length: [500, 1000], scenario: ['identical', 'small-diff', 'medium-diff', 'large-diff'], }); diff --git a/benchmark/v8/serialize.js b/benchmark/v8/serialize.js index c370da49ea7cca..1b9a240bd458e4 100644 --- a/benchmark/v8/serialize.js +++ b/benchmark/v8/serialize.js @@ -4,8 +4,8 @@ const common = require('../common.js'); const v8 = require('v8'); const bench = common.createBenchmark(main, { - len: [256, 1024 * 16, 1024 * 512], - n: [1e6], + len: [256, 1024 * 16], + n: [1e5], }); function main({ n, len }) { diff --git a/common.gypi b/common.gypi index 7780ae106b479c..ae31b372b96358 100644 --- a/common.gypi +++ b/common.gypi @@ -38,7 +38,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.29', + 'v8_embedder_string': '-node.33', ##### V8 defaults for Node.js ##### @@ -542,7 +542,12 @@ 'ldflags': [ '-m32' ], }], [ 'host_arch=="ppc64" and OS not in "aix os400"', { - 'cflags': [ '-m64', '-mminimal-toc' ], + 'conditions': [ + [ 'clang==0', { + 'cflags': [ '-mminimal-toc' ], + }], + ], + 'cflags': [ '-m64' ], 'ldflags': [ '-m64' ], }], [ 'host_arch=="s390x" and OS=="linux"', { @@ -566,7 +571,12 @@ 'ldflags': [ '-m32' ], }], [ 'target_arch=="ppc64" and OS not in "aix os400"', { - 'cflags': [ '-m64', '-mminimal-toc' ], + 'conditions': [ + [ 'clang==0', { + 'cflags': [ '-mminimal-toc' ], + }], + ], + 'cflags': [ '-m64' ], 'ldflags': [ '-m64' ], }], [ 'target_arch=="s390x" and OS=="linux"', { diff --git a/configure.py b/configure.py index 24159408350362..91283ca577f580 100755 --- a/configure.py +++ b/configure.py @@ -20,9 +20,9 @@ original_argv = sys.argv[1:] # gcc and g++ as defaults matches what GYP's Makefile generator does, -# except on OS X. -CC = os.environ.get('CC', 'cc' if sys.platform == 'darwin' else 'gcc') -CXX = os.environ.get('CXX', 'c++' if sys.platform == 'darwin' else 'g++') +# except on macOS and Windows. +CC = os.environ.get('CC', 'cc' if sys.platform == 'darwin' else 'clang' if sys.platform == 'win32' else 'gcc') +CXX = os.environ.get('CXX', 'c++' if sys.platform == 'darwin' else 'clang' if sys.platform == 'win32' else 'g++') tools_path = Path('tools') @@ -628,6 +628,12 @@ default=None, help=argparse.SUPPRESS) # Unsupported, undocumented. +parser.add_argument('--enable-v8windbg', + action='store_true', + dest='enable_v8windbg', + default=None, + help=argparse.SUPPRESS) # Undocumented. + parser.add_argument('--enable-trace-maps', action='store_true', dest='trace_maps', @@ -1111,7 +1117,7 @@ def try_check_compiler(cc, lang): proc = subprocess.Popen(shlex.split(cc) + ['-E', '-P', '-x', lang, '-'], stdin=subprocess.PIPE, stdout=subprocess.PIPE) except OSError: - return (False, False, '', '') + return (False, False, '', '', False) with proc: proc.stdin.write(b'__clang__ __GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__ ' @@ -1733,10 +1739,13 @@ def configure_v8(o, configs): o['variables']['node_use_bundled_v8'] = b(not options.without_bundled_v8) o['variables']['force_dynamic_crt'] = 1 if options.shared else 0 o['variables']['node_enable_d8'] = b(options.enable_d8) + o['variables']['node_enable_v8windbg'] = b(options.enable_v8windbg) if options.enable_d8: o['variables']['test_isolation_mode'] = 'noop' # Needed by d8.gyp. if options.without_bundled_v8 and options.enable_d8: raise Exception('--enable-d8 is incompatible with --without-bundled-v8.') + if options.without_bundled_v8 and options.enable_v8windbg: + raise Exception('--enable-v8windbg is incompatible with --without-bundled-v8.') if options.static_zoslib_gyp: o['variables']['static_zoslib_gyp'] = options.static_zoslib_gyp if flavor != 'linux' and options.v8_enable_hugepage: diff --git a/deps/amaro/dist/index.js b/deps/amaro/dist/index.js index 7682b0a3fc2a80..e695f752f0d0fb 100644 --- a/deps/amaro/dist/index.js +++ b/deps/amaro/dist/index.js @@ -91,6 +91,13 @@ var require_wasm = __commonJS({ function isLikeNone(x) { return x === void 0 || x === null; } + var cachedDataViewMemory0 = null; + function getDataViewMemory0() { + if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || cachedDataViewMemory0.buffer.detached === void 0 && cachedDataViewMemory0.buffer !== wasm.memory.buffer) { + cachedDataViewMemory0 = new DataView(wasm.memory.buffer); + } + return cachedDataViewMemory0; + } var CLOSURE_DTORS = typeof FinalizationRegistry === "undefined" ? { register: () => { }, unregister: () => { } } : new FinalizationRegistry((state) => { @@ -215,13 +222,6 @@ ${val.stack}`; WASM_VECTOR_LEN = offset; return ptr; } - var cachedDataViewMemory0 = null; - function getDataViewMemory0() { - if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || cachedDataViewMemory0.buffer.detached === void 0 && cachedDataViewMemory0.buffer !== wasm.memory.buffer) { - cachedDataViewMemory0 = new DataView(wasm.memory.buffer); - } - return cachedDataViewMemory0; - } module2.exports.transform = function(input, options) { const ret = wasm.transform(addHeapObject(input), addHeapObject(options)); return takeObject(ret); @@ -241,10 +241,10 @@ ${val.stack}`; wasm.__wbindgen_add_to_stack_pointer(16); } }; - function __wbg_adapter_42(arg0, arg1, arg2) { + function __wbg_adapter_50(arg0, arg1, arg2) { wasm.__wbindgen_export_4(arg0, arg1, addHeapObject(arg2)); } - function __wbg_adapter_67(arg0, arg1, arg2, arg3) { + function __wbg_adapter_91(arg0, arg1, arg2, arg3) { wasm.__wbindgen_export_5(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3)); } module2.exports.__wbg_buffer_609cc3eee51ed158 = function(arg0) { @@ -263,10 +263,20 @@ ${val.stack}`; return addHeapObject(ret); }, arguments); }; + module2.exports.__wbg_done_769e5ede4b31c67b = function(arg0) { + const ret = getObject(arg0).done; + return ret; + }; module2.exports.__wbg_entries_3265d4158b33e5dc = function(arg0) { const ret = Object.entries(getObject(arg0)); return addHeapObject(ret); }; + module2.exports.__wbg_get_67b2ba62fc30de12 = function() { + return handleError(function(arg0, arg1) { + const ret = Reflect.get(getObject(arg0), getObject(arg1)); + return addHeapObject(ret); + }, arguments); + }; module2.exports.__wbg_get_b9b93047fe3cf45b = function(arg0, arg1) { const ret = getObject(arg0)[arg1 >>> 0]; return addHeapObject(ret); @@ -285,6 +295,16 @@ ${val.stack}`; const ret = result; return ret; }; + module2.exports.__wbg_instanceof_Map_f3469ce2244d2430 = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof Map; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }; module2.exports.__wbg_instanceof_Uint8Array_17156bcf118086a9 = function(arg0) { let result; try { @@ -295,6 +315,18 @@ ${val.stack}`; const ret = result; return ret; }; + module2.exports.__wbg_isArray_a1eab7e0d067391b = function(arg0) { + const ret = Array.isArray(getObject(arg0)); + return ret; + }; + module2.exports.__wbg_isSafeInteger_343e2beeeece1bb0 = function(arg0) { + const ret = Number.isSafeInteger(getObject(arg0)); + return ret; + }; + module2.exports.__wbg_iterator_9a24c88df860dc65 = function() { + const ret = Symbol.iterator; + return addHeapObject(ret); + }; module2.exports.__wbg_length_a446193dc22c12f8 = function(arg0) { const ret = getObject(arg0).length; return ret; @@ -310,7 +342,7 @@ ${val.stack}`; const a = state0.a; state0.a = 0; try { - return __wbg_adapter_67(a, state0.b, arg02, arg12); + return __wbg_adapter_91(a, state0.b, arg02, arg12); } finally { state0.a = a; } @@ -338,6 +370,16 @@ ${val.stack}`; const ret = new Function(v0); return addHeapObject(ret); }; + module2.exports.__wbg_next_25feadfc0913fea9 = function(arg0) { + const ret = getObject(arg0).next; + return addHeapObject(ret); + }; + module2.exports.__wbg_next_6574e1a8a62d1055 = function() { + return handleError(function(arg0) { + const ret = getObject(arg0).next(); + return addHeapObject(ret); + }, arguments); + }; module2.exports.__wbg_queueMicrotask_97d92b4fcc8a61c5 = function(arg0) { queueMicrotask(getObject(arg0)); }; @@ -382,10 +424,24 @@ ${val.stack}`; const ret = getObject(arg0).toString(); return addHeapObject(ret); }; + module2.exports.__wbg_value_cd1ffa7b1ab794f1 = function(arg0) { + const ret = getObject(arg0).value; + return addHeapObject(ret); + }; + module2.exports.__wbindgen_bigint_from_i64 = function(arg0) { + const ret = arg0; + return addHeapObject(ret); + }; module2.exports.__wbindgen_bigint_from_u64 = function(arg0) { const ret = BigInt.asUintN(64, arg0); return addHeapObject(ret); }; + module2.exports.__wbindgen_bigint_get_as_i64 = function(arg0, arg1) { + const v = getObject(arg1); + const ret = typeof v === "bigint" ? v : void 0; + getDataViewMemory0().setBigInt64(arg0 + 8 * 1, isLikeNone(ret) ? BigInt(0) : ret, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true); + }; module2.exports.__wbindgen_boolean_get = function(arg0) { const v = getObject(arg0); const ret = typeof v === "boolean" ? v ? 1 : 0 : 2; @@ -400,8 +456,8 @@ ${val.stack}`; const ret = false; return ret; }; - module2.exports.__wbindgen_closure_wrapper8785 = function(arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 1483, __wbg_adapter_42); + module2.exports.__wbindgen_closure_wrapper6443 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 678, __wbg_adapter_50); return addHeapObject(ret); }; module2.exports.__wbindgen_debug_string = function(arg0, arg1) { @@ -419,6 +475,10 @@ ${val.stack}`; const ret = getObject(arg0) in getObject(arg1); return ret; }; + module2.exports.__wbindgen_is_bigint = function(arg0) { + const ret = typeof getObject(arg0) === "bigint"; + return ret; + }; module2.exports.__wbindgen_is_falsy = function(arg0) { const ret = !getObject(arg0); return ret; @@ -440,6 +500,10 @@ ${val.stack}`; const ret = getObject(arg0) === void 0; return ret; }; + module2.exports.__wbindgen_jsval_eq = function(arg0, arg1) { + const ret = getObject(arg0) === getObject(arg1); + return ret; + }; module2.exports.__wbindgen_jsval_loose_eq = function(arg0, arg1) { const ret = getObject(arg0) == getObject(arg1); return ret; @@ -481,7 +545,7 @@ ${val.stack}`; throw new Error(getStringFromWasm0(arg0, arg1)); }; var { Buffer: Buffer2 } = require("node:buffer"); - var bytes = Buffer2.from("AGFzbQEAAAABhAVRYAAAYAABf2AAAX5gAX8AYAF/AX9gAX8BfmABfwF8YAJ/fwBgAn9/AX9gAn9/AX5gA39/fwBgA39/fwF/YAN/f38BfmAEf39/fwBgBH9/f38Bf2AEf39/fwF+YAR/f39/AXxgBX9/f39/AGAFf39/f38Bf2AGf39/f39/AGAGf39/f39/AX9gB39/f39/f38AYAd/f39/f39/AX9gCH9/f39/f39/AX9gCX9/f39/f39/fwBgC39/f39/f39/f39/AX9gDX9/f39/f39/f39/f38AYA5/f39/f39/f39/f39/fwF/YA9/f39/f39/f39/f39/f38Bf2ATf39/f39/f39/f39/f39/f39/fwF/YBd/f39/f39/f39/f39/f39/f39/f39/fwF/YAl/f39/f39+fn4AYAV/f39/fgBgBn9/f39+fwBgBH9/f34AYAV/f39+fwF/YAZ/f39+f38AYAR/f398AGADf39+AGADf39+AX9gBH9/fn8AYAR/f35/AX9gBX9/fn9/AGAGf39+f35/AGAFf399f38AYAV/f3x/fwBgAn9+AGACf34Bf2ADf35/AGADf35/AX9gBH9+f38AYAR/fn9+AX5gA39+fgBgA39+fgF/YAR/fn5/AGAFf35+fn4AYAR/fX9/AGACf3wAYAN/fH8AYAN/fH8Bf2AEf3x/fwBgBH98f38Bf2ABfgBgAX4Bf2ABfgF+YAJ+fwBgAn5/AX9gAn5/AX5gA35/fwF/YAJ+fgBgAn5+AX5gA35+fwBgBH5+f38BfmAEfn5+fwF+YAd+fn5/f39/AX5gAXwBf2ABfAF8YAJ8fwF/YAJ8fwF8YAJ8fAF8YAN8fHwBfAL1FDAYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fFl9fd2JpbmRnZW5fYm9vbGVhbl9nZXQABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193YmdfbmV3XzIzYTI2NjVmYWM4M2M2MTEACBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18TX193YmluZGdlbl9pc19mYWxzeQAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXyRfX3diZ19nZXR3aXRocmVma2V5XzFkYzM2MWJkMTAwNTNiZmUACBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18dX193YmdfbGVuZ3RoX2UyZDJhNDkxMzJjMWIyNTYABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193YmdfZ2V0X2I5YjkzMDQ3ZmUzY2Y0NWIACBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18VX193YmluZGdlbl9zdHJpbmdfbmV3AAgYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fH19fd2JnX3RvU3RyaW5nXzUyODU1OTc5NjA2NzZiN2IABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193YmdfbmV3XzQwNWUyMmYzOTA1NzZjZTIAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193YmdfbmV3Xzc4ZmViMTA4YjY0NzI3MTMAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193Ymdfc2V0XzNmMWQwYjk4NGVkMjcyZWQAChhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193Ymdfc2V0XzM3ODM3MDIzZjNkNzQwZTgAChhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193YmluZGdlbl9vYmplY3RfZHJvcF9yZWYAAxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18VX193YmluZGdlbl9zdHJpbmdfZ2V0AAcYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fFF9fd2JpbmRnZW5faXNfc3RyaW5nAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fFF9fd2JpbmRnZW5faXNfb2JqZWN0AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fF19fd2JpbmRnZW5faXNfdW5kZWZpbmVkAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fDV9fd2JpbmRnZW5faW4ACBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18VX193YmluZGdlbl9udW1iZXJfbmV3AEsYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JpbmRnZW5fYmlnaW50X2Zyb21fdTY0AD8YX193YmluZGdlbl9wbGFjZWhvbGRlcl9fIF9fd2JnX25ld25vYXJnc18xMDVlZDQ3MTQ3NWFhZjUwAAgYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fG19fd2JnX2NhbGxfNjcyYTRkMjE2MzRkNGEyNAAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXy1fX3diZ19zdGF0aWNfYWNjZXNzb3JfR0xPQkFMXzg4YTkwMmQxM2E1NTdkMDcAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18yX193Ymdfc3RhdGljX2FjY2Vzc29yX0dMT0JBTF9USElTXzU2NTc4YmU3ZTlmODMyYjAAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18tX193Ymdfc3RhdGljX2FjY2Vzc29yX1dJTkRPV181ZGUzNzA0M2E5MWE5YzQwAAEYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fK19fd2JnX3N0YXRpY19hY2Nlc3Nvcl9TRUxGXzM3YzVkNDE4ZTRiZjU4MTkAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18bX193YmdfY2FsbF83Y2NjZGQ2OWUwNzkxYWUyAAsYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHV9fd2JnX2xlbmd0aF9hNDQ2MTkzZGMyMmMxMmY4AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fEV9fd2JpbmRnZW5fbWVtb3J5AAEYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHV9fd2JnX2J1ZmZlcl82MDljYzNlZWU1MWVkMTU4AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JnX25ld19hMTIwMDJhN2Y5MWM3NWJlAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JnX3NldF82NTU5NWJkZDg2OGIzMDA5AAoYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fLF9fd2JnX2luc3RhbmNlb2ZfVWludDhBcnJheV8xNzE1NmJjZjExODA4NmE5AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fG19fd2JpbmRnZW5fb2JqZWN0X2Nsb25lX3JlZgAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxRfX3diaW5kZ2VuX2Vycm9yX25ldwAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxlfX3diaW5kZ2VuX2pzdmFsX2xvb3NlX2VxAAgYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fFV9fd2JpbmRnZW5fbnVtYmVyX2dldAAHGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXy1fX3diZ19pbnN0YW5jZW9mX0FycmF5QnVmZmVyX2UxNDU4NTQzMmUzNzM3ZmMABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18eX193YmdfZW50cmllc18zMjY1ZDQxNThiMzNlNWRjAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fEF9fd2JpbmRnZW5fdGhyb3cABxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18XX193YmluZGdlbl9kZWJ1Z19zdHJpbmcABxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18bX193YmdfdGhlbl80NGI3Mzk0NmQyZmIzZTdkAAgYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fJV9fd2JnX3F1ZXVlTWljcm90YXNrXzk3ZDkyYjRmY2M4YTYxYzUAAxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18lX193YmdfcXVldWVNaWNyb3Rhc2tfZDMyMTlkZWY4MjU1MjQ4NQAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxZfX3diaW5kZ2VuX2lzX2Z1bmN0aW9uAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHl9fd2JnX3Jlc29sdmVfNDg1MTc4NWM5YzVmNTczZAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxJfX3diaW5kZ2VuX2NiX2Ryb3AABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18eX193YmluZGdlbl9jbG9zdXJlX3dyYXBwZXI4Nzg1AAsD0j/QPwMNBxEHBxEKCgcHChENBwcHBw0HCgoKChEKBwoHCg0KBwoHBwcNCgcHCg0TPQcNBwcRCgcHEQoKCg0KMggICg0ICAgHBwoKBw0RBxETBw4HBxMNBwcHBw0KCwcKBA0TBwoIDQ0KBwoHExEHBwcHEwgIBwMHBxEHDQMNAwMHBAQDAw0HAw0HDQMDDQoKDQcTDQgDBw0HCgcDAwoHChEHEw0NCgoHBAMDAwMDAwMHAwMDBwoDAwcDAwMDAwcNCggNAxERBwoDAwMDBwcTGgcDBwoKDQMDCgcTCAgHBwcHExMaBwgHCgMDEwMKDQcDAwMTCgMHBwoKEwoNBxMHCgcKBwMHCgcLBwMHAwNPDQoNDQcKDQcNCgMHAwMRBwMHFQcIBwcKCgcHBzILB00IAxUDEQcHBwoHDQcVFRUKBxUREREHBwEWEwoHEQcHEREIAwMHBwcLBwgHBw0RBwMKCwMDCAcIBw0IBwcREQoHBAsHCAMHCwMDAwMDCgghBwgIBwMLDQcHBw0ECgMDAwcDAwoHBAcTEwoEAwMDAwcNChEHCAgICAcRCgMHDQoIUA0DAwMDDQoICCEHCggHCwcHEQcTBAcHBwMHEw0KBwcKCgcIExEDCgMHBwMHFQMDAwMNBwcNBwcHCggHCAcIFQcBDQcHDQQLBwcHCgcNDQgDBw0DCgcHBwcKCAQDAwEKBxsKCgcHAxENBwcIDQgHAwcKDQcNEQMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMKBwsLAwoDBwoDAwMDBwcVAwcDBwcDDQcHBwMDCgMNBwcHBwoKAwcKChUHBw0ODQMDCg0VDg0HBAcDBwMHBwcHBAcHBA0DBwoVCAQHCg4DEQ4NBwcKBwcHFQoOAxUTCAgOCwcHBwcHEwQiBwc7CgoKBwsNBwMDBwcIAwcHBwgDBwMHAwMDBwcXBwMDAwMDBwoNCAsEBwcDBwMLCgMDAwMHBxMKBwcHAwcNBw0HAwsLCwcNBwcHCwcHBAoHDQcHAwQHCg0HAwMKDUwKCAsLCwsHBwMDBwcKBwcHAwcOBwsLCAgICA0IAwcKCAoDCgoKCgMHCgcDCwcIEQMHBwgDBwMRCgc9BwgICgcNCgoLCAgRDREDAwMDAwcKBwgIAwQEBxMUBwoKDQsDBwcDEwoNKxgLCg0DAwoDBwcHEwcHCgMLEwgNBAMHAwoHCAcHAwsTBwoNBAoKBQgHBAcHDQMNCQMDAwMHAwMDAwMDAwcHMAsTBwoHCwgICAcwBAkNDQ0RAzADAwMHCgcHAwcKCgcxCA4IMQoNDQcHBwoHCAcHEQsTTxMHBw0HCAgICgcDCgMDCgcNBwMDAwMDLgoHAwMTBwsjCAcIBwcDAwcICAgRAwcDEwgDAwMDBC4KBw0HCgcRFQcDAwoHBwcLCggDCgcTEwoVCggKExNISAcHBwcRBxMIB0hICgcDFQcHExUHCgcHBwMHNAoDAwcKCAoDAwMDBwcIBwoNBwoDBAQTBwcHBwcNBwoDCgcDDgQHAAcNCgQHBwcJEQMHQQcDBwcKCA0ICgMTAwMDBxEECwcHCgMHEwcLCg0HCh8ICgMHCAcDAwMHChEEBwcKCBEHCg0HAwgICAcICAgIBwcHDgoDBwcHCgoKCAQHBwoKDQgHBwoHDQ0KBwcKCgcHBw0DIgcKBwcHDREDAwgIBwgKBwcUCgMKAwMHAwcHB0wICgQIDQcIBwoTBAcHCAcKFgcDBw0ECgoHDQgHEgUEBAoKFQcHBwcHDQMHBwcLRAoICAgIBwcHBxMIBwoIExMKBwcHEwgRBwcLCggHBw4RBw4HKAcDCgcHBwcIBxEgAwgDCAMDCAcHAwgDBwcHDQoHAwcHBwcDBwcHBwgNDQcHBxEHCgcNDQgKBwMKDQoDBwoHDQ0NDQcTCgcHBwcKDQ0KBwoDCAoHBwgHBwMIAwcKCgczCgoHAwcDDQ0HAwcIExMHCgQRBwcIAwMDBwMDAwcIERMTBwcRCAsICAgIAwMKBwMFBwMNBwgKBAMkBwcHAwMHBwgDAwcHBw4IAwcICAcHBwsKDQgHBzAHBwgKBAcHBwcLCgoRCxMDAwQECAcLCxMOAwcHEQMDAwcDCAMICAcHCAMKEwcTBQcHBwgIBwgIDQMHLgcDBwoKBwMHBAMLDQoHExMNDQ0IAwgRCAMKCg4KBwcICAUICAcICAcKChMWEwgKCAcHBwMHBwgICgcIBwgICAcDBw0NCAMHBwcDAwgKCAQIBwgKCAcKLgoHCgoTBwdPT08KDQcNAwMDAwcDAwMDAwMDAwMDAwMDAwQKBwcKCgcDEQdPT08HCAoICgcOBwcKBAoICAgIAwsLCgMDAwMDBwMDBwMDAwMDBwcDEwoNBw0HBygICBMKDQ0ODgsHBw0DCgMLAwcDBwcHBwMNCwsHAwcDAwMNCAgIBwMDAwMDAwMHBwcDBwcHCw0NBwQEAwQKAwcDDQMHBwcDBAcDAwcDCgcIBwMHBwcKLgMKAwQHBAoHBwoKBwQHAwMHCAgHCAgDCAcHDRMTCgMDBwMDAwMDAwMDBwMDAwMDAwMDAwMDBwoDBwsKCgoJAw0HLgMHBAMDAwcDDQMICAMDEx4NAwcDEQ0HCgcHBwcHFwsHCgMHBwcHBwMDCgoIEQ0HBxENDggDDQ0IAwcIAwgDCgcKCAoDCwgNCAgDAwMICAMICAcDDQcEFggTCAgICAgICAgIKQMHAwMICAgDBwodDQMKAwMHAwQDAwoDAwMDAwMDAwMDAwMHAwcDBwMDAwMDAwMDAwMDAwMDAwMDDg4HCAQHBwMDBwQEBAoKEgcHAwgLEQMHCAoDCgMOCAgIAwMDCAMDDQMIBAMIBBEKBwgKBA0DAwcHBwMDBAcHBwcDBwgcCAoHDg0NCgcICAgIBwgDAw0IFQoKCgMDDQMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEQoRDQcREQovAwMNCAcDBwMHCAMDAwgDAwgEAwMKBwQLCgMHAwMDBAQDAwMDAwcDAwMDAwMDAwMDAwcDAwMDAwMDBwMHBwcDAwMDAwMDAwMHEwgHCAcDBwoKGQcLCgcHAwMLAwMDAwcIDQ0TCAsLBAcVBwsHBwQECgMDAwMDAwcHAwMDAwMDBwMDAxMIAwcHDgoECgoNBwcHBAoKBwcWCggIBAMIAwgKBwgICAgICAgICAcICgcIFQMDAwcHCgcHBwMEBBIICAQDBwgHAwgICA0HDQgDCggIAwMDBwgICAcICAgHBwcEBAMDBwsDAwMDAwMDAw0TEwcNEwcHCgQKBwcHBwMDAwMDDQMRBwcHDREIBw0EBwQICAUDBwcICAQICAgIOTAHCgoECAMDBAQECAgICAMICAgICAgICAgICAgIAwgDCAMICAgICAgICAgICAcIAwQICAgDAwMDAwgICAgICAgICAgICAgDAwgDAwMHAwgKBA0HDQcHBwoHAwcDTggNAwcHBxMDCw0NDQ0HBwMDBwMHEQgICAgKBwoHBwcDBwcDCAgDAwMIAwMDAwMNBBUNCAMKBAgICAcICAgICAgICAgICAgHBwcIAw0DBwcNCggICgQICgoKCg4OBwgICAgIDgcHBwQHCAgICAcHCAgHCAgHCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBwgHCgcKDQoOBwcHCAsLBwcHBwQECgoKCAoDDQgHAwcHAwcNCAgHAwgKCAcIBwgICAgLBwMDAwMDBAQEFQQEBwQDAwMKAwMDAwMDAwMDAwMDAwMDAwcDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDDQ8KCAQICAcHCAwDCgoTBwMKBwcTAwQIEwcTAwgHBwMKBxEKCgsHAwgHBwcPCAgHCAgDCAsLCwsICAsLCwsIBwgIBwsLCwsICAgDBwcHCAMHCBImBwcLBwdMBwMHBwMIBwcNCgQHBw0KAwMHBwcKCAcDBwcHBwMDAwMHCAMDAwMIAwMDAwgDAwMDAwMEBwcDEQgDAwMHDQ0lBwQDAwMlAwMDA0EDAwMDAwMDAwMDBwMDAwMHAwMDAwMDAwMDAwMDAwNBAwcHCzcRCwgEAwgNDQ0ICAgHBwoLBxEISQgDEwcDAwMHBwMDAwcHAwcDDgsHCgMKDgcEBAMDBAMEBAsDEwsHJwcLBwgEJwcFCAcHEQ0ICAoHJwMDAwMnCAQHCAgHBAgHCgMOAwMKBgcDBgMDAwMFAwMDAwMHBwMDAwMHAwMHBwMDAwcDAwMDAwMEBAMTFQoEExEOBApBBwcHB0EDQUERCgcEBAgTCAcEAwsHBwcHBwcHAwMHBwcHBwcHBwcHAwcHBwcHBwcHBwcHBwcHBwcHBwsHBwQHCAcKBxMKBwgHAwcHAwoKAwMOAwMDAwMDAwMDAwMDAw0IBxMNBAcHBAMDAwMEAw0HCAgICAMHAwgICAgDAwgICAMIBwcHBwgICAMHBwgDBwMHBw1OEQoHERELBwcODQcDEQgICAgICAgICAgICAgDCAgICAgICAgICAgIAwgICAgICAgICAgICAMDCAgDAwgICAgICAgICAMDCAgICAcICAoKCgoECgoHBxMKCg0DCwgHBAcHAwQDAwcHBxMOAwcKDhEDCgMIBwoHCwcLBwcHBAgKBwsLCwsIBwgDCAMDBwgHBwgHCAcHCAMLCAgICgMDAwcIAwoECAcIBwMICAgRBwgHAwMDBwsDAwgICAgICAgIAwgICAgICAgICAgICAgDCAgICAgICAgICAcIAwgICAgICAgIBwcDAwgIBwcHBwcHCjY2BwoDBAcHCgoDCgQEEQgICAgNDQMHAwMICAgICAgIAwgHCAcHCAgDCAMKCAgICAMTBwsNCAgDBwQHBwcICAgICAgICAgICAgICAgICAgICAgICAcICAcICAgIBAgICAgICAgICAgICAgICAgICAgDCAgICAgICAgDCAgIAwcHCAgICAgICAcICAgICAMICAgICAgICAgICAgDCAgICAgICAMICAgIAwgICAgICAgICAgIAwgICAgIAwMECAoIBwoDCg0HDQcNBwM+CgMEAwcDBwMHBAMHBwcHBwcHBwcHBwcDBwgHCAoHCAgDA0ARAwMDCAgLBwMDAxEDAwMHBwQHCAoDAwMICAgICAgEAwMDBwcICAgDCAgDCAMDCAgIBwcHBwgICAMKBwgHBw0HCAoICAgICAMDCAgICAgICAgHBwcIBwgDAwQKBwgICAgICAMICAMDCAgICAgICAMDCAcKBwcHBwcICAgIBwcIAwMICAgICAMDCgcOBwcKDgcDBwgLBwcECg0HPgoKCgo+Bz4HDQMDAz4HBwcHBwMHBwcHBwcHPgQHBwoDCBEHAwgICAgICAgICAMIBwcIEQoEBAgICAgICAgICAgICAgICAgICAcDAwgICAgICAgIAwgICAgICAgICAgICAgICAgICAgHBwgIAwgICAgICAgICAgICAgICAgICAgHCAgICAgICAgICAgICAgIBwcHCAgICAgIBwoHCgQREQgICgcKCggIBwQICgMHBwcHAwMDCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsLCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgHCAgICAgIAwgICAgICAgICAgICAgICAcICAgICAgICAgIAwcHCAgICAgHCAgICAgIAwgHCAgICAgICAgICAcHCAgICAgICAgDCAgIAwgICAgICAMHAwcIDQoHCAcTAQQHAxEICAgICAMICAgICAMICAgHCAMDCAgICAgICAcDBwgICAcICAgFCAgICAgIEQcDAwcICggIAwoHDQcKBw0KAwMRAwMDAwMICAoKBwMKBwcDBwcRCwoKCAgIBwcHCAgICAcABwcHBwcHBwcLAwcBBwMHCAMKEQ4KCgcKAwQDBwcHBwcHBwcHBwcHAxENCgoDAxEHDQoDAwcECgcKAwQDAw0EAwMHAwMHAwMDAwMDAwMDBwcHBwcHAwMDAwcDAwMHBwcHBwcHBwcHAwMDBwcHBwcIAwgKCAgIAwcHBwcHBwcICAcHAwcLCBMHAwMDAwcEAwMICAgDAwgIAwMICAMDBwcICAcICAcDAwMICAgIAwMDBA0ICAcKAAgHAwwICAgICAoKBwgIBwoDCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDCAgIAwgIAwgICAgICAgHCAMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAwgHBwgICAgICAgICAgICAgIBwcICAgMDAgICAgICAgICAgICAgICAgICAgICAgIAwgICAgIBwgDBwgICAgICAgDCAgICAgIBwcICAgICAgICAgICAgICAgICAgICAgICAgICAgHCAgICAcHChEDBwoICgMDAwMDAxMDAwsLAwMDAwMHBwMDAwMDAwMDAwMDAwMDAwMDAwMEAwMDEQMBAwMDAwMDBwMEAxAICAMDAwMDDQ0NDQMNBwcHBwcICAgRCAgIEQgDBwgHBw4NCAgICAgICAgHEwMDCAgICAcDAwgICAgHBwMDAwMDBwQDBwcIAwcDAwgIBwMHCAcHBwcIBwgIBwcHBwgHBxMHBwkDCAcICgMEAwcDBAcHCAMOBAMHBwNKBwMHAwcICAMIAwcHAwQDBwcDAwcDAwMHCgoHCgMICQcDEwoKBwgICAhHBAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQEBAcEAwsDAwMDAwQEAwsLCwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcCAgMHCgMDAwgHCBUNBwcNAgMHAwoKChEKCDkLAgMDAwMDAwMDAwMDAwMDCAMDBwcHBwMDAwMHBwcHBwMDAwcHCgMDBwMECAoICAgICg4DAwMHCAkDCAwMDQsICg4EDQMIAwgNCAMDAwMIAwMNBwcHBwcHBwcHBwcHBwcHBwcHBwcHCAcHBwcNBwcHBwcHBwcHBwcHBwcHBzU1DggICAQHCw0SBwcHBwgDCAgHBwgIBwcHBwcECEYIBwcHDAgHBwcHAwcICAgICAgICAQDCAgECAQICAMICAgICAcDAwMIBwgDAwgDBwcHBwcHBwcHBwcHBxEIDQoICAcDCQcRDQsHCgoHAwcHBw0HCAgICAgICAgIDQgICwgEDQoIBwgHBwQHCgwHBwMKCAgHAwMIBwMDAwgIAwgICAgHCAcKBDQDCAcIBwAAAwcNAwgDAAAABAsHAAAECAgLCAgDCAgOCggICAgICAgICAcOAAgLCwgHCAMHAwQEBAQEBAQEBAcDBAMHAwMDAwgDAwgDAwMIAwMIBwMDBwMDTwMHBwoHBwcICAgREREECAgNCggICA0RAwMIAwgICAgICAgICAgICAcECAgEAwgEBAoKERERCAgICAcHB0ADAwMDAwMDAwMDBwgHAwNAAwMDAwMDAwMDBwMHBwcEBwcHBwcDBwMHBwcDAwQDBwcHDQoICgsHBwcHBwMKDQMKCgoLEQ0LDgMHBAcHBwcHBwoNBEYKBwcDBwcHCgcECwcIBwMDCAgKAwMDBwMIBwcHBwcHAw0KCgcHBwo0BwMHCCIRCQcDAwMDCAgRBAQEAwMDAwQDCw0EBAcDAwMDBwMEB0MDB0MDByIDBAcKCggDBwMDCAgDBwQKBwQHCAgmAwgICAgOAwgHCAgRBwcIAwMICAgICAMJAwMLCwsLCAMICAMIAwcIAwgICAcHAwgHCAgICwcBCAgIFQ0KCggKAwMKBwoICA0NCAUOCAQDBAQEBAMNDQ0NAwQDAwMDBwcDAwMDAwMDAwMEAwMDAwMDAwcDAwcHBAMNAxEKDQQOCAgNCgcDEQMDEQgDAwMIBwQIBAMNQggNDAcICAgICAQEBwMIBwgIAwMHAwgIBwcHBwMDBwoHBwwRDQcDEwgDBwcDBwMDEQ4IAwMDAwcHBAMHAwcHAw0HBwMDAwcHA0AHBwsHCgcHDAcHBwMHAwcHCwcDBwMDBwcDAwMDAwMDAwcHBwcHBwMDAwMDAwcHBwcHBwcHAwMDAwMDAwM6AwcHBwcHBwMDBwcHB0ADBwcDCQsODg4OAw4LERERAwQKFAMIAy4DDgMIDg4NCAQOAwwDBAMDAwMEAwgHBwcIBwcHBw4HCggREQgOCgMECgcHAxESEREsLSoSCwMOCggIBwcEBwoKDQ0NDAcLDgMDCQwIDggOCAMJBwcHCAcHBwoKBwQBATUKCgEBCAgOCAcHDQcIAwQBBwgEBAMDAwQDAQMDAwMDAwQEAwMDCAcHBwcHBwdBCgpBAwMIBAQIBAoKBwMOBwENCwcKAQMICgoDBAgICgsBAQEBAQEBAQEBAQEBAQEEBAMDBAMDAQMDAwMDAwMDAwMDAwMDAQEIBwMHAwgDCAcHBwMNAwMHBwMDAwMHAQoIBwcHAwgKEQoKCAoDCg4DAwgIBAo/CAgDAwMDAwMDAwMDAwMDAw0NDQMDAwMDAwMDAwMDAwMDAwMNDQcKCgoDBwgDAwMHAwoHAwMHBwMHCgoHBwMHBwMDAwcHBwsDAwMNBwMDCAMDAwsRBwoDAwoICAQHBwcHBwcHBwcICAMDAwMHAQEBBwMDAwMDAwMDAwcHAwcHBwgDAwMDAwMDBwcHBwcHBwMHBwcHBwcDBwMIBwcHBwcHAwcHAwMHBwcHBwMDAwcHAwMHDAMDBAMHBwcHAwMICAgICAgECAMDAwMBAwgICAsKCgsLCAgMCAMDQQMIAwMDCw0KCwQDAwMDAwMDCggIAQcHBwcHBwcHBwcDBwMHBwcRAwgICAgICAgICgc0CwcICAgICAgICAgHAwcKBwgICAcKCAgLCAMDAwcDAwMDAwMDAwMIAwMDAwMDAwgICAgICAgDAwMDAwMIAwMDAwMIAwMDAwMDAwgDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDCAMDAwMDAwMDAwMDAwMDAwMDAwMIAwMDAwcDAwMDAwMDAwsLCwsICAgIAwMDCAMDAwMDAwgICAgDAwMDAwcDCAMDAwMDAwMDAwMDAwgICAgDAwMDAwMDAwMDAwMDAwMDAwgIAwMDAwMICAMKEwsLBwoKBwcHAwcHCgcHBwcHBwcDBwcDAwMDAwcHBwgICggNCgMDCAMEBAQLBAgRAwgDAwgEDgMDDgQEBAMDDg0KAwMDAwMDAz4DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwoOAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBwcHBwcHBwcHBwcHAwMDAwMDAwMDAwMDAwMDAwMDAwcHBwcHAwcDAwMDAwMDAwMHAwMHBwcHBwcDAwMDBwcDBwcHBwcIAwcICAgIAwgIBwcKDQ0NDQ0NDQgLCAgICAgICAMDAwcICAMKAwICAwMDAwMDAwMCCgMDAwMDBwMDAwMEAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAwMDAwMDAwMDAwMDAwICAwoDAwMDCAgICAMICAgICAQDCAgICAcHCAoKCgMKBwcHBwcHBwcHAwMHBwcDAwcHAwcIBwcLAwcLBwcHCAgDCwcHAwgHBwcEDgcHCwcHBwcHBwcDBwMICAgEBwgIBwMDBAcHDgcIBwcHBwcDBwMDDQ0DAwcHAwMICAMDAwcDDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NAwMIDQgIAwcDCgoKBwoDCgMHCAcHBwQHCggKCwoICAgICAgICAQEBAQKAw0ICAgECAgICAgEBAQEBAQIAwgICAgIBAMDCwgDAwMICAgICAcACAgIBwsIBAQKCAQIAwhFQQMIAwNFQQgDCwsLCAcICAgICAgICAgICAgICAgICAgICAgIAwgICAQICAcHBwcHBwcHBwcHBwcHBwcHBwcHBwgICAgICAMDCAgICwsLCwcHBwcHBwcHBwcHBwcHBwcHBwcHBwgICAgICAgICAgACAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBwcHCAcHBwcHBwgICAgIBwcHBwcHBwgHBwcHBwcHBwcHBwcHCAcHCAgIBwcHBwcHBwcHBwcHBwcHBwoHBwoEBwcHBwcHBwcIAwcHBwcHBwcHBwcHCAsICAgICAgIBAMLUAcHCBUEBAoIBAQEBBUHBwEDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCAgIIBwcHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHBwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICCAcHAgcEBwcHBwcHBwMICAgHBwcHBwcHBwgIAwNPTwEBBAQEBAQEBAQIBAQEBAQEBAMEBAQEBAQEBAgEBAQEBAQEBAABQAMDBAQETAQEBAAEBAIEBAQEBAQEBAQABAQBBAoHBwcHBwoKBAcBcAHYFNgUBQMBACkGCQF/AUGAgIABCwfUAQoGbWVtb3J5AgAJdHJhbnNmb3JtAK0eDXRyYW5zZm9ybVN5bmMA7yATX193YmluZGdlbl9leHBvcnRfMAD+NhNfX3diaW5kZ2VuX2V4cG9ydF8xAQATX193YmluZGdlbl9leHBvcnRfMgCyKRNfX3diaW5kZ2VuX2V4cG9ydF8zAMQtH19fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIA8DoTX193YmluZGdlbl9leHBvcnRfNADx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IAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0ACkUNAEH46KMBQfjoowEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQALRQ0AQYzpowFBjOmjARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItAAxFDQBBoOmjAUGg6aMBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0ADUUNAEG06aMBQbTpowEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQAORQ0AQcjpowFByOmjARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItAA9FDQBB3OmjAUHc6aMBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0AEEUNAEHw6aMBQfDpowEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQARRQ0AQYTqowFBhOqjARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItABJFDQBBmOqjAUGY6qMBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0AE0UNAEGs6qMBQazqowEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQAURQ0AQcDqowFBwOqjARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItABVFDQBB1OqjAUHU6qMBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0AFkUNAEHo6qMBQejqowEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQAXRQ0AQfzqowFB/OqjARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItABhFDQBBkOujAUGQ66MBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0AGUUNAEGk66MBQaTrowEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQAaRQ0AQbjrowFBuOujARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItABtFDQBBzOujAUHM66MBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0AHEUNAEHg66MBQeDrowEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQAdRQ0AQfTrowFB9OujARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItAB5FDQBBiOyjAUGI7KMBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0AH0UNAEGc7KMBQZzsowEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQAgRQ0AQbDsowFBsOyjARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItACFFDQBBxOyjAUHE7KMBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0AIkUNAEHY7KMBQdjsowEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQAjRQ0AQezsowFB7OyjARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItACRFDQBBgO2jAUGA7aMBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0AJUUNAEGU7aMBQZTtowEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQAmRQ0AQajtowFBqO2jARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItACdFDQBBvO2jAUG87aMBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0AKEUNAEHQ7aMBQdDtowEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQApRQ0AQeTtowFB5O2jARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItACpFDQBB+O2jAUH47aMBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0AK0UNAEGM7qMBQYzuowEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQAsRQ0AQaDuowFBoO6jARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItAC1FDQBBtO6jAUG07qMBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0ALkUNAEHI7qMBQcjuowEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQAvRQ0AQdzuowFB3O6jARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItADBFDQBB8O6jAUHw7qMBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0AMUUNAEGE76MBQYTvowEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQAyRQ0AQZjvowFBmO+jARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItADNFDQBBrO+jAUGs76MBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0ANEUNAEHA76MBQcDvowEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQA1RQ0AQdTvowFB1O+jARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItADZFDQBB6O+jAUHo76MBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0AN0UNAEH876MBQfzvowEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQA4RQ0AQZDwowFBkPCjARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItADlFDQBBpPCjAUGk8KMBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0AOkUNAEG48KMBQbjwowEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQA7RQ0AQczwowFBzPCjARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItADxFDQBB4PCjAUHg8KMBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0APUUNAEH08KMBQfTwowEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQA+RQ0AQYjxowFBiPGjARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItAD9FDQBBnPGjAUGc8aMBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0AQEUNAEGw8aMBQbDxowEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQBBRQ0AQcTxowFBxPGjARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItAEJFDQBB2PGjAUHY8aMBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0AQ0UNAEHs8aMBQezxowEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQBERQ0AQYDyowFBgPKjARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItAEVFDQBBlPKjAUGU8qMBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0ARkUNAEGo8qMBQajyowEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQBHRQ0AQbzyowFBvPKjARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItAEhFDQBB0PKjAUHQ8qMBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0ASUUNAEHk8qMBQeTyowEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQBKRQ0AQfjyowFB+PKjARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItAEtFDQBBjPOjAUGM86MBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0ATEUNAEGg86MBQaDzowEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQBNRQ0AQbTzowFBtPOjARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItAE5FDQBByPOjAUHI86MBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0AT0UNAEHc86MBQdzzowEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQBQRQ0AQfDzowFB8POjARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItAFFFDQBBhPSjAUGE9KMBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0AUkUNAEGY9KMBQZj0owEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQBTRQ0AQaz0owFBrPSjARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItAFRFDQBBwPSjAUHA9KMBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0AVUUNAEHU9KMBQdT0owEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQBWRQ0AQej0owFB6PSjARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItAFdFDQBB/PSjAUH89KMBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0AWEUNAEGQ9aMBQZD1owEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQBZRQ0AQaT1owFBpPWjARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItAFpFDQBBuPWjAUG49aMBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0AW0UNAEHM9aMBQcz1owEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQBcRQ0AQeD1owFB4PWjARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItAF1FDQBB9PWjAUH09aMBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0AXkUNAEGI9qMBQYj2owEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQBfRQ0AQZz2owFBnPajARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItAGBFDQBBsPajAUGw9qMBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0AYUUNAEHE9qMBQcT2owEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQBiRQ0AQdj2owFB2PajARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItAGNFDQBB7PajAUHs9qMBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0AZEUNAEGA96MBQYD3owEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQBlRQ0AQZT3owFBlPejARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItAGZFDQBBqPejAUGo96MBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0AZ0UNAEG896MBQbz3owEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQBoRQ0AQdD3owFB0PejARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItAGlFDQBB5PejAUHk96MBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0AakUNAEH496MBQfj3owEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQBrRQ0AQYz4owFBjPijARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItAGxFDQBBoPijAUGg+KMBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLAkAgAi0AbUUNAEG0+KMBQbT4owEQ2DIiBCgCBCEFAkACQAJAIAAoAgAgACgCCCIDayAEKAIIIgRPDQAgACADIARBCEEwEIsNIAAoAgQhBiAAKAIIIQMMAQsgBEUNASAAKAIEIQYLIAMgBGohByAGIANBMGxqIQNBACkD4OKiASEJQQApA9jiogEhCgNAIAFBOGogBRBQQQAgAigCABDSBiEGQQBBABC0GBDSBiEIIAFB6ABqQQhqIAk3AwAgASAGNgJ4IAEgCDYCfCABIAo3A2ggAUE4aiABQegAahCsBSABQegAahCgDCABQQhqQShqIAFBOGpBKGopAwAiCzcDACABQQhqQSBqIAFBOGpBIGopAwAiDDcDACABQQhqQRhqIAFBOGpBGGopAwAiDTcDACABQQhqQRBqIAFBOGpBEGopAwAiDjcDACABQQhqQQhqIAFBOGpBCGopAwAiDzcDACABIAEpAzgiEDcDCCADQShqIAs3AwAgA0EgaiAMNwMAIANBGGogDTcDACADQRBqIA43AwAgA0EIaiAPNwMAIAMgEDcDACADQTBqIQMgBUEwaiEFIARBf2oiBA0ACyAHIQMLIAAgAzYCCAsCQCACLQBuRQ0AQcj4owFByPijARDYMiIEKAIEIQUCQAJAAkAgACgCACAAKAIIIgNrIAQoAggiBE8NACAAIAMgBEEIQTAQiw0gACgCBCEGIAAoAgghAwwBCyAERQ0BIAAoAgQhBgsgAyAEaiEHIAYgA0EwbGohA0EAKQPg4qIBIQlBACkD2OKiASEKA0AgAUE4aiAFEFBBACACKAIAENIGIQZBAEEAELQYENIGIQggAUHoAGpBCGogCTcDACABIAY2AnggASAINgJ8IAEgCjcDaCABQThqIAFB6ABqEKwFIAFB6ABqEKAMIAFBCGpBKGogAUE4akEoaikDACILNwMAIAFBCGpBIGogAUE4akEgaikDACIMNwMAIAFBCGpBGGogAUE4akEYaikDACINNwMAIAFBCGpBEGogAUE4akEQaikDACIONwMAIAFBCGpBCGogAUE4akEIaikDACIPNwMAIAEgASkDOCIQNwMIIANBKGogCzcDACADQSBqIAw3AwAgA0EYaiANNwMAIANBEGogDjcDACADQQhqIA83AwAgAyAQNwMAIANBMGohAyAFQTBqIQUgBEF/aiIEDQALIAchAwsgACADNgIICwJAIAItAG9FDQBB3PijAUHc+KMBENgyIgQoAgQhBQJAAkACQCAAKAIAIAAoAggiA2sgBCgCCCIETw0AIAAgAyAEQQhBMBCLDSAAKAIEIQYgACgCCCEDDAELIARFDQEgACgCBCEGCyADIARqIQcgBiADQTBsaiEDQQApA+DiogEhCUEAKQPY4qIBIQoDQCABQThqIAUQUEEAIAIoAgAQ0gYhBkEAQQAQtBgQ0gYhCCABQegAakEIaiAJNwMAIAEgBjYCeCABIAg2AnwgASAKNwNoIAFBOGogAUHoAGoQrAUgAUHoAGoQoAwgAUEIakEoaiABQThqQShqKQMAIgs3AwAgAUEIakEgaiABQThqQSBqKQMAIgw3AwAgAUEIakEYaiABQThqQRhqKQMAIg03AwAgAUEIakEQaiABQThqQRBqKQMAIg43AwAgAUEIakEIaiABQThqQQhqKQMAIg83AwAgASABKQM4IhA3AwggA0EoaiALNwMAIANBIGogDDcDACADQRhqIA03AwAgA0EQaiAONwMAIANBCGogDzcDACADIBA3AwAgA0EwaiEDIAVBMGohBSAEQX9qIgQNAAsgByEDCyAAIAM2AggLIAIgAigCBEF/ajYCBCABQYABaiQAC5qvAwLlBH8DfiMAQZAgayIEJAACQAJAAkACQAJAAkAC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xQsgBiDpAzsAvQsgBiDqAzsAtQsgBiDrAzsArQsgBiDsAzsApQsgBiDtAzsAnQsgBiDuAzsAlQsgBiDvAzsAjQsgBiDwAzsAhQsgBiDxAzsA/QogBiDyAzsA9QogBiDzAzsA7QogBiD0AzsA5QogBiDlAzsA3QogBiD1AzsA1QogBiD2AzsAzQogBiD3AzsAxQogBiD4AzsAvQogBiD5AzsAtQogBiD6AzsArQogBiD7AzsApQogBiD8AzsAnQogBiAdOwCVCiAGIB47AI0KIAYgHzsAhQogBiAgOwD9CSAGICE7APUJIAYgIjsA7QkgBiAjOwDlCSAGICQ7AN0JIAYgJTsA1QkgBiAmOwDNCSAGICc7AMUJIAYgKDsAvQkgBiApOwC1CSAGICo7AK0JIAYgKzsApQkgBiAsOwCdCSAGIC07AJUJIAYgLjsAjQkgBiAvOwCFCSAGIDA7AP0IIAYgMTsA9QggBiAyOwDtCCAGIDM7AOUIIAYgNDsA3QggBiA1OwDVCCAGIDY7AM0IIAYgNzsAxQggBiA4OwC9CCAGIDk7ALUIIAYgOjsArQggBiA7OwClCCAGIDw7AJ0IIAYgPTsAlQggBiA+OwCNCCAGID87AIUIIAYgQDsA/QcgBiBBOwD1ByAGIEI7AO0HIAYgQzsA5QcgBiBEOwDdByAGIEU7ANUHIAYgRjsAzQcgBiBHOwDFByAGIEg7AL0HIAYgSTsAtQcgBiBKOwCtByAGIEs7AKUHIAYgTDsAnQcgBiBNOwCVByAGIE47AI0HIAYgTzsAhQcgBiBQOwD9BiAGIFE7APUGIAYgUjsA7QYgBiBTOwDlBiAGIFQ7AN0GIAYgVTsA1QYgBiBWOwDNBiAGIFc7AMUGIAYgWDsAvQYgBiBZOwC1BiAGIFo7AK0GIAYgWzsApQYgBiBcOwCdBiAGIF07AJUGIAYgXjsAjQYgBiBfOwCFBiAGIGA7AP0FIAYgYTsA9QUgBiBiOwDtBSAGIGM7AOUFIAYgZDsA3QUgBiBlOwDVBSAGIGY7AM0FIAYgZzsAxQUgBiBoOwC9BSAGIGk7ALUFIAYgajsArQUgBiBrOwClBSAGIGw7AJ0FIAYgbTsAlQUgBiBuOwCNBSAGIG87AIUFIAYgcDsA/QQgBiBxOwD1BCAGIHI7AO0EIAYgczsA5QQgBiB0OwDdBCAGIHU7ANUEIAYgdjsAzQQgBiB3OwDFBCAGIHg7AL0EIAYgeTsAtQQgBiB6OwCtBCAGIHs7AKUEIAYgfDsAnQQgBiB9OwCVBCAGIH47AI0EIAYgfzsAhQQgBiCAATsA/QMgBiCBATsA9QMgBiCCATsA7QMgBiCDATsA5QMgBiCEATsA3QMgBiCFATsA1QMgBiCGATsAzQMgBiCHATsAxQMgBiCIATsAvQMgBiCJATsAtQMgBiCKATsArQMgBiCLATsApQMgBiCMATsAnQMgBiCNATsAlQMgBiCOATsAjQMgBiCPATsAhQMgBiCQATsA/QIgBiCRATsA9QIgBiCSATsA7QIgBiCTATsA5QIgBiCUATsA3QIgBiCVATsA1QIgBiCWATsAzQIgBiCXATsAxQIgBiCYATsAvQIgBiCZATsAtQIgBiCaATsArQIgBiCbATsApQIgBiCcATsAnQIgBiCdATsAlQIgBiCeATsAjQIgBiCfATsAhQIgBiCgATsA/QEgBiChATsA9QEgBiCiATsA7QEgBiCjATsA5QEgBiCkATsA3QEgBiClATsA1QEgBiCmATsAzQEgBiCnATsAxQEgBiCoATsAvQEgBiCpATsAtQEgBiCqATsArQEgBiCrATsApQEgBiCsATsAnQEgBiCtATsAlQEgBiCuATsAjQEgBiCvATsAhQEgBiCwATsAfSAGILEBOwB1IAYgsgE7AG0gBiCzATsAZSAGILQBOwBdIAYgCjsAVSAGIAg7AE0gBiAHOwBFIAYg6gQ3A7ANIAYgAToArA0gBiADNgKoDSAGQQA2AqQNIAYgHDYCoA0gBiDZBDYCnA0gBiAFNgKYDSAGIP0DNgCUDSAGIP4DNgCQDSAGIP8DNgCMDSAGIIAENgCIDSAGIIEENgCEDSAGIIIENgCADSAGIIMENgD8DCAGIIQENgD4DCAGIIUENgD0DCAGIIYENgDwDCAGIIcENgDsDCAGIIgENgDoDCAGIIkENgDkDCAGIIoENgDgDCAGIIsENgDcDCAGIIwENgDYDCAGII0ENgDUDCAGII4ENgDQDCAGII8ENgDMDCAGIJAENgDIDCAGIJEENgDEDCAGIJIENgDADCAGIJMENgC8DCAGIJQENgC4DCAGIJUENgC0DCAGIJYENgCwDCAGIJcENgCsDCAGIJgENgCoDCAGIJkENgCkDCAGIJoENgCgDCAGIJsENgCcDCAGIJwENgCYDCAGIJ0ENgCUDCAGIJ4ENgCQDCAGIJ8ENgCMDCAGIKAENgCIDCAGIKEENgCEDCAGIKIENgCADCAGIKMENgD8CyAGIKQENgD4CyAGIKUENgD0CyAGIKYENgDwCyAGIKcENgDsCyAGIKgENgDoCyAGIKkENgDkCyAGIKoENgDgCyAGIKsEOgDcCyAGIKwENgDYCyAGIK0EOgDUCyAGIK4ENgDQCyAGIK8EOgDMCyAGILAENgDICyAGILEEOgDECyAGILIENgDACyAGILMEOgC8CyAGILQENgC4CyAGILUEOgC0CyAGILYENgCwCyAGILcEOgCsCyAGILgENgCoCyAGILkEOgCkCyAGILoENgCgCyAGILsEOgCcCyAGILwENgCYCyAGIL0EOgCUCyAGIL4ENgCQCyAGIL8EOgCMCyAGIMAENgCICyAGIMEEOgCECyAGIMIENgCACyAGIMMEOgD8CiAGIMQENgD4CiAGIMUEOgD0CiAGIMYENgDwCiAGIMcEOgDsCiAGIMgENgDoCiAGIMkEOgDkCiAGIMoENgDgCiAGIMsEOgDcCiAGIMwENgDYCiAGIM0EOgDUCiAGIM4ENgDQCiAGIM8EOgDMCiAGINAENgDICiAGINEEOgDECiAGINIENgDACiAGINMEOgC8CiAGINQENgC4CiAGINUEOgC0CiAGINYENgCwCiAGINcEOgCsCiAGINgENgCoCiAGINoEOgCkCiAGINsENgKgCiAGINwEOgCcCiAGIN0ENgKYCiAGILUBOgCUCiAGILYBNgKQCiAGILcBOgCMCiAGILgBNgKICiAGILkBOgCECiAGILoBNgKACiAGILsBOgD8CSAGILwBNgL4CSAGIL0BOgD0CSAGIL4BNgLwCSAGIL8BOgDsCSAGIMABNgLoCSAGIMEBOgDkCSAGIMIBNgLgCSAGIMMBOgDcCSAGIMQBNgLYCSAGIMUBOgDUCSAGIMYBNgLQCSAGIMcBOgDMCSAGIMgBNgLICSAGIMkBOgDECSAGIMoBNgLACSAGIMsBOgC8CSAGIMwBNgK4CSAGIM0BOgC0CSAGIM4BNgKwCSAGIM8BOgCsCSAGINABNgKoCSAGINEBOgCkCSAGINIBNgKgCSAGINMBOgCcCSAGINQBNgKYCSAGINUBOgCUCSAGINYBNgKQCSAGINcBOgCMCSAGINgBNgKICSAGINkBOgCECSAGINoBNgKACSAGINsBOgD8CCAGINwBNgL4CCAGIN0BOgD0CCAGIN4BNgLwCCAGIN8BOgDsCCAGIOABNgLoCCAGIOEBOgDkCCAGIOIBNgLgCCAGIOMBOgDcCCAGIOQBNgLYCCAGIOUBOgDUCCAGIOYBNgLQCCAGIOcBOgDMCCAGIOgBNgLICCAGIOkBOgDECCAGIOoBNgLACCAGIOsBOgC8CCAGIOwBNgK4CCAGIO0BOgC0CCAGIO4BNgKwCCAGIO8BOgCsCCAGIPABNgKoCCAGIPEBOgCkCCAGIPIBNgKgCCAGIPMBOgCcCCAGIPQBNgKYCCAGIPUBOgCUCCAGIPYBNgKQCCAGIPcBOgCMCCAGIPgBNgKICCAGIPkBOgCECCAGIPoBNgKACCAGIPsBOgD8ByAGIPwBNgL4ByAGIP0BOgD0ByAGIP4BNgLwByAGIP8BOgDsByAGIIACNgLoByAGIIECOgDkByAGIIICNgLgByAGIIMCOgDcByAGIIQCNgLYByAGIIUCOgDUByAGIIYCNgLQByAGIIcCOgDMByAGIIgCNgLIByAGIIkCOgDEByAGIIoCNgLAByAGIIsCOgC8ByAGIIwCNgK4ByAGII0COgC0ByAGII4CNgKwByAGII8COgCsByAGIJACNgKoByAGIJECOgCkByAGIJICNgKgByAGIJMCOgCcByAGIJQCNgKYByAGIJUCOgCUByAGIJYCNgKQByAGIJcCOgCMByAGIJgCNgKIByAGIJkCOgCEByAGIJoCNgKAByAGIJsCOgD8BiAGIJwCNgL4BiAGIJ0COgD0BiAGIJ4CNgLwBiAGIJ8COgDsBiAGIKACNgLoBiAGIKECOgDkBiAGIKICNgLgBiAGIKMCOgDcBiAGIKQCNgLYBiAGIKUCOgDUBiAGIKYCNgLQBiAGIKcCOgDMBiAGIKgCNgLIBiAGIKkCOgDEBiAGIKoCNgLABiAGIKsCOgC8BiAGIKwCNgK4BiAGIK0COgC0BiAGIK4CNgKwBiAGIK8COgCsBiAGILACNgKoBiAGILECOgCkBiAGILICNgKgBiAGILMCOgCcBiAGILQCNgKYBiAGILUCOgCUBiAGILYCNgKQBiAGILcCOgCMBiAGILgCNgKIBiAGILkCOgCEBiAGILoCNgKABiAGILsCOgD8BSAGILwCNgL4BSAGIL0COgD0BSAGIL4CNgLwBSAGIL8COgDsBSAGIMACNgLoBSAGIMECOgDkBSAGIMICNgLgBSAGIMMCOgDcBSAGIMQCNgLYBSAGIMUCOgDUBSAGIMYCNgLQBSAGIMcCOgDMBSAGIMgCNgLIBSAGIMkCOgDEBSAGIMoCNgLABSAGIMsCOgC8BSAGIMwCNgK4BSAGIM0COgC0BSAGIM4CNgKwBSAGIM8COgCsBSAGINACNgKoBSAGINECOgCkBSAGINICNgKgBSAGINMCOgCcBSAGINQCNgKYBSAGINUCOgCUBSAGINYCNgKQBSAGINcCOgCMBSAGINgCNgKIBSAGINkCOgCEBSAGINoCNgKABSAGINsCOgD8BCAGINwCNgL4BCAGIN0COgD0BCAGIN4CNgLwBCAGIN8COgDsBCAGIOACNgLoBCAGIOECOgDkBCAGIOICNgLgBCAGIOMCOgDcBCAGIOQCNgLYBCAGIOUCOgDUBCAGIOYCNgLQBCAGIOcCOgDMBCAGIOgCNgLIBCAGIOkCOgDEBCAGIOoCNgLABCAGIOsCOgC8BCAGIOwCNgK4BCAGIO0COgC0BCAGIO4CNgKwBCAGIO8COgCsBCAGIPACNgKoBCAGIPECOgCkBCAGIPICNgKgBCAGIPMCOgCcBCAGIPQCNgKYBCAGIPUCOgCUBCAGIPYCNgKQBCAGIPcCOgCMBCAGIPgCNgKIBCAGIPkCOgCEBCAGIPoCNgKABCAGIPsCOgD8AyAGIPwCNgL4AyAGIP0COgD0AyAGIP4CNgLwAyAGIP8COgDsAyAGIIADNgLoAyAGIIEDOgDkAyAGIIIDNgLgAyAGIIMDOgDcAyAGIIQDNgLYAyAGIIUDOgDUAyAGIIYDNgLQAyAGIIcDOgDMAyAGIIgDNgLIAyAGIIkDOgDEAyAGIIoDNgLAAyAGIIsDOgC8AyAGIIwDNgK4AyAGII0DOgC0AyAGII4DNgKwAyAGII8DOgCsAyAGIJADNgKoAyAGIJEDOgCkAyAGIJIDNgKgAyAGIJMDOgCcAyAGIJQDNgKYAyAGIJUDOgCUAyAGIJYDNgKQAyAGIJcDOgCMAyAGIJgDNgKIAyAGIJkDOgCEAyAGIJoDNgKAAyAGIJsDOgD8AiAGIJwDNgL4AiAGIJ0DOgD0AiAGIJ4D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swE7AGUgBiACOwBdIAYgCjsAVSAGIAg7AE0gBiAHOwBFIAYg3gQ7AD0gBiDnBDoApA0gBiDoBDYCoA0gBiDZBDYCnA0gBiAFNgKYDSAGIP0DNgKUDSAGIP4DNgKQDSAGIP8DNgKMDSAGIIAENgKIDSAGIIEENgKEDSAGIIIENgKADSAGIIMENgL8DCAGIIQENgL4DCAGIIUENgL0DCAGIIYENgLwDCAGIIcENgLsDCAGIIgENgLoDCAGIIkENgLkDCAGIIoENgLgDCAGIIsENgLcDCAGIIwENgLYDCAGII0ENgLUDCAGII4ENgLQDCAGII8ENgLMDCAGIJAENgLIDCAGIJEENgLEDCAGIJIENgLADCAGIJMENgK8DCAGIJQENgK4DCAGIJUENgK0DCAGIJYENgKwDCAGIJcENgKsDCAGIJgENgKoDCAGIJkENgKkDCAGIJoENgKgDCAGIJsENgKcDCAGIJwENgKYDCAGIJ0ENgKUDCAGIJ4ENgKQDCAGIJ8ENgKMDCAGIKAENgKIDCAGIKEENgKEDCAGIKIENgKADCAGIKMENgL8CyAGIKQENgL4CyAGIKUENgL0CyAGIKYENgLwCyAGIKcENgLsCyAGIKgENgLoCyAGIKkENgLkCyAGIKoENgLgCyAGIK0ENgLcCyAGIKwENgLYCyAGIOYENgLUCyAGIK4ENgLQCyAGIK8EOgDMCyAGILAENgLICyAGILEEOgDECyAGILIENgLACyAGILMEOgC8CyAGILQENgK4CyAGILUEOgC0CyAGILYENgKwCyAGILcEOgCsCyAGILgENgKoCyAGILkEOgCkCyAGILoENgKgCyAGILsEOgCcCyAGILwENgKYCyAGIL0EOgCUCyAGIL4ENgKQCyAGIL8EOgCMCyAGIMAENgKICyAGIMEEOgCECyAGIMIENgKACyAGIMMEOgD8CiAGIMQENgL4CiAGIMUEOgD0CiAGIMYENgLwCiAGIMcEOgDsCiAGIMgENgLoCiAGIMkEOgDkCiAGIMoENgLgCiAGIMsEOgDcCiAGIMwENgLYCiAGIM0EOgDUCiAGIM4ENgLQCiAGIM8EOgDMCiAGINAENgLICiAGINEEOgDECiAGINIENgLACiAGINMEOgC8CiAGINQENgK4CiAGINUEOgC0CiAGINYENgKwCiAGINcEOgCsCiAGINgENgKoCiAGINoEOgCkCiAGINsENgKgCiAGINwEOgCcCiAGIN0ENgKYCiAGILUBOgCUCiAGILYBNgKQCiAGILcBOgCMCiAGILgBNgKICiAGILkBOgCECiAGILoBNgKACiAGILsBOgD8CSAGILwBNgL4CSAGIL0BOgD0CSAGIL4BNgLwCSAGIL8BOgDsCSAGIMABNgLoCSAGIMEBOgDkCSAGIMIBNgLgCSAGIMMBOgDcCSAGIMQBNgLYCSAGIMUBOgDUCSAGIMYBNgLQCSAGIMcBOgDMCSAGIMgBNgLICSAGIMkBOgDECSAGIMoBNgLACSAGIMsBOgC8CSAGIMwBNgK4CSAGIM0BOgC0CSAGIM4BNgKwCSAGIM8BOgCsCSAGINABNgKoCSAGINEBOgCkCSAGINIBNgKgCSAGINMBOgCcCSAGINQBNgKYCSAGINUBOgCUCSAGINYBNgKQCSAGINcBOgCMCSAGINgBNgKICSAGINkBOgCECSAGINoBNgKACSAGINsBOgD8CCAGINwBNgL4CCAGIN0BOgD0CCAGIN4BNgLwCCAGIN8BOgDsCCAGIOABNgLoCCAGIOEBOgDkCCAGIOIBNgLgCCAGIOMBOgDcCCAGIOQBNgLYCCAGIOUBOgDUCCAGIOYBNgLQCCAGIOcBOgDMCCAGIOgBNgLICCAGIOkBOgDECCAGIOoBNgLACCAGIOsBOgC8CCAGIOwBNgK4CCAGIO0BOgC0CCAGIO4BNgKwCCAGIO8BOgCsCCAGIPABNgKoCCAGIPEBOgCkCCAGIPIBNgKgCCAGIPMBOgCcCCAGIPQBNgKYCCAGIPUBOgCUCCAGIPYBNgKQCCAGIPcBOgCMCCAGIPgBNgKICCAGIPkBOgCECCAGIPoBNgKACCAGIPsBOgD8ByAGIPwBNgL4ByAGIP0BOgD0ByAGIP4BNgLwByAGIP8BOgDsByAGIIACNgLoByAGIIECOgDkByAGIIICNgLgByAGIIMCOgDcByAGIIQCNgLYByAGIIUCOgDUByAGIIYCNgLQByAGIIcCOgDMByAGIIgCNgLIByAGIIkCOgDEByAGIIoCNgLAByAGIIsCOgC8ByAGIIwCNgK4ByAGII0COgC0ByAGII4CNgKwByAGII8COgCsByAGIJACNgKoByAGIJECOgCkByAGIJICNgKgByAGIJMCOgCcByAGIJQCNgKYByAGIJUCOgCUByAGIJYCNgKQByAGIJcCOgCMByAGIJgCNgKIByAGIJkCOgCEByAGIJoCNgKAByAGIJsCOgD8BiAGIJwCNgL4BiAGIJ0COgD0BiAGIJ4CNgLwBiAGIJ8COgDsBiAGIKACNgLoBiAGIKECOgDkBiAGIKICNgLgBiAGIKMCOgDcBiAGIKQCNgLYBiAGIKUCOgDUBiAGIKYCNgLQBiAGIKcCOgDMBiAGIKgCNgLIBiAGIKkCOgDEBiAGIKoCNgLABiAGIKsCOgC8BiAGIKwCNgK4BiAGIK0COgC0BiAGIK4CNgKwBiAGIK8COgCsBiAGILACNgKoBiAGILECOgCkBiAGILICNgKgBiAGILMCOgCcBiAGILQCNgKYBiAGILUCOgCUBiAGILYCNgKQBiAGILcCOgCMBiAGILgCNgKIBiAGILkCOgCEBiAGILoCNgKABiAGILsCOgD8BSAGILwCNgL4BSAGIL0COgD0BSAGIL4CNgLwBSAGIL8COgDsBSAGIMACNgLoBSAGIMECOgDkBSAGIMICNgLgBSAGIMMCOgDcBSAGIMQCNgLYBSAGIMUCOgDUBSAGIMYCNgLQBSAGIMcCOgDMBSAGIMgCNgLIBSAGIMkCOgDEBSAGIMoCNgLABSAGIMsCOgC8BSAGIMwCNgK4BSAGIM0COgC0BSAGIM4CNgKwBSAGIM8COgCsBSAGINACNgKoBSAGINECOgCkBSAGINICNgKgBSAGINMCOgCcBSAGINQCNgKYBSAGINUCOgCUBSAGINYCNgKQBSAGINcCOgCMBSAGINgCNgKIBSAGINkCOgCEBSAGINoCNgKABSAGINsCOgD8BCAGINwCNgL4BCAGIN0COgD0BCAGIN4CNgLwBCAGIN8COgDsBCAGIOACNgLoBCAGIOECOgDkBCAGIOICNgLgBCAGIOMCOgDcBCAGIOQCNgLYBCAGIOUCOgDUBCAGIOYCNgLQBCAGIOcCOgDMBCAGIOgCNgLIBCAGIOkCOgDEBCAGIOoCNgLABCAGIOsCOgC8BCAGIOwCNgK4BCAGIO0COgC0BCAGIO4CNgKwBCAGIO8COgCsBCAGIPACNgKoBCAGIPECOgCkBCAGIPICNgKgBCAGIPMCOgCcBCAGIPQCNgKYBCAGIPUCOgCUBCAGIPYCNgKQBCAGIPcCOgCMBCAGIPgCNgKIBCAGIPkCOgCEBCAGIPoCNgKABCAGIPsCOgD8AyAGIPwCNgL4AyAGIP0COgD0AyAGIP4CNgLwAyAGIP8COgDsAyAGIIADNgLoAyAGIIEDOgDkAyAGIIIDNgLgAyAGIIMDOgDcAyAGIIQDNgLYAyAGIIUDOgDUAyAGIIYDNgLQAyAGIIcDOgDMAyAGIIgDNgLIAyAGIIkDOgDEAyAGIIoDNgLAAyAGIIsDOgC8AyAGIIwDNgK4AyAGII0DOgC0AyAGII4DNgKwAyAGII8DOgCsAyAGIJADNgKoAyAGIJEDOgCkAyAGIJIDNgKgAyAGIJMDOgCcAyAGIJQDNgKYAyAGIJUDOgCUAyAGIJYDNgKQAyAGIJcDOgCMAyAGIJgDNgKIAyAGIJkDOgCEAyAGIJoDNgKAAyAGIJsDOgD8AiAGIJwDNgL4AiAGIJ0DOgD0AiAGIJ4DNgLwAiAGIJ8DOgDsAiAGIKADNgLoAiAGIKEDOgDkAiAGIKIDNgLgAiAGIKMDOgDcAiAGIKQDNgLYAiAGIKUDOgDUAiAGIKYDNgLQAiAGIKcDOgDMAiAGIKgDNgLIAiAGIKkDOgDEAiAGIKoDNgLAAiAGIKsDOgC8AiAGIKwDNgK4AiAGIK0DOgC0AiAGIK4DNgKwAiAGIK8DOgCsAiAGILADNgKoAiAGILEDOgCkAiAGILIDNgKgAiAGILMDOgCcAiAGILQDNgKYAiAGILUDOgCUAiAGILYDNgKQAiAGILcDOgCMAiAGILgDNgKIAiAGILkDOgCEAiAGILoDNgKAAiAGILsDOgD8ASAGILwDNgL4ASAGIL0DOgD0ASAGIL4DNgLwASAGIL8DOgDsASAGIMADNgLoASAGIMEDOgDkASAGIMIDNgLgASAGIMMDOgDcASAGIMQDNgLYASAGIMUDOgDUASAGIMYDNgLQASAGIMcDOgDMASAGIMgDNgLIASAGIMkDOgDEASAGIMoDNgLAASAGIMsDOgC8ASAGIMwDNgK4ASAGIM0DOgC0ASAGIM4DNgKwASAGIM8DOgCsASAGINADNgKoASAGINEDOgCkASAGINIDNgKgASAGINMDOgCcASAGINQDNgKYASAGINUDOgCUASAGINYDNgKQASAGINcDOgCMASAGINgDNgKIASAGINkDOgCEASAGINoDNgKAASAGINsDOgB8IAYg3AM2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ADcDAAJAIAAoAggiBiAAKAIARw0AIAAQjg4LIAAoAgQgBkE4bGoiBEIANwIUIAQgBTYCECAEQQE2AgwgBCADNgIIIARCgICAgBA3AwAgBEEaakIANwEAIAAgBkEBajYCCAsCQCABLQAKRQ0AQQAgASgCABDSBiEEQbiGmwFBERCDKCEHIAJBofegAUEBEIMoNwNoIAJCADcDcCACQdAAaiACQegAahD+F0HJhpsBQSAQgyghCEEALQDA/6MBGkHIABCMASIDRQ0BIANCADcDACADIAIpA1A3AwggA0IANwM4IANBADoANCADIAQ2AjAgA0IANwMoIAMgBzcDICADQcAAakEAOgAAIANBEGogAkHYAGopAwA3AwAgA0EYaiACQdAAakEQaikDADcDAEEALQDA/6MBGkEYEIwBIgVFDQEgBUIANwMIIAUgCDcDACAFQRBqQgA3AwACQCAAKAIIIgYgACgCAEcNACAAEI4OCyAAKAIEIAZBOGxqIgRCADcCFCAEIAU2AhAgBEEBNgIMIAQgAzYCCCAEQoCAgIAQNwMAIARBGmpCADcBACAAIAZBAWo2AggLAkAgAS0AC0UNAEEAIAEoAgAQ0gYhBEHphpsBQRQQgyghByACQaH3oAFBARCDKDcDkAEgAkIANwOYASACQfgAaiACQZABahD+F0H9hpsBQSMQgyghCEEALQDA/6MBGkHIABCMASIDRQ0BIANCADcDACADIAIpA3g3AwggA0IANwM4IANBADoANCADIAQ2AjAgA0IANwMoIAMgBzcDICADQcAAakEAOgAAIANBEGogAkGAAWopAwA3AwAgA0EYaiACQfgAakEQaikDADcDAEEALQDA/6MBGkEYEIwBIgVFDQEgBUIANwMIIAUgCDcDACAFQRBqQgA3AwACQCAAKAIIIgYgACgCAEcNACAAEI4OCyAAKAIEIAZBOGxqIgRCADcCFCAEIAU2AhAgBEEBNgIMIAQgAzYCCCAEQoCAgIAQNwMAIARBGmpCADcBACAAIAZBAWo2AggLAkAgAS0ADEUNAEEAIAEoAgAQ0gYhBEGgh5sBQRgQgyghByACQaH3oAFBARCDKDcDuAEgAkIANwPAASACQaABaiACQbgBahD+F0G4h5sBQScQgyghCEEALQDA/6MBGkHIABCMASIDRQ0BIANCADcDACADIAIpA6ABNwMIIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0HAAGpBADoAACADQRBqIAJBqAFqKQMANwMAIANBGGogAkGgAWpBEGopAwA3AwBBAC0AwP+jARpBGBCMASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABCODgsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtAA1FDQBBACABKAIAENIGIQRB34ebAUEQEIMoIQcgAkGh96ABQQEQgyg3A+ABIAJCADcD6AEgAkHIAWogAkHgAWoQ/hdB74ebAUEfEIMoIQhBAC0AwP+jARpByAAQjAEiA0UNASADQgA3AwAgAyACKQPIATcDCCADQgA3AzggA0EAOgA0IAMgBDYCMCADQgA3AyggAyAHNwMgIANBwABqQQA6AAAgA0EQaiACQdABaikDADcDACADQRhqIAJByAFqQRBqKQMANwMAQQAtAMD/owEaQRgQjAEiBUUNASAFQgA3AwggBSAINwMAIAVBEGpCADcDAAJAIAAoAggiBiAAKAIARw0AIAAQjg4LIAAoAgQgBkE4bGoiBEIANwIUIAQgBTYCECAEQQE2AgwgBCADNgIIIARCgICAgBA3AwAgBEEaakIANwEAIAAgBkEBajYCCAsCQCABLQAORQ0AQQAgASgCABDSBiEEQY6ImwFBGRCDKCEHIAJBofegAUEBEIMoNwOIAiACQgA3A5ACIAJB8AFqIAJBiAJqEP4XQaeImwFBKBCDKCEIQQAtAMD/owEaQcgAEIwBIgNFDQEgA0IANwMAIAMgAikD8AE3AwggA0IANwM4IANBADoANCADIAQ2AjAgA0IANwMoIAMgBzcDICADQcAAakEAOgAAIANBEGogAkH4AWopAwA3AwAgA0EYaiACQfABakEQaikDADcDAEEALQDA/6MBGkEYEIwBIgVFDQEgBUIANwMIIAUgCDcDACAFQRBqQgA3AwACQCAAKAIIIgYgACgCAEcNACAAEI4OCyAAKAIEIAZBOGxqIgRCADcCFCAEIAU2AhAgBEEBNgIMIAQgAzYCCCAEQoCAgIAQNwMAIARBGmpCADcBACAAIAZBAWo2AggLAkAgAS0AD0UNAEEAIAEoAgAQ0gYhBEHPiJsBQQ8QgyghByACQaH3oAFBARCDKDcDsAIgAkIANwO4AiACQZgCaiACQbACahD+F0HeiJsBQR4QgyghCEEALQDA/6MBGkHIABCMASIDRQ0BIANCADcDACADIAIpA5gCNwMIIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0HAAGpBADoAACADQRBqIAJBoAJqKQMANwMAIANBGGogAkGYAmpBEGopAwA3AwBBAC0AwP+jARpBGBCMASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABCODgsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtABBFDQBBACABKAIAENIGIQRB/IibAUETEIMoIQcgAkGh96ABQQEQgyg3A9gCIAJCADcD4AIgAkHAAmogAkHYAmoQ/hdBj4mbAUEiEIMoIQhBAC0AwP+jARpByAAQjAEiA0UNASADQgA3AwAgAyACKQPAAjcDCCADQgA3AzggA0EAOgA0IAMgBDYCMCADQgA3AyggAyAHNwMgIANBwABqQQA6AAAgA0EQaiACQcgCaikDADcDACADQRhqIAJBwAJqQRBqKQMANwMAQQAtAMD/owEaQRgQjAEiBUUNASAFQgA3AwggBSAINwMAIAVBEGpCADcDAAJAIAAoAggiBiAAKAIARw0AIAAQjg4LIAAoAgQgBkE4bGoiBEIANwIUIAQgBTYCECAEQQE2AgwgBCADNgIIIARCgICAgBA3AwAgBEEaakIANwEAIAAgBkEBajYCCAsCQCABLQARRQ0AQQAgASgCABDSBiEEQbGJmwFBFhCDKCEHIAJBofegAUEBEIMoNwOAAyACQgA3A4gDIAJB6AJqIAJBgANqEP4XQceJmwFBJRCDKCEIQQAtAMD/owEaQcgAEIwBIgNFDQEgA0IANwMAIAMgAikD6AI3AwggA0IANwM4IANBADoANCADIAQ2AjAgA0IANwMoIAMgBzcDICADQcAAakEAOgAAIANBEGogAkHwAmopAwA3AwAgA0EYaiACQegCakEQaikDADcDAEEALQDA/6MBGkEYEIwBIgVFDQEgBUIANwMIIAUgCDcDACAFQRBqQgA3AwACQCAAKAIIIgYgACgCAEcNACAAEI4OCyAAKAIEIAZBOGxqIgRCADcCFCAEIAU2AhAgBEEBNgIMIAQgAzYCCCAEQoCAgIAQNwMAIARBGmpCADcBACAAIAZBAWo2AggLAkAgAS0AEkUNAEEAIAEoAgAQ0gYhBEHsiZsBQQwQgyghByACQaH3oAFBARCDKDcDqAMgAkIANwOwAyACQZADaiACQagDahD+F0H4iZsBQRsQgyghCEEALQDA/6MBGkHIABCMASIDRQ0BIANCADcDACADIAIpA5ADNwMIIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0HAAGpBADoAACADQRBqIAJBmANqKQMANwMAIANBGGogAkGQA2pBEGopAwA3AwBBAC0AwP+jARpBGBCMASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABCODgsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtABNFDQBBACABKAIAENIGIQRBk4qbAUELEIMoIQcgAkGh96ABQQEQgyg3A9ADIAJCADcD2AMgAkG4A2ogAkHQA2oQ/hdBnoqbAUEaEIMoIQhBAC0AwP+jARpByAAQjAEiA0UNASADQgA3AwAgAyACKQO4AzcDCCADQgA3AzggA0EAOgA0IAMgBDYCMCADQgA3AyggAyAHNwMgIANBwABqQQA6AAAgA0EQaiACQcADaikDADcDACADQRhqIAJBuANqQRBqKQMANwMAQQAtAMD/owEaQRgQjAEiBUUNASAFQgA3AwggBSAINwMAIAVBEGpCADcDAAJAIAAoAggiBiAAKAIARw0AIAAQjg4LIAAoAgQgBkE4bGoiBEIANwIUIAQgBTYCECAEQQE2AgwgBCADNgIIIARCgICAgBA3AwAgBEEaakIANwEAIAAgBkEBajYCCAsCQCABLQAURQ0AQQAgASgCABDSBiEEQbiKmwFBHBCDKCEHIAJBofegAUEBEIMoNwP4AyACQgA3A4AEIAJB4ANqIAJB+ANqEP4XQdSKmwFBKxCDKCEIQQAtAMD/owEaQcgAEIwBIgNFDQEgA0IANwMAIAMgAikD4AM3AwggA0IANwM4IANBADoANCADIAQ2AjAgA0IANwMoIAMgBzcDICADQcAAakEAOgAAIANBEGogAkHoA2opAwA3AwAgA0EYaiACQeADakEQaikDADcDAEEALQDA/6MBGkEYEIwBIgVFDQEgBUIANwMIIAUgCDcDACAFQRBqQgA3AwACQCAAKAIIIgYgACgCAEcNACAAEI4OCyAAKAIEIAZBOGxqIgRCADcCFCAEIAU2AhAgBEEBNgIMIAQgAzYCCCAEQoCAgIAQNwMAIARBGmpCADcBACAAIAZBAWo2AggLAkAgAS0AFUUNAEEAIAEoAgAQ0gYhBEH/ipsBQSMQgyghByACQaH3oAFBARCDKDcDoAQgAkIANwOoBCACQYgEaiACQaAEahD+F0Gii5sBQTIQgyghCEEALQDA/6MBGkHIABCMASIDRQ0BIANCADcDACADIAIpA4gENwMIIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0HAAGpBADoAACADQRBqIAJBkARqKQMANwMAIANBGGogAkGIBGpBEGopAwA3AwBBAC0AwP+jARpBGBCMASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABCODgsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtABZFDQBBACABKAIAENIGIQRB1IubAUEbEIMoIQcgAkGh96ABQQEQgyg3A8gEIAJCADcD0AQgAkGwBGogAkHIBGoQ/hdB74ubAUEqEIMoIQhBAC0AwP+jARpByAAQjAEiA0UNASADQgA3AwAgAyACKQOwBDcDCCADQgA3AzggA0EAOgA0IAMgBDYCMCADQgA3AyggAyAHNwMgIANBwABqQQA6AAAgA0EQaiACQbgEaikDADcDACADQRhqIAJBsARqQRBqKQMANwMAQQAtAMD/owEaQRgQjAEiBUUNASAFQgA3AwggBSAINwMAIAVBEGpCADcDAAJAIAAoAggiBiAAKAIARw0AIAAQjg4LIAAoAgQgBkE4bGoiBEIANwIU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ACAAIAZBAWo2AggLAkAgAS0AJEUNAEEAIAEoAgAQ0gYhBEGkk5sBQRoQgyghByACQaH3oAFBARCDKDcD+AggAkIANwOACSACQeAIaiACQfgIahD+F0G+k5sBQSkQgyghCEEALQDA/6MBGkHIABCMASIDRQ0BIANCADcDACADIAIpA+AINwMIIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0HAAGpBADoAACADQRBqIAJB6AhqKQMANwMAIANBGGogAkHgCGpBEGopAwA3AwBBAC0AwP+jARpBGBCMASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABCODgsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtACVFDQBBACABKAIAENIGIQRB55ObAUEZEIMoIQcgAkGh96ABQQEQgyg3A6AJIAJCADcDqAkgAkGICWogAkGgCWoQ/hdBgJSbAUEoEIMoIQhBAC0AwP+jARpByAAQjAEiA0UNASADQgA3AwAgAyACKQOICTcDCCADQgA3AzggA0EAOgA0IAMgBDYCMCADQgA3AyggAyAHNwMgIANBwABqQQA6AAAgA0EQaiACQZAJaikDADcDACADQRhqIAJBiAlqQRBqKQMANwMAQQAtAMD/owEaQRgQjAEiBUUNASAFQgA3AwggBSAINwMAIAVBEGpCADcDAAJAIAAoAggiBiAAKAIARw0AIAAQjg4LIAAoAgQgBkE4bGoiBEIANwIUIAQgBTYCECAEQQE2AgwgBCADNgIIIARCgICAgBA3AwAgBEEaakIANwEAIAAgBkEBajYCCAsCQCABLQAmRQ0AQQAgASgCABDSBiEEQaiUmwFBJBCDKCEHIAJBofegAUEBEIMoNwPICSACQgA3A9AJIAJBsAlqIAJByAlqEP4XQcyUmwFBMxCDKCEIQQAtAMD/owEaQcgAEIwBIgNFDQEgA0IANwMAIAMgAikDsAk3AwggA0IANwM4IANBADoANCADIAQ2AjAgA0IANwMoIAMgBzcDICADQcAAakEAOgAAIANBEGogAkG4CWopAwA3AwAgA0EYaiACQbAJakEQaikDADcDAEEALQDA/6MBGkEYEIwBIgVFDQEgBUIANwMIIAUgCDcDACAFQRBqQgA3AwACQCAAKAIIIgYgACgCAEcNACAAEI4OCyAAKAIEIAZBOGxqIgRCADcCFCAEIAU2AhAgBEEBNgIMIAQgAzYCCCAEQoCAgIAQNwMAIARBGmpCADcBACAAIAZBAWo2AggLAkAgAS0AJ0UNAEEAIAEoAgAQ0gYhBEH/lJsBQSQQgyghByACQaH3oAFBARCDKDcD8AkgAkIANwP4CSACQdgJaiACQfAJahD+F0GjlZsBQTMQgyghCEEALQDA/6MBGkHIABCMASIDRQ0BIANCADcDACADIAIpA9gJNwMIIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0HAAGpBADoAACADQRBqIAJB4AlqKQMANwMAIANBGGogAkHYCWpBEGopAwA3AwBBAC0AwP+jARpBGBCMASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABCODgsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtAChFDQBBACABKAIAENIGIQRB1pWbAUEiEIMoIQcgAkGh96ABQQEQgyg3A5gKIAJCADcDoAogAkGACmogAkGYCmoQ/hdB+JWbAUExEIMoIQhBAC0AwP+jARpByAAQjAEiA0UNASADQgA3AwAgAyACKQOACjcDCCADQgA3AzggA0EAOgA0IAMgBDYCMCADQgA3AyggAyAHNwMgIANBwABqQQA6AAAgA0EQaiACQYgKaikDADcDACADQRhqIAJBgApqQRBqKQMANwMAQQAtAMD/owEaQRgQjAEiBUUNASAFQgA3AwggBSAINwMAIAVBEGpCADcDAAJAIAAoAggiBiAAKAIARw0AIAAQjg4LIAAoAgQgBkE4bGoiBEIANwIUIAQgBTYCECAEQQE2AgwgBCADNgIIIARCgICAgBA3AwAgBEEaakIANwEAIAAgBkEBajYCCAsCQCABLQApRQ0AQQAgASgCABDSBiEEQamWmwFBChCDKCEHIAJBofegAUEBEIMoNwPACiACQgA3A8gKIAJBqApqIAJBwApqEP4XQbOWmwFBGRCDKCEIQQAtAMD/owEaQcgAEIwBIgNFDQEgA0IANwMAIAMgAikDqAo3AwggA0IANwM4IANBADoANCADIAQ2AjAgA0IANwMoIAMgBzcDICADQcAAakEAOgAAIANBEGogAkGwCmopAwA3AwAgA0EYaiACQagKakEQaikDADcDAEEALQDA/6MBGkEYEIwBIgVFDQEgBUIANwMIIAUgCDcDACAFQRBqQgA3AwACQCAAKAIIIgYgACgCAEcNACAAEI4OCyAAKAIEIAZBOGxqIgRCADcCFCAEIAU2AhAgBEEBNgIMIAQgAzYCCCAEQoCAgIAQNwMAIARBGmpCADcBACAAIAZBAWo2AggLAkAgAS0AKkUNAEEAIAEoAgAQ0gYhBEHMlpsBQQ0QgyghByACQaH3oAFBARCDKDcD6AogAkIANwPwCiACQdAKaiACQegKahD+F0HZlpsBQRwQgyghCEEALQDA/6MBGkHIABCMASIDRQ0BIANCADcDACADIAIpA9AKNwMIIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0HAAGpBADoAACADQRBqIAJB2ApqKQMANwMAIANBGGogAkHQCmpBEGopAwA3AwBBAC0AwP+jARpBGBCMASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABCODgsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtACtFDQBBACABKAIAENIGIQRB9ZabAUEJEIMoIQcgAkGh96ABQQEQgyg3A5ALIAJCADcDmAsgAkH4CmogAkGQC2oQ/hdB/pabAUEYEIMoIQhBAC0AwP+jARpByAAQjAEiA0UNASADQgA3AwAgAyACKQP4CjcDCCADQgA3AzggA0EAOgA0IAMgBDYCMCADQgA3AyggAyAHNwMgIANBwABqQQA6AAAgA0EQaiACQYALaikDADcDACADQRhqIAJB+ApqQRBqKQMANwMAQQAtAMD/owEaQRgQjAEiBUUNASAFQgA3AwggBSAINwMAIAVBEGpCADcDAAJAIAAoAggiBiAAKAIARw0AIAAQjg4LIAAoAgQgBkE4bGoiBEIANwIUIAQgBTYCECAEQQE2AgwgBCADNgIIIARCgICAgBA3AwAgBEEaakIANwEAIAAgBkEBajYCCAsCQCABLQAsRQ0AQQAgASgCABDSBiEEQZaXmwFBCRCDKCEHIAJBofegAUEBEIMoNwO4CyACQgA3A8ALIAJBoAtqIAJBuAtqEP4XQZ+XmwFBGBCDKCEIQQAtAMD/owEaQcgAEIwBIgNFDQEgA0IANwMAIAMgAikDoAs3AwggA0IANwM4IANBADoANCADIAQ2AjAgA0IANwMoIAMgBzcDICADQcAAakEAOgAAIANBEGogAkGoC2opAwA3AwAgA0EYaiACQaALakEQaikDADcDAEEALQDA/6MBGkEYEIwBIgVFDQEgBUIANwMIIAUgCDcDACAFQRBqQgA3AwACQCAAKAIIIgYgACgCAEcNACAAEI4OCyAAKAIEIAZBOGxqIgRCADcCFCAEIAU2AhAgBEEBNgIMIAQgAzYCCCAEQoCAgIAQNwMAIARBGmpCADcBACAAIAZBAWo2AggLAkAgAS0ALUUNAEEAIAEoAgAQ0gYhBEG3l5sBQR0QgyghByACQaH3oAFBARCDKDcD4AsgAkIANwPoCyACQcgLaiACQeALahD+F0HUl5sBQSwQgyghCEEALQDA/6MBGkHIABCMASIDRQ0BIANCADcDACADIAIpA8gLNwMIIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0HAAGpBADoAACADQRBqIAJB0AtqKQMANwMAIANBGGogAkHIC2pBEGopAwA3AwBBAC0AwP+jARpBGBCMASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABCODgsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtAC5FDQBBACABKAIAENIGIQRBgJibAUEQEIMoIQcgAkGh96ABQQEQgyg3A4gMIAJCADcDkAwgAkHwC2ogAkGIDGoQ/hdBkJibAUEfEIMoIQhBAC0AwP+jARpByAAQjAEiA0UNASADQgA3AwAgAyACKQPwCzcDCCADQgA3AzggA0EAOgA0IAMgBDYCMCADQgA3AyggAyAHNwMgIANBwABqQQA6AAAgA0EQaiACQfgLaikDADcDACADQRhqIAJB8AtqQRBqKQMANwMAQQAtAMD/owEaQRgQjAEiBUUNASAFQgA3AwggBSAINwMAIAVBEGpCADcDAAJAIAAoAggiBiAAKAIARw0AIAAQjg4LIAAoAgQgBkE4bGoiBEIANwIUIAQgBTYCECAEQQE2AgwgBCADNgIIIARCgICAgBA3AwAgBEEaakIANwEAIAAgBkEBajYCCAsCQCABLQAvRQ0AQQAgASgCABDSBiEEQa+YmwFBDBCDKCEHIAJBofegAUEBEIMoNwOwDCACQgA3A7gMIAJBmAxqIAJBsAxqEP4XQbuYmwFBGxCDKCEIQQAtAMD/owEaQcgAEIwBIgNFDQEgA0IANwMAIAMgAikDmAw3AwggA0IANwM4IANBADoANCADIAQ2AjAgA0IANwMoIAMgBzcDICADQcAAakEAOgAAIANBEGogAkGgDGopAwA3AwAgA0EYaiACQZgMakEQaikDADcDAEEALQDA/6MBGkEYEIwBIgVFDQEgBUIANwMIIAUgCDcDACAFQRBqQgA3AwACQCAAKAIIIgYgACgCAEcNACAAEI4OCyAAKAIEIAZBOGxqIgRCADcCFCAEIAU2AhAgBEEBNgIMIAQgAzYCCCAEQoCAgIAQNwMAIARBGmpCADcBACAAIAZBAWo2AggLAkAgAS0AMEUNAEEAIAEoAgAQ0gYhBEHWmJsBQQgQgyghByACQaH3oAFBARCDKDcD2AwgAkIANwPgDCACQcAMaiACQdgMahD+F0HemJsBQRcQgyghCEEALQDA/6MBGkHIABCMASIDRQ0BIANCADcDACADIAIpA8AMNwMIIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0HAAGpBADoAACADQRBqIAJBwAxqQQhqKQMANwMAIANBGGogAkHADGpBEGopAwA3AwBBAC0AwP+jARpBGBCMASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABCODgsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtADFFDQBBACABKAIAENIGIQRB9ZibAUEEEIMoIQcgAkGh96ABQQEQgyg3A4ANIAJCADcDiA0gAkHoDGogAkGADWoQ/hdB+ZibAUETEIMoIQhBAC0AwP+jARpByAAQjAEiA0UNASADQgA3AwAgAyACKQPoDDcDCCADQgA3AzggA0EAOgA0IAMgBDYCMCADQgA3AyggAyAHNwMgIANBwABqQQA6AAAgA0EQaiACQfAMaikDADcDACADQRhqIAJB6AxqQRBqKQMANwMAQQAtAMD/owEaQRgQjAEiBUUNASAFQgA3AwggBSAINwMAIAVBEGpCADcDAAJAIAAoAggiBiAAKAIARw0AIAAQjg4LIAAoAgQgBkE4bGoiBEIANwIUIAQgBTYCECAEQQE2AgwgBCADNgIIIARCgICAgBA3AwAgBEEaakIANwEAIAAgBkEBajYCCAsCQCABLQAyRQ0AQQAgASgCABDSBiEEQYyZmwFBERCDKCEHIAJBofegAUEBEIMoNwOoDSACQgA3A7ANIAJBkA1qIAJBqA1qEP4XQZ2ZmwFBIBCDKCEIQQAtAMD/owEaQcgAEIwBIgNFDQEgA0IANwMAIAMgAikDkA03AwggA0IANwM4IANBADoANCADIAQ2AjAgA0IANwMoIAMgBzcDICADQcAAakEAOgAAIANBEGogAkGYDWopAwA3AwAgA0EYaiACQZANakEQaikDADcDAEEALQDA/6MBGkEYEIwBIgVFDQEgBUIANwMIIAUgCDcDACAFQRBqQgA3AwACQCAAKAIIIgYgACgCAEcNACAAEI4OCyAAKAIEIAZBOGxqIgRCADcCFCAEIAU2AhAgBEEBNgIMIAQgAzYCCCAEQoCAgIAQNwMAIARBGmpCADcBACAAIAZBAWo2AggLAkAgAS0AM0UNAEEAIAEoAgAQ0gYhBEG9mZsBQQkQgyghByACQaH3oAFBARCDKDcD0A0gAkIANwPYDSACQbgNaiACQdANahD+F0HGmZsBQRgQgyghCEEALQDA/6MBGkHIABCMASIDRQ0BIANCADcDACADIAIpA7gNNwMIIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0HAAGpBADoAACADQRBqIAJBwA1qKQMANwMAIANBGGogAkG4DWpBEGopAwA3AwBBAC0AwP+jARpBGBCMASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABCODgsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtADRFDQBBACABKAIAENIGIQRB3pmbAUEPEIMoIQcgAkGh96ABQQEQgyg3A/gNIAJCADcDgA4gAkHgDWogAkH4DWoQ/hdB7ZmbAUEeEIMoIQhBAC0AwP+jARpByAAQjAEiA0UNASADQgA3AwAgAyACKQPgDTcDCCADQgA3AzggA0EAOgA0IAMgBDYCMCADQgA3AyggAyAHNwMgIANBwABqQQA6AAAgA0EQaiACQegNaikDADcDACADQRhqIAJB4A1qQRBqKQMANwMAQQAtAMD/owEaQRgQjAEiBUUNASAFQgA3AwggBSAINwMAIAVBEGpCADcDAAJAIAAoAggiBiAAKAIARw0AIAAQjg4LIAAoAgQgBkE4bGoiBEIANwIUIAQgBTYCECAEQQE2AgwgBCADNgIIIARCgICAgBA3AwAgBEEaakIANwEAIAAgBkEBajYCCAsCQCABLQA1RQ0AQQAgASgCABDSBiEEQYuamwFBHBCDKCEHIAJBofegAUEBEIMoNwOgDiACQgA3A6gOIAJBiA5qIAJBoA5qEP4XQaeamwFBKxCDKCEIQQAtAMD/owEaQcgAEIwBIgNFDQEgA0IANwMAIAMgAikDiA43AwggA0IANwM4IANBADoANCADIAQ2AjAgA0IANwMoIAMgBzcDICADQcAAakEAOgAAIANBEGogAkGQDmopAwA3AwAgA0EYaiACQYgOakEQaikDADcDAEEALQDA/6MBGkEYEIwBIgVFDQEgBUIANwMIIAUgCDcDACAFQRBqQgA3AwACQCAAKAIIIgYgACgCAEcNACAAEI4OCyAAKAIEIAZBOGxqIgRCADcCFCAEIAU2AhAgBEEBNgIMIAQgAzYCCCAEQoCAgIAQNwMAIARBGmpCADcBACAAIAZBAWo2AggLAkAgAS0ANkUNAEEAIAEoAgAQ0gYhBEHSmpsBQRsQgyghByACQaH3oAFBARCDKDcDyA4gAkIANwPQDiACQbAOaiACQcgOahD+F0HtmpsBQSoQgyghCEEALQDA/6MBGkHIABCMASIDRQ0BIANCADcDACADIAIpA7AONwMIIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0HAAGpBADoAACADQRBqIAJBuA5qKQMANwMAIANBGGogAkGwDmpBEGopAwA3AwBBAC0AwP+jARpBGBCMASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABCODgsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtADdFDQBBACABKAIAENIGIQRBl5ubAUELEIMoIQcgAkGh96ABQQEQgyg3A/AOIAJCADcD+A4gAkHYDmogAkHwDmoQ/hdBopubAUEaEIMoIQhBAC0AwP+jARpByAAQjAEiA0UNASADQgA3AwAgAyACKQPYDjcDCCADQgA3AzggA0EAOgA0IAMgBDYCMCADQgA3AyggAyAHNwMgIANBwABqQQA6AAAgA0EQaiACQeAOaikDADcDACADQRhqIAJB2A5qQRBqKQMANwMAQQAtAMD/owEaQRgQjAEiBUUNASAFQgA3AwggBSAINwMAIAVBEGpCADcDAAJAIAAoAggiBiAAKAIARw0AIAAQjg4LIAAoAgQgBkE4bGoiBEIANwIUIAQgBTYCECAEQQE2AgwgBCADNgIIIARCgICAgBA3AwAgBEEaakIANwEAIAAgBkEBajYCCAsCQCABLQA4RQ0AQQAgASgCABDSBiEEQbybmwFBGBCDKCEHIAJBofegAUEBEIMoNwOYDyACQgA3A6APIAJBgA9qIAJBmA9qEP4XQdSbmwFBJxCDKCEIQQAtAMD/owEaQcgAEIwBIgNFDQEgA0IANwMAIAMgAikDgA83AwggA0IANwM4IANBADoANCADIAQ2AjAgA0IANwMoIAMgBzcDICADQcAAakEAOgAAIANBEGogAkGID2opAwA3AwAgA0EYaiACQYAPakEQaikDADcDAEEALQDA/6MBGkEYEIwBIgVFDQEgBUIANwMIIAUgCDcDACAFQRBqQgA3AwACQCAAKAIIIgYgACgCAEcNACAAEI4OCyAAKAIEIAZBOGxqIgRCADcCFCAEIAU2AhAgBEEBNgIMIAQgAzYCCCAEQoCAgIAQNwMAIARBGmpCADcBACAAIAZBAWo2AggLAkAgAS0AOUUNAEEAIAEoAgAQ0gYhBEH7m5sBQRkQgyghByACQaH3oAFBARCDKDcDwA8gAkIANwPIDyACQagPaiACQcAPahD+F0GUnJsBQSgQgyghCEEALQDA/6MBGkHIABCMASIDRQ0BIANCADcDACADIAIpA6gPNwMIIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0HAAGpBADoAACADQRBqIAJBsA9qKQMANwMAIANBGGogAkGoD2pBEGopAwA3AwBBAC0AwP+jARpBGBCMASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABCODgsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtADpFDQBBACABKAIAENIGIQRBvJybAUETEIMoIQcgAkGh96ABQQEQgyg3A+gPIAJCADcD8A8gAkHQD2ogAkHoD2oQ/hdBz5ybAUEiEIMoIQhBAC0AwP+jARpByAAQjAEiA0UNASADQgA3AwAgAyACKQPQDzcDCCADQgA3AzggA0EAOgA0IAMgBDYCMCADQgA3AyggAyAHNwMgIANBwABqQQA6AAAgA0EQaiACQdgPaikDADcDACADQRhqIAJB0A9qQRBqKQMANwMAQQAtAMD/owEaQRgQjAEiBUUNASAFQgA3AwggBSAINwMAIAVBEGpCADcDAAJAIAAoAggiBiAAKAIARw0AIAAQjg4LIAAoAgQgBkE4bGoiBEIANwIUIAQgBTYCECAEQQE2AgwgBCADNgIIIARCgICAgBA3AwAgBEEaakIANwEAIAAgBkEBajYCCAsCQCABLQA7RQ0AQQAgASgCABDSBiEEQfGcmwFBEhCDKCEHIAJBofegAUEBEIMoNwOQECACQgA3A5gQIAJB+A9qIAJBkBBqEP4XQYOdmwFBIRCDKCEIQQAtAMD/owEaQcgAEIwBIgNFDQEgA0IANwMAIAMgAikD+A83AwggA0IANwM4IANBADoANCADIAQ2AjAgA0IANwMoIAMgBzcDICADQcAAakEAOgAAIANBEGogAkGAEGopAwA3AwAgA0EYaiACQfgP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AgAQ0gYhBEHzqZsBQRIQgyghByACQaH3oAFBARCDKDcDkBogAkIANwOYGiACQfgZaiACQZAaahD+F0GFqpsBQSEQgyghCEEALQDA/6MBGkHIABCMASIDRQ0BIANCADcDACADIAIpA/gZNwMIIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0HAAGpBADoAACADQRBqIAJBgBpqKQMANwMAIANBGGogAkH4GWpBEGopAwA3AwBBAC0AwP+jARpBGBCMASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABCODgsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtAFxFDQBBACABKAIAENIGIQRBpqqbAUEREIMoIQcgAkGh96ABQQEQgyg3A7gaIAJCADcDwBogAkGgGmogAkG4GmoQ/hdBt6qbAUEgEIMoIQhBAC0AwP+jARpByAAQjAEiA0UNASADQgA3AwAgAyACKQOgGjcDCCADQgA3AzggA0EAOgA0IAMgBDYCMCADQgA3AyggAyAHNwMgIANBwABqQQA6AAAgA0EQaiACQagaaikDADcDACADQRhqIAJBoBpqQRBqKQMANwMAQQAtAMD/owEaQRgQjAEiBUUNASAFQgA3AwggBSAINwMAIAVBEGpCADcDAAJAIAAoAggiBiAAKAIARw0AIAAQjg4LIAAoAgQgBkE4bGoiBEIANwIUIAQgBTYCECAEQQE2AgwgBCADNgIIIARCgICAgBA3AwAgBEEaakIANwEAIAAgBkEBajYCCAsCQCABLQBdRQ0AQQAgASgCABDSBiEEQdeqmwFBIBCDKCEHIAJBofegAUEBEIMoNwPgGiACQgA3A+gaIAJByBpqIAJB4BpqEP4XQfeqmwFBLxCDKCEIQQAtAMD/owEaQcgAEIwBIgNFDQEgA0IANwMAIAMgAikDyBo3AwggA0IANwM4IANBADoANCADIAQ2AjAgA0IANwMoIAMgBzcDICADQcAAakEAOgAAIANBEGogAkHQGmopAwA3AwAgA0EYaiACQcgaakEQaikDADcDAEEALQDA/6MBGkEYEIwBIgVFDQEgBUIA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NgIwIANCADcDKCADIAc3AyAgA0HAAGpBADoAACADQRBqIAJByB9qQQhqKQMANwMAIANBGGogAkHIH2pBEGopAwA3AwBBAC0AwP+jARpBGBCMASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABCODgsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtAG5FDQBBACABKAIAENIGIQRBmLKbAUEGEIMoIQcgAkGh96ABQQEQgyg3A4ggIAJCADcDkCAgAkHwH2ogAkGIIGoQ/hdBnrKbAUEVEIMoIQhBAC0AwP+jARpByAAQjAEiA0UNASADQgA3AwAgAyACKQPwHzcDCCADQgA3AzggA0EAOgA0IAMgBDYCMCADQgA3AyggAyAHNwMgIANBwABqQQA6AAAgA0EQaiACQfgfaikDADcDACADQRhqIAJB8B9qQRBqKQMANwMAQQAtAMD/owEaQRgQjAEiBUUNASAFQgA3AwggBSAINwMAIAVBEGpCADcDAAJAIAAoAggiBiAAKAIARw0AIAAQjg4LIAAoAgQgBkE4bGoiBEIANwIUIAQgBTYCECAEQQE2AgwgBCADNgIIIARCgICAgBA3AwAgBEEaakIANwEAIAAgBkEBajYCCAsgAS0Ab0UNAUEAIAEoAgAQ0gYhBEGzspsBQQoQgyghByACQaH3oAFBARCDKDcDsCAgAkIANwO4ICACQZggaiACQbAgahD+F0G9spsBQRkQgyghCEEALQDA/6MBGkHIABCMASIDRQ0AIANCADcDACADIAIpA5ggNwMIIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0HAAGpBADoAACADQRBqIAJBoCBqKQMANwMAIANBGGogAkGYIGpBEGopAwA3AwBBAC0AwP+jARpBGBCMASIFRQ0AIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABCODgsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIIDAELAAsgASABKAIE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EPsgIAIoAjwhBiACKAI4IRAgAkHoBWogARDfGiACQfgCakEQaiApNwMAIAJB+AJqQQhqICo3AwBBASEFIAJBATYCtAQgAkGk16EBNgKwBCACQgE3ArwEIAJBogI2AswFIAIgKzcD+AIgAiACQcgFajYCuAQgAiACQbAFajYCyAUgAiACQfgCajYCsAUgAkHQA2ogAkGwBGoQmRYgAkH4AmoQ4hAgAkHkA2ogAkHoBWpBCGooAgA2AgAgAiACKQLoBTcC3AMgECAGIAJB0ANqEP4iIQYCQCABELEWIhBFDQAgECgCAEEkRw0AIAEgASkDGDcDUCABKAIAIRAgAUElNgIAIBBBJEcNAiABIAEoAgQQ4xMLIABBDTYCACAAIAY2AgQMBAsgASABKQMYNwNQIAEoAgAhBSABQSU2AgAgAkH4AmpBDGogAUEMaikCADcCACACQfgCakEUaiABQRRqKAIANgIAIAIgASkCBDcC/AIgAiAFNgL4AiACQfgCahDiECACQbAEahDiECACQQA2AqwFIAJCgICAgIABNwKkBSABQQRqIRYgAkGwBGpBBHIhFyACQfgCakEwaiEbIAJB+AJqQR1qIRwgAkGwBGpBHWohHSACQbAEakEwaiEeIAJBiARqQQhqIRVBACEJQQAhGgJAAkACQANAAkACQAJAAkACQAJAAkACQCABELEWRQ0AIBNBACkD0OCZASIpNwMAIBBBACkDyOCZASIqNwMAIAJBACkDwOCZASIrNwOwBCABELEWIAJBsARqEMs1IQUgAkGwBGoQ4hAgBQ0AAkAgGkH+/3tLDQAgGiAJckUNACACQfeAgIB4NgKwBCABIBogCSACQbAEahCIKgsgARDzMSERIAJBsARqIAFBABCTAiACKAK0BCEFIAIoArAEIgZBgICAgHhGDQkgAiACKAK4BDYC+AMgAiAFNgL0AyACIAY2AvADIAEQ8zEhBiACQdADakEQaiIPQQApA6DgmQE3AwAgAkHQA2pBCGoiDkEAKQOY4JkBNwMAIAJBACkDkOCZATcD0AMCQCABELEWIAJB0ANqEMs1IggNACACQdADahDiECACQegFakEIaiACQfADakEIaiIfKAIANgIAIAIgAikC8AM3A+gFAkACQAJAAkACQAJAAkAgAS0A1AJBAkcNACACQbAEaiABENUPIAItALAEDQUg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BgwGCyABIAEpAxg3A1AgASgCACEEIAFBJTYCACAEQSRHDQMgASABKAIEEOMTDAYLAkACQCABELAWIgMNAEECIQYMAQsgAkGACWpBACkD0K6ZATcDACACQfgIakEAKQPIrpkBNwMAIAJBACkDwK6ZATcD8AhBAUECIAJB8AhqIAMQhwcbIQYgAkHwCGoQ4RALIAEgASkDGDcDUCABKAIAIQMgAUElNgIAIAJB/AhqIgUgBEEIaiIHKQIANwIAIAJB8AhqQRRqIhkgBEEQaiIbKAIANgIAIAIgBCkCADcC9AggAiADNgLwCCACQfAIahDhECACQeAFakEQakEAKQOAqpkBIiM3AwAgAkHgBWpBCGpBACkD+KmZASIkNwMAIAJBACkD8KmZASIlNwPgBSABELAWIAJB4AVqEMU1DQEgAkHgBWoQ4RAgAkHIAWogARD7ICACKALMASEEIAIoAsgBIQMgAkGADGogARDfGiACQfAIakEQaiAjNwMAIAJB8AhqQQhqICQ3AwAgAkEBNgLkBSACQaTXoQE2AuAFIAJCATcC7AUgAkGiAjYCvAUgAiAlNwPwCCACIAJBuAVqNgLoBSACIAJB6ARqNgK4BSACIAJB8AhqNgLoBCACQeACaiACQeAFahDmIiACQfAIahDhECACQeACakEUaiACQYAMakEIaigCADYCACACIAIpAoAMNwLsAiADIAQgAkHgAmoQ/iIhAyABELAWIgRFDQUgBCgCAEEkRw0FIAEgASkDGDcDUCABKAIAIQQgAUElNgIAIARBJEcNAyABIAEoAgQQ4xMMBQsgASABKQMYNwNQIAEoAgAhAyABQSU2AgAgAkH8CGogBEEIaikCADcCACACQYQJaiAEQRBqKAIANgIAIAIgBCkCADcC9AggAiADNgLwCCACQfAIahDhECACQeAFahDhEAwDCyABIAEpAxg3A1AgASgCACEDIAFBJTYCACAFIAcpAgA3AgAgGSAbKAIANgIAIAIgBCkCADcC9AggAiADNgLwCCACQfAIahDhECACQeAFahDhEAwCC0GUzqEBQShB2OGZARDTJwALQZTOoQFBKEHY4ZkBENMnAAsgAkHgBWpBEGpBACkD2N+ZASIjNwMAIAJB4AVqQQhqQQApA9DfmQEiJDcDACACQQApA8jfmQEiJTcD4AUCQAJAAkACQAJAAkACQCABELAWIAJB4AVqEMU1DQAgAkHgBWoQ4RAgAkHAAWogARD7ICACKALEASEEIAIoAsABIQMgAkGoDGogARDfGiACQfAIakEQaiAjNwMAIAJB8AhqQQhqICQ3AwAgAkEBNgLkBSACQaTXoQE2AuAFIAJCATcC7AUgAkGiAjYCvAUgAiAlNwPwCCACIAJBuAVqNgLoBSACIAJB6ARqNgK4BSACIAJB8AhqNgLoBCACQeACaiACQeAFahDmIiACQfAIahDhECACQfQCaiACQagMakEIaigCADYCACACIAIpAqgMNwLsAiADIAQgAkHgAmoQ/iIhAyABELAWIgRFDQcgBCgCAEEkRw0HIAEgASkDGDcDUCABKAIAIQQgAUElNgIAIARBJEcNASABIAEoAgQQ4xMMBwsgASABKQMYNwNQIAEoAgAhAyABQSU2AgAgAkH8CGogBEEIaikCADcCACACQYQJaiAEQRBqKAIANgIAIAIgBCkCADcC9AggAiADNgLwCCACQfAIahDhECACQeAFahDhECABEO8xIQUgAkHgAmogARCGCCACKALoAiEDIAIpA+ACIiNQDQYgAiACKALsAjYCxAUgAiADNgLABSACICM3A7gFIAJB8AJqIhlBACkDmLqZATcDACACQeACakEIaiIbQQApA5C6mQE3AwAgAkEAKQOIupkBNwPgAiACQbgBaiABIAJB4AJqQZySoQFBAhCcCiACKAK8ASEDIAIoArgBIQcgAkHgAmoQ4RACQCAHRQ0AICMQ0h8MBwsgASgCVCEHIAJB8AhqQQhqIAJBuAVqEP4XIAJBlwlqQQA2AAAgAkEANgKUCSACIAM2ApAJIAIgBSAHIAUgB0sbNgL0CCACIAUgByAFIAdJGyIDNgLwCCACQeAFakEEciACQfAIakEEckEmEN8KGiACQeAFakEvaiACQfAIakEvai0AADoAACACIAIoAJsJNgCLBiACQQA6AIoGIAIgAzYC4AUgGUEAKQP4u5kBNwMAIBtBACkD8LuZATcDACACQQApA+i7mQE3A+ACAkACQCABELAWIAJB4AJqEMU1DQAgAkHgAmoQ4RBBACEDDAELIAEgASkDGDcDUCABKAIAIQMgAUElNgIAIAJB/AhqIARBCGopAgA3AgAgAkGECWogBEEQaigCADYCACACIAQpAgA3AvQIIAIgAzYC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KAKUASEEIAIoApABIQMgAkHQDGogARDfGiACQfAIakEQaiAjNwMAIAJB8AhqQQhqICQ3AwAgAkEBNgLkAiACQaTXoQE2AuACIAJCATcC7AIgAkGiAjYC7AQgAiAlNwPwCCACIAJB6ARqNgLoAiACIAJB3ARqNgLoBCACIAJB8AhqNgLcBCACQbgFaiACQeACahDmIiACQfAIahDhECACQcwFaiACQdAMakEIaigCADYCACACIAIpAtAMNwLEBSADIAQgAkG4BWoQ/iIhBSABELAWIgRFDQAgBCgCAEEkRw0AIAEgASkDGDcDUCABKAIAIQQgAUElNgIAIARBJEcNAyABIAEoAgQQ4xMLIAJB0ARqEKE3CyAFIQMMAgsgASABKQMYNwNQIAEoAgAhGyABQSU2AgAgAkH8CGogBEEIaikCADcCACACQYQJaiAEQRBqKAIANgIAIAIgBCkCADcC9AggAiAbNgLwCCACQfAIahDhECACQeACahDhECABKAJUIQEgAkGABGogAkHgBWpBKhDfChogAkH4A2pBBGoiBCACQYsGaiIbQQRqLQAAOgAAIAIgGygAADYC+AMgAiAIIAEgCCABSxs2AvwIIAIgCCABIAggAUkbNgL4CCACQfAIakEQaiACQYAEakEqEN8KGiACQa8JaiAELQAAOgAAIAJBADoAqgkgAiAZOgC5CSACIAY6ALgJIAIgBzYCtAkgAiADNgKwCSACIAIoAvgDNgCrCQwEC0GUzqEBQShB2OGZARDTJwALIAJBxARqEKE3CyACQeAFahCEMwsgAiADNgL0CEEUIQULIAIgBTYC8AggAkGIAWogAkHwCGoQ5ycgAigCjAEhBCACKAKIASEFDAcLIAIgBToAlAYgAiAENgLgBUEAIQQCQCABELkyDQBBACEEIAJBgAlqQQApA7jkmQE3AwAgAkH4CGpBACkDsOSZATcDACACQQApA6jkmQE3A/AIIAEQsBYgAkHwCGoQxTUhBiACQfAIahDhECAGRQ0AIAEgASgCzAIiBkH/v///A3EQ4Q8gAkH4AGogARCiAiACKAJ8IQQgAigCeCEHIAEgBhCgPiAHRQ0AIAJB4AVqEIMzDAELIAEoAlQhASACQcADaiACQeAFakE0EN8KGiACQbcDaiIGIAJBpAZqKAAANgAAIAJBsANqIgcgAkGdBmopAAA3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AQsgBUH4BWoQsCYgBUHoBWoQsjQgBUGoAWoQ4zkgBUGkAWoQkjALIAVBwBBqJAAPCwAL8pkBAQN/IwBBgCdrIgMkAAJAAkAgAigCBCIEQf7///8HSw0AIAIgBEEBajYCBCACLQAIRQ0BIAMgAUHWspsBQRogAigCABC9BQJAIAAoAggiBSAAKAIARw0AIAAQkA4LIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIIDAELQayFmwEQ6iIACwJAIAItAAlFDQAgA0EwaiABQfCymwFBEyACKAIAEL0FAkAgACgCCCIFIAAoAgBHDQAgABCQDgsgACgCBCAFQTBsaiIEIAMpAzA3AwAgBEEoaiADQTBqQShqKQMANwMAIARBIGogA0EwakEgaikDADcDACAEQRhqIANBMGpBGGopAwA3AwAgBEEQaiADQTBqQRBqKQMANwMAIARBCGogA0EwakEIaikDADcDACAAIAVBAWo2AggLAkAgAi0ACkUNACADQeAAaiABQYOzmwFBECACKAIAEL0FAkAgACgCCCIFIAAoAgBHDQAgABCQDgsgACgCBCAFQTBsaiIEIAMpA2A3AwAgBEEoaiADQeAAakEoaikDADcDACAEQSBqIANB4ABqQSBqKQMANwMAIARBGGogA0HgAGpBGGopAwA3AwAgBEEQaiADQeAAakEQaikDADcDACAEQQhqIANB4ABqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQALRQ0AIANBkAFqIAFBk7ObAUETIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDkAE3AwAgBEEoaiADQZABakEoaikDADcDACAEQSBqIANBkAFqQSBqKQMANwMAIARBGGogA0GQAWpBGGopAwA3AwAgBEEQaiADQZABakEQaikDADcDACAEQQhqIANBkAFqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAMRQ0AIANBwAFqIAFBprObAUEXIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDwAE3AwAgBEEoaiADQcABakEoaikDADcDACAEQSBqIANBwAFqQSBqKQMANwMAIARBGGogA0HAAWpBGGopAwA3AwAgBEEQaiADQcABakEQaikDADcDACAEQQhqIANBwAFqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQANRQ0AIANB8AFqIAFBvbObAUEPIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykD8AE3AwAgBEEoaiADQfABakEoaikDADcDACAEQSBqIANB8AFqQSBqKQMANwMAIARBGGogA0HwAWpBGGopAwA3AwAgBEEQaiADQfABakEQaikDADcDACAEQQhqIANB8AFqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAORQ0AIANBoAJqIAFBzLObAUEYIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDoAI3AwAgBEEoaiADQaACakEoaikDADcDACAEQSBqIANBoAJqQSBqKQMANwMAIARBGGogA0GgAmpBGGopAwA3AwAgBEEQaiADQaACakEQaikDADcDACAEQQhqIANBoAJqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAPRQ0AIANB0AJqIAFB5LObAUEOIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykD0AI3AwAgBEEoaiADQdACakEoaikDADcDACAEQSBqIANB0AJqQSBqKQMANwMAIARBGGogA0HQAmpBGGopAwA3AwAgBEEQaiADQdACakEQaikDADcDACAEQQhqIANB0AJqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAQRQ0AIANBgANqIAFB8rObAUESIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDgAM3AwAgBEEoaiADQYADakEoaikDADcDACAEQSBqIANBgANqQSBqKQMANwMAIARBGGogA0GAA2pBGGopAwA3AwAgBEEQaiADQYADakEQaikDADcDACAEQQhqIANBgANqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQARRQ0AIANBsANqIAFBhLSbAUEVIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDsAM3AwAgBEEoaiADQbADakEoaikDADcDACAEQSBqIANBsANqQSBqKQMANwMAIARBGGogA0GwA2pBGGopAwA3AwAgBEEQaiADQbADakEQaikDADcDACAEQQhqIANBsANqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQASRQ0AIANB4ANqIAFBmbSbAUELIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykD4AM3AwAgBEEoaiADQeADakEoaikDADcDACAEQSBqIANB4ANqQSBqKQMANwMAIARBGGogA0HgA2pBGGopAwA3AwAgBEEQaiADQeADakEQaikDADcDACAEQQhqIANB4ANqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQATRQ0AIANBkARqIAFBpLSbAUEKIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDkAQ3AwAgBEEoaiADQZAEakEoaikDADcDACAEQSBqIANBkARqQSBqKQMANwMAIARBGGogA0GQBGpBGGopAwA3AwAgBEEQaiADQZAEakEQaikDADcDACAEQQhqIANBkARqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAURQ0AIANBwARqIAFBrrSbAUEbIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDwAQ3AwAgBEEoaiADQcAEakEoaikDADcDACAEQSBqIANBwARqQSBqKQMANwMAIARBGGogA0HABGpBGGopAwA3AwAgBEEQaiADQcAEakEQaikDADcDACAEQQhqIANBwARqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAVRQ0AIANB8ARqIAFBybSbAUEiIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykD8AQ3AwAgBEEoaiADQfAEakEoaikDADcDACAEQSBqIANB8ARqQSBqKQMANwMAIARBGGogA0HwBGpBGGopAwA3AwAgBEEQaiADQfAEakEQaikDADcDACAEQQhqIANB8ARq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BEEoaiADQdAIakEoaikDADcDACAEQSBqIANB0AhqQSBqKQMANwMAIARBGGogA0HQCGpBGGopAwA3AwAgBEEQaiADQdAIakEQaikDADcDACAEQQhqIANB0AhqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAgRQ0AIANBgAlqIAFB9rabAUEdIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDgAk3AwAgBEEoaiADQYAJakEoaikDADcDACAEQSBqIANBgAlqQSBqKQMANwMAIARBGGogA0GACWpBGGopAwA3AwAgBEEQaiADQYAJakEQaikDADcDACAEQQhqIANBgAlqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAhRQ0AIANBsAlqIAFBk7ebAUEXIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDsAk3AwAgBEEoaiADQbAJakEoaikDADcDACAEQSBqIANBsAlqQSBqKQMANwMAIARBGGogA0GwCWpBGGopAwA3AwAgBEEQaiADQbAJakEQaikDADcDACAEQQhqIANBsAlqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAiRQ0AIANB4AlqIAFBqrebAUEaIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykD4Ak3AwAgBEEoaiADQeAJakEoaikDADcDACAEQSBqIANB4AlqQSBqKQMANwMAIARBGGogA0HgCWpBGGopAwA3AwAgBEEQaiADQeAJakEQaikDADcDACAEQQhqIANB4AlqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAjRQ0AIANBkApqIAFBxLebAUEYIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDkAo3AwAgBEEoaiADQZAKakEoaikDADcDACAEQSBqIANBkApqQSBqKQMANwMAIARBGGogA0GQCmpBGGopAwA3AwAgBEEQaiADQZAKakEQaikDADcDACAEQQhqIANBkApqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAkRQ0AIANBwApqIAFB3LebAUEZIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDwAo3AwAgBEEoaiADQcAKakEoaikDADcDACAEQSBqIANBwApqQSBqKQMANwMAIARBGGogA0HACmpBGGopAwA3AwAgBEEQaiADQcAKakEQaikDADcDACAEQQhqIANBwApqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAlRQ0AIANB8ApqIAFB9bebAUEYIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykD8Ao3AwAgBEEoaiADQfAKakEoaikDADcDACAEQSBqIANB8ApqQSBqKQMANwMAIARBGGogA0HwCmpBGGopAwA3AwAgBEEQaiADQfAKakEQaikDADcDACAEQQhqIANB8ApqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAmRQ0AIANBoAtqIAFBjbibAUEjIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDoAs3AwAgBEEoaiADQaALakEoaikDADcDACAEQSBqIANBoAtqQSBqKQMANwMAIARBGGogA0GgC2pBGGopAwA3AwAgBEEQaiADQaALakEQaikDADcDACAEQQhqIANBoAtqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAnRQ0AIANB0AtqIAFBsLibAUEjIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykD0As3AwAgBEEoaiADQdALakEoaikDADcDACAEQSBqIANB0AtqQSBqKQMANwMAIARBGGogA0HQC2pBGGopAwA3AwAgBEEQaiADQdALakEQaikDADcDACAEQQhqIANB0AtqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAoRQ0AIANBgAxqIAFB07ibAUEhIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDgAw3AwAgBEEoaiADQYAMakEoaikDADcDACAEQSBqIANBgAxqQSBqKQMANwMAIARBGGogA0GADGpBGGopAwA3AwAgBEEQaiADQYAMakEQaikDADcDACAEQQhqIANBgAxqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQApRQ0AIANBsAxqIAFB9LibAUEJIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDsAw3AwAgBEEoaiADQbAMakEoaikDADcDACAEQSBqIANBsAxqQSBqKQMANwMAIARBGGogA0GwDGpBGGopAwA3AwAgBEEQaiADQbAMakEQaikDADcDACAEQQhqIANBsAxqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAqRQ0AIANB4AxqIAFB/bibAUEMIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykD4Aw3AwAgBEEoaiADQeAMakEoaikDADcDACAEQSBqIANB4AxqQSBqKQMANwMAIARBGGogA0HgDGpBGGopAwA3AwAgBEEQaiADQeAMakEQaikDADcDACAEQQhqIANB4AxqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQArRQ0AIANBkA1qIAFBibmbAUEIIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDkA03AwAgBEEoaiADQZANakEoaikDADcDACAEQSBqIANBkA1qQSBqKQMANwMAIARBGGogA0GQDWpBGGopAwA3AwAgBEEQaiADQZANakEQaikDADcDACAEQQhqIANBkA1qQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAsRQ0AIANBwA1qIAFBkbmbAUEIIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDwA03AwAgBEEoaiADQcANakEoaikDADcDACAEQSBqIANBwA1qQSBqKQMANwMAIARBGGogA0HADWpBGGopAwA3AwAgBEEQaiADQcANakEQaikDADcDACAEQQhqIANBwA1qQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAtRQ0AIANB8A1qIAFBmbmbAUEcIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykD8A03AwAgBEEoaiADQfANakEoaikDADcDACAEQSBqIANB8A1qQSBqKQMANwMAIARBGGogA0HwDWpBGGopAwA3AwAgBEEQaiADQfANakEQaikDADcDACAEQQhqIANB8A1qQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAuRQ0AIANBoA5qIAFBtbmbAUEPIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDoA43AwAgBEEoaiADQaAOakEoaikDADcDACAEQSBqIANBoA5qQSBqKQMANwMAIARBGGogA0GgDmpBGGopAwA3AwAgBEEQaiADQaAOakEQaikDADcDACAEQQhqIANBoA5qQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAvRQ0AIANB0A5qIAFBxLmbAUELIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykD0A43AwAgBEEoaiADQdAOakEoaikDADcDACAEQSBqIANB0A5qQSBqKQMANwMAIARBGGogA0HQDmpBGGopAwA3AwAgBEEQaiADQdAOakEQaikDADcDACAEQQhqIANB0A5qQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAwRQ0AIANBgA9qIAFBrYWhAUEHIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDgA83AwAgBEEoaiADQYAPakEoaikDADcDACAEQSBqIANBgA9qQSBqKQMANwMAIARBGGogA0GAD2pBGGopAwA3AwAgBEEQaiADQYAPakEQaikDADcDACAEQQhqIANBgA9qQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAxRQ0AIANBsA9qIAFB9KuhAUEDIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDsA83AwAgBEEoaiADQbAPakEoaikDADcDACAEQSBqIANBsA9qQSBqKQMANwMAIARBGGogA0GwD2pBGGopAwA3AwAgBEEQaiADQbAPakEQaikDADcDACAEQQhqIANBsA9qQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAyRQ0AIANB4A9qIAFBz7mbAUEQIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykD4A83AwAgBEEoaiADQeAPakEoaikDADcDACAEQSBqIANB4A9qQSBqKQMANwMAIARBGGogA0HgD2pBGGopAwA3AwAgBEEQaiADQeAPakEQaikDADcDACAEQQhqIANB4A9qQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAzRQ0AIANBkBBqIAFB37mbAUEIIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDkBA3AwAgBEEoaiADQZAQakEoaikDADcDACAEQSBqIANBkBBqQSBqKQMANwMAIARBGGogA0GQEGpBGGopAwA3AwAgBEEQaiADQZAQakEQaikDADcDACAEQQhqIANBkBBqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA0RQ0AIANBwBBqIAFB57mbAUEOIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDwBA3AwAgBEEoaiADQcAQakEoaikDADcDACAEQSBqIANBwBBqQSBqKQMANwMAIARBGGogA0HAEGpBGGopAwA3AwAgBEEQaiADQcAQakEQaikDADcDACAEQQhqIANBwBBqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA1RQ0AIANB8BBqIAFB9bmbAUEbIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykD8BA3AwAgBEEoaiADQfAQakEoaikDADcDACAEQSBqIANB8BBqQSBqKQMANwMAIARBGGogA0HwEGpBGGopAwA3AwAgBEEQaiADQfAQakEQaikDADcDACAEQQhqIANB8BBqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA2RQ0AIANBoBFqIAFBkLqbAUEaIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDoBE3AwAgBEEoaiADQaARakEoaikDADcDACAEQSBqIANBoBFqQSBqKQMANwMAIARBGGogA0GgEWpBGGopAwA3AwAgBEEQaiADQaARakEQaikDADcDACAEQQhqIANBoBFqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA3RQ0AIANB0BFqIAFB+I2hAUEKIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykD0BE3AwAgBEEoaiADQdARakEoaikDADcDACAEQSBqIANB0BFqQSBqKQMANwMAIARBGGogA0HQEWpBGGopAwA3AwAgBEEQaiADQdARakEQaikDADcDACAEQQhqIANB0BFqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA4RQ0AIANBgBJqIAFBqrqbAUEXIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDgBI3AwAgBEEoaiADQYASakEoaikDADcDACAEQSBqIANBgBJqQSBqKQMANwMAIARBGGogA0GAEmpBGGopAwA3AwAgBEEQaiADQYASakEQaikDADcDACAEQQhqIANBgBJqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA5RQ0AIANBsBJqIAFBwbqbAUEYIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDsBI3AwAgBEEoaiADQbASakEoaikDADcDACAEQSBqIANBsBJqQSBqKQMANwMAIARBGGogA0GwEmpBGGopAwA3AwAgBEEQaiADQbASakEQaikDADcDACAEQQhqIANBsBJqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA6RQ0AIANB4BJqIAFB2bqbAUESIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykD4BI3AwAgBEEoaiADQeASakEoaikDADcDACAEQSBqIANB4BJqQSBqKQMANwMAIARBGGogA0HgEmpBGGopAwA3AwAgBEEQaiADQeASakEQaikDADcDACAEQQhqIANB4BJqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA7RQ0AIANBkBNqIAFB67qbAUERIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDkBM3AwAgBEEoaiADQZATakEoaikDADcDACAEQSBqIANBkBNqQSBqKQMANwMAIARBGGogA0GQE2pBGGopAwA3AwAgBEEQaiADQZATakEQaikDADcDACAEQQhqIANBkBNqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA8RQ0AIANBwBNqIAFB/LqbAUEXIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDwBM3AwAgBEEoaiADQcATakEoaikDADcDACAEQSBqIANBwBNqQSBqKQMANwMAIARBGGogA0HAE2pBGGopAwA3AwAgBEEQaiADQcATakEQaikDADcDACAEQQhqIANBwBNqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA9RQ0AIANB8BNqIAFBk7ubAUEdIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykD8BM3AwAgBEEoaiADQfATakEoaikDADcDACAEQSBqIANB8BNqQSBqKQMANwMAIARBGGogA0HwE2pBGGopAwA3AwAgBEEQaiADQfATakEQaikDADcDACAEQQhqIANB8BNqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA+RQ0AIANBoBRqIAFBsLubAUEDIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDoBQ3AwAgBEEoaiADQaAUakEoaikDADcDACAEQSBqIANBoBRqQSBqKQMANwMAIARBGGogA0GgFGpBGGopAwA3AwAgBEEQaiADQaAUakEQaikDADcDACAEQQhqIANBoBRqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA/RQ0AIANB0BRqIAFBs7ubAUEPIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykD0BQ3AwAgBEEoaiADQdAUakEoaikDADcDACAEQSBqIANB0BRqQSBqKQMANwMAIARBGGogA0HQFGpBGGopAwA3AwAgBEEQaiADQdAUakEQaikDADcDACAEQQhqIANB0BRqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBARQ0AIANBgBVqIAFBwrubAUERIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDgBU3AwAgBEEoaiADQYAVakEoaikDADcDACAEQSBqIANBgBVqQSBqKQMANwMAIARBGGogA0GAFWpBGGopAwA3AwAgBEEQaiADQYAVakEQaikDADcDACAEQQhqIANBgBVqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBBRQ0AIANBsBVqIAFB07ubAUETIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDsBU3AwAgBEEoaiADQbAVakEoaikDADcDACAEQSBqIANBsBVqQSBqKQMANwMAIARBGGogA0GwFWpBGGopAwA3AwAgBEEQaiADQbAVakEQaikDADcDACAEQQhqIANBsBVqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBCRQ0AIANB4BVqIAFB5rubAUEaIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykD4BU3AwAgBEEoaiADQeAVakEoaikDADcDACAEQSBqIANB4BVqQSBqKQMANwMAIARBGGogA0HgFWpBGGopAwA3AwAgBEEQaiADQeAVakEQaikDADcDACAEQQhqIANB4BVqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBDRQ0AIANBkBZqIAFBgLybAUENIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDkBY3AwAgBEEoaiADQZAWakEoaikDADcDACAEQSBqIANBkBZqQSBqKQMANwMAIARBGGogA0GQFmpBGGopAwA3AwAgBEEQaiADQZAWakEQaikDADcDACAEQQhqIANBkBZqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBERQ0AIANBwBZqIAFBjbybAUETIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDwBY3AwAgBEEoaiADQcAWakEoaikDADcDACAEQSBqIANBwBZqQSBqKQMANwMAIARBGGogA0HAFmpBGGopAwA3AwAgBEEQaiADQcAWakEQaikDADcDACAEQQhqIANBwBZqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBFRQ0AIANB8BZqIAFBoLybAUEZIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykD8BY3AwAgBEEoaiADQfAWakEoaikDADcD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aikDADcDACAEQQhqIANBkBxqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBURQ0AIANBwBxqIAFBqL6bAUETIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDwBw3AwAgBEEoaiADQcAcakEoaikDADcDACAEQSBqIANBwBxqQSBqKQMANwMAIARBGGogA0HAHGpBGGopAwA3AwAgBEEQaiADQcAcakEQaikDADcDACAEQQhqIANBwBxqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBVRQ0AIANB8BxqIAFBu76bAUEMIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykD8Bw3AwAgBEEoaiADQfAcakEoaikDADcDACAEQSBqIANB8BxqQSBqKQMANwMAIARBGGogA0HwHGpBGGopAwA3AwAgBEEQaiADQfAcakEQaikDADcDACAEQQhqIANB8BxqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBWRQ0AIANBoB1qIAFBx76bAUEPIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDoB03AwAgBEEoaiADQaAdakEoaikDADcDACAEQSBqIANBoB1qQSBqKQMANwMAIARBGGogA0GgHWpBGGopAwA3AwAgBEEQaiADQaAdakEQaikDADcDACAEQQhqIANBoB1qQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBXRQ0AIANB0B1qIAFBw/SgAUEGIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykD0B03AwAgBEEoaiADQdAdakEoaikDADcDACAEQSBqIANB0B1qQSBqKQMANwMAIARBGGogA0HQHWpBGGopAwA3AwAgBEEQaiADQdAdakEQaikDADcDACAEQQhqIANB0B1qQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBYRQ0AIANBgB5qIAFB1r6bAUEHIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDgB43AwAgBEEoaiADQYAeakEoaikDADcDACAEQSBqIANB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IAFBz8CbAUEMIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykD4CE3AwAgBEEoaiADQeAhakEoaikDADcDACAEQSBqIANB4CFqQSBqKQMANwMAIARBGGogA0HgIWpBGGopAwA3AwAgBEEQaiADQeAhakEQaikDADcDACAEQQhqIANB4CFqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBjRQ0AIANBkCJqIAFB28CbAUEjIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDkCI3AwAgBEEoaiADQZAiakEoaikDADcDACAEQSBqIANBkCJqQSBqKQMANwMAIARBGGogA0GQImpBGGopAwA3AwAgBEEQaiADQZAiakEQaikDADcDACAEQQhqIANBkCJqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBkRQ0AIANBwCJqIAFB/sCbAUELIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDwCI3AwAgBEEoaiADQcAiakEoaikDADcDACAEQSBqIANBwCJqQSBqKQMANwMAIARBGGogA0HAImpBGGopAwA3AwAgBEEQaiADQcAiakEQaikDADcDACAEQQhqIANBwCJqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBlRQ0AIANB8CJqIAFBicGbAUEMIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykD8CI3AwAgBEEoaiADQfAiakEoaikDADcDACAEQSBqIANB8CJqQSBqKQMANwMAIARBGGogA0HwImpBGGopAwA3AwAgBEEQaiADQfAiakEQaikDADcDACAEQQhqIANB8CJqQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBmRQ0AIANBoCNqIAFBlcGbAUELIAIoAgAQvQUCQCAAKAIIIgUgACgCAEcNACAAEJAOCyAAKAIEIAVBMGxqIgQgAykDoCM3AwAgBEEoaiADQaAjakEoaikDADcDACAEQSBqIANBoCNqQSBqKQMANwMAIARBGGogA0GgI2pBGGopAwA3AwAgBEEQaiADQaAjakEQaikDADcDACAE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MSEFAkACQAJAAkAgARCxFiIEDQAgASgCsAIhASADQYCAgIB4NgKwByABIAEgA0GwB2oQ/iIhAQwBCwJAIAQoAgBBJEcNACABIAEpAxg3A1AgASgCACEEIAFBJTYCAAJAIARBJEcNACABKAIEIQEMAgtBlM6hAUEoQdjhmQEQ0ycACyABIAEpAxg3A1AgASgCACEEIAFBJTYCACADQbAHakEMaiABQQxqKQIANwIAIANBsAdqQRRqIAFBFGooAgA2AgAgAyABKQIENwK0ByADIAQ2ArAHIANBsAdqEOIQQZi8mQEQ4hACQAJAAkACQAJAIAEQsRYiBEUNACAEKAIAQSRGDQEgAUEEaiEEIAEQ8zEhBiABLQDUAkECRg0CDAQLIAEoArACIQEgA0GAgICAeDYCsAcgASABIANBsAdqEP4iIQEMAgsgASABKQMYNwNQIAEoAgAhBCABQSU2AgACQCAEQSRHDQAgASgCBCEBDAILQZTOoQFBKEHY4ZkBENMnAAsgA0H4A2pBEGpBACkD8LyZATcDACADQfgDakEIakEAKQPovJkBNwMAIANBACkD4LyZATcD+AMCQAJAAkACQCABELEWIANB+ANqEMs1RQ0AIAEgASkDGDcDUCABKAIAIQcgAUElNgIAIANBvAdqIARBCGopAgA3AgAgA0HEB2ogBEEQaigCADYCACADIAQpAgA3ArQHIAMgBzYCsAcgA0GwB2oQ4hAgA0H4A2oQ4hAgA0H4A2ogAigCBCACKAIIEKQTIANBsAdqIAEgBiADQfgDahCxASADKAK0ByEGIAMoArAHIgdBCUYNASADQYABakEgaiADQbAHakEgaikDADcDACADQYABakEYaiADQbAHakEYaikDADcDACADQYABakEQaiADQbAHakEQaikDADcDACADIAMpA7gHNwOIASADIAY2AoQBIAMgBzYCgAEgB0EIRg0CIAEoAlQhASADQbAHakEEaiADQYABakEoEN8KGiAAQQE2AgAgAEEEaiADQbAHakEsEN8KGiAAIAUgASAFIAFLGzYCNCAAIAUgASAFIAFJGzYCMAwHCyADQfgDahDiEAwCCyAAQQk2AgAgACAGNgIEDAULIANBgAFqEJIMCyABLQDUAkECRw0BAkAgARCxFiIGRQ0AIAYoAgBBAkcNAAJAAkAgARCxFiIGDQAgASgC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oQE2AvgDIANCATcChAQgA0GiAjYCpAMgA0EAKQOgvpkBNwOwByADIANBoANqNgKABCADIANB6ANqNgKgAyADIANBsAdqNgLoAyADQYgHaiADQfgDahDmIiADQbAHahDiECADQYgHakEUaiADQeABakEIaigCADYCACADIAMpAuABNwKUByAFIAQgA0GIB2oQ/iIhBAJAIAEQsRYiBUUNACAFKAIAQSRHDQAgASABKQMYNwNQIAEoAgAhBSABQSU2AgAgBUEkRw0EIAEgASgCBBDjEwsgAEEJNgIAIAAgBDYCBAwLCyABIAEpAxg3A1AgASgCACEGIAFBJTYCACAJIARBCGopAgA3AgAgCiAEQRBqKAIANgIAIAMgBCkCADcCtAcgAyAGNgKwByADQbAHahDiECADQfgDahDiECADQbAHaiABQQBBABDuASADKAKwByEEIAMtAMQHIgZBAkYNAyADQfgDakEIaiADQbAHakEQaigCADYCACADQYgHakECaiADQccHai0AADoAACADIAMpA7gHNwP4AyADIAMvAMUHOwGIByADKAK0ByEHAkAgARD3ESIIDQAgACAHNgIUIAAgBDYCECAAIAMpA/gDNwMYIAAgBjoAJCAAIAMvAYgHOwAlIABBCDYCACAAQSBqIANB+ANqQQhqKAIANgIAIABBJ2ogA0GKB2otAAA6AAAgACAFIAEoAlQiASAFIAFLGzYCDCAAIAUgASAFIAFJGzYCCAwLCyAAQQk2AgAgACAINgIEIAetQiCGIASthBDSHwwKCyABIAEpAxg3A1AgASgCACEGIAFBJTYCACADQbwHaiAEQQhqKQIANwIAIANBxAdqIARBEGooAgA2AgAgAyAEKQIANwK0ByADIAY2ArAHIANBsAdqEOIQIANB+ANqEOIQIANBEGogARCICCADKAIUIQQCQCADKAIQRQ0AIABBCTYCACAAIAQ2AgQMCgsgAyAENgKwByABEPcRIgZFDQQgAEEJNgIAIAAgBjYCBCADQbAHahC/BAwJCwJAIAEQsRYiBg0AIAEoArACIQEgA0GAgICAeDYCsAcgASABIANBsAdqEP4iIQEMAwsCQCAGKAIAQSRHDQAgASABKQMYNwNQIAEoAgAhBCABQSU2AgACQCAEQSRHDQAgASgCBCEBDAQLQZTOoQFBKEHY4ZkBENMnAAsgASABKQMYNwNQIAEoAgAhBiABQSU2AgAgA0G8B2ogBEEIaikCADcCACADQcQHaiAEQRBqKAIANgIAIAMgBCkCADcCtAcgAyAGNgKwByADQbAHahDiEEH4vJkBEOIQQQEhCAwEC0GUzqEBQShB2OGZARDTJwALIABBCTYCACAAIAQ2AgQMBgsgAEEJNgIAIAAgATYCBEH4vJkBEOIQDAULIAAgBDYCBCAAQQc2AgAgACAFIAEoAlQiASAFIAFLGzYCDCAAIAUgASAFIAFJGzYCCAwECyADQbAHaiABEIYIIAMoArgHIQQCQCADKQOwByIvUA0AIAMgAygCvAc2AtwBIAMgBDYC2AEgAyAvNwPQASADQbAHaiADQdABahD+FyADQQhqIAEgBSADQbAHakEBIAgQzgEgAygCCCEBIAAgAygCDDYCBCAAQQlBBiABQQFxGzYCAAwECyAAQQk2AgAgACAENgIEDAMLIABBCTYCACAAIAE2AgQMAgsgARDzMSEIAkACQCABLQDUAkECRw0AQQAhByADQfgDakEQakEAKQOIvZkBNwMAIANB+ANqQQhqQQApA4C9mQE3AwAgA0EAKQP4vJkBNwP4AwJAIAEQsRYgA0H4A2oQyzVFDQAgASABKQMYNwNQIAEoAgAhBiABQSU2AgAgA0G8B2ogBEEIaikCADcCACADQcQHaiAEQRBqKAIANgIAIAMgBCkCADcCtAcgAyAGNgKwByADQbAHahDiECADQfgDahDiEEEBIQtBAiEMDAILIANB+ANqEOIQC0EAIQcgA0H4A2pBEGpBACkDoL2ZATcDACADQfgDakEIakEAKQOYvZkBNwMAIANBACkDkL2ZATcD+AMCQAJAIAEQsRYgA0H4A2oQyzUNACADQfgDahDiEEECIQwMAQsgASABKQMYNwNQIAEoAgAhBiABQSU2AgAgA0G8B2ogBEEIaikCADcCACADQcQHaiAEQRBqKAIANgIAIAMgBCkCADcCtAcgAyAGNgKwByADQbAHahDiECADQfgDahDiECADQbAHakEQakEAKQO4vZkBNwMAIANBsAdqQQhqQQApA7C9mQE3AwAgA0EAKQOovZkBNwOwByABELEWIANBsAdqEMs1IQYgA0GwB2oQ4hACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAZFDQAgARDzMSEJIANBsAdqIAFBABCTAiADKAK0ByEGIAMoArAHIgdBgICAgHhGDQEgAyADKAK4BzYC+AEgAyAGNgL0ASADIAc2AvABAkAgAigCCEUNACABKAJUIQQgA0G0gYCAeDYCsAcgCSAEIAkgBEkbIAkgBCAJIARLGyADQbAHahD+IiEEAkAgARCxFiIFRQ0AIAUoAgBBJEcNACABIAEpAxg3A1AgASgCACEFIAFBJTYCACAFQSRHDQQgASABKAIEEOMTCyAAQQk2AgAgACAENgIEIANB8AFqEJ03DBILIAIQnTcgAkEIaiADQfABakEIaigCADYCACACIAMpAvABNwIACyABLQDUAkECRw0EIANBwAdqIgdBACkD0L2ZASIvNwMAIANBuAdqIglBACkDyL2ZASIuNwMAIANBACkDwL2ZASIwNwOwByABELEWIANBsAdqEMs1IQYgA0GwB2oQ4hAgBkUNAyABEMIeIgZFDQMgA0HAB2pBACkDyLuZATcDACADQbgHakEAKQPAu5kBNwMAIANBACkDuLuZATcDsAcgA0GwB2ogBhCIByEGIANBsAdqEOIQIAZFDQMgARC6Mg0DIAEQ8zEhBwJAIAEQsRYiBg0AIAEoArACIQEgA0GAgICAeDYCsAcgASABIANBsAdqEP4iIQEMAwsCQCAGKAIAQSRHDQAgASABKQMYNwNQIAEoAgAhBCABQSU2AgACQCAEQSRHDQAgASgCBCEBDAQLQZTOoQFBKEHY4ZkBENMnAAsgASABKQMYNwNQIAEoAgAhBiABQSU2AgAgA0G8B2ogBEEIaikCADcCACADQcQHaiAEQRBqKAIANgIAIAMgBCkCADcCtAcgAyAGNgKwByADQbAHahDiEEHAvZkBEOIQAkACQAJAAkAgARCxFiIERQ0AIAQoAgBBJEcNAiABIAEpAxg3A1AgASgCACEEIAFBJTYCACAEQSRHDQMgASgCBCEBDAELIAEoArACIQEgA0GAgICAeDYCsAcgASABIANBsAdqEP4iIQELIABBCTYCACAAIAE2AgQMEgsgA0H4A2ogASAFIAcgAkEBEL0JQQMhAQJAAkAgAygC+ANBA0YNACADQbAHakEEaiADQfgDakEwEN8KGiAAQQRqIANBsAdqQTQQ3woaDAELIAAgAygC/AM2AgRBCSEBCyAAIAE2AgAMEgtBlM6hAUEoQdjhmQEQ0ycACyAAQQk2AgAgACAGNgIEDA8LQZTOoQFBKEHY4ZkBENMnAAsgAEEJNgIAIAAgATYCBEHAvZkBEOIQDA0LIAcgLzcDACAJIC43AwAgAyAwNwOwByABELEWIANBsAdqEMs1IQYgA0GwB2oQ4hACQCAGRQ0AIAEQwh4iBkUNACADQcAHakEAKQOQxpkBNwMAIANBuAdqQQApA4jGmQE3AwAgA0EAKQOAxpkBNwOwByADQbAHaiAGEIgHIQYgA0GwB2oQ4hAgBkUNACADQfgAaiABEPsgIAMoAnwhBiADKAJ4IQcgA0GegYCAeDYCsAcgASAHIAYgA0GwB2oQiCoCQAJAIAEQsRYiBg0AIAEoArACIQEgA0GAgICAeDYCsAcgASABIANBsAdqEP4iIQEMAQsCQCAGKAIAQSRHDQAgASABKQMYNwNQIAEoAgAhBCABQSU2AgACQCAEQSRHDQAgASgCBCEBDAILQZTOoQFBKEHY4ZkBENMnAAsgASABKQMYNwNQIAEoAgAhBiABQSU2AgAgA0G8B2ogBEEIaikCADcCACADQcQHaiAEQRBqKAIANgIAIAMgBCkCADcCtAcgAyAGNgKwByADQbAHahDiEEHAvZkBEOIQDAELIABBCTYCACAAIAE2AgRBwL2ZARDiEAwNCyADQcAHakEAKQOQxpkBNwMAIANBuAdqQQApA4jGmQE3AwAgA0EAKQOAxpkBNwOwByABELEWIANBsAdqEMs1IQYgA0GwB2oQ4hAgBg0BCyADQcAHaiIHQQApA8i7mQE3AwAgA0G4B2oiCUEAKQPAu5kBNwMAIANBACkDuLuZATcDsAcgARCxFiADQbAHahDLNSEGIANBsAdqEOIQIAYNAiAHQQApA+i9mQE3AwAgCUEAKQPgvZkBNwMAIANBACkD2L2ZATcDsAcgARCxFiADQbAHahDLNSEGIANBsAdqEOIQIAZFDQcgARDCHiIGRQ0HIANBwAdqQQApA7C7mQE3AwAgA0G4B2pBACkDqLuZATcDACADQQApA6C7mQE3A7AHIANBsAdqIAYQiAchBiADQbAHahDiECAGDQEMBwsgARDzMSEHAkAgARCxFiIGDQAgASgCsAIhASADQYCAgIB4NgKwByABIAEgA0GwB2oQ/iIhAQwGCyAGKAIAQSRHDQIgASABKQMYNwNQIAEoAgAhBCABQSU2AgACQCAEQSRHDQAgASgCBCEBDAYLQZTOoQFBKEHY4ZkBENMnAAsgARC6Mg0FIAEQ8zEhBiADQYgHakEQakEAKQPovZkBIi83AwAgA0GIB2pBCGpBACkD4L2ZASIuNwMAIANBACkD2L2ZASIwNwOIBwJAIAEQsRYgA0GIB2oQyzUNACADQYgHahDiECADQfAAaiABEPsgIAMoAnQhBCADKAJwIQUgA0HoA2ogARDfGiADQfgDakEQaiAvNwMAIANB+ANqQQhqIC43AwAgA0EBNgKMByADQaTXoQE2AogHIANCATcClAcgA0GiAjYC1AMgAyAwNwP4AyADIANB0ANqNgKQByADIANBuANqNgLQAyADIANB+ANqNgK4AyADQaADaiADQYgHahCZFiADQfgDahDiECADQbQDaiADQegDakEIaigCADYCACADIAMpAugDNwKsAyAFIAQgA0GgA2oQ/iIhBAJAIAEQsRYiBUUNACAFKAIAQSRHDQAgASABKQMYNwNQIAEoAgAhBSABQSU2AgAgBUEkRw0EIAEgASgCBBDjEwsgAhCdNwwECyABIAEpAxg3A1AgASgCACEHIAFBJTYCACADQYQEaiAEQQhqKQIANwIAIANBjARqIARBEGooAgA2AgAgAyAEKQIANwL8AyADIAc2AvgDIANB+ANqEOIQIANBiAdqEOIQIANBsAdqIAEgBUEBIAYgAhCXECADKAK0ByEEIAMoArAHIgFBA0YNAyAAQRBqIANBuAdqQSgQ3woaIAAgBDYCDCAAIAE2AgggAEEDNgIADAoLIANBsAdqIAEgBSABEPMxIAJBABC9CSADKAK0ByEBAkAgAygCsAciAkEDRg0AIABBEGogA0G4B2pBKBDfChogACABNgIMIAAgAjYCCCAAQQM2AgAMCgsgAEEJNgIAIAAgATYCBAwJCyABIAEpAxg3A1AgASgCACEGIAFBJTYCACADQbwHaiAEQQhqKQIANwIAIANBxAdqIARBEGooAgA2AgAgAyAEKQIANwK0ByADIAY2ArAHIANBsAdqEOIQQYDGmQEQ4hAgA0HgAGogASAHEPoDIAMoAmQhBAJAIAMoAmBBAXENACAAIAQ2AgwgAEECNgIIIABBAzYCACAAIAUgASgCVCIBIAUgAUsbNgI0IAAgBSABIAUgAUkbNgIwDAgL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A2oQ4hAgA0EwaiABEPsgIAMoAjQhBCADKAIwIQUgA0HgAmogARDfGiADQbAHakEQaiAvNwMAIANBsAdqQQhqIC43AwAgA0EBNgL8AyADQaTXoQE2AvgDIANCATcChAQgA0GiAjYCpAMgAyAwNwOwByADIANBoANqNgKABCADIANB6ANqNgKgAyADIANBsAdqNgLoAyADQYgHaiADQfgDahDmIiADQbAHahDiECADQZwHaiADQeACakEIaigCADYCACADIAMpAuACNwKUByAFIAQgA0GIB2oQ/iIhBAJAIAEQsRYiBUUNACAFKAIAQSRHDQAgASABKQMYNwNQIAEoAgAhBSABQSU2AgAgBUEkRw0CIAEgASgCBBDjEwsgAEEJNgIAIAAgBDYCBAwDCyABIAEpAxg3A1AgASgCACEGIAFBJTYCACADQbwHaiIXIARBCGoiGCkCADcCACADQcQHaiAEQRBqIhkoAgA2AgAgAyAEKQIANwK0ByADIAY2ArAHIANBsAdqEOIQIANB+ANqEOIQIANBsAdqQQRyIQggA0H5B2ohGiADQe0HaiEbIANB3AdqIRwgA0HNB2ohHSADQbAHakEVaiEeIANB+ANqQRVqIR8gA0H4A2pBBHIhICADQYgHakEVaiEhIANBiAdqQQRyISIDQAJAAkACQCABELEWRQ0AIANBsAdqQRBqIiNBACkD+MOZASIxNwMAIANBsAdqQQhqIiRBACkD8MOZASIyNwMAIANBACkD6MOZASIzNwOwByABELEWIANBsAdqEMs1IQYgA0GwB2oQ4hAgBg0AIAEQ8zEhBiADQbAHaiABELIIIAMoArgHIRACQAJAAkAgAykDsAciMEICUQ0AIAMpA8gHIS8gAykDwAchLiADKAK8ByEJAkACQCAwp0EBcUUNAEEAISUMAQsgAyAvNwOwAyADIC43A6gDIAMgCTYCpAMgAyAQNgKgAwJAAkAgAS0A1AJBAkcNACADQaADakHUj6EBQQQQlixFDQAgARCxFiIJRQ0AIAkoAgBBAkcNACADQfgDaiABEIYIIANBsAdqIANB+ANqEJowIAMoArAHIRACQAJAAkACQCADLQDEByIJQQJGDQAgIiAIKQIANwIAICEgHi8AADsAACAiQQhqIAhBCGoiJikCADcCACAhQQJqIB5BAmoiJy0AADoAACADIAk6AJwHIAMgEDYCiAcCQAJAAkACQAJAAkAgA0GIB2pB2I+hAUECEJYsDQAgCw0BDAkLAkAgARCxFiIJRQ0AIAkoAgBBAkYNAwsgCw0BDAMLIAMoAqwDIQkgAygCqAMhCiADQaeBgIB4NgKwByABIAogCSADQbAHahCIKgwHCyADKAKsAyEJIAMoAqgDIQogA0GngYCAeDYCsAcgASAKIAkgA0GwB2oQiCoMAQsgA0G4A2ogARCGCCADQbAHaiADQbgDahCaMCADKAKwByEQIAMtAMQHIglBAkYNASAgIAgpAgA3AgAgHyAeLwAAOwAAICBBCGoiKCAmKQIANwIAIB9BAmoiKSAnLQAAOgAAIAMgCToAjAQgAyAQNgL4AwJAAkAgA0H4A2pB2I+hAUECEJYsDQAgBiADKAKsAyIJIAYgCUkbISogBiAJIAYgCUsbIQoMAQsCQAJAIAEQsRYiCUUNACAJKAIAQQJGDQELIAYgAygCrAMiCSAGIAlJGyEqIAYgCSAGIAlLGyEKDAELIANBuANqIAEQhgggA0GwB2ogA0G4A2oQmjAgAygCsAchKAJAAkAgAy0AxAciKUECRg0AIANB0ANqQQhqIgkgJikCADcDACADQcwDakECaiIKICctAAA6AAAgAyAIKQIANwPQAyADIB4vAAA7AcwDIAtFDQEgAygCrAMhECADKAKoAyEPIANBp4GAgHg2ArAHIAEgDyAQIANBsAdqEIgqDAELIAMpA/gDENIfIAMpA4gHENIfQgIhMCAoIRAMBQsgA0H4AmpBCGogCSkDADcDACADQfQCakECaiAKLQAAOgAAIAMgAykD0AM3A/gCIAMgAy8BzAM7AfQCIAMpA5gHIS8gAykDkAchLiADKAKMByEJIAMoAogHIRAgAygCrAMhCiADKQP4AxDSHyAGIAogBiAKSRshKiAGIAogBiAKSxshCkEBISVCACEwQgAhNCAoIQ8gKSErDAULIAMpA7ADIS8gAykDqAMhLiADKAKkAyEJIANB+AJqQQhqICgpAgA3AwAgA0H0AmpBAmogKS0AADoAACADICApAgA3A/gCIAMgHy8AADsB9AIgAygCoAMhECADKAL4AyEPIAMtAIwEISsgAykDiAcQ0h9CACE0QQAhJUIAITAMCwsgBiABKAJUIgkgBiAJSRshKiAGIAkgBiAJSxshCkEBISVCAiE0QgAhMCADKQOYByEvIAMpA5AHIS4gAygCjAchCSADKAKIByEQDAMLIAMpA4gHENIfC0ICITALICwhCSA1IS4gNiEvCyADKQOgAxDSHyAwQgJRDQQMBgsgAykDmAchLyADKQOQByEuIAMoAowHIQkgAygCiAchECADKQOgAxDSH0EBISUMAQtBACElIAMpA7ADIS8gAykDqAMhLiADKAKkAyEJIAMoAqADIRALQgAhMAsgFUEAKQP4u5kBNwMAIBZBACkD8LuZATcDACADQQApA+i7mQE3A/gDAkAgARCxFiADQfgDahDLNQ0AIANB+ANqEOIQQgIhNAwCCyAIIAQpAgA3AgAgASABKQMYNwNQIAEoAgAhCiABQSU2AgAgCEEIaiAYKQIANwIAIAhBEGogGSgCADYCACADIAo2ArAHIANBsAdqEOIQIANB+ANqEOIQIANBsAdqIAEQsgggAygCuAchDwJAIAMpA7AHIjRCAlENACADQegDakEIaiAXQQhqKQIANwMAIANB5ANqQQJqIB1BAmotAAA6AAAgAyAXKQIANwPoAyADIB0vAAA7AeQDIAMtAMwHIS0MAgsgCa1CIIYgEK2EIS4CQAJAIDBCAFINACAuENIfDAELIC4gLxC5OwsgDyEQCyAAQQk2AgAgACAQNgIEDAgLIANB+AJqQQhqIANB6ANqQQhqKQMANwMAIANB9AJqQQJqIANB5ANqQQJqLQAAOgAAIAMgAykD6AM3A/gCIAMgAy8B5AM7AfQCIAYgASgCVCIKIAYgCkkbISogBiAKIAYgCksbIQogLSErCyAcIAMpA/gCNwIAIBsgAy8B9AI7AAAgHEEIaiADQfgCakEIaikDADcCACAbQQJqIANB9AJqQQJqLQAAOgAAIAMgDzYC2AcgAyA0NwPQByADIC83A8gHIAMgLjcDwAcgAyAJNgK8ByADICs6AOwHIAMgJToA+AcgAyAKNgL0ByADICo2AvAHIBogAygA7QI2AAAgGkEDaiADQe0CakEDaigAADYAACADIDA3A7AHIAMgEDYCuAcgA0GwAmogA0GwB2oQ6iogIyAxNwMAICQgMjcDACADIDM3A7AHIAEQsRYgA0GwB2oQyzUhBiADQbAHahDiECAGDQAgFUEAKQOYjqEBNwMAIBZBACkDkI6hATcDACADQQApA4iOoQE3A/gDIAEQsRYgA0H4A2oQyzUNAiADQfgDahDiECADQShqIAEQ+yAgAygCLCEEIAMoAighBSADQYgDaiABEN8aIANBwAdqQQApA5iOoQE3AwAgA0GwB2pBCGpBACkDkI6hATcDACADQQE2AvwDIANBpNehATYC+AMgA0IBNwKEBCADQaICNgKkAyADQQApA4iOoQE3A7AHIAMgA0GgA2o2AoAEIAMgA0HoA2o2AqADIAMgA0GwB2o2AugDIANBiAdqIANB+ANqEOYiIANBsAdqEOIQIANBnAdqIANBiANqQQhqKAIANgIAIAMgAykCiAM3ApQHIAUgBCADQYgHahD+IiEEAkAgARCxFiIFRQ0AIAUoAgBBJEcNACABIAEpAxg3A1AgASgCACEFIAFBJTYCACAFQSRHDQIgASABKAIEEOMTCyAAQQk2AgAgACAENgIEDAYLIANB+ANqQRBqQQApA/jDmQEiLzcDACADQfgDakEIakEAKQPww5kBIi43AwAgA0EAKQPow5kBIjA3A/gDAkACQCABELEWIANB+ANqEMs1DQAgA0H4A2oQ4hAgA0EgaiABEPsgIAMoAiQhBCADKAIgIQUgA0GUA2ogARDfGiADQbAHakEQaiAvNwMAIANBsAdqQQhqIC43AwAgA0EBNgL8AyADQaTXoQE2AvgDIANCATcChAQgA0GiAjYCpAMgAyAwNwOwByADIANBoANqNgKABCADIANB6ANqNgKgAyADIANBsAdqNgLoAyADQYgHaiADQfgDahDmIiADQbAHahDiECADQZwHaiADQZQDakEIaigCADYCACADIAMpApQDNwKUByAFIAQgA0GIB2oQ/iIhBAJAIAEQsRYiBUUNACAFKAIAQSRHDQAgASABKQMYNwNQIAEoAgAhBSABQSU2AgAgBUEkRw0CIAEgASgCBBDjEwsgAEEJNgIAIAAgBDYCBAwHCyABIAEpAxg3A1AgASgCACEGIAFBJTYCACADQbwHaiAEQQhqKQIANwIAIANBsAdqQRRqIARBEGooAgA2AgAgAyAEKQIANwK0ByADIAY2ArAHIANBsAdqEOIQIANB+ANqEOIQIANBsAdqQRBqQQApA+C7mQE3AwAgA0GwB2pBCGpBACkD2LuZATcDACADQQApA9C7mQE3A7AHIAEQsRYgA0GwB2oQyzUhBCADQbAHahDi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AzcDQCADIAU2AjwgAyAENgI4AkAgBEEIRg0AIANBiANqQQxqIANBOGpBCGopAwA3AgAgA0GIA2pBFGogCykDADcCACADQYgDakEcaiAJKQMANwIAIANBiANqQSRqIAgpAwA3AgAgAEEBNgIAIAMgAykDODcCjAMgACADKQKIAzcCBCAAQQxqIANBiANqQQhqKQIANwIAIABBFGogDCkCADcCACAAQRxqIAopAgA3AgAgAEEkaiAHKQIANwIAIABBLGogA0GwA2ooAgA2AgAgACAGIAEoAtQCIgEgBiABSxs2AjQgACAGIAEgBiABSRs2AjAMGAsgA0E4ahD/AwwFC0GchJsBEOoiAAtBjISbARDpIgALQfyDmwEQ6SIACyAAQQk2AgAgACAFNgIEDBMLIABBCTYCACAAIAE2AgQMEgsgAS0AmAJBAkcNAAJAIAEQ7Q4iBUUNAAJAAkAgBS0AACIEQbp/aiIFQR9LDQBBASAFdEGBgIKQeHENAQsgBEG5f2pB/wFxQdMATw0BCwJAAkAgARDtDiIFDQAgASgC/AEhASADQYCAgIB4NgKIAyABIAEgA0GIA2oQ/iIhAQwBCwJAIAUtAAAiBUGbAUYNAAJAIAVBACABQQhqIAEoAghBCUYbEMsHIiNCAFENACADQYgDaiACKAIEIAIoAggQ0wsgA0HgAGogASADQYgDaiAjENcFAkAgAygCYEEIRg0AIANBiANqQQxqIANB4ABqQQhqKQMANwIAIANBiANqQRRqIANB4ABqQRBqKQMANwIAIANBiANqQRxqIANB4ABqQRhqKQMANwIAIANBiANqQSRqIANB4ABqQSBqKQMANwIAIABBATYCACADIAMpA2A3AowDIAAgAykCiAM3AgQgAEEMaiADQYgDakEIaikCADcCACAAQRRqIANBiANqQRBqKQIANwIAIABBHGogA0GIA2pBGGopAgA3AgAgAEEkaiADQYgDakEgaikCADcCACAAQSxqIANBsANqKAIANgIAIAAgBiABKALUAiIBIAYgAUsbNgI0IAAgBiABIAYgAUkbNgIwDBYLIANB4ABqEP8DDAMLQdzamgEQ/TkACyABQQI6AOECIAEgASkD2AI3A9ACIAEQ3xghAQsgAEEJNgIAIAAgATYCBAwSCyABLQCYAkECRw0AAkAgARDtDiIFRQ0AIAUtAABB2gBGDQILAkAgARDtDiIFRQ0AIAUtAABBF0YNCAsgARDtDiIFRQ0AIAUtAABB8ABGDQILIAEQ7Q4aIAFB1AJB2AIgAS0A4QJBAkYbaigCACEIIAEtAJgCQQJHDQIgARDtDiIFRQ0CIAUtAABBkAFHDQJBAiEEIAFBAjoA4QIgASABKQPYAjcD0AJBACEKQQEhDUEBIQ4MAwsgAUECOgDhAiABIAEpA9gCNwPQAkEAIQQgARDtDiIFRQ0OIAUtAABBkAFHDQ4gARDHCiIFRQ0OAkAgBS0AACIIQbp/aiIFQR9LDQBBASAFdEGBgIKQeHENBwsgCEG5f2pB/wFxQdMASQ0GDA4LIAFBAjoA4QIgASABKQPYAjcD0AICQCABEO0OIgVFDQAgBS0AAEGBAUYNBAsgAUHUAmogAUHcAmogAS0A4QJBAkYiBhsoAgAhBSABQdACaiABQdgCaiAGGygCACEGIANBmAFqIAEQygsgA0EBNgKMAyADQaTXoQE2AogDIANCATcClAMgA0HoBDYCxAMgA0GBAToA+AMgAyADQcADajYCkAMgAyADQZAEajYCwAMgAyADQfgDajYCkAQgA0GoAWogA0GIA2oQqhMgA0G8AWogA0GgAWooAgA2AgAgAyADKQKYATcCtAEgBiAFIAYgBUkbIAYgBSAGIAVLGyADQagBahD+IiEFAkAgARDtDiIGRQ0AIAYtAABBmwFHDQAgAUECOgDhAiABIAEpA9gCNwPQAiABIAEQ3xgQ9RgLIABBCTYCACAAIAU2AgQMDgtBAiEEQQEhDkEAIQ0CQCABEO0OIgVFDQAgBS0AAEHPAEYNAgtBACEKCwwKCyABQQI6AOECIAEgASkD2AI3A9ACAkAgARDtDiIFRQ0AIAUtAABBGEcNACABEO0OGiABQdQCQdgCIAEtAOECQQJGG2ooAgAhByADQYgDaiABQQAQ7AEgAygCjAMhBSADKAKIAyIEQYCAgIB4Rg0EIAMoApADIQkCQCACKAIIRQ0AIAEoAtQCIQYgA0G0gYCAeDYCiAMgByAGIAcgBkkbIAcgBiAHIAZLGyADQYgDahD+IiEGAkAgARDtDiIIRQ0AIAgtAABBmwFHDQAgAUECOgDhAiABIAEpA9gCNwPQAiABIAEQ3xgQ9RgLIABBCTYCACAAIAY2AgQgBSAJEJotIAQgBRDcMwwNCyACKAIEIgdBABCaLSACKAIAIAcQ3DMgAiAJNgIIIAIgBTYCBCACIAQ2AgALIAEtAJgCQQJHDQggARDtDiIFRQ0HIAUtAABB7gBHDQcgARDHCiIFRQ0HIAUtAABBywBHDQcgARC0Cg0HIAEQ7Q4aIAFB1AJB2AIgAS0A4QJBAkYbaigCACEEAkACQAJAIAEQ7Q4iBQ0AIAEoAvwBIQEgA0GAgICAeDYCiAMgASABIANBiANqEP4iIQEMAQsgBS0AAEGbAUcNASABQQI6AOECIAEgASkD2AI3A9ACIAEQ3xghAQsgAEEJNgIAIAAgATYCBAwMCyABQQI6AOECIAEgASkD2AI3A9ACAkACQAJAIAEQ7Q4iBUUNACAFLQAAQZsBRw0CIAFBAjoA4QIgASABKQPYAjcD0AIgARDfGCEBDAELIAEoAvwBIQEgA0GAgICAeDYCiAMgASABIANBiANqEP4iIQELIABBCTYCACAAIAE2AgQMDAsgA0GoAWogASAGIAQgAkEBEKcHAkAgAygCqAFBA0YNACADQYgDakEMaiADQagBakEIaikDADcCACADQYgDakEUaiADQagBakEQaikDADcCACADQYgDakEcaiADQagBakEYaikDADcCACADQYgDakEkaiADQagBakEgaikDADcCACADQYgDakEsaiADQagBakEoaikDADcCACADIAMpA6gBNwKMAyAAIAMpAogDNwIEIABBDGogA0GIA2pBCGopAgA3AgAgAEEUaiADQYgDakEQaikCADcCACAAQRxqIANBiANqQRhqKQIANwIAIABBJGogA0GIA2pBIGopAgA3AgAgAEEsaiADQYgDakEoaikCADcCACAAQTRqIANBuANqKAIANgIAIABBAzYCAAwNCyAAIAMoAqwBNgIEIABBCTYCAAwMCyABQQI6AOECIAEgASkD2AI3A9ACIANBiANqIAFBAEEAEKcCIAMoAogDIQUgAy0AnAMiBEECRg0DIANBqAFqQQhqIgggA0GYA2ooAgA2AgAgA0HAA2pBAmogA0GfA2otAAA6AAAgAyADKQOQAzcDqAEgAyADLwCdAzsBwAMgAzUCjANCIIYgBa2EISMCQCABEMwMIgUNACAAIAMpA6gBNwMYIAAgAy8BwAM7ACUgACAEOgAkIAAgIzcDECAAQQg2AgAgAEEgaiAIKAIA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IANBiANqQSBqKQMANwMAIABBIGogA0GIA2pBGGopAwA3AwAgAEEYaiADQZgDaikDADcDACAAIAE2AgwgACAFNgIIIABBAzYCAAwFCyAAQQk2AgAgACABNgIEDAQLIAAgBTYCBCAAQQQ2AgAgACAGIAEoAtQCIgEgBiABSxs2AgwgACAGIAEgBiABSRs2AggMAgsCQAJAIAEQ7Q4iBUUNACAFLQAAQRhHDQAgARDtDhogAUHUAkHYAiABLQDhAkECRhtqKAIAIQwgA0GIA2ogAUEAEOwBIAMoAowDIQUCQAJAAkAgAygCiAMiC0GAgICAeEYNACADKAKQAyEPIAIoAghFDQIgASgC1AIhBiADQbSBgIB4NgKIAyAMIAYgDCAGSRsgDCAGIAwgBksbIANBiANqEP4iIQYCQCABEO0OIgRFDQAgBC0AAEGbAUcNACABQQI6AOECIAEgASkD2AI3A9ACIAEgARDfGBD1GAsgAEEJNgIAIAAgBjYCBCAFIA8Qmi0gCyAFENwzDAELIABBCTYCACAAIAU2AgQLQQEhASAODQQMAgsgAigCBCIMQQAQmi0gAigCACAMENwzIAIgDzYCCCACIAU2AgQgAiALNgIACwJAAkACQAJAIA0NAAJAIAEQ7Q4iBUUNACAFLQAAQcsARw0AIAEQ7Q4aQQAhByADQYgDaiABIAYgAUHUAkHYAiABLQDhAkECRhtqKAIAIAJBABCPBiADKAKMAyEEAkAgAygCiAMiCEEIRg0AIANB2AFqQRhqIANBqANqKQMANwMAIANB2AFqQRBqIANBiANqQRhqKQMANwMAIANB2AFqQQhqIANBiANqQRBqKQMANwMAIAMgAykDkAM3A9gBDAQLIABBCTYCAAwCCwJAIAEQ7Q4iBUUNACAFLQAAQfMARw0AIAEQxwoiBUUNACAFLQAAQdgARw0AIAEQtAoNACADQYgDaiABIAIQiwogAygCjAMhBAJAIAMoAogDIghBCEYNACADQdgBakEYaiADQagDaikDADcDACADQdgBakEQaiADQYgDakEYaikDADcDACADQdgBakEIaiADQYgDakEQaikDADcDACADIAMpA5ADNwPYAUEAIQcMBAsgAEEJNgIADAILAkAgARDtDiIFRQ0AIAUtAABB2ABHDQAgA0GoAWpBCGogAkEIaigCADYCACADIAIp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AtQCIgQgBSAESRshHyAFIAQgBSAESxshIEEBIQlCAiEmQgAhIyADKAL4AyEEDAILIBggAykD+AM3AwAgGEEQaiADQfgDakEQaikDADcDACAYQQhqIANB+ANqQQhqKQMANwMAIANCADcDwAMgAykD4AMQ0B9BASEHDAULQgIhIwsgAykD4AMiJ0IDg0IAUg0AIAMgJ6ciBTYCiAMgA0GIA2oQ9QcgBSAFKAIAIgdBf2o2AgACQCAHQQFHDQAgBSAFKAIgENMvCyADKQOoASElCyAlp0EBcUUNBCADQagBahDUGQwECyAYIAMpA+ADNwMAIBhBEGogBCkDADcDACAYQQhqIAcpAwA3AwAgA0IANwPAAwtBACEHCyABEO0OIgRFDQIgBC0AAEHwAEcNAiABQQI6AOECIAEgASkD2AI3A9ACIANBiANqIAEQuQQgAygCkAMhBAJAIAMpA4gDIiNCAlENACAIIAopAgA3AwAgA0GQBGpBAmogEUECai0AADoAACADIBIpAgA3A6gBIAMgES8AADsBkAQgAy0ApAMhDyAEISEgIyEmDAQLIANBwANqENQZC0ICISMLIAkhBwwCCyAiIQ9CAiEmCyADQdgCakEIaiAQQQhqKQIANwMAIANB2AJqQRBqIBBBEGooAgA2AgAgA0HIAmpBCGogCCkDADcDACADQcQCakECaiADQZAEakECai0AADoAACADIAMpA6gBNwPIAiADIAMvAZAEOwHEAiADIBApAgA3A9gCIAUgASgC1AIiBCAFIARJGyEfIAUgBCAFIARLGyEgIAMoAsgDIQQgAykDwAMhIyAPISILICNCAlENBCADQYgDakEQaiIKIANB2AJqQRBqKAIANgIAIANBiANqQQhqIgsgA0HYAmpBCGopAwA3AwAgAyADKQPYAjcDiAMgCCADQcgCakEIaikDADcDACADIAMpA8gCNwOoASADQZAEakECaiIMIANBxAJqQQJqLQAAOgAAIAMgAy8BxAI7AZAEIAMgHCgAADYAwwMgAyADKAC9AjYCwAMCQCADKAKIAiIJIAMoAoACRw0AIANBgAJqEJcOCyADKAKEAiAJQdAAbGoiBSAENgIIIAUgIzcDACAFIAMpA4gDNwIMIAUgITYCKCAFICY3AyAgBSADKQOoATcCLCAFIA86ADwgBSADLwGQBDsAPSAFQRRq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IARBGGogAkGQAWpBGGopAwA3AwAgBEEQaiACQZABakEQaikDADcDACAEQQhqIAJBkAFqQQhqKQMANwMAIAQgAikDkAE3AwAgACADOgAQIAAgEzcDCCAAIAQ2AgQgAEEQNgIADCoLIAEpAgQhEyABLwEQIQMQrjIhBCACQZABaiABKAIMED8gBEE4aiACQZABakE4aikDADcDACAEQTBqIAJBkAFqQTBqKQMANwMAIARBKGogAkGQAWpBKGopAwA3AwAgBEEgaiACQZABakEgaikDADcDACAEQRhqIAJBkAFqQRhqKQMANwMAIARBEGogAkGQAWpBEGopAwA3AwAgBEEIaiACQZABakEIaikDADcDACAEIAIpA5ABNwMAIAAgAzsBECAAIAQ2AgwgACATNwIEIABBETYCAAwpCyABKQIMIRMgAS0AFCEMEK4yIQQgAkGQAWogASgCBBA/IARBOGogAkGQAWpBOGoiDSkDADcDACAEQTBqIAJBkAFqQTBqIg4pAwA3AwAgBEEoaiACQZABakEoaiIPKQMANwMAIARBIGogAkGQAWpBIGoiCikDADcDACAEQRhqIAJBkAFqQRhqIgUpAwA3AwAgBEEQaiACQZABakEQaiILKQMANwMAIARBCGogAkGQAWpBCGoiCSkDADcDACAEIAIpA5ABNwMAEK4yIQMgAkGQAWogASgCCBA/IANBOGogDSkDADcDACADQTBqIA4pAwA3AwAgA0EoaiAPKQMANwMAIANBIGogCikDADcDACADQRhqIAUpAwA3AwAgA0EQaiALKQMANwMAIANBCGogCSkDADcDACADIAIpA5ABNwMAIAAgDDoAFCAAIBM3AgwgACADNgIIIAAgBDYCBCAAQRI2AgAMKAsgAS0APCENIAEoAjQhDiABKAIwIQ8CQCADQQtGDQACQAJAAkACQAJAAkACQAJAAkACQAJAIAMOCwABAgMEBQYHCAkKAAsgAkGQAWogAUEIahDgECACQY4BaiACQasBai0AADoAACACIAIvAKkBOwGMASACLQCoASEKIAIoAqQBIQwgAigCoAEhBSACKAKcASELIAIoApgBIQkgAigClAEhCCACKAKQASEGIAIoAqwBIQcMMQsgAkGQAWogAUEIahDNCCACQY4BaiACQasBai0AADoAACACIAIvAKkBOwGMAQwvCyACQZABaiABQQhqELoLIAJBjgFqIAJBqwFqLQAAOgAAIAIgAi8AqQE7AYwBDC4LIAJBkAFqIAFBBGoQ5xIMLAsgAkGQAWogAUEEahCPCAwqCyACQZABaiABQQRqELIQDCkLIAJBkAFqIAFBBGoQshAMKAsgAkGQAWogAUEEahDnEgwoCyACQZABaiABQQRqELIQDCYLIAJBkAFqIAFBBGoQ8w0MJQsgASgCCCEGIAEoAgQhEAwnCyABQQhqIQQCQAJAAkAgASgCBCIQDgMAAQIACyABKAIYIQUgASgCFCELIAJB0ABqIAQQnQwgAS0AICEKAkACQCABKAIcIgQNAEEAIQwMAQsQqzIhDCAEKQIEIRMgBCgCACEEEKwyIQkgAkGQAWogBBCGASAJIAJBkAFqQeAAEN8KIQQgDCATNwIEIAwgBDYCAAsgAkHQAGohBAwjCyABKAIYIQUgASgCFCELIAJB0ABqIAQQ8AMgAS0AICEKAkACQCABKAIcIgQNAEEAIQwMAQsQqzIhDCAEKQIEIRMgBCgCACEEEKwyIQkgAkGQAWogBBCGASAJIAJBkAFqQeAAEN8KIQQgDCATNwIEIAwgBDYCAAsgAkHQAGohBAwiCyABKAIMIQgMIgsgASgCJCEMIAEoAiAhDRCuMiEEIAJBkAFqIAEoAigQPyAEQThqIAJBkAFqQThqIgUpAwA3AwAgBEEwaiACQZABakEwaiILKQMANwMAIARBKGogAkGQAWpBKGoiCSkDADcDACAEQSBqIAJBkAFqQSBqIggpAwA3AwAgBEEYaiACQZABakEYaiIGKQMANwMAIARBEGogAkGQAWpBEGoiBykDADcDACAEQQhqIAJBkAFqQQhqIhApAwA3AwAgBCACKQOQATcDAAJAAkACQAJAIAEoAggiDg4DAAECAAsgASgCFCEDIAEoAhAhDyABKAIcIQogASgCGCEFAkAgASkDECITQgODQgBSDQAgE6ciASABKAIAIgFBAWo2AgAgAUF/TA0jCyACIAM2ApABIAJB0ABqIQEMAgsgASgCFCEDIAEoAhAhDyABKAIcIQogASgCGCEFAkAgASkDECITQgODQgBSDQAgE6ciASABKAIAIgFBAWo2AgAgAUF/TA0iCyACIAM2ApABIAJB0ABqIQEMAQsgASgCFCEKIAEoAhAhDxCuMiEDIAJBkAFqIAEoAgwQPyADQThqIAUpAwA3AwAgA0EwaiALKQMANwMAIANBKGogCSkDADcDACADQSBqIAgpAwA3AwAgA0EYaiAGKQMANwMAIANBEGogBykDADcDACADQQhqIBApAwA3AwAgAyACKQOQATcDACACQZABaiEBCyABIAo2AgAgACAPNgIQIAAgAzYCDCAAIA42AgggACAFNgIYIAAgBDYCKCAAIAw2AiQgACANNgIgIABBFDYCACAAIAIoApABNgIUIAAgAigCUDYCHAwmCyABKAIsIQQgASgCKCEDIAEoAiQhDCABKAIgIQ0CQAJAIAEoAggNACABKAIcIQ4gASgCGCEPQQAhCgJAIAEpAxAiE0IDg0IAUQ0ADAILIBOnIgEgASgCACIFQQFqNgIAIAVBf0oNAQwgCyABKQMQIRNBASEKIAFBDGoQ4hMhAQsgACAENgIsIAAgAzYCKCAAIAw2AiQgACANNgIgIAAgDjYCHCAAIA82AhggACATNwMQIAAgATYCDCAAIAo2AgggAEEVNgIADCULIAEpAxAhExCuMiEEIAJBkAFqIAEoAgQQPyAEQThqIAJBkAFqQThqIg0pAwA3AwAgBEEwaiACQZABakEwaiIOKQMANwMAIARBKGogAkGQAWpBKGoiDykDADcDACAEQSBqIAJBkAFqQSBqIgopAwA3AwAgBEEYaiACQZABakEYaiIFKQMANwMAIARBEGogAkGQAWpBEGoiCykDADcDACAEQQhqIAJBkAFqQQhqIgkpAwA3AwAgBCACKQOQATcDABCuMiEDIAJBkAFqIAEoAggQPyADQThqIA0pAwA3AwAgA0EwaiAOKQMANwMAIANBKGogDykDADcDACADQSBqIAopAwA3AwAgA0EYaiAFKQMANwMAIANBEGogCykDADcDACADQQhqIAkpAwA3AwAgAyACKQOQATcDABCuMiEMIAJBkAFqIAEoAgwQPyAMQThqIA0pAwA3AwAgDEEwaiAOKQMANwMAIAxBKGogDykDADcDACAMQSBqIAopAwA3AwAgDEEYaiAFKQMANwMAIAxBEGogCykDADcDACAMQQhqIAkpAwA3AwAgDCACKQOQATcDACAAIBM3AxAgACAMNgIMIAAgAzYCCCAAIAQ2AgQgAEEWNgIADCQLQQMhAyABQQRqIQwgASgCJCENIAEoAiAhDiABKAIcIQ8CQAJAAkACQCABLQAYIgVBfWoiBEEBIARB/wFxQQNJG0H/AXEOAwABAgALIAEoAhQhCiABKAIQIQQMAgsgASgCFCEKIAEoAhAhBCAFIQMMAQsQrjIhBCACQZABaiABKAIQED8gBEE4aiACQZABakE4aikDADcDACAEQTBqIAJBkAFqQTBqKQMANwMAIARBKGogAkGQAWpBKGopAwA3AwAgBEEgaiACQZABakEgaikDADcDACAEQRhqIAJBkAFqQRhqKQMANwMAIARBEGogAkGQAWpBEGopAwA3AwAgBEEIaiACQZABakEIaikDADcDACAEIAIpA5ABNwMAQQUhAwsgAkEEaiAMEOwKAkACQCABKAIoIgENAEEAIQEMAQsgARDPHCEBCyAAIAIpAgQ3AgQgACABNgIoIAAgDTYCJCAAIA42AiAgACAPNgIcIAAgAzoAGCAAIAo2AhQgACAENgIQIABBFzYCACAAQQxqIAJBDGooAgA2AgAMIwsgASgCHCEMIAEoAhghDSABKAIUIQ4QrjIhBCACQZABaiABKAIQED8gBEE4aiACQZABakE4aikDADcDACAEQTBqIAJBkAFqQTBqKQMANwMAIARBKGogAkGQAWpBKGopAwA3AwAgBEEgaiACQZABakEgaikDADcDACAEQRhqIAJBkAFqQRhqKQMANwMAIARBEGogAkGQAWpBEGopAwA3AwAgBEEIaiACQZABakEIaikDADcDACAEIAIpA5ABNwMAQYCAgIB4IQMCQCABKAIEQYCAgIB4Rg0AIAJBkAFqIAFBBGoQ7AogAikClAEhEyACKAKQASEDCwJAAkAgASgCICIBDQBBACEBDAELIAEQzxwhAQsgACABNgIgIAAgDDYCHCAAIA02AhggACAONgIUIAAgBDYCECAAIBM3AwggACADNgIEIABBGDYCAAwiCyABKAIQIQQgASgCFCEDIAJBkAFqIAFBBGoQ5gsgAEEUaiADNgIAIABBGTYCACAAIAIpApABNwIEIAIgBDYCnAEgAEEMaiACQZgBaikCADcCAAwhCyABKAIYIQQgASgCFCEDIAEoAhAhDAJAIAEpAwgiE0IDg0IAUg0AIBOnIg0gDSgCACINQQFqNgIAIA1Bf0wNGgsgACAENgIYIAAgAzYCFCAAIAw2AhAgACATNwMIIABBGjYCACAAIAEtABw6ABwMIAsCQAJAAkACQAJAAkACQAJAAkAgASgCCCINDgcAAQIDBAUGAAsgASgCHCEPIAEoAhghBAJAIAEpAxAiE0IDg0IAUg0AIBOnIgMgAygCACIDQQFqNgIAIANBf0wNIQsgASgCJCEOIAEoAiAhAwJAIAEpAyAiFFANACAUQgODUEUNACAUpyIBIAEoAgAiAUEBajYCACABQX9MDSELIBNCKIinIQEgE0IgiKchDCATpyEKDAYLIAEtABQhDCABKAIQIQogASgCDCEFQQAhAQwGCyABKAIQIQogASgCDCEFQQAhAQwFCyABKAIkIQ4gASgCICEDIAEpAxghEyABKAIUIQwgASgCECEKAkAgASkDICIUUA0AIBRCA4NQRQ0AIBSnIgEgASgCACIBQQFqNgIAIAFBf0wNHgsgDEEIdiEBIBNCIIinIQ8gE6chBAwDCyABKAIgIQQgASgCFCEMIAEoAhAhChCvMiEDIAQtAAwhDiACQZABaiAEQQRqKAIAIARBCGooAgAQ7hsgAyACKQKQATcCACACIA46AJwBIANBCGogAkGQAWpBCGopAgA3AgAgASkDGCITpyEEAkAgE1ANACATQgODUEUNACAEIAQoAgAiAUEBajYCACABQX9MDR0LIAxBCHYhASATQiCIpyEPDAMLIAEoAiQhDiABKAIgIQMCQCABKQMQIhNCA4NCAFINACATpyIEIAQoAgAiBEEBajYCACAEQX9MDRwLIAEpAxgiFKchBAJAIBRCA4NCAFINACAEIAQoAgAiAUEBajYCACABQX9MDRwLIBRCIIinIQ8gE0IoiKchASATQiCIpyEMIBOnIQoMAQsgASgCJCEOIAEoAiAhAwJAIAEpAxAiE0IDg0IAUg0AIBOnIgQgBCgCACIEQQFqNgIAIARBf0wNGwsgASkDGCIUpyEEAkAgFEIDg0IAUg0AIAQgBCgCACIBQQFqNgIAIAFBf0wNGwsgFEIgiKchDyATQiiIpyEBIBNCIIinIQwgE6chCgsLIAAgDjYCJCAAIAM2AiAgACAFNgIMIAAgDTYCCCAAQRs2AgAgACAPrUIghiAErYQ3AxggACABQQh0IAxB/wFxcq1CIIYgCq2ENwMQDB8LIAEpAhwhEyACQZABaiABQQRqEOYLIAJBkAFqQQxqIAEoAhQgASgCGBC5CyAAQRxqIBM3AgAgAEEcNgIAIAAgAikCkAE3AgQgAEEMaiACQZgBaikCADcCACAAQRRqIAJBoAFqKQIANwIADB4LIAEoAhQhDSABKAIQIQ4gASgCDCEPEK4yIQQgAkGQAWogASgCBBA/IARBOGogAkGQAWpBOGopAwA3AwAgBEEwaiACQZABakEwaikDADcDACAEQShqIAJBkAFqQShqKQMANwMAIARBIGogAkGQAWpBIGopAwA3AwAgBEEYaiACQZABakEYaikDADcDACAEQRBqIAJBkAFqQRBqKQMANwMAIARBCGogAkGQAWpBCGopAwA3AwAgBCACKQOQATcDAEEAIQwCQCABKAIYIgNFDQAgAxDPHCEMC0EALQDA/6MBGiABKAIIIQNBIBCMASIBRQ0WIAMpAhghEyACQZABaiADEOYLIAJBnAFqIANBEGooAgAgA0EUaigCABC5CyABQRhqIBM3AgAgASACKQKQATcCACABQQhqIAJBkAFqQQhqKQIANwIAIAFBEGogAkGQAWpBEGopAgA3AgAgACAMNgIYIAAgDTYCFCAAIA42AhAgACAPNgIMIAAgATYCCCAAIAQ2AgQgAEEdNgIADB0LIAEoAgghAyABKAIcIQUgASgCGCELIAEoAhQhCSACQZABaiABKAIMIg9BCEEoEOETIAIoApQBIQ4gAigCkAFBAUYNFCACKAKYASEKAkAgDkUNACAPQShsIQwgCiEEIA4hDQNAIAxFDQEgAkGQAWogAxDVAyAEQSBqIAJBkAFqQSBqKQMANwMAIARBGGogAkGQAWpBGGopAwA3AwAgBEEQaiACQZABakEQaikDADcDACAEQQhqIAJBkAFqQQhqKQMANwMAIAQgAikDkAE3AwAgDEFYaiEMIARBKGohBCADQShqIQMgDUF/aiINDQALC0EALQDA/6MBGkEYEIwBIgRFDRVBgICAgHghDQJAAkAgASgCECIMKAIAQYCAgIB4Rg0AIAwpAgwhEyAMKAIUIQMgAkGQAWogDBClDSACIAM2AqQBIAIgEzcCnAEgAkHYAGogAkGgAWopAgA3AwAgAiACKQKYATcDUCACKAKQASENIAIoApQBIQMMAQsQrjIhAyACQZABaiAMKAIEED8gA0E4aiACQZABakE4aikDADcDACADQTBqIAJBkAFqQTBqKQMANwMAIANBKGogAkGQAWpBKGopAwA3AwAgA0EgaiACQZABakEgaikDADcDACADQRhqIAJBkAFqQRhqKQMANwMAIANBEGogAkGQAWpBEGopAwA3AwAgA0EIaiACQZABakEIaikDADcDACADIAIpA5ABNwMACyAEIAM2AgQgBCANNgIAIAQgAikDUDcCCCAEQRBqIAJB2ABqKQMANwIAIAEtACkhDSABLQAoIQhBACEDQQAhDAJAIAEoAiAiBkUNACAGENAcIQwLAkAgASgCJCIBRQ0AIAEQxyMhAwsgACANOgApIAAgCDoAKCAAIAM2AiQgACAMNgIgIAAgBTYCHCAAIAs2AhggACAJNgIUIAAgBDYCECAAIA82AgwgACAKNgIIIAAgDjYCBCAAQR42AgAMHAsCQAJAIAEtABwiD0ECRw0ADAELIAEoAhghCyABKAIUIQUgASgCECEKIAEpAwgiE0IDg0IAUg0AIBOnIgQgBCgCACIEQQFqNgIAIARBf0wNFQsQtjIhBCABKAIgIgEoAiwhCSABKAIoIQggASgCJCEGIAJBIGogARChCyACQdAAaiABQQxqEH9BACEMQQAhAwJAIAEoAjAiDUUNABCuMiEDIAJBkAFqIA0QPyADQThqIAJBkAFqQThqKQMANwMAIANBMGogAkGQAWpBMGopAwA3AwAgA0EoaiACQZABakEoaikDADcDACADQSBqIAJBkAFqQSBqKQMANwMAIANBGGogAkGQAWpBGGopAwA3AwAgA0EQaiACQZABakEQaikDADcDACADQQhqIAJBkAFqQQhqKQMANwMAIAMgAikDkAE3AwALIAEtADwhBwJAIAEoAjQiDUUNABCxMiEMIA0oAgwhDiANKAIQIRAgAkGQAWogDRD8CCAMQRBqIBA2AgAgDCACKQKQATcCACACIA42ApwBIAxBCGogAkGQAWpBCGopAgA3AgALAkACQCABKAI4Ig4NAEEAIQ0MAQsQsTIhDSAOKAIMIRAgDigCECERIAJBkAFqIA4QphEgDUEQaiARNgIAIA0gAikCkAE3AgAgAiAQNgKcASANQQhqIAJBkAFqQQhqKQIANwIACyACQZABakEYaiIOIAFBGGoQ2AcgAkGQAWpBCGoiASACQSBqQQhqKAIANgIAIAJBpAFqIAJB0ABqQQhqKAIANgIAIAIgAikCICIUNwOQASACIAIpAlA3ApwBIARBIGogAkGQAWpBIGooAgA2AgAgBEEYaiAOKQMANwIAIARBEGogAkGQAWpBEGopAwA3AgAgBEEIaiABKQMANwIAIAQgFDcCACAEIAc6ADwgBCANNgI4IAQgDDYCNCAEIAM2AjAgBCAJNgIsIAQgCDYCKCAEIAY2AiQgACAENgIgIAAgDzoAHCAAIAs2AhggACAFNgIUIAAgCjYCECAAIBM3AwggAEEfNgIADBsLIAEoAgghBCABKAIEIQMCQAJAIAEoAgwNAEEAIQwMAQsgAUEMahDiEyEMCyAAIAw2AgwgACAENgIIIAAgAzYCBCAAQSA2AgAgACABLQAQOgAQDBoLIABBITYCACAAIAEtAAw6AAwgACABKQIENwIEDBkLIAEpAwghExCuMiEEIAJBkAFqIAEoAgQQPyAEQThqIAJBkAFqQThqKQMANwMAIARBMGogAkGQAWpBMGopAwA3AwAgBEEoaiACQZABakEoaikDADcDACAEQSBqIAJBkAFqQSBqKQMANwMAIARBGGogAkGQAWpBGGopAwA3AwAgBEEQaiACQZABakEQaikDADcDACAEQQhqIAJBkAFqQQhqKQMANwMAIAQgAikDkAE3AwAgACATNwMIIAAgBDYCBCAAQSI2AgAMGAsgASkDCCETEK4yIQQgAkGQAWogASgCBBA/IARBOGogAkGQAWpBOGopAwA3AwAgBEEwaiACQZABakEwaikDADcDACAEQShqIAJBkAFqQShqKQMANwMAIARBIGogAkGQAWpBIGopAwA3AwAgBEEYaiACQZABakEYaikDADcDACAEQRBqIAJBkAFqQRBqKQMANwMAIARBCGogAkGQAWpBCGopAwA3AwAgBCACKQOQATcDACAAIBM3AwggACAENgIEIABBIzYCAAwXCyABKAIcIQQgASgCGCEDIAJBkAFqIAFBIGoQwwogASgCFCEMIAEoAhAhDQJAIAEpAwgiE0IDg0IAUg0AIBOnIgEgASgCACIBQQFqNgIAIAFBf0wNEAsgACACKQOQATcDICAAQTBqIAJBoAFqKQMANwMAIABBKGogAkGYAWopAwA3AwAgACAENgIcIAAgAzYCGCAAIAw2AhQgACANNgIQIAAgEzcDCCAAQSQ2AgAMFgsgASgCFCEEIAEoAhAhAyABKAIsIQwgASgCKCENAkAgASkDCCITQgODQgBSDQAgE6ciDiAOKAIAIg5BAWo2AgAgDkF/TA0PCyABKAIkIQ4gASgCICEPAkAgASkDGCIUQgODQgBSDQAgFKciASABKAIAIgFBAWo2AgAgAUF/TA0PCyAAIAw2AiwgACANNgIoIAAgDjYCJCAAIA82AiAgACAUNwMYIAAgBDYCFCAAIAM2AhAgACATNwMIIABBJTYCAAwVCyAAQSY2AgAgACABKQIENwIEDBQLIAEoAgQhBBCwMiEBIAQoAgQhDyAEKAIAIQogAkGQAWogBEHAAGoQnwggBCgCdCEFIAQoAnAhCyACQYABaiAEQfwAahC/AyAELQCIASEJAkACQCAEKAJ4IgwNAEEAIQMMAQsQsTIhAyAMKAIMIQ0gDCgCECEOIAJB0ABqIAwQphEgA0EQaiAONgIAIAMgAikCUDcCACACIA02AlwgA0EIaiACQdAAakEIaikCADcCAAsgAkEQaiAEQZABahChAUEGIQwCQCAELQA8QQZGDQAgBCgCDCEOIAQoAgghDSACQdAAaiAEQRBqEJ8IIAJBIGpBKGogAkHQAGpBKGooAgA2AgAgAkEgakEgaiACQdAAakEgaikDADcDACACQSBqQRhqIAJB0ABqQRhqKQMANwMAIAJBIGpBEGogAkHQAGpBEGopAwA3AwAgAkEgakEIaiACQdAAakEIaikDADcDACACQR5qIAJB/wBqLQAAOgAAIAIgAikDUDcDICACIAIvAH07ARwgAi0AfCEMCyACQd8AaiIEIAJBEGpBCGooAgA2AAAgAiACKQIQNwBXIAEgDjYCDCABIA02AgggASAPNgIEIAEgCjYCACABIAIpAyA3AxAgAUEYaiACQSBqQQhqKQMANwMAIAFBIGogAkEgakEQaikDADcDACABQShqIAJBIGpBGGopAwA3AwAgAUEwaiACQSBqQSBqKQMANwMAIAFBOGogAkEgakEoaigCADYCACABIAw6ADwgASADNgJ4IAEgBTYCdCABIAs2AnAgASACLwEcOwA9IAFBP2ogAkEeai0AADoAACABQegAaiACQZABakEoaikDADcDACABQeAAaiACQZABakEgaikDADcDACABQdgAaiACQZABakEYaikDADcDACABQdAAaiACQZABakEQaikDADcDACABQcgAaiACQZABakEIaikDADcDACABIAIpA5ABNwNAIAFBhAFqIAJBgAFqQQhqKAIANgIAIAEgAikCgAE3AnwgASAJOgCIASABQZgBaiAEKAAANgAAIAFBkQFqIAJB0ABqQQhqKQAANwAAIAEgAikAUDcAiQEgAEEnNgIAIAAgATYCBAwTCyABKAIQIQQgASkCFCETIAEoAhwhAyACQZABaiABQQRqEKEBIAJBqAFqIgwgAzYCACAAQRRqIBM3AgAgAEEoNgIAIAAgAikCkAE3AgQgAEEkaiABKAIkNgIAIAIgBDYCnAEgAEEMaiACQZgBaikCADcCACACIAEoAiA2AqwBIABBHGogDCkCADcCAAwSCyABKQIMIRMQrjIhBCACQZABaiABKAIEED8gBEE4aiACQZABakE4aikDADcDACAEQTBqIAJBkAFqQTBqKQMANwMAIARBKGogAkGQAWpBKGopAwA3AwAgBEEgaiACQZABakEgaikDADcDACAEQRhqIAJBkAFqQRhqKQMANwMAIARBEGogAkGQAWpBEGopAwA3AwAgBEEIaiACQZABakEIaikDADcDACAEIAIpA5ABNwMAIAEoAgghARCsMiEDIAJBkAFqIAEQhgEgAyACQZABakHgABDfCiEBIAAgEzcCDCAAIAE2AgggACAENgIEIABBKTYCAAwRCyABKQMIIRMQrjIhBCACQZABaiABKAIEED8gBEE4aiACQZABakE4aikDADcDACAEQTBqIAJBkAFqQTBqKQMANwMAIARBKGogAkGQAWpBKGopAwA3AwAgBEEgaiACQZABakEgaikDADcDACAEQRhqIAJBkAFqQRhqKQMANwMAIARBEGogAkGQAWpBEGopAwA3AwAgBEEIaiACQZABakEIaikDADcDACAEIAIpA5ABNwMAIAAgEzcDCCAAIAQ2AgQgAEEqNgIADBALIAEpAwghExCuMiEEIAJBkAFqIAEoAgQQPyAEQThqIAJBkAFqQThqKQMANwMAIARBMGogAkGQAWpBMGopAwA3AwAgBEEoaiACQZABakEoaikDADcDACAEQSBqIAJBkAFqQSBqKQMANwMAIARBGGogAkGQAWpBGGopAwA3AwAgBEEQaiACQZABakEQaikDADcDACAEQQhqIAJBkAFqQQhqKQMANwMAIAQgAikDkAE3AwAgACATNwMIIAAgBDYCBCAAQSs2AgAMDwsgASkCDCETEK4yIQQgAkGQAWogASgCBBA/IARBOGogAkGQAWpBOGopAwA3AwAgBEEwaiACQZABakEwaikDADcDACAEQShqIAJBkAFqQShqKQMANwMAIARBIGogAkGQAWpBIGopAwA3AwAgBEEYaiACQZABakEYaikDADcDACAEQRBqIAJBkAFqQRBqKQMANwMAIARBCGogAkGQAWpBCGopAwA3AwAgBCACKQOQATcDACABKAIIIQEQrDIhAyACQZABaiABEIYBIAMgAkGQAWpB4AAQ3wohASAAIBM3AgwgACABNgIIIAAgBDYCBCAAQSw2AgAMDgsgASkCDCETEK4yIQQgAkGQAWogASgCBBA/IARBOGogAkGQAWpBOGopAwA3AwAgBEEwaiACQZABakEwaikDADcDACAEQShqIAJBkAFqQShqKQMANwMAIARBIGogAkGQAWpBIGopAwA3AwAgBEEYaiACQZABakEYaikDADcDACAEQRBqIAJBkAFqQRBqKQMANwMAIARBCGogAkGQAWpBCGoiDCkDADcDACAEIAIpA5ABNwMAIAEoAgghAxCxMiEBIAMoAgwhDSADKAIQIQ4gAkGQAWogAxCmESABQRBqIA42AgAgASACKQKQATcCACACIA02ApwBIAFBCGogDCkCADcCACAAIBM3AgwgACABNgIIIAAgBDYCBCAAQS02AgAMDQsgASkCDCETEK4yIQQgAkGQAWogASgCBBA/IARBOGogAkGQAWpBOGopAwA3AwAgBEEwaiACQZABakEwaikDADcDACAEQShqIAJBkAFqQShqKQMANwMAIARBIGogAkGQAWpBIGopAwA3AwAgBEEYaiACQZABakEYaikDADcDACAEQRBqIAJBkAFqQRBqKQMANwMAIARBCGogAkGQAWpBCGopAwA3AwAgBCACKQOQATcDACABKAIIIQEQrDIhAyACQZABaiABEIYBIAMgAkGQAWpB4AAQ3wohASAAIBM3AgwgACABNgIIIAAgBDYCBCAAQS42AgAMDAsgASgCFCEEIAEoAhAhAwJAIAEpAwgiE0IDg0IAUg0AIBOnIgEgASgCACIBQQFqNgIAIAFBf0wNBQsgACAENgIUIAAgAzYCECAAIBM3AwggAEEvNgIADAsLIAEtABAhDiABKAIMIQ8gASgCCCEKEK0yIQRBAyENAkACQCABKAIEIgMoAgBBA0YNACADKAIcIQUgAygCGCELEK4yIQEgAkGQAWogAygCIBA/IAFBOGogAkGQAWpBOGopAwA3AwAgAUEwaiACQZABakEwaikDADcDACABQShqIAJBkAFqQShqKQMANwMAIAFBIGogAkGQAWpBIGopAwA3AwAgAUEYaiACQZABakEYaikDADcDACABQRBqIAJBkAFqQRBqKQMANwMAIAFBCGogAkGQAWpBCGopAwA3AwAgASACKQOQATcDACACQZABaiADEJkKIAJB8AFqQQhqIAJBnAFqKAIANgIAIAIgAikClAE3A/ABIAIoApABIQ0gAigCoAEhDCACKAKkASEJDAELIAMoAhwhBSADKAIYIQsgAygCFCEJEK4yIQwgAkGQAWogAygCEBA/IAxBOGogAkGQAWpBOGopAwA3AwAgDEEwaiACQZABakEwaikDADcDACAMQShqIAJBkAFqQShqKQMANwMAIAxBIGogAkGQAWpBIGopAwA3AwAgDEEYaiACQZABakEYaikDADcDACAMQRBqIAJBkAFqQRBqKQMANwMAIAxBCGogAkGQAWpBCGoiCCkDADcDACAMIAIpA5ABNwMAIAJB8AFqIANBBGoQ7AoCQCADKAIgIgMNAEEAIQEMAQsQsTIhASADKAIMIQYgAygCECEHIAJBkAFqIAMQphEgAUEQaiAHNgIAIAEgAikCkAE3AgAgAiAGNgKcASABQQhqIAgpAgA3AgALIAQgDTYCACAEIAIpA/ABNwIEIAQgATYCICAEIAU2AhwgBCALNgIYIAQgCTYCFCAEIAw2AhAgACAOOgAQIAAgDzYCDCAAIAo2AgggACAENgIEIABBMDYCACAEQQxqIAJB+AFqKAIANgIADAoLIABBMTYCACAAIAEpAgQ3AgQMCQsgCSACKAKYARD4OQALIA4gAigCmAEQ+DkACwALIAIoAlghCSACKAJUIQgLIAQoAgAhBgwDCyACKAKcASEJIAIoApgBIQggAigClAEhBiACKAKQASEQDAILIAIoApgBIQggAigClAEhBiACKAKQASEQDAELIAItAKgBIQogAigCpAEhDCACKAKgASEFIAIoApwBIQsgAigCmAEhCSACKAKUASEIIAIoApABIQYgAigCrAEhByACKQOwASETCxCuMiEEIAJBkAFqIAEoAjgQ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AkAgAigC6AIiEyACKALgAkcNACALEMcmCyACKALkAiATQRhsaiIGIAM2AgQgBiABNgIAIAYgAikCoAo3AgggBkEQaiACQaAKakEIaikCADcCACATQQFqIQEMAQsgAkHoA2ogASADIAJB1AlqEGkCQAJAIAIoAugDIgFBgICAgHhHDQAgAigC5AIgAigC6AIiAUEYbGpBaGohAwJAA0ACQCABDQBBACEBDAILAkAgAygCACIGQQJGDQAgAUF/aiETIANBBGooAgAhGCACQbAKaiADQQhqIhoQiBkCQCACKAKwCkEERg0AIAJBwApqQQhqIAJBsApqQQhqIgwpAgA3AwAgAiATNgLoAiACIAIpArAKIj03A8AKAkAgPadBA0cNAAJAIAIoAtQJIhMtABQiHkECRg0AIB5BAXENACAgEIIuIAJBCjYC6AMgEyACQegDahCEKAwBCyAgEIMuIAJBCTYC6AMgEyACQegDahCEKAsgAiACQcAKahCiGiACKAIEIR4gAigCACEEIAMgGDYCBCADIAY2AgAgGiACKQKwCjcCACAaQQhqIAwpAgA3AgAMBgsgAkHoA2ogBiAYIAJB1AlqEGkCQCACKALoAyIBQYCAgIB4Rg0AIAJBuANqQQhqIApBCGopAgA3AwAgAkG4A2pBEGogCkEQaigCADYCACACIBM2AugCIAIgCikCADcDuAMgAigC7AMhAyACKALwAyEFIAIpAvQDIT0MBQsgA0FoaiEDIBMhAQwBCwsgAUF/aiEBCyACIAE2AugCDAcLIAJBuANqQQhqIApBCGopAgA3AwAgAkG4A2pBEGogCkEQaigCADYCACACIAopAgA3A7gDIAIpAvQDIT0gAigC8AMhBSACKALsAyEDCyAJIAIpA7gDNwIAIAlBEGogAkG4A2pBEGooAgA2AgAgCUEIaiACQbgDakEIaikDADcCACACID03AsQBIAIgBTYCwAEgAiADNgK8ASACIAE2ArgBDAYLIAIgATYC6AIgHiEDIAQhAQwACwsgBSgCBCIBKAIIIgMNBgwCCyAFKAIEIQFBACEGQQAhAwwHCyAFKAIEIgEoAggiA0UNACADQX9qIQYgASgCBCIBQQhqIRNBAiEDDAYLIAJB6ANqIAJB1AlqIAUoAgAgBUEEaigCABBeAkAgAigC6AMiAUGAgICAeEcNACACKALYAiACKALcAiIBQRRsakFsaiEDA0ACQAJAAkACQAJAIAENAEEAIQEMAQsgA0EEaiIYKAIAIgZBBEcNASABQX9qIQELIAIgATYC3AIgAigC1AkiASgCACIDQf////8HTw0BIAEgA0EBajYCACACIAEoAgwiBTYCwAoCQAJAIAVBAUcNACABIAM2AgAgAkHoA2ogARDaEyACKALoA0EQRw0BQYSwhAEQ/TkACyACQQA2AugDIAJBwApqQfi9oQEgAkHoA2pBlLCEARCxKwALIAJBuANqQRhqIAJB6ANqQRhqKAIANgIAIAJBuANqQRBqIAJB6ANqQRBqKQIANwMAIAJBuANqQQhqIAJB6ANqQQhqKQIANwMAIAIgAikC6AM3A7gDIAggAkG4A2oQ7g9BASEDQYCAgIB4IQEMBgsgAUF/aiETIAMoAgAhBSAHIANBCGopAgA3AgAgB0EIaiADQRBqKAIANgIAIAIgBjYC8AkgAkGACmogAkHwCWoQhBMCQCACKAKACkEERg0AIAJBkApqQQhqIAJBgApqQQhqIhopAgA3AwAgAiATNgLcAiACIAIpAoAKIj03A5AKID2nQQNHDQcgAkEPNgLoAyACKALUCSACQegDahCEKAwHCyACQegDaiACQdQJaiAFKAIAIAVBBGooAgAQXiACKALoAyIBQYCAgIB4Rg0BIAIgEzYC3AIgCCAgQSQQ3woaDAQLQfSvhAEQ6iIACyADQWxqIQMgEyEBDAALCyAIICBBJBDfChoLQQAhAwsgAkHUAmoQsTEgAigCvAEhHgJAIANFDQAgAigC1AEhBSACKALQASEGIAIoAswBIRMgAigCyAEhGCACKALEASEaIAIoAsABIQQgAigCwAIgAigCxAIQthcgAigCvAIgAigCwAIQjToCQCACKAK0ASIDIAIoAqwBRw0AIAJBrAFqEMgmCyACKAKwASADQRxsaiIBIAU2AhggASAGNgIUIAEgEzYCECABIBg2AgwgASAaNgIIIAEgBDYCBCABIB42AgAgAiADQQFqNgK0AQwICyACQTBqQQhqIAJBqAJqQQhqKQIANwMAIAIgAikCqAI3AzAgAigC3AEhCiACKQLUASE9IAIpAswBIT4gAigCyAEhByACKALEASEFIAIoAsABISIgAigCwAIgAigCxAIQthcgAigCvAIgAigCwAIQjTpB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AuABIQMCQANAIAFFDQEgAUF/aiEBIAMQ/C4gA0GYAWohAwwACwsgAiACKALYAUEBajYC2AEgCCACKALUCSIBQdgAaigCACIDNgIAIAkgASkCUCI9NwIAIAlBCGogAzYCACAgID03AgAgIEEIaiAIKQMANwIAICBBEGogAkHoA2pBEGopAwA3AgBBACEDIAJBADYC3AIgAkKAgICAwAA3AtQCQQQhBiACKALcCSEYA0AgAkHUCWoQsAkCQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAigCiAIgGEYNAAJAAkACQAJAAkACQAJAAkACQAJAIAJB1AlqEMMUIgFBWGoOBAECBgcACwJAIAFBhX9qDgIIAwALIAFBP0YNBCABQdsARg0DAkACQAJAAkACQCACQdQJahDDFCIBQaR/ag4DBAECAAsgAUEkRg0CIAFBLkYNDAsgCSACQdQJahChESACQdQJahDtDRogAkEAOgCMBCACIAE2AvADQYKAgIB4IQEgAkGCgICAeDYC7AMMFgsgCCACQdQJahChESACQdQJahDtDRogAkEAOgCIBAwUCyAIIAJB1AlqEKERIAJB1AlqEO0NGiACQQE6AIgEDBMLIAJB6ANqIAJB1AlqEJ0BIAIoAuwDIQEgAigC6AMiE0EiRg0TIAJBqANqQQhqIARBCGopAgAiPTcDACACQcAKakEIaiA9NwMAIAIgBCkCACI9NwOoAyACID03A8AKIAIoApAEIQogAikCiAQhPSACKQKABCE+IAIoAvwDIQcgAigC+AMhBSACKAL0AyEiIAIoAvADIR4gAigCpAQhCwwLCyACQbgDaiACQdQCakEkEN8KGiACQegDaiACQdQJaiACQbgDahD/ByACKQKIBCE9IAIpAoAEIT4gAigC/AMhByACKAL4AyEFIAIoAvQDIQMgAigC8AMhBiACKALsAyEBIAIoAugDIhNBIkYNECACQcAKakEIaiAEQQhqKQIANwMAIAIgBCkCADcDwAoMDgsgAkG4A2ogAkHUAmpBJBDfChogAkHoA2ogAkHUCWogAkG4A2oQuwQgAikCiAQhPSACKQKABCE+IAIoAvwDIQcgAigC+AMhBSACKAL0AyEDIAIoAvADIQYgAigC7AMhASACKALoAyITQSJGDQ8gAkHACmpBCGogBEEIaikCADcDACACIAQpAgA3A8AKDA0LIAJBuANqIAJB1AJqQSQQ3woaIAJB6ANqIAJB1AlqIAJBuANqEPkIIAIpAogEIT0gAikCgAQhPiACKAL8AyEHIAIoAvgDIQUgAigC9AMhAyACKALwAyEGIAIoAuwDIQEgAigC6AMiE0EiRg0OIAJBwApqQQhqIARBCGopAgA3AwAgAiAEKQIANwPACgwMCyACQegDaiACQdQJahDsAyACQbgDakEIaiIaIAxBCGopAgA3AwAgAiAMKQIANwO4AyACKAKoBCELIAIoApQEIQogAikCjAQhPSACKQKEBCE+IAIoAoAEIQcgAigC/AMhBSACKAL4AyEiIAIoAvQDIR4gAigC8AMhASACKALsAyETIAIoAugDIg5BiYDEAEYNBiACQfgCaiAQQTAQ3woaIAJBuAJqQQhqIg8gGikDADcDACACIAIpA7gDNwO4AkEALQDA/6MBGkH0ABCMASIaRQ0YIBogCjYCLCAaID03AiQgGiA+NwIcIBogBzYCGCAaIAU2AhQgGiAiNgIQIBogHjYCDCAaIAE2AgggGiATNgIEIBogDjYCACAaIAIpA7gCNwIwIBogCzYCQCAaQThqIA8pAwA3AgAgGkHEAGogAkH4AmpBMBDfChoCQCADIAIoAtQCRw0AIAJB1AJqEMsmIAIoAtgCIQYLIAYgA0EDdGoiASAaNgIEIAFBBzYCAAwQCyACQbgDaiACQdQCakEkEN8KGiACQQM2AqgCIAJB6ANqIAJB1AlqIAJBuANqIAJBqAJqENEGIAIpAogEIT0gAikCgAQhPiACKAL8AyEHIAIoAvgDIQUgAigC9AMhAyACKALwAyEGIAIoAuwDIQEgAigC6AMiE0EiRg0MIAJBwApqQQhqIARBCGopAgA3AwAgAiAEKQIANwPACgwKCyACQbgDaiACQdQCakEkEN8KGiACQQQ2AqgCIAJB6ANqIAJB1AlqIAJBuANqIAJBqAJqENEGIAIpAogEIT0gAikCgAQhPiACKAL8AyEHIAIoAvgDIQUgAigC9AMhAyACKALwAyEGIAIoAuwDIQEgAigC6AMiE0EiRg0LIAJBwApqQQhqIARBCGopAgA3AwAgAiAEKQIANwPACgwJCyACQbgDaiACQdQCakEkEN8KGiACQQU2AqgCIAJB6ANqIAJB1AlqIAJBuANqIAJBqAJqENEGIAIpAogEIT0gAikCgAQhPiACKAL8AyEHIAIoAvgDIQUgAigC9AMhAyACKALwAyEGIAIoAuwDIQEgAigC6AMiE0EiRg0KIAJBwApqQQhqIARBCGopAgA3AwAgAiAEKQIANwPACgwICyACQbgDaiACQdQCakEkEN8KGiACQegDaiACQdQJaiACQbgDahDiAiACKQKIBCE9IAIpAoAEIT4gAigC/AMhByACKAL4AyEFIAIoAvQDIQMgAigC8AMhBiACKALsAyEBIAIoAugDIhNBIkYNCSACQcAKakEIaiAEQQhqKQIANwMAIAIgBCkCADcDwAoMBwsgCCACQdQJahChESACQdQJahDtDRpBhICAgHghAQwKCyACQbgDaiACQdQCakEkEN8KGiACQegDaiACQdQJaiACQbgDahCIBiACKALwAyEeIAIoAuwDIQECQCACKALoAyITQSJGDQAgAkHACmpBCGogBEEIaikCADcDACACIAQpAgA3A8AKIAIoApAEIQogAikCiAQhPSACKQKABCE+IAIoAvwDIQcgAigC+AMhBSACKAL0AyEiIAIoAqQEIQsMBwsgAiAeNgKsAiACIAE2AqgCIAJB6ANqIAJB1AlqIAJBqAJqEOkCIAIoAugDIhNBIkYNAiACQcAKakEIaiAEQQhqKQIANwMAIAIgBCkCADcDwAogAigCkAQhCiACKQKIBCE9IAIpAoAEIT4gAigC/AMhByACKAL4AyEFIAIoAvQDISIgAigC8AMhHiACKALsAyEBIAIoAqQEIQsgAkGoAmoQ5g4MBgsgAkHACmpBCGogGikDADcDACACIAIpA7gDNwPACgsgAkHUAmoQjDcgE0EiRw0EDAELIAIoArgBDQEgAigCxAEhByACQQA2AsQBIAIoAsABIQUgAigCvAEhIiACQoCAgIDAADcCvAELIAUgBxDULSAiIAUQkTogAkG4AWoQ3gsCQCACKAKoASIDIAIoAqABRw0AIAJBoAFqEMsmCyACKAKkASADQQN0aiIFIB42AgQgBSABNgIAIAIgA0EBajYCqAEMCQtB6JSEARDpIgALIAIoApAEIQogAigCpAQhCyADISIgBiEeCyACQTBqQQhqIAJBwApqQQhqKQMANwMAIAIgAikDwAo3AzAgAkG4AWoQ3gsMCAsgAiA9NwLwAiACID43AugCIAIgBzYC5AIgAiAFNgLgAiACIAM2AtwCIAIgBjYC2AIgAiABNgLUAgwDC0GDgICAeCEBIAJBg4CAgHg2AuwDCyACQagDakEIaiIeIARBCGopAgA3AwAgAiAEKQIANwOoA0EALQDA/6MBGiACKQKIBCE+IAIpAoAEIT0gAigC/AMhBiACKAL4AyEHIAIoAvQDIRMgAigC8AMhGgJAAkACQAJAAkACQCABQf7///8HaiIFQQQgBUEESRsOBQABAgMEAAtBIBCMASIFRQ0NIAUgPjcCGCAFID03AhAgBSAGNgIMIAUgBzYCCCAFIBM2AgQgBSAaNgIAQQIhAQwEC0EcEIwBIgVFDQwgBSA+PgIYIAUgPTcCECAFIAY2AgwgBSAHNgIIIAUgEzYCBCAFIBo2AgBBBCEBDAMLQRgQjAEiBUUNCyAFID03AhAgBSAGNgIMIAUgBzYCCCAFIBM2AgQgBSAaNgIAQQMhAQwCC0EcEIwBIgVFDQogBSA+PgIYIAUgPTcCECAFIAY2AgwgBSAHNgIIIAUgEzYCBCAFIBo2AgBBBiEBDAELIAIoApAEISJBOBCMASIFRQ0JIAUgIjYCJCAFID43AhwgBSA9NwIUIAUgBjYCECAFIAc2AgwgBSATNgIIIAUgGjYCBCAFIAE2AgAgBSACKQOoAzcCKCAFQTBqIB4pAwA3AgBBBSEBCwJAIAMgAigC1AJHDQAgAkHUAmoQyyYLIAIoAtgCIgYgA0EDdGoiByAFNgIEIAcgATYCAAsgAiADQQFqIgM2AtwCDAALCwtBnI+EARDpIgALQYyPhAEQ6SIACyACQawBahDYLCACKAKsASACKAKwARCNOiACQaABahDZLCACKAKgASACKAKkARCCOiACICQ2AuwDIAIgJTYC6ANBACEDCyACQbgCakEIaiIGIAJBMGpBCGopAwA3AwAgAiACKQMwNwO4AiAlICUoAgAiGEF/ajYCAAJAIBhBAUcNACACQegDahCCJAsgAkGkBGogBikDADcCACACIAo2ApgEIAIgPTcDkAQgAiA+NwOIBCACIAc2AoQEIAIgBTYCgAQgAiAiNgL8AyACIB42AvgDIAIgATYC9AMgAiATNgLwAyACIA02AuwDIAIgAikDuAI3ApwEIAIgCzYCrAQgAEEEaiEHIAIgAzYC6AMgAkHoA2pBCGohGAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIANBAXFFDQAgE0EnRw0BIABBgICAgHg2AgQgACABNgIIDA8LQQAhBSACQQA2AjggAkKAgICAEDcCMAJAIAIoAvADIgZBIkYNAEEkIAJBlARqIANBAXEiARsoAgAhA0EgIAJB6ANqQShqIAEbKAIAIRMCQAJAAkACQCAGQXNqDgUAAQMDAgMLQQQgAkH0A2ogARshBQwCC0EEIAJB9ANqIAEbIQUMAQtBBCACQfQDaiABGyEFCyACIAU2AuQCIAIgGDYC3AIgAiADNgLYAiACIBM2AtQCIAJBKCACQZgEaiABGzYC4AIgAkHcAmohEyACQfgCaiACQdQCahCSCgJAIAIoAtQCIAIoAtgCENosDQAgAkEANgLIASACQQE2ArwBIAJBqKCXATYCuAEgAkIENwLAASACQTBqQeTwggEgAkG4AWoQijUNDiACQbgBaiACQdQCahCSCiACQbgDaiACQbgBahCgBiACQbgBahDvHyACQQE2ArwBIAJBpNehATYCuAEgAkIBNwLEASACQT82AsQKIAIgAkHACmo2AsABIAIgAkG4A2o2AsAKAkAgAkEwakHk8IIBIAJBuAFqEIo1DQAgAkEBNgK8ASACQbiglwE2ArgBIAJCATcCxAEgAkHsADYCxAogAiATNgLACiACIAJBwApqNgLAASACQTBqQeTwggEgAkG4AWoQijUNACACKAK4AyACKAK8AxD2OQwMCyACKAK4AyACKAK8AxD2OQwOCyACQagCakH+AEHPABCsGyACQQA2AsgBIAJBATYCvAEgAkGooJcBNgK4ASACQgQ3AsABIAJBMGpB5PCCASACQbgBahCKNUUNBwwICyACQQA2AuQCIAJBECACQYAEaiADQQFxIgEbNgLgAiACQSggAkGYBGogARs2AtwCIAJBDCACQfwDaiABGygCADYC2AIgAkEIIAJB6ANqQRBqIAEbKAIANgLUAiACQdQCakEIaiETIAJB+AJqIAJB1AJqEJIKAkAgAigC1AIgAigC2AIQ2iwNACACQQA2AsgBIAJBATYCvAEgAkGooJcBNgK4ASACQgQ3AsABIAJBMGpB5PCCASACQbgBahCKNQ0GIAJBuAFqIAJB1AJqEJIKIAJBuANqIAJBuAFqEKAGIAJBuAFqEO8fIAJBATYCvAEgAkGk16EB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BmoQ4hACQCAgRQ0AAkACQAJAAkACQCABEMIeIiBFDQAgF0EAKQOYjqEBNwMAIA1BACkDkI6hATcDACAEQQApA4iOoQE3A9AGIARB0AZqICAQiAchISAEQdAGahDiECAhDQEgF0EAKQOA5ZkBNwMAIA1BACkD+OSZATcDACAEQQApA/DkmQE3A9AGIARB0AZqICAQiAchISAEQdAGahDiECAhDQEgFyApNwMAIA0gKjcDACAEICs3A9AGIARB0AZqICAQiAchISAEQdAGahDiECAhDQEgF0EAKQPo4JkBNwMAIA1BACkD4OCZATcDACAEQQApA9jgmQE3A9AGIARB0AZqICAQiAchICAEQdAGahDiECAgDQELIB1BAXENBCAEQcADakEQaiIgICw3AwAgBEHAA2pBCGoiISAtNwMAIAQgLjcDwAMgARCxFiAEQcADahDLNQ0BIARBwANqEOIQIARByAFqIAEQ+yAgBCgCzAEhDSAEKALIASEOIARBhApqIAEQ3xogBEHgBmpBACkDuOCZATcDACAEQdAGakEIakEAKQOw4JkBNwMAIARBATYCxAMgBEGk16EBNgLAAyAEQgE3AswDIARBogI2AuACIARBACkDqOCZATcD0AYgBCAEQdwCajYCyAMgBCAEQfwBajYC3AIgBCAEQdAGajYC/AEgBEGYA2ogBEHAA2oQmRYgBEHQBmoQ4hAgBEGsA2ogBEGECmpBCGooAgA2AgAgBCAEKQKECjcCpAMgDiANIARBmANqEP4iIQ8gARCxFiINRQ0SIA0oAgBBJEcNEiABIAEpAxg3A1AgASgCACENIAFBJTYCACANQSRHDQggASABKAIEEOMTDBILAkAgARCxFiIgDQAgASgCsAIhDSAEQYCAgIB4NgLQBiANIA0gBEHQBmoQ/iIhDwwRCyAgKAIAQSRHDQEgASABKQMYNwNQIAEoAgAhDSABQSU2AgACQCANQSRHDQAgASgCBCEPDBELQZTOoQFBKEHY4ZkBENMnAAsgDiASKQIANwIAIAEgASkDGDcDUCABKAIAIRwgAUElNgIAIA5BCGoiIiASQQhqIiMpAgA3AgAgDkEQaiIkIBJBEGoiJSgCADYCACAEIBw2AtAGIARB0AZqEOIQIARBwANqEOIQIAQgDzYC8AkgASABKALMAiIdQcCABnIQ4Q8gBEHAAWog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kAIhBCADQcADakESQQhBOBDhEyADKALEAyEFAkAgAygCwANBAUYNACADQgQ3AjwgA0IANwI0IAMgAygCyAM2AjAgAyAFNgIsIANBADYCKCAEQQJxIQYgA0HiA2ohByADQdoDaiEIIANBiANqQQxqIQkgA0HAA2pBCGohCiADQbgFakEVaiELIANBiANqQRVqIQwgA0G4BWpBBHIhDSADQYgDakEEciEOIANBgAVqQRVqIQ8gA0GABWpBBHIhECADQcgEakEVaiERIANByARqQQRyIRIgA0GYBGpBFWohEyADQZgEakEEciEUIANBwANqQRVqIRUgA0HAA2pBBHIhFiADQShqQQRqIRcgAUHcAmohGCABQdACaiEZA0AgARDtDiEFAkACQAJAAkACQAJAAkAgAkUNACAFRQ0BCyABEO0OIQUCQCACRQ0AIAVFDQAgBS0AACACLQAARg0CDAQLIAIgBXINAyABEO0OGgwCCyADQcQAaiABEMoLIAFB1AJqIAFB3AJqIAEtAOECQQJGIhobKAIAIQUgAUHQAmogAUHYAmogGhsoAgAhGiADQQE2AsQDIANBpNehATYCwAMgA0IBNwLMAyADQegENgK8BSADIAI2AoAFIAMgA0G4BWo2AsgDIAMgA0GABWo2ArgFIANBiANqIANBwANqEJEKIANBnANqIANBzABqKAIANgIAIAMgAykCRDcClAMgASAaIAUgGiAFSRsgGiAFIBogBUsbIANBiANqEJYqCyABEO0OIQUgAkUNACAFRQ0AIAFBAjoA4QIgASABKQPYAjcD0AILAkACQAJAAkACQAJAAkAgBkUNACABKAKEAiIFKAIIIhpB/v///wdLDQEgBSgCFEUNACAaDQIgBUF/NgIIIAEoAoACIhooAggNAyAaQX82AgggBSgCECEbIBpBDGogBSgCFCICEKEwIBooAhAgGigCFEECdGogGyACQQJ0EN8KGiAaIAIgGigCFGo2AhQgBUEANgIUIBogGigCCEEBajYCCCAFIAUoAghBAWo2AggLIAEgBDYCkAIgAygCPCEcIAMoAjQiHSEFAkAgAygCQCICRQ0AIBxBCGohASACIRogHSEFA0AgASgCACAFaiEFIAFBDGohASAaQX9qIhoNAAsLIAMoAjghHiADKAIwIR8gAygCLCEgIANBwANqIAVBCEE4EOETIAMoAsQDIQEgAygCwANBAUYNAyADQQA2ApADIAMgAygCyAM2AowDIAMgATYCiAMgHCACQQxsaiEhIBwhASACRQ0EIBwhAQNAAkAgASgCACICQYCAgIB4Rw0AIAFBDGohAQwGCyABKAIEIQUgA0GIA2ogASkCBCI1QiCIpyIaELAwIAMoAowDIAMoApADIhtBOGxqIDWnIBpBOGwQ3woaIAMgGyAaajYCkAMgBUEAEK8wIAIgBRDjMyABQQxqIgEgIUcNAAwGCwtBnISbARDqIgALQYyEmwEQ6SIAC0H8g5sBEOkiAAsgASADKALIAxD4OQALICEgAWtBDG4hBSAhIAFGDQADQCABQQRqIhooAgAgAUEIaigCABCvMCABKAIAIBooAgAQ4zMgAUEMaiEBIAVBf2oiBQ0ACwsgHiAcENwzIANBiANqIB0QsDAgAygCjAMgA0GIA2pBCGooAgAiAUE4bGogHyAdQThsEN8KGiAAQQhqIAEgHWo2AgAgACADKQKIAzcCACAfQQAQrzAgICAfEOMzDAELIAEQ7Q4aIAFB1AJB2AIgAS0A4QJBAkYbaigCACEhIANBwANqIAFBARDsASADKALEAyEFAkAgAygCwAMiGkGAgICAeEYNACADIAMoAsgDIiI2AogBIAMgBTYChAEgAyAaNgKAAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgARDtDiIbRQ0AIBstAABBrX9qDggBAAAAAAAAAQALAkAgASgCkAIiBUECcUUNACABKAKEAiIaKAIIIhtB/v///wdLDQIgGigCFEUNACAbDQMgGkF/NgIIIAEoAoACIhsoAggNBCAbQX82AgggGigCECEdIBtBDGogGigCFCIcEKEwIBsoAhAgGygCFEECdGogHSAcQQJ0EN8KGiAbIBwgGygCFGo2AhQgGkEANgIUIBsgGygCCEEBajYCCCAaIBooAghBAWo2AggLIAEgBUH///v/AnFBgICAgAFyNgKQAiADQcADaiABICFBASADQYABahBlAkAgAygCwAMiGkETRg0AIANB6ABqQQhqIAhBCGopAQA3AwAgA0HoAGpBDmogCEEOaikBADcBACADIAgpAQA3A2hBCSEbIAMtANkDISAgAy0A2AMhIyADKALUAyEcIAMoAtADISQgAygCzAMhJSADKALIAyEhIAMoAsQDISYgGiEnIAEgBRDcEQwiC0EKIRsgAygCxAMhHSAfIRwgHiEhIAEgBRDcEQwhCwJAIAEtAJMCQSBxDQAgAUHUAmogGCABLQDhAkECRiIhGygCACEbIBkgAUHYAmogIRsoAgAhISADQcaAgIB4NgLAAyAhIBsgISAbSRsgISAbICEgG0sbIANBwANqEP4iIR0gARDtDiIbRQ0fIBstAABBmwFHDR8gAUECOgDhAiABIAEpA9gCNwPQAiABIAEQ3xgQ9RgMHwsCQAJAAkAgARDtDiIbRQ0AIBstAABB2gBGDQELAkAgARDtDiIbRQ0AIBstAABB0wBGDQILIANBATYCxAMgA0Go3JoBNgLAAyADQgA3AswDIAMgA0GIA2o2AsgDIANBwANqQbDcmgEQrS4ACyABEO0OGiABQdQCQdgCIAEtAOECQQJGG2ooAgAhKAJAAkACQAJAAkAgARDHCiIbRQ0AIBstAABBCEYNAQsCQCABEMcKIhtFDQAgGy0AAEUNAgsCQCABKAKQAiIcQQJxDQAgASgChAIiGygCCCIhQf7///8HSw0JAkAgGygCFEUNACAhDQsgG0F/NgIIIAEoAoACIiEoAggNDCAhQX82AgggGygCECEpICFBDGogGygCFCIdEKEwICEoAhAgISgCFEECdGogKSAdQQJ0EN8KGiAhIB0gISgCFGo2AhQgG0EANgIUICEgISgCCEEBajYCCCAbIBsoAghBAWo2AggLIAEgHEEKcjYCkAILAkAgARDtDiIbRQ0AIBstAABB2gBGDQQLIAFB1AJqIBggAS0A4QJBAkYiIRsoAgAhGyAZIAFB2AJqICEbKAIAISEgA0GMAWogARDKCyADQQE2AsQDIANBpNehATYCwAMgA0IBNwLMAyADQegENgK8BSADQdoAOgDIBCADIANBuAVqNgLIAyADIANBgAVqNgK4BSADIANByARqNgKABSADQYgDaiADQcADahCRCiAJQQhqIANBjAFqQQhqKAIANgIAIAkgAykCjAE3AgAgISAbICEgG0kbICEgGyAhIBtLGyADQYgDahD+IiEdIAEQ7Q4iG0UNIyAbLQAAQZsBRw0jIAFBAjoA4QIgASABKQPYAjcD0AIgASABEN8YEPUYDCMLIANBIGogARCHBSADKAIkIR0gAygCIA0iIAEQ0CgaICggASgC1AIiGyAoIBtJGyEhICggGyAoIBtLGyElDAELIANBGGogARCHBSADKAIcIR0gAygCGA0hIAEQ0CgaICggASgC1AIiGyAoIBtJGyEhICggGyAoIBtLGyElC0EJIRtBEiEnIB0hJgwdCyABQQI6AOECIAEgASkD2AI3A9ACAkACQAJAIAEQ7Q4iG0UNACAbLQAAQT9GDQELIANBwANqQQRBCEHIABDhEyADKALEAyEbIAMoAsADQQFGDQlBACEpIANBADYCoAEgAyADKALIAyIqNgKcASADIBs2ApgBIAEoApACISEgARDtDiIbRQ0bAkAgGy0AACIbQbp/aiIcQR9LDQBBASAcdEGBgIKQeHENAgsgG0G5f2pB/wFxQdIATQ0BDBoLIANBwANqIAEQkxlBAC0AwP+jARpBGBCMASIhRQ0eICEgAykDwAM3AwAgIUEQaiADQcADakEQaikDADcDACAhQQhqIAopAwA3AwAgARDtDhpBACEcAkACQCABLQCYAkECRg0AIAEtAJ0CQQFxRQ0BCyABEMEPDQACQAJAIAEQ7Q4iG0UNACAbLQAAQfIARg0BCyABEO0OIhtFDQEgGy0AAEHrAEcNAQsgAUECOgDhAiABIAEpA9gCNwPQAiADQcADaiABED4gAygCxAMhHSADKALAAyIbQTJGDQsgA0GIA2pBMGogCkEwaikDADcDACADQYgDakEoaiAKQShqKQMANwMAIANBiANqQSBqIApBIGopAwA3AwAgA0GIA2pBGGogCkEYaikDADcDACADQYgDakEQaiAKQRBqKQMANwMAIANBiANqQQhqIh8gCkEIaikDADcDACADIAopAwA3A4gDIBtBDkcNCkEALQDA/6MBGkEUEIwBIhxFDR8gHCAdNgIAIBwgAykDiAM3AgQgHEEMaiAfKQMANwIACyABENAoGiAoIAEoAtQCIhsgKCAbSRshJSAoIBsgKCAbSxshJEEIISdBACEbQQAhHUEAISZBACEjQQAhIAwdCyAbICEQixENGCADQcADaiABEN4KIAMoAsADIR0gAy0A1AMiG0ECRg0VIA0gFikCADcCACALIBUvAAA7AAAgDUEIaiIcIBZBCGoiKykCADcCACALQQJqIikgFUECaiIsLQAA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poGAgHg2AogDIAEgHCAhIANBiANqEJYqDAULIANBiANqIAFBABCRBSADKAKIAyEdAkAgAy0AnAMiIUECRg0AIBIgDikCADcCACARIAwpAAA3AAAgEkEIaiAqKQIANwIAIBFBB2ogDEEHaiIcKAAANgAAIAMgIToA3AQgAyAdNgLIBCADQbAEaiADQcgEahD4IAJAIANBsARqQdiPoQFBAhCWLA0AIANBqAJqQQhqIANBsARqQQhqKQMANwMAIANBqAJqQRBqIANBsARqQRBqKQMANwMAIAMgAykDsAQ3A6gCIBsgAygCjAQiMSAbIDFJGyErIBsgMSAbIDFLGyEsDAULAkACQCABEO0OIiFFDQACQCAhLQAAIh1Bun9qIiFBH0sNAEEBICF0QYGAgpB4cQ0CCyAdQbl/akH/AXFB0wBJDQELIANBqAJqQQhqIANBsARqQQhqKQMANwMAIANBqAJqQRBqIANBsARqQRBqKQMANwMAIAMgAykDsAQ3A6gCIBsgAygCvAQiISAbICFJGyErIBsgISAbICFLGyEsIAMoAowEITEMBQsgA0GIA2ogAUEAEJEFIAMoAogDIR0CQCADLQCcAyIhQQJGDQAgECAOKQIANwIAIA8gDCkAADcAACAQQQhqICopAgA3AgAgD0EHaiAcKAAANgAAIAMgIToAlAUgAyAdNgKABSADQegEaiADQYAFahD4IAJAIC1FDQAgAygCjAQhISADKAKIBCEcIANBpoGAgHg2AogDIAEgHCAhIANBiANqEJYqCyADQagCakEIaiADQegEakEIaikDADcDACADQagCakEQaiADQegEakEQaikDADcDACADIAMpA+gENwOoAiADKQOoBCE3IAMoAqQEITEgAygCoAQhMiADKAKcBCEzIAMoApgEIR0gAygCjAQhISADKQOwBBDQHyAbICEgGyAhSRshKyAbICEgGyAhSxshLEIAITVBASE0DAoLIAMpA7AEENAfCyADKQOYBBDQHwwHCyABQQI6AOECIAEgASkD2AI3A9ACIANBiANqIAFBABCRBSADKAKIAyEdAkAgAy0AnAMiIUECRg0AIBYgDikCADcCACAVIAwpAAA3AAAgFkEIaiAOQQhqKQIANwIAIBVBB2ogDEEHaigAADYAACADICE6ANQDIAMgHTYCwAMgA0HYBWogA0HAA2oQ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AygiEEL/AYNCBFINDwsCQCABKAIEIgRBAkYNAAJAAkAgBEEBcQ0AIAMgAUEIajYCOCADQShqIANBOGogAhDqHyADLQAoQQRGDQIgAykDKCIQQv8Bg0IEUg0BDAILIANBKGogAUEIaiACEOM6IAMtAChBBEYNASADKQMoIhBC/wGDQgRRDQELIBBC/wGDQgRSDQ8LIANBKGogAiADQcAAakHEq6EBENIRAkAgAy0AKEEERg0AIAMpAygiEEL/AYNCBFINDwsgASgCGEUNDQJAIAItAE0NACADQShqIAIQhxYgAy0AKEEERg0AIAMpAygiEEL/AYNCBFINDwsgA0EoaiABQRhqIAIQ4zogAy0AKEEERw0EDA0LIANBKGogAiABKAIUIgRBABDkAgJAAkAgAy0AKEEERg0AIAMpAygiEEL/AYNCBFINAQsCQCAERQ0AIANBKGogAiAEELAtIAMtAChBBEYNACADKQMoIhBC/wGDQgRSDQELIANBADYCQCADQShqIAIgA0HAAGpBhpKhAUEDEM8RAkAgAy0AKEEERg0AIAMpAygiEEL/AYNCBFINAQsgA0EoaiACIANBwABqQe2roQEQ0hECQCADLQAoQQRGDQAgAykDKCIQQv8Bg0IEUg0BCyADQShqIAFBBGogAhCrEAJAIAMtAChBBEYNACADKQMoIhBC/wGDQgRSDQELAkACQCABKAIEIAEoAggQxRgNACACLQBNDQEgA0EoaiACEIcWIAMtAChBBEYNASADKQMoIhBC/wGDQgRRDQEMAgsgA0EoaiACEIcWIAMtAChBBEYNACADKQMoIhBC/wGDQgRSDQELIANBKGogAiADQcAAakGckqEBQQIQzxECQCADLQAoQQRGDQAgAykDKCIQQv8Bg0IEUg0BCwJAAkAgASgCDBC+DA0AIAItAE0NASADQShqIAIQhxYgAy0AKEEERg0BIAMpAygiEEL/AYNCBFENAQwCCyADQShqIAIQhxYgAy0AKEEERg0AIAMpAygiEEL/AYNCBFINAQsgA0EoaiABQQxqIAIQ4zoCQCADLQAoQQRGDQAgAykDKCIQQv8Bg0IEUg0BCyADQShqIAIgA0HAAGpBvOKiARDSEQJAIAMtAChBBEYNACADKQMoIhBC/wGDQgRSDQELIANBKGogAUEQaiACEOc6IAMtAChBBEYNHiAD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LQBJDQIMAwsgA0HAAGogECABENAJAkAgAy0AQEEERg0AIAMpA0AiFkL/AYNCBFINBAsgEEEMaiEQIARBdGohBAwACwsgA0EANgJAIANBOGogASADQcAAakHFq6EBQQcQzxECQCADLQA4QQRGDQAgAykDOCIWQv8Bg0IEUg0CCyADQcAAaiABEIcWIAMtAEBBBEYNACADKQNAIhZC/wGDQgRSDQELIANBwABqIAEgAi0ASxDFDAJAIAMtAEBBBEYNACADKQNAIhZC/wGDQgRSDQELAkAgAi0AREUNACADQQA2AkAgA0E4aiABIANBwABqQcyroQFBBhDPEQJAIAMtADhBBEYNACADKQM4IhZC/wGDQgRSDQILIANBwABqIAEQhxYgAy0AQEEERg0AIAMpA0AiFkL/AYNCBFINAQsCQCACLQBFRQ0AIANBADYCQCADQThqIAEgA0HAAGpB0quhAUEIEM8RAkAgAy0AOEEERg0AIAMpAzgiFkL/AYNCBFINAgsgA0HAAGogARCHFiADLQBAQQRGDQAgAykDQCIWQv8Bg0IEUg0BCwJAIAItAEdFDQAgA0EANgJAIANBOGogASADQcAAakHaq6EBQQgQzxECQCADLQA4QQRGDQAgAykDOCIWQv8Bg0IEUg0CCyADQcAAaiABEIcWIAMtAEBBBEYNACADKQNAIhZC/wGDQgRSDQELAkAgAi0ASEUNACADQQA2AkAgA0E4aiABIANBwABqQeKroQFBCBDPEQJAIAMtADhBBEYNACADKQM4IhZC/wGDQgRSDQILIANBwABqIAEQhxYgAy0AQEEERg0AIAMpA0AiFkL/AYNCBFINAQsgA0HAAGogEyABENwGAkAgAy0AQEEERg0AIAMpA0AiFkL/AYNCBFINAQsCQCACLQBGRQ0AIANBADYCQCADQThqIAEgA0HAAGpB6quhARDSESADLQA4QQRGDQAgAykDOCIWQv8Bg0IEUg0BCwJAIAIoAkBFDQAgAyACQcAAajYCJAJAIAItAEpFDQAgA0EANgJAIANBOGogASADQcAAakHrq6EBENIRIAMtADhBBEYNACADKQM4IhZC/wGDQgRSDQILIANBADYCQCADQThqIAEgA0HAAGpB8NGhARDSEQJAIAMtADhBBEYNACADKQM4IhZC/wGDQgRSDQILIANBwABqIAEQhxYC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LQAoQQRGDQAgAykDKCIWQv8Bg0IEUg0BCwJAIAItADVFDQAgA0EANgIoIANBOGogASADQShqQdKroQFBCBDPEQJAIAMtADhBBEYNACADKQM4IhZC/wGDQgRSDQILIANBKGogARCHFiADLQAoQQRGDQAgAykDKCIWQv8Bg0IEUg0BCwJAIAItADdFDQAgA0EANgIoIANBOGogASADQShqQdqroQFBCBDPEQJAIAMtADhBBEYNACADKQM4IhZC/wGDQgRSDQILIANBKGogARCHFiADLQAoQQRGDQAgAykDKCIWQv8Bg0IEUg0BCwJAAkACQAJAAkACQAJAAkACQCACLQA4DgMCAAECCyADQQA2AiggA0E4aiABIANBKGpB9KuhAUEDEM8RAkAgAy0AOEEERg0AIAMpAzgiFkL/AYNCBFINCQtBASANdEEVcQ0CIAEtAE0NAyADQShqIAEQhxYgAy0AKEEERg0DIAMpAygiFkL/AYNCBFENAwwICyADQQA2AiggA0E4aiABIANBKGpB96uhAUEDEM8RAkAgAy0AOEEERg0AIAMpAzgiFkL/AYNCBFINCAtBASANdEEVcQ0DIAEtAE0NBCADQShqIAEQhxYgAy0AKEEERg0EIAMpAygiFkL/AYNCBFENBAwHCyATLQBFRQ0EIANBADYCKCADQThqIAEgA0EoakHuq6EBQQUQzxECQCADLQA4QQRGDQAgAykDOCIWQv8Bg0IEUg0HCyADQShqIAEQhxYgAy0AKEEERg0EIAMpAygiFkL/AYNCBFENBAwGCyADQShqIAEQhxYgAy0AKEEERg0AIAMpAygiFkL/AYNCBFINBQsgA0EoaiAPIAEQ3AYgAy0AKEEERg0DIAMpAygiFkL/AYNCBFENAwwECyADQShqIAEQhxYgAy0AKEEERg0AIAMpAygiFkL/AYNCBFINAwsgA0EoaiAPIAEQ3AYgAy0AKEEERg0BIAMpAygiFkL/AYNCBFINAgwBCwJAIBMtAERFDQAgA0EANgIoIANBOGogASADQShqQfOroQEQ0hEgAy0AOEEERg0AIAMpAzgiFkL/AYNCBFINAgsgA0EoaiAPIAEQ3AYgAy0AKEEERg0AIAMpAygiFkL/AYNCBFINAQsCQCACLQA2RQ0AIANBADYCKCADQThqIAEgA0EoakHqq6EBENIRIAMtADhB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AQsgAkGAgICAeDYCnAEgAkG8BmoQ1AkLIAJBqANqELgXDAgLIAEQ8zEhBSACQagDakEQakEAKQPovZkBIhE3AwAgAkGoA2pBCGpBACkD4L2ZASISNwMAIAJBACkD2L2ZASITNwOoAwJAAkAgARCxFiACQagDahDLNQ0AIAJBqANqEOIQIAJB0ABqIAEQ+yAgAigCVCEFIAIoAlAhAyACQfgCaiABEN8aIAJB4AZqQRBqIBE3AwAgAkHgBmpBCGogEjcDAEEBIQggAkEBNgKsAyACQaTXoQE2AqgDIAJCATcCtAMgAkGiAjYCpAIgAiATNwPgBiACIAJBoAJqNgKwAyACIAJB4AJqNgKgAiACIAJB4AZqNgLgAiACQbgGaiACQagDahCZFiACQeAGahDiECACQcwGaiACQfgCakEIaigCADYCACACIAIpAvgCNwLEBiADIAUgAkG4BmoQ/iIhBSABELEWIgNFDRogAygCAEEkRw0aIAEgASkDGDcDUCABKAIAIQMgAUElNgIAIANBJEcNASABIAEoAgQQ4xMMGgsgASABKQMYNwNQIAEoAgAhAyABQSU2AgAgAkHgBmpBDGogAUEMaikCADcCACACQeAGakEUaiABQRRqKAIANgIAIAIgASkCBDcC5AYgAiADNgLgBiACQeAGahDiECACQagDahDiECACQQA2AugGIAJCgICAgMAANwLgBiACQcgAaiABQQEgBSACQeAGahCyCyACKAJMIQUgAigCSCEIDBkLQZTOoQFBKEHY4ZkBENMnAAsgBkEAKQOYxZkBNwMAIAdBACkDkMWZATcDACACQQApA4jFmQE3A+AGIAJB4AZqIAUQiAchCCACQeAGahDiECAIDRUCQCAFKAIAIghBHksNAEEBIAh0QYCAgMAGcQ0WCyACQfAGaiIGQQApA7DDmQE3AwAgAkHoBmoiB0EAKQOow5kBNwMAIAJBACkDoMOZATcD4AYgAkHgBmogBRCIByEIIAJB4AZqEOIQAkACQCAIDQAgBkEAKQOQtpkBNwMAIAdBACkDiLaZATcDACACQQApA4C2mQE3A+AGIAJB4AZqIAUQiAchCCACQeAGahDiECAIRQ0BCyABIAEpAxg3A1AgASgCACEFIAFBJTYCACACQeAGakEMaiABQQxqKQIANwIAIAJB4AZqQRRqIAFBFGooAgA2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ACkDuMWZATcD4AYgARCxFiACQeAGahDLNSEFIAJB4AZqEOIQIAUNCAJAIAEtANQCQQJHDQACQCABELEWIgVFDQAgAkHwBmpBACkDiMeZATcDACACQegGakEAKQOAx5kBNwMAIAJBACkD+MaZATcD4AYgAkHgBmogBRCIByEFIAJB4AZqEOIQIAUNCgsgARDFKA0JCyABEMUoDQggAkG4A2pBACkDmMiZATcDACACQbADakEAKQOQyJkBNwMAIAJBACkDiMiZATcDqAMgARCxFiACQagDahDLNQ0BIAJBqANqEOIQIAJBMGogARD7ICACKAI0IQUgAigCMCEDIAJBi4GAgHg2AuAGIAMgBSACQeAGahD+IiEFQQEhCCABELEWIgNFDQ4gAygCAEEkRw0OIAEgASkDGDcDUCABKAIAIQMgAUElNgIAIANBJEcNBCABIAEoAgQQ4xMMDgsgASABKALMAiIIQYCACHIQ4Q8gAkHgBmogASADIAJBlAJqQQAQeSACKALgBiEFIAItAPQGIgNBA0YNBCACQagDakEMaiACQeAGakEMaikCADcCACACQagDakEXaiACQeAGakEXai0AADoAACACIAIpAuQGNwKsAyACIAIvAPUGOwC9AyACIAM6ALwDIAIgBTYCqAMgAigC+AYhBCABIAgQoD4gBCgCFEHYAGwhAyAEKAIQIQUCQANAIANFDQECQAJAAkACQCAFKAIAIghBfGpBACAIQXtqQQhJG0F/ag4DAAMBAwsgBS0ANQ0BDAILIAUtAEVBAUcNAQsgBSgCLCEIIAUoAighBiACQaCBgIB4NgLgBiABIAYgCCACQeAGahCIKgsgBUHYAGohBSADQah/aiEDDAALCyACQeAGaiACQagDaiAEEOkSIAIoAuAGQbuBgIB4Rg0GIAJBCGogARD7IEEBIQggAigCCCACKAIMIAJB4AZqEP4iIQUgARCxFiIDRQ0QIAMoAgBBJEcNECABIAEpAxg3A1AgASgCACEDIAFBJTYCACADQSRHDQUgASABKAIEEOMTDBALIAEgASkDGDcDUCABKAIAIQUgAUElNgIAIAJB4AZqQQxqIAFBDGopAgA3AgAgAkHgBmpBFGogAUEUaigCADYCACACIAEpAgQ3AuQGIAIgBTYC4AYgAkHgBmoQ4hAgAkGoA2oQ4hAgAkHgBmogARCG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QYAFakEMaiADQYgCakEMaikCADcCACADQYAFakEXaiADQYgCakEXai0AADoAACADIAMpAowCNwKEBSADIAMvAJ0COwCVBSADIAc6AJQFIAMgBDYCgAUgA0GVBWohByADQYAFakEEciELQQAhCiABLQDUAkECRw0NQQAhBCADQYAFakHUj6EBQQQQlixFDQwCQCABELEWIghFDQBBACEJIANBmAJqIgxBACkD8N+ZATcDACADQZACaiINQQApA+jfmQE3AwAgA0EAKQPg35kBNwOIAiADQYgCaiAIEIgHIQ4gA0GIAmoQ4hBBASEKIA4NFEEAIQkgDEEAKQPgwZkBNwMAIA1BACkD2MGZATcDACADQQApA9DBmQE3A4gCIANBiAJqIAgQiAchCCADQYgCahDiECAIDRQLIAEQxShFDQwgA0GYAmpBACkD4LuZATcDACADQZACakEAKQPYu5kBNwMAIANBACkD0LuZATcDiAIgARCxFiADQYgCahDLNSEEIANBiAJqEOIQAkAgBEUNACABEMIeIgRFDQIgA0GYAmpBACkD4LuZATcDACADQZACakEAKQPYu5kBNwMAIANBACkD0LuZATcDiAIgA0GIAmogBBCIByEEIANBiAJqEOIQIARFDQILIANBiAJqIAEQmBMgAygCiAIhBCADLQCcAiIKQQJGDRYgA0G4AWogA0GUAmopAgA3AwAgA0GsAWpBAmogA0GfAmotAAA6AAAgAyADKQKMAjcDsAEgAyADLwCdAjsBrAEgAykDgAUQ0h8gA0GsAWohCSADQbABaiEIDAsLIANBiAJqIAEQwxlBGEEIEOExIgdBEGogA0GIAmpBEGopAwA3AwAgB0EIaiADQYgCakEIaikDADcDACAHIAMpA4gCNwMAIAEQsRYaQQAhCwJAIAEtANQCQQJGDQAgAS0A2QJBAXFFDQgLIAEQuTINByADQeADakEQaiIEQQApA8C8mQE3AwAgA0HgA2pBCGoiC0EAKQO4vJkBNwMAIANBACkDsLyZATcD4AMgARCxFiADQeADahDLNQ0FIANB4ANqEOIQIARBACkD2LyZATcDACALQQApA9C8mQE3AwAgA0EAKQPIvJkBNwPgAyABELEWIANB4ANqEMs1DQEgA0HgA2oQ4hBBACELDAcLAkAgARDCHiIKDQBBACEEDAsLQQAhBCAD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LQAAOgAAIAMgBDYCgAUgAyAJOgCUBSAIIQkMAwsgCCEJCyADKQOABRDSHwwFC0EAIQkLIANBiAJqQRBqQQApA+C7mQE3AwAgA0GIAmpBCGpBACkD2LuZATcDACADQQApA9C7mQE3A4gCIAEQsRYgA0GIAmoQyzUhBCADQYgCahDiECAEDQIgA0HgA2pBEGpBACkDmI6hATcDACADQeADakEIakEAKQOQjqEBNwMAIANBACkDiI6hATcD4AMgARCxFiADQeADahDLNQ0BIANB4ANqEOIQIANBwABqIAEQ+yAgAygCRCEEIAMoAkAhBSADQfABaiABEN8aIANBmAJqQQApA5iOoQE3AwAgA0GIAmpBCGpBACkDkI6hATcDACADQQE2AuQDIANBpNehATYC4AMgA0IBNwLsAyADQaICNgLMBCADQQApA4iOoQE3A4gCIAMgA0HIBGo2AugDIAMgA0HwBWo2AsgEIAMgA0GIAmo2AvAFIANBuAVqIANB4ANqEOYiIANBiAJqEOIQIANBzAVqIANB8AFqQQhqKAIANgIAIAMgAykC8AE3AsQFIAUgBCADQbgFahD+IiEEIAEQsRYiBUUNACAFKAIAQSRHDQAgASABKQMYNwNQIAEoAgAhBSABQSU2AgAgBUEkRw0EIAEgASgCBBDjEwsgAykDgAUQ0h8MBgsgASABKQMYNwNQIAEoAgAhBCABQSU2AgAgA0GUAmogBkEIaikCADcCACADQZwCaiAGQRBqKAIANgIAIAMgBikCADcCjAIgAyAENgKIAiADQYgCahDiECADQeADahDiEAsgA0GgAmogA0GABWpBCGopAwAiJzcDACADQagCaiADQYAFakEQaikDADcDACADIAMpA4AFNwOYAiADQgM3A4gCIAMgJzcDkAIgA0GgAWogA0GIAmoQ6SoLIAEQ8zEhByADQeADakEQaiIEQQApA+DBmQE3AwAgA0HgA2pBCGpBACkD2MGZATcDACADQQApA9DBmQE3A+ADIAEQsRYgA0HgA2oQyzUNASADQeADahDiECAEQQApA/DfmQE3AwAgA0HgA2pBCGoiD0EAKQPo35kBNwMAIANBACkD4N+ZATcD4AMCQCABELEWIANB4ANqEMs1DQAgA0HgA2oQ4hAMAwsgASABKQMYNwNQIAEoAgAhBCABQSU2AgAgA0GUAmogBkEIaiIQKQIANwIAIANBnAJqIAZBEGoiESgCADYCACADIAYpAgA3AowCIAMgBDYCiAIgA0GIAmoQ4hAgA0HgA2oQ4hAgA0GIAmpBBHIhCyADQbEDaiEMIANBkANqIQ4gA0G4BWpBFWohEiADQeADakEVaiETIANBuAVqQQRyIRQgA0HgA2pBBHIhCCADQYAFakEVaiEVIANBgAVqQQRyIRYgA0HIBGpBFWohFyADQcgEakEEciEYIANBsARqQRVqIRkgA0GwBGpBBHIhGiADQYgCakEVaiEbAkACQANAAkACQCABELEWRQ0AIANBiAJqQRBqIhxBACkD+MOZASIoNwMAIANBiAJqQQhqIh1BACkD8MOZASIpNwMAIANBACkD6MOZASIqNwOIAiABELEWIANBiAJqEMs1IQcgA0GIAmoQ4hAgBw0AIAEQ8zEhByADQeADaiABELIIIAMoAugDIQ0CQAJAAkACQAJAAkACQAJAAkACQAJAIAMpA+ADIidCAlENACADKQP4AyErIAMoAvQDIR4gAygC8AMhHyADKALsAyEgAkACQAJAAkAgJ1BFDQAgAyArNwOoBCADIB42AqQEIAMgHzYCoAQgAyAgNgKcBCADIA02ApgEQQAhICABLQDUAkECRw0KIANBmARqQdSPoQFBBBCWLEUNCiABELEWIg1FDQogDSgCAEECRw0KIANB2AVqIAEQhgggA0HgA2ogA0HYBWoQmjAgAygC4AMhDSADLQD0AyIgQQJGDQEgGiAIKQIANwIAIBkgEy8AADsAACAaQQhqIAhBCGoiHikCADcCACAZQQJqIBNBAmotAAA6AAAgAyAgOgDEBCADIA02ArAEAkACQAJAAkAgA0GwBGpB2I+hAUECEJYsDQAgCg0BDA0LAkAgARCxFiINRQ0AIA0oAgBBAkYNAwsgCg0BDAoLIAMoAqQEIQ0gAygCoAQhICADQaaBgIB4NgLgAyABICAgDSADQeADahCIKgwLCyADKAKkBCENIAMoAqAEISEgA0GmgYCAeDYC4AMgASAhIA0gA0HgA2oQiCoMCAsgA0HgA2ogAUEAEJ4HIAMoAuADIQQCQCADLQD0AyINQQJGDQAgGCAIKQIANwIAIBcgEykAADcAACAYQQhqIB4pAgA3AgAgF0EHaiATQQdqIiAoAAA2AAAgAyANOgDcBCADIAQ2AsgEIANB2AVqIANByARqEPggAkAgA0HYBWpB2I+hAUECEJYsDQAgA0HYAmpBCGogA0HYBWpBCGopAwA3AwAgA0HYAmpBEGogA0HYBWpBEGopAwA3AwAgAyADKQPYBTcD2AIgByADKAKkBCIiIAcgIkkbISEgByAiIAcgIksbISMMCAsCQAJAIAEQsRYiBEUNACAEKAIAQQJGDQELIANB2AJqQQhqIANB2AVqQQhqKQMANwMAIANB2AJqQRBqIANB2AVqQRBqKQMANwMAIAMgAykD2AU3A9gCIAcgAygC5AUiBCAHIARJGyEhIAcgBCAHIARLGyEjIAMoAqQEISIMCAsgA0HgA2ogAUEAEJ4HIAMoAuADIQQCQCADLQD0AyINQQJGDQAgFiAIKQIANwIAIBUgEykAADcAACAWQQhqIB4pAgA3AgAgFUEHaiAgKAAANgAAIAMgDToAlAUgAyAENgKABSADQegEaiADQYAFahD4ICAKDQQMBwsgAykD2AUQ0h8LIAMpA7AEENIfDAwLIANB2AVqQRBqQQApA/i7mQE3AwAgA0HYBWpBCGpBACkD8LuZATcDACADQQApA+i7mQE3A9gFAkACQCABELEWIANB2AVqEMs1DQAgA0HYBWoQ4hAgAyAgNgLsAyADIA02AugDIANB74CAgHg2AuADIB8gHiADQeADahD+IiEEIAEQsRYiBUUNASAFKAIAQSRHDQEgASABKQMYNwNQIAEoAgAhBSABQSU2AgAgBUEkRw0EIAEgASgCBBDjEwwBCyAIIAYpAgA3AgAgASABKQMYNwNQIAEoAgAhBCABQSU2AgAgCEEIaiIhIBApAgA3AgAgCEEQaiARKAIANgIAIAMgBDYC4AMgA0HgA2oQ4hAgA0HYBWoQ4hAgA0HgA2ogAUEAEJ4HIAMoAuADIQQCQCADLQD0AyIjQQJGDQAgCyAIKQIANwIAIBsgEykAADcAACALQQhqICEpAgA3AgAgG0EHaiATQQdqKAAANgAAIAMgIzoAnAIgAyAENgKIAiADQfAFaiADQYgCahD4ICADQdgCakEIaiADQfAFakEIaikDADcDACADQdgCakEQaiADQfAFakEQaikDADcDACADIAMpA/AFNwPYAiAHIAMoAvwFIgQgByAESRshISAHIAQgByAESxshI0EAISRCASEnICshLCAeISIgHyElICAhJiANIQQMDwsgIK1CIIYgDa2EENIfCyArEKI3DBYLQgUhJyANIQQMCwsgAygCpAQhBCADKAKgBCENIANBpoGAgHg2AuADIAEgDSAEIANB4ANqEIgqDAILQZTOoQFBKEHY4ZkBENMnAAsgDSEEDBILIANB2AJqQQhqIANB6ARqQQhqKQMANwMAIANB2AJqQRBqIANB6ARqQRBqKQMANwMAIAMgAykD6AQ3A9gCIAMpA8AEISwgAygCvAQhIiADKAK4BCElIAMoArQEISYgAygCsAQhBCADKAKkBCENIAMpA9gFENIfIAcgDSAHIA1JGyEhIAcgDSAHIA1LGyEjQgAhJwwCCyADKAKgBCElIAMoApwEISYgAygCmAQhBCADKQOoBCEsIAMpA7AEENIfQQAhJAwECyADQdgCakEIaiADQbAEakEIaikDADcDACADQdgCakEQaiADQbAEakEQaikDADcDACADIAMpA7AENwPYAiAHIAEoAlQiDSAHIA1JGyEhIAcgDSAHIA1LGyEjQgIhJwtBASEkDAQLIANB4ANqQRBqIg0gA0GwBGpBEGopAwA3AwAgDyADQbAEakEIaikDADcDACADIAMpA7AENwPgAyADKQOYBBDSHyADQZgEakEQaiANKQMANwMAIANBmARqQQhqIA8pAwA3AwAgAyADKQPgAzcDmARBASEgCyADQdgFakEQakEAKQP4u5kBNwMAIANB2AVqQQhqQQApA/C7mQE3AwAgA0EAKQPou5kBNwPYBQJAIAEQsRYgA0HYBWoQyzUNACADQdgFahDiECADQdgCakEIaiADQZgEakEIaikDADcDACADQdgCakEQaiADQZgEakEQaikDADcDACADIAMpA5gENwPYAiAHIAEoAlQiDSAHIA1JGyEhIAcgDSAHIA1LGyEjQgIhJyAgISQMBAsgCCAGKQIANwIAIAEgASkDGDcDUCABKAIAIQQgAUElNgIAIAhBCGoiDSAQKQIANwIAIAhBEGogESgCADYCACADIAQ2AuADIANB4ANqEOIQIANB2AVqEOIQIANB4ANqIAFBABCeByADKALgAyEEIAMtAPQDIh5BAkYNASAUIAgpAgA3AgAgEiATKQAANwAAIBRBCGogDSkCADcCACASQQdqIBNBB2ooAAA2AAAgAyAeOgDMBSADIAQ2ArgFIANBoAVqIANBuAVqEPggIANB2AJqQQhqIANBoAVqQQhqKQMANwMAIANB2AJqQRBqIANBoAVqQRBqKQMANwMAIAMgAykDoAU3A9gCIAcgAygCrAUiBCAHIARJGyEhIAcgBCAHIARLGyEjIAMpA6gEISwgAygCpAQhIiADKAKgBCElIAMoApwEISYgAygCmAQhBCAgISQLQgAhJwwCC0IFIScLIAMpA5gEENIfICdCBVENCQsgDiADKQPYAjcCACAMIAMoANECNgAAIA5BCGogA0HYAmpBCGopAwA3AgAgDkEQaiADQdgCakEQaikDADcCACAMQQNqIANB0QJqQQNqKAAANgAAIAMgLDcDiAMgAyAiNgKEAyADICU2AoADIAMgJjYC/AIgAyAkOgCwAyADICM2AqwDIAMgITYCqAMgAyAnNwPwAiADIAQ2AvgCIANBoAFqIANB8AJqEOkqIBwgKDcDACAdICk3AwAgAyAqNwOIAiABELEWIANBiAJqEMs1IQcgA0GIAmoQ4hAgBw0AIANB4ANqQRBqQQApA5iOoQE3AwAgD0EAKQOQjqEBNwMAIANBACkDiI6hATcD4AMgARCxFiADQeADahDLNQ0BIANB4ANqEOIQIANBOGogARD7ICADKAI8IQQgAygCOCEFIANBvANqIAEQ3xogA0GYAmpBACkDmI6hATcDACADQYgCakEIakEAKQOQjqEBNwMAIANBATYC5AMgA0Gk16EBNgLgAyADQgE3AuwDIANBogI2AoQFIANBACkDiI6hATcDiAIgAyADQYAFajYC6AMgAyADQcgEajYCgAUgAyADQYgCajYCyAQgA0G4BWogA0HgA2oQ5iIgA0GIAmoQ4hAgA0HMBWogA0G8A2pBCGooAgA2AgAgAyADKQK8AzcCxAUgBSAEIANBuAVqEP4iIQRBCiEFIAEQsRYiBkUNCSAGKAIAQSRHDQkgASABKQMYNwNQIAEoAgAhBiABQSU2AgAgBkEkRw0DIAEgASgCBBDjEwwJCyADQeADakEQakEAKQP4w5kBIic3AwAgA0HgA2pBCGpBACkD8MOZASIoNwMAIANBACkD6MOZASIpNwPgAwJAIAEQsRYgA0HgA2oQyzUNACADQeADahDiECADQTBqIAEQ+yAgAygCNCEEIAMoAjAhBSADQcgDaiABEN8aIANBiAJqQRBqICc3AwAgA0GIAmpBCGogKDcDACADQQE2AuQDIANBpNehATYC4AMgA0IBNwLsAyADQaICNgKEBSADICk3A4gCIAMgA0GABWo2AugDIAMgA0HIBGo2AoAFIAMgA0GIAmo2AsgEIANBuAVqIANB4ANqEOYiIANBiAJqEOIQIANBzAVqIANByANqQQhqKAIANgIAIAMgAykCyAM3AsQFIAUgBCADQbgFahD+IiEEQQohBSABELEWIgZFDQkgBigCAEEkRw0JIAEgASkDGDcDUCABKAIAIQYgAUElNgIAIAZBJEcNBCABIAEoAgQQ4xMMCQsgASABKQMYNwNQIAEoAgAhBCABQSU2AgAgA0GUAmogBkEIaikCADcCACADQZwCaiAGQRBqKAIANgIAIAMgBikCADcCjAIgAyAENgKIAiADQYgCahDiECADQeADahDiEAwGCyALIAYpAgA3AgAgASABKQMYNwNQIAEoAgAhByABQSU2AgAgC0EIaiAQKQIANwIAIAtBEGogESgCADYCACADIAc2AogCIANBiAJqEOIQIANB4ANqEOIQDAALC0GUzqEBQShB2OGZARDTJwALQZTOoQFBKEHY4ZkBENMnAAtBlM6hAUEoQdjhmQEQ0ycACyABIAEpAxg3A1AgASgCACELIAFBJTYCACADQZQCaiIIIAZBCGoiDikCADcCACADQYgCakEUaiIMIAZBEGooAgA2AgAgAyAGKQIANwKMAiADIAs2AogCIANBiAJqEOIQIANB4ANqEOIQIARBACkD+LuZASInNwMAIANB4ANqQQhqQQApA/C7mQEiKDcDACADQQApA+i7mQEiKTcD4AMCQAJAIAEQsRYgA0HgA2oQyzUNACADQeADahDiECADQShqIAEQ+yAgAygCLCEEIAMoAighBSADQfwBaiABEN8aIANBmAJqICc3AwAgA0GIAmpBCGogKDcDACADQQE2AuQDIANBpNehATYC4AMgA0IBNwLsAyADQaICNgKEBSADICk3A4gCIAMgA0GABWo2AugDIAMgA0HIBGo2AoAFIAMgA0GIAmo2AsgEIANBuAVqIANB4ANqEOYiIANBiAJqEOIQIANBuAVqQRRqIANB/AFqQQhqKAIANgIAIAMgAykC/AE3AsQFIAUgBCADQbgFahD+IiEEQQohBSABELEWIgZFDQQgBigCAEEkRw0E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QfADahCRCiACKAKYAiACKAKcAhCGNiACQZgCakEIaiACQfACakEIaigCADYCACACIAIpAvACNwOYAgsgAkHwA2pBCGogAkGYAmpBCGooAgA2AgAgAiACKQOYAjcD8AMgAkHwA2oQhS8hKSACIBc2AvgBIAIgCzYC9AEgAiAbNgLwASACQQA6APwBIAIgKTcD6AEgAkEIaiACQegBahCmJyACKAIQIQggAikDCCErAkAgASgCcCIGIAEoAmhHDQAgIRDXDgsgASgCbCAGQQR0aiIRIAg2AgggESArNwMAIAEgBkEBajYCcEEALQDA/6MBGkHAABCMASIGRQ0IIAZBADYCCCAGQjE3AwAgBCgCDCEIIAQgBjYCDAJAIClCA4NCAFINACAppyIGIAYoAgAiBkEBajYCACAGQX9MDQkLIAIgFzYCkAIgAiALNgKMAiACIBs2AogCIAJBADoAlAIgAiApNwOAAiACQZgCaiACQYACahDwFiAPQRhqIAJBmAJqQRhqKQMANwIAIA9BEGogAkGYAmpBEGopAwA3AgAgD0EIaiACQZgCakEIaikDADcCACAPIAIpA5gCNwIAIAJB8AJqQQhqIhcgAkHwA2pBCGopAgA3AwAgAkHwAmpBEGoiCyACQfADakEQaikCADcDACACQfACakEYaiIbIAJB8ANqQRhqKQIANwMAIAJB8AJqQSBqIhEgAkHwA2pBIGooAgA2AgAgAiACKQLwAzcD8AIgBCgCDBDoASAEKAIMIgZBADYCACAGIAIpA/ACNwIEIAZBADoAPCAGIAg2AjggBkIANwMwIAZBDGogFykDADcCACAGQRRqIAspAwA3AgAgBkEcaiAbKQMANwIAIAZBJGogESgCADYCACAEKAIUIQggBCgCECEGICggAikD6AE3AgAgKEEIaiACQegBakEIaikDADcCACAoQRBqIAJB6AFqQRBqKQMANwIAQQAtAMD/owEaQcAAEIwBIhFFDQggEUEaNgIAIBEgAikCyAM3AgQgEUEMaiACQcgDakEIaikCADcCACARQRRqIAJByANqQRBqKQIANwIAIBFBHGogAkHIA2pBGGooAgA2AgALQQMhFwsgAiAKNgKMAyACIBQ2AogDIAIgETYC9AIgAiAXNgLwAiACIAmtQiCGIBWthDcDgAMgAiAIrUIghiAGrYQ3A/gCIAQo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AkADQCAKIAkgCyASIAhqIhAtAABqLQAAakECdGooAgAhBSAIQQNqIhEgBk8NBCAFQYCAgMAATw0EIAogBSALIBBBAWotAABqLQAAakECdGooAgAiCUH///8/Sw0BIAogCSALIBBBAmotAABqLQAAakECdGooAgAiBUH///8/Sw0CAkAgCiAFIAsgEEEDai0AAGotAABqQQJ0aigCACIJQf///z9LDQAgCEEEaiIIIAZJDQEMFgsLIAUhECAJIQUMBAsgCEEBaiERIAUhECAJIQUMAwsgCEECaiERIAkhEAwCCwJAAkAgAigCsAFFDQAgAiAINgK4AQJAIAggA0kNACAIIANB7NaDARChGwALIAIoAnwiECAJQf///z9xIAsgEiAIai0AACIKai0AAGoiBU0NAQJAIAIoAnggBUECdGooAgAiBUF/TA0AIAghESAFIQkMBQsgBCACNgLIASAEIAE2AsQBIARB+ABqIARBxAFqIAkgCkEIdBCNAQJAIAQoAnhBAXENACAEKAJ8IQkgCCERDAULIAgQ2y0hBSAAQQI2AgAgACAFNgIEDCwLQYzVgwFBH0Gs1YMBEKoeAAsgBSAQQYjUgwEQoRsACyAJIRAgCCERCwJAIAVBAEgNACAFIQkMAQsgAigCsAFFDQIgAiARNgK4ASAYIBAgCyASIBFqLQAAIghqLQAAaiIFTQ0DIAogBUECdGooAgAiCUF/Sg0AIAQgAjYCyAEgBCABNgLEASAEQYABaiAEQcQBaiAQIAhBCHQQjQEgBCgCgAFBAXENASAEKAKEASEJCwJAAkAgCUH///8/TQ0AAkAgCUGAgICAAXENACAJQYCAgMAAcQ0GIAlBgICAgARxDQcgCUGAgICAAnFFDQggAiAREIwkAkAgESADTw0AIBIgEWotAAAgERC9KyEFIABBAjYCACAAIAU2AgQMKwsgESADQdjXgwEQoRsACyAEQbgBaiANKAIAIA0oAgQiBSgCCEF/akF4cWpBCGogEiADIBEgBiAFKAIgERMAAkAgBCgCuAENACACIAYQjCRBACEFDBALIAQoArwBIgggEUsNAQsgESEIDA8LIA9FDQ8gBCAINgLgASAEIAY2AuQBIAMgBkkNBiAVIAhJDQYCQCADIAhBf2oiCksNAEECIQkMCgsgEiAKai0AACEFIBRB0OWDARCfOkUNBwwI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IAsgECAJIAcgBWoiCi0AAGotAABqQQJ0aigCACEIIAVBA2oiESAGTw0EIAhBgICAwABPDQQgCyAIIAkgCkEBai0AAGotAABqQQJ0aigCACIQQf///z9LDQEgCyAQIAkgCkECai0AAGotAABqQQJ0aigCACIIQf///z9LDQICQCALIAggCSAKQQNqLQAAai0AAGpBAnRqKAIAIhBB////P0sNACAFQQRqIgUgBkkNAQwPCwsgCCEKIBAhCAwECyAFQQFqIREgCCEKIBAhCAwDCyAFQQJqIREgECEKDAILAkACQAJAIAIoArABRQ0AIAIgBTYCuAECQCAFIBJJDQAgBSASQezWgwEQoRsACyACKAJ8IgogEEH///8/cSAJIAcgBWotAAAiC2otAABqIghNDQEgAigCeCAIQQJ0aigCACIIQX9KDQIgBCACNgLIASAEIAE2AsQBIARBGGogBEHEAWogECALQQh0EI0BAkAgBCgCGEEBcQ0AIAQoAhwhCAwDCyAFENstIQUgAEECNgIAIAAgBTYCBAwXC0GM1YMBQR9BrNWDARCqHgALIAggCkGI1IMBEKEbAAsgBSERDAILIBAhCiAFIRELIAhBAE4NACACKAKwAUUNASACIBE2ArgBIA0gCiAJIAcgEWotAAAiEGotAABqIgVNDQIgCyAFQQJ0aigCACIIQX9KDQAgBCACNgLIASAEIAE2AsQBIARBIGogBEHEAWogCiAQQQh0EI0BIAQoAiBBAXENAyAEKAIkIQgLIAhBgICAwABJDQYgCEGAgICAAXENBiAIQYCAgMAAcQ0DIAhBgICAgARxDQQgCEGAgICAAnFFDQUgAiAREIwkAkAgESASTw0AIAcgEWotAAAgERC9KyEFIABBAjYCACAAIAU2AgQMEgsgESASQdjXgwEQoRsAC0GM1YMBQR9BrNWDARCqHgALIAUgDUGI1IMBEKEbAAsgERDbLSEFIABBAjYCACAAIAU2AgQMDgsgASACIAgQ3C0hBSACIBEQjCQgACARNgIIIAAgBTYCBCAAQQE2AgAMDQsgAiAREIwkIABBADYCAAwMCyAEQQE2AsgBIARBwNeDATYCxAEgBEIANwLQASAEIARB/AFqNgLMASAEQcQBakHI14MBEK0uAAsgCCEQIBEhBQsgBUEBaiIFIAZJDQALCwJAAkACQAJAAkAC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DQAgARDtDhogAUECOgDhAiABIAEoAtwCNgLUAiABIAEoAtgCIgU2AtACIAEtAOACIQYCQAJAAkACQCABKAKQAiIHQQJxRQ0AIAEoAoQCIgQoAggiCEH+////B0sNAyAEKAIURQ0AIAgNAiAEQX82AgggASgCgAIiCCgCCA0BIAhBfzYCCCAEKAIQIQkgCEEMaiAEKAIUIgoQoTAgCCgCECAIKAIUQQJ0aiAJIApBAnQQ3woaIAggCiAIKAIUajYCFCAEQQA2AhQgCCAIKAIIQQFqNgIIIAQgBCgCCEEBajYCCAsgASAHQf+///cDcSAGQRJGQRh0cjYCkAICQAJAAkACQAJAAkAgARDtDiIERQ0AIAQtAABBPkYNAQsCQCABKAKQAiIEQQJxRQ0AIAEoAoQCIggoAggiBkH+////B0sNBSAIKAIURQ0AIAYNBCAIQX82AgggASgCgAIiBigCCA0DIAZBfzYCCCAIKAIQIQkgBkEMaiAIKAIUIgoQoTAgBigCECAGKAIUQQJ0aiAJIApBAnQQ3woaIAYgCiAGKAIUajYCFCAIQQA2AhQgBiAGKAIIQQFqNgIIIAggCCgCCEEBajYCCAsgASAEQf+///8DcTYCkAIgA0GwB2ogARCQBSADKAKwByEJIAMtANwHIghBBkYNDCADQfgBakEkaiADQbAHakEkaikCADcCACADQfgBakEcaiADQbAHakEcaikCADcCACADQfgBakEUaiADQbAHakEUaikCADcCACADQfgBakEMaiADQbAHakEMaikCADcCACADQfgBakEvaiADQbAHakEvai0AADoAACADIAMpArQHNwL8ASADIAMvAN0HOwClAiADIAg6AKQCIAMgCTYC+AEgASAEENwRQQAhCwJAAkACQAJAAkACQCABLQCYAkECRw0AQQAhCyABEO0OIgRFDQBBACELIAQtAABBEkcNAEEAIQsgAS0AmAJBAkcNACABKAKQAiEEIANBoARqIAEQiwICQCAEQQJxRQ0AIAMoAqQGIggoAggiBkH+////B0sNBiAIKAIURQ0AIAYNBSAIQX82AgggAygCoAYiBigCCA0EIAZBfzYCCCAIKAIQIQkgBkEMaiAIKAIUIgoQoTAgBigCECAGKAIUQQJ0aiAJIApBAnQQ3woaIAYgCiAGKAIUajYCFCAIQQA2AhQgBiAG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IANBgARqQQhqKQMANwMAIAMgAykDsAE3A+gCIAMgAykDgAQ3A5ADIAQgASgC1AIiDSAEIA1JGyEbIAQgDSAEIA1LGyEZIB4hHyAdIQ0LIANByANqQQhqIhQgA0GQA2pBCGopAwA3AwAgA0GgA2pBCGoiFSADQegCakEIaikDADcDACADQaADakEQaiIWIANB6AJqQRBqKQMANwMAIANBoANqQRhqIhcgA0HoAmpBGGopAwA3AwAgA0GgA2pBIGoiGCADQegCakEgaikDADcDACADIAMpA5ADNwPIAyADIAMpA+gCNwOgAwJAIAggAygC3AJHDQAgA0HcAmoQkQ4gAygC4AIhDgsgDiAKaiIEIAw2AgAgBEEQaiAeNwMAIARBDGogDTYCACAEQQhqIBo2AgAgBEEEaiAJNgIAIARBGGogAykDyAM3AwAgBEEgaiAUKQMANwMAIARBLGogGTYCACAEQShqIBs2AgAgBEEwaiADKQOgAzcDACAEQThqIBUpAwA3AwAgBEHAAGogFikDADcDACAEQcgAaiAXKQMANwMAIARB0ABqIBgpAwA3AwAgCkHYAGohCiAIQQFqIQgMAAsLQYyEmwEQ6SIMDgtBnISbARDqIgALQfyDmwEQ6SIAC0GMhJsBEOkiAAtBnISbARDqIgALIAFBAjoA4QIgASABKALcAiIENgLUAiABIAEoAtgCNgLQAiACIAQgAiAESRshCSACIAQgAiAESxshDkGAgICAeCEYCyADQfwAaiADKACDATYAACADQTBqQShqIANBiAFqQSBqKQMANwMAIANBMGpBIGogA0GIAWpBGGopAwA3AwAgA0EwakEYaiADQYgBakEQaikDADcDACADQTBqQRBqIANBiAFqQQhqKQMANwMAIAMgAykDiAE3AzggAyADKAKAATYAeSADIAg6AHggAyAeNwNwIAMgCzYCaCADIAY2AmQgAyAKNgJgIAMgDjYCNCADIAk2AjAgAyAYNgJsIANBADYC0AMgA0KAgICAgAE3AsgDIANB8ABqIQIgA0EwakEIaiEbIBhBgICAgHhGDQcgCEEBcUUNByADQfgBakEIaiAbQQhqKQMANwMAIANB+AFqQRBqIBtBEGopAwA3AwAgA0H4AWpBGGogG0EYaikDADcDACADQfgBakEgaiAbQSBqKQMANwMAIANB+AFqQShqIBtBKGopAwA3AwAgA0H4AWpBMGogG0EwaigCADYCACADQYAEakEIaiACQQhqKQMANwMAIAMgGykDADcD+AEgAyACKQMANwOABCAFIAQgBSAESRshDCAFIAQgBSAESxshCkEGIRdBACEGIAMpAswDIR4MCQtB/IObARDpIgALQYyEmwEQ6SIAC0GchJsBEOoiAAtB/IObARDpIgALQYyEmwEQ6SIAC0GchJsBEOoiAAsgAUECOgDhAiABIAEpA9gCNwPQAiABEN8YIQEgAEGBgICAeDYCkAEgACABNgIADAULIANBxAhqIRYgA0GwB2pBJGohGSADQbAHakEEciEKIANBsAdqQQRqIRdBACEIQQAhBANAAkACQAJAAkAgARDtDiIGDQAgASgC/AEhBCADQYCAgIB4NgKwByAEIAQgA0GwB2oQ/iIhDQwBCwJAAkACQAJAAkACQAJAAkAgBi0AACIGQUNqDgkBAwMDAwMDAwIACyAGQQJGDQMgBkGbAUcNAiABQQI6AOECIAEgASkD2AI3A9ACIAEQ3xghDQwHCyABEO0OGiABQdQCQdgCIAEtAOECQQJGG2ooAgAhBiABEMcKIg1FDQMgDS0AAEEQRw0DIAFBAjoA4QIgASABKQPYAjcD0AIgARDtDiIIDQQgASgC/AEhBCADQYCAgIB4NgKwByAEIAQgA0GwB2oQ/iIhDQwGCyABQQI6AOECIAEgASgC3AIiDTYC1AIgASABKALYAiIMNgLQAiADQQhqIAEQ3BcgAykDECEeIAMpAwghHwJAIAQgAygCyANHDQAgA0HIA2oQjw4LIAMoAswDIAhqIgZBADYCACAGQRxqIA02AgAgBkEYaiAMNgIAIAZBEGogHjcCACAGQQhqIB83AgAMBwsgA0GwB2pBBHIgARDKCyADQSA2AsQHIANBnvKaATYCwAcgA0GwgICAeDYCsAcgAUHQAmogAUHYAmogAS0A4QJBAkYiCBsoAgAiBCABQdQCaiABQdwCaiAIGygCACIIIAQgCEkbIAQgCCAEIAhLGyADQbAHahD+IiENIAEQ7Q4iBEUNBCAELQAAQZsBRw0EIAFBAjoA4QIgASABKQPYAjcD0AIgASABEN8YEPUYDAQLIAEQ7Q4aAkACQCABEMcKIgZFDQAgBi0AAEEcRg0BCyADQbAHaiABEN0HIAMoArAHIg1BAkYNAyADQaADakEIaiIMIBdBCGopAgA3AwAgAyAXKQIANwOgAwJAIAQgAygCyANHDQAgA0HIA2oQjw4LIAMoAswDIAhqIgZBATYCACAGQQRqIA02AgAgBkEIaiADKQOgAzcDACAGQRBqIAwpAwA3AwAgBkEYaiADQaADakEQaikDADcDACAGQSBqIANBoANqQRhqKQMANwMADAYLIAEQ7Q4aIAFB1AJB2AIgAS0A4QJBAkYbaigCACEGAkACQCABEO0OIg1FDQAgDS0AAEECRg0BCyABQdQCaiABQdwCaiABLQDhAkECRiIIGygCACEEIAFB0AJqIAFB2AJqIAgbKAIAIQggA0GwAmogARDKCyADQQE2ArQHIANBpNehATYCsAcgA0IBNwK8ByADQegENgKEBCADQQI6AJAEIAMgA0GABGo2ArgHIAMgA0GQA2o2AoAEIAMgA0GQBGo2ApADIANBoARqIANBsAdqEJEKIANBtARqIANBuAJqKAIANgIAIAMgAykCsAI3AqwEIAggBCAIIARJGyAIIAQgCCAESxsgA0GgBGoQ/iIhDSABEO0OIgRFDQQgBC0AAEGbAUcNBCABQQI6AOECIAEgASkD2AI3A9ACIAEgARDfGBD1GAwECyABQQI6AOECIAEgASkD2AI3A9ACAkACQCABEO0OIg1FDQAgDS0AAEEcRg0BCyABQdQCaiABQdwCaiABLQDhAkECRiIIGygCACEEIAFB0AJqIAFB2AJqIAgbKAIAIQggA0GIAWogARDKCyADQQE2ArQHIANBpNehATYCsAcgA0IBNwK8ByADQegENgKEBCADQRw6AJAEIAMgA0GABGo2ArgHIAMgA0GQA2o2AoAEIAMgA0GQBGo2ApADIANBoARqIANBsAdqEJEKIANBtARqIANBkAFqKAIANgIAIAMgAykCiAE3AqwEIAggBCAIIARJGyAIIAQgCCAESxsgA0GgBGoQ/iIhDSABEO0OIgRFDQQgBC0AAEGbAUcNBCABQQI6AOECIAEgASkD2AI3A9ACIAEgARDfGBD1GAwECyABQQI6AOECIAEgASkD2AI3A9ACIANBGGogARCHBSADKAIcIQ0gAygCGA0DIAMgDTYCkAQCQAJAIAEQ7Q4iDEUNACAMLQAAQQNGDQELIAFB1AJqIAFB3AJqIAEtAOECQQJGIggbKAIAIQQgAUHQAmogAUHYAmogCBsoAgAhCCADQfgBaiABEMoLIANBATYCtAcgA0Gk16EBNgKwByADQgE3ArwHIANB6AQ2AoQEIANBAzoA3AMgAyADQYAEajYCuAcgAyADQZADajYCgAQgAyADQdwDajYCkAMgA0GgBGogA0GwB2oQkQogA0G0BGogA0GAAmooAgA2AgAgAyADKQL4ATcCrAQgCCAEIAggBEkbIAggBCAIIARLGyADQaAEahD+IiENAkAgARDtDiIERQ0AIAQtAABBmwFHDQAgAUECOgDhAiABIAEpA9gCNwPQAiABIAEQ3xgQ9RgLIANBkARqEMEBDAQLIAFBAjoA4QIgASABKALcAiIMNgLUAiABIAEoAtgCNgLQAiAGIAwgBiAMSRshGiAGIAwgBiAMSxshDAJAIAQgAygCyANHDQAgA0HIA2oQjw4LIAMoAswDIAhqIgZBAjYCACAGQQxqIAw2AgAgBkEIaiAaNgIAIAZBBGogDTYCACAGQRBqIAMpA+ABNwMAIAZBGGogA0HgAWpBCGopAwA3AwAgBkEgaiADQeABakEQaikDADcDAAwFCyADQbAHaiABIAYQTyADKAKwByENIAMoAsAIIgxBgYCAgHhGDQICQAJAIAxBgICAgHhHDQAgA0GgBGpBGGogCkEYaikCADcDACADQaAEakEQaiAKQRBqKQIANwMAIANBoARqQQhqIApBCGopAgA3AwAgAyAKKQIANwOgBEEEIQwMAQtBAC0AwP+jARpBoAEQjAEiBkUNByAGIA02AgAgBiAKKQIANwIEIAZBDGogCkEIaikCADcCACAGQRRqIApBEGopAgA3AgAgBkEcaiAKQRhqKQIANwIAIAZBJGogGUHsABDfChogBiAMNgKQASAGIBYpAgA3ApQBIAZBnAFqIBZBCGooAgA2AgBBAyEMIAYhDQsgA0HoAmpBGGoiGiADQaAEakEYaikDADcDACADQegCakEQaiIUIANBoARqQRBqKQMANwMAIANB6AJqQQhqIhUgA0GgBGpBCGopAwA3AwAgAyADKQOgBDcD6AICQCAEIAMoAsgDRw0AIANByANqEI8OCyADKALMAyAIaiIGIAw2AgAgBkEEaiANNgIAIAZBCGogAykD6AI3AwAgBkEQaiAVKQMANwMAIAZBGGogFCkDADcDACAGQSBqIBopAwA3AwAMBAsCQAJAIAgtAABBmwFGDQACQCABEO0OIggNACABKAL8ASEEIANBgICAgHg2ArAHIAQgBCADQbAHahD+IiENDAQLIAgtAABBmwFHDQEgAUECOgDhAiABIAEpA9gCNwPQAiABEN8YIQ0MAwsgAUECOgDhAiABIAEpA9gCNwPQAiABEN8YIQ0MAgsgAUECOgDhAiABIAEpA9gCNwPQAiADQbAHaiABIAYQ/QUgAygCsAchDSADLQDkByIKQQdGDQEgA0G4AWogA0GwB2pBEGopAwA3AwAgA0GwAWpBEGogA0GwB2pBGGopAwA3AwAgA0GwAWpBGGogA0GwB2pBIGopAwA3AwAgA0GwAWpBIGogA0GwB2pBKGopAwA3AwAgA0GwAWpBKGogA0HgB2ooAgA2AgAgA0HsA2pBAmogA0HnB2otAAA6AAAgAyADKQO4BzcDsAEgAyADLwDlBzsB7AMgAygCtAchCCAFIAEoAtQCIgYgBSAGSRshGSAFIAYgBSAGSxshHQJAAkACQCAYQYCAgIB4Rg0AIApBBkcNASADQbAHakEQaiAbQQhqKQMANwMAIANBsAdqQRhqIBtBEGopAwA3AwAgA0GwB2pBIGogG0EYaikDADcDACADQbAHakEoaiAbQSBqKQMANwMAIANBsAdqQTBqIBtBKGopAwA3AwAgA0HoB2ogG0EwaigCADYCACADQfgHaiACQQhqKQMANwMAIAMgDjYCtAcgAyAJNgKwByADIBg2AuwHIAMgGykDADcDuAcgAyACKQMANwPwByADQbAHahCWDSEeIANB2ICAgHg2AqAEIAMgHjcDqAQgDSAIIANBoARqEP4iIQQCQCABEO0OIghFDQAgCC0AAEGbAUcNACABQQI6AOECIAEgASkD2AI3A9ACIAEgARDfGBD1GAsgAEGBgICAeDYCkAEgACAENgIAIANBsAdqENscDAILAkAgCkEGRg0AIANBsAdqQRBqIANBsAFqQQhqKQMANwMAIANBsAdqQRhqIANBsAFqQRBqKQMANwMAIANBsAdqQSBqIANBsAFqQRhqKQMANwMAIANBsAdqQShqIANBsAFqQSBqKQMANwMAIANB4AdqIANBsAFqQShqKAIANgIAIANB5wdqIANB7gNqLQAAOgAAIAMgCDYCtAcgAyANNgKwByADIAMpA7ABNwO4ByADIAo6AOQHIAMgAy8B7AM7AOUHIANB14CAgHg2AqAEIA0gCCADQaAEahD+IiEEIANBsAdqQQhqIQgCQCABEO0OIgZFDQAgBi0AAEGbAUcNACABQQI6AOECIAEgASkD2AI3A9ACIAEgARDfGBD1GAsgAEGBgICAeDYCkAEgACAENgIAIAgQqxYMAgtBgICAgHghBiADKALMAyEKIAMoAsgDIQwgGSEaIB0hFCAJIRUgDiEWDAgLIANBsAdqQRBqIBtBCGopAwA3AwAgA0GwB2pBGGogG0EQaikDADcDACADQbAHakEgaiAbQRhqKQMANwMAIANBsAdqQShqIBtBIGopAwA3AwAgA0GwB2pBMGogG0EoaikDADcDACADQegHaiAbQTBqKAIANgIAIANB+AdqIAJBCGopAwA3AwAgAyAONgK0ByADIAk2ArAHIAMgGDYC7AcgAyAbKQMANwO4ByADIAIpAwA3A/AHIANBoARqQRBqIANBsAFqQQhqKQMANwMAIANBoARqQRhqIANBsAFqQRBqKQMANwMAIANBoARqQSBqIANBsAFqQRhqKQMANwMAIANBoARqQShqIANBsAFqQSBqKQMANwMAIANBoARqQTBqIANBsAFqQShqKAIANgIAIANB1wRqIANB7ANqQQJqLQAAOgAAIAMgCDYCpAQgAyANNgKgBCADIAMpA7ABNwOoBCADIAo6ANQEIAMgAy8B7AM7ANUEIAMgA0GgBGpBCGoiCBCWDTcDkAMgAyADQbAHahCWDSIeNwOIASADQZADaiADQYgBahC3EiEEIB4Q0B8gAykDkAMQ0B8gBA0DIAMoAqQEIQQgAygCoAQhBiADQbAHahCWDSEeIANB2ICAgHg2AogBIAMgHjcDkAEgBiAEIANBiAFqEP4iIQQCQCABEO0OIgZFDQAgBi0AAEGbAUcNACABQQI6AOECIAEgASkD2AI3A9ACIAEgARDfGBD1GAsgAEGBgICAeDYCkAEgACAENgIAIAgQqxYgA0GwB2oQ2xwLIANByANqEI8xIAEgBxDcEQwJCyADKAK0ByENCyAAQYGAgIB4NgKQASAAIA02AgAgA0HIA2oQuRYCQCADKALIAyIERQ0AIAMoAswDIARBKGxBCBDuHAsCQCAYQYCAgIB4Rg0AIANBMGoQ2xwLIAEgBxDcEQwHCyADQfgBakEIaiADQbAHakEIaiIEQQhqKQMANwMAIANB+AFqQRBqIARBEGopAwA3AwAgA0H4AWpBGGogBEEYaikDADcDACADQfgBakEgaiAEQSBqKQMANwMAIANB+AFqQShqIARBKGopAwA3AwAgA0H4AWpBMGogBEEwaigCADYCACADIAQpAwA3A/gBIAMoArQHIQ4gAygCsAchCSADKALsByEYIANBgARqQQhqIANB8AdqIgRBCGopAwA3AwAgA0GwAmpBEGogA0HMBGopAgA3AwAgA0GwAmpBCGogA0HEBGopAgA3AwAgAyAEKQMANwOABCADIAMpArwENwOwAiADKAK4BCEIIAMoArQEIQ0gAygCsAQhFiADKAKsBCEVIAMoAqgEIRQgAygCpAQhGiADKAKgBCEEIAMpAswDIR4gAygCyAMhBiADLQDUBCEXIANBkARqQQJqIANB1QRqIgpBAmotAAA6AAAgAyAKLwAAOwGQBCAZIQwgHSEKDAMLIAMgBEEBaiIENgLQAyAIQShqIQgMAAsLAAsgACAINgIgIAAgDTYCHCAAIBY2AhggACAVNgIUIAAgFDYCECAAIBo2AgwgACAENgIIIAAgCjYCBCAAIAw2AgAgACADKQOwAjcCJCAAIBc6ADwgACADLwGQBDsAPSAAQSxqIANBsAJqQQhqKQMANwIAIABBNGogA0GwAmpBEGopAwA3AgAgAEE/aiADQZIEai0AADoAACAAIA42AkQgACAJNgJAIAAgGDYCfCAAIAMpA/gBNwNIIABB0ABqIANB+AFqQQhqKQMANwMAIABB2ABqIANB+AFqQRBqKQMANwMAIABB4ABqIANBkAJqKQMANwMAIABB6ABqIANBmAJqKQMANwMAIABB8ABqIANBoAJqKQMANwMAIABB+ABqIANBqAJqKAIANgIAIABBiAFqIANBgARqQQhqKQMANwMAIAAgAykDgAQ3A4ABIAAgHjcClAEgACAGNgKQASABIAcQ3BEMAgsgASAEENwRCyAAQYGAgIB4NgKQASAAIAk2AgAgASAHENwRCyADQcAKaiQAC5VOAhV/A34jAEHAAWsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAgAOEwABAgMEBQYHCAkKCwwNDg8QERIACyABKAIYIQMgASkDECEXIAJBOGogAUEEahClDSAAQQA2AgAgACACKQI4NwIEIAIgFzcCRCAAQQxqIAJBwABqKQIANwIAIAIgAzYCTCAAQRRqIAJByABqKQIANwIADBkLIABBATYCACAAIAEpAgQ3AgQMGAsgAEECNgIAIAAgASkCBDcCBAwXCyABKQIMIRcgASgCBCEEEK4yIQMgAkE4aiAEED8gA0E4aiACQThqQThqKQMANwMAIANBMGogAkE4akEwaikDADcDACADQShqIAJBOGpBKGoiBSkDADcDACADQSBqIAJBOGpBIGoiBikDADcDACADQRhqIAJBOGpBGGoiBykDADcDACADQRBqIAJBOGpBEGoiCCkDADcDACADQQhqIAJBOGpBCGoiCSkDADcDACADIAIpAzg3AwAQsjIhBCACQThqIAEoAggQUCAEQShqIAUpAwA3AwAgBEEgaiAGKQMANwMAIARBGGogBykDADcDACAEQRBqIAgpAwA3AwAgBEEIaiAJKQMANwMAIAQgAikDODcDACAAIBc3AgwgACAENgIIIAAgAzYCBCAAQQM2AgAMFgsgASgCCCEDIAEoAgQhBAJAAkAgASgCDCIFDQBBACEBDAELEK4yIQEgAkE4aiAFED8gAUE4aiACQThqQThqKQMANwMAIAFBMGogAkE4akEwaikDADcDACABQShqIAJBOGpBKGopAwA3AwAgAUEgaiACQThqQSBqKQMANwMAIAFBGGogAkE4akEYaikDADcDACABQRBqIAJBOGpBEGopAwA3AwAgAUEIaiACQThqQQhqKQMANwMAIAEgAikDODcDAAsgACABNgIMIAAgAzYCCCAAIAQ2AgQgAEEENgIADBULIAEoAiAhBCABKAIcIQUgASgCGCEGIAEoAgwhByABKAIIIQgCQCABKQMQIhdCA4NCAFINACAXpyIDIAMoAgAiA0EBajYCACADQX9MDRILIAEtACQhCRCyMiEDIAJBOGogASgCKBBQIANBKGogAkE4akEoaikDADcDACADQSBqIAJBOGpBIGopAwA3AwAgA0EYaiACQThqQRhqKQMANwMAIANBEGogAkE4akEQaikDADcDACADQQhqIAJBOGpBCGopAwA3AwAgAyACKQM4NwMAIAAgAzYCKCAAIAk6ACQgACAENgIgIAAgBTYCHCAAIAY2AhggACAXNwMQIAAgBzYCDCAAIAg2AgggAEEFNgIADBQLIAEoAgwhAyABKAIIIQQgAS0AJCIFQQJHDQwMDQsgASgCDCEDIAEoAgghBCABLQAkIgVBAkcNDQwOCyABKAIQIQogASgCDCELIAEoAgQhBBCuMiEDIAJBOGogBBA/IANBOGogAkE4akE4aikDADcDACADQTBqIAJBOGpBMGopAwA3AwAgA0EoaiACQThqQShqIgUpAwA3AwAgA0EgaiACQThqQSBqIgYpAwA3AwAgA0EYaiACQThqQRhqIgcpAwA3AwAgA0EQaiACQThqQRBqIggpAwA3AwAgA0EIaiACQThqQQhqIgkpAwA3AwAgAyACKQM4NwMAELIyIQQgAkE4aiABKAIIEFAgBEEoaiAFKQMANwMAIARBIGogBikDADcDACAEQRhqIAcpAwA3AwAgBEEQaiAIKQMANwMAIARBCGogCSkDADcDACAEIAIpAzg3AwACQAJAIAEoAhQiDA0AQQAhAQwBCxCyMiEBIAJBOGogDBBQIAFBKGogBSkDADcDACABQSBqIAYpAwA3AwAgAUEYaiAHKQMANwMAIAFBEGogCCkDADcDACABQQhqIAkpAwA3AwAgASACKQM4NwMACyAAIAE2AhQgACAKNgIQIAAgCzYCDCAAIAQ2AgggACADNgIEIABBCDYCAAwRCyABKAIYIQ0gASgCFCEOIAEoAhAhAxCuMiEPIAJBOGogAxA/IA9BOGogAkE4akE4aikDADcDACAPQTBqIAJBOGpBMGopAwA3AwAgD0EoaiACQThqQShqKQMANwMAIA9BIGogAkE4akEgaikDADcDACAPQRhqIAJBOGpBGGopAwA3AwAgD0EQaiACQThqQRBqKQMANwMAIA9BCGogAkE4akEIaikDADcDACAPIAIpAzg3AwAgASgCCCEGIAJBOGogASgCDCIQQQRBGBDhEyACKAI8IREgAigCOEEBRg0OIAIoAkAhEgJAIBFFDQAgBiAQQRhsaiETQQAhCiARIRQDQCAGIBNGDQEgBigCECEVIAYoAgwhFgJAAkAgBigCFCIBDQBBACEHDAELEK4yIQcgAkE4aiABED8gB0E4aiACQThqQThqKQMANwMAIAdBMGogAkE4akEwaikDADcDACAHQShqIAJBOGpBKGopAwA3AwAgB0EgaiACQThqQSBqKQMANwMAIAdBGGogAkE4akEYaikDADcDACAHQRBqIAJBOGpBEGopAwA3AwAgB0EIaiACQThqQQhqKQMANwMAIAcgAikDODcDAAsgBigCBCEDIAJBOGogBigCCCILQQhBMBDhEyACKAI8IQkgAigCOEEBRg0RIBIgCkEYbGohCCACKAJAIQwCQCAJRQ0AIAtBMGwhBCAMIQEgCSEFA0AgBEUNASACQThqIAMQUCABQShqIAJBOGpBKGopAwA3AwAgAUEgaiACQThqQSBqKQMANwMAIAFBGGogAkE4akEYaikDADcDACABQRBqIAJBOGpBEGopAwA3AwAgAUEIaiACQThqQQhqKQMANwMAIAEgAikDODcDACAEQVBqIQQgAUEwaiEBIANBMGohAyAFQX9qIgUNAAsLIApBAWohCiAGQRhqIQYgCCAHNgIUIAggFTYCECAIIBY2AgwgCCALNgIIIAggDDYCBCAIIAk2AgAgFEF/aiIUDQALCyAAIA02AhggACAONgIUIAAgDzYCECAAIBA2AgwgACASNgIIIAAgETYCBCAAQQk2AgAMEAsgASkDCCEXIAEoAgQhAxCuMiEBIAJBOGogAxA/IAFBOGogAkE4akE4aikDADcDACABQTBqIAJBOGpBMGopAwA3AwAgAUEoaiACQThqQShqKQMANwMAIAFBIGogAkE4akEgaikDADcDACABQRhqIAJBOGpBGGopAwA3AwAgAUEQaiACQThqQRBqKQMANwMAIAFBCGogAkE4akEIaikDADcDACABIAIpAzg3AwAgACAXNwMIIAAgATYCBCAAQQo2AgAMDwtBAC0AwP+jARogASgCBCEDQYABEIwBIgFFDQsgAygCfCEIIAMoAnghCSADKQJUIRcgAygCXCEEIAJBCGogA0HIAGoQpQ0gAiAENgIcIAIgFzcCFEEIIQQCQCADKAIAIgdBCEYNAEEHIQQgAygCRCEGIAMoAkAhBQJAIAdBB0YNACACQThqIAMQ1QMgAkGgAWogAkHEAGopAgA3AwAgAkGoAWogAkHMAGopAgA3AwAgAkGwAWogAkHUAGopAgA3AwAgAkG4AWogAkHcAGooAgA2AgAgAiACKQI8NwOYASACKAI4IQQLIAMoAjwhByADKQI0IRcgAkEgaiADQShqEKUNIAJBOGpBCGogAkGYAWpBCGopAwA3AwAgAkE4akEQaiACQZgBakEQaikDADcDACACQThqQRhqIAJBmAFqQRhqKQMANwMAIAJBOGpBIGogAkGYAWpBIGooAgA2AgAgAiAXNwIsIAJB5ABqIAJBIGpBCGopAgA3AgAgAiAHNgI0IAJB7ABqIAJBIGpBEGopAgA3AgAgAiACKQOYATcDOCACIAIpAiA3AlwLQYCAgIB4IQcCQCADKAJgQYCAgIB4Rg0AIAMoAnQhByADKQJsIRcgAkGYAWogA0HgAGoQpQ0gAkEoaiAXNwMAIAJBMGogBzYCACACIAIpApwBNwMgIAIoApgBIQcLIAEgBDYCACABIAIpAzg3AgQgASAGNgJEIAEgBTYCQCABQQxqIAJBOGpBCGopAwA3AgAgAUEUaiACQThqQRBqKQMANwIAIAFBHGogAkHQAGopAwA3AgAgAUEkaiACQdgAaikDADcCACABQSxqIAJB4ABqKQMANwIAIAFBNGogAkHoAGopAwA3AgAgAUE8aiACQfAAaigCADYCACABIAc2AmAgASAINgJ8IAEgCTYCeCABQdgAaiACQQhqQRBqKQMANwMAIAFB0ABqIAJBCGpBCGopAwA3AwAgASACKQMINwNIIAFB9ABqIAJBIGpBEGooAgA2AgAgAUHsAGogAkEgakEIaikDADcCACABIAIpAyA3AmQgAEELNgIAIAAgATYCBAwOCyABKQIMIRcgASgCBCEEEK4yIQMgAkE4aiAEED8gA0E4aiACQThqQThqKQMANwMAIANBMGogAkE4akEwaikDADcDACADQShqIAJBOGpBKGoiBSkDADcDACADQSBqIAJBOGpBIGoiBikDADcDACADQRhqIAJBOGpBGGoiBykDADcDACADQRBqIAJBOGpBEGoiCCkDADcDACADQQhqIAJBOGpBCGoiCSkDADcDACADIAIpAzg3AwAQsjIhBCACQThqIAEoAggQUCAEQShqIAUpAwA3AwAgBEEgaiAGKQMANwMAIARBGGogBykDADcDACAEQRBqIAgpAwA3AwAgBEEIaiAJKQMANwMAIAQgAikDODcDACAAIBc3AgwgACAENgIIIAAgAzYCBCAAQQw2AgAMDQsgASkCDCEXIAEoAgQhBBCuMiEDIAJBOGogBBA/IANBOGogAkE4akE4aikDADcDACADQTBqIAJBOGpBMGopAwA3AwAgA0EoaiACQThqQShqIgUpAwA3AwAgA0EgaiACQThqQSBqIgYpAwA3AwAgA0EYaiACQThqQRhqIgcpAwA3AwAgA0EQaiACQThqQRBqIggpAwA3AwAgA0EIaiACQThqQQhqIgkpAwA3AwAgAyACKQM4NwMAELIyIQQgAkE4aiABKAIIEFAgBEEoaiAFKQMANwMAIARBIGogBikDADcDACAEQRhqIAcpAwA3AwAgBEEQaiAIKQMANwMAIARBCGogCSkDADcDACAEIAIpAzg3AwAgACAXNwIMIAAgBDYCCCAAIAM2AgQgAEENNgIADAwLQQIhByABKAIUIQggASgCECEJAkAgASgCBCIEQQJGDQBBASEHIAEoAgghAwJAIARBAXENABCzMiEGIAMoAhQhBCADKQIMIRcgAy8BGCEFIAJBOGogAxC3ByACQThqQRhqIgMgBTsBACAGIAIpAjg3AgAgAiAXNwJEIAZBCGogAkE4akEIaikCADcCACACIAQ2AkwgBkEQaiACQThqQRBqKQIANwIAIAZBGGogAygCADYCAEEAIQcMAQsQrjIhBiACQThqIAMQPyAGQThqIAJBOGpBOGopAwA3AwAgBkEwaiACQThqQTBqKQMANwMAIAZBKGogAkE4akEoaikDADcDACAGQSBqIAJBOGpBIGopAwA3AwAgBkEYaiACQThqQRhqKQMANwMAIAZBEGogAkE4akEQaikDADcDACAGQQhqIAJBOGpBCGopAwA3AwAgBiACKQM4NwMAC0EAIQRBACEFAkAgASgCGCIDRQ0AEK4yIQUgAkE4aiADED8gBUE4aiACQThqQThqKQMANwMAIAVBMGogAkE4akEwaikDADcDACAFQShqIAJBOGpBKGopAwA3AwAgBUEgaiACQThqQSBqKQMANwMAIAVBGGogAkE4akEYaikDADcDACAFQRBqIAJBOGpBEGopAwA3AwAgBUEIaiACQThqQQhqKQMANwMAIAUgAikDODcDAAsCQCABKAIcIgNFDQAQrjIhBCACQThqIAMQPyAEQThqIAJBOGpBOGopAwA3AwAgBEEwaiACQThqQTBqKQMANwMAIARBKGogAkE4akEoaikDADcDACAEQSBqIAJBOGpBIGopAwA3AwAgBEEYaiACQThqQRhqKQMANwMAIARBEGogAkE4akEQaikDADcDACAEQQhqIAJBOGpBCGopAwA3AwAgBCACKQM4NwMACxCyMiEDIAJBOGogASgCDBBQIANBKGogAkE4akEoaikDADcDACADQSBqIAJBOGpBIGopAwA3AwAgA0EYaiACQThqQRhqKQMANwMAIANBEGogAkE4akEQaikDADcDACADQQhqIAJBOGpBCGopAwA3AwAgAyACKQM4NwMAIAAgBDYCHCAAIAU2AhggACAINgIUIAAgCTYCECAAIAM2AgwgACAGNgIIIAAgBzYCBCAAQQ42AgAMCwsgASgCCCEDIAEoAhghBiABKAIUIQcCQAJAAkACQCABKAIEIggOAwABAgALELMyIQUgAygCFCEEIAMpAgwhFyADLwEYIQkgAkE4aiADELcHIAJBOGpBGGoiAyAJOwEAIAUgAikCODcCACACIBc3AkQgBUEIaiACQThqQQhqKQIANwIAIAIgBDYCTCAFQRBqIAJBOGpBEGopAgA3AgAgBUEYaiADKAIANgIADAILELQyIQUgAy0AFCEEIAMpAgwhFyACQThqIAMQtwcgBSACKQI4NwIAIAIgFzcCRCAFQQhqIAJBOGpBCGopAgA3AgAgAiAEOgBMIAVBEGogAkE4akEQaikCADcCAAwBCxCtMiEFIAJBOGogAxDVAyAFQSBqIAJBOGpBIGopAwA3AwAgBUEYaiACQThqQRhqKQMANwMAIAVBEGogAkE4akEQaikDADcDACAFQQhqIAJBOGpBCGopAwA3AwAgBSACKQM4NwMACyABKAIMIQQQrjIhAyACQThqIAQQPyADQThqIAJBOGpBOGopAwA3AwAgA0EwaiACQThqQTBqKQMANwMAIANBKGogAkE4akEoaiIJKQMANwMAIANBIGogAkE4akEgaiIKKQMANwMAIANBGGogAkE4akEYaiILKQMANwMAIANBEGogAkE4akEQaiIMKQMANwMAIANBCGogAkE4akEIaiIUKQMANwMAIAMgAikDODcDABCyMiEEIAJBOGogASgCEBBQIARBKGogCSkDADcDACAEQSBqIAopAwA3AwAgBEEYaiALKQMANwMAIARBEGogDCkDADcDACAEQQhqIBQpAwA3AwAgBCACKQM4NwMAIAAgBjYCGCAAIAc2AhQgACAENgIQIAAgAzYCDCAAIAU2AgggACAINgIEIABBDzYCAAwKCyABKAIIIQMgAS0AHCEGIAEoAhghByABKAIUIQgCQAJAAkACQCABKAIEIgkOAwABAgALELMyIQUgAygCFCEEIAMpAgwhFyADLwEYIQogAkE4aiADELcHIAJBOGpBGGoiAyAKOwEAIAUgAikCODcCACACIBc3AkQgBUEIaiACQThqQQhqKQIANwIAIAIgBDYCTCAFQRBqIAJBOGpBEGopAgA3AgAgBUEYaiADKAIANgIADAILELQyIQUgAy0AFCEEIAMpAgwhFyACQThqIAMQtwcgBSACKQI4NwIAIAIgFzcCRCAFQQhqIAJBOGpBCGopAgA3AgAgAiAEOgBMIAVBEGogAkE4akEQaikCADcCAAwBCxCtMiEFIAJBOGogAxDVAyAFQSBqIAJBOGpBIGopAwA3AwAgBUEYaiACQThqQRhqKQMANwMAIAVBEGogAkE4akEQaikDADcDACAFQQhqIAJBOGpBCGopAwA3AwAgBSACKQM4NwMACyABKAIMIQQQrjIhAyACQThqIAQQPyADQThqIAJBOGpBOGopAwA3AwAgA0EwaiACQThqQTBqKQMANwMAIANBKGogAkE4akEoaiIKKQMANwMAIANBIGogAkE4akEgaiILKQMANwMAIANBGGogAkE4akEYaiIMKQMANwMAIANBEGogAkE4akEQaiIUKQMANwMAIANBCGogAkE4akEIaiIVKQMANwMAIAMgAikDODcDABCyMiEEIAJBOGogASgCEBBQIARBKGogCikDADcDACAEQSBqIAspAwA3AwAgBEEYaiAMKQMANwMAIARBEGogFCkDADcDACAEQQhqIBUpAwA3AwAgBCACKQM4NwMAIAAgBjoAHCAAIAc2AhggACAINgIUIAAgBDYCECAAIAM2AgwgACAFNgIIIAAgCTYCBCAAQRA2AgAMCQsCQAJAAkACQAJAAkACQAJAAkACQCABKAIIIgQOCAABAgMEBQYHAAsgASgCICEFIAEoAhwhBiABKAIYIQcCQCABKQMQIhdCA4NCAFINACAXpyIDIAMoAgAiA0EBajYCACADQX9MDQ8LIAEtACwhCCABLQAkIQkgASgCKCEBELYyIQMgASgCLCEVIAEoAighFiABKAIkIRIgAkEgaiABEKELIAJBmAFqIAFBDGoQf0EAIQtBACEKAkAgASgCMCIMRQ0AEK4yIQogAkE4aiAMED8gCkE4aiACQThqQThqKQMANwMAIApBMGogAkE4akEwaikDADcDACAKQShqIAJBOGpBKGopAwA3AwAgCkEgaiACQThqQSBqKQMANwMAIApBGGogAkE4akEYaikDADcDACAKQRBqIAJBOGpBEGopAwA3AwAgCkEIaiACQThqQQhqKQMANwMAIAogAikDODcDAAsgAS0APCETAkAgASgCNCIMRQ0AELEyIQsgDCgCDCEUIAwoAhAhDyACQThqIAwQ/AggC0EQaiAPNgIAIAsgAikCODcCACACIBQ2AkQgC0EIaiACQThqQQhqKQIANwIACwJAAkAgASgCOCIUDQBBACEMDAELELEyIQwgFCgCDCEPIBQoAhAhESACQThqIBQQphEgDEEQaiARNgIAIAwgAikCODcCACACIA82AkQgDEEIaiACQThqQQhqKQIANwIACyACQThqQRhqIhQgAUEYahDYByACQThqQShqIgEgFjYCACACQThqQQhqIhYgAkEgakEIaigCADYCACACQcwAaiACQZgBakEIaigCADYCACACQThqQTBqIg8gCjYCACACQThqQThqIgogDDYCACACIBU2AmQgAiASNgJcIAIgAikCICIYNwM4IAIgAikCmAE3AkQgAiATOgB0IAIgCzYCbCADQThqIAopAwA3AgAgA0EwaiAPKQMANwIAIANBKGogASkDADcCACADQSBqIAJBOGpBIGopAwA3AgAgA0EYaiAUKQMANwIAIANBEGogAkE4akEQaikDADcCACADQQhqIBYpAwA3AgAgAyAYNwIADAgLIAEoAiAhBSABKAIcIQYgASgCGCEHAkAgASkDECIXQgODQgBSDQAgF6ciAyADKAIAIgNBAWo2AgAgA0F/TA0OCyABLQAsIQggAS0AJCEJIAEoAighARC3MiEDIAJBCGogARDHCyACQSBqIAFBDGoQoQtBgICAgHghFCABKAI4IRUgASgCNCEWIAEoAjAhEgJAIAEoAhhBgICAgHhGDQAgASgCLCEKIAEpAiQhGCACQThqIAFBGGoQpQ0gAkGgAWogGDcDACACQagBaiAKNgIAIAIgAikCPDcDmAEgAigCOCEUCyABLQBFIRMgAS0ARCEPQQAhC0EAIQoCQCABKAI8IgxFDQAQsTIhCiAMKAIMIREgDCgCECEQIAJBOGogDBD8CCAKQRBqIBA2AgAgCiACKQI4NwIAIAIgETYCRCAKQQhqIAJBOGpBCGopAgA3AgALAkAgASgCQCIBRQ0AEKsyIQsgASkCBCEYIAEoAgAhARCsMiEMIAJBOGogARCGASAMIAJBOGpB4AAQ3wohASALIBg3AgQgCyABNgIACyACQThqQQhqIgEgAkEIakEIaigCADYCACACQcwAaiACQSBqQQhqKAIANgIAIAIgAikCCCIYNwM4IAIgAikCIDcCRCADQRBqIAJBOGpBEGopAwA3AgAgA0EIaiABKQMANwIAIAMgGDcCACADIBQ2AhggAyATOgBFIAMgDzoARCADIAs2AkAgAyAKNgI8IAMgFTYCOCADIBY2AjQgAyASNgIwIAMgAikDmAE3AhwgA0EkaiACQZgBakEIaikDADcCACADQSxqIAJBmAFqQRBqKAIANgIADAcLIAEoAgwhAxCzMiEBIAMoAhQhBSADKQIMIRcgAy8BGCEGIAJBOGogAxC3ByACQThqQRhqIgMgBjsBACABIAIpAjg3AgAgAiAXNwJEIAFBCGogAkE4akEIaikCADcCACACIAU2AkwgAUEQaiACQThqQRBqKQIANwIAIAFBGGogAygCADYCAAwFCyABKAIMIQMQtDIhASADLQAUIQUgAykCDCEXIAJBOGogAxC3ByABIAIpAjg3AgAgAiAXNwJEIAFBCGogAkE4akEIaikCADcCACACIAU6AEwgAUEQaiACQThqQRBqKQIANwIADAQLIAEoAgwhAxC4MiEBIAMoAhghByADKAIUIQggAygCECEJIAMoAgQhCiADKAIAIQsCQCADKQMIIhdCA4NCAFINACAXpyIFIAUoAgAiBUEBajYCACAFQX9MDQsLIAMtAEQhDCADLQAcIRQCQAJAIAMoAiAiBg0AQQAhBQwBCxCxMiEFIAYoAgwhFSAGKAIQIRYgAkE4aiAGEPwIIAVBEGogFjYCACAFIAIpAjg3AgAgAiAVNgJEIAVBCGogAkE4akEIaikCADcCAAsgAkE4akE4aiADQThqENgHIAMoAjAhBiADKAI0IRUgAkGYAWogA0EkahC9ASACQewAaiAVNgIAIAIgBjYCpAEgAkHkAGogAkGgAWopAgA3AgAgAiAMOgB8IAIgFDoAVCACIAc2AlAgAiAINgJMIAIgCTYCSCACIBc3A0AgAiAKNgI8IAIgCzYCOCACIAU2AlggAiACKQKYATcCXCABIAJBOGpByAAQ3woaDAMLIAEoAgwhAxCyMiEBIAMoAhghByADKAIUIQggAygCECEJIAMtACghCiADKAIEIQsgAygCACEMAkAgAykDCCIXQgODQgBSDQAgF6ciBSAFKAIAIgVBAWo2AgAgBUF/TA0KCyADLQAcIRQCQAJAIAMoAiAiBg0AQQAhBQwBCxCxMiEFIAYoAgwhFSAGKAIQIRYgAkE4aiAGEPwIIAVBEGogFjYCACAFIAIpAjg3AgAgAiAVNgJEIAVBCGogAkE4akEIaikCADcCAAsgAygCJCEDEKwyIQYgAkE4aiADEIYBIAYgAkE4akHgABDfCiEDIAEgCjoAKCABIAM2AiQgASAFNgIgIAEgFDoAHCABIAc2AhggASAINgIUIAEgCTYCECABIBc3AwggASALNgIEIAEgDDYCAAwCCyABKAIMIQMQsjIhASADKAIQIQUgAygCDCEGIAMoAgghByADLQAtIQggAy0ALCEJIAMoAhwhCiADKAIYIQsCQCADKQMAIhdCA4NCAFINACAXpyIMIAwoAgAiDEEBajYCACAMQX9MDQkLIAMtABQhDCACQThqQSBqIhQgA0EgahCPByACQThqQQhqIgMgBzYCACACQThqQRBqIgcgBTYCACACQThqQRhqIgUgCzYCACABIBc3AwAgAUEgaiAUKQMANwMAIAIgBjYCRCABQQhqIAMpAwA3AwAgAiAMOgBMIAFBEGogBykDADcDACACIAo2AlQgAUEYaiAFKQMANwMAIAIgCDoAZSACIAk6AGQgAUEoaiACQThqQShqKQMANwMADAELIAEoAgwhAxC1MiEBIAMoAhQhByADKAIQIQggAy0AUiEJIAMtAFEhCiADLQBQIQsgAygCTCEMIAMoAkghFAJAAkAgAygCAA0AQgAhGSADNQIYIRcCQCADKQMIIhhCA4NCAFINACAYpyIFIAUoAgAiBUEBajYCACAFQX9MDQoLIAMxABxCIIYgF4QhFwwBCwJAIAMpAwgiGEIDg0IAUg0AIBinIgUgBSgCACIFQQFqNgIAIAVBf0wNCQtCASEZIAMpAxgiF1ANACAXQgODQgBSDQAgF6ciBSAFKAIAIgVBAWo2AgAgBUF/TA0IC0EDIQUCQCADLQBFQQNGDQAgAkE4aiADQSBqEJYKIAJBmAFqQR1qIAJBOGpBHWopAAA3AAAgAkGYAWpBGGogAkE4akEYaikDADcDACACQZgBakEQaiACQThqQRBqKQMANwMAIAJBmAFqQQhqIAJBOGpBCGopAwA3AwAgAiACKQM4NwOYASACLQBdIQUgAi8BXiEGCyABIBc3AxggASAHNgIUIAEgCDYCECABIBg3AwggASAZNwMAIAEgAikDmAE3AyAgASAJOgBSIAEgCjoAUSABIAs6AFAgASAMNgJMIAEgFDYCSCABIAY7AUYgASAFOgBFIAFBKGogAkGgAWopAwA3AwAgAUEwaiACQagBaikDADcDACABQThqIAJBsAFqKQMANwMAIAFBPWogAkG1AWopAAA3AAALCyAAIAk6ACQgACAFNgIgIAAgBjYCHCAAIAc2AhggACAXNwMQIAAgATYCDCAAIAQ2AgggACACLwA4OwAlIAAgCDoALCAAIAM2AiggACACLwCYATsALSAAQRE2AgAgAEEnaiACQThqQQJqLQAAOgAAIABBL2ogAkGYAWpBAmotAAA6AAAMCAsgASkDCCEXIAEoAgQhAxCuMiEBIAJBOGogAxA/IAFBOGogAkE4akE4aikDADcDACABQTBqIAJBOGpBMGopAwA3AwAgAUEoaiACQThqQShqKQMANwMAIAFBIGogAkE4akEgaikDADcDACABQRhqIAJBOGpBGGopAwA3AwAgAUEQaiACQThqQRBqKQMANwMAIAFBCGogAkE4akEIaikDADcDACABIAIpAzg3AwAgACAXNwMIIAAgATYCBCAAQRI2AgAMBwsgASgCICEIIAEoAhwhByABKAIYIQYgASkDECIXQgODQgBSDQAgF6ciASABKAIAIgFBAWo2AgAgAUF/TA0DCyAAIAU6ACQgACAINgIgIAAgBzYCHCAAIAY2AhggACAXNwMQIAAgAzYCDCAAIAQ2AgggAEEGNgIADAULIAEoAiAhCCABKAIcIQcgASgCGCEGIAEpAxAiF0IDg0IAUg0AIBenIgEgASgCACIBQQFqNgIAIAFBf0wNAQsgACAFOgAkIAAgCDYCICAAIAc2AhwgACAGNgIYIAAgFzcDECAAIAM2AgwgACAENgIIIABBBzYCAAwDCwALIBEgAigCQBD4OQALIAkgAigCQBD4OQALIAJB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OBDfChogACAGNgIEIAAgCTYCAAwHCyAAQQxqIANB8AJqQQxqQTQQ3woaIAAgBTYCCCAAIAQ2AgQgACAGNgIADAYLIABBCGogA0HwAmpBCGpBOBDfChogACACNgIEIAAgBTYCAAwFCyAAQQxqIAhBNBDfChogACAKNgIIIAAgBjYCBCAAIAI2AgAMBAsgAEEMaiADQSBqQQxqQTQQ3woaIAAgBTYCCCAAIAc2AgQgACAGNgIADAMLAkACQAJAAkACQAJAIAIoAgQNACACKAIMIgsgAigCECIEEPkwDQECQAJAAkACQCABLQALQQFxDQAgASgCIA0DIAFBfzYCICABKAJgDQIgAUF/NgJgIANB8AJqIAFBJGogAUHkAGoQqQkgA0GwAmpBCGoiAiADQfACakEMaigCADYCACADIAMpAvQCNwOwAiADKALwAiIFQSpHDQEgA0EgakEIaiACKAIANgIAIAMgAykDsAI3AyAgCyAEQQN0aiEEA0ACQCALIARHDQAgACADQSBqEIYMIAEgASgCYEEBajYCYCABIAEoAiBBAWo2AiAMDgsgA0GwAmogCygCACALKAIEENktIAtBCGohCwNAIANB4AFqIANBsAJqEI8FAkAgAy0A4AFBBEcNACADKAKwAiADKAK0AkEEQQgQyTMMAgsgA0H4AWpBCGogA0HgAWpBCGotAAA6AAAgAyADKQDgATcD+AEgA0EQaiADQfgBahDnMSADQfACaiADQSBqIAMoAhAgAygCFBCeCCADKALwAiICQSpGDQALCyAAQQRqIANB8AJqQQRyQTwQ3woaIAAgAjYCACADKAKwAiADKAK0AkEEQQgQyTMMCQsgAS0ADEEBcQ0FAkAgASgC2AENACABQX82AtgBIAFB3AFqENAPIANB8AJqIAEQxh8gAygC9AIhDCADKALwAiICQSpHDQcgA0HwAmogARDoLCADKAL0AiENAkAgAygC8AIiAkEqRw0AIAsgBEEDdGohDgJAA0ACQCALIA5HDQAgACANNgIIIAAgDDYCBCAAQSo2AgAMDAsgA0GwAmogCygCACALKAIEENktIAtBCGohCwNAIANB+AFqIANBsAJqEI8FAkAgAy0A+AFBBEcNACADKAKwAiADKAK0AhCXOgwCCyADQSBqQQhqIANB+AFqQQhqLQAAOgAAIAMgAykA+AE3AyAg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DQcLIANB8AJqIAEgBhBRIAMoAvgCIQUgAygC9AIhBCADKALwAiECIANB+AFqIANB8AJqQQxqQTQQ3woaIAJBVmoOAgEAAgsgACABELwVDAgLIAlBAUYNASADQfACaiABIAZBHGoQUSADKAL4AiEIIAMoAvQCIQcgAygC8AIhAiADQSBqIANB8AJqQQxqQTQQ3woaIAJBVmoOAgMBAgsgAEEMaiADQfgBakE0EN8KGiAAIAU2AgggACAENgIEIAAgAjYCAAwGCyAAIAU2AgggACAENgIEIABBKjYCAAwFCyAAQQxqIANBIGpBNBDfChogACAINgIIIAAgBzYCBCAAIAI2AgAMBAsgA0HwAmogARDGHyADKAL0AiECAkAgAygC8AIiDEEqRg0AIABBCGogA0HwAmpBCGpBOBDfChogACACNgIEIAAgDDYCAAwECyADQfACaiABEOgsIAMoAvQCIQwCQCADKALwAiINQSpGDQAgAEEIaiADQfACakEIakE4EN8KGiAAIAw2AgQgACANNgIADAQLIANB8AJqIAEgAiAEEL0LAkAgAygC8AIiBEEqRg0AIABBBGogA0HwAmpBBHJBPBDfChogACAENgIADAQLIANB8AJqIAEgBSAMEL0LAkAgAygC8AIiBEEqRg0AIABBBGogA0HwAmpBBHJBPBDfChogACAENgIADAQLIANB8AJqIAEgAiAHEL0LAkAgAygC8AIiBEEqRg0AIABBBGogA0HwAmpBBHJBPBDfChogACAENgIADAQLIANB8AJqIAEgCCAMEL0LIAMoAvACIgRBKkYNASAAQQRqIANB8AJqQQRyQTwQ3woaIAAgBDYCAAwDCwJAAkAgAS0AC0EBcQ0AIANB8AJqEJgnDAELIANB8AJqEJknCwJAAkACQAJAA0AgBigCAEEBRw0DIAZBHGohKiAGKAIEIgIgBigCCGohDUEAIQgCQANAAkACQAJAAkACQAJAIAMtAPwCDQAgAiANRg0CIAJBAWohDgwBCyACIA1GDQEgAiEOIA1Bf2oiDSECCyADKAL4AiIHIAhNDQIgAi0AACEJIANBGGogAygC9AIiDCAIQRhsahDKHEEAIQIgAygCGCEKAkACQAJAIAMoAhwiBA4CAgEAC0EAIQIDQCACIARBAXYiBSACaiIGIAogBkEDdGotAAQgCUH/AXFLGyEC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viIMAgsgAkGAAWpBFGogAkHgAWpBEGopAwA3AgAgAkGAAWpBDGogAkHgAWpBCGopAwA3AgAgAiACKQPgATcChAFBACEEQQAtAMD/owEaQcAAEIwBIgVFDQIgBUEaNgIAIAUgAikCgAE3AgQgBUEMaiACQYABakEIaikCADcCACAFQRRqIAJBgAFqQRBqKQIANwIAIAVBHGogAkGYAWooAgA2AgAMAQsgCkEBEKcwQQEgChDhMyAJIQULIAYgDBCaLSAIIAYQ3DMMAgsACyACKAL4AiIEIAYQuCcgAigC9AIgBBDbM0EBIQQgASAHENwRCyAAIAU2AgQgACAENgIAIAJBgANqJAAL0U4CL38EfiMAQcAEayICJAACQAJAIAEoAgQiAygCJA0AIABBwAFqIQRBgICAgHghBQwBCyADKAIgIgYoAgAhASAGKAIEIQZBACEFIAJBADYChAEgAkKAgICAEDcCfCACQQE6AIwBIAIgACgCwAFBCGo2AogBAkACQAJAIAFFIAZFciIHDQAgAkHIAGogASAGENIsIAIoAkgiCEUNACACQfgCaiAIIAIoAkwiCSgCDCIKEQcAAkACQCACKAL4AkGBgICAeEcNAEEAIQYgAkEANgKYASACQoCAgIDAADcDkAEgCCAJEPwtIAIgAkHcAWo2AsADQQQhAQwBCyACQcADaiAIIAkoAhAiCxEHACACQcAAaiACKALAA0EBaiIBQX8gARsiAUEEIAFBBEsbQQRBGBDnIiACQfgCakEIaikCACExIAJB+AJqQRBqKQIAITIgAigCQCEBIAIoAkQiBSACKQL4AjcCACAFQRBqIDI3AgAgBUEIaiAxNwIAIAJBATYCoAIgAiAFNgKcAiACIAE2ApgCQRghBkEBIQECQANAIAJBwANqIAggChEHACACKALAA0GBgICAeEYNAQJAIAEgAigCmAJHDQAgAkG4AmogCCALEQcAIAEgAigCoAIiDGsgAigCuAJBAWoiBEF/IAQbIgRPDQAgAkGYAmogDCAEQQRBGBCFJyACKAKcAiEFCyAFIAZqIgQgAikCwAM3AgAgBEEQaiACQcADakEQaikCADcCACAEQQhqIAJBwANqQQhqKQIANwIAIAIgAUEBaiIBNgKgAiAGQRhqIQYMAAsLIAggCRD8LSACQZABakEIaiACQZgCakEIaigCACIGNgIAIAIgAikCmAI3A5ABIAIoApQBIQEgAiACQdwBajYCwAMgBkECSQ0AAkAgBkEVSQ0AIAEgBiACQcADahCXCgwBCyAGQRhsIQRBGCEGAkADQCAEIAZGDQEgASABIAZqEJ0OIAZBGGohBgwACwsgAigClAEhASACKAKYASEGC0EAIAJBiAFqIAcbIQ0gAkE4aiAGQQRBIBDjIiACQQA2AqgBIAIgAikDODcCoAEgBkEYbCEEIAFBCGohCCACQfgCakEMaiEOIAJBuAJqQQxqIQcgACgCtAEhDwJAAkACQANAAkACQCAERQ0AQYCAgIB4IQYCQCABKAIAQYCAgIB4Rg0AIAJBwANqIAhBfGooAgAgCCgCABDtICACKALAAyEGCyAGQYGAgIB4Rw0BCyACKAKoASEGIAIoAqQBIQEgAiACKAKgATYC1AEgAiABNgLQASACIAE2AswBIAIgASAGQQV0ajYC2AEgAEEYaiEQIABBFGohESAAQSRqIRIgAEE4aiETIABBBGohFCAAKAJwIhUgACgCdEEKbGohFiACQfgCakEEaiEOIAJBmAJqQQRqIRcgAkHAA2pBBGohGCACQcADakEUaiEZIAJB3AFqQQxqIRogACgCuAEhGyACQdwBakEEaiIcQQhqIR0gHEEQaiEeA0ACQAJAIAIoAtABIgEgAigC2AFGDQAgAiABQSBqNgLQASABKAIAIgZBgYCAgHhHDQELIAJBzAFqEJwVIAJBkAFqELkjIAIoAnwhBQwHCyABKAIcIR8gASgCGCEgIBwgASkCBDcCACAdIAFBDGopAgA3AgAgHiABQRRqKAIANgIAIAIgBjYC3AEgAigClAEhISACKAKYASEiIAJBwANqIA0gGiAPIA8QeyACKALAAw0DIAJBKGogAigCxAMiIyACKALIAyIkKAIMEQcAIAJBvAFqIAIoAiggAigCLBDBByAjICQoAhwRBAAhBiAjICQoAhARBAAoAgAhDCACQSBqIAIoAsQBIgFBAUEBEOMiQQAhCyACQQA2AqACIAIgAikDIDcCmAIgAkEYakEBQQRBFBDjIiACQQA2AsACIAIgAigCHCIHNgK8AiACIAIoAhg2ArgCIAIgASACKALAASIEajYCgAMgAiAENgL8AkGBgMQAIQEgDCEIA0AgAkGBgMQANgL4AgJAIAFBgYDEAEcNACAOEIQRIQELAkACQAJAAkACQAJAAkACQCABQYCAxABGDQACQAJAIAFBgAFPDQBBASEEDAELAkAgAUGAEE8NAEECIQQMAQtBA0EEIAFBgIAESRshBAsgBCAIaiEIQQAhBSABQXZqDgQHAgIBAgsgAikCvAIhMSACKAK4AiEBIAIoApgCIAIoApwCEPY5AkAgAigCvAEiBkGAgICAeEYNACAGIAIoAsABEPY5CyAjICQQ/C0gAUGAgICAeEYNDCACIAE2AvQBIAIgMTcC+AEgAkEANgKYAyACQgA3ApADIAIgFjYCjAMgAiAVNgKIAyACIBY2AoQDIAIgFTYCgAMgAiAhNgL4AiACICEgIkEYbGo2AvwCIAJBmAJqIAJB+AJqEKoGIAIoApgCQYGAgIB4Rw0CQQAhJCACQQA2AogCIAJCgICAgMAANwOAAkEEIQcMAwsgAigC+AIhBCACQYGAxAA2AvgCAkACQAJAIARBgYDEAEcNAAJAIAIoAvwCIgogAigCgANHDQBBgIDEACEKDAMLIAIgCkEBajYC/AIgCi0AACIEwEF/Sg0BIAIgCkECajYC/AIgCi0AAUE/cSEJIARBH3EhJQJAIARB3wFLDQAgJUEGdCAJciEEDAILIAIgCkEDajYC/AIgCUEGdCAKLQACQT9xciEJAkAgBEHwAU8NACAJICVBDHRyIQQMAgsgAiAKQQRqNgL8AiAJQQZ0IAotAANBP3FyICVBEnRBgIDwAHFyIQQLQYCAxAAhCiAEQYCAxABGDQELIAQhCiAEQQpGDQQLIAIgCjYC+AILIAJBmAJqIAEQiRogBkF/Rg0EAkAgAigC+AIiAUGBgMQARw0AIAIgDhCEESIBNgL4AgsgBkEBaiIGIQUgAUGAgMQARw0FDAQLIAJBwANqIAJB+AJqEMAfQQEhBkEgIQQgAkEQaiACKALAA0EBaiIBQX8gARsiAUEEIAFBBEsbQSAQ5SIgAkGYAmpBCGopAgAhMiACQZgCakEQaikCACEzIAJBmAJqQRhqKQIAITQgAigCECEBIAIoAhQiCCACKQKYAjcCACAIQRhqIDQ3AgAgCEEQaiAzNwIAIAhBCGogMjcCACACQQE2ArQBIAIgCDYCsAEgAiABNgKsASACQcADaiACQfgCakEkEN8KGgJAA0AgAkG4AmogAkHAA2oQqgYgAigCuAJBgYCAgHhGDQECQCAGIAIoAqwBRw0AIAJBvAFqIAJBwANqEMAfIAJBrAFqIAYgAigCvAFBAWoiAUF/IAEbQQRBIBCFJyACKAKwASEICyAIIARqIgEgAikCuAI3AgAgAUEYaiACQbgCakEYaikCADcCACABQRBqIAJBuAJqQRBqKQIANwIAIAFBCGogAkG4AmpBCGopAgA3AgAgAiAGQQFqIgY2ArQBIARBIGohBAwACwsgAkGAAmpBCGogAkGsAWpBCGooAgAiJDYCACACIAIpAqwBNwOAAiACKAKEAiEHCyAHICRBBXRqIQUgMaciIyAxQiCIp0EUbGohIkEAISUgIyEGA0AgBiAiRg0CQQAhCSAHIQEDQAJAIAEgBUcNACAlIAkgJSAJSxshJSAGQRRqIQYMAgsgAUEQaiEEIAFBDGohCCABQSBqIgohASAGQQxqKAIAIgsgBkEQaigCACIMIAgoAgAiCCAEKAIAIgQQ9zINACAJIAsgDCAIIAQQvx9qIQkgCiEBDAALCwsgCEEBaiEIDAELAkADQAJAAkACQAJAAkACQCAjICJGDQAgJUUNBUEAISEgAkEANgLEASACQoCAgIAQNwK8ASAjQRBqIgsoAgAgI0EMaiIMKAIAIiZqIScgByAkQQV0aiEIIAchBgJAA0ACQAJAAkAgBiIBIAhGDQAgAUEgaiEGIAwoAgAiBSALKAIAIgkgAUEMaigCACIEIAFBEGooAgAiChC/H0UNAyAEIAVPDQEgBSAJIAQgChCYMg0EICFBAWohIQJAIAQgJk8NACAKIARqICdLDQMLIAJBvAFqQSAQiRoMAwtBAyEBDAgLIAIgEDYCwAMgGCABKQAUNwAAIBhBCGoiBiABQRxqIgQvAAA7AAAgAkH4AmogAkHAA2oQsxUgAkG8AWogAigC/AIiCCACKAKAAxD4LiACKAL4AiAIEPY5IAJB+AJqIAAoAgAQqx4gAkG4AmogAigC/AIiCCACKAKAA0EAICUgIWsiBSAFICVLGxC2CyACIAJBuAJqNgLAAyAYIAEpABQ3AAAgBiAELwAAOwAAIAJBmAJqIAJBwANqELQVIAJBvAFqIAIoApwCIgUgAigCoAIQ+C4gAigCmAIgBRD2OSACKAK4AiACKAK8AhD2OSACKAL4AiAIEPY5IAIgETYCwAMgGCABKQAUNwAAIAYgBC8AADsAACACQfgCaiACQcADahCzFSACQbwBaiACKAL8AiIBIAIoAoADEPguIAIoAvgCIAEQ9jkMBgsgAiAUNgLAAyAYIAEpABQ3AAAgGEEIaiABQRxqLwAAOwAAIAJB+AJqIAJBwANqELMVIAJBvAFqIAIoAvwCIgEgAigCgAMQ+C4gAigC+AIgARD2OQwACwsgAkHAA2ogARDfByACKALAAyIGIAIoAsQDEIs1IAFBFGohASAGQYCAgIB4Rg0BIAIgEzYCwAMgGCABKQAANwAAIBhBCGogAUEIai8AADsAACACQfgCaiACQcADahCzFSACQbwBaiACKAL8AiIGIAIoAoADEPguIAIoAvgCIAYQ9jkMAgsgAkGAAmoQvhsgAkH0AWoQuiMgAigC3AEgAigC4AEQizUgICAfEPwtDAkLIAIgEjYCwAMgGCABKQAANwAAIBhBCGogAUEIai8AADsAACACQfgCaiACQcADahCzFSACQbwBaiACKAL8AiIGIAIoAoADEPguIAIoAvgCIAYQ9jkLIAJB+AJqIAAoAgAQqx4gAkG4AmogAigC/AIiBiACKAKAA0EAICUgIWsiBCAEICVLGxC2CyACIAJBuAJqNgLAAyAYIAEpAAA3AAAgGEEIaiIEIAFBCGoiCC8AADsAACACQZgCaiACQcADahC0FSACQbwBaiACKAKcAiIFIAIoAqACEPguIAIoApgCIAUQ9jkgAigCuAIgAigCvAIQ9jkgAigC+AIgBhD2OSACIBE2AsADIBggASkAADcAACAEIAgvAAA7AAAgAkH4AmogAkHAA2oQsxUgAkG8AWogAigC/AIiASACKAKAAxD4LiACKAL4AiABEPY5C0EBIQELIAIoAsABIQYCQAJAIAIoAsQBIgRBEEkNACAGIAQQuAYhBgwBCyAGIAQQnxEhBgsgAkG4AmpB3sOhAUEBQQAgJSAGayIGIAYgJUsbIAFqELYLIAJBPzYChAMgAkE/NgL8AiACQQI2AsQDIAJB0OugATYCwAMgAkICNwLMAyACIAJBuAJqNgKAAyACIAJBvAFqNgL4AiACIAJB+AJqNgLIAyACQfwAaiACQcADahCUNSEBIAIoArgCIAIoArwCEPY5IAIoArwBIAIoAsABEPY5IAENAgsgI0EUaiEoICMoAgghBiAjKAIEIQEgAkEAOgDkAyACQQA2AuADIAIgGzYC3AMgAiABIAZqIgY2AtgDIAIgATYC1AMgAkEANgLQAyACQgA3AsgDIAIgBjYCxAMgAiABNgLAAwNAAkACQAJAAkACQAJAAkACQAJAAkAgAkHAA2oQhBEiBEGAgMQARg0AIBkQhBEiBkGAgMQARg0AAkACQAJAAkAgAi0A5AMNACAGQQlGDQIgBkEbRw0BIAJBAToA5AMMDAsgBkHtAEYNAgwLCyAGQf8ASQ0FIAZBnwFNDQogBkENdkGAp6IBai0AACIBQRVPDQQgAUEGdCAGQQd2QT9xckGAqaIBai0AACIBQbQBTw0DIAFBBXQgBkECdkEfcXJBwLOiAWotAAAgBkEBdEEGcXZBA3EiAUEDRw0LAkAgBkHyg3xqDgILCwALQQEhASAGQdwLRg0LAkAgBkHYL0YNACAGQZA0Rg0MIAZBg5gERg0MQQFBAUEBQQFBAUECIAZBmpx4akEaSRsgBkHPpX9qQT9JGyAGQYBRakEwSRsgBkHec2pB4QRJGyAGQf7//wBxQfzJAkYbIQEMDAtBAyEBDAsLAkAgAigC3AMiAUUNACABIAIoAuADIAFwayEBDAsLQZTJgAEQ7ysAC0EAIQEgAkEAOgDkAwwJCyACQfwAakEKEIkaIAJBADYCgAMgAkKAgICAwAA3AvgCIAJBADYCyAMgAkKAgICAwAA3AsADAkAgJA0AQQQhKUEAISpBACErQQQhLEEAIS0MBgtBBCEFA0ACQCAjQQxqIgwoAgAiASAjQRBqIgkoAgAiBiAHQQxqKAIAIgQgB0EQaigCACIIEL0bRQ0AAkAgAkH4AmogAkHAA2ogASAGIAQgCBD3MiIEGyIBKAIIIgYgASgCAEcNACABEMImIAIoAvwCIQULIAUgAigCxAMgBBsgBkECdGogBzYCACABIAZBAWo2AggLIAdBIGohByAkQX9qIiQNAAsgAigCiAIhJCACKAKEAiEHIAIoAsgDIS0gAigCxAMhLCACKALAAyErIAIoAvwCISkgAigC+AIhKiACKAKAAyIhRQ0FIAAgAkH8AGogJSAMKAIAIAkoAgAgByAkQQAQ9QUNBEEAIQYgAkEANgKUAiACQoCAgIAQNwKMAiACQQhqICFBCBDlIiACQQA2AuQCIAIgAigCDCIENgLgAiACIAIoAggiCDYC3AIgIUECdCEFQQAhAQJAIAggIU8NACACQdwCakEAICFBBEEIEIUnIAIoAuACIQQgAigC5AIhAQsgKSAFaiEuIAEgIWohLyAEIAFBA3RqIQUgKSEKA0AgCigCACIBKAIQIQggACgCuAEgIyABKAIMIgtBARC7BSIEIAYgBCAGSxshBAJAAkAgASgCEA0AIARBAWohCAwBCyAAKAK4ASAjIAggC2pBABC7BSIIIARBAWoiCyAIIAtLGyEICyACQbADaiAAKAJEEMoXIAJBpANqIAIoArQDIiYgAigCuAMgCCAEakEBdiILIARrELYLAkACQCABKAIQDQAgAiAAKAIQNgK8AwwBCyACQcADaiABEN8HAkAgAigCwAMiJ0GAgICAeEcNACACIAAoAkQ2ArwDDAELICcgAigCxAMQ9jkgAiAAKAJANgK8AwsgAkG8AWogACgCRBDKFyACQawBaiACKALAASInIAIoAsQBIAggC0F/c2oQtgsgAkEAIAQgBmsiMCAwIARLGzYCnAMgAkEANgKYAyACQT82ApQDIAJBwgA2AowDIAJBPzYChAMgAkECNgL8AiACQaTXoQE2AvgCIAIgAkGsAWo2ApADIAIgAkG8A2o2AogDIAIgAkGkA2o2AoADIAJBAzoAvAQgAkEANgK4BCACQqCAgIAwNwKwBCACQoKAgIDAADcCqAQgAkECNgKgBCACQQM6AJwEIAJBADYCmAQgAkKggICAIDcCkAQgAkKCgICAwAA3AogEIAJBAjYCgAQgAkEDOgD8AyACQQA2AvgDIAJCoICAgBA3AvADIAJCgoCAgMAANwLoAyACQQI2AuADIAJBAzoA3AMgAkEANgLYAyACQiA3AtADIAJCgYCAgMAANwLIAyACQQI2AsADIAJBBDYCzAIgAkEENgK8AiACQaTJgAE2ArgCIAJBBTYCxAIgAiACQcADajYCyAIgAiACQfgCajYCwAIgAkHoAmogAkG4AmoQkQogAigCrAEgAigCsAEQ9jkgAigCvAEgJxD2OSACKAKkAyACKAKoAxD2OSACKAKwAyAmEPY5IAJBwANqQQhqIAJB6AJqQQhqKAIANgIAIBcgASkCFDcCACAXQQhqIAFBHGovAQA7AQAgAiACKQLoAjcDwAMgAiACQcADajYCmAIgAkH4AmogAkGYAmoQtRUgAkGMAmogAigC/AIiASACKAKAAxD4LiACKAL4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+AIhCSACKALEAiElIAIoArwCISMgAkHAA2ogACgCvAFBCGoQvxsCQCACKALEAyIGKAIMIgQgBigCBEcNACAGQQRqELYmCyAGKAIIIARB3ABsaiIBIAw2AhwgASAJQQBHIgw2AhggASAHNgIUIAEgDDYCECABICU2AgwgASAIQQBHIgg2AgggASAjNgIEIAEgCDYCACABIAIpAnA3AiAgASACKQNQNwIsIAEgAikDYDcCOCABQShqIAJB8ABqQQhqKAIANgIAIAFBNGogAkHQAGpBCGooAgA2AgAgAUHAAGogCygCADYCACABIDI3AlQgASAKNgJQIAEgMTcCSCABIAU2AkQgBkEAOgAAIAYgBEEBajYCDCACQfgCahCuLiACQbgCahCuLiACQcAEaiQADwtB3MGhAUE3IAJB3AFqQfzCgAFB4MKhARCxGAALQQBBAEH8w4ABEKEbAAsgAiAINgKYAiACQQE2AsQDIAJB8MmAATYCwAMgAkIBNwLMAyACQcgANgK8AiACIAJBuAJqNgLIAyACIAJBmAJqNgK4AiACQcADakGcyoABEK0uAAuESQMXfwN+AXwjAEHAAWsiAiQAAkAgAC0AJCIDDQACQCABKAIAQXRqIgRBByAEQSZJG0F7aiIEQR9LDQBBASAEdEGuooCAeHENASAEDQAgAS0AEUUNAQsgAEEDOgAkCyAALQAlIQUgAUEMaiEGIAFBCGohByABQQRqIQgDQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAgAiBEFnag4LAQICAgICAgICAgACCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAgoAgAiBCgCAEF0aiIJQQcgCUEmSRsOJgABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlAAsgBEEIaiEJIARBBGohBAwsCyAEQRRqIQkgBEEQaiEEDCsLIARBFGohCSAEQRBqIQQMKgsgBCgCICIEQTRqIQkgBEEwaiEEDCkLIARBDGohCSAEQQhqIQQM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KAJAIgQgAigCOEcNACACQThqEM4OCyACKAI8IARBAnRqIAk2AgAgAiAEQQFqNgJADAELIAIgDTYCKCACQSRqEMIlCyAQQQRqIhAgE0cNAAsCQCACKAJAIg5BAUYNACACKAI8IQkgAigCOCEEIAIgDjYCvAEgDkECTQ0CIAJBADYCiAEgAiAENgKAASACIAk2AnwgAiAJNgJ4IAIgCSAOQQJ0ajYChAEgAiACQbwBajYCjAEgAkEYaiACQfgAahDFDQwDCyACQfgAakEIaiIOIAIoAjwiCSgCACIEQQhqKQMANwMAIAJB+ABqQRBqIg8gBEEQaikDADcDACACQfgAakEYaiINIARBGGopAwA3AwAgAkH4AGpBIGoiECAEQSBqKQMANwMAIAJB+ABqQShqIhEgBEEoaikDADcDACACQfgAakEwaiISIARBMGopAwA3AwAgAkH4AGpBOGoiDCAEQThqKQMANwMAIAIgBCkDADcDeCACKAI4IQAgARD9ASABQThqIAwpAwA3AwAgAUEwaiASKQMANwMAIAFBKGogESkDADcDACABQSBqIBApAwA3AwAgAUEYaiANKQMANwMAIAFBEGogDykDADcDACABQQhqIA4pAwA3AwAgASACKQN4NwMAIARBwABBCBDuHCAJQQAQny0gACAJEN8zDAcLIAQgAigCgAEQ+DkACyACIA42AiAgAiAJNgIcIAIgBDYCGAsCQCADDQAgAigCIEUNAEEAIQMgAigCHCgCACIEKAIAQRdHDQAgBC0AGEEFRw0AIAQoAhAiBCgCAEEPRw0AIAAgBBCQAiAALQAkIQMLIAJBxABqIAJBGGpBCGooAgA2AgAgAiACKQIYNwI8IAJBGTYCOCACIAEpAxA3A0gCQCADQf8BcUECRw0AIAAgAkE4ahCQAgsgAkH4AGpBOGoiBCACQThqQThqKQMANwMAIAJB+ABqQTBqIgkgAkE4akEwaikDADcDACACQfgAakEoaiIOIAJBOGpBKGopAwA3AwAgAkH4AGpBIGoiDyACQThqQSBqKQMANwMAIAJB+ABqQRhqIg0gAkE4akEYaikDADcDACACQfgAakEQaiIQIAJBOGpBEGopAwA3AwAgAkH4AGpBCGoiESACQThqQQhqKQMANwMAIAIgAikDODcDeCABEP0BIAFBOGogBCkDADcDACABQTBqIAkpAwA3AwAgAUEoaiAOKQMANwMAIAFBIGogDykDADcDACABQRhqIA0pAwA3AwAgAUEQaiAQKQMANwMAIAFBCGogESkDADcDACABIAIpA3g3AwAMBAsgAS0AGEEFRw0DIAEoAhAiCSgCAEF0aiIEQQcgBEEmSRsiBEEWSw0DAkBBASAEdEGAwZACcQ0AIARBA0cNBAJAAkAgAw4EAQAGBgELIAVBAXENBAsgACAJEJACDAQLIAAgCRCQAgwDCyABKAIoIgQoAgBBG0cNAiAEKAIIQQNHDQIgBCsDGCIcIBxiDQJEAAAAAAAA8D8gHKZEAAAAAAAA8L9iDQIgACAEEJACDAILAkAgAS0AFEEVRw0AIAAtACYNAQsgAw0BIAgoAgAiCSgCACIEQR9LDQFBASAEdEGAgIOAeHFFDQEgACAJEJACDAELIAAgARCQAgsgAkHAAWokAA8LQQAtAMD/owEaIAcoAgAhDkHAABCMASIJRQ0AIAlBADYCCCAJQjE3AwAgDigCACEEIA4gCTYCACACQfgAakEIaiIJIARBCGopAwA3AwAgAkH4AGpBEGoiDiAEQRBqKQMANwMAIAJB+ABqQRhqIg8gBEEYaikDADcDACACQfgAakEgaiINIARBIGopAwA3AwAgAkH4AGpBKGoiECAEQShqKQMANwMAIAJB+ABqQTBqIhEgBEEwaikDADcDACACQfgAakE4aiISIARBOGopAwA3AwAgAiAEKQMANwN4IAEQ/QEgAUE4aiASKQMANwMAIAFBMGogESkDADcDACABQShqIBApAwA3AwAgAUEgaiANKQMANwMAIAFBGGogDykDADcDACABQRBqIA4pAwA3AwAgByAJKQMANwMAIAEgAikDeDcDACAEQcAAQQgQ7hwMAwsACyAAIARBAUEEQRQQ9Q0gACgCCCEECwJAIAQgACgCAEcNACAAEJgOCyAAKAIEIARBFGxqIgkgFDYCECAJIAo2AgwgCSALNgIIIAkgDDYCBCAJIA02AgAgACAEQQFqNgIIDAALC8JHAhV/A34jAEGwCWsiBCQAAkACQAJAAkACQAJAAkACQAJAIANBAEgNAAJAIAEtAAtBAXFFDQAgAS0ADUECRw0ECyABKAIgDQEgAUL/////DzcCICABKAI8IQUgAUEANgI8AkAgBUUNACABKAI4IQYDQCAGEP4pIAZBEGohBiAFQX9qIgUNAAsLIAFBADYCSCABKAJUIQUgAUEANgJUAkAgBUUNACABKAJQIQYDQCAGQQRqIgcoAgAgBkEIaigCABCJJCAGKAIAIAcoAgAQlzogBkEMaiEGIAVBf2oiBQ0ACwsgAUEANgJYIAEgASgCIEEBaiIGNgIgIAYNAiABQX82AiAgASABKAIEIgc2AjAgASABLQALIghBAXE6AF0gASABLQAJQQogAS0ACBs6AF4gAUEAIAEoAgAiBiAGQQJGGyIGNgIsIAEgAS0ACiIFQQJGIAVyQQFxOgBcAkAgBkEBcUUNACABKAI8QQR0IAdLDQYLQQAhBiABQQA2AiBBAkEBIAhBAXEiBRshCEEgQRwgBRshCSADQQJ0IQcCQANAIAcgBkYNASACIAZqIQUgBkEEaiEGIAUoAgAoAhggCWooAgAgCHENAAsgBEE0akGA/gMQ3g8gBEEBNgIwIARB+AZqIARBMGoQ8gsgBEHwAGogASAEQfgGakEAQQAQ7AIgBCgCeCEGIAQoAnQhCSAEKAJwIgVBKkcNBSAEQfgGahDcEgwICyAEQfAAaiABEOgsIAQoAnQhBiAEKAJwIgVBKkYNBiAEKAJ4IQcgAEEMaiAEQfAAakEMakE0EN8KGiAAIAc2AgggACAGNgIEIAAgBTYCAAwICyAAQf////8HNgIIIAAgAzYCBCAAQSU2AgAMBwtBpKmDARDpIgALQbSpgwEQ6SIACyAAQSk2AgAMBAsgAEEMaiAEQfAAakEMakE0EN8KGiAAIAY2AgggACAJNgIEIAAgBTYCACAEQfgGahDcEgwDCyAAQSc2AgAgACAHNgIEIAFBADYCIAwCCyAGIQkLAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIANFDQAgBEHwAGogASACKAIAEO4GIAQoAnAiBUErRw0BCyAEQTBqIAEQvBUgBCgCMCEFDAELIAQoAnghCiAEKAJ0IQsgBUEqRw0BAkACQAJAIANBAUYNACAEQfAAaiABIAIoAgQQ7gYgBCgCcCIFQStHDQELIAQgCjYCOCAEIAs2AjRBKiEFDAELIAQoAnghDCAEKAJ0IQ0CQCAFQSpHDQAgBEHwAGogARDGHyAEKAJ0IQgCQCAEKAJwIgVBKkcNACAEQfAAaiABEOgsIAQoAnQhDiAEKAJwIgVBKkcNBSAEQfAAaiABIAggCxC9CyAEKAJwIgVBKkcNBiAEQfAAaiABIAogDhC9CyAEKAJwIgVBKkcNByAEQfAAaiABIAggDRC9CyAEKAJwIgVBKkcNCCAEQfAAaiABIAwgDhC9CyAEKAJwIgVBKkcNCSADQQJGDQ4gAkEIaiECIAdBeGohAyAEQYQHaiEKA0AgBEH4BmogASACKAIAEO4GIAQoAvgGIgVBK0YNDyAEKAKAByELIAQoAvwGIQcgBUEqRw0LIARB8ABqIAEgCCAHEL0LIAQoAnAiBUEqRw0MIARB8ABqIAEgCyAOEL0LAkAgBCgCcCIFQSpHDQAgAkEEaiECIANBfGoiAw0BDBALCyAEQTBqQQRyIARB8ABqQQRyQTwQ3woaIAQgBTYCMAwMCyAEQTBqQQhqIARB8ABqQQhqQTgQ3woaIAQgCDYCNAwLCyAEQTBqQQxqIARB8ABqQQxqQTQQ3woaIAQgDDYCOCAEIA02AjQLIAQgBTYCMAsgBCgCNCEIIAVBKkYNCwwJCyAEQTBqQQxqIARB8ABqQQxqQTQQ3woaIAQgCjYCOCAEIAs2AjQgBCAFNgIwDAcLIARBMGpBCGogBEHwAGpBCGpBOBDfChogBCAONgI0DAYLIARBMGpBBHIgBEHwAGpBBHJBPBDfChoMBQsgBEEwakEEciAEQfAAakEEckE8EN8KGgwECyAEQTBqQQRyIARB8ABqQQRyQTwQ3woaDAMLIARBMGpBBHIgBEHwAGpBBHJBPBDfChoMAgsgBEE8aiAKQTQQ3woaIAQgCzYCOCAEIAc2AjQgBCAFNgIwDAELIARBMGpBBHIgBEHwAGpBBHJBPBDfChogBCAFNgIwCyAEKAI0IQgLIAQoAjghBiAAQQxqIARBMGpBDGpBNBDfChogACAGNgIIIAAgCDYCBCAAIAU2AgAMAgsgBCAINgI0CyAEQfAAaiABIAYgCBC9CwJAIAQoAnAiBkEqRg0AIABBBGogBEHwAGpBBHJBPBDfChogACAGNgIADAELAkACQAJAAkAgASgCIA0AIAFBfzYCIAJAAkAgASgCJEEBRg0AQQAhBkEALQDA/6MBGkEwEIwBIgVFDQEgBUIANwIoIAVCgICAgMAANwIgIAVCCDcCGCAFQgA3AhAgBUKAgICAwAA3AgggBUKBgICAEDcCACAEQfgCakIANwMAIARBgANqQgA3AwAgBEGIA2pCADcDACAEQgA3A/ACIARB+AZqQQBBgAIQ7xEaA0AgBEH4BmogBmogBjoAACAGQQFqIgZBgAJHDQALIARB8ABqIARB+AZqQYACEN8KGiAEQQA2AMEDIARCBDcDuAMgBEIANwOwAyAEQoCAgIDAADcDqAMgBCAFNgKkAyAEQQA2AqADIARCADcDmAMgBCABLwFcOwDDAyAEIAEtAF46AMADIARBADYC1AMgBEKAgICAwAA3AswDIARBADYC4AMgBEKAgICAwAA3AtgDIARB2ANqIAEoAjwiDxCGMCAEIAk2ApQDIAQgCDYCkAMgASgCRCEHIARB+AZqIAEoAkgiBkEAQQRBBBDrDyAEKAL8BiEFAkAgBCgC+AZBAUYNACAEKAKAByAHIAZBAnQQ3wohB0EAQQQQkDogBCAGNgK8AyAEIAc2ArgDIAQgBTYCtAMgBEIANwLsBiAEQoCAgIDAADcC5AYgBEIINwLcBiAEQgA3AtQGIARCgICAgMAANwLMBiABKAJQIhAgASgCVEEMbGohEUEAIQYCQAJAAkACQAJAAkADQAJAAkAgECARRw0AQQAhByAEQYgJaiECIBEhECAGIRIgBSEDDAELIAQgECgCBCIHNgKICSAGQQFqIRIgByAQKAIIQQN0aiEHIARB9AZqIQIgEEEMaiEQIAYhAwsgAiAHNgIAAkAgBCgCiAkiBg0AIARB+AZqIAQoAtAGIAQoAtQGEJkMAkAgBCgC+AYiBkGEgICAeEcNAEEALQDA/6MBGkEwEIwBIgZFDQsgBkKBgICAEDcCACAGQQhqIARBzAZqQSgQ3woaIAQoAqQDIgUgBSgCACIFQX9qNgIAAkAgBUEBRw0AIAQoAqQDENoYCyAEIAY2AqQDIAEoAjgiByAPQQR0aiEDQQAhBSAHIQYCQANAAkACQCAGIANGDQAgBSAPRw0BQci8gwEQ/TkACyAEQeQDaiAPEIIeIAQoAuADIQIgBCgC3AMhCAJAIAQoAtQDIgZFDQAgBCgC0AMiCiAGQQN0aiEMIAQoAugDIQMgBCgC7AMhCQNAAkACQAJAAkACQAJAAkAgCSAKKAIAIgtNDQAgAyALaiINLQAAQQFGDQYgCigCBCIGIQUCQCAPIAZLDQAgBiEFDAYLAkADQCAEQQhqIAcgBUEEdGoQhhwgBCgCCEEBRw0BIA8gBCgCDCIFTQ0HDAALCyACIAVNDQEgAiALTQ0CIAggC0ECdGogCCAFQQJ0aiILKAIANgIAIA1BAToAAANAIAQgByAGQQR0ahCGHCAEKAIAQQFHDQcgAiAGTQ0EIAQoAgQhBSAIIAZBAnRqIAsoAgA2AgAgCSAGTQ0FIAMgBmpBAToAACAFIQYgDyAFSw0ACyAFIA9BuMWDARChGwALIAsgCUH4xIMBEKEbAAsgBSACQZjFgwEQoRsACyALIAJBqMWDARChGwALIAYgAkHIxYMBEKEbAAsgBiAJQdjFgwEQoRsACyAFIA9BiMWDARChGwALIApBCGoiCiAMRw0ACwsgBCgCsAMiBkUNAiAEKAKsAyIFIAZBFGxqIQMCQAJAAkACQAJAA0ACQAJAAkACQAJAAkACQAJAAkACQCAFKAIADgkAAQIDBAUGCQkACyAFKAIEIgYgAkkNBiAGIAJBwLaDARChGwALIAUoAggiB0UNByAFKAIEIQYgB0EDdCEHA0AgBigCACIJIAJPDQwgBiAIIAlBAnRqKAIANgIAIAZBCGohBiAHQXhqIgcNAAwICwsgBSgCCCIHRQ0GIAUoAgQhBiAHQQJ0IQcDQCAGKAIAIgkgAk8NDCAGIAggCUECdGooAgA2AgAgBkEEaiEGIAdBfGoiBw0ADAcLCyAFKAIEIgYgAkkNAyAGIAJB8LaDARChGwALIAUoAggiB0UNBCAFKAIEIQYgB0ECdCEHA0AgBigCACIJIAJPDQsgBiAIIAlBAnRqKAIANgIAIAZBBGohBiAHQXxqIgcNAAwFCwsgBSgCBCIGIAJPDQYgBSAIIAZBAnRqKAIANgIEAkAgBSgCCCIGIAJPDQAgBUEIaiEHDAMLIAYgAkGgt4MBEKEbAAsgBSgCBCIGIAJPDQQLIAVBBGohBwsgByAIIAZBAnRqKAIANgIACyAFQRRqIgUgA0YNCAwACwsgBiACQbC3gwEQoRsACyAGIAJBkLeDARChGwALIAkgAkHQtoMBEKEbAAsgCSACQeC2gwEQoRsACyAJIAJBgLeDARChGwALIAZBEGohAiAFQQFqIQgCQAJAAkACQAJAAkACQAJAAkACQAJAIAYoAgAOCgkIBwYFBAMCAQAJCyAGKAIEIQYgBEEINgL4BiAEIAY2AvwGIARB8ABqIARB+AZqEP0HIQYCQCAEKALgAyIJIAVNDQAgBCgC3AMgBUECdGogBjYCAAwKCyAFIAlB5MiDARChGwALIARBBzYC+AYgBEHwAGogBEH4BmoQ/QchBgJAIAQoAuADIgkgBU0NACAEKALcAyAFQQJ0aiAGNgIADAkLIAUgCUHUyIMBEKEbAAsCQAJAAkACQAJAAkACQAJAAkACQCAGKAIMIgkOAwABAgMLIARBBzYC+AYgBEHwAGogBEH4BmoQ/QchBiAEKALgAyIJIAVNDQMgBCgC3AMgBUECdGogBjYCAAwQCyAGKAIIKAIAIQsCQCAEKALUAyIJIAQoAswDRw0AIARBzANqEM0mCyAEKALQAyAJQQN0aiIKIAs2AgQgCiAFNgIAIAQgCUEBajYC1AMgBigCDEUNAyAEKALgAyIJIAVNDQQgBCgC3AMgBUECdGogBigCCCgCADYCAAwPCyAEQQU2AvgGIAQgBigCCCkCAEIgiTcC/AYgBEHwAGogBEH4BmoQ/QchBiAEKALgAyIJIAVNDQQgBCgC3AMgBUECdGogBjYCAAwOCyAGKAIIIQsgBEH4BmogCUEAQQRBBBDrDyAEKAL8BiEGIAQoAvgGQQFGDQQgBCgCgAcgCyAJQQJ0EN8KIQsgBCAJNgKAByAEIAs2AvwGIAQgBjYC+AYgBEEgaiAEQfgGahDJGyAEKAIgIQ0CQCAEKAIkIgxBAkkNACAMQQF2IQsgDSAMQQJ0akF8aiEGIA0hCQNAIAkoAgAhCiAJIAYoAgA2AgAgBiAKNgIAIAZBfGohBiAJQQRqIQkgC0F/aiILDQALCyAEIAw2AoAHIAQgDTYC/AYgBEEENgL4BiAEQfAAaiAEQfgGahD9ByEGIAQoAuADIgkgBU0NBSAEKALcAyAFQQJ0aiAGNgIADA0LIAUgCUHEyIMBEKEbAAtBAEEAQYTIgwEQoRsACyAFIAlBlMiDARChGwALIAUgCUGkyIMBEKEbAAsgBiAEKAKABxD4OQALIAUgCUG0yIMBEKEbAAsCQAJAAkACQAJAAkACQAJAAkACQCAGKAIMIgkOAwABAgMLIARBBzYC+AYgBEHwAGogBEH4BmoQ/QchBiAEKALgAyIJIAVNDQMgBCgC3AMgBUECdGogBjYCAAwPCyAGKAIIKAIAIQsCQCAEKALUAyIJIAQoAswDRw0AIARBzANqEM0mCyAEKALQAyAJQQN0aiIKIAs2AgQgCiAFNgIAIAQgCUEBajYC1AMgBigCDEUNAyAEKALgAyIJIAVNDQQgBCgC3AMgBUECdGogBigCCCgCADYCAAwOCyAEQQU2AvgGIAQgBigCCCkCADcC/AYgBEHwAGogBEH4BmoQ/QchBiAEKALgAyIJIAVNDQQgBCgC3AMgBUECdGogBjYCAAwNCyAGKAIIIQsgBEH4BmogCUEAQQRBBBDrDyAEKAL8BiEGIAQoAvgGQQFGDQQgBCgCgAcgCyAJQQJ0EN8KIQsgBCAJNgKAByAEIAs2AvwGIAQgBjYC+AYgBEEYaiAEQfgGahDJGyAEIAQpAxg3AvwGIARBBDYC+AYgBEHwAGogBEH4BmoQ/QchBiAEKALgAyIJIAVNDQUgBCgC3AMgBUECdGogBjYCAAwMCyAFIAlB9MeDARChGwALQQBBAEG0x4MBEKEbAAsgBSAJQcTHgwEQoRsACyAFIAlB1MeDARChGwALIAYgBCgCgAcQ+DkACyAFIAlB5MeDARChGwALIAYoAgwhCgJAAkACQAJAAkACQCAEKAKkAyIJQQxqKAIAIg0gCUEQaigCACILIAYoAgQiCRCALCAGKAIIIgZNDQACQCAGDQAgCUEBdCELDAMLIAsgCUsNASAJIAtBoMuDARChGwALQZjGgwFBFUH0xoMBEKoeAAsgBkEBdCANIAlBA3RqKAIAakF+aiILQX9GDQELIAtBAWohDSALQf7///8HTw0BIAQgDTYCiAcgBCAGNgKEByAEIAk2AoAHIAQgCjYC/AYgBEEGNgL4BiAEQfAAaiAEQfgGahD9ByEGIAQoAuADIgkgBU0NAiAEKALcAyAFQQJ0aiAGNgIADAgLQYTHgwEQ/TkACyAEIA2tNwP4BkHAxoMBQRMgBEH4BmpBqMKDAUGUx4MBELEYAAsgBSAJQaTHgwEQoRsACyAGKAIMIQoCQAJAAkAgBCgCpAMiCUEMaigCACINIAlBEGooAgAiCyAGKAIEIgkQgCwgBigCCCIGTQ0AAkACQAJAIAYNACAJQQF0IQsMAQsgCyAJTQ0BIAZBAXQgDSAJQQN0aigCAGpBfmohCwsgC0H/////B08NAiAEIAs2AogHIAQgBjYChAcgBCAJNgKAByAEIAo2AvwGIARBBjYC+AYgBEHwAGogBEH4BmoQ/QchBiAEKALgAyIJIAVNDQMgBCgC3AMgBUECdGogBjYCAAwICyAJIAtBoMuDARChGwALQZjGgwFBFUGwxoMBEKoeAAsgBCALrTcD+AZBwMaDAUETIARB+AZqQajCgwFB1MaDARCxGAALIAUgCUHkxoMBEKEbAAsgBCAGKQIENwL8BiAEQQM2AvgGIARB8ABqIARB+AZqEP0HIQYCQCAEKALgAyIJIAVNDQAgBCgC3AMgBUECdGogBjYCAAwECyAFIAlBiMaDARChGwALAkACQAJAAkACQAJAAkAgBigCDCIJDgIBAgALIAYoAgghCiAEQfgGaiAJQQBBBEEIEOsPIAQoAvwGIQYgBCgC+AZBAUYNAyAEKAKAByILIAogCUEDdBDfCiEKIAQgCTYCgAcgBCAKNgL8BiAEIAY2AvgGAkAgBiAJTQ0AIARBEGogBEH4BmogCUEEQQgQ1RogBCgCECIGQYGAgIB4Rw0FIAQoAvwGIQsgBCgCgAchCQsgBCAJNgKAByAEIAs2AvwGIARBATYC+AYgBEHwAGogBEH4BmoQ/QchBgwCCyAEQQc2AvgGIARB8ABqIARB+AZqEP0HIQYMAQsgBEEANgL4BiAEIAYoAggpAgA3AvwGIARB8ABqIARB+AZqEP0HIQYLIAQoAuADIgkgBU0NAiAEKALcAyAFQQJ0aiAGNgIADAULIAYgBCgCgAcQ+DkACyAGIAQoAhQQ+DkACyAFIAlB+MWDARChGwALIAYpAgQhGSAEQQA2AvgGIAQgGTcC/AYgBEHwAGogBEH4BmoQ/QchBgJAIAQoAuADIgkgBU0NACAEKALcAyAFQQJ0aiAGNgIADAILIAUgCUHoxYMBEKEbAAsgBigCBCEJAkAgBCgC1AMiBiAEKALMA0cNACAEQcwDahDNJgsgBCgC0AMgBkEDdGoiCyAJNgIEIAsgBTYCACAEIAZBAWo2AtQDCyAIIQUgAiEGDAALCwJAIAQoApADIgYgAk8NACAEIAggBkECdGooAgA2ApADAkAgBCgClAMiBiACTw0AIAQgCCAGQQJ0aigCADYClAMCQAJAIAQoArwDIgVFDQAgBCgCuAMhBiAFQQJ0IQUDQCAGKAIAIgcgAk8NAiAGIAggB0ECdGooAgA2AgAgBkEEaiEGIAVBfGoiBQ0ACwsgBEHwA2ogBEHwAGpB2AIQ3woaIARB+AZqIARB8ANqQYACahDDEiAEQfADaiAEQfgGakGAAhDfChogBEEANgKECSAEQoCAgIDAADcC/AggBCgCsAYhEyAEQgQ3AogHIARCADcCgAcgBEKAgICAwAA3AvgGAkAgE0F/TA0AIARBADYCkAcgBEH4BmogExCGMCAEQYQHaiATEIYwIAQoAogHIQ4gBCgChAchEiAEKAL8BiELIAQoAvgGIRQCQCAEKAK8BiIGRQ0AIAQoArgGIhUgBkECdGohESAEKAKMByEPIAQoAoAHIQogBCgCnAYhFiAELQDCBiEQIAQoAqwGIRdBBCEDA0AgFSgCACEGAkAgBCgC/AgNACAEQfwIahDJJiAEKAKACSEDCyAVQQRqIRUgAyAGNgIAQQEhByAEQQE2AoQJQQAhBSAEKAKACSEDQQAhGAJAAkACQAJAAkADQCAEIAciCUF/aiIHNgKECSAEKAL8CCEMIAQgAyAHQQJ0Ig1qKAIAIgY2AogJIA8gBk0NAQJAAkAgDiAGQQJ0aiIIKAIAIgIgBU8NACAKIAJNDQQgCyACQQJ0aigCACAGRg0BCyAEIAU2AowJIAUgCk8NBSALIAVBAnRqIAY2AgAgCCAFNgIAIBMgBk0NBCAFQQFqIQUCQAJAAkACQAJAAkAgFyAGQRRsaiIGKAIADgkGBgYAAQIDBgUGCyAGKAIIIQcgBCgCgAkiAyANaiAGKAIENgIAIAQgCTYChAkgByAYciEYDAMLIAYoAggiAkECdCEIIAYoAgQhBgJAIAwgB2sgAk8NACAEQfwIaiAHIAJBBEEEEIEnIAQoAoQJIQcLIAQoAoAJIgMgB0ECdGogBiAIEN8KGiAEIAcgAmoiBzYChAkMBAsgBigCBCEHIAQoAoAJIA1qIAYoAgg2AgAgBCAJNgKECQJAIAkgBCgC/AhHDQAgBEH8CGoQySYLIAQoAoAJIgMgCUECdGogBzYCACAEIAlBAWoiBzYChAkMAwsgAyANaiAGKAIENgIAIAQgCTYChAkLIAkhBwwBC0EBIRALIAdFDQUMAAsLIAYgD0GkiYQBEKEbAAsgAiAKQbSJhAEQoRsACyAGIBNB3LSDARChGwALIARBAzYClAkgBEHsiIQBNgKQCSAEQgM3ApwJIARBggE2AowHIARB8AA2AoQHIARB8AA2AvwGIAQgCjYCqAkgBCAEQfgGajYCmAkgBCAEQYgJajYCiAcgBCAEQagJajYCgAcgBCAEQYwJajYC+AYgBEGQCWpBhImEARCtLgALIBYgGHIhFiAVIBFHDQALIAQgFjYCnAYgBCAQOgDCBgtBAC0AwP+jARpB4AIQjAEiBkUNDyAGQoGAgIAQNwMAIAZBCGogBEHwA2pB2AIQ3woaIBQgCxCQOiASIA4QkDogBCgC/AggBCgCgAkQkDogBCgC5AMgBCgC6AMQ9jkgBCgC2AMgBCgC3AMQkDogBCgCzAMgBCgC0AMQlzogACAGNgIEIABBKjYCACABIAEoAiBBAWo2AiAMFAsgBEEBNgKUCSAEQbyHhAE2ApAJIARCATcCnAkgBEHwADYCrAkgBEGUh4QBNgKoCSAEIARBqAlqNgKYCSAEQZAJakG0iIQBEK0uAAsgByACQay1gwEQoRsACyAGIAJBnLWDARChGwALIAYgAkGMtYMBEKEbAAsgBCkDgAchGSAEKAL8BiEFDA4LAkACQCADQf7///8HSw0AIAYgBCgC9AYiFUcNAUGCgICAeCEGDA4LIAOtIRlBgICAgHghBgwOCwJAIAYoAgBFDQBBg4CAgHghBgwNCyAEQcwGaiADEMgIAkACQCAGQQhqIgogFUYNAEEBIQ0gA0EDdCEXIANBBXQhFgNAQYGAgIB4IQYCQCANQf////8HRw0AQv////8HIRkgAyEFDBELIAQoAtQGIgIgA00NBCAEKALQBiAXaiIFKAIEQQJqIgdB/v///wdLDQIgCigCACEGIA1BAWohCyAFQQRqIAc2AgACQAJAAkACQAJAAkAgBkUNACAEQShqIApBACAGGyIGKAIAQQhqIAYoAgQQwhQgBCAEKAIsIgc2ApQJIAQgBCgCKCIMNgKQCSAEKALgBiIGIANNDQsgBCgC3AYgFmoiDigCDEUNASAOKQMQIA5BGGopAwAgDEEIaiIIIAcQ7gghGSAOKAIAIhhBdGohCSAOKAIEIgIgGadxIQUgGUIZiEL/AINCgYKEiJCgwIABfiEaQQAhEwNAAkAgGCAFaikAACIbIBqFIhlCf4UgGUL//fv379+//358g0KAgYKEiJCgwIB/gyIZUA0AA0AgCCAHIAlBACAZeqdBA3YgBWogAnFrQQxsaiIGKAIAIAZBBGooAgAQjzcNBiAZQn98IBmDIhlQRQ0ACwsgGyAbQgGGg0KAgYKEiJCgwIB/g1BFDQIgBSATQQhqIhNqIAJxIQUMAAsLIAQoAuwGIgUgA00NCwJAIAQoAugGIgggA0EMbGoiBigCCCIHIAYoAgBHDQAgBhDNJgsgBigCBCAHQQN0akEANgIAIAYgB0EBajYCCCAEIAQoAvAGQQhqNgLwBgwBCyAMIAwoAgAiBkEBajYCACAGQX9MDRAgDiAMIAcgDRDpByAEKALsBiIFIANNDQsgBCgClAkhCSAEKAKQCSENAkAgBCgC6AYiCCADQQxsaiIGKAIIIgIgBigCAEcNACAGEM0mCyAGKAIEIAJBA3RqIgwgCTYCBCAMIA02AgAgBiACQQFqNgIIIAQgB0EBdCAEKALwBmpBFGo2AvAGIAQoAtQGIQILIAQgCzYCjAkgAiADSw0BIARBADYCqAkMEQsgBEH4BmogAyAIIAcQrRsgBCkDgAchGSAEKAL8BiEFIAQoAvgGIQYgDCAMKAIAIgdBf2o2AgACQCAHQQFHDQAgBEGQCWoQgiQLIAZBhICAgHhGDQEMEgsgBCAEKALQBiAXaiIGKAIEIAYoAgBrQQF2QQFqIgY2AqgJIAsgBkcNDyAEIAs2AuQDIAUgA00NCSAEIAggA0EMbGooAggiBjYC/AggCyAGRw0KCyALIQ0gCkEIaiIKIBVHDQALCyASIQYgAyEFDAELCyANrSEZIAMhBQwMCyADIAJByJCDARChGwALIAMgBkHYkIMBEKEbAAsgAyAFQfiQgwEQoRsACyADIAVB6JCDARChGwALIAMgBUGYkYMBEKEbAAsgBEEANgL4BiAEQeQDaiAEQfwIaiAEQfgGakGokYMBEJ4rAAsgBSAEKAKABxD4OQALIARBADYCgAEgBEEBNgJ0IARB4MSDATYCcCAEQgQ3AnggBEHwAGpB6MSDARCtLgsAC0HEqYMBEOkiAAsgBEEANgL4BiAEQYwJaiAEQagJaiAEQfgGakGIkYMBEJ4rAAsgAyEFCyAEQcwGahDSKiAEKALYAyAEKALcAxCQOiAEKALMAyAEKALQAxCXOiAEKAKsAyIHIAQoArADEKoWIAQoAqgDIAcQljogBCgCtAMgBCgCuAMQkDogBCgCpAMiByAHKAIAIgdBf2o2AgACQCAHQQFHDQAgBCgCpAMQ2hgLIAAgGTcDECAAIAU2AgwgACAGNgIIIABBGGogBEEwakEoEN8KGiAAQSM2AgAgASABKAIgQQFqNgIgCyAEQbAJaiQAC9VHAiR/CX4jAEHQCGsiAyQAAkACQAJAAkAgAhACIgRBAUcNAEECIQVBACEGQQAhB0ECIQhBACEJQQAhCkECIQtBgICAgHghDAwBCyADIAI2ArgIAkAgAhD/Og0AIANBuAhqIANBkAdqQaTGgAEQrAghDSACEP82QQEhDgwCC0HkgIABIQ8gA0HkgIABNgK4AyADIAI2ArwDIANBADYCrANBrICAASEOIAIhDEGBgICAeCEQQQIhCUEDIQVBAyERQQIhCkECIRJBAyETA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIA4gD0YNAAJAAkAgDCAOKAIAIhQgDigCBCIVEIUJIg0QAyIWEIA7RQ0AIA0gDBCKOkUNAQsgAyAOQQhqNgK0AyADKAKsAyADKAKwAxC+OCADIBY2ArADIANBATYCrAMgFCAVQcWFoQFBBhCgMQ0DIBQgFUGrxYABQQgQoDENBCAUIBVBs8WAAUEGEKAxDQUgFCAVQZeogwFBBBCgMQ0GIBQgFUG5xYABQQkQoDENByAUIBVBwsWAAUEZEKAxDQggFCAVQdvFgAFBCRCgMSEOIA0Q/zYgDkUNAiAJQf8BcUECRw0JIANB6AFqIANBrANqEJkyIAMtAOgBDQwgAy0A6QEhCQwRCyAOQQhqIQ4gFhD/NiANEP82DBELIAMgDjYCtANBgICAgHggECAQQYGAgIB4RhshDEECIAUgBUH/AXFBA0YbIQVBAiARIBFB/wFxQQNGGyELQQAgEiASQf8BcUECRiIOGyEHQQEgBiAOGyEGQQIgEyATQf8BcUEDRhshCCAJQQFxIQkgCkEBcSEKIBetQiCGIBithCEnDA4LIANBrANqEPgyDA4LIA0Q/zYCQCATQf8BcUEDRg0AQcWFoQFBBhCBHiEHDAwLIANB6AFqIANBrANqEOoYIAMtAOgBDQggAy0A6QEhEwwNCyANEP82IBBBgYCAgHhGDQlBq8WAAUEIEIEeIQcMCgsgDRD/NiASQf8BcUECRg0HQbPFgAFBBhCBHiEHDAkLIA0Q/zYgCkH/AXFBAkYNBEGXqIMBQQQQgR4hBwwICyANEP82IBFB/wFxQQNGDQJBucWAAUEJEIEeIQcMBwsgDRD/NgJAIAVB/wFxQQNGDQBBwsWAAUEZEIEeIQcMBwsgA0HoAWogA0GsA2oQ6hggAy0A6AENAyADLQDpASEFDAgLQdvFgAFBCRCBHiEHDAULIANBADYCrAMCQEEBIBYQkjIiDhDBNA0AIAMgDjYCmAECQCAOEP86DQAgA0GYAWogA0GQB2pB9MaAARCsCCEHIAMoApgBEP82DAYLIANBlIOAATYC9AEgA0HkgoABNgLwASADIA42AvgBIANBADYC6AFBBCERQQIhGUECIRpBAiEbQQIhHEECIR0CQANAIAMoAvABIQ4gAygC+AEhDCADKAL0ASEVAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQANAIA4gFUYNAQJAAkAgDCAOKAIAIg8gDigCBCIUEIUJIg0QAyIWEIA7RQ0AIA0gDBCKOkUNAQsgAyAOQQhqNgLwASADKALoASADKALsARC+OCADIBY2AuwBIANBATYC6AEgDyAUQZfHgAFBFBCgMQ0DIA8gFEGrx4ABQRUQoDENBCAPIBRBwMeAAUEVEKAxDQUgDyAUQdXHgAFBDRCgMQ0GIA8gFEHix4ABQRgQoDENByAPIBRB+seAAUEPEKAxIQwgDRD/NiAMDQggA0HoAWoQ+DIMEwsgDkEIaiEOIBYQ/zYgDRD/NgwACwsgAyAONgLwASAbQQFxQQh0IBxBAXFyIR4gCEGAgIB4cSAaQQFxciAZQQFxQQh0ckEAIBEgEUH/AXFBBEYbQf8BcUEQdHIhCCAdQQFxIQsMEQsgDRD/NgJAIB1B/wFxQQJGDQBBl8eAAUEUEIEeIQgMEQsgA0HoBGogA0HoAWoQmTIgAy0A6QQhHSADLQDoBEUNDwwOCyANEP82AkAgHEH/AXFBAkYNAEGrx4ABQRUQgR4hCAwQCyADQegEaiADQegBahCZMiADLQDpBCEcIAMtAOgERQ0ODA0LIA0Q/zYCQCAbQf8BcUECRg0AQcDHgAFBFRCBHiEIDA8LIANBADYC6AEgA0EBIBYQkjIiDTYCoAYgDRCBOw0DIANB8ABqIAMoAqAGEMstIAMoAnQhDSADKAJwIgxBAUcNBAJAIA0QBEEBRw0AIANB6ABqIA1BABAFEPwvIAMoAmwhDCADKAJoIRYgDRD/NiADQegEaiAWIAwQjw0gAygCoAYQ/zYMDAsgDRAEELYZIQwgA0EBOgDoBCADIAw2AuwEDAkLIA0Q/zYCQCAaQf8BcUECRg0AQdXHgAFBDRCBHiEIDA4LIANB6ARqIANB6AFqEJkyIAMtAOkEIRogAy0A6ARFDQwMCwsgDRD/NgJAIBFB/wFxQQRGDQBB4seAAUEYEIEeIQgMDQsgA0EANgLoASADQQEgFhCSMiINNgKgBiANEIE7DQMgA0GAAWogAygCoAYQyy0gAygCgAFBAUcNBAJAIAMoAoQBIg0QBEEBRw0AIANB+ABqIA1BABAFEPwvIAMoAnwhDCADKAJ4IRYgDRD/NiADQegEaiAWIAwQoAkgAygCoAYQ/zYMBwsgDRAEELYZIQwgA0EBOgDoBCADIAw2AuwEIA0Q/zYMBQsCQCAZQf8BcUECRg0AQfrHgAFBDxCBHiEIDAwLIANB6ARqIANB6AFqEJkyIAMtAOkEIRkgAy0A6ARBAUcNCgwJCyADQegEaiANQYABEI8NDAcLIAMgA0GgBmogA0GQB2pBxMaAARCsCDYC7AQgA0EBOgDoBCAMQQFxDQQMBQsgA0HoBGogDUGAARCgCQwCCyADQaAGaiADQZAHakGExoABEKwIIQ0gA0EBOgDoBCADIA02AuwECyADKAKgBhD/NgsgAy0A6QQhESADLQDoBEUNBAwDCyANEP82CyADKAKgBhD/NgsgAy0A6QQhGyADLQDoBEUNAQsLIAMoAuwEIQgLIANB6AFqEJY1AkAgDiAVRg0AIAghBwwGCyAfQYCAgHhxIAhB////B3FyIR8gHiEgIAshEQwHCyAOEP82QQIhEQwGCyADQQA2AqwDIANBASAWEJIyIg42AugEAkACQAJAAkAgDhCBOw0AIANB4ABqIAMoAugEEMstIAMoAmBBAUcNAQJAIAMoAmQiDhAEQQFHDQAgA0HYAGogDkEAEAUQ/C8gAygCXCENIAMoAlghDCAOEP82IANB6AFqIAwgDRCODSADKALoBBD/NgwECyAOEAQQthkhDSADQQE6AOgBIAMgDTYC7AEgDhD/NgwCCyADQegBaiAOQYABEI4NDAILIANB6ARqIANBkAdqQZTGgAEQrAghDiADQQE6AOgBIAMgDjYC7AELIAMoAugEEP82CyADLQDoAQ0AIAMtAOkBIQoMBQsgAygC7AEhBwwCCyADQQA2AqwDIANBASAWEJIyIg42ApgBAkACQCAOEP86DQAgAyADQZgBaiADQZAHakHkxYABEKwINgGiBiADKAKYARD/NgwBCyADQZCAgAE2AvQBIANBgICAATYC8AEgAyAONgL4ASADQQA2AugBQQIhHUECIQYCQAJAAkADQCADKALwASEOIAMoAvgBIQwgAygC9AEhDwJAAkACQAJAA0AgDiAPRg0BAkACQCAMIA4oAgAiFCAOKAIEIhUQhQkiDRADIhYQgDtFDQAgDSAMEIo6RQ0BCyADIA5BCGo2AvABIAMoAugBIAMoAuwBEL44IAMgFjYC7AEgA0EBNgLoASAUIBVBlMeAAUEDEKAxDQQgFCAVQdXjoAFBChCgMSEMIA0Q/zYgDEUNAyAdQf8BcUECRw0FIANB6ARqIANB6AFqEJkyIAMtAOgEDQcgAy0A6QQhHQwGCyAOQQhqIQ4gFhD/NiANEP82DAALCyADQQA6AKMGIANBADsAoQYgAyAONgLwASADIB1BAXE6AKAGIAZBAXEhEgwGCyADQegBahD4MgwCCyANEP82AkAgBkH/AXFBAkYNAEGUx4ABQQMQgR4hDQwECyADQegEaiADQegBahCZMiADLQDoBA0CIAMtAOkEIQYMAQsLQdXjoAFBChCBHiENDAELIAMoAuwEIQ0LIAMgDTYBogYLIANB6AFqEJY1IA4gD0cNACADKAKgBiEGDAQLIAMoAaIGIQcMAQsgA0EANgKsAwJAAkBBASAWEJIyIg4QwTQNACADIA42AugEIANB6AFqIA4Qph4CQAJAIAMoAugBIhBBgICAgHhGDQAgAygC8AEhFyADKALsASEHDAELIANB6ARqIANBkAdqQbTGgAEQrAghB0GAgICAeCEQCyADKALoBBD/NiAQQYCAgIB4Rw0BQYGAgIB4IRAMAgsgDhD/NkGAgICAeCEQC0GBgICAeCAYEJc1IAchGAwCCyAQIBgQlzUgB60hJ0GBgICAeCEMCyADQawDahCWNSAnpyEWQQEhDgJAIAxBgYCAgHhHDQAgFiENDAQLICdCIIinIR4MAgsgAygCtAMhDiADKAK8AyEMIAMoArgDIQ8MAAsLIANBrANqIAEQph4CQAJAAkACQCADKAKsAyIdQYCAgIB4RyIRDQACQCABEII7Ig4NAEGoxIABQSMQBiENDAMLIANB6AFqIAEQByIPEKYeAkAgAygC6AFBgICAgHhHDQBBy8SAAUEjEAYhDSABEP82IA8Q/zYMAwsgA0GIAWpBCGogA0HoAWpBCGooAgA2AgAgAyADKQLoATcDiAEgARD/NiAPEP82DAELIANBiAFqQQhqIANBrANqQQhqKAIANgIAIAMgAykCrAM3A4gBC0EMQQQQ+S4iDkEANgIIIA5CADcCAEEEEJEyIg1BADYCACADQZgBakEYakEAKQPg4qIBIic3AgAgA0EBNgKkASADIA42AqABIANBATYCnAEgA0EAOgCYASADQoGAgIDw/79/NwLEASADIA02AsABIANBATYCvAEgA0EAOgC4ASADQQApA9jiogEiKDcCqAEgA0EEIANBmAFqEP8jNgLQASADQdSMmQE2AswBQYwBEJEyIg5BADYCdCAOQoCAgIDAADcCbCAOQQA6AGggDkHEg5kBNgJkIA5CgICAgBA3AlwgDkKAgICAwAA3AlQgDkELNgIIIA5CgoCAgBA3AgAgDkEBNgKIASAOICg3AnggDkGAAWogJzcCACADIA42AtQBAkACQAJAAkACQAJAAkACQEEBRQ0AIANB2AFqQQhqIANBiAFqQQhqKAIANgIAIAMgAykDiAE3A9gBQRgQkTIiDUEANgIUIA1CgICAgMAANwIMIA1BADoACCANQoGAgIAQNwIAAkACQEEALQDg+qMBDgQAAAMBAAtBAEECOgDg+qMBQQAtAMD/owEaQYAIEIwBIg9FDQFBAEEDOgDg+qMBQQAgDzYC2PqjAQsgA0GsA2oQrh4gA0GsA2pB7ABqEJATIANCgYCAgMAANwLgBCADQegEakHIAGpBAUEAEMYcIANB6ARqQdQAakEBQQAQxhwgA0HoBGpB4ABqQQFBABDGHCADQaAGahCuHiADKQKwBiEnIAMpAtAGISggAykC2AYhKSADKQLgBiEqIANB6ARqQewAahCQEyADICo3AqgFIAMgKTcCoAUgAyAoNwKYBSADQqCAgICABDcCkAUgA0KggICAgAQ3AogFIANCoICAgIAENwKABSADICc3AvgEIANCoICAgIAENwLwBCADQqCAgICABDcC6AQgAygC9AMgAygC+AMQ9jkgAygCgAQgAygChAQQ9jkgAygCjAQgAygCkAQQ9jkgAygCmAQgAygCnAQQhzogA0GsA2ogA0HoBGpBtAEQ3woaIANB6AFqIANB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AykCuAg3A5AHDAELIANBoAZqENAzQSwQkTIiDkGkyIABNgIAIA4gAykCoAY3AgQgDkEMaiADQagGaikCADcCACAOQRRqIANBoAZqQRBqKQIANwIAIA4gAykCvAg3AhwgDkEkaiADQbgIakEMaikCADcCACADIA42ApQHIANBgICAgHg2ApAHCyADQagIahCHJwJAAkAgAygCrAMNACADKAKUByEVIAMoApAHIhRBgICAgHhGDQQgAykDoAchJyADKAKcByETIAMoApgHIQ8MAQsgA0HoBGogAygCpANBCGoQvxsgAygC7AQiDkEAOgAAIA4oAgwhEyAOKAIIIQ8gDkIENwIIIA4oAgQhFSAOQQA2AgRBgICAgHghFAJAAkAgAygCkAdBgICAgHhGDQAgA0GQB2oQzzMMAQsgAygClAciDiAOKAIAKAIAEQMACwsCQCADKAKsAw0AIANBrANqQRBqIh8QpzEgAygCyAMhECADQQA2AsgDIANBADYCsAYgAyAQNgKsBiADIANBrANqQRRqNgKoBiADIAMoAsQDIg42AqAGIAMgDiAQQdAAbCINajYCpAYCQANAAkACQAJAIA0NACADKAKgBiEODAELIAMgDkHQAGoiDDYCoAYgDigCACIWQQNHDQEgDkHQAGohDgsgAygCpAYhDCADQoSAgIDAADcCoAYgDCAOa0HQAG4hDSAMIA5GDQIDQCANRQ0DIA5BFGoiDCgCACAOQRhqKAIAEMwtIA5BEGooAgAgDCgCABCLOgJAIA4oAgBBAkYNACAOQQRqKAIAIA5BCGooAgAQ9jkLIA5BHGooAgAgDkEgaigCABCCOiAOQSxqIgwoAgAgDkEwaigCABDNLSAOQShqKAIAIAwoAgAQgDogDkE4aiIMKAIAIA5BPGooAgAQ4hsgDkE0aigCACAMKAIAEIw6IA5BxABqIgwoAgAgDkHIAGooAgAQ6hAgDkHAAGooAgAgDCgCABCNOiAOQdAAaiEOIA1Bf2ohDQwACwsgA0HoBGogDkEEakHMABDfChpBAC0AwP+jARpB0AAQjAEiDkUNAyAOIBY2AgAgDkEEaiADQegEakHMABDfChogA0EBOgDACCADIA42ArwIIAMgA0GsA2o2ArgIIANBuAhqEMoCIANBuAhqEIQeIAMoArwIIg5BFGoiFigCACAOQRhqKAIAEMwtIA4oAhAgFigCABCLOgJAIA4oAgBBAkYNACAOKAIEIA5BCGooAgAQ9jkLIA4oAhwgDkEgaigCABCCOiAOQSxqIhYoAgAgDkEwaigCABDNLSAOKAIoIBYoAgAQgDogDkE4aiIWKAIAIA5BPGooAgAQ4hsgDigCNCAWKAIAEIw6IA5BxABqIhYoAgAgDkHIAGooAgAQ6hAgDigCQCAWKAIAEI06IA5B0ABBBBDuHCANQbB/aiENIAwhDgwACwsgA0GgBmoQrx4gEA0EIB8Q/S8LIAMoArQDIQ0CQCADKAK4AyIOKAIAIgxFDQAgDSAMEQMACwJAIA4oAgQiDEUNACANIAwgDigCCBDuHAsgAygCyAMhDSADKALEAyEOAkADQCANRQ0BIA5BFGoiDCgCACAOQRhqKAIAEMwtIA5BEGooAgAgDCgCABCLOgJAIA4oAgBBAkYNACAOQQRqKAIAIA5BCGooAgAQ9jkLIA5BHGooAgAgDkEgaigCABCCOiAOQSxqIgwoAgAgDkEwaigCABDNLSAOQShqKAIAIAwoAgAQgDogDkE4aiIMKAIAIA5BPGooAgAQ4hsgDkE0aigCACAMKAIAEIw6IA5BxABqIgwoAgAgDkHIAGooAgAQ6hAgDkHAAGooAgAgDCgCABCNOiANQX9qIQ0gDkHQAGohDgwACwsgAygCwAMgAygCxANBBEHQABDJMyADQdADahDHDiADQeQDahDHDgJAIAMoAvwDIg5FDQAgA0HoBGpBEEEIIA5BAWoQ6RYgAygC+AMgAygC8ARrIAMoAugEIAMoAuwEEIc1CyADQegBahCBKCADQdQBahD7LyADQcwBahCHJyADKAKcASADKAKgAUEEQQwQyTMCQCADKAKsASIORQ0AIANB6AFqQQwgDkEBahC/GCADKAKoASADKALwAWsgAygC6AEgAygC7AEQhzULIAMoArwBIAMoAsABEPs5AkAgFEGAgICAeEYNACADICc3AvgBIAMgEzYC9AEgAyAPNgLwASADIBU2AuwBIAMgFDYC6AFBACEOIANBADYCrAMQCCIMQdL0mAFBBCAVIA8QpisgA0HIAGogA0GsA2ogDEGLvKEBQQMgA0H0AWoQuBkCQAJAIAMoAkgiFg0AIAwhDQwBCyADKAJMIQ0gDBD/NgsgA0HoAWoQzzMgFkUNCAwKCyATRQ0EIANBADYC6AEgDygCOCEOIA8oAjQhICAPKAIYIRIgDygCECEfIA8oAgghECAPKAIAIRQgDygCUCEMIA8oAkQhDRAIIRYCQAJAIA5BgICAgHhGDQAgA0HAAGogA0HoAWogFkHS9JgBQQQgD0E4ahC4GSADKAJARQ0AIAMoAkQhDQwBCyAWQZjWmQFBByAPQSRqKAIAIA9BKGooAgAQpisCQCANQYCAgIB4Rg0AIANBOGogA0HoAWogFkGAxYABQQcgD0HEAGoQuBkgAygCOEUNACADKAI8IQ0MAQsCQCAMQYCAgIB4Rg0AIANBMGogA0HoAWogFkGrxYABQQggD0HQAGoQuBkgAygCMEUNACADKAI0IQ0MAQsCQCAURQ0AIANBKGogA0HoAWogFkGHxYABQQkgDygCACAPQQRqKAIAELkZIAMoAihFDQAgAygCLCENDAELAkAgEEUNACADQSBqIANB6AFqIBZBkMWAAUELIA8oAgggD0EMaigCABC5GSADKAIgRQ0AIAMoAiQhDQwBCwJAIB9FDQAgA0EYaiADQegBaiAWQZvFgAFBByAPKAIQIA9BFGooAgAQuRkgAygCGEUNACADKAIcIQ0MAQsCQCASRQ0AIANBEGogA0HoAWogFkGixYABQQkgDygCGCAPQRxqKAIAELkZIAMoAhBFDQAgAygCFCENDAELICBFDQYgDygCNEEobCEgIA8oAjAhBUEAIQ0QCSESQQAhFAJAAkADQCAgIA1GDQEgBSANaiIOQRhqIh8oAgAhEBAIIgxBmNaZAUEHIA5BBGooAgAgDkEIaigCABCmKwJAAkAgEEGAgICAeEYNACADQQhqIANB6AFqIAxBgMWAAUEHIB8QuBkgAygCCA0BCyAMQavFgAFBCCAOQRBqKAIAIA5BFGooAgAQpisgAyAOQSRqKAIAIAMtAOoBEM4tIAMoAgQhDiAMQe67oQFBBBCFCSAOEAogEiAUIAwQCyANQShqIQ0gFEEBaiEUDAELCyADKAIMIQ0gDBD/NkEBIQ4gEkGEAUkNASASEAwMAQsgFkGy16ABQQgQhQkgEhAKQQAhDgsgDkUNBgsgFhD/NkEAIQwMBgsACyADQQA2AvgBIANBATYC7AEgA0Hk/ZgBNgLoASADQgQ3AvABIANB6AFqQaz3mAEQrS4ACyADIBU2AugEQbTDgAFBNSADQegEakGMw4ABQezDgAEQsRgACyADQQA2ArAGIANBATYCpAYgA0G4hpkBNgKgBiADQgQ3AqgGIANBoAZqQcCGmQEQrS4AC0EAQQBB8MSAARChGwALQQEhDCAWIQ0LIA8gExDtDyAVIA8Q+jlBASEOIAxFDQILAkAgBEEBRw0AIAIQ/zYLIB1BgICAgHhGDQMMAgsgDCAWEIs1IA5BAXMhEQtBASEOAkAgBEEBRw0AIAIQ/zYLIBFFDQELIAEQ/zYLIAAgDTYCBCAAIA42AgAgA0HQCGokAAupQwIPfwN+IwBB0AJrIgIkACABQcABaiEDIAEoAtABIQQCQAJAAkACQAJAAkACQCABKAIMQQFHDQAgAyABKAIQEMguIAEoAtABIQUgAxClIyABKALkASIGIAYoAgBBAWoiBzYCAAJAIAdFDQAgAkEgaiAGQQhqEMkuIAIoAiQhCEEAIQkgAigCICIKQQA2AghBACELA0ACQAJAAkACQAJAAkACQCABKALAASABKALEARDiLSIHQYCAxABGDQAgBxCNLw0CIAlBAXEhDEEAIQkgDA0GQQEhCQJAIAdBpX9qDgMFBgIACyAHQS9HDQUgC0EBcQ0FC0EAIQkgASgC6AFBCGogCigCBCAKKAIIEOUqIREMAgsgC0EBcUUNA0EAIQkMAgsgASgC0AEhByACQZ6AgIB4NgLgASAFIAcgAkHgAWoQ/iIhB0EBIQkLIAggCCgCAEEBajYCACAGEKgnQSYhBgJAIAkNAAJAAkACQCABKALEASABKALAASIHRg0AIActAABBL0YNAQsgASgC0AEhByACQZ6AgIB4NgLgASAFIAcgAkHgAWoQ/iIhBwwBCyADEKUjAkACQCABKALAASABKALEARDiLSIHQYCAxABGDQAgBxCLL0UNACABKALkASIMIAwoAgBBAWoiBzYCACAHRQ0IIAEoAtABIQ0gAkEYaiAMQQhqEMkuIAIoAhwhCEEAIQ4gAigCGCILQQA2AghBASEFQQEhCgJAAkADQCACQRBqIAEoAsABIgcgASgCxAEiCRDkLQJAAkACQAJAAkACQAJAAkAgAi0AEEUNACACLQARIQcgBUEBcQ0BDAILIAcgCRDiLSIHQYCAxABGDQUgBxDHKA0DIApBAXFFDQUgBxCPKA0CDAULIAdBpX9qQf8BcUHmAUkgB0FGakH/AXFB9gFJcSAFcSEFCyAHEJQuDQEgCkEBcUUNAiAHEJUuRQ0CCyADEKUjQQAhCgwECyADEKUjDAMLIAdB/wFxQdwARw0AIAEoAtABIQkgAxClIwJAAkAgASgCxAEgASgCwAEiB0YNACAHLQAAQfUARg0BCyACQZyAgIB4NgLgASAJIAkgAkHgAWoQxDshBwwECyABKALQASEHIAIgAyANIAkQyiMgCyACKAIAIAIoAgQQ+C4gAyAHEMguIAJB4AFqIAEQsgcgAigC5AEhByACKALgASIKQYCAgIB4Rg0DIAIoAugBIg1FDQEgBygCABCOMQ0BIAJBloCAgHg2AuABIAEgCSACQeABahDfNAwBCyACQQhqIAMgDSABKALQARDKIyACKAIMIQcgAigCCCEJAkACQCAOQQFxDQAgASgC6AFBCGogCSAHEOUqIRIMAQsgCyAJIAcQ+C4gASgC6AFBCGogCygCBCALKAIIEOUqIRILIBJCgICAgHCDIRMgEqchB0EAIQkMAwsgAiAKNgLoASACIAc2AuQBIAIgBzYC4AEgAiAHIA1BAnRqIgk2AuwBAkADQCAHIAlGDQEgAiAHQQRqNgLkASALIAcoAgAQ2wsgAigC5AEhByACKALsASEJDAALCyACQeABahC4OiABKALQASENQQEhDkEAIQoMAAsLQQEhCUIAIRMLIAggCCgCAEEBajYCACAMEKgnIAkNAiATIAethCISQgBSDQELEOk/IRILIAIgEjcDmAIgAiARNwOQAkEcIQYMAQsgERDSHwsgAiAHNgKMAgwGCyAJIQsLIAdB3ABGIQkLIAMQpSMgCiAHELAMDAALCwALAkACQAJAAkAgAS0AvwEiB0UNAAJAAkAgASgCwAEiByABKALEASIJEOItQSNHDQAgByAJEI4qQSFHDQAgAxClIyADEKUjIAEoAsABIQwgAiABKALEASIDNgLkASACIAw2AuABQQAhCQNAIAJB4AFqEIQRIgdBgIDEAEYNAiAHEI0vDQICQAJAIAdBgAFPDQBBASEHDAELAkAgB0GAEE8NAEECIQcMAQtBA0EEIAdBgIAESRshBwsgByAJaiEJDAALCyABLQC/ASEHDAELIAEgAzYCxAEgASAJIAxqNgLAASABIAEoAtABIAlqNgLQASACIAEoAugBQQhqIAwgCRDlKjcDkAJBIyEGDAELIAFBADoAvwEgASAHOgC9AQJAIAFBFGoiBxCtJ0H/AXEiCUEHRg0AIAlBDEYNACABEK0DIAEoAtABIQQLAkAgASgCwAEiCSABKALEASIMEOItQYCAxABHDQAgARCgB0ElIQYMAQsgASAENgKcASABLQD9ASABLQD8ASIKIApBAkYbQQFxRQ0BIAEvAPUBQZCAAnENAQJAAkACQAJAAkACQAJAAkAgBxCtJ0H/AXFBDBDyFg0AIAkgDBDiLSIKQYCAxABGDQkgBxCtJ0H/AXFBChDyFg0BIAcQrSdB/wFxQQsQ8hYNASAKQTxHDQkMBwsgAkEANgKoAiACQoCAgIAQNwKgAiABKALQASIGIQsDQAJAIAkgDBDiLSIHQYCAxABHDQAgASgCnAEhByACQdSAgIB4NgLgASACIAEoAtABIAcgAkHgAWoQki42AowCIAJBJjYCiAIMBwsgASgC0AEhCgJAAkACQAJAAkAgB0EmRg0AAkACQAJAAkACQAJAIAdBRGoOAwEHAgALIAdBhX9qDgMEBgIGCyABLQC9AQ0CDAsLQRAQkTIiB0EGNgIMIAdBuc+aATYCCCAHQQc2AgQgB0Gyz5oBNgIAIAJBAjYC7AEgAiAHNgLoASACQrGAgIAoNwPgASABIAogAkHgAWoQ3zQMBQtBEBCRMiIHQQo2AgwgB0HGz5oBNgIIIAdBBzYCBCAHQb/PmgE2AgAgAkECNgLsASACIAc2AugBIAJCsYCAgCg3A+ABIAEgCiACQeABahDfNAwECyAJIAxBq8+aAUEHELs3RQ0IIAJBm4GAgHg2AuABIAEoAtwBIAEoAvQBIAogCkEHaiIHIAogB0kbIAogByAKIAdLGyACQeABahDRHCABQQYQiQggARCtAyACQYgCaiABEIIYDAwLIAogASgCnAFGDQgMCQsgAkHAAGogAyALIAoQyiMgAkGgAmogAigCQCACKAJEEPguIAJB4AFqIAEQgQUgAigC5AEhBwJAIAIoAuABIglBgIDEAEYNACACKALoASEMIAJBoAJqIAkQsAwgASgC0AEhCyAHIAwQ9jkMBAsgAiAHNgKMAiACQSY2AogCDAoLIAcQjS8NAQsgAxClIwwBCyACQShqIAMgCyAKEMojIAJBoAJqIAIoAiggAigCLBD4LiACQeABaiABQQEQxBUCQCACKALgAQ0AIAIoAugBIQcCQAJAIAIoAuQBIglFDQAgAkGgAmogCSAHEPguDAELIAJBoAJqIAcQsAwLIAEoAtABIQsMAQsgAiACKALkATYCjAIgAkEmNgKIAgwHCyABKALEASEMIAEoAsABIQkMAAsLAkACQAJAAkAgChCLLw0AAkAgCkFEag4DCgwCAAsCQCAKQSJGDQAgCkEnRw0MCyAHEK0nQf8BcUEKEPIWRQ0LIAEoAtABIQsgAxClIyACQQA2ArQCIAJCgICAgBA3AqwCIAEoAtABIQwMAgsgAiAMNgLkASACIAk2AuABQQAhA0EBIQoDQCACQeABahCEESIHQYCAxABGDQMCQAJAIApBAXFFDQAgBxCLLw0BDAULIAcQjC8hCiAHQS1GDQAgCkUNBAsCQAJAIAdBgAFPDQBBASEHDAELAkAgB0GAEE8NAEECIQcMAQtBA0EEIAdBgIAESRshBwsgByADaiEDQQAhCgwACwsgAxClI0EiIQYMCAsCQAJAAkACQANAAkAgASgCwAEgASgCxAEQ4i0iB0GAgMQARw0AIAEoApwBIQcgAkGbgICAeDYC4AEgASAHIAJB4AFqEN80IAEoAtABIQkMAgsgASgC0AEhCQJAIAdB3ABHDQAgAkGAAWogAyAMIAkQyiMgAkGsAmogAigCgAEgAigChAEQ+C4gAkGsAmpB3AAQsAwgAxClIyABKALQASEMDAELIAcgCkYNAQJAAkACQAJAIAdBJkcNACACQYgBaiADIAwgCRDKIyACQawCaiACKAKIASACKAKMARD4LiACQeABaiABEIEFIAIoAuQBIQcgAigC4AEiCUGAgMQARg0BIAIoAugBIQYgAkGsAmogCRCwDCABKALQASEMIAcgBhD2OQwECwJAIAcQjS8NACADEKUjDAQLIAJBkAFqIAMgDCAJEMojIAJBrAJqIAIoApABIAIoApQBEPguIAJB4AFqIAFBABDEFQJAIAIoAuABDQAgAigC6AEhDCACKALkASIGRQ0CIAJBrAJqIAYgDBD4LgwDCyACKALkASEHC0ElIQxBASEDDAQLIAJBrAJqIAwQsAwLAkACQCAHQYABTw0AQQEhBwwBCwJAIAdBgBBPDQBBAiEHDAELQQNBBCAHQYCABEkbIQcLIAcgCWohDAwACwsgAigCtAIhByACQfgAaiADIAwgCRDKIyACKAJ8IQkgAigCeCEMAkACQCAHRQ0AIAJBrAJqIAwgCRD4LiABKALoAUEIaiACQawCahDFMSERDAELIAEoAugBQQhqIAwgCRDlKiERCwJAIAEoAsABIAEoAsQBEO0mQYCAxABGDQAgAxClIwsgAkHwAGogAyALIAEoAtABEMojQRshDCABKALoAUEIaiACKAJwIAIoAnQQ5SohEgJAIAdFDQAMAgtBACEDCyACKAKsAiACKAKwAhD2OUEmIQkgAw0BCyACIBI3A5gCIAIgETcDkAIgDCEJCyACIAk2AogCIAIgBzYCjAIMCQsgASAMNgLEASABIAMgCWo2AsABIAEgASgC0AEgA2o2AtABIAIgASgC6AFBCGogCSADEOUqNwOQAiACQR82AogCDAgLIAogASgCnAFHDQEgAS0AvAENAgsgAkGIAmogARCCGAwCCyACKAKoAiEHIAJBOGogAyALIAoQyiMgAigCPCEJIAIoAjghDAJAAkAgB0UNACACQaACaiAMIAkQ+C4gASgC6AFBCGogAkGgAmoQxTEhEQwBCyABKALoAUEIaiAMIAkQ5SohEQsgAkEwaiADIAYgChDKIyACIAEoAugBQQhqIAIoAjAgAigCNBDlKjcDmAIgAiARNwOQAiACQSA2AogCIAdFDQEMBQsgAxClIyACQSE2AogCCyACKAKgAiACKAKkAhD2OQwDCyABLQC8AUEBRw0BQSEhBiAJIAwQjipBIUYNASABKALQASEJIAEtAL0BIQcgAxClIyAHQQFHDQAgASgCwAEgASgCxAFBq8+aAUEHELs3RQ0AIAJBm4GAgHg2AuABIAEoAtwBIAEoAvQBIAkgCUEHaiIHIAkgB0kbIAkgByAJIAdLGyACQeABahDRHCABQQYQiQggARCtAyACQYgCaiABEIIYDAILDAMLAkAgBxCtJ0H/AXFBB0YNACACQYgCaiABEIIYDAELIAEoAtABIQsgASgCrAEhBiACQQA2AqgBIAJCgICAgBA3AqABIAshCgJAAkACQAJAA0ACQAJAAkACQAJAAkACQAJAAkAgCSAMEOItIgdBpH9qDgUCAwMDAQALAkAgB0EkRg0AIAdBgIDEAEcNAyACQZ+AgIB4NgLgASACQbgCaiABKALQASAGIAJB4AFqELc6IAIoArwCIQcgAigCuAIiCUEmRw0EIAJBoAFqEI4v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GGogAkEgaikDADcDACADQThqQRBqIAJBGGopAwA3AwAgA0E4akEIaiACQRBqKQMANwMAIAMgAikDCCIaNwM4AkAgGqciBEEBRw0AIANBwAJqQSRqIAJBCGoiCEEgaikCADcCACADQcACakEcaiAIQRhqKQIANwIAIANBwAJqQRRqIAhBEGopAgA3AgAgA0HAAmpBDGogCEEIaikCADcCAEEALQDA/6MBGiADIAgpAgA3AsQCQcAAEIwBIghFDRUgCEEUNgIAIAggAykCwAI3AgQgACAINgIEIABBAjYCACAIQQxqIANByAJqKQIANwIAIAhBFGogA0HQAmopAgA3AgAgCEEcaiADQdgCaikCADcCACAIQSRqIANB4AJqKQIANwIAIAhBLGogA0HoAmooAgA2AgAMEQsgAygCVCEMIAMoAlAhDSADKAJYIQUQrjIhByADQcACaiAFED8gB0E4aiADQcACakE4aiILKQMANwMAIAdBMGogA0HAAmpBMGoiDykDADcDACAHQShqIANBwAJqQShqKQMANwMAIAdBIGogA0HAAmpBIGopAwA3AwAgB0EYaiADQcACakEYaikDADcDACAHQRBqIANBwAJqQRBqKQMANwMAIAdBCGogA0HAAmpBCGopAwA3AwAgByADKQPAAjcDAAJAAkAgBA0AIAMoAkQhBiADKAJAIQ4gAygCTCEIIAMoAkghDwJAIAMpA0AiGkIDg0IAUg0AIBqnIgsgCygCACILQQFqNgIAIAtBf0wNFwsgAyAGNgLAAiADQfAAaiELDAELIAMoAkQhCCADKAJAIQ4gAygCPCEQEK4yIQYgA0HAAmogEBA/IAZBOGogCykDADcDACAGQTBqIA8pAwA3AwAgBkEoaiADQcACakEoaikDADcDACAGQSBqIANBwAJqQSBqKQMANwMAIAZBGGogA0HAAmpBGGopAwA3AwAgBkEQaiADQcACakEQaikDADcDACAGQQhqIANBwAJqQQhqKQMANwMAIAYgAykDwAI3AwAgA0HAAmohCwsgCyAINgIAQQAtAMD/owEaIAMoAnAhCyADKALAAiEQQcAAEIwBIghFDRQgCCAHNgIoIAggDDYCJCAIIA02AiAgCCALNgIcIAggDzYCGCAIIBA2AhQgCCAONgIQIAggBjYCDCAIIAQ2AgggCEEUNgIAAkACQAJAIAQOAwACAQALQQEhB0EAIQYgAykDQCEaDBALAkACQCADKAI8IgcoAgBBG0cNACAHKAIIRQ0BCyAAIAg2AgQgAEECNgIAIAcQ9AEgB0HAAEEIEO4cQQAhB0EBIQYMEQsgBykDECEaIAcpAyAiG1ANDiAbQgODQgBSDQ4gAyAbpyIGNgLAAiADQcACahD1ByAGIAYoAgAiC0F/ajYCAAJAIAtBAUcNACAGIAYoAiAQ0y8LIAcoAgBBG0cNAyAHQQhqIgYoAgBFDQ4gBhDZCQwOCyAAIAg2AgQgAEECNgIAQQEhBkEBIQcMDwsgAigCCA4EBQMDBAMLIAIoAiAhEiACKAIcIRMgAigCGCEPIAIoAhQhDiACKAIQIRQgAigCCCERIAIoAgQhFSADQcACaiACKAIMIhBBBEEEEOETIAMoAsQCIQkCQCADKALAAkEBRg0AIBBBAnQhFiADKALIAiEXAkAgCUUNACAWIQcgFyEGIAkhBSARIQQDQCAHRQ0BIAQoAgAhCxCuMiEIIANBwAJqIAsQPyAIQThqIANBwAJqQThqKQMANwMAIAhBMGogA0HAAmpBMGopAwA3AwAgCEEoaiADQcACakEoaikDADcDACAIQSBqIANBwAJqQSBqKQMANwMAIAhBGGogA0HAAmpBGGopAwA3AwAgCEEQaiADQcACakEQaikDADcDACAIQQhqIANBwAJqQQhqKQMANwMAIAggAykDwAI3AwAgBiAINgIAIAdBfGohByAGQQRqIQYgBEEEaiEEIAVBf2oiBQ0ACwsgA0HAAmogD0EIQSAQ4RMgAygCxAIhCgJAIAMoAsACQQFGDQAgD0EFdCEYIAMoAsgCIRkCQCAKRQ0AIBghBiAZIQcgCiEEIA4hCANAIAZFDQEgCC0AGCEFIAgoAgwhCyAIKAIIIQwCQCAIKQMQIhpQDQAgGkIDg0IAUg0AIBqnIg0gDSgCACINQQFqNgIAIA1Bf0wNFwsCQCAIKQMAIhtCA4NCAFINACAbpyINIA0oAgAiDUEBajYCACANQX9MDRcLIAhBIGohCCAHIBs3AwAgB0EYaiAFOgAAIAdBEGogGjcDACAHQQxqIAs2AgAgB0EIaiAMNgIAIAZBYGohBiAHQSBqIQcgBEF/aiIEDQALC0EALQDA/6MBGkHAABCMASIIRQ0UIAggEjYCICAIIBM2AhwgCCAPNgIYIAggGTYCFCAIIAo2AhAgCCAQNgIMIAggFzYCCCAIIAk2AgQgCEEcNgIAIAMgCDYCnAEgA0ECNgKYASADIBQ2ArABIAMgDjYCqAEgAyAOIBhqNgK0ASADIA42AqwBIA9FDQogAyAOQSBqNgKsASAOLQAYIghBAkYNCiADQegBakEQaiAOQRBqKQMAIho3AwAgA0HoAWpBCGogDkEIaikDACIbNwMAIAMgDikDACIcNwPoASADIA4oABk2AogCIAMgDkEcaigAADYAiwIgA0HwAGpBEGogGjcDACADQfAAakEIaiAbNwMAIANB8ABqQRxqIAMoAIsCNgAAIAMgHDcDcCADIAg6AIgBIAMgAygCiAI2AIkBIANBADYC2AEgA0KAgICAEDcC0AEgA0EDOgDgAiADQSA2AtACIANBADYC3AIgA0Gk6qABNgLYAiADQQA2AsgCIANBADYCwAIgAyADQdABajYC1AICQCADQfAAaiADQcACahD3LA0AIAMoAtABIQggAykC1AEhGiADQfAAahDBEyAIQYCAgIB4Rg0LIAMgGjcCwAEgAyAINgK8ASADQcACakEIaiADQagBakEIaikCADcDACADIAMpAqgBNwPAAiADQQA2AugCIANCADcD4AIgAyARIBZqNgLcAiADIBU2AtgCIAMgETYC1AIgAyARNgLQAiADQcACakEQaiEPIAMoAsQCIgggAygCzAJGDQwgA0HoAWpBGWohBCAapyEOIANB8ABqQRlqIgxBA2ohDQNAIAMgCEEgajYCxAIgCC0AGCIHQQJGDQ0gDCAIKAAZNgAAIANB8ABqQRBqIAhBEGoiBSkDADcDACADQfAAakEIaiAIQQhqIgspAwA3AwAgDSAIQRxqKAAANgAAIAMgBzoAiAEgAyAIKQMANwNwAkAgAygC1AIiBiADKALcAkcNACADQfAAahDBEwwOCyADQdABakEIaiALKQMAIho3AwAgA0HQAWpBEGogBSkDACIbNwMAIAMgBkEEajYC1AIgAyAIKQMAIhw3A9ABIAMgCEEZaiIIKAAANgLIASADIAhBA2ooAAA2AMsBIAYoAgAhCCADQegBakEQaiAbNwMAIANB6AFqQQhqIBo3AwAgBCADKALIATYAACAEQQNqIAMoAMsBNgAAIAMgHDcD6AEgAyAHOgCAAiADQYgCaiABIAgQWQJAAkACQAJAIAMoAogCDgIBAgALIAAgAykDmAE3AwAgAEEIaiADQZgBakEIaikDADcDACADQYgCahCBGSADQegBahDBEyADQcACahDwDiAPEJUiIAMoArwBIA4QhjYMEQsgAyADKQOQAjcDqAIgA0EANgK8AiADQoCAgIAQNwK0AiADQQM6AJABIANBIDYCgAEgA0EANgKMASADQaTqoAE2AogBIANBADYCeCADQQA2AnAgAyADQbQCajYChAECQCADQagCaiADQfAAahD3LA0AIANBmAJqQQhqIANBtAJqQQhqKAIANgIAIAMgAykCtAI3A5gCQQAhBiADKQOoAiIaQgODQgBSDQIgAyAapyIINgJwIANB8ABqEPUHIAggCCgCACIHQX9qNgIAAkAgB0EBRw0AIAggCCgCIBDTLwsgAygCiAIhBgwCC0HcwaEBQTcgA0G0AmpB8OugAUHgwqEBELEYAAsgA0GYAmogAysDkAIQ8hNBASEGCyADKAKcAiEIIANBvAFqIAMoAqACIgcQozAgAygCwAEgAygCxAEiBWogCCAHEN8KGiADIAUgB2o2AsQBIANBKGogA0HoAWoQyRMgAygCKCEFIANBvAFqIAMoAiwiBxCjMCADKALAASIOIAMoAsQBIgtqIAUgBxDfChogAyALIAdqNgLEASADKAKYAiAIEIY2AkAgBkUNACADQYgCahCBGQsgA0HoAWoQwRMgAygCxAIiCCADKALMAkcNAAwNCwtB3MGhAUE3IANBtAJqQfDroAFB4MKhARCxGAALIAogAygCyAIQ+DkACyAJIAMoAsgCEPg5AAsgBxD0AQwKCyADQfAAahCBGQwNCyAAQQI2AgAgACACNgIEDBcLIABBATYCACAAIAIrAxg5AwggAikDICIaUA0CIBpCA4NCAFINAiADIBqnIgg2AsACIANBwAJqEPUHIAggCCgCACIHQX9qNgIAIAdBAUcNAiAIIAgoAiAQ0y8MAgsgAEEANgIAIAAgAikDEDcDCCACKQMgIhpQDQEgGkIDg0IAUg0BIAMgGqciCDYCwAIgA0HAAmoQ9QcgCCAIKAIAIgdBf2o2AgAgB0EBRw0BIAggCCgCIBDTLwwBCyADQSBqIAJBCGoiCBDJEwJAAkACQAJAIAMoAiAgAygCJEG86qABQQMQwjFFDQAgAigCGCAB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4ABqIARBiAJqQcgAEN8KGiAEQeAAakEEciERIARBwANqQQRyIRggBEHwA2pBBHIhDyAEQZAEakEEciEUIARBoAFqIQsgBEHgAGpBMGohFUE0IRJBASEQA0ACQAJAAkAgBCgCkAFFDQAgBEGQBGogFSALEMcNAkAgBCgCkAQiB0EERg0AIA8gFCkCADcCACAPQRhqIBRBGGooAgA2AgAgD0EQaiAUQRBqKQIANwIAIA9BCGogFEEIaikCADcCACAEIAc2AvADIARBwANqIAQoAqQBIARB8ANqEJYFIAQoAsADIgxBE0cNAgsCQCAEKAKQAUUNACAVEPolCyAEQQA2ApABCwJAIAQoAmAiDEEURg0AIARBkANqQShqIBFBKGooAgA2AgAgBEGQA2pBIGogEUEgaikCADcDACAEQZADakEYaiARQRhqKQIANwMAIARBkANqQRBqIBFBEGopAgA3AwAgBEGQA2pBCGogEUEIaikCADcDACAEIBEpAgA3A5ADIARBEzYCYCAMQRNHDQILIAQoAtQCIRIgBCgC2AIhDgwECyAEQZADakEoaiAYQShqKAIANgIAIARBkANqQSBqIBhBIGopAgA3AwAgBEGQA2pBGGogGEEYaikCADcDACAEQZADakEQaiAYQRBqKQIANwMAIARBkANqQQhqIBhBCGopAgA3AwAgBCAYKQIANwOQAwsCQCAQIAQoAtQCRw0AIARB1AJqIBBBAkEBIAQoAmBBE0kbQQhBMBDWDCAEKALYAiEOCyAOIBJqIgdBfGogDDYCACAHIAQpA5ADNwIAIAdBCGogBEGQA2pBCGopAwA3AgAgB0EQaiAEQZADakEQaikDADcCACAHQRhqIARBkANqQRhqKQMANwIAIAdBIGogBEGQA2pBIGopAwA3AgAgB0EoaiAEQZADakEoaigCADYCACAEIBBBAWoiEDYC3AIgEkEwaiESDAALCyAHIAQoAmgQ+DkAC0EAIQ9BACEUDAELIARB4ABqIARB8AFqIARB8AFqQRBqEMcNAkACQAJAIAQoAmAiB0EERg0AIARBwANqQRxqIARB4ABqQRxqKAIANgIAIARBwANqQRRqIARB4ABqQRRqKQIANwIAIARBwANqQQxqIARB4ABqQQxqKQIANwIAIAQgBCkCZDcCxAMgBCAHNgLAAyAEQYgCaiAEKAKEAiAE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IAEoAgAiAUEBajYCACABQX9MDQoLIAMoAigQpgYhMQwBCyADKAIMENEKIRALIFNCIIinIQ8gU6chJgwKCyADKAIMIRAgAygCCCESIAMoAgQhARCuMiERIAJBEGogARA/IBFBOGogAkEQakE4aikDADcDACARQTBqIAJBEGpBMGopAwA3AwAgEUEoaiACQRBqQShqKQMANwMAIBFBIGogCSkDADcDACARQRhqIAJBEGpBGGopAwA3AwAgEUEQaiACQRBqQRBqKQMANwMAIBFBCGogAkEQakEIaikDADcDACARIAIpAxA3AwAMCAtBAC0AwP+jARogAygCBCEBIAMoAgwhECADKAIIIRJBGBCMASIRRQ0FIAEoAgwhFCABKAIIIQ4CQCABKQMAIlVCA4NCAFINACBVpyIVIBUoAgAiFUEBajYCACAVQX9MDQYLAkAgASkDECJTUA0AIFNCA4NCAFINACBTpyIBIAEoAgAiAUEBajYCACABQX9MDQYLIBEgUzcDECARIBQ2AgwgESAONgIIIBEgVTcDACADLQAUIQ8CQCADKAIQIgENAEEAISYMCAsQsTIhJiABKAIMIRQgASgCECEOIAJBEGogARDNASAmQRBqIA42AgAgJiACKQIQNwIAIAIgFDYCHCAmQQhqIAJBEGpBCGopAgA3AgAMBwtBAC0AwP+jARogAygCBCEBQcgAEIwBIhFFDQQgASgCOCESIAEoAjQhFCABKAIwIQ4gAS0AQSEQIAEtAEAhFSABKAIkIRsgASgCICEeAkAgASkDKCJUQgODQgBSDQAgVKciICAgKAIAIiBBAWo2AgAgIEF/TA0FCyABLQA8ISACQAJAIAEpAwAiU0IAUg0AIAJBEGogAUEIahDDCiACKAIkIRogAigCICEZIAIpAxghVSACKAIUIRwgAigCECElDAELIAEoAgwhHCABKAIIISUgASgCHCEaIAEoAhghGQJAIFNCA4NCAFINACBTpyIjICMoAgAiI0EBajYCACAjQX9MDQYLIAEpAxAiVVANACBVQgODQgBSDQAgVaciASABKAIAIgFBAWo2AgAgAUF/TA0FCyARIBA6AEEgESAVOgBAIBEgIDoAPCARIBI2AjggESAUNgI0IBEgDjYCMCARIFQ3AyggESAbNgIkIBEgHjYCICARIBo2AhwgESAZNgIYIBEgVTcDECARIBw2AgwgESAlNgIIIBEgUzcDACAoIRsgKSEeICohICAYIRUgJCEUICchDiAWIRAgFyESDAcLIAMoAgwhECADKAIIIRIgAygCBCEBEK4yIREgAkEQaiABED8gEUE4aiACQRBqQThqKQMANwMAIBFBMGogAkEQakEwaikDADcDACARQShqIAJBEGpBKGopAwA3AwAgEUEgaiAJKQMANwMAIBFBGGogAkEQakEYaikDADcDACARQRBqIAJBEGpBEGopAwA3AwAgEUEIaiACQRBqQQhqKQMANwMAIBEgAikDEDcDAAwFCyADKAIgIRUgAygCHCEUIAMoAhghDiADKAIMIRAgAygCCCESIAMpAxAiU6chJgJAIFNCA4NCAFINACAmICYoAgAiAUEBajYCACABQX9MDQMLIFNCIIinIQ8gAy0AJCEgICghGyApIR4MBQsgAkEQaiADQQhqEFAgAkEIakECaiAIQQJqLQAAOgAAIAIgCC8AADsBCCACLQAsISAgAigCKCEVIAIoAiQhFCACKAIgIQ4gAikDGCFVIAIoAhQhECACKAIQIRIgAikDMCFTIAIoAjghHiACKAI8IRsMBQsgESACKAIYEPg5CwALIBEgAigCGBD4OQALICghGyApIR4gKiEgIBghFSAkIRQgJyEOCyACQQhqQQJqIAJBDGpBAmotAAA6AAAgAiACLwEMOwEIIEOtQiCGIDGthCFTIA+tQiCGICathCFVIBshKCAeISkgICEqIBUhGCAUISQgDiEnIBAhFiASIRcLIANBOGohAyAGIApBOGxqIgEgIDoAJCABIBU2AiAgASAUNgIcIAEgDjYCGCABIFU3AhAgASAQNgIMIAEgEjYCCCABIBE2AgQgASAMNgIAIAEgAi8BCDsAJSABIBs2AjQgASAeNgIwIAEgUzcCKCABQSdqIAJBCGpBAmotAAA6AAAgCkEBaiEKIAtBf2oiCw0ACwsgACAENgIIIAAgBjYCBCAAIAU2AgAgAkHwAGokAA8LIAUgAigCGBD4OQALzjwCEn8EfiMAQbADayIEJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAg4MBwAIAQILAwQFBg8QBwsgBEGoAWog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EEYNCSAEQZADakEYaiAEQagBakEYaigCADYCACAEQZADakEQaiAEQagBakEQaikCADcDACAEQZADakEIaiAEQagBakEIaikCADcDACAEIAQpAqgBNwOQAyAEQfgCaiAEQZADahCnGiAEQagBaiACIAMtAHAgBEH4AmoQgi8CQCAEKAKoASIBQYCAgIB4Rw0AIARBnANqIARB+AJqQQhqKQIANwIAIAQgBCkC+AI3ApQDIARBADYCkAMgBEGoAWogBEGQA2oQ6g4gAiAEQagBahCEKAwWCyAAQQRqIARBqAFqQQRqQSQQ3woaIAAgATYCACAEKAL4AiAEKAL8AhCCOgwXCyAEQQA2AsQCIARCgICAgMAANwK8AiABKAIAIQUgBEGQA2pBBGohAyAEQagBakEEaiECAkACQANAIARBqAFqIAUQ2hMgBCgCqAEiAUEQRg0BIAMgAikCADcCACADQRBqIAJBEGopAgA3AgAgA0EIaiIHIAJBCGopAgA3AgAgBCABNgKQAwJAAkACQAJAAkACQAJAAkACQAJAQQAgAUF5aiABQQhJGw4JCAABAgMEBQYHCAsgBEH4AmpBCGogBygCADYCACAEIAMpAgA3A/gCIARByAJqIARB+AJqEMsbDAgLIARBATYCrAEgBEHcuYQBNgKoASAEQgA3ArQBIAQgBEHQAGo2ArABIARBqAFqQeS5hAEQrS4ACyAEQQE2AqwBIARBxLqEATYCqAEgBEIANwK0ASAEIARB0ABqNgKwASAEQagBakHMuoQBEK0uAAsgBEEBNgKsASAEQay7hAE2AqgBIARCADcCtAEgBCAEQdAAajYCsAEgBEGoAWpBtLuEARCtLgALIARBATYCrAEgBEGQvIQBNgKoASAEQgA3ArQBIAQgBEHQAGo2ArABIARBqAFqQZi8hAEQrS4ACyAEQQE2AqwBIARB/LyEATYCqAEgBEIANwK0ASAEIARB0ABqNgKwASAEQagBakGEvYQBEK0uAAsgBEEINgLIAgwCCyAEQQE2AqwBIARB7L2EATYCqAEgBEIANwK0ASAEIARB0ABqNgKwASAEQagBakH0vYQBEK0uAAsgBEHIAmpBGGogBEGQA2pBGGooAgA2AgAgBEHIAmpBEGogBEGQA2pBEGopAgA3AwAgBEHIAmpBCGogBEGQA2pBCGopAgA3AwAgBCAE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NgDkAiAEQfwCaiAEQeQCahDeDiAEQQE2AvgCIARBkANqIARB+AJqEOoODAELIARB/AJqQoCAgIDw/78IEL4PIARBADYC+AIgBEGQA2ogBEH4AmoQ6g4LIARBxAFqIARBqANqKAIANgIAIARBvAFqIARBoANqKQIANwIAIARBtAFqIARBmANqKQIANwIAIAQgBCkCkAM3AqwBDAELIARBqAFqIAEoAgQgASgCCCAEQdAAaiAIEMEpIAQoAqgBIgFBgICAgHhHDQILIARByABqIARBxAFqKAIANgIAIARBwABqIARBvAFqKQIANwMAIARBOGogBEG0AWopAgA3AwAgBCAEKQKsATcDMCADIARBMGoQhCgLIABBgICAgHg2AgAMAQsgBEHIAGogBEGoAWpBHGooAgAiAzYCACAEQcAAaiAEQagBakEUaikCACIWNwMAIARBOGogBEGoAWpBDGopAgAiFzcDACAEIAQpAqwBIhg3AzAgBCkCyAEhGSAAQRxqIAM2AgAgAEEUaiAWNwIAIABBDGogFzcCACAAIBg3AgQgACAZNwIgIAAgATYCAAsgBEGwA2okAAu4OwEzfyMAQfAHayICJAACQAJAAkAgARDtDiIDRQ0AIAMtAABBAkYNAQsgAUHUAmogAUHcAmogAS0A4QJBAkYiBBsoAgAhAyABQdACaiABQdgCaiAEGygCACEEIAJBIGogARDKCyACQQE2AuQEIAJBpNehATYC4AQgAkIBNwLsBCACQegENgJUIAJBAjoArAQgAiACQdAAajYC6AQgAiACQbgEajYCUCACIAJBrARqNgK4BCACQfAAaiACQeAEahCRCiACQYQBaiACQShqKAIANgIAIAIgAikCIDcCfCAEIAMgBCADSRsgBCADIAQgA0sbIAJB8ABqEP4iIQMCQCABEO0OIgRFDQAgBC0AAEGbAUcNACABQQI6AOECIAEgASkD2AI3A9ACIAEgARDfGBD1GAsgAEGAgICAeDYCACAAIAM2AgQMAQsgAUECOgDhAiABIAEpA9gCNwPQAiACQeAEakEIQQhBOBDhEyACKALkBCEDAkACQAJAIAIoAuAEQQFGDQAgAkEANgJAIAIgAigC6AQ2AjwgAiADNgI4IAJB4ARqQQhqIQUgAkHwAGpBDGohBiACQbgEakEMaiEHIAJB0ABqQQhqIQggAkHw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IgRBACkD6N+ZASItNwMAIAJBACkD4N+ZASIuNwOwAQJAAkACQCABELAWIAJBsAFqEMU1DQAgAkGwAWoQ4RAgAkHIAGogARD7ICACKAJMIQUgAigCSCEGIAJB0ABqIAEQ3xogAkH4BGpBEGogLDcDACACQfgEakEIaiAtNwMAIAJBATYCtAEgAkGk16EBNgKwASACQgE3ArwBIAJBogI2AtwIIAIgLjcD+AQgAiACQdgIajYCuAEgAiACQcAIajYC2AggAiACQfgEajYCwAggAkHABGogAkGwAWoQ5iIgAkH4BGoQ4RAgAkHUBGogAkHQAGpBCGooAgA2AgAgAiACKQJQNwLMBCAGIAUgAkHABGoQ/iIhBQJAIAEQsBYiBkUNACAGKAIAQSRHDQAgASABKQMYNwNQIAEoAgAhBiABQSU2AgAgBkEkRw0CIAEgASgCBBDjEwsgAEGAgICAeDYCACAAIAU2AgQMAgsgASABKQMYNwNQIAEoAgAhBSABQSU2AgAgAkH4BGpBDGogAUEMaikCADcCACACQfgEakEUaiABQRRqKAIANgIAIAIgASkCBDcC/AQgAiAFNgL4BCACQfgEahDhECACQbABahDhECACQcAAakEIQQhBOBDjIiACQQA2AnwgAiACKQNANwJ0IAFBBGohByACQfgEakEEciEIIAJBwARqQQxqIQkgAkHACGpBDGohCiACQcAEakEoaiELIAJB+ARqQQhqIQwgAkHABGpBBHIhDSACQbABakEEciEOIAJB+ARqQRBqIQ8gAkHMAWohECACQYQCaiERIAJByAFqIRIgAkGAAmohEwJAAkADQCACQfgEaiABQQMQzQkCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAItAPgEDQACQCACLQD5BA0AAkACQAJAAkACQAJAAkACQCABELAWIgVFDQAgD0EAKQPIwZkBNwMAIAxBACkDwMGZATcDACACQQApA7jBmQE3A/gEIAJB+ARqIAUQhwchBiACQfgEahDhECAGDQEgD0EAKQO45JkBNwMAIAxBACkDsOSZATcDACACQQApA6jkmQE3A/gEIAJB+ARqIAUQhwchBSACQfgEahDhECAFDQELIA9BACkDuK6ZATcDACAMQQApA7CumQE3AwAgAkEAKQOorpkBNwP4BCAB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IAEoArgCSw0AIAEoAighCiADQQhqIBIoAgAgESgCACAJQaj2gwEQyywCQAJAIAMoAgwiC0UNAAJAAkAgAygCCCIMLQAAIgJB/wFGDQAgAiACQQJ2aiACQQNxQQBHakECaiECDAELIApBAmohAgsgAiALTw0BAkACQCAMIAJBAnRqKAIAIgpBf0wNAAJAIAJBAWoiAiALTw0AIAwgAkECdGooAgAhAgwCCyACIAtB0PCDARChGwALIApB/////wdxIQILIANBoAFqIAIgB0EBaiILIAFBEGooAgAgEygCACACQZj2gwEQ6jAoAgBrIAsQ7x4gAygCoAEgBEsNAiADQZABakEIaiADQaABakEIaigCADYCACADIAMpAqABNwOQAUEBIQ0gBkEBcUUNAiADQaABaiECDA4LQQBBAEHw8IMBEKEbAAsgAiALQcDwgwEQoRsACyAHQQFqIQcMAAsLQQBBAEHw8IMBEKEbAAsgByALQcDwgwEQoRsAC0EAQQBB8PCDARChGwALIABBADYCAAwHCwJAIAZBAXENAEEAIRMCQAJAAkAgASgCvAIiCUUNAEEAIRMgCSABKAK4AksNACABKAIoIQogA0HIAGogAUEEaigCACABQQhqKAIAIAlBqPaDARDLLCADKAJMIgtFDQICQAJAIAMoAkgiDC0AACIHQf8BRg0AIAcgB0ECdmogB0EDcUEAR2pBAmohBwwBCyAKQQJqIQcLIAcgC08NAQJAAkAgDCAHQQJ0aigCACIKQX9MDQACQCAHQQFqIgcgC08NACAMIAdBAnRqKAIAIQcMAgsgByALQdDwgwEQoRsACyAKQf////8HcSEHCyADQaABaiAHIAQgAUEQaigCACABQRRqKAIAIAdBmPaDARDqMCgCAGsgBBDvHkEBIRMLIAIoAgwiFSAEIBUgBEsbIQYgAUEsaiENIAIoAgghFCABQQhqIREgAUEEaiESIAFBFGohCANAAkAgBCAFRw0AIAAgAykCoAE3AgQgACATNgIAIABBDGogA0GoAWooAgA2AgAMCwsCQAJAAkAgBCAGRg0AIA0gFCAEai0AAGotAAAiAkECaiEPIAkhDANAAkACQAJAAkACQAJAAkACQCASKAIAIBEoAgAgDEH49IMBEOowKAIAIglB/wFxQYJ+ag4CAQIACyADQcAAaiASKAIAIBEoAgAg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CGooAgAgCUGo9oMBEMssAkACQCADKAIkIglFDQACQAJAIAMoAiAiBy0AACICQf8BRg0AIAIgAkECdmogAkEDcUEAR2pBAmohAgwBCyALQQJqIQILIAIgCU8NAQJAAkAgByACQQJ0aigCACILQX9MDQACQCACQQFqIgIgCU8NACAHIAJBAnRqKAIAIQIMAgsgAiAJQdDwgwEQoRsACyALQf////8HcSECCyADQaABaiACIARBAWoiCSABQRBqKAIAIAFBFGooAgAgAkGY9oMBEOowKAIAayAJEO8eDAYLQQBBAEHw8IMBEKEbAAsgAiAJQcDwgwEQoRsACyAEQQFqIQQMAAsLIAIgCUHA8IMBEKEbAAtBAEEAQfDwgwEQoRsACyAAIAMpAqABNwIEIABBDGogA0GoAWooAgA2AgBBASECCyAAIAI2AgAMBgsCQAJAAkACQAJAIAEoArwCIglFDQAgCSABKAK4AksNACABKAIoIQsgA0HoAGogAUEEaigCACABQQhqKAIAIAlBqPaDARDLLCADKAJsIglFDQICQAJAIAMoAmgiBy0AACICQf8BRg0AIAIgAkECdmogAkEDcUEAR2pBAmohAgwBCyALQQJqIQILIAIgCU8NAQJAAkAgByACQQJ0aigCACILQX9MDQACQCACQQFqIgIgCU8NACAHIAJBAnRqKAIAIQIMAgsgAiAJQdDwgwEQoRsACyALQf////8HcSECCyADQZABaiACIAQgAUEQaigCACABQRRqKAIAIAJBmPaDARDqMCgCAGsgBBDvHiAAQQE2AgAgAEEMaiADQZgBaigCADYCACAAIAMpApABNwIEDAoLIANBoAFqIAcgAUEgaiITKAIAIAIoAggiDSACKAIMIgYgBCAFEPUuAkAgAygCoAEiAg4DBAMABAsgAUEsaiEUIAMoAqQBIQIgAUEIaiERIAFBBGohEgJAAkACQAJAA0ACQCACIgQgBUkNACAAQQA2AgAMDwsCQAJAAkAgBCAGTw0AIBQgDSAEai0AAGotAAAiAkECaiEPIAkhDANAAkACQAJAAkACQAJAAkACQCASKAIAIBEoAgAgDEH49IMBEOowKAIAIglB/wFxQYJ+ag4CAQIACyADQeAAaiASKAIAIBEoAgAgDEECaiIQQYj1gwEQyywgCUECdkE/cSAJQQNxQQBHaiIOIAMoAmQiCUsNAiADKAJgIQsgDkECdCEHQX8hCgNAIAdFDQcgCkEBaiEKIAIgCygCACIJQf8BcUYNBCACIAlBCHZB/wFxRg0FIAIgCUEQdkH/AXFGDQYgC0EEaiELIAdBfGohByACIAlBGHZHDQALIBIoAgAgESgCACAOIBBqIApBAnRqQQNqQaj1gwEQ6jAoAgAhCQwKCyACIBIoAgAgESgCACAMQfiwgAEQ6jAtAAFGDQgMBQsgEigCACARKAIAIA8gDGpB+PWDARDqMCgCACIJQQFGDQQMCAsgDiAJQZj1gwEQoxsACyASKAIAIBEoAgAgCkECdCAOIBBqakHY9YMBEOowKAIAIQkMBgsgEigCACARKAIAIA4gEGogCkECdGpBAWpByPWDARDqMCgCACEJDAULIBIoAgAgESgCACAOIBBqIApBAnRqQQJqQbj1gwEQ6jAoAgAhCQwECyASKAIAIBEoAgAgDEEBakGI9oMBEOowKAIAIQwMAAsLIAQgBkHgqIABEKEbAAsgEigCACARKAIAIAxBAmpB6PWDARDqMCgCACEJCwJAAkAgCSABKAK0AksNACAJRQ0EAkAgCSABKAK4AksNACABKAIoIQsgA0HYAGogAUEEaigCACABQQhqKAIAIAlBqPaDARDLLCADKAJcIglFDQYCQAJAIAMoAlgiBy0AACICQf8BRg0AIAIgAkECdmogAkEDcUEAR2pBAmohAgwBCyALQQJqIQILIAIgCU8NByAHIAJBAnRqKAIAIgtBf0wNAgJAIAJBAWoiAiAJTw0AIAcgAkECdGooAgAhAgwFCyACIAlB0PCDARChGwALIANBoAFqIAEoAhwgEygCACANIAYgBCAFEPUuIANB0ABqIAMoAqABIAMoAqQBEPQyAkAgAygCUA0AIABBADYCAAwRCyADKAJUIgIgBEsNAgsgBEEBaiECDAELCyALQf////8HcSECCyADQZABaiACIARBAWoiCSABQRBqKAIAIAFBFGooAgAgAkGY9oMBEOowKAIAayAJEO8eIABBATYCACAAQQxqIANBmAFqKAIANgIAIAAgAykCkAE3AgQMDAsgAEEANgIADAsLQQBBAEHw8IMBEKEbAAsgAiAJQcDwgwEQoRsACyACIAlBwPCDARChGwALQQBBAEHw8IMBEKEbAAsgACADKQKkATcCBCAAQQxqIANBoAFqQQxqKAIANgIACyAAIAI2AgAMBQsgCkECaiEHCyAHIAtPDQECQAJAIAwgB0ECdGooAgAiCkF/TA0AAkAgB0EBaiIHIAtPDQAgDCAHQQJ0aigCACEHDAILIAcgC0HQ8IMBEKEbAAsgCkH/////B3EhBwsgA0GQAWogByAEIAFBEGooAgAgAUEUaigCACAHQZj2gwEQ6jAoAgBrIAQQ7x4gASgCHCEHQQEhCAsgA0GgAWogByABQSBqIhQoAgAgAigCCCIGIAIoAgwiECAEIAUQ9S4CQAJAAkACQCADKAKgASICDgMCAQACCyABQSxqIRMgAygCpAEhAiABQQhqIREgAUEEaiESIAFBFGohFQwCCyAAIAMpAqQBNwIEIABBDGogA0GgAWpBDGooAgA2AgALIAAgAjYCAAwDCwJAAkADQAJAAkACQCACIgQgBU8NAAJAIAQgEE8NACATIAYgBGotAABqLQAAIgJBAmohDyAJIQwDQAJAAkACQAJAAkACQAJAAkAgEigCACARKAIAIAxB+PSDARDqMCgCACIJQf8BcUGCfmoOAgECAAsgA0GAAWogEigCACARKAIAIAxBAmoiDUGI9YMBEMssIAlBAnZBP3EgCUEDcUEAR2oiDiADKAKEASIJSw0CIAMoAoABIQsgDkECdCEHQX8hCgNAIAdFDQcgCkEBaiEKIAIgCygCACIJQf8BcUYNBCACIAlBCHZB/wFxRg0FIAIgCUEQdkH/AXFGDQYgC0EEaiELIAdBfGohByACIAlBGHZHDQALIBIoAgAgESgCACAOIA1qIApBAnRqQQNqQaj1gwEQ6jAoAgAhCQwLCyACIBIoAgAgESgCACAMQfiwgAEQ6jAtAAFGDQkMBQsgEigCACARKAIAIA8gDGpB+PWDARDqMCgCACIJQQFGDQQMCQsgDiAJQZj1gwEQoxsACyASKAIAIBEoAgAgCkECdCAOIA1qakHY9YMBEOowKAIAIQkMBwsgEigCACARKAIAIA4gDWogCkECdGpBAWpByPWDARDqMCgCACEJDAYLIBIoAgAgESgCACAOIA1qIApBAnRqQQJqQbj1gwEQ6jAoAgAhCQwFCyASKAIAIBEoAgAgDEEBakGI9oMBEOowKAIAIQwMAAsLIAQgEEHgqIABEKEbAAsgACADKQKQATcCBCAAIAg2AgAgAEEMaiADQZgBaigCADYCAAwHCyASKAIAIBEoAgAgDEECakHo9YMBEOowKAIAIQkLAkACQCAJIAEoArQCSw0AIAlFDQECQAJAAkAgCSABKAK4AksNACABKAIoIQwgA0H4AGogEigCACARKAIAIAlBqPaDARDLLCADKAJ8IgdFDQYCQAJAIAMoAngiCy0AACICQf8BRg0AIAIgAkECdmogAkEDcUEAR2pBAmohAgwBCyAMQQJqIQILIAIgB08NByALIAJBAnRqKAIAIgxBf0wNAQJAIAJBAWoiAiAHTw0AIAsgAkECdGooAgAhBwwDCyACIAdB0PCDARChGwALIANBoAFqIAEoAhwgFCgCACAGIBAgBCAFEPUuIANB8ABqIAMoAqABIAMoAqQBEPQyAkAgAygCcA0AIABBADYCAAwKCyADKAJ0IgIgBE0NAgwECyAMQf////8HcSEHCyADQZABaiAHIARBAWoiAiABQRBqKAIAIBUoAgAgB0GY9oMBEOowKAIAayACEO8eQQEhCAwCCyAEQQFqIQIMAQsLIAAgAykCkAE3AgQgACAINgIAIABBDGogA0GYAWooAgA2AgAMBAtBAEEAQfDwgwEQoRsACyACIAdBwPCDARChGwALIAcgC0HA8IMBEKEbAAsgACANNgIAIAAgAikCADcCBCAAQQxqIAJBCGooAgA2AgALIANBsAFqJAAL4EMBAn8jAEHQAGsiAiQAAkACQAJAAkACQAJAAkACQAJAAkADQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA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BgwTCyACKQOoAiERIAJBoAJqENkJQYKAgIB4IQYMEwsgAUECOgDhAiABIAEoAtwCIgQ2AtQCIAEgASgC2AI2AtACQQEhBQJAIAZBhICAgHhHDQAgCyEEDBkLIAMgBCADIARJGyEQIAMgBCADIARLGyEDIAcgBCAHIARJGyEPIAcgBCAHIARLGyENIAqtQiCGIAithCERIAytQiCGIAmthCESIAshBAwTCyACQegAaiABELUBAkACQCACLQCcAUEERg0AIAJBoAJqQQRqIAJB6ABqQcgAEN8KGiACQcABakEEciACQaACakHMABDfChpBEyEBDAELIAIgAigCaDYCxAFBFCEBCyACIAE2AsABIAJBKGogAkHAAWoQuyIgAigCLCEEIAIoAighBQwXCyACQegAaiABEJwEAkACQCACLQCkAUEFRg0AQQQhASACQaACakEEaiACQegAakHYABDfChogAkHAAWpBBHIgAkGgAmpB3AAQ3woaDAELIAIgAigCaDYCxAFBFCEBCyACIAE2AsABIAJBOGogAkHAAWoQuyIgAigCPCEEIAIoAjghBQwWCyACQaACaiABEIUBAkACQCACKAKgAkGAgICAeEYNACACQdQBaiACQbACaigCADYCACACQcwBaiACQagCaikCADcCACACIAIpAqACNwLEAUEHIQEMAQsgAiACKAKkAjYCxAFBFCEBCyACIAE2AsABIAJB0ABqIAJBwAFqELsiIAIoAlQhBCACKAJQIQUMFQsgAkHAAWpBBHIgARDKCyACQYUBNgLUASACQcy3mgE2AtABIAJBsICAgHg2AsABIAFB0AJqIAFB2AJqIAEtAOECQQJGIgUbKAIAIgQgAUHUAmogAUHcAmogBRsoAgAiBSAEIAVJGyAEIAUgBCAFSxsgAkHAAWoQ/iIhBEEBIQUgARDtDiIDRQ0UIAMtAABBmwFHDRQgAUECOgDhAiABIAEpA9gCNwPQAiABIAEQ3xgQ9RgMFAsgAkGgAmogARCTBgJAAkAgAigCoAJFDQAgAkHMAWogAkGoAmooAgA2AgAgAiACKQKgAjcCxAFBDSEBDAELIAIgAigCpAI2AsQBQRQhAQsgAiABNgLAASACQdgAaiACQcABahC7IiACKAJcIQQgAigCWCEFDBMLIAJBwAFqIAEQ2QcgAi0AwAENCgJAIAItAMEBDQAgAkGgAmogARDREwJAAkAgAigCoAJBgICAgHhGDQAgAkHUAWogAkGwAmooAgA2AgAgAkHMAWogAkGoAmopAgA3AgAgAiACKQKgAjcCxAFBBSEBDAELIAIgAigCpAI2AsQBQRQhAQsgAiABNgLAASACQcgAaiACQcABahC7IiACKAJMIQQgAigCSCEFDBMLIAJB6ABqIAEQygECQAJAIAItAJoBQQJGDQAgAkGgAmpBBGogAkHoAGpByAAQ3woaIAJBwAFqQQRyIAJBoAJqQcwAEN8KGkEQIQEMAQsgAiACKAJoNgLEAUEUIQELIAIgATYCwAEgAkHAAGogAkHAAWoQuyIgAigCRCEEIAIoAkAhBQwSCyABEO0OGiABQdQCQdgCIAEtAOECQQJGG2ooAgAhBCACQcABaiABENUKIAIoAsABDQkgAigCyAEhAyACKALEASEIAkACQCABEMEPDQAgARDtDiIFRQ0AIAUtAABB/wBGDQELQQAhBUEALQDA/6MBGkHgABCMASIERQ0OIAQgAzYCCCAEIAg2AgQgBEEBNgIADBILIAJB6ABqIAEgBEEAIAggAxDhCAJAAkAgAi0AjAFBAkYNACACQaACakEMaiACQegAakEIaikDADcCACACQaACakEUaiACQegAakEQaikDADcCACACQaACakEcaiACQegAakEYaikDADcCACACQaACakEkaiACQegAakEgaikDADcCACACIAIpA2g3AqQCIAJBwAFqQQxqIAJBoAJqQQhqKQIANwIAIAJBwAFqQRRqIAJBoAJqQRBqKQIANwIAIAJBwAFqQRxqIAJBoAJqQRhqKQIANwIAIAJBwAFqQSRqIAJBoAJqQSBqKQIANwIAIAJB7AFqIAJByAJqKAIANgIAIAIgAikCoAI3AsQBQRIhAQwBCyACIAIoAmg2AsQBQRQhAQsgAiABNgLAASACQTBqIAJBwAFqELsiIAIoAjQhBCACKAIwIQUMEQsgARDtDhogAUECOgDhAiABIAEoAtwCNgLUAiABIAEoAtgCIgM2AtACIAEQ7Q4iBEUNBwJAIAQtAAAiBEFAakECSQ0AAkAgBEGbAUcNACABQQI6AOECIAEgASkD2AI3A9ACDBELIAJBwAFqQQRyIAEQygsgAkEhNgLUASACQdG4mgE2AtABIAJBsICAgHg2AsABIAFB0AJqIAFB2AJqIAEtAOECQQJGIgUbKAIAIgQgAUHUAmogAUHcAmogBRsoAgAiBSAEIAVJGyAEIAUgBCAFSxsgAkHAAWoQ/iIhBEEBIQUgARDtDiIDRQ0RIAMtAABBmwFHDREgAUECOgDhAiABIAEpA9gCNwPQAiABIAEQ3xgQ9RgMEQsgAkHAAWogARCCBiACKALAASIFQQdGDQggAigC2AEhBCACKQPQASESIAIoAswBIQYgAigCyAEhDQJAAkACQCAFQX1qDgIBAgALQZTOoQFBKEGUuZoBENMnAAsgAjUC3AEhESACIBI3A2AgAkGgAmoQ2hwCQAJAIBFCIIYgBK2EIhFQDQAgAiARNwPAASACQRhqIAJBwAFqEMkTIAIoAhghBSACQaACaiACKAIcIgQQozAgAigCpAIgAigCqAIiCGogBSAEEN8KGiACIAggBGo2AqgCIAIpA8ABENAfIBK/IRMMAQsgAkEBNgLEASACQaTXoQE2AsABIAJCATcCzAEgAkGAAjYCbCACIAJB6ABqNgLIASACIAJB4ABqNgJoIAJBoAJqIAJBwAFqEIE2DQUgAisDYCETCyACQcABakEIaiACQaACakEIaigCADYCACACIAIpAqACNwPAASACQcABahCFLyIRQoCAgIBwgyESIBOaIRMgEachCEGAgICAeCEPDAcLIAIgBDYCoAMgAkGgAmoQ2hwCQAJAIBJQDQAgAiASNwPAASACQSBqIAJBwAFqEMkTIAIoAiAhCCACQaACaiACKAIkIgUQozAgAigCpAIgAigCqAIiD2ogCCAFEN8KGiACIA8gBWo2AqgCIAIpA8ABENAfDAELIAJBATYCxAEgAkGk16EBNgLAASACQgE3AswBIAJB6wQ2AmwgAiACQegAajYCyAEgAiACQaADajYCaCACQaACaiACQcABahCBNg0FIAIoAqADIQQLIAJBwAFqQQhqIgUgBEEIaigCADYCACACQegAakECaiIPIARBD2otAAA6AABBAC0AwP+jARogAiAEKQIANwPAASACIAQvAA07AWggBC0ADCEEQRAQjAEiCEUNDCAIIAIpA8ABNwIAIAggAi8BaDsADSAIQQIgBGs6AAwgCEEIaiAFKAIANgIAIAhBD2ogDy0AADoAACAFIAJBoAJqQQhqKAIANgIAIAIgAikCoAI3A8ABIAJBwAFqEIUvIRIgAigCoANBEEEEEO4cIBK/IRNCACESQYOAgIB4IQ8MBgsCQCABEO0OIgRFDQAgBC0AAEHfAEcNAEEKIQZBACEEDAELAkAgARDtDiIFRQ0AQQAhBEEAIQYgBS0AAEHvAEYNAQsCQCABEO0OIgRFDQAgBC0AAEH1AEcNAEEEIQZBACEEDAELAkAgARDtDiIERQ0AIAQtAABB9ABHDQBBBSEGQQAhBAwBCwJAIAEQ7Q4iBEUNACAELQAAQYIBRw0AQQshBkEAIQQMAQsCQCABEO0OIgRFDQAgBC0AAEGDAUcNAEECIQZBACEEDAELAkAgARDtDiIERQ0AIAQtAABBhAFHDQBBAyEGQQAhBAwBCwJAIAEQ7Q4iBEUNACAELQAAQY4BRw0AQQYhBkEAIQQMAQsCQCABEO0OIgRFDQAgBC0AAEGPAUcNAEEHIQZBACEEDAELAkAgARDtDiIERQ0AIAQtAABBkwFHDQBBASEGQQAhBAwBCwJAIAEQ7Q4iBEUNACAELQAAQZEBRw0AQQkhBkEAIQQMAQsCQCABEO0OIgQNAEENIQZBASEEDAELQQ1BDCAELQAAQf4ARyIEGyEGCwJAAkAgARDHCiIFDQBBACEFDAELIAUtAABBCEYhBQsCQCAEIAVyQQFHDQAgARDtDhogAUHUAkHYAiABLQDhAkECRhtqKAIAIQMgAkHAAWogARDuDiACLQDAAQ0HIAItAMEBIQZBASEFIAJBwAFqIAFBARD0AiACKALAASEEIAItANQBIghBA0YNDyACQaACakEMaiACQcABakEMaikCADcCACACQaACakEXaiACQcABakEXai0AADoAACACIAIpAsQBNwKkAiACIAIvANUBOwC1AiACIAg6ALQCIAIgBDYCoAJBACENAkAgARDBDw0AIAEQ7Q4iBEUNACAELQAAQRJHDQAgASABKAKQAiIFQf+///8DcRDeESACQQhqIAEQzwIgAigCDCEEIAIoAgghDSABIAUQ3BEgDQ0FIAQhDQsgAkG1AmohBAJAIAZBAXFFDQAgASgC1AIhBSACQaiBgIB4NgLAASABIAMgBSADIAVJGyADIAUgAyAFSxsgAkHAAWoQlioLIAJB6ABqQQhqIgYgAkGgAmpBCGopAwA3AwAgAkHoAGpBEGoiDyACQaACakEQaigCADYCACACQaADakECaiIQIARBAmotAAA6AAAgAiACKQOgAjcDaCACIAQvAAA7AaADQQAhBUEALQDA/6MBGiABKALUAiEBQeAAEIwBIgRFDQsgBEEDNgIAIAQgAikDaDcDECAEIAg6ACQgBCACLwGgAzsAJSAEIA02AiggBCADIAEgAyABSxs2AgwgBCADIAEgAyABSRs2AgggBEEYaiAGKQMANwMAIARBIGogDygCADYCACAEQSdqIBAtAAA6AAAMDwsgAUECOgDhAiABIAEoAtwCIgg2AtQCIAEgASgC2AI2AtACQQAhBUEALQDA/6MBGkHgABCMASIERQ0KIAQgBjoADCAEQQA2AgAgBCADIAggAyAISxs2AgggBCADIAggAyAISRs2AgQMDgsgAUECOgDhAiABIAEpA9gCNwPQAiACQcABaiABENUKIAIoAsABDQVBASEFIAJBoAJqIAEgA0EBIAIoAsQBIAIoAsgBEOEIAkAgAi0AxAJBAkYNACACQcABakEgaiACQaACakEgaikDADcDACACQcABakEYaiACQaACakEYaikDADcDACACQcABakEQaiACQaACakEQaikDADcDACACQcABakEIaiACQaACakEIaikDADcDACACIAIpA6ACNwPAAUEAIQVBAC0AwP+jARpB4AAQjAEiBEUNCiAEQRI2AgAgBEEIaiACQcABakHYABDfChoMDgsgAigCoAIhBAwNC0GQw6EBQSsgAkHAAWpBnLuaAUH0uJoBELEYAAtBkMOhAUErIAJBwAFqQZy7mgFBhLmaARCxGAALIAJBoAJqELURQQEhBQwKC0EAIQVBAC0AwP+jARogASgC1AIhAUHgABCMASIERQ0FIAQgEzkDGCAEIAY2AhQgBCANNgIQIAQgDzYCCCAEQRE2AgAgBCADIAEgAyABSxs2AiwgBCADIAEgAyABSRs2AiggBCASIAithDcDIAwJCyABKAL8ASEBIAJBgICAgHg2AsABIAEgASACQcABahD+IiEEQQEhBQwICyACKALEASEEQQEhBQwHCyACKAK8AiENIAIoArgCIQ8gAikDsAIhEiACKQOoAiERCyADIAEoAtQCIgEgAyABSRshECADIAEgAyABSxshAwtBACEFQQAtAMD/owEaQeAAEIwBIgFFDQAgASADNgIsIAEgEDYCKCABIA02AiQgASAPNgIgIAEgEjcDGCABIBE3AxAgASAENgIMIAEgBjYCCCABIAQ2AgQgAUERNgIAIAEgAikDwAE3AzAgAUE4aiACQcgBaikDADcDACABQcAAaiACQdABaikDADcDACABQcgAaiACQdgBaikDADcDACABQdAAaiACQeABaikDADcDACABQdgAaiACQegBaikDADcDACABIQQMBAsACyACKAK4AyIBIAIoArwDEIoRIAIoArQDIAEQ4DMgAigCkAMhASACKAKMAyEICyACQYwDahDSKSAIIAEQ3zNBASEFDAELQQEhBSABEN8YIQQLIAAgBDYCBCAAIAU2AgAgAkHwA2okAAvpNgIJfwF+IwBBsAJrIgUkAAJAAkACQCABLQCYAiIGQQJHDQAgARDtDiIHRQ0AIActAABBzABHDQAgARDHCiIHRQ0AIActAABB+ABHDQACQAJAAkAgARDtDiIHDQAgASgC/AEhASAFQYCAgIB4NgKIASABIAEgBUGIAWoQ/iIhAQwBCyAHLQAAQZsBRw0BIAFBAjoA4QIgASABKQPYAjcD0AIgARDfGCEBCyAAQRM2AgAgACABNgIEDAILIAFBAjoA4QIgASABKQPYAjcD0AICQAJAAkAgARDtDiIHDQAgASgC/AEhASAFQYCAgIB4NgKIASABIAEgBUGIAWoQ/iIhAQwBCyAHLQAAQZsBRw0BIAFBAjoA4QIgASABKQPYAjcD0AIgARDfGCEBCyAAQRM2AgAgACABNgIEDAILIAFBAjoA4QIgASABKQPYAjcD0AIgBUGAAWogASACQQEQtgEgBSgChAEhAQJAAkAgBSgCgAFBAXFFDQBBEyEHQQQhAwwBCyAAQQY2AghBESEHQQwhAwsgACAHNgIAIAAgA2ogATYCAAwBCyABKAKQAiEIAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgARDtDiIHDQAgASgC/AEhASAFQYCAgIB4NgKIASABIAEgBUGIAWoQ/iIhAQwBCwJAIActAAAiB0GbAUYNAAJAIAhBgICAgAJxIghFIANBAXNxDQAgB0HHAEYNFAsgB0G4f2oOJBINCA8NEhENDQINDQ0NCQMQBA0NDQ0NDQUNBg0H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QAJAAkACQAJAIAQoAgBBJEYNACABEPMxIQUgA0EwakEMaiABQQxqKQIANwIAIANBMGpBFGogAUEUaigCADYCACABIAEpAxg3A1AgASgCACEEIAFBJTYCACADIAEpAgQ3AjQgAyAENgIwIANBmAJqQRBqQQApA7jkmQE3AwAgA0GYAmpBCGpBACkDsOSZATcDACADQQApA6jkmQE3A5gCIANBmAJqIANBMGoQhwchBCADQZgCahDiECABIAEoAswCIgZB/7//9wNxQYCAgAhBACAEG3IQ4Q8gA0HABGpBEGpBACkD4MOZATcDACADQcAEakEIakEAKQPYw5kBNwMAIANBACkD0MOZATcDwAQgAUEEaiEHIAEQsRYgA0HABGoQxTUNASADQcAEahDiECABIAEoAswCIghB/7///wNxEOEPIANBmAJqIAEQxQUgAygCmAIhBAJAAkAgAy0AxAIiCUEGRg0AIANBqAFqQQRyIANBmAJqQQRyQSgQ3woaIANBqAFqQS9qIANBmAJqQS9qLQAAOgAAIAMgAy8AxQI7ANUBIAMgCToA1AEgAyAENgKoASABIAgQoD4gA0GYAmogASACIANBqAFqEIIBAkAgAygC1AIiCkGAgICAeEcNACADKAKYAiEEDAILIAMoApwCIQsgAygCmAIhDCADQZAFaiADQZgCakEIakE0EN8KGiADQegBakEIaiADQeACaikDADcDACADIAMpA9gCNwPoAQwFCyABIAgQoD4LIABBgYCAgHg2ApABIAAgBDYCAAwECyABIAEpAxg3A1AgASgCACECIAFBJTYCACACQSRHDQEgASgCBCEBIABBgYCAgHg2ApABIAAgATYCAAwECyABIAEpAxg3A1AgASgCACEEIAFBJTYCACADQZgCakEMaiAHQQhqKQIANwIAIANBmAJqQRRqIAdBEGooAgA2AgAgAyAHKQIANwKcAiADIAQ2ApgCIANBmAJqEOIQIANBwARqEOIQIAIgASgCVCIEIAIgBEkbIQwgAiAEIAIgBEsbIQtBgICAgHghCgwBC0GUzqEBQShB2OGZARDTJwALIAMgCzYCTCADQcgAakEIaiADQZAFakE0EN8KGiADQZABaiADQegBakEIaikDADcDACADIAMpA+gBNwOIASADIAw2AkggAyAKNgKEASADQQA2AqQBIANCgICAgIABNwKcAUEHIQQgA0EHOgDcAQJAAkACQAJAIApBgICAgHhGDQAgAy0AkAENAQsgA0GYAmpBBHIhCSADQcAEakEMaiENIANBuANqQQhqIQ4gA0GYAmpBJGohDyADQawDaiEQIANBmAJqQQhqIQQgA0GIBGpBCGohESADQZgCakEEaiESIANBmAJqQRBqIRMCQAJAAkADQAJAIAEQsRYiAg0AIAEoArACIQIgA0GAgICAeDYCmAIgAiACIANBmAJqEP4iIQIgAEGBgICAeDYCkAEgACACNgIADAcLAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACKAIAQSRGDQAgE0EAKQPIw5kBNwMAIARBACkDwMOZATcDACADQQApA7jDmQE3A5gCIANBmAJqIAIQhwchCCADQZgCahDiECAIDQEgAigCAEEgRg0CIBNBACkD8N+ZASIaNwMAIARBACkD6N+ZASIbNwMAIANBACkD4N+ZASIcNwOYAiADQZgCaiACEIcHIQIgA0GYAmoQ4hAgAg0DIANBmAJqQQRyIAEQ3xogA0EoaiABEPsgIANBIDYCrAIgA0Ge8poBNgKoAiADQbCAgIB4NgKYAiADKAIoIAMoAiwgA0GYAmoQ/iIhAgJAIAEQsRYiBEUNACAEKAIAQSRHDQAgASABKQMYNwNQIAEoAgAhBCABQSU2AgAgBEEkRw0JIAEgASgCBBDjEwsgAEGBgICAeDYCkAEgACACNgIADBQLIAEgASkDGDcDUCABKAIAIQIgAUElNgIAIAJBJEcNBiABKAIEIQIgAEGBgICAeDYCkAEgACACNgIADBMLIAEQ8zEhAiABEMIeIghFDQIgE0EAKQOww5kBNwMAIARBACkDqMOZATcDACADQQApA6DDmQE3A5gCIANBmAJqIAgQhwchCCADQZgCahDiECAIRQ0CIAEgASkDGDcDUCABKAIAIQQgAUElNgIAIANBpAJqIAdBCGopAgA3AgAgA0GsAmogB0EQaigCADYCACADIAcpAgA3ApwCIAMgBDYCmAIgA0GYAmoQ4hAgARCxFiIEDQMgASgCsAIhAiADQYCAgIB4NgKYAiACIAIgA0GYAmoQ/iIhAiAAQYGAgIB4NgKQASAAIAI2AgAMEgsgBCABEP4cIANBADYCmAIgA0GcAWogA0GYAmoQ4ioMCwsgARDzMRoCQAJAIAEQwh4iAkUNACATQQApA6DgmQEiHTcDACAEQQApA5jgmQEiHjcDACADQQApA5DgmQEiHzcDmAIgA0GYAmogAhCHByECIANBmAJqEOIQIAINAQsgA0GYAmogARD8BSADKAKYAiICQQJGDQMgESASKQIANwIAIBFBCGogEkEIaikCADcCACADIAI2AowEIANBATYCiAQgA0GcAWogA0GIBGoQ4ioMCwsgARDzMSECIANBkAVqQRBqIhQgGjcDACADQZAFakEIaiIVIBs3AwAgAyAcNwOQBQJAAkAgARCxFiADQZAFahDFNQ0AIANBkAVqEOIQIANBIGogARD7ICADKAIkIQIgAygCICEEIANB+ARqIAEQ3xogA0GoAmpBACkD8N+ZATcDACADQZgCakEIakEAKQPo35kBNwMAIANBATYClAUgA0Gk16EBNgKQBSADQgE3ApwFIANBogI2ArQEIANBACkD4N+ZATcDmAIgAyADQbAEajYCmAUgAyADQcgFajYCsAQgAyADQZgCajYCyAUgA0HABGogA0GQBWoQmRYgA0GYAmoQ4hAgDUEIaiADQfgEakEIaigCADYCACANIAMpAvgENwIAIAQgAiADQcAEahD+IiEIIAEQsRYiAkUNASACKAIAQSRHDQEgASABKQMYNwNQIAEoAgAhAiABQSU2AgAgAkEkRw0HIAEgASgCBBDjEwwBCyAJIAcpAgA3AgAgASABKQMYNwNQIAEoAgAhCCABQSU2AgAgCUEIaiIWIAdBCGoiFykCADcCACAJQRBqIhggB0EQaiIZKAIANgIAIAMgCDYCmAIgA0GYAmoQ4hAgA0GQBWoQ4hAgFCAdNwMAIBUgHjcDACADIB83A5AFAkAgARCxFiADQZAFahDFNQ0AIANBkAVqEOIQIANBGGogARD7ICADKAIcIQIgAygCGCEEIANB2AVqIAEQ3xogA0GoAmpBACkDoOCZATcDACADQZgCakEIakEAKQOY4JkBNwMAIANBATYClAUgA0Gk16EBNgKQBSADQgE3ApwFIANBogI2ArQEIANBACkDkOCZATcDmAIgAyADQbAEajYCmAUgAyADQcgFajYCsAQgAyADQZgCajYCyAUgA0HABGogA0GQBWoQmRYgA0GYAmoQ4hAgDUEIaiADQdgFakEIaigCADYCACANIAMpAtgFNwIAIAQgAiADQcAEahD+IiEIIAEQsRYiAkUNASACKAIAQSRHDQEgASABKQMYNwNQIAEoAgAhAiABQSU2AgAgAkEkRw0IIAEgASgCBBDjEwwBCyAJIAcpAgA3AgAgASABKQMYNwNQIAEoAgAhCCABQSU2AgAgFiAXKQIANwIAIBggGSgCADYCACADIAg2ApgCIANBmAJqEOIQIANBkAVqEOIQIANBEGogARCICCADKAIUIQggAygCEA0AIAMgCDYC1AUgFEEAKQP4w5kBNwMAIBVBACkD8MOZATcDACADQQApA+jDmQE3A5AFAkAgARCxFiADQZAFahDFNQ0AIANBkAVqEOIQIANBCGogARD7ICADKAIMIQIgAygCCCEEIANB6AFqIAEQ3xogA0GoAmpBACkD+MOZATcDACADQZgCakEIakEAKQPww5kBNwMAIANBATYClAUgA0Gk16EBNgKQBSADQgE3ApwFIANBogI2ArQEIANBACkD6MOZATcDmAIgAyADQbAEajYCmAUgAyADQcgFajYCsAQgAyADQZgCajYCyAUgA0HABGogA0GQBWoQmRYgA0GYAmoQ4hAgDUEIaiADQegBakEIaigCADYCACANIAMpAugBNwIAIAQgAiADQcAEahD+IiEIAkAgARCxFiICRQ0AIAIoAgBBJEcNACABIAEpAxg3A1AgASgCACECIAFBJTYCACACQSRHDQogASABKAIEEOMTCyADQdQFahCEBAwBCyAJIAcpAgA3AgAgASABKQMYNwNQIAEoAgAhFCABQSU2AgAgFiAXKQIANwIAIBggGSgCADYCACADIBQ2ApgCIANBmAJqEOIQIANBkAVqEOIQIAIgASgCVCIUIAIgFEkbIRUgCA0JIBUhCAsgAEGBgICAeDYCkAEgACAINgIADBALIANBmAJqIAEgAhBnIAMoApgCIQgCQCADKAKoAyIUQYGAgIB4Rg0AAkACQCAUQYCAgIB4Rw0AIANBkAVqQRhqIAlBGGopAgA3AwAgA0GQBWpBEGogCUEQaikCADcDACADQZAFakEIaiAJQQhqKQIANwMAIAMgCSkCADcDkAVBBCEUDAELQaABEJEyIgIgCDYCACACIAkpAgA3AgQgAkEMaiAJQQhqKQIANwIAIAJBFGogCUEQaikCADcCACACQRxqIAlBGGopAgA3AgAgAkEkaiAPQewAEN8KGiACIBQ2ApABIAIgECkCADcClAEgAkGcAWogEEEIaigCADYCAEEDIRQgAiEICyAOIAMpA5AFNwMAIA5BGGogA0GQBWpBGGopAwA3AwAgDkEQaiADQZAFakEQaikDADcDACAOQQhqIANBkAVqQQhqKQMANwMAIAMgCDYCvAMgAyAUNgK4AyADQZwBaiADQbgDahDiKgwKCyAAQYGAgIB4NgKQASAAIAg2AgAMDwsCQAJAIAQoAgBBJEYNAAJAIAEQsRYiBA0AIAEoArACIQIgA0GAgICAeDYCmAIgAiACIANBmAJqEP4iIQIMEAsgBCgCAEEkRw0BIAEgASkDGDcDUCABKAIAIQIgAUElNgIAAkAgAkEkRw0AIAEoAgQhAgwQC0GUzqEBQShB2OGZARDTJwALIAEgASkDGDcDUCABKAIAIQIgAUElNgIAIAJBJEcNCCABKAIEIQIgAEGBgICAeDYCkAEgACACNgIADA8LIAEgASkDGDcDUCABKAIAIQQgAUElNgIAIANBpAJqIgggB0EIaiIJKQIANwIAIANBrAJqIg4gB0EQaiITKAIANgIAIAMgBykCADcCnAIgAyAENgKYAiADQZgCahDiEEGgw5kBEOIQIANBkAVqQRBqQQApA+DDmQE3AwAgA0GQBWpBCGpBACkD2MOZATcDACADQQApA9DDmQE3A5AFAkAgARCxFiADQZAFahDFNQ0AIANBkAVqEOIQIANBmAJqIAEQxQUgAygCmAIhCAJAIAMtAMQCIgRBBkYNACADQZAFakEEciADQZgCakEEckEoEN8KGiADQZAFakEvaiADQZgCakEvai0AADoAACADIAMvAMUCOwC9BSADIAQ6ALwFIAMgCDYCkAUgA0HoAWpBEGpBACkD4MOZASIaNwMAIANB6AFqQQhqQQApA9jDmQEiGzcDACADQQApA9DDmQEiHDcD6AEgARCxFiADQegBahDFNQ0LIANB6AFqEOIQIAMgARD7ICADKAIEIQIgAygCACEEIANB+ARqIAEQ3xogA0GYAmpBEGogGjcDACADQZgCakEIaiAbNwMAIANBATYC7AEgA0Gk16EBNgLoASADQgE3AvQBIANBogI2ArQEIAMgHDcDmAIgAyADQbAEajYC8AEgAyADQcgFajYCsAQgAyADQZgCajYCyAUgA0HYBWog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QYGAgIB4NgKQASAAIAI2AgAgCBCpJyADQZgCahDlNAwEC0GUzqEBQShB2OGZARDTJwALQZTOoQFBKEHY4ZkBENMnAAtBlM6hAUEoQdjhmQEQ0ycACyADKAKcAiERIAMoApgCIRAgA0HABGogEkE0EN8KGiADQbAEakEIaiADQdgCaiIEQQhqKQMANwMAIANB+ARqQQhqIANBtAVqKQIANwMAIANBiAVqIANBkAVqQSxqKQIANwMAIAMgBCkDADcDsAQgAyADKQKsBTcD+AQgAygC1AIhCiADKAKcASEEIAMpAqABIRogAygCkAUhByADKAKUBSEPIAMoApgFIQUgAygCnAUhDCADKAKgBSELIAMoAqQFIQkgAygCqAUhCCADQdQFakECaiADQcUFaiITQQJqLQAAOgAAIAMgEy8AADsB1AUgAy0AxAUhEiAOIRQgAiETDAELIANBnAFqEKw3DAMLIAAgCDYCICAAIAk2AhwgACALNgIYIAAgDDYCFCAAIAU2AhAgACAPNgIMIAAgBzYCCCAAIBM2AgQgACAUNgIAIAAgAykD+AQ3AiQgACASOgA8IAAgAy8B1AU7AD0gAEEsaiADQfgEakEIaikDADcCACAAQTRqIANBiAVqKQMANwIAIABBP2ogA0HWBWotAAA6AAAgACARNgJEIAAgEDYCQCAAQcgAaiADQcAEakE0EN8KGiAAIAo2AnwgACAaNwKUASAAIAQ2ApABIAAgAykDsAQ3A4ABIABBiAFqIANBsARqQQhqKQMANwMADAILIABBgYCAgHg2ApABIAAgAjYCAEGgw5kBEOIQCyADQagBahDJMiADQZwBahCsNyAKQYCAgIB4Rg0AIANByABqEOU0CyADQTBqEOIQIAEgBhCgPgsgA0HwBWokAAvXMQIVfwN+IwBBwAJrIgMkAAJAAkACQCABEO0OIgQNACABKAL8ASEBIANBgICAgHg2AlAgASABIANB0ABqEP4iIQEMAQsCQAJAAkACQAJAIAQtAAAiBEG6f2oOJwIBAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQECAQEBAQECAQEBAQEBAgALIARBmwFGDQMLIARBuX9qQf8BcUHSAEsNAQsgA0GIAWogASACEJEFAkAgAy0AnAFBAkYNACADQdAAakEMaiADQYgBakEIaikDADcCACADQdAAakEUaiADQYgBakEQaikDADcCACADQdAAakEcaiADQYgBakEYaikDADcCACADIAMpA4gBNwJUIAAgAykCUDcCBCAAQQxqIANB0ABqQQhqKQIANwIAIABBFGogA0HQAGpBEGopAgA3AgAgAEEcaiADQdAAakEYaikCADcCACAAQSRqIANB8ABqKAIANgIAIABBADYCAAwECyAAIAMoAogBNgIEIABBBzYCAAwDCwJAAkACQAJAAkACQCAEQX5qDgMBBQAFCyABEO0OGiABQdQCQdgCIAEtAOECQQJGG2ooAgAhBQJAAkACQCABEO0OIgQNACABKAL8ASEBIANBgICAgHg2AlAgASABIANB0ABqEP4iIQEMAQsgBC0AAEGbAUcNASABQQI6AOECIAEgASkD2AI3A9ACIAEQ3xghAQsgAEEHNgIAIAAgATYCBAwICyABQQI6AOECIAEgASkD2AI3A9ACIANBADYCMCADQoCAgICAATcCKCADQdAAakEIaiEGQQghB0EAIQRBACEIQQAhCQNAIARBKGwhAgJAAkACQAJAA0AgARDtDkUNAQJAIAEQ7Q4iCkUNACAKLQAAQQVGDQILAkACQAJAIAEQ7Q4iCkUNACAKLQAAQQdGDQELAkAgCUH+/3tLDQAgCSAIckUNACADQbuAgIB4NgJQIAEgCSAIIANB0ABqEJYqCyABEO0OGiABQdQCQdgCIAEtAOECQQJGG2ooAgAhAgJAIAEQ7Q4iCkUNACAKLQAAQRxGDQILIANB0ABqIAEQ6gUgAygCVCELIAMoAlAiCkEHRg0FIANBiAFqQRhqIgwgBkEYaikDADcDACADQYgBakEQaiINIAZBEGopAwA3AwAgA0GIAWpBCGoiDiAGQQhqKQMANwMAIAMgBikDADcDiAECQCAEIAMoAihHDQAgA0EoahCPDgsgAygCLCIHIARBKGxqIgIgCzYCBCACIAo2AgAgAiADKQOIATcDCCACQRBqIA4pAwA3AwAgAkEYaiANKQMANwMAIAJBIGogDCkDADcDAEEAIQIMBAsgAUECOgDhAiABIAEpA9gCNwPQAgJAIAQgAygCKEcNACADQShqEI8OIAMoAiwhBwsgByACakEHNgIAIAMgBEEBaiIENgIwIAJBKGohAgwBCwsgAUECOgDhAiABIAEoAtwCIgc2AtQCIAEgASgC2AI2AtACIANB0ABqIAFBABBoIAMoAlQhCyADKAJQIgxBB0YNAiADQfgBakEYaiINIAZBGGopAwA3AwAgA0H4AWpBEGoiDiAGQRBqKQMANwMAIANB+AFqQQhqIg8gBkEIaikDADcDACADIAYpAwA3A/gBQQAtAMD/owEaIAEoAtQCIQhBKBCMASIKRQ0GIAIgByACIAdJGyEQIAIgByACIAdLGyERIAIgCCACIAhJGyEJIAIgCCACIAhLGyEIIAogCzYCBCAKIAw2AgAgCiADKQP4ATcDCCAKQRBqIA8pAwA3AwAgCkEYaiAOKQMANwMAIApBIGogDSkDADcDAAJAIAQgAygCKEcNACADQShqEI8OCyADKAIsIgcgBEEobGoiAkEANgIYIAIgETYCFCACIBA2AhAgAiAINgIMIAIgCTYCCCACIAo2AgQgAkECNgIAQQEhAgwBCwJAAkAgARDtDiICRQ0AIAItAABBBUYNAQsgAUHUAmogAUHcAmogAS0A4QJBAkYiChsoAgAhAiABQdACaiABQdgCaiAKGygCACEKIANB2AFqIAEQygsgA0EBNgJUIANBpNehATYCUCADQgE3AlwgA0HoBDYCOCADQQU6AEMgAyADQTRqNgJYIAMgA0E8ajYCNCADIANBwwBqNgI8IANBoAJqIANB0ABqEKoTIANBtAJqIANB4AFqKAIANgIAIAMgAykC2AE3AqwCIAogAiAKIAJJGyAKIAIgCiACSxsgA0GgAmoQ/iIhCyABEO0OIgJFDQIgAi0AAEGbAUcNAiABQQI6AOECIAEgASkD2AI3A9ACIAEgARDfGBD1GAwCCyABQQI6AOECIAEgASkD2AI3A9ACAkACQAJAIAEtAJgCQQJHDQAgAS0AmwJBAXENAQtBACEEIAEtAJECQcAAcUUNAQtBACEEIAEQ7Q4iAkUNACACLQAAQQpHDQAgAUECOgDhAiABIAEpA9gCNwPQAkEBIQQLIAAgAykCKDcCBCAAIAQ6ABwgAEEANgIYIABBATYCACAAQQxqIANBMGooAgA2AgAgACAFIAEoAtQCIgEgBSABSxs2AhQgACAFIAEgBSABSRs2AhAMCwsgAyAEQQFqIgQ2AjACQCABEO0OIgpFDQAgCi0AAEEFRg0DCwJAIAEQ7Q4iCkUNACAKLQAAQQdGDQILIAFB1AJqIAFB3AJqIAEtAOECQQJGIgobKAIAIQIgAUHQAmogAUHYAmogChsoAgAhCiADQbgBaiABEMoLIANBATYCVCADQaTXoQE2AlAgA0IBNwJcIANB6AQ2AjggA0EHOgBDIAMgA0E0ajYCWCADIANBPGo2AjQgAyADQcMAajYCPCADQaACaiADQdAAahCqEyADQbQCaiADQcABaigCADYCACADIAMpArgBNwKsAiAKIAIgCiACSRsgCiACIAogAksbIANBoAJqEP4iIQsgARDtDiICRQ0AIAItAABBmwFHDQAgAUECOgDhAiABIAEpA9gCNwPQAiABIAEQ3xgQ9RgLIABBBzYCACAAIAs2AgQgAygCLCIBIAQQmS0gAygCKCABEOEzDAkLIAFBAjoA4QIgASABKQPYAjcD0AIgAkUNACABEO0OIgJFDQAgAi0AAEEFRw0AIAEoAtQCIQIgASgC0AIhCiADQbqAgIB4NgJQIAEgCiACIANB0ABqEJYqDAALCwJAAkACQAJAIAEoApACIhJBAnFFDQAgASgChAIiBCgCCCICQf7///8HSw0DIAQoAhRFDQAgAg0CIARBfzYCCCABKAKAAiICKAIIDQEgAkF/NgIIIAQoAhAhByACQQxqIAQoAhQiChChMCACKAIQIAIoAhRBAnRqIAcgCkECdBDfChogAiAKIAIoAhRqNgIUIARBADYCFCACIAIoAghBAWo2AgggBCAEKAIIQQFqNgIICyABIBJB///7/wNxNgKQAiABEO0OGiABQdQCQdgCIAEtAOECQQJGG2ooAgAhEwJAAkACQCABEO0OIgQNACABKAL8ASEEIANBgICAgHg2AlAgBCAEIANB0ABqEP4iIQQMAQsgBC0AAEGbAUcNASABQQI6AOECIAEgASkD2AI3A9ACIAEQ3xghBAsgAEEHNgIAIAAgBDYCBAwGCyABQQI6AOECIAEgASkD2AI3A9ACIANB0ABqQQhBCEE4EOETIAMoAlQhBAJAIAMoAlBBAUYNACADQQA2AkwgAyADKAJYIg82AkggAyAENgJEIANB+AFqQQRqIREgA0H4AWpBCGohBSADQdgBakEIaiEGIANB0ABqQRBqIRQgA0HQAGpBCGohAiADQdAAakEEciEQIAFB3AJqIRUgAUHQAmohFkEAIRdBACEHA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA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KQMANwMAIARBMGogCykDADcDACADIAdBAWoiBzYCTAJAIAEQ7Q4iBEUNACAELQAAQQNGDQMLAkAgARDtDiIERQ0AIAQtAABBB0YNAgsgAUHUAmogAUHcAmogAS0A4QJBAkYiAhsoAgAhBCABQdACaiABQdgCaiACGygCACECIANBoAJqIAEQygsgA0EBNgJUIANBpNehATYCUCADQgE3AlwgA0HoBDYC3AEgA0EHOgAoIAMgA0HYAWo2AlggAyADQbgBajYC2AEgAyADQShqNgK4ASADQfgBaiADQdAAahCqEyADQYwCaiADQagCaigCADYCACADIAMpAqACNwKEAiACIAQgAiAESRsgAiAEIAIgBEsbIANB+AFqEP4iIQogARDtDiIERQ0IIAQtAABBmwFHDQggAUECOgDhAiABIAEpA9gCNwPQAiABIAEQ3xgQ9RgMCAsgAygCSCEPDAcLIAFBAjoA4QIgASABKQPYAjcD0AIgARDtDiIERQ0AQQEgFyAELQAAQQNGIgQbIRcgASkD0AIgGiAEGyEaDAALCyAEIAMoAlgQ+DkAC0H8g5sBEOkiAAtBjISbARDpIgALQZyEmwEQ6iIACwALIABBBzYCACAAIAo2AgQgA0HEAGoQ6BMgAygCRCAPEOMzCyABIBIQ3BEMAwsgA0HQAGpBBHIgARDKCyADQRw2AmQgA0HggpsBNgJgIANBsICAgHg2AlAgAUHQAmogAUHYAmogAS0A4QJBAkYiAhsoAgAiBCABQdQCaiABQdwCaiACGygCACICIAQgAkkbIAQgAiAEIAJLGyADQdAAahD+IiEEAkAgARDtDiICRQ0AIAItAABBmwFHDQAgAUECOgDhAiABIAEpA9gCNwPQAiABIAEQ3xgQ9RgLIABBBzYCACAAIAQ2AgQMAgsgAUECOgDhAiABIAEpA9gCNwPQAiABEN8YIQELIABBBzYCACAAIAE2AgQLIANBwAJqJAAL+zACCH8BfiMAQdABayIEJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQFxDQACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACKAIAIgVBgIC8f2oiAUECIAFBCEkbDggpAAECDQMEKSkLIAJBBGohASAD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KQIANwMAIAQgBCkCiAE3A2ggBEGwAWogBEHoAGoQpxogBEGIAWogBSACKAIELQBwIARBsAFqEIIvIAQoAogBIgFBgICAgHhGDQEgBC0AjAEhBSAEQSBqIARBjQFqQSMQ3woaIAQoArABIAQoArQBEII6DAQLIARBiAFqIAUQ2hMgBCgCiAFBEEYNDSAEQegAakEYaiAEQYgBakEYaigCADYCACAEQegAakEQaiAEQYgBakEQaikCADcDACAEQegAakEIaiAEQYgBakEIaikCADcDACAEIAQpAogBNwNoIARBwAFqIARB6ABqEKYaIARBwAFqIARBsAFqEOInIARBlAFqIARBwAFqQQhqKQIANwIAIAQgBCkCwAE3AowBIARBCjYCiAEgBSAEQYgBahCEKCAEKAKwASAEKAK0ARCZOgwXCyAEQYgBaiAFENoTIAQoAogBQRBGDQ0gBEHoAGpBGGogBEGIAWpBGGooAgA2AgAgBEHoAGpBEGogBEGIAWpBEGopAgA3AwAgBEHoAGpBCGogBEGIAWpBCGopAgA3AwAgBCAEKQKIATcDaCAEQcABaiAEQegAahCnGiAEQcABaiAEQbABahDhJyAEQZQBaiAEQcABakEIaikCADcCACAEIAQpAsABNwKMASAEQQk2AogBIAUgBEGIAWoQhCggBCgCsAEgBCgCtAEQgjoMFgsCQAJAAkACQAJAAkACQAJAAkAgAygCACIBLQAUIgVBAkYNACAFQQFxDQAgBEGIAWogARDaEyAEKAKIAUEQRg0WIARBIGpBGGoiBSAEQYgBakEYaiIGKAIANgIAIARBIGpBEGogBEGIAWpBEGopAgA3AwAgBEEgakEIaiIHIARBiAFqQQhqIgMpAgA3AwAgBCAEKQKIATcDICAEQbABaiAEQSBqEKYaIARBiAFqIAEQ2hMgBCgCiAFBEEYNFyAFIAYoAgA2AgAgBEEgakEQaiIFIARBiAFqQRBqIgYpAgA3AwAgByADKQIANwMAIAQgBCkCiAE3AyAgBEHAAWogBEEgahCmGiAEQYgBaiABENoTIAQoAogBQRBGDRggBEEgakEYaiAEQYgBakEYaigCADYCACAFIAYpAgA3AwAgBEEgakEIaiAEQYgBakEIaikCADcDACAEIAQpAogBNwMgIARB6ABqIARBIGoQphoCQCABLQAQQQFxRQ0AIARBsAFqENIPIARBwAFqENIPCyACLQAgDgMBAgMBCyAEQYgBaiABENoTIAQoAogBQRBGDRggBEEgakEYaiIFIARBiAFqQRhqIgYoAgA2AgAgBEEgakEQaiAEQYgBakEQaikCADcDACAEQSBqQQhqIgcgBEGIAWpBCGoiAykCADcDACAEIAQpAogBNwMgIARBsAFqIARBIGoQpxogBEGIAWogARDaEyAEKAKIAUEQRg0ZIAUgBigCADYCACAEQSBqQRBqIgUgBEGIAWpBEGoiBikCADcDACAHIAMpAgA3AwAgBCAEKQKIATcDICAEQcABaiAEQSBqEKcaIARBiAFqIAEQ2hMgBCgCiAFBEEYNGiAEQSBqQRhqIARBiAFqQRhqKAIANgIAIAUgBikCADcDACAEQSBqQQhqIARBiAFqQQhqKQIANwMAIAQgBCkCiAE3AyAgBEHoAGogBEEgahCnGgJAIAEtABBBAXFFDQAgBEGwAWoQxwYgBEHAAWoQxwYLIAItACAOAwQFBgQLIARBwAFqIARBsAFqELALDAILIARBwAFqIARBsAFqEPQFDAELIARBiAFqIAQoAsQBIAQoAsgBEPQiIAQgBC0AzAE6AJQBIARBiAFqIARBsAFqELALIARBwAFqIARBsAFqEOInIARBwAFqIARBiAFqEPQFIAQoAogBIAQoAowBEJk6CyAEQegAaiAEQcABahDiJyAEQZQBaiAEQfAAaikCADcCACAEIAQpAmg3AowBIARBCjYCiAEgASAEQYgBahCEKCAEKALAASAEKALEARCZOiAEKAKwASAEKAK0ARCZOgwZCyAEQcABaiAEQbABahCvCwwCCyAEQcABaiAEQbABahCmBQwBCyAEQYgBaiAEKALEASAEKALIARDzIiAEIAQtAMwBOgCUASAEQYgBaiAEQbABahCvCyAEQcABaiAEQbABahDhJyAEQcABaiAEQYgBahCmBSAEKAKIASAEKAKMARCCOgsgBEHoAGogBEHAAWoQ4ScgBEGUAWogBEHwAGopAgA3AgAgBCAEKQJoNwKMASAEQQk2AogBIAEgBEGIAWoQhCggBCgCwAEgBCgCxAEQgjogBCgCsAEgBCgCtAEQgjoMFQsgBEEgaiAEQY0BakEjEN8KGiAEKALAASAEKALEARCZOgsgACAFOgAEIABBBWogBEEgakEjEN8KGgwUC0GUsYQBEP05AAtBpLGEARD9OQALQbSxhAEQ/TkAC0HEsYQBEP05AAtB1LGEARD9OQALQeSxhAEQ/TkAC0GEsoQBEP05AAtBpLKEARD9OQALQcSyhAEQ/TkAC0G0soQBEP05AAtB1LKEARD9OQALQeSyhAEQ/TkAC0H0soQBEP05AAtBhLOEARD9OQALQZSzhAEQ/TkAC0Gks4QBEP05AAtBtLOEARD9OQALIARBsAFqQQhqIAQpAG83AAAgBCAFOgCwASAEIAQpA2g3ALEBIARBiAFqIAYQ2hMCQCAEKAKIAUEQRg0AIARB6ABqQRhqIARBiAFqQRhqKAIANgIAIARB6ABqQRBqIARBiAFqQRBqKQIANwMAIARB6ABqQQhqIARBiAFqQQhqKQIANwMAIAQgBCkCiAE3A2ggBEHAAWogBEHoAGoQpxogBEHAAWogBEGwAWoQ4ScgBEGUAWogBEHAAWpBCGopAgA3AgAgBCAEKQLAATcCjAEgBEEJNgKIASAGIARBiAFqEIQoIAQoArABIAQoArQBEII6DAILQZSyhAEQ/TkACyAEQbABakEIaiAEKQBvNwAAIAQgBToAsAEgBCAEKQNoNwCxASAEQYgBaiADKAIAIgEQ2hMgBCgCiAFBEEYNAiAEQegAakEYaiAEQYgBakEYaigCADYCACAEQegAakEQaiAEQYgBakEQaikCADcDACAEQegAakEIaiAEQYgBakEIaikCADcDACAEIAQpAogBNwNoIARBwAFqIARB6ABqEKcaIARBwAFqIARBsAFqEOEnIARBlAFqIARBwAFqQQhqKQIANwIAIAQgBCkCwAE3AowBIARBCTYCiAEgASAEQYgBahCEKCAEKAKwASAEKAK0ARCCOgtBgICAgHghAQsgACABNgIAIARB0AFqJAAPC0H0sYQBEP05AAuoLgMOfwJ+AnwjAEHgAGsiAyQAIAEoAvQBIQREAAAAAAAAAAAhEwJAAkACQAJAIAINAAJAAkACQAJAAkAgASgC5AEiBSABKALoASIGRg0AAkACQCAFLAAAIgJBf0wNACACQf8BcSEHDAELIAUtAAFBP3EhCCACQR9xIQkCQCACQV9LDQAgCUEGdCAIciEHDAELIAhBBnQgBS0AAkE/cXIhCAJAIAJBcE8NACAIIAlBDHRyIQcMAQsgCEEGdCAFLQADQT9xciAJQRJ0QYCA8ABxciIHQYCAxABGDQELQQAhCkEAIQtBgIDEACEJIAQhDANAIAlBUmohDSAFIQICQAJAAkACQANAAkACQCACLAAAIghBf0oiDkUNACAIQf8BcSEJDAELIAItAAFBP3EhCSAIQR9xIQUCQCAIQV9LDQAgBUEGdCAJciEJDAELIAlBBnQgAi0AAkE/cXIhCQJAIAhBcE8NACAJIAVBDHRyIQkMAQsgCUEGdCACLQADQT9xciAFQRJ0QYCA8ABxciEJCwJAAkAgCUHfAEYNACAJQYCAxABGDQEgCUFQakEKTw0BQQEhCiABIAJBAWoiBTYC5AFBASENIA4NBSABIAJBAmoiBTYC5AEgAi0AAUE/cSEOIAhBH3EhDSAIQWBPDQMgDUEGdCAOciECDAQLIAJBAWoiBSEJAkAgDg0AAkAgCEFgTw0AIAJBAmohCQwBCyACQQRBAyAIQW9LG2ohCQsCQAJAIAkgBkYNAAJAAkAgCSwAACIOQX9MDQAgDkH/AXEhCQwBCyAJLQABQT9xIQ8gDkEfcSEQAkAgDkFfSw0AIBBBBnQgD3IhCQwBCyAPQQZ0IAktAAJBP3FyIQ8CQCAOQXBPDQAgDyAQQQx0ciEJDAELIA9BBnQgCS0AA0E/cXIgEEESdEGAgPAAcXIhCQsgCUFQakEJSw0AIA0OQgABAQEBAQEBAQEBAQEBAQEBAQEBAAEBAAEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEAAQEAAQEBAQEBAQEBAAELIANB7oCAgHg2AkggASAEIANByABqEOk0IAItAAAhCAsgASAFNgLkAUEBIQkCQAJAIAjAQX9MDQAgBSECDAELIAEgAkECaiIFNgLkASACLQABQT9xIQ4gCEEfcSEPAkACQCAIQf8BcSIIQeABTw0AIA9BBnQgDnIhAgwBCyABIAJBA2oiBTYC5AEgDkEGdCACLQACQT9xciEOAkAgCEHwAU8NACAOIA9BDHRyIQIMAQsgASACQQRqIgU2AuQBIA5BBnQgAi0AA0E/cXIgD0ESdEGAgPAAcXIhAgsCQCACQYABSQ0AQQIhCSACQYAQSQ0AQQNBBCACQYCABEkbIQkLIAUhAgsgASAJIAxqIgw2AvQBIAIgBkcNAQsLIApBAXENAyADQZeAgIB4NgJIIANBCjoATCAMIAQgA0HIAGoQhTwhAgwMCyABIAJBA2oiBTYC5AEgDkEGdCACLQACQT9xciEOAkAgCEFwTw0AIA4gDUEMdHIhAgwBCyABIAJBBGoiBTYC5AEgDkEGdCACLQADQT9xciANQRJ0QYCA8ABxciECCwJAIAJBgAFPDQBBASENDAELQQIhDSACQYAQSQ0AQQNBBCACQYCABEkbIQ0LIAEgDSAMaiIMNgL0AUEBIAsgCUEOcUEIRhshCyAFIAZHDQELCyABIAEoAuwBIgIgASgC8AFqNgLoASABIAIgDCABKAL4ASIIayIJajYC5AEgA0E4aiACIAQgCGsiCGogCSAIaxC3CSADQSBqIAMoAjwiAiADKAJAIghBLRD4JgJAIAMoAiAiCUUNAAJAIAMoAiQiBQ0AQQAhCCAJIQIMAQsgAiAJIAktAABB/wFxQStGIg4bIQIgCCAFIA4bIQgLIANByABqIAIgCEEKEMACIAMtAEwhAiADKAJIIgVBgICAgHhGDQEgA0HPAGotAABBGHQgAy8ATUEIdHIgAnIiCCADKAJQIgIQug8hEQJAAkAgAg0AQgAhEkEAIQkMAQsgCUEARyEJIAKtQgWGIAJBAnQgCGpBfGooAgBnrX0hEgsgBSAIEN8zRAAAAAAAAPB/RAAAAAAAAABAIBF5IBJ8QkB8IhKnENQaIBG6oiASQoAIVhsiFJogFCAJGyETAkAgAygCOCICQYCAgIB4Rw0AIBO9pyECDAgLIAMpAjwhESADIAI2AiggASgC5AEhCCABKALoASEFIAMgETcCLCARQiCIpyEOIBGnIQkCQAJAAkACQCAFIAhGDQAgCC0AAEHuAEYNAQsgB0EwRw0HIBREAAAAAAAAAABhDQIgEyATnaFEAAAAAAAAAABiDQcgAyADQShqNgI0IAtBAXENASADQcgAaiAJIA4Q1g8gA0E4aiADQcgAaiADQTRqELsWIANBOGoQlRkhEyADKAI4IAMoAjwQ3zMgASABKALsASICIAEoAvABajYC6AEgASACIAEoAvQBIAEoAvgBIghrIglqNgLkASABKAKMAiEFIAMgCSAEIAhrIghrNgJQIAMgAiAIajYCTCADQYCAgIB4NgJIIAVBCGogA0HIAGoQ0y4hESADQcgAaiABIAQgExCHGCAAIANByABqIBEQvBcMCQsgASABKAL0AUEBaiIINgL0ASABIAEoAuwBIgwgASgC8AFqNgLoASABIAwgCCABKAL4ASIGayINajYC5AEgA0HIAGogCSAOELcGIAMoAkgNBCADQRhqIAMoAkwiCCADKAJQIgVBLRD4JgJAAkAgAygCGCIODQBBAiEPDAELAkAgAygCHCIPDQBBACEPQQAhBSAOIQgMAQsgCCAOIA4tAABB/wFxQStGIhAbIQggBSAPIBAbIQVBACEPCyADQcgAaiAIIAVBChDAAiADKAJIIgVBgICAgHhGDQQgA0E6aiIOIANByABqQQdqLQAAOgAAIAMgAy8ATTsBOCADLQBMIRAgAygCUCEIIAIgCRCGNkEALQDA/6MBGkEQEIwBIgJFDQUgAiAQOgAEIAIgBTYCACACIAMvATg7AAUgAiAINgIIIAIgD0EBIAgbOgAMIAJBB2ogDi0AADoAACAAIAEoAowCQQhqIAwgBCAGayIBaiANIAFrEPMWNwMQIAAgAjYCCCAAQgE3AwAMCgsgA0GUgICAeDYCSCABIAQgA0HIAGoQtxAgAygCLCEJIAMoAighAgwFCyAEIAEoAvQBIghBf2pGDQQgASABKALsASICIAEoAvABajYC6AEgASACIAggASgC+AEiCWsiCGo2AuQBIAEoAowCQQhqIAIgBCAJayIJaiAIIAlrEPMWIREgA0HIAGogASAERAAAAAAAAAAAEIcYAkAgAygCSA0AIAAgETcDECAAIAMrA1A5AwggAEIANwMADAcLIAAgAygCTDYCCCAAQgI3AwAgEUIDg0IAUg0GIAMgEaciAjYCOCADQThqEPUHIAIgAigCACIBQX9qNgIAIAFBAUcNBiACIAIoAiAQ0y8MBgtB9MiaARD9OQALIAMgAjoASEGAzZoBQSIgA0HIAGpB7M6aAUGkzZoBELEYAAtBxM2aAUEiQdzOmgEQqh4LAAsgAiAJEIY2CwJAAkAgASgC5AEiCCABKALoASIORw0AIBMhFAwBCwJAAkACQAJAAkAgCCwAACIJQX9KDQAgCUEfcSIMQQZ0IAgtAAFBP3EiBnIhBQJAIAlBYEkNACAGQQZ0IAgtAAJBP3FyIQICQAJAIAlBcE8NACACIAxBDHRyIQIMAQsgAkEGdCAILQADQT9xciAMQRJ0QYCA8ABxciECCyACQS5HDQUgASAIQQJqIgI2AuQBIAlBX00NAyABIAhBA2oiAjYC5AEgBkEGdCAILQACQT9xciEFIAlBcE8NAiAFIAxBDHRyIQUMAwsgBUEuRw0EIAEgCEECaiICNgLkASABKAL0ASEIQQEhCQwDCyAJQS5HDQNBASEJIAEgCEEBaiICNgLkASABKAL0ASEIDAILIAEgCEEEaiICNgLkASAFQQZ0IAgtAANBP3FyIAxBEnRBgIDwAHFyIQULIAEoAvQBIQgCQCAFQYABTw0AQQEhCQwBCwJAIAVBgBBPDQBBAiEJDAELQQNBBCAFQYCABEkbIQkLIAEgCSAIaiIKNgL0AUEAIQsgCiEGQYCAxAAhCQJAA0AgAiAORg0BIAlBUmohDQJAA0ACQAJAIAIsAAAiCEF/SiIMRQ0AIAhB/wFxIQkMAQsgAi0AAUE/cSEJIAhBH3EhBQJAIAhBX0sNACAFQQZ0IAlyIQkMAQsgCUEGdCACLQACQT9xciEJAkAgCEFwTw0AIAkgBUEMdHIhCQwBCyAJQQZ0IAItAANBP3FyIAVBEnRBgIDwAHFyIQkLAkACQCAJQd8ARg0AIAlBgIDEAEYNBSAJQVBqQQpPDQVBASEFIAEgAkEBaiINNgLkASAMRQ0BIA0hAgwDCyACQQFqIgUhCQJAIAwNAAJAIAhBYE8NACACQQJqIQkMAQsgAkEEQQMgCEFvSxtqIQkLAkACQCAJIA5GDQACQAJAIAksAAAiDEF/TA0AIAxB/wFxIQkMAQsgCS0AAUE/cSEPIAxBH3EhEAJAIAxBX0sNACAQQQZ0IA9yIQkMAQsgD0EGdCAJLQACQT9xciEPAkAgDEFwTw0AIA8gEEEMdHIhCQwBCyAPQQZ0IAktAANBP3FyIBBBEnRBgIDwAHFyIQkLIAlBUGpBCUsNACANDkIAAQEBAQEBAQEBAQEBAQEBAQEBAQABAQABAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAAEBAAEBAQEBAQEBAQABCyADQe6AgIB4NgJIIAEgCiADQcgAahDpNCACLQAAIQgLIAEgBTYC5AFBASEJAkACQCAIwEF/TA0AIAUhAgwBCyABIAJBAmoiBTYC5AEgAi0AAUE/cSEMIAhBH3EhDwJAAkAgCEH/AXEiCEHgAU8NACAPQQZ0IAxyIQIMAQsgASACQQNqIgU2AuQBIAxBBnQgAi0AAkE/cXIhDAJAIAhB8AFPDQAgDCAPQQx0ciECDAELIAEgAkEEaiIFNgLkASAMQQZ0IAItAANBP3FyIA9BEnRBgIDwAHFyIQILAkAgAkGAAUkNAEECIQkgAkGAEEkNAEEDQQQgAkGAgARJGyEJCyAFIQILIAEgCSAGaiIGNgL0ASACIA5HDQEMBAsLIAEgAkECaiIMNgLkASACLQABQT9xIQ0gCEEfcSEPAkACQCAIQWBPDQAgD0EGdCANciECDAELIAEgAkEDaiIMNgLkASANQQZ0IAItAAJBP3FyIQ0CQCAIQXBPDQAgDSAPQQx0ciECDAELIAEgAkEEaiIMNgLkASANQQZ0IAItAANBP3FyIA9BEnRBgIDwAHFyIQILAkAgAkGAAUkNAEECIQUgAkGAEEkNAEEDQQQgAkGAgARJGyEFCyAMIQILIAEgBSAGaiIGNgL0ASALQf//A3FBAWoiC0H//wNxIAtGDQALCyABIAEoAuwBIgIgASgC8AFqNgLoASABIAIgBiABKAL4ASIIayIFajYC5AEgAiAEIAhrIghqIQkCQAJAAkAgBSAIayIFQQdLDQBBgICAgHghDiAGIARGDQIgCSECIAUhCANAIAItAABB3wBGDQIgAkEBaiECIAhBf2oiCA0ADAMLCyADQRBqQd8AIAkgBRC3C0GAgICAeCEOIAMoAhBBAUcNAQsgA0HIAGogCSAFELcJIAMoAlAhBSADKAJMIQkgAygCSCEOCyADQcgAaiAJIAUQlgECQCADLQBIQQFGDQAgAysDUCETAkAgDkGAgICAeEYNACAOIAkQhjYLIAEoAugBIQ4gASgC5AEhCAwBCyADIAMtAEk6ADhBhMmaAUEnIANBOGpB/M6aAUGsyZoBELEYAAsCQCAIIA5HDQAgEyEUDAELAkACQCAILAAAIglBf0wNACAJQf8BcSECDAELIAgtAAFBP3EhAiAJQR9xIQUCQCAJQV9LDQAgBUEGdCACciECDAELIAJBBnQgCC0AAkE/cXIhAgJAIAlBcE8NACACIAVBDHRyIQIMAQsgAkEGdCAILQADQT9xciAFQRJ0QYCA8ABxciECCwJAIAJBIHJB5QBGDQAgEyEUDAELQQEhBSABIAhBAWoiAjYC5AECQAJAAkACQCAJQX9KDQAgASAIQQJqIgI2AuQBIAgtAAFBP3EhBSAJQR9xIQwgCUFfSw0BIAxBBnQgBXIhCQwCCyABKAL0ASEIDAILIAEgCEEDaiICNgLkASAFQQZ0IAgtAAJBP3FyIQUCQCAJQXBPDQAgBSAMQQx0ciEJDAELIAEgCEEEaiICNgLkASAFQQZ0IAgtAANBP3FyIAxBEnRBgIDwAHFyIQkLIAEoAvQBIQgCQCAJQYABTw0AQQEhBQwBCwJAIAlBgBBPDQBBAiEFDAELQQNBBCAJQYCABEkbIQULIAEgBSAIaiIMNgL0AQJAAkAgAiAORg0AAkAgAiwAACIIQX9MDQAgCEH/AXEhCQwCCyACLQABQT9xIQkgCEEfcSEFAkAgCEFfSw0AIAVBBnQgCXIhCQwCCyAJQQZ0IAItAAJBP3FyIQkCQCAIQXBPDQAgCSAFQQx0ciEJDAILIAlBBnQgAi0AA0E/cXIgBUESdEGAgPAAcXIiCUGAgMQARw0BCyADQaWAgIB4NgJIIAwgDCADQcgAahCGPCECIABCAjcDACAAIAI2AggMBAsCQAJAAkACQAJAAkACQCAJQVVqDgMAAQABCyABIAJBAWo2AuQBQQEhBQJAIAhBf0oNACABIAJBAmo2AuQBIAItAAFBP3EhBSAIQR9xIQ4CQAJAIAhBYE8NACAOQQZ0IAVyIQIMAQsgASACQQNqNgLkASAFQQZ0IAItAAJBP3FyIQUCQCAIQXBPDQAgBSAOQQx0ciECDAELIAEgAkEEajYC5AEgBUEGdCACLQADQT9xciAOQRJ0QYCA8ABxciECC0EBIQUgAkGAAUkNAEECIQUgAkGAEEkNAEEDQQQgAkGAgARJGyEFCyABIAUgDGo2AvQBIANByABqIAEQoQQgAygCSEEBRg0BIAMrA1BEAAAAAAAA8H9hDQIMBQsgA0HIAGogARChBCADKAJIQQFHDQILIAMoAkwhAiAAQgI3AwAgACACNgIIDAcLRAAAAAAAAAAAIRQgE0QAAAAAAAAAAGENAyAJQStGDQEMAwsgAysDUEQAAAAAAADwf2INAUQAAAAAAAAAACEUIBNEAAAAAAAAAABhDQILRAAAAAAAAPB/IRQMAQsgASABKALsASICIAEoAvABajYC6AEgASACIAEoAvQBIg4gASgC+AEiCGsiBWo2AuQBIAIgBCAIayIIaiEJAkACQAJAAkAgBSAIayIFQQdLDQAgDiAERg0CIAkhAiAFIQgDQCACLQAAQd8ARg0CIAJBAWohAiAIQX9qIggNAAwDCwsgA0EIakHfACAJIAUQtwsgAygCCEEBRw0BCyADQThqIAkgBRC3CSADKAJAIQUgAygCPCEJDAELIANBgICAgHg2AjgLIANByABqIAkgBRCWAQJAIAMtAEhBAUYNACADKwNQIRQgAygCOCICQYCAgIB4Rg0BIAIgCRCGNgwBCyADIAMtAEk6AChBvMmaAUEdIANBKGpB/M6aAUHcyZoBELEYAAsCQCABEMMNIgINACABIAEoAuwBIgIgASgC8AFqNgLoASABIAIgASgC9AEgASgC+AEiCGsiCWo2AuQBIAAgAiAEIAhrIgFqIAkgAWsQgyg3AxAgACAUOQMIIABCADcDAAwDCyAAQgI3AwAgACACNgIIDAILIAMoAiggAygCLBCGNgwBCyAAQgI3AwAgACACNgIICyADQeAAaiQAC5MvAiJ/A34jAEHgA2siBCQAAkACQAJAAkAgAy0AJUECRw0AIAMoAhAhBSADKAIMIQYgAygCACEHIAMoAgQhCCADKAIIIQMgBEEANgLMASAEQoCAgICAATcCxAEgBCAIIANBOGxqIgk2AtwBIAQgBzYC2AEgBCAINgLUASAEIAg2AtABAkAgAw0AIAFCA4MhJgwDCyABQgODISYgBEGoA2pBIGohCiAEQagDakEcaiELIARBqANqQRhqIQwgBEGoA2pBFGohDSAEQagDakEQaiEOIARBqANqQTRqIQ8gBEGoA2pBMGohECAEQagDakEMaiERIAGnIRIgBEGIA2pBEGohEyAEQfABakElaiEUIARBqANqQQhqIRUgBEGoA2pBBGohFiAEQbgCakEQaiEXIARBqANqQQRyIgNBKGohGANAIAQgCEE4aiIZNgLUASAEIAgpACU3A+ABIAQgCEEsaigAADYA5wEgCCgCACIHQQpGDQMgCC0AJCEaIAgoAiAhGyAIKAIcIRwgCCgCGCEdIAgpAhAhJyAIKAIMIR4gCCgCCCEfIAgoAgQhICAIKQIwISggFCAIQSVqIggpAAA3AAAgFEEHaiAIQQdqIiEoAAA2AAAgBCAaOgCUAiAEIBs2ApACIAQgHDYCjAIgBCAdNgKIAiAEICc3A4ACIAQgHjYC/AEgBCAfNgL4ASAEICA2AvQBIAQgKDcDoAIgBCAHNgLwAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAdBAUYNAAJAIAdBemoOBAIAAAQACyAEQagDakEwaiAEQfABakEwaikDADcDACAEQagDakEoaiAEQfABakEoaikDADcDACAEQagDakEgaiAEQfABakEgaikDADcDACAEQagDakEYaiAEQfABakEYaikDADcDACAEQagDakEQaiAEQfABakEQaikDADcDACAEQagDakEIaiAEQfABakEIaikDADcDACAEIAQpA/ABNwOoA0EAKALY/qMBIh9FDQUgDSEIIAwhBwJAAkACQAJAAkACQCAEKAKoAyIgDgoFAAQAAgIBAgIDBQsgECEIIA8hBwwECyAEKAKsAyIIQSRqIQcgCEEgaiEIDAMLIBUhCCARIQcMAgsgDCEIIAshBwJAAkACQAJAAkAgBCgCsAMOEwYAAAIABQUFAgMFAQICBgMDBAUGCyARIQggDiEHDAULIAQoArQDIghB/ABqIQcgCEH4AGohCAwECyANIQggDCEHDAMLIAshCCAKIQcMAgsCQAJAAkACQAJAAkACQCAEKAK4Aw4IAAECAwQEBQYACyAEKALYAyIIQShqIQcgCEEkaiEIDAcLIAQoAtgDIghBNGohByAIQTBqIQgMBgsgBCgCvAMiCEEQaiEHIAhBDGohCAwFCyAEKAK8AyIIQRBqIQcgCEEMaiEIDAQLIAQoArwDIghBBGohBwwDCyAEKAK8AyIIQRxqIQcgCEEYaiEIDAILIAQoArwDIghBzABqIQcgCEHIAGohCAwBCyAOIQggDSEHCyAIKAIAIRwgBygCACEdIARBiANqIB9BA0GR7qABQT8Q0w9BAC0AwP+jARogBCgCjAMhCEEIEIwBIgdFDQ8gByAdNgIEIAcgHDYCACAIKAIcIAhBIGoiHCgCABD5MyAIQSxqIh8oAgAgCEEwaigCABDvLSAIKAIoIB8oAgAQmjQgH0IENwIAIAhCATcCJCAcIAc2AgAgCEEBNgIcIARB8AJqQQhqIARBiANqQQhqKAIANgIAIAQgBCkCiAM3A/ACIARB8AJqEMoCIARB8AJqEIYGICBBCUYNAiAEQfABahCJBwwJCyAEIAgpAAA3A6gCIAQgISgAADYArwICQAJAAkACQCAfQQJGDQAgH0ECSQ0BIARBzANqIAQoAOcBNgAAIAQgGjoAxAMgBCAbNgLAAyAEIBw2ArwDIAQgHTYCuAMgBCAnNwOwAyAEIB42AqwDIAQgHzYCqAMgBCAEKQPgATcAxQMgBEEBNgKMAyAEQfjAoAE2AogDIARCATcClAMgBEG+Ca1CIIYgBEGoA2qthDcD8AIgBCAEQfACajYCkAMgBEGIA2pBgMGgARCtLgALIARBADYCwAIgBEEANgK4AiAEIB4oAgA2AtACIAQgHigCBCIINgLIAiAEIAggHigCCEE4bCIHaiIiNgLUAgNAIAdFDQ4gCCgCACIfQQdGDQ0gAyAIKQIENwIAIANBMGoiICAIQTRqKAIANgIAIBggCEEsaikCADcCACADQSBqIhwgCEEkaikCADcCACADQRhqIh0gCEEcaikCADcCACADQRBqIhogCEEUaikCADcCACADQQhqIhsgCEEMaikCADcCACAEIB82AqgDIAdBSGohByAIQThqIh8hCCAEQagDahDDCSIhRQ0ACyAEIB82AswCIARBqANqQQRBBEEEEOETIAQoAqwDIQggBCgCqANBAUYNBiAEKAKwAyIjICE2AgBBASEkIARBATYC+AIgBCAjNgL0AiAEIAg2AvACIBMgFykCACInNwMAIARBiANqQRhqIARBuAJqQRhqKQIANwMAIARBiANqQQhqIARBuAJqQQhqKQIANwMAIAQgBCkCuAI3A4gDICenIR8gBCgCnAMhCCAEKAKkAyEhAkACQANAAkAgHw0AQQEhJAwDCyAIICFGDQECQCAIKAIAIgdBB0YNACADIAgpAgQ3AgAgICAIQTRqKAIANgIAIBggCEEsaikCADcCACAcIAhBJGopAgA3AgAgHSAIQRxqKQIANwIAIBogCEEUaikCADcCACAbIAhBDGopAgA3AgAgBCAHNgKoAyAIQThqIgchCCAEQagDahDDCSIiRQ0BAkAgJCAEKALwAkcNACAEQfACaiAkQQFBBEEEENYMIAQoAvQCISMLICMgJEECdGogIjYCACAEICRBAWoiJDYC+AIgByEIDAELCyAIQThqIQgLIAQgCDYCnAMgExCtHAsCQCAEKAKIA0UNACAEKAKMAyIIRQ0AIAgQqwEgCEHAAEEIEO4cCwJAIAQoApADRQ0AIAQoApQDIghFDQAgCBCrASAIQcAAQQgQ7hwLIAQoAvACIQcgBCgC9AIhCCAkRQ0OICRBAUYNAUEALQDA/6MBGkHAABCMASIfRQ0RIB9CADcDECAfICQ2AgwgHyAINgIIIB8gBzYCBCAfQRk2AgBBACEdDAILAkAgJ0IDg0IAUiIIDQAgJ6ciByAHKAIAIgdBAWo2AgAgB0F/TA0RCwJAICZCAFINACASIBIoAgAiB0EBajYCACAHQX9MDRELAkAgCA0AICenIgggCCgCACIIQQFqNgIAIAhBf0wNEQtBAC0AwP+jARpBwAAQjAEiIEUNECAgQQA6ABwgICACNgIYICBCADcCECAgIAE3AgggIEEaNgIAQQAtAMD/owEaQcAAEIwBIgdFDRAgByAaOgAcIAcgGzYCGCAHIBw2AhQgByAdNgIQIAcgJzcDCCAHQRo2AgBBAC0AwP+jARpBwAAQjAEiCEUNECAIQQA6ADwgCCAHNgI4IAhCADcDMCAIICA2AiggCEIANwMgIAggHDYCHCAIIB02AhggCCAnNwMQIAhBADYCCCAIQQE2AgACQCAEKALMASIgIAQoAsQBIiFHDQAgBEHEAWoQkA4gBCgCxAEhIQsgBCgCyAEiIiAgQTBsaiIHIBo6ACQgByAbNgIgIAcgHDYCHCAHIB02AhggByAnNwIQIAcgHjYCDCAHIB82AgggB0ERNgIAIAcgBCkDqAI3ACUgB0EsaiAEKACvAjYAACAEICBBAWoiBzYCzAECQCAHICFHDQAgBEHEAWoQkA4gBCgCyAEhIgsgIiAHQTBsaiIHIChCIIinNgIMIAcgKKc2AgggByAINgIEIAdBEjYCACAEICBBAmo2AswBDAkLIAgoAgAhH0EBIR1BACEkCyAeKAIQIRogHigCDCEbAkAgBCgCzAEiHCAEKALEAUcNACAEQcQBahCQDgsgBCgCyAEgHEEwbGoiICAaNgIMICAgGzYCCCAgIB82AgQgIEESNgIAIAQgHEEBajYCzAECQCAdRQ0AIAggJBCmLSAHIAgQ3zMLIB5BHEEEEO4cDAcLAkAgICkDAFANAEEAKALY/qMBIghFDQQgICgCJCEfICAoAiAhHCAEQagDaiAIQQNB1O2gAUE9ENMPQQAtAMD/owEaIAQoAqwDIQhBCBCMASIHRQ0OIAcgHzYCBCAHIBw2AgAgCCgCHCAIQSBqIhwoAgAQ+TMgCEEsaiIfKAIAIAhBMGooAgAQ7y0gCCgCKCAfKAIAEJo0IB9CBDcCACAIQgE3AiQgHCAHNgIAIAhBATYCHCAEQYgDakEIaiAEQagDakEIaigCADYCACAEIAQpAqgDNwOIAyAEQYgDahDKAiAEQYgDahCGBgwGCyAEQdgCakEQaiAgQRhqKQMANwMAIARB2AJqQQhqICBBEGopAwA3AwAgBCAgKQMINwPYAiAEQThqIARB2AJqEPgIAkAgIC0AQA0AICAoAjghCCAgKAI0IQcgICgCMCEfAkAgICkDKCInQgODQgBSDQAgJ6ciHCAcKAIAIhxBAWo2AgAgHEF/TA0PCyAEIAg2AoADIAQgBzYC/AIgBCAfNgL4AiAEICc3A/ACIAQgIC0APDoAhAMgBEGIA2ogBEHwAmoQ8BYgFkEYaiAEQYgDakEYaikDADcCACAWQRBqIBMpAwA3AgAgFkEIaiAEQYgDakEIaikDADcCACAWIAQpA4gDNwIAIARBOGoQpBUhB0EALQDA/6MBGkE4EIwBIghFDQ4gCEEANgIAIAggBCkCqAM3AgQgCEEAOgA0IAggBzYCMCAIQgA3AyggCEEMaiAEQagDakEIaikCADcCACAIQRRqIARBqANqQRBqKQIANwIAIAhBHGogBEGoA2pBGGopAgA3AgAgCEEkaiAEQagDakEgaigCADYCAEEIQQAQxydBAEEIEOMzQQAtAMD/owEaICAoAiQhHyAgKAIgIRxBHBCMASIHRQ0OIAdBgAQ7ARggB0EANgIUIAcgHzYCECAHIBw2AgwgB0EBNgIIIAcgCDYCBCAHQQE2AgBBAiEcQREhHQwFCwJAICZCAFINACASIBIoAgAiCEEBajYCACAIQX9MDQ4LICAoAjQhHSAgKAIwIRoCQCAgKQMoIidCA4NCAFINACAnpyIIIAgoAgAiCEEBajYCACAIQX9MDQ4LQQAtAMD/owEaQcAAEIwBIh9FDQ0gH0EAOgAcIB8gAjYCGCAfQgA3AhAgHyABNwIIIB9BGjYCAEEALQDA/6MBGkHAABCMASIIRQ0NIAggBCkDODcDACAIQThqIARBOGpBOGopAwA3AwAgCEEwaiAEQThqQTBqKQMANwMAIAhBKGogBEE4akEoaikDADcDACAIQSBqIARBOGpBIGopAwA3AwAgCEEYaiAEQThqQRhqKQMANwMAIAhBEGogBEE4akEQaikDADcDACAIQQhqIARBOGpBCGopAwA3AwAgICgCICEcICAoAiQhB0EALQDA/6MBGkHAABCMASIlRQ0NICVBADoAPCAlIAg2AjggJUIANwMwICUgHzYCKCAlQgA3AyAgJSAdNgIcICUgGjYCGCAlICc3AxAgJUEANgIIICVBATYCAEESIR0MBAsgFRD4BAwGCwJAIAQoAswBIgcgBCgCxAFHDQAgBEHEAWoQkA4LIAQoAsgBIAdBMGxqIgggGjoAHCAIIBs2AhggCCAcNgIUIAggHTYCECAIICc3AwggCCAeNgIEIAggHzYCACAIIAQpA+ABNwAdIAggKDcDKCAIQSRqIAQoAOcBNgAAIAQgB0EBajYCzAEMBAsgCCAEKAKwAxD4OQALEKg8DAkLAkAgBCgCzAEiHyAEKALEAUcNACAEQcQBahCQDgsgBCgCyAEgH0EwbGoiCCAHNgIMIAggHDYCCCAIICU2AgQgCCAdNgIAIAQgH0EBajYCzAELAkAgICkDKCInQgODQgBSDQAgBCAnpyIINgKoAyAEQagDahD1ByAIIAgoAgAiB0F/ajYCACAHQQFHDQAgCCAIKAIgENMvCwJAICApAwBQDQAgIBC4EwsgIEHIAEEIEO4cCwJAIAQoAvABIghBCUsNAEEBIAh0QcIEcQ0BCyAEQfABahCJBwsgBCgC1AEiCCAEKALcASIJRw0DDAYLIAhBOGohIgsgBCAiNgLMAiAXEK0cQQAhB0EEIQgLIAhBABCmLSAHIAgQ3zMgHkEcQQQQ7hwCQAJAIAQoAvABIghBCUsNAEEBIAh0QcIEcQ0BCyAEQfABahCJBwsgGSEIIBkgCUcNAAwDCwsgBEGoAWpBCGogA0EQaiIIKQMANwMAIARBqAFqQRBqIANBGGoiHykDADcDACAEIAMpAwg3A6gBIAMoAgQhICADKAIAIRwgAygCICEHIARB8AFqQRBqIB8pAwA3AwAgBEHwAWpBCGogCCkDADcDACAEIAMpAwg3A/ABIAQgA0EIahCmJyAEKAIIIQggBCkDACEnIARBOGpBIGogB0EgaikDADcDACAEQThqQRhqIAdBGGopAwA3AwAgBEE4akEQaiAHQRBqKQMANwMAIARBOGpBCGogB0EIaikDADcDACAEIAcpAwA3AzggBEEQaiAnIAggBEE4ahBrAkAgAUIDgyInQgBSDQAgAaciCCAIKAIAIghBAWo2AgAgCEF/TA0BCyAEIAI2AkAgBCABNwM4IAQgBEE4ajYCrAMgBCAEQfABajYCqAMgBEEoaiAEQagDahCwBAJAIAQpAzgiKEIDg0IAUg0AIAQgKKciCDYCiAMgBEGIA2oQ9QcgCCAIKAIAIgNBf2o2AgAgA0EBRw0AIAggCCgCIBDTLwtBAC0AwP+jARpBwAAQjAEiCEUNACAEQThqIARBqAFqEPAWIARBhAFqQRxqIARBOGpBGGopAwA3AgAgBEGEAWpBFGogBEE4akEQaikDADcCACAEQYQBakEMaiAEQThqQQhqKQMANwIAIAQgBCkDODcCiAEgCEEANgIAIAggBCkChAE3AgQgCEEMaiAEQYQBakEIaikCADcCACAIQRRqIARBhAFqQRBqKQIANwIAIAhBHGogBEGEAWpBGGopAgA3AgAgCEEkaiAEQaQBaigCADYCACAIQQA2AjggCEKAgICAwAA3AzAgCEIANwMoIARBATYCsAMgBCAINgKsAyAEQQE2AqgDIARBOGogBEGoA2ogBEEQahCJF0EALQDA/6MBGkEQEIwBIhhFDQAgGCAEKQIoNwIAIBhBCGogBEEoakEIaikCADcCAEEALQDA/6MBGkHIABCMASIIRQ0AIAggBEE4akHIABDfCiEIQQAtAMD/owEaQcAAEIwBIgNFDQAgAyAINgIgIANBAjoAHCADQQ82AgAgBEIANwLAAyAEQQM6ALwDIARBADYCuAMgBEIANwLIAyAEQgA3ArADIARCgICAgMAANwKoAyAEQagDahD3J0EAQQQQ2zNBAC0AwP+jARpBMBCMASIfRQ0AQQAtAMD/owEaQcAAEIwBIghFDQAgCEIANwIcIAhBBToAGCAIIAM2AhAgCEEBNgIMIAggGDYCCCAIQpeAgIAQNwMAIAhBJGpCADcCACAAQQA2AhQgACAgNgIQIAAgHDYCDCAAQQE2AgggACAfNgIEIABBATYCACAfQgA3AgggHyAINgIEIB9BEjYCACAHQShBCBDuHEEIQQAQxjBBAEEIEN4zICdCAFINAiAEIAGnIgg2AjggBEE4ahD1ByAIIAgoAgAiA0F/ajYCACADQQFHDQIgCCAIKAIgENMvDAILAAsgBEHQAWoQyAQgAEEIaiAEQcQBakEIaigCADYCACAAIAQpAsQBNwIAIABBADYCFCAAIAU2AhAgACAGNgIMQQhBABDGMEEAQQgQ3jMgJkIAUg0AIAQgAaciCDYCqAMgBEGoA2oQ9QcgCCAIKAIAIgNBf2o2AgAgA0EBRw0AIAggCCgCIBDTLwsgBEHgA2okAAu4LQIbfwF+IwBBgAJrIgIkACACQShqIAAgACgCACgCBBEHACACIAIoAiwiAzYCNCACIAIoAigiBDYCMAJAAkACQAJAAkAgAS0AHEEEcQ0AQQEhBSACQQE2ArQBIAJBpNehATYCsAEgAkIBNwK8ASACQT42AlggAiACQdQAajYCuAEgAiACQTBqNgJUIAEoAhQgASgCGCACQbABahCKNQ0CIAJBIGogBCADKAIYEQcAIAIoAiAiA0UNASACKAIkIQQgAkEANgLAAUEBIQUgAkEBNgK0ASACQYC9gAE2ArABIAJCBDcCuAEgASgCFCABKAIYIAJBsAFqEIo1DQIgAkEYaiADIAQoAhgRBwAgAigCGCEFIAJBADYCZCACIAQ2AlwgAiADNgJYIAJBADYCVCAFQQBHIQYDQCACQRBqIAJB1ABqELQXAkAgAigCECIFDQAgAkHUAGoQlzIMAwsgAigCFCEDIAIgAigCZCIEQQFqNgJkIAIgAzYC9AEgAiAFNgLwASACQQA2AsABIAJBATYCtAEgAkGIvYABNgKwASACQgQ3ArgBAkAgASgCFCABKAIYIAJBsAFqEIo1DQAgAkEAOgCUASACIAQ2AowBIAIgBjYCiAEgAiABNgKQASACQQE2ArQBIAJBpNehATYCsAEgAkIBNwK8ASACQT42AnwgAiACQfgAajYCuAEgAiACQfABajYCeCACQYgBaiACQbABahCTNUUNAQsLIAJB1ABqEJcyQQEhBQwCCyAEIAEgAygCDBEIACEFDAELAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIEIgVBA0YNACAAQQRqIQAMAQsgACAAKAIAKAIUEQQAIgBFDQEgACgCACEFCyAFQQJJDQggAkEANgJQIAJCgICAgBA3AkggAkEDOgB0IAJBIDYCZCACQQA2AnAgAkHEu4ABNgJsIAJBADYCXCACQQA2AlQgAiACQcgAajYCaAJAIAAoAgAOAwMCAAMLAkACQAJAAkACQAJAAkACQAJAIAAtABQOBAEDAgABCyAAQQxqKAIAIQVBACEEDAQLIABBAjoAFEEALQDh+qMBIQVBAEEBOgDh+qMBIAIgBToAiAEgBUUNAiACQgA3ArwBIAJCgYCAgMAANwK0ASACQci8oAE2ArABIAJBiAFqIAJBsAFqEKUrAAsgAkEANgLAASACQQE2ArQBIAJB5P2YATYCsAEgAkIENwK4ASACQbABakHU9pgBEK0uAAsgAkEANgLAASACQQE2ArQBIAJBpP2YATYCsAEgAkIENwK4ASACQbABakHU9pgBEK0uAAsgAEEDOgAUQQBBADoA4fqjASAAQQxqKAIAIQUgAigCcEEEcSIEDQELIAUgACgCECIDSQ0CIABBCGooAgAgA0EMbGohByAFIANrIQUMAQsgAEEIaigCACEHCyACQYCAgIB4NgJ4IAJBACkDyJKZASIdNwJ8IAIgBEECdiIAOgCEASACIAA6AJgBIAJBADYClAEgAkHE7pgBNgKQASACIAJB1ABqNgKIASACIAJB+ABqNgKMAQJAIAUNACAdQiCIpyEAIB2nIQUMBwsgByAFQQxsaiEIIAJBsAFqQQhqIQkDQAJAAkAgBygCCCIFDQAgAkEANgKoASACIAJBiAFqNgKkASACQQM2ArABIAJBAjYC8AEgAkGkAWogAkGwAWogAkHwAWpBACACQQAgAhDyAiEAIAIoAqQBIgUgBSgCDEEBajYCDCAARQ0BDA4LIAcoAgQiACAFQSxsaiEKA0AgAkEANgKgASACIAJBiAFqNgKcAQJAAkAgACgCIEGAgICAeEcNACACQQM2ArABDAELIAJBsAFqIAAoAiQiCyAAKAIoIgwQtwZBAiENAkAgAigCsAENACACQbABaiACKAK0ASIOIAIoArgBIg9BkLCXAUEGEPYCAkACQCACKAKwAQ0AAkACQAJAA0AgAkHwAWogAkGwAWoQsQQgAigC8AEOAwEAAgELCyACIAIpAvQBNwKoAUEBIQUMAQtBACEFCyACIAU2AqQBDAELIAIoAuwBIQUgAigC6AEhAyACKALkASEEIAIoAuABIQYCQCACKALUAUF/Rg0AIAJBpAFqIAkgBiAEIAMgBUEAEN0IDAELIAJBpAFqIAkgBiAEIAMgBUEBEN0ICwJAIAIoAqQBRQ0AAkAgAigCqAEiEEEGaiIFRQ0AAkAgBSAPTw0AIA4gBWosAABBv39KDQEMDAsgBSAPRw0LCyAOIA9qIQQgDiAFaiEFAkADQCAFIARGDQECQAJAIAUsAAAiA0F/TA0AIAVBAWohBSADQf8BcSEDDAELIAUtAAFBP3EhBiADQR9xIRECQCADQV9LDQAgEUEGdCAGciEDIAVBAmohBQwBCyAGQQZ0IAUtAAJBP3FyIQYCQCADQXBPDQAgBiARQQx0ciEDIAVBA2ohBQwBCyAGQQZ0IAUtAANBP3FyIBFBEnRBgIDwAHFyIgNBgIDEAEYNAiAFQQRqIQULIANBQGpBB0kNACADQVBqQQpPDQIMAAsLIBBFDQECQAJAIBAgD08NACAOIBBqLAAAQb9/TA0BIBAhDwwCCyAQIA9GDQELIA4gD0EAIBBB1LCXARCINwALAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAPQQNJDQBBuKeXASAOQQMQlSNFDQEgDi8AAEHanAFGDQIgD0EDRg0HIA4oAABB377p8gRHDQdBfCEFQQQhAyAPQQVPDQNBBCEPDAULIA9BAkcNDSAOLwAAQdqcAUcNBUF+IQVBAiEPQQIhAwwEC0EDIQNBfSEFAkAgD0EDRw0AQQMhDwwECyAOLAADQb9/Sg0DIA4gD0EDIA9BjKiXARCINwALIA4sAAJBv39MDQFBAiEDQX4hBQwCCyAOLAAEQb9/Sg0BIA4gD0EEIA9B7KeXARCINwALIA4gD0ECIA9B/KeXARCINwALIA4gA2oiECAFIA9qIgZqIRIgBiEFIBAhAwJAAkADQCAFRQ0BIAVBf2ohBSADLAAAIQQgA0EBaiEDIARBf0oNAAwCCwsgBkUNAAJAAkAgECwAACIFQX9MDQAgEEEBaiERIAVB/wFxIQUMAQsgEC0AAUE/cSEEIAVBH3EhAwJAIAVBX0sNACADQQZ0IARyIQUgEEECaiERDAELIARBBnQgEC0AAkE/cXIhBAJAIAVBcE8NACAEIANBDHRyIQUgEEEDaiERDAELIARBBnQgEC0AA0E/cXIgA0ESdEGAgPAAcXIhBSAQQQRqIRELAkACQCAFQcUARw0AQQAhBAwBCyAFQYCAxABGDQFBACEEA0AgBUFQakEJSw0CQQAhAwNAAkAgBUFQaiITQQpJDQADQAJAIAMNACAEQQFqIQQgBUHFAEcNBAwFCyARIBJGDQUCQAJAIBEsAAAiBUF/TA0AIBFBAWohESAFQf8BcSEFDAELIBEtAAFBP3EhEyAFQR9xIRQCQCAFQV9LDQAgFEEGdCATciEFIBFBAmohEQwBCyATQQZ0IBEtAAJBP3FyIRMCQCAFQXBPDQAgEyAUQQx0ciEFIBFBA2ohEQwBCyATQQZ0IBEtAANBP3FyIBRBEnRBgIDwAHFyIgVBgIDEAEYNBiARQQRqIRELIANBf2ohAwwACwsgA61CCn4iHUIgiKcNAyAdpyIFIBNqIgMgBUkNAyARIBJGDQMCQAJAIBEsAAAiBUF/TA0AIBFBAWohESAFQf8BcSEFDAELIBEtAAFBP3EhEyAFQR9xIRQCQCAFQV9LDQAgFEEGdCATciEFIBFBAmohEQwBCyATQQZ0IBEtAAJBP3FyIRMCQCAFQXBPDQAgEyAUQQx0ciEFIBFBA2ohEQwBCyATQQZ0IBEtAANBP3FyIBRBEnRBgIDwAHFyIQUgEUEEaiERCyAFQYCAxABGDQMMAAsLCyASIBFrIRUMCAsgD0ECSw0BC0ECIQ8gDi0AAEHSAEYNAQwHCwJAIA4vAABB36QBRw0AIA4sAAIiBUG/f0wNBCAOQQJqIQZBfiEDDAULIA4tAABB0gBHDQELIA4sAAEiBUG/f0wNASAOQQFqIQZBfyEDDAMLIA9BA0YNBEG0qpcBIA5BAxCVIw0EAkAgDiwAAyIFQb9/TA0AIA5BA2ohBkF9IQMMAwsgDiAPQQMgD0HkqpcBEIg3AAsgDiAPQQEgD0H0qpcBEIg3AAsgDiAPQQIgD0GEq5cBEIg3AAsgBUG/f2pB/wFxQRlLDQEgAyAPaiEEQQAhBQJAA0AgBCAFRg0BIAYgBWohAyAFQQFqIQUgAywAAEF/Sg0ADAMLCyAJQgA3AgAgCUEIakIANwIAIAIgBDYCtAEgAiAGNgKwAQJAAkACQCACQbABakEAEJECDQAgAigCsAEiA0UNBCACKAK4ASIFIAIvALUBIAJBsAFqQQdqIhAtAABBEHRyQQh0IAItALQBciIRTw0CIAMgBWotAABBv39qQf8BcUEaTw0CIAIoArwBIRIgAkIANwLAASACIBI2ArwBIAIgBTYCuAEgAiARNgK0ASACIAM2ArABIAJBsAFqQQAQkQINASACKAKwASIDRQ0EIAIoArgBIQUgAi8AtQEgEC0AAEEQdHJBCHQgAi0AtAFyIREMAgtBpKuXAUE9IAJB/wFqQZSrlwFB5KuXARCxGAALQaSrlwFBPSACQf8BakGUq5cBQeSrlwEQsRgACwJAAkAgBUUNAAJAIBEgBU0NACADIAVqLAAAQb9/Sg0BDAILIBEgBUcNAQsgESAFayEVIAMgBWohEUEAIRAMAQsgAyARIAUgEUH0q5cBEIg3AAsCQAJAIBUNAEEAIRYgECEXIAYhGCAEIRkgDiEaIA8hGyARIRwMAQsgES0AAEEuRw0BIBEgFWohEkEuIQMgESEFAkADQAJAAkACQCADwEF/Sg0AIAUtAAFBP3EhEyADQR9xIRQgA0H/AXEiA0HfAUsNASAUQQZ0IBNyIQMgBUECaiEFDAILIAVBAWohBSADQf8BcSEDDAELIBNBBnQgBS0AAkE/cXIhEwJAIANB8AFPDQAgEyAUQQx0ciEDIAVBA2ohBQwBCyATQQZ0IAUtAANBP3FyIBRBEnRBgIDwAHFyIgNBgIDEAEYNAiAFQQRqIQULAkAgA0Hf//8AcUG/f2pBGkkNACADQVBqQQpJDQAgA0FfakEPSQ0AIANBRmpBB0kNACADQaV/akEGSQ0AIANBhX9qQQNLDQQLIAUgEkYNASAFLQAAIQMMAAsLIBAhFyAGIRggBCEZIA4hGiAPIRsgESEcIBUhFgtBASENCyACIBY2AswBIAIgHDYCyAEgAiAbNgLEASACIBo2AsABIAIgGTYCvAEgAiAYNgK4ASACIBc2ArQBIAIgDDYC1AEgAiALNgLQASACIA02ArABCwJAIAAoAhAiBUECRg0AIAIgACkCGDcC9AELIAIgBTYC8AEgAkGcAWogAkGwAWogAkHwAWogACgCACAAKAIEIAAoAgggACgCDBDyAiEFIAIoApwBIgMgAygCDEEBajYCDCAFDQ4gAEEsaiIAIApHDQALCyAHQQxqIgcgCEYNBgwACwsgAyAFQbTumAEQohsAC0Hsu4ABQRhB5LyAARCqHgALIAJByABqQaHumAFBEhCGOg0JDAULIAJByABqQYzumAFBFRCGOkUNBAwICyAOIA8gBSAPQcSwlwEQiDcACyACKAJ4IgBFDQIgAEGAgICAeEcNASACKAKAASEAIAItAHwhBQsgBUH/AXFBA0cNASAAKAIAIQMCQCAAQQRqKAIAIgUoAgAiBEUNACADIAQRAwALAkAgBSgCBCIERQ0AIAMgBCAFKAIIEO4cCyAAQQxBBBDuHAwBCyACKAJ8IABBARDuHAsgAkE4akEIaiACQcgAakEIaigCADYCACACIAIpAkg3AzggAkEANgLAAUEBIQUgAkEBNgK0ASACQZS9gAE2ArABIAJCBDcCuAECQAJAIAEoAhQgASgCGCACQbABahCKNQ0AAkACQAJAIAIoAkAiAEEQSQ0AQZy9gAEgAigCPCIDQRAQlSNFDQELIAJBADYCwAEgAkEBNgK0ASACQcC9gAE2ArABIAJCBDcCuAEgASgCFCABKAIYIAJBsAFqEIo1DQIMAQsCQAJAAkAgAywAAUFASA0AIAJBADYCQCACQQE2ArwBIAJB4I+DATYCyAEgAkHfj4MBNgLEASACQoGAgIAQNwKwASACIABBf2o2AsABIAIgAkE4ajYCuAEgAkE4akEBIAJBxAFqIgAQ6RhFDQICQCACKALIASIDIAIoAsQBIgRHDQAgAyEEDAILIAJBsAFqIAMgBGsQ7iAgAigCuAEgAigCvAEgABDpGEUNAiACKALEASEDIAIoAsgBIQQMAQtB8LqAAUEqQZy7gAEQ0ycAC0EAIQYCQAJAIAQgA2siA0EASA0AAkAgAw0AQQEhBEEAIQMMAgsgAkEIaiADEJYyIAIoAggiBA0BQQEhBgsgBiADEPg5AAsgAkEANgJcIAIgBDYCWCACIAM2AlQgAkHUAGogABDhGyACKAJYIQ8gAigCVCEOAkAgAigCXCIARQ0AIAJBsAFqIAAQ7iAgAigCvAEgAigCuAEiESgCCCIEayEDIBEoAgQgBGohBCAPIQYDQCADRQ0BIABFDQEgBCAGLQAAOgAAIBEgESgCCEEBajYCCCADQX9qIQMgAEF/aiEAIAZBAWohBiAEQQFqIQQMAAsLIA4gDxD2OQsgAigCwAEiAEUNAAJAIAIoArwBIgYgAigCuAEiAygCCCIERg0AIAMoAgQiESAEaiARIAZqIAAQ8T0aCyADIAAgBGo2AggLIAIoAjwiESACKAJAIgpqIQMCQAJAA0ACQCADIgQgEUcNAEEAIQAMAgsCQCAEQX9qIgMsAAAiAEF/Sg0AAkACQCAEQX5qIgMtAAAiBsAiD0FASA0AIAZBH3EhBgwBCwJAAkAgBEF9aiIDLQAAIgbAIg5BQEgNACAGQQ9xIQYMAQsgBEF8aiIDLQAAQQdxQQZ0IA5BP3FyIQYLIAZBBnQgD0E/cXIhBgsgBkEGdCAAQT9xciEACwJAIABBd2oiBkEXSw0AQQEgBnRBn4CABHENAQsCQCAAQYABSQ0AAkAgAEEIdiIGRQ0AAkACQCAGQTBGDQAgBkEgRg0BIAZBFkcNAyAAQYAtRg0EDAMLIABBgOAARg0DDAILIABB/wFxQdjUoQFqLQAAQQJxDQIMAQsgAEH/AXFB2NShAWotAABBAXENAQsLIAogBCARayIASQ0BIABFDQAgCiAATQ0AIBEgAGosAABBv39KDQBBqKWZAUEwQdilmQEQ0ycACyACIAA2AkALIAJBATYCtAEgAkGk16EBNgKwASACQgE3ArwBIAJBPzYCWCACIAJB1ABqNgK4ASACIAJBOGo2AlQgASgCFCABKAIYIAJBsAFqEIo1RQ0BCyACKAI4IAIoAjwQ9jkMAgsgAigCOCACKAI8EPY5C0EAIQULIAJBgAJqJAAgBQ8LAkACQCACKAJ4IgBBgICAgHhGDQAgAEUNAkEBIQMgAigCfCEFDAELIAItAHxBA0cNAUEEIQMgAigCgAEiBSgCACEGAkAgBUEEaigCACIEKAIAIgBFDQAgBiAAEQMAC0EMIQAgBCgCBCIRRQ0AIAYgESAEKAIIEO4cCyAFIAAgAxDuHAtB3MGhAUE3IAJB/wFqQdy7gAFB4MKhARCxGAALkDAAAkAgACABQZ/WmQFBBBCgMUUNAEEiDwsCQCAAIAFBo9aZAUEDEKAxRQ0AQSYPCwJAIAAgAUGm1pkBQQQQoDFFDQBBJw8LAkAgACABQarWmQFBAhCgMUUNAEE8DwsCQCAAIAFBrNaZAUECEKAxRQ0AQT4PCwJAIAAgAUGu1pkBQQQQoDFFDQBBoAEPCwJAIAAgAUGy1pkBQQUQoDFFDQBBoQEPCwJAIAAgAUG31pkBQQQQoDFFDQBBogEPCwJAIAAgAUG71pkBQQUQoDFFDQBBowEPCwJAIAAgAUHA1pkBQQYQoDFFDQBBpAEPCwJAIAAgAUHG1pkBQQMQoDFFDQBBpQEPCwJAIAAgAUHJ1pkBQQYQoDFFDQBBpgEPCwJAIAAgAUHP1pkBQQQQoDFFDQBBpwEPCwJAIAAgAUHT1pkBQQMQoDFFDQBBqAEPCwJAIAAgAUHW1pkBQQQQoDFFDQBBqQEPCwJAIAAgAUHa1pkBQQQQoDFFDQBBqgEPCwJAIAAgAUHe1pkBQQUQoDFFDQBBqwEPCwJAIAAgAUHj1pkBQQMQoDFFDQBBrAEPCwJAIAAgAUHm1pkBQQMQoDFFDQBBrQEPCwJAIAAgAUHp1pkBQQMQoDFFDQBBrgEPCwJAIAAgAUHs1pkBQQQQoDFFDQBBrwEPCwJAIAAgAUHw1pkBQQMQoDFFDQBBsAEPCwJAIAAgAUHz1pkBQQYQoDFFDQBBsQEPCwJAIAAgAUH51pkBQQQQoDFFDQBBsgEPCwJAIAAgAUH91pkBQQQQoDFFDQBBswEPCwJAIAAgAUGB15kBQQUQoDFFDQBBtAEPCwJAIAAgAUGG15kBQQUQoDFFDQBBtQEPCwJAIAAgAUGL15kBQQQQoDFFDQBBtgEPCwJAIAAgAUGP15kBQQYQoDFFDQBBtwEPCwJAIAAgAUGV15kBQQUQoDFFDQBBuAEPCwJAIAAgAUGa15kBQQQQoDFFDQBBuQEPCwJAIAAgAUGe15kBQQQQoDFFDQBBugEPCwJAIAAgAUGi15kBQQUQoDFFDQBBuwEPCwJAIAAgAUGn15kBQQYQoDFFDQBBvAEPCwJAIAAgAUGt15kBQQYQoDFFDQBBvQEPCwJAIAAgAUGz15kBQQYQoDFFDQBBvgEPCwJAIAAgAUG515kBQQYQoDFFDQBBvwEPCwJAIAAgAUG/15kBQQYQoDFFDQBBwAEPCwJAIAAgAUHF15kBQQYQoDFFDQBBwQEPCwJAIAAgAUHL15kBQQUQoDFFDQBBwgEPCwJAIAAgAUHQ15kBQQYQoDFFDQBBwwEPCwJAIAAgAUHW15kBQQQQoDFFDQBBxAEPCwJAIAAgAUHa15kBQQUQoDFFDQBBxQEPCwJAIAAgAUHf15kBQQUQoDFFDQBBxgEPCwJAIAAgAUHk15kBQQYQoDFFDQBBxwEPCwJAIAAgAUHq15kBQQYQoDFFDQBByAEPCwJAIAAgAUHw15kBQQYQoDFFDQBByQEPCwJAIAAgAUH215kBQQUQoDFFDQBBygEPCwJAIAAgAUH715kBQQQQoDFFDQBBywEPCwJAIAAgAUH/15kBQQYQoDFFDQBBzAEPCwJAIAAgAUGF2JkBQQYQoDFFDQBBzQEPCwJAIAAgAUGL2JkBQQUQoDFFDQBBzgEPCwJAIAAgAUGQ2JkBQQQQoDFFDQBBzwEPCwJAIAAgAUGU2JkBQQMQoDFFDQBB0AEPCwJAIAAgAUGX2JkBQQYQoDFFDQBB0QEPCwJAIAAgAUGd2JkBQQYQoDFFDQBB0gEPCwJAIAAgAUGj2JkBQQYQoDFFDQBB0wEPCwJAIAAgAUGp2JkBQQUQoDFFDQBB1AEPCwJAIAAgAUGu2JkBQQYQoDFFDQBB1QEPCwJAIAAgAUG02JkBQQQQoDFFDQBB1gEPCwJAIAAgAUG42JkBQQUQoDFFDQBB1wEPCwJAIAAgAUG92JkBQQYQoDFFDQBB2AEPCwJAIAAgAUHD2JkBQQYQoDFFDQBB2QEPCwJAIAAgAUHJ2JkBQQYQoDFFDQBB2gEPCwJAIAAgAUHP2JkBQQUQoDFFDQBB2wEPCwJAIAAgAUHU2JkBQQQQoDFFDQBB3AEPCwJAIAAgAUHY2JkBQQYQoDFFDQBB3QEPCwJAIAAgAUHe2JkBQQUQoDFFDQBB3gEPCwJAIAAgAUHj2JkBQQUQoDFFDQBB3wEPCwJAIAAgAUHo2JkBQQYQoDFFDQBB4AEPCwJAIAAgAUHu2JkBQQYQoDFFDQBB4QEPCwJAIAAgAUH02JkBQQUQoDFFDQBB4gEPCwJAIAAgAUH52JkBQQYQoDFFDQBB4wEPCwJAIAAgAUH/2JkBQQQQoDFFDQBB5AEPCwJAIAAgAUGD2ZkBQQUQoDFFDQBB5QEPCwJAIAAgAUGI2ZkBQQUQoDFFDQBB5gEPCwJAIAAgAUGN2ZkBQQYQoDFFDQBB5wEPCwJAIAAgAUGT2ZkBQQYQoDFFDQBB6AEPCwJAIAAgAUGZ2ZkBQQYQoDFFDQBB6QEPCwJAIAAgAUGf2ZkBQQUQoDFFDQBB6gEPCwJAIAAgAUGk2ZkBQQQQoDFFDQBB6wEPCwJAIAAgAUGo2ZkBQQYQoDFFDQBB7AEPCwJAIAAgAUGu2ZkBQQYQoDFFDQBB7QEPCwJAIAAgAUG02ZkBQQUQoDFFDQBB7gEPCwJAIAAgAUG52ZkBQQQQoDFFDQBB7wEPCwJAIAAgAUG92ZkBQQMQoDFFDQBB8AEPCwJAIAAgAUHA2ZkBQQYQoDFFDQBB8QEPCwJAIAAgAUHG2ZkBQQYQoDFFDQBB8gEPCwJAIAAgAUHM2ZkBQQYQoDFFDQBB8wEPCwJAIAAgAUHS2ZkBQQUQoDFFDQBB9AEPCwJAIAAgAUHX2ZkBQQYQoDFFDQBB9QEPCwJAIAAgAUHd2ZkBQQQQoDFFDQBB9gEPCwJAIAAgAUHh2ZkBQQYQoDFFDQBB9wEPCwJAIAAgAUHn2ZkBQQYQoDFFDQBB+AEPCwJAIAAgAUHt2ZkBQQYQoDFFDQBB+QEPCwJAIAAgAUHz2ZkBQQYQoDFFDQBB+gEPCwJAIAAgAUH52ZkBQQUQoDFFDQBB+wEPCwJAIAAgAUH+2ZkBQQQQoDFFDQBB/AEPCwJAIAAgAUGC2pkBQQYQoDFFDQBB/QEPCwJAIAAgAUGI2pkBQQUQoDFFDQBB/gEPCwJAIAAgAUGN2pkBQQQQoDFFDQBB/wEPCwJAIAAgAUGR2pkBQQUQoDFFDQBB0gIPCwJAIAAgAUGW2pkBQQUQoDFFDQBB0wIPCwJAIAAgAUGb2pkBQQYQoDFFDQBB4AIPCwJAIAAgAUGh2pkBQQYQoDFFDQBB4QIPCwJAIAAgAUGn2pkBQQQQoDFFDQBB+AIPCwJAIAAgAUGr2pkBQQQQoDFFDQBBkgMPCwJAIAAgAUGv2pkBQQQQoDFFDQBBxgUPCwJAIAAgAUGz2pkBQQUQoDFFDQBB3AUPCwJAIAAgAUG42pkBQQUQoDFFDQBBkQcPCwJAIAAgAUG92pkBQQQQoDFFDQBBkgcPCwJAIAAgAUHB2pkBQQUQoDFFDQBBkwcPCwJAIAAgAUHG2pkBQQUQoDFFDQBBlAcPCwJAIAAgAUHL2pkBQQcQoDFFDQBBlQcPCwJAIAAgAUHS2pkBQQQQoDFFDQBBlgcPCwJAIAAgAUHW2pkBQQMQoDFFDQBBlwcPCwJAIAAgAUHZ2pkBQQUQoDFFDQBBmAcPCwJAIAAgAUHe2pkBQQQQoDFFDQBBmQcPCwJAIAAgAUHi2pkBQQUQoDFFDQBBmgcPCwJAIAAgAUHn2pkBQQYQoDFFDQBBmwcPCwJAIAAgAUHt2pkBQQIQoDFFDQBBnAcPCwJAIAAgAUHv2pkBQQIQoDFFDQBBnQcPCwJAIAAgAUHx2pkBQQIQoDFFDQBBngcPCwJAIAAgAUHz2pkBQQcQoDFFDQBBnwcPCwJAIAAgAUH62pkBQQIQoDFFDQBBoAcPCwJAIAAgAUH82pkBQQMQoDFFDQBBoQcPCwJAIAAgAUH/2pkBQQUQoDFFDQBBowcPCwJAIAAgAUGE25kBQQMQoDFFDQBBpAcPCwJAIAAgAUGH25kBQQcQoDFFDQBBpQcPCwJAIAAgAUGO25kBQQMQoDFFDQBBpgcPCwJAIAAgAUGR25kBQQMQoDFFDQBBpwcPCwJAIAAgAUGU25kBQQMQoDFFDQBBqAcPCwJAIAAgAUGX25kBQQUQoDFFDQBBqQcPCwJAIAAgAUGc25kBQQUQoDFFDQBBsQcPCwJAIAAgAUGh25kBQQQQoDFFDQBBsgcPCwJAIAAgAUGl25kBQQUQoDFFDQBBswcPCwJAIAAgAUGq25kBQQUQoDFFDQBBtAcPCwJAIAAgAUGv25kBQQcQoDFFDQBBtQcPCwJAIAAgAUG225kBQQQQoDFFDQBBtgcPCwJAIAAgAUG625kBQQMQoDFFDQBBtwcPCwJAIAAgAUG925kBQQUQoDFFDQBBuAcPCwJAIAAgAUHC25kBQQQQoDFFDQBBuQcPCwJAIAAgAUHG25kBQQUQoDFFDQBBugcPCwJAIAAgAUHL25kBQQYQoDFFDQBBuwcPCwJAIAAgAUHR25kBQQIQoDFFDQBBvAcPCwJAIAAgAUHT25kBQQIQoDFFDQBBvQcPCwJAIAAgAUHV25kBQQIQoDFFDQBBvgcPCwJAIAAgAUHX25kBQQcQoDFFDQBBvwcPCwJAIAAgAUHe25kBQQIQoDFFDQBBwAcPCwJAIAAgAUHg25kBQQMQoDFFDQBBwQcPCwJAIAAgAUHj25kBQQYQoDFFDQBBwgcPCwJAIAAgAUHp25kBQQUQoDFFDQBBwwcPCwJAIAAgAUHu25kBQQMQoDFFDQBBxAcPCwJAIAAgAUHx25kBQQcQoDFFDQBBxQcPCwJAIAAgAUH425kBQQMQoDFFDQBBxgcPCwJAIAAgAUH725kBQQMQoDFFDQBBxwcPCwJAIAAgAUH+25kBQQMQoDFFDQBByAcPCwJAIAAgAUGB3JkBQQUQoDFFDQBByQcPCwJAIAAgAUGG3JkBQQgQoDFFDQBB0QcPCwJAIAAgAUGO3JkBQQUQoDFFDQBB0gcPCwJAIAAgAUGT3JkBQQMQoDFFDQBB1gcPCwJAIAAgAUGW3JkBQQQQoDFFDQBBgsAADwsCQCAAIAFBmtyZAUEEEKAxRQ0AQYPAAA8LAkAgACABQZ7cmQFBBhCgMUUNAEGJwAAPCwJAIAAgAUGk3JkBQQQQoDFFDQBBjMAADwsCQCAAIAFBqNyZAUEDEKAxRQ0AQY3AAA8LAkAgACABQavcmQFBAxCgMUUNAEGOwAAPCwJAIAAgAUGu3JkBQQMQoDFFDQBBj8AADwsCQCAAIAFBsdyZAUEFEKAxRQ0AQZPAAA8LAkAgACABQbbcmQFBBRCgMUUNAEGUwAAPCwJAIAAgAUG73JkBQQUQoDFFDQBBmMAADwsCQCAAIAFBwNyZAUEFEKAxRQ0AQZnAAA8LAkAgACABQcXcmQFBBRCgMUUNAEGawAAPCwJAIAAgAUHK3JkBQQUQoDFFDQBBnMAADwsCQCAAIAFBz9yZAUEFEKAxRQ0AQZ3AAA8LAkAgACABQdTcmQFBBRCgMUUNAEGewAAPCwJAIAAgAUHZ3JkBQQYQoDFFDQBBoMAADwsCQCAAIAFB39yZAUEGEKAxRQ0AQaHAAA8LAkAgACABQeXcmQFBBBCgMUUNAEGiwAAPCwJAIAAgAUHp3JkBQQYQoDFFDQBBpsAADwsCQCAAIAFB79yZAUEGEKAxRQ0AQbDAAA8LAkAgACABQfXcmQFBBRCgMUUNAEGywAAPCwJAIAAgAUH63JkBQQUQoDFFDQBBs8AADwsCQCAAIAFB/9yZAUEGEKAxRQ0AQbnAAA8LAkAgACABQYXdmQFBBhCgMUUNAEG6wAAPCwJAIAAgAUGL3ZkBQQUQoDFFDQBBvsAADwsCQCAAIAFBkN2ZAUEFEKAxRQ0AQcTAAA8LAkAgACABQZXdmQFBBBCgMUUNAEGswQAPCwJAIAAgAUGZ3ZkBQQUQoDFFDQBBkcIADwsCQCAAIAFBnt2ZAUEGEKAxRQ0AQZjCAA8LAkAgACABQaTdmQFBBBCgMUUNAEGcwgAPCwJAIAAgAUGo3ZkBQQUQoDFFDQBBosIADwsCQCAAIAFBrd2ZAUEHEKAxRQ0AQbXCAA8LAkAgACABQbTdmQFBBBCgMUUNAEGQwwAPCwJAIAAgAUG43ZkBQQQQoDFFDQBBkcMADwsCQCAAIAFBvN2ZAUEEEKAxRQ0AQZLDAA8LAkAgACABQcDdmQFBBBCgMUUNAEGTwwAPCwJAIAAgAUHE3ZkBQQQQoDFFDQBBlMMADwsCQCAAIAFByN2ZAUEFEKAxRQ0AQbXDAA8LAkAgACABQc3dmQFBBBCgMUUNAEHQwwAPCwJAIAAgAUHR3ZkBQQQQoDFFDQBB0cMADwsCQCAAIAFB1d2ZAUEEEKAxRQ0AQdLDAA8LAkAgACABQdndmQFBBBCgMUUNAEHTwwAPCwJAIAAgAUHd3ZkBQQQQoDFFDQBB1MMADwsCQCAAIAFB4d2ZAUEGEKAxRQ0AQYDEAA8LAkAgACABQefdmQFBBBCgMUUNAEGCxAAPCwJAIAAgAUHr3ZkBQQUQoDFFDQBBg8QADwsCQCAAIAFB8N2ZAUEFEKAxRQ0AQYXEAA8LAkAgACABQfXdmQFBBRCgMUUNAEGHxAAPCwJAIAAgAUH63ZkBQQQQoDFFDQBBiMQADwsCQCAAIAFB/t2ZAUEFEKAxRQ0AQYnEAA8LAkAgACABQYPemQFBAhCgMUUNAEGLxAAPCwJAIAAgAUGF3pkBQQQQoDFFDQBBj8QADwsCQCAAIAFBid6ZAUEDEKAxRQ0AQZHEAA8LAkAgACABQYzemQFBBRCgMUUNAEGSxAAPCwJAIAAgAUGR3pkBQQYQoDFFDQBBl8QADwsCQCAAIAFBl96ZAUEFEKAxRQ0AQZrEAA8LAkAgACABQdTYoAFBBBCgMUUNAEGdxAAPCwJAIAAgAUGc3pkBQQUQoDFFDQBBnsQADwsCQCAAIAFBod6ZAUEDEKAxRQ0AQaDEAA8LAkAgACABQaTemQFBAxCgMUUNAEGnxAAPCwJAIAAgAUGn3pkBQQIQoDFFDQBBqMQADwsCQCAAIAFBqd6ZAUEDEKAxRQ0AQanEAA8LAkAgACABQazemQFBAxCgMUUNAEGqxAAPCwJAIAAgAUGv3pkBQQMQoDFFDQBBq8QADwsCQCAAIAFBst6ZAUEGEKAxRQ0AQbTEAA8LAkAgACABQbjemQFBAxCgMUUNAEG8xAAPCwJAIAAgAUG73pkBQQQQoDFFDQBBxcQADwsCQCAAIAFBv96ZAUEFEKAxRQ0AQcjEAA8LAkAgACABQcTemQFBAhCgMUUNAEHgxAAPCwJAIAAgAUHG3pkBQQUQoDFFDQBB4cQADwsCQCAAIAFBy96ZAUECEKAxRQ0AQeTEAA8LAkAgACABQc3emQFBAhCgMUUNAEHlxAAPCwJAIAAgAUHP3pkBQQMQoDFFDQBBgsUADwsCQCAAIAFB0t6ZAUEDEKAxRQ0AQYPFAA8LAkAgACABQdXemQFBBBCgMUUNAEGExQAPCwJAIAAgAUHZ3pkBQQQQoDFFDQBBhsUADwsCQCAAIAFB3d6ZAUEEEKAxRQ0AQYfFAA8LAkAgACABQeHemQFBBRCgMUUNAEGVxQAPCwJAIAAgAUHm3pkBQQYQoDFFDQBBl8UADwsCQCAAIAFB7N6ZAUEEEKAxRQ0AQaXFAA8LAkAgACABQfDemQFBBBCgMUUNAEHFxQAPCwJAIAAgAUH03pkBQQUQoDFFDQBBiMYADwsCQCAAIAFB+d6ZAUEFEKAxRQ0AQYnGAA8LAkAgACABQf7emQFBBhCgMUUNAEGKxgAPCwJAIAAgAUGE35kBQQYQoDFFDQBBi8YADwsCQCAAIAFBit+ZAUEEEKAxRQ0AQanGAA8LAkAgACABQY7fmQFBBBCgMUUNAEGqxgAPCwJAIAAgAUGS35kBQQMQoDFFDQBByssADwsCQCAAIAFBld+ZAUEGEKAxRQ0AQeDMAA8LAkAgACABQZvfmQFBBRCgMUUNAEHjzAAPCwJAIAAgAUGg35kBQQYQoDFFDQBB5cwADwtB5swAQYCAxAAgACABQabfmQFBBRCgMRsLoSsCC38CfiMAQcACayIDJAAgASgCDCEEIANBsAFqIAIgASgCCCIFQQAQ5AICQAJAAkACQAJAAkAgAy0AsAFBBEYNACADKQOwASIOQv8Bg0IEUg0BCwJAAkACQCAFRQ0AIANBsAFqIAIgBRCwLSADLQCwAUEERg0AIAMpA7ABIg5C/wGDQgRSDQELIANBiAFqIAEQyRMgAUEQaiEGIAEpAxAhDiADKAKIASADKAKMAUGwraEBQQoQoDENASAOIQ8MBQsgACAONwIADAULQgAhDyAOQgBRDQMgA0GAAWogBhDJE0IBIQ8gAygCgAEgAygChAFB3AAQwC1FDQMgAi0AUA0BDAILIAAgDjcCAAwDCyADQfgAaiAGEMkTIAMoAnggAygCfEG6raEBQQYQux8NAQsgA0HwAGogBhDJEyADQbABaiACQQBBACADKAJwIAMoAnQQyBMCQAJAIAMtALABQQRGDQAgAykDsAEiDkL/AYNCBFINAQsCQAJAIARFDQAgA0GwAWogAiAEELAtIAMtALABQQRGDQAgAykDsAEiDkL/AYNCBFINAQsgAEEEOgAADAMLIAAgDjcCAAwCCyAAIA43AgAMAQsgAi0AUiEHAkACQAJAAkAgAi0ATQ0AIA9QDQACQCAHQf8BcUEBSw0AIANB6ABqIAYQyRMgAygCaCADKAJsQcCtoQFBAxC7Hw0BCwJAIAItAExFDQAgA0HgAGogBhDJEyADKAJgIQgCQCADKAJkIgVBA0sNACAIQX9qIQgDQCAFRQ0CIAggBWohBCAFQX9qIQUgBCwAAEF/TA0DDAALCyAIKAAAQYCBgoR4cQ0BQQQgCEEDakF8cSIEIAhrIAQgCEYbIQQgBUF8aiEFAkADQCAEIAVPDQEgCCAEaigCAEGAgYKEeHENAyAEQQRqIQQMAAsLIAggBWooAABBgIGChHhxDQELAkAgAi0AUEUNACADQdgAaiAGEMkTIAMoAlggAygCXEG6raEBQQYQux8NAQsgA0HQAGogBhDJEyADQbABaiACQQBBACADKAJQIAMoAlQQyBMCQCADLQCwAUEERg0AIAMpA7ABIg5C/wGDQgRSDQILIABBBDoAAAwECyADQcgAaiABEMkTIAMoAkghBiACLQBMIQkCQAJAIAMoAkwiCEEDSw0AIAZBf2ohBCAIIQEDQCABRQ0CIAQgAWohBSABQX9qIQEgBSwAAEF/Sg0ADAQLCyAGKAAAQYCBgoR4cQ0CQQQgBkEDakF8cSIBIAZrIAEgBkYbIQEgCEF8aiEFAkADQCABIAVPDQEgBiABaigCAEGAgYKEeHENBCABQQRqIQEMAAsLIAYgBWooAABBgIGChHhxDQILIAYgCGohCkEAIQsgBiEBQQAhDANAAkAgASAKRw0AAkAgCyAMSiIBIAxFcQ0AIAtBAEcgAXINBAtBJ0EiIAEbIQRB/wEhAQwECyABQQFqIQQCQCABLQAAIgVBIkYNAAJAIAVBJ0YNACAFQdwARg0EIAQhASAFQSBJDQQMAgsgDEEBaiEMIAQhAQwBCyALQQFqIQsgBCEBDAALCyAAIA43AgAMAgsgAyAGNgKwASADIAYgCGoiCzYCtAFBACEFQQAhCgNAAkAgA0GwAWoQhBEiAUEiRg0AAkAgAUEnRw0AIAVBAWohBQwCCyABQYCAxABHDQFBJ0EiIAogBUsbIQRBgICAgHwhAUEAIQwCQCAKIAUgCiAFSRsgCGoiBUENSQ0AIANBsAFqIAUQ1RcgAygCtAEhDCADKAKwASEBCyADIAE2AqgBIANBADYCpAEgAyAMNgKgASADIAs2ApwCIAMgBjYCmAIgA0GBgMQANgKUAiADQaABakEIaiEMIAdB/wFxIgZBAkkiDSAJckEBcSELA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADQZQCahDaLyIBDg4HCQkJCQkJCQEGAwUCBAALIAFB3ABGDQcgAUGAgMQARw0IIAMgDC8BADsBsAEgAyAMQQJqLQAAOgCyASADKAKkASEIIAMoAqABIQYgAy0AqwEhAQwSCyADQaABakHm0aEBQQIQ8gcMDgsgA0GgAWpB6NGhAUECEPIHDA0LIANBoAFqQerRoQFBAhDyBwwMCyADQaABakHs0aEBQQIQ8gcMCwsgA0GgAWpBkaaZAUECEPIHDAoLIANBoAFqQQkQqSsMCQsgBg0GDAcLAkACQCADQZQCahCKLiIBRQ0AIAEoAgBB9QBGDQELIANBoAFqQeTRoQFBAhDyBwwICyADIAMoApwCNgL8ASADIAMpApQCNwL0ASADQfQBahDaLxogA0H0AWoQii4iAUGUppkBEMYuIggNASABQZimmQEQrDpFDQQgAUGcppkBEKw6RQ0EIANBoAFqQdwAEKkrDAQLIAEgBEYNAQJAAkACQAJAAkACQAJAAkACQAJAAkAgAUF/akEPSQ0AIAFB8P//AHFBEEYNASABQWBqQd8ASQ0CIAFBgX9qQYEBSQ0KIAFB2L9/ag4CBAUDCyADQaABakHAp5kBQQMQ8gcgA0EBNgK0ASADQaTXoQE2ArABIANCATcCvAEgA0HjATYC+AEgAyABOgCgAiADIANB9AFqNgK4ASADIANBoAJqNgL0ASADQaABaiADQbABahCHGUUNEEGQw6EBQSsgA0G/AmpBiKWZAUHEp5kBELEYAAsgA0GgAWpBnKeZAUECEPIHIANBATYCtAEgA0Gk16EBNgKwASADQgE3ArwBIANB4wE2AvgBIAMgAToAoAIgAyADQfQBajYCuAEgAyADQaACajYC9AEgA0GgAWogA0GwAWoQhxlFDQ9BkMOhAUErIANBvwJqQYilmQFBsKeZARCxGAALIANBoAFqIAEQqSsMDgsgAUH//QNGDQIgAUGAAUkNAyABQf//A0sNBSAJQQFxDQQgA0GgAWogARCpKwwNCyADQaABakGwppkBQQYQ8gcMDAsgA0GgAWpBtqaZAUEGEPIHDAsLIANBoAFqQbymmQFBBhDyBwwKCyADQaABaiABEKkrDAkLIANBoQI2AqQCIAMgATsBlAEgA0EBNgKIAiADQQE2AvgBIANBxKaZATYC9AEgA0EBNgKAAiADIANBlAFqNgKgAiADQQM6AMwBIANBCDYCyAEgA0IgNwLAASADQoCAgIDAADcCuAEgA0ECNgKwASADIANBsAFqNgKEAiADIANBoAJqNgL8ASADQaABaiADQfQBahCHGUUNCEGQw6EBQSsgA0G/AmpBiKWZAUHMppkBELEYAAsCQAJAIA0NACAJQQFxDQEgA0GgAWogARCpKwwJCyADIAFBgIB8akEKdkGAsANqNgKsASADIAFB/wdxQYC4A3I2ApQBIANB2gA2AqwCIANB2gA2AqQCIANBAjYCiAIgA0ECNgL4ASADQfymmQE2AvQBIAMgA0GUAWo2AqgCIAMgA0GsAWo2AqACIANBAzoA7AEgA0EINgLoASADQqCAgIAQNwLgASADQoCAgIDAADcC2AEgA0ECNgLQASADQQM6AMwBIANBCDYCyAEgA0IgNwLAASADQoCAgIDAADcCuAEgA0ECNgKwASADIANBsAFqNgKEAiADQQI2AoACIAMgA0GgAmo2AvwBIANBoAFqIANB9AFqEIcZRQ0IQZDDoQFBKyADQb8CakGIpZkBQYynmQEQsRgACyADQdoANgKkAiADIAE2ApQBIANBATYCiAIgA0ECNgL4ASADQdymmQE2AvQBIANBATYCgAIgAyADQZQBajYCoAIgA0EDOgDMASADQQg2AsgBIANCIDcCwAEgA0KAgICAwAA3ArgBIANBAjYCsAEgAyADQbABajYChAIgAyADQaACajYC/AEgA0GgAWogA0H0AWoQhxlFDQdBkMOhAUErIANBvwJqQYilmQFB7KaZARCxGAALIAsNAiADQaABaiABEKkrDAYLIANB9AFqENovGiADQfQBahCKLiEBDAILIANBoAFqQdwAEKkrIANBoAFqIAQQqSsMBAsgA0GgAWpBnKeZAUECEPIHIANBATYCtAEgA0Gk16EBNgKwASADQgE3ArwBIANB4wE2AvgBIAMgAToAoAIgAyADQfQBajYCuAEgAyADQaACajYC9AEgA0GgAWogA0GwAWoQhxlFDQNBkMOhAUErIANBvwJqQYilmQFBoKeZARCxGAALAkACQAJAAkACQCABRQ0AIAEoAgBBIHJB5ABGDQELIAgNASADQaABakHcABCpKwwGCyADQcAAakEIEPsiIANBADYCuAEgAyADKQNANwKwASADQbABakHcABCyDCADQbABakH1ABCyDCAIDQEMAgsgA0GgAWpB5NGhAUECEPIHDAQLIANBsAFqQfsAELIMCyADQbABaiABKAIAELIMIANB9AFqENovGkEDIQUCQAJAAkACQAJAAkADQAJAIAUNACAIRQ0CDAMLAkAgA0H0AWoQ2i8iAUGAgMQARg0AAkAgAUFQakEKSQ0AIAFBn39qQQZJDQAgAUG/f2pBBUsNAQsgA0GwAWogARCyDCAFQX9qIQUMAQsLIAgNAQwCC0EGIQdBAiEBIAMoArgBIQogAygCtAEhBQwCCyADQbABakH9ABCyDCAFDQBBAyEBIAMoArQBIQUgAygCuAEiCkF/aiIHQQNPDQEMAwsgA0GgAWpB5NGhAUECEPIHIAMoArQBIQUMAQsCQAJAIAogAU0NACAFIAFqLAAAQb9/TA0DDAELIAogAUcNAgsCQAJAIAogB00NACAFIAdqLAAAQb9/TA0DDAELIAogB0cNAgsgA0GgAmogBSABaiAHIAFrQRAQ6AcCQCADLQCgAg0AAkAgAygCpAIiAUH//wNLDQACQCABQYDwA3FBgLADRg0AIANBoAFqQeTRoQFBAhDyBwwDCyADQaABakHcABCpKwwCCyADQaABaiAFIAoQ8gdBB0EFIAgbIQEDQCABRQ0CIAFBf2ohASADQZQCahDaLxoMAAsLIANBoAFqQeTRoQFBAhDyBwsgAygCsAEgBRD2OQwDCyAFIAogASAHQaCmmQEQiDcACwJAIANBlAJqEIouIgFFDQAgASgCAEFQakEKSQ0BCyADQaABakGLppkBQQIQ8gcMAQsgA0GgAWpBjaaZAUEEEPIHDAALCyAKQQFqIQoMAAsLIANBngFqIAMtALIBOgAAIAMgCDYCmAEgAyAGNgKUASADIAMvAbABOwGcASADIAE6AJ8BAkAgAi0AUEUNACADQThqIANBlAFqENEfIAMoAjghBSADKAI8IQEgA0EINgKgASADIAE2ApACIAMgBTYCjAJBACEIIANBADYChAIgAyAFIAFqNgKAAiADIAU2AvwBIANBAjYC9AEgAyADQaABajYCiAIgA0EwaiADQfQBakEIahDFCiADIAMoAjQ2AvgBIAMgAygCMCIGNgL0AQJAAkACQAJAIAZBAXFFDQACQAJAIAENAEGAgICAfCEGQQAhAQwBCwJAIAFBDUkNACADQbABaiABENUXIAMoArABIQYgAygCtAEiCCAFIAEQ3woaDAELIANBADYAtwEgA0IANwOwASADIAFBwAFyOgC7ASADQbABaiAFIAEQ3woaIAMoArgBIQYgAygCtAEhASADKAKwASEICyADIAY2ApwCIAMgATYCmAIgAyAINgKUAiADQbABakEYaiADQfQBakEYaikCADcDACADQbABakEQaiADQfQBakEQaikCADcDACADQbABakEIaiIHIANB9AFqQQhqKQIANwMAIAMgAykC9AE3A7ABIANBADYC0AEDQCADKAKwASEBIANBAjYCsAECQAJAIAFBAkYNACADKAK0ASEFDAELIANBKGogBxDFCiADKAIsIQUgAygCKCEBCyABRQ0CIAMgAygC0AFBAWoiATYC0AEgA0EgaiADQZQCahDXJwJAIAEgBWoiAUUNAAJAIAMoAiQiBSABTQ0AIAMoAiAgAWosAABBv39KDQEMBgsgBSABRw0FCyADLQCfAiEFIAMoApgCIQggA0GUAmpBARCnCSADQRhqIANBlAJqEJcjIAMoAhggAWoiBkEBaiAGIAggBUHAAGpB/wFxIgpBDCAKQQxJGyAFQf4BRhsiBSABaxDxPRogBkHcADoAACAFQQFqIQECQCADLQCfAkH+AUYNACABQQtLDQEgAyABQcABcjoAnwIMAQsgAyABNgKYAgwACwsgA0H/AToAqwIgAyABNgKkAiADIAU2AqACDAELIANBoAJqQQhqIANBlAJqQQhqKAIANgIAIAMgAykClAI3A6ACCyADQRBqIANBoAJqENEfIANBlAJqIAMoAhAgAygCFEHDraEBQQRBx62hAUEHEMASIANBoAFqIAMoApgCIgggAygCnAJBzq2hAUEDQdGtoQFBBhDAEgJAAkACQAJAIAMoAqABIgZB/v//B0sNACAGDQFBACEBQYCAgIB8IQogAygCpAEhB0EAIQUMAgsgAygCpAEhBwJAAkBB////dyADKAKoASIBQRAgAUEQSxsiBUGAgIBwciABQf7//wdLGyIKQf///3dGDQBBACEMAkAgBUF/c0EfdiAFQeCkmQEQqCsiBUEASA0AIANBADYCuAEgAyAFNgK0AUEBIQwLIAMgDDYCsAEgA0H0AWogA0GwAWpB4M2AARDoIiADKAL0ASIFIAUg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IApHDQQLIANBKGogAkEAQQAgByAMaiANIAxrEMUTAkAgAy0AKEEERg0AIAshBiANIQwgAykDKCIXQv8Bg0IEUg0BDAILIAshBiANIQwMAQsLIAAgFzcCACADQegAahCmDAwCC0Hsg6EBEPQrAAsgByAKIAwgDUHsg6EBEIg3AAsgECAHEPY5DBgLIAcNCSADQdQAakHcABCwDCADQdQAakHuABCwDAwTCwJAIApBAXENAEH7ACEMDBILIANB1ABqQdwAELAMIANB1ABqQfsAELAMDBMLIANBxABqEIkuIgxFDQogDCgCAEH7AEcNCiADQdQAakHcABCwDCADQdQAakEkELAMDBELIANBADYCeCADQQE2AmwgA0HwoJkBNgJoIANCBDcCcAJAIANB1ABqIANB6ABqEJQ1RQ0AQZDDoQFBKyADQd8GakGEn5kBQfigmQEQsRgACyALQYCAxABGDRAMAQsCQAJAIA5Bf2pBD0kNACAOQWBqQd8ASQ0BIANBATYCbCADQeigmQE2AmggA0IBNwJ0IANB5AE2AiwgAyADQShqNgJwIAMgA0HgAGo2AiggA0HUAGogA0HoAGoQlDUNBCALQYCAxABGDREMAgsgA0EBNgJsIANBwKGZATYCaCADQgE3AnQgA0HkATYCLCADIANBKGo2AnAgAyADQeAAajYCKCADQdQAaiADQegAahCUNQ0CIAtBgIDEAEYNEAwBCyADIA42AmQgA0EBNgJsIANBpNehATYCaCADQgE3AnQgA0HCADYCLCADIANBKGo2AnAgAyADQeQAajYCKCADQdQAaiADQegAahCUNQ0DIAtBgIDEAEYNDwsgA0HUAGogDBCwDAwOC0GQw6EBQSsgA0HfBmpBhJ+ZAUHIoZkBELEYAAtBkMOhAUErIANB3wZqQYSfmQFBoKGZARCxGAALQZDDoQFBKyADQd8GakGEn5kBQbChmQEQsRgACyAMDg0HCAgICAgICAQBAAYFAgsgA0HUAGpBChCwDAwJCyADQdQAakEJELAMDAgLIAxBJEcNBQsgA0HUAGpBJBCwDEEBIQoMBgsgA0HUAGpB5tGhAUECEPguDAULIANB1ABqQejRoQFBAhD4LgwECyADQdQAakGRppkBQQIQ+C4MAwsCQAJAIANBxABqEIkuIgxFDQAgDCgCAEFPakEJSQ0BCyADQdQA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dCAOIBRqakHY9YMBEOowKAIAIQgMBgsgDSgCACAJKAIAIA4gFGogC0ECdGpBAWpByPWDARDqMCgCACEIDAULIA0oAgAgCSgCACAOIBRqIAtBAnRqQQJqQbj1gwEQ6jAoAgAhCAwECyANKAIAIAkoAgAgCkEBakGI9oMBEOowKAIAIQoMAAsLIAQgEUHwqIABEKEbAAsgDSgCACAJKAIAIApBAmpB6PWDARDqMCgCACEICwJAAkACQCAIIAAoArQCTQ0AIAQhAQwBCyACIAg2AhQgAkEBNgIQIAhFDQUCQAJAAkAgCCAAKAK4AksNACACQoGAgIAQNwIYIAAoAighDCADQcgAaiAAQQRqKAIAIABBCGooAgAgCEGo9oMBEMssIAMoAkwiCEUNAQJAAkAgAygCSCIHLQAAIgFB/wFGDQAgASABQQJ2aiABQQNxQQBHakECaiEBDAELIAxBAmohAQsgASAITw0CAkACQCAHIAFBAnRqKAIAIgxBf0wNAAJAIAFBAWoiASAITw0AIAcgAUECdGooAgAhAQwCCyABIAhB0PCDARChGwALIAxB/////wdxIQELIANB+ABqIAEgBEEBaiIIIABBEGooAgAgAEEUaigCACABQZj2gwEQ6jAoAgBrIAgQ7x4gAkEBNgIAIAYgAykCeDcCACAGQQhqIANB+ABqQQhqKAIANgIADAgLIANB+ABqIA8oAgAgD0EEaigCACASIBEgBCAFEPUuIANBwABqIAMoAnggAygCfBD0MiADKAJARQ0HIAMoAkQiBCACKAIgIgFNDQIMAwtBAEEAQfDwgwEQoRsACyABIAhBwPCDARChGwALIAFBAWohBAsgAiAENgIgDAALCyACQQA2AhggAiAINgIUIAJBATYCECACIAQ2AiAgAkEANgIACyAEIAUgBCAFSxshESAEIAEoAgwiFSAEIBVLGyESIABBLGohECABKAIIIQ8gAEEIaiEJIABBBGohDSABLQAQQQFxIQ4CQANAAkAgBCARRw0AIAIgCDYCFCACQQE2AhAMAwsCQAJAAkAgBCASRg0AIBAgDyAEai0AAGotAAAiAUECaiEFIAghCgNAAkACQAJAAkACQAJAAkACQCANKAIAIAkoAgAgCkH49IMBEOowKAIAIghB/wFxQYJ+ag4CAQIACyADQRhqIA0oAgAgCSgCACAKQQJq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6AFqQQhqKQMANwMAIAJByAFqQRBqIhAgAkHoAWpBEGopAwA3AwAgAkHIAWpBGGoiESACQegBakEYaikDADcDACACIAIpA+gBNwPIASACQcABaiARKQMANwIAIAJBuAFqIBApAwA3AgAgAkGwAWogBCkDADcCACACIAIpA8gBNwKoASAJQSBqIAJBpAFqQSBqKAIANgIAIAlBGGogAkGkAWpBGGopAgA3AgAgCUEQaiACQaQBakEQaikCADcCACAJQQhqIAJBpAFqQQhqKQIANwIAIAkgAikCpAE3AgAgAiAPNgKQAQwFCyACQegBahCiD0EAIQ8LAkACQAJAAkAgDCgCAEF7ag4DAQMCAAsgDBCUCwwECyAMKQMIIhpCA4NCAFINAyACIBqnIg82AgggAkEIahD1ByAPIA8oAgAiEEF/ajYCACAQQQFHDQMgDyAPKAIgENMvDAMLIAxBCGoQ/BoMAgsgD0UNASAMQQhqEKIPIAwoAigiDxDbASAPQcAAQQgQ7hwMAQsACyAMQfAAQQgQ7hwLAkAgBSgCACIPRQ0AIA8QugMgD0EgQQgQ7hwLIAUgBDYCACACQQhqQQhqIAJBOGpBCGopAwA3AwAgAkEIakEQaiACQThqQRBqKQMANwMAIAJBCGpBGGogAkE4akEYaikDADcDACACQQhqQSBqIAJBOGpBIGopAwA3AwAgAkEIakEoaiACQThqQShqKQMANwMAIAEgASgCEEEBajYCECACIAIpAzg3AwgMBAsCQCAMKAIAQXtqQQNJDQAgDBCUCwsgDEHwAEEIEO4cIAIoAmwhBAsgAkE4akEIaiAIQQhqKQMANwMAIAJBOGpBEGogCEEQaikDADcDACACQThqQRhqIAhBGGopAwA3AwAgAkE4akEgaiAIQSBqKQMANwMAIAJBOGpBKGogCEEoaikDADcDACACIAgpAwA3AzgLIAEgBkEBajYCECACQQhqQQhqIAJBOGpBCGopAwA3AwAgAkEIakEQaiACQThqQRBqKQMANwMAIAJBCGpBGGogAkE4akEYaikDADcDACACQQhqQSBqIAJBOGpBIGopAwA3AwAgAkEIakEoaiACQThqQShqKQMANwMAIAIgAikDODcDCAsgACAENgIEIAAgAikDCDcDCCAAQRBqIAJBEGopAwA3AwAgAEEYaiACQQhqQRBqKQMA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ATcCZCADIAUgAkHYAGoQ/iIhAwJAIAEQsBYiBUUNACAFKAIAQSRHDQAgASABKQMYNwNQIAEoAgAhBSABQSU2AgAgBUEkRw0FIAEgASgCBBDjEwsgAkECOgCKAQwBCyABIAEpAxg3A1AgASgCACEDIAFBJTYCACACQcgEakEMaiABQQxqKQIANwIAIAJByARqQRRqIAFBFGooAgA2AgAgAiABKQIENwLMBCACIAM2AsgEIAJByARqEOEQIAJBsAFqEOEQIAJByARqIAEQhgggAigC0AQhAwJAIAIpA8gEIg9QDQAgAiACKALUBCIGNgKcASACIAM2ApgBIAIgDzcDkAFBACEEIAEtANQCQQJHDQ8gASgCzAIhByACQbABaiABEO8CIAJBsAFqIAdBAXIQ4Q8gAkHYAGpBEGpBACkDsLGZASIPNwMAIAJB2ABqQQhqQQApA6ixmQEiEDcDACACQQApA6CxmQEiETcDWAJAAkACQAJAIAJBsAFqELAWIAJB2ABqEMU1DQAgAkHYAGoQ4RAgAkGEAmogAkHMAWogAigCsAFBJUYiCBsoAgAhBCACQYACaiACQcgBaiAIGygCACEIIAJB3AdqIAJBsAFqEN8aIAJByARqQRBqIA83AwAgAkHIBGpBCGogEDcDACACQQE2AlwgAkGk16EBNgJYIAJCATcCZCACQaICNgKICCACIBE3A8gEIAIgAkGECGo2AmAgAiACQYwIajYChAggAiACQcgEajYCjAggAkHoB2ogAkHYAGoQ5iIgAkHIBGoQ4RAgAkH8B2ogAkHcB2pBCGooAgA2AgAgAiACKQLcBzcC9AcgCCAEIAggBEkbIAggBCAIIARLGyACQegHahD+IiEEIAJBsAFqELAWIggNAQwRCyACQcgEakEMaiACQbABakEMaikCADcCACACQcgEakEUaiACQbABakEUaigCADYCACACKAKwASEEIAJBJTYCsAEgAiACKQK0ATcCzAQgAiACKQPIATcDgAIgAiAENgLIBCACQcgEahDhECACQdgAahDhECACQTBqIAJBsAFqEOoBIAIgAigCNCIENgJcIAIgAigCMCIINgJYIAItAP8DQQhxDREgAkHYBGpBACkDuOCZATcDACACQdAEakEAKQOw4JkBNwMAIAJBACkDqOCZATcDyAQgAkGwAWoQsBYgAkHIBGoQxTUhCSACQcgEahDhECAJRQ0RIAJB3ABqIQQgCA0BIAQQggkMAgsgCCgCAEEkRw0PIAIgAikDyAE3A4ACIAIoArABIQggAkElNgKwASAIQSRHDQUgAkGwAWogAigCtAEQ4xMMDwsgBBDUCQtBACEEQQAhCAwOCyACQQI6AIoBCyACIAM2AlggAiADNgLMBEEUIQEMDgsgAkHQAGogARA1IAIoAlQhBSACKAJQDQkgAiAFNgKECCABQQRqIQMgBEEARyEKIAJByARqQQRyIQQgAkGwAWpBEGohCCACQbABakEIaiEHA0ACQAJAIAEQuTINACAIQQApA9jfmQE3AwAgB0EAKQPQ35kBNwMAIAJBACkDyN+ZATcDsAEgARCwFiACQbABahDFNQ0BIAJBsAFqEOEQC0EAIQMMEAsgBCADKQIANwIAIAEgASkDGDcDUCABKAIAIQYgAUElNgIAIARBCGoiCSADQQhqIgspAgA3AgAgBEEQaiIMIANBEGoiDSgCADYCACACIAY2AsgEIAJByARqEOEQIAJBsAFqEOEQIAhBACkDiOCZASIPNwMAIAdBACkDgOCZASIQNwMAIAJBACkD+N+ZASIRNwOwAQJAAkACQCABELAWIAJBsAFqEMU1DQAgAkGwAWoQ4RAgAkHIAGogARCxAyACKAJMIQ4CQAJAIAIoAkgNACACIA42AqQBIAggDzcDACAHIBA3AwAgAiARNwOwASABELAWIAJBsAFqEMU1DQMgAiAFNgKECCACQbABahDhECACQcAAaiABEPsgIAIoAkQhBSACKAJAIQMgAkHoB2ogARDfGiACQdgEakEAKQOI4JkBNwMAIAJByARqQQhqQQApA4DgmQE3AwAgAkEBNgK0ASACQaTXoQE2ArABIAJCATcCvAEgAkGiAjYClAEgAkEAKQP435kBNwPIBCACIAJBkAFqNgK4ASACIAJB3AdqNgKQASACIAJByARqNgLcByACQdgAaiACQbABahDmIiACQcgEahDhECACQewAaiACQegHakEIaigCADYCACACIAIpAugHNwJkIAMgBSACQdgAahD+IiEFAkAgARCwFiIDRQ0AIAMoAgBBJEcNACABIAEpAxg3A1AgASgCACEDIAFBJTYCACADQSRHDQUgASABKAIEEOMTCyACQaQBahCCCQwBCyACIAU2AoQIIA4hBQsgAkGECGoQggkMDQsgBCADKQIANwIAIAEgASkDGDcDUCABKAIAIQYgAUElNgIAIAkgCykCADcCACAMIA0oAgA2AgAgAiAGNgLIBCACQcgEahDhECACQbABahDhECAFEJAeIQYgASgCVCEJQeAAQQgQzTMiCyAFNgIEIAtBBjYCACALIAYgCSAGIAlLGzYCDCALIAYgCSAGIAlJGzYCCCALIQUMAgsgBCADKQIANwIAIAEgASkDGDcDUCABKAIAIQYgAUElNgIAIAkgCykCADcCACAMIA0oAgA2AgAgAiAGNgLIBCACQcgEahDhECACQbABahDhECAFEJAeIQkgASgCVCELQeAAQQgQzTMiBiAKOgAUIAYgDjYCCCAGIAU2AgQgBkEPNgIAIAYgCSALIAkgC0sbNgIQIAYgCSALIAkgC0kbNgIMIAYhBQwBCwtBlM6hAUEoQdjhmQEQ0ycAC0GUzqEBQShB2OGZARDTJwALQZTOoQFBKEHY4ZkBENMnAAsgARDvMSEFIAJB2ABqQRBqIA83AwAgAkHYAGpBCGogEDcDACACIBE3A1gCQAJAIAEQsBYgAkHYAGoQxTUNACACQdgAahDhECACQSBqIAEQ+yAgAigCJCEFIAIoAiAhAyACQZABaiABEN8aIAJBwAFqQQApA4CqmQE3AwAgAkGwAWpBCGpBACkD+KmZATcDACACQQE2AlwgAkGk16EBNgJYIAJCATcCZCACQaICNgKICCACQQApA/CpmQE3A7ABIAIgAkGECGo2AmAgAiACQcAEajYChAggAiACQbABajYCwAQgAkHoB2ogAkHYAGoQ5iIgAkGwAWoQ4RAgAkH8B2ogAkGQAWpBCGooAgA2AgAgAiACKQKQATcC9AcgAyAFIAJB6AdqEP4iIQMgARCwFiIFRQ0FIAUoAgBBJEcNBSABIAEpAxg3A1AgASgCACEFIAFBJTYCACAFQSRHDQEgASABKAIEEOMTDAULIAEgASkDGDcDUCABKAIAIQMgAUElNgIAIAJBsAFqQQxqIAFBDGopAgA3AgAgAkGwAWpBFGogAUEUaigCADYCACACIAEpAgQ3ArQBIAIgAzYCsAEgAkGwAWoQ4RAgAkHYAGoQ4RBBAiEEDAMLQZTOoQFBKEHY4ZkBENMnAAsgARDvMSEFIAJB2ABqQRBqQQApA/iqmQEiDzcDACACQdgAakEIakEAKQPwqpkBIhA3AwAgAkEAKQPoqpkBIhE3A1gCQAJAIAEQsBYgAkHYAGoQxTUNACACQdgAahDhECACQRhqIAEQ+yAgAigCHCEFIAIoAhghAyACQaQBaiABEN8aIAJBsAFqQRBqIA83AwAgAkGwAWpBCGogEDcDACACQQE2AlwgAkGk16EBNgJYIAJCATcCZCACQaICNgKICCACIBE3A7ABIAIgAkGECGo2AmAgAiACQcAEajYChAggAiACQbABajYCwAQgAkHoB2ogAkHYAGoQ5iIgAkGwAWoQ4RAgAkH8B2ogAkGkAWpBCGooAgA2AgAgAiACKQKkATcC9AcgAyAFIAJB6AdqEP4iIQMgARCwFiIFRQ0EIAUoAgBBJEcNBCABIAEpAxg3A1AgASgCACEFIAFBJTYCACAFQSRHDQEgASABKAIEEOMTDAQLIAEgASkDGDcDUCABKAIAIQMgAUElNgIAIAJBsAFqQQxqIAFBDGopAgA3AgAgAkGwAWpBFGogAUEUaigCADYCACACIAEpAgQ3ArQBIAIgAzYCsAEgAkGwAWoQ4RAgAkHYAGoQ4RBBASEEDAILQZTOoQFBKEHY4ZkBENMnAAsgARDvMSEFIAJB2ABqQRBqIA83AwAgAkHYAGpBCGogEDcDACACIBE3A1gCQCABELAWIAJB2ABqEMU1DQAgAkHYAGoQ4RAgAkEQaiABEPsgIAIoAhQhBSACKAIQIQMgAkHcB2ogARDfGiACQcABakEAKQPgqpkBNwMAIAJBsAFqQQhqQQApA9iqmQE3AwAgAkEBNgJcIAJBpNehATYCWCACQgE3AmQgAkGiAjYCiAggAkEAKQPQqpkBNwOwASACIAJBhAhqNgJgIAIgAkHABGo2AoQIIAIgAkGwAWo2AsAEIAJB6AdqIAJB2ABqEOYiIAJBsAFqEOEQIAJB/AdqIAJB3AdqQQhqKAIANgIAIAIgAikC3Ac3AvQHIAMgBSACQegHahD+IiEDIAEQsBYiBUUNAiAFKAIAQSRHDQIgASABKQMYNwNQIAEoAgAhBSABQSU2AgAgBUEkRw0EIAEgASgCBBDjEwwCCyABIAEpAxg3A1AgASgCACEDIAFBJTYCACACQbABakEMaiABQQxqKQIANwIAIAJBsAFqQRRqIAFBFGooAgA2AgAgAiABKQIENwK0ASACIAM2ArABIAJBsAFqEOEQIAJB2ABqEOEQQQAhBAsgAkEIaiABEH0gAigCDCEDIAIoAggNACACQdsEaiACQY4Iai0AADoAACACIAQ6ANgEIAIgAi8AjAg7ANkEIAIgBSABKAJUIgEgBSABSxs2AtQEIAIgBSABIAUgAUkbNgLQBEEOIQEMAQtBFCEBCyACIAE2AsgEIAIgAzYCzAQgAiACQcgEahDnJyACKAIEIQUgAigCACEDDAYLQZTOoQFBKEHY4ZkBENMnAAtBASEDDAQLQQEhCAsgAiAENgLEBCACIAg2AsAEAkACQCAIDQAgBA0BCwJAIAhBAXFFDQAgAkHEBGoQ1AkLIAJBsAFqELgXQQAhBAwBCyACQcgEaiACQbABakGQAxDfChogARC4FyABIAJByARqQZADEN8KIgggCCgCzAJBfnEgB0EBcXIQ4Q8LIAJB6ABqIAJBkAFqEP4XIAJBhwFqQQA2AAAgAkEANgKEASACIAQ2AoABIAIgBjYCZCACIAM2AmAgAiAFIAEoAlQiASAFIAFLGzYCXCACIAUgASAFIAFJGzYCWCACQbABakEEaiACQdgAakE4EN8KGiACQcgEakEEciACQbABakE8EN8KGkEMIQELIAIgATYCyAQgAkEoaiACQcgEahDnJyACKAIsIQUgAigCKCEDCyAAIAU2AgQgACADNgIAIAJBkAhqJAALiSQCFH8CfiMAQZABayIEJABBACEFIANBADYCAAJAAkACQAJAIAIoAhAiBiACKAIUIgdLDQACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAIoAgAiCEF/akECSQ0AQeiBhAEgAEHAAGogAC0ATEEDRhsiCS0ADCIKQQJHDQELAkAgAygCDA0AIAMgBjYCHCAEQeAAaiACEJsjIAQoAmQhCiAEKAJgIQsCQCAELQBoQQFGDQBBAiEJDA8LIAQtAGkhBSAAQdgEaiIJQdDlgwEQnzpFDQwMDQsgAygCECELAkACQCADKAIURQ0AIAtBgICAwABxRQ0DIAMoAhgiCSAAIAEgCxC/KyIGKAIAIAYoAgQQnCNJDQELIAMgAygCHEEBaiIGNgIcQQAhBSAGIAdNDRQMFwsgA0EBNgIUIAMgCUEBajYCGEEAIQVBACEGAkAgACgC+AQoAtQCQQFGDQAgACABIAsQvysiASgCACABKAIEIAkQ7RghBgsgAyAGNgIEIANBATYCACADIAMoAhw2AggMFgsgAigCBCEMIAAoAvgEIg0oArQCIQ4CQCADKAIMDQAgAyAGNgIcIARB4ABqIAIQmyMgBCgCZCEPIAQoAmAhCwJAIAQtAGhBAUYNAEECIRAMBgsgBC0AaSEFIABB2ARqIhBB0OWDARCfOkUNAwwECyADKAIQIQsCQAJAIAMoAhRFDQAgC0GAgIDAAHFFDQMgAygCGCIQIAAgASALEL8rIgYoAgAgBigCBBCcI0kNAQsgAyADKAIcQQFqIgY2AhxBACEFIAYgB00NCgwWCyADQQE2AhQgAyAQQQFqNgIYQQAhBUEAIQYCQCANKALUAkEBRg0AIAAgASALEL8rIgEoAgAgASgCBCAQEO0YIQYLIAMgBjYCBCADQQE2AgAgAyADKAIcNgIIDBULQdzUgwFBH0H81IMBENMnAAtB3NSDAUEfQfzUgwEQ0ycACyAQIAUQiiRFDQAgBCAFrUIghkIEhDcDSAwCCyAAIAVqQdgAai0AACEQCyAQQf8BcSEFAkACQAJAAkAgCw4DAgABAgsgBUEGaiEFDAELAkAgAC0AUUEBcQ0AIAQgD61CIIZCAoQ3A0gMAwsCQCAPIA0oAtQCTw0AIA9BBmwgBWpBDGohBQwBCyAAEPQgIQUMAQsgASgCiAEiESAFTQ0CIAEoAoQBIAVBAnRqKAIAIQULAkAgBUEASA0AIARBBTYCSCAEIAU2AkwMBAsgBCABNgJ8IAQgADYCeCAEQcgAaiAEQfgAaiALIA8gEBCZASAEKAJIQQVGDQMLIAQpA0giGEIgiKchAwJAAkAgGKciBUF9aiIBQQIgAUECSRsOAwoAAQoLIAZFDQIgAyAGQX9qEL0rIQUMEAsgBSADELgrIQUMDwsgBSARQezVgwEQoRsAC0Go1IMBQSRBzNSDARCqHgALIAQoAkwhCyADKAIcIQYLAkAgASgCsAFBAXFFDQAgASABKAK0ASIFIAEoArgBIhBrIBAgBWsgBSAQSxsgASgCcGo2AnALIAEgBjYCuAEgASAGNgK0ASABQQE2ArABAkACQCAGIAdJDQAgAigCDCEJDAELQQAgCSAKQQJGGyERIABB2ABqIRIgAEHYBGohEyAHQQFqIRQgAEHYAmohECAMQQZsQQxqIRUgDK1CIIZCAoQhGCACKAIMIQkgAigCCCEKIAAtAFFBAXEhFgJAA0ACQAJAAkACQAJAAkACQAJAAkACQAJAIAYgCU8NAAJAAkACQCABKAJ8IgUgC0H///8/cSAQIAogBmotAAAiD2otAABqIgZNDQACQCABKAJ4IAZBAnRqKAIAIgVBf0oNACAEIAE2AmQgBCAANgJgIARBwABqIARB4ABqIAsgD0EIdBCNASAEKAJAQQFxDQMgBCgCRCEFCwJAIAVB////P0sNACADKAIcIQsMDAsgAyAFNgIQIANBATYCDCAFQYCAgIABcUUNCiAEQcgAaiARKAIAIBEoAgQiBigCCEF/akF4cWpBCGogCiAJIAMoAhwgByAGKAIgERMAIAQoAkhBAUcNGiAEKAJMIgYgAygCHCILTQ0LIAMgBjYCHCAORQ0MIAQgBjYCWCAEIAc2AlwgCSAHSQ0BIBQgBkkNAQJAIAkgBkF/aiIPSw0AQQIhCwwHCyAKIA9qLQAAIQUgE0HQ5YMBEJ86RQ0EDAULIAYgBUGI1IMBEKEbAAsgBEECNgJkIARBpIKhATYCYCAEQgI3AmwgBEEHNgKEASAEQYMBNgJ8IAQgCTYCiAEgBCAEQfgAajYCaCAEIARBiAFqNgKAASAEIARB2ABqNgJ4IARB4ABqQbSCoQEQrS4ACyADKAIcENstIQUMGQsgBiAJQZjYgwEQoRsACyATIAUQiiRFDQAgBCAFrUIghkIEhDcDeAwCCyASIAVqLQAAIQsLIAtB/wFxIQUCQAJAAkACQCAIDgMCAAECCyAFQQZqIQUMAQsCQCAWDQAgBCAYNwN4DAMLAkAgDCANKALUAk8NACAVIAVqIQUMAQsgABD0ICEFDAELIAEoAogBIhcgBU0NAiABKAKEASAFQQJ0aigCACEFCwJAIAVBAEgNACAEQQU2AnggBCAFNgJ8DAMLIAQgATYCZCAEIAA2AmAgBEH4AGogBEHgAGogCCAMIAsQmQEgBCgCeEEFRg0CCyAEKQN4IhhCIIghGQJAAkACQCAYpyIDQX1qIgFBAiABQQJJGw4DAAECAAsgBhDbLSEFDBYLIBmnIA8QvSshBQwVCyADIBmnELgrIQUMFAsgBSAXQezVgwEQoRsACyAEKAJ8IQsgAygCHCEGDAMLAkACQAJAIAVBgICAwABxDQAgBUGAgICABHENASAFQYCAgIACcUUNAiABIAMoAhwQjCQCQCADKAIcIgEgCU8NACAKIAFqLQAAIAEQvSshBQwVCyABIAlBuNiDARChGwALIANCgYCAgBA3AhQgAyAAIAEgBRDcLTYCBCADQQE2AgAgAyADKAIcIgY2AgggASAGEIwkDBELIAEgAygCHBCMJAwQCyAEQQE2AmQgBEHA14MBNgJgIARCADcCbCAEIARBjAFqNgJoIARB4ABqQajYgwEQrS4ACyADIAtBAWoiBjYCHCABKAKwAUUNAyABIAY2ArgBCyAFIQsLIAYgB08NAgwACwtBjNWDAUEfQazVgwEQqh4ACwJAAkACQAJAAkACQAJAAkACQAJAIAcgCUkNACABKAJ8IgIgAC0A1wRBAWoiBSALQf///z9xaiIGTQ0GAkAgASgCeCAGQQJ0aigCACIGQX9KDQAgBCABNgJkIAQgADYCYCAEQThqIARB4ABqIAsgBUEQdEEBchCNASAEKAI4QQFxDQIgBCgCPCEGC0EAIQUgBkGAgIDAAHENAgwICyABKAJ8IgUgC0H///8/cSAAIAIoAgggB2otAAAiAmpB2AJqLQAAaiIGTQ0GAkAgASgCeCAGQQJ0aigCACIGQX9KDQAgBCABNgJkIAQgADYCYCAEQTBqIARB4ABqIAsgAkEIdBCNASAEKAIwQQFxDQMgBCgCNCEGCyAGQYCAgMAAcQ0DQQAhBSAGQYCAgIACcUUNBCACIAcQvSshBQwECyAJENstIQUMBwsgACABIAYQ3C0hCyADIAk2AgggAyALNgIEIANBATYCAAwFCyAHENstIQUMBQsgACABIAYQ3C0hBSADIAc2AgggAyAFNgIEIANBATYCAEEAIQULIAYhCwwDCyAGIAJBmNSDARChGwALIAYgBUGI1IMBEKEbAAsgBiELCyADIAs2AhAgA0EBNgIMAkAgAygCAEUNACADQoGAgIAQNwIUCyABKAKwASEDIAFBADYCsAECQCADQQFxRQ0AIAEgASgCcCABKAK0ASIDIAdrIAcgA2sgAyAHSxtqNgJwDAwLQbzVgwFBH0Hc1YMBEKoeAAsgBEEgaiAJIAVBA3ZBEHFqIgkpAwAgCUEIaikDACAFQf8AcRDDHCAEKQMgQgGDUA0AIAQgBa1CIIZCBIQ3A0gMAgsgACAFakHYAGotAAAhCQsgCUH/AXEhBQJAAkACQAJAIAsOAwIAAQILIAVBBmohBQwBCwJAIAAtAFFBAXENACAEIAqtQiCGQgKENwNIDAMLAkAgCiAAKAL4BCgC1AJPDQAgCkEGbCAFakEMaiEFDAELIAAQ9CAhBQwBCyABKAKIASIIIAVNDQMgASgChAEgBUECdGooAgAhBQsCQCAFQQBIDQAgBEEFNgJIIAQgBTYCTAwFCyAEIAE2AnwgBCAANgJ4IARByABqIARB+ABqIAsgCiAJEJkBIAQoAkhBBUYNBAsgBCkDSCIYQiCIpyEDAkACQCAYpyIFQX1qIgFBAiABQQJJGw4DAgABAgsgBkUNAyADIAZBf2oQvSshBQwICyAFIAMQuCshBQwHCyAGENstIQUMBgsgBSAIQezVgwEQoRsAC0Go1IMBQSRBzNSDARCqHgALIAQoAkwhCyADKAIcIQYLAkAgASgCsAFBAXFFDQAgASABKAK0ASIFIAEoArgBIglrIAkgBWsgBSAJSxsgASgCcGo2AnALIAEgBjYCuAEgASAGNgK0ASABQQE2ArABAkAgBiAHSQ0AIAIoAgwhCQwCCyAAQdgCaiEQIAIoAgwhCSACKAIIIQgCQAJAAkACQAJAAkACQAJAA0AgBiAJTw0IIAEoAnwiBSALQf///z9xIBAgCCAGai0AACIKai0AAGoiBk0NAgJAIAEoAnggBkECdGooAgAiBUF/Sg0AIAQgATYCZCAEIAA2AmAgBEEYaiAEQeAAaiALIApBCHQQjQEgBCgCGEEBcQ0EIAQoAhwhBQsCQCAFQf///z9NDQAgAyAFNgIQIANBATYCDCAFQYCAgIABcUUNAgsgAyADKAIcQQFqIgY2AhwgASgCsAFFDQQgASAGNgK4ASAFIQsgBiAHSQ0ACyAFIQsMCQsgBUGAgIDAAHENAyAFQYCAgIAEcQ0EIAVBgICAgAJxRQ0FIAEgAygCHBCMJAJAIAMoAhwiASAJTw0AIAggAWotAAAgARC9KyEFDAoLIAEgCUG42IMBEKEbAAsgBiAFQYjUgwEQoRsACyADKAIcENstIQUMBwtBjNWDAUEfQazVgwEQqh4ACyADQoGAgIAQNwIUIAMgACABIAUQ3C02AgQgA0EBNgIAIAMgAygCHCIGNgIIIAEgBhCMJAwDCyABIAMoAhwQjCQMAgsgBEEBNgJkIARBwNeDATYCYCAEQgA3AmwgBCAEQYwBajYCaCAEQeAAakGo2IMBEK0uAAsgBiAJQZjYgwEQoRsAC0EAIQUMAQsCQAJAAkACQAJAIAcgCUkNACABKAJ8IgIgAC0A1wRBAWoiBSALQf///z9xaiIGTQ0GAkAgASgCeCAGQQJ0aigCACIGQX9KDQAgBCABNgJkIAQgADYCYCAEQRBqIARB4ABqIAsgBUEQdEEBchCNASAEKAIQQQFxDQIgBCgCFCEGC0EAIQUgBkGAgIDAAHFFDQQgACABIAYQ3C0hCyADIAk2AgggAyALNgIEIANBATYCAAwECyABKAJ8IgUgC0H///8/cSAAIAIoAgggB2otAAAiAmpB2AJqLQAAaiIGTQ0GAkAgASgCeCAGQQJ0aigCACIGQX9KDQAgBCABNgJkIAQgADYCYCAEQQhqIARB4ABqIAsgAkEIdBCNASAEKAIIQQFxDQIgBCgCDCEGCyAGQYCAgMAAcQ0CQQAhBSAGQYCAgIACcUUNAyACIAcQvSshBQwDCyAJENstIQUgCyEGDAILIAcQ2y0hBSALIQYMAQtBACEFQQAhCwJAIAAoAvgEKALUAkEBRg0AIAAgASAGEL8rIgsoAgAgCygCBEEAEO0YIQsLIAMgBzYCCCADIAs2AgQgA0EBNgIACyADIAY2AhAgA0EBNgIMAkAgAygCAEUNACADQoGAgIAQNwIUCyABKAKwASEDIAFBADYCsAEgA0EBcUUNAyABIAEoAnAgASgCtAEiAyAHayAHIANrIAMgB0sbajYCcAsgBEGQAWokACAFDwsgBiACQZjUgwEQoRsACyAGIAVBiNSDARChGwALQbzVgwFBH0Hc1YMBEKoeAAu4IgIqfwJ+IwBBsAJrIgIkACABKAIEIQMgAkHQAWogASgCCCIEQQhB2AAQ4RMgAigC1AEhBQJAAkACQAJAAkAgAigC0AFBAUYNACACKALYASEGAkAgBUUNACADIARB2ABsaiEHIAJB0AFqQR1qIQggAkHQAWpBMGohCSACQdgAakEoaiEKIAJB2ABqQSRqIQsgAkEEciEMIAJBCGohDSAFIQ5BACEBA0AgASEPIAMgB0YNAQJAAkACQAJAAkACQAJAAkACQAJAIAMoAgAiAUF8akEAIAFBe2pBCEkbDgkAAQIDBAUGBwgACyADKAJMIRAgAygCPCERIAMoAjghEiACQdgAaiADEKUGIAMoAkQhEyACQdABaiADKAJIIhRBCEHAABDhEyACKALUASEVIAIoAtABQQFGDQwgAigC2AEhFgJAIBVFDQAgFEEGdCEXQQAhGCAVIRkDQCAXIBhGDQECQAJAIBMgGGoiASgCAEEHRw0AIAFBLGooAgAhGiABQShqKAIAIRsgAkGwAWogAUEwahChCyABQT1qLQAAIRwgAUE8ai0AACEdIAFBPmotAAAhHgJAAkAgAUEcaiIfLQAAIiBBAkYNACABQQhqIiEoAgAhIiABQRRqKAIAISMgAUEQaigCACEkIAFBDGooAgAhJSABQRhqKAIAISYCQCAhKQMAIixCA4NCAFINACAspyIgICAoAgAiIEEBajYCACAgQQBIDRYgHy0AACEgCwJAIAFBIGooAgAiAQ0AQQAhHwwCCxCrMiEfIAEpAgQhLCABKAIAIQEQrDIhISACQdABaiABEIYBICEgAkHQAWpB4AAQ3wohASAfICw3AgQgHyABNgIADAELIAFBFGooAgAhIyABQRBqKAIAISQgAUEIaigCACElEK0yISIgAkHQAWogJRDVAyAiQSBqIAJB0AFqQSBqIh8pAwA3AwAgIkEYaiACQdABakEYaiImKQMANwMAICJBEGogAkHQAWpBEGoiICkDADcDACAiQQhqIAJB0AFqQQhqIiEpAwA3AwAgIiACKQPQATcDACABQQxqKAIAIQEQrjIhJSACQdABaiABED8gJUE4aiACQdABakE4aikDADcDACAlQTBqIAkpAwA3AwAgJUEoaiACQdABakEoaikDADcDACAlQSBqIB8pAwA3AwAgJUEYaiAmKQMANwMAICVBEGogICkDADcDACAlQQhqICEpAwA3AwAgJSACKQPQATcDAEECISAgJyEfICghJgsgAkGgAWpBCGogAkGwAWpBCGooAgA2AgAgAiACKQOwATcDoAFBByEhIB8hJyAmISgMAQsgAUEoaigCACEbIAFBLGooAgAhGiAJIAFBMGoQoQsgAkHQAWogARDVAyACQawBakECaiAIQQJqLQAAOgAAIAJBoAFqQQhqIAlBCGooAgA2AgAgAiAaNgL8ASACIBs2AvgBIAIgCC8AADsBrAEgAiAJKQMANwOgASACKALQASEhIAIoAtQBISkgAigC2AEhIiACKALcASElIAIoAuABISQgAigC5AEhIyACKALoASEmIAItAOwBISAgAigC8AEhHyACKAL0ASEqIAItAI8CISsgAi0AjgIhHiACLQCNAiEcIAItAIwCIR0LIBYgGGoiASAhNgIAIAFBHGogIDoAACABQRhqICY2AgAgAUEUaiAjNgIAIAFBEGogJDYCACABQQxqICU2AgAgAUEIaiAiNgIAIAFBBGogKTYCACABQR1qIAIvAawBOwAAIAFBH2ogAkGsAWpBAmotAAA6AAAgAUEsaiAaNgIAIAFBKGogGzYCACABQSRqICo2AgAgAUEgaiAfNgIAIAFBMGogAikDoAE3AwAgAUE4aiACQaABakEIaigCADYCACABQT9qICs6AAAgAUE+aiAeOgAAIAFBPWogHDoAACABQTxqIB06AAAgGEHAAGohGCAZQX9qIhkNAAsLQYCAgIB4IRsCQCADKAIgQYCAgIB4Rg0AIAMoAiQhHyADKAI0IRwgAygCMCEZIAMoAiwhICACQdABaiADKAIoIiZBCEEwEOETIAIoAtQBIRsgAigC0AFBAUYNDiACKALYASEiAkAgGw0AQQAhGwwBCyAmQTBsIRpBACEYIBshJQNAIBogGEYNASACQdABaiAfIBhqEFAgIiAYaiIBQShqIAJB0AFqQShqKQMANwMAIAFBIGogAkHQAWpBIGopAwA3AwAgAUEYaiACQdABakEYaikDADcDACABQRBqIAJB0AFqQRBqKQMANwMAIAFBCGogAkHQAWpBCGopAwA3AwAgASACKQPQATcDACAYQTBqIRggJUF/aiIlDQALCyANIAJB2ABqQQhqKQMANwMAIAJBEGogAkHYAGpBEGopAwA3AwAgAkEYaiACQdgAakEYaikDADcDACACIAIpA1g3AwAgAiAQNgJMIAIgFDYCSCACIBY2AkQgAiAVNgJAIAIgETYCPCACIBI2AjggAiAcNgI0IAIgGTYCMCACICA2AiwgAiAmNgIoIAIgIjYCJCACIBs2AiAgAiADLwFQOwFQDAgLIAMpAyghLCACQdABaiADQQhqEKUGIAJB0AFqQShqIgEgAygCMBCmBjYCACACQdABakEgaiAsNwMAIA1BIGogLDcDACANIAIpA9ABNwMAIA1BCGogAkHQAWpBCGopAwA3AwAgDUEQaiACQdABakEQaikDADcDACANQRhqIAJB0AFqQRhqKQMANwMAIAIgAy0ANDoA/AEgAiADKAA1NgD9ASANQShqIAEpAwA3AwAgAiADLQA5OgCBAiANQTBqIAkpAwA3AwAgAkEFNgIADAcLIAMoAhQhASADKAIQIRggAygCHCElIAMoAhghIgJAIAMpAwgiLEIDg0IAUg0AICynIh8gHygCACIfQQFqNgIAIB9Bf0wNDgsgAiADKAIgEKYGNgIgIAIgJTYCHCACICI2AhggAiABNgIUIAIgGDYCECACICw3AwggAkEGNgIAIAIgAy8BKDsBKCACIAMoAiQ2AiQMBgsgAygCLCEiIAMoAighHyACQbABaiADQQhqEKUGQQAhGEEAIQECQCADKAI8IiVFDQAQrjIhASACQdABaiAlED8gAUE4aiACQdABakE4aikDADcDACABQTBqIAkpAwA3AwAgAUEoaiACQdABakEoaikDADcDACABQSBqIAJB0AFqQSBqKQMANwMAIAFBGGogAkHQAWpBGGopAwA3AwAgAUEQaiACQdABakEQaikDADcDACABQQhqIAJB0AFqQQhqKQMANwMAIAEgAikD0AE3AwALAkAgAygCQCIlRQ0AEKsyIRggJSkCBCEsICUoAgAhJRCsMiEaIAJB0AFqICUQhgEgGiACQdABakHgABDfCiElIBggLDcCBCAYICU2AgALIAMtAEQhJSAKIANBMGoQoQsgAkHYAGpBCGogAkGwAWpBCGopAwA3AwAgAkHYAGpBEGogAkGwAWpBEGopAwA3AwAgAkHYAGpBGGogAkGwAWpBGGopAwA3AwAgAiAiNgJ8IAIgHzYCeCACICU6AJQBIAIgGDYCkAEgAiABNgKMASACIAIpA7ABNwNYIAIgAy0ASzoAmwEgAiADLwBJOwCZASACIAMoAEU2AJUBIA0gAkHYAGpByAAQ3woaIAJBBzYCAAwFCyADKAIUISIgAygCECEfIAMoAiAhGiADKAIcIRsgAygCGCEmAkAgAykDCCIsQgODQgBSDQAgLKciASABKAIAIgFBAWo2AgAgAUF/TA0MC0EAIRhBACEBAkAgAygCJCIlRQ0AEK4yIQEgAkHQAWogJRA/IAFBOGogAkHQAWpBOGopAwA3AwAgAUEwaiAJKQMANwMAIAFBKGogAkHQAWpBKGopAwA3AwAgAUEgaiACQdABakEgaikDADcDACABQRhqIAJB0AFqQRhqKQMANwMAIAFBEGogAkHQAWpBEGopAwA3AwAgAUEIaiACQdABakEIaikDADcDACABIAIpA9ABNwMACwJAIAMoAigiJUUNABCrMiEYICUpAgQhLSAlKAIAISUQrDIhICACQdABaiAlEIYBICAgAkHQAWpB4AAQ3wohJSAYIC03AgQgGCAlNgIACyADLQA5ISUgCyADQSxqEKELIAJB2ABqQQhqIiAgHzYCACACQdgAakEQaiIfICY2AgAgAkHYAGpBGGoiJiAaNgIAIAJB2ABqQSBqIhogGDYCACACQdgAakEwaiIYIAMtADg6AAAgDSAsNwMAIA1BKGogCikDADcDACACICI2AmQgDUEIaiAgKQMANwMAIAIgGzYCbCANQRBqIB8pAwA3AwAgAiABNgJ0IA1BGGogJikDADcDACANQSBqIBopAwA3AwAgAiAlOgCJASACIAMoATo2AYoBIA1BMGogGCkDADcDACACICw3A1ggAkEINgIADAQLIAwgA0EEahD9CiACQQk2AgAMAwsgAkEKNgIAIAIgAykCBDcCBAwCCyADKAIIIRggAygCGCEmIAMoAhQhICADKAIQIRkgAygCICEcIAMoAhwhHSACQdABaiADKAIMIhpBCEEwEOETIAIoAtQBIR8gAigC0AFBAUYNByACKALYASEbAkAgH0UNACAaQTBsISUgGyEBIB8hIgNAICVFDQEgAkHQAWogGBBQIAFBKGogAkHQAWpBKGopAwA3AwAgAUEgaiACQdABakEgaikDADcDACABQRhqIAJB0AFqQRhqKQMANwMAIAFBEGogAkHQAWpBEGopAwA3AwAgAUEIaiACQdABakEIaikDADcDACABIAIpA9ABNwMAICVBUGohJSABQTBqIQEgGEEwaiEYICJBf2oiIg0ACwsgAiAcNgIgIAIgHTYCHCACICY2AhggAiAgNgIUIAIgGTYCECACIBo2AgwgAiAbNgIIIAIgHzYCBCACQQs2AgAMAQsgAygCLCEiIAMoAighHwJAAkAgAygCCEEFRw0AIAMoAhwhASADKAIYIRgCQCADKQMQIixCA4NCAFINACAspyIlICUoAgAiJUEBajYCACAlQX9MDQoLIAIgATYCxAEgAiAYNgLAASACICw3A7gBIAJBBTYCsAEMAQsgAkGwAWogA0EIahClBgtBACEYQQAhAQJAIAMoAjwiJUUNABCuMiEBIAJB0AFqICUQPyABQThqIAJB0AFqQThqKQMANwMAIAFBMGogCSkDADcDACABQShqIAJB0AFqQShqKQMANwMAIAFBIGogAkHQAWpBIGopAwA3AwAgAUEYaiACQdABakEYaikDADcDACABQRBqIAJB0AFqQRBqKQMANwMAIAFBCGogAkHQAWpBCGopAwA3AwAgASACKQPQATcDAAsCQCADKAJAIiVFDQAQqzIhGCAlKQIEISwgJSgCACElEKwyIRogAkHQAWogJRCGASAaIAJB0AFqQeAAEN8KISUgGCAsNwIEIBggJTYCAAsgAy0ARCElIAogA0EwahChCyACQdgAakEIaiACQbABakEIaikDADcDACACQdgAakEQaiACQbABakEQaikDADcDACACQdgAakEYaiACQbABakEYaikDADcDACACICI2AnwgAiAfNgJ4IAIgJToAlAEgAiAYNgKQASACIAE2AowBIAIgAikDsAE3A1ggAiADKABFNgCVASANIAJB2ABqQcgAEN8KGiACQQw2AgALIA9BAWohASADQdgAaiEDIAYgD0HYAGxqIAJB2AAQ3woaIA5Bf2oiDg0ACwsgACAENgIIIAAgBjYCBCAAIAU2AgAgAkGwAmokAA8LIAUgAigC2AEQ+DkACyAVIAIoAtgBEPg5AAsgGyACKALYARD4OQALIB8gAigC2AEQ+DkLAAujIwIcfwF+IwBBsAJrIgIkACACQTBqIAEoAggiA0EEQRwQ5yIgAkEANgJAIAIgAikDMDcCOCABKAIAIQQgAiABKAIEIgEgA0EcbCIDaiIFNgK8ASACIAQ2ArgBIAIgATYCsAEgAUEcaiEGIAJBxABqQQRqIQQCQAJAAkACQAJAAkACQANAAkACQCADRQ0AIAEoAgAiB0EIRw0BIAYhBQsgAiAFNgK0ASACQbABahCfJwJAAkACQCACKAJAIgQOAgUAAQsgAkEANgJAIAIoAjwiASgCACIDQQhGDQEgACADNgIAIAAgASkCBDcCBCAAQQxqIAFBDGopAgA3AgAgAEEUaiABQRRqKQIANwIADAULIAIoAjwhAUEAIQMgAkEANgKYAiACQoCAgIDAADcCkAIgBEEcbCEEQQQhCEEAIQcCQAJAAkADQCAERQ0BIAEoAgBBAUcNAiACQcABaiABKAIEIAEoAggiCRDcCSACLQDAASIGQQJHIAZzQQFxRQ0CAkACQCACKALEASIGQYABTw0AQQEhCgwBCwJAIAZBgBBPDQBBAiEKDAELQQNBBCAGQYCABEkbIQoLIAkgCkcNAgJAIAcgAigCkAJHDQAgAkGQAmoQwiYgAigClAIhCAsgAUEcaiEBIAggA2ogBjYCACACIAdBAWoiBzYCmAIgBEFkaiEEIANBBGohAwwACwsgAigCkAIiBkGAgICAeEYNASACKAKUAiEJIAJBKGogB0EEQQgQ5yIgAkEANgKYAiACIAIpAyg3A5ACIAJBkAJqIAcQkDAgAigCmAIiASAHaiEKIAIoApQCIAFBA3RqIQEgCSEEAkADQCADRQ0BIAFBBGogBCgCACIHNgIAIAEgBzYCACABQQhqIQEgA0F8aiEDIARBBGohBAwACwsgBiAJEPs5IAIpA5ACIR4gAkHIAWoiASAKNgIAIAIgCkU6AMwBIAIgHjcDwAEgAkHAAWoQvAggAkGcAmogASkDADcCACACIAIpA8ABNwKUAiACQQA2ApACIAAgAkGQAmoQ5hIMBgsgAigCkAIgCBD7OQsgAigCPCEBIAIoAkAhBEEAIQMgAkEANgKYAiACQoCAgIAQNwKQAiAEQRxsIQRBASEGAkACQAJAA0AgBEUNASABKAIAQQFHDQIgASgCCEEBRw0CIAEoAgQtAAAhBwJAIAMgAigCkAJHDQAgAkGQAmoQwCYgAigClAIhBgsgAUEcaiEBIAYgA2ogBzoAACACIANBAWoiAzYCmAIgBEFkaiEEDAALCyACKAKUAiEGIAIoApACIglBgICAgHhGDQEgAkEgaiADQQFBAhDnIkEAIQEgAkEANgKYAiACIAIpAyA3A5ACIAJBkAJqIAMQkTAgAigClAIgAigCmAIiCkEBdGohBAJAA0AgAyABRg0BIARBAWogBiABai0AACIHOgAAIAQgBzoAACAEQQJqIQQgAUEBaiEBDAALCyAJIAYQ9jkgAikDkAIhHiACQcgBaiIDIAogAWoiATYCACACIAFFOgDMASACIB43A8ABIAJBwAFqEKkIIAJBnAJqIAMpAwA3AgAgAiACKQPAATcClAIgAkEBNgKQAiAAIAJBkAJqEOYSDAYLIAIoApACIAYQ9jkLQYCAgIB4IAYQizUgAigCPCELIAIoAkAhDCACQQA2ApgCIAJCgICAgMAANwKQAiALIAxBHGxqIQogAkGwAWogAkGQAmoQ+x8gAkGQAmpBBHIhBiACQcABakEEaiEJIAshAwJAAkACQANAIAMgCkYNASADKAIAQQJHDQIgA0EcaiEHAkAgAygCBA0AIAJBsAFqIANBCGoQ4ScgByEDDAELAkAgA0EMaigCACIBIANBEGooAgAiBBD/MEUNACACQRhqIARBBEEIEOciIAJBADYCmAIgAiACKQMYNwOQAiACQZACaiAEEJAwIAIoApgCIQMCQCAERQ0AIAQgA2ohCCACKAKUAiADQQN0aiEDA0AgAyABLQAANgIAIANBBGogAUEBai0AADYCACABQQJqIQEgA0EIaiEDIARBf2oiBA0ACyAIIQMLIAIgAikDkAI3A5ACIAIgAzYCmAIgAiADRToAnAIgAkGQAmoQvAggAkHwAWpBCGoiAyAGQQhqKAIANgIAIAIgBikCADcD8AEgAigCkAIiAUGAgICAeEYNACAJIAIpA/ABNwIAIAlBCGogAygCADYCACACIAE2AsABIAJBsAFqIAJBwAFqEOEnIAEgAigCxAEQgjogByEDDAELCyACQQI2AmAMAgsgAkHsAGogAkG4AWopAgA3AgAgAiACKQKwATcCZCACQQA2AmAgACACQeAAahDmEgwGCyACQQI2AmALIAIoArABIAIoArQBEII6IAJB4ABqEKg1IAJBADYCmAIgAkKAgICAEDcCkAIgAkGwAWogAkGQAmoQ/B8gAkGQAmpBBHIhBSACQcABakEEaiENIAshAwJAA0ACQAJAAkACQAJAAkAgAyAKRg0AIAMoAgBBAkcNASADQRxqIQggAygCBA0FAkAgA0EMaigCACIBIANBEGooAgAiBBD5MEUNACACQRBqIARBAUECEOciIAJBADYCmAIgAiACKQMQNwOQAiACQZACaiAEEJEwIAIoApgCIQcCQCAERQ0AIAIoApQCIAdBAXRqIQMDQCABKAIAIgZBgAJPDQYgAUEEaigCACIJQYACTw0HIAMgBjoAACADQQFqIAk6AAAgAUEIaiEBIANBAmohAyAHQQFqIQcgBEF/aiIEDQALCyACIAIpA5ACNwOQAiACIAc2ApgCIAIgB0U6AJwCIAJBkAJqEKkIIAJB8AFqQQhqIgMgBUEIaigCADYCACACIAUpAgA3A/ABIAIoApACIgFBgICAgHhGDQAgDSACKQPwATcCACANQQhqIAMoAgA2AgAgAiABNgLAASACQbABaiACQcABahDiJyABIAIoAsQBEJk6IAghAwwHCyACQQI2AnQMAgsgAkGAAWogAkG4AWopAgA3AgAgAiACKQKwATcCeCACQQE2AnQgACACQfQAahDmEgwLCyACQQI2AnQLIAIoArABIAIoArQBEJk6IAJB9ABqEKg1IAIoAjghCCAMQQJJDQsgCygCAEEGRw0LIAsoAgwiBkUNCyALKAIIIQVBACEBIAshCUEBIQMDQAJAAkAgAUEBcUUNACAJIQEgCSAKRw0BDA0LIAogCWtBHG4gA00NDCAJIANBHGxqIQELIAEoAgBBBkcNDCABQRxqIQkgBiABKAIMIgMgBiADSRshByABKAIIIQNBACEBIAUhBAJAA0ACQCAHIAFHDQAgByEGDAILAkAgBCADENYGRQ0AIARBHGohBCADQRxqIQMgAUEBaiEBDAELCyABIAZLDQYgASEGC0EAIQNBASEBIAYNAAwMCwtBkMOhAUErIAJBmAFqQayPlwFBzJ+XARCxGAALQZDDoQFBKyACQZgBakGsj5cBQdyflwEQsRgACyACQbABaiADQQhqEOInIAghAwwACwsgASAGQbCjhAEQoxsAC0HIooQBEP05AAsgBCABKQIENwIAIARBCGogAUEMaikCADcCACAEQRBqIAFBFGopAgA3AgAgAiAHNgJEIAJBkAJqIAJBxABqEMQjIAJBwAFqQRBqIgcgAkGQAmpBEGoiCikCADcDACACQcABakEIaiIIIAJBkAJqQQhqIgspAgA3AwAgAiACKQKQAiIeNwPAASACKAKoAiEJAkACQCAep0EHRg0AIAogBykDADcDACALIAgpAwA3AwAgAiACKQPAATcDkAIgAiAJNgKoAiACQThqIAJBkAJqELEbDAELIAIoAswBIQogAigCyAEhByACIAIoAsQBNgKYAiACIAc2ApACIAIgBzYClAIgAkE4aiAKEIwwIAIoAjwgAigCQCIIQRxsaiAHIApBHGwQ3woaIAIgBzYCnAIgAiAIIApqNgJAIAJBkAJqEJ8nIAkQnjsLIAFBHGohASAGQRxqIQYgA0FkaiEDDAALCyAAEM0cCyACQThqEJc3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3AEgAiAGNgLYASACQdgBahDhECACQaABahDhECACQdgBaiABQQAQgAQgAigC2AEhBgJAIAItAOwBIgRBA0YNACACQagCakEMaiACQdgBakEMaikCADcCACACQagCakEXaiACQdgBakEXai0AADoAACACIAIpAtwBNwKsAiACIAIvAO0BOwC9AiACIAY2AqgCDAILIABBBDoANCAAIAY2AgAMAgtBlM6hAUEoQdjhmQEQ0ycACyACIAQ6ALwCQQAhBCACQdgBakEQakEAKQO45JkBNwMAIAJB2AFqQQhqQQApA7DkmQE3AwAgAkEAKQOo5JkBNwPYASABELAWIAJB2AFqEMU1IQYgAkHYAWoQ4RACQAJAIAZFDQAgASABKALMAiIGQf+///8DcRDhDyACQQhqIAEQogIgAigCDCEEIAIoAggNASABIAYQoD4LIAAgAikDUDcDCCAAIAIpA6gCNwMgIAAgCjYCRCAAIAk2AkAgACAFNgI8IAAgBDYCOCAAQRBqIAJB0ABqQQhqKQMANwMAIABBGGogAkHQAGpBEGopAwA3AwAgAEEoaiACQagCakEIaikDADcDACAAQTBqIAJBqAJqQRBqKQMANwMAIAAgAyABKAJUIgEgAyABSxs2AgQgACADIAEgAyABSRs2AgAMBQsgAEEEOgA0IAAgBDYCACABIAYQoD4gAkGoAmoQxzULIAUQ6TMLIAIpA1AgAikDYBC5OwwCCyABKAKwAiEBIAJBgICAgHg2AtgBIAEgASACQdgBahD+IiEBIABBBDoANCAAIAE2AgAMAQsgAEEEOgA0IAAgATYCAEGAvJkBEOEQCyACQdACaiQAC78jAgh/An4jAEGwBGsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAIgNBdGoiBEEHIARBJkkbDiYiAAECAwQFBgcICQoLDCIiDQ4PEBEiEhMUIiIVFhcYGRobHCIdIiILIAAoAgxBBHQhBCAAKAIIIQADQCAERQ0iAkAgACgCAEECRg0AIABBDGogARDFPQsgAEEQaiEAIARBcGohBAwACwsgAEEEaiABEHQMIAsCQAJAAkAgAS0ARQ0AIAJBgAI7AIQCIAAoAiAgAkGEAmoQnz8g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IAEoAhQiASkCBCEUEKwyIQcgAkGgAWogASgCABCGASAHIAJBoAFqQeAAEN8KIQEgBSAUNwIEIAUgATYCACACKQN4IRQgAigCgAEhB0GAgICAeCEBDAELIAEoAhghBCABKAIUIQUgAkH4AGogAUEEahD1DAJAAkAgASgCHCIHDQBBACEDDAELELEyIQMgBygCDCEGIAcoAhAhCCACQaABaiAHEPwIIANBEGogCDYCACADIAIpAqABNwIAIAIgBjYCrAEgA0EIaiACQaABakEIaikCADcCAAsQqzIhByABKAIQIgYpAgQhFBCsMiEIIAJBoAFqIAYoAgAQhgEgCCACQaABakHgABDfCiEGIAcgFDcCBCAHIAY2AgAgAS0AICEGIAIoAnghASACKQJ8IRQLIAAgBjYCICAAIAM2AhwgACAENgIYIAAgBTYCFCAAIAc2AhAgACAUNwMIIAAgATYCBCAAQQI2AgAMEQsgASgCDCEHIAEoAgghAyACIAFBEGoQwwoCQAJAIAEoAigiBQ0AQQAhAQwBCxCxMiEBIAUoAgwhBiAFKAIQIQQgAkGgAWogBRCmESABQRBqIAQ2AgAgASACKQKgATcCACACIAY2AqwBIAFBCGogAkGgAWpBCGopAgA3AgALIAAgBzYCDCAAIAM2AgggACACKQMANwMQIAAgATYCKCAAQQM2AgAgAEEYaiACQQhqKQMANwMAIABBIGogAkEQaikDADcDAAwQCyABQRBqIQUgASgCDCEHIAEoAgghAwJAAkAgAS0AREEERw0AIAJBGGogBRDDCiACQQQ6AEwMAQsgAkEYaiAFELwHCwJAAkAgASgCWCIFDQBBACEBDAELELEyIQEgBSgCDCEGIAUoAhAhBCACQaABaiAFEKYRIAFBEGogBDYCACABIAIpAqABNwIAIAIgBjYCrAEgAUEIaiACQaABakEIaikCADcCAAsgACAHNgIMIAAgAzYCCCAAQRBqIAJBGGpByAAQ3woaIABBBDYCACAAIAE2AlgMDwsgASgCECEFIAEoAhQhByACQaABaiABQQRqEL0BIABBFGogBzYCACAAQQU2AgAgACACKQKgATcCBCACIAU2AqwBIABBDGogAkGoAWopAgA3AgAMDgsgASkDCCEUEKwyIQUgAkGgAWogASgCBBCGASAFIAJBoAFqQeAAEN8KIQEg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ABDfChoLAkAgASgCNCIDRQ0AEKwyIQUgAkGgAWogAxCGASAFIAJBoAFqQeAAEN8KGgtBACEDQQAhBgJAIAEoAkAiE0UNABCsMiEGIAJBoAFqIBMQhgEgBiACQaABakHgABDfChoLIAEtAEkhEwJAIAEoAkQiAUUNABCsMiEDIAJBoAFqIAEQhgEgAyACQaABakHgABDfChoLIAAgEzoASSAAIAk6AEggACADNgJEIAAgBjYCQCAAIAw6ADogACAKOgA5IAAgCzoAOCAAIAU2AjQgACAHNgIwIAAgEjoALCAAIAQ2AiggACAINgIkIAAgEDYCICAAIBQ3AxggACARNgIUIAAgDjYCECAAIA82AgwgACANNgIIIABBEDYCAAwDCyABKAIsIQYgASgCKCEEAkACQAJAAkACQAJAIAEoAghBgICAgHhzIgVBBCAFQQRJGw4FAAECAwQACyABKAIkIQggASgCICEFIAEpAxghFCABKAIUIQcgASgCECEQAkAgASkDICIVUA0AIBVCA4NQRQ0AIBWnIgEgASgCACIBQQFqNgIAIAFBf0wNCgsgB0EIdiEBIBRCIIinIREgFKchA0GAgICAeCEODAQLIAEoAhwhESABKAIYIQMCQCABKQMQIhRCA4NCAFINACAUpyIFIAUoAgAiBUEBajYCACAFQX9MDQkLIAEoAiQhCCABKAIgIQUCQCABKQMgIhVQDQAgFUIDg1BFDQAgFaciASABKAIAIgFBAWo2AgAgAUF/TA0JCyAUQiiIpyEBIBRCIIinIQcgFKchEEGBgICAeCEODAMLIAEtABQhByABKAIQIRAgASgCDCEJQYKAgIB4IQ5BACEBDAILIAEoAiAhAyABKAIUIQcgASgCECEQEK8yIQUgAy0ADCEIIAJBoAFqIANBBGooAgAgA0EIaigCABDuGyAFIAIpAqABNwIAIAIgCDoArAEgBUEIaiACQaABakEIaikCADcCACABKQMYIhSnIQMCQCAUUA0AIBRCA4NQRQ0AIAMgAygCACIBQQFqNgIAIAFBf0wNBwsgB0EIdiEBIBRCIIinIRFBg4CAgHghDgwBCyABKAIkIQggASgCICEFIAJBoAFqIAFBCGoQphEgAkGsAWogASgCGCABKAIcELkLIAIpArABIhVCIIinIREgAikCqAEiFEIoiKchASAUQiCIpyEH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AQsLQQAhEQsgEUUNAAsgA0GgAmogDkF4aigCACAOQXxqKAIAIBEgDxCCDAsgA0HgAWpBCGoiBCADQaACakEIaigCADYCACADIAMpAqACNwPgAUHQAEEEEOExIgdBAjYCCCAHQoGAgIAQNwIAIAcgAykD4AE3AgwgB0EUaiAEKAIANgIACyAAQeAAahCEMSETIAAgBSAAKAKAASIRakEBajYCgAEgAigCACEVIAIoAgwhECACKAIEIRIgAigCCCEPIANB4AFqQThqQgA3AwAgA0HgAWpBMGpCADcDACADQeABakEoakIANwMAIANCADcDgAIgA0LzytHLp4zZsvQANwP4ASADQoPfkfOWzNy35AA3A/ABIANC4eSV89bs2bzsADcD6AEgA0L1ys2D16zbt/MANwPgASADQeABaiASIA8Qzg0gA0EYaiADQeABahDCDiADQRhqQQhqKQMAIRwgAykDGCEdIANBoAJqQThqQgA3AwAgA0GgAmpBMGpCADcDACADQaACakEoakIANwMAIANCADcDwAIgA0LzytHLp4zZsvQANwO4AiADQoPfkfOWzNy35AA3A7ACIANC4eSV89bs2bzsADcDqAIgA0L1ys2D16zbt/MANwOgAiAHIANBoAJqEKUJIANBCGogA0GgAmoQwg4gA0EIakEIaikDACEeIAMpAwghH0H4AEEIEOExIgQgHjcDMCAEIB83AyggBCAcNwMgIAQgHTcDGCAEIAY6AHQgBCAPIBFqNgJwIAQgETYCbCAEQQA2AmggBCABNgJkIAQgBzYCYCAEQoCAgICAgICAgH83AzggBCAQNgIUIAQgDzYCECAEIBI2AgwgBCAVNgIIIARCgoCAgBA3AgBBAUUNAAJAIAAoAmwiDyAAKAJkRw0AIABB5ABqEMImCyAAKAJoIA9BAnRqIAQ2AgAgACAPQQFqNgJsIANB2AJqQgA3AwAgA0HQAmpCADcDACADQcgCakIANwMAIANCADcDwAIgA0LzytHLp4zZsvQANwO4AiADQoPfkfOWzNy35AA3A7ACIANC4eSV89bs2bzsADcDqAIgA0L1ys2D16zbt/MANwOgAiAHIANBoAJqEKUJIANBoAJqIAQtAHQQ7RQgA0GgAmogBCgCZCIHQQBHEO0UAkAgB0UNACAHIANBoAJqEKUJCyADKQPQAiEcIAM1AtgCIR0gA0HgAWpBEGoiDyADQaACakEQaikDADcDACADQeABakEIaiIHIANBoAJqQQhqKQMANwMAIANB4AFqQRhqIhEgHCAdQjiGhCIcIANBoAJqQRhqKQMAhTcDACADIAMpA6ACNwPgASADQeABahCvEiAHIAcpAwBC7gGFNwMAIAMgAykD4AEgHIU3A+ABIANB4AFqEIYLIA8gDykDACIcQt0BhTcDACARKQMAIR0gBykDACEeIAMpA+ABIR8gA0HgAWoQhgsgESkDACEgIAcpAwAhISAPKQMAISIgAykD4AEhIyAEIAQoAgAiB0EBajYCACAHQX9MDQAgAyAiICOFICGFICCFIiA3A6gCIAMgHyAehSAdhSAchSIcNwOgAiAAQfAAaiEHIBwgIBDgKiEcIAMgA0GgAmo2AqwBAkAgACgCeA0AIAcgAEGAAWoQlAgaCyADIAc2AuQBIABB9ABqIhEoAgAhByADIANBrAFqNgLgASADIAAoAnAgByAcIANB4AFqQY0CEJwMIAAoAnAhByADKAIEIQ8CQAJAIAMoAgBFDQAgByAPaiISLQAAIRUgA0GgAmpBCGopAwAhHSADKQOgAiEeIBIgHEIZiKciEDoAACAHIBEoAgAgD0F4anFqQQhqIBA6AAAgACAAKAJ8QQFqNgJ8IAAgACgCeCAVQQFxazYCeCAHQQAgD2tBGGxqIgdBaGoiDyAdNwMIIA8gHjcDACAHQXhqIAQ2AgAMAQsgB0EAIA9rQRhsakF4aiIHKAIAIQ8gByAENgIAIAMgDzYC4AEgA0HgAWoQkjALIBMQ/S8CQCAIQQJHDQAgAygCLCIHIAcoAgAiB0F/ajYCACAHQQFHDQAgA0EsahCNGgsgA0HgAmokACAEDwsACyADQQA2ArACIANBATYCpAIgA0GMzYABNgKgAiADQgQ3AqgCIANBoAJqQZTNgAEQrS4AC7MiAh5/BH4jAEHgA2siAiQAIAJBCGogASgCCCIDQTgQgCMgASgCACEEIAIpAwghICABQQA2AgAgASgCBCEFIAFBCDYCBCABQQA2AgggAkEANgIYIAIgIDcCECACIAUgA0E4bGoiBjYCKCACIAQ2AiQgAiAFNgIgIAIgBTYCHCACQeAAakEcaiEHIAJB6AJqQQhqIQggAkHsAWpBBGohCSACQYgCakEEaiEKIAJB4ABqQRBqIQsgAkHgAGpBDGohDCACQeAAakEIaiENIAJB4ABqQQRyIQ4gAC0AESEPIAAoAgwhECAALQAQIREgACgCFCESIAJB4ABqQRhqIhNBBWohFANAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAUgBkYNACACIAVBOGoiFTYCICAFKAIAIQMgAkEsaiAFQQRqQTQQ3woaIANBCkYNACACIAM2AmAgDiACQSxqQTQQ3woaIAIgDzoAqQEgAiAROgCoASACIBA2AqQBIAIgEjYCrAEgAkEANgKgASACQoCAgICAATcCmAEgA0EBRg0BIANBCUYNBgJAIAMOCQADDg0MCwoJCAALIAIoAmxByABsIQRBACEFIAIoAmghFgNAAkACQAJAIAQgBUYNAAJAAkACQCAWIAVqIgMpAwAiIUJ9fCIgp0EBakEAICBCAlQbDgMAAQIACwJAICFCAlENACACKAKsASADQSBqEOkJGgwFCyADQShqKQMAISAgA0EwaigCACEXIANBIGoiGCkDABD9LCEhIAIgFzYC+AIgAiAgNwPwAiACICE3A+gCIAIgA0E0ai0AADoA/AIgAigCrAEgGBDpCQ0DAkAgGCACQegCahC3Eg0AIAJBoANqQRBqIhggAkHoAmpBEGopAwA3AwAgAkGgA2pBCGoiFyAIKQMANwMAIAIgAikD6AI3A6ADIAMQ+DUgA0IANwMAIANBCGogAikDoAM3AwAgA0EQaiAXKQMANwMAIANBGGogGCkDADcDAAwFCyACKQPoAhDSHwwECyACKAKsASADQRBqEOkJGgwDCyACKAKsASADQRBqEOkJGgwCCyAHIAJBmAFqEPQ0DBELIAIpA+gCENIfCyAFQcgAaiEFDAALCyACQRxqEM8nIAJBEGogACgCBCAAKAIIEL0tIABBADYCCCABEMQ3IAFBCGogAkEQakEIaigCADYCACABIAIpAhA3AgAgAkHgA2okAA8LIAIoApQBIRYgAigCkAEhGAJAAkACQAJAAkAgAigCaA4DAgMBAAsgAkGYAWogDRDzBQwQCyACKAJsIgUoAgghFyAFQQA2AgggBSgCBCEZIAVBCDYCBCAFKAIAIRogBUEANgIAIAJBADYCrAIgAkKAgICAgAE3AqQCIBchBSAZIQMDQCAFRQ0DIAJBsAJqIANBOBDfChogAkGgA2ogAkGwAmpBOBDfChogAiACQaQCajYC3AMgAiACQZgBajYC2AMgAkGgA2ogAkHYA2oQ5Q4CQCACKALQAyIERQ0AIAQgAkGYAWoQpAULIAJB6AJqIAJBoANqQTgQ3woaIAVBf2ohBSADIAJB6AJqQTgQ3wpBOGohAwwACwsQkCghICACQegCakEQaiIEIAtBEGopAwA3AwAgCCALQQhqKQMANwMAIBNCADcDACAUQgA3AAAgAiALKQMANwPoAiACICA3A3BBwAAQszQiBUIANwIgIAVCgICAgMAANwIYIAVCCDcCECAFQgA3AgggBUKAgICAwAA3AgAgBUEoakIANwIAIAVBMGpCADcCACAFQTVqQgA3AAAgAigCiAEhAyACIAU2AogBIAMgAkGYAWoQiwkgBCgCACEXIAgoAgAhGSACKAL0AiEaIAIpA+gCEP0sISAgAi0A/AIhGyACKAKsASACQegCahDpCQ0DIAIpA/ACISEgAigC+AIhHCACKQPoAhD9LCEiIAItAPwCIR1BwAAQszQiBUIANwIgIAVCgICAgMAANwIYIAVCCDcCECAFQgA3AgggBUKAgICAwAA3AgAgBUEoakIANwIAIAVBMGpCADcCACAFQTVqQgA3AAAgAiAFNgKwAiACLQCMASEFIAJB4ABqEPsMIAIgBToAlAEgAiADNgKQASACIB06AIwBIAIgHDYCiAEgAiAhNwOAASACICI3A3ggAkEANgJwIAJBETYCaCACQQk2AmBBCEHQABDHOCIFRQ0CEJAoISEgBUIANwMAIAUgGzoAPCAFIBc2AjggBSAaNgI0IAUgGTYCMCAFICA3AyggBUIANwMgIAJBoANqQRBqIAQpAwAiIDcDACACQaADakEIaiAIKQMAIiI3AwAgCEIANwMAIAhBBWpCADcAACAFIAIpA+gCIiM3AwggBUEQaiAiNwMAIAVBGGogIDcDACACICM3A6ADIAIgITcD6AIgBUHIAGpBADoAACAFQgA3A0ACQCACKAKgASIEIAIoApgBRw0AIAJBmAFqEOUmCyACKAKcASAEQThsaiIDQgA3AhggAyAWNgIUIAMgGDYCECADQQE2AgwgAyAFNgIIIANCgoCAgBA3AwAgA0EgakEAOgAAIAIgBEEBajYCoAEMBQsQkCghICACQaADakEQaiIEIAtBEGopAwA3AwAgAkGg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QShqrYQ3AxAgAyADQRBqNgI4IAAgA0EwahCqEwwMCyACRQ0IIAIoAgBBAkcNCCADIAJBCGoQyRMgAygCBCEFIAMoAgAhBAwKCyACRQ0IIAIoAgBBCEcNCCADIAJBBGo2AiggA0ECNgI0IANBrO6aATYCMCADQgE3AjwgA0H4BK1CIIYgA0Eoaq2ENwMQIAMgA0EQajYCOCAAIANBMGoQqhMMCgsgA0HpBK1CIIYgA0EIaq2ENwMoIANBATYCJCADQQE2AhQgA0H4wKABNgIQIANBATYCHCADQQM6AEwgA0EENgJIIANCIDcCQCADQQI2AjggA0ECNgIwIAMgA0EwajYCICADIANBKGo2AhggA0EQakG465oBEK0uAAsgA0HpBK1CIIYgA0EIaq2ENwMoIANBATYCJCADQQE2AhQgA0H4wKABNgIQIANBATYCHCADQQM6AEwgA0EENgJIIANCIDcCQCADQQI2AjggA0ECNgIwIAMgA0EwajYCICADIANBKGo2AhggA0EQakH065oBEK0uAAsgA0HpBK1CIIYgA0EIaq2ENwMoIANBATYCJCADQQE2AhQgA0H4wKABNgIQIANBATYCHCADQQM6AEwgA0EENgJIIANCIDcCQCADQQI2AjggA0ECNgIwIAMgA0EwajYCICADIANBKGo2AhggA0EQakGs7JoBEK0uAAsgA0HpBK1CIIYgA0EIaq2ENwMoIANBATYCJCADQQE2AhQgA0H4wKABNgIQIANBATYCHCADQQM6AEwgA0EENgJIIANCIDcCQCADQQI2AjggA0ECNgIwIAMgA0EwajYCICADIANBKGo2AhggA0EQakHk7JoBEK0uAAsgA0HpBK1CIIYgA0EIaq2ENwMoIANBATYCJCADQQE2AhQgA0H4wKABNgIQIANBATYCHCADQQM6AEwgA0EENgJIIANCIDcCQCADQQI2AjggA0ECNgIwIAMgA0EwajYCICADIANBKGo2AhggA0EQakGU7ZoBEK0uAAsgA0HpBK1CIIYgA0EIaq2ENwMoIANBATYCJCADQQE2AhQgA0H4wKABNgIQIANBATYCHCADQQM6AEwgA0EENgJIIANCIDcCQCADQQI2AjggA0ECNgIwIAMgA0EwajYCICADIANBKGo2AhggA0EQakHA7ZoBEK0uAAsgA0HpBK1CIIYgA0EIaq2E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CwJAAkACQAJAIAEoAtgCIglFDQAgCSABKALUAksNACADQagBaiABIAkQ3TEgAyADKQOoATcC7AEgA0GgAWogA0HsAWpBABDWGiADKAKgAUEBcUUNASADKAKkASECIANB4AFqIAIgBCABQTRqKAIAIAFBOGooAgAgAkHI9oMBEOowKAIAayAEEO8eIABBATYCACAAQQxqIANB6AFqKAIANgIAIAAgAykC4AE3AgQMCQsgA0HsAWogByABQcAAaiITKAIAIAIoAggiCyACKAIMIgYgBCAFEPUuAkAgAygC7AEiAg4DAwIAAwsgAUHIAGohCiADKALwASECIAFBCGohFCABQQRqIQ0gAUEgaiEPIAFBHGohEANAAkAgAiIEIAVJDQAgAEEANgIADAoLAkACQCAEIAZPDQAgCiALIARqLQAAIgJqIQ4gCSEHA0ACQAJAAkAgDSgCACAUKAIAIAdBsPKDARDrMCgCBCIJRQ0AIBAoAgAgDygCACAJIA4tAABqQcDygwEQ6jAoAgAhCQwBCyADQZgBaiABIAcQ3DEgAyADKQOYATcChAIDQCADQewBaiADQYQCahCFGSADLQDsAUUNAiADLQDtASIJIAJJDQALIAkgAkcNASADKADuASEJCyAJQQFHDQMLIA0oAgAgFCgCACAHQYixgAEQ6zAoAgwhBwwACwsgBCAGQeCogAEQoRsACwJAIAkgASgC0AJLDQACQCAJRQ0AAkACQCAJIAEoAtQCSw0AIANBkAFqIAEgCRDdMSADIAMpA5ABNwLsASADQYgBaiADQewBakEAENYaIAMoAogBQQFxDQFB2PaDARD9OQALIANB7AFqIAEoAjwgEygCACALIAYgBCAFEPUuIANBgAFqIAMoAuwBIAMoAvABEPQyAkAgAygCgAENACAAQQA2AgAMDQsgAygChAEiAiAESw0DDAILIAMoAowBIQIgA0HgAWogAiAEQQFqIgkgAUE0aigCACABQThqKAIAIAJByPaDARDqMCgCAGsgCRDvHiAAQQE2AgAgAEEMaiADQegBaigCADYCACAAIAMpAuABNwIEDAsLIABBADYCAAwKCyAEQQFqIQIMAAsLQdj2gwEQ/TkACyAAIAMpAvABNwIEIABBDGogA0HsAWpBDGooAgA2AgALIAAgAjYCAAwFCyAAIAMpAvABNwIEIABBDGog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mQE3A4ABIAJBgAFqIAMQiAchAyACQYABahDiECADRQ0NC0EAIQUgASAEQQAQhQ4gAkHoAWpBDGogAUEMaikCADcCACACQegBakEUaiABQRRqKAIANgIAIAEgASkDGDcDUCABKAIAIQMgAUElNgIAIAIgASkCBDcC7AEgAiADNgLoASAGQQApA5ivmQE3AwAgB0EAKQOQr5kBNwMAIAJBACkDiK+ZATcDgAEgAkHoAWogAkGAAWoQiAchAyACQYABahDiECACQegBahDiECACQRhqIAQQggUgAkEAOgCNASACIANBAXM6AIwBIAIgBDYCiAEgAiACKAIYIgQgASgCVCIBIAQgAUsbNgKEASACIAQgASAEIAFJGzYCgAEgAkGAAWoQniwhBAwMCyABIAEpAxg3A1AgASgCACEGIAFBJTYCACACQYABakEMaiIHIAFBDGopAgA3AgAgAkGAAWpBFGoiCCABQRRqKAIANgIAIAIgASkCBDcChAEgAiAGNgKAASACQYABahDiECACQegBahDiECAEQQApA4C+mQE3AwAgBUEAKQP4vZkBNwMAIAJBACkD8L2ZATcD6AEgAUEEaiEEAkAgARCxFiACQegBahDLNQ0AIAJB6AFqEOIQAkAgAS0A1AJBAkcNACABLQDZAkEBcUUNACABKAJUIQUgAkG5gYCAeDYCgAEgASADIAUgAyAFSRsgAyAFIAMgBUsbIAJBgAFqEIgqCyABIAEoAswCIgZBgCByEOEPIAJB6ABqIAEQsQMgAigCbCEFAkACQAJAIAIoAmgNACACIAU2AsABIAEgBhCgPiACQegBakEQakEAKQPo5JkBIgo3AwAgAkHoAWpBCGpBACkD4OSZASILNwMAIAJBACkD2OSZASIMNwPoAQJAAkACQCABELAWIAJB6AFqEMU1DQAgAkHoAWoQ4RAgAkHgAGogARD7ICACKAJkIQQgAigCYCEDIAJBxAFqIAEQ3xogAkGAAWpBEGogCjcDACACQYABakEIaiALNwMAIAJBATYC7AEgAkGk16EBNgLoASACQgE3AvQBIAJBogI2AogCIAIgDDcDgAEgAiACQYQCajYC8AEgAiACQYwCajYChAIgAiACQYABajYCjAIgAkHQAWogAkHoAWoQ5iIgAkGAAWoQ4RAgAkHkAWogAkHEAWpBCGooAgA2AgAgAiACKQLEATcC3AEgAyAEIAJB0AFqEP4iIQUgARCwFiIERQ0BIAQoAgBBJEcNASABIAEpAxg3A1AgASgCACEEIAFBJTYCACAEQSRHDQwgASABKAIEEOMTDAELIAEgASkDGDcDUCABKAIAIQYgAUElNgIAIAJBjAFqIARBCGopAgA3AgAgAkGUAWogBEEQaigCADYCACACIAQpAgA3AoQBIAIgBjYCgAEgAkGAAWoQ4RAgAkHoAWoQ4RAgAkHYAGogARCVASACKAJcIQQgAigCWEUNASAEIQULIAJBwAFqEIIJDAILIARFDQEgAiADIAEoAlQiASADIAFLGzYCkAEgAiADIAEgAyABSRs2AowBIAIgBTYCiAEgAiAENgKEAUEpIQEMAgsgASAGEKA+CyACIAU2AoQBQTIhAQsgAiABNgKAASACQdAAaiACQYABahDpJyACKAJUIQQgAigCUCEFDAwLIAEgASkDGDcDUCABKAIAIQUgAUElNgIAIAcgBEEIaiIGKQIANwIAIAggBEEQaiIHKAIANgIAIAIgBCkCADcChAEgAiAFNgKAASACQYABahDiECACQegBahDiECACQegBakEQakEAKQPo5JkBIgo3AwAgAkHoAWpBCGpBACkD4OSZASILNwMAIAJBACkD2OSZASIMNwPoAQJAIAEQsRYgAkHoAWoQyzUNACACQegBahDiECACQcgAaiABEPsgIAIoAkwhBCACKAJIIQMgAkH0AGogARDfGiACQYABakEQaiAKNwMAIAJBgAFqQQhqIAs3AwBBASEFIAJBATYC7AEgAkGk16EBNgLoASACQgE3AvQBIAJBogI2AsgBIAIgDDcDgAEgAiACQcQBajYC8AEgAiACQYQCajYCxAEgAiACQYABajYChAIgAkHQAWogAkHoAWoQmRYgAkGAAWoQ4hAgAkHkAWogAkH0AGpBCGooAgA2AgAgAiACKQJ0NwLcASADIAQgAkHQAWoQ/iIhBCABELEWIgNFDQwgAygCAEEkRw0MIAEgASkDGDcDUCABKAIAIQMgAUElNgIAIANBJEcNByABIAEoAgQQ4xMMDAsgASABKQMYNwNQIAEoAgAhBSABQSU2AgAgAkGMAWogBikCADcCACACQZQBaiAHKAIANgIAIAIgBCkCADcChAEgAiAFNgKAASACQYABahDiECACQegBahDi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ACABEO0OGiABQdQCQdgCIAEtAOECQQJGG2ooAgAhAwJAAkACQAJAAkAgARDtDiIEDQAgASgC/AEhASACQYCAgIB4NgLAASABIAEgAkHAAWoQ/iIhAQwBCyAELQAAQZsBRw0BIAFBAjoA4QIgASABKQPYAjcD0AIgARDfGCEBCyAAQQA2AgAgACABNgIEDAELIAFBAjoA4QIgASABKALcAiIFNgLUAiABIAEoAtgCIgY2AtACAkACQCABEO0OIgRFDQAgBC0AAEUNAQsgAUHUAmogAUHcAmogAS0A4QJBAkYiBxsoAgAhBCABQdACaiABQdgCaiAHGygCACEHIAJBEGogARDKCyACQQE2AsQBIAJBpNehATYCwAEgAkIBNwLMASACQegENgJgIAJBADoALyACIAJB3ABqNgLIASACIAJBKGo2AlwgAiACQS9qNgIoIAJBMGogAkHAAWoQkQogAkHEAGogAkEYaigCADYCACACIAIpAhA3AjwgByAEIAcgBEkbIAcgBCAHIARLGyACQTBqEP4iIQQCQCABEO0OIgdFDQAgBy0AAEGbAUcNACABQQI6AOECIAEgASkD2AI3A9ACIAEgARDfGBD1GAsgAEEANgIAIAAgBDYCBAwBCyABQQI6AOECIAEgASkD2AI3A9ACIAEoApACIghB////3wNxIQcCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAhBAnFFDQAgASgChAIiBCgCCCIJQf7///8HSw0BAkAgBCgCFEUNACAJDQMgBEF/NgIIIAEoAoACIgkoAggNBCAJQX82AgggBCgCECEKIAlBDGogBCgCFCILEKEwIAkoAhAgCSgCFEECdGogCiALQQJ0EN8KGiAJIAsgCSgCFGo2AhQgBEEANgIUIAkgCSgCCEEBajYCCCAEIAQoAghBAWo2AgggASgChAIhBAsgASAHNgKQAiAEKAIIIglB/v///wdLDQQgBCgCFEUNACAJDQUgBEF/NgIIIAEoAoACIgkoAggNBiAJQX82AgggBCgCECEKIAlBDGogBCgCFCILEKEwIAkoAhAgCSgCFEECdGogCiALQQJ0EN8KGiAJIAsgCSgCFGo2AhQgBEEANgIUIAkgCSgCCEEBajYCCCAEIAQoAghBAWo2AggLIAEgB0HAAHI2ApACIAJB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KAIANgIAIABCooCAgNCAgICAfzcCACAAIAIpAxAiDDcCCCAAQRhqIAJB0AFqQRBqKQMANwIAIABBIGogAkHQAWpBGGooAgA2AgAgAEEQaiABKQMANwIAIAIgDDcD0AEMIwsgAy0AZUEBRw0DCyABEO0NGiACQYQCaiAFQQhqKAIANgIAIAJB8AFqQQhqIAJBEGpBCGooAgA2AgAgAiAFKQIANwL8ASACIAIpAxA3A/ABIARBXWoiBkEcTQ0DDAoLIAJBpAJqIAEQtQ8gAkGYAWpBCGoiAyACQaQCakEMaikCADcDACACQZgBakEQaiIFIAJBpAJqQRRqKQIANwMAIAJBmAFqQRhqIgQgAkGkAmpBHGopAgA3AwAgAiACKQKoAjcDmAEgAigCpAIiAUEiRg0HIAAgAikCyAI3AiQgAEE8aiACQaQCakE8aigCADYCACAAQTRqIAJBpAJqQTRqKQIANwIAIABBLGogAkGkAmpBLGopAgA3AgAgAEEcaiAEKQMANwIAIABBFGogBSkDADcCACAAQQxqIAMpAwA3AgAgACACKQOYATcCBAwICyACQaQCaiABEMECIAIoAqQCIQEgAkGYAWogAkGkAmpBBGpBOBDfChogAUEiRg0EIAIoAuACIQMgAEEEaiACQZgBakE4EN8KGiAAIAM2AjwMBQsgAkGYA2ogARChESACQYgCakEUaiACQZgDakEUaigCADYCACACQYgCakEIaiACQRBqQQhqKAIANgIAIAIgAikCpAM3ApQCIAIgAikDEDcDiAIgAkEgNgKYASACQaQCaiABKAIEIAEoAgggAkGIAmogAkGYAWoQvRkgACACQaQCakHAABDfChoMHgtBASAGdEHrm4CAAXFFDQYMBwsCQCADLQBlDQAgAkGYA2ogARChESACQYgCakEUaiACQZgDakEUaigCADYCACACQYgCakEIaiACQRBqQQhqKAIANgIAIAIgAikCpAM3ApQCIAIgAikDEDcDiAIgAkEgNgKYASACQaQCaiABKAIEIAEoAgggAkGIAmogAkGYAWoQvRkgACACQaQCakHAABDfChoMHQsgAkEgaiABEPcLIAJBLGogAkEQakEIaigCADYCACAAQqKAgICggICAgH83AgAgAEEYaiACQSBqQRBqKQIANwIAIABBIGogAkEgakEYaikCADcCACACIAIpAxA3AiQgACACKQIgNwIIIABBEGogAkEgakEIaikCADcCAAwcCyACQQA2AqQCIAJBDGpBmJeEASACQaQCakGcl4QBEMIrAAsgAkHgAGogAkGYAWpBOBDfChogAkGEAWogAkEYaigCADYCACACIAIpAxA3AnwgAEEEaiACQeAAakE4EN8KGgsgACABNgIADBkLIAJBwABqQQhqIgYgAykDADcDACACQcAAakEQaiAFKQMAIgw3AwAgAkHAAGpBGGogBCkDACINNwMAIAJBwABqQQxqIAJBEGpBCGooAgA2AgAgAiACKQOYATcDQCAAQYKAgIB4NgIEIABBGGogDDcCACAAQSBqIA03AgAgAiACKQMQNwJEIAAgAikDQDcCCCAAQRBqIAYpAwA3AgALIAAgATYCAAwXCyAEQaV/akEESQ0AIARBhX9qQQRJDQACQCAEQf8ASw0AIARBUGpBCkkNACAEQb9/akEaSQ0AIARBn39qQRpJDQAgBEH9AHFBPEcNAwsgBEFEag4HDwQQBAQLDgELIAAgAikD8AE3AgwgAEEBOgAkIAAgBDYCCCAAQqKAgICggICAgH83AgAgAEEcaiACQYACaikDADcCACAAQRRqIAJB+AFqKQMANwIADBULAkAgBEGOf2oOCQgDBgMJAwMDCwALIARBn39qDgYDCwICAgQBCyAAIAIpA/ABNwIMIABBAjoAJCAAIAQ2AgggAEKigICAoICAgIB/NwIAIABBHGogAkGAAmopAwA3AgAgAEEUaiACQfgBaikDADcCAAwTCyAEQe4ARg0ECyACQQs2ApgBIAJBpAJqIAEoAgQgASgCCCACQfABaiACQZgBahC9GSAAIAJBpAJqQcAAEN8KGgwRCyAAIAIpA/ABNwIMIABBBjsBJCAAQQc2AgggAEKigICAoICAgIB/NwIAIABBHGogAkGAAmopAwA3AgAgAEEUaiACQfgBaikDADcCAAwQCyAAIAIpA/ABNwIMIABBhgI7ASQgAEEMNgIIIABCooCAgKCAgICAfzcCACAAQRxqIAJBgAJqKQMANwIAIABBFGogAkH4AWopAwA3AgAMDwsgACACKQPwATcCDCAAQYYEOwEkIABBCTYCCCAAQqKAgICggICAgH83AgAgAEEcaiACQYACaikDADcCACAAQRRqIAJB+AFqKQMANwIADA4LIAAgAikD8AE3AgwgAEGGBjsBJCAAQQo2AgggAEKigICAoICAgIB/NwIAIABBHGogAkGAAmopAwA3AgAgAEEUaiACQfgBaikDADcCAAwNCyAAIAIpA/ABNwIMIABBhgg7ASQgAEENNgIIIABCooCAgKCAgICAfzcCACAAQRxqIAJBgAJqKQMANwIAIABBFGogAkH4AWopAwA3AgAMDAsgACACKQPwATcCDCAAQYYKOwEkIABBCzYCCCAAQqKAgICggICAgH83AgAgAEEcaiACQYACaikDADcCACAAQRRqIAJB+AFqKQMANwIADAsLIAAgAikD8AE3AgggAEECOgAgIABCooCAgLCAgICAfzcCACAAQRhqIAJB8AFqQRBqKQMANwIAIABBEGogAkH4AWopAwA3AgAMCgsgACACKQPwATcCCCAAQQM6ACAgAEKigICAsICAgIB/NwIAIABBGGogAkHwAWpBEGopAwA3AgAgAEEQaiACQfgBaikDADcCAAwJCyACQYgCakEQaiIHIAJB8AFqQRBqKQMANwMAIAJBiAJqQQhqIgggAkHwAWpBCGopAwA3AwAgAiACKQPwATcDiAJBBCEGIAUoAgAgASgCCCIERg0HIAEQwxRB+wBHDQcgAiABEMMUIgk2AuQCIAlB+wBHDQQgAkHoAmpBCGogBUEIaiIJKAIANgIAIAIgBSkCADcD6AIgARDKLw0DIAJBrANqIAkoAgA2AgAgAkGYA2pBCGogAkEQakEIaigCADYCACACIAIpAxA3A5gDIAIgBSkCADcCpAMgAkEeNgKYASACQaQCaiABKAIEIAQgAkGYA2ogAkGYAWoQvRkMBgsgACACKQPwATcCCCAAQQU6ACAgAEKigICAsICAgIB/NwIAIABBGGogAkHwAWpBEGopAwA3AgAgAEEQaiACQfgBaikDADcCAAwHCyAAIAIpA/ABNwIIIABBCDoAICAAQqKAgICwgICAgH83AgAgAEEYaiACQfABakEQaikDADcCACAAQRBqIAJB8AFqQQhqKQMANwIADAYLIAAgAikD8AE3AgggAEEJOgAgIABCooCAgLCAgICAfzcCACAAQRhqIAJB8AFqQRBqKQMANwIAIABBEGogAkH4AWopAwA3AgAMBQsgAkH4AmpBCGogCSgCADYCACACIAUpAgA3A/gCAkAgARDDFCIJ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oQEQ/TkACyAEQQFqIQkCQCADDQAgACEKDAMLIAAgCUECdGpBmANqIQVBACEJQQAhCwNAIAUoAgAiCkGYA2ohBSADIAtBAWoiC0cNAAwDCwsCQAJAIAZBAXENACAGQYD+A3ENAUEAIQMMCQtBlM6hAUEoQYjToQEQ0ycACyACQQhqIAEoAgAQ7jogAkEIahCQMiEDDAcLQcC4oQEQ/TkACyACIAk2AhQgAkEANgIQIAIgCjYCDAJAIAZBAXENACACQThqIAEoAgAgBkGA/gNxQYACRhDvMiACQThqEJAyIgMNBiABKAIAIAAgBEEMbGpBjAJqIgMoAgQgAygCCBDDLSIDDQYgAkEEOgA4IAJBOGoQkDIiAw0GIAJBOGogASgCABDrOiACQThqEJAyIgMNBiAAIARBGGxqIAEQnwEiAw0GIAZB/4F8cUGABHIhBiACQQQ6ADggCSEEIAohACACQThqEJAyIgNFDQEMBgsLQZTOoQFBKEHo0qEBENMnAAsgASAAQQRqEKgOIQMMAwsgASgCACAAKAIIIAAoAgwQwy0hAwwCCwJAAkACQCAAKwMQvSIMQv///////////wCDQv/////////3/wBVDQAgDEL/////////B4MhDSAMQjSIpyEAIAxCAFMNAUEAIQkgAkEIaiELDAILIAJBCGogASgCABDvOiACQQhqEJAyIQMMAwsgAkEIakEBaiELIAJBLToACEEBIQkLIABB/w9xIQACQAJAAkACQAJAAkACQAJAAkACQCANQgBSDQAgAEUNAQsgDUIAUiAAQQJJciEEIA1CgICAgICAgAiEIA0gABsiDEIChiEOIAxCAYMhDwJAAkACQCAAQct3akHMdyAAGyIAQX9KDQAgDEHA3pcBIABBhaJTbEEUdiAAQX9HayIDIABqIgpBBHQiAGspAwBByN6XASAAaykDACADIApBsdm1f2xBE3ZrQfwAaiACQTBqIAJBOGogBBDkJyEQIAIpAzghDSACKQMwIREgA0ECSQ0BIANBP08NBiAOQn8gA62GQn+Fg1BFDQZBACEFDAILIAwgAEHB6ARsQRJ2IABBA0trIgpBBHQiA0Hgs5cBaikDACADQeizlwFqKQMAIAogAGsgCkHPpsoAbEETdmpB/QBqIAJBMGogAkE4aiAEEOQnIRAgAikDOCENIAIpAzAhESAKQRZP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NgKMASACIAAoAhwiAUEARzoALCACIAJBiAFqNgJIIAIgAkEsajYCiAEgCiAJIAJBwABqEIo1DQcgAkECNgJEIAJBqI6DATYCQCACQgE3AkwgAkERNgKMASACIABBGGo2AogBIAIgAkGIAWo2AkggCiAJIAJBwABqEIo1DQcgAkECNgJEIAJByI6DATYCQCACQgE3AkwgAkERNgKMASACIAAoAhQiFjYCLCACIAJBiAFqNgJIIAIgAkEsajYCiAEgCiAJIAJBwABqEIo1DQcgAkECNgJEIAJB0KGAATYCQCACQgE3AkwgAkERNgKMASACIABBrAJqNgKIASACIAJBiAFqNgJIIAogCSACQcAAahCKNQ0HIAJBAjYCRCACQfihgAE2AkAgAkIBNwJMIAJBETYCjAEgAiAAQbACajYCiAEgAiACQYgBajYCSCAKIAkgAkHAAGoQijUNByACQQI2AkQgAkGcooABNgJAIAJCATcCTCACQRE2AowBIAIgBjYCiAEgAiACQYgBajYCSCAKIAkgAkHAAGoQijUNByACQQI2AkQgAkG8ooABNgJAIAJCATcCTCACQSg2AowBIAIgAEEsajYCiAEgAiACQYgBajYCSCAKIAkgAkHAAGoQijUNByACQdyigAE2AkAgAkIBNwJMIAJBETYCjAEgACgCJCEcIAJBAjYCRCACIBxBACABGyAWIA5qQQJ0ajYCLCACIAJBiAFqNgJIIAIgAkEsajYCiAEgCiAJIAJBwABqEIo1DQcgAkEANgJQIAJBATYCRCACQdiOgwE2AkAgAkIENwJIIAogCSACQcAAahCKNSEDDAcLIAJBADYCUEEBIQMgAkEBNgJEIAJBjKmAATYCQCACQgQ3AkggBCAFIAJBwABqEIo1DQYLIAIgEDYCPCACQQc2AjggAkEHNgIwIAIgFjYChAEgAiACQYQBajYCNCACIAJBPGo2AiwgAkEDOgB8IAJBCDYCeCACQqCAgIAQNwJwIAJCgICAgOAANwJoIAJBAjYCYCACQQM6AFwgAkEINgJYIAJCIDcCUCACQoCAgIDgADcCSCACQQI2AkAgAkECNgKcASACQQM2AowBIAJBlKCAATYCiAEgAiACQcAAajYCmAEgAkECNgKUASACIAJBLGo2ApABIAQgBSACQYgBahCKNQ0EQQAhHUEAIRxBACEeQQAh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Rg0AIAIoArgBIQYCQCAFRQ0AIAMgBEEobGohByACQd0BaiEIQQAhCSACQYMBaiEKIAUhCwNAIAkhDCADIAdGDQECQAJAAkACQAJAAkAgAygCACINDgUAAQIDBAALIAMoAhwhDiADKAIYIQ8CQCADKQMIIjdCA4NCAFINACA3pyIBIAEoAgAiAUEBajYCACABQX9MDQsLIAMpAxAiOEIDg0IAUg0EIDinIgEgASgCACIBQQFqNgIAIAFBf0oNBAwKCyADKQIQITgCQAJAIAMoAgQNACADKAIMIQkgAygCCCEBQQAhEAwBCyADKAIIIQkQrjIhASACQbABaiAJED8gAUE4aiACQbABakE4aikDADcDACABQTBqIAJBsAFqQTBqKQMANwMAIAFBKGogAkGwAWpBKGopAwA3AwAgAUEgaiACQbABakEgaikDADcDACABQRhqIAJBsAFqQRhqKQMANwMAIAFBEGogAkGwAWpBEGopAwA3AwAgAUEIaiACQbABakEIaikDADcDACABIAIpA7ABNwMAQQEhEAsgCa1CIIYgAa2EITcMAwsgAykCCCE3IAMoAgQhARCuMiEQIAJBsAFqIAEQPyAQQThqIAJBsAFqQThqKQMANwMAIBBBMGogAkGwAWpBMGopAwA3AwAgEEEoaiACQbABakEoaikDADcDACAQQSBqIAJBsAFqQSBqKQMANwMAIBBBGGogAkGwAWpBGGopAwA3AwAgEEEQaiACQbABakEQaikDADcDACAQQQhqIAJBsAFqQQhqKQMANwMAIBAgAikDsAE3AwAMAgsQsDIhECADKAIEIhEoAgQhEiARKAIAIRMgAkGAAWogEUHAAGoQnwggESgCgAEhFCARKAJ0IRUgESgCcCEWIAJBsAFqIBEoAoQBIhdBCEHYABDhEyACKAK0ASEYIAIoArABQQFGDQUgAigCuAEhGQJAIBhFDQAgF0HYAGwhGkEAIRsgGCEcA0AgGiAbRg0BAkACQCAUIBtqIgEoAgBBBUYNACABQSxqKAIAIR0gAUEoaigCACEeAkACQCABQTBqKQMAIjlCAFINACABQcQAaigCACEfIAFBwABqKAIAIQkgAUE4aikDACI5pyEgAkAgOUIDg0IAUg0AICAgICgCACIhQQFqNgIAICFBf0wNDgsgOUIgiKchIkIAITkMAQsgAUE8aigCACEiIAFBOGooAgAhICABQdQAaigCACEjIAFB0ABqKAIAISQCQCA5QgODQgBSDQAgOaciCSAJKAIAIglBAWo2AgAgCUF/TA0NCyABQcwAaigCACElIAFByABqKAIAISYgAUHAAGopAwAiOqchCQJAIDpCA4NCAFINACAJIAkoAgAiIUEBajYCACAhQX9MDQ0LIDpCIIinIR8LAkACQAJAAkACQAJAIAEoAgAiIQ4FAAECAwUACyACQbABaiABQQhqEPYFIAIoAswBIScgAigCyAEhKCACKALEASEpIAIoAsABISogAigCvAEhKyACKAK4ASEsIAIoArQBIS0gAigCsAEhLiAwIS8MBAsgAUEUaigCACErIAFBEGooAgAhLAJAIAFBBGooAgANACABQQhqKAIAIS4gAUEMaigCACEtQQAhL0EAITAMBAsgAUEIaigCACEBEK4yIS4gAkGwAWogARA/IC5BOGogAkGwAWpBOGopAwA3AwAgLkEwaiACQbABakEwaikDADcDACAuQShqIAJBsAFqQShqKQMANwMAIC5BIGogAkGwAWpBIGopAwA3AwAgLkEYaiACQbABakEYaikDADcDACAuQRBqIAJBsAFqQRBqKQMANwMAIC5BCGogAkGwAWpBCGopAwA3AwAgLiACKQOwATcDAEEBIS9BASEwDAMLELAyIS8gAkGwAWogAUEEaigCABCNBSAvIAJBsAFqQaABEN8KGgwBCyABQRxqKAIAISkgAUEYaigCACEqIAFBFGooAgAhKyABQRBqKAIAISwgAkGwAWogAUEEahChASABQSRqKAIAIScgAUEgaigCACEoIAIoArgBIS0gAigCtAEhLiACKAKwASEvCyAvITALIB+tQiCGIAmthCE6ICKtQiCGICCthCE7IC8hCSAuISAgLSEiDAELIAFBDGooAgAhIiABQQhqKAIAISAgAUEEaigCACEBEK4yIQkgAkGwAWogARA/IAlBOGogAkGwAWpBOGopAwA3AwAgCUEwaiACQbABakEwaikDADcDACAJQShqIAJBsAFqQShqKQMANwMAIAlBIGogAkGwAWpBIGopAwA3AwAgCUEYaiACQbABakEYaikDADcDACAJQRBqIAJBsAFqQRBqKQMANwMAIAlBCGogAkGwAWpBCGopAwA3AwAgCSACKQOwATcDAEEFISELIBkgG2oiASAhNgIAIAFB1ABqICM2AgAgAUHQAGogJDYCACABQcwAaiAlNgIAIAFByABqICY2AgAgAUHAAGogOjcDACABQThqIDs3AwAgAUEwaiA5NwMAIAFBLGogHTYCACABQShqIB42AgAgAUEkaiAnNgIAIAFBIGogKDYCACABQRxqICk2AgAgAUEYaiAqNgIAIAFBFGogKzYCACABQRBqICw2AgAgAUEMaiAiNgIAIAFBCGogIDYCACABQQRqIAk2AgAgG0HYAGohGyAcQX9qIhwNAAsLIBEtAIgBIR8CQAJAIBEoAngiCQ0AQQAhIgwBCxCxMiEiIAkoAgQhASAJKAIQITEgCSgCDCEyIAJBsAFqIAkoAggiGkEEQQQQ4RMgAigCtAEhFCACKAKwAUEBRg0HIAIoArgBITMCQCAURQ0AIBpBAnQhCSAzIRsgFCEcA0AgCUUNASABKAIAISEQrDIhICACQbABaiAhEIYBIBsgICACQbABakHgABDfCjYCACAJQXxqIQkgG0EEaiEbIAFBBGohASAcQX9qIhwNAAsLICIgMTYCECAiIDI2AgwgIiAaNgIIICIgMzYCBCAiIBQ2AgALIAJBwABqQShqIjMgAkGAAWpBKGoiASkDADcDACACQcAAakEgaiIxIAJBgAFqQSBqIgkpAwA3AwAgAkHAAGpBGGoiMiACQYABakEYaiIbKQMANwMAIAJBwABqQRBqIjQgAkGAAWpBEGoiHCkDADcDACACQcAAakEIaiI1IAJBgAFqQQhqIiEpAwA3AwAgAiACKQOAATcDQCACQfAAaiARQZABahChAUEGISACQCARLQA8QQZGDQAgESgCDCEaIBEoAgghFCACQbABaiARQRBqEJ8IIAEgAkGwAWpBKGooAgA2AgAgCSACQbABakEgaikDADcDACAbIAJBsAFqQRhqKQMANwMAIBwgAkGwAWpBEGopAwA3AwAgISACQbABakEIaikDADcDACACQfwAakECaiAIQQJqLQAAOgAAIAIgAikDsAE3A4ABIAIgCC8AADsBfCACLQDcASEgCyACQbABakEoaiIRIDMpAwA3AwAgAkGwAWpBIGoiMyAxKQMANwMAIAJBsAFqQRhqIjEgMikDADcDACACQbABakEQaiIyIDQpAwA3AwAgAkGwAWpBCGoiNCA1KQMANwMAIAJBCGoiNSACQfAAakEIaigCADYCACACQRBqQQhqIjYgISkDADcDACACQRBqQRBqIiEgHCkDADcDACACQRBqQRhqIhwgGykDADcDACACQRBqQSBqIhsgCSkDADcDACACQRBqQShqIgkgASgCADYCACACIAIpA0A3A7ABIAIgAikCcDcDACACIAIpA4ABNwMQIAJBDGpBAmoiASACQfwAakECai0AADoAACACIAIvAXw7AQwgECAaNgIMIBAgFDYCCCAQIBI2AgQgECATNgIAIBAgAikDEDcDECAQQRhqIDYpAwA3AwAgEEEgaiAhKQMANwMAIBBBKGogHCkDADcDACAQQTBqIBspAwA3AwAgEEE4aiAJKAIANgIAIBAgIDoAPCAQIAIvAQw7AD0gEEE/aiABLQAAOgAAIBBB6ABqIBEpAwA3AwAgEEHgAGogMykDADcDACAQQdgAaiAxKQMANwMAIBBB0ABqIDIpAwA3AwAgEEHIAGogNCkDADcDACAQIAIpA7ABNwNAIBAgHzoAiAEgECAXNgKEASAQIBk2AoABIBAgGDYCfCAQICI2AnggECAVNgJ0IBAgFjYCcCAQQYwBaiAKKAAANgAAIBAgAigAgAE2AIkBIBBBmAFqIDUoAgA2AgAgECACKQMANwOQAQwBCyADKAIcIQ4gAygCGCEPIAMpAhAhOCACQbABaiADQQRqEKEBIAMpAiAhPCACKQK0ASE3IAIoArABIRALIAxBAWohCSADQShqIQMgBiAMQShsaiIBIDw3AyAgASAONgIcIAEgDzYCGCABIDg3AxAgASA3NwMIIAEgEDYCBCABIA02AgAgC0F/aiILDQALCyAAIAQ2AgggACAGNgIEIAAgBTYCACACQdACaiQADwsgBSACKAK4ARD4OQALIBggAigCuAEQ+DkACyAUIAIoArgBEPg5AAsAC6gcAgl/AX4jAEEQayIBJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiAkF0aiIDQQcgA0EmSRtBf2oOJAABAgMEBQYHCAkKCwwNDg8QERITIhQVFhciGBkaGxwdHh8gISILIAAoAgghBAJAIAAoAgwiAkUNACAEIQMDQAJAIAMoAgBBAkYNACADQQxq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QCEKIAMtAD8hCyADKAIwIQwgAy0APiENIAMtADwhDiADKAIgIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAVBAnEiEEUNACABKAKEAiIRKAIIIhJB/v///wdLDQICQCARKAIURQ0AIBINBCARQX82AgggASgCgAIiEigCCA0OIBJBfzYCCCARKAIQIRMgEkEMaiARKAIUIhQQoTAgEigCECASKAIUQQJ0aiATIBRBAnQQ3woaIBIgFCASKAIUajYCFCARQQA2AhQgEiASKAIIQQFqNgIIIBEgESgCCEEBajYCCAsgASAGNgKQAiABKAKEAiISKAIIIhRB/v///wdLDQRBgAJBACAHQQFxG0GAAUEAIAhBAXEbciAGQf/87/8DcXIhESASKAIURQ0BIBQNBSASQX82AggCQCABKAKAAiIUKAIIDQAgFEF/NgIIIBIoAhAhFSAUQQxqIBIoAhQiExChMCAUKAIQIBQoAhRBAnRqIBUgE0ECdBDfChogFCATIBQoAhRqNgIUIBJBADYCFCAUIBQoAghBAWo2AgggEiASKAIIQQFqNgIIDAILQfyDmwEQ6SIACyABIAY2ApACQYACQQAgB0EBcRtBgAFBACAIQQFxG3IgBkH//O//A3FyIRELIAEgETYCkAIgAygCJCEWIAMoAighFyADKAIsIRhBACETAkACQAJAAkAgAS0AmAJBAkcNAAJAIBBFDQAgASgChAIiEigCCCIUQf7///8HSw0JIBIoAhRFDQAgFA0KIBJBfzYCCCABKAKAAiIUKAIIDQsgFEF/NgIIIBIoAhAhEyAUQQxqIBIoAhQiEBChMCAUKAIQIBQoAhRBAnRqIBMgEEECdBDfChogFCAQIBQoAhRqNgIUIBJBADYCFCAUIBQoAghBAWo2AgggEiASKAIIQQFqNgIICyABIBFBgCByNgKQAgJAAkACQCABEO0OIhJFDQAgEi0AAEESRg0BC0EAIRMgARDtDiISRQ0BIBItAABBPUcNASABKAKkASISIRQgAUGkAWoiECETAkAgEkGBAUkNACABQSRqIRMgASgCJCEUCwJAIBRFDQAgEyAUQX9qNgIAIBAoAgAhEgsCQCASQYEBSQ0AIAFBJGohECABKAIkIRILIBJFDQAgECASQX9qNgIACyAEQRBqIAFBAEEB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CyADQZ6AgIB4NgIADJwBCyADQZ+AgIB4NgIADJsBCyADQaCAgIB4NgIADJoBCyAAQaGAgIB4NgIIIAAgASgCDDYCDAyZAQsgA0GigICAeDYCAAyYAQsgA0GjgICAeDYCAAyXAQsgAEGkgICAeDYCCCAAIAEpAgw3AgwMlgELIANBpYCAgHg2AgAMlQELIANBpoCAgHg2AgAMlAELAkAgASkDECIFQgODQgBSDQAgBaciASABKAIAIgFBAWo2AgAgAUF/TA2VAQsgAEGngICAeDYCCCAAIAU3AxAMkwELIANBqICAgHg2AgAMkgELIANBqYCAgHg2AgAMkQELIANBqoCAgHg2AgAMkAELIANBq4CAgHg2AgAMjwELIAJBFGogASgCECABKAIUEO0gIABBrICAgHg2AgggACACKQIUNwIMIABBFGogAkEUakEIaigCADYCACAAIAEpAxg3AxgMjgELIANBrYCAgHg2AgAMjQELIANBroCAgHg2AgAMjAELIANBr4CAgHg2AgAMiwELIAJBFGogASgCECABKAIUEO0gIABBsICAgHg2AgggACACKQIUNwIMIABBFGogAkEUakEIaigCADYCACAAIAEpAxg3AxgMigELIAJBFGogASgCECABKAIUEPUbIABBsYCAgHg2AgggAEEUaiACQRRqQQhqKAIANgIAIAAgAikCFDcCDAyJAQsgA0GygICAeDYCAAyIAQsgA0GzgICAeDYCAAyHAQsgAkEIaiABKAIMIAEoAhAQ7SAgAkEUaiABKAIYIAEoAhwQ7SAgA0EIaiACQQhqQQhqKAIANgIAIAMgAikCCDcCACAAIAIpAhQ3AhQgAEEcaiACQRRqQQhqKAIANgIADIYBCyAAQbWAgIB4NgIIIAAgASkCDDcCDAyFAQsgA0G2gICAeDYCAAyEAQsgA0G3gICAeDYCAAyDAQsgA0G4gICAeDYCAAyCAQsgAEG5gICAeDYCCCAAIAEpAgw3AgwMgQELIANBuoCAgHg2AgAMgAELIANBu4CAgHg2AgAMfwsgA0G8gICAeDYCAAx+CyADQb2AgIB4NgIADH0LIANBvoCAgHg2AgAMfAsgA0G/gICAeDYCAAx7CyADQcCAgIB4NgIADHoLIANBwYCAgHg2AgAMeQsgA0HCgICAeDYCAAx4CyADQcOAgIB4NgIADHcLAkAg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KAIEIRIgBCgCACEUIARBgIGAgHg2AhggASAUIBIgBEEYahCWKgsCQCADKAIAQQVHDQAgDyABKALUAiISIA8gEkkbIRQgDyASIA8gEksbIQIgAygCFCESIAMoAhAhECADKQMIIR0CQCAOQf8BcUEDRg0AIARBtYGAgHg2AhggASAUIBIgFCASSRsgFCASIBQgEksbIARBGGoQlioLIAAgCjoAKSAAIAs6ACggACANOgAnIAAgCToAJSAAIA46ACQgACARNgIgIAAgAjYCHCAAIBQ2AhggACASNgIUIAAgEDYCECAAIB03AwggAEEGNgIAIAAgDEEBcToAJgwECyAPIAEoAtQCIhIgDyASSRshFCAPIBIgDyASSxshEgJAIA1BAXFFDQAgESgCGEGAgICAeEYNACAEQaGBgIB4NgIYIAEgFCASIARBGGoQlioLIARBGGpBDGogA0EIaikCADcCACAEQRhqQRRqIANBEGopAgA3AgAgBEEYakEcaiADQRhqKQIANwIAIABBBTYCACAEIAMpAgA3AhwgACAEKQIYNwIEIABBDGogBEEYakEIaikCADcCACAAQRRqIARBGGpBEGopAgA3AgAgAEEcaiAEQRhqQRhqKQIANwIAIABBJGogBEE4aigCADYCACAAIA46ADkgACAJOgA4IAAgCjoANyAAIAs6ADYgACANOgA1IAAgDEEBcToANCAAIBE2AjAgACASNgIsIAAgFDYCKAwDCyACIBkQyBggGyACEN0zCyATRQ0AIBMQ3REgEygCACATQQRqKAIAEN4zIBNBFEEEEO4cCyAXIBgQmi0gFiAXENwzIAEgBhDcESAAQQ02AgAgACAVNgIEIAEgBRDcESADELUaCyAEQZABaiQAC/waAgt/An4jAEGAAmsiAiQAIAEQ7Q4aIAFB1AJB2AIgAS0A4QJBAkYbaigCACEDAkACQAJAAkAgARDtDiIEDQAgASgC/AEhASACQYCAgIB4NgKgASABIAEgAkGgAWoQ/iIhAQwBCyAELQAAQZsBRw0BIAFBAjoA4QIgASABKQPYAjcD0AIgARDfGCEBCyAAQQQ6ADQgACABNgIADAELIAFBAjoA4QIgASABKQPYAjcD0AICQAJAIAEQ7Q4iBEUNACAELQAARQ0BCyABQdQCaiABQdwCaiABLQDhAkECRiIDGygCACEEIAFB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8ABqQSQQ3woaQQAhAQwCCyABIAEpAxg3A1AgASgCACEEIAFBJTYCAAJAIARBJEcNACABKAIEIQEMBAtBlM6hAUEoQdjhmQEQ0ycACyAAIAMoAkg2AgRBByEBCyAAIAE2AgAMAgsgA0GAAWoiBUEAKQPY35kBNwMAIANB+ABqIgZBACkD0N+ZATcDACADQQApA8jfmQE3A3AgA0HwAGogBBCIByECIANB8ABqEOIQAkACQAJAAkAgAg0AIAVBACkD8N+ZATcDACAGQQApA+jfmQE3AwAgA0EAKQPg35kBNwNwIANB8ABqIAQQiAchBCADQfAAahDiECAEDQIgA0HwAGpBBHIgARDfGiADQRBqIAEQ+yAgA0EcNgKEASADQeCCmwE2AoABIANBsICAgHg2AnAgAygCECADKAIUIANB8ABqEP4iIQQCQCABELEWIgJFDQAgAigCAEEkRw0AIAEgASkDGDcDUCABKAIAIQIgAUElNgIAIAJBJEcNAiABIAEoAgQQ4xMLIABBBzYCACAAIAQ2AgQMBQsgARDzMSEHAkAgARCxFiIEDQAgASgCsAIhASADQYCAgIB4NgJIIAEgASADQcgAahD+IiEBDAMLAkAgBCgCAEEkRw0AIAEgASkDGDcDUCABKAIAIQQgAUElNgIAAkAgBEEkRw0AIAEoAgQhAQwEC0GUzqEBQShB2OGZARDTJwALIAEgASkDGDcDUCABKAIAIQQgAUElNgIAIANByABqQQxqIAFBDGopAgA3AgAgA0HIAGpBFGogAUEUaigCADYCACADIAEpAgQ3AkwgAyAENgJIIANByABqEOIQQcjfmQEQ4hAgA0EANgIkIANCgICAgIABNwIcIAFBBGohBCADQcgAakEEciECIANByABqQQhqIQYgA0HwAGpBCGohCCADQcgAakEQaiEJQQAhCkEAIQsCQAJAA0ACQAJAAkACQAJAIAEQsRZFDQAgCUEAKQOI4JkBIhU3AwAgBkEAKQOA4JkBIhY3AwAgA0EAKQP435kBIhc3A0ggARCxFiADQcgAahDLNSEFIANByABqEOIQIAUNACADQdgBakEQaiIFQQApA5iOoQEiGDcDACADQdgBakEIaiIMQQApA5COoQEiGTcDACADQQApA4iOoQEiGjcD2AEgARCxFiADQdgBahDLNQ0BIANB2AFqEOIQAkAgC0H+/3tLDQAgCyAKckUNACADQbuAgIB4NgJIIAEgCyAKIANByABqEIgqCyABEPMxIQ0gBUEAKQOg4JkBNwMAIAxBACkDmOCZATcDACADQQApA5DgmQE3A9gBAkAgARCxFiADQdgBahDLNSIODQAgA0HYAWoQ4hAgA0HIAGogARCZBiADKAJMIQ0gAygCSCIPQQdGDQcgCCAGKQMANwMAIAhBGGogBkEYaikDADcDACAIQRBqIAZBEGopAwA3AwAgCEEIaiAGQQhqKQMANwMAIAMgDTYCdCADIA82AnAgA0EcaiADQfAAahDiKgwFCyACIAQpAgA3AgAgASABKQMYNwNQIAEoAgAhCyABQSU2AgAgAkEIaiAEQQhqKQIANwIAIAJBEGogBEEQaigCADYCACADIAs2AkggA0HIAGoQ4hAgA0HYAWoQ4hAgASgCVCELIANByABqIAFBABC6AQJAIAMoAkgiCkEHRg0AIANBKGpBCGoiECAGQQhqKQMANwMAIANBKGpBEGoiESAGQRBqKQMANwMAIANBKGpBGGoiEiAGQRhqKQMANwMAIAMgBikDADcDKCADKAJMIRMgASgCVCEUEMAyIg8gEzYCBCAPIAo2AgAgDyADKQMoNwMIIA9BEGogECkDADcDACAPQRhqIBEpAwA3AwAgD0EgaiASKQMANwMAIANBADYCYCADIA0gCyANIAtLGzYCXCADIA0gCyANIAtJGzYCWCADIA0gFCANIBRLGyIKNgJUIAMgDSAUIA0gFEkbIgs2AlAgAyAPNgJMIANBAjYCSCADQRxqIANByABqEOIqDAULIAMoAkwhDQwGCyADQdgBakEQakEAKQOI4JkBIhU3AwAgA0HYAWpBCGpBACkDgOCZASIWNwMAIANBACkD+N+ZASIXNwPYAQJAIAEQsRYgA0HYAWoQyzUNACADQdgBahDiECADIAEQ+yAgAygCBCEEIAMoAgAhAiADQaQBaiABEN8aIANByABqQRBqIBU3AwAgA0HIAGpBCGogFjcDACADQQE2AtwBIANBpNehATYC2AEgA0IBNwLkASADQaICNgLQASADIBc3A0ggAyADQcwBajYC4AEgAyADQdQBajYCzAEgAyADQcgAajYC1AEgA0GwAWogA0HYAWoQmRYgA0HIAGoQ4hAgA0HEAWogA0GkAWpBCGooAgA2AgAgAyADKQKkATcCvAEgAiAEIANBsAFqEP4iIQ0gARCxFiIERQ0GIAQoAgBBJEcNBiABIAEpAxg3A1AgASgCACEEIAFBJTYCACAEQSRHDQIgASABKAIEEOMTDAYLIAEgASkDGDcDUCABKAIAIQIgAUElNgIAIANB1ABqIARBCGopAgA3AgAgA0HcAGogBEEQaigCADYCACADIAQpAgA3AkwgAyACNgJIIANByABqEOIQIANB2AFqEOIQAkACQCABLQDUAkECRw0AIAEtANcCQQFxDQELQQAhAiABLQDNAkHAAHFFDQMLIANB2AFqQRBqQQApA7jgmQE3AwAgA0HYAWpBCGpBACkDsOCZATcDACADQQApA6jgmQE3A9gBAkAgARCxFiADQdgBahDLNSICRQ0AIAEgASkDGDcDUCABKAIAIQUgAUElNgIAIANB1ABqIARBCGopAgA3AgAgA0HcAGogBEEQaigCADYCACADIAQpAgA3AkwgAyAFNgJIIANByABqEOIQCyADQdgBahDiEAwCCyACIAQpAgA3AgAgASABKQMYNwNQIAEoAgAhBSABQSU2AgAgAkEIaiAEQQhqKQIANwIAIAJBEGogBEEQaigCADYCACADIAU2AkggA0HIAGoQ4hAgA0HYAWoQ4hAgA0EHNgJIIANBHGogA0HIAGoQ4ioMAwtBlM6hAUEoQdjhmQEQ0ycACyAAIAMpAhw3AgQgACACOgAcIABBADYCGCAAQQE2AgAgAEEMaiADQSRqKAIANgIAIAAgByABKAJUIgEgByABSxs2AhQgACAHIAEgByABSRs2AhAMCAsgCSAVNwMAIAYgFjcDACADIBc3A0ggARCxFiADQcgAahDLNSENIANByABqEOIQIA0NACAFIBg3AwAgDCAZNwMAIAMgGjcD2AECQCABELEWIANB2AFqEMs1DQAgA0HYAWoQ4hAgA0EIaiABEPsgIAMoAgwhBCADKAIIIQIgA0GYAWogARDfGiADQdgAakEAKQOYjqEBNwMAIANByABqQQhqQQApA5COoQE3AwAgA0EBNgLcASADQaTXoQE2AtgBIANCATcC5AEgA0GiAjYC0AEgA0EAKQOIjqEBNwNIIAMgA0HMAWo2AuABIAMgA0HUAWo2AswBIAMgA0HIAGo2AtQBIANBsAFqIANB2AFqEJkWIANByABqEOIQIANB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AiAQNgIQIAIgDzYCDCACQQQ2AggMBgsgAygCCCEJIAMoAhQhDCADKAIQIQ0gAkHAAGogAygCDCIOQQhBKBDhEyACKAJEIQ8gAigCQEEBRg0KIAIoAkghEAJAIA9FDQAgDkEobCERIBAhASAPIRIDQCARRQ0BIAJBwABqIAkQvgQgAUEgaiACQcAAakEgaikDADcDACABQRhqIAJBwABqQRhqKQMANwMAIAFBEGogAkHAAGpBEGopAwA3AwAgAUEIaiACQcAAakEIaikDADcDACABIAIpA0A3AwAgEUFYaiERIAFBKGohASAJQShqIQkgEkF/aiISDQALC0EAIQFBACEJAkAgAygCGCIRRQ0AEKsyIQkgESkCBCEaIBEoAgAhERCsMiESIAJBwABqIBEQhgEgEiACQcAAakHgABDfCiERIAkgGjcCBCAJIBE2AgALAkAgAygCHCIRRQ0AELEyIQEgESgCDCESIBEoAhAhEyACQcAAaiAREPwIIAFBEGogEzYCACABIAIpAkA3AgAgAiASNgJMIAFBCGogAkHAAGpBCGopAgA3AgALIAIgATYCJCACIAk2AiAgAiAMNgIcIAIgDTYCGCACIA42AhQgAiAQNgIQIAIgDzYCDCACQQU2AggMBQsgAy0AFCESIAMoAgghDyADKAIEIQ4gAygCECEJEK4yIQEgAkHAAGogCRA/IAFBOGogAkHAAGpBOGopAwA3AwAgAUEwaiACQcAAakEwaikDADcDACABQShqIAJBwABqQShqKQMANwMAIAFBIGogAkHAAGpBIGopAwA3AwAgAUEYaiACQcAAakEYaikDADcDACABQRBqIAJBwABqQRBqKQMANwMAIAFBCGogAkHAAGpBCGopAwA3AwAgASACKQNANwMAIAMtABYhECADLQAVIQwCQAJAIAMoAgwiEQ0AQQAhCQwBCxCrMiEJIBEpAgQhGiARKAIAIREQrDIhDSACQcAAaiAREIYBIA0gAkHAAGpB4AAQ3wohESAJIBo3AgQgCSARNgIACyACIBA6AB4gAiAMOgAdIAIgEjoAHCACIAE2AhggAiAJNgIUIAIgDzYCECACIA42AgwgAkEGNgIIDAQLIAMoAgwhEiADKAIIIQ8gAygCBCEJEK4yIQEgAkHAAGogCRA/IAFBOGogAkHAAGpBOGopAwA3AwAgAUEwaiACQcAAakEwaikDADcDACABQShqIAJBwABqQShqKQMANwMAIAFBIGogAkHAAGpBIGopAwA3AwAgAUEYaiACQcAAakEYaikDADcDACABQRBqIAJBwABqQRBqKQMANwMAIAFBCGogAkHAAGpBCGopAwA3AwAgASACKQNANwMAIAMtABQhDgJAAkAgAygCECIRDQBBACEJDAELEKsyIQkgESkCBCEaIBEoAgAhERCsMiEQIAJBwABqIBEQhgEgECACQcAAakHgABDfCiERIAkgGjcCBCAJIBE2AgALIAIgDjoAHCACIAk2AhggAiASNgIUIAIgDzYCECACIAE2AgwgAkEHNgIIDAMLIAMpAyghGiADKAIwIQkQrjIhASACQcAAaiAJED8gAUE4aiACQcAAakE4aikDADcDACABQTBqIAJBwABqQTBqIgkpAwA3AwAgAUEoaiACQcAAakEoaikDADcDACABQSBqIAJBwABqQSBqIhEpAwA3AwAgAUEYaiACQcAAakEYaiISKQMANwMAIAFBEGogAkHAAGpBEGoiDykDADcDACABQQhqIAJBwABqQQhqIg4pAwA3AwAgASACKQNANwMAIAMtADQhECACQcAAaiADEL4EIAkgATYCACACQQhqQShqIBo3AwAgAkEIakEIaiAOKQMANwMAIAJBCGpBEGogDykDADcDACACQQhqQRhqIBIpAwA3AwAgAkEIakEgaiARKQMANwMAIAIgEDoAdCACQQhqQTBqIAkpAwA3AwAgAiACKQNANwMIDAILIAMoAhghFCADKAIUIRUgAygCECEBEK4yIQ0gAkHAAGogARA/IA1BOGogAkHAAGpBOGopAwA3AwAgDUEwaiACQcAAakEwaikDADcDACANQShqIAJBwABqQShqKQMANwMAIA1BIGogAkHAAGpBIGoiDikDADcDACANQRhqIAJBwABqQRhqIhApAwA3AwAgDUEQaiACQcAAakEQaiIMKQMANwMAIA1BCGogAkHAAGpBCGoiDykDADcDACANIAIpA0A3AwAgAygCCCEJIAMtACUhFiADLQAkIRcgAkHAAGogAygCDCIYQQhBKBDhEyACKAJEIRMgAigCQEEBRg0HIAIoAkghGQJAIBNFDQAgGEEobCERIBkhASATIRIDQCARRQ0BIAJBwABqIAkQvgQgAUEgaiAOKQMANwMA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CyAAIAI2AgAMBQsCQAJAAkACQAJAIAEoAtACIghFDQACQCAIIAEoAswCSw0AIAFBEGooAgAgAUEUaigCACAIIAEoAjx2QX5qQbD0gwEQ7zAiAigCBCACKAIIQQAQ8DAoAgAhAiADQRBqIAIgBCABQRxqKAIAIAFBIGooAgAgAkGg9IMBEOowKAIAayAEEO8eIABBATYCACAAQQxqIANBGGooAgA2AgAgACADKQIQNwIEDAoLIANBIGogByABQSxqIhMoAgAgAigCCCILIAIoAgwiCSAEIAUQ9S4CQCADKAIgIgIOAwUEAAULIAFBwABqIQcgAygCJCEEIAFBCGohCiABQQRqIQ4DQAJAIAQiAiAFSQ0AIABBADYCAAwLCyACIAlPDQICQAJAIA4oAgAgCigCACAIIAcgCyACai0AAGotAABqQZD0gwEQ6jAoAgAiCCABKALIAksNACAIRQ0FIAggASgCzAJNDQEgA0EgaiABKAIoIBMoAgAgCyAJIAIgBRD1LiADIAMoAiAgAygCJBD0MgJAIAMoAgANACAAQQA2AgAMDQsgAygCBCIEIAJLDQILIAJBAWohBAwBCwsgAUEQaigCACABQRRqKAIAIAggASgCPHZBfmpBsPSDARDvMCIIKAIEIAgoAghBABDwMCgCACEIIANBEGogCCACQQFqIgIgAUEcaigCACABQSBqKAIAIAhBoPSDARDqMCgCAGsgAhDvHiAAQQE2AgAgAEEMaiADQRhqKAIANgIAIAAgAykCEDcCBAwJCxC2PyECIABBAjYCACAAIAI2AgQMCAsgAiAJQeCogAEQoRsACyAAQQA2AgAMBgsgACADKQIkNwIEIABBDGogA0EgakEMaigCADYCAAsgACACNgIADAQLIAAgAykCJDcCBCAAQQxqIANBIGpBDGooAgA2AgALIAAgAjYCAAwCCyABQcAAaiEHIAMoAiQhBCABQQhqIQ4gAUEEaiETIAFBFGohFCABQRBqIQ8gAUEgaiEQIAFBHGohEQJAA0ACQAJAAkACQCAEIgIgBU8NACACIAlPDQIgEygCACAOKAIAIAggByALIAJqLQAAai0AAGpBkPSDARDqMCgCACIIIAEoAsgCSw0DIAhFDQUgCCABKALMAk0NASADQSBqIAEoAiggCigCACALIAkgAiAFEPUuIANBCGogAygCICAD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akEIakEAKQPAwZkBNwMAIANBACkDuMGZATcDwAcCQCADQShqELAWIANBwAdqEMU1DQAgA0HAB2oQ4RAgA0H8AGogA0HEAGogAygCKEElRiIGGygCACECIANB+ABqIANBwABqIAYbKAIAIQYgA0HkBmogA0EoahDfGiADQdADakEQakEAKQPIwZkBNwMAIANB0ANqQQhqQQApA8DBmQE3AwAgA0EBNgLEByADQaTXoQE2AsAHIANCATcCzAcgA0GiAjYC9AYgA0EAKQO4wZkBNwPQAyADIANB8AZqNgLIByADIANBtAdqNgLwBiADIANB0ANqNgK0ByADQZgHaiADQcAHahDmIiADQdADahDhECADQawHaiADQeQGakEIaigCADYCACADIAMpAuQGNwKkByAGIAIgBiACSRsgBiACIAYgAksbIANBmAdqEP4iIQICQCADQShqELAWIgZFDQAgBigCAEEkRw0AIAMgAykDQDcDeCADKAIoIQYgA0ElNgIoIAZBJEcNBCADQShqIAMoAiwQ4xMLIANBgYCAgHg2ArgDIAMgAjYCvAMMCgsgA0HQA2pBDGogA0EoakEMaikCADcCACADQdADakEUaiADQShqQRRqKAIANgIAIAMoAighBiADQSU2AiggAyADKQIsNwLUAyADIAMpA0A3A3ggAyAGNgLQAyADQdADahDhECADQcAHahDhECADQdADaiADQShqEIUCIAMoAtQDIQQgAygC0AMiCEGAgICAeEYNBCACQQFxIQkgA0EoakEEciEKIAMoAtgDQQZ0IQsgCEEGdCEMIANBgARqIQ1BACEGQQAhAgJAA0AgBCAGaiEFIAsgAkYNASADQcAHaiAEIAJqIg5BwAAQ3woaIANB0ANqIA5BwAAQ3woaIA0QnTcgBSADQcAHakEoEN8KGiAGQShqIQYgAkHAAGohAgwACwsgA0EINgLQAyADQQA2AtgDQQBBCBCxOiADQQg2AtwDIANBCDYC1AMgDEEobiEGIAQhAgJAIAhFDQAgBCECIAwgBkEobCIORg0AAkAgDA0AQQghAgwBCyAEIAxBCCAOEKIFIgJFDQQLIAMgAjYC9AYgAyAGNgLwBiADIAUgBGtBKG42AvgGIANB0ANqEKcnIANBwAdqQRBqQQApA9DgmQE3AwAgA0HAB2pBCGpBACkDyOCZATcDACADQQApA8DgmQE3A8AHAkAgA0EoahCwFiADQcAHahDFNQ0AIANBwAdqEOEQIANB/ABqIANBxABqIAMoAihBJUYiBhsoAgAhAiADQfgAaiADQcAAaiAGGygCACEGIANB/AZqIANBKGoQ3xogA0HQA2pBEGpBACkD0OCZATcDACADQdADakEIakEAKQPI4JkBNwMAIANBATYCxAcgA0Gk16EBNgLAByADQgE3AswHIANBogI2ArgHIANBACkDwOCZATcD0AMgAyADQbQHajYCyAcgAyADQbwHajYCtAcgAyADQdADajYCvAcgA0GYB2ogA0HAB2oQ5iIgA0HQA2oQ4RAgA0GsB2ogA0H8BmpBCGooAgA2AgAgAyADKQL8BjcCpAcgBiACIAYgAkkbIAYgAiAGIAJLGyADQZgHahD+IiECAkAgA0EoahCwFiIGRQ0AIAYoAgBBJEcNACADIAMpA0A3A3ggAygCKCEGIANBJTYCKCAGQSRHDQcgA0EoaiADKAIsEOMTCyADQYGAgIB4NgK4AyADIAI2ArwDDAkLIANB3ANqIApBCGopAgA3AgAgA0HkA2ogCkEQaigCADYCACADKAIoIQIgA0ElNgIoIAMgAykDQDcDeCADIAI2AtADIAMgCikCADcC1AMgA0HQA2oQ4RAgA0HAB2oQ4RAgA0HQA2pBEGpBACkD6OCZATcDACADQdADakEIaiIEQQApA+DgmQE3AwAgA0EAKQPY4JkBNwPQAyADQShqELAWIANB0ANqEMU1IQYgA0HQA2oQ4RBBACECAkAgBkUNACADQeADakEAKQPo4JkBNwMAIARBACkD4OCZATcDACADQQApA9jgmQE3A9ADIANBEGogA0EoaiADQdADahCKAyADKAIUIQIgAygCECEGIANB0ANqEOEQIAYNCAsgAyACNgKIByADQcAHakEQakEAKQOIrpkBNwMAIANBwAdqQQhqQQApA4CumQE3AwAgA0EAKQP4rZkBNwPABwJAIANBKGoQsBYgA0HAB2oQxTUNACADQcAHahDhECADQfwAaiADQcQAaiADKAIoQSVGIgYbKAIAIQIgA0H4AGogA0HAAGogBhsoAgAhBiADQYwHaiADQShqEN8aIANB0ANqQRBqQQApA4iumQE3AwAgA0HQA2pBCGpBACkDgK6ZATcDACADQQE2AsQHIANBpNeh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GBD1GAwNCyADQQI6AIEDIAMgAykD+AI3A/ACQQAhEQJAIANBIGoQ7Q4iBEUNACAELQAAQQlHDQAgA0EJOgCwAyADQRBqIANBIGogA0GwA2oQzw0gAygCFCILIREgAygCEA0NCwJAAkAgA0EgahDtDiIERQ0AIAQtAABBG0YNAQsgA0H0AmogA0H8AmogAy0AgQNBAkYiBxsoAgAhBCADQfACaiADQfgCaiAHGygCACEHIANB3AZqIANBIGoQygsgA0EBNgK0AyADQaTXoQE2ArADIANCATcCvAMgA0HoBDYChAcgA0EbOgCPByADIANBgAdqNgK4AyADIANBiAdqNgKAByADIANBjwdqNgKIByADQegGaiADQbADahCqEyADQfwGaiADQeQGaigCADYCACADIAMpAtwGNwL0BiAHIAQgByAESRsgByAEIAcgBEsbIANB6AZqEP4iIQsCQCADQSBqEO0OIgRFDQAgBC0AAEGbAUcNACADQQI6AIEDIAMgAykD+AI3A/ACIANBIGogA0EgahDfGBD1GAsgERCkMAwNCyADIAMpA/gCNwPwAiADQQI6AIEDIANBsANqIANBIGpBkAMQ3woaIAEQnhYgASADQbADakGQAxDfCiIIKAKQAiIEQX5xIAVBAXFyIRIgBEECcUUNAiAIKAKEAiIEKAIIIgdB/v///wdLDQgCQAJAIAQoAhRFDQAgBw0LIARBfzYCCCAIKAKAAiIHKAIIDQEgB0F/NgIIIAQoAhAhCSAHQQxqIAQoAhQiARChMCAHKAIQIAcoAhRBAnRqIAkgAUECdBDfChogByABIAcoAhRqNgIUIARBADYCFCAHIAcoAghBAWo2AgggBCAEKAIIQQFqNgIIIAgoAoQCIQQLIAggEjYCkAIgBCgCCCIHQf7///8HSw0LIBJB//z//wNxIQEgBCgCFEUNBCAHDQwgBEF/NgIIIAgoAoACIgcoAggNAiAHQX82AgggBCgCECELIAdBDGogBCgCFCIJEKEwIAcoAhAgBygCFEECdGogCyAJQQJ0EN8KGiAHIAkgBygCFGo2AhQgBEEANgIUIAcgBygCCEEBajYCCCAEIAQoAghBAWo2AggMBAtB/IObARDpIgALIAohCwwNC0H8g5sBEOkiAAsgEkH9/P//A3EhAQsgCCABQYABcjYCkAIgEEEobCEBQQAh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HyAFQdAAahCbNwwBCyAAQYGAgIB4NgIAIAAgBjYCBAsgBUHQBGokAAvVFAIpfwJ+IwBBoAFrIgIkACABKAIEIQMgAkE4aiABKAIIIgRBBEEMEOETIAIoAjwhBQJAAkACQAJAIAIoAjhBAUYNACACKAJAIQYCQCAFRQ0AIAMgBEEMbGohByACQRBqQR1qIQggAkE4akEFciEJIAJBOGpBHWohCiACQQxqQQJqIQtBACEMIAUhDQNAIAMgB0YNAQJAAkAgAygCACIORQ0AIAMoAgghDyADKAIEIQEQrjIhECACQThqIA4QPyAQQThqIAJBOGpBOGopAwA3AwAgEEEwaiACQThqQTBqKQMANwMAIBBBKGogAkE4akEoaikDADcDACAQQSBqIAJBOGpBIGopAwA3AwAgEEEYaiACQThqQRhqKQMANwMAIBBBEGogAkE4akEQaikDADcDACAQQQhqIAJBOGpBCGopAwA3AwAgECACKQM4NwMADAELQQAtAMD/owEaIAMoAgQhEEHwABCMASIBRQ0EAkACQAJAAkACQAJAAkACQAJAIBAoAgBBe2oiDkEEIA5BBkkbDgYAAQIDBAUACyAQKAIYIREgECgCFCESIBAoAhAhEyAQKQMIIiunIRQCQCArQgODQgBSDQAgFCAUKAIAIg5BAWo2AgAgDkF/TA0NCyArQiCIpyEVIBAtABwhFkEFIRBBACEXDAYLIAJBEGogEEEIahClBiAQKAIoIRAQrjIhDiACQThqIBAQPyAOQThqIAJBOGpBOGopAwA3AwAgDkEwaiACQThqQTBqKQMANwMAIA5BKGogAkE4akEoaikDADcDACAOQSBqIAJBOGpBIGopAwA3AwAgDkEYaiACQThqQRhqKQMANwMAIA5BEGogAkE4akEQaikDADcDACAOQQhqIAJBOGpBCGopAwA3AwAgDiACKQM4NwMAIAIoAiAhESACKAIoIRggAi0ALCEZIAIpAxAhKyACKQMYISwgAigCJCEWIAsgCEECai0AADoAACACIAgvAAA7AQwgFkGAfnEhFyAsQiCIpyESICtCIIinIRUgAigCNCEaICynIRMgK6chFEEGIRAMBAsgECgCICEYIBAoAhwhFiAQKAIYIREgECgCDCEVIBAoAgghFCAQKQMQIiunIRMCQCArQgODQgBSDQAgEyATKAIAIg5BAWo2AgAgDkF/TA0LCyAQLQAkIRkgECgCKCEQEK4yIQ4gAkE4aiAQED8gDkE4aiACQThqQThqKQMANwMAIA5BMGogAkE4akEwaikDADcDACAOQShqIAJBOGpBKGopAwA3AwAgDkEgaiACQThqQSBqKQMANwMAIA5BGGogAkE4akEYaikDADcDACAOQRBqIAJBOGpBEGopAwA3AwAgDkEIaiACQThqQQhqKQMANwMAIA4gAikDODcDACAWQYB+cSEXICtCIIinIRJBByEQDAQLIBAoAkQhGyAQKAJAIRwgAkEQaiAQQQhqEKUGAkACQCAQKAJIIg4NAEEAIR0MAQsQqzIhHSAOKQIEISsgDigCACEOEKwyIRYgAkE4aiAOEIYBIBYgAkE4akHgABDfCiEOIB0gKzcCBCAdIA42AgALQYCAgIB4IQ4CQCAQKAIoQYCAgIB4Rg0AIBAoAiwhHiAQKAI8IR8gECgCOCEgIBAoAjQhISACQThqIBAoAjAiIkEIQTAQ4RMgAigCPCEOIAIoAjhBAUYNCyACKAJAIRoCQCAODQBBACEODAELICJBMGwhI0EAIRYgDiEkA0AgIyAWRg0BIAJBOGogHiAWahBQIBogFmoiEEEoaiACQThqQShqKQMANwMAIBBBIGogAkE4akEgaikDADcDACAQQRhqIAJBOGpBGGopAwA3AwAgEEEQaiACQThqQRBqKQMANwMAIBBBCGogAkE4akEIaikDADcDACAQIAIpAzg3AwAgFkEwaiEWICRBf2oiJA0ACwsgCyAIQQJqLQAAOgAAIAIgCC8AADsBDCACKAIkIhZBgH5xIRcgAikDGCIrQiCIpyESIAIpAxAiLEIgiKchFSACLQAsIRkgAigCKCEYIAIoAiAhESArpyETICynIRRBCCEQDAMLIBAoAmQhJSAQKAJgISYgAkEQaiAQEKUGQQchGAJAIBAoAiBBB0YNACACQThqIBBBIGoQ1QMgAkGcAWpBAmogCUECai0AADoAACACIAkvAAA7AZwBIAItADwhGSACKAI4IRggAigCQCEOIAIoAkQhGiACKAJIISIgAigCTCEhIAIoAlAhICACKAJUIR8gAigCWCEcIAIoAlwhGwsgECgCaCEWEK0yIR4gAkE4aiAWENUDIB5BIGogAkE4akEgaiIUKQMANwMAIB5BGGogAkE4akEYaiIRKQMANwMAIB5BEGogAkE4akEQaiISKQMANwMAIB5BCGogAkE4akEIaiIVKQMANwMAIB4gAikDODcDAEGAgICAeCEdAkAgECgCSEGAgICAeEYNACAQKAJMIRcgECgCXCEnIBAoAlghKCAQKAJUISkgAkE4aiAQKAJQIiNBCEEwEOETIAIoAjwhHSACKAI4QQFGDQsgAigCQCEkAkAgHQ0AQQAhHQwBCyAjQTBsISpBACEWIB0hEwNAICogFkYNASACQThqIBcgFmoQUCAkIBZqIhBBKGogAkE4akEoaikDADcDACAQQSBqIBQpAwA3AwAgEEEYaiARKQMANwMAIBBBEGogEikDADcDACAQQQhqIBUpAwA3AwAgECACKQM4NwMAIBZBMGohFiATQX9qIhMNAAsLIAsgAkGcAWpBAmotAAA6AAAgAiACLwGcATsBDCACKAIsIhZBgH5xIRcgAikDICIrQiCIpyESIAIpAxgiLEIgiKchFSACKAIoIREgAigCFCEqIAIoAhAhECArpyETICynIRQMAwsgAkE4aiAQQQhqEKUGIBAoAigQpgYhDiALIApBAmotAAA6AAAgAiAKLwAAOwEMIAIoAkwiFkGAfnEhFyACKQNAIitCIIinIRIgAikDOCIsQiCIpyEVIAItAFQhGSACKAJQIRggAigCSCERIAIoAlwhGiArpyETICynIRRBCiEQCwsLIAEgGToAJCABIBg2AiAgASARNgIYIAEgKjYCBCABIBA2AgAgASACLwEMOwAlIAEgHjYCaCABICU2AmQgASAmNgJgIAEgJzYCXCABICg2AlggASApNgJUIAEgIzYCUCABICQ2AkwgASAdNgJIIAEgGzYCRCABIBw2AkAgASAfNgI8IAEgIDYCOCABICE2AjQgASAiNgIwIAEgGjYCLCABIA42AiggASAXIBZB/wFxcjYCHCABQSdqIAstAAA6AAAgASASrUIghiATrYQ3AxAgASAVrUIghiAUrYQ3AwhBACEQCyADQQxqIQMgBiAMQQxsaiIOIA82AgggDiABNgIEIA4gEDYCACAMQQFqIQwgDUF/aiINDQALCyAAIAQ2AgggACAGNgIEIAAgBTYCACACQaABaiQADwsgBSACKAJAEPg5CwALIA4gAigCQBD4OQALIB0gAigCQBD4OQALpRcCCH8DfiMAQZAC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ahCHByEFIANBiAFqEOIQAkAgBUUNAEEBIQkMAQtBACEJIANBmAFqQQApA5i+mQE3AwAgA0GQAWpBACkDkL6ZATcDACADQQApA4i+mQE3A4gBIANBiAFqIANBIGoQhwchBSADQYgBahDiECAFRQ0BQQEhBgsgBCABKAJUIgUgBCAFSxshCiABLQDUAkECRw0GIAJFDQYCQAJAIAEQsRYiB0UNACADQYgBakEQaiILQQApA5i6mQE3AwAgA0GIAWpBCGoiDEEAKQOQupkBNwMAIANBACkDiLqZATcDiAEgA0GIAWogBxCHByEIIANBiAFqEOIQIAgNASALQQApA4C6mQE3AwAgDEEAKQP4uZkBNwMAIANBACkD8LmZATcDiAEgA0GIAWogBxCHByEHIANBiAFqEOIQIAcNAQsgA0EAOwE8DAULIANBiAFqIAEQ7wIgA0GIAWogASgCzAJBAXIQ4Q8gA0HABGpBEGpBACkDgLqZATcDACADQcAEakEIakEAKQP4uZkBNwMAIANBACkD8LmZATcDwAQgA0GIAWoQsBYgA0HABGoQxTUNASADQcAEahDhEEEAIQcgA0HQBGpBACkDmLqZATcDACADQcgEakEAKQOQupkBNwMAIANBACkDiLqZATcDwAQCQCADQYgBahCwFiADQcAEahDFNQ0AIANBwARqEOEQIANBADsBPEEBIQgMBAsgA0HoBGpBDGogA0GIAWpBDGopAgA3AgAgA0HoBGpBFGogA0GIAWpBFGooAgA2AgAgAygCiAEhByADQSU2AogBIAMgAykCjAE3AuwEIAMgAykDoAE3A9gBIAMgBzYC6AQgA0HoBGoQ4RAgA0HABGoQ4RAMAgtBlM6hAUEoQejVmgEQ0ycACyADQegEakEMaiADQYgBakEMaikCADcCACADQegEakEUaiADQYgBakEUaigCADYCACADKAKIASEHIANBJTYCiAEgAyADKQKMATcC7AQgAyADKQOgATcD2AEgAyAHNgLoBCADQegEahDhECADQcAEahDhEAsgA0EYaiADQYgBahD+CiADKAIcIQgCQAJAAkACQCADKAIYDQAgAyAINgLoBCADQegEahDbOEEAIQggA0HABGpBEGpBACkD0OCZASIRNwMAIANBwARqQQhqQQApA8jgmQEiEjcDACADQQApA8DgmQEiEzcDwAQg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A5DHmQE3A6ADIAFBoANqIAYQiAchCSABQaADahDiECAJDQEgCEEAKQPoxJkBNwMAIApBACkD4MSZATcDACABQQApA9jEmQE3A6ADIAFBoANqIAYQiAchCSABQaADahDiECAJDQEgAUGwA2oiCEEAKQOgrpkBNwMAIAFBqANqIgpBACkDmK6ZATcDACABQQApA5CumQE3A6ADIAFBoANqIAYQiAchCSABQaADahDiECAJDQEgCEEAKQOAxZkBNwMAIApBACkD+MSZATcDACABQQApA/DEmQE3A6ADIAFBoANqIAYQiAchCSABQaADahDiECAJDQEgAUGwA2pBACkDmMWZATcDACABQagDakEAKQOQxZkBNwMAIAFBACkDiMWZATcDoAMgAUGgA2ogBhCIByEJIAFBoANqEOIQIAkNAQJAIAYoAgAiCUEeSw0AQQEgCXRBgICAwAZxDQILIAFBsANqIghBACkD+MGZATcDACABQagDaiIKQQApA/DBmQE3AwAgAUEAKQPowZkBNwOgAyABQaADaiAGEIgHIQkgAUGgA2oQ4hAgCQ0BIAhBACkDyMGZATcDACAKQQApA8DBmQE3AwAgAUEAKQO4wZkBNwOgAyABQaADaiAGEIgHIQkgAUGgA2oQ4hAgCQ0BIAFBsANqIghBACkD8N+ZATcDACABQagDaiIKQQApA+jfmQE3AwAgAUEAKQPg35kBNwOgAyABQaADaiAGEIgHIQkgAUGgA2oQ4hAgCQ0BIAhBACkD2N+ZATcDACAKQQApA9DfmQE3AwAgAUEAKQPI35kBNwOgAyABQaADaiAGEIgHIQkgAUGgA2oQ4hAgCQ0BIAFBsANqIghBACkDsLuZATcDACABQagDaiIKQQApA6i7mQE3AwAgAUEAKQOgu5kBNwOgAyABQaADaiAGEIgHIQkgAUGgA2oQ4hAgCQ0BIAhBACkDyLuZATcDACAKQQApA8C7mQE3AwAgAUEAKQO4u5kBNwOgAyABQaADaiAGEIgHIQkgAUGgA2oQ4hAgCQ0BIAFBsANqQQApA7iumQE3AwAgAUGoA2pBACkDsK6ZATcDACABQQApA6iumQE3A6ADIAFBoANqIAYQiAchCSABQaADahDiECAJDQEgBigCACIJQRxGDQECQCAJQQJHDQAgByAGLQAIIAZBCWotAAAQtg5FDQILIAFBsANqQQApA5C8mQE3AwAgAUGoA2pBACkDiLyZATcDACABQQApA4C8mQE3A6ADIAFBoANqIAYQiAchBiABQaADahDiECAGRQ0AIAFBCGoQwh4iBkUNACABQbADaiIHQQApA8jBmQE3AwAgAUGoA2oiCEEAKQPAwZkBNwMAIAFBACkDuMGZATcDoAMgAUGgA2ogBhCIByEJIAFBoANqEOIQIAkNASAHQQApA7jkmQE3AwAgCEEAKQOw5JkBNwMAIAFBACkDqOSZATcDoAMgAUGgA2ogBhCIByEJIAFBoANqEOIQIAkNASABQbADakEAKQOQxJkBNwMAIAFBqANqQQApA4jEmQE3AwAgAUEAKQOAxJkBNwOgAyABQaADaiAGEIgHIQYgAUGgA2oQ4hAgBg0BCyABQQhqELAWIgZFDQEgAUGwA2oiB0EAKQPQrpkBNwMAIAFBqANqIghBACkDyK6ZATcDACABQQApA8CumQE3A6ADIAFBoANqIAYQhwchCSABQaADahDhECAJDQAgB0EAKQPorpkBNwMAIAhBACkD4K6ZATcDACABQQApA9iumQE3A6ADIAFBoANqIAYQhwchCSABQaADahDhECAJDQAgAUGwA2oiB0EAKQOAr5kBNwMAIAFBqANqIghBACkD+K6ZATcDACABQQApA/CumQE3A6ADIAFBoANqIAYQhwchCSABQaADahDhECAJDQAgB0EAKQPgupkBNwMAIAhBACkD2LqZATcDACABQQApA9C6mQE3A6ADIAFBoANqIAYQhwchCSABQaADahDhECAJDQAgAUGwA2oiB0EAKQPIr5kBNwMAIAFBqANqIghBACkDwK+ZATcDACABQQApA7ivmQE3A6ADIAFBoANqIAYQhwchCSABQaADahDhECAJDQAgB0EAKQPgr5kBNwMAIAhBACkD2K+ZATcDACABQQApA9CvmQE3A6ADIAFBoANqIAYQhwchCSABQaADahDhECAJDQAgAUGwA2oiB0EAKQP4r5kBNwMAIAFBqANqIghBACkD8K+ZATcDACABQQApA+ivmQE3A6ADIAFBoANqIAYQhwchCSABQaADahDhECAJDQAgB0EAKQOYr5kBNwMAIAhBACkDkK+ZATcDACABQQApA4ivmQE3A6ADIAFBoANqIAYQhwchCSABQaADahDhECAJDQAgAUGwA2oi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CgNAIAYoAhQhAyAGKAIQIQcgBigCJCELIAYoAiAhDAJAAkAgBigCACINDQAgBjUCGCESAkAgBikDCCIRQgODQgBSDQAgEaciACAAKAIAIgBBAWo2AgAgAEF/TA0GCyAGMQAcQiCGIBNCgICAgIBggyAShIQhE0IAIRIMAQsCQCAGKQMIIhFCA4NCAFINACARpyIAIAAoAgAiAEEBajYCACAAQX9MDQULQgEhEiAGKQMYIhNQDQAgE0IDg0IAUg0AIBOnIgAgACgCACIAQQFqNgIAIABBf0wNBAsCQAJAIAYoAigiDg0AQQAhAAwBCxCuMiEAIAJByAFqIA4QPyAAQThqIAJByAFqQThqKQMANwMAIABBMGogAkHIAWpBMGopAwA3AwAgAEEoaiACQcgBakEoaikDADcDACAAQSBqIAJByAFqQSBqKQMANwMAIABBGGogAkHIAWpBGGopAwA3AwAgAEEQaiACQcgBakEQaikDADcDACAAQQhqIAJByAFqQQhqKQMANwMAIAAgAikDyAE3AwALIAIgCzYCdCACIAw2AnAgAiAANgJ4IAIgEzcDaCACIAM2AmQgAiAHNgJgIAIgETcDWCACIBI3A1AgAkEQaiAFEKYnIAIgAigCGDYCiAEgAiACKQMQNwOAAQJAAkACQCAARQ0AIAIgASgCYDYCxAEgAiAENgLAASACIAJBgAFqNgK8ASACQcgBaiACQbwBaiAAEFkCQCACKALIAUECRw0AIAJBvAFqIAIoAswBEOoCCyACQagBakEIaiACQcgBakEIaikDADcDACACIAIpA8gBIhI3A6gBAkAgEqciDkF9ag4CAAECCyACQagBahD+GAsCQAJAAkAgAigCQCIODgQAAQIEAAtBACEOIAIpA0giFEIDg0IAUg0DIBSnIgAgACgCACIAQQFqNgIAIABBf0oNAwwHC0EBIQ4gAikDSCEUDAILIAIoAkQhABCuMiEPIAJByAFqIAAQPyAPQThqIAJByAFqQThqKQMANwMAIA9BMGogAkHIAWpBMGopAwA3AwAgD0EoaiACQcgBakEoaikDADcDACAPQSBqIAJByAFqQSBqKQMANwMAIA9BGGogAkHIAWpBGGopAwA3AwAgD0EQaiACQcgBakEQaikDADcDACAPQQhqIAJByAFqQQhqKQMANwMAIA8gAikDyAE3AwBBAiEODAELIAIpA7ABIRQgAigCrAEhDwsCQAJAIA1BAXENACARQgODQgBSDQEgAiARpyIANgLIASACQcgBahD1ByAAIAAoAgAiA0F/ajYCACADQQFHDQEgACAAKAIgENMvDAELIAkQuBMLAkAgAikDgAEiEUIDg0IAUg0AIAIgEaciADYCyAEgAkHIAWoQ9QcgACAAKAIAIgNBf2o2AgAgA0EBRw0AIAAgACgCIBDTLwsgAkHAAGoQ/hggAkEBQQMgDkEBRiIAGzYCQCACIBS/RAAAAAAAAPA/oCAXIAAbIhc5A0ggAiAFEKYnIAIoAgghACACKQMAIRICQCAGKQMIIhFCA4NCAFINACARpyIDIAMoAgAiA0EBajYCACADQX9MDQQLIAIgETcDoAEgAiAANgKYASACIBI3A5ABIAJBkAFqENAiIRECQCABKAJIDQAgBCAKEIMDGgsgBkEwaiEGIBFCGYgiFUKBgoSIkKDAgAF+IRYgEachACABKAJEIQMgASgCQCENQQAhDEEAIQsCQAJAA0ACQCANIAAgA3EiAGopAAAiEiAWhSIRQn+FIBFC//379+/fv/9+fINCgIGChIiQoMCAf4MiEVANAANAIAJBkAFqIAQoAgBBACAReqdBA3YgAGogA3FrQShsIgdqQVhqELksDQMgEUJ/fCARgyIRUEUNAAsLIBJCgIGChIiQoMCAf4MhEUEBIQcCQCALQQFGDQAgEUIAUiEHIBF6p0EDdiAAaiADcSEQCwJAIBEgEkIBhoNCAFINACAAIAxBCGoiDGohACAHIQsMAQsLAkAgDSAQaiwAAEEASA0AIA0pAwBCgIGChIiQoMCAf4N6p0EDdiEQCyABKAJAIgAgEGoiAy0AACEHIAJBkAFqQRBqKQMAIREgAkGQAWpBCGopAwAhEiACKQOQASEWIAMgFaciCzoAACAAIAEoAkQgEEF4anFqQQhqIAs6AAAgASABKAJMQQFqNgJMIABBACAQa0EobGoiAEFYaiIDIBY3AwAgA0EIaiASNwMAIANBEGogETcDACAAQXhqIBQ3AwAgAEF0aiAPNgIAIABBcGogDjYCACABIAEoAkggB0EBcWs2AkgMAQsgBCgCACAHaiIAQXBqIgMpAwAhESAAQXRqIA82AgAgAyAONgIAIANBCGopAwAhEiAAQXhqIBQ3AwAgAkHIAWpBCGogEjcDACACIBE3A8gBAkAgAikDkAEiEUIDg0IAUg0AIAIgEaciADYCUCACQdAAahD1ByAAIAAoAgAiA0F/ajYCACADQQFHDQAgACAAKAIgENMvCwJAIAIpA6ABIhFCA4NCAFINACACIBGnIgA2AlAgAkHQAGoQ9QcgACAAKAIAIgNBf2o2AgAgA0EBRw0AIAAgACgCIBDTLwsgAigCyAFBBEYNACACQcgBahD+GAsgBiAIRw0ACwsgAkHAAGoQ/hgLIAJBoAJqJAAPCwALvxYCCn8CfiMAQYAGayIDJAAgA0H4AGpBACkD4OKiATcCACADQQA2AmwgA0KAgICAwAA3AmQgA0EAOgBgIANBATYCgAEgA0HEg5kBNgJcIANCgICAgBA3AlQgA0KAgICAwAA3AkwgA0ELNgIAIANBACkD2OKiATcCcCADQeACakEFQQFBARDhEyADKALkAiEEAkACQAJAAkACQCADKALgAkEBRg0AIAMoAugCIQVBAC0AwP+jARogBUEEakEALQCMwpsBOgAAIAVBACgAiMKbATYAAEHQABCMASIGRQ0BIAZBBTYCFCAGIAU2AhAgBiAENgIMIAZBCjYCCCAGQoGAgIAQNwIAIANB4AJqIAJBAUEBEOETIAMoAuQCIQUgAygC4AJBAUYNAiADKALoAiABIAIQ3wohBCADIAI2AtABIAMgBDYCzAEgAyAFNgLIASADQeACaiADQcgBahCPFyADIAMgBiADQeACahCJASIENgKEASADQQA2ApABIANCgICAgMAANwKIASADQeACaiAEQQhqEIseIAMoAvACIQUgA0IENwLQASADQgA3AsgBIANByAFqEPsqIQEgA0IENwLQASADQgA3AsgBIANByAFqEPsqIQcgA0HIAWpBgAJBAUEBEOETIAMoAswBIQIgAygCyAFBAUYNA0EALQDA/6MBGiADKALQASEIQRgQjAEiBkUNASAGQQA2AhQgBiAINgIQIAYgAjYCDCAGQQA2AgggBkKBgICAEDcCACADQcgBahCtK0EALQDA/6MBGkEYEIwBIgJFDQEgAkKBgICAEDcCACACIAMpAsgBNwIIIAJBEGogA0HIAWpBCGopAgA3AgAgA0GcAWpBCGoiCCADKQLgAjcCACADQZwBakEQaiIJIANB4AJqQQhqIgopAgA3AgAgA0GcAWpBGGoiCyADQeACakEQaikCADcCACADQZwBakEgaiIMIANB4AJqQRhqKAIANgIAIANB/AJqIANBzAJqQRBqKAIANgIAIANB9AJqIANBzAJqQQhqKQIANwIAIAMgAykCzAI3AuwCIANBggNqIANByAFqQYIBEN8KGiADQaQEakEAOwEAIANBrwRqIANBwwFqQQRqLQAAOgAAIANBxARqIAgpAgA3AgAgA0HMBGogCSkCADcCACADQdQEaiALKQIANwIAIANB3ARqIAwoAgA2AgAgA0EANgKgBCADQQA7AJ0EIANBADsA+QQgAyADKADDATYAqwQgAyADKQKcATcCvAQgA0GABWpBADsBACADQYcFaiADQZcBakEEai0AADoAACADQQA2AvwEIANBADYC4AIgA0EJNgLoAiADIAU2ApQEIANBADYCmAQgA0EANgKwBCADQQA2ArgEIAMgATYC4AQgAyAHNgLkBCADIAY2AugEIAMgAjYC7AQgAyAFNgL0BCADIAU2ArAFIAMgBTYCtAUgA0GABDsBgAMgA0GBgIAINgGmBCADQgE3AoQEIANCATcCjAQgA0EBOgCCBSADQQA6APsEIANBADoA+AQgA0GcAToAqgQgA0EAOgCfBCADQQA6AJwEIAMgAygAlwE2AIMFIANBAjoAwQUgA0HkBWpBACkD4OKiATcCACADQQA2AtgFIANCgICAgIABNwPQBSADQQA2AsgFIANBCjYCiAUgA0EAOgDsBSADQYCAgIACNgLwBCADQQApA9jiogE3AtwFIANB4AJqEO0OGiADQbQFaiADQbgFaiADLQDBBUECRhsoAgAhBkIAIQ0CQCADQeACahDtDiIFRQ0AIAUtAABBmgFHDQAgA0ECOgDBBSADIAMpA7gFNwOwBSADQeACahCaGSENCyADQfAFaiADQeACakEBQQAQzwFBgICAgHghByADKAL0BSEIAkACQCADKALwBSIFQYCAgIB4Rg0AIAYgAygCtAUiAiAGIAJJGyEMIAMoAvgFIQEgBSEHDAELAkAgDVANACANQgODQgBSDQAgAyANpyIGNgL8BSADQfwFahD1ByAGIAYoAgAiBUF/ajYCACAFQQFHDQAgBiAGKAIgENMvCyAIIQwLIAMoAuAEIgYoAggNBCADQeACakEgaiEJIAYoAhQhBSAGQQA2AhQgBigCDCELIAYoAhAhAiAGQoCAgIDAADcCDCADQYgBaiAFEKEwIAMoAowBIAMoApABIgZBAnRqIAIgBUECdBDfChogAyAGIAVqNgKQASACQQAQni0gCyACEN8zIAMoAtQFIAMoAtgFEPYYIAMoAtAFIAMoAtQFEPgzIAMoAtwFIAMoAuAFEPAnAkAgAygCuARFDQACQCADKAK8BEUNACADQbwEahCoEwsgAygCwARFDQAgA0HABGoQqRMLIAkQzTIgChCEBiADKALgBBCTHyADKALkBBCTHyADKALoBBCgJCADKALsBBDtCwJAIAMoAogFQQpGDQAgA0GIBWoQhAYLAkAgB0GAgICAeEYNAAJAIAFFDQAgAUEwbCEFIAghBgNAIAYgA0HIAWoQxwQgBkEwaiEGIAVBUGoiBQ0ACwsCQCANUA0AIA1CA4NCAFINACADIA2nIgY2AuACIANB4AJqEPUHIAYgBigCACIFQX9qNgIAAkAgBUEBRw0AIAYgBigCIBDTLwsgAygChAEhBAsgACABNgIIIAAgCDYCBCAAIAc2AgAgBCAEKAIAIgZBf2o2AgACQCAGQQFHDQAgA0GEAWoQsw4LAkAgAygCbCIFRQ0AIAMoAmghBgNAIAYoAgAiAiACKAIAIgJBf2o2AgACQCACQQFHDQAgBhCzDgsgBkEEaiEGIAVBf2oiBQ0ACwsCQCADKAJkIgZFDQAgAygCaCAGQQJ0QQQQ7hwLAkAgAygCdCIBRQ0AAkAgAygCfCIERQ0AIAMoAnAiBUEIaiEGIAUpAwBCf4VCgIGChIiQoMCAf4MhDQNAAkAgDUIAUg0AA0AgBUHAfmohBSAGKQMAIQ0gBkEIaiICIQYgDUKAgYKEiJCgwIB/gyINQoCBgoSIkKDAgH9RDQALIA1CgIGChIiQoMCAf4UhDSACIQYLIAVBACANeqdBA3ZrQRhsakF4aiIAKAIAIgIgAigCACICQX9qNgIAIA1Cf3whDgJAIAJBAUcNACAAELMOCyAOIA2DIQ0gBEF/aiIEDQALCyABIAFBAWqtQhh+pyIGakEJaiIFRQ0AIAMoAnAgBmsgBUEIEO4cCyADKAJYIQUCQCADKAJcIgYoAgAiAkUNACAFIAIRAwALAkAgBigCBCICRQ0AIAUgAiAGKAIIEO4cCwJAIAMoAlQiBUUNACADKAJQIQYDQCAGKAIAIAZBBGooAgAQhjYgBkEMaigCACAGQRBqKAIAEIY2IAZBGGohBiAFQX9qIgUNAAsLAkAgAygCTCIGRQ0AIAMoAlAgBkEYbEEEEO4cCwJAIAMoAgAiBkELRg0AIANBEGohBSADQQRqIQICQAJAIAZBfmoiBkEGIAZBCUkbDggAAAICAgIBAAALIAIhBQsgBSgCACAFQQRqKAIAEIY2CyADKAKMASEEAkAgAygCkAEiBUUNACAEIQYDQCAGKAIAIgIQugMgAkEgQQgQ7hwgBkEEaiEGIAVBf2oiBQ0ACwsCQCADKAKIASIGRQ0AIAQgBkECdEEEEO4cCyADQYAGaiQADwsgAyAMNgKcASADQQE2AuQCIANB3MKbATYC4AIgA0IBNwLsAiADQYIIrUIghiADQZwBaq2ENwPIASADIANByAFqNgLoAiADQeACakHcw5sBEK0uAAsgBCADKALoAhD4OQsACyAFIAMoAugCEPg5AAsgAiADKALQARD4OQALQfDPmgEQ6SIAC6YVAgR/AX4jAEEQayIBJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiACgCACICQXRqIgNBByADQSZJG0F/ag4kAAECAwQFBgcICQoLDA0ODxAREhMiFBUWFyIYGRobHB0eHyAhIgsgAEEIaiIDKAIAIABBDGooAgAQxicgACgCBCADKAIAENszDCELIABBCGoiAygCACAAQQxqKAIAEPMhIAAoAgQgAygCABDcMwwgCwJAIAAtABxBAkYNACAAKQMIIgVCA4NCAFINACABIAWnIgM2AgwgAUEMahD1ByADIAMoAgAiAkF/ajYCACACQQFHDQAgAyADKAIgENMvCyAAKAIgIgNBBGoiAigCACADQQhqKAIAEMwYIAMoAgAgAigCABDdMyADQRBqIgIoAgAgA0EUaigCABCnLSADKAIMIAIoAgAQ3DMCQCADKAIYQYCAgIB4Rg0AIANBHGoiAigCACADQSBqKAIAEMYwIAMoAhggAigCABDeMwsCQCADKAI8IgJFDQAgAhDmESACKAIAIAJBBGooAgAQ3jMgAkEUQQQQ7hwLAkAgAygCQCICRQ0AIAIoAgAiBBDjBCAEQeAAQQgQ7hwgAkEMQQQQ7hwLIANByABBBBDuHAwfCyAAQQRqEOIBDB4LIABBDGoQ4gEMHQsgAEEEahDiASAAQQhqEOIBDBwLAkACQCACQQtGDQAgABDUBwwBCyAAQQRqEOodCyAAQThqEOIBDBsLIABBKGoQ4gECQAJAAkAgACgCCA4CAQIACyAAQQxqEOIBDBwLIAApAxAQ2B8MGwsgACkDEBDYHwwaCwJAIAAoAggNACAAKQMQENgfDBoLIABBDGoQ4gEMGQsgAEEEahDiASAAQQhqEOIBIABBDGoQ4gEMGAsgAEEEaiEDAkAgAC0AGEEFRw0AIABBEGoQ4gELIAMQ9ycgACgCBCAAQQhqKAIAENszIAAoAigiA0UNFyADEN4pIAMoAgAgA0EEaigCABDfMyADQRRBBBDuHAwXCyAAQRBqEOIBAkAgACgCBEGAgICAeEYNACAAQQRqEPcnIAAoAgQgAEEIaigCABDbMwsgACgCICIDRQ0WIAMQ3ikgAygCACADQQRqKAIAEN8zIANBFEEEEO4cDBYLIABBCGoiAygCACAAQQxqKAIAEKYtIAAoAgQgAygCABDfMwwVCyAAKQMIIgVCA4NCAFINFCABIAWnIgM2AgwgAUEMahD1ByADIAMoAgAiAkF/ajYCACACQQFHDRQgAyADKAIgENMvDBQLAkACQAJAAkACQCAAKAIIDgYBGBgCAwQACwJAIAApAxAiBUIDg0IAUg0AIAEgBaciAzYCDCABQQxqEPUHIAMgAygCACICQX9qNgIAIAJBAUcNACADIAMoAiAQ0y8LIAApAxgiBUIDg0IAUg0XIAEgBaciAzYCDCABQQxqEPUHIAMgAygCACICQX9qNgIAIAJBAUcNFyADIAMoAiAQ0y8MFwsgAEEQahC8EwwWCyAAKQMgIgVQDRUgBUIDg0IAUg0VIAEgBaciAzYCDCABQQxqEPUHIAMgAygCACICQX9qNgIAIAJBAUcNFSADIAMoAiAQ0y8MFQsgACkDGCAAKAIgEMYZDBQLAkAgACkDECIFQgODQgBSDQAgASAFpyIDNgIMIAFBDGoQ9QcgAyADKAIAIgJBf2o2AgAgAkEBRw0AIAMgAygCIBDTLwsgACkDGCIFQgODQgBSDRMgASAFpyIDNgIMIAFBDGoQ9QcgAyADKAIAIgJBf2o2AgAgAkEBRw0TIAMgAygCIBDTLwwTCyAAQQhqIgMoAgAgAEEMaigCABCmLSAAKAIEIAMoAgAQ3zMgAEEUaiIDKAIAIABBGGooAgAQihEgACgCECADKAIAEOAzDBILIABBBGoQ4gECQCAAKAIYIgNFDQAgAxDeKSADKAIAIANBBGooAgAQ3zMgA0EUQQQQ7hwLIAAoAggiA0EEaiICKAIAIANBCGooAgAQpi0gAygCACACKAIAEN8zIANBEGoiAigCACADQRRqKAIAEIoRIAMoAgwgAigCABDgMyADQSBBBBDuHAwRCyAAQQhqIgMoAgAgAEEMaigCABDFMCAAKAIEIAMoAgAQ4TMgACgCECIDQQRqIQICQAJAIAMoAgBBgICAgHhGDQAgAigCACADQQhqKAIAEMYwIAMoAgAgAigCABDeMwwBCyACEOIBCyADQRhBBBDuHAJAIAAoAiAiA0UNACADEOYRIAMoAgAgA0EEaigCABDeMyADQRRBBBDuHAsgACgCJCIDRQ0QIAMoAgAiAhDjBCACQeAAQQgQ7hwgA0EMQQQQ7hwMEAsCQCAAQRxqLQAAQQJGDQAgACkDCCIFQgODQgBSDQAgASAFpyIDNgIMIAFBDGoQ9QcgAyADKAIAIgJBf2o2AgAgAkEBRw0AIAMgAygCIBDTLwsgACgCICIDQQRqIgIoAgAgA0EIaigCABCnLSADKAIAIAIoAgAQ3DMgA0EQaiICKAIAIANBFGooAgAQxzAgAygCDCACKAIAEOIzAkAgAygCMEUNACADQTBqEOIBCwJAIAMoAjQiAkUNACACEOYRIAIoAgAgAkEEaigCABDeMyACQRRBBBDuHAsCQCADKAI4IgJFDQAgAhDeKSACKAIAIAJBBGooAgAQ3zMgAkEUQQQQ7hwLIANBHGoiAigCACADQSBqKAIAEMsUIAMoAhggAigCABDbMyADQcAAQQQQ7hwMDwsgACgCDEUNDiAAQQxqEOIBDA4LIABBBGoQ4gEMDQsgAEEEahDiAQwMCyAAQQhqEIISDAsLIABBCGoQkhQMCgsgACgCBCIDQcAAahDFFiADQYABaiICKAIAIANBhAFqKAIAEJ0eIAMoAnwgAigCABDiMwJAIAMoAngiAkUNACACEN4pIAIoAgAgAkEEaigCABDfMyACQRRBBBDuHAsgA0GQAWoQ1hYgAygCkAEgA0GUAWooAgAQ4TMCQCADLQA8QQZGDQAgA0EQahDFFgsgA0GgAUEIEO4cDAkLIABBBGoQ1hYgACgCBCAAQQhqKAIAEOEzDAgLIABBBGoQ4gEgACgCCCIDEOMEIANB4ABBCBDuHAwHCyAAQQRqEOIBDAYLIABBBGoQ4gEMBQsgAEEEahDiASAAKAIIIgMQ4wQgA0HgAEEIEO4cDAQLIABBBGoQ4gEgACgCCCIDEN4pIAMoAgAgA0EEaigCABDfMyADQRRBBBDuHAwDCyAAQQRqEOIBIAAoAggiAxDjBCADQeAAQQgQ7hwMAgsgACkDCCIFQgODQgBSDQEgASAFpyIDNgIMIAFBDGoQ9QcgAyADKAIAIgJBf2o2AgAgAkEBRw0BIAMgAygCIBDTLwwBCwJAAkAgACgCBCIDKAIAQQNGDQAgA0EgahDiASADENQSDAELIANBEGoQ4gEgA0EEahD3JyADKAIEIANBCGooAgAQ2zMgAygCICICRQ0AIAIQ3ikgAigCACACQQRqKAIAEN8zIAJBFEEEEO4cCyADQShBCBDuHAsgAEHAAEEIEO4cIAFBEGokAAumFQIEfwF+IwBBEGsiASQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAIgAoAgAiAkF0aiIDQQcgA0EmSRtBf2oOJAABAgMEBQYHCAkKCwwNDg8QERITIhQVFhciGBkaGxwdHh8gISILIABBCGoiAygCACAAQQxqKAIAEMYnIAAoAgQgAygCABDbMwwhCyAAQQhqIgMoAgAgAEEMaigCABDzISAAKAIEIAMoAgAQ3DMMIAsCQCAALQAcQQJGDQAgACkDCCIFQgODQgBSDQAgASAFpyIDNgIMIAFBDGoQ9QcgAyADKAIAIgJBf2o2AgAgAkEBRw0AIAMgAygCIBDTLwsgACgCICIDQQRqIgIoAgAgA0EIaigCABDMGCADKAIAIAIoAgAQ3TMgA0EQaiICKAIAIANBFGooAgAQpy0gAygCDCACKAIAENwzAkAgAygCGEGAgICAeEYNACADQRxqIgIoAgAgA0EgaigCABDGMCADKAIYIAIoAgAQ3jMLAkAgAygCPCICRQ0AIAIQ5hEgAigCACACQQRqKAIAEN4zIAJBFEEEEO4cCwJAIAMoAkAiAkUNACACKAIAIgQQ5AQgBEHgAEEIEO4cIAJBDEEEEO4cCyADQcgAQQQQ7hwMHwsgAEEEahDjAQweCyAAQQxqEOMBDB0LIABBBGoQ4wEgAEEIahDjAQwcCwJAAkAgAkELRg0AIAAQ7AYMAQsgAEEEahD2HQsgAEE4ahDjAQwbCyAAQShqEOMBAkACQAJAIAAoAggOAgECAAsgAEEMahDjAQwcCyAAKQMQENAfDBsLIAApAxAQ0B8MGgsCQCAAKAIIDQAgACkDEBDQHwwaCyAAQQxqEOMBDBkLIABBBGoQ4wEgAEEIahDjASAAQQxqEOMBDBgLIABBBGohAwJAIAAtABhBBUcNACAAQRBqEOMBCyADEPcnIAAoAgQgAEEIaigCABDbMyAAKAIoIgNFDRcgAxDeKSADKAIAIANBBGooAgAQ3zMgA0EUQQQQ7hwMFwsgAEEQahDjAQJAIAAoAgRBgICAgHhGDQAgAEEEahD3JyAAKAIEIABBCGooAgAQ2zMLIAAoAiAiA0UNFiADEN4pIAMoAgAgA0EEaigCABDfMyADQRRBBBDuHAwWCyAAQQhqIgMoAgAgAEEMaigCABCmLSAAKAIEIAMoAgAQ3zMMFQsgACkDCCIFQgODQgBSDRQgASAFpyIDNgIMIAFBDGoQ9QcgAyADKAIAIgJBf2o2AgAgAkEBRw0UIAMgAygCIBDTLwwUCwJAAkACQAJAAkAgACgCCA4GARgYAgMEAAsCQCAAKQMQIgVCA4NCAFINACABIAWnIgM2AgwgAUEMahD1ByADIAMoAgAiAkF/ajYCACACQQFHDQAgAyADKAIgENMvCyAAKQMYIgVCA4NCAFINFyABIAWnIgM2AgwgAUEMahD1ByADIAMoAgAiAkF/ajYCACACQQFHDRcgAyADKAIgENMvDBcLIABBEGoQuBMMFgsgACkDICIFUA0VIAVCA4NCAFINFSABIAWnIgM2AgwgAUEMahD1ByADIAMoAgAiAkF/ajYCACACQQFHDRUgAyADKAIgENMvDBULIAApAxggACgCIBDBGQwUCwJAIAApAxAiBUIDg0IAUg0AIAEgBaciAzYCDCABQQxqEPUHIAMgAygCACICQX9qNgIAIAJBAUcNACADIAMoAiAQ0y8LIAApAxgiBUIDg0IAUg0TIAEgBaciAzYCDCABQQxqEPUHIAMgAygCACICQX9qNgIAIAJBAUcNEyADIAMoAiAQ0y8MEwsgAEEIaiIDKAIAIABBDGooAgAQpi0gACgCBCADKAIAEN8zIABBFGoiAygCACAAQRhqKAIAEIoRIAAoAhAgAygCABDgMwwSCyAAQQRqEOMBAkAgACgCGCIDRQ0AIAMQ3ikgAygCACADQQRqKAIAEN8zIANBFEEEEO4cCyAAKAIIIgNBBGoiAigCACADQQhqKAIAEKYtIAMoAgAgAigCABDfMyADQRBqIgIoAgAgA0EUaigCABCKESADKAIMIAIoAgAQ4DMgA0EgQQQQ7hwMEQsgAEEIaiIDKAIAIABBDGooAgAQxTAgACgCBCADKAIAEOEzIAAoAhAiA0EEaiECAkACQCADKAIAQYCAgIB4Rg0AIAIoAgAgA0EIaigCABDGMCADKAIAIAIoAgAQ3jMMAQsgAhDjAQsgA0EYQQQQ7hwCQCAAKAIgIgNFDQAgAxDmESADKAIAIANBBGooAgAQ3jMgA0EUQQQQ7hwLIAAoAiQiA0UNECADKAIAIgIQ5AQgAkHgAEEIEO4cIANBDEEEEO4cDBALAkAgAEEcai0AAEECRg0AIAApAwgiBUIDg0IAUg0AIAEgBaciAzYCDCABQQxqEPUHIAMgAygCACICQX9qNgIAIAJBAUcNACADIAMoAiAQ0y8LIAAoAiAiA0EEaiICKAIAIANBCGooAgAQpy0gAygCACACKAIAENwzIANBEGoiAigCACADQRRqKAIAEMcwIAMoAgwgAigCABDiMwJAIAMoAjBFDQAgA0EwahDjAQsCQCADKAI0IgJFDQAgAhDmESACKAIAIAJBBGooAgAQ3jMgAkEUQQQQ7hwLAkAgAygCOCICRQ0AIAIQ3ikgAigCACACQQRqKAIAEN8zIAJBFEEEEO4cCyADQRxqIgIoAgAgA0EgaigCABDLFCADKAIYIAIoAgAQ2zMgA0HAAEEEEO4cDA8LIAAoAgxFDQ4gAEEMahDjAQwOCyAAQQRqEOMBDA0LIABBBGoQ4wEMDAsgAEEIahD0EQwLCyAAQQhqEPkTDAoLIAAoAgQiA0HAAGoQqxYgA0GAAWoiAigCACADQYQBaigCABCdHiADKAJ8IAIoAgAQ4jMCQCADKAJ4IgJFDQAgAhDeKSACKAIAIAJBBGooAgAQ3zMgAkEUQQQQ7hwLIANBkAFqENYWIAMoApABIANBlAFqKAIAEOEzAkAgAy0APEEGRg0AIANBEGoQqxYLIANBoAFBCBDuHAwJCyAAQQRqENYWIAAoAgQgAEEIaigCABDhMwwICyAAQQRqEOMBIAAoAggiAxDkBCADQeAAQQgQ7hwMBwsgAEEEahDjAQwGCyAAQQRqEOMBDAULIABBBGoQ4wEgACgCCCIDEOQEIANB4ABBCBDuHAwECyAAQQRqEOMBIAAoAggiAxDeKSADKAIAIANBBGooAgAQ3zMgA0EUQQQQ7hwMAwsgAEEEahDjASAAKAIIIgMQ5AQgA0HgAEEIEO4cDAILIAApAwgiBUIDg0IAUg0BIAEgBaciAzYCDCABQQxqEPUHIAMgAygCACICQX9qNgIAIAJBAUcNASADIAMoAiAQ0y8MAQsCQAJAIAAoAgQiAygCAEEDRg0AIANBIGoQ4wEgAxDVEgwBCyADQRBqEOMBIANBBGoQ9ycgAygCBCADQQhqKAIAENszIAMoAiAiAkUNACACEN4pIAIoAgAgAkEEaigCABDfMyACQRRBBBDuHAsgA0EoQQgQ7hwLIABBwABBCBDuHCABQRBqJAALxhQCEH8CfiMAQYABayICJAAgAC0APSEDIABBAToAPSAALQA5IQQgAEEBOgA5AkAgASgCCCIFRQ0AIAEoAgQhBiAFQQxsIQUDQCAAIAYoAgAQ2TIgBkEMaiEGIAVBdGoiBQ0ACwsCQCABKAIwIgZFDQAgAEEBOgA5IAYgABD+AQsCQCABKAI0IgZFDQAgAC0ANEEBRw0AIAAtADohByAAQYACOwA5AkAgBigCCCIIRQ0AIAhBMGwhCSAGKAIEIgZBCGohBQNAIAAgBRCgGSAFQTBqIQUgCUFQaiIJDQALIAhBMGwhBQNAIAAgBhCoFyAGQTBqIQYgBUFQaiIFDQALCyAAIAc6ADoLAkAgASgCOCIGRQ0AIAAtADRBAUcNACAALQA6IQkgAEGBAjsAOQJAIAYoAggiBUUNACAGKAIEIQYgBUECdCEFA0AgACAGKAIAEOovIAZBBGohBiAFQXxqIgUNAAsLIAAgCToAOgsgAEEBOgA5AkAgASgCICIFRQ0AIAEoAhwhBiAFQQR0IQUDQCAAIAYQ2CkgBkEQaiEGIAVBcGoiBQ0ACwsgACAEOgA5AkAgASgCFCIGRQ0AIAEoAhAiCCAGQdgAbGohByAAQSxqIQogAkEIakEQaiELIAJBCGpBLGohDCACQcgAakEQaiENA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCCgCACIGQXxqQQAgBkF7akEISRsOCQABAgMEBQsGBwALIAgoAkQiCSAIKAJIIg5BBnRqIQQgCSEBIA5FDQkDQCABKAI4IQUgASgCNCEGAkACQCABKAIAQQdHDQAgBUUNASAFQQxsIQUDQCAAIAYoAgAQ2TIgBkEMaiEGIAVBdGoiBQ0ADAILCyAFRQ0AIAVBDGwhBQNAIAAgBigCABDZMiAGQQxqIQYgBUF0aiIFDQALCyABQcAAaiIBIARGDQoMAAsLAkAgCCgCCEEDRw0AIAAgCCgCDBDZMgsCQCAIKAIwIgQoAggiBkUNACAEKAIEIgkgBkEGdGohAQNAAkAgCSgCOCIFRQ0AIAkoAjQhBiAFQQxsIQUDQCAAIAYoAgAQ2TIgBkEMaiEGIAVBdGoiBQ0ACwsgCUHAAGoiCSABRw0ACwsgACgCMBC0GCEGIA1BACkD2OKiASISNwIAIA1BCGpBACkD4OKiASITNwIAIAJByABqQQhqIBM3AwAgDCAKKQIANwIAIAxBCGogCkEIaigCADYCACACQQhqQQhqIBM3AwAgCyANKQMANwMAIAJBCGpBGGogAkHIAGpBGGopAwA3AwAgAiASNwNIIAIgEjcDCCAALQA4IQUgAiAAKAE6NgFCIAJBAToAQSACQQE6ADAgAiAGNgIsIAIgADYCKCACIAU6AEAgAkEIaiAEEOUFIAJBCGoQoQwgCxCsDAwJCyAIKAIgIQYgACgCMBC0GCEFIA1BACkD2OKiASISNwIAIA1BCGpBACkD4OKiASITNwIAIAJByABqQQhqIBM3AwAgDCAKKQIANwIAIAxBCGogCkEIaigCADYCACACQQhqQQhqIBM3AwAgCyANKQMANwMAIAJBCGpBGGogAkHIAGpBGGopAwA3AwAgAiASNwNIIAIgEjcDCCAALQA4IQkgAiAAKAE6NgFCIAJBAToAQSACQQE6ADAgAiAFNgIsIAIgADYCKCACIAk6AEAgAkEIaiAGEOUFIAJBCGoQoQwgCxCsDAwICwJAIAgoAjgiBUUNACAIKAI0IQYgBUEMbCEFA0AgACAGKAIAENkyIAZBDGohBiAFQXRqIgUNAAsLIAAtADkhBgJAIAgoAghBA0cNACAAQQE6ADkgCCgCDCAAEP4BCyAIKAI8IgUNBAwFCwJAIAgoAiQiBkUNACAAIAYQ2TILAkAgCCgCKCIGRQ0AIAAgBhCZLwsgCCgCNCIFRQ0GIAgoAjAhBiAFQQxsIQUDQCAAIAYoAgAQ2TIgBkEMaiEGIAVBdGoiBQ0ADAcLCyAAIAhBBGoQtCAMBQsgACAIQQRqEL8SDAQLAkAgCCgCCEEFRg0AIAAgCEEIahCKNAsCQCAIKAI8IgZFDQAgACAGENkyCwJAIAgoAkAiBkUNACAAIAYQmS8LIAgoAjgiBUUNAyAIKAI0IQYgBUEMbCEFA0AgACAGKAIAENkyIAZBDGohBiAFQXRqIgUNAAwECwsgAEEBOgA5IAUgABD+AQsgACAGOgA5IAgoAkAiBUUNASAALQA0QQFHDQEgAC0AOiEJIABBgQI7ADkgACAFKAIAEOovIAAgCToAOiAAIAY6ADkMAQtBACEBIAAoAjAQtBghBiANQQApA9jiogEiEjcCACANQQhqQQApA+DiogEiEzcCACACQcgAakEIaiATNwMAIAwgCikCADcCACAMQQhqIApBCGooAgA2AgAgAkEIakEIaiATNwMAIAsgDSkDADcDACACQQhqQRhqIAJByABqQRhqKQMANwMAIAIgEjcDSCACIBI3AwggAC0AOCEFIAIgACgBOjYBQiACQQE6ADAgAiAGNgIsIAIgADYCKCACIAU6AEAgAkEAOgBBIAIgBDYCbCACIAk2AmggAkEANgJYIAJBADYCSCAIQSBqIQ8gAigCTCEQIAIoAlQhESAJIQYDQAJAAkAgAUUNAEEAIQUMAQtBASEFCwJAA0ACQAJAAkACQCAFDgIAAQELIBAgEUcNASACQcgAahD3FEEAIQEgAkEANgJIQQEhBQwDCyAGRQ0DIAYgBEYNAwJAA0AgBkHAAGohBQJAIAYoAgBBfmoOBgACAgICAAILIAUhBiAFIARHDQALIAIgBTYCaAwECyACIAU2AmggAkEANgJ8IAJCgICAgIABNwJ0AkACQCAGKAIAQQdHDQAgBkEIaiEQAkAgBi0AHEECRg0AIBAgAkH0AGoQoRkMAgsgECgCACACQfQAahD4DgwBCyAGIAJB9ABqEPgOCyACKAJ0IgZBgICAgHhGDQMgAigCfCEQIAIoAnghASACIAY2AlAgAiABNgJMIAIgATYCSCACIAEgEEEEdGoiETYCVCAFIQYgASEQDAELIAIgEEEQaiIFNgJMIAJBCGogECkDAEEBEO0HIAUhEAwDC0EAIQUMAAsLCwJAIAFFDQAgAkHIAGoQ9xQLAkAgDkUNAANAAkACQCAJKAIAQQdHDQACQCAJKAI4IgVFDQAgCSgCNCEGIAVBDGwhBQNAIAJBCGogBigCABDZMiAGQQxqIQYgBUF0aiIFDQALCyAJQQhqIQYgAkEAOgBBAkAgCS0AHEECRg0AIAJBCGogBhCzIAwCCyACQQhqIAYQ6S8MAQsgAkEIaiAJEKkkCyAJQcAAaiIJIARHDQALCyACQQE6AEECQCAPKAIAQYCAgIB4Rg0AAkAgCCgCNA0AIAIoAiwiBkUNACAIQQAgBhDSBjYCNAsgAkEIaiAPEJkNCyACQQhqEKEMIAsQrAwLIAhB2ABqIgggB0cNAAsLIAAgAzoAPSACQYABaiQAC6MVAgR/AX4jAEEQayIBJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiACgCACICQXRqIgNBByADQSZJG0F/ag4kAAECAwQFBgcICQoLDA0ODxAREhMiFBUWFyIYGRobHB0eHyAhIgsgAEEIaiIDKAIAIABBDGooAgAQxicgACgCBCADKAIAENszDCELIABBCGoiAygCACAAQQxqKAIAEPMhIAAoAgQgAygCABDcMwwgCwJAIAAtABxBAkYNACAAKQMIIgVCA4NCAFINACABIAWnIgM2AgwgAUEMahD1ByADIAMoAgAiAkF/ajYCACACQQFHDQAgAyADKAIgENMvCyAAKAIgIgNBBGoiAigCACADQQhqKAIAEMwYIAMoAgAgAigCABDdMyADQRBqIgIoAgAgA0EUaigCABCnLSADKAIMIAIoAgAQ3DMCQCADKAIYQYCAgIB4Rg0AIANBHGoiAigCACADQSBqKAIAEMYwIAMoAhggAigCABDeMwsCQCADKAI8IgJFDQAgAhDmESACKAIAIAJBBGooAgAQ3jMgAkEUQQQQ7hwLAkAgAygCQCICRQ0AIAIoAgAiBBDiBCAEQeAAQQgQ7hwgAkEMQQQQ7hwLIANByABBBBDuHAwfCyAAQQRqEOUBDB4LIABBDGoQ5QEMHQsgAEEEahDlASAAQQhqEOUBDBwLAkACQCACQQtGDQAgABDqBgwBCyAAQQRqEOUdCyAAQThqEOUBDBsLIABBKGoQ5QECQAJAAkAgACgCCA4CAQIACyAAQQxqEOUBDBwLIAApAxAQ0B8MGwsgACkDEBDQHwwaCwJAIAAoAggNACAAKQMQENAfDBoLIABBDGoQ5QEMGQsgAEEEahDlASAAQQhqEOUBIABBDGoQ5QEMGAsgAEEEaiEDAkAgAC0AGEEFRw0AIABBEGoQ5QELIAMQ9ycgACgCBCAAQQhqKAIAENszIAAoAigiA0UNFyADEN4pIAMoAgAgA0EEaigCABDfMyADQRRBBBDuHAwXCyAAQRBqEOUBAkAgACgCBEGAgICAeEYNACAAQQRqEPcnIAAoAgQgAEEIaigCABDbMwsgACgCICIDRQ0WIAMQ3ikgAygCACADQQRqKAIAEN8zIANBFEEEEO4cDBYLIABBCGoiAygCACAAQQxqKAIAEKYtIAAoAgQgAygCABDfMwwVCyAAKQMIIgVCA4NCAFINFCABIAWnIgM2AgwgAUEMahD1ByADIAMoAgAiAkF/ajYCACACQQFHDRQgAyADKAIgENMvDBQLAkACQAJAAkACQCAAKAIIDgYBGBgCAwQACwJAIAApAxAiBUIDg0IAUg0AIAEgBaciAzYCDCABQQxqEPUHIAMgAygCACICQX9qNgIAIAJBAUcNACADIAMoAiAQ0y8LIAApAxgiBUIDg0IAUg0XIAEgBaciAzYCDCABQQxqEPUHIAMgAygCACICQX9qNgIAIAJBAUcNFyADIAMoAiAQ0y8MFwsgAEEQahC7EwwWCyAAKQMgIgVQDRUgBUIDg0IAUg0VIAEgBaciAzYCDCABQQxqEPUHIAMgAygCACICQX9qNgIAIAJBAUcNFSADIAMoAiAQ0y8MFQsgACkDGCAAKAIgEMYZDBQLAkAgACkDECIFQgODQgBSDQAgASAFpyIDNgIMIAFBDGoQ9QcgAyADKAIAIgJBf2o2AgAgAkEBRw0AIAMgAygCIBDTLwsgACkDGCIFQgODQgBSDRMgASAFpyIDNgIMIAFBDGoQ9QcgAyADKAIAIgJBf2o2AgAgAkEBRw0TIAMgAygCIBDTLwwTCyAAQQhqIgMoAgAgAEEMaigCABCmLSAAKAIEIAMoAgAQ3zMgAEEUaiIDKAIAIABBGGooAgAQihEgACgCECADKAIAEOAzDBILIABBBGoQ5QECQCAAKAIYIgNFDQAgAxDeKSADKAIAIANBBGooAgAQ3zMgA0EUQQQQ7hwLIAAoAggiA0EEaiICKAIAIANBCGooAgAQpi0gAygCACACKAIAEN8zIANBEGoiAigCACADQRRqKAIAEIoRIAMoAgwgAigCABDgMyADQSBBBBDuHAwRCyAAQQhqIgMoAgAgAEEMaigCABDFMCAAKAIEIAMoAgAQ4TMgACgCECIDQQRqIQICQAJAIAMoAgBBgICAgHhGDQAgAigCACADQQhqKAIAEMYwIAMoAgAgAigCABDeMwwBCyACEOUBCyADQRhBBBDuHAJAIAAoAiAiA0UNACADEOYRIAMoAgAgA0EEaigCABDeMyADQRRBBBDuHAsgACgCJCIDRQ0QIAMoAgAiAhDiBCACQeAAQQgQ7hwgA0EMQQQQ7hwMEAsCQCAALQAcQQJGDQAgACkDCCIFQgODQgBSDQAgASAFpyIDNgIMIAFBDGoQ9QcgAyADKAIAIgJBf2o2AgAgAkEBRw0AIAMgAygCIBDTLwsgACgCICIDQQRqIgIoAgAgA0EIaigCABCnLSADKAIAIAIoAgAQ3DMgA0EQaiICKAIAIANBFGooAgAQxzAgAygCDCACKAIAEOIzAkAgAygCMEUNACADQTBqEOUBCwJAIAMoAjQiAkUNACACEOYRIAIoAgAgAkEEaigCABDeMyACQRRBBBDuHAsCQCADKAI4IgJFDQAgAhDeKSACKAIAIAJBBGooAgAQ3zMgAkEUQQQQ7hwLIANBHGoiAigCACADQSBqKAIAEMsUIAMoAhggAigCABDbMyADQcAAQQQQ7hwMDwsgACgCDEUNDiAAQQxqEOUBDA4LIABBBGoQ5QEMDQsgAEEEahDlAQwMCyAAQQhqEPQRDAsLIABBCGoQ+RMMCgsgACgCBCIDQcAAahCrFiADQYABaiICKAIAIANBhAFqKAIAEJ0eIAMoAnwgAigCABDiMwJAIAMoAngiAkUNACACEN4pIAIoAgAgAkEEaigCABDfMyACQRRBBBDuHAsgA0GQAWoQ1hYgAygCkAEgA0GUAWooAgAQ4TMCQCADLQA8QQZGDQAgA0EQahCrFgsgA0GgAUEIEO4cDAkLIABBBGoQ1hYgACgCBCAAQQhqKAIAEOEzDAgLIABBBGoQ5QEgACgCCCIDEOIEIANB4ABBCBDuHAwHCyAAQQRqEOUBDAYLIABBBGoQ5QEMBQsgAEEEahDlASAAKAIIIgMQ4gQgA0HgAEEIEO4cDAQLIABBBGoQ5QEgACgCCCIDEN4pIAMoAgAgA0EEaigCABDfMyADQRRBBBDuHAwDCyAAQQRqEOUBIAAoAggiAxDiBCADQeAAQQgQ7hwMAgsgACkDCCIFQgODQgBSDQEgASAFpyIDNgIMIAFBDGoQ9QcgAyADKAIAIgJBf2o2AgAgAkEBRw0BIAMgAygCIBDTLwwBCwJAAkAgACgCBCIDKAIAQQNGDQAgA0EgahDlASADENMSDAELIANBEGoQ5QEgA0EEahD3JyADKAIEIANBCGooAgAQ2zMgAygCICICRQ0AIAIQ3ikgAigCACACQQRqKAIAEN8zIAJBFEEEEO4cCyADQShBCBDuHAsgAEHAAEEIEO4cIAFBEGokAAucFQIEfwF+IwBBEGsiASQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAIgAoAgAiAkF0aiIDQQcgA0EmSRtBf2oOJAABAgMEBQYHCAkKCwwNDg8QERITIhQVFhciGBkaGxwdHh8gISILIABBCGoiAygCACAAQQxqKAIAELgnIAAoAgQgAygCABDbMwwhCyAAQQRqEJUeIAAoAgQgAEEIaigCABDcMwwgCwJAIAAtABxBAkYNACAAKQMIIgVCA4NCAFINACABIAWnIgM2AgwgAUEMahD1ByADIAMoAgAiAkF/ajYCACACQQFHDQAgAyADKAIgENMvCyAAKAIgIgNBBGoiAigCACADQQhqKAIAEMgYIAMoAgAgAigCABDdMyADQRBqIgIoAgAgA0EUaigCABCaLSADKAIMIAIoAgAQ3DMCQCADKAIYQYCAgIB4Rg0AIANBHGoiAigCACADQSBqKAIAEKUwIAMoAhggAigCABDeMwsCQCADKAI8IgJFDQAgAhDdESACKAIAIAJBBGooAgAQ3jMgAkEUQQQQ7hwLAkAgAygCQCICRQ0AIAIoAgAiBBDYBCAEQeAAQQgQ7hwgAkEMQQQQ7hwLIANByABBBBDuHAwfCyAAQQRqEOYBDB4LIABBDGoQ5gEMHQsgAEEEahDmASAAQQhqEOYBDBwLAkACQCACQQtGDQAgABDOBwwBCyAAQQRqELwdCyAAQThqEOYBDBsLIABBKGoQ5gECQAJAAkAgACgCCA4CAQIACyAAQQxqEOYBDBwLIAApAxAQ2B8MGwsgACkDEBDYHwwaCwJAIAAoAggNACAAKQMQENgfDBoLIABBDGoQ5gEMGQsgAEEEahDmASAAQQhqEOYBIABBDGoQ5gEMGAsgAEEEaiEDAkAgAC0AGEEFRw0AIABBEGoQ5gELIAMQ8ScgACgCBCAAQQhqKAIAENszIAAoAigiA0UNFyADENIpIAMoAgAgA0EEaigCABDfMyADQRRBBBDuHAwXCyAAQRBqEOYBAkAgACgCBEGAgICAeEYNACAAQQRqEPEnIAAoAgQgAEEIaigCABDbMwsgACgCICIDRQ0WIAMQ0ikgAygCACADQQRqKAIAEN8zIANBFEEEEO4cDBYLIABBCGoiAygCACAAQQxqKAIAEJstIAAoAgQgAygCABDfMwwVCyAAKQMIIgVCA4NCAFINFCABIAWnIgM2AgwgAUEMahD1ByADIAMoAgAiAkF/ajYCACACQQFHDRQgAyADKAIgENMvDBQLAkACQAJAAkACQCAAKAIIDgYBGBgCAwQACwJAIAApAxAiBUIDg0IAUg0AIAEgBaciAzYCDCABQQxqEPUHIAMgAygCACICQX9qNgIAIAJBAUcNACADIAMoAiAQ0y8LIAApAxgiBUIDg0IAUg0XIAEgBaciAzYCDCABQQxqEPUHIAMgAygCACICQX9qNgIAIAJBAUcNFyADIAMoAiAQ0y8MFwsgAEEQahC9EwwWCyAAKQMgIgVQDRUgBUIDg0IAUg0VIAEgBaciAzYCDCABQQxqEPUHIAMgAygCACICQX9qNgIAIAJBAUcNFSADIAMoAiAQ0y8MFQsgACkDGCAAKAIgEMYZDBQLAkAgACkDECIFQgODQgBSDQAgASAFpyIDNgIMIAFBDGoQ9QcgAyADKAIAIgJBf2o2AgAgAkEBRw0AIAMgAygCIBDTLwsgACkDGCIFQgODQgBSDRMgASAFpyIDNgIMIAFBDGoQ9QcgAyADKAIAIgJBf2o2AgAgAkEBRw0TIAMgAygCIBDTLwwTCyAAQQhqIgMoAgAgAEEMaigCABCbLSAAKAIEIAMoAgAQ3zMgAEEUaiIDKAIAIABBGGooAgAQihEgACgCECADKAIAEOAzDBILIABBBGoQ5gECQCAAKAIYIgNFDQAgAxDSKSADKAIAIANBBGooAgAQ3zMgA0EUQQQQ7hwLIAAoAggiA0EEaiICKAIAIANBCGooAgAQmy0gAygCACACKAIAEN8zIANBEGoiAigCACADQRRqKAIAEIoRIAMoAgwgAigCABDgMyADQSBBBBDuHAwRCyAAQQhqIgMoAgAgAEEMaigCABCnMCAAKAIEIAMoAgAQ4TMgACgCECIDQQRqIQICQAJAIAMoAgBBgICAgHhGDQAgAigCACADQQhqKAIAEKUwIAMoAgAgAigCABDeMwwBCyACEOYBCyADQRhBBBDuHAJAIAAoAiAiA0UNACADEN0RIAMoAgAgA0EEaigCABDeMyADQRRBBBDuHAsgACgCJCIDRQ0QIAMoAgAiAhDYBCACQeAAQQgQ7hwgA0EMQQQQ7hwMEAsCQCAAQRxqLQAAQQJGDQAgACkDCCIFQgODQgBSDQAgASAFpyIDNgIMIAFBDGoQ9QcgAyADKAIAIgJBf2o2AgAgAkEBRw0AIAMgAygCIBDTLwsgACgCICIDQQRqIgIoAgAgA0EIaigCABCaLSADKAIAIAIoAgAQ3DMgA0EQaiICKAIAIANBFGooAgAQqDAgAygCDCACKAIAEOIzAkAgAygCMEUNACADQTBqEOYBCwJAIAMoAjQiAkUNACACEN0RIAIoAgAgAkEEaigCABDeMyACQRRBBBDuHAsCQCADKAI4IgJFDQAgAhDSKSACKAIAIAJBBGooAgAQ3zMgAkEUQQQQ7hwLIANBHGoiAigCACADQSBqKAIAEMgUIAMoAhggAigCABDbMyADQcAAQQQQ7hwMDwsgACgCDEUNDiAAQQxqEOYBDA4LIABBBGoQ5gEMDQsgAEEEahDmAQwMCyAAQQhqEIISDAsLIABBCGoQkhQMCgsgACgCBCIDQcAAahDFFiADQYABaiICKAIAIANBhAFqKAIAEJYeIAMoAnwgAigCABDiMwJAIAMoAngiAkUNACACENIpIAIoAgAgAkEEaigCABDfMyACQRRBBBDuHAsgA0GQAWoQuRYgAygCkAEgA0GUAWooAgAQ4TMCQCADLQA8QQZGDQAgA0EQahDFFgsgA0GgAUEIEO4cDAkLIABBBGoQuRYgACgCBCAAQQhqKAIAEOEzDAgLIABBBGoQ5gEgACgCCCIDENgEIANB4ABBCBDuHAwHCyAAQQRqEOYBDAYLIABBBGoQ5gEMBQsgAEEEahDmASAAKAIIIgMQ2AQgA0HgAEEIEO4cDAQLIABBBGoQ5gEgACgCCCIDENIpIAMoAgAgA0EEaigCABDfMyADQRRBBBDuHAwDCyAAQQRqEOYBIAAoAggiAxDYBCADQeAAQQgQ7hwMAgsgACkDCCIFQgODQgBSDQEgASAFpyIDNgIMIAFBDGoQ9QcgAyADKAIAIgJBf2o2AgAgAkEBRw0BIAMgAygCIBDTLwwBCwJAAkAgACgCBCIDKAIAQQNGDQAgA0EgahDmASADEMwSDAELIANBEGoQ5gEgA0EEahDxJyADKAIEIANBCGooAgAQ2zMgAygCICICRQ0AIAIQ0ikgAigCACACQQRqKAIAEN8zIAJBFEEEEO4cCyADQShBCBDuHAsgAEHAAEEIEO4cIAFBEGokAAucFQIEfwF+IwBBEGsiASQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAIgAoAgAiAkF0aiIDQQcgA0EmSRtBf2oOJAABAgMEBQYHCAkKCwwNDg8QERITIhQVFhciGBkaGxwdHh8gISILIABBCGoiAygCACAAQQxqKAIAEL0nIAAoAgQgAygCABDbMwwhCyAAQQRqEJgeIAAoAgQgAEEIaigCABDcMwwgCwJAIAAtABxBAkYNACAAKQMIIgVCA4NCAFINACABIAWnIgM2AgwgAUEMahD1ByADIAMoAgAiAkF/ajYCACACQQFHDQAgAyADKAIgENMvCyAAKAIgIgNBBGoiAigCACADQQhqKAIAELkwIAMoAgAgAigCABDdMyADQRBqIgIoAgAgA0EUaigCABChLSADKAIMIAIoAgAQ3DMCQCADKAIYQYCAgIB4Rg0AIANBHGoiAigCACADQSBqKAIAEL4wIAMoAhggAigCABDeMwsCQCADKAI8IgJFDQAgAhDjESACKAIAIAJBBGooAgAQ3jMgAkEUQQQQ7hwLAkAgAygCQCICRQ0AIAIoAgAiBBDcBCAEQeAAQQgQ7hwgAkEMQQQQ7hwLIANByABBBBDuHAwfCyAAQQRqEOcBDB4LIABBDGoQ5wEMHQsgAEEEahDnASAAQQhqEOcBDBwLAkACQCACQQtGDQAgABDRBwwBCyAAQQRqENAdCyAAQThqEOcBDBsLIABBKGoQ5wECQAJAAkAgACgCCA4CAQIACyAAQQxqEOcBDBwLIAApAxAQ2B8MGwsgACkDEBDYHwwaCwJAIAAoAggNACAAKQMQENgfDBoLIABBDGoQ5wEMGQsgAEEEahDnASAAQQhqEOcBIABBDGoQ5wEMGAsgAEEEaiEDAkAgAC0AGEEFRw0AIABBEGoQ5wELIAMQ8ycgACgCBCAAQQhqKAIAENszIAAoAigiA0UNFyADENcpIAMoAgAgA0EEaigCABDfMyADQRRBBBDuHAwXCyAAQRBqEOcBAkAgACgCBEGAgICAeEYNACAAQQRqEPMnIAAoAgQgAEEIaigCABDbMwsgACgCICIDRQ0WIAMQ1ykgAygCACADQQRqKAIAEN8zIANBFEEEEO4cDBYLIABBCGoiAygCACAAQQxqKAIAEJ8tIAAoAgQgAygCABDfMwwVCyAAKQMIIgVCA4NCAFINFCABIAWnIgM2AgwgAUEMahD1ByADIAMoAgAiAkF/ajYCACACQQFHDRQgAyADKAIgENMvDBQLAkACQAJAAkACQCAAKAIIDgYBGBgCAwQACwJAIAApAxAiBUIDg0IAUg0AIAEgBaciAzYCDCABQQxqEPUHIAMgAygCACICQX9qNgIAIAJBAUcNACADIAMoAiAQ0y8LIAApAxgiBUIDg0IAUg0XIAEgBaciAzYCDCABQQxqEPUHIAMgAygCACICQX9qNgIAIAJBAUcNFyADIAMoAiAQ0y8MFwsgAEEQahC8EwwWCyAAKQMgIgVQDRUgBUIDg0IAUg0VIAEgBaciAzYCDCABQQxqEPUHIAMgAygCACICQX9qNgIAIAJBAUcNFSADIAMoAiAQ0y8MFQsgACkDGCAAKAIgEMYZDBQLAkAgACkDECIFQgODQgBSDQAgASAFpyIDNgIMIAFBDGoQ9QcgAyADKAIAIgJBf2o2AgAgAkEBRw0AIAMgAygCIBDTLwsgACkDGCIFQgODQgBSDRMgASAFpyIDNgIMIAFBDGoQ9QcgAyADKAIAIgJBf2o2AgAgAkEBRw0TIAMgAygCIBDTLwwTCyAAQQhqIgMoAgAgAEEMaigCABCfLSAAKAIEIAMoAgAQ3zMgAEEUaiIDKAIAIABBGGooAgAQihEgACgCECADKAIAEOAzDBILIABBBGoQ5wECQCAAKAIYIgNFDQAgAxDXKSADKAIAIANBBGooAgAQ3zMgA0EUQQQQ7hwLIAAoAggiA0EEaiICKAIAIANBCGooAgAQny0gAygCACACKAIAEN8zIANBEGoiAigCACADQRRqKAIAEIoRIAMoAgwgAigCABDgMyADQSBBBBDuHAwRCyAAQQhqIgMoAgAgAEEMaigCABC6MCAAKAIEIAMoAgAQ4TMgACgCECIDQQRqIQICQAJAIAMoAgBBgICAgHhGDQAgAigCACADQQhqKAIAEL4wIAMoAgAgAigCABDeMwwBCyACEOcBCyADQRhBBBDuHAJAIAAoAiAiA0UNACADEOMRIAMoAgAgA0EEaigCABDeMyADQRRBBBDuHAsgACgCJCIDRQ0QIAMoAgAiAhDcBCACQeAAQQgQ7hwgA0EMQQQQ7hwMEAsCQCAAQRxqLQAAQQJGDQAgACkDCCIFQgODQgBSDQAgASAFpyIDNgIMIAFBDGoQ9QcgAyADKAIAIgJBf2o2AgAgAkEBRw0AIAMgAygCIBDTLwsgACgCICIDQQRqIgIoAgAgA0EIaigCABChLSADKAIAIAIoAgAQ3DMgA0EQaiICKAIAIANBFGooAgAQvTAgAygCDCACKAIAEOIzAkAgAygCMEUNACADQTBqEOcBCwJAIAMoAjQiAkUNACACEOMRIAIoAgAgAkEEaigCABDeMyACQRRBBBDuHAsCQCADKAI4IgJFDQAgAhDXKSACKAIAIAJBBGooAgAQ3zMgAkEUQQQQ7hwLIANBHGoiAigCACADQSBqKAIAEMkUIAMoAhggAigCABDbMyADQcAAQQQQ7hwMDwsgACgCDEUNDiAAQQxqEOcBDA4LIABBBGoQ5wEMDQsgAEEEahDnAQwMCyAAQQhqEIISDAsLIABBCGoQkhQMCgsgACgCBCIDQcAAahDFFiADQYABaiICKAIAIANBhAFqKAIAEJkeIAMoAnwgAigCABDiMwJAIAMoAngiAkUNACACENcpIAIoAgAgAkEEaigCABDfMyACQRRBBBDuHAsgA0GQAWoQyRYgAygCkAEgA0GUAWooAgAQ4TMCQCADLQA8QQZGDQAgA0EQahDFFgsgA0GgAUEIEO4cDAkLIABBBGoQyRYgACgCBCAAQQhqKAIAEOEzDAgLIABBBGoQ5wEgACgCCCIDENwEIANB4ABBCBDuHAwHCyAAQQRqEOcBDAYLIABBBGoQ5wEMBQsgAEEEahDnASAAKAIIIgMQ3AQgA0HgAEEIEO4cDAQLIABBBGoQ5wEgACgCCCIDENcpIAMoAgAgA0EEaigCABDfMyADQRRBBBDuHAwDCyAAQQRqEOcBIAAoAggiAxDcBCADQeAAQQgQ7hwMAgsgACkDCCIFQgODQgBSDQEgASAFpyIDNgIMIAFBDGoQ9QcgAyADKAIAIgJBf2o2AgAgAkEBRw0BIAMgAygCIBDTLwwBCwJAAkAgACgCBCIDKAIAQQNGDQAgA0EgahDnASADENASDAELIANBEGoQ5wEgA0EEahDzJyADKAIEIANBCGooAgAQ2zMgAygCICICRQ0AIAIQ1ykgAigCACACQQRqKAIAEN8zIAJBFEEEEO4cCyADQShBCBDuHAsgAEHAAEEIEO4cIAFBEGokAAv0FQIDfwF+IwBBEGsiASQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACICQXRqIgNBByADQSZJG0F/ag4kAAECAwQFBgcICQoLDA0ODxAREhMkFBUWFyQYGRobHB0eHyAhJAsgACgCCCIDIAAoAgwQxicgACgCBCADENszDCMLIAAoAggiAyAAKAIMEPMhIAAoAgQgAxDcMwwiCyAAQQhqEI4bDCELIAAoAgQiABDoASAAQcAAQQgQ7hwMIAsgACgCDCIAEOgBIABBwABBCBDuHAwfCyAAKAIEIgMQ6AEgA0HAAEEIEO4cIAAoAggiABDoASAAQcAAQQgQ7hwMHgsCQAJAAkACQAJAAkACQAJAAkACQAJAIAIODAoAAQIDBAUGBwgnCScLIABBCGoQzBAMJgsgAEEIahCnGQwlCyAAQQRqELc2DCQLIABBBGoQ7BcMIwsgAEEEahDEMAwiCyAAQQRqEMQwDCELIABBBGoQtzYMIAsgAEEEahDEMAwfCyAAQQRqELgsDB4LAkACQCAAKAIEDgIAAR8LIAAoAgwiAyAAKAIQEKUtIAAoAgggAxDhMwwdCyAAQQhqEMATIAAoAgggACgCDBDjMwwcCyAAQQhqEJ4YDBwLIAAoAigiAxDoASADQcAAQQgQ7hwgAEEIahCQEgwcCwJAIAAoAggNACAAKQMQIgRCA4NCAFINHCABIASnIgA2AgwgAUEMahD1ByAAIAAoAgAiA0F/ajYCACADQQFHDRwgACAAKAIgENMvDBwLIAAoAgwiABDoASAAQcAAQQgQ7hwMGwsgACgCBCIDEOgBIANBwABBCBDuHCAAKAIIIgMQ6AEgA0HAAEEIEO4cIAAoAgwiABDoASAAQcAAQQgQ7hwMGgsgAEEEaiEDAkAgAC0AGEEFRw0AIAAoAhAiAhDoASACQcAAQQgQ7hwLIAMQ9ycgACgCBCAAKAIIENszIAAoAigiAEUNGSAAEN4pIAAoAgAgAEEEaigCABDfMyAAQRRBBBDuHAwZCyAAKAIQIgMQ6AEgA0HAAEEIEO4cAkAgACgCBCIDQYCAgIB4Rg0AIABBBGoQ9ycgAyAAKAIIENszCyAAKAIgIgBFDRggABDeKSAAKAIAIABBBGooAgAQ3zMgAEEUQQQQ7hwMGAsgACgCCCIDIAAoAgwQpi0gACgCBCADEN8zDBcLIAApAwgiBEIDg0IAUg0WIAEgBKciADYCDCABQQxqEPUHIAAgACgCACIDQX9qNgIAIANBAUcNFiAAIAAoAiAQ0y8MFgsCQAJAAkACQAJAIAAoAggOBgEaGgIDBAALAkAgACkDECIEQgODQgBSDQAgASAEpyIDNgIMIAFBDGoQ9QcgAyADKAIAIgJBf2o2AgAgAkEBRw0AIAMgAygCIBDTLwsgACkDGCIEQgODQgBSDRkgASAEpyIANgIMIAFBDGoQ9QcgACAAKAIAIgNBf2o2AgAgA0EBRw0ZIAAgACgCIBDTLwwZCyAAQRBqELgTDBgLIAApAyAiBFANFyAEQgODQgBSDRcgASAEpyIANgIMIAFBDGoQ9QcgACAAKAIAIgNBf2o2AgAgA0EBRw0XIAAgACgCIBDTLwwXCyAAKQMYIAAoAiAQwRkMFgsCQCAAKQMQIgRCA4NCAFINACABIASnIgM2AgwgAUEMahD1ByADIAMoAgAiAkF/ajYCACACQQFHDQAgAyADKAIgENMvCyAAKQMYIgRCA4NCAFINFSABIASnIgA2AgwgAUEMahD1ByAAIAAoAgAiA0F/ajYCACADQQFHDRUgACAAKAIgENMvDBULIAAoAggiAyAAKAIMEKYtIAAoAgQgAxDfMyAAKAIUIgMgACgCGBCKESAAKAIQIAMQ4DMMFAsgACgCBCIDEOgBIANBwABBCBDuHAJAIAAoAhgiA0UNACADEN4pIAMoAgAgA0EEaigCABDfMyADQRRBBBDuHAsgACgCCCIAQQRqIgMoAgAgAEEIaigCABCmLSAAKAIAIAMoAgAQ3zMgAEEQaiIDKAIAIABBFGooAgAQihEgACgCDCADKAIAEOAzIABBIEEEEO4cDBMLIAAoAggiAyAAKAIMEMUwIAAoAgQgAxDhMyAAKAIQIgNBBGohAgJAAkAgAygCAEGAgICAeEYNACACKAIAIANBCGooAgAQxjAgAygCACACKAIAEN4zDAELIAIQuDYLIANBGEEEEO4cAkAgACgCICIDRQ0AIAMQ5hEgAygCACADQQRqKAIAEN4zIANBFEEEEO4cCyAAKAIkIgBFDRIgACgCACIDEOAEIANB4ABBCBDuHCAAQQxBBBDuHAwSCwJAIAAtABxBAkYNACAAKQMIIgRCA4NCAFINACABIASnIgM2AgwgAUEMahD1ByADIAMoAgAiAkF/ajYCACACQQFHDQAgAyADKAIgENMvCyAAKAIgIgBBBGoiAygCACAAQQhqKAIAEKctIAAoAgAgAygCABDcMyAAQRBqIgMoAgAgAEEUaigCABDHMCAAKAIMIAMoAgAQ4jMCQCAAKAIwIgNFDQAgAxDoASADQcAAQQgQ7hwLAkAgACgCNCIDRQ0AIAMQ5hEgAygCACADQQRqKAIAEN4zIANBFEEEEO4cCwJAIAAoAjgiA0UNACADEN4pIAMoAgAgA0EEaigCABDfMyADQRRBBBDuHAsgAEEcaiIDKAIAIABBIGooAgAQyxQgACgCGCADKAIAENszIABBwABBBBDuHAwRCyAAKAIMIgBFDRAgABDoASAAQcAAQQgQ7hwMEAsgACgCBCIAEOgBIABBwABBCBDuHAwPCyAAKAIEIgAQ6AEgAEHAAEEIEO4cDA4LIABBCGoQ9BEMDQsgAEEIahD5EwwMCyAAKAIEIgBBwABqEKsWIABBgAFqIgMoAgAgAEGEAWooAgAQnR4gACgCfCADKAIAEOIzAkAgACgCeCIDRQ0AIAMQ3ikgAygCACADQQRqKAIAEN8zIANBFEEEEO4cCyAAQZABahDWFiAAKAKQASAAQZQBaigCABDhMwJAIAAtADxBBkYNACAAQRBqEKsWCyAAQaABQQgQ7hwMCwsgAEEEahDWFiAAKAIEIAAoAggQ4TMMCgsgACgCBCIDEOgBIANBwABBCBDuHCAAKAIIIgAQ4AQgAEHgAEEIEO4cDAkLIAAoAgQiABDoASAAQcAAQQgQ7hwMCAsgACgCBCIAEOgBIABBwABBCBDuHAwHCyAAKAIEIgMQ6AEgA0HAAEEIEO4cIAAoAggiABDgBCAAQeAAQQgQ7hwMBgsgACgCBCIDEOgBIANBwABBCBDuHCAAKAIIIgAQ3ikgACgCACAAQQRqKAIAEN8zIABBFEEEEO4cDAULIAAoAgQiAxDoASADQcAAQQgQ7hwgACgCCCIAEOAEIABB4ABBCBDuHAwECyAAKQMIIgRCA4NCAFINAyABIASnIgA2AgwgAUEMahD1ByAAIAAoAgAiA0F/ajYCACADQQFHDQMgACAAKAIgENMvDAMLAkACQCAAKAIEIgAoAgBBA0YNACAAEMwQDAELIABBBGoQ5CMLIABBKEEIEO4cDAILIAAoAhwiA0UNACADKAIAIgIQ4AQgAkHgAEEIEO4cIANBDEEEEO4cCyAAKAI4IgAQ6AEgAEHAAEEIEO4cCyABQRBqJAAL9BUCA38BfiMAQRBrIgEkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiAkF0aiIDQQcgA0EmSRtBf2oOJAABAgMEBQYHCAkKCwwNDg8QERITJBQVFhckGBkaGxwdHh8gISQLIAAoAggiAyAAKAIMEMYnIAAoAgQgAxDbMwwjCyAAKAIIIgMgACgCDBDzISAAKAIEIAMQ3DMMIgsgAEEIahCZGwwhCyAAKAIEIgAQ6QEgAEHAAEEIEO4cDCALIAAoAgwiABDpASAAQcAAQQgQ7hwMHwsgACgCBCIDEOkBIANBwABBCBDuHCAAKAIIIgAQ6QEgAEHAAEEIEO4cDB4LAkACQAJAAkACQAJAAkACQAJAAkACQCACDgwKAAECAwQFBgcIJwknCyAAQQhqENAQDCYLIABBCGoQrBkMJQsgAEEEahDCNgwkCyAAQQRqEPAXDCMLIABBBGoQzzAMIgsgAEEEahDPMAwhCyAAQQRqEMI2DCALIABBBGoQzzAMHwsgAEEEahC8LAweCwJAAkAgACgCBA4CAAEfCyAAKAIMIgMgACgCEBClLSAAKAIIIAMQ4TMMHQsgAEEIahDAEyAAKAIIIAAoAgwQ4zMMHAsgAEEIahCjGAwcCyAAKAIoIgMQ6QEgA0HAAEEIEO4cIABBCGoQlxIMHAsCQCAAKAIIDQAgACkDECIEQgODQgBSDRwgASAEpyIANgIMIAFBDGoQ9QcgACAAKAIAIgNBf2o2AgAgA0EBRw0cIAAgACgCIBDTLwwcCyAAKAIMIgAQ6QEgAEHAAEEIEO4cDBsLIAAoAgQiAxDpASADQcAAQQgQ7hwgACgCCCIDEOkBIANBwABBCBDuHCAAKAIMIgAQ6QEgAEHAAEEIEO4cDBoLIABBBGohAwJAIAAtABhBBUcNACAAKAIQIgIQ6QEgAkHAAEEIEO4cCyADEPcnIAAoAgQgACgCCBDbMyAAKAIoIgBFDRkgABDeKSAAKAIAIABBBGooAgAQ3zMgAEEUQQQQ7hwMGQsgACgCECIDEOkBIANBwABBCBDuHAJAIAAoAgQiA0GAgICAeEYNACAAQQRqEPcnIAMgACgCCBDbMwsgACgCICIARQ0YIAAQ3ikgACgCACAAQQRqKAIAEN8zIABBFEEEEO4cDBgLIAAoAggiAyAAKAIMEKYtIAAoAgQgAxDfMwwXCyAAKQMIIgRCA4NCAFINFiABIASnIgA2AgwgAUEMahD1ByAAIAAoAgAiA0F/ajYCACADQQFHDRYgACAAKAIgENMvDBYLAkACQAJAAkACQCAAKAIIDgYBGhoCAwQACwJAIAApAxAiBEIDg0IAUg0AIAEgBKciAzYCDCABQQxqEPUHIAMgAygCACICQX9qNgIAIAJBAUcNACADIAMoAiAQ0y8LIAApAxgiBEIDg0IAUg0ZIAEgBKciADYCDCABQQxqEPUHIAAgACgCACIDQX9qNgIAIANBAUcNGSAAIAAoAiAQ0y8MGQsgAEEQahC9EwwYCyAAKQMgIgRQDRcgBEIDg0IAUg0XIAEgBKciADYCDCABQQxqEPUHIAAgACgCACIDQX9qNgIAIANBAUcNFyAAIAAoAiAQ0y8MFwsgACkDGCAAKAIgEMYZDBYLAkAgACkDECIEQgODQgBSDQAgASAEpyIDNgIMIAFBDGoQ9QcgAyADKAIAIgJBf2o2AgAgAkEBRw0AIAMgAygCIBDTLwsgACkDGCIEQgODQgBSDRUgASAEpyIANgIMIAFBDGoQ9QcgACAAKAIAIgNBf2o2AgAgA0EBRw0VIAAgACgCIBDTLwwVCyAAKAIIIgMgACgCDBCmLSAAKAIEIAMQ3zMgACgCFCIDIAAoAhgQihEgACgCECADEOAzDBQLIAAoAgQiAxDpASADQcAAQQgQ7hwCQCAAKAIYIgNFDQAgAxDeKSADKAIAIANBBGooAgAQ3zMgA0EUQQQQ7hwLIAAoAggiAEEEaiIDKAIAIABBCGooAgAQpi0gACgCACADKAIAEN8zIABBEGoiAygCACAAQRRqKAIAEIoRIAAoAgwgAygCABDgMyAAQSBBBBDuHAwTCyAAKAIIIgMgACgCDBDFMCAAKAIEIAMQ4TMgACgCECIDQQRqIQICQAJAIAMoAgBBgICAgHhGDQAgAigCACADQQhqKAIAEMYwIAMoAgAgAigCABDeMwwBCyACEMM2CyADQRhBBBDuHAJAIAAoAiAiA0UNACADEOYRIAMoAgAgA0EEaigCABDeMyADQRRBBBDuHAsgACgCJCIARQ0SIAAoAgAiAxDmBCADQeAAQQgQ7hwgAEEMQQQQ7hwMEgsCQCAALQAcQQJGDQAgACkDCCIEQgODQgBSDQAgASAEpyIDNgIMIAFBDGoQ9QcgAyADKAIAIgJBf2o2AgAgAkEBRw0AIAMgAygCIBDTLwsgACgCICIAQQRqIgMoAgAgAEEIaigCABCnLSAAKAIAIAMoAgAQ3DMgAEEQaiIDKAIAIABBFGooAgAQxzAgACgCDCADKAIAEOIzAkAgACgCMCIDRQ0AIAMQ6QEgA0HAAEEIEO4cCwJAIAAoAjQiA0UNACADEOYRIAMoAgAgA0EEaigCABDeMyADQRRBBBDuHAsCQCAAKAI4IgNFDQAgAxDeKSADKAIAIANBBGooAgAQ3zMgA0EUQQQQ7hwLIABBHGoiAygCACAAQSBqKAIAEMsUIAAoAhggAygCABDbMyAAQcAAQQQQ7hwMEQsgACgCDCIARQ0QIAAQ6QEgAEHAAEEIEO4cDBALIAAoAgQiABDpASAAQcAAQQgQ7hwMDwsgACgCBCIAEOkBIABBwABBCBDuHAwOCyAAQQhqEIISDA0LIABBCGoQkhQMDAsgACgCBCIAQcAAahDFFiAAQYABaiIDKAIAIABBhAFqKAIAEJ0eIAAoAnwgAygCABDiMwJAIAAoAngiA0UNACADEN4pIAMoAgAgA0EEaigCABDfMyADQRRBBBDuHAsgAEGQAWoQ1hYgACgCkAEgAEGUAWooAgAQ4TMCQCAALQA8QQZGDQAgAEEQahDFFgsgAEGgAUEIEO4cDAsLIABBBGoQ1hYgACgCBCAAKAIIEOEzDAoLIAAoAgQiAxDpASADQcAAQQgQ7hwgACgCCCIAEOYEIABB4ABBCBDuHAwJCyAAKAIEIgAQ6QEgAEHAAEEIEO4cDAgLIAAoAgQiABDpASAAQcAAQQgQ7hwMBwsgACgCBCIDEOkBIANBwABBCBDuHCAAKAIIIgAQ5gQgAEHgAEEIEO4cDAYLIAAoAgQiAxDpASADQcAAQQgQ7hwgACgCCCIAEN4pIAAoAgAgAEEEaigCABDfMyAAQRRBBBDuHAwFCyAAKAIEIgMQ6QEgA0HAAEEIEO4cIAAoAggiABDmBCAAQeAAQQgQ7hwMBAsgACkDCCIEQgODQgBSDQMgASAEpyIANgIMIAFBDGoQ9QcgACAAKAIAIgNBf2o2AgAgA0EBRw0DIAAgACgCIBDTLwwDCwJAAkAgACgCBCIAKAIAQQNGDQAgABDQEAwBCyAAQQRqEOcjCyAAQShBCBDuHAwCCyAAKAIcIgNFDQAgAygCACICEOYEIAJB4ABBCBDuHCADQQxBBBDuHAsgACgCOCIAEOkBIABBwABBCBDuHAsgAUEQaiQAC4UWAQh/IwBBgARrIgIkAAJAAkACQCABELAWIgNFDQAgAkEwakEAKQO45JkBNwMAIAJBKGpBACkDsOSZATcDACACQQApA6jkmQE3AyAgAkEgaiADEIcHIQMgAkEgahDhECADDQELAkACQCABELAWIgNFDQAgAkEwakEAKQPIwZkBNwMAIAJBKGpBACkDwMGZATcDACACQQApA7jBmQE3AyAgAkEgaiADEIcHIQMgAkEgahDhECADRQ0AIAJBIGogARDvAiACQSBqIAEoAswCQQFyEOEPAkACQAJAAkAgAkEgahCwFiIDDQAgAigC0AIhAyACQYCAgIB4NgLYAyADIAMgAkHYA2oQ/iIhAwwBCwJAIAMoAgBBJEcNACACIAIpAzg3A3AgAigCICEDIAJBJTYCIAJAIANBJEcNACACKAIkIQMMAgtBlM6hAUEoQdjhmQEQ0ycACyACQdgDakEMaiACQSBqQQxqKQIANwIAIAJB2ANqQRRqIAJBIGpBFGooAgA2AgAgAigCICEDIAJBJTYCICACIAIpAiQ3AtwDIAIgAikDODcDcCACIAM2AtgDIAJB2ANqEOEQQbjBmQEQ4RACQAJAIAJBIGoQsBYiA0UNAEEAIQQgAkHoA2oiBUEAKQPQ4JkBNwMAIAJB4ANqIgZBACkDyOCZATcDACACQQApA8DgmQE3A9gDIAJB2ANqIAMQhwchByACQdgDahDhEEEBIQggBw0BQQAhBCAFQQApA6DgmQE3AwAgBkEAKQOY4JkBNwMAIAJBACkDkOCZATcD2AMgAkHYA2ogAxCHByEHIAJB2ANqEOEQIAcNBAsgAkHYA2ogAkEgahDKCAJAAkACQAJAAkAgAi0A2AMNACACQSBqQQRyIQcCQCACQSBqELAWIgNFDQAgAygCAEECRg0CIAJB6ANqQQApA6DHmQE3AwAgAkHgA2pBACkDmMeZATcDACACQQApA5DHmQE3A9gDIAJB2ANqIAMQhwchAyACQdgDahDhECADDQILAkAgAkEgahCwFiIDDQBBACEIDAQLQQAhCCACQegDaiIFQQApA/DfmQE3AwAgAkHgA2oiBkEAKQPo35kBNwMAIAJBACkD4N+ZATcD2AMgAkHYA2ogAxCHByEEIAJB2ANqEOEQAkAgBA0AIAVBACkD2N+ZATcDACAGQQApA9DfmQE3AwAgAkEAKQPI35kBNwPYAyACQdgDaiADEIcHIQUgAkHYA2oQ4RBBACEEIAVFDQkLQQAhCCACQdgDaiACQSBqQQAQugECQCACKALYA0EHRw0AIAJB2ANqQQRyENQJDAQLIAJB2ANqEI8eDAILIAIoAtwDIQMMBgsgAkHkA2ogB0EIaikCADcCACACQewDaiAHQRBqKAIANgIAIAIoAiAhAyACQSU2AiAgAiACKQM4NwNwIAIgAzYC2AMgAiAHKQIANwLcAyACQdgDahDhEAsCQCACQSBqELAWIgNFDQBBACEEIAJB6ANqIgZBACkD6OCZATcDACACQeADaiIJQQApA+DgmQE3AwAgAkEAKQPY4JkBNwPYAyACQdgDaiADEIcHIQUgAkHYA2oQ4RBBASEIIAUNA0EAIQQgBkEAKQOYjqEBNwMAIAlBACkDkI6hATcDACACQQApA4iOoQE3A9gDIAJB2ANqIAMQhwchBSACQdgDahDhECAFDQNBACEEIAJB6ANqIgZBACkDgOWZATcDACACQeADaiIJQQApA/jkmQE3AwAgAkEAKQPw5JkBNwPYAyACQdgDaiADEIcHIQUgAkHYA2oQ4RAgBQ0DQQAhBCAGQQApA7jgmQE3AwAgCUEAKQOw4JkBNwMAIAJBACkDqOCZATcD2AMgAkHYA2ogAxCHByEFIAJB2ANqEOEQIAUNBgtBACEIIAJBsANqQRBqQQApA9DgmQE3AwAgAkGwA2pBCGpBACkDyOCZATcDACACQQApA8DgmQE3A7ADAkAgAkEgahCwFiACQbADahDFNQ0AIAJBsANqEOEQDAELIAJB5ANqIAdBCGopAgA3AgAgAkHsA2ogB0EQaigCADYCACACKAIgIQMgAkElNgIgIAIgAikDODcDcCACIAM2AtgDIAIgBykCADcC3AMgAkHYA2oQ4RAgAkGwA2oQ4RAgAkEgahCwFiIDDQELQQAhBAwEC0EAIQQgAkHoA2pBACkDiK6ZATcDACACQeADakEAKQOArpkBNwMAIAJBACkD+K2ZATcD2AMgAkHYA2ogAxCHByEIIAJB2ANqEOEQCwwCC0G4wZkBEOEQC0EBIQQLIAJBIGoQuBcgBA0BIAhBAXENAgsgAkEwaiIEQQApA9C9mQE3AwAgAkEoaiIIQQApA8i9mQE3AwAgAkEAKQPAvZkBNwMgIAEQsBYgAkEgahDFNSEDIAJBIGoQ4RACQAJAIANFDQAgARDCHiIDRQ0AIAJBMGpBACkDuK6ZATcDACACQShqQQApA7CumQE3AwAgAkEAKQOorpkBNwMgIAJBIGogAxCHByEDIAJBIGoQ4RAgAw0BCyAEQQApA7iumQE3AwAgCEEAKQOwrpkBNwMAIAJBACkDqK6ZATcDICABELAWIAJBIGoQxTUhAyACQSBqEOEQIAMNACACQegDakEAKQPws5kBNwMAIAJB4ANqQQApA+izmQE3AwAgAkEAKQPgs5kBNwPYAyABEO8xIQUCQCABELAWIAJB2ANqEMU1RQ0AIAEgASkDGDcDUCABKAIAIQMgAUElNgIAIAJBIGpBDGogAUEMaikCADcCACACQSBqQRRqIAFBFGooAgA2AgAgAiABKQIENwIkIAIgAzYCICACQSBqEOEQCyACQRBqIAEQsQhBASEEIAIoAhQhAwJAIAIoAhANAEEAIQQgARCwFiACQdgDahDFNUUNAEEEQQQQzTMiCCADNgIAIAJBATYC0AMgAiAINgLMAyACQQE2AsgDIAFBBGohCCACQSBqQQRyIQcDQAJAIAEQsBYgAkHYA2oQxTUNACABKAJUIQFB4ABBCBDNMyIDQgo3AwAgAyACKQPIAzcDCCADQRBqIAJByANqQQhqKAIANgIAIAMgBSABIAUgAUsbNgIYIAMgBSABIAUgAUkbNgIUDAILIAcgCCkCADcCACABIAEpAxg3A1AgASgCACEDIAFBJTYCACAHQQhqIAhBCGopAgA3AgAgB0EQaiAIQRBqKAIANgIAIAIgAzYCICACQSBqEOEQIAJBCGogARCxCCACKAIMIQMCQCACKAIIDQAgAkHIA2ogAxCbLAwBCwsgAkHIA2oQnjdBASEECyACQdgDahDhEAwDCyACQdgDaiABQQAQpgMCQAJAIAIoAtgDQYGAgIB4Rg0AIAJBPGogAkHwA2opAgA3AgAgAkE0aiACQegDaikCADcCACACQSxqIAJB4ANqKQIANwIAIAIgAikC2AM3AiRBAiEBDAELIAIgAigC3AM2AiRBFCEBCyACIAE2AiAgAiACQSBqEOcnIAIoAgQhAyACKAIAIQQMAgtBASEEDAELIAJB2ANqIAFBARCmAwJAAkAgAigC2ANBgYCAgHhGDQAgAkE8aiACQfADaikCADcCACACQTRqIAJB6ANqKQIANwIAIAJBLGogAkHgA2opAgA3AgAgAiACKQLYAzcCJEECIQEMAQsgAiACKALcAzYCJEEUIQELIAIgATYCICACQRhqIAJBIGoQ5ycgAigCHCEDIAIoAhghBAsgACAENgIAIAAgAzYCBCACQYAEaiQAC+QUAhB/An4jAEHgAmsiBCQAIAEoAswCIQUgBEEYakESQTgQgCMgBEEANgIwIARBADYCPCAEQoCAgIDAADcCNCAEQQA2AiQgBCAEKQMYNwIoIAVBCHIhBiAEQegAakEQaiEHIARBqAJqQRBqIQggBEHYAWpBBGohCSAEQagCakEEciEKIARBJGpBBGohC0EAIQxBACENAkACQAJAA0AgARCxFiEOAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADRQ0AIA5FDQELIAEQsRYgAxDKLkUNASABEPMxIQ8gBEHYAWogAUEBEJMCIAQoAtwBIQ4gBCgC2AEiEEGAgICAeEYNBiAEIAQoAuABNgJwIAQgDjYCbCAEIBA2AmgCQCABELEWIg5FDQAgBEHYAWpBEGoiEUEAKQOQvJkBNwMAIARB2AFqQQhqIhJBACkDiLyZATcDACAEQQApA4C8mQE3A9gBIARB2AFqIA4QhwchECAEQdgBahDiECAQDQUgEUEAKQOovJkBNwMAIBJBACkDoLyZATcDACAEQQApA5i8mQE3A9gBIARB2AFqIA4QhwchDiAEQdgBahDiECAODQULIAEgASgCzAIiDkH///v/AnFBgICAgAFyEOEPIARBoAFqIAEgD0EBIARB6ABqEDMgBCgCoAFBE0YNAiAJIARBoAFqQTAQ3woaIAogBEHYAWpBNBDfChpBCSEQDAMLIARB6ABqIAEQ3xogBEEQaiABEPsgIAQoAhQhDiAEKAIQIQsgBEEBNgKsAiAEQaTXoQE2AqgCIARCATcCtAIgBEGiAjYCpAEgBCADNgKUAiAEIARBoAFqNgKwAiAEIARBlAJqNgKgASAEQdgBaiAEQagCahDmIiAEQewBaiAEQfAAaigCADYCACAEIAQpAmg3AuQBIAEgCyAOIARB2AFqEIgqCyABELEWRQ0QIAMNBgwQCyAEIAQoAqQBNgKsAkEKIRALIAEgDhCgPgwBCyAJIAQpAmg3AgAgCUEIaiAEQegAakEIaigCADYCACAEIAE2AtgBIARBqAJqIAEgCRBLIAQoAqgCIRALIAQoAqwCIQ4gEEEKRg0AIAQoArQCIQ8gBCgCsAIhESAEQcAAaiAIQSgQ3woaIAIgEEEJRnFFDQEgESAPEK8iRQ0BIAEgBhDhDyABKAIAQSVGDQEgARD9Ew0BIAEQsRYhDiAEQaMCNgLcASAEIA42AqABIARBATYCrAIgBEGA15oBNgKoAiAEQgE3ArQCIAQgBEGgAWo2AtgBIAQgBEHYAWo2ArACIARBqAJqQYjXmgEQrS4ACyAAQYCAgIB4NgIAIAAgDjYCBCALEMQ3IAQoAjwhDiAEKAI4IgEhCwNAIA5FDQMgDkF/aiEOIAsQxDcgC0EMaiELDAALCyANDQICQCAEKAIoIg0gDE0NACAEKAIsIAxBOGxqIg0gDzYCDCANIBE2AgggDSAONgIEIA0gEDYCACANQRBqIARBwABqQSgQ3woaQQAhDSAEQQA2AiQgBCAMQQFqIgw2AjAMCAsgBEEANgIkIAQgDzYCdCAEIBE2AnAgBCAONgJsIAQgEDYCaCAHIARBwABqQSgQ3woaIARBoAFqIARB6ABqQTgQ3woaIARBfzYCJCANIAxrIAQoAqABQQpHIg5JDQNBACEOA0AgBEHYAWogBEGgAWpBOBDfChogBEEKNgKgAQJAIAQoAtgBQQpHDQAgDCEODAgLAkAgBCgCMCAEKAIoRg0AIAsgBEHYAWoQ7CogDkEBaiEODAELCyALIA5BAWoQsQ4gBCgCPCIQRQ0EIAQgEEEMbCAEKAI4akF0aiIPKAIIIhEgDmsgERCdMCAEKAIEIQ4gDyAEKAIAIhA2AgggDygCBCENIAsgDkE4bCICIBBBOGwiEmsiEEE4bhCfMCAEKAIsIRMgBCgCMCEMIAQgESAOazYCpAIgBCAONgKgAiAEIA82ApwCIAQgDSACaiICNgKYAiANIBJqIQ4gEyAMQThsaiEPAkADQAJAIBANACAEQQo2AqgCIAQgAjYClAIMAgsgBEGoAmogDkE4EN8KGiAOQThqIRECQCAEKAKoAkEKRg0AIA8gDkE4EPE9QThqIQ8gEEFIaiEQIAxBAWohDCARIQ4MAQsLIAQgETYClAILIARBqAJqENo1IAQgDDYCMCAEKAKYAiEMIAQoApQCIQ4gBEKIgICAgAE3ApQCIAwgDmtBOG4hEAJAIAwgDkYNACAOQRBqIQ4DQCAQRQ0BAkACQCAOQXBqKAIAIgxBCUYNAAJAAkACQAJAAkACQAJAAkACQCAMDggBAgMEBQYHCAALIA4Qxx4MCQsgDkF0ahD0MyAOENs1IA5BDGoQ3DUMCAsgDkF4ahD3DgwHCyAOQXRqEPUzIA5BCGoQyTcgDkEMahDcNQwGCwJAAkACQCAOQXhqKAIADgIBAgALIA5BfGooAgAQyy4MBwsgDhDyOAwGCyAOEPM4DAULIA5BdGoQgwUMBAsgDkF0ahDbNSAOENw1DAMLIA5BdGooAgAiDEEoahDHHgJAAkAgDCkDAEIAUg0AIAxBCGoQ5S0MAQsgDBD0OAsgDEHIAEEIEO4cDAILIA5BdGoQgwUMAQsgDkF4ahCiCQsgEEF/aiEQIA5BOGohDgwACwsgBEGUAmoQyB4gCyAEQdgBahDsKiALIARBoAFqEPEUDAULIAEgASkDGDcDUCABKAIAIQ4gAUElNgIAIARBqAJqQQxqIAFBDGopAgA3AgAgBEGoAmpBFGogAUEUaigCADYCACAEIAEpAgQ3AqwCIAQgDjYCqAIgBEGoAmoQ4hAMCQsgBCgCNCABEP45DAkLQZTUmgEQ6SIACyALIA4QsQ4gCyAEQegAahDxFAwBC0Gs/poBEP05AAtBACEOCyAEIAQoAiRBAWoiDTYCJCAEKAIwIgwgDkYNAgtBACECDAALC0EAQQBBvP6aARChGwALIAEgBRDhDyAEQbgCaiAEQThqKQIAIhQ3AwAgBEGoAmpBCGogBEEkakEMaikCACIVNwMAIAQgBCkCKDcDqAIgFachCyAUpyEMAkAgBCgCvAIiEEUNACAMQQhqIQ4gECEBA0AgDigCACALaiELIA5BDGohDiABQX9qIgENAAsLIARBCGogC0E4EIAjQQAhCyAEQQA2AqgBIAQgBCkDCDcCoAEgDCAQQQxsIhBqIQ8gBCgCtAIhESAMIQ4CQANAAkACQAJAIBAgC0cNACAPIQ4MAQsgDigCACIBQYCAgIB4Rw0BIAwgC2pBDGohDgsgDyAOa0EMbiELA0AgC0UNAyAOEIwtIA4oAgAgDkEEaigCABCtOiALQX9qIQsgDkEMaiEODAALCyAEIA4pAgQ3AtwBIAQgATYC2AEgC0EMaiELIARBoAFqIARB2AFqELAnIARB2AFqEMQ3IA5BDGohDgwACwsgESAMEP45IARBoAFqIARBqAJqELAnIABBCGogBEGgAWpBCGooAgA2AgAgACAEKQKgATcCACAEQagCahDENwsgBEHgAmokAAu8FAEPfyMAQZABayIDJAACQAJAIAEtAJoCQQFxDQAgAEEANgIIIABCgICAgMAANwIADAELIANBADYCICADQoCAgIDAADcCGCABEO0OGiABQdQCQdgCIAEtAOECQQJGG2ooAgAhBEEEIQVBCCEGQQAhBwJAAkACQANAAkACQAJAAkACQAJAAkACQCABEO0OIghFDQAgCC0AAEEYRg0BCyAHRQ0BAkAgARDtDiIIRQ0AIAgtAABB0wBGDQMLIAEQ7Q4aDAQLIAEQ7Q4aIAFB1AJB2AIgAS0A4QJBAkYbaigCACEJAkAgARDtDiIIDQAgASgC/AEhASADQYCAgIB4NgJAIAEgASADQcAAahD+IiEKDAkLAkAgCC0AAEGbAUcNACABQQI6AOECIAEgASkD2AI3A9ACIAEQ3xghCgwJCyABQQI6AOECIAEgASkD2AI3A9ACAkACQAJAAkAgARDtDiIIRQ0AIAgtAABFDQELIANB+ABqIAFBAEEAEKcCIAMtAIwBQQJGDQUgA0HAAGpBEGoiCyADQfgAakEQaikDADcDACADQcAAakEIaiIMIANB+ABqQQhqKQMANwMAIAMgAykDeDcDQEEALQDA/6MBGkHAABCMASIIDQEMDAsgAUECOgDhAiABIAEpA9gCNwPQAiADQRBqIAEQhwUgAygCFCELIAMoAhBFDQEgCyEKDAoLIAhBGjYCACAIIAMpA0A3AwggCEEQaiAMKQMANwMAIAhBGGogCykDADcDACAIQSBqIANBwABqQRhqKQMANwMAIAhBKGogA0HAAGpBIGopAwA3AwAgCEEwaiADQcAAakEoaikDADcDACAIQThqIANBwABqQTBqKQMANwMAIANBBToASCADIAg2AkAgA0EIaiABIANBwABqQQBBARA8IAMoAgwhCyADKAIIRQ0GIAshCgwJCwJAIAEQ7Q4iCEUNACAILQAAQQFGDQULIAFB1AJqIAFB3AJqIAEtAOECQQJGIgkbKAIAIQggAUHQAmogAUHYAmogCRsoAgAhCSADQSRqIAEQygsgA0EBNgJEIANBpNehATYCQCADQgE3AkwgA0HoBDYCNCADQQE6AD8gAyADQTBqNgJIIAMgA0E4ajYCMCADIANBP2o2AjggA0H4AGogA0HAAGoQkQogA0GMAWogA0EkakEIaigCADYCACADIAMpAiQ3AoQBIAkgCCAJIAhJGyAJIAggCSAISxsgA0H4AGoQ/iIhCgJAIAEQ7Q4iCEUNACAILQAAQZsBRw0AIAFBAjoA4QIgASABKQPYAjcD0AIgASABEN8YEPUYCyALENgBIAtBwABBCBDuHCADKAIgIQcMCAsgACADKQIYNwIAIABBCGogA0EYakEIaigCADYCAAwJCyABKAKQAiIIQYCACHENAQJAIAhBgIAgcSIIDQAgAg0AIAFB1AJqIAFB3AJqIAEtAOECQQJGIgkbKAIAIQggAUHQAmogAUHYAmogCRsoAgAhCSADQY6AgIB4NgJAIAkgCCAJIAhJGyAJIAggCSAISxsgA0HAAGoQ/iIhCiABEO0OIghFDQcgCC0AAEGbAUcNByABQQI6AOECIAEgASkD2AI3A9ACIAEgARDfGBD1GAwHCyAIDQEgAS0AmAJBAkYNASABLQCbAkEBcQ0BIAEoAtQCIQggA0HagICAeDYCQCAEIAggBCAISRsgBCAIIAQgCEsbIANBwABqEP4iIQogARDtDiIIRQ0GIAgtAABBmwFHDQYgAUECOgDhAiABIAEpA9gCNwPQAiABIAEQ3xgQ9RgMBgsgAygCeCEKDAULIAAgAykCGDcCACAAQQhqIANBGGpBCGooAgA2AgAMBgsgAUECOgDhAiABIAEpA9gCNwPQAgsCQAJAAkACQCABLQCYAkECRw0AIAEQ7Q4iCEUNACAILQAAQRJHDQAgAyABEM8CIAMoAgQhDQJAIAMoAgBFDQAgDSEKDAYLQQAhDgwBCwJAIAEQ7Q4iCA0AIAshCAwCCwJAIAgtAABFDQAgCyEIDAILQQAhDUEBIQ4LIANBwABqIAFBABCkAiADKAJEIQogAygCQCIPQYCAgIB4Rg0BIAMoAkghEAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAsoAgBBdGoiCEEHIAhBJkkbDiYAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJQALIAtBBGohCAwsCyALQRBqIQgMKwsgC0EQaiEIDCoLIAsoAiBBMGohCAwpCyALQQhqIQgMKAsgC0EEaiEIDCcLIAtBDGohCAwmCyALQTBqIQgMJQsgC0EgaiEIDCQLIAtBIGohCAwjCyALQRBqIQgMIgsgC0EcaiEIDCELIAtBFGohCAwgCyALQRBqIQgMHwsgC0EQaiEIDB4LIAsoAggOBxYXGBkaGxwWCyALQRxqIQgMHAsgC0EMaiEIDBsLIAtBFGohCAwaCyALKAIgQSRqIQgMGQsgC0EEaiEIDBgLIAtBBGohCAwXCyALQQhqIQgMFgsgC0EIaiEIDBULIAtBGGohCAwUCyALQShqIQgMEwsgC0EEaiEIDBILIAsoAgQhCAwRCyALQRBqIQgMEAsgC0EMaiEIDA8LIAtBCGohCAwOCyALQQhqIQgMDQsgC0EMaiEIDAwLIAtBDGohCAwLCyALQQxqIQgMCgsgC0EQaiEIDAkLIAtBCGohCAwICyALQQRqIQgMBwsgC0EYaiEIDAYLIAtBDGohCAwFCyALQQxqIQgMBAsgC0EQaiEIDAMLIAtBEGohCAwCCyALQSBqIQgMAQsgC0EgaiEIC0EALQDA/6MBGiABKALUAiEMIAgoAgAhESADQgA3AlggA0EDOgBUIANBADYCUCADQgA3AmAgA0IANwJIIANCgICAgMAANwJAQcAAEIwBIghFDQUgCEIANwIkIAhBBToAGCAIIAs2AhAgCCAQNgIMIAggCjYCCCAIIA82AgQgCEEXNgIAIAggESAMIBEgDEsbNgIgIAggESAMIBEgDEkbNgIcAkAgDg0AIA0Q0ikgDSgCACANQQRqKAIAEN8zIA1BFEEEEO4cCyADQcAAahDxJ0EAQQQQ2zMLIAkgASgC1AIiCyAJIAtJGyEMIAkgCyAJIAtLGyELAkAgByADKAIYRw0AIANBGGoQkg4gAygCHCEFCyAFIAZqIgkgCzYCACAJQXxqIAw2AgAgCUF4aiAINgIAIAMgB0EBaiIHNgIgIAZBDGohBgwBCwsgDg0AIA0Q0ikgDSgCACANQQRqKAIAEN8zIA1BFEEEEO4cCyALENgBIAtBwABBCBDuHAsgAEGAgICAeDYCACAAIAo2AgQgAygCHCIBIAcQmi0gAygCGCABENwzDAELAAsgA0GQAWokAAucFAIbfwF+IwBB0ABrIgIkACACQQA2AiRBASEDIAJBATYCGCACQYSbgAE2AhQgAkIENwIcAkAgASgCFCIEIAEoAhgiBSACQRRqEIo1DQAgAEE0aiEGIAAtAL8CQQFqIQcgACgCPEEfcSEIIAAoAhQhCSAAKAIQIQogACgCCCELIAAoAgQhDCABKAIYIQ0gASgCFCEOIAAoAtQCIQ8gACgC0AIhECAAKAI0IREgACgCzAIhEkEAIRMDQAJAIBMgEUkNACACQQI2AhggAkGIoYABNgIUIAJCATcCICACQSY2AjggAiAAQdgCajYCNCACIAJBNGo2AhxBASEDIA4gDSACQRRqEIo1DQIgAkECNgIYIAJBpKGAATYCFCACQgE3AiAgAkEQNgI4IAIgACgCKCIBQQBHOgAIIAIgAkE0ajYCHCACIAJBCGo2AjQgDiANIAJBFGoQijUNAiACQQI2AhggAkGojoMBNgIUIAJCATcCICACQRE2AjggAiAGNgI0IAIgAkE0ajYCHCAOIA0gAkEUahCKNQ0CIAJBAjYCGCACQciOgwE2AhQgAkIBNwIgIAJBETYCOCACIAAoAiAiFDYCCCACIAJBNGo2AhwgAiACQQhqNgI0IA4gDSACQRRqEIo1DQIgAkECNgIYIAJB0KGAATYCFCACQgE3AiAgAkERNgI4IAIgAEHAAmo2AjQgAiACQTRqNgIcIA4gDSACQRRqEIo1DQIgAkECNgIYIAJB+KGAATYCFCACQgE3AiAgAkERNgI4IAIgAEHEAmo2AjQgAiACQTRqNgIcIA4gDSACQRRqEIo1DQIgAkECNgIYIAJBnKKAATYCFCACQgE3AiAgAkERNgI4IAIgAEE4ajYCNCACIAJBNGo2AhwgDiANIAJBFGoQijUNAiACQQI2AhggAkGUm4ABNgIUIAJCATcCICACQSc2AjhBASEDIAJBASAIdDYCCCACIAJBNGo2AhwgAiACQQhqNgI0IA4gDSACQRRqEIo1DQIgAkECNgIYIAJBvKKAATYCFCACQgE3AiAgAkEoNgI4IAIgAEHAAGo2AjQgAiACQTRqNgIcIA4gDSACQRRqEIo1DQIgAkHcooABNgIUIAJCATcCICACQRE2AjggACgCMCEVIAJBAjYCGCACIAAoAiQgCUEMbGogCyAUakECdGogFUEAIAEbajYCCCACIAJBNGo2AhwgAiACQQhqNgI0IA4gDSACQRRqEIo1DQIgAkEANgIkIAJBATYCGCACQdiOgwE2AhQgAkIENwIcIA4gDSACQRRqEIo1IQMMAgsgEyAIdCEWAkAgE0EBRg0AAkACQCAWRQ0AIBAgFkYgDyAWRnIhAQJAIBIgFk8NAAJAIAENACACQQA2AiRBASEDIAJBATYCGCACQYCpgAE2AhQgAkIENwIcIA4gDSACQRRqEIo1DQYMAwsgAkEANgIkQQEhAyACQQE2AhggAkGMqYABNgIUIAJCBDcCHCAOIA0gAkEUahCKNQ0FDAILAkAgAQ0AIAJBADYCJEEBIQMgAkEBNgIYIAJBlKmAATYCFCACQgQ3AhwgBCAFIAJBFGoQijUNBQwCCyACQQA2AiRBASEDIAJBATYCGCACQaCpgAE2AhQgAkIENwIcIAQgBSACQRRqEIo1DQQMAQsgAkEANgIkQQEhAyACQQE2AhggAkGoqYABNgIUIAJCBDcCHCAOIA0gAkEUahCKNQ0DCyACQQc2AgwgAiAWNgIQIAJBATYCSCACQQI2AjggAkGE+JgBNgI0IAJBATYCQCACIAJBEGo2AgggAkEDOgAwIAJBCDYCLCACQiA3AiQgAkKAgICA4AA3AhwgAkECNgIUIAIgAkEUajYCRCACIAJBCGo2AjwCQCAOIA0gAkE0ahCKNQ0AIBNBAWohE0EAIRdBACEVQQAhGEEAIRlBACEBA0AgASAHIAEgB0sbIRogAUEIdCEUA0ACQAJAAkACQAJAAkAgGiABRg0AIAFBAWohAyAMIAsgFiABakG4m4ABEOowKAIAIRsCQCAZQQFxDQAgG61CIIYgAUH/AXGtIh1CCIaEIB2EIR0MBgsCQCAVIBtGDQBBASEZIAEhFCADIRoMAgsgFa1CIIYgFEGA/gNxrYQgHK1C/wGDhCEdDAULIBlBAXEhA0EAIRkgHCEBIBchFCAVIRsgA0UNAQsgGA0BDAILIAJBADYCJEEBIQMgAkEBNgIYIAJBiL2AATYCFCACQgQ3AhwgDiANIAJBFGoQijUNCCAWQX9qIBJPDQcgAkEANgIkQQEhAyACQQE2AhggAkGwm4ABNgIUIAJCBDcCHCAOIA0gAkEUahCKNQ0IIAogCSAWIAh2QX5qIhlB0PSDARDvMCgCCCEbQQAhFEEAIQEDQAJAIBsgAUcNACACQQA2AiRBASEDIAJBATYCGCACQYi9gAE2AhQgAkIENwIcIA4gDSACQRRqEIo1RQ0JDAoLAkAgAUUNACACQQA2AiRBASEDIAJBATYCGCACQZyrgAE2AhQgAkIENwIcIA4gDSACQRRqEIo1DQoLAkAgCiAJIBlBsPSDARDvMCIVKAIIIgMgAU0NACAVKAIEIBRqKAIAIRVBASEDIAJBATYCGCACQaTXoQE2AhQgAkIBNwIgIAJBBzYCOCACIBU2AgggAUEBaiEBIBRBBGohFCACIAJBNGo2AhwgAiACQQhqNgI0IA4gDSACQRRqEIo1DQoMAQsLIAEgA0HA9IMBEKEbAAsgAkEANgIkQQEhAyACQQE2AhggAkGcq4ABNgIUIAJCBDcCHCAOIA0gAkEUahCKNQ0HCyAYQQFqIRgCQCAcQf8BcSAXQf8BcUYNACACIBw6AE8gAiAXOgAQIAJBAzYCOCACQZC5gwE2AjQgAkIDNwJAIAJBETYCKCACQRI2AiAgAkESNgIYIAIgFTYCCCACIAJBFGo2AjwgAiACQQhqNgIkIAIgAkEQajYCHCACIAJBzwBqNgIUIAEhHCAUIRcgGyEVIBohASAOIA0gAkE0ahCKNQ0EDAMLIAIgHDoAECACQQI2AhggAkHkt4MBNgIUIAJCAjcCICACQRE2AkAgAkESNgI4IAIgFTYCCCACIAJBNGo2AhwgAiACQQhqNgI8IAIgAkEQajYCNCABIRwgFCEXIBshFSAaIQEgDiANIAJBFGoQijUNAwwCCyAUQYACaiEUIB1CIIinIRUgHUIIiKchFyAdpyEcQQEhGSADIQEMAAsLC0EBIQMMAgsgAkEHNgIMIAIgFjYCEEEBIQMgAkEBNgJIQQIhEyACQQI2AjggAkHMoIABNgI0IAJBATYCQCACIAJBEGo2AgggAkEDOgAwIAJBCDYCLCACQiA3AiQgAkKAgICA4AA3AhwgAkECNgIUIAIgAkEUajYCRCACIAJBCGo2AjwgBCAFIAJBNGoQijVFDQALCyACQdAAaiQAIAMLixYCBX8BfiMAQeAAayIEJAAgARD9MSEFAkACQAJAIAEQshYiBg0AIAEoArACIQEgBEGAgICAeDYCSCABIAEgBEHIAGoQ/iIhBQwBCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBigCACIGQQJGDQACQCAGQSRHDQAgASABKQMYNwNQIAEoAgAhBSABQSU2AgACQCAFQSRHDQAgASgCBCEFDBALQZTOoQFBKEHY4ZkBENMnAAsgBEEIaiABEPsgIAQoAgwhBSAEKAIIIQYgBEHCgICAeDYCSCAGIAUgBEHIAGoQ/iIhBSABELIWIgZFDQ4gBigCAEEkRw0OIAEgASkDGDcDUCABKAIAIQYgAUElNgIAIAZBJEcNASABIAEoAgQQ4xMMDgsgASABKQMYNwNQIAEoAgAhBiABQSU2AgAgBEEQakEMaiABQQxqKQIANwIAIARBEGpBFGogAUEUaigCADYCACAEIAEpAgQ3AhQgBCAGNgIQIARB2ABqIgdBACkDsMWZATcDACAEQdAAaiIIQQApA6jFmQE3AwAgBEEAKQOgxZkBNwNIIARByABqIARBEGoQiAchBiAEQcgAahCLDwJAAkAgBg0AIAdBACkDwN+ZATcDACAIQQApA7jfmQE3AwAgBEEAKQOw35kBNwNIIARByABqIARBEGoQiAchBiAEQcgAahCLDwJAIAYNACAEQdgAaiIHQQApA8jFmQE3AwAgBEHQAGoiCEEAKQPAxZkBNwMAIARBACkDuMWZATcDSCAEQcgAaiAEQRBqEIgHIQYgBEHIAGoQiw8gBg0AIAdBACkD4MWZATcDACAIQQApA9jFmQE3AwAgBEEAKQPQxZkBNwNIIARByABqIARBEGoQiAchBiAEQcgAahCLDyAGDQAgBEHYAGoiB0EAKQP4xZkBNwMAIARB0ABqIghBACkD8MWZATcDACAEQQApA+jFmQE3A0ggBEHIAGogBEEQahCIByEGIARByABqEIsPIAYNACAHQQApA5DGmQE3AwAgCEEAKQOIxpkBNwMAIARBACkDgMaZATcDSCAEQcgAaiAEQRBqEIgHIQYgBEHIAGoQiw8gBg0AIARB2ABqIgdBACkDqMaZATcDACAEQdAAaiIIQQApA6DGmQE3AwAgBEEAKQOYxpkBNwNIIARByABqIARBEGoQiAchBiAEQcgAahCLDyAGDQAgB0EAKQPAxpkBNwMAIAhBACkDuMaZATcDACAEQQApA7DGmQE3A0ggBEHIAGogBEEQahCIByEGIARByABqEIsPIAYNACAEQdgAaiIHQQApA9jGmQE3AwAgBEHQAGoiCEEAKQPQxpkBNwMAIARBACkDyMaZATcDSCAEQcgAaiAEQRBqEIgHIQYgBEHIAGoQiw8gBg0AIAdBACkD8MaZATcDACAIQQApA+jGmQE3AwAgBEEAKQPgxpkBNwNIIARByABqIARBEGoQiAchBiAEQcgAahCLDyAGRQ0CCyABKAJUIQYgASgCUCEHIARByABqIARBEGoQngYgBCgCSEECRw0EIAQgBEHQAGoQ8xg3AzAgBEGngICAeDYCKCABIAcgBiAEQShqEJoWDAELIAEoAlQhBiABKAJQIQcgBEHIAGogBEEQahCeBiAEKAJIQQJHDQIgBCAEQdAAahDzGDcDMCAEQaeAgIB4NgIoIAEgByAGIARBKGoQiCoLIARB2ABqIgdBACkDiMeZATcDACAEQdAAaiIIQQApA4DHmQE3AwAgBEEAKQP4xpkBNwNIIARByABqIARBEGoQiAchBiAEQcgAahCLDwJAAkAgBg0AIAdBACkDoMeZATcDACAIQQApA5jHmQE3AwAgBEEAKQOQx5kBNwNIIARByABqIARBEGoQiAchBiAEQcgAahCLDwJAIAZFDQAgAS0A1AJB/wFxQQJGDQILIARB2ABqQQApA8jFmQE3AwAgBEHQAGpBACkDwMWZATcDACAEQQApA7jFmQE3A0ggBEHIAGogBEEQahCIByEGIARByABqEIsPIAYNBQJAAkAgBCgCEEECRw0AIAQtABgiBkUNCCAGQQIgBkECSRtBAXENAQsgBEHYAGoiA0EAKQPA35kBNwMAIARB0ABqIgdBACkDuN+ZATcDACAEQQApA7DfmQE3A0ggBEHIAGogBEEQahCIByEGIARByABqEIsPAkAgBkUNACACDQkLIANBACkD6MSZATcDACAHQQApA+DEmQE3AwAgBEEAKQPYxJkBNwNIIARByABqIARBEGoQiAchBSAEQcgAahCLDwJAIAUNACAEQdgAaiIGQQApA4DFmQE3AwAgBEHQAGoiA0EAKQP4xJkBNwMAIARBACkD8MSZATcDSCAEQcgAaiAEQRBqEIgHIQUgBEHIAGoQiw8gBQ0AIAZBACkDmMWZATcDACADQQApA5DFmQE3AwAgBEEAKQOIxZkBNwNIIARByABqIARBEGoQiAchBSAEQcgAahCLDyAFDQAgBCgCEEECRw0KIAQtABhB/wFxQQJHDQogASgCVCEFIAEoAlAhBiAEQcKAgIB4NgJIIAYgBSAEQcgAahD+IiEFIAEQshYiBkUNECAGKAIAQSRHDRAgASABKQMYNwNQIAEoAgAhBiABQSU2AgAgBkEkRg0PQZTOoQFBKEHY4ZkBENMnAAsgASgCVCEFIAEoAlAhBiAEQcKAgIB4NgJIIAYgBSAEQcgAahD+IiEFIAEQshYiBkUNDyAGKAIAQSRHDQ8gASABKQMYNwNQIAEoAgAhBiABQSU2AgAgBkEkRg0OQZTOoQFBKEHY4ZkBENMnAAsgBCAEKQMgNwNAIAEtAM4CQQRxRQ0LIAQQhTkiCTcDSCAEQcAAaiAEQcgAahC3EiEGIAkQ0h8gBkUNCyABKAJUIQYgASgCUCEDIARBqoCAgHg2AkggASADIAYgBEHIAGoQiCoMCwsCQCABKALMAiIGQYCAAXFFDQAQhjkhCQwKCwJAIAZBgARxRQ0AIAEoAlQhBSABKAJQIQYgBEHCgICAeDYCSCAGIAUgBEHIAGoQ/iIhBSABELIWIgZFDQ4gBigCAEEkRw0OIAEgASkDGDcDUCABKAIAIQYgAUElNgIAIAZBJEYNDUGUzqEBQShB2OGZARDTJwALAkAgBkGCAXFFDQAgASgCVCEFIAEoAlAhBiAEQaiAgIB4NgJIIAYgBSAEQcgAahD+IiEFIAEQshYiBkUNDiAGKAIAQSRHDQ4gASABKQMYNwNQIAEoAgAhBiABQSU2AgAgBkEkRg0NQZTOoQFBKEHY4ZkBENMnAAsgAw0IIAEoAlQhBSABKAJQIQYgBEHCgICAeDYCSCAGIAUgBEHIAGoQ/iIhBSABELIWIgZFDQ0gBigCAEEkRw0NIAEgASkDGDcDUCABKAIAIQYgAUElNgIAIAZBJEYNDEGUzqEBQShB2OGZARDTJwALEIc5IQkMCAtBlM6hAUEoQdjhmQEQ0ycAC0GUzqEBQShBqNSZARDTJwALQZTOoQFBKEGo1JkBENMnAAsQiDkhCQwECyAELQAZEOgMIQkMAwsQiTkhCQwCC0GUzqEBQShBiN+aARDTJwALEIo5IQkLIARBEGoQiw8MAQsgBCkDQCEJC0EAIQYgAEEANgIQIAAgCTcDACAAIAUgASgCVCIBIAUgAUsbNgIMIAAgBSABIAUgAUkbNgIIDAMLIAEgASgCBBDjEwsgBEEQahCLDwsgACAFNgIAQQIhBgsgACAGOgAUIARB4ABqJAALxBMCCX8BfiMAQRBrIgEkAAJAAkACQAJAAkACQAJAAkACQCAAKAIADggBAgMEBQYHAAELIAAoAgQiAkEIaiEAAkACQCACKAIADQAgACkDACIKQgODQgBSDQEgASAKpyIANgIMIAFBDGoQ9QcgACAAKAIAIgNBf2o2AgAgA0EBRw0BIAAgACgCIBDTLwwBCyAAELgTCwJAIAItAEUiAEEDRg0AAkAgAEECRw0AIAJBJGooAgAhAAJAIAIoAigiA0UNAANAIAAQzwggAEE4aiEAIANBf2oiAw0ACyACQSRqKAIAIQALIAIoAiAgABDjMwwBCwJAIAIpAygiCkIDg0IAUg0AIAEgCqciADYCDCABQQxqEPUHIAAgACgCACIDQX9qNgIAIANBAUcNACAAIAAoAiAQ0y8LIAJBwABqEMARCyACQdgAQQgQ7hwMBwsCQCAAKQMIIgpCA4NCAFINACABIAqnIgM2AgwgAUEMahD1ByADIAMoAgAiAkF/ajYCACACQQFHDQAgAyADKAIgENMvCyAAKAIgIgRBBGooAgAhAAJAIAQoAggiA0UNAANAIAAoAgAiAhCoASACQcAAQQgQ7hwgAEEMaiEAIANBf2oiAw0ACyAEQQRqKAIAIQALIAQoAgAgABDcMyAEQRBqKAIAIQACQCAEKAIUIgNFDQADQCAAEN0CIABB2ABqIQAgA0F/aiIDDQALIARBEGooAgAhAAsgBCgCDCAAEOIzAkAgBCgCMCIARQ0AIAAQqAEgAEHAAEEIEO4cCwJAIAQoAjQiAEUNACAAEOMRIAAoAgAgAEEEaigCABDeMyAAQRRBBBDuHAsCQCAEKAI4IgVFDQAgBUEEaigCACEAAkAgBSgCCCIDRQ0AA0AgACgCACICEI0DIAJB4ABBCBDuHCAAQQRqIQAgA0F/aiIDDQALIAVBBGooAgAhAAsgBSgCACAAEN8zIAVBFEEEEO4cCyAEQRxqKAIAIQYCQCAEKAIgIgdFDQBBACEIA0AgBiAIQQR0aiIAKAIAIgMQqAEgA0HAAEEIEO4cAkAgACgCDCIFRQ0AIAVBBGoiCSgCACEAAkAgBSgCCCIDRQ0AA0AgACgCACICEI0DIAJB4ABBCBDuHCAAQQRqIQAgA0F/aiIDDQALIAkoAgAhAAsgBSgCACAAEN8zIAVBFEEEEO4cCyAIQQFqIgggB0cNAAsgBEEcaigCACEGCyAEKAIYIAYQ2zMgBEHAAEEEEO4cDAYLAkAgACkDCCIKQgODQgBSDQAgASAKpyIDNgIMIAFBDGoQ9QcgAyADKAIAIgJBf2o2AgAgAkEBRw0AIAMgAygCIBDTLwsgACgCICIFQQRqKAIAIQACQCAFKAIIIgNFDQADQCAAEKoKIABBwABqIQAgA0F/aiIDDQALIAVBBGooAgAhAAsgBSgCACAAEN0zIAVBEGooAgAhAAJAIAUoAhQiA0UNAANAIAAoAgAiAhCoASACQcAAQQgQ7hwgAEEMaiEAIANBf2oiAw0ACyAFQRBqKAIAIQALIAUoAgwgABDcMwJAIAUoAhgiAkGAgICAeEYNACAFQRxqKAIAIQACQCAFKAIgIgNFDQADQCAAEMQDIABBMGohACADQX9qIgMNAAsgBUEcaigCACEAIAUoAhghAgsgAiAAEN4zCwJAIAUoAjwiBkUNACAGQQRqKAIAIQACQCAGKAIIIgJFDQAgAEEkaiEAA0ACQCAAQWRqKQMAIgpCA4NCAFINACABIAqnIgM2AgwgAUEMahD1ByADIAMoAgAiCEF/ajYCACAIQQFHDQAgAyADKAIgENMvCwJAIABBfGooAgAiA0UNACADEI0DIANB4ABBCBDuHAsCQCAAKAIAIgNFDQAgAxCNAyADQeAAQQgQ7hwLIABBMGohACACQX9qIgINAAsgBkEEaigCACEACyAGKAIAIAAQ3jMgBSgCPEEUQQQQ7hwLAkAgBSgCQCIARQ0AIAAoAgAiAxCNAyADQeAAQQgQ7hwgAEEMQQQQ7hwLIAVByABBBBDuHAwFCyAAKAIEIgVBBGooAgAhAAJAIAUoAggiAkUNAANAIAAQiAkCQCAAQTBqKAIAIgNFDQAgAxCoASADQcAAQQgQ7hwLIABBOGohACACQX9qIgINAAsgBUEEaigCACEACyAFKAIAIAAQ4zMgBUEcQQQQ7hwMBAsgACgCBCIFQQRqKAIAIQACQCAFKAIIIgJFDQADQCAAEIgJAkAgAEEwaigCACIDRQ0AIAMQqAEgA0HAAEEIEO4cCyAAQThqIQAgAkF/aiICDQALIAVBBGooAgAhAAsgBSgCACAAEOMzIAVBGEEEEO4cDAMLAkAgACgCBCIEKQMIIgpCA4NCAFINACABIAqnIgA2AgwgAUEMahD1ByAAIAAoAgAiA0F/ajYCACADQQFHDQAgACAAKAIgENMvCwJAIAQoAiAiAkUNACACQQRqKAIAIQACQCACKAIIIgNFDQADQCAAEMoWIABBMGohACADQX9qIgMNAAsgAkEEaigCACEACyACKAIAIAAQ3jMgAkEUQQQQ7hwLIARBPGooAgAhBgJAIAQoAkAiB0UNAEEAIQgDQCAGIAhBBHRqIgAoAgAiAxCoASADQcAAQQgQ7hwCQCAAKAIMIgVFDQAgBUEEaiIJKAIAIQACQCAFKAIIIgNFDQADQCAAKAIAIgIQjQMgAkHgAEEIEO4cIABBBGohACADQX9qIgMNAAsgCSgCACEACyAFKAIAIAAQ3zMgBUEUQQQQ7hwLIAhBAWoiCCAHRw0ACyAEQTxqKAIAIQYLIAQoAjggBhDbMyAEQShqKAIAIQACQCAEKAIsIgNFDQADQCAAENwDIABBOGohACADQX9qIgMNAAsgBEEoaigCACEACyAEKAIkIAAQ4zMgBEHIAEEIEO4cDAILAkAgACgCBCICKQMIIgpCA4NCAFINACABIAqnIgA2AgwgAUEMahD1ByAAIAAoAgAiA0F/ajYCACADQQFHDQAgACAAKAIgENMvCwJAIAIoAiAiBUUNACAFQQRqKAIAIQACQCAFKAIIIgNFDQADQCAAEMoWIABBMGohACADQX9qIgMNAAsgBUEEaigCACEACyAFKAIAIAAQ3jMgBUEUQQQQ7hwLIAIoAiQiABCNAyAAQeAAQQgQ7hwgAkEwQQgQ7hwMAQsCQCAAKAIEIgApAwAiCkIDg0IAUg0AIAEgCqciAzYCDCABQQxqEPUHIAMgAygCACICQX9qNgIAIAJBAUcNACADIAMoAiAQ0y8LIABBIGoQzRIgACgCICAAQSRqKAIAEN4zIABBMEEIEO4cCyABQRBqJAALzhQBBH8jAEGgAWsiBSQAAkACQAJAAkAgAkEDSw0AIAFBf2ohBiACIQcDQCAHRQ0DIAYgB2ohCCAHQX9qIQcgCCwAAEF/Sg0ADAILCyABKAAAQYCBgoR4cQ0AQQQgAUEDakF8cSIHIAFrIAcgAUYbIQcgAkF8aiEIAkADQCAHIAhPDQEgASAHaigCAEGAgYKEeHENAiAHQQRqIQcMAAsLIAEgCGooAABBgIGChHhxRQ0BCwJAAkAgAkEIaiIHQQ1JDQAgBUE0aiAHENQXIAVBADYCDCAFIAUoAjQ2AhAgBSAFKAI4NgIIDAELIAVBCGpBCGpBACgCgJ+ZATYCACAFQQApAviemQE3AwgLIAVBgYDEADYCFCAFIAE2AhggBSABIAJqNgIcIARB/wFxQQJJIQJBACEGQQEhCANAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBUEUahDZLyIHDg4ICwsLCwsLCwoFAgQBAwALIAdBIkYNBiAHQSdGDQUgB0HcAEYNCCAHQYCAxABHDQogBkEBcQ0LIAAgBSkDCDcCACAAQQhqIAVBCGpBCGooAgA2AgAMFwsgBUEIakHo0aEBQQIQhQgMEwsgBUEIakHq0aEBQQIQhQgMEgsgBUEIakHs0aEBQQIQhQgMEQsgBUEIakGRppkBQQIQhQgMEAsgBUEIakEJEKkrDA8LIAVBCGpBJxCpKwwOCyAFQQhqQSIQqSsMDQsCQCADDQBBACEIIAVBADYCRCAFQQE2AjggBUHgoZkBNgI0IAVCBDcCPCAFQQhqIAVBNGoQhxkaDA4LQQAhCCAFQQA2AkRBASEGIAVBATYCOCAFQYihmQE2AjQgBUIENwI8IAVBCGogBUE0ahCHGRoMDQsCQAJAIAVBFGoQiS4iB0UNACAHKAIAQfUARg0BCyAFQQhqQeTRoQFBAhCFCAwMCyAFIAUoAhw2AnwgBSAFKQIUNwJ0IAVB9ABqENkvGgJAAkAgBUH0AGoQiS4iB0UNACAHKAIAIgghAQJAIAhB+wBHDQAgBUH0AGoQ2S8aIAVB9ABqEIkuIgdFDQEgBygCACEBCyABQSByQeQARg0BCyAFQQhqQeTRoQFBAhCFCAwMCyAFQQA2AjwgBUKAgICAEDcCNCAFQTRqQdwAELAMIAVBNGpB9QAQsAwgCEH7AEYiAQ0DDAoLIAVBCGpB5tGhAUECEIUIDAoLAkAgB0F/akEPSQ0AAkACQAJAAkACQAJAIAdB8P//AHFBEEYNACAHQWBqQd8ASQ0JIAdBgX9qQYEBSQ0EIAdB2L9/ag4CAQIDCyAIQQFxRQ0EDAsLIAVBCGpBsKaZAUEGEIUIDA4LIAVBCGpBtqaZAUEGEIUIDA0LIAdB//0DRw0IIAVBCGpBvKaZAUEGEIUIDAwLAkAgAw0AIAVBATYCOCAFQeyhmQE2AjQgBUIBNwJAIAVB4wE2AnggBSAHOgAgIAUgBUH0AGo2AjwgBSAFQSBqNgJ0IAVBCGogBUE0ahCHGRoMDAtBASEGIAVBATYCOCAFQeigmQE2AjQgBUIBNwJAIAVB4wE2AnggBSAHOgAgIAUgBUH0AGo2AjwgBSAFQSBqNgJ0IAVBCGogBUE0ahCHGRoMCwsCQCADDQAgBUEBNgI4IAVB7KGZATYCNCAFQgE3AkAgBUHjATYCeCAFIAc6ACAgBSAFQfQAajYCPCAFIAVBIGo2AnQgBUEIaiAFQTRqEIcZGgwLC0EBIQYgBUEBNgI4IAVB6KCZATYCNCAFQgE3AkAgBUHjATYCeCAFIAc6ACAgBSAFQfQAajYCPCAFIAVBIGo2AnQgBUEIaiAFQTRqEIcZGgwKCyAIQQFxRQ0EDAYLIAVBAjYCeCAFQZCimQE2AnQgBUIBNwKAASAFQZ8CNgKQASAFIAVBjAFqNgJ8IAUgBUEIajYCjAEgBSAFQfQAajYClAEgBUEANgAnIAVCADcDICAFQcABOgArIAVBATYCOCAFQaTXoQE2AjQgBUIBNwJAIAVBoAI2ApwBIAUgBUGYAWo2AjwgBSAFQZQBajYCmAEgBUEgaiAFQTRqEIcZDQIgACAFKQMgNwIAIABBCGogBUEgakEIaigCADYCACAFQQhqEIIzDAsLIAVBNGpB+wAQsAwMBgsgBUEIaiAHEKkrDAYLQbSfmQFBJSAFQTRqQYSfmQFBwKCZARCxGAALAkAgAw0AIAVBATYCOCAFQeyhmQE2AjQgBUIBNwJAIAVB4wE2AnggBSAHOgAgIAUgBUH0AGo2AjwgBSAFQSBqNgJ0IAVBCGogBUE0ahCHGRoMBQtBASEGIAVBATYCOCAFQeigmQE2AjQgBUIBNwJAIAVB4wE2AnggBSAHOgAgIAUgBUH0AGo2AjwgBSAFQSBqNgJ0IAVBCGogBUE0ahCHGRoMBAsgB0GAAUkNACAHQf//A0sNASAFQaECNgIkIAUgBzsBmAEgBUEBNgKIASAFQQE2AnggBUHEppkBNgJ0IAVBATYCgAEgBSAFQZgBajYCICAFQQM6AFAgBUEINgJMIAVCIDcCRCAFQoCAgIDAADcCPCAFQQI2AjQgBSAFQTRqNgKEASAFIAVBIGo2AnwgBUEIaiAFQfQAahCHGRoMAwsgBUEIaiAHEKkrDAILAkAgAg0AIAVB2gA2AiQgBSAHNgKYASAFQQE2AogBIAVBAjYCeCAFQdymmQE2AnQgBUEBNgKAASAFIAVBmAFqNgIgIAVBAzoAUCAFQQg2AkwgBUIgNwJEIAVCgICAgMAANwI8IAVBAjYCNCAFIAVBNGo2AoQBIAUgBUEgajYCfCAFQQhqIAVB9ABqEIcZGgwCCyAFIAdBgIB8akEKdkGAsANqNgKMASAFIAdB/wdxQYC4A3I2ApgBIAVB2gA2AiwgBUHaADYCJCAFQQI2AogBIAVBAzYCeCAFQfihmQE2AnQgBSAFQZgBajYCKCAFIAVBjAFqNgIgIAVBAzoAcCAFQQg2AmwgBUKggICAEDcCZCAFQoCAgIDAADcCXCAFQQI2AlQgBUEDOgBQIAVBCDYCTCAFQiA3AkQgBUKAgICAwAA3AjwgBUECNgI0IAUgBUE0ajYChAEgBUECNgKAASAFIAVBIGo2AnwgBUEIaiAFQfQAahCHGRoMAQsgBUE0aiAHKAIAELAMIAVB9ABqENkvGkEDIQgDQAJAAkACQCAIDQBBBSEHAkAgAUUNACAFQTRqQf0AELAMQQchBwsgBUEIaiAFKAI4IAUoAjwQhQgDQCAHRQ0CIAdBf2ohByAFQRRqENkvGgwACwsCQCAFQfQAahDZLyIHQYCAxABGDQAgB0FQakEKSQ0CIAdBv39qQQZJDQIgB0Gff2pBBkkNAgsgAUUNACAFQTRqQf0AELAMCyAFKAI0IAUoAjgQ9jkMAgsgBUE0aiAHELAMIAhBf2ohCAwACwtBACEIDAALCyAAQf8BOgALIAAgAjYCBCAAIAE2AgALIAVBoAFqJAALyRQCC38FfiMAQYAEayIFJAACQAJAIAEQ7Q4iBkUNACAGLQAAQQRHDQAgBUHYAGogARCLAgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAKQAiIHQQJxRQ0AIAUoAtwCIgYoAggiCEH+////B0sNASAGKAIURQ0AIAgNAiAGQX82AgggBSgC2AIiCCgCCA0DIAhBfzYCCCAGKAIQIQkgCEEMaiAGKAIUIgoQoTAgCCgCECAIKAIUQQJ0aiAJIApBAnQQ3woaIAggCiAIKAIUajYCFCAGQQA2AhQgCCAIKAIIQQFqNgIIIAYgBigCCEEBajYCCAsgBSAHQQFyNgLoAgJAAkACQCAFQdgAahDtDiIGDQAgBSgC1AIhASAFQYCAgIB4NgLoAyABIAEgBUHoA2oQ/iIhAQwBCyAGLQAAQZsBRw0BIAVBAjoAuQMgBSAFKQOwAzcDqAMgBUHYAGoQ3xghAQsgBUHYAGoQnhYgAEGBgICAeDYCACAAIAE2AgQMEAsgBUECOgC5AyAFIAUpA7ADNwOoAyAFKALoAiEIAkACQCAFQdgAahDtDiIGRQ0AAkACQCAGLQAAIgZBun9qIgdBH0sNAEEBIAd0QYGAgpB4cQ0BCyAGQbl/akH/AXFB0gBLDQELIAYgCBCLEQ0AIAVBAjoAuQMgBSAFKQOwAzcDqAMgBUHYAGoQ7Q4iBg0BCyAFQdgAahCeFgwPCyAGLQAAIQYgBUHYAGoQnhYCQCAGQXlqDgMADwAPCwJAAkAgARDtDiIGRQ0AIAYtAABBBEYNAQsgAUHUAmogAUHcAmogAS0A4QJBAkYiAhsoAgAhBiABQdACaiABQdgCaiACGygCACECIAVBFGogARDKCyAFQQE2AlwgBUGk16EBNgJYIAVCATcCZCAFQegENgJMIAVBBDoAVyAFIAVByABqNgJgIAUgBUHQAGo2AkggBSAFQdcAajYCUCAFQegDaiAFQdgAahCqEyAFQfwDaiAFQRxqKAIANgIAIAUgBSkCFDcC9AMgAiAGIAIgBkkbIAIgBiACIAZLGyAFQegDahD+IiEGAkAgARDtDiICRQ0AIAItAABBmwFHDQAgAUECOgDhAiABIAEpA9gCNwPQAiABIAEQ3xgQ9RgLIABBgYCAgHg2AgAgACAGNgIEDBALIAFBAjoA4QIgASABKQPYAjcD0AIgARDtDhogAUHUAmogAUHYAmogAS0A4QJBAkYbKAIAIQggBUEgaiABEI8EAkAgBSkDIEIAUg0AIAUoAighBgwOCyAFQdgAaiAFQSBqEM4bIAUoAlghBiAFMQBsIhBCAlENDSAFQe8AajEAACERIAUoAnQhCyAFKAJwIQcgBSgCZCEJIAUoAmAhDCAFNQJcIRIgBTUCaCETIAUzAG0hFCABEO0OGiABQdQCQdgCIAEtAOECQQJGG2ooAgAhDQJAIAEQ7Q4iCkUNACAKLQAAQQdGDQQLAkACQCABEO0OIgpFDQAgCi0AAEEJRg0BCyABQdQCaiABQdwCaiABLQDhAkECRiIEGygCACECIAFB0AJqIAFB2AJqIAQbKAIAIQQgBUEwaiABEMoLIAVBATYCXCAFQaTXoQE2AlggBUIBNwJkIAVB6AQ2AkwgBUEJOgBXIAUgBUHIAGo2AmAgBSAFQdAAajYCSCAFIAVB1wBqNgJQIAVB6ANqIAVB2ABqEKoTIAVB/ANqIAVBOGooAgA2AgAgBSAFKQIwNwL0AyAEIAIgBCACSRsgBCACIAQgAksbIAVB6ANqEP4iIQIgARDtDiIERQ0HIAQtAABBmwFGDQYMBwsgAUECOgDhAiABIAEpA9gCNwPQAgwEC0GchJsBEOoiAAtBjISbARDpIgALQfyDmwEQ6SIACyABQQI6AOECIAEgASkD2AI3A9ACIAVBhIGAgHg2AlggASAMIAkgBUHYAGoQlioLAkAgASgCkAIiCkECcUUNACABKAKEAiIJKAIIIgxB/v///wdLDQMgCSgCFEUNACAMDQQgCUF/NgIIIAEoAoACIgwoAggNBSAMQX82AgggCSgCECEOIAxBDGogCSgCFCIPEKEwIAwoAhAgDCgCFEECdGogDiAPQQJ0EN8KGiAMIA8gDCgCFGo2AhQgCUEANgIUIAwgDCgCCEEBajYCCCAJIAkoAghBAWo2AggLIAEgCkGAIHI2ApACIAVBCGpBACANIAEQow4gBSgCDCEMIAUoAgghCSABIAoQ3BECQCAJRQ0AIAwhAgwCCyABKALUAiEKAkAgB0UNACAHKAIAIgkQ0AQgCUHgAEEIEO4cIAdBDEEEEO4cCwJAAkACQCABEO0OIgdFDQAgBy0AAEEFRg0BCyABQdQCaiABQdwCaiABLQDhAkECRiIEGygCACECIAFB0AJqIAFB2AJqIAQbKAIAIQQgBUE8aiABEMoLIAVBATYCXCAFQaTXoQE2AlggBUIBNwJkIAVB6AQ2AkwgBUEFOgBXIAUgBUHIAGo2AmAgBSAFQdAAajYCSCAFIAVB1wBqNgJQIAVB6ANqIAVB2ABqEKoTIAVB/ANqIAVBxABqKAIANgIAIAUgBSkCPDcC9AMgBCACIAQgAkkbIAQgAiAEIAJLGyAFQegDahD+IiECIAEQ7Q4iBA0BIAwhBwwDCyABQQI6AOECIAEgASkD2AI3A9ACQQAhCUEALQDA/6MBGkEoEIwBIgdFDQYgByALNgIkIAcgDDYCICAHIBBCIIYgE4QgEUI4hiAUQiiGhIQ3AhggByAIIAogCCAKSxs2AhQgByAIIAogCCAKSRs2AhAgB0EANgIAIAcgEkIghiAGrYQ3AgggBUEBNgJgIAUgBzYCXCAFQQE2AlgCQCABEO0OIgZFDQAgBi0AAEEJRw0AIAEQ7Q4aIAUgASABQdQCQdgCIAEtAOECQQJGG2ooAgAQngkgBSgCBCEJIAUoAgANCAsCQCABEKgsIgYNACAAIAUpAlg3AgAgACAEOgAZIAAgAzoAGCAAIAk2AgwgAEEIaiAFQdgAakEIaigCADYCACAAIAIgASgC1AIiASACIAFLGzYCFCAAIAIgASACIAFJGzYCEAwMCyAAQYGAgIB4NgIAIAAgBjYCBCAJEKQwIAUoAlwhByAFKAJYIQEMCAsgDCEHIAQtAABBmwFHDQELIAFBAjoA4QIgASABKQPYAjcD0AIgASABEN8YEPUYCyAAQYGAgIB4NgIAIAAgAjYCBAJAIAZBA3ENACAFIAY2AlggBUHYAGoQ9QcgBiAGKAIAIgFBf2o2AgAgAUEBRw0AIAYgBigCIBDTLwsgB0UNCCAHKAIAIgEQ0AQgAUHgAEEIEO4cIAdBDEEEEO4cDAgLQZyEmwEQ6iIAC0GMhJsBEOkiAAtB/IObARDpIgsACyAAQYGAgIB4NgIAIAAgCTYCBEEBIQELIAVB2ABqEPoLIAEgBxDhMwwCCyAAQYGAgIB4NgIAIAAgBjYCBAwBCyAAQYCAgIB4NgIACyAFQYAEaiQAC/cUAg5/A34jAEGgAmsiAiQAIAEQ8zEhAwJAAkACQCABELEWIgQNACABKAKwAiEBIAJBgICAgHg2AvABIAEgASACQfABahD+IiEBDAELAkAgBCgCAEEkRw0AIAEgASkDGDcDUCABKAIAIQQgAUElNgIAAkAgBEEkRw0AIAEoAgQhAQwCC0GUzqEBQShB2OGZARDTJwALIAEgASkDGDcDUCABKAIAIQQgAUElNgIAIAJB8AFqQQxqIgUgAUEMaikCADcCACACQfABakEUaiIGIAFBFGooAgA2AgAgAiABKQIENwL0ASACIAQ2AvABIAJB8AFqEOIQQYC4mQEQ4hAgASgCVCEHIAEoAlAhCCACQcAAakEQakEAKQPIwZkBIhA3AwAgAkHAAGpBCGpBACkDwMGZASIRNwMAIAJBACkDuMGZASISNwNAAkACQAJAAkACQAJAAkACQCABELEWIAJBwABqENM1DQAgAkHAAGoQ4hAgAkEYaiABEPsgIAIoAhwhBCACKAIYIQUgAkEgaiABEN8aIAJB8AFqQRBqIBA3AwAgAkHwAWpBCGogETcDACACQQE2AkQgAkGk16EBNgJAIAJCATcCTCACQaICNgJ4IAIgEjcD8AEgAiACQfQAajYCSCACIAJBPGo2AnQgAiACQfABajYCPCACQbABaiACQcAAahDmIiACQfABahDiECACQbABakEUaiACQSBqQQhqKAIANgIAIAIgAikCIDcCvAEgBSAEIAJBsAFqEP4iIQQCQCABELEWIgVFDQAgBSgCAEEkRw0AIAEgASkDGDcDUCABKAIAIQUgAUElNgIAIAVBJEcNAiABIAEoAgQQ4xMLIABBADYCACAAIAQ2AgQMCQsgASABKQMYNwNQIAEoAgAhCSABQSU2AgAgBSABQQRqIgRBCGopAgA3AgAgBiAEQRBqKAIANgIAIAIgBCkCADcC9AEgAiAJNgLwASACQfABahDiECACQcAAahDiECABIAEoAswCIgVB////3wNxEOEPIAEgASgCzAIiBkHAAHIQ4Q8gAkEQaiABEIgIIAIoAhQhCgJAIAIoAhBBAXENACACIAo2AiwgASAGEKA+IAEgBRCgPiACQcAAakEQakEAKQPQ4JkBIhA3AwAgAkHAAGpBCGpBACkDyOCZASIRNwMAIAJBACkDwOCZASISNwNAAkAgARCxFiACQcAAahDTNQ0AIAJBwABqEOIQIAJBCGogARD7ICACKAIMIQQgAigCCCEFIAJBMGogARDfGiACQfABakEQaiAQNwMAIAJB8AFqQQhqIBE3AwAgAkEBNgJEIAJBpNehATYCQCACQgE3AkwgAkGiAjYCeCACIBI3A/ABIAIgAkH0AGo2AkggAiACQTxqNgJ0IAIgAkHwAWo2AjwgAkGwAWogAkHAAGoQ5iIgAkHwAWoQ4hAgAkHEAWogAkEwakEIaigCADYCACACIAIpAjA3ArwBIAUgBCACQbABahD+IiEEAkAgARCxFiIFRQ0AIAUoAgBBJEcNACABIAEpAxg3A1AgASgCACEFIAFBJTYCACAFQSRHDQQgASABKAIEEOMTCyAAQQA2AgAgACAENgIEDAgLIAEgASkDGDcDUCABKAIAIQUgAUElNgIAIAJB/AFqIARBCGopAgA3AgAgAkGEAmogBEEQaigCADYCACACIAQpAgA3AvQBIAIgBTYC8AEgAkHwAWoQ4hAgAkHAAGoQ4hACQCABKALMAiIFQQhxDQAgAkGAAmpBACkDsLuZATcDACACQfgBakEAKQOou5kBNwMAIAJBACkDoLuZATcD8AEgARCxFiACQfABahDTNRogAkHwAWoQ4hAgASgCzAIhBQsgASAFQf///98BcRDhDyACQfABaiABEMc7IAIgAkHwAWoQ0ysgAigCBCELIAIoAgAhBiABIAUQoD4CQAJAIAYNACACIAs2AjwgASgCzAIiBUGAgIAgcUUNAQwHCyAAQQA2AgAgACALNgIEDAgLIAJBADYCdCAFQYCAgCByIQwgAkHwAWpBBHIhBiACQfQAakEIaiENIAJB8AFqQQhqIQlBACkDmLuZASEQIAJBsAFqQRBqIQ5BACkDkLuZASERQQApA4i7mQEhEgNAIA4gEDcDACACQbABakEIaiARNwMAIAIgEjcDsAECQCABELEWIAJBsAFqENM1IggNACACQbABahDiEEETIQQMBgsgBiAEKQIANwIAIAEgASkDGDcDUCABKAIAIQUgAUElNgIAIAZBCGogBEEIaikCADcCACAGQRBqIARBEGooAgA2AgAgAiAFNgLwASACQfABahDiECACQbABahDiECACQfABakEQakEAKQOQuJkBNwMAIAlBACkDiLiZATcDACACQQApA4C4mQE3A/ABIAEQsRYgAkHwAWoQ0zUhBSACQfABahDiEAJAIAUNACABIAEoAswCIgVB////3wFxEOEPIAJB8AFqIAEQxzsgAigC9AEhByACKALwASIEQRNGDQUgAkGIAWogAkH4AWpBKBDfChogASAFEKA+DAYLIAEoAswCIQUgASAMEOEPIAJB8AFqIAEQ8gEgAigC9AEhByACKALwASIIRQ0EIAJByAFqQQhqIg8gCUEIaigCADYCACACIAkpAgA3A8gBIAEgBRCgPgJAIAIoAnRFDQBBMEEIEM0zIgUgBzYCCCAFIAg2AgQgBUEINgIAIAUgAikDyAE3AgwgBUEUaiAPKAIANgIAIAEoAlQgAkH0AGogBRDFHgwBCyACQfQAahDFNyANIAIpA8gBNwIAIA1BCGogDygCADYCACACIAc2AnggAiAINgJ0DAALCyAKKAIEIQQgCigCACEJQQRBBBDNMyIPIAo2AgAgAiAHNgKEAiACIAg2AoACIAIgDzYC9AEgAkEwNgL8ASACQZjVmgE2AvgBIAJBuIGAgHg2AvABIAkgBCACQfABahD+IiEEIABBADYCACAAIAQ2AgQgASAGEKA+IAEgBRCgPgwIC0GUzqEBQShB2OGZARDTJwALQZTOoQFBKEHY4ZkBENMnAAsgAEEANgIAIAAgBzYCBCABIAUQoD4gAkH0AGoQxTcgAkE8ahChBwwDCwJAAkAgAigCdEUNACAC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AlAgAyADQdABakEcaigAADYAU0EgQQgQzTMiBSAINgIAIAUgCToAGCAFIAMpA1g3AgQgBUEMaiAHKQMANwIAIAVBFGogCygCADYCACAFIAMoAlA2ABkgBUEcaiADKABTNgAAIANBATYCdCADIAU2AnAgA0EBNgJsIANB0AFqQQRyIQYgA0HpAWoiDEEDaiENAkACQAJAAkACQAJAA0AgCUEBcQ0BIANBqAFqQRBqIgtBACkDqLOZATcDACADQagBakEIaiIOQQApA6CzmQE3AwAgA0EAKQOYs5kBNwOoAQJAIAEQsRYgA0GoAWoQyzUNACADQagBahDiECADQSBqIAEQ+yAgAygCJCEFIAMoAiAhBiADQfgAaiABEN8aIANB4AFqQQApA6izmQE3AwAgA0HQAWpBCGpBACkDoLOZATcDACADQQE2AqwBIANBpNehATYCqAEgA0IBNwK0ASADQaICNgLIASADQQApA5izmQE3A9ABIAMgA0HEAWo2ArABIAMgA0HMAWo2AsQBIAMgA0HQAWo2AswBIANBkAFqIANBqAFqEJkWIANB0AFqEOIQIANBpAFqIANB+ABqQQhqKAIANgIAIAMgAykCeDcCnAEgBiAFIANBkAFqEP4iIQggARCxFiIFRQ0HIAUoAgBBJEcNByABIAEpAxg3A1AgASgCACEFIAFBJTYCACAFQSRHDQMgASABKAIEEOMTDAcLIAYgCikCADcCACABIAEpAxg3A1AgASgCACEIIAFBJTYCACAGQQhqIgUgCkEIaiIPKQIANwIAIAZBEGoiByAKQRBqIhAoAgA2AgAgAyAINgLQASADQdABahDiECADQagBahDiECABIAEoAswCIglBwAByEOEPIANBGGogARCICCADKAIcIQgCQCADKAIYRQ0AIAEgCRCgPgwHCyADQcQAaiAIEJssIAEgCRCgPiALQQApA/jDmQE3AwAgDkEAKQPww5kBNwMAIANBACkD6MOZATcDqAECQCABELEWIANBqAFqEMs1DQAgA0GoAWoQ4hAgA0EQaiABEPsgIAMoAhQhBSADKAIQIQYgA0GEAWogARDfGiADQeABakEAKQP4w5kBNwMAIANB0AFqQQhqQQApA/DDmQE3AwAgA0EBNgKsASADQaTXoQE2AqgBIANCATcCtAEgA0GiAjYCyAEgA0EAKQPow5kBNwPQASADIANBxAFqNgKwASADIANBzAFqNgLEASADIANB0AFqNgLMASADQZABaiADQagBahCZFiADQdABahDiECADQaQBaiADQYQBakEIaigCADYCACADIAMpAoQBNwKcASAGIAUgA0GQAWoQ/iIhCCABELEWIgVFDQcgBSgCAEEkRw0HIAEgASkDGDcDUCABKAIAIQUgAUElNgIAIAVBJEcNBCABIAEoAgQQ4xMMBwsgBiAKKQIANwIAIAEgASkDGDcDUCABKAIAIQggAUElNgIAIAUgDykCADcCACAHIBAoAgA2AgAgAyAINgLQASADQdABahDiECADQagBahDiECADQdABaiABIAIQvQcgAygC0AEhCCADLQDoASIJQQJGDQYgA0H4AWpBEGoiCyAHKAIANgIAIANB+AFqQQhqIg4gBSkCADcDACADIAYpAgA3A/gBIAMgDCgAADYC8AEgAyANKAAANgDzAQJAIAMoAnQiByADKAJsRw0AIANB7ABqEOYmCyADKAJwIAdBBXRqIgUgCDYCACAFIAMpA/gBNwIEIAUgCToAGCAFIAMoAvABNgAZIAVBDGogDikDADcCACAFQRRqIAsoAgA2AgAgBUEcaiADKADzATYAACADIAdBAWo2AnQMAAsLIANBKGpBCGoiBSADQewAakEIaigCADYCACADIAMpAmw3AyggAygCSCEIIAMoAkQiBkGAgICAeEYNBiADKAJMIQkgA0H4AWpBCGogBSgCADYCACADIAMpAyg3A/gBIAMgCTYCYCADIAg2AlwgAyAGNgJYIANBqAFqQRBqQQApA/jBmQEiETcDACADQagBakEIakEAKQPwwZkBIhI3AwAgA0EAKQPowZkBIhM3A6gBIAEQsRYgA0GoAWoQyzUNAiADQagBahDiECADQQhqIAEQ+yAgAygCDCEFIAMoAgghBiADQThqIAEQ3xogA0HQAWpBEGogETcDACADQdABakEIaiASNwMAIANBATYCrAEgA0Gk16EBNgKoASADQgE3ArQBIANBogI2AogBIAMgEzcD0AEgAyADQYQBajYCsAEgAyADQfgAajYChAEgAyADQdABajYCeCADQZABaiADQagBahCZFiADQdABahDiECADQaQBaiADQThqQQhqKAIANgIAIAMgAykCODcCnAEgBiAFIANBkAFqEP4iIQUC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Rg0GIANBHGogAmoiBCgCACEFIAQgA0EoaiACaiIGKAIANgIAIAYgBTYCACACQQRqIQIMAAsLIAUgASgCBCIHIAUgB0kbIQQCQCAGRQ0AIAUgAigCCEcNACADQQE6AFQgA0EANgJQIANCgICAgBA3AkggA0E8aiADQcgAahDaKgJAA0AgBEUNASADQTxqEKUaDQEgA0EoakEIaiADQTxqQQhqKAIANgIAIAMgAykCPDcDKCADQcgAaiADQRxqEOkOIANBPGogASADQShqIANByABqEK8DIARBf2ohBCADQcgAahCtNQwACwsgBSAHTQ0JIANBPGoQoCcMCQsgA0EBOgBUIANBADYCUCADQoCAgIAQNwJIIANBPGogA0HIAGoQ2ioDQCAERQ0IIANBPGoQpRoNCCADQShqQQhqIANBPGpBCGooAgA2AgAgAyADKQI8NwMoIANByABqIANBHGoQ6Q4gA0E8aiABIANBKGogA0HIAGoQrwMgBEF/aiEEIANByABqEK01DAALCyACKAIEIQIMAAsLIAIoAgxBHGwhBCABLQAQIQggASgCDCEJIAIoAgghBUEEIQZBACECQQAhBwJAA0AgBEUNASACQYCAgIB4Rg0BIAMgBzYCMCADIAY2AiwgAyACNgIoIANByABqIAEgBRCEAiADQTxqIAkgCCADQShqIANByABqEN0JIARBZGohBCAFQRxqIQUgAygCPCECIAMoAkAhBiADKAJEIQcgA0HIAGoQrTUMAAsLIAAgBzYCCCAAIAY2AgQgACACNgIADAcLIAIoAgQNAiACKAIMIgYgAigCEEEDdCIEaiEIIAEoAgAhB0EAIQUgBiECAkACQANAIARFDQEgBSAHSw0CIARBeGohBCACKAIEIAIoAgBrIAVqQQFqIQUgAkEIaiECDAALCyAFIAdLDQAgA0EANgIkIANCgICAgMAANwIcA0ACQCAGIAhHDQAgASgCCCABLQAQIANBHGoQqDIgAEEIaiADQRxqQQhqKAIANgIAIAAgAykCHDcCAAwJCyAGQQhqIQcgBigCBCEFIAYoAgAhAkEAIQQCQANAIARBAXENASACIAVLDQEgA0EANgI4IANBEGogAiADQThqEIcPIAMoAhQhBCADKAIQIQYgA0EANgJEIANCgICAgBA3AjwgA0EDOgBoIANBIDYCWCADQQA2AmQgA0HEpYQBNgJgIANBADYCUCADQQA2AkggAyADQTxqNgJcAkAgBiAEIANByABqEJ87DQAgA0EoakEIaiADQTxqQQhqKAIANgIAIAMgAykCPDcDKCADQQE6ADQgAkGAwAMgAkEBaiACQf+vA0YbIAIgBU8iBBshAiADQRxqIANBKGoQixkMAQsLQdzBoQFBNyADQShqQdylhAFB4MKhARCxGAALIAchBgwACwsgAEGAgICAeDYCAAwGCyADQcgAakEIaiADQRxqQQhqKAIANgIAIAMgAykCHDcDSCAAIAEoAgwgAS0AECADQcgAaiADQShqEN0JIANBKGoQrTUMBQsgAigCDCEFIAIoAgghBAJAIAEtABANACADQQE6AFQgA0EANgJQIANCgICAgBA3AkggBUEcbCECIANBPGogA0HIAGoQ2ioCQANAIAJFDQEgA0E8ahClGg0BIANBKGpBCGogA0E8akEIaigCADYCACADIAMpAjw3AyggA0HIAGogASAEEIQCIANBPGogASADQShqIANByABqEK8DIAJBZGohAiAEQRxqIQQgA0HIAGoQrTUMAAsLIAAgAykCPDcCACAAQQhqIANBPGpBCGooAgA2AgAMBQsgA0EBOgBUIANBADYCUCADQoCAgIAQNwJIIAVBHGwhAiAEQWRqIQQgA0E8aiADQcgAahDaKgJAA0AgAkUNASADQTxqEKUaDQEgA0EoakEIaiADQTxqQQhqKAIANgIAIAMgAykCPDcDKCADQcgAaiABIAQgAmoQhAIgA0E8aiABIANBKGogA0HIAGoQrwMgAkFkaiECIANByABqEK01DAALCyAAIAMpAjw3AgAgAEEIaiADQTxqQQhqKAIANgIADAQLIAIoAgwiCCACKAIQQQF0IgRqIQogASgCACEJQQAhBSAIIQICQAJAAkACQANAIARFDQEgBSAJSw0CIAItAAEiBiACLQAAIgdJDQQgAkECaiECIARBfmohBCAGIAdrQf8BcSAFakEBaiEFDAALCyAFIAlLDQAgA0EANgIwIANCgICAgMAANwIoDAELIABBgICAgHg2AgAMBQsDQAJAIAggCkcNACABKAIIIAEtABAgA0EoahCoMiAAQQhqIANBKGpBCGooAgA2AgAgACADKQIoNwIADAYLIAgtAAEhByAILQAAIQJBACEGAkADQCAGQQFx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ATYCKCACQgQ3AjAgASgCFCABKAIYIAJBKGoQijUhAQwaCyACQQA2AjggAkEBNgIsIAJBiNWZATYCKCACQgQ3AjAgASgCFCABKAIYIAJBKGoQijUhAQwZCyACQQA2AjggAkEBNgIsIAJBkNWZATYCKCACQgQ3AjAgASgCFCABKAIYIAJBKGoQijUhAQwYCyACQQA2AjggAkEBNgIsIAJBmNWZATYCKCACQgQ3AjAgASgCFCABKAIYIAJBKGoQijUhAQwXCyACQQA2AjggAkEBNgIsIAJBoNWZATYCKCACQgQ3AjAgASgCFCABKAIYIAJBKGoQijUhAQwWCyACQQA2AjggAkEBNgIsIAJBqNWZATYCKCACQgQ3AjAgASgCFCABKAIYIAJBKGoQijUhAQwVCyACQQA2AjggAkEBNgIsIAJBsNWZATYCKCACQgQ3AjAgASgCFCABKAIYIAJBKGoQijUhAQwUCyACQQA2AjggAkEBNgIsIAJBuNWZATYCKCACQgQ3AjAgASgCFCABKAIYIAJBKGoQijUhAQwTCyACIABBEGo2AgwgAkECNgIsIAJBhO2aATYCKCACQgE3AjQgAkGoAjYCHCACIAJBGGo2AjAgAiACQQxqNgIYIAEoAhQgASgCGCACQShqEIo1IQEMEgsgAkEANgI4IAJBATYCLCACQcDVmQE2AiggAkIENwIwIAEoAhQgASgCGCACQShqEIo1IQEMEQsgAkEBNgIsIAJBpNehATYCKCACQgE3AjQgAkECNgIQIAIgAC0ABEECdCIAQeyrowFqKAIANgIcIAIgAEHIrKMBaigCADYCGCACIAJBDGo2AjAgAiACQRhqNgIMIAEoAhQgASgCGCACQShqEIo1IQEMEAsgAkEBNgIsIAJBpNehATYCKCACQgE3AjQgAkECNgIQIAIgAC0ABEECdCIAQaStowFqKAIANgIcIAIgAEHkraMBaigCADYCGCACIAJBDGo2AjAgAiACQRhqNgIMIAEoAhQgASgCGCACQShqEIo1IQEMDwsgAkEANgI4IAJBATYCLCACQcjVmQE2AiggAkIENwIwIAEoAhQgASgCGCACQShqEIo1IQEMDgsgAkEANgI4IAJBATYCLCACQdDVmQE2AiggAkIENwIwIAEoAhQgASgCGCACQShqEIo1IQEMDQsgAkEANgI4IAJBATYCLCACQdjVmQE2AiggAkIENwIwIAEoAhQgASgCGCACQShqEIo1IQEMDAsgAkEANgI4IAJBATYCLCACQeDVmQE2AiggAkIENwIwIAEoAhQgASgCGCACQShqEIo1IQEMCwsgAkEANgI4IAJBATYCLCACQejVmQE2AiggAkIENwIwIAEoAhQgASgCGCACQShqEIo1IQEMCgsgAiAAQQhqNgIUIAIgAEEQajYCDCACQQM2AiwgAkGg65oBNgIoIAJCAjcCNCACQagCNgIkIAJBqAI2AhwgAiACQRhqNgIwIAIgAkEMajYCICACIAJBFGo2AhggASgCFCABKAIYIAJBKGoQijUhAQwJCyACIABBCGo2AhQgAiAAQRBqNgIMIAJBAzYCLCACQczsmgE2AiggAkICNwI0IAJBqAI2AiQgAkGoAjYCHCACIAJBGGo2AjAgAiACQQxqNgIgIAIgAkEUajYCGCABKAIUIAEoAhggAkEoahCKNSEBDAgLIAIgAEEQajYCFCACIABBCGo2AgwgAkEDNgIsIAJB3OuaATYCKCACQgI3AjQgAkGoAjYCJCACQakCNgIcIAIgAkEYajYCMCACIAJBDGo2AiAgAiACQRRqNgIYIAEoAhQgASgCGCACQShqEIo1IQEMBwsgAiAAQRBqNgIUIAIgAEEIajYCDCACQQM2AiwgAkGU7JoBNgIoIAJCAjcCNCACQagCNgIkIAJBqgI2AhwgAiACQRhqNgIwIAIgAkEMajYCICACIAJBFGo2AhggASgCFCABKAIYIAJBKGoQijUhAQwGCyACIABBCGo2AgwgAkECNgIsIAJBsO2aATYCKCACQgE3AjQgAkGoAjYCHCACIAJBGGo2AjAgAiACQQxqNgIYIAEoAhQgASgCGCACQShqEIo1IQEMBQsgAiAAQRBqNgIMIAJBAjYCLCACQdztmgE2AiggAkIBNwI0IAJBqAI2AhwgAiACQRhqNgIwIAIgAkEMajYCGCABKAIUIAEoAhggAkEoahCKNSEBDAQLIAJBADYCOCACQQE2AiwgAkHw1ZkBNgIoIAJCBDcCMCABKAIUIAEoAhggAkEoahCKNSEBDAMLIAJBADYCOCACQQE2AiwgAkGI1pkBNgIoIAJCBDcCMCABKAIUIAEoAhggAkEoahCKNSEBDAILIAJBADYCOCACQQE2AiwgAkGQ1pkBNgIoIAJCBDcCMCABKAIUIAEoAhggAkEoahCKNSEBDAELIAIgAEEEajYCDCACQQI2AiwgAkGs7poBNgIoIAJCATcCNCACQasCNgIcIAIgAkEYajYCMCACIAJBDGo2AhggASgCFCABKAIYIAJBKGoQijUhAQsgAkHAAGokACABC5ITAwx/An4BfCMAQZABayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoApACIgNBAnFFDQAgASgChAIiBCgCCCIFQf7///8HSw0BIAQoAhRFDQAgBQ0CIARBfzYCCCABKAKAAiIFKAIIDQMgBUF/NgIIIAQoAhAhBiAFQQxqIAQoAhQiBxChMCAFKAIQIAUoAhRBAnRqIAYgB0ECdBDfChogBSAHIAUoAhRqNgIUIARBADYCFCAFIAUoAghBAWo2AgggBCAEKAIIQQFqNgIICyABIANBgICABHI2ApACIAEQ7Q4aIAFB1AJB2AIgAS0A4QJBAkYbaigCACEEAkAgARDtDiIFDQAgASgC/AEhBCACQYCAgIB4NgJ4IAQgBCACQfgAahD+IiEEDBILAkACQAJAAkACQAJAIAUtAAAiBUFBag4nBQAJAgICAgMCAgICAgICAgICAgICAgMCAgICAgICAgIDAgICAgIDAQtBAiEHIAFBAjoA4QIgASABKQPYAjcD0AIgAkEQaiABENsXIAQgASgC1AIiBSAEIAVJGyEGIAQgBSAEIAVLGyEEIAIpAxgiDkKAgICAcIMhDyAOpyEIIAIrAxAhEAwSCyAFQZsBRg0UCyAFQbl/akH/AXFB0wBJDQAgBUEERg0BIAJB+ABqQQRyIAEQygsgAkHFADYCjAEgAkHT+5oBNgKIASACQbCAgIB4NgJ4IAFB0AJqIAFB2AJqIAEtAOECQQJGIgUbKAIAIgQgAUHUAmogAUHcAmogBRsoAgAiBSAEIAVJGyAEIAUgBCAFSxsgAkH4AGoQ/iIhBAJAIAEQ7Q4iBUUNACAFLQAAQZsBRw0AIAFBAjoA4QIgASABKQPYAjcD0AIgASABEN8YEPUYCyAAQQU2AgAgACAENgIEDBULIAFBAjoA4QIgASABKQPYAjcD0AJBACEHQgAhDyABLQDgAkEAIAFBCGogASgCCEEJRhsQywciDkIAUQ0GIAQgASgC1AIiBSAEIAVLG61CIIYgBCAFIAQgBUkbrYS/IRAgDkIgiKchBCAOpyEGDBELIAFBAjoA4QIgASABKQPYAjcD0AIgARDtDhogAUHUAmogAUHYAmogAS0A4QJBAkYbKAIAIQkCQCABKAKQAiIHQQJxRQ0AIAEoAoQCIgUoAggiBkH+////B0sNByAFKAIURQ0AIAYNCCAFQX82AgggASgCgAIiBigCCA0JIAZBfzYCCCAFKAIQIQogBkEMaiAFKAIUIggQoTAgBigCECAGKAIUQQJ0aiAKIAhBAnQQ3woaIAYgCCAGKAIUajYCFCAFQQA2AhQgBiAGKAIIQQFqNgIIIAUgBSgCCEEBajYCCAsgASAHQcAAcjYCkAIgAkEIaiABEJcGIAIoAgwhBSACKAIIDQkgAiAFNgI0IAEgBxDcESABLQCYAkECRw0PIAEQ7Q4iB0UNDyAHLQAAQQdHDQ9BAC0AwP+jARpBBBCMASILRQ0KIAsgBTYCACACQQE2AkAgAiALNgI8IAJBATYCOEEEIQZBASEHA0ACQAJAIAEQ7Q4iBUUNACAFLQAAQQdGDQELIAEoAtQCIQUgAkGUgYCAeDYCeCABIAkgBSAJIAVJGyAJIAUgCSAFSxsgAkH4AGoQlipBAC0AwP+jARogASgC1AIhB0HAABCMASIFRQ0MIAVBGTYCACAFIAIpAjg3AgQgBUEMaiACQcAAaigCADYCACAFIAkgByAJIAdLGzYCFCAFIAkgByAJIAdJGzYCECACIAU2AjQMEQsgAUECOgDhAiABIAEpA9gCNwPQAgJAIAEoApACIgVBAnFFDQAgASgChAIiCCgCCCIKQf7///8HSw0NIAgoAhRFDQAgCg0OIAhBfzYCCCABKAKAAiIKKAIIDQ8gCkF/NgIIIAgoAhAhDCAKQQxqIAgoAhQiDRChMCAKKAIQIAooAhRBAnRqIAwgDUECdBDfChogCiANIAooAhRqNgIUIAhBADYCFCAKIAooAghBAWo2AgggCCAIKAIIQQFqNgIICyABIAVBwAByNgKQAiACIAEQlwYgAigCBCEIAkAgAigCAA0AAkAgByACKAI4Rw0AIAJBOGoQzg4gAigCPCELCyALIAZqIAg2AgAgAiAHQQFqIgc2AkAgASAFENwRIAZBBGohBgwBCwsgAEEFNgIAIAAgCDYCBCABIAUQ3BEgCyAHEJstIAIoAjggCxDfMwwTCyACQfgAaiABEJMZIAIpA4gBIg5CgICAgHCDIQ8gAisDgAEhECACKAJ8IQQgAigCeCEGIA6nIQhBASEHDA0LQZyEmwEQ6iIAC0GMhJsBEOkiAAtB/IObARDpIgALIAFBAjoA4QIgASABKQPYAjcD0AIgAkEgaiABEN0XIAQgASgC1AIiBSAEIAVJGyEGIAQgBSAEIAVLGyEEQQQhB0IAIQ8gAisDKCEQIAIoAiAhCAwJC0GY/JoBEP05AAtBnISbARDqIgALQYyEmwEQ6SIAC0H8g5sBEOkiAAsgAEEFNgIAIAAgBTYCBCABIAcQ3BEMCQsAC0GchJsBEOoiAAtBjISbARDpIgALQfyDmwEQ6SIACwwBCwJAAkAgARDtDiIHRQ0AIActAABBBUYNAQsgAUHUAmogAUHcAmogAS0A4QJBAkYiBRsoAgAhBCABQdACaiABQdgCaiAFGygCACEFIAJBxABqIAEQygsgAkEBNgJ8IAJBpNehATYCeCACQgE3AoQBIAJB6AQ2AmwgAkEFOgB3IAIgAkHoAGo2AoABIAIgAkHwAGo2AmggAiACQfcAajYCcCACQdAAaiACQfgAahCqEyACQeQAaiACQcwAaigCADYCACACIAIpAkQ3AlwgBSAEIAUgBEkbIAUgBCAFIARLGyACQdAAahD+IiEEAkAgARDtDiIFRQ0AIAUtAABBmwFHDQAgAUECOgDhAiABIAEpA9gCNwPQAiABIAEQ3xgQ9RgLIABBBTYCACAAIAQ2AgQgAkE0ahDmAQwECyABQQI6AOECIAEgASgC3AIiBzYC1AIgASABKALYAjYC0AIgBCAHIAQgB0kbIQYgBCAHIAQgB0sbIQRBAyEHQgAhDwsgACAQOQMQIAAgBDYCDCAAIAY2AgggACAFNgIEIAAgBzYCACAAIA8gCK2ENwMYDAILIAFBAjoA4QIgASABKQPYAjcD0AIgARDfGCEECyAAQQU2AgAgACAENgIECyABIAMQ3BEgAkGQAWokAAvBEgIEfwJ+IwBB4ABrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOFBUVAAECAwQFBgcICQoLDA0ODxARFQsgAS0ANEEBRw0UIAFBLGohAwJAIAAoAgRBgICAgHhHDQAgASgCMBC0GCEEIAJBwABqQRhqQQApA+DiogEiBjcDACACQcAAakEQakEAKQPY4qIBIgc3AwAgAkHAAGpBCGogBjcDACACQTRqIANBCGooAgA2AgAgAkEIaiAGNwMAIAJBEGogBzcDACACQRhqIAY3AwAgAiAHNwNAIAIgAykCADcCLCACIAc3AwAgAS0AOCEDIAEtAD0hBSACIAEvADs7ADsgAkGBAjsAOSACQQE6ACggAiAENgIkIAIgATYCICACIAU6AD0gAiADOgA4IAAoAiAiAUUNFCACLQA0QQFHDRQgAkEAOgA5AkAgASgCCCIFRQ0AIAVBMGwhBCABKAIEIgFBCGohAwNAIAIgAxCgGSADQTBqIQMgBEFQaiIEDQALIAVBMGwhAwNAIAIgARCoFyABQTBqIQEgA0FQaiIDDQALCyACQQE6ADoMFAsgASgCMBC0GCEEIAJBwABqQRhqQQApA+DiogEiBjcDACACQcAAakEQakEAKQPY4qIBIgc3AwAgAkHAAGpBCGogBjcDACACQTRqIANBCGooAgA2AgAgAkEIaiAGNwMAIAJBEGogBzcDACACQRhqIAY3AwAgAiAHNwNAIAIgAykCADcCLCACIAc3AwAgAS0AOCEDIAEtAD0hBSACIAEvADs7ADsgAkGBAjsAOSACQQE6ACggAiAENgIkIAIgATYCICACIAU6AD0gAiADOgA4IAAoAhwiAUUNEiACLQA0QQFHDRIgAkEAOgA5AkAgASgCCCIFRQ0AIAVBMGwhBCABKAIEIgFBCGohAwNAIAIgAxCgGSADQTBqIQMgBEFQaiIEDQALIAVBMGwhAwNAIAIgARCoFyABQTBqIQEgA0FQaiIDDQALCyACQQE6ADoMEgsgAS0ANEEBRw0TIAEtADohAyABQQE6ADogAEEQaiEEIAEtADkhBQJAAkAgAC0AJEECRw0AIAEgBCgCABDrLQwBCyABIAQQoBkLAkAgACgCKCIARQ0AIAEgABD4GwsgASADOgA6IAEgBToAOQwTCyABLQA0QQFHDRIgAS0AOiEEIAFBAToAOiABLQA5IQMgAEEQaiABEOQrIAFBAToAOiABIAM6ADkCQCAAKAJYIgBFDQAgASAAEPgbCyABIAQ6ADogASADOgA5DBILIAEtADRBAUcNESAAKAIMIgNFDREgACgCCCEAIANBOGwhAwNAIAEgABC+AiAAQThqIQAgA0FIaiIDDQAMEgsLIAEtADRBAUcNECABLwA5IQMgAUEBOgA6IAEgACgCBBDqLyABIAM7ADkMEAsgAS0ANEEBRw0PIAEtADohBCABQQE6ADogAS0AOSEFAkAgACgCDCIDRQ0AIANBOGwhAyAAKAIIQTBqIQADQAJAIAEtADRBAUcNACABQYECOwA5IAAoAgAgARCKAiABQYECOwA5CyAAQThqIQAgA0FIaiIDDQALCyABIAQ6ADogASAFOgA5DA8LIAEtADRBAUcNDiABIAAoAgQQ6i8MDgsgAS0ANEEBRw0NIAEgACgCBBDqLwwNCyABLQA0QQFHDQwCQCAAKAIEDQAgAS0AOiEEIAFBAToAOiABLQA5IQUCQCAAKAIQIgNFDQAgACgCDCEAIANBAnQhAwNAIAEgACgCABDqLyAAQQRqIQAgA0F8aiIDDQALCyABIAQ6ADogASAFOgA5DA0LIAEtADohBCABQQE6ADogAS0AOSEFAkAgACgCECIDRQ0AIAAoAgwhACADQQJ0IQMDQCABIAAoAgAQ6i8gAEEEaiEAIANBfGoiAw0ACwsgASAEOgA6IAEgBToAOQwMCyABLQA0QQFHDQsgAS8AOSEDIAFBAToAOiABIAAoAgQQ6i8gASAAKAIIEOovIAEgACgCDBDqLyABIAAoAhAQ6i8gASADOwA5DAsLIAEtADRBAUcNCiABLwA5IQMgAUEBOgA6IAEgAEEQahCoFyABIAM7ADkMCgsgAS0ANEEBRw0JIAEgACgCBBDqLwwJCyABLQA0QQFHDQggAS8AOSEDIAFBAToAOiABIAAoAgQQ6i8gASADOwA5DAgLIAEtADRBAUcNByABIAAoAgQQ6i8gASAAKAIIEOovDAcLIAEtADRBAUcNBiABQQA6ADkgASAAQRhqEKAZIAAoAjQiA0UNAyABLQA0QQFHDQMgAS0AOiEEIAFBgQI7ADkgAyABEIoCIAEgBDoAOgwDCyAAKAIIQYSAgIB4SA0FIAAoAhAiA0UNBSAAKAIMIQAgA0ECdCEDA0AgASAAKAIAEOovIABBBGohACADQXxqIgMNAAwGCwsgAS0ANEEBRw0EIAEtADohAyABQQE6ADogAS0AOSEEAkAgAC0AHEECRg0AIAEgAEEIahCgGQsgASADOgA6IAEgBDoAOSAAKAIoIgBFDQQgASAAEJkvDAQLIAEgAEEIahDjGQwDCwJAIAAoAjAiA0UNACABLQA0QQFHDQAgAS0AOiEEIAFBgQI7ADkgAyABEIoCIAEgBDoAOgsCQCAAKAJAIgNFDQAgAS0ANEEBRw0AIAEtADohBCABQYECOwA5IAMgARCKAiABIAQ6ADoLIAFBAToAOSAAKAJEIgBFDQIgAS0ANEUNAiABLQA6IQMgAUEBOgA6IAAgARCKAiABIAM6ADogAUEBOgA5DAILAkAgACgCDCIDRQ0AIAAoAgghASADQShsIQMDQCACIAEQqjYgAUEoaiEBIANBWGoiAw0ACwsCQCACLQA0QQFHDQAgACgCECEBIAIvADkhACACQYECOwA5IAIgASgCABDqLyACIAA7ADkLIAIQoQwgAkEQahCsDAwBCwJAIAAoAhAiA0UNACAAKAIMIQEgA0EobCEDA0AgAiABEKo2IAFBKGohASADQVhqIgMNAAsLAkAgAi0ANEEBRw0AIAAoAhQhASACLwA5IQAgAkGBAjsAOSACIAEoAgAQ6i8gAiAAOwA5CyACEKEMIAJBEGoQrAwLIAJB4ABqJAAL7xICMX8BfiMAQZAEayICJAAgASgC9AIhAyACQYgDaiABKAL4AiIEQQhBCBDhEyACKAKMAyEFAkACQAJAAkAgAigCiANBAUYNACACKAKQAyEGAkAgBUUNACAEQQN0IQcgBiEIIAUhCQNAIAdFDQECQCADKQMAIjNCA4NCAFINACAzpyIKIAooAgAiCkEBajYCACAKQX9MDQYLIANBCGohAyAIIDM3AwAgB0F4aiEHIAhBCGohCCAJQX9qIgkNAAsLIAEoAuwCIQsgASgC6AIhDEEAIQ0CQAJAIAEoAoADIg4NAEHQ4qIBIQ9BACEQQQAhEUEAIQ4MAQsgDkEBaq1CDH4iM0IgiKcNAiAzpyIDQXhLDQIgA0EHakF4cSIDIA5BCWoiCGoiByADSQ0CIAdB+f///wdPDQJBAC0AwP+jARogBxCMASIHRQ0EIAcgA2oiDyABKAL8AiIDIAgQ3wogDkF/c0EMbCIHaiADIAdqIA5BDGxBDGoQ3woaIAEoAoQDIREgASgCiAMhEAsgASgC1AEhEiABKALQASETAkAgASgC2AFBAUcNAAJAIAEoAtwBIhRFDQAgFCAUKAIAQQFqIgM2AgAgA0UNBQsCQCABKALgASIVDQBBASENQQAhFQwBC0EBIQ0gFSAVKAIAQQFqIgM2AgAgA0UNBAsgASgCuAEhFiABKAK0ASEXIAEoArABIRggASgCrAEhGSABKAKoASEaIAEtAMkBIRsgAS0AyAEhHCABLQDHASEdIAEoAgQhHiABKAIAIR8gAS0AxgEhICABKAKUAiEhIAEoAvwBISIgASgC+AEhIyABKALwASEkIAEoAuwBISUgASgC6AEhJiABKALkASEnIAEoAvQBISggASgCkAIhKQJAAkACQAJAIAEoAqQBIghBgAFLDQBBACEHIAJBADoAiAMgAkEANgKMBCABQSFqIgMgCGohKiACQYwEaiErDAELIAEoAiQhCCABKAIoIQNBACEHIAJBADoAiAMgAkEANgKMBCADIAhqISogAkGMBGohKyAIQYEBSQ0AIAhBf2pnIgdFDQUgAkEIaiACQYgDakF/IAd2QQFqENMKAkAgAigCCCIHQYGAgIB4Rg0AIAdFDQYMBwsgAigCjAQiCEGAAUsNASAIIQcLIAJBiANqQQFyIQlBgAEhCCArIQoMAQsgAkGMA2ohCiACKAKMAyEHIAIoApADIQkLAkACQAJAIAcgCE8NAANAIAMgKkYNAiAJIAdqIAMtAAA6AAAgA0EBaiEDIAggB0EBaiIHRw0ACyAIIQcLIAogBzYCACACQYwDaiEsIAJBiANqQQFyIS0DQCADICpGDQICQAJAIAIoAowEIglBgQFJDQAgAigCjAMhByACKAKQAyEKICwhCAwBCyAJIQcgLSEKICshCEGAASEJCyADLQAAIS4CQCAHIAlHDQAgAkGIA2oQmxcgAigCjAMhByACKAKQAyEKICwhCAsgA0EBaiEDIAogB2ogLjoAACAIIAgoAgBBAWo2AgAMAAsLIAogBzYCAAsgAkHoAWogAkGIA2pBiAEQ3woaQQkhLgJAIAEoAghBCUYNACACQYgDaiABQQhqEJgFIAJB8AJqQQhqIAJBlANqKQIANwMAIAJBgANqIAJBnANqKAIANgIAIAIgAikCjAM3A/ACIAIoAogDIS4LIAEtAKICISwgAS0AygEhKyABKAKAAiIDIAMoAgBBAWoiBzYCACAHRQ0DIAEoAoQCIgcgBygCAEEBaiIINgIAIAhFDQMgASgCiAIiCCAIKAIAQQFqIgk2AgAgCUUNAyABKAKMAiIJIAkoAgBBAWoiCjYCACAKRQ0DIAJBmAFqQRBqIAJB8AJqQRBqKAIANgIAIAJBmAFqQQhqIAJB8AJqQQhqKQMANwMAIAIgAikD8AI3A5gBIAJBEGogAkHoAWpBiAEQ3woaAkAgAS0A4QIiLUECRg0AIAJBsAFqQQhqIAFB4AJqLQAAOgAAIAIgASkD2AI3A7ABIAEvAeICISoLIAEoAtQCIS8gASgC0AIhMEEKIQoCQCABKAKoAiIxQQpGDQAgAUHAAmohMkEJIQoCQCAxQQlGDQAgAkGIA2ogAUGoAmoQmAUgAkHwAWogAkGUA2opAgA3AwAgAkH4AWogAkGcA2ooAgA2AgAgAiACKQKMAzcD6AEgAigCiAMhCgsgAkHcAWogMkEIaigCADYCACACQcABakEIaiACQegBakEIaikDADcDACACQcABakEQaiACQegBakEQaigCADYCACACIAIpA+gBNwPAASACIDIpAgA3AtQBCyAAIBA2AogDIAAgETYChAMgACAONgKAAyAAIA82AvwCIAAgBDYC+AIgACAGNgL0AiAAIAU2AvACIAAgCzYC7AIgACAMNgLoAiAAIAEpArwBNwK8ASAAIAEpA5gCNwOYAiAAQcQBaiABQcQBai8BADsBACAAQaACaiABQaACai8BADsBACABLQCMAyEBIAAgLjYCCCAAIB42AgQgACAfNgIAIAAgAikDmAE3AgwgAEEUaiACQZgBakEIaikDADcCACAAQRxqIAJBmAFqQRBqKAIANgIAIABBIGogAkEQakGIARDfChogACAKNgKoAiAAICw6AKICIAAgITYClAIgACApNgKQAiAAIAk2AowCIAAgCDYCiAIgACAHNgKEAiAAIAM2AoACIAAgIjYC/AEgACAjNgL4ASAAICg2AvQBIAAgJDYC8AEgACAlNgLsASAAICY2AugBIAAgJzYC5AEgACAVNgLgASAAIBQ2AtwBIAAgDTYC2AEgACASNgLUASAAIBM2AtABIAAgKzoAygEgACAbOgDJASAAIBw6AMgBIAAgHToAxwEgACAgOgDGASAAIBY2ArgBIAAgFzYCtAEgACAYNgKwASAAIBk2AqwBIAAgGjYCqAEgACAvNgLUAiAAIDA2AtACIAAgKjsB4gIgACAtOgDhAiAAIAE6AIwDIABBzAJqIAJBwAFqQSBqKAIANgIAIABBxAJqIAJB2AFqKQMANwIAIABBvAJqIAJBwAFqQRBqKQMANwIAIABBtAJqIAJBwAFqQQhqKQMANwIAIAAgAikDwAE3AqwCIABB4AJqIAJBsAFqQQhqLQAAOgAAIAAgAikDsAE3A9gCIAJBkARqJAAPCyAFIAIoApADEPg5AAsQ9isAC0H096ABQRFB5PmaARDTJwALAAvAEgEDfwNAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACICQXRqIgNBByADQSZJGw4mAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUACyAAQgA3AgQPCyAAQgA3AhAgACgCDCIDRQ0kIAAoAgghACADQQR0IQMDQAJAIAAoAgAiAkECRg0AAkAgAkEBcUUNACAAQgA3AgQLIAAoAgwgARCMAgsgAEEQaiEAIANBcGoiAw0ADCULCyAAQgA3AhAgACgCDCIDRQ0jIAAoAgghACADQQxsIQMDQAJAAkAgACgCACICRQ0AIABCADcCBCACIAEQjAIMAQsgACgCBCABEKsJCyAAQQxqIQAgA0F0aiIDDQAMJAsLAkAgAC0AHEECRg0AIABCADcCEAsgACgCICABENENDwsgAEIANwIIIABBBGohAwwiCyAAQgA3AgQgAEEMaigCACEADCILIABCADcCDCAAKAIEIAEQjAIgAEEIaigCACEADCELIABCADcCMCAAQThqIQMCQCACQQtGDQACQAJAAkACQAJAAkACQAJAAkACQAJAIAIOCwABAgMEBQYHCAkKAAsgAEEIaiABENsyIAMoAgAhAAwrCyAAQgA3AiAgACgCKCABEIwCAkACQCAAKAIIDgMAAAEACyAAQgA3AhggAygCACEADCsLIABBDGogARCQOCADKAIAIQAMKgsgAEIANwMgIABBKGpCADcDAAJAIAAoAggNACAAQgA3AhggAygCACEADCoLIABBDGogARCQOCADKAIAIQAMKQsgAEIANwIIIAAoAgQgARCMAiADKAIAIQAMKAsgAEIANwIIAkAgACgCBCIEKAIAIgBBA0YNACAEQgA3AxggBCgCICABEIwCAkACQAJAIAAOAwABAgALIARCADcDECADKAIAIQAMKgsgBEIANwMQIAMoAgAhAAwpCyAEQQRqIAEQkDggAygCACEADCgLIARCADcCFCAEKAIQIAEQjAICQCAEQQxqKAIAIgJFDQAgBEEIaigCACIAIAJBBHRqIQIDQAJAIAAoAgBBAUcNACAAQgA3AgQLIABBDGooAgAgARCMAiAAQRBqIgAgAkcNAAsLIAQoAiAiAEUNJiAAIAEQvycgAygCACEADCcLIABBBGogARCkMyADKAIAIQAMJgsgAEEEaiABEKQzIAMoAgAhAAwlCyAAQQRqIAEQkDggAygCACEADCQLIABBBGogARCkMyADKAIAIQAMIwsgAEEEaiABEJoeIAMoAgAhAAwiCyAAQgA3AgQgAygCACEADCELIABBCGohAgJAAkACQCAAKAIEDgMAAQIACyACIAEQwh0gAygCACEADCILIAIgARDFDyADKAIAIQAMIQsgAEIANwIIIAMoAgAhAAwgCyAAQgA3AiAgACgCKCABEIwCAkACQCAAKAIIDgMAAAEACyAAQgA3AhgPCyAAQQxqIAEQkDgPCyAAQgA3AyAgAEEoakIANwMAAkAgACgCCA0AIABCADcCGA8LIABBDGogARCQOA8LIABCADcCECAAKAIEIAEQjAIgACgCCCABEIwCIABBDGooAgAhAAwdCyAAQgA3AhwCQAJAAkAgAC0AGEF9aiIDQQEgA0H/AXFBA0kbQf8BcQ4DAAABAAsgAEIANwIQDAELIAAoAhAgARCMAgsCQCAAKAIMIgJFDQAgACgCCCIDIAJBBHRqIQIDQAJAIAMoAgBBAUcNACADQgA3AgQLIANBDGooAgAgARCMAiADQRBqIgMgAkcNAAsLIAAoAigiAEUNGiAAIAEQvycPCyAAQgA3AhQgACgCECABEIwCAkAgACgCBEGAgICAeEYNACABIABBBGoQxiILIAAoAiAiAEUNGSAAIAEQvycPCyAAQgA3AhAgACgCDCIDRQ0YIAAoAgghACADQQJ0IQMDQCAAKAIAIAEQjAIgAEEEaiEAIANBfGoiAw0ADBkLCyAAQgA3AhAPCyAAQQhqEMciDwsgAEIANwIcAkAgACgCDCICRQ0AIAAoAgghAyACQQJ0IQIDQCADKAIAIAEQjAIgA0EEaiEDIAJBfGoiAg0ACwsgACgCGCIDRQ0VIANBBXQhAyAAKAIUQQxqIQADQCAAQXxqQgA3AgAgAEEgaiEAIANBYGoiAw0ADBYLCyAAQgA3AgwgACgCBCABEIwCAkAgACgCGCIDRQ0AIAMgARC/JwsgACgCCCICQgA3AhgCQCACQQhqKAIAIgNFDQAgAkEEaigCACEAIANBAnQhAwNAIAAoAgAgARCMAiAAQQRqIQAgA0F8aiIDDQALCyACQRRqKAIAIgBFDRQgAEEFdCEDIAJBEGooAgBBDGohAANAIABBfGpCADcCACAAQSBqIQAgA0FgaiIDDQAMFQsLIABCADcCFAJAIAAoAgwiAkUNACAAKAIIIQMgAkEobCECA0AgAyABEKwJIANBKGohAyACQVhqIgINAAsLAkACQCAAKAIQIgMoAgBBgICAgHhGDQAgAyABEPQnDAELIAMoAgQgARCMAgsCQCAAKAIgIgNFDQAgAyABEOQZCyAAKAIkIgBFDRMgACABEJE4DwsCQCAALQAcQQJGDQAgAEIANwIQCyAAKAIgIAEQ5AMPCyAAQgA3AgQgACgCDCIADRMMEQsgAEIANwIEDwsgAEIANwIIIABBBGooAgAhAAwRCyAAQgA3AgggAEEEaigCACEADBALIABCADcCGAJAAkAgAC0ANEECRw0AIABBIGoQtCwMAQsgAEIANwIoCyAAQgA3AhAPCyAAQgA3AiAgAEIANwIQIABBKGpCADcCAA8LIABCADcCBA8LIAAoAgQgARDzBw8LIABBBGogARDIIg8LIABBBGogARCkMw8LIABCADcCCCAAKAIEIQAMCQsgAEEEaiABEJA4DwsgAEEEaiABEKQzDwsgAEEEaiABEJoeDwsgAEEEaiABEKQzDwsgAEIANwIQDwsgAEIANwIIAkAgACgCBCIAKAIAQQNGDQAgACABEOwtDwsgAEEEaiABEOUZDwsgAEIANwIECw8LIAMoAgAhAAwACwufEAEMfyMAQTBrIgYkACACQX5qIQcCQAJAAkACQANAAkACQAJAAkACQAJAIAFBIUkNACAEDQEgACABIAIgA0EBEPkCDAoLIAFBAkkNCSABQRBqIANLDQYgAUEBdiEIIAFBD0sNAQJAIAFBB00NACAAIAIQvQogACAIQQF0IglqIAIgCWoQvQpBBCEKDAkLIAIgAC8AADsAAEEBIQogAiAIQQF0IglqIAAgCWovAAA7AAAMCAsgACABQXhxaiEJIAAgAUEDdiILQQ5saiEMAkACQCABQcAASQ0AIAAgCSAMIAsQrQ4hDQwBCwJAAkAgAC0AACILIAktAAAiCEYNACALIAhJIQoMAQsgAC0AASAJLQABSSEKCwJAAkAgCyAMLQAAIg5GDQAgCyAOSSELDAELIAAtAAEgDC0AAUkhCwsgACENIAogC0cNAAJAAkAgCCAORg0AIAggDkkhCwwBCyAJLQABIAwtAAFJIQsLIAwgCSAKIAtzGyENCyAEQX9qIQQgBiANLQABIgw6ABcgBiANLQAAIgk6ABYgDSAAa0EBdiEPIAVFDQECQCAFLQAAIgsgCUH/AXEiCUcNACAFLQABIAxB/wFxTw0DDAILIAsgCUkNAQwCCyAAIAIgAiABQQF0aiIJELoxIAAgCEEBdCIMaiACIAxqIAlBEGoQujFBCCEKDAYLIAEgA0sNAyACIAFBAXQiEGohDEEAIQsgACEJIA8hEQNAIABBACARQX1qIgogCiARSxtBAXRqIQ4CQANAIAkgDk8NAQJAAkAgCS0AACIIIA0tAAAiCkYNACAIIApJIQgMAQsgCS0AASANLQABSSEICyACIAxBfmogCBsgC0EBdGogCS8AADsAACALIAhqIQsCQAJAIAktAAIiCCAKRg0AIAggCkkhCgwBCyAJLQADIA0tAAFJIQoLIAIgDEF8aiAKGyALQQF0aiAJLwACOwAAIAsgCmohCwJAAkAgCS0ABCIIIA0tAAAiCkYNACAIIApJIQgMAQsgCS0ABSANLQABSSEICyACIAxBemogCBsgC0EBdGogCS8ABDsAACALIAhqIQsCQAJAIAktAAYiCCAKRg0AIAggCkkhCgwBCyAJLQAHIA0tAAFJIQoLIAIgDEF4aiIMIAobIAtBAXRqIAkvAAY7AAAgCUEIaiEJIAsgCmohCwwACwsgACARQQF0aiEOAkADQAJAIAkgDkkNACARIAFGDQIgDEF+aiIMIAtBAXRqIAkvAAA7AAAgCUECaiEJIAEhEQwDCwJAAkAgCS0AACIKIA0tAAAiCEYNACAKIAhJIQoMAQsgCS0AASANLQABSSEKCyACIAxBfmoiDCAKGyALQQF0aiAJLwAAOwAAIAlBAmohCSALIApqIQsMAAsLCyABIAtrIQggByAQaiEMIAshCSAAIAIgC0EBdCIKEN8KIApqIg4hCgJAA0AgASAJRg0BIAogDC8AADsAACAJQQFqIQkgDEF+aiEMIApBAmohCgwACwsgC0UNACABIAtPDQEgBkEANgIoIAZBATYCHCAGQcC/oQE2AhggBkIENwIgIAZBGGpB7KehARCtLgALIAEgA0sNAiACIAFBAXQiEWohDEEAIQsgACEJA0AgAEEAIA9BfWoiCiAKIA9LG0EBdGohDgJAA0AgCSAOTw0BAkACQCANLQAAIgogCS0AACIIRg0AIAogCEkhCAwBCyANLQABIAktAAFJIQgLIAxBfmogAiAIGyALQQF0aiAJLwAAOwAAIAsgCEEBc2ohCwJAAkAgCiAJLQACIghGDQAgCiAISSEKDAELIA0tAAEgCS0AA0khCgsgDEF8aiACIAobIAtBAXRqIAkvAAI7AAAgCyAKQQFzaiELAkACQCANLQAAIgogCS0ABCIIRg0AIAogCEkhCAwBCyANLQABIAktAAVJIQgLIAxBemogAiAIGyALQQF0aiAJLwAEOwAAIAsgCEEBc2ohCwJAAkAgCiAJLQAGIghGDQAgCiAISSEKDAELIA0tAAEgCS0AB0khCgsgDEF4aiIMIAIgChsgC0EBdGogCS8ABjsAACAJQQhqIQkgCyAKQQFzaiELDAALCyAAIA9BAXRqIQ4CQANAAkAgCSAOSQ0AIA8gAUYNAiACIAtBAXRqIAkvAAA7AAAgCUECaiEJIAtBAWohCyAMQX5qIQwgASEPDAMLAkACQCANLQAAIgogCS0AACIIRg0AIAogCEkhCgwBCyANLQABIAktAAFJIQoLIAxBfmoiDCACIAobIAtBAXRqIAkvAAA7AAAgCUECaiEJIAsgCkEBc2ohCwwACwsLIAcgEWohDCABIAtrIgohCSAAIAIgC0EBdCINEN8KIA1qIgAhDQJAA0AgCUUNASANIAwvAAA7AAAgCUF/aiEJIAxBfmohDCANQQJqIQ0MAAsLIAEgC0kNA0EAIQUgCiEBDAELIA4gCCACIAMgBCAGQRZqEI0CIAshAQwACwsACyALIAFB/KehARCiGwALIAZCgICAgCA3AyAgBiAIrUIghjcDGEEAIAprIQ4gASAIayERIAAgCkEBdCIJaiEPIAIgCWohBANAIAZBCGogBkEYahDNJAJAIAYoAggNACACIAEgABCjCgwCCyAOIBEgCCAGKAIMIgkbIgwgCiAMIApLG2ohDCAPIAlBAXQiDWohCyAEIA1qIQkgAiANaiENA0AgDEUNASAJIAsvAAA7AAAgDSAJEK4SIAxBf2ohDCALQQJqIQsgCUECaiEJDAALCwsgBkEwaiQAC5YQAQx/IwBBMGsiBiQAIAJBeGohBwJAAkACQAJAA0ACQAJAAkACQAJAAkAgAUEhSQ0AIAQNASAAIAEgAiADQQEQ+gIMCgsgAUECSQ0JIAFBEGogA0sNBiABQQF2IQggAUEPSw0BAkAgAUEHTQ0AIAAgAhC+CiAAIAhBA3QiCWogAiAJahC+CkEEIQoMCQsgAiAAKQIANwIAIAIgCEEDdCIJaiAAIAlqKQIANwIAQQEhCgwICyAAIAFBA3YiC0E4bGohCSAAIAtBBXRqIQwCQAJAIAFBwABJDQAgACAMIAkgCxCuDiENDAELAkACQCAAKAIAIgsgDCgCACIIRg0AIAsgCEkhCgwBCyAAKAIEIAwoAgRJIQoLAkACQCALIAkoAgAiDkYNACALIA5JIQsMAQsgACgCBCAJKAIESSELCyAAIQ0gCiALRw0AAkACQCAIIA5GDQAgCCAOSSELDAELIAwoAgQgCSgCBEkhCwsgCSAMIAogC3MbIQ0LIARBf2ohBCAGIA0oAgQiDDYCFCAGIA0oAgAiCTYCECANIABrQQN2IQ8gBUUNAQJAIAUoAgAiCyAJRw0AIAUoAgQgDE8NAwwCCyALIAlJDQEMAgsgACACIAIgAUEDdGoiCRC7MSAAIAhBA3QiDGogAiAMaiAJQcAAahC7MUEIIQoMBgsgASADSw0DIAIgAUEDdCIQaiEMQQAhCyAAIQkgDyERA0AgAEEAIBFBfWoiCiAKIBFLG0EDdGohDgJAA0AgCSAOTw0BAkACQCAJKAIAIgggDSgCACIKRg0AIAggCkkhCAwBCyAJKAIEIA0oAgRJIQgLIAIgDEF4aiAIGyALQQN0aiAJKQIANwIAIAsgCGohCwJAAkAgCSgCCCIIIApGDQAgCCAKSSEKDAELIAkoAgwgDSgCBEkhCgsgAiAMQXBqIAobIAtBA3RqIAkpAgg3AgAgCyAKaiELAkACQCAJKAIQIgggDSgCACIKRg0AIAggCkkhCAwBCyAJKAIUIA0oAgRJIQgLIAIgDEFoaiAIGyALQQN0aiAJKQIQNwIAIAsgCGohCwJAAkAgCSgCGCIIIApGDQAgCCAKSSEKDAELIAkoAhwgDSgCBEkhCgsgAiAMQWBqIgwgChsgC0EDdGogCSkCGDcCACAJQSBqIQkgCyAKaiELDAALCyAAIBFBA3RqIQ4CQANAAkAgCSAOSQ0AIBEgAUYNAiAMQXhqIgwgC0EDdGogCSkCADcCACAJQQhqIQkgASERDAMLAkACQCAJKAIAIgogDSgCACIIRg0AIAogCEkhCgwBCyAJKAIEIA0oAgRJIQoLIAIgDEF4aiIMIAobIAtBA3RqIAkpAgA3AgAgCUEIaiEJIAsgCmohCwwACwsLIAEgC2shCCAHIBBqIQwgCyEJIAAgAiALQQN0IgoQ3wogCmoiDiEKAkADQCABIAlGDQEgCiAMKQIANwIAIAlBAWohCSAMQXhqIQwgCkEIaiEKDAALCyALRQ0AIAEgC08NASAGQQA2AiggBkEBNgIcIAZBwL+hATYCGCAGQgQ3AiAgBkEYakHsp6EBEK0uAAsgASADSw0CIAIgAUEDdCIRaiEMQQAhCyAAIQkDQCAAQQAgD0F9aiIKIAogD0sbQQN0aiEOAkADQCAJIA5PDQECQAJAIA0oAgAiCiAJKAIAIghGDQAgCiAISSEIDAELIA0oAgQgCSgCBEkhCAsgDEF4aiACIAgbIAtBA3RqIAkpAgA3AgAgCyAIQQFzaiELAkACQCAKIAkoAggiCEYNACAKIAhJIQoMAQsgDSgCBCAJKAIMSSEKCyAMQXBqIAIgChsgC0EDdGogCSkCCDcCACALIApBAXNqIQsCQAJAIA0oAgAiCiAJKAIQIghGDQAgCiAISSEIDAELIA0oAgQgCSgCFEkhCAsgDEFoaiACIAgbIAtBA3RqIAkpAhA3AgAgCyAIQQFzaiELAkACQCAKIAkoAhgiCEYNACAKIAhJIQoMAQsgDSgCBCAJKAIcSSEKCyAMQWBqIgwgAiAKGyALQQN0aiAJKQIYNwIAIAlBIGohCSALIApBAXNqIQsMAAsLIAAgD0EDdGohDgJAA0ACQCAJIA5JDQAgDyABRg0CIAIgC0EDdGogCSkCADcCACAJQQhqIQkgC0EBaiELIAxBeGohDCABIQ8MAwsCQAJAIA0oAgAiCiAJKAIAIghGDQAgCiAISSEKDAELIA0oAgQgCSgCBEkhCgsgDEF4aiIMIAIgChsgC0EDdGogCSkCADcCACAJQQhqIQkgCyAKQQFzaiELDAALCwsgByARaiEMIAEgC2siCiEJIAAgAiALQQN0Ig0Q3wogDWoiACENAkADQCAJRQ0BIA0gDCkCADcCACAJQX9qIQkgDEF4aiEMIA1BCGohDQwACwsgASALSQ0DQQAhBSAKIQEMAQsgDiAIIAIgAyAEIAZBEGoQjgIgCyEBDAALCwALIAsgAUH8p6EBEKIbAAsgBkKAgICAIDcDICAGIAitQiCGNwMYQQAgCmshDiABIAhrIREgACAKQQN0IglqIQ8gAiAJaiEEA0AgBkEIaiAGQRhqEM0kAkAgBigCCA0AIAIgASAAEKcKDAILIA4gESAIIAYoAgwiCRsiDCAKIAwgCksbaiEMIA8gCUEDdCINaiELIAQgDWohCSACIA1qIQ0DQCAMRQ0BIAkgCykCADcCACANIAkQxBIgDEF/aiEMIAtBCGohCyAJQQhqIQkMAAsLCyAGQTBqJAAL6BICD38BfiMAQcABayINJAAgDSAEOgA4IA0gAjYCNCANIAY6ADkgDSAIOgA6IA0gCToAOyANIAo6ADwgDSALOgA9IA0gDDoAPgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBRC2Gw0AIAUoAgBBBUcNBCAKDQEMAwsgDSAFEIgtIA0oAgQhCCANKAIAIQogDUHfgICAeDYCQCAKIAggDUHAAGoQ/iIhCAJAIAEQsRYiCkUNACAKKAIAQSRHDQAgASABKQMYNwNQIAEoAgAhCiABQSU2AgAgCkEkRw0CIAEgASgCBBDjEwsgAEENNgIAIAAgCDYCBAwECyANQShqIAUQiC0gDSgCLCEKIA0oAighBEHFq6EBQQcQgyghHCANQeGAgIB4NgJAIA0gHDcDSCABIAQgCiANQcAAahCIKgwBC0GUzqEBQShB2OGZARDTJwALIAtFDQAgDUEgaiAFEIgtIA0oAiQhCiANKAIgIQtB0quhAUEIEIMoIRwgDUHhgICAeDYCQCANIBw3A0ggASALIAogDUHAAGoQiCoLAkACQAJAIAEtANQCQQJHDQAgCEUNAQsgDUEAOgA/DAELIA1BqAFqQQApA+C6mQE3AwAgDUGgAWpBACkD2LqZATcDACANQQApA9C6mQE3A5gBAkAgARCxFiANQZgBahDLNSIIRQ0AIAEgASkDGDcDUCABKAIAIQogAUElNgIAIA1BwABqQQxqIAFBDGopAgA3AgAgDUHAAGpBFGogAUEUaigCADYCACANIAEpAgQ3AkQgDSAKNgJAIA1BwABqEOIQCyANIAg6AD8gDUGYAWoQ4hALIA1BGGogARC5FyANKAIcIQgCQCANKAIYDQAgASABKALMAiILQcCAEHIQ4Q8gDUHAAGpBCGogBUEIaikDADcDACANQcAAakEQaiAFQRBqKQMANwMAIA1BwABqQRhqIAVBGGopAwA3AwAgDUHoAGogA0EIaigCADYCACANIAc2AmwgDSAINgKUASANIAUpAwA3A0AgDSADKQIANwNgIA0gDUE0ajYCcCANIA1BOWo2AnQgDSANQTxqNgKQASANIA1BO2o2AowBIA0gDUE6ajYCiAEgDSANQT9qNgKEASANIA1BPmo2AoABIA0gDUE9ajYCfCANIA1BOGo2AnhBACEFIA1BmAFqQRBqQQApA4DlmQE3AwAgDUGYAWpBCGpBACkD+OSZATcDACANQQApA/DkmQE3A5gBIAEQsRYgDUGYAWoQyzUhCiANQZgBahDiEAJAAkAgCkUNAAJAIAEQsRYiBQ0AIAEoArACIQUgDUGAgICAeDYCmAEgBSAFIA1BmAFqEP4iIQUMCQsCQCAFKAIAQSRHDQAgASABKQMYNwNQIAEoAgAhBSABQSU2AgACQCAFQSRHDQAgASgCBCEFDAoLQZTOoQFBKEHY4ZkBENMnAAsgASABKQMYNwNQIAEoAgAhBSABQSU2AgAgDUGYAWpBDGogAUEMaikCADcCACANQZgBakEUaiABQRRqKAIANgIAIA0gASkCBDcCnAEgDSAFNgKYASANQZgBahDiEEHw5JkBEOIQIA1BEGogARD+CiANKAIUIQUgDSgCEA0BCwJAIAEQhA4NACANQQhqIAEQ+yAgDSgCDCEKIA0oAgghBCANQfWAgIB4NgKYASABIAQgCiANQZgBahCIKgsgBygCAA0DAkACQAJAIA0oAkBBBUcNAEEDIQRBCCEJIA1BwABqQQhqIQMgDSgCVCEKIA0tADhBA0cNAQwICyANKAI0IgMgASgCVCIKIAMgCkkbIQYgAyAKIAMgCksbIQIgDS0APSEDIA0oAlwhDiANKAJYIQ8gDSgCVCEHIA0oAlAhDCANKAJMIQogBUUNBiADQQFxDQEMBgsgASgCVCEEIA0oAjQhAiANQbWBgIB4NgKYASABIAIgBCACIARJGyIEIAogBCAKSRsgBCAKIAQgCksbIA1BmAFqEIgqIA0tADghBAwGCyANQaKBgIB4NgKYASABIAYgAiANQZgBahCIKiANLQA9IQMMBAsgAEENNgIAIAAgBTYCBAwHCyAAQQ02AgAgACAINgIECyAFEL8yIAMQnTcMBwsgACADKQIANwIwIABBOGogA0EIaigCADYCACANQZgBakEMaiANQcAAakEIaikDADcCACANQawBaiANQdAAaikDADcCACANQbQBaiANQdgAaikDADcCACANIA0pA0A3ApwBIAEoAlQhAyANKAI0IQogDS0AOSEEIA0tAD0hAiANLQA+IQYgDS0APyEJIA0tADghDCAAQQw2AgAgAEEEaiANQZgBakEkEN8KGiAAIAw6AEggACAJOgBHIAAgBjoARiAAIAI6AEUgACAEOgBEIAAgCDYCQCAAIAU2AjwgACAKIAMgCiADSxs2AiwgACAKIAMgCiADSRs2AigMBQsgDUGkAWogDUHAAGpBCGooAgA2AgAgDSANKQNANwKcASAFQRB2IRAgBUEIdiERQQchCSANLQA/IRIgDS0APCETIA0tADshFCANLQA+IRUgDS0AOiEWIA0tADghFyANLQBrIRggDS0AaiEZIA0tAGkhGiANLQBoIQQgDSkDYCEcIA0tADkhGwwBCyANQaQBaiADQQhqKAIANgIAIA0gAykCADcCnAEgDSgCNCIDIAEoAlQiAiADIAJJGyEMIAMgAiADIAJLGyEHQQAhDyANLQA/IREgDS0APiEYIA0tADohGSANKQJkIRwgDSgCYCECIA0tADkhGiAIIQYgBSEOIA0tADshBQsgACAJNgIAIAAgDSkCmAE3AgQgACAXOgBLIAAgEjoASiAAIBM6AEkgACAUOgBIIAAgFToARyAAIBY6AEYgACADOgBFIAAgGzoARCAAIAg2AkAgACAQOwE+IAAgEToAPSAAIAU6ADwgACAYOgA7IAAgGToAOiAAIBo6ADkgACAEOgA4IAAgHDcDMCAAIAI2AiwgACAGNgIoIAAgDjYCJCAAIA82AiAgACAHNgIcIAAgDDYCGCAAIAo2AhQgAEEMaiANQaABaikCADcCAAwCCyAA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IANBiAFqIg1BACkDoLyZATcDACADQQApA5i8mQE3A4ABIAEQsRYgA0GAAWoQyzUhDCADQYABahDiECAMDQIgC0EAKQPIu5kBNwMAIA1BACkDwLuZATcDACADQQApA7i7mQE3A4ABIAEQsRYgA0GAAWoQyzUaIANBgAFqEOIQDAcLIAEQ8zEhDQJAIAEQsRYiDA0AIAEoArACIQEgA0GAgICAeDYCgAEgASABIANBgAFqEP4iIQsMCgsCQCAMKAIAQSRHDQAgASABKQMYNwNQIAEoAgAhDCABQSU2AgACQCAMQSRHDQAgASgCBCELDAsLQZTOoQFBKEHY4ZkBENMnAAsgBiAEKQIANwIAIAEgASkDGDcDUCABKAIAIQwgAUElNgIAIAZBCGoiDiAEQQhqIg8pAgA3AgAgBkEQaiIQIARBEGoiESgCADYCACADIAw2AoABIANBgAFqEOIQQai9mQEQ4hAgA0G4AWpBEGoiDEEAKQPIwZkBNwMAIANBuAFqQQhqIhJBACkDwMGZATcDACADQQApA7jBmQE3A7gBAkAgARCxFiADQbgBahDLNQ0AIANBuAFqEOIQIANBuAFqIAFBAEEAEO4BAkAgAy0AzAFBAkYNACAJIAwpAwA3AwAgCiASKQMANwMAIAMgAykDuAE3A4ABQcAAQQgQzTMiDEEaNgIAIAxBCGogA0GAAWpBOBDfChogA0EFOgCIASADIAw2AoABIANBKGogASADQYABakEAQQEQSCADKAIsIQsgAygCKA0MDAkLIAMoArgBIQsMCwsgBiAEKQIANwIAIAEgASkDGDcDUCABKAIAIQsgAUElNgIAIA4gDykCADcCACAQIBEoAgA2AgAgAyALNgKAASADQYABahDiECADQbgBahDiECADQSBqIAEQiAggAygCJCELIAMoAiANCiADIAs2AkggDEEAKQPQ4JkBNwMAIBJBACkDyOCZATcDACADQQApA8DgmQE3A7gBIAEQsRYgA0G4AWoQyzUNAiADQbgBahDiECADQRhqIAEQ+yAgAygCHCEMIAMoAhghCyADQcwAaiABEN8aIANBkAFqQQApA9DgmQE3AwAgA0GAAWpBCGpBACkDyOCZATcDACADQQE2ArwBIANBpNehATYCuAEgA0IBNwLEASADQaICNgJ4IANBACkDwOCZATcDgAEgAyADQfQA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IAEoAoACIg4oAggNByAOQX82AgggBygCECEKIA5BDGogBygCFCILEKEwIA4oAhAgDigCFEECdGogCiALQQJ0EN8KGiAOIAsgDigCFGo2AhQgB0EANgIUIA4gDigCCEEBajYCCCAHIAcoAghBAWo2AggLIAEgBkHAAHI2ApACIANBCGogARCHBSADKAIMIQcCQAJAAkACQCADKAIIDQACQCAFIAMoAhxHDQAgA0EcahDODiADKAIgIQ0LIA0gCGogBzYCACADIAVBAWoiCjYCJCABIAYQ3BEgARDtDiIHRQ0BIActAABBA0YNAyAFQQFqIQUMAgsgASAGENwRDAoLIAVBAWohBQsgAUHUAmogAUHcAmogAS0A4QJBAkYiBhsoAgAhByABQdACaiABQdgCaiAGGygCACEGIANB3ABqIAEQygsgA0EBNgKUASADQaTXoQE2ApABIANCATcCnAEgA0HoBDYChAEgA0EDOgCPASADIANBgAFqNgKYASADIANBiAFqNgKAASADIANBjwFqNgKIASADQegAaiADQZABahCqEyADQfwAaiADQeQAaigCADYCACADIAMpAlw3AnQgBiAHIAYgB0kbIAYgByAGIAdLGyADQegAahD+IiEHIAEQ7Q4iBkUNCCAGLQAAQZsBRw0IIAFBAjoA4QIgASABKQPYAjcD0AIgASABEN8YEPUYDAgLIAFBAjoA4QIgASABKQPYAjcD0AIgA0GQAWogASACENkGIAMoApABIQcgAy0AqAEiDkECRg0BIANBuAFqQRBqIg8gCUEQaigCADYCACADQbgBakEIaiIQIAlBCGopAgA3AwAgAyAJKQIANwO4ASADIAwoAAA2ArABIAMgDEEDaigAADYAswECQCADKAJMIgsgAygCREcNACADQcQAahDPDgsgAygCSCIGIAtBBXRqIgUgBzYCACAFIAMpA7gBNwIEIAUgDjoAGCAFIAMoArABNgAZIAVBDGogECkDADcCACAFQRRqIA8oAgA2AgAgBUEcaiADKACzATYAACADIAtBAWoiCzYCTCAIQQRqIQggCiEFIA5BAXFFDQALIAMoAiAhByADKAIcIgVBgICAgHhGDQggAygCRCEIDAkLIAohBQwFC0EEIQFBACEFDAULAAtBnISbARDqIgALQYyEmwEQ6SIAC0H8g5sBEOkiAAsgAygC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IAJB0AFqNgKkAyACQfACaiACQYgDahDmIiACQdABahDhECACQYQDaiACQeQCakEIaigCADYCACACIAIpAuQCNwL8AiAHIAYgAkHwAmoQ/iIhCEGAgICAeCEGIAEQsBYiB0UNBCAHKAIAQSRHDQQgASABKQMYNwNQIAEoAgAhByABQSU2AgAgB0EkRw0CIAEgASgCBBDjEwwECyACQSBqIAEQ+yAgAigCJCEGIAIoAiAhByABEMg1IAFBADoAICABQRBqQQApA7jkmQE3AwAgAUEIakEAKQOw5JkBNwMAIAFBACkDqOSZATcDACABIAdBAWoiByAGIAcgBksbNgIcIAEgByAGIAcgBkkbNgIYDAILIAEgASkDGDcDUCABKAIAIQYgAUElNgIAIAJB0AFqQQxqIAFBDGopAgA3AgAgAkHQAWpBFGogAUEUaigCADYCACACIAEpAgQ3AtQBIAIgBjYC0AEgAkHQAWoQ4RAgAkGIA2oQ4RAMAQtBlM6hAUEoQdjhmQEQ0ycACyACQQA2AuACIAJCgICAgMAANwLYAiABQQRqIQYgAkHQAWpBBHIhByACQYgDakEQaiEJIAJBiANqQQhqIQoCQANAIAJB0AFqIAFBBBDNCQJAAkACQAJAIAItANABDQACQCACLQDRAQ0AIAEQ7zEaIAJBGGogARCxAyACKAIcIQggAigCGA0CIAJB2AJqIAgQmywgCUEAKQOYjqEBIgs3AwAgCkEAKQOQjqEBIgw3AwAgAkEAKQOIjqEBIg03A4gDIAEQsBYgAkGIA2oQxTUNAyACQYgDahDhECACQdABaiABQQQQzQkgAi0A0AENASACLQDRAQ0AIAkgCzcDACAKIAw3AwAgAiANNwOIAyABELAWIAJBiANqEMU1DQQgAkGIA2oQ4RAgAkEQaiABEPsgIAIoAhQhBiACKAIQIQcgAkHkAmogARDfGiACQeABakEAKQOYjqEBNwMAIAJB0AFqQQhqQQApA5COoQE3AwAgAkEBNgKMAyACQaTXoQE2AogDIAJCATcClAMgAkGiAjYCqAMgAkEAKQOIjqEBNwPQASACIAJBpANqNgKQAyACIAJBrANqNgKkAyACIAJB0AFqNgKsAyACQfACaiACQYgDahDmIiACQdABahDhECACQYQDaiACQeQCakEIaigCADYCACACIAIpAuQCNwL8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ARDzMSEFIANB0ABqQRBqIgZBACkDyMGZASIRNwMAIANB0ABqQQhqIgdBACkDwMGZASISNwMAIANBACkDuMGZASITNwNQAkACQAJAAkACQAJAAkACQAJAAkAgARCxFiADQdAAahDLNQ0AIANB0ABqEOIQIANBGGogARD7ICADKAIcIQggAygCGCEJIANBLGogARDfGiADQfgAakEQaiARNwMAIANB+ABqQQhqIBI3AwAgA0EBNgJUIANBpNehATYCUCADQgE3AlwgA0GiAjYCJCADIBM3A3ggAyADQSBqNgJYIAMgA0HsAGo2AiAgAyADQfgAajYCbCADQThqIANB0ABqEJkWIANB+ABqEOIQIANBzABqIANBLGpBCGooAgA2AgAgAyADKQIsNwJEIAkgCCADQThqEP4iIQgCQCABELEWIglFDQAgCSgCAEEkRw0AIAEgASkDGDcDUCABKAIAIQkgAUElNgIAIAlBJEcNAiABIAEoAgQQ4xMLIABBgICAgHg2AgAgACAINgIEDAcLIAEgASkDGDcDUCABKAIAIQggAUElNgIAIANB+ABqQQxqIAFBDGopAgA3AgAgA0H4AGpBFGogAUEUaigCADYCACADIAEpAgQ3AnwgAyAINgJ4IANB+ABqEOIQIANB0ABqEOIQIANBEGpBAkEEQRAQ4yIgA0EANgIoIAMgAygCFCIKNgIkIAMgAygCEDYCICABQQRqIQsgA0H4AGpBBHIhDEEIIQhBACEJQQEhDQJAA0AgARCxFkUNBSADQfgAakEQaiIOQQApA9DgmQEiETcDACADQfgAakEIaiIPQQApA8jgmQEiEjcDACADQQApA8DgmQEiEzcDeCABELEWIANB+ABqEMs1IRAgA0H4AGoQ4hAgEA0FAkACQCANQQFxDQAgBkEAKQOYjqEBNwMAIAdBACkDkI6hATcDACADQQApA4iOoQE3A1ACQCABELEWIANB0ABqEMs1DQAgA0HQAGoQ4hAgA0EIaiABEPsgIAMoAgwhCCADKAIIIQkgA0EsaiABEN8aIANBiAFqQQApA5iOoQE3AwAgA0H4AGpBCGpBACkDkI6hATcDACADQQE2AlQgA0Gk16EBNgJQIANCATcCXCADQaICNgJwIANBACkDiI6hATcDeCADIANB7ABqNgJYIAMgA0H0AGo2AmwgAyADQfgAajYCdCADQThqIANB0ABqEJkWIANB+ABqEOIQIANBzABqIANBLGpBCGooAgA2AgAgAyADKQIsNwJEIAkgCCADQThqEP4iIQgCQCABELEWIglFDQAgCSgCAEEkRw0AIAEgASkDGDcDUCABKAIAIQkgAUElNgIAIAlBJEcNByABIAEoAgQQ4xMLIABBgICAgHg2AgAgACAINgIEDAkLIAwgCykCADcCACABIAEpAxg3A1AgASgCACENIAFBJTYCACAMQQhqIAtBCGopAgA3AgAgDEEQaiALQRBqKAIANgIAIAMgDTYCeCADQfgAahDiECADQdAAahDiECAOIBE3AwAgDyASNwMAIAMgEzcDeCABELEWIANB+ABqEMs1IQ0gA0H4AGoQ4hAgDQ0BCyABIAEoAswCIhBBwAByEOEPIANB+ABqIAEQoQkgAygCfCEOIAMoAngiD0ECRg0CIAMpAoABIRECQCAJIAMoAiBHDQAgA0EgahDcJiADKAIkIQoLIAogCGoiDSARNwIAIA1BfGogDjYCACANQXhqIA82AgAgAyAJQQFqIgk2AiggASAQEKA+IAhBEGohCEEAIQ0MAQsLIAINAwwECyAAQYCAgIB4NgIAIAAgDjYCBCABIBAQoD4MBAtBlM6hAUEoQdjhmQEQ0ycAC0GUzqEBQShB2OGZARDTJwALIAEtANQCQQJGDQAgAS0A2QJBAXENACABKAJUIQggA0HqgICAeDYCeCAFIAggBSAISRsgBSAIIAUgCEsbIANB+ABqEP4iIQgCQCABELEWIglFDQAgCSgCAEEkRw0AIAEgASkDGDcDUCABKAIAIQkgAUElNgIAIAlBJEcNBSABIAEoAgQQ4xMLIABBgICAgHg2AgAgACAINgIEDAELIANB0ABqQRBqQQApA9DgmQEiETcDACADQdAAakEIakEAKQPI4JkBIhI3AwAgA0EAKQPA4JkBIhM3A1AgARCxFiADQdAAahDLNQ0BIANB0ABqEOIQIAMgARD7ICADKAIEIQggAygCACEJIANBLGogARDfGiADQfgAakEQaiARNwMAIANB+ABqQQhqIBI3AwAgA0EBNgJUIANBpNehATYCUCADQgE3AlwgA0GiAjYCcCADIBM3A3ggAyADQewAajYCWCADIANB9ABqNgJsIAMgA0H4AGo2AnQgA0E4aiADQdAAahCZFiAD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QQIhCAsgAi0AzAFBAXEhASAIIAVqIQUMAAsLIAIoAvwBIg0gAigC2AEiDmshDyANQX9qIRAgAigC0AEhESACKQPIASEaIAIoAtwBIQUgAigC+AEhDCACKAL0ASELIAIoAvABIRIgAigC5AEiEyEBA0AgESARIAEgESABSxsgE0F/RiIUGyIVIA0gFSANSxshFkEAIAEgFBshFwNAIBAgBWoiASALTw0EAkACQCAaIBIgAWoxAACIQgGDUA0AIBIgBWohGCAVIQECQAJAAkADQAJAIBYgAUcNACARIQEDQCAXIAFPDQ4gAUF/aiIBIA1PDQMgASAFaiIIIAtPDQQgDCABai0AACASIAhqLQAARg0ACyAOIAVqIQUgFA0HIA8hAQwICyAFIAFqIhkgC08NAyAYIAFqIQggDCABaiEHIAFBAWohASAHLQAAIAgtAABGDQALIBkgEWtBAWohBSAUDQUMBAsgASANQeiuoQEQoRsACyAIIAtB+K6hARChGwALIAsgFSAFaiICIAsgAksbIAtBiK+hARChGwALIAUgDWohBSAUDQELC0EAIQEMAAsLIAwgCyAFIAtB3LChARCINwALIAJBlAFqIANB0ABqIgVBCGooAgAiBzYCACACQYABakEIaiAHNgIAIAIgBSkCACIaNwKMASACIBo3A4ABIAJBCjYCwAEgACABKAIEIAggAkGAAWogAkHAAWoQvRkMBAsgAkHAAGogCSAKQToQywpBASEIAkAgAigCQEEBRw0AIAJBIGogCSAKIAIoAkQiAUGEnYQBEJ8jIAJBgAFqIAIoAiAgAigCJBDMHCACQRhqIAkgCiABQQFqQZSdhAEQqyIgAkHAAWogAigCGCACKAIcEMwcIAI1AsABQiCGIAI1AogBhCEaIAIpAsQBIRsgAigChAEhBSACKAKAASEHIAJB4ABqIQEMAwsgAkE4aiAJIApBPRDLCgJAIAIoAjhBAUcNACACQTBqIAkgCiACKAI8IgFBpJ2EARCfIyACQYABaiACKAIwIAIoAjQQzBwgAkEoaiAJIAogAUEBakG0nYQBEKsiIAJBwAFqIAIoAiggAigCLBDMHCACNQLAAUIghiACNQKIAYQhGiACKQLEASEbIAIoAoQBIQUgAigCgAEhB0EAIQggAkHgAGohAQwDCyACQcABaiAJIAoQzBwgAikCxAEh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AsABIgIgASgCxAEiChDiLUEuRw0AIAQQpSMgASgC0AEhCEEAIQdBgIDEACEJA0ACQCABKALAASICIAEoAsQBIgoQ4i0iC0HfAEYNAAJAIAtBgIDEAEYNACALQVBqQQpPDQAgBBClIyALIQkgB0H//wNxQQFqIgdB//8DcSAHRg0CCyADQRhqIAQgBSABKALQARDKI0GAgICAeCELAkAgAygCGCICIAMoAhwiChCJLUUNACADQfgAaiACIAoQ4QsgAygCgAEhCiADKAJ8IQIgAygCeCELCyADQfgAaiACIAoQlgEgA0H4AGpBhMmaAUEnQazJmgEQ6yYhDSALIAIQizUgASgCxAEhCiABKALAASECDAILAkACQCACIAoQjioiAkGAgMQARg0AIAJBChDjLUUNACAJEMsjDQAgAhDLI0UNAQsgA0HugICAeDYCeCABIAggA0H4AGoQ3zQLIAQQpSMMAAsLAkACQCACIAoQ4i1BIHJB5QBGDQAgDSEODAELIAQQpSMCQCABKALAASABKALEARDiLSICQYCAxABHDQAgASgC0AEhASADQaWAgIB4NgJ4IAEgASADQfgAahCSLiEBIABCAjcDACAAIAE2AggMAgsCQAJAAkACQAJAAkACQCACQVVqDgMAAQABCyAEEKUjIANB+ABqIAEQkQwgAygCeEEBRw0BDAULIANB+ABqIAEQkQwgAygCeEEBRg0EIAMrA4ABRAAAAAAAAPB/Yg0BRAAAAAAAAAAAIQ4gDUQAAAAAAAAAAGENBQwDCyADKwOAAUQAAAAAAADwf2ENAQsgA0EQaiAEIAUgASgC0AEQyiNBgICAgHghCwJAIAMoAhAiAiADKAIUIgoQiS1FDQAgA0H4AGogAiAKEOELIAMoAoABIQogAygCfCECIAMoAnghCwsgA0H4AGogAiAKEJYBIANB+ABqQbzJmgFBHUHcyZoBEOsmIQ4gCyACEIs1DAMLRAAAAAAAAAAAIQ4gDUQAAAAAAAAAAGENAiACQStHDQILRAAAAAAAAPB/IQ4MAQsgAygCfCEBIABCAjcDACAAIAE2AggMAQsCQCABEIEgIgINACADQQhqIAQgBSABKALQARDKIyAAIAMoAgggAygCDBCDKDcDECAAIA45AwggAEIANwMADAELIABCAjcDACAAIAI2AggLIANBkAFqJAAL/g4C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tAEhBCABQSBqQQhqIAFBCGpBCGopAwA3AwAgAUEgakEQaiABQQhqQRBqKQMANwMAIAEgBDYCOCABQQE6ADwgASABKQMINwMgIAIgAUEgahDPGwwCCyACIAFBCGoQwx4MAQsLIAggEUEAIAdB4MuaARCINwALpQ8BA38CQAJAA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAIADhQAAQIDBAUGBwgJCgsMDQ4PEBESFAALIAFCADcCBA8LIAFCADcCBA8LAkAgASgCBEGAgICAeEcNACABQgA3AhgCQCABKAIQIgJFDQAgASgCDCEDIAJBKGwhAgNAAkACQAJAAkACQCADKAIADgQAAQIDAAsgA0EIaiAAENsyDAMLIANBBGogABDCHQwCCyADQQRqIAAQ7S0MAQsgA0EEaiAAEMUPCyADQShqIQMgAkFYaiICDQALCwJAIAEoAiAiA0UNACADQgA3AgwgAygCCCICRQ0AIAMoAgQiAyACQTBsaiEEA0AgA0IANwIQIANCADcCAAJAIANBIGooAgAiAkUNACAAIAIQxQILAkAgA0EkaigCACICRQ0AIAAgAhDFAgsgA0EwaiIDIARHDQALCyABKAIUIgFCADcCBCABKAIAIQEMEQsgAUIANwIUAkAgASgCDCICRQ0AIAEoAgghAyACQShsIQIDQAJAAkACQAJAAkAgAygCAA4EAAECAwALIANBCGogABDbMgwDCyADQQRqIAAQwh0MAgsgA0EEaiAAEO0tDAELIANBBGogABDFDwsgA0EoaiEDIAJBWGoiAg0ACwsCQCABKAIcIgNFDQAgA0IANwIMIAMoAggiAkUNACADKAIEIgMgAkEwbGohBANAIANCADcCECADQgA3AgACQCADQSBqKAIAIgJFDQAgACACEMUCCwJAIANBJGooAgAiAkUNACAAIAIQxQILIANBMGoiAyAERw0ACwsgASgCECIBQgA3AgQgASgCACEBDBALIAFCADcCCAJAAkAgAS0AJEECRw0AIAEoAhAQoC4MAQsgAUIANwIYCyABKAIoIgFFDREgAUIANwIMIAFBCGooAgAiA0UNESABQQRqKAIAIQEgA0ECdCEDA0AgACABKAIAEMUCIAFBBGohASADQXxqIgMNAAwSCwsgAUIANwIIAkACQCABLQBE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CiANKAIANgIAIA4gCiAGKAIAEL4fIAtBf2ohCyANQQRqIQ0gCkEEaiEKDAALCwsgB0EwaiQAC+EOAQp/IwBBgANrIgIkACACQYgCaiABEJ4nIAIoAogCIQMgAkHIAmogAkGMAmpBOBDfChoCQAJAAkACQAJAAkAgA0EiRw0AIAJBCGogAkHIAmpBOBDfChogARCwCQJAAkAgASgCACgCUCABKAIIIgRGDQAgARDDFEEtRw0BIAEQvApB3QBGDQEgARC8CkEtRg0BAkAgARDKLw0AIABBBGogARDvDSAAQYiAxAA2AgAMBwsgAkGIAmogARCeJyACKAKIAiEDIAJByAJqIAJBjAJqQTgQ3woaIANBIkcNAyACQcAAaiACQcgCakE4EN8KGiACQbABakEIaiACQQhqEMwvIgNBCGooAgA2AgAgAiADKQIANwOwASACQbABakEUaiACQcAAahDMLyIDQRRqKAIANgIAIAIgAykCDDcCvAEgAkHIAmogAkEIakE4EN8KGiACQYgCaiACQcgCaiABKAIEIgMgBBCkESACQcgBakEIaiIFIAJBiAJqQRBqIgYpAgA3AwAgAkHIAWpBEGoiByACQYgCakEYaiIIKQIANwMAIAJByAFqQRhqIgkgAkGoAmoiCigCADYCACACIAIpApACNwPIASACKAKMAiEBIAIoAogCIgtBIkcNBCACQcgCaiACQcAAakE4EN8KGiACQYgCaiACQcgCaiADIAQQpBEgAkHoAWpBCGogBikCADcDACACQegBakEQaiAIKQIANwMAIAJB6AFqQRhqIAooAgA2AgAgAiACKQKQAjcD6AEgAigCjAIhBSACKAKIAiIGQSJHDQUgAkH4AGpBCGogAkHoAWpBCGopAwA3AwAgAkH4AGpBEGogAkHoAWpBEGopAwA3AwAgAkH4AGpBGGogAkHoAWpBGGooAgA2AgAgAkH4AGpBJGogAkGwAWpBCGopAwA3AgAgAkGkAWogAkGwAWpBEGopAwA3AgAgAiACKQPoATcDeCACIAIpA7ABNwKUAQJAIAEgBU0NACACQQI2AogCIABBBGogAyAEIAJBsAFqIAJBiAJqEL0ZIABBiIDEADYCAAwICyAAIAIpA8gBNwIEIABBHGogAkHIAWpBGGooAgA2AgAgAEEUaiACQcgBakEQaikDADcCACAAQQxqIAJByAFqQQhqKQMANwIAIABBJGogAkH4AGpBNBDfChogACAFNgIgIAAgATYCAAwHCyAAQQRqIAEQ7w0gAEGIgMQANgIADAULIAJBLGohBSACQQhqQQRqIQMCQAJAAkACQCACKAIIIgdB/v///wdqIgZBBCAGQQRJGw4FAQAAAgMACyACQZQCaiADQQhqKQIANwIAIAJBnAJqIANBEGopAgA3AgAgAkGkAmogA0EYaikCADcCACACQbQCaiAFQQhqKQIANwIAIAJBvAJqIAVBEGooAgA2AgAgAiAHNgKIAiACIAMpAgA3AowCIAIgBSkCADcCrAIgAkHAAGpBEGogAkGIAmoQzC8iA0EQaikCADcDACACQcAAakEIaiADQQhqKQIANwMAIAIgAykCADcDQCACQQE2AsgCIABBBGogASgCBCAEIAJBwABqIAJByAJqEL0ZIABBiIDEADYCACACQYgCahDVMwwICyAAQYGAxAA2AgAgACADKQIANwIEIABBHGogA0EYaikCADcCACAAQRRqIANBEGopAgA3AgAgAEEMaiADQQhqKQIANwIADAcLIABBhYDEADYCACAAIAMpAgA3AgQgAEEcaiADQRhqKAIANgIAIABBFGogA0EQaikCADcCACAAQQxqIANBCGopAgA3AgAMBgsgACAHNgIEIABBhIDEADYCACAAIAMpAgA3AgggACAFKQIANwIoIABBEGogA0EIaikCADcCACAAQRhqIANBEGopAgA3AgAgAEEgaiADQRhqKQIANwIAIABBMGogBUEIaikCADcCACAAQThqIAVBEGooAgA2AgAMBQsgAigCxAIhASAAQQhqIAJByAJqQTgQ3woaIAAgATYCQCAAIAM2AgQgAEGIgMQANgIADAQLIAIoAsQCIQEgAEEIaiACQcgCakE4EN8KGiAAIAE2AkAgACADNgIEIABBiIDEADYCAAwCCyAAIAIpAqwCNwIoIABBwABqIAJBxAJqKAIANgIAIABBOGogAkG8AmopAgA3AgAgAEEwaiACQbQCaikCADcCACAAQSRqIAkoAgA2AgAgAEEcaiAHKQMANwIAIABBFGogBSkDADcCACAAIAIpA8gBNwIMIAAgATYCCCAAIAs2AgQgAEGIgMQANgIAIAJBwABqENUzDAILIAAgAikCrAI3AiggAEHAAGogAkHEAmoo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AkACQAJAIAMtAKgBDQACQCADKAKsASIIDQBBACEFDAILAkAgCCADKAKwASIJQdy7hwFBEBCgMQ0AAkAgCCAJQey7hwFBBhCgMQ0AIANBqAFqIAggCRDyDSADLQCoAQ0CQQEhBSADKAKsASIKRQ0DIANBwABqIAogAygCsAEgAygCyAEiCyADKALMARDvECADKAJAIgpFDQMgAygCRCEMQQMhBQwECyADQagBaiADKALIASILIAMoAswBEIwZIAMtAKgBDQECQCADKAKsASIIRQ0AIAMoArABIQlBAiEFDAQLQQEhBQwCCyADQagBaiADKALIASILIAMoAswBEN8PIAMtAKgBDQBBASEFIAMoAqwBIghFDQEgAygCsAEhCQwCCyADLQCpASEFCyADKALEASADKALIARD2OSADKAK4ASAGEPY5DAMLIAMgDDYCkAEgAyAKNgKMASADIAk2AogBIAMgCDYChAEgAyAFNgKAASADKALEASALEPY5IAMoArgBIAYQ9jkMAQsgA0GAAWogAigCCCACKAIMEOEKIAJBHGohBwsgAygCgAEiBUEERw0BIAMtAIQBIQULIAMgBToAdCADQYCAgIB4NgJwDAELIAMoAogBIQggAygChAEhBgJAAkACQAJAIAUOBAMCAQADCyADKAKQASEJIAMoAowBIQsCQAJAAkACQAJAAkACQCAGIAhB+LuHAUEDEKAxDQAgBiAIQfu7hwFBERCgMQ0BIAYgCEGMvIcBQRYQoDENAiAGIAhBoryHAUEOEKAxDQMgBiAIQbC8hwFBChCgMQ0EIANBgICAgHg2AnAgA0EAOgB0DAoLIANBqAFqEIMuQdB8IQUDQCAFRQ0FIAsgCSAFQeibigFqKAIAIAVB7JuKAWooAgAQoDENBiAFQRBqIQUMAAsLIANBGGpBmNGOAUGqASALIAkQiBEgA0GAAWogAygCGCADKAIcEP0yAkAgAygCgAFBgICAgHhHDQAgA0GAgICAeDYCcCADQQE6AHQMCQsgA0HwAGpBCGogA0GAAWpBCGopAgA3AwAgAyADKQKAATcDcAwICyADQSBqQdyolQFBDSALIAkQiBEgA0GAAWogAygCICADKAIkEP0yAkAgAygCgAFBgICAgHhHDQAgA0GAgICAeDYCcCADQQE6AHQMCAsgA0HwAGpBCGogA0GAAWpBCGopAgA3AwAgAyADKQKAATcDcAwHCyADQShqQdSKlwFBDiALIAkQiBEgA0GAAWogAygCKCADKAIsEP0yAkAgAygCgAFBgICAgHhHDQAgA0GAgICAeDYCcCADQQE6AHQMBwsgA0HwAGpBCGogA0GAAWpBCGopAgA3AwAgAyADKQKAATcDcAwGCyADQTBqQfTtlQFBEiALIAkQiBEgA0GAAWogAygCMCADKAI0EP0yAkAgAygCgAFBgICAgHhHDQAgA0GAgICAeDYCcCADQQE6AHQMBgsgA0HwAGpBCGogA0GAAWpBCGopAgA3AwAgAyADKQKAATcDcAwFCyADQYCAgIB4NgJwIANBAToAdCADKAKoASADKAKsARCCOgwECyAFQcADaiEGQbiYigEhBQNAAkAgBg0AIANB8ABqQQhqIANBqAFqQQhqKQIANwMAIAMgAykCqAE3A3AMBQsgA0GAAWogBSgCCCAFKAIMEIkRIANBqAFqIANBgAFqEOEnIAMoAoABIAMoAoQBEII6IAZBcGohBiAFQRBqIQUMAAsLIANBEGpBwPONAUGqASAGIAgQiBEgA0GAAWogAygCECADKAIUEP0yAkAgAygCgAFBgICAgHhHDQAgA0GAgICAeDYCcCADQQE6AHQMAwsgA0HwAGpBCGogA0GAAWpBCGopAgA3AwAgAyADKQKAATcDcAwCCyADQfAAaiAGIAgQoAsMAQsCQCAGIAhBz8WIAUEOEKAxDQACQCAGIAhBlJWIAUELEKAxDQAgA0EIakHUypQBQcEAIAYgCBCIESADQYABaiADKAIIIAMoAgwQ/TICQCADKAKAAUGAgICAeEcNACADQYCAgIB4NgJwIANBADoAdAwDCyADQfAAakEIaiADQYABakEIaikCADcDACADIAMpAoABNwNwDAILIANB8ABqEKI7DAELIANB8ABqEKM7CyADQcgAaiABKAIEIAEoAgggByADQfAAahDeJgJAAkAgAygCSEGAgICAeEcNACADQYABaiAEIAItADQgA0HIAGpBBGoQgi8gAygCgAEiAUGAgICAeEcNAQsgACADQcgAakEoEN8KGgwBCyAAQQRqIANBgAFqQQRqQSQQ3woaIAAgATYCAAJAIAMoAkgiAUGAgICAeEcNACADKAJMIAMoAlAQgjoMAQsgASADKAJMEPY5CyADQdABaiQA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JAALiw8CCX8BfiMAQfABayICJAAgAiABEMMUIgM2AhwCQAJAAkACQCADQShHDQAgAkEgaiABEKERIAEQ7Q0aIAEQsAkgAUG8kIQBQQIQrxsNASABQb6QhAFBAhCvGw0BIAFBwJCEAUEDEK8bDQEgAUHDkIQBQQMQrxsNASACQcwAaiABKAIAIgNB2ABqKAIAIgQ2AgAgAkHAAGogBDYCACACIAMpAlAiCzcCRCACIAs3AzggA0HQAGohAwJAAkACQAJAIAFBqJaEAUEDEK8bIgUNACABQauWhAFBAhCvG0UNAQsgAkGwAWogASACQSBqEM0TIAIoArQBIQQgAigCsAEiBkEiRw0BIAJBsAFqIAEgBBDSAiACKAKwASEBIAJB0ABqIAJBtAFqQSgQ3woaIAFBIkcNAiAAIAJB0ABqQSgQ3wohASACQcQBaiADQQhqKAIAIgA2AgAgAkGwAWpBCGogADYCACACIAMpAgAiCzcCvAEgAiALNwOwASACIAJBsAFqEIkoIAIoAgQhA0EIEJEyIgAgAzYCBCAAQQA2AgAgASAANgIsIAEgBToAKCABIAIpAiA3AjAgAUE4aiACQSBqQQhqKQIANwIAIAFBwABqIAJBMGopAgA3AgAMBgsCQCABQeqroQFBARCvGw0AIAJBsAFqIAEgAkEgahDNEyACKAK0ASEBAkAgAigCsAEiBEEiRw0AIAJBxAFqIANBCGooAgAiBDYCACACQbABakEIaiAENgIAIAIgAykCACILNwK8ASACIAs3A7ABIAJBEGogAkGwAWoQiSggAigCFCEEQQgQkTIiAyAENgIEIANBADYCACAAIAM2AiwgACABNgIEIABBgICAgHg2AgAgACACKQIgNwIwIABBOGogAkEgakEIaikCADcCACAAQcAAaiACQTBqKQIANwIADAcLIABBDGogAkG4AWpBOBDfChogACABNgIIIAAgBDYCBCAAQYSAgIB4NgIADAYLIAMoAgAiBCABKAIIIgVGDQQgAkGwAWogARDtBSACQdAAakEIaiIGIAJByAFqKQIANwMAIAJB0ABqQRBqIgcgAkHQAWopAgA3AwAgAiACKQLAATcDUCACKAK8ASEEIAIoArgBIQggAigCtAEhCQJAAkACQCACKAKwASIKQSJHDQAgAkH4AGpBCGogBikDADcDACACQfgAakEQaiAHKQMANwMAIAIgAikDUDcDeCACIAEQwxQiBjYClAEgARDtDRogBkEpRg0BIAZBOkcNAiAAIAQ2AgwgACAINgIIIAAgCTYCBCAAIAIpA3g3AhAgAEEYaiACQfgAakEIaikDADcCACAAQSBqIAJB+ABqQRBqKQMANwIAIAJBxAFqIANBCGooAgAiATYCACACQbABakEIaiABNgIAIAIgAykCACILNwK8ASACIAs3A7ABIAJBCGogAkGwAWoQiSggAigCDCEDQQgQkTIiASADNgIEIAFBADYCACAAIAE2AiwgAEGCgICAeDYCACAAIAIpAiA3AjAgAEE4aiACQSBqQQhqKQIANwIAIABBwABqIAJBIGpBEGopAgA3AgAMCAsgACACKQLYATcCLCAAQTxqIAJB6AFqKQIANwIAIABBNGogAkHgAWopAgA3AgAgACAENgIQIAAgCDYCDCAAIAk2AgggACACKQNQNwIUIABBHGogBikDADcCACAAQSRqIAcpAwA3AgAgACAKNgIEIABBhICAgHg2AgAMBwsCQCAERQ0AIAJBrAFqIANBCGooAgA2AgAgACAENgIMIAAgCDYCCCAAIAk2AgQgAEGDgICAeDYCACAAIAIpA3g3AhAgAkGYAWpBCGoiASACQSBqQQhqKAIANgIAIABBGGogAkH4AGpBCGopAwA3AgAgAEEgaiACQfgAakEQaikDADcCACACIAMpAgA3AqQBIAIgAikCIDcDmAEgAEE4aiACQZgBakEQaikDADcCACAAQTBqIAEpAwA3AgAgACACKQOYATcCKAwHCyACQRs2ArABIABBBGogASgCBCAFIAJBOGogAkGwAWoQvRkgAEGEgICAeDYCACAJIAgQjToMBgsgAkEANgKwASACQZQBakGwloQBIAJBsAFqQbSWhAEQwisACyAAQQxqIAJBuAFqQTgQ3woaIAAgBDYCCCAAIAY2AgQgAEGEgICAeDYCAAwECyAAIAIpAtwBNwIwIABBwABqIAJB7AFqKAIANgIAIABBOGogAkHkAWopAgA3AgAgAEEIaiACQdAAakEoEN8KGiAAQYSAgIB4NgIAIAAgATYCBAwDCyACQQA2ArABIAJBHGpBzJGEASACQbABakHEloQBEMIrAAsgAkHQAGpBCGogAkEgakEIaigCADYCACACQeQAaiABKAIAIgNB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QQc2AgAgACAFNgIEDAcLIAJBwABqIQogAkHIAGohCwsgAkEgaiABELkXIAIoAiQhCSACKAIgDQICQCAJRQ0AIAogBSABKAJUIgwgBSAMSxs2AgQgCiAFIAwgBSAMSRs2AgALIAsQgjggAiAJNgJIDAQLIAJBKGogARC5FyACKAIsIQkgAigCKEUNAiAAQQc2AgAgACAJNgIEDAQLIAJB0ABqEII4IAIgBTYCUAwCCyAAQQc2AgAgACAJNgIEDAILIAIgCTYCiAEgAkGIAWoQgjggCUUNACACIAUgASgCVCIJIAUgCUsbIgo2AkAgAiAFIAkgBSAJSRsiBTYCPCACQbaBgIB4NgKIASABIAUgCiACQYgBahCIKgsgAkHwAGpBEGpBACkDgOWZATcDACACQfAAakEIakEAKQP45JkBNwMAIAJBACkD8OSZATcDcAJAIAEQsRYgAkHwAGoQyzUNACACQfAAahDiECACQeAAaiACQcwAaikCADcDACACQegAaiACQdQAaigCADYCACACIAIpAkQ3A1ggAigCQCEIIAIoAjwhCSACKAI4IQUMAgsgASABKQMYNwNQIAEoAgAhBiABQSU2AgAgAkGIAWpBDGogAUEMaikCADcCACACQYgBakEUaiABQRRqKAIANgIAIAIgASkCBDcCjAEgAiAGNgKIASACQYgBahDiECACQfAAahDiEAJAIAhFDQAgAkEQaiACQTBqEM8TIAIoAhQhBiACKAIQIQcgAkH4gICAeDYCiAEgASAHIAYgAkGIAWoQiCoLIAJBCGogARD+CiACKAIMIQUCQCACKAIIDQACQCABLQDNAkHAAHFFDQAgASgCVCEGIAJBqYGAgHg2AogBIAEgAyAGIAMgBkkbIAMgBiADIAZLGyACQYgBahCIKgsgASgCVCEHIAJBiAFqIAJBMGpBKBDfChoQwDIiBiACQYgBakEoEN8KGiADIAcgAyAHSRshCSADIAcgAyAHSxshCEEEIQcMAgsgAEEHNgIAIAAgBTYCBAsgAkEwahDwGwwBCwJAIARBAXENACAAIAIpA1g3AhQgACAINgIQIAAgCTYCDCAAIAU2AgggACAGNgIEIAAgBzYCACAAQSRqIAJB6ABqKAIANgIAIABBHGogAkHgAGopAwA3AgAMAQsgASgCVCEEIAJBqIGAgHg2AogBIAEgAyAEIAMgBEkbIAMgBCADIARLGyACQYgBahCIKiAAQSRqIAJB6ABqKAIANgIAIABBHGogAkHgAGopAwA3AgAgACACKQNYNwIUIAAgCDYCECAAIAk2AgwgACAFNgIIIAAgBjYCBCAAIAc2AgALIAJBsAFqJAAL+w0CDn8BfiMAQcACayIDJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABEMMUQfsARw0AIANBEGpBCGogASgCACIEQdgAaigCADYCACADIAQpAlA3AxAgA0EIaiACEI0kIARB0ABqIQUCQCADKAIIIgZBDEcNACADQbQBaiAFQQhqKAIAIgQ2AgAgA0GgAWpBCGogBDYCACADIAUpAgAiETcCrAEgAyARNwOgASADQRs2AvwBIAAgASgCBCABKAIIIANBoAFqIANB/AFqEL0ZDAwLIAMgAygCDCIHNgIkIAMgBjYCIAJAAkAgBkECSQ0AIAEQyi8NASADQbQBaiAFQQhqKAIANgIAIANBoAFqQQhqIANBEGpBCGooAgA2AgAgAyADKQMQNwOgASADIAUpAgA3AqwBIANBGjYC/AEgACABKAIEIAEoAgggA0GgAWogA0H8AWoQvRkMDAsgA0G0AWogBUEIaigCACIENgIAIANBoAFqQQhqIAQ2AgAgAyAFKQIAIhE3AqwBIAMgETcDoAEgA0EbNgL8ASAAIAEoAgQgASgCCCADQaABaiADQfwBahC9GQwLCyADQfwBaiABENcJIANBGTYChAEgA0EFNgJoIANBKGogA0H8AWogA0HoAGogA0GEAWoQoQ4CQCAFKAIAIgggASgCCCIJRg0AAkACQAJAIAEQwxRBLEcNACABEMovDQEgA0G0AWogBUEIaigCADYCACADQaABakEIaiADQRBqQQhqKAIANgIAIAMgAykDEDcDoAEgAyAFKQIANwKsASADQRo2AvwBIAAgASgCBCAJIANBoAFqIANB/AFqEL0ZQQEhBEEBIQgMDAsgAygCLCEKIAMoAigiBEEiRw0BQQAhC0EBIQxBACEEQQAhCAwFCyABEMMUIQggAygCKCENAkAgCEH9AEcNACADKAIsIQoCQCANQSJHDQBBACEEQQEhDEEBIQtBACEIDAYLIABBCGogA0EoakEIakE4EN8KGiAAIAo2AgQMCQsCQAJAAkAgDUEiRiIIDQAgA0Eo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AkAgARDtDiIERQ0AIAQtAABBAUYNAgsgAUHUAmogAUHcAmogAS0A4QJBAkYiAxsoAgAhBCABQdACaiABQdgCaiADGygCACEDIAJBHGogARDKCyACQQE2AlQgAkGk16EBNgJQIAJCATcCXCACQegENgJEIAJBAToATyACIAJBwABqNgJYIAIgAkHIAGo2AkAgAiACQc8AajYCSCACQShqIAJB0ABqEKoTIAJBPGogAkEkaigCADYCACACIAIpAhw3AjQgAyAEIAMgBEkbIAMgBCADIARLGyACQShqEP4iIQQCQCABEO0OIgNFDQAgAy0AAEGbAUcNACABQQI6AOECIAEgASkD2AI3A9ACIAEgARDfGBD1GAsgAEETNgIAIAAgBDYCBAwCCyAAQRM2AgAgACAFNgIEIAEgBBDcEQwJCyABQQI6AOECIAEgASkD2AI3A9ACAkAgASgCkAIiBkECcUUNACABKAKEAiIEKAIIIghB/v///wdLDQUgBCgCFEUNACAIDQYgBEF/NgIIIAEoAoACIggoAggNByAIQX82AgggBCgCECEJIAhBDGogBCgCFCIHEKEwIAgoAhAgCCgCFEECdGogCSAHQQJ0EN8KGiAIIAcgCCgCFGo2AhQgBEEANgIUIAggCCgCCEEBajYCCCAEIAQoAghBAWo2AggLIAEgBkH//9//AXFBgIAgcjYCkAIgAkHQAGogAUEAEN4HAkAgAigCUEETRg0AQQAtAMD/owEaQTAQjAEiBEUNCCAEIAIpA1A3AwAgBEEoaiACQdAAakEoaikDADcDACAEQSBqIAJB0ABqQSBqKQMANwMAIARBGGogAkHQAGpBGGopAwA3AwAgBEEQaiACQdAAakEQaikDADcDACAEQQhqIAJB0ABqQQhqKQMANwMAIAEgBhDcESAAIAQ2AgggACAFNgIEIABBAzYCACAAIAMgASgC1AIiASADIAFLGzYCECAAIAMgASADIAFJGzYCDAwJCyACKAJUIQQgAEETNgIAIAAgBDYCBCABIAYQ3BELIAUQ2QEgBUHAAEEIEO4cDAcLQZyEmwEQ6iIAC0GMhJsBEOkiAAtB/IObARDpIgALQZyEmwEQ6iIAC0GMhJsBEOkiAAtB/IObARDpIgsACyACQYABaiQAC+wLAQx/IwBB0ABrIgckACACQVhqIQgCQAJAA0ACQAJA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QThqQQhqIAJBCGpBCGooAgA2AgAgAiACKQIINwM4CyACQQE2AkwgAkG896ABNgJIIAJCATcCVCACQc0JrUIghiACQThqrYQ3AyggAiACQShqNgJQIAAgAkHIAGoQkQogAigCOCACKAI8EIY2DBILIAEtABhBBUcNDwsgASgCECEBDAALCyABKAIIDQwgAkEANgIQIAJCgICAgBA3AgggAkEDOgBoIAJBIDYCWCACQQA2AmQgAkHE96ABNgJgIAJBADYCUCACQQA2AkggAiACQQhqNgJcAkAgAUEQaiACQcgAahD3LA0AIAAgAikCCDcCACAAQQhqIAJBCGpBCGooAgA2AgAMDwtB3MGhAUE3IAJB7wBqQdz3oAFB4MKhARCxGAALIABBgICAgHg2AgAMDQsgAkE4aiABKAIgEPcCIAIoAjhBgICAgHhGDQQgAkEoakEIaiACQThqQQhqKAIANgIAIAIgAikCODcDKAwFCyACQcgAaiABKAIgEPcCIAIoAkhBgICAgHhGDQEgAkEYakEIaiACQcgAakEIaigCADYCACACIAIpAkg3AxgMAgsgAyACKAJQEPg5AAsgAkEANgIgIAJCgICAgBA3AxgLIAJBOGogASgCBBD3AgJAAkAgAigCOEGAgICAeEcNACACQQA2AjAgAkKAgICAEDcDKAwBCyACQShqQQhqIAJBOGpBCGooAgA2AgAgAiACKQI4NwMoCyACQQI2AkwgAkGk96ABNgJIIAJCAjcCVCACQc0JrUIghiIEIAJBKGqthDcDECACIAQgAkEYaq2ENwMIIAIgAkEIajYCUCAAIAJByABqEJEKIAIoAiggAigCLBCGNiACKAIYIAIoAhwQhjYMCAsgAkEANgIwIAJCgICAgBA3AygLIAJBAjYCTCACQaT3oAE2AkggAkICNwJUIAJBtAStQiCGIAFBCGqthDcDECACQc0JrUIghiACQShqrYQ3AwggAiACQQhqNgJQIAAgAkHIAGoQkQogAigCKCACKAIsEIY2DAYLIAJBADYCICACQoCAgIAQNwMYCyACQThqIAEoAgwQ9wICQAJAIAIoAjhBgICAgHhHDQAgAkEANgIwIAJCgICAgBA3AygMAQsgAkEoakEIaiACQThqQQhqKAIANgIAIAIgAikCODcDKAsgAkECNgJMIAJBpPegATYCSCACQgI3AlQgAkHNCa1CIIYiBCACQShqrYQ3AxAgAiAEIAJBGGqthDcDCCACIAJBCGo2AlAgACACQcgAahCRCiACKAIoIAIoAiwQhjYgAigCGCACKAIcEIY2DAQLIAJBADYCMCACQoCAgIAQNwMoCyACQQI2AkwgAkGk96ABNgJIIAJCAjcCVCACQbQErUIghiABQRBqrYQ3AxAgAkHNCa1CIIYgAkEoaq2ENwMIIAIgAkEIajYCUCAAIAJByABqEJEKIAIoAiggAigCLBCGNgwCCyAAQYCAgIB4NgIADAELIAJBADYCECACQoCAgIAQNwIIIAJBAzoAaCACQSA2AlggAkEANgJkIAJBxPegATYCYCACQQA2AlAgAkEANgJIIAIgAkEIajYCXAJAIAFBCGogAkHIAGoQ9ywNACAAIAIpAgg3AgAgAEEIaiACQQhqQQhqKAIANgIADAELQdzBoQFBNyACQe8AakHc96ABQeDCoQEQsRgACyACQfAAaiQAC8IMARB/IwBBIGsiAiQAIAEoAogCIgMgAygCAEEBaiIENgIAAkAgBEUNAAJAIAMoAggNACABKAL0ASEFQQAhBiADQQA2AhQgA0F/NgIIIANBDGohBwJAAkACQCABKALoASIIIAEoAuQBIgRHDQAgBSEJDAELQQAhBkEBIQogBSEJA0ACQAJAAkACQAJAIAQsAAAiC0F/Sg0AIAtBH3EiDEEGdCINIAQtAAFBP3EiDnIiDyEQIAtBYEkiEQ0CIA5BBnQgBC0AAkE/cXIhECALQXBPDQEgECAMQQx0ciEQDAILAkAgC0H/AXEiEEGAv5oBai0AAA0AIApBAXFFDQMgEEGA3ZoBai0AAEEBRw0DIAEgBUEBaiIFNgL0ASABIARBAWoiBDYC5AFBACEKDAQLIAEgBUEBaiIFNgL0ASABIARBAWoiBDYC5AEMAwsgEEEGdCAELQADQT9xciAMQRJ0QYCA8ABxciIQQYCAxABGDQQLAkACQAJAQdC8oAEgEEEJdkHo2qEBaiAQQf+DOEsbLQAAQQV0IBBBA3ZBP3FqQYDpoQFqLQAAIBBBB3F2QQFxDQAgCkEBcUUNBiAQEI8oRQ0GIAEgBEECaiIKNgLkASAELQABQT9xIRAgEUUNASANIBByIQsgCiEEDAILAkACQCARRQ0AIARBAmohBAwBCyAOQQZ0IAQtAAJBP3FyIRACQCALQXBPDQAgECAMQQx0ciEPIARBA2ohBAwBCyABIARBBGoiCzYC5AEgEEEGdCAELQADQT9xciAMQRJ0QYCA8ABxciEPIAshBAsCQAJAIA9BgAFPDQBBASELDAELAkAgD0GAEE8NAEECIQsMAQtBA0EEIA9BgIAESRshCwsgASALIAVqIgU2AvQBDAMLIAEgBEEDaiIKNgLkASAQQQZ0IAQtAAJBP3FyIRACQCALQXBPDQAgECAMQQx0ciELIAohBAwBCyABIARBBGoiCjYC5AEgEEEGdCAELQADQT9xciAMQRJ0QYCA8ABxciELIAohBAsCQAJAIAtBgAFPDQBBASELDAELAkAgC0GAEE8NAEECIQsMAQtBA0EEIAtBgIAESRshCwsgASALIAVqIgU2AvQBQQAhCgwBCyALQdwARw0CIAEgBUEBaiILNgL0ASABIARBAWoiBDYC5AECQAJAIAggBEYNACAELQAAQfUARg0BCyACQZyAgIB4NgIIIAUgBSACQQhqEIc8IRBBASELDAQLIAEoAuwBIQQgASgC+AEhECAHIAUgCWsiCBCjMCADKAIQIAMoAhRqIAQgCSAQa2ogCBDfChogASALNgL0ASABIAQgCyAQa2o2AuQBIAMgAygCFCAIajYCFCABIAQgASgC8AFqNgLoASACQQhqIAEQsgIgAigCDCEQAkACQAJAIAIoAggiCEGAgICAeEYNACACKAIQIgtFDQICQCAQKAIAIgRBgLADc0GAgLx/akGAkLx/SQ0AAkAgBEGAAUkNAEHQvKABIARBCXZB6NqhAWogBEH/gzhLGy0AAEEFdCAEQQN2QT9xakGA6aEBai0AACAEQQdxdkEBcUUNAQwDCyAEQYC/mgFqLQAADQILIAJBloCAgHg2AgggASAFIAJBCGoQ6TQMAQtBASELDAULIAtBAnQhCyAQIQQDQCAHIAQoAgAQrwogBEEEaiEEIAtBfGoiCw0ACwsgECAIENk+IAEoAugBIQggASgC5AEhBEEBIQZBACEKIAEoAvQBIgUhCQsgCCAERw0ACwsgASABKALsASIEIAEoAvABajYC6AEgASAEIAUgASgC+AEiC2siBWo2AuQBIAUgCSALayIQayELIAQgEGohBAJAAkAgBkEBcQ0AIAIgASgCjAJBCGogBCALEPMWNwMQIAJBAjYCCCABIAJBCGoQ2AUMAQsgByALEKMwIAMoAhAgAygCFGogBCALEN8KGiADIAMoAhQgC2oiBDYCFCACIAEoAowCQQhqIAMoAhAgBBDzFjcDECACQQI2AgggASACQQhqENgFC0EAIQsLQQEhBCADIAMoAghBAWo2AgggAxCgJAJAAkAgCw0AIABBxgA6AAFBACEEDAELIAAgEDYCBAsgACAEOgAAIAJBIGokAA8LQbTNmgEQ6SIACwAL1QsCE38CfiMAQZADayIFJAAgAa0iGEL//////////z98IBiAIRgCQAJAIAFBgSBJDQAgARC4LyEGDAELIAEgAUEBdmsiB0HAACAHQcAASRshBgsgAEF+aiEIQQEhB0EAIQlBACEKA0BBACELQQEhDAJAIAkgAU8NACAFQThqIAkgACABQbSwoQEQ9CwgBSgCOCENAkACQCAFKAI8Ig4gBkkNAEEAIQ8CQAJAIA5BAkkNAAJAAkACQCANLQACIhAgDS0AACIRRw0AIA0tAAMgDS0AAU8NAQwCCyAQIBFJDQELQQIhEiANQQJqIRADQCAOIBJGDQICQAJAIBBBAmoiES0AACITIBAtAAAiFEcNACAQQQNqLQAAIBBBAWotAABJDQUMAQsgEyAUSQ0ECyASQQFqIRIgESEQDAALC0ECIRIgDUECaiEQA0BBASEPIA4gEkYNAQJAAkAgEEECaiIRLQAAIhMgEC0AACIURw0AQQEhDyAQQQNqLQAAIBBBAWotAABPDQQMAQsgEyAUTw0DCyASQQFqIRIgESEQDAALCyAOIRILIBIgBkkNAAJAIA9FDQAgBUEwaiASIA0gDkGEsKEBEMAvIAVBKGogBSgCNCIOQQF2IhMgBSgCMCIRIBNBmNShARDALyAFKAIoIRAgBSgCLCEVIAVBIGogEyARIA5BAXRqIA5BfnEiEWsgE0Go1KEBEMAvQQAhDkEAIBVrIRQgBSgCICARakF+aiERIAUoAiQhDQJAA0AgEyAOaiIPRQ0CIBQgDkYNAQJAIA9Bf2oiDyANTw0AIBAvAAAhDyAQIBEvAAA7AAAgESAPOwAAIBFBfmohESAOQX9qIQ4gEEECaiEQDAELCyAPIA1ByNShARChGwALIBUgFUG41KEBEKEbAAsgEkEBdEEBciEMDAELAkAgBA0AIAYgDiAGIA5JG0EBdCEMDAELIAVBGGogDkEgIA5BIEkbIhAgDSAOQfSvoQEQwC8gBSgCGCAFKAIcIAIgA0EAQQAQjQIgEEEBdEEBciEMCyAMQQF2IAlqrSAJrSIZfCAYfiAJIAdBAXZrrSAZfCAYfoV5pyELCyAIIAlBAXQiDmohFiAAIA5qIRcDQAJAAkACQAJAAkACQAJAIApBAkkNACAFQc4CaiAKQX9qIhNqLQAAIAtPDQELIAVBzgJqIApqIAs6AAAgBUHEAGogCkECdGogBzYCACAJIAFPDQEgCkEBaiEKIAxBAXYgCWohCSAMIQcMBwsCQCAFQcQAaiATQQJ0aigCACIKQQF2Ig4gB0EBdiIQaiIUIANLDQAgCiAHckEBcUUNAgsgACAJIBRrQQF0aiEPAkAgCkEBcQ0AIAVBEGogDiAPIBRBlLChARDALyAFKAIQIAUoAhQgAiADEL0xCwJAIAdBAXENACAFQQhqIA4gDyAUQaSwoQEQ9CwgBSgCCCAFKAIMIAIgAxC9MQsgCkECSQ0EIAdBAkkNBCAQIA4gECAOSSIHGyIQIANLDQQgAiAPIA5BAXRqIg4gDyAHGyIKIBBBAXQiEBDfCiIVIBBqIRAgBw0CIBUhBwNAIAcgEEYNBCAOIBdGDQQCQAJAIA4tAAAiESAHLQAAIhJGDQAgESASSSERDAELIA4tAAEgBy0AAUkhEQsgCiAOIAcgERsvAAA7AAAgCkECaiEKIA4gEUEBdGohDiAHIBFBAXNBAXRqIQcMAAsLAkAgB0EBcQ0AIAAgASACIAMQvTELIAVBkANqJAAPCyAUQQF0IQcgEyEKDAMLIBYhDgNAAkACQCAQQX5qIhEtAAAiByAKQX5qIhItAAAiDUYNACAHIA1JIQcMAQsgEEF/ai0AACAKQX9qLQAASSEHCyAOIBIgESAHGy8AADsAACARIAdBAXRqIRACQCASIAdBAXNBAXRqIgogD0YNACAOQX5qIQ4gECAVRw0BCwsgFSEHCyAKIAcgECAHaxDfChoLIBRBAXRBAXIhByATIQoMAAsLC9MLAhN/An4jAEGQA2siBSQAIAGtIhhC//////////8/fCAYgCEZAkACQCABQYEgSQ0AIAEQuC8hBgwBCyABIAFBAXZrIgdBwAAgB0HAAEkbIQYLIABBeGohCEEBIQdBACEJQQAhCgNAQQAhC0EBIQwCQCAJIAFPDQAgBUE4aiAJIAAgAUG0sKEBEPUsIAUoAjghDQJAAkAgBSgCPCIOIAZJDQBBACEPAkACQCAOQQJJDQACQAJAAkAgDSgCCCIQIA0oAgAiEUcNACANKAIMIA0oAgRPDQEMAgsgECARSQ0BCyANQRRqIRBBAiESA0AgDiASRg0CAkACQCAQQXxqKAIAIhEgEEF0aigCACITRw0AIBAoAgAgEEF4aigCAEkNBQwBCyARIBNJDQQLIBBBCGohECASQQFqIRIMAAsLIA1BFGohEEECIRIDQEEBIQ8gDiASRg0BAkACQCAQQXxqKAIAIhEgEEF0aigCACITRw0AIBAoAgAgEEF4aigCAE8NBAwBCyARIBNPDQMLIBBBCGohECASQQFqIRIMAAsLIA4hEgsgEiAGSQ0AAkAgD0UNACAFQTBqIBIgDSAOQYSwoQEQtS8gBUEoaiAFKAI0IhBBAXYiDyAFKAIwIhEgD0GY1KEBELUvIAUoAighDiAFKAIsIRQgBUEgaiAPIBEgEEEDdGogD0EDdCIRayAPQajUoQEQtS9BACEQQQAgFGshDSAFKAIgIBFqQXhqIREgBSgCJCEVAkADQCAPIBBqIhNFDQIgDSAQRg0BAkAgE0F/aiITIBVPDQAgDikCACEYIA4gESkCADcCACARIBg3AgAgEUF4aiERIBBBf2ohECAOQQhqIQ4MAQsLIBMgFUHI1KEBEKEbAAsgFCAUQbjUoQEQoRsACyASQQF0QQFyIQwMAQsCQCAEDQAgBiAOIAYgDkkbQQF0IQwMAQsgBUEYaiAOQSAgDkEgSRsiECANIA5B9K+hARC1LyAFKAIYIAUoAhwgAiADQQBBABCOAiAQQQF0QQFyIQwLIAxBAXYgCWqtIAmtIhh8IBl+IAkgB0EBdmutIBh8IBl+hXmnIQsLIAggCUEDdCIQaiEWIAAgEGohFwNAAkACQAJAAkACQAJAAkAgCkECSQ0AIAVBzgJqIApBf2oiD2otAAAgC08NAQsgBUHOAmogCmogCzoAACAFQcQAaiAKQQJ0aiAHNgIAIAkgAU8NASAKQQFqIQogDEEBdiAJaiEJIAwhBwwHCwJAIAVBxABqIA9BAnRqKAIAIgpBAXYiECAHQQF2Ig5qIg0gA0sNACAKIAdyQQFxRQ0CCyAAIAkgDWtBA3RqIRMCQCAKQQFxDQAgBUEQaiAQIBMgDUGUsKEBELUvIAUoAhAgBSgCFCACIAMQvjELAkAgB0EBcQ0AIAVBCGogECATIA1BpLChARD1LCAFKAIIIAUoAgwgAiADEL4xCyAKQQJJDQQgB0ECSQ0EIA4gECAOIBBJIgcbIg4gA0sNBCACIBMgEEEDdGoiECATIAcbIgogDkEDdCIOEN8KIhQgDmohDiAHDQIgFCEHA0AgByAORg0EIBAgF0YNBAJAAkAgECgCACIRIAcoAgAiEkYNACARIBJJIREMAQsgECgCBCAHKAIESSERCyAKIBAgByARGykCADcCACAKQQhqIQogECARQQN0aiEQIAcgEUEBc0EDdGohBwwACwsCQCAHQQFxDQAgACABIAIgAxC+MQsgBUGQA2okAA8LIA1BAXQhByAPIQoMAwsgFiEQA0ACQAJAIA5BeGoiESgCACIHIApBeGoiEigCACIVRg0AIAcgFUkhBwwBCyAOQXxqKAIAIApBfGooAgBJIQcLIBAgEiARIAcbKQIANwIAIBEgB0EDdGohDgJAIBIgB0EBc0EDdGoiCiATRg0AIBBBeGohECAOIBRHDQELCyAUIQcLIAogByAOIAdrEN8KGgsgDUEBdEEBciEHIA8hCgwACwsLtw0CFH8DfiMAQeAAayICJAAgACgCACEDAkACQCABKAIUIgRBjI6DAUEOIAEoAhgiBSgCDCIGEQsADQAgAygCFCIHIAMoArACIgF2IQggAUEfcSEJIAMoAhAhCiADKAKsAiELQQAhDAJAAkADQAJAIAwgCEcNAEEBIQ0gBEGki6EBQQEgBhELAA0FAkAgAygCICIARQ0AIAMoAhwhASAAQQJ0IQ5BfyEAA0AgASgCACEPAkACQCAAQQFqIhANACACQQI2AhQgAkHsjoMBNgIQIAJCATcCHCACQfAANgI8IAIgDzYCWCACIAJBOGo2AhggAiACQdgAajYCOCAEIAUgAkEQahCdBw0IDAELIAIgADYCNCACQQM2AhQgAkGMj4MBNgIQIAJCAjcCHCACQfAANgJEIAJB8AA2AjwgAiAPNgJYIAIgAkE4ajYCGCACIAJB2ABqNgJAIAIgAkE0ajYCOCAEIAUgAkEQahCdBw0HCyABQQRqIQEgECEAIA5BfGoiDg0ACwsgAkECNgIUIAJBqI6DATYCECACQgE3AhwgAkHwADYCPCACIAg2AlggAiACQThqNgIYIAIgAkHYAGo2AjggBCAFIAJBEGoQnQcNBSACQQI2AhQgAkHIjoMBNgIQIAJCATcCHCACQfAANgI8IAIgAygCJCgC1AI2AlggAiACQThqNgIYIAIgAkHYAGo2AjggBCAFIAJBEGoQoTUNBSACQQA2AiAgAkEBNgIUIAJB2I6DATYCECACQgQ3AhggBCAFIAJBEGoQoTUhDQwFCyAMQf////8HRg0CIAIgAyAMEP0pIhY3AwgCQAJAAkAgDEUNACAWQv///////35YDQEgBEGkj4MBQQIgBhELAA0GDAILIARBqI+DAUECIAYRCwANBQwBCyAEQaaPgwFBAiAGEQsADQQLIAJB8AA2AlwgAiAMNgI0QQEhDSACQQE2AkwgAkEBNgI8IAJBpNehATYCOCACQQE2AkQgAiACQTRqNgJYIAJBAzoALCACQQg2AiggAkIgNwIgIAJCgICAgOAANwIYIAJBAjYCECACIAJBEGo2AkggAiACQdgAajYCQCAEIAUgAkE4ahCdBw0EAkACQCACKQMIIhZCgICAgICAf1QNACAWQv///////wCDUA0BCyACQQI2AhQgAkGsj4MBNgIQIAJCATcCHCACQbABNgI8IAIgAkE4ajYCGCACIAJBCGo2AjggBCAFIAJBEGoQnQcNBQsgBEGE9ZgBQQIgBhELAA0EIAsgDCAJdCIAaiIBIAtJDQECQCAHIAFJDQAgDEEBaiEMIAogAEEDdGoiACALQQN0aiERQQAhD0EAIQ5BACESA0ACQAJAAkAgACARRw0AIBghFyAUIRMMAQsgGCEXIAEhECAUIRMDQCAOIgFBAWohDiAAKQMAIRYCQAJAIA9BAXFFDQAgFyAWUQ0BIBdCgICAgICAAlQNACAAQQhqIQBBASEPIAEhFCAWIRgMBAsgASEUIBYhGCAWIRcgASETC0EBIQ8gASEQIABBCGoiACARRw0ACwsCQCAPQQFxRQ0AQQAhDyARIQAgASEQIBdC////////AVYNAQtBASENIARBpIuhAUEBIAYRCwBFDQMMBwsCQCASRQ0AIARBnuuaAUECIAYRCwANBwsgF0IriKchFQJAAkAgE0H/AXEgEEH/AXFGDQAgAiATOgBXIAIgEDoANCACQQM2AjwgAkGQuYMBNgI4IAJCAzcCRCACQfAANgIkIAJBsQE2AhwgAkGxATYCFCACIBU2AlggAiACQRBqNgJAIAIgAkHYAGo2AiAgAiACQTRqNgIYIAIgAkHXAGo2AhAgBCAFIAJBOGoQnQdFDQEMCAsgAiATOgA0IAJBAjYCFCACQeS3gwE2AhAgAkICNwIcIAJB8AA2AkQgAkGxATYCPCACIBU2AlggAiACQThqNgIYIAIgAkHYAGo2AkAgAiACQTRqNgI4IAQgBSACQRBqEJ0HDQcLAkAgF0KAgICAgIABg1ANACAEQbyPgwFBBSAGEQsADQcLIBJBAWohEiAXQv///////wCDIhZQDQAgAkECNgIUIAJBrI+DATYCECACQgE3AhwgAkGyATYCXCACIBY3AzggAiACQdgAajYCGCACIAJBOGo2AlggBCAFIAJBEGoQnQdFDQAMBgsLCyABIAdBrI2DARCjGwALIAAgAUGsjYMBEKQbAAsgAkL/////BzcDEEHwj4MBQRUgAkEQakHUh4MBQci8gwEQsRgAC0EBIQ0LIAJB4ABqJAAgDQufDQIFfwF+IwBBEGsiASQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAA4TEhIBAgMEBQYHCAkKCwwNDg8QEQALIABBEGoQuBMCQCAALQA8QQNGDQAgAEEoahC1EQsCQCAAKAJAIgJFDQAgAkEEaigCACEDAkAgAigCCCIERQ0AA0AgAygCACIFEPwCIAVB4ABBCBDuHCADQQRqIQMgBEF/aiIEDQALIAJBBGooAgAhAwsgAigCACADEN8zIAJBFEEEEO4cCyAAKAJEIgRFDREgBEEEaigCACEDAkAgBCgCCCIARQ0AA0AgAxDsByADQQxqIQMgAEF/aiIADQALIARBBGooAgAhAwsgBCgCACADENwzIARBFEEEEO4cDBELAkAgACgCBCIDQYCAgIB4Rw0AIABBCGoQ/gsgACgCCCAAKAIMEOEzAkAgACgCIEUNACAAQSBqEJwiCyAAKAIUIgMoAgAiABD8AiAAQeAAQQgQ7hwgA0EMQQQQ7hwMEQsgAEEEahD+CyADIAAoAggQ4TMCQCAAKAIcRQ0AIABBHGoQnCILIAAoAhAiAygCACIAEPwCIABB4ABBCBDuHCADQQxBBBDuHAwQCyAAQRBqELURIAAoAigiBUUNDyAFQQRqKAIAIQMCQCAFKAIIIgBFDQADQCADKAIAIgQQ/AIgBEHgAEEIEO4cIANBBGohAyAAQX9qIgANAAsgBUEEaigCACEDCyAFKAIAIAMQ3zMgBUEUQQQQ7hwMDwsCQAJAIAAtAEQiA0EERw0AIABBEGoQtREMAQsgAEEYahC4EwJAIANBA0YNACAAQTBqELURCwJAIAAoAkgiA0UNACADEOYpIAMoAgAgA0EEaigCABDfMyADQRRBBBDuHAsgACgCTCIDRQ0AIAMQ5ykgA0EUQQQQ7hwLIAAoAlgiBUUNDiAFQQRqKAIAIQMCQCAFKAIIIgBFDQADQCADKAIAIgQQ/AIgBEHgAEEIEO4cIANBBGohAyAAQX9qIgANAAsgBUEEaigCACEDCyAFKAIAIAMQ3zMgBUEUQQQQ7hwMDgsgACgCCCEFAkAgACgCDCIERQ0AIAUhAwNAIAMQ3gMgA0E4aiEDIARBf2oiBA0ACwsgACgCBCAFEOMzDA0LIAAoAgQiAxD8AiADQeAAQQgQ7hwMDAsgACgCCCECAkAgACgCDCIERQ0AIAIhAwNAAkAgAygCAEEHRg0AIAMQigkLIANBMGooAgAiBRD8AiAFQeAAQQgQ7hwgA0E4aiEDIARBf2oiBA0ACwsgACgCBCACEOMzDAsLIAAoAgQiAxD8AiADQeAAQQgQ7hwMCgsgACgCBCIDEPwCIANB4ABBCBDuHAwJCyAAQQhqIQUCQCAAKAIEDQAgBRDmKSAAKAIIIAAoAgwQ3zMMCQsgACgCDCECAkAgACgCECIARQ0AIAIhAwNAIAMoAgAiBBD8AiAEQeAAQQgQ7hwgA0EEaiEDIABBf2oiAA0ACwsgBSgCACACEN8zDAgLIAAoAgQiAxD8AiADQeAAQQgQ7hwgACgCCCIDEPwCIANB4ABBCBDuHCAAKAIMIgMQ/AIgA0HgAEEIEO4cIAAoAhAiAxD8AiADQeAAQQgQ7hwMBwsgAEEQahDlFgwGCyAAKAIEIgMQ/AIgA0HgAEEIEO4cDAULIAAoAgQiAxD8AiADQeAAQQgQ7hwMBAsgACgCBCIDEPwCIANB4ABBCBDuHCAAKAIIIgMQ/AIgA0HgAEEIEO4cDAMLIABBEGoQ5RYCQCAAKAJAIgNFDQAgAxD8AiADQeAAQQgQ7hwLIAAoAkQiA0UNAiADEPwCIANB4ABBCBDuHAwCCwJAAkACQAJAIAAoAghBgICAgHhzIgNBBCADQQRJGw4EAQIFAwALIABBCGoQuSQgACgCGCIDIAAoAhwQihEgACgCFCADEOAzDAQLIAApAyAiBlANAyAGQgODQgBSDQMgASAGpyIDNgIIIAFBCGoQ9QcgAyADKAIAIgBBf2o2AgAgAEEBRw0DIAMgAygCIBDTLwwDCyAAQRBqELgTDAILIAApAxggACgCIBDBGQwBCwJAIAAtABxBAkYNACAAKQMIIgZCA4NCAFINACABIAanIgM2AgwgAUEMahD1ByADIAMoAgAiBEF/ajYCACAEQQFHDQAgAyADKAIgENMvCyAAKAIoIgNFDQAgAygCACIAEPwCIABB4ABBCBDuHCADQQxBBBDuHAsgAUEQaiQAC6INAQx/IwBB8ABrIgEkAEEMIQICQCAAKAIAIgMtAFFBAXFFDQAgAygC+AQoAtQCQQZsQQxqIQILIAAoAgQiBEGAAWogAhCMGiABQThqEOkbIAEoAjwhBSABKAI4IgIgAigCACIGQQFqNgIAAkACQAJAAkAgBkF/TA0AIAEgAjYCaCABIAU2AmwCQAJAAkAgBBDHHyAFakEEIAMoAvwEdGpBFGogAygCgAVNDQAgABC1Ew0BCyABQTBqIAAQ0hkgASgCMEUNAQsgAiACKAIAIgRBf2o2AgACQCAEQQFHDQAgAUHoAGoQgiQLQZDDoQFBKyABQdAAakHg24MBQfzdgwEQsRgACyABKAI0IQYgAiAFEKEyIQcgBEH0AGoiCEEBIAMoAvwEdBCMGiAGQYCAgMB4QYCAgIB4IAcbciEGAkAgA0HYBGoiCUHQ5YMBEJ86DQAgAyAGEIEvDQAgAxDCIyEHIAFBADYCVCABIAk2AlAgACgCBCEKIAAoAgAhCwNAIAFBKGogAUHQAGoQ6hQgAS0AKEUNASALIAogBiABLQApQf8BcUEIdCAHEPULDAALCyAEIAQoAmggBWo2AmggAiACKAIAIgdBAWo2AgAgB0F/TA0AIARBjAFqIQwgASgCbCEHAkAgBCgClAEiCiAEKAKMAUcNACAMEM0mCyAEKAKQASAKQQN0aiILIAc2AgQgCyACNgIAIAQgCkEBajYClAEgBCABKAJoIAcgBhDqByABIAY2AkQgAiACKAIAIgZBAWo2AgAgBkF/TA0AIAEgAjYCaCABIAU2AmwCQAJAAkAgBBDHHyAFakEEIAMoAvwEdGpBFGogAygCgAVNDQAgABC1Ew0BCyABQSBqIAAQ0hkgASgCIEUNAQsgAiACKAIAIgRBf2o2AgACQCAEQQFHDQAgAUHoAGoQgiQLQZDDoQFBKyABQdAAakHg24MBQYzegwEQsRgACyABKAIkIQYgAiAFEKEyIQcgCEEBIAMoAvwEdBCMGiAGQYCAgMAEQYCAgIAEIAcbciEGAkAgCUHQ5YMBEJ86DQAgAyAGEIEvDQAgAxDCIyEHIAFBADYCVCABIAk2AlAgACgCBCEKIAAoAgAhCwNAIAFBGGogAUHQAGoQ6hQgAS0AGEUNASALIAogBiABLQAZQf8BcUEIdCAHEPULDAALCyAEIAQoAmggBWo2AmggAiACKAIAIgdBAWo2AgAgB0F/TA0AIAEoAmwhBwJAIAQoApQBIgogBCgCjAFHDQAgDBDNJgsgBCgCkAEgCkEDdGoiCyAHNgIEIAsgAjYCACAEIApBAWo2ApQBIAQgASgCaCAHIAYQ6gcgASAGNgJIIAIgAigCACIGQQFqNgIAIAZBf0wNACABIAI2AmggASAFNgJsAkACQAJAIAQQxx8gBWpBBCADKAL8BHRqQRRqIAMoAoAFTQ0AIAAQtRMNAQsgAUEQaiAAENIZIAEoAhBFDQELIAIgAigCACIEQX9qNgIAAkAgBEEBRw0AIAFB6ABqEIIkC0GQw6EBQSsgAUHQAGpB4NuDAUGc3oMBELEYAAsgASgCFCEGIAIgBRChMiEHIAhBASADKAL8BHQQjBogBkGAgIDAAkGAgICAAiAHG3IhBgJAIAlB0OWDARCfOg0AIAMgBhCBLw0AIAMQwiMhByABQQA2AlQgASAJNgJQIAAoAgQhCiAAKAIAIQsDQCABQQhqIAFB0ABqEOoUIAEtAAhFDQEgCyAKIAYgAS0ACUH/AXFBCHQgBxD1CwwACwsgBCAEKAJoIAVqNgJoIAIgAigCACIHQQFqNgIAIAdBf0wNACABKAJsIQcCQCAEKAKUASIKIAQoAowBRw0AIAwQzSYLIAQoApABIApBA3RqIgsgBzYCBCALIAI2AgAgBCAKQQFqNgKUASAEIAEoAmggByAGEOoHIAEgBjYCTCABQYCAgIB4NgJoIAEoAkRBgICAgHhHDQEgASADEPQgIgc2AmggByABKAJIRw0CIAEgAxDCIyIDNgJoIAYgA0cNAyAAKAIAIgMgACgCBCIAQYCAgIB4QYCAgIB4EIgeIAMgACAHIAcQiB4gAyAAIAYgBhCIHiAEIAIgBSAHEOoHIAFB8ABqJAAPCwALIAFBADYCUCABQcQAaiABQegAaiABQdAAakGs3oMBELwrAAsgAUEANgJQIAFByABqIAFB6ABqIAFB0ABqQbzegwEQvCsACyABQQA2AlAgAUHMAGogAUHoAGogAUHQAGpBzN6DARC8KwAL+gwBBH8DQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACICQXRqIgNBByADQSZJGw4mGwABBgIDBAUHCAkKCwwNGw4PEBESGxMUFRsbFhcYGBgYGRgbGhsbCyAAKAIMIgNFDRogACgCCCEAIANBBHQhAwNAAkAgACgCAEECRg0AIAAoAgwgARD+AgsgAEEQaiEAIANBcGoiAw0ADBsLCyAAKAIMIgNFDRkgACgCCCEAIANBDGwhAwNAAkACQCAAKAIAIgJFDQAgAiABEP4CDAELIAAoAgQgARDEEAsgAEEMaiEAIANBdGoiAw0ADBoLCyAAQQRqIQQMGQsgAEEMaigCACEADBkLIAAoAgQgARD+AiAAQQhqKAIAIQAMGAsgAEE4aiEEAkAgAkELRg0AAkACQAJAAkACQAJAAkACQAJAAkAgAg4LAAECAwQFBgcICSEACyAAQQhqIAEQmD8gBCgCACEADCELIAAoAiggARD+AiABIABBCGoQhjQgBCgCACEADCALIAEgAEEIahCINCAEKAIAIQAMHwsgACgCBCABEP4CIAQoAgAhAAweCwJAIAAoAgQiACgCAEEDRg0AIAAoAiAgARD+AiABIAAQhjQgBCgCACEADB4LIAAoAhAgARD+AiAAQQxqKAIAIgNFDRwgA0EEdCEDIABBCGooAgBBDGohAANAIAAoAgAgARD+AiAAQRBqIQAgA0FwaiIDDQAMHQsLIAAoAgQgARD+AiAEKAIAIQAMHAsgACgCBCABEP4CIAQoAgAhAAwbCyAAKAIEIAEQ/gIgBCgCACEADBoLIAAoAgQgARD+AiAEKAIAIQAMGQsgACgCBCABEP4CIAQoAgAhAAwYCwJAAkAgACgCBA4DAAEYAAsgACgCECIDRQ0XIAAoAgwhACADQShsIQMDQAJAIAAoAgBBB0YNACAAIAEQ4AwLIABBKGohACADQVhqIgNFDRgMAAsLIAAoAhAiA0UNFiAAKAIMIQIgA0E4bCEFQQAhAANAAkACQAJAAkAgAiAAaiIDKAIADgMAAQIACyABIANBCGoQhzQgA0EoaigCACABEOAMDAILIANBEGogARCYPyADQTBqKAIAIgNFDQEgAyABEP4CDAELIANBBGooAgAgARDgDAsgBSAAQThqIgBGDRcMAAsLIAEgAEEIahDiGQwUCyAAKAIoIAEQ/gIgASAAQQhqEIY0DwsgASAAQQhqEIg0DwsgACgCBCABEP4CIAAoAgggARD+AiAAQQxqKAIAIQAMEwsCQCAALQAYQQVHDQAgACgCECABEP4CCyAAKAIMIgNFDRAgA0EEdCEDIAAoAghBDGohAANAIAAoAgAgARD+AiAAQRBqIQAgA0FwaiIDDQAMEQsLIAAoAhAgARD+AiAAKAIEQYCAgIB4Rg0PIAAoAgwiA0UNDyADQQR0IQMgACgCCEEMaiEAA0AgACgCACABEP4CIABBEGohACADQXBqIgMNAAwQCwsgACgCDCIDRQ0OIAAoAgghACADQQJ0IQMDQCAAKAIAIAEQ/gIgAEEEaiEAIANBfGoiAw0ADA8LCyABIABBCGoQ6QwPCyAAKAIMIgNFDQwgACgCCCEAIANBAnQhAwNAIAAoAgAgARD+AiAAQQRqIQAgA0F8aiIDDQAMDQsLIAAoAgQgARD+AiAAKAIIIgBBCGooAgAiA0UNCyAAQQRqKAIAIQAgA0ECdCEDA0AgACgCACABEP4CIABBBGohACADQXxqIgMNAAwMCwsCQCAAKAIMIgJFDQAgACgCCCEDIAJBKGwhAgNAIAMgARDgDCADQShqIQMgAkFYaiICDQALCwJAIAAoAhAiACgCAEGAgICAeEYNACAAIAEQpCoPCyAAKAIEIAEQ/gIPCwJAIAAtABxBAkYNACABIABBCGoQ6QwLIAAoAiAgARDvBg8LIAAoAgwiAA0KDAgLIABBBGooAgAhAAwJCyAAQQRqKAIAIQAMCAsgAEEgaiEDAkAgAC0ANEECRw0AIAMgARCRMQ8LIAEgAxDpDA8LIAAoAgQgARCICw8LIABBBGogARClKg8LIAAoAgQhAAwECyAAKAIEIAEQ/gIPCwJAIAAoAgQiACgCAEEDRg0AIAAgARCSOA8LIABBBGogARCqJA8LDwsgBCgCACEADAALC/cMAQN/A0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAIgJBdGoiA0EHIANBJkkbDiYdAAECAwQFBgcICQoLDB0dDQ4PEBEdEhMUHR0VFhcYGBkaGx0cHR0LIAAoAgwiA0UNHCAAKAIIIQAgA0EEdCEDA0ACQCAAKAIAQQJGDQAgACgCDCABEP8CCyAAQRBqIQAgA0FwaiIDDQAMHQsLIAAoAgwiA0UNGyAAKAIIIQAgA0EMbCEDA0ACQAJAIAAoAgAiAkUNACACIAEQ/wIMAQsgACgCBCABENINCyAAQQxqIQAgA0F0aiIDDQAMHAsLIAAoAiAgARDEDg8LIABBBGohAwwaCyAAQQxqKAIAIQAMGgsgACgCBCABEP8CIABBCGooAgAhAAwZCyAAQThqIQMCQCACQQtGDQACQAJAAkACQAJAAkACQAJAAkACQCACDgsAAQIDBAUGBwgJIgALIABBCGogARCcNCADKAIAIQAMIgsgACgCKCABEP8CIAAoAghBAkkNICAAQQxqIAEQqj0gAygCACEADCELIAAoAghBAUcNHyAAKAIMIAEQ/wIgAygCACEADCALIAAoAgQgARD/AiADKAIAIQAMHwsCQCAAKAIEIgQoAgAiAEEDRg0AIAQoAiAgARD/AiAAQQJJDR4gBEEEaiABEKo9IAMoAgAhAAwfCyAEKAIQIAEQ/wICQCAEQQxqKAIAIgBFDQAgAEEEdCECIARBCGooAgBBDGohAANAIAAoAgAgARD/AiAAQRBqIQAgAkFwaiICDQALCyAEKAIgIgBFDR0gACABEOEpIAMoAgAhAAweCyAAQQRqIAEQnTQgAygCACEADB0LIABBBGogARCdNCADKAIAIQAMHAsgACgCBCABEP8CIAMoAgAhAAwbCyAAQQRqIAEQnTQgAygCACEADBoLIABBBGogARD8ISADKAIAIQAMGQsgAEEIaiECAkACQCAAKAIEDgMAARkACyACIAEQ4h4gAygCACEADBkLIAIgARDxECADKAIAIQAMGAsgACgCKCABEP8CIAAoAghBAkkNFSAAQQxqIAEQqj0PCyAAKAIIQQFHDRQgAEEMaiABEKo9DwsgACgCBCABEP8CIAAoAgggARD/AiAAQQxqKAIAIQAMFQsCQCAALQAYQQVHDQAgACgCECABEP8CCwJAIAAoAgwiA0UNACADQQR0IQIgACgCCEEMaiEDA0AgAygCACABEP8CIANBEGohAyACQXBqIgINAAsLIAAoAigiAEUNEiAAIAEQ4SkPCyAAKAIQIAEQ/wICQCAAKAIEQYCAgIB4Rg0AIAAoAgwiA0UNACADQQR0IQIgACgCCEEMaiEDA0AgAygCACABEP8CIANBEGohAyACQXBqIgINAAsLIAAoAiAiAEUNESAAIAEQ4SkPCyAAKAIMIgNFDRAgACgCCCEAIANBAnQhAwNAIAAoAgAgARD/AiAAQQRqIQAgA0F8aiIDDQAMEQsLIAAoAgwiA0UNDyAAKAIIIQAgA0ECdCEDA0AgACgCACABEP8CIABBBGohACADQXxqIgMNAAwQCwsgACgCBCABEP8CAkAgACgCGCIDRQ0AIAMgARDhKQsgACgCCCIAQQhqKAIAIgNFDQ4gAEEEaigCACEAIANBAnQhAwNAIAAoAgAgARD/AiAAQQRqIQAgA0F8aiIDDQAMDwsLAkAgACgCDCICRQ0AIAAoAgghAyACQShsIQIDQCADIAEQjQogA0EoaiEDIAJBWGoiAg0ACwsCQAJAIAAoAhAiAygCAEGAgICAeEYNACADIAEQtSoMAQsgAygCBCABEP8CCwJAIAAoAiAiA0UNACADIAEQ5xwLIAAoAiQiAEUNDSABIAAoAgAQrAMPCyAAKAIgIAEQrgQPCyAAKAIMIgANDQwLCyAAQQRqKAIAIQAMDAsgAEEEaigCACEADAsLIAAtADRBAkcNCCAAQSBqEMwxDwsgACgCBCABEOYKDwsgAEEEaiABELYqDwsgAEEEaiABEJ00DwsgACgCBCEADAYLIABBBGogARCdNA8LIABBBGogARD8IQ8LIABBBGogARCdNA8LAkAgACgCBCIAKAIAQQNGDQAgACABEM4xDwsgAEEEaiABEOMeCw8LIAMoAgAhAAwACwuUDQEFfyMAQRBrIgIkAAJAAkADQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiA0F0aiIEQQcgBEEmSRsOJhsAARYCAwQFBgcICQoLGxsMDQ4PEBsRERIbGxMUFRUVFRcYGxobGwsgACgCDCIERQ0aIAAoAgghACAEQQR0IQQDQAJAIAAoAgBBAkYNACAAQQxqKAIAIAEQgAMLIABBEGohACAEQXBqIgQNAAwbCwsgACgCDCIERQ0ZIAAoAgghACAEQQxsIQQDQAJAAkAgACgCACIDRQ0AIAMgARCAAwwBCyAAQQRqKAIAIAEQ2A4LIABBDGohACAEQXRqIgQNAAwaCwsgACgCBCEADBYLIAAoAgwhAAwVCyAAKAIEIAEQgAMgACgCCCEADBQLAkACQCADQQtGDQACQAJAAkACQAJAAkACQAJAAkAgAw4LCgABAgMEBQYHCAoKCyAAKAIoIAEQgAMgACgCCEECSQ0JIABBDGogARCvPSAAKAI4IQAMHQsgACgCCEEBRw0IIABBDGogARCvPSAAKAI4IQAMHAsgACgCBCABEIADIAAoAjghAAwbCyAAKAIEIAEQ8RkgACgCOCEADBoLIABBBGogARCwPSAAKAI4IQAMGQsgAEEEaiABELA9IAAoAjghAAwYCyAAQQRqIAEQrz0gACgCOCEADBcLIABBBGogARCwPSAAKAI4IQAMFgsgAEEEaiABELE9IAAoAjghAAwVCyAAQQhqIQQCQAJAIAAoAgQOAwABAgALIAQgARCLJiAAKAI4IQAMFQsgBCABEKoZCyAAKAI4IQAMEwsgACgCKCABEIADIAAoAghBAkkNFCAAQQxqIAEQrz0MFAsgACgCCEEBRw0TIABBDGogARCvPQwTCyAAKAIEIAEQgAMgACgCCCABEIADIAAoAgwhAAwQCwJAIAAtABhBBUcNACAAKAIQIAEQgAMLIAAoAgwiBEUNESAEQQR0IQQgACgCCEEMaiEAA0AgACgCACABEIADIABBEGohACAEQXBqIgQNAAwSCwsgACgCECABEIADIAAoAgRBgICAgHhGDRAgACgCDCIERQ0QIARBBHQhBCAAKAIIQQxqIQADQCAAKAIAIAEQgAMgAEEQaiEAIARBcGoiBA0ADBELCyAAKAIMIgRFDQ8gACgCCCEAIARBAnQhBANAIAAoAgAgARCAAyAAQQRqIQAgBEF8aiIEDQAMEAsLIAAoAgwiBEUNDiAAKAIIIQAgBEECdCEEA0AgACgCACABEIADIABBBGohACAEQXxqIgQNAAwPCwsgACgCBCABEIADIAAoAggiAEEIaigCACIERQ0NIABBBGooAgAhACAEQQJ0IQQDQCAAKAIAIAEQgAMgAEEEaiEAIARBfGoiBA0ADA4LCwJAIAAoAgwiA0UNACAAKAIIIQQgA0EobCEDA0AgBCABELsOIARBKGohBCADQVhqIgMNAAsLAkAgACgCECIAKAIAQYCAgIB4Rg0AIAAgARC4KgwNCyAAKAIEIAEQgAMMDAsgACgCICABEMUGDAsLIAAoAgwiAA0IDAoLIAAoAgQhAAwHCyAALQA0QQJHDQggAEEgahDMMQwICyAAKAIEIgVBwABqEKE0AkAgBSgChAEiAEUNACAAQdgAbCEEIAUoAoABQQRqIQADQAJAAkAgAEF8aigCACIDQQVGDQAgA0EERg0BAkACQAJAIAMOBAQAAQIECyAAKAIAQQFHDQMgAEEEaigCACABEIADDAMLIAAoAgAgARD1BgwCCyAAIAEQlRIMAQsgACgCACABEIADCyAAQdgAaiEAIARBqH9qIgQNAAsLAkAgBSgCmAEiAEUNACAFKAKUASIDIABBKGxqIQYDQAJAAkACQAJAAkAgAygCAA4FBAABAgMECyADKAIEQQFHDQMgAygCCCABEIADDAMLIAMoAgQgARCAAwwCCyADKAIEIAEQ9QYMAQsgAygCDCEEIAMoAgghACACIAE2AgwgBEUNACAEQShsIQQDQCACQQxqIAAQ5wogAEEoaiEAIARBWGoiBA0ACwsgA0EoaiIDIAZHDQALCyAFLQA8QQZGDQcgBUEQahChNAwHCyAAQQRqIAEQhQoMBgsgACgCBCEADAMLIAAoAiAgARCZEQwECyAAKAIEIAEQgAMMAwsgACgCBCEADAALCyAAKAIEIAEQ8RkLIAJBEGokAAv0DAEIfyMAQcAAayIDJAAgACwACSEEIAAtAAAhBQJAAkACQCAAEPgrIgYNACABQaKJggFBAiACKAIMEQsADQELAkAgAC0AASIHQQRHIghFDQAgACgAASIJQQh2IQoCQAJAAkACQCAJQf8BcQ4EAgABAwILIAEgCkH/AXFBgAFzQQJ0QejsogFqKAIAQRAgAigCDBELAA0EDAMLIAEgCkGAAXNB/wFxQQJ0IglB6PyiAWooAgAgCUHo9KIBaigCACACKAIMEQsADQMMAgsgASAKwEECdEGk7KIBaigCAEECIAIoAgwRCwANAgwBCyADIAo6AAEgAyAJQRh2OgADIAMgCUEQdjoAAiADIANBAWo2AgRBASEJIAMgA0EBakEBajYCCCADIANBA2o2AgwgA0EDNgIUIANB2NuCATYCECADQgM3AhwgA0HrADYCPCADQesANgI0IANB6wA2AiwgAyADQShqNgIYIAMgA0EMajYCOCADIANBCGo2AjAgAyADQQRqNgIoIAEgAiADQRBqEIo1DQILAkAgAC0ABUEERg0AIAAoAAUhAAJAIAdBBEYNAEEBIQkgAUHEq6EBQQEgAigCDBELAA0DCyAAQQh2IQkCQAJAAkACQCAAQf8BcQ4EAwABAgMLIAEgCUH/AXFBgAFzQQJ0QfCFowFqKAIAQRAgAigCDBELAA0EDAMLIAEgCUGAAXNB/wFxQQJ0IgBB8JWjAWooAgAgAEHwjaMBaigCACACKAIMEQsADQMMAgsgAyAAQRh2OgADIAMgAEEQdjoAAiADIAk6AAEgAyADQQFqNgIEQQEhCSADIANBAWpBAWo2AgggAyADQQNqNgIMIANBAzYCFCADQfjbggE2AhAgA0IDNwIcIANB6wA2AjwgA0HrADYCNCADQesANgIsIAMgA0EoajYCGCADIANBDGo2AjggAyADQQhqNgIwIAMgA0EEajYCKCABIAIgA0EQahCKNQ0DDAELIAEgCcBBAnQiAEGshaMBaigCACAAQeiEowFqKAIAIAIoAgwRCwANAQsCQAJAIARBAEcgBXJBAXFFDQACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBUEBcQ0AIARFDRsgBEEBcQ0BIARBAnENAwwKCyAHQQRHDQEgAigCDCEADAMLIAIoAgwhACAHQQRHDQMMBAtBASEJIAFBxKuhAUEBIAIoAgwiABELAEUNAQwbCyACKAIMIQAgB0EERw0EDAULQQEhCSABQaSJggFBASAAEQsADRkgBEUNFkEBIQggBEEBcUUNAgtBASEJIAFBxKuhAUEBIAARCwANGAtBASEJIAFBpYmCAUEBIAARCwANF0EBIQggBEECcUUNAwwBCyAEQQJxRQ0CC0EBIQkgAUHEq6EBQQEgABELAA0VC0EBIQkgAUGmiYIBQQEgABELAA0UIARBBHENASAEQQhxDQMMBAsCQCAEQQRxDQAgBEEIcUUNBSACKAIMIQAgCA0DDAYLIAIoAgwhACAIRQ0BC0EBIQkgAUHEq6EBQQEgABELAA0SC0EBIQkgAUGniYIBQQEgABELAA0RIARBCHFFDQELQQEhCSABQcSroQFBASAAEQsARQ0CDBALQQEhCAsCQCAEQRBxDQAgBEEgcUUNByACKAIMIQAgCA0FDAgLIAIoAgwhACAIDQEMAwtBASEJIAFBqImCAUEBIAARCwANDSAEQRBxRQ0BC0EBIQkgAUHEq6EBQQEgABELAEUNAQwMCyAEQSBxDQEMAgtBASEJIAFBqYmCAUEBIAARCwANCiAEQSBxRQ0BC0EBIQkgAUHEq6EBQQEgABELAEUNAgwJC0EBIQgLAkAgBEHAAHENACAIIQkMBAsgAigCDCEAIAgNAQwCC0EBIQkgAUGqiYIBQQEgABELAA0GQQEhCSAEQcAAcUUNAgtBASEJIAFBxKuhAUEBIAARCwANBQtBASEJIAFBq4mCAUEBIAARCwANBAsgBEF/Sg0AAkACQCAJDQAgAigCDCEADAELQQEhCSABQcSroQFBASACKAIMIgARCwANBAsgBiABQayJggFBASAAEQsAIglyRQ0BDAMLAkAgBkUNAEEAIQkMAwsgAigCDCEACyABQefHiAFBASAAEQsAIQkMAQtBASEJCyADQcAAaiQAIAkL8QwCCn8EfiMAQZABayICJAAgARDtDhogAUHUAkHYAiABLQDhAkECRhtqKAIAIQMgAkHQAGogARDuDgJAAkACQAJAAkACQAJAIAItAFANACACLQBRIQQgARDtDhogAUHUAkHYAiABLQDhAkECRhtqKAIAIQUgAkHQAGogARDqBSACKAJUIQYgAigCUCIHQQdGDQEgAkEoakEgaiACQdAAakEgaikDADcDACACQShqQRhqIAJB0ABqQRhqKQMANwMAIAJBKGpBEGogAkHQAGpBEGopAwA3AwAgAiACKQNYNwMwIAIgBjYCLCACIAc2AihBACEIIAEtAJgCQQJHDQRBACEIAkAgARDtDiIJRQ0AIAktAABBCkcNACABQQI6AOECIAEgASgC3AIiCTYC1AIgASABKALYAiIKNgLQAgJAAkAgB0EDSw0AIAdBAkcNAQsCQCABLQCYAkECRw0AIAEtAJsCQQFxDQILIAEtAJECQcAAcQ0BIAJB5oCAgHg2AlAgCiAJIAJB0ABqEP4iIQYCQCABEO0OIgNFDQAgAy0AAEGbAUcNACABQQI6AOECIAEgASkD2AI3A9ACIAEgARDfGBD1GAsgAEEHNgIAIAAgBjYCBAwHC0EBIQggAkEBOgBECwJAAkACQAJAAkACQAJAAkAgBw4HAwQAAQYMAgMLIAJBMGohCgwECyACQThqIQoMAwsgAkEBNgJUIAJBsIKbATYCUCACQgE3AlwgAkGlBTYCfCACIAJB+ABqNgJYIAIgAkEoajYCeCACQdAAakG4gpsBEK0uAAsgAkEQaiABELUIIAIoAhQhBSACKAIQRQ0HIABBBzYCACAAIAU2AgQMCQsgAkE4aiEKCyACQRhqIAEQtQggAigCHCEJIAIoAhgNAQJAIAlFDQAgCiAFIAEoAtQCIgsgBSALSxs2AgQgCiAFIAsgBSALSRs2AgALAkAgAigCQCIFRQ0AIAUoAgAiChDZBCAKQeAAQQgQ7hwgBUEMQQQQ7hwLIAIgCTYCQAwGCyACQSBqIAEQtQggAigCJCEJIAIoAiBFDQMgAEEHNgIAIAAgCTYCBAwGCyAAQQc2AgAgACAJNgIEDAULIAIoAlQhASAAQQc2AgAgACABNgIEDAULIABBBzYCACAAIAY2AgQMBAsgCUUNASAJELcwIAIgBSABKALUAiIJIAUgCUsbIgo2AjggAiAFIAkgBSAJSRsiBTYCNCACQbaBgIB4NgJQIAEgBSAKIAJB0ABqEJYqDAELIAIoAkgQtzAgAiAFNgJICwJAAkACQAJAAkAgARDtDiIFRQ0AIAUtAABBF0YNAQsgAkGAAWogAkHEAGopAgA3AwAgAkGIAWogAkHMAGooAgA2AgAgAiACKQI8NwN4IAIoAjghCCACKAI0IQkgAigCMCEFDAELIAFBAjoA4QIgASABKQPYAjcD0AICQCAIRQ0AIAJBCGogAkEoahCjBCACKAIMIQYgAigCCCEHIAJB+ICAgHg2AlAgASAHIAYgAkHQAGoQlioLIAIgARCXBiACKAIEIQUgAigCAA0BAkAgAS0AkQJBwABxRQ0AIAEoAtQCIQYgAkGpgYCAeDYCUCABIAMgBiADIAZJGyADIAYgAyAGSxsgAkHQAGoQlioLQQAtAMD/owEaIAEoAtQCIQdBKBCMASIGRQ0CIAJBKGpBCGopAwAhDCACQShqQRBqKQMAIQ0gAkEoakEYaikDACEOIAIpAyghDyAGQSBqIAJBKGpBIGopAwA3AwAgBkEYaiAONwMAIAZBEGogDTcDACAGQQhqIAw3AwAgBiAPNwMAIAMgByADIAdLGyEIIAMgByADIAdJGyEJQQQhBwsCQCAEQQFxDQAgACACKQN4NwIUIAAgCDYCECAAIAk2AgwgACAFNgIIIAAgBjYCBCAAIAc2AgAgAEEkaiACQYgBaigCADYCACAAQRxqIAJBgAFqKQMANwIADAQLIAEoAtQCIQQgAkGogYCAeDYCUCABIAMgBCADIARJGyADIAQgAyAESxsgAkHQAGoQliogAEEkaiACQYgBaigCADYCACAAQRxqIAJBgAFqKQMANwIAIAAgAikDeDcCFCAAIAg2AhAgACAJNgIMIAAgBTYCCCAAIAY2AgQgACAHNgIADAMLIABBBzYCACAAIAU2AgQMAQsACyACQShqEOMNCyACQZABaiQAC9kLAhB/BH4CQAJAAkACQAJAAkAgACgCDCICQX9GDQACQCACIAAoAgQiAyADQQFqIgRBA3YiBUEHbCIGIANBCEkbIgdBAXZJDQACQAJAIAIgByACIAdLGyIHQQdJDQAgB0H+////AUsNA0F/IAdBA3RBCGpBB25Bf2pndkEBaiEHDAELQQRBCCAHQQNJGyEHCyAHrUIofiISQiCIpw0BIBKnIgUgB0EIaiIIaiIJIAVJDQEgCUH5////B08NAUEALQDA/6MBGiAJEIwBIglFDQIgCSAFakH/ASAIEO8RIQogB0F/aiILIAdBA3ZBB2wgB0EJSRshDAJAIAINACAAKAIAIQ0MBgsgCkEIaiEOIAAoAgAiDUFYaiEPIA0pAwBCf4VCgIGChIiQoMCAf4MhEyANIQdBACEIIAIhEANAAkAgE0IAUg0AA0AgCEEIaiEIIAcpAwghEiAHQQhqIgUhByASQoCBgoSIkKDAgH+DIhJCgIGChIiQoMCAf1ENAAsgEkKAgYKEiJCgwIB/hSETIAUhBwsCQCAKIAsgD0EAIBN6p0EDdiAIaiIRa0EobGoQ0CIiFKdxIglqKQAAQoCBgoSIkKDAgH+DIhJCAFINAEEIIQUDQCAJIAVqIQkgBUEIaiEFIAogCSALcSIJaikAAEKAgYKEiJCgwIB/gyISUA0ACwsgE0J/fCEVAkAgCiASeqdBA3YgCWogC3EiBWosAABBAEgNACAKKQMAQoCBgoSIkKDAgH+DeqdBA3YhBQsgFSATgyETIAogBWogFEIZiKciCToAACAOIAVBeGogC3FqIAk6AAAgCiAFQX9zQShsaiIFQSBqIA0gEUF/c0EobGoiCUEgaikAADcAACAFQRhqIAlBGGopAAA3AAAgBUEQaiAJQRBqKQAANwAAIAVBCGogCUEIaikAADcAACAFIAkpAAA3AAAgEEF/aiIQRQ0GDAALCyAAKAIAIRACQCAFIARBB3FBAEdqIgVFDQAgECEHA0AgByAHKQMAIhJCf4VCB4hCgYKEiJCgwIABgyASQv/+/fv379+//wCEfDcDACAHQQhqIQcgBUF/aiIFDQALCwJAIARBCEkNACAQIARqIBApAAA3AAAMAwsgEEEIaiAQIAQQ8T0aIAQNAkEAIQcMAwsQ9isLAAsgEEEIaiEOIBBBWGohDCAQIQtBACEHA0ACQCAQIAciEWoiBC0AAEGAAUcNACAMQQAgEWtBKGxqIQ0gECARQX9zQShsaiEPAkADQCADIA0Q0CIiE6dxIgkhBQJAIBAgCWopAABCgIGChIiQoMCAf4MiEkIAUg0AQQghByAJIQUDQCAFIAdqIQUgB0EIaiEHIBAgBSADcSIFaikAAEKAgYKEiJCgwIB/gyISUA0ACwsCQCAQIBJ6p0EDdiAFaiADcSIFaiwAAEEASA0AIBApAwBCgIGChIiQoMCAf4N6p0EDdiEFCyAFIAlrIBEgCWtzIANxQQhJDQEgECAFaiIHLQAAIQkgByATQhmIpyIIOgAAIA4gBUF4aiADcWogCDoAAAJAIAlB/wFGDQBBWCEHIBAgBUFYbGohCgNAIAsgB2oiBS0AACEJIAUgCiAHaiIILQAAOgAAIAggCToAACAHQQFqIgcNAAwCCwsLIARB/wE6AAAgDiADIBFBeGpxakH/AToAACAQIAVBf3NBKGxqIgdBIGogD0EgaikAADcAACAHQRhqIA9BGGopAAA3AAAgB0EQaiAPQRBqKQAANwAAIAdBCGogD0EIaikAADcAACAHIA8pAAA3AAAMAQsgBCATQhmIpyIHOgAAIA4gAyARQXhqcWogBzoAAAsgEUEBaiEHIAtBWGohCyARIANHDQALIAMgBiADQQhJGyEHCyAAIAcgAms2AggMAQsgACALNgIEIAAgCjYCACAAIAwgAms2AgggA0UNACADIAStQih+pyIHakEJaiIFRQ0AIA0gB2sgBUEIEO4cQYGAgIB4DwtBgYCAgHgL5gsBDX8jAEEgayICJABBASEDIAEgASgC5AEiBEEBaiIFNgLkASABKAL0ASEGAkAgBCwAACIHQX9KDQAgASAEQQJqIgU2AuQBIAQtAAFBP3EhCCAHQR9xIQkCQAJAIAdBYE8NACAJQQZ0IAhyIQQMAQsgASAEQQNqIgU2AuQBIAhBBnQgBC0AAkE/cXIhCAJAIAdBcE8NACAIIAlBDHRyIQQMAQsgASAEQQRqIgU2AuQBIAhBBnQgBC0AA0E/cXIgCUESdEGAgPAAcXIhBAsgBEGAAUkNAEECIQMgBEGAEEkNAEEDQQQgBEGAgARJGyEDCyABKALoASEEIAEtAMcBIQcgASADIAZqIgg2AvQBAkACQCABLQCYAkECRw0AIAEoApACQYDgAHFBgCBHDQAgAEGAJDsBAAwBC0ESIQNBACEJAkAgBCAFRg0AAkACQAJAAkACQAJAIAUtAAAiCkEhRw0AIAVBAWoiCyAERg0GAkAgCywAACIKQX9KDQAgBS0AAkE/cSEMIApBH3EhDQJAIApBYEkNACAMQQZ0IAUtAANBP3FyIQwCQAJAIApBcE8NACAMIA1BDHRyIQwMAQsgDEEGdCAFLQAEQT9xciANQRJ0QYCA8ABxciEMCyAMQS1HDQggCkFgTw0DIAVBA2ohCgwECyANQQZ0IAxyQS1HDQcgBUEDaiEKDAMLIApBLUcNBiAFQQJqIQoMAgsCQCAKwEF/Sg0AIApBH3EiDEEGdCAFLQABQT9xIg1yIQsCQCAKQeABSQ0AIA1BBnQgBS0AAkE/cXIhDgJAAkAgCkHwAU8NACAOIAxBDHRyIQ4MAQsgDkEGdCAFLQADQT9xciAMQRJ0QYCA8ABxciEOCyAOQTxHDQcgASAFQQJqIgk2AuQBIApB4AFJDQUgASAFQQNqIgk2AuQBIA1BBnQgBS0AAkE/cXIhAyAKQfABTw0EIAMgDEEMdHIhCwwFCyALQTxHDQYgASAFQQJqIgU2AuQBQQEhAwwFCyAKQTxHDQVBASEDIAEgBUEBaiIFNgLkAQwECyALQQRBAyAKQW9LG2ohCgsgCiAERg0DAkACQCAKLAAAIgtBf0wNACALQf8BcSEKDAELIAotAAFBP3EhDCALQR9xIQ0CQCALQV9LDQAgDUEGdCAMciEKDAELIAxBBnQgCi0AAkE/cXIhDAJAIAtBcE8NACAMIA1BDHRyIQoMAQsgDEEGdCAKLQADQT9xciANQRJ0QYCA8ABxciEKCyAKQS1HDQMgAUEDEL0GIAEQxAIgAkGmgICAeDYCCCABIAYgAkEIahD2EiAAIAEQ6hMMBAsgASAFQQRqIgk2AuQBIANBBnQgBS0AA0E/cXIgDEESdEGAgPAAcXIhCwsCQAJAIAtBgAFPDQBBASEDDAELAkAgC0GAEE8NAEECIQMMAQtBA0EEIAtBgIAESRshAwsgCSEFCyABIAMgCGoiCDYC9AFBNSEDQQEhCQsCQAJAIAQgBUcNACADIQgMAQsCQCAFLQAAQT1GDQAgAyEIDAELIAEgCEEBajYC9AEgASAFQQFqIgU2AuQBQTMhCAJAAkACQCADQW5qDgIDAQALIANBNUYNAUGUzqEBQShBgNGaARDTJwALQTQhCAwBC0EkIQgLAkAgCSAHcUUNACAFIAQgBWtBkNGaAUEGEMgxRQ0AIAJBm4GAgHg2AgggASgCgAIgASgCkAIgBiAGQQdqIgUgBiAFSRsgBiAFIAYgBUsbIAJBCGoQ9xggAUEFEL0GIAEQxAICQCABKALoASABKALkASIFRw0AIABBgLgCOwEADAILAkAgBS0AACIEQQJ0QfTgmgFqKAIAIgUNACABIAEoAvQBIgVBAWoiAzYC9AEgASABKALsASIGIAEoAvABajYC6AEgASAGIAMgASgC+AFrajYC5AEgAkGhgICAeDYCCCACIAQ2AgwgACAFIAUgAkEIahCjMwwCCyAAIAEgBREHAAwBCyAAQQA6AAAgACAIOgABCyACQSBqJAAL5w0CBH8CfiMAQeABayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQANAAkACQAJAAkACQAJAAkAgACgCAA4TABQUAQIDBAUGCAkKAQELDA0ODwALIAEgAEEEahC/EgwTCyABIAAoAgQQ2TIgACgCCCEADAULIAAoAgwiAEUNESABIAAQ2TIMEQsgAS0AOSEDIAFBAjoAOSABIABBEGoQoBkgASADOgA5IAAoAighAAwDCyABLQA5IQMgAUECOgA5AkAgAC0AJEECRg0AIAEgAEEQahCgGQsgASADOgA5DA8LIAEtADkhAyABQQI6ADkCQCAALQAkQQJGDQAgASAAQRBqEKAZCyABIAM6ADkMDgsgASAAKAIEENkyIAAoAgggARCFAyAAKAIUIgANAAwNCwsgAS0AOSEDIAFBAToAOSAAKAIQIAEQ/gEgASADOgA5IAAoAgghAyAAKAIMIQAgASgCMBC0GCEEIAJBgAFqQTRqIAFBNGooAgA2AgAgAkEAOgCoASACQYgBakEAKQPg4qIBIgY3AwAgAkGQAWoiBUEAKQPY4qIBIgc3AwAgAkGAAWpBGGogBjcDACACIAE2AqABIAIgBDYCpAEgAkEBOgC5ASACIAEpAiw3AqwBIAIgASgBOjYBugEgAiABLQA4OgC4ASACIAc3A4ABAkAgAEUNACADIABBGGxqIQQDQCACQYABaiADEJkNAkAgAygCFCIARQ0AIAItALkBIQEgAkEBOgC5ASAAIAJBgAFqEP4BIAIgAToAuQELIANBGGoiAyAERw0ACwsgAkGAAWoQoQwgBRCsDAwLCyABIAAoAgQQ2TIMCgsgASAAKAIEIgBByABqEL8SIABB4ABqIQMgACgCACIFQQhGDQggASgCMBC0GCEEIAJBgAFqQTRqIAFBNGooAgA2AgAgAkEAOgC5ASACQYABakEIakEAKQPg4qIBIgY3AwAgAkGQAWpBACkD2OKiASIHNwMAIAJBmAFqIAY3AwAgAiABNgKgASACIAQ2AqQBIAJBAToAqAEgAiABKQIsNwKsASACIAEoATo2AboBIAIgAS0AODoAuAEgAiAHNwOAASAFQQdHDQUMBwsgASgCMBC0GCEDIAJBgAFqQTRqIAFBNGooAgA2AgAgAkGIAWpBACkD4OKiASIGNwMAIAJBkAFqQQApA9jiogEiBzcDACACQZgBaiAGNwMAIAIgATYCoAEgAiADNgKkASACQQA6AKgBIAIgASkCLDcCrAEgAiAHNwOAASACIAEoATo2AboBIAIgAS0AODoAuAEgAkEAOgC5ASAAKAIEIgFBAkYNBSAAKAIIIQMCQCABQQFxDQAgAkGAAWogAxDZGwwGCyACQYABaiADENkyDAULIAEoAjAQtBghAyACQYABakE0aiABQTRqKAIANgIAIAJBADoAqAEgAkGIAWpBACkD4OKiASIGNwMAIAJBkAFqIgRBACkD2OKiASIHNwMAIAJBmAFqIAY3AwAgAiABNgKgASACIAM2AqQBIAJBAToAuQEgAiABKQIsNwKsASACIAEoATo2AboBIAIgAS0AODoAuAEgAiAHNwOAASAAQQRqIAJBgAFqEKEuIAItALkBIQEgAkEBOgC5ASAAKAIMIAJBgAFqEP4BIAIgAToAuQEgAkGAAWogACgCEBD4DyACQYABahChDCAEEKwMDAcLIAEoAjAQtBghAyACQYABakE0aiABQTRqKAIANgIAIAJBADoAqAEgAkGIAWpBACkD4OKiASIGNwMAIAJBkAFqIgRBACkD2OKiASIHNwMAIAJBmAFqIAY3AwAgAiABNgKgASACIAM2AqQBIAJBAToAuQEgAiABKQIsNwKsASACIAEoATo2AboBIAIgAS0AODoAuAEgAiAHNwOAASAAQQRqIAJBgAFqEKEuIAItALkBIQEgAkEBOgC5ASAAKAIMIAJBgAFqEP4BIAIgAToAuQEgAkGAAWogACgCEBD4DyACQYABahChDCAEEKwMDAYLIABBCGogARDgAgwFCyABIAAoAgQQ2TIMBAsgACACQYABahCuEyACKAKkASEEDAELIAJBAToAuQECQCAAKAIYIgFFDQAgASACQYABahD+AQsgAkEBOgC5AQJAIAAoAhwiAUUNACABIAJBgAFqEP4BIAJBAToAuQELIAJBgAFqIAAoAgwQ+A8gAkGAAWoQoQwgAkGQAWoQrAwMAgsgAkEBOgC5AQJAIAAoAjwNACAERQ0AIABBACAEENIGNgI8CyACQYABaiAAQShqEJkNIAJBgAFqEKEMIAJBkAFqEKwMCyADKAIAQYCAgIB4Rg0AIAEgAxC/EgsgAkHgAWokAAvGDAIRfwF+IwBB0ABrIgQkACAEQTRqIAMQmyMgBCgCOCEFIAQoAjQhBgJAAkACQAJAAkACQAJAIAQtADxBAUYNAEECIQcMAQsgBC0APSEIAkAgAUHYBGoiB0HQ5YMBEJ86DQAgBEEgaiAHIAhBA3ZBEHFqIgcpAwAgB0EIaikDACAIQf8AcRDDHCAEKQMgQgGDUA0AIAQgCK1CIIZCBIQ3A0AMAgsgASAIakHYAGotAAAhBwsgB0H/AXEhCAJAAkACQAJAIAYOAwIAAQILIAhBBmohCAwBCwJAIAEtAFFBAXENACAEIAWtQiCGQgKENwNADAMLAkAgBSABKAL4BCgC1AJPDQAgBUEGbCAIakEMaiEIDAELIAEQ9CAhCAwBCyACKAKIASIJIAhNDQIgAigChAEgCEECdGooAgAhCAsCQCAIQQBIDQAgBEEFNgJAIAQgCDYCRAwECyAEIAI2AkwgBCABNgJIIARBwABqIARByABqIAYgBSAHEJkBIAQoAkBBBUYNAwsgBCkDQCIVQiCIpyEGAkACQAJAAkAgFaciAkF9aiIIQQIgCEECSRsOAwIAAQILIAMoAhAiCEUNBCAGIAhBf2oQvSshCAwCCyACIAYQuCshCAwBCyADKAIQENstIQgLIAgQuxkhCCAAQQI2AgAgACAINgIEDAMLIAggCUHs1YMBEKEbAAtBqNSDAUEkQczUgwEQqh4ACyAEKAJEIQYgAygCDCEKAkACQCADKAIQIgggAygCFCIFSQ0AQQAhCwwBCyAIIAogCCAKSxshDCABQdgCaiENIAEoAvgEIQ4gAy0AGCEPIAMoAgghEEEAIQsDQAJAIAwgCEcNACAMIApB1NqDARChGwALAkACQAJAIAIoAnwiESAGQf///z9xIA0gECAIaiISLQAAIglqLQAAaiIHTQ0AAkAgAigCeCAHQQJ0aigCACIHQX9KDQAgBCACNgI4IAQgATYCNCAEQRhqIARBNGogBiAJQQh0EI0BIAQoAhhBAXENAiAEKAIcIQcLIAciBkH///8/TQ0CAkACQAJAAkAgBkGAgIDAAHENACAGQYCAgIAEcQ0BIAZBgICAgAJxDQIMBgtBACETAkAgDigC1AJBAUYNACABIAIgBhC/KyIHKAIAIAcoAgRBABDtGCETC0EBIQsgD0EBcQ0CIAghFAwFCyAAIBQ2AgggACATIAggC0EBcRs2AgQgACALQX9zQQFxNgIADAcLIBItAAAgCBC9KxC7GSEIIABBAjYCACAAIAg2AgQMBgsgACAINgIIIAAgEzYCBCAAQQA2AgAMBQsgByARQYjUgwEQoRsACyAIENstELsZIQggAEECNgIAIAAgCDYCBAwDCyAFIAhBAWoiCEcNAAsgBSEICwJAAkACQAJAAkACQAJAAkACQCAFIApJDQAgAigCfCIJIAEtANcEQQFqIgUgBkH///8/cWoiB00NAwJAIAIoAnggB0ECdGooAgAiB0F/Sg0AIAQgAjYCOCAEIAE2AjQgBEEQaiAEQTRqIAYgBUEQdEEBchCNASAEKAIQQQFxDQMgBCgCFCEHCyAHQYCAgMAAcUUNASABKAL4BCgC1AJBAUcNBUEAIQggCiEUQQAhBgwICyACKAJ8IgwgBkH///8/cSABIAMoAgggBWotAAAiCWpB2AJqLQAAaiIHTQ0DAkAgAigCeCAHQQJ0aigCACIHQX9KDQAgBCACNgI4IAQgATYCNCAEQQhqIARBNGogBiAJQQh0EI0BIAQoAghBAXENBiAEKAIMIQcLAkAgB0GAgIDAAHENACAHQYCAgIACcUUNASAJIAUQvSshCAwHCwJAIAEoAvgEKALUAkEBRw0AQQAhCCAFIRRBACEGDAgLQQAhBiABIAIgBxC/KyIIKAIAIAgoAgRBABDtGCEIIAUhFAwHCyATIAggC0EBcRshCCALQX9zQQFxIQYMBgsgChDbLSEIDAQLIAcgCUGY1IMBEKEbAAsgByAMQYjUgwEQoRsAC0EAIQYgASACIAcQvysiCCgCACAIKAIEQQAQ7RghCCAKIRQMAgsgBRDbLSEICyAIELsZIQggAEECNgIAIAAgCDYCBAwBCyAAIBQ2AgggACAINgIEIAAgBjYCAAsgBEHQAGokAAv8CwINfwJ+IwBBwABrIgUkAAJAA0ACQAJAAkACQCABQSFJDQACQCADDQAgACABEKcMDAILIAAgAUEDdiIGQcQBbGohByAAIAZB8ABsaiEIAkACQCABQcAASQ0AIAAgCCAHIAYQ2xAhBgwBCyAAIQYgACgCBCIJIAgoAgQiCkkgACgCACILIAgoAgAiDEkgCyAMRhsiDSAJIAcoAgQiDkkgCyAHKAIAIglJIAsgCUYbRw0AIAcgCCANIAogDkkgDCAJSSAMIAlGG3MbIQYLIANBf2ohAyAGIABrQRxuIQcCQCACRQ0AIAIoAgQgACAHQRxsaiIIKAIESSACKAIAIgYgCCgCACILSSAGIAtGG0EBRw0ECyAHIAFJDQIMBQsgACABEPsECyAFQcAAaiQADwsgBUEgakEYaiIGIABBGGoiCSgCADYCACAFQSBqQRBqIgsgAEEQaiIKKQIANwMAIAVBIGpBCGoiDCAAQQhqIg0pAgA3AwAgBSAAKQIANwMgIAAgB0EcbGoiB0EIaiIIKQIAIRIgB0EQaiIOKQIAIRMgB0EYaiIPKAIAIRAgACAHKQIANwIAIAkgEDYCACAKIBM3AgAgDSASNwIAIA8gBigCADYCACAOIAspAwA3AgAgCCAMKQMANwIAIAcgBSkDIDcCACAFIABBHGoiCDYCDCAGIABBNGooAgA2AgAgCyAAQSxqKQIANwMAIAwgAEEkaikCADcDACAFIAApAhw3AyAgBUEANgIcIAUgAEE4aiIHNgIYIAUgCDYCECAAIAFBHGwiDmohCCAFIAVBIGo2AhQCQANAAkAgByAISQ0AIAUoAgwgDmpBZGohCANAIAcgCEYNAyAAIAVBDGogBUEQahC4DyAFKAIYIQcMAAsLIAAgBUEMaiAFQRBqELgPIAUoAhghBwwACwsgBSAFKAIUNgIYIAAgBUEMaiAFQRBqELgPIAUoAhwiCCABTw0CIAYgCSgCADYCACALIAopAgA3AwAgDCANKQIANwMAIAUgACkCADcDICAAIAhBHGxqIgdBCGoiDikCACESIAdBEGoiDykCACETIAdBGGoiECgCACERIAAgBykCADcCACAJIBE2AgAgCiATNwIAIA0gEjcCACAQIAYoAgA2AgAgDyALKQMANwIAIA4gDCkDADcCACAHIAUpAyA3AgAgACAIIAIgAyAEEIcDIAEgCEF/c2ohASAHQRxqIQAgByECDAELIAVBIGpBGGoiAiAAQRhqIgwoAgA2AgAgBUEgakEQaiIGIABBEGoiCSkCADcDACAFQSBqQQhqIgsgAEEIaiIKKQIANwMAIAUgACkCADcDICAIQQhqIgcpAgAhEiAIQRBqIg0pAgAhEyAIQRhqIg4oAgAhDyAAIAgpAgA3AgAgDCAPNgIAIAkgEzcCACAKIBI3AgAgDiACKAIANgIAIA0gBikDADcCACAHIAspAwA3AgAgCCAFKQMgNwIAIAUgAEEcaiIINgIMIAIgAEE0aigCADYCACAGIABBLGopAgA3AwAgCyAAQSRqKQIANwMAIAUgACkCHDcDICAFQQA2AhwgBSAAQThqIgc2AhggBSAINgIQIAAgAUEcbCINaiEIIAUgBUEgajYCFAJAA0ACQCAHIAhJDQAgBSgCDCANakFkaiEIA0AgByAIRg0DIAAgBUEMaiAFQRBqELkPIAUoAhghBwwACwsgACAFQQxqIAVBEGoQuQ8gBSgCGCEHDAALCyAFIAUoAhQ2AhggACAFQQxqIAVBEGoQuQ8gBSgCHCIIIAFPDQEgAiAMKAIANgIAIAYgCSkCADcDACALIAopAgA3AwAgBSAAKQIANwMgIAAgCEEcbGoiB0EIaiINKQIAIRIgB0EQaiIOKQIAIRMgB0EYaiIPKAIAIRAgACAHKQIANwIAIAwgEDYCACAJIBM3AgAgCiASNwIAIA8gAigCADYCACAOIAYpAwA3AgAgDSALKQMANwIAIAcgBSkDIDcCACAFIAhBAWogACABEMItQQAhAiAFKAIEIQEgBSgCACEADAALCwAL0gwBCX8jAEHAAGsiAiQAAkACQAJAAkADQAJAIAEoAgAiA0FXakEFSw0AAkADQEEALQDA/6MBGkHAABCMASIERQ0BIARBADYCCCAEQjE3AwAgASgCBCEDIAEgBDYCBCACQQhqIgQgA0EIaikDADcDACACQRBqIgUgA0EQaikDADcDACACQRhqIgYgA0EYaikDADcDACACQSBqIgcgA0EgaikDADcDACACQShqIgggA0EoaikDADcDACACQTBqIgkgA0EwaikDADcDACACQThqIgogA0E4aikDADcDACACIAMpAwA3AwAgARD2ASABQThqIAopAwA3AwAgAUEwaiAJKQMANwMAIAFBKGogCCkDADcDACABQSBqIAcpAwA3AwAgAUEYaiAGKQMANwMAIAFBEGogBSkDADcDACABQQhqIAQpAwA3AwAgASACKQMANwMAIANBwABBCBDuHCABKAIAIgNBV2pBBk8NAgwACwsACwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgA0F0aiIEQQcgBEEmSRsOJh4AAQIDBAUGBwgJCgsMDR4ODxAREh4TExQeHhUWFxgYGRscHh0eHgsgASgCDCIDRQ0dIAEoAgghASADQQR0IQMDQAJAIAEoAgBBAkYNACAAIAFBDGooAgAQiAMLIAFBEGohASADQXBqIgMNAAweCwsgASgCDCIDRQ0cIAEoAgghASADQQxsIQMDQAJAAkAgASgCACIERQ0AIAAgBBCIAwwBCyABQQRqKAIAIAAQrAoLIAFBDGohASADQXRqIgMNAAwdCwsCQCABLQAcQQJGDQAgAUEAOgAcCyABKAIgIAAQzBoMGwsgASgCBCEBDBYLIAEoAgwh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ATYCTCADQaTXoQE2AkggA0IBNwJUIAMgA0EwajYCaCADIANB6ABqNgJQIANBJGogA0HIAGoQ5iIgA0EYaiABEPsgIAMoAhwhAiADKAIYIQUgA0EBNgJMIANBpNehATYCSCADQgE3AlQgA0GiAjYCNCADIANBMGo2AlAgAyADQSBqNgIwIANB6ABqIANByABqEOYiIANB/ABqIANBLGooAgA2AgAgAyADKQIkNwJ0IAUgAiADQegAahD+IiECIAEQsBYiBUUNBSAFKAIAQSRHDQUgASABKQMYNwNQIAEoAgAhBSABQSU2AgAgBUEkRw0BIAEgASgCBBDjEwwFCyABIAEpAxg3A1AgASgCACECIAFBJTYCACADQcgAakEMaiABQQxqKQIANwIAIANByABqQRRqIAFBFGooAgA2AgAgAyABKQIENwJMIAMgAjYCSCABQQRqIQcgA0HIAGoQ4RAgARDvMSEIAkAgARCwFiICDQBBACEJDAMLQQAhCSADQdgAakEAKQOYqpkBNwMAIANB0ABqQQApA5CqmQE3AwAgA0EAKQOIqpkBNwNIIANByABqIAIQhwchAiADQcgAahDhECACRQ0CIAEoAswCIQYgARDCHiICRQ0CIAIoAgBBAkcNAiAGIAItAAggAkEJai0AABC2Dg0CAkAgARCwFiICDQAgASgCsAIhAiADQYCAgIB4NgJIIAIgAiADQcgAahD+IiECDAILAkAgAigCAEEkRw0AIAEgASkDGDcDUCABKAIAIQIgAUElNgIAAkAgAkEkRw0AIAEoAgQhAgwDC0GUzqEBQShB2OGZARDTJwALIAEgASkDGDcDUCABKAIAIQIgAUElNgIAIANB1ABqIAdBCGopAgA3AgAgA0HcAGogB0EQaigCADYCACADIAcpAgA3AkwgAyACNgJIIANByABqEOEQQYiqmQEQ4RACQCABELAWRQ0AQQEhCQwDC0EBIQYgASgCsAIQiy4hAgwEC0GUzqEBQShB2OGZARDTJwALQYiqmQEQ4RAMAQsCQAJAAkACQAJAAkACQCABEMMoRQ0AIAEQwh4iAkUNACADQdgAakEAKQOwqpkBNwMAIANB0ABqQQApA6iqmQE3AwAgA0EAKQOgqpkBNwNIIANByABqIAIQhwchAiADQcgAahDhECACRQ0AIAkgARC6MkEBcyIKcg0BDAILQQAhCiAJRQ0BCyADQcgAaiABEIYIIAMoAlAhAiADKQNIIgtQDQUgAyADKAJUNgJEIAMgAjYCQCADIAs3AzhBACEGQQAhAiAKRQ0CIAEQsBYiAg0BIAEoArACIQIgA0GAgICAeDYCSCACIAIgA0HIAGoQ/iIhAgwDCyADQRBqIAFBACAFEMYKIAMoAhQhAiADKAIQIQYMBQsCQCACKAIAQSRHDQAgASABKQMYNwNQIAEoAgAhAiABQSU2AgACQCACQSRHDQAgASgCBCECDAMLQZTOoQFBKEHY4ZkBENMnAAsgASABKQMYNwNQIAEoAgAhAiABQSU2AgAgA0HUAGogB0EIaikCADcCACADQdwAaiAHQRBqKAIANgIAIAMgBykCADcCTCADIAI2AkggA0HIAGoQ4RBBoKqZARDhECADQQhqIAFBACABEO8xEMYKIAMoAgwhAiADKAIIDQILIAEoAlQhCiADQegAaiADQThqEP4XIANByABqQRRqIANB6ABqQRBqKQMANwIAIANByABqQQxqIANB6ABqQQhqKQMANwIAIAMgAykDaDcCTEHgAEEIEM0zIgdBEjYCACAHIAk6ACwgByACNgIoIAcgCCAKIAggCksbNgIkIAcgCCAKIAggCkkbNgIgIAcgAykCSDcCBCAHQQxqIANByABqQQhqKQIANwIAIAdBFGogA0HIAGpBEGopAgA3AgAgB0EcaiADQeAAaigCADYCACABKAJUIQlBDEEEEM0zIgIgBzYCACACIAUgCSAFIAlLGzYCCCACIAUgCSAFIAlJGzYCBAwDC0GgqpkBEOEQCyALENIfC0EBIQYLIAEgBBCgPiAAIAI2AgQgACAGNgIAIANBgAFqJAALywsCD38EfgJAAkACQAJAIAAoAgwiAyABaiIBIANJDQACQAJAAkACQAJAIAEgACgCBCIEIARBAWoiBUEDdiIGQQdsIgcgBEEISRsiCEEBdk0NACABIAhBAWogASAISxsiAUEISQ0BIAFB/////wFLDQVBfyABQQN0QQduQX9qZ3YiAUH+//8/Sw0FIAFBAWohAQwECyAAKAIAIQkCQCAGIAVBB3FBAEdqIghFDQAgCSEBA0AgASABKQMAIhJCf4VCB4hCgYKEiJCgwIABgyASQv/+/fv379+//wCEfDcDACABQQhqIQEgCEF/aiIIDQALCwJAIAVBCEkNACAJIAVqIAkpAAA3AAAMAgsgCUEIaiAJIAUQ8T0aIAUNAUEAIQEMAgtBBEEIIAFBBEkbIQEMAgsgCUEIaiEKIAkhC0EAIQEDQAJAIAkgASIMaiIFLQAAQYABRw0AIAkgDEEFdGsiAUFoaiENIAFBYGohDiAJIAxBf3NBBXRqIQ8CQANAIAQgDikDACANKAIAEJ8uIhOncSIGIQgCQCAJIAZqKQAAQoCBgoSIkKDAgH+DIhJCAFINAEEIIQEgBiEIA0AgCCABaiEIIAFBCGohASAJIAggBHEiCGopAABCgIGChIiQoMCAf4MiElANAAsLAkAgCSASeqdBA3YgCGogBHEiAWosAABBAEgNACAJKQMAQoCBgoSIkKDAgH+DeqdBA3YhAQsgASAGayAMIAZrcyAEcUEISQ0BIAkgAWoiCC0AACEGIAggE0IZiKciEDoAACAKIAFBeGogBHFqIBA6AAACQCAGQf8BRg0AIAkgAUEFdGshEUFgIQEDQCALIAFqIggtAAAhBiAIIBEgAWoiEC0AADoAACAQIAY6AAAgAUEBaiIBDQAMAgsLCyAFQf8BOgAAIAogBCAMQXhqcWpB/wE6AAAgCSABQX9zQQV0aiIBQRhqIA9BGGopAAA3AAAgAUEQaiAPQRBqKQAANwAAIAFBCGogD0EIaikAADcAACABIA8pAAA3AAAMAQsgBSATQhmIpyIBOgAAIAogBCAMQXhqcWogAToAAAsgDEEBaiEBIAtBYGohCyAMIARHDQALIAQgByAEQQhJGyEBCyAAIAEgA2s2AggMBAsgAUEFdCIIIAFBCGoiEGoiBiAISQ0AIAZB+f///wdPDQBBAC0AwP+jARogBhCMASIGRQ0BIAYgCGpB/wEgEBDvESERIAFBf2oiCyABQQN2QQdsIAFBCUkbIQ8CQCADDQAgACgCACENDAMLIBFBCGohDiAAKAIAIg1BYGohCiANKQMAQn+FQoCBgoSIkKDAgH+DIRMgDSEBQQAhECADIQkDQAJAIBNCAFINAANAIBBBCGohECABKQMIIRIgAUEIaiIIIQEgEkKAgYKEiJCgwIB/gyISQoCBgoSIkKDAgH9RDQALIBJCgIGChIiQoMCAf4UhEyAIIQELAkAgESALIAogE3qnQQN2IBBqIgxBBXRrIggpAwAgCEEIaigCABCfLiIUp3EiBmopAABCgIGChIiQoMCAf4MiEkIAUg0AQQghCANAIAYgCGohBiAIQQhqIQggESAGIAtxIgZqKQAAQoCBgoSIkKDAgH+DIhJQDQALCyATQn98IRUCQCARIBJ6p0EDdiAGaiALcSIIaiwAAEEASA0AIBEpAwBCgIGChIiQoMCAf4N6p0EDdiEICyAVIBODIRMgESAIaiAUQhmIpyIGOgAAIA4gCEF4aiALcWogBjoAACARIAhBf3NBBXRqIghBGGogDSAMQX9zQQV0aiIGQRhqKQAANwAAIAhBEGogBkEQaikAADcAACAIQQhqIAZBCGopAAA3AAAgCCAGKQAANwAAIAlBf2oiCUUNAwwACwsQ9isLAAsgACALNgIEIAAgETYCACAAIA8gA2s2AgggBEUNACANIAVBBXQiAWsgBCABakEJakEIEO4cQYGAgIB4DwtBgYCAgHgL6gwCBX8BfiMAQRBrIgEkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOExISAQIDBAUGBwgJCgsMDQ4PEBEACyAAQRBqELgTAkAgAC0APEEDRg0AIABBKGoQtRELAkAgACgCQCICRQ0AIAJBBGooAgAhAwJAIAIoAggiBEUNAANAIAMoAgAiBRCMAyAFQeAAQQgQ7hwgA0EEaiEDIARBf2oiBA0ACyACQQRqKAIAIQMLIAIoAgAgAxDfMyACQRRBBBDuHAsgACgCREUNESAAQcQAahD8FwwRCwJAIAAoAgQiA0GAgICAeEcNACAAQQhqEPkLIAAoAgggACgCDBDhMwJAIAAoAiBFDQAgAEEgahD3IAsgACgCFCIDKAIAIgAQjAMgAEHgAEEIEO4cIANBDEEEEO4cDBELIABBBGoQ+QsgAyAAKAIIEOEzAkAgACgCHEUNACAAQRxqEPcgCyAAKAIQIgMoAgAiABCMAyAAQeAAQQgQ7hwgA0EMQQQQ7hwMEAsgAEEQahC1ESAAKAIoIgVFDQ8gBUEEaigCACEDAkAgBSgCCCIARQ0AA0AgAygCACIEEIwDIARB4ABBCBDuHCADQQRqIQMgAEF/aiIADQALIAVBBGooAgAhAwsgBSgCACADEN8zIAVBFEEEEO4cDA8LAkACQCAALQBEIgNBBEcNACAAQRBqELURDAELIABBGGoQuBMCQCADQQNGDQAgAEEwahC1EQsCQCAAKAJIIgNFDQAgAxDIKSADKAIAIANBBGooAgAQ3zMgA0EUQQQQ7hwLIAAoAkwiA0UNACADEIweIAMoAgAgA0EEaigCABDcMyADQRRBBBDuHAsgACgCWCIFRQ0OIAVBBGooAgAhAwJAIAUoAggiAEUNAANAIAMoAgAiBBCMAyAEQeAAQQgQ7hwgA0EEaiEDIABBf2oiAA0ACyAFQQRqKAIAIQMLIAUoAgAgAxDfMyAFQRRBBBDuHAwOCyAAKAIIIQUCQCAAKAIMIgRFDQAgBSEDA0AgAxDbAyADQThqIQMgBEF/aiIEDQALCyAAKAIEIAUQ4zMMDQsgACgCBCIDEIwDIANB4ABBCBDuHAwMCyAAKAIIIQICQCAAKAIMIgRFDQAgAiEDA0ACQCADKAIAQQdGDQAgAxCHCQsgA0EwaigCACIFEIwDIAVB4ABBCBDuHCADQThqIQMgBEF/aiIEDQALCyAAKAIEIAIQ4zMMCwsgACgCBCIDEIwDIANB4ABBCBDuHAwKCyAAKAIEIgMQjAMgA0HgAEEIEO4cDAkLIABBCGohBQJAIAAoAgQNACAFEMgpIAAoAgggACgCDBDfMwwJCyAAKAIMIQICQCAAKAIQIgBFDQAgAiEDA0AgAygCACIEEIwDIARB4ABBCBDuHCADQQRqIQMgAEF/aiIADQALCyAFKAIAIAIQ3zMMCAsgACgCBCIDEIwDIANB4ABBCBDuHCAAKAIIIgMQjAMgA0HgAEEIEO4cIAAoAgwiAxCMAyADQeAAQQgQ7hwgACgCECIDEIwDIANB4ABBCBDuHAwHCyAAQRBqEK0WDAYLIAAoAgQiAxCMAyADQeAAQQgQ7hwMBQsgACgCBCIDEIwDIANB4ABBCBDuHAwECyAAKAIEIgMQjAMgA0HgAEEIEO4cIAAoAggiAxCMAyADQeAAQQgQ7hwMAwsgAEEQahCtFgJAIAAoAkAiA0UNACADEIwDIANB4ABBCBDuHAsgACgCRCIDRQ0CIAMQjAMgA0HgAEEIEO4cDAILAkACQAJAAkAgACgCCEGAgICAeHMiA0EEIANBBEkbDgQBAgUDAAsgAEEIahCVJCAAKAIYIgMgACgCHBCKESAAKAIUIAMQ4DMMBAsgACkDICIGUA0DIAZCA4NCAFINAyABIAanIgM2AgggAUEIahD1ByADIAMoAgAiAEF/ajYCACAAQQFHDQMgAyADKAIgENMvDAMLIABBEGoQuBMMAgsgACkDGCAAKAIgEMEZDAELAkAgAC0AHEECRg0AIAApAwgiBkIDg0IAUg0AIAEgBqciAzYCDCABQQxqEPUHIAMgAygCACIEQX9qNgIAIARBAUcNACADIAMoAiAQ0y8LIAAoAigiA0UNACADKAIAIgAQjAMgAEHgAEEIEO4cIANBDEEEEO4cCyABQRBqJAAL6gwCBX8BfiMAQRBrIgEkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOExISAQIDBAUGBwgJCgsMDQ4PEBEACyAAQRBqELgTAkAgAC0APEEDRg0AIABBKGoQtRELAkAgACgCQCICRQ0AIAJBBGooAgAhAwJAIAIoAggiBEUNAANAIAMoAgAiBRCNAyAFQeAAQQgQ7hwgA0EEaiEDIARBf2oiBA0ACyACQQRqKAIAIQMLIAIoAgAgAxDfMyACQRRBBBDuHAsgACgCREUNESAAQcQAahCUGAwRCwJAIAAoAgQiA0GAgICAeEcNACAAQQhqEPsLIAAoAgggACgCDBDhMwJAIAAoAiBFDQAgAEEgahDQIQsgACgCFCIDKAIAIgAQjQMgAEHgAEEIEO4cIANBDEEEEO4cDBELIABBBGoQ+wsgAyAAKAIIEOEzAkAgACgCHEUNACAAQRxqENAhCyAAKAIQIgMoAgAiABCNAyAAQeAAQQgQ7hwgA0EMQQQQ7hwMEAsgAEEQahC1ESAAKAIoIgVFDQ8gBUEEaigCACEDAkAgBSgCCCIARQ0AA0AgAygCACIEEI0DIARB4ABBCBDuHCADQQRqIQMgAEF/aiIADQALIAVBBGooAgAhAwsgBSgCACADEN8zIAVBFEEEEO4cDA8LAkACQCAALQBEIgNBBEcNACAAQRBqELURDAELIABBGGoQuBMCQCADQQNGDQAgAEEwahC1EQsCQCAAKAJIIgNFDQAgAxDXKSADKAIAIANBBGooAgAQ3zMgA0EUQQQQ7hwLIAAoAkwiA0UNACADEJgeIAMoAgAgA0EEaigCABDcMyADQRRBBBDuHAsgACgCWCIFRQ0OIAVBBGooAgAhAwJAIAUoAggiAEUNAANAIAMoAgAiBBCNAyAEQeAAQQgQ7hwgA0EEaiEDIABBf2oiAA0ACyAFQQRqKAIAIQMLIAUoAgAgAxDfMyAFQRRBBBDuHAwOCyAAKAIIIQUCQCAAKAIMIgRFDQAgBSEDA0AgAxDcAyADQThqIQMgBEF/aiIEDQALCyAAKAIEIAUQ4zMMDQsgACgCBCIDEI0DIANB4ABBCBDuHAwMCyAAKAIIIQICQCAAKAIMIgRFDQAgAiEDA0ACQCADKAIAQQdGDQAgAxCICQsgA0EwaigCACIFEI0DIAVB4ABBCBDuHCADQThqIQMgBEF/aiIEDQALCyAAKAIEIAIQ4zMMCwsgACgCBCIDEI0DIANB4ABBCBDuHAwKCyAAKAIEIgMQjQMgA0HgAEEIEO4cDAkLIABBCGohBQJAIAAoAgQNACAFENcpIAAoAgggACgCDBDfMwwJCyAAKAIMIQICQCAAKAIQIgBFDQAgAiEDA0AgAygCACIEEI0DIARB4ABBCBDuHCADQQRqIQMgAEF/aiIADQALCyAFKAIAIAIQ3zMMCAsgACgCBCIDEI0DIANB4ABBCBDuHCAAKAIIIgMQjQMgA0HgAEEIEO4cIAAoAgwiAxCNAyADQeAAQQgQ7hwgACgCECIDEI0DIANB4ABBCBDuHAwHCyAAQRBqEMoWDAYLIAAoAgQiAxCNAyADQeAAQQgQ7hwMBQsgACgCBCIDEI0DIANB4ABBCBDuHAwECyAAKAIEIgMQjQMgA0HgAEEIEO4cIAAoAggiAxCNAyADQeAAQQgQ7hwMAwsgAEEQahDKFgJAIAAoAkAiA0UNACADEI0DIANB4ABBCBDuHAsgACgCRCIDRQ0CIAMQjQMgA0HgAEEIEO4cDAILAkACQAJAAkAgACgCCEGAgICAeHMiA0EEIANBBEkbDgQBAgUDAAsgAEEIahCoJCAAKAIYIgMgACgCHBCKESAAKAIUIAMQ4DMMBAsgACkDICIGUA0DIAZCA4NCAFINAyABIAanIgM2AgggAUEIahD1ByADIAMoAgAiAEF/ajYCACAAQQFHDQMgAyADKAIgENMvDAMLIABBEGoQuBMMAgsgACkDGCAAKAIgEMEZDAELAkAgAC0AHEECRg0AIAApAwgiBkIDg0IAUg0AIAEgBqciAzYCDCABQQxqEPUHIAMgAygCACIEQX9qNgIAIARBAUcNACADIAMoAiAQ0y8LIAAoAigiA0UNACADKAIAIgAQjQMgAEHgAEEIEO4cIANBDEEEEO4cCyABQRBqJAALxgsCEH8EfgJAAkACQAJAIAAoAgwiAkF/Rg0AAkACQAJAAkACQCACIAAoAgQiAyADQQFqIgRBA3YiBUEHbCIGIANBCEkbIgdBAXZJDQAgAiAHIAIgB0sbIgdBB0kNASAHQf7///8BSw0FQX8gB0EDdEEIakEHbkF/amd2IgdB/v//P0sNBSAHQQFqIQcMBAsgACgCACEIAkAgBSAEQQdxQQBHaiIFRQ0AIAghBwNAIAcgBykDACISQn+FQgeIQoGChIiQoMCAAYMgEkL//v379+/fv/8AhHw3AwAgB0EIaiEHIAVBf2oiBQ0ACwsCQCAEQQhJDQAgCCAEaiAIKQAANwAADAILIAhBCGogCCAEEPE9GiAEDQFBACEHDAILQQRBCCAHQQNJGyEHDAILIAhBCGohCSAIIQpBACEHA0ACQCAIIAciC2oiBC0AAEGAAUcNACAIIAtBBXRrIgdBaGohDCAHQWBqIQ0gCCALQX9zQQV0aiEOAkADQCADIA0pAwAgDCgCABCfLiITp3EiDyEFAkAgCCAPaikAAEKAgYKEiJCgwIB/gyISQgBSDQBBCCEHIA8hBQNAIAUgB2ohBSAHQQhqIQcgCCAFIANxIgVqKQAAQoCBgoSIkKDAgH+DIhJQDQALCwJAIAggEnqnQQN2IAVqIANxIgdqLAAAQQBIDQAgCCkDAEKAgYKEiJCgwIB/g3qnQQN2IQcLIAcgD2sgCyAPa3MgA3FBCEkNASAIIAdqIgUtAAAhDyAFIBNCGYinIhA6AAAgCSAHQXhqIANxaiAQOgAAAkAgD0H/AUYNACAIIAdBBXRrIRFBYCEHA0AgCiAHaiIFLQAAIQ8gBSARIAdqIhAtAAA6AAAgECAPOgAAIAdBAWoiBw0ADAILCwsgBEH/AToAACAJIAMgC0F4anFqQf8BOgAAIAggB0F/c0EFdGoiB0EYaiAOQRhqKQAANwAAIAdBEGogDkEQaikAADcAACAHQQhqIA5BCGopAAA3AAAgByAOKQAANwAADAELIAQgE0IZiKciBzoAACAJIAMgC0F4anFqIAc6AAALIAtBAWohByAKQWBqIQogCyADRw0ACyADIAYgA0EISRshBwsgACAHIAJrNgIIDAQLIAdBBXQiBSAHQQhqIhBqIg8gBUkNACAPQfn///8HTw0AQQAtAMD/owEaIA8QjAEiD0UNASAPIAVqQf8BIBAQ7xEhESAHQX9qIgogB0EDdkEHbCAHQQlJGyEOAkAgAg0AIAAoAgAhDAwDCyARQQhqIQ0gACgCACIMQWBqIQkgDCkDAEJ/hUKAgYKEiJCgwIB/gyETIAwhB0EAIRAgAiEIA0ACQCATQgBSDQADQCAQQQhqIRAgBykDCCESIAdBCGoiBSEHIBJCgIGChIiQoMCAf4MiEkKAgYKEiJCgwIB/UQ0ACyASQoCBgoSIkKDAgH+FIRMgBSEHCwJAIBEgCiAJIBN6p0EDdiAQaiILQQV0ayIFKQMAIAVBCGooAgAQny4iFKdxIg9qKQAAQoCBgoSIkKDAgH+DIhJCAFINAEEIIQUDQCAPIAVqIQ8gBUEIaiEFIBEgDyAKcSIPaikAAEKAgYKEiJCgwIB/gyISUA0ACwsgE0J/fCEVAkAgESASeqdBA3YgD2ogCnEiBWosAABBAEgNACARKQMAQoCBgoSIkKDAgH+DeqdBA3YhBQsgFSATgyETIBEgBWogFEIZiKciDzoAACANIAVBeGogCnFqIA86AAAgESAFQX9zQQV0aiIFQRhqIAwgC0F/c0EFdGoiD0EYaikAADcAACAFQRBqIA9BEGopAAA3AAAgBUEIaiAPQQhqKQAANwAAIAUgDykAADcAACAIQX9qIghFDQMMAAsLEPYrCwALIAAgCjYCBCAAIBE2AgAgACAOIAJrNgIIIANFDQAgDCAEQQV0IgdrIAMgB2pBCWpBCBDuHEGBgICAeA8LQYGAgIB4C8QMAgR/AX4CQAJAAkACQAJAAkACQAJAAkACQAJAA0ACQCABKAIAIgJBGkcNACAAKAIAQQFHDQsgASgCGCAAKAIEIgNHDQsgASgCFCEAIAEoAhAhBAJAIAEpAwgiBkIDg0IAUg0AIAanIgIgAigCACICQQFqNgIAIAJBf0wNDQtBAC0AwP+jARogAS0AHCEFQcAAEIwBIgJFDQwgAiAFOgAcIAIgAzYCGCACQgA3AxAgAiAGNwMIIAJBGjYCAEGh96ABQQEQgyghBiABEMgBIAEgAjYCKCABIAA2AiQgASAENgIgIAFCADcDGCABIAY3AxAgAUEANgIIIAFBFDYCAA8LAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACQXRqIgNBByADQSZJGw4mHgABAgMEBQYHCAkKCwweHg0ODxARHhISEx4eFRYXGBkaGxweHR4eCyABKAIMIgJFDR0gASgCCCEBIAJBBHQhAgNAAkAgASgCAEECRg0AIAAgAUEMaigCABCPAwsgAUEQaiEBIAJBcGoiAg0ADB4LCyABKAIMIgJFDRwgASgCCCEBIAJBDGwhAgNAAkACQCABKAIAIgNFDQAgACADEI8DDAELIAFBBGooAgAgABDUDgsgAUEMaiEBIAJBdGoiAg0ADB0LCyABKAIgIAAQkREPCyABKAIEIQEMEAsgASgCDCEBDA8LIAAgASgCBBCPAyABKAIIIQEMDgsCQAJAIAJBC0YNAAJAAkACQAJAAkACQAJAAkACQCACDgsKAAECAwQFBgcICgoLIAAgASgCKBCPAyABKAIIQQJJDQkgAUEMaiAAEJI9IAEoAjghAQwXCyABKAIIQQFHDQggAUEMaiAAEJI9IAEoAjghAQwWCyAAIAEoAgQQjwMgASgCOCEBDBULIAEoAgQgABDfGSABKAI4IQEMFAsgAUEEaiAAEJM9IAEoAjghAQwTCyABQQRqIAAQkz0gASgCOCEBDBILIAFBBGogABCSPSABKAI4IQEMEQsgAUEEaiAAEJM9IAEoAjghAQwQCyABQQRqIAAQlD0gASgCOCEBDA8LIAFBCGohAgJAAkAgASgCBA4DAAECAAsgAiAAEMUlIAEoAjghAQwPCyACIAAQ4BkLIAEoAjghAQwNCyAAIAEoAigQjwMgASgCCEECSQ0WIAFBDGogABCSPQ8LIAEoAghBAUcNFSABQQxqIAAQkj0PCyAAIAEoAgQQjwMgACABKAIIEI8DIAEoAgwhAQwKCwJAIAEtABhBBUcNACAAIAEoAhAQjwMLIAEoAgwiAkUNEyACQQR0IQIgASgCCEEMaiEBA0AgACABKAIAEI8DIAFBEGohASACQXBqIgINAAwUCwsgACABKAIQEI8DIAEoAgRBgICAgHhGDRIgASgCDCICRQ0SIAJBBHQhAiABKAIIQQxqIQEDQCAAIAEoAgAQjwMgAUEQaiEBIAJBcGoiAg0ADBMLCyABKAIMIgJFDREgASgCCCEBIAJBAnQhAgNAIAAgASgCABCPAyABQQRqIQEgAkF8aiICDQAMEgsLIAEoAgwiAkUNECABKAIIIQEgAkECdCECA0AgACABKAIAEI8DIAFBBGohASACQXxqIgINAAwRCwsgACABKAIEEI8DIAEoAggiAUEIaigCACICRQ0PIAFBBGooAgAhASACQQJ0IQIDQCAAIAEoAgAQjwMgAUEEaiEBIAJBfGoiAg0ADBALCwJAIAEoAgwiA0UNACABKAIIIQIgA0EobCEDA0AgAiAAENUOIAJBKGohAiADQVhqIgMNAAsLAkAgASgCECIBKAIAQYCAgIB4Rg0AIAEgABCjKg8LIAAgASgCBBCPAw8LIAEoAiAgABDBBg8LIAEoAgwiAQ0CDAwLIAEoAgQhAQwBCwsgAUEIahCFNA8LIAEoAgQgABCjCw8LIAEoAgwiAkUNByABKAIIIQEgAkEobCECA0AgASAAEOEZIAFBKGohASACQVhqIgINAAwICwsgAUEEaiAAEJM9DwsgAUEEaiAAEJI9DwsgAUEEaiAAEJI9DwsgAUEEaiAAEJM9DwsgAUEEaiAAEJQ9DwsgAUEEaiAAEJM9DwsgASgCBCAAEN8ZCw8LAAukCwIQfwN+AkACQAJAAkACQAJAIAAoAgwiAkF/Rg0AAkAgAiAAKAIEIgMgA0EBaiIEQQN2IgVBB2wiBiADQQhJGyIHQQF2SQ0AAkACQCACIAcgAiAHSxsiB0EHSQ0AIAdB/v///wFLDQNBfyAHQQN0QQhqQQduQX9qZ3ZBAWohBwwBC0EEQQggB0EDSRshBwsgB61CDH4iEkIgiKcNASASpyIFQXhLDQEgBUEHakF4cSIFIAdBCGoiCGoiCSAFSQ0BIAlB+f///wdPDQFBAC0AwP+jARogCRCMASIJRQ0CIAkgBWpB/wEgCBDvESEKIAdBf2oiCyAHQQN2QQdsIAdBCUkbIQYCQCACDQAgACgCACEMDAYLIApBCGohDSAAKAIAIgxBdGohDiAMKQMAQn+FQoCBgoSIkKDAgH+DIRMgDCEHQQAhCCACIQ8DQAJAIBNCAFINAANAIAhBCGohCCAHKQMIIRIgB0EIaiIFIQcgEkKAgYKEiJCgwIB/gyISQoCBgoSIkKDAgH9RDQALIBJCgIGChIiQoMCAf4UhEyAFIQcLAkAgCiAOQQAgE3qnQQN2IAhqIhBrQQxsaigCAEHdy92eeWxBD3ciESALcSIJaikAAEKAgYKEiJCgwIB/gyISQgBSDQBBCCEFA0AgCSAFaiEJIAVBCGohBSAKIAkgC3EiCWopAABCgIGChIiQoMCAf4MiElANAAsLIBNCf3whFAJAIAogEnqnQQN2IAlqIAtxIgVqLAAAQQBIDQAgCikDAEKAgYKEiJCgwIB/g3qnQQN2IQULIBQgE4MhEyAKIAVqIBFBGXYiCToAACANIAVBeGogC3FqIAk6AAAgCiAFQX9zQQxsaiIFQQhqIAwgEEF/c0EMbGoiCUEIaigAADYAACAFIAkpAAA3AAAgD0F/aiIPRQ0GDAALCyAAKAIAIQ8CQCAFIARBB3FBAEdqIgVFDQAgDyEHA0AgByAHKQMAIhJCf4VCB4hCgYKEiJCgwIABgyASQv/+/fv379+//wCEfDcDACAHQQhqIQcgBUF/aiIFDQALCwJAIARBCEkNACAPIARqIA8pAAA3AAAMAwsgD0EIaiAPIAQQ8T0aIAQNAkEAIQcMAwsQ9isLAAsgD0EIaiEMIA9BdGohBCAPIQtBACEHA0ACQCAPIAciEGoiDS0AAEGAAUcNACAEQQAgEGtBDGxqIREgDyAQQX9zQQxsaiEOAkADQCADIBEoAgBB3cvdnnlsQQ93IghxIgkhBQJAIA8gCWopAABCgIGChIiQoMCAf4MiEkIAUg0AQQghByAJIQUDQCAFIAdqIQUgB0EIaiEHIA8gBSADcSIFaikAAEKAgYKEiJCgwIB/gyISUA0ACwsCQCAPIBJ6p0EDdiAFaiADcSIFaiwAAEEASA0AIA8pAwBCgIGChIiQoMCAf4N6p0EDdiEFCyAIrSESIAUgCWsgECAJa3MgA3FBCEkNASAPIAVqIgctAAAhCSAHIBJCGYinIgg6AAAgDCAFQXhqIANxaiAIOgAAAkAgCUH/AUYNAEF0IQcgDyAFQXRsaiEKA0AgCyAHaiIFLQAAIQkgBSAKIAdqIggtAAA6AAAgCCAJOgAAIAdBAWoiBw0ADAILCwsgDUH/AToAACAMIAMgEEF4anFqQf8BOgAAIA8gBUF/c0EMbGoiB0EIaiAOQQhqKAAANgAAIAcgDikAADcAAAwBCyANIBJCGYinIgc6AAAgDCADIBBBeGpxaiAHOgAACyAQQQFqIQcgC0F0aiELIBAgA0cNAAsgAyAGIANBCEkbIQcLIAAgByACazYCCAwBCyAAIAs2AgQgACAKNgIAIAAgBiACazYCCCADRQ0AIAMgBK1CDH6nQQdqQXhxIgdqQQlqIgVFDQAgDCAHayAFQQgQ7hxBgYCAgHgPC0GBgICAeAuODAEKfyABQQA6ADwgASgCICECIAFBADYCIAJAIAJFDQAgASgCHCEDA0AgA0EMaigCACEEIAMoAgAiBRD2ASAFQcAAQQgQ7hwCQCAERQ0AIAQQ3ikgBCgCACAEQQRqKAIAEN8zIARBFEEEEO4cCyADQRBqIQMgAkF/aiICDQALCwJAIAEoAggiA0UNACABKAIEIQQgA0EMbCEDA0AgACAEKAIAEIgDIARBDGohBCADQXRqIgMNAAsLAkAgASgCFCIGRQ0AIAEoAhAiBSEEQQAhAwJAA0BBMCEHQTUhCAJAAkACQAJAAkACQAJAIAQoAgAiAkF8akEAIAJBe2pBCEkbDgkEAgEDBgUGBgAGCyAEQcUAai0AAEUNBQwEC0EgIQdBJyEICyAEIAhqLQAADQIgBCAHaigCACgCGEGAgICAeEcNAwwCCyAEQckAai0AAA0BIARBxQBqLQAADQEMAgsgBEEgaigCAEGAgICAeEcNAQsgBBC2BEEBIQkgA0EBaiAGRg0CIANBf3MgBmohAkEBIQlBASEHA0BBMCEKQTUhCwJAAkACQAJAAkACQAJAAkAgBEHYAGoiAygCACIIQXxqQQAgCEF7akEISRsOCQQCAQMFBgUFAAULIARBnQFqLQAADQUMBAtBICEKQSchCwsgBCALakHYAGotAAANAyAEIApqQdgAaigCACgCGEGAgICAeEYNAwwCCyAEQaEBai0AAA0CIARBnQFqLQAARQ0BDAILIARB+ABqKAIAQYCAgIB4Rg0BCyAEIAdBqH9sakHYAGogA0HYABDfChoMAQsgAxC2BCAHQQFqIgkhBwsgAyEEIAJBf2oiAg0ADAMLCyAEQdgAaiEEIAYgA0EBaiIDRw0AC0EAIQkLIAEgBiAJayIENgIUIARFDQAgBSAEQdgAbGohBwNAAkACQAJAAkACQAJAAkACQAJAIAUoAgAiBEF8akEAIARBe2pBCEkbDgkBAgMEBQAIBgcBCwALIAVBAzoAUSAFIAAQpzQCQCAFKAJIIgRFDQAgBSgCRCICIARBBnRqIQgDQAJAAkAgAigCAEEHRw0AAkAgAigCOCIDRQ0AIAIoAjQhBCADQQxsIQMDQCAAIAQoAgAQiAMgBEEMaiEEIANBdGoiAw0ACwsCQCACLQAcQQJGDQAgAkEAOgAcIAJBIGoQ8S0MAgsgAigCDCEEIAIoAgggABDRGCAAIAQQiAMMAQsCQCACKAI4IgNFDQAgAigCNCEEIANBDGwhAwNAIAAgBCgCABCIAyAEQQxqIQQgA0F0aiIDDQALCyACIAAQ0RgLIAJBwABqIgIgCEcNAAsLIAVBIGoiBCgCAEGAgICAeEYNBiAAIAQQ8wkMBgsgBUEAOgA3IAVBAzoAOSAFQQA7ADUgBUEIaiAAEKc0IAUoAjAgABDMGgwFCyAFQQA6ACkgBUEAOwAnIAVBAzoAJCAFKAIgIAAQzBoMBAsgBUEANgBFIAVBAzoASyAFQckAakEAOwAAIAVBCGogABCnNAJAIAUoAjwiBEUNACAAIAQQiAMLIAVBwABqEPEtIAUoAjgiA0UNAyAFKAI0IQQgA0EMbCEDA0AgACAEKAIAEIgDIARBDGohBCADQXRqIgMNAAwECwsgBUEDOgA4IAVBADYBOgJAIAUoAiQiBEUNACAAIAQQiAMLIAVBKGoQ8S0gBSgCNCIDRQ0CIAUoAjAhBCADQQxsIQMDQCAAIAQoAgAQiAMgBEEMaiEEIANBdGoiAw0ADAMLCyAAIAVBBGoQ8wkMAQsCQCAFKAJAIgRFDQAgBCgCACIDEOEEIANB4ABBCBDuHCAEQQxBBBDuHAsgBUEANgJAIAVBgICAGDYARQJAIAUoAghBBUYNACAFQQhqIAAQpzQLAkAgBSgCPCIERQ0AIAAgBBCIAwsgBUHAAGoQ8S0gBSgCOCIDRQ0AIAUoAjQhBCADQQxsIQMDQCAAIAQoAgAQiAMgBEEMaiEEIANBdGoiAw0ACwsgBUHYAGoiBSAHRw0ACwsCQCABKAIwIgRFDQAgACAEEIgDCyABQTRqEKktIAFBOGoQqC0LyQwCBn8DfiMAQfAUayIEJAAgBEHgCGogARDBCQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAQoAoQMIgFBgICAgHhGDQAgBEG4BWogBEHgCGpBpAMQ3woaIARB6A5qQagDaiAEQeAIakGoA2pB4AIQ3woaIARB6A5qIARBuAVqQaQDEN8KGiAEIAE2AowSIARBmBJqIQUCQCAEKAKgEiIBIAQoApgSRw0AIAUQuCYLIAQoApwSIAFBCWxqIgZCADcAACAGQQhqQQA6AAAgBCABQQFqNgKgEiAEQbASaiEHAkAgBCgCuBIiBiAEKAKwEkcNACAHELkmCyAEQegOakGkA2ohASAEKAK0EiAGQQN0akIANwIAIAQgBkEBajYCuBIgBEGkEmohCAJAIAQoAqwSIgYgBCgCpBJHDQAgCBC8JgsgBCgCqBIgBkECdGpBADYCACAEIAZBAWo2AqwSIARB4AhqIAFBABDwESAEKALgCCIGQQNHDQEgBEHgCGogAUEAEPARIAQoAuAIIgZBA0cNAiAEQeAIaiABQQAQ8BEgBCgC5AghCSAEKALgCCIGQQNHDQMgBCAJNgLkFCAEQeAIaiABQQAQ8BEgBCgC5AghCSAEKALgCCIGQQNHDQQgBCAJNgLoFCAEQeAIaiAEQegOahD+DyAEKALgCCIGQQNHDQUgBEHgCGogBEHoDmoQhBogBCgC4AgiBkEDRw0GIARB4AhqIARB6A5qIAIgAxCeBCAEKALgCCIGQQNHDQcgARDsIiAEQeAIaiAEQegOahDJFyAEQdQSaiAEQeAIakGAAhDfChogBEHgCGogBEHoDmoQ2AsgBCgC4AgiBkEDRw0IIARB6A5qEJoVIARB4AhqIARB6A5qENkIIAQoAuAIIgZBA0cNCSAEQeAIaiAEQegOahCNBAJAIAQoAuAIIgZBA0cNACAEQegOahDsDSAEQegOahDUAyAEQeAIaiAEQegOakEgaiIJEMQBIARByBJqIQECQCAEKALIEiIGRQ0AIAYgBigCACIDQX9qNgIAIANBAUcNACABEPgXCyABIAQpAuAINwIAIAFBCGogBEHgCGpBCGooAgA2AgAgBCAEQegOakGABkH4BSAEKALIEhtqKAIANgLcFCAFEO0iIAgQ7iIgBxDvIiAEQbwSahDuIiAEQagFakEIaiIBIARBoBJqKQMANwMAIAQgBCkDmBI3A6gFIAQpAowSIQogBCgClBIhBiAEQeACaiAEQagSakHIAhDfChogCRD5KSAEQdACakEIaiIJIAEpAwA3AwAgBCAEKQOoBTcD0AIgBEEIaiAEQeACakHIAhDfChogACAGNgIMIAAgCjcCBCAAIAQpA9ACNwIQIABBGGogCSkDADcCACAAQSBqIARBCGpByAIQ3woaIABBADYCAAwNCyAEQbAFaiAEQfAIaikDADcDACAEIAQpA+gINwOoBQwKCyAEQbgFakEQaiAEQeAIakEQaikDACIKNwMAIARBuAVqQQhqIARB4AhqQQhqKQMAIgs3AwAgBCAEKQPgCCIMNwO4BSAAQRhqIAo3AwAgAEEQaiALNwMAIAAgDDcDCCAAQQE2AgAMCwsgBEGwBWogBEHwCGopAwA3AwAgBCAEKQPoCDcDqAUMCAsgBEGwBWogBEHwCGopAwA3AwAgBCAEKQPoCDcDqAUMBwsgBEGwBWogBEHwCGopAwA3AwAgBCAEKQPoCDcDqAUMBwsgBEGwBWogBEHwCGopAwA3AwAgBCAEKQPoCDcDqAUMBgsgBEGwBWogBEHwCGopAwA3AwAgBCAEKQPoCDcDqAUMBAsgBEGwBWogBEHwCGopAwA3AwAgBCAEKQPoCDcDqAUMAwsgBEGwBWogBEHwCGopAwA3AwAgBCAEKQPoCDcDqAUMAgsgBEGwBWogBEHwCGopAwA3AwAgBCAEKQPoCDcDqAUMAQsgBEGwBWogBEHwCGopAwA3AwAgBCAEKQPoCDcDqAULIAQoAuQIIQkLIARBiA9qEPkpIAEQgxwgBEHQAmpBCGogBEGoBWpBCGopAwAiCjcDACAEIAQpA6gFIgs3A9ACIAAgCTYCDCAAIAY2AgggACALNwIQIABBGGogCjcCACAAQQE2AgALIARB8BRqJAALnwsCEH8EfgJAAkACQAJAAkACQCAAKAIMIgJBf0YNAAJAIAIgACgCBCIDIANBAWoiBEEDdiIFQQdsIgYgA0EISRsiB0EBdkkNAAJAAkAgAiAHIAIgB0sbIgdBB0kNACAHQf7///8BSw0DQX8gB0EDdEEIakEHbkF/amd2QQFqIQcMAQtBBEEIIAdBA0kbIQcLIAetQhh+IhJCIIinDQEgEqciBSAHQQhqIghqIgkgBUkNASAJQfn///8HTw0BQQAtAMD/owEaIAkQjAEiCUUNAiAJIAVqQf8BIAgQ7xEhCiAHQX9qIgsgB0EDdkEHbCAHQQlJGyEMAkAgAg0AIAAoAgAhDQwGCyAKQQhqIQ4gACgCACINQWhqIQ8gDSkDAEJ/hUKAgYKEiJCgwIB/gyETIA0hB0EAIQggAiEQA0ACQCATQgBSDQADQCAIQQhqIQggBykDCCESIAdBCGoiBSEHIBJCgIGChIiQoMCAf4MiEkKAgYKEiJCgwIB/UQ0ACyASQoCBgoSIkKDAgH+FIRMgBSEHCwJAIAogCyAPQQAgE3qnQQN2IAhqIhFrQRhsaikDABCYMCIUp3EiCWopAABCgIGChIiQoMCAf4MiEkIAUg0AQQghBQNAIAkgBWohCSAFQQhqIQUgCiAJIAtxIglqKQAAQoCBgoSIkKDAgH+DIhJQDQALCyATQn98IRUCQCAKIBJ6p0EDdiAJaiALcSIFaiwAAEEASA0AIAopAwBCgIGChIiQoMCAf4N6p0EDdiEFCyAVIBODIRMgCiAFaiAUQhmIpyIJOgAAIA4gBUF4aiALcWogCToAACAKIAVBf3NBGGxqIgVBEGogDSARQX9zQRhsaiIJQRBqKQAANwAAIAVBCGogCUEIaikAADcAACAFIAkpAAA3AAAgEEF/aiIQRQ0GDAALCyAAKAIAIRACQCAFIARBB3FBAEdqIgVFDQAgECEHA0AgByAHKQMAIhJCf4VCB4hCgYKEiJCgwIABgyASQv/+/fv379+//wCEfDcDACAHQQhqIQcgBUF/aiIFDQALCwJAIARBCEkNACAQIARqIBApAAA3AAAMAwsgEEEIaiAQIAQQ8T0aIAQNAkEAIQcMAwsQ9isLAAsgEEEIaiEOIBBBaGohDCAQIQtBACEHA0ACQCAQIAciEWoiDy0AAEGAAUcNACAMQQAgEWtBGGxqIQ0gECARQX9zQRhsaiEEAkADQCADIA0pAwAQmDAiE6dxIgkhBQJAIBAgCWopAABCgIGChIiQoMCAf4MiEkIAUg0AQQghByAJIQUDQCAFIAdqIQUgB0EIaiEHIBAgBSADcSIFaikAAEKAgYKEiJCgwIB/gyISUA0ACwsCQCAQIBJ6p0EDdiAFaiADcSIFaiwAAEEASA0AIBApAwBCgIGChIiQoMCAf4N6p0EDdiEFCyAFIAlrIBEgCWtzIANxQQhJDQEgECAFaiIHLQAAIQkgByATQhmIpyIIOgAAIA4gBUF4aiADcWogCDoAAAJAIAlB/wFGDQBBaCEHIBAgBUFobGohCgNAIAsgB2oiBS0AACEJIAUgCiAHaiIILQAAOgAAIAggCToAACAHQQFqIgcNAAwCCwsLIA9B/wE6AAAgDiADIBFBeGpxakH/AToAACAQIAVBf3NBGGxqIgdBEGogBEEQaikAADcAACAHQQhqIARBCGopAAA3AAAgByAEKQAANwAADAELIA8gE0IZiKciBzoAACAOIAMgEUF4anFqIAc6AAALIBFBAWohByALQWhqIQsgESADRw0ACyADIAYgA0EISRshBwsgACAHIAJrNgIIDAELIAAgCzYCBCAAIAo2AgAgACAMIAJrNgIIIANFDQAgAyAErUIYfqciB2pBCWoiBUUNACANIAdrIAVBCBDuHEGBgICAeA8LQYGAgIB4C88LAgp/AX4jAEHgAGsiAiQAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOCAABAgMEBQYHAAsgACgCICABEK4EDAcLIAAoAiAgARDEDgwGCyAAKAIEIgAoAggiA0UNBSAAKAIEIgAgA0E4bGohBANAIAAgARCNCgJAIAAoAjAiA0UNACADIAEQ/wILIABBOGoiACAERw0ADAYLCyAAKAIEIgAoAggiA0UNBCAAKAIEIgAgA0E4bGohBANAIAAgARCNCgJAIAAoAjAiA0UNACADIAEQ/wILIABBOGoiACAERw0ADAULCyAAKAIEIAEQ9wwMAwsCQCAAKAIEIgUoAiAiAEUNACAAQQhqKAIAIgNFDQAgA0EwbCEDIABBBGooAgBBJGohAANAAkAgAEF8aigCACIERQ0AIAEgBBCsAwsCQCAAKAIAIgRFDQAgASAEEKwDCyAAQTBqIQAgA0FQaiIDDQALCyABIAUoAiQQrAMMAgsgACgCBCIAKAIoIgNFDQEgA0EwbCEDIAAoAiRBKGohAANAAkAgACgCACIERQ0AIAQgARD/AgsgAEEwaiEAIANBUGoiAw0ADAILCyAAKAIEIgBBIGohBQJAAkAgAC0ARUF+ag4CAQIACyAAKAJAIgUtACVBAkYNAANAIAUoAiAiBS0AJUECRw0ACwsgBSgCCCIGQThsIQcgBSgCBCEAQQAhAwJAAkACQAJAAkADQCAHIANGIggNASAAIANqIQQgA0E4aiEDIAQoAgBBBkcNAAsgBkUNAQwCCyAGDQEMBAtBACEGIAJBMGpBACkD4OKiASIMNwMAIAJBwABqIAw3AwAgAkEAKQPY4qIBIgw3AyggAiAMNwM4IAJBOGohCEEBIQkMAQsgBkE4bCEHQQAhAwJAAkADQAJAIAAgA2oiBCgCAEEJRw0AIARBCGooAgBBEUcNACAEQRBqKAIAQQdGDQILIAcgA0E4aiIDRw0ACyAIDQRBASEJDAELIAgNAkEAIQkLIAJBMGpBACkD4OKiASIMNwMAIAJBwABqIAw3AwAgAkEAKQPY4qIBIgw3AyggAiAMNwM4IAZBOGwhBCACQThqIQggACEDA0AgAyACQShqEJcxIANBOGohAyAEQUhqIgQNAAsCQCAGDQBBACEGDAELQQAhAwJAAkADQAJAIAAoAgBBBkcNACAAQQRqKAIAIgQtAEENAiAELQBADQAgAkEYaiAEQShqEKYnIAIgAigCIDYCUCACIAIpAxgiDDcDSCACQShqIAJByABqEMkPIQQCQCAMQgODQgBSDQAgAiAMpyIHNgJcIAJB3ABqEPUHIAcgBygCACIKQX9qNgIAIApBAUcNACAHIAcoAiAQ0y8LIARFDQILIABBOGohACAGIANBAWoiA0cNAAtBACEHDAELIAAQngVBASEHIANBAWogBkYNACAAQThqIQAgA0F/cyAGaiEEQQEhBwNAAkACQCAAKAIAQQZHDQACQCAAQQRqKAIAIgMtAEENACADLQBADQEgAkEIaiADQShqEKYnIAIgAigCEDYCUCACIAIpAwgiDDcDSCACQShqIAJByABqEMkPIQMCQCAMQgODQgBSDQAgAiAMpyIKNgJcIAJB3ABqEPUHIAogCigCACILQX9qNgIAIAtBAUcNACAKIAooAiAQ0y8LIAMNAQsgABCeBSAHQQFqIQcMAQsgACAHQUhsaiIDIAApAwA3AwAgA0EwaiAAQTBqKQMANwMAIANBKGogAEEoaikDADcDACADQSBqIABBIGopAwA3AwAgA0EYaiAAQRhqKQMANwMAIANBEGogAEEQaikDADcDACADQQhqIABBCGopAwA3AwALIABBOGohACAEQX9qIgQNAAsLIAUgBiAHayIGNgIICyACQShqEKUMIAgQpBAgCQ0BIAUoAgQhAAsgBkUNACAGQThsIQMDQCABIAAQ4CkgAEE4aiEAIANBSGoiAw0ACwsgAkHgAGokAAu1DAEIfyMAQYABayICJAAgARDtDhogAUHUAkHYAiABLQDhAkECRhtqKAIAIQMCQAJAAkACQCABEO0OIgQNACABKAL8ASEBIAJBgICAgHg2AlAgASABIAJB0ABqEP4iIQEMAQsgBC0AAEGbAUcNASABQQI6AOECIAEgASkD2AI3A9ACIAEQ3xghAQsgAEETNgIAIAAgATYCBAwBCyABQQI6AOECIAEgASkD2AI3A9ACAkACQCABEO0OIgRFDQAgBC0AAEUNAQsgAUHUAmogAUHcAmogAS0A4QJBAkYiAxsoAgAhBCABQdACaiABQdgCaiADGygCACEDIAJBEGogARDKCyACQQE2AlQgAkGk16EBNgJQIAJCATcCXCACQegENgJEIAJBADoATyACIAJBwABqNgJYIAIgAkHIAGo2AkAgAiACQc8AajYCSCACQShqIAJB0ABqEJEKIAJBPGogAkEYaigCADYCACACIAIpAhA3AjQgAyAEIAMgBEkbIAMgBCADIARLGyACQShqEP4iIQQCQCABEO0OIgNFDQAgAy0AAEGbAUcNACABQQI6AOECIAEgASkD2AI3A9ACIAEgARDfGBD1GAsgAEETNgIAIAAgBDYCBAwBCyABQQI6AOECIAEgASkD2AI3A9ACAkACQAJAAkACQAJAAkACQCABKAKQAiIEQQJxRQ0AIAEoAoQCIgUoAggiBkH+////B0sNASAFKAIURQ0AIAYNAiAFQX82AgggASgCgAIiBigCCA0DIAZBfzYCCCAFKAIQIQcgBkEMaiAFKAIUIggQoTAgBigCECAGKAIUQQJ0aiAHIAhBAnQQ3woaIAYgCCAGKAIUajYCFCAFQQA2AhQgBiAGKAIIQQFqNgIIIAUgBSgCCEEBajYCCAsgASAEQcAAcjYCkAIgAkEIaiABEIcFIAIoAgwhBQJAAkACQCACKAIIDQAgASAEENwRAkAgARDtDiIERQ0AIAQtAABBAUYNAgsgAUHUAmogAUHcAmogAS0A4QJBAkYiAxsoAgAhBCABQdACaiABQdgCaiADGygCACEDIAJBHGogARDKCyACQQE2AlQgAkGk16EBNgJQIAJCATcCXCACQegENgJEIAJBAToATyACIAJBwABqNgJYIAIgAkHIAGo2AkAgAiACQc8AajYCSCACQShqIAJB0ABqEKoTIAJBPGogAkEkaigCADYCACACIAIpAhw3AjQgAyAEIAMgBEkbIAMgBCADIARLGyACQShqEP4iIQQCQCABEO0OIgNFDQAgAy0AAEGbAUcNACABQQI6AOECIAEgASkD2AI3A9ACIAEgARDfGBD1GAsgAEETNgIAIAAgBDYCBAwCCyAAQRM2AgAgACAFNgIEIAEgBBDcEQwJCyAB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CiECIAMgATYCcCADIAI2AmwgAyAENgJoIANBmAFqIANB6ABqEKwCIANBLGogA0EMahCsAiADQdgAaiADQZgBahCtEgJAIAMtAGRBAkcNACADQegAakEYaiADQSxqQRhqKAIANgIAIANB6ABqQRBqIANBLGpBEGopAgA3AwAgA0HoAGpBCGogA0EsakEIaikCADcDACADQYwBaiADQRhqQQhqKQMANwIAIAMgAykCLDcDaCADIAMpAxg3AoQBIAAgA0HoAGpBLBDfChogA0GYAWoQyDQMBgsgA0HoAGpBCGoiAiADQdgAakEIaiIBKQIANwMAIAMgAykCWDcDaAJAIAMtAHQNACADQcgAakEIaiADQRhqQQhqKQMANwMAIAMoAmgiAiACKAIAIgJBf2o2AgAgAyADKQMYNwNIAkAgAkEBRw0AIANB6ABqEPkWCyADQegAakEYaiADQSxqQRhqKAIANgIAIANB6ABqQRBqIANBLGpBEGopAgA3AwAgA0HoAGpBCGogA0EsakEIaikCADcDACADQYwBaiADQcgAakEIaikDADcCACADIAMpAiw3A2ggAyADKQNINwKEASAAIANB6ABqQSwQ3woaIANBmAFqEMg0DAYLIANByABqQQhqIAEpAgAiBzcDACADIAMpAlgiCDcDSCADQegAakEYaiADQSxqQRhqKAIANgIAIANB6ABqQRBqIANBLGpBEGopAgA3AwAgAiADQSxqQQhqKQIANwMAIANBjAFqIAc3AgAgAyADKQIsNwNoIAMgCDcChAEgACADQegAakEsEN8KGiADQZgBahDINCADKAIYIgIgAigCACICQX9qNgIAIAJBAUcNBSADQRhqEPkWDAULIAIgAygCcBD4OQALIAIgBUHIvoMBEKEbAAsgBCADKAJwEPg5AAsgAygCECEBIAMoAgwhAgsgAEEINgIAIANBDGoQ2CwgAiABEI06CyADQcABaiQAC60LAgd/AX4jAEHAAGsiAiQAIAEoAhAhAyABKAIEIQQgASgCDCEFIAEoAhQhBgJAAkACQANAQQIhByAEIAVGDQMgASAEQShqIgg2AgQgAkEgaiAEQSBqKQMANwMAIAJBGGogBEEYaikDADcDACACQRBqIARBEGopAwA3AwAgAkEIaiAEQQhqKQMANwMAIAIgBCkDACIJNwMAAkAgCaciBEEH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IAIoAhwhBiACKAIYQQFGDQkgAigCICEHAkAgBUUNACAHIQAgBSEDA0AgAiAENgJMIAJBATYCHCACQaTXoQE2AhggAkIBNwIkIAJBzgE2AkQgAiACQcAAajYCICACIAJBzABqNgJAIAIgAkEYahCRCiAAQQhqIAJBCGooAgA2AgAgACACKQIANwIAIABBDGohACAEQQhqIQQgA0F/aiIDDQALIAUhAAsgAiAHIABBnuuaAUECEOUGIAcgABDKLSAGIAcQ/jkgAkECNgIcIAJByLeDATYCGCACQgE3AiQgAkHPATYCRCACIAJBwABqNgIgIAIgAjYCQCABKAIUIAEoAhggAkEYahCdByEAIAIoAgAgAigCBBD2OQwHCyACIANBCGo2AkwgAygCBCEAIAJBAjYCHCACQeS3gwE2AhggAkICNwIkIAJB8AA2AgwgAkHQATYCBCACIAA2AkAgAiACNgIgIAIgAkHAAGo2AgggAiACQcwAajYCACABKAIUIAEoAhggAkEYahCdByEADAYLIAMoAgQhBEEAIQAgAkEYaiADKAIIIgVBAEEEQQwQ6w8gAigCHCEGIAIoAhhBAUYNBiACKAIgIQcCQCAFRQ0AIAchACAFIQMDQCACQQE2AhwgAkGk16EBNgIYIAJCATcCJCACQfAANgJEIAIgBCgCADYCTCACIAJBwABqNgIgIAIgAkHMAGo2AkAgAiACQRhqEJEKIABBCGogAkEIaigCADYCACAAIAIpAgA3AgAgAEEMaiEAIARBBGohBCADQX9qIgMNAAsgBSEACyACIAcgAEGe65oBQQIQ5QYgByAAEMotIAYgBxD+OSACQQI2AhwgAkH8t4MBNgIYIAJCATcCJCACQc8BNgJEIAIgAkHAAGo2AiAgAiACNgJAIAEoAhQgASgCGCACQRhqEJ0HIQAgAigCACACKAIEEPY5DAULIAMoAgghACACIAMoAgQ2AkwgAkEDNgIcIAJBnLiDATYCGCACQgI3AiQgAkEHNgIMIAJBBzYCBCACIAA2AkAgAiACNgIgIAIgAkHAAGo2AgggAiACQcwAajYCACABKAIUIAEoAhggAkEYahCdByEADAQLIAMoAgQhACADKAIQIQQgAygCDCEHIAIgAygCCDYCOCACIAc2AjwgAiAENgJMIAJBADYCECACQQQ2AgQgAkHUuIMBNgIA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QCAAIAMoAgAQsAMgA0EQaiEDIAJBcGoiAg0ADAcLCyABQQRqIAAQoT0gASgCOCEBDBQLIAFBBGogABChPSABKAI4IQEMEwsgAUEEaiAAEKM9IAEoAjghAQwSCyABQQRqIAAQoT0gASgCOCEBDBELIAFBBGogABCkPSABKAI4IQEMEAsgAUEIaiEDAkACQCABKAIEDgMAAQIACyADIAAQ1CUgASgCOCEBDBALIAMgABDoGQsgASgCOCEBDA4LIAEoAiAgABCSEQwXCyAAIAEoAigQsAMgACABQQhqEJg0DwsgACABQQhqEJk0DwsgACABKAIEELADIAAgASgCCBCwAyABKAIMIQEMCgsgACABQRBqEMUnIAEoAgwiA0UNEyADQQR0IQMgASgCCEEMaiEBA0AgACABKAIAELADIAFBEGohASADQXBqIgMNAAwUCwsgACABKAIQELADIAEoAgRBgICAgHhGDRIgASgCDCIDRQ0SIANBBHQhAyABKAIIQQxqIQEDQCAAIAEoAgAQsAMgAUEQaiEBIANBcGoiAw0ADBMLCyABKAIMIgNFDREgASgCCCEBIANBAnQhAwNAIAAgASgCABCwAyABQQRqIQEgA0F8aiIDDQAMEgsLIAEoAgwiA0UNECABKAIIIQEgA0ECdCEDA0AgACABKAIAELADIAFBBGohASADQXxqIgMNAAwRCwsgACABKAIEELADIAEoAggiAUEIaigCACIDRQ0PIAFBBGooAgAhASADQQJ0IQMDQCAAIAEoAgAQsAMgAUEEaiEBIANBfGoiAw0ADBALCwJAIAEoAgwiAkUNACABKAIIIQMgAkEobCECA0AgAyAAENYOIANBKGohAyACQVhqIgINAAsLAkAgASgCECIBKAIAQYCAgIB4Rg0AIAEgABCwJA8LIAAgASgCBBCwAw8LIAEoAiAgABDCBg8LIAEoAgwiAQ0CDAwLIAEoAgQhAQwBCwsgAUEIahCoMw8LIAEoAgQgABDjBg8LIAFBBGogABCtHw8LIAFBBGogABChPQ8LIAFBBGogABCjPQ8LIAFBBGogABCjPQ8LIAFBBGogABChPQ8LIAFBBGogABCkPQ8LIAFBBGogABChPQ8LAkAgASgCBCIBKAIAQQNGDQAgACABKAIgELADIAAgARCYNA8LIAAgASgCEBCwAyABKAIMIgNFDQAg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IAMoAmQhBkEEEJEyIgMgBjYCACABQQE2AlQgASADNgJQIAFBATYCTCABQQA2AmAgAUKAgICAwAA3AlggAUEANgJsIAFCgICAgMAANwJkQQQhB0EAIQhBACEDA38CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADIARPDQAgBSADaiIJLQAAIgJBIEkNAUEBIQogAkH+AE0NEgJAIANFDQAgAsBBv39MDQMLAkACQCACwEF/Sg0AIAktAAFBP3EhCiACQR9xIQsCQAJAIAJB3wFLDQAgC0EGdCAKciECDAELIApBBnQgCS0AAkE/cXIhCgJAIAJB8AFPDQAgCiALQQx0ciECDAELIApBBnQgCS0AA0E/cXIgC0ESdEGAgPAAcXIiAkGAgMQARg0GCyACQYABSQ0AQQJBA0EEIAJBgIAESRsgAkGAEEkbIQogCCABKAJYRg0BDAsLIAMgBmohCUEBIQogAkH/AEYNCyACQR9LDRMMCwsgAUHYAGoQyyYgASgCXCEHDAkLAkAgASgCVCIDRQ0AIAYgBGoiAiABKAJQIANBf2oiBEECdGooAgAiA0kNBCADIAJHDQAgASAENgJUCyABQShqQQhqIAFBzABqQQhqKAIAIgM2AgAgAUEoakEUaiABQdgAakEIaigCACICNgIAIAFBKGpBIGoiBCABQeQAakEIaigCADYCACABQQhqIAM2AgAgASABKQJMIgw3AyggASABKQJYIg03AjQgASABKQJkNwNAIAEgDDcDACABQRRqIAI2AgAgASANNwIMIAFBIGogBCgCADYCACABIAEpA0A3AxgCQCAAKAIEIgIoAgAiAygCACIEQYCAgIB4Rg0AIAQgA0EEaigCABD7OSADKAIMIANBEGooAgAQgjogAygCGCADQRxqKAIAEP45IAIoAgAhAwsgAyABQSQQ3woaIAFB8ABqJABBAQ8LIAYgA2ohCyACQXdqDgUEBQYGAwYLIAUgBCADIARB8JGZARCINwALQYCSmQEQ/TkAC0GwkJkBQTRB4JGZARDTJwALAkACQCADQQFqIARPDQAgCUEBai0AAEEKRg0BC0EBIQogAUHMAGogC0EBahCYLAwNCyABQcwAaiADQQJqIgMgBmoQmCwMDQsgAUECNgIoIAEgCzYCLCABQeQAaiABQShqEJMkQQEh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HAsgACgCDCICEKoBIAJBwABBCBDuHCAAKAIQIgIQuAMgAkEwQQgQ7hwMAgsCQAJAAkACQCAAKAIEDgIBAgALIAAoAggiAhCHCSACQShBCBDuHAwCCyAAKAIIIgIQiB8gAkEcQQQQ7hwMAQsgACgCCCICEIkfIAJBGEEEEO4cCyAAKAIMIgIQqgEgAkHAAEEIEO4cIAAoAhAiAhC4AyACQTBBCBDuHAwBCyAAQQhqEKACCyABQRBqJAAL5gsCBX8DfiMAQcABayICJAAgAkHIAGpBEGpBACkD4LuZASIHNwMAIAJByABqQQhqQQApA9i7mQEiCDcDACACQQApA9C7mQEiCTcDSAJAAkACQAJAAkACQAJAAkACQAJAAkAgARCxFiACQcgAahDLNQ0AIAJByABqEOIQIAJBCGogARD7ICACKAIMIQMgAigCCCEEIAJBFGogARDfGiACQYABakEQaiAHNwMAIAJBgAFqQQhqIAg3AwAgAkEBNgJMIAJBpNehATYCSCACQgE3AlQgAkGiAjYCQCACIAk3A4ABIAIgAkE8ajYCUCACIAJBxABqNgI8IAIgAkGAAWo2AkQgAkEgaiACQcgAahDmIiACQYABahDiECACQTRqIAJBFGpBCGooAgA2AgAgAiACKQIUNwIsIAQgAyACQSBqEP4iIQMCQCABELEWIgRFDQAgBCgCAEEkRw0AIAEgASkDGDcDUCABKAIAIQQgAUElNgIAIARBJEcNAiABIAEoAgQQ4xMLIABBADYCACAAIAM2AgQMCgsgASABKQMYNwNQIAEoAgAhAyABQSU2AgAgAkGAAWpBDGogAUEMaikCADcCACACQYABakEUaiABQRRqKAIANgIAIAIgASkCBDcChAEgAiADNgKAASACQYABahDiECACQcgAahDiEAJAAkACQAJAAkAgARCxFiIDRQ0AIAMoAgAiA0EbRg0EIANBJEcNAyABIAEpAxg3A1AgASgCACEDIAFBJTYCACADQSRHDQIgASgCBCEBDAELIAEoArACIQEgAkGAgICAeDYCgAEgASABIAJBgAFqEP4iIQELIABBADYCACAAIAE2AgQMDAtBlM6hAUEoQdjhmQEQ0ycACyACQYABakEEciABEN8aIAIgARD7ICACQRA2ApQBIAJB/NqaATYCkAEgAkGwgICAeDYCgAEgAigCACAC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ajYCACAPQX9MDQgLIB9CIIinIRBCACEfDAELIAFBPGooAgAhECABQThqKAIAIQ4gAUHUAGooAgAhESABQdAAaigCACESAkAgH0IDg0IAUg0AIB+nIg0gDSgCACINQQFqNgIAIA1Bf0wNBwsgAUHMAGooAgAhEyABQcgAaigCACEUIAFBwABqKQMAIiCnIQ0CQCAgQgODQgBSDQAgDSANKAIAIg9BAWo2AgAgD0F/TA0HCyAgQiCIpyEMC0EEIQ8CQCABKAIAIhVBBEYNAAJAAkACQAJAIBUOBAABAgMACyACIAFBCGoQ9gUgAigCHCEWIAIoAhghFyACKAIUIRggAigCECEZIAIoAgwhGiACKAIIIRsgAigCBCEcIAIoAgAhHUEAIQ8MAwsgAUEUaigCACEaIAFBEGooAgAhGwJAIAFBBGooAgANACABQQhqKAIAIR0gAUEMaigCACEcQQAhHkEBIQ8MAwsgAUEIaigCACEBEK4yIR0gAiABED8gHUE4aiACQThqKQMANwMAIB1BMGogAkEwaikDADcDACAdQShqIAJBKGopAwA3AwAgHUEgaiACQSBqKQMANwMAIB1BGGogAkEYaikDADcDACAdQRBqIAJBEGopAwA3AwAgHUEIaiACQQhqKQMANwMAIB0gAikDADcDAEEBIR5BASEPDAILELAyIR4gAiABQQRqKAIAEI0FIB4gAkGgARDfChpBAiEPDAELIAFBHGooAgAhGCABQRhqKAIAIRkgAUEUaigCACEaIAFBEGooAgAhGyACIAFBBGoQoQEgAUEkaigCACEWIAFBIGooAgAhFyACKAIIIRwgAigCBCEdIAIoAgAhHkEDIQ8LIAytQiCGIA2thCEgIBCtQiCGIA6thCEhIBwhDiAdIRAgHiENDAELIAFBDGooAgAhDiABQQhqKAIAIRAgAUEEaigCACEBEK4yIQ0gAiABED8gDUE4aiACQThqKQMANwMAIA1BMGogAkEwaikDADcDACANQShqIAJBKGopAwA3AwAgDUEgaiACQSBqKQMANwMAIA1BGGogAkEYaikDADcDACANQRBqIAJBEGopAwA3AwAgDUEIaiACQQhqKQMANwMAIA0gAikDADcDAEEFIQ8LIAYgCGoiASAPNgIAIAFB1ABqIBE2AgAgAUHQAGogEjYCACABQcwAaiATNgIAIAFByABqIBQ2AgAgAUHAAGogIDcDACABQThqICE3AwAgAUEwaiAfNwMAIAFBLGogCjYCACABQShqIAs2AgAgAUEkaiAWNgIAIAFBIGogFzYCACABQRxqIBg2AgAgAUEYaiAZNgIAIAFBFGogGjYCACABQRBqIBs2AgAgAUEMaiAONgIAIAFBCGogEDYCACABQQRqIA02AgAgCEHYAGohCCAJQX9qIgkNAAsLIAAgBDYCCCAAIAY2AgQgACAFNgIAIAJBoAFqJAAPCyAFIAIoAggQ+DkLAAviCQIRfwJ+IwBBgANrIgYkACABrSIXQv//////////P3wgF4AhFwJAAkAgAUGBIEkNACABELgvIQcMAQsgASABQQF2ayIIQcAAIAhBwABJGyEHCyAAQVhqIQlBASEIQQAhCkEAIQsDQEEAIQxBASENAkAgCiABTw0AIAZBKGogCiAAIAFBtLChARDBLSAGKAIoIQ4CQAJAIAYoAiwiDyAHSQ0AQQAhEAJAAkAgD0ECSQ0AAkAgDigCRCAOKAIcSSAOKAJAIhEgDigCGCISSSARIBJGGw0AIA5BwABqIRJBAiERA0AgDyARRg0CIBJBLGooAgAgEkEEaigCAEkgEkEoaiITKAIAIhQgEigCACISSSAUIBJGGw0DIBFBAWohESATIRIMAAsLIA5BwABqIRJBAiERA0ACQCAPIBFHDQBBASEQDAILQQEhECASQSxqKAIAIBJBBGooAgBJIBJBKGoiEygCACIUIBIoAgAiEkkgFCASRhtBAUcNAiARQQFqIREgEyESDAALCyAPIRELIBEgB0kNAAJAIBBFDQAgBkEgaiARIA4gD0GEsKEBEPIvIAYoAiAgBigCJBCCDgsgEUEBdEEBciENDAELAkAgBA0AIAcgDyAHIA9JG0EBdCENDAELIAZBGGogD0EgIA9BIEkbIhEgDiAPQfSvoQEQ8i8gBigCGCAGKAIcIAIgA0EAQQAgBRDmAiARQQF0QQFyIQ0LIA1BAXYgCmqtIAqtIhh8IBd+IAogCEEBdmutIBh8IBd+hXmnIQwLIAkgCkEobCIRaiEVIAAgEWohFgNAAkACQAJAAkACQAJAAkAgC0ECSQ0AIAZBvgJqIAtBf2oiE2otAAAgDE8NAQsgBkG+AmogC2ogDDoAACAGQTRqIAtBAnRqIAg2AgAgCiABTw0BIAtBAWohCyANQQF2IApqIQogDSEIDAcLAkAgBkE0aiATQQJ0aigCACILQQF2IhEgCEEBdiISaiIQIANLDQAgCyAIckEBcUUNAgsgACAKIBBrQShsaiEUAkAgC0EBcQ0AIAZBEGogESAUIBBBlLChARDyLyAGKAIQIAYoAhQgAiADIAUQnjELAkAgCEEBcQ0AIAZBCGogESAUIBBBpLChARDBLSAGKAIIIAYoAgwgAiADIAUQnjELIAtBAkkNBCAIQQJJDQQgEiARIBIgEUkiDxsiCCADSw0EIAIgFCARQShsaiISIBQgDxsiCyAIQShsIggQ3woiDiAIaiEIAkAgDw0AIA4hEQNAIBEgCEYNBSASIBZGDQUgEiARIBIoAhwgESgCHEkgEigCGCIPIBEoAhgiFEkgDyAURhsiDxshFCASIA9BKGxqIRIgESAPQQFzQShsaiERIAsgFEEoEN8KQShqIQsMAAsLIBUhEQNAIBEgC0FYaiISIAhBWGoiDyAIQXRqKAIAIAtBdGooAgBJIAhBcGooAgAiCCALQXBqKAIAIgtJIAggC0YbIgsbQSgQ3wohESAPIAtBKGxqIQggEiALQQFzQShsaiILIBRGDQMgEUFYaiERIAggDkcNAAwDCwsCQCAIQQFxDQAgACABIAIgAyAFEJ4xCyAGQYADaiQADwsgEEEBdCEIIBMhCwwDCyAOIRELIAsgESAIIBFrEN8KGgsgEEEBdEEBciEIIBMhCwwACwsL4gkCEX8CfiMAQYADayIGJAAgAa0iF0L//////////z98IBeAIRcCQAJAIAFBgSBJDQAgARC4LyEHDAELIAEgAUEBdmsiCEHAACAIQcAASRshBwsgAEFYaiEJQQEhCEEAIQpBACELA0BBACEMQQEhDQJAIAogAU8NACAGQShqIAogACABQbSwoQEQwS0gBigCKCEOAkACQCAGKAIsIg8gB0kNAEEAIRACQAJAIA9BAkkNAAJAIA4oAkQgDigCHEkgDigCQCIRIA4oAhgiEkkgESASRhsNACAOQcAAaiESQQIhEQNAIA8gEUYNAiASQSxqKAIAIBJBBGooAgBJIBJBKGoiEygCACIUIBIoAgAiEkkgFCASRhsNAyARQQFqIREgEyESDAALCyAOQcAAaiESQQIhEQNAAkAgDyARRw0AQQEhEAwCC0EBIRAgEkEsaigCACASQQRqKAIASSASQShqIhMoAgAiFCASKAIAIhJJIBQgEkYbQQFHDQIgEUEBaiERIBMhEgwACwsgDyERCyARIAdJDQACQCAQRQ0AIAZBIGogESAOIA9BhLChARDyLyAGKAIgIAYoAiQQgg4LIBFBAXRBAXIhDQwBCwJAIAQNACAHIA8gByAPSRtBAXQhDQwBCyAGQRhqIA9BICAPQSBJGyIRIA4gD0H0r6EBEPIvIAYoAhggBigCHCACIANBAEEAIAUQ5wIgEUEBdEEBciENCyANQQF2IApqrSAKrSIYfCAXfiAKIAhBAXZrrSAYfCAXfoV5pyEMCyAJIApBKGwiEWohFSAAIBFqIRYDQAJAAkACQAJAAkACQAJAIAtBAkkNACAGQb4CaiALQX9qIhNqLQAAIAxPDQELIAZBvgJqIAtqIAw6AAAgBkE0aiALQQJ0aiAINgIAIAogAU8NASALQQFqIQsgDUEBdiAKaiEKIA0hCAwHCwJAIAZBNGogE0ECdGooAgAiC0EBdiIRIAhBAXYiEmoiECADSw0AIAsgCHJBAXFFDQILIAAgCiAQa0EobGohFAJAIAtBAXENACAGQRBqIBEgFCAQQZSwoQEQ8i8gBigCECAGKAIUIAIgAyAFEJ0xCwJAIAhBAXENACAGQQhqIBEgFCAQQaSwoQEQwS0gBigCCCAGKAIMIAIgAyAFEJ0xCyALQQJJDQQgCEECSQ0EIBIgESASIBFJIg8bIgggA0sNBCACIBQgEUEobGoiEiAUIA8bIgsgCEEobCIIEN8KIg4gCGohCAJAIA8NACAOIREDQCARIAhGDQUgEiAWRg0FIBIgESASKAIcIBEoAhxJIBIoAhgiDyARKAIYIhRJIA8gFEYbIg8bIRQgEiAPQShsaiESIBEgD0EBc0EobGohESALIBRBKBDfCkEoaiELDAALCyAVIREDQCARIAtBWGoiEiAIQVhqIg8gCEF0aigCACALQXRqKAIASSAIQXBqKAIAIgggC0FwaigCACILSSAIIAtGGyILG0EoEN8KIREgDyALQShsaiEIIBIgC0EBc0EobGoiCyAURg0DIBFBWGohESAIIA5HDQAMAwsLAkAgCEEBcQ0AIAAgASACIAMgBRCdMQsgBkGAA2okAA8LIBBBAXQhCCATIQsMAwsgDiERCyALIBEgCCARaxDfChoLIBBBAXRBAXIhCCATIQsMAAsLC6ELAQp/IwBB8ABrIgMkACABEO0OGiABQdQCQdgCIAEtAOECQQJGG2ooAgAhBAJAAkAgAkUNAAJAAkAgARDtDiIFRQ0AIAUtAABB3gBGDQELIAFB1AJqIAFB3AJqIAEtAOECQQJGIgIbKAIAIQUgAUHQAmogAUHYAmogAhsoAgAhAiADQRhqIAEQygsgA0EBNgJMIANBpNehATYCSCADQgE3AlQgA0HoBDYCZCADQd4AOgBvIAMgA0HgAGo2AlAgAyADQegAajYCYCADIANB7wBqNgJoIANBMGogA0HIAGoQkQogA0HEAGogA0EgaigCADYCACADIAMpAhg3AjwgAiAFIAIgBUkbIAIgBSACIAVLGyADQTBqEP4iIQUCQCABEO0OIgJFDQAgAi0AAEGbAUcNACABQQI6AOECIAEgASkD2AI3A9ACIAEgARDfGBD1GAsgAEECNgIAIAAgBTYCBAwCCyABQQI6AOECIAEgASkD2AI3A9ACC0EAIQUCQAJAAkACQCABEO0OIgZFDQAgBi0AAEESRw0AIANBEGogAUEAQQEQvAEgAygCFCEFIAMoAhANAQsCQCABEO0OIgZFDQAgBi0AAEUNAgsgAUHUAmogAUHcAmogAS0A4QJBAkYiBBsoAgAhAiABQdACaiABQdgCaiAEGygCACEEIANBJGogARDKCyADQQE2AkwgA0Gk16EBNgJIIANCATcCVCADQegENgJkIANBADoAbyADIANB4ABqNgJQIAMgA0HoAGo2AmAgAyADQe8AajYCaCADQTBqIANByABqEJEKIANBxABqIANBLGooAgA2AgAgAyADKQIkNwI8IAQgAiAEIAJJGyAEIAIgBCACSxsgA0EwahD+IiECAkAgARDtDiIERQ0AIAQtAABBmwFHDQAgAUECOgDhAiABIAEpA9gCNwPQAiABIAEQ3xgQ9RgLIABBAjYCACAAIAI2AgQMAgsgAEECNgIAIAAgBTYCBAwCCyABQQI6AOECIAEgASkD2AI3A9ACIANByABqIAEQnwMgAygCTCEGAkACQAJAAkAgAygCSCIHQYCAgIB4Rg0AIAMgAygCUDYCOCADIAY2AjQgAyAHNgIwQQAhCAJAAkACQAJAAkACQCABEO0OIglFDQAgCS0AAEEJRw0AIANBCToAYCABKAKQAiEJIAMgA0HgAGo2AkgCQCAJQQJxRQ0AIAEoAoQCIggoAggiCkH+////B0sNCCAIKAIURQ0AIAoNCSAIQX82AgggASgCgAIiCigCCA0KIApBfzYCCCAIKAIQIQsgCkEMaiAIKAIUIgwQoTAgCigCECAKKAIUQQJ0aiALIAxBAnQQ3woaIAogDCAKKAIUajYCFCAIQQA2AhQgCiAKKAIIQQFqNgIIIAggCCgCCEEBajYCCAsgASAJQYAgcjYCkAIgA0EIaiADQcgAaiABEK0CIAMoAgwhCCADKAIIIQogASAJENwRIAoNAQsgARDtDiIJRQ0BIAktAABBB0cNASABQQI6AOECIAEgASkD2AI3A9ACDAILIABBAjYCACAAIAg2AgQMAwsgARDLDCIJDQELIAAgAykCMDcCBCAAIAU2AhwgACAINgIYIAAgAjYCACAAQQxqIANBOGooAgA2AgAgACAEIAEoAtQCIgEgBCABSxs2AhQgACAEIAEgBCABSRs2AhAMBwsgAEECNgIAIAAgCTYCBCAIRQ0AIAgoAgAiARDQBCABQeAAQQgQ7hwgCEEMQQQQ7hwgAygCNCEGIAMoAjAhBwsgA0EwahD6CyAHIAYQ4TMMBAsgAEECNgIAIAAgBjYCBAwDC0GchJsBEOoiAAtBjISbARDpIgALQfyDmwEQ6SIACyAFRQ0AIAUQ3REgBSgCACAFQQRqKAIAEN4zIAVBFEEEEO4cCyADQfAAaiQAC/MKAQd/IwBB4ABrIgEkAAJAAkAgACgCACICRQ0AQQAhAwJAIAAoAggiBCAAKAIEIgVPDQAgAiAEai0AAEHVAEcNAEEBIQMgACAEQQFqIgQ2AggLAkACQAJAAkAgBCAFTw0AIAIgBGotAABBywBGDQELIANFDQNBACECDAELIAAgBEEBaiIGNgIIAkACQCAGIAVPDQAgAiAGai0AAEHDAEcNACAAIARBAmo2AghBASEFQdCplwEhAgwBCyABQShqIAAQlQYCQCABKAIoIgJFDQACQCABKAIsIgVFDQAgASgCNEUNAgsCQCAAKAIQIgRFDQAgBEH4rpcBQRAQ3wVFDQBBASEEDAYLQQAhBCAAQQA6AAQgAEEANgIADAULIAAoAhAhBAJAAkAgAS0ALCICDQAgBEUNASAEQfiulwFBEBDfBUUNAUEBIQQMBgsgBEUNACAEQYivlwFBGRDfBUUNAEEBIQQMBQsgACACOgAEQQAhBCAAQQA2AgAMBAsgA0UNAQsCQCAAKAIQIgRFDQAgBEHMr5cBQQcQ3wVFDQBBASEEDAMLIAJFDQELAkAgACgCECIERQ0AIARB06+XAUEIEN8FRQ0AQQEhBAwCCyABQQE7ASQgASAFNgIgIAFBADYCHCABQQE6ABggAUHfADYCFCABIAU2AhAgAUEANgIMIAEgBTYCCCABIAI2AgQgAUHfADYCACABQShqIAEQ5ggCQAJAIAEoAigNAAJAIAEtACUNACABQQE6ACUCQAJAIAEtACRBAUcNACABKAIgIQMgASgCHCEFDAELIAEoAiAiAyABKAIcIgVGDQELIAEoAgQgBWohAiADIAVrIQUMAgtB3K+XARD9OQALIAEoAhwhBSABIAEoAjA2AhwgAiAFaiECIAEoAiwgBWshBQsCQAJAIARFDQAgBCACIAUQ3wUNAQsgAUEoakEgaiABQSBqKQIANwMAIAFBKGpBGGogAUEYaikCADcDACABQShqQRBqIAFBEGopAgA3AwAgAUEoakEIaiABQQhqKQIANwMAIAEgASkCADcDKAJAAkAgAS0ATUUNACAEIQcMAQsgBCEHIAQhAgNAIAEoAiwhBSABQdQAaiABQShqEOYIAkACQCABKAJUDQAgAS0ATQ0DIAFBAToATQJAAkAgAS0ATEEBRw0AIAEoAkghAyABKAJEIQUMAQsgASgCSCIDIAEoAkQiBUYNBAsgASgCLCAFaiEGIAMgBWshBQwBCyABKAJEIQMgASABKAJcNgJEIAUgA2ohBiABKAJYIANrIQULAkACQCACDQBBACECDAELIAJBu4WhAUEBEN8FDQMCQCAEDQBBACEHQQAhAgwBCyAEIQcgBCECIAQgBiAFEN8FDQMLIAEtAE1FDQALCyAHRQ0BIAdB7K+XAUECEN8FRQ0BC0EBIQQMAQsCQCAAKAIQIgRFDQAgBEHur5cBQQMQ3wVFDQBBASEEDAELAkACQAJAAkAgACgCACICDQBBACECDAELQQAhBANAAkAgACgCCCIFIAAoAgRPDQAgAiAFai0AAEHFAEcNACAAIAVBAWo2AggMAgsCQCAERQ0AIAAoAhAiAkUNACACQZ7rmgFBAhDfBUUNAEEBIQQMBQsgABDuAw0CIARBf2ohBCAAKAIAIgINAAtBACECCwJAIAAoAhAiBUUNAEEBIQQgBUG84qIBQQEQ3wUNAyAAKAIAIQILIAJFDQEgACgCCCIEIAAoAgRPDQEgAiAEai0AAEH1AEcNASAAIARBAWo2AghBACEEDAILQQEhBAwBCwJAIAAoAhAiBEUNACAEQfGvlwFBBBDfBUUNAEEBIQQMAQsgABDuAyEECyABQeAAaiQAIAQLyAsCCH8BfiMAQRBrIgEkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADhIBERECAwQFBgcICQoLDA0ODxAACyAAKAIEIgIQqAEgAkHAAEEIEO4cDBALIAAoAgghAwJAIAAoAgwiBEUNACADIQIDQCACEMQDIAJBMGohAiAEQX9qIgQNAAsLIAAoAgQgAxDeMwwPCyAAKAIEIgIQqAEgAkHAAEEIEO4cIAAoAggiAhDEAyACQTBBCBDuHAwOCyAAKAIMIgJFDQ0gAhCoASACQcAAQQgQ7hwMDQsCQCAAKQMQIglCA4NCAFINACABIAmnIgI2AgwgAUEMahD1ByACIAIoAgAiBEF/ajYCACAEQQFHDQAgAiACKAIgENMvCyAAKAIoIgIQxAMgAkEwQQgQ7hwMDAsgAC0AJEECRg0LIAApAxAiCUIDg0IAUg0LIAEgCaciAjYCBCABQQRqEPUHIAIgAigCACIEQX9qNgIAIARBAUcNCyACIAIoAiAQ0y8MCwsgAC0AJEECRg0KIAApAxAiCUIDg0IAUg0KIAEgCaciAjYCCCABQQhqEPUHIAIgAigCACIEQX9qNgIAIARBAUcNCiACIAIoAiAQ0y8MCgsgACgCBCICEKgBIAJBwABBCBDuHCAAKAIIIgIQxAMgAkEwQQgQ7hwgACgCFCICRQ0JIAIQxAMgAkEwQQgQ7hwMCQsgACgCECICEKgBIAJBwABBCBDuHCAAKAIIIQUCQCAAKAIMIgZFDQBBACEHA0ACQCAFIAdBGGxqIgMoAhQiAkUNACACEKgBIAJBwABBCBDuHAsgA0EEaiIIKAIAIQICQCADKAIIIgRFDQADQCACEMQDIAJBMGohAiAEQX9qIgQNAAsgCCgCACECCyADKAIAIAIQ3jMgB0EBaiIHIAZHDQALCyAAKAIEIAUQ+zMMCAsgACgCBCICEKgBIAJBwABBCBDuHAwHCyAAKAIEIgNBzABqKAIAIQICQCADKAJQIgRFDQADQCACEMQDIAJBMGohAiAEQX9qIgQNAAsgA0HMAGooAgAhAgsgAygCSCACEN4zAkACQAJAIAMoAgBBeWoOAgECAAsgAxCICQsgA0EsaigCACECAkAgAygCMCIERQ0AA0AgAhDEAyACQTBqIQIgBEF/aiIEDQALIANBLGooAgAhAgsgAygCKCACEN4zCwJAIAMoAmAiAEGAgICAeEYNACADQeQAaigCACECAkAgAygCaCIERQ0AA0AgAhDEAyACQTBqIQIgBEF/aiIEDQALIANB5ABqKAIAIQIgAygCYCEACyAAIAIQ3jMLIANBgAFBCBDuHAwGCyAAKAIEIgIQqAEgAkHAAEEIEO4cIAAoAggiAhDEAyACQTBBCBDuHAwFCyAAKAIEIgIQqAEgAkHAAEEIEO4cIAAoAggiAhDEAyACQTBBCBDuHAwECwJAAkACQCAAKAIEDgMAAQIBCyAAQQhqEL4JDAELIABBCGoQpjYLAkAgACgCGCICRQ0AIAIQqAEgAkHAAEEIEO4cCwJAIAAoAhwiAkUNACACEKgBIAJBwABBCBDuHAsgACgCDCICEMQDIAJBMEEIEO4cDAMLAkACQAJAAkAgACgCBA4CAQIACyAAKAIIIgIQiAkgAkEoQQgQ7hwMAgsgACgCCCICEJ8fIAJBHEEEEO4cDAELIAAoAggiAhCgHyACQRhBBBDuHAsgACgCDCICEKgBIAJBwABBCBDuHCAAKAIQIgIQxAMgAkEwQQgQ7hwMAgsCQAJAAkACQCAAKAIEDgIBAgALIAAoAggiAhCICSACQShBCBDuHAwCCyAAKAIIIgIQnx8gAkEcQQQQ7hwMAQsgACgCCCICEKAfIAJBGEEEEO4cCyAAKAIMIgIQqAEgAkHAAEEIEO4cIAAoAhAiAhDEAyACQTBBCBDuHAwBCyAAQQhqEO8BCyABQRBqJAALyAsCCH8BfiMAQRBrIgEkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADhIBERECAwQFBgcICQoLDA0ODxAACyAAKAIEIgIQqwEgAkHAAEEIEO4cDBALIAAoAgghAwJAIAAoAgwiBEUNACADIQIDQCACEMUDIAJBMGohAiAEQX9qIgQNAAsLIAAoAgQgAxDeMwwPCyAAKAIEIgIQqwEgAkHAAEEIEO4cIAAoAggiAhDFAyACQTBBCBDuHAwOCyAAKAIMIgJFDQ0gAhCrASACQcAAQQgQ7hwMDQsCQCAAKQMQIglCA4NCAFINACABIAmnIgI2AgwgAUEMahD1ByACIAIoAgAiBEF/ajYCACAEQQFHDQAgAiACKAIgENMvCyAAKAIoIgIQxQMgAkEwQQgQ7hwMDAsgAC0AJEECRg0LIAApAxAiCUIDg0IAUg0LIAEgCaciAjYCBCABQQRqEPUHIAIgAigCACIEQX9qNgIAIARBAUcNCyACIAIoAiAQ0y8MCwsgAC0AJEECRg0KIAApAxAiCUIDg0IAUg0KIAEgCaciAjYCCCABQQhqEPUHIAIgAigCACIEQX9qNgIAIARBAUcNCiACIAIoAiAQ0y8MCgsgACgCBCICEKsBIAJBwABBCBDuHCAAKAIIIgIQxQMgAkEwQQgQ7hwgACgCFCICRQ0JIAIQxQMgAkEwQQgQ7hwMCQsgACgCECICEKsBIAJBwABBCBDuHCAAKAIIIQUCQCAAKAIMIgZFDQBBACEHA0ACQCAFIAdBGGxqIgMoAhQiAkUNACACEKsBIAJBwABBCBDuHAsgA0EEaiIIKAIAIQICQCADKAIIIgRFDQADQCACEMUDIAJBMGohAiAEQX9qIgQNAAsgCCgCACECCyADKAIAIAIQ3jMgB0EBaiIHIAZHDQALCyAAKAIEIAUQ+zMMCAsgACgCBCICEKsBIAJBwABBCBDuHAwHCyAAKAIEIgNBzABqKAIAIQICQCADKAJQIgRFDQADQCACEMUDIAJBMGohAiAEQX9qIgQNAAsgA0HMAGooAgAhAgsgAygCSCACEN4zAkACQAJAIAMoAgBBeWoOAgECAAsgAxCJCQsgA0EsaigCACECAkAgAygCMCIERQ0AA0AgAhDFAyACQTBqIQIgBEF/aiIEDQALIANBLGooAgAhAgsgAygCKCACEN4zCwJAIAMoAmAiAEGAgICAeEYNACADQeQAaigCACECAkAgAygCaCIERQ0AA0AgAhDFAyACQTBqIQIgBEF/aiIEDQALIANB5ABqKAIAIQIgAygCYCEACyAAIAIQ3jMLIANBgAFBCBDuHAwGCyAAKAIEIgIQqwEgAkHAAEEIEO4cIAAoAggiAhDFAyACQTBBCBDuHAwFCyAAKAIEIgIQqwEgAkHAAEEIEO4cIAAoAggiAhDFAyACQTBBCBDuHAwECwJAAkACQCAAKAIEDgMAAQIBCyAAQQhqEL8JDAELIABBCGoQvjYLAkAgACgCGCICRQ0AIAIQqwEgAkHAAEEIEO4cCwJAIAAoAhwiAkUNACACEKsBIAJBwABBCBDuHAsgACgCDCICEMUDIAJBMEEIEO4cDAMLAkACQAJAAkAgACgCBA4CAQIACyAAKAIIIgIQiQkgAkEoQQgQ7hwMAgsgACgCCCICELAfIAJBHEEEEO4cDAELIAAoAggiAhCxHyACQRhBBBDuHAsgACgCDCICEKsBIAJBwABBCBDuHCAAKAIQIgIQxQMgAkEwQQgQ7hwMAgsCQAJAAkACQCAAKAIEDgIBAgALIAAoAggiAhCJCSACQShBCBDuHAwCCyAAKAIIIgIQsB8gAkEcQQQQ7hwMAQsgACgCCCICELEfIAJBGEEEEO4cCyAAKAIMIgIQqwEgAkHAAEEIEO4cIAAoAhAiAhDFAyACQTBBCBDuHAwBCyAAQQhqELUCCyABQRBqJAALyAsCCH8BfiMAQRBrIgEkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADhIBERECAwQFBgcICQoLDA0ODxAACyAAKAIEIgIQrwEgAkHAAEEIEO4cDBALIAAoAgghAwJAIAAoAgwiBEUNACADIQIDQCACEMYDIAJBMGohAiAEQX9qIgQNAAsLIAAoAgQgAxDeMwwPCyAAKAIEIgIQrwEgAkHAAEEIEO4cIAAoAggiAhDGAyACQTBBCBDuHAwOCyAAKAIMIgJFDQ0gAhCvASACQcAAQQgQ7hwMDQsCQCAAKQMQIglCA4NCAFINACABIAmnIgI2AgwgAUEMahD1ByACIAIoAgAiBEF/ajYCACAEQQFHDQAgAiACKAIgENMvCyAAKAIoIgIQxgMgAkEwQQgQ7hwMDAsgAC0AJEECRg0LIAApAxAiCUIDg0IAUg0LIAEgCaciAjYCBCABQQRqEPUHIAIgAigCACIEQX9qNgIAIARBAUcNCyACIAIoAiAQ0y8MCwsgAC0AJEECRg0KIAApAxAiCUIDg0IAUg0KIAEgCaciAjYCCCABQQhqEPUHIAIgAigCACIEQX9qNgIAIARBAUcNCiACIAIoAiAQ0y8MCgsgACgCBCICEK8BIAJBwABBCBDuHCAAKAIIIgIQxgMgAkEwQQgQ7hwgACgCFCICRQ0JIAIQxgMgAkEwQQgQ7hwMCQsgACgCECICEK8BIAJBwABBCBDuHCAAKAIIIQUCQCAAKAIMIgZFDQBBACEHA0ACQCAFIAdBGGxqIgMoAhQiAkUNACACEK8BIAJBwABBCBDuHAsgA0EEaiIIKAIAIQICQCADKAIIIgRFDQADQCACEMYDIAJBMGohAiAEQX9qIgQNAAsgCCgCACECCyADKAIAIAIQ3jMgB0EBaiIHIAZHDQALCyAAKAIEIAUQ+zMMCAsgACgCBCICEK8BIAJBwABBCBDuHAwHCyAAKAIEIgNBzABqKAIAIQICQCADKAJQIgRFDQADQCACEMYDIAJBMGohAiAEQX9qIgQNAAsgA0HMAGooAgAhAgsgAygCSCACEN4zAkACQAJAIAMoAgBBeWoOAgECAAsgAxCKCQsgA0EsaigCACECAkAgAygCMCIERQ0AA0AgAhDGAyACQTBqIQIgBEF/aiIEDQALIANBLGooAgAhAgsgAygCKCACEN4zCwJAIAMoAmAiAEGAgICAeEYNACADQeQAaigCACECAkAgAygCaCIERQ0AA0AgAhDGAyACQTBqIQIgBEF/aiIEDQALIANB5ABqKAIAIQIgAygCYCEACyAAIAIQ3jMLIANBgAFBCBDuHAwGCyAAKAIEIgIQrwEgAkHAAEEIEO4cIAAoAggiAhDGAyACQTBBCBDuHAwFCyAAKAIEIgIQrwEgAkHAAEEIEO4cIAAoAggiAhDGAyACQTBBCBDuHAwECwJAAkACQCAAKAIEDgMAAQIBCyAAQQhqEMAJDAELIABBCGoQ0TYLAkAgACgCGCICRQ0AIAIQrwEgAkHAAEEIEO4cCwJAIAAoAhwiAkUNACACEK8BIAJBwABBCBDuHAsgACgCDCICEMYDIAJBMEEIEO4cDAMLAkACQAJAAkAgACgCBA4CAQIACyAAKAIIIgIQigkgAkEoQQgQ7hwMAgsgACgCCCICELcfIAJBHEEEEO4cDAELIAAoAggiAhC4HyACQRhBBBDuHAsgACgCDCICEK8BIAJBwABBCBDuHCAAKAIQIgIQxgMgAkEwQQgQ7hwMAgsCQAJAAkACQCAAKAIEDgIBAgALIAAoAggiAhCKCSACQShBCBDuHAwCCyAAKAIIIgIQtx8gAkEcQQQQ7hwMAQsgACgCCCICELgfIAJBGEEEEO4cCyAAKAIMIgIQrwEgAkHAAEEIEO4cIAAoAhAiAhDGAyACQTBBCBDuHAwBCyAAQQhqELgCCyABQRBqJAALugsCCH8BfiMAQRBrIgEkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADhIBERECAwQFBgcICQoLDA0ODxAACyAAKAIEIgIQogEgAkHAAEEIEO4cDBALIAAoAgghAwJAIAAoAgwiBEUNACADIQIDQCACEMcDIAJBMGohAiAEQX9qIgQNAAsLIAAoAgQgAxDeMwwPCyAAKAIEIgIQogEgAkHAAEEIEO4cIAAoAggiAhDHAyACQTBBCBDuHAwOCyAAKAIMIgJFDQ0gAhCiASACQcAAQQgQ7hwMDQsCQCAAKQMQIglCA4NCAFINACABIAmnIgI2AgwgAUEMahD1ByACIAIoAgAiBEF/ajYCACAEQQFHDQAgAiACKAIgENMvCyAAKAIoIgIQxwMgAkEwQQgQ7hwMDAsgAC0AJEECRg0LIAApAxAiCUIDg0IAUg0LIAEgCaciAjYCBCABQQRqEPUHIAIgAigCACIEQX9qNgIAIARBAUcNCyACIAIoAiAQ0y8MCwsgAC0AJEECRg0KIAApAxAiCUIDg0IAUg0KIAEgCaciAjYCCCABQQhqEPUHIAIgAigCACIEQX9qNgIAIARBAUcNCiACIAIoAiAQ0y8MCgsgACgCBCICEKIBIAJBwABBCBDuHCAAKAIIIgIQxwMgAkEwQQgQ7hwgACgCFCICRQ0JIAIQxwMgAkEwQQgQ7hwMCQsgACgCECICEKIBIAJBwABBCBDuHCAAKAIIIQUCQCAAKAIMIgZFDQBBACEHA0ACQCAFIAdBGGxqIgMoAhQiAkUNACACEKIBIAJBwABBCBDuHAsgA0EEaiIIKAIAIQICQCADKAIIIgRFDQADQCACEMcDIAJBMGohAiAEQX9qIgQNAAsgCCgCACECCyADKAIAIAIQ3jMgB0EBaiIHIAZHDQALCyAAKAIEIAUQ+zMMCAsgACgCBCICEKIBIAJBwABBCBDuHAwHCyAAKAIEIgNBzABqKAIAIQICQCADKAJQIgRFDQADQCACEMcDIAJBMGohAiAEQX9qIgQNAAsgA0HMAGooAgAhAgsgAygCSCACEN4zAkACQAJAIAMoAgBBeWoOAgECAAsgAxCTCQsgA0EsaigCACECAkAgAygCMCIERQ0AA0AgAhDHAyACQTBqIQIgBEF/aiIEDQALIANBLGooAgAhAgsgAygCKCACEN4zCwJAIAMoAmAiAEGAgICAeEYNACADQeQAaigCACECAkAgAygCaCIERQ0AA0AgAhDHAyACQTBqIQIgBEF/aiIEDQALIANB5ABqKAIAIQIgAygCYCEACyAAIAIQ3jMLIANBgAFBCBDuHAwGCyAAKAIEIgIQogEgAkHAAEEIEO4cIAAoAggiAhDHAyACQTBBCBDuHAwFCyAAKAIEIgIQogEgAkHAAEEIEO4cIAAoAggiAhDHAyACQTBBCBDuHAwECwJAAkACQCAAKAIEDgMAAQIBCyAAQQhqEJUaDAELIABBCGoQmDYLAkAgACgCGCICRQ0AIAIQogEgAkHAAEEIEO4cCwJAIAAoAhwiAkUNACACEKIBIAJBwABBCBDuHAsgACgCDCICEMcDIAJBMEEIEO4cDAMLIABBCGohAgJAAkACQAJAIAAoAgQOAgECAAsgAhDUCwwCCyACKAIAIgIQlh8gAkEcQQQQ7hwMAQsgAigCACICEJcfIAJBGEEEEO4cCyAAKAIMIgIQogEgAkHAAEEIEO4cIAAoAhAiAhDHAyACQTBBCBDuHAwCCyAAQQhqIQICQAJAAkACQCAAKAIEDgIBAgALIAIQ1AsMAgsgAigCACICEJYfIAJBHEEEEO4cDAELIAIoAgAiAhCXHyACQRhBBBDuHAsgACgCDCICEKIBIAJBwABBCBDuHCAAKAIQIgIQxwMgAkEwQQgQ7hwMAQsgAEEIahC3AgsgAUEQaiQAC5YLAg1/A34jAEHgAWsiAiQAIAJBMGogARCFAiACKAI0IQMCQAJAAkACQCACKAIwIgRBgICAgHhGDQAgAigCOCEFIAJBGGpBBEEIQSgQ4yJBACEGIAJBADYCLCACIAIoAhwiBzYCKCACIAIoAhg2AiQgAiAENgKoASACIAM2AqABIAIgAyAFQQZ0IghqIgk2AqwBIAJB4ABqIQogAkHwAGpBBGohCyACQTBqQQRyIQxBBCENA0ACQAJAAkACQAJAAkACQAJAAkAgCEUNACADKAIAIgRBB0cNASADQcAAaiEJCyACIAk2AqQBIAJBoAFqEKcnIAJBuAFqQRBqQQApA9DgmQEiDzcDACACQbgBakEIakEAKQPI4JkBIhA3AwAgAkEAKQPA4JkBIhE3A7gBIAEQsBYgAkG4AWoQxTUNASACQbgBahDhECACQQhqIAEQ+yAgAigCDCEDIAIoAgghBCACQZQBaiABEN8aIAJBMGpBEGogDzcDACACQTBqQQhqIBA3AwAgAkEBNgK8ASACQaTXoQE2ArgBIAJCATcCxAEgAkGiAjYC2AEgAiARNwMwIAIgAkHUAWo2AsABIAIgAkHcAWo2AtQBIAIgAkEwajYC3AEgAkGgAWogAkG4AWoQ5iIgAkEwahDhECACQbQBaiACQZQBakEIaigCADYCACACIAIpApQBNwKsASAEIAMgAkGgAWoQ/iIhAwJAIAEQsBYiBEUNACAEKAIAQSRHDQAgASABKQMYNwNQIAEoAgAhBCABQSU2AgAgBEEkRw0DIAEgASgCBBDjEwsgAEGAgICAeDYCACAAIAM2AgQMCwsgA0HAAGohDiACIAQ2AjAgDCADQQRqIgVBPBDfChogBA4EBQQDAgkLIAEgASkDGDcDUCABKAIAIQMgAUElNgIAIAJBMGpBDGogAUEMaikCADcCACACQTBqQRRqIAFBFGooAgA2AgAgAiABKQIENwI0IAIgAzYCMCACQTBqEOEQIAJBuAFqEOEQIABBCGogAkEkakEIaigCADYCACAAIAIpAiQ3AgAMCgtBlM6hAUEoQdjhmQEQ0ycACyACQfAAakEYaiAFQRhqKAIANgIAIAJB8ABqQRBqIAVBEGopAgA3AwAgAkHwAGpBCGogBUEIaikCADcDACACIAUpAgA3A3AMAwsgAkHwAGpBEGogBUEQaikCADcDACACQfAAakEIaiAFQQhqKQIANwMAIAIgBSkCADcDcAwCCyACQfAAakEYaiAFQRhqKAIANgIAIAJB8ABqQRBqIAVBEGopAgA3AwAgAkHwAGpBCGogBUEIaikCADcDACACIAUpAgA3A3AMAQsgCyADKQIINwIAIAtBGGogA0EgaikCADcCACALQRBqIANBGGopAgA3AgAgC0EIaiADQRBqKQIANwIACwJAIAYgAigCJEcNACACQSRqEOQmIAIoAighBwsgByANaiIDQXxqIAQ2AgAgAyACQfAAakEkEN8KGiACIAZBAWoiBjYCLCAKEJ03AkAgAigCMEEESQ0AIAJBMGoQjx4LIAhBQGohCCANQShqIQ0gDiEDDAALCyAAQYCAgIB4NgIAIAAgAzYCBAwCCyACIA42AqQBIAJBuAFqQQRyIAEQ3xogAkEQaiABEPsgIAJB1wA2AswBIAJBx7maATYCyAEgAkGwgICAeDYCuAEgAigCECACKAIUIAJBuAFqEP4iIQMCQAJAIAEQsBYiBEUNACAEKAIAQSRHDQAgASABKQMYNwNQIAEoAgAhBCABQSU2AgAgBEEkRw0BIAEgASgCBBDjEwsgAEGAgICAeDYCACAAIAM2AgQgChCdNyACQTBqEI8eIAJBoAFqEKcnDAELQZTOoQFBKEHY4ZkBENMnAAsgAkEkahCcNwsgAkHgAWokAAunCwEIfyMAQeABayIEJAACQAJAIAIoAggiBQ0AIABBADYCCCAAQoCAgICAATcCAAwBCyAEQRhqIAVBCEEoEOMiIARBADYCLCAEIAQpAxg3AiQgBUF/aiACKAIIIgUQpzIhBiACQQA2AgggBCAGNgKMASAEIAI2AogBIAQgBSAGazYCkAEgBCACKAIEIgU2AoABIAQgBSAGQShsaiIGNgKEASAEQdgAakEIaiEHIARBuAFqQQhqIQggBEEwakEQaiEJIARBMGpBBHIhCgNAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAFIAZGDQAgBCAFQShqNgKAASAFKAIAIgZBCEcNAQsgBEGAAWoQtxsgAigCCCIFRQ0HIAIgBUF/aiIFNgIIIAIoAgQgBUEobGoiBigCACIFQQhGDQcgBCAFNgKAASAEQYABakEEciAGQQRqQSQQ3woaIARBCGogBEGAAWoQ2RwgBUEHRw0BIAQoAoQBRQ0EIAQoAgwhCiAEKAIIIQsgBCgCjAEhByAEKAKIASEIAkACQCAEKAKQASIFKAIAQXRqIgZBJUsNACAGQQdHDQELIARB/4CAgHg2ArgBIAEgCyAKIARBuAFqEIgqCwJAIAMoAgBBAUcNACADKAIIIQYgAygCBCEKIARBuoCAgHg2ArgBIAEgCiAGIARBuAFqEIgqCyAEIAUQggUgBCgCBCEKIAQoAgAhC0EAIQkgBEG4AWogAUEAIAUQkgEgBCgCuAFBB0YNAxDAMiIGIARBuAFqQSgQ3woaDAILIAQgBjYCMCAKIAVBBGpBJBDfChogBkEHRiIFDQQgBkECRw0FDAoLIARBsAFqIAZBJGooAgA2AgAgBCAGKQIcNwOoASAEKAKYASEJIAQoApQBIQcgBCgCkAEhCCAEKAKMASEKIAQoAogBIQsgBCgChAEhBiAFQQJHDQggAygCAEUNCCADKAIEIQUgAygCCCEDIARBuoCAgHg2ArgBIAEgBSADIARBuAFqEIgqC0ECIQUMBwsgBCgCvAEhBgwECyAEQbgBaiABQQAgBCgCkAEQkgEgBCgCvAEhBiAEKAK4ASIFQQdGDQMgBEGwAWogBEHcAWooAgA2AgAgBCAEKQLUATcDqAEgBCgC0AEhCSAEKALMASEHIAQoAsgBIQggBCgCxAEhCiAEKALAASELDAULIAQoAjQNBSAEQbgBaiABQQAgBCgCQBCSASAEKAK8ASEFAkAgBCgCuAEiBkEHRw0AIABBgICAgHg2AgAgACAFNgIEIARBgAFqELcbDAQLIAcgCCkDADcDACAHQRhqIAhBGGopAwA3AwAgB0EQaiAIQRBqKQMANwMAIAdBCGogCEEIaikDADcDACAEIAU2AlwgBCAGNgJYIARBJGogBEHYAGoQ4ioMBgsgBEEkaiAEQTBqEOIqDAULQfyCmwEQ/TkACyAAQYCAgIB4NgIAIAAgBjYCBAsgBEEkahCtNwwECyAEQdwBaiAEQagBakEIaigCADYCACAEIAk2AtABIAQgBzYCzAEgBCAINgLIASAEIAo2AsQBIAQgCzYCwAEgBCAGNgK8ASAEIAU2ArgBIAQgBCkDqAE3AtQBIARBJGogBEG4AWoQ4ioCQCABLQDMAkEIcUUNACAEKAIsQShsIQUgBCgCKCEGA0AgBUUNASABIAYQvwwgBUFYaiEFIAZBKGohBgwACwsgACAEKQIkNwIAIABBCGogBEEkakEIaigCADYCAAwDCyAEQRBqIARBMGoQ2RwgBCgCFCEGIAQoAhAhCyAEQfeAgIB4NgK4ASABIAsgBiAEQbgBahCIKgJAIAVFDQAgCRC8OQwBCyAEQTBqEPAbCyAEKAKAASEFIAQoAoQBIQYMAAsLIAIoAgQgAigCCBDGKCACKAIAIAIoAgQQrjogBEHgAWokAAv0CgIIfwF+IwBBgAFrIgMkACABKAIEIQQgA0HgAGogAiABKAIAIgVBABDkAgJAAkACQAJAAkACQAJAIAMtAGBBBEYNACADKQNgIgtC/wGDQgRSDQELAkAgAi0ATQ0AAkACQAJAAkAgASkDCFANACADQSBqIAFBCGoiARDJEyADKAIkQQNJDQEgAi0AUkH/AXFBCE8NASADQRhqIAEQyRMgAygCGCADKAIcQd8AEMAtRQ0BIANBCGogARDJEyADKAIIIQYgAygCDCEHIANBADYCWCADQoCAgIAQNwJQIANBAToAeCADQd8ANgJ0IAMgBzYCcCADIAc2AmggAyAGNgJkIANB3wA2AmAgA0H0AGohCEEAIQlBACEBA0AgByABSQ0DIANB3wAgBiABaiAHIAFrEJIWIAMoAgBBAUcNAyADIAMoAgQgAWoiCkEBaiIBNgJsIAFFDQAgASAHSw0AIAYgCmpBASAIQQEQoDFFDQAgA0HQAGogBiAJaiAKIAlrEPguIANB0ABqQQFBABD4LiABIQkMAAsLIANB4ABqIAFBEGoQ+xUgA0HQAGogAiAFIAQgAygCZCIBIAMoAmgQyBMgAy0AUEEERg0CIAMpA1AiC0L/AYNCBFENAiAAIAs3AgAgAygCYCABEPY5DAkLIANBEGogARDJEyADQeAAaiACIAUgBCADKAIQIAMoAhQQyBMgAy0AYEEERg0HIAMpA2AiC0L/AYNCBFENByAAIAs3AgAMCAsgA0HQAGogBiAJaiAHIAlrEPguIAMoAlAhASADQcAAaiACIAUgBCADKAJUIgcgAygCWBDIEwJAIAMtAEBBBEYNACADKQNAIgtC/wGDQgRSDQQLIAEgBxD2OQwGCyADKAJgIAEQ9jkgA0HgAGogAiAFIARB162hAUEBEMgTIAMtAGBBBEYNBSADKQNgIgtC/wGDQgRRDQUgACALNwIADAYLIAEoAhAhByADQeAAahDYEyADQQI6AGwgByADQeAAahDsHiEGIAMoAmAgAygCZBD7OSAGQf8BcUECSQ0CIANB4ABqENgTIANBADoAbCAHIANB4ABqEOweIQYgAygCYCADKAJkEPs5AkAgBkH/AXFBAUcNACADQSxqIAFBEGoQ+xUMBAsQ6zMhASAHLQAMIQYgA0HgAGogB0EEaigCACAHQQhqKAIAEL4jIAEgAykCYDcCACADIAY6AGwgAUEIaiIHIANB4ABqQQhqKQIANwIAIANB0ABqQQhqIAcoAgA2AgAgA0HQAGpBD2ogAUEPai0AADoAACADIAEpAgA3A1AgAyABLwANOwBdIANBAiABLQAMazoAXCADQcAAaiADQdAAahCeCyADQT82AjwgA0EBNgJkIANB3K2hATYCYCADQgE3AmwgAyADQcAAajYCOCADIANBOGo2AmggA0EsaiADQeAAahCzEyADKAJAIAMoAkQQ9jkgAygCUCADKAJUEPs5IAFBEEEEEO4cDAMLIAAgCzcCAAwECyAAIAs3AgAgASAHEPY5DAMLIANB0ABqIAcQngsgA0E/NgJEIANBATYCZCADQeitoQE2AmAgA0IBNwJsIAMgA0HQAGo2AkAgAyADQcAAajYCaCADQSxqIANB4ABqELMTIAMoAlAgAygCVBD2OQsgA0HgAGogAiAFIAQgAygCMCIBIAMoAjQQyBMCQAJAIAMtAGBBBEYNACADKQNgIgtC/wGDQgRSDQELIANB4ABqIAIgBSAEQdetoQFBARDIEwJAIAMtAGBBBEYNACADKQNgIgtC/wGDQgRSDQELIAMoAiwgARD2OQwBCyAAIAs3AgAgAygCLCABEPY5DAELIABBBDoAAAsgA0GAAWokAAvuCwEFfyMAQbAGayIFJAACQAJAIAEtANQCQQJGDQAgAEIANwIADAELAkACQAJAAkACQAJAAkACQAJAAkACQCABELAWIgZFDQAgBigCACIHQSRGDQECQCAHQQJHDQAgBi0ACCIHQQIgB0ECSRtBAXENAyAHRQ0ECyAFQbADaiIIQQApA5i6mQE3AwAgBUGoA2oiCUEAKQOQupkBNwMAIAVBACkDiLqZATcDoAMgBUGgA2ogBhCHByEHIAVBoANqEOEQIAcNBCAIQQApA4C+mQE3AwAgCUEAKQP4vZkBNwMAIAVBACkD8L2ZATcDoAMgBUGgA2ogBhCHByEGIAVBoANqEOEQIAYNBSAAQgA3AgAMCwsgASgCsAIhBiAFQYCAgIB4NgKgAyAGIAYgBUGgA2oQ/iIhBgwJCyABIAEpAxg3A1AgASgCACEGIAFBJTYCAAJAIAZBJEcNACABKAIEIQYMCQtBlM6hAUEoQdjhmQEQ0ycACyAFQaADaiAGEMAFIAUoAqADQQJHDQQgBS0AqAMiBkECIAZBAkkbQQFxRQ0EIAUgBSkDsAMQ/Sw3AwggBUGgA2oQ4RAMAwsgBSAGLQAJEOgMNwMIDAILIAUQ2Tg3AwgMAQsgBRDaODcDCAsgA0EDdCEDQQAhByACIQYCQAJAA0AgA0UNASAGKAIEIQggBigCACEJIAUgBUEIahDJEyAJIAggBSgCACAFKAIEEKAxDQIgA0F4aiEDIAdBAWohByAGQQhqIQYMAAsLIAUpAwgQ0h8MAwsgBSkDCBDSHyAERQ0BIAVBsANqQQApA+DFmQE3AwAgBUGoA2pBACkD2MWZATcDACAFQQApA9DFmQE3A6ADIAEQsBYgBUGgA2oQxTUhBiAFQaADahDhECAGRQ0BIAEQwh4iBkUNASAFQbADakEAKQPw35kBNwMAIAVBqANqQQApA+jfmQE3AwAgBUEAKQPg35kBNwOgAyAFQaADaiAGEIcHIQYgBUGgA2oQ4RAgBkUNASAAQgA3AgAMBAtBlM6hAUEoQeitmQEQ0ycACyABLQDUAkECRw0AIAEoAswCIQYgBUEIaiABEO8CIAVBCGogBkEBchDhDyAFQaADakEMaiAFQQhqQQxqKQIANwIAIAVBoANqQRRqIAVBCGpBFGooAgA2AgAgBSgCCCEDIAVBJTYCCCAFIAUpAyA3A1ggBSAFKQIMNwKkAyAFIAM2AqADIAVBoANqEOEQAkACQCAFQQhqELkyDQAgBUEIahCwFiIDRQ0AIAVBsANqIglBACkD2N+ZATcDACAFQagDaiIEQQApA9DfmQE3AwAgBUEAKQPI35kBNwOgAyAFQaADaiADEIcHIQggBUGgA2oQ4RACQAJAIAgNACAJQQApA/DfmQE3AwAgBEEAKQPo35kBNwMAIAVBACkD4N+ZATcDoAMgBUGgA2ogAxCHByEIIAVBoANqEOEQIAgNACAFQbADaiIJQQApA+DBmQE3AwAgBUGoA2oiBEEAKQPYwZkBNwMAIAVBACkD0MGZATcDoAMgBUGgA2ogAxCHByEIIAVBoANqEOEQIAgNACAJQQApA6DgmQE3AwAgBEEAKQOY4JkBNwMAIAVBACkDkOCZATcDoAMgBUGgA2ogAxCHByEIIAVBoANqEOEQIAgNACAFQbADakEAKQOYyJkBNwMAIAVBqANqQQApA5DImQE3AwAgBUEAKQOIyJkBNwOgAyAFQaADaiADEIcHIQggBUGgA2oQ4RAgCA0AIAVBADoAmAMgBUKEgIDABiADNQIAiKdBAXEiAzoAmQMgAw0BDAMLIAVBgAI7AZgDCyAFQaADaiAFQQhqQZADEN8KGiABELgXIAEgBUGgA2pBkAMQ3woiAyADKALMAkF+cSAGQQFxchDhDyAFQZgDahDWNCAAQQA2AgAgACACIAdBA3RqKQIANwIEDAQLIAVBADsBmAMLIAVBmANqENY0IAVBCGoQuBcLIABCADcCAAwBCyAAQQE2AgAgACAGNgIECyAFQbAGaiQAC7YKAhB/BX4jAEHwAGsiAiQAAkACQCABKAIIDQAgASgCBCIDQQAQrS0gASgCACIBRQ0BIAMgAUECdEEEEO4cDAELAkAgACgCIEGAgICAeEYNACACQQhqIAFBCGooAgA2AgAgAkEAOwEMIAIgASkCADcDAEEEQQAQrS0CQAJAAkACQAJAAkACQAJAAkAgACgCKCIDRQ0AIAAoAiQhASADQTBsIQMDQCABIAIQwwUgAUEwaiEBIANBUGoiAw0ACyACLQANQQFxDQELIAIoAgghBCACQQA2AgggAigCACEFIAIoAgQhASACQoCAgIDAADcDACAAKAIoIQMgAEEANgIoIAJBADYCHCACIAEgBEECdGo2AjAgAiAFNgIsIAIgATYCKCACIAE2AiQgAiAAQSBqIgA2AhggAkKIgICAgAE3AhAgAiADNgIgIAJBJGohAQJAIAMNACAAIAEQlgQMAwsgAEEAIAEQoARFDQICQCACKAIwIgAgAigCKCIDRw0AIAMhAAwCCyACQRBqIAAgA2tBAnYQvBwgAigCGCACKAIcIAEQoARFDQIgAigCMCEDIAIoAighAAwBCyACKAIAIQEgAigCBCIDIAIoAggQrS0gAUUNCCADIAFBAnRBBBDuHAwICyACQcAAaiADIABrQQJ2QQhBMBDhEyACKAJEIQMgAigCQEEBRg0BIAJBADYCPCACIAIoAkg2AjggAiADNgI0IAJBNGogARCWBCACKAI4IgYgAigCPCIDQTBsaiEHIAIoAjQhCCAGIQECQCADRQ0AIAJBEGogAxC8HCAGIQEgAigCGCIJKAIIIgAgAigCHCIERg0AIAkoAgQiASAEQTBsaiEKIAZBMGohBSADQTBsIQQgASAAQTBsaiEAIAJB6ABqIQsgAkHgAGohDCACQdgAaiENIAJB0ABqIQ4gAkHIAGohDyAGIQMDQCAFIQECQCAEDQAgByEBDAILIANBMGohEAJAIAMoAgAiEUETRw0AIBAhAQwCCyADQSxqKAIAIQUgA0EkaikCACESIANBHGopAgAhEyADQRRqKQIAIRQgA0EMaikCACEVIAMpAgQhFiAAIBE2AgAgACAWNwIEIABBDGogFTcCACAAQRRqIBQ3AgAgAEEcaiATNwIAIABBJGogEjcCACAAQSxqIAU2AgAgCyAFNgIAIAwgEjcDACANIBM3AwAgDiAUNwMAIA8gFTcDACAJIAkoAghBAWo2AgggAiAWNwNAIAFBMGohBSAEQVBqIQQgECEDIABBMGoiACAKRw0ACwsgByABa0EwbiEDAkAgByABRg0AA0AgARDGAiABQTBqIQEgA0F/aiIDDQALCyAIIAYQ3jMLIAIoAhQiBCACKAIQIgFrQTBuIQMgAigCGCEAAkAgBCABRw0AIAIoAiAiAUUNBSACKAIcIgQgACgCCCIDRg0EIAAoAgQiBSADQTBsaiAFIARBMGxqIAFBMGwQ8T0aDAQLA0AgARDHAiABQTBqIQEgA0F/aiIDDQALIAIoAiAiAUUNBCACKAIcIgQgACgCCCIDRw0BDAILIAMgAigCSBD4OQALIAAoAgQiBSADQTBsaiAFIARBMGxqIAFBMGwQ8T0aCyAAIAMgAWo2AggMAQsgACADIAFqNgIICwJAIAIoAjAiAyACKAIoIgFGDQAgAyABa0ECdiEDA0AgARCUAiABQQRqIQEgA0F/aiIDDQALCyACKAIsIAIoAiQQ3zNBBEEAEK0tDAELQYD6oAFBHkGM+6ABEKoeAAsgAkHwAGokAAvSCwECfyMAQRBrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAIgAoAgBBdGoiA0EHIANBJkkbDiYAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJQALIAIgAEEEajYCDCABQa3ToAFBBCACQQxqQa0CEOkQIQEMJQsgAiAAQQRqNgIMIAFBgOygAUEFIAJBDGpBrgIQ6RAhAQwkCyACIABBBGo2AgwgAUGJ7KABQQYgAkEMakGvAhDpECEBDCMLIAIgAEEIajYCDCABQfzdoAFBAiACQQxqQbACEOkQIQEMIgsgAiAAQQRqNgIMIAFBsdOgAUEFIAJBDGpBsQIQ6RAhAQwhCyACIABBBGo2AgwgAUG206ABQQYgAkEMakGyAhDpECEBDCALIAIgAEEEajYCDCABQbzToAFBAyACQQxqQbMCEOkQIQEMHwsgAiAANgIMIAFBj+ygAUEGIAJBDGpBtAIQ6RAhAQweCyACIABBCGo2AgwgAUG/06ABQQYgAkEMakG1AhDpECEBDB0LIAIgAEEIajYCDCABQcXToAFBCSACQQxqQbYCEOkQIQEMHAsgAiAAQQRqNgIMIAFBztOgAUEEIAJBDGpBtwIQ6RAhAQwbCyACIABBBGo2AgwgAUHS06ABQQQgAkEMakG4AhDpECEBDBoLIAIgAEEEajYCDCABQdbToAFBAyACQQxqQbkCEOkQIQEMGQsgAiAAQQRqNgIMIAFB2dOgAUEDIAJBDGpBugIQ6RAhAQwYCyACIABBCGo2AgwgAUGA9KABQQUgAkEMakG7AhDpECEBDBcLIAIgAEEIajYCDCABQdzToAFBAyACQQxqQbwCEOkQIQEMFgsgAiAAQQRqNgIMIAFBn9OgAUEDIAJBDGpBvQIQ6RAhAQwVCyACIABBBGo2AgwgAUHf06ABQQkgAkEMakG+AhDpECEBDBQLIAIgAEEEajYCDCABQejToAFBBSACQQxqQb8CEOkQIQEMEwsgAiAAQQhqNgIMIAFB992gAUEFIAJBDGpBwAIQ6RAhAQwSCyACIABBBGo2AgwgAUHt06ABQQUgAkEMakHBAhDpECEBDBELIAIgAEEEajYCDCABQfLToAFBCCACQQxqQcICEOkQIQEMEAsgAiAAQQRqNgIMIAFB+tOgAUEFIAJBDGpBwwIQ6RAhAQwPCyACIABBBGo2AgwgAUH/06ABQQUgAkEMakHEAhDpECEBDA4LIAIgAEEIajYCDCABQYTUoAFBCSACQQxqQcUCEOkQIQEMDQsgAiAAQQhqNgIMIAFBjdSgAUERIAJBDGpBxgIQ6RAhAQwMCyACIABBBGo2AgwgAUGe1KABQQggAkEMakHHAhDpECEBDAsLIAIgAEEEajYCDCABQabUoAFBCiACQQxqQcgCEOkQIQEMCgsgAiAAQQRqNgIMIAFBsNSgAUELIAJBDGpByQIQ6RAhAQwJCyACIABBBGo2AgwgAUG71KABQQ8gAkEMakHKAhDpECEBDAgLIAIgAEEEajYCDCABQcrUoAFBECACQQxqQcsCEOkQIQEMBwsgAiAAQQRqNgIMIAFB2tSgAUEJIAJBDGpBzAIQ6RAhAQwGCyACIABBBGo2AgwgAUHj1KABQQQgAkEMakHNAhDpECEBDAULIAIgAEEEajYCDCABQefUoAFBDyACQQxqQc4CEOkQIQEMBAsgAiAAQQRqNgIMIAFB9tSgAUELIAJBDGpBzwIQ6RAhAQwDCyACIABBCGo2AgwgAUGC7aABQQsgAkEMakHQAhDpECEBDAILIAIgAEEEajYCDCABQYHVoAFBCCACQQxqQdECEOkQIQEMAQsgAiAAQQRqNgIMIAFB6/KgAUEHIAJBDGpB0gIQ6RAhAQsgAkEQaiQAIAEL0gsBAn8jAEEQayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIAKAIAQXRqIgNBByADQSZJGw4mAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUACyACIABBBGo2AgwgAUGt06ABQQQgAkEMakH6BBDpECEBDCULIAIgAEEEajYCDCABQYDsoAFBBSACQQxqQfsEEOkQIQEMJAsgAiAAQQRqNgIMIAFBieygAUEGIAJBDGpB/AQQ6RAhAQwjCyACIABBCGo2AgwgAUH83aABQQIgAkEMakH9BBDpECEBDCILIAIgAEEEajYCDCABQbHToAFBBSACQQxqQf4EEOkQIQEMIQsgAiAAQQRqNgIMIAFBttOgAUEGIAJBDGpB/wQQ6RAhAQwgCyACIABBBGo2AgwgAUG806ABQQMgAkEMakGABRDpECEBDB8LIAIgADYCDCABQY/soAFBBiACQQxqQYEFEOkQIQEMHgsgAiAAQQhqNgIMIAFBv9OgAUEGIAJBDGpBggUQ6RAhAQwdCyACIABBCGo2AgwgAUHF06ABQQkgAkEMakGDBRDpECEBDBwLIAIgAEEEajYCDCABQc7ToAFBBCACQQxqQYQFEOkQIQEMGwsgAiAAQQRqNgIMIAFB0tOgAUEEIAJBDGpBhQUQ6RAhAQwaCyACIABBBGo2AgwgAUHW06ABQQMgAkEMakGGBRDpECEBDBkLIAIgAEEEajYCDCABQdnToAFBAyACQQxqQYcFEOkQIQEMGAsgAiAAQQhqNgIMIAFBgPSgAUEFIAJBDGpBiAUQ6RAhAQwXCyACIABBCGo2AgwgAUHc06ABQQMgAkEMakGJBRDpECEBDBYLIAIgAEEEajYCDCABQZ/ToAFBAyACQQxqQYoFEOkQIQEMFQsgAiAAQQRqNgIMIAFB39OgAUEJIAJBDGpBiwUQ6RAhAQwUCyACIABBBGo2AgwgAUHo06ABQQUgAkEMakGMBRDpECEBDBMLIAIgAEEIajYCDCABQffdoAFBBSACQQxqQY0FEOkQIQEMEgsgAiAAQQRqNgIMIAFB7dOgAUEFIAJBDGpBjgUQ6RAhAQwRCyACIABBBGo2AgwgAUHy06ABQQggAkEMakGPBRDpECEBDBALIAIgAEEEajYCDCABQfrToAFBBSACQQxqQZAFEOkQIQEMDwsgAiAAQQRqNgIMIAFB/9OgAUEFIAJBDGpBkQUQ6RAhAQwOCyACIABBCGo2AgwgAUGE1KABQQkgAkEMakGSBRDpECEBDA0LIAIgAEEIajYCDCABQY3UoAFBESACQQxqQZMFEOkQIQEMDAsgAiAAQQRqNgIMIAFBntSgAUEIIAJBDGpBlAUQ6RAhAQwLCyACIABBBGo2AgwgAUGm1KABQQogAkEMakGVBRDpECEBDAoLIAIgAEEEajYCDCABQbDUoAFBCyACQQxqQZYFEOkQIQEMCQsgAiAAQQRqNgIMIAFBu9SgAUEPIAJBDGpBlwUQ6RAhAQwICyACIABBBGo2AgwgAUHK1KABQRAgAkEMakGYBRDpECEBDAcLIAIgAEEEajYCDCABQdrUoAFBCSACQQxqQZkFEOkQIQEMBgsgAiAAQQRqNgIMIAFB49SgAUEEIAJBDGpBmgUQ6RAhAQwFCyACIABBBGo2AgwgAUHn1KABQQ8gAkEMakGbBRDpECEBDAQLIAIgAEEEajYCDCABQfbUoAFBCyACQQxqQZwFEOkQIQEMAwsgAiAAQQhqNgIMIAFBgu2gAUELIAJBDGpBnQUQ6RAhAQwCCyACIABBBGo2AgwgAUGB1aABQQggAkEMakGeBRDpECEBDAELIAIgAEEEajYCDCABQevyoAFBByACQQxqQZ8FEOkQIQELIAJBEGokACABC9ILAQJ/IwBBEGsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiACgCAEF0aiIDQQcgA0EmSRsOJgABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlAAsgAiAAQQRqNgIMIAFBrdOgAUEEIAJBDGpB+gQQ6RAhAQwlCyACIABBBGo2AgwgAUGA7KABQQUgAkEMakGhCBDpECEBDCQLIAIgAEEEajYCDCABQYnsoAFBBiACQQxqQaIIEOkQIQEMIwsgAiAAQQhqNgIMIAFB/N2gAUECIAJBDGpBowgQ6RAhAQwiCyACIABBBGo2AgwgAUGx06ABQQUgAkEMakGkCBDpECEBDCELIAIgAEEEajYCDCABQbbToAFBBiACQQxqQaUIEOkQIQEMIAsgAiAAQQRqNgIMIAFBvNOgAUEDIAJBDGpBpggQ6RAhAQwfCyACIAA2AgwgAUGP7KABQQYgAkEMakGnCBDpECEBDB4LIAIgAEEIajYCDCABQb/ToAFBBiACQQxqQY0IEOkQIQEMHQsgAiAAQQhqNgIMIAFBxdOgAUEJIAJBDGpBkggQ6RAhAQwcCyACIABBBGo2AgwgAUHO06ABQQQgAkEMakGoCBDpECEBDBsLIAIgAEEEajYCDCABQdLToAFBBCACQQxqQakIEOkQIQEMGgsgAiAAQQRqNgIMIAFB1tOgAUEDIAJBDGpBqggQ6RAhAQwZCyACIABBBGo2AgwgAUHZ06ABQQMgAkEMakGrCBDpECEBDBgLIAIgAEEIajYCDCABQYD0oAFBBSACQQxqQYgFEOkQIQEMFwsgAiAAQQhqNgIMIAFB3NOgAUEDIAJBDGpBiQUQ6RAhAQwWCyACIABBBGo2AgwgAUGf06ABQQMgAkEMakGsCBDpECEBDBULIAIgAEEEajYCDCABQd/ToAFBCSACQQxqQa0IEOkQIQEMFAsgAiAAQQRqNgIMIAFB6NOgAUEFIAJBDGpBrggQ6RAhAQwTCyACIABBCGo2AgwgAUH33aABQQUgAkEMakGvCBDpECEBDBILIAIgAEEEajYCDCABQe3ToAFBBSACQQxqQbAIEOkQIQEMEQsgAiAAQQRqNgIMIAFB8tOgAUEIIAJBDGpBjwUQ6RAhAQwQCyACIABBBGo2AgwgAUH606ABQQUgAkEMakGxCBDpECEBDA8LIAIgAEEEajYCDCABQf/ToAFBBSACQQxqQZMIEOkQIQEMDgsgAiAAQQhqNgIMIAFBhNSgAUEJIAJBDGpBsggQ6RAhAQwNCyACIABBCGo2AgwgAUGN1KABQREgAkEMakGTBRDpECEBDAwLIAIgAEEEajYCDCABQZ7UoAFBCCACQQxqQZQFEOkQIQEMCwsgAiAAQQRqNgIMIAFBptSgAUEKIAJBDGpB+gcQ6RAhAQwKCyACIABBBGo2AgwgAUGw1KABQQsgAkEMakH7BxDpECEBDAkLIAIgAEEEajYCDCABQbvUoAFBDyACQQxqQZgIEOkQIQEMCAsgAiAAQQRqNgIMIAFBytSgAUEQIAJBDGpBswgQ6RAhAQwHCyACIABBBGo2AgwgAUHa1KABQQkgAkEMakGXCBDpECEBDAYLIAIgAEEEajYCDCABQePUoAFBBCACQQxqQZUIEOkQIQEMBQsgAiAAQQRqNgIMIAFB59SgAUEPIAJBDGpBmQgQ6RAhAQwECyACIABBBGo2AgwgAUH21KABQQsgAkEMakGWCBDpECEBDAMLIAIgAEEIajYCDCABQYLtoAFBCyACQQxqQZ0FEOkQIQEMAgsgAiAAQQRqNgIMIAFBgdWgAUEIIAJBDGpBlAgQ6RAhAQwBCyACIABBBGo2AgwgAUHr8qABQQcgAkEMakGfBRDpECEBCyACQRBqJAAgAQvSCwECfyMAQRBrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAIgAoAgBBdGoiA0EHIANBJkkbDiYAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJQALIAIgAEEEajYCDCABQa3ToAFBBCACQQxqQfoEEOkQIQEMJQsgAiAAQQRqNgIMIAFBgOygAUEFIAJBDGpBlwoQ6RAhAQwkCyACIABBBGo2AgwgAUGJ7KABQQYgAkEMakGYChDpECEBDCMLIAIgAEEIajYCDCABQfzdoAFBAiACQQxqQZkKEOkQIQEMIgsgAiAAQQRqNgIMIAFBsdOgAUEFIAJBDGpBmgoQ6RAhAQwhCyACIABBBGo2AgwgAUG206ABQQYgAkEMakGbChDpECEBDCALIAIgAEEEajYCDCABQbzToAFBAyACQQxqQZwKEOkQIQEMHwsgAiAANgIMIAFBj+ygAUEGIAJBDGpBnQoQ6RAhAQweCyACIABBCGo2AgwgAUG/06ABQQYgAkEMakGeChDpECEBDB0LIAIgAEEIajYCDCABQcXToAFBCSACQQxqQZ8KEOkQIQEMHAsgAiAAQQRqNgIMIAFBztOgAUEEIAJBDGpBoAoQ6RAhAQwbCyACIABBBGo2AgwgAUHS06ABQQQgAkEMakGhChDpECEBDBoLIAIgAEEEajYCDCABQdbToAFBAyACQQxqQaIKEOkQIQEMGQsgAiAAQQRqNgIMIAFB2dOgAUEDIAJBDGpBowoQ6RAhAQwYCyACIABBCGo2AgwgAUGA9KABQQUgAkEMakGIBRDpECEBDBcLIAIgAEEIajYCDCABQdzToAFBAyACQQxqQYkFEOkQIQEMFgsgAiAAQQRqNgIMIAFBn9OgAUEDIAJBDGpBpAoQ6RAhAQwVCyACIABBBGo2AgwgAUHf06ABQQkgAkEMakGlChDpECEBDBQLIAIgAEEEajYCDCABQejToAFBBSACQQxqQaYKEOkQIQEMEwsgAiAAQQhqNgIMIAFB992gAUEFIAJBDGpBpwoQ6RAhAQwSCyACIABBBGo2AgwgAUHt06ABQQUgAkEMakGoChDpECEBDBELIAIgAEEEajYCDCABQfLToAFBCCACQQxqQY8FEOkQIQEMEAsgAiAAQQRqNgIMIAFB+tOgAUEFIAJBDGpBqQoQ6RAhAQwPCyACIABBBGo2AgwgAUH/06ABQQUgAkEMakGqChDpECEBDA4LIAIgAEEIajYCDCABQYTUoAFBCSACQQxqQasKEOkQIQEMDQsgAiAAQQhqNgIMIAFBjdSgAUERIAJBDGpBkwUQ6RAhAQwMCyACIABBBGo2AgwgAUGe1KABQQggAkEMakGUBRDpECEBDAsLIAIgAEEEajYCDCABQabUoAFBCiACQQxqQZEKEOkQIQEMCgsgAiAAQQRqNgIMIAFBsNSgAUELIAJBDGpBkgoQ6RAhAQwJCyACIABBBGo2AgwgAUG71KABQQ8gAkEMakGsChDpECEBDAgLIAIgAEEEajYCDCABQcrUoAFBECACQQxqQa0KEOkQIQEMBwsgAiAAQQRqNgIMIAFB2tSgAUEJIAJBDGpBrgoQ6RAhAQwGCyACIABBBGo2AgwgAUHj1KABQQQgAkEMakGvChDpECEBDAULIAIgAEEEajYCDCABQefUoAFBDyACQQxqQbAKEOkQIQEMBAsgAiAAQQRqNgIMIAFB9tSgAUELIAJBDGpBsQoQ6RAhAQwDCyACIABBCGo2AgwgAUGC7aABQQsgAkEMakGdBRDpECEBDAILIAIgAEEEajYCDCABQYHVoAFBCCACQQxqQbIKEOkQIQEMAQsgAiAAQQRqNgIMIAFB6/KgAUEHIAJBDGpBnwUQ6RAhAQsgAkEQaiQAIAELjQsBAn8CQANAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAgAiAkF0aiIDQQcgA0EmSRsOJhgAAQIDBAUGBwgJCgsMFxgNDg8QERgSEhMYGBQVFhYWFhkaGBwYGAsgASgCDCIDRQ0XIAEoAgghASADQQR0IQMDQAJAIAEoAgBBAkYNACAAIAFBDGooAgAQ0QMLIAFBEGohASADQXBqIgMNAAwYCwsgASgCDCIDRQ0WIAEoAgghASADQQxsIQMDQAJAAkAgASgCACICRQ0AIAAgAhDRAwwBCyABQQRqKAIAIAAQ9g0LIAFBDGohASADQXRqIgMNAAwXCwsCQCABLQAcQQJGDQAgAUEANgIYCyABKAIgIAAQkxEPCyABKAIEIQEMFwsgASgCDCEBDBYLIAAgASgCBBDRAyABKAIIIQEMFQsCQAJAIAJBC0YNAAJAAkACQAJAAkACQAJAAkACQAJAIAIOCwABAgMEBQYHCAkLAAsgAUEANgIYIAEoAjghAQwfCyAAIAEoAigQ0QMgASgCCEECSQ0JIAFBDGogABCnPSABKAI4IQEMHgsgASgCCEEBRw0IIAFBDGogABCnPSABKAI4IQEMHQsgACABKAIEENEDIAEoAjghAQwcCyABKAIEIAAQ5xkgASgCOCEBDBsLIAFBBGogABCiPSABKAI4IQEMGgsgAUEEaiAAEKI9IAEoAjghAQwZCyABQQRqIAAQpz0gASgCOCEBDBgLIAFBBGogABCiPSABKAI4IQEMFwsgAUEEaiAAEKU9IAEoAjghAQwWCyABQQhqIQMCQAJAIAEoAgQOAwABAgALIAMgABDVJSABKAI4IQEMFgsgAyAAEKQWCyABKAI4IQEMFAsgACABKAIoENEDIAEoAghBAkkNECABQQxqIAAQpz0PCyABKAIIQQFHDQ8gAUEMaiAAEKc9DwsgACABKAIEENEDIAAgASgCCBDRAyABKAIMIQEMEQsCQCABLQAYQQVHDQAgACABKAIQENEDCyABKAIMIgNFDQ0gA0EEdCEDIAEoAghBDGohAQNAIAAgASgCABDRAyABQRBqIQEgA0FwaiIDDQAMDgsLIAAgASgCEBDRAyABKAIEQYCAgIB4Rg0MIAEoAgwiA0UNDCADQQR0IQMgASgCCEEMaiEBA0AgACABKAIAENEDIAFBEGohASADQXBqIgMNAAwNCwsgASgCDCIDRQ0LIAEoAgghASADQQJ0IQMDQCAAIAEoAgAQ0QMgAUEEaiEBIANBfGoiAw0ADAwLCyABKAIMIgNFDQogASgCCCEBIANBAnQhAwNAIAAgASgCABDRAyABQQRqIQEgA0F8aiIDDQAMCwsLIAAgASgCBBDRAyABKAIIIgFBCGooAgAiA0UNCSABQQRqKAIAIQEgA0ECdCEDA0AgACABKAIAENEDIAFBBGohASADQXxqIgMNAAwKCwsCQCABKAIMIgJFDQAgASgCCCEDIAJBKGwhAgNAIAMgABDuDCADQShqIQMgAkFYaiICDQALCwJAIAEoAhAiASgCAEGAgICAeEYNACABIAAQqyoPCyAAIAEoAgQQ0QMPCwJAIAEtABxBAkYNACABQQA2AhgLIAEoAiAgABCxBg8LIAEoAgwiAQ0JDAYLIAEoAgQhAQwICwJAIAEtADRBAkcNACABQSBqEOsvDwsgAUEANgIwDwsgASgCBCAAEKULDwsgASgCDCIDRQ0CIAEoAgghASADQShsIQMDQCABIAAQ7BkgAUEoaiEBIANBWGoiAw0ADAMLCyABKAIEIQEMBAsgAUEANgIYCw8LIAAgASgCBBDRAw8LIAEoAgQhAQwACwsgASgCBCAAEOcZC4MLAgd/AX4jAEHABmsiBSQAAkACQCABLQCYAkECRg0AIABCADcCAAwBCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgARDtDiIGRQ0AIAYtAAAiBkGbAUYNASAGQcYARg0CIAZBkn9qQf8BcUEsSQ0DIAZBtH9qDhAGBQUFBQUFBQUFBQUFBQUEBQsgASgC/AEhBiAFQYCAgIB4NgKoAyAGIAYgBUGoA2oQ/iIhBgwPCyABQQI6AOECIAEgASkD2AI3A9ACIAEQ3xghBgwOCyABKAIIIgZBAkcNBQJAIAEpAxAiDEIDg0IAUg0AIAynIgYgBigCACIGQQFqNgIAIAZBf0wNBwsgBSAMNwMQDAQLIAYQkwwiDEIAUQ0GIAUgDDcDEAwDCyAFENk4NwMQDAILIABCADcCAAwLCyAFENo4NwMQCyACIANBA3RqIQcgA0F/akH/////AXFBAWohCEEAIQkgAiEGAkADQCAGQQRqKAIAIQogBigCACELIAVBCGogBUEQahDJEyALIAogBSgCCCAFKAIMEMIxIgoNASAJQQFqIQkgBkEIaiIGIAdHDQALIAghCQsCQCAFKQMQIgxCA4NCAFINACAFIAynIgY2AqgDIAVBqANqEPUHIAYgBigCACILQX9qNgIAIAtBAUcNACAGIAYoAiAQ0y8LIApFDQQgBEUNAyABEO0OIgZFDQMgBi0AAEGNAUcNAyABEMcKIgZFDQMgBi0AAEECRw0DIABCADcCAAwJCyAFQQE2AqwDIAVBlPCaATYCqAMgBUIBNwK0AyAFQQAgAUEIaiAGQQlGGzYCvAYgBUHpBK1CIIYgBUG8BmqthDcDGCAFIAVBGGo2ArADIAVBqANqQZzwmgEQrS4LAAtB9OmaARD9OQALIAEtAJgCQQJHDQAgASgCkAIhBiAFQRhqIAEQiwICQAJAAkACQAJAAkACQAJAIAZBAnFFDQAgBSgCnAIiCigCCCILQf7///8HSw0BIAooAhRFDQAgCw0CIApBfzYCCCAFKAKYAiILKAIIDQMgC0F/NgIIIAooAhAhBCALQQxqIAooAhQiBxChMCALKAIQIAsoAhRBAnRqIAQgB0ECdBDfChogCyAHIAsoAhRqNgIUIApBADYCFCALIAsoAghBAWo2AgggCiAKKAIIQQFqNgIICyAFIAZBAXI2AqgCIAVBAjoA+QIgBSAFKQPwAjcD6AIgBUEYahDBDw0GIAVBGGoQ7Q4iCkUNBiAKLQAAIgpBHE0NAwwEC0GchJsBEOoiAAtBjISbARDpIgALQfyDmwEQ6SIAC0EBIAp0QZSAgpABcQ0BCwJAIApBun9qIgtBH0sNAEEBIAt0QYGAgpB4cQ0BCyAKQbl/akH/AXFB0wBJDQAgCkFBakH/AXFBAksNAQsgBUGoA2ogBUEYakGQAxDfChogARCeFgJAAkAgASAFQagDakGQAxDfCiILKAKQAiIHQQJxRQ0AIAsoAoQCIgooAggiAUH+////B0sNBSAKKAIURQ0AIAENBiAKQX82AgggCygCgAIiASgCCA0BIAFBfzYCCCAKKAIQIQggAUEMaiAKKAIUIgQQoTAgASgCECABKAIUQQJ0aiAIIARBAnQQ3woaIAEgBCABKAIUajYCFCAKQQA2AhQgASABKAIIQQFqNgIIIAogCigCCEEBajYCCAsgCyAHQX5xIAZBAXFyNgKQAiAJIANPDQMgAEEANgIAIAAgAiAJQQN0aikCADcCBAwHC0H8g5sBEOkiAAsgBUEYahCeFgsgAEIANwIADAQLIAkgA0H8tZoBEKEbAAtBnISbARDqIgALQYyEmwEQ6SIACyAAQQE2AgAgACAGNgIECyAFQcAGaiQAC/kJARJ/IwBBIGsiAyQAIAEoAuQBIQQgASgC6AEhBSABKAKoASEGQQAhByABKAL0ASIIIQlBgIDEACEKQQAhCwJAAkACQANAIAQgBUYNASAKQah/aiEMIApB+ABGIQ0gCkEuRyEOA0ACQAJAIAQsAAAiD0F/SiIQRQ0AIA9B/wFxIQoMAQsgBC0AAUE/cSEKIA9BH3EhEQJAIA9BX0sNACARQQZ0IApyIQoMAQsgCkEGdCAELQACQT9xciEKAkAgD0FwTw0AIAogEUEMdHIhCgwBCyAKQQZ0IAQtAANBP3FyIBFBEnRBgIDwAHFyIQoLAkACQAJAAkACQCAKQd8ARg0AIApBgIDEAEYNBwJAIApBUGoiEUEKSQ0AQX8gCkEgciIRQal/aiIMIAwgEUGff2pJGyIRQRBPDQgLQQEhDCABIARBAWoiEjYC5AEgEEUNASASIQQMAgsgBEEBaiIRIQoCQCAQDQACQCAPQWBPDQAgBEECaiEKDAELIARBBEEDIA9Bb0sbaiEKCyAKIAVGDQICQAJAIAosAAAiEEF/TA0AIBBB/wFxIQoMAQsgCi0AAUE/cSESIBBBH3EhEwJAIBBBX0sNACATQQZ0IBJyIQoMAQsgEkEGdCAKLQACQT9xciESAkAgEEFwTw0AIBIgE0EMdHIhCgwBCyASQQZ0IAotAANBP3FyIBNBEnRBgIDwAHFyIgpBgIDEAEYNAwsCQCAKQVBqQQpJDQAgCkEgckGff2pBBUsNAwsCQAJAIAwOCAQBAQEBAQEEAAsgDQ0DIA5FDQMLAkAgCkGof2oOCAMEBAQEBAQDAAsgCkEuRg0CIApB+ABGDQIMAwsgASAEQQJqIhA2AuQBIAQtAAFBP3EhEiAPQR9xIRMCQAJAIA9BYE8NACATQQZ0IBJyIQQMAQsgASAEQQNqIhA2AuQBIBJBBnQgBC0AAkE/cXIhEgJAIA9BcE8NACASIBNBDHRyIQQMAQsgASAEQQRqIhA2AuQBIBJBBnQgBC0AA0E/cXIgE0ESdEGAgPAAcXIhBAsCQCAEQYABSQ0AQQIhDCAEQYAQSQ0AQQNBBCAEQYCABEkbIQwLIBAhBAsgASAMIAlqIgk2AvQBAkAgFEEAIAtBAXEbIg9B/////wBLDQBBASELIBEgD0EEdHIhFCAHQQFqIgdB/wFxIAJB/wFxRw0EDAYLIANBo4CAgHg2AgggBiAGIANBCGoQ/iIhBCAAQQI2AgAgACAENgIEDAYLIANB7oCAgHg2AgggASAIIANBCGoQ6TQgBC0AACEPCyABIBE2AuQBQQEhCgJAAkAgD8BBf0wNACARIQQMAQsgASAEQQJqIhE2AuQBIAQtAAFBP3EhECAPQR9xIRICQAJAIA9B/wFxIg9B4AFPDQAgEkEGdCAQciEEDAELIAEgBEEDaiIRNgLkASAQQQZ0IAQtAAJBP3FyIRACQCAPQfABTw0AIBAgEkEMdHIhBAwBCyABIARBBGoiETYC5AEgEEEGdCAELQADQT9xciASQRJ0QYCA8ABxciEECwJAIARBgAFJDQBBAiEKIARBgBBJDQBBA0EEIARBgIAESRshCgsgESEECyABIAogCWoiCTYC9AEgBCAFRw0ACwsLIAJB/wFxIgRFDQAgB0H/AXEgBEYNACAAQQA2AgAMAQsgACAUNgIEIAAgCzYCAAsgA0EgaiQAC4cLAg9/AX4jAEHQAGsiASQAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAL8BSICIAAoAoAGIgNPDQAgASADNgIcIANBA0cNASABQRBqIAAoAqwDIgRBBEEEEKEiQQAhAyABQQA2AiggASABKQMQNwIgIAFBIGogBBD0LyABKAIkIAEoAigiBUECdGohBgJAA0AgBCADRg0BIAYgAzYCACAGQQRqIQYgA0EBaiEDDAALCyABQcAAaiAFIANqNgIAIAEgASkCIDcDOCABQQA2AkQgACgCqAMhBkEEIQdBBCEDA0AgAyAEIAMgBEsbIQUCQANAAkAgBSADRw0AIAdFDQYgAUEgaiAHQX9qEMYtIAEoAiBBAUYNByABQThqIAYgBEEDIAEoAiQiAxCHDCAHQQFGDQggAUEgaiAHQX5qEMYtIAEoAiBBAUYNCSABQThqIAYgBCACIAEoAiQiBRCHDCAHQQJNDQogAUEgaiAHQX1qEMYtIAEoAiBBAUYNCyABKAIkIQggACADNgKABiAAIAU2AvwFIAAgCDYC+AUgBiAEIANB0I+AARDrMCgCCA0CDA4LIAFBIGogAxDGLSABKAIgQQFGDQsgA0EBaiEDIAYgBCABKAIkIghB8I+AARDrMCgCCEUNAAsgAUE4aiAGIAQgCCAHEIcMIAFBIGogB0EBahDGLSABKAIgQQFGDQsgASgCJCEHDAELCyAAIAM2AvgFDAoLQayOgAFBL0HcjoABENMnAAsgAUIANwIsIAFCgYCAgMAANwIkIAFBvJCAATYCIEHsjoABIAFBHGogAUEgakHEkIABEJ4rAAtB8I6AARD9OQALIAEgASkDKDcDSEGQw6EBQSsgAUHIAGpBjIaAAUGAj4ABELEYAAtBkI+AARD9OQALIAEgASkDKDcDSEGQw6EBQSsgAUHIAGpBjIaAAUGgj4ABELEYAAtBsI+AARD9OQALIAEgASkDKDcDSEGQw6EBQSsgAUHIAGpBjIaAAUHAj4ABELEYAAsgASABKQMoNwNIQZDDoQFBKyABQcgAakGMhoABQeCPgAEQsRgACyABIAEpAyg3A0hBkMOhAUErIAFByABqQYyGgAFBgJCAARCxGAALIAFBIGpBCGogAUE4akEIaikDACIQNwMAIAEgASkDODcDICABKAIkIQMgAUEIaiAQpyIGQQRBBBChIiABKAIIIQkgASgCDCADIAZBAnQQ3wohByABQSxqIQQgACgCrAMhCkEAIQsDQAJAIAsiDCAKRw0AIAAoAqgDIgYgCkEUbGohCyAALQDrBSIKQQFqIQ0gCkECdEEEaiEOIAAoArgDIQUgACgCtAMhCCAAKALAAyEPIAAoAsQDIQwCQAJAA0AgBiALRg0CIAYgAUEgaiAEIAYoAgwQ6TA2AgwgBiEDAkADQAJAIAMoAAAiAw0AIAYoAgQhAyAGQRRqIgIhBiADRQ0DIAwgA0kNAiAMIANrIgYgCk0NBCAPIANBAnRqIQMgDiEGA0ACQCAGDQAgAiEGDAULIAMgAUEgaiAEIAMoAgAQ6TA2AgAgBkF8aiEGIANBBGohAwwACwsgCCAFIANBzIaAARDsMCEDIAMgAUEgaiAEIAMoAAEQ6TA2AAEgA0EFaiEDDAALCwsgAyAMQayGgAEQohsACyANIAZBvIaAARCjGwALIAkgBxD7OSABKAIgIAEoAiQQ+zkgAUHQAGokAA8LIAxBAWohCyAMIAEoAiwiCHQiBSAHIAYgDEGwtYABEOowKAIAIgNGDQAgCEEfcSEIA0AgBSAHIAYgAyICIAh2QcC1gAEQ6jAoAgAiA0cNAAsCQCABKAIoIgMgDE0NACABKAIkIAxBAnRqIAI2AgAMAQsLIAwgA0HQtYABEKEbAAvFCgIJfwJ+IwBBgAFrIgIkAAJAAkACQAJAAkACQAJAAkACQCABKAIAIgMOBwABAgMEBQYACyABKAIYIQQgASgCFCEFIAEoAhAhBgJAIAEpAwgiC0IDg0IAUg0AIAunIgcgBygCACIHQQFqNgIAIAdBf0wNCAsgAS0AHCEIAkACQCABKAIgIgcNAEEAIQEMAQsQqzIhASAHKQIEIQwgBygCACEHEKwyIQkgAkEgaiAHEIYBIAkgAkEgakHgABDfCiEHIAEgDDcCBCABIAc2AgALIAAgATYCICAAIAg6ABwgACAENgIYIAAgBTYCFCAAIAY2AhAgACALNwMIDAYLIAEoAhQhBCABKAIQIQUgAkEIaiABQQRqEJ0MIAEtABwhBgJAAkAgASgCGCIHDQBBACEBDAELEKsyIQEgBykCBCELIAcoAgAhBxCsMiEIIAJBIGogBxCGASAIIAJBIGpB4AAQ3wohByABIAs3AgQgASAHNgIACyAAIAIpAgg3AgQgACAGOgAcIAAgATYCGCAAIAQ2AhQgACAFNgIQIABBDGogAkEQaigCADYCAAwFCyABKAIUIQUgASgCECEGIAEoAgwhCCABKAIIIQkQrTIhByACQSBqIAEoAgQQ1QMgB0EgaiACQSBqQSBqKQMANwMAIAdBGGogAkEgakEYaikDADcDACAHQRBqIAJBIGpBEGopAwA3AwAgB0EIaiACQSBqQQhqKQMANwMAIAcgAikDIDcDAAJAAkAgASgCGCIEDQBBACEBDAELEKsyIQEgBCkCBCELIAQoAgAhBBCsMiEKIAJBIGogBBCGASAKIAJBIGpB4AAQ3wohBCABIAs3AgQgASAENgIACyAAIAE2AhggACAFNgIUIAAgBjYCECAAIAg2AgwgACAJNgIIIAAgBzYCBAwECyABKAIUIQQgASgCECEFIAJBFGogAUEEahDwAyABLQAcIQYCQAJAIAEoAhgiBw0AQQAhAQwBCxCrMiEBIAcpAgQhCyAHKAIAIQcQrDIhCCACQSBqIAcQhgEgCCACQSBqQeAAEN8KIQcgASALNwIEIAEgBzYCAAsgACACKQIUNwIEIAAgBjoAHCAAIAE2AhggACAENgIUIAAgBTYCECAAQQxqIAJBHGooAgA2AgAMAwsgASkCDCELEK0yIQcgAkEgaiABKAIEENUDIAdBIGogAkEgakEgaiIEKQMANwMAIAdBGGogAkEgakEYaiIFKQMANwMAIAdBEGogAkEgakEQaiIGKQMANwMAIAdBCGogAkEgakEIaiIIKQMANwMAIAcgAikDIDcDACABKAIIIQkQrjIhASACQSBqIAkQPyABQThqIAJBIGpBOGopAwA3AwAgAUEwaiACQSBqQTBqKQMANwMAIAFBKGogAkEgakEoaikDADcDACABQSBqIAQpAwA3AwAgAUEYaiAFKQMANwMAIAFBEGogBikDADcDACABQQhqIAgpAwA3AwAgASACKQMgNwMAIAAgCzcCDCAAIAE2AgggACAHNgIEDAILIAAgASkCBDcCBAwBCyABKAIEIQcQrjIhASACQSBqIAcQPyABQThqIAJBIGpBOGopAwA3AwAgAUEwaiACQSBqQTBqKQMANwMAIAFBKGogAkEgakEoaikDADcDACABQSBqIAJBIGpBIGopAwA3AwAgAUEYaiACQSBqQRhqKQMANwMAIAFBEGogAkEgakEQaikDADcDACABQQhqIAJBIGpBCGopAwA3AwAgASACKQMgNwMAIAAgATYCBAsgACADNgIAIAJBgAFqJAAPCwAL7AoBBH8jAEHgAWsiBCQAIAQgAzYCLEEAIQUCQAJAIAEQ7Q4iBkUNAEEBIQcCQAJA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rJWDATYCWCADQgQ3AmAgA0HYAGpB5ISDARCtLgALIANBATYCXCADQbyAgwE2AlggA0IANwJkIAMgA0E8ajYCYCADQdgAakHEgIMBEK0uAAsgBEF/Rg0HIAMoAkghEAwICyADQQI2AiQgA0GkgqEBNgIgIANCAjcCLCADQQc2AmQgA0GDATYCXCADIAc2AjwgAyADQdgAajYCKCADIANBPGo2AmAgAyADQcQAajYCWCADQSBqQbSCoQEQrS4AC0GUzqEBQShBxIODARDTJwALQbSDgwEQ/TkACyADQQE2AiQgA0G8gIMBNgIgIANCADcCLCADIANBPGo2AiggA0EgakHUgIMBEK0uAAsgA0ECNgJcIANBpIKhATYCWCADQgI3AmQgA0EHNgJQIANBgwE2AkggAyAHNgJUIAMgA0HEAGo2AmAgAyADQdQAajYCTCADIANBPGo2AkQgA0HYAGpBtIKhARCtLgALQZTOoQFBKEH0goMBENMnAAtBlIKDARD9OQALQeT/ggEQ/TkACyADQSBqIAUgBiAHIBYgCSAKERMAIBYhEyAVIRQgAygCIA0ADAcLCyAALQCcDUEBRg0BIAApAwBCAlENBiABKALIBEECRg0CIAFB2AFqIQQCQAJAIAAoAvgEIgctANoCDQAgA0EgaiAAIAQgAhBOIAMoAiAiBEECRw0BDAULIActANsCIQggA0EgaiAAIAQgAhBOIAMoAiAiB0ECRg0EIAdFDQYgCEEBcUUNASADQQRqIAIgAygCJCADKAIoIgcgByAAIAQQzAggAygCBCIEQQJHDQggAygCCCEEDAULIARFDQULQQEhBAwGC0GUzqEBQShB5IKDARDTJwALQYSCgwEQ/TkACyADKAIkIQQLIAQQuxkaDAELQQAhBAwBCyAAIAEgAhDbByEECyADQfAAaiQAIARBAXELwQoCC38DfiMAQZABayICJAAgAkEANgIoIAJCgICAgMAANwIgIAFBBGohAyACQfgAakEEciEEIAJB0ABqQRBqIQUgAkHQAGpBCGohBgJAA0AgAkH4AGogAUEBEM0JAkACQAJAAkAgAi0AeA0AAkACQAJAAkAgAi0AeQ0AIAEQ7zEaIAEQ7zEhByACQfgAaiABEIYIIAIoAoABIQggAikDeCINUA0FIAIgAigChAE2AlwgAiAINgJYIAIgDTcDUCAC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ACIFNgIAIAJBoAFqQRRqIAU2AgAgAiAEKQJQIg43AqwBIAJBDGpBFGogAykDADcCACACQShqIAJBoAFqQRBqKQMANwIAIAJCgICAgMAANwIMIAJBADYCFCACIA43AhggBEEgaiEGIARB0ABqIQcgAkG4AmpBxABqIQggAkG4AmpBBGohCSACQaABakHEAGohCiACQaABakEEaiEFIAJBMGpBJGohCyABKAIIIQwCQANAIAEQsAkCQAJAAkACQAJAAkACQCAHKAIAIAxGDQACQAJAAkACQAJAAkACQCABEMMUIgNBpX9qDgMBDQIACyADQSZGDQIgA0EtRg0DIANB/gBGDQQMDAsgAiAGQeCahAEQwysgAigCACgCCCEDIAIoAgQiDSANKAIAQX9qNgIAAkAgA0UNACACQTBqIAEQqgUgAi0ASUECRg0AIAUgAikCMDcCACAFQRhqIAJBMGpBGGooAgA2AgAgBUEQaiACQTBqQRBqKQIANwIAIAVBCGogAkEwakEIaikCADcCACACQYOAxAA2AqABIAJBDGogAkGgAWoQ7hgMDQsgAkGgAWogASACQQxqEOQLIAIoAqABIQMgAkEwaiAFQSQQ3woaIANBIkcNBCACQQxqIAJBMGpBJBDfChoMDAsgAkGUAmogAkEMakEkEN8KGiACQaABaiABIAJBlAJqEMkIIAIoAqABIgNBioDEAEYNBSACQTBqIAVB8AAQ3woaAkAgA0GJgMQARw0AIAJBDGogAkEwakEkEN8KGgwMCyAAQQRqIAJBMGpBJBDfChogAEEoaiALQcwAEN8KGgwJCyABEPcTQSZHDQkgAUHl/KABQQIQrxtFDQUgAkGgAWogAkEMakEkEN8KGiACQQxqIARBACACQaABahChEwwKCyABEPcTQS1HDQggAUH9/qABQQIQrxtFDQUgAkGgAWogAkEMakEkEN8KGiACQQxqIARBASACQaABahChEwwJCyABEPcTQf4ARw0HIAFB2JuEAUECEK8bRQ0FIAJBoAFqIAJBDGpBJBDfChogAkEMaiAEQQIgAkGgAWoQoRMMCAsgACACKQLIATcCLCAAQTxqIAJB2AFqKQIANwIAIABBNGogAkHQAWopAgA3AgAgAEEIaiACQTBqQSQQ3woaIABBiYDEADYCACAAIAM2AgQMCgsgAEEEaiABEO8NIABB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0ycACyABIAEpAxg3A1AgASgCACEEIAFBJTYCACACQRhqQQxqIAFBDGopAgA3AgAgAkEYakEUaiABQRRqKAIANgIAIAIgASkCBDcCHCACIAQ2AhggAkEYahDiECADIAEoAlQiASADIAFJGyEFIAMgASADIAFLGyEGQgAhCkECIQEMAQsCQAJAAkACQAJAIAQoAgBBZWoOBAACAQMCCyABIAEoAhwiBDYCVCABIAEoAhg2AlAgASgCACEHIAFBJTYCACAHQRtHDQUgAyAEIAMgBEkbIQggAyAEIAMgBEsbIQMgASkDECILQoCAgIBwgyEKIAEpAwgiDEIoiKchBCAMQiCIpyEHIAunIQkgDKchBkEAIQEMAwsgASABKAIcIgQ2AlQgASABKAIYNgJQIAEoAgAhByABQSU2AgAgB0EdRw0FIAMgBCADIARJGyEGIAEpAwgiDEKAgICAcIMhCiADIAQgAyAESxsiB0EIdiEEIAEpAxAiC0IgiKchAyAMpyEJIAunIQhBAyEBDAILIAJBATYCHCACQeS+mgE2AhggAkIBNwIkIAJBogI2AhQgAiACQRBqNgIgIAIgAkEMajYCECACQRhqQey+mgEQrS4ACyABIAEoAhwiBDYCVCABIAEoAhg2AlAgASgCACEHIAFBJTYCACAHQR5HDQQgASgCECEJIAMgBCADIARJGyEGIAMgBCADIARLGyIHQQh2IQQgASkDCCIKQiCIpyEDIAqnIQhCACEKQQQhAQsLIAAgBDsADSAAIAM2AhQgACAINgIQIAAgBzoADCAAIAY2AgggACAFNgIEIAAgATYCACAAQQ9qIARBEHY6AAAgACAKIAmthDcDGAwEC0GUzqEBQShByLCZARDTJwALQZTOoQFBKEGgwpkBENMnAAtBlM6hAUEoQbDCmQEQ0ycACyAAQQc2AgAgACABNgIECyACQTBqJAAL1QkCC38CfiMAQYABayICJAAgAkEANgIkIAJCgICAgMAANwIcQQQhAyACQcgAakEEaiEEIAJB4ABqIQVBCCEGQQAhBwJAAkACQANAAkACQAJAAkACQAJAAkAgARDtDiIIRQ0AIAgtAAAiCEECRg0BIAhB1ABGDQEgCEH8AEYNAQsgARDtDhogARDtDhogAUHUAkHYAiABLQDhAkECRhtqKAIAIQkgAkHIAGogARCPBCACKAJQ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ARCJByABQQk2AgAgASACKQJANwIEIAFBDGogCikCADcCACABQRRqIAgpAgA3AgAgAUEcaiAHKQIANwIAIAFBJGogBikCADcCACABQSxqIAJBwABqQShqKQIANwIAIAFBNGogAkHwAGooAgA2AgAMBQsgACABKAIEENMBDAQLIAEoAhAiAUUNAyABIAAQ3x8MAwsgACABKAIEENMBDAILAkACQAJAIAEoAggOAwEABAELIAEtACQhAyABKAIoIAAQlxEgA0ECRg0DDAELIAEtACQhAyABKAIoIAAQTCADQQJGDQILIAIgAUEQahCmJyAAQSBqIAIpAwAgAigCCBD+BxoMAQsCQCABKAIMIgNFDQAgA0HQAGwhAwNAIANBsH9qIgMNAAsLIAEoAhwiAUUNACABIAAQ3x8LIAJBoAFqJAALzQoBAn8jAEEwayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAQYCAgIB4cyIDQQsgA0ESSRsOEgABAgMEBQYHCAkKCwwNDg8QEQALIAIgAEEEajYCCCACQQE2AhQgAkGk16EBNgIQIAJCATcCHCACQcULNgIsIAIgAkEoajYCGCACIAJBCGo2AiggASgCFCABKAIYIAJBEGoQijUhAQwRCyACIABBBGo2AgggAkEBNgIUIAJBpNehATYCECACQgE3AhwgAkHGCzYCLCACIAJBKGo2AhggAiACQQhqNgIoIAEoAhQgASgCGCACQRBqEIo1IQEMEAsgAiAAQQRqNgIIIAJBATYCFCACQajJoQE2AhAgAkIBNwIcIAJBxws2AiwgAiACQShqNgIYIAIgAkEIajYCKCABKAIUIAEoAhggAkEQahCKNSEBDA8LIAJBADYCICACQQE2AhQgAkHQyaEBNgIQIAJCBDcCGCABKAIUIAEoAhggAkEQahCKNSEBDA4LIAJBADYCICACQQE2AhQgAkGAyqEBNgIQIAJCBDcCGCABKAIUIAEoAhggAkEQahCKNSEBDA0LIAJBADYCICACQQE2AhQgAkGoyqEBNgIQIAJCBDcCGCABKAIUIAEoAhggAkEQahCKNSEBDAwLIAIgACgCBDYCCCACQQI2AhQgAkHQyqEBNgIQIAJCATcCHCACQQc2AiwgAiACQShqNgIYIAIgAkEIajYCKCABKAIUIAEoAhggAkEQahCKNSEBDAsLIAIgACgCBDYCCCACQQE2AhQgAkH8yqEBNgIQIAJCATcCHCACQQc2AiwgAiACQShqNgIYIAIgAkEIajYCKCABKAIUIAEoAhggAkEQahCKNSEBDAoLIAIgACgCBDYCCCACQQE2AhQgAkGcy6EBNgIQIAJCATcCHCACQQc2AiwgAiACQShqNgIYIAIgAkEIajYCKCABKAIUIAEoAhggAkEQahCKNSEBDAkLIAJBADYCICACQQE2AhQgAkHQy6EBNgIQIAJCBDcCGCABKAIUIAEoAhggAkEQahCKNSEBDAgLIAJBADYCICACQQE2AhQgAkH4y6EBNgIQIAJCBDcCGCABKAIUIAEoAhggAkEQahCKNSEBDAcLIAIgADYCCCACQQE2AhQgAkGozKEBNgIQIAJCATcCHCACQfEANgIsIAIgAkEoajYCGCACIAJBCGo2AiggASgCFCABKAIYIAJBEGoQijUhAQwGCyACQQA2AiAgAkEBNgIUIAJB1MyhATYCECACQgQ3AhggASgCFCABKAIYIAJBEGoQijUhAQwFCyACQQA2AiAgAkEBNgIUIAJBgM2hATYCECACQgQ3AhggASgCFCABKAIYIAJBEGoQijUhAQwECyACQQA2AiAgAkEBNgIUIAJBqM2hATYCECACQgQ3AhggASgCFCABKAIYIAJBEGoQijUhAQwDCyACQQA2AiAgAkEBNgIUIAJBwM2hATYCECACQgQ3AhggASgCFCABKAIYIAJBEGoQijUhAQwCCyACIAAtAAg6AAwgAiAAKAIENgIIIAJBATYCFCACQejNoQE2AhAgAkIBNwIcIAJByAs2AiwgAiACQShqNgIYIAIgAkEIajYCKCABKAIUIAEoAhggAkEQahCKNSEBDAELIAIgACgCBDYCCCACQQE2AhQgAkGMzqEBNgIQIAJCATcCHCACQcIANgIsIAIgAkEoajYCGCACIAJBCGo2AiggASgCFCABKAIYIAJBEGoQijUhAQsgAkEwaiQAIAEL1AgCEX8CfiMAQYADayIGJAAgAa0iF0L//////////z98IBeAIRcCQAJAIAFBgSBJDQAgARC4LyEHDAELIAEgAUEBdmsiCEHAACAIQcAASRshBwsgAEF8aiEJQQEhCEEAIQpBACELA0BBACEMQQEhDQJAIAogAU8N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BksbIANB+ABqEIgqCyADQfgAaiADQSBqEP4XIANBOGpBCGoiByADQYQBaikCADcDACADQTRqQQJqIgggA0GPAWotAAA6AAAgAyADKQJ8NwM4IAMgAy8AjQE7ATQgAUEEaiEJIAMoAnghBSADLQCMASEKIANB+ABqQQRyIQsgA0H1AGohDCADQeAAakEEciENQQApA5DEmQEhEyADQcgAakEQaiEOQQApA4jEmQEhFEEAKQOAxJkBIRUDQCAOIBM3AwAgA0HIAGpBCGogFDcDACADIBU3A0gCQCABELAWIANByABqEMU1DQAgA0HIAGoQ4RAgACADKQM4NwIEIAAgAy8BNDsAFSAAIAo6ABQgACAFNgIAIABBDGogA0HAAGopAwA3AgAgAEEXaiADQTZqLQAAOgAADAMLIAsgCSkCADcCACABIAEpAxg3A1AgASgCACEGIAFBJTYCACALQQhqIAlBCGopAgA3AgAgC0EQaiAJQRBqKAIANgIAIAMgBjYCeCADQfgAahDhECADQcgAahDhECABEO8xIQ8CQAJAAkACQAJAAkAgARCwFiIGRQ0AIANB+ABqQRBqQQApA5jImQE3AwAgA0H4AGpBCGpBACkDkMiZATcDACADQQApA4jImQE3A3ggA0H4AGogBhCHByEQIANB+ABqEOEQAkAgEA0AIAYoAgBBAkcNAgsgDSADKQM4NwIAIAwgAy8BNDsAACANQQhqIAcpAwA3AgAgDEECaiAILQAAOgAAIAMgBTYCYCADIAo6AHQgAg0CIANB+ABqIAFBAEEAEO4BIAMoAnghCiADLQCMAUECRg0DIAMoAoQBIQ8gAygCgAEhECADKAJ8IREMBQsgA0H0gICAeDYCeCABIA8gDyADQfgAahCIKiAAQQxqIANBwABqKQMANwIAIAAgAykDODcCBCAAIAMvATQ7ABUgAEEXaiADQTZqLQAAOgAADAMLIANB9ICAgHg2AnggASAPIA8gA0H4AGoQiCogAEEMaiADQcAAaikDADcCACAAIAMpAzg3AgQgACADLwE0OwAVIABBF2ogA0E2ai0AADoAAAwCCyADQfgAaiABEIYIIAMoAoABIRACQCADKQN4IhJQDQAgEkIgiKchESADKAKEASEPIBKnIQoMAwsgECEKCyAAQQM6ABQgACAKNgIAIANB4ABqEJwsDAQLIAAg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FCIFRQ0AIAAgBRDTAQsgACADENQGIANBGGohAyAEQWhqIgQNAAwKCwsgACABKAIEIgNByABqENQGIANB4ABqIQQCQAJAAkAgAygCAEF5ag4CAQIACyAAIAMQrjMLIAAgA0EoahDUBgsgBCgCAEGAgICAeEYNCCAAIAQQ1AYMCAsgASgCCCEDIAAgASgCBBDTASAAIAMQjAQMBwsgASgCCCEDIAAgASgCBBDTASAAIAMQjAQMBgsCQCABKAIEIgNBAkYNACABKAIIIQQCQCADQQFxDQAgBCAAELIqDAELIAAgBBDTAQsCQCABKAIYIgNFDQAgACADENMBCwJAIAEoAhwiA0UNACAAIAMQ0wELIAAgASgCDBCMBAwFCyABKAIIIQMCQAJAAkACQCABKAIEDgMAAQIACyADIAAQsioMAgsgAyAAELMqDAELIAAgAxCuMwsgACABKAIMENMBIAAgASgCEBCMBAwECyABKAIIIQMCQAJAAkACQCABKAIEDgMAAQIACyADIAAQsioMAgsgAyAAELMqDAELIAAgAxCuMwsgACABKAIMENMBIAAgASgCEBCMBAwDCyABQQhqIAAQzwkMAwsgACABKAIEENMBDAcLIAAgAUEEahDUBgsgASgCAEERRw0FCyACQegAahDjJiACQThqQSBqIgYgAUEoaiIDKQMANwMAIAJBOGpBGGoiByABQSBqIgQpAwA3AwAgAkE4akEQaiIIIAFBGGoiBSkDADcDACACQThqQQhqIgkgAUEQaiIKKQMANwMAIAEpAwghDCABIAIpA2g3AwggCiACQegAakEIaikDADcDACAFIAJB6ABqQRBqKQMANwMAIAQgAkHoAGpBGGopAwA3AwAgAyACQegAakEgaikDADcDACACIAw3AzggAkEIaiAAIAJBOGpBABBaIAFBCGohACACKAIIQW1qIgtBAiALQQJJGw4DAQIDAQsgACABKAIEENMBDAMLIAEpAwAhDCABQgE3AwAgAkE4akEoaiADKQMANwMAIAYgBCkDADcDACAHIAUpAwA3AwAgCCAKKQMANwMAIAkgACkDADcDACAAQQA2AgAgAiAMNwM4IAJBOGoQ+AQMAgsgABD5BSAAQSBqIAJBCGpBKGopAwA3AwAgAEEYaiACQQhqQSBqKQMANwMAIABBEGogAkEIakEYaikDADcDACAA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AkAgBUUNACACQTBqELURDAELIAJBMGoQkxoLIAJBwAFqJAAPC0GchJsBEOoiAAtBjISbARDpIgALQfyDmwEQ6SIAC7oJAgV/AX4jAEEwayICJAAgAUHYAmohAwJAAkACQAJAAkACQAJAAkACQAJAIAEtAOECQQJGDQAgAygCACEEDAELIAEoAqgCIQQgAUEKNgKoAgJAAkAgBEEKRg0AIAMgASkDwAI3AwAgAkEkaiABQbQCaikCADcCACACQSxqIAFBvAJqKAIANgIAIANBCGogAUHIAmooAgA2AgAgAiAENgIYIAIgASkCrAI3AhwgASACQRhqENgFDAELIAJBDGogARA6IANBCGogAkEMakEIaigCADYCACADIAIpAgw3AgALAkAgAS0A4QJBAkYNACABKALYAiEEDAELIAEoAtQCIQQgASgCqAIhBSABQQo2AqgCAkACQCAFQQpGDQAgAyABKQPAAjcDACACQSRqIAFBtAJqKQIANwIAIAJBLGogAUG8AmooAgA2AgAgA0EIaiABQcgCaigCADYCACACIAU2AhggAiABKQKsAjcCHCABIAJBGGoQ2AUMAQsgAkEMaiABEDogA0EIaiACQQxqQQhqKAIANgIAIAMgAikCDDcCAAsgAS0A4QJBAkcNACABKAL8ASEBIAJBgICAgHg2AhggASABIAJBGGoQ/iIhAQwBCyABLQDgAkGbAUcNASABQQI6AOECIAEgASkD2AI3A9ACIAJBGGpBEGogAUEYaikDADcDACACQRhqQQhqIAFBEGopAwA3AwAgASkDCCEHIAFBCTYCCCACIAc3AxggB6dBCEcNAiACKAIcIQELIABCADcDACAAIAE2AggMBgsgAUECOgDhAiABIAEoAtwCIgY2AtQCIAEgASgC2AI2AtACIAEoAqgCIQUgAUEKNgKoAgJAAkAgBUEKRg0AIAMgASkDwAI3AwAgAkEkaiABQbQCaikCADcCACACQSxqIAFBvAJqKAIANgIAIANBCGogAUHIAmooAgA2AgAgAiAFNgIYIAIgASkCrAI3AhwgASACQRhqENgFDAELIAJBGGogARA6IANBCGogAkEYakEIaigCADYCACADIAIpAhg3AgALAkACQCABKALUAiIFIAEoAtgCIAEtAOECQQJGGyAGRw0AIAJBGGogARCPBCACKQMYIgdQDQEg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DQAgA0EEaigCACEDIAJBAnQhAgNAIAEgAygCABCsAyADQQRqIQMgAkF8aiICDQALCyAGQRBqIgYgBEcNAAsLC58IAQV/IwBBEGsiAiQAAkACQCABKAIAQQdHDQACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAIQIgMoAgBBdGoiBEEHIARBJkkbDiYAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJQALIANBCGohBSADQQRqIQYMLAsgA0EUaiEFIANBEGohBgwrCyADQRRqIQUgA0EQaiEGDCoLIAMoAiAiA0E0aiEFIANBMGohBgwpCyADQQxqIQUgA0EIaiEGDCgLIANBCGohBSADQQRqIQYMJwsgA0EQaiEFIANBDGohBgwmCyADQTRqIQUgA0EwaiEGDCULIANBJGohBSADQSBqIQYMJAsgA0EkaiEFIANBIGohBgwjCyADQRRqIQUgA0EQaiEGDCILIANBIGohBSADQRxqIQYMIQsgA0EYaiEFIANBFGohBgwgCyADQRRqIQUgA0EQaiEGDB8LIANBFGohBSADQRBqIQYMHgsgAygCCA4HFhcYGRobHBYLIANBIGohBSADQRxqIQYMHAsgA0EQaiEFIANBDGohBgwbCyADQRhqIQUgA0EUaiEGDBoLIAMoAiAiA0EoaiEFIANBJGohBgwZCyADQQhqIQUgA0EEaiEGDBgLIANBCGohBSADQQRqIQYMFwsgA0EMaiEFIANBCGohBgwWCyADQQxqIQUgA0EIaiEGDBULIANBHGohBSADQRhqIQYMFAsgA0EsaiEFIANBKGohBgwTCyADQQhqIQUgA0EEaiEGDBILIAMoAgQiBkEEaiEFDBELIANBFGohBSADQRBqIQYMEAsgA0EQaiEFIANBDGohBgwPCyADQQxqIQUgA0EIaiEGDA4LIANBDGohBSADQQhqIQYMDQsgA0EQaiEFIANBDGohBgwMCyADQRBqIQUgA0EMaiEGDAsLIANBEGohBSADQQxqIQYMCgsgA0EUaiEFIANBEGohBgwJCyADQQxqIQUgA0EIaiEGDAgLIANBCGohBSADQQRqIQYM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AAAgCyAFQXRsaiIFQQhqIAkgDkF0bGoiDkEIaigAADYAACAFIA4pAAA3AAAgCEF/aiEIIBFCf3wgEYMhEQwACwsgAkEgaiQAQYGAgIB4DwsQ9ysACwAL5wgBA38jAEGQAWsiASQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAA4LAAECAwQFBgcICQoACyABQfgAaiAAQQhqEPggIAFB3ABqQRRqIAFB+ABqQRBqKQMANwIAIAFB3ABqQQxqIAFB+ABqQQhqKQMANwIAIAEgASkDeDcCYEEALQDA/6MBGkHAABCMASICRQ0KIAJBGjYCACACIAEpAlw3AgQgAkEMaiABQdwAakEIaikCADcCACACQRRqIAFB3ABqQRBqKQIANwIAIAJBHGogAUH0AGooAgA2AgAMCwsgAUEwakEkaiAAQShqKQIANwIAIAFBMGpBHGogAEEgaikCADcCACABQTBqQRRqIABBGGopAgA3AgAgAUEwakEMaiAAQRBqKQIANwIAQQAtAMD/owEaIAEgACkCCDcCNEHAABCMASICRQ0JIAJBFDYCACACIAEpAjA3AgQgAkEMaiABQThqKQIANwIAIAJBFGogAUEwakEQaikCADcCACACQRxqIAFBMGpBGGopAgA3AgAgAkEkaiABQTBqQSBqKQIANwIAIAJBLGogAUEwakEoaigCADYCAAwKCyABQQRqQSRqIABBKGopAgA3AgAgAUEEakEcaiAAQSBqKQIANwIAIAFBBGpBFGogAEEYaikCADcCACABQQRqQQxqIABBEGopAgA3AgBBAC0AwP+jARogASAAKQIINwIIQcAAEIwBIgJFDQggAkEVNgIAIAIgASkCBDcCBCACQQxqIAFBDGopAgA3AgAgAkEUaiABQQRqQRBqKQIANwIAIAJBHGogAUEEakEYaikCADcCACACQSRqIAFBBGpBIGopAgA3AgAgAkEsaiABQQRqQShqKAIANgIADAkLQQAtAMD/owEaQcAAEIwBIgJFDQcgAkEjNgIAIAIgACkCBDcCBCACQQxqIABBDGooAgA2AgAMCAtBAC0AwP+jARpBwAAQjAEiAkUNBiACQTA2AgAgAiAAKQIENwIEIAJBDGogAEEMaikCADcCAAwHC0EALQDA/6MBGkHAABCMASICRQ0FIAJBLDYCACACIAApAgQ3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AkACQAJAIARBKUcNACADQTBqIAEoAgAiBUEQakH0kYQBEKkuIAMoAjQhBCADKAIwIgYoAggiB0UNASAGIAdBf2oiBzYCCEGAgICAeCEIIAYoAgQgB0HwAGxqIgdBBGohCSAHKAIAIgpBgICAgHhqDgICAQMLIANBADYCqAEgA0E4akHwkYQBIANBqAFqQYSShAEQwisACyADQYQBaiABEKERIANBFjYCqAEgACABKAIEIAEoAgggA0GEAWogA0GoAWoQvRkMBAsgA0GEAWogCUEkEN8KGgJAIAYoAggiBw0AQYGAgIB4IQogA0GBgICAeDYCqAEMAwsgBiAHQX9qIgc2AgggA0GoAWogBigCBCAHQfAAbGoiB0HwABDfChogAygCqAEiCkGCgICAeEgNAiADQfgCaiADQZABaikCADcDACADQYADaiADQZgBaikCADcDACADQYgDaiADQaABaikCADcDACADIAMpAogBNwPwAiAHQQRqIQkgAygChAEhCCADLQCUAiEGDAELIActAGwhBgsgA0GEAWpBDGogCUEIaikCADcCACADQYQBakEUaiAJQRBqKQIANwIAIANBoAFqIAlBGGopAgA3AgAgAyAKNgKEASADIAkpAgA3AogBIANBPGogB0EkakE8EN8KGiAFIAZBAXE6AGQgAiAFKQJQNwIYIAJBIGogBUHYAGoiBigCADYCACABEO0NGiADQYABaiAGKAIANgIAIAMgBSkCUDcCeAJAAkAgCEGAgICAeEcNACADQagBaiACQSQQ3woaIANBCGogA0GoAWoQ/BYgAygCDCECIAMoAgghBgwBCyADQcwCakEMaiADQfACakEIaikDADcCACADQcwCakEUaiADQfACakEQaigCADYCACADQcwCakEgaiACQRhqIgFBCGooAgA2AgAgAyAINgLMAiADIAMpA/ACNwLQAiADIAEpAgA3AuQCIANBqAFqIAJBJBDfChogA0EoaiADQagBahD8FiADQcwCaiADKAIoIAMoAiwQvikCQAJAAkACQCADKALUAg4CAgEACyADQRBqIANBzAJqENMzQQohBiADKAIUIQIMAwsgA0EgaiADQcwCahCNJAJAIAMoAiAiBkEMRg0AIAMoAiQhAgwCC0H0nZcBEP05AAsgA0EYaiADQdgCahCJKEEAIQYgAygCHCECCyADQcwCahCMNwtBCBCRMiIBIAI2AgQgASAGNgIAIANB6ABqEKM1IAMgATYCaCADQYQBakEJQcgAEJEyIANBPGpByAAQ3woQvikgAEEEaiADQYQBakEkEN8KGiAAQSI2AgAgBCAEKAIAQQFqNgIADAILIANBmAJqIAEQoREgA0EWNgKwAiAAIAEoAgQgASgCCCADQZgCaiADQbACahC9GQJAIApBgICAgHhHDQAgA0GoAWoQwS8LIANBhAFqEIw3CyAEIAQoAgBBAWo2AgAgAhCMNwsgA0GQA2okAAvhCAIPfwF+IwBBwABrIgMkACADIAIoAiAiBDYCECACLQA8IQUgAi0APiEGIAIoAjAhByACLQA/IQggAi0AQCEJIAItAD0hCiADIAItAEEiCzoAFiADIAItAEIiDDoAFwJAAkACQAJAAkACQAJAIAEoApACIg1BAnFFDQAgASgChAIiDigCCCIPQf7///8HSw0BIA4oAhRFDQAgDw0CIA5BfzYCCCABKAKAAiIPKAIIDQMgD0F/NgIIIA4oAhAhECAPQQxqIA4oAhQiERChMCAPKAIQIA8oAhRBAnRqIBAgEUECdBDfChogDyARIA8oAhRqNgIUIA5BADYCFCAPIA8oAghBAWo2AgggDiAOKAIIQQFqNgIICyABIA1B///v7wNxQYCAgBByNgKQAiADQRhqQQhqIAJBJGoiDkEIaigCADYCACADIA4pAgA3AxggAyADQRdqNgIsIAMgA0EWajYCKCADIANBEGo2AiQgA0EIaiABIANBGGogBCALQQFxIAxBAXEQlgIgAygCDCEOAkAgAygCCA0AIAEgDRDcEQJAAkAgCg4DBwABBwsgAS0AmAJBAkcNBiABLQCiAkH/AXENBgwFCyABLQCYAkECRw0FIAEtAKICQf8BcUUNBAwFCyAAQQ02AgAgACAONgIEIAEgDRDcESACELUaDAULQZyEmwEQ6iIAC0GMhJsBEOkiAAtB/IObARDpIgALIAMgAhCdLSADKAIEIQ0gAygCACEPIANBgIGAgHg2AhggASAPIA0gA0EYahCWKgsCQCACKAIAQQVHDQAgAygCECINIAEoAtQCIg8gDSAPSRshBCANIA8gDSAPSxshDyACKAIUIQ0gAigCECELIAIpAwghEgJAIAVB/wFxQQNGDQAgA0G1gYCAeDYCGCABIAQg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gSBBgIAgIAIbciICQYACciACQf/hv/8BcSADGyIGQQJxRQ0AIAEoAoQCIgMoAggiAkH+////B0sNASADKAIURQ0AIAINAiADQX82AgggASgCgAIiAigCCA0DIAJBfzYCCCADKAIQIQggAkEMaiADKAIUIgkQoTAgAigCECACKAIUQQJ0aiAIIAlBAnQQ3woaIAIgCSACKAIUajYCFCADQQA2AhQgAiACKAIIQQFqNgIIIAMgAygCCEEBajYCCAsgASAGQYCAwAByNgKQAiABKQLoAiEKIAFBADYC6AIgAUHwAmoiAykCACELIANCgICAgIABNwMAIAVBEGogCzcDACABQYADaikCACELIAFB+AJqIgMpAgAhDCABQQApA9jiogE3AvwCIANBADYCACABQYgDaigCACEDIAFBhANqQQApA+DiogE3AgAgBUEYaiAMNwMAIAVBIGogCzcDACAFQShqIAM2AgAgBSAKNwMIIAUgATYCLCABLQCYAkECRw0DAkAgARDtDiIDRQ0AIAMtAABBAkYNBAsgARDQKEUNAyAAQYCAgIB4NgIADAQLQZyEmwEQ6iIAC0GMhJsBEOkiAAtB/IObARDpIgALAkAgASgCkAIiA0ECcUUNACABKAKEAiICKAIIIgZB/v///wdLDQIgAigCFEUNACAGDQMgAkF/NgIIIAEoAoACIgYoAggNBCAGQX82AgggAigCECEIIAZBDGogAigCFCIJEKEwIAYoAhAgBigCFEECdGogCCAJQQJ0EN8KGiAGIAkgBigCFGo2AhQgAkEANgIUIAYgBigCCEEBajYCCCACIAIoAghBAWo2AggLIAEgA0HAAHI2ApACIAVBNGogAUEBENcGIAEgAxDcESAFKAI4IQMCQCAFKAI0IgJBgICAgHhGDQAgBUHAAGohBiAFKAI8IQkCQCAEDQAgBUHMAGogAyAJEJEZIAUoAkxBAUcNACAFKAJUIQQgBSgCUCEIIAVBq4CAgHg2AlggASAIIAQgBUHYAGoQlioLIAAgCTYCCCAAIAM2AgQgACACNgIAIAAgBikCADcCDCAAQRRqIAZBCGooAgA2AgAMAQsgAEGBgICAeDYCACAAIAM2AgQLIAVBCGoQyRggBSgCFCIAIAUoAhgQ9hggBSgCECAAEPgzIAUoAhwgBSgCIBDwJyABIAcQ3BEgBUHwAGok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EPUHIAAgACgCACIDQX9qNgIAIANBAUcNACAAIAAoAiAQ0y8LAkACQCACKQMAQgBSDQAgAkEIahC1EQwBCyACELgTCyACQcgAQQgQ7hwMAgsgACgCBCICEKoBIAJBwABBCBDuHAwBCyAAQQhqELgDCyABQRBqJAAL+ggCCX8CfiMAQaALayIDJAAgA0EDNgIwIANBADsANSADQQA6AB4gA0EAOgAqIANBAToAICADQoKAgIAwNwIUIANBAzYCJCADQQE6ADQgA0EAOgA5IANBgAI7ASwgA0EBOwEoIANBATsBHCADQQJBASACQfUDSSIEGyIFOgA4IANBoANqIANBFGpBHGogASACEJIDAkACQAJAAkACQAJAAkAgAygCoAMNACADQcgIaiICIANBvgNqLwEAOwEAIAMgAykBtgM3A8AIIAMpAqQDIQwgAykCrAMhDSADLwG0AyEBIANBPGpBHGogA0HAA2pByAIQ3woaIANB1gBqIAIvAQA7AQAgAyABOwFMIAMgDTcCRCADIAw3AjwgAyADKQPACDcBTgJAIAQNACADQaADakECQQEgA0E8ahDQAQJAIAMoAqADIgFBgICAgHhGDQAgA0HACGpBCGoiAiADQb4Dai8BADsBACADIAMpAbYDNwPACCADLQC1AyEEIAMtALQDIQYgAygCsAMhByADKAKsAyEIIAMoAqgDIQkgAygCpAMhCiADQYgGaiADQcADakGoAhDfChogA0GwCGpBCGoiCyACLwEAOwEAIAMgAykDwAg3A7AIQQAtAMD/owEaQdACEIwBIgJFDQMgAiAEOgAdIAIgBjoAHCACIAc2AhggAiAINgIUIAIgCTYCECACIAo2AgwgAiABNgIIIAJCgYCAgBA3AgAgAiADKQOwCDcBHiACQSZqIAsvAQA7AQAgAkEoaiADQYgGakGoAhDfChpB5O2DASEEDAYLIANBEGogA0G+A2ovAQA7AQAgAyADKQG2AzcDCAwDCyADQaADakEAQQEgA0E8ahC/AQJAIAMoAqADDQAgA0HACGpBCGoiAiADQb4Dai8BADsBACADIAMpAbYDNwPACCADLQC1AyEBIAMtALQDIQQgAygCsAMhBiADKAKsAyEHIAMoAqgDIQggAygCpAMhCSADQdAIaiADQcADakHAAhDfChogA0GQC2pBCGoiCiACLwEAOwEAIAMgAykDwAg3A5ALQQAtAMD/owEaQeQCEIwBIgJFDQIgAiABOgAZIAIgBDoAGCACIAY2AhQgAiAHNgIQIAIgCDYCDCACIAk2AgggAkKBgICAEDcCACACIAMpA5ALNwEaIAJBImogCi8BADsBACACQSRqIANB0AhqQcACEN8KGkHo7oMBIQQMBQsgA0EQaiADQb4Dai8BADsBACADIAMpAbYDNwMIDAILIANBEGogA0G+A2ovAQA7AQAgAyADKQG2AzcDCCADLQC1AyEBIAMtALQDIQUgAygCsAMhBCADKAKsAyECIAMoAqgDIQYMAgsACyADLQC1AyEBIAMtALQDIQUgAygCsAMhBCADKAKsAyECIAMoAqgDIQYgA0E8ahCEHAsgBkEDRg0BQQMhAQwCCyADLQA5IQEgA0E8ahCEHAsgACAFOgAIIAAgBDYCBCAAIAI2AgAgACADLwEIOwEKCyAAIAE6AAkgA0GgC2okAAuyCAIGfwF+IwBB4AFrIgIkACACIAEQwxQiAzYCBAJAAkACQAJAIANB2wBHDQAgAkEIakEIaiIEIAEoAgAiA0HYAGooAgA2AgAgAiADKQJQNwMIIANB0ABqIQUCQCABEMovDQAgAkEsaiAFQQhqKAIANgIAIAJBGGpBCGogBCgCADYCACACIAIpAwg3AxggAiAFKQIANwIkIAJBBDYCQCAAQQRqIAEoAgQgASgCCCACQRhqIAJBwABqEL0ZIABBiYDEADYCAAwECyABEMMUIgZB3gBGDQEMAgsgAkEANgJAIAJBBGpBtJKEASACQcAAakGgnIQBEMIrAAsgARDKLw0AIAJBLGogBUEIaigCADYCACACQRhqQQhqIAJBCGpBCGooAgA2AgAgAiACKQMINwMYIAIgBSkCADcCJCACQQQ2AkAgAEEEaiABKAIEIAEoAgggAkEYaiACQcAAahC9GSAAQYmAxAA2AgAMAQsgAkE4aiAFQQhqKAIAIgM2AgAgAkEsaiADNgIAIAJBADYCICACQoCAgIDAADcCGCACIAUpAgAiCDcCMCACIAg3AiQgAkHAAGpBCGohAyACQSRqIQQCQAJAA0AgARDDFEEtRw0BIAMgARChESACQQA6AGAgAkKBgMSA0AU3AkAgAkEYaiACQcAAahDuGCABEMovDQALIAJBmAFqQQhqIAJBCGpBCGooAgAiAzYCACACQawBaiADNgIAIAIgAikDCCIINwOYASACIAg3AqQBIAJBBDYCQCAAQQRqIAEoAgQgASgCCCACQZgBaiACQcAAahC9GQwBCwJAIAIoAiANACABEMMUQd0ARw0AIAJBwABqQQhqIAEQoREgAkEAOgBgIAJCgYDEgNALNwJAIAJBGGogAkHAAGoQ7hggARDKLw0AIAJBrAFqIAVBCGooAgA2AgAgAkGYAWpBCGogAkEIakEIaigCADYCACACIAIpAwg3A5gBIAIgBSkCADcCpAEgAkEENgJAIABBBGogASgCBCABKAIIIAJBmAFqIAJBwABqEL0ZDAELIAJBsAFqQRRqIAVBCGooAgA2AgAgAkGwAWpBCGoiASACQQhqQQhqKAIANgIAIAJByAFqQQhqIgMgBEEIaigCACIHNgIAIAJByAFqQRRqIAc2AgAgAiACKQMINwOwASACIAUpAgA3ArwBIAIgBCkCACIINwPIASACIAg3AtQBIABB9ABqIAJBGGpBJBDfChogAEIENwIIIABCh4DEADcCACAAIAZB3gBGOgBwIAAgAikDyAE3AhAgAEEYaiADKQMANwIAIABBIGogAkHIAWpBEGopAwA3AgAgACACKQOwATcCWCAAQeAAaiABKQMANwIAIABB6ABqIAJBsAFqQRBqKQMANwIADAELIABBiYDEADYCACACQRhqEJY3CyACQeABaiQAC9kHAQl/IwBBIGsiAyQAQQAhBEEAIQUCQAJAAkACQCACRQ0AAkACQCABIAJJDQBBACACQXxqIgUgBSACSxsiBiACQX9qIgcgBiAHSRshCCAHIQUCQANAAkAgBSAGSw0AIAghBQwCCwJAIAUgAkkNACAFIAJB0IyEARChGwALIAAgBWohCSAFQX9qIgohBSAJLQAAQcABcUGAAUYNAAsgCkEBaiEFCwJAAkACQCACIAVJDQBBACEJIAIgBUYNBgJAIAAgBWoiCywAACIKQX9KDQAgCkFAcUGAf0YNBwJAAkAgCkFgTw0AQQIhCgwBCwJAIApBcE8NAEEDIQoMAQsgCkF3Sw0IQQQhCgsgCiACIAVrSw0HIANBDGogCyAKELcGIAMoAgwNByADIAMoAhAiBSADKAIUajYCHCADIAU2AhggA0EYahCHEUGAgMQARg0CCwJAAkADQCAHIAZNDQEgByACTw0C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AA8LIAAgATYCDCAAQRBqIAI2AgAPCyAAIAE2AjAgAEE0aiACNgIADwsgACABNgIgIABBJGogAjYCAA8LIAAgATYCICAAQSRqIAI2AgAPCyAAIAE2AhAgAEEUaiACNgIADwsgACABNgIcIABBIGogAjYCAA8LIAAgATYCFCAAQRhqIAI2AgAPCyAAIAE2AhAgAEEUaiACNgIADwsgACABNgIQIABBFGogAjYCAA8LIAAoAggOBxYXGBkaGxwWCyAAIAE2AhwgAEEgaiACNgIADwsgACABNgIMIABBEGogAjYCAA8LIAAgATYCFCAAQRhqIAI2AgAPCyAAKAIgIgAgATYCJCAAQShqIAI2AgAPCyAAIAE2AgQgAEEIaiACNgIADwsgACABNgIEIABBCGogAjYCAA8LIAAgATYCCCAAQQxqIAI2AgAPCyAAIAE2AgggAEEMaiACNgIADwsgACABNgIYIABBHGogAjYCAA8LIAAgATYCKCAAQSxqIAI2AgAPCyAAIAE2AgQgAEEIaiACNgIADwsgACgCBCIAIAE2AgAgAEEEaiACNgIADwsgACABNgIQIABBFGogAjYCAA8LIAAgATYCDCAAQRBqIAI2AgAPCyAAIAE2AgggAEEMaiACNgIADwsgACABNgIIIABBDGogAjYCAA8LIAAgATYCDCAAQRBqIAI2AgAPCyAAIAE2AgwgAEEQaiACNgIADwsgACABNgIMIABBEGogAjYCAA8LIAAgATYCECAAQRRqIAI2AgAPCyAAIAE2AgggAEEMaiACNgIADwsgACABNgIEIABBCGogAjYCAA8LIAAgATYCGCAAQRxqIAI2AgAPCyAAIAE2AgwgAEEQaiACNgIADwsgACABNgIMIABBEGogAjYCAA8LIAAgATYCECAAQRRqIAI2AgAPCyAAIAE2AhAgAEEUaiACNgIADwsgACABNgIgIABBJGogAjYCAA8LIAAgATYCICAAQSRqIAI2AgALsQgBAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiAUF0aiICQQcgAkEmSRtBf2oOJAABAgMEBQYHCAkKCwwNDg8QERITIhQVFhciGBkaGxwdHh8gISILIABBBGoQgS0gACgC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AEEIaiAEQRhqQQhqKQMANwMAIABBEGogBEEYakEQaikDADcDACAAQRhqIARBGGpBGGopAwA3AwAgAEEgaiAEQRhqQSBqKQMANwMAIAAgBSABKALUAiIBIAUgAUsbNgIsIAAgBSABIAUgAUkbNgIoCyAEQfAAaiQAC/AHARZ/IwBB8AFrIgIkACABKAIEIQMgASgCACEEIAJB0ABqIAFBwABqEJ8IIAEoAnQhBSABKAJwIQYgAkGEAWogAUH8AGoQvwMgAS0AiAEhBwJAAkACQCABKAJ4IggNAEEAIQkMAQsQsTIhCSAIKAIEIQogCCgCECELIAgoAgwhDCACQZABaiAIKAIIIg1BBEEEEOETIAIoApQBIQ4gAigCkAFBAUYNASACKAKYASEPAkAgDkUNACANQQJ0IQggDyEQIA4hEQNAIAhFDQEgCigCACESEKwyIRMgAkGQAWogEhCGASAQIBMgAkGQAWpB4AAQ3wo2AgAgCEF8aiEIIBBBBGohECAKQQRqIQogEUF/aiIRDQALCyAJIAs2AhAgCSAMNgIMIAkgDTYCCCAJIA82AgQgCSAONgIACyACQRhqQShqIg8gAkHQAGpBKGoiCikDADcDACACQRhqQSBqIgsgAkHQAGpBIGoiCCkDADcDACACQRhqQRhqIgwgAkHQAGpBGGoiECkDADcDACACQRhqQRBqIhQgAkHQAGpBEGoiESkDADcDACACQRhqQQhqIhUgAkHQAGpBCGoiEikDADcDACACQQhqQQhqIhYgAkGEAWpBCGoiFygCADYCACACIAIpA1A3AxggAiACKQKEATcDCCACQYQBaiABQZABahChAUEGIRMCQCABLQA8QQZGDQAgASgCDCENIAEoAgghDiACQZABaiABQRBqEJ8IIAogAkGQAWpBKGooAgA2AgAgCCACQZABakEgaikDADcDACAQIAJBkAFqQRhqKQMANwMAIBEgAkGQAWpBEGopAwA3AwAgEiACQZABakEIaikDADcDACACQc4AaiACQb8Bai0AADoAACACIAIpA5ABNwNQIAIgAi8AvQE7AUwgAi0AvAEhEwsgACADNgIEIAAgBDYCACAAIAIpAxg3A0AgACAJNgJ4IAAgBTYCdCAAIAY2AnAgACACKQMINwJ8IABByABqIBUpAwA3AwAgAEHQAGogFCkDADcDACAAQdgAaiAMKQMANwMAIABB4ABqIAspAwA3AwAgAEHoAGogDykDADcDACAAQYQBaiAWKAIANgIAIAAgBzoAiAEgACANNgIMIAAgDjYCCCAAIAIpAoQBNwKQASAAQZgBaiAXKAIANgIAIAAgAikDUDcDECAAQRhqIBIpAwA3AwAgAEEgaiARKQMANwMAIABBKGogECkDADcDACAAQTBqIAgpAwA3AwAgAEE4aiAKKAIANgIAIAAgEzoAPCAAQT9qIAJBzgBqLQAAOgAAIAAgAi8BTDsAPSACQfABaiQADwsgDiACKAKYARD4OQALuAcCEX8CfiMAQYABayICJAAgACgCCEE4bCEDIAJBOGpBBGohBCABKAIUIQUgACgCBCEGQQAhBwNAAkACQAJAAkACQCADIAdGDQACQAJAAkACQCAGIAdqIgAoAgAOAwABAgALIAEgAEEIahC+MyAAQShqKAIAIAEQvxwMAgsgAEEwaigCACIIRQ0BIAggARCkBQwBCyAAQQRqIAEQrj8LIAAoAgBBAUcNBCACQQhqIABBEGoiCBDNGyAFIAJBCGoQ6QkNASACQQhqIAgQtxINAhDpPyETIAJBOGpBGGogCEEYaikDADcDACACQThqQRBqIAhBEGopAwA3AwAgAkE4akEIaiAIQQhqKQMANwMAIAgpAwAhFCAIIBM3AwAgAEEYaiIJQgA3AwAgAEEdakIANwAAIABBKGoiCkEANgIAIAIgFDcDOCACQeAAaiACQThqEPggIAIpA2AhEyACKAJsIQsgAigCaCEMIABBMGoiDSgCACEOIA1BADYCAAJAIA4NACACQSBqQRBqIAJBCGpBEGopAwA3AwAgAkEgakEIaiACQQhqQQhqKQMANwMAIAIgAikDCDcDICACQeAAaiACQSBqEPAWIARBGGogAkHgAGpBGGopAwA3AgAgBEEQaiACQeAAakEQaikDADcCACAEQQhqIAJB4ABqQQhqKQMANwIAIAQgAikDYDcCAEEIQSgQxzgiDUUNBCANQQA2AgAgDUEEaiACQThqQSQQ3woaIAAQsCkgAEEIakEANgIAIABBADYCACAIIBM3AgAgCiANNgIAIABBHGogCzYCACAJIAw2AgAMBQsgAEEIaiIPKAIAIRAgAEEMaigCACERIAJBIGpBEGogAkEIakEQaikDADcDACACQSBqQQhqIAJB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AUHIAmooAgA2AgAgAyAFNgI4IAMgASkCrAI3AjwgASADQThqENgFDAELIANBCGogARA6IAJBCGogA0EIakEIaigCADYCACACIAMpAgg3AgALIAEtAOECQQJGDQELIAEtAOACQZsBRw0AIAFBAjoA4QIgASABKQPYAjcD0AIgASABEN8YEPUYCyAAQQI6ABQgACAENgIADAELIANBOGogAUEBQQEQpwIgAygCOCECAkACQCADLQBMIgRBAkYNACADQSBqQQxqIANBOGpBDGopAgA3AgAgA0EgakEXaiADQThqQRdqLQAAOgAAIAMgAykCPDcCJCADQQhqQQhqIANBIGpBCGopAwA3AwAgAyADLwBNOwA1IAMgBDoANCADQQhqQRBqIANBIGpBEGopAwA3AwAgAyACNgIgIAMgAykDIDcDCAJAIANBCGoQ3w5FDQAgAygCLCECIAMoAighBCADQamAgIB4NgI4IAEgBCACIANBOGoQhRALIAEvAZACQYAFcUUNASADQQhqQfWloQFBBRCWLEUNASADKAIsIQIgAygCKCEEIANBwoCAgHg2AjggASAEIAIgA0E4ahCWKgwBCyAAQQI6ABQgACACNgIADAELAkAgAS0AkQJBAXFFDQAgA0EIakHVg6EBQQUQlixFDQAgAygCLCECIAMoAighBCADQcKAgIB4NgI4IAEgBCACIANBOGoQlioLIAAgA0EgahDwFgsgA0HQAGokAAvhBwEFfyMAQdADayIDJAACQAJAIAINACAAQYeAgIB4NgIADAELIAJBBHQhBCABIQUCQANAIARFDQEgBEFwaiEEIAUoAgghBiAFQRBqIQUgBg0ACyAAQYeAgIB4NgIADAELAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAJBAUcNACABKAIEIQQgASgCCCIFQQFHDQEgAEGAgICAeDYCACAAIAQtAAA6AAQMDAsCQAJAAkAgAkECRw0AIAFBCGohBkEAIQQDQCAEQSBGDQIgBiAEaiEFIARBEGohBCAFKAIAQQFGDQALC0EAIQYgAkEDRg0BDAkLIAFBCGooAgBFDQIgASgCGEUNAyABKAIEIQQgAEGBgICAeDYCACAAIAQtAAA6AAQgACABKAIULQAAOgAFDAwLQQghBAJAA0AgBEE4Rg0BIAEgBGohBSAEQRBqIQQgBSgCAEEB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ACAAQShqIAFBKGopAwA3AwAgAEEwaiABQTBqKQMANwMAIABBOGogAUE4aikDADcDACABQcAAQQgQ7hwMBAtBAC0AwP+jARpBwAAQjAEiA0UNASADQgA3AxAgA0EDNgIIIANBGzYCACADQRhqQgA3AwAgA0EgakIANwMAQQAtAMD/owEaQcAAEIwBIgFFDQEgASADNgIEIAFBEDYCACABQRBqIgNBBToAACABQQhqQgA3AwAgAEEIakIANwMAIAAgASkDADcDACAAQRhqIAFBGGopAwA3AwAgAEEgaiABQSBqKQMANwMAIABBKGogAUEoaikDADcDACAAQTBqIAFBMGopAwA3AwAgAEE4aiABQThqKQMANwMAIABBEGogAykDADcDACABQcAAQQgQ7hwMAwsgASsDCCIGIAZiDQECQCAGmUQAAAAAAADwf2ENACAAQgA3AyAgACAGOQMYIABCADcDECAAQQM2AgggAEEbNgIADAMLQb/qoAFBCBCDKCEEAkAQ6T8iBUIDg0IAUg0AIAIgBaciATYCLCACQSxqEPUHIAEgASgCACIDQX9qNgIAIANBAUcNACABIAEoAiAQ0y8LAkAgBr1CAFMNACAAQgA3AxAgACAENwMIIABBGjYCACAAIAIvACk7AB0gACACKQMINwMgIABBFWpCADcAACAAQR9qIAJBK2otAAA6AAAgAEEoaiACQRBqKQMANwMAIABBMGogAkEYaikDADcDACAAQThqIAJBIGopAwA3AwAMAwtBAC0AwP+jARpBwAAQjAEiAUUNACABQgA3AxAgASAENwIIIAFBGjYCACABIAIvACk7AB0gASACKQMINwMgIAAgATYCBCAAQgA3AwggAUEVakIANwAAIABBEGpBADoAACABQR9qIAJBK2otAAA6AAAgAUEoaiACQRBqKQMANwMAIAFBMGogAkEIakEQaikDADcDACABQThqIAJBIGopAwA3AwAgAEEQNgIADAILAAtBvOqgAUEDEIMoIQQQ6T8hBSAAQgA3AxAgACAENwMIIABBFWpCADcAACAAQRo2AgAgBRDQHwsgAkEwaiQAC8AHAgZ/AX4jAEEgayIDJAAgAS0ATSEEAkACQAJAAkACQAJAIAItABAiBUFraiIGQf8BcUECSQ0AIAIoAgAiBygCACEIIARBAXENAQJAIAhBEUcNACAHLQARRQ0ECyADQRhqIAEQhxYgAy0AGEEERg0EIAMpAxgiCUL/AYNCBFENBCAAIAk3AgAMBQsgBEEBcQ0BDAILIAhBEUcNAiAHLQARDQIgBy0AEEEBRw0CIAVBCksNAkEBIAV0QcANcQ0BDAILIAIoAgAQ+xNFDQELIANBGGogARCHFiADLQAYQQRGDQAgAykDGCIJQv8Bg0IEUQ0AIAAgCTcCAAwBCyAFQQJ0IghBoLyjAWooAgAhBCAIQby7owFqKAIAIQgCQAJAAkACQAJAAkACQAJAIAEtADxBAUcNACADQRhqIAEQnx4CQCADLQAYQQRGDQAgAykDGCIJQv8Bg0IEUg0CCyABQQA6ADwgASgCACEHIAFBADYCACAHRQ0AIAEgASgCBBCoBwsgASgCKCAEIAgQ+i4gASAEIAgQgQogAS0ATSIIDQIgBkECSQ0FIAIoAgQiBCgCAEFwag4CBQEDCyAAIAk3AgAMBgsgBC0AEUUNAQwDCwJAAkAgBkECSQ0AIAJBBGohBAJAIAVBDkYNAAJAAkACQAJAA0ACQCAEKAIAIgQoAgAiBkFwag4DAwQAAgsgBEEEaiEEDAALCyAGQRtHDQYgBCgCCEEDRg0CDAYLIAQtABAiBkECRg0EAkACQCAFQXVqDgIAAQcLIAZBAUYNCAwGCyAGRQ0HDAULIAQtABFFDQQCQAJAIAVBdWoOAgABBgsgBC0AEEUNBwwFCyAELQAQDQYMBAsgBCkDGEJ/VQ0DIAVBDEYNBQwDCyADQRBqIAQoAgAiBBDXKyADKAIQQX5GDQQgASgCRCIFRQ0CIANBCGogBBDXKyAFIAMoAgggASgCSCgCFBEIAA0EIAEtAE1BAXENBQwDCyACKAIEEL4MDQMMAQsCQCAFQXxqDgUAAQEBAAELIAQoAgQiBCgCAEERRw0AIAQtABANAgsgCA0CCyADQRhqIAEQhxYgAy0AGEEERg0BIAMpAxgiCUL/AYNCBFENASAAIAk3AgAMAgsgA0EYaiABEIcWIAMtABhBBEYNACADKQMYIglC/wGDQgRRDQAgACAJNwIADAELIANBGGogAkEEaiABEOM6AkACQCADLQAYQQRGDQAgAykDGCIJQv8Bg0IEUg0BCyAAQQQ6AAAMAQsgACAJNwIACyADQSBqJAALwQcCBX8EfiMAQaABayIDJAAgA0EIaiABEKYnIAMoAhAhBCADKQMIIQggAigCACEFIANBGGogAhCUBQJAAkAgCEIDgyIJQgBSDQAgCKciASABKAIAIgFBAWo2AgAgAUF/TA0BCwJAIAIpAxAiCkIDgyILQgBSDQAgCqciASABKAIAIgFBAWo2AgAgAUF/TA0BC0EALQDA/6MBGkHAABCMASIGRQ0AIAZBADoAHCAGIAQ2AhggBkIANwMQIAYgCDcDCCAGQRo2AgBBAC0AwP+jARpBwAAQjAEiB0UNACAHQgA3AxggByAKNwIQIAdBADYCCCAHQRs2AgAgB0EgakIANwMAQQAtAMD/owEaQcAAEIwBIgFFDQAgASADKQMYNwMAIAFBOGogA0EYakE4aikDADcDACABQTBqIANBGGpBMGopAwA3AwAgAUEoaiADQRhqQShqKQMANwMAIAFBIGogA0EYakEgaikDADcDACABQRhqIANBGGpBGGopAwA3AwAgAUEQaiADQRhqQRBqKQMANwMAIAFBCGogA0EYakEIaikDADcDACADQQA6AJQBIAMgATYCkAEgA0IANwOIASADIAY2AoABIANCADcDeCADQgA3A2ggAyAHNgJkIANBAjYCYCADQQE2AlgCQCAFRQ0AAkAgC0IAUg0AIAqnIgEgASgCACIBQQFqNgIAIAFBf0wNAgsCQCAJQgBSDQAgCKciASABKAIAIgFBAWo2AgAgAUF/TA0CC0EALQDA/6MBGkHAABCMASIGRQ0BIAZBADoAHCAGIAQ2AhggBkIANwMQIAYgCDcDCCAGQRo2AgAgA0HYAGoQpBUhB0EALQDA/6MBGkHAABCMASIBRQ0BIAFCADcDGCABIAo3AhAgAUEANgIIIAFBGzYCACABQSBqQgA3AwALQQAtAMD/owEaIAIoAhwhBCACKAIYIQVBwAAQjAEiAkUNACACQgA3AxAgAiAHNgIMIAJBAjYCCCACQQE2AgAgAkEAOgA8IAIgATYCOCACQgA3AzAgAiAGNgIoIAAgBDYCDCAAIAU2AgggACACNgIEIABBEjYCACACQRhqQgA3AwAgAkEgakIANwMAAkAgC0IAUg0AIAMgCqciATYCnAEgA0GcAWoQ9QcgASABKAIAIgJBf2o2AgAgAkEBRw0AIAEgASgCIBDTLwsCQCAJQgBSDQAgAyAIpyIBNgJYIANB2ABqEPUHIAEgASgCACICQX9qNgIAIAJBAUcNACABIAEoAiAQ0y8LIANBoAFqJAAPCwAL+wYCC38BfiMAQRBrIgckAAJAAkACQAJAAkACQAJAAkACQAJAAkAgBEEQSQ0AIAZBf2ohCCABKAIEIQkCQCABKAIADQAgBkUNCSAGIAlrIQogASkDCCESIAEoAhAhC0EAIQxBACENQQAhAQNAIA0hDiABIg8gBmoiASAESw0MIA8gCGoiECAETw0DQQAhDSASIAMgEGoxAACIQgGDUA0AIAsgDiALIA5LGyIRIAYgESAGSxshECADIA9qIQ0gESEBAkACQAJAA0ACQCAQIAFHDQAgCyEBDAILIA8gAWogBE8NCCAFIAFqLQAAIA0gAWotAABHDQIgAUEBaiEBDAALCwJAAkADQCABIA5NDQIgASAGTw0KIA8gAWoiECAETw0BAkAgBSABai0AACANIAFqLQAARw0AIAFBf2ohAQwBCwsgCiENIAkhAQwDCyAQIARBsIaCARChGwALIA4gBk8NCAJAIA8gDmoiECAETw0AIAohDSAJIQEgBSAOai0AACADIBBqLQAARw0CDA4LIBAgBEHQhoIBEKEbAAsgASALa0EBaiEBQQAhDQsgASAPaiEBDAALCyAGRQ0IIAEoAhAiCyAGIAsgBksbIRAgASkDCCESQQAhDCALQX9qIAZPIQ5BACEBA0ACQCABIg8gBmoiASAETQ0ADAwLIA8gCGoiDSAETw0IIBIgAyANajEAAIhCAYNQDQAgAyAPaiENIAshAQJAA0ACQCAQIAFHDQAgCyEBA0AgAUUNDiABQX9qIQEgDg0LIAEgD2oiDSAETw0DIAUgAWotAAAgAyANai0AAEYNAAsgDyAJaiEBDAMLIA8gAWogBE8NCAJAIAUgAWotAAAgDSABai0AAEcNACABQQFqIQEMAQsLIA8gC2sgAWpBAWohAQwBCwsgDSAEQaCHggEQoRsACyAHQQhqIAEoAiggASgCLCADIAQgBSAGELERIAcoAgwhDyAHKAIIIQwMCQsgECAEQYCGggEQoRsACyAEIBEgD2oiASAEIAFLGyAEQZCGggEQoRsACyABIAZBoIaCARChGwALIA4gBkHAhoIBEKEbAAsgBCAPIAtqIgEgBCABSxsgBEGAh4IBEKEbAAsgASAGQZCHggEQoRsACyANIARB8IaCARChGwALQQAhDwtBASEMCyAAIAw2AgAgACAPNgIEIAdBEGokAAurBwMGfwJ+AXwjAEEgayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAIAIgNBfmoiBEEBIARBB0kbDgcAAQIDBAUGAAsCQCABKQMIIghCA4NCAFINACAIpyIBIAEoAgAiAUEBajYCACABQX9MDQgLIABBAjYCACAAIAg3AwgMCwsCQCABKQMQIghCA4NCAFINACAIpyIEIAQoAgAiBEEBajYCACAEQX9MDQcLQQEhBCADQQFxDQdBACEEIAEpAwgiCUIDg0IAUQ0FDAgLAkAgASkDCCIIQgODQgBSDQAgCKciBCAEKAIAIgRBAWo2AgAgBEF/TA0GCwJAIAEpAxAiCUIDg0IAUg0AIAmnIgEgASgCACIBQQFqNgIAIAFBf0wNBgsgACAJNwMQIAAgCDcDCCAAQQQ2AgAMCQsCQCABKQMIIghCA4NCAFINACAIpyIEIAQoAgAiBEEBajYCACAEQX9MDQULAkAgASkDECIJQgODQgBSDQAgCaciASABKAIAIgFBAWo2AgAgAUF/TA0FCyAAIAk3AxAgACAINwMIIABBBTYCAAwICyABKwMQIQoCQCABKQMIIghCA4NCAFINACAIpyIBIAEoAgAiAUEBajYCACABQX9MDQQLIAAgCDcDCCAAIAo5AxAgAEEGNgIADAcLQQAtAMD/owEaIAEoAhAhA0EQEIwBIgRFDQIgAygCBCEFIAMtAAwhBiACIAMoAggiA0EEQQQQ4RMgAigCBCEHIAIoAgBBAUYNBSACKAIIIAUgA0ECdBDfCiEFIAQgBjoADCAEIAM2AgggBCAFNgIEIAQgBzYCAAJAIAEpAwgiCEIDg0IAUg0AIAinIgEgASgCACIBQQFqNgIAIAFBf0wNAwsgACAINwMIIAAgBDYCECAAQQc2AgAMBgsgASgCBCEEEM8yIQEgAiAEEKwBIAFBGGogAkEYaikDADcDACABQRBqIAJBEGopAwA3AwAgAUEIaiACQQhqKQMANwMAIAEgAikDADcDACAAQQg2AgAgACABNgIEDAULIAmnIgEgASgCACIDQQFqNgIAIANBf0oNAgsACyABKAIEIQMQzzIhASACIAMQrAEgAUEYaiACQRhqKQMANwMAIAFBEGogAkEQaikDADcDACABQQhqIAJBCGopAwA3AwAgASACKQMANwMACyAAIAk3AwggACABNgIEIAAgBDYCACAAIAg3AxAMAQsgByACKAIIEPg5AAsgAkEgaiQAC7EHAQJ/IwBB8ABrIgIkAEEBIQMCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAgBBbGoOHQkICwsLCwoLCwsLCwsLCwALCwsLCwELAgMEBQsGCwsgAkEQaiABQQxqKAIANgIAIAIgASkCBDcDCEEDIQMMBgtBCCEDIAJBCGpBCGogAUEMaikCADcDACACIAEpAgQ3AwgMBQsgAkEQaiABQQxqKAIANgIAIAIgASkCBDcDCEEHIQMMBAsgAkEQaiABQQxqKQIANwMAIAIgASkCBDcDCEEFIQMMAwsgAkEQaiABQQxqKQIANwMAIAIgASkCBDcDCEEJIQMMAgsgAkEQaiABQQxqKQIANwMAIAIgASkCBDcDCEEGIQMMAQsgAkEQaiABQQxqKQIANwMAIAIgASkCBDcDCEEEIQMLIAAgAzYCACAAIAIpAwg3AgQgAEEMaiACQRBqKQMANwIAIABBFGogAkEYaikDADcCACAAQRxqIAJBIGopAwA3AgAgAEEkaiACQShqKQMANwIAIABBLGogAkEwaigCADYCAAwEC0ECIQMLIAJBCGpBDGogAUEQaikCADcCACACQQhqQRRqIAFBGGopAgA3AgAgAkEIakEcaiABQSBqKQIANwIAIAJBCGpBJGogAUEoaikCADcCACAAIAM2AgAgAiABKQIINwIMIAAgAikDCDcCBCAAQQxqIAJBEGopAwA3AgAgAEEUaiACQQhqQRBqKQMANwIAIABBHGogAkEIakEYaikDADcCACAAQSRqIAJBCGpBIGopAwA3AgAgAEEsaiACQQhqQShqKAIANgIADAILIAJBOGpBEGogAUEYaikDADcDACACQThqQQhqIAFBEGopAwA3AwAgAiABKQMINwM4IAJB0ABqIAJBOGoQ8BYgAkEIakEcaiACQdAAakEYaikDADcCACACQQhqQRRqIAJB0ABqQRBqKQMANwIAIAJBCGpBDGogAkHQAGpBCGopAwA3AgAgAiACKQNQNwIMIABBADYCACAAIAIpAwg3AgQgAEEMaiACQQhqQQhqKQMANwIAIABBFGogAkEIakEQaikDADcCACAAQRxqIAJB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IQEMAQsgByAGQcuelwFBBhCgMUUNA0ENIQELIAJBOGpBCGoiBCACQShqQQhqKAIANgIAIAJBzABqIANBCGooAgA2AgAgACACKQMoIgg3AgAgACABOgAYIAIgAykCADcCRCAAQQhqIAQpAwA3AgAgAEEQaiACQThqQRBqKQMANwIAIAIgCDcDOCAFQd4ARiEEDAQLIAJBADYCECACQQxqQbSShAEgAkEQakHEnIQBEMIrAAsgAyACKQMoNwIAIANBCGogAkEoakEIaigCADYCAEECIQQMAgsgAyACKQMoNwIAIANBCGogAkEoakEIaigCADYCAEECIQQMAQsgAyACKQMoNwIAIANBCGogBCgCADYCAEECIQQLIAAgBDoAGSACQdAAaiQAC8cHAQl/IwBBsAFrIgIkACABEO0OGiABQdQCQdgCIAEtAOECQQJGG2ooAgAhAwJAAkACQAJAAkAgARDtDiIEDQAgASgC/AEhASACQYCAgIB4NgJYIAEgASACQdgAahD+IiEBDAELIAQtAABBmwFHDQEgAUECOgDhAiABIAEpA9gCNwPQAiABEN8YIQELIABBEzYCACAAIAE2AgQMAQsgAUECOgDhAiABIAEpA9gCNwPQAiACQdgAaiABQQAQ1wYgAigCXCEEAkACQAJAAkAgAigCWCIFQYCAgIB4Rg0AIAJBCGogAkHsAGooAgA2AgAgAiACKQJkNwMAIAIoAmAhBiABEO0OGiABQdQCQdgCIAEtAOECQQJGG2ooAgAhByACQdgAaiABENUCIAIoAlwhCCACKAJYIglBCUYNASACQRBqQcAAaiACQdgAakHAAGopAwA3AwAgAkEQakE4aiACQdgAakE4aikDADcDACACQRBqQTBqIAJB2ABqQTBqKQMANwMAIAJBEGpBKGogAkHYAGpBKGopAwA3AwAgAkEQakEgaiACQdgAakEgaikDADcDACACQRBqQRhqIAJB2ABqQRhqKQMANwMAIAJBEGpBEGogAkHYAGpBEGopAwA3AwAgAiACKQNgNwMYIAIgCDYCFCACIAk2AhACQAJAIAEQ7Q4iCEUNACAILQAAQdYARw0AIAFBAjoA4QIgASABKQPYAjcD0AIgAkHYAGogAUEAENcGIAIoAlwhByACKAJYIgpBgICAgHhGDQEgAkGoAWogAkHoAGopAgA3AwAgAiAC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CyABKQMIENw/IQcgACABKQMQENw/NwMQIAAgBzcDCCAAQRs2AgAMCQsgASkDCBDcPyEHIAAgASkDEBDcPzcDECAAIAc3AwggAEEcNgIADAgLIAErAxAhCSAAIAEpAwgQ3D83AwggACAJOQMQIABBHTYCAAwHCxDrMyEEIAEoAhAiAy0ADCEGIAIgA0EEaigCACADQQhqKAIAEL4jIAQgAikCADcCACACIAY6AAwgBEEIaiACQQhqKQIANwIAIAAgASkDCBDcPzcDCCAAIAQ2AhAgAEEeNgIADAYLIAEpAwgQ3D8hByAAQR82AgAgACAHNwMIDAULIAEpAwgQ3D8hByAAIAEpAxAQ3D83AxAgACAHNwMIIABBIDYCAAwECyAAQSE2AgAMAwsgAEEiNgIADAILIAEpAwgQ3D8hByAAQSM2AgAgACAHNwMIDAELIAFBBGoQrQEhASAAQSQ2AgAgACABNgIECyACQRBqJAAL9AYCCX8CfiMAQfAAayICJAACQAJAAkACQAJAAkAgASgCACIDDgMAAQIACyABQQhqIAAQmzQgACABKAIoEK4zDAILIAAtAJwBIQMgAEEAOgCcAQJAIAEoAjAiBEUNACAAIAQQ0wELIAAgAzoAnAEgACgCAA0CDAMLIAAgASgCBBCuMwsgACgCAEUNASADQQFHDQELIAAgAUEQaiIDEOQGIgRFDQAgASgCMCEFIAFBADYCMAJAAkACQAJAIAUNACAEIQAMAQsQrjIhACACQTBqIAQQPyAAQThqIAJBMGpBOGopAwA3AwAgAEEwaiACQTBqQTBqKQMANwMAIABBKGogAkEwakEoaiIGKQMANwMAIABBIGogAkEwakEgaiIHKQMANwMAIABBGGogAkEwakEYaiIIKQMANwMAIABBEGogAkEwakEQaiIJKQMANwMAIABBCGogAkEwakEIaiIKKQMANwMAIAAgAikDMDcDACACIAAQghYgAigCAEEMRg0BIAYgAkEoaikDADcDACAHIAJBIGopAwA3AwAgCCACQRhqKQMANwMAIAkgAkEQaikDADcDACAKIAJBCGopAwA3AwAgAiACKQMANwMwQQAtAMD/owEaQcAAEIwBIgBFDQIgACACKQMwNwMAIABBADoAPCAAIAU2AjggAEIANwMwIABBKGogAkEwakEoaikDADcDACAAQSBqIAJB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EP8CIAAoAgggARDSBSAAKAIUIgANDQwJCyAAKAIQIAEQ/wIgACgCDCICRQ0IIAAoAggiAyACQRhsaiEEA0ACQCADKAIUIgBFDQAgACABEP8CCwJAIANBCGooAgAiAkUNACADQQRqKAIAIQAgAkEwbCECA0AgACABENIFIABBMGohACACQVBqIgINAAsLIANBGGoiAyAERg0JDAALCyAAKAIEIAEQ/wIMBwsgAEEIaiABEJQDDwsgACgCCCECAkACQAJAAkAgACgCBA4DAAECAAsgAiABEPAjDAILIAIgARDxIwwBCyACIAEQjQoLIAAoAgwgARD/AiAAQRBqKAIAIQAMCQsgACgCCCECAkACQAJAAkAgACgCBA4DAAECAAsgAiABEPAjDAILIAIgARDxIwwBCyACIAEQjQoLIAAoAgwgARD/AiAAQRBqKAIAIQAMCAsCQCAAKAIEIgJBAkYNACAAKAIIIQMCQCACQQFxDQAgAyABEPAjDAELIAMgARD/AgsCQCAAKAIYIgJFDQAgAiABEP8CCyAAQQxqIQIgACgCHCIARQ0GIAAgARD/AiACKAIAIQAMBwsgACgCBCABEP8CDAQLIAAoAgQgARD/AgwDCwJAIAAoAgQiA0HQAGooAgAiAkUNACADQcwAaigCACEAIAJBMGwhAgNAIAAgARDSBSAAQTBqIQAgAkFQaiICDQALCwJAAkACQCADKAIAQXlqDgIBAgALIAMgARCNCgsgA0EwaigCACICRQ0AIANBLGooAgAhACACQTBsIQIDQCAAIAEQ0gUgAEEwaiEAIAJBUGoiAg0ACwsgAygCYEGAgICAeEYNACADQegAaigCACICRQ0AIANB5ABqKAIAIQAgAkEwbCECA0AgACABENIFIABBMGohACACQVBqIgINAAsLDwsgACgCBCABEP8CDwsgAEEIaiECCyACKAIAIQAMAAsLgQcBA38DQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADhMADg4BAgMODgQFDw0MCwoJCAcGAAsgACgCDCICRQ0NIAAoAgghACACQTBsIQIDQCAAIAEQ0wUgAEEwaiEAIAJBUGoiAg0ADA4LCyABIAAoAgQQ6gIMDgsgACgCDCIARQ0LIAEgABDqAg8LIABBKGooAgAhAAwOCyABIAAoAgQQ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AgA2AgAgAyADKQMgNwNAIAMgAykDMDcCTCADQQg2AlwgACABKAIEIAggA0HAAGogA0HcAGoQvRkMBAsgA0HUAGogBEEIaigCADYCACADQcAAakEIaiADQRBqQQhqKAIANgIAIAMgAykDEDcDQCADIAQpAgA3AkwgA0EKNgJcIAAgASgCBCAHIANBwABqIANB3ABqEL0ZDAMLIANBADYCXCADQTxqQbyahAEgA0HcAGpBwJqEARDCKwALIANB1ABqIARBCGooAgA2AgAgA0HAAGpBCGogA0EQakEIaigCADYCACADIAMpAxA3A0AgAyAEKQIANwJMIANBBzYCXCAAIAEoAgQgCCADQcAAaiADQdwAahC9GQwBCyADQfgAakEIaiIBIANBIGpBCGooAgA2AgAgA0GMAWogBEEIaigCADYCACAAIAY2AgQgACADKQMgIgo3AgggACACOgAhIABBBToAICADIAQpAgA3AoQBIABBEGogASkDADcCACAAQRhqIANB+ABqQRBqKQMANwIAIAMgCjcDeCAAQSI2AgALIAUgBSgCAEEBajYCACADQZABaiQAC94GAQt/IwBBwABrIgMkACADIAIoAiAiBDYCECACLQA8IQUgAi0APiEGIAIoAjAhByADQSBqIAJBLGooAgA2AgAgAyACKQIkNwMYIAItAD8hCCACLQBAIQkgAi0APSEKIAMgAi0AQSILOgAWIAMgAi0AQiIMOgAXIAEgASgCzAIiDUH//+/vA3FBgICAEHIQ4Q8gAyADQRdqNgIsIAMgA0EWajYCKCADIANBEGo2AiQgA0EIaiABIANBGGogBCALIAwQqQIgAygCDCEEAkACQAJAAkAgAygCCA0AIAEgDRCgPgJAAkAgCg4DBAABBAsgAS0A1AJBAkcNAyABLQDeAkH/AXENAwwCCyABLQDUAkECRw0CIAEtAN4CQf8BcUUNAQwCCyAAQQ02AgAgACAENgIEIAEgDRCgPiACEL8yDAILIAMgAhCILSADKAIEIQsgAygCACEMIANBgIGAgHg2AhggASAMIAsgA0EYahCIKgsCQCACKAIAQQVHDQAgAygCECILIAEoAlQiDCALIAxJGyENIAsgDCALIAxLGyEMIAJBCGohCyACKAIUIQICQCAFQf8BcUEDRg0AIANBtYGAgHg2AhggASANIAIgDSACSRsg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akEQaikDADcDACACIAIpA0A3AxggAiAENgIUIAIgBTYCEAJAAkAgARDtDiIERQ0AIAQtAABBF0YNAQsgACACKQMQNwMAIABBIGogBikDADcDACAAQRhqIAcpAwA3AwAgAEEQaiAIKQMANwMAIABBCGogAkEQakEIaikDADcDAAwHCyABQQI6AOECIAEgASkD2AI3A9ACAkAgASgCkAIiBEECcUUNACABKAKEAiIFKAIIIgZB/v///wdLDQMgBSgCFEUNACAGDQQgBUF/NgIIIAEoAoACIgYoAggNBSAGQX82AgggBSgCECEIIAZBDGogBSgCFCIHEKEwIAYoAhAgBigCFEECdGogCCAHQQJ0EN8KGiAGIAcgBigCFGo2AhQgBUEANgIUIAYgBigCCEEBajYCCCAFIAUoAghBAWo2AggLIAEgBEHAAHI2ApACIAJBCGogARCXBiACKAIMIQUgAigCCA0BIAEgBBDcEQJAIAEtAJECQcAAcUUNACABKALUAiEEIAJBqYGAgHg2AjggASADIAQgAyAESRsgAyAEIAMgBEsbIAJBOGoQlioLQQAtAMD/owEaIAEoAtQCIQRBKBCMASIBRQ0FIAEgAikDEDcDACAAIAU2AgggACABNgIEIABBBDYCACABQSBqIAJBEGpBIGopAwA3AwAgAUEYaiACQRBqQRhqKQMANwMAIAFBEGogAkEQakEQaikDADcDACABQQhqIAJBEGpBCGopAwA3AwAgACADIAQgAyAESxs2AhAgACADIAQgAyAESRs2AgwMBgsgAEEHNgIAIAAgBDYCBAwFCyAAQQc2AgAgACAFNgIEIAEgBBDcESACQRBqEOMNDAQLQZyEmwEQ6iIAC0GMhJsBEOkiAAtB/IObARDpIgsACyACQeAAaiQAC8oGAQt/IwBBwABrIgIkAAJAAkAgAC0A/wEiA0H/AUYNACACQQA2AjhBASEEIAJBATYCLCACQZSrgAE2AiggAkIENwIwIAEoAhQiBSABKAIYIgYgAkEoahCKNQ0BIANBAWohByACQQ1qIQMgAkESaiEIQQAhCQNAAkAgCSAHRw0AIAJBADYCOCACQQE2AiwgAkGA1ZkBNgIoIAJCBDcCMCAFIAYgAkEoahCKNSEEDAMLIAIgCToABwJAIAlFDQAgAkEANgI4QQEhBCACQQE2AiwgAkGcq4ABNgIoIAJCBDcCMCAFIAYgAkEoahCKNQ0DCyACQQI2AiwgAkG0poMBNgIoIAJCATcCNCACQRk2AhwgAiACQRhqNgIwIAIgAkEHajYCGEEBIQQgBSAGIAJBKGoQijUNAiAJQQFqIQkgAi0AByEBIAJBgID8BzYADSACIAE6AAwgAiAANgIIA0AgAiADEPAeAkACQAJAIAItAABFDQAgAi0ADCACKAIIIAItAAEiAUH/AXEiCmotAABHDQMgASELAkAgAi8BECAILQAAQRB0ciIMQQFxRQ0AIAxBCHYhCyAMQRB2IgxBAWogCkcNAgsgAiABOgASIAIgCzoAESACQQE6ABAMAwsgAi8BECEBIAJBADoAEAJAIAEgCC0AACIMQRB0ciIBQQFxRQ0AIAFBCHYhCwwCCyACQQA2AjhBASEEIAJBATYCLCACQZDVmQE2AiggAkIENwIwIAUgBiACQShqEIo1RQ0DDAULIAIgAToAEiACIAE6ABEgAkEBOgAQCyACIAs6ABYgAiAMOgAXAkAgC0H/AXEgDEYNACACQQI2AiwgAkHEpoMBNgIoIAJCAjcCNCACQRk2AiQgAkEZNgIcIAIgAkEYajYCMCACIAJBF2o2AiAgAiACQRZqNgIYIAUgBiACQShqEIo1RQ0BDAQLIAJBATYCLCACQaTXoQE2AiggAkIBNwI0IAJBGTYCHCACIAJBGGo2AjAgAiACQRZqNgIYIAUgBiACQShqEIo1RQ0ADAMLCwsgAkEANgI4IAJBATYCLCACQcirgAE2AiggAkIENwIwIAEoAhQgASgCGCACQShqEIo1IQQLIAJBwABqJAAgBAvMBgIFfwF+IwBBkAFrIgEkAAJAAkACQAJAAkACQCAAKAIADggFBQUFAAECAwULIAAoAgwiAigCACACQQxqKAIAEKYyRQ0EDAMLIAAoAgQiAigCACACQQxqKAIAEKYyRQ0DDAILIAAoAgwNAQwCCyAAKAIMRQ0BC0EcQQQQ4TEhAhCnIiEDIABBGGoiBCgCACEFIAQgAzYCACAAKQIAIQYgAEEANgIAIAIgBjcCACACQQhqIABBCGopAgA3AgAgAkEQaiAAQRBqKQIANwIAIAJBGGogBTYCAEEBIQAgAUEBNgIUIAEgAjYCECABQQE2AgwgAUHUAGpBBGohAgNAAkACQAJAAkACQAJAIABFDQAgASAAQX9qIgA2AhQgAUE4akEIaiIDIAEoAhAgAEEcbGoiAEEMaikCADcDACABQThqQRBqIgQgAEEUaikCADcDACABIAApAgQ3AzggACgCACIAQQhGDQAgAiABKQM4NwIAIAJBCGogAykDADcCACACQRBqIAQpAwA3AgAgASAANgJUIAAOCAUFBQUBAgMEBQsgAUEMahCXNwwGCyABKAJgIQAQpyIhAyABQfAAakEYaiAAQRhqIgQoAgA2AgAgAUHwAGpBEGogAEEQaikCADcDACABQfAAakEIaiAAQQhqKQIANwMAIAQgAzYCACAAKQIAIQYgAEEANgIAIAEgBjcDcCABQQxqIAFB8ABqELEbDAMLIAEoAlghABCnIiEDIAFB8ABqQRhqIABBGGoiBCgCADYCACABQfAAakEQaiAAQRBqKQIANwMAIAFB8ABqQQhqIABBCGopAgA3AwAgBCADNgIAIAApAgAhBiAAQQA2AgAgASAGNwNwIAFBDGogAUHwAGoQsRsMAgsgASgCYCEAIAFBADYCYCABQQA2AoABIAEgADYCfCABIAI2AnggASABKAJcIgM2AnAgASADIABBHGxqNgJ0IAFBDGogAUHwAGoQ2gsMAQsgASgCYCEAIAFBADYCYCABQQA2AoABIAEgADYCfCABIAI2AnggASABKAJcIgM2AnAgASADIABBHGxqNgJ0IAFBDGogAUHwAGoQ2gsLIAFB1ABqEJE3IAEoAhQhAAwACwsgAUGQAWokAAvXBgIFfwF+IwBB4AFrIgIkACACQTBqIAEoAgAiA0HYAGooAgAiBDYCACACQSRqIAQ2AgBBACEEIAJBADYCGCACQoCAgIDAADcCECACIAMpAlAiBzcCKCACIAc3AhwgA0HQAGohBSACQShqIQYCQAJAAkACQAJAA0ACQAJAIAEQwxRBOkYNACABEMMUQSlHDQELIARBAUcNAyACQQw2AogBIAAgASgCBCABKAIIIAJBNGogAkGIAWoQvRkMBQsCQAJAIAEQwxRBLUYNACACQcgBaiABEKERIAJBiAFqIAEQ0Q8gAi0AjAEhBCACKAKIASIDQSJHDQMgAkHoAGpBCGogAkHIAWpBCGopAgA3AwAgAkHoAGpBEGogAkHIAWpBEGopAgA3AwAgAiACKQLIATcDaCACIAQ6AIABIAJBCGogAkEQaiACQegAahDBDUEAIQQgAigCCEEBRw0BIAIoAgwhBCACQcgBaiABEKERIAJBnAFqIAIoAhQgAigCGCAEQYiXhAEQ/TAiBEEQaikCADcCACACQZQBaiAEQQhqKQIANwIAIAJBDTYCiAEgAiAEKQIANwKMASAAIAEoAgQgASgCCCACQcgBaiACQYgBahC9GQwGCyACQTRqIAEQoREgAkHMAGogARChESACQQc6AGQgAiACQRBqIAJBzABqEMENQQEhBCACKAIAQQFGDQQLIAEQ7Q0NAAsgAkHcAWogBUEIaigCACIENgIAIAJByAFqQQhqIAQ2AgAgAiAFKQIAIgc3AtQBIAIgBzcDyAEgAkEPNgKIASAAIAEoAgQgASgCCCACQcgBaiACQYgBahC9GQwDCyAAQQVqIAJBiAFqQQVqQTsQ3woaIAAgBDoABCAAIAM2AgAMAgsgBiAFKQIANwIAIAZBCGogBUEIaigCADYCACAAQQRqIAJBEGpBJBDfChogAEEiNgIADAILIAIoAgQhBCACQcgBaiABEKERIAJBnAFqIAIoAhQgAigCGCAEQfiWhAEQ/TAiBEEQaikCADcCACACQZQBaiAEQQhqKQIANwIAIAJBDjYCiAEgAiAEKQIANwKMASAAIAEoAgQgASgCCCACQcgBaiACQYgBahC9GQsgAigCECACKAIUEI06CyACQeABaiQAC80GAgR/AX4jAEEQayIBJAACQAJAAkACQAJAAkACQCAAKAIAQXtqIgJBBCACQQZJGw4FAQIDBAUACyAAQQhqEJsPIAAoAigiA0EEaigCACEAAkAgAygCCCICRQ0AA0AgABCoCiAAQcAAaiEAIAJBf2oiAg0ACyADQQRqKAIAIQALIAMoAgAgABDdMyADQRBqKAIAIQACQCADKAIUIgJFDQADQCAAKAIAIgQQqgEgBEHAAEEIEO4cIABBDGohACACQX9qIgINAAsgA0EQaigCACEACyADKAIMIAAQ3DMCQCADKAIYIgRBgICAgHhGDQAgA0EcaigCACEAAkAgAygCICICRQ0AA0AgABC4AyAAQTBqIQAgAkF/aiICDQALIANBHGooAgAhACADKAIYIQQLIAQgABDeMwsCQCADKAI8IgBFDQAgABDYESAAKAIAIABBBGooAgAQ3jMgAEEUQQQQ7hwLAkAgAygCQCIARQ0AIAAo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ARCxFiACQcAAahDFNQ0AIAJBwABqEOIQIAIgARD7ICACKAIEIQMgAigCACEEIAJBHGogARDfGiACQegAakEQaiAGNwMAIAJB6ABqQQhqIAc3AwAgAkEBNgJEIAJBpNehATYCQCACQgE3AkwgAkGiAjYCYCACIAg3A2ggAiACQdwAajYCSCACIAJB5ABqNgJcIAIgAkHoAGo2AmQgAkEoaiACQcAAahCZFiACQegAahDiECACQTxqIAJBHGpBCGooAgA2AgAgAiACKQIcNwI0IAQgAyACQShqEP4iIQMCQCABELEWIgRFDQAgBCgCAEEkRw0AIAEgASkDGDcDUCABKAIAIQQgAUElNgIAIARBJEcNAiABIAEoAgQQ4xMLIABBAjYCACAAIAM2AgQgAkEQahDkNAwCCyABIAEpAxg3A1AgASgCACEFIAFBJTYCACACQfQAaiABQQRqIgRBCGopAgA3AgAgAkH8AGogBEEQaigCADYCACACIAQpAgA3AmwgAiAFNgJoIAJB6ABqEOIQIAJBwABqEOIQIAAgAikCEDcCACAAQQhqIAJBEGpBCGooAgA2AgAgACADIAEoAlQiASADIAFLGzYCECAAIAMgASADIAFJGzYCDAwBC0GUzqEBQShB2OGZARDTJwALIAJBgAFqJAALnwYBA38jAEGgAWsiAyQAAkACQAJAAkACQCABEO0OIgRFDQAgBC0AAEE+Rg0BCyADQThqIAEQkAUgAygCOCEEIAMtAGQiBUEGRg0BIANBCGpBJGogA0E4akEkaikCADcCACADQQhqQRxqIANBOGpBHGopAgA3AgAgA0EIakEUaiADQThqQRRqKQIANwIAIANBCGpBDGogA0E4akEMaikCADcCACADQQhqQS9qIANBOGpBL2otAAA6AAAgAyADKQI8NwIMIAMgAy8AZTsANSADIAU6ADQgAyAENgIIAkAgARDtDiIERQ0AIAQtAABBPkYNAwsgAUHUAmogAUHcAmogAS0A4QJBAkYiBBsoAgAhAiABQdACaiABQdgCaiAEGygCACEEIANB7ABqIAEQygsgA0EBNgI8IANBpNehATYCOCADQgE3AkQgA0HoBDYClAEgA0E+OgCfASADIANBkAFqNgJAIAMgA0GYAWo2ApABIAMgA0GfAWo2ApgBIANB+ABqIANBOGoQkQogA0H4AGpB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AgA3AwAgACAENgIMIAUgCD4CACABIAApAgA3AxAgABCBBiEEIAUgAikDADcCACAAIAEpAxA3AgAgBEH/AXEhBQwFC0EAIQUgACgCECICRQ0CIAJB+K6XAUEQEN8FDQEMAgsgAkUNASACQYivlwFBGRDfBUUNAQtBAiEFDAILIAAgBToABCAAQQA2AgALQQAhBQsgAUEgaiQAIAUL1QYCCH8DfiMAQeAAayICJAAgARDtDhogAUHUAkHYAiABLQDhAkECRhtqKAIAIQMCQAJAAkAgARDtDiIEDQAgASgC/AEhASACQYCAgIB4NgJAIAEgASACQcAAahD+IiEBDAELAkACQAJAAkACQAJAAkACQAJAIAQtAAAiBUGbAUYNACACIAQ2AjwgBUFBag4nAwQGBQUFBQUFBQUFBQUFBQUFBQUFBQIFBQUFBQUFBQUBBQUFBQUCBQsgAUECOgDhAiABIAEpA9gCNwPQAiABEN8YIQEMCAtBAiEEIAFBAjoA4QIgASABKALcAiIFNgLUAiABIAEoAtgCNgLQAiADIAUgAyAFSRshBiADIAUgAyAFSxshB0IAIQoMBgsgAUECOgDhAiABIAEoAtwCIgQ2AtQCIAEgASgC2AI2AtACIAMgBCADIARJGyEGIAMgBCADIARLGyEHIAVB5QBGIQNCACEKQQEhBAwFCyABQQI6AOECIAEgASkD2AI3A9ACIAJBCGogARDcFyADIAEoAtQCIgEgAyABSRshBSADIAEgAyABSxshCCACKQMQIgtCgICAgHCDIQogAikDCCIMQiiIpyEBIAxCIIinIQMgC6chCSAMpyEHQQAhBAwDCyABQQI6AOECIAEgASkD2AI3A9ACIAJBGGogARDbFyADIAEoAtQCIgEgAyABSRshByACKQMgIgxCgICAgHCDIQogAyABIAMgAUsbIgNBCHYhASACKQMYIgtCIIinIQggDKchCSALpyEFQQMhBAwCCyACQQE2AkQgAkHkvpoBNgJAIAJCATcCTCACQegENgJcIAIgAkHYAGo2AkggAiACQTxqNgJYIAJBwABqQey+mgEQrS4ACyABQQI6AOECIAEgASkD2AI3A9ACIAJBKGogARDdFyADIAEoAtQCIgEgAyABSRshByADIAEgAyABSxsiA0EIdiEBIAIpAzAiCkIgiKchCCAKpyEFQgAhCkEE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4aIBai0AADoADSADIAFBEHZBD3FBiOGiAWotAAA6AAwgA0EIaiABQQFyZ0ECdiICaiIEQfsAOgAAIARBf2pB9QA6AAAgA0EIaiACQX5qIgJqQdwAOgAAIANBCGpBCGoiBCABQQ9xQYjhogFqLQAAOgAAIABBCjoACyAAIAI6AAogACADKQIINwIAIANB/QA6ABEgAEEIaiAELwEAOwEADAkLIABBgAQ7AQogAEIANwECIABB3OgBOwEADAgLIABBgAQ7AQogAEIANwECIABB3OQBOwEADAcLIABBgAQ7AQogAEIANwECIABB3NwBOwEADAYLIABBgAQ7AQogAEIANwECIABB3LgBOwEADAULIABBgAQ7AQogAEIANwECIABB3OAAOwEADAQLIAJBgAJxRQ0BIABBgAQ7AQogAEIANwECIABB3M4AOwEADAMLIAJBgIAEcQ0BCwJAIAEQlBANACADQQA6ABYgA0EAOwEUIAMgAUEUdkGI4aIBai0AADoAFyADIAFBBHZBD3FBiOGiAWotAAA6ABsgAyABQQh2QQ9xQYjhogFqLQAAOgAaIAMgAUEMdkEPcUGI4aIBai0AADoAGSADIAFBEHZBD3FBiOGiAWotAAA6ABggA0EUaiABQQFyZ0ECdiICaiIEQfsAOgAAIARBf2pB9QA6AAAgA0EUaiACQX5qIgJqQdwAOgAAIANBFGpBCGoiBCABQQ9xQYjhogFqLQAAOgAAIABBCjoACyAAIAI6AAogACADKQIUNwIAIANB/QA6AB0gAEEIaiAELwEAOwEADAILIAAgATYCBCAAQYABOgAADAELIABBgAQ7AQogAEIANwECIABB3MQAOwEACyADQSBqJAALpgYCC38BfiMAQcAAayICJAAgASgC5AEiAyADKAIAQQFqIgQ2AgACQAJAAkAgBEUNACABKALQASEFIAJBIGogA0EIahDJLiACKAIkIQZBACEHIAIoAiAiCEEANgIIIAFBwAFqIQlBASEKQQEhCwNAIAJBGGogASgCwAEiBCABKALEASIMEOQtAkACQAJAAkACQAJAAkACQCACLQAYRQ0AIAItABkhBCAKQQFxDQEMAgsgBCAMEOItIgRBgIDEAEYNBSAEEMcoDQMgC0EBcUUNBSAEEI8oDQIMBQsgBEGlf2pB/wFxQeYBSSAEQUZqQf8BcUH2AUlxIApxIQoLIAQQlC4NASALQQFxRQ0CIAQQlS5FDQILIAkQpSNBACELDAQLIAkQpSMMAwsgBEH/AXFB3ABHDQAgASgC0AEhDCAJEKUjAkACQCABKALEASABKALAASIERg0AIAQtAABB9QBGDQELIAJBnICAgHg2AiggDCAMIAJBKGoQxDshBAwFCyABKALQASEEIAJBCGogCSAFIAwQyiMgCCACKAIIIAIoAgwQ+C4gCSAEEMguIAJBKGogARCyByACKAIsIQQgAigCKCILQYCAgIB4Rg0EIAIoAjAiBUUNASAEKAIAEI4xDQEgAkGWgICAeDYCKCABIAwgAkEoahDfNAwBCyACQRBqIAkgBSABKALQARDKIyACKAIUIQQgAigCECELAkACQCAHQQFxDQBBAiEMQQAhCSABKALoAUEIaiALIAQQ5SohDQwBCyAIIAsgBBD4LkECIQxBACEJIAEoAugBQQhqIAgoAgQgCCgCCBDlKiENCwwECyACIAs2AjAgAiAENgIsIAIgBDYCKCACIAQgBUECdGoiDDYCNAJAA0AgBCAMRg0BIAIgBEEEajYCLCAIIAQoAgAQ2wsgAigCLCEEIAIoAjQhDAwACwsgAkEoahC4OiABKALQASEFQQEhB0EAIQsMAAsLAAtBJSEMQQEhCQsgBiAGKAIAQQFqNgIAIAMQqCcCQCAJDQAgACANNwMQIABBAToACAsgACAMNgIAIAAgBDYCBCACQcAAaiQAC8gGAgt/An4jAEHQAGsiAiQAIAEoAtABIQMCQAJAAkACQCABKALAASABKALEARDiLSIEQYCAxABGDQAgAUHAAWoiBRClIyABKALkASIGIAYoAgBBAWoiBzYCACAHRQ0BIAEoAtABIQggAkEwaiAGQQhqEMkuIAIoAjQhCSACKAIwIgpBADYCCEEAIQsCQANAIAJBKGogASgCwAEiByABKALEASIMEOQtAkACQAJAAkACQAJAIAItAChFDQAgAi0AKUH/AXEiByAEQf8BcUcNASACQQhqIAUgCCABKALQARDKIyACKAIMIQcgAigCCCEMIAtBAXENAiABKALoAUEIaiAMIAcQ5SohDQwDCyAHIAwQ4i0iB0F2ag4ECQQECQMLAkAgB0HcAEYNACAHQXZqDgQJBAQJBAsgAkEQaiAFIAggASgC0AEQyiMgCiACKAIQIAIo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ACAIEKUIDAILAAsgACgCDEUNASABKQMAEJgwIQggACgCACIDQXhqIQQgCEIZiEKBgoSIkKDAgAF+IQkgACgCBCIFIAincSEGQQAhBwNAAkAgAyAGaikAACIKIAmFIghCf4UgCEL//fv379+//358g0KAgYKEiJCgwIB/gyIIUA0AA0AgASAEIAh6p0EDdiAGaiAFcUEDdGsQtxINAyAIQn98IAiDIghQRQ0ACwsgCiAKQgGGg0KAgYKEiJCgwIB/g1BFDQIgBiAHQQhqIgdqIAVxIQYMAAsLIAAoAiAgASAALQAkEMoUCyACQRBqJAAL4gYBCH8jAEGgAWsiAyQAAkACQCABQby1gwFBDyACKAIMIgQRCwANAAJAIAAoAsgCIgVFDQAgACgCxAIhBiAFQRRsIQcgACgCrAIhCCAAKAKoAiEJQQAhCgNAAkAgBSAKRw0AQci8gwEQ/TkACyADIAY2AgQCQAJAIAkgCkYNAAJAIAggCkYNACADQSA2AoABDAILIANBPjYCgAEMAQsgA0HeADYCgAELIANByQE2ApgBIANB8AA2ApABIANBwgA2AogBIAMgCjYCnAEgAyADQQRqNgKUASADIANBnAFqNgKMASADIANBgAFqNgKEASADQQM6AHwgA0EANgJ4IANCoICAgCA3AnAgA0KCgICA4AA3AmggA0ECNgJgIANBAzoAXCADQQg2AlggA0KggICAEDcCUCADQoCAgIDgADcCSCADQQI2AkAgA0EDOgA8IANBADYCOCADQiA3AjAgA0KCgICA4AA3AiggA0ECNgIgIANBAzYCHCADQQQ2AgwgA0GgtoMBNgIIIAMgA0EgajYCGCADQQM2AhQgAyADQYQBajYCECABIAIgA0EIahCdBw0CIAZBFGohBiAKQQFqIQogB0FsaiIHDQALCwJAIAAoAtQCIgVBAU0NAEEBIQogAUGki6EBQQEgBBELAA0CIAAoAtACIQpBACEGA0AgAyAGNgKAASAKKAIAIQcgA0HwADYCFCADQfAANgIMIAMgBzYCnAEgA0ECNgKYASADQQM2AogBIANBiLaDATYChAEgAyADQZwBajYCECADIANBgAFqNgIIIANBAzoAXCADQQA2AlggA0KggICAEDcCUCADQoKAgIDgADcCSCADQQI2AkAgA0EDOgA8IANBCDYCOCADQiA3AjAgA0KAgICA4AA3AiggA0ECNgIgIAMgA0EgajYClAEgA0ECNgKQASADIANBCGo2AowBIAEgAiADQYQBahCdBw0CIApBBGohCiAFIAZBAWoiBkcNAAsLIAFBpIuhAUEBIAQRCwANACADQQI2AiQgA0HstYMBNgIgIANCATcCLCADQcoBNgKIASADIABBCGo2AoQBIAMgA0GEAWo2AihBASEKIAEgAiADQSBqEJ0HDQEgAUH8tYMBQQIgBBELACEKDAELQQEhCgsgA0GgAWokACAKC/kFAQN/AkACQAJAAkACQAJAAkACQAJAIAAoAgAOCAcAAQIDBAUGBwsgAEIANwMQIAAoAiAgARDRDQ8LIAAoAgQiAEIANwIMIAAoAggiAkUNBiAAKAIEIQAgAkE4bCECA0AgAEIANwIoIAAgARCsCQJAIAAoAjAiA0UNACADIAEQjAILIABBOGohACACQUhqIgINAAwHCwsgACgCBCIAQgA3AgwgACgCCCICRQ0FIAAoAgQhACACQThsIQIDQCAAQgA3AiggACABEKwJAkAgACgCMCIDRQ0AIAMgARCMAgsgAEE4aiEAIAJBSGoiAg0ADAYLCyAAKAIEIAEQ/AsPCyAAKAIEIgRCADcDECAEQgA3AwACQCAEKAIgIgBFDQAgAEIANwIMIABBCGooAgAiAkUNACAAQQRqKAIAIgAgAkEwbGohAwNAIABCADcCECAAQgA3AgACQCAAQSBqKAIAIgJFDQAgASACEMUCCwJAIABBJGooAgAiAkUNACABIAIQxQILIABBMGoiACADRw0ACwsgASAEKAIkEMUCDwsgACgCBCIAQgA3AxggAEIANwMIIAAoAigiAkUNAiACQTBsIQIgACgCJEEoaiEAA0AgAEFoakIANwIAIABBeGpCADcCAAJAIAAoAgAiA0UNACADIAEQjAILIABBMGohACACQVBqIgINAAwDCwsgACgCBCIAQgA3A0ggAEIANwMQIAAtAEUiAkEDRg0BAkAgAkECRw0AIABCADcCLCAAKAIoIgJFDQIgACgCJCEAIAJBOGwhAgNAIAAgARDIBiAAQThqIQAgAkFIaiICDQAMAwsLIABCADcDMCAAQgA3AyACQCAAKAJAIgAtACVBAkYNAANAIABCADcDECAAQgA3AwAgACgCICIALQAlQQJHDQALCyAAQgA3AgwgACgCCCICRQ0BIAAoAgQhACACQThsIQIDQCAAIAEQyAYgAEE4aiEAIAJBSGoiAg0ADAILCyAAQgA3AxAgACgCICABEOQDCwvxBQMJfwJ+AXwjAEHAAGsiAiQAAkACQAJAAkACQAJAAkACQCABKAIAIgMOBQABAgQDAAsgASgCFCEEIAEoAhAhBQJAIAEpAwgiC0IDg0IAUg0AIAunIgEgASgCACIBQQFqNgIAIAFBf0wNBgsgACAENgIUIAAgBTYCECAAIAs3AwgMBAsgASgCFCEEIAEoAhAhBQJAIAEpAwgiDEIDg0IAUg0AIAynIgYgBigCACIGQQFqNgIAIAZBf0wNBQsCQCABKQMYIgtQDQAgC0IDg1BFDQAgC6ciASABKAIAIgFBAWo2AgAgAUF/TA0FCyAAIAs3AxggACAENgIUIAAgBTYCECAAIAw3AwgMAwsgASsDECENIAEoAgwhBCABKAIIIQUCQCABKQMYIgtQDQAgC0IDg1BFDQAgC6ciASABKAIAIgFBAWo2AgAgAUF/TA0ECyAAIAs3AxggACANOQMQIAAgBDYCDCAAIAU2AggMAgsgASgCDCEHIAEoAgghCCABKAIYIQUQrzIhBCAFKAIEIQkgBS0ADCEKIAIgBSgCCCIFQQRBBBDhEyACKAIEIQYgAigCAEEBRg0DIAIoAgggCSAFQQJ0EN8KIQkgBCAKOgAMIAQgBTYCCCAEIAk2AgQgBCAGNgIAAkAgASkDECILUA0AIAtCA4NQRQ0AIAunIgEgASgCACIBQQFqNgIAIAFBf0wNAwsgACAENgIYIAAgCzcDECAAIAc2AgwgACAINgIIDAELIAEpAwghCyABKAIEIQQQrjIhASACIAQQPyABQThqIAJBOGopAwA3AwAgAUEwaiACQTBqKQMANwMAIAFBKGogAkEoaikDADcDACABQSBqIAJBIGopAwA3AwAgAUEYaiACQRhqKQMANwMAIAFBEGogAkEQaikDADcDACABQQhqIAJBCGopAwA3AwAgASACKQMANwMAIAAgCzcDCCAAIAE2AgQLIAAgAzYCACACQcAAaiQADwsACyAGIAIoAggQ+DkAC+wFAhJ/AX4jAEGAAWsiASQAELcyIQIgAUEIaiAAEMcLIAFBFGogAEEMahChC0GAgICAeCEDIAAoAjghBCAAKAI0IQUgACgCMCEGAkACQAJAIAAoAhhBgICAgHhHDQAMAQsgACgCHCEHIAAoAiwhCCAAKAIoIQkgACgCJCEKIAFBIGogACgCICILQQhBMBDhEyABKAIkIQMgASgCIEEBRg0BIAEoAighDAJAIAMNAEEAIQMMAQsgC0EwbCENQQAhDiADIQ8DQCANIA5GDQEgAUEgaiAHIA5qEFAgDCAOaiIQQShqIAFBIGpBKGopAwA3AwAgEEEgaiABQSBqQSBqKQMANwMAIBBBGGogAUEgakEYaikDADcDACAQQRBqIAFBIGpBEGopAwA3AwAgEEEIaiABQSBqQQhqKQMANwMAIBAgASkDIDcDACAOQTBqIQ4gD0F/aiIPDQALCyAALQBFIQcgAC0ARCENQQAhDkEAIRACQCAAKAI8Ig9FDQAQsTIhECAPKAIMIREgDygCECESIAFBIGogDxD8CCAQQRBqIBI2AgAgECABKQIgNwIAIAEgETYCLCAQQQhqIAFBIGpBCGopAgA3AgALAkAgACgCQCIARQ0AEKsyIQ4gACkCBCETIAAoAgAhABCsMiEPIAFBIGogABCGASAPIAFBIGpB4AAQ3wohACAOIBM3AgQgDiAANgIACyABQSBqQQhqIgAgAUEIakEIaigCADYCACABQTRqIAFBFGpBCGooAgA2AgAgASABKQIIIhM3AyAgASABKQIUNwIsIAJBEGogAUEgakEQaikDADcCACACQQhqIAApAwA3AgAgAiATNwIAIAIgBzoARSACIA06AEQgAiAONgJAIAIgEDYCPCACIAQ2AjggAiAFNgI0IAIgBjYCMCACIAg2AiwgAiAJNgIoIAIgCjYCJCACIAs2AiAgAiAMNgIcIAIgAzYCGCABQYABaiQAIAIPCyADIAEoAigQ+DkAC5EGAQp/IwBBgAFrIgMkAAJAQQAoAujOowFBAkYNACADQaDOowE2AhwgA0GgzqMBNgJsIAMgA0H4AGo2AjAgAyADQewAajYCLCADIANBHGo2AihB6M6jASADQShqQbCpmQEQnAgLIANCATcCKAJAAkACQEEAKALgzqMBIgQgAksNACADQRBqQaDOowEgA0EoaiABIAJBACgC3M6jASAEQQAoAtDOowERFQAgAygCEEEBcUUNACADQQA2AiQgA0KAgICAEDcCHCADQShqIAEgAkGgopkBQQIQ9gIgA0EwaiEF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ygAQtgUCQCAELQAYQQRGDQAgBCkDGCIIQv8Bg0IEUg0FCyAEQRhqIAEgBEEMakG84qIBQQEQzxEgBC0AGEEERg0FIAQpAxgiCEL/AYNCBFENBSAAIAg3AgAMBgsgACAINwIADAULIAAgCDcCAAwECyAAIAg3AgAMAwsgACAINwIADAILIAAgCDcCAAwBCwJAIAMNACABKAJERQ0AIARBGGogASAFQQEQmgUgBC0AGEEERg0AIAQpAxgiCEL/AYNCBFENACAAIAg3AgAMAQsgAEEEOgAACyAEQSBqJAALlwYCCn8BfiMAQaABayICJAACQAJAAkAgASgCACIDIAEoAgRGDQAgASADQRhqNgIAAkAgASgCECIEIAEoAhRGDQAgASAEQQpqNgIQIAQtAAAiBUECRg0AIAJB8ABqIARBCWotAAA6AAAgAiAEKQABNwNoDAILIAEgASgCDCIGNgIUIAEgASgCCCIENgIQIAQgBkYNACABIARBCmo2AhAgAkHwAGogBEEJai0AADoAACACIAQpAAE3A2ggBC0AACIFQQJHDQELIABBgYCAgHg2AgAMAQsgAkEQakEIaiIHIAJB6ABqQQhqLQAAOgAAIAIgAikDaDcDECACQQhqIAMQpjEgAkEcaiACKAIIIAIoAgwQ9jJBgICAgHghBCADKAIQIQggAygCDCEJAkACQCACKAIcIgpBgICAgHhHDQAMAQsgAigCICELIAIoAiQhASACQQE7AUwgAiABNgJIQQAhBCACQQA2AkQgAkEBOgBAIAJBCjYCPCACIAE2AjggAkEANgI0IAIgATYCMCACIAs2AiwgAkEKNgIoIAJB3ABqIAJBKGoQywkCQAJAIAIoAlxBgICAgHhHDQBBBCEDQQAhAQwBCyACQQRBDBDlIiACQdwAakEIaigCACEBIAIoAgAhAyACKAIEIgYgAikCXDcCACAGQQhqIAE2AgAgAkEBNgJYIAIgBjYCVCACIAM2AlAgAkHoAGogAkEoakEoEN8KGkEMIQNBASEBAkADQCACQZQBaiACQegAahDLCSACKAKUAUGAgICAeEYNAQJAIAEgAigCUEcNACACQdAAakEBEPovIAIoAlQhBgsgAikClAEhDCAGIANqIgRBCGogAkGUAWpBCGooAgA2AgAgBCAMNwIAIAIgAUEBaiIBNgJYIANBDGohAwwACwtBgICAgHggAigCmAEQizUgAigCUCEEIAIoAlQhAwsgCiALEPY5CyAAIAU6ABQgACAINgIQIAAgCTYCDCAAIAE2AgggACADNgIEIAAgBDYCACAAIAIpAxA3ABUgAEEdaiAHLQAAOgAACyACQaABaiQAC+MFAQ1/IwBBkAFrIgIkACACQQA2AhAgAkKAgICAgAE3AgggASgCACEDIAFBADYCACACIAM2AhQgAkEYakEgaiEEIAJBGGpBBHIhBSACQdAAakEQaiEGIAJBNWoiB0EHaiEIQQAhCUEIIQpBACEBA0ACQAJAAkACQCADRQ0AAkAgAygCAEEBRw0AIANBADYCACACQdAAakEIaiILIANBFGopAgA3AwAgBiADQRxqKQIANwMAIAIgAykCDDcDUCACIAMpACU3A0AgAiADQSxqKAAANgBHIAMtACQhDCADKAIIIQ0CQCADQX9GDQAgAyADKAIEQX9qIg42AgQgDg0AIANBMEEIEO4cCyAMQf8BcUECRw0CIA0hAwsgAiADNgJsIAMtACQhDCADKAIgIQ0gAkHwAGogA0EIahCXHSACIA02AogBIAIgDDoAjAECQCADKAIoIgNFDQAgAyADKAIAQQFqIgw2AgAgDEUNAwsgAkEYakEYaiACQfAAakEYaikDADcDACACQRhqQRBqIAJB8ABqQRBqKQMANwMAIAJBGGpBCGogAkHwAGpBCGopAwA3AwAgAiACKQNwNwMYIAIgAzYCOCACQewAahCWJAwDCyAAIAIoAgg2AgggACAKNgIEIAAgCjYCACAAIAogAUEFdGo2AgwgAkEUahDiNyACQZABaiQADwsgBSACKQNQNwIAIAcgAikDQDcAACAIIAIoAEc2AAAgBUEQaiAGKQMANwIAIAVBCGogCykDADcCACACIAw6ADQgAiANNgIYDAELAAsCQCABIAIoAghHDQAgAkEIahDmJiACKAIMIQoLIAogCWoiAyACKQMYNwMAIANBGGogAkEYakEYaikDADcDACADQRBqIAJBGGpBEGopAwA3AwAgA0EIaiACQRhqQQhqKQMANwMAIAIgAUEBaiIBNgIQIAIoAjghAyACQQA2AjggAiADNgIUIAQQ4jcgCUEgaiEJDAALC44GAQ9/IwBBIGsiASQAIAAtAAAhAiABQRhqIQMgAUEQaiEEQQAhBQNAIAVB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ASQAIAAoAgwiAiAAKAIEIgNrQThuIQQCQCACIANGDQADQAJAAkAgAygCACICQQlGDQACQAJAAkACQAJAAkACQAJAAkAgAg4IAQIDBAUGBwgACyADQRBqKQMAIgdCA4NCAFINCSABIAenIgI2AgggAUEIahD1ByACIAIoAgAiBUF/ajYCACAFQQFHDQkgAiACKAIgENMvDAkLIANBCGoiAigCACADQQxqKAIAENILIANBBGooAgAgAigCABD8MyADQRBqKAIAIgIQvRMgAkEYQQgQ7hwgA0EcaigCACICRQ0IIAIQmB4gAigCACACQQRqKAIAENwzIAJBFEEEEO4cDAgLIANBCGoQ8QUMBwsgA0EIaiICKAIAIANBDGooAgAQ4BEgA0EEaigCACACKAIAEP0zAkAgA0EYaigCACICRQ0AIAIQvRMgAkEYQQgQ7hwLIANBHGooAgAiAkUNBiACEJgeIAIoAgAgAkEEaigCABDcMyACQRRBBBDuHAwGCwJAAkACQCADQQhqKAIADgIBAgALIANBDGooAgAQ+xAMBwsgA0EQahCkGQwGCyADQRBqEIkbDAULIANBBGoQrwIMBAsgA0EQaigCACECIANBBGooAgAiBRC9EyAFQRhBCBDuHCACRQ0DIAIQmB4gAigCACACQQRqKAIAENwzIAJBFEEEEO4cDAMLAkAgA0EEaigCACICKQMoIgdCA4NCAFINACABIAenIgU2AgwgAUEMahD1ByAFIAUoAgAiBkF/ajYCACAGQQFHDQAgBSAFKAIgENMvCwJAIAIpAwBCAFINACACQQhqEL8RIAJByABBCBDuHAwDCyACEL0TIAJByABBCBDuHAwCCyADQQRqEK8CDAELIANBCGoQqQULIANBOGohAyAEQX9qIgQNAAsLIAAoAgggACgCABDjMyABQRBqJAALtwUBBH8CQAJAAkACQAJAAkACQAJAAkAgACgCACICQQlGDQACQCACDgkACQcGBQQIAwIACwJAIAAoAgwiA0UNACAAKAIIIQJBACEEAkACQANAIARBAWohBQJAIAIpAwBCAlYNACACQcAAai0AAEEBcQ0CCyACQcgAaiECIAUhBCADIAVHDQALQQAhBAwBCyACEOMMAkAgBSADRw0AQQEhBAwBCyAEQX9zIANqIQUgAkHIAGohAkEBIQQDQAJAAkAgAikDAEICVg0AIAJBwABqLQAAQQFxRQ0AIAIQ4wwgBEEBaiEEDAELIAIgBEG4f2xqIAJByAAQ3woaCyACQcgAaiECIAVBf2oiBQ0ACwsgACADIARrNgIMCyAAKAIcIgBFDQcgACABEOQfDwsgASAAQQhqELAFDAYLIABBADoAJA8LIAEgACgCBBCIAw8LIAAoAhAiAEUNAyAAIAEQ5B8PCyABIAAoAgQQiAMPCwJAIAAoAggNAAJAIAAtACRBAkYNACAAQQA6ACQLIAEgACgCKBCRAw8LAkAgAC0AJEECRg0AIABBADoAJAsgACgCKCABEMwaDwsCQCAAKAIMIgNFDQAgACgCCCECQQAhBAJAAkADQCAEQQFqIQUCQCACKQMAQgFWDQAgAkHIAGotAABBAXENAgsgAkHQAGohAiAFIQQgAyAFRw0AC0EAIQQMAQsgAhDMFAJAIAUgA0cNAEEBIQQMAQsgBEF/cyADaiEFIAJB0ABqIQJBASEEA0ACQAJAIAIpAwBCAVYNACACQcgAai0AAEEBcUUNACACEMwUIARBAWohBAwBCyACIARBsH9saiACQdAAEN8KGgsgAkHQAGohAiAFQX9qIgUNAAsLIAAgAyAEazYCDAsgACgCHCIARQ0AIAAgARDkHw8LDwsgAEEIaiABEPoIC/MFAgV/A34jAEHwAGsiAyQAIAEQ8zEhBCADQTBqQRBqQQApA/DfmQEiCDcDACADQTBqQQhqQQApA+jfmQEiCTcDACADQQApA+DfmQEiCjcDMAJAAkACQCABELEWIANBMGoQ0zUNACADQTBqEOIQIAMgARD7ICADKAIEIQQgAygCACECIANBDGogARDfGiADQdgAakEQaiAINwMAIANB2ABqQQhqIAk3AwAgA0EBNgI0IANBpNehATYCMCADQgE3AjwgA0GiAjYCUCADIAo3A1ggAyADQcwAajYCOCADIANB1ABqNgJMIAMgA0HYAGo2AlQgA0EYaiADQTBqEOYiIANB2ABqEOIQIANBLGogA0EMakEIaigCADYCACADIAMpAgw3AiQgAiAEIANBGGoQ/iIhBAJAIAEQsRYiAkUNACACKAIAQSRHDQAgASABKQMYNwNQIAEoAgAhAiABQSU2AgAgAkEkRw0CIAEgASgCBBDjEwsgAEGAgICAeDYCACAAIAQ2AgQMAgsgASABKQMYNwNQIAEoAgAhBSABQSU2AgAgA0HYAGpBDGogAUEMaikCADcCACADQdgAakEUaiABQRRqKAIANgIAIAMgASkCBDcCXCADIAU2AlggA0HYAGoQ4hAgA0EwahDiECABIAEoAswCIgVB/////wFxEOEPIANB2ABqQRBqQQApA/jDmQE3AwAgA0HYAGpBCGpBACkD8MOZATcDACADQQApA+jDmQE3A1ggA0EwaiABIAIgA0HYAGoQmQIgAygCNCECAkAgAygCMCIGQYCAgIB4Rg0AIAMoAjghByADQdgAahDiECABIAUQoD4gAEEANgIUIAAgBzYCCCAAIAI2AgQgACAGNgIAIAAgBCABKAJUIgEgBCABSxs2AhAgACAEIAEgBCABSRs2AgwMAgsgAEGAgICAeDYCACAAIAI2AgQgA0HYAGoQ4hAgASAFEKA+DAELQZTOoQFBKEHY4ZkBENMnAAsgA0HwAGokAAvoBQEHfyMAQdAAayICJAAgARDtDhogAUHUAkHYAiABLQDhAkECRhtqKAIAIQMCQAJAAkAgARDtDiIERQ0AIAQtAABBAkYNAQsgAUHUAmogAUHcAmogAS0A4QJBAkYiBBsoAgAhAyABQdACaiABQdgCaiAEGygCACEEIAJBBGogARDKCyACQQE2AiwgAkGk16EBNgIoIAJCATcCNCACQegENgJEIAJBAjoATyACIAJBwABqNgIwIAIgAkHIAGo2AkAgAiACQc8AajYCSCACQRBqIAJBKGoQkQogAkEkaiACQQxqKAIANgIAIAIgAikCBDcCHCAEIAMgBCADSRsgBCADIAQgA0sbIAJBEGoQ/iIhAwJAIAEQ7Q4iBEUNACAELQAAQZsBRw0AIAFBAjoA4QIgASABKQPYAjcD0AIgASABEN8YEPUYCyAAQYCAgIB4NgIAIAAgAzYCBAwBCyABQQI6AOECIAEgASkD2AI3A9ACAkACQAJAAkAgASgCkAIiBEECcUUNACABKAKEAiIFKAIIIgZB/v///wdLDQEgBSgCFEUNACAGDQIgBUF/NgIIIAEoAoACIgYoAggNAyAGQX82AgggBSgCECEHIAZBDGogBSgCFCIIEKEwIAYoAhAgBigCFEECdGogByAIQQJ0EN8KGiAGIAggBigCFGo2AhQgBUEANgIUIAYgBigCCEEBajYCCCAFIAUoAghBAWo2AggLIAEgBEGAgICAAnI2ApACIAJBAzoAECACQShqIAEgAkEQahBEIAIoAiwhBQJAIAIoAigiBkGAgICAeEYNACACKAIwIQggASAEENwRIAAgCDYCCCAAIAU2AgQgACAGNgIAIAAgAyABKALUAiIBIAMgAUsbNgIQIAAgAyABIAMgAUkbNgIMDAQLIABBgICAgHg2AgAgACAFNgIEIAEgBBDcEQwDC0GchJsBEOoiAAtBjISbARDpIgALQfyDmwEQ6SIACyACQdAAaiQAC+UFAQN/AkACQAJAAkACQAJAAkACQCAAKAIAQXxqIgFBBCABQQdJGw4GAQIDBAUGAAsgACgCCCECAkAgACgCDCIDRQ0AIAIhAQNAIAEQ9gkgAUEoaiEBIANBf2oiAw0ACwsgACgCBCACEOEzIAAoAhAiAUUNBiABKAIAIgMQiQMgA0HgAEEIEO4cIAFBDEEEEO4cDwsgACgCCCECAkAgACgCDCIDRQ0AIAIhAQNAIAEQ9gkgAUEoaiEBIANBf2oiAw0ACwsgACgCBCACEOEzAkAgACgCGCIBRQ0AIAEoAgAiAxCJAyADQeAAQQgQ7hwgAUEMQQQQ7hwLIAAoAhwiAUUNBSABEN0RIAEoAgAgAUEEaigCABDeMyABQRRBBBDuHA8LIAAoAgghAgJAIAAoAgwiA0UNACACIQEDQCABEPYJIAFBKGohASADQX9qIgMNAAsLIAAoAgQgAhDhMwJAIAAoAhgiAUUNACABKAIAIgMQiQMgA0HgAEEIEO4cIAFBDEEEEO4cCyAAKAIcIgFFDQQgARDdESABKAIAIAFBBGooAgAQ3jMgAUEUQQQQ7hwPCyAAKAIQIgEQogEgAUHAAEEIEO4cIAAoAgwiAUUNAyABKAIAIgMQiQMgA0HgAEEIEO4cIAFBDEEEEO4cDwsgACgCBCIBEKIBIAFBwABBCBDuHCAAKAIQIgFFDQIgASgCACIDEIkDIANB4ABBCBDuHCABQQxBBBDuHA8LIAAoAjAiARCiASABQcAAQQgQ7hwgABD2CQ8LIAAoAhAiARCiASABQcAAQQgQ7hwgACgCCCECAkAgACgCDCIDRQ0AIAIhAQNAIAEQ9gkgAUEoaiEBIANBf2oiAw0ACwsgACgCBCACEOEzAkAgACgCHCIBRQ0AIAEoAgAiAxCJAyADQeAAQQgQ7hwgAUEMQQQQ7hwLIAAoAiAiAUUNACABEN0RIAEoAgAgAUEEaigCABDeMyABQRRBBBDuHAsLzQUBDn8jAEGAAWsiAyQAIANBADYCOCADQQE7ATQgAyACNgIwIANBADYCLCADQQE6ACggA0EKNgIkIAMgAjYCICADIAI2AhggAyABNgIUIANBCjYCECAALQAMIQQgACgCBCEFIAAoAgghBiAAKAIAIQcgA0EkaiEIQQAhCUEAIQpBACELQQAhDAJAA0AgCiENIAkhDiALIg9BAXENAQJAA0ACQAJAAkAgAiAMSQ0AIAEgDGohCgJAAkAgAiAMayIJQQdLDQBBACEQA0ACQCAJIBBHDQAgAyACNgIcDAMLIAogEGotAABBCkYNBSAQQQFqIRAMAAsLIANBCGpBCiAKIAkQtwsgAygCCEEBRg0CCyACIQwLQQEhCyADQQE6ADUgDSEKIAIhEAwDCyADKAIMIRALIAMgDCAQaiIQQQFqIgw2AhwgDEUNACAMIAJLDQAgASAQakEBIAhBARCgMUUNAAsgAyAMNgIsIAwhCiAPIQsLIAMgDkEBaiIJNgI4AkACQCAEQQFxDQAgAEEBOgAMAkAgB0EBcQ0AIAYoAhRBjqyhAUEEIAYoAhgoAgwRCwBFDQIMBAsgAyAFNgI8IANBBzYCXCADIANBPGo2AlggA0EBOgB8IANBADYCeCADQiA3AnAgA0EBNgJUIANBAjYCRCADQYT4mAE2AkAgA0EBNgJMIANCgICAgNAANwJoIANBAjYCYCADIANB4ABqNgJQIAMgA0HYAGo2AkggBigCFCAGKAIYIANBwABqEJ0HDQMMAQsgDkUNACAGKAIUQQogBigCGCgCEBEIAA0CAkAgB0EBcQ0AIAYoAhRBjqyhAUEEIAYoAhgoAgwRCwBFDQEMAwsgBigCFEGQv4ABQQcgBigCGCgCDBELAA0CC0EBIQQgBigCFCABIA1qIBAgDWsgBigCGCgCDBELAEUNAAsLIANBgAFqJAAgD0F/c0EBcQvbBQEGfwJAIAAtAGwiAkEESw0AIAJBA0YNACAAQcAAahCoMwsCQCAAKAKEASICRQ0AIAAoAoABIgMgAkHYAGxqIQQDQAJAAkAgAygCACICQQVGDQAgAkEERg0BAkACQAJAIAIOBAQAAQIECyADKAIEQQFHDQMgASADQQhqKAIAELADDAMLIAMoAgQgARDjBgwCCyADQQxqKAIAIgJFDQEgA0EIaigCACIFIAJBKGxqIQYDQAJAAkACQAJAAkAgBSgCAA4FBAABAgMECyAFKAIEQQFHDQMgASAFQQhqKAIAELADDAMLIAEgBSgCBBCwAwwCCyAFKAIEIAEQ4wYMAQsgBUEMaigCACICRQ0AIAJBKGwhByAFQQhqKAIAQQRqIQIDQAJAAkACQAJAAkAgAkF8aigCAA4FBAABAgMECyACKAIAQQFHDQMgASACQQRqKAIAELADDAMLIAEgAigCABCwAwwCCyACKAIAIAEQ4wYMAQsgAiABEK0fCyACQShqIQIgB0FYaiIHDQALCyAFQShqIgUgBkcNAAwCCwsgASADKAIEELADCyADQdgAaiIDIARHDQALCwJAIAAoApgBIgJFDQAgACgClAEiBSACQShsaiEDA0ACQAJAAkACQAJAIAUoAgAOBQQAAQIDBAsgBSgCBEEBRw0DIAEgBSgCCBCwAwwDCyABIAUoAgQQsAMMAgsgBSgCBCABEOMGDAELIAUoAgwiAkUNACACQShsIQcgBSgCCEEEaiECA0ACQAJAAkACQAJAIAJBfGooAgAOBQQAAQIDBAsgAigCAEEBRw0DIAEgAkEEaigCABCwAwwDCyABIAIoAgAQsAMMAgsgAigCACABEOMGDAELIAIgARCtHwsgAkEoaiECIAdBWGoiBw0ACwsgBUEoaiIFIANHDQALCwJAIAAtADwiAkEGRg0AAkAgAkF6akF9SQ0AIAJBBEcNAQsgAEEQahCoMwsLsgUCBn8DfiMAQTBrIgIkACACQQhqIAEQpicgAiACKAIQIgM2AiAgAiACKQMIIgg3AxgCQAJAAkACQCAAKAIMRQ0AIAggAxCfLiEIIAAoAgAiBEFgaiEFIAhCGYhCgYKEiJCgwIABfiEJIAAoAgQiAyAIp3EhAEEAIQYDQAJAIAQgAGopAAAiCiAJhSIIQn+FIAhC//379+/fv/9+fINCgIGChIiQoMCAf4MiCFANAANAIAJBGGogBSAIeqdBA3YgAGogA3EiB0EFdGsQ6zQNBCAIQn98IAiDIghQRQ0ACwsCQCAKIApCAYaDQoCBgoSIkKDAgH+DUEUNACAAIAZBCGoiBmogA3EhAAwBCwsgAikDGCEICwJAIAhCA4NCAFINACACIAinIgA2AiwgAkEsahD1ByAAIAAoAgAiA0F/ajYCACADQQFHDQAgACAAKAIgENMvC0EAIQAMAQsCQAJAIARBACAHa0EFdGoiAEFwaikDACIIUEUNAEEAIQAMAQsCQCAIQgODQgBSDQAgCKciAyADKAIAIgNBAWo2AgAgA0F/TA0DCyAAQXhqKAIAIQAgASgCDCEFIAEoAgghBwJAIAEpAwAiCkIDg0IAUg0AIAqnIgMgAygCACIDQQFqNgIAIANBf0wNAwtBAC0AwP+jARpBwAAQjAEiA0UNAiADQQA6ABwgAyAANgIYIANCADcCECADIAg3AgggA0EaNgIAQQAtAMD/owEaQcAAEIwBIgBFDQIgACADNgIoIABCADcDICAAIAU2AhwgACAHNgIYIAAgCjcDECAAQQA2AgggAEEUNgIACyACKQMYIghCA4NCAFINACACIAinIgM2AiwgAkEsahD1ByADIAMoAgAiBUF/ajYCACAFQQFHDQAgAyADKAIgENMvCyACQTBqJAAgAA8LAAu6BQEHfyMAQTBrIgUkAAJAAkAgAg0AIABBADYCCCAAQoCAgIAQNwIADAELIAFBDGohBiACQQxsIgdBdGoiCEEMbiAEbCECIAEhCQJAA0AgB0UNASAHQXRqIQcgCSgCCCACaiIKIAJPIQsgCUEMaiEJIAohAiALDQALQaS+oQFBNUGkv6EBEKoeAAsgBUEYaiACQQFBARC4EiAFKAIcIQcCQAJAAkACQAJAAkAgBSgCGEEBRg0AIAVBADYCFCAFIAUoAiA2AhAgBSAHNgIMIAEoAgQhCSAFQQxqIAEoAggiBxD5LyAFKAIQIgogBSgCFCILaiAJIAcQ3woaIAIgCyAHaiIJayEHIAogCWohCQJAIARBAkcNAANAIAhFDQcgB0EBTQ0FIAYoAgghCiAGKAIEIQsgCSADLwAAOwAAIAdBfmoiByAKSQ0GIAZBDGohBiAJQQJqIgkgCiALIAoQgjEgCEF0aiEIIAcgCmshByAJIApqIQkMAAsLA0AgCEUNBiAHRQ0CIAYoAgghCiAGKAIEIQsgCSADLQAAOgAAIAdBf2oiByAKSQ0DIAZBDGohBiAJQQFqIgkgCiALIAoQgjEgCEF0aiEIIAcgCmshByAJIApqIQkMAAsLIAcgBSgCIBD4OQALIAVBADYCKCAFQQE2AhwgBUHAv6EBNgIYIAVCBDcCICAFQRhqQci/oQEQrS4ACyAFQQA2AiggBUEBNgIcIAVBwL+hATYCGCAFQgQ3AiAgBUEYakHIv6EBEK0uAAsgBUEANgIoIAVBATYCHCAFQcC/oQE2AhggBUIENwIgIAVBGGpByL+hARCtLgALIAVBADYCKCAFQQE2AhwgBUHAv6EBNgIYIAVCBDcCICAFQRhqQci/oQEQrS4ACyAAIAUpAgw3AgAgAEEIaiACIAdrNgIACyAFQTBqJAAL3gUCA38BfiMAQRBrIgEkAAJAAkAgACgCACICQQlGDQACQAJAAkACQAJAAkACQAJAAkAgAg4IAQIDBAUGBwgACyAAKQMQIgRCA4NCAFINCSABIASnIgA2AgQgAUEEahD1ByAAIAAoAgAiAkF/ajYCACACQQFHDQkgACAAKAIgENMvDAkLIAAoAggiAiAAKAIMEMkwIAAoAgQgAhD8MyAAKAIQIgIQvRMgAkEYQQgQ7hwgACgCHCIARQ0IIABBBGoiAigCACAAQQhqKAIAEPMhIAAoAgAgAigCABDcMyAAQRRBBBDuHAwICyAAQQhqEPoFDAcLIAAoAggiAiAAKAIMEMowIAAoAgQgAhD9MwJAIAAoAhgiAkUNACACEL0TIAJBGEEIEO4cCyAAKAIcIgBFDQYgAEEEaiICKAIAIABBCGooAgAQ8yEgACgCACACKAIAENwzIABBFEEEEO4cDAYLAkACQAJAIAAoAggOAgECAAsgACgCDBD/EAwHCwJAIAAtACRBAkYNACAAKQMQIgRCA4NCAFINACABIASnIgI2AgggAUEIahD1ByACIAIoAgAiA0F/ajYCACADQQFHDQAgAiACKAIgENMvCyAAKAIoEKUQDAYLIABBEGoQmRsMBQsgACgCBCIAEOkBIABBwABBCBDuHAwECyAAKAIQIQIgACgCBCIAEL0TIABBGEEIEO4cIAJFDQMgAkEEaiIAKAIAIAJBCGooAgAQ8yEgAigCACAAKAIAENwzIAJBFEEEEO4cDAMLAkAgACgCBCIAKQMoIgRCA4NCAFINACABIASnIgI2AgwgAUEMahD1ByACIAIoAgAiA0F/ajYCACADQQFHDQAgAiACKAIgENMvCwJAAkAgACkDAEIAUg0AIABBCGoQvxEMAQsgABC9EwsgAEHIAEEIEO4cDAILIAAoAgQiABDpASAAQcAAQQgQ7hwMAQsgAEEIahCABQsgAUEQaiQAC9oFAQp/IwBBEGsiAiQAIABBwABqEKE0AkAgACgChAEiA0UNACAAKAKAASEEIANB2ABsIQMDQAJAAkAgBCgCACIFQQVGDQAgBUEERg0BAkACQAJAAkAgBQ4EAAECAwALIAQoAgggBEEYaisDACABENUwDAQLIAQoAgRBAUcNAyABIAQoAggQlgcMAwsgBCgCBCABEOcGDAILIARBBGogARCfEgwBCyABQQA6AAQLIARB2ABqIQQgA0Gof2oiAw0ACwsCQCAAKAKYASIERQ0AIAAoApQBIgYgBEEobGohBwNAAkACQAJAAkACQCAGKAIADgUEAAECAwQLIAYoAgRBAUcNAyABIAYoAggQlgcMAwsgASAGKAIEEJYHDAILIAYoAgQgARDnBgwBCyAGKAIMIgRFDQAgBigCCCIIIARBKGxqIQkDQAJAAkACQAJAAkAgCCgCAA4FBAABAgMECyAIKAIEQQFHDQMgASAIKAIIEJYHDAMLIAEgCCgCBBCWBwwCCyAIKAIEIgpBwABqEKE0AkAgCigChAEiA0UNACAKKAKAASEEIANB2ABsIQMDQCAEIAEQvRwgBEHYAGohBCADQah/aiIDDQALCwJAIApBmAFqKAIAIgRFDQAgCkGUAWooAgAiBSAEQShsaiELA0ACQAJAAkACQAJAIAUoAgAOBQQAAQIDBAsgBSgCBEEBRw0DIAEgBSgCCBCWBwwDCyABIAUoAgQQlgcMAgsgBSgCBCABEOcGDAELIAUoAgwhAyAFKAIIIQQgAiABNgIMIANFDQAgA0EobCEDA0AgAkEMaiAEEOkKIARBKGohBCADQVhqIgMNAAsLIAVBKGoiBSALRw0ACwsgCi0APEEGRg0BIApBEGoQoTQMAQsgCEEEaiABEIYKCyAIQShqIgggCUcNAAsLIAZBKGoiBiAHRw0ACwsCQCAALQA8QQZGDQAgAEEQahChNAsgAkEQaiQAC9QFAQp/IwBBEGsiAiQAIABBwABqIAEQpB8CQCAAKAKEASIDRQ0AIANB2ABsIQQgACgCgAFBBGohAwNAAkACQCADQXxqKAIAIgVBBUYNACAFQQRGDQECQAJAAkAgBQ4EBAABAgQLIAMoAgBBAUcNAyABIANBBGooAgAQpioMAwsgAygCACABEOgGDAILIAMgARCJEgwBCyABIAMoAgAQpioLIANB2ABqIQMgBEGof2oiBA0ACwsCQCAAKAKYASIDRQ0AIAAoApQBIgYgA0EobGohBwNAAkACQAJAAkACQCAGKAIADgUEAAECAwQLIAYoAgRBAUcNAyABIAYoAggQpioMAwsgASAGKAIEEKYqDAILIAYoAgQgARDoBgwBCyAGKAIMIgNFDQAgBigCCCIIIANBKGxqIQkDQAJAAkACQAJAAkAgCCgCAA4FBAABAgMECyAIKAIEQQFHDQMgASAIKAIIEKYqDAMLIAEgCCgCBBCmKgwCCyAIKAIEIgpBwABqIAEQpB8CQCAKKAKEASIERQ0AIAooAoABIQMgBEHYAGwhBANAIAMgARDLICADQdgAaiEDIARBqH9qIgQNAAsLAkAgCkGYAWooAgAiA0UNACAKQZQBaigCACIFIANBKGxqIQsDQAJAAkACQAJAAkAgBSgCAA4FBAABAgMECyAFKAIEQQFHDQMgASAFKAIIEKYqDAMLIAEgBSgCBBCmKgwCCyAFKAIEIAEQ6AYMAQsgBSgCDCEEIAUoAgghAyACIAE2AgwgBEUNACAEQShsIQQDQCACQQxqIAMQ1gogA0EoaiEDIARBWGoiBA0ACwsgBUEoaiIFIAtHDQALCyAKLQA8QQZGDQEgCkEQaiABEKQfDAELIAhBBGogARD4CQsgCEEoaiIIIAlHDQALCyAGQShqIgYgB0cNAAsLAkAgAC0APEEGRg0AIABBEGogARCkHwsgAkEQaiQAC6YFAgN/AX4jAEHQAGsiAiQAQQAhAyAAQQRqKAIAIQQgACgCACEAAkACQAJAAkACQCABKQMAQn18IgWnQQFqQQAgBUICVBsOAwABAgALIAEtAEANAyACQQhqIAFBIGoQpicgAiACKAIQNgJAIAIgAikDCCIFNwM4AkAgBCACQThqEMoPDQAgACACQThqEMkPIQMgAikDOCIFQgODQgBSDQQgAiAFpyIBNgJMIAJBzABqEPUHIAEgASgCACIAQX9qNgIAIABBAUcNBCABIAEoAiAQ0y8MBAsgBUIDg0IAUg0DIAIgBaciATYCTCACQcwAahD1ByABIAEoAgAiAEF/ajYCACAAQQFHDQMgASABKAIgENMvDAMLIAJBGGogAUEQahCmJyACIAIoAiA2AkAgAiACKQMYIgU3AzgCQCAEIAJBOGoQyg8NACAAIAJBOGoQyQ8hAyACKQM4IgVCA4NCAFINAyACIAWnIgE2AkwgAkHMAGoQ9QcgASABKAIAIgBBf2o2AgAgAEEBRw0DIAEgASgCIBDTLwwDCyAFQgODQgBSDQEgAiAFpyIBNgJMIAJBzABqEPUHIAEgASgCACIAQX9qNgIAIABBAUcNASABIAEoAiAQ0y8MAQsgAkEoaiABQRBqEKYnIAIgAigCMDYCQCACIAIpAygiBTcDOAJAIAQgAkE4ahDKDw0AIAAgAkE4ahDJDyEDIAIpAzgiBUIDg0IAUg0CIAIgBaciATYCTCACQcwAahD1ByABIAEoAgAiAEF/ajYCACAAQQFHDQIgASABKAIgENMvDAILIAVCA4NCAFINACACIAWnIgE2AkwgAkHMAGoQ9QcgASABKAIAIgBBf2o2AgAgAEEBRw0AIAEgASgCIBDTLwtBACEDCyACQdAAaiQAIAMLzgUCA38BfiMAQRBrIgEkAAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAA4KAAECAwQFBgcICQoLAkAgACkDCCIEQgODQgBSDQAgASAEpyICNgIMIAFBDGoQ9QcgAiACKAIAIgNBf2o2AgAgA0EBRw0AIAIgAigCIBDTLwsgACgCICIARQ0JIAAoAgAiAhDiBCACQeAAQQgQ7hwgAEEMQQQQ7hwMCQsgAEEoahDlASAAQQhqENMSDAgLAkAgACgCCA0AIAApAxAiBEIDg0IAUg0IIAEgBKciADYCDCABQQxqEPUHIAAgACgCACICQX9qNgIAIAJBAUcNCCAAIAAoAiAQ0y8MCAsgAEEMahDlAQwHCyAAQQRqEOUBDAYLAkACQCAAKAIEIgIoAgBBA0YNACACQSBqEOUBAkACQAJAIAIoAgAOAgECAAsgAkEEahDlAQwDCyACKQMIIgRCA4NCAFINAiABIASnIgI2AgwgAUEMahD1ByACIAIoAgAiA0F/ajYCACADQQFHDQIgAiACKAIgENMvDAILIAIpAwgiBEIDg0IAUg0BIAEgBKciAjYCDCABQQxqEPUHIAIgAigCACIDQX9qNgIAIANBAUcNASACIAIoAiAQ0y8MAQsgAkEQahDlASACQQRqEPcnIAIoAgQgAkEIaigCABDbMyACKAIgIgJFDQAgAhDeKSACKAIAIAJBBGooAgAQ3zMgAkEUQQQQ7hwLIAAoAgRBKEEIEO4cDAULIABBBGoQ5QEgACgCCCIAEOIEIABB4ABBCBDuHAwECyAAQQRqEOUBIAAoAggiABDiBCAAQeAAQQgQ7hwMAwsgAEEEahDlAQwCCyAAQQRqEOUBIAAoAggiABDiBCAAQeAAQQgQ7hwMAQsgAEEEahDlASAAKAIIIgAQ3ikgACgCACAAQQRqKAIAEN8zIABBFEEEEO4cCyABQRBqJAAL1AUBCn8jAEEQayICJAAgASAAQcAAahCxDAJAIAAoAoQBIgNFDQAgA0HYAGwhBCAAKAKAAUEEaiEDA0ACQAJAIANBfGooAgAiBUEFRg0AIAVBBEYNAQJAAkACQCAFDgQEAAECBAsgAygCAEEBRw0DIANBBGooAgAgARD1AgwDCyADKAIAIAEQ6wYMAgsgAyABEJQSDAELIAMoAgAgARD1AgsgA0HYAGohAyAEQah/aiIEDQALCwJAIAAoApgBIgNFDQAgACgClAEiBiADQShsaiEHA0ACQAJAAkACQAJAIAYoAgAOBQQAAQIDBAsgBigCBEEBRw0DIAYoAgggARD1AgwDCyAGKAIEIAEQ9QIMAgsgBigCBCABEOsGDAELIAYoAgwiA0UNACAGKAIIIgggA0EobGohCQNAAkACQAJAAkACQCAIKAIADgUEAAECAwQLIAgoAgRBAUcNAyAIKAIIIAEQ9QIMAwsgCCgCBCABEPUCDAILIAEgCCgCBCIKQcAAahCxDAJAIAooAoQBIgRFDQAgCigCgAEhAyAEQdgAbCEEA0AgAyABENsgIANB2ABqIQMgBEGof2oiBA0ACwsCQCAKQZgBaigCACIDRQ0AIApBlAFqKAIAIgUgA0EobGohCwNAAkACQAJAAkACQCAFKAIADgUEAAECAwQLIAUoAgRBAUcNAyAFKAIIIAEQ9QIMAwsgBSgCBCABEPUCDAILIAUoAgQgARDrBgwBCyAFKAIMIQQgBSgCCCEDIAIgATYCDCAERQ0AIARBKGwhBANAIAJBDGogAxDZCiADQShqIQMgBEFYaiIEDQALCyAFQShqIgUgC0cNAAsLIAotADxBBkYNASABIApBEGoQsQwMAQsgCEEEaiABEPkJCyAIQShqIgggCUcNAAsLIAZBKGoiBiAHRw0ACwsCQCAALQA8QQZGDQAgASAAQRBqELEMCyACQRBqJAALzgUCA38BfiMAQRBrIgEkAAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAA4KAAECAwQFBgcICQoLAkAgACkDCCIEQgODQgBSDQAgASAEpyICNgIMIAFBDGoQ9QcgAiACKAIAIgNBf2o2AgAgA0EBRw0AIAIgAigCIBDTLwsgACgCICIARQ0JIAAoAgAiAhDkBCACQeAAQQgQ7hwgAEEMQQQQ7hwMCQsgAEEoahDjASAAQQhqENUSDAgLAkAgACgCCA0AIAApAxAiBEIDg0IAUg0IIAEgBKciADYCDCABQQxqEPUHIAAgACgCACICQX9qNgIAIAJBAUcNCCAAIAAoAiAQ0y8MCAsgAEEMahDjAQwHCyAAQQRqEOMBDAYLAkACQCAAKAIEIgIoAgBBA0YNACACQSBqEOMBAkACQAJAIAIoAgAOAgECAAsgAkEEahDjAQwDCyACKQMIIgRCA4NCAFINAiABIASnIgI2AgwgAUEMahD1ByACIAIoAgAiA0F/ajYCACADQQFHDQIgAiACKAIgENMvDAILIAIpAwgiBEIDg0IAUg0BIAEgBKciAjYCDCABQQxqEPUHIAIgAigCACIDQX9qNgIAIANBAUcNASACIAIoAiAQ0y8MAQsgAkEQahDjASACQQRqEPcnIAIoAgQgAkEIaigCABDbMyACKAIgIgJFDQAgAhDeKSACKAIAIAJBBGooAgAQ3zMgAkEUQQQQ7hwLIAAoAgRBKEEIEO4cDAULIABBBGoQ4wEgACgCCCIAEOQEIABB4ABBCBDuHAwECyAAQQRqEOMBIAAoAggiABDkBCAAQeAAQQgQ7hwMAwsgAEEEahDjAQwCCyAAQQRqEOMBIAAoAggiABDkBCAAQeAAQQgQ7hwMAQsgAEEEahDjASAAKAIIIgAQ3ikgACgCACAAQQRqKAIAEN8zIABBFEEEEO4cCyABQRBqJAALvgUBB38jAEEwayIFJAACQAJAIAINACAAQQA2AgggAEKAgICAEDcCAAwBCyABQQhqIQYgAkEDdCICQXhqIgdBA3YgBGwhCCABIQkCQANAIAJFDQEgAkF4aiECIAkoAgQgCGoiCiAITyELIAlBCGohCSAKIQggCw0AC0GkvqEBQTVBpL+hARCqHgALIAVBGGogCEEBQQEQuBIgBSgCHCECAkACQAJAAkACQAJAIAUoAhhBAUYNACAFQQA2AhQgBSAFKAIgNgIQIAUgAjYCDCAFQQxqIAEoAgAgASgCBBD4LiAIIAUoAhQiAmshCSAFKAIQIAJqIQICQCAEQQRHDQADQCAHRQ0HIAlBA00NBSAGKAIEIQogBigCACELIAIgAygAADYAACAJQXxqIgkgCkkNBiAGQQhqIQYgAkEEaiICIAogCyAKQci/oQEQ8zAgB0F4aiEHIAkgCmshCSACIApqIQIMAAsLA0AgB0UNBiAJQQJNDQIgBigCBCEKIAYoAgAhCyACIAMvAAA7AAAgAkECaiADQQJqLQAAOgAAIAlBfWoiCSAKSQ0DIAZBCGohBiACQQNqIgIgCiALIApByL+hARDzMCAHQXhqIQcgCSAKayEJIAIgCmohAgwACwsgAiAFKAIgEPg5AAsgBUEANgIoIAVBATYCHCAFQcC/oQE2AhggBUIENwIgIAVBGGpByL+hARCtLgALIAVBADYCKCAFQQE2AhwgBUHAv6EBNgIYIAVCBDcCICAFQRhqQci/oQEQrS4ACyAFQQA2AiggBUEBNgIcIAVBwL+hATYCGCAFQgQ3AiAgBUEYakHIv6EBEK0uAAsgBUEANgIoIAVBATYCHCAFQcC/oQE2AhggBUIENwIgIAVBGGpByL+hARCtLgALIAAgBSkCDDcCACAAQQhqIAggCWs2AgALIAVBMGokAAvZBQEEfyMAQZABayIDJAACQAJAAkACQAJAAkACQAJAAkACQCABKAIgDQAgAUF/NgIgIAEoAiRBAUYNASABKAJIIgRB/v///wdLDQIgASAENgIoIAFBATYCJAJAIAQgASgCQEcNACABQcAAahDJJgsgASgCRCAEQQJ0akEANgIAIAEgBEEBajYCSCABIAEoAiBBAWo2AiAgA0HAAGogAUEAQQAgASACEO0DIAMoAkghBCADKAJEIQIgAygCQCIFQSpHDQUgASgCIA0DIAFBfzYCICABKAIkRQ0EIAEoAighBSADQQk2AoABIAMgBTYChAEgA0HAAGogAUEkaiADQYABahCgDiADKAJEIQUgAygCQCIGQSpHDQYgASABKAIgQQFqNgIgIANBwABqIAEgBCAFEL0LAkACQCADKAJAIgRBKkcNACABKAIgDQkgAUF/NgIgIAEoAiRFDQogASgCSCIGIAEoAigiBEsNASAEIAZBhMmDARChGwALIABBBGogA0HAAGpBBHJBPBDfChogACAENgIADAoLIAEoAkQgBEECdGogAjYCACABQQA2AiQgACAFNgIIIAAgAjYCBCAAQSo2AgAgASABKAIgQQFqNgIgDAkLQYSrgwEQ6SIACyADQQA2AlAgA0EBNgJEIANB4MSDATYCQCADQgQ3AkggA0HAAGpB9MiDARCtLgALIABB/////wc2AgggAUEANgIgIAAgBDYCBCAAQSU2AgAMBgtBtKyDARDpIgALQZTJgwFBH0G0yYMBEKoeAAsgAEEMaiADQcAAakEMakE0EN8KGiAAIAQ2AgggACACNgIEIAAgBTYCAAwDCyADQQhqIANBwABqQQhqQTgQ3woaIAEgASgCIEEBajYCICAAQQhqIANBCGpBOBDfChogACAFNgIEIAAgBjYCAAwCC0GUq4MBEOkiAAtBlMmDAUEfQbTJgwEQqh4ACyADQZABaiQAC7UFAQZ/AkAgACgCCCICRQ0AIAAoAgQhAyACQQxsIQIDQCADKAIAIAEQ/gIgA0EMaiEDIAJBdGoiAg0ACwsCQCAAKAIUIgNFDQAgACgCECIEIANB2ABsaiEFA0ACQAJAAkACQAJAAkACQAJAIAQoAgAiA0F8akEAIANBe2pBCEkbDgkAAQIDBAcHBQYACyABIAQQhzQCQCAEKAJIIgNFDQAgBCgCRCIGIANBBnRqIQcDQAJAAkAgBigCAEEHRw0AAkAgBigCOCICRQ0AIAYoAjQhAyACQQxsIQIDQCADKAIAIAEQ/gIgA0EMaiEDIAJBdGoiAg0ACwsCQCAGLQAcQQJGDQAgBkEIaiABEJg/DAILIAYoAgwhAyAGKAIIIAEQ4AwgAyABEP4CDAELIAEgBhCGFwsgBkHAAGoiBiAHRw0ACwsgBEEgaiIDKAIAQYCAgIB4Rg0GIAMgARCkKgwGCyABIARBCGoQhzQgBCgCMCABEMwWDAULIAQoAiAgARDMFgwECyABIARBCGoQhzQCQCAEKAI8IgNFDQAgAyABEP4CCyAEKAI4IgJFDQMgBCgCNCEDIAJBDGwhAgNAIAMoAgAgARD+AiADQQxqIQMgAkF0aiICDQAMBAsLAkAgBCgCJCIDRQ0AIAMgARD+AgsgBCgCNCICRQ0CIAQoAjAhAyACQQxsIQIDQCADKAIAIAEQ/gIgA0EMaiEDIAJBdGoiAg0ADAMLCyAEQQRqIAEQpCoMAQsCQCAEKAIIQQVGDQAgASAEQQhqEIc0CwJAIAQoAjwiA0UNACADIAEQ/gILIAQoAjgiAkUNACAEKAI0IQMgAkEMbCECA0AgAygCACABEP4CIANBDGohAyACQXRqIgINAAsLIARB2ABqIgQgBUcNAAsLAkAgACgCMCIDRQ0AIAMgARD+AgsL2QUCBH8FfiMAQYABayIEJAAgAb0hCAJAAkAgAZlEAAAAAAAA8H9iDQBBAyEFDAELAkAgCEKAgICAgICA+P8AgyIJQoCAgICAgID4/wBSDQBBAiEFDAELIAhC/////////weDIgpCgICAgICAgAiEIAhCAYZC/v///////w+DIAhCNIinQf8PcSIGGyILQgGDIQwCQCAJQgBSDQACQCAKUEUNAEEEIQUMAgsgBkHNd2ohBiAMp0EBcyEFQgEhCQwBC0KAgICAgICAICALQgGGIAtCgICAgICAgAhRIgcbIQtCAkIBIAcbIQkgDKdBAXMhBUHLd0HMdyAHGyAGaiEGCyAEIAY7AXggBCAJNwNwIARCATcDaCAEIAs3A2AgBCAFOgB6AkACQAJAAkACQCAFQX5qIgZFDQBBASEFQbuFoQFBuoWhASAIQgBTIgcbQbuFoQFBASAHGyACGyEHQQEgCEI/iKcgAhshAiAGQQMgBkEDSRtBf2oOAwEDAgELIARBAzYCKCAEQbzqoAE2AiQgBEECOwEgQQEhByAEQSBqIQZBACECQQEhBQwDCyAEQQM2AiggBEGg84ABNgIkIARBAjsBICAEQSBqIQYMAgsgBEEgaiAEQeAAaiAEQQ9qEJgCAkACQCAEKAIgDQAgBEHQAGogBEHgAGogBEEPahBmDAELIARB0ABqQQhqIARBIGpBCGooAgA2AgAgBCAEKQIgNwNQCyAEIAQoAlAgBCgCVCAELwFYIAMgBEEgahDvCiAEKAIEIQUgBCgCACEGDAELQQIhBSAEQQI7ASACQCADRQ0AIARBATYCMCAEQQA7ASwgBEECNgIoIARB1KeZATYCJCAEQSBqIQYMAQtBASEFIARBATYCKCAEQZ2slwE2AiQgBEEgaiEGCyAEIAU2AlwgBCAGNgJYIAQgAjYCVCAEIAc2AlAgACAEQdAAahDDByEFIARBgAFqJAAgBQvjBQIGfwN+IwBB8ABrIgIkACABEO8xIQMgAkEwakEQakEAKQPw35kBIgg3AwAgAkEwakEIakEAKQPo35kBIgk3AwAgAkEAKQPg35kBIgo3AzACQAJAAkAgARCwFiACQTBqEMU1DQAgAkEwahDhECACIAEQ+yAgAigCBCEDIAIoAgAhBCACQQxqIAEQ3xogAkHYAGpBEGogCDcDACACQdgAakEIaiAJNwMAIAJBATYCNCACQaTXoQE2AjAgAkIBNwI8IAJBogI2AlAgAiAKNwNYIAIgAkHMAGo2AjggAiACQdQAajYCTCACIAJB2ABqNgJUIAJBGGogAkEwahDmIiACQdgAahDhECACQSxqIAJBDGpBCGooAgA2AgAgAiACKQIMNwIkIAQgAyACQRhqEP4iIQMCQCABELAWIgRFDQAgBCgCAEEkRw0AIAEgASkDGDcDUCABKAIAIQQgAUElNgIAIARBJEcNAiABIAEoAgQQ4xMLIABBgICAgHg2AgAgACADNgIEDAILIAEgASkDGDcDUCABKAIAIQQgAUElNgIAIAJB2ABqQQxqIAFBDGopAgA3AgAgAkHYAGpBFGogAUEUaigCADYCACACIAEpAgQ3AlwgAiAENgJYIAJB2ABqEOEQIAJBMGoQ4RAgASABKALMAiIEQYCAgIACchDhDyACQdgAakEQakEAKQP4w5kBNwMAIAJB2ABqQQhqQQApA/DDmQE3AwAgAkEAKQPow5kBNwNYIAJBMGogAUEAIAJB2ABqEOsBIAJB2ABqEOEQIAIoAjQhBQJAIAIoAjAiBkGAgICAeEYNACACKAI4IQcgASAEEKA+IAAgBzYCCCAAIAU2AgQgACAGNgIAIAAgAyABKAJUIgEgAyABSxs2AhAgACADIAEgAyABSRs2AgwMAgsgAEGAgICAeDYCACAAIAU2AgQgASAEEKA+DAELQZTOoQFBKEHY4ZkBENMnAAsgAkHwAGokAAv2BQEBfyMAQRBrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIAKAIADhMAAQIDBAUGBwgJCgsMDQ4PEBESAAsgAiAAQQRqNgIMIAFB8vKgAUEFIAJBDGpBvAcQ6RAhAQwSCyACIABBBGo2AgwgAUHA4KIBQQUgAkEMakGcBhDpECEBDBELIAIgAEEEajYCDCABQffyoAFBCCACQQxqQYoHEOkQIQEMEAsgAiAAQQRqNgIMIAFB//KgAUEEIAJBDGpBvQcQ6RAhAQwPCyACIABBBGo2AgwgAUGD86ABQQYgAkEMakG+BxDpECEBDA4LIAIgAEEIajYCDCABQYnzoAFBByACQQxqQb8HEOkQIQEMDQsgAiAAQQhqNgIMIAFBkPOgAUEFIAJBDGpBjgcQ6RAhAQwMCyACIABBCGo2AgwgAUGV86ABQQggAkEMakGPBxDpECEBDAsLIAIgAEEEajYCDCABQZ3zoAFBAiACQQxqQcAHEOkQIQEMCgsgAiAAQQRqNgIMIAFBn/OgAUEGIAJBDGpBwQcQ6RAhAQwJCyACIABBBGo2AgwgAUGl86ABQQUgAkEMakHCBxDpECEBDAgLIAIgAEEEajYCDCABQarzoAFBAyACQQxqQcMHEOkQIQEMBwsgAiAAQQRqNgIMIAFBrfOgAUEFIAJBDGpBxAcQ6RAhAQwGCyACIABBBGo2AgwgAUGy86ABQQcgAkEMakHFBxDpECEBDAULIAIgAEEEajYCDCABQbnzoAFBAyACQQxqQcYHEOkQIQEMBAsgAiAAQQRqNgIMIAFBvPOgAUEFIAJBDGpBxwcQ6RAhAQwDCyACIABBBGo2AgwgAUHB86ABQQUgAkEMakHIBxDpECEBDAILIAIgAEEIajYCDCABQcbzoAFBBCACQQxqQckHEOkQIQEMAQsgAiAAQQRqNgIMIAFByvOgAUEEIAJBDGpBygcQ6RAhAQsgAkEQaiQAIAEL9gUBAX8jAEEQayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiACgCAA4TAAECAwQFBgcICQoLDA0ODxAREgALIAIgAEEEajYCDCABQfLyoAFBBSACQQxqQdsJEOkQIQEMEgsgAiAAQQRqNgIMIAFBwOCiAUEFIAJBDGpBnAYQ6RAhAQwRCyACIABBBGo2AgwgAUH38qABQQggAkEMakGKBxDpECEBDBALIAIgAEEEajYCDCABQf/yoAFBBCACQQxqQdwJEOkQIQEMDwsgAiAAQQRqNgIMIAFBg/OgAUEGIAJBDGpB3QkQ6RAhAQwOCyACIABBCGo2AgwgAUGJ86ABQQcgAkEMakHeCRDpECEBDA0LIAIgAEEIajYCDCABQZDzoAFBBSACQQxqQY4HEOkQIQEMDAsgAiAAQQhqNgIMIAFBlfOgAUEIIAJBDGpBjwcQ6RAhAQwLCyACIABBBGo2AgwgAUGd86ABQQIgAkEMakHfCRDpECEBDAoLIAIgAEEEajYCDCABQZ/zoAFBBiACQQxqQeAJEOkQIQEMCQsgAiAAQQRqNgIMIAFBpfOgAUEFIAJBDGpB4QkQ6RAhAQwICyACIABBBGo2AgwgAUGq86ABQQMgAkEMakHiCRDpECEBDAcLIAIgAEEEajYCDCABQa3zoAFBBSACQQxqQeMJEOkQIQEMBgsgAiAAQQRqNgIMIAFBsvOgAUEHIAJBDGpB5AkQ6RAhAQwFCyACIABBBGo2AgwgAUG586ABQQMgAkEMakHlCRDpECEBDAQLIAIgAEEEajYCDCABQbzzoAFBBSACQQxqQeYJEOkQIQEMAwsgAiAAQQRqNgIMIAFBwfOgAUEFIAJBDGpB5wkQ6RAhAQwCCyACIABBCGo2AgwgAUHG86ABQQQgAkEMakHoCRDpECEBDAELIAIgAEEEajYCDCABQcrzoAFBBCACQQxqQekJEOkQIQELIAJBEGokACABC9UFAgR/A34jAEHAAGsiAyQAIANBJGogAkEIaigCADYCACADIAE2AhggAyACKQIANwIcIAEQ8zEhAiADQThqIgRBACkDkLyZASIHNwMAIANBKGpBCGoiBUEAKQOIvJkBIgg3AwAgA0EAKQOAvJkBIgk3AyggARCxFiADQShqENM1IQYgA0EoahDiEAJAAkACQAJAAkACQCAGRQ0AIAEQwh4iBkUNACADQThqQQApA8jBmQE3AwAgA0EwakEAKQPAwZkBNwMAIANBACkDuMGZATcDKCADQShqIAYQhwchBiADQShqEOIQIAYNAQsgBCAHNwMAIAUgCDcDACADIAk3AyggARCxFiADQShqENM1IQYgA0EoahDiEAJAAkAgBkUNACABEMIeIgZFDQAgA0E4akEAKQOQxJkBNwMAIANBMGpBACkDiMSZATcDACADQQApA4DEmQE3AyggA0EoaiAGEIcHIQYgA0EoahDiECAGDQELIAMgARD7ICADKAIEIQIgAygCACEGIANBx4CAgHg2AiggBiACIANBKGoQ/iIhAgJAIAEQsRYiBkUNACAGKAIAQSRHDQAgASABKQMYNwNQIAEoAgAhBiABQSU2AgAgBkEkRw0DIAEgASgCBBDjEwsgAEETNgIAIAAgAjYCBAwFCyADQQhqIAEQiAggAygCDCEGIAMoAghFDQMgAEETNgIAIAAgBjYCBAwECyADQRBqIAEQiAggAygCFCEGIAMoAhBFDQEgAEETNgIAIAAgBjYCBAwDC0GUzqEBQShB2OGZARDTJwALIAEQhA4aIAAgBjYCBCAAQRI2AgAgACACIAEoAlQiASACIAFLGzYCDCAAIAIgASACIAFJGzYCCAwBCyABEIQOGiAAIAY2AgQgAEESNgIAIAAgAiABKAJUIgEgAiABSxs2AgwgACACIAEgAiABSRs2AggLIANBHGoQnTcgA0HAAGokAAvMBQEKfyMAQRBrIgIkACAAQcAAahChNAJAIAAoAoQBIgNFDQAgA0HYAGwhBCAAKAKAAUEEaiEDA0ACQAJAIANBfGooAgAiBUEFRg0AIAVBBEYNAQJAAkACQCAFDgQEAAECBAsgAygCAEEBRw0DIANBBGooAgAgARCAAwwDCyADKAIAIAEQ9QYMAgsgAyABEJUSDAELIAMoAgAgARCAAwsgA0HYAGohAyAEQah/aiIEDQALCwJAIAAoApgBIgNFDQAgACgClAEiBiADQShsaiEHA0ACQAJAAkACQAJAIAYoAgAOBQQAAQIDBAsgBigCBEEBRw0DIAYoAgggARCAAwwDCyAGKAIEIAEQgAMMAgsgBigCBCABEPUGDAELIAYoAgwiA0UNACAGKAIIIgggA0EobGohCQNAAkACQAJAAkACQCAIKAIADgUEAAECAwQLIAgoAgRBAUcNAyAIKAIIIAEQgAMMAwsgCCgCBCABEIADDAILIAgoAgQiCkHAAGoQoTQCQCAKKAKEASIERQ0AIAooAoABIQMgBEHYAGwhBANAIAMgARDcICADQdgAaiEDIARBqH9qIgQNAAsLAkAgCkGYAWooAgAiA0UNACAKQZQBaigCACIFIANBKGxqIQsDQAJAAkACQAJAAkAgBSgCAA4FBAABAgMECyAFKAIEQQFHDQMgBSgCCCABEIADDAMLIAUoAgQgARCAAwwCCyAFKAIEIAEQ9QYMAQsgBSgCDCEEIAUoAgghAyACIAE2AgwgBEUNACAEQShsIQQDQCACQQxqIAMQ5wogA0EoaiEDIARBWGoiBA0ACwsgBUEoaiIFIAtHDQALCyAKLQA8QQZGDQEgCkEQahChNAwBCyAIQQRqIAEQhQoLIAhBKGoiCCAJRw0ACwsgBkEoaiIGIAdHDQALCwJAIAAtADxBBkYNACAAQRBqEKE0CyACQRBqJAAL0gUCCX8BfiMAQSBrIgQkACAEQRBqIAFB0dGhAUEBEPw2AkACQAJAAkACQAJAAkAgBC0AEEEERw0AIAIgA2ohBUEAIQYgAiEHAkACQANAQQAhCANAAkAgByAIaiIJIAVHDQAgAyAGRg0IAkAgBkUNACADIAZNDQQgAiAGaiwAAEG/f0wNBAsgBEEIaiABIAIgBmogAyAGaxD8NiAELQAIIQgMBwsgCEEBaiEIIAktAAAiCkHAz6EBai0AACIJRQ0ACwJAIAYgCGoiC0F/aiIMIAZNDQACQCAGRQ0AAkAgAyAGTQ0AIAIgBmosAABBv39KDQEMDAsgAyAGRw0LCwJAAkAgDCADTw0AIAIgDGosAABBv39MDQwMAQsgDCADRw0LCyAEQRBqIAEgAiAGaiAMIAZrEPw2IAQtABBBBEcNAwsCQAJAAkACQAJAAkACQAJAIAlBkn9qDggBDAwMAgwDBAALAkACQAJAIAlBnn9qDgUBDg4OAgALIAlBIkYNBiAJQdwARw0NQeTRoQEhCQwHC0Hm0aEBIQkMBgtB6NGhASEJDAULQerRoQEhCQwEC0Hs0aEBIQkMAwtB7tGhASEJDAILIARB3OrBgQM2ABogBCAKQQ9xQYjhogFqLQAAOgAfIAQgCkEEdkGI4aIBai0AADoAHiAEQRBqIAEgBEEaakEGEPw2DAILQeLRoQEhCQsgBEEQaiABIAlBAhD8NgsCQCAELQAQQQRHDQAgByAIaiEHIAshBgwBCwsgBCAEKQMQIg03AwggDachCAwECyACIAMgBiADQbDPoQEQiDcACyAEIAQpAxAiDTcDCCANpyEIDAILIAAgBCkDEDcCAAwEC0GUzqEBQShBoM+hARDTJwALIAhB/wFxQQRHDQELIAAgAUHR0aEBQQEQ/DYMAQsgACAEKQMINwIACyAEQSBqJAAPCyACIAMgBiAMQcDRoQEQiDcAC78FAQ5/IwBBEGsiAyQAAkACQAJAAkACQCACRQ0AIAAtAP0CQQFxRQ0EIAAgACgCuAJBAWo2ArgCAkAgACgC9AJBA0sNACAAQegCaiIEIAEtAAAiBRCAHCAALQD6AkEBRw0AIAQgBRDIKhCAHAsCQCAALQC3AkEBRw0AAkAgACgCsAJBA0sNAAJAIAJB/wFNDQAgAEEAOgC3AgwCCyAAQRBqIQYgAEGQAmohByABIAJqIQggAS0AACIJQdyphAFqLQAAIQpBACEEIAAtALYCQQFxIQsgASEFA0AgBEGAAiAEQYACSxshDEEAIQ0DQAJAIAUgCEcNACANQQFxDQQgBiAJEP8nIAAtALYCQQFHDQQgBiAJEMgqEP8nDAQLIAwgBEYNBSAGIAUtAAAiDmoiDyAPLQAAIhAgBEH/AXEiDyAQIA9LGzoAAAJAIAtFDQAgBiAOEMgqQf8BcWoiECAQLQAAIhAgDyAQIA9LGzoAAAsgBEEBaiEEIAVBAWohBSANQQFxIQ9BASENIA8NAEEBIQ0gByAOEPsjDQALIA5B3KmEAWotAAAiDyAKQf8BcSINIA8gDUkiDxshCiAOIAkgDxshCQwACwsgAEEAOgC3AgsgACAAKAIMIgRBAWo2AgwCQAJAIAQNACADQQRqIAJBAEEBQQEQ6w8gAygCCCEEIAMoAgRBAUYNBCADKAIMIAEgAhDfCiEFIAAoAgAgACgCBBCLNSAAIAI2AgggACAFNgIEIAAgBDYCAAwBCyAAKAIAIAAoAgQQizUgAEGAgICAeDYCAAsgACgCvAJBgICAgHhGDQQgAC0A5QINBCAAQbwCaiEEIAAoAsQCQYABSQ0DIABBAToA5QIgBBDgIgwECyAAQQA6AP0CDAMLQYSXgAEQ/TkACyAEIAMoAgwQ+DkACyAEIAEgAhDzDgsgA0EQaiQAC6EFAQt/IwBBsAFrIgMkAAJAAkACQAJAAkACQCABLQALQQFxDQAgAigCCCIEIAIoAgwiBU8NAiACIARBAWoiBDYCCCADQfAAaiACKAIAIgYgAigCBCIHEFEgAygCeCEIIAMoAnQhCSADKAJwIQogA0EIaiADQfwAakE0EN8KGgwBCyACKAIIIgQgAigCDCIFTw0BIAIgBUF/aiIFNgIMIANB8ABqIAIoAgAiBiACKAIEIgcQUSADKAJ4IQggAygCdCEJIAMoAnAhCiADQQhqIANB/ABqQTQQ3woaCyAKQVZqDgICAAELIANB8ABqIAEQ6CwgAEEIaiEBIAMoAnQhAgJAAkAgAygCcCIFQSpHDQAgASACNgIADAELIAEgA0HwAGpBCGpBOBDfChoLIAAgBTYCACAAIAI2AgQMAgsgAEEMaiADQQhqQTQQ3woaIAAgCDYCCCAAIAk2AgQgACAKNgIADAELIANB/ABqIQsDQAJAAkACQAJAAkAgAS0AC0EBcQ0AIAQgBU8NAiACIARBAWoiBDYCCCADQfAAaiAGIAcQUSADKAJ4IQwgAygCdCENIAMoAnAhCiADQTxqIAtBNBDfChoMAQsgBCAFTw0BIAIgBUF/aiIFNgIMIANB8ABqIAYgBxBRIAMoAnghDCADKAJ0IQ0gAygCcCEKIANBPGogC0E0EN8KGgsgCkEqRg0CIApBK0cNAQsgACAINgIIIAAgCTYCBCAAQSo2AgAMAwsgAEEMaiADQTxqQTQQ3woaIAAgDDYCCCAAIA02AgQgACAKNgIADAILIANB8ABqIAEgCCANEL0LAkAgAygCcCIIQSpGDQAgAEEEaiADQfAAakEEckE8EN8KGiAAIAg2AgAMAgsgDCEIDAALCyADQbABaiQAC6cFAQ1/QQAhAwJAIAAoAgAiBEEIaigCAA0AIAQQ0xkhAwsCQAJAIARBEGoiBSgCACAEQRRqIgYoAgAgA0HsqIQBEOowKAIAIgcNACABIAJqIQggBEEIaiEJIARBBGohCgJAA0ACQAJAAkAgASAIRw0AQQEhAiAEIAQoAhgiB0EBajYCGCAEQRRqKAIAIgsgA0sNASADIAtB/KiEARChGwALIAEtAAAhDCABQQFqIQECQCAKKAIAIAkoAgAgA0GMqYQBEIExIgIoAggiBw0AQQAhBwwCCyACKAIEIQ1BACECIAxB/wFxIQ4CQANAAkAgB0EBSw0AAkAgDSACQQN0IgtqLQAAIgcgDkYNACACIAcgDklqIQcMBQsgCigCACAJKAIAIANBnKmEARCBMSIHKAIIIg8gAk0NAiAFKAIAIAYoAgAgBygCBCALaigCBCIDQbyphAEQ6jAoAgAiB0UNBQwHCyACIAdBAXYiCyACaiIPIA0gD0EDdGotAAAgDksbIQIgByALayEHDAALCyACIA9BrKmEARChGwALIARBEGooAgAgA0ECdGogBzYCAAwECyAEENMZIQ4CQCAJKAIAIgIgA00NACAKKAIAIANBDGxqIgsoAggiAiAHSQ0CAkAgAiALKAIARw0AIAsQyyYLIAsoAgQgB0EDdGohDwJAIAIgB00NACAPQQhqIA8gAiAHa0EDdBDxPRoLIA8gDjYCBCAPIAw6AAAgCyACQQFqNgIIIA4hAwwBCwsgAyACQcyphAEQoRsACyAHIAJBtKWEARCmGwALQQAhAiAAKAIELQAAQQFGDQAgB0F/aiELAkAgACgCCCIHKAIIIgIgBygCAEcNACAHEMImCyAHKAIEIAJBAnRqIAs2AgAgByACQQFqNgIIQQAPCyACC/EFAQF/IwBBEGsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADhMAAQIDBAUGBwgJCgsMDQ4PEBESAAsgAiAAQQRqNgIMIAFB8vKgAUEFIAJBDGpB0gMQ6RAhAAwSCyACIABBBGo2AgwgAUHA4KIBQQUgAkEMakHTAxDpECEADBELIAIgAEEEajYCDCABQffyoAFBCCACQQxqQdQDEOkQIQAMEAsgAiAAQQRqNgIMIAFB//KgAUEEIAJBDGpB1QMQ6RAhAAwPCyACIABBBGo2AgwgAUGD86ABQQYgAkEMakHWAxDpECEADA4LIAIgAEEIajYCDCABQYnzoAFBByACQQxqQdcDEOkQIQAMDQsgAiAAQQhqNgIMIAFBkPOgAUEFIAJBDGpB2AMQ6RAhAAwMCyACIABBCGo2AgwgAUGV86ABQQggAkEMakHZAxDpECEADAsLIAIgAEEEajYCDCABQZ3zoAFBAiACQQxqQdoDEOkQIQAMCgsgAiAAQQRqNgIMIAFBn/OgAUEGIAJBDGpB2wMQ6RAhAAwJCyACIABBBGo2AgwgAUGl86ABQQUgAkEMakHcAxDpECEADAgLIAIgAEEEajYCDCABQarzoAFBAyACQQxqQd0DEOkQIQAMBwsgAiAAQQRqNgIMIAFBrfOgAUEFIAJBDGpB3gMQ6RAhAAwGCyACIABBBGo2AgwgAUGy86ABQQcgAkEMakHfAxDpECEADAULIAIgAEEEajYCDCABQbnzoAFBAyACQQxqQeADEOkQIQAMBAsgAiAAQQRqNgIMIAFBvPOgAUEFIAJBDGpB4QMQ6RAhAAwDCyACIABBBGo2AgwgAUHB86ABQQUgAkEMakHiAxDpECEADAILIAIgAEEIajYCDCABQcbzoAFBBCACQQxqQeMDEOkQIQAMAQsgAiAAQQRqNgIMIAFByvOgAUEEIAJBDGpB5AMQ6RAhAAsgAkEQaiQAIAAL8QUBAX8jAEEQayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOEwABAgMEBQYHCAkKCwwNDg8QERIACyACIABBBGo2AgwgAUHy8qABQQUgAkEMakHWBhDpECEADBILIAIgAEEEajYCDCABQcDgogFBBSACQQxqQZwGEOkQIQAMEQsgAiAAQQRqNgIMIAFB9/KgAUEIIAJBDGpBigcQ6RAhAAwQCyACIABBBGo2AgwgAUH/8qABQQQgAkEMakGLBxDpECEADA8LIAIgAEEEajYCDCABQYPzoAFBBiACQQxqQYwHEOkQIQAMDgsgAiAAQQhqNgIMIAFBifOgAUEHIAJBDGpBjQcQ6RAhAAwNCyACIABBCGo2AgwgAUGQ86ABQQUgAkEMakGOBxDpECEADAwLIAIgAEEIajYCDCABQZXzoAFBCCACQQxqQY8HEOkQIQAMCwsgAiAAQQRqNgIMIAFBnfOgAUECIAJBDGpBkAcQ6RAhAAwKCyACIABBBGo2AgwgAUGf86ABQQYgAkEMakGRBxDpECEADAkLIAIgAEEEajYCDCABQaXzoAFBBSACQQxqQZIHEOkQIQAMCAsgAiAAQQRqNgIMIAFBqvOgAUEDIAJBDGpBkwcQ6RAhAAwHCyACIABBBGo2AgwgAUGt86ABQQUgAkEMakGUBxDpECEADAYLIAIgAEEEajYCDCABQbLzoAFBByACQQxqQZUHEOkQIQAMBQsgAiAAQQRqNgIMIAFBufOgAUEDIAJBDGpBlgcQ6RAhAAwECyACIABBBGo2AgwgAUG886ABQQUgAkEMakGXBxDpECEADAMLIAIgAEEEajYCDCABQcHzoAFBBSACQQxqQZgHEOkQIQAMAgsgAiAAQQhqNgIMIAFBxvOgAUEEIAJBDGpBmQcQ6RAhAAwBCyACIABBBGo2AgwgAUHK86ABQQQgAkEMakGaBxDpECEACyACQRBqJAAgAAvwBQEGfyMAQSBrIgUkACAFIAM6AAcCQCABKAIEIgYgASgCCCIHIAJBnIeAARDrMCgCBEUNACAGIAcgAkGsh4ABEOswIQggASgCHCABKAIgIAgoAgQgASADQf8BcWpByABqLQAAakG8h4ABEOowIAQ2AgALAkACQAJAAkACQAJAAkAgBiAHIAJBzIeAARDrMCgCACIJRQ0AIAEoAhAiBiABKAIUIgcgCUHch4ABEOwwLQAAIANB/wFxIghLDQAgBiAHIAlB7IeAARDsMC0AACAIRg0BIAYgByAJQfyHgAEQ7DAhCCADQf8BcSEKA0ACQCAIKAAFIgINAEEAIQIMBQsCQCAGIAcgAkGMiIABEOwwLQAAIApPDQAgBiAHIAJB/IiAARDsMCEIIAIhCQwBCwsgBiAHIAJBnIiAARDsMC0AACADQf8BcSIISw0DIAYgByACQayIgAEQ7DAiAS0AACAIRw0CIAYgByACQcyIgAEQ7DAgBDYAAQwECyAFQQhqIAEQrBUgBSgCDCEGAkAgBSgCCCIHQQNHDQAgASgCECABKAIUIAZBnImAARDsMCIHIAk2AAUgByAENgABIAcgAzoAACABKAIEIAEoAgggAkGsiYABEOswIQIgAEEDNgIAIAIgBjYCAAwGCyAAIAUpAxA3AwggAEEQaiAFQQhqQRBqKQMANwMAIAAgBjYCBCAAIAc2AgAMBQsgBiAHIAlBjImAARDsMCECIABBAzYCACACIAQ2AAEMBAsgBUEANgIIQQAgBUEHaiABIAVBCGpBvIiAARCcKwALIAVBCGogARCsFSAFKAIMIQYgBSgCCCIHQQNHDQEgASgCECIHIAEoAhQiCCAGQdyIgAEQ7DAiASACNgAFIAEgBDYAASABIAM6AAAgByAIIAlB7IiAARDsMCAGNgAFCyAAQQM2AgAMAQsgACAFKQMQNwMIIABBEGogBUEIakEQaikDADcDACAAIAY2AgQgACAHNgIACyAFQSBqJAAL2wUCA38BfiMAQfAAayIEJAAgBEHAAGpBACkDkMSZATcDACAEQThqQQApA4jEmQE3AwAgBEEAKQOAxJkBNwMwAkACQCABELEWIARBMGoQyzUNACAEQTBqEOIQIARBKGogASACIANBABDhGiAEKAIsIQUgBCgCKCEGDAELIAEgASkDGDcDUCABKAIAIQUgAUElNgIAIARB2ABqQQxqIAFBDGopAgA3AgAgBEHYAGpBFGogAUEUaigCADYCACAEIAEpAgQ3AlwgBCAFNgJYIARB2ABqEOIQIARBMGoQ4hBBASEGIAFBAToAjAMgBEHYAGogARCGCCAEKAJgIQUgBCkDWCIHUA0AIAQgBCgCZDYCPCAEIAU2AjggBCAHNwMwIARBIGogBEEwahDJEwJAAkACQCAEKAIgIgUgBCgCJCIGQfTomgFBBBCgMQ0AAkAgBSAGQeukoQFBBhCgMQ0AIARB2ABqQQRyIAEQ3xogBEEYaiABEPsgIARBBDYCbCAEQfTomgE2AmggBEGwgICAeDYCWCAEKAIYIAQoAhwgBEHYAGoQ/iIhBQJAIAEQsRYiBkUNACAGKAIAQSRHDQAgASABKQMYNwNQIAEoAgAhBiABQSU2AgAgBkEkRw0DIAEgASgCBBDjEwsgBCkDMBDSH0EBIQYMBAsgBEEQaiABIAIgA0EBEOEaIAQoAhQhBSAEKAIQIQYMAgsgAiABKAJUIgUgAiAFSRshBiACIAUgAiAFSxshBQJAIAEtAMwCQQRxDQAgBEHIgICAeDYCWCABIAYgBSAEQdgAahCIKgsgBEEBOgBUIAQgBTYCUCAEIAY2AkwgBEHMAGoQoywhBSAEQQU6AGAgBCAFNgJYIARBCGogASAEQdgAaiADQQAQSCAEKAIMIQUgBCgCCCEGDAELQZTOoQFBKEHY4ZkBENMnAAsgBCkDMBDSHwsgACAFNgIEIAAgBjYCACAEQfAAaiQAC5UFARF/IwBBMGsiBSQAIAUgASgCCCIGNgIUAkAgBkHAAEcNAEEAIQcCQAJAAkAgASgCECIIIARqIgYgA0sNACAGIARJDQIgASACIARqIAgQ1xghCSABKAIUIQogASgCBCELIAEoAgwiDEEQaiENAkADQCALIAlBP3FBDGxqIgEoAgQiDiABKAIIQQN0aiEPIAIgBGohECADIARrIREDQAJAAkACQAJAIA4iASAPRw0AIAQgCGoiASADTw0HIAMgBEYNASAJIAogEC0AAGxrQQF0IAIgAWotAABqIQkgBEEBaiEEDAULIAFBCGohDiABKAIAIAlHDQMgBUEIaiAMQQxqKAIAIA0oAgAgASgCBCISEPYuIAMgBEkNASAFKAIMIhMgEUsNAyAFKAIIIQYgE0EESQ0CIAYgE0F8aiIBaiEUIBAgAWohFSAQIQECQANAIAEgFU8NASABKAAAIAYoAABHDQUgBkEEaiEGIAFBBGohAQwACwsgFSgAACAUKAAARw0DDAULIAMgA0H0s4ABEKEbAAsgBCADQZS0gAEQohsACwJAAkACQCATDgQFAgEABQsgEC8AACAQQQJqLQAAQRB0ciAGLwAAIAZBAmotAABBEHRyRw0CQQMhEwwECyAQLwAAIAYvAABHDQFBAiETDAMLIBAtAAAgBi0AAEcNAAsLQQEhEwsgEyAEaiIBIBNJDQEgACASNgIMIAAgATYCCCAAIAQ2AgRBASEHCyAAIAc2AgAgBUEwaiQADwsgBUEANgIoIAVBATYCHCAFQayVgwE2AhggBUIENwIgIAVBGGpBtJWDARCtLgALIAQgBkHks4ABEKQbAAsgBUEANgIYQeCzgAEgBUEUaiAFQRhqQYS0gAEQnisAC6cFAgl/AX4jAEEQayIBJAACQCAALQAUQQJGDQAgACkDACIKQgODQgBSDQAgASAKpyICNgIMIAFBDGoQ9QcgAiACKAIAIgNBf2o2AgAgA0EBRw0AIAIgAigCIBDTLwsgACgCGCIEQQRqKAIAIQACQCAEKAIIIgJFDQADQCAAKAIAIgMQqgEgA0HAAEEIEO4cIABBDGohACACQX9qIgINAAsgBEEEaigCACEACyAEKAIAIAAQ3DMgBEEQaigCACEAAkAgBCgCFCICRQ0AA0AgABCeAyAAQdgAaiEAIAJBf2oiAg0ACyAEQRBqKAIAIQALIAQoAgwgABDiMwJAIAQoAjAiAEUNACAAEKoBIABBwABBCBDuHAsCQCAEKAI0IgNFDQAgA0EEaigCACEAAkAgAygCCCICRQ0AA0AgABCtFiAAQTBqIQAgAkF/aiICDQALIANBBGooAgAhAAsgAygCACAAEN4zIANBFEEEEO4cCwJAIAQoAjgiBUUNACAFQQRqKAIAIQACQCAFKAIIIgJFDQADQCAAKAIAIgMQjAMgA0HgAEEIEO4cIABBBGohACACQX9qIgINAAsgBUEEaigCACEACyAFKAIAIAAQ3zMgBUEUQQQQ7hwLIARBHGooAgAhBgJAIAQoAiAiB0UNAEEAIQgDQCAGIAhBBHRqIgAoAgAiAhCqASACQcAAQQgQ7hwCQCAAKAIMIgVFDQAgBUEEaiIJKAIAIQACQCAFKAIIIgJFDQADQCAAKAIAIgMQjAMgA0HgAEEIEO4cIABBBGohACACQX9qIgINAAsgCSgCACEACyAFKAIAIAAQ3zMgBUEUQQQQ7hwLIAhBAWoiCCAHRw0ACyAEQRxqKAIAIQYLIAQoAhggBhDbMyAEQcAAQQQQ7hwgAUEQaiQAC6cFAgl/AX4jAEEQayIBJAACQCAALQAUQQJGDQAgACkDACIKQgODQgBSDQAgASAKpyICNgIMIAFBDGoQ9QcgAiACKAIAIgNBf2o2AgAgA0EBRw0AIAIgAigCIBDTLwsgACgCGCIEQQRqKAIAIQACQCAEKAIIIgJFDQADQCAAKAIAIgMQogEgA0HAAEEIEO4cIABBDGohACACQX9qIgINAAsgBEEEaigCACEACyAEKAIAIAAQ3DMgBEEQaigCACEAAkAgBCgCFCICRQ0AA0AgABC1BCAAQdgAaiEAIAJBf2oiAg0ACyAEQRBqKAIAIQALIAQoAgwgABDiMwJAIAQoAjAiAEUNACAAEKIBIABBwABBCBDuHAsCQCAEKAI0IgNFDQAgA0EEaigCACEAAkAgAygCCCICRQ0AA0AgABDBFiAAQTBqIQAgAkF/aiICDQALIANBBGooAgAhAAsgAygCACAAEN4zIANBFEEEEO4cCwJAIAQoAjgiBUUNACAFQQRqKAIAIQACQCAFKAIIIgJFDQADQCAAKAIAIgMQiQMgA0HgAEEIEO4cIABBBGohACACQX9qIgINAAsgBUEEaigCACEACyAFKAIAIAAQ3zMgBUEUQQQQ7hwLIARBHGooAgAhBgJAIAQoAiAiB0UNAEEAIQgDQCAGIAhBBHRqIgAoAgAiAhCiASACQcAAQQgQ7hwCQCAAKAIMIgVFDQAgBUEEaiIJKAIAIQACQCAFKAIIIgJFDQADQCAAKAIAIgMQiQMgA0HgAEEIEO4cIABBBGohACACQX9qIgINAAsgCSgCACEACyAFKAIAIAAQ3zMgBUEUQQQQ7hwLIAhBAWoiCCAHRw0ACyAEQRxqKAIAIQYLIAQoAhggBhDbMyAEQcAAQQQQ7hwgAUEQaiQAC6cFAgl/AX4jAEEQayIBJAACQCAALQAUQQJGDQAgACkDACIKQgODQgBSDQAgASAKpyICNgIMIAFBDGoQ9QcgAiACKAIAIgNBf2o2AgAgA0EBRw0AIAIgAigCIBDTLwsgACgCGCIEQQRqKAIAIQACQCAEKAIIIgJFDQADQCAAKAIAIgMQqAEgA0HAAEEIEO4cIABBDGohACACQX9qIgINAAsgBEEEaigCACEACyAEKAIAIAAQ3DMgBEEQaigCACEAAkAgBCgCFCICRQ0AA0AgABDdAiAAQdgAaiEAIAJBf2oiAg0ACyAEQRBqKAIAIQALIAQoAgwgABDiMwJAIAQoAjAiAEUNACAAEKgBIABBwABBCBDuHAsCQCAEKAI0IgNFDQAgA0EEaigCACEAAkAgAygCCCICRQ0AA0AgABDKFiAAQTBqIQAgAkF/aiICDQALIANBBGooAgAhAAsgAygCACAAEN4zIANBFEEEEO4cCwJAIAQoAjgiBUUNACAFQQRqKAIAIQACQCAFKAIIIgJFDQADQCAAKAIAIgMQjQMgA0HgAEEIEO4cIABBBGohACACQX9qIgINAAsgBUEEaigCACEACyAFKAIAIAAQ3zMgBUEUQQQQ7hwLIARBHGooAgAhBgJAIAQoAiAiB0UNAEEAIQgDQCAGIAhBBHRqIgAoAgAiAhCoASACQcAAQQgQ7hwCQCAAKAIMIgVFDQAgBUEEaiIJKAIAIQACQCAFKAIIIgJFDQADQCAAKAIAIgMQjQMgA0HgAEEIEO4cIABBBGohACACQX9qIgINAAsgCSgCACEACyAFKAIAIAAQ3zMgBUEUQQQQ7hwLIAhBAWoiCCAHRw0ACyAEQRxqKAIAIQYLIAQoAhggBhDbMyAEQcAAQQQQ7hwgAUEQaiQAC6cFAgl/AX4jAEEQayIBJAACQCAALQAUQQJGDQAgACkDACIKQgODQgBSDQAgASAKpyICNgIMIAFBDGoQ9QcgAiACKAIAIgNBf2o2AgAgA0EBRw0AIAIgAigCIBDTLwsgACgCGCIEQQRqKAIAIQACQCAEKAIIIgJFDQADQCAAKAIAIgMQqwEgA0HAAEEIEO4cIABBDGohACACQX9qIgINAAsgBEEEaigCACEACyAEKAIAIAAQ3DMgBEEQaigCACEAAkAgBCgCFCICRQ0AA0AgABC2BCAAQdgAaiEAIAJBf2oiAg0ACyAEQRBqKAIAIQALIAQoAgwgABDiMwJAIAQoAjAiAEUNACAAEKsBIABBwABBCBDuHAsCQCAEKAI0IgNFDQAgA0EEaigCACEAAkAgAygCCCICRQ0AA0AgABDZFiAAQTBqIQAgAkF/aiICDQALIANBBGooAgAhAAsgAygCACAAEN4zIANBFEEEEO4cCwJAIAQoAjgiBUUNACAFQQRqKAIAIQACQCAFKAIIIgJFDQADQCAAKAIAIgMQ2wIgA0HgAEEIEO4cIABBBGohACACQX9qIgINAAsgBUEEaigCACEACyAFKAIAIAAQ3zMgBUEUQQQQ7hwLIARBHGooAgAhBgJAIAQoAiAiB0UNAEEAIQgDQCAGIAhBBHRqIgAoAgAiAhCrASACQcAAQQgQ7hwCQCAAKAIMIgVFDQAgBUEEaiIJKAIAIQACQCAFKAIIIgJFDQADQCAAKAIAIgMQ2wIgA0HgAEEIEO4cIABBBGohACACQX9qIgINAAsgCSgCACEACyAFKAIAIAAQ3zMgBUEUQQQQ7hwLIAhBAWoiCCAHRw0ACyAEQRxqKAIAIQYLIAQoAhggBhDbMyAEQcAAQQQQ7hwgAUEQaiQAC6cFAgl/AX4jAEEQayIBJAACQCAALQAUQQJGDQAgACkDACIKQgODQgBSDQAgASAKpyICNgIMIAFBDGoQ9QcgAiACKAIAIgNBf2o2AgAgA0EBRw0AIAIgAigCIBDTLwsgACgCGCIEQQRqKAIAIQACQCAEKAIIIgJFDQADQCAAKAIAIgMQrwEgA0HAAEEIEO4cIABBDGohACACQX9qIgINAAsgBEEEaigCACEACyAEKAIAIAAQ3DMgBEEQaigCACEAAkAgBCgCFCICRQ0AA0AgABChAyAAQdgAaiEAIAJBf2oiAg0ACyAEQRBqKAIAIQALIAQoAgwgABDiMwJAIAQoAjAiAEUNACAAEK8BIABBwABBCBDuHAsCQCAEKAI0IgNFDQAgA0EEaigCACEAAkAgAygCCCICRQ0AA0AgABDlFiAAQTBqIQAgAkF/aiICDQALIANBBGooAgAhAAsgAygCACAAEN4zIANBFEEEEO4cCwJAIAQoAjgiBUUNACAFQQRqKAIAIQACQCAFKAIIIgJFDQADQCAAKAIAIgMQ/AIgA0HgAEEIEO4cIABBBGohACACQX9qIgINAAsgBUEEaigCACEACyAFKAIAIAAQ3zMgBUEUQQQQ7hwLIARBHGooAgAhBgJAIAQoAiAiB0UNAEEAIQgDQCAGIAhBBHRqIgAoAgAiAhCvASACQcAAQQgQ7hwCQCAAKAIMIgVFDQAgBUEEaiIJKAIAIQACQCAFKAIIIgJFDQADQCAAKAIAIgMQ/AIgA0HgAEEIEO4cIABBBGohACACQX9qIgINAAsgCSgCACEACyAFKAIAIAAQ3zMgBUEUQQQQ7hwLIAhBAWoiCCAHRw0ACyAEQRxqKAIAIQYLIAQoAhggBhDbMyAEQcAAQQQQ7hwgAUEQaiQAC+4EAgZ/BH4gAEEIaiECQQAgACgCACIDayEEIAFBP3GtIQhBgHohAUIAIQkCQAJAAkACQAJAAkADQCAEIAFqIgVBgHpGDQMgAUUNASAJQgp+IAAgAWoiBkGIBmoxAAB8IgkgCIhCAFINAiAFQf95Rg0DIAFBAmohASAJQgp+IAZBiQZqMQAAfCIJIAiIUA0ACyABQYAGaiEBDAMLQYAGQYAGQfDPgAEQoRsACyABQYEGaiEBDAELIAlQDQECQCAJIAiIQgBRDQAgAyEBDAELIAMhAQNAIAFBAWohASAJQgp+IgkgCIhQDQALCyAAIAAoAgQgAWtBAWoiBTYCBAJAIAVBgXBODQAgAEEAOgCIBiAAQgA3AgAPC0J/IAiGQn+FIQoCQAJAAkACQCADIAFNDQBBACADayEHIAFBCGohBiADIAFrIQUgAUGABiABQYAGSRtBgHpqIQRBCCEBA0AgBCABakEIRg0CIAAgBmoxAAAhCyAAIAFqIAkgCIg8AAAgCyAJIAqDQgp+fCEJIAFBAWohASAHIAZBAWoiBmpBCEcNAAsgCVANAwwCC0EAIQUgCUIAUg0BIABBADYCAAwDCyAGQXhqQYAGQYDQgAEQoRsACwNAIAkiCyAKg0IKfiEJIAsgCIinIQECQAJAIAVBgAZJDQAgAUH/AXFFDQEgAEEBOgCIBgwBCyACIAVqIAE6AAAgBUEBaiEFCyAJQgBSDQALCyAAIAU2AgAgBUGABksNASAFQQdqIQEDQCAAIAFqLQAADQEgACABQXhqNgIAIAFBf2oiAUEHRw0ACwsPCyAFQX9qQYAGQdDPgAEQoRsAC54FAgR/AX4jAEEgayIDJAAgA0EQaiACIAEoAhgiBCgCJEEAEOQCAkACQAJAAkACQAJAIAMtABBBBEYNACADKQMQIgdC/wGDQgRSDQELAkAgBCgCJCIFRQ0AIANBEGogAiAFELAtIAMtABBBBEYNACADKQMQIgdC/wGDQgRSDQMLIAQoAghBDGwhBSAEKAIEIQYCQAJAA0ACQCAFDQAgBC0APA0CDAcLIANBEGogBiACENAJAkAgAy0AEEEERg0AIAMpAxAiB0L/AYNCBFINAwsgBkEMaiEGIAVBdGohBQwACwsgA0EANgIQIANBCGogAiADQRBqQdKroQFBCBDUEQJAIAMtAAhBBEYNACADKQMIIgdC/wGDQgRSDQMLIANBEGogAhCJFiADLQAQQQRGDQQgAykDECIHQv8Bg0IEUQ0EIAAgBzcCAAwFCyAAIAc3AgAMBAsgACAHNwIADAMLIAAgBzcCAAwCCyAAIAc3AgAMAQsgA0EANgIQIANBCGogAiADQRBqQcSCoQFBBRDUEQJAAkACQAJAIAMtAAhBBEYNACADKQMIIgdC/wGDQgRSDQELIAEtABRBAkYNAiADQRBqIAIQiRYgAy0AEEEERg0BIAMpAxAiB0L/AYNCBFENASAAIAc3AgAMAwsgACAHNwIADAILIANBEGogASACEOoeAkACQCADLQAQQQRGDQAgAykDECIHQv8Bg0IEUg0BCyADQRBqIARBNGogAhCLMiADLQAQQQRGDQEgAykDECIHQv8Bg0IEUQ0BIAAgBzcCAAwCCyAAIAc3AgAMAQsgA0EQaiACIAQQRwJAAkAgAy0AEEEERg0AIAMpAxAiB0L/AYNCBFINAQsgAEEEOgAADAELIAAgBzcCAAsgA0EgaiQAC4QFAQh/QQAhAkEAIQNBACEEAkACQAJAAkAgAS0AHCIFQQFLDQBBACEEQQAhAwJAIAEtAB4iAkEBcQ0AQQAhAyABLQAIIgZBe2pB/wFxQQFLDQAgASgCBCEHIAEoAgAhCEEAIQNBACEJAkAgBQ0AQQAhCSAGQf8BcUEGRg0AQQIhCSAHQQFNDQMLIAkgB0YNACAIIAlqIgYtAAAhCQJAAkAgBkEBaiIGIAggB2pGIgcNACAJQf8BcUEuRw0AIAYtAABBL0YNAQwCCyAHQQFzIAlB/wFxQS5Hcg0BC0EBIQMLIAUNAAJAAkACQAJAAkACQCABLQAIDgcAAQUCAwQGAAsgASgCEEEEaiEEDAULIAEoAhAgASgCGCIEQQFqQQAgBBtqQQhqIQQMBAsgASgCEEEEaiEEDAMLIAEoAhAgASgCGCIEQQFqQQAgBBtqQQJqIQQMAgtBAiEEDAELQQYhBAsgAyACQf8BcWogBGoiCSABKAIEIgVLDQFBACEIQQAgCWshAyABKAIAIgYgCWohByAFIAZqQX9qIQQCQANAIAUgA2pFDQEgA0F/aiEDIAQtAAAhAiAEQX9qIQQgAkEvRw0ACyAFIANqQQFqIAlqIgkgBUsNAyAGIAlqIQdBASEIC0EJIQQCQAJAAkACQCAFIAlrIgMOAwIAAQMLIActAABBLkcNAkEHQQogAS0ACEH/AXFBA0kbIQQMAgsgBy0AAEEuRw0BQQhBCSAHLQABQS5GGyEEDAELQQohBAsgACADNgIMIAAgBzYCCCAAIAQ6AAQgACADIAhqNgIADwtBAiAHQZj1mAEQohsACyAJIAVBqPWYARCiGwALIAkgBUG49ZgBEKIbAAv8BAEGfwJAIAAoAgAiAkF+aiIDQRAgA0EjSRsiBCABKAIAIgVBfmoiA0EQIANBI0kbRw0AQQEhAwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIARBcGoOEwEMAgMMDAwMDAQFBgcICQwMCgsACyAEDQsgAC0ACCIGQX5qQf8BcSIEQQQgBEEESRsiAiABLQAIIgdBfmoiBUH/AXEiBEEEIARBBEkbRw0MAkACQCACDgUADQ0NAQ0LIAVB/wFxDQwgAC0ACSABLQAJRg8LIAVB/wFxQQNNDQtBACEDIAZB/wFxIAdB/wFxRw0LAkAgBkEBcQ0AIAAtAAkgAS0ACUYPCyAAQRBqIAFBEGoQtxIPCyAAQRBqIAFBEGoQtxIhBCACIAVHDQtBACEDIARFDQoCQCACQQFxDQAgAEEIaiABQQhqELcSDwsgAEEEaiABQQRqEJMEDwsgAC0ABCABLQAERg8LIAAtAAQgAS0ABEYPC0EAIQMgAEEIaiABQQhqELcSRQ0HIABBEGogAUEQahC3Eg8LQQAhAyAAQQhqIAFBCGoQtxJFDQYgAEEQaiABQRBqELcSDwtBACEDIAArAxAgASsDEGINBSAAQQhqIAFBCGoQtxIPCyAAKAIQIgQtAAwiAyABKAIQIgItAAxHDQUCQCADQQFGDQBBACEDIAQoAgQgBCgCCCACKAIEIAIoAggQgDBFDQULIABBCGogAUEIahC3Eg8LIABBCGogAUEIahC3Eg8LQQAhAyAAQQhqIAFBCGoQtxJFDQIgAEEQaiABQRBqELcSDwsgAEEIaiABQQhqELcSDwsgAEEEaiABQQRqEJMEIQMLIAMPC0EAC/wEAQZ/AkAgACgCACICQX5qIgNBECADQSNJGyIEIAEoAgAiBUF+aiIDQRAgA0EjSRtHDQBBASEDAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBEFwag4TAQwCAwwMDAwMBAUGBwgJDAwKCwALIAQNCyAALQAIIgZBfmpB/wFxIgRBBCAEQQRJGyICIAEtAAgiB0F+aiIFQf8BcSIEQQQgBEEESRtHDQwCQAJAIAIOBQANDQ0BDQsgBUH/AXENDCAALQAJIAEtAAlGDwsgBUH/AXFBA00NC0EAIQMgBkH/AXEgB0H/AXFHDQsCQCAGQQFxDQAgAC0ACSABLQAJRg8LIABBEGogAUEQahC3Eg8LIABBEGogAUEQahC3EiEEIAIgBUcNC0EAIQMgBEUNCgJAIAJBAXENACAAQQhqIAFBCGoQtxIPCyAAQQRqIAFBBGoQqAQPCyAALQAEIAEtAARGDwsgAC0ABCABLQAERg8LQQAhAyAAQQhqIAFBCGoQtxJFDQcgAEEQaiABQRBqELcSDwtBACEDIABBCGogAUEIahC3EkUNBiAAQRBqIAFBEGoQtxIPC0EAIQMgACsDECABKwMQYg0FIABBCGogAUEIahC3Eg8LIAAoAhAiBC0ADCIDIAEoAhAiAi0ADEcNBQJAIANBAUYNAEEAIQMgBCgCBCAEKAIIIAIoAgQgAigCCBCAMEUNBQsgAEEIaiABQQhqELcSDwsgAEEIaiABQQhqELcSDwtBACEDIABBCGogAUEIahC3EkUNAiAAQRBqIAFBEGoQtxIPCyAAQQhqIAFBCGoQtxIPCyAAQQRqIAFBBGoQqAQhAwsgAw8LQQALyAUCA38BfiMAQRBrIgEkAAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOCAECAwQFBgcIAAsgACkDECIEQgODQgBSDQggASAEpyIANgIEIAFBBGoQ9QcgACAAKAIAIgJBf2o2AgAgAkEBRw0IIAAgACgCIBDTLwwICyAAKAIIIgIgACgCDBDJMCAAKAIEIAIQ/DMgACgCECICELgTIAJBGEEIEO4cIAAoAhwiAEUNByAAQQRqIgIoAgAgAEEIaigCABDzISAAKAIAIAIoAgAQ3DMgAEEUQQQQ7hwMBwsgAEEIahD5BQwGCyAAKAIIIgIgACgCDBDKMCAAKAIEIAIQ/TMCQCAAKAIYIgJFDQAgAhC4EyACQRhBCBDuHAsgACgCHCIARQ0FIABBBGoiAigCACAAQQhqKAIAEPMhIAAoAgAgAigCABDcMyAAQRRBBBDuHAwFCwJAAkACQCAAKAIIDgIBAgALIAAoAgwQ/RAMBgsCQCAALQAkQQJGDQAgACkDECIEQgODQgBSDQAgASAEpyICNgIIIAFBCGoQ9QcgAiACKAIAIgNBf2o2AgAgA0EBRw0AIAIgAigCIBDTLwsgACgCKBCiEAwFCyAAQRBqEI4bDAQLIAAoAgQiABDoASAAQcAAQQgQ7hwMAwsgACgCECECIAAoAgQiABC4EyAAQRhBCBDuHCACRQ0CIAJBBGoiACgCACACQQhqKAIAEPMhIAIoAgAgACgCABDcMyACQRRBBBDuHAwCCwJAIAAoAgQiACkDKCIEQgODQgBSDQAgASAEpyICNgIMIAFBDGoQ9QcgAiACKAIAIgNBf2o2AgAgA0EBRw0AIAIgAigCIBDTLwsCQAJAIAApAwBCAFINACAAQQhqELURDAELIAAQuBMLIABByABBCBDuHAwBCyAAKAIEIgAQ6AEgAEHAAEEIEO4cCyABQRBqJAALjwUCBn8CfiMAQRBrIgEkAAJAAkACQAJAAkAgACgCACICRQ0AQgAhByAAKAIIIgMgACgCBCIETw0DIAIgA2otAABBxwBHDQMgACADQQFqIgU2AgggBSAETw0BIAIgBWotAABB3wBHDQEgACADQQJqNgIIQgAhCAwCCwJAIAAoAhAiAA0AQQAhBQwECyAAQeqroQFBARDfBSEFDAMLQgAhCAJAA0ACQAJAAkACQCAFIARPDQAgAiAFai0AAEHfAEYNAQsgBCAFRg0EIAIgBWotAAAiBkFQaiIDQf8BcUEKSQ0CIAZBn39qQf8BcUEaSQ0BIAZBv39qQf8BcUEaTw0EIAZBY2ohAwwCCyAAIAVBAWo2AgggCEJ9Vg0DIAhCAXwhCAwECyAGQal/aiEDCyAAIAVBAWoiBTYCCCABIAhCAEI+QgAQsBggASkDCEIAUg0BIAEpAwAiByADrUL/AYN8IgggB1oNAAsLAkAgACgCECIFRQ0AIAVB+K6XAUEQEN8FRQ0AQQEhBQwDC0EAIQUgAEEAOgAEIABBADYCAAwCCyAIQgF8IQcLAkACQCAAKAIQIgVFDQAgB1ANAQJAIAVBoa+XAUEEEN8FRQ0AQQEhBQwDCyAAIAAoAhRBAWo2AhQCQCAAQgEQ1xFFDQBBASEFDAMLIAchCANAAkAgCEJ/fCIIQgBSDQAgACgCECICRQ0DQQEhBSACQaWvlwFBAhDfBUUNAwwECwJAIAAoAhAiBUUNACAFQZ7rmgFBAhDfBUUNAEEBIQUMBAtBASEFIAAgACgCFEEBajYCFCAAQgEQ1xFFDQAMAwsLIAAQwwMhBQwBCyAAEMMDIQUgACAAKAIUIAenazYCFAsgAUEQaiQAIAULpQUBBH8jAEEgayIBJAACQAJAIAAQgQZB/wFxIgJBAkcNAEEBIQIMAQsCQAJAAkACQCAAKAIAIgNFDQAgACgCCCIEIAAoAgRPDQAgAyAEai0AAEHwAEcNACAAIARBAWo2AgggACgCECEDAkAgAkEBcQ0AIANFDQJBASECIANBg6uhAUEBEN8FDQUMAgsgA0UNASADQZ7rmgFBAhDfBUUNAUEBIQIMBAsgAkEBcUUNAgwBCwJAAkAgACgCAEUNACABIAAQlQYgASgCAEUNASABQRBqQQhqIAFBCGopAgA3AwAgASABKQIANwMQAkAgACgCECIDRQ0AQQEhAiABQRBqIAMQnQMNBSAAKAIQIgNFDQAgA0H1r5cBQQMQ3wUNBQsCQCAAEO4DRQ0AQQEhAgwFCwNAIAAoAgAiA0UNAyAAKAIIIgIgACgCBE8NAyADIAJqLQAAQfAARw0DIAAgAkEBajYCCAJAIAAoAhAiAkUNAAJAIAJBnuuaAUECEN8FRQ0AQQEhAgwHCyAAKAIARQ0CCyABIAAQlQYgASgCAEUNAiABQRBqQQhqIAFBCGopAgA3AwAgASABKQIANwMQAkAgACgCECIDRQ0AQQEhAiABQRBqIAMQnQMNBiAAKAIQIgNFDQAgA0H1r5cBQQMQ3wUNBgtBASECIAAQ7gNFDQAMBQsLIAAoAhAiAEUNAiAAQeqroQFBARDfBSECDAMLIAAoAhAhAgJAAkAgAS0ABCIDDQAgAkUNASACQfiulwFBEBDfBUUNAUEBIQIMBAsgAkUNACACQYivlwFBGRDfBUUNAEEBIQIMAwsgACADOgAEQQAhAiAAQQA2AgAMAgsgACgCECIARQ0AQQEhAiAAQYKroQFBARDfBQ0BC0EAIQILIAFBIGokACACC80FAQd/IwBBIGsiAiQAIAEQ7Q4aIAFB1AJB2AIgAS0A4QJBAkYbaigCACEDAkACQAJAAkACQAJAAkAgARDtDiIEDQAgASgC/AEhASACQYCAgIB4NgIIIAEgASACQQhqEP4iIQEMAQsgBC0AAEGbAUcNASABQQI6AOECIAEgASkD2AI3A9ACIAEQ3xghAQsgAEETNgIAIAAgATYCBAwBCyABQQI6AOECIAEgASkD2AI3A9ACAkACQAJAIAEQwQ8NAAJAIAEoApACIgRBAnFFDQAgASgChAIiBSgCCCIGQf7///8HSw0FIAUoAhRFDQAgBg0GIAVBfzYCCCABKAKAAiIGKAIIDQcgBkF/NgIIIAUoAhAhByAGQQxqIAUoAhQiCBChMCAGKAIQIAYoAhRBAnRqIAcgCEECdBDfChogBiAIIAYoAhRqNgIUIAVBADYCFCAGIAYoAghBAWo2AgggBSAFKAIIQQFqNgIICyABIARBwAByNgKQAiACIAEQhwUgAigCBCEFIAIoAgANASABIAQQ3BEgARDMDCIEDQIgACAFNgIEIABBCjYCACAAIAMgASgC1AIiASADIAFLGzYCDCAAIAMgASADIAFJGzYCCAwDCyABQdQCaiABQdwCaiABLQDhAkECRiIFGygCACEEIAFB0AJqIAFB2AJqIAUbKAIAIQUgAkGugICAeDYCCCAFIAQgBSAESRsgBSAEIAUgBEsbIAJBCGoQ/iIhBAJAIAEQ7Q4iBUUNACAFLQAAQZsBRw0AIAFBAjoA4QIgASABKQPYAjcD0AIgASABEN8YEPUYCyAAQRM2AgAgACAENgIEDAILIABBEzYCACAAIAU2AgQgASAEENwRDAELIABBEzYCACAAIAQ2AgQgBRDZASAFQcAAQQgQ7hwLIAJBIGokAA8LQZyEmwEQ6iIAC0GMhJsBEOkiAAtB/IObARDpIgALjgUBB38jAEHQAGsiBiQAIAYgBDYCTCAGQQA2AkggBiACNgJEIAYgATYCQCAGIAEgBkHAAGoQ+AYgBigCCCEHIAYoAgQhCAJAAkACQAJAAkACQAJAAkACQCAGKAIAIglBKkcNACAFIARGDQEgBiABEOgsIAYoAgQhCSAGKAIAIgpBKkcNAgJAIAUgBEsNACAHIQUMCAsgBSAEayELA0ACQAJAIAMNACAGIAEQ8yAMAQsgBiABEMYfCyAGKAIEIQQgBigCACIFQSpHDQQgBiABIAIQUSAGKAIIIQUgBigCBCEKIAYoAgAiDEEqRw0FIAYgASAHIAQQvQsgBigCACIHQSpHDQYgBiABIAQgChC9CyAGKAIAIgdBKkcNByAGIAEgBCAJEL0LAkAgBigCACIEQSpHDQAgBSEHIAtBf2oiC0UNCQwBCwsgAEEEaiAGQQRyQTwQ3woaIAAgBDYCAAwICyAAQQxqIAZBDGpBNBDfChogACAHNgIIIAAgCDYCBCAAIAk2AgAMBwsgACAHNgIIIAAgCDYCBCAAQSo2AgAMBgsgAEEIaiAGQQhqQTgQ3woaIAAgCTYCBCAAIAo2AgAMBQsgAEEIaiAGQQhqQTgQ3woaIAAgBDYCBCAAIAU2AgAMBAsgAEEMaiAGQQxqQTQQ3woaIAAgBTYCCCAAIAo2AgQgACAMNgIADAMLIABBBGogBkEEckE8EN8KGiAAIAc2AgAMAgsgAEEEaiAGQQRyQTwQ3woaIAAgBzYCAAwBCyAGIAEgBSAJEL0LAkAgBigCACIBQSpHDQAgACAJNgIIIAAgCDYCBCAAQSo2AgAMAQsgAEEEaiAGQQRyQTwQ3woaIAAgATYCAAsgBkHQAGokAAuHBQEHfwJAAkAgAQ0AIAVBAWohBiAAKAIcIQdBLSEIDAELQStBgIDEACAAKAIcIgdBAXEiARshCCABIAVqIQYLAkACQCAHQQRxDQBBACECDAELAkACQCADDQBBACEJDAELAkAgA0EDcSIKDQAMAQtBACEJIAIhAQNAIAkgASwAAEG/f0pqIQkgAUEBaiEBIApBf2oiCg0ACwsgCSAGaiEGCwJAIAAoAgANAAJAIAAoAhQiASAAKAIYIgkgCCACIAMQzCpFDQBBAQ8LIAEgBCAFIAkoAgwRCwAPCwJAAkACQAJAIAAoAgQiASAGSw0AIAAoAhQiASAAKAIYIgkgCCACIAMQzCpFDQFBAQ8LIAdBCHFFDQEgACgCECEHIABBMDYCECAALQAgIQtBASEMIABBAToAICAAKAIUIgkgACgCGCIKIAggAiADEMwqDQIgASAGa0EBaiEBAkADQCABQX9qIgFFDQEgCUEwIAooAhARCABFDQALQQEPCwJAIAkgBCAFIAooAgwRCwBFDQBBAQ8LIAAgCzoAICAAIAc2AhBBAA8LIAEgBCAFIAkoAgwRCwAhDAwBCyABIAZrIQcCQAJAAkAgAC0AICIBDgQCAAEAAgsgByEBQQAhBwwBCyAHQQF2IQEgB0EBakEBdiEHCyABQQFqIQEgACgCECEGIAAoAhghCSAAKAIUIQoCQANAIAFBf2oiAUUNASAKIAYgCSgCEBEIAEUNAAtBAQ8LQQEhDCAKIAkgCCACIAMQzCoNACAKIAQgBSAJKAIMEQsADQBBACEBA0ACQCAHIAFHDQAgByAHSQ8LIAFBAWohASAKIAYgCSgCEBEIAEUNAAsgAUF/aiAHSQ8LIAwL9gQCDn8DfiMAQcAAayICJAAgASgCBCEDIAIgASgCCCIEQQhBMBDhEyACKAIEIQUCQAJAIAIoAgBBAUYNACACKAIIIQYCQCAFRQ0AIARBMGwhB0EAIQggBSEJIAMhAQNAIAcgCEYNASADIAhqIQogASgCFCELIAEoAhAhDCABKAIkIQ0gASgCICEOAkACQCABKAIADQAgCkEYajUCACEQAkAgCkEIaikDACIRQgODQgBSDQAgEaciDyAPKAIAIg9BAWo2AgAgD0F/TA0GCyAKQRxqMQAAQiCGIBCEIRBCACESDAELAkAgCkEIaikDACIRQgODQgBSDQAgEaciDyAPKAIAIg9BAWo2AgAgD0F/TA0FC0IBIRIgCkEYaikDACIQUA0AIBBCA4NCAFINACAQpyIKIAooAgAiCkEBajYCACAKQX9MDQQLAkACQCABKAIoIgoNAEEAIQ8MAQsQrjIhDyACIAoQPyAPQThqIAJBOGopAwA3AwAgD0EwaiACQTBqKQMANwMAIA9BKGogAkEoaikDADcDACAPQSBqIAJBIGopAwA3AwAgD0EYaiACQRhqKQMANwMAIA9BEGogAkEQaikDADcDACAPQQhqIAJBCGopAwA3AwAgDyACKQMANwMACyABQTBqIQEgBiAIaiIKIBI3AwAgCkEoaiAPNgIAIApBJGogDTYCACAKQSBqIA42AgAgCkEYaiAQNwMAIApBFGogCzYCACAKQRBqIAw2AgAgCkEIaiARNwMAIAhBMGohCCAJQX9qIgkNAAsLIAAgBDYCCCAAIAY2AgQgACAFNgIAIAJBwABqJAAPCyAFIAIoAggQ+DkLAAu5BQEGfyMAQbAOayIDJAAgAkEEdCEEIAEoAgghBQJAIAJBAUYNACABQRhqIQYgBEFwakEEdiEHA0AgBSAGKAIAIgggBSAISRshBSAGQRBqIQYgB0F/aiIHDQALCyADQQI7AYwJIANBgIKIEDYCiAkgA0L/////DzcC/AggA0IENwL0CCADQgA3AuwIIANCgICAgMAANwLkCEEAIQYgA0EAOgCECQNAAkAgAy0AjQkNAAJAIAMoAuwIQYABSQ0AIANBAToAjQkgA0HkCGoQ4CIMAQsCQCABIAZqIgdBCGooAgAiCEUNACADQeQIaiAHQQRqKAIAIAgQ8w4MAQsgA0EBOgCNCSADQeQIahDgIgsgBCAGQRBqIgZHDQALIANByAtqIANB5AhqEL0DAkACQCADKALICyIGQYCAgIB4Rg0AIANBCGpBBGogA0HIC2pBBGpBLBDfChogAyAGNgIIIANB5AhqEPgwIANBAzYC9AUgA0EAOwD5BSADQYICOwH8BSADQQE6APgFIANByAtqIANB9AVqIAEgAhCSAwJAAkAgAygCyAsNACADQeQIaiADQcgLakEEckHkAhDfChogA0GABmogA0HkCGpB5AIQ3woaIANBkANqQQJBASADQYAGahC/ASADQYAGahCDHCADKAKQA0EBcQ0BIAMoApQDIQYgA0E4aiADQZgDakHYAhDfChogBkGAgICAeEYNASAAQTRqIANBOGpB2AIQ3woaIAAgA0EIakEwEN8KIgQgBTYCjAMgBCAGNgIwDAMLIANBkANqQRBqIANByAtqQRBqKQMANwMAIANBkANqQRhqIANByAtqQRhqKQMANwMAIAMgAykD0As3A5gDCyAAQYCAgIB4NgIAIANBCGoQkRYMAQsgAEGAgICAeDYCACADQeQIahD4MAsgA0GwDmokAAuXBQICfwF+IwBBIGsiAyQAAkACQAJAAkAgAigCPCIERQ0AIANBGGogBCABELQGIAMtABhBBEYNACADKQMYIgVC/wGDQgRSDQELIANBADYCDCADQRhqIAEgA0EMakHtq6EBQQEQzxEgAy0AGEEERg0BIAMpAxgiBUL/AYNCBFENASAAIAU3AgAMAgsgACAFNwIADAELIANBGGogASACKAIwIAIoAjQgAigCBCACKAIIEKoIAkACQAJAAkACQCADLQAYQQRGDQAgAykDGCIFQv8Bg0IEUg0BCyADQRhqIAEgA0EMakG84qIBQQEQzxECQCADLQAYQQRGDQAgAykDGCIFQv8Bg0IEUg0CCwJAAkACQAJAAkACQCACKAJAIgRFDQAgA0EYaiABIANBDGpB8NGhAUEBEM8RAkAgAy0AGEEERg0AIAMpAxgi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akEQaikCADcDACACQQhqQRhqIg0gAkEsakEYaikCADcDACACQQhqQSBqIg4gAkEsakEgaigCADYCACACIAIpAiw3AwggBUEANgIAIAVBKGpCADcDACAFQS1qQgA3AAAgBUEEaiACKQMINwIAIAVBDGogCykDADcCACAFQRRqIAwpAwA3AgAgBUEcaiANKQMANwIAIAVBJGogDigCADYCACAFQThqIQUgCkEBaiEKIARBEGoiBCADRw0ACyADIARrQQR2IQULAkAgAyAERg0AA0ACQCAEKQMAIg9CA4NCAFINACACIA+nIgE2AiwgAkEsahD1ByABIAEoAgAiC0F/ajYCACALQQFHDQAgASABKAIgENMvCyAEQRBqIQQgBUF/aiIFDQALCyAIIAkQlTQgACAKNgIIIAAgBzYCBCAAIAY2AgAgAkHwAGokAA8LIAYgAigCNBD4OQALuAUBAn8gAC0ABEEBcSECAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkADQCACRQ0UAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAgAiA0Fmag4DAwABAgsgASgCCEEFRg0CDAELIAEoAgxFDQAgAEEAOgAEDCQLIANBdGoiA0EHIANBJkkbDiYlJCIhIB8eHRwbGhkYFyMWFRQTEhEQDg0MIyMLCgkIBwYFBAMCASULIABBADoABA8LIABBADoABA8LIABBADoABA8LIABBADoABA8LIAFBBGogABC8PQ8LIAFBBGogABC9PQ8LIAFBBGogABC8PQ8LIABBADoABA8LIABBADoABA8LIAFBBGogABC8PQ8LIAFBBGogABCGCg8LIAEoAgQgABClCg8LIAFBCGoQqjQPCyABKAIEIQEMAQsLIABBADoABA8LIABBADoABA8LIABBADoABA8LIABBADoABA8LIABBADoABA8LIABBADoABA8LIAEoAgwiA0UNDSABKAIIIQEgA0ECdCEDA0AgACABKAIAEJYHIAFBBGohASADQXxqIgMNAAwOCwsgASgCCCABKwMYIAAQ1TAPCyAAQQA6AAQPCyAAQQA6AAQPCyAAQQA6AAQPCyAAQQA6AAQPCyABKAIIQQFHDQcgAUEMaiAAEL49DwsgACABKAIoEO0vDwsgAEEA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AgANASAMKAIEIQYLQQEhCwsgAyAGNgIQIAMgCzYCDCABQQRqKAIAIQYCQAJAAkAgASgCAA4DAQACAQsgBkEDdCELIAkgC2oiCygCAA0BIAsoAgQhBgtBASEKCyADIAY2AhggAyAKNgIUIAkgAUEUaigCAEEDdGoiASgCACADQQxqIAEoAgQRCAANAiAAQQhqIQAgCCAHQSBqIgdHDQALCyAEIAIoAgRPDQEgAygCICACKAIAIARBA3RqIgEoAgAgASgCBCADKAIkKAIMEQsARQ0BC0EBIQEMAQtBACEBCyADQTBqJAAgAQukBQECfyMAQdAAayIDJAACQAJAIAJFDQAgARCyFiICRQ0AIANByABqQQApA8jFmQE3AwAgA0HAAGpBACkDwMWZATcDACADQQApA7jFmQE3AzggA0E4aiACEIgHIQIgA0E4ahCLDyACRQ0AIANBOGpBBHIgARDfGiADIAEQ+yAgA0EwNgJMIANBqN+aATYCSCADQbCAgIB4NgI4IAMoAgAgAygCBCADQThqEP4iIQICQAJAIAEQshYiBEUNACAEKAIAQSRHDQAgASABKQMYNwNQIAEoAgAhBCABQSU2AgAgBEEkRw0BIAEgASgCBBDjEwsgAEECOgAUIAAgAjYCAAwCC0GUzqEBQShB2OGZARDTJwALIANBOGogAUEBQQEQ7gEgAygCOCECAkACQCADLQBMIgRBAkYNACADQSBqQQxqIANBOGpBDGopAgA3AgAgA0EgakEXaiADQThqQRdqLQAAOgAAIAMgAykCPDcCJCADQQhqQQhqIANBIGpBCGopAwA3AwAgAyADLwBNOwA1IAMgBDoANCADQQhqQRBqIANBIGpBEGopAwA3AwAgAyACNgIgIAMgAykDIDcDCAJAIANBCGoQ3w5FDQAgAygCLCECIAMoAighBCADQamAgIB4NgI4IAEgBCACIANBOGoQmhYLIAEvAcwCQYAFcUUNASADQQhqQfWloQFBBRCWLEUNASADKAIsIQIgAygCKCEEIANBwoCAgHg2AjggASAEIAIgA0E4ahCIKgwBCyAAQQI6ABQgACACNgIADAELAkAgAS0AzQJBAXFFDQAgA0EIakHVg6EBQQUQlixFDQAgAygCLCECIAMoAighBCADQcKAgIB4NgI4IAEgBCACIANBOGoQiCoLIAAgA0EgahDw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KAIcQQRBBBDJMyABQcAAaiQADwsCQCADIAUgBGooAgAiCEsNACAIIANB3KiEARChGwALIAIgCEEEdGpBADoADCAEQQRqIQQMAAsLjwUBAn8jAEEwayIDJAACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAQX5qIgRBBiAEQQlJGw4JAAECAwQFBgcIAAsgA0EBNgIUIANBpNehATYCECADQgE3AhwgA0GYAjYCDCADIAApAgg3AiggAyADQQhqNgIYIAMgA0EoajYCCCABIAIgA0EQahCKNSEADAgLIAMgAEEEajYCCCADQQI2AhQgA0GAi5kBNgIQIANCATcCHCADQfEANgIsIAMgA0EoajYCGCADIANBCGo2AiggASACIANBEGoQijUhAAwHCyADQQA2AiAgA0EBNgIUIANBpIuZATYCECADQgQ3AhggASACIANBEGoQijUhAAwGCyADQQA2AiAgA0EBNgIUIANBtIuZATYCECADQgQ3AhggASACIANBEGoQijUhAAwFCyADQQA2AiAgA0EBNgIUIANB0IuZATYCECADQgQ3AhggASACIANBEGoQijUhAAwECyADQQA2AiAgA0EBNgIUIANB8IuZATYCECADQgQ3AhggASACIANBEGoQijUhAAwDCyADIAA2AgggA0EBNgIUIANBpNehATYCECADQgE3AhwgA0GZAjYCLCADIANBKGo2AhggAyADQQhqNgIoIAEgAiADQRBqEIo1IQAMAgsgAyAAQQRqNgIIIANBAjYCFCADQfiLmQE2AhAgA0IBNwIcIANB8QA2AiwgAyADQShqNgIYIAMgA0EIajYCKCABIAIgA0EQahCKNSEADAELIAMgAEEEajYCCCADQQE2AhQgA0Gk16EBNgIQIANCATcCHCADQfEANgIsIAMgA0EoajYCGCADIANBCGo2AiggASACIANBEGoQijUhAAsgA0EwaiQAIAAL3wQCA38BfiMAQcAAayIGJAAgBkEwaiABIAIgBUGQCiAFEMsnAkACQCAGLQAwQQVGDQAgACAGKQMwNwIADAELQQUgBigCNBCsNAJAIAVFDQAgBkEBOgAmIAZBADoAJyAFIQdBACEIA0ACQAJAAkAgBw0AIAZBMGogASACIANBkAogCCAJQiCIpxDoAiAGLQAwQQRGDQQgBikDMCIJQv8Bg0IEUg0BDAQLIAYgCTcCNCAGIAg2AjAgBkEYaiAEELsbIAZBKGogASADQZAKIAZBMGogBigCGCAGKAIcIAZBJ2ogBkEmahCcBwJAIAYtAChBBEYNACAGKQMoIglC/wGDQgRSDQELIAZBMGogBCABENYNAkAgBi0AMEEERg0AIAYpAzAiCUL/AYNCBFINAQsCQCAGLQAmDQAgBkEBOgAmDAILIAEoAkRFDQECQAJAAkACQAJAIAQoAgAOBAABAgMACyAGQRBqIARBCGoQoyMgBigCFCEIDAMLIARBFGooAgAhCAwCCyAEQQxqKAIAIQgMAQsgBEEUaigCACEICyAGQTBqIAEgCEEAEJoFIAYtADBBBEYNASAGKQMwIglC/wGDQgRRDQELIAAgCTcCAAwDCwJAIAYtACdFDQAgASABKAIsQX9qNgIsIAZBADoAJwsgB0F/aiEHIAZBCGogBBC7GyAEQShqIQRBASEIIAYpAwghCQwACwsgBkEwaiABIAMgBUVBkAoQyhkCQAJAIAYtADBBBEYNACAGKQMwIglC/wGDQgRSDQELIABBBDoAAAwBCyAAIAk3AgALIAZBwABqJAAL1gQCC38DfiMAQcAAayICJAAgASgCFCEDIAEoAhAhBCABKAIEIQUgASgCACEGAkACQCABKQMIIg1CA4NCAFINACANpyIHIAcoAgAiB0EBajYCACAHQX9MDQELAkAgASkDGCIOUA0AIA5CA4NCAFINACAOpyIHIAcoAgAiB0EBajYCACAHQX9MDQELQQMhCAJAIAEtADRBA0YNACACQShqIAFBIGoQwwogAkEQakEQaiACQShqQRBqKAIANgIAIAJBEGpBCGogAkEoakEIaikDADcDACACQQ5qIAJBP2otAAA6AAAgAiACKQMoNwMQIAIgAi8APTsBDCACLQA8IQgLQQAhB0EAIQkCQCABKAI4IgpFDQAQsTIhCSAKKAIMIQsgCigCECEMIAJBKGogChCmESAJQRBqIAw2AgAgCSACKQIoNwIAIAIgCzYCNCAJQQhqIAJBKGpBCGopAgA3AgALAkACQCABKAI8IgoNAAwBCyABKQNAIQ8QsTIhByAKKAIMIQEgCigCECELIAJBKGogChDNASAHQRBqIAs2AgAgByACKQIoNwIAIAIgATYCNCAHQQhqIAJBKGpBCGopAgA3AgALIAAgDjcDGCAA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ACAEIQUMAgsgBUEBaiEFIAEgCSAGKAIQEQgARQ0ACyAFQX9qIQULIAUgBEkhBQsgACAHOgAgIAAgCDYCEAwBC0EBIQULIAJBEGokACAFC+kEAgR/BH4jAEHQAGsiAiQAAkACQAJAAkACQAJAAkACQCABKAIADgcEAQACAAMGAAsgAEEMNgIAIAAgASkDADcDCCAAQShqIAFBIGopAwA3AwAgAEEgaiABQRhqKQMANwMAIABBGGogAUEQaikDADcDACAAQRBqIAFBCGopAwA3AwAMBgsgAkEQaiABQRBqKQIANwMAIAJBCGpBEGogAUEYaikCADcDACACIAEpAgg3AwggASgCBCEBQQshA0EAIQQMAwsgAkEQaiABQRBqKQIANwMAIAJBCGpBEGogAUEYaikCADcDACACIAEpAgg3AwggASgCBCEBQQshA0EBIQQMAgsgAEEKNgIAIAAgASkCBDcCBCABENsNDAMLIAJBEGogAUEUaikCADcDACACQRhqIAFBHGopAgA3AwAgAiABKQIMNwMIIAEoAiQhBSABKAIIIQFBACEDCyAAIAE2AgggACAENgIEIAAgAzYCACAAIAIpAwg3AgwgACAFNgIkIABBFGogAkEQaikDADcCACAAQRxqIAJBGGopAwA3AgAMAQsgAkEgaiABKAIEEJkFIAIoAiQhAQJAIAIoAiAiA0ELRg0AIAJBEGogAkEgakEUaikCACIGNwMAIAJBGGogAkEgakEcaikCACIHNwMAIAIgAikCLCIINwMIIAIoAkQhBCACKQNIIQkgACACKAIoNgIIIAAgATYCBCAAIAM2AgAgACAINwIMIABBFGogBjcCACAAQRxqIAc3AgAgACAJNwMoIAAgBDYCJAwBCyAAIAE2AgwgAEEGNgIIIABBDDYCAAsgAkHQAGokAAvmBAEBfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAQXRqIgFBByABQSZJGw4mAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUACyAAQQRqKAIADwsgAEEQaigCAA8LIABBEGooAgAPCyAAKAIgQTBqKAIADwsgAEEI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uKOZARCqHgALIANBCGogABDXJyADQgA3AyAgA0EANgAnIAMgAygCDCIFQcABcjoAKyADQSBqIAMoAgggBRDfChogA0EgaiEFCwJAIAAtAAtB/gFHDQAgACgCACAAKAIIEJYPCyAAIAUpAgA3AgAgAEEIaiAFQQhqKAIANgIACyADIAAQlyMCQAJAIAYgB0kNACAGIAMoAgQiBUsNASADKAIAIAdqIAIgASACQdijmQEQ8zACQAJAIAAtAAtB/gFGDQAgBkELSw0BIAAgBkHAAXI6AAsMAQsgACAGNgIECyADQTBqJAAPCyAHIAZByKOZARCkGwALIAYgBUHIo5kBEKMbAAvLBAEGfyAAQgA3AwAgAEHAAGoQ4BggAEIANwNwAkAgACgChAEiAkUNACAAKAKAASIDIAJB2ABsaiEEA0ACQAJAIAMoAgBBBUYNACADQgA3AigCQAJAIAMpAzBCAFINACADQThqIQIMAQsgA0IANwI4IANCADcCUCADQcAAaiECCyACQgA3AgggAygCACICQQRGDQECQAJAAkACQCACDgQAAQIDAAsgA0EIahDHIgwECyADQgA3AhACQCADKAIEDQAgA0IANwIIDAQLIAMoAgggARCMAgwDCyADKAIEIAEQ8wcMAgsgA0IANwIQIANBGGpCADcCAAJAIAMoAgwiAkUNACADKAIIIQUgAkEobCEGQQAhAgNAAkACQAJAAkACQAJAIAUgAmoiBygCAA4FAAECAwQACyAHQRhqQgA3AgAMBAsgB0EQakIANwIAAkAgB0EEaigCAA0AIAdBCGpBADYCACAHQQxqQQA2AgAMBAsgB0EIaigCACABEIwCDAMLIAdBCGpCADcCACAHQQRqKAIAIAEQjAIMAgsgB0EEaigCACABEPQHDAELIAdBBGogARDIIgsgBiACQShqIgJHDQALCyADQgA3AiAMAQsgA0EEaiABEI84CyADQdgAaiIDIARHDQALCwJAIAAoAngiA0UNACADIAEQvycLAkAgACgCmAEiAkUNACAAKAKUASEDIAJBKGwhAgNAIAMgARCrHCADQShqIQMgAkFYaiICDQALCwJAIAAtADxBBkYNACAAQgA3AwggAEEQahDgGAsLywQBBn8gAEIANwMAIABBwABqEOAYIABCADcDcAJAIAAoAoQBIgJFDQAgACgCgAEiAyACQdgAbGohBANAAkACQCADKAIAQQVGDQAgA0IANwIoAkACQCADKQMwQgBSDQAgA0E4aiECDAELIANCADcCOCADQgA3AlAgA0HAAGohAgsgAkIANwIIIAMoAgAiAkEERg0BAkACQAJAAkAgAg4EAAECAwALIANBCGoQxyIMBAsgA0IANwIQAkAgAygCBA0AIANCADcCCAwECyADKAIIIAEQjAIMAwsgAygCBCABEPMHDAILIANCADcCECADQRhqQgA3AgACQCADKAIMIgJFDQAgAygCCCEFIAJBKGwhBkEAIQIDQAJAAkACQAJAAkACQCAFIAJqIgcoAgAOBQABAgMEAAsgB0EYakIANwIADAQLIAdBEGpCADcCAAJAIAdBBGooAgANACAHQQhqQQA2AgAgB0EMakEANgIADAQLIAdBCGooAgAgARCMAgwDCyAHQQhqQgA3AgAgB0EEaigCACABEIwCDAILIAdBBGooAgAgARD0BwwBCyAHQQRqIAEQyCILIAYgAkEoaiICRw0ACwsgA0IANwIgDAELIANBBGogARCPOAsgA0HYAGoiAyAERw0ACwsCQCAAKAJ4IgNFDQAgAyABEL8nCwJAIAAoApgBIgJFDQAgACgClAEhAyACQShsIQIDQCADIAEQqxwgA0EoaiEDIAJBWGoiAg0ACwsCQCAALQA8QQZGDQAgAEIANwMIIABBEGoQ4BgLC9oEAgp/BH4jAEEQayIBJAACQCAAKAIAIgItABBBAUcNACACKAIAQQJHDQBBABCADxoCQEEAKAKE+qMBDQBBAEF/NgKE+qMBIAJBKGohA0EAKAKI+qMBIgRBfGohBUEAKAKM+qMBIgYgAikDCCILp3EhByALQhmIQv8Ag0KBgoSIkKDAgAF+IQxBACEIA0AgASAEIAdqKQAAIg0gDIUiDkJ/hSAOQv/9+/fv37//fnyDQoCBgoSIkKDAgH+DNwMIAkADQCABIAFBCGoQiicCQCABKAIADQAgDSANQgGGg0KAgYKEiJCgwIB/g1ANAkEAQQA2AoT6owEMBQsCQCACIAUgASgCBCAHaiAGcSIJQQJ0aygCACIARg0AIAsgACkDCFINASACLQAQQf8BcSAALQAQQf8BcUcNASACKAIYIAAoAhhHDQEgAigCICIKIAAoAiBHDQEgAyAKIABBKGogChCgMUUNAQsLIARB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AkEobCEGQQAhByAEIQgDQCAGIAdGDQECQAJAIAEgB2oiCSgCAEEHRw0AIAlBBGopAgAhDCAJQQxqKAIAIQogCUEQaigCACELEK4yIQkgA0EwaiALED8gCUE4aiADQTBqQThqKQMANwMAIAlBMGogA0EwakEwaikDADcDACAJQShqIANBMGpBKGopAwA3AwAgCUEgaiADQTBqQSBqKQMANwMAIAlBGGogA0EwakEYaikDADcDACAJQRBqIANBMGpBEGopAwA3AwAgCUEIaiADQTBqQQhqKQMANwMAIAkgAykDMDcDACADIAk2AhggAyAKNgIUIAMgDDcCDCADQQc2AggMAQsgA0EIaiAJENUDCyAFIAdqIgkgAykDCDcDACAJQSBqIANBCGpBIGopAwA3AwAgCUEYaiADQQhqQRhqKQMANwMAIAlBEGogA0EIakEQaikDADcDACAJQQhqIANBCGpBCGopAwA3AwAgB0EoaiEHIAhBf2oiCA0ACwsgACACNgIIIAAgBTYCBCAAIAQ2AgAgA0HwAGokAA8LIAQgAygCOBD4OQALigQBAn8CQAJAAkACQAJAAkACQCAAKAIADggFAAECBgYDBAULIABBADYCGCAAKAIgIAEQkxEPCyAAKAIEIgAoAggiAkUNBCAAKAIEIgAgAkE4bGohAwNAIAAgARDuDAJAIAAoAjAiAkUNACABIAIQ0QMLIABBOGoiACADRw0ADAULCyAAKAIEIgAoAggiAkUNAyAAKAIEIgAgAkE4bGohAwNAIAAgARDuDAJAIAAoAjAiAkUNACABIAIQ0QMLIABBOGoiACADRw0ADAQLCyAAKAIEIgBBADYCECAAKAIoIgJFDQIgACgCJCIAIAJBMGxqIQMDQAJAIAAoAgANACAAQQA2AhgLAkAgAEEoaigCACICRQ0AIAEgAhDRAwsgAEEwaiIAIANHDQAMAwsLAkAgACgCBCIAKAIADQAgAEEANgIYCyAALQBFIgJBA0YNAQJAIAJBAkcNACAAKAIoIgJFDQIgACgCJCEAIAJBOGwhAgNAIAAgARD+CCAAQThqIQAgAkFIaiICDQAMAwsLIABBADYCOAJAIAAoAkAiAC0AJUECRg0AA0AgAEEANgIYIAAoAiAiAC0AJUECRw0ACwsgAEEIaigCACICRQ0BIABBBGooAgAhACACQThsIQIDQCAAIAEQ/gggAEE4aiEAIAJBSGoiAg0ADAILCyAAQQA2AhggACgCICABELEGCwvnAwIKfwF+IAAoAgRBAWoiBEEDdiAEQQdxQQBHaiEFIAAoAgAiBiEHA0ACQCAFDQACQAJAIARBCEkNACAGIARqIAYpAAA3AAAMAQsgBkEIaiAGIAQQ8T0aC0EAIQgDQAJAAkAgCCIJIARGDQAgCUEBaiEIIAAoAgAiByAJai0AAEGAAUcNAiAHIAlBf3MgA2xqIQoDQCABIAAgCSACEQwAIQ4gACgCBCEHIAcgCSAHIA6nIgtxIgxrIAAoAgAiBiAHIA4Q8RgiBSAMa3NxQQhJDQIgBiAFaiIMLQAAIQ0gDCALQRl2Igs6AAAgACgCACAFQXhqIAdxakEIaiALOgAAIAYgBUF/cyADbGohBwJAIA1B/wFGDQAgCiAHIAMQrikMAQsLIAAoAgQhBSAAKAIAIAlqQf8BOgAAIAAoAgAgBSAJQXhqcWpBCGpB/wE6AAAgByAKIAMQ3woaDAILIAAgACgCBCIHIAdBAWpBA3ZBB2wgB0EISRsgACgCDGs2AggPCyAGIAlqIAtBGXYiBToAACAAKAIAIAcgCUF4anFqQQhqIAU6AAAMAAsLIAcgBykDACIOQn+FQgeIQoGChIiQoMCAAYMgDkL//v379+/fv/8AhHw3AwAgB0EIaiEHIAVBf2ohBQwACwuNBAIDfwJ+IwBBwABrIgIkACACIAE2AhAgAiAAKAIIIgM2AhQCQAJAAkACQCADIAFHDQAgAiAAKAIUIgM2AhwgAiABNgIYIAMgAUcNASACIAAoAiAiAzYCJCACIAE2AiAgAyABRw0CAkACQCABDQBBACEEDAELIAFBA3QgACgCBGpBfGooAgAhBAsgASEDAkAgACgCACABRw0AIAAQzSYgACgCFCEDCyAAIAFBAWo2AgggACgCBCABQQN0aiIBIAQ2AgQgASAENgIAIAJBjwEQxR8gAikDCCEFIAIpAwAhBgJAIAMgACgCDEcNACAAQQxqEM4mCyAAIANBAWo2AhQgACgCECEBQQAtAMD/owEaIAEgA0EFdGoiAUEAKQPY4qIBNwMAIAEgBTcDGCABIAY3AxAgAUEIakEAKQPg4qIBNwMAQQgQjAEiAUUNAyABQQA2AgACQCAAKAIgIgMgACgCGEcNACAAQRhqEM8mCyAAIANBAWo2AiAgACgCHCADQQxsaiIDQQE2AgggAyABNgIEIANBATYCACAAIAAoAiRBCGo2AiQgAkHAAGokAA8LIAJBADYCKCACQRBqIAJBFGogAkEoakGYkIMBEJ4rAAsgAkEANgIoIAJBGGogAkEcaiACQShqQaiQgwEQnisACyACQQA2AiggAkEgaiACQSRqIAJBKGpBuJCDARCeKwsAC7oEAQR/IwBB0ARrIgMkACADIAEQwxQiBDYCFAJAAkACQAJAIARB3QBHDQAgA0EYaiACEOwUIANB8ABqIAEoAgAiAiADQRhqENMJIANBCGogAkEgakHckoQBEKkuIAMoAggiBCgCCCIFRQ0BIAMoAgwhBiAEIAVBf2oiBTYCCCADQcgBaiAEKAIEIAVBmAFsaiIFQZgBEN8KGiADKALIAUH3/7t/ag4CAgEDCyADQQA2AsgBIANBFGpB2JKEASADQcgBakHgk4QBEMIrAAsgA0EANgKIBCADQQE2AvwDIANBlJOEATYC+AMgA0IENwKABCADQfgDakGck4QBEK0uAAsgA0EANgKIBCADQQE2AvwDIANByJOEATYC+AMgA0IENwKABCADQfgDakHQk4QBEK0uAAsgA0HgAmogBUH0AGpBJBDfChogA0GEA2ogBUH0ABDfChogARDtDRogA0HwA2ogAkHYAGooAgA2AgAgAyACKQJQNwLoAyADQYQDahCIHCADQYQDaiADQfAAakHYABDfChoCQAJAIAQoAghFDQBB9AAQkTIgA0GEA2pB9AAQ3wohASADQYaAxAA2AvgDIAMgATYC/AMgA0HgAmogA0H4A2oQ7hggAEEEaiADQeACakEkEN8KGiAAQYmAxAA2AgAMAQsgACADQYQDakH0ABDfChogA0HgAmoQljcLIAYgBigCAEEBajYCAAJAIAMoAsgBQYmAxABHDQAgA0HIAWoQ/C4LIANB0ARqJAALwgQBBX8jAEEgayICJAACQAJAAkAgAS0A1AJBAkcNACABELAWIgNFDQEgAkEYaiIEQQApA/DGmQE3AwAgAkEQaiIFQQApA+jGmQE3AwAgAkEAKQPgxpkBNwMIIAJBCGogAxCHByEGIAJBCGoQ4RACQCAGDQAgBEEAKQPYxpkBNwMAIAVBACkD0MaZATcDACACQQApA8jGmQE3AwggAkEIaiADEIcH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ASABKALEAUGQ0ZoBQQYQuzdFDQIMAQsgASgCwAEgASgCxAFBltGaAUEFELs3RQ0BCyACQZuBgIB4NgIYIAEoAtwBIAEoAvQBIAMgA0EHaiIFIAMgBUkbIAMgBSADIAVLGyACQRhqENEcIAFBBRCJCCABEK0DIAAgARCCGCACEIwPDAELIAAgAikDADcDACAAQRBqIAJBEGopAwA3AwAgAEEIaiACQQhqKQMANwMACyACQTBqJAAL+AMCA38CfgJAAkAgACgCACICQQlGDQACQAJAAkACQAJAAkACQAJAAkAgAg4JAAECAwQFBgcIAAsgACgCDEHIAGwhAyAAKAIIIQICQANAIANFDQECQAJAAkAgAikDACIFQgJYDQBBICEEDAELIAJBADYCMCAFQgJRDQEgBadBAXENAUEYIQQLIAIgBGpBADYCAAsgAkHIAGohAiADQbh/aiEDDAALCyAAQRxqIAEQugwPCyAAQQhqIAEQ+g0PCyAAKAIMQdAAbCEDIAAoAgghAgJAA0AgA0UNAUEYIQQCQAJAAkACQCACKQMAIgZCfnwiBUICIAVCAlQbpw4DAAIBAAsgAigCCA0CQSAhBAwBCwJAIAanQQFxDQAgAkEANgIYCyACKQMgIgVCAlENASAFp0EBcQ0BQTghBAsgAiAEakEANgIACyACQdAAaiECIANBsH9qIQMMAAsLIABBHGogARC6DA8LAkACQCAAKAIIDgMAAQgACwJAIAAtACRBAkYNACAAQQA2AiALIAAoAiggARDSCA8LAkAgAC0AJEECRg0AIABBADYCIAsgACgCKCABEOseDwsgASAAKAIEENEDDwsgAEEQaiABELoMDwsgACgCBEEANgI4DwsgACgCBCABEKM/DwsgAEEANgIgDwsgAEEIaiABEIIICwv8AwEDfyMAQSBrIgYkAAJAAkACQCABKAIYIgctANoCQQFHDQAgBy0A2wINAQsgBkEUaiABIAIgAyAEIAUQnw4gBigCGCEBAkAgBigCFCIFQQJGDQAgACABNgIEIAAgBTYCAAwCCyAAQQI2AgAgACABNgIEDAELAkACQAJAAkAgBygCvAIoAhBBAXQiCCAFSw0AIAZBFGogASACIAMgBCAFEJ8OIAYoAhghASAGKAIUIgVBAkYNASAAIAE2AgQgACAFNgIADAQLAkACQCAHKALUAkEBRg0AIAZBCGogCBDOFyAGQRRqIAEgAiADIAYoAgwiByAGKAIQIggQnw4gBigCGCEBIAYoAhQiA0ECRw0BIABBAjYCACAAIAE2AgQgBigCCCAHEJA6DAULIAZCADcCCCAGQRRqIAEgAiADIAZBCGpBAhCfDiAGKAIYIQECQCAGKAIUIgNBAkYNACAFQQNPDQMgBCAFIAZBCGogBUH0g4MBEMMvIAAgATYCBCAAIAM2AgAMBQsgAEECNgIAIAAgATYCBAwECyAIIAVJDQIgBCAFIAcgBUGUhIMBEMMvIAAgATYCBCAAIAM2AgAgBigCCCAHEJA6DAMLIABBAjYCACAAIAE2AgQMAgsgBUECQeSDgwEQoxsACyAFIAhBhISDARCjGwALIAZBIGokAAvxAwEHfyMAQdAAayIHJAACQAJAAkAgASgCACIIQX9qQQJJDQAgByABKAIENgIEIAcgCDYCACAHIAEoAhAiCDYCECAHIAEoAgwiCTYCDCAHIAEoAggiCjYCCCAHIAEtABg6ABggASgCFCIBQX9qIAlLIQsCQANAAkACQCAJIARLDQAgCSAERw0BDAULIAogBGosAABBv39KDQQLQQAhDAJAIAFFDQAgByAINgIcIAcgAUF/aiIENgIgIAsNAiABIAhJDQIgByAENgIUIAdBJGogBSAGIAcQbyAHKAIoIQICQCAHKAIkIg1BAkcNACAAIAI2AgRBAiEMDAELIAQhASAHKAIsIgMhBCANQQFGDQELCyAAIAw2AgAMAwsgB0ECNgIoIAdBpIKhATYCJCAHQgI3AjAgB0EHNgJIIAdBgwE2AkAgByAJNgJMIAcgB0E8ajYCLCAHIAdBzABqNgJEIAcgB0EcajYCPCAHQSRqQbSCoQEQrS4ACwJAAkACQCABKAIMIgggBEsNACAIIARGDQEMAgsgASgCCCAEaiwAAEG/f0wNAQsgACADNgIIIAAgAjYCBCAAQQE2AgAMAgsgACADNgIIIAAgAjYCBCAAQQA2AgAMAQsgACADNgIIIAAgAjYCBCAAQQE2AgALIAdB0ABqJAAL3AMBBX8jAEGAAWsiAiQAAkACQCABLQAUQQJHDQAgAkEIaiABKAIAIgNBIGopAwA3AwAgAkEQaiADQShqKQMANwMAIAJBGGpBCGoiBCADQQhqKQMANwMAIAIgAykDGDcDACACIAMpAwA3AxggAygCFCEFIAMoAhAhBiACQShqIAIQ+AhBAC0AwP+jARoCQEHAABCMASIBRQ0AIAEgAikDKDcDACABQThqIAJBKGpBOGopAwA3AwAgAUEwaiACQShqQTBqKQMANwMAIAFBKGogAkEoakEoaikDADcDACABQSBqIAJBKGpBIGopAwA3AwAgAUEYaiACQShqQRhqKQMANwMAIAFBEGogAkEoakEQaikDADcDACABQQhqIAJBKGpBCGopAwA3AwAgAkH4AGogBCkDADcCACAAQQA2AgggACABNgIoIAAgBTYCJCAAIAY2AiAgAEEUNgIAIAIgAikDGDcCcCAAIAIpAmw3AgwgAEEUaiACQewAakEIaikCADcCACAAQRxqIAJB7ABqQRBqKAIANgIAIANBMEEIEO4cDAILAAsgAEEaNgIAIAAgASkDADcDCCAAQRhqIAFBEGopAwA3AwAgAEEQaiABQQhqKQMANwMACyACQYABaiQAC/gDAgV/AX4jAEHQAWsiAyQAIAMgARDDFCIENgIgAkAgBEH8AEcNACACIAEoAgAiBCkCUDcCGCACQSBqIARB2ABqKAIANgIAIANBJGogAkEkEN8KGiADQRhqIARBEGpBvJGEARCpLiAEQdAAaiEEIAMoAhwhBQJAAkACQCADKAIYIgYoAggiB0UNACAHQfAAbCAGKAIEakGQf2oiBygCAEGAgICAeEYNAQsgA0G4AWpBCGoiByACQRRqKAIANgIAIANBuAFqQRRqIARBCGooAgA2AgAgAyACKQIMNwO4ASADIAQpAgA3AsQBQQgQkTIhAiADQQhqIANBJGoQ/BYgAiADKQMINwIAIANB4ABqIAcpAwA3AgAgA0HIAGpBIGogA0G4AWpBEGopAwA3AgAgA0EBNgJUIAMgAjYCUCADQoCAgIAYNwJIIAMgAykDuAE3AlggBiADQcgAahDVKgwBCyADQRBqIANBJGoQ/BYgB0EEaiADKAIQIAMoAhQQvikLIAUgBSgCAEEBajYCACABEO0NGiAAQgQ3AgggAEIiNwIAIABBJGogBEEIaigCACICNgIAIAAgBCkCACIINwIcIAAgCDcCECAAQRhqIAI2AgAgA0HQAWokAA8LIANBADYCSCADQSBqQaiRhAEgA0HIAGpBrJGEARDCKwAL8wMBAn8CQAJAAkACQAJAAkACQAJAIAAoAgAOCAECAwQAAAUGAQsACyAAQQA6ABwgASAAKAIgEJEDDwsgAEEAOgAcIAAoAiAgARDMGg8LIAAoAgQiACgCCCICRQ0DIAAoAgQiACACQThsaiEDA0AgACABENEYAkAgACgCMCICRQ0AIAEgAhCIAwsgAEE4aiIAIANHDQAMBAsLIAAoAgQiACgCCCICRQ0CIAAoAgQiACACQThsaiEDA0AgACABENEYAkAgACgCMCICRQ0AIAEgAhCIAwsgAEE4aiIAIANHDQAMAwsLIAAoAgQiAEEAOgAUIAAoAigiAkUNASAAKAIkIgAgAkEwbGohAwNAAkAgACgCAA0AIABBADoAHAsCQCAAQShqKAIAIgJFDQAgASACEIgDCyAAQTBqIgAgA0cNAAwCCwsCQCAAKAIEIgIoAgANACACQQA6ABwLIAJBIGohAAJAAkAgAi0ARUF+ag4CAQIACyACQQA6ADwgAigCQCIALQAlQQJGDQADQCAAQQA6ABwgACgCICIALQAlQQJHDQALCyABLQAAIQMgAUEBOgAAIAAgARDuCwJAIAAoAggiAkUNACAAKAIEIQAgAkE4bCECA0AgACABEN4GIABBOGohACACQUhqIgINAAsLIAEgAzoAAAsLhQQBAn8gACABaiECAkACQCAAKAIEIgNBAXENACADQQJxRQ0BIAAoAgAiAyABaiEBAkAgACADayIAQQAoAqD+owFHDQAgAigCBEEDcUEDRw0BQQAgATYCmP6jASACIAIoAgRBfnE2AgQgACABQQFyNgIEIAIgATYCAAwCCyAAIAMQrgoLAkACQAJAAkAgAigCBCIDQQJxDQAgAkEAKAKk/qMBRg0CIAJBACgCoP6jAUYNAyACIANBeHEiAxCuCiAAIAMgAWoiAUEBcjYCBCAAIAFqIAE2AgAgAEEAKAKg/qMBRw0BQQAgATYCmP6jAQ8LIAIgA0F+cTYCBCAAIAFBAXI2AgQgACABaiABNgIACwJAIAFBgAJJDQAgACABEN8LDwsgAUH4AXFBiPyjAWohAgJAAkBBACgCkP6jASIDQQEgAUEDdnQiAXENAEEAIAMgAXI2ApD+owEgAiEBDAELIAIoAgghAQsgAiAANgIIIAEgADYCDCAAIAI2AgwgACABNgIIDwtBACAANgKk/qMBQQBBACgCnP6jASABaiIBNgKc/qMBIAAgAUEBcjYCBCAAQQAoAqD+owFHDQFBAEEANgKY/qMBQQBBADYCoP6jAQ8LQQAgADYCoP6jAUEAQQAoApj+owEgAWoiATYCmP6jASAAIAFBAXI2AgQgACABaiABNgIADwsL2gMCE38BfiMAQeAAayICJAAgASgCBCEDIAIgASgCCCIEQQhBMBDhEyACKAIEIQUCQAJAIAIoAgBBAUYNACACKAIIIQYCQCAFRQ0AIARBMGwhB0EAIQggBSEJA0AgByAIRg0BIAMoAhghCiADKAIUIQsgAygCECEMIAMoAgQhDSADKAIAIQ4CQCADKQMIIhVCA4NCAFINACAVpyIBIAEoAgAiAUEBajYCACABQX9MDQQLIAMtACohDyADLQApIRAgAy0AKCERIAMtABwhEkEAIRNBACEUAkAgAygCICIBRQ0AEKwyIRQgAiABEIYBIBQgAkHgABDfChoLAkAgAygCJCIBRQ0AEKwyIRMgAiABEIYBIBMgAkHgABDfChoLIANBMGohAyAGIAhqIgEgDjYCACABQSpqIA86AAAgAUEpaiAQOgAAIAFBKGogEToAACABQSRqIBM2AgAgAUEgaiAUNgIAIAFBHGogEjoAACABQRhqIAo2AgAgAUEUaiALNgIAIAFBEGogDDYCACABQQhqIBU3AwAgAUEEaiANNgIAIAhBMGohCCAJQX9qIgkNAAsLIAAgBDYCCCAAIAY2AgQgACAFNgIAIAJB4ABqJAAPCyAFIAIoAggQ+DkLAAuqBAEFfyMAQcABayIBJAAgAUGhAWpBggY7AAAgAUEDOgCUASABQoCAgICAgMCAATcAtQEgAUEKOgC0ASABQQA6AL0BIAFCgICAgKAfNwKsASABQoCAgIDAADcCpAEgAUEAOgCYASABQQI2AoABIAFBAjYCeCABQQI2AnAgAUKBgICAgICA0AA3AmggAUKBgICAgICAEDcCYCABQoKEiJCgwICBAjcAmQEgAUGkAWpBARD6LyABKAKoASABKAKsASICQQxsaiEDQQAhBAJAAkACQANAIARBAXENASABQQZBAEEBQQEQ6w8gASgCBCEFIAEoAgBBAUYNAiABKAIIIgRBBGpBAC8A1KCZATsAACAEQQAoANCgmQE2AAAgA0EIakEGNgIAIANBBGogBDYCACADIAU2AgAgA0EMaiEDQQEhBCACQQFqIQIMAAsLIAEgAjYCrAEgASABQeAAakHgABDfCiIDQeAAaiADEEAgAygCSCIBIAMoAkwQyi0gAygCRCABEP45AkAgAy0ANCIBQQNGDQAgAUECRg0AIAMoAigiASABKAIAIgFBf2o2AgAgAUEBRw0AIANBKGoQ+RYLIAMoAmBFDQEgACADKQJgNwIAIABBCGogA0HgAGpBCGopAgA3AgAgA0HAAWokAA8LIAUgASgCCBD4OQALIANBCGogA0HsAGooAgA2AgAgAyADKQJkNwMAQZDDoQFBKyADQaSfmQFB2KCZARCxGAAL6QMCA38CfgJAAkAgACgCACICQQlGDQACQAJAAkACQAJAAkACQAJAAkAgAg4JAAECAwQFBgcIAAsCQCAAKAIMIgNFDQAgACgCCCECIANByABsIQMDQAJAAkACQCACKQMAIgVCAlgNAEEgIQQMAQsgAkEANgIwIAVCAlENASAFp0EBcQ0BQRghBAsgAiAEakEANgIACyACQcgAaiECIANBuH9qIgMNAAsLIAAoAhwiAkUNCSACIAEQ3R8PCyAAQQhqIAEQxggPCwJAIAAoAgwiA0UNACAAKAIIIQIgA0HQAGwhAwNAQRghBAJAAkACQAJAIAIpAwAiBkJ+fCIFQgIgBUICVBunDgMAAgEACyACKAIIDQJBICEEDAELAkAgBqdBAXENACACQQA2AhgLIAIpAyAiBUICUQ0BIAWnQQFxDQFBOCEECyACIARqQQA2AgALIAJB0ABqIQIgA0Gwf2oiAw0ACwsgACgCHCICRQ0HIAIgARDdHw8LAkACQCAAKAIIDgMAAQgACyAAQRBqIAEQhjIPCyAAQRBqIAEQgzIPCyABIAAoAgQQ0QMPCyAAKAIQIgJFDQQgAiABEN0fDwsgACgCBEEANgI4DwsgASAAKAIEENEDDwsgAEEANgIgDwsgAEEIaiABELQFCwu8AwIEfwZ+IwBBIGsiAyQAQgAhB0EAIQQCQCABQqp9Uw0AIAJQDQBB/w8hBCABQrQCVQ0AQgAhByADQRBqIAGnIgVBBHRBwL6BAWoiBikDAEIAIAIgAnkiCIYiCUIAELAYIAMpAxAhCgJAIANBEGpBCGopAwAiAkL/A4NC/wNSDQAgAyAGKQMIQgAgCUIAELAYIANBCGopAwAiCSAKfCIKIAlUrSACfCECCwJAIAFCG3xC0wBUDQAgCkJ/Ug0AQX8hBAwBCyACIAJCP4giC0IJfCIMiCEJAkAgBUHqpA1sQRB1IAinayALp2pBP2oiBUGCeEgNAEGACEH/ByAJQvz/////////AIMgCSAJIAyGIAJRGyAJIAlCA4NCAVEbIAkgCkICVBsgCSABQgR8QhxUGyIBQgGDIAF8IgFC/////////x9WIgYbIAVqIgVB/g9LDQFCACABQgGIQv/////////3/wCDIAYbIQcgBSEEDAELQQAhBCAFQcN3SQ0AIAlBAiAFa0E/ca2IIgFCAYMgAXwiAUL/////////D1YhBCABQgGIIQcLIAAgBDYCCCAAIAc3AwAgA0EgaiQAC6cEAQJ/AkACQAJAAkACQAJAAkACQAJAIAEoAgBBgICAgHhzIgNBBCADQQdJGw4HAAECAwQFBgALQQAtAMD/owEaIAEtAAQhAUEMEIwBIgNFDQcgAyABOgAIIANCgYCAgBA3AgBBgPmDASEBDAYLQQAtAMD/owEaIAEtAAUhBCABLQAEIQFBDBCMASIDRQ0GIAMgBDoACSADIAE6AAggA0KBgICAEDcCAEG8+YMBIQEMBQtBAC0AwP+jARogAUEGai0AACEEIAEvAQQhAUEMEIwBIgNFDQUgAyABIARBEHRyIgE7AQggA0KBgICAEDcCACADQQpqIAFBEHY6AABB+PmDASEBDAQLQQAtAMD/owEaQdAAEIwBIgNFDQQgA0KBgICAEDcDACADQQhqIAFBCGpByAAQ3woaQbT6gwEhAQwDC0EALQDA/6MBGkGYAxCMASIDRQ0DIANCgYCAgBA3AgAgA0EIaiABQZADEN8KGkHw+oMBIQEMAgtBAC0AwP+jARpBiAIQjAEiA0UNAiADQoGAgIAQNwIAIANBCGogAUEEakGAAhDfChpBrPuDASEBDAELQQAtAMD/owEaQRQQjAEiA0UNASADQoGAgIAQNwIAIAMgASkCBDcCCCADQRBqIAFBDGooAgA2AgBB6PuDASEBCyAAIAMgASgCCEF/akF4cWpBCGogASgCLBEEADoADCAAIAI2AgggACABNgIEIAAgAzYCAA8LAAv+AwEBfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiACgCAA4TEhIBAgMEBQYHCAkKCwwNDg8QEQALIABBCGoQ1CsMEQsCQCAAKAIEQYCAgIB4Rw0AIABBCGoQzDcgAEEgahDMLiAAQRRqEN01DBELIABBBGoQzDcgAEEcahDMLiAAQRBqEN01DBALIABBEGoQ5i0gAEEoahDeNQwPCyAAQRBqEJczIABB2ABqEN41DA4LIABBBGoQnzcMDQsgAEEEahCBCQwMCyAAQQRqEIkqIAAoAgQgAEEIaigCABCtOgwLCyAAQQRqEIEJDAoLIABBBGoQgQkMCQsgAEEIahDKNwwICyAAQQRqEIEJIABBCGoQgQkgAEEMahCBCSAAQRBqEIEJDAcLIABBEGoQxDIMBgsgAEEEahCBCQwFCyAAQQRqEIEJDAQLIABBBGoQgQkgAEEIahCBCQwDCyAAQRBqEMQyIABBwABqEMs3IABBxABqEMs3DAILAkACQAJAAkAgACgCCEGAgICAeHMiAUEEIAFBBEkbDgQBAgUDAAsgAEEIahDKNyAAQRRqEOgzDAQLIABBIGoQ4DUMAwsgAEEQahD2OAwCCyAAQRBqEOI1DAELIABBCGoQ4TUgAEEoahDNNwsgAEHgAEEIEO4cC4gEAQF/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIAKAIADhMSEgECAwQFBgcICQoLDA0ODxARAAsgAEEIahCKMQwRCwJAIAAoAgRBgICAgHhHDQAgAEEIahCcNyAAKAIgENg4IABBFGoQxjUMEQsgAEEEahCcNyAAKAIcENg4IABBEGoQxjUMEAsgAEEQahCcLCAAKAIoEN04DA8LIABBEGoQgzMgACgCWBDdOAwOCyAAQQRqEJ83DA0LIABBBGoQggkMDAsgAEEEahCgNwwLCyAAQQRqEIIJDAoLIABBBGoQggkMCQsgAEEIahCeNwwICyAAQQRqEIIJIABBCGoQggkgAEEMahCCCSAAQRBqEIIJDAcLIABBEGoQhDMMBgsgAEEEahCCCQwFCyAAQQRqEIIJDAQLIABBBGoQggkgAEEIahCCCQwDCyAAQRBqEIQzIABBwABqEKE3IABBxABqEKE3DAILAkACQAJAAkAgACgCCEGAgICAeHMiAUEEIAFBBEkbDgQBAgUDAAsgAEEIahCeNyAAQRRqEOgzDAQLIAApAyAQojcMAwsgACkDECAAQSBqKQMAELk7DAILIABBGGopAwAgAEEgaigCABC6OwwBCyAAKQMIIABBHGotAAAQ1zQgAEEoahCbNwsgAEHgAEEIEO4cC+MDAQd/IwBBEGsiAiQAAkACQAJAAkACQAJAAkACQCABKAIgIgMNACABKAIAIQMgAUEANgIAIANFDQMgASgCCCEEIAEoAgQiAw0BIAEoAgwhAwNAAkAgAw0AQQAhBSAEIQMMBAsgA0F/aiEDIAQoAjQhBAwACwsgASADQX9qNgIgIAEoAgBBAUcNAyABKAIEDQQgAUEIaiEDIAEoAgwhBQNAIAMoAgAhAwJAIAUNACABQgA3AgggASADNgIEIAFBATYCAAwHCyAFQX9qIQUgA0E0aiEDDAALCyAEIQULA0AgAkEEaiADIAUQ3SIgAigCBCIDRQ0BIAIoAgghBQwACwsgAEEANgIADAMLQZS0oQEQ/TkACyABKAIEIQMLIAEoAgwhBSABKAIIIQQCQAJAA0AgBSADLwEySQ0BIAJBBGogAyAEEN0iIAIoAgQiA0UNAiACKAIMIQUgAigCCCEEDAALCyAFQQFqIQYCQAJAIAQNACADIQcMAQsgAyAGQQJ0akE0aiEGIAQhCANAIAYoAgAiB0E0aiEGIAhBf2oiCA0AC0EAIQYLIAAgBTYCCCAAIAQ2AgQgACADNgIAIAEgBjYCDCABQQA2AgggASAHNgIEDAELQaC4oQEQ/TkACyACQRBqJAAL0QMCAn8BfiMAQSBrIgMkACADQRBqIAIgASgCGCIEQQAQ5AICQAJAAkACQAJAIAMtABBBBEYNACADKQMQIgVC/wGDQgRSDQELAkACQAJAAkACQAJAIARFDQAgA0EQaiACIAQQsC0gAy0AEEEERg0AIAMpAxAiBUL/AYNCBFINAQsgA0EQaiABKAIgIAEoAiQgAhDTGgJAIAMtABBBBEYNACADKQMQIgVC/wGDQgRSDQILIAEoAgANAgJAIAEoAhAiBEUNACADQRBqIAIgBEF/akEAEOQCIAMtABBBBEYNACADKQMQIgVC/wGDQgRSDQcLIANBADYCECADQQhqIAIgA0EQakH8qqEBQQEQ1BECQCADLQAIQQRGDQAgAykDCCIFQv8Bg0IEUg0ICyADQRBqIAFBCGogAhC5HyADLQAQQQRGDQMgAykDECIFQv8Bg0IEUQ0DIAAgBTcCAAwICyAAIAU3AgAMBwsgACAFNwIADAYLIANBEGogAUEEaiACELwLIAMtABBBBEYNACADKQMQIgVC/wGDQgRSDQELIABBBDoAAAwECyAAIAU3AgAMAwsgACAFNwIADAILIAAgBTcCAAwBCyAAIAU3AgALIANBIGokAAvIAwIIfwR+AkBBABD+CSICKAIADQAgAkF/NgIAIAJBFGohAyACQQRqIQQgAigCCCIFIABxIQYgAK0iCkIZiEKBgoSIkKDAgAF+IQsgAigCBCEHQQAhCANAIAcgBmopAAAiDCALhSINQn+FIA1C//379+/fv/9+fINCgIGChIiQoMCAf4MhDQJAAkACQANAIA1QDQECQCAHQQAgDXqnQQN2IAZqIAVxa0EMbGoiCUF0aigCACAARw0AIAlBeGooAgAgAUYNAwsgDUJ/fCANgyENDAALCyAMIAxCAYaDQoCBgoSIkKDAgH+DUA0BAkAgAigCDA0AIAQgAxDhAxoLIAAgARAGIQcgAigCBCEJIAkgCSACQQhqKAIAIgUgChDxGCIGaiIILQAAIQMgCCAKQhmIpyIEOgAAIAkgBSAGQXhqcWpBCGogBDoAACACIAIoAhBBAWo2AhAgAiACKAIMIANBAXFrNgIMIAlBACAGa0EMbGoiCUF8aiAHNgIAIAlBeGogATYCACAJQXRqIAA2AgALIAlBfGooAgAQISEJIAIgAigCAEEBajYCACAJDwsgBiAIQQhqIghqIAVxIQYMAAsLQZzomAEQ6SIAC/kDAgJ/AX4jAEHAC2siAyQAAkACQAJAIAEtAEUiBEECRg0AQgIhBSAEQQFxRQ0BCyADQQM6AKwGIANCADcD4AUgA0GCBDsBtAYgA0EANgKIBiADQYCEiBA2ArAGIANBAjYCmAYgA0ECNgKQBiADQQI6ABQgA0G4BmogA0HgBWogA0EIahDIHyADQQA6AIkHIANBiAVqIANBuAZqQSgQ3woaIANBiAVqQdAAaiADQbgGakHQAGovAQA7AQAgA0GIBWpByABqIANBuAZqQcgAaikDADcDACADIAMpA/gGNwPIBSADQQA6AN0FIANBATsA2wUgA0KBgICAoAE3A8AFIANCgYCAgDA3A7gFIANBATYCsAUgAyADLwGOBzsB3gUgAyABKAIMQYCAgAEgASgCCBs2ArQFIAMgAS0ASSIBQQJGIAFyQQFxOgDaBSADQQhqEL0pIANBCGogA0GIBWoQtgchASACIAIoAgAiBEEBajYCACAEQX9MDQEgA0G4BmogASACEKsCIAFBwABqEPgpIAFB2ABqEPERIANBwAZqIQECQCADKQO4BiIFQgJRDQAgA0EIaiABQYAFEN8KGgwBCwJAIAMoAsAGQSlLDQAgARCFHAtCAiEFCyAAIAU3AwAgAEEIaiADQQhqQYAFEN8KGiADQcALaiQADwsAC/IDAgR/AX4jAEEQayIBJAACQAJAAkACQAJAAkACQCAAKAIADgYBAgMEBQYACyAAKAIEIgIQqgEgAkHAAEEIEO4cDAULAkAgACkDCCIFQgODQgBSDQAgASAFpyICNgIMIAFBDGoQ9QcgAiACKAIAIgNBf2o2AgAgA0EBRw0AIAIgAigCIBDTLwsgACgCICICRQ0EIAIoAgAiAxCMAyADQeAAQQgQ7hwgAkEMQQQQ7hwMBAsgACgCCCEEAkAgACgCDCIDRQ0AIAQhAgNAAkAgAigCAEEHRg0AIAIQhwkLIAJBKGohAiADQX9qIgMNAAsLIAAoAgQgBBDhMyAAKAIYIgJFDQMgAigCACIDEIwDIANB4ABBCBDuHCACQQxBBBDuHAwDCyAAKAIEIgIQhwkgAkEoQQgQ7hwgACgCGCICRQ0CIAIoAgAiAxCMAyADQeAAQQgQ7hwgAkEMQQQQ7hwMAgsgACgCCCEEAkAgACgCDCIDRQ0AIAQhAgNAIAIQ0hcgAkE4aiECIANBf2oiAw0ACwsgACgCBCAEEOMzIAAoAhgiAkUNASACKAIAIgMQjAMgA0HgAEEIEO4cIAJBDEEEEO4cDAELIAAoAgQiAhCHCSACQShBCBDuHCAAKAIIIgIQqgEgAkHAAEEIEO4cCyABQRBqJAAL8gMCBH8BfiMAQRBrIgEkAAJAAkACQAJAAkACQAJAIAAoAgAOBgECAwQFBgALIAAoAgQiAhCoASACQcAAQQgQ7hwMBQsCQCAAKQMIIgVCA4NCAFINACABIAWnIgI2AgwgAUEMahD1ByACIAIoAgAiA0F/ajYCACADQQFHDQAgAiACKAIgENMvCyAAKAIgIgJFDQQgAigCACIDEI0DIANB4ABBCBDuHCACQQxBBBDuHAwECyAAKAIIIQQCQCAAKAIMIgNFDQAgBCECA0ACQCACKAIAQQdGDQAgAhCICQsgAkEoaiECIANBf2oiAw0ACwsgACgCBCAEEOEzIAAoAhgiAkUNAyACKAIAIgMQjQMgA0HgAEEIEO4cIAJBDEEEEO4cDAMLIAAoAgQiAhCICSACQShBCBDuHCAAKAIYIgJFDQIgAigCACIDEI0DIANB4ABBCBDuHCACQQxBBBDuHAwCCyAAKAIIIQQCQCAAKAIMIgNFDQAgBCECA0AgAhDnFyACQThqIQIgA0F/aiIDDQALCyAAKAIEIAQQ4zMgACgCGCICRQ0BIAIoAgAiAxCNAyADQeAAQQgQ7hwgAkEMQQQQ7hwMAQsgACgCBCICEIgJIAJBKEEIEO4cIAAoAggiAhCoASACQcAAQQgQ7hwLIAFBEGokAAvyAwIEfwF+IwBBEGsiASQAAkACQAJAAkACQAJAAkAgACgCAA4GAQIDBAUGAAsgACgCBCICEKsBIAJBwABBCBDuHAwFCwJAIAApAwgiBUIDg0IAUg0AIAEgBaciAjYCDCABQQxqEPUHIAIgAigCACIDQX9qNgIAIANBAUcNACACIAIoAiAQ0y8LIAAoAiAiAkUNBCACKAIAIgMQ2wIgA0HgAEEIEO4cIAJBDEEEEO4cDAQLIAAoAgghBAJAIAAoAgwiA0UNACAEIQIDQAJAIAIoAgBBB0YNACACEIkJCyACQShqIQIgA0F/aiIDDQALCyAAKAIEIAQQ4TMgACgCGCICRQ0DIAIoAgAiAxDbAiADQeAAQQgQ7hwgAkEMQQQQ7hwMAwsgACgCBCICEIkJIAJBKEEIEO4cIAAoAhgiAkUNAiACKAIAIgMQ2wIgA0HgAEEIEO4cIAJBDEEEEO4cDAILIAAoAgghBAJAIAAoAgwiA0UNACAEIQIDQCACEO0XIAJBOGohAiADQX9qIgMNAAsLIAAoAgQgBBDjMyAAKAIYIgJFDQEgAigCACIDENsCIANB4ABBCBDuHCACQQxBBBDuHAwBCyAAKAIEIgIQiQkgAkEoQQgQ7hwgACgCCCICEKsBIAJBwABBCBDuHAsgAUEQaiQAC/IDAgR/AX4jAEEQayIBJAACQAJAAkACQAJAAkACQCAAKAIADgYBAgMEBQYACyAAKAIEIgIQrwEgAkHAAEEIEO4cDAULAkAgACkDCCIFQgODQgBSDQAgASAFpyICNgIMIAFBDGoQ9QcgAiACKAIAIgNBf2o2AgAgA0EBRw0AIAIgAigCIBDTLwsgACgCICICRQ0EIAIoAgAiAxD8AiADQeAAQQgQ7hwgAkEMQQQQ7hwMBAsgACgCCCEEAkAgACgCDCIDRQ0AIAQhAgNAAkAgAigCAEEHRg0AIAIQigkLIAJBKGohAiADQX9qIgMNAAsLIAAoAgQgBBDhMyAAKAIYIgJFDQMgAigCACIDEPwCIANB4ABBCBDuHCACQQxBBBDuHAwDCyAAKAIEIgIQigkgAkEoQQgQ7hwgACgCGCICRQ0CIAIoAgAiAxD8AiADQeAAQQgQ7hwgAkEMQQQQ7hwMAgsgACgCCCEEAkAgACgCDCIDRQ0AIAQhAgNAIAIQ9BcgAkE4aiECIANBf2oiAw0ACwsgACgCBCAEEOMzIAAoAhgiAkUNASACKAIAIgMQ/AIgA0HgAEEIEO4cIAJBDEEEEO4cDAELIAAoAgQiAhCKCSACQShBCBDuHCAAKAIIIgIQrwEgAkHAAEEIEO4cCyABQRBqJAAL1AMBCX8gACABEJsrEOw0GiAAKAIQIgIgACgCFEHYAGxqIQMgASgCFCEEAkADQCACIgUgA0YNASAFQdgAaiECAkACQAJAAkACQAJAAkAgBSgCACIGQXxqQQAgBkF7akEISRsOCQABAgMEBwcFBgALIAEgBRC+MyAFKAJEIgcgBSgCSEEGdGohCAJAA0AgByAIRg0BIAdBwABqIQkCQCAHKAIAQQdHDQAgBygCOEEMbCEGIAcoAjQhCgJAA0AgBkUNASAKIAEQxD0gBkF0aiEGIApBDGohCgwACwsgB0EIaiEGAkAgBy0AHEECRg0AIAYgBBDKPSAJIQcMAgsgBiABEO82IAkhBwwBCyAHIAEQ9jYgCSEHDAALCyAFKAIgQYCAgIB4Rg0GIAEgBUEgahDRCAwGCyABIAVBCGoQvjMgBUEwaiABEOU9DAULIAVBIGogARDlPQwECyABIAVBCGoQvjMgBUE8aiABEPc2IAVBMGogARCbKwwDCyAFQSRqIAEQ9zYgBUEsaiABEJsrDAILIAEgBUEEahDRCAwBCwJAIAUoAghBBUYNACABIAVBCGoQvjMLIAVBPGogARD3NiAFQTBqIAEQmysMAAsLIABBMGogARD3NgvaAwIHfwF+IwBBMGsiAiQAIAEQ8zEhAyACQRhqIAEQlwkgAigCGCEEAkACQAJAIAItACxBAkYNACACKAIkIQUgAigCICEGIAIoAhwhByACQRBqQQApA+jgmQE3AwAgAkEIakEAKQPg4JkBNwMAIAJBACkD2OCZATcDAAJAIAEQsRYgAhDFNQ0AIAIQ4hAgACAFNgIcIAAgBjYCGCAAQgA3AwggAEEANgIAIAAgB61CIIYgBK2ENwMQDAMLIAEgASkDGDcDUCABKAIAIQggAUElNgIAIAJBGGpBDGogAUEMaikCADcCACACQRhqQRRqIAFBFGooAgA2AgAgAiABKQIENwIcIAIgCDYCGCACQRhqEOIQIAIQ4hAgAkEYaiABEJcJAkAgAi0ALEECRw0AIAIoAhghAQwCCyACKAIgIQEgAikDGCIJUA0BIAAgAigCJCIINgIkIAAgATYCICAAIAk3AxggACAFNgIUIAAgBjYCECAAQQA2AgAgACADIAggAyAISxs2AiwgACADIAggAyAISRs2AiggACAHrUIghiAErYQ3AwgMAgsgAEEBNgIAIAAgBDYCBAwBCyAAQQE2AgAgACABNgIEIAetQiCGIASthBDSHwsgAkEwaiQAC5YEAQJ/IwBBIGsiAiQAAkACQAJAAkACQAJAIAAtAAAOBAABAgMACyACIAAoAgQ2AgQgASgCFEHQ9JgBQQIgASgCGCgCDBELACEAIAJBADoADSACIAA6AAwgAiABNgIIIAJBCGpB0vSYAUEEIAJBBGpBhwIQzgohASACQSk6ABMgAUGQ5qABQQQgAkETakGIAhDOCiEAQQAtAMD/owEaQRQQjAEiAUUNBCABQRBqQQAoAPb8mAE2AAAgAUEIakEAKQDu/JgBNwAAIAFBACkA5vyYATcAACACQRQ2AhwgAiABNgIYIAJBFDYCFCAAQZjWmQFBByACQRRqQYkCEM4KEKUbIQEgAigCFCIARQ0DIAIoAhggAEEBEO4cDAMLIAIgAC0AAToACCACIAEoAhRB1vSYAUEEIAEoAhgoAgwRCwA6ABwgAiABNgIYIAJBADoAHSACQQA2AhQgAkEUaiACQQhqQYgCEMcMEIsWIQEMAgsgACgCBCEAIAEoAhRBu8OhAUEFIAEoAhgoAgwRCwAhAyACQQA6ABkgAiADOgAYIAIgATYCFCACQRRqQZDmoAFBBCAAQQhqQYgCEM4KQZjWmQFBByAAQfgBEM4KEKUbIQEMAQsgAiAAKAIEIgA2AhQgAUHa9JgBQQZBkOagAUEEIABBCGpBiAJB0sOhAUEFIAJBFGpBigIQqRIhAQsgAkEgaiQAIAEPCwAL3wMBBn8jAEEgayICJAAgARDtDhogAUHUAkHYAiABLQDhAkECRhtqKAIAIQMCQCABEO0OIgRFDQAgBC0AAEEWRw0AIAFBAjoA4QIgASABKQPYAjcD0AILIAJBCGogARCaAUEBIQUgAigCDCEEAkAgAigCCA0AQQAhBSABEO0OIgZFDQAgBi0AAEEWRw0AQQAtAMD/owEaAkBBBBCMASIHRQ0AIAcgBDYCACACQQE2AhggAiAHNgIUIAJBATYCEEEEIQVBASEGA0ACQAJAIAEQ7Q4iBEUNACAELQAAQRZGDQELQQAhBUEALQDA/6MBGiABKALUAiEBQeAAEIwBIgRFDQIgBEKKgICAEDcDACAEIAIpAxA3AwggBEEQaiACQRhqKAIANgIAIAQgAyABIAMgAUsbNgIYIAQgAyABIAMgAUkbNgIUDAMLIAFBAjoA4QIgASABKQPYAjcD0AIgAiABEJoBIAIoAgQhBAJAIAIoAgBFDQAgAkEQahDSKSACKAIQIAcQ3zNBASEFDAMLAkAgBiACKAIQRw0AIAJBEGoQzg4gAigCFCEHCyAHIAVqIAQ2AgAgAiAGQQFqIgY2AhggBUEEaiEFDAALCwALIAAgBDYCBCAAIAU2AgAgAkEgaiQAC6QDAQh/IAAgAUEEdEFwaiIDaiEEIAIgA2ohBSAAIAFBAXYiBkEEdGoiA0FwaiEHA0ACQCADKAIEIAMoAgggACgCBCAAKAIIEIYsIghB/wFxDQAgAy0ADCAALQAMayEICyACIAMgACAIQf8BcSIIQf8BRiIJGyIKKQIANwIAIAJBCGogCkEIaikCADcCACAIQf8BR0EEdCEKIAlBBHQhCQJAIAQoAgQgBCgCCCAHKAIEIAcoAggQhiwiCEH/AXENACAELQAMIActAAxrIQgLIAJBEGohAiAAIApqIQAgAyAJaiEDIAUgByAEIAhB/wFxIghB/wFGIgkbIgopAgA3AgAgBUEIaiAKQQhqKQIANwIAIAVBcGohBSAHQXBBACAJG2ohByAEQXBBACAIQf8BRxtqIQQgBkF/aiIGDQALIAdBEGohBwJAIAFBAXFFDQAgAiAAIAMgACAHSSIFGyIIKQIANwIAIAJBCGogCEEIaikCADcCACADIAAgB09BBHRqIQMgACAFQQR0aiEACwJAIAAgB0cNACADIARBEGpHDQAPCxDtKwAL1QMBB38jAEEgayIEJAACQAJAAkACQAJAIAEtAJwNQQFGDQACQAJAAkAgASkDAEICUQ0AIAIoAsgEQQJGDQQgAkHYAWohBQJAAkACQCABKAL4BCIGLQDaAg0AIARBEGogASAFIAMQTiAEKAIQIgVBAkcNAQwICyAGLQDbAiEHIARBEGogASAFIAMQTiAEKAIQIghBAkYNByAIQQBHIQkgBCgCGCEGIAQoAhQhCiAIRQ0EIAdBAXFFDQQgBEEEaiADIAogBiAGIAEgBRDMCCAEKAIEIglBAkcNASAEKAIIIQUMCAsgBQ0CQQAhCQwDCyAEKAIMIQYgBCgCCCEKDAILIARBEGogASACIAMQlgZBASEBAkACQCAEKAIQQQFHDQAgACAEKQIYQiCJNwIEDAELQQAhAQsgACABNgIADAYLIAQoAhghBiAEKAIUIQpBASEJCyAAIAY2AgggACAKNgIEIAAgCTYCAAwEC0GUzqEBQShB5IKDARDTJwALQYSCgwEQ/TkACyAEKAIUIQULIAUQuxkaIARBEGogASACIAMQlgZBASEBAkACQCAEKAIQQQFHDQAgACAEKQIYQiCJNwIEDAELQQAhAQsgACABNgIACyAEQSBqJAAL7QMBB38jAEEwayICJAAgASgC0AEhAyABLQC9ASEEIAFBwAFqIgUQpSMCQAJAIAEtAPwBQQJHDQAgASgC9AFBgOAAcUGAIEcNACAAQQQ6AAQgAEEUNgIADAELAkAgASgCxAEiBiABKALAASIHRg0AIActAABBIUcNACAHIAYQjipBLUcNACAHIAYQ7SZBLUcNACABQQMQiQggARCtAyACQaaAgIB4NgIYIAEgAyACQRhqELo3IAAgARCCGAwBC0EEIQgCQCAHIAYQ4i0iB0E8Rw0AIAUQpSNBCCEICwJAAkAgBUE9EOsnDQAgAkEUNgIAIAIgCDoABAwBCwJAAkACQCAIQXxqDgUBAAAAAgALQZTOoQFBKEGUt5kBENMnAAsgAkEUNgIAIAJBBToABAwBCyACQRU2AgAgAkEGOgAECwJAIAdBPEcNACAEQQFxRQ0AIAEoAsABIAEoAsQBQZDRmgFBBhC7N0UNACACQZuBgIB4NgIYIAEoAtwBIAEoAvQBIAMgA0EHaiIHIAMgB0kbIAMgByADIAdLGyACQRhqENEcIAFBBRCJCCABEK0DIAAgARCCGCACEIwPDAELIAAgAikDADcDACAAQRBqIAJBEGopAwA3AwAgAEEIaiACQQhqKQMANwMACyACQTBqJAALuwMBBX9BASEDIAEgASgC5AEiBEEBaiIFNgLkAQJAAkACQAJAIAQsAAAiBkF/Sg0AIAEgBEECaiIFNgLkASAELQABQT9xIQMgBkEfcSEHIAZBX0sNASAHQQZ0IANyIQYMAgsgAUH0AWohBCABKAL0ASEHDAILIAEgBEEDaiIFNgLkASADQQZ0IAQtAAJBP3FyIQMCQCAGQXBPDQAgAyAHQQx0ciEGDAELIAEgBEEEaiIFNgLkASADQQZ0IAQtAANBP3FyIAdBEnRBgIDwAHFyIQYLIAFB9AFqIQQgASgC9AEhBwJAIAZBgAFPDQBBASEDDAELAkAgBkGAEE8NAEECIQMMAQtBA0EEIAZBgIAESRshAwsgASgC6AEhBiAEIAMgB2oiBzYCAEERIQRBACEDAkAgAkUNAEEPIQQCQAJAIAYgBUYNACAFLQAAQSpGDQELQQEhAwwBCyABIAdBAWoiBzYC9AEgASAFQQFqIgU2AuQBQTghBAsCQCAGIAVGDQAgBS0AAEE9Rw0AIAEgB0EBajYC9AEgASAFQQFqNgLkAUEhQSpBIyACGyADGyEECyAAQQA6AAAgACAEOgABC+cDAgR/AX4jAEEQayIBJAACQAJAAkACQAJAAkACQCAAKAIADgYBAgMEBQYACyAAKAIEIgIQogEgAkHAAEEIEO4cDAULAkAgACkDCCIFQgODQgBSDQAgASAFpyICNgIMIAFBDGoQ9QcgAiACKAIAIgNBf2o2AgAgA0EBRw0AIAIgAigCIBDTLwsgACgCICICRQ0EIAIoAgAiAxCJAyADQeAAQQgQ7hwgAkEMQQQQ7hwMBAsgACgCCCEEAkAgACgCDCIDRQ0AIAQhAgNAAkAgAigCAEEHRg0AIAIQkwkLIAJBKGohAiADQX9qIgMNAAsLIAAoAgQgBBDhMyAAKAIYIgJFDQMgAigCACIDEIkDIANB4ABBCBDuHCACQQxBBBDuHAwDCyAAKAIEIgIQkwkgAkEoQQgQ7hwgACgCGCICRQ0CIAIoAgAiAxCJAyADQeAAQQgQ7hwgAkEMQQQQ7hwMAgsgACgCCCEEAkAgACgCDCIDRQ0AIAQhAgNAIAIQ3RkgAkE4aiECIANBf2oiAw0ACwsgACgCBCAEEOMzIAAoAhgiAkUNASACKAIAIgMQiQMgA0HgAEEIEO4cIAJBDEEEEO4cDAELIABBBGoQ1AsgACgCCCICEKIBIAJBwABBCBDuHAsgAUEQaiQAC6YDAQR/AkACQEEAQREgAEGvsARJGyIBIAFBCHIiASABQQJ0QcDzgQFqKAIAQQt0IABBC3QiAUsbIgIgAkEEciICIAJBAnRBwPOBAWooAgBBC3QgAUsbIgIgAkECciICIAJBAnRBwPOBAWooAgBBC3QgAUsbIgIgAkEBaiICIAJBAnRBwPOBAWooAgBBC3QgAUsbIgIgAkEBaiICIAJBAnRBwPOBAWooAgBBC3QgAUsbIgJBAnRBwPOBAWooAgBBC3QiAyABRiADIAFJaiACaiICQSFLDQAgAkECdEHA84EBaiIDKAIAQRV2IQFB7wUhBAJAAkAgAkEhRg0AIAMoAgRBFXYhBCACDQBBACECDAELIAJBAnRBvPOBAWooAgBB////AHEhAgsCQCAEIAFBf3NqRQ0AIAAgAmshAyABQe8FIAFB7wVLGyEAIARBf2ohBEEAIQIDQCAAIAFGDQMgAiABQcj0gQFqLQAAaiICIANLDQEgBCABQQFqIgFHDQALIAQhAQsgAUEBcQ8LIAJBIkHEkIEBEKEbAAsgAEHvBUHUkIEBEKEbAAumAwEEfwJAAkBBAEEaIABBwNoFSRsiASABQQ1qIgEgAUECdEGA5oEBaigCAEELdCAAQQt0IgFLGyICIAJBB2oiAiACQQJ0QYDmgQFqKAIAQQt0IAFLGyICIAJBA2oiAiACQQJ0QYDmgQFqKAIAQQt0IAFLGyICIAJBAmoiAiACQQJ0QYDmgQFqKAIAQQt0IAFLGyICIAJBAWoiAiACQQJ0QYDmgQFqKAIAQQt0IAFLGyICQQJ0QYDmgQFqKAIAQQt0IgMgAUYgAyABSWogAmoiAkE0Sw0AIAJBAnRBgOaBAWoiAygCAEEVdiEBQesLIQQCQAJAIAJBNEYNACADKAIEQRV2IQQgAg0AQQAhAgwBCyACQQJ0QfzlgQFqKAIAQf///wBxIQILAkAgBCABQX9zakUNACAAIAJrIQMgAUHrCyABQesLSxshACAEQX9qIQRBACECA0AgACABRg0DIAIgAUHU54EBai0AAGoiAiADSw0BIAQgAUEBaiIBRw0ACyAEIQELIAFBAXEPCyACQTVBxJCBARChGwALIABB6wtB1JCBARChGwALyQMBA38jAEHAAGsiBiQAAkACQAJAIAIgA0kNACABKAIYIgdBAWoiAkUNASAGIAEoAhwiAzYCECAGIAI2AgwgASgCFCEIIANBAWogB00NAiAIIANJDQIgASACNgIYAkACQCAFKAIADQAgBSgCBCEHDAELIAUoAgghBwsCQAJAIAQoAhAoAlgiBS0AHEEBcQ0AAkAgAyAITw0AIAUtACBBAnENAQsgAUEIaiEBAkAgBSgCAEUNAEEAIAMgAmsiAiACIANLGyIDIAUoAgRJDQEgASgCAEF/akEBSw0AIAUtACBBAnFFDQAgBSgCCEUNACADIAUoAgxLDQELIAZBFGogBCgCCCAEKAIMIgMoAghBf2pBeHFqQQhqIAcgASADKAI0EQ0ADAELIAZBADYCFAsgACAGKQIUNwIAIABBCGogBkEUakEIaikCADcCACAGQcAAaiQADwtB2L6DAUEeQfi+gwEQ0ycAC0GIv4MBEP05AAsgBkECNgIYIAZBpIKhATYCFCAGQgI3AiAgBkEHNgI4IAZBgwE2AjAgBiAINgI8IAYgBkEsajYCHCAGIAZBPGo2AjQgBiAGQQxqNgIsIAZBFGpBtIKhARCtLgAL9QMCBH8BfiMAQSBrIgIkAAJAAkACQCABELEWIgMNACABKAKwAiEBIAJBgICAgHg2AgggASABIAJBCGoQ/iIhASAAQQI6ABQgACABNgIADAELAkACQAJAAkACQCADKAIAIgNBH0YNACADQSRHDQEgASABKQMYNwNQIAEoAgAhAyABQSU2AgAgA0EkRw0CIAEoAgQhASAAQQI6ABQgACABNgIADAULIAEgASgCHCIENgJUIAEgASgCGCIFNgJQIAEoAgAhAyABQSU2AgAgA0EfRw0CIAEpAwghBiAAQQA6ABQgAEEANgIQIAAgBDYCDCAAIAU2AgggACAGNwMADAQLIAEoAswCIgNBgICACHFFDQIgACABIANBgAJxRSADQYABcUUQ7gEMAwtBlM6hAUEoQdjhmQEQ0ycAC0GUzqEBQShBmNSZARDTJwALIAJBCGpBBHIgARDfGiACIAEQ+yAgAkEONgIcIAJBkPKaATYCGCACQbCAgIB4NgIIIAIoAgAgAigCBCACQQhqEP4iIQMCQCABELEWIgRFDQAgBCgCAEEkRw0AIAEgASkDGDcDUCABKAIAIQQgAUElNgIAIARBJEcNAiABIAEoAgQQ4xMLIABBAjoAFCAAIAM2AgALIAJBIGokAA8LQZTOoQFBKEHY4ZkBENMnAAvIAwECfwJAAkACQAJAAkACQAJAIAAoAgAOCAUAAQIGBgMEBQsgACgCICABEJIRDwsgACgCBCIAKAIIIgJFDQQgACgCBCIAIAJBOGxqIQMDQCAAIAEQ1g4CQCAAKAIwIgJFDQAgASACELADCyAAQThqIgAgA0cNAAwFCwsgACgCBCIAKAIIIgJFDQMgACgCBCIAIAJBOGxqIQMDQCAAIAEQ1g4CQCAAKAIwIgJFDQAgASACELADCyAAQThqIgAgA0cNAAwECwsgACgCBCIAKAIoIgJFDQIgAkEwbCECIAAoAiRBKGohAANAAkAgACgCACIDRQ0AIAEgAxCwAwsgAEEwaiEAIAJBUGoiAg0ADAMLCyAAKAIEIgAtAEUiAkEDRg0BAkAgAkECRw0AIAAoAigiAkUNAiAAKAIkIQAgAkE4bCECA0AgACABEMYQIABBOGohACACQUhqIgINAAwDCwsCQCAAKAJAIgAtACVBAkYNAANAIAAoAiAiAC0AJUECRw0ACwsgAEEIaigCACICRQ0BIABBBGooAgAhACACQThsIQIDQCAAIAEQxhAgAEE4aiEAIAJBSGoiAg0ADAILCyAAKAIgIAEQwgYLC8gDAQJ/AkACQAJAAkACQAJAAkAgACgCAA4IBQABAgYGAwQFCyAAKAIgIAEQkREPCyAAKAIEIgAoAggiAkUNBCAAKAIEIgAgAkE4bGohAwNAIAAgARDVDgJAIAAoAjAiAkUNACABIAIQjwMLIABBOGoiACADRw0ADAULCyAAKAIEIgAoAggiAkUNAyAAKAIEIgAgAkE4bGohAwNAIAAgARDVDgJAIAAoAjAiAkUNACABIAIQjwMLIABBOGoiACADRw0ADAQLCyAAKAIEIgAoAigiAkUNAiACQTBsIQIgACgCJEEoaiEAA0ACQCAAKAIAIgNFDQAgASADEI8DCyAAQTBqIQAgAkFQaiICDQAMAwsLIAAoAgQiAC0ARSICQQNGDQECQCACQQJHDQAgACgCKCICRQ0CIAAoAiQhACACQThsIQIDQCAAIAEQuA4gAEE4aiEAIAJBSGoiAg0ADAMLCwJAIAAoAkAiAC0AJUECRg0AA0AgACgCICIALQAlQQJHDQALCyAAQQhqKAIAIgJFDQEgAEEEaigCACEAIAJBOGwhAgNAIAAgARC4DiAAQThqIQAgAkFIaiICDQAMAgsLIAAoAiAgARDBBgsLyAMBAn8CQAJAAkACQAJAAkACQCAAKAIADggFAAECBgYDBAULIAAoAiAgARCaEQ8LIAAoAgQiACgCCCICRQ0EIAAoAgQiACACQThsaiEDA0AgACABELwOAkAgACgCMCICRQ0AIAEgAhDqAgsgAEE4aiIAIANHDQAMBQsLIAAoAgQiACgCCCICRQ0DIAAoAgQiACACQThsaiEDA0AgACABELwOAkAgACgCMCICRQ0AIAEgAhDqAgsgAEE4aiIAIANHDQAMBAsLIAAoAgQiACgCKCICRQ0CIAJBMGwhAiAAKAIkQShqIQADQAJAIAAoAgAiA0UNACABIAMQ6gILIABBMGohACACQVBqIgINAAwDCwsgACgCBCIALQBFIgJBA0YNAQJAIAJBAkcNACAAKAIoIgJFDQIgACgCJCEAIAJBOGwhAgNAIAAgARC9DiAAQThqIQAgAkFIaiICDQAMAwsLAkAgACgCQCIALQAlQQJGDQADQCAAKAIgIgAtACVBAkcNAAsLIABBCGooAgAiAkUNASAAQQRqKAIAIQAgAkE4bCECA0AgACABEL0OIABBOGohACACQUhqIgINAAwCCwsgACgCICABEMYGCwvIAwEEfwJAIAAoAggiAkUNACAAKAIEIQMgAkEMbCECA0AgASADKAIAENwBIANBDGohAyACQXRqIgINAAsLAkAgACgCFCIDRQ0AIAAoAhAiBCADQdgAbGohBQNAAkACQAJAAkACQAJAIAQoAgAiA0F8akEAIANBe2pBCEkbDgkFAAUBAgUFAwQFCyAEQQhqIAEQqzQMBAsgBEEIaiABEKs0AkAgBCgCPCIDRQ0AIAEgAxDcAQsgBCgCOCICRQ0DIAQoAjQhAyACQQxsIQIDQCABIAMoAgAQ3AEgA0EMaiEDIAJBdGoiAg0ADAQLCwJAIAQoAiQiA0UNACABIAMQ3AELIAQoAjQiAkUNAiAEKAIwIQMgAkEMbCECA0AgASADKAIAENwBIANBDGohAyACQXRqIgINAAwDCwsgBEEEaiABEL4qDAELAkAgBCgCCEEFRg0AIARBCGogARCrNAsCQCAEKAI8IgNFDQAgASADENwBCyAEKAI4IgJFDQAgBCgCNCEDIAJBDGwhAgNAIAEgAygCABDcASADQQxqIQMgAkF0aiICDQALCyAEQdgAaiIEIAVHDQALCwJAIAAoAjAiA0UNACABIAMQ3AELC+ADAQN/IwBB4ABrIgQkACAEQQE6ABggBELkgICAoB83AhAgBEKKgICAoAE3AgggBEEANgIkIARCgICAgMAANwIcAkAgA0UNACADQQJ0IQMDQCAEQShqIARBCGogAigCABCEAgJAAkAgBCgCKEGAgICAeEcNACAEQRxqEIUwIARBgICAgHg2AhwMAQsgBCgCMCEFIARBADYCMCAEQQA2AkQgBCAFNgJAIAQgBCgCLCIGNgI0IAQgBiAFQQR0ajYCOCAEKAIcIQUgBCAEQShqNgI8AkAgBUGAgICAeEcNACAEQTRqELMeDAELIARByABqQRBqIARBNGpBEGooAgA2AgAgBEHIAGpBCGogBEE0akEIaikCADcDACAEIAQpAjQ3A0ggBEEcaiAEQcgAahC7DCAEKAIcQYCAgIB4Rg0AIARBHGoQng4LIAJBBGohAiAEQShqEIUwIANBfGoiAw0ACwsCQAJAIAENACAEKAIcQYCAgIB4Rg0BAkAgBCgCJCICQQJJDQAgBCgCICEDAkAgAkEVSQ0AIAMgAhDbEwwBCyADIAIQsy4LIARBHGoQng4MAQsgBEEcakEAEIMECyAAIAQpAhw3AgAgAEEIaiAEQRxqQQhqKAIANgIAIARB4ABqJAAL8gMBB38jAEHAAGsiAiQAIAEoAswCIQMgAkEYaiABEJUBIAIoAhwhBAJAAkACQAJAIAIoAhhFDQAgAiAENgIkAkAgARCxFiIFDQAgASgCsAIhASACQYCAgIB4NgIoIAEgASACQShqEP4iIQQMAgsCQCAFKAIAQSRGDQAgAkE4aiIGQQApA5i6mQE3AwAgAkEwaiIHQQApA5C6mQE3AwAgAkEAKQOIupkBNwMoIAJBKGogBRCIByEIIAJBKGoQ4hACQAJAIANBwABxRQ0AIAgNAQsgBkEAKQOQsJkBNwMAIAdBACkDiLCZATcDACACQQApA4CwmQE3AyggAkEoaiAFEIgHIQMgAkEoahDiECADDQAgBSgCAEEURw0ECyACQRBqIAEQ+yAgAigCFCEFIAIoAhAhAyACQYuBgIB4NgIoIAEgAyAFIAJBKGoQiCogBCgCACAEKAIEEN0vIQQgAkEkahDUCQwBCyABIAEpAxg3A1AgASgCACEEIAFBJTYCAAJAIARBJEcNACABKAIEIQQMAgtBlM6hAUEoQdjhmQEQ0ycAC0EAIQUgBCgCAEEeRg0CIAJBCGogASAEQQAQtxEgAigCDCEEIAIoAgghBQwCCyACQSRqENQJC0EBIQULIAAgBDYCBCAAIAU2AgAgAkHAAGokAAvoAwEGfyMAQSBrIgMkAAJAAkACQAJAAkAgASgCkAIiBEECcUUNACABKAKEAiIFKAIIIgZB/v///wdLDQEgBSgCFEUNACAGDQIgBUF/NgIIIAEoAoACIgYoAggNAyAGQX82AgggBSgCECEHIAZBDGogBSgCFCIIEKEwIAYoAhAgBigCFEECdGogByAIQQJ0EN8KGiAGIAggBigCFGo2AhQgBUEANgIUIAYgBigCCEEBajYCCCAFIAUoAghBAWo2AggLIAEgBEGAIHI2ApACAkACQCABEO0OIgUNACABKAL8ASEFIANBgICAgHg2AgggBSAFIANBCGoQ/iIhBUEBIQYMAQsCQCAFLQAAQZsBRw0AIAFBAjoA4QIgASABKQPYAjcD0AJBASEGIAEQ3xghBQwBCyABQQI6AOECIAEgASkD2AI3A9ACIAMgARCyA0EBIQYgAygCBCEIAkAgAygCAEUNACAIIQUMAQtBACEGQQAtAMD/owEaIAEoAtQCIQdBDBCMASIFRQ0EIAUgCDYCACAFIAIgByACIAdLGzYCCCAFIAIgByACIAdJGzYCBAsgASAEENwRIAAgBTYCBCAAIAY2AgAgA0EgaiQADwtBnISbARDqIgALQYyEmwEQ6SIAC0H8g5sBEOkiCwAL1AMBAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAA4SARERAgMEBQYHCAkKCwwNDg8QAAsgAEEEahD+BA8LIABBBGoQvjcMDwsgAEEEahD+BCAAQQhqEPQ2DwsgAEEMahCnOA8LIAApAxAQ0h8gAEEoahD0Ng8LIAApAxAgAC0AJBDXNA8LIAApAxAgAC0AJBDXNA8LIABBBGoQ/gQgAEEIahD0NiAAKAIURQ0JIABBFGoQ9DYPCyAAQRBqEP4EIABBBGoQjyogACgCBCAAKAIIEKQ6DwsgAEEEahD+BA8LIAAoAgQiAEHIAGoQvjcCQCAAKAIAQQhGDQAgABDyNiAAQShqEL43CyAAQeAAahDUNSAAQYABQQgQ7hwPCyAAQQRqEP4EIABBCGoQ9DYPCyAAQQRqEP4EIABBCGoQ9DYPCwJAIAAoAgQiAUECRg0AIABBCGohAgJAIAENACACKAIAEOs4DAELIAIQ/gQLIABBGGoQpzggAEEcahCnOCAAQQxqEPQ2DwsgAEEEahCmLiAAQQxqEP4EIABBEGoQ9DYPCyAAQQRqEKYuIABBDGoQ/gQgAEEQahD0Ng8LIABBCGoQ/w4PCwvpAwEGfyMAQcAAayIDJAAgAyABNgIsIANBMGogARCmHgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMoAjAiBEGAgICAeEYNAEEAIQUCQAJAIAMoAjQiBiADKAI4IgdBpIKAAUEHEKAxRQ0AQQAhCAwBCwJAIAYgB0GrgoABQQgQoDFFDQBBASEIDAELAkAgBiAHQbOCgAFBCBCgMUUNAEECIQgMAQsCQCAGIAdBu4KAAUEGEKAxRQ0AQQMhCAwBC0EBIQUgBiAHQcSCgAFBBBDWGCEHCyAEIAYQ9jkgARD/NiAFDQEgCEH/AXEOBQMEBQYCAwsgA0EsaiADQT9qQYTHgAEQrAghByABEP82CyACEP82IAchAgsgACACNgIEDAQLIANBCGogAhC8HyADKAIIRQ0HIAAgAygCDDYCBAwDCyADQRBqIAIQvB8gAygCEEUNBSAAIAMoAhQ2AgQMAgsgA0EYaiACELwfIAMoAhhFDQMgACADKAIcNgIEDAELIANBIGogAhC8HyADKAIgRQ0BIAAgAygCJDYCBAtBASEBDAQLIABBAzoAAUEAIQEMAwsgAEECOgABQQAhAQwCCyAAQQE6AAFBACEBDAELQQAhASAAQQA6AAELIAAgAToAACADQcAAaiQAC9YDAQh/IwBBwABrIgIkACABEPwxIQMgAkEgakEAKQOg4JkBNwMAIAJBGGpBACkDmOCZATcDACACQQApA5DgmQE3AxACQAJAIAEQtRYgAkEQahDLNQ0AIAJBEGoQ7A4gAkEIaiABEP4KIAIoAgwhASAAQQJBACACKAIIQQFxIgMbNgIAIABBBEEMIAMbaiABNgIADAELIAEgASkDGDcDUCABKAIAIQQgAUElNgIAIAJBKGpBDGogAUEMaikCADcCACACQShqQRRqIAFBFGooAgA2AgAgAiABKQIENwIsIAIgBDYCKCACQShqEOwOIAJBEGoQ7A4gASgCVCEEIAFB2ABqIAEoAswCIgVBwAByEOMPIAIgARD+CiADIAQgAyAESRshBiADIAQgAyAESxshB0EBIQQgAigCBCEDAkACQCACKAIAQQFxDQAgACADNgIMIAAgBzYCCAwBCyADKAIEIQQgAygCACEIQQRBBBDNMyIJIAM2AgAgAiAHNgI8IAIgBjYCOCACIAk2AiwgAkEhNgI0IAJBtvyaATYCMCACQbiBgIB4NgIoIAggBCACQShqEP4iIQZBAiEECyAAIAQ2AgAgACAGNgIEIAEgBRCgPgsgAkHAAGokAAvKAwECfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADhIBERECAwQFBgcICQoLDA0ODxAACyAAQQRqEIMFDwsgAEEEahC+NwwPCyAAQQRqEIMFIABBCGoQ/zUPCyAAQQxqEIk4DwsgAEEQahDHHiAAQShqEP81DwsgAEEQahDjNQ8LIABBEGoQ4zUPCyAAQQRqEIMFIABBCGoQ/zUgACgCFEUNCSAAQRRqEP81DwsgAEEQahCDBSAAQQRqEI8qIAAoAgQgACgCCBCkOg8LIABBBGoQgwUPCyAAKAIEIgBByABqEL43AkAgACgCAEEIRg0AIAAQ/jUgAEEoahC+NwsgAEHgAGoQ/DUgAEGAAUEIEO4cDwsgAEEEahCDBSAAQQhqEP81DwsgAEEEahCDBSAAQQhqEP81DwsCQCAAKAIEIgFBAkYNACAAQQhqIQICQCABDQAgAigCABDrOAwBCyACEIMFCyAAQRhqEIk4IABBHGoQiTggAEEMahD/NQ8LIABBBGoQnC4gAEEMahCDBSAAQRBqEP81DwsgAEEEahCcLiAAQQxqEIMFIABBEGoQ/zUPCyAAQQhqEPcODwsL9wQBAn8CQAJAAkAgAUH/AXEiBEEbSw0AAkBBASAEdEHCgLDAAHFFDQBBAQ8LAkAgBEECRg0AIARBCUcNAQJAAkAgACgChAEiBEGAAUsNACAAQQFqIQUMAQsgACgCBCEEIAAoAgghBQsgBEUNAkEBIQACQCAEIAVqQX9qLQAAQX5qDgIEAAMLQQAPCwJAAkAgACgChAEiAUGAAUsNACAAQQFqIQIgASEEDAELIAAoAgQhBCAAKAIIIQILAkAgBA0AQQAPCwJAIAQgAmpBf2otAAAiBEEDRw0AAkACQCABQYABSw0AIABBAWohAgwBCyAAKAIIIQIgACgCBCEBC0EBIQAgAUEBTQ0AIAEgAmpBfmotAABBCkYNAwsgBEECRg8LQQEhAAJAAkAgBEGuf2oOGwMCAgICAgICAgICAgICAQICAgICAgICAgICAQALIARBnAFHDQFBAQ8LIAIhAAwBCwJAIAJFDQAgAUFzakH/AXFBCkkNACABQbl/akH/AXFBJ0kNACABQVFqQf8BcUENSQ0AAkAgAUH/AXEObQEAAQABAAEBAAEBAQEAAAAAAAAAAAAAAQAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAEAAQABAAAAAAABAQEBAAEAAAAAAAABAQABAAEAAAABAAABAAEAAAEACyABQWFqQf8BcUEPSQ0AQQEhACABQf8BcUF/ag5FAAABAQEAAQAAAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAQEBAAAAAQsgA0EBcw8LIAALtQMCBn8CfiMAQRBrIgEkAAJAAkACQAJAAkAgACgCACICRQ0AIAAoAggiAyAAKAIEIgRPDQACQAJAIAIgA2otAABBtX9qDgIBAAILIAAgA0EBaiIFNgIIIAUgBEkNAgwDCyAAIANBAWo2AgggAEEAEM4CIQUMBAsgABDuAyEFDAMLIAIgBWotAABB3wBHDQAgACADQQJqNgIIQgAhBwwBC0IAIQcCQAJAAkADQAJAIAUgBE8NACACIAVqLQAAQd8ARg0CCyAEIAVGDQICQCACIAVqLQAAIgZBUGoiA0H/AXFBCkkNAAJAIAZBn39qQf8BcUEaSQ0AIAZBv39qQf8BcUEaTw0EIAZBY2ohAwwBCyAGQal/aiEDCyAAIAVBAWoiBTYCCCABIAdCAEI+QgAQsBggASkDCEIAUg0CIAEpAwAiCCADrUL/AYN8IgcgCFoNAAwCCwsgACAFQQFqNgIIIAdCf1INAQsCQCAAKAIQIgJFDQBBASEFIAJB+K6XAUEQEN8FDQMLQQAhBSAAQQA6AAQgAEEANgIADAILIAdCAXwhBwsgACAHENcRIQULIAFBEGokACAFC8kDAQZ/IwBBIGsiAiQAIAEgACgCCEF+aiIDQQYgA0EJSRsiAxDsMQJAAkACQAJAAkACQCADDgkABAUFBQUDAgEFC0EAIQMgAkEYakEAIAAoAhAgACgCFEGok5kBEP8tIAIoAhwhBCACKAIYIQVBACEGQQAhBwNAAkAgBCADIgBHDQACQCAHIARPDQAgAkEIaiAHIAUgBEG4k5kBEP8tIAEgAigCCCACKAIMIgAQzg0gACAGakEedyEGCyABIAYQlxYMBgsgAEEBaiEDIAUgAGotAABBL0cNAAJAIAAgB00NACABIAUgB2ogACAHayIAEM4NIAAgBmpBHnchBgsgAkEQaiADIAUgBEHIk5kBEP8tIAIoAhAhAAJAAkACQAJAAkAgAigCFA4CAgABCyAALQAAQS5HDQEMAgsgAC0AAEEuRw0AIAAtAAFBL0YNAQtBACEADAELQQEhAAsgACADaiEHDAALCyAAQRBqKAIAIABBFGooAgAgARCaNwwDCyAAQRBqKAIAIABBFGooAgAgARCaNwwCCyAAQRxqKAIAIABBIGooAgAgARCaNwwBCyAAQRBqKAIAIABBFGooAgAgARCaNwsgAkEgaiQAC+MDAQV/IwBBwABrIgAkAAJAAkACQEEALQD4+aMBQQJHDQBBACgC/PmjASEBQQBBADYC/PmjASABRQ0BIABBKGogAREDACAAQRBqQRBqIgIgAEEoakEQaigCADYCACAAQRBqQQhqIgMgAEEoakEIaikCADcDACAAQQxqQQJqIgQgAEE/ai0AADoAACAAIAApAig3AxAgACAALwA9OwEMIAAtADwhAQJAAkBBAC0A+PmjAUECRw0AQQAgACkDEDcC5PmjAUEAIAE6APj5owFBACAALwEMOwD5+aMBQQAgAigCADYC9PmjAUEAIAMpAwA3Auz5owFBACAELQAAOgD7+aMBDAELIAFB/wFxQQJHDQMLIABBAjoAPCAAQShqEMUtCyAAQcAAaiQADwsgAEEANgI4IABBATYCLCAAQejpogE2AiggAEIENwIwIABBKGpB0OqiARCtLgALIABBP2ogAEEOai0AADoAACAAQShqQQhqIABBEGpBCGopAwA3AwAgAEEoakEQaiAAQRBqQRBqKAIANgIAIAAgAC8BDDsAPSAAIAApAxA3AyggACABOgA8IABBKGoQxS0gAEEANgI4IABBATYCLCAAQfDqogE2AiggAEIENwIwIABBKGpB+OqiARCtLgALtgMCBX8BfiMAQcAAayICJABBDCEDAkACQAJAAkAgACgCBCAALQALIgRBwABqQf8BcSIFQQwgBUEMSRsgBEH+AUYbIgYgAWoiBSAGSQ0AAkAgBEH+AUcNACAAKAIIIgNBGHYhBAJAIANB////d0YNACADQf///wdxIQMMAQsgACgCAEF8aigAACEDCyAFIANJDQMgBUENSQ0BAkAgBEH+AUYNACACQRBqIAAQ1ycgAkEYaiACKAIQIAIoAhQgARCtECACQRhqIQQMAwsgAEH/////ByAGrUIDfiIHp0EBdiAHQiCIpxsiBEF/IAUgBSAGSRsiBSAEIAVLGxCuB0EBcUUNAyACQQhqIAAQ1ycgAkEkaiACKAIIIAIoAgwgARCtECACQSRqIQQMAgtBo6KZAUEsQbijmQEQqh4ACyACIAAQ1ycgAkIANwMwIAJBADYANyACIAIoAgQiBEHAAXI6ADsgAkEwaiACKAIAIAQQ3woaIAJBMGohBAsCQCAALQALQf4BRw0AIAAoAgAgACgCCBCWDwsgACAEKQIANwIAIABBCGogBEEIaigCADYCAAsgAkHAAGokAAupAwEIfyMAQSBrIgQkACAEQQRqIAAgASABIAMgASADSRsiBUH0uIIBENkaIAQoAhAhBiAEKAIMIQcgBCgCBCEBIAQoAgghACAEQQRqIAIgAyAFQYS5ggEQ2BogBCgCECEIIAQoAgwhAiAEQQRqIAEgASAAQQJ0aiAEKAIEIAQoAggQ0jNBACEFQQAgBCgCGCIDIAQoAhQiAGsiASABIANLGyEBIAQoAgwgAEECdCIDaiEAIAQoAgQgA2ohAwJAA0AgAUUNASADIAMoAgAiCSAAKAIAIgprIgsgBUH/AXEiBWs2AgAgCSAKSSALIAVJciEFIAFBf2ohASAAQQRqIQAgA0EEaiEDDAALCwJAAkACQCAFQf8BcUUNACAGQQJ0IQMDQCADRQ0CIAcgBygCACIBQX9qNgIAIANBfGohAyAHQQRqIQcgAUUNAAsLIAhBAnQhAwNAIANFDQIgA0F8aiEDIAIoAgAhASACQQRqIQIgAUUNAAsLIARBADYCFCAEQQE2AgggBEHIuYIBNgIEIARCBDcCDCAEQQRqQdC5ggEQrS4ACyAEQSBqJAAL3QMBBX8jAEHQAGsiAyQAIAMgARCKMCADKAIEIQQCQAJAAkACQCADKAIAIgVBKkcNACACKAIIIgZFDQEgAiACLwEQQQFqIgU7ARAgBUH//wNxIAVGDQIgA0IANwIIIANCgICAgMAANwIAIANBADsBECADQcQAaiADIAIoAgwQ8QogAigCBCIFIAYQ1i0gAigCACAFEJY6IAJBCGogA0HEAGpBCGooAgA2AgAgAiADKQJENwIADAILIABBCGogA0EIakE4EN8KGiAAIAQ2AgQgACAFNgIADAILIANCADcCCCADQoCAgIDAADcCACADQQA7ARAgA0HEAGogAyACKAIMEPEKIAIoAgQiBUEAENYtIAIoAgAgBRCWOiACQQhqIANBxABqQQhqKAIANgIAIAIgAykCRDcCAAsgAigCHCEGIAJBADYCHCACKAIYIQcCQCAGRQ0AIAchBQNAIAUoAgAgBUEEaigCAEEEQQgQyTMgBUEQaiEFIAZBf2oiBg0ACwsCQCACKAIUDQAgAkEUahDRJiACKAIYIQcLIAdBADoADCAHQQA2AgggB0KAgICAwAA3AgAgACAENgIMIAAgAjYCCCAAIAE2AgQgAEEqNgIAIAJBATYCHAsgA0HQAGokAAutAwEHfyMAQRBrIgEkAEEAIQICQCAAKAIEIgMgACgCCCIERg0AAkAgACgCACIFIARqIgYsAAAiB0F/Sg0AIAMgBGshBAJAAkAgB0FgSQ0AIAdBcEkNASAEQQRJDQMMAgsgBEECTw0BDAILIARBA0kNASAHQWJHDQAgBkEBai0AAEGAAUcNAAJAAkACQCAGQQJqLQAAQdh+ag4CAQADCyAAQQE6AAwMAQsgAEEBOgAMC0EDIQIMAQsgASAGNgIIIAEgBSADajYCDAJAIAFBCGoQhBEiBEF3aiIDQRdLDQBBASADdEGfgIAEcUUNAEEBIQIMAQsCQAJAIARB2L9/akECSQ0AIARB//0DRg0BIARBgAFJDQICQAJAAkAgBEEIdiIARQ0AIABBMEYNAgJAIABBIEYNACAAQRZHDQYgBEGALUYNBQwGCyAEQf8BcUHY1KEBai0AAEECcQ0BDAULIARB/wFxQdjUoQFqLQAAQQFxRQ0ECyAEQYAQTw0CQQIhAgwDCyAEQYDgAEcNAgwBCyAAQQE6AAwLQQNBBCAEQYCABEkbIQILIAFBEGokACACC4cEAQJ/AkACQAJAAkACQAJAAkAgACgCACICQXtqIgNBBCADQQZJGw4GAAECAwQFAAsgAEIANwMQDwsCQAJAAkACQAJAAkAgACgCCA4FAAECAwQACyAAQgA3AxgMBAsgAEIANwMYDAMLIABCADcDEAwCCyAAQgA3AxAgACgCDCABEIwCDAELIABCADcDEAsgACgCKCABEIwCDwsgAEIANwMYIABCADcDCCAAKAIoIAEQjAIPCyAAQgA3A0ACQAJAAkACQCAAKAIIDgUAAAIBAgALIABCADcDGAwCCyAAQgA3AxAgACgCDCABEIwCDAELIABCADcDEAsgAEEoaiEDAkAgACgCSCIARQ0AIAAgARCROAsgAygCAEGAgICAeEYNAiADIAEQ9CcPCyAAQgA3A2AgAEEgaiEDAkACQAJAAkAgAg4FAAACAQIACyAAQgA3AxAMAgsgAEIANwMIIAAoAgQgARCMAgwBCyAAQgA3AwgLAkAgAygCAEEHRg0AIAMgARCsCQsgACgCaCABEKwJIAAoAkhBgICAgHhGDQEgAEHIAGogARD0Jw8LAkACQAJAAkACQAJAIAAoAggOBQABAgMEAAsgAEIANwMYDAQLIABCADcDGAwDCyAAQgA3AxAMAgsgAEIANwMQIAAoAgwgARCMAgwBCyAAQgA3AxALIAAoAiggARDRDQsLxwMBBH8CQAJAAkACQAJAAkACQAJAIAAoAgAOBwABAgMFBgcACyAAQQhqIAEQ2zIPCyAAQgA3AxACQCAAKAIMIgJFDQAgACgCCCEDIAJBKGwhAgNAAkAgAygCAEEHRg0AIAMgARCsCQsgA0EoaiEDIAJBWGoiAg0ACwsgACgCGCIDRQ0CIAMgARCROA8LIABCADcDCCAAQRBqQgA3AwAgACgCBCABEKwJIAAoAhgiA0UNASADIAEQkTgPCyAAQgA3AxACQCAAKAIMIgNFDQAgACgCCCEEIANBOGwhBUEAIQIDQAJAAkACQAJAIAQgAmoiAygCAA4DAAECAAsgA0EIaiABEPomIANBKGooAgAgARCsCQwCCyADQQhqQgA3AgAgA0EQaiABENsyIANBMGooAgAiA0UNASADIAEQjAIMAQsgA0EQakIANwIAIANBCGpCADcCACADQQRqKAIAIAEQrAkgA0EYaigCACIDRQ0AIAMgARCROAsgBSACQThqIgJHDQALCyAAKAIYIgNFDQAgAyABEJE4Cw8LIABCADcCDCAAKAIEIAEQrAkgACgCCCABEIwCDwsgAEIANwIEDwsgACgCBCABEIwCC7oDAQJ/AkACQAJAAkACQAJAIAAoAgAOCAQFAAEFBQIDBAsgACgCBCIAKAIIIgJFDQQgACgCBCIAIAJBOGxqIQMDQCAAIAEQ2g4CQCAAKAIwIgJFDQAgASACENwBCyAAQThqIgAgA0cNAAwFCwsgACgCBCIAKAIIIgJFDQMgACgCBCIAIAJBOGxqIQMDQCAAIAEQ2g4CQCAAKAIwIgJFDQAgASACENwBCyAAQThqIgAgA0cNAAwECwsgACgCBCIAKAIoIgJFDQIgAkEwbCECIAAoAiRBKGohAANAAkAgACgCACIDRQ0AIAEgAxDcAQsgAEEwaiEAIAJBUGoiAg0ADAMLCyAAKAIEIgAtAEUiAkEDRg0BAkAgAkECRw0AIAAoAigiAkUNAiAAKAIkIQAgAkE4bCECA0AgACABELIPIABBOGohACACQUhqIgINAAwDCwsCQCAAKAJAIgAtACVBAkYNAANAIAAoAiAiAC0AJUECRw0ACwsgAEEIaigCACICRQ0BIABBBGooAgAhACACQThsIQIDQCAAIAEQsg8gAEE4aiEAIAJBSGoiAg0ADAILCyAAKAIgIAEQmwkLC+wDAgR/A34jAEEgayICJAACQAJAAkACQAJAAkAgAUERSQ0AIAFBcGohA0LTkYytiNHanyQhBkLE5sGb4MXijBMhB0EAIQQDQCAHIQgCQCAEIANJDQAgAkEQaiADIAAgAUGEuqEBEP8tIAIoAhQiBEEHTQ0DIARBD00NBCACKAIQIgQpAAggCIUhByAEKQAAIAaFIQYMBgsgACAEaiIFQQhqKQAAQtDj/MyihM6EpH+FIgdC/////w+DIAUpAAAgBoUiBkIgiH5CIIkgB0IgiCAGQv////8Pg36FIQcgBEEQaiEEIAghBgwACwsgAUEHSw0CIAA1AANCxObBm+DF4owThSEHIAA1AABC05GMrYjR2p8khSEGDAMLQQggBEGUuqEBEKMbAAtBECAEQaS6oQEQoxsACyAAKQAAIQYgAkEIaiABQXhqIAAgAUHUuqEBEP8tIAIoAgxBCEcNASAGQtORjK2I0dqfJIUhBiACKAIIKQAAQsTmwZvgxeKME4UhBwsgAkEgaiQAIAZC/////w+DIAdCIIh+IAGthSAGQiCIIAdC/////w+DfkIgiYUiBqdB3cvdnnlsIAZCIIinakHJwfj9AGxBo+65nARqQQ93rQ8LQZDDoQFBKyACQR9qQeyDggFB5LqhARCxGAALrwMBB38jAEEgayIFJABBACEGQQAhBwJAIAJFDQACQCACQQJ0IgggAWpBfGooAgBFDQAgAiEHDAELIAFBfGohCSACIQoDQCAKIQcCQCAIDQBBACEHDAILIAdBf2ohCiAJIAhqIQsgCEF8aiEIIAsoAgBFDQALIAcgAk0NACAHIAJByI6CARCjGwALAkAgBEUNAAJAIARBAnQiCCADakF8aigCAEUNACAEIQYMAQsgA0F8aiECIAQhCgNAIAohCyAIRQ0BIAtBf2ohCiACIAhqIQkgCEF8aiEIIAkoAgBFDQALAkAgCyAESw0AIAshBgwBCyALIARB2I6CARCjGwALAkACQAJAAkAgASAHIAMgBhD3KUH/AXEOAgECAAsgBUEUaiADIAYQwBsgBSgCGCAFKAIcIAEgBxCoCSAAQQRqIAVBFGoQvCMgAEEAOgAADAILIABBAToAACAAQQApApisoQE3AgQgAEEMakEAKAKgrKEBNgIADAELIAVBCGogASAHEMAbIAUoAgwgBSgCECADIAYQqAkgAEEEaiAFQQhqELwjIABBAjoAAAsgBUEgaiQAC7wDAQl/IwBB4ABrIgEkAAJAIAAoAgAiAi0AZEEBRw0AIAJB0ABqIQMgAUEgakEMaiEEIAFByABqQQxqIQUgACgCCCEGA0AgAygCACAGRg0BAkACQCAAEMMUEMwTDQAgABDDFEEjRg0BDAMLIAAQ7Q0aDAELIAFBCGpBCGoiByADQQhqIggoAgA2AgAgASADKQIANwMIIAFBADYCHCABQoCAgIAQNwIUIAAQ7Q0aA0ACQAJAIAMoAgAgBkYNACAAEMMUIQkgABDtDRogCUEKRw0BCyAFIAMpAgA3AgAgAUHIAGpBCGoiCSAHKAIANgIAIAVBCGogCCgCADYCACAEIAEpAwg3AgAgAUEgakEIaiABQRRqQQhqKAIANgIAIARBCGogCSkDADcCACAEQRBqIAFByABqQRBqKQMANwIAIAEgASkCFDcDICABIAJByJCEARCpLiABKAIEIQcCQCABKAIAIgkoAggiCCAJKAIARw0AIAkQ1iYLIAkoAgQgCEEkbGogAUEgakEkEN8KGiAJIAhBAWo2AgggByAHKAIAQQFqNgIADAILIAFBFGogCRC9FQwACwsLIAFB4ABqJAALqAMBCn8jAEEgayICJABBACEDAkACQAJAIAEtACVFDQAMAQsgASgCBCEEAkACQCABKAIQIgUgASgCCCIGSw0AIAFBFGoiByABLQAYIghqQX9qIQkgASgCDCEKIAhBBUkhCwJAA0AgBSAKSQ0CIAJBEGogCS0AACAEIApqIAUgCmsQkhYgAigCEEEBRw0BIAEgCiACKAIUakEBaiIKNgIMIAogCEkNACAKIAZLDQAgC0UNBSAEIAogCGtqIAggByAIEKAxRQ0ACyABKAIcIQUgASAKNgIcIAogBWshCgwCCyABIAU2AgwLIAFBAToAJQJAAkAgAS0AJEEBRw0AIAEoAiAhCCABKAIcIQUMAQsgASgCICIIIAEoAhwiBUYNAgsgCCAFayEKCyACQQo2AhwgAkEIaiACQRxqIAQgBWoiAyAKEM4vIAIoAggiAUUNACACKAIMIQogAkENNgIcIAIgAkEcaiABIAoQzi8gAigCBCAKIAIoAgAiBRshCiAFIAEgBRshAwsgACAKNgIEIAAgAzYCACACQSBqJAAPCyAIQQRB7LChARCjGwALvQMCBX8BfgJAAkAgAEKAgICAEFoNACABIQIgACEHDAELIAFBeGoiAiAAQoDC1y+AIgdCgL6o0A9+IAB8pyIDQZDOAG4iBEGQzgBwIgVB//8DcUHkAG4iBkEBdEGY5ZgBai8AADsAACABQXxqIAMgBEGQzgBsayIDQf//A3FB5ABuIgRBAXRBmOWYAWovAAA7AAAgAUF6aiAFIAZB5ABsa0H//wNxQQF0QZjlmAFqLwAAOwAAIAFBfmogAyAEQeQAbGtB//8DcUEBdEGY5ZgBai8AADsAAAsgAkF8aiECIAenIQECQAJAA0ACQCABQY/OAEsNACACQQRqIQIgAUHjAEsNAiABIQMMAwsgAiABQZDOAG4iA0HwsX9sIAFqIgFB5ABuIgRBAXRBmOWYAWovAAA7AAAgAkECaiABIARB5ABsa0EBdEGY5ZgBai8AADsAACACQXxqIQIgAyEBDAALCyACQX5qIgIgASABQf//A3FB5ABuIgNB5ABsa0H//wNxQQF0QZjlmAFqLwAAOwAACwJAIANBCUsNACACQX9qIANBMHI6AAAPCyACQX5qIANBAXRBmOWYAWovAAA7AAAL3gMBBn8jAEHQAGsiAiQAIAEoAgQhAyABKAIMIQQgASgCFCEFAkACQAJAAkADQCADIARGDQMgAkEQaiADQSgQ3woaIAEgA0EoaiIDNgIEAkAgAigCECIGQQdGDQACQAJAAkACQAJAAkACQCAGDgcAAgECAwQFAAsgAigCICEDAkAgAigCMCIEDQAgAigCJCEEDAYLIAMgBCgCCCIGIAMgBksbIQQgAyAGIAMgBkkbIQMMBQsgAigCHCEEIAIoAhghAwwECyACKAIkIQQgAigCICEDDAMLIAIoAiAhBCACKAIcIQMMAgsgAigCGCEEIAIoAhQhAwwBCyACQQhqIAIoAhQQggUgAigCDCEEIAIoAgghAwsgAkG/gICAeDYCOCADIAQgAkE4ahD+IiEGAkAgASgCECIBELQWIgNFDQAgAygCAEEkRw0AIAEgASkDGDcDUCABKAIAIQMgAUElNgIAIANBJEcNAyABIAEoAgQQ4xMLIAJBEGoQ+jEMAwsgAigCGCEGAkAgAigCFCIHQX5qDgIDAQALCyAAIAIpAhw3AgggACAGNgIEIAAgBzYCAAwDC0GUzqEBQShB2OGZARDTJwALIAUQ3DcgBSAGNgIACyAAQQI2AgALIAJB0ABqJAALzAMAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOEgEREQIDBAUGBwgJCgsMDQ4PEAALIABBBGoQyQUPCyAAQQRqEL43DA8LIABBBGoQyQUgAEEIahD1NQ8LIABBDGoQ/jcPCyAAKQMQENIfIABBKGoQ9TUPCyAAKQMQIAAtACQQ1zQPCyAAKQMQIAAtACQQ1zQPCyAAQQRqEMkFIABBCGoQ9TUgACgCFEUNCSAAQRRqEPU1DwsgAEEQahDJBSAAQQRqEI8qIAAoAgQgACgCCBCkOg8LIABBBGoQyQUPCyAAKAIEIgBByABqEL43AkAgACgCAEEIRg0AIAAQ9DUgAEEoahC+NwsgAEHgAGoQ1DUgAEGAAUEIEO4cDwsgAEEEahDJBSAAQQhqEPU1DwsgAEEEahDJBSAAQQhqEPU1DwsCQAJAAkAgACgCBA4DAAECAQsgAEEIahD2NQwBCyAAQQhqEMkFCyAAQRhqEP43IABBHGoQ/jcgAEEMahD1NQ8LIABBBGoQky8gAEEMahDJBSAAQRBqEPU1DwsgAEEEahCTLyAAQQxqEMkFIABBEGoQ9TUPCyAAQQhqELcODwsLuAMBAn8CQAJAAkACQAJAAkACQCAAKAIADggFAAECBgYDBAULIAEgAEEIahC2CQ8LIAEgACgCBBDMIg8LIAAoAgQiACgCCCICRQ0DIAAoAgQhACACQThsIQIDQCABIAAQph8gAEE4aiEAIAJBSGoiAg0ADAQLCyABIAAoAgQiABCpKSAAKAIoIgJFDQIgACgCJCIAIAJBMGxqIQMDQAJAIAAoAgANACABIABBCGoQqSkLAkAgAEEoaigCACICRQ0AIAEgAhCmKgsgAEEwaiIAIANHDQAMAwsLAkAgACgCBCIAKAIADQAgASAAQQhqEKkpCyAALQBFIgJBA0YNAQJAIAJBAkcNACAAKAIoIgJFDQIgACgCJCEAIAJBOGwhAgNAIAAgARCUDCAAQThqIQAgAkFIaiICDQAMAwsLIAEgAEEoahCpKQJAIAAoAkAiAC0AJUECRg0AA0AgASAAQQhqEKkpIAAoAiAiAC0AJUECRw0ACwsgAEEIaigCACICRQ0BIABBBGooAgAhACACQThsIQIDQCAAIAEQlAwgAEE4aiEAIAJBSGoiAg0ADAILCyABIABBCGoQuRsLC8MDAQZ/IwBBoAFrIgIkACABKAIYIgMoAghBBnQhBCADKAIEIQUCQANAIAQiBkUNASAFKAIAIQcgBkFAaiEEIAVBwABqIQUgB0F+ag4DAQABAAsLIABBLGohBAJAAkACQCAALQB9DQAgAEEAOgB9DAELIABBADoAfUEBIQUgAC0AfA0BCyACQThqIAEQpicgBCACKQM4IAIoAkBBARDWAkEAIQUgBkUNACACQShqIAEQpicgBCACKQMoIAIoAjAQuQwLAkAgAC0AkAENACABKAIQRQ0AIAJBGGogARCmJyAAQYABaiACKQMYIAIoAiAQ2gcLIAJBzABqIAQQowwCQCAGRSAFcg0AIAJBCGogARCmJyAEIAIpAwggAigCEBC5DAsCQCADKAIUIgZFDQAgAygCECEFIAZBDGwhBgNAIAAgBSgCABCmKiAFQQxqIQUgBkF0aiIGDQALCwJAIAMoAggiBkUNACADKAIEIQUgBkEGdCEGA0AgACAFEKsXIAVBwABqIQUgBkFAaiIGDQALCwJAIAMoAhhBgICAgHhGDQAgA0EYaiAAEPUnCyAEIAJBzABqEPMDIAAgARCgFCACQaABaiQAC6IDAQl/IwBBMGsiAyQAIANBADYCECADQoCAgIAQNwIIIANBAToALCADQd8ANgIoIAMgAjYCJCADIAI2AhwgAyABNgIYIANB3wA2AhQgA0EoaiEEQQAhBUEAIQYCQANAIAEgBWohBwJAAkACQAJAAkAgAiAFayIIQQdLDQAgAiAFRg0GQQAhCQNAIAcgCWotAABB3wBGDQIgCCAJQQFqIglHDQAMBwsLIANB3wAgByAIELcLIAMoAgAiCUEBRw0BIAMoAgQhCQsgAyAFIAlqIglBAWoiBTYCICAFRQ0CIAUgAksNAiABIAlqQQEgBEEBEMIxRQ0CIAUhCiAJIQsMAQsgAiEFIAlBAXFFDQMLIANBCGogCyAGayIJEKMwIAMoAgwgAygCECIHaiABIAZqIAkQ3woaIAMgByAJajYCECADQQhqQQAQozAgCiEGDAELIAUgAk0NAAsLIANBCGogAiAGayIJEKMwIAMoAgwgA0EIakEIaigCACIHaiABIAZqIAkQ3woaIABBCGogByAJajYCACAAIAMpAgg3AgAgA0EwaiQAC7kDAgZ/BH4CQAJAIAAoAgxFDQAgASkDACIIIAEoAggiAhCfLiEJIAAoAgAiA0FwaiEEIAlCGYhCgYKEiJCgwIABfiEKIAAoAgQiBSAJp3EhBkEAIQcCQANAAkAgAyAGaikAACILIAqFIglCf4UgCUL//fv379+//358g0KAgYKEiJCgwIB/gyIJUA0AA0AgASAEIAl6p0EDdiAGaiAFcUEEdGsQ6zQNAyAJQn98IAmDIglQRQ0ACwsgCyALQgGGg0KAgYKEiJCgwIB/g1BFDQIgBiAHQQhqIgdqIAVxIQYMAAsLQQEhByAAKAIcRQ0BIAggAhCfLiEJIAAoAhAiA0FwaiEEIAlCGYhCgYKEiJCgwIABfiEKIAAoAhQiBSAJp3EhBkEAIQADQAJAIAMgBmopAAAiCyAKhSIJQn+FIAlC//379+/fv/9+fINCgIGChIiQoMCAf4MiCVANAANAIAEgBCAJeqdBA3YgBmogBXFBBHRrEOs0DQMgCUJ/fCAJgyIJUEUNAAsLIAsgC0IBhoNCgIGChIiQoMCAf4NQRQ0CIAYgAEEIaiIAaiAFcSEGDAALC0EAIQcLIAcLpgMBCH8jAEEgayIEJAACQAJAAkACQAJAIAINACAEQRRqIAEQxiYgA0H/AXENASAAIARBFGoQqg0MBAsgBEEIaiABKAIEIgUgASABKAIAIgZBgICAgHhGIgcbIggoAghBAmoiCUF/IAkbEKMiIARBADYCHCAEIAQpAwg3AhQgBEEUakEBEOwYIARBFGogCCgCBCIJIAkgCCgCCEECdGoQ9ikgA0H/AXFFDQELAkAgBCgCHCIKIAJJDQAgCkECdCEFIAJBAnQhCCADQR9xIQdBACEGQQAgA2tBH3EhCyAEKAIYIQkDQAJAIAUgCEcNAAJAIAZFDQACQCAKIAQoAhRHDQAgBEEUahDDJiAEKAIYIQkLIAkgCkECdGogBjYCACAEIApBAWo2AhwLIAAgBEEUahCqDSACRQ0FIAEoAgAiBkGAgICAeEYNBSABKAIEIQUMBAsgCSAIaiIDIAMoAgAiAyAHdCAGcjYCACAIQQRqIQggAyALdiEGDAALCyACQQBBvLWCARCiGwALIAAgBEEUahCqDSAHDQELIAYgBRD7OQsgBEEgaiQAC9wDAQJ/IwBBMGsiAiQAAkACQCAAKAIAQYCAgIB4Rg0AIAIgADYCACACQQRqQf4AQc8AEKwbIAJBADYCKEEBIQAgAkEBNgIcIAJBiPKCATYCGCACQgQ3AiACQCABKAIUIgMgASgCGCIBIAJBGGoQijUNACACQQI2AhwgAkGkoZcBNgIYIAJCATcCJCACQT82AhQgAiACQRBqNgIgIAIgAkEEajYCECADIAEgAkEYahCKNQ0AIAJBAjYCHCACQaShlwE2AhggAkIBNwIkIAJB8QA2AhQgAiACQRBqNgIgIAIgAjYCECADIAEgAkEYahCKNQ0AIAJBAjYCHCACQaShlwE2AhggAkIBNwIkIAJBPzYCFCACIAJBEGo2AiAgAiACQQRqNgIQIAMgASACQRhqEIo1DQAgAkEANgIoIAJBATYCHCACQYDVmQE2AhggAkIENwIgIAMgASACQRhqEIo1DQAgAigCBCACKAIIEPY5QQAhAAwCCyACKAIEIAIoAggQ9jkMAQsgAiAAKAIENgIEIAIgASgCFEGQ8oIBQQ4gASgCGCgCDBELADoAICACIAE2AhwgAkEAOgAhIAJBADYCGCACQRhqIAJBBGpBERDHDBCLFiEACyACQTBqJAAgAAuYAwIEfwJ+IwBB0ABrIgMkACADIAEgAkGdrJcBQQEQ9gIDQCADQcQAaiADELEEIAMoAkQiBEUNAAsCQAJAAkAgBEF/ag4CAAEACyADKAJIIQQMAQsgAiEECwJAAkAgAiAEa0EQTQ0AQgAhBwwBC0IBIQdCACEIIAIgBEYNACABIAJqIQUgASAEaiEEQgAhCANAAkACQCAELAAAIgJBf0wNACAEQQFqIQQgAkH/AXEhAgwBCyAELQABQT9xIQEgAkEfcSEGAkAgAkFfSw0AIAZBBnQgAXIhAiAEQQJqIQQMAQsgAUEGdCAELQACQT9xciEBAkAgAkFwTw0AIAEgBkEMdHIhAiAEQQNqIQQMAQsgAUEGdCAELQADQT9xciAGQRJ0QYCA8ABxciECIARBBGohBAsCQAJAIAJBUGoiAUEKSQ0AQX8gAkEgciICQal/aiIBIAEgAkGff2pJGyIBQRBPDQELIAhCBIYgAa2EIQggBCAFRg0CDAELC0GgrJcBEP05AAsgACAINwMIIAAgBzcDACADQdAAaiQAC9MDAQd/IAAoAgAiAUEEaigCACECAkAgASgCCCIDRQ0AQQAhBANAAkACQAJAAkACQAJAAkAgAiAEQThsaiIFKAIADgYBAgMEBQYACyAFKAIEIgAQqgEgAEHAAEEIEO4cDAULIAVBCGoQ+xcMBAsgBUEIaiIGKAIAIQACQCAFKAIMIgdFDQADQAJAIAAoAgBBB0YNACAAEIcJCyAAQShqIQAgB0F/aiIHDQALIAYoAgAhAAsgBSgCBCAAEOEzIAUoAhgiAEUNAyAAKAIAIgcQjAMgB0HgAEEIEO4cIABBDEEEEO4cDAMLIAUoAgQiABCHCSAAQShBCBDuHCAFKAIYIgBFDQIgACgCACIHEIwDIAdB4ABBCBDuHCAAQQxBBBDuHAwCCyAFQQRqELcTIAUoAgQgBUEIaigCABDjMyAFKAIYIgBFDQEgACgCACIHEIwDIAdB4ABBCBDuHCAAQQxBBBDuHAwBCyAFKAIEIgAQhwkgAEEoQQgQ7hwgBSgCCCIAEKoBIABBwABBCBDuHAsCQCAFKAIwIgBFDQAgABCqASAAQcAAQQgQ7hwLIARBAWoiBCADRw0ACyABQQRqKAIAIQILIAEoAgAgAhDjMyABQRxBBBDuHAvAAwEFfyMAQcAAayIGJAAgASABKALMAiIHQYCACHIQ4Q8gBkEIaiABIAMgBEEAEHkgBigCCCEIAkACQCAGLQAcIglBA0YNACAGQTBqQQhqIAZBFGopAgA3AwAgBkEuaiAGQR9qLQAAOgAAIAYgBikCDDcDMCAGIAYvAB07ASwgBigCICEKIAEgBxCgPgJAAkAgBQ0AIAooAhRB2ABsIQMgCigCECEEA0AgA0UNAgJAAkACQAJAIAQoAgAiB0F8akEAIAdBe2pBCEkbQX9qDgMAAwEDCyAELQA1DQEMAgsgBC0ARUEBRw0BCyAEKAIsIQcgBCgCKCEFIAZBoIGAgHg2AgggASAFIAcgBkEIahCIKgsgBEHYAGohBCADQah/aiEDDAALCyAKQQE6ADwLIAAgCDYCCCAAQQA2AgAgACAGKQMwNwIMIAAgCToAHCAAIAYvASw7AB0gACAKNgIgIABBFGogBkE4aikDADcCACAAQR9qIAZBLmotAAA6AAAgACACIAEoAlQiBCACIARLGzYCLCAAIAIgBCACIARJGzYCKAwBCyAAQQM2AgAgACAINgIEIAEgBxCgPgsgBkHAAGokAAvTAwEHfyAAKAIAIgFBBGooAgAhAgJAIAEoAggiA0UNAEEAIQQDQAJAAkACQAJAAkACQAJAIAIgBEE4bGoiBSgCAA4GAQIDBAUGAAsgBSgCBCIAEKgBIABBwABBCBDuHAwFCyAFQQhqEJMYDAQLIAVBCGoiBigCACEAAkAgBSgCDCIHRQ0AA0ACQCAAKAIAQQdGDQAgABCICQsgAEEoaiEAIAdBf2oiBw0ACyAGKAIAIQALIAUoAgQgABDhMyAFKAIYIgBFDQMgACgCACIHEI0DIAdB4ABBCBDuHCAAQQxBBBDuHAwDCyAFKAIEIgAQiAkgAEEoQQgQ7hwgBSgCGCIARQ0CIAAoAgAiBxCNAyAHQeAAQQgQ7hwgAEEMQQQQ7hwMAgsgBUEEahCzEiAFKAIEIAVBCGooAgAQ4zMgBSgCGCIARQ0BIAAoAgAiBxCNAyAHQeAAQQgQ7hwgAEEMQQQQ7hwMAQsgBSgCBCIAEIgJIABBKEEIEO4cIAUoAggiABCoASAAQcAAQQgQ7hwLAkAgBSgCMCIARQ0AIAAQqAEgAEHAAEEIEO4cCyAEQQFqIgQgA0cNAAsgAUEEaigCACECCyABKAIAIAIQ4zMgAUEcQQQQ7hwL0wMBB38gACgCACIBQQRqKAIAIQICQCABKAIIIgNFDQBBACEEA0ACQAJAAkACQAJAAkACQCACIARBOGxqIgUoAgAOBgECAwQFBgALIAUoAgQiABCrASAAQcAAQQgQ7hwMBQsgBUEIahCgGAwECyAFQQhqIgYoAgAhAAJAIAUoAgwiB0UNAANAAkAgACgCAEEHRg0AIAAQiQkLIABBKGohACAHQX9qIgcNAAsgBigCACEACyAFKAIEIAAQ4TMgBSgCGCIARQ0DIAAoAgAiBxDbAiAHQeAAQQgQ7hwgAEEMQQQQ7hwMAwsgBSgCBCIAEIkJIABBKEEIEO4cIAUoAhgiAEUNAiAAKAIAIgcQ2wIgB0HgAEEIEO4cIABBDEEEEO4cDAILIAVBBGoQwBMgBSgCBCAFQQhqKAIAEOMzIAUoAhgiAEUNASAAKAIAIgcQ2wIgB0HgAEEIEO4cIABBDEEEEO4cDAELIAUoAgQiABCJCSAAQShBCBDuHCAFKAIIIgAQqwEgAEHAAEEIEO4cCwJAIAUoAjAiAEUNACAAEKsBIABBwABBCBDuHAsgBEEBaiIEIANHDQALIAFBBGooAgAhAgsgASgCACACEOMzIAFBHEEEEO4cC9MDAQd/IAAoAgAiAUEEaigCACECAkAgASgCCCIDRQ0AQQAhBANAAkACQAJAAkACQAJAAkAgAiAEQThsaiIFKAIADgYBAgMEBQYACyAFKAIEIgAQrwEgAEHAAEEIEO4cDAULIAVBCGoQqBgMBAsgBUEIaiIGKAIAIQACQCAFKAIMIgdFDQADQAJAIAAoAgBBB0YNACAAEIoJCyAAQShqIQAgB0F/aiIHDQALIAYoAgAhAAsgBSgCBCAAEOEzIAUoAhgiAEUNAyAAKAIAIgcQ/AIgB0HgAEEIEO4cIABBDEEEEO4cDAMLIAUoAgQiABCKCSAAQShBCBDuHCAFKAIYIgBFDQIgACgCACIHEPwCIAdB4ABBCBDuHCAAQQxBBBDuHAwCCyAFQQRqEMITIAUoAgQgBUEIaigCABDjMyAFKAIYIgBFDQEgACgCACIHEPwCIAdB4ABBCBDuHCAAQQxBBBDuHAwBCyAFKAIEIgAQigkgAEEoQQgQ7hwgBSgCCCIAEK8BIABBwABBCBDuHAsCQCAFKAIwIgBFDQAgABCvASAAQcAAQQgQ7hwLIARBAWoiBCADRw0ACyABQQRqKAIAIQILIAEoAgAgAhDjMyABQRxBBBDuHAv+AwEGfyMAQTBrIgIkACABLQAEIQMgAkEcakGAAhCCHiACQRxqQRBqQQA7AQAgAkEANgIoIAJBCGpBEGoiBEEAOwEAIAJBCGpBCGoiBSACQRxqQQhqKQIANwMAIAIgAikCHDcDCCACLQAvIQYgAS0ABiEHIABB7ANqELcZIABB/AVqQgA3AgAgAEIANwL0BSAAQgA3AwAgAEEIakIANwMAIABBEGpCADcDACAAQRhqQgA3AwAgAEGAgICAeDYCICAAQSRqQQBBsgIQ7xEaIABBADoAhQMgACADQQN0QZjrogFqKQMANwD9AiAAQQA6APwCIABBADYC+AIgAEKAgICAcDcD8AIgAEKAgICAwAA3A+gCIABCBDcD4AIgACADQQJ0QYjrogFqKAIANgLcAiAAQQA2AtgCIABBAToA1wIgACAHOgDWAiAAIAIpAwg3A4gDIABBkANqIAUpAwA3AwAgAEGYA2ogBC8BADsBACAAIAM6AIQGIABC/////w83AuwFIABCADcC3AMgAEKAgICAwAA3AtQDIABCBDcCzAMgAEIANwLEAyAAQoCAgIDAADcCvAMgAEIBNwK0AyAAQgA3AqwDIABCgICAgMAANwKkAyAAIAE2AqADIABBAToAnQMgACAHOgCcAyAAIAY6AJsDIAAgBzoAmgMgAkEwaiQAC7EDAQd/QQAhBQJAAkAgBEEBSA0AIAMgBGohBgJAAkAgBEEDSw0AIAFB/wFxIQEgAyEEA0AgBCAGTw0DIAQtAAAiByABRg0CIAcgAkH/AXFGDQIgBEEBaiEEDAALCyADIQQCQEGAgoQIIAMoAAAiCCABQf8BcUGBgoQIbCIJcyIHayAHckGAgYKEeHFBgIGChHhHDQAgAyEEQYCChAggCCACQf8BcUGBgoQIbCIKcyIHayAHckGAgYKEeHFBgIGChHhHDQAgBkF8aiELIANBfHFBBGohBANAAkACQCAEIAtLDQBBgIKECCAEKAIAIgggCXMiB2sgB3JBgIGChHhxQYCBgoR4Rw0AQYCChAggCCAKcyIHayAHckGAgYKEeHFBgIGChHhGDQELIAFB/wFxIQEDQCAEIAZPDQUgBC0AACIHIAFGDQQgByACQf8BcUYNBCAEQQFqIQQMAAsLIARBBGohBAwACwsDQCAEIAZPDQIgBC0AACIHIAFB/wFxRg0BIAcgAkH/AXFGDQEgBEEBaiEEDAALCyAEIANrIQRBASEFDAELCyAAIAQ2AgQgACAFNgIAC7MDAQl/IwBB4ABrIgEkAAJAAkACQAJAIAAoAjAiAg0AIAAQ5w1BACEADAELIAAoAiwhAyAAKAIoIQQgASAAEMQHIAEoAgBBDEYNASABQTBqQShqIgUgAUEoaikDADcDACABQTBqQSBqIgYgAUEgaikDADcDACABQTBqQRhqIgcgAUEYaikDADcDACABQTBqQRBqIgggAUEQaikDADcDACABQTBqQQhqIgkgAUEIaikDADcDACABIAEpAwA3AzBBAC0AwP+jARpBwAAQjAEiAEUNAiAAIAEpAzA3AwAgAEEAOgA8IAAgAjYCOCAAIAM2AjQgACAENgIwIABBKGogBSkDADcDACAAQSBqIAYpAwA3AwAgAEEYaiAHKQMANwMAIABBEGogCCkDADcDACAAQQhqIAkpAwA3AwALIAFB4ABqJAAgAA8LIAFBMGpBIGogAUEoaikDADcDACABQTBqQRhqIAFBIGopAwA3AwAgAUEwakEQaiABQRhqKQMANwMAIAFBOGogAUEQaikDADcDACABIAEpAwg3AzBBkMOhAUErIAFBMGpBkMGgAUGgwaABELEYCwALsQMCCn8CfiMAQfAAayIDJABBASEEAkAgACgCCCIFIAFGDQAgACgCBCIGIAFB2ABsaiEHIAYgBUHYAGxqIQEgAigCBCEFIANBKGpBKGohBiADQdwAaiEIIAIoAgwhCSADQeUAaiIKQQRqIQsCQANAIAUgCUYNASACIAVBEGoiDDYCBCAFKQMAIQ0Q6T8hDiAIQgA3AgAgCEEIakEAOgAAIApBADYAACALQQA7AAAgA0EANgJQIANCBDcCVCADQRhqQQhqIgUgBkEIaigCADYCACADQgA3AzggAyAONwMwIANCADcDSCADQQA2AiggA0EDOgBrIAMgBikDADcDGCADQShqEKgPIANBCGpBCGogBSgCACIFNgIAIAMgAykDGCIONwMIIAFCADcCGCABIA03AhAgAUEANgIIIAFBBzYCACABQSBqQgA3AgAgAUEoakIANwIAIAEgDjcCMCABQThqIAU2AgAgAUIANwI8IAFBwwBqQgA3AAAgAUEDOgBLQQEhBCAAIAAoAghBAWo2AgggDCEFIAFB2ABqIgEgB0cNAAwCCwtBACEECyADQfAAaiQAIAQLnAMBCX8jAEEQayICJAACQCABKAIIIgNFDQACQAJAIAEoAgQiBCgCAEUNACADIQUMAQsgAkEIaiAEQQhqEMkTAkAgAigCCCACKAIMQaCOoQFBBBDCMQ0AIAMhBQwBCyACQQBBASADELEqIAIoAgQhBiABIAIoAgAiBTYCCCADIAZrIQcCQAJAAkACQCAGQQZ0IgggBUEGdCIJRg0AIAggCWtBBnYhCCAEIAlqIQkDQCAJQTRqIgooAgAgCUE4aigCABCnLSAJQTBqKAIAIAooAgAQ3DMgCRDpDSAJQcAAaiEJIAhBf2oiCA0ACyADIAZGDQMgBiAFRw0BDAILIAMgBkYNAiAGIAVGDQELIAQgBUEGdGogBCAGQQZ0aiAHQQZ0EPE9GgsgASAFIAdqIgU2AggLIAVFDQELIAQgBUEGdGohCgNAAkAgBCgCOCIIRQ0AIAQoAjQhCSAIQQxsIQgDQCAAIAkoAgAQiAMgCUEMaiEJIAhBdGoiCA0ACwsgBCAAENEYIARBwABqIgkhBCAJIApHDQALCyACQRBqJAALsgMBA38jAEHQAGsiAiQAAkACQCABLQAUQQJHDQAgACABKAIAQRhqEMYJIAAoAgAaDAELIAAoAgBFDQAgAkEIaiAAIAEQogcgAi0ANCIDQQZGDQACQAJAAkACQCADQX1qIgBBASAAQQNJG0H/AXEOAwECAAELQcDRoAFBD0HQ0aABENMnAAsgAi0AHCEEIAIoAgghACACQcgAaiACQRRqKQIANwMAIAJBPmogAkEfai0AADoAACACIAIpAgw3A0AgAiACLwAdOwE8DAELQQAtAMD/owEaAkBBMBCMASIARQ0AIAAgAikDCDcDACAAQShqIAJBCGpBKGopAwA3AwAgAEEgaiACQQhqQSBqKQMANwMAIABBGGogAkEIakEYaikDADcDACAAQRBqIAJBCGpBEGopAwA3AwAgAEEIaiACQQhqQQhqKQMANwMAQQIhBAwBCwALIAEQ4RggASAANgIAIAEgBDoAFCABIAIpA0A3AgQgAUEMaiACQcgAaikDADcCACABIAIvATw7ABUgAUEXaiACQT5qLQAAOgAAIANBBUcNACACQQhqENgWCyACQdAAaiQAC7gDAgZ/A34gASgCACIDQXBqIQQgASgCBCIFIAIoAgAiBkHdy92eeWxBD3ciB3EhAiAHQRl2rUKBgoSIkKDAgAF+IQlBACEIAkADQCADIAJqKQAAIgogCYUiC0J/hSALQv/9+/fv37//fnyDQoCBgoSIkKDAgH+DIQsCQAJAA0AgC1ANASAGIAQgC3qnQQN2IAJqIAVxIgdBBHRrKAIARg0CIAtCf3wgC4MhCwwACwsCQCAKIApCAYaDQoCBgoSIkKDAgH+DUA0AQYCAgIB4IQIMAwsgAiAIQQhqIghqIAVxIQIMAQsLIANBACAHa0EEdGohBEGAASECAkAgAyAHQQR0QQR1IgdqIgYpAAAiCyALQgGGg0KAgYKEiJCgwIB/g3qnQQN2IAMgBSAHQXhqcWoiBSkAACILIAtCAYaDQoCBgoSIkKDAgH+DeadBA3ZqQQdLDQAgASABKAIIQQFqNgIIQf8BIQILIAYgAjoAACAFQQhqIAI6AAAgASABKAIMQX9qNgIMQYCAgIB4IQIgBEF0aigCACIFQYCAgIB4Rg0AIAAgBEF4aikCADcCBCAFIQILIAAgAjYCAAvIAwECfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiAUE0IAFBu4GAgHhIG0H/AXEiAkFUag4JBAEBAQUGAQEHAAsCQCACQeF+ag4HEAEBARESEwALAkAgAkGUf2oOBAsBAQwACwJAIAJBh39qDgINDgALAkAgAkHJfmoOAhQVAAsgAkEdRg0BIAJBJ0YNAiACQcQARg0HIAJB2ABGDQggAkHhAEYNCSACQYIBRg0OCw8LIABBCGoQxx4PCyAAQQhqEMceDwsgACgCBCAAKAIIEPY5DwsgACgCBCAAKAIIEPY5DwsgACgCBCAAKAIIEO4zDwsgASAAKAIEEPY5IAAoAgwgACgCEBD2OQ8LIABBCGoQxx4PCyAAQQhqEMceDwsgAEEIahDHHg8LIABBCGoQxx4PCyAAQQhqEMceDwsgAEEIahDHHiAAQRBqEMceDwsgAEEIahDHHg8LIABBCGoQxx4PCyAAQQhqEMceIABBEGoQxx4PCyAAQQhqEMceDwsgAEEIahDHHg8LIABBCGoQxx4PCyAAQQhqEMceDwsgACgCBCIAEPczIABBBEEEEO4cC6cDAgp/An4jAEHgAGsiAiQAAkAgACgCACAAKAIIIgNrIAEoAgwiBCABKAIEIgVrQQR2IgZPDQAgACADIAZBCEHYABDWDCAAKAIIIQMLAkAgBSAERg0AIAAoAgQgA0HYAGxqIQYgAkEIakEoaiEHIAJBPGohCCACQcUAaiIJQQRqIQoDQCABIAVBEGoiCzYCBCAFKQMAIQwQ6T8hDSAIQgA3AgAgCEEIakEAOgAAIAlBADYAACAKQQA7AAAgAkIANwMYIAIgDTcDECACQQA2AjAgAkIANwMoIAJBADYCCCACQQM6AEsgAkIENwI0IAJB0ABqQQhqIgUgB0EIaigCADYCACACIAcpAwA3A1AgAkEIahCsDyAGQShqQgA3AgAgBkEYakIANwIAIAZBEGogDDcCACAGQQhqQQA2AgAgBkEHNgIAIAZBMGogAikDUDcCACAGQThqIAUoAgA2AgAgBkE8akIANwIAIAZBwwBqQgA3AAAgBkHLAGpBAzoAACAGQdgAaiEGIANBAWohAyALIQUgCyAERw0ACwsgACADNgIIIAJB4ABqJAALswMBA38jAEEwayIGJAACQAJAAkACQAJAAkACQAJAIAEoAhwiB0UNACAGIAIgAyAEIAVBsJaDARC7JiAGKAIEIAEoAigiCE8NASAGQQhqIAEgAiADIAQgBRD2LwwCCyADIAVJDQIgBkEIaiABIAIgBSAEEP4GDAELIAMgBUkNAiAFIARJDQMgBSAEayAISQ0EIAZBGGogByABKAIgIgEoAghBf2pBeHFqQQhqIAIgBGogAiAFaiABKAIgEQ0AAkAgBigCGEEBRw0AIAYoAiAgAmsiBSAGKAIkIAJrIgFLDQYgBiAGKAIcNgIUIAYgATYCECAGIAU2AgwgBkEBNgIIDAELIAZBADYCCAtBACEFAkAgBigCCEEBRw0AIAAgBikCDDcCBCAAQQxqIAZBCGpBDGooAgA2AgBBASEFCyAAIAU2AgAgBkEwaiQADwsgBSADQcCWgwEQoxsACyAFIANBgJOAARCjGwALIAQgBUGElIABEKIbAAtBlJSAAUE6QdCUgAEQ0ycACyAGQQA2AiggBkEBNgIcIAZBrJWDATYCGCAGQgQ3AiAgBkEYakG0lYMBEK0uAAudAwENfyMAQRBrIgIkAAJAAkAgAS0AJQ0AIAFBFGohAyABIAEtABgiBGpBE2ohBSABKAIMIQYgASgCCCEHIAEoAhAhCCABKAIEIQkgBEEFSSEKAkACQAJAAkADQCAIIAZJDQIgCCAHSw0CIAkgBmohCyAFLQAAIQwCQAJAIAggBmsiDUEHSw0AQQAhDiAMQf8BcSEMA0AgDSAORg0EIAsgDmotAAAgDEYNAiAOQQFqIQ4MAAsLIAJBCGogDCALIA0QtwsgAigCCEEBRw0CIAIoAgwhDgsgASAGIA5qQQFqIgY2AgwgBiAESQ0AIAYgB0sNACAKRQ0EIAkgBiAEayINaiAEIAMgBBCgMUUNAAsgASgCHCEOIAEgBjYCHCANIA5rIQ0MAgsgASAINgIMCyABQQE6ACUCQAJAIAEtACRBAUcNACABKAIgIQ0gASgCHCEODAELIAEoAiAiDSABKAIcIg5GDQMLIA0gDmshDQsgACAJIA5qIA0QuCMMAgsgBEEEQeywoQEQoxsACyAAQYCAgIB4NgIACyACQRBqJAALkgMBBH8jAEEgayIDJABBASEEAkACQAJAAkAgASACTQ0AAkACQCAAIAJqIgUsAAAiAEF/TA0AIABB/wFxIQIMAQtBACEEIABBQHFBgH9GDQICQAJAIABBYE8NAEECIQYMAQsCQCAAQXBPDQBBAyEGDAELIABBd0sNA0EEIQYLIAYgASACayICSw0CIANBFGogBSAGELcGIAMoAhRBAUYNAiADKAIcRQ0EAkAgAygCGCIBLAAAIgRBf0oNACAEQWBJDQAgBEFwSQ0AIAEtAAFBP3FBDHQgAS0AAkE/cUEGdHIgAS0AA0E/cXIgBEH/AXFBEnRBgIDwAHFyQYCAxABGDQULQQEhBEECQQNBBCAAQXBJGyAAQWBJGyIBIAJLDQEgA0EUaiAFIAEQtwYgAygCFA0BIAMgAygCGCICIAMoAhxqNgIQIAMgAjYCDCADQQxqEIcRIgJBgIDEAEYNAwsgAhCSE0H/AXFBAXMhBAsgBEEBcSEECyADQSBqJAAgBA8LQcCMhAEQ/TkAC0HAjIQBEP05AAvuAwEEfyMAQSBrIgMkAAJAAkACQAJAAkACQAJAIAEQsBYiAUUNACACQf8BcQ4FAQIDAQQBCyAAQQA6AAEMBQsgA0EYakEAKQP4w5kBNwMAIANBEGpBACkD8MOZATcDACADQQApA+jDmQE3AwggA0EIaiABEIcHIQIgA0EIahDhEAwDCyADQRhqIgRBACkD8N+ZATcDACADQRBqIgVBACkD6N+ZATcDACADQQApA+DfmQE3AwggA0EIaiABEIcHIQYgA0EIahDhEEEBIQIgBg0CIARBACkD+MWZATcDACAFQQApA/DFmQE3AwAgA0EAKQPoxZkBNwMIIANBCGogARCHByEGIANBCGoQ4RAgBg0CIANBGGpBACkDsLGZATcDACADQRBqQQApA6ixmQE3AwAgA0EAKQOgsZkBNwMIIANBCGogARCHByECIANBCGoQ4RAMAgsgA0EYakEAKQOI4JkBNwMAIANBEGpBACkDgOCZATcDACADQQApA/jfmQE3AwggA0EIaiABEIcHIQIgA0EIahDhEAwBCyADQRhqQQApA+jkmQE3AwAgA0EQakEAKQPg5JkBNwMAIANBACkD2OSZATcDCCADQQhqIAEQhwchAiADQQhqEOEQCyAAIAI6AAELIABBADoAACADQSBqJAALvQMBB38jAEHQAGsiBCQAIAQgAjYCFCAEQQhqIAIQggUgBCgCCCEFIARBGGogAUEBEP8BAkACQCAEKAIYIgZBgICAgHhGDQAgBEE4akEIaiIHIARBGGpBEGopAgA3AwAgBEE4akEQaiIIIARBGGpBGGopAgA3AwAgBCAEKQIgNwM4IAQoAhwhCUEgQQQQzTMiCiAJNgIEIAogBjYCACAKIAQpAzg3AgggCkEQaiAHKQMANwIAIApBGGogCCkDADcCACAFIAEoAlQiBiAFIAZJGyEHIAUgBiAFIAZLGyEGAkAgAigCAEEwRw0AIARB6YCAgHg2AhggASAHIAYgBEEYahCIKgtBwABBCBDNMyIBQQA2AgggAUIxNwMAQSBBBBDNMyIFQgA3AhggBUIINwIQIAVCADcCCCAFQoCAgIDAADcCACAAIAM2AhQgAEEANgIQIAAgBjYCDCAAIAc2AgggACAKNgIEIAAgAjYCACAEQgA3AiAgBEIANwIoIAQgATYCGCAEIAU2AhwgBEEYahD0MQwBCyAEKAIcIQIgAEEANgIAIAAgAjYCBCADEN04IARBFGoQ5TgLIARB0ABqJAALsgMCA38CfiMAQSBrIgIkAAJAAkACQAJAAkACQAJAIAAoAgAOCAABAgMGBgQFAAsgACgCICABEEwMBQsgACgCICABEJcRDAQLIAAoAgQiACgCCCIDRQ0DIAAoAgQhACADQThsIQMDQCABIAAQwRcgAEE4aiEAIANBSGoiAw0ADAQLCyAAKAIEIgAoAggiA0UNAiAAKAIEIQAgA0E4bCEDA0AgASAAEMEXIABBOGohACADQUhqIgMNAAwDCwsgACgCBCIAKAIoIgNFDQEgA0EwbCEDIAAoAiRBKGohAANAAkAgACgCACIERQ0AIAEgBBDTAQsgAEEwaiEAIANBUGoiAw0ADAILCyACQQhqIAAoAgQiABDlIyABKAIYIQMgAikDCCEFIAEgAigCEDYCGCABKQMQIQYgASAFNwMQAkAgAC0ARUEDRg0AIABBIGogARCmEiABKQMQIQULAkAgBVANACAFQgODQgBSDQAgAiAFpyIANgIcIAJBHGoQ9QcgACAAKAIAIgRBf2o2AgAgBEEBRw0AIAAgACgCIBDTLwsgASADNgIYIAEgBjcDEAsgAkEgaiQAC7ADAgN/AX4jAEEgayIDJAAgASgCCCEEIANBEGogAiABKAIEIgVBABDkAgJAAkACQAJAIAMtABBBBEYNACADKQMQIgZC/wGDQgRSDQELAkACQAJAIAVFDQAgA0EQaiACIAUQsC0gAy0AEEEERg0AIAMpAxAiBkL/AYNCBFINAQsgA0EANgIQIANBCGogAiADQRBqQY2soQEQ0hEgAy0ACEEERg0BIAMpAwgiBkL/AYNCBFENASAAIAY3AgAMBAsgACAGNwIADAMLIANBEGogASACEOM6AkAgAy0AEEEERg0AIAMpAxAiBkL/AYNCBFINAgsgAigCACEBIAJBADYCAAJAIAItADwNACACKAIEIQUgAigCKCACKAIQIAIoAhQQ+i4CQCACKAI4RQ0AIAJBADYCNCACIAIoAjBBAWo2AjALIAJBAToAPCABRQ0AIAIgBRCoBwsCQAJAIARFDQAgA0EQaiACIAQQsC0gAy0AEEEERg0AIAMpAxAiBkL/AYNCBFINAQsgAEEEOgAADAMLIAAgBjcCAAwCCyAAIAY3AgAMAQsgACAGNwIACyADQSBqJAALjAMBBX8CQAJAAkACQAJAAkACQAJAAkAgByAIWA0AIAcgCH0gCFgNAwJAAkACQCAHIAZ9IAZYDQAgByAGQgGGfSAIQgGGWg0BCyAGIAhWDQEMCgsgAyACSw0FDAgLIAcgBiAIfSIIfSAIVg0IIAMgAksNBSABIANqIQlBfyEKIAMhCwJAA0AgCyIMRQ0BIApBAWohCiAMQX9qIgsgAWoiDS0AAEE5Rg0ACyANIA0tAABBAWo6AAAgDCADTw0HIAEgDGpBMCAKEO8RGgwHCwJAIAMNAEExIQsMAwsgAUExOgAAIANBAUcNAUEwIQsMAgsgAEEANgIADwtBMCELIAFBAWpBMCADQX9qEO8RGgsgBEEBasEhBCADIAJPDQMgBCAFwUwNAyAJIAs6AAAgA0EBaiEDDAMLIABBADYCAA8LIAMgAkGU8oABEKMbAAsgAyACQfTxgAEQoxsACyADIAJNDQAgAyACQYTygAEQoxsACyAAIAQ7AQggACADNgIEIAAgATYCAA8LIABBADYCAAviAwECfyMAQTBrIgIkAAJAAkACQAJAAkACQAJAAkAgACgCACIALQAADgQDAAECAwsgAiAAKAIENgIsIAJBATYCGCACQazAgwE2AhQgAkIBNwIgIAJBBzYCBCACIAI2AhwgAiACQSxqNgIAIAEoAhQgASgCGCACQRRqEJ0HIQEMBgsgAiAAKAIENgIsIAJBAjYCGCACQdTAgwE2AhQgAkIBNwIgIAJBBzYCBCACIAI2AhwgAiACQSxqNgIAIAEoAhQgASgCGCACQRRqEJ0HIQEMBQsgACgCBA4DAQIDAQsgAC0AASEDIAIgACgCBDYCLCACQQI2AhggAkGAwIMBNgIUIAJCAjcCICACQQc2AgwgAkGxATYCBCACIAM6ABMgAiACNgIcIAIgAkEsajYCCCACIAJBE2o2AgAgASgCFCABKAIYIAJBFGoQnQchAQwDCyABKAIUQeTAgwFBMCABKAIYKAIMEQsAIQEMAgsgASgCFEGUwYMBQS4gASgCGCgCDBELACEBDAELIAAoAgghACACQQI2AhggAkHswYMBNgIUIAJCATcCICACQQc2AgQgAiAANgIsIAIgAjYCHCACIAJBLGo2AgAgASgCFCABKAIYIAJBFGoQnQchAQsgAkEwaiQAIAELxQMBBn8jAEHwAmsiAyQAIANBCGogAUEgakHIlIQBEKkuAkACQAJAAkAgAygCCCIBKAIIIgRFDQAgAygCDCEFIAEgBEF/aiIENgIIIAEoAgQgBEGYAWxqIgRBBGohBiAELQBcIQcgBCgCACIIQff/u39qDgICAAELQZTOoQFBKEHYlIQBENMnAAsgAyAINgLAASADQcABakEEaiAGQdgAEN8KGiADIAc6AJwCIANBwAFqQd0AaiAEQd0AakE7EN8KGiABIANBwAFqENYqIAAgAkHYABDfChoMAQsgA0HoAGogBkHYABDfChogA0EQaiADQegAakHYABDfChogA0HYAmpBCGoiASADQRBqEKUyIgRBCGooAgA2AgAgAyAEKQIANwPYAiADQdgCakEUaiACEKUyIgRBFGooAgA2AgAgAyAEKQIMNwLkAkHYABCRMiADQegAakHYABDfCiEEIABB2AAQkTIgAkHYABDfCjYCCCAAIAQ2AgQgACAHOgAkIABBiIDEADYCACAAIAMpA9gCNwIMIABBFGogASkDADcCACAAQRxqIANB6AJqKQMANwIACyAFIAUoAgBBAWo2AgAgA0HwAmokAAv0AwECfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIAKAIIIgFBNCABQbuBgIB4SBtB/wFxIgJBVGoOCQETExMCAxMTBAALAkAgAkHhfmoOBw0TExMODxAACwJAIAJBlH9qDgQIExMJAAsCQCACQYd/ag4CCgsACwJAIAJByX5qDgIREgALIAJBggFGDQsCQCACQSdGDQAgAkHEAEYNBSACQdgARg0GIAJB4QBGDQcgAkEdRw0TIAApAxAQ0h8MEwsgACkDEBDSHwwSCyAAKAIMIABBEGooAgAQ9jkMEQsgACgCDCAAQRBqKAIAEPY5DBALIAAoAgwgAEEQaigCABDuMwwPCyABIABBDGooAgAQ9jkgACgCFCAAQRhqKAIAEPY5DA4LIAApAxAQ0h8MDQsgACkDEBDSHwwM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QANAIAJFDQEgAyABEPAuIAJBcGohAiADQRBqIQMMAAsLIAAoAixBOGwhBCAAKAIoIQVBACECAkADQCAEIAJGDQECQAJAAkACQAJAAkACQAJAIAUgAmoiAygCAEF8aiIAQQQgAEEHSRsOBwABAgMEBQYACyADQQRqIAEQlisgA0EYaigCACABENQxIANBHGooAgAgARDXMQwGCyADQQRqIAEQlisgA0EYaigCACABENQxIANBHGooAgAgARDXMQwFCyADQRBqIAEQxj0gA0EMaigCACABENQxDAQLIANBBGogARDGPSADQRBqKAIAIAEQ1DEMAwsgA0EwaiABEMY9IAMgARDMJwwCCyADQRBqIAEQxj0gA0EEaiABEJYrIANBHGooAgAgARDUMSADQSBqKAIAIAEQ1zEMAQsgASADQRRqKAIAIANBGGooAgAQzD0LIAJBOGohAgwACwsL4AICBn8DfiMAQTBrIgMkAAJAAkACQCACRQ0AIAEoAgghBCABKAIEIQUgAkH//wNLDQEgBEECdCEGIAVBfGohB0EAIQQDQCAGRQ0DIANBEGogBEEQdCAHIAZqIgUoAgAiBEEQdnIgAhDSLSADKAIQIQggA0EIaiADKAIUQRB0IARB//8DcXIgAhDSLSADKAIMIQQgBSADKAIIIAhBEHRyNgIAIAZBfGohBgwACwsgA0EANgIoIANBATYCHCADQZizggE2AhggA0IENwIgIANBGGpBoLOCARCtLgALIARBAnQhBiAFQXxqIQUgAq0hCUEAIQQDQCAGRQ0BIAUgBmoiAiAErUIghiACNQIAhCIKIAmAIgs+AgAgCiALIAl+fachBCAGQXxqIQYMAAsLIANBGGpBCGogAUEIaigCADYCACADIAEpAgA3AxggACADQRhqEIEPIAAgBDYCDCADQTBqJAAL/QIBAn8jAEEQayIGJAACQAJAAkACQAJAAkAgASgCJCIHLQDaAg0AIAZBCGogASACIAMgBCAFEPoBIAYoAgwhASAGKAIIIgVBAkYNASAFDQMMBAsgBy0A2wIhByAGQQhqIAEgAiADIAQgBRD6ASAGKAIMIQEgBigCCA4DAwEAAQsgAEECNgIAIAAgATYCBAwDCyAHQQFxRQ0AAkACQAJAAkAgAUEBdCICIAVPDQACQCAEIAJBAnRqKAIAIgdFDQAgAkEBciIC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CkcNAAsLQQAhAgwDCyAJIAxB6ISBARCkGwALIAwgBEHohIEBEKMbAAsgAEH//wNxIQkgBSAGaiEMQQEhAgNAIAVBAWohCgJAAkAgBSwAACIBQQBIDQAgCiEFDAELAkAgCiAMRg0AIAFB/wBxQQh0IAUtAAFyIQEgBUECaiEFDAELQdiEgQEQ/TkACyAJIAFrIglBAEgNASACQQFzIQIgBSAMRw0ACwsgAkEBcQvvAgIGfwR+IwBBMGsiAiQAAkACQAJAIAEtABQiA0ECRw0AELIyIQMgASgCACIBKAIUIQQgASgCECEFIAJBGGogAUEYahDDCiABKAIMIQYgASgCCCEHAkAgASkDACIIQgODQgBSDQAgCKciASABKAIAIgFBAWo2AgAgAUF/TA0DCyACQRBqIAJBGGpBEGopAwAiCTcDACACQQhqIAJBGGpBCGopAwAiCjcDACACIAIpAxgiCzcDACADIAQ2AhQgAyAFNgIQIAMgBjYCDCADIAc2AgggAyAINwMAIAMgCzcDGCADQSBqIAo3AwAgA0EoaiAJNwMAIAAgAzYCAEECIQMMAQsgASgCECEEIAEoAgwhBSABKAIIIQYCQCABKQMAIghCA4NCAFINACAIpyIBIAEoAgAiAUEBajYCACABQX9MDQILIAAgBDYCECAAIAU2AgwgACAGNgIIIAAgCDcDAAsgACADOgAUIAJBMGokAA8LAAuxAwEGfyMAQRBrIgEkACABQcAAEP0cIAEoAgghAiABKAIEIQMCQAJAIAEoAgAiBEUNACABKAIMIQUgBEH/ASADQQlqEO8RGgwBCwsgAUEIaiIGIAI2AgAgASAFNgIMIAEgAzYCBCABIAQ2AgAgARCRKBDECCABEJIoEMQIIAEQkygQxAggARCUKBDECCABEJUoEMQIIAEQligQxAggARCXKBDECCABEJgoEMQIIAEQmSgQxAggARCaKBDECCABEJsoEMQIIAEQnCgQxAggARCdKBDECCABEJ4oEMQIIAEQnygQxAggARCgKBDECCABEKEoEMQIIAEQoigQxAggARCjKBDECCABEKQoEMQIIAEQpSgQxAggARCmKBDECCABEKcoEMQIIAEQqCgQxAggARCpKBDECCABEKooEMQIIAEQqygQxAggARCsKBDECCABEK0oEMQIIAEQrigQxAggARCvKBDECCAB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4wsQojcgBCAFOgAwIARBADYCKCAEQoCAgICAATcCICAEIAEtABE6ADEgBCABKAIMNgIsIAQgBEEQajYCNCADIARBIGoQiwkgBEEgahDENyAEQRBqENkQIAEoAhQgAhDpCRogAyABEIsJIARBIGogA0HAABDfChogA0IANwIgIANCgICAgMAANwIYIANCCDcCECADQgA3AgggA0KAgICAwAA3AgAgA0EoakIANwIAIANBMGpCADcCACADQTVqQgA3AAACQEEEQcAAEMc4IgNFDQAgACADIARBIGpBwAAQ3wo2AhggACAIOgAUIABBADYCECAAIAY2AgwgACAHNgIIIAAgCTcDAAwBCwALIARB4ABqJAALmgMBA38gACgCCCEBIAAoAgQhAgNAAkACQCABRQ0AIAIoAgAgAkEEaigCABCLNSACQRRqKAIAIgBFDQEgAEEIahC5LSAAQSBqEOcwIAAoAiwgAEEwaigCABCLNSAAQThqEOcwAkAgACgCREGAgICAeEYNACAAQcQAahDbCiAAKAJEIABByABqKAIAEKQ6CwJAIAAoAlBBgICAgHhGDQAgAEHQAGoQrTgLIAAoAlwgAEHgAGooAgAQizUgACgCaCAAQewAaigCABCLNQJAIAAoAnQiA0GAgICAeEYNACADIABB+ABqKAIAEOozCwJAIAAoAoABIgNBgICAgHhGDQAgAyAAQYQBaigCABCCOgsCQCAAKAKMAUGAgICAeEYNACAAQZABaiIDKAIAIABBlAFqKAIAEMotIAAoAowBIAMoAgAQ/jkLAkAgACgCmAFBgICAgHhGDQAgAEGcAWoiAygCACAAQaABaigCABCOEyAAKAKYASADKAIAEP45CyAAQegBQQgQ7hwMAQsPCyABQX9qIQEgAkEYaiECDAALC9sCAQd/IwBBEGsiAiQAAkAgASgCBCIDIAEoAggiBCABQXRqKAIAIAFBeGooAgAQhiwiBUH/AXENACABLQAMIAFBfGotAABrIQULAkAgBUH/AXFB/wFHDQAgAkEOaiABQQ9qLQAAOgAAIAIgAS8ADTsBDCABQWRqIQYgAS0ADCEHIAEoAgAhCAJAAkADQCAGIgFBJGogAUEUaikCADcCACABQRxqIAFBDGoiBSkCADcCACAFIABGDQECQCADIAQgASgCACABQQRqKAIAEIYsIgVB/wFx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JAAgAyACNgIMIANBwoCAgHg2AkggA0EoaiABIANByABqENcXQQghASADQRBqQQhqIgQgA0EoakEQaiIFKQMANwMAIANBEGpBEGoiBiADQShqQRhqIgcpAwA3AwAgAyADKQMwNwMQAkACQCADKAIoDQAgA0HIAGpBEGogBikDACIINwMAIANByABqQQhqIAQpAwAiCTcDACADIAMpAxAiCjcDSCADQShqQRRqIAg3AgAgA0EoakEMaiAJNwIAIAMgCjcCLCAAQRxqIAcoAgA2AgAgAEEUaiAFKQIANwIAIABBDGogA0EoakEIaikCADcCACAAIAMpAig3AgRBACEBIABBADoAJCAAIAI2AiAMAQsgACADKQMQNwMIIABBGGogBikDADcDACAAQRBqIAQpAwA3AwAgA0EMahDVHwsgACABNgIAIANB4ABqJAAL6gIBBH8gAEHAAGogARCuHwJAIAAoAoQBIgJFDQAgACgCgAEiAyACQdgAbGohBANAAkACQCADKAIAIgJBBUYNACACQQRGDQECQAJAAkAgAg4EBAABAgQLIAMoAgRBAUcNAyADKAIIIAEQ/gIMAwsgAygCBCABEIgLDAILIAMoAgwiAkUNASACQShsIQUgAygCCEEEaiECA0ACQAJAAkACQAJAIAJBfGooAgAOBQQAAQIDBAsgAigCAEEBRw0DIAJBBGooAgAgARD+AgwDCyACKAIAIAEQ/gIMAgsgAigCACABEIkLDAELIAIgARClKgsgAkEoaiECIAVBWGoiBQ0ADAILCyADKAIEIAEQ/gILIANB2ABqIgMgBEcNAAsLAkAgACgCmAEiA0UNACAAKAKUASECIANBKGwhAwNAIAIgARDrGSACQShqIQIgA0FYaiIDDQALCwJAIAAtADxBBkYNACAAQRBqIAEQrh8LC+oCAQR/IABBwABqIAEQrh8CQCAAKAKEASICRQ0AIAAoAoABIgMgAkHYAGxqIQQDQAJAAkAgAygCACICQQVGDQAgAkEERg0BAkACQAJAIAIOBAQAAQIECyADKAIEQQFHDQMgAygCCCABEP4CDAMLIAMoAgQgARCICwwCCyADKAIMIgJFDQEgAkEobCEFIAMoAghBBGohAgNAAkACQAJAAkACQCACQXxqKAIADgUEAAECAwQLIAIoAgBBAUcNAyACQQRqKAIAIAEQ/gIMAwsgAigCACABEP4CDAILIAIoAgAgARCJCwwBCyACIAEQpSoLIAJBKGohAiAFQVhqIgUNAAwCCwsgAygCBCABEP4CCyADQdgAaiIDIARHDQALCwJAIAAoApgBIgNFDQAgACgClAEhAiADQShsIQMDQCACIAEQ6xkgAkEoaiECIANBWGoiAw0ACwsCQCAALQA8QQZGDQAgAEEQaiABEK4fCwvqAgEEfyABIABBwABqEJESAkAgACgChAEiAkUNACAAKAKAASIDIAJB2ABsaiEEA0ACQAJAIAMoAgAiAkEFRg0AIAJBBEYNAQJAAkACQCACDgQEAAECBAsgAygCBEEBRw0DIAEgAygCCBDTAQwDCyADKAIEIAEQigsMAgsgAygCDCICRQ0BIAJBKGwhBSADKAIIQQRqIQIDQAJAAkACQAJAAkAgAkF8aigCAA4FBAABAgMECyACKAIAQQFHDQMgASACQQRqKAIAENMBDAMLIAEgAigCABDTAQwCCyACKAIAIAEQiwsMAQsgAiABELoqCyACQShqIQIgBUFYaiIFDQAMAgsLIAEgAygCBBDTAQsgA0HYAGoiAyAERw0ACwsCQCAAKAKYASIDRQ0AIAAoApQBIQIgA0EobCEDA0AgAiABEO4ZIAJBKGohAiADQVhqIgMNAAsLAkAgAC0APEEGRg0AIAEgAEEQahCREgsL6gIBBH8gASAAQcAAahCREgJAIAAoAoQBIgJFDQAgACgCgAEiAyACQdgAbGohBANAAkACQCADKAIAIgJBBUYNACACQQRGDQECQAJAAkAgAg4EBAABAgQLIAMoAgRBAUcNAyABIAMoAggQ0wEMAwsgAygCBCABEIoLDAILIAMoAgwiAkUNASACQShsIQUgAygCCEEEaiECA0ACQAJAAkACQAJAIAJBfGooAgAOBQQAAQIDBAsgAigCAEEBRw0DIAEgAkEEaigCABDTAQwDCyABIAIoAgAQ0wEMAgsgAigCACABEIsLDAELIAIgARC6KgsgAkEoaiECIAVBWGoiBQ0ADAILCyABIAMoAgQQ0wELIANB2ABqIgMgBEcNAAsLAkAgACgCmAEiA0UNACAAKAKUASECIANBKGwhAwNAIAIgARDuGSACQShqIQIgA0FYaiIDDQALCwJAIAAtADxBBkYNACABIABBEGoQkRILC9gCAgZ/A34CQCAA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DCALKAIAIg0gDCANSxsiDCAKKAIEIgogCygCBCILIAogC0kbIgpLDQAgACAMIAoQwCkgACgCCCEIIAAoAgQhBQsgAiACQQxqIAJBFGogBSAIIAlB3LSHARDtMCgCBCAGIAQgB0HstIcBEO0wKAIESSIKGxCRLAJAIAIoAgANACACQRxqIAAgAxDLJCACQRxqELoeIAAgAC0ADCABLQAMcToADAwDCyACKAIEIgsgCSAKGyEJIAcgCyAKGyEHDAALCyAAQQE6AAwgAEEANgIICyACQTBqJAAL3AIBDH8jAEEwayICJAACQCAAKAIIIgNFDQACQCABKAIIIgRFDQAgAiADNgIQIAJBATYCDCACIAQ2AhggAkEBNgIUIAAoAgQhBSABKAIEIQZBACEHIAMhCEEAIQkDQCAFIAggCUG8tIcBEIAxIQogBiAEIAdBzLSHARCAMSELAkAgCi0AACIMIAstAAAiDSAMIA1LGyIMIAotAAEiCiALLQABIgsgCiALSRsiCksNACAAIAwgChC/KSAAKAIIIQggACgCBCEFCyACIAJBDGogAkEUaiAFIAggCUHctIcBEIAxLQABIAYgBCAHQey0hwEQgDEtAAFJIgobEJEsAkAgAigCAA0AIAJBHGogACADEMwkIAJBHGoQux4gACAALQAMIAEtAAxxOgAMDAMLIAIoAgQiCyAJIAobIQkgByALIAobIQcMAAsLIABBAToADCAAQQA2AggLIAJBMGokAAvRAgIKfwF+IwBBMGsiAiQAAkACQAJAIAEtACUiA0ECRw0AIAEpAgwhDCAAIAEQXSAAIAw3AgxBAiEDDAELIAEoAhghBCABKAIUIQUgASgCECEGIAEtACQhByABKAIEIQggASgCACEJAkAgASkDCCIMQgODQgBSDQAgDKciCiAKKAIAIgpBAWo2AgAgCkF/TA0CCyABLQAcIQsQrTIhCiACQQhqIAEoAiAQsQsgCkEgaiACQQhqQSBqKQMANwMAIApBGGogAkEIakEYaikDADcDACAKQRBqIAJBCGpBEGopAwA3AwAgCkEIaiACQQhqQQhqKQMANwMAIAogAikDCDcDACAAIAc6ACQgACAKNgIgIAAgCzoAHCAAIAQ2AhggACAFNgIUIAAgBjYCECAAIAw3AwggACAINgIEIAAgCTYCAAsgACADOgAlIAJBMGok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ABD2OSACQX9qIQIgAUEoaiEBDAALCyAAKAI0IANBBEEoEMkzIAAoAkQgACgCSBD2OQu/AgEEf0EfIQICQCABQf///wdLDQAgAUEGIAFBCHZnIgJrdkEBcSACQQF0a0E+aiECCyAAQgA3AhAgACACNgIcIAJBAnRB+PqjAWohAwJAQQAoApT+owFBASACdCIEcQ0AIAMgADYCACAAIAM2AhggACAANgIMIAAgADYCCEEAQQAoApT+owEgBHI2ApT+owEPCwJAAkACQCADKAIAIgQoAgRBeHEgAUcNACAEIQIMAQsgAUEAQRkgAkEBdmsgAkEfRht0IQMDQCAEIANBHXZBBHFqQRBqIgUoAgAiAkUNAiADQQF0IQMgAiEEIAIoAgRBeHEgAUcNAAsLIAIoAggiAyAANgIMIAIgADYCCCAAQQA2AhggACACNgIMIAAgAzYCCA8LIAUgADYCACAAIAQ2AhggACAANgIMIAAgADYCCAvHAgIFfwN+IwBB0ABrIgMkACADQcKAgIB4NgI4IANBGGogASADQThqENcXQQghASADQQhqIgQgA0EYakEQaiIFKQMANwMAIANBEGoiBiADQRhqQRhqIgcpAwA3AwAgAyADKQMgNwMAAkACQCADKAIYDQAgA0E4akEQaiAGKQMAIgg3AwAgA0E4akEIaiAEKQMAIgk3AwAgAyADKQMAIgo3AzggA0EYakEUaiAINwIAIANBGGpBDGogCTcCACADIAo3AhwgAEEcaiAHKAIANgIAIABBFGogBSkCADcCACAAQQxqIANBGGpBCGopAgA3AgAgACADKQIYNwIEIABBADoAJCAAIAI2AiBBASEBDAELIAAgAykDADcDCCAAQRhqIAYpAwA3AwAgAEEQaiAEKQMANwMAIAIQzSMLIAAgATYCACADQdAAaiQAC7gCAQl/IwBBMGsiAyQAIANBADYCECADQoCAgIAQNwIIIANBAToALCADQd8ANgIoIAMgAjYCJCADIAI2AhwgAyABNgIYIANB3wA2AhQgA0EoaiEEQQAhBUEAIQYDQAJAAkAgAiAFSQ0AIANB3wAgASAFaiACIAVrEJIWAkAgAygCACIHQQFHDQAgAyADKAIEIAVqIghBAWoiBTYCICAFRQ0DIAUgAksNAyAFIQkgASAIakEBIARBARCgMUUNAwwCCyACIQUgCiEJIAshCCAHQQFxDQELIANBCGogASAGaiACIAZrEPguIABBCGogA0EIakEIaigCADYCACAAIAMpAgg3AgAgA0EwaiQADwsgA0EIaiABIAZqIAggBmsQ+C4gA0EIakEBQQAQ+C4gCCELIAkhCiAJIQYMAAsL2wIBA38jAEEQayICJAACQAJAAkACQAJAAkACQCABKAIAIgNBe2oiBEEEIARBBkkbDgYAAQIDBAUACyAAIAFBCGoQqSkMBQsCQCABKAIIQQNHDQAgACABKAIMEKYqCyAAIAEoAigQpioMBAsgACABQRBqEKkpIAAgASgCKBCmKgwDCyABQShqIQQCQCABKAIIQQNHDQAgACABKAIMEKYqCyAEKAIAQYCAgIB4Rg0CIAAgBBCJKwwCCyABQSBqIQQCQCADQQNHDQAgACABKAIEEKYqCwJAIAQoAgBBB0YNACAEIAAQpQ4LIAEoAmggABClDiABKAJIQYCAgIB4Rg0BIAAgAUHIAGoQiSsMAQsCQCABKAIIQQNHDQAgACABKAIMEKYqCyAAIAEoAigQzxILAkAgA0EFRw0AIAIgAUEIahCmJyAAQSxqIAIpAwAgAigCCBC5DAsgAkEQaiQAC7oCAgZ/AX4jAEEwayIEJAAgBCACNgIYIAQgATcDECABIAIQoi4hASAEIARBEGo2AiQgAEEBIABBEGoQuTMgBCAANgIsIAQgBEEkajYCKCAEQQhqIAAoAgAgACgCBCABIARBKGpBvgsQnAwgACgCACECIAQoAgwhBQJAAkAgBCgCCA0AIAJBACAFa0EYbGpBeGoiACkDACEBIAAgAzcDACAEKQMQENIfDAELIAIgBWoiBi0AACEHIAQpAxAhCiAEKAIYIQggBiABQhmIpyIJOgAAIAIgACgCBCAFQXhqcWpBCGogCToAACAAIAAoAgxBAWo2AgwgACAAKAIIIAdBAXFrNgIIIAJBACAFa0EYbGoiAEF4aiADNwMAIABBcGogCDYCACAAQWhqIAo3AwBCACEBCyAEQTBqJAAgAQvKAgEEfyMAQeACayIDJAAgAyABEMMUIgQ2AgwCQCAEQdsARw0AIANBpAFqIAEQ7wQgAygCpAEhBCADQeQAaiADQaQBakEEaiIFQcAAEN8KGgJAAkAgBEGJgMQARg0AIANBEGogA0HoAWoiBkHUABDfChogBSADQeQAakHAABDfChogBiADQRBqQTAQ3woaIANBvAJqIANBEGpBMGpBJBDfChogAyABKAIAQSBqQbiShAEQqS4gAygCBCEBIAMoAgAhBSADQZgCaiACQSQQ3woaIAMgBDYCpAEgBSADQaQBahDWKiABIAEoAgBBAWo2AgAgAEEEaiADQbwCakEkEN8KGiAAQSI2AgAMAQsgACADQeQAakHAABDfChogAhCWNwsgA0HgAmokAA8LIANBADYCpAEgA0EMakG0koQBIANBpAFqQciShAEQwisAC70CAQp/IwBBIGsiAyQAIANBCGogAkEEQQwQ5yJBACEEIANBADYCHCADIAMoAgwiBTYCGCADIAMoAggiBjYCFAJAIAYgAk8NACADQRRqQQAgAkEEQQwQhScgAygCHCEEIAMoAhghBQsgASgCCCIHQRhsIQggBSAEQQxsaiEFIAJBASACQQFLGyIJQX9qIQYgASgCBCEKA0ACQCAGDQAgBCAJaiEGAkACQCACDQAgASgCACAKEKQ6IAZBf2ohBgwBCyAFIAEpAgA3AgAgBUEIaiABQQhqKAIANgIACyAAIAMpAhQ3AgAgAEEIaiAGNgIAIANBIGokAA8LIAMgB0EEQRgQ5yIgAygCACELIAMoAgQgCiAIEN8KIQwgBSAHNgIIIAUgDDYCBCAFIAs2AgAgBkF/aiEGIAVBDGohBQwACwu5AgEJfyMAQcAAayICJAAgASgCBCEDIAIgASgCCCIEQQRBBBDhEyACKAIEIQUCQCACKAIAQQFGDQAgAigCCCEGAkAgBUUNACAEQQJ0IQcgBiEIIAUhCQNAIAdFDQEgAygCACEKEK4yIQEgAiAKED8gAUE4aiACQThqKQMANwMAIAFBMGogAkEwaikDADcDACABQShqIAJBKGopAwA3AwAgAUEgaiACQSBqKQMANwMAIAFBGGogAkEYaikDADcDACABQRBqIAJBEGopAwA3AwAgAUEIaiACQQhqKQMANwMAIAEgAikDADcDACAIIAE2AgAgB0F8aiEHIAhBBGohCCADQQRqIQMgCUF/aiIJDQALCyAAIAQ2AgggACAGNgIEIAAgBTYCACACQcAAaiQADwsgBSACKAIIEPg5AAvwAgEBfwJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAA4KAAECAwQFBgcICQoLIABBCGoQnxgP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QAJAAkAgBSgCAEEHRw0AIAAtACghByAAQQE6ACgCQCAFKAI4IghFDQAgBSgCNCEEIAhBDGwhCANAIAAgBCgCABCmKiAEQQxqIQQgCEF0aiIIDQALCwJAIAUtABxBAkYNACAAIAVBCGoQ+Q4gACAHOgAoDAILIAUoAgwhBCAFKAIIIAAQpQ4gACAEEKYqIAAgBzoAKAwBCyAAIAUQqxcLIAVBwABqIgUgBkcNAAsLAkAgASgCIEGAgICAeEYNACABQSBqIAAQ9ScLIAMgAkEMahDzAyACQeAAaiQAC6QCAgJ/An4jAEEgayIDJAAgAyACNgIIIAMgATcDACADEKspIgU3AxAgBUIDgyEGAkACQCADIANBEGoQtxINAAJAIAZCAFINACADIAWnIgI2AhwgA0EcahD1ByACIAIoAgAiBEF/ajYCAAJAIARBAUcNACACIAIoAiAQ0y8LIAMoAgghAiADKQMAIQELIABBHGogASACENoHDAELAkAgBkIAUg0AIAMgBaciAjYCHCADQRxqEPUHIAIgAigCACIAQX9qNgIAAkAgAEEBRw0AIAIgAigCIBDTLwsgAykDACEBCyABQgODQgBSDQAgAyABpyICNgIQIANBEGoQ9QcgAiACKAIAIgBBf2o2AgAgAEEBRw0AIAIgAigCIBDTLwsgA0EgaiQAC7gCAQR/AkAgACgCACIARQ0AIAAoAghBDGwhAiAAKAIEIQADQCACRQ0BAkACQCAAKAIAIgNFDQAgASADENEDDAELAkACQAJAAkACQAJAIAAoAgQiAygCACIEQXtqIgVBBCAFQQZJGw4GAAECAwQFAAsgA0EANgIYDAULIAMoAgggA0EMaigCACABEOU2IAMoAiggARCjPwwECyADQQA2AiAgAygCKCABEKM/DAMLIAMoAgggA0EMaigCACABEOU2IANBKGogARD2NAwCCyAEIANBBGooAgAgARDlNgJAIAMoAiBBB0YNACADQSBqIAEQnA0LIAMoAmggARCcDSADQcgAaiABEPY0DAELIAMoAgggA0EMaigCACABEOU2IAMoAiggARDrHgsgAEEMaiEAIAJBdGohAgwACwsLnAICBn8BfiMAQTBrIgIkAAJAIAAoAgAgACgCCCIDayABKAIEIAEoAgBrQQR2IgRPDQAgACADIARBBEEQEIUnIAAoAgghAwsg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NgIYIAIgAEEIajYCFCACQbCcgwE2AhAgAiAANgIMIAIgAEEyajYCbCACIAJB7ABqNgJkIAFB+J6DAUELQZiegwFBDCACQQxqQQwQoA0hACACQfAAaiQAIAALggIBBH8gACgCBCEBIAAoAgAhAiAAQoSAgIDAADcCACAAKAIIIQMCQAJAAkAgASACRw0AIAAoAhAiAkUNASAAKAIMIgQgAygCCCIBRg0CIAMoAgQiACABQQR0aiAAIARBBHRqIAJBBHQQ8T0aDAILIAEgAmtBBHYhAQNAAkAgAigCAEECRg0AIAJBDGooAgAiBBD3ASAEQcAAQQgQ7hwLIAJBEGohAiABQX9qIgENAAsgACgCECICRQ0AAkAgACgCDCIEIAMoAggiAUYNACADKAIEIgAgAUEEdGogACAEQQR0aiACQQR0EPE9GgsgAyABIAJqNgIICw8LIAMgASACajYCCAugAgECfwJAAkACQAJAAkACQAJAIAAoAgAiAkF7aiIDQQQgA0EGSRsOBgABAgMEBQALIABBCGogARDrLg8LAkAgACgCCEEDRw0AIAAoAgwgARD1AgsgACgCKCABEPUCDwsgAEEQaiABEOsuIAAoAiggARD1Ag8LIABBKGohAwJAIAAoAghBA0cNACAAKAIMIAEQ9QILIAMoAgBBgICAgHhGDQIgAyABELcqDwsgAEEgaiEDAkAgAkEDRw0AIAAoAgQgARD1AgsCQCADKAIAQQdGDQAgAyABELoOCyAAKAJoIAEQug4gACgCSEGAgICAeEYNASAAQcgAaiABELcqDwsCQCAAKAIIQQNHDQAgACgCDCABEPUCCyAAKAIoIAEQmBELC4oCAgN/An4jAEEgayICJAACQAJAIAAtACVBAkcNACAAKAIIIgNFDQEgACgCBCEAIANBOGwhAwNAAkACQCAAKAIAQQlGDQAgACABEKgCDAELIABBCGogARDRBQsgAEE4aiEAIANBSGoiAw0ADAILCyACQQhqIABBCGoQpicgASgCGCEDIAIpAwghBSABIAIoAhA2AhggASkDECEGIAEgBTcDECAAKAIgIAEQvA0CQCABKQMQIgVQDQAgBUIDg0IAUg0AIAIgBaciADYCHCACQRxqEPUHIAAgACgCACIEQX9qNgIAIARBAUcNACAAIAAoAiAQ0y8LIAEgAzYCGCABIAY3AxALIAJBIGokAAuZAgEDfyMAQRBrIgIkAAJAAkAgASgCACIDRQ0AIAJBCGogAyABKAIEEK4mIAIoAgwhASACKAIIIQMMAQsCQAJAAkACQAJAAkAgASgCBCIDKAIAQXtqIgFBBCABQQZJGw4GBQQDAgEABQsgAygCKCIDKAI0IQEgAygCMCEDDAULIAMoAmQhASADKAJgIQMMBAsgAygCRCEBIAMoAkAhAwwDCyADKAIMIQEgAygCCCEDDAILIAIgAygCKBCCBSADQQhqIAMoAghBAnRBqLujAWooAgBqKAIAIgMgAigCBCIEIAMgBEsbIQEgAyAEIAMgBEkbIQMMAQsgAygCFCEBIAMoAhAhAwsgACABNgIEIAAgAzYCACACQRBqJAALywIBAn8CQAJAAkACQCAALQAIDgcDAwMBAgADAAsgAEEMahCjBwwCCyAAKAIMIAAoAhAQ9jkMAQsgAEEMahCtOAsgAEEgahDnMCAAKAIsIAAoAjAQizUgAEE4ahDnMAJAIAAoAkQiAUGAgICAeEYNACAAQcQAahDbCiABIAAoAkgQpDoLAkAgACgCUEGAgICAeEYNACAAQdAAahCtOAsgACgCXCAAKAJgEIs1IAAoAmggACgCbBCLNQJAIAAoAnQiAUGAgICAeEYNACABIAAoAngQ6jMLAkAgACgCgAEiAUGAgICAeEYNACABIAAoAoQBEII6CwJAIAAoAowBIgFBgICAgHhGDQAgACgCkAEiAiAAKAKUARDKLSABIAIQ/jkLAkAgACgCmAEiAUGAgICAeEYNACAAKAKcASICIAAoAqABEI4TIAEgAhD+OQsLgQIBBX8gACAAKAIAQX9qIgE2AgACQCABDQACQAJAIAAoAhgiAg0AQQAhAUEAIQNBACEEDAELQQAhAQJAIAIgACgCDCIDIAAoAhQiBUEAIAMgBSADSRtrIgRrIgVNDQAgAiAFayEBDAELIAQgAmohAwsgAEEQaigCACICIARBAnRqIQUgAyAEayEDA0ACQCADDQACQANAIAFFDQEgAigCABDnGCABQX9qIQEgAkEEaiECDAALCyAAKAIMIABBEGooAgBBBEEEEMkzIAAgACgCBEF/aiIBNgIEIAENAiAAQSBBBBDuHAwCCyAFKAIAEOcYIANBf2ohAyAFQQRqIQUMAAsLC7ACAQJ/IwBBEGsiAiQAAkACQAJAAkACQAJAIAAoAgAiACgCAEGAgICAeHMiA0EEIANBBEkbDgUAAQIDBAALIAIgAEEIajYCDCABQe2SgwFBD0H8koMBQQMgAkEMakGlARDtEiEADAQLIAIgAEEIajYCDCABQf+SgwFBDUGMk4MBQQcgAEEEakGmAUGTk4MBQQcgAkEMakEiEKkSIQAMAwsgAiAAQQRqNgIMIAFBmpODAUENQYyTgwFBByACQQxqQacBEO0SIQAMAgsgAiAAQQRqNgIMIAFBp5ODAUESQYyTgwFBByACQQxqQacBEO0SIQAMAQsgAiAANgIMIAFBuZODAUEJQYyTgwFBByAAQQxqQaYBQY3toAFBBCACQQxqQagBEKkSIQALIAJBEGokACAAC4MCAQt/IAEoAggiA0EcbCEEIANB/////wNxIQVBACEGIAItABhB/wFxIgdBB0YhCCABKAIEIgkhCgJAA0ACQCAEDQACQCADIAEoAgBHDQAgARDIJiABKAIEIQkLIAEgA0EBajYCCCAJIANBHGxqIgQgAikCADcCACAEQRhqIAJBGGooAgA2AgAgBEEQaiACQRBqKQIANwIAIARBCGogAkEIaikCADcCAEEAIQsMAgsCQAJAIAotABgiDEEHRiINIAhzDQBBASELIA0NASAIDQEgDCAHRg0BCyAKQRxqIQogBkEBaiEGIARBZGohBAwBCwsgBiEFCyAAIAU2AgQgACALNgIAC7MCAQF/IwBB8ABrIgIkACAAKAIAIQAgAkGI4pkBNgJoIAJBqOKZATYCYCACIABBNGo2AlwgAkGo4pkBNgJYIAIgAEEzajYCVCACQajimQE2AlAgAiAAQTJqNgJMIAJB+OKZATYCSCACIABBMGo2AkQgAkHo4pkBNgJAIAIgAEEkajYCPCACQajimQE2AjggAiAAQTFqNgI0IAJB2OKZATYCMCACIABBIGo2AiwgAkHI4pkBNgIoIAIgAEEcajYCJCACQcjjmQE2AiAgAiAANgIcIAJB4POgATYCGCACIABBGGo2AhQgAkHQ86ABNgIQIAIgAEEQajYCDCACIABBNWo2AmwgAiACQewAajYCZCABQbzloAFBC0HY56ABQQwgAkEMakEMEKANIQAgAkHwAGokACAAC4QCAQZ/IwBBIGsiASQAQQAhAgJAIAAoAuQBIgMgACgC6AFGDQACQAJAAkACQCADLAAAIgRBf0wNACAEQf8BcSEDDAELIAMtAAFBP3EhBSAEQR9xIQYCQAJAIARBX0sNACAGQQZ0IAVyIQMMAQsgBUEGdCADLQACQT9xciEFAkAgBEFwTw0AIAUgBkEMdHIhAwwBCyAFQQZ0IAMtAANBP3FyIAZBEnRBgIDwAHFyIgNBgIDEAEYNBAsgA0H/AEsNAQsgA0GA3ZoBai0AAA0BDAILIAMQjyhFDQELIAAoAvQBIQAgAUGggICAeDYCCCAAIAAgAUEIahCIPCECCyABQSBqJAAgAguzAgEBfyMAQfAAayICJAAgACgCACEAIAJB3P6aATYCaCACQfz+mgE2AmAgAiAAQTRqNgJcIAJB/P6aATYCWCACIABBM2o2AlQgAkH8/poBNgJQIAIgAEEyajYCTCACQcz/mgE2AkggAiAAQTBqNgJEIAJBjP+aATYCQCACIABBJGo2AjwgAkH8/poBNgI4IAIgAEExajYCNCACQbz/mgE2AjAgAiAAQSBqNgIsIAJBrP+aATYCKCACIABBHGo2AiQgAkGcgJsBNgIgIAIgADYCHCACQeDzoAE2AhggAiAAQRhqNgIUIAJB0POgATYCECACIABBEGo2AgwgAiAAQTVqNgJsIAIgAkHsAGo2AmQgAUG85aABQQtB2OegAUEMIAJBDGpBDBCgDSEAIAJB8ABqJAAgAAuYAgEJfyMAQRBrIgIkACABKAIIIQMgASgCACIEIQUCQCABKAIEIgYgASgCDCIHRg0AIAEoAhAhCCAEIQUDQCABIAZBBGoiCTYCBCABKAIUIQogAiAGKAIAIgY2AgwCQAJAAkACQAJAAkAgBigCAEFxag4QAgMDAwMDAwMDAwMDAAMDAQMLIAhBAWogCigCAEcNAwwCCyAIQQFqIAooAgBGDQEMAgsgCEEBaiAKKAIARw0BCyAFIAY2AgAgBUEEaiEFIAEoAhAhCAwBCyACQQxqEK8CCyABIAhBAWoiCDYCECAJIQYgCSAHRw0ACwsgARDAHSAAIAQ2AgQgACADNgIAIAAgBSAEa0ECdjYCCCABEMIlIAJBEGokAAuzAgEBfyMAQfAAayICJAAgACgCACEAIAJBwL2gATYCaCACQcifoAE2AmAgAiAAQTRqNgJcIAJByJ+gATYCWCACIABBM2o2AlQgAkHIn6ABNgJQIAIgAEEyajYCTCACQdifoAE2AkggAiAAQTBqNgJEIAJBiJ+gATYCQCACIABBJGo2AjwgAkHIn6ABNgI4IAIgAEExajYCNCACQbifoAE2AjAgAiAAQSBqNgIsIAJBqJ+gATYCKCACIABBHGo2AiQgAkGooKABNgIgIAIgADYCHCACQeDzoAE2AhggAiAAQRhqNgIUIAJB0POgATYCECACIABBEGo2AgwgAiAAQTVqNgJsIAIgAkHsAGo2AmQgAUG85aABQQtB2OegAUEMIAJBDGpBDBCgDSEAIAJB8ABqJAAgAAuEAgIFfwF+IwBBIGsiAyQAAkACQCABKAIEIgQgASgCDCIFRw0AQQQhBgwBCyACKAIAIQcCQANAIAEgBEEgaiICNgIEIANBGGogBEEYaikDADcDACADQRBqIARBEGopAwA3AwAgA0EIaiAEQQhqKQMANwMAIAMgBCkDACIINwMAIAinIQYCQAJAIActAABBAUcNACAGQQFLDQAgAxClEgwBCyAGQQRHDQILIAIhBCACIAVHDQALQQQhBgwBCyAAIAQpAgQ3AgQgAEEcaiAEQRxqKAIANgIAIABBFGogBEEUaikCADcCACAAQQxqIARBDGopAgA3AgALIAAgBjYCACADQSBqJAALswIBAX8jAEHwAGsiAiQAIAAoAgAhACACQfDzoAE2AmggAkGc46ABNgJgIAIgAEE0ajYCXCACQZzjoAE2AlggAiAAQTNqNgJUIAJBnOOgATYCUCACIABBMmo2AkwgAkG846ABNgJIIAIgAEEwajYCRCACQazjoAE2AkAgAiAAQSRqNgI8IAJBnOOgATYCOCACIABBMWo2AjQgAkGM46ABNgIwIAIgAEEgajYCLCACQfzioAE2AiggAiAAQRxqNgIkIAJByOegATYCICACIAA2AhwgAkHg86ABNgIYIAIgAEEYajYCFCACQdDzoAE2AhAgAiAAQRBqNgIMIAIgAEE1ajYCbCACIAJB7ABqNgJkIAFBvOWgAUELQdjnoAFBDCACQQxqQQwQoA0hACACQfAAaiQAIAALmgICCH8BfiMAQSBrIgIkAAJAAkAgASgCBCIDDQAgAEEIakEAKQPg4qIBNwIAIABBACkD2OKiATcCAAwBCyACQQggA0EBahDLEyACKAIAIAEoAgAiBCACKAIEIgVBCWoQ3wohBiAEKQMAIQogAiABKAIMIgc2AhggAiAENgIQIAIgBCADakEBajYCDCACIARBCGo2AgggAiAKQn+FQoCBgoSIkKDAgH+DNwMAIAZBeGohCCAHIQkCQANAIAlFDQEgAhD/GSEDIAIgAigCGEF/aiIJNgIYIANFDQEgCCADIARraiADQXhqKQMAEP0sNwMADAALCyAAIAc2AgwgACAFNgIEIAAgBjYCACAAIAEoAgg2AggLIAJBIGokAAuBAgIDfwF+IAAgACgCOCACajYCOAJAAkACQCAAKAI8IgMNAEEAIQQMAQsgASACQQBBCCADayIEIAIgBCACSRsQlRchBiAAIAApAzAgBiADQQN0QThxrYaEIgY3AzACQCAEIAJLDQAgACAAKQMYIAaFNwMYIAAQihogAEEANgI8IAAgACkDACAAKQMwhTcDAAwBCyADIAJqIQMMAQsgAiAEayIFQXhxIQMCQANAIAQgA08NASAAIAApAxggASAEaikAACIGhTcDGCAAEIoaIAAgBiAAKQMAhTcDACAEQQhqIQQMAAsLIAAgASACIAQgBUEHcSIDEJUXNwMwCyAAIAM2AjwLpgIBAn8jAEHAAGsiAiQAIAJCADcCKCACQoCAgIDAADcCICACQgg3AhggAkIANwIQIAJCgICAgMAANwIIIAFC/////w+DIQFBACEDAkACQAJAA0ACQCADQQFHDQAgAkEwaiACKAIMIAIoAhAQmQwCQCACKAIwIgNBhICAgHhHDQBBAC0AwP+jARpBMBCMASIDRQ0DIANCgYCAgBA3AgAgA0EIaiACQQhqQSgQ3woaIABBhICAgHg2AgAgACADNgIEDAULIAAgAikCNDcCBCAAQQxqIAJBMGpBDGooAgA2AgAgACADNgIADAMLAkAgAVANACAAQoOAgIAINwMADAMLIAJBCGogAxDICCADQQFqIQMMAAsLAAsgAkEIahDSKgsgAkHAAGokAAuHAgIFfwF+IwBBIGsiAyQAIANBFGogAkEAQQRBEBDrDyADKAIYIQQCQAJAAkAgAygCFEEBRg0AIANBADYCECADIAMoAhwiBTYCDCADIAQ2AggCQCACQQJJDQAgATEABEIghiABNQIAhCABMQAFQiiGhCEIIAJBf2ohBCABKAIIIQYgAS8BDCEHA0AgBSAHOwEMIAUgBjYCCCAFIAg3AgAgBUEQaiEFIARBf2oiBA0ACyACIQQMAgtBASEEIAINAUEAIQQMAgsgBCADKAIcEPg5AAsgBSABKQIANwIAIAVBCGogAUEIaikCADcCAAsgACADKQIINwIAIABBCGogBDYCACADQSBqJAALhwIBA38jAEEQayICQQZqQQJqQQA6AAAgAkEAOwEGIAIgAUEUdkGI4aIBai0AADoACSACIAFBBHZBD3FBiOGiAWotAAA6AA0gAiABQQh2QQ9xQYjhogFqLQAAOgAMIAIgAUEMdkEPcUGI4aIBai0AADoACyACIAFBEHZBD3FBiOGiAWotAAA6AAogAkEGaiABQQFyZ0ECdiIDaiIEQfsAOgAAIARBf2pB9QA6AAAgAkEGaiADQX5qIgNqQdwAOgAAIAJBBmpBCGoiBCABQQ9xQYjhogFqLQAAOgAAIABBCjoACyAAIAM6AAogACACKQEGNwAAIAJB/QA6AA8gAEEIaiAELwEAOwAAC4ECAgN/AX4gACAAKAI4IAJqNgI4AkACQAJAIAAoAjwiAw0AQQAhBAwBCyABIAJBACACQQggA2siBCACIARJGxCVFyEGIAAgACkDMCAGIANBA3RBOHGthoQiBjcDMAJAIAQgAksNACAAIAApAxggBoU3AxggABCvEiAAQQA2AjwgACAAKQMAIAApAzCFNwMADAELIAMgAmohAwwBCyACIARrIgVBeHEhAwJAA0AgBCADTw0BIAAgACkDGCABIARqKQAAIgaFNwMYIAAQrxIgACAGIAApAwCFNwMAIARBCGohBAwACwsgACABIAIgBCAFQQdxIgMQlRc3AzALIAAgAzYCPAuaAgIFfwF+IwBBEGsiAyQAIAMgAjYCDAJAAkACQAJAIAEoApACIgJBAnFFDQAgASgChAIiBCgCCCIFQf7///8HSw0BIAQoAhRFDQAgBQ0CIARBfzYCCCABKAKAAiIFKAIIDQMgBUF/NgIIIAQoAhAhBiAFQQxqIAQoAhQiBxChMCAFKAIQIAUoAhRBAnRqIAYgB0ECdBDfChogBSAHIAUoAhRqNgIUIARBADYCFCAFIAUoAghBAWo2AgggBCAEKAIIQQFqNgIICyABIAJBgCByNgKQAiADIANBDGogARCtAiADKQMAIQggASACENwRIAAgCDcDACADQRBqJAAPC0GchJsBEOoiAAtBjISbARDpIgALQfyDmwEQ6SIAC4QCAgR/AX4jAEEgayIGJABBgYCAgHghBwJAAkAgASgCACIIIAJrIANJDQAMAQtBACEHAkAgAiADaiIDIAJPDQAMAQsCQCAEIAVqQX9qQQAgBGtxrSADrX4iCkIgiKdFDQAMAQsgCqciCUGAgICAeCAEa0sNAAJAAkAgCA0AQQAhAgwBCyAGIAggBWw2AhwgBiABKAIENgIUIAQhAgsgBiACNgIYIAZBCGogBCAJIAZBFGoQ+BgCQCAGKAIIQQFHDQAgBigCECECIAYoAgwhBwwBCyAGKAIMIQIgASADNgIAIAEgAjYCBEGBgICAeCEHCyAAIAI2AgQgACAHNgIAIAZBIGokAAuKAgEEfwJAIAAoAggiAkUNACAAKAIEIgMgAkEGdGohBANAIANCADcCKAJAIAMoAjgiBUUNACADKAI0IQIgBUEMbCEFA0AgAkIANwIEIAIoAgAgARCMAiACQQxqIQIgBUF0aiIFDQALCyADIAEQrAkgA0HAAGoiAiEDIAIgBEcNAAsLAkAgACgCFCIFRQ0AIAAoAhAhAiAFQQxsIQUDQCACQgA3AgQgAigCACABEIwCIAJBDGohAiAFQXRqIgUNAAsLIABCADcCMAJAIAAoAhhBgICAgHhGDQAgAEEYaiABEPQnCwJAIAAoAjwiAkUNACACIAEQ5BkLAkAgACgCQCICRQ0AIAIgARCROAsLnwIBAn8CQAJAAkACQAJAAkAgACgCACICQXtqIgNBBCADQQZJGw4GBQABAgMEBQsCQCAAKAIIQQNHDQAgACgCDCABEP8CCyAAKAIoIAEQ/wIPCyAAKAIoIAEQ/wIPCwJAIAAoAghBA0cNACAAKAIMIAEQ/wILIABBKGohAwJAIAAoAkgiAEUNACABIAAoAgAQrAMLIAMoAgBBgICAgHhGDQIgAyABELUqDwsgAEEgaiEDAkAgAkEDRw0AIAAoAgQgARD/AgsCQCADKAIAQQdGDQAgAyABEI0KCyAAKAJoIAEQjQogACgCSEGAgICAeEYNASAAQcgAaiABELUqDwsCQCAAKAIIQQNHDQAgACgCDCABEP8CCyAAKAIoIAEQxA4LC9kCAQN/QQAhAkEAIQMCQCAAvUL///////////8Ag0L/////////9/8AVQ0AAkACQCAAnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMbIgBEAAAAAAAA8EFjIABEAAAAAAAAAABmIgNxRQ0AIACrIQQMAQtBACEEC0F/IARBACADGyAARAAA4P///+9BZBshAwsCQCABvUL///////////8Ag0L/////////9/8AVQ0AAkACQCABnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMbIgBEAAAAAAAA8EFjIABEAAAAAAAAAABmIgJxRQ0AIACrIQQMAQtBACEEC0F/IARBACACGyAARAAA4P///+9BZBtBH3EhAgsgAyACdLcL2QIBA39BACECQQAhAwJAIAC9Qv///////////wCDQv/////////3/wBVDQACQAJAIACdIgAgAEQAAAAAAADwPaKdRAAAAAAAAPBBoqEgAKYiAEQAAAAAAADwQaAgACAARAAAAAAAAAAAYxsiAEQAAAAAAADwQWMgAEQAAAAAAAAAAGYiA3FFDQAgAKshBAwBC0EAIQQLQX8gBEEAIAMbIABEAADg////70FkGyEDCwJAIAG9Qv///////////wCDQv/////////3/wBVDQACQAJAIAGdIgAgAEQAAAAAAADwPaKdRAAAAAAAAPBBoqEgAKYiAEQAAAAAAADwQaAgACAARAAAAAAAAAAAYxsiAEQAAAAAAADwQWMgAEQAAAAAAAAAAGYiAnFFDQAgAKshBAwBC0EAIQQLQX8gBEEAIAIbIABEAADg////70FkG0EfcSECCyADIAJ1twvZAgEDf0EAIQJBACEDAkAgAL1C////////////AINC//////////f/AFUNAAJAAkAgAJ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjGyIARAAAAAAAAPBBYyAARAAAAAAAAAAAZiIDcUUNACAAqyEEDAELQQAhBAtBfyAEQQAgAxsgAEQAAOD////vQWQbIQMLAkAgAb1C////////////AINC//////////f/AFUNAAJAAkAgAZ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjGyIARAAAAAAAAPBBYyAARAAAAAAAAAAAZiICcUUNACAAqyEEDAELQQAhBAtBfyAEQQAgAhsgAEQAAOD////vQWQbQR9xIQILIAMgAna4C4YCAgF/AX4jAEEQayIDJAACQAJAAkACQAJAAkACQCABKAIADgQAAQIDAAsgA0EIaiABQQhqIAIQ+QwgAy0ACEEERg0DIAMpAwgiBEL/AYNCBFENAyAAIAQ3AgAMBQsgA0EIaiABQQRqIAIQ1QYgAy0ACEEERg0CIAMpAwgiBEL/AYNCBFENAiAAIAQ3AgAMBAsgA0EIaiABQQRqIAIQhwogAy0ACEEERg0BIAMpAwgiBEL/AYNCBFENASAAIAQ3AgAMAwsgA0EIaiABQQRqIAIQpgIgAy0ACEEERg0AIAMpAwgiBEL/AYNCBFINAQsgAEEEOgAADAELIAAgBDcCAAsgA0EQaiQAC/QBAQd/QQEhBEEAIQUDQCAEIQZBASEHA0BBACEEAkACQAJAA0AgBiAEaiIIIAJPDQEgBSAEaiIJIAJPDQIgASAIai0AACEKIAEgCWotAAAhCQJAAkACQAJAIAMNACAKQf8BcSIKIAlB/wFxIglJDQEgCiAJTQ0DDAcLIApB/wFxIgogCUH/AXEiCU0NAQsgBkEBaiEEIAYhBQwHCyAKIAlJDQQLQQAgBEEBaiIEIAQgB0YiCBshBCAHQQAgCBsgBmohBgwACwsgACAHNgIEIAAgBTYCAA8LIAkgAkHQh4IBEKEbAAsgCEEBaiIGIAVrIQcMAAsLC5YCAQN/IwBBIGsiAiQAAkACQAJAIAEoAgAiA0ECRw0AIAEoAgghAyABQQA2AgggA0UNASACIAMRAwAgAigCBCEDIAIoAgAhBAJAAkAgASgCAEECRw0AIAEgAzYCBCABIAQ2AgAMAQsgBEECRw0DC0ECIAMQnTUgASgCACEDC0EBIQQCQAJAIANBAXENAEEAIQQMAQsgASgCBBAhIQELIAAgATYCBCAAIAQ2AgAgAkEgaiQADwsgAkEANgIYIAJBATYCDCACQejpogE2AgggAkIENwIQIAJBCGpB0OqiARCtLgALIAQgAxCdNSACQQA2AhggAkEBNgIMIAJB8OqiATYCCCACQgQ3AhAgAkEIakH46qIBEK0uAAuSAgEDfyMAQSBrIgQkACABKAIEIQUCQAJAIAEoAggiBiADSQ0AIAUgBiACIAMQkA0hAwwBCyAEQRBqIAIgAyAGQcSJggEQ/y8gBSAGIAQoAhAgBCgCFBCQDSEFIARBCGogAiADIAZB1ImCARDLLCABIAQoAgggBCgCDBCeNSAEIAEoAgQgASgCCCAGQeSJggEQyywgBCgCBCEDIAQoAgAhBiAEIAU2AhwgBiADIARBHGpBARCQDSEDCwJAIANFDQACQCABKAIIIgYgASgCAEcNACABEMMmCyABIAZBAWo2AgggASgCBCAGQQJ0aiADNgIACyAAIAEpAgA3AgAgAEEIaiABQQhqKAIANgIAIARBIGokAAuPAgEEfwJAAkAgACgCACIBKAIAQQNGDQAgASgCICIAEKoBIABBwABBCBDuHCABEPMRDAELIAEoAhAiABCqASAAQcAAQQgQ7hwgAUEIaigCACEAAkAgASgCDCICRQ0AIABBDGohAANAIAAoAgAiAxCqASADQcAAQQgQ7hwgAEEQaiEAIAJBf2oiAg0ACyABQQhqKAIAIQALIAEoAgQgABDbMyABKAIgIgRFDQAgBEEEaigCACEAAkAgBCgCCCICRQ0AA0AgACgCACIDEIwDIANB4ABBCBDuHCAAQQRqIQAgAkF/aiICDQALIARBBGooAgAhAAsgBCgCACAAEN8zIARBFEEEEO4cCyABQShBCBDuHAulAgEBfwJAAkACQAJAAkACQAJAIAAoAgAOBgECAwQGBQALIAAoAgQiABCwASAAQcAAQQgQ7hwPCyAAQQhqEP0XDwsgACgCCCIBIAAoAgwQ+ywgACgCBCABEOEzIAAoAhgiAEUNAiAAKAIAIgEQzwQgAUHgAEEIEO4cIABBDEEEEO4cDwsgACgCBCIBENsNIAFBKEEIEO4cIAAoAhgiAEUNASAAKAIAIgEQzwQgAUHgAEEIEO4cIABBDEEEEO4cDwsgAEEEahC3EyAAKAIEIAAoAggQ4zMgACgCGCIARQ0AIAAoAgAiARDPBCABQeAAQQgQ7hwgAEEMQQQQ7hwLDwsgACgCBCIBENsNIAFBKEEIEO4cIAAoAggiABCwASAAQcAAQQgQ7hwLpQIBAX8CQAJAAkACQAJAAkACQCAAKAIADgYBAgMEBgUACyAAKAIEIgAQ9QEgAEHAAEEIEO4cDwsgAEEIahCEGA8LIAAoAggiASAAKAIMEJktIAAoAgQgARDhMyAAKAIYIgBFDQIgACgCACIBENAEIAFB4ABBCBDuHCAAQQxBBBDuHA8LIAAoAgQiARDcDSABQShBCBDuHCAAKAIYIgBFDQEgACgCACIBENAEIAFB4ABBCBDuHCAAQQxBBBDuHA8LIABBBGoQ6BMgACgCBCAAKAIIEOMzIAAoAhgiAEUNACAAKAIAIgEQ0AQgAUHgAEEIEO4cIABBDEEEEO4cCw8LIAAoAgQiARDcDSABQShBCBDuHCAAKAIIIgAQ9QEgAEHAAEEIEO4cC6UCAQF/AkACQAJAAkACQAJAAkAgACgCAA4GAQIDBAYFAAsgACgCBCIAENsBIABBwABBCBDuHA8LIABBCGoQhRgPCyAAKAIIIgEgACgCDBCZLSAAKAIEIAEQ4TMgACgCGCIARQ0CIAAoAgAiARDRBCABQeAAQQgQ7hwgAEEMQQQQ7hwPCyAAKAIEIgEQ3Q0gAUEoQQgQ7hwgACgCGCIARQ0BIAAoAgAiARDRBCABQeAAQQgQ7hwgAEEMQQQQ7hwPCyAAQQRqEOgTIAAoAgQgACgCCBDjMyAAKAIYIgBFDQAgACgCACIBENEEIAFB4ABBCBDuHCAAQQxBBBDuHAsPCyAAKAIEIgEQ3Q0gAUEoQQgQ7hwgACgCCCIAENsBIABBwABBCBDuHAucAgEIfyABEO0OGiABKALUAiECIAEoAtgCIQMgAS0A4QIhBAJAAkACQAJAIAEoApACIgVBAnFFDQAgASgChAIiBigCCCIHQf7///8HSw0BIAYoAhRFDQAgBw0CIAZBfzYCCCABKAKAAiIHKAIIDQMgB0F/NgIIIAYoAhAhCCAHQQxqIAYoAhQiCRChMCAHKAIQIAcoAhRBAnRqIAggCUECdBDfChogByAJIAcoAhRqNgIUIAZBADYCFCAHIAcoAghBAWo2AgggBiAGKAIIQQFqNgIICyABIAVB///5/wNxNgKQAiAAIAEgAiADIARB/wFxQQJGGxBPIAEgBRDcEQ8LQZyEmwEQ6iIAC0GMhJsBEOkiAAtB/IObARDpIgALpQIBAX8CQAJAAkACQAJAAkACQCAAKAIADgYBAgMEBgUACyAAKAIEIgAQ3QEgAEHAAEEIEO4cDwsgAEEIahCGGA8LIAAoAggiASAAKAIMEJktIAAoAgQgARDhMyAAKAIYIgBFDQIgACgCACIBENIEIAFB4ABBCBDuHCAAQQxBBBDuHA8LIAAoAgQiARDfDSABQShBCBDuHCAAKAIYIgBFDQEgACgCACIBENIEIAFB4ABBCBDuHCAAQQxBBBDuHA8LIABBBGoQ6BMgACgCBCAAKAIIEOMzIAAoAhgiAEUNACAAKAIAIgEQ0gQgAUHgAEEIEO4cIABBDEEEEO4cCw8LIAAoAgQiARDfDSABQShBCBDuHCAAKAIIIgAQ3QEgAEHAAEEIEO4cC6UCAQF/AkACQAJAAkACQAJAAkAgACgCAA4GAQIDBAYFAAsgACgCBCIAENkBIABBwABBCBDuHA8LIABBCGoQiRgPCyAAKAIIIgEgACgCDBCZLSAAKAIEIAEQ4TMgACgCGCIARQ0CIAAoAgAiARDUBCABQeAAQQgQ7hwgAEEMQQQQ7hwPCyAAKAIEIgEQ4A0gAUEoQQgQ7hwgACgCGCIARQ0BIAAoAgAiARDUBCABQeAAQQgQ7hwgAEEMQQQQ7hwPCyAAQQRqEOgTIAAoAgQgACgCCBDjMyAAKAIYIgBFDQAgACgCACIBENQEIAFB4ABBCBDuHCAAQQxBBBDuHAsPCyAAKAIEIgEQ4A0gAUEoQQgQ7hwgACgCCCIAENkBIABBwABBCBDuHAuPAgEEfwJAAkAgACgCACIBKAIAQQNGDQAgASgCICIAEKIBIABBwABBCBDuHCABEP8RDAELIAEoAhAiABCiASAAQcAAQQgQ7hwgAUEIaigCACEAAkAgASgCDCICRQ0AIABBDGohAANAIAAoAgAiAxCiASADQcAAQQgQ7hwgAEEQaiEAIAJBf2oiAg0ACyABQQhqKAIAIQALIAEoAgQgABDbMyABKAIgIgRFDQAgBEEEaigCACEAAkAgBCgCCCICRQ0AA0AgACgCACIDEIkDIANB4ABBCBDuHCAAQQRqIQAgAkF/aiICDQALIARBBGooAgAhAAsgBCgCACAAEN8zIARBFEEEEO4cCyABQShBCBDuHAulAgEBfwJAAkACQAJAAkACQAJAIAAoAgAOBgECAwQGBQALIAAoAgQiABD3ASAAQcAAQQgQ7hwPCyAAQQhqEJEYDwsgACgCCCIBIAAoAgwQmS0gACgCBCABEOEzIAAoAhgiAEUNAiAAKAIAIgEQogMgAUHgAEEIEO4cIABBDEEEEO4cDwsgACgCBCIBEOINIAFBKEEIEO4cIAAoAhgiAEUNASAAKAIAIgEQogMgAUHgAEEIEO4cIABBDEEEEO4cDwsgAEEEahDoEyAAKAIEIAAoAggQ4zMgACgCGCIARQ0AIAAoAgAiARCiAyABQeAAQQgQ7hwgAEEMQQQQ7hwLDwsgACgCBCIBEOINIAFBKEEIEO4cIAAoAggiABD3ASAAQcAAQQgQ7hwLpQIBAX8CQAJAAkACQAJAAkACQCAAKAIADgYBAgMEBgUACyAAKAIEIgAQ3gEgAEHAAEEIEO4cDwsgAEEIahCSGA8LIAAoAggiASAAKAIMEJktIAAoAgQgARDhMyAAKAIYIgBFDQIgACgCACIBENkEIAFB4ABBCBDuHCAAQQxBBBDuHA8LIAAoAgQiARDjDSABQShBCBDuHCAAKAIYIgBFDQEgACgCACIBENkEIAFB4ABBCBDuHCAAQQxBBBDuHA8LIABBBGoQ6BMgACgCBCAAKAIIEOMzIAAoAhgiAEUNACAAKAIAIgEQ2QQgAUHgAEEIEO4cIABBDEEEEO4cCw8LIAAoAgQiARDjDSABQShBCBDuHCAAKAIIIgAQ3gEgAEHAAEEIEO4cC48CAQR/AkACQCAAKAIAIgEoAgBBA0YNACABKAIgIgAQqAEgAEHAAEEIEO4cIAEQhhIMAQsgASgCECIAEKgBIABBwABBCBDuHCABQQhqKAIAIQACQCABKAIMIgJFDQAgAEEMaiEAA0AgACgCACIDEKgBIANBwABBCBDuHCAAQRBqIQAgAkF/aiICDQALIAFBCGooAgAhAAsgASgCBCAAENszIAEoAiAiBEUNACAEQQRqKAIAIQACQCAEKAIIIgJFDQADQCAAKAIAIgMQjQMgA0HgAEEIEO4cIABBBGohACACQX9qIgINAAsgBEEEaigCACEACyAEKAIAIAAQ3zMgBEEUQQQQ7hwLIAFBKEEIEO4cC6UCAQF/AkACQAJAAkACQAJAAkAgACgCAA4GAQIDBAYFAAsgACgCBCIAEIMCIABBwABBCBDuHA8LIABBCGoQmxgPCyAAKAIIIgEgACgCDBCgLSAAKAIEIAEQ4TMgACgCGCIARQ0CIAAoAgAiARDeBCABQeAAQQgQ7hwgAEEMQQQQ7hwPCyAAKAIEIgEQ5Q0gAUEoQQgQ7hwgACgCGCIARQ0BIAAoAgAiARDeBCABQeAAQQgQ7hwgAEEMQQQQ7hwPCyAAQQRqELMSIAAoAgQgACgCCBDjMyAAKAIYIgBFDQAgACgCACIBEN4EIAFB4ABBCBDuHCAAQQxBBBDuHAsPCyAAKAIEIgEQ5Q0gAUEoQQgQ7hwgACgCCCIAEIMCIABBwABBCBDuHAulAgEBfwJAAkACQAJAAkACQAJAIAAoAgAOBgECAwQGBQALIAAoAgQiABD9ASAAQcAAQQgQ7hwPCyAAQQhqEJ0YDwsgACgCCCIBIAAoAgwQoC0gACgCBCABEOEzIAAoAhgiAEUNAiAAKAIAIgEQ3wQgAUHgAEEIEO4cIABBDEEEEO4cDwsgACgCBCIBEOYNIAFBKEEIEO4cIAAoAhgiAEUNASAAKAIAIgEQ3wQgAUHgAEEIEO4cIABBDEEEEO4cDwsgAEEEahCzEiAAKAIEIAAoAggQ4zMgACgCGCIARQ0AIAAoAgAiARDfBCABQeAAQQgQ7hwgAEEMQQQQ7hwLDwsgACgCBCIBEOYNIAFBKEEIEO4cIAAoAggiABD9ASAAQcAAQQgQ7hwLpQIBAX8CQAJAAkACQAJAAkACQCAAKAIADgYBAgMEBgUACyAAKAIEIgAQ6AEgAEHAAEEIEO4cDwsgAEEIahCeGA8LIAAoAggiASAAKAIMEKUtIAAoAgQgARDhMyAAKAIYIgBFDQIgACgCACIBEOAEIAFB4ABBCBDuHCAAQQxBBBDuHA8LIAAoAgQiARDnDSABQShBCBDuHCAAKAIYIgBFDQEgACgCACIBEOAEIAFB4ABBCBDuHCAAQQxBBBDuHA8LIABBBGoQwBMgACgCBCAAKAIIEOMzIAAoAhgiAEUNACAAKAIAIgEQ4AQgAUHgAEEIEO4cIABBDEEEEO4cCw8LIAAoAgQiARDnDSABQShBCBDuHCAAKAIIIgAQ6AEgAEHAAEEIEO4cC48CAQR/AkACQCAAKAIAIgEoAgBBA0YNACABKAIgIgAQqwEgAEHAAEEIEO4cIAEQkhIMAQsgASgCECIAEKsBIABBwABBCBDuHCABQQhqKAIAIQACQCABKAIMIgJFDQAgAEEMaiEAA0AgACgCACIDEKsBIANBwABBCBDuHCAAQRBqIQAgAkF/aiICDQALIAFBCGooAgAhAAsgASgCBCAAENszIAEoAiAiBEUNACAEQQRqKAIAIQACQCAEKAIIIgJFDQADQCAAKAIAIgMQ2wIgA0HgAEEIEO4cIABBBGohACACQX9qIgINAAsgBEEEaigCACEACyAEKAIAIAAQ3zMgBEEUQQQQ7hwLIAFBKEEIEO4cC6UCAQF/AkACQAJAAkACQAJAAkAgACgCAA4GAQIDBAYFAAsgACgCBCIAEIICIABBwABBCBDuHA8LIABBCGoQohgPCyAAKAIIIgEgACgCDBClLSAAKAIEIAEQ4TMgACgCGCIARQ0CIAAoAgAiARDlBCABQeAAQQgQ7hwgAEEMQQQQ7hwPCyAAKAIEIgEQ6Q0gAUEoQQgQ7hwgACgCGCIARQ0BIAAoAgAiARDlBCABQeAAQQgQ7hwgAEEMQQQQ7hwPCyAAQQRqEMATIAAoAgQgACgCCBDjMyAAKAIYIgBFDQAgACgCACIBEOUEIAFB4ABBCBDuHCAAQQxBBBDuHAsPCyAAKAIEIgEQ6Q0gAUEoQQgQ7hwgACgCCCIAEIICIABBwABBCBDuHAulAgEBfwJAAkACQAJAAkACQAJAIAAoAgAOBgECAwQGBQALIAAoAgQiABDXASAAQcAAQQgQ7hwPCyAAQQhqEKYYDwsgACgCCCIBIAAoAgwQpS0gACgCBCABEOEzIAAoAhgiAEUNAiAAKAIAIgEQpAMgAUHgAEEIEO4cIABBDEEEEO4cDwsgACgCBCIBEOoNIAFBKEEIEO4cIAAoAhgiAEUNASAAKAIAIgEQpAMgAUHgAEEIEO4cIABBDEEEEO4cDwsgAEEEahDAEyAAKAIEIAAoAggQ4zMgACgCGCIARQ0AIAAoAgAiARCkAyABQeAAQQgQ7hwgAEEMQQQQ7hwLDwsgACgCBCIBEOoNIAFBKEEIEO4cIAAoAggiABDXASAAQcAAQQgQ7hwLjwIBBH8CQAJAIAAoAgAiASgCAEEDRg0AIAEoAiAiABCvASAAQcAAQQgQ7hwgARCdEgwBCyABKAIQIgAQrwEgAEHAAEEIEO4cIAFBCGooAgAhAAJAIAEoAgwiAkUNACAAQQxqIQADQCAAKAIAIgMQrwEgA0HAAEEIEO4cIABBEGohACACQX9qIgINAAsgAUEIaigCACEACyABKAIEIAAQ2zMgASgCICIERQ0AIARBBGooAgAhAAJAIAQoAggiAkUNAANAIAAoAgAiAxD8AiADQeAAQQgQ7hwgAEEEaiEAIAJBf2oiAg0ACyAEQQRqKAIAIQALIAQoAgAgABDfMyAEQRRBBBDuHAsgAUEoQQgQ7hwLnwIBCn8jAEEQayIBJAAgACgCqAMgACgCrAMgACgC/AUiAkGEkoABEOswIQMCQCAAKAKgAy0ABEUNACADKAIIRQ0AIAMoAgQhBCABQQhqIABBpANqIgUgAkEAIAAQtSMgAEHsA2ohBiAAKALEAyEHIAAoAsADIQggACgCuAMhCSAAKAK0AyEKIAEoAgwhACABKAIIIQMDQCADQQFHDQECQCAKIAkgAEGUkoABEOwwKAABIAJHDQAgCiAJIABBpJKAARDsMEEANgABIARFDQAgCCAHIAQgBiAKIAkgAEG0koABEOwwLQAAai0AAGpBxJKAARDqMEEANgIACyABIAUgAkEBIAAQtSMgASgCBCEAIAEoAgAhAwwACwsgAUEQaiQAC4wCAQd/IwBBEGsiASQAQQAhAgJAAkAgACgCACIDKAJQIgQgACgCCCIFRg0AIAMoAlghBiADKAJUIQICQAJAIAAQwxRBCkcNAEEBIQYgAkEBaiICDQFB/I+EARD9OQALIAZBAWoiBkUNAgsCQAJAIAAQwxQiB0GAAU8NAEEBIQcMAQsCQCAHQYAQTw0AQQIhBwwBC0EDQQQgB0GAgARJGyEHCyADIAY2AlggAyACNgJUIAMgByAEaiICNgJQIAEgACgCBCAFIAJBnJCEARCrIiABIAEoAgAiADYCCCABIAAgASgCBGo2AgwgAUEIahDBK0GAgMQARyECCyABQRBqJAAgAg8LQYyQhAEQ/TkAC5ACAQN/IwBBwABrIgMkAAJAAkACQAJAIAEoAtwCIgQgAk0NACABKALYAiACQQJ0aigCACIEDQEgAyABEJcMIAMoAgQhBAJAIAMoAgAiBUEwRw0AIAEoAtwCIgUgAk0NAyABKALYAiACQQJ0aiAENgIAAkAgASgC0AIiBSABKALIAkcNACABQcgCahDJJgsgACAENgIEIABBMDYCACABIAVBAWo2AtACIAEoAswCIAVBAnRqIAI2AgAMBAsgAEEIaiADQQhqQTgQ3woaIAAgBDYCBCAAIAU2AgAMAwsgAiAEQdCLgwEQoRsACyAAQTA2AgAgACAENgIEDAELIAIgBUHgi4MBEKEbAAsgA0HAAGokAAuKAgEFfyMAQcAAayICJAAgAiABKAIAQSBqQfCThAEQwysgAigCACIDKAIIQZgBbCEEIAMoAgQhAyACKAIEIQUCQANAIARFDQEgAyAEQeh+aiIEaiIGKAIAQYmAxABGDQALIAJBCGpBEGogBkGYAWpBQGoiBEEQaikCADcDACACQQhqQQhqIARBCGopAgA3AwAgAiAEKQIANwMIIAJBBDYCJCAAIAEoAgQgASgCCCACQQhqIAJBJGoQvRkgBSAFKAIAQX9qNgIAIAJBwABqJAAPCyAFIAUoAgBBf2o2AgAgAkEANgI0IAJBATYCKCACQaCUhAE2AiQgAkIENwIsIAJBJGpBqJSEARCtLgAL+wECA38BfiMAQcAAayICJAAgAkEgakEQaiABQRBqKQIANwMAIAJBIGpBCGogAUEIaikCADcDACACIAEpAgA3AyAgAkEIakEDQQRBCBDnIkEAIQEgAkEANgIYIAIgAikDCDcDECACQRBqQQMQkDAgAigCGCIDQQNqIQQgAigCFCADQQN0aiEDAkADQCABQRhGDQEgAyABaiACQSBqIAFqKQIANwIAIAFBCGohAQwACwsgAikDECEFIAJBIGpBCGoiASAENgIAIAIgBEU6ACwgAiAFNwMgIAJBIGoQvAggAEEIaiABKQMANwIAIAAgAikDIDcCACACQcAAaiQAC4gCAQR/IwBBEGsiAyQAIAMgAjYCDCADIAE2AghBjwIhAkEAIQECQANAIAJBAkkNASACQQF2IgQgAWohBSABIAUgA0EIaiAFQQR0IgZBqJiIAWooAgAgBkGsmIgBaigCABDQNEH/AXFBAUYbIQEgAiAEayECDAALC0EAIQICQAJAIANBCGogAUEEdCIEQaiYiAFqKAIAIARBrJiIAWooAgAQ0DRB/wFxIgQNACABIARB/wFGaiICQY8CTw0BIAJBBHQiAkG0mIgBaigCACEFIAJBsJiIAWooAgAhAgsgACAFNgIIIAAgAjYCBCAAQQA6AAAgA0EQaiQADwtBjwJBjwJBmLqIARChGwALhAIBBH8jAEEQayIDJAAgAyACNgIMIAMgATYCCEEHIQJBACEBAkADQCACQQJJDQEgAkEBdiIEIAFqIQUgASAFIANBCGogBUEEdCIGQdiqiQFqKAIAIAZB3KqJAWooAgAQ0DRB/wFxQQFGGyEBIAIgBGshAgwACwtBACECAkACQCADQQhqIAFBBHQiBEHYqokBaigCACAEQdyqiQFqKAIAENA0Qf8BcSIEDQAgASAEQf8BRmoiAkEHTw0BIAJBBHQiAkHkqokBaigCACEFIAJB4KqJAWooAgAhAgsgACAFNgIIIAAgAjYCBCAAQQA6AAAgA0EQaiQADwtBB0EHQciriQEQoRsAC4cCAgZ/AX4jAEHAAGsiAiQAIAEpAgghCBCuMiEDIAIgASgCABA/IANBOGogAkE4aikDADcDACADQTBqIAJBMGopAwA3AwAgA0EoaiACQShqKQMANwMAIANBIGogAkEgaikDADcDACADQRhqIAJBGGopAwA3AwAgA0EQaiACQRBqKQMANwMAIANBCGogAkEIaiIEKQMANwMAIAMgAikDADcDACABKAIEIQUQsTIhASAFKAIMIQYgBSgCECEHIAIgBRCmESABQRBqIAc2AgAgASACKQIANwIAIAIgBjYCDCABQQhqIAQpAgA3AgAgACABNgIEIAAgAzYCACAAIAg3AgggAkHAAGokAAubAgECfwJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIBQX5qIgJBECACQSNJGw4iAQICAgICAgICAgICAgICAgMCAgICAgICAgQFBgcICQICCgALIABBBGoQgDYPCwJAIAAtAAgiAkEFSw0AIAJBAUcNAQsgAEEQahDHHgsPCyAAQRBqEMceAkAgAQ0AIABBCGoQxx4PCyAAQQRqEIA2DwsgAEEIahDHHiAAQRBqEMceDwsgAEEIahDHHiAAQRBqEMceDwsgAEEIahDHHg8LIAAoAhAiAigCACACQQRqKAIAEOozIAJBEEEEEO4cIABBCGoQxx4PCyAAQQhqEMceDwsgAEEIahDHHiAAQRBqEMceDwsgAEEIahDHHgv2AQIEfwF+IwBBIGsiBSQAAkAgACgCACIGIAFrIAJPDQBBACEHAkAgASACaiICIAFPDQBBAEEAEPg5AAsCQCADIARqQX9qQQAgA2txrSACrX4iCUIgiKdFDQBBAEEAEPg5AAsCQAJAIAmnIgFBgICAgHggA2tLDQACQAJAIAYNAEEAIQQMAQsgBSAGIARsNgIcIAUgACgCBDYCFCADIQQLIAUgBDYCGCAFQQhqIAMgASAFQRRqEPgYIAUoAghBAUcNASAFKAIQIQggBSgCDCEHCyAHIAgQ+DkACyAFKAIMIQMgACACNgIAIAAgAzYCBAsgBUEgaiQAC5oCAQJ/AkACQAJAAkACQAJAAkAgACgCACICQXtqIgNBBCADQQZJGw4GAAECAwQFAAsgAEEANgIYDwsCQCAAKAIIQQNHDQAgASAAKAIMENEDCyABIAAoAigQ0QMPCyAAQQA2AiAgASAAKAIoENEDDwsgAEEoaiEDAkAgACgCCEEDRw0AIAEgACgCDBDRAwsgAygCAEGAgICAeEYNAiADIAEQqyoPCyAAQSBqIQMCQCACQQNHDQAgASAAKAIEENEDCwJAIAMoAgBBB0YNACADIAEQ7gwLIAAoAmggARDuDCAAKAJIQYCAgIB4Rg0BIABByABqIAEQqyoPCwJAIAAoAghBA0cNACABIAAoAgwQ0QMLIAAoAiggARCTEQsL1gIBA39BACECQQAhAwJAIAC9Qv///////////wCDQv/////////3/wBVDQACQAJAIACdIgAgAEQAAAAAAADwPaKdRAAAAAAAAPBBoqEgAKYiAEQAAAAAAADwQaAgACAARAAAAAAAAAAAYxsiAEQAAAAAAADwQWMgAEQAAAAAAAAAAGYiA3FFDQAgAKshBAwBC0EAIQQLQX8gBEEAIAMbIABEAADg////70FkGyEDCwJAIAG9Qv///////////wCDQv/////////3/wBVDQACQAJAIAGdIgAgAEQAAAAAAADwPaKdRAAAAAAAAPBBoqEgAKYiAEQAAAAAAADwQaAgACAARAAAAAAAAAAAYxsiAEQAAAAAAADwQWMgAEQAAAAAAAAAAGYiAnFFDQAgAKshBAwBC0EAIQQLQX8gBEEAIAIbIABEAADg////70FkGyECCyACIANytwvWAgEDf0EAIQJBACEDAkAgAL1C////////////AINC//////////f/AFUNAAJAAkAgAJ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjGyIARAAAAAAAAPBBYyAARAAAAAAAAAAAZiIDcUUNACAAqyEEDAELQQAhBAtBfyAEQQAgAxsgAEQAAOD////vQWQbIQMLAkAgAb1C////////////AINC//////////f/AFUNAAJAAkAgAZ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjGyIARAAAAAAAAPBBYyAARAAAAAAAAAAAZiICcUUNACAAqyEEDAELQQAhBAtBfyAEQQAgAhsgAEQAAOD////vQWQbIQILIAIgA3O3C9YCAQN/QQAhAkEAIQMCQCAAvUL///////////8Ag0L/////////9/8AVQ0AAkACQCAAnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMbIgBEAAAAAAAA8EFjIABEAAAAAAAAAABmIgNxRQ0AIACrIQQMAQtBACEEC0F/IARBACADGyAARAAA4P///+9BZBshAwsCQCABvUL///////////8Ag0L/////////9/8AVQ0AAkACQCABnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMbIgBEAAAAAAAA8EFjIABEAAAAAAAAAABmIgJxRQ0AIACrIQQMAQtBACEEC0F/IARBACACGyAARAAA4P///+9BZBshAgsgAiADcbcLkwIBA38CQAJAAkACQAJAAkACQCAAKAIADggAAQIDBgYEBQALIABBADYCGCAAKAIgIAEQ0ggPCyAAQQA2AhggACgCICABEOseDwsgACgCBCIAQQRqKAIAIABBCGooAgAgARCyJg8LIAAoAgQiAEEEaigCACAAQQhqKAIAIAEQsiYPCyAAKAIEIgBBADYCECAAKAIoQTBsIQIgACgCJCIAQRhqIQMDQCACRQ0CAkAgACgCAA0AIANBADYCAAsCQCAAKAIoIgRFDQAgBCABEKM/CyAAQTBqIQAgAkFQaiECIANBMGohAwwACwsCQCAAKAIEIgAoAgANACAAQQA2AhgLIAAtAEVBA0YNACAAQSBqIAEQ5iALC4ECAgZ/A34CQCAAKAIMDQBBAA8LIAEpAwAgASgCCBCiLiEIIAAoAgAiAkFoaiEDIAhCGYhCgYKEiJCgwIABfiEJIAAoAgQiBCAIp3EhAEEAIQUDfyACIABqKQAAIgogCYUiCEJ/hSAIQv/9+/fv37//fnyDQoCBgoSIkKDAgH+DIQgCQAJAAkADQCAIUCIGDQEgASADQQAgCHqnQQN2IABqIARxIgdrQRhsahCxPw0CIAhCf3wgCIMhCAwACwsgCiAKQgGGg0KAgYKEiJCg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IAZBKBDfChogBiABQSgQ8T1BKGohBiABIAJBGGpBKBDfCkFYaiEBIARBf2ohBAwBCwsgACAHQcjUoQEQoRsACyACQcAAaiQADwsgBSAFQbjUoQEQoRsAC5cCAgF/AX4jAEGgAWsiAyQAIAMgATYCCCADIAA2AgQgAyACNgIMIANBB61CIIYiBCADQQxqrYQ3AzggA0HaAK1CIIYgA0EEaq2ENwMwIAMgBCADQQhqrYQ3AyggA0EDOgCcASADQQA2ApgBIANCoICAgCA3ApABIANBAjYCiAEgA0ECNgKAASADQQM6AHwgA0EINgJ4IANCoICAgBA3AnAgA0KAgICAwAA3AmggA0ECNgJgIANBAzoAXCADQQA2AlggA0IgNwJQIANBAjYCSCADQQI2AkAgA0EDNgIkIANBAzYCFCADQaj1gAE2AhAgAyADQcAAajYCICADQQM2AhwgAyADQShqNgIYIANBEGpBwPWAARCtLgALkgIBBn8jAEEgayIBJABBASECAkAgABC1FiIDRQ0AIAFBGGoiBEEAKQOYjaEBNwMAIAFBEGoiBUEAKQOQjaEBNwMAIAFBACkDiI2hATcDCCABQQhqIAMQiAchBiABQQhqEOwOAkAgBg0AIARBACkD+MOZATcDACAFQQApA/DDmQE3AwAgAUEAKQPow5kBNwMIIAFBCGogAxCIByEDIAFBCGoQ7A4gAw0BIAAQuTIhAgwBCyAAIAApAxg3A1AgACgCACEDIABBJTYCACABQQhqQQxqIABBDGopAgA3AgAgAUEIakEUaiAAQRRqKAIANgIAIAEgACkCBDcCDCABIAM2AgggAUEIahDsDgsgAUEgaiQAIAILigIBA38jAEEwayIDJAACQCABIAAoAswCQQhxQQN2EJYXDQAgA0EQaiABEIIFIAMoAhQhBCADKAIQIQUgA0GqgYCAeDYCGCAAIAUgBCADQRhqEIgqCwJAIAAtANQCQQJHDQAgAC0A2AJBAXENAAJAIAEoAgBBGkcNACABQQhqEN8ORQ0AIAMgARCCBSADKAIEIQEgAygCACECIANBhoGAgHg2AhggACACIAEgA0EYahCaFgwBCyABIAAoAswCQQhxQQN2EJYXDQAgASACEO0nRQ0AIANBCGogARCCBSADKAIMIQEgAygCCCECIANBqoGAgHg2AhggACACIAEgA0EY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AgsgAUEMaiECIAFBCGohAQwBCyABQQxqIQIgAUEIaiEBCyAAIAIoAgA2AgQgACABKAIANgIAC+cBAQF/IwBBEGsiCCQAIAggACgCFCABQQcgACgCGCgCDBELADoADCAIIAA2AgggCEEAOgANIAhBADYCBCAIQQRqIAIgAxDHDCAEIAUQxwwgBiAHEMcMKAIAIgFBAEcgCC0ADCIHciEAAkAgAUUNACAHQQFxDQACQAJAIAFBAUYNACAIKAIIIQEMAQsgCCgCCCEBIAgtAA1FDQAgAS0AHEEEcQ0AQQEhACABKAIUQeHRoQFBASABKAIYKAIMEQsADQELIAEoAhRBvOKiAUEBIAEoAhgoAgwRCwAhAAsgCEEQaiQAIABBAXEL8QEBAn8jAEEQayIDJAACQAJAAkACQCACQX9MDQAgAkHZ////B08NASACQSdqQfj///8HcSIEQfH///8HTw0CQQggBEEPakF4cRDHOCIERQ0DIARBATYCACAEIAI2AiAgBCAAKQMANwMIIARBEGogAEEIaikDADcDACAEQRhqIABBEGopAwA3AwAgBEEoaiABIAIQ3woaIANBEGokACAEDwtBkMOhAUErIANBD2pByICCAUHIgYIBELEYAAtBkMOhAUErIANBD2pByICCAUHYgYIBELEYAAtBkMOhAUErIANBD2pByICCAUG4gYIBELEYCwAL1wECBX8BfiMAQSBrIgIkACACQQhqQQFBAUECEOciQQAhAyACQQA2AhggAiACKQMINwMQIAJBEGpBARCRMCABQYD+A3FBCHYhBCACKAIYIgVBAWohBiACKAIUIAVBAXRqIQUCQANAIANBAXENASAFIAE6AABBASEDIAVBAWogBDoAACAFQQJqIQUMAAsLIAIpAxAhByACQRBqQQhqIgUgBjYCACACIAZFOgAcIAIgBzcDECACQRBqEKkIIABBCGogBSkDADcCACAAIAIpAxA3AgAgAkEgaiQAC/YBAQJ/IwBBIGsiAyQAQQMhBAJAAkACQAJAAkAgASACQfiFoQFBAxCgMUUNAEHJ84cBIQIMAQtBCCEEAkAgASACQaTzhwFBCBCgMUUNAEHB84cBIQIMAQtBBSEEAkAgASACQZmelwFBBRCgMUUNAEG884cBIQIMAQsgA0EUakHcu4cBQRAQ8g0gAy0AFA0CIAMoAhgiBEUN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mwoCQCACKAIIIgFBA0cNAEEDIQEMAgsgACACKQIMNwIEIABBFGogAkEIakEUaigCADYCACAAQQxqIAJBCGpBDGopAgA3AgAMAQsgACACKQIMNwIEIABBFGogAkEIakEUaigCADYCACAAQQxqIAJBCGpBDGopAgA3AgALIAAgATYCACACQSBqJAAL0gEBB38gAiAAKAIEIAAoAgAQyiohAyAAQQxBCCACIAAoAgwgACgCCBDKKiIEG2ohBSAAQQhBDCAEG2ohBCACIAQgACADQQFzQQJ0aiIGIAUgAiAFKAIAIAAgA0ECdGoiACgCABDKKiIDGyACIAQoAgAgBigCABDKKiIHGyIIKAIAIAAgBSAGIAcbIAMbIgkoAgAQyiohAiABIAUgACADGygCADYCACABIAggCSACGygCADYCBCABIAkgCCACGygCADYCCCABIAYgBCAHGygCADYCDAv7AQECfyMAQTBrIgIkAAJAAkAgACkDAEL///////////8Ag0KAgICAgICA+P8AUw0AIAJBATYCFCACQaTXoQE2AhAgAkIBNwIcIAJBgAI2AiwgAiAANgIoIAIgAkEoajYCGCABKAIUIAEoAhggAkEQahCKNSEDDAELIAJBADoADCACIAE2AghBASEDIAJBATYCFCACQaTXoQE2AhAgAkIBNwIcIAJBgAI2AiwgAiAANgIoIAIgAkEoajYCGCACQQhqIAJBEGoQuTUNAAJAIAItAAwNACABKAIUQc/dmAFBAiABKAIYKAIMEQsADQELQQAhAwsgAkEwaiQAIAML0wECAn8BfiABQRRsIQECQANAIAFFDQEgACgCDCAAQRBqKAIAIAIQ1zggAiAAKAIEIAAoAggQzg0gAiACKAI4QQFqNgI4IAJC/wEgAigCPCIDQQN0QThxrYYgAikDMIQiBTcDMAJAAkBBCCADayIEQQFLDQAgAiACKQMYIAWFNwMYIAIQrxIgAikDMCEFIAJC/wEgBEEDdK2INwMwIAIgBSACKQMAhTcDACADQXlqIQMMAQsgA0EBaiEDCyAAQRRqIQAgAiADNgI8IAFBbGohAQwACwsL1wECBX8BfiMAQRBrIgEkACAAKAIEIQICQCAAKAIIIgNFDQAgAkEkaiECA0ACQCACQWRqKQMAIgZCA4NCAFINACABIAanIgQ2AgwgAUEMahD1ByAE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IAJBAjYCHCACQdT+gAE2AhggAkICNwIkIAJBB61CIIYgAK2ENwMQIAJBPa1CIIYgAkEHaq2ENwMIIAIgAkEIajYCICABKAIUIAEoAhggAkEYahCdByEADAELIAJBATYCHCACQZD/gAE2AhggAkIBNwIkIAJBB61CIIYgAK2ENwMIIAIgAkEIajYCICABKAIUIAEoAhggAkEYahCdByEACyACQTBqJAAgAAvaAQIDfwJ+IwBBIGsiASQAIAAoAgAiAigCACEDIAJBADYCACADKAIQIQIgA0EANgIQAkAgAkUNACACEQIAIQQCQCAAKAIEIgAoAgAiAykDACIFUA0AIAVCA4NCAFINACABIAWnIgM2AgggAUEIahD1ByADIAMoAgAiAkF/ajYCAAJAIAJBAUcNACADIAMoAiAQvi8LIAAoAgAhAwsgAyAENwMAIAFBIGokAEEBDwsgAUEANgIYIAFBATYCDCABQejpogE2AgggAUIENwIQIAFBCGpBrNehARCtLgAL2wECA38BfiMAQTBrIgIkACABKAIUIQMgASkCBCEFIAEoAhAhBCACQRBqIAEQyhwgAiAENgIgIAIgBTcCGCACIAIpAxA3AiggAiAEIANBA3RqNgIkIAJBCGogAkEYahCAFgJAIAIoAggiAQ0AQcT4gwEQ/TkACyACKAIMIQQgACACKQIYNwIYIAAgATYCMCAAQgQ3AhAgAEIANwIIIABCgICAgMAANwIAIABBKGogAkEoaikCADcCACAAQSBqIAJBIGopAgA3AgAgACABIARBA3RqNgI0IAJBMGokAAvcAQIHfwJ+IwBB4ABrIgIkACABKAIQIQMgASgCDCEEIAEoAgghBQJAAkAgASkDACIJQgODQgBSDQAgCaciBiAGKAIAIgZBAWo2AgAgBkF/TA0BCyABLQAUIQcCQAJAIAEoAhgiBg0AQQAhAQwBCxCrMiEBIAYpAgQhCiAGKAIAIQYQrDIhCCACIAYQhgEgCCACQeAAEN8KIQYgASAKNwIEIAEgBjYCAAsgACABNgIYIAAgBzoAFCAAIAM2AhAgACAENgIMIAAgBTYCCCAAIAk3AwAgAkHgAGokAA8LAAuFAgECfwJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIBQX5qIgJBECACQSNJGw4iAQICAgICAgICAgICAgICAgMC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DQAgBCAGIAJJaiEECyAEIAFrIgEgA04NAiABQX9zQR92IQQMAwsgBCABQQF2IgYgBGoiByAFIAdBAnRqKAIAIAJLGyEEIAEgBmshAQwACwtBiIyZAUE8QcSMmQEQ0ycACyAAIAE2AgQgACAENgIAC8gBAQF/IwBBwABrIgMkACADQQxqIAAgARChIwJAIAMoAgxBgICAgHhGDQAgA0EYakEIaiADQQxqQQhqKAIANgIAIAMgAykCDDcDGAJAIAEgAk8NACAAIAIQ6xtFDQAgA0E0aiAAIAIQoSMCQCADKAI0QYCAgIB4Rg0AIANBKGpBCGogA0E0akEIaigCADYCACADIAMpAjQ3AyggA0EYaiADQShqEIIXDAELQbCImQEQ/TkACyAAIAIgA0EYahDNHwsgA0HAAGokAAvIAQEBfyMAQcAAayIDJAAgA0EMaiAAIAEQoiMCQCADKAIMQYCAgIB4Rg0AIANBGGpBCGogA0EMakEIaigCADYCACADIAMpAgw3AxgCQCABIAJPDQAgACACEOwbRQ0AIANBNGogACACEKIjAkAgAygCNEGAgICAeEYNACADQShqQQhqIANBNGpBCGooAgA2AgAgAyADKQI0NwMoIANBGGogA0EoahCCFwwBC0GQiZkBEP05AAsgACACIANBGGoQzx8LIANBwABqJAALwwECA38BfiMAQRBrIgEkAAJAAkAgAC0AFEECRw0AIAAoAgAiAEEYahC1EQJAIAApAwAiBEIDg0IAUg0AIAEgBKciAjYCDCABQQxqEPUHIAIgAigCACIDQX9qNgIAIANBAUcNACACIAIoAiAQ0y8LIABBMEEIEO4cDAELIAApAwAiBEIDg0IAUg0AIAEgBKciADYCCCABQQhqEPUHIAAgACgCACICQX9qNgIAIAJBAUcNACAAIAAoAiAQ0y8LIAFBEGokAAvFAQIDfwF+IwBBEGsiASQAAkACQCAAKAIAIgItACVBAkcNACACQQRqKAIAIQACQCACKAIIIgNFDQADQCAAEO0EIABBOGohACADQX9qIgMNAAsgAkEEaigCACEACyACKAIAIAAQ4zMMAQsCQCACKQMIIgRCA4NCAFINACABIASnIgA2AgwgAUEMahD1ByAAIAAoAgAiA0F/ajYCACADQQFHDQAgACAAKAIgENMvCyACQSBqELYRCyACQShB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9QcgACAAKAIAIgJBf2o2AgAgAkEBRw0BIAAgACgCIBDTLwwBCyAAKQMIIgNCA4NCAFINACABIAOnIgA2AgwgAUEMahD1ByAAIAAoAgAiAkF/ajYCACACQQFHDQAgACAAKAIgENMvCyABQRBqJAALxgECAn8BfiMAQRBrIgEkAAJAAkACQAJAIAAoAgAOAgECAAsgACgCBCIAEMcBIABBwABBCBDuHAwCCyAAKQMIIgNCA4NCAFINASABIAOnIgA2AgggAUEIahD1ByAAIAAoAgAiAkF/ajYCACACQQFHDQEgACAAKAIgENMvDAELIAApAwgiA0IDg0IAUg0AIAEgA6ciADYCDCABQQxqEPUHIAAgACgCACICQX9qNgIAIAJBAUcNACAAIAAoAiAQ0y8LIAFBEGokAAu8AQECfwJAIAEoAggiAkUNACAAIAEoAgQiAykDADcDACAAQQhqIANBCGopAwA3AwAgAEEQaiADQRBqKQMANwMAIABBGGogA0EYaikDADcDACAAQSBqIANBIGopAwA3AwAgAEEoaiADQShqKQMANwMAIABBMGogA0EwaikDADcDACAAQThqIANBOGopAwA3AwAgAyADQcAAaiACQQZ0QUBqEPE9GiABIAJBf2o2AggPC0EAQQBBxNmaARCnGwALxgECAn8BfiMAQRBrIgEkAAJAAkACQAJAIAAoAgAOAgECAAsgACgCBCIAENoBIABBwABBCBDuHAwCCyAAKQMIIgNCA4NCAFINASABIAOnIgA2AgggAUEIahD1ByAAIAAoAgAiAkF/ajYCACACQQFHDQEgACAAKAIgENMvDAELIAApAwgiA0IDg0IAUg0AIAEgA6ciADYCDCABQQxqEPUHIAAgACgCACICQX9qNgIAIAJBAUcNACAAIAAoAiAQ0y8LIAFBEGokAAvGAQICfwF+IwBBEGsiASQAAkACQAJAAkAgACgCAA4CAQIACyAAKAIEIgAQogEgAEHAAEEIEO4cDAILIAApAwgiA0IDg0IAUg0BIAEgA6ciADYCCCABQQhqEPUHIAAgACgCACICQX9qNgIAIAJBAUcNASAAIAAoAiAQ0y8MAQsgACkDCCIDQgODQgBSDQAgASADpyIANgIMIAFBDGoQ9QcgACAAKAIAIgJBf2o2AgAgAkEBRw0AIAAgACgCIBDTLwsgAUEQaiQA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IQILAkAgA0ETRg0AIAAoAgQgAkEwbGoiBCADNgIAIAQgASkCBDcCBCAEQQxqIAFBDGopAgA3AgAgBEEUaiABQRRqKQIANwIAIARBHGogAUEcaikCADcCACAEQSRqIAFBJGopAgA3AgAgBEEsaiABQSxqKAIANgIAIAJBAWohAgsgACACNgIIC8UBAgN/AX4jAEEQayIBJAACQCAAKQMQIgRCA4NCAFINACABIASnIgI2AgggAUEIahD1ByACIAIoAgAiA0F/ajYCACADQQFHDQAgAiACKAIgENMvCwJAAkACQCAAKAIADgMAAgECCyAAKQMIIgRCA4NCAFINASABIASnIgA2AgwgAUEMahD1ByAAIAAoAgAiAkF/ajYCACACQQFHDQEgACAAKAIgENMvDAELIAAoAgQiABDXASAAQcAAQQgQ7hwLIAFBEGokAAvDAQIDfwJ+IwBBIGsiAiQAAkACQCAALQAlQQJHDQAgASAAENkFDAELIAJBCGogAEEIahCmJyABKAIYIQMgAikDCCEFIAEgAigCEDYCGCABKQMQIQYgASAFNwMQIAAoAiAgARCmEgJAIAEpAxAiBVANACAFQgODQgBSDQAgAiAFpyIANgIcIAJBHGoQ9QcgACAAKAIAIgRBf2o2AgAgBEEBRw0AIAAgACgCIBDTLwsgASADNgIYIAEgBjcDEAsgAkEgaiQAC7gBAQZ/IwBB4ABrIgMkAAJAIAAoAggiBCABRg0AIAAoAgQiBSABQdgAbGohBiAFIARB2ABsaiEEIAIoAgQhASACKAIMIQcDQCABIAdGDQEgAiABQdgAaiIFNgIEIAEoAgAiCEENRg0BIANBDGogAUEEakHUABDfChogBCAINgIAIARBBGogA0EMakHUABDfChogACAAKAIIQQFqNgIIIAUhASAEQdgAaiIEIAZHDQALCyADQeAAaiQAC8ABAgZ/BH4jAEEgayIDJAACQCACIAFPDQAgACACQRxsaiICQQhqIgEpAgAhCSACQRBqIgQpAgAhCiACQRhqIgUoAgAhBiAAKQIAIQsgACACKQIANwIAIABBGGoiBygCACEIIAcgBjYCACAAQRBqIgYpAgAhDCAGIAo3AgAgAEEIaiIAKQIAIQogACAJNwIAIAUgCDYCACAEIAw3AgAgASAKNwIAIAIgCzcCACADQSBqJAAPCyACIAFBlLOhARChGwALyQEBAX8jAEEQayILJAAgACgCFCABIAIgACgCGCgCDBELACECIAtBADoADSALIAI6AAwgCyAANgIIIAtBCGogAyAEIAUgBhDOCiAHIAggCSAKEM4KIQogCy0ADSICIAstAAwiAXIhAAJAIAJBAUcNACABQQFxDQACQCAKKAIAIgAtABxBBHENACAAKAIUQfuvlwFBAiAAKAIYKAIMEQsAIQAMAQsgACgCFEHQ0aEBQQEgACgCGCgCDBELACEACyALQRBqJAAgAEEBcQu2AQEFfyMAQSBrIgIkACACQQhqIAFBBEEEEKEiIAJBADYCHCACIAIpAwg3AhQgAkEUaiABEPQvIAFBASABQQFLGyIDQX9qIQQgAigCGCACKAIcIgVBAnRqIQYCQAJAA0ACQCAEDQAgBSADaiEEIAENAiAEQX9qIQQMAwsgBkEANgIAIARBf2ohBCAGQQRqIQYMAAsLIAZBADYCAAsgACACKQIUNwIAIABBCGogBDYCACACQSBqJAALwAEBBH8jAEEwayIDJABBACEEAkAgAigCECIFIAIoAhQiBksNACAAQQRqIQACQCACKAIAQX9qQQJJDQAgA0EMaiAAIAIoAgggAigCDCAFIAYQ6wggAygCDCIEQQFHDQEgAygCECADKAIUTQ0BIANBADYCKCADQQE2AhwgA0GslYMBNgIYIANCBDcCICADQRhqQeSEgwEQrS4ACyAFIAIoAgxPDQAgAC0AACACKAIIIAVqLQAARiEECyADQTBqJAAgBAuxAQEBfyMAQSBrIgMkAAJAIAFB/wFxRQ0AIANBEGpCAUIAIAFBf2oiAUH/AHEQxBwgACABQYABcUEDdmoiASABKQMAIAMpAxCENwMAIAFBCGoiASABKQMAIANBEGpBCGopAwCENwMACyADQgFCACACQf8AcRDEHCAAIAJBgAFxQQN2aiICIAIpAwAgAykDAIQ3AwAgAkEIaiICIAIpAwAgA0EIaikDAIQ3AwAgA0EgaiQAC88BAQN/IwBBIGsiAiQAIAJBADoAECACQuSAgICgHzcCCCACQoqAgICgATcCACACQRRqIAIgARCEAgJAIAIoAhRBgICAgHhGDQAgAigCHCIBRQ0AIAFBBHQhAyACKAIYQQxqIQEDQCABQQA6AAAgAUEQaiEBIANBcGoiAw0ACwsgAkEUakEBEIMEAkACQCACKAIUIgFBgICAgHhHDQAgAEECOgAMDAELIAAgAigCGCIDIAIoAhwiBBCEFSADIAQQ2i0gASADEIs6CyACQSBqJAALswEBBH8CQAJAAkAgAS0AACICIAFBfmotAAAiA0cNACABLQABIgQgAUF/ai0AAEkNAQwCCyACIANPDQEgAS0AASEECyABQXxqIQEgBEH/AXEhBQJAA0AgAUEEaiABQQJqIgMvAAA7AAAgAyAARg0BAkACQCACIAEtAAAiA0cNACAFIAFBAWotAABJDQEMAwsgAiADTw0CCyABQX5qIQEMAAsLIAFBAmogBEEIdCACcjsAAA8LC6ABAQV+IAAgACkDGCIBQhCJIAEgACkDCHwiAYUiAkIViSACIAApAxAiAyAAKQMAfCIEQiCJfCIChSIFQhCJIAUgASADQg2JIASFIgN8IgFCIIl8IgSFIgUgAiABIANCEYmFIgF8IgJCIIl8IgM3AwAgACAFQhWJIAOFNwMYIAAgAUINiSAChSIBQhGJIAQgAXwiAYU3AxAgACABQiCJNwMIC9ABAQZ/IwBBEGsiASQAIAFBEBD9HCABKAIIIQIgASgCBCEDAkACQCABKAIAIgRFDQAgASgCDCEFIARB/wEgA0EJahDvERoMAQsLIAFBCGoiBiACNgIAIAEgBTYCDCABIAM2AgQgASAENgIAIAEQtygQxAggARC4KBDECCABELkoEMQIIAEQuigQxAggARC7KBDECCABELwoEMQIIAEQvSgQxAggARC+KBDECCABEL8oEMQIIABBCGogBikCADcCACAAIAEpAgA3AgAgAUEQaiQAC9cBAAJAIAEgAkGAkqEBQQIQwjFFDQBB2QAPCwJAIAEgAkHqj6EBQQYQwjFFDQBB2gAPCwJAIAEgAkGckqEBQQIQwjFFDQBB2wAPCwJAIAEgAkH4jaEBQQoQwjFFDQBB3AAPCwJAIAEgAkHmhqEBQQIQwjFFDQBB/wAPCwJAIAEgAkGPhaEBQQUQwjFFDQBBlgEPCwJAIAEgAkHNhqEBQQkQwjFFDQBB/QAPCwJAIAEgAkG1/qABQQoQwjFFDQBB/AAPC0H+AEGcfyABIAJBuYahAUEJEMIxGwu5AQIDfwF+IwBBEGsiASQAIABBGGohAgJAAkAgAC0ALEECRw0AIAIQkBEMAQsgAikDACIEQgODQgBSDQAgASAEpyICNgIMIAFBDGoQ9QcgAiACKAIAIgNBf2o2AgAgA0EBRw0AIAIgAigCIBDTLwsCQCAAKQMAIgRCA4NCAFINACABIASnIgA2AgggAUEIahD1ByAAIAAoAgAiAkF/ajYCACACQQFHDQAgACAAKAIgENMvCyABQRBqJAALxwEBA38CQCAAKAIIIgFFDQAgACgCBCEAA0ACQAJAAkACQCAAKAIADgIBAgALIABBBGooAgAiAhCICSACQShBCBDuHCAAQRhqKAIAIgJFDQIgAigCACIDEI0DIANB4ABBCBDuHCACQQxBBBDuHAwCCyAAQQhqEKQPIABBKGooAgAiAhCICSACQShBCBDuHAwBCyAAQRBqEJMYIABBMGooAgAiAkUNACACEKgBIAJBwABBCBDuHAsgAEE4aiEAIAFBf2oiAQ0ACwsLuQECA38BfiMAQRBrIgEkACAAQRhqIQICQAJAIAAtACxBAkcNACACEJURDAELIAIpAwAiBEIDg0IAUg0AIAEgBKciAjYCDCABQQxqEPUHIAIgAigCACIDQX9qNgIAIANBAUcNACACIAIoAiAQ0y8LAkAgACkDACIEQgODQgBSDQAgASAEpyIANgIIIAFBCGoQ9QcgACAAKAIAIgJBf2o2AgAgAkEBRw0AIAAgACgCIBDTLwsgAUEQaiQAC88BAQF/IAAQhB4gACgCBCIAQRRqIgEoAgAgAEEYaigCABDMLSAAKAIQIAEoAgAQizoCQCAAKAIAQQJGDQAgACgCBCAAQQhqKAIAEPY5CyAAKAIcIABBIGooAgAQgjogAEEsaiIBKAIAIABBMGooAgAQzS0gACgCKCABKAIAEIA6IABBOGoiASgCACAAQTxqKAIAEOIbIAAoAjQgASgCABCMOiAAQcQAaiIBKAIAIABByABqKAIAEOoQIAAoAkAgASgCABCNOiAAQdAAQQQQ7hwLyAEBA38CQCAARQ0AIAAoAghBDGwhAiAAKAIEIQADQCACRQ0BAkACQCAAKAIAIgNFDQAgAyABEJ0/DAELAkACQAJAAkACQCAAKAIEIgMoAgBBe2oiBEEEIARBBkkbDgYFBAMCAQAFCyABIANBCGoQkTQgAygCKCABEKIeDAQLIAMgARDCLAwDCyADQQhqIAEQ3DYMAgsgAygCKCABEJ0/DAELIAEgA0EIahCRNCADKAIoIAEQnT8LIABBDGohACACQXRqIQIMAAsLC7gBAgV/An4jAEEQayICJABBASEDAkAgACkDACIHIAEpAwAiCFENAEEAIQMgB6ciBEEDcSIFIAinIgZBA3FHDQACQCAFRQ0AIAcQsB4gCBCwHlINASACQQhqIAAQyRMgAigCDCEDIAIoAgghACACIAEQyRMgACADIAIoAgAgAigCBBCgMSEDDAELIAQpAwggBikDCFINACAEQShqIAQoAiAgBkEoaiAGKAIgEKAxIQMLIAJBEGokACADC7YBAgJ/AX4jAEEQayIEJAACQAJAIAIgA2pBf2pBACACa3GtIAGtfiIGQiCIpw0AIAanIgNBgICAgHggAmtLDQACQCADDQAgACACNgIIQQAhAiAAQQA2AgQMAgsgBEEIaiACIAMQ7i8CQCAEKAIIIgVFDQAgACAFNgIIIAAgATYCBEEAIQIMAgsgACADNgIIIAAgAjYCBEEBIQIMAQsgAEEANgIEQQEhAgsgACACNgIAIARBEGokAAvAAQEDfyMAQTBrIgQkAAJAIAIoAhAiBSACKAIUIgZLDQAgAEEEaiEAAkACQCACKAIAQX9qQQJJDQAgBEEMaiAAIAIoAgggAigCDCAFIAYQ6wggBCgCDEEBRw0CIAQoAhAgBCgCFE0NASAEQQA2AiggBEEBNgIcIARBrJWDATYCGCAEQgQ3AiAgBEEYakHkhIMBEK0uAAsgBSACKAIMTw0BIAAtAAAgAigCCCAFai0AAEcNAQsgAxC0HgsgBEEwaiQAC7kBAQF/IwBBEGsiBiQAAkACQCAFIARJDQAgBSADSw0BIAZCATcCCAJAAkAgASgCQCIDIAUgBGsiBU0NAEEAIQUMAQsgBiABIAZBCGogAiAEaiAFIAEoAjwgAyABKAIwERUAQQAhBSAGKAIAQQFxRQ0AIAAgBigCBCAEaiIFNgIEIAAgBSADajYCCEEBIQULIAAgBTYCACAGQRBqJAAPCyAEIAVB2JqDARCkGwALIAUgA0HYmoMBEKMbAAu6AQEDfyMAQSBrIgIkACAAKAIAIQNBACEAIAEoAhRB4NGhAUEBIAEoAhgoAgwRCwAhBCACQQA6ABkgAiAEOgAYIAIgATYCFANAIAIgADoAHyACIAMgAEGAAXFBA3ZqIgEpAwAgAUEIaikDACAAQf8AcRDDHAJAIAIpAwBCAYNQDQAgAkEUaiACQR9qQYYBELMMGgsgAEH/AXFBAWoiAEH/AXEgAEYNAAsgAkEUahDQLSEAIAJBIGokACAAC7oBAQN/IwBBEGsiAyQAIANBCGogACABEN0xIAMoAgwhASADKAIIIQACQAJAAkACQCACRQ0AQQAhBANAIAFFDQIgACgCLCIFIAFNDQQgACgCKCABQQN0aigCBCEBIAIgBEEBaiIERw0ACwsgAUUNACAAKAIsIgQgAUsNASABIARBoPKDARChGwALQdj2gwEQ/TkACyAAKAIoIAFBA3RqKAIAIQEgA0EQaiQAIAEPCyABIAVBoPKDARChGwALwgEBBH8jAEEgayIDJAACQAJAIAENACACQQFBABDfBSEEDAELIAMgATYCDCADIAA2AgggA0EQaiADQQhqEIQIAkAgAygCECIBRQ0AIAIoAhghACACKAIUIQUDQCADKAIUIQYCQCADKAIcDQAgAiABIAYQ3wUhBAwDC0EBIQQgBSABIAYgACgCDBELAA0CIAVB/f8DIAAoAhARCAANAiADQRBqIANBCGoQhAggAygCECIBDQALC0EAIQQLIANBIGokACAEC7sBAgd/AX4CQAJAIAAoAgwiAQ0AIAAoAgAhAQwBCyAAKAIIIQIgASgCACEDIAMgAyABQQRqKAIAIgQgACkDACIIEPEYIgBqIgUtAAAhBiAFIAinQRl2Igc6AAAgAyAEIABBeGpxakEIaiAHOgAAIAEgASgCDEEBajYCDCABIAEoAgggBkEBcWs2AgggAyAAQQR0ayIBQXxqQQA2AgAgAUF0akKAgICAgAE3AgAgAUFwaiACNgIACyABQXRqC88BAgN/An4jAEHgAGsiAiQAIAAoAjAQtBghAyACQTRqIABBNGooAgA2AgAgAkEAOgAoIAJBCGpBACkD4OKiASIFNwMAIAJBEGoiBEEAKQPY4qIBIgY3AwAgAkEYaiAFNwMAIAIgADYCICACIAM2AiQgAkEBOgA5IAIgACkCLDcCLCACIAAoATo2ATogAiAALQA4OgA4IAIgBjcDAAJAIAEoAhQNACADRQ0AIAFBACADENIGNgIUCyACIAEQmQ0gAhChDCAEEKwMIAJB4ABqJAALuQEBAn8jAEHgAGsiByQAQQAhCCAHQQA2AgwgB0KAgICAEDcCBCAHQRBqIAEgAiADIAQQ9gIDQCAHQdQAaiAHQRBqEJAKAkAgBygCVA0AIAdBBGogASAIaiACIAhrEPguIABBCGogB0EEakEIaigCADYCACAAIAcpAgQ3AgAgB0HgAGokAA8LIAcoAlggCGshBCABIAhqIQMgBygCXCEIIAdBBGogAyAEEPguIAdBBGogBSAGEPguDAALC8cBAQN/IwBBsAdrIgIkACABKAKUDSgCvAIiAyADKAIAIgRBAWo2AgACQCAEQX9MDQAgAiADENsnIAJB6ARqIAEoAqAKEMMkIAJB1AVqIAEoArgKEIcwIAJB2ARqIAEoAtQKIAEoAvgKENkYIAJB2AFqIAEQmSMCQAJAIAEpA6ANQgJSDQAgAkECNgKgBwwBCyACQfAFaiABQaANahD2BwsgAkEYaiACQfAFakHAARDfChogACACQfAFEN8KGiACQbAHaiQADwsAC7wBAQR/IwBBMGsiAyQAQQAhBAJAIAIoAhAiBSACKAIUIgZLDQACQCACKAIAQX9qQQJJDQAgA0EMaiAAIAIoAgggAigCDCAFIAYQ1hQgAygCDCIEQQFHDQEgAygCECADKAIUTQ0BIANBADYCKCADQQE2AhwgA0GslYMBNgIYIANCBDcCICADQRhqQeSEgwEQrS4ACyAFIAIoAgxPDQAgACACKAIIIAVqLQAAai0AACEECyADQTBqJAAgBEEBcQuuAQEFfyMAQZACayICJABBACEDIAJBEGpBAEGAAhDvERpBASEEAkADQCACIAEgBEF/aiIFQQN2QRBxaiIGKQMAIAZBCGopAwAgBUH/AHEQwxwCQCACKQMAQgGDUA0AIANB/wFxQQFqIgNB/wFxIANHDQILIAJBEGogBGogAzoAACAEQQFqIgRBgAJHDQALIAAgAkEQakGAAhDfChogAkGQAmokAA8LQZCngwEQ/TkAC60BAQN/AkACQAJAIAEoAgAiAiABQXhqKAIAIgNHDQAgASgCBCIEIAFBfGooAgBJDQEMAgsgAiADTw0BIAEoAgQhBAsgAUFwaiEBAkADQCABQRBqIAFBCGoiAykCADcCACADIABGDQECQAJAIAIgASgCACIDRw0AIAQgAUEEaigCAEkNAQwDCyACIANPDQILIAFBeGohAQwACwsgAUEIaiAErUIghiACrYQ3AgAPCwvFAQEDfyMAQSBrIgEkACAAKAIAIgIoAgAhAyACQQA2AgAgAygCECECIANBADYCEAJAIAJFDQAgAUEIaiACEQMAAkAgACgCBCIAKAIAIgMoAgAiAkGCgICAeEgNACACIANBBGooAgAQ9jkgACgCACEDCyADIAEpAgg3AgAgA0EIaiABQQhqQQhqKAIANgIAIAFBIGokAEEBDwsgAUEANgIYIAFBATYCDCABQejpogE2AgggAUIENwIQIAFBCGpBrNehARCtLgALwgEBA38jAEHQAGsiASQAIAAoAgAiAigCACEDIAJBADYCACADKAJQIQIgA0EANgJQAkAgAkUNACABQQhqIAIRAwACQCAAKAIEIgIoAgAiAygCOCIAQQJGDQAgAEUNACADKAJAIgBFDQAgAygCPCAAQQEQ7hwgAigCACEDCyADIAFBCGpByAAQ3woaIAFB0ABqJABBAQ8LIAFBADYCGCABQQE2AgwgAUHo6aIBNgIIIAFCBDcCECABQQhqQazXoQEQrS4AC74BAQR/IwBBIGsiAyQAIAEgASgCzAIiBEGAIHIQ4Q9BACEFQQAhBgJAIAEQsBYgAhDFNUUNACABIAEpAxg3A1AgASgCACEFIAFBJTYCACADQQhqQQxqIAFBDGopAgA3AgAgA0EIakEUaiABQRRqKAIANgIAIAMgASkCBDcCDCADIAU2AgggA0EIahDhECADIAEQsQMgAygCACEGIAMoAgQhBQsgASAEEKA+IAAgBTYCBCAAIAY2AgAgA0EgaiQAC88BAQJ/IAAoAgQiASAAKAIIEKcwIAAoAgAgARDhMwJAAkAgACgCDCIBKAIAQYCAgIB4Rg0AIAFBBGoiAigCACABQQhqKAIAEKUwIAEoAgAgAigCABDeMwwBCyABQQRqKAIAIgIQ9QEgAkHAAEEIEO4cCyABQRhBBBDuHAJAIAAoAhwiAUUNACABEN0RIAEoAgAgAUEEaigCABDeMyABQRRBBBDuHAsCQCAAKAIgIgBFDQAgACgCACIBENAEIAFB4ABBCBDuHCAAQQxBBBDuHAsLuAECBH8BfiMAQRBrIgEkAAJAIAAoAggiAkUNACAAKAIEIQADQCAAQQhqIQMCQAJAIAAoAgANACADKQMAIgVCA4NCAFINASABIAWnIgM2AgwgAUEMahD1ByADIAMoAgAiBEF/ajYCACAEQQFHDQEgAyADKAIgENMvDAELIAMQuBMLAkAgAEEoaigCACIDRQ0AIAMQogEgA0HAAEEIEO4cCyAAQTBqIQAgAkF/aiICDQALCyABQRBqJAALugECAn8BfiMAQRBrIgEkAAJAAkACQAJAIAAoAgAOAgECAAsgAEEEahDBAQwCCyAAKQMIIgNCA4NCAFINASABIAOnIgA2AgggAUEIahD1ByAAIAAoAgAiAkF/ajYCACACQQFHDQEgACAAKAIgENMvDAELIAApAwgiA0IDg0IAUg0AIAEgA6ciADYCDCABQQxqEPUHIAAgACgCACICQX9qNgIAIAJBAUcNACAAIAAoAiAQ0y8LIAFBEGokAAu6AQICfwF+IwBBEGsiASQAAkACQAJAAkAgACgCAA4CAQIACyAAQQRqEJcCDAILIAApAwgiA0IDg0IAUg0BIAEgA6ciADYCCCABQQhqEPUHIAAgACgCACICQX9qNgIAIAJBAUcNASAAIAAoAiAQ0y8MAQsgACkDCCIDQgODQgBSDQAgASADpyIANgIMIAFBDGoQ9QcgACAAKAIAIgJBf2o2AgAgAkEBRw0AIAAgACgCIBDTLwsgAUEQaiQAC7oBAgJ/AX4jAEEQayIBJAACQAJAAkACQCAAKAIADgIBAgALIABBBGoQ5gEMAgsgACkDCCIDQgODQgBSDQEgASADpyIANgIIIAFBCGoQ9QcgACAAKAIAIgJBf2o2AgAgAkEBRw0BIAAgACgCIBDTLwwBCyAAKQMIIgNCA4NCAFINACABIAOnIgA2AgwgAUEMahD1ByAAIAAoAgAiAkF/ajYCACACQQFHDQAgACAAKAIgENMvCyABQRBqJAALuAECBH8BfiMAQRBrIgEkAAJAIAAoAggiAkUNACAAKAIEIQADQCAAQQhqIQMCQAJAIAAoAgANACADKQMAIgVCA4NCAFINASABIAWnIgM2AgwgAUEMahD1ByADIAMoAgAiBEF/ajYCACAEQQFHDQEgAyADKAIgENMvDAELIAMQuBMLAkAgAEEoaigCACIDRQ0AIAMQqAEgA0HAAEEIEO4cCyAAQTBqIQAgAkF/aiICDQALCyABQRBqJAALygEBAX8CQAJAAkACQAJAAkAgACgCAEF7aiICQQQgAkEGSRsOBgUAAQIDBAULIAEgAEEIahCRNCABIAAoAigQsAMPCyABIAAoAigQsAMPCyABIABBCGoQkTQgACgCKEGAgICAeEYNAiAAQShqIAEQsCQPCyABIAAQkTQCQCAAKAIgQQdGDQAgAEEgaiABENYOCyAAKAJoIAEQ1g4gACgCSEGAgICAeEYNASAAQcgAaiABELAkDwsgASAAQQhqEJE0IAAoAiggARCSEQsLuAEBBH8jAEHgAGsiAiQAIAJBDGogAEEsaiIDEKMMAkAgASgCFCIERQ0AIAEoAhAhBSAEQQxsIQQDQCAAIAUoAgAQpiogBUEMaiEFIARBdGoiBA0ACwsCQCABKAIIIgRFDQAgASgCBCEFIARBBnQhBANAIAAgBRCrFyAFQcAAaiEFIARBQGoiBA0ACwsCQCABKAIYQYCAgIB4Rg0AIAFBGGogABD1JwsgAyACQQxqEPMDIAJB4ABqJAALugECAn8BfiMAQRBrIgEkAAJAAkACQAJAIAAoAgAOAgECAAsgAEEEahDnAQwCCyAAKQMIIgNCA4NCAFINASABIAOnIgA2AgggAUEIahD1ByAAIAAoAgAiAkF/ajYCACACQQFHDQEgACAAKAIgENMvDAELIAApAwgiA0IDg0IAUg0AIAEgA6ciADYCDCABQQxqEPUHIAAgACgCACICQX9qNgIAIAJBAUcNACAAIAAoAiAQ0y8LIAFBEGokAAu6AQICfwF+IwBBEGsiASQAAkACQAJAAkAgACgCAA4CAQIACyAAQQRqEK8CDAILIAApAwgiA0IDg0IAUg0BIAEgA6ciADYCCCABQQhqEPUHIAAgACgCACICQX9qNgIAIAJBAUcNASAAIAAoAiAQ0y8MAQsgACkDCCIDQgODQgBSDQAgASADpyIANgIMIAFBDGoQ9QcgACAAKAIAIgJBf2o2AgAgAkEBRw0AIAAgACgCIBDTLwsgAUEQaiQAC7gBAgR/AX4jAEEQayIBJAACQCAAKAIIIgJFDQAgACgCBCEAA0AgAEEIaiEDAkACQCAAKAIADQAgAykDACIFQgODQgBSDQEgASAFpyIDNgIMIAFBDGoQ9QcgAyADKAIAIgRBf2o2AgAgBEEBRw0BIAMgAygCIBDTLwwBCyADELgTCwJAIABBKGooAgAiA0UNACADEKsBIANBwABBCBDuHAsgAEEwaiEAIAJBf2oiAg0ACwsgAUEQaiQAC7oBAgJ/AX4jAEEQayIBJAACQAJAAkACQCAAKAIADgIBAgALIABBBGoQ5QEMAgsgACkDCCIDQgODQgBSDQEgASADpyIANgIIIAFBCGoQ9QcgACAAKAIAIgJBf2o2AgAgAkEBRw0BIAAgACgCIBDTLwwBCyAAKQMIIgNCA4NCAFINACABIAOnIgA2AgwgAUEMahD1ByAAIAAoAgAiAkF/ajYCACACQQFHDQAgACAAKAIgENMvCyABQRBqJAALugECAn8BfiMAQRBrIgEkAAJAAkACQAJAIAAoAgAOAgECAAsgAEEEahDiAQwCCyAAKQMIIgNCA4NCAFINASABIAOnIgA2AgggAUEIahD1ByAAIAAoAgAiAkF/ajYCACACQQFHDQEgACAAKAIgENMvDAELIAApAwgiA0IDg0IAUg0AIAEgA6ciADYCDCABQQxqEPUHIAAgACgCACICQX9qNgIAIAJBAUcNACAAIAAoAiAQ0y8LIAFBEGokAAu6AQICfwF+IwBBEGsiASQAAkACQAJAAkAgACgCAA4CAQIACyAAQQRqEOMBDAILIAApAwgiA0IDg0IAUg0BIAEgA6ciADYCCCABQQhqEPUHIAAgACgCACICQX9qNgIAIAJBAUcNASAAIAAoAiAQ0y8MAQsgACkDCCIDQgODQgBSDQAgASADpyIANgIMIAFBDGoQ9QcgACAAKAIAIgJBf2o2AgAgAkEBRw0AIAAgACgCIBDTLwsgAUEQaiQAC8oBAQF/IwBBEGsiAiQAAkAgAC0ABEEBRw0AAkACQAJAAkACQCABKAIADgUBAgADBAELAkAgAC0ABQ0AIAErAxCZRAAAAAAAAPB/Yg0AIABBADoABAsgACAAKAIAQQVqNgIADAQLIAIgAUEIahDJEyAAIAIoAgQgACgCAGpBAmo2AgAMAwsgAkEIaiABQQhqEMkTIAAgAigCDCAAKAIAakECajYCAAwCCyAAIAEoAgQQlgcgAEEAOgAEDAELIABBADoABAsgAkEQaiQAC7gBAgR/AX4jAEEQayIBJAACQCAAKAIIIgJFDQAgACgCBCEAA0AgAEEIaiEDAkACQCAAKAIADQAgAykDACIFQgODQgBSDQEgASAFpyIDNgIMIAFBDGoQ9QcgAyADKAIAIgRBf2o2AgAgBEEBRw0BIAMgAygCIBDTLwwBCyADELgTCwJAIABBKGooAgAiA0UNACADEK8BIANBwABBCBDuHAsgAEEwaiEAIAJBf2oiAg0ACwsgAUEQaiQAC7oBAgJ/AX4jAEEQayIBJAACQAJAAkACQCAAKAIADgIBAgALIABBBGoQlAIMAgsgACkDCCIDQgODQgBSDQEgASADpyIANgIIIAFBCGoQ9QcgACAAKAIAIgJBf2o2AgAgAkEBRw0BIAAgACgCIBDTLwwBCyAAKQMIIgNCA4NCAFINACABIAOnIgA2AgwgAUEMahD1ByAAIAAoAgAiAkF/ajYCACACQQFHDQAgACAAKAIgENMvCyABQRBqJAALugECAn8BfiMAQRBrIgEkAAJAAkACQAJAIAAoAgAOAgECAAsgAEEEahCVAgwCCyAAKQMIIgNCA4NCAFINASABIAOnIgA2AgggAUEIahD1ByAAIAAoAgAiAkF/ajYCACACQQFHDQEgACAAKAIgENMvDAELIAApAwgiA0IDg0IAUg0AIAEgA6ciADYCDCABQQxqEPUHIAAgACgCACICQX9qNgIAIAJBAUcNACAAIAAoAiAQ0y8LIAFBEGokAAu3AQEDfyMAQRBrIgYkACABLQCBAiEHIAEtAIACIQggBkEIaiACIAMgBCAFQaSXgAEQuyYgBiAIIAcgBigCCCAGKAIMEMIJAkACQAJAIAYoAgBBAXFFDQAgBigCBCAEaiIFIANJDQEgBSADQbSXgAEQoRsAC0EAIQEMAQsgACAEQQAgBSABIAIgBWotAABqLQAAayIBIAEgBUsbIgEgBCABSxs2AgRBAiEBCyAAIAE2AgAgBkEQaiQAC94BAQF/IwBBEGsiAiQAAkACQAJAAkACQAJAIAAoAgAoAgAiAC0AAA4FAAECAwQACyABKAIUQYOfgwFBFCABKAIYKAIMEQsAIQEMBAsgASgCFEGXn4MBQRYgASgCGCgCDBELACEBDAMLIAIgAEEBajYCCCABQa2fgwFBEUH/q6ABQQMgAkEIakG6ARDtEiEBDAILIAIgAEEBajYCDCABQb6fgwFBFkH/q6ABQQMgAkEMakG6ARDtEiEBDAELIAEoAhRB1J+DAUEQIAEoAhgoAgwRCwAhAQsgAkEQaiQAIAEL0gEBAn8gABDsBQJAAkACQAJAAkACQAJAIAAoAgAOCAYBAgYDBAUABgsgAEEEahDYLCAAKAIEIAAoAggQjToMBQsgACgCCCIBRQ0EIAAoAgQgAUEBEO4cDAQLIABBBGoQxy8MAwsgACgCDCIBENwSIAFBHEEEEO4cDAILAkAgACgCDCIBRQ0AIAAoAhAiAkUNACABIAJBARDuHAsgACgCBCIBENwSIAFBHEEEEO4cDAELIABBBGoQ2CwgACgCBCAAKAIIEI06CyAAKAIYQTRBBBDuHAu7AQEFfyMAQSBrIgIkAAJAAkACQCABKAIIIgNFDQACQCABKAIEIgQtAABBAnFFDQAgAiADQXNqIgVBA3EiBjYCBCAGDQMgA0EMTQ0CIAQgBUECdjYACQsgAEEANgIMIAAgASkCADcCACAAQQhqIAFBCGooAgA2AgAgAkEgaiQADwtBAEEAQaDNgwEQoRsAC0ENIANBoM+DARCjGwALIAJBADYCCCACQQRqQfC8mgEgAkEIakGwz4MBEJ4rAAvAAQEEfyMAQdAAayICJAAgAkE0akEYaiIDQQA2AgAgAkE0akEQaiIEQgQ3AgAgAkE0akEIaiIFQgA3AgAgAkKAgICAwAA3AjQgAkE0akEAEIYwIAJBwABqQQAQhjAgAkEYaiADKAIANgIAIAJBEGogBCkCADcDACACQQhqIAUpAgA3AwAgAiACKQI0NwMAIAJBADYCLCACQgA3AiQgAkKAgICAwAA3AhwgAiABEJINIAAgAkEwEN8KGiACQdAAaiQAC64BAQN/IwBBEGsiBCQAIAQgAjYCDAJAAkAgAiADSw0AAkAgAQ0AQQAhAQwCC0EAIQIDQAJAIAFBAUsNACAEQQxqIAMgACACQQxsaigCABCpMkH/AXFFIQEMAwsgAUEBdiIFIAJqIQYgAiAGIARBDGogAyAAIAZBDGxqKAIAEKkyQf8BcUEBRhshAiABIAVrIQEMAAsLQfSVmQFBHkHMu4cBENMnAAsgBEEQaiQAIAELswEBA38jAEEQayIDJAACQAJAIAJBCEkNAAJAIAJB/////wFLDQBBfyACQQN0QQduQX9qZ3ZBAWohAgwCCxD2KwALQQRBCCACQQRJGyECCyADIAEgAhDRFyADKAIIIQQgAygCBCEBAkACQCADKAIAIgJFDQAgAygCDCEFIAJB/wEgAUEJahDvERogACAFNgIMDAELQQAhAgsgACAENgIIIAAgATYCBCAAIAI2AgAgA0EQaiQAC68BAQF/IwBBwABrIgEkACABQShqIAAQ/hcgAUEMakEUaiABQShqQRBqKQMANwIAIAFBDGpBDGogAUEoakEIaikDADcCACABIAEpAyg3AhACQEEIQcAAELs4IgANAAALIABBGjYCACAAIAEpAgw3AgQgAEEMaiABQQxqQQhqKQIANwIAIABBFGogAUEMakEQaikCADcCACAAQRxqIAFBJGooAgA2AgAgAUHAAGokACAAC78BAQR/IwBBIGsiAyQAIAEgASgCzAIiBEGAhJCAAXIQ4Q8gA0EIaiABQQAQ3wYgAygCDCEFAkACQCADKAIIIgZBgICAgHhGDQAgACADKQIQNwIMIABBFGogA0EYaikCADcCACABIAQQoD4gACAFNgIIIAAgAiABKAJUIgEgAiABSxs2AiAgACACIAEgAiABSRs2AhxBCyEBDAELIAEgBBCgPkENIQEgBSEGCyAAIAE2AgAgACAGNgIEIANBIGokAAuzAQEDfyMAQRBrIgMkAAJAAkAgAkEISQ0AAkAgAkH/////AUsNAEF/IAJBA3RBB25Bf2pndkEBaiECDAILEPYrAAtBBEEIIAJBBEkbIQILIAMgASACEMsTIAMoAgghBCADKAIEIQECQAJAIAMoAgAiAkUNACADKAIMIQUgAkH/ASABQQlqEO8RGiAAIAU2AgwMAQtBACECCyAAIAQ2AgggACABNgIEIAAgAjYCACADQRBqJAALugEBA38jAEEwayIEJAACQCACKAIQIgUgAigCFCIGSw0AAkACQCACKAIAQX9qQQJJDQAgBEEMaiAAIAIoAgggAigCDCAFIAYQ1hQgBCgCDEEBRw0CIAQoAhAgBCgCFE0NASAEQQA2AiggBEEBNgIcIARBrJWDATYCGCAEQgQ3AiAgBEEYakHkhIMBEK0uAAsgBSACKAIMTw0BIAAgAigCCCAFai0AAGotAABFDQELIAMQtB4LIARBMGokAAu1AQEFfwJAAkAgASAAKAIMayICQQF0IAJBH3VzIgNB/wBLDQAgACgCCCEEDAELIAAoAgghAiADIQUDQAJAIAIgACgCAEcNACAAEMAmCyAAIAJBAWoiBDYCCCAAKAIEIAJqIAVBgH9yOgAAIAVB//8ASyEGIAQhAiAFQQd2IgMhBSAGDQALCwJAIAQgACgCAEcNACAAEMAmCyAAIAE2AgwgACAEQQFqNgIIIAAoAgQgBGogAzoAAAvAAQEBfyMAQSBrIgIkAAJAAkACQCABEP49DQAgAkEEaiABEIAMAkAgAigCBEGAgICAeEYNACACQRBqQQhqIAJBBGpBCGooAgA2AgAgAiACKQIENwMQIAAgAkEQahD7HAwCC0GAgICAeCACKAIIEIs1IAAgARCaDDYCGCAAQQI2AgAgAEEUaiABQRBqKAIANgIAIABBDGogAUEIaikCADcCACAAIAEpAgA3AgQMAgsgABDNHAsgARDNLwsgAkEgaiQAC7UBAgJ/AX4jAEHAAGsiAiQAIAEpAgQhBBCuMiEDIAIgASgCABA/IANBOGogAkE4aikDADcDACADQTBqIAJBMGopAwA3AwAgA0EoaiACQShqKQMANwMAIANBIGogAkEgaikDADcDACADQRhqIAJBGGopAwA3AwAgA0EQaiACQRBqKQMANwMAIANBCGogAkEIaikDADcDACADIAIpAwA3AwAgACADNgIAIAAgBDcCBCACQcAAaiQAC8MBAQN/IwBBMGsiASQAQQAhAiABQRBqQQApA5iOoQE3AwAgAUEIakEAKQOQjqEBNwMAIAFBACkDiI6hATcDAAJAAkAgABCwFiABEMU1DQAgARDhECAAEPYRIQIMAQsgACAAKQMYNwNQIAAoAgAhAyAAQSU2AgAgAUEYakEMaiAAQQxqKQIANwIAIAFBGGpBFGogAEEUaigCADYCACABIAApAgQ3AhwgASADNgIYIAFBGGoQ4RAgARDhEAsgAUEwaiQAIAILtAEBAX8jAEEgayIDJAAgA0EEakEUaiABQRBqKQIANwIAIANBBGpBDGogAUEIaikCADcCACADIAEpAgA3AggCQEEIQcAAELs4IgENAAALIAFBHzYCACABIAMpAgQ3AgQgASACNgIgIAFBDGogA0EEakEIaikCADcCACABQRRqIANBBGpBEGopAgA3AgAgAUEcaiADQRxqKAIANgIAIABBu4GAgHg2AgAgACABNgIEIANBIGokAAu0AQEBfyMAQSBrIgMkACADQQRqQRRqIAFBEGopAgA3AgAgA0EEakEMaiABQQhqKQIANwIAIAMgASkCADcCCAJAQQhBwAAQuzgiAQ0AAAsgAUEPNgIAIAEgAykCBDcCBCABIAI2AiAgAUEMaiADQQRqQQhqKQIANwIAIAFBFGogA0EEakEQaikCADcCACABQRxqIANBHGooAgA2AgAgAEG7gYCAeDYCACAAIAE2AgQgA0EgaiQAC8sBAQR/IwBBMGsiAiQAQYCAgIB4IQMCQAJAAkACQCABEO0OIgQNAAwBCyAELQAAQdYARw0AIAFBAjoA4QIgASABKQPYAjcD0AIgAkEYaiABQQAQ1wYgAigCHCEFIAIoAhgiA0GAgICAeEYNASACQRBqIAJBKGopAgA3AwAgAiACKQIgNwMICyAAIAU2AgQgACADNgIAIAAgAikDCDcCCCAAQRBqIAJBEGopAwA3AgAMAQsgAEGBgICAeDYCACAAIAU2AgQLIAJBMGokAAu4AQEEfwJAIAAoAggiAkUNACAAKAIEIQMgAkE4bCEEQQAhAgNAAkACQAJAAkAgAyACaiIFKAIADgMAAQIACwJAIAVBCGooAgBBA0cNACABIAVBDGooAgAQ2TILIAVBKGooAgAgARCuEwwCCyABIAVBEGoQsyAgBUEwaigCACIFRQ0BIAEgBRDZMgwBCyABIAVBBGoQqCkLIAQgAkE4aiICRw0ACwsCQCAAKAIUIgJFDQAgASACEJkvCwu+AQEBfyMAQRBrIgckACAAKAIUIAEgAiAAKAIYKAIMEQsAIQIgB0EAOgANIAcgAjoADCAHIAA2AgggB0EIaiADIAQgBSAGEM4KIQYgBy0ADSICIActAAwiAXIhAAJAIAJBAUcNACABQQFxDQACQCAGKAIAIgAtABxBBHENACAAKAIUQfuvlwFBAiAAKAIYKAIMEQsAIQAMAQsgACgCFEHQ0aEBQQEgACgCGCgCDBELACEACyAHQRBqJAAgAEEBcQvAAQACQAJAAkACQCABQQFxDQAgAigCAEH6/7t/ag4CAgMBCyAAIAI2AgQgAEECNgIAIAAgAikCADcCCA8LIABBBDYCAA8LAkAgAigCBCICKAIAQYiAxABGDQAgAEIENwIIIAAgAjYCBCAAQQA2AgAPCyAAQQE2AgAgACACQQRqNgIEDwsCQCACKAIMIgFFDQAgAEEANgIAIAAgAUF/ajYCDCAAIAIoAggiAjYCBCAAIAJB2ABqNgIIDwsgAEEENgIAC9QBAQF/IwBBwABrIgIkACAAKAIAIQAgAkHg8oMBNgI4IAJBwOaDATYCMCACIABB2ARqNgIsIAJBsOaDATYCKCACIABB2AJqNgIkIAJBoOaDATYCICACIABB2ABqNgIcIAJBkOaDATYCGCACIABB/ARqNgIUIAJBgOaDATYCECACIABB+ARqNgIMIAJB8OWDATYCCCACIAA2AgQgAiAAQYAFajYCPCACIAJBPGo2AjQgAUGtjYQBQQNB/OaDAUEHIAJBBGpBBxCgDSEAIAJBwABqJAAgAAu7AQECfyMAQcAAayICJAAgAiABNgIIIAJBADYCMCACQgA3AiggAiAAIAEgAkEoahCvDiIDNgIMAkAgASADIAAoAmRqIgNPDQAgAkEDNgIUIAJBlIWZATYCECACQgM3AhwgAkHKADYCPCACQQc2AjQgAkHKADYCLCACIABB5ABqNgIoIAIgAkEoajYCGCACIAJBCGo2AjggAiACQQxqNgIwIAJBEGpBrIWZARCtLgALIAJBwABqJAAgASADawu6AQEDfyMAQSBrIgEkACAAQQRqKAIAIQIgACgCACIDKAIAIQAgA0EANgIAIAAoAhQhAyAAQQA2AhQCQCADRQ0AIAFBCGogAxEDAAJAIAIoAgAiACgCAEUNACAAEKwMIAIoAgAhAAsgACABKQIINwIAIABBCGogAUEIakEIaikCADcCACABQSBqJABBAQ8LIAFBADYCGCABQQE2AgwgAUHo6aIBNgIIIAFCBDcCECABQQhqQazXoQEQrS4AC7YBAQV/IwBBEGsiASQAQdwAIQJBACEDQQEhBEEBIQUCQANAAkACQCAEDQAgA0ECRw0BDAMLQQIgA2sgBE0NAiADIARqIQNBACEECyACQQF0IANBoKKZAWotAABqIQIgBUEBdCEFIANBAWohAwwACwsgAUGAAjsBDCABQYGAgOAFNgIIIAFBFTYCBCAAIAIgBSABQQRqENQPIABBAjYCQCAAQaCimQE2AjwgAEEANgI4IAFBEGokAAvOAQEBfyMAQcAAayICJAAgACgCACEAIAJBqMGZATYCOCACQZjBmQE2AjAgAiAAQRhqNgIsIAJB6L+ZATYCKCACIAA2AiQgAkHovpkBNgIgIAIgAEEhajYCHCACQei+mQE2AhggAiAAQSBqNgIUIAJBqL+ZATYCECACIABBDGo2AgwgAkHQ86ABNgIIIAIgAEEQajYCBCACIABBHGo2AjwgAiACQTxqNgI0IAFB08qgAUERQcjNoAFBByACQQRqQQcQoA0hACACQcAAaiQAIAALyAEAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAODAABAgMEBQYHCAkLCgsLIABBCGoQhDgMCgsgAEEIahCYLQwJCyAAQQhqEMsyDAgLIABBBGoQvDkMBwsgAEEEahDQKQwGCyAAQQRqEL05DAULIABBBGoQvTkMBAsgAEEEahC8OQwDCyAAQQRqEL05DAILIABBBGoQ2joMAQsCQAJAIAAoAgQOAgABAgsgAEEIahC+OQwBCyAAQQhqEKAzCyAAQThqELw5C9IBAQF/IwBBwABrIgIkACAAKAIAIQAgAkGI4pkBNgI4IAJB+OKZATYCMCACIABB0QBqNgIsIAJBuOOZATYCKCACIABBIGo2AiQgAkGo45kBNgIgIAIgAEHAAGo2AhwgAkG44pkBNgIYIAIgADYCFCACQeDzoAE2AhAgAiAAQcwAajYCDCACQdDzoAE2AgggAiAAQThqNgIEIAIgAEHQAGo2AjwgAiACQTxqNgI0IAFBpOWgAUELQZDnoAFBByACQQRqQQcQoA0hACACQcAAaiQAIAALwgEBAX8gASAAKAL0ASACEP4iIQECQAJAAkACQAJAIAAtAJACQQJxDQAgACgChAIiACgCCA0EIABBfzYCCCAAKAIUIgIgACgCDEcNAiAAQQxqIQMMAQsgACgCgAIiACgCCA0CIABBfzYCCCAAKAIUIgIgACgCDEcNASAAQQxqIQMLIAMQzg4LIAAoAhAgAkECdGogATYCACAAIAJBAWo2AhQgACAAKAIIQQFqNgIIDwtB0M+aARDpIgALQeDPmgEQ6SIAC7sBAwF/An4BfCMAQTBrIgIkACACIAFBABBqAkACQCACKQMAIgNCAlENACACKQMQIQQgAisDCCEFAkACQCADp0EBcQ0AIAIgBDcDICACIAU5AyggAkEGNgIYIAEgAkEYahDkBUHAACEBDAELIAIgBDcDICACQQc2AhggAiAFvT4CKCABIAJBGGoQ5AVBwQAhAQsgACABOgABQQAhAQwBCyAAIAIoAgg2AgRBASEBCyAAIAE6AAAgAkEwaiQAC84BAQF/IwBBwABrIgIkACAAKAIAIQAgAkHk9ZoBNgI4IAJB1PWaATYCMCACIABBIGo2AiwgAkGM9JoBNgIoIAIgAEEqajYCJCACQYz0mgE2AiAgAiAAQSlqNgIcIAJBjPSaATYCGCACIABBKGo2AhQgAkHs9JoBNgIQIAIgAEEIajYCDCACQdDzoAE2AgggAiAANgIEIAIgAEEkajYCPCACIAJBPGo2AjQgAUGkyKABQQtB7MegAUEHIAJBBGpBBxCgDSEAIAJBwABqJAAgAAvOAQEBfyMAQcAAayICJAAgACgCACEAIAJB5PaaATYCOCACQdT2mgE2AjAgAiAAQRhqNgIsIAJBpPWaATYCKCACIAA2AiQgAkGM9JoBNgIgIAIgAEEhajYCHCACQYz0mgE2AhggAiAAQSBqNgIUIAJBzPSaATYCECACIABBDGo2AgwgAkHQ86ABNgIIIAIgAEEQajYCBCACIABBHGo2AjwgAiACQTxqNgI0IAFB08qgAUERQcjNoAFBByACQQRqQQcQoA0hACACQcAAaiQAIAAL0gEBAX8jAEHAAGsiAiQAIAAoAgAhACACQdz+mgE2AjggAkHM/5oBNgIwIAIgAEHRAGo2AiwgAkGMgJsBNgIoIAIgAEEgajYCJCACQfz/mgE2AiAgAiAAQcAAajYCHCACQZz/mgE2AhggAiAANgIUIAJB4POgATYCECACIABBzABqNgIMIAJB0POgATYCCCACIABBOGo2AgQgAiAAQdAAajYCPCACIAJBPGo2AjQgAUGk5aABQQtBkOegAUEHIAJBBGpBBxCgDSEAIAJBwABqJAAgAAvOAQEBfyMAQcAAayICJAAgACgCACEAIAJB2KGgATYCOCACQcihoAE2AjAgAiAAQSBqNgIsIAJBmKGgATYCKCACIABBKmo2AiQgAkGYoaABNgIgIAIgAEEpajYCHCACQZihoAE2AhggAiAAQShqNgIUIAJBuKGgATYCECACIABBCGo2AgwgAkHQ86ABNgIIIAIgADYCBCACIABBJGo2AjwgAiACQTxqNgI0IAFBpMigAUELQezHoAFBByACQQRqQQcQoA0hACACQcAAaiQAIAAL0gEBAX8jAEHAAGsiAiQAIAAoAgAhACACQcC9oAE2AjggAkHYn6ABNgIwIAIgAEHRAGo2AiwgAkGYoKABNgIoIAIgAEEgajYCJCACQYigoAE2AiAgAiAAQcAAajYCHCACQZifoAE2AhggAiAANgIUIAJB4POgATYCECACIABBzABqNgIMIAJB0POgATYCCCACIABBOGo2AgQgAiAAQdAAajYCPCACIAJBPGo2AjQgAUGk5aABQQtBkOegAUEHIAJBBGpBBxCgDSEAIAJBwABqJAAgAAvOAQEBfyMAQcAAayICJAAgACgCACEAIAJBmKKgATYCOCACQYiioAE2AjAgAiAAQRhqNgIsIAJB6KCgATYCKCACIAA2AiQgAkGYoaABNgIgIAIgAEEhajYCHCACQZihoAE2AhggAiAAQSBqNgIUIAJB2KCgATYCECACIABBDGo2AgwgAkHQ86ABNgIIIAIgAEEQajYCBCACIABBHGo2AjwgAiACQTxqNgI0IAFB08qgAUERQcjNoAFBByACQQRqQQcQoA0hACACQcAAaiQAIAALzgEBAX8jAEHAAGsiAiQAIAAoAgAhACACQcTHoAE2AjggAkG0x6ABNgIwIAIgAEEgajYCLCACQcjGoAE2AiggAiAAQSpqNgIkIAJByMagATYCICACIABBKWo2AhwgAkHIxqABNgIYIAIgAEEoajYCFCACQaTHoAE2AhAgAiAAQQhqNgIMIAJB0POgATYCCCACIAA2AgQgAiAAQSRqNgI8IAIgAkE8ajYCNCABQaTIoAFBC0Hsx6ABQQcgAkEEakEHEKANIQAgAkHAAGokACAAC84BAQF/IwBBwABrIgIkACAAKAIAIQAgAkG4zaABNgI4IAJBoMugATYCMCACIABBGGo2AiwgAkHQxaABNgIoIAIgADYCJCACQcjGoAE2AiAgAiAAQSFqNgIcIAJByMagATYCGCACIABBIGo2AhQgAkG4xaABNgIQIAIgAEEMajYCDCACQdDzoAE2AgggAiAAQRBqNgIEIAIgAEEcajYCPCACIAJBPGo2AjQgAUHTyqABQRFByM2gAUEHIAJBBGpBBxCgDSEAIAJBwABqJAAgAAvSAQEBfyMAQcAAayICJAAgACgCACEAIAJB8POgATYCOCACQbzjoAE2AjAgAiAAQdEAajYCLCACQfjmoAE2AiggAiAAQSBqNgIkIAJB6OagATYCICACIABBwABqNgIcIAJB7OKgATYCGCACIAA2AhQgAkHg86ABNgIQIAIgAEHMAGo2AgwgAkHQ86ABNgIIIAIgAEE4ajYCBCACIABB0ABqNgI8IAIgAkE8ajYCNCABQaTloAFBC0GQ56ABQQcgAkEEakEHEKANIQAgAkHAAGokACAAC64BAQl/IwBBEGsiAiQAEN4xIgMgASgCCCIEQX9zIAEoAgAiBS8BMiIGaiIHOwEyIAVBBGoiCCAEQQJ0aigCACEJIAJBCGogByADQQRqELYvIAggBEEBaiIKQQJ0aiAGIAprIAIoAgggAigCDBC3LyAHEJMyIgcgBxDKMyAFIAQ7ATIgACAJNgIQIAAgBTYCACAAQQA2AgwgACADNgIIIAAgASgCBDYCBCACQRBqJAALqwEBA38jAEEQayICJAACQAJAAkACQCAALQAAIgNB5ABJDQAgAiADQeQAbiIEQZx/bCADakH/AXFBAXRBmOWYAWovAAA7AA5BACEADAELQQIhACADQQpPDQEgAyEECyACQQ1qIABqIARBMHI6AAAMAQtBASEAIAIgA0EBdEGY5ZgBai8AADsADgsgAUEBQQFBACACQQ1qIABqIABBA3MQjgchACACQRBqJAAgAAu+AQEFfyMAQRBrIgMkACACLQAMIQQgAS0ADCEFAkACQAJAIAEoAggiBkUNACACKAIIIgcNAQsgA0EIakEAKAKgrKEBNgIAIANBACkCmKyhATcDAAwBCyACKAIEIQIgASgCBCEBAkAgB0EBRw0AIAMgASAGIAIoAgAQvSMMAQsCQCAGQQFHDQAgAyACIAcgASgCABC9IwwBCyADIAEgBiACIAcQ+RcLIAAgBSAEEIEkQf8BcSADEPIeIANBEGokAAvIAQECfyMAQRBrIgIkAAJAAkACQAJAAkACQCABKAIADgQBAAIDAQsgAEEENgIADAQLIABBBDYCAAwDCyABKAIMIgNFDQEgAiABKAIIIgEgA0HIpJcBEIMvIAAgAikDADcCCCAAIAE2AgQgAEECNgIADAILAkAgASgCDCIDRQ0AIAJBCGogASgCCCIBIANB2KSXARCDLyAAIAIpAwg3AgggACABNgIEIABBAzYCAAwCCyAAQQQ2AgAMAQsgAEEENgIACyACQRBqJAALtAEBBH8jAEEwayICJABBASEDAkAgASgCFCIEQd+PgwFBASABKAIYIgUoAgwRCwANAEEAIQMgACgCACIAaCIBQR9LDQACQANAIAIgATYCDCACQQE2AhQgAkHUj4MBNgIQIAJCATcCHCACQfAANgIsIAIgAkEoajYCGCACIAJBDGo2AiggBCAFIAJBEGoQnQcNASAAQX4gAXdxIgBoIgFBH00NAAwCCwtBASEDCyACQTBqJAAgAwuiAQACQAJAIAEg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ECIEUA0AIARCA4NCAFINACABIASnIgA2AgwgAUEMahD1ByAAIAAoAgAiAkF/ajYCACACQQFHDQAgACAAKAIgENMvCyABQRBqJAALowECA38BfiMAQRBrIgEkAAJAIAApAwAiBEIDg0IAUg0AIAEgBKciAjYCCCABQQhqEPUHIAIgAigCACIDQX9qNgIAIANBAUcNACACIAIoAiAQ0y8LAkAgACkDECIEUA0AIARCA4NCAFINACABIASnIgA2AgwgAUEMahD1ByAAIAAoAgAiAkF/ajYCACACQQFHDQAgACAAKAIgENMvCyABQRBqJAALowECA38BfiMAQRBrIgEkAAJAIAApAwAiBEIDg0IAUg0AIAEgBKciAjYCCCABQQhqEPUHIAIgAigCACIDQX9qNgIAIANBAUcNACACIAIoAiAQ0y8LAkAgACkDECIEUA0AIARCA4NCAFINACABIASnIgA2AgwgAUEMahD1ByAAIAAoAgAiAkF/ajYCACACQQFHDQAgACAAKAIgENMvCyABQRBqJAALowECA38BfiMAQRBrIgEkAAJAIAApAwAiBEIDg0IAUg0AIAEgBKciAjYCCCABQQhqEPUHIAIgAigCACIDQX9qNgIAIANBAUcNACACIAIoAiAQ0y8LAkAgACkDECIEUA0AIARCA4NCAFINACABIASnIgA2AgwgAUEMahD1ByAAIAAoAgAiAkF/ajYCACACQQFHDQAgACAAKAIgENMvCyABQRBqJAALowECA38BfiMAQRBrIgEkAAJAIAApAwAiBEIDg0IAUg0AIAEgBKciAjYCCCABQQhqEPUHIAIgAigCACIDQX9qNgIAIANBAUcNACACIAIoAiAQ0y8LAkAgACkDECIEUA0AIARCA4NCAFINACABIASnIgA2AgwgAUEMahD1ByAAIAAoAgAiAkF/ajYCACACQQFHDQAgACAAKAIgENMvCyABQRBqJAALsQEBA38CQCAAKAIIIgFFDQAgACgCBCEAA0ACQAJAAkACQCAAKAIADgIBAgALIABBBGooAgAiAhCJCSACQShBCBDuHCAAQRhqKAIAIgJFDQIgAigCACIDENsCIANB4ABBCBDuHCACQQxBBBDuHAwCCyAAQQhqELkODAELIABBEGoQoBggAEEwaigCACICRQ0AIAIQqwEgAkHAAEEIEO4cCyAAQThq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wJkBNgIwIAIgADYCLCACQei+mQE2AiggAiAAQdIAajYCJCACQei+mQE2AiAgAiAAQdEAajYCHCACQei+mQE2AhggAiAAQdAAajYCFCACQdDzoAE2AhAgAiAAQcgAajYCDCACIABBIGo2AjwgAiACQTxqNgI0IAFBpNygAUEMQfTboAFBBiACQQxqQQYQoA0hACACQcAAaiQAIAALvgEBAX8jAEHAAGsiAiQAIAAoAgAoAgAhACACQYjBmQE2AjggAkH4wJkBNgIwIAIgAEE4ajYCLCACQfi+mQE2AiggAiAAQSBqNgIkIAJB6L6ZATYCICACIABBxABqNgIcIAJBuL+ZATYCGCACIABBCGo2AhQgAkHQ86ABNgIQIAIgADYCDCACIABBJGo2AjwgAiACQTxqNgI0IAFB8uCgAUEPQdDcoAFBBiACQQxqQQYQoA0hACACQcAAaiQAIAALrgECAX8BfiMAQcAAayIBJAACQAJAIAAtABRBAkcNACAAKAIAIgBBGGoQ5xMhAiABQbQENgI0IAEgADYCMCABQbQENgIsIAEgAjcDOCABQQI2AhQgAUHA5pkBNgIQIAFCAjcCHCABIAFBOGo2AiggASABQShqNgIYIAFBBGogAUEQahCEIyABQThqEMceIAFBBGoQhS8hAgwBCyAAKQMAENw/IQILIAFBwABqJAAgAgurAQEDfwJAIAAoAggiAUUNACAAKAIEIQADQAJAAkACQAJAIAAoAgAOAgECAAsgAEEEahDUCyAAQRhqKAIAIgJFDQIgAigCACIDEIkDIANB4ABBCBDuHCACQQxBBBDuHAwCCyAAQQhqEKAPIABBKGoQ1AsMAQsgAEEQahCNGCAAQTBqKAIAIgJFDQAgAhCiASACQcAAQQgQ7hwLIABBOGohACABQX9qIgENAAsLC6kBAQJ/AkACQAJAIAEoAiBBgICAgHhGDQBBACECQQAtAMD/owEaQTAQjAEiA0UNAiADIAEpAwA3AwAgA0EoaiABQShqKQMANwMAIANBIGogAUEgaikDADcDACADQRhqIAFBGGopAwA3AwAgA0EQaiABQRBqKQMANwMAIANBCGogAUEIaikDADcDAAwBCyABKAIAIQNBASECCyAAIAM2AgQgACACNgIADwsAC7YBAQV/IwBBIGsiAiQAAkACQCABKALoASABKALkASIDRw0AIABBgLgCOwEADAELAkAgAy0AACIEQQJ0QfTgmgFqKAIAIgNFDQAgACABIAMRBwAMAQsgASABKAL0ASIDQQFqIgU2AvQBIAEgASgC7AEiBiABKALwAWo2AugBIAEgBiAFIAEoAvgBa2o2AuQBIAJBoYCAgHg2AgggAiAENgIMIAAgAyADIAJBCGoQozMLIAJBIGokAAu+AQEBfyMAQcAAayICJAAgACgCACgCACEAIAJBxPaaATYCOCACQbT2mgE2AjAgAiAAQThqNgIsIAJBnPSaATYCKCACIABBIGo2AiQgAkGM9JoBNgIgIAIgAEHEAGo2AhwgAkHs9JoBNgIYIAIgAEEIajYCFCACQdDzoAE2AhAgAiAANgIMIAIgAEEkajYCPCACIAJBPGo2AjQgAUHy4KABQQ9B0NygAUEGIAJBDGpBBhCgDSEAIAJBwABqJAAgAAvBAQEBfyMAQcAAayICJAAgACgCACgCACEAIAJBpPaaATYCOCACQZT2mgE2AjAgAiAANgIsIAJBjPSaATYCKCACIABB0gBqNgIkIAJBjPSaATYCICACIABB0QBqNgIcIAJBjPSaATYCGCACIABB0ABqNgIUIAJB0POgATYCECACIABByABqNgIMIAIgAEEgajYCPCACIAJBPGo2AjQgAUGk3KABQQxB9NugAUEGIAJBDGpBBhCgDSEAIAJBwABqJAAgAAusAQEDfyMAQSBrIgEkAAJAAkACQEEAKALc/qMBIgJFDQAgASACLQAAIgM6AAcgAkEBOgAAIANBAUYNASACQQxqKAIAIgMgAE0NAiACQQhqKAIAIABBDGxqKAIAIQAgAkEAOgAAIAFBIGokACAADwsQqDwACyABQgA3AhQgAUKBgICAwAA3AgwgAUHIvKABNgIIIAFBB2ogAUEIahDiKwALIAAgA0GchZsBEKEbAAu+AQEBfyMAQcAAayICJAAgACgCACgCACEAIAJBuKSgATYCOCACQaikoAE2AjAgAiAAQThqNgIsIAJB6KKgATYCKCACIABBIGo2AiQgAkHYoqABNgIgIAIgAEHEAGo2AhwgAkHIo6ABNgIYIAIgAEEIajYCFCACQdDzoAE2AhAgAiAANgIMIAIgAEEkajYCPCACIAJBPGo2AjQgAUHy4KABQQ9B0NygAUEGIAJBDGpBBhCgDSEAIAJBwABqJAAgAAvBAQEBfyMAQcAAayICJAAgACgCACgCACEAIAJBmKSgATYCOCACQYikoAE2AjAgAiAANgIsIAJB2KKgATYCKCACIABB0gBqNgIkIAJB2KKgATYCICACIABB0QBqNgIcIAJB2KKgATYCGCACIABB0ABqNgIUIAJB0POgATYCECACIABByABqNgIMIAIgAEEgajYCPCACIAJBPGo2AjQgAUGk3KABQQxB9NugAUEGIAJBDGpBBhCgDSEAIAJBwABqJAAgAAu+AQEBfyMAQcAAayICJAAgACgCACgCACEAIAJBwNygATYCOCACQbDcoAE2AjAgAiAAQThqNgIsIAJB1NWgATYCKCACIABBIGo2AiQgAkHE1aABNgIgIAIgAEHEAGo2AhwgAkGc26ABNgIYIAIgAEEIajYCFCACQdDzoAE2AhAgAiAANgIMIAIgAEEkajYCPCACIAJBPGo2AjQgAUHy4KABQQ9B0NygAUEGIAJBDGpBBhCgDSEAIAJBwABqJAAgAAvBAQEBfyMAQcAAayICJAAgACgCACgCACEAIAJB5NugATYCOCACQdTboAE2AjAgAiAANgIsIAJBxNWgATYCKCACIABB0gBqNgIkIAJBxNWgATYCICACIABB0QBqNgIcIAJBxNWgATYCGCACIABB0ABqNgIUIAJB0POgATYCECACIABByABqNgIMIAIgAEEgajYCPCACIAJBPGo2AjQgAUGk3KABQQxB9NugAUEGIAJBDGpBBhCgDSEAIAJBwABqJAAgAAu7AQEEfyMAQaABayICJAACQAJAIAG9Qv///////////wCDQv/////////3/wBVDQAgAkEQaiEDIAEgAkEQahDZAiEEDAELIAJBCGogARDEKSACKAIMIQQgAigCCCEDCyACQZQBaiAEQQFBARDhEyACKAKYASEFAkAgAigClAFBAUcNACAFIAIoApwBEPg5AAsgAigCnAEgAyAEEN8KIQMgACAENgIIIAAgAzYCBCAAIAU2AgAgAkGgAWokAAuaAQEGfyAAKAIAIQMgAyADIAAoAgQiBCABEPEYIgVqIgYtAAAhByAGIAGnQRl2Igg6AAAgAyAEIAVBeGpxakEIaiAIOgAAIAAgACgCDEEBajYCDCAAIAAoAgggB0EBcWs2AgggA0EAIAVrQRhsakFoaiIAIAIpAwA3AwAg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EGsiAiQAIAAoAgAiAygCBCEAIAMoAgghAyABKAIUQd/RoQFBASABKAIYKAIMEQsAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQgA0EFdCEBAkADQCABRQ0BIAIgADYCDCACQQRqIAJBDGpBoQMQswwaIAFBYGohASAAQSBqIQAMAAsLIAJBBGoQxy0hASACQRBqJAAgAQubAQEDfyMAQRBrIgIkACAAKAIAIgMoAgQhACADKAIIIQMgASgCFEHf0aEBQQEgASgCGCgCDBELACEEIAJBADoACSACIAQ6AAggAiABNgIEIANBOGwhAQJAA0AgAUUNASACIAA2AgwgAkEEaiACQQxqQaQDELMMGiABQUhqIQEgAEE4aiEADAALCyACQQRqEMctIQEgAkEQaiQAIAELmwEBA38jAEEQayICJAAgACgCACIDKAIEIQAgAygCCCEDIAEoAhRB39GhAUEBIAEoAhgoAgwRCwAhBCACQQA6AAkgAiAEOgAIIAIgATYCBCADQThsIQECQANAIAFFDQEgAiAANgIMIAJBBGogAkEMakGlAxCzDBogAUFIaiEBIABBOGohAAwACwsgAkEEahDHLSEBIAJBEGokACABC5sBAQN/IwBBEGsiAiQAIAAoAgAiAygCBCEAIAMoAgghAyABKAIUQd/RoQFBASABKAIYKAIMEQsAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQgA0EwbCEBAkADQCABRQ0BIAIgADYCDCACQQRqIAJBDGpBiAMQswwaIAFBUGohASAAQTBqIQAMAAsLIAJBBGoQxy0hASACQRBqJAAgAQubAQEDfyMAQRBrIgIkACAAKAIAIgMoAgQhACADKAIIIQMgASgCFEHf0aEBQQEgASgCGCgCDBELACEEIAJBADoACSACIAQ6AAggAiABNgIEIANBGGwhAQJAA0AgAUUNASACIAA2AgwgAkEEaiACQQxqQdADELMMGiABQWhqIQEgAEEYaiEADAALCyACQQRqEMctIQEgAkEQaiQAIAELmwEBA38jAEEQayICJAAgACgCACIDKAIEIQAgAygCCCEDIAEoAhRB39GhAUEBIAEoAhgoAgwRCwAhBCACQQA6AAkgAiAEOgAIIAIgATYCBCADQThsIQECQANAIAFFDQEgAiAANgIMIAJBBGogAkEMakH5AxCzDBogAUFIaiEBIABBOGohAAwACwsgAkEEahDHLSEBIAJBEGokACABC5sBAQN/IwBBEGsiAiQAIAAoAgAiAygCBCEAIAMoAgghAyABKAIUQd/RoQFBASABKAIYKAIMEQsAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQgA0EwbCEBAkADQCABRQ0BIAIgADYCDCACQQRqIAJBDGpB5wMQswwaIAFBUGohASAAQTBqIQAMAAsLIAJBBGoQxy0hASACQRBqJAAgAQubAQEDfyMAQRBrIgIkACAAKAIAIgMoAgQhACADKAIIIQMgASgCFEHf0aEBQQEgASgCGCgCDBELACEEIAJBADoACSACIAQ6AAggAiABNgIEIANBDGwhAQJAA0AgAUUNASACIAA2AgwgAkEEaiACQQxqQYQEELMMGiABQXRqIQEgAEEMaiEADAALCyACQQRqEMctIQEgAkEQaiQAIAELmwEBA38jAEEQayICJAAgACgCACIDKAIEIQAgAygCCCEDIAEoAhRB39GhAUEBIAEoAhgoAgwRCwAhBCACQQA6AAkgAiAEOgAIIAIgATYCBCADQThsIQECQANAIAFFDQEgAiAANgIMIAJBBGogAkEMakGJBBCzDBogAUFIaiEBIABBOGohAAwACwsgAkEEahDHLSEBIAJBEGokACABC5sBAQN/IwBBEGsiAiQAIAAoAgAiAygCBCEAIAMoAgghAyABKAIUQd/RoQFBASABKAIYKAIMEQsAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQgA0EwbCEBAkADQCABRQ0BIAIgADYCDCACQQRqIAJBDGpBnAQQswwaIAFBUGohASAAQTBqIQAMAAsLIAJBBGoQxy0hASACQRBqJAAgAQubAQEDfyMAQRBrIgIkACAAKAIAIgMoAgQhACADKAIIIQMgASgCFEHf0aEBQQEgASgCGCgCDBELACEEIAJBADoACSACIAQ6AAggAiABNgIEIANBBHQhAQJAA0AgAUUNASACIAA2AgwgAkEEaiACQQxqQagEELMMGiABQXBqIQEgAEEQaiEADAALCyACQQRqEMctIQEgAkEQaiQAIAELmwEBA38jAEEQayICJAAgACgCACIDKAIEIQAgAygCCCEDIAEoAhRB39GhAUEBIAEoAhgoAgwRCwAhBCACQQA6AAkgAiAEOgAIIAIgATYCBCADQQN0IQECQANAIAFFDQEgAiAANgIMIAJBBGogAkEMakHfARCzDBogAUF4aiEBIABBCGohAAwACwsgAkEEahDHLSEBIAJBEGokACABC7QBAQJ/QQghAkEEIQMCQAJAAkACQAJAAkACQAJAIAEoAgAOFAcHAAYGAQYBBgYCAgYGBgMGBAUGBwtBHEEYIAEoAgRBgICAgHhGIgMbIQJBGEEUIAMbIQMMBgtBFCECQRAhAwwFC0EYIQJBFCEDDAQLQRAhAkEMIQMMAwtBLCECQSghAwwCC0EkIQJBICEDDAELQQwhAkEIIQMLIAAgASACaigCADYCBCAAIAEgA2ooAgA2AgALowEBAn8jAEEQayICJAAgACgCACEAAkACQAJAAkACQCABKAIADgUEAAECAwQLIAEoAgRBAUcNAyAAIAEoAggQsAMMAwsgACABKAIEELADDAILIAEoAgQgABDjBgwBCyABKAIMIQMgASgCCCEBIAIgADYCDCADRQ0AIANBKGwhAANAIAJBDGogARCXFSABQShqIQEgAEFYaiIADQALCyACQRBqJAALmgEBA38jAEEQayICJAACQCABRQ0AIAAoAhwgACgCICABKAIQENo2IQMgAiAAKAIoIAAoAiwgASgCDCIEIAMoAhgiAyAEIANJGyAEIAMgBCADSxsQryYgAiACKAIAIgQgAigCBGo2AgwgAiAENgIIIAJBCGoQ/h1FDQAgASgCDCEBIAAgA0EgEP0nIAAgAUEoEP0nCyACQRBqJAALmwEBA38jAEEQayICJAAgACgCACIDKAIEIQAgAygCCCEDIAEoAhRB39GhAUEBIAEoAhgoAgwRCwAhBCACQQA6AAkgAiAEOgAIIAIgATYCBCADQShsIQECQANAIAFFDQEgAiAANgIMIAJBBGogAkEMakG6CxCzDBogAUFYaiEBIABBKGohAAwACwsgAkEEahDHLSEBIAJBEGokACABC6QBAQZ/IwBBEGsiASQAIAFBCGogAEGkA2oiAiAAKAL8BSIDQQAgABC1IyAAKAK4AyEEIAAoArQDIQUgASgCDCEAIAEoAgghBgJAA0AgBkEBRw0BAkAgBSAEIABB5JGAARDsMCgAAUEBRw0AIAUgBCAAQfSRgAEQ7DAgAzYAAQsgASACIANBASAAELUjIAEoAgQhACABKAIAIQYMAAsLIAFBEGok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DQELIANBADYCECADQQhqIAIgA0EQakHEq6EBENIRAkACQCADLQAIQQRGDQAgAykDCCIEQv8Bg0IEUg0BCyAAQQQ6AAAMAgsgACAENwIADAELIAAgBDcCAAsgA0EgaiQAC6gBAQF/IwBBwABrIgMkACADQQA2AhQgA0KAgICAEDcCDCADQQM6ADggA0EgNgIoIANBADYCNCADQfywoQE2AjAgA0EANgIgIANBADYCGCADIANBDGo2AiwCQCABIAIgA0EYahCfOw0AIAAgAykCDDcCACAAQQhqIANBDGpBCGooAgA2AgAgA0HAAGokAA8LQdzBoQFBNyADQT9qQZSxoQFB4MKhARCxGAALqAEBAX8jAEHAAGsiAyQAIANBADYCFCADQoCAgIAQNwIMIANBAzoAOCADQSA2AiggA0EANgI0IANBiIihATYCMCADQQA2AiAgA0EANgIYIAMgA0EMajYCLAJAIAEgAiADQRhqEJ87DQAgACADKQIMNwIAIABBCGogA0EMakEIaigCADYCACADQcAAaiQADwtB3MGhAUE3IANBP2pBoIihAUHgwqEBELEYAAuoAQEBfyMAQcAAayIDJAAgA0EANgIUIANCgICAgBA3AgwgA0EDOgA4IANBIDYCKCADQQA2AjQgA0G0waEBNgIwIANBADYCICADQQA2AhggAyADQQxqNgIsAkAgASACIANBGGoQnzsNACAAIAMpAgw3AgAgAEEIaiADQQxqQQhqKAIANgIAIANBwABqJAAPC0HcwaEBQTcgA0E/akHMwaEBQeDCoQEQsRgAC6MBAQF/IwBBEGsiBCQAAkACQAJAIAAtAAANACAAIAEgAhDmGCICDQIgAC0AAA0BIARBCGogACgCBCIAKAIAEOs6IARBCGoQkDIiAg0CIAMgACgCABDdCyICDQIgBEEEOgAIIARBCGoQkDIhAgwCCwJAIAEgAhDsOg0AEOsxIQIMAgsQ8QIhAgwBC0GUzqEBQShB+NKhARDTJwALIARBEGokACACC6MBAQF/IwBBEGsiBCQAAkACQAJAIAAtAAANACAAIAEgAhDmGCICDQIgAC0AAA0BIARBCGogACgCBCIAKAIAEOs6IARBCGoQkDIiAg0CIAMgACgCABCfMSICDQIgBEEEOgAIIARBCGoQkDIhAgwCCwJAIAEgAhDsOg0AEOsxIQIMAgsQ8QIhAgwBC0GUzqEBQShB+NKhARDTJwALIARBEGokACACC50BAQR/IwBBEGsiAiQAIAIgASgCFCIDEMYtAkACQCACKAIADQAgAigCBCEEAkAgAyABQQxqIgUoAgBHDQAgBRC4JgsgACAENgIEIABBAzYCACABIANBAWo2AhQgASgCECADQQlsaiIBQgA3AAAgAUEIakEAOgAADAELIAAgAikDCDcDECAAQv7///8HNwMIIABBADYCAAsgAkEQaiQAC5UBAQN/IwBBEGsiAiQAIAAoAgQhAyAAKAIIIQAgASgCFEHf0aEBQQEgASgCGCgCDBELACEEIAJBADoACSACIAQ6AAggAiABNgIEIABBAnQhAQJAA0AgAUUNASACIAM2AgwgAkEEaiACQQxqQR0QswwaIAFBfGohASADQQRqIQMMAAsLIAJBBGoQxy0hASACQRBqJAAgAQuVAQEDfyMAQRBrIgIkACAAKAIEIQMgACgCCCEAIAEoAhRB39GhAUEBIAEoAhgoAgwRCwAhBCACQQA6AAkgAiAEOgAIIAIgATYCBCAAQQxsIQECQANAIAFFDQEgAiADNgIMIAJBBGogAkEMakEsELMMGiABQXRqIQEgA0EMaiEDDAALCyACQQRqEMctIQEgAkEQaiQAIAELlQEBA38jAEEQayICJAAgACgCBCEDIAAoAgghACABKAIUQd/RoQFBASABKAIYKAIMEQsAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQgAEEMbCEBAkADQCABRQ0BIAIgAzYCDCACQQRqIAJBDGpBLRCzDBogAUF0aiEBIANBDGohAwwACwsgAkEEahDHLSEBIAJBEGokACABC5UBAQN/IwBBEGsiAiQAIAAoAgQhAyAAKAIIIQAgASgCFEHf0aEBQQEgASgCGCgCDBELACEEIAJBADoACSACIAQ6AAggAiABNgIEIABBAnQhAQJAA0AgAUUNASACIAM2AgwgAkEEaiACQQxqQSsQswwaIAFBfGohASADQQRqIQMMAAsLIAJBBGoQxy0hASACQRBqJAAgAQuQAQEFfyMAQYABayICJABB/wAhAwNAIAIgAyIEaiIFIABBD3EiA0EwciADQTdqIANBCkkbOgAAIARBf2ohAyAAQf8BcSIGQQR2IQAgBkEQTw0ACwJAIARBgQFJDQAgBEGAAUHg+YABEKIbAAsgAUEBQeStoQFBAiAFQYEBIARBAWprEI4HIQAgAkGAAWokACAAC4cBAQN/AkAgA0H4////AXFFDQAgACAAIANBA3YiA0EEdCIEaiAAIANBHGwiBWogAxCyFSEAIAEgASAEaiABIAVqIAMQshUhASACIAIgBGogAiAFaiADELIVIQILIAAgAiABIAAoAgAiAyABKAIAIgRJIgUgBCACKAIAIgZJcxsgBSADIAZJcxsLpgEBAX8jAEHAAGsiAiQAIAJBADYCFCACQoCAgIAQNwIMIAJBAzoAOCACQSA2AiggAkEANgI0IAJBmL+AATYCMCACQQA2AiAgAkEANgIYIAIgAkEMajYCLAJAIAEgAkEYahDyKQ0AIAAgAikCDDcCACAAQQhqIAJBDGpBCGooAgA2AgAgAkHAAGokAA8LQdzBoQFBNyACQT9qQbC/gAFB4MKhARCxGAALpgEBAX8jAEHAAGsiAiQAIAJBADYCFCACQoCAgIAQNwIMIAJBAzoAOCACQSA2AiggAkEANgI0IAJBmL+AATYCMCACQQA2AiAgAkEANgIYIAIgAkEMajYCLAJAIAEgAkEYahCEJw0AIAAgAikCDDcCACAAQQhqIAJBDGpBCGooAgA2AgAgAkHAAGokAA8LQdzBoQFBNyACQT9qQbC/gAFB4MKhARCxGAALpgEBAX8jAEHAAGsiAiQAIAJBADYCFCACQoCAgIAQNwIMIAJBAzoAOCACQSA2AiggAkEANgI0IAJBvMiAATYCMCACQQA2AiAgAkEANgIYIAIgAkEMajYCLAJAIAEgAkEYahCEJw0AIAAgAikCDDcCACAAQQhqIAJBDGpBCGooAgA2AgAgAkHAAGokAA8LQdzBoQFBNyACQT9qQdTIgAFB4MKhARCxGAALlQEBA38jAEEgayIBJABBACECAkAgAEF/c0EfdiAAQbTNgAEQqCsiA0H4////B0sNAEEEIQIgAUEENgIcIAEgA0EEajYCGAsgASACNgIUIAFBCGogAUEUakHQzYABEOgiAkAgASgCCCIAIAAgASgCDGpBf2pBACAAa3EQxzgiAA0AAAsgACADNgAAIAFBIGokACAAQQRqC6sBAQN/IwBBIGsiAiQAIAJCABDLDQJAAkAgAigCAEGEgICAeEcNAEEALQDA/6MBGiACKAIEIQNBEBCMASIERQ0BIAQgAToADCAEIAM2AgggBEKBgICAEDcCACAAQeD4ggE2AgQgACAENgIAIAJBIGokAA8LIAJBEGpBCGogAkEIaikDADcDACACIAIpAwA3AxBBkMOhAUErIAJBEGpBsPKCAUHw94IBELEYCwALlgEBA38jAEEQayICJAAgACgCCCEDIAAoAgQhACABKAIUQd/RoQFBASABKAIYKAIMEQsAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBA3QhAQNAIAIgADYCDCACQQRqIAJBDGpBqwEQswwaIABBCGohACABQXhqIgENAAsLIAJBBGoQxy0hACACQRBqJAAgAAuWAQEDfyMAQRBrIgIkACAAKAIIIQMgACgCBCEAIAEoAhRB39GhAUEBIAEoAhgoAgwRCwAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0ECdCEBA0AgAiAANgIMIAJBBGogAkEMakGBARCzDBogAEEEaiEAIAFBfGoiAQ0ACwsgAkEEahDHLSEAIAJBEGokACAAC5YBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCFEHf0aEBQQEgASgCGCgCDBELACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQQV0IQEDQCACIAA2AgwgAkEEaiACQQxqQa4BELMMGiAAQSBqIQAgAUFgaiIBDQALCyACQQRqEMctIQAgAkEQaiQAIAALlgEBA38jAEEQayICJAAgACgCCCEDIAAoAgQhACABKAIUQd/RoQFBASABKAIYKAIMEQsAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBDGwhAQNAIAIgADYCDCACQQRqIAJBDGpBrwEQswwaIABBDGohACABQXRqIgENAAsLIAJBBGoQxy0hACACQRBqJAAgAAuZAQEDfyMAQdAAayICJAACQCABKAIgDQAgAUF/NgIgIAJBCDYCQCACIAFBJGogAkHAAGoQoA4gASABKAIgQQFqNgIgIABBCGohAyACKAIEIQECQAJAIAIoAgAiBEEqRw0AIAMgATYCAAwBCyADIAJBCGpBOBDfChoLIAAgBDYCACAAIAE2AgQgAkHQAGokAA8LQaSsgwEQ6SIAC5cBAQN/IwBBEGsiAiQAAkACQCABQYABSQ0AIAJBADYCDCACIAEgAkEMahCGDyACKAIAIQMgACACKAIEIgEQ+S8gACgCBCAAKAIIIgRqIAMgARDfChogACAEIAFqNgIIDAELAkAgACgCCCIDIAAoAgBHDQAgABDAJgsgACADQQFqNgIIIAAoAgQgA2ogAToAAAsgAkEQaiQAC5YBAQN/IwBBEGsiAiQAIAAoAgQhAyAAKAIIIQAgASgCFEHf0aEBQQEgASgCGCgCDBELACEEIAJBADoACSACIAQ6AAggAiABNgIEIABBA3QhAQJAA0AgAUUNASACIAM2AgwgAkEEaiACQQxqQe8BELMMGiABQXhqIQEgA0EIaiEDDAALCyACQQRqEMctIQEgAkEQaiQAIAELlgEBA38jAEEQayICJAAgACgCBCEDIAAoAgghACABKAIUQd/RoQFBASABKAIYKAIMEQsAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQgAEEBdCEBAkADQCABRQ0BIAIgAzYCDCACQQRqIAJBDGpB8AEQswwaIAFBfmohASADQQJqIQMMAAsLIAJBBGoQxy0hASACQRBqJAAgAQumAQEBfyMAQcAAayICJAAgAkEANgIUIAJCgICAgBA3AgwgAkEDOgA4IAJBIDYCKCACQQA2AjQgAkHsn5cBNgIwIAJBADYCICACQQA2AhggAiACQQxqNgIsAkAgASACQRhqEPk5DQAgACACKQIMNwIAIABBCGogAkEMakEIaigCADYCACACQcAAaiQADwtB3MGhAUE3IAJBP2pBhKCXAUHgwqEBELEYAAuWAQEDfyMAQRBrIgIkACAAKAIEIQMgACgCCCEAIAEoAhRB39GhAUEBIAEoAhgoAgwRCwAhBCACQQA6AAkgAiAEOgAIIAIgATYCBCAAQQR0IQECQANAIAFFDQEgAiADNgIMIAJBBGogAkEMakGSAhCzDBogAUFwaiEBIANBEGohAwwACwsgAkEEahDHLSEBIAJBEGokACABC5YBAQN/IwBBEGsiAiQAIAAoAgQhAyAAKAIIIQAgASgCFEHf0aEBQQEgASgCGCgCDBELACEEIAJBADoACSACIAQ6AAggAiABNgIEIABBA3QhAQJAA0AgAUUNASACIAM2AgwgAkEEaiACQQxqQZQCELMMGiABQXhqIQEgA0EIaiEDDAALCyACQQRqEMctIQEgAkEQaiQAIAELpgEBAX8jAEHAAGsiAiQAIAJBADYCFCACQoCAgIAQNwIMIAJBAzoAOCACQSA2AiggAkEANgI0IAJB8KSZATYCMCACQQA2AiAgAkEANgIYIAIgAkEMajYCLAJAIAEgAkEYahD0KQ0AIAAgAikCDDcCACAAQQhqIAJBDGpBCGooAgA2AgAgAkHAAGokAA8LQdzBoQFBNyACQT9qQYilmQFB4MKhARCxGAALrAEBA38CQCABKALAASABKALEARDiLSIDQYCAxABGDQAgAUHAAWoiBBClI0EAIQUCQCADQQ1HDQBBDSEDQQAhBSABKALAASABKALEARDiLUEKRw0AIAQQpSNBpIuhAUHag6EBIAIbIQVBAUECIAIbIQMLIAAgAzYCCCAAIAU2AgQgAEEANgIAIAEgASgC0AE2AqQBIAEgASgCoAFBAWo2AqABDwtBqMuaARD9OQALlgEBA38jAEEQayICJAAgACgCBCEDIAAoAgghACABKAIUQd/RoQFBASABKAIYKAIMEQsAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQgAEEobCEBAkADQCABRQ0BIAIgAzYCDCACQQRqIAJBDGpB5gIQswwaIAFBWGohASADQShqIQMMAAsLIAJBBGoQxy0hASACQRBqJAAgAQuWAQEDfyMAQRBrIgIkACAAKAIEIQMgACgCCCEAIAEoAhRB39GhAUEBIAEoAhgoAgwRCwAhBCACQQA6AAkgAiAEOgAIIAIgATYCBCAAQQJ0IQECQANAIAFFDQEgAiADNgIMIAJBBGogAkEMakHoAhCzDBogAUF8aiEBIANBBGohAwwACwsgAkEEahDHLSEBIAJBEGokACABC5YBAQN/IwBBEGsiAiQAIAAoAgQhAyAAKAIIIQAgASgCFEHf0aEBQQEgASgCGCgCDBELACEEIAJBADoACSACIAQ6AAggAiABNgIEIABBKGwhAQJAA0AgAUUNASACIAM2AgwgAkEEaiACQQxqQccDELMMGiABQVhqIQEgA0EoaiEDDAALCyACQQRqEMctIQEgAkEQaiQAIAELmQEBA38jAEEQayICJAAgACgCBCEDIAAoAgghACABKAIUQd/RoQFBASABKAIYKAIMEQsAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQgAEHYAGwhAQJAA0AgAUUNASACIAM2AgwgAkEEaiACQQxqQcsDELMMGiABQah/aiEBIANB2ABqIQMMAAsLIAJBBGoQxy0hASACQRBqJAAgAQuWAQEDfyMAQRBrIgIkACAAKAIEIQMgACgCCCEAIAEoAhRB39GhAUEBIAEoAhgoAgwRCwAhBCACQQA6AAkgAiAEOgAIIAIgATYCBCAAQQJ0IQECQANAIAFFDQEgAiADNgIMIAJBBGogAkEMakHUAhCzDBogAUF8aiEBIANBBGohAwwACwsgAkEEahDHLSEBIAJBEGokACABC5YBAQN/IwBBEGsiAiQAIAAoAgQhAyAAKAIIIQAgASgCFEHf0aEBQQEgASgCGCgCDBELACEEIAJBADoACSACIAQ6AAggAiABNgIEIABBBHQhAQJAA0AgAUUNASACIAM2AgwgAkEEaiACQQxqQaoEELMMGiABQXBqIQEgA0EQaiEDDAALCyACQQRqEMctIQEgAkEQaiQAIAELlgEBA38jAEEQayICJAAgACgCBCEDIAAoAgghACABKAIUQd/RoQFBASABKAIYKAIMEQsAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQgAEEMbCEBAkADQCABRQ0BIAIgAzYCDCACQQRqIAJBDGpBuAQQswwaIAFBdGohASADQQxqIQMMAAsLIAJBBGoQxy0hASACQRBqJAAgAQuWAQEDfyMAQRBrIgIkACAAKAIEIQMgACgCCCEAIAEoAhRB39GhAUEBIAEoAhgoAgwRCwAhBCACQQA6AAkgAiAEOgAIIAIgATYCBCAAQQR0IQECQANAIAFFDQEgAiADNgIMIAJBBGogAkEMakG5BBCzDBogAUFwaiEBIANBEGohAwwACwsgAkEEahDHLSEBIAJBEGokACABC5kBAQN/IwBBEGsiAiQAIAAoAgQhAyAAKAIIIQAgASgCFEHf0aEBQQEgASgCGCgCDBELACEEIAJBADoACSACIAQ6AAggAiABNgIEIABB2ABsIQECQANAIAFFDQEgAiADNgIMIAJBBGogAkEMakG9BBCzDBogAUGof2ohASADQdgAaiEDDAALCyACQQRqEMctIQEgAkEQaiQAIAELlgEBA38jAEEQayICJAAgACgCBCEDIAAoAgghACABKAIUQd/RoQFBASABKAIYKAIMEQsAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQgAEE4bCEBAkADQCABRQ0BIAIgAzYCDCACQQRqIAJBDGpBxQQQswwaIAFBSGohASADQThqIQMMAAsLIAJBBGoQxy0hASACQRBqJAAgAQuZAQEDfyMAQRBrIgIkACAAKAIEIQMgACgCCCEAIAEoAhRB39GhAUEBIAEoAhgoAgwRCwAhBCACQQA6AAkgAiAEOgAIIAIgATYCBCAAQdAAbCEBAkADQCABRQ0BIAIgAzYCDCACQQRqIAJBDGpByAQQswwaIAFBsH9qIQEgA0HQAGohAwwACwsgAkEEahDHLSEBIAJBEGokACABC5kBAQN/IwBBEGsiAiQAIAAoAgQhAyAAKAIIIQAgASgCFEHf0aEBQQEgASgCGCgCDBELACEEIAJBADoACSACIAQ6AAggAiABNgIEIABByABsIQECQANAIAFFDQEgAiADNgIMIAJBBGogAkEMakHMBBCzDBogAUG4f2ohASADQcgAaiEDDAALCyACQQRqEMctIQEgAkEQaiQAIAELlwEBA38jAEEQayICJAAgACgCBCEDIAAoAgghACABKAIUQd/RoQFBASABKAIYKAIMEQsAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQgAEEGdCEBAkADQCABRQ0BIAIgAzYCDCACQQRqIAJBDGpB0AQQswwaIAFBQGohASADQcAAaiEDDAALCyACQQRqEMctIQEgAkEQaiQAIAELlgEBA38jAEEQayICJAAgACgCBCEDIAAoAgghACABKAIUQd/RoQFBASABKAIYKAIMEQsAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQgAEEobCEBAkADQCABRQ0BIAIgAzYCDCACQQRqIAJBDGpB4QIQswwaIAFBWGohASADQShqIQMMAAsLIAJBBGoQxy0hASACQRBqJAAgAQuWAQEDfyMAQRBrIgIkACAAKAIEIQMgACgCCCEAIAEoAhRB39GhAUEBIAEoAhgoAgwRCwAhBCACQQA6AAkgAiAEOgAIIAIgATYCBCAAQShsIQECQANAIAFFDQEgAiADNgIMIAJBBGogAkEMakHRBBCzDBogAUFYaiEBIANBKGohAwwACwsgAkEEahDHLSEBIAJBEGokACABC5cBAQN/IwBBEGsiAiQAIAAoAgQhAyAAKAIIIQAgASgCFEHf0aEBQQEgASgCGCgCDBELACEEIAJBADoACSACIAQ6AAggAiABNgIEIABBBnQhAQJAA0AgAUUNASACIAM2AgwgAkEEaiACQQxqQbwEELMMGiABQUBqIQEgA0HAAGohAwwACwsgAkEEahDHLSEBIAJBEGokACABC5YBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCFEHf0aEBQQEgASgCGCgCDBELACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQShsIQEDQCACIAA2AgwgAkEEaiACQQxqQYoGELMMGiAAQShqIQAgAUFYaiIBDQALCyACQQRqEMctIQAgAkEQaiQAIAALlwEBA38jAEEQayICJAAgACgCCCEDIAAoAgQhACABKAIUQd/RoQFBASABKAIYKAIMEQsAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBBnQhAQNAIAIgADYCDCACQQRqIAJBDGpBiwYQswwaIABBwABqIQAgAUFAaiIBDQALCyACQQRqEMctIQAgAkEQaiQAIAALmQEBA38jAEEQayICJAAgACgCCCEDIAAoAgQhACABKAIUQd/RoQFBASABKAIYKAIMEQsAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANB2ABsIQEDQCACIAA2AgwgAkEEaiACQQxqQY0GELMMGiAAQdgAaiEAIAFBqH9qIgENAAsLIAJBBGoQxy0hACACQRBqJAAgAAuWAQEDfyMAQRBrIgIkACAAKAIIIQMgACgCBCEAIAEoAhRB39GhAUEBIAEoAhgoAgwRCwAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0EobCEBA0AgAiAANgIMIAJBBGogAkEMakGPBhCzDBogAEEoaiEAIAFBWGoiAQ0ACwsgAkEEahDHLSEAIAJBEGokACAAC5YBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCFEHf0aEBQQEgASgCGCgCDBELACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQShsIQEDQCACIAA2AgwgAkEEaiACQQxqQa8FELMMGiAAQShqIQAgAUFYaiIBDQALCyACQQRqEMctIQAgAkEQaiQAIAALlgEBA38jAEEQayICJAAgACgCCCEDIAAoAgQhACABKAIUQd/RoQFBASABKAIY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BAwBCyADIAEQljIgAygCBCEEIAMoAgAhAgsgACACQQEgAhs2AgQgACACRTYCACAAIAQgASACGzYCCCADQRBqJAALlQEBBH8jAEEQayICJABBASEDAkAgASgCFCIEQScgASgCGCIFKAIQIgERCAANACACQQRqIAAoAgBBgQIQkAYCQAJAIAItAARBgAFHDQAgBCACKAIIIAERCABFDQEMAgsgBCACQQRqIAItAA4iAGogAi0ADyAAayAFKAIMEQsADQELIARBJyABEQgAIQMLIAJBEGokACADC5UBAQJ/IwBBEGsiAyQAAkACQCACKAIERQ0AAkAgAigCCCIEDQAgA0EIaiABEIEuIAMoAgwhBCADKAIIIQIMAgsgAigCACAEQcAAIAEQogUhAiABIQQMAQsgAyABEIEuIAMoAgQhBCADKAIAIQILIAAgAkHAACACGzYCBCAAIAJFNgIAIAAgBCABIAIbNgIIIANBEGokAAuUAQECfyAAKAIYIgEgASgCACIBQX9qNgIAAkAgAUEBRw0AIABBGGoQ/CMLIAAoAgwiASABKAIAIgFBf2o2AgACQCABQQFHDQAgAEEMahD8IwsgACgCBCIBIAAoAggQ6isgACgCACABEP45AkAgACgCHCIBRQ0AIAEgASgCACICQX9qNgIAIAJBAUcNACAAQRxqEPgXCwuNAQEDfyMAQRBrIgQkAAJAAkAgA0EHSw0AQQAhBSABQf8BcSEGQQAhAQNAAkAgAyABRw0AIAMhAQwDCwJAIAIgAWotAAAgBkcNAEEBIQUMAwsgAUEBaiEBDAALCyAEQQhqIAEgAiADELcLIAQoAgwhASAEKAIIIQULIAAgATYCBCAAIAU2AgAgBEEQaiQAC5wBAQF/IwBBwABrIgIkACACQgA3AzggAkE4aiAAKAIAECggAiACKAI8IgA2AjQgAiACKAI4NgIwIAIgADYCLCACQT82AiggAkECNgIQIAJBwOKiATYCDCACQgE3AhggAiACQSxqNgIkIAIgAkEkajYCFCABKAIUIAEoAhggAkEMahCdByEBIAIoAiwgAigCMBD2OSACQcAAaiQAIAELpgEBA38jAEEQayICJABBvfSYASEDQRMhBAJAAkACQAJAIAEtAAAOBAMCAAEDCyABKAIEIgEoAgQhBCABKAIAIQMMAgsgAkEIaiABKAIEIgEo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AUHy4KABQQ8gAkEMakHyAxDpECEACyACQRBqJAAgAAuQAQECfyMAQRBrIgEkAAJAAkAgACgChAEiAkGBAUkNACAAKAIEIgJBf0YNAQtBfyACZ3ZBACACGyICQX9GDQAgAUEIaiAAIAJBAWoQ0woCQCABKAIIIgJBgYCAgHhGDQACQCACDQBB9PegAUERQeT5mgEQ0ycLAAsgAUEQaiQADwtB9PegAUERQfT5mgEQqh4AC5YBAQF/IwBBEGsiAiQAAkACQAJAAkAgACgCACIAKAIADgMAAQIACyACIABBCGo2AgQgAUGA9KABQQUgAkEEakHgBRDpECEADAILIAIgAEEIajYCCCABQYLtoAFBCyACQQhqQZ0FEOkQIQAMAQsgAiAAQQRqNgIMIAFB6+ygAUEIIAJBDGpB4QUQ6RAhAAsgAkEQaiQAIAALiAEBAn8jAEEQayIDJAAgAigCFEHf0aEBQQEgAigCGCgCDBELACEEIANBADoACSADIAQ6AAggAyACNgIEAkAgAUUNACABQQR0IQIDQCADIAA2AgwgA0EEaiADQQxqQfQFELMMGiAAQRBqIQAgAkFwaiICDQALCyADQQRqEMctIQAgA0EQaiQAIAALiAEBAn8jAEEQayIDJAAgAigCFEHf0aEBQQEgAigCGCgCDBELACEEIANBADoACSADIAQ6AAggAyACNgIEAkAgAUUNACABQQJ0IQIDQCADIAA2AgwgA0EEaiADQQxqQfEEELMMGiAAQQRqIQAgAkF8aiICDQALCyADQQRqEMctIQAgA0EQaiQAIAALiAEBAn8jAEEQayIDJAAgAigCFEHf0aEBQQEgAigCGCgCDBELACEEIANBADoACSADIAQ6AAggAyACNgIEAkAgAUUNACABQQJ0IQIDQCADIAA2AgwgA0EEaiADQQxqQfMFELMMGiAAQQRqIQAgAkF8aiICDQALCyADQQRqEMctIQAgA0EQaiQAIAALiAEBAn8jAEEQayIDJAAgAigCFEHf0aEBQQEgAigCGCgCDBELACEEIANBADoACSADIAQ6AAggAyACNgIEAkAgAUUNACABQQR0IQIDQCADIAA2AgwgA0EEaiADQQxqQYkGELMMGiAAQRBqIQAgAkFwaiICDQALCyADQQRqEMctIQAgA0EQaiQAIAALlgEBAX8jAEEQayICJAACQAJA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IAMgADYCDCADQQRqIANBDGpB0QkQswwaIABBEGohACACQXBqIgINAAsLIANBBGoQxy0hACADQRBqJAAgAAuIAQECfyMAQRBrIgMkACACKAIUQd/RoQFBASACKAIYKAIMEQsAIQQgA0EAOgAJIAMgBDoACCADIAI2AgQCQCABRQ0AIAFBAnQhAgNAIAMgADYCDCADQQRqIANBDGpBuQkQswwaIABBBGohACACQXxqIgINAAsLIANBBGoQxy0hACADQRBqJAAgAAuIAQECfyMAQRBrIgMkACACKAIUQd/RoQFBASACKAIYKAIMEQsAIQQgA0EAOgAJIAMgBDoACCADIAI2AgQCQCABRQ0AIAFBBHQhAgNAIAMgADYCDCADQQRqIANBDGpB9gkQswwaIABBEGohACACQXBqIgINAAsLIANBBGoQxy0hACADQRBqJAAgAAuWAQEBfyMAQRBrIgIkAAJAAkACQAJAIAAoAgAiACgCAA4DAAECAAsgAiAAQQhqNgIEIAFBr+2gAUEIIAJBBGpB/QkQ6RAhAAwCCyACIABBCGo2AgggAUGP7KABQQYgAkEIakH+CRDpECEADAELIAIgAEEEajYCDCABQYXsoAFBBCACQQxqQbYJEOkQIQALIAJBEGokACAAC5YBAQF/IwBBEGsiAiQAAkACQAJAAkAgACgCACIAKAIADgMAAQIACyACIABBCGo2AgQgAUGA9KABQQUgAkEEakHgBRDpECEADAILIAIgAEEIajYCCCABQYLtoAFBCyACQQhqQZ0FEOkQIQAMAQsgAiAAQQRqNgIMIAFB6+ygAUEIIAJBDGpBtAoQ6RAhAAsgAkEQaiQAIAALlgEBAX8jAEEQayICJAACQAJAAkACQCAAKAIAIgAoAgAOAwABAgALIAIgAEEIajYCBCABQffdoAFBBSACQQRqQacKEOkQIQAMAgsgAiAAQQhqNgIIIAFB/N2gAUECIAJBCGpBmQoQ6RAhAAwBCyACIABBBGo2AgwgAUHy4KABQQ8gAkEMakHDCRDpECEACyACQRBqJAAgAAugAQEBfyAAKAJ0IAAoAngQkDogACgCgAEgACgChAEQkDogACgCkAEiASAAKAKUARCWJyAAKAKMASABEJc6IAAQqiIgAEEwahDnMyAAQcwAahDnMyAAKAKYASAAKAKcARCQOiAAKAKkASAA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MCIARQ0AIAAQqgEgAEHAAEEIEO4cCwuRAQEBfwJAAkAgACgCACIAKAIAQQNGDQAgACgCICIBELABIAFBwABBCBDuHCAAEPURDAELIAAoAhAiARCwASABQcAAQQgQ7hwgAEEEahDmJyAAKAIEIABBCGooAgAQ2zMgACgCICIBRQ0AIAEQyCkgASgCACABQQRqKAIAEN8zIAFBFEEEEO4cCyAAQShBCBDuHAuRAQECfyMAQRBrIgIkAAJAAkACQEH///93IAFBECABQRBLGyIDQYCAgHByIAFB/v//B0sbIgFB////d0YNACADQX9MDQJBAC0AwP+jARogAxCMASIDDQEACyADELYVIQMLIAAgAzYCBCAAIAE2AgAgAkEQaiQADwtB6KOZAUEOIAJBD2pBlJ+ZAUHgpJkBELEYAAuRAQECfyMAQRBrIgIkAAJAAkACQEH///93IAFBECABQRBLGyIDQYCAgHByIAFB/v//B0sbIgFB////d0YNACADQX9MDQJBAC0AwP+jARogAxCMASIDDQEACyADELYVIQMLIAAgAzYCBCAAIAE2AgAgAkEQaiQADwtB6KOZAUEOIAJBD2pBmKWZAUHgpJkBELEYAAuGAQEFf0GAASECAkACQCAAKAKEASIDQYABSw0AIABBhAFqIQQgAEEBaiEFIAMhBgwBCyAAQQRqIQQgACgCBCEGIAAoAgghBSADIQILAkAgBiACRw0AIAAQ4BogAEEEaiEEIAAoAgQhBiAAKAIIIQULIAUgBmogAToAACAEIAQoAgBBAWo2AgALhwECAX8BfiAAQQhqIQMCQAJAIAEtABRBAkcNACADIAIpAwA3AwAgA0EQaiACQRBqKQMANwMAIANBCGogAkEIaikDADcDAEIBIQQMAQsgAyABKQMANwMAIANBEGogAUEQaikDADcDACADQQhqIAFBCGopAwA3AwAgAhDICUIAIQQLIAAgBDcDAAuUAQECfyMAQRBrIgIkACAAKAIAIgBBBGohAwJAAkACQAJAIAAoAgAOAwABAgALIAIgAzYCBCABQYDsoAFBBSACQQRqQdsCEOkQIQAMAgsgAiADNgIIIAFBieygAUEGIAJBCGpB3QIQ6RAhAAwBCyACIAM2AgwgAUHr8qABQQcgAkEMakHSAhDpECEACyACQRBqJAAgAAuGAQEFf0GAASECAkAC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AyACIQQLIAAgBDYCCCAAIAM2AgQgACABNgIAC4QBAQN/IAAoAghBOGwhAiAAKAIEIQNBACEAA0ACQAJAIAIgAEYNAAJAAkACQCADIABqIgQoAgAOAwABAgALIARBCGogARC6MyAEQShqIAEQ3j0MAwsgBEEwaiIEKAIARQ0CIAQgARDFPQwCCyAEQQRqIAEQrT8MAQsPCyAAQThqIQAMAAsLcwEEf0F/IQNBACEEAkAgAUUNAAJAA0ACQCABQQFLDQAgACAEQShsaigCGCIBIAJHDQJBACEDDAMLIAQgAUEBdiIFIARqIgYgACAGQShsaigCGCACSxshBCABIAVrIQEMAAsLIAQgASACSWohBAsgAyAEagtuAQZ+IAAgA0L/////D4MiBSABQv////8PgyIGfiIHIANCIIgiCCAGfiIGIAUgAUIgiCIJfnwiBUIghnwiCjcDACAAIAggCX4gBSAGVK1CIIYgBUIgiIR8IAogB1StfCAEIAF+IAMgAn58fDcDCAt7AQF/IwBBwABrIgUkACAFIAE2AgwgBSAANgIIIAUgAzYCFCAFIAI2AhAgBUECNgIcIAVBhPiYATYCGCAFQgI3AiQgBUELrUIghiAFQRBqrYQ3AzggBUEMrUIghiAFQQhqrYQ3AzAgBSAFQTBqNgIgIAVBGGogBBCtLgALgAEBAn8jAEEQayIDJAAgAigCFEHf0aEBQQEgAigCGCgCDBELACEEIANBADoACSADIAQ6AAggAyACNgIEAkADQCABRQ0BIAMgADYCDCADQQRqIANBDGpBExCzDBogAUF/aiEBIABBAWohAAwACwsgA0EEahDHLSEBIANBEGokACABC38BA38jAEEQayICJAAgAkEIaiAAIAEQ3TECQAJAAkAgAigCDCIBDQBBACEADAELIAIoAggiACgCKCEDIAAoAiwhBEEAIQADQCAEIAFNDQIgAEEBaiEAIAMgAUEDdGooAgQiAQ0ACwsgAkEQaiQAIAAPCyABIARBoPKDARChGwALhQEBA38jAEEQayIBJAACQEEAKALc/qMBIgJFDQAgAUEIaiACQSBqEL8bAkAgASgCDCICKAIMIgMgAigCBEcNACACQQRqEMImCyACKAIIIANBAnRqIAA2AgAgAkEAOgAAIAIgA0EBajYCDCABQRBqJAAgAw8LQfmSoQFByABBpJSh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AhwgBEEBNgI0IARBAjYCLCAEIAM2AjwgBCACNgI4IAQgBEEoajYCGCAEIARBOGo2AjAgBCAEQQhqNgIoIARBEGoQ7ykhASAEQcAAaiQAIAELdQEBfyMAQSBrIgMkACADIAI2AgQCQAJAIAAoAhAgAkcNAEEAIQADQCACRQ0CIAJBf2ohAiAAQQF0IAEtAABqIQAgAUEBaiEBDAALCyADQQA2AgggAEEQaiADQQRqIANBCGpBpLSAARCeKwALIANBIGokACAAC4ABAQF/AkACQAJAIAFB/////wNLDQAgAUH/////A0YNASABIAFBAnRBB2pBeHEiAmpBCGoiASACSQ0CAkAgAUH4////B0sNACAAIAI2AgggACABNgIEIABBCDYCAA8LIABBADYCAA8LIABBADYCAA8LIABBADYCAA8LIABBADYCAAuFAQECfyMAQSBrIgMkAEGAgICAeCEEAkAgAUEDRg0AIANCADcCGCADQoCAgIDAADcCECADQRBqIAIQpSIgA0EIaiADQRxqKAIANgIAIAMgAykCFDcDACADKAIQIQQLIAAgBDYCACAAIAMpAwA3AgQgAEEMaiADQQhqKAIANgIAIANBIGokAAuBAQEBfyAAKAIIIABBDGooAgAQlzogAEEYaiIBKAIAIABBHGooAgAQhQwgACgCFCABKAIAEJs6IABBJGoiASgCACAAQShqKAIAENonIAAoAiAgASgCABCVOgJAIABBf0YNACAAIAAoAgQiAUF/ajYCBCABQQFHDQAgAEEwQQQQ7hwLC3oBAn8jAEGAAmsiAyQAIANBAEGAAhDvESEEIAJBBHQhAyABQQhqIQICQANAAkAgAigCAEEBRg0AIABBAjoAAAwCCyAEIAJBfGooAgAtAABqQQE6AAAgAkEQaiECIANBcGoiAw0ACyAAIARBgAIQ3woaCyAEQYACaiQAC3wBAX8jAEEQayIEJAACQAJAIAMNAEEAIQAMAQsgBCAAEIIPIgAgAiADEKQaAkAgASgCCCIDIAEoAgBHDQAgARDRJgsgASADQQFqNgIIIAEoAgQgA0EEdGoiASAEKQIANwIAIAFBCGogBEEIaikCADcCAAsgBEEQaiQAIAALdgIBfwF+AkACQCABrUIMfiIDQiCIpw0AIAOnIgJBeEsNACACQQdqQXhxIgIgAUEIamoiASACSQ0BAkAgAUH4////B0sNACAAIAI2AgggACABNgIEIABBCDYCAA8LIABBADYCAA8LIABBADYCAA8LIABBADYCAAt3AQF/IwBBMGsiASQAIAFBKGogAEEYaikCADcCACABQSBqIABBEGopAgA3AgAgAUEYaiAAQQhqKQIANwIAIAEgACkCADcCEAJAQQhBwAAQuzgiAA0AAAsgAEEbNgIAIABBBGogAUEMakEkEN8KGiABQTBqJAAgAAt9AgF/AX4jAEEgayIBJAAgACkDCCECIABBCTYCCCABQQhqQRBqIABBGGopAwA3AwAgAUEIakEIaiAAQRBqKQMANwMAIAEgAjcDCAJAIAKnQQhGDQAgAUEIahCFNkGUzqEBQShB/PCaARDTJwALIAEoAgwhACABQSBqJAAgAAuAAQECfwJAAkACQCAALQAsIgFBfWoiAkEBIAJB/wFxQQNJG0H/AXEOAwABAgALIABCADcDCA8LIABCADcDEAJAAkAgAUH/AXFBAkcNACAAQRhqELQsDAELIABCADcDIAsgAEIANwMIDwsgAEIANwMYIABCADcDCCAAQSBqQgA3AwALfAICfwF+IwBBEGsiASQAAkACQCAALQAUQQJHDQAgACgCACIAELgcIABBMEEIEO4cDAELIAApAwAiA0IDg0IAUg0AIAEgA6ciADYCDCABQQxqEPUHIAAgACgCACICQX9qNgIAIAJBAUcNACAAIAAoAiAQ0y8LIAFBEGokAAt2AQN/QQAhAQJAIAAtAEUiAkEDRg0AIABBIGohAwJAIAJBAkYNAANAIAMoAiAiAy0AJUECRw0ACwsgAygCCEE4bCEAIAMoAgQhAwNAIABBAEchASAARQ0BIABBSGohACADEOkRIQIgA0E4aiEDIAJFDQALCyABC3wCAn8BfiMAQRBrIgEkAAJAAkAgAC0AFEECRw0AIAAoAgAiABC5HCAAQTBBCBDuHAwBCyAAKQMAIgNCA4NCAFINACABIAOnIgA2AgwgAUEMahD1ByAAIAAoAgAiAkF/ajYCACACQQFHDQAgACAAKAIgENMvCyABQRBqJAALiAEBA38jAEEgayIBJAAgACgCACICKAIAIQMgAkEANgIAIAMoAgwhAiADQQA2AgwCQCACDQAgAUEANgIYIAFBATYCDCABQejpogE2AgggAUIENwIQIAFBCGpBrNeh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IAS9Qv///////////wCDQv/////////3/wBVDQAgAkEMaiEBIAQgAkEMahDZAiEDDAELIAIgBBDEKSACKAIEIQMgAigCACEBCyAAIAEgAxDRJAwBCyAAIAEQwxULIAJBkAFqJAALgQECA38BfiABEPMxIQIgASABKAIcIgM2AlQgASABKAIYNgJQIAEoAgAhBCABQSU2AgACQCAEQRtGDQBBlM6hAUEoQciwmQEQ0ycACyABKQMIIQUgACABKQMQNwMQIAAgBTcDACAAIAIgAyACIANLGzYCDCAAIAIgAyACIANJGzYCCAtzAQF/IwBBIGsiAiQAIAJBCGogAUEAEJYIAkACQCACKAIIQSVGDQAgACACKQMINwMAIABBEGogAkEIakEQaikDADcDACAAQQhqIAJBCGpBCGopAwA3AwAMAQsgACACKAIMNgIEIABBJjYCAAsgAkEgaiQAC3MBAX8jAEEgayICJAAgAkEIaiABQQEQlggCQAJAIAIoAghBJUYNACAAIAIpAwg3AwAgAEEQaiACQQhqQRBqKQMANwMAIABBCGogAkEIakEIaikDADcDAAwBCyAAIAIoAgw2AgQgAEEmNgIACyACQSBqJAALcQECfyMAQRBrIgIkACABKAIAIAFBBGooAgAQ3zMgAUEQQQQQ7hwCQCAAUA0AIABCA4NCAFINACACIACnIgE2AgwgAkEMahD1ByABIAEoAgAiA0F/ajYCACADQQFHDQAgASABKAIgENMvCyACQRBqJAALegEDfyAAKAIMIgEgACgCBCICa0EMbiEDAkAgASACRg0AA0ACQAJAIAIoAgAiAUUNACABENsBIAFBwABBCBDuHAwBCyACQQRqKAIAIgEQlAsgAUHwAEEIEO4cCyACQQxqIQIgA0F/aiIDDQALCyAAKAIIIAAoAgAQ3DMLcQECfyMAQRBrIgIkACABKAIAIAFBBGooAgAQ3zMgAUEQQQQQ7hwCQCAAUA0AIABCA4NCAFINACACIACnIgE2AgwgAkEMahD1ByABIAEoAgAiA0F/ajYCACADQQFHDQAgASABKAIgENMvCyACQRBqJAALcQECfyMAQRBrIgIkACABKAIAIAFBBGooAgAQ3zMgAUEQQQQQ7hwCQCAAUA0AIABCA4NCAFINACACIACnIgE2AgwgAkEMahD1ByABIAEoAgAiA0F/ajYCACADQQFHDQAgASABKAIgENMvCyACQRBqJAALegIBfwF+IwBBEGsiBSQAAkACQAJAIARBgDxxQYA8Rw0AIANFDQEgBUEIaiABIAJBARDkAiAFLQAIQQRGDQEgBSkDCCIGQv8Bg0IEUQ0BIAAgBjcCAAwCCyAAQQQ6AAAMAQtBlM6hAUEoQeiemQEQ0ycACyAFQRBqJAALeQIDfwF+IwBBEGsiAyQAIAEoAhQhBCABKAIQIQUgAyABQQhqEMkTIANBCGogAiAFIAQgAygCACADKAIEEMQTAkACQAJAIAMtAAhBBEYNACADKQMIIgZC/wGDQgRSDQELIABBBDoAAAwBCyAAIAY3AgALIANBEGokAAt+AQF/IwBBEGsiAiQAIAJBBGogASgCBCABKAIIELcGAkACQCACKAIEDQAgAEGAgICAeDYCACAAIAEpAgA3AgQgAEEMaiABQQhqKAIANgIADAELIAAgAikCCDcCDCAAIAEpAgA3AgAgAEEIaiABQQhqKAIANgIACyACQRBqJAALjgEBAX9BASEBAkACQAJAAkACQAJAAkAgACgCAA4IAAQBAwYGAgUACyAALQAkIQEMBQsgACgCBC0AGCEBDAQLIAAoAgQtACwhAQwDC0EAIQEMAgtBASEBIAAtACQNASAAKAIgKAIYQYCAgIB4RiEBDAELQQEhASAAKAIEIgAtAFANACAAKAIAIQELIAFBAXELigECAn8CfiMAQRBrIgEkAAJAQQAoAvj+owENAAJAAkAgAEUNACAAKAIAIQIgAEIANwMAIAJBAXFFDQAgACkDECEDIAApAwghBAwBCyABEJ0jIAEpAwghAyABKQMAIQQLQQAgAzcDiP+jAUEAIAQ3A4D/owFBAEIBNwP4/qMBCyABQRBqJABBgP+jAQuIAQECfyMAQRBrIgIkACAAKAIAIQAgASgCFEHw8oMBQQggASgCGCgCDBELACEDIAJBADoADSACIAM6AAwgAiABNgIIIAJBCGpB9IiCAUEEQeyIggFBMBDOCkGQ5qABQQRBkImCAUEwEM4KQYDzgwFBCSAAQShqQTEQzgoQpRshASACQRBqJAAgAQt1AQF/IwBBEGsiBiQAAkAgAUUNACAGQQRqIAEgAyAEIAUgAigCEBERAAJAIAYoAgQgBigCDCIBTQ0AIAZBBGogAUEEQQQQnxMgBigCDCEBCyAAIAE2AgQgACAGKAIINgIAIAZBEGokAA8LQfToogFBMhDxOgALiAEBAX8jAEEQayICJAACQAJAAkACQCAAKAIAIgAoAgAOAwABAgALIAEoAhRBmcKDAUECIAEoAhgoAgwRCwAhAQwCCyABKAIUQZvCgwFBAyABKAIYKAIMEQsAIQEMAQsgAiAAQQRqNgIMIAFBnsKDAUEHIAJBDGpBpwEQ6RAhAQsgAkEQaiQAIAELgQEBBH8jAEEQayICJABBACEDAkAgASgCBCIEKAJ8IgVBgICAwABJDQACQCABELUTRQ0AQQEhAwwBCyAEKAJ8IgVBgICAwABJDQAgAiAFrTcDCEGQw6EBQSsgAkEIakHw24MBQfzcgwEQsRgACyAAIAU2AgQgACADNgIAIAJBEGokAAt5AQJ/AkAgACgCCCIBIAAoAgBHDQAgABDdJgsgACABQQFqNgIIIAAoAgQgAUEMbGoiAkEANgIIIAJCgICAgMAANwIAAkAgACgCFCICIAAoAgxHDQAgAEEMahDCJgsgACACQQFqNgIUIAAoAhAgAkECdGpBADYCACABC3ICAn8BfiMAQRBrIgEkACAAQQhqIQICQAJAIAAoAgANACACKQMAIgNCA4NCAFINASABIAOnIgA2AgwgAUEMahD1ByAAIAAoAgAiAkF/ajYCACACQQFHDQEgACAAKAIgENMvDAELIAIQuBMLIAFBEGokAAuDAQEBfyMAQRBrIgMkACADQQRqIAAgASACEOgHAkACQCADLQAEQQFGDQAgAygCCCICQYCwA3NBgIC8f2pB/4+8f00NASADQRBqJAAgAg8LIAMgAy0ABToAD0Gox5kBQSAgA0EPakG4xJkBQcjHmQEQsRgAC0HYx5kBQR5B+MeZARCqHgALcQEBfyMAQSBrIgIkACACQQhqIAEQkQYCQAJAIAIoAghBJUYNACAAIAIpAwg3AwAgAEEQaiACQQhqQRBqKQMANwMAIABBCGogAkEIakEIaikDADcDAAwBCyAAIAIoAgw2AgQgAEEmNgIACyACQSBqJAALcQEBfyMAQSBrIgIkACACQQhqIAEQ4g8CQAJAIAIoAghBJUYNACAAIAIpAwg3AwAgAEEQaiACQQhqQRBqKQMANwMAIABBCGogAkEIakEIaikDADcDAAwBCyAAIAIoAgw2AgQgAEEmNgIACyACQSBqJAALcQEBfyMAQSBrIgIkACACQQhqIAEQwAsCQAJAIAIoAghBJUYNACAAIAIpAwg3AwAgAEEQaiACQQhqQRBqKQMANwMAIABBCGogAkEIakEIaikDADcDAAwBCyAAIAIoAgw2AgQgAEEmNgIACyACQSBqJAALcQEBfyMAQSBrIgIkACACQQhqIAEQsAICQAJAIAIoAghBJUYNACAAIAIpAwg3AwAgAEEQaiACQQhqQRBqKQMANwMAIABBCGogAkEIakEIaikDADcDAAwBCyAAIAIoAgw2AgQgAEEmNgIACyACQSBqJAALcQEBfyMAQSBrIgIkACACQQhqIAEQli4CQAJAIAIoAghBJUYNACAAIAIpAwg3AwAgAEEQaiACQQhqQRBqKQMANwMAIABBCGogAkEIakEIaikDADcDAAwBCyAAIAIoAgw2AgQgAEEmNgIACyACQSBqJAALcQEBfyMAQSBrIgIkACACQQhqIAEQ8RYCQAJAIAIoAghBJUYNACAAIAIpAwg3AwAgAEEQaiACQQhqQRBqKQMANwMAIABBCGogAkEIakEIaikDADcDAAwBCyAAIAIoAgw2AgQgAEEmNgIACyACQSBqJAALcQEBfyMAQSBrIgIkACACQQhqIAEQtwoCQAJAIAIoAghBJUYNACAAIAIpAwg3AwAgAEEQaiACQQhqQRBqKQMANwMAIABBCGogAkEIakEIaikDADcDAAwBCyAAIAIoAgw2AgQgAEEmNgIACyACQSBqJAALfAEBfwJAAkACQAJAIAAoAgAOAgECAAsgAEEEahDUCyAAKAIYIgBFDQIgACgCACIBEIkDIAFB4ABBCBDuHCAAQQxBBBDuHA8LIABBCGoQoA8gAEEoahDUCw8LIABBEGoQjRggACgCMCIARQ0AIAAQogEgAEHAAEEIEO4cCwtyAgJ/AX4jAEEQayIBJAAgAEEIaiECAkACQCAAKAIADQAgAikDACIDQgODQgBSDQEgASADpyIANgIMIAFBDGoQ9QcgACAAKAIAIgJBf2o2AgAgAkEBRw0BIAAgACgCIBDTLwwBCyACELwTCyABQRBqJAALdAEBfwJAAkAgACgCACICQQNGDQAgASAAKAIgEI8DIAJBAkkNASABIAAoAgQQjwMPCyABIAAoAhAQjwMgACgCDCICRQ0AIAJBBHQhAiAAKAIIQQxqIQADQCABIAAoAgAQjwMgAEEQaiEAIAJBcGoiAg0ACwsLfAECfwJAIAAoAggiAkUNACAAKAIEIQAgAkE4bCECA0ACQAJAAkACQCAAKAIADgMAAQIACyAAQQhqIAEQkjQgACgCKCABENUODAILIAAoAjAiA0UNASABIAMQjwMMAQsgACgCBCABENUOCyAAQThqIQAgAkFIaiICDQALCwt9AQF/AkACQAJAAkACQCAAKAIADgUEAAECAwQLIAAoAgRBAUcNAyABIAAoAggQjwMPCyABIAAoAgQQjwMPCyAAKAIEIAEQowsPCyAAKAIMIgJFDQAgACgCCCEAIAJBKGwhAgNAIAAgARDhGSAAQShqIQAgAkFYaiICDQALCwt5AQN/IwBBEGsiAiQAQQBBABC0GBDSBiEDIAAoAhQhBCAAIAM2AhQgAiAAEPIJAkAgAS0AFEECRg0AIAAgARDpDAsgASgCGCAAEMwWIAAQoAwgACAENgIUIABBCGogAkEIaikCADcCACAAIAIpAgA3AgAgAkEQaiQAC3cBA38CQCAALQA0QQFHDQAgASgCOCIBRQ0AIAAtADohAiAALQA5IQMgAEGBAjsAOQJAIAEoAggiBEUNACABKAIEIQEgBEECdCEEA0AgACABKAIAEOovIAFBBGohASAEQXxqIgQNAAsLIAAgAjoAOiAAIAM6ADkLC3IBAn8gAEIANwIMAkAgACgCCCICRQ0AIAAoAgQiACACQTBsaiEDA0AgAEIANwIQIABCADcCAAJAIABBIGooAgAiAkUNACABIAIQxQILAkAgAEEkaigCACICRQ0AIAEgAhDFAgsgAEEwaiIAIANHDQALCwt1AQJ/IABCADcCECAAKAIMIAEQjAICQCAAKAIIIgJFDQAgACgCBCIDIAJBBHRqIQIDQAJAIAMoAgBBAUcNACADQgA3AgQLIANBDGooAgAgARCMAiADQRBqIgMgAkcNAAsLAkAgACgCHCIDRQ0AIAMgARC/JwsLdAEBfwJAAkAgACgCACICQQNGDQAgASAAKAIgEKYqIAJBAkkNASABIAAoAgQQpioPCyABIAAoAhAQpiogACgCDCICRQ0AIAJBBHQhAiAAKAIIQQxqIQADQCABIAAoAgAQpiogAEEQaiEAIAJBcGoiAg0ACwsLdAEBfwJAAkAgACgCACICQQNGDQAgASAAKAIgENEDIAJBAkkNASABIAAoAgQQ0QMPCyABIAAoAhAQ0QMgACgCDCICRQ0AIAJBBHQhAiAAKAIIQQxqIQADQCABIAAoAgAQ0QMgAEEQaiEAIAJBcGoiAg0ACwsLfAECfwJAIAAoAggiAkUNACAAKAIEIQAgAkE4bCECA0ACQAJAAkACQCAAKAIADgMAAQIACyABIABBCGoQkTQgACgCKCABENYODAILIAAoAjAiA0UNASABIAMQsAMMAQsgACgCBCABENYOCyAAQThqIQAgAkFIaiICDQALCwtyAgJ/AX4jAEEQayIBJAAgAEEIaiECAkACQCAAKAIADQAgAikDACIDQgODQgBSDQEgASADpyIANgIMIAFBDGoQ9QcgACAAKAIAIgJBf2o2AgAgAkEBRw0BIAAgACgCIBDTLwwBCyACEL0TCyABQRBqJAALewEBfwJAAkACQAJAAkAgACgCAA4FBAABAgMECyAAKAIEQQFHDQMgASAAKAIIEFQPCyABIAAoAgQQVA8LIAAoAgQgARCXCw8LIAAoAgwiAkUNACAAKAIIIQAgAkEobCECA0AgACABEOoZIABBKGohACACQVhqIgINAAsLC30BAX8CQAJAAkACQAJAIAAoAgAOBQQAAQIDBAsgACgCBEEBRw0DIAAoAgggARD+Ag8LIAAoAgQgARD+Ag8LIAAoAgQgARCICw8LIAAoAgwiAkUNACAAKAIIIQAgAkEobCECA0AgACABEOsZIABBKGohACACQVhqIgINAAsLC30BAX8CQAJAAkACQAJAIAAoAgAOBQQAAQIDBAsgACgCBEEBRw0DIAEgACgCCBDRAw8LIAEgACgCBBDRAw8LIAAoAgQgARClCw8LIAAoAgwiAkUNACAAKAIIIQAgAkEobCECA0AgACABEOwZIABBKGohACACQVhqIgINAAsLC30BAX8CQAJAAkACQAJAIAAoAgAOBQQAAQIDBAsgACgCBEEBRw0DIAEgACgCCBDZMg8LIAEgACgCBBDZMg8LIAAoAgQgARDXCg8LIAAoAgwiAkUNACAAKAIIIQAgAkEobCECA0AgACABEO0ZIABBKGohACACQVhqIgINAAsLC30BAX8CQAJAAkACQAJAIAAoAgAOBQQAAQIDBAsgACgCBEEBRw0DIAEgACgCCBDTAQ8LIAEgACgCBBDTAQ8LIAAoAgQgARCKCw8LIAAoAgwiAkUNACAAKAIIIQAgAkEobCECA0AgACABEO4ZIABBKGohACACQVhqIgINAAsLC3MBBH8jAEEQayICJAAgAkEIakEAQQAgASgCCCIDELEqIAIoAgwhBCABIAIoAggiBTYCCCAAIAQ2AgwgACABNgIIIAAgAyAEazYCECAAIAEoAgQiASAEQdgAbGo2AgQgACABIAVB2ABsajYCACACQRBqJAALdAEBfwJAAkAgACgCACICQQNGDQAgACgCICABEPUCIAJBAkkNASAAKAIEIAEQ9QIPCyAAKAIQIAEQ9QIgACgCDCICRQ0AIAJBBHQhAiAAKAIIQQxqIQADQCAAKAIAIAEQ9QIgAEEQaiEAIAJBcGoiAg0ACwsLdAEBfwJAAkAgACgCACICQQNGDQAgACgCICABEIADIAJBAkkNASAAKAIEIAEQgAMPCyAAKAIQIAEQgAMgACgCDCICRQ0AIAJBBHQhAiAAKAIIQQxqIQADQCAAKAIAIAEQgAMgAEEQaiEAIAJBcGoiAg0ACwsLdAEBfwJAAkAgACgCACICQQNGDQAgASAAKAIgEOoCIAJBAkkNASABIAAoAgQQ6gIPCyABIAAoAhAQ6gIgACgCDCICRQ0AIAJBBHQhAiAAKAIIQQxqIQADQCABIAAoAgAQ6gIgAEEQaiEAIAJBcGoiAg0ACwsLfQEBfwJAAkACQAJAAkAgACgCAA4FBAABAgMECyAAKAIEQQFHDQMgASAAKAIIEIgDDwsgASAAKAIEEIgDDwsgACgCBCABEPgKDwsgACgCDCICRQ0AIAAoAgghACACQShsIQIDQCAAIAEQ8xkgAEEoaiEAIAJBWGoiAg0ACwsLfQEBfwJAAkACQAJAAkAgACgCAA4FBAABAgMECyAAKAIEQQFHDQMgASAAKAIIEOoCDwsgASAAKAIEEOoCDwsgACgCBCABEKgLDwsgACgCDCICRQ0AIAAoAgghACACQShsIQIDQCAAIAEQ9BkgAEEoaiEAIAJBWGoiAg0ACwsLfQEBfwJAAkACQAJAAkAgACgCAA4FBAABAgMECyAAKAIEQQFHDQMgACgCCCABEP8CDwsgACgCBCABEP8CDwsgACgCBCABEOYKDwsgACgCDCICRQ0AIAAoAgghACACQShsIQIDQCAAIAEQ9RkgAEEoaiEAIAJBWGoiAg0ACwsLfAECfwJAIAAoAggiAkUNACAAKAIEIQAgAkE4bCECA0ACQAJAAkACQCAAKAIADgMAAQIACyAAQQhqIAEQpTQgACgCKCABELwODAILIAAoAjAiA0UNASABIAMQ6gIMAQsgACgCBCABELwOCyAAQThqIQAgAkFIaiICDQALCwt0AQF/AkACQCAAKAIAIgJBA0YNACABIAAoAiAQ3AEgAkECSQ0BIAEgACgCBBDcAQ8LIAEgACgCEBDcASAAKAIMIgJFDQAgAkEEdCECIAAoAghBDGohAANAIAEgACgCABDcASAAQRBqIQAgAkFwaiICDQALCwt8AQJ/AkAgACgCCCICRQ0AIAAoAgQhACACQThsIQIDQAJAAkACQAJAIAAoAgAOAwABAgALIABBCGogARCrNCAAKAIoIAEQ2g4MAgsgACgCMCIDRQ0BIAEgAxDcAQwBCyAAKAIEIAEQ2g4LIABBOGohACACQUhqIgINAAsLC30BAX8CQAJAAkACQAJAIAAoAgAOBQQAAQIDBAsgACgCBEEBRw0DIAEgACgCCBDcAQ8LIAEgACgCBBDcAQ8LIAAoAgQgARCqCw8LIAAoAgwiAkUNACAAKAIIIQAgAkEobCECA0AgACABEPkZIABBKGohACACQVhqIgINAAsLC4QBAQJ/IwBBIGsiAiQAAkBBACgC2P6jASIDDQBB+ZKhAUHIAEGklKEBELM7AAsgAkEEaiADIAEoAgggASgCDEGWnKEBQYgBEMcYIAJBFGpBxZmhAUERELgjIAJBADYCECACQQRqIAJBEGoQjSgiAxDKAiADELUSIAEgABDGPSACQSBqJAALegEBfyAAKAIIQShsIQIgACgCBCEAAkADQCACRQ0BAkACQAJAAkACQCAAKAIADgUEAAECAwQLIABBBGogARDCMwwDCyAAQQRqIAEQxj0MAgsgAEEEaiABEOE9DAELIABBBGogARD7GQsgAEEoaiEAIAJBWGohAgwACwsLZQEDf0EAIQMCQCABRQ0AA0ACQCABQQFLDQAgACADQShsaigCGCIBIAJGDQIgAyABIAJJaiEDDAILIAMgAUEBdiIEIANqIgUgACAFQShsaigCGCACSxshAyABIARrIQEMAAsLIAMLegEBfyAAKAIIQShsIQIgACgCBCEAAkADQCACRQ0BAkACQAJAAkACQCAAKAIADgUEAAECAwQLIABBBGogARDEMwwDCyAAQQRqIAEQxT0MAgsgAEEEaiABEOM9DAELIABBBGogARD9GQsgAEEoaiEAIAJBWGohAgwACwsLegEBfyAAKAIIQShsIQIgACgCBCEAAkADQCACRQ0BAkACQAJAAkACQCAAKAIADgUEAAECAwQLIABBBGogARDDMwwDCyAAQQRqIAEQxD0MAgsgAEEEaiABEOI9DAELIABBBGogARD+GQsgAEEoaiEAIAJBWGohAgwACwsLeAIDfwF+IAAoAhAhASAAKAIIIQIgACkDACEEA38CQCAEUA0AIAAgBEJ/fCAEgzcDACABIAR6p0H4AHFrDwsgACABQUBqIgE2AhAgACACQQhqIgM2AgggACACKQMAQn+FQoCBgoSIkKDAgH+DIgQ3AwAgAyECDAALC3EBAX8CQAJAIAAoAgANACAAKAIgQThsIQIgACgCHCEAA0AgAkUNAiAAIAEQwywgAkFIaiECIABBOGohAAwACwsgACgCIEEwbCECIAAoAhwhAANAIAJFDQEgASAAEL0zIAJBUGohAiAAQTBqIQAMAAsLC3YBAn8jAEEQayICJAACQAJAIAFBgAFJDQAgAkEANgIMIAIgASACQQxqEIcPIAAgAigCACACKAIEEPguDAELAkAgACgCCCIDIAAoAgBHDQAgABDAJgsgACADQQFqNgIIIAAoAgQgA2ogAToAAAsgAkEQaiQAQQALbwEDfyMAQRBrIgIkACACIAE2AghBACEDAkACQEEBQQIgARAAIgRBAUYbQQAgBBsiBEECRg0AIAAgBDoAAQwBCyAAIAJBCGogAkEPakHkxoABEKwINgIEQQEhAwsgACADOgAAIAEQ/zYgAkEQaiQAC2wBBX8gAUE0aiEDIAEvATIhBEEAIQVBACEGAkADQCAFQQFxDQEgBiAESw0BIAMgBkECdGooAgAiByAGOwEwIAcgATYCACAFQQEgBiAESSIHGyEFIAYgB2ohBgwACwsgACACNgIEIAAgATYCAAtsAQF/IwBBIGsiAiQAIAJBCGogAUGkA2pBAEEAEJsKAkAgAigCCCIBQQNGDQAgACACKQIMNwIEIABBFGogAkEIakEUaigCADYCACAAQQxqIAJBCGpBDGopAgA3AgALIAAgATYCACACQSBqJAALdAECfyMAQRBrIgYkACABLQABIQcgAS0AACEBIAZBCGogAiADIAQgBUGAmYABELsmIAYgASAHIAYoAgggBigCDBDCCUEAIQECQCAGKAIAQQFxRQ0AIAAgBigCBCAEajYCBEECIQELIAAgATYCACAGQRBqJAALegEBfyMAQSBrIgMkAAJAAkAgACgCACABSQ0AIAMgACABQQQgAhDVGiADKAIAIgBBgYCAgHhHDQEgA0EgaiQADwsgA0EANgIYIANBATYCDCADQYzjogE2AgggA0IENwIQIANBCGpB4OOiARCtLgALIAAgAygCBBD4OQALegEBfyMAQSBrIgIkAAJAAkAgACgCACABSQ0AIAIgACABQQRBBBDVGiACKAIAIgBBgYCAgHhHDQEgAkEgaiQADwsgAkEANgIYIAJBATYCDCACQYzjogE2AgggAkIENwIQIAJBCGpB4OOiARCtLgALIAAgAigCBBD4OQALeQEBfyMAQRBrIgIkACACIAAoAgAiAEEkajYCDCABQcaxgAFBCEGQ5qABQQQgAEEoakE0Qc6xgAFBBSAAQQhqQTVB07GAAUEFIABBFGpBNkGU84MBQQsgAEEgakERQdixgAFBEyACQQxqQSIQzg8hACACQRBqJAAgAAt0AQJ/IwBBEGsiAiQAAkACQCABQYABSQ0AIAJBADYCDCACIAEgAkEMahCGDyAAIAIoAgAgAigCBBD4LgwBCwJAIAAoAggiAyAAKAIARw0AIAAQwCYLIAAgA0EBajYCCCAAKAIEIANqIAE6AAALIAJBEGokAAtmAQV+IAAgACkDGCIBQhCJIAEgACkDCHwiAYUiAiAAKQMQIgMgACkDAHwiBEIgiXwiBTcDACAAIAJCFYkgBYU3AxggACABIANCDYkgBIUiAnwiASACQhGJhTcDECAAIAFCIIk3AwgLdwACQCABRQ0AA0ACQAJAAkACQCAAKAIAQX5qDgYAAwMDAQIDCyAAQQRqKAIAIABBCGooAgAQlzoMAgsgAEEEaigCACAAQQhqKAIAEJA6DAELIABBBGooAgAgAEEIaigCABCQOgsgAEEQaiEAIAFBf2oiAQ0ACwsLcwECfwJAAkACQCAAKAIAIAAoAggiAmsgAU8NACAAIAIgAUEEQQQQgScgACgCCCECDAELIAFFDQELIAIgAWohAyAAKAIEIAJBAnRqIQIDQCACQYCA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AyQAIAMgADYCACADIAE2AgQgA0ECNgIMIANB7PyAATYCCCADQgI3AhQgA0EHrUIghiIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQrS4AC2kCAX8BfiMAQTBrIgMkACADIAA2AgAgAyABNgIEIANBAjYCDCADQYz9gAE2AgggA0ICNwIUIANBB61CIIYiBCADQQRqrYQ3AyggAyAEIAOthDcDICADIANBIGo2AhAgA0EIaiACEK0uAAtpAgF/AX4jAEEwayIDJAAgAyAANgIAIAMgATYCBCADQQI2AgwgA0HA/YABNgIIIANCAjcCFCADQQetQiCGIgQgA0EEaq2ENwMoIAMgBCADrYQ3AyAgAyADQSBqNgIQIANBCGogAhCtLgALeAECfyAALQAEIgEhAgJAIAAtAAVFDQBBASECAkAgAUEBcQ0AAkAgACgCACICLQAcQQRxDQAgAigCFEH7r5cBQQIgAigCGCgCDBELACECDAELIAIoAhRB0NGhAUEBIAIoAhgoAgwRCwAhAgsgACACOgAECyACQQFxC2kCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAzYCDCADQfy5gAE2AgggA0ICNwIUIANBB61CIIYiBCADQQRqrYQ3AyggAyAEIAOthDcDICADIANBIGo2AhAgA0EIaiACEK0uAAtpAgF/AX4jAEEwayIDJAAgAyABNgIEIAMgADYCACADQQM2AgwgA0GouoABNgIIIANCAjcCFCADQQetQiCGIgQgA0EEaq2ENwMoIAMgBCADrYQ3AyAgAyADQSBqNgIQIANBCGogAhCtLgALbAIBfwF+IwBBMGsiAiQAIAIgATYCBCACIAA2AgAgAkEDNgIMIAJB2LqAATYCCCACQgI3AhQgAkEHrUIghiIDIAJBBGqthDcDKCACIAMgAq2ENwMgIAIgAkEgajYCECACQQhqQZyfhAEQrS4AC2oBAX8CQCAAKAIIIgIgACgCAEcNACAAEMEmCyAAIAJBAWo2AgggACgCBCACQQV0aiIAIAEpAgA3AgAgAEEIaiABQQhqKQIANwIAIABBEGogAUEQaikCADcCACAAQRhqIAFBGGopAgA3AgALcAEBfxCaMiIGQQI2AgggBiADNgIAIAYgBCADayAFajYCBCABIAYgASgCACID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ENsaIAIoAgghAQJAAkAgAigCDCIDRQ0AIAAgASADEJEXNgIYIAAgAzYCCCAAIAE2AgQgAEEBNgIADAELIAAQpyI2AhggAEEANgIAIAFBABCmNQsgAkEQaiQAC24BAn8jAEEQayIDJAACQAJAIAIoAgBFDQBBCSECQbz3mAEhBAwBCyADQQRqIAIoAgQgAigCCBC3BkG895gBIAMoAgggAygCBCICGyEEQQkgAygCDCACGyECCyAEIAIgARC9EiECIANBEGokACACC20CBH8BfiABKAIQIQIgASgCDCEDIAEoAgghBAJAIAEpAwAiBkIDg0IAUg0AIAanIgUgBSgCACIFQQFqNgIAIAVBf0oNAAALIAAgAjYCECAAIAM2AgwgACAENgIIIAAgBjcDACAAIAEtABQ6ABQLaAIBfwF+IwBBEGsiAiQAIAAgARD+FxDpPyEDIABBADYCGAJAIANCA4NCAFINACACIAOnIgA2AgwgAkEMahD1ByAAIAAoAgAiAUF/ajYCACABQQFHDQAgACAAKAIgENMvCyACQRBqJAALcQECfyAAKAIAIQIgAEEANgIAQTBBCBDNMyIDQoGAgIAQNwMAIAMgAjYCKCADIAEpAwA3AwggA0EQaiABQQhqKQMANwMAIANBGGogAUEQaikDADcDACADQSBqIAFBGGopAwA3AwAgABDiNyAAIAM2AgALbgECf0EAIQECQAJAAkACQCAAQXtqQf8BcSICQQFqQQAgAkEiSRsiAkF3ag4DAQMBAAsgAg0CIABB/wFxDgUBAgICAAILQQEhAQwBCyAAQYD+A3FBCHYiAEEdSw0AQYGAkIACIAB2IQELIAFBAXELdgEBfyMAQRBrIgIkACACIABBOGo2AgwgAUHx2qABQRFBje2gAUEEIABByANBt5ehAUEEIABBMGpBkQJBgtugAUEFIABBPGpByQNBh9ugAUEMIABByABqQRBBk9ugAUEJIAJBDGpBgQMQzg8hACACQRBqJAAgAAtpAQR/IwBBEGsiAyQAAkACQCABEO0OIgQNAEEAIQVBACEGDAELQQAhBUEAIQYgBC0AAEESRw0AIANBCGogASACQQEQvAEgAygCCCEGIAMoAgwhBQsgACAFNgIEIAAgBjYCACADQRBqJAALbQIEfwF+IAEoAhAhAiABKAIMIQMgASgCCCEEAkAgASkD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6RAhAAwBCyACIAM2AgwgAUGSzqABQRIgAkEMakHsCBDpECEACyACQRBqJAAgAAtqAQF/IwBBEGsiAiQAAkACQCAAKAIAIgApAwBCAFINACACIABBCGo2AgggAUGHxqABQQwgAkEIakHnCBDpECEADAELIAIgADYCDCABQZPGoAFBEyACQQxqQe4GEOkQIQALIAJBEGokACAAC24BAX8jAEEQayICJAACQAJAIAAoAgAiACgCAEGAgICAeEcNACACIABBBGo2AgggAUHgxaABQQggAkEIakGJCRDpECEADAELIAIgADYCDCABQdnLoAFBESACQQxqQYoJEOkQIQALIAJBEGokACAAC2sBAn8jAEEQayICJAAgACgCACIAQQhqIQMCQAJAIAAoAgANACACIAM2AgggAUGA9KABQQUgAkEIakGIBRDpECEADAELIAIgAzYCDCABQeXsoAFBAyACQQxqQc0GEOkQIQALIAJBEGokACAAC24BAX8jAEEQayICJAACQAJAIAAoAgAiACgCAEGAgICAeEYNACACIAA2AgggAUHs9KABQQkgAkEIakG8BxDpECEADAELIAIgAEEEajYCDCABQcrzoAFBBCACQQxqQeMHEOkQIQALIAJBEGokACAAC2sBAn8jAEEQayICJAAgACgCACIAQQRqIQMCQAJAIAAoAgANACACIAM2AgggAUHxz6ABQQwgAkEIakGUBRDpECEADAELIAIgAzYCDCABQcrzoAFBBCACQQxqQeMHEOkQIQALIAJBEGokACAAC3EAAkACQAJAAkACQCAAKAIADgUAAQIDBAALIABCADcDGA8LIABCADcDEAJAIAAoAgQNACAAQgA3AwgPCyAAKAIIIAEQjAIPCyAAQgA3AwggACgCBCABEIwCDwsgACgCBCABEPMHDwsgAEEEaiABEMgiC2sBAn8jAEEQayICJAAgACgCACIAQQRqIQMCQAJAIAAoAgANACACIAM2AgggAUGl9KABQQcgAkEIakHKCBDpECEADAELIAIgAzYCDCABQcrzoAFBBCACQQxqQeMHEOkQIQALIAJBEGokACAAC2YBA38gACgCDCIBIAAoAgQiAmtBOG4hAwJAIAEgAkYNAANAIAIQ6g0CQCACQTBqKAIAIgFFDQAgARDXASABQcAAQQgQ7hwLIAJBOGohAiADQX9qIgMNAAsLIAAoAgggACgCABDjMwtqAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAoAgBBCUYNACACIAA2AgggAUGR7aABQQogAkEIakHtCRDpECEADAELIAIgAEEIajYCDCABQZvtoAFBBCACQQxqQdoJEOkQIQALIAJBEGokACAAC2oBAX8jAEEQayICJAACQAJAIAAoAgAiACgCAEEFRg0AIAIgADYCCCABQerPoAFBByACQQhqQfkJEOkQIQAMAQsgAiAAQQRqNgIMIAFBm9CgAUENIAJBDGpBzwkQ6RAhAAsgAkEQaiQAIAALagEBfyMAQRBrIgIkAAJAAkAgACgCACIAKAIAQQdHDQAgAiAAQQhqNgIIIAFBtdGgAUELIAJBCGpBgAoQ6RAhAAwBCyACIAA2AgwgAUHf0KABQQUgAkEMakGBChDpECEACyACQRBqJAAgAAtqAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAoAgANACACIABBCGo2AgggAUGA9KABQQUgAkEIakHgBRDpECEADAELIAIgAEEEajYCDCABQevsoAFBCCACQQxqQbQKEOkQIQALIAJBEGokACAAC2sBAn8jAEEQayICJAAgACgCACIAQQRqIQMCQAJAIAAoAgANACACIAM2AgggAUG4yKABQQsgAkEIakHUChDpECEADAELIAIgAzYCDCABQZLOoAFBEiACQQxqQdUKEOkQIQALIAJBEGokACAAC24BAX8jAEEQayICJAACQAJAIAAoAgAiACgCAEGAgICAeEcNACACIABBBGo2AgggAUHgxaABQQggAkEIakH1ChDpECEADAELIAIgADYCDCABQdnLoAFBESACQQxqQfYKEOkQIQALIAJBEGokACAAC2oBAX8jAEEQayICJAACQAJAIAAoAgAiACkDAEIAUg0AIAIgAEEIajYCCCABQYfGoAFBDCACQQhqQdcKEOkQIQAMAQsgAiAANgIMIAFBk8agAUETIAJBDGpB7gYQ6RAhAAsgAkEQaiQAIAALawECfyMAQRBrIgIkACAAKAIAIgBBBGohAwJAAkAgACgCAA0AIAIgAzYCCCABQfHPoAFBDCACQQhqQZQFEOkQIQAMAQsgAiADNgIMIAFByvOgAUEEIAJBDGpBuQkQ6RAhAAsgAkEQaiQAIAALYwEEfwJAIAAoAggiAigCACAAKAIQIgMgACgCDCIEaiIFayABTw0AIAIgBSABQQhB2AAQ1gwLIAIoAgQiAiAEIAFqIgFB2ABsaiACIARB2ABsaiADQdgAbBDxPRogACABNgIMC18BBH8CQCAAKAIIIgIoAgAgACgCECIDIAAoAgwiBGoiBWsgAU8NACACIAUgAUEIQTgQ1gwLIAIoAgQiAiAEIAFqIgFBOGxqIAIgBEE4bGogA0E4bBDxPRogACABNgIMC2ICAn8BfiMAQRBrIgEkACAAQRhqEOEYAkAgACkDACIDQgODQgBSDQAgASADpyIANgIMIAFBDGoQ9QcgACAAKAIAIgJBf2o2AgAgAkEBRw0AIAAgACgCIBDTLwsgAUEQaiQAC2ICAn8BfiMAQRBrIgEkACAAQRhqEOMYAkAgACkDACIDQgODQgBSDQAgASADpyIANgIMIAFBDGoQ9QcgACAAKAIAIgJBf2o2AgAgAkEBRw0AIAAgACgCIBDTLwsgAUEQaiQAC24BAX8jAEEQayICJAACQAJAIAAoAgAiACgCAEGAgICAeEYNACACIAA2AgggAUHs9KABQQkgAkEIakHbCRDpECEADAELIAIgAEEEajYCDCABQcrzoAFBBCACQQxqQbkJEOkQIQALIAJBEGokACAAC2sBAn8jAEEQayICJAAgACgCACIAQQRqIQMCQAJAIAAoAgANACACIAM2AgggAUGl9KABQQcgAkEIakHBCRDpECEADAELIAIgAzYCDCABQcrzoAFBBCACQQxqQbkJEOkQIQALIAJBEGokACAAC18BBH8CQCAAKAIIIgIoAgAgACgCECIDIAAoAgwiBGoiBWsgAU8NACACIAUgAUEIQTAQ1gwLIAIoAgQiAiAEIAFqIgFBMGxqIAIgBEEwbGogA0EwbBDxPRogACABNgIMC3MBAX8CQAJAAkAgACgCACICQXxqDgICAQALAkACQAJAAkAgAg4EAAECAwALIAAoAgggACsDGCABENUwDwsgACgCBEEBRw0DIAEgACgCCBCWBw8LIAAoAgQgARDnBg8LIABBBGogARCfEg8LIAFBADoABAsLbgECfyABKAIAIQIgAUEANgIAAkAgAS0APA0AIAEoAgQhAyABKAIoIAEoAhAgASgCFBD6LgJAIAEoAjhFDQAgAUEANgI0IAEgASgCMEEBajYCMAsgAUEBOgA8IAJFDQAgASADEKgHCyAAQQQ6AAALagACQAJAAkACQAJAAkACQCAAKAIADgcAAQIDBAYFAAsgAEEIaiABKAIUEMo9DwsgAEEEaiABEPwmDwsgAEEEaiABEK4/DwsgAEEEaiABEI4FDwsgAEEEaiABEO82DwsgAEEEaiABEMQ9CwtuAQJ/IAEoAgAhAiABQQA2AgACQCABLQA8DQAgASgCBCEDIAEoAiggASgCECABKAIUEPouAkAgASgCOEUNACABQQA2AjQgASABKAIwQQFqNgIwCyABQQE6ADwgAkUNACABIAMQqQcLIABBBDoAAAtoAQN/AkAgASgCACICKAIIIAEoAgQiA00NACAAQQA2AhAgACADNgIMIAAgAjYCCCABIANBAWo2AgQgACABKAIIIgQ2AgAgACACKAIEIANBHGxqNgIEIAEgBEEBajYCCA8LIABBADYCBAtXAQN+QgEgAa0gAq19IgNCAYYiBH0gBCADQgBTGyEDA0AgACADQh+DIgRCIIQgBCADQgWHIgVCAFUbp0HYv6EBai0AABDUDCADQh9WIQIgBSEDIAINAAsLVwEBfgJAAkAgA0HAAHENACADRQ0BIAJBACADa0E/ca2GIAEgA0E/ca0iBIiEIQEgAiAEiCECDAELIAIgA0E/ca2IIQFCACECCyAAIAE3AwAgACACNwMIC1cBAX4CQAJAIANBwABxDQAgA0UNASACIANBP3GtIgSGIAFBACADa0E/ca2IhCECIAEgBIYhAQwBCyABIANBP3GthiECQgAhAQsgACABNwMAIAAgAjcDCAtpAQN/AkACQAJAIAEoAgQiAg0AQQAhAQwBCyABKAIAIgMoAiwiBCACTQ0BIAEgAygCKCACQQN0aiICKAIENgIEIAIoAgAhAkEBIQELIAAgAjYCBCAAIAE2AgAPCyACIARBoPKDARChGwALZAECfyMAQRBrIgMkACADQQRqIAJBAUEBENEUIAMoAgghBAJAIAMoAgRBAUcNACAEIAMoAgwQ+DkACyADKAIMIAEgAhDfCiEBIAAgAjYCCCAAIAE2AgQgACAENgIAIANBEGokAAtoAQJ/IwBBEGsiASQAIAAgACgCCCICQX9qNgIIAkACQCACQQFHDQAgACgCBCICQX9MDQEgACgCACACQQEQ7hwgABCEOwsgAUEQaiQADwtBkMOhAUErIAFBD2pBrMqAAUGIy4ABELEYAAthAQF/IwBBIGsiASQAAkAgACgCCEECRg0AIAEgADYCCCABIAA2AgwgASABQR9qNgIYIAEgAUEMajYCFCABIAFBCGo2AhAgAEEIaiABQRBqQeiBggEQnAgLIAFBIGokACAAC2QBA38jAEEQayICJAAgAkEEakEBQQFBARC4EiACKAIIIQMCQCACKAIEQQFHDQAgAyACKAIMEPg5AAsgAigCDCEEIABBATYCCCAAIAQ2AgQgACADNgIAIAQgAToAACACQRBqJAALZAECfwJAAkAgASgCFCICDQAgASgCCCEDQQAhAgwBCyABKAIIIgMgAkEDdCABKAIQakF8aigCACICTw0AIAIgA0HU+IMBEKIbAAsgACADIAJrNgIEIAAgASgCBCACQQN0ajYCAAtlAQN/AkACQCABKAIMIAJsIgIgASgCECIDaiIEIAJJDQAgASgCCCIFIARJDQEgASgCBCEBIAAgAzYCBCAAIAEgAkECdGo2AgAPCyACIARB2ISEARCkGwALIAQgBUHYhIQBEKMbAAtkAQJ/IwBBEGsiAyQAIANBBGogAkEBQQEQuBIgAygCCCEEAkAgAygCBEEBRw0AIAQgAygCDBD4OQALIAMoAgwgASACEN8KIQEgACACNgIIIAAgATYCBCAAIAQ2AgAgA0EQaiQAC2EBAX8jAEEgayIBJAAgAUEQahCCLiABQQE2AgwgACABQQxqEJoMNgIYIABBAjYCACAAQRRqIAFBHGooAgA2AgAgAEEMaiABQRRqKQIANwIAIAAgASkCDDcCBCABQSBqJAALZAECfyMAQRBrIgMkACADQQRqIAJBAUEBELgSIAMoAgghBAJAIAMoAgRBAUcNACAEIAMoAgwQ+DkACyADKAIMIAEgAhDfCiEBIAAgAjYCCCAAIAE2AgQgACAENgIAIANBEGokAAthAQR/IwBBIGsiASQAELEyIQIgACgCDCEDIAAoAhAhBCABQQxqIAAQphEgAkEQaiAENgIAIAIgASkCDDcCACABIAM2AhggAkEIaiABQQxqQQhqKQIANwIAIAFBIGokACACC2EBBH8jAEEgayIBJAAQsTIhAiAAKAIMIQMgACgCECEEIAFBDGogABD8CCACQRBqIAQ2AgAgAiABKQIMNwIAIAEgAzYCGCACQQhqIAFBDGpBCGopAgA3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ajYCDCABQYD0oAFBBUG3l6EBQQQgAEEIakGRAkGF9KABQQQgAEEQakGiA0GJ9KABQQMgAEGQA0GM9KABQQggAkEMakGgARCsECEAIAJBEGokACAAC2IBAX8jAEEQayICJAACQAJAIAAtADRBBEcNACACIAA2AgggAUGHxqABQQwgAkEIakGSAxDpECEADAELIAIgADYCDCABQY7goAFBBiACQQxqQfwCEOkQIQALIAJBEGokACAAC2IBAX8jAEEQayICJAACQAJAIAAtABRBAkcNACACIAA2AgggAUGV16ABQQ0gAkEIakHNAxDpECEADAELIAIgADYCDCABQYD0oAFBBSACQQxqQbsCEOkQIQALIAJBEGokACAAC2IBAX8jAEEQayICJAACQAJAIAAtACVBAkcNACACIAA2AgggAUGA3aABQQ0gAkEIakGFBBDpECEADAELIAIgADYCDCABQY3doAFBDyACQQxqQYYEEOkQIQALIAJBEGokACAAC1wBAn8CQAJAIAAoAoQBIgFBgAFLDQAgAEGEAWohAiAAQQFqIQAMAQsgAEEEaiECIAAoAgQhASAAKAIIIQALAkAgAQ0AQQ0PCyACIAFBf2oiATYCACAAIAFqLQAAC1kBBX8CQCAAKAIQIgFFDQACQCAAKAIMIgIgACgCCCIDKAIIIgRGDQAgAygCBCIFIARBKGxqIAUgAkEobGogAUEobBDxPRogACgCECEBCyADIAEgBGo2AggLC1kBBX8CQCAAKAIQIgFFDQACQCAAKAIMIgIgACgCCCIDKAIIIgRGDQAgAygCBCIFIARBBHRqIAUgAkEEdGogAUEEdBDxPRogACgCECEBCyADIAEgBGo2AggLC10BA38CQCAAKAIMIgEgACgCBCICRg0AIAEgAmtBBHYhASACQQxqIQIDQCACKAIAIgMQ2wEgA0HAAEEIEO4cIAJBEGohAiABQX9qIgENAAsLIAAoAgggACgCABDbMwtdAQJ/IwBBEGsiAiQAIAJBBGogAUEEQQQQ4RMgAigCCCEBAkAgAigCBEEBRw0AIAEgAigCDBD4OQALIAIoAgwhAyAAQQA2AgggACADNgIEIAAgATYCACACQRBqJAALYAEBfwJAIAAoAggNACAAQX82AggCQCAAKAIUIgIgACgCDEcNACAAQQxqEM4OCyAAKAIQIAJBAnRq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KGoQ+BcLC2MBAX8jAEEQayICJAAgAiABKAIUQb68gwFBByABKAIYKAIMEQsAOgAIIAIgATYCBCACQQA6AAkgAkEANgIAIAIgACgCADYCDCACIAJBDGpB8AAQxwwQixYhASACQRBqJAAgAQtjAQF/IwBBEGsiAiQAIAIgASgCFEHauoMBQQkgASgCGCgCDBELADoACCACIAE2AgQgAkEAOgAJIAJBADYCACACIAAoAgA2AgwgAiACQQxqQfAAEMcMEIsWIQEgAkEQaiQAIAELYgEBfyMAQRBrIgIkAAJAAkAgACgCACIAKAIADQAgASgCFEHk9KABQQQgASgCGCgCDBELACEBDAELIAIgAEEEajYCDCABQej0oAFBBCACQQxqQSIQ6RAhAQsgAkEQaiQAIAELYwEBfyMAQRBrIgIkAAJAAkAgACgCACIALQAMQQJHDQAgASgCFEHk9KABQQQgASgCGCgCDBELACEBDAELIAIgADYCDCABQej0oAFBBCACQQxqQfsAEOkQIQELIAJBEGokACABC2MBAX8jAEEQayICJAACQAJAIAAoAgAiAC0AAA0AIAEoAhRB5PSgAUEEIAEoAhgoAgwRCwAhAQwBCyACIABBAWo2AgwgAUHo9KABQQQgAkEMakHHARDpECEBCyACQRBqJAAgAQtjAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAtAAANACABKAIUQeT0oAFBBCABKAIYKAIMEQsAIQEMAQsgAiAAQQFqNgIMIAFB6PSgAUEEIAJBDGpBywEQ6RAhAQsgAkEQaiQAIAELYwEBfyMAQRBrIgIkAAJAAkAgACgCACIAKAIAQQJHDQAgASgCFEHk9KABQQQgASgCGCgCDBELACEBDAELIAIgADYCDCABQej0oAFBBCACQQxqQcABEOkQIQELIAJBEGokACABC2MBAX8jAEEQayICJAACQAJAIAAoAgAiAC0ADEEDRw0AIAEoAhRB5PSgAUEEIAEoAhgoAgwRCwAhAQwBCyACIAA2AgwgAUHo9KABQQQgAkEMakHCARDpECEBCyACQRBqJAAgAQtaAQF/AkAgACgCCCICIAAoAgBHDQAgABDHJgsgACACQQFqNgIIIAAoAgQgAkEYbGoiACABKQIANwIAIABBCGogAUEIaikCADcCACAAQRBqIAFBEGopAgA3AgALWgEB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DAALCwtYAQF/IwBB0ABrIgQkAAJAAkAgAyABSQ0AIAIgAyAAIAEQoDEhAQwBCyAEQRBqIAAgASACIAMQ9gIgBEEEaiAEQRBqEJAKIAQoAgQhAQsgBEHQAGokACABC1oBA38jAEEQayICJAAgAiABNgIIAkACQCABEME0RQ0AQQAhAwwBCyACQQhqIAJBD2pBpOeYARCsCCEEQQEhAwsgARD/NiAAIAQ2AgQgACADNgIAIAJBEGokAAtdAQJ/AkACQAJAIAEoAgAiAiABKAIERw0AQQAhAgwBCyABIAJBFGo2AgAgASgCCCIDIAEoAgxPDQEgASADQQFqNgIICyAAIAI2AgQgACADNgIADwtB3K2AARD9OQALWwECfwJAIAIgASgCACABQXxqIgMoAgAQyipFDQAgASgCACEEAkADQCADIgFBBGogASgCADYCACABIABGDQEgAiAEIAFBfGoiAygCABDKKg0ACwsgASAENgIACwtMAQF/QQAhBAJAIAAgASACIAMQvRtFDQBBASEEIAIgAEkNACABIABqIgEgAk0NACADQQEgA0EBSxsgAmoiAiAATSACIAFLciEECyAEC1IBA38gAEEBNgIEIAAgASgCBCICIAEoAgAiA2tBGG4iBCAEQQAgASgCDCABKAIIRyIBGyACIANGGzYCCCAAIARBf0EAIAEbIgEgBCABSRs2AgALWQECfwJAIAAoAhBBAUcNACAAKAIUIgFBADoAACAAKAIYIgJFDQAgASACQQEQ7hwLAkAgAEF/Rg0AIAAgACgCBCIBQX9qNgIEIAFBAUcNACAAQSBBCBDuHAsLXQECfwJAAkACQCABKAIAIgIgASgCBEcNAEEAIQIMAQsgASACQQhqNgIAIAEoAggiAyABKAIMTw0BIAEgA0EBajYCCAsgACACNgIEIAAgAzYCAA8LQaC8gwEQ/TkAC2ABAX8jAEEQayICJAAgACgCACEAIAIgASgCFEGY/IMBQQsgASgCGCgCDBELADoADCACIAE2AgggAkEAOgANIAJBADYCBCACQQRqIABBowEQxwwQixYhASACQRBqJAAgAQtaAQF/QQEhAwJAIAIgAUYNAAJAAkACQCACIAFPDQAgACACaiIBLQAAQXZqDgQCAQEDAQsgAiABQZSGhAEQoRsAC0EADwsgAkUNACABQX9qLQAAQQ1HIQML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6RAhAAsgAkEQaiQAIAALXgEBfyMAQRBrIgIkAAJAAkAgAC0AAEECRw0AIAEoAhRB5PSgAUEEIAEoAhgoAgwRCwAhAAwBCyACIAA2AgwgAUHo9KABQQQgAkEMakHDARDpECEACyACQRBqJAAgAAteAQF/IwBBEGsiAiQAAkACQCAALQAAQQNHDQAgASgCFEHk9KABQQQgASgCGCgCDBELACEADAELIAIgADYCDCABQej0oAFBBCACQQxqQdIBEOkQIQALIAJBEGokACAAC0sBA38CQCAAKAIQIgFFDQAgASAAKAIIIgIgADUCBCABQQFqrX6nakF/akEAIAJrcSIDakEJaiIBRQ0AIAAoAgwgA2sgASACEO4cCwtdAQF/IwBBEGsiAiQAAkACQCAAKAIADQAgASgCFEHk9KABQQQgASgCGCgCDBELACEADAELIAIgAEEEajYCDCABQej0oAFBBCACQQxqQTwQ6RAhAAsgAkEQaiQAIAALWQICfwF+IwBBEGsiAiQAIAEpAgAhBCACQQhqIgMgASgCCCIBNgIAIAIgAUU6AAwgAiAENwIAIAIQvAggAEEIaiADKQIANwIAIAAgAikCADcCACACQRBqJAALWQICfwF+IwBBEGsiAiQAIAEpAgAhBCACQQhqIgMgASgCCCIBNgIAIAIgAUU6AAwgAiAENwIAIAIQqQggAEEIaiADKQIANwIAIAAgAikCADcCACACQRBqJAALXgEBfyMAQRBrIgIkAAJAAkAgAC0AAEECRw0AIAEoAhRB5PSgAUEEIAEoAhgoAgwRCwAhAAwBCyACIAA2AgwgAUHo9KABQQQgAkEMakGgARDpECEACyACQRBqJAAgAAtQAAJAIANFDQACQAJAIAIgA00NACABIANqLAAAQb9/TA0BDAILIAIgA0YNAQsgASACIAMgAiAEEIg3AAsgACACIANrNgIEIAAgASADajYCAAtWAQF/IwBBEGsiAyQAIANBCGogASACEK8QIAMoAgwhAQJAAkAgAygCCA0AIAIgASgCbGshAgwBCyABIQJBACEBCyAAIAI2AgQgACABNgIAIANBEGokAAtXAQF/AkBBCEHAABC7OCIBDQAACyABQRg2AgAgASAAKQIANwIEIAFBDGogAEEIaikCADcCACABQRRqIABBEGopAgA3AgAgAUEcaiAAQRhqKQIA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DBELACEADAELIAIgADYCDCABQej0oAFBBCACQQxqQdIGEOkQIQALIAJBEGokACAAC2IBAX8jAEEQayICJAACQAJAIAAoAgBBgICAgHhHDQAgASgCFEHk9KABQQQgASgCGCgCDBELACEADAELIAIgADYCDCABQej0oAFBBCACQQxqQdYGEOkQIQALIAJBEGokACAAC2ABAX8jAEEQayICJAACQAJAIAAoAgAiACgCAA0AIAEoAhRB5PSgAUEEIAEoAhgoAgwRCwAhAQwBCyACIAA2AgwgAUHo9KABQQQgAkEMakHkBRDpECEBCyACQRBqJAAgAQtgAQF/IwBBEGsiAiQAIAIgACgCACgCACIANgIMIAFBldegAUENQbeXoQFBBCAAQRBqQZECQeH0oAFBAyAAQRhqQd8GQdTYoAFBBCACQQxqQeAFEJ4RIQAgAkEQaiQAIAALYAEBfyMAQRBrIgIkAAJAAkAgACgCACIAKAIADQAgASgCFEHk9KABQQQgASgCGCgCDBELACEBDAELIAIgADYCDCABQej0oAFBBCACQQxqQcoGEOkQIQELIAJBEGokACABC14BAX8jAEEQayICJAACQAJAIAAtAABBA0cNACABKAIUQeT0oAFBBCABKAIYKAIMEQsAIQAMAQsgAiAANgIMIAFB6PSgAUEEIAJBDGpB9AYQ6RAhAAsgAkEQaiQAIAALYAEBfyMAQRBrIgIkACACIAAoAgAoAgAiADYCDCABQaz0oAFBCUG3l6EBQQQgAEEMakGRAkGs9aABQQggAEEUakGuBUH01qABQQUgAkEMakHrBhCeESEAIAJBEGokACAAC2ABAX8jAEEQayICJAACQAJAIAAoAgAiACgCAA0AIAEoAhRB5PSgAUEEIAEoAhgoAgwRCwAhAQwBCyACIAA2AgwgAUHo9KABQQQgAkEMakHxBBDpECEBCyACQRBqJAAgAQteAQF/IwBBEGsiAiQAAkACQCAAKAIAQQdHDQAgASgCFEHk9KABQQQgASgCGCgCDBELACEADAELIAIgADYCDCABQej0oAFBBCACQQxqQa8FEOkQIQALIAJBEGokACAAC14BAX8jAEEQayICJAACQAJAIAAoAgBBAkcNACABKAIUQeT0oAFBBCABKAIYKAIMEQsAIQAMAQsgAiAANgIMIAFB6PSgAUEEIAJBDGpB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AiQAAkACQCAAKAIADQAgASgCFEHk9KABQQQgASgCGCgCDBELACEADAELIAIgADYCDCABQej0oAFBBCACQQxqQfEEEOkQIQALIAJBEGokACAAC1sBAX8jAEEQayICJAACQAJAIAAoAgANACABKAIUQeT0oAFBBCABKAIYKAIMEQsAIQAMAQsgAiAANgIMIAFB6PSgAUEEIAJBDGpBzQUQ6RAhAAsgAkEQaiQAIAALWwEBfyMAQRBrIgIkAAJAAkAgACgCAA0AIAEoAhRB5PSgAUEEIAEoAhgoAgwRCwAhAAwBCyACIAA2AgwgAUHo9KABQQQgAkEMakHkBRDpECEACyACQRBqJAAgAAtbAQF/IwBBEGsiAiQAAkACQCAAKAIADQAgASgCFEHk9KABQQQgASgCGCgCDBELACEADAELIAIgADYCDCABQej0oAFBBCACQQxqQfMFEOkQIQALIAJBEGokACAAC1sBAX8jAEEQayICJAACQAJAIAAoAgANACABKAIUQeT0oAFBBCABKAIYKAIMEQsAIQAMAQsgAiAANgIMIAFB6PSgAUEEIAJBDGpBowYQ6RAhAAsgAkEQaiQAIAALWwEBfyMAQRBrIgIkAAJAAkAgACgCAA0AIAEoAhRB5PSgAUEEIAEoAhgoAgwRCwAhAAwBCyACIAA2AgwgAUHo9KABQQQgAkEMakG1BxDpECEACyACQRBqJAAgAAtbAQF/IwBBEGsiAiQAAkACQCAAKAIADQAgASgCFEHk9KABQQQgASgCGCgCDBELACEADAELIAIgADYCDCABQej0oAFBBCACQQxqQcoGEOkQIQALIAJBEGokACAAC1ABAX8CQCABKAIIIgJFDQAgASgCBCIBIAJBBHRqIQIDQAJAIAEoAgBBAUcNACABQgA3AgQLIAFBDGooAgAgABCMAiABQRBqIgEgAkcNAAsLC10AAkACQAJAAkACQAJAAkAgACgCAA4HAAECAwQFBgALIABCADcDEA8LIABCADcCBA8LIABCADcCBA8LIABCADcDCA8LIABCADcDCA8LIABCADcDGA8LIABCADcDGAtRAQJ/IABCADcCDCAAQRRqQgA3AgACQCAAKAIIIgJFDQAgACgCBCEDIAJBKGwhAgNAIAMgARCrHCADQShqIQMgAkFYaiICDQALCyAAQgA3AhwLWwEBfyMAQRBrIgIkAAJAAkAgACgCAA0AIAEoAhRB5PSgAUEEIAEoAhgoAgwRCwAhAAwBCyACIAA2AgwgAUHo9KABQQQgAkEMakGKCBDpECEACyACQRBqJAAgAAtbAQF/IwBBEGsiAiQAAkACQCAAKAIADQAgASgCFEHk9KABQQQgASgCGCgCDBELACEADAELIAIgADYCDCABQej0oAFBBCACQQxqQb0IEOkQIQALIAJBEGokACAAC1sBAX8jAEEQayICJAACQAJAIAAoAgANACABKAIUQeT0oAFBBCABKAIYKAIMEQsAIQAMAQsgAiAANgIMIAFB6PSgAUEEIAJBDGpB4wcQ6RAhAAsgAkEQaiQAIAALUgECfyAALQB6IQIgACABLQAZRToAegJAIAEoAggiA0UNACABKAIEIQEgA0E4bCEDA0AgACABEKYfIAFBOGohASADQUhqIgMNAAsLIAAgAjoAegtbAQF/IwBBEGsiAiQAAkACQCAAKAIADQAgASgCFEHk9KABQQQgASgCGCgCDBELACEADAELIAIgADYCDCABQej0oAFBBCACQQxqQcUIEOkQIQALIAJBEGokACAAC1sBAX8jAEEQayICJAACQAJAIAAoAgANACABKAIUQeT0oAFBBCABKAIYKAIMEQsAIQAMAQsgAiAANgIMIAFB6PSgAUEEIAJBDGpBywcQ6RAhAAsgAkEQaiQAIAALWwEBfyMAQRBrIgIkAAJAAkAgACgCAA0AIAEoAhRB5PSgAUEEIAEoAhgoAgwRCwAhAAwBCyACIAA2AgwgAUHo9KABQQQgAkEMakHdCBDpECEACyACQRBqJAAgAAtWAQF+IAApAwAQsB4iAadB3cvdnnlsIAFCIIinakHdy92eeWwgACgCCGpB3cvdnnlsIAApAxAQsB4iAadqQd3L3Z55bCABQiCIp2pB3cvdnnlsQQ93rQtbAQF/IwBBEGsiAiQAAkACQCAAKAIADQAgASgCFEHk9KABQQQgASgCGCgCDBELACEADAELIAIgADYCDCABQej0oAFBBCACQQxqQcAKEOkQIQALIAJBEGokACAAC1sBAX8jAEEQayICJAACQAJAIAAoAgANACABKAIUQeT0oAFBBCABKAIYKAIMEQsAIQAMAQsgAiAANgIMIAFB6PSgAUEEIAJBDGpBuQkQ6RAhAAsgAkEQaiQAIAALWwEBfyMAQRBrIgIkAAJAAkAgACgCAA0AIAEoAhRB5PSgAUEEIAEoAhgoAgwRCwAhAAwBCyACIAA2AgwgAUHo9KABQQQgAkEMakG3ChDpECEACyACQRBqJAAgAAtbAQF/IwBBEGsiAiQAAkACQCAAKAIADQAgASgCFEHk9KABQQQgASgCGCgCDBELACEADAELIAIgADYCDCABQej0oAFBBCACQQxqQcsJEOkQIQALIAJBEGokACAAC1sBAX8jAEEQayICJAACQAJAIAAoAgANACABKAIUQeT0oAFBBCABKAIYKAIMEQsAIQAMAQsgAiAANgIMIAFB6PSgAUEEIAJBDGpB9AoQ6RAhAAsgAkEQaiQAIAALWwEBfyMAQRBrIgIkAAJAAkAgACgCAA0AIAEoAhRB5PSgAUEEIAEoAhgoAgwRCwAhAAwBCyACIAA2AgwgAUHo9KABQQQgAkEMakH/ChDpECEACyACQRBqJAAgAAtRAQJ/IwBBEGsiBSQAIAVBCGogASACIAMQyR8CQCAFKAIIIgYNACACIAMgASADIAQQiDcACyAFKAIMIQMgACAGNgIAIAAgAzYCBCAFQRBqJAALVQIBfwF+QgAhAwJAAkAgASgCGEUNACABELUZIQIgASABKAIYQX9qNgIYIAJFDQAgAkF4aigCACEBIAJBcGopAwAhAwwBCwsgACABNgIIIAAgAzcDAAtYAQN/AkAgAC0AAEEDRw0AIAAoAgQiACgCACEBAkAgACgCBCICKAIAIgNFDQAgASADEQMACwJAIAIoAgQiA0UNACABIAMgAigCCBDuHAsgAEEMQQQQ7hwLC1cBAn8CQAJAAkACQAJAIAAoAgAiAUGAgICAeHMiAkELIAJBEkkbIgIOAwIBAwALIAJBC0YNAwsPCyAAQQRqENkiDwsgAEEEahDrKQ8LIAEgACgCBBD2OQtiAQJ/QQAhAgJAAkACQAJAIAEoAgBBgICAgHhzDgMAAQIDCyABQQRqIQJB0KGhASEDDAILIAFBBGohAkGMoqEBIQMMAQsgAUEEaiECQciioQEhAwsgACADNgIEIAAgAjYCAAtYAQF/QQEhAgJAAkAgASgCFEGguaEBQQIgASgCGCgCDBELAA0AIAEoAhwiAkEQcQ0BAkAgAkEgcQ0AIAAgARD5OQ8LIAAgARDlFCECCyACDwsgACABEOYUC0wBA38gASEDIAIhBAJAIAEoAgAiBUUNACACQQFqIQMgAS8BMCEECyABQeQAQTQgAhtBBBDuHCAAIAU2AgAgACAErUIghiADrYQ3AgQLVwEBfyMAQRBrIgIkACACIABBgQJqNgIMIAFBxZmAAUEMQdGZgAFBByAAQRtBwJmAAUEFIABBgAJqQRlB2JmAAUEFIAJBDGpBExCeESEAIAJBEGokACAAC1UBAX8jAEEQayICJAAgAiAAQQJqNgIMIAFBipqAAUEPQcCZgAFBBSAAQRlB2JmAAUEFIABBAWpBGUHrmYABQQUgAkEMakETEJ4RIQAgAkEQaiQAIAALVgECfyAAQQA6ACAgACgCCCEBIABBADYCCCAAKAIEIQICQANAIAFFDQEgAigCACACQQRqKAIAEPY5IAFBf2ohASACQQxqIQIMAAsLIABCgICAgHA3AhQLTwECfyMAQRBrIgMkACADQQhqIAJBBEEEEKEiIAMoAgghBCADKAIMIAEgAkECdBDfCiEBIAAgAjYCCCAAIAE2AgQgACAENgIAIANBEGokAAtOAQN/AkAgASgCACICIAFBfGoiAygCACIETw0AAkADQCADIgFBBGogBDYCACABIABGDQEgAiABQXxqIgMoAgAiBEkNAAsLIAEgAjYCAAsLUAEBfyMAQRBrIgQkACAEQQRqIAEgAiADENEUIAQoAgghAwJAIAQoAgQNACAAIAQoAgw2AgQgACADNgIAIARBEGokAA8LIAMgBCgCDBD4OQALVAECfwJAIABB/wFxQQNHDQAgASgCACECAkAgASgCBCIAKAIAIgNFDQAgAiADEQMACwJAIAAoAgQiA0UNACACIAMgACgCCBDuHAsgAUEMQQQQ7hwLC1ABAX8jAEEQayIDJAAgA0EEaiABQQQgAhDRFCADKAIIIQICQCADKAIEDQAgACADKAIMNgIEIAAgAjYCACADQRBqJAAPCyACIAMoAgwQ+DkAC1kBAX8gASgCDCECAkACQAJAAkAgASgCBA4CAAECCyACDQFBASEBQQAhAgwCCyACDQAgASgCACIBKAIEIQIgASgCACEBDAELIAAgARCRCg8LIAAgASACELgjC1ABAX8jAEEQayIEJAAgBEEEaiABIAIgAxC4EiAEKAIIIQMCQCAEKAIEDQAgACAEKAIMNgIEIAAgAzYCACAEQRBqJAAPCyADIAQoAgwQ+DkAC1EBAX8jAEEQayIDJAACQCABKAIARQ0AIAAgASkCADcCACAAQQhqIAFBCGooAgA2AgAgA0EQaiQADwtBxM2AAUEMIANBD2pBpM2AASACELEYAAtNAQF/IwBBMGsiASQAIAFBATYCDCABQaj0gAE2AgggAUIBNwIUIAFB2ACtQiCGIAFBL2qthDcDICABIAFBIGo2AhAgAUEIaiAAEK0uAAtNAQF/IwBBMGsiASQAIAFBATYCDCABQcz0gAE2AgggAUIBNwIUIAFB2QCtQiCGIAFBL2qthDcDICABIAFBIGo2AhAgAUEIaiAAEK0uAAtLACAAQQA2AhAgACAENgIMIAAgAzYCCCAAIAI2AgQgACABNgIAIAAgAiABa0ECdiICNgIYIAAgAiAEIANrQQJ2IgQgAiAESRs2AhQLUQECfyMAQRBrIgEkAAJAIAAoAgAgACgCCCICTQ0AIAFBCGogACACQQRBFBDVGiABKAIIIgBBgYCAgHhGDQAgACABKAIMEPg5AAsgAUEQaiQAC1EBAn8jAEEQayIBJAACQCAAKAIAIAAoAggiAk0NACABQQhqIAAgAkEBQQkQ1RogASgCCCIAQYGAgIB4Rg0AIAAgASgCDBD4OQALIAFBEGokAAtRAQJ/IwBBEGsiASQAAkAgACgCACAAKAIIIgJNDQAgAUEIaiAAIAJBBEEEENUaIAEoAggiAEGBgICAeEYNACAAIAEoAgwQ+DkACyABQRBqJAALUQECfyMAQRBrIgEkAAJAIAAoAgAgACgCCCICTQ0AIAFBCGogACACQQRBCBDVGiABKAIIIgBBgYCAgHhGDQAgACABKAIMEPg5AAsgAUEQaiQAC00BAX8CQAJAAkAgACgCACIBQV5qQQAgAUFdakEHSRsOAgABAgsgAEEEQRwgAUEiRhtqIgAoAgAgAEEEaigCABD2OQ8LIABBCGoQ+TILC1cBAX8jAEEQayICJAAgAiAAQQhqNgIMIAFB7/yDAUEJQfaNhAFBAyAAQfwAQfj8gwFBByAAQQxqQf0AQf/8gwFBDiACQQxqQSIQnhEhACACQRBqJAAgAAtYAQF/IwBBEGsiAiQAIAIgAEGMA2o2AgwgAUGf84MBQQVB3PyDAUEIIABBmQFB5PyDAUELIABBMGpBmgFBlPODAUELIAJBDGpBIhCeESEAIAJBEGokACAAC08BAn8jAEEQayIDJAAgA0EIaiACQQRBCBDnIiADKAIIIQQgAygCDCABIAJBA3QQ3wohASAAIAI2AgggACABNgIEIAAgBDYCACADQRBqJAALTwECfyMAQRBrIgMkACADQQhqIAJBAUECEOciIAMoAgghBCADKAIMIAEgAkEBdBDfCiEBIAAgAjYCCCAAIAE2AgQgACAENgIAIANBEGokAAtZAQF/IAEoAgwhAgJAAkACQAJAIAEoAgQOAgABAgsgAg0BQQEhAUEAIQIMAgsgAg0AIAEoAgAiASgCBCECIAEoAgAhAQwBCyAAIAEQkQoPCyAAIAEgAhDDIwtbAQF/AkACQAJAAkACQEEAIAAoAgAiAUF5aiABQQhJGw4EAAECAwQLIAAQ/hYPCyAAKAIEIAAoAggQ9jkPCyAAKAIEIAAoAggQgjoPCyAAKAIEIAAoAggQmToLC08BA38gASEDIAIhBAJAIAEoAogCIgVFDQAgAkEBaiEDIAEvAZADIQQLIAFByANBmAMgAhtBCBDuHCAAIAU2AgAgACAErUIghiADrYQ3AgQLUgEDfyAAKAIEIgIhAwNAIAMiBEEBdCEDIAQgAUkNAAsgBBDJKyEDIAIQySshBAJAIAAoAgAgBEECIAMQogUiBA0AAAsgACADNgIEIAAgBDYCAAtUAQJ/AkAgAEH/AXFBA0cNACABKAIAIQICQCABKAIEIgAoAgAiA0UNACACIAMRAwALAkAgACgCBCIDRQ0AIAIgAyAAKAIIEO4cCyABQQxBBBDuHAsLUAECfyMAQRBrIgEkAAJAIAAoAhAiAkUNACABQQRqIAAoAgQgACgCCCACQQFqEOkWIAAoAgwgASgCDGsgASgCBCABKAIIEIc1CyABQRBqJAALUAEBfyMAQRBrIgIkACACQQRqIAFBAUEBENEUIAIoAgghAQJAIAIoAgQNACAAIAIoAgw2AgQgACABNgIAIAJBEGokAA8LIAEgAigCDBD4OQALWQEBfyABKAIMIQICQAJAAkACQCABKAIEDgIAAQILIAINAUEBIQFBACECDAILIAINACABKAIAIgEoAgQhAiABKAIAIQEMAQsgACABEJEKDwsgACABIAIQ0SQLSwACQAJAAkAgAiADTQ0AIAEgA2osAABBv39MDQEMAgsgAiADRg0BCyABIAIgAyACIAQQiDcACyAAIAIgA2s2AgQgACABIANqNgIAC1QBAX9BAC0AwP+jARoCQEEgEIwBIgMNAAALIAMgATYCBCADIAA2AgAgAyACKQMANwMIIANBEGogAkEIaikDADcDACADQRhqIAJBEGopAwA3AwAgAwtPAQJ/IwBBEGsiAyQAIANBCGogAkEEQQgQ4yIgAygCCCEEIAMoAgwgASACQQN0EN8KIQEgACACNgIIIAAgATYCBCAAIAQ2AgAgA0EQaiQAC1ABAX8jAEEQayIDJAAgA0EEaiABQQggAhDRFCADKAIIIQICQCADKAIEDQAgACADKAIMNgIEIAAgAjYCACADQRBqJAAPCyACIAMoAgwQ+DkAC1gBAX8jAEEQayICJAAgAiAAQRBqNgIMIAFB5eygAUEDQbeXoQFBBCAAQQhqQZECQfueoQFBBSAAQZADQZzToAFBAyACQQxqQZEDEJ4RIQAgAkEQaiQAIAALWAEBfyMAQRBrIgIkACACIAA2AgwgAUGV16ABQQ1Bt5ehAUEEIABBEGpBkQJB4fSgAUEDIABBGGpBzANB1NigAUEEIAJBDGpBlwMQnhEhACACQRBqJAAgAAtYAQF/IwBBEGsiAiQAIAIgADYCDCABQez0oAFBCUG3l6EBQQQgAEEMakGRAkGF9KABQQQgAEEUakGiA0H19KABQQUgAkEMakH7AxCeESEAIAJBEGokACAAC1kBAX8gASgCDCECAkACQAJAAkAgASgCBA4CAAECCyACDQFBASEBQQAhAgwCCyACDQAgASgCACIBKAIEIQIgASgCACEBDAELIAAgARCRCg8LIAAgASACEMYcC1IBAn8jAEEQayICJABBACEDIAJBCGogAUEAEJIJAkACQCACLQAIDQAgACACLQAJOgABDAELIAAgAigCDDYCBEEBIQMLIAAgAzoAACACQRBqJAALUgECfyMAQRBrIgIkAEEBIQMgAkEIaiABQQEQkgkCQAJAIAItAAgNACAAIAItAAk6AAFBACEDDAELIAAgAigCDDYCBAsgACADOgAAIAJBEGokAAtYAQF/IwBBEGsiAiQAIAIgAEEQajYCDCABQeXsoAFBA0G3l6EBQQQgAEEIakGRAkH7nqEBQQUgAEGQA0Gc06ABQQMgAkEMakHHBhCeESEAIAJBEGokACAAC1gBAX8jAEEQayICJAAg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OgABQQAhAQwBCyAAIAIoAgw2AgRBASEBCyAAIAE6AAAgAkEQaiQAC1ABAX8jAEEQayICJAAgAkEIaiABENgCAkACQCACLQAIDQAgACACLQAJOgABQQAhAQwBCyAAIAIoAgw2AgRBASEBCyAAIAE6AAAgAkEQaiQAC08BAX8jAEEQayICJAAgAkEIaiABEFgCQAJAIAItAAgNACAAIAItAAk6AAFBACEBDAELIAAgAigCDDYCBEEBIQELIAAgAToAACACQRBqJAALUAEBfyMAQRBrIgIkACACQQhqIAEQwAwCQAJAIAItAAgNACAAIAItAAk6AAFBACEBDAELIAAgAigCDDYCBEEBIQELIAAgAToAACACQRBqJAALUAEBfyMAQRBrIgIkACACQQhqIAEQ5wkCQAJAIAItAAgNACAAIAItAAk6AAFBACEBDAELIAAgAigCDDYCBEEBIQELIAAgAToAACACQRBqJAALUAEBfyMAQRBrIgIkACACQQhqIAEQ6gMCQAJAIAItAAgNACAAIAItAAk6AAFBACEBDAELIAAgAigCDDYCBEEBIQELIAAgAToAACACQRBqJAALWQECfwJAAkAgAC0ANA0AIAAtADkhAgwBCyAALQA5IQIgAC0AOiEDIABBgQI7ADkgASgCBCAAEIoCIAAgAzoAOgsgAEEBOgA5IAEoAgAgABD+ASAAIAI6ADkLTgECfyAALQA4IQIgAEEAOgA4AkAgASgCCCIDRQ0AIAEoAgQhASADQThsIQMDQCAAIAEQ2SkgAUE4aiEBIANBSGoiAw0ACwsgACACOgA4C08BAn8gAC0AJiECIABBADoAJgJAIAEoAggiA0UNACABKAIEIQEgA0EGdCEDA0AgACABEOUcIAFBwABqIQEgA0FAaiIDDQALCyAAIAI6ACYLTgECfyAALQAmIQIgAEEAOgAmAkAgASgCCCIDRQ0AIAEoAgQhASADQTBsIQMDQCAAIAEQ4DIgAUEwaiEBIANBUGoiAw0ACwsgACACOgAmC00BAn9BACECAkACQCABKAIYRQ0AIAEQ5RghAyABIAEoAhhBf2o2AhggA0UNACADQXhqIQEgA0FoaiECDAELCyAAIAE2AgQgACACNgIAC1MBA38CQCAAKAIAIgFFDQACQCAAKAIEIgIoAgAiA0UNACABIAMRAwALAkAgAigCBCID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aiABQQhqKAIANgIAC14BAX8gASgCACIBIAEoAgAiAkEBajYCAAJAIAJBf0oNAAALIAAgARDbJyAAQYCAgIB4NgLUBSAAQYCAgIB4NgLoBCAAQYCAgIB4NgLYBCAAQQI2AsgEIABBAjYCyAELXgEBfyABKAJIIgEgASgCACICQQFqNgIAAkAgAkF/Sg0AAAsgACABENsnIABBgICAgHg2AtQFIABBgICAgHg2AugEIABBgICAgHg2AtgEIABBAjYCyAQgAEECNgLIAQtfAQF/IAEoApADIgEgASgCACICQQFqNgIAAkAgAkF/Sg0AAAsgACABENsnIABBgICAgHg2AtQFIABBgICAgHg2AugEIABBgICAgHg2AtgEIABBAjYCyAQgAEECNgLIAQtfAQF/IAEoAoACIgEgASgCACICQQFqNgIAAkAgAkF/Sg0AAAsgACABENsnIABBgICAgHg2AtQFIABBgICAgHg2AugEIABBgICAgHg2AtgEIABBAjYCyAQgAEECNgLIAQteAQF/IAEoAgAiASABKAIAIgJBAWo2AgACQCACQX9KDQAACyAAIAEQ2ycgAEGAgICAeDYC1AUgAEGAgICAeDYC6AQgAEGAgICAeDYC2AQgAEECNgLIBCAAQQI2AsgBC0cBAn8CQCABRQ0AA0ACQCAAKAIAIgJFDQAgAiACKAIAIgNBf2o2AgAgA0EBRw0AIAAQgiQLIABBCGohACABQX9qIgENAAsLC0QBAX8jAEEQayICJAAgAiAAIAFBgAFxQQN2aiIAKQMAIABBCGopAwAgAUH/AHEQwxwgAigCACEBIAJBEGokACABQQFxC0wBAX8CQAJAIAFFDQBBACECAkAgAC0AAEECcUUNACABQQxNDQIgACgACSECCyACDwtBAEEAQaDNgwEQoRsAC0ENIAFBwM6DARCjGwALTwEBfyAAKAKwASECIABBADYCsAECQCACQQFxDQBBvNWDAUEfQdzVgwEQqh4ACyAAIAAoAnAgACgCtAEiAiABayABIAJrIAIgAUsbajYCcAtMAQF/AkACQCABKAIIIgINAEEMIQEMAQsgASACQX9qIgI2AgggASgCBCACQQN0aiIBKAIEIQIgASgCACEBCyAAIAI2AgQgACABNgIAC1EBA39BBCEBAkACQAJAIAAoAgAiAkGAgICAeHMiA0ECIANBAkkbDgICAQALIAIgACgCBBD2OUEMIQELIAAgAWoiACgCACAAQQRqKAIAEPY5CwtKAQF/AkAgACgCCCICIAAoAgBHDQAgABDcJgsgACACQQFqNgIIIAAoAgQgAkEEdGoiACABKQIANwIAIABBCGogAUEIaikCADcCAAtNAQJ/IAAgACgCBCIDIAJrNgIEIAAgACgCACADIAJJciIENgIAQQEhAwJAIAQNACAAKAIIIgAoAhQgASACIAAoAhgoAgwRCwAhAwsgAwtOAQJ/IwBBEGsiAiQAIAEoAhRBiO2YAUELIAEoAhgoAgwRCwAhAyACQQA6AA0gAiADOgAMIAIgATYCCCACQQhqEKUbIQEgAkEQaiQAIAELQgACQAJAIAQgA0kNACACIARJDQEgACAEIANrNgIEIAAgASADQQxsajYCAA8LIAMgBCAFEKQbAAsgBCACIAUQoxsAC0oBAX8CQCAAKAIIIgIgACgCAEcNACAAEN0mCyAAIAJBAWo2AgggACgCBCACQQxsaiIAIAEpAgA3AgAgAEEIaiABQQhqKAIANgIAC00BBH8gACgCBCEBAkAgACgCCCICRQ0AIAEhAwNAIAMoAgAiBBCMAyAEQeAAQQgQ7hwgA0EEaiEDIAJBf2oiAg0ACwsgACgCACABEN8zC00BBH8gACgCBCEBAkAgACgCCCICRQ0AIAEhAwNAIAMoAgAiBBCMAyAEQeAAQQgQ7hwgA0EEaiEDIAJBf2oiAg0ACwsgACgCACABEN8zC0sBAX8gACgCACIAIAAoAgBBf2oiATYCAAJAIAENACAAQQhqEMceIABBKGoQ4jcgACAAKAIEQX9qIgE2AgQgAQ0AIABBMEEIEO4cCwtLAQF/IAAoAgAiACAAKAIAQX9qIgE2AgACQCABDQAgAEEIahDHHiAAQSBqEOM3IAAgACgCBEF/aiIBNgIEIAENACAAQShBCBDuHAsLSgEBfwJAIAAoAggiAiAAKAIARw0AIAAQ3CYLIAAgAkEBajYCCCAAKAIEIAJBBHRqIgAgASkCADcCACAAQQhqIAFBCGopAgA3AgALRgECfyMAQRBrIgEkAEEBIQICQCAAKAIADQAgARDFOTcDCCABQQhqIABBCGoQtxJBAXMhAiABQQhqEMceCyABQRBqJAAgAgtOACAAKAIAIgAQnTcgAEEMahC/CyAAKAIMIABBEGooAgAQszogAEEwahC8NyAAKAI0ENwvIAAoAjgQ3TggAEEYahCrNyAAQcAAQQQQ7hwLTgAgACgCACIAEJ03IABBDGoQvwsgACgCDCAAQRBqKAIAELM6IABBMGoQxzcgACgCNBDcLyAAKAI4EN04IABBGGoQqzcgAEHAAEEEEO4cC1EBAX8jAEEQayICJAAgAiAAKAIAKAIAIgA2AgwgAUHf3aABQRhBt5ehAUEEIABBDGpBkQJBiOegAUEGIAJBDGpBlQMQqRIhACACQRBqJAAgAAtRAQF/IwBBEGsiAiQAIAIgACgCACgCACIANgIMIAFBq92gAUEPQbeXoQFBBCAAQQxqQZECQYjnoAFBBiACQQxqQacDEKkSIQAgAkEQaiQAIAALUQEBfyMAQRBrIgIkACACIAAoAgAoAgAiADYCDCABQaLXoAFBCUG3l6EBQQQgAEEMakGRAkHg7KABQQUgAkEMakGpAxCpEiEAIAJBEGokACAAC04AIAAoAgAiABDUNyAAQQxqEL8LIAAoAgwgAEEQaigCABCzOiAAQTBqEIk4IAAoAjQQ3C8gACgCOBDdOCAAQRhqEKs3IABBwABBBBDuHAtLAQF/IAAgACgCAEF/aiIBNgIAAkAgAQ0AIAAoAgwgAEEQaigCABCGNiAAQQRqIgEgASgCAEF/aiIBNgIAIAENACAAQRhBBBDuHAsLUQEBfyMAQRBrIgIkACACIAAoAgAoAgAiADYCDCABQd/doAFBGEG3l6EBQQQgAEEMakGRAkGI56ABQQYgAkEMakHeBRCpEiEAIAJBEGokACAAC1EBAX8jAEEQayICJAAgAiAAKAIAKAIAIgA2AgwgAUGr3aABQQ9Bt5ehAUEEIABBDGpBkQJBiOegAUEGIAJBDGpB5QUQqRIhACACQRBqJAAgAAtNAQR/IAAoAgQhAQJAIAAoAggiAkUNACABIQMDQCADKAIAIgQQiQMgBEHgAEEIEO4cIANBBGohAyACQX9qIgINAAsLIAAoAgAgARDfMwtNAQR/IAAoAgQhAQJAIAAoAggiAkUNACABIQMDQCADKAIAIgQQiQMgBEHgAEEIEO4cIANBBGohAyACQX9qIgINAAsLIAAoAgAgARDfMwtRAQF/IwBBEGsiAiQAIAIgACgCACgCACIANgIMIAFB6NqgAUEJQbeXoQFBBCAAQQRqQZECQbnsoAFBCCACQQxqQfMFEKkSIQAgAkEQaiQAIAALUQEBfyMAQRBrIgIkACACIAAoAgAoAgAiADYCDCABQaLXoAFBCUG3l6EBQQQgAEEMakGRAkHg7KABQQUgAkEMakHJBRCpEiEAIAJBEGokACAAC00BBH8gACgCBCEBAkAgACgCCCICRQ0AIAEhAwNAIAMoAgAiBBCNAyAEQeAAQQgQ7hwgA0EEaiEDIAJBf2oiAg0ACwsgACgCACABEN8zC00BBH8gACgCBCEBAkAgACgCCCICRQ0AIAEhAwNAIAMoAgAiBBCNAyAEQeAAQQgQ7hwgA0EEaiEDIAJBf2oiAg0ACwsgACgCACABEN8zC0oBAn8gAEEAOgA5AkAgASgCOCICRQ0AIAEoAjQhAyACQQxsIQIDQCAAIAMoAgAQ2TIgA0EMaiEDIAJBdGoiAg0ACwsgASAAEK4TC0kBAX8gACgCDCABEP4CAkAgACgCCCICRQ0AIAJBBHQhAiAAKAIEQQxqIQADQCAAKAIAIAEQ/gIgAEEQaiEAIAJBcGoiAg0ACwsLUQEBfyMAQRBrIgIkACACIAAoAgAoAgAiADYCDCABQd/doAFBGEG3l6EBQQQgAEEMakGRAkGI56ABQQYgAkEMakG8CBCpEiEAIAJBEGokACAAC1EBAX8jAEEQayICJAAgAiAAKAIAKAIAIgA2AgwgAUGr3aABQQ9Bt5ehAUEEIABBDGpBkQJBiOegAUEGIAJBDGpBvggQqRIhACACQRBqJAAgAAtPAQN/IAAtACQhAiAAQQI6ACQgAC0AJiEDIABBADoAJiAALQAlIQQCQCABKAIoIgFFDQAgACABEFQLIAAgBDoAJSAAIAI6ACQgACADOgAmC1EBAX8jAEEQayICJAAgAiAAKAIAKAIAIgA2AgwgAUHo2qABQQlBt5ehAUEEIABBBGpBkQJBueygAUEIIAJBDGpBywcQqRIhACACQRBqJAAgAAtRAQF/IwBBEGsiAiQAIAIgACgCACgCACIANgIMIAFBotegAUEJQbeXoQFBBCAAQQxqQZECQeDsoAFBBSACQQxqQb8IEKkSIQAgAkEQaiQAIAALSgEBfwJAIAAoAggiAkUNACABLQAADQAgACgCBCEAIAJBMGwhAgNAAkAgAS0AAA0AIAAgARD/BAsgAEEwaiEAIAJBUGoiAg0ACwsLTgAgACgCACIAEJ03IABBDGoQvwsgACgCDCAAQRBqKAIAELM6IABBMGoQlzggACgCNBDcLyAAKAI4EN04IABBGGoQqzcgAEHAAEEEEO4cC00BBH8gACgCBCEBAkAgACgCCCICRQ0AIAEhAwNAIAMoAgAiBBDbAiAEQeAAQQgQ7hwgA0EEaiEDIAJBf2oiAg0ACwsgACgCACABEN8zC00BBH8gACgCBCEBAkAgACgCCCICRQ0AIAEhAwNAIAMoAgAiBBDbAiAEQeAAQQgQ7hwgA0EEaiEDIAJBf2oiAg0ACwsgACgCACABEN8zC1EBAX8jAEEQayICJAAgAiAAKAIAKAIAIgA2AgwgAUGr3aABQQ9Bt5ehAUEEIABBDGpBkQJBiOegAUEGIAJBDGpBwQoQqRIhACACQRBqJAAgAAtRAQF/IwBBEGsiAiQAIAIgACgCACgCACIANgIMIAFB392gAUEYQbeXoQFBBCAAQQxqQZECQYjnoAFBBiACQQxqQc8KEKkSIQAgAkEQaiQAIAALUQEBfyMAQRBrIgIkACACIAAoAgAoAgAiADYCDCABQejaoAFBCUG3l6EBQQQgAEEEakGRAkG57KABQQggAkEMakHLCRCpEiEAIAJBEGokACAAC1EBAX8jAEEQayICJAAgAiAAKAIAKAIAIgA2AgwgAUGi16ABQQlBt5ehAUEEIABBDGpBkQJB4OygAUEFIAJBDGpBwwoQqRIhACACQRBqJAAgAAtNAQR/IAAoAgQhAQJAIAAoAggiAkUNACABIQMDQCADKAIAIgQQ/AIgBEHgAEEIEO4cIANBBGohAyACQX9qIgINAAsLIAAoAgAgARDfMwtNAQR/IAAoAgQhAQJAIAAoAggiAkUNACABIQMDQCADKAIAIgQQ/AIgBEHgAEEIEO4cIANBBGohAyACQX9qIgINAAsLIAAoAgAgARDfMwtOACAAKAIAIgAQnTcgAEEMahC/CyAAKAIMIABBEGooAgAQszogAEEwahCnOCAAKAI0ENwvIAAoAjgQ3TggAEEYahCrNyAAQcAAQQQQ7hwLSwECfyMAQRBrIgEkAEEAIQICQCAALQAADQAgAC0AAUUNACABQQhqIAAoAgQoAgBB0NGhARD6NiABQQhqEJAyIQILIAFBEGokACACC0UBAX8jAEEQayIEJAAgASACIAMQGiEDIARBCGoQvy8gBCgCDCECIAAgBCgCCCIBNgIAIAAgAiADIAEbNgIEIARBEGokAAtDAAJAAkAgAUEJSQ0AIAEgABDWCSEBDAELIAAQjAEhAQsCQCABRQ0AIAFBfGotAABBA3FFDQAgAUEAIAAQ7xEaCyABC0wBAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGYiYIBQQZBwLGAAUEGIABBOGpBJEHc/IMBQQggAkEMakElEKkSIQAgAkEQaiQAIAALSAECfwJAAkAgASgCDCABKAIIIgJHDQBBACEDDAELQQEhAyABIAJBAWo2AgggASACQQJ0aigCACEBCyAAIAE2AgQgACADNgIAC0kBAX8jAEEQayIDJAACQCABIABrIAJqIgFBf0oNAEGQw6EBQSsgA0EPakGsyoABQfjKgAEQsRgACyAAIAFBARDuHCADQRBqJAALTAEBfyMAQSBrIgAkACAAQQE2AgQgAEGk16EBNgIAIABCATcCDCAAQQytQiCGQfz1gAGthDcDGCAAIABBGGo2AgggAEGgkJkBEK0uAAtNAQF/IwBBEGsiAiQAIAIgACgCACIAQQRqNgIMIAFB9f6BAUELQYD/gQFBCCAAQRFBkOagAUEEIAJBDGpB3QAQqRIhACACQRBqJAAgAAtMAQF/IwBB8ABrIgIkACACQRBqIAEQ3hIgAkHAAGogARDeEiACQQA2AgwgAkKAgICAwAA3AgQgACACQQRqQewAEN8KGiACQfAAaiQAC0sBAX8CQCAAKAI4RQ0AIAAoAkAiAUUNACAAKAI8IAFBARDuHAsgACgCSCIBIAEoAgAiAUF/ajYCAAJAIAFBAUcNACAAKAJIENoYCwtHAQF/AkAgACgCFCIDIAEgACgCsAJ0IAAgAkH/AXFqQSxqLQAAaiIBSw0AIAEgA0GMjYMBEKEbAAsgACgCECABQQN0aikDAAtPAQF/IwBBEGsiAiQAIAIgACgCACIAQYgFajYCDCABQdDPoAFBBUGctIMBQQcgAEG+AUGjtIMBQQcgAkEMakG/ARCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgBBGGo2AgwgAUG6tIMBQRJB/42EAUEGIABBxAFBhY6EAUEDIAJBDGpB+gAQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFB+Y2EAUEGQf+NhAFBBiAAQQRqQdYBQYWOhAFBAyACQQxqQfoAEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiAEEMajYCDCABQZS5hwFBC0GfuYcBQQYgAEHhAUGluYcBQQYgAkEMakGgARCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgBBDGo2AgwgAUGUuYcBQQtBn7mHAUEGIABB7gFBpbmHAUEGIAJBDGpBoAEQqRIhACACQRBqJAAgAAtKAQF/IAIgASgCCCIDEKcyIQIgAUEANgIIIAAgAjYCDCAAIAE2AgggACADIAJrNgIQIAAgASgCBCIBNgIAIAAgASACQQN0ajYCBAtKAQF/IAIgASgCCCIDEKcyIQIgAUEANgIIIAAgAjYCDCAAIAE2AgggACADIAJrNgIQIAAgASgCBCIBNgIAIAAgASACQQF0ajYCBAtIAQJ/AkACQCABKAIMIAEoAggiAkcNAEEAIQMMAQtBASEDIAEgAkEBajYCCCABIAJBAnRqKAIAIQELIAAgATYCBCAAIAM2AgALTQEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQdz0mgFBBkHi9JoBQQQgAEEEakERQeb0mgFBBSACQQxqQYUCEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiAEEMajYCDCABQbGUmQFBCUG6lJkBQQ0gAEGWAkHHlJkBQQsgAkEMakGXAhCpEiEAIAJBEGokACAAC0gBAX8CQCABRQ0AA0ACQCAAKAIAQQdGDQAgABCHCQsgAEEwaigCACICEIwDIAJB4ABBCBDuHCAAQThqIQAgAUF/aiIBDQALCwtIAQJ/IwBBEGsiAyQAIANBCGogAhD7IiADKAIIIQQgAygCDCABIAIQ3wohASAAIAI2AgggACABNgIEIAAgBDYCACADQRBqJAALUwACQAJAAkACQAJAIAAoAgAOBAECAwQACyAAKQMQIAAoAhgQwDsPCyAAKQMIENIfDwsgACkDCCAAKQMYELk7DwsgACkDGBCiNw8LIABBBGoQ6DgLTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQejaoAFBCUG3l6EBQQQgAEEEakGRAkG57KABQQggAkEMakHoAhCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgBBCGo2AgwgAUHY2KABQQ1Bt5ehAUEEIABBkQJBkOagAUEEIAJBDGpB/QIQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBmNmgAUEJQbeXoQFBBCAAQQxqQZECQb7boAFBByACQQxqQYMDEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQaHZoAFBC0G3l6EBQQQgAEEEakGRAkH0xaABQQkgAkEMakHoAhCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGs2aABQQtBt5ehAUEEIABBDGpBkQJBmMegAUEKIAJBDGpBhAMQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBt9mgAUEOQbeXoQFBBCAAQQRqQZECQbnsoAFBCCACQQxqQegCEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQcXZoAFBCkG3l6EBQQQgAEEEakGRAkG57KABQQggAkEMakHoAhCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgBBCGo2AgwgAUH52aABQQtBt5ehAUEEIABBkQJB/cWgAUEKIAJBDGpBiAMQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBhNqgAUETQbeXoQFBBCAAQQRqQZECQbnsoAFBCCACQQxqQegCEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQcTaoAFBCUG3l6EBQQQgAEEgakGRAkHoxaABQQMgAkEMakGKAxCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUH57KABQQlBt5ehAUEEIABBCGpBkQJBifSgAUEDIAJBDGpBmAMQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIAQQhqNgIMIAFBzM+gAUEEQbeXoQFBBCAAQZECQfueoQFBBSACQQxqQaABEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQbjIoAFBC0G3l6EBQQQgAEEMakGRAkHDyKABQQUgAkEMakGVAxCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGSzqABQRJBt5ehAUEEIABBDGpBkQJBw8igAUEFIAJBDGpBlQMQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBzcKgAUEIQbeXoQFBBCAAQQxqQZECQcnsoAFBBSACQQxqQagDEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQaLXoAFBCUG3l6EBQQQgAEEMakGRAkHg7KABQQUgAkEMakGpAxCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgBBGGo2AgwgAUGhwqABQQZBwt6gAUEFIABBqgNB7aWhAUEIIAJBDGpBqwMQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBxsKgAUEHQbeXoQFBBCAAQQxqQZECQaLToAFBBSACQQxqQbcDEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiAEEYajYCDCABQYLEoAFBCUHC3qABQQUgAEGqA0HEgqEBQQUgAkEMakG9AxCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgBBCGo2AgwgAUGExaABQQxBt5ehAUEEIABBkQJBkOagAUEEIAJBDGpBvwMQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFB+cOgAUEJQbeXoQFBBCAAQQRqQZECQb31oAFBAyACQQxqQdQCEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQYvEoAFBCUG3l6EBQQQgAEEEakGRAkHV9KABQQQgAkEMakHUAhCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUHK1KABQRBBt5ehAUEEIABBBGpBkQJB1fSgAUEEIAJBDGpB1AIQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFB5smgAUENQbeXoQFBBCAAQQRqQZECQdX0oAFBBCACQQxqQdQCEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiAEEIajYCDCABQcn1oAFBCkG3l6EBQQQgAEGRAkG99aABQQMgAkEMakHlAxCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgBBCGo2AgwgAUH69KABQQlBt5ehAUEEIABBkQJBg/WgAUEFIAJBDGpB5gMQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIAQQhqNgIMIAFBnvagAUEMQbeXoQFBBCAAQZECQYP1oAFBBSACQQxqQeYDEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQbT1oAFBCUG3l6EBQQQgAEEEakGRAkG99aABQQMgAkEMakHUAhCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUHN9KABQQhBt5ehAUEEIABBBGpBkQJB1fSgAUEEIAJBDGpB1AIQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFB/c+gAUEQQbeXoQFBBCAAQQxqQZECQdX0oAFBBCACQQxqQf8DEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQaTOoAFBE0G3l6EBQQQgAEEEakGRAkGTkqEBQQQgAkEMakGDBBCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGA3aABQQ1Bt5ehAUEEIABBDGpBkQJByfSgAUEEIAJBDGpBhwQQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBz+CgAUESQbeXoQFBBCAAQQRqQZECQdX0oAFBBCACQQxqQdQCEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQZvQoAFBDUGv7KABQQogAEEEakGRAkHV9KABQQQgAkEMakHUAhCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGN0KABQQ5Bt5ehAUEEIABBBGpBkQJB1fSgAUEEIAJBDGpB1AIQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIAQSBqNgIMIAFBmdGgAUEMQaztoAFBAyAAQZcEQfueoQFBBSACQQxqQdQCEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiAEEgajYCDCABQfvQoAFBCkGs7aABQQMgAEGXBEHtpaEBQQggAkEMakGrAxCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgBBCGo2AgwgAUH8zqABQRVBt5ehAUEEIABBkQJBw+2gAUECIAJBDGpBuwIQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBk8agAUETQbeXoQFBBCAAQRhqQZECQdX0oAFBBCACQQxqQZoDEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQfbKoAFBD0G3l6EBQQQgAEEMakGRAkHJ9KABQQQgAkEMakGDAxCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgBBCGo2AgwgAUGo0KABQRFBt5ehAUEEIABBkQJBje2gAUEEIAJBDGpBpgQQqRIhACACQRBqJAAgAAtTAAJAAkACQAJAAkAgACgCAA4EAQIDBAALIAApAxAgACgCGBDAOw8LIAApAwgQ0h8PCyAAKQMIIAApAxgQuTsPCyAAKQMYEKI3DwsgAEEEahCBBAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBpdGgAUEQQbeXoQFBBCAAQQRqQZECQdX0oAFBBCACQQxqQdQCEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiAEEMajYCDCABQfLEoAFBDEH+xKABQQYgAEGvBEHV9KABQQQgAkEMakHUAhCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgBBCGo2AgwgAUGO4KABQQZBt5ehAUEEIABBkQJBzt+gAUEFIAJBDGpBsAQQqRIhACACQRBqJAAgAAtTAAJAAkACQAJAAkAgACgCAA4EAQIDBAALIAApAxAgACgCGBDAOw8LIAApAwgQ0h8PCyAAKQMIIAApAxgQuTsPCyAAKQMYEKI3DwsgAEEEahDJBQtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBieWgAUEJQbeXoQFBBCAAQQRqQZECQdX0oAFBBCACQQxqQdQCEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiAEEgajYCDCABQcXtoAFBD0Gs7aABQQMgAEGXBEH7nqEBQQUgAkEMakH2AxCpEiEAIAJBEGokACAAC0kAAkACQAJAAkACQCAAKAIADgQBAgMEAAsgAEEIahDiLw8LIABBCGoQxx4PCyAAQQhqEPQ4DwsgAEEYahDgNQ8LIABBBGoQgwULTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQcTioAFBGEG3l6EBQQQgAEEgakGRAkGN7aABQQQgAkEMakHUBBCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGF36ABQQpBt5ehAUEEIABBKGpBkQJBj9+gAUEEIAJBDGpB4wMQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBn+CgAUERQbeXoQFBBCAAQShqQZECQY/foAFBBCACQQxqQeIEEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQbDgoAFBEUG3l6EBQQQgAEEEakGRAkHV9KABQQQgAkEMakHUAhCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUHX5aABQQtBt5ehAUEEIABBGGpBkQJByfSgAUEEIAJBDGpB0gMQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIAQQhqNgIMIAFBg+KgAUEVQbeXoQFBBCAAQZECQfbhoAFBBSACQQxqQbsCEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiAEEIajYCDCABQa7ioAFBFkG3l6EBQQQgAEGRAkH24aABQQUgAkEMakG7AhCpEiEAIAJBEGokACAAC0gBAX8CQCABRQ0AA0ACQCAAKAIAQQdGDQAgABCTCQsgAEEwaigCACICEIkDIAJB4ABBCBDuHCAAQThqIQAgAUF/aiIBDQALCwtOAQF/IwBBEGsiAiQAIAIgACgCACIAQQhqNgIMIAFBjuCgAUEGQbeXoQFBBCAAQZECQc7foAFBBSACQQxqQfMEEKkSIQAgAkEQaiQAIAALRwEDfyAAKAIMIgEgACgCBCICa0EwbiEDAkAgASACRg0AA0AgAhDEFiACQTBqIQIgA0F/aiIDDQALCyAAKAIIIAAoAgAQ3jMLTgEBfyMAQRBrIgIkACACIAAoAgAiAEEYajYCDCABQbftoAFBDEHD7aABQQIgAEGrBUG57KABQQggAkEMakGsBRCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGi16ABQQlBt5ehAUEEIABBDGpBkQJB4OygAUEFIAJBDGpByQUQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBzcKgAUEIQbeXoQFBBCAAQQxqQZECQcnsoAFBBSACQQxqQc4FEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiAEEYajYCDCABQaHCoAFBBkHC3qABQQUgAEHSBUHtpaEBQQggAkEMakHTBRCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGb0KABQQ1Br+ygAUEKIABBBGpBkQJB1fSgAUEEIAJBDGpB8QQQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBi8SgAUEJQbeXoQFBBCAAQQRqQZECQdX0oAFBBCACQQxqQfEEEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQcbCoAFBB0G3l6EBQQQgAEEMakGRAkGi06ABQQUgAkEMakHUBRCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUH57KABQQlBt5ehAUEEIABBCGpBkQJBifSgAUEDIAJBDGpBxgUQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBgu2gAUELQbeXoQFBBCAAQQhqQZECQY3toAFBBCACQQxqQcYFEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQaXRoAFBEEG3l6EBQQQgAEEEakGRAkHV9KABQQQgAkEMakHxBBCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUH5w6ABQQlBt5ehAUEEIABBBGpBkQJBvfWgAUEDIAJBDGpB8QQQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIAQRhqNgIMIAFBgsSgAUEJQcLeoAFBBSAAQdIFQcSCoQFBBSACQQxqQeYFEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiAEEMajYCDCABQfLEoAFBDEH+xKABQQYgAEHnBUHV9KABQQQgAkEMakHxBBCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUHmyaABQQ1Bt5ehAUEEIABBBGpBkQJB1fSgAUEEIAJBDGpB8QQQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBieWgAUEJQbeXoQFBBCAAQQRqQZECQdX0oAFBBCACQQxqQfEEEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiAEEIajYCDCABQdjYoAFBDUG3l6EBQQQgAEGRAkGQ5qABQQQgAkEMakG4BhCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGY2aABQQlBt5ehAUEEIABBDGpBkQJBvtugAUEHIAJBDGpBvQYQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBodmgAUELQbeXoQFBBCAAQQRqQZECQfTFoAFBCSACQQxqQfMFEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQazZoAFBC0G3l6EBQQQgAEEMakGRAkGYx6ABQQogAkEMakG+BhCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUG32aABQQ5Bt5ehAUEEIABBBGpBkQJBueygAUEIIAJBDGpB8wUQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBxdmgAUEKQbeXoQFBBCAAQQRqQZECQbnsoAFBCCACQQxqQfMFEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiAEEIajYCDCABQfnZoAFBC0G3l6EBQQQgAEGRAkH9xaABQQogAkEMakH1BRCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGE2qABQRNBt5ehAUEEIABBBGpBkQJBueygAUEIIAJBDGpB8wUQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBxNqgAUEJQbeXoQFBBCAAQSBqQZECQejFoAFBAyACQQxqQcIGEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQaTOoAFBE0G3l6EBQQQgAEEEakGRAkGTkqEBQQQgAkEMakHKBhCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgBBCGo2AgwgAUHMz6ABQQRBt5ehAUEEIABBkQJB+56hAUEFIAJBDGpB0QUQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBuMigAUELQbeXoQFBBCAAQQxqQZECQcPIoAFBBSACQQxqQd4FEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQZLOoAFBEkG3l6EBQQQgAEEMakGRAkHDyKABQQUgAkEMakHeBRCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUHo2qABQQlBt5ehAUEEIABBBGpBkQJBueygAUEIIAJBDGpB8wUQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFB3PSaAUEGQeL0mgFBBCAAQQRqQdcGQeb0mgFBBSACQQxqQdgGEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiAEEIajYCDCABQYTFoAFBDEG3l6EBQQQgAEGRAkGQ5qABQQQgAkEMakHeBhCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUHK1KABQRBBt5ehAUEEIABBBGpBkQJB1fSgAUEEIAJBDGpB8QQQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIAQQhqNgIMIAFBqNCgAUERQbeXoQFBBCAAQZECQY3toAFBBCACQQxqQekGEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQf3PoAFBEEG3l6EBQQQgAEEMakGRAkHV9KABQQQgAkEMakHsBhCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGN0KABQQ5Bt5ehAUEEIABBBGpBkQJB1fSgAUEEIAJBDGpB8QQQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBz+CgAUESQbeXoQFBBCAAQQRqQZECQdX0oAFBBCACQQxqQfEEEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQZPGoAFBE0G3l6EBQQQgAEEYakGRAkHV9KABQQQgAkEMakHNBhCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUH2yqABQQ9Bt5ehAUEEIABBDGpBkQJByfSgAUEEIAJBDGpBvQYQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBgN2gAUENQbeXoQFBBCAAQQxqQZECQcn0oAFBBCACQQxqQfIGEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiAEEgajYCDCABQZnRoAFBDEGs7aABQQMgAEH/BkH7nqEBQQUgAkEMakHxBBCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgBBIGo2AgwgAUH70KABQQpBrO2gAUEDIABB/wZB7aWhAUEIIAJBDGpB0wUQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIAQQhqNgIMIAFByfWgAUEKQbeXoQFBBCAAQZECQb31oAFBAyACQQxqQYgGEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiAEEIajYCDCABQfr0oAFBCUG3l6EBQQQgAEGRAkGD9aABQQUgAkEMakGcBxCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgBBCGo2AgwgAUGe9qABQQxBt5ehAUEEIABBkQJBg/WgAUEFIAJBDGpBnAcQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBtPWgAUEJQbeXoQFBBCAAQQRqQZECQb31oAFBAyACQQxqQfEEEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQc30oAFBCEG3l6EBQQQgAEEEakGRAkHV9KABQQQgAkEMakHxBBCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgBBIGo2AgwgAUHF7aABQQ9BrO2gAUEDIABB/wZB+56hAUEFIAJBDGpBqwcQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBhd+gAUEKQbeXoQFBBCAAQShqQZECQY/foAFBBCACQQxqQZkHEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQZ/goAFBEUG3l6EBQQQgAEEoakGRAkGP36ABQQQgAkEMakGzBxCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGw4KABQRFBt5ehAUEEIABBBGpBkQJB1fSgAUEEIAJBDGpB8QQQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIAQQhqNgIMIAFB/M6gAUEVQbeXoQFBBCAAQZECQcPtoAFBAiACQQxqQYgFEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQdfloAFBC0G3l6EBQQQgAEEYakGRAkHJ9KABQQQgAkEMakHWBhCpEiEAIAJBEGokACAAC0cBAn8CQCAAKAIMIgEgACgCBCICRg0AIAEgAmtBAnYhAQNAIAIQrwIgAkEEaiECIAFBf2oiAQ0ACwsgACgCCCAAKAIAEN8zC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGJ5aABQQlBt5ehAUEEIABBBGpBkQJB1fSgAUEEIAJBDGpB4wcQqRIhACACQRBqJAAgAAtIAQF/AkAgAUUNAANAAkAgACgCAEEHRg0AIAAQiAkLIABBMGooAgAiAhCNAyACQeAAQQgQ7hwgAEE4aiEAIAFBf2oiAQ0ACwsLRgEBfwJAIAAoAggiAkUNACAAKAIEIQAgAkEobCECA0ACQCAAKAIAQQdGDQAgACABENUOCyAAQShqIQAgAkFYaiICDQALCwtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBxsKgAUEHQbeXoQFBBCAAQQxqQZECQaLToAFBBSACQQxqQYUIEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiAEEIajYCDCABQY7goAFBBkG3l6EBQQQgAEGRAkHO36ABQQUgAkEMakGLCBCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgBBDGo2AgwgAUHyxKABQQxB/sSgAUEGIABB5wVB1fSgAUEEIAJBDGpB4wcQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBm9CgAUENQa/soAFBCiAAQQRqQZECQdX0oAFBBCACQQxqQeMHEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiAEEYajYCDCABQbftoAFBDEHD7aABQQIgAEGrBUG57KABQQggAkEMakGbCBCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGLxKABQQlBt5ehAUEEIABBBGpBkQJB1fSgAUEEIAJBDGpB4wcQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFB5smgAUENQbeXoQFBBCAAQQRqQZECQdX0oAFBBCACQQxqQeMHEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQaXRoAFBEEG3l6EBQQQgAEEEakGRAkHV9KABQQQgAkEMakHjBxCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGi16ABQQlBt5ehAUEEIABBDGpBkQJB4OygAUEFIAJBDGpBvwgQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIAQRhqNgIMIAFBocKgAUEGQcLeoAFBBSAAQdIFQe2loQFBCCACQQxqQcAIEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQfnDoAFBCUG3l6EBQQQgAEEEakGRAkG99aABQQMgAkEMakHjBxCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgBBGGo2AgwgAUGCxKABQQlBwt6gAUEFIABB0gVBxIKhAUEFIAJBDGpBwwgQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBzcKgAUEIQbeXoQFBBCAAQQxqQZECQcnsoAFBBSACQQxqQcQIEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiAEEgajYCDCABQcXtoAFBD0Gs7aABQQMgAEHTCEH7nqEBQQUgAkEMakHUCBCpEiEAIAJBEGokACAAC0YBAX8CQCAAKAIIIgJFDQAgACgCBCEAIAJBKGwhAgNAAkAgACgCAEEHRg0AIAAgARDWDgsgAEEoaiEAIAJBWGoiAg0ACwsLRgEBfwJAIAAoAggiAkUNACAAKAIEIQAgAkEobCECA0ACQCAAKAIAQQdGDQAgACABEO4MCyAAQShqIQAgAkFYaiICDQALCwtOAQF/IwBBEGsiAiQAIAIgACgCACIAQQhqNgIMIAFBqNCgAUERQbeXoQFBBCAAQZECQY3toAFBBCACQQxqQdwIEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQaTOoAFBE0G3l6EBQQQgAEEEakGRAkGTkqEBQQQgAkEMakHdCBCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUHX5aABQQtBt5ehAUEEIABBGGpBkQJByfSgAUEEIAJBDGpBvAcQqRIhACACQRBqJAAgAAtFAAJAIAEoAgAgAkECdGtBfGooAgAiAiAAKAIAIgBBBGooAgAiAUkNACACIAFByKCgARChGwALIAAoAgAgAkEYbGo1AhALRQACQCABKAIAIAJBAnRrQXxqKAIAIgIgACgCACIAQQRqKAIAIgFJDQAgAiABQcigoAEQoRsACyAAKAIAIAJBFGxqNQIQC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGY2aABQQlBt5ehAUEEIABBDGpBkQJBvtugAUEHIAJBDGpB6ggQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBuMigAUELQbeXoQFBBCAAQQxqQZECQcPIoAFBBSACQQxqQbwIEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQZLOoAFBEkG3l6EBQQQgAEEMakGRAkHDyKABQQUgAkEMakG8CBCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUHE2qABQQlBt5ehAUEEIABBIGpBkQJB6MWgAUEDIAJBDGpB7QgQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBxdmgAUEKQbeXoQFBBCAAQQRqQZECQbnsoAFBCCACQQxqQcsHEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQYDdoAFBDUG3l6EBQQQgAEEMakGRAkHJ9KABQQQgAkEMakHxCBCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUH2yqABQQ9Bt5ehAUEEIABBDGpBkQJByfSgAUEEIAJBDGpB6ggQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBrNmgAUELQbeXoQFBBCAAQQxqQZECQZjHoAFBCiACQQxqQYcJEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQbfZoAFBDkG3l6EBQQQgAEEEakGRAkG57KABQQggAkEMakHLBxCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUHK1KABQRBBt5ehAUEEIABBBGpBkQJB1fSgAUEEIAJBDGpB4wcQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFB6NqgAUEJQbeXoQFBBCAAQQRqQZECQbnsoAFBCCACQQxqQcsHEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiAEEIajYCDCABQfnZoAFBC0G3l6EBQQQgAEGRAkH9xaABQQogAkEMakG6BxCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUHP4KABQRJBt5ehAUEEIABBBGpBkQJB1fSgAUEEIAJBDGpB4wcQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBodmgAUELQbeXoQFBBCAAQQRqQZECQfTFoAFBCSACQQxqQcsHEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiAEEIajYCDCABQdjYoAFBDUG3l6EBQQQgAEGRAkGQ5qABQQQgAkEMakGNCRCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGE2qABQRNBt5ehAUEEIABBBGpBkQJBueygAUEIIAJBDGpBywcQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIAQQhqNgIMIAFBruKgAUEWQbeXoQFBBCAAQZECQfbhoAFBBSACQQxqQYgFEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiAEEIajYCDCABQYPioAFBFUG3l6EBQQQgAEGRAkH24aABQQUgAkEMakGIBRCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgBBIGo2AgwgAUGZ0aABQQxBrO2gAUEDIABB0whB+56hAUEFIAJBDGpB4wcQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIAQSBqNgIMIAFB+9CgAUEKQaztoAFBAyAAQdMIQe2loQFBCCACQQxqQcAIEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQYXfoAFBCkG3l6EBQQQgAEEoakGRAkGP36ABQQQgAkEMakHJBxCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGf4KABQRFBt5ehAUEEIABBKGpBkQJBj9+gAUEEIAJBDGpBqQkQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBsOCgAUERQbeXoQFBBCAAQQRqQZECQdX0oAFBBCACQQxqQeMHEKkSIQAgAkEQaiQAIAALRwEDfyAAKAIMIgEgACgCBCICa0EwbiEDAkAgASACRg0AA0AgAhCpBSACQTBqIQIgA0F/aiIDDQALCyAAKAIIIAAoAgAQ3jMLTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQf3PoAFBEEG3l6EBQQQgAEEMakGRAkHV9KABQQQgAkEMakGsCRCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGN0KABQQ5Bt5ehAUEEIABBBGpBkQJB1fSgAUEEIAJBDGpB4wcQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIAQQhqNgIMIAFByfWgAUEKQbeXoQFBBCAAQZECQb31oAFBAyACQQxqQdIHEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQbT1oAFBCUG3l6EBQQQgAEEEakGRAkG99aABQQMgAkEMakHjBxCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUHN9KABQQhBt5ehAUEEIABBBGpBkQJB1fSgAUEEIAJBDGpB4wcQqRIhACACQRBqJAAgAAtIAQF/AkAgAUUNAANAAkAgACgCAEEHRg0AIAAQiQkLIABBMGooAgAiAhDbAiACQeAAQQgQ7hwgAEE4aiEAIAFBf2oiAQ0ACwsLTgEBfyMAQRBrIgIkACACIAAoAgAiAEEYajYCDCABQbftoAFBDEHD7aABQQIgAEGrBUG57KABQQggAkEMakG6CRCpEiEAIAJBEGokACAAC0cBAn8CQCAAKAIMIgEgACgCBCICRg0AIAEgAmtBBXYhAQNAIAIQpRIgAkEgaiECIAFBf2oiAQ0ACwsgACgCCCAAKAIAEOAzC0YBAX8CQCAAKAIIIgJFDQAgACgCBCEAIAJBKGwhAgNAAkAgACgCAEEHRg0AIAEgABCuMwsgAEEoaiEAIAJBWGoiAg0ACwsLTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQYnloAFBCUG3l6EBQQQgAEEEakGRAkHV9KABQQQgAkEMakG5CRCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgBBDGo2AgwgAUHyxKABQQxB/sSgAUEGIABB5wVB1fSgAUEEIAJBDGpBuQkQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBzcKgAUEIQbeXoQFBBCAAQQxqQZECQcnsoAFBBSACQQxqQZUKEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQaXRoAFBEEG3l6EBQQQgAEEEakGRAkHV9KABQQQgAkEMakG5CRCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGb0KABQQ1Br+ygAUEKIABBBGpBkQJB1fSgAUEEIAJBDGpBuQkQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIAQRhqNgIMIAFBgsSgAUEJQcLeoAFBBSAAQdIFQcSCoQFBBSACQQxqQccJEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQfnDoAFBCUG3l6EBQQQgAEEEakGRAkG99aABQQMgAkEMakG5CRCpEiEAIAJBEGokACAAC1EBAX8gACgCACIAQQRqIQECQAJAIAAoAgBBgICAgHhGDQAgASgCACAAQQhqKAIAEMYwIAAoAgAgASgCABDeMwwBCyABEOUBCyAAQRhBBBDuHAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBotegAUEJQbeXoQFBBCAAQQxqQZECQeDsoAFBBSACQQxqQcMKEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiAEEIajYCDCABQY7goAFBBkG3l6EBQQQgAEGRAkHO36ABQQUgAkEMakHGChCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUHGwqABQQdBt5ehAUEEIABBDGpBkQJBotOgAUEFIAJBDGpBxwoQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIAQRhqNgIMIAFBocKgAUEGQcLeoAFBBSAAQdIFQe2loQFBCCACQQxqQcgJEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQYvEoAFBCUG3l6EBQQQgAEEEakGRAkHV9KABQQQgAkEMakG5CRCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUHmyaABQQ1Bt5ehAUEEIABBBGpBkQJB1fSgAUEEIAJBDGpBuQkQqRIhACACQRBqJAAgAAtGAQF/AkAgACgCCCICRQ0AIAAoAgQhACACQShsIQIDQAJAIAAoAgBBB0YNACAAIAEQug4LIABBKGohACACQVhqIgINAAsLC0YBAX8CQCAAKAIIIgJFDQAgACgCBCEAIAJBKGwhAgNAAkAgACgCAEEHRg0AIAAgARC7DgsgAEEoaiEAIAJBWGoiAg0ACwsLTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQazZoAFBC0G3l6EBQQQgAEEMakGRAkGYx6ABQQogAkEMakHQChCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGE2qABQRNBt5ehAUEEIABBBGpBkQJBueygAUEIIAJBDGpBywkQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBuMigAUELQbeXoQFBBCAAQQxqQZECQcPIoAFBBSACQQxqQc8KEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQZLOoAFBEkG3l6EBQQQgAEEMakGRAkHDyKABQQUgAkEMakHPChCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGh2aABQQtBt5ehAUEEIABBBGpBkQJB9MWgAUEJIAJBDGpBywkQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFB9sqgAUEPQbeXoQFBBCAAQQxqQZECQcn0oAFBBCACQQxqQd4KEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiAEEIajYCDCABQfnZoAFBC0G3l6EBQQQgAEGRAkH9xaABQQogAkEMakHXCRCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUHK1KABQRBBt5ehAUEEIABBBGpBkQJB1fSgAUEEIAJBDGpBuQkQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIAQQhqNgIMIAFB2NigAUENQbeXoQFBBCAAQZECQZDmoAFBBCACQQxqQfMKEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQejaoAFBCUG3l6EBQQQgAEEEakGRAkG57KABQQggAkEMakHLCRCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGY2aABQQlBt5ehAUEEIABBDGpBkQJBvtugAUEHIAJBDGpB3goQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBxdmgAUEKQbeXoQFBBCAAQQRqQZECQbnsoAFBCCACQQxqQcsJEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQYDdoAFBDUG3l6EBQQQgAEEMakGRAkHJ9KABQQQgAkEMakH5ChCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUHP4KABQRJBt5ehAUEEIABBBGpBkQJB1fSgAUEEIAJBDGpBuQkQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBxNqgAUEJQbeXoQFBBCAAQSBqQZECQejFoAFBAyACQQxqQfoKEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQbfZoAFBDkG3l6EBQQQgAEEEakGRAkG57KABQQggAkEMakHLCRCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGkzqABQRNBt5ehAUEEIABBBGpBkQJBk5KhAUEEIAJBDGpB/woQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFB/c+gAUEQQbeXoQFBBCAAQQxqQZECQdX0oAFBBCACQQxqQYELEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiAEEIajYCDCABQajQoAFBEUG3l6EBQQQgAEGRAkGN7aABQQQgAkEMakGHCxCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGN0KABQQ5Bt5ehAUEEIABBBGpBkQJB1fSgAUEEIAJBDGpBuQkQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIAQSBqNgIMIAFB+9CgAUEKQaztoAFBAyAAQYoLQe2loQFBCCACQQxqQcgJEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiAEEgajYCDCABQZnRoAFBDEGs7aABQQMgAEGKC0H7nqEBQQUgAkEMakG5CRCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUHE4qABQRhBt5ehAUEEIABBIGpBkQJBje2gAUEEIAJBDGpBmgkQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBhd+gAUEKQbeXoQFBBCAAQShqQZECQY/foAFBBCACQQxqQegJEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQZ/goAFBEUG3l6EBQQQgAEEoakGRAkGP36ABQQQgAkEMakGcCxCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGw4KABQRFBt5ehAUEEIABBBGpBkQJB1fSgAUEEIAJBDGpBuQkQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFB1+WgAUELQbeXoQFBBCAAQRhqQZECQcn0oAFBBCACQQxqQdsJEKkSIQAgAkEQaiQAIAALRgEBfwJAIAAoAggiAkUNACAAKAIEIQAgAkEobCECA0ACQCAAKAIAQQdGDQAgACABELwOCyAAQShqIQAgAkFYaiICDQALCwtOAQF/IwBBEGsiAiQAIAIgACgCACIAQSBqNgIMIAFBxe2gAUEPQaztoAFBAyAAQYoLQfueoQFBBSACQQxqQaALEKkSIQAgAkEQaiQAIAALTgEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQc30oAFBCEG3l6EBQQQgAEEEakGRAkHV9KABQQQgAkEMakG5CRCpEiEAIAJBEGokACAAC04BAX8jAEEQayICJAAgAiAAKAIAIgBBCGo2AgwgAUHJ9aABQQpBt5ehAUEEIABBkQJBvfWgAUEDIAJBDGpB6wkQqRIhACACQRBqJAAgAAtOAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBtPWgAUEJQbeXoQFBBCAAQQRqQZECQb31oAFBAyACQQxqQbkJEKkSIQAgAkEQaiQAIAALSAEBfwJAIAFFDQADQAJAIAAoAgBBB0YNACAAEIoJCyAAQTBqKAIAIgIQ/AIgAkHgAEEIEO4cIABBOGohACABQX9qIgENAAsLC0YBAX8CQCAAKAIIIgJFDQAgACgCBCEAIAJBKGwhAgNAAkAgACgCAEEHRg0AIAAgARDaDgsgAEEoaiEAIAJBWGoiAg0ACwsLQQEBfyMAQRBrIgMkACADQQhqIAEQggUgACACIAMoAgwiASACIAFJGzYCACAAIAIgASACIAFLGzYCBCADQRBqJAALRwEBfyMAQRBrIgUkACAFQQhqIAEgAiADQX9qIARBf2pBuIyhARCDFyAFKAIMIQQgACAFKAIINgIAIAAgBDYCBCAFQRBqJAALUgIBfwF+IABBGGohAQJAAkAgACgCAA0AIAEQjC0gACgCGCAAKAIcEK06DAELIAEQhi0gACgCGCAAKAIcELA6CwJAIAApAxAiAlANACACENIfCwtDAANAAkACQCABRQ0AIAAoAgBFDQEgABC8MyAAQRhqKAIAIABBHGooAgAQ7jMMAQsPCyABQX9qIQEgAEEkaiEADAALC0QBAX8gAUE4bCEBA0ACQAJAIAFFDQAgACACEJwNIAAoAjAiA0UNASACIAMQ0QMMAQsPCyAAQThqIQAgAUFIaiEBDAALC0wBAX8jAEEQayICJAAgAiAAKAIAIgBBBGo2AgwgAUHLvaEBQQlB1L2hAUELIABBEUHfvaEBQQkgAkEMakEuEKkSIQAgAkEQaiQAIAALRAEBfyABQThsIQEDQAJAAkAgAUUNACAAIAIQhQ8gACgCMCIDRQ0BIAIgAxCwAwwBCw8LIABBOGohACABQUhqIQEMAAsLUwACQAJAAkACQAJAIAAoAgAOBAECAwQACyAAKQMQIAAoAhgQjDIPCyAAKQMIENIfDwsgACkDCCAAKQMYELk7DwsgACkDGBCiNw8LIABBBGoQ/gQLSAEBfyMAQRBrIgEkACABQQhqIAAgACgCAEEBQQRB3AAQ5QwCQCABKAIIIgBBgYCAgHhGDQAgACABKAIMEPg5AAsgAUEQaiQAC0cBAX8jAEEQayIBJAAgAUEIaiAAIAAoAgBBAUEEQRQQ5QwCQCABKAIIIgBBgYCAgHhGDQAgACABKAIMEPg5AAsgAUEQaiQAC0cBAX8jAEEQayIBJAAgAUEIaiAAIAAoAgBBAUEBQQkQnw0CQCABKAIIIgBBgYCAgHhGDQAgACABKAIMEPg5AAsgAUEQaiQAC0cBAX8jAEEQayIBJAAgAUEIaiAAIAAoAgBBAUEEQQgQnw0CQCABKAIIIgBBgYCAgHhGDQAgACABKAIMEPg5AAsgAUEQaiQAC0cBAX8jAEEQayIBJAAgAUEIaiAAIAAoAgBBAUEEQRQQnw0CQCABKAIIIgBBgYCAgHhGDQAgACABKAIMEPg5AAsgAUEQaiQACz8AAkACQCAEIANJDQAgBCACSw0BIAAgBCADazYCBCAAIAEgA2o2AgAPCyADIAQgBRCkGwALIAQgAiAFEKMbAAtHAQF/IwBBEGsiASQAIAFBCGogACAAKAIAQQFBBEEEEJ8NAkAgASgCCCIAQYGAgIB4Rg0AIAAgASgCDBD4OQALIAFBEGokAAtHAQF/IwBBEGsiASQAIAFBCGogACAAKAIAQQFBBEEMEJ8NAkAgASgCCCIAQYGAgIB4Rg0AIAAgASgCDBD4OQALIAFBEGokAAtJAAJAIAAoAhAgACgCFCABIAAoAjx2QX5qQbD0gwEQ7zAiACgCCCIBIAJLDQAgAiABQcD0gwEQoRsACyAAKAIEIAJBAnRqKAIAC0UBAX8CQCAAKAIAIAAoAggiA2sgAk8NACAAIAMgAhDzECAAKAIIIQMLIAAoAgQgA2ogASACEN8KGiAAIAMgAmo2AghBAAtHAQF/IwBBEGsiASQAIAFBCGogACAAKAIAQQFBAUEBEOUMAkAgASgCCCIAQYGAgIB4Rg0AIAAgASgCDBD4OQALIAFBEGokAAtHAQF/IwBBEGsiASQAIAFBCGogACAAKAIAQQFBBEEgEOUMAkAgASgCCCIAQYGAgIB4Rg0AIAAgASgCDBD4OQALIAFBEGokAAtHAQF/IwBBEGsiASQAIAFBCGogACAAKAIAQQFBBEEEEOUMAkAgASgCCCIAQYGAgIB4Rg0AIAAgASgCDBD4OQALIAFBEGokAAtHAQF/IwBBEGsiASQAIAFBCGogACAAKAIAQQFBBEEEEOcMAkAgASgCCCIAQYGAgIB4Rg0AIAAgASgCDBD4OQALIAFBEGokAAtHAQF/IwBBEGsiASQAIAFBCGogACAAKAIAQQFBAUEBEOcMAkAgASgCCCIAQYGAgIB4Rg0AIAAgASgCDBD4OQALIAFBEGokAAtFAQF/IwBBEGsiAiQAIAJBCGogAUEIaigCADYCACACIAEpAgA3AwAgAS0ADCEBIAJBAhDsCyAAIAEgAhDyHiACQRBqJAALSAACQCABKAIAQYCAgIB4Rw0AIAAgASgCBCIBQQRqKAIAIAFBCGooAgAQviMPCyAAIAEpAgA3AgAgAEEIaiABQQhqKAIANgIAC0cBAX8jAEEQayIBJAAgAUEIaiAAIAAoAgBBAUEEQRgQ5QwCQCABKAIIIgBBgYCAgHhGDQAgACABKAIMEPg5AAsgAUEQaiQAC0cBAX8jAEEQayIBJAAgAUEIaiAAIAAoAgBBAUEEQRwQ5QwCQCABKAIIIgBBgYCAgHhGDQAgACABKAIMEPg5AAsgAUEQaiQAC0cBAX8jAEEQayIBJAAgAUEIaiAAIAAoAgBBAUEEQQQQnw0CQCABKAIIIgBBgYCAgHhGDQAgACABKAIMEPg5AAsgAUEQaiQAC0kBAX8jAEEQayIBJAAgAUEIaiAAIAAoAgBBAUHAAEHAABCfDQJAIAEoAggiAEGBgICAeEYNACAAIAEoAgwQ+DkACyABQRBqJAALRwEBfyMAQRBrIgEkACABQQhqIAAgACgCAEEBQQRBCBDlDAJAIAEoAggiAEGBgICAeEYNACAAIAEoAgwQ+DkACyABQRBqJAALRwEBfyMAQRBrIgEkACABQQhqIAAgACgCAEEBQQhBEBCfDQJAIAEoAggiAEGBgICAeEYNACAAIAEoAgwQ+DkACyABQRBqJAALRwEBfyMAQRBrIgEkACABQQhqIAAgACgCAEEBQQRBCBCfDQJAIAEoAggiAEGBgICAeEYNACAAIAEoAgwQ+DkACyABQRBqJAALRwEBfyMAQRBrIgEkACABQQhqIAAgACgCAEEBQQhBIBCfDQJAIAEoAggiAEGBgICAeEYNACAAIAEoAgwQ+DkACyABQRBqJAALRwEBfyMAQRBrIgEkACABQQhqIAAgACgCAEEBQQRBDBCfDQJAIAEoAggiAEGBgICAeEYNACAAIAEoAgwQ+DkACyABQRBqJAALRwEBfyMAQRBrIgEkACABQQhqIAAgACgCAEEBQQFBAhCfDQJAIAEoAggiAEGBgICAeEYNACAAIAEoAgwQ+DkACyABQRBqJAALRwEBfyMAQRBrIgEkACABQQhqIAAgACgCAEEBQQRBEBCfDQJAIAEoAggiAEGBgICAeEYNACAAIAEoAgwQ+DkACyABQRBqJAALRwEBfyMAQRBrIgEkACABQQhqIAAgACgCAEEBQQRBGBCfDQJAIAEoAggiAEGBgICAeEYNACAAIAEoAgwQ+DkACyABQRBqJAALRwEBfyMAQRBrIgEkACABQQhqIAAgACgCAEEBQQRBFBCfDQJAIAEoAggiAEGBgICAeEYNACAAIAEoAgwQ+DkACyABQRBqJAALRwEBfyMAQRBrIgEkACABQQhqIAAgACgCAEEBQQRBOBCfDQJAIAEoAggiAEGBgICAeEYNACAAIAEoAgwQ+DkACyABQRBqJAALSQECfyAAKAIAIAAoAgQQ+zkgACgCDCAAKAIQEPs5AkAgACgCHCIBRQ0AIAEgASgCACICQX9qNgIAIAJBAUcNACAAQRxqEPgXCwtHAQF/IwBBEGsiASQAIAFBCGogACAAKAIAQQFBBEEkEOUMAkAgASgCCCIAQYGAgIB4Rg0AIAAgASgCDBD4OQALIAFBEGokAAtIAQF/IwBBEGsiASQAIAFBCGogACAAKAIAQQFBBEGYARDlDAJAIAEoAggiAEGBgICAeEYNACAAIAEoAgwQ+DkACyABQRBqJAALSAEBfyMAQRBrIgEkACABQQhqIAAgACgCAEEBQQRB8AAQ5QwCQCABKAIIIgBBgYCAgHhGDQAgACABKAIMEPg5AAsgAUEQaiQAC0cBAX8jAEEQayIBJAAgAUEIaiAAIAAoAgBBAUEEQSgQ5QwCQCABKAIIIgBBgYCAgHhGDQAgACABKAIMEPg5AAsgAUEQaiQAC1ABAX9B/68DIQECQAJAAkAgAEGAwANGDQAgAEUNASAAQX9qIgFBgLADc0GAgLx/akH/j7x/TQ0CCyABDwtB9LiHARD9OQALQYS5hwEQ/TkAC0cBAX8jAEEQayIBJAAgAUEIaiAAIAAoAgBBAUEBQQIQ5QwCQCABKAIIIgBBgYCAgHhGDQAgACABKAIMEPg5AAsgAUEQaiQAC0cBAX8jAEEQayIBJAAgAUEIaiAAIAAoAgBBAUEEQRAQ5QwCQCABKAIIIgBBgYCAgHhGDQAgACABKAIMEPg5AAsgAUEQaiQAC0cBAX8jAEEQayIBJAAgAUEIaiAAIAAoAgBBAUEEQQwQ5QwCQCABKAIIIgBBgYCAgHhGDQAgACABKAIMEPg5AAsgAUEQaiQAC0wAAkAgBCgCAEGAgICAeEYNACAAQYCAgIB4NgIAIAAgBCkCADcCBCAAQQxqIARBCGopAgA3AgAPCyAAIAEgAiADIAQtAARBA2oQwSkLSAEBfyMAQRBrIgEkACABQQhqIAAgACgCAEEBQQRB2AAQ5QwCQCABKAIIIgBBgYCAgHhGDQAgACABKAIMEPg5AAsgAUEQaiQAC0IBAn8jAEEgayIAJAAgAEEYakIANwMAIABBEGpCADcDACAAQgA3AwggACAAQQhqEIkoIAAoAgQhASAAQSBqJAAgAQtGAQJ/IAAoAgwgACgCBCIBa0EYbiECAkADQCACRQ0BIAEpAwAQyx8gAkF/aiECIAFBGGohAQwACwsgACgCCCAAKAIAEKg6C0cBAX8jAEEQayIBJAAgAUEIaiAAIAAoAgBBAUEIQRgQ5QwCQCABKAIIIgBBgYCAgHhGDQAgACABKAIMEPg5AAsgAUEQaiQAC08BAX9BAC0AwP+jARoCQEEcEIwBIgENAAALIAFCADcCCCABQoCAgICAATcCACAAIAE2AgQgAEECNgIAIAFBEGpCADcCACABQRhqQQA7AQALRwEBfyMAQRBrIgEkACABQQhqIAAgACgCAEEBQQhBKBDlDAJAIAEoAggiAEGBgICAeEYNACAAIAEoAgwQ+DkACyABQRBqJAALRwEBfyMAQRBrIgEkACABQQhqIAAgACgCAEEBQQhBOBDlDAJAIAEoAggiAEGBgICAeEYNACAAIAEoAgwQ+DkACyABQRBqJAALRwEBfyMAQRBrIgEkACABQQhqIAAgACgCAEEBQQhBIBDlDAJAIAEoAggiAEGBgICAeEYNACAAIAEoAgwQ+DkACyABQRBqJAALQgEBfyMAQRBrIgIkAAJAIAFFDQAgAkEEakEMQQggAUEBahDpFiAAIAIoAgxrIAIoAgQgAigCCBCHNQsgAkEQaiQAC0cBAX8jAEEQayIBJAAgAUEIaiAAIAAoAgBBAUEIQTAQ5QwCQCABKAIIIgBBgYCAgHhGDQAgACABKAIMEPg5AAsgAUEQaiQAC0cBAX8CQEEIQcAAELs4IgENAAALIAFBFjYCACABIAApAgA3AgQgAUEMaiAAQQhqKQIANwIAIAFBFGogAEEQaigCADYCACABC0gBAX8jAEEQayIBJAAgAUEIaiAAIAAoAgBBAUEIQdgAEOUMAkAgASgCCCIAQYGAgIB4Rg0AIAAgASgCDBD4OQALIAFBEGokAAtIAgF/AXwjAEEQayIEJAACQCAALQAADQAgACsDCCEFIARBEGokACAFDwsgBCAALQABOgAPIAEgAiAEQQ9qQeCymQEgAxCxGAALQgEBfyMAQRBrIgIkACACIAA2AgggAiAAIAFqNgIMA0AgAkEIahCEESIAQVBqQQpJDQALIAJBEGokACAAQYCAxABGC0ABAX8jAEEQayICJAAgAiABNgIMIAIgADYCCCACQQhqEIQRGiACQQhqEIQRGiACQQhqEIQRIQEgAkEQaiQAIAELRwEBfyMAQRBrIgEkACABQQhqIAAgACgCAEEBQQhBCBDlDAJAIAEoAggiAEGBgICAeEYNACAAIAEoAgwQ+DkACyABQRBqJAALSAEBfyMAQRBrIgEkACABQQhqIAAgACgCAEEBQQhB0AAQ5QwCQCABKAIIIgBBgYCAgHhGDQAgACABKAIMEPg5AAsgAUEQaiQAC0gBAX8jAEEQayIBJAAgAUEIaiAAIAAoAgBBAUEIQcgAEOUMAkAgASgCCCIAQYGAgIB4Rg0AIAAgASgCDBD4OQALIAFBEGokAAtJAAJAAkACQAJAAkAgACgCAA4EAQIDBAALIABBCGoQ5jcPCyAAKQMIENIfDwsgAEEIahDlNw8LIABBGGoQ4zQPCyAAQQRqEIE5C0gBAX8jAEEQayIBJAAgAUEIaiAAIAAoAgBBAUEIQcAAEOUMAkAgASgCCCIAQYGAgIB4Rg0AIAAgASgCDBD4OQALIAFBEGokAAtPAAJAIAIgA0GlkqEBQQUQoDENAAJAIAIgA0GTkqEBQQQQoDENACAAQSU2AgAPCyAAQYIqOwEIIABBAjYCAA8LIABBgig7AQggAEECNgIAC1AAAkAgAiADQcT8oAFBAxCgMQ0AAkAgAiADQaeGoQFBBBCgMQ0AIABBJTYCAA8LIABBgsIAOwEIIABBAjYCAA8LIABBgiI7AQggAEECNgIAC08AAkAgAiADQZ6SoQFBAhCgMQ0AAkAgAiADQYiGoQFBBhCgMQ0AIABBJTYCAA8LIABBgDg7AQggAEECNgIADwsgAEGACDsBCCAAQQI2AgALTwACQCACIANBy4WhAUEGEKAxDQACQCACIANB9KuhAUEDEKAxDQAgAEElNgIADwsgAEGALDsBCCAAQQI2AgAPCyAAQYAMOwEIIABBAjYCAAtHACAAKAIAIgAQgi0gACgCACAAQQRqKAIAELE6IABBDGoQ1DcgAEEYahDUNSAAQTxqENIuIABBwABqEP03IABByABBBBDuHAtBAAJAAkAgAg0AQQAhAQwBCyABQQFqQQAgAS0AAEH/AXEgA0H/AXFGGyEBIAJBf2ohAgsgACACNgIEIAAgATYCAAtOAAJAAkACQCAADgMAAgECCyABQQRqIgAoAgAgAUEIaigCABC6JyABKAIAIAAoAgAQ4zMgAUEcQQQQ7hwLDwsgARDZASABQcAAQQgQ7hwLTwACQAJAAkACQAJAIAAoAgAOBQABAgMEAAsgAEIANwMQDwsgAEIANwMQDwsgAEIANwMIDwsgAEIANwMIIAAoAgQgARCMAg8LIABCADcDCAtEAQF/IAAoAghBKGwhAiAAKAIEIQACQANAIAJFDQECQCAAKAIAQQdGDQAgACABEJ8iCyAAQShqIQAgAkFYaiECDAALCwtEAQF/IAAoAghBKGwhAiAAKAIEIQACQANAIAJFDQECQCAAKAIAQQdGDQAgACABEL8cCyAAQShqIQAgAkFYaiECDAALCwtIAgF/AX4gACABIAEpAwBCfnwiA0ICIANCAlQbp0ECdCICQfTBowFqKAIAaigCADYCBCAAIAEgAkHowaMBaigCAGooAgA2AgALRwEBfyMAQRBrIgIkACACIABBDGo2AgwgAUGIhIABQQdBmNaZAUEHIABBCUHS9JgBQQQgAkEMakEKEKkSIQAgAkEQaiQAIAALRwEBfyMAQRBrIgIkACACIABBAWo2AgwgAUG0mYABQQxBwJmAAUEFIABBGUGCvKEBQQYgAkEMakEaEKkSIQAgAkEQaiQAIAALRwEBfyMAQRBrIgIkACACIABBAWo2AgwgAUH9mYABQQ1BwJmAAUEFIABBGUHYmYABQQUgAkEMakETEKkSIQAgAkEQaiQAIAALRAEBfyMAQRBrIgUkACAFQQhqIAAgASACIAMgBBCfDQJAIAUoAggiBEGBgICAeEYNACAEIAUoAgwQ+DkACyAFQRBqJAALRwEBfyMAQRBrIgIkACACIABBBGo2AgwgAUHLvaEBQQlB1L2hAUELIABBEUHfvaEBQQkgAkEMakEuEKkSIQAgAkEQaiQAIAALRwEBfyMAQRBrIgIkACACIABBBGo2AgwgAUGYiYIBQQZBnomCAUEEIABBO0Hv9IMBQQkgAkEMakE8EKkSIQAgAkEQaiQAIAALSAEEf0EBIQICQCAAQQRqIgMgASgCFCIEIAEoAhgiBRCBAw0AIAEgACgCACIAKAIEIAAoAggQ3wUNACADIAQgBRCwMSECCyACC0QBAX8jAEEQayIFJAAgBUEIaiAAIAEgAiADIAQQ5QwCQCAFKAIIIgRBgYCAgHhGDQAgBCAFKAIMEPg5AAsgBUEQaiQAC0gBBH9BASECAkAgAEEEaiIDIAEoAhQiBCABKAIYIgUQgQMNACABIAAoAgAiACgCACAAKAIEEN8FDQAgAyAEIAUQsDEhAgsgAgtNAQJ/IwBBEGsiASQAAkBBACAAKAIAKAIAEQQAIgINAEGA5KIBQcYAIAFBD2pB8OOiAUGY5aIBELEYAAsgAiAAKAIENgIAIAFBEGokAAtBAQR/QQAhAgNAAkAgAkEYRw0ADwsgACACaiIDKAIAIQQgAyABIAJqIgUoAgA2AgAgBSAENgIAIAJBBGohAgwACwtKAQF/AkAgAC0AAEGAAUYNACABKAIUIAAgAC0ACiICaiAALQALIAJrIAEoAhgoAgwRCwAPCyABKAIUIAAoAgQgASgCGCgCEBEIAAs/AQF+AkACQCABKQMAIgJQRQ0AQQAhAQwBCyABIAJCf3wgAoM3AwBBASEBCyAAIAE2AgAgACACeqdBA3Y2AgQLQAEBfyMAQRBrIgIkACACQQRqIAFBAWoQ2BgCQCACKAIIIgFFDQAgACACKAIMayABIAIoAgQQ7hwLIAJBEGokAAs6AQF/AkBBfyABIANHIAEgA0kbIgQNACAAIAAgAUECdGogAiACIANBAnRqEMEbIQQLIARB/wFxQQFGCzwBA34CQCADRQ0AIAAgAa1CIIYgAq0iBIQgA60iBYAiBj4CACAAIAQgBiAFfn0+AgQPC0HssoIBEPIrAAtKAQF/IwBBEGsiAiQAIAIgAEGgDWo2AgwgAUGLh4MBQQ1Bh4eDAUEEIABBiAFB9o2EAUEDIAJBDGpB+wAQqRIhACACQRBqJAAgAAtJAQF/IwBBEGsiAiQAIAIgADYCDCABQf2EgwFBA0H2jYQBQQMgAEEEakGSAUGAhYMBQQogAkEMakGTARCpEiEAIAJBEGokACAAC0kBAX8jAEEQayICJAAgAiAANgIMIAFB/YSDAUEDQfaNhAFBAyAAQQRqQZUBQYCFgwFBCiACQQxqQZMBEKkSIQAgAkEQaiQAIAALSQEBfyMAQRBrIgIkACACIAA2AgwgAUH9hIMBQQNB9o2EAUEDIABBBGpBlgFBgIWDAUEKIAJBDGpBkwEQqRIhACACQRBqJAAgAAtKAQF/IwBBEGsiAiQAIAIgAEHIAGo2AgwgAUH9hIMBQQNB9o2EAUEDIABBlwFBgIWDAUEKIAJBDGpBkwEQqRIhACACQRBqJAAgAAtKAQF/IwBBEGsiAiQAIAIgAEGQA2o2AgwgAUH9hIMBQQNB9o2EAUEDIABBmAFBgIWDAUEKIAJBDGpBkwEQqRIhACACQRBqJAAgAAtKAQF/IwBBEGsiAiQAIAIgAEGAAmo2AgwgAUH9hIMBQQNB9o2EAUEDIABBngFBgIWDAUEKIAJBDGpBkwEQqRIhACACQRBqJAAgAAtJAQF/IwBBEGsiAiQAIAIgADYCDCABQf2EgwFBA0H2jYQBQQMgAEEEakGhAUGAhYMBQQogAkEMakGTARCpEiEAIAJBEGokACAAC0IBAX8CQCABRQ0AA0AgACgCACICIAIoAgAiAkF/ajYCAAJAIAJBAUcNACAAEIIkCyAAQQhqIQAgAUF/aiIBDQALCwtBAQF/QQAhBgJAIAQgA08NACABIAIgBGotAABqLQAAQQFHDQAgACAENgIEIAAgBEEBajYCCEEBIQYLIAAgBjYCAAtQAQF/QQAtAMD/owEaAkBBGBCMASIBDQAACyABQgQ3AhAgAUIANwIIIAFCgICAgMAANwIAIABBADoADCAAQQE2AgggACABNgIEIABBATYCAAtQAQF/QQAtAMD/owEaAkBBGBCMASIBDQAACyABQgQ3AhAgAUIANwIIIAFCgICAgMAANwIAIABBAToADCAAQQE2AgggACABNgIEIABBATYCAAtJAQF/IwBBEGsiAiQAIAIgADYCDCABQeaNhAFBBkH2jYQBQQMgAEEIakHFAUGqtIMBQRAgAkEMakHAARCpEiEAIAJBEGokACAAC0gBAX8jAEEQayICJAAgAiAAQQRqNgIMIAFBy72hAUEJQdS9oQFBCyAAQfAAQd+9oQFBCSACQQxqQS4QqRIhACACQRBqJAAgAAtIAQF/IwBBEGsiAiQAIAIgAEEEajYCDCABQfzBgwFBFUHL6oMBQQkgAEGmAUGRwoMBQQggAkEMakEiEKkSIQAgAkEQaiQAIAALSQEBfyMAQRBrIgIkACACIAA2AgwgAUHmjYQBQQZB7I2EAUEKIABBEGpB1wFB9o2EAUEDIAJBDGpB2AEQqRIhACACQRBqJAAgAAtPAQF/AkAgARDDFEHcAEcNACAAIAEQnQEPCyAAQQxqIAEQoREgARDDFCECIAEQ7Q0aIABBADoAJCAAIAI2AgggAEKigICAoICAgIB/NwIAC0MBAn8gACgCDCAAKAIEIgFrQRxuIQICQANAIAJFDQEgAkF/aiECIAEQiRMgAUEcaiEBDAALCyAAKAIIIAAoAgAQjToLRQEBfwJAIAAoAgBBgICAgHhGDQAgACgCCEEEdCEBIAAoAgQhAANAIAFFDQEgAEEAOgAMIAFBcGohASAAQRBqIQAMAAsLC0kBAX8jAEEQayICJAAgAiAAQQxqNgIMIAFBwMOhAUENQc3DoQFBBSAAQfUBQdLDoQFBBSACQQxqQfYBEKkSIQAgAkEQaiQAIAALPgEBfyAAKAIAKAIAIgIpAwAgACgCBCgCAEEAIAFrQRhsakFoaiIAKQMAhSACQQhqKQMAIABBCGopAwCFhFALQgECf0EAIQICQCAAKAIAKAIAIgMoAgAgACgCBCgCACABQQR0ayIAQXBqKAIARw0AIANBBGogAEF0ahDUNCECCyACC0kBAX8jAEEQayICJAAgAiAAQQxqNgIMIAFBsZSZAUEJQbqUmQFBDSAAQZYCQceUmQFBCyACQQxqQZcCEKkSIQAgAkEQaiQAIAALQwIBfwF+AkAgASkDACIDQgODQgBSDQAgA6ciAiACKAIAIgJBAWo2AgAgAkF/Sg0AAAsgACADNwMAIAAgASgCEDYCCAtDAgF/AX4CQCABKQMAIgNCA4NCAFINACADpyICIAIoAgAiAkEBajYCACACQX9KDQAACyAAIAM3AwAgACABKAIQNgIIC0QBAn8gACgCDCAAKAIEIgFrQQZ2IQICQANAIAJFDQEgAkF/aiECIAEQgzkgAUHAAGohAQwACwsgACgCCCAAKAIAELE6C0YBAX8gACAAKAIAQX9qIgE2AgACQCABDQAgACgCDCAAQRBqKAIAEPY5IAAgACgCBEF/aiIBNgIEIAENACAAQRhBBBDuHAsLSAEBfwJAAkACQCAALQAsQX1qIgFBASABQf8BcUEDSRtB/wFxDgIBAgALIAApAwAgACkDEBC/Ow8LIAApAwAQ0h8PCyAAEIQtC0cAIAApAwggACkDGBC5OwJAIAAtADRBA0YNACAAQSBqEJwsCyAAKAI4EN04AkAgACgCPCIARQ0AIAAQozcgAEEUQQQQ7hwLC0MBAn8gACgCDCAAKAIEIgFrQShuIQICQANAIAJFDQEgAkF/aiECIAEQ+jEgAUEoaiEBDAALCyAAKAIIIAAoAgAQrjoLRAECfyMAQRBrIgIkACACQQhqIAAoAggiAyAAKAIAIAAoAgQQky4gACADIAEgAigCCCACKAIMEP8MajYCCCACQRBqJAALRAEBfwJAAkAgACgChAEiAUGAAUsNACAAQQFqIQAMAQsgACgCBCEBIAAoAgghAAsCQCABDQBBDQ8LIAEgAGpBf2otAAALQwECfyAAKAIMIAAoAgQiAWtBAnYhAgJAA0AgAkUNASACQX9qIQIgARDUCSABQQRqIQEMAAsLIAAoAgggACgCABD7OQtDAQN/IAEoAgQhAiAAIAEoAggiAxCeMCAAKAIEIAAoAggiBEEwbGogAiADQTBsEN8KGiABQQA2AgggACAEIANqNgIIC0MBA38gASgCBCECIAAgASgCCCIDEJ8wIAAoAgQgACgCCCIEQThsaiACIANBOGwQ3woaIAFBADYCCCAAIAQgA2o2AggLSQEBfyMAQRBrIgIkACACIAA2AgwgAUH57KABQQlBt5ehAUEEIABBCGpBkQJBifSgAUEDIAJBDGpBmAMQqRIhACACQRBqJAAgAAtHACAAKQMIIAApAxgQuTsCQCAALQA0QQNGDQAgAEEgahCcLAsgACgCOBDdOAJAIAAoAjwiAEUNACAAENg3IABBFEEEEO4cCwtEAQF/IwBBEGsiAiQAIAJBCGogAEEIakGAwpkBEKkuIAIoAgwhACACKAIIIAEQmywgACAAKAIAQQFqNgIAIAJBEGokAAtCACAAQQhqEOU3AkAgAC0ANEEDRg0AIABBIGoQnCwLIABBOGoQ6TUCQCAAKAI8IgBFDQAgABCjNyAAQRRBBBDuHAsLRwAgACgCACIAEIItIAAoAgAgAEEEaigCABCxOiAAQQxqENQ3IABBGGoQ/DUgACgCPBDcLyAAQcAAahCHOCAAQcgAQQQQ7hwLSQEBfyMAQRBrIgIkACACIAA2AgwgAUGC7aABQQtBt5ehAUEEIABBCGpBkQJBje2gAUEEIAJBDGpBmAMQqRIhACACQRBqJAAgAAtJAQF/IwBBEGsiAiQAIAIgAEEYajYCDCABQbftoAFBDEHD7aABQQIgAEHOA0G57KABQQggAkEMakHgAhCpEiEAIAJBEGokACAAC0MBAX8CQCABRQ0AA0ACQCAAKAIAQQJGDQAgAEEMaigCACICEKIBIAJBwABBCBDuHAsgAEEQaiEAIAFBf2oiAQ0ACwsLUAEBfwJAAkACQAJAIAAoAgBBeWoOAwEDAgALIAAQ4A0LIAAoAiwiASAAKAIwEKUwIAAoAiggARDeMw8LIAAoAgQiABC6AyAAQSBBCBDuHAsLQwEBfwJAIAFFDQADQCAAEJMJAkAgAEEwaigCACICRQ0AIAIQogEgAkHAAEEIEO4cCyAAQThqIQAgAUF/aiIBDQALCwtJAQF/IwBBEGsiAiQAIAIgAEEYajYCDCABQbftoAFBDEHD7aABQQIgAEGrBUG57KABQQggAkEMakGsBRCpEiEAIAJBEGokACAAC0MBAX8CQCABRQ0AA0AgABCICQJAIABBMGooAgAiAkUNACACEKgBIAJBwABBCBDuHAsgAEE4aiEAIAFBf2oiAQ0ACwsLQwEBfwJAIAFFDQADQAJAIAAoAgBBAkYNACAAQQxqKAIAIgIQqAEgAkHAAEEIEO4cCyAAQRBqIQAgAUF/aiIBDQALCwtFAAJAAkACQAJAIAAoAgAOBAABAgMACyABIABBCGoQsyAPCyAAQQRqIAEQpR8PCyABIABBBGoQqCkPCyAAQQRqIAEQ7BILQwEBfyAAQgA3AgwCQCAAKAIIIgJFDQAgACgCBCEAIAJBAnQhAgNAIAEgACgCABDFAiAAQQRqIQAgAkF8aiICDQALCwtJAQF/IwBBEGsiAiQAIAIgAEEYajYCDCABQbftoAFBDEHD7aABQQIgAEGrBUG57KABQQggAkEMakGbCBCpEiEAIAJBEGokACAAC0IAA0ACQCAALQAlQQJHDQAgASAAEKgFDwsCQCAALQAkRQ0AIAEtADQNAA8LIAEgAEEIakEAEMoUIAAoAiAhAAwACwtJAQF/IwBBEGsiAiQAIAIgADYCDCABQYLtoAFBC0G3l6EBQQQgAEEIakGRAkGN7aABQQQgAkEMakHGBRCpEiEAIAJBEGokACAAC0kBAX8jAEEQayICJAAgAiAANgIMIAFB+eygAUEJQbeXoQFBBCAAQQhqQZECQYn0oAFBAyACQQxqQcYFEKkSIQAgAkEQaiQAIAALQgEBfyMAQRBrIgIkACAAIAFBCGoiARCpKSACIAEQpicgAEEsaiACKQMAIAIoAghBARDWAiAAIAEQoBQgAkEQaiQAC0kBAX8CQCABLQAIQQVHDQACQAJAIAEoAgAiAigCAEEaRw0AIAJBCGpBkqyhAUEEEJUsDQELIAAgASgCABCwAw8LIABBAToAAAsLQwEBfwJAIAFFDQADQAJAIAAoAgBBAkYNACAAQQxqKAIAIgIQqwEgAkHAAEEIEO4cCyAAQRBqIQAgAUF/aiIBDQALCwtDAQF/AkAgAUUNAANAIAAQiQkCQCAAQTBqKAIAIgJFDQAgAhCrASACQcAAQQgQ7hwLIABBOGohACABQX9qIgENAAsLC0kBAX8jAEEQayICJAAgAiAAQRhqNgIMIAFBt+2gAUEMQcPtoAFBAiAAQasFQbnsoAFBCCACQQxqQboJEKkSIQAgAkEQaiQAIAALQwEBfwJAIAFFDQADQAJAIAAoAgBBAkYNACAAQQxqKAIAIgIQrwEgAkHAAEEIEO4cCyAAQRBqIQAgAUF/aiIBDQALCwtDAQF/AkAgAUUNAANAIAAQigkCQCAAQTBqKAIAIgJFDQAgAhCvASACQcAAQQgQ7hwLIABBOGohACABQX9qIgENAAsLC0cAAkACQAJAIAUNACAEQYCAAXFFDQBBBCEEDAELIARBgDxxQYA8Rg0BQQUhBAsgACAEOgAADwtBlM6hAUEoQdiemQEQ0ycAC0UAAkACQAJAAkAgACgCAA4EAAECAwALIABBCGogARCdIg8LIAEgAEEEahD5FQ8LIABBBGogARCeOA8LIAEgAEEEahDaDwtAAQF/IwBBEGsiAiQAIAJBBGogAUEBahDGFwJAIAIoAggiAUUNACAAIAIoAgxrIAEgAigCBBDuHAsgAkEQaiQAC0AAIABBACABa0EMbGoiAUF0aigCAEHdy92eeWwgAUF4aigCAGpB3cvdnnlsIAFBfGooAgBqQd3L3Z55bEEPd60LQwECfyAAKAIMIAAoAgQiAWtBOG4hAgJAA0AgAkUNASACQX9qIQIgARD7DCABQThqIQEMAAsLIAAoAgggACgCABCtOgtJAQF/IwBBEGsiAiQAIAIgAEEMajYCDCABQcDDoQFBDUHNw6EBQQUgAEG5C0HSw6EBQQUgAkEMakG2CxCpEiEAIAJBEGokACAAC0EBBH9BACECA0ACQCACQRxHDQAPCyAAIAJqIgMoAgAhBCADIAEgAmoiBSgCADYCACAFIAQ2AgAgAkEEaiECDAALC0kBAX8jAEEQayICJAAgAiAAQQxqNgIMIAFBwMOhAUENQc3DoQFBBSAAQfUBQdLDoQFBBSACQQxqQbYLEKkSIQAgAkEQaiQAIAALQgEBfyMAQSBrIgMkACADQQA2AhAgA0EBNgIEIANCBDcCCCADIAE2AhwgAyAANgIYIAMgA0EYajYCACADIAIQrS4AC0sAIAAoAgAgACgCBBCAOiAAKAIMIAAoAhAQgTogACgCGCAAKAIcEPs5IAAoAiQgACgCKBCCOiAAKAIwIAAoAjQQ+zkgAEE8ahCsLgs5ACAAKAIUQQlsIAAoAghBFGxqIAAoAixBA3RqIAAoAjggACgCIGpBAnRqIAAoAkRBACAAKAI8G2oLQwEBfyMAQRBrIgEkACABQQhqIAAgACgCAEEBEOwPAkAgASgCCCIAQYGAgIB4Rg0AIAAgASgCDBD4OQALIAFBEGokAAs/AQJ/IAAgASgCACABIAEtAAsiAkH+AUYiAxs2AgAgACABKAIEIAJBwABqQf8BcSIBQQwgAUEMSRsgAxs2AgQLQwEBfyMAQRBrIgEkACABQQhqIAAgACgCAEEBEJcPAkAgASgCCCIAQYGAgIB4Rg0AIAAgASgCDBD4OQALIAFBEGokAAs+AQJ/AkAgACgCACIBDQBBAA8LQQEhAgJAIAFBM0kNACAAKAIEIAFBA3RBeGpPDQBBACECIABBADYCAAsgAgtBAQF/AkAgAUUNAANAIABBBGoiAigCACAAQQhqKAIAEIkkIAAoAgAgAigCABCXOiAAQQxqIQAgAUF/aiIBDQALCwtAAQJ/QQAhAgJAIAEoAhAiA0UNACADQQN0IAEoAgxqQXxqKAIAIQILIABBCGogAhDOFyAAQQA2AgAgACABNgIUC0ABAX8jAEEQayICJAAgAiAAQQJqNgIMIAFByfyDASAAQYYBIABBAWpBhgEgAkEMakETENwPIQAgAkEQaiQAIAALSwECfwJAAkACQCAAKAIAIgFBgICAgHhzIgJBASACQQNJGw4CAgEACyAAKAIEIAAoAggQjToMAQsgASAAKAIEEPY5CyAAQSxqEKw1C0EBAX8CQCAAKAIIIgQgACADQf8BcWpBwABqLQAAIAJqIgNLDQAgAyAEQZD0gwEQoRsACyAAKAIEIANBAnRqKAIACzkAIAAoAhRBCWwgACgCCEEUbGogACgCLEEDdGogACgCOCAAKAIgakECdGogACgCREEAIAAoAjwbagtLAQJ/AkACQAJAIAAoAgAiAUGAgICAeHMiAkEBIAJBA0kbDgICAQALIAAoAgQgACgCCBCNOgwBCyABIAAoAgQQ9jkLIABBLGoQozULRwECfwJAIAEoAggiAkUNACAAKAIEIAAoAgggASgCBCIDIAIQ3RoNACAAIAMgAhDxLCAAELwIIAAgAC0ADCABLQAMcToADAsLRwECfwJAIAEoAggiAkUNACAAKAIEIAAoAgggASgCBCIDIAIQvhkNACAAIAMgAhDyLCAAEKkIIAAgAC0ADCABLQAMcToADAsLSgEBfwJAAkACQAJAIAAoAgBBgIC8f2oiAUECIAFBCEkbDggBAQEBAgEDAAELIABBBGoQkDcLDwsgAEEEahCOJA8LIABBBGoQqjULPAAgBCAAQgKGIgBCAoQgASACIAMQxBg3AwAgBSAAIAZBf3OsfCABIAIgAxDEGDcDACAAIAEgAiADEMQYC0ABBH9BACECAkADQCACQRBGDQEgACACaiIDKAIAIQQgAyABIAJqIgUoAgA2AgAgBSAENgIAIAJBBGohAgwACwsLQgECfwJAIAAoAggiAUUNACAAKAIEQQxqIQADQCAAKAIAIgIQqgEgAkHAAEEIEO4cIABBEGohACABQX9qIgENAAsLC0YBAX8CQAJAIAEoAgBBFEYNAEHgAEEIEM0zIgIgAUHgABDfChpBACEBDAELIAEoAgQhAkEBIQELIAAgAjYCBCAAIAE2AgALQgECfwJAAkAgACgChAEiAUGBAU8NACAAQYQBaiECDAELIABBBGohAiAAKAIEIQELAkAgAUUNACACIAFBf2o2AgALC0YBAX8CQAJAIAEoAgBBMkYNAEHAAEEIEM0zIgIgAUHAABDfChpBACEBDAELIAEoAgQhAkEBIQELIAAgAjYCBCAAIAE2AgALPQEBfyABQQZ0IQECQANAIAFFDQECQCAAKAIAIgJBB0YNACACDQILIAFBQGohASAAQcAAaiEADAALCyABRQtBAQJ/QQAhAgJAIAAoAgQgACgCACIDRg0AIAMtAAAgAUH/AXFHDQAgABCEERpBASECIAAgACgCEEEBajYCEAsgAgtCACAAQQhqEPQ4AkAgAC0ANEEDRg0AIABBIGoQ5S0LIAAoAjgQ3TgCQCAAKAI8IgBFDQAgABCjNyAAQRRBBBDuHAsLSAEBfwJAAkACQAJAA0ACQCAAKAIAIgJBI0YNACACQWlqDgUEBQUFAwILIAAoAgQhAAwACwsgAkESRw0CC0EAIQELIAEPC0EBC0IAIAAQgi0gACgCACAAQQRqKAIAELE6IABBDGoQnTcgAEEYahDUNSAAQTxqEMwuIABBwABqEOg3IABByABBBBDuHAtEAQF/IAFBwAFqIgEQpSMCQAJAIAFBPRDrJw0AQQghAQwBC0EDQQEgAUE9EOsnGyECQRQhAQsgACACOgAEIAAgATYCAAs1AQF/AkAgAUUNACABIAFBAWqtQgx+p0EHakF4cSICakEJaiIBRQ0AIAAgAmsgAUEIEO4cCwtCAQJ/AkAgACgCCCIBRQ0AIAAoAgRBDGohAANAIAAoAgAiAhCiASACQcAAQQgQ7hwgAEEQaiEAIAFBf2oiAQ0ACwsLbAEBfwJAIAANAEECDwtBASEBAkACQAJAIAAtAAAiAEG6f2oOJwICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAgALIABBfmoOAwEAAQALIABBkn9qQf8BcUEsSSEBCyABC0IBAn8CQCAAKAIIIgFFDQAgACgCBEEMaiEAA0AgACgCACICEKgBIAJBwABBCBDuHCAAQRBqIQAgAUF/aiIBDQALCwtAAQF/IABCADcCDAJAIAAoAggiAkUNACAAKAIEIQAgAkEwbCECA0AgACABEMcEIABBMGohACACQVBqIgINAAsLC0ABAX8CQCAAKAIIIgJFDQAgACgCBCEAIAJBMGwhAgNAIAFBADoAfSAAIAEQ8QMgAEEwaiEAIAJBUGoiAg0ACwsLRwEBfyAAKAIAIgEQuAEgAUHAAEEIEO4cIAAoAgQiABDXKQJAIAAoAgAiAUUNACAAKAIEIAFBAnRBBBDuHAsgAEEUQQQQ7hwLQgECfwJAIAAoAggiAUUNACAAKAIEQQxqIQADQCAAKAIAIgIQqwEgAkHAAEEIEO4cIABBEGohACABQX9qIgENAAsLC0wBAn8gAC0AnAEhAiAAQQE6AJwBIAEoAgAiAyAAEIoTAkAgACgCAEUNACAAIAMQgwsLIABBADoAnAEgACABKAIEENMBIAAgAjoAnAELRwEBfyAAKAIAIgEQtwEgAUHAAEEIEO4cIAAoAgQiABDeKQJAIAAoAgAiAUUNACAAKAIEIAFBAnRBBBDuHAsgAEEUQQQQ7hwLQgECfwJAIAAoAggiAUUNACAAKAIEQQxqIQADQCAAKAIAIgIQrwEgAkHAAEEIEO4cIABBEGohACABQX9qIgENAAsLC0cBAX8gACgCACIBELMBIAFBwABBCBDuHCAAKAIEIgAQ5ikCQCAAKAIAIgFFDQAgACgCBCABQQJ0QQQQ7hwLIABBFEEEEO4cCz4BAX8Q7DQaIAEoAghBBHQhAiABKAIEIQECQANAIAJFDQEgAUEMaiAAEMQ9IAJBcGohAiABQRBqIQEMAAsLC0EBAX8CQCAAKAIUIgMgACgCDEcNACAAQQxqEMsmCyAAIANBAWo2AhQgACgCECADQQN0aiIAIAI6AAQgACABNgIAC0MBA38gASgCACIDQQRqIAMvATJBAWoiBCABKAIIIgUgAhC2IyADIAQ7ATIgACAFNgIIIAAgAzYCACAAIAEoAgQ2AgQLSAEBfwJAIABBgAJqIgIgARD7Iw0AIAIgARCoHiAAIAAoAqACQQFqNgKgAiAAIAAvAaQCIAFB/wFxQdyphAFqLQAAajsBpAILC0ABAX8jAEEQayIDJAAgA0EIaiAAIAEgAhDsDwJAIAMoAggiAkGBgICAeEYNACACIAMoAgwQ+DkACyADQRBqJAALRwEBfyAAKAK8ASIBIAEoAgAiAUF/ajYCAAJAIAFBAUcNACAAKAK8ARCWIwsgABD0MCAAKAJsIAAoAnAQhzogAEHAAWoQ+y8LPwEBfyMAQRBrIgIkACAAKAIAIQAgAkEANgIMIAIgASACQQxqEIcPIAAgAigCACACKAIEEKARIAJBEGokAEEAC0UCAX8BfgJAQQAQgA8iAigCAEUNAEH8gYIBEOkiAAsgAkF/NgIAIAJBBGogACABQQEQ6hYhAyACIAIoAgBBAWo2AgAgAwtBAQF/IwBBEGsiAiQAIAJBCGogAEHEs4QBEKkuIAIoAgwhACACKAIIIAEQsxsgACAAKAIAQQFqNgIAIAJBEGokAAtDAQF/IAAoAgwiASABKAIAIgFBf2o2AgACQCABQQFHDQAgAEEMahD8IwsgACgCBCIBIAAoAggQ6isgACgCACABEP45Cz4BAX9BACEGAkAgBCADTw0AIAEtAAAgAiAEai0AAEcNACAAIAQ2AgRBASEGIAAgBEEBajYCCAsgACAGNgIACz4BAX8jAEEQayIDJAAgA0EMaiACQQhqKAIANgIAIANBBjYCACADIAIpAgA3AgQgACABIAMQoA4gA0EQaiQACz4BAX8jAEEQayIDJAAgA0EMaiACQQhqKAIANgIAIANBAjYCACADIAIpAgA3AgQgACABIAMQoA4gA0EQaiQAC0EBAX9BGBCRMiICQRBqIAFBEGopAgA3AgAgAkEIaiABQQhqKQIANwIAIAIgASkCADcCACAAIAI2AgQgAEEANgIAC0ABAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUHYjJkBQRAgAEEMakGRAiACQQxqQagBEJUQIQAgAkEQaiQAIAALPwEBfyMAQRBrIgIkACACIAAoAgAiAEEMajYCDCABQdiTmQFBByAAQQkgAkEMakGTAhCVECEAIAJBEGokACAACzsBAX8gACgCACgCACICKQMAIAAoAgQoAgAgAUEEdGtBcGoiACkDAIUgAkEIaikDACAAQQhqKQMAhYRQC0IBAX8CQCAAKAIEIgIoAgBBAkYNACACKAIEIAJBCGooAgAQ9jkLIAIgASkCADcCACACQQhqIAFBCGopAgA3AgAgAAs+ACACIAIoAgAgAKdqQd3L3Z55bCAAQiCIp2pB3cvdnnlsIAGnakHdy92eeWwgAUIgiKdqQd3L3Z55bDYCAAs7AEHQvKABIABBCXZB0NehAWogAEH/xwxLGy0AAEEFdCAAQQN2QT9xakGA6aEBai0AACAAQQdxdkEBcQtFAgF/AX5BkMSjAUGQxKMBEOQzGgJAQQApA5DEowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QcDEowFBwMSjARDkMxoCQEEAKQPAxKMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkHYxKMBQdjEowEQ5DMaAkBBACkD2MSjASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5B8MSjAUHwxKMBEOQzGgJAQQApA/DEowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QYjFowFBiMWjARDkMxoCQEEAKQOIxaMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkGgxaMBQaDFowEQ5DMaAkBBACkDoMWjASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5BuMWjAUG4xaMBEOQzGgJAQQApA7jFowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QdDFowFB0MWjARDkMxoCQEEAKQPQxaMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkHoxaMBQejFowEQ5DMaAkBBACkD6MWjASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5BgMajAUGAxqMBEOQzGgJAQQApA4DGowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QZjGowFBmMajARDkMxoCQEEAKQOYxqMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkGwxqMBQbDGowEQ5DMaAkBBACkDsMajASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5ByMajAUHIxqMBEOQzGgJAQQApA8jGowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QeDGowFB4MajARDkMxoCQEEAKQPgxqMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkH4xqMBQfjGowEQ5DMaAkBBACkD+MajASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5BkMejAUGQx6MBEOQzGgJAQQApA5DHowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QajHowFBqMejARDkMxoCQEEAKQOox6MBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkHAx6MBQcDHowEQ5DMaAkBBACkDwMejASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5B2MejAUHYx6MBEOQzGgJAQQApA9jHowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QfDHowFB8MejARDkMxoCQEEAKQPwx6MBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkGIyKMBQYjIowEQ5DMaAkBBACkDiMijASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5BoMijAUGgyKMBEOQzGgJAQQApA6DIowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QbjIowFBuMijARDkMxoCQEEAKQO4yKMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkHQyKMBQdDIowEQ5DMaAkBBACkD0MijASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5B6MijAUHoyKMBEOQzGgJAQQApA+jIowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QYDJowFBgMmjARDkMxoCQEEAKQOAyaMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkGYyaMBQZjJowEQ5DMaAkBBACkDmMmjASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5BsMmjAUGwyaMBEOQzGgJAQQApA7DJowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QcjJowFByMmjARDkMxoCQEEAKQPIyaMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkHgyaMBQeDJowEQ5DMaAkBBACkD4MmjASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5B+MmjAUH4yaMBEOQzGgJAQQApA/jJowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QZDKowFBkMqjARDkMxoCQEEAKQOQyqMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkGoyqMBQajKowEQ5DMaAkBBACkDqMqjASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5BwMqjAUHAyqMBEOQzGgJAQQApA8DKowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QdjKowFB2MqjARDkMxoCQEEAKQPYyqMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkHwyqMBQfDKowEQ5DMaAkBBACkD8MqjASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5BiMujAUGIy6MBEOQzGgJAQQApA4jLowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QaDLowFBoMujARDkMxoCQEEAKQOgy6MBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkHwzaMBQfDNowEQ5DMaAkBBACkD8M2jASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5B0MujAUHQy6MBEOQzGgJAQQApA9DLowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QejLowFB6MujARDkMxoCQEEAKQPoy6MBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkGAzKMBQYDMowEQ5DMaAkBBACkDgMyjASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5BmMyjAUGYzKMBEOQzGgJAQQApA5jMowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QbDMowFBsMyjARDkMxoCQEEAKQOwzKMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkHIzKMBQcjMowEQ5DMaAkBBACkDyMyjASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5B4MyjAUHgzKMBEOQzGgJAQQApA+DMowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QfjMowFB+MyjARDkMxoCQEEAKQP4zKMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkGQzaMBQZDNowEQ5DMaAkBBACkDkM2jASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5BwM2jAUHAzaMBEOQzGgJAQQApA8DNowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QdjNowFB2M2jARDkMxoCQEEAKQPYzaMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkGIzqMBQYjOowEQ5DMaAkBBACkDiM6jASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtAAQJ/IAAoAswCIQFBACECAkAgABCwFiIARQ0AIAAoAgBBAkcNACABIAAtAAggAEEJai0AABC2DkEBcyECCyACC0UBAX8CQAJAIAAoAoQBIgFBgAFLDQAgAEEBaiEADAELIAAoAgQhASAAKAIIIQALAkAgAQ0AQQBBAEHstZoBEKEbAAsgAAtAAQJ/IAAoAswCIQFBACECAkAgABCxFiIARQ0AIAAoAgBBAkcNACABIAAtAAggAEEJai0AABC2DkEBcyECCyACCzwAAkADQCABRQ0BAkACQCAAKAIAQQdHDQAgAEEQahDJBQwBCyAAEJYgCyABQX9qIQEgAEEoaiEADAALCws7AEHQvKABIABBCXZB6NqhAWogAEH/gzhLGy0AAEEFdCAAQQN2QT9xakGA6aEBai0AACAAQQdxdkEBcQtCACAAEIItIAAoAgAgAEEEaigCABCxOiAAQQxqEJ03IABBGGoQ1DUgACgCPBDcLyAAQcAAahC/NyAAQcgAQQQQ7hwLOQECfyACQQN0IQICQANAIAIiA0UNASADQXhqIQIgASAAELcSIQQgAUEIaiEBIARFDQALCyADQQBHCz8AAkACQCAAKAIAIgAoAgBBA0YNACAAENUrDAELIABBEGoQiQUgAEEEahCoNyAAQSBqEN41CyAAQShBCBDuHAs+ACAAKAIAIgAQ1DcgAEEMahDVNyAAQTBqENA3IABBNGoQzC4gAEE4ahDeNSAAQRhqENY3IABBwABBBBDuHAs/AAJAAkAgACgCACIAKAIAQQNGDQAgABCULQwBCyAAQRBqEIE5IABBBGoQ5DcgAEEgahDpNQsgAEEoQQgQ7hwLPwACQAJAIAAoAgAiACgCAEEDRg0AIAAQli0MAQsgAEEQahDJBSAAQQRqEKg3IABBIGoQ/DcLIABBKEEIEO4cCz8AIAApAwggACkDGBC5OwJAIAAtADRBA0YNACAAQSBqEJwsCyAAQThqEPw3AkAgACgCPEUNACAAQTxqEPM1CwtFAQF/AkACQCAAKAKEASIBQYABSw0AIABBAWohAAwBCyAAKAIEIQEgACgCCCEACwJAIAENAEEAQQBB7LWaARChGwALIAALSgECf0EBIQECQCAAEO0OIgJFDQACQAJAIAItAABBfWoOBAIBAQABCyAAQQI6AOECIAAgACkD2AI3A9ACQQEPCyAAEMEPIQELIAELSwECfyAAEJ4PIAAoAkQiASAAKAJIEKowIAAoAkAgARDdMwJAIAAoAiAiAUGAgICAeEYNACAAKAIkIgIgACgCKBClMCABIAIQ3jMLCzkBAn8gAkEDdCECAkADQCACIgNFDQEgA0F4aiECIAEgABC3EiEEIAFBCGohASAERQ0ACwsgA0EARwtHAAJAIAEgAkGXkqEBQQUQwjFFDQBByAAPCwJAIAEgAkGOhqEBQQcQwjFFDQBB9QAPC0H0AEGcfyABIAJBlYahAUEGEMIxGwtHAAJAIAEgAkGqkqEBQQYQwjFFDQBB4AAPCwJAIAEgAkHiq6EBQQgQwjFFDQBBigEPC0GLf0GcfyABIAJB6IahAUEHEMIxGwtFAgF/AX5B2OGjAUHY4aMBEP4zGgJAQQApA9jhowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QbjoowFBuOijARD+MxoCQEEAKQO46KMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkGI6KMBQYjoowEQ/jMaAkBBACkDiOijASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5BoOijAUGg6KMBEP4zGgJAQQApA6DoowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QaDZowFBoNmjARD+MxoCQEEAKQOg2aMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkG42aMBQbjZowEQ/jMaAkBBACkDuNmjASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5B0NmjAUHQ2aMBEP4zGgJAQQApA9DZowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QejZowFB6NmjARD+MxoCQEEAKQPo2aMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkGA2qMBQYDaowEQ/jMaAkBBACkDgNqjASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5BmNqjAUGY2qMBEP4zGgJAQQApA5jaowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QbDaowFBsNqjARD+MxoCQEEAKQOw2qMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkHI2qMBQcjaowEQ/jMaAkBBACkDyNqjASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5B4NqjAUHg2qMBEP4zGgJAQQApA+DaowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QfjaowFB+NqjARD+MxoCQEEAKQP42qMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkGQ26MBQZDbowEQ/jMaAkBBACkDkNujASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5BqNujAUGo26MBEP4zGgJAQQApA6jbowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QcDbowFBwNujARD+MxoCQEEAKQPA26MBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkHY26MBQdjbowEQ/jMaAkBBACkD2NujASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5B8NujAUHw26MBEP4zGgJAQQApA/DbowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QYjcowFBiNyjARD+MxoCQEEAKQOI3KMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkGg3KMBQaDcowEQ/jMaAkBBACkDoNyjASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5BuNyjAUG43KMBEP4zGgJAQQApA7jcowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QdDcowFB0NyjARD+MxoCQEEAKQPQ3KMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkHo3KMBQejcowEQ/jMaAkBBACkD6NyjASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5BgN2jAUGA3aMBEP4zGgJAQQApA4DdowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QZjdowFBmN2jARD+MxoCQEEAKQOY3aMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkGw3aMBQbDdowEQ/jMaAkBBACkDsN2jASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5ByN2jAUHI3aMBEP4zGgJAQQApA8jdowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QeDdowFB4N2jARD+MxoCQEEAKQPg3aMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkH43aMBQfjdowEQ/jMaAkBBACkD+N2jASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5BkN6jAUGQ3qMBEP4zGgJAQQApA5DeowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QajeowFBqN6jARD+MxoCQEEAKQOo3qMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkHA3qMBQcDeowEQ/jMaAkBBACkDwN6jASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5B2N6jAUHY3qMBEP4zGgJAQQApA9jeowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QfDeowFB8N6jARD+MxoCQEEAKQPw3qMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkGI36MBQYjfowEQ/jMaAkBBACkDiN+jASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5BoN+jAUGg36MBEP4zGgJAQQApA6DfowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QbjfowFBuN+jARD+MxoCQEEAKQO436MBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkHQ36MBQdDfowEQ/jMaAkBBACkD0N+jASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5BiNmjAUGI2aMBEP4zGgJAQQApA4jZowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QejfowFB6N+jARD+MxoCQEEAKQPo36MBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkGA4KMBQYDgowEQ/jMaAkBBACkDgOCjASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5BmOCjAUGY4KMBEP4zGgJAQQApA5jgowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QbDgowFBsOCjARD+MxoCQEEAKQOw4KMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkHI4KMBQcjgowEQ/jMaAkBBACkDyOCjASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5B4OCjAUHg4KMBEP4zGgJAQQApA+DgowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QfjgowFB+OCjARD+MxoCQEEAKQP44KMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkGQ4aMBQZDhowEQ/jMaAkBBACkDkOGjASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5BqOGjAUGo4aMBEP4zGgJAQQApA6jhowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QcDhowFBwOGjARD+MxoCQEEAKQPA4aMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkHw4aMBQfDhowEQ/jMaAkBBACkD8OGjASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5BiOKjAUGI4qMBEP4zGgJAQQApA4jiowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QaDiowFBoOKjARD+MxoCQEEAKQOg4qMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkG44qMBQbjiowEQ/jMaAkBBACkDuOKjASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5B0OKjAUHQ4qMBEP4zGgJAQQApA9DiowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QejiowFB6OKjARD+MxoCQEEAKQPo4qMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkGA46MBQYDjowEQ/jMaAkBBACkDgOOjASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5BmOOjAUGY46MBEP4zGgJAQQApA5jjowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QbDjowFBsOOjARD+MxoCQEEAKQOw46MBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkHI46MBQcjjowEQ/jMaAkBBACkDyOOjASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5B4OOjAUHg46MBEP4zGgJAQQApA+DjowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QfjjowFB+OOjARD+MxoCQEEAKQP446MBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkGQ5KMBQZDkowEQ/jMaAkBBACkDkOSjASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5BqOSjAUGo5KMBEP4zGgJAQQApA6jkowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QcDkowFBwOSjARD+MxoCQEEAKQPA5KMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkHY5KMBQdjkowEQ/jMaAkBBACkD2OSjASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5B8OSjAUHw5KMBEP4zGgJAQQApA/DkowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QYjlowFBiOWjARD+MxoCQEEAKQOI5aMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkGg5aMBQaDlowEQ/jMaAkBBACkDoOWjASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5BuOWjAUG45aMBEP4zGgJAQQApA7jlowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QdDlowFB0OWjARD+MxoCQEEAKQPQ5aMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkHo5aMBQejlowEQ/jMaAkBBACkD6OWjASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5BgOajAUGA5qMBEP4zGgJAQQApA4DmowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QZjmowFBmOajARD+MxoCQEEAKQOY5qMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkGw5qMBQbDmowEQ/jMaAkBBACkDsOajASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5ByOajAUHI5qMBEP4zGgJAQQApA8jmowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QeDmowFB4OajARD+MxoCQEEAKQPg5qMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkH45qMBQfjmowEQ/jMaAkBBACkD+OajASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5BkOejAUGQ56MBEP4zGgJAQQApA5DnowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QajnowFBqOejARD+MxoCQEEAKQOo56MBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UCAX8BfkHA56MBQcDnowEQ/jMaAkBBACkDwOejASIBQgODQgBSDQAgAaciACAAKAIAIgBBAWo2AgAgAEF/Sg0AAAsgAQtFAgF/AX5B2OejAUHY56MBEP4zGgJAQQApA9jnowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QfDnowFB8OejARD+MxoCQEEAKQPw56MBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0UBAX8gASgCACAAEK4TAkAgASgCFCIBRQ0AIAAtADRBAUcNACAALwA5IQIgAEGBAjsAOSAAIAEoAgAQ6i8gACACOwA5CwtBAQF/IwBBEGsiAiQAAkAgAC0AkAENACABKAIQRQ0AIAIgARCmJyAAQYABaiACKQMAIAIoAggQ2gcLIAJBEGokAAtFAgF/AX5B8PijAUHw+KMBEJc0GgJAQQApA/D4owEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELRQIBfwF+QYj5owFBiPmjARCXNBoCQEEAKQOI+aMBIgFCA4NCAFINACABpyIAIAAoAgAiAEEBajYCACAAQX9KDQAACyABC0IAIAAQgi0gACgCACAAQQRqKAIAELE6IABBDGoQnTcgAEEYahDSNSAAKAI8ENwvIABBwABqEJU4IABByABBBBDuHAs+AQF/EOw0GiABKAIIQQJ0IQIgASgCBCEBAkADQCACRQ0BIAEoAgAgABCkBSACQXxqIQIgAUEEaiEBDAALCws+AQF/AkADQCACRQ0BIAAtAAAhAyAAIAEtAAA6AAAgASADOgAAIAJBf2ohAiABQQFqIQEgAEEBaiEADAALCwtCAQF/IAAoAkAiASABKAIAIgFBf2o2AgACQCABQQFHDQAgAEHAAGoQlwcLAkAgACgCHCIBRQ0AIAAoAhggARDNJwsLPwACQAJAAkAgACgCAA4CAQIACyAAQQRqEPQ5DwsgAEEIahC1JiAAQShqEPM2DwsgAEEQahCqOCAAQTBqEKc4C0IAIAAQgi0gACgCACAAQQRqKAIAELE6IABBDGoQnTcgAEEYahDUNSAAKAI8ENwvIABBwABqEKg4IABByABBBBDuHAs8AAJAIAFpQQFHDQBBgICAgHggAWsgAEkNAAJAIABFDQBBAC0AwP+jARogACABEPMyIgFFDQELIAEPCwALPgEBfwJAIAAoAggiAiAAKAIARw0AIAAQuSYLIAAgAkEBajYCCCAAKAIEIAJBA3RqIgBBADYCBCAAIAE2AgALPgEBfyAAKAIAIQACQCABKAIcIgJBEHENAAJAIAJBIHENACAAIAEQghMPCyAALQAAIAEQsRUPCyAAIAEQ5xQLPQEBfyMAQRBrIgckACAHQQhqIAEtAAAgAyAEEJMKIAcoAgwhASAAIAcoAgg2AgAgACABNgIEIAdBEGokAAs9ACAAQQRqKAIAIABBCGooAgAgASgCACACQf8BcWpBmJ+AAUGIn4ABIANBAUYiABsQ6jBBACADIAAbNgIACz0BA38CQCABLQAEIgIgAS0ABSIDTw0AIAEgAkEBajoABCABIAJqLQAAIQQLIAAgBDoAASAAIAIgA0k6AAALPwECfwJAAkAgASgCACICIAEoAgQiA0cNAAwBCyABIAJBAWo2AgAgAi0AACEBCyAAIAE6AAEgACACIANHOgAAC0EBAX8gASABKAIIIgRBAWo2AggCQCAEQQBIDQAgACABNgIMIAAgAzYCCCAAIAI2AgQgAEGYy4ABNgIADwsQ5j8AC0ACAX8BfkGIw6MBEMgcGgJAQQApA4jDowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELPAEBfwJAIAAoAgBBAkYNACAAQQhqEPgpIAAoAhgiASABKAIAIgFBf2o2AgAgAUEBRw0AIABBGGoQkBcLC0ABA38CQCABKAIUIgIgASgCDCIDTw0AIAEoAgggAmotAAAhBAsgACAEOgAJIAAgAiADSToACCAAIAEpAgA3AgALRAAgAEHYAGoQjwwgAEGChIgQNgJQIABBAzoATCAAQQI2AjggAEECNgIwIABBADYCKCAAQgA3AwAgAEHUAGpBggQ7AQALPgEBfwJAIAAoAggiAyAAKAIARw0AIAAQyyYLIAAgA0EBajYCCCAAKAIEIANBA3RqIgAgAjYCBCAAIAE2AgALPgEBfwJAIAAoAggiAyAAKAIARw0AIAAQ2yYLIAAgA0EBajYCCCAAKAIEIANBAXRqIgAgAjoAASAAIAE6AAALPgEBfwJAIAAoAggiAyAAKAIARw0AIAAQyyYLIAAgA0EBajYCCCAAKAIEIANBA3RqIgAgAjYCBCAAIAE2AgALPAAgACABIAIQzhwgACAEOgAkIAAgAykCADcCDCAAQRRqIANBCGopAgA3AgAgAEEcaiADQRBqKQIANwIACz4BAX8CQCAAKAIIIgMgACgCAEcNACAAEMsmCyAAIANBAWo2AgggACgCBCADQQN0aiIAIAI2AgQgACABNgIACz4BAX8gACgCACEAAkAgASgCHCICQRBxDQACQCACQSBxDQAgACABEIITDwsgAC0AACABELEVDwsgACABEOcUC0YCAn8BfiAAQQhBCSABvSIEQn9VIgIbQQMgBEL/////////B4NQIgMbNgIEIABBv+qgAUGjh5gBIAIbQbzqoAEgAxs2AgALPAEBfyMAQRBrIgMkACADQQA2AgwgAyACIANBDGoQ9hYgACABIAMoAgAgAygCBBCyMSECIANBEGokACACC0ACAX8BfkH4w6MBEMgcGgJAQQApA/jDowEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELPgEDfyAAKAIEIQECQCAAKAIIIgJFDQAgASEDA0AgAxC4AyADQTBqIQMgAkF/aiICDQALCyAAKAIAIAEQ3jMLPwECfwJAIAAoAggiAUUNACAAKAIEIQADQCAAKAIAIgIQjAMgAkHgAEEIEO4cIABBBGohACABQX9qIgENAAsLCz4BAX8gACAAKAIAQX9qIgE2AgACQCABDQAgAEEIahCODCAAIAAoAgRBf2oiATYCBCABDQAgAEEYQQQQ7hwLCz8AAkACQCAAKAIAIgAoAgBBA0YNACAAEIctDAELIABBEGoQ6DggAEEEahCoNyAAKAIgEN04CyAAQShBCBDuHAs/AAJAAkAgACgCACIAKAIAQQNGDQAgABCLLQwBCyAAQRBqEOw4IABBBGoQqDcgACgCIBDdOAsgAEEoQQgQ7hwLPwACQAJAIAAoAgAiACgCAEEDRg0AIAAQji0MAQsgAEEQahC/BCAAQQRqEKg3IAAoAiAQ3TgLIABBKEEIEO4cCz8AAkACQCAAKAIAIgAoAgBBA0YNACAAEJMtDAELIABBEGoQgQQgAEEEahCoNyAAKAIgEN04CyAAQShBCBDuHAs/AAJAAkAgACgCACIAKAIAQQNGDQAgABDYKwwBCyAAQRBqEPQEIABBBGoQqDcgACgCIBDdOAsgAEEoQQgQ7hwLPwACQAJAIAAoAgAiACgCAEEDRg0AIAAQlS0MAQsgAEEQahCEBCAAQQRqEKg3IAAoAiAQ3TgLIABBKEEIEO4cCz8AAkACQCAAKAIAIgAoAgBBA0YNACAAEJgtDAELIABBEGoQvDkgAEEEahCoNyAAKAIgEN04CyAAQShBCBDuHAs/AAJAAkAgACgCACIAKAIAQQNGDQAgABDdKwwBCyAAQRBqEIMFIABBBGoQqDcgACgCIBDdOAsgAEEoQQgQ7hwLPwECfwJAIAAoAggiAUUNACAAKAIEIQADQCAAKAIAIgIQiQMgAkHgAEEIEO4cIABBBGohACABQX9qIgENAAsLC0oBAn8CQAJAAkAgACgCACIBQYCAgIB4ag4CAgEACyAAKAIEIgIgACgCCBClMCABIAIQ3jMPCyAAKAIEIgAQugMgAEEgQQgQ7hwLCz4BA38gACgCBCEBAkAgACgCCCICRQ0AIAEhAwNAIAMQxwMgA0EwaiEDIAJBf2oiAg0ACwsgACgCACABEN4zCz4BAX8gACgCACEAAkAgASgCHCICQRBxDQACQCACQSBxDQAgACABEIITDwsgAC0AACABELEVDwsgACABEOcUCz4BA38gACgCBCEBAkAgACgCCCICRQ0AIAEhAwNAIAMQxAMgA0EwaiEDIAJBf2oiAg0ACwsgACgCACABEN4zCz8BAn8CQCAAKAIIIgFFDQAgACgCBCEAA0AgACgCACICEI0DIAJB4ABBCBDuHCAAQQRqIQAgAUF/aiIBDQALCwtCAQF/AkAgAC0ANEUNACAALQA6IQIgAEEBOgA6IAAgASgCABDZMgJAIAEoAgwiAUUNACAAIAEQ+BsLIAAgAjoAOgsLQgEBfyAALQA5IQIgAEEAOgA5IAEgABCuEyAAIAI6ADkCQCABKAIwIgFFDQAgAEEBOgA5IAEgABD+ASAAIAI6ADkLC0IBAX8gAC0AJiECIABBADoAJiABKAIAIAAQ5A8gACABKAIEIgEQVCAAIAI6ACYCQCABKAIAQRlHDQAgACABEJACCwtBAQJ/IAEgABDkDyAALQAkIQIgAEECOgAkIAAtACUhAwJAIAEoAjAiAUUNACAAIAEQVAsgACADOgAlIAAgAjoAJAs/AQN/IAAoAgQhAQJAIAAoAggiAkUNACABIQMDQCADEKILIANBwABqIQMgAkF/aiICDQALCyAAKAIAIAEQ3TMLPwACQAJAIAAoAgAiACgCAEEDRg0AIAAQpC0MAQsgAEEQahDrBCAAQQRqEKg3IAAoAiAQ3TgLIABBKEEIEO4cCz8BAn8CQCAAKAIIIgFFDQAgACgCBCEAA0AgACgCACICENsCIAJB4ABBCBDuHCAAQQRqIQAgAUF/aiIBDQALCws+AQN/IAAoAgQhAQJAIAAoAggiAkUNACABIQMDQCADEMUDIANBMGohAyACQX9qIgINAAsLIAAoAgAgARDeMws6AAJAIAEoAgBBCUcNACABKAIIQRFHDQAgASgCEEEHRw0AIAEoAhQtAEVBA0YNACABQQhqIAAQ0gULCzwBAX8CQCAAKAIIIgJFDQAgACgCBCEAIAJBAnQhAgNAIAEgACgCABCsAyAAQQRqIQAgAkF8aiICDQALCws8AQF/AkAgACgCCCICRQ0AIAAoAgQhACACQQJ0IQIDQCABIAAoAgAQ+QEgAEEEaiEAIAJBfGoiAg0ACwsLPAEBfwJAIAAoAggiAkUNACAAKAIEIQAgAkECdCECA0AgASAAKAIAEPkBIABBBGohACACQXxqIgINAAsLCzwBAX8CQCAAKAIIIgJFDQAgACgCBCEAIAJBAnQhAgNAIAEgACgCABCsAyAAQQRqIQAgAkF8aiICDQALCws+AQN/IAAoAgQhAQJAIAAoAggiAkUNACABIQMDQCADEMYDIANBMGohAyACQX9qIgINAAsLIAAoAgAgARDeMws/AQJ/AkAgACgCCCIBRQ0AIAAoAgQhAANAIAAoAgAiAhD8AiACQeAAQQgQ7hwgAEEEaiEAIAFBf2oiAQ0ACwsLPgEDfyAAKAIEIQECQCAAKAIIIgJFDQAgASEDA0AgAxDsByADQQxqIQMgAkF/aiICDQALCyAAKAIAIAEQ3DMLOgEBfyAAKAIIQQR0IQIgACgCBCEAAkADQCACRQ0BIABBDGogARDFPSACQXBqIQIgAEEQaiEADAALCws6AQF/IAAoAghBBHQhAiAAKAIEIQACQANAIAJFDQEgAEEMaiABEMY9IAJBcGohAiAAQRBqIQAMAAsLCz4BAX8CQCAAKAIIIgMgACgCAEcNACAAEMsmCyAAIANBAWo2AgggACgCBCADQQN0aiIAIAI2AgQgACABNgIAC0UBAX8CQAJAAkAgACgCACIAKAIADgIAAQILIAAoAggiAUUNASAAKAIEIAFBARDuHAwBCyAAQQRqENkiCyAAQRRBBBDuHAs/AAJAAkAgACgCACIAKAIAQQNGDQAgABC8LQwBCyAAQRBqEP4EIABBBGoQqDcgACgCIBDdOAsgAEEoQQgQ7hwLQAEBfwJAAkACQCAALQAsQX1qIgJBASACQf8BcUEDSRtB/wFxDgMAAQIACyABKAIUIAAQ6QkaDwsgACABEKQuCws8AQF/IAAtABQhASAAQQE6ABQCQAJAIAENACAAQXhqIgAgACgCAEEBaiIBNgIAIAFFDQEgABCyPwsPCwALOgECfyMAQRBrIgEkACABQQRqIAAQzhMgASgCCCIAIAEoAgwQIiECIAEoAgQgABD2OSABQRBqJAAgAgs8AQF/IwBBEGsiAiQAIAJBCGogACAAKAIAKAIEEQcAIAIoAgggASACKAIMKAIQEQgAIQAgAkEQaiQAIAALOgEBfyMAQRBrIgMkACADQQhqIAEgAkEAEMsqIAMoAgwhAiAAIAMoAgg2AgAgACACNgIEIANBEGokAAs+AQR/QQEhAgJAIABBBGoiAyABKAIUIgQgASgCGCIFEIEDDQAgACgCACABEIgMDQAgAyAEIAUQsDEhAgsgAgtAAQJ/QQEhAgJAIABBBGoiAyABKAIUIAEoAhgQgQMNACAAKAIAIAEQ+TkNACADIAEoAhQgASgCGBCwMSECCyACCz0CAX8BfCABKAIcQQFxIQIgACsDACEDAkAgASgCCEEBRw0AIAEgAyACIAEoAgwQXA8LIAEgAyACQQAQ8AYLOwEBfyAAKAIAIQACQCABKAIcIgJBEHENAAJAIAJBIHENACAAIAEQ+TkPCyAAIAEQ5RQPCyAAIAEQ5hQLNwECfyAAIAIgAWsiAkECdiIDEO4fIAAoAgQgACgCCCIEQQJ0aiABIAIQ3woaIAAgBCADajYCCAszAQF/AkBBfyABIANHIAEgA0kbIgQNACAAIAAgAUECdGogAiACIANBAnRqEMEbIQQLIAQLOgEBfwJAIAAtAAwiAUEDRg0AIAFBAkYNACAAKAIAIgEgASgCACIBQX9qNgIAIAFBAUcNACAAEPkWCwtLAQF/IAAoAugCIAAoAuwCEPY5AkAgACgCACIBQYCAgIB4Rg0AIAEgACgCBBD2OQsCQCAAKAK8AkGAgICAeEYNACAAQbwCahD4MAsLOgEBfwJAIAAtAAwiAUEDRg0AIAFBAkYNACAAKAIAIgEgASgCACIBQX9qNgIAIAFBAUcNACAAEPkWCws9AAJAAkAgASkDAEICUQ0AIAAoAvACQQJGDQEgACABELYNIABBwAFqIAFBiAVqELYNCw8LQcD+gwEQ/TkACzoBAX8jAEEQayICJAAgAiAAQQFqNgIMIAFBwvyDAUEHIABBhgEgAkEMakETEJUQIQAgAkEQaiQAIAALPgEBfwJAIAAoAhQiAiABIAAoArACdCAAKAK0AmoiAUsNACABIAJBvI2DARChGwALIAAoAhAgAUEDdGopAwALSAACQAJAAkACQCAAKAIAQX5qDgYAAwMDAQIDCyAAKAIEIAAoAggQlzoPCyAAKAIEIAAoAggQkDoPCyAAKAIEIAAoAggQkDoLCzsAAkACQCABQQRNDQAgAUF7aiIBQQNNDQEgACgABQ8LQQUgAUHgzYMBEKIbAAtBBCABQbDLgwEQoxsACzgAIAAoAgAoAgAiACkDACAAQQhqKQMAIAEoAgBBACACa0EMbGoiAEF0aigCACAAQXhqKAIAEOQICzgAIAAoAgAoAgAiACkDACAAQQhqKQMAIAEoAgBBACACa0EMbGoiAEF0aigCACAAQXhqKAIAEOMICzoBAX8jAEEQayIEJAAgBEEIaiABIAIgAxCDLyAEKAIMIQMgACAEKAIINgIAIAAgAzYCBCAEQRBqJAALMgBBfyABIAAoAgAgAiAAKAIEIgAgAiAASRsQlSMiASACIABrIAEbIgJBAEcgAkEASBsLQAEBfwJAIAAoAgQgACgCCCABKAIEIAEoAggQoDEiAkUNACAALQAMIAEtAAxGDQAgAUEAOgAMIABBADoADAsgAgs2ACABQQN0IQEDQAJAIAENAA8LIAAoAgAgAEEEaigCACACENc4IAFBeGohASAAQQhqIQAMAAsLNwEBf0EBIQQCQCAAQf7/e0sNACABIAByRQ0AIAJFDQAgAiABQX9qIAMoAhQRCABBAXMhBAsgBAtFAAJAAkACQAJAA0ACQCAAKAIAQX9qDgYFAAUCBAMECyAAKAIEIQAMAAsLIAAoAggQ+xMPCyAAKAIEEPsTDwtBAQ8LQQALPQACQCAALQDMAkEBcQ0AAkAgAC0A1AJBAkcNACAALQDYAkEBcQ0BCyAAIAEgAiADEP4iEOMTDwsgAxDICQs6AQF/IAAoAgghASAAKAIEIQACQANAIAFFDQEgABD0NSAAQTBqELQIIAFBf2ohASAAQThqIQAMAAsLCzUBAn8gAUEobCEBAkADQCABIgJFDQEgAkFYaiEBIAAoAgAhAyAAQShqIQAgA0UNAAsLIAJFCzoBAX8gACgCCCEBIAAoAgQhAAJAA0AgAUUNASAAEMkFIABBDGoQ/DcgAUF/aiEBIABBEGohAAwACwsLNgECfyABQQZ0IQECQANAIAEiAkUNASACQUBqIQEgACgCACEDIABBwABqIQAgA0UNAAsLIAJFCzoBAX8jAEEQayIEJAAgBEEIaiACIAEgAxDeNCAEKAIMIQMgACAEKAIINgIAIAAgAzYCBCAEQRBqJAALNwEBfyMAQRBrIgIkACACIAE2AgwgAiAANgIIIAJBCGoQhBEaIAJBCGoQhBEhASACQRBqJAAgAQs6AQF/IAAoAgghASAAKAIEIQACQANAIAFFDQEgAEEUahD+NyAAEL43IAFBf2ohASAAQRhqIQAMAAsLCz4AIAApAwggACkDGBC5OwJAIAAtADRBA0YNACAAQSBqEJwsCyAAKAI4EN04AkAgACgCPCIARQ0AIAAQvzkLCz0BAX8CQAJAAkAgAC0ALEF9aiIBQQEgAUH/AXFBA0kbQf8BcQ4CAQIACyAAEPs4DwsgABDHHg8LIAAQ+jgLPQEBfwJAAkACQCAALQAsQX1qIgFBASABQf8BcUEDSRtB/wFxDgIBAgALIAAQ+zgPCyAAEMceDwsgABDZKws2AQN/IABB/wFxQQ1GIgIgAUH/AXEiA0ENRnEhBAJAIAINACADQQ1GDQAgACABENUcIQQLIAQLPQACQAJAAkACQCAAKAIADgQBAgMAAQsgAEEEahCeMw8LIABBCGoQ+zcPCyAAQQRqEJ0zDwsgAEEEahC7OQs6AQF/IAAoAgghASAAKAIEIQACQANAIAFFDQEgABCWICAAQTBqEP43IAFBf2ohASAAQThqIQAMAAsLCz0AAkAgAC0AkAJBAXENAAJAIAAtAJgCQQJHDQAgAC0AnAJBAXENAQsgACABIAIgAxD+IhD1GA8LIAMQtwMLRQEBfyAAQYC4AjsBACABIAEoAvQBQQFqIgA2AvQBIAEgASgC7AEiAiABKALwAWo2AugBIAEgAiAAIAEoAvgBa2o2AuQBC0MBAX8gAEEAOwEAIAEgASgC9AFBAWoiADYC9AEgASABKALsASICIAEoAvABajYC6AEgASACIAAgASgC+AFrajYC5AELRAEBfyAAQYACOwEAIAEgASgC9AFBAWoiADYC9AEgASABKALsASICIAEoAvABajYC6AEgASACIAAgASgC+AFrajYC5AELRAEBfyAAQYAOOwEAIAEgASgC9AFBAWoiADYC9AEgASABKALsASICIAEoAvABajYC6AEgASACIAAgASgC+AFrajYC5AELRAEBfyAAQYAMOwEAIAEgASgC9AFBAWoiADYC9AEgASABKALsASICIAEoAvABajYC6AEgASACIAAgASgC+AFrajYC5AELRAEBfyAAQYAwOwEAIAEgASgC9AFBAWoiADYC9AEgASABKALsASICIAEoAvABajYC6AEgASACIAAgASgC+AFrajYC5AELRAEBfyAAQYAIOwEAIAEgASgC9AFBAWoiADYC9AEgASABKALsASICIAEoAvABajYC6AEgASACIAAgASgC+AFrajYC5AELRAEBfyAAQYAKOwEAIAEgASgC9AFBAWoiADYC9AEgASABKALsASICIAEoAvABajYC6AEgASACIAAgASgC+AFrajYC5AELRAEBfyAAQYA0OwEAIAEgASgC9AFBAWoiADYC9AEgASABKALsASICIAEoAvABajYC6AEgASACIAAgASgC+AFrajYC5AELRAEBfyAAQYAEOwEAIAEgASgC9AFBAWoiADYC9AEgASABKALsASICIAEoAvABajYC6AEgASACIAAgASgC+AFrajYC5AELRAEBfyAAQYAGOwEAIAEgASgC9AFB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ACAACzUBAX8jAEEQayICJAAgAiAAKAIANgIMIAFB6IyZAUEHIAJBDGpBPBDpECEAIAJBEGokACAACzUBAX8CQCAAKAIIIgIgACgCAEcNACAAEMImCyAAIAJBAWo2AgggACgCBCACQQJ0aiABNgIACzUBAX8jAEEQayICJAAgAiAAKAIANgIMIAFB6KSgAUEEIAJBDGpBPBDpECEAIAJBEGokACAACzsBAX8gACgCACIBELABIAFBwABBCBDuHCAAKAIEIgAQyCkgACgCACAAQQRqKAIAEN8zIABBFEEEEO4cCzUBAX8CQCAAKAIIIgIgACgCAEcNACAAEMImCyAAIAJBAWo2AgggACgCBCACQQJ0aiABNgIACzYAAkAgAC0AFEECRw0AIAAoAgAiAEEYahCcLCAAKQMAENIfIABBMEEIEO4cDwsgACkDABDSHws3AQF/AkBBCEHAABC7OCIBDQAACyABQSA2AgAgASAAKQIANwIEIAFBDGogAEEIaikCADcCACABCzcBAX8CQEEIQcAAELs4IgENAAALIAFBETYCACABIAApAgA3AgQgAUEMaiAAQQhqKQIANwIAIAELNwEBfwJAQQhBwAAQuzgiAQ0AAAsgAUEqNgIAIAEgACkCADcCBCABQQxqIABBCGooAgA2AgAgAQs3AQF/AkBBCEHAABC7OCIBDQAACyABQSw2AgAgASAAKQIANwIEIAFBDGogAEEIaikCADcCACABCzcBAX8CQEEIQcAAELs4IgENAAALIAFBMDYCACABIAApAgA3AgQgAUEMaiAAQQhqKQIANwIAIAELNwEBfwJAQQhBwAAQuzgiAQ0AAAsgAUEtNgIAIAEgACkCADcCBCABQQxqIABBCGopAgA3AgAgAQs3AQF/AkBBCEHAABC7OCIBDQAACyABQSE2AgAgASAAKQIANwIEIAFBDGogAEEIaigCADYCACABCzcBAX8CQEEIQcAAELs4IgENAAALIAFBIzYCACABIAApAgA3AgQgAUEMaiAAQQhqKAIANgIAIAELMwEBfwJAAkAgAEEuRg0AIABB2ABGDQAgAEH4AEYNAEEAIQEgAEHfAEcNAQtBASEBCyABCz0AAkAgASgCAEGAgICAeEcNAEHEzZoBQSJB3M6aARCqHgALIAAgASkCADcCACAAQQhqIAFBCGopAgA3AgALNQEC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AAsLCy8AAkAgAUUNAANAAkAgACgCAEEHRg0AIAAQigkLIABBKGohACABQX9qIgENAAsLCzgBAX8gASgCBCEEAkACQCABKAIADQAgASgCCCEDDAELIAQQxBcgAiEECyAAIAM2AgQgACAENgIACzUAAkAgASgCOEUNAAJAIAEtADwNACABIAIQqAcMAQsgASACNgIEIAFBATYCAAsgAEEEOgAACzQBAX9BACECAkAgACgCACABKAIARw0AIAAoAgQgASgCBEcNACAAKAIIIAEoAghGIQILIAILNQACQCABKAI4RQ0AAkAgAS0APA0AIAEgAhCpBwwBCyABIAI2AgQgAUEBNgIACyAAQQQ6AAALLgEBfyMAQRBrIgMkACADQQhqIAIgACABEJIWIAMoAgghASADQRBqJAAgAUEBRgswAAJAIAAoAgAiACgCAEEDRg0AIAEgABCYMQ8LIABBEGogARDEPSABIABBBGoQ/CcLMAACQCAAKAIAIgAoAgBBA0YNACAAIAEQ3zAPCyAAQRBqIAEQxT0gAEEEaiABEOgpCy4BAn8gACABKAIIIgJBf2oiAyACIAMgAkkbIAMgAiADIAJLGxDqKSABIAAQxj0LOAEBfyAAIAEgASgCAEECdCICQdTBowFqKAIAaigCADYCBCAAIAEgAkHAwaMBaigCAGooAgA2AgALMQADQAJAIAAtACVBAkcNACABIAAQigEPCyABKAIUIABBCGoQ6QkaIAAoAiAhAAwACws8AAJAAkACQAJAIAAtAAAOBwMDAwECAAMACyAAQQRqEKMHDwsgACgCBCAAKAIIEPY5DwsgAEEEahCtOAsLLgAgAUEMbCEBAkADQCABRQ0BIAAoAgAgAhCePyABQXRqIQEgAEEMaiEADAALCwswAAJAIAMgAU8NACABIANB/KehARCiGwALIAAgAyABazYCBCAAIAIgAUEobGo2AgALNwAgAEEgahD+BAJAAkACQCAAKAIADgIBAgALIABBBGoQ/gQPCyAAKQMIENIfDwsgACkDCBDSHwswAQF/IAAgAhCfMCAAKAIEIAAoAggiA0E4bGogASACQThsEN8KGiAAIAMgAmo2AggLLgAgAUEMbCEBAkADQCABRQ0BIAAoAgAgAhCjPyABQXRqIQEgAEEMaiEADAALCwsuACABQQxsIQECQANAIAFFDQEgACgCACACEJ0/IAFBdGohASAAQQxqIQAMAAsLCy4BAX8jAEEQayIDJAAgA0EIaiACIAAgARCSFiADKAIIIQEgA0EQaiQAIAFBAUYLLQACQCADIAFPDQAgASADIAQQohsACyAAIAMgAWs2AgQgACACIAFBKGxqNgIACzAAAkAgAyABTw0AIAEgA0GksqEBEKIbAAsgACADIAFrNgIEIAAgAiABQRxsajYCAAsuAQF/IwBBEGsiAyQAIANBCGogACABIAIQ9gYgA0EIahCQMiECIANBEGokACACCzAAAkACQCADaUEBRw0AQYCAgIB4IANrIAFJDQAgACABIAMgAhCiBSIDDQELAAsgAws2AAJAIAAtABRBAkYNACAAKAIAEL8NIAAoAhAQ/zYgACgCDBAuRQ0AIAAoAgQgACgCCBD8LQsLMwACQAJAIAFB/v///wdLDQAgACABNgIEQQAhAQwBCyAAIAGtNwMIQQEhAQsgACABNgIACzkBAX9BASEBAkAgAC0ABA0AIAAoAgAiASgCFEHx0aEBQQEgASgCGCgCDBELACEBCyAAIAE6AAQgAQstAAJAA0AgAUUNASAAKAIAIABBBGooAgAQ+zkgAUF/aiEBIABBDGohAAwACwsLLQACQANAIAFFDQEgACgCACAAQQRqKAIAEPY5IAFBf2ohASAAQQxqIQAMAAsLCy0AAkADQCABRQ0BIAAoAgAgAEEEaigCABD2OSABQX9qIQEgAEEMaiEADAALCwsxAQF/QQEhAgJAAkAgARAPQQFGDQBBACECDAELIAEQJiEBCyAAIAE2AgQgACACNgIACy0AAkADQCABRQ0BIAAoAgAgAEEEaigCABD2OSABQX9qIQEgAEEQaiEADAALCwstAAJAA0AgAUUNASAAKAIAIABBBGooAgAQ9jkgAUF/aiEBIABBFGohAAwACwsLLQACQAJAIAJBAXENACABuBASIQIMAQsgAa0QEyECCyAAIAI2AgQgAEEANgIACy8BAX8CQCABKAIAIgRBAXFFDQAgACABIAQgBCACIAMQqhsPCyAAIAQgAiADELkpCzkBAX9BASEBAkAgAC0ABA0AIAAoAgAiASgCFEHQ0aEBQQEgASgCGCgCDBELACEBCyAAIAE6AAQgAQsqAQF+AkAgAVANACAAIAGAIgIgACACIAF+fUIAUq18DwtB6I6CARDyKwALLwEBfwJAIAJFDQAgACABIAJuIgM2AgAgACABIAMgAmxrNgIEDwtB7LGCARDyKwALMgEBfwJAIAAoAggiAiAAKAIARw0AIAAQxCYLIAAgAkEBajYCCCAAKAIEIAJqIAE6AAALLQACQANAIAFFDQEgACgCACAAQQRqKAIAEPY5IAFBf2ohASAAQSRqIQAMAAsLCzEBAX8CQCAALQAMQQJGDQAgACgCACIBIAEoAgAiAUF/ajYCACABQQFHDQAgABD5FgsLLQACQCABRQ0AA0AgACgCACAAQQRqKAIAEJc6IABBFGohACABQX9qIgENAAsLCy0AAkAgAUUNAANAIAAoAgAgAEEEaigCABCXOiAAQRBqIQAgAUF/aiIBDQALCwstAAJAIAFFDQADQCAAKAIAIABBBGooAgAQlzogAEEMaiEAIAFBf2oiAQ0ACwsLNAEBfwJAQQgQpzoiAw0AAAsgAyACNgIEIAMgATYCACAAQQE2AgggACADNgIEIABBATYCAAstAAJAA0AgAUUNASAAKAIAIABBBGooAgAQ9jkgAUF/aiEBIABBEGohAAwACwsLLgEBfyMAQRBrIgEkACABQQE6AAQgASAANgIIIAFBBGoQ6SwhACABQRBqJAAgAAs2AQF/QQAhAwJAIAAoAvgEKALUAkEBRg0AIAAgASACEL8rIgAoAgAgACgCBEEAEO0YIQMLIAMLMgEBfyAAIAHAQQJ0IgFBrKSjAWooAgAiAjYCACAAIAIgAUH0o6MBaigCAEEBdGo2AgQLLQEBfyMAQRBrIgIkACACQQo2AgwgACABIAJBDGpBARCgIyEBIAJBEGokACABCysBAX8jAEEwayICJAAgAkEIaiABQSgQ3woaIAAgAkEIahC5EyACQTBqJAALOgEBf0HAAEEIEM0zIgFBADYCCCABQjE3AwAgAEIANwIQIAAgATYCDCAAQgA3AhggAEGAgICAeDYCAAsyACAAELc3IABBDGoQnTcgAEEYahDSNSAAKAI8EIwxIABBwABqELQ3IABByABBBBDuHAsuAQF/IwBBEGsiAiQAIAIgATYCDCACIAA2AgggAkEIahCEESEBIAJBEGokACABCywBAX8jAEEQayICJAAgAkEIaiAAIAEQix8gAigCCCEBIAJBEGokACABQQFGCy8AAkACQCACIAFHDQBBACEBDAEL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CyEAQX8gACACRyAAIAJJGyICQX8gASADRyABIANJGyACGwstACAAEIgFAkAgACgCAEGIgMQARg0AIAAQxiMPCyAAQQRqELM1IABBCGoQszULMwAgASgCFCAAKAIALQAAQQJ0IgBB+LGXAWooAgAgAEHksZcBaigCACABKAIYKAIMEQsACysBAX8jAEEQayICJAAgAiABNgIMIAIgADYCCCACQQhqQfsBQQFBABDeGgALMwAgASgCFCAAKAIALQAAQQJ0IgBBvKWjAWooAgAgAEGYpaMBaigCACABKAIYKAIMEQsACygBAX8gACABckUhAgJAIABFDQAgAUUNACAAKAIAIAEoAgBGIQILIAILKAAgASACIAMgBBCyMSEDIAAgAiAEazYCBCAAIAEgBGpBACADGzYCAAstAQF/IAAgATYCECAAIAAoAggiAiAAKAIMajYCBCAAIAIgASAAKAIUa2o2AgALLgACQCABKAIADQAgAUF/NgIAIAAgATYCBCAAIAFBBGo2AgAPC0G0zZoBEOkiAAsnAQF/IAAgAXJFIQICQCAARQ0AIAFFDQAgACABEKQ+IQILIAJBAXMLLAAgAEEIahDHHiAAKAIgENwvIABBOGoQqzcgAEEkahCfNyAAQcgAQQgQ7hwLLQACQCAAKAIAIgBFDQAgABCALSAAKAIAIABBBGooAgAQsDogAEEUQQQQ7hwLCzMAIAEoAhQgACgCAC0AAEECdCIAQaSqowFqKAIAIABBmKqjAWooAgAgASgCGCgCDBELAAszACABKAIUIAAoAgAtAABBAnQiAEHkqqMBaigCACAAQbCqowFqKAIAIAEoAhgoAgwRCwALMwAgASgCFCAAKAIALQAAQQJ0IgBBpKujAWooAgAgAEGYq6MBaigCACABKAIYKAIMEQsACzMAIAEoAhQgACgCAC0AAEECdCIAQaCzowFqKAIAIABBlLOjAWooAgAgASgCGCgCDBELAAszACABKAIUIAAoAgAtAABBAnQiAEHEwqMBaigCACAAQbDCowFqKAIAIAEoAhgoAgwRCwALLQACQCAAKAIAIgBFDQAgABCALSAAKAIAIABBBGooAgAQsDogAEEUQQQQ7hwLCzUCAX8BfiAAIAEoAgQiAiABKAIIEPMWIQMCQCABKAIAIgFBgICAgHhGDQAgASACEIY2CyADCy8BAX8gAEEEaiIBKAIAIABBCGooAgAQuicgACgCACABKAIAEOMzIABBHEEEEO4cCy8BAX8gAEEEaiIBKAIAIABBCGooAgAQuicgACgCACABKAIAEOMzIABBGEEEEO4cCzUBAX9B+wAhAwJAIAEgAkHLhaEBQQYQwjENAEH6AEGcfyABIAJB9KuhAUEDEMIxGyEDCyADCzUBAX9BhQEhAwJAIAEgAkGekqEBQQIQwjENAEGEf0GcfyABIAJBiIahAUEGEMIxGyEDCyADCzUBAX9B6AAhAwJAIAEgAkHE/KABQQMQwjENAEHpAEGcfyABIAJBp4ahAUEEEMIxGyEDCyADCzUBAX9B6gAhAwJAIAEgAkGlkqEBQQUQwjENAEHrAEGcfyABIAJBk5KhAUEEEMIxGyEDCyADCzMAIAEoAhQgACgCAC0AAEECdCIAQdS2owFqKAIAIABByLajAWooAgAgASgCGCgCDBELAAstAAJAIAAoAgAiAEUNACAAENIpIAAoAgAgAEEEaigCABDfMyAAQRRBBBDuHAsLMwAgASgCFCAAKAIALQAAQQJ0IgBBlLWjAWooAgAgAEGItaMBaigCACABKAIYKAIMEQsACzMAIAEoAhQgACgCAC0AAEECdCIAQdS1owFqKAIAIABBoLWjAWooAgAgASgCGCgCDBELAAstAAJAIAAoAgAiAEUNACAAEN0RIAAoAgAgAEEEaigCABDeMyAAQRRBBBDuHAsLMwAgASgCFCAAKAIALQAAQQJ0IgBBlLajAWooAgAgAEGItqMBaigCACABKAIYKAIMEQsACy0AAkAgACgCACIARQ0AIAAQlR4gACgCACAAQQRqKAIAENwzIABBFEEEEO4cCwsuAQF/IAEoAgAhAiAAIAEoAgwiARBUAkAgAg0AIAEoAgBBIEcNACAAIAEQkAILCzMAIAEoAhQgACgCAC0AAEECdCIAQZy4owFqKAIAIABBkLijAWooAgAgASgCGCgCDBELAAstAAJAIAAoAgAiAEUNACAAEOMRIAAoAgAgAEEEaigCABDeMyAAQRRBBBDuHAsLMwAgASgCFCAAKAIALQAAQQJ0IgBBhLejAWooAgAgAEH4tqMBaigCACABKAIYKAIMEQsACzMAIAEoAhQgACgCAC0AAEECdCIAQZy3owFqKAIAIABBkLejAWooAgAgASgCGCgCDBELAAszACABKAIUIAAoAgAtAABBAnQiAEHct6MBaigCACAAQai3owFqKAIAIAEoAhgoAgwRCwALKwEBfyMAQRBrIgIkACACIAE2AgwgAiAANgIIIAJBCGpBqwlBAUEAEN4aAAssACABIAAQqTMCQCABKAIAQQNHDQAgASgCBCIBKAIAQRlHDQAgACABEJACCwstAAJAIAAoAgAiAEUNACAAEOYRIAAoAgAgAEEEaigCABDeMyAAQRRBBBDuHAsLMwAgASgCFCAAKAIALQAAQQJ0IgBBzLqjAWooAgAgAEHAuqMBaigCACABKAIYKAIMEQsACysBAX8jAEEQayICJAAgAiAAEKYnIAEgAikDACACKAIIEP4HGiACQRBqJAALMwAgASgCFCAAKAIALQAAQQJ0IgBBtLmjAWooAgAgAEGouaMBaigCACABKAIYKAIMEQsACzMAIAEoAhQgACgCAC0AAEECdCIAQfS5owFqKAIAIABBwLmjAWooAgAgASgCGCgCDBELAAszACABKAIUIAAoAgAtAABBAnQiAEG0uqMBaigCACAAQai6owFqKAIAIAEoAhgoAgwRCwALLAEBfyAAIAIQozAgACgCBCAAKAIIIgNqIAEgAhDfChogACADIAJqNgIIQQALKwAgACABEMY9AkAgACgCDCIARQ0AIAEgAEEMaigCACAAQRBqKAIAENUxCws6AQF/QRwQszQiAEEANgIIIABCgYCAgBA3AgAgAEEAKQPY4qIBNwIMIABBFGpBACkD4OKiATcCACAACzAAIAEoAhQgAC0AAEECdCIAQbzrogFqKAIAIABBsOuiAWooAgAgASgCGCgCDBELAAswACABKAIUIAAtAABBAnQiAEHg66IBaigCACAAQdTrogFqKAIAIAEoAhgoAgwRCwALMAAgASgCFCAALQAAQQJ0IgBB+OuiAWooAgAgAEHs66IBaigCACABKAIYKAIMEQsACyUAIAAgASACKAIIQX9qQXhxakEIaiADIAQgBSAGIAIoAhAREwALKQACQCACIANLDQAgAyACQYiqgAEQoRsACyAAIAEgA0EMbGopAgQ3AwALKgEBfyAAIAIQpTEgACgCBCAAKAIIIgNqIAEgAhDfChogACADIAJqNgIICyoBAX8gACACEPkvIAAoAgQgACgCCCIDaiABIAIQ3woaIAAgAyACajYCCAsoAAJAIABFDQBBAC0AwP+jARogACABEPMyIQELAkAgAUUNACABDwsACyoBAX8gACACEIgPIAAoAgQgACgCCCIDaiABIAIQ3woaIAAgAyACajYCCAspAQF/IAAgACgCACIBQX9qNgIAAkAgAUEESQ0AIAFBAnENACAAELUNCwssAAJAAkAgACgCAEGJgMQARg0AIABB9ABqEJY3DAELIABBBGohAAsgABCIHAsqAQF/IAAgAhD5LyAAKAIEIAAoAggiA2ogASACEN8KGiAAIAMgAmo2AggLLgACQAJAIAFBAkYNACAAKAIAQYCAgIB4Rg0BIABBADYCFAsPC0Gg/oMBEP05AAsuAAJAAkAgAUEDRg0AIAAoAgBBgICAgHhGDQEgACACEKUiCw8LQbD+gwEQ/TkACzAAIAEoAhQgAC0AAEECdCIAQYieowFqKAIAIABB8J2jAWooAgAgASgCGCgCDBELAAssAQF/QQEhAgJAIAFBgICAgHhGDQAgABD0ICABRg0AIAAQwiMgAUYhAgsgAgstAAJAIAEtABBBAXFFDQAgAxDHBgsCQCACRQ0AIAMQ/gwLIABBgICAgHg2AgALJwACQCACDQBBAUEAIAMQohsACyAAIAJBf2o2AgQgACABQQhqNgIACzAAIAEoAhQgAC0AAEECdCIAQeSBmQFqKAIAIABBvICZAWooAgAgASgCGCgCDBELAAsvAgF/AX4gACgCBCIBIAAoAggQgyghAgJAIAAoAgAiAEUNACABIABBARDuHAsgAgsnAQF/QQAhBAJAIAEgA0kNACACIAMgACABIANraiADEKAxIQQLIAQLMAAgASgCFCAALQAAQQJ0IgBBhKajAWooAgAgAEHgpaMBaigCACABKAIYKAIMEQsACyoBAX8CQEEIQcAAELs4IgENAAALIAFBHjYCACABQQRqIABBKBDfChogAQsvAAJAAkACQCAAKAIADgIBAgALIABBBGoQ5TgPCyAAKQMIENIfDwsgACkDCBDSHwsqAQF/AkBBCEHAABC7OCIBDQAACyABQRc2AgAgAUEEaiAAQSgQ3woaIAELKwACQAJAIABBgAFJDQAgABCPKCEADAELIABBgN2aAWotAAAhAAsgAEEBcQsrAAJAAkAgAEGAAUkNACAAEMcoIQAMAQsgAEGAv5oBai0AACEACyAAQQFxCy8B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ACxBAkcNASAAQRhqIQAMAAsLCx0AIAAgAUEEdGsiAUFwaikDACABQXhqKAIAEKIuCyMAIAAoAiAgARD/AgJAIAAoAgBBAkkNACAAKAIEIAEQ/wILCyMAIAAoAiAgARDCAQJAIAAoAgBBAkkNACAAKAIEIAEQwgELCyMAIAAoAgAgARCNCgJAIAAoAhQiAEUNACABIAAoAgAQrAMLCyUAIAEoAhQgAC0AAEECdEHYuqMBaigCAEEGIAEoAhgoAgwRCwALJQAgACABKAIINgIEIABBACABKAIEIAEoAgBBgICAgHhGGzYCAAsfAAJAIABFDQAgASAAQQxqKAIAIABBEGooAgAQ1TELCx8AAkAgAEUNACABIABBBGooAgAgAEEIaigCABDMPQsLGwAgACABIAIgASACSRsgASACIAEgAksbEOopCyQAAkAgASgCAEGAgICAeEcNACAAQQQ6AAAPCyAAIAEgAhDlIAsfAAJAIABFDQAgASAAQQxqKAIAIABBEGooAgAQzD0LCyEBAX9BACEBAkAgACgCAEERRw0AIABBCGoQzRkhAQsgAQsjAQF/AkBBBEE0EO4yIgANAAALIABBADsBMiAAQQA2AgAgAAskAQF/AkBBBEHkABDuMiIADQAACyAAQQA7ATIgAEEANgIAIAALKQAgAEEcakEAIAJCztuxvrXfjv/nAFEbQQAgAULEpdq3yfebxLd/URsLJQAgACABKAIEIAEoAgggAkHchoABEOswKAIANgIEIAAgATYCAAslACAAIAEoAgQgASgCCCACQeyGgAEQ6zAoAgg2AgQgACABNgIACyEBAX8CQEE0EPc9IgANAAALIABBADsBMiAAQQA2AgAgAAsiAQF/AkBB5AAQ9z0iAA0AAAsgAEEAOwEyIABBADYCACAACyUAAkAgAC0AAA0AIAFB0tGhAUEFEN8FDwsgAUHX0aEBQQQQ3wULHgBBAC0AwP+jARoCQCAAIAEQ8zIiAUUNACABDwsACxsAAkAgASACSw0AIAIgASADEKEbAAsgACACagsiACAAKAIQIAAoAhQgASAAKAI8dkF+akHQ9IMBEO8wKAIICyMAIABBATYCBCAAIAEoAgBBgYCAgHhHIgE2AgggACABNgIACycAAkAgAEGBgICAeEYNAAJAIAANAEH096ABQRFB5PmaARDTJwsACwsiAAJA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KAIEIAEoAggQviMgACACOgAMCyEBAX8gACABIAIoAgQiAyACKAIIENYsIAIoAgAgAxD7OQseAQF/QQAtAMD/owEaAkBBARCMASIARQ0AIAAPCwALHQACQCAAKQMAQgJRDQAgABDbLCAAQYgFahDbLAsLHgACQCABDQBBAEEAQZDNgwEQoRsACyAALQAIQQFxCx0AIABBADYCACAAIAFBwAJBvAIgAhtqKAIANgIECx0AIABBADYCACAAIAFB3AJB2AIgAhtqKAIANgIECyAAAkAgACgCAEGAgICAeEYNACAAEPgeIABBMGoQ+R4LCx0AAkAgACgCAEGIgMQARg0AIAAQqBoPCyAAQQxqCycBAX9BACECAkACQAJAIAAOCAICAgIAAAEBAgtBAQ8LIAEhAgsgAgscAAJAIAAgAUsNACAADwsgACABQdz5oAEQoxsACxsAAkAgAUEBcQ0AIAIgABCJHg8LIAIgABCBFgsXAEEBQX9BACAAKAIAIAJLGyACIAFLGwseAQF/QQAtAMD/owEaAkBBFBCMASIARQ0AIAAPCwALHgEBf0EALQDA/6MBGgJAQQwQjAEiAEUNACAADwsACx8BAX9BAC0AwP+jARoCQEHgABCMASIARQ0AIAAPCwALHgEBf0EALQDA/6MBGgJAQSgQjAEiAEUNACAADwsACx8BAX9BAC0AwP+jARoCQEHAABCMASIARQ0AIAAPCwALHgEBf0EALQDA/6MBGgJAQRAQjAEiAEUNACAADwsACx8BAX9BAC0AwP+jARoCQEGgARCMASIARQ0AIAAPCwALHgEBf0EALQDA/6MBGgJAQRQQjAEiAEUNACAADwsACx4BAX9BAC0AwP+jARoCQEEwEIwBIgBFDQAgAA8LAAseAQF/QQAtAMD/owEaAkBBHBCMASIARQ0AIAAPCwALHgEBf0EALQDA/6MBGgJAQRgQjAEiAEUNACAADwsACx8BAX9BAC0AwP+jARoCQEHYABCMASIARQ0AIAAPCwALHwEBf0EALQDA/6MBGgJAQcAAEIwBIgBFDQAgAA8LAAsfAQF/QQAtAMD/owEaAkBByAAQjAEiAEUNACAADwsACx8BAX9BAC0AwP+jARoCQEHIABCMASIARQ0AIAAPCwALGQAgABC3FhogACgCAEElRiAALQAgckEBcQsZACAAEMIeGiAAKAIo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IAAoAgAgARDJFQsLACAAQQE6AAxBAQsMACAAKAIAIAEQiAwLDAAgACgCACABEPQpCw4AIAAgAUGg0JkBELgECw4AIAAgAUG40JkBELgECw4AIAAgAUHQ0JkBELgECw4AIAAgAUHo0JkBELgECw4AIAAgAUGA0ZkBELgECw4AIAAgAUGY0ZkBELgECw4AIAAgAUGw0ZkBELgECw4AIAAgAUHI0ZkBELgECw4AIAAgAUHg0ZkBELgECw4AIAAgAUH40ZkBELgECw4AIAAgAUGQ0pkBELgECw4AIAAgAUGo0pkBELgECw4AIAAgAUHA0pkBELgECw4AIAAgAUHY0pkBELgECw4AIAAgAUHw0pkBELgECw4AIAAgAUGI05kBELgECw4AIAAgAUGg05kBELgECw4AIAAgAUG405kBELgECw4AIAAgAUHQ05kBELgECw4AIAAgAUHo05kBELgECw4AIAAgAUGA1JkBELgECwwAIAAoAgAgARD3LAsMACAAKAIAIAEQzBULDAAgACgCACABEIogCwwAIAAoAgAgARCOHQsMACAAKAIAIAEQuCILDAAgACgCACABEKgRCwsAIABBBEEEEO4cCwsAIABBIEEIEO4cCwwAIAAoAgAgARCIDQsMACAAKAIAIAEQrwwLDAAgACgCACABEM4DCwsAIAEgACACEIc8CwsAIAEgACACEIg8CwsAIAAgASACEP4iCwsAIAAgASACEP4iCwwAIAAgAUGxBRC7AgsMACAAIAFBsgUQuwILDAAgACABQbMFELsCCwwAIAAgAUG0BRC7AgsMACAAIAFBtQUQuwILDAAgACABQbYFELsCCwwAIAAgAUG3BRC7AgsMACAAIAFBuAUQuwILDAAgACABQbkFELsCCwwAIAAgAUG6BRC7AgsMACAAIAFBuwUQuwILDAAgACABQbwFELsCCwwAIAAgAUG9BRC7AgsMACAAIAFBvgUQuwILDAAgACABQb8FELsCCwwAIAAgAUHABRC7AgsMACAAIAFBwQUQuwILDAAgACABQcIFELsCCwwAIAAgAUHDBRC7AgsMACAAIAFBxAUQuwILDAAgACABQcUFELsCCwwAIAAoAgAgARDfKgsMACAAKAIAIAEQ9ywLDAAgACgCACABEPQpCwwAIAAoAgAgARDtGwsMACAAKAIAIAEQ4DELDAAgACgCACAB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ACABIAAoAgAQpioLDAAgACgCGCABEJIRCwwAIAEgACgCABDZMgsMACAAKAIYIAEQwgYLDAAgACgCGCABEJERCwwAIAAoAhggARDBBgsMACAAKAIAIAEQmg0LDAAgACgCACABEPIGCwwAIAAoAgAgARDPBgsMACAAKAIAIAEQqhELDAAgACgCACABEPk5CwwAIAEgACgCABCwAwsMACABIAAoAgAQ0QMLDAAgASAAKAIAELADCwwAIAEgACgCABCwAwsMACABIAAoAgAQ0QMLCgAgACABEOcuAAsMACABIAAoAgAQ0QMLDAAgACgCACABENADCwwAIAEgACgCABDTAQsMACAAKAIAIAEQ/wILDAAgACgCACABEMIBCwwAIAAoAgAgARD1AgsMACAAKAIAIAEQ9QILDAAgACgCACABEPUCCwwAIAAoAgAgARCAAwsMACAAKAIAIAEQgAMLDAAgACgCACABEIADCwwAIAAoAhggARCaEQsMACAAKAIYIAEQxgYLDAAgASAAKAIAEOoCCwwAIAEgACgCABDqAgsMACAAKAIAIAEQ0AYLDAAgASAAKAIAEIgDCwwAIAEgACgCABDqAgsMACAAKAIAIAEQrBELDAAgACgCACABEPMGCwwAIAAoAgAgARCbDQsMACABIAAoAgAQlgcLDAAgASAAKAIAEJYHCwwAIAEgACgCABCWBwsMACAAKAIYIAEQmwkLDAAgASAAKAIAENwBCwwAIAEgACgCABDcAQsMACABIAAoAgAQ3AELDAAgACABKQIQNwMACwwAIAAoAgAgARCkBQsMACAAKAIAIAEQhAELDAAgACgCACABEKkDCwwAIAAoAhggARCpDQsMACABIAAoAhgQmgILDAAgACgCACABEKMeCwoAIAEgABDpCRoLDAAgACgCACABEIUGCwsAIAAgASACEOopCwwAIAAoAgAgARCpDQsMACAAKAIAIAEQnhsLCgAgACABIAIQbgsKACAAEK4FGkEBCwwAIAAoAgAgARCCCAsMACAAKAIAIAEQpwgLDAAgACgCACABEJMjCwwAIAAoAgAgARCkBQsMACAAKAIAIAEQ5AcLDAAgASAAKAIAEJQjCwwAIAAoAgAgARCOBgsMACAAKAIAIAEQ9xcLDAAgACgCACABEKwNCwoAIABBCGoQ2iILDAAgACgCACABEIEOCwwA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ZXMgYXJlIG5ldmVyIGVtcHR5ACwTIAAjAAAA0PcgAG0AAAAuAwAACQAAAND3IABtAAAAMAMAABAAAADQ9yAAbQAAAD8DAAAdAAAA0PcgAG0AAADgAwAAIwAAAND3IABtAAAA4QMAACEAAADQ9yAAbQAAAOIDAAAoAAAA0PcgAG0AAADjAwAAJgAAAND3IABtAAAA2AMAACYAAADQ9yAAbQAAANIDAAAeAAAA0PcgAG0AAADGAwAAIgAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Foby1jb3Jhc2ljay0xLjEuMy9zcmMvYXV0b21hdG9uLnJz+BMgAGgAAAAmBQAALQAAAPgTIABoAAAA1wUAAA0AAACkxyAAAgAAACA+AACIFCAAAgAAAKbHIAACAAAAKj4AAJwUIAACAAAAqMcgAAIAAAAAAAAACAAAAAQAAADzBQAAYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5ieV9pZC5sZW4oKSA8PSB1MTY6Ok1BWCBhcyB1c2l6ZQDtGiAAbQAAAEgAAAAJAAAA7RogAG0AAACPAAAAHAAAAO0aIABtAAAAyAAAACUAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9haG8tY29yYXNpY2stMS4xLjMvc3JjL3V0aWwvYWxwaGFiZXQucnMh0yAADAAAAJ61JgACAAAAQnl0ZUNsYXNzZXMoPG9uZS1jbGFzcy1wZXItYnl0ZT4pAAAApBUgACEAAAAoFSAAbAAAAPUAAAAuAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy91dGlsL2RlYnVnLnJzAAAA4BUgAGkAAAAYAAAAPQAAAOAVIABpAAAAFQAAAA0AAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9haG8tY29yYXNpY2stMS4x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MIAwjjicOKs4uzjMQN1A70ACSRVJKUk+UVNRaVGAUZhZsFnJWeNh/WEYYjRqUGptaotqqnLJculyCnsre017cIOTg7eD3IMCjCiMT4x3lJ+UyJTynBwFHAUcBRwFBQIFAQIFBgIFAwECBQEFBgIFBwgBAgUDCQAGAgUBCQUDAQIFCQcGBQYCBQQICAIIAQIFAgQEAQQABgIFAQICAAcAAwECBQYBAAMFAQUGAgUDAAUBBwUHCAECBQEFAgUIBwgJAAYCBQcGAgkDCQQFAwECBQMIAQQGCQcCBgUGAgUBCQAHAwQIBgMCCAECBQkFAwYHBAMBBgQABgIFBAcGCAMHAQUIAgADAQIFAgMIBAEIBQcJAQABBQYCBQEBCQIACQIICQUFAAcIAQIFBQkGAAQGBAQHBwUDCQAGAgUCCQgAAgMCAgMIBwYJBQMBAgUBBAkAAQEGAQEJAwgEBwYFBgIFBwQFAAUIAAUJBgkCAwgCCAECBQMHAgUCCQACCQgEBgEJAQQABgIFAQgGAgYEBQEECQIDAAkFBwADAQIFCQMBAwICBQcEBgEFBAcIBQEFBgIFBAYFBgYBAggHAwAHBwMJAgUHCAECBQIDAggDAAYEAwYFAwgGCQYCCAkABgIFAQEGBAEFAwIBCAIGCQMECAEEBAUDAQIFBQgCAAcGBgAJAQMEBgcEAAcCAgYFBgIFAgkBAAMIAwAEBQYHAwMHAAMGAQMCCAECBQEEBQUBCQEFAgIIAwYGCAUBCAAGBgQABgIFBwIHBQkFBwYBBAEIAwQCBQkAAwMCAAMBAgUDBgMHCQcICAAHAAkBBwECCQUBBgYAAQUGAgUBCAEICQgJBAADBQQFCAUGBAcFCAMAAAcIAQIFCQAJBAkEBwABBwcCCQIIAgMHCQEFAAMJAAYCBQQFBAcEBwMFAAgIBgQGBAEBCAkFBwUBCQUDAQIFAgIHAwcDBgcFBAQDAgMCAAUJBAcIBwUJBwYFBgIFAQEDBggGCAMHBwIBBgEGAAIJBwMJAwcJCAgCCAECBQUGCAQDBAEICAYACAAIAAEECAYJBggJCQQBBAAGAgUCCAQCAQcACQQDAAQABAAABwQDBAgEBAkHAAcAAwECBQEEAgEACAUEBwEFAgACAAADBwEHBAICBAgFAwUBBQYCBQcBAAUEAgcDBQcGAAEAAAEIBQgHAQECBAIGBwUH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Z2VyLTAuMS40Ni9zcmMvbGliLnJzAACImCAAYgAAAB4EAAABAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvbnVtLWJpZ2ludC0wLjQuNi9zcmMvYmlndWludC9kaXZpc2lvbi5ycwAAAPyYIABtAAAAHAAAAAYAAABhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvAAAAfJkgABkAAAD8mCAAbQAAAFcAAAAJAAAA/JggAG0AAADdAAAAOQAAAPyYIABtAAAA0gAAAAkAAAD8mCAAbQAAABUBAAAOAAAA/JggAG0AAAAWAQAADgAAAPyYIABtAAAAIAEAACEAAAD8mCAAbQAAACEBAAAYAAAA/JggAG0AAABCAQAAPAAAAPyYIABtAAAARgEAACkAAAD8mCAAbQAAAEsBAAAPAAAA/JggAG0AAABOAQAAGwAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL251bS1iaWdpbnQtMC40LjYvc3JjL2JpZ3VpbnQvc2hpZnQucnMAAFCaIABqAAAAKAAAABkAAABQmiAAagAAAEoAAAAjAAAAbmVnYXRpdmUgdmFsdWVzIGFyZSBub24temVyby9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL251bS1iaWdpbnQtMC40LjYvc3JjL2JpZ2ludC9zaGlmdC5ycwAAAPiaIABpAAAAZgAAACgAAAAAAAAABAAAAAQAAAA8AAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvbnVtLWJpZ2ludC0wLjQuNi9zcmMvYmlndWludC9hZGRpdGlvbi5ycwAAAISbIABtAAAAOwAAABoAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9udW0tYmlnaW50LTAuNC42L3NyYy9iaWd1aW50L3N1YnRyYWN0aW9uLnJzBJwgAHAAAAA0AAAAGgAAAAScIABwAAAANQAAABoAAABDYW5ub3Qgc3VidHJhY3QgYiBmcm9tIGEgYmVjYXVzZSBiIGlzIGxhcmdlciB0aGFuIGEulJwgADQAAAAEnCAAcAAAAEUAAAAFAAAABJwgAHAAAABdAAAAGgAAAAScIABwAAAAXgAAABoAAABhc3NlcnRpb24gZmFpbGVkOiBhX2hpLmlzX2VtcHR5KCkAAAAEnCAAcAAAAGIAAAAFAAAABJwgAHAAAABlAAAABQAAAC9ydXN0Yy85MGIzNWE2MjM5YzNkOGJkYWJjNTMwYTZhMDgxNmY3ZmY4OWEwYWFmL2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvaXRlci5ycwAARJ0gAE4AAADxBQAAFQAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL251bS1pbnRlZ2VyLTAuMS40Ni9zcmMvcm9vdHMucnOknSAAZAAAAIMBAAABAAAAAAAAAAQAAAAEAAAAPAAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL29uY2VfY2VsbC0xLjIxLjEvc3JjL2ltcF9zdGQucnMoniAAZAAAAKEAAAA2AAAAKJ4gAGQAAACbAAAACQAAADM4OzU7MDM4OzU7MTM4OzU7MjM4OzU7MzM4OzU7NDM4OzU7NTM4OzU7NjM4OzU7NzM4OzU7ODM4OzU7OTM4OzU7MTAzODs1OzExMzg7NTsxMjM4OzU7MTMzODs1OzE0Mzg7NTsxNTM4OzU7MTYzODs1OzE3Mzg7NTsxODM4OzU7MTkzODs1OzIwMzg7NTsyMTM4OzU7MjIzODs1OzIzMzg7NTsyNDM4OzU7MjUzODs1OzI2Mzg7NTsyNzM4OzU7MjgzODs1OzI5Mzg7NTszMDM4OzU7MzEzODs1OzMyMzg7NTszMzM4OzU7MzQzODs1OzM1Mzg7NTszNjM4OzU7MzczODs1OzM4Mzg7NTszOTM4OzU7NDAzODs1OzQxMzg7NTs0MjM4OzU7NDMzODs1OzQ0Mzg7NTs0NTM4OzU7NDYzODs1OzQ3Mzg7NTs0ODM4OzU7NDkzODs1OzUwMzg7NTs1MTM4OzU7NTIzODs1OzUzMzg7NTs1NDM4OzU7NTUzODs1OzU2Mzg7NTs1NzM4OzU7NTgzODs1OzU5Mzg7NTs2MDM4OzU7NjEzODs1OzYyMzg7NTs2MzM4OzU7NjQzODs1OzY1Mzg7NTs2NjM4OzU7NjczODs1OzY4Mzg7NTs2OTM4OzU7NzAzODs1OzcxMzg7NTs3MjM4OzU7NzMzODs1Ozc0Mzg7NTs3NTM4OzU7NzYzODs1Ozc3Mzg7NTs3ODM4OzU7NzkzODs1OzgwMzg7NTs4MTM4OzU7ODIzODs1OzgzMzg7NTs4NDM4OzU7ODUzODs1Ozg2Mzg7NTs4NzM4OzU7ODgzODs1Ozg5Mzg7NTs5MDM4OzU7OTEzODs1OzkyMzg7NTs5MzM4OzU7OTQzODs1Ozk1Mzg7NTs5NjM4OzU7OTczODs1Ozk4Mzg7NTs5OTM4OzU7MTAwMzg7NTsxMDEzODs1OzEwMjM4OzU7MTAzMzg7NTsxMDQzODs1OzEwNTM4OzU7MTA2Mzg7NTsxMDczODs1OzEwODM4OzU7MTA5Mzg7NTsxMTAzODs1OzExMTM4OzU7MTEyMzg7NTsxMTMzODs1OzExNDM4OzU7MTE1Mzg7NTsxMTYzODs1OzExNzM4OzU7MTE4Mzg7NTsxMTkzODs1OzEyMDM4OzU7MTIxMzg7NTsxMjIzODs1OzEyMzM4OzU7MTI0Mzg7NTsxMjUzODs1OzEyNjM4OzU7MTI3Mzg7NTsxMjgzODs1OzEyOTM4OzU7MTMwMzg7NTsxMzEzODs1OzEzMjM4OzU7MTMzMzg7NTsxMzQzODs1OzEzNTM4OzU7MTM2Mzg7NTsxMzczODs1OzEzODM4OzU7MTM5Mzg7NTsxNDAzODs1OzE0MTM4OzU7MTQyMzg7NTsxNDMzODs1OzE0NDM4OzU7MTQ1Mzg7NTsxNDYzODs1OzE0NzM4OzU7MTQ4Mzg7NTsxNDkzODs1OzE1MDM4OzU7MTUxMzg7NTsxNTIzODs1OzE1MzM4OzU7MTU0Mzg7NTsxNTUzODs1OzE1NjM4OzU7MTU3Mzg7NTsxNTgzODs1OzE1OTM4OzU7MTYwMzg7NTsxNjEzODs1OzE2MjM4OzU7MTYzMzg7NTsxNjQzODs1OzE2NTM4OzU7MTY2Mzg7NTsxNjczODs1OzE2ODM4OzU7MTY5Mzg7NTsxNzAzODs1OzE3MTM4OzU7MTcyMzg7NTsxNzMzODs1OzE3NDM4OzU7MTc1Mzg7NTsxNzYzODs1OzE3NzM4OzU7MTc4Mzg7NTsxNzkzODs1OzE4MDM4OzU7MTgxMzg7NTsxODIzODs1OzE4MzM4OzU7MTg0Mzg7NTsxODUzODs1OzE4NjM4OzU7MTg3Mzg7NTsxODgzODs1OzE4OTM4OzU7MTkwMzg7NTsxOTEzODs1OzE5MjM4OzU7MTkzMzg7NTsxOTQzODs1OzE5NTM4OzU7MTk2Mzg7NTsxOTczODs1OzE5ODM4OzU7MTk5Mzg7NTsyMDAzODs1OzIwMTM4OzU7MjAyMzg7NTsyMDMzODs1OzIwNDM4OzU7MjA1Mzg7NTsyMDYzODs1OzIwNzM4OzU7MjA4Mzg7NTsyMDkzODs1OzIxMDM4OzU7MjExMzg7NTsyMTIzODs1OzIxMzM4OzU7MjE0Mzg7NTsyMTUzODs1OzIxNjM4OzU7MjE3Mzg7NTsyMTgzODs1OzIxOTM4OzU7MjIwMzg7NTsyMjEzODs1OzIyMjM4OzU7MjIzMzg7NTsyMjQzODs1OzIyNTM4OzU7MjI2Mzg7NTsyMjczODs1OzIyODM4OzU7MjI5Mzg7NTsyMzAzODs1OzIzMTM4OzU7MjMyMzg7NTsyMzMzODs1OzIzNDM4OzU7MjM1Mzg7NTsyMzYzODs1OzIzNzM4OzU7MjM4Mzg7NTsyMzkzODs1OzI0MDM4OzU7MjQxMzg7NTsyNDIzODs1OzI0MzM4OzU7MjQ0Mzg7NTsyNDUzODs1OzI0NjM4OzU7MjQ3Mzg7NTsyNDgzODs1OzI0OTM4OzU7MjUwMzg7NTsyNTEzODs1OzI1MjM4OzU7MjUzMzg7NTsyNTQzODs1OzI1NTQ4OzU7MDQ4OzU7MTQ4OzU7MjQ4OzU7MzQ4OzU7NDQ4OzU7NTQ4OzU7NjQ4OzU7NzQ4OzU7ODQ4OzU7OTQ4OzU7MTA0ODs1OzExNDg7NTsxMjQ4OzU7MTM0ODs1OzE0NDg7NTsxNTQ4OzU7MTY0ODs1OzE3NDg7NTsxODQ4OzU7MTk0ODs1OzIwNDg7NTsyMTQ4OzU7MjI0ODs1OzIzNDg7NTsyNDQ4OzU7MjU0ODs1OzI2NDg7NTsyNzQ4OzU7Mjg0ODs1OzI5NDg7NTszMDQ4OzU7MzE0ODs1OzMyNDg7NTszMzQ4OzU7MzQ0ODs1OzM1NDg7NTszNjQ4OzU7Mzc0ODs1OzM4NDg7NTszOTQ4OzU7NDA0ODs1OzQxNDg7NTs0MjQ4OzU7NDM0ODs1OzQ0NDg7NTs0NTQ4OzU7NDY0ODs1OzQ3NDg7NTs0ODQ4OzU7NDk0ODs1OzUwNDg7NTs1MTQ4OzU7NTI0ODs1OzUzNDg7NTs1NDQ4OzU7NTU0ODs1OzU2NDg7NTs1NzQ4OzU7NTg0ODs1OzU5NDg7NTs2MDQ4OzU7NjE0ODs1OzYyNDg7NTs2MzQ4OzU7NjQ0ODs1OzY1NDg7NTs2NjQ4OzU7Njc0ODs1OzY4NDg7NTs2OTQ4OzU7NzA0ODs1OzcxNDg7NTs3MjQ4OzU7NzM0ODs1Ozc0NDg7NTs3NTQ4OzU7NzY0ODs1Ozc3NDg7NTs3ODQ4OzU7Nzk0ODs1OzgwNDg7NTs4MTQ4OzU7ODI0ODs1OzgzNDg7NTs4NDQ4OzU7ODU0ODs1Ozg2NDg7NTs4NzQ4OzU7ODg0ODs1Ozg5NDg7NTs5MDQ4OzU7OTE0ODs1OzkyNDg7NTs5MzQ4OzU7OTQ0ODs1Ozk1NDg7NTs5NjQ4OzU7OTc0ODs1Ozk4NDg7NTs5OTQ4OzU7MTAwNDg7NTsxMDE0ODs1OzEwMjQ4OzU7MTAzNDg7NTsxMDQ0ODs1OzEwNTQ4OzU7MTA2NDg7NTsxMDc0ODs1OzEwODQ4OzU7MTA5NDg7NTsxMTA0ODs1OzExMTQ4OzU7MTEyNDg7NTsxMTM0ODs1OzExNDQ4OzU7MTE1NDg7NTsxMTY0ODs1OzExNzQ4OzU7MTE4NDg7NTsxMTk0ODs1OzEyMDQ4OzU7MTIxNDg7NTsxMjI0ODs1OzEyMzQ4OzU7MTI0NDg7NTsxMjU0ODs1OzEyNjQ4OzU7MTI3NDg7NTsxMjg0ODs1OzEyOTQ4OzU7MTMwNDg7NTsxMzE0ODs1OzEzMjQ4OzU7MTMzNDg7NTsxMzQ0ODs1OzEzNTQ4OzU7MTM2NDg7NTsxMzc0ODs1OzEzODQ4OzU7MTM5NDg7NTsxNDA0ODs1OzE0MTQ4OzU7MTQyNDg7NTsxNDM0ODs1OzE0NDQ4OzU7MTQ1NDg7NTsxNDY0ODs1OzE0NzQ4OzU7MTQ4NDg7NTsxNDk0ODs1OzE1MDQ4OzU7MTUxNDg7NTsxNTI0ODs1OzE1MzQ4OzU7MTU0NDg7NTsxNTU0ODs1OzE1NjQ4OzU7MTU3NDg7NTsxNTg0ODs1OzE1OTQ4OzU7MTYwNDg7NTsxNjE0ODs1OzE2MjQ4OzU7MTYzNDg7NTsxNjQ0ODs1OzE2NTQ4OzU7MTY2NDg7NTsxNjc0ODs1OzE2ODQ4OzU7MTY5NDg7NTsxNzA0ODs1OzE3MTQ4OzU7MTcyNDg7NTsxNzM0ODs1OzE3NDQ4OzU7MTc1NDg7NTsxNzY0ODs1OzE3NzQ4OzU7MTc4NDg7NTsxNzk0ODs1OzE4MDQ4OzU7MTgxNDg7NTsxODI0ODs1OzE4MzQ4OzU7MTg0NDg7NTsxODU0ODs1OzE4NjQ4OzU7MTg3NDg7NTsxODg0ODs1OzE4OTQ4OzU7MTkwNDg7NTsxOTE0ODs1OzE5MjQ4OzU7MTkzNDg7NTsxOTQ0ODs1OzE5NTQ4OzU7MTk2NDg7NTsxOTc0ODs1OzE5ODQ4OzU7MTk5NDg7NTsyMDA0ODs1OzIwMTQ4OzU7MjAyNDg7NTsyMDM0ODs1OzIwNDQ4OzU7MjA1NDg7NTsyMDY0ODs1OzIwNzQ4OzU7MjA4NDg7NTsyMDk0ODs1OzIxMDQ4OzU7MjExNDg7NTsyMTI0ODs1OzIxMzQ4OzU7MjE0NDg7NTsyMTU0ODs1OzIxNjQ4OzU7MjE3NDg7NTsyMTg0ODs1OzIxOTQ4OzU7MjIwNDg7NTsyMjE0ODs1OzIyMjQ4OzU7MjIzNDg7NTsyMjQ0ODs1OzIyNTQ4OzU7MjI2NDg7NTsyMjc0ODs1OzIyODQ4OzU7MjI5NDg7NTsyMzA0ODs1OzIzMTQ4OzU7MjMyNDg7NTsyMzM0ODs1OzIzNDQ4OzU7MjM1NDg7NTsyMzY0ODs1OzIzNzQ4OzU7MjM4NDg7NTsyMzk0ODs1OzI0MDQ4OzU7MjQxNDg7NTsyNDI0ODs1OzI0MzQ4OzU7MjQ0NDg7NTsyNDU0ODs1OzI0NjQ4OzU7MjQ3NDg7NTsyNDg0ODs1OzI0OTQ4OzU7MjUwNDg7NTsyNTE0ODs1OzI1MjQ4OzU7MjUzNDg7NTsyNTQ0ODs1OzI1NTM4OzI7AAAA0K0gAAUAAADEVSgAAQAAAMRVKAABAAAANDg7MjsAAADwrSAABQAAAMRVKAABAAAAxFUoAAEAAAAzMDMxMzIzMzM0MzUzNjM3Mzk5MDkxOTI5Mzk0OTU5Njk3NDA0MTQyNDM0NDQ1NDY0NzQ5MTAwMTAxMTAyMTAzMTA0MTA1MTA2MTA3Mzg7MjsyNDA7MjQ4OzI1NTM4OzI7MjUwOzIzNTsyMTUzODsyOzAwMDsyNTU7MjU1Mzg7MjsxMjc7MjU1OzIxMjM4OzI7MjQwOzI1NTsyNTUzODsyOzI0NTsyNDU7MjIwMzg7MjsyNTU7MjI4OzE5NjM4OzI7MDAwOzAwMDswMDAzODsyOzI1NTsyMzU7MjA1Mzg7MjswMDA7MDAwOzI1NTM4OzI7MTM4OzA0MzsyMjYzODsyOzE2NTswNDI7MDQyMzg7MjsyMjI7MTg0OzEzNTM4OzI7MDk1OzE1ODsxNjAzODsyOzEyNzsyNTU7MDAwMzg7MjsyMTA7MTA1OzAzMDM4OzI7MjU1OzEyNzswODAzODsyOzEwMDsxNDk7MjM3Mzg7MjsyNTU7MjQ4OzIyMDM4OzI7MjIwOzAyMDswNjAzODsyOzAwMDswMDA7MTM5Mzg7MjswMDA7MTM5OzEzOTM4OzI7MTg0OzEzNDswMTEzODsyOzE2OTsxNjk7MTY5Mzg7MjswMDA7MTAwOzAwMDM4OzI7MTg5OzE4MzsxMDczODsyOzEzOTswMDA7MTM5Mzg7MjswODU7MTA3OzA0NzM4OzI7MjU1OzE0MDswMDAzODsyOzE1MzswNTA7MjA0Mzg7MjsxMzk7MDAwOzAwMDM4OzI7MjMzOzE1MDsxMjIzODsyOzE0MzsxODg7MTQzMzg7MjswNzI7MDYxOzEzOTM4OzI7MDQ3OzA3OTswNzkzODsyOzAwMDsyMDY7MjA5Mzg7MjsxNDg7MDAwOzIxMTM4OzI7MjU1OzAyMDsxNDczODsyOzAwMDsxOTE7MjU1Mzg7MjsxMDU7MTA1OzEwNTM4OzI7MDMwOzE0NDsyNTUzODsyOzE3ODswMzQ7MDM0Mzg7MjsyNTU7MjUwOzI0MDM4OzI7MDM0OzEzOTswMzQzODsyOzI1NTswMDA7MjU1Mzg7MjsyMjA7MjIwOzIyMDM4OzI7MjQ4OzI0ODsyNTUzODsyOzI1NTsyMTU7MDAwMzg7MjsyMTg7MTY1OzAzMjM4OzI7MTI4OzEyODsxMjgzODsyOzAwMDsxMjg7MDAwMzg7MjsxNzM7MjU1OzA0NzM4OzI7MjQwOzI1NTsyNDAzODsyOzI1NTsxMDU7MTgwMzg7MjsyMDU7MDkyOzA5MjM4OzI7MDc1OzAwMDsxMzAzODsyOzI1NTsyNTU7MjQwMzg7MjsyNDA7MjMwOzE0MDM4OzI7MjMwOzIzMDsyNTAzODsyOzI1NTsyNDA7MjQ1Mzg7MjsxMjQ7MjUyOzAwMDM4OzI7MjU1OzI1MDsyMDUzODsyOzE3MzsyMTY7MjMwMzg7MjsyNDA7MTI4OzEyODM4OzI7MjI0OzI1NTsyNTUzODsyOzI1MDsyNTA7MjEwMzg7MjsyMTE7MjExOzIxMTM4OzI7MTQ0OzIzODsxNDQzODsyOzI1NTsxODI7MTkzMzg7MjsyNTU7MTYwOzEyMjM4OzI7MDMyOzE3ODsxNzAzODsyOzEzNTsyMDY7MjUwMzg7MjsxMTk7MTM2OzE1MzM4OzI7MTc2OzE5NjsyMjIzODsyOzI1NTsyNTU7MjI0Mzg7MjswMDA7MjU1OzAwMDM4OzI7MDUwOzIwNTswNTAzODsyOzI1MDsyNDA7MjMwMzg7MjsxMjg7MDAwOzAwMDM4OzI7MTAyOzIwNTsxNzAzODsyOzAwMDswMDA7MjA1Mzg7MjsxODY7MDg1OzIxMTM4OzI7MTQ3OzExMjsyMTkzODsyOzA2MDsxNzk7MTEzMzg7MjsxMjM7MTA0OzIzODM4OzI7MDAwOzI1MDsxNTQzODsyOzA3MjsyMDk7MjA0Mzg7MjsxOTk7MDIxOzEzMzM4OzI7MDI1OzAyNTsxMTIzODsyOzI0NTsyNTU7MjUwMzg7MjsyNTU7MjI4OzIyNTM4OzI7MjU1OzIyODsxODEzODsyOzI1NTsyMjI7MTczMzg7MjswMDA7MDAwOzEyODM4OzI7MjUzOzI0NTsyMzAzODsyOzEyODsxMjg7MDAwMzg7MjsxMDc7MTQyOzAzNTM4OzI7MjU1OzE2NTswMDAzODsyOzI1NTswNjk7MDAwMzg7MjsyMTg7MTEyOzIxNDM4OzI7MjM4OzIzMjsxNzAzODsyOzE1MjsyNTE7MTUyMzg7MjsxNzU7MjM4OzIzODM4OzI7MjE5OzExMjsxNDczODsyOzI1NTsyMzk7MjEzMzg7MjsyNTU7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AAAAAQcAAAAAAAAEAAAABAAAAAIHAABpbmZvbmZhcmV2cGlrZXZtHMMgAAQAAAD2BiEAAwAAAAUHIQADAAAAIMMgAAYAAAAmwyAABgAAAAnpIAAJAAAAAukgAAcAAADc6CAABgAAAOLoIAADAAAAQ29yZVJldmVyc2VBbmNob3JlZGNvcmVSZXZlcnNlU3VmZml4UmV2ZXJzZUlubmVycHJlaW5uZXJPbmVQYXNzSHlicmlkUmV2ZXJzZUh5YnJpZEdyb3VwSW5mb0Vycm9yAAAAAAgAAAAIAAAAAwcAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy9kZmEvb25lcGFzcy5yc+TDIABsAAAAMQIAAEMAAADkwyAAbAAAAFwCAAAJAAAA5MMgAGwAAAByAgAALAAAAG11bHRpcGxlIGVwc2lsb24gdHJhbnNpdGlvbnMgdG8gbWF0Y2ggc3RhdGUA5MMgAGwAAABnAgAAMQAAAHRvbyBtYW55IGV4cGxpY2l0IGNhcHR1cmluZyBncm91cHMgKG1heCBpcyAxNiltYXRjaCBzdGF0ZXMgc2hvdWxkIGJlIGEgcHJvcGVyIHN1YnNldCBvZiBhbGwgc3RhdGVzAADkwyAAbAAAAO0CAAA7AAAAY29uZmxpY3RpbmcgdHJhbnNpdGlvbmFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuZGZhLnN0YXJ0cy5pc19lbXB0eSgpAADkwyAAbAAAADEDAAAVAAAAYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5kZmEuc3RhcnRzLmxlbigpID09IHBpZC5vbmVfbW9yZSgpAAAA5MMgAGwAAAAzAwAAGgAAAOTDIABsAAAATQMAADEAAADkwyAAbAAAAFQDAAAbAAAAbXVsdGlwbGUgZXBzaWxvbiB0cmFuc2l0aW9ucyB0byBzYW1lIHN0YXRlAADkwyAAbAAAAOgHAAAdAAAA5MMgAGwAAADoBwAALwAAAOTDIABsAAAA6QcAABsAAADkwyAAbAAAAOkHAAArAAAA5MMgAGwAAABXCAAALgAAAOTDIABsAAAArAgAABIAAADkwyAAbAAAALcIAAAUAAAA5MMgAGwAAADUCAAAEwAAAOTDIABsAAAA3AgAABMAAADkwyAAbAAAAOwIAAAbAAAA5MMgAGwAAAD3CAAAIwAAAOTDIABsAAAA/QgAABMAAADkwyAAbAAAABUJAABBAAAA5MMgAGwAAAAiCQAAGAAAAOTDIABsAAAALAkAACYAAABvbmVwYXNzOjpERkEoCnN0YXRlIGxlbmd0aDogGscgAA4AAACkRSgAAQAAAHBhdHRlcm4gbGVuZ3RoOiA4xyAAEAAAAKRFKAABAAAA/NogAAIAAABTVEFSVChBTEwpOiBgxyAADAAAAKRFKAABAAAAU1RBUlQocGF0dGVybjogAHzHIAAPAAAABNsgAAMAAACkRSgAAQAAACAgKiBEICAoqscgAAIAAAA8sSgAAQAAACAoTVcpAAAA5MMgAGwAAAAOCgAAIQAAALtCKAABAAAATi9BUzjhIABtAAAAlQAAACAAAABpbnZhbGlkIFN0YXRlSUQgdmFsdWUAAAAAAAAACAAAAAgAAAAEBwAAMOUgAG4AAACRCAAACQAAADDlIABuAAAAkggAAAkAAAAw5SAAbgAAAJMIAAAJAAAAMOUgAG4AAAC1CAAAKAAAADDlIABuAAAAuwgAACIAAAAw5SAAbgAAAMAIAAAfAAAAMOUgAG4AAADKCAAAHwAAADDlIABuAAAA0AgAAAkAAAAw5SAAbgAAANIIAAA4AAAAMOUgAG4AAADSCAAACQAAADDlIABuAAAA3wgAADgAAAAw5SAAbgAAAPAIAABBAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL3V0aWwvd2lyZS5ycwAA2MggAGoAAABXAgAADgAAANjIIABqAAAAeAMAAAwAAABHcm91cEluZm9Ub29NYW55UGF0dGVybnNlcnJUb29NYW55R3JvdXBzcGF0dGVybm1pbmltdW1NaXNzaW5nR3JvdXBzRmlyc3RNdXN0QmVVbm5hbWVkRHVwbGljYXRlZXhwZWN0ZWQgbnVtYmVyIG9mIHBhdHRlcm5zIHRvIG1hdGNoIHBhdHRlcm4gSUQAAADCySAALwAAAKD4IABwAAAANAQAAA0AAACg+CAAcAAAAFUEAAA5AAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy91dGlsL3NlYXJjaC5ycwAAHMogAGoAAABOAQAACQAAAGludmFsaWQgbWF0Y2ggc3BhbgAAmMogABIAAAAcyiAAagAAAFsDAAAJAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy9wYWNrZWQvYXBpLnJzAAAAxMogAGkAAAAZAgAAHAAAAMTKIABpAAAAHwIAADEAAAAFBwAABAAAAAQAAAAGBwAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL3V0aWwvcHJlZmlsdGVyL2J5dGVzZXQucnMAYMsgAHcAAAAjAAAAEQAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy91dGlsL3ByZWZpbHRlci9tZW1jaHIucnMAAOjLIAB2AAAAJwAAAC0AAADoyyAAdgAAAFUAAAAWAAAA6MsgAHYAAABWAAAAFgAAAOjLIAB2AAAAZAAAADYAAADoyyAAdgAAAJIAAAAWAAAA6MsgAHYAAACTAAAAFgAAAOjLIAB2AAAAlAAAABYAAADoyyAAdgAAAKIAAAA+AAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL3V0aWwvcHJlZmlsdGVyL21lbW1lbS5ycwAA4MwgAHYAAAArAAAAJwAAAODMIAB2AAAAOwAAABgAAABhaG8tY29yYXNpY2sgREZBIHNob3VsZCBuZXZlciBmYWlsL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL3V0aWwvcHJlZmlsdGVyL3RlZGR5LnJzAJrNIAB1AAAAcQAAABIAAAAAAAAAAAAAAAEAAAAHBwAAAAAAAAgAAAAEAAAACAcAAAAAAAAEAAAABAAAAAkHAAAAAAAAAQAAAAEAAAB9AAAAAAAAAAQAAAAEAAAAcAAAAG1heGltdW1fbGVubG9va19zZXRsb29rX3NldF9wcmVmaXhsb29rX3NldF9zdWZmaXhsb29rX3NldF9wcmVmaXhfYW55bG9va19zZXRfc3VmZml4X2FueXV0ZjhleHBsaWNpdF9jYXB0dXJlc19sZW5zdGF0aWNfZXhwbGljaXRfY2FwdHVyZXNfbGVubGl0ZXJhbGFsdGVybmF0aW9uX2xpdGVyYWwAAJT5IAALAAAAcM4gAAsAAAB7ziAACAAAAIPOIAAPAAAAks4gAA8AAAChziAAEwAAALTOIAATAAAAx84gAAQAAADLziAAFQAAAODOIAAcAAAA/M4gAAcAAAADzyAAEwAAAFByb3BlcnRpZXNJSW52YWxpZElucHV0QW5jaG9yZWRJbnZhbGlkSW5wdXRVbmFuY2hvcmVkVW5zdXBwb3J0ZWRTdHJlYW1VbnN1cHBvcnRlZE92ZXJsYXBwaW5nVW5zdXBwb3J0ZWRFbXB0eWVycm9yIGJ1aWxkaW5nIE5GQWludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGZvdW5kIGltcG9zc2libGUgZXJyb3IgaW4gbWV0YSBlbmdpbmU6IAD2zyAAUQAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy9tZXRhL2Vycm9yLnJzAFDQIABrAAAA7QAAABEAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvbmZhL3Rob21wc29uL3JhbmdlX3RyaWUucnPM0CAAeAAAAPoAAAApAAAAzNAgAHgAAAD8AAAAKwAAAMzQIAB4AAAASwEAADsAAABhc3NlcnRpb24gZmFpbGVkOiAhcmFuZ2VzLmlzX2VtcHR5KCnM0CAAeAAAADEBAAANAAAAdG9vIG1hbnkgc2VxdWVuY2VzIGFkZGVkIHRvIHJhbmdlIHRyaWUAAKjRIAAmAAAAzNAgAHgAAAC0AQAAEQAAAMzQIAB4AAAA4AEAADcAAADM0CAAeAAAABkCAAAsAAAAzNAgAHgAAAAeAgAAFQAAAMzQIAB4AAAAIwIAABkAAADM0CAAeAAAAEkCAAAaAAAAYXNzZXJ0aW9uIGZhaWxlZDogbGVuID4gMAAAAMzQIAB4AAAAhgIAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBsZW4gPD0gNAAAzNAgAHgAAACHAgAACQAAAMzQIAB4AAAApwIAABUAAADM0CAAeAAAAEUDAAANAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL3V0aWwvYWxwaGFiZXQucnNFT0lCeXRlQ2xhc3NlcyggPT4gWwAAAQAAAAAAAAAt0yAABQAAAAEAAAAAAAAAu0IoAAEAAABCeXRlQ2xhc3Nlcyh7c2luZ2xldG9uc30pAAAAsNIgAG4AAAAaAgAALgAAALDSIABuAAAANgIAADQAAACw0iAAbgAAANwCAAAuAAAAU3RhcnRCeXRlTWFwe05vbldvcmRCeXRlV29yZEJ5dGVUZXh0TGluZUxGTGluZUNSQ3VzdG9tTGluZVRlcm1pbmF0b3JRdWl0Ynl0ZUdhdmVVcEhheXN0YWNrVG9vTG9uZ2xlblVuc3VwcG9ydGVkQW5jaG9yZWRtb2RlAAAAAAAAAAAAAQAAAAcHAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvbmZhL3Rob21wc29uL2Nv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ACEAcQAAALUGAAAeAAAAVAAhAHEAAAC3BgAAQQAAAHNwYXJzZSgAwNsgAAcAAAA8sSgAAQAAAGRlbnNlKCA9PiAAAAEAAAAAAAAA3tsgAAQAAAB1bmlvbigAAPTbIAAGAAAAPLEoAAEAAABiaW5hcnktdW5pb24oAAAADNwgAA0AAACetSYAAgAAADyxKAABAAAAY2FwdHVyZShwaWQ9LCBncm91cD0sIHNsb3Q9KSA9PiA03CAADAAAAEDcIAAIAAAASNwgAAcAAABP3CAABQAAAEZBSUxNQVRDSCgAAHjcIAAGAAAAPLEoAAEAAAABAAAAAAAAALtCKAABAAAA3tsgAAQAAABhc3NlcnRpb24gZmFpbGVkOiBzdGFjay5pc19lbXB0eSgpL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL3V0aWwvZGV0ZXJtaW5pemUvbW9kLnJzAMrcIAB1AAAAeAEAAAUAAABTbWFsbEluZGV4UGF0dGVybklEY2Fubm90IGNyZWF0ZSBpdGVyYXRvciBmb3IgUGF0dGVybklEIHdoZW4gbnVtYmVyIG9mIGVsZW1lbnRzIGV4Y2VlZCAAY90gAEQAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvdXRpbC9wcmltaXRpdmVzLnJzsN0gAHAAAADxAgAAAQAAAFBhdHRlcm5JREVycm9yU3RhdGVJRAAAALDdIABwAAAA8gIAAAEAAABTdGF0ZUlERXJyb3IAAAAABAAAAAQAAAASBwAAAAAAAAgAAAAEAAAAEwcAAAAAAAAEAAAABAAAABQHAABQcm9wZXJ0aWVzKSBhcmUgbm90IHN1cHBvcnRlZCBvciBlbmFibGVkFQcAAAgAAAAEAAAAFgcAABcHAAAXBwAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL21ldGEvcmV2ZXJzZV9pbm5lci5ycwDU3iAAcwAAAEsAAAAaAAAAYXNzZXJ0aW9uIGZhaWxlZDogbS5pc19lbXB0eSgpAAB/PygAagAAAKUCAAAJAAAAfz8oAGoAAACmAgAAQAAAAFBhdHRlcm5TZXQgc2hvdWxkIGhhdmUgc3VmZmljaWVudCBjYXBhY2l0eQAAkEAoAGwAAADLBAAADgAAAHF1aXQgc2VhcmNoIGFmdGVyIG9ic2VydmluZyBieXRlICBhdCBvZmZzZXQg1N8gACEAAAD13yAACwAAAGdhdmUgdXAgc2VhcmNoaW5nIGF0IG9mZnNldCAQ4CAAHAAAAGhheXN0YWNrIG9mIGxlbmd0aCAgaXMgdG9vIGxvbmcANOAgABMAAABH4CAADAAAAHVuYW5jaG9yZWQgc2VhcmNoZXMgYXJlIG5vdCBzdXBwb3J0ZWQgb3IgZW5hYmxlZGFuY2hvcmVkIHNlYXJjaGVzIGFyZSBub3Qgc3VwcG9ydGVkIG9yIGVuYWJsZWRhbmNob3JlZCBzZWFyY2hlcyBmb3IgYSBzcGVjaWZpYyBwYXR0ZXJuICjC4CAAKgAAAJ7eIAAeAAAAUGF0dGVyblNldEluc2VydEVycm9yY2FwYWNpdHlOb1llc1BhdHRlcm5BbGwAAAAACAAAAAgAAAAEBwAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL2RmYS9yZW1hcHBlci5ycwAAADjhIABtAAAAbgAAABIAAAA44SAAbQAAAI0AAAAgAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL25mYS90aG9tcHNvbi9idWlsZGVyLnJzbXVzdCBjYWxsICdmaW5pc2hfcGF0dGVybicgZmlyc3QAAAA94iAAIAAAAMjhIAB1AAAAnwEAAAkAAADI4SAAdQAAADICAAAYAAAAyOEgAHUAAAA7AgAALwAAAMjhIAB1AAAAPgIAACQAAADI4SAAdQAAAD4CAAASAAAAyOEgAHUAAABIAgAALwAAAMjhIAB1AAAASQIAABYAAADI4SAAdQAAAEoCAAAZAAAAyOEgAHUAAADGAQAAGgAAAMjhIAB1AAAAyQEAABoAAADI4SAAdQAAANcBAAAaAAAAaW52YWxpZCBjYXB0dXJlIGluZGV4AAAAyOEgAHUAAADfAQAAGgAAAGEgc21hbGwgZW5vdWdoIHNsb3QAyOEgAHUAAADhAQAALwAAAMjhIAB1AAAA4gEAABoAAADI4SAAdQAAAPIBAAAaAAAAyOEgAHUAAAD0AQAAGgAAAMjhIAB1AAAA9gEAAC8AAADI4SAAdQAAAPcBAAAaAAAAyOEgAHUAAAADAgAAMAAAAMjhIAB1AAAAAwIAAB4AAADI4SAAdQAAAAUCAAAeAAAAyOEgAHUAAAAMAgAAHgAAAMjhIAB1AAAAAAIAAB4AAADI4SAAdQAAABQCAAAwAAAAyOEgAHUAAAAUAgAAHgAAAMjhIAB1AAAAFgIAAB4AAADI4SAAdQAAAB4CAAAeAAAAyOEgAHUAAAARAgAAHgAAAMjhIAB1AAAAIgIAABoAAADI4SAAdQAAACUCAAAaAAAAyOEgAHUAAABvAgAACQAAAMjhIAB1AAAAkgIAABsAAABtdXN0IGNhbGwgJ3N0YXJ0X3BhdHRlcm4nIGZpcnN0AMjhIAB1AAAAngIAABkAAADI4SAAdQAAAPkDAAAzAAAAyOEgAHUAAAD/AwAAGgAAAMjhIAB1AAAAfQQAABoAAABjYW5ub3QgcGF0Y2ggZnJvbSBhIHNwYXJzZSBORkEgc3RhdGX05CAAJAAAAMjhIAB1AAAAhQQAABEAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvdXRpbC9jYXB0dXJlcy5ycwAAMOUgAG4AAAB+BwAAMAAAAHgCIQBqAAAAywEAACwAAAB4AiEAagAAANgBAAAJAAAAeAIhAGoAAADZAQAACQAAAHgCIQBqAAAA2gEAAAkAAAB4AiEAagAAANsBAAAJAAAAAAAAAAAAAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL3V0aWwvZGV0ZXJtaW5pemUvc3RhdGUucnMJ5iAAdwAAAPIAAAAjAAAACeYgAHcAAACNAQAACQAAAAnmIAB3AAAAmAEAAAkAAAAJ5iAAdwAAAKcBAAAJAAAACeYgAHcAAACvAQAACQAAAAnmIAB3AAAAvQEAACMAAAAJ5iAAdwAAAMgBAAAjAAAACeYgAHcAAADjAQAANAAAAAnmIAB3AAAADAIAAB8AAAAJ5iAAdwAAABACAAAZAAAACeYgAHcAAAAjAgAAIAAAAAnmIAB3AAAAIwIAADkAAAAJ5iAAdwAAADECAAAvAAAACeYgAHcAAABeAgAADwAAAAnmIAB3AAAAZwIAAA8AAAAJ5iAAdwAAAG8CAAAPAAAACeYgAHcAAACBAgAANQAAAAnmIAB3AAAAhwIAADUAAAAJ5iAAdwAAAMoCAAAxAAAACeYgAHcAAADGAgAACQAAAAnmIAB3AAAAHAMAAB4AAABTbWFsbEluZGV4RXJyb3IAAAAAAAAAAAABAAAAGAcAAFhrKABJAAAA2wcAACkAAABSZWdleEluZm9JcHJvcHNfdW5pb24AAAAAAAAAAQAAAAEAAADXAAAAAAAAAAEAAAABAAAADwcAAA4HAAAQAAAABAAAAMUAAAAAAAAAAQAAAAEAAAAZBwAAAAAAAAgAAAAEAAAAEQcAAAAAAAAIAAAABAAAAAgHAAAAAAAABAAAAAQAAAAuAAAAdXRmOF9lbXB0eWF1dG9wcmV3aGljaF9jYXB0dXJlc25mYV9zaXplX2xpbWl0b25lcGFzc19zaXplX2xpbWl0aHlicmlkX2NhY2hlX2NhcGFjaXR5aHlicmlkZGZhZGZhX3NpemVfbGltaXRkZmFfc3RhdGVfbGltaXRvbmVwYXNzYmFja3RyYWNrbGluZV90ZXJtaW5hdG9yAAAA7AYhAAoAAACI6CAACgAAAJLoIAAHAAAA9gYhAAMAAACZ6CAADgAAAKfoIAAOAAAAteggABIAAADH6CAAFQAAANzoIAAGAAAA4uggAAMAAADl6CAADgAAAPPoIAAPAAAAAukgAAcAAAAJ6SAACQAAADv0IAAMAAAAEukgAA8AAABHcm91cEluZm9Jbm5lcnNsb3RfcmFuZ2VzbmFtZV90b19pbmRleGluZGV4X3RvX25hbWVtZW1vcnlfZXh0cmFTdGFuZGFyZExlZnRtb3N0Rmlyc3RMZWZ0bW9zdExvbmdlc3QAAO4gAGsAAADHBAAAHgAAAADuIABrAAAA6QUAAB4AAABubyBxdWl0IGluIHN0YXJ0IHdpdGhvdXQgbG9vay1iZWhpbmQA7iAAawAAAEUGAAAWAAAAYXNzZXJ0aW9uIGZhaWxlZDogaWQuaXNfbWF0Y2goKQAA7iAAawAAALUGAAAJAAAAbm8gaW4tcHJvZ3Jlc3Mgc2VhcmNoIHRvIHVwZGF0ZQAA7iAAawAAALcHAAAkAAAAbm8gaW4tcHJvZ3Jlc3Mgc2VhcmNoIHRvIGZpbmlzaAAA7iAAawAAAMMHAAAiAAAAAO4gAGsAAACOCgAAHQAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy9oeWJyaWQvc2VhcmNoLnJzAAD86iAAbgAAAFkAAAApAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogc2lkIGJlaW5nIHVua25vd24gaXMgYSBidWd86yAARAAAAPzqIABuAAAAHQEAABEAAAD86iAAbgAAABoBAAAtAAAA/OogAG4AAABXAQAAKQAAAPzqIABuAAAArQEAABEAAAD86iAAbgAAAKoBAAAtAAAA/OogAG4AAAD7AQAAJQAAAPzqIABuAAAAIgIAABEAAAD86iAAbgAAAB0CAAAVAAAA/OogAG4AAADiAgAAFAAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy9tZXRhL2xpbWl0ZWQucnMAAABY7CAAbQAAAI4AAAAlAAAAWOwgAG0AAADoAAAAFAAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JlZ2V4LWF1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LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy9tZXRhL3dyYXBwZXJzLnJzAACg/iAAbgAAAIkAAAAZAAAAoP4gAG4AAABFAQAAHQAAAKD+IABuAAAA+wEAAB0AAACg/iAAbgAAAB8DAAAdAAAAoP4gAG4AAAAsBAAADQAAAKD+IABuAAAAtAQAAB0AAACg/iAAbgAAAEQFAAANAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL25mYS90aG9tcHNvbi9tYXAucnMAAACA/yAAcQAAAJYAAAAJAAAAgP8gAHEAAACfAAAAHgAAAID/IABxAAAAtgAAABEAAACA/yAAcQAAAAgBAAAJAAAAgP8gAHEAAAAUAQAAHgAAAID/IABxAAAAJQEAABEAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvbmZhL3Rob21wc29uL25mYS5ycwAAAFQAIQBxAAAAeQIAABcAAABUACEAcQAAAIMHAAAUAAAAAAAAAAAAAAAAAAAAAgAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy9uZmEvdGhvbXBzb24vcGlrZXZtLnJz+AAhAHQAAACFBAAACgAAAGJ5dGUgc2xpY2UgbGVuZ3RocyBtdXN0IGJlIGxlc3MgdGhhbiB1c2l6ZSBNQVgAAHwBIQAuAAAA+AAhAHQAAADYBAAACQAAAPgAIQB0AAAAhwUAAAkAAAD4ACEAdAAAAMwFAAATAAAA+AAhAHQAAABcBgAAHwAAAPgAIQB0AAAAzwYAAEYAAAD4ACEAdAAAAJwGAAA0AAAA+AAhAHQAAAAwCAAALgAAAHNsb3QgdGFibGUgbGVuZ3RoIGRvZXNuJ3Qgb3ZlcmZsb3cAAPgAIQB0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aWNvZGUgcHJvcGVydHkgdmFsdWUgbm90IGZvdW5kVW5pY29kZS1hd2FyZSBQZXJsIGNsYXNzIG5vdCBmb3VuZCAobWFrZSBzdXJlIHRoZSB1bmljb2RlLXBlcmwgZmVhdHVyZSBpcyBlbmFibGVkKVVuaWNvZGUtYXdhcmUgY2FzZSBpbnNlbnNpdGl2aXR5IG1hdGNoaW5nIGlzIG5vdCBhdmFpbGFibGUgKG1ha2Ugc3VyZSB0aGUgdW5pY29kZS1jYXNlIGZlYXR1cmUgaXMgZW5hYmxlZCkAZM8lAGYAAADyAQAAHgAAAGTPJQBmAAAATwIAAB4AAABDbGFzc1VuaWNvZGVSYW5nZXN0YXJ0ZW5kAAAAZM8lAGYAAAA6BgAANgAAAENsYXNzQnl0ZXNSYW5nZeKIhQAAkxEhAAMAAABkzyUAZgAAAPcLAAASAAAAZM8lAGYAAADoCwAAGQAAAExvb2tDYXB0dXJlU3RhcnRFbmRTdGFydExGRW5kTEZTdGFydENSTEZFbmRDUkxGV29yZEFzY2lpV29yZEFzY2lpTmVnYXRlV29yZFVuaWNvZGVXb3JkVW5pY29kZU5lZ2F0ZVdvcmRTdGFydEFzY2lpV29yZEVuZEFzY2lpV29yZFN0YXJ0VW5pY29kZVdvcmRFbmRVbmljb2RlV29yZFN0YXJ0SGFsZkFzY2lpV29yZEVuZEhhbGZBc2NpaVdvcmRTdGFydEhhbGZVbmljb2RlV29yZEVuZEhhbGZVbmljb2RlaW5kZXhtaW5tYXhncmVlZHmAPCgATAAAALQHAAANAAAAMgYAAAwAAAAEAAAAOgYAAFkGAAB/BgAAAAAAAAAAAAABAAAANgYAAAEAAAABAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmVnZXgtc3ludGF4LTAuOC41L3NyYy9oaXIvbGl0ZXJhbC5yc2Fzc2VydGlvbiBmYWlsZWQ6IHNlcTEubGVuKCkubWFwX29yKHRydWUsIHx4fCB4IDw9IHNlbGYubGltaXRfdG90YWwpAAD0EiEAagAAADkCAAAJAAAA9BIhAGoAAABmAgAACQAAAPQSIQBqAAAAZwYAABgAAAD0EiEAagAAAHQGAAATAAAA9BIhAGoAAABtBgAAGgAAAPQSIQBqAAAAnAYAABgAAAD0EiEAagAAAKoGAAATAAAA9BIhAGoAAACjBgAAGgAAAPQSIQBqAAAAeAcAABEAAAAFAAAACgAAAAQAAAAKAAAAAwAAAEAAAAACAAAAQAAAAAEAAAAKAAAA9BIhAGoAAADOCAAAFQAAAPQSIQBqAAAA3ggAACgAAAD0EiEAagAAAPIIAAAVAAAA9BIhAGoAAADiCAAAHgAAAPQSIQBqAAAA5AgAACcAAAD0EiEAagAAAOQIAAAzAAAA9BIhAGoAAADlCAAANAAAAPQSIQBqAAAA6wgAACAAAAA3NDMyMTAvLi1n8kJD5SwrKikoJyYlJCMiITggHx4dHP+UpJWIoJut3d6GeujK1+DQ3My7t7OxqLLI4sOauK5+eL+dwqq9oqGWwY6Jq7C5p7pwr8C8nIyPe4WAk4qSct+X+dju7P3j2ub3h7Tx6fb054v18/vrycTw1pi2zbV/G9TT0tXkxamfg6xpUGJgYVHPkXRzkIKZeWuEbW58b1Jsdo1xgXd9pXVcalNIY11BT6bto8e+4dHLxtnbzur4nu//////////////////////////////////////////////////////////////////////////////////////dHJpZWQgdG8gdW53cmFwIGV4cHIgZnJvbSBIaXJGcmFtZSwgZ290OiAAAADcFSEAKQAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JlZ2V4LXN5bnRheC0wLjguNS9zcmMvaGlyL3RyYW5zbGF0ZS5ycxAWIQBsAAAAAQEAABIAAAB0cmllZCB0byB1bndyYXAgVW5pY29kZSBjbGFzcyBmcm9tIEhpckZyYW1lLCBnb3Q6IAAAjBYhADIAAAAQFiEAbAAAAAoBAAASAAAAdHJpZWQgdG8gdW53cmFwIGJ5dGUgY2xhc3MgZnJvbSBIaXJGcmFtZSwgZ290OiAA2BYhAC8AAAAQFiEAbAAAABcBAAASAAAAdHJpZWQgdG8gdW53cmFwIHJlcGV0aXRpb24gZnJvbSBIaXJGcmFtZSwgZ290OiAAIBchAC8AAAAQFiEAbAAAACUBAAARAAAAdHJpZWQgdG8gdW53cmFwIGdyb3VwIGZyb20gSGlyRnJhbWUsIGdvdDogAABoFyEAKgAAABAWIQBsAAAANAEAABEAAAB0cmllZCB0byB1bndyYXAgYWx0IHBpcGUgZnJvbSBIaXJGcmFtZSwgZ290OiAAAACsFyEALQAAABAWIQBsAAAAPwEAABEAAAAQFiEAbAAAAE4BAAAnAAAAEBYhAGwAAABPAQAAFwAAABAWIQBsAAAATgEAAAkAAAAQFiEAbAAAAKwBAAAuAAAAEBYhAGwAAACjAQAALgAAABAWIQBsAAAAtwEAACcAAAAQFiEAbAAAALgBAAAcAAAAEBYhAGwAAAC8AQAAJwAAABAWIQBsAAAAvQEAACwAAAAQFiEAbAAAAM4BAAAgAAAAEBYhAGwAAAD+AQAALgAAABAWIQBsAAAA+gEAAC4AAAAQFiEAbAAAAAoCAAAuAAAAEBYhAGwAAAAGAgAALgAAABAWIQBsAAAAGQIAAC4AAAAQFiEAbAAAABQCAAAuAAAAEBYhAGwAAAAgAgAAKgAAABAWIQBsAAAALAIAAC4AAAAQFiEAbAAAACcCAAAuAAAAEBYhAGwAAAA+AgAALwAAABAWIQBsAAAARQIAAC8AAAAQFiEAbAAAADMCAAAvAAAAEBYhAGwAAAA6AgAALwAAABAWIQBsAAAAjAIAACYAAAAQFiEAbAAAAI0CAAAmAAAAEBYhAGwAAACOAgAAJgAAABAWIQBsAAAAcwIAACYAAAAQFiEAbAAAAHQCAAAmAAAAEBYhAGwAAAB1AgAAJgAAABAWIQBsAAAAuAIAABwAAAAQFiEAbAAAAMMCAAAsAAAAEBYhAGwAAADRAgAALAAAABAWIQBsAAAA2wIAABwAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGNvbmNhdCwgZ290IFVuaWNvZGUgY2xhc3MEGiEAVAAAABAWIQBsAAAA6QIAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGNvbmNhdCwgZ290IGJ5dGUgY2xhc3MAAABwGiEAUQAAABAWIQBsAAAA7AIAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGNvbmNhdCwgZ290IHJlcGV0aXRpb24AAADcGiEAUQAAABAWIQBsAAAA7wIAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGNvbmNhdCwgZ290IGdyb3VwSBshAEwAAAAQFiEAbAAAAPICAAARAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgZXhwciBvciBjb25jYXQsIGdvdCBhbHQgbWFya2VyAAAArBshAFEAAAAQFiEAbAAAAPUCAAARAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgZXhwciBvciBjb25jYXQsIGdvdCBhbHQgYnJhbmNoIG1hcmtlchgcIQBYAAAAEBYhAGwAAAD4AgAAEQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGV4cGVjdGVkIGV4cHIgb3IgYWx0LCBnb3QgVW5pY29kZSBjbGFzcwAAAIgcIQBRAAAAEBYhAGwAAAAIAwAAEQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGV4cGVjdGVkIGV4cHIgb3IgYWx0LCBnb3QgYnl0ZSBjbGFzcwAA9BwhAE4AAAAQFiEAbAAAAAsDAAARAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgZXhwciBvciBhbHQsIGdvdCByZXBldGl0aW9uAABcHSEATgAAABAWIQBsAAAADgMAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGFsdCwgZ290IGdyb3VwAAAAxB0hAEkAAAAQFiEAbAAAABEDAAARAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgZXhwciBvciBhbHQsIGdvdCBjb25jYXQgbWFya2VyAAAAKB4hAFEAAAAQFiEAbAAAABQDAAARAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgZXhwciBvciBhbHQsIGdvdCBhbHQgYnJhbmNoIG1hcmtlcgAAAJQeIQBVAAAAEBYhAGwAAAAXAwAAEQAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuZmxhZ3MoKS51bmljb2RlKCkQFiEAbAAAAEMEAAAJAAAABWFzc2VydGlvbiBmYWlsZWQ6ICFzZWxmLmZsYWdzKCkudW5pY29kZSgpAAAQFiEAbAAAAFkEAAAJAAAAMDlBWmF6QVphegB/CQkgIAAff38wOSF+YXogfiEvOkBbYHt+CQkKCgsLDAwNDSAgQVowOUFaX19hejA5QUZhZmEAAABiAAAAYwAAAGUAAABmAAAAZwAAAGgAAABpAAAAagAAAGsAAAAqIQAAbAAAAG0AAABuAAAAbwAAAHAAAABxAAAAcgAAAHMAAAB/AQAAdAAAAHUAAAB2AAAAdwAAAHgAAAB5AAAAegAAAEEAAABCAAAAQwAAAEUAAABGAAAARwAAAEgAAABJAAAASgAAAEsAAAAqIQAATAAAAE0AAABOAAAATwAAAFAAAABRAAAAUgAAAFMAAAB/AQAAVAAAAFUAAABWAAAAVwAAAFgAAABZAAAAWgAAAJwDAAC8AwAA4AAAAOEAAADiAAAA4wAAAOQAAADlAAAAKyEAAOYAAADnAAAA6AAAAOkAAADqAAAA6wAAAOwAAADtAAAA7gAAAO8AAADwAAAA8QAAAPIAAADzAAAA9AAAAPUAAAD2AAAA+AAAAPkAAAD6AAAA+wAAAPwAAAD9AAAA/gAAAJ4eAADAAAAAwQAAAMIAAADDAAAAxAAAAMUAAAArIQAAxgAAAMcAAADIAAAAyQAAAMoAAADLAAAAzAAAAM0AAADOAAAAzwAAANAAAADRAAAA0gAAANMAAADUAAAA1QAAANYAAADYAAAA2QAAANoAAADbAAAA3AAAAN0AAADeAAAAeAEAAAEBAAAAAQAAAwEAAAIBAAAFAQAABAEAAAcBAAAGAQAACQEAAAgBAAALAQAACgEAAA0BAAAMAQAADwEAAA4BAAARAQAAEAEAABMBAAASAQAAFQEAABQBAAAXAQAAFgEAABkBAAAYAQAAGwEAABoBAAAdAQAAHAEAAB8BAAAeAQAAIQEAACABAAAjAQAAIgEAACUBAAAkAQAAJwEAACYBAAApAQAAKAEAACsBAAAqAQAALQEAACwBAAAvAQAALgEAADMBAAAyAQAANQEAADQBAAA3AQAANgEAADoBAAA5AQAAPAEAADsBAAA+AQAAPQEAAEABAAA/AQAAQgEAAEEBAABEAQAAQwEAAEYBAABFAQAASAEAAEcBAABLAQAASgEAAE0BAABMAQAATwEAAE4BAABRAQAAUAEAAFMBAABSAQAAVQEAAFQBAABXAQAAVgEAAFkBAABYAQAAWwEAAFoBAABdAQAAXAEAAF8BAABeAQAAYQEAAGABAABjAQAAYgEAAGUBAABkAQAAZwEAAGYBAABpAQAAaAEAAGsBAABqAQAAbQEAAGwBAABvAQAAbgEAAHEBAABwAQAAcwEAAHIBAAB1AQAAdAEAAHcBAAB2AQAA/wAAAHoBAAB5AQAAfAEAAHsBAAB+AQAAfQEAAFMAAABzAAAAQwIAAFMCAACDAQAAggEAAIUBAACEAQAAVAIAAIgBAACHAQAAVgIAAFcCAACMAQAAiwEAAN0BAABZAgAAWwIAAJIBAACRAQAAYAIAAGMCAAD2AQAAaQIAAGgCAACZAQAAmAEAAD0CAADcpwAAbwIAAHICAAAgAgAAdQIAAKEBAACgAQAAowEAAKIBAAClAQAApAEAAIACAACoAQAApwEAAIMCAACtAQAArAEAAIgCAACwAQAArwEAAIoCAACLAgAAtAEAALMBAAC2AQAAtQEAAJICAAC5AQAAuAEAAL0BAAC8AQAA9wEAAMUBAADGAQAAxAEAAMYBAADEAQAAxQEAAMgBAADJAQAAxwEAAMkBAADHAQAAyAEAAMsBAADMAQAAygEAAMwBAADKAQAAywEAAM4BAADNAQAA0AEAAM8BAADSAQAA0QEAANQBAADTAQAA1gEAANUBAADYAQAA1wEAANoBAADZAQAA3AEAANsBAACOAQAA3wEAAN4BAADhAQAA4AEAAOMBAADiAQAA5QEAAOQBAADnAQAA5gEAAOkBAADoAQAA6wEAAOoBAADtAQAA7AEAAO8BAADuAQAA8gEAAPMBAADxAQAA8wEAAPEBAADyAQAA9QEAAPQBAACVAQAAvwEAAPkBAAD4AQAA+wEAAPoBAAD9AQAA/AEAAP8BAAD+AQAAAQIAAAACAAADAgAAAgIAAAUCAAAEAgAABwIAAAYCAAAJAgAACAIAAAsCAAAKAgAADQIAAAwCAAAPAgAADgIAABECAAAQAgAAEwIAABICAAAVAgAAFAIAABcCAAAWAgAAGQIAABgCAAAbAgAAGgIAAB0CAAAcAgAAHwIAAB4CAACeAQAAIwIAACICAAAlAgAAJAIAACcCAAAmAgAAKQIAACgCAAArAgAAKgIAAC0CAAAsAgAALwIAAC4CAAAxAgAAMAIAADMCAAAyAgAAZSwAADwCAAA7AgAAmgEAAGYsAAB+LAAAfywAAEICAABBAgAAgAEAAIkCAACMAgAARwIAAEYCAABJAgAASAIAAEsCAABKAgAATQIAAEwCAABPAgAATgIAAG8sAABtLAAAcCwAAIEBAACGAQAAiQEAAIoBAACPAQAAkAEAAKunAACTAQAArKcAAJQBAADLpwAAjacAAKqnAACXAQAAlgEAAK6nAABiLAAAracAAJwBAABuLAAAnQEAAJ8BAABkLAAApgEAAMWnAACpAQAAsacAAK4BAABEAgAAsQEAALIBAABFAgAAtwEAALKnAACwpwAAmQMAALkDAAC+HwAAcQMAAHADAABzAwAAcgMAAHcDAAB2AwAA/QMAAP4DAAD/AwAA8wMAAKwDAACtAwAArgMAAK8DAADMAwAAzQMAAM4DAADTHwAAsQMAALIDAADQAwAAswMAALQDAAC1AwAA9QMAALYDAAC3AwAAuAMAANEDAAD0AwAARQMAALkDAAC+HwAAugMAAPADAAC7AwAAtQAAALwDAAC9AwAAvgMAAL8DAADAAwAA1gMAAMEDAADxAwAAwgMAAMMDAADEAwAAxQMAAMYDAADVAwAAxwMAAMgDAADJAwAAJiEAAMoDAADLAwAAhgMAAIgDAACJAwAAigMAAOMfAACRAwAAkgMAANADAACTAwAAlAMAAJUDAAD1AwAAlgMAAJcDAACYAwAA0QMAAPQDAABFAwAAmQMAAL4fAACaAwAA8AMAAJsDAAC1AAAAnAMAAJ0DAACeAwAAnwMAAKADAADWAwAAoQMAAPEDAACjAwAAwwMAAKMDAADCAwAApAMAAKUDAACmAwAA1QMAAKcDAACoAwAAqQMAACYhAACqAwAAqwMAAIwDAACOAwAAjwMAANcDAACSAwAAsgMAAJgDAAC4AwAA9AMAAKYDAADGAwAAoAMAAMADAADPAwAA2QMAANgDAADbAwAA2gMAAN0DAADcAwAA3wMAAN4DAADhAwAA4AMAAOMDAADiAwAA5QMAAOQDAADnAwAA5gMAAOkDAADoAwAA6wMAAOoDAADtAwAA7AMAAO8DAADuAwAAmgMAALoDAAChAwAAwQMAAPkDAAB/AwAAmAMAALgDAADRAwAAlQMAALUDAAD4AwAA9wMAAPIDAAD7AwAA+gMAAHsDAAB8AwAAfQMAAFAEAABRBAAAUgQAAFMEAABUBAAAVQQAAFYEAABXBAAAWAQAAFkEAABaBAAAWwQAAFwEAABdBAAAXgQAAF8EAAAwBAAAMQQAADIEAACAHAAAMwQAADQEAACBHAAANQQAADYEAAA3BAAAOAQAADkEAAA6BAAAOwQAADwEAAA9BAAAPgQAAIIcAAA/BAAAQAQAAEEEAACDHAAAQgQAAIQcAACFHAAAQwQAAEQEAABFBAAARgQAAEcEAABIBAAASQQAAEoEAACGHAAASwQAAEwEAABNBAAATgQAAE8EAAAQBAAAEQQAABIEAACAHAAAEwQAABQEAACBHAAAFQQAABYEAAAXBAAAGAQAABkEAAAaBAAAGwQAABwEAAAdBAAAHgQAAIIcAAAfBAAAIAQAACEEAACDHAAAIgQAAIQcAACFHAAAIwQAACQEAAAlBAAAJgQAACcEAAAoBAAAKQQAACoEAACGHAAAKwQAACwEAAAtBAAALgQAAC8EAAAABAAAAQQAAAIEAAADBAAABAQAAAUEAAAGBAAABwQAAAgEAAAJBAAACgQAAAsEAAAMBAAADQQAAA4EAAAPBAAAYQQAAGAEAABjBAAAhxwAAGIEAACHHAAAZQQAAGQEAABnBAAAZgQAAGkEAABoBAAAawQAAGoEAABtBAAAbAQAAG8EAABuBAAAcQQAAHAEAABzBAAAcgQAAHUEAAB0BAAAdwQAAHYEAAB5BAAAeAQAAHsEAAB6BAAAfQQAAHwEAAB/BAAAfgQAAIEEAACABAAAiwQAAIoEAACNBAAAjAQAAI8EAACOBAAAkQQAAJAEAACTBAAAkgQAAJUEAACUBAAAlwQAAJYEAACZBAAAmAQAAJsEAACaBAAAnQQAAJwEAACfBAAAngQAAKEEAACgBAAAowQAAKIEAAClBAAApAQAAKcEAACmBAAAqQQAAKgEAACrBAAAqgQAAK0EAACsBAAArwQAAK4EAACxBAAAsAQAALMEAACyBAAAtQQAALQEAAC3BAAAtgQAALkEAAC4BAAAuwQAALoEAAC9BAAAvAQAAL8EAAC+BAAAzwQAAMIEAADBBAAAxAQAAMMEAADGBAAAxQQAAMgEAADHBAAAygQAAMkEAADMBAAAywQAAM4EAADNBAAAwAQAANEEAADQBAAA0wQAANIEAADVBAAA1AQAANcEAADWBAAA2QQAANgEAADbBAAA2gQAAN0EAADcBAAA3wQAAN4EAADhBAAA4AQAAOMEAADiBAAA5QQAAOQEAADnBAAA5gQAAOkEAADoBAAA6wQAAOoEAADtBAAA7AQAAO8EAADuBAAA8QQAAPAEAADzBAAA8gQAAPUEAAD0BAAA9wQAAPYEAAD5BAAA+AQAAPsEAAD6BAAA/QQAAPwEAAD/BAAA/gQAAAEFAAAABQAAAwUAAAIFAAAFBQAABAUAAAcFAAAGBQAACQUAAAgFAAALBQAACgUAAA0FAAAMBQAADwUAAA4FAAARBQAAEAUAABMFAAASBQAAFQUAABQFAAAXBQAAFgUAABkFAAAYBQAAGwUAABoFAAAdBQAAHAUAAB8FAAAeBQAAIQUAACAFAAAjBQAAIgUAACUFAAAkBQAAJwUAACYFAAApBQAAKAUAACsFAAAqBQAALQUAACwFAAAvBQAALgUAAGEFAABiBQAAYwUAAGQFAABlBQAAZgUAAGcFAABoBQAAaQUAAGoFAABrBQAAbAUAAG0FAABuBQAAbwUAAHAFAABxBQAAcgUAAHMFAAB0BQAAdQUAAHYFAAB3BQAAeAUAAHkFAAB6BQAAewUAAHwFAAB9BQAAfgUAAH8FAACABQAAgQUAAIIFAACDBQAAhAUAAIUFAACGBQAAMQUAADIFAAAzBQAANAUAADUFAAA2BQAANwUAADgFAAA5BQAAOgUAADsFAAA8BQAAPQUAAD4FAAA/BQAAQAUAAEEFAABCBQAAQwUAAEQFAABFBQAARgUAAEcFAABIBQAASQUAAEoFAABLBQAATAUAAE0FAABOBQAATwUAAFAFAABRBQAAUgUAAFMFAABUBQAAVQUAAFYFAAAALQAAAS0AAAItAAADLQAABC0AAAUtAAAGLQAABy0AAAgtAAAJLQAACi0AAAstAAAMLQAADS0AAA4tAAAPLQAAEC0AABEtAAASLQAAEy0AABQtAAAVLQAAFi0AABctAAAYLQAAGS0AABotAAAbLQAAHC0AAB0tAAAeLQAAHy0AACAtAAAhLQAAIi0AACMtAAAkLQAAJS0AACctAAAtLQAAkBwAAJEcAACSHAAAkxwAAJQcAACVHAAAlhwAAJccAACYHAAAmRwAAJocAACbHAAAnBwAAJ0cAACeHAAAnxwAAKAcAAChHAAAohwAAKMcAACkHAAApRwAAKYcAACnHAAAqBwAAKkcAACqHAAAqxwAAKwcAACtHAAArhwAAK8cAACwHAAAsRwAALIcAACzHAAAtBwAALUcAAC2HAAAtxwAALgcAAC5HAAAuhwAAL0cAAC+HAAAvxwAAHCrAABxqwAAcqsAAHOrAAB0qwAAdasAAHarAAB3qwAAeKsAAHmrAAB6qwAAe6sAAHyrAAB9qwAAfqsAAH+rAACAqwAAgasAAIKrAACDqwAAhKsAAIWrAACGqwAAh6sAAIirAACJqwAAiqsAAIurAACMqwAAjasAAI6rAACPqwAAkKsAAJGrAACSqwAAk6sAAJSrAACVqwAAlqsAAJerAACYqwAAmasAAJqrAACbqwAAnKsAAJ2rAACeqwAAn6sAAKCrAAChqwAAoqsAAKOrAACkqwAApasAAKarAACnqwAAqKsAAKmrAACqqwAAq6sAAKyrAACtqwAArqsAAK+rAACwqwAAsasAALKrAACzqwAAtKsAALWrAAC2qwAAt6sAALirAAC5qwAAuqsAALurAAC8qwAAvasAAL6rAAC/qwAA+BMAAPkTAAD6EwAA+xMAAPwTAAD9EwAA8BMAAPETAADyEwAA8xMAAPQTAAD1EwAAEgQAADIEAAAUBAAANAQAAB4EAAA+BAAAIQQAAEEEAAAiBAAAQgQAAIUcAAAiBAAAQgQAAIQcAAAqBAAASgQAAGIEAABjBAAASqYAAEumAACKHAAAiRwAANAQAADREAAA0hAAANMQAADUEAAA1RAAANYQAADXEAAA2BAAANkQAADaEAAA2xAAANwQAADdEAAA3hAAAN8QAADgEAAA4RAAAOIQAADjEAAA5BAAAOUQAADmEAAA5xAAAOgQAADpEAAA6hAAAOsQAADsEAAA7RAAAO4QAADvEAAA8BAAAPEQAADyEAAA8xAAAPQQAAD1EAAA9hAAAPcQAAD4EAAA+RAAAPoQAAD9EAAA/hAAAP8QAAB9pwAAYywAAManAAABHgAAAB4AAAMeAAACHgAABR4AAAQeAAAHHgAABh4AAAkeAAAIHgAACx4AAAoeAAANHgAADB4AAA8eAAAOHgAAER4AABAeAAATHgAAEh4AABUeAAAUHgAAFx4AABYeAAAZHgAAGB4AABseAAAaHgAAHR4AABweAAAfHgAAHh4AACEeAAAgHgAAIx4AACIeAAAlHgAAJB4AACceAAAmHgAAKR4AACgeAAArHgAAKh4AAC0eAAAsHgAALx4AAC4eAAAxHgAAMB4AADMeAAAyHgAANR4AADQeAAA3HgAANh4AADkeAAA4HgAAOx4AADoeAAA9HgAAPB4AAD8eAAA+HgAAQR4AAEAeAABDHgAAQh4AAEUeAABEHgAARx4AAEYeAABJHgAASB4AAEseAABKHgAATR4AAEweAABPHgAATh4AAFEeAABQHgAAUx4AAFIeAABVHgAAVB4AAFceAABWHgAAWR4AAFgeAABbHgAAWh4AAF0eAABcHgAAXx4AAF4eAABhHgAAmx4AAGAeAACbHgAAYx4AAGIeAABlHgAAZB4AAGceAABmHgAAaR4AAGgeAABrHgAAah4AAG0eAABsHgAAbx4AAG4eAABxHgAAcB4AAHMeAAByHgAAdR4AAHQeAAB3HgAAdh4AAHkeAAB4HgAAex4AAHoeAAB9HgAAfB4AAH8eAAB+HgAAgR4AAIAeAACDHgAAgh4AAIUeAACEHgAAhx4AAIYeAACJHgAAiB4AAIseAACKHgAAjR4AAIweAACPHgAAjh4AAJEeAACQHgAAkx4AAJIeAACVHgAAlB4AAGAeAABhHgAA3wAAAKEeAACgHgAAox4AAKIeAAClHgAApB4AAKceAACmHgAAqR4AAKgeAACrHgAAqh4AAK0eAACsHgAArx4AAK4eAACxHgAAsB4AALMeAACyHgAAtR4AALQeAAC3HgAAth4AALkeAAC4HgAAux4AALoeAAC9HgAAvB4AAL8eAAC+HgAAwR4AAMAeAADDHgAAwh4AAMUeAADEHgAAxx4AAMYeAADJHgAAyB4AAMseAADKHgAAzR4AAMweAADPHgAAzh4AANEeAADQHgAA0x4AANIeAADVHgAA1B4AANceAADWHgAA2R4AANgeAADbHgAA2h4AAN0eAADcHgAA3x4AAN4eAADhHgAA4B4AAOMeAADiHgAA5R4AAOQeAADnHgAA5h4AAOkeAADoHgAA6x4AAOoeAADtHgAA7B4AAO8eAADuHgAA8R4AAPAeAADzHgAA8h4AAPUeAAD0HgAA9x4AAPYeAAD5HgAA+B4AAPseAAD6HgAA/R4AAPweAAD/HgAA/h4AAAgfAAAJHwAACh8AAAsfAAAMHwAADR8AAA4fAAAPHwAAAB8AAAEfAAACHwAAAx8AAAQfAAAFHwAABh8AAAcfAAAYHwAAGR8AABofAAAbHwAAHB8AAB0fAAAQHwAAER8AABIfAAATHwAAFB8AABUfAAAoHwAAKR8AACofAAArHwAALB8AAC0fAAAuHwAALx8AACAfAAAhHwAAIh8AACMfAAAkHwAAJR8AACYfAAAnHwAAOB8AADkfAAA6HwAAOx8AADwfAAA9HwAAPh8AAD8fAAAwHwAAMR8AADIfAAAzHwAANB8AADUfAAA2HwAANx8AAEgfAABJHwAASh8AAEsfAABMHwAATR8AAEAfAABBHwAAQh8AAEMfAABEHwAARR8AAFkfAABbHwAAXR8AAF8fAABRHwAAUx8AAFUfAABXHwAAaB8AAGkfAABqHwAAax8AAGwfAABtHwAAbh8AAG8fAABgHwAAYR8AAGIfAABjHwAAZB8AAGUfAABmHwAAZx8AALofAAC7HwAAyB8AAMkfAADKHwAAyx8AANofAADbHwAA+B8AAPkfAADqHwAA6x8AAPofAAD7HwAAiB8AAIkfAACKHwAAix8AAIwfAACNHwAAjh8AAI8fAACAHwAAgR8AAIIfAACDHwAAhB8AAIUfAACGHwAAhx8AAJgfAACZHwAAmh8AAJsfAACcHwAAnR8AAJ4fAACfHwAAkB8AAJEfAACSHwAAkx8AAJQfAACVHwAAlh8AAJcfAACoHwAAqR8AAKofAACrHwAArB8AAK0fAACuHwAArx8AAKAfAAChHwAAoh8AAKMfAACkHwAApR8AAKYfAACnHwAAuB8AALkfAAC8HwAAsB8AALEfAABwHwAAcR8AALMfAABFAwAAmQMAALkDAADMHwAAch8AAHMfAAB0HwAAdR8AAMMfAADYHwAA2R8AAJADAADQHwAA0R8AAHYfAAB3HwAA6B8AAOkfAACwAwAA7B8AAOAfAADhHwAAeh8AAHsfAADlHwAA/B8AAHgfAAB5HwAAfB8AAH0fAADzHwAAqQMAAMkDAABLAAAAawAAAMUAAADlAAAATiEAADIhAABwIQAAcSEAAHIhAABzIQAAdCEAAHUhAAB2IQAAdyEAAHghAAB5IQAAeiEAAHshAAB8IQAAfSEAAH4hAAB/IQAAYCEAAGEhAABiIQAAYyEAAGQhAABlIQAAZiEAAGchAABoIQAAaSEAAGohAABrIQAAbCEAAG0hAABuIQAAbyEAAIQhAACDIQAA0CQAANEkAADSJAAA0yQAANQkAADVJAAA1iQAANckAADYJAAA2SQAANokAADbJAAA3CQAAN0kAADeJAAA3yQAAOAkAADhJAAA4iQAAOMkAADkJAAA5SQAAOYkAADnJAAA6CQAAOkkAAC2JAAAtyQAALgkAAC5JAAAuiQAALskAAC8JAAAvSQAAL4kAAC/JAAAwCQAAMEkAADCJAAAwyQAAMQkAADFJAAAxiQAAMckAADIJAAAySQAAMokAADLJAAAzCQAAM0kAADOJAAAzyQAADAsAAAxLAAAMiwAADMsAAA0LAAANSwAADYsAAA3LAAAOCwAADksAAA6LAAAOywAADwsAAA9LAAAPiwAAD8sAABALAAAQSwAAEIsAABDLAAARCwAAEUsAABGLAAARywAAEgsAABJLAAASiwAAEssAABMLAAATSwAAE4sAABPLAAAUCwAAFEsAABSLAAAUywAAFQsAABVLAAAViwAAFcsAABYLAAAWSwAAFosAABbLAAAXCwAAF0sAABeLAAAXywAAAAsAAABLAAAAiwAAAMsAAAELAAABSwAAAYsAAAHLAAACCwAAAksAAAKLAAACywAAAwsAAANLAAADiwAAA8sAAAQLAAAESwAABIsAAATLAAAFCwAABUsAAAWLAAAFywAABgsAAAZLAAAGiwAABssAAAcLAAAHSwAAB4sAAAfLAAAICwAACEsAAAiLAAAIywAACQsAAAlLAAAJiwAACcsAAAoLAAAKSwAACosAAArLAAALCwAAC0sAAAuLAAALywAAGEsAABgLAAAawIAAH0dAAB9AgAAOgIAAD4CAABoLAAAZywAAGosAABpLAAAbCwAAGssAABRAgAAcQIAAFACAABSAgAAcywAAHIsAAB2LAAAdSwAAD8CAABAAgAAgSwAAIAsAACDLAAAgiwAAIUsAACELAAAhywAAIYsAACJLAAAiCwAAIssAACKLAAAjSwAAIwsAACPLAAAjiwAAJEsAACQLAAAkywAAJIsAACVLAAAlCwAAJcsAACWLAAAmSwAAJgsAACbLAAAmiwAAJ0sAACcLAAAnywAAJ4sAAChLAAAoCwAAKMsAACiLAAApSwAAKQsAACnLAAApiwAAKksAACoLAAAqywAAKosAACtLAAArCwAAK8sAACuLAAAsSwAALAsAACzLAAAsiwAALUsAAC0LAAAtywAALYsAAC5LAAAuCwAALssAAC6LAAAvSwAALwsAAC/LAAAviwAAMEsAADALAAAwywAAMIsAADFLAAAxCwAAMcsAADGLAAAySwAAMgsAADLLAAAyiwAAM0sAADMLAAAzywAAM4sAADRLAAA0CwAANMsAADSLAAA1SwAANQsAADXLAAA1iwAANksAADYLAAA2ywAANosAADdLAAA3CwAAN8sAADeLAAA4SwAAOAsAADjLAAA4iwAAOwsAADrLAAA7iwAAO0sAADzLAAA8iwAAKAQAAChEAAAohAAAKMQAACkEAAApRAAAKYQAACnEAAAqBAAAKkQAACqEAAAqxAAAKwQAACtEAAArhAAAK8QAACwEAAAsRAAALIQAACzEAAAtBAAALUQAAC2EAAAtxAAALgQAAC5EAAAuhAAALsQAAC8EAAAvRAAAL4QAAC/EAAAwBAAAMEQAADCEAAAwxAAAMQQAADFEAAAxxAAAM0QAABBpgAAQKYAAEOmAABCpgAARaYAAESmAABHpgAARqYAAEmmAABIpgAAiBwAAEumAACIHAAASqYAAE2mAABMpgAAT6YAAE6mAABRpgAAUKYAAFOmAABSpgAAVaYAAFSmAABXpgAAVqYAAFmmAABYpgAAW6YAAFqmAABdpgAAXKYAAF+mAABepgAAYaYAAGCmAABjpgAAYqYAAGWmAABkpgAAZ6YAAGamAABppgAAaKYAAGumAABqpgAAbaYAAGymAACBpgAAgKYAAIOmAACCpgAAhaYAAISmAACHpgAAhqYAAImmAACIpgAAi6YAAIqmAACNpgAAjKYAAI+mAACOpgAAkaYAAJCmAACTpgAAkqYAAJWmAACUpgAAl6YAAJamAACZpgAAmKYAAJumAACapgAAI6cAACKnAAAlpwAAJKcAACenAAAmpwAAKacAACinAAArpwAAKqcAAC2nAAAspwAAL6cAAC6nAAAzpwAAMqcAADWnAAA0pwAAN6cAADanAAA5pwAAOKcAADunAAA6pwAAPacAADynAAA/pwAAPqcAAEGnAABApwAAQ6cAAEKnAABFpwAARKcAAEenAABGpwAASacAAEinAABLpwAASqcAAE2nAABMpwAAT6cAAE6nAABRpwAAUKcAAFOnAABSpwAAVacAAFSnAABXpwAAVqcAAFmnAABYpwAAW6cAAFqnAABdpwAAXKcAAF+nAABepwAAYacAAGCnAABjpwAAYqcAAGWnAABkpwAAZ6cAAGanAABppwAAaKcAAGunAABqpwAAbacAAGynAABvpwAAbqcAAHqnAAB5pwAAfKcAAHunAAB5HQAAf6cAAH6nAACBpwAAgKcAAIOnAACCpwAAhacAAISnAACHpwAAhqcAAIynAACLpwAAZQIAAJGnAACQpwAAk6cAAJKnAADEpwAAl6cAAJanAACZpwAAmKcAAJunAACapwAAnacAAJynAACfpwAAnqcAAKGnAACgpwAAo6cAAKKnAAClpwAApKcAAKenAACmpwAAqacAAKinAABmAgAAXAIAAGECAABsAgAAagIAAJ4CAACHAgAAnQIAAFOrAAC1pwAAtKcAALenAAC2pwAAuacAALinAAC7pwAAuqcAAL2nAAC8pwAAv6cAAL6nAADBpwAAwKcAAMOnAADCpwAAlKcAAIICAACOHQAAyKcAAMenAADKpwAAyacAAGQCAADNpwAAzKcAANGnAADQpwAA16cAANanAADZpwAA2KcAANunAADapwAAmwEAAPanAAD1pwAAs6cAAKATAAChEwAAohMAAKMTAACkEwAApRMAAKYTAACnEwAAqBMAAKkTAACqEwAAqxMAAKwTAACtEwAArhMAAK8TAACwEwAAsRMAALITAACzEwAAtBMAALUTAAC2EwAAtxMAALgTAAC5EwAAuhMAALsTAAC8EwAAvRMAAL4TAAC/EwAAwBMAAMETAADCEwAAwxMAAMQTAADFEwAAxhMAAMcTAADIEwAAyRMAAMoTAADLEwAAzBMAAM0TAADOEwAAzxMAANATAADREwAA0hMAANMTAADUEwAA1RMAANYTAADXEwAA2BMAANkTAADaEwAA2xMAANwTAADdEwAA3hMAAN8TAADgEwAA4RMAAOITAADjEwAA5BMAAOUTAADmEwAA5xMAAOgTAADpEwAA6hMAAOsTAADsEwAA7RMAAO4TAADvEwAABvsAAAX7AABB/wAAQv8AAEP/AABE/wAARf8AAEb/AABH/wAASP8AAEn/AABK/wAAS/8AAEz/AABN/wAATv8AAE//AABQ/wAAUf8AAFL/AABT/wAAVP8AAFX/AABW/wAAV/8AAFj/AABZ/wAAWv8AACH/AAAi/wAAI/8AACT/AAAl/wAAJv8AACf/AAAo/wAAKf8AACr/AAAr/wAALP8AAC3/AAAu/wAAL/8AADD/AAAx/wAAMv8AADP/AAA0/wAANf8AADb/AAA3/wAAOP8AADn/AAA6/wAAKAQBACkEAQAqBAEAKwQBACwEAQAtBAEALgQBAC8EAQAwBAEAMQQBADIEAQAzBAEANAQBADUEAQA2BAEANwQBADgEAQA5BAEAOgQBADsEAQA8BAEAPQQBAD4EAQA/BAEAQAQBAEEEAQBCBAEAQwQBAEQEAQBFBAEARgQBAEcEAQBIBAEASQQBAEoEAQBLBAEATAQBAE0EAQBOBAEATwQBAAAEAQABBAEAAgQBAAMEAQAEBAEABQQBAAYEAQAHBAEACAQBAAkEAQAKBAEACwQBAAwEAQANBAEADgQBAA8EAQAQBAEAEQQBABIEAQATBAEAFAQBABUEAQAWBAEAFwQBABgEAQAZBAEAGgQBABsEAQAcBAEAHQQBAB4EAQAfBAEAIAQBACEEAQAiBAEAIwQBACQEAQAlBAEAJgQBACcEAQDYBAEA2QQBANoEAQDbBAEA3AQBAN0EAQDeBAEA3wQBAOAEAQDhBAEA4gQBAOMEAQDkBAEA5QQBAOYEAQDnBAEA6AQBAOkEAQDqBAEA6wQBAOwEAQDtBAEA7gQBAO8EAQDwBAEA8QQBAPIEAQDzBAEA9AQBAPUEAQD2BAEA9wQBAPgEAQD5BAEA+gQBAPsEAQCwBAEAsQQBALIEAQCzBAEAtAQBALUEAQC2BAEAtwQBALgEAQC5BAEAugQBALsEAQC8BAEAvQQBAL4EAQC/BAEAwAQBAMEEAQDCBAEAwwQBAMQEAQDFBAEAxgQBAMcEAQDIBAEAyQQBAMoEAQDLBAEAzAQBAM0EAQDOBAEAzwQBANAEAQDRBAEA0gQBANMEAQCXBQEAmAUBAJkFAQCaBQEAmwUBAJwFAQCdBQEAngUBAJ8FAQCgBQEAoQUBAKMFAQCkBQEApQUBAKYFAQCnBQEAqAUBAKkFAQCqBQEAqwUBAKwFAQCtBQEArgUBAK8FAQCwBQEAsQUBALMFAQC0BQEAtQUBALYFAQC3BQEAuAUBALkFAQC7BQEAvAUBAHAFAQBxBQEAcgUBAHMFAQB0BQEAdQUBAHYFAQB3BQEAeAUBAHkFAQB6BQEAfAUBAH0FAQB+BQEAfwUBAIAFAQCBBQEAggUBAIMFAQCEBQEAhQUBAIYFAQCHBQEAiAUBAIkFAQCKBQEAjAUBAI0FAQCOBQEAjwUBAJAFAQCRBQEAkgUBAJQFAQCVBQEAwAwBAMEMAQDCDAEAwwwBAMQMAQDFDAEAxgwBAMcMAQDIDAEAyQwBAMoMAQDLDAEAzAwBAM0MAQDODAEAzwwBANAMAQDRDAEA0gwBANMMAQDUDAEA1QwBANYMAQDXDAEA2AwBANkMAQDaDAEA2wwBANwMAQDdDAEA3gwBAN8MAQDgDAEA4QwBAOIMAQDjDAEA5AwBAOUMAQDmDAEA5wwBAOgMAQDpDAEA6gwBAOsMAQDsDAEA7QwBAO4MAQDvDAEA8AwBAPEMAQDyDAEAgAwBAIEMAQCCDAEAgwwBAIQMAQCFDAEAhgwBAIcMAQCIDAEAiQwBAIoMAQCLDAEAjAwBAI0MAQCODAEAjwwBAJAMAQCRDAEAkgwBAJMMAQCUDAEAlQwBAJYMAQCXDAEAmAwBAJkMAQCaDAEAmwwBAJwMAQCdDAEAngwBAJ8MAQCgDAEAoQwBAKIMAQCjDAEApAwBAKUMAQCmDAEApwwBAKgMAQCpDAEAqgwBAKsMAQCsDAEArQwBAK4MAQCvDAEAsAwBALEMAQCyDAEAcA0BAHENAQByDQEAcw0BAHQNAQB1DQEAdg0BAHcNAQB4DQEAeQ0BAHoNAQB7DQEAfA0BAH0NAQB+DQEAfw0BAIANAQCBDQEAgg0BAIMNAQCEDQEAhQ0BAFANAQBRDQEAUg0BAFMNAQBUDQEAVQ0BAFYNAQBXDQEAWA0BAFkNAQBaDQEAWw0BAFwNAQBdDQEAXg0BAF8NAQBgDQEAYQ0BAGINAQBjDQEAZA0BAGUNAQDAGAEAwRgBAMIYAQDDGAEAxBgBAMUYAQDGGAEAxxgBAMgYAQDJGAEAyhgBAMsYAQDMGAEAzRgBAM4YAQDPGAEA0BgBANEYAQDSGAEA0xgBANQYAQDVGAEA1hgBANcYAQDYGAEA2RgBANoYAQDbGAEA3BgBAN0YAQDeGAEA3xgBAKAYAQChGAEAohgBAKMYAQCkGAEApRgBAKYYAQCnGAEAqBgBAKkYAQCqGAEAqxgBAKwYAQCtGAEArhgBAK8YAQCwGAEAsRgBALIYAQCzGAEAtBgBALUYAQC2GAEAtxgBALgYAQC5GAEAuhgBALsYAQC8GAEAvRgBAL4YAQC/GAEAYG4BAGFuAQBibgEAY24BAGRuAQBlbgEAZm4BAGduAQBobgEAaW4BAGpuAQBrbgEAbG4BAG1uAQBubgEAb24BAHBuAQBxbgEAcm4BAHNuAQB0bgEAdW4BAHZuAQB3bgEAeG4BAHluAQB6bgEAe24BAHxuAQB9bgEAfm4BAH9uAQBAbgEAQW4BAEJuAQBDbgEARG4BAEVuAQBGbgEAR24BAEhuAQBJbgEASm4BAEtuAQBMbgEATW4BAE5uAQBPbgEAUG4BAFFuAQBSbgEAU24BAFRuAQBVbgEAVm4BAFduAQBYbgEAWW4BAFpuAQBbbgEAXG4BAF1uAQBebgEAX24BACLpAQAj6QEAJOkBACXpAQAm6QEAJ+kBACjpAQAp6QEAKukBACvpAQAs6QEALekBAC7pAQAv6QEAMOkBADHpAQAy6QEAM+kBADTpAQA16QEANukBADfpAQA46QEAOekBADrpAQA76QEAPOkBAD3pAQA+6QEAP+kBAEDpAQBB6QEAQukBAEPpAQAA6QEAAekBAALpAQAD6QEABOkBAAXpAQAG6QEAB+kBAAjpAQAJ6QEACukBAAvpAQAM6QEADekBAA7pAQAP6QEAEOkBABHpAQAS6QEAE+kBABTpAQAV6QEAFukBABfpAQAY6QEAGekBABrpAQAb6QEAHOkBAB3pAQAe6QEAH+kBACDpAQAh6QEAQQAAALgfIQABAAAAQgAAALwfIQABAAAAQwAAAMAfIQABAAAARAAAABxTJgABAAAARQAAAMQfIQABAAAARgAAAMgfIQABAAAARwAAAMwfIQABAAAASAAAANAfIQABAAAASQAAANQfIQABAAAASgAAANgfIQABAAAASwAAANwfIQACAAAATAAAAOQfIQABAAAATQAAAOgfIQABAAAATgAAAOwfIQABAAAATwAAAPAfIQABAAAAUAAAAPQfIQABAAAAUQAAAPgfIQABAAAAUgAAAPwfIQABAAAAUwAAAAAgIQACAAAAVAAAAAggIQABAAAAVQAAAAwgIQABAAAAVgAAABAgIQABAAAAVwAAABQgIQABAAAAWAAAABggIQABAAAAWQAAABwgIQABAAAAWgAAACAgIQABAAAAYQAAACQgIQABAAAAYgAAACggIQABAAAAYwAAACwgIQABAAAAZAAAABhTJgABAAAAZQAAADAgIQABAAAAZgAAADQgIQABAAAAZwAAADggIQABAAAAaAAAADwgIQABAAAAaQAAAEAgIQABAAAAagAAAEQgIQABAAAAawAAAEggIQACAAAAbAAAAFAgIQABAAAAbQAAAFQgIQABAAAAbgAAAFggIQABAAAAbwAAAFwgIQABAAAAcAAAAGAgIQABAAAAcQAAAGQgIQABAAAAcgAAAGggIQABAAAAcwAAAGwgIQACAAAAdAAAAHQgIQABAAAAdQAAAHggIQABAAAAdgAAAHwgIQABAAAAdwAAAIAgIQABAAAAeAAAAIQgIQABAAAAeQAAAIggIQABAAAAegAAAIwgIQABAAAAtQAAAJAgIQACAAAAwAAAAJggIQABAAAAwQAAAJwgIQABAAAAwgAAAKAgIQABAAAAwwAAAKQgIQABAAAAxAAAAKggIQABAAAAxQAAAKwgIQACAAAAxgAAALQgIQABAAAAxwAAALggIQABAAAAyAAAALwgIQABAAAAyQAAAMAgIQABAAAAygAAAMQgIQABAAAAywAAAMggIQABAAAAzAAAAMwgIQABAAAAzQAAANAgIQABAAAAzgAAANQgIQABAAAAzwAAANggIQABAAAA0AAAANwgIQABAAAA0QAAAOAgIQABAAAA0gAAAOQgIQABAAAA0wAAAOggIQABAAAA1AAAAOwgIQABAAAA1QAAAPAgIQABAAAA1gAAAPQgIQABAAAA2AAAAPggIQABAAAA2QAAAPwgIQABAAAA2gAAAAAhIQABAAAA2wAAAAQhIQABAAAA3AAAAAghIQABAAAA3QAAAAwhIQABAAAA3gAAABAhIQABAAAA3wAAABQhIQABAAAA4AAAABghIQABAAAA4QAAABwhIQABAAAA4gAAACAhIQABAAAA4wAAACQhIQABAAAA5AAAACghIQABAAAA5QAAACwhIQACAAAA5gAAADQhIQABAAAA5wAAADghIQABAAAA6AAAADwhIQABAAAA6QAAAEAhIQABAAAA6gAAAEQhIQABAAAA6wAAAEghIQABAAAA7AAAAEwhIQABAAAA7QAAAFAhIQABAAAA7gAAAFQhIQABAAAA7wAAAFghIQABAAAA8AAAAFwhIQABAAAA8QAAAGAhIQABAAAA8gAAAGQhIQABAAAA8wAAAGghIQABAAAA9AAAAGwhIQABAAAA9QAAAHAhIQABAAAA9gAAAHQhIQABAAAA+AAAAHghIQABAAAA+QAAAHwhIQABAAAA+gAAAIAhIQABAAAA+wAAAIQhIQABAAAA/AAAAIghIQABAAAA/QAAAIwhIQABAAAA/gAAAJAhIQABAAAA/wAAAJQhIQABAAAAAAEAAJghIQABAAAAAQEAAJwhIQABAAAAAgEAAKAhIQABAAAAAwEAAKQhIQABAAAABAEAAKghIQABAAAABQEAAKwhIQABAAAABgEAALAhIQABAAAABwEAALQhIQABAAAACAEAALghIQABAAAACQEAALwhIQABAAAACgEAAMAhIQABAAAACwEAAMQhIQABAAAADAEAAMghIQABAAAADQEAAMwhIQABAAAADgEAANAhIQABAAAADwEAANQhIQABAAAAEAEAANghIQABAAAAEQEAANwhIQABAAAAEgEAAOAhIQABAAAAEwEAAOQhIQABAAAAFAEAAOghIQABAAAAFQEAAOwhIQABAAAAFgEAAPAhIQABAAAAFwEAAPQhIQABAAAAGAEAAPghIQABAAAAGQEAAPwhIQABAAAAGgEAAAAiIQABAAAAGwEAAAQiIQABAAAAHAEAAAgiIQABAAAAHQEAAAwiIQABAAAAHgEAABAiIQABAAAAHwEAABQiIQABAAAAIAEAABgiIQABAAAAIQEAABwiIQABAAAAIgEAACAiIQABAAAAIwEAACQiIQABAAAAJAEAACgiIQABAAAAJQEAACwiIQABAAAAJgEAADAiIQABAAAAJwEAADQiIQABAAAAKAEAADgiIQABAAAAKQEAADwiIQABAAAAKgEAAEAiIQABAAAAKwEAAEQiIQABAAAALAEAAEgiIQABAAAALQEAAEwiIQABAAAALgEAAFAiIQABAAAALwEAAFQiIQABAAAAMgEAAFgiIQABAAAAMwEAAFwiIQABAAAANAEAAGAiIQABAAAANQEAAGQiIQABAAAANgEAAGgiIQABAAAANwEAAGwiIQABAAAAOQEAAHAiIQABAAAAOgEAAHQiIQABAAAAOwEAAHgiIQABAAAAPAEAAHwiIQABAAAAPQEAAIAiIQABAAAAPgEAAIQiIQABAAAAPwEAAIgiIQABAAAAQAEAAIwiIQABAAAAQQEAAJAiIQABAAAAQgEAAJQiIQABAAAAQwEAAJgiIQABAAAARAEAAJwiIQABAAAARQEAAKAiIQABAAAARgEAAKQiIQABAAAARwEAAKgiIQABAAAASAEAAKwiIQABAAAASgEAALAiIQABAAAASwEAALQiIQABAAAATAEAALgiIQABAAAATQEAALwiIQABAAAATgEAAMAiIQABAAAATwEAAMQiIQABAAAAUAEAAMgiIQABAAAAUQEAAMwiIQABAAAAUgEAANAiIQABAAAAUwEAANQiIQABAAAAVAEAANgiIQABAAAAVQEAANwiIQABAAAAVgEAAOAiIQABAAAAVwEAAOQiIQABAAAAWAEAAOgiIQABAAAAWQEAAOwiIQABAAAAWgEAAPAiIQABAAAAWwEAAPQiIQABAAAAXAEAAPgiIQABAAAAXQEAAPwiIQABAAAAXgEAAAAjIQABAAAAXwEAAAQjIQABAAAAYAEAAAgjIQABAAAAYQEAAAwjIQABAAAAYgEAABAjIQABAAAAYwEAABQjIQABAAAAZAEAABgjIQABAAAAZQEAABwjIQABAAAAZgEAACAjIQABAAAAZwEAACQjIQABAAAAaAEAACgjIQABAAAAaQEAACwjIQABAAAAagEAADAjIQABAAAAawEAADQjIQABAAAAbAEAADgjIQABAAAAbQEAADwjIQABAAAAbgEAAEAjIQABAAAAbwEAAEQjIQABAAAAcAEAAEgjIQABAAAAcQEAAEwjIQABAAAAcgEAAFAjIQABAAAAcwEAAFQjIQABAAAAdAEAAFgjIQABAAAAdQEAAFwjIQABAAAAdgEAAGAjIQABAAAAdwEAAGQjIQABAAAAeAEAAGgjIQABAAAAeQEAAGwjIQABAAAAegEAAHAjIQABAAAAewEAAHQjIQABAAAAfAEAAHgjIQABAAAAfQEAAHwjIQABAAAAfgEAAIAjIQABAAAAfwEAAIQjIQACAAAAgAEAAIwjIQABAAAAgQEAAJAjIQABAAAAggEAAJQjIQABAAAAgwEAAJgjIQABAAAAhAEAAJwjIQABAAAAhQEAAKAjIQABAAAAhgEAAKQjIQABAAAAhwEAAKgjIQABAAAAiAEAAKwjIQABAAAAiQEAALAjIQABAAAAigEAALQjIQABAAAAiwEAALgjIQABAAAAjAEAALwjIQABAAAAjgEAAMAjIQABAAAAjwEAAMQjIQABAAAAkAEAAMgjIQABAAAAkQEAAMwjIQABAAAAkgEAANAjIQABAAAAkwEAANQjIQABAAAAlAEAANgjIQABAAAAlQEAANwjIQABAAAAlgEAAOAjIQABAAAAlwEAAOQjIQABAAAAmAEAAOgjIQABAAAAmQEAAOwjIQABAAAAmgEAAPAjIQABAAAAmwEAAPQjIQABAAAAnAEAAPgjIQABAAAAnQEAAPwjIQABAAAAngEAAAAkIQABAAAAnwEAAAQkIQABAAAAoAEAAAgkIQABAAAAoQEAAAwkIQABAAAAogEAABAkIQABAAAAowEAABQkIQABAAAApAEAABgkIQABAAAApQEAABwkIQABAAAApgEAACAkIQABAAAApwEAACQkIQABAAAAqAEAACgkIQABAAAAqQEAACwkIQABAAAArAEAADAkIQABAAAArQEAADQkIQABAAAArgEAADgkIQABAAAArwEAADwkIQABAAAAsAEAAEAkIQABAAAAsQEAAEQkIQABAAAAsgEAAEgkIQABAAAAswEAAEwkIQABAAAAtAEAAFAkIQABAAAAtQEAAFQkIQABAAAAtgEAAFgkIQABAAAAtwEAAFwkIQABAAAAuAEAAGAkIQABAAAAuQEAAGQkIQABAAAAvAEAAGgkIQABAAAAvQEAAGwkIQABAAAAvwEAAHAkIQABAAAAxAEAAHQkIQACAAAAxQEAAHwkIQACAAAAxgEAAIQkIQACAAAAxwEAAIwkIQACAAAAyAEAAJQkIQACAAAAyQEAAJwkIQACAAAAygEAAKQkIQACAAAAywEAAKwkIQACAAAAzAEAALQkIQACAAAAzQEAALwkIQABAAAAzgEAAMAkIQABAAAAzwEAAMQkIQABAAAA0AEAAMgkIQABAAAA0QEAAMwkIQABAAAA0gEAANAkIQABAAAA0wEAANQkIQABAAAA1AEAANgkIQABAAAA1QEAANwkIQABAAAA1gEAAOAkIQABAAAA1wEAAOQkIQABAAAA2AEAAOgkIQABAAAA2QEAAOwkIQABAAAA2gEAAPAkIQABAAAA2wEAAPQkIQABAAAA3AEAAPgkIQABAAAA3QEAAPwkIQABAAAA3gEAAAAlIQABAAAA3wEAAAQlIQABAAAA4AEAAAglIQABAAAA4QEAAAwlIQABAAAA4gEAABAlIQABAAAA4wEAABQlIQABAAAA5AEAABglIQABAAAA5QEAABwlIQABAAAA5gEAACAlIQABAAAA5wEAACQlIQABAAAA6AEAACglIQABAAAA6QEAACwlIQABAAAA6gEAADAlIQABAAAA6wEAADQlIQABAAAA7AEAADglIQABAAAA7QEAADwlIQABAAAA7gEAAEAlIQABAAAA7wEAAEQlIQABAAAA8QEAAEglIQACAAAA8gEAAFAlIQACAAAA8wEAAFglIQACAAAA9AEAAGAlIQABAAAA9QEAAGQlIQABAAAA9gEAAGglIQABAAAA9wEAAGwlIQABAAAA+AEAAHAlIQABAAAA+QEAAHQlIQABAAAA+gEAAHglIQABAAAA+wEAAHwlIQABAAAA/AEAAIAlIQABAAAA/QEAAIQlIQABAAAA/gEAAIglIQABAAAA/wEAAIwlIQABAAAAAAIAAJAlIQABAAAAAQIAAJQlIQABAAAAAgIAAJglIQABAAAAAwIAAJwlIQABAAAABAIAAKAlIQABAAAABQIAAKQlIQABAAAABgIAAKglIQABAAAABwIAAKwlIQABAAAACAIAALAlIQABAAAACQIAALQlIQABAAAACgIAALglIQABAAAACwIAALwlIQABAAAADAIAAMAlIQABAAAADQIAAMQlIQABAAAADgIAAMglIQABAAAADwIAAMwlIQABAAAAEAIAANAlIQABAAAAEQIAANQlIQABAAAAEgIAANglIQABAAAAEwIAANwlIQABAAAAFAIAAOAlIQABAAAAFQIAAOQlIQABAAAAFgIAAOglIQABAAAAFwIAAOwlIQABAAAAGAIAAPAlIQABAAAAGQIAAPQlIQABAAAAGgIAAPglIQABAAAAGwIAAPwlIQABAAAAHAIAAAAmIQABAAAAHQIAAAQmIQABAAAAHgIAAAgmIQABAAAAHwIAAAwmIQABAAAAIAIAABAmIQABAAAAIgIAABQmIQABAAAAIwIAABgmIQABAAAAJAIAABwmIQABAAAAJQIAACAmIQABAAAAJgIAACQmIQABAAAAJwIAACgmIQABAAAAKAIAACwmIQABAAAAKQIAADAmIQABAAAAKgIAADQmIQABAAAAKwIAADgmIQABAAAALAIAADwmIQABAAAALQIAAEAmIQABAAAALgIAAEQmIQABAAAALwIAAEgmIQABAAAAMAIAAEwmIQABAAAAMQIAAFAmIQABAAAAMgIAAFQmIQABAAAAMwIAAFgmIQABAAAAOgIAAFwmIQABAAAAOwIAAGAmIQABAAAAPAIAAGQmIQABAAAAPQIAAGgmIQABAAAAPgIAAGwmIQABAAAAPwIAAHAmIQABAAAAQAIAAHQmIQABAAAAQQIAAHgmIQABAAAAQgIAAHwmIQABAAAAQwIAAIAmIQABAAAARAIAAIQmIQABAAAARQIAAIgmIQABAAAARgIAAIwmIQABAAAARwIAAJAmIQABAAAASAIAAJQmIQABAAAASQIAAJgmIQABAAAASgIAAJwmIQABAAAASwIAAKAmIQABAAAATAIAAKQmIQABAAAATQIAAKgmIQABAAAATgIAAKwmIQABAAAATwIAALAmIQABAAAAUAIAALQmIQABAAAAUQIAALgmIQABAAAAUgIAALwmIQABAAAAUwIAAMAmIQABAAAAVAIAAMQmIQABAAAAVgIAAMgmIQABAAAAVwIAAMwmIQABAAAAWQIAANAmIQABAAAAWwIAANQmIQABAAAAXAIAANgmIQABAAAAYAIAANwmIQABAAAAYQIAAOAmIQABAAAAYwIAAOQmIQABAAAAZAIAAOgmIQABAAAAZQIAAOwmIQABAAAAZgIAAPAmIQABAAAAaAIAAPQmIQABAAAAaQIAAPgmIQABAAAAagIAAPwmIQABAAAAawIAAAAnIQABAAAAbAIAAAQnIQABAAAAbwIAAAgnIQABAAAAcQIAAAwnIQABAAAAcgIAABAnIQABAAAAdQIAABQnIQABAAAAfQIAABgnIQABAAAAgAIAABwnIQABAAAAggIAACAnIQABAAAAgwIAACQnIQABAAAAhwIAACgnIQABAAAAiAIAACwnIQABAAAAiQIAADAnIQABAAAAigIAADQnIQABAAAAiwIAADgnIQABAAAAjAIAADwnIQABAAAAkgIAAEAnIQABAAAAnQIAAEQnIQABAAAAngIAAEgnIQABAAAARQMAAEwnIQADAAAAcAMAAFgnIQABAAAAcQMAAFwnIQABAAAAcgMAAGAnIQABAAAAcwMAAGQnIQABAAAAdgMAAGgnIQABAAAAdwMAAGwnIQABAAAAewMAAHAnIQABAAAAfAMAAHQnIQABAAAAfQMAAHgnIQABAAAAfwMAAHwnIQABAAAAhgMAAIAnIQABAAAAiAMAAIQnIQABAAAAiQMAAIgnIQABAAAAigMAAIwnIQABAAAAjAMAAJAnIQABAAAAjgMAAJQnIQABAAAAjwMAAJgnIQABAAAAkAMAAJwnIQABAAAAkQMAAKAnIQABAAAAkgMAAKQnIQACAAAAkwMAAKwnIQABAAAAlAMAALAnIQABAAAAlQMAALQnIQACAAAAlgMAALwnIQABAAAAlwMAAMAnIQABAAAAmAMAAMQnIQADAAAAmQMAANAnIQADAAAAmgMAANwnIQACAAAAmwMAAOQnIQABAAAAnAMAAOgnIQACAAAAnQMAAPAnIQABAAAAngMAAPQnIQABAAAAnwMAAPgnIQABAAAAoAMAAPwnIQACAAAAoQMAAAQoIQACAAAAowMAAAwoIQACAAAApAMAABQoIQABAAAApQMAABgoIQABAAAApgMAABwoIQACAAAApwMAACQoIQABAAAAqAMAACgoIQABAAAAqQMAACwoIQACAAAAqgMAADQoIQABAAAAqwMAADgoIQABAAAArAMAADwoIQABAAAArQMAAEAoIQABAAAArgMAAEQoIQABAAAArwMAAEgoIQABAAAAsAMAAEwoIQABAAAAsQMAAFAoIQABAAAAsgMAAFQoIQACAAAAswMAAFwoIQABAAAAtAMAAGAoIQABAAAAtQMAAGQoIQACAAAAtgMAAGwoIQABAAAAtwMAAHAoIQABAAAAuAMAAHQoIQADAAAAuQMAAIAoIQADAAAAugMAAIwoIQACAAAAuwMAAJQoIQABAAAAvAMAAJgoIQACAAAAvQMAAKAoIQABAAAAvgMAAKQoIQABAAAAvwMAAKgoIQABAAAAwAMAAKwoIQACAAAAwQMAALQoIQACAAAAwgMAALwoIQACAAAAwwMAAMQoIQACAAAAxAMAAMwoIQABAAAAxQMAANAoIQABAAAAxgMAANQoIQACAAAAxwMAANwoIQABAAAAyAMAAOAoIQABAAAAyQMAAOQoIQACAAAAygMAAOwoIQABAAAAywMAAPAoIQABAAAAzAMAAPQoIQABAAAAzQMAAPgoIQABAAAAzgMAAPwoIQABAAAAzwMAAAApIQABAAAA0AMAAAQpIQACAAAA0QMAAAwpIQADAAAA1QMAABgpIQACAAAA1gMAACApIQACAAAA1wMAACgpIQABAAAA2AMAACwpIQABAAAA2QMAADApIQABAAAA2gMAADQpIQABAAAA2wMAADgpIQABAAAA3AMAADwpIQABAAAA3QMAAEApIQABAAAA3gMAAEQpIQABAAAA3wMAAEgpIQABAAAA4AMAAEwpIQABAAAA4QMAAFApIQABAAAA4gMAAFQpIQABAAAA4wMAAFgpIQABAAAA5AMAAFwpIQABAAAA5QMAAGApIQABAAAA5gMAAGQpIQABAAAA5wMAAGgpIQABAAAA6AMAAGwpIQABAAAA6QMAAHApIQABAAAA6gMAAHQpIQABAAAA6wMAAHgpIQABAAAA7AMAAHwpIQABAAAA7QMAAIApIQABAAAA7gMAAIQpIQABAAAA7wMAAIgpIQABAAAA8AMAAIwpIQACAAAA8QMAAJQpIQACAAAA8gMAAJwpIQABAAAA8wMAAKApIQABAAAA9AMAAKQpIQADAAAA9QMAALApIQACAAAA9wMAALgpIQABAAAA+AMAALwpIQABAAAA+QMAAMApIQABAAAA+gMAAMQpIQABAAAA+wMAAMgpIQABAAAA/QMAAMwpIQABAAAA/gMAANApIQABAAAA/wMAANQpIQABAAAAAAQAANgpIQABAAAAAQQAANwpIQABAAAAAgQAAOApIQABAAAAAwQAAOQpIQABAAAABAQAAOgpIQABAAAABQQAAOwpIQABAAAABgQAAPApIQABAAAABwQAAPQpIQABAAAACAQAAPgpIQABAAAACQQAAPwpIQABAAAACgQAAAAqIQABAAAACwQAAAQqIQABAAAADAQAAAgqIQABAAAADQQAAAwqIQABAAAADgQAABAqIQABAAAADwQAABQqIQABAAAAEAQAABgqIQABAAAAEQQAABwqIQABAAAAEgQAACAqIQACAAAAEwQAACgqIQABAAAAFAQAACwqIQACAAAAFQQAADQqIQABAAAAFgQAADgqIQABAAAAFwQAADwqIQABAAAAGAQAAEAqIQABAAAAGQQAAEQqIQABAAAAGgQAAEgqIQABAAAAGwQAAEwqIQABAAAAHAQAAFAqIQABAAAAHQQAAFQqIQABAAAAHgQAAFgqIQACAAAAHwQAAGAqIQABAAAAIAQAAGQqIQABAAAAIQQAAGgqIQACAAAAIgQAAHAqIQADAAAAIwQAAHwqIQABAAAAJAQAAIAqIQABAAAAJQQAAIQqIQABAAAAJgQAAIgqIQABAAAAJwQAAIwqIQABAAAAKAQAAJAqIQABAAAAKQQAAJQqIQABAAAAKgQAAJgqIQACAAAAKwQAAKAqIQABAAAALAQAAKQqIQABAAAALQQAAKgqIQABAAAALgQAAKwqIQABAAAALwQAALAqIQABAAAAMAQAALQqIQABAAAAMQQAALgqIQABAAAAMgQAALwqIQACAAAAMwQAAMQqIQABAAAANAQAAMgqIQACAAAANQQAANAqIQABAAAANgQAANQqIQABAAAANwQAANgqIQABAAAAOAQAANwqIQABAAAAOQQAAOAqIQABAAAAOgQAAOQqIQABAAAAOwQAAOgqIQABAAAAPAQAAOwqIQABAAAAPQQAAPAqIQABAAAAPgQAAPQqIQACAAAAPwQAAPwqIQABAAAAQAQAAAArIQABAAAAQQQAAAQrIQACAAAAQgQAAAwrIQADAAAAQwQAABgrIQABAAAARAQAABwrIQABAAAARQQAACArIQABAAAARgQAACQrIQABAAAARwQAACgrIQABAAAASAQAACwrIQABAAAASQQAADArIQABAAAASgQAADQrIQACAAAASwQAADwrIQABAAAATAQAAEArIQABAAAATQQAAEQrIQABAAAATgQAAEgrIQABAAAATwQAAEwrIQABAAAAUAQAAFArIQABAAAAUQQAAFQrIQABAAAAUgQAAFgrIQABAAAAUwQAAFwrIQABAAAAVAQAAGArIQABAAAAVQQAAGQrIQABAAAAVgQAAGgrIQABAAAAVwQAAGwrIQABAAAAWAQAAHArIQABAAAAWQQAAHQrIQABAAAAWgQAAHgrIQABAAAAWwQAAHwrIQABAAAAXAQAAIArIQABAAAAXQQAAIQrIQABAAAAXgQAAIgrIQABAAAAXwQAAIwrIQABAAAAYAQAAJArIQABAAAAYQQAAJQrIQABAAAAYgQAAJgrIQACAAAAYwQAAKArIQACAAAAZAQAAKgrIQABAAAAZQQAAKwrIQABAAAAZgQAALArIQABAAAAZwQAALQrIQABAAAAaAQAALgrIQABAAAAaQQAALwrIQABAAAAagQAAMArIQABAAAAawQAAMQrIQABAAAAbAQAAMgrIQABAAAAbQQAAMwrIQABAAAAbgQAANArIQABAAAAbwQAANQrIQABAAAAcAQAANgrIQABAAAAcQQAANwrIQABAAAAcgQAAOArIQABAAAAcwQAAOQrIQABAAAAdAQAAOgrIQABAAAAdQQAAOwrIQABAAAAdgQAAPArIQABAAAAdwQAAPQrIQABAAAAeAQAAPgrIQABAAAAeQQAAPwrIQABAAAAegQAAAAsIQABAAAAewQAAAQsIQABAAAAfAQAAAgsIQABAAAAfQQAAAwsIQABAAAAfgQAABAsIQABAAAAfwQAABQsIQABAAAAgAQAABgsIQABAAAAgQQAABwsIQABAAAAigQAACAsIQABAAAAiwQAACQsIQABAAAAjAQAACgsIQABAAAAjQQAACwsIQABAAAAjgQAADAsIQABAAAAjwQAADQsIQABAAAAkAQAADgsIQABAAAAkQQAADwsIQABAAAAkgQAAEAsIQABAAAAkwQAAEQsIQABAAAAlAQAAEgsIQABAAAAlQQAAEwsIQABAAAAlgQAAFAsIQABAAAAlwQAAFQsIQABAAAAmAQAAFgsIQABAAAAmQQAAFwsIQABAAAAmgQAAGAsIQABAAAAmwQAAGQsIQABAAAAnAQAAGgsIQABAAAAnQQAAGwsIQABAAAAngQAAHAsIQABAAAAnwQAAHQsIQABAAAAoAQAAHgsIQABAAAAoQQAAHwsIQABAAAAogQAAIAsIQABAAAAowQAAIQsIQABAAAApAQAAIgsIQABAAAApQQAAIwsIQABAAAApgQAAJAsIQABAAAApwQAAJQsIQABAAAAqAQAAJgsIQABAAAAqQQAAJwsIQABAAAAqgQAAKAsIQABAAAAqwQAAKQsIQABAAAArAQAAKgsIQABAAAArQQAAKwsIQABAAAArgQAALAsIQABAAAArwQAALQsIQABAAAAsAQAALgsIQABAAAAsQQAALwsIQABAAAAsgQAAMAsIQABAAAAswQAAMQsIQABAAAAtAQAAMgsIQABAAAAtQQAAMwsIQABAAAAtgQAANAsIQABAAAAtwQAANQsIQABAAAAuAQAANgsIQABAAAAuQQAANwsIQABAAAAugQAAOAsIQABAAAAuwQAAOQsIQABAAAAvAQAAOgsIQABAAAAvQQAAOwsIQABAAAAvgQAAPAsIQABAAAAvwQAAPQsIQABAAAAwAQAAPgsIQABAAAAwQQAAPwsIQABAAAAwgQAAAAtIQABAAAAwwQAAAQtIQABAAAAxAQAAAgtIQABAAAAxQQAAAwtIQABAAAAxgQAABAtIQABAAAAxwQAABQtIQABAAAAyAQAABgtIQABAAAAyQQAABwtIQABAAAAygQAACAtIQABAAAAywQAACQtIQABAAAAzAQAACgtIQABAAAAzQQAACwtIQABAAAAzgQAADAtIQABAAAAzwQAADQtIQABAAAA0AQAADgtIQABAAAA0QQAADwtIQABAAAA0gQAAEAtIQABAAAA0wQAAEQtIQABAAAA1AQAAEgtIQABAAAA1QQAAEwtIQABAAAA1gQAAFAtIQABAAAA1wQAAFQtIQABAAAA2AQAAFgtIQABAAAA2QQAAFwtIQABAAAA2gQAAGAtIQABAAAA2wQAAGQtIQABAAAA3AQAAGgtIQABAAAA3QQAAGwtIQABAAAA3gQAAHAtIQABAAAA3wQAAHQtIQABAAAA4AQAAHgtIQABAAAA4QQAAHwtIQABAAAA4gQAAIAtIQABAAAA4wQAAIQtIQABAAAA5AQAAIgtIQABAAAA5QQAAIwtIQABAAAA5gQAAJAtIQABAAAA5wQAAJQtIQABAAAA6AQAAJgtIQABAAAA6QQAAJwtIQABAAAA6gQAAKAtIQABAAAA6wQAAKQtIQABAAAA7AQAAKgtIQABAAAA7QQAAKwtIQABAAAA7gQAALAtIQABAAAA7wQAALQtIQABAAAA8AQAALgtIQABAAAA8QQAALwtIQABAAAA8gQAAMAtIQABAAAA8wQAAMQtIQABAAAA9AQAAMgtIQABAAAA9QQAAMwtIQABAAAA9gQAANAtIQABAAAA9wQAANQtIQABAAAA+AQAANgtIQABAAAA+QQAANwtIQABAAAA+gQAAOAtIQABAAAA+wQAAOQtIQABAAAA/AQAAOgtIQABAAAA/QQAAOwtIQABAAAA/gQAAPAtIQABAAAA/wQAAPQtIQABAAAAAAUAAPgtIQABAAAAAQUAAPwtIQABAAAAAgUAAAAuIQABAAAAAwUAAAQuIQABAAAABAUAAAguIQABAAAABQUAAAwuIQABAAAABgUAABAuIQABAAAABwUAABQuIQABAAAACAUAABguIQABAAAACQUAABwuIQABAAAACgUAACAuIQABAAAACwUAACQuIQABAAAADAUAACguIQABAAAADQUAACwuIQABAAAADgUAADAuIQABAAAADwUAADQuIQABAAAAEAUAADguIQABAAAAEQUAADwuIQABAAAAEgUAAEAuIQABAAAAEwUAAEQuIQABAAAAFAUAAEguIQABAAAAFQUAAEwuIQABAAAAFgUAAFAuIQABAAAAFwUAAFQuIQABAAAAGAUAAFguIQABAAAAGQUAAFwuIQABAAAAGgUAAGAuIQABAAAAGwUAAGQuIQABAAAAHAUAAGguIQABAAAAHQUAAGwuIQABAAAAHgUAAHAuIQABAAAAHwUAAHQuIQABAAAAIAUAAHguIQABAAAAIQUAAHwuIQABAAAAIgUAAIAuIQABAAAAIwUAAIQuIQABAAAAJAUAAIguIQABAAAAJQUAAIwuIQABAAAAJgUAAJAuIQABAAAAJwUAAJQuIQABAAAAKAUAAJguIQABAAAAKQUAAJwuIQABAAAAKgUAAKAuIQABAAAAKwUAAKQuIQABAAAALAUAAKguIQABAAAALQUAAKwuIQABAAAALgUAALAuIQABAAAALwUAALQuIQABAAAAMQUAALguIQABAAAAMgUAALwuIQABAAAAMwUAAMAuIQABAAAANAUAAMQuIQABAAAANQUAAMguIQABAAAANgUAAMwuIQABAAAANwUAANAuIQABAAAAOAUAANQuIQABAAAAOQUAANguIQABAAAAOgUAANwuIQABAAAAOwUAAOAuIQABAAAAPAUAAOQuIQABAAAAPQUAAOguIQABAAAAPgUAAOwuIQABAAAAPwUAAPAuIQABAAAAQAUAAPQuIQABAAAAQQUAAPguIQABAAAAQgUAAPwuIQABAAAAQwUAAAAvIQABAAAARAUAAAQvIQABAAAARQUAAAgvIQABAAAARgUAAAwvIQABAAAARwUAABAvIQABAAAASAUAABQvIQABAAAASQUAABgvIQABAAAASgUAABwvIQABAAAASwUAACAvIQABAAAATAUAACQvIQABAAAATQUAACgvIQABAAAATgUAACwvIQABAAAATwUAADAvIQABAAAAUAUAADQvIQABAAAAUQUAADgvIQABAAAAUgUAADwvIQABAAAAUwUAAEAvIQABAAAAVAUAAEQvIQABAAAAVQUAAEgvIQABAAAAVgUAAEwvIQABAAAAYQUAAFAvIQABAAAAYgUAAFQvIQABAAAAYwUAAFgvIQABAAAAZAUAAFwvIQABAAAAZQUAAGAvIQABAAAAZgUAAGQvIQABAAAAZwUAAGgvIQABAAAAaAUAAGwvIQABAAAAaQUAAHAvIQABAAAAagUAAHQvIQABAAAAawUAAHgvIQABAAAAbAUAAHwvIQABAAAAbQUAAIAvIQABAAAAbgUAAIQvIQABAAAAbwUAAIgvIQABAAAAcAUAAIwvIQABAAAAcQUAAJAvIQABAAAAcgUAAJQvIQABAAAAcwUAAJgvIQABAAAAdAUAAJwvIQABAAAAdQUAAKAvIQABAAAAdgUAAKQvIQABAAAAdwUAAKgvIQABAAAAeAUAAKwvIQABAAAAeQUAALAvIQABAAAAegUAALQvIQABAAAAewUAALgvIQABAAAAfAUAALwvIQABAAAAfQUAAMAvIQABAAAAfgUAAMQvIQABAAAAfwUAAMgvIQABAAAAgAUAAMwvIQABAAAAgQUAANAvIQABAAAAggUAANQvIQABAAAAgwUAANgvIQABAAAAhAUAANwvIQABAAAAhQUAAOAvIQABAAAAhgUAAOQvIQABAAAAoBAAAOgvIQABAAAAoRAAAOwvIQABAAAAohAAAPAvIQABAAAAoxAAAPQvIQABAAAApBAAAPgvIQABAAAApRAAAPwvIQABAAAAphAAAAAwIQABAAAApxAAAAQwIQABAAAAqBAAAAgwIQABAAAAqRAAAAwwIQABAAAAqhAAABAwIQABAAAAqxAAABQwIQABAAAArBAAABgwIQABAAAArRAAABwwIQABAAAArhAAACAwIQABAAAArxAAACQwIQABAAAAsBAAACgwIQABAAAAsRAAACwwIQABAAAAshAAADAwIQABAAAAsxAAADQwIQABAAAAtBAAADgwIQABAAAAtRAAADwwIQABAAAAthAAAEAwIQABAAAAtxAAAEQwIQAB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AAAA+hMAAKAyIQABAAAA+xMAAKQyIQABAAAA/BMAAKgyIQABAAAA/RMAAKwyIQABAAAAgBwAALAyIQACAAAAgRwAALgyIQACAAAAghwAAMAyIQACAAAAgxwAAMgyIQACAAAAhBwAANAyIQADAAAAhRwAANwyIQADAAAAhhwAAOgyIQACAAAAhxwAAPAyIQACAAAAiBwAAPgyIQACAAAAiRwAAAAzIQABAAAAihwAAAQzIQABAAAAkBwAAAgzIQABAAAAkRwAAAwzIQABAAAAkhwAABAzIQABAAAAkxwAABQzIQABAAAAlBwAABgzIQABAAAAlRwAABwzIQABAAAAlhwAACAzIQABAAAAlxwAACQzIQABAAAAmBwAACgzIQABAAAAmRwAACwzIQABAAAAmhwAADAzIQABAAAAmxwAADQzIQABAAAAnBwAADgzIQABAAAAnRwAADwzIQABAAAAnhwAAEAzIQABAAAAnxwAAEQzIQABAAAAoBwAAEgzIQABAAAAoRwAAEwzIQABAAAAohwAAFAzIQABAAAAoxwAAFQzIQABAAAApBwAAFgzIQABAAAApRwAAFwzIQABAAAAphwAAGAzIQABAAAApxwAAGQzIQABAAAAqBwAAGgzIQABAAAAqRwAAGwzIQABAAAAqhwAAHAzIQABAAAAqxwAAHQzIQABAAAArBwAAHgzIQABAAAArRwAAHwzIQABAAAArhwAAIAzIQABAAAArxwAAIQzIQABAAAAsBwAAIgzIQABAAAAsRwAAIwzIQABAAAAshwAAJAzIQABAAAAsxwAAJQzIQABAAAAtBwAAJgzIQABAAAAtRwAAJwzIQABAAAAthwAAKAzIQABAAAAtxwAAKQzIQABAAAAuBwAAKgzIQABAAAAuRwAAKwzIQABAAAAuhwAALAzIQABAAAAvRwAALQzIQABAAAAvhwAALgzIQABAAAAvxwAALwzIQABAAAAeR0AAMAzIQABAAAAfR0AAMQzIQABAAAAjh0AAMgzIQABAAAAAB4AAMwzIQABAAAAAR4AANAzIQABAAAAAh4AANQzIQABAAAAAx4AANgzIQABAAAABB4AANwzIQABAAAABR4AAOAzIQABAAAABh4AAOQzIQABAAAABx4AAOgzIQABAAAACB4AAOwzIQABAAAACR4AAPAzIQABAAAACh4AAPQzIQABAAAACx4AAPgzIQABAAAADB4AAPwzIQABAAAADR4AAAA0IQABAAAADh4AAAQ0IQABAAAADx4AAAg0IQABAAAAEB4AAAw0IQABAAAAER4AABA0IQABAAAAEh4AABQ0IQABAAAAEx4AABg0IQABAAAAFB4AABw0IQABAAAAFR4AACA0IQABAAAAFh4AACQ0IQABAAAAFx4AACg0IQABAAAAGB4AACw0IQABAAAAGR4AADA0IQABAAAAGh4AADQ0IQABAAAAGx4AADg0IQABAAAAHB4AADw0IQABAAAAHR4AAEA0IQABAAAAHh4AAEQ0IQABAAAAHx4AAEg0IQABAAAAIB4AAEw0IQABAAAAIR4AAFA0IQABAAAAIh4AAFQ0IQABAAAAIx4AAFg0IQABAAAAJB4AAFw0IQABAAAAJR4AAGA0IQABAAAAJh4AAGQ0IQABAAAAJx4AAGg0IQABAAAAKB4AAGw0IQABAAAAKR4AAHA0IQABAAAAKh4AAHQ0IQABAAAAKx4AAHg0IQABAAAALB4AAHw0IQABAAAALR4AAIA0IQABAAAALh4AAIQ0IQABAAAALx4AAIg0IQABAAAAMB4AAIw0IQABAAAAMR4AAJA0IQABAAAAMh4AAJQ0IQABAAAAMx4AAJg0IQABAAAANB4AAJw0IQABAAAANR4AAKA0IQABAAAANh4AAKQ0IQABAAAANx4AAKg0IQABAAAAOB4AAKw0IQABAAAAOR4AALA0IQABAAAAOh4AALQ0IQABAAAAOx4AALg0IQABAAAAPB4AALw0IQABAAAAPR4AAMA0IQABAAAAPh4AAMQ0IQABAAAAPx4AAMg0IQABAAAAQB4AAMw0IQABAAAAQR4AANA0IQABAAAAQh4AANQ0IQABAAAAQx4AANg0IQABAAAARB4AANw0IQABAAAARR4AAOA0IQABAAAARh4AAOQ0IQABAAAARx4AAOg0IQABAAAASB4AAOw0IQABAAAASR4AAPA0IQABAAAASh4AAPQ0IQABAAAASx4AAPg0IQABAAAATB4AAPw0IQABAAAATR4AAAA1IQABAAAATh4AAAQ1IQABAAAATx4AAAg1IQABAAAAUB4AAAw1IQABAAAAUR4AABA1IQABAAAAUh4AABQ1IQABAAAAUx4AABg1IQABAAAAVB4AABw1IQABAAAAVR4AACA1IQABAAAAVh4AACQ1IQABAAAAVx4AACg1IQABAAAAWB4AACw1IQABAAAAWR4AADA1IQABAAAAWh4AADQ1IQABAAAAWx4AADg1IQABAAAAXB4AADw1IQABAAAAXR4AAEA1IQABAAAAXh4AAEQ1IQABAAAAXx4AAEg1IQABAAAAYB4AAEw1IQACAAAAYR4AAFQ1IQACAAAAYh4AAFw1IQABAAAAYx4AAGA1IQABAAAAZB4AAGQ1IQABAAAAZR4AAGg1IQABAAAAZh4AAGw1IQABAAAAZx4AAHA1IQABAAAAaB4AAHQ1IQABAAAAaR4AAHg1IQABAAAAah4AAHw1IQABAAAAax4AAIA1IQABAAAAbB4AAIQ1IQABAAAAbR4AAIg1IQABAAAAbh4AAIw1IQABAAAAbx4AAJA1IQABAAAAcB4AAJQ1IQABAAAAcR4AAJg1IQABAAAAch4AAJw1IQABAAAAcx4AAKA1IQABAAAAdB4AAKQ1IQABAAAAdR4AAKg1IQABAAAAdh4AAKw1IQABAAAAdx4AALA1IQABAAAAeB4AALQ1IQABAAAAeR4AALg1IQABAAAAeh4AALw1IQABAAAAex4AAMA1IQABAAAAfB4AAMQ1IQABAAAAfR4AAMg1IQABAAAAfh4AAMw1IQABAAAAfx4AANA1IQABAAAAgB4AANQ1IQABAAAAgR4AANg1IQABAAAAgh4AANw1IQABAAAAgx4AAOA1IQABAAAAhB4AAOQ1IQABAAAAhR4AAOg1IQABAAAAhh4AAOw1IQABAAAAhx4AAPA1IQABAAAAiB4AAPQ1IQABAAAAiR4AAPg1IQABAAAAih4AAPw1IQABAAAAix4AAAA2IQABAAAAjB4AAAQ2IQABAAAAjR4AAAg2IQABAAAAjh4AAAw2IQABAAAAjx4AABA2IQABAAAAkB4AABQ2IQABAAAAkR4AABg2IQABAAAAkh4AABw2IQABAAAAkx4AACA2IQABAAAAlB4AACQ2IQABAAAAlR4AACg2IQABAAAAmx4AACw2IQACAAAAnh4AADQ2IQABAAAAoB4AADg2IQABAAAAoR4AADw2IQABAAAAoh4AAEA2IQABAAAAox4AAEQ2IQABAAAApB4AAEg2IQABAAAApR4AAEw2IQABAAAAph4AAFA2IQABAAAApx4AAFQ2IQABAAAAqB4AAFg2IQABAAAAqR4AAFw2IQABAAAAqh4AAGA2IQABAAAAqx4AAGQ2IQABAAAArB4AAGg2IQABAAAArR4AAGw2IQABAAAArh4AAHA2IQABAAAArx4AAHQ2IQABAAAAsB4AAHg2IQABAAAAsR4AAHw2IQABAAAAsh4AAIA2IQABAAAAsx4AAIQ2IQABAAAAtB4AAIg2IQABAAAAtR4AAIw2IQABAAAAth4AAJA2IQABAAAAtx4AAJQ2IQABAAAAuB4AAJg2IQABAAAAuR4AAJw2IQABAAAAuh4AAKA2IQABAAAAux4AAKQ2IQABAAAAvB4AAKg2IQABAAAAvR4AAKw2IQABAAAAvh4AALA2IQABAAAAvx4AALQ2IQABAAAAwB4AALg2IQABAAAAwR4AALw2IQABAAAAwh4AAMA2IQABAAAAwx4AAMQ2IQABAAAAxB4AAMg2IQABAAAAxR4AAMw2IQABAAAAxh4AANA2IQABAAAAxx4AANQ2IQABAAAAyB4AANg2IQABAAAAyR4AANw2IQABAAAAyh4AAOA2IQABAAAAyx4AAOQ2IQABAAAAzB4AAOg2IQABAAAAzR4AAOw2IQABAAAAzh4AAPA2IQABAAAAzx4AAPQ2IQABAAAA0B4AAPg2IQABAAAA0R4AAPw2IQABAAAA0h4AAAA3IQABAAAA0x4AAAQ3IQABAAAA1B4AAAg3IQABAAAA1R4AAAw3IQABAAAA1h4AABA3IQABAAAA1x4AABQ3IQABAAAA2B4AABg3IQABAAAA2R4AABw3IQABAAAA2h4AACA3IQABAAAA2x4AACQ3IQABAAAA3B4AACg3IQABAAAA3R4AACw3IQABAAAA3h4AADA3IQABAAAA3x4AADQ3IQABAAAA4B4AADg3IQABAAAA4R4AADw3IQABAAAA4h4AAEA3IQABAAAA4x4AAEQ3IQABAAAA5B4AAEg3IQABAAAA5R4AAEw3IQABAAAA5h4AAFA3IQABAAAA5x4AAFQ3IQABAAAA6B4AAFg3IQABAAAA6R4AAFw3IQABAAAA6h4AAGA3IQABAAAA6x4AAGQ3IQABAAAA7B4AAGg3IQABAAAA7R4AAGw3IQABAAAA7h4AAHA3IQABAAAA7x4AAHQ3IQABAAAA8B4AAHg3IQABAAAA8R4AAHw3IQABAAAA8h4AAIA3IQABAAAA8x4AAIQ3IQABAAAA9B4AAIg3IQABAAAA9R4AAIw3IQABAAAA9h4AAJA3IQABAAAA9x4AAJQ3IQABAAAA+B4AAJg3IQABAAAA+R4AAJw3IQABAAAA+h4AAKA3IQABAAAA+x4AAKQ3IQABAAAA/B4AAKg3IQABAAAA/R4AAKw3IQABAAAA/h4AALA3IQABAAAA/x4AALQ3IQABAAAAAB8AALg3IQABAAAAAR8AALw3IQABAAAAAh8AAMA3IQABAAAAAx8AAMQ3IQABAAAABB8AAMg3IQABAAAABR8AAMw3IQABAAAABh8AANA3IQABAAAABx8AANQ3IQABAAAACB8AANg3IQABAAAACR8AANw3IQABAAAACh8AAOA3IQABAAAACx8AAOQ3IQABAAAADB8AAOg3IQABAAAADR8AAOw3IQABAAAADh8AAPA3IQABAAAADx8AAPQ3IQABAAAAEB8AAPg3IQABAAAAER8AAPw3IQABAAAAEh8AAAA4IQABAAAAEx8AAAQ4IQABAAAAFB8AAAg4IQABAAAAFR8AAAw4IQABAAAAGB8AABA4IQABAAAAGR8AABQ4IQABAAAAGh8AABg4IQABAAAAGx8AABw4IQABAAAAHB8AACA4IQABAAAAHR8AACQ4IQABAAAAIB8AACg4IQABAAAAIR8AACw4IQABAAAAIh8AADA4IQABAAAAIx8AADQ4IQABAAAAJB8AADg4IQABAAAAJR8AADw4IQABAAAAJh8AAEA4IQABAAAAJx8AAEQ4IQABAAAAKB8AAEg4IQABAAAAKR8AAEw4IQABAAAAKh8AAFA4IQABAAAAKx8AAFQ4IQABAAAALB8AAFg4IQABAAAALR8AAFw4IQABAAAALh8AAGA4IQABAAAALx8AAGQ4IQABAAAAMB8AAGg4IQABAAAAMR8AAGw4IQABAAAAMh8AAHA4IQABAAAAMx8AAHQ4IQABAAAANB8AAHg4IQABAAAANR8AAHw4IQABAAAANh8AAIA4IQABAAAANx8AAIQ4IQABAAAAOB8AAIg4IQABAAAAOR8AAIw4IQABAAAAOh8AAJA4IQABAAAAOx8AAJQ4IQABAAAAPB8AAJg4IQABAAAAPR8AAJw4IQABAAAAPh8AAKA4IQABAAAAPx8AAKQ4IQABAAAAQB8AAKg4IQABAAAAQR8AAKw4IQABAAAAQh8AALA4IQAB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AAAAAiwAAEw8IQABAAAAAywAAFA8IQABAAAABCwAAFQ8IQABAAAABSwAAFg8IQABAAAABiwAAFw8IQABAAAABywAAGA8IQABAAAACCwAAGQ8IQABAAAACSwAAGg8IQABAAAACiwAAGw8IQABAAAACywAAHA8IQABAAAADCwAAHQ8IQABAAAADSwAAHg8IQABAAAADiwAAHw8IQABAAAADywAAIA8IQABAAAAECwAAIQ8IQABAAAAESwAAIg8IQABAAAAEiwAAIw8IQABAAAAEywAAJA8IQABAAAAFCwAAJQ8IQABAAAAFSwAAJg8IQABAAAAFiwAAJw8IQABAAAAFywAAKA8IQABAAAAGCwAAKQ8IQABAAAAGSwAAKg8IQABAAAAGiwAAKw8IQABAAAAGywAALA8IQABAAAAHCwAALQ8IQABAAAAHSwAALg8IQABAAAAHiwAALw8IQABAAAAHywAAMA8IQABAAAAICwAAMQ8IQABAAAAISwAAMg8IQABAAAAIiwAAMw8IQABAAAAIywAANA8IQABAAAAJCwAANQ8IQABAAAAJSwAANg8IQABAAAAJiwAANw8IQABAAAAJywAAOA8IQABAAAAKCwAAOQ8IQABAAAAKSwAAOg8IQABAAAAKiwAAOw8IQABAAAAKywAAPA8IQABAAAALCwAAPQ8IQABAAAALSwAAPg8IQABAAAALiwAAPw8IQABAAAALywAAAA9IQABAAAAMCwAAAQ9IQABAAAAMSwAAAg9IQABAAAAMiwAAAw9IQABAAAAMywAABA9IQABAAAANCwAABQ9IQABAAAANSwAABg9IQABAAAANiwAABw9IQABAAAANywAACA9IQABAAAAOCwAACQ9IQABAAAAOSwAACg9IQABAAAAOiwAACw9IQABAAAAOywAADA9IQABAAAAPCwAADQ9IQABAAAAPSwAADg9IQABAAAAPiwAADw9IQABAAAAPywAAEA9IQABAAAAQCwAAEQ9IQABAAAAQSwAAEg9IQABAAAAQiwAAEw9IQABAAAAQywAAFA9IQABAAAARCwAAFQ9IQABAAAARSwAAFg9IQABAAAARiwAAFw9IQABAAAARywAAGA9IQABAAAASCwAAGQ9IQABAAAASSwAAGg9IQABAAAASiwAAGw9IQABAAAASywAAHA9IQABAAAATCwAAHQ9IQAB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AAAAAi0AANA/IQABAAAAAy0AANQ/IQABAAAABC0AANg/IQABAAAABS0AANw/IQABAAAABi0AAOA/IQABAAAABy0AAOQ/IQABAAAACC0AAOg/IQABAAAACS0AAOw/IQABAAAACi0AAPA/IQABAAAACy0AAPQ/IQABAAAADC0AAPg/IQABAAAADS0AAPw/IQABAAAADi0AAABAIQABAAAADy0AAARAIQABAAAAEC0AAAhAIQABAAAAES0AAAxAIQABAAAAEi0AABBAIQABAAAAEy0AABRAIQABAAAAFC0AABhAIQABAAAAFS0AABxAIQABAAAAFi0AACBAIQABAAAAFy0AACRAIQABAAAAGC0AAChAIQABAAAAGS0AACxAIQABAAAAGi0AADBAIQABAAAAGy0AADRAIQABAAAAHC0AADhAIQABAAAAHS0AADxAIQABAAAAHi0AAEBAIQABAAAAHy0AAERAIQABAAAAIC0AAEhAIQABAAAAIS0AAExAIQABAAAAIi0AAFBAIQABAAAAIy0AAFRAIQABAAAAJC0AAFhAIQABAAAAJS0AAFxAIQABAAAAJy0AAGBAIQABAAAALS0AAGRAIQABAAAAQKYAAGhAIQABAAAAQaYAAGxAIQABAAAAQqYAAHBAIQABAAAAQ6YAAHRAIQABAAAARKYAAHhAIQABAAAARaYAAHxAIQABAAAARqYAAIBAIQABAAAAR6YAAIRAIQABAAAASKYAAIhAIQABAAAASaYAAIxAIQABAAAASqYAAJBAIQACAAAAS6YAAJhAIQACAAAATKYAAKBAIQABAAAATaYAAKRAIQABAAAATqYAAKhAIQABAAAAT6YAAKxAIQABAAAAUKYAALBAIQABAAAAUaYAALRAIQABAAAAUqYAALhAIQABAAAAU6YAALxAIQABAAAAVKYAAMBAIQABAAAAVaYAAMRAIQABAAAAVqYAAMhAIQABAAAAV6YAAMxAIQABAAAAWKYAANBAIQABAAAAWaYAANRAIQABAAAAWqYAANhAIQABAAAAW6YAANxAIQABAAAAXKYAAOBAIQABAAAAXaYAAORAIQABAAAAXqYAAOhAIQABAAAAX6YAAOxAIQABAAAAYKYAAPBAIQABAAAAYaYAAPRAIQABAAAAYqYAAPhAIQABAAAAY6YAAPxAIQABAAAAZKYAAABBIQABAAAAZaYAAARBIQABAAAAZqYAAAhBIQABAAAAZ6YAAAxBIQABAAAAaKYAABBBIQABAAAAaaYAABRBIQABAAAAaqYAABhBIQABAAAAa6YAABxBIQABAAAAbKYAACBBIQABAAAAbaYAACRBIQABAAAAgKYAAChBIQABAAAAgaYAACxBIQABAAAAgqYAADBBIQABAAAAg6YAADRBIQABAAAAhKYAADhBIQABAAAAhaYAADxBIQABAAAAhqYAAEBBIQABAAAAh6YAAERBIQABAAAAiKYAAEhBIQABAAAAiaYAAExBIQABAAAAiqYAAFBBIQABAAAAi6YAAFRBIQABAAAAjKYAAFhBIQABAAAAjaYAAFxBIQABAAAAjqYAAGBBIQABAAAAj6YAAGRBIQABAAAAkKYAAGhBIQABAAAAkaYAAGxBIQABAAAAkqYAAHBBIQABAAAAk6YAAHRBIQABAAAAlKYAAHhBIQABAAAAlaYAAHxBIQABAAAAlqYAAIBBIQABAAAAl6YAAIRBIQABAAAAmKYAAIhBIQABAAAAmaYAAIxBIQABAAAAmqYAAJBBIQABAAAAm6YAAJRBIQABAAAAIqcAAJhBIQABAAAAI6cAAJxBIQABAAAAJKcAAKBBIQABAAAAJacAAKRBIQABAAAAJqcAAKhBIQABAAAAJ6cAAKxBIQABAAAAKKcAALBBIQABAAAAKacAALRBIQABAAAAKqcAALhBIQABAAAAK6cAALxBIQABAAAALKcAAMBBIQABAAAALacAAMRBIQABAAAALqcAAMhBIQABAAAAL6cAAMxBIQABAAAAMqcAANBBIQABAAAAM6cAANRBIQABAAAANKcAANhBIQABAAAANacAANxBIQABAAAANqcAAOBBIQABAAAAN6cAAORBIQABAAAAOKcAAOhBIQABAAAAOacAAOxBIQABAAAAOqcAAPBBIQABAAAAO6cAAPRBIQABAAAAPKcAAPhBIQABAAAAPacAAPxBIQABAAAAPqcAAABCIQABAAAAP6cAAARCIQABAAAAQKcAAAhCIQABAAAAQacAAAxCIQABAAAAQqcAABBCIQABAAAAQ6cAABRCIQABAAAARKcAABhCIQABAAAARacAABxCIQABAAAARqcAACBCIQABAAAAR6cAACRCIQABAAAASKcAAChCIQABAAAASacAACxCIQABAAAASqcAADBCIQABAAAAS6cAADRCIQABAAAATKcAADhCIQABAAAATacAADxCIQABAAAATqcAAEBCIQABAAAAT6cAAERCIQABAAAAUKcAAEhCIQABAAAAUacAAExCIQABAAAAUqcAAFBCIQABAAAAU6cAAFRCIQABAAAAVKcAAFhCIQABAAAAVacAAFxCIQABAAAAVqcAAGBCIQABAAAAV6cAAGRCIQABAAAAWKcAAGhCIQABAAAAWacAAGxCIQABAAAAWqcAAHBCIQABAAAAW6cAAHRCIQABAAAAXKcAAHhCIQABAAAAXacAAHxCIQABAAAAXqcAAIBCIQABAAAAX6cAAIRCIQABAAAAYKcAAIhCIQABAAAAYacAAIxCIQABAAAAYqcAAJBCIQABAAAAY6cAAJRCIQABAAAAZKcAAJhCIQABAAAAZacAAJxCIQABAAAAZqcAAKBCIQABAAAAZ6cAAKRCIQABAAAAaKcAAKhCIQABAAAAaacAAKxCIQABAAAAaqcAALBCIQABAAAAa6cAALRCIQABAAAAbKcAALhCIQABAAAAbacAALxCIQABAAAAbqcAAMBCIQABAAAAb6cAAMRCIQABAAAAeacAAMhCIQABAAAAeqcAAMxCIQABAAAAe6cAANBCIQABAAAAfKcAANRCIQABAAAAfacAANhCIQABAAAAfqcAANxCIQABAAAAf6cAAOBCIQABAAAAgKcAAORCIQABAAAAgacAAOhCIQABAAAAgqcAAOxCIQABAAAAg6cAAPBCIQABAAAAhKcAAPRCIQABAAAAhacAAPhCIQABAAAAhqcAAPxCIQABAAAAh6cAAABDIQABAAAAi6cAAARDIQABAAAAjKcAAAhDIQABAAAAjacAAAxDIQABAAAAkKcAABBDIQABAAAAkacAABRDIQABAAAAkqcAABhDIQABAAAAk6cAABxDIQABAAAAlKcAACBDIQABAAAAlqcAACRDIQABAAAAl6cAAChDIQABAAAAmKcAACxDIQABAAAAmacAADBDIQABAAAAmqcAADRDIQABAAAAm6cAADhDIQABAAAAnKcAADxDIQABAAAAnacAAEBDIQABAAAAnqcAAERDIQABAAAAn6cAAEhDIQABAAAAoKcAAExDIQABAAAAoacAAFBDIQABAAAAoqcAAFRDIQABAAAAo6cAAFhDIQABAAAApKcAAFxDIQABAAAApacAAGBDIQABAAAApqcAAGRDIQABAAAAp6cAAGhDIQABAAAAqKcAAGxDIQABAAAAqacAAHBDIQABAAAAqqcAAHRDIQABAAAAq6cAAHhDIQABAAAArKcAAHxDIQABAAAAracAAIBDIQABAAAArqcAAIRDIQABAAAAsKcAAIhDIQABAAAAsacAAIxDIQABAAAAsqcAAJBDIQABAAAAs6cAAJRDIQABAAAAtKcAAJhDIQABAAAAtacAAJxDIQABAAAAtqcAAKBDIQABAAAAt6cAAKRDIQABAAAAuKcAAKhDIQABAAAAuacAAKxDIQABAAAAuqcAALBDIQABAAAAu6cAALRDIQABAAAAvKcAALhDIQABAAAAvacAALxDIQABAAAAvqcAAMBDIQABAAAAv6cAAMRDIQABAAAAwKcAAMhDIQABAAAAwacAAMxDIQABAAAAwqcAANBDIQABAAAAw6cAANRDIQABAAAAxKcAANhDIQABAAAAxacAANxDIQABAAAAxqcAAOBDIQABAAAAx6cAAORDIQABAAAAyKcAAOhDIQABAAAAyacAAOxDIQABAAAAyqcAAPBDIQABAAAAy6cAAPRDIQABAAAAzKcAAPhDIQABAAAAzacAAPxDIQABAAAA0KcAAABEIQABAAAA0acAAAREIQABAAAA1qcAAAhEIQABAAAA16cAAAxEIQABAAAA2KcAABBEIQABAAAA2acAABREIQABAAAA2qcAABhEIQABAAAA26cAABxEIQABAAAA3KcAACBEIQABAAAA9acAACREIQABAAAA9qcAAChEIQABAAAAU6sAACxEIQABAAAAcKsAADBEIQABAAAAcasAADREIQABAAAAcqsAADhEIQABAAAAc6sAADxEIQABAAAAdKsAAEBEIQABAAAAdasAAEREIQABAAAAdqsAAEhEIQABAAAAd6sAAExEIQABAAAAeKsAAFBEIQABAAAAeasAAFREIQABAAAAeqsAAFhEIQABAAAAe6sAAFxEIQABAAAAfKsAAGBEIQABAAAAfasAAGREIQABAAAAfqsAAGhEIQABAAAAf6sAAGxEIQABAAAAgKsAAHBEIQABAAAAgasAAHREIQABAAAAgqsAAHhEIQABAAAAg6sAAHxEIQABAAAAhKsAAIBEIQABAAAAhasAAIREIQABAAAAhqsAAIhEIQABAAAAh6sAAIxEIQABAAAAiKsAAJBEIQABAAAAiasAAJREIQABAAAAiqsAAJhEIQABAAAAi6sAAJxEIQABAAAAjKsAAKBEIQABAAAAjasAAKREIQABAAAAjqsAAKhEIQABAAAAj6sAAKxEIQABAAAAkKsAALBEIQABAAAAkasAALREIQABAAAAkqsAALhEIQABAAAAk6sAALxEIQABAAAAlKsAAMBEIQABAAAAlasAAMREIQABAAAAlqsAAMhEIQABAAAAl6sAAMxEIQABAAAAmKsAANBEIQABAAAAmasAANREIQABAAAAmqsAANhEIQABAAAAm6sAANxEIQABAAAAnKsAAOBEIQABAAAAnasAAOREIQABAAAAnqsAAOhEIQABAAAAn6sAAOxEIQABAAAAoKsAAPBEIQABAAAAoasAAPREIQABAAAAoqsAAPhEIQABAAAAo6sAAPxEIQABAAAApKsAAABFIQABAAAApasAAARFIQABAAAApqsAAAhFIQABAAAAp6sAAAxFIQABAAAAqKsAABBFIQABAAAAqasAABRFIQABAAAAqqsAABhFIQABAAAAq6sAABxFIQABAAAArKsAACBFIQABAAAArasAACRFIQABAAAArqsAAChFIQABAAAAr6sAACxFIQABAAAAsKsAADBFIQABAAAAsasAADRFIQABAAAAsqsAADhFIQABAAAAs6sAADxFIQABAAAAtKsAAEBFIQABAAAAtasAAERFIQABAAAAtqsAAEhFIQABAAAAt6sAAExFIQABAAAAuKsAAFBFIQABAAAAuasAAFRFIQABAAAAuqsAAFhFIQABAAAAu6sAAFxFIQABAAAAvKsAAGBFIQABAAAAvasAAGRFIQABAAAAvqsAAGhFIQABAAAAv6sAAGxFIQABAAAABfsAAHBFIQABAAAABvsAAHRFIQABAAAAIf8AAHhFIQABAAAAIv8AAHxFIQABAAAAI/8AAIBFIQABAAAAJP8AAIRFIQABAAAAJf8AAIhFIQABAAAAJv8AAIxFIQABAAAAJ/8AAJBFIQABAAAAKP8AAJRFIQABAAAAKf8AAJhFIQABAAAAKv8AAJxFIQABAAAAK/8AAKBFIQABAAAALP8AAKRFIQABAAAALf8AAKhFIQABAAAALv8AAKxFIQABAAAAL/8AALBFIQABAAAAMP8AALRFIQABAAAAMf8AALhFIQABAAAAMv8AALxFIQABAAAAM/8AAMBFIQABAAAANP8AAMRFIQABAAAANf8AAMhFIQABAAAANv8AAMxFIQABAAAAN/8AANBFIQABAAAAOP8AANRFIQABAAAAOf8AANhFIQABAAAAOv8AANxFIQABAAAAQf8AAOBFIQABAAAAQv8AAORFIQABAAAAQ/8AAOhFIQABAAAARP8AAOxFIQABAAAARf8AAPBFIQABAAAARv8AAPRFIQABAAAAR/8AAPhFIQABAAAASP8AAPxFIQABAAAASf8AAABGIQABAAAASv8AAARGIQABAAAAS/8AAAhGIQABAAAATP8AAAxGIQABAAAATf8AABBGIQABAAAATv8AABRGIQABAAAAT/8AABhGIQABAAAAUP8AABxGIQABAAAAUf8AACBGIQABAAAAUv8AACRGIQABAAAAU/8AAChGIQABAAAAVP8AACxGIQABAAAAVf8AADBGIQABAAAAVv8AADRGIQABAAAAV/8AADhGIQABAAAAWP8AADxGIQABAAAAWf8AAEBGIQABAAAAWv8AAERGIQABAAAAAAQBAEhGIQABAAAAAQQBAExGIQABAAAAAgQBAFBGIQABAAAAAwQBAFRGIQABAAAABAQBAFhGIQABAAAABQQBAFxGIQABAAAABgQBAGBGIQABAAAABwQBAGRGIQABAAAACAQBAGhGIQABAAAACQQBAGxGIQABAAAACgQBAHBGIQABAAAACwQBAHRGIQABAAAADAQBAHhGIQABAAAADQQBAHxGIQABAAAADgQBAIBGIQABAAAADwQBAIRGIQABAAAAEAQBAIhGIQABAAAAEQQBAIxGIQABAAAAEgQBAJBGIQABAAAAEwQBAJRGIQABAAAAFAQBAJhGIQABAAAAFQQBAJxGIQABAAAAFgQBAKBGIQABAAAAFwQBAKRGIQABAAAAGAQBAKhGIQABAAAAGQQBAKxGIQABAAAAGgQBALBGIQABAAAAGwQBALRGIQABAAAAHAQBALhGIQABAAAAHQQBALxGIQABAAAAHgQBAMBGIQABAAAAHwQBAMRGIQABAAAAIAQBAMhGIQABAAAAIQQBAMxGIQABAAAAIgQBANBGIQABAAAAIwQBANRGIQABAAAAJAQBANhGIQABAAAAJQQBANxGIQABAAAAJgQBAOBGIQABAAAAJwQBAORGIQABAAAAKAQBAOhGIQABAAAAKQQBAOxGIQABAAAAKgQBAPBGIQABAAAAKwQBAPRGIQABAAAALAQBAPhGIQABAAAALQQBAPxGIQABAAAALgQBAABHIQABAAAALwQBAARHIQABAAAAMAQBAAhHIQABAAAAMQQBAAxHIQABAAAAMgQBABBHIQABAAAAMwQBABRHIQABAAAANAQBABhHIQABAAAANQQBABxHIQABAAAANgQBACBHIQABAAAANwQBACRHIQABAAAAOAQBAChHIQABAAAAOQQBACxHIQABAAAAOgQBADBHIQABAAAAOwQBADRHIQABAAAAPAQBADhHIQABAAAAPQQBADxHIQABAAAAPgQBAEBHIQABAAAAPwQBAERHIQABAAAAQAQBAEhHIQABAAAAQQQBAExHIQABAAAAQgQBAFBHIQABAAAAQwQBAFRHIQABAAAARAQBAFhHIQABAAAARQQBAFxHIQABAAAARgQBAGBHIQABAAAARwQBAGRHIQABAAAASAQBAGhHIQABAAAASQQBAGxHIQABAAAASgQBAHBHIQABAAAASwQBAHRHIQABAAAATAQBAHhHIQABAAAATQQBAHxHIQABAAAATgQBAIBHIQABAAAATwQBAIRHIQABAAAAsAQBAIhHIQABAAAAsQQBAIxHIQABAAAAsgQBAJBHIQABAAAAswQBAJRHIQABAAAAtAQBAJhHIQABAAAAtQQBAJxHIQABAAAAtgQBAKBHIQABAAAAtwQBAKRHIQABAAAAuAQBAKhHIQABAAAAuQQBAKxHIQABAAAAugQBALBHIQABAAAAuwQBALRHIQABAAAAvAQBALhHIQABAAAAvQQBALxHIQABAAAAvgQBAMBHIQABAAAAvwQBAMRHIQABAAAAwAQBAMhHIQABAAAAwQQBAMxHIQABAAAAwgQBANBHIQABAAAAwwQBANRHIQABAAAAxAQBANhHIQABAAAAxQQBANxHIQABAAAAxgQBAOBHIQABAAAAxwQBAORHIQABAAAAyAQBAOhHIQABAAAAyQQBAOxHIQABAAAAygQBAPBHIQABAAAAywQBAPRHIQABAAAAzAQBAPhHIQABAAAAzQQBAPxHIQABAAAAzgQBAABIIQABAAAAzwQBAARIIQABAAAA0AQBAAhIIQABAAAA0QQBAAxIIQABAAAA0gQBABBIIQABAAAA0wQBABRIIQABAAAA2AQBABhIIQABAAAA2QQBABxIIQABAAAA2gQBACBIIQABAAAA2wQBACRIIQABAAAA3AQBAChIIQABAAAA3QQBACxIIQABAAAA3gQBADBIIQABAAAA3wQBADRIIQABAAAA4AQBADhIIQABAAAA4QQBADxIIQABAAAA4gQBAEBIIQABAAAA4wQBAERIIQABAAAA5AQBAEhIIQABAAAA5QQBAExIIQABAAAA5gQBAFBIIQABAAAA5wQBAFRIIQABAAAA6AQBAFhIIQABAAAA6QQBAFxIIQABAAAA6gQBAGBIIQABAAAA6wQBAGRIIQABAAAA7AQBAGhIIQABAAAA7QQBAGxIIQABAAAA7gQBAHBIIQABAAAA7wQBAHRIIQABAAAA8AQBAHhIIQABAAAA8QQBAHxIIQABAAAA8gQBAIBIIQABAAAA8wQBAIRIIQABAAAA9AQBAIhIIQABAAAA9QQBAIxIIQABAAAA9gQBAJBIIQABAAAA9wQBAJRIIQABAAAA+AQBAJhIIQABAAAA+QQBAJxIIQABAAAA+gQBAKBIIQABAAAA+wQBAKRIIQABAAAAcAUBAKhIIQABAAAAcQUBAKxIIQABAAAAcgUBALBIIQABAAAAcwUBALRIIQABAAAAdAUBALhIIQABAAAAdQUBALxIIQABAAAAdgUBAMBIIQABAAAAdwUBAMRIIQABAAAAeAUBAMhIIQABAAAAeQUBAMxIIQABAAAAegUBANBIIQABAAAAfAUBANRIIQABAAAAfQUBANhIIQABAAAAfgUBANxIIQABAAAAfwUBAOBIIQABAAAAgAUBAORIIQABAAAAgQUBAOhIIQABAAAAggUBAOxIIQABAAAAgwUBAPBIIQABAAAAhAUBAPRIIQABAAAAhQUBAPhIIQABAAAAhgUBAPxIIQABAAAAhwUBAABJIQABAAAAiAUBAARJIQABAAAAiQUBAAhJIQABAAAAigUBAAxJIQABAAAAjAUBABBJIQABAAAAjQUBABRJIQABAAAAjgUBABhJIQABAAAAjwUBABxJIQABAAAAkAUBACBJIQABAAAAkQUBACRJIQABAAAAkgUBAChJIQABAAAAlAUBACxJIQABAAAAlQUBADBJIQABAAAAlwUBADRJIQABAAAAmAUBADhJIQABAAAAmQUBADxJIQABAAAAmgUBAEBJIQABAAAAmwUBAERJIQABAAAAnAUBAEhJIQABAAAAnQUBAExJIQABAAAAngUBAFBJIQABAAAAnwUBAFRJIQABAAAAoAUBAFhJIQABAAAAoQUBAFxJIQABAAAAowUBAGBJIQABAAAApAUBAGRJIQABAAAApQUBAGhJIQABAAAApgUBAGxJIQABAAAApwUBAHBJIQABAAAAqAUBAHRJIQABAAAAqQUBAHhJIQABAAAAqgUBAHxJIQABAAAAqwUBAIBJIQABAAAArAUBAIRJIQABAAAArQUBAIhJIQABAAAArgUBAIxJIQABAAAArwUBAJBJIQABAAAAsAUBAJRJIQABAAAAsQUBAJhJIQABAAAAswUBAJxJIQABAAAAtAUBAKBJIQABAAAAtQUBAKRJIQABAAAAtgUBAKhJIQABAAAAtwUBAKxJIQABAAAAuAUBALBJIQABAAAAuQUBALRJIQABAAAAuwUBALhJIQABAAAAvAUBALxJIQABAAAAgAwBAMBJIQABAAAAgQwBAMRJIQABAAAAggwBAMhJIQABAAAAgwwBAMxJIQABAAAAhAwBANBJIQABAAAAhQwBANRJIQABAAAAhgwBANhJIQABAAAAhwwBANxJIQABAAAAiAwBAOBJIQABAAAAiQwBAORJIQABAAAAigwBAOhJIQABAAAAiwwBAOxJIQABAAAAjAwBAPBJIQABAAAAjQwBAPRJIQABAAAAjgwBAPhJIQABAAAAjwwBAPxJIQABAAAAkAwBAABKIQABAAAAkQwBAARKIQABAAAAkgwBAAhKIQABAAAAkwwBAAxKIQABAAAAlAwBABBKIQABAAAAlQwBABRKIQABAAAAlgwBABhKIQABAAAAlwwBABxKIQABAAAAmAwBACBKIQABAAAAmQwBACRKIQABAAAAmgwBAChKIQABAAAAmwwBACxKIQABAAAAnAwBADBKIQABAAAAnQwBADRKIQABAAAAngwBADhKIQABAAAAnwwBADxKIQABAAAAoAwBAEBKIQABAAAAoQwBAERKIQABAAAAogwBAEhKIQABAAAAowwBAExKIQABAAAApAwBAFBKIQABAAAApQwBAFRKIQABAAAApgwBAFhKIQABAAAApwwBAFxKIQABAAAAqAwBAGBKIQAB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AAAAzRgBALxMIQABAAAAzhgBAMBMIQABAAAAzxgBAMRMIQABAAAA0BgBAMhMIQABAAAA0RgBAMxMIQABAAAA0hgBANBMIQABAAAA0xgBANRMIQABAAAA1BgBANhMIQABAAAA1RgBANxMIQABAAAA1hgBAOBMIQABAAAA1xgBAORMIQABAAAA2BgBAOhMIQABAAAA2RgBAOxMIQABAAAA2hgBAPBMIQABAAAA2xgBAPRMIQABAAAA3BgBAPhMIQABAAAA3RgBAPxMIQABAAAA3hgBAABNIQABAAAA3xgBAARNIQABAAAAQG4BAAhNIQABAAAAQW4BAAxNIQABAAAAQm4BABBNIQABAAAAQ24BABRNIQABAAAARG4BABhNIQABAAAARW4BABxNIQABAAAARm4BACBNIQABAAAAR24BACRNIQABAAAASG4BAChNIQABAAAASW4BACxNIQABAAAASm4BADBNIQABAAAAS24BADRNIQABAAAATG4BADhNIQABAAAATW4BADxNIQABAAAATm4BAEBNIQABAAAAT24BAERNIQABAAAAUG4BAEhNIQABAAAAUW4BAExNIQABAAAAUm4BAFBNIQABAAAAU24BAFRNIQABAAAAVG4BAFhNIQABAAAAVW4BAFxNIQABAAAAVm4BAGBNIQABAAAAV24BAGRNIQABAAAAWG4BAGhNIQABAAAAWW4BAGxNIQABAAAAWm4BAHBNIQABAAAAW24BAHRNIQABAAAAXG4BAHhNIQABAAAAXW4BAHxNIQABAAAAXm4BAIBNIQABAAAAX24BAIRNIQABAAAAYG4BAIhNIQABAAAAYW4BAIxNIQABAAAAYm4BAJBNIQABAAAAY24BAJRNIQABAAAAZG4BAJhNIQABAAAAZW4BAJxNIQABAAAAZm4BAKBNIQABAAAAZ24BAKRNIQABAAAAaG4BAKhNIQABAAAAaW4BAKxNIQABAAAAam4BALBNIQABAAAAa24BALRNIQABAAAAbG4BALhNIQABAAAAbW4BALxNIQABAAAAbm4BAMBNIQABAAAAb24BAMRNIQABAAAAcG4BAMhNIQABAAAAcW4BAMxNIQABAAAAcm4BANBNIQABAAAAc24BANRNIQABAAAAdG4BANhNIQABAAAAdW4BANxNIQABAAAAdm4BAOBNIQABAAAAd24BAORNIQABAAAAeG4BAOhNIQABAAAAeW4BAOxNIQABAAAAem4BAPBNIQABAAAAe24BAPRNIQABAAAAfG4BAPhNIQABAAAAfW4BAPxNIQABAAAAfm4BAABOIQABAAAAf24BAAROIQABAAAAAOkBAAhOIQABAAAAAekBAAxOIQABAAAAAukBABBOIQABAAAAA+kBABROIQABAAAABOkBABhOIQABAAAABekBABxOIQABAAAABukBACBOIQABAAAAB+kBACROIQABAAAACOkBAChOIQABAAAACekBACxOIQABAAAACukBADBOIQABAAAAC+kBADROIQABAAAADOkBADhOIQABAAAADekBADxOIQABAAAADukBAEBOIQABAAAAD+kBAEROIQABAAAAEOkBAEhOIQABAAAAEekBAExOIQABAAAAEukBAFBOIQABAAAAE+kBAFROIQABAAAAFOkBAFhOIQABAAAAFekBAFxOIQABAAAAFukBAGBOIQABAAAAF+kBAGROIQABAAAAGOkBAGhOIQABAAAAGekBAGxOIQABAAAAGukBAHBOIQABAAAAG+kBAHROIQABAAAAHOkBAHhOIQABAAAAHekBAHxOIQABAAAAHukBAIBOIQABAAAAH+kBAIROIQABAAAAIOkBAIhOIQABAAAAIekBAIxOIQABAAAAIukBAJBOIQABAAAAI+kBAJROIQABAAAAJOkBAJhOIQABAAAAJekBAJxOIQABAAAAJukBAKBOIQABAAAAJ+kBAKROIQABAAAAKOkBAKhOIQABAAAAKekBAKxOIQABAAAAKukBALBOIQABAAAAK+kBALROIQABAAAALOkBALhOIQABAAAALekBALxOIQABAAAALukBAMBOIQABAAAAL+kBAMROIQABAAAAMOkBAMhOIQABAAAAMekBAMxOIQABAAAAMukBANBOIQABAAAAM+kBANROIQABAAAANOkBANhOIQABAAAANekBANxOIQABAAAANukBAOBOIQABAAAAN+kBAOROIQABAAAAOOkBAOhOIQABAAAAOekBAOxOIQABAAAAOukBAPBOIQABAAAAO+kBAPROIQABAAAAPOkBAPhOIQABAAAAPekBAPxOIQABAAAAPukBAABPIQABAAAAP+kBAARPIQABAAAAQOkBAAhPIQABAAAAQekBAAxPIQABAAAAQukBABBPIQABAAAAQ+kBABRPIQABAAAATGl0ZXJhbENsYXNzVW5pY29kZUNsYXNzQnl0ZXNSZXBldGl0aW9uR3JvdXBvbGRfZmxhZ3NDb25jYXRBbHRlcm5hdGlvbkFsdGVybmF0aW9uQnJhbmNoAAAAAAABAAAAAQAAAGYHAAAAAAAABAAAAAQAAABnBwAAY2FzZV9pbnNlbnNpdGl2ZW11bHRpX2xpbmVkb3RfbWF0Y2hlc19uZXdfbGluZXN3YXBfZ3JlZWR1bmljb2RlY3JsZgBI2SEAEAAAAFjZIQAKAAAAYtkhABQAAAB22SEACgAAAIDZIQAHAAAAh9khAAQAAABGbGFncy9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JlZ2V4LXN5bnRheC0wLjguNS9zcmMvaGlyL2ludGVydmFsLnJzwdkhAGsAAAB5AAAAJAAAAMHZIQBrAAAApgAAACoAAADB2SEAawAAAKYAAABFAAAAwdkhAGsAAACqAAAAHwAAAMHZIQBrAAAAqgAAADkAAADB2SEAawAAAA0BAAAkAAAAwdkhAGsAAADQAAAAHAAAAMHZIQBrAAAA0AAAADUAAADB2SEAawAAANYAAAAbAAAAwdkhAGsAAADWAAAANQAAAMHZIQBrAAAA3QAAACEAAADB2SEAawAAAN0AAABIAAAAwdkhAGsAAADqAAAAKAAAAMHZIQBrAAAA7AAAAD4AAADB2SEAawAAAO8AAAA9AAAAwdkhAGsAAAACAQAAIAAAAGFzc2VydGlvbiBmYWlsZWQ6ICFzZWxmLnJhbmdlc1thXS5pc19pbnRlcnNlY3Rpb25fZW1wdHkoJm90aGVyLnJhbmdlc1tiXSkAAADB2SEAawAAAN0AAAANAAAAwdkhAGsAAADXAAAAKAAAAMHZIQBrAAAAOQEAABcAAADB2SEAawAAADoBAAAkAAAAwdkhAGsAAABCAQAAFwAAAMHZIQBrAAAAQwEAACQAAADB2SEAawAAAD4BAAAkAAAAwdkhAGsAAAA/AQAAJAAAAMHZIQBrAAAAbAEAACQAAABhc3NlcnRpb24gZmFpbGVkOiAhc2VsZi5yYW5nZXMuaXNfZW1wdHkoKQAAAMHZIQBrAAAAXAEAAAkAAADB2SEAawAAABMCAAAdAAAAwdkhAGsAAAAWAgAAHQAAAMHZIQBrAAAAKAIAAEcAAADB2SEAawAAAC8CAAA9AAAAwdkhAGsAAAAvAgAARwAAAEludGVydmFsU2V0cmFuZ2VzZm9sZGVkAGgHAAAUAAAABAAAAGkHAAAuLj0AvNwhAAMAAAAgKGV4aGF1c3RlZCnI3CEADAAAAGdvdCBjb2RlcG9pbnQgVSsgd2hpY2ggb2NjdXJzIGJlZm9yZSBsYXN0IGNvZGVwb2ludCBVKwAA3NwhABAAAADs3CEAJgAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JlZ2V4LXN5bnRheC0wLjguNS9zcmMvdW5pY29kZS5ycwAAJN0hAGYAAAB+AAAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IGkgPiBzZWxmLm5leHQAJN0hAGYAAACbAAAAEQAAACTdIQBmAAAAtQAAAAkAAABHZW5lcmFsX0NhdGVnb3J5U2NyaXB0Y2ZzY2xjQWdlU2NyaXB0X0V4dGVuc2lvbnNHcmFwaGVtZV9DbHVzdGVyX0JyZWFrU2VudGVuY2VfQnJlYWtXb3JkX0JyZWFrAAAwAAAAOQAAAEEAAABaAAAAXwAAAF8AAABhAAAAegAAAKoAAACqAAAAtQAAALUAAAC6AAAAugAAAMAAAADWAAAA2AAAAPYAAAD4AAAAwQIAAMYCAADRAgAA4AIAAOQCAADsAgAA7AIAAO4CAADuAgAAAAMAAHQDAAB2AwAAdwMAAHoDAAB9AwAAfwMAAH8DAACGAwAAhgMAAIgDAACKAwAAjAMAAIwDAACOAwAAoQMAAKMDAAD1AwAA9wMAAIEEAACDBAAALwUAADEFAABWBQAAWQUAAFkFAABgBQAAiAUAAJEFAAC9BQAAvwUAAL8FAADBBQAAwgUAAMQFAADFBQAAxwUAAMcFAADQBQAA6gUAAO8FAADyBQAAEAYAABoGAAAgBgAAaQYAAG4GAADTBgAA1QYAANwGAADfBgAA6AYAAOoGAAD8BgAA/wYAAP8GAAAQBwAASgcAAE0HAACxBwAAwAcAAPUHAAD6BwAA+gcAAP0HAAD9BwAAAAgAAC0IAABACAAAWwgAAGAIAABqCAAAcAgAAIcIAACJCAAAjggAAJcIAADhCAAA4wgAAGMJAABmCQAAbwkAAHEJAACDCQAAhQkAAIwJAACPCQAAkAkAAJMJAACoCQAAqgkAALAJAACyCQAAsgkAALYJAAC5CQAAvAkAAMQJAADHCQAAyAkAAMsJAADOCQAA1wkAANcJAADcCQAA3QkAAN8JAADjCQAA5gkAAPEJAAD8CQAA/AkAAP4JAAD+CQAAAQoAAAMKAAAFCgAACgoAAA8KAAAQCgAAEwoAACgKAAAqCgAAMAoAADIKAAAzCgAANQoAADYKAAA4CgAAOQoAADwKAAA8CgAAPgoAAEIKAABHCgAASAoAAEsKAABNCgAAUQoAAFEKAABZCgAAXAoAAF4KAABeCgAAZgoAAHUKAACBCgAAgwoAAIUKAACNCgAAjwoAAJEKAACTCgAAqAoAAKoKAACwCgAAsgoAALMKAAC1CgAAuQoAALwKAADFCgAAxwoAAMkKAADLCgAAzQoAANAKAADQCgAA4AoAAOMKAADmCgAA7woAAPkKAAD/CgAAAQsAAAMLAAAFCwAADAsAAA8LAAAQCwAAEwsAACgLAAAqCwAAMAsAADILAAAzCwAANQsAADkLAAA8CwAARAsAAEcLAABICwAASwsAAE0LAABVCwAAVwsAAFwLAABdCwAAXwsAAGMLAABmCwAAbwsAAHELAABxCwAAggsAAIMLAACFCwAAigsAAI4LAACQCwAAkgsAAJULAACZCwAAmgsAAJwLAACcCwAAngsAAJ8LAACjCwAApAsAAKgLAACqCwAArgsAALkLAAC+CwAAwgsAAMYLAADICwAAygsAAM0LAADQCwAA0AsAANcLAADXCwAA5gsAAO8LAAAADAAADAwAAA4MAAAQDAAAEgwAACgMAAAqDAAAOQwAADwMAABEDAAARgwAAEgMAABKDAAATQwAAFUMAABWDAAAWAwAAFoMAABdDAAAXQwAAGAMAABjDAAAZgwAAG8MAACADAAAgwwAAIUMAACMDAAAjgwAAJAMAACSDAAAqAwAAKoMAACzDAAAtQwAALkMAAC8DAAAxAwAAMYMAADIDAAAygwAAM0MAADVDAAA1gwAAN0MAADeDAAA4AwAAOMMAADmDAAA7wwAAPEMAADzDAAAAA0AAAwNAAAODQAAEA0AABINAABEDQAARg0AAEgNAABKDQAATg0AAFQNAABXDQAAXw0AAGMNAABmDQAAbw0AAHoNAAB/DQAAgQ0AAIMNAACFDQAAlg0AAJoNAACxDQAAsw0AALsNAAC9DQAAvQ0AAMANAADGDQAAyg0AAMoNAADPDQAA1A0AANYNAADWDQAA2A0AAN8NAADmDQAA7w0AAPINAADzDQAAAQ4AADoOAABADgAATg4AAFAOAABZDgAAgQ4AAIIOAACEDgAAhA4AAIYOAACKDgAAjA4AAKMOAAClDgAApQ4AAKcOAAC9DgAAwA4AAMQOAADGDgAAxg4AAMgOAADODgAA0A4AANkOAADcDgAA3w4AAAAPAAAADwAAGA8AABkPAAAgDwAAKQ8AADUPAAA1DwAANw8AADcPAAA5DwAAOQ8AAD4PAABHDwAASQ8AAGwPAABxDwAAhA8AAIYPAACXDwAAmQ8AALwPAADGDwAAxg8AAAAQAABJEAAAUBAAAJ0QAACgEAAAxRAAAMcQAADHEAAAzRAAAM0QAADQEAAA+hAAAPwQAABIEgAAShIAAE0SAABQEgAAVhIAAFgSAABYEgAAWhIAAF0SAABgEgAAiBIAAIoSAACNEgAAkBIAALASAACyEgAAtRIAALgSAAC+EgAAwBIAAMASAADCEgAAxRIAAMgSAADWEgAA2BIAABATAAASEwAAFRMAABgTAABaEwAAXRMAAF8TAACAEwAAjxMAAKATAAD1EwAA+BMAAP0TAAABFAAAbBYAAG8WAAB/FgAAgRYAAJoWAACgFgAA6hYAAO4WAAD4FgAAABcAABUXAAAfFwAANBcAAEAXAABTFwAAYBcAAGwXAABuFwAAcBcAAHIXAABzFwAAgBcAANMXAADXFwAA1xcAANwXAADdFwAA4BcAAOkXAAALGAAADRgAAA8YAAAZGAAAIBgAAHgYAACAGAAAqhgAALAYAAD1GAAAABkAAB4ZAAAgGQAAKxkAADAZAAA7GQAARhkAAG0ZAABwGQAAdBkAAIAZAACrGQAAsBkAAMkZAADQGQAA2RkAAAAaAAAbGgAAIBoAAF4aAABgGgAAfBoAAH8aAACJGgAAkBoAAJkaAACnGgAApxoAALAaAADOGgAAABsAAEwbAABQGwAAWRsAAGsbAABzGwAAgBsAAPMbAAAAHAAANxwAAEAcAABJHAAATRwAAH0cAACAHAAAihwAAJAcAAC6HAAAvRwAAL8cAADQHAAA0hwAANQcAAD6HAAAAB0AABUfAAAYHwAAHR8AACAfAABFHwAASB8AAE0fAABQHwAAVx8AAFkfAABZHwAAWx8AAFsfAABdHwAAXR8AAF8fAAB9HwAAgB8AALQfAAC2HwAAvB8AAL4fAAC+HwAAwh8AAMQfAADGHwAAzB8AANAfAADTHwAA1h8AANsfAADgHwAA7B8AAPIfAAD0HwAA9h8AAPwfAAAMIAAADSAAAD8gAABAIAAAVCAAAFQgAABxIAAAcSAAAH8gAAB/IAAAkCAAAJwgAADQIAAA8CAAAAIhAAACIQAAByEAAAchAAAKIQAAEyEAABUhAAAVIQAAGSEAAB0hAAAkIQAAJCEAACYhAAAmIQAAKCEAACghAAAqIQAALSEAAC8hAAA5IQAAPCEAAD8hAABFIQAASSEAAE4hAABOIQAAYCEAAIghAAC2JAAA6SQAAAAsAADkLAAA6ywAAPMsAAAALQAAJS0AACctAAAnLQAALS0AAC0tAAAwLQAAZy0AAG8tAABvLQAAfy0AAJYtAACgLQAApi0AAKgtAACuLQAAsC0AALYtAAC4LQAAvi0AAMAtAADGLQAAyC0AAM4tAADQLQAA1i0AANgtAADeLQAA4C0AAP8tAAAvLgAALy4AAAUwAAAHMAAAITAAAC8wAAAxMAAANTAAADgwAAA8MAAAQTAAAJYwAACZMAAAmjAAAJ0wAACfMAAAoTAAAPowAAD8MAAA/zAAAAUxAAAvMQAAMTEAAI4xAACgMQAAvzEAAPAxAAD/MQAAADQAAL9NAAAATgAAjKQAANCkAAD9pAAAAKUAAAymAAAQpgAAK6YAAECmAABypgAAdKYAAH2mAAB/pgAA8aYAABenAAAfpwAAIqcAAIinAACLpwAAzacAANCnAADRpwAA06cAANOnAADVpwAA3KcAAPKnAAAnqAAALKgAACyoAABAqAAAc6gAAICoAADFqAAA0KgAANmoAADgqAAA96gAAPuoAAD7qAAA/agAAC2pAAAwqQAAU6kAAGCpAAB8qQAAgKkAAMCpAADPqQAA2akAAOCpAAD+qQAAAKoAADaqAABAqgAATaoAAFCqAABZqgAAYKoAAHaqAAB6qgAAwqoAANuqAADdqgAA4KoAAO+qAADyqgAA9qoAAAGrAAAGqwAACasAAA6rAAARqwAAFqsAACCrAAAmqwAAKKsAAC6rAAAwqwAAWqsAAFyrAABpqwAAcKsAAOqrAADsqwAA7asAAPCrAAD5qwAAAKwAAKPXAACw1wAAxtcAAMvXAAD71wAAAPkAAG36AABw+gAA2foAAAD7AAAG+wAAE/sAABf7AAAd+wAAKPsAACr7AAA2+wAAOPsAADz7AAA++wAAPvsAAED7AABB+wAAQ/sAAET7AABG+wAAsfsAANP7AAA9/QAAUP0AAI/9AACS/QAAx/0AAPD9AAD7/QAAAP4AAA/+AAAg/gAAL/4AADP+AAA0/gAATf4AAE/+AABw/gAAdP4AAHb+AAD8/gAAEP8AABn/AAAh/wAAOv8AAD//AAA//wAAQf8AAFr/AABm/wAAvv8AAML/AADH/wAAyv8AAM//AADS/wAA1/8AANr/AADc/wAAAAABAAsAAQANAAEAJgABACgAAQA6AAEAPAABAD0AAQA/AAEATQABAFAAAQBdAAEAgAABAPoAAQBAAQEAdAEBAP0BAQD9AQEAgAIBAJwCAQCgAgEA0AIBAOACAQDgAgEAAAMBAB8DAQAtAwEASgMBAFADAQB6AwEAgAMBAJ0DAQCgAwEAwwMBAMgDAQDPAwEA0QMBANUDAQAABAEAnQQBAKAEAQCpBAEAsAQBANMEAQDYBAEA+wQBAAAFAQAnBQEAMAUBAGMFAQBwBQEAegUBAHwFAQCKBQEAjAUBAJIFAQCUBQEAlQUBAJcFAQChBQEAowUBALEFAQCzBQEAuQUBALsFAQC8BQEAwAUBAPMFAQAABgEANgcBAEAHAQBVBwEAYAcBAGcHAQCABwEAhQcBAIcHAQCwBwEAsgcBALoHAQAACAEABQgBAAgIAQAICAEACggBADUIAQA3CAEAOAgBADwIAQA8CAEAPwgBAFUIAQBgCAEAdggBAIAIAQCeCAEA4AgBAPIIAQD0CAEA9QgBAAAJAQAVCQEAIAkBADkJAQCACQEAtwkBAL4JAQC/CQEAAAoBAAMKAQAFCgEABgoBAAwKAQATCgEAFQoBABcKAQAZCgEANQoBADgKAQA6CgEAPwoBAD8KAQBgCgEAfAoBAIAKAQCcCgEAwAoBAMcKAQDJCgEA5goBAAALAQA1CwEAQAsBAFULAQBgCwEAcgsBAIALAQCRCwEAAAwBAEgMAQCADAEAsgwBAMAMAQDyDAEAAA0BACcNAQAwDQEAOQ0BAEANAQBlDQEAaQ0BAG0NAQBvDQEAhQ0BAIAOAQCpDgEAqw4BAKwOAQCwDgEAsQ4BAMIOAQDEDgEA/A4BABwPAQAnDwEAJw8BADAPAQBQDwEAcA8BAIUPAQCwDwEAxA8BAOAPAQD2DwEAABABAEYQAQBmEAEAdRABAH8QAQC6EAEAwhABAMIQAQDQEAEA6BABAPAQAQD5EAEAABEBADQRAQA2EQEAPxEBAEQRAQBHEQEAUBEBAHMRAQB2EQEAdhEBAIARAQDEEQEAyREBAMwRAQDOEQEA2hEBANwRAQDcEQEAABIBABESAQATEgEANxIBAD4SAQBBEgEAgBIBAIYSAQCIEgEAiBIBAIoSAQCNEgEAjxIBAJ0SAQCfEgEAqBIBALASAQDqEgEA8BIBAPkSAQAAEwEAAxMBAAUTAQAMEwEADxMBABATAQATEwEAKBMBACoTAQAwEwEAMhMBADMTAQA1EwEAORMBADsTAQBEEwEARxMBAEgTAQBLEwEATRMBAFATAQBQEwEAVxMBAFcTAQBdEwEAYxMBAGYTAQBsEwEAcBMBAHQTAQCAEwEAiRMBAIsTAQCLEwEAjhMBAI4TAQCQEwEAtRMBALcTAQDAEwEAwhMBAMITAQDFEwEAxRMBAMcTAQDKEwEAzBMBANMTAQDhEwEA4hMBAAAUAQBKFAEAUBQBAFkUAQBeFAEAYRQBAIAUAQDFFAEAxxQBAMcUAQDQFAEA2RQBAIAVAQC1FQEAuBUBAMAVAQDYFQEA3RUBAAAWAQBAFgEARBYBAEQWAQBQFgEAWRYBAIAWAQC4FgEAwBYBAMkWAQDQFgEA4xYBAAAXAQAaFwEAHRcBACsXAQAwFwEAORcBAEAXAQBGFwEAABgBADoYAQCgGAEA6RgBAP8YAQAGGQEACRkBAAkZAQAMGQEAExkBABUZAQAWGQEAGBkBADUZAQA3GQEAOBkBADsZAQBDGQEAUBkBAFkZAQCgGQEApxkBAKoZAQDXGQEA2hkBAOEZAQDjGQEA5BkBAAAaAQA+GgEARxoBAEcaAQBQGgEAmRoBAJ0aAQCdGgEAsBoBAPgaAQDAGwEA4BsBAPAbAQD5GwEAABwBAAgcAQAKHAEANhwBADgcAQBAHAEAUBwBAFkcAQByHAEAjxwBAJIcAQCnHAEAqRwBALYcAQAAHQEABh0BAAgdAQAJHQEACx0BADYdAQA6HQEAOh0BADwdAQA9HQEAPx0BAEcdAQBQHQEAWR0BAGAdAQBlHQEAZx0BAGgdAQBqHQEAjh0BAJAdAQCRHQEAkx0BAJgdAQCgHQEAqR0BAOAeAQD2HgEAAB8BABAfAQASHwEAOh8BAD4fAQBCHwEAUB8BAFofAQCwHwEAsB8BAAAgAQCZIwEAACQBAG4kAQCAJAEAQyUBAJAvAQDwLwEAADABAC80AQBANAEAVTQBAGA0AQD6QwEAAEQBAEZGAQAAYQEAOWEBAABoAQA4agEAQGoBAF5qAQBgagEAaWoBAHBqAQC+agEAwGoBAMlqAQDQagEA7WoBAPBqAQD0agEAAGsBADZrAQBAawEAQ2sBAFBrAQBZawEAY2sBAHdrAQB9awEAj2sBAEBtAQBsbQEAcG0BAHltAQBAbgEAf24BAABvAQBKbwEAT28BAIdvAQCPbwEAn28BAOBvAQDhbwEA428BAORvAQDwbwEA8W8BAABwAQD3hwEAAIgBANWMAQD/jAEACI0BAPCvAQDzrwEA9a8BAPuvAQD9rwEA/q8BAACwAQAisQEAMrEBADKxAQBQsQEAUrEBAFWxAQBVsQEAZLEBAGexAQBwsQEA+7IBAAC8AQBqvAEAcLwBAHy8AQCAvAEAiLwBAJC8AQCZvAEAnbwBAJ68AQDwzAEA+cwBAADPAQAtzwEAMM8BAEbPAQBl0QEAadEBAG3RAQBy0QEAe9EBAILRAQCF0QEAi9EBAKrRAQCt0QEAQtIBAETSAQAA1AEAVNQBAFbUAQCc1AEAntQBAJ/UAQCi1AEAotQBAKXUAQCm1AEAqdQBAKzUAQCu1AEAudQBALvUAQC71AEAvdQBAMPUAQDF1AEABdUBAAfVAQAK1QEADdUBABTVAQAW1QEAHNUBAB7VAQA51QEAO9UBAD7VAQBA1QEARNUBAEbVAQBG1QEAStUBAFDVAQBS1QEApdYBAKjWAQDA1gEAwtYBANrWAQDc1gEA+tYBAPzWAQAU1wEAFtcBADTXAQA21wEATtcBAFDXAQBu1wEAcNcBAIjXAQCK1wEAqNcBAKrXAQDC1wEAxNcBAMvXAQDO1wEA/9cBAADaAQA22gEAO9oBAGzaAQB12gEAddoBAITaAQCE2gEAm9oBAJ/aAQCh2gEAr9oBAADfAQAe3wEAJd8BACrfAQAA4AEABuABAAjgAQAY4AEAG+ABACHgAQAj4AEAJOABACbgAQAq4AEAMOABAG3gAQCP4AEAj+ABAADhAQAs4QEAMOEBAD3hAQBA4QEASeEBAE7hAQBO4QEAkOIBAK7iAQDA4gEA+eIBANDkAQD55AEA0OUBAPrlAQDg5wEA5ucBAOjnAQDr5wEA7ecBAO7nAQDw5wEA/ucBAADoAQDE6AEA0OgBANboAQAA6QEAS+kBAFDpAQBZ6QEAAO4BAAPuAQAF7gEAH+4BACHuAQAi7gEAJO4BACTuAQAn7gEAJ+4BACnuAQAy7gEANO4BADfuAQA57gEAOe4BADvuAQA77gEAQu4BAELuAQBH7gEAR+4BAEnuAQBJ7gEAS+4BAEvuAQBN7gEAT+4BAFHuAQBS7gEAVO4BAFTuAQBX7gEAV+4BAFnuAQBZ7gEAW+4BAFvuAQBd7gEAXe4BAF/uAQBf7gEAYe4BAGLuAQBk7gEAZO4BAGfuAQBq7gEAbO4BAHLuAQB07gEAd+4BAHnuAQB87gEAfu4BAH7uAQCA7gEAie4BAIvuAQCb7gEAoe4BAKPuAQCl7gEAqe4BAKvuAQC77gEAMPEBAEnxAQBQ8QEAafEBAHDxAQCJ8QEA8PsBAPn7AQAAAAIA36YCAACnAgA5twIAQLcCAB24AgAguAIAoc4CALDOAgDg6wIA8OsCAF3uAgAA+AIAHfoCAAAAAwBKEwMAUBMDAK8jAwAAAQ4A7wEOAAkAAAANAAAAIAAAACAAAACFAAAAhQAAAKAAAACgAAAAgBYAAIAWAAAAIAAACiAAACggAAApIAAALyAAAC8gAABfIAAAXyAAAAAwAAAAMAAAMAAAADkAAABgBgAAaQYAAPAGAAD5BgAAwAcAAMkHAABmCQAAbwkAAOYJAADvCQAAZgoAAG8KAADmCgAA7woAAGYLAABvCwAA5gsAAO8LAABmDAAAbwwAAOYMAADvDAAAZg0AAG8NAADmDQAA7w0AAFAOAABZDgAA0A4AANkOAAAgDwAAKQ8AAEAQAABJEAAAkBAAAJkQAADgFwAA6RcAABAYAAAZGAAARhkAAE8ZAADQGQAA2RkAAIAaAACJGgAAkBoAAJkaAABQGwAAWRsAALAbAAC5GwAAQBwAAEkcAABQHAAAWRwAACCmAAAppgAA0KgAANmoAAAAqQAACakAANCpAADZqQAA8KkAAPmpAABQqgAAWaoAAPCrAAD5qwAAEP8AABn/AACgBAEAqQQBADANAQA5DQEAQA0BAEkNAQBmEAEAbxABAPAQAQD5EAEANhEBAD8RAQDQEQEA2REBAPASAQD5EgEAUBQBAFkUAQDQFAEA2RQBAFAWAQBZFgEAwBYBAMkWAQDQFgEA4xYBADAXAQA5FwEA4BgBAOkYAQBQGQEAWRkBAPAbAQD5GwEAUBwBAFkcAQBQHQEAWR0BAKAdAQCpHQEAUB8BAFkfAQAwYQEAOWEBAGBqAQBpagEAwGoBAMlqAQBQawEAWWsBAHBtAQB5bQEA8MwBAPnMAQDO1wEA/9cBAEDhAQBJ4QEA8OIBAPniAQDw5AEA+eQBAPHlAQD65QEAUOkBAFnpAQDw+wEA+fsBAGFzc2lnbmVkJN0hAGYAAAD9AQAAQAAAAEFTQ0lJQXNzaWduZWRBbnkk3SEAZgAAAAYCAAAuAAAAYWdlYWhleEFTQ0lJX0hleF9EaWdpdEFscGhhYmV0aWNhbHBoYWJldGljYXNjaWloZXhkaWdpdGJjQmlkaV9DbGFzc2JpZGljQmlkaV9Db250cm9sYmlkaWNsYXNzYmlkaWNvbnRyb2xiaWRpbUJpZGlfTWlycm9yZWRiaWRpbWlycm9yZWRiaWRpbWlycm9yaW5nZ2x5cGhCaWRpX01pcnJvcmluZ19HbHlwaGJpZGlwYWlyZWRicmFja2V0QmlkaV9QYWlyZWRfQnJhY2tldGJpZGlwYWlyZWRicmFja2V0dHlwZUJpZGlfUGFpcmVkX0JyYWNrZXRfVHlwZWJsa2JtZ2JwYmJwdGNhbm9uaWNhbGNvbWJpbmluZ2NsYXNzQ2Fub25pY2FsX0NvbWJpbmluZ19DbGFzc2Nhc2VkQ2FzZWRjYXNlZm9sZGluZ0Nhc2VfRm9sZGluZ2Nhc2VpZ25vcmFibGVDYXNlX0lnbm9yYWJsZWNjY2NlQ29tcG9zaXRpb25fRXhjbHVzaW9uY2hhbmdlc3doZW5jYXNlZm9sZGVkQ2hhbmdlc19XaGVuX0Nhc2Vmb2xkZWRjaGFuZ2Vzd2hlbmNhc2VtYXBwZWRDaGFuZ2VzX1doZW5fQ2FzZW1hcHBlZGNoYW5nZXN3aGVubG93ZXJjYXNlZENoYW5nZXNfV2hlbl9Mb3dlcmNhc2VkY2hhbmdlc3doZW5uZmtjY2FzZWZvbGRlZENoYW5nZXNfV2hlbl9ORktDX0Nhc2Vmb2xkZWRjaGFuZ2Vzd2hlbnRpdGxlY2FzZWRDaGFuZ2VzX1doZW5fVGl0bGVjYXNlZGNoYW5nZXN3aGVudXBwZXJjYXNlZENoYW5nZXNfV2hlbl9VcHBlcmNhc2VkY2ljamthY2NvdW50aW5nbnVtZXJpY2tBY2NvdW50aW5nTnVtZXJpY2Nqa2NvbXBhdGliaWxpdHl2YXJpYW50a0NvbXBhdGliaWxpdHlWYXJpYW50Y2praWljb3Jla0lJQ29yZWNqa2lyZ2dzb3VyY2VrSVJHX0dTb3VyY2Vjamtpcmdoc291cmNla0lSR19IU291cmNlY2praXJnanNvdXJjZWtJUkdfSlNvdXJjZWNqa2lyZ2twc291cmNla0lSR19LUFNvdXJjZWNqa2lyZ2tzb3VyY2VrSVJHX0tTb3VyY2Vjamtpcmdtc291cmNla0lSR19NU291cmNlY2praXJnc3NvdXJjZWtJUkdfU1NvdXJjZWNqa2lyZ3Rzb3VyY2VrSVJHX1RTb3VyY2Vjamtpcmd1a3NvdXJjZWtJUkdfVUtTb3VyY2Vjamtpcmd1c291cmNla0lSR19VU291cmNlY2praXJndnNvdXJjZWtJUkdfVlNvdXJjZWNqa290aGVybnVtZXJpY2tPdGhlck51bWVyaWNjamtwcmltYXJ5bnVtZXJpY2tQcmltYXJ5TnVtZXJpY2Nqa3JzdW5pY29kZWtSU1VuaWNvZGVjb21wZXhGdWxsX0NvbXBvc2l0aW9uX0V4Y2x1c2lvbmNvbXBvc2l0aW9uZXhjbHVzaW9uY3djZmN3Y21jd2tjZmN3bGN3dGN3dWRhc2hEYXNoZGVjb21wb3NpdGlvbm1hcHBpbmdEZWNvbXBvc2l0aW9uX01hcHBpbmdkZWNvbXBvc2l0aW9udHlwZURlY29tcG9zaXRpb25fVHlwZWRlZmF1bHRpZ25vcmFibGVjb2RlcG9pbnREZWZhdWx0X0lnbm9yYWJsZV9Db2RlX1BvaW50ZGVwRGVwcmVjYXRlZGRlcHJlY2F0ZWRkaWRpYURpYWNyaXRpY2RpYWNyaXRpY2RtZHRlYUVhc3RfQXNpYW5fV2lkdGhlYXN0YXNpYW53aWR0aGViYXNlRW1vamlfTW9kaWZpZXJfQmFzZWVjb21wRW1vamlfQ29tcG9uZW50ZW1vZEVtb2ppX01vZGlmaWVyZW1vamlFbW9qaWVtb2ppY29tcG9uZW50ZW1vamltb2RpZmllcmVtb2ppbW9kaWZpZXJiYXNlZW1vamlwcmVzZW50YXRpb25FbW9qaV9QcmVzZW50YXRpb25lcHJlc2VxdWlkZW9FcXVpdmFsZW50X1VuaWZpZWRfSWRlb2dyYXBoZXF1aXZhbGVudHVuaWZpZWRpZGVvZ3JhcGhleHBhbmRzb25uZmNFeHBhbmRzX09uX05GQ2V4cGFuZHNvbm5mZEV4cGFuZHNfT25fTkZEZXhwYW5kc29ubmZrY0V4cGFuZHNfT25fTkZLQ2V4cGFuZHNvbm5ma2RFeHBhbmRzX09uX05GS0RleHRFeHRlbmRlcmV4dGVuZGVkcGljdG9ncmFwaGljRXh0ZW5kZWRfUGljdG9ncmFwaGljZXh0ZW5kZXJleHRwaWN0ZmNuZmtjRkNfTkZLQ19DbG9zdXJlZmNuZmtjY2xvc3VyZWZ1bGxjb21wb3NpdGlvbmV4Y2x1c2lvbmdjZ2NiZ2VuZXJhbGNhdGVnb3J5Z3JhcGhlbWViYXNlR3JhcGhlbWVfQmFzZWdyYXBoZW1lY2x1c3RlcmJyZWFrZ3JhcGhlbWVleHRlbmRHcmFwaGVtZV9FeHRlbmRncmFwaGVtZWxpbmtHcmFwaGVtZV9MaW5rZ3JiYXNlZ3JleHRncmxpbmtoYW5ndWxzeWxsYWJsZXR5cGVIYW5ndWxfU3lsbGFibGVfVHlwZWhleEhleF9EaWdpdGhleGRpZ2l0aHN0aHlwaGVuSHlwaGVuaWRjSURfQ29udGludWVpZGNvbXBhdG1hdGhjb250aW51ZUlEX0NvbXBhdF9NYXRoX0NvbnRpbnVlaWRjb21wYXRtYXRoc3RhcnRJRF9Db21wYXRfTWF0aF9TdGFydGlkY29udGludWVpZGVvSWRlb2dyYXBoaWNpZGVvZ3JhcGhpY2lkc0lEX1N0YXJ0aWRzYklEU19CaW5hcnlfT3BlcmF0b3JpZHNiaW5hcnlvcGVyYXRvcmlkc3RJRFNfVHJpbmFyeV9PcGVyYXRvcmlkc3RhcnRpZHN0cmluYXJ5b3BlcmF0b3JpZHN1SURTX1VuYXJ5X09wZXJhdG9yaWRzdW5hcnlvcGVyYXRvcmluY2JJbmRpY19Db25qdW5jdF9CcmVha2luZGljY29uanVuY3RicmVha2luZGljcG9zaXRpb25hbGNhdGVnb3J5SW5kaWNfUG9zaXRpb25hbF9DYXRlZ29yeWluZGljc3lsbGFiaWNjYXRlZ29yeUluZGljX1N5bGxhYmljX0NhdGVnb3J5aW5wY2luc2Npc2NJU09fQ29tbWVudGphbW9zaG9ydG5hbWVKYW1vX1Nob3J0X05hbWVqZ0pvaW5pbmdfR3JvdXBqb2luY0pvaW5fQ29udHJvbGpvaW5jb250cm9sam9pbmluZ2dyb3Vwam9pbmluZ3R5cGVKb2luaW5nX1R5cGVqc25qdGthY2NvdW50aW5nbnVtZXJpY2tjb21wYXRpYmlsaXR5dmFyaWFudGtlaGNhdGtFSF9DYXRrZWhkZXNja0VIX0Rlc2NrZWhoZ2tFSF9IR2tlaGlmYW9rRUhfSUZBT2tlaGpzZXNoa0VIX0pTZXNoa2Vobm9taXJyb3JrRUhfTm9NaXJyb3JrZWhub3JvdGF0ZWtFSF9Ob1JvdGF0ZWtpaWNvcmVraXJnZ3NvdXJjZWtpcmdoc291cmNla2lyZ2pzb3VyY2VraXJna3Bzb3VyY2VraXJna3NvdXJjZWtpcmdtc291cmNla2lyZ3Nzb3VyY2VraXJndHNvdXJjZWtpcmd1a3NvdXJjZWtpcmd1c291cmNla2lyZ3Zzb3VyY2Vrb3RoZXJudW1lcmlja3ByaW1hcnludW1lcmlja3JzdW5pY29kZWxiTGluZV9CcmVha0xvd2VyY2FzZV9NYXBwaW5nbGluZWJyZWFrbG9lTG9naWNhbF9PcmRlcl9FeGNlcHRpb25sb2dpY2Fsb3JkZXJleGNlcHRpb25Mb3dlcmNhc2Vsb3dlcmNhc2Vsb3dlcmNhc2VtYXBwaW5nbWF0aE1hdGhtY21Nb2RpZmllcl9Db21iaW5pbmdfTWFya21vZGlmaWVyY29tYmluaW5nbWFya25hTmFtZW5hMVVuaWNvZGVfMV9OYW1lbmFtZWFsaWFzTmFtZV9BbGlhc25jaGFyTm9uY2hhcmFjdGVyX0NvZGVfUG9pbnRuZmNxY05GQ19RdWlja19DaGVja25mY3F1aWNrY2hlY2tuZmRxY05GRF9RdWlja19DaGVja25mZHF1aWNrY2hlY2tuZmtjY2FzZWZvbGRORktDX0Nhc2Vmb2xkbmZrY2NmbmZrY3FjTkZLQ19RdWlja19DaGVja25ma2NxdWlja2NoZWNrbmZrY3NjZk5GS0NfU2ltcGxlX0Nhc2Vmb2xkbmZrY3NpbXBsZWNhc2Vmb2xkbmZrZHFjTkZLRF9RdWlja19DaGVja25ma2RxdWlja2NoZWNrbm9uY2hhcmFjdGVyY29kZXBvaW50bnROdW1lcmljX1R5cGVudW1lcmljdHlwZW51bWVyaWN2YWx1ZU51bWVyaWNfVmFsdWVudm9hbHBoYU90aGVyX0FscGhhYmV0aWNvY29tbWVudG9kaU90aGVyX0RlZmF1bHRfSWdub3JhYmxlX0NvZGVfUG9pbnRvZ3JleHRPdGhlcl9HcmFwaGVtZV9FeHRlbmRvaWRjT3RoZXJfSURfQ29udGludWVvaWRzT3RoZXJfSURfU3RhcnRvbG93ZXJPdGhlcl9Mb3dlcmNhc2VvbWF0aE90aGVyX01hdGhvdGhlcmFscGhhYmV0aWNvdGhlcmRlZmF1bHRpZ25vcmFibGVjb2RlcG9pbnRvdGhlcmdyYXBoZW1lZXh0ZW5kb3RoZXJpZGNvbnRpbnVlb3RoZXJpZHN0YXJ0b3RoZXJsb3dlcmNhc2VvdGhlcm1hdGhvdGhlcnVwcGVyY2FzZU90aGVyX1VwcGVyY2FzZW91cHBlcnBhdHN5blBhdHRlcm5fU3ludGF4cGF0dGVybnN5bnRheHBhdHRlcm53aGl0ZXNwYWNlUGF0dGVybl9XaGl0ZV9TcGFjZXBhdHdzcGNtUHJlcGVuZGVkX0NvbmNhdGVuYXRpb25fTWFya3ByZXBlbmRlZGNvbmNhdGVuYXRpb25tYXJrcW1hcmtRdW90YXRpb25fTWFya3F1b3RhdGlvbm1hcmtyYWRpY2FsUmFkaWNhbHJlZ2lvbmFsaW5kaWNhdG9yUmVnaW9uYWxfSW5kaWNhdG9ycmlzYnNjZlNpbXBsZV9DYXNlX0ZvbGRpbmdzY3JpcHRleHRlbnNpb25zc2N4c2RTb2Z0X0RvdHRlZHNlbnRlbmNlYnJlYWtzZW50ZW5jZXRlcm1pbmFsU2VudGVuY2VfVGVybWluYWxzZmNzaW1wbGVjYXNlZm9sZGluZ3NpbXBsZWxvd2VyY2FzZW1hcHBpbmdTaW1wbGVfTG93ZXJjYXNlX01hcHBpbmdzaW1wbGV0aXRsZWNhc2VtYXBwaW5nU2ltcGxlX1RpdGxlY2FzZV9NYXBwaW5nc2ltcGxldXBwZXJjYXNlbWFwcGluZ1NpbXBsZV9VcHBlcmNhc2VfTWFwcGluZ3NsY3NvZnRkb3R0ZWRXaGl0ZV9TcGFjZXN0Y3N0ZXJtc3VjdGNUaXRsZWNhc2VfTWFwcGluZ3Rlcm1UZXJtaW5hbF9QdW5jdHVhdGlvbnRlcm1pbmFscHVuY3R1YXRpb250aXRsZWNhc2VtYXBwaW5ndWNVcHBlcmNhc2VfTWFwcGluZ3VpZGVvVW5pZmllZF9JZGVvZ3JhcGh1bmljb2RlMW5hbWV1bmljb2RlcmFkaWNhbHN0cm9rZXVuaWZpZWRpZGVvZ3JhcGhVcHBlcmNhc2V1cHBlcmNhc2V1cHBlcmNhc2VtYXBwaW5ndXJzdmFyaWF0aW9uc2VsZWN0b3JWYXJpYXRpb25fU2VsZWN0b3J2ZXJ0aWNhbG9yaWVudGF0aW9uVmVydGljYWxfT3JpZW50YXRpb252b3Zzd2J3aGl0ZXNwYWNld29yZGJyZWFrd3NwYWNleGlkY1hJRF9Db250aW51ZXhpZGNvbnRpbnVleGlkc1hJRF9TdGFydHhpZHN0YXJ0eG9uZmN4b25mZHhvbmZrY3hvbmZrZAAAANz5IQADAAAA+N0hAAMAAADf+SEABAAAAOP5IQAPAAAAnG0mAAUAAADy+SEACgAAAPz5IQAKAAAA8vkhAAoAAAAG+iEADQAAAOP5IQAPAAAAE/ohAAIAAAAV+iEACgAAAB/6IQAFAAAAJPohAAwAAAAw+iEACQAAABX6IQAKAAAAOfohAAsAAAAk+iEADAAAAET6IQAFAAAASfohAA0AAABW+iEADAAAAEn6IQANAAAAYvohABIAAAB0+iEAFAAAAIj6IQARAAAAmfohABMAAACs+iEAFQAAAMH6IQAYAAAA2fohAAMAAAByOSgABQAAAIArKAAFAAAAcjkoAAUAAADc+iEAAwAAAHT6IQAUAAAA3/ohAAMAAACZ+iEAEwAAAOL6IQADAAAAwfohABgAAADl+iEAFwAAAPz6IQAZAAAAFfshAAUAAAAa+yEABQAAAB/7IQAL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dXJyZW5jeV9TeW1ib2xkYXNocHVuY3R1YXRpb25EYXNoX1B1bmN0dWF0aW9uZGVjaW1hbG51bWJlckRlY2ltYWxfTnVtYmVyZW5jbG9zaW5nbWFya0VuY2xvc2luZ19NYXJrZmluYWxwdW5jdHVhdGlvbkZpbmFsX1B1bmN0dWF0aW9uZm9ybWF0aW5pdGlhbHB1bmN0dWF0aW9uSW5pdGlhbF9QdW5jdHVhdGlvbmxMZXR0ZXJsZXR0ZXJsZXR0ZXJudW1iZXJMZXR0ZXJfTnVtYmVybGluZXNlcGFyYXRvckxpbmVfU2VwYXJhdG9ybGxMb3dlcmNhc2VfTGV0dGVybG1Nb2RpZmllcl9MZXR0ZXJsb090aGVyX0xldHRlcmxvd2VyY2FzZWxldHRlclRpdGxlY2FzZV9MZXR0ZXJsdVVwcGVyY2FzZV9MZXR0ZXJtbWFya21hdGhzeW1ib2xNYXRoX1N5bWJvbG1jU3BhY2luZ19NYXJrbWVtbk5vbnNwYWNpbmdfTWFya21vZGlmaWVybGV0dGVybW9kaWZpZXJzeW1ib2xNb2RpZmllcl9TeW1ib2xuZG5sbm9PdGhlcl9OdW1iZXJub25zcGFjaW5nbWFya29wZW5wdW5jdHVhdGlvbk9wZW5fUHVuY3R1YXRpb25vdGhlcm90aGVybGV0dGVyb3RoZXJudW1iZXJvdGhlcnB1bmN0dWF0aW9uT3RoZXJfUHVuY3R1YXRpb25vdGhlcnN5bWJvbE90aGVyX1N5bWJvbHBQdW5jdHVhdGlvbnBhcmFncmFwaHNlcGFyYXRvclBhcmFncmFwaF9TZXBhcmF0b3JwY3BkcGVwZnBvcHJpdmF0ZXVzZXBzcHVuY3R1YXRpb25zc2VwYXJhdG9yU2VwYXJhdG9yc2tzbXNvc3BhY2VzZXBhcmF0b3JTcGFjZV9TZXBhcmF0b3JzcGFjaW5nbWFya3N1cnJvZ2F0ZXRpdGxlY2FzZWxldHRlcnVwcGVyY2FzZWxldHRlcnp6bHpwenPXFCgAAQAAAFQ+JgAFAAAA6CEiAAsAAADzISIADAAAAP8hIgACAAAAASIiAAcAAADy3SEAAgAAAAgiIgAGAAAADiIiABAAAAAeIiIAEQAAAC8iIgACAAAA9x0iAAoAAAAjzyUABQAAAAEiIgAHAAAAMSIiAAIAAAAz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bmF0b2xpYW5oaWVyb2dseXBoc0FuYXRvbGlhbl9IaWVyb2dseXBoc2FyYWJBcmFiaWNhcmFiaWNhcm1lbmlhbkFybWVuaWFuYXJtaUltcGVyaWFsX0FyYW1haWNhcm1uYXZlc3RhbkF2ZXN0YW5hdnN0YmFsaUJhbGluZXNlYmFsaW5lc2ViYW11QmFtdW1iYW11bWJhc3NCYXNzYV9WYWhiYXNzYXZhaGJhdGFrQmF0YWtiYXRrYmVuZ0JlbmdhbGliZW5nYWxpYmhhaWtzdWtpQmhhaWtzdWtpYmhrc2JvcG9Cb3BvbW9mb2JvcG9tb2ZvYnJhaEJyYWhtaWJyYWhtaWJyYWlCcmFpbGxlYnJhaWxsZWJ1Z2lCdWdpbmVzZWJ1Z2luZXNlYnVoZEJ1aGlkYnVoaWRjYWttQ2hha21hY2FuYWRpYW5hYm9yaWdpbmFsQ2FuYWRpYW5fQWJvcmlnaW5hbGNhbnNjYXJpQ2FyaWFuY2FyaWFuY2F1Y2FzaWFuYWxiYW5pYW5jaGFrbWFjaGFtQ2hhbWNoZXJDaGVyb2tlZWNoZXJva2VlY2hvcmFzbWlhbkNob3Jhc21pYW5jaHJzY29tbW9uQ29tbW9uY29wdENvcHRpY2NvcHRpY2NwbW5DeXByb19NaW5vYW5jcHJ0Q3lwcmlvdGN1bmVpZm9ybUN1bmVpZm9ybWN5cHJpb3RjeXByb21pbm9hbmN5cmlsbGljQ3lyaWxsaWNjeXJsZGVzZXJldERlc2VyZXRkZXZhRGV2YW5hZ2FyaWRldmFuYWdhcmlkaWFrRGl2ZXNfQWt1cnVkaXZlc2FrdXJ1ZG9nckRvZ3JhZG9ncmFkc3J0ZHVwbER1cGxveWFuZHVwbG95YW5lZ3lwRWd5cHRpYW5fSGllcm9nbHlwaHNlZ3lwdGlhbmhpZXJvZ2x5cGhzZWxiYUVsYmFzYW5lbGJhc2FuZWx5bUVseW1haWNlbHltYWljZXRoaUV0aGlvcGljZXRoaW9waWNnYXJhR2FyYXlnYXJheWdlb3JHZW9yZ2lhbmdlb3JnaWFuZ2xhZ0dsYWdvbGl0aWNnbGFnb2xpdGljZ29uZ0d1bmphbGFfR29uZGlnb25tTWFzYXJhbV9Hb25kaWdvdGhHb3RoaWNnb3RoaWNncmFuR3JhbnRoYWdyYW50aGFncmVla0dyZWVrZ3Jla2d1amFyYXRpR3VqYXJhdGlndWpyZ3VraEd1cnVuZ19LaGVtYWd1bmphbGFnb25kaWd1cm11a2hpR3VybXVraGlndXJ1Z3VydW5na2hlbWFoYW5IYW5oYW5nSGFuZ3VsaGFuZ3VsaGFuaWhhbmlmaXJvaGluZ3lhSGFuaWZpX1JvaGluZ3lhaGFub0hhbnVub29oYW51bm9vaGF0ckhhdHJhbmhhdHJhbmhlYnJIZWJyZXdoZWJyZXdoaXJhSGlyYWdhbmFoaXJhZ2FuYWhsdXdobW5nUGFoYXdoX0htb25naG1ucE55aWFrZW5nX1B1YWNodWVfSG1vbmdocmt0S2F0YWthbmFfT3JfSGlyYWdhbmFodW5nT2xkX0h1bmdhcmlhbmltcGVyaWFsYXJhbWFpY2luaGVyaXRlZEluaGVyaXRlZGluc2NyaXB0aW9uYWxwYWhsYXZpSW5zY3JpcHRpb25hbF9QYWhsYXZpaW5zY3JpcHRpb25hbHBhcnRoaWFuSW5zY3JpcHRpb25hbF9QYXJ0aGlhbml0YWxPbGRfSXRhbGljamF2YUphdmFuZXNlamF2YW5lc2VrYWl0aGlLYWl0aGlrYWxpS2F5YWhfTGlrYW5hS2F0YWthbmFrYW5uYWRhS2FubmFkYWthdGFrYW5ha2F0YWthbmFvcmhpcmFnYW5ha2F3aUthd2lrYXlhaGxpa2hhcktoYXJvc2h0aGlraGFyb3NodGhpa2hpdGFuc21hbGxzY3JpcHRLaGl0YW5fU21hbGxfU2NyaXB0a2htZXJLaG1lcmtobXJraG9qS2hvamtpa2hvamtpa2h1ZGF3YWRpS2h1ZGF3YWRpa2lyYXRyYWlLaXJhdF9SYWlraXRza25kYWtyYWlrdGhpbGFuYVRhaV9UaGFtbGFvTGFvbGFvb2xhdGluTGF0aW5sYXRubGVwY0xlcGNoYWxlcGNoYWxpbWJMaW1idWxpbWJ1bGluYUxpbmVhcl9BbGluYkxpbmVhcl9CbGluZWFyYWxpbmVhcmJsaXN1TGlzdWx5Y2lMeWNpYW5seWNpYW5seWRpTHlkaWFubHlkaWFubWFoYWphbmlNYWhhamFuaW1haGptYWthTWFrYXNhcm1ha2FzYXJtYWxheWFsYW1NYWxheWFsYW1tYW5kTWFuZGFpY21hbmRhaWNtYW5pTWFuaWNoYWVhbm1hbmljaGFlYW5tYXJjTWFyY2hlbm1hcmNoZW5tYXNhcmFtZ29uZGltZWRlZmFpZHJpbk1lZGVmYWlkcmlubWVkZm1lZXRlaW1heWVrTWVldGVpX01heWVrbWVuZE1lbmRlX0tpa2FrdWltZW5kZWtpa2FrdWltZXJjTWVyb2l0aWNfQ3Vyc2l2ZW1lcm9NZXJvaXRpY19IaWVyb2dseXBoc21lcm9pdGljY3Vyc2l2ZW1lcm9pdGljaGllcm9nbHlwaHNtaWFvTWlhb21seW1tb2RpTW9kaW1vbmdNb25nb2xpYW5tb25nb2xpYW5tcm9Ncm9tcm9vbXRlaW11bHRNdWx0YW5pbXVsdGFuaW15YW5tYXJNeWFubWFybXltcm5hYmF0YWVhbk5hYmF0YWVhbm5hZ21OYWdfTXVuZGFyaW5hZ211bmRhcmluYW5kTmFuZGluYWdhcmluYW5kaW5hZ2FyaW5hcmJPbGRfTm9ydGhfQXJhYmlhbm5iYXRuZXdhTmV3YW5ld3RhaWx1ZU5ld19UYWlfTHVlbmtvTmtvbmtvb25zaHVOdXNodW51c2h1bnlpYWtlbmdwdWFjaHVlaG1vbmdvZ2FtT2doYW1vZ2hhbW9sY2hpa2lPbF9DaGlraW9sY2tvbGRodW5nYXJpYW5vbGRpdGFsaWNvbGRub3J0aGFyYWJpYW5vbGRwZXJtaWNPbGRfUGVybWljb2xkcGVyc2lhbk9sZF9QZXJzaWFub2xkc29nZGlhbk9sZF9Tb2dkaWFub2xkc291dGhhcmFiaWFuT2xkX1NvdXRoX0FyYWJpYW5vbGR0dXJraWNPbGRfVHVya2ljb2xkdXlnaHVyT2xkX1V5Z2h1cm9sb25hbE9sX09uYWxvbmFvb3JpeWFPcml5YW9ya2hvcnlhb3NhZ2VPc2FnZW9zZ2Vvc21hT3NtYW55YW9zbWFueWFvdWdycGFoYXdoaG1vbmdwYWxtUGFsbXlyZW5lcGFsbXlyZW5lcGF1Y1BhdV9DaW5fSGF1cGF1Y2luaGF1cGVybXBoYWdQaGFnc19QYXBoYWdzcGFwaGxpcGhscFBzYWx0ZXJfUGFobGF2aXBobnhQaG9lbmljaWFucGhvZW5pY2lhbnBscmRwcnRpcHNhbHRlcnBhaGxhdmlxYWFjcWFhaXJlamFuZ1JlamFuZ3Jqbmdyb2hncnVuaWNSdW5pY3J1bnJzYW1hcml0YW5TYW1hcml0YW5zYW1yc2FyYnNhdXJTYXVyYXNodHJhc2F1cmFzaHRyYXNnbndTaWduV3JpdGluZ3NoYXJhZGFTaGFyYWRhc2hhdmlhblNoYXZpYW5zaGF3c2hyZHNpZGRTaWRkaGFtc2lkZGhhbXNpZ253cml0aW5nc2luZHNpbmhTaW5oYWxhc2luaGFsYXNvZ2RTb2dkaWFuc29nZGlhbnNvZ29zb3JhU29yYV9Tb21wZW5nc29yYXNvbXBlbmdzb3lvU295b21ib3NveW9tYm9zdW5kU3VuZGFuZXNlc3VuZGFuZXNlc3VudVN1bnV3YXJzdW51d2Fyc3lsb1N5bG90aV9OYWdyaXN5bG90aW5hZ3Jpc3lyY1N5cmlhY3N5cmlhY3RhZ2Fsb2dUYWdhbG9ndGFnYlRhZ2JhbndhdGFnYmFud2F0YWlsZVRhaV9MZXRhaXRoYW10YWl2aWV0VGFpX1ZpZXR0YWtyVGFrcml0YWtyaXRhbGV0YWx1dGFtaWxUYW1pbHRhbWx0YW5nVGFuZ3V0dGFuZ3NhVGFuZ3NhdGFuZ3V0dGF2dHRlbHVUZWx1Z3V0ZWx1Z3V0Zm5nVGlmaW5hZ2h0Z2xndGhhYVRoYWFuYXRoYWFuYXRoYWlUaGFpdGliZXRhblRpYmV0YW50aWJ0dGlmaW5hZ2h0aXJoVGlyaHV0YXRpcmh1dGF0bnNhdG9kaHJpVG9kaHJpdG9kcnRvdG9Ub3RvdHVsdXRpZ2FsYXJpVHVsdV9UaWdhbGFyaXR1dGd1Z2FyVWdhcml0aWN1Z2FyaXRpY3ZhaVZhaXZhaWl2aXRoVml0aGt1cWl2aXRoa3VxaXdhbmNob1dhbmNob3dhcmFXYXJhbmdfQ2l0aXdhcmFuZ2NpdGl3Y2hveHBlb3hzdXh5ZXppWWV6aWRpeWV6aWRpeWlZaXlpaWl6YW5hYmF6YXJzcXVhcmVaYW5hYmF6YXJfU3F1YXJlemFuYnppbmh6eXl5enp6egD0LCIABQAAAPksIgAFAAAA/iwiAAQAAAD5LCIABQAAAAItIgAEAAAABi0iABIAAAAYLSIABAAAABwtIgAEAAAAIC0iABQAAAA0LSIAFQAAAEktIgAEAAAATS0iAAYAAABTLSIABgAAAE0tIgAG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NCIADQAAAKk0IgAEAAAArTQiABAAAAC9NCIABAAAAME0IgAUAAAA1TQiAA8AAACtNCIAEAAAAOQ0IgATAAAAwTQiABQAAAD3NCIABAAAAPs0IgAEAAAA/zQiAAQAAAAKNCIACQAAAAM1IgAEAAAABzUiAAQAAAALNSIABAAAAA81IgAJAAAAGDUiAAkAAAAPNSIACQAAACE1IgADAAAAJDUiAAMAAAAnNSIABAAAACQ1IgADAAAAKzUiAAQAAACANCIADAAAAC81IgAEAAAAMzUiAAcAAAA6NSIABwAAADM1IgAHAAAAQTUiAAcAAABINSIABwAAAE81IgAEAAAASDUiAAcAAABTNSIACQAAAFw1IgAJAAAAZTUiAAQAAABpNSIACwAAAHQ1IgAKAAAAaTUiAAsAAAB+NSIABAAAAII1IgALAAAAjTUiAAsAAACCNSIACwAAAJg1IgAEAAAAnDUiABEAAACtNSIABAAAAFw1IgAJAAAAsTUiAAQAAAC1NSIABAAAALk1IgAJAAAAwjUiAAsAAADNNSIAAwAAANA1IgADAAAA0zUiAAQAAADQNSIAAwAAANc1IgAEAAAA2zUiAAUAAADgNSIABQAAANs1IgAFAAAA5TUiABQAAACNMSIAFgAAAPk1IgAEAAAA/TUiAAUAAAACNiIABQAAAP01IgAFAAAABzYiAAcAAAAONiIACAAAABY2IgAEAAAADjYiAAgAAAAaNiIADAAAAL8xIgANAAAAJjYiAAkAAABFMiIACgAAAC82IgAPAAAAnDUiABEAAAA+NiIACQAAAEc2IgAKAAAAUTYiAAoAAABbNiIACwAAAGY2IgAKAAAAcDYiAAsAAAB7NiIADwAAAIo2IgARAAAAmzYiAAkAAACkNiIACgAAAK42IgAJAAAAtzYiAAoAAADBNiIABgAAAMc2IgAHAAAAzjYiAAQAAADHNiIABwAAANI2IgAFAAAA1zYiAAUAAADcNiIABAAAAKQ2IgAKAAAA4DYiAAQAAADXNiIABQAAAOQ2IgAFAAAA6TYiAAUAAADuNiIABAAAAOk2IgAFAAAA8jYiAAQAAAD2NiIABwAAAP02IgAHAAAA9jYiAAcAAAAENyIABAAAALc2IgAKAAAACDciAAsAAAB9MSIADAAAABM3IgAEAAAAFzciAAkAAAAgNyIACQAAABc3IgAJAAAAKTciAAQAAAAtNyIACwAAADg3IgAJAAAALTciAAsAAABBNyIABAAAAEc2IgAKAAAARTciAAQAAABJNyIACAAAAFE3IgAHAAAASTciAAgAAABYNyIABAAAAAEyIgAVAAAAXDciAAQAAABgNyIADwAAAG83IgAEAAAAczciAAoAAAB9NyIACgAAAHM3IgAKAAAAhzciAAQAAAD7NCIABAAAAIs3IgAEAAAAKzIiABYAAACPNyIADgAAAGA3IgAPAAAAnTciAAQAAAD2LiIABgAAAKE3IgAEAAAA5DEiAAkAAAClNyIABgAAAKs3IgAGAAAAsTciAAQAAACrNyIABgAAALU3IgAEAAAAIDEiAA8AAAC5NyIABQAAAL43IgAFAAAAwzciAAQAAAC+NyIABQAAAMc3IgAJAAAA0DciAAkAAADZNyIABAAAANA3IgAJAAAA3TciAAQAAACKNiIAEQAAAOE3IgAEAAAA5TciAAoAAADvNyIACgAAAOU3IgAKAAAA+TciAAQAAAD9NyIACwAAAAg4IgAHAAAADzgiAAcAAAAWOCIABwAAAB04IgAHAAAAJDgiAAQAAAAdOCIABwAAACg4IgAEAAAADzgiAAcAAAAsOCIABAAAADA4IgAHAAAANzgiAAcAAAAwOCIABwAAAD44IgALAAAA/TciAAsAAABJOCIABAAAACEzIgAJAAAATTgiAAQAAABROCIABwAAAFg4IgAHAAAAUTgiAAcAAABfOCIABAAAAGM4IgAHAAAAajgiAAcAAABjOCIABwAAAHE4IgAEAAAAcDYiAAsAAAB1OCIABAAAAHk4IgAMAAAAhTgiAAsAAAB5OCIADAAAAJA4IgAEAAAAlDgiAAcAAACbOCIABwAAAJQ4IgAHAAAAojgiAAQAAACmOCIACQAAAK84IgAJAAAApjgiAAkAAAC4OCIABAAAALw4IgAHAAAAwzgiAAcAAAC8OCIABwAAAMo4IgAEAAAAzjgiAAwAAADaOCIACwAAAM44IgAMAAAA5TgiAAQAAADpOCIABgAAAO84IgAGAAAA6TgiAAYAAAD1OCIABwAAAPw4IgAHAAAAAzkiAAQAAAAHOSIACAAAAA85IgAIAAAABzkiAAgAAAAXOSIABQAAABw5IgAGAAAAIjkiAAcAAABPMyIACAAAACk5IgAHAAAAMDkiAAgAAAA4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BgAA7QYAAPAGAAD5BgAAAQkAAAMJAAAFCQAAOQkAADwJAABNCQAAUAkAAFQJAABYCQAAcAkAAIEJAACDCQAAhQkAAIwJAACPCQAAkAkAAJMJAACoCQAAqgkAALAJAACyCQAAsgkAALYJAAC5CQAAvAkAALwJAAC+CQAAxAkAAMcJAADICQAAywkAAM0JAADXCQAA1wkAANwJAADdCQAA3wkAAOMJAADmCQAA+gkAAAIKAAACCgAABQoAAAoKAAAPCgAAEAoAABMKAAAoCgAAKgoAADAKAAAyCgAAMwoAADUKAAA2CgAAOAoAADkKAAA8CgAAPAoAAD4KAABCCgAARwoAAEgKAABLCgAATQoAAFkKAABcCgAAXgoAAF4KAABmCgAAdAoAAIEKAACDCgAAhQoAAIsKAACNCgAAjQoAAI8KAACRCgAAkwoAAKgKAACqCgAAsAoAALIKAACzCgAAtQoAALkKAAC8CgAAxQoAAMcKAADJCgAAywoAAM0KAADQCgAA0AoAAOAKAADgCgAA5goAAO8KAAABCwAAAwsAAAULAAAMCwAADwsAABALAAATCwAAKAsAACoLAAAwCwAAMgsAADMLAAA2CwAAOQsAADwLAABDCwAARwsAAEgLAABLCwAATQsAAFYLAABXCwAAXAsAAF0LAABfCwAAYQsAAGYLAABwCwAAggsAAIMLAACFCwAAigsAAI4LAACQCwAAkgsAAJULAACZCwAAmgsAAJwLAACcCwAAngsAAJ8LAACjCwAApAsAAKgLAACqCwAArgsAALULAAC3CwAAuQsAAL4LAADCCwAAxgsAAMgLAADKCwAAzQsAANcLAADXCwAA5wsAAPILAAABDAAAAwwAAAUMAAAMDAAADgwAABAMAAASDAAAKAwAACoMAAAzDAAANQwAADkMAAA+DAAARAwAAEYMAABIDAAASgwAAE0MAABVDAAAVgwAAGAMAABhDAAAZgwAAG8MAACCDAAAgwwAAIUMAACMDAAAjgwAAJAMAACSDAAAqAwAAKoMAACzDAAAtQwAALkMAAC+DAAAxAwAAMYMAADIDAAAygwAAM0MAADVDAAA1gwAAN4MAADeDAAA4AwAAOEMAADmDAAA7wwAAAINAAADDQAABQ0AAAwNAAAODQAAEA0AABINAAAoDQAAKg0AADkNAAA+DQAAQw0AAEYNAABI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EwAAFRMAABgTAABaEwAAgBMAAI8TAACgEwAA9RMAAPgTAAD9EwAAARQAAGwWAABvFgAAfxYAAIEWAACaFgAAoBYAAOoWAADxFgAA+BYAAAAXAAARFwAAHxcAADEXAABAFwAAURcAAGAXAABsFwAAbhcAAHAXAACAFwAAsxcAANcXAADXFwAA3BcAANwXAAAgGAAAeBgAAIAYAACEGAAAhxgAAKgYAACqGAAAqhgAALAYAAD1GAAAABkAAB4ZAABQGQAAbRkAAHAZAAB0GQAAgBkAAKsZAACwGQAAyRkAAAAaAAAWGgAAIBoAAFQaAACnGgAApxoAAAUbAAAzGwAARRsAAEwbAACDGwAAoBsAAK4bAACvGwAAuhsAAOUbAAAAHAAAIxwAAE0cAABPHAAAWhwAAH0cAACAHAAAihwAAJAcAAC6HAAAvRwAAL8cAADpHAAA7BwAAO4cAADzHAAA9RwAAPYcAAD6HAAA+hwAAAAdAAC/HQAAAB4AABUfAAAYHwAAHR8AACAfAABFHwAASB8AAE0fAABQHwAAVx8AAFkfAABZHwAAWx8AAFsfAABdHwAAXR8AAF8fAAB9HwAAgB8AALQfAAC2HwAAvB8AAL4fAAC+HwAAwh8AAMQfAADGHwAAzB8AANAfAADTHwAA1h8AANsfAADgHwAA7B8AAPIfAAD0HwAA9h8AAPwfAABxIAAAcSAAAH8gAAB/IAAAkCAAAJwgAAACIQAAAiEAAAchAAAHIQAACiEAABMhAAAVIQAAFSEAABkhAAAdIQAAJCEAACQhAAAmIQAAJiEAACghAAAoIQAAKiEAAC0hAAAvIQAAOSEAADwhAAA/IQAARSEAAEkhAABOIQAATiEAAIMhAACEIQAAACwAAOQsAADrLAAA7iwAAPIsAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAMC0AAGctAABvLQAAby0AAIAtAACWLQAAoC0AAKYtAACoLQAAri0AALAtAAC2LQAAuC0AAL4tAADALQAAxi0AAMgtAADOLQAA0C0AANYtAADYLQAA3i0AAC8uAAAvLgAABTAAAAYwAAAxMAAANTAAADswAAA8MAAAQTAAAJYwAACdMAAAnzAAAKEwAAD6MAAA/DAAAP8wAAAFMQAALzEAADExAACOMQAAoDEAAL8xAADwMQAA/zEAAAA0AAC/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7gEAH+4BACHuAQAi7gEAJO4BACTuAQAn7gEAJ+4BACnuAQAy7gEANO4BADfuAQA57gEAOe4BADvuAQA77gEAQu4BAELuAQBH7gEAR+4BAEnuAQBJ7gEAS+4BAEvuAQBN7gEAT+4BAFHuAQBS7gEAVO4BAFTuAQBX7gEAV+4BAFnuAQBZ7gEAW+4BAFvuAQBd7gEAXe4BAF/uAQBf7gEAYe4BAGLuAQBk7gEAZO4BAGfuAQBq7gEAbO4BAHLuAQB07gEAd+4BAHnuAQB87gEAfu4BAH7uAQCA7gEAie4BAIvuAQCb7gEAoe4BAKPuAQCl7gEAqe4BAKvuAQC77gEAAAACAN+mAgAApwIAObcCAEC3AgAduAIAILgCAKHOAgCwzgIA4OsCAPDrAgBd7gIAAPgCAB36AgAAAAMAShMDAFATAwCvIwMA7hYAAPAWAABgIQAAgiEAAIUhAACIIQAABzAAAAcwAAAhMAAAKTAAADgwAAA6MAAA5qYAAO+mAABAAQEAdAEBAEEDAQBBAwEASgMBAEoDAQDRAwEA1QMBAAAkAQBuJAEAKCAAACggAABhAAAAegAAALUAAAC1AAAA3wAAAPYAAAD4AAAA/wAAAAEBAAABAQAAAwEAAAMBAAAFAQAABQEAAAcBAAAHAQAACQEAAAkBAAALAQAACwEAAA0BAAANAQAADwEAAA8BAAARAQAAEQEAABMBAAATAQAAFQEAABUBAAAXAQAAFwEAABkBAAAZAQAAGwEAABsBAAAdAQAAHQEAAB8BAAAfAQAAIQEAACEBAAAjAQAAIwEAACUBAAAlAQAAJwEAACcBAAApAQAAKQEAACsBAAArAQAALQEAAC0BAAAvAQAALwEAADEBAAAxAQAAMwEAADMBAAA1AQAANQEAADcBAAA4AQAAOgEAADoBAAA8AQAAPAEAAD4BAAA+AQAAQAEAAEABAABCAQAAQgEAAEQBAABEAQAARgEAAEYBAABIAQAASQEAAEsBAABLAQAATQEAAE0BAABPAQAATwEAAFEBAABRAQAAUwEAAFMBAABVAQAAVQEAAFcBAABXAQAAWQEAAFkBAABbAQAAWwEAAF0BAABdAQAAXwEAAF8BAABhAQAAYQEAAGMBAABjAQAAZQEAAGUBAABnAQAAZwEAAGkBAABpAQAAawEAAGsBAABtAQAAbQEAAG8BAABvAQAAcQEAAHEBAABzAQAAcwEAAHUBAAB1AQAAdwEAAHcBAAB6AQAAegEAAHwBAAB8AQAAfgEAAIABAACDAQAAgwEAAIUBAACFAQAAiAEAAIgBAACMAQAAjQEAAJIBAACSAQAAlQEAAJUBAACZAQAAmwEAAJ4BAACeAQAAoQEAAKEBAACjAQAAowEAAKUBAAClAQAAqAEAAKgBAACqAQAAqwEAAK0BAACtAQAAsAEAALABAAC0AQAAtAEAALYBAAC2AQAAuQEAALoBAAC9AQAAvwEAAMYBAADGAQAAyQEAAMkBAADMAQAAzAEAAM4BAADOAQAA0AEAANABAADSAQAA0gEAANQBAADUAQAA1gEAANYBAADYAQAA2AEAANoBAADaAQAA3AEAAN0BAADfAQAA3wEAAOEBAADhAQAA4wEAAOMBAADlAQAA5QEAAOcBAADnAQAA6QEAAOkBAADrAQAA6wEAAO0BAADtAQAA7wEAAPABAADzAQAA8wEAAPUBAAD1AQAA+QEAAPkBAAD7AQAA+wEAAP0BAAD9AQAA/wEAAP8BAAABAgAAAQIAAAMCAAADAgAABQIAAAUCAAAHAgAABwIAAAkCAAAJAgAACwIAAAsCAAANAgAADQIAAA8CAAAPAgAAEQIAABECAAATAgAAEwIAABUCAAAVAgAAFwIAABcCAAAZAgAAGQIAABsCAAAbAgAAHQIAAB0CAAAfAgAAHwIAACECAAAhAgAAIwIAACMCAAAlAgAAJQIAACcCAAAnAgAAKQIAACkCAAArAgAAKwIAAC0CAAAtAgAALwIAAC8CAAAxAgAAMQIAADMCAAA5AgAAPAIAADwCAAA/AgAAQAIAAEICAABCAgAARwIAAEcCAABJAgAASQIAAEsCAABLAgAATQIAAE0CAABPAgAAkwIAAJUCAACvAgAAcQMAAHEDAABzAwAAcwMAAHcDAAB3AwAAewMAAH0DAACQAwAAkAMAAKwDAADOAwAA0AMAANEDAADVAwAA1wMAANkDAADZAwAA2wMAANsDAADdAwAA3QMAAN8DAADfAwAA4QMAAOEDAADjAwAA4wMAAOUDAADlAwAA5wMAAOcDAADpAwAA6QMAAOsDAADrAwAA7QMAAO0DAADvAwAA8wMAAPUDAAD1AwAA+AMAAPgDAAD7AwAA/AMAADAEAABfBAAAYQQAAGEEAABjBAAAYwQAAGUEAABlBAAAZwQAAGcEAABpBAAAaQQAAGsEAABrBAAAbQQAAG0EAABvBAAAbwQAAHEEAABxBAAAcwQAAHMEAAB1BAAAdQQAAHcEAAB3BAAAeQQAAHkEAAB7BAAAewQAAH0EAAB9BAAAfwQAAH8EAACBBAAAgQQAAIsEAACLBAAAjQQAAI0EAACPBAAAjwQAAJEEAACRBAAAkwQAAJMEAACVBAAAlQQAAJcEAACXBAAAmQQAAJkEAACbBAAAmwQAAJ0EAACdBAAAnwQAAJ8EAAChBAAAoQQAAKMEAACjBAAApQQAAKUEAACnBAAApwQAAKkEAACpBAAAqwQAAKsEAACtBAAArQQAAK8EAACvBAAAsQQAALEEAACzBAAAswQAALUEAAC1BAAAtwQAALcEAAC5BAAAuQQAALsEAAC7BAAAvQQAAL0EAAC/BAAAvwQAAMIEAADCBAAAxAQAAMQEAADGBAAAxgQAAMgEAADIBAAAygQAAMoEAADMBAAAzAQAAM4EAADPBAAA0QQAANEEAADTBAAA0wQAANUEAADVBAAA1wQAANcEAADZBAAA2QQAANsEAADbBAAA3QQAAN0EAADfBAAA3wQAAOEEAADhBAAA4wQAAOMEAADlBAAA5QQAAOcEAADnBAAA6QQAAOkEAADrBAAA6wQAAO0EAADtBAAA7wQAAO8EAADxBAAA8QQAAPMEAADzBAAA9QQAAPUEAAD3BAAA9wQAAPkEAAD5BAAA+wQAAPsEAAD9BAAA/QQAAP8EAAD/BAAAAQUAAAEFAAADBQAAAwUAAAUFAAAFBQAABwUAAAcFAAAJBQAACQUAAAsFAAALBQAADQUAAA0FAAAPBQAADwUAABEFAAARBQAAEwUAABMFAAAVBQAAFQUAABcFAAAXBQAAGQUAABkFAAAbBQAAGwUAAB0FAAAdBQAAHwUAAB8FAAAhBQAAIQUAACMFAAAjBQAAJQUAACUFAAAnBQAAJwUAACkFAAApBQAAKwUAACsFAAAtBQAALQUAAC8FAAAvBQAAYAUAAIgFAADQEAAA+hAAAP0QAAD/EAAA+BMAAP0TAACAHAAAiBwAAIocAACKHAAAAB0AACsdAABrHQAAdx0AAHkdAACaHQAAAR4AAAEeAAADHgAAAx4AAAUeAAAFHgAABx4AAAceAAAJHgAACR4AAAseAAALHgAADR4AAA0eAAAPHgAADx4AABEeAAARHgAAEx4AABMeAAAVHgAAFR4AABceAAAXHgAAGR4AABkeAAAbHgAAGx4AAB0eAAAdHgAAHx4AAB8eAAAhHgAAIR4AACMeAAAjHgAAJR4AACUeAAAnHgAAJx4AACkeAAApHgAAKx4AACseAAAtHgAALR4AAC8eAAAvHgAAMR4AADEeAAAzHgAAMx4AADUeAAA1HgAANx4AADceAAA5HgAAOR4AADseAAA7HgAAPR4AAD0eAAA/HgAAPx4AAEEeAABBHgAAQx4AAEMeAABFHgAARR4AAEceAABHHgAASR4AAEkeAABLHgAASx4AAE0eAABNHgAATx4AAE8eAABRHgAAUR4AAFMeAABTHgAAVR4AAFUeAABXHgAAVx4AAFkeAABZHgAAWx4AAFseAABdHgAAXR4AAF8eAABfHgAAYR4AAGEeAABjHgAAYx4AAGUeAABlHgAAZx4AAGceAABpHgAAaR4AAGseAABrHgAAbR4AAG0eAABvHgAAbx4AAHEeAABxHgAAcx4AAHMeAAB1HgAAdR4AAHceAAB3HgAAeR4AAHkeAAB7HgAAex4AAH0eAAB9HgAAfx4AAH8eAACBHgAAgR4AAIMeAACDHgAAhR4AAIUeAACHHgAAhx4AAIkeAACJHgAAix4AAIseAACNHgAAjR4AAI8eAACPHgAAkR4AAJEeAACTHgAAkx4AAJUeAACdHgAAnx4AAJ8eAAChHgAAoR4AAKMeAACjHgAApR4AAKUeAACnHgAApx4AAKkeAACpHgAAqx4AAKseAACtHgAArR4AAK8eAACvHgAAsR4AALEeAACzHgAAsx4AALUeAAC1HgAAtx4AALceAAC5HgAAuR4AALseAAC7HgAAvR4AAL0eAAC/HgAAvx4AAMEeAADBHgAAwx4AAMMeAADFHgAAxR4AAMceAADHHgAAyR4AAMkeAADLHgAAyx4AAM0eAADNHgAAzx4AAM8eAADRHgAA0R4AANMeAADTHgAA1R4AANUeAADXHgAA1x4AANkeAADZHgAA2x4AANseAADdHgAA3R4AAN8eAADfHgAA4R4AAOEeAADjHgAA4x4AAOUeAADlHgAA5x4AAOceAADpHgAA6R4AAOseAADrHgAA7R4AAO0eAADvHgAA7x4AAPEeAADxHgAA8x4AAPMeAAD1HgAA9R4AAPceAAD3HgAA+R4AAPkeAAD7HgAA+x4AAP0eAAD9HgAA/x4AAAcfAAAQHwAAFR8AACAfAAAnHwAAMB8AADcfAABAHwAARR8AAFAfAABXHwAAYB8AAGcfAABwHwAAfR8AAIAfAACHHwAAkB8AAJcfAACgHwAApx8AALAfAAC0HwAAth8AALcfAAC+HwAAvh8AAMIfAADEHwAAxh8AAMcfAADQHwAA0x8AANYfAADXHwAA4B8AAOcfAADyHwAA9B8AAPYfAAD3HwAACiEAAAohAAAOIQAADyEAABMhAAATIQAALyEAAC8hAAA0IQAANCEAADkhAAA5IQAAPCEAAD0hAABGIQAASSEAAE4hAABOIQAAhCEAAIQhAAAwLAAAXywAAGEsAABhLAAAZSwAAGYsAABoLAAAaCwAAGosAABqLAAAbCwAAGwsAABxLAAAcSwAAHMsAAB0LAAAdiwAAHssAACBLAAAgSwAAIMsAACDLAAAhSwAAIUsAACHLAAAhywAAIksAACJLAAAiywAAIssAACNLAAAjSwAAI8sAACPLAAAkSwAAJEsAACTLAAAkywAAJUsAACVLAAAlywAAJcsAACZLAAAmSwAAJssAACbLAAAnSwAAJ0sAACfLAAAnywAAKEsAAChLAAAoywAAKMsAAClLAAApSwAAKcsAACnLAAAqSwAAKksAACrLAAAqywAAK0sAACtLAAArywAAK8sAACxLAAAsSwAALMsAACzLAAAtSwAALUsAAC3LAAAtywAALksAAC5LAAAuywAALssAAC9LAAAvSwAAL8sAAC/LAAAwSwAAMEsAADDLAAAwywAAMUsAADFLAAAxywAAMcsAADJLAAAySwAAMssAADLLAAAzSwAAM0sAADPLAAAzywAANEsAADRLAAA0ywAANMsAADVLAAA1SwAANcsAADXLAAA2SwAANksAADbLAAA2ywAAN0sAADdLAAA3ywAAN8sAADhLAAA4SwAAOMsAADkLAAA7CwAAOwsAADuLAAA7iwAAPMsAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAQaYAAEGmAABDpgAAQ6YAAEWmAABFpgAAR6YAAEemAABJpgAASaYAAEumAABLpgAATaYAAE2mAABPpgAAT6YAAFGmAABRpgAAU6YAAFOmAABVpgAAVaYAAFemAABXpgAAWaYAAFmmAABbpgAAW6YAAF2mAABdpgAAX6YAAF+mAABhpgAAYaYAAGOmAABjpgAAZaYAAGWmAABnpgAAZ6YAAGmmAABppgAAa6YAAGumAABtpgAAbaYAAIGmAACBpgAAg6YAAIOmAACFpgAAhaYAAIemAACHpgAAiaYAAImmAACLpgAAi6YAAI2mAACNpgAAj6YAAI+mAACRpgAAkaYAAJOmAACTpgAAlaYAAJWmAACXpgAAl6YAAJmmAACZpgAAm6YAAJumAAAjpwAAI6cAACWnAAAlpwAAJ6cAACenAAAppwAAKacAACunAAArpwAALacAAC2nAAAvpwAAMacAADOnAAAzpwAANacAADWnAAA3pwAAN6cAADmnAAA5pwAAO6cAADunAAA9pwAAPacAAD+nAAA/pwAAQacAAEGnAABDpwAAQ6cAAEWnAABFpwAAR6cAAEenAABJpwAASacAAEunAABLpwAATacAAE2nAABPpwAAT6cAAFGnAABRpwAAU6cAAFOnAABVpwAAVacAAFenAABXpwAAWacAAFmnAABbpwAAW6cAAF2nAABdpwAAX6cAAF+nAABhpwAAYacAAGOnAABjpwAAZacAAGWnAABnpwAAZ6cAAGmnAABppwAAa6cAAGunAABtpwAAbacAAG+nAABvpwAAcacAAHinAAB6pwAAeqcAAHynAAB8pwAAf6cAAH+nAACBpwAAgacAAIOnAACDpwAAhacAAIWnAACHpwAAh6cAAIynAACMpwAAjqcAAI6nAACRpwAAkacAAJOnAACVpwAAl6cAAJenAACZpwAAmacAAJunAACbpwAAnacAAJ2nAACfpwAAn6cAAKGnAAChpwAAo6cAAKOnAAClpwAApacAAKenAACnpwAAqacAAKmnAACvpwAAr6cAALWnAAC1pwAAt6cAALenAAC5pwAAuacAALunAAC7pwAAvacAAL2nAAC/pwAAv6cAAMGnAADBpwAAw6cAAMOnAADIpwAAyKcAAMqnAADKpwAAzacAAM2nAADRpwAA0acAANOnAADTpwAA1acAANWnAADXpwAA16cAANmnAADZpwAA26cAANunAAD2pwAA9qcAAPqnAAD6pwAAMKsAAFqrAABgqwAAaKsAAHCrAAC/qwAAAPsAAAb7AAAT+wAAF/sAAEH/AABa/wAAKAQBAE8EAQDYBAEA+wQBAJcFAQChBQEAowUBALEFAQCzBQEAuQUBALsFAQC8BQEAwAwBAPIMAQBwDQEAhQ0BAMAYAQDfGAEAYG4BAH9uAQAa1AEAM9QBAE7UAQBU1AEAVtQBAGfUAQCC1AEAm9QBALbUAQC51AEAu9QBALvUAQC91AEAw9QBAMXUAQDP1AEA6tQBAAPVAQAe1QEAN9UBAFLVAQBr1QEAhtUBAJ/VAQC61QEA09UBAO7VAQAH1gEAItYBADvWAQBW1gEAb9YBAIrWAQCl1gEAwtYBANrWAQDc1gEA4dYBAPzWAQAU1wEAFtcBABvXAQA21wEATtcBAFDXAQBV1wEAcNcBAIjXAQCK1wEAj9cBAKrXAQDC1wEAxNcBAMnXAQDL1wEAy9cBAADfAQAJ3wEAC98BAB7fAQAl3wEAKt8BACLpAQBD6QEAAAMAAG8DAACDBAAAiQQAAJEFAAC9BQAAvwUAAL8FAADBBQAAwgUAAMQFAADFBQAAxwUAAMcFAAAQBgAAGgYAAEsGAABfBgAAcAYAAHAGAADWBgAA3AYAAN8GAADkBgAA5wYAAOgGAADqBgAA7QYAABEHAAARBwAAMAcAAEoHAACmBwAAsAcAAOsHAADzBwAA/QcAAP0HAAAWCAAAGQgAABsIAAAjCAAAJQgAACcIAAApCAAALQgAAFkIAABbCAAAlwgAAJ8IAADKCAAA4QgAAOMIAAADCQAAOgkAADwJAAA+CQAATwkAAFEJAABXCQAAYgkAAGMJAACBCQAAgwkAALwJAAC8CQAAvgkAAMQJAADHCQAAyAkAAMsJAADNCQAA1wkAANcJAADiCQAA4wkAAP4JAAD+CQAAAQoAAAMKAAA8CgAAPAoAAD4KAABCCgAARwoAAEgKAABLCgAATQoAAFEKAABRCgAAcAoAAHEKAAB1CgAAdQoAAIEKAACDCgAAvAoAALwKAAC+CgAAxQoAAMcKAADJCgAAywoAAM0KAADiCgAA4woAAPoKAAD/CgAAAQsAAAMLAAA8CwAAPAsAAD4LAABECwAARwsAAEgLAABLCwAATQsAAFULAABXCwAAYgsAAGMLAACCCwAAggsAAL4LAADCCwAAxgsAAMgLAADKCwAAzQsAANcLAADXCwAAAAwAAAQMAAA8DAAAPAwAAD4MAABEDAAARgwAAEgMAABKDAAATQwAAFUMAABW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BQAAzwUAAOsFAADuBQAA9QUAAAUGAAAcBgAAHAYAAN0GAADdBgAADgcAAA8HAABLBwAATAcAALIHAAC/BwAA+wcAAPwHAAAuCAAALwgAAD8IAAA/CAAAXAgAAF0IAABfCAAAXwgAAGsIAABvCAAAjwgAAJYIAADiCAAA4ggAAIQJAACECQAAjQkAAI4JAACRCQAAkgkAAKkJAACpCQAAsQkAALEJAACzCQAAtQkAALoJAAC7CQAAxQkAAMYJAADJCQAAygkAAM8JAADWCQAA2AkAANsJAADeCQAA3gkAAOQJAADlCQAA/wkAAAAKAAAECgAABAoAAAsKAAAOCgAAEQoAABIKAAApCgAAKQoAADEKAAAxCgAANAoAADQKAAA3CgAANwoAADoKAAA7CgAAPQoAAD0KAABDCgAARgoAAEkKAABKCgAATgoAAFAKAABSCgAAWAoAAF0KAABdCgAAXwoAAGUKAAB3CgAAgAoAAIQKAACECgAAjgoAAI4KAACSCgAAkgoAAKkKAACpCgAAsQoAALEKAAC0CgAAtAoAALoKAAC7CgAAxgoAAMYKAADKCgAAygoAAM4KAADPCgAA0QoAAN8KAADkCgAA5QoAAPIKAAD4CgAAAAsAAAALAAAECwAABAsAAA0LAAAOCwAAEQsAABILAAApCwAAKQsAADELAAAxCwAANAsAADQLAAA6CwAAOwsAAEULAABGCwAASQsAAEoLAABOCwAAVAsAAFgLAABbCwAAXgsAAF4LAABkCwAAZQsAAHgLAACBCwAAhAsAAIQLAACLCwAAjQsAAJELAACRCwAAlgsAAJgLAACbCwAAmwsAAJ0LAACdCwAAoAsAAKILAAClCwAApwsAAKsLAACtCwAAugsAAL0LAADDCwAAxQsAAMkLAADJCwAAzgsAAM8LAADRCwAA1gsAANgLAADlCwAA+wsAAP8LAAANDAAADQwAABEMAAARDAAAKQwAACkMAAA6DAAAOwwAAEUMAABFDAAASQwAAEkMAABODAAAVAwAAFcMAABXDAAAWwwAAFwMAABeDAAAXwwAAGQMAABlDAAAcAwAAHYMAACNDAAAjQwAAJEMAACRDAAAqQwAAKkMAAC0DAAAtAwAALoMAAC7DAAAxQwAAMUMAADJDAAAyQwAAM4MAADUDAAA1wwAANwMAADfDAAA3wwAAOQMAADl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BQAAVwUAAFgFAACLBQAAjAUAAJAFAACQBQAAyAUAAM8FAADrBQAA7gUAAPUFAAD/BQAADgcAAA4HAABLBwAATAcAALIHAAC/BwAA+wcAAPwHAAAuCAAALwgAAD8IAAA/CAAAXAgAAF0IAABfCAAAXwgAAGsIAABvCAAAjwgAAI8IAACSCAAAlggAAIQJAACECQAAjQkAAI4JAACRCQAAkgkAAKkJAACpCQAAsQkAALEJAACzCQAAtQkAALoJAAC7CQAAxQkAAMYJAADJCQAAygkAAM8JAADWCQAA2AkAANsJAADeCQAA3gkAAOQJAADlCQAA/wkAAAAKAAAECgAABAoAAAsKAAAOCgAAEQoAABIKAAApCgAAKQoAADEKAAAxCgAANAoAADQKAAA3CgAANwoAADoKAAA7CgAAPQoAAD0KAABDCgAARgoAAEkKAABKCgAATgoAAFAKAABSCgAAWAoAAF0KAABdCgAAXwoAAGUKAAB3CgAAgAoAAIQKAACECgAAjgoAAI4KAACSCgAAkgoAAKkKAACpCgAAsQoAALEKAAC0CgAAtAoAALoKAAC7CgAAxgoAAMYKAADKCgAAygoAAM4KAADPCgAA0QoAAN8KAADkCgAA5QoAAPIKAAD4CgAAAAsAAAALAAAECwAABAsAAA0LAAAOCwAAEQsAABILAAApCwAAKQsAADELAAAxCwAANAsAADQLAAA6CwAAOwsAAEULAABGCwAASQsAAEoLAABOCwAAVAsAAFgLAABbCwAAXgsAAF4LAABkCwAAZQsAAHgLAACBCwAAhAsAAIQLAACLCwAAjQsAAJELAACRCwAAlgsAAJgLAACbCwAAmwsAAJ0LAACdCwAAoAsAAKILAAClCwAApwsAAKsLAACtCwAAugsAAL0LAADDCwAAxQsAAMkLAADJCwAAzgsAAM8LAADRCwAA1gsAANgLAADlCwAA+wsAAP8LAAANDAAADQwAABEMAAARDAAAKQwAACkMAAA6DAAAOwwAAEUMAABFDAAASQwAAEkMAABODAAAVAwAAFcMAABXDAAAWwwAAFwMAABeDAAAXwwAAGQMAABlDAAAcAwAAHYMAACNDAAAjQwAAJEMAACRDAAAqQwAAKkMAAC0DAAAtAwAALoMAAC7DAAAxQwAAMUMAADJDAAAyQwAAM4MAADUDAAA1wwAANwMAADf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AQAAeQEAAHsBAAB7AQAAfQEAAH0BAACBAQAAggEAAIQBAACEAQAAhgEAAIcBAACJAQAAiwEAAI4BAACRAQAAkwEAAJQBAACWAQAAmAEAAJwBAACdAQAAnwEAAKABAACiAQAAogEAAKQBAACkAQAApgEAAKcBAACpAQAAqQEAAKwBAACsAQAArgEAAK8BAACxAQAAswEAALUBAAC1AQAAtwEAALgBAAC8AQAAvAEAAMQBAADEAQAAxwEAAMcBAADKAQAAygEAAM0BAADNAQAAzwEAAM8BAADRAQAA0QEAANMBAADTAQAA1QEAANUBAADXAQAA1wEAANkBAADZAQAA2wEAANsBAADeAQAA3gEAAOABAADgAQAA4gEAAOIBAADkAQAA5AEAAOYBAADmAQAA6AEAAOgBAADqAQAA6gEAAOwBAADsAQAA7gEAAO4BAADxAQAA8QEAAPQBAAD0AQAA9gEAAPgBAAD6AQAA+gEAAPwBAAD8AQAA/gEAAP4BAAAAAgAAAAIAAAICAAACAgAABAIAAAQCAAAGAgAABgIAAAgCAAAIAgAACgIAAAoCAAAMAgAADAIAAA4CAAAOAgAAEAIAABACAAASAgAAEgIAABQCAAAUAgAAFgIAABYCAAAYAgAAGAIAABoCAAAaAgAAHAIAABwCAAAeAgAAHgIAACACAAAgAgAAIgIAACICAAAkAgAAJAIAACYCAAAmAgAAKAIAACgCAAAqAgAAKgIAACwCAAAsAgAALgIAAC4CAAAwAgAAMAIAADICAAAyAgAAOgIAADsCAAA9AgAAPgIAAEECAABBAgAAQwIAAEYCAABIAgAASAIAAEoCAABKAgAATAIAAEwCAABOAgAATgIAAHADAABwAwAAcgMAAHIDAAB2AwAAdgMAAH8DAAB/AwAAhgMAAIYDAACIAwAAigMAAIwDAACMAwAAjgMAAI8DAACRAwAAoQMAAKMDAACrAwAAzwMAAM8DAADSAwAA1AMAANgDAADYAwAA2gMAANoDAADcAwAA3AMAAN4DAADeAwAA4AMAAOADAADiAwAA4gMAAOQDAADkAwAA5gMAAOYDAADoAwAA6AMAAOoDAADqAwAA7AMAAOwDAADuAwAA7gMAAPQDAAD0AwAA9wMAAPcDAAD5AwAA+gMAAP0DAAAvBAAAYAQAAGAEAABiBAAAYgQAAGQEAABkBAAAZgQAAGYEAABoBAAAaAQAAGoEAABqBAAAbAQAAGwEAABuBAAAbgQAAHAEAABwBAAAcgQAAHIEAAB0BAAAdAQAAHYEAAB2BAAAeAQAAHgEAAB6BAAAegQAAHwEAAB8BAAAfgQAAH4EAACABAAAgAQAAIoEAACKBAAAjAQAAIwEAACOBAAAjgQAAJAEAACQBAAAkgQAAJIEAACUBAAAlAQAAJYEAACWBAAAmAQAAJgEAACaBAAAmgQAAJwEAACcBAAAngQAAJ4EAACgBAAAoAQAAKIEAACiBAAApAQAAKQEAACmBAAApgQAAKgEAACoBAAAqgQAAKoEAACsBAAArAQAAK4EAACuBAAAsAQAALAEAACyBAAAsgQAALQEAAC0BAAAtgQAALYEAAC4BAAAuAQAALoEAAC6BAAAvAQAALwEAAC+BAAAvgQAAMAEAADBBAAAwwQAAMMEAADFBAAAxQQAAMcEAADHBAAAyQQAAMkEAADLBAAAywQAAM0EAADNBAAA0AQAANAEAADSBAAA0gQAANQEAADUBAAA1gQAANYEAADYBAAA2AQAANoEAADaBAAA3AQAANwEAADeBAAA3gQAAOAEAADgBAAA4gQAAOIEAADkBAAA5AQAAOYEAADmBAAA6AQAAOgEAADqBAAA6gQAAOwEAADsBAAA7gQAAO4EAADwBAAA8AQAAPIEAADyBAAA9AQAAPQEAAD2BAAA9gQAAPgEAAD4BAAA+gQAAPoEAAD8BAAA/AQAAP4EAAD+BAAAAAUAAAAFAAACBQAAAgUAAAQFAAAEBQAABgUAAAYFAAAIBQAACAUAAAoFAAAKBQAADAUAAAwFAAAOBQAADgUAABAFAAAQBQAAEgUAABIFAAAUBQAAFAUAABYFAAAWBQAAGAUAABgFAAAaBQAAGgUAABwFAAAcBQAAHgUAAB4FAAAgBQAAIAUAACIFAAAiBQAAJAUAACQFAAAmBQAAJgUAACgFAAAoBQAAKgUAACoFAAAsBQAALAUAAC4FAAAuBQAAMQUAAFYFAACgEAAAxRAAAMcQAADHEAAAzRAAAM0QAACgEwAA9RMAAIkcAACJHAAAkBwAALocAAC9HAAAvxwAAAAeAAAAHgAAAh4AAAIeAAAEHgAABB4AAAYeAAAGHgAACB4AAAgeAAAKHgAACh4AAAweAAAMHgAADh4AAA4eAAAQHgAAEB4AABIeAAASHgAAFB4AABQeAAAWHgAAFh4AABgeAAAYHgAAGh4AABoeAAAcHgAAHB4AAB4eAAAeHgAAIB4AACAeAAAiHgAAIh4AACQeAAAkHgAAJh4AACYeAAAoHgAAKB4AACoeAAAqHgAALB4AACweAAAuHgAALh4AADAeAAAwHgAAMh4AADIeAAA0HgAANB4AADYeAAA2HgAAOB4AADgeAAA6HgAAOh4AADweAAA8HgAAPh4AAD4eAABAHgAAQB4AAEIeAABCHgAARB4AAEQeAABGHgAARh4AAEgeAABIHgAASh4AAEoeAABMHgAATB4AAE4eAABOHgAAUB4AAFAeAABSHgAAUh4AAFQeAABUHgAAVh4AAFYeAABYHgAAWB4AAFoeAABaHgAAXB4AAFweAABeHgAAXh4AAGAeAABgHgAAYh4AAGIeAABkHgAAZB4AAGYeAABmHgAAaB4AAGgeAABqHgAAah4AAGweAABsHgAAbh4AAG4eAABwHgAAcB4AAHIeAAByHgAAdB4AAHQeAAB2HgAAdh4AAHgeAAB4HgAAeh4AAHoeAAB8HgAAfB4AAH4eAAB+HgAAgB4AAIAeAACCHgAAgh4AAIQeAACEHgAAhh4AAIYeAACIHgAAiB4AAIoeAACKHgAAjB4AAIweAACOHgAAjh4AAJAeAACQHgAAkh4AAJIeAACUHgAAlB4AAJ4eAACeHgAAoB4AAKAeAACiHgAAoh4AAKQeAACkHgAAph4AAKYeAACoHgAAqB4AAKoeAACqHgAArB4AAKweAACuHgAArh4AALAeAACwHgAAsh4AALIeAAC0HgAAtB4AALYeAAC2HgAAuB4AALgeAAC6HgAAuh4AALweAAC8HgAAvh4AAL4eAADAHgAAwB4AAMIeAADCHgAAxB4AAMQeAADGHgAAxh4AAMgeAADIHgAAyh4AAMoeAADMHgAAzB4AAM4eAADOHgAA0B4AANAeAADSHgAA0h4AANQeAADUHgAA1h4AANYeAADYHgAA2B4AANoeAADaHgAA3B4AANweAADeHgAA3h4AAOAeAADgHgAA4h4AAOIeAADkHgAA5B4AAOYeAADmHgAA6B4AAOgeAADqHgAA6h4AAOweAADsHgAA7h4AAO4eAADwHgAA8B4AAPIeAADyHgAA9B4AAPQeAAD2HgAA9h4AAPgeAAD4HgAA+h4AAPoeAAD8HgAA/B4AAP4eAAD+HgAACB8AAA8fAAAYHwAAHR8AACgfAAAvHwAAOB8AAD8fAABIHwAATR8AAFkfAABZHwAAWx8AAFsfAABdHwAAXR8AAF8fAABfHwAAaB8AAG8fAAC4HwAAux8AAMgfAADLHwAA2B8AANsfAADoHwAA7B8AAPgfAAD7HwAAAiEAAAIhAAAHIQAAByEAAAshAAANIQAAECEAABIhAAAVIQAAFSEAABkhAAAdIQAAJCEAACQhAAAmIQAAJiEAACghAAAoIQAAKiEAAC0hAAAwIQAAMyEAAD4hAAA/IQAARSEAAEUhAACDIQAAgyEAAAAsAAAvLAAAYCwAAGAsAABiLAAAZCwAAGcsAABnLAAAaSwAAGksAABrLAAAaywAAG0sAABwLAAAciwAAHIsAAB1LAAAdSwAAH4sAACALAAAgiwAAIIsAACELAAAhCwAAIYsAACGLAAAiCwAAIgsAACKLAAAiiwAAIwsAACMLAAAjiwAAI4sAACQLAAAkCwAAJIsAACSLAAAlCwAAJQsAACWLAAAliwAAJgsAACYLAAAmiwAAJosAACcLAAAnCwAAJ4sAACeLAAAoCwAAKAsAACiLAAAoiwAAKQsAACkLAAApiwAAKYsAACoLAAAqCwAAKosAACqLAAArCwAAKwsAACuLAAAriwAALAsAACwLAAAsiwAALIsAAC0LAAAtCwAALYsAAC2LAAAuCwAALgsAAC6LAAAuiwAALwsAAC8LAAAviwAAL4sAADALAAAwCwAAMIsAADCLAAAxCwAAMQsAADGLAAAxiwAAMgsAADILAAAyiwAAMosAADMLAAAzCwAAM4sAADOLAAA0CwAANAsAADSLAAA0iwAANQsAADULAAA1iwAANYsAADYLAAA2CwAANosAADaLAAA3CwAANwsAADeLAAA3iwAAOAsAADgLAAA4iwAAOIsAADrLAAA6ywAAO0sAADtLAAA8iwAAPIsAABApgAAQKYAAEKmAABCpgAARKYAAESmAABGpgAARqYAAEimAABIpgAASqYAAEqmAABMpgAATKYAAE6mAABOpgAAUKYAAFCmAABSpgAAUqYAAFSmAABUpgAAVqYAAFamAABYpgAAWKYAAFqmAABapgAAXKYAAFymAABepgAAXqYAAGCmAABgpgAAYqYAAGKmAABkpgAAZKYAAGamAABmpgAAaKYAAGimAABqpgAAaqYAAGymAABspgAAgKYAAICmAACCpgAAgqYAAISmAACEpgAAhqYAAIamAACIpgAAiKYAAIqmAACKpgAAjKYAAIymAACOpgAAjqYAAJCmAACQpgAAkqYAAJKmAACUpgAAlKYAAJamAACWpgAAmKYAAJimAACapgAAmqYAACKnAAAipwAAJKcAACSnAAAmpwAAJqcAACinAAAopwAAKqcAACqnAAAspwAALKcAAC6nAAAupwAAMqcAADKnAAA0pwAANKcAADanAAA2pwAAOKcAADinAAA6pwAAOqcAADynAAA8pwAAPqcAAD6nAABApwAAQKcAAEKnAABCpwAARKcAAESnAABGpwAARqcAAEinAABIpwAASqcAAEqnAABMpwAATKcAAE6nAABOpwAAUKcAAFCnAABSpwAAUqcAAFSnAABUpwAAVqcAAFanAABYpwAAWKcAAFqnAABapwAAXKcAAFynAABepwAAXqcAAGCnAABgpwAAYqcAAGKnAABkpwAAZKcAAGanAABmpwAAaKcAAGinAABqpwAAaqcAAGynAABspwAAbqcAAG6nAAB5pwAAeacAAHunAAB7pwAAfacAAH6nAACApwAAgKcAAIKnAACCpwAAhKcAAISnAACGpwAAhqcAAIunAACLpwAAjacAAI2nAACQpwAAkKcAAJKnAACSpwAAlqcAAJanAACYpwAAmKcAAJqnAACapwAAnKcAAJynAACepwAAnqcAAKCnAACgpwAAoqcAAKKnAACkpwAApKcAAKanAACmpwAAqKcAAKinAACqpwAArqcAALCnAAC0pwAAtqcAALanAAC4pwAAuKcAALqnAAC6pwAAvKcAALynAAC+pwAAvqcAAMCnAADApwAAwqcAAMKnAADEpwAAx6cAAMmnAADJpwAAy6cAAMynAADQpwAA0KcAANanAADWpwAA2KcAANinAADapwAA2qcAANynAADcpwAA9acAAPWnAAAh/wAAOv8AAAAEAQAnBAEAsAQBANMEAQBwBQEAegUBAHwFAQCKBQEAjAUBAJIFAQCUBQEAlQUBAIAMAQCyDAEAUA0BAGUNAQCgGAEAvxgBAEBuAQBfbgEAANQBABnUAQA01AEATdQBAGjUAQCB1AEAnNQBAJzUAQCe1AEAn9QBAKLUAQCi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AAAAqgAAAKoAAAC1AAAAtQAAALoAAAC6AAAAwAAAANYAAADYAAAA9gAAAPgAAADBAgAAxgIAANECAADgAgAA5AIAAOwCAADsAgAA7gIAAO4CAABFAwAARQMAAGMDAAB0AwAAdgMAAHcDAAB6AwAAfQMAAH8DAAB/AwAAhgMAAIYDAACIAwAAigMAAIwDAACMAwAAjgMAAKEDAACjAwAA9QMAAPcDAACBBAAAigQAAC8FAAAxBQAAVgUAAFkFAABZBQAAYAUAAIgFAACwBQAAvQUAAL8FAAC/BQAAwQUAAMIFAADEBQAAxQUAAMcFAADHBQAA0AUAAOoFAADvBQAA8gUAABAGAAAaBgAAIAYAAFcGAABZBgAAXwYAAG4GAADTBgAA1QYAANwGAADhBgAA6AYAAO0GAADvBgAA+gYAAPwGAAD/BgAA/wYAABAHAAA/BwAATQcAALEHAADKBwAA6gcAAPQHAAD1BwAA+gcAAPoHAAAACAAAFwgAABoIAAAsCAAAQAgAAFgIAABgCAAAaggAAHAIAACHCAAAiQgAAI4IAACXCAAAlwgAAKAIAADJCAAA1AgAAN8IAADjCAAA6QgAAPAIAAA7CQAAPQkAAEwJAABOCQAAUAkAAFUJAABjCQAAcQkAAIMJAACFCQAAjAkAAI8JAACQCQAAkwkAAKgJAACqCQAAsAkAALIJAACyCQAAtgkAALkJAAC9CQAAxAkAAMcJAADICQAAywkAAMwJAADOCQAAzgkAANcJAADXCQAA3AkAAN0JAADfCQAA4wkAAPAJAADxCQAA/AkAAPwJAAABCgAAAwoAAAUKAAAKCgAADwoAABAKAAATCgAAKAoAACoKAAAwCgAAMgoAADMKAAA1CgAANgoAADgKAAA5CgAAPgoAAEIKAABHCgAASAoAAEsKAABMCgAAUQoAAFEKAABZCgAAXAoAAF4KAABeCgAAcAoAAHUKAACBCgAAgwoAAIUKAACNCgAAjwoAAJEKAACTCgAAqAoAAKoKAACwCgAAsgoAALMKAAC1CgAAuQoAAL0KAADFCgAAxwoAAMkKAADLCgAAzAoAANAKAADQCgAA4AoAAOMKAAD5CgAA/AoAAAELAAADCwAABQsAAAwLAAAPCwAAEAsAABMLAAAoCwAAKgsAADALAAAyCwAAMwsAADULAAA5CwAAPQsAAEQLAABHCwAASAsAAEsLAABMCwAAVgsAAFcLAABcCwAAXQsAAF8LAABjCwAAcQsAAHELAACCCwAAgwsAAIULAACKCwAAjgsAAJALAACSCwAAlQsAAJkLAACaCwAAnAsAAJwLAACeCwAAnwsAAKMLAACkCwAAqAsAAKoLAACuCwAAuQsAAL4LAADCCwAAxgsAAMgLAADKCwAAzAsAANALAADQCwAA1wsAANcLAAAADAAADAwAAA4MAAAQDAAAEgwAACgMAAAqDAAAOQwAAD0MAABEDAAARgwAAEgMAABKDAAATAwAAFUMAABWDAAAWAwAAFoMAABdDAAAXQwAAGAMAABjDAAAgAwAAIMMAACFDAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvQwAAMQMAADGDAAAyAwAAMoMAADMDAAA1QwAANYMAADdDAAA3gwAAOAMAADjDAAA8QwAAPMMAAAADQAADA0AAA4NAAAQDQAAEg0AADoNAAA9DQAARA0AAEYNAABIDQAASg0AAEwNAABODQAATg0AAFQNAABXDQAAXw0AAGMNAAB6DQAAfw0AAIENAACDDQAAhQ0AAJYNAACaDQAAsQ0AALMNAAC7DQAAvQ0AAL0NAADADQAAxg0AAM8NAADUDQAA1g0AANYNAADYDQAA3w0AAPINAADzDQAAAQ4AADoOAABADgAARg4AAE0OAABNDgAAgQ4AAIIOAACEDgAAhA4AAIYOAACKDgAAjA4AAKMOAAClDgAApQ4AAKcOAAC5DgAAuw4AAL0OAADADgAAxA4AAMYOAADGDgAAzQ4AAM0OAADcDgAA3w4AAAAPAAAADwAAQA8AAEcPAABJDwAAbA8AAHEPAACDDwAAiA8AAJcPAACZDwAAvA8AAAAQAAA2EAAAOBAAADgQAAA7EAAAPxAAAFAQAACPEAAAmhAAAJ0QAACgEAAAxRAAAMcQAADHEAAAzRAAAM0QAADQEAAA+hAAAPwQAABIEgAAShIAAE0SAABQEgAAVhIAAFgSAABYEgAAWhIAAF0SAABgEgAAiBIAAIoSAACNEgAAkBIAALASAACyEgAAtRIAALgSAAC+EgAAwBIAAMASAADCEgAAxRIAAMgSAADWEgAA2BIAABATAAASEwAAFRMAABgTAABaEwAAgBMAAI8TAACgEwAA9RMAAPgTAAD9EwAAARQAAGwWAABvFgAAfxYAAIEWAACaFgAAoBYAAOoWAADuFgAA+BYAAAAXAAATFwAAHxcAADMXAABAFwAAUxcAAGAXAABsFwAAbhcAAHAXAAByFwAAcxcAAIAXAACzFwAAthcAAMgXAADXFwAA1xcAANwXAADcFwAAIBgAAHgYAACAGAAAqhgAALAYAAD1GAAAABkAAB4ZAAAgGQAAKxkAADAZAAA4GQAAUBkAAG0ZAABwGQAAdBkAAIAZAACrGQAAsBkAAMkZAAAAGgAAGxoAACAaAABeGgAAYRoAAHQaAACnGgAApxoAAL8aAADAGgAAzBoAAM4aAAAAGwAAMxsAADUbAABDGwAARRsAAEwbAACAGwAAqRsAAKwbAACvGwAAuhsAAOUbAADnGwAA8RsAAAAcAAA2HAAATRwAAE8cAABaHAAAfRwAAIAcAACKHAAAkBwAALocAAC9HAAAvxwAAOkcAADsHAAA7hwAAPMcAAD1HAAA9hwAAPocAAD6HAAAAB0AAL8dAADTHQAA9B0AAAAeAAAVHwAAGB8AAB0fAAAgHwAARR8AAEgfAABNHwAAUB8AAFcfAABZHwAAWR8AAFsfAABbHwAAXR8AAF0fAABfHwAAfR8AAIAfAAC0HwAAth8AALwfAAC+HwAAvh8AAMIfAADEHwAAxh8AAMwfAADQHwAA0x8AANYfAADbHwAA4B8AAOwfAADyHwAA9B8AAPYfAAD8HwAAcSAAAHEgAAB/IAAAfyAAAJAgAACcIAAAAiEAAAIhAAAHIQAAByEAAAohAAATIQAAFSEAABUhAAAZIQAAHSEAACQhAAAkIQAAJiEAACYhAAAoIQAAKCEAACohAAAtIQAALyEAADkhAAA8IQAAPyEAAEUhAABJIQAATiEAAE4hAABgIQAAiCEAALYkAADpJAAAACwAAOQsAADrLAAA7iwAAPIsAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAMC0AAGctAABvLQAAby0AAIAtAACWLQAAoC0AAKYtAACoLQAAri0AALAtAAC2LQAAuC0AAL4tAADALQAAxi0AAMgtAADOLQAA0C0AANYtAADYLQAA3i0AAOAtAAD/LQAALy4AAC8uAAAFMAAABzAAACEwAAApMAAAMTAAADUwAAA4MAAAPDAAAEEwAACWMAAAnTAAAJ8wAACh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FwAAUxcAAHIXAABzFwAAtBcAALUXAAC3FwAAvRcAAMYXAADGFwAAyRcAANMXAADXFwAA1xcAAN0XAADdFwAACxgAAA8YAABDGAAAQxgAAIUYAACGGAAAqRgAAKkYAAAgGQAAIhkAACcZAAAoGQAAMhkAADIZAAA5GQAAOxkAABcaAAAYGgAAGxoAABsaAABWGgAAVhoAAFgaAABeGgAAYBoAAGAaAABiGgAAYhoAAGUaAABsGgAAcxoAAHwaAAB/GgAAfxoAAKcaAACnGgAAsBoAAM4aAAAAGwAAAxsAADQbAAA0GwAANhsAADobAAA8GwAAPBsAAEIbAABCGwAAaxsAAHMbAACAGwAAgRsAAKIbAAClGwAAqBsAAKkbAACrGwAArRsAAOYbAADmGwAA6BsAAOkbAADtGwAA7RsAAO8bAADxGwAALBwAADMcAAA2HAAANxwAAHgcAAB9HAAA0BwAANIcAADUHAAA4BwAAOIcAADoHAAA7RwAAO0cAAD0HAAA9BwAAPgcAAD5HAAALB0AAGodAAB4HQAAeB0AAJsdAAD/HQAAvR8AAL0fAAC/HwAAwR8AAM0fAADPHwAA3R8AAN8fAADtHwAA7x8AAP0fAAD+HwAACyAAAA8gAAAYIAAAGSAAACQgAAAkIAAAJyAAACcgAAAqIAAALiAAAGAgAABkIAAAZiAAAG8gAABxIAAAcSAAAH8gAAB/IAAAkCAAAJwgAADQIAAA8CAAAHwsAAB9LAAA7ywAAPEsAABvLQAAby0AAH8tAAB/LQAA4C0AAP8tAAAvLgAALy4AAAUwAAAFMAAAKjAAAC0wAAAxMAAANTAAADswAAA7MAAAmTAAAJ4wAAD8MAAA/jAAABWgAAAVoAAA+KQAAP2kAAAMpgAADKYAAG+mAABypgAAdKYAAH2mAAB/pgAAf6YAAJymAACfpgAA8KYAAPGmAAAApwAAIacAAHCnAABwpwAAiKcAAIqnAADypwAA9KcAAPinAAD5pwAAAqgAAAKoAAAGqAAABqgAAAuoAAALqAAAJagAACaoAAAsqAAALKgAAMSoAADFqAAA4KgAAPGoAAD/qAAA/6gAACapAAAtqQAAR6kAAFGpAACAqQAAgqkAALOpAACzqQAAtqkAALmpAAC8qQAAvakAAM+pAADPqQAA5akAAOapAAApqgAALqoAADGqAAAyqgAANaoAADaqAABDqgAAQ6oAAEyqAABMqgAAcKoAAHCqAAB8qgAAfKoAALCqAACwqgAAsqoAALSqAAC3qgAAuKoAAL6qAAC/qgAAwaoAAMGqAADdqgAA3aoAAOyqAADtqgAA86oAAPSqAAD2qgAA9qoAAFurAABfqwAAaasAAGurAADlqwAA5asAAOirAADoqwAA7asAAO2rAAAe+wAAHvsAALL7AADC+wAAAP4AAA/+AAAT/gAAE/4AACD+AAAv/gAAUv4AAFL+AABV/gAAVf4AAP/+AAD//gAAB/8AAAf/AAAO/wAADv8AABr/AAAa/wAAPv8AAD7/AABA/wAAQP8AAHD/AABw/wAAnv8AAJ//AADj/wAA4/8AAPn/AAD7/wAA/QEBAP0BAQDgAgEA4AIBAHYDAQB6AwEAgAcBAIUHAQCHBwEAsAcBALIHAQC6BwEAAQoBAAMKAQAFCgEABgoBAAwKAQAPCgEAOAoBADoKAQA/CgEAPwoBAOUKAQDmCgEAJA0BACcNAQBODQEATg0BAGkNAQBtDQEAbw0BAG8NAQCrDgEArA4BAPwOAQD/DgEARg8BAFAPAQCCDwEAhQ8BAAEQAQABEAEAOBABAEYQAQBwEAEAcBABAHMQAQB0EAEAfxABAIEQAQCzEAEAthABALkQAQC6EAEAvRABAL0QAQDCEAEAwhABAM0QAQDNEAEAABEBAAIRAQAnEQEAKxEBAC0RAQA0EQEAcxEBAHMRAQCAEQEAgREBALYRAQC+EQEAyREBAMwRAQDPEQEAzxEBAC8SAQAxEgEANBIBADQSAQA2EgEANxIBAD4SAQA+EgEAQRIBAEESAQDfEgEA3xIBAOMSAQDqEgEAABMBAAETAQA7EwEAPBMBAEATAQBAEwEAZhMBAGwTAQBwEwEAdBMBALsTAQDAEwEAzhMBAM4TAQDQEwEA0BMBANITAQDSEwEA4RMBAOITAQA4FAEAPxQBAEIUAQBEFAEARhQBAEYUAQBeFAEAXhQBALMUAQC4FAEAuhQBALoUAQC/FAEAwBQBAMIUAQDDFAEAshUBALUVAQC8FQEAvRUBAL8VAQDAFQEA3BUBAN0VAQAzFgEAOhYBAD0WAQA9FgEAPxYBAEAWAQCrFgEAqxYBAK0WAQCtFgEAsBYBALUWAQC3FgEAtxYBAB0XAQAdFwEAHxcBAB8XAQAiFwEAJRcBACcXAQArFwEALxgBADcYAQA5GAEAOhgBADsZAQA8GQEAPhkBAD4ZAQBDGQEAQxkBANQZAQDXGQEA2hkBANsZAQDgGQEA4BkBAAEaAQAKGgEAMxoBADgaAQA7GgEAPhoBAEcaAQBHGgEAURoBAFYaAQBZGgEAWxoBAIoaAQCWGgEAmBoBAJkaAQAwHAEANhwBADgcAQA9HAEAPxwBAD8cAQCSHAEApxwBAKocAQCwHAEAshwBALMcAQC1HAEAthwBADEdAQA2HQEAOh0BADodAQA8HQEAPR0BAD8dAQBFHQEARx0BAEcdAQCQHQEAkR0BAJUdAQCVHQEAlx0BAJcdAQDzHgEA9B4BAAAfAQABHwEANh8BADofAQBAHwEAQB8BAEIfAQBCHwEAWh8BAFofAQAwNAEAQDQBAEc0AQBVNAEAHmEBAClhAQAtYQEAL2EBAPBqAQD0agEAMGsBADZrAQBAawEAQ2sBAEBtAQBCbQEAa20BAGxtAQBPbwEAT28BAI9vAQCfbwEA4G8BAOFvAQDjbwEA5G8BAPCvAQDzrwEA9a8BAPuvAQD9rwEA/q8BAJ28AQCevAEAoLwBAKO8AQAAzwEALc8BADDPAQBGzwEAZ9EBAGnRAQBz0QEAgtEBAIXRAQCL0QEAqtEBAK3RAQBC0gEARNIBAADaAQA22gEAO9oBAGzaAQB12gEAddoBAITaAQCE2gEAm9oBAJ/aAQCh2gEAr9oBAADgAQAG4AEACOABABjgAQAb4AEAIeABACPgAQAk4AEAJuABACrgAQAw4AEAbeABAI/gAQCP4AEAMOEBAD3hAQCu4gEAruIBAOziAQDv4gEA6+QBAO/kAQDu5QEA7+UBANDoAQDW6AEAROkBAEvpAQD78wEA//MBAAEADgABAA4AIAAOAH8ADgAAAQ4A7wEOAEEAAABaAAAAYQAAAHoAAACqAAAAqgAAALUAAAC1AAAAugAAALoAAADAAAAA1gAAANgAAAD2AAAA+AAAALoBAAC8AQAAvwEAAMQBAACTAgAAlQIAALgCAADAAgAAwQIAAOACAADkAgAARQMAAEUDAABwAwAAcwMAAHYDAAB3AwAAegMAAH0DAAB/AwAAfwMAAIYDAACGAwAAiAMAAIoDAACMAwAAjAMAAI4DAAChAwAAowMAAPUDAAD3AwAAgQQAAIoEAAAvBQAAMQUAAFYFAABgBQAAiAUAAKAQAADFEAAAxxAAAMcQAADNEAAAzRAAANAQAAD6EAAA/BAAAP8QAACgEwAA9RMAAPgTAAD9EwAAgBwAAIocAACQHAAAuhwAAL0cAAC/HAAAAB0AAL8dAAAAHgAAFR8AABgfAAAdHwAAIB8AAEUfAABIHwAATR8AAFAfAABXHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAH0fAACAHwAAtB8AALYfAAC8HwAAvh8AAL4fAADCHwAAxB8AAMYfAADMHwAA0B8AANMfAADWHwAA2x8AAOAfAADsHwAA8h8AAPQfAAD2HwAA/B8AAHEgAABxIAAAfyAAAH8gAACQIAAAnCAAAAIhAAACIQAAByEAAAchAAAKIQAAEyEAABUhAAAVIQAAGSEAAB0hAAAkIQAAJCEAACYhAAAmIQAAKCEAACghAAAqIQAALSEAAC8hAAA0IQAAOSEAADkhAAA8IQAAPyEAAEUhAABJIQAATiEAAE4hAABgIQAAfyEAAIMhAACEIQAAtiQAAOkkAAAALAAA5CwAAOssAADuLAAA8iwAAPMsAAAALQAAJS0AACctAAAnLQAALS0AAC0tAABApgAAbaYAAICmAACdpgAAIqcAAIenAACLpwAAjqcAAJCnAADNpwAA0KcAANGnAADTpwAA06cAANWnAADcpwAA8qcAAPanAAD4pwAA+qcAADCrAABaqwAAXKsAAGmrAABwqwAAv6sAAAD7AAAG+wAAE/sAABf7AAAh/wAAOv8AAEH/AABa/wAAAAQBAE8EAQCwBAEA0wQBANgEAQD7BAEAcAUBAHoFAQB8BQEAigUBAIwFAQCSBQEAlAUBAJUFAQCXBQEAoQUBAKMFAQCxBQEAswUBALkFAQC7BQEAvAUBAIAHAQCABwEAgwcBAIUHAQCHBwEAsAcBALIHAQC6BwEAgAwBALIMAQDADAEA8gwBAFANAQBlDQEAcA0BAIUNAQCgGAEA3xgBAEBuAQB/bgEAANQBAFTUAQBW1AEAnNQBAJ7UAQCf1AEAotQBAKLUAQCl1AEAptQBAKnUAQCs1AEArtQBALnUAQC71AEAu9QBAL3UAQDD1AEAxdQBAAXVAQAH1QEACtUBAA3VAQAU1QEAFtUBABzVAQAe1QEAOdUBADvVAQA+1QEAQNUBAETVAQBG1QEARtUBAErVAQBQ1QEAUtUBAKXWAQCo1gEAwNYBAMLWAQDa1gEA3NYBAPrWAQD81gEAFNcBABbXAQA01wEANtcBAE7XAQBQ1wEAbtcBAHDXAQCI1wEAitcBAKjXAQCq1wEAwtcBAMTXAQDL1wEAAN8BAAnfAQAL3wEAHt8BACXfAQAq3wEAMOABAG3gAQAA6QEAQ+kBADDxAQBJ8QEAUPEBAGnxAQBw8QEAifEBAEEAAABaAAAAtQAAALUAAADAAAAA1gAAANgAAADfAAAAAAEAAAABAAACAQAAAgEAAAQBAAAEAQAABgEAAAYBAAAIAQAACAEAAAoBAAAKAQAADAEAAAwBAAAOAQAADgEAABABAAAQAQAAEgEAABIBAAAUAQAAFAEAABYBAAAWAQAAGAEAABgBAAAaAQAAGgEAABwBAAAcAQAAHgEAAB4BAAAgAQAAIAEAACIBAAAiAQAAJAEAACQBAAAmAQAAJgEAACgBAAAoAQAAKgEAACoBAAAsAQAALAEAAC4BAAAuAQAAMAEAADABAAAyAQAAMgEAADQBAAA0AQAANgEAADYBAAA5AQAAOQEAADsBAAA7AQAAPQEAAD0BAAA/AQAAPwEAAEEBAABBAQAAQwEAAEMBAABFAQAARQEAAEcBAABHAQAASQEAAEoBAABMAQAATAEAAE4BAABOAQAAUAEAAFABAABSAQAAUgEAAFQBAABUAQAAVgEAAFYBAABYAQAAWAEAAFoBAABaAQAAXAEAAFwBAABeAQAAXgEAAGABAABgAQAAYgEAAGIBAABkAQAAZAEAAGYBAABmAQAAaAEAAGgBAABqAQAAagEAAGwBAABsAQAAbgEAAG4BAABwAQAAcAEAAHIBAAByAQAAdAEAAHQBAAB2AQAAdgEAAHgBAAB5AQAAewEAAHsBAAB9AQAAfQEAAH8BAAB/AQAAgQEAAIIBAACEAQAAhAEAAIYBAACHAQAAiQEAAIsBAACOAQAAkQEAAJMBAACUAQAAlgEAAJgBAACcAQAAnQEAAJ8BAACgAQAAogEAAKIBAACkAQAApAEAAKYBAACnAQAAqQEAAKkBAACsAQAArAEAAK4BAACvAQAAsQEAALMBAAC1AQAAtQEAALcBAAC4AQAAvAEAALwBAADEAQAAxQEAAMcBAADIAQAAygEAAMsBAADNAQAAzQEAAM8BAADPAQAA0QEAANEBAADTAQAA0wEAANUBAADVAQAA1wEAANcBAADZAQAA2QEAANsBAADbAQAA3gEAAN4BAADgAQAA4AEAAOIBAADiAQAA5AEAAOQBAADmAQAA5gEAAOgBAADoAQAA6gEAAOoBAADsAQAA7AEAAO4BAADuAQAA8QEAAPIBAAD0AQAA9AEAAPYBAAD4AQAA+gEAAPoBAAD8AQAA/AEAAP4BAAD+AQAAAAIAAAACAAACAgAAAgIAAAQCAAAEAgAABgIAAAYCAAAIAgAACAIAAAoCAAAKAgAADAIAAAwCAAAOAgAADgIAABACAAAQAgAAEgIAABICAAAUAgAAFAIAABYCAAAWAgAAGAIAABgCAAAaAgAAGgIAABwCAAAcAgAAHgIAAB4CAAAgAgAAIAIAACICAAAiAgAAJAIAACQCAAAmAgAAJgIAACgCAAAoAgAAKgIAACoCAAAsAgAALAIAAC4CAAAuAgAAMAIAADACAAAyAgAAMgIAADoCAAA7AgAAPQIAAD4CAABBAgAAQQIAAEMCAABGAgAASAIAAEgCAABKAgAASgIAAEwCAABMAgAATgIAAE4CAABFAwAARQMAAHADAABwAwAAcgMAAHIDAAB2AwAAdgMAAH8DAAB/AwAAhgMAAIYDAACIAwAAigMAAIwDAACMAwAAjgMAAI8DAACRAwAAoQMAAKMDAACrAwAAwgMAAMIDAADPAwAA0QMAANUDAADWAwAA2AMAANgDAADaAwAA2gMAANwDAADcAwAA3gMAAN4DAADgAwAA4AMAAOIDAADiAwAA5AMAAOQDAADmAwAA5gMAAOgDAADoAwAA6gMAAOoDAADsAwAA7AMAAO4DAADuAwAA8AMAAPEDAAD0AwAA9QMAAPcDAAD3AwAA+QMAAPoDAAD9AwAALwQAAGAEAABgBAAAYgQAAGIEAABkBAAAZAQAAGYEAABmBAAAaAQAAGgEAABqBAAAagQAAGwEAABsBAAAbgQAAG4EAABwBAAAcAQAAHIEAAByBAAAdAQAAHQEAAB2BAAAdgQAAHgEAAB4BAAAegQAAHoEAAB8BAAAfAQAAH4EAAB+BAAAgAQAAIAEAACKBAAAigQAAIwEAACMBAAAjgQAAI4EAACQBAAAkAQAAJIEAACSBAAAlAQAAJQEAACWBAAAlgQAAJgEAACYBAAAmgQAAJoEAACcBAAAnAQAAJ4EAACeBAAAoAQAAKAEAACiBAAAogQAAKQEAACkBAAApgQAAKYEAACoBAAAqAQAAKoEAACqBAAArAQAAKwEAACuBAAArgQAALAEAACwBAAAsgQAALIEAAC0BAAAtAQAALYEAAC2BAAAuAQAALgEAAC6BAAAugQAALwEAAC8BAAAvgQAAL4EAADABAAAwQQAAMMEAADDBAAAxQQAAMUEAADHBAAAxwQAAMkEAADJBAAAywQAAMsEAADNBAAAzQQAANAEAADQBAAA0gQAANIEAADUBAAA1AQAANYEAADWBAAA2AQAANgEAADaBAAA2gQAANwEAADcBAAA3gQAAN4EAADgBAAA4AQAAOIEAADiBAAA5AQAAOQEAADmBAAA5gQAAOgEAADoBAAA6gQAAOoEAADsBAAA7AQAAO4EAADuBAAA8AQAAPAEAADyBAAA8gQAAPQEAAD0BAAA9gQAAPYEAAD4BAAA+AQAAPoEAAD6BAAA/AQAAPwEAAD+BAAA/gQAAAAFAAAABQAAAgUAAAIFAAAEBQAABAUAAAYFAAAGBQAACAUAAAgFAAAKBQAACgUAAAwFAAAMBQAADgUAAA4FAAAQBQAAEAUAABIFAAASBQAAFAUAABQFAAAWBQAAFgUAABgFAAAYBQAAGgUAABoFAAAcBQAAHAUAAB4FAAAeBQAAIAUAACAFAAAiBQAAIgUAACQFAAAkBQAAJgUAACYFAAAoBQAAKAUAACoFAAAqBQAALAUAACwFAAAuBQAALgUAADEFAABWBQAAhwUAAIcFAACgEAAAxRAAAMcQAADHEAAAzRAAAM0QAAD4EwAA/RMAAIAcAACJHAAAkBwAALocAAC9HAAAvxwAAAAeAAAAHgAAAh4AAAIeAAAEHgAABB4AAAYeAAAGHgAACB4AAAgeAAAKHgAACh4AAAweAAAMHgAADh4AAA4eAAAQHgAAEB4AABIeAAASHgAAFB4AABQeAAAWHgAAFh4AABgeAAAYHgAAGh4AABoeAAAcHgAAHB4AAB4eAAAeHgAAIB4AACAeAAAiHgAAIh4AACQeAAAkHgAAJh4AACYeAAAoHgAAKB4AACoeAAAqHgAALB4AACweAAAuHgAALh4AADAeAAAwHgAAMh4AADIeAAA0HgAANB4AADYeAAA2HgAAOB4AADgeAAA6HgAAOh4AADweAAA8HgAAPh4AAD4eAABAHgAAQB4AAEIeAABCHgAARB4AAEQeAABGHgAARh4AAEgeAABIHgAASh4AAEoeAABMHgAATB4AAE4eAABOHgAAUB4AAFAeAABSHgAAUh4AAFQeAABUHgAAVh4AAFYeAABYHgAAWB4AAFoeAABaHgAAXB4AAFweAABeHgAAXh4AAGAeAABgHgAAYh4AAGIeAABkHgAAZB4AAGYeAABmHgAAaB4AAGgeAABqHgAAah4AAGweAABsHgAAbh4AAG4eAABwHgAAcB4AAHIeAAByHgAAdB4AAHQeAAB2HgAAdh4AAHgeAAB4HgAAeh4AAHoeAAB8HgAAfB4AAH4eAAB+HgAAgB4AAIAeAACCHgAAgh4AAIQeAACEHgAAhh4AAIYeAACIHgAAiB4AAIoeAACKHgAAjB4AAIweAACOHgAAjh4AAJAeAACQHgAAkh4AAJIeAACUHgAAlB4AAJoeAACbHgAAnh4AAJ4eAACgHgAAoB4AAKIeAACiHgAApB4AAKQeAACmHgAAph4AAKgeAACoHgAAqh4AAKoeAACsHgAArB4AAK4eAACuHgAAsB4AALAeAACyHgAAsh4AALQeAAC0HgAAth4AALYeAAC4HgAAuB4AALoeAAC6HgAAvB4AALweAAC+HgAAvh4AAMAeAADAHgAAwh4AAMIeAADEHgAAxB4AAMYeAADGHgAAyB4AAMgeAADKHgAAyh4AAMweAADMHgAAzh4AAM4eAADQHgAA0B4AANIeAADSHgAA1B4AANQeAADWHgAA1h4AANgeAADYHgAA2h4AANoeAADcHgAA3B4AAN4eAADeHgAA4B4AAOAeAADiHgAA4h4AAOQeAADkHgAA5h4AAOYeAADoHgAA6B4AAOoeAADqHgAA7B4AAOweAADuHgAA7h4AAPAeAADwHgAA8h4AAPIeAAD0HgAA9B4AAPYeAAD2HgAA+B4AAPgeAAD6HgAA+h4AAPweAAD8HgAA/h4AAP4eAAAIHwAADx8AABgfAAAdHwAAKB8AAC8fAAA4HwAAPx8AAEgfAABNHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAF8fAABoHwAAbx8AAIAfAACvHwAAsh8AALQfAAC3HwAAvB8AAMIfAADEHwAAxx8AAMwfAADYHwAA2x8AAOgfAADsHwAA8h8AAPQfAAD3HwAA/B8AACYhAAAmIQAAKiEAACshAAAyIQAAMiEAAGAhAABvIQAAgyEAAIMhAAC2JAAAzyQAAAAsAAAvLAAAYCwAAGAsAABiLAAAZCwAAGcsAABnLAAAaSwAAGksAABrLAAAaywAAG0sAABwLAAAciwAAHIsAAB1LAAAdSwAAH4sAACALAAAgiwAAIIsAACELAAAhCwAAIYsAACGLAAAiCwAAIgsAACKLAAAiiwAAIwsAACMLAAAjiwAAI4sAACQLAAAkCwAAJIsAACSLAAAlCwAAJQsAACWLAAAliwAAJgsAACYLAAAmiwAAJosAACcLAAAnCwAAJ4sAACeLAAAoCwAAKAsAACiLAAAoiwAAKQsAACkLAAApiwAAKYsAACoLAAAqCwAAKosAACqLAAArCwAAKwsAACuLAAAriwAALAsAACwLAAAsiwAALIsAAC0LAAAtCwAALYsAAC2LAAAuCwAALgsAAC6LAAAuiwAALwsAAC8LAAAviwAAL4sAADALAAAwCwAAMIsAADCLAAAxCwAAMQsAADGLAAAxiwAAMgsAADILAAAyiwAAMosAADMLAAAzCwAAM4sAADOLAAA0CwAANAsAADSLAAA0iwAANQsAADULAAA1iwAANYsAADYLAAA2CwAANosAADaLAAA3CwAANwsAADeLAAA3iwAAOAsAADgLAAA4iwAAOIsAADrLAAA6ywAAO0sAADtLAAA8iwAAPIsAABApgAAQKYAAEKmAABCpgAARKYAAESmAABGpgAARqYAAEimAABIpgAASqYAAEqmAABMpgAATKYAAE6mAABOpgAAUKYAAFCmAABSpgAAUqYAAFSmAABUpgAAVqYAAFamAABYpgAAWKYAAFqmAABapgAAXKYAAFymAABepgAAXqYAAGCmAABgpgAAYqYAAGKmAABkpgAAZKYAAGamAABmpgAAaKYAAGimAABqpgAAaqYAAGymAABspgAAgKYAAICmAACCpgAAgqYAAISmAACEpgAAhqYAAIamAACIpgAAiKYAAIqmAACKpgAAjKYAAIymAACOpgAAjqYAAJCmAACQpgAAkqYAAJKmAACUpgAAlKYAAJamAACWpgAAmKYAAJimAACapgAAmqYAACKnAAAipwAAJKcAACSnAAAmpwAAJqcAACinAAAopwAAKqcAACqnAAAspwAALKcAAC6nAAAupwAAMqcAADKnAAA0pwAANKcAADanAAA2pwAAOKcAADinAAA6pwAAOqcAADynAAA8pwAAPqcAAD6nAABApwAAQKcAAEKnAABCpwAARKcAAESnAABGpwAARqcAAEinAABIpwAASqcAAEqnAABMpwAATKcAAE6nAABOpwAAUKcAAFCnAABSpwAAUqcAAFSnAABUpwAAVqcAAFanAABYpwAAWKcAAFqnAABapwAAXKcAAFynAABepwAAXqcAAGCnAABgpwAAYqcAAGKnAABkpwAAZKcAAGanAABmpwAAaKcAAGinAABqpwAAaqcAAGynAABspwAAbqcAAG6nAAB5pwAAeacAAHunAAB7pwAAfacAAH6nAACApwAAgKcAAIKnAACCpwAAhKcAAISnAACGpwAAhqcAAIunAACLpwAAjacAAI2nAACQpwAAkKcAAJKnAACSpwAAlqcAAJanAACYpwAAmKcAAJqnAACapwAAnKcAAJynAACepwAAnqcAAKCnAACgpwAAoqcAAKKnAACkpwAApKcAAKanAACmpwAAqKcAAKinAACqpwAArqcAALCnAAC0pwAAtqcAALanAAC4pwAAuKcAALqnAAC6pwAAvKcAALynAAC+pwAAvqcAAMCnAADApwAAwqcAAMKnAADEpwAAx6cAAMmnAADJpwAAy6cAAMynAADQpwAA0KcAANanAADWpwAA2KcAANinAADapwAA2qcAANynAADcpwAA9acAAPWnAABwqwAAv6sAAAD7AAAG+wAAE/sAABf7AAAh/wAAOv8AAAAEAQAnBAEAsAQBANMEAQBwBQEAegUBAHwFAQCKBQEAjAUBAJIFAQCUBQEAlQUBAIAMAQCyDAEAUA0BAGUNAQCgGAEAvxgBAEBuAQBfbgEAAOkBACHpAQBBAAAAWgAAAGEAAAB6AAAAtQAAALUAAADAAAAA1gAAANgAAAD2AAAA+AAAADcBAAA5AQAAjAEAAI4BAACpAQAArAEAALkBAAC8AQAAvQEAAL8BAAC/AQAAxAEAACACAAAiAgAAMwIAADoCAABUAgAAVgIAAFcCAABZAgAAWQIAAFsCAABcAgAAYAIAAGECAABjAgAAZgIAAGgCAABsAgAAbwIAAG8CAABxAgAAcgIAAHUCAAB1AgAAfQIAAH0CAACAAgAAgAIAAIICAACDAgAAhwIAAIwCAACSAgAAkgIAAJ0CAACeAgAARQMAAEUDAABwAwAAcwMAAHYDAAB3AwAAewMAAH0DAAB/AwAAfwMAAIYDAACGAwAAiAMAAIoDAACMAwAAjAMAAI4DAAChAwAAowMAANEDAADVAwAA9QMAAPcDAAD7AwAA/QMAAIEEAACKBAAALwUAADEFAABWBQAAYQUAAIcFAACgEAAAxRAAAMcQAADHEAAAzRAAAM0QAADQEAAA+hAAAP0QAAD/EAAAoBMAAPUTAAD4EwAA/RMAAIAcAACKHAAAkBwAALocAAC9HAAAvxwAAHkdAAB5HQAAfR0AAH0dAACOHQAAjh0AAAAeAACbHgAAnh4AAJ4eAACgHgAAFR8AABgfAAAdHwAAIB8AAEUfAABIHwAATR8AAFAfAABXHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAH0fAACAHwAAtB8AALYfAAC8HwAAvh8AAL4fAADCHwAAxB8AAMYfAADMHwAA0B8AANMfAADWHwAA2x8AAOAfAADsHwAA8h8AAPQfAAD2HwAA/B8AACYhAAAmIQAAKiEAACshAAAyIQAAMiEAAE4hAABOIQAAYCEAAH8hAACDIQAAhCEAALYkAADpJAAAACwAAHAsAAByLAAAcywAAHUsAAB2LAAAfiwAAOMsAADrLAAA7iwAAPIsAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAQKYAAG2mAACApgAAm6YAACKnAAAvpwAAMqcAAG+nAAB5pwAAh6cAAIunAACNpwAAkKcAAJSnAACWpwAArqcAALCnAADNpwAA0KcAANGnAADWpwAA3KcAAPWnAAD2pwAAU6sAAFOrAABwqwAAv6sAAAD7AAAG+wAAE/sAABf7AAAh/wAAOv8AAEH/AABa/wAAAAQBAE8EAQCwBAEA0wQBANgEAQD7BAEAcAUBAHoFAQB8BQEAigUBAIwFAQCSBQEAlAUBAJUFAQCXBQEAoQUBAKMFAQCxBQEAswUBALkFAQC7BQEAvAUBAIAMAQCyDAEAwAwBAPIMAQBQDQEAZQ0BAHANAQCFDQEAoBgBAN8YAQBAbgEAf24BAADpAQBD6QEAQQAAAFoAAADAAAAA1gAAANgAAADeAAAAAAEAAAABAAACAQAAAgEAAAQBAAAEAQAABgEAAAYBAAAIAQAACAEAAAoBAAAKAQAADAEAAAwBAAAOAQAADgEAABABAAAQAQAAEgEAABIBAAAUAQAAFAEAABYBAAAWAQAAGAEAABgBAAAaAQAAGgEAABwBAAAcAQAAHgEAAB4BAAAgAQAAIAEAACIBAAAiAQAAJAEAACQBAAAmAQAAJgEAACgBAAAoAQAAKgEAACoBAAAsAQAALAEAAC4BAAAuAQAAMAEAADABAAAyAQAAMgEAADQBAAA0AQAANgEAADYBAAA5AQAAOQEAADsBAAA7AQAAPQEAAD0BAAA/AQAAPwEAAEEBAABBAQAAQwEAAEMBAABFAQAARQEAAEcBAABHAQAASgEAAEoBAABMAQAATAEAAE4BAABOAQAAUAEAAFABAABSAQAAUgEAAFQBAABUAQAAVgEAAFYBAABYAQAAWAEAAFoBAABaAQAAXAEAAFwBAABeAQAAXgEAAGABAABgAQAAYgEAAGIBAABkAQAAZAEAAGYBAABmAQAAaAEAAGgBAABqAQAAagEAAGwBAABsAQAAbgEAAG4BAABwAQAAcAEAAHIBAAByAQAAdAEAAHQBAAB2AQAAdgEAAHgBAAB5AQAAewEAAHsBAAB9AQAAfQEAAIEBAACCAQAAhAEAAIQBAACGAQAAhwEAAIkBAACLAQAAjgEAAJEBAACTAQAAlAEAAJYBAACYAQAAnAEAAJ0BAACfAQAAoAEAAKIBAACiAQAApAEAAKQBAACmAQAApwEAAKkBAACpAQAArAEAAKwBAACuAQAArwEAALEBAACzAQAAtQEAALUBAAC3AQAAuAEAALwBAAC8AQAAxAEAAMUBAADHAQAAyAEAAMoBAADLAQAAzQEAAM0BAADPAQAAzwEAANEBAADRAQAA0wEAANMBAADVAQAA1QEAANcBAADXAQAA2QEAANkBAADbAQAA2wEAAN4BAADeAQAA4AEAAOABAADiAQAA4gEAAOQBAADkAQAA5gEAAOYBAADoAQAA6AEAAOoBAADqAQAA7AEAAOwBAADuAQAA7gEAAPEBAADyAQAA9AEAAPQBAAD2AQAA+AEAAPoBAAD6AQAA/AEAAPwBAAD+AQAA/gEAAAACAAAAAgAAAgIAAAICAAAEAgAABAIAAAYCAAAGAgAACAIAAAgCAAAKAgAACgIAAAwCAAAMAgAADgIAAA4CAAAQAgAAEAIAABICAAASAgAAFAIAABQCAAAWAgAAFgIAABgCAAAYAgAAGgIAABoCAAAcAgAAHAIAAB4CAAAeAgAAIAIAACACAAAiAgAAIgIAACQCAAAkAgAAJgIAACYCAAAoAgAAKAIAACoCAAAqAgAALAIAACwCAAAuAgAALgIAADACAAAwAgAAMgIAADICAAA6AgAAOwIAAD0CAAA+AgAAQQIAAEECAABDAgAARgIAAEgCAABIAgAASgIAAEoCAABMAgAATAIAAE4CAABOAgAAcAMAAHADAAByAwAAcgMAAHYDAAB2AwAAfwMAAH8DAACGAwAAhgMAAIgDAACKAwAAjAMAAIwDAACOAwAAjwMAAJEDAAChAwAAowMAAKsDAADPAwAAzwMAANgDAADYAwAA2gMAANoDAADcAwAA3AMAAN4DAADeAwAA4AMAAOADAADiAwAA4gMAAOQDAADkAwAA5gMAAOYDAADoAwAA6AMAAOoDAADqAwAA7AMAAOwDAADuAwAA7gMAAPQDAAD0AwAA9wMAAPcDAAD5AwAA+gMAAP0DAAAvBAAAYAQAAGAEAABiBAAAYgQAAGQEAABkBAAAZgQAAGYEAABoBAAAaAQAAGoEAABqBAAAbAQAAGwEAABuBAAAbgQAAHAEAABwBAAAcgQAAHIEAAB0BAAAdAQAAHYEAAB2BAAAeAQAAHgEAAB6BAAAegQAAHwEAAB8BAAAfgQAAH4EAACABAAAgAQAAIoEAACKBAAAjAQAAIwEAACOBAAAjgQAAJAEAACQBAAAkgQAAJIEAACUBAAAlAQAAJYEAACWBAAAmAQAAJgEAACaBAAAmgQAAJwEAACcBAAAngQAAJ4EAACgBAAAoAQAAKIEAACiBAAApAQAAKQEAACmBAAApgQAAKgEAACoBAAAqgQAAKoEAACsBAAArAQAAK4EAACuBAAAsAQAALAEAACyBAAAsgQAALQEAAC0BAAAtgQAALYEAAC4BAAAuAQAALoEAAC6BAAAvAQAALwEAAC+BAAAvgQAAMAEAADBBAAAwwQAAMMEAADFBAAAxQQAAMcEAADHBAAAyQQAAMkEAADLBAAAywQAAM0EAADNBAAA0AQAANAEAADSBAAA0gQAANQEAADUBAAA1gQAANYEAADYBAAA2AQAANoEAADaBAAA3AQAANwEAADeBAAA3gQAAOAEAADgBAAA4gQAAOIEAADkBAAA5AQAAOYEAADmBAAA6AQAAOgEAADqBAAA6gQAAOwEAADsBAAA7gQAAO4EAADwBAAA8AQAAPIEAADyBAAA9AQAAPQEAAD2BAAA9gQAAPgEAAD4BAAA+gQAAPoEAAD8BAAA/AQAAP4EAAD+BAAAAAUAAAAFAAACBQAAAgUAAAQFAAAEBQAABgUAAAYFAAAIBQAACAUAAAoFAAAKBQAADAUAAAwFAAAOBQAADgUAABAFAAAQBQAAEgUAABIFAAAUBQAAFAUAABYFAAAWBQAAGAUAABgFAAAaBQAAGgUAABwFAAAcBQAAHgUAAB4FAAAgBQAAIAUAACIFAAAiBQAAJAUAACQFAAAmBQAAJgUAACgFAAAoBQAAKgUAACoFAAAsBQAALAUAAC4FAAAuBQAAMQUAAFYFAACgEAAAxRAAAMcQAADHEAAAzRAAAM0QAACgEwAA9RMAAIkcAACJHAAAkBwAALocAAC9HAAAvxwAAAAeAAAAHgAAAh4AAAIeAAAEHgAABB4AAAYeAAAGHgAACB4AAAgeAAAKHgAACh4AAAweAAAMHgAADh4AAA4eAAAQHgAAEB4AABIeAAASHgAAFB4AABQeAAAWHgAAFh4AABgeAAAYHgAAGh4AABoeAAAcHgAAHB4AAB4eAAAeHgAAIB4AACAeAAAiHgAAIh4AACQeAAAkHgAAJh4AACYeAAAoHgAAKB4AACoeAAAqHgAALB4AACweAAAuHgAALh4AADAeAAAwHgAAMh4AADIeAAA0HgAANB4AADYeAAA2HgAAOB4AADgeAAA6HgAAOh4AADweAAA8HgAAPh4AAD4eAABAHgAAQB4AAEIeAABCHgAARB4AAEQeAABGHgAARh4AAEgeAABIHgAASh4AAEoeAABMHgAATB4AAE4eAABOHgAAUB4AAFAeAABSHgAAUh4AAFQeAABUHgAAVh4AAFYeAABYHgAAWB4AAFoeAABaHgAAXB4AAFweAABeHgAAXh4AAGAeAABgHgAAYh4AAGIeAABkHgAAZB4AAGYeAABmHgAAaB4AAGgeAABqHgAAah4AAGweAABsHgAAbh4AAG4eAABwHgAAcB4AAHIeAAByHgAAdB4AAHQeAAB2HgAAdh4AAHgeAAB4HgAAeh4AAHoeAAB8HgAAfB4AAH4eAAB+HgAAgB4AAIAeAACCHgAAgh4AAIQeAACEHgAAhh4AAIYeAACIHgAAiB4AAIoeAACKHgAAjB4AAIweAACOHgAAjh4AAJAeAACQHgAAkh4AAJIeAACUHgAAlB4AAJ4eAACeHgAAoB4AAKAeAACiHgAAoh4AAKQeAACkHgAAph4AAKYeAACoHgAAqB4AAKoeAACqHgAArB4AAKweAACuHgAArh4AALAeAACwHgAAsh4AALIeAAC0HgAAtB4AALYeAAC2HgAAuB4AALgeAAC6HgAAuh4AALweAAC8HgAAvh4AAL4eAADAHgAAwB4AAMIeAADCHgAAxB4AAMQeAADGHgAAxh4AAMgeAADIHgAAyh4AAMoeAADMHgAAzB4AAM4eAADOHgAA0B4AANAeAADSHgAA0h4AANQeAADUHgAA1h4AANYeAADYHgAA2B4AANoeAADaHgAA3B4AANweAADeHgAA3h4AAOAeAADgHgAA4h4AAOIeAADkHgAA5B4AAOYeAADmHgAA6B4AAOgeAADqHgAA6h4AAOweAADsHgAA7h4AAO4eAADwHgAA8B4AAPIeAADyHgAA9B4AAPQeAAD2HgAA9h4AAPgeAAD4HgAA+h4AAPoeAAD8HgAA/B4AAP4eAAD+HgAACB8AAA8fAAAYHwAAHR8AACgfAAAvHwAAOB8AAD8fAABIHwAATR8AAFkfAABZHwAAWx8AAFsfAABdHwAAXR8AAF8fAABfHwAAaB8AAG8fAACIHwAAjx8AAJgfAACfHwAAqB8AAK8fAAC4HwAAvB8AAMgfAADMHwAA2B8AANsfAADoHwAA7B8AAPgfAAD8HwAAJiEAACYhAAAqIQAAKyEAADIhAAAyIQAAYCEAAG8hAACDIQAAgyEAALYkAADPJAAAACwAAC8sAABgLAAAYCwAAGIsAABkLAAAZywAAGcsAABpLAAAaSwAAGssAABrLAAAbSwAAHAsAAByLAAAciwAAHUsAAB1LAAAfiwAAIAsAACCLAAAgiwAAIQsAACELAAAhiwAAIYsAACILAAAiCwAAIosAACKLAAAjCwAAIwsAACOLAAAjiwAAJAsAACQLAAAkiwAAJIsAACULAAAlCwAAJYsAACWLAAAmCwAAJgsAACaLAAAmiwAAJwsAACcLAAAniwAAJ4sAACgLAAAoCwAAKIsAACiLAAApCwAAKQsAACmLAAApiwAAKgsAACoLAAAqiwAAKosAACsLAAArCwAAK4sAACuLAAAsCwAALAsAACyLAAAsiwAALQsAAC0LAAAtiwAALYsAAC4LAAAuCwAALosAAC6LAAAvCwAALwsAAC+LAAAviwAAMAsAADALAAAwiwAAMIsAADELAAAxCwAAMYsAADGLAAAyCwAAMgsAADKLAAAyiwAAMwsAADMLAAAziwAAM4sAADQLAAA0CwAANIsAADSLAAA1CwAANQsAADWLAAA1iwAANgsAADYLAAA2iwAANosAADcLAAA3CwAAN4sAADeLAAA4CwAAOAsAADiLAAA4iwAAOssAADrLAAA7SwAAO0sAADyLAAA8iwAAECmAABApgAAQqYAAEKmAABEpgAARKYAAEamAABGpgAASKYAAEimAABKpgAASqYAAEymAABMpgAATqYAAE6mAABQpgAAUKYAAFKmAABSpgAAVKYAAFSmAABWpgAAVqYAAFimAABYpgAAWqYAAFqmAABcpgAAXKYAAF6mAABepgAAYKYAAGCmAABipgAAYqYAAGSmAABkpgAAZqYAAGamAABopgAAaKYAAGqmAABqpgAAbKYAAGymAACApgAAgKYAAIKmAACCpgAAhKYAAISmAACGpgAAhqYAAIimAACIpgAAiqYAAIqmAACMpgAAjKYAAI6mAACOpgAAkKYAAJCmAACSpgAAkqYAAJSmAACUpgAAlqYAAJamAACYpgAAmKYAAJqmAACapgAAIqcAACKnAAAkpwAAJKcAACanAAAmpwAAKKcAACinAAAqpwAAKqcAACynAAAspwAALqcAAC6nAAAypwAAMqcAADSnAAA0pwAANqcAADanAAA4pwAAOKcAADqnAAA6pwAAPKcAADynAAA+pwAAPqcAAECnAABApwAAQqcAAEKnAABEpwAARKcAAEanAABGpwAASKcAAEinAABKpwAASqcAAEynAABMpwAATqcAAE6nAABQpwAAUKcAAFKnAABSpwAAVKcAAFSnAABWpwAAVqcAAFinAABYpwAAWqcAAFqnAABcpwAAXKcAAF6nAABepwAAYKcAAGCnAABipwAAYqcAAGSnAABkpwAAZqcAAGanAABopwAAaKcAAGqnAABqpwAAbKcAAGynAABupwAAbqcAAHmnAAB5pwAAe6cAAHunAAB9pwAAfqcAAICnAACApwAAgqcAAIKnAACEpwAAhKcAAIanAACGpwAAi6cAAIunAACNpwAAjacAAJCnAACQpwAAkqcAAJKnAACWpwAAlqcAAJinAACYpwAAmqcAAJqnAACcpwAAnKcAAJ6nAACepwAAoKcAAKCnAACipwAAoqcAAKSnAACkpwAApqcAAKanAACopwAAqKcAAKqnAACupwAAsKcAALSnAAC2pwAAtqcAALinAAC4pwAAuqcAALqnAAC8pwAAvKcAAL6nAAC+pwAAwKcAAMCnAADCpwAAwqcAAMSnAADHpwAAyacAAMmnAADLpwAAzKcAANCnAADQpwAA1qcAANanAADYpwAA2KcAANqnAADapwAA3KcAANynAAD1pwAA9acAACH/AAA6/wAAAAQBACcEAQCwBAEA0wQBAHAFAQB6BQEAfAUBAIoFAQCMBQEAkgUBAJQFAQCVBQEAgAwBALIMAQBQDQEAZQ0BAKAYAQC/GAEAQG4BAF9uAQAA6QEAIekBAGEAAAB6AAAAtQAAALUAAADfAAAA9gAAAPgAAAD/AAAAAQEAAAEBAAADAQAAAwEAAAUBAAAFAQAABwEAAAcBAAAJAQAACQEAAAsBAAALAQAADQEAAA0BAAAPAQAADwEAABEBAAARAQAAEwEAABMBAAAVAQAAFQEAABcBAAAXAQAAGQEAABkBAAAbAQAAGwEAAB0BAAAdAQAAHwEAAB8BAAAhAQAAIQEAACMBAAAjAQAAJQEAACUBAAAnAQAAJwEAACkBAAApAQAAKwEAACsBAAAtAQAALQEAAC8BAAAvAQAAMQEAADEBAAAzAQAAMwEAADUBAAA1AQAANwEAADcBAAA6AQAAOgEAADwBAAA8AQAAPgEAAD4BAABAAQAAQAEAAEIBAABCAQAARAEAAEQBAABGAQAARgEAAEgBAABJAQAASwEAAEsBAABNAQAATQEAAE8BAABPAQAAUQEAAFEBAABTAQAAUwEAAFUBAABVAQAAVwEAAFcBAABZAQAAWQEAAFsBAABbAQAAXQEAAF0BAABfAQAAXwEAAGEBAABhAQAAYwEAAGMBAABlAQAAZQEAAGcBAABnAQAAaQEAAGkBAABrAQAAawEAAG0BAABtAQAAbwEAAG8BAABxAQAAcQEAAHMBAABzAQAAdQEAAHUBAAB3AQAAdwEAAHoBAAB6AQAAfAEAAHwBAAB+AQAAgAEAAIMBAACDAQAAhQEAAIUBAACIAQAAiAEAAIwBAACMAQAAkgEAAJIBAACVAQAAlQEAAJkBAACbAQAAngEAAJ4BAAChAQAAoQEAAKMBAACjAQAApQEAAKUBAACoAQAAqAEAAK0BAACtAQAAsAEAALABAAC0AQAAtAEAALYBAAC2AQAAuQEAALkBAAC9AQAAvQEAAL8BAAC/AQAAxAEAAMQBAADGAQAAxwEAAMkBAADKAQAAzAEAAMwBAADOAQAAzgEAANABAADQAQAA0gEAANIBAADUAQAA1AEAANYBAADWAQAA2AEAANgBAADaAQAA2gEAANwBAADdAQAA3wEAAN8BAADhAQAA4QEAAOMBAADjAQAA5QEAAOUBAADnAQAA5wEAAOkBAADpAQAA6wEAAOsBAADtAQAA7QEAAO8BAADxAQAA8wEAAPMBAAD1AQAA9QEAAPkBAAD5AQAA+wEAAPsBAAD9AQAA/QEAAP8BAAD/AQAAAQIAAAECAAADAgAAAwIAAAUCAAAFAgAABwIAAAcCAAAJAgAACQIAAAsCAAALAgAADQIAAA0CAAAPAgAADwIAABECAAARAgAAEwIAABMCAAAVAgAAFQIAABcCAAAXAgAAGQIAABkCAAAbAgAAGwIAAB0CAAAdAgAAHwIAAB8CAAAjAgAAIwIAACUCAAAlAgAAJwIAACcCAAApAgAAKQIAACsCAAArAgAALQIAAC0CAAAvAgAALwIAADECAAAxAgAAMwIAADMCAAA8AgAAPAIAAD8CAABAAgAAQgIAAEICAABHAgAARwIAAEkCAABJAgAASwIAAEsCAABNAgAATQIAAE8CAABUAgAAVgIAAFcCAABZAgAAWQIAAFsCAABcAgAAYAIAAGECAABjAgAAZgIAAGgCAABsAgAAbwIAAG8CAABxAgAAcgIAAHUCAAB1AgAAfQIAAH0CAACAAgAAgAIAAIICAACDAgAAhwIAAIwCAACSAgAAkgIAAJ0CAACeAgAARQMAAEUDAABxAwAAcQMAAHMDAABzAwAAdwMAAHcDAAB7AwAAfQMAAJADAACQAwAArAMAAM4DAADQAwAA0QMAANUDAADXAwAA2QMAANkDAADbAwAA2wMAAN0DAADdAwAA3wMAAN8DAADhAwAA4QMAAOMDAADjAwAA5QMAAOUDAADnAwAA5wMAAOkDAADpAwAA6wMAAOsDAADtAwAA7QMAAO8DAADzAwAA9QMAAPUDAAD4AwAA+AMAAPsDAAD7AwAAMAQAAF8EAABhBAAAYQQAAGMEAABjBAAAZQQAAGUEAABnBAAAZwQAAGkEAABpBAAAawQAAGsEAABtBAAAbQQAAG8EAABvBAAAcQQAAHEEAABzBAAAcwQAAHUEAAB1BAAAdwQAAHcEAAB5BAAAeQQAAHsEAAB7BAAAfQQAAH0EAAB/BAAAfwQAAIEEAACBBAAAiwQAAIsEAACNBAAAjQQAAI8EAACPBAAAkQQAAJEEAACTBAAAkwQAAJUEAACVBAAAlwQAAJcEAACZBAAAmQQAAJsEAACbBAAAnQQAAJ0EAACfBAAAnwQAAKEEAAChBAAAowQAAKMEAAClBAAApQQAAKcEAACnBAAAqQQAAKkEAACrBAAAqwQAAK0EAACtBAAArwQAAK8EAACxBAAAsQQAALMEAACzBAAAtQQAALUEAAC3BAAAtwQAALkEAAC5BAAAuwQAALsEAAC9BAAAvQQAAL8EAAC/BAAAwgQAAMIEAADEBAAAxAQAAMYEAADGBAAAyAQAAMgEAADKBAAAygQAAMwEAADMBAAAzgQAAM8EAADRBAAA0QQAANMEAADTBAAA1QQAANUEAADXBAAA1wQAANkEAADZBAAA2wQAANsEAADdBAAA3QQAAN8EAADfBAAA4QQAAOEEAADjBAAA4wQAAOUEAADlBAAA5wQAAOcEAADpBAAA6QQAAOsEAADrBAAA7QQAAO0EAADvBAAA7wQAAPEEAADxBAAA8wQAAPMEAAD1BAAA9QQAAPcEAAD3BAAA+QQAAPkEAAD7BAAA+wQAAP0EAAD9BAAA/wQAAP8EAAABBQAAAQUAAAMFAAADBQAABQUAAAUFAAAHBQAABwUAAAkFAAAJBQAACwUAAAsFAAANBQAADQUAAA8FAAAPBQAAEQUAABEFAAATBQAAEwUAABUFAAAVBQAAFwUAABcFAAAZBQAAGQUAABsFAAAbBQAAHQUAAB0FAAAfBQAAHwUAACEFAAAhBQAAIwUAACMFAAAlBQAAJQUAACcFAAAnBQAAKQUAACkFAAArBQAAKwUAAC0FAAAtBQAALwUAAC8FAABhBQAAhwUAAPgTAAD9EwAAgBwAAIgcAACKHAAAihwAAHkdAAB5HQAAfR0AAH0dAACOHQAAjh0AAAEeAAABHgAAAx4AAAMeAAAFHgAABR4AAAceAAAHHgAACR4AAAkeAAALHgAACx4AAA0eAAANHgAADx4AAA8eAAARHgAAER4AABMeAAATHgAAFR4AABUeAAAXHgAAFx4AABkeAAAZHgAAGx4AABseAAAdHgAAHR4AAB8eAAAfHgAAIR4AACEeAAAjHgAAIx4AACUeAAAlHgAAJx4AACceAAApHgAAKR4AACseAAArHgAALR4AAC0eAAAvHgAALx4AADEeAAAxHgAAMx4AADMeAAA1HgAANR4AADceAAA3HgAAOR4AADkeAAA7HgAAOx4AAD0eAAA9HgAAPx4AAD8eAABBHgAAQR4AAEMeAABDHgAARR4AAEUeAABHHgAARx4AAEkeAABJHgAASx4AAEseAABNHgAATR4AAE8eAABPHgAAUR4AAFEeAABTHgAAUx4AAFUeAABVHgAAVx4AAFceAABZHgAAWR4AAFseAABbHgAAXR4AAF0eAABfHgAAXx4AAGEeAABhHgAAYx4AAGMeAABlHgAAZR4AAGceAABnHgAAaR4AAGkeAABrHgAAax4AAG0eAABtHgAAbx4AAG8eAABxHgAAcR4AAHMeAABzHgAAdR4AAHUeAAB3HgAAdx4AAHkeAAB5HgAAex4AAHseAAB9HgAAfR4AAH8eAAB/HgAAgR4AAIEeAACDHgAAgx4AAIUeAACFHgAAhx4AAIceAACJHgAAiR4AAIseAACLHgAAjR4AAI0eAACPHgAAjx4AAJEeAACRHgAAkx4AAJMeAACVHgAAmx4AAKEeAAChHgAAox4AAKMeAAClHgAApR4AAKceAACnHgAAqR4AAKkeAACrHgAAqx4AAK0eAACtHgAArx4AAK8eAACxHgAAsR4AALMeAACzHgAAtR4AALUeAAC3HgAAtx4AALkeAAC5HgAAux4AALseAAC9HgAAvR4AAL8eAAC/HgAAwR4AAMEeAADDHgAAwx4AAMUeAADFHgAAxx4AAMceAADJHgAAyR4AAMseAADLHgAAzR4AAM0eAADPHgAAzx4AANEeAADRHgAA0x4AANMeAADVHgAA1R4AANceAADXHgAA2R4AANkeAADbHgAA2x4AAN0eAADdHgAA3x4AAN8eAADhHgAA4R4AAOMeAADjHgAA5R4AAOUeAADnHgAA5x4AAOkeAADpHgAA6x4AAOseAADtHgAA7R4AAO8eAADvHgAA8R4AAPEeAADzHgAA8x4AAPUeAAD1HgAA9x4AAPceAAD5HgAA+R4AAPseAAD7HgAA/R4AAP0eAAD/HgAABx8AABAfAAAVHwAAIB8AACcfAAAwHwAANx8AAEAfAABFHwAAUB8AAFcfAABgHwAAZx8AAHAfAAB9HwAAgB8AAIcfAACQHwAAlx8AAKAfAACnHwAAsB8AALQfAAC2HwAAtx8AAL4fAAC+HwAAwh8AAMQfAADGHwAAxx8AANAfAADTHwAA1h8AANcfAADgHwAA5x8AAPIfAAD0HwAA9h8AAPcfAABOIQAATiEAAHAhAAB/IQAAhCEAAIQhAADQJAAA6SQAADAsAABfLAAAYSwAAGEsAABlLAAAZiwAAGgsAABoLAAAaiwAAGosAABsLAAAbCwAAHMsAABzLAAAdiwAAHYsAACBLAAAgSwAAIMsAACDLAAAhSwAAIUsAACHLAAAhywAAIksAACJLAAAiywAAIssAACNLAAAjSwAAI8sAACPLAAAkSwAAJEsAACTLAAAkywAAJUsAACVLAAAlywAAJcsAACZLAAAmSwAAJssAACbLAAAnSwAAJ0sAACfLAAAnywAAKEsAAChLAAAoywAAKMsAAClLAAApSwAAKcsAACnLAAAqSwAAKksAACrLAAAqywAAK0sAACtLAAArywAAK8sAACxLAAAsSwAALMsAACzLAAAtSwAALUsAAC3LAAAtywAALksAAC5LAAAuywAALssAAC9LAAAvSwAAL8sAAC/LAAAwSwAAMEsAADDLAAAwywAAMUsAADFLAAAxywAAMcsAADJLAAAySwAAMssAADLLAAAzSwAAM0sAADPLAAAzywAANEsAADRLAAA0ywAANMsAADVLAAA1SwAANcsAADXLAAA2SwAANksAADbLAAA2ywAAN0sAADdLAAA3ywAAN8sAADhLAAA4SwAAOMsAADjLAAA7CwAAOwsAADuLAAA7iwAAPMsAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAQaYAAEGmAABDpgAAQ6YAAEWmAABFpgAAR6YAAEemAABJpgAASaYAAEumAABLpgAATaYAAE2mAABPpgAAT6YAAFGmAABRpgAAU6YAAFOmAABVpgAAVaYAAFemAABXpgAAWaYAAFmmAABbpgAAW6YAAF2mAABdpgAAX6YAAF+mAABhpgAAYaYAAGOmAABjpgAAZaYAAGWmAABnpgAAZ6YAAGmmAABppgAAa6YAAGumAABtpgAAbaYAAIGmAACBpgAAg6YAAIOmAACFpgAAhaYAAIemAACHpgAAiaYAAImmAACLpgAAi6YAAI2mAACNpgAAj6YAAI+mAACRpgAAkaYAAJOmAACTpgAAlaYAAJWmAACXpgAAl6YAAJmmAACZpgAAm6YAAJumAAAjpwAAI6cAACWnAAAlpwAAJ6cAACenAAAppwAAKacAACunAAArpwAALacAAC2nAAAvpwAAL6cAADOnAAAzpwAANacAADWnAAA3pwAAN6cAADmnAAA5pwAAO6cAADunAAA9pwAAPacAAD+nAAA/pwAAQacAAEGnAABDpwAAQ6cAAEWnAABFpwAAR6cAAEenAABJpwAASacAAEunAABLpwAATacAAE2nAABPpwAAT6cAAFGnAABRpwAAU6cAAFOnAABVpwAAVacAAFenAABXpwAAWacAAFmnAABbpwAAW6cAAF2nAABdpwAAX6cAAF+nAABhpwAAYacAAGOnAABjpwAAZacAAGWnAABnpwAAZ6cAAGmnAABppwAAa6cAAGunAABtpwAAbacAAG+nAABvpwAAeqcAAHqnAAB8pwAAfKcAAH+nAAB/pwAAgacAAIGnAACDpwAAg6cAAIWnAACFpwAAh6cAAIenAACMpwAAjKcAAJGnAACRpwAAk6cAAJSnAACXpwAAl6cAAJmnAACZpwAAm6cAAJunAACdpwAAnacAAJ+nAACfpwAAoacAAKGnAACjpwAAo6cAAKWnAAClpwAAp6cAAKenAACppwAAqacAALWnAAC1pwAAt6cAALenAAC5pwAAuacAALunAAC7pwAAvacAAL2nAAC/pwAAv6cAAMGnAADBpwAAw6cAAMOnAADIpwAAyKcAAMqnAADKpwAAzacAAM2nAADRpwAA0acAANenAADXpwAA2acAANmnAADbpwAA26cAAPanAAD2pwAAU6sAAFOrAABwqwAAv6sAAAD7AAAG+wAAE/sAABf7AABB/wAAWv8AACgEAQBPBAEA2AQBAPsEAQCXBQEAoQUBAKMFAQCxBQEAswUBALkFAQC7BQEAvAUBAMAMAQDyDAEAcA0BAIUNAQDAGAEA3xgBAGBuAQB/bgEAIukBAEPpAQBhAAAAegAAALUAAAC1AAAA3wAAAPYAAAD4AAAA/wAAAAEBAAABAQAAAwEAAAMBAAAFAQAABQEAAAcBAAAHAQAACQEAAAkBAAALAQAACwEAAA0BAAANAQAADwEAAA8BAAARAQAAEQEAABMBAAATAQAAFQEAABUBAAAXAQAAFwEAABkBAAAZAQAAGwEAABsBAAAdAQAAHQEAAB8BAAAfAQAAIQEAACEBAAAjAQAAIwEAACUBAAAlAQAAJwEAACcBAAApAQAAKQEAACsBAAArAQAALQEAAC0BAAAvAQAALwEAADEBAAAxAQAAMwEAADMBAAA1AQAANQEAADcBAAA3AQAAOgEAADoBAAA8AQAAPAEAAD4BAAA+AQAAQAEAAEABAABCAQAAQgEAAEQBAABEAQAARgEAAEYBAABIAQAASQEAAEsBAABLAQAATQEAAE0BAABPAQAATwEAAFEBAABRAQAAUwEAAFMBAABVAQAAVQEAAFcBAABXAQAAWQEAAFkBAABbAQAAWwEAAF0BAABdAQAAXwEAAF8BAABhAQAAYQEAAGMBAABjAQAAZQEAAGUBAABnAQAAZwEAAGkBAABpAQAAawEAAGsBAABtAQAAbQEAAG8BAABvAQAAcQEAAHEBAABzAQAAcwEAAHUBAAB1AQAAdwEAAHcBAAB6AQAAegEAAHwBAAB8AQAAfgEAAIABAACDAQAAgwEAAIUBAACFAQAAiAEAAIgBAACMAQAAjAEAAJIBAACSAQAAlQEAAJUBAACZAQAAmwEAAJ4BAACeAQAAoQEAAKEBAACjAQAAowEAAKUBAAClAQAAqAEAAKgBAACtAQAArQEAALABAACwAQAAtAEAALQBAAC2AQAAtgEAALkBAAC5AQAAvQEAAL0BAAC/AQAAvwEAAMUBAADGAQAAyAEAAMkBAADLAQAAzAEAAM4BAADOAQAA0AEAANABAADSAQAA0gEAANQBAADUAQAA1gEAANYBAADYAQAA2AEAANoBAADaAQAA3AEAAN0BAADfAQAA3wEAAOEBAADhAQAA4wEAAOMBAADlAQAA5QEAAOcBAADnAQAA6QEAAOkBAADrAQAA6wEAAO0BAADtAQAA7wEAAPABAADyAQAA8wEAAPUBAAD1AQAA+QEAAPkBAAD7AQAA+wEAAP0BAAD9AQAA/wEAAP8BAAABAgAAAQIAAAMCAAADAgAABQIAAAUCAAAHAgAABwIAAAkCAAAJAgAACwIAAAsCAAANAgAADQIAAA8CAAAPAgAAEQIAABECAAATAgAAEwIAABUCAAAVAgAAFwIAABcCAAAZAgAAGQIAABsCAAAbAgAAHQIAAB0CAAAfAgAAHwIAACMCAAAjAgAAJQIAACUCAAAnAgAAJwIAACkCAAApAgAAKwIAACsCAAAtAgAALQIAAC8CAAAvAgAAMQIAADECAAAzAgAAMwIAADwCAAA8AgAAPwIAAEACAABCAgAAQgIAAEcCAABHAgAASQIAAEkCAABLAgAASwIAAE0CAABNAgAATwIAAFQCAABWAgAAVwIAAFkCAABZAgAAWwIAAFwCAABgAgAAYQIAAGMCAABmAgAAaAIAAGwCAABvAgAAbwIAAHECAAByAgAAdQIAAHUCAAB9AgAAfQIAAIACAACAAgAAggIAAIMCAACHAgAAjAIAAJICAACSAgAAnQIAAJ4CAABFAwAARQMAAHEDAABxAwAAcwMAAHMDAAB3AwAAdwMAAHsDAAB9AwAAkAMAAJADAACsAwAAzgMAANADAADRAwAA1QMAANcDAADZAwAA2QMAANsDAADbAwAA3QMAAN0DAADfAwAA3wMAAOEDAADhAwAA4wMAAOMDAADlAwAA5QMAAOcDAADnAwAA6QMAAOkDAADrAwAA6wMAAO0DAADtAwAA7wMAAPMDAAD1AwAA9QMAAPgDAAD4AwAA+wMAAPsDAAAwBAAAXwQAAGEEAABhBAAAYwQAAGMEAABlBAAAZQQAAGcEAABnBAAAaQQAAGkEAABrBAAAawQAAG0EAABtBAAAbwQAAG8EAABxBAAAcQQAAHMEAABzBAAAdQQAAHUEAAB3BAAAdwQAAHkEAAB5BAAAewQAAHsEAAB9BAAAfQQAAH8EAAB/BAAAgQQAAIEEAACLBAAAiwQAAI0EAACNBAAAjwQAAI8EAACRBAAAkQQAAJMEAACTBAAAlQQAAJUEAACXBAAAlwQAAJkEAACZBAAAmwQAAJsEAACdBAAAnQQAAJ8EAACfBAAAoQQAAKEEAACjBAAAowQAAKUEAAClBAAApwQAAKcEAACpBAAAqQQAAKsEAACrBAAArQQAAK0EAACvBAAArwQAALEEAACxBAAAswQAALMEAAC1BAAAtQQAALcEAAC3BAAAuQQAALkEAAC7BAAAuwQAAL0EAAC9BAAAvwQAAL8EAADCBAAAwgQAAMQEAADEBAAAxgQAAMYEAADIBAAAyAQAAMoEAADKBAAAzAQAAMwEAADOBAAAzwQAANEEAADRBAAA0wQAANMEAADVBAAA1QQAANcEAADXBAAA2QQAANkEAADbBAAA2wQAAN0EAADdBAAA3wQAAN8EAADhBAAA4QQAAOMEAADjBAAA5QQAAOUEAADnBAAA5wQAAOkEAADpBAAA6wQAAOsEAADtBAAA7QQAAO8EAADvBAAA8QQAAPEEAADzBAAA8wQAAPUEAAD1BAAA9wQAAPcEAAD5BAAA+QQAAPsEAAD7BAAA/QQAAP0EAAD/BAAA/wQAAAEFAAABBQAAAwUAAAMFAAAFBQAABQUAAAcFAAAHBQAACQUAAAkFAAALBQAACwUAAA0FAAANBQAADwUAAA8FAAARBQAAEQUAABMFAAATBQAAFQUAABUFAAAXBQAAFwUAABkFAAAZBQAAGwUAABsFAAAdBQAAHQUAAB8FAAAfBQAAIQUAACEFAAAjBQAAIwUAACUFAAAlBQAAJwUAACcFAAApBQAAKQUAACsFAAArBQAALQUAAC0FAAAvBQAALwUAAGEFAACHBQAA0BAAAPoQAAD9EAAA/xAAAPgTAAD9EwAAgBwAAIgcAACKHAAAihwAAHkdAAB5HQAAfR0AAH0dAACOHQAAjh0AAAEeAAABHgAAAx4AAAMeAAAFHgAABR4AAAceAAAHHgAACR4AAAkeAAALHgAACx4AAA0eAAANHgAADx4AAA8eAAARHgAAER4AABMeAAATHgAAFR4AABUeAAAXHgAAFx4AABkeAAAZHgAAGx4AABseAAAdHgAAHR4AAB8eAAAfHgAAIR4AACEeAAAjHgAAIx4AACUeAAAlHgAAJx4AACceAAApHgAAKR4AACseAAArHgAALR4AAC0eAAAvHgAALx4AADEeAAAxHgAAMx4AADMeAAA1HgAANR4AADceAAA3HgAAOR4AADkeAAA7HgAAOx4AAD0eAAA9HgAAPx4AAD8eAABBHgAAQR4AAEMeAABDHgAARR4AAEUeAABHHgAARx4AAEkeAABJHgAASx4AAEseAABNHgAATR4AAE8eAABPHgAAUR4AAFEeAABTHgAAUx4AAFUeAABVHgAAVx4AAFceAABZHgAAWR4AAFseAABbHgAAXR4AAF0eAABfHgAAXx4AAGEeAABhHgAAYx4AAGMeAABlHgAAZR4AAGceAABnHgAAaR4AAGkeAABrHgAAax4AAG0eAABtHgAAbx4AAG8eAABxHgAAcR4AAHMeAABzHgAAdR4AAHUeAAB3HgAAdx4AAHkeAAB5HgAAex4AAHseAAB9HgAAfR4AAH8eAAB/HgAAgR4AAIEeAACDHgAAgx4AAIUeAACFHgAAhx4AAIceAACJHgAAiR4AAIseAACLHgAAjR4AAI0eAACPHgAAjx4AAJEeAACRHgAAkx4AAJMeAACVHgAAmx4AAKEeAAChHgAAox4AAKMeAAClHgAApR4AAKceAACnHgAAqR4AAKkeAACrHgAAqx4AAK0eAACtHgAArx4AAK8eAACxHgAAsR4AALMeAACzHgAAtR4AALUeAAC3HgAAtx4AALkeAAC5HgAAux4AALseAAC9HgAAvR4AAL8eAAC/HgAAwR4AAMEeAADDHgAAwx4AAMUeAADFHgAAxx4AAMceAADJHgAAyR4AAMseAADLHgAAzR4AAM0eAADPHgAAzx4AANEeAADRHgAA0x4AANMeAADVHgAA1R4AANceAADXHgAA2R4AANkeAADbHgAA2x4AAN0eAADdHgAA3x4AAN8eAADhHgAA4R4AAOMeAADjHgAA5R4AAOUeAADnHgAA5x4AAOkeAADpHgAA6x4AAOseAADtHgAA7R4AAO8eAADvHgAA8R4AAPEeAADzHgAA8x4AAPUeAAD1HgAA9x4AAPceAAD5HgAA+R4AAPseAAD7HgAA/R4AAP0eAAD/HgAABx8AABAfAAAVHwAAIB8AACcfAAAwHwAANx8AAEAfAABFHwAAUB8AAFcfAABgHwAAZx8AAHAfAAB9HwAAgB8AALQfAAC2HwAAtx8AALwfAAC8HwAAvh8AAL4fAADCHwAAxB8AAMYfAADHHwAAzB8AAMwfAADQHwAA0x8AANYfAADXHwAA4B8AAOcfAADyHwAA9B8AAPYfAAD3HwAA/B8AAPwfAABOIQAATiEAAHAhAAB/IQAAhCEAAIQhAADQJAAA6SQAADAsAABfLAAAYSwAAGEsAABlLAAAZiwAAGgsAABoLAAAaiwAAGosAABsLAAAbCwAAHMsAABzLAAAdiwAAHYsAACBLAAAgSwAAIMsAACDLAAAhSwAAIUsAACHLAAAhywAAIksAACJLAAAiywAAIssAACNLAAAjSwAAI8sAACPLAAAkSwAAJEsAACTLAAAkywAAJUsAACVLAAAlywAAJcsAACZLAAAmSwAAJssAACbLAAAnSwAAJ0sAACfLAAAnywAAKEsAAChLAAAoywAAKMsAAClLAAApSwAAKcsAACnLAAAqSwAAKksAACrLAAAqywAAK0sAACtLAAArywAAK8sAACxLAAAsSwAALMsAACzLAAAtSwAALUsAAC3LAAAtywAALksAAC5LAAAuywAALssAAC9LAAAvSwAAL8sAAC/LAAAwSwAAMEsAADDLAAAwywAAMUsAADFLAAAxywAAMcsAADJLAAAySwAAMssAADLLAAAzSwAAM0sAADPLAAAzywAANEsAADRLAAA0ywAANMsAADVLAAA1SwAANcsAADXLAAA2SwAANksAADbLAAA2ywAAN0sAADdLAAA3ywAAN8sAADhLAAA4SwAAOMsAADjLAAA7CwAAOwsAADuLAAA7iwAAPMsAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAQaYAAEGmAABDpgAAQ6YAAEWmAABFpgAAR6YAAEemAABJpgAASaYAAEumAABLpgAATaYAAE2mAABPpgAAT6YAAFGmAABRpgAAU6YAAFOmAABVpgAAVaYAAFemAABXpgAAWaYAAFmmAABbpgAAW6YAAF2mAABdpgAAX6YAAF+mAABhpgAAYaYAAGOmAABjpgAAZaYAAGWmAABnpgAAZ6YAAGmmAABppgAAa6YAAGumAABtpgAAbaYAAIGmAACBpgAAg6YAAIOmAACFpgAAhaYAAIemAACHpgAAiaYAAImmAACLpgAAi6YAAI2mAACNpgAAj6YAAI+mAACRpgAAkaYAAJOmAACTpgAAlaYAAJWmAACXpgAAl6YAAJmmAACZpgAAm6YAAJumAAAjpwAAI6cAACWnAAAlpwAAJ6cAACenAAAppwAAKacAACunAAArpwAALacAAC2nAAAvpwAAL6cAADOnAAAzpwAANacAADWnAAA3pwAAN6cAADmnAAA5pwAAO6cAADunAAA9pwAAPacAAD+nAAA/pwAAQacAAEGnAABDpwAAQ6cAAEWnAABFpwAAR6cAAEenAABJpwAASacAAEunAABLpwAATacAAE2nAABPpwAAT6cAAFGnAABRpwAAU6cAAFOnAABVpwAAVacAAFenAABX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IQAAqiEAABojAAAbIwAAKCMAACgjAADPIwAAzyMAAOkjAADzIwAA+CMAAPojAADCJAAAwiQAAKolAACrJQAAtiUAALYlAADAJQAAwCUAAPslAAD+JQAAACYAAAQmAAAOJgAADiYAABEmAAARJgAAFCYAABUmAAAYJgAAGCYAAB0mAAAdJgAAICYAACAmAAAiJgAAIyYAACYmAAAmJgAAKiYAAComAAAuJgAALyYAADgmAAA6JgAAQCYAAEAmAABCJgAAQiYAAEgmAABTJgAAXyYAAGAmAABjJgAAYyYAAGUmAABmJgAAaCYAAGgmAAB7JgAAeyYAAH4mAAB/JgAAkiYAAJcmAACZJgAAmSYAAJsmAACcJgAAoCYAAKEmAACnJgAApyYAAKomAACrJgAAsCYAALEmAAC9JgAAviYAAMQmAADFJgAAyCYAAMgmAADOJgAAzyYAANEmAADRJgAA0yYAANQmAADpJgAA6iYAAPAmAAD1JgAA9yYAAPomAAD9JgAA/SYAAAInAAACJwAABScAAAUnAAAIJwAADScAAA8nAAAPJwAAEicAABInAAAUJwAAFCcAABYnAAAWJwAAHScAAB0nAAAhJwAAIScAACgnAAAoJwAAMycAADQnAABEJwAARCcAAEcnAABHJwAATCcAAEwnAABOJwAATicAAFMnAABVJwAAVycAAFcnAABjJwAAZCcAAJUnAACXJwAAoScAAKEnAACwJwAAsCcAAL8nAAC/JwAANCkAADUpAAAFKwAABysAABsrAAAcKwAAUCsAAFArAABVKwAAVSsAADAwAAAwMAAAPTAAAD0wAACXMgAAlzIAAJkyAACZMgAABPABAATwAQDP8AEAz/ABAHDxAQBx8QEAfvEBAH/xAQCO8QEAjvEBAJHxAQCa8QEA5vEBAP/xAQAB8gEAAvIBABryAQAa8gEAL/IBAC/yAQAy8gEAOvIBAFDyAQBR8gEAAPMBACHzAQAk8wEAk/MBAJbzAQCX8wEAmfMBAJvzAQCe8wEA8PMBAPPzAQD18wEA9/MBAP30AQD/9AEAPfUBAEn1AQBO9QEAUPUBAGf1AQBv9QEAcPUBAHP1AQB69QEAh/UBAIf1AQCK9QEAjfUBAJD1AQCQ9QEAlfUBAJb1AQCk9QEApfUBAKj1AQCo9QEAsfUBALL1AQC89QEAvPUBAML1AQDE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CQAAyAkAAMsJAADMCQAAzgkAAM4JAADcCQAA3QkAAN8JAADhCQAA5gkAAP0JAAADCgAAAwoAAAUKAAAKCgAADwoAABAKAAATCgAAKAoAACoKAAAwCgAAMgoAADMKAAA1CgAANgoAADgKAAA5CgAAPgoAAEAKAABZCgAAXAoAAF4KAABeCgAAZgoAAG8KAAByCgAAdAoAAHYKAAB2CgAAgwoAAIMKAACFCgAAjQoAAI8KAACRCgAAkwoAAKgKAACqCgAAsAoAALIKAACzCgAAtQoAALkKAAC9CgAAwAoAAMkKAADJCgAAywoAAMwKAADQCgAA0AoAAOAKAADhCgAA5goAAPEKAAD5CgAA+QoAAAILAAADCwAABQsAAAwLAAAPCwAAEAsAABMLAAAoCwAAKgsAADALAAAyCwAAMwsAADULAAA5CwAAPQsAAD0LAABACwAAQAsAAEcLAABICwAASwsAAEwLAABcCwAAXQsAAF8LAABhCwAAZgsAAHcLAACDCwAAgwsAAIULAACKCwAAjgsAAJALAACSCwAAlQsAAJkLAACaCwAAnAsAAJwLAACeCwAAnwsAAKMLAACkCwAAqAsAAKoLAACuCwAAuQsAAL8LAAC/CwAAwQsAAMILAADGCwAAyAsAAMoLAADMCwAA0AsAANALAADmCwAA+gsAAAEMAAADDAAABQwAAAwMAAAODAAAEAwAABIMAAAoDAAAKgwAADkMAAA9DAAAPQwAAEEMAABEDAAAWAwAAFoMAABdDAAAXQwAAGAMAABhDAAAZgwAAG8MAAB3DAAAgAwAAIIMAACMDAAAjgwAAJAMAACSDAAAqAwAAKoMAACzDAAAtQwAALkMAAC9DAAAvgwAAMEMAADBDAAAwwwAAMQMAADdDAAA3gwAAOAMAADhDAAA5gwAAO8MAADxDAAA8wwAAAINAAAMDQAADg0AABANAAASDQAAOg0AAD0NAAA9DQAAPw0AAEANAABGDQAASA0AAEoNAABMDQAATg0AAE8NAABUDQAAVg0AAFgNAABhDQAAZg0AAH8NAACCDQAAgw0AAIUNAACWDQAAmg0AALENAACzDQAAuw0AAL0NAAC9DQAAwA0AAMYNAADQDQAA0Q0AANgNAADeDQAA5g0AAO8NAADyDQAA9A0AAAEOAAAwDgAAMg4AADMOAAA/DgAARg4AAE8OAABb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FgEAQRYBAEQWAQBQFgEAWRYBAGAWAQBsFgEAgBYBAKoWAQCsFgEArBYBAK4WAQCvFgEAuBYBALkWAQDAFgEAyRYBANAWAQDjFgEAABcBABoXAQAeFwEAHhcBACAXAQAhFwEAJhcBACYXAQAwFwEARhcBAAAYAQAuGAEAOBgBADgYAQA7GAEAOxgBAKAYAQDyGAEA/xgBAAYZAQAJGQEACRkBAAwZAQATGQEAFRkBABYZAQAYGQEALxkBADEZAQA1GQEANxkBADgZAQA/GQEAQhkBAEQZAQBGGQEAUBkBAFkZAQCgGQEApxkBAKoZAQDTGQEA3BkBAN8ZAQDhGQEA5BkBAAAaAQAAGgEACxoBADIaAQA5GgEAOhoBAD8aAQBGGgEAUBoBAFAaAQBXGgEAWBoBAFwaAQCJGgEAlxoBAJcaAQCaGgEAohoBALAaAQD4GgEAABsBAAkbAQDAGwEA4RsBAPAbAQD5GwEAABwBAAgcAQAKHAEALxwBAD4cAQA+HAEAQBwBAEUcAQBQHAEAbBwBAHAcAQCPHAEAqRwBAKkcAQCxHAEAsRwBALQcAQC0HAEAAB0BAAYdAQAIHQEACR0BAAsdAQAwHQEARh0BAEYdAQBQHQEAWR0BAGAdAQBlHQEAZx0BAGgdAQBqHQEAjh0BAJMdAQCUHQEAlh0BAJYdAQCYHQEAmB0BAKAdAQCpHQEA4B4BAPIeAQD1HgEA+B4BAAIfAQAQHwEAEh8BADUfAQA+HwEAPx8BAEMfAQBZHwEAsB8BALAfAQDAHwEA8R8BAP8fAQCZIwEAACQBAG4kAQBwJAEAdCQBAIAkAQBDJQEAkC8BAPIvAQAAMAEALzQBAEE0AQBGNAEAYDQBAPpDAQAARAEARkYBAABhAQAdYQEAKmEBACxhAQAwYQEAOWEBAABoAQA4agEAQGoBAF5qAQBgagEAaWoBAG5qAQC+agEAwGoBAMlqAQDQagEA7WoBAPVqAQD1agEAAGsBAC9rAQA3awEARWsBAFBrAQBZawEAW2sBAGFrAQBjawEAd2sBAH1rAQCPawEAQG0BAHltAQBAbgEAmm4BAABvAQBKbwEAUG8BAIdvAQCTbwEAn28BAOBvAQDjbwEAAHABAPeHAQAAiAEA1YwBAP+MAQAIjQEA8K8BAPOvAQD1rwEA+68BAP2vAQD+rwEAALABACKxAQAy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BQAAwgUAAMQFAADFBQAAxwUAAMcFAADQBQAA6gUAAO8FAADyBQAAEAYAABoGAAAgBgAAaQYAAG4GAADTBgAA1QYAANwGAADfBgAA6AYAAOoGAAD8BgAA/wYAAP8GAAAQBwAASgcAAE0HAACxBwAAwAcAAPUHAAD6BwAA+gcAAP0HAAD9BwAAAAgAAC0IAABACAAAWwgAAGAIAABqCAAAcAgAAIcIAACJCAAAjggAAJcIAADhCAAA4wgAAGMJAABmCQAAbwkAAHEJAACDCQAAhQkAAIwJAACPCQAAkAkAAJMJAACoCQAAqgkAALAJAACyCQAAsgkAALYJAAC5CQAAvAkAAMQJAADHCQAAyAkAAMsJAADOCQAA1wkAANcJAADcCQAA3QkAAN8JAADjCQAA5gkAAPEJAAD8CQAA/AkAAP4JAAD+CQAAAQoAAAMKAAAFCgAACgoAAA8KAAAQCgAAEwoAACgKAAAqCgAAMAoAADIKAAAzCgAANQoAADYKAAA4CgAAOQoAADwKAAA8CgAAPgoAAEIKAABHCgAASAoAAEsKAABNCgAAUQoAAFEKAABZCgAAXAoAAF4KAABeCgAAZgoAAHUKAACBCgAAgwoAAIUKAACNCgAAjwoAAJEKAACTCgAAqAoAAKoKAACwCgAAsgoAALMKAAC1CgAAuQoAALwKAADFCgAAxwoAAMkKAADLCgAAzQoAANAKAADQCgAA4AoAAOMKAADmCgAA7woAAPkKAAD/CgAAAQsAAAMLAAAFCwAADAsAAA8LAAAQCwAAEwsAACgLAAAqCwAAMAsAADILAAAzCwAANQsAADkLAAA8CwAARAsAAEcLAABICwAASwsAAE0LAABVCwAAVwsAAFwLAABdCwAAXwsAAGMLAABmCwAAbwsAAHELAABxCwAAggsAAIMLAACFCwAAigsAAI4LAACQCwAAkgsAAJULAACZCwAAmgsAAJwLAACcCwAAngsAAJ8LAACjCwAApAsAAKgLAACqCwAArgsAALkLAAC+CwAAwgsAAMYLAADICwAAygsAAM0LAADQCwAA0AsAANcLAADXCwAA5gsAAO8LAAAADAAADAwAAA4MAAAQDAAAEgwAACgMAAAqDAAAOQwAADwMAABEDAAARgwAAEgMAABKDAAATQwAAFUMAABWDAAAWAwAAFoMAABdDAAAXQwAAGAMAABjDAAAZgwAAG8MAACADAAAgwwAAIUMAACMDAAAjgwAAJAMAACSDAAAqAwAAKoMAACzDAAAtQwAALkMAAC8DAAAxAwAAMYMAADIDAAAygwAAM0MAADVDAAA1gwAAN0MAADeDAAA4AwAAOMMAADmDAAA7wwAAPEMAADzDAAAAA0AAAwNAAAODQAAEA0AABINAABEDQAARg0AAEgNAABKDQAATg0AAFQNAABXDQAAXw0AAGMNAABmDQAAbw0AAHoNAAB/DQAAgQ0AAIMNAACFDQAAlg0AAJoNAACxDQAAsw0AALsNAAC9DQAAvQ0AAMANAADGDQAAyg0AAMoNAADPDQAA1A0AANYNAADWDQAA2A0AAN8NAADmDQAA7w0AAPINAADzDQAAAQ4AADoOAABADgAATg4AAFAOAABZDgAAgQ4AAIIOAACEDgAAhA4AAIYOAACKDgAAjA4AAKMOAAClDgAApQ4AAKcOAAC9DgAAwA4AAMQOAADGDgAAxg4AAMgOAADODgAA0A4AANkOAADcDgAA3w4AAAAPAAAADwAAGA8AABkPAAAgDwAAKQ8AADUPAAA1DwAANw8AADcPAAA5DwAAOQ8AAD4PAABHDwAASQ8AAGwPAABxDwAAhA8AAIYPAACXDwAAmQ8AALwPAADGDwAAxg8AAAAQAABJEAAAUBAAAJ0QAACgEAAAxRAAAMcQAADHEAAAzRAAAM0QAADQEAAA+hAAAPwQAABIEgAAShIAAE0SAABQEgAAVhIAAFgSAABYEgAAWhIAAF0SAABgEgAAiBIAAIoSAACNEgAAkBIAALASAACyEgAAtRIAALgSAAC+EgAAwBIAAMASAADCEgAAxRIAAMgSAADWEgAA2BIAABATAAASEwAAFRMAABgTAABaEwAAXRMAAF8TAABpEwAAcRMAAIATAACPEwAAoBMAAPUTAAD4EwAA/RMAAAEUAABsFgAAbxYAAH8WAACBFgAAmhYAAKAWAADqFgAA7hYAAPgWAAAAFwAAFRcAAB8XAAA0FwAAQBcAAFMXAABgFwAAbBcAAG4XAABwFwAAchcAAHMXAACAFwAA0xcAANcXAADXFwAA3BcAAN0XAADgFwAA6RcAAAsYAAANGAAADxgAABkYAAAgGAAAeBgAAIAYAACqGAAAsBgAAPUYAAAAGQAAHhkAACAZAAArGQAAMBkAADsZAABGGQAAbRkAAHAZAAB0GQAAgBkAAKsZAACwGQAAyRkAANAZAADaGQAAABoAABsaAAAgGgAAXhoAAGAaAAB8GgAAfxoAAIkaAACQGgAAmRoAAKcaAACnGgAAsBoAAL0aAAC/GgAAzhoAAAAbAABMGwAAUBsAAFkbAABrGwAAcxsAAIAbAADzGwAAABwAADccAABAHAAASRwAAE0cAAB9HAAAgBwAAIocAACQHAAAuhwAAL0cAAC/HAAA0BwAANIcAADUHAAA+hwAAAAdAAAVHwAAGB8AAB0fAAAgHwAARR8AAEgfAABNHwAAUB8AAFcfAABZHwAAWR8AAFsfAABbHwAAXR8AAF0fAABfHwAAfR8AAIAfAAC0HwAAth8AALwfAAC+HwAAvh8AAMIfAADEHwAAxh8AAMwfAADQHwAA0x8AANYfAADbHwAA4B8AAOwfAADyHwAA9B8AAPYfAAD8HwAADCAAAA0gAAA/IAAAQCAAAFQgAABUIAAAcSAAAHEgAAB/IAAAfyAAAJAgAACcIAAA0CAAANwgAADhIAAA4SAAAOUgAADwIAAAAiEAAAIhAAAHIQAAByEAAAohAAATIQAAFSEAABUhAAAYIQAAHSEAACQhAAAkIQAAJiEAACYhAAAoIQAAKCEAACohAAA5IQAAPCEAAD8hAABFIQAASSEAAE4hAABOIQAAYCEAAIghAAAALAAA5CwAAOssAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAMC0AAGctAABvLQAAby0AAH8tAACWLQAAoC0AAKYtAACoLQAAri0AALAtAAC2LQAAuC0AAL4tAADALQAAxi0AAMgtAADOLQAA0C0AANYtAADYLQAA3i0AAOAtAAD/LQAABTAAAAcwAAAhMAAALzAAADEwAAA1MAAAODAAADwwAABBMAAAljAAAJkwAACfMAAAoTAAAP8wAAAFMQAALzEAADExAACOMQAAoDEAAL8xAADwMQAA/zEAAAA0AAC/TQAAAE4AAIykAADQpAAA/aQAAAClAAAMpgAAEKYAACumAABApgAAb6YAAHSmAAB9pgAAf6YAAPGmAAAXpwAAH6cAACKnAACIpwAAi6cAAM2nAADQpwAA0acAANOnAADTpwAA1acAANynAADypwAAJ6gAACyoAAAsqAAAQKgAAHOoAACAqAAAxagAANCoAADZ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BQAA0AUAAOoFAADvBQAA8gUAACAGAABKBgAAbgYAAG8GAABxBgAA0wYAANUGAADVBgAA5QYAAOYGAADuBgAA7wYAAPoGAAD8BgAA/wYAAP8GAAAQBwAAEAcAABIHAAAvBwAATQcAAKUHAACxBwAAsQcAAMoHAADqBwAA9AcAAPUHAAD6BwAA+gcAAAAIAAAVCAAAGggAABoIAAAkCAAAJAgAACgIAAAoCAAAQAgAAFgIAABgCAAAaggAAHAIAACHCAAAiQgAAI4IAACgCAAAyQgAAAQJAAA5CQAAPQkAAD0JAABQCQAAUAkAAFgJAABhCQAAcQkAAIAJAACFCQAAjAkAAI8JAACQCQAAkwkAAKgJAACqCQAAsAkAALIJAACyCQAAtgkAALkJAAC9CQAAvQkAAM4JAADOCQAA3AkAAN0JAADfCQAA4QkAAPAJAADxCQAA/AkAAPwJAAAFCgAACgoAAA8KAAAQCgAAEwoAACgKAAAqCgAAMAoAADIKAAAzCgAANQoAADYKAAA4CgAAOQoAAFkKAABcCgAAXgoAAF4KAAByCgAAdAoAAIUKAACNCgAAjwoAAJEKAACTCgAAqAoAAKoKAACwCgAAsgoAALMKAAC1CgAAuQoAAL0KAAC9CgAA0AoAANAKAADgCgAA4QoAAPkKAAD5CgAABQsAAAwLAAAPCwAAEAsAABMLAAAoCwAAKgsAADALAAAyCwAAMwsAADULAAA5CwAAPQsAAD0LAABcCwAAXQsAAF8LAABhCwAAcQsAAHELAACDCwAAgwsAAIULAACKCwAAjgsAAJALAACSCwAAlQsAAJkLAACaCwAAnAsAAJwLAACeCwAAnwsAAKMLAACkCwAAqAsAAKoLAACuCwAAuQsAANALAADQCwAABQwAAAwMAAAODAAAEAwAABIMAAAoDAAAKgwAADkMAAA9DAAAPQwAAFgMAABaDAAAXQwAAF0MAABgDAAAYQwAAIAMAACADAAAhQwAAIwMAACODAAAkAwAAJIMAACoDAAAqgwAALMMAAC1DAAAuQwAAL0MAAC9DAAA3QwAAN4MAADgDAAA4QwAAPEMAADyDAAABA0AAAwNAAAODQAAEA0AABINAAA6DQAAPQ0AAD0NAABODQAATg0AAFQNAABWDQAAXw0AAGENAAB6DQAAfw0AAIUNAACWDQAAmg0AALENAACz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BQAAvQUAAL8FAAC/BQAAwQUAAMIFAADEBQAAxQUAAMcFAADHBQAAEAYAABoGAABLBgAAXwYAAHAGAABwBgAA1gYAANwGAADfBgAA5AYAAOcGAADoBgAA6gYAAO0GAAARBwAAEQcAADAHAABKBwAApgcAALAHAADrBwAA8wcAAP0HAAD9BwAAFggAABkIAAAbCAAAIwgAACUIAAAnCAAAKQgAAC0IAABZCAAAWwgAAJcIAACfCAAAyggAAOEIAADjCAAAAgkAABUJAAA6CQAAPAkAADwJAABBCQAASAkAAE0JAABNCQAAUQkAAF8JAABiCQAAYwkAAHgJAAB/CQAAgQkAAIEJAACVCQAAqAkAAKoJAACwCQAAsgkAALIJAAC2CQAAuQkAALwJAAC8CQAAvgkAAL4JAADBCQAAxAkAAM0JAADNCQAA1wkAANcJAADcCQAA3QkAAN8JAADfCQAA4gkAAOMJAADwCQAA8QkAAP4JAAD+CQAAAQoAAAIKAAA8CgAAPAoAAEEKAABCCgAARwoAAEgKAABLCgAATQoAAFEKAABRCgAAcAoAAHEKAAB1CgAAdQoAAIEKAACCCgAAlQoAAKgKAACqCgAAsAoAALIKAACzCgAAtQoAALkKAAC8CgAAvAoAAMEKAADFCgAAxwoAAMgKAADNCgAAzQoAAOIKAADjCgAA+QoAAP8KAAABCwAAAQsAABULAAAoCwAAKgsAADALAAAyCwAAMwsAADULAAA5CwAAPAsAADwLAAA+CwAAPwsAAEELAABECwAATQsAAE0LAABVCwAAVwsAAFwLAABdCwAAXwsAAF8LAABiCwAAYwsAAHELAABxCwAAggsAAIILAAC+CwAAvgsAAMALAADACwAAzQsAAM0LAADXCwAA1wsAAAAMAAAADAAABAwAAAQMAAAVDAAAKAwAACoMAAA5DAAAPAwAADwMAAA+DAAAQAwAAEYMAABIDAAASgwAAE0MAABVDAAAVgwAAFgMAABaDAAAYgwAAGMMAACBDAAAgQwAALwMAAC8DAAAvwwAAMAMAADCDAAAwgwAAMYMAADIDAAAygwAAM0MAADVDAAA1gwAAOIMAADjDAAAAA0AAAENAAAVDQAAPA0AAD4NAAA+DQAAQQ0AAEQNAABNDQAATQ0AAFcNAABXDQAAYg0AAGMNAACBDQAAgQ0AAMoNAADKDQAAzw0AAM8NAADSDQAA1A0AANYNAADWDQAA3w0AAN8NAAAxDgAAMQ4AADQOAAA6DgAARw4AAE4OAACxDgAAsQ4AALQOAAC8DgAAyA4AAM4OAAAYDwAAGQ8AADUPAAA1DwAANw8AADcPAAA5DwAAOQ8AAHEPAAB+DwAAgA8AAIQPAACGDwAAhw8AAI0PAACXDwAAmQ8AALwPAADGDwAAxg8AAC0QAAAwEAAAMhAAADcQAAA5EAAAOhAAAD0QAAA+EAAAWBAAAFkQAABeEAAAYBAAAHEQAAB0EAAAghAAAIIQAACFEAAAhhAAAI0QAACNEAAAnRAAAJ0QAABdEwAAXxMAABIXAAAVFwAAMhcAADQXAABSFwAAUxcAAHIXAABzFwAAtBcAALUXAAC3FwAAvRcAAMYXAADGFwAAyRcAANMXAADdFwAA3RcAAAsYAAANGAAADxgAAA8YAACFGAAAhhgAAKkYAACpGAAAIBkAACIZAAAnGQAAKBkAADIZAAAyGQAAORkAADsZAAAXGgAAGBoAABsaAAAbGgAAVhoAAFYaAABYGgAAXhoAAGAaAABgGgAAYhoAAGIaAABlGgAAbBoAAHMaAAB8GgAAfxoAAH8aAACwGgAAzhoAAAAbAAADGwAANBsAAD0bAABCGwAARBsAAGsbAABzGwAAgBsAAIEbAACiGwAApRsAAKgbAACtGwAA5hsAAOYbAADoGwAA6RsAAO0bAADtGwAA7xsAAPMbAAAsHAAAMxwAADYcAAA3HAAA0BwAANIcAADUHAAA4BwAAOIcAADoHAAA7RwAAO0cAAD0HAAA9BwAAPgcAAD5HAAAwB0AAP8dAAANIAAADSAAANAgAADwIAAA7ywAAPEsAAB/LQAAfy0AAOAtAAD/LQAAKjAAAC8wAACZMAAAmjAAAG+mAABypgAAdKYAAH2mAACepgAAn6YAAPCmAADxpgAAAqgAAAKoAAAGqAAABqgAAAuoAAALqAAAJagAACaoAAAsqAAALKgAAMSoAADFqAAA4KgAAPGoAAD/qAAA/6gAACapAAAtqQAAR6kAAFGpAABTqQAAU6kAAICpAACCqQAAs6kAALOpAAC2qQAAuakAALypAAC9qQAAwKkAAMCpAADlqQAA5akAACmqAAAuqgAAMaoAADKqAAA1qgAANqoAAEOqAABDqgAATKoAAEyqAAB8qgAAfKoAALCqAACwqgAAsqoAALSqAAC3qgAAuKoAAL6qAAC/qgAAwaoAAMGqAADsqgAA7aoAAPaqAAD2qgAA5asAAOWrAADoqwAA6KsAAO2rAADtqwAAHvsAAB77AAAA/gAAD/4AACD+AAAv/gAAnv8AAJ//AAD9AQEA/QEBAOACAQDgAgEAdgMBAHoDAQABCgEAAwoBAAUKAQAGCgEADAoBAA8KAQA4CgEAOgoBAD8KAQA/CgEA5QoBAOYKAQAkDQEAJw0BAGkNAQBtDQEAqw4BAKwOAQD8DgEA/w4BAEYPAQBQDwEAgg8BAIUPAQABEAEAARABADgQAQBGEAEAcBABAHAQAQBzEAEAdBABAH8QAQCBEAEAsxABALYQAQC5EAEAuhABAMIQAQDCEAEAABEBAAIRAQAnEQEAKxEBAC0RAQA0EQEAcxEBAHMRAQCAEQEAgREBALYRAQC+EQEAwBEBAMARAQDJEQEAzBEBAM8RAQDPEQEALxIBADESAQA0EgEANxIBAD4SAQA+EgEAQRIBAEESAQDfEgEA3xIBAOMSAQDqEgEAABMBAAETAQA7EwEAPBMBAD4TAQA+EwEAQBMBAEATAQBNEwEATRMBAFcTAQBXEwEAZhMBAGwTAQBwEwEAdBMBALgTAQC4EwEAuxMBAMATAQDCEwEAwhMBAMUTAQDFEwEAxxMBAMkTAQDOEwEA0BMBANITAQDSEwEA4RMBAOITAQA4FAEAPxQBAEIUAQBEFAEARhQBAEYUAQBeFAEAXhQBALAUAQCwFAEAsxQBALgUAQC6FAEAuhQBAL0UAQC9FAEAvxQBAMAUAQDCFAEAwxQBAK8VAQCvFQEAshUBALUVAQC8FQEAvRUBAL8VAQDAFQEA3BUBAN0VAQAzFgEAOhYBAD0WAQA9FgEAPxYBAEAWAQCrFgEAqxYBAK0WAQCtFgEAsBYBALcWAQAdFwEAHRcBAB8XAQAfFwEAIhcBACUXAQAnFwEAKxcBAC8YAQA3GAEAORgBADoYAQAwGQEAMBkBADsZAQA+GQEAQxkBAEMZAQDUGQEA1xkBANoZAQDbGQEA4BkBAOAZAQABGgEAChoBADMaAQA4GgEAOxoBAD4aAQBHGgEARxoBAFEaAQBWGgEAWRoBAFsaAQCKGgEAlhoBAJgaAQCZGgEAMBwBADYcAQA4HAEAPRwBAD8cAQA/HAEAkhwBAKccAQCqHAEAsBwBALIcAQCzHAEAtRwBALYcAQAxHQEANh0BADodAQA6HQEAPB0BAD0dAQA/HQEARR0BAEcdAQBHHQEAkB0BAJEdAQCVHQEAlR0BAJcdAQCXHQEA8x4BAPQeAQAAHwEAAR8BADYfAQA6HwEAQB8BAEIfAQBaHwEAWh8BAEA0AQBANAEARzQBAFU0AQAeYQEAKWEBAC1hAQAvYQEA8GoBAPRqAQAwawEANmsBAE9vAQBPbwEAj28BAJJvAQDkbwEA5G8BAPBvAQDxbwEAnbwBAJ68AQAAzwEALc8BADDPAQBGzwEAZdEBAGnRAQBt0QEActEBAHvRAQCC0QEAhdEBAIvRAQCq0QEArdEBAELSAQBE0gEAANoBADbaAQA72gEAbNoBAHXaAQB12gEAhNoBAITaAQCb2gEAn9oBAKHaAQCv2gEAAOABAAbgAQAI4AEAGOABABvgAQAh4AEAI+ABACTgAQAm4AEAKuABAI/gAQCP4AEAMOEBADbhAQCu4gEAruIBAOziAQDv4gEA7OQBAO/kAQDu5QEA7+UBANDoAQDW6AEAROkBAErpAQD78wEA//MBACAADgB/AA4AAAEOAO8BDgAMIAAADSAAAEAOAABEDgAAwA4AAMQOAAC1GQAAtxkAALoZAAC6GQAAtaoAALaqAAC5qgAAuaoAALuqAAC8qgAAYQAAAHoAAACqAAAAqgAAALUAAAC1AAAAugAAALoAAADfAAAA9gAAAPgAAAD/AAAAAQEAAAEBAAADAQAAAwEAAAUBAAAFAQAABwEAAAcBAAAJAQAACQEAAAsBAAALAQAADQEAAA0BAAAPAQAADwEAABEBAAARAQAAEwEAABMBAAAVAQAAFQEAABcBAAAXAQAAGQEAABkBAAAbAQAAGwEAAB0BAAAdAQAAHwEAAB8BAAAhAQAAIQEAACMBAAAjAQAAJQEAACUBAAAnAQAAJwEAACkBAAApAQAAKwEAACsBAAAtAQAALQEAAC8BAAAvAQAAMQEAADEBAAAzAQAAMwEAADUBAAA1AQAANwEAADgBAAA6AQAAOgEAADwBAAA8AQAAPgEAAD4BAABAAQAAQAEAAEIBAABCAQAARAEAAEQBAABGAQAARgEAAEgBAABJAQAASwEAAEsBAABNAQAATQEAAE8BAABPAQAAUQEAAFEBAABTAQAAUwEAAFUBAABVAQAAVwEAAFcBAABZAQAAWQEAAFsBAABbAQAAXQEAAF0BAABfAQAAXwEAAGEBAABhAQAAYwEAAGMBAABlAQAAZQEAAGcBAABnAQAAaQEAAGkBAABrAQAAawEAAG0BAABtAQAAbwEAAG8BAABxAQAAcQEAAHMBAABzAQAAdQEAAHUBAAB3AQAAdwEAAHoBAAB6AQAAfAEAAHwBAAB+AQAAgAEAAIMBAACDAQAAhQEAAIUBAACIAQAAiAEAAIwBAACNAQAAkgEAAJIBAACVAQAAlQEAAJkBAACbAQAAngEAAJ4BAAChAQAAoQEAAKMBAACjAQAApQEAAKUBAACoAQAAqAEAAKoBAACrAQAArQEAAK0BAACwAQAAsAEAALQBAAC0AQAAtgEAALYBAAC5AQAAugEAAL0BAAC/AQAAxgEAAMYBAADJAQAAyQEAAMwBAADMAQAAzgEAAM4BAADQAQAA0AEAANIBAADSAQAA1AEAANQBAADWAQAA1gEAANgBAADYAQAA2gEAANoBAADcAQAA3QEAAN8BAADfAQAA4QEAAOEBAADjAQAA4wEAAOUBAADlAQAA5wEAAOcBAADpAQAA6QEAAOsBAADrAQAA7QEAAO0BAADvAQAA8AEAAPMBAADzAQAA9QEAAPUBAAD5AQAA+QEAAPsBAAD7AQAA/QEAAP0BAAD/AQAA/wEAAAECAAABAgAAAwIAAAMCAAAFAgAABQIAAAcCAAAHAgAACQIAAAkCAAALAgAACwIAAA0CAAANAgAADwIAAA8CAAARAgAAEQIAABMCAAATAgAAFQIAABUCAAAXAgAAFwIAABkCAAAZAgAAGwIAABsCAAAdAgAAHQIAAB8CAAAfAgAAIQIAACECAAAjAgAAIwIAACUCAAAlAgAAJwIAACcCAAApAgAAKQIAACsCAAArAgAALQIAAC0CAAAvAgAALwIAADECAAAxAgAAMwIAADkCAAA8AgAAPAIAAD8CAABAAgAAQgIAAEICAABHAgAARwIAAEkCAABJAgAASwIAAEsCAABNAgAATQIAAE8CAACTAgAAlQIAALgCAADAAgAAwQIAAOACAADkAgAARQMAAEUDAABxAwAAcQMAAHMDAABzAwAAdwMAAHcDAAB6AwAAfQMAAJADAACQAwAArAMAAM4DAADQAwAA0QMAANUDAADXAwAA2QMAANkDAADbAwAA2wMAAN0DAADdAwAA3wMAAN8DAADhAwAA4QMAAOMDAADjAwAA5QMAAOUDAADnAwAA5wMAAOkDAADpAwAA6wMAAOsDAADtAwAA7QMAAO8DAADzAwAA9QMAAPUDAAD4AwAA+AMAAPsDAAD8AwAAMAQAAF8EAABhBAAAYQQAAGMEAABjBAAAZQQAAGUEAABnBAAAZwQAAGkEAABpBAAAawQAAGsEAABtBAAAbQQAAG8EAABvBAAAcQQAAHEEAABzBAAAcwQAAHUEAAB1BAAAdwQAAHcEAAB5BAAAeQQAAHsEAAB7BAAAfQQAAH0EAAB/BAAAfwQAAIEEAACBBAAAiwQAAIsEAACNBAAAjQQAAI8EAACPBAAAkQQAAJEEAACTBAAAkwQAAJUEAACVBAAAlwQAAJcEAACZBAAAmQQAAJsEAACbBAAAnQQAAJ0EAACfBAAAnwQAAKEEAAChBAAAowQAAKMEAAClBAAApQQAAKcEAACnBAAAqQQAAKkEAACrBAAAqwQAAK0EAACtBAAArwQAAK8EAACxBAAAsQQAALMEAACzBAAAtQQAALUEAAC3BAAAtwQAALkEAAC5BAAAuwQAALsEAAC9BAAAvQQAAL8EAAC/BAAAwgQAAMIEAADEBAAAxAQAAMYEAADGBAAAyAQAAMgEAADKBAAAygQAAMwEAADMBAAAzgQAAM8EAADRBAAA0QQAANMEAADTBAAA1QQAANUEAADXBAAA1wQAANkEAADZBAAA2wQAANsEAADdBAAA3QQAAN8EAADfBAAA4QQAAOEEAADjBAAA4wQAAOUEAADlBAAA5wQAAOcEAADpBAAA6QQAAOsEAADrBAAA7QQAAO0EAADvBAAA7wQAAPEEAADxBAAA8wQAAPMEAAD1BAAA9QQAAPcEAAD3BAAA+QQAAPkEAAD7BAAA+wQAAP0EAAD9BAAA/wQAAP8EAAABBQAAAQUAAAMFAAADBQAABQUAAAUFAAAHBQAABwUAAAkFAAAJBQAACwUAAAsFAAANBQAADQUAAA8FAAAPBQAAEQUAABEFAAATBQAAEwUAABUFAAAVBQAAFwUAABcFAAAZBQAAGQUAABsFAAAbBQAAHQUAAB0FAAAfBQAAHwUAACEFAAAhBQAAIwUAACMFAAAlBQAAJQUAACcFAAAnBQAAKQUAACkFAAArBQAAKwUAAC0FAAAtBQAALwUAAC8FAABgBQAAiAUAANAQAAD6EAAA/BAAAP8QAAD4EwAA/RMAAIAcAACIHAAAihwAAIocAAAAHQAAvx0AAAEeAAABHgAAAx4AAAMeAAAFHgAABR4AAAceAAAHHgAACR4AAAkeAAALHgAACx4AAA0eAAANHgAADx4AAA8eAAARHgAAER4AABMeAAATHgAAFR4AABUeAAAXHgAAFx4AABkeAAAZHgAAGx4AABseAAAdHgAAHR4AAB8eAAAfHgAAIR4AACEeAAAjHgAAIx4AACUeAAAlHgAAJx4AACceAAApHgAAKR4AACseAAArHgAALR4AAC0eAAAvHgAALx4AADEeAAAxHgAAMx4AADMeAAA1HgAANR4AADceAAA3HgAAOR4AADkeAAA7HgAAOx4AAD0eAAA9HgAAPx4AAD8eAABBHgAAQR4AAEMeAABDHgAARR4AAEUeAABHHgAARx4AAEkeAABJHgAASx4AAEseAABNHgAATR4AAE8eAABPHgAAUR4AAFEeAABTHgAAUx4AAFUeAABVHgAAVx4AAFceAABZHgAAWR4AAFseAABbHgAAXR4AAF0eAABfHgAAXx4AAGEeAABhHgAAYx4AAGMeAABlHgAAZR4AAGceAABnHgAAaR4AAGkeAABrHgAAax4AAG0eAABtHgAAbx4AAG8eAABxHgAAcR4AAHMeAABzHgAAdR4AAHUeAAB3HgAAdx4AAHkeAAB5HgAAex4AAHseAAB9HgAAfR4AAH8eAAB/HgAAgR4AAIEeAACDHgAAgx4AAIUeAACFHgAAhx4AAIceAACJHgAAiR4AAIseAACLHgAAjR4AAI0eAACPHgAAjx4AAJEeAACRHgAAkx4AAJMeAACVHgAAnR4AAJ8eAACfHgAAoR4AAKEeAACjHgAAox4AAKUeAAClHgAApx4AAKceAACpHgAAqR4AAKseAACrHgAArR4AAK0eAACvHgAArx4AALEeAACxHgAAsx4AALMeAAC1HgAAtR4AALceAAC3HgAAuR4AALkeAAC7HgAAux4AAL0eAAC9HgAAvx4AAL8eAADBHgAAwR4AAMMeAADDHgAAxR4AAMUeAADHHgAAxx4AAMkeAADJHgAAyx4AAMseAADNHgAAzR4AAM8eAADPHgAA0R4AANEeAADTHgAA0x4AANUeAADVHgAA1x4AANceAADZHgAA2R4AANseAADbHgAA3R4AAN0eAADfHgAA3x4AAOEeAADhHgAA4x4AAOMeAADlHgAA5R4AAOceAADnHgAA6R4AAOkeAADrHgAA6x4AAO0eAADtHgAA7x4AAO8eAADxHgAA8R4AAPMeAADzHgAA9R4AAPUeAAD3HgAA9x4AAPkeAAD5HgAA+x4AAPseAAD9HgAA/R4AAP8eAAAHHwAAEB8AABUfAAAgHwAAJx8AADAfAAA3HwAAQB8AAEUfAABQHwAAVx8AAGAfAABnHwAAcB8AAH0fAACAHwAAhx8AAJAfAACXHwAAoB8AAKcfAACwHwAAtB8AALYfAAC3HwAAvh8AAL4fAADCHwAAxB8AAMYfAADHHwAA0B8AANMfAADWHwAA1x8AAOAfAADnHwAA8h8AAPQfAAD2HwAA9x8AAHEgAABxIAAAfyAAAH8gAACQIAAAnCAAAAohAAAKIQAADiEAAA8hAAATIQAAEyEAAC8hAAAvIQAANCEAADQhAAA5IQAAOSEAADwhAAA9IQAARiEAAEkhAABOIQAATiEAAHAhAAB/IQAAhCEAAIQhAADQJAAA6SQAADAsAABfLAAAYSwAAGEsAABlLAAAZiwAAGgsAABoLAAAaiwAAGosAABsLAAAbCwAAHEsAABxLAAAcywAAHQsAAB2LAAAfSwAAIEsAACBLAAAgywAAIMsAACFLAAAhSwAAIcsAACHLAAAiSwAAIksAACLLAAAiywAAI0sAACNLAAAjywAAI8sAACRLAAAkSwAAJMsAACTLAAAlSwAAJUsAACXLAAAlywAAJksAACZLAAAmywAAJssAACdLAAAnSwAAJ8sAACfLAAAoSwAAKEsAACjLAAAoywAAKUsAAClLAAApywAAKcsAACpLAAAqSwAAKssAACrLAAArSwAAK0sAACvLAAArywAALEsAACxLAAAsywAALMsAAC1LAAAtSwAALcsAAC3LAAAuSwAALksAAC7LAAAuywAAL0sAAC9LAAAvywAAL8sAADBLAAAwSwAAMMsAADDLAAAxSwAAMUsAADHLAAAxywAAMksAADJLAAAyywAAMssAADNLAAAzSwAAM8sAADPLAAA0SwAANEsAADTLAAA0ywAANUsAADVLAAA1ywAANcsAADZLAAA2SwAANssAADbLAAA3SwAAN0sAADfLAAA3ywAAOEsAADhLAAA4ywAAOQsAADsLAAA7CwAAO4sAADuLAAA8ywAAPMsAAAALQAAJS0AACctAAAnLQAALS0AAC0tAABBpgAAQaYAAEOmAABDpgAARaYAAEWmAABHpgAAR6YAAEmmAABJpgAAS6YAAEumAABNpgAATaYAAE+mAABPpgAAUaYAAFGmAABTpgAAU6YAAFWmAABVpgAAV6YAAFemAABZpgAAWaYAAFumAABbpgAAXaYAAF2mAABfpgAAX6YAAGGmAABhpgAAY6YAAGOmAABlpgAAZaYAAGemAABnpgAAaaYAAGmmAABrpgAAa6YAAG2mAABtpgAAgaYAAIGmAACDpgAAg6YAAIWmAACFpgAAh6YAAIemAACJpgAAiaYAAIumAACLpgAAjaYAAI2mAACPpgAAj6YAAJGmAACRpgAAk6YAAJOmAACVpgAAlaYAAJemAACXpgAAmaYAAJmmAACbpgAAnaYAACOnAAAjpwAAJacAACWnAAAnpwAAJ6cAACmnAAAppwAAK6cAACunAAAtpwAALacAAC+nAAAxpwAAM6cAADOnAAA1pwAANacAADenAAA3pwAAOacAADmnAAA7pwAAO6cAAD2nAAA9pwAAP6cAAD+nAABBpwAAQacAAEOnAABDpwAARacAAEWnAABHpwAAR6cAAEmnAABJpwAAS6cAAEunAABNpwAATacAAE+nAABPpwAAUacAAFGnAABTpwAAU6cAAFWnAABVpwAAV6cAAFenAABZpwAAWacAAFunAABbpwAAXacAAF2nAABfpwAAX6cAAGGnAABhpwAAY6cAAGOnAABlpwAAZacAAGenAABnpwAAaacAAGmnAABrpwAAa6cAAG2nAABtpwAAb6cAAHinAAB6pwAAeqcAAHynAAB8pwAAf6cAAH+nAACBpwAAgacAAIOnAACDpwAAhacAAIWnAACHpwAAh6cAAIynAACMpwAAjqcAAI6nAACRpwAAkacAAJOnAACVpwAAl6cAAJenAACZpwAAmacAAJunAACbpwAAnacAAJ2nAACfpwAAn6cAAKGnAAChpwAAo6cAAKOnAAClpwAApacAAKenAACnpwAAqacAAKmnAACvpwAAr6cAALWnAAC1pwAAt6cAALenAAC5pwAAuacAALunAAC7pwAAvacAAL2nAAC/pwAAv6cAAMGnAADB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/wkA/v8KAP//CgD+/wsA//8LAP7/DAD//wwA/v8NAP//DQD+/w4A//8OAP7/DwD//w8A/v8QAP//EABFAwAARQMAAGMDAABvAwAAsAUAAL0FAAC/BQAAvwUAAMEFAADCBQAAxAUAAMUFAADHBQAAxwUAABAGAAAaBgAASwYAAFcGAABZBgAAXwYAAHAGAABwBgAA1gYAANwGAADhBgAA5AYAAOcGAADoBgAA7QYAAO0GAAARBwAAEQcAADAHAAA/BwAApgcAALAHAAAWCAAAFwgAABsIAAAjCAAAJQgAACcIAAApCAAALAgAAJcIAACXCAAA1AgAAN8IAADjCAAA6QgAAPAIAAADCQAAOgkAADsJAAA+CQAATAkAAE4JAABPCQAAVQkAAFcJAABiCQAAYwkAAIEJAACDCQAAvgkAAMQJAADHCQAAyAkAAMsJAADMCQAA1wkAANcJAADiCQAA4wkAAAEKAAADCgAAPgoAAEIKAABHCgAASAoAAEsKAABMCgAAUQoAAFEKAABwCgAAcQoAAHUKAAB1CgAAgQoAAIMKAAC+CgAAxQoAAMcKAADJCgAAywoAAMwKAADiCgAA4woAAPoKAAD8CgAAAQsAAAMLAAA+CwAARAsAAEcLAABICwAASwsAAEwLAABWCwAAVwsAAGILAABjCwAAggsAAIILAAC+CwAAwgsAAMYLAADICwAAygsAAMwLAADXCwAA1wsAAAAMAAAEDAAAPgwAAEQMAABGDAAASAwAAEoMAABMDAAAVQwAAFYMAABiDAAAYwwAAIEMAACDDAAAvgwAAMQMAADGDAAAyAwAAMoMAADMDAAA1QwAANYMAADiDAAA4wwAAPMMAADzDAAAAA0AAAMNAAA+DQAARA0AAEYNAABIDQAASg0AAEwNAABXDQAAVw0AAGINAABjDQAAgQ0AAIMNAADPDQAA1A0AANYNAADWDQAA2A0AAN8NAADyDQAA8w0AADEOAAAxDgAANA4AADoOAABNDgAATQ4AALEOAACxDgAAtA4AALkOAAC7DgAAvA4AAM0OAADNDgAAcQ8AAIMPAACNDwAAlw8AAJkPAAC8DwAAKxAAADYQAAA4EAAAOBAAADsQAAA+EAAAVhAAAFkQAABeEAAAYBAAAGIQAABkEAAAZxAAAG0QAABxEAAAdBAAAIIQAACNEAAAjxAAAI8QAACaEAAAnRAAABIXAAATFwAAMhcAADMXAABSFwAAUxcAAHIXAABzFwAAthcAAMgXAACFGAAAhhgAAKkYAACpGAAAIBkAACsZAAAwGQAAOBkAABcaAAAbGgAAVRoAAF4aAABhGgAAdBoAAL8aAADAGgAAzBoAAM4aAAAAGwAABBsAADUbAABDGwAAgBsAAIIbAAChGwAAqRsAAKwbAACtGwAA5xsAAPEbAAAkHAAANhwAANMdAAD0HQAAtiQAAOkkAADgLQAA/y0AAHSmAAB7pgAAnqYAAJ+mAAACqAAAAqgAAAuoAAALqAAAI6gAACeoAACAqAAAgagAALSoAADDqAAAxagAAMWoAAD/qAAA/6gAACapAAAqqQAAR6kAAFKpAACAqQAAg6kAALSpAAC/qQAA5akAAOWpAAApqgAANqoAAEOqAABDqgAATKoAAE2qAAB7qgAAfaoAALCqAACwqgAAsqoAALSqAAC3qgAAuKoAAL6qAAC+qgAA66oAAO+qAAD1qgAA9aoAAOOrAADqqwAAHvsAAB77AAB2AwEAegMBAAEKAQADCgEABQoBAAYKAQAMCgEADwoBACQNAQAnDQEAaQ0BAGkNAQCrDgEArA4BAPwOAQD8DgEAABABAAIQAQA4EAEARRABAHMQAQB0EAEAgBABAIIQAQCwEAEAuBABAMIQAQDCEAEAABEBAAIRAQAnEQEAMhEBAEURAQBGEQEAgBEBAIIRAQCzEQEAvxEBAM4RAQDPEQEALBIBADQSAQA3EgEANxIBAD4SAQA+EgEAQRIBAEESAQDfEgEA6BIBAAATAQADEwEAPhMBAEQTAQBHEwEASBMBAEsTAQBMEwEAVxMBAFcTAQBiEwEAYxMBALgTAQDAEwEAwhMBAMITAQDFEwEAxRMBAMcTAQDKEwEAzBMBAM0TAQA1FAEAQRQBAEMUAQBFFAEAsBQBAMEUAQCvFQEAtRUBALgVAQC+FQEA3BUBAN0VAQAwFgEAPhYBAEAWAQBAFgEAqxYBALUWAQAdFwEAKhcBACwYAQA4GAEAMBkBADUZAQA3GQEAOBkBADsZAQA8GQEAQBkBAEAZAQBCGQEAQhkBANEZAQDXGQEA2hkBAN8ZAQDkGQEA5BkBAAEaAQAKGgEANRoBADkaAQA7GgEAPhoBAFEaAQBbGgEAihoBAJcaAQAvHAEANhwBADgcAQA+HAEAkhwBAKccAQCpHAEAthwBADEdAQA2HQEAOh0BADodAQA8HQEAPR0BAD8dAQBBHQEAQx0BAEMdAQBHHQEARx0BAIodAQCOHQEAkB0BAJEdAQCTHQEAlh0BAPMeAQD2HgEAAB8BAAEfAQADHwEAAx8BADQfAQA6HwEAPh8BAEAfAQAeYQEALmEBAE9vAQBPbwEAUW8BAIdvAQCPbwEAkm8BAPBvAQDxbwEAnrwBAJ68AQAA4AEABuABAAjgAQAY4AEAG+ABACHgAQAj4AEAJOABACbgAQAq4AEAj+ABAI/gAQBH6QEAR+kBADDxAQBJ8QEAUPEBAGnxAQBw8QEAifEBAE8DAABPAwAAXxEAAGARAAC0FwAAtRcAAGUgAABlIAAAZDEAAGQxAACg/wAAoP8AAPD/AAD4/wAAAAAOAAAADgACAA4AHwAOAIAADgD/AA4A8AEOAP8PDgC+CQAAvgkAANcJAADXCQAAPgsAAD4LAABXCwAAVwsAAL4LAAC+CwAA1wsAANcLAADADAAAwAwAAMIMAADCDAAAxwwAAMgMAADKDAAAywwAANUMAADWDAAAPg0AAD4NAABXDQAAVw0AAM8NAADPDQAA3w0AAN8NAAAVFwAAFRcAADQXAAA0FwAANRsAADUbAAA7GwAAOxsAAD0bAAA9GwAAQxsAAEQbAACqGwAAqhsAAPIbAADzGwAADCAAAAwgAAAuMAAALzAAAFOpAABTqQAAwKkAAMCpAACe/wAAn/8AAMARAQDAEQEANRIBADUSAQA+EwEAPhMBAE0TAQBNEwEAVxMBAFcTAQC4EwEAuBMBAMITAQDCEwEAxRMBAMUTAQDHEwEAyRMBAM8TAQDPEwEAsBQBALAUAQC9FAEAvRQBAK8VAQCvFQEAthYBALYWAQAwGQEAMBkBAD0ZAQA9GQEAQR8BAEEfAQDwbwEA8W8BAGXRAQBm0QEAbdEBAHLRAQAgAA4AfwAOALcAAAC3AAAAhwMAAIcDAABpEwAAcRMAANoZAADaGQAADCAAAA0gAAD7MAAA+zAAAGX/AABl/wAAhRgAAIYYAAAYIQAAGCEAAC4hAAAuIQAAmzAAAJwwAACqAAAAqgAAALoAAAC6AAAAsAIAALgCAADAAgAAwQIAAOACAADkAgAARQMAAEUDAAB6AwAAegMAAPwQAAD8EAAALB0AAGodAAB4HQAAeB0AAJsdAAC/HQAAcSAAAHEgAAB/IAAAfyAAAJAgAACcIAAAcCEAAH8hAADQJAAA6SQAAHwsAAB9LAAAnKYAAJ2mAABwpwAAcKcAAPKnAAD0pwAA+KcAAPmnAABcqwAAX6sAAGmrAABpqwAAgAcBAIAHAQCDBwEAhQcBAIcHAQCwBwEAsgcBALoHAQAw4AEAbeABAF4AAABeAAAA0AMAANIDAADVAwAA1QMAAPADAADxAwAA9AMAAPUDAAAWIAAAFiAAADIgAAA0IAAAQCAAAEAgAABhIAAAZCAAAH0gAAB+IAAAjSAAAI4gAADQIAAA3CAAAOEgAADhIAAA5SAAAOYgAADrIAAA7yAAAAIhAAACIQAAByEAAAchAAAKIQAAEyEAABUhAAAVIQAAGSEAAB0hAAAkIQAAJCEAACghAAApIQAALCEAAC0hAAAvIQAAMSEAADMhAAA4IQAAPCEAAD8hAABFIQAASSEAAJUhAACZIQAAnCEAAJ8hAAChIQAAoiEAAKQhAAClIQAApyEAAKchAACpIQAArSEAALAhAACxIQAAtiEAALchAAC8IQAAzSEAANAhAADRIQAA0yEAANMhAADVIQAA2yEAAN0hAADdIQAA5CEAAOUhAAAIIwAACyMAALQjAAC1IwAAtyMAALcjAADQIwAA0CMAAOIjAADiIwAAoCUAAKElAACuJQAAtiUAALwlAADAJQAAxiUAAMclAADKJQAAyyUAAM8lAADTJQAA4iUAAOIlAADkJQAA5CUAAOclAADsJQAABSYAAAYmAABAJgAAQCYAAEImAABCJgAAYCYAAGMmAABtJgAAbiYAAMUnAADGJwAA5icAAO8nAACDKQAAmCkAANgpAADbKQAA/CkAAP0pAABh/gAAYf4AAGP+AABj/gAAaP4AAGj+AAA8/wAAPP8AAD7/AAA+/wAAANQBAFTUAQBW1AEAnNQBAJ7UAQCf1AEAotQBAKLUAQCl1AEAptQBAKnUAQCs1AEArtQBALnUAQC71AEAu9QBAL3UAQDD1AEAxdQBAAXVAQAH1QEACtUBAA3VAQAU1QEAFtUBABzVAQAe1QEAOdUBADvVAQA+1QEAQNUBAETVAQBG1QEARtUBAErVAQBQ1QEAUtUBAKXWAQCo1gEAwNYBAMLWAQDa1gEA3NYBAPrWAQD81gEAFNcBABbXAQA0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AQAA2QEAANkBAADbAQAA2wEAAN4BAADeAQAA4AEAAOABAADiAQAA4gEAAOQBAADkAQAA5gEAAOYBAADoAQAA6AEAAOoBAADqAQAA7AEAAOwBAADuAQAA7gEAAPEBAADxAQAA9AEAAPQBAAD2AQAA+AEAAPoBAAD6AQAA/AEAAPwBAAD+AQAA/gEAAAACAAAAAgAAAgIAAAICAAAEAgAABAIAAAYCAAAGAgAACAIAAAgCAAAKAgAACgIAAAwCAAAMAgAADgIAAA4CAAAQAgAAEAIAABICAAASAgAAFAIAABQCAAAWAgAAFgIAABgCAAAYAgAAGgIAABoCAAAcAgAAHAIAAB4CAAAeAgAAIAIAACACAAAiAgAAIgIAACQCAAAkAgAAJgIAACYCAAAoAgAAKAIAACoCAAAqAgAALAIAACwCAAAuAgAALgIAADACAAAwAgAAMgIAADICAAA6AgAAOwIAAD0CAAA+AgAAQQIAAEECAABDAgAARgIAAEgCAABIAgAASgIAAEoCAABMAgAATAIAAE4CAABOAgAAcAMAAHADAAByAwAAcgMAAHYDAAB2AwAAfwMAAH8DAACGAwAAhgMAAIgDAACKAwAAjAMAAIwDAACOAwAAjwMAAJEDAAChAwAAowMAAKsDAADPAwAAzwMAANIDAADUAwAA2AMAANgDAADaAwAA2gMAANwDAADcAwAA3gMAAN4DAADgAwAA4AMAAOIDAADiAwAA5AMAAOQDAADmAwAA5gMAAOgDAADoAwAA6gMAAOoDAADsAwAA7AMAAO4DAADuAwAA9AMAAPQDAAD3AwAA9wMAAPkDAAD6AwAA/QMAAC8EAABgBAAAYAQAAGIEAABiBAAAZAQAAGQEAABmBAAAZgQAAGgEAABoBAAAagQAAGoEAABsBAAAbAQAAG4EAABuBAAAcAQAAHAEAAByBAAAcgQAAHQEAAB0BAAAdgQAAHYEAAB4BAAAeAQAAHoEAAB6BAAAfAQAAHwEAAB+BAAAfgQAAIAEAACABAAAigQAAIoEAACMBAAAjAQAAI4EAACOBAAAkAQAAJAEAACSBAAAkgQAAJQEAACUBAAAlgQAAJYEAACYBAAAmAQAAJoEAACaBAAAnAQAAJwEAACeBAAAngQAAKAEAACgBAAAogQAAKIEAACkBAAApAQAAKYEAACmBAAAqAQAAKgEAACqBAAAqgQAAKwEAACsBAAArgQAAK4EAACwBAAAsAQAALIEAACyBAAAtAQAALQEAAC2BAAAtgQAALgEAAC4BAAAugQAALoEAAC8BAAAvAQAAL4EAAC+BAAAwAQAAMEEAADDBAAAwwQAAMUEAADFBAAAxwQAAMcEAADJBAAAyQQAAMsEAADLBAAAzQQAAM0EAADQBAAA0AQAANIEAADSBAAA1AQAANQEAADWBAAA1gQAANgEAADYBAAA2gQAANoEAADcBAAA3AQAAN4EAADeBAAA4AQAAOAEAADiBAAA4gQAAOQEAADkBAAA5gQAAOYEAADoBAAA6AQAAOoEAADqBAAA7AQAAOwEAADuBAAA7gQAAPAEAADwBAAA8gQAAPIEAAD0BAAA9AQAAPYEAAD2BAAA+AQAAPgEAAD6BAAA+gQAAPwEAAD8BAAA/gQAAP4EAAAABQAAAAUAAAIFAAACBQAABAUAAAQFAAAGBQAABgUAAAgFAAAIBQAACgUAAAoFAAAMBQAADAUAAA4FAAAOBQAAEAUAABAFAAASBQAAEgUAABQFAAAUBQAAFgUAABYFAAAYBQAAGAUAABoFAAAaBQAAHAUAABwFAAAeBQAAHgUAACAFAAAgBQAAIgUAACIFAAAkBQAAJAUAACYFAAAmBQAAKAUAACgFAAAqBQAAKgUAACwFAAAsBQAALgUAAC4FAAAxBQAAVgUAAKAQAADFEAAAxxAAAMcQAADNEAAAzRAAAKATAAD1EwAAiRwAAIkcAACQHAAAuhwAAL0cAAC/HAAAAB4AAAAeAAACHgAAAh4AAAQeAAAEHgAABh4AAAYeAAAIHgAACB4AAAoeAAAKHgAADB4AAAweAAAOHgAADh4AABAeAAAQHgAAEh4AABIeAAAUHgAAFB4AABYeAAAWHgAAGB4AABgeAAAaHgAAGh4AABweAAAcHgAAHh4AAB4eAAAgHgAAIB4AACIeAAAiHgAAJB4AACQeAAAmHgAAJh4AACgeAAAoHgAAKh4AACoeAAAsHgAALB4AAC4eAAAuHgAAMB4AADAeAAAyHgAAMh4AADQeAAA0HgAANh4AADYeAAA4HgAAOB4AADoeAAA6HgAAPB4AADweAAA+HgAAPh4AAEAeAABAHgAAQh4AAEIeAABEHgAARB4AAEYeAABGHgAASB4AAEgeAABKHgAASh4AAEweAABMHgAATh4AAE4eAABQHgAAUB4AAFIeAABSHgAAVB4AAFQeAABWHgAAVh4AAFgeAABYHgAAWh4AAFoeAABcHgAAXB4AAF4eAABeHgAAYB4AAGAeAABiHgAAYh4AAGQeAABkHgAAZh4AAGYeAABoHgAAaB4AAGoeAABqHgAAbB4AAGweAABuHgAAbh4AAHAeAABwHgAAch4AAHIeAAB0HgAAdB4AAHYeAAB2HgAAeB4AAHgeAAB6HgAAeh4AAHweAAB8HgAAfh4AAH4eAACAHgAAgB4AAIIeAACCHgAAhB4AAIQeAACGHgAAhh4AAIgeAACIHgAAih4AAIoeAACMHgAAjB4AAI4eAACOHgAAkB4AAJAeAACSHgAAkh4AAJQeAACUHgAAnh4AAJ4eAACgHgAAoB4AAKIeAACiHgAApB4AAKQeAACmHgAAph4AAKgeAACoHgAAqh4AAKoeAACsHgAArB4AAK4eAACuHgAAsB4AALAeAACyHgAAsh4AALQeAAC0HgAAth4AALYeAAC4HgAAuB4AALoeAAC6HgAAvB4AALweAAC+HgAAvh4AAMAeAADAHgAAwh4AAMIeAADEHgAAxB4AAMYeAADGHgAAyB4AAMgeAADKHgAAyh4AAMweAADMHgAAzh4AAM4eAADQHgAA0B4AANIeAADSHgAA1B4AANQeAADWHgAA1h4AANgeAADYHgAA2h4AANoeAADcHgAA3B4AAN4eAADeHgAA4B4AAOAeAADiHgAA4h4AAOQeAADkHgAA5h4AAOYeAADoHgAA6B4AAOoeAADqHgAA7B4AAOweAADuHgAA7h4AAPAeAADwHgAA8h4AAPIeAAD0HgAA9B4AAPYeAAD2HgAA+B4AAPgeAAD6HgAA+h4AAPweAAD8HgAA/h4AAP4eAAAIHwAADx8AABgfAAAdHwAAKB8AAC8fAAA4HwAAPx8AAEgfAABNHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAF8fAABoHwAAbx8AALgfAAC7HwAAyB8AAMsfAADYHwAA2x8AAOgfAADsHwAA+B8AAPsfAAACIQAAAiEAAAchAAAHIQAACyEAAA0hAAAQIQAAEiEAABUhAAAVIQAAGSEAAB0hAAAkIQAAJCEAACYhAAAmIQAAKCEAACghAAAqIQAALSEAADAhAAAzIQAAPiEAAD8hAABFIQAARSEAAGAhAABvIQAAgyEAAIMhAAC2JAAAzyQAAAAsAAAvLAAAYCwAAGAsAABiLAAAZCwAAGcsAABnLAAAaSwAAGksAABrLAAAaywAAG0sAABwLAAAciwAAHIsAAB1LAAAdSwAAH4sAACALAAAgiwAAIIsAACELAAAhCwAAIYsAACGLAAAiCwAAIgsAACKLAAAiiwAAIwsAACMLAAAjiwAAI4sAACQLAAAkCwAAJIsAACSLAAAlCwAAJQsAACWLAAAliwAAJgsAACYLAAAmiwAAJosAACcLAAAnCwAAJ4sAACeLAAAoCwAAKAsAACiLAAAoiwAAKQsAACkLAAApiwAAKYsAACoLAAAqCwAAKosAACqLAAArCwAAKwsAACuLAAAriwAALAsAACwLAAAsiwAALIsAAC0LAAAtCwAALYsAAC2LAAAuCwAALgsAAC6LAAAuiwAALwsAAC8LAAAviwAAL4sAADALAAAwCwAAMIsAADCLAAAxCwAAMQsAADGLAAAxiwAAMgsAADILAAAyiwAAMosAADMLAAAzCwAAM4sAADOLAAA0CwAANAsAADSLAAA0iwAANQsAADULAAA1iwAANYsAADYLAAA2CwAANosAADaLAAA3CwAANwsAADeLAAA3iwAAOAsAADgLAAA4iwAAOIsAADrLAAA6ywAAO0sAADtLAAA8iwAAPIsAABApgAAQKYAAEKmAABCpgAARKYAAESmAABGpgAARqYAAEimAABIpgAASqYAAEqmAABMpgAATKYAAE6mAABOpgAAUKYAAFCmAABSpgAAUqYAAFSmAABUpgAAVqYAAFamAABYpgAAWKYAAFqmAABapgAAXKYAAFymAABepgAAXqYAAGCmAABgpgAAYqYAAGKmAABkpgAAZKYAAGamAABmpgAAaKYAAGimAABqpgAAaqYAAGymAABspgAAgKYAAICmAACCpgAAgqYAAISmAACEpgAAhqYAAIamAACIpgAAiKYAAIqmAACKpgAAjKYAAIymAACOpgAAjqYAAJCmAACQpgAAkqYAAJKmAACUpgAAlKYAAJamAACWpgAAmKYAAJimAACapgAAmqYAACKnAAAipwAAJKcAACSnAAAmpwAAJqcAACinAAAopwAAKqcAACqnAAAspwAALKcAAC6nAAAupwAAMqcAADKnAAA0pwAANKcAADanAAA2pwAAOKcAADinAAA6pwAAOqcAADynAAA8pwAAPqcAAD6nAABApwAAQKcAAEKnAABCpwAARKcAAESnAABGpwAARqcAAEinAABIpwAASqcAAEqnAABMpwAATKcAAE6nAABOpwAAUKcAAFCnAABSpwAAUqcAAFSnAABUpwAAVqcAAFanAABYpwAAWKcAAFqnAABapwAAXKcAAFynAABepwAAXqcAAGCnAABgpwAAYqcAAGKnAABkpwAAZKcAAGanAABmpwAAaKcAAGinAABqpwAAaqcAAGynAABspwAAbqcAAG6nAAB5pwAAeacAAHunAAB7pwAAfacAAH6nAACApwAAgKcAAIKnAACCpwAAhKcAAISnAACGpwAAhqcAAIunAACLpwAAjacAAI2nAACQpwAAkKcAAJKnAACSpwAAlqcAAJanAACYpwAAmKcAAJqnAACapwAAnKcAAJynAACepwAAnqcAAKCnAACgpwAAoqcAAKKnAACkpwAApKcAAKanAACmpwAAqKcAAKinAACqpwAArqcAALCnAAC0pwAAtqcAALanAAC4pwAAuKcAALqnAAC6pwAAvKcAALynAAC+pwAAvqcAAMCnAADApwAAwqcAAMKnAADEpwAAx6cAAMmnAADJpwAAy6cAAMynAADQpwAA0KcAANanAADWpwAA2KcAANinAADapwAA2qcAANynAADcpwAA9acAAPWnAAAh/wAAOv8AAAAEAQAnBAEAsAQBANMEAQBwBQEAegUBAHwFAQCKBQEAjAUBAJIFAQCUBQEAlQUBAIAMAQCyDAEAUA0BAGUNAQCgGAEAvxgBAEBuAQBfbgEAANQBABnUAQA01AEATdQBAGjUAQCB1AEAnNQBAJzUAQCe1AEAn9QBAKLUAQCi1AEApdQBAKbUAQCp1AEArNQBAK7UAQC11AEA0NQBAOnUAQAE1QEABdUBAAfVAQAK1QEADdUBABTVAQAW1QEAHNUBADjVAQA51QEAO9UBAD7VAQBA1QEARNUBAEbVAQBG1QEAStUBAFDVAQBs1QEAhdUBAKDVAQC51QEA1NUBAO3VAQAI1gEAIdYBADzWAQBV1gEAcNYBAInWAQCo1gEAwNYBAOLWAQD61gEAHNcBADTXAQBW1wEAbtcBAJDXAQCo1wEAytcBAMrXAQAA6QEAIekBADDxAQBJ8QEAUPEBAGnxAQBw8QEAifEBAAsYAAANGAAADxgAAA8YAAAA/gAAD/4AAAABDgDvAQ4AMAAAADkAAABBAAAAWgAAAF8AAABfAAAAYQAAAHoAAACqAAAAqgAAALUAAAC1AAAAtwAAALcAAAC6AAAAugAAAMAAAADWAAAA2AAAAPYAAAD4AAAAwQIAAMYCAADRAgAA4AIAAOQCAADsAgAA7AIAAO4CAADuAgAAAAMAAHQDAAB2AwAAdwMAAHsDAAB9AwAAfwMAAH8DAACGAwAAigMAAIwDAACMAwAAjgMAAKEDAACjAwAA9QMAAPcDAACBBAAAgwQAAIcEAACKBAAALwUAADEFAABWBQAAWQUAAFkFAABgBQAAiAUAAJEFAAC9BQAAvwUAAL8FAADBBQAAwgUAAMQFAADFBQAAxwUAAMcFAADQBQAA6gUAAO8FAADyBQAAEAYAABoGAAAgBgAAaQYAAG4GAADTBgAA1QYAANwGAADfBgAA6AYAAOoGAAD8BgAA/wYAAP8GAAAQBwAASgcAAE0HAACxBwAAwAcAAPUHAAD6BwAA+gcAAP0HAAD9BwAAAAgAAC0IAABACAAAWwgAAGAIAABqCAAAcAgAAIcIAACJCAAAjggAAJcIAADhCAAA4wgAAGMJAABmCQAAbwkAAHEJAACDCQAAhQkAAIwJAACPCQAAkAkAAJMJAACoCQAAqgkAALAJAACyCQAAsgkAALYJAAC5CQAAvAkAAMQJAADHCQAAyAkAAMsJAADOCQAA1wkAANcJAADcCQAA3QkAAN8JAADjCQAA5gkAAPEJAAD8CQAA/AkAAP4JAAD+CQAAAQoAAAMKAAAFCgAACgoAAA8KAAAQCgAAEwoAACgKAAAqCgAAMAoAADIKAAAzCgAANQoAADYKAAA4CgAAOQoAADwKAAA8CgAAPgoAAEIKAABHCgAASAoAAEsKAABNCgAAUQoAAFEKAABZCgAAXAoAAF4KAABeCgAAZgoAAHUKAACBCgAAgwoAAIUKAACNCgAAjwoAAJEKAACTCgAAqAoAAKoKAACwCgAAsgoAALMKAAC1CgAAuQoAALwKAADFCgAAxwoAAMkKAADLCgAAzQoAANAKAADQCgAA4AoAAOMKAADmCgAA7woAAPkKAAD/CgAAAQsAAAMLAAAFCwAADAsAAA8LAAAQCwAAEwsAACgLAAAqCwAAMAsAADILAAAzCwAANQsAADkLAAA8CwAARAsAAEcLAABICwAASwsAAE0LAABVCwAAVwsAAFwLAABdCwAAXwsAAGMLAABmCwAAbwsAAHELAABxCwAAggsAAIMLAACFCwAAigsAAI4LAACQCwAAkgsAAJULAACZCwAAmgsAAJwLAACcCwAAngsAAJ8LAACjCwAApAsAAKgLAACqCwAArgsAALkLAAC+CwAAwgsAAMYLAADICwAAygsAAM0LAADQCwAA0AsAANcLAADXCwAA5gsAAO8LAAAADAAADAwAAA4MAAAQDAAAEgwAACgMAAAqDAAAOQwAADwMAABEDAAARgwAAEgMAABKDAAATQwAAFUMAABWDAAAWAwAAFoMAABdDAAAXQwAAGAMAABjDAAAZgwAAG8MAACADAAAgwwAAIUMAACMDAAAjgwAAJAMAACSDAAAqAwAAKoMAACzDAAAtQwAALkMAAC8DAAAxAwAAMYMAADIDAAAygwAAM0MAADVDAAA1gwAAN0MAADeDAAA4AwAAOMMAADmDAAA7wwAAPEMAADzDAAAAA0AAAwNAAAODQAAEA0AABINAABEDQAARg0AAEgNAABKDQAATg0AAFQNAABXDQAAXw0AAGMNAABmDQAAbw0AAHoNAAB/DQAAgQ0AAIMNAACFDQAAlg0AAJoNAACxDQAAsw0AALsNAAC9DQAAvQ0AAMANAADGDQAAyg0AAMoNAADPDQAA1A0AANYNAADWDQAA2A0AAN8NAADmDQAA7w0AAPINAADzDQAAAQ4AADoOAABADgAATg4AAFAOAABZDgAAgQ4AAIIOAACEDgAAhA4AAIYOAACKDgAAjA4AAKMOAAClDgAApQ4AAKcOAAC9DgAAwA4AAMQOAADGDgAAxg4AAMgOAADODgAA0A4AANkOAADcDgAA3w4AAAAPAAAADwAAGA8AABkPAAAgDwAAKQ8AADUPAAA1DwAANw8AADcPAAA5DwAAOQ8AAD4PAABHDwAASQ8AAGwPAABxDwAAhA8AAIYPAACXDwAAmQ8AALwPAADGDwAAxg8AAAAQAABJEAAAUBAAAJ0QAACgEAAAxRAAAMcQAADHEAAAzRAAAM0QAADQEAAA+hAAAPwQAABIEgAAShIAAE0SAABQEgAAVhIAAFgSAABYEgAAWhIAAF0SAABgEgAAiBIAAIoSAACNEgAAkBIAALASAACyEgAAtRIAALgSAAC+EgAAwBIAAMASAADCEgAAxRIAAMgSAADWEgAA2BIAABATAAASEwAAFRMAABgTAABaEwAAXRMAAF8TAABpEwAAcRMAAIATAACPEwAAoBMAAPUTAAD4EwAA/RMAAAEUAABsFgAAbxYAAH8WAACBFgAAmhYAAKAWAADqFgAA7hYAAPgWAAAAFwAAFRcAAB8XAAA0FwAAQBcAAFMXAABgFwAAbBcAAG4XAABwFwAAchcAAHMXAACAFwAA0xcAANcXAADXFwAA3BcAAN0XAADgFwAA6RcAAAsYAAANGAAADxgAABkYAAAgGAAAeBgAAIAYAACqGAAAsBgAAPUYAAAAGQAAHhkAACAZAAArGQAAMBkAADsZAABGGQAAbRkAAHAZAAB0GQAAgBkAAKsZAACwGQAAyRkAANAZAADaGQAAABoAABsaAAAgGgAAXhoAAGAaAAB8GgAAfxoAAIkaAACQGgAAmRoAAKcaAACnGgAAsBoAAL0aAAC/GgAAzhoAAAAbAABMGwAAUBsAAFkbAABrGwAAcxsAAIAbAADzGwAAABwAADccAABAHAAASRwAAE0cAAB9HAAAgBwAAIocAACQHAAAuhwAAL0cAAC/HAAA0BwAANIcAADUHAAA+hwAAAAdAAAVHwAAGB8AAB0fAAAgHwAARR8AAEgfAABNHwAAUB8AAFcfAABZHwAAWR8AAFsfAABbHwAAXR8AAF0fAABfHwAAfR8AAIAfAAC0HwAAth8AALwfAAC+HwAAvh8AAMIfAADEHwAAxh8AAMwfAADQHwAA0x8AANYfAADbHwAA4B8AAOwfAADyHwAA9B8AAPYfAAD8HwAADCAAAA0gAAA/IAAAQCAAAFQgAABUIAAAcSAAAHEgAAB/IAAAfyAAAJAgAACcIAAA0CAAANwgAADhIAAA4SAAAOUgAADwIAAAAiEAAAIhAAAHIQAAByEAAAohAAATIQAAFSEAABUhAAAYIQAAHSEAACQhAAAkIQAAJiEAACYhAAAoIQAAKCEAACohAAA5IQAAPCEAAD8hAABFIQAASSEAAE4hAABOIQAAYCEAAIghAAAALAAA5CwAAOssAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAMC0AAGctAABvLQAAby0AAH8tAACWLQAAoC0AAKYtAACoLQAAri0AALAtAAC2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GAAAABkAAB4ZAABQGQAAbRkAAHAZAAB0GQAAgBkAAKsZAACwGQAAyRkAAAAaAAAWGgAAIBoAAFQaAACnGgAApxoAAAUbAAAzGwAARRsAAEwbAACDGwAAoBsAAK4bAACvGwAAuhsAAOUbAAAAHAAAIxwAAE0cAABPHAAAWhwAAH0cAACAHAAAihwAAJAcAAC6HAAAvRwAAL8cAADpHAAA7BwAAO4cAADzHAAA9RwAAPYcAAD6HAAA+hwAAAAdAAC/HQAAAB4AABUfAAAYHwAAHR8AACAfAABFHwAASB8AAE0fAABQHwAAVx8AAFkfAABZHwAAWx8AAFsfAABdHwAAXR8AAF8fAAB9HwAAgB8AALQfAAC2HwAAvB8AAL4fAAC+HwAAwh8AAMQfAADGHwAAzB8AANAfAADTHwAA1h8AANsfAADgHwAA7B8AAPIfAAD0HwAA9h8AAPwfAABxIAAAcSAAAH8gAAB/IAAAkCAAAJwgAAACIQAAAiEAAAchAAAHIQAACiEAABMhAAAVIQAAFSEAABghAAAdIQAAJCEAACQhAAAmIQAAJiEAACghAAAoIQAAKiEAADkhAAA8IQAAPyEAAEUhAABJIQAATiEAAE4hAABgIQAAiCEAAAAsAADkLAAA6ywAAO4sAADyLAAA8ywAAAAtAAAlLQAAJy0AACctAAAtLQAALS0AADAtAABnLQAAby0AAG8tAACALQAAli0AAKAtAACmLQAAqC0AAK4tAACwLQAAti0AALgtAAC+LQAAwC0AAMYtAADILQAAzi0AANAtAADWLQAA2C0AAN4tAAAFMAAABzAAACEwAAApMAAAMTAAADUwAAA4MAAAPDAAAEEwAACWMAAAnTAAAJ8wAAChMAAA+jAAAPwwAAD/MAAABTEAAC8xAAAxMQAAjjEAAKAxAAC/MQAA8DEAAP8xAAAANAAAv00AAABOAACMpAAA0KQAAP2kAAAApQAADKYAABCmAAAfpgAAKqYAACumAABApgAAbqYAAH+mAACdpgAAoKYAAO+mAAAXpwAAH6cAACKnAACIpwAAi6cAAM2nAADQpwAA0acAANOnAADTpwAA1acAANynAADypwAAAagAAAOoAAAFqAAAB6gAAAqoAAAMqAAAIqgAAECoAABzqAAAgqgAALOoAADyqAAA96gAAPuoAAD7qAAA/agAAP6oAAAK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EwEAOBQBAD8UAQBCFAEARBQBAEYUAQBGFAEAXhQBAF4UAQCwFAEAsBQBALMUAQC4FAEAuhQBALoUAQC9FAEAvRQBAL8UAQDAFAEAwhQBAMMUAQCvFQEArxUBALIVAQC1FQEAvBUBAL0VAQC/FQEAwBUBANwVAQDdFQEAMxYBADoWAQA9FgEAPRYBAD8WAQBAFgEAqxYBAKsWAQCtFgEArRYBALAWAQC3FgEAHRcBAB0XAQAfFwEAHxcBACIXAQAlFwEAJxcBACsXAQAvGAEANxgBADkYAQA6GAEAMBkBADAZAQA7GQEAPhkBAEMZAQBDGQEA1BkBANcZAQDaGQEA2xkBAOAZAQDgGQEAARoBAAoaAQAzGgEAOBoBADsaAQA+GgEARxoBAEcaAQBRGgEAVhoBAFkaAQBbGgEAihoBAJYaAQCYGgEAmRoBADAcAQA2HAEAOBwBAD0cAQA/HAEAPxwBAJIcAQCnHAEAqhwBALAcAQCyHAEAsxwBALUcAQC2HAEAMR0BADYdAQA6HQEAOh0BADwdAQA9HQEAPx0BAEUdAQBHHQEARx0BAJAdAQCRHQEAlR0BAJUdAQCXHQEAlx0BAPMeAQD0HgEAAB8BAAEfAQA2HwEAOh8BAEAfAQBCHwEAWh8BAFofAQBANAEAQDQBAEc0AQBVNAEAHmEBAClhAQAtYQEAL2EBAPBqAQD0agEAMGsBADZrAQBPbwEAT28BAI9vAQCSbwEA5G8BAORvAQDwbwEA8W8BAJ28AQCevAEAAM8BAC3PAQAwzwEARs8BAGXRAQBp0QEAbdEBAHLRAQB70QEAgtEBAIXRAQCL0QEAqtEBAK3RAQBC0gEARNIBAADaAQA22gEAO9oBAGzaAQB12gEAddoBAITaAQCE2gEAm9oBAJ/aAQCh2gEAr9oBAADgAQAG4AEACOABABjgAQAb4AEAIeABACPgAQAk4AEAJuABACrgAQCP4AEAj+ABADDhAQA24QEAruIBAK7iAQDs4gEA7+IBAOzkAQDv5AEA7uUBAO/lAQDQ6AEA1ugBAETpAQBK6QEA+/MBAP/zAQAgAA4AfwAOAAABDgDvAQ4AABEAAF8RAABgqQAAfKkAAAoAAAAKAAAAAKwAAACsAAAcrAAAHKwAADisAAA4rAAAVKwAAFSsAABwrAAAcKwAAIysAACMrAAAqKwAAKisAADErAAAxKwAAOCsAADgrAAA/KwAAPysAAAYrQAAGK0AADStAAA0rQAAUK0AAFCtAABsrQAAbK0AAIitAACIrQAApK0AAKStAADArQAAwK0AANytAADcrQAA+K0AAPitAAAUrgAAFK4AADCuAAAwrgAATK4AAEyuAABorgAAaK4AAISuAACErgAAoK4AAKCuAAC8rgAAvK4AANiuAADYrgAA9K4AAPSuAAAQrwAAEK8AACyvAAAsrwAASK8AAEivAABkrwAAZK8AAICvAACArwAAnK8AAJyvAAC4rwAAuK8AANSvAADUrwAA8K8AAPCvAAAMsAAADLAAACiwAAAosAAARLAAAESwAABgsAAAYLAAAHywAAB8sAAAmLAAAJiwAAC0sAAAtLAAANCwAADQsAAA7LAAAOywAAAIsQAACLEAACSxAAAksQAAQLEAAECxAABcsQAAXLEAAHixAAB4sQAAlLEAAJSxAACwsQAAsLEAAMyxAADMsQAA6LEAAOixAAAEsgAABLIAACCyAAAgsgAAPLIAADyyAABYsgAAWLIAAHSyAAB0sgAAkLIAAJCyAACssgAArLIAAMiyAADIsgAA5LIAAOSyAAAAswAAALMAAByzAAAcswAAOLMAADizAABUswAAVLMAAHCzAABwswAAjLMAAIyzAACoswAAqLMAAMSzAADEswAA4LMAAOCzAAD8swAA/LMAABi0AAAYtAAANLQAADS0AABQtAAAULQAAGy0AABstAAAiLQAAIi0AACktAAApLQAAMC0AADAtAAA3LQAANy0AAD4tAAA+LQAABS1AAAUtQAAMLUAADC1AABMtQAATLUAAGi1AABotQAAhLUAAIS1AACgtQAAoLUAALy1AAC8tQAA2LUAANi1AAD0tQAA9LUAABC2AAAQtgAALLYAACy2AABItgAASLYAAGS2AABktgAAgLYAAIC2AACctgAAnLYAALi2AAC4tgAA1LYAANS2AADwtgAA8LYAAAy3AAAMtwAAKLcAACi3AABEtwAARLcAAGC3AABgtwAAfLcAAHy3AACYtwAAmLcAALS3AAC0twAA0LcAANC3AADstwAA7LcAAAi4AAAIuAAAJLgAACS4AABAuAAAQLgAAFy4AABcuAAAeLgAAHi4AACUuAAAlLgAALC4AACwuAAAzLgAAMy4AADouAAA6LgAAAS5AAAEuQAAILkAACC5AAA8uQAAPLkAAFi5AABYuQAAdLkAAHS5AACQuQAAkLkAAKy5AACsuQAAyLkAAMi5AADkuQAA5LkAAAC6AAAAugAAHLoAABy6AAA4ugAAOLoAAFS6AABUugAAcLoAAHC6AACMugAAjLoAAKi6AACougAAxLoAAMS6AADgugAA4LoAAPy6AAD8ugAAGLsAABi7AAA0uwAANLsAAFC7AABQuwAAbLsAAGy7AACIuwAAiLsAAKS7AACkuwAAwLsAAMC7AADcuwAA3LsAAPi7AAD4uwAAFLwAABS8AAAwvAAAMLwAAEy8AABMvAAAaLwAAGi8AACEvAAAhLwAAKC8AACgvAAAvLwAALy8AADYvAAA2LwAAPS8AAD0vAAAEL0AABC9AAAsvQAALL0AAEi9AABIvQAAZL0AAGS9AACAvQAAgL0AAJy9AACcvQAAuL0AALi9AADUvQAA1L0AAPC9AADwvQAADL4AAAy+AAAovgAAKL4AAES+AABEvgAAYL4AAGC+AAB8vgAAfL4AAJi+AACYvgAAtL4AALS+AADQvgAA0L4AAOy+AADsvgAACL8AAAi/AAAkvwAAJL8AAEC/AABAvwAAXL8AAFy/AAB4vwAAeL8AAJS/AACUvwAAsL8AALC/AADMvwAAzL8AAOi/AADovwAABMAAAATAAAAgwAAAIMAAADzAAAA8wAAAWMAAAFjAAAB0wAAAdMAAAJDAAACQwAAArMAAAKzAAADIwAAAyMAAAOTAAADkwAAAAMEAAADBAAAcwQAAHMEAADjBAAA4wQAAVMEAAFTBAABwwQAAcMEAAIzBAACMwQAAqMEAAKjBAADEwQAAxMEAAODBAADgwQAA/MEAAPzBAAAYwgAAGMIAADTCAAA0wgAAUMIAAFDCAABswgAAbMIAAIjCAACIwgAApMIAAKTCAADAwgAAwMIAANzCAADcwgAA+MIAAPjCAAAUwwAAFMMAADDDAAAwwwAATMMAAEzDAABowwAAaMMAAITDAACEwwAAoMMAAKDDAAC8wwAAvMMAANjDAADYwwAA9MMAAPTDAAAQxAAAEMQAACzEAAAsxAAASMQAAEjEAABkxAAAZMQAAIDEAACAxAAAnMQAAJzEAAC4xAAAuMQAANTEAADUxAAA8MQAAPDEAAAMxQAADMUAACjFAAAoxQAARMUAAETFAABgxQAAYMUAAHzFAAB8xQAAmMUAAJjFAAC0xQAAtMUAANDFAADQxQAA7MUAAOzFAAAIxgAACMYAACTGAAAkxgAAQMYAAEDGAABcxgAAXMYAAHjGAAB4xgAAlMYAAJTGAACwxgAAsMYAAMzGAADMxgAA6MYAAOjGAAAExwAABMcAACDHAAAgxwAAPMcAADzHAABYxwAAWMcAAHTHAAB0xwAAkMcAAJDHAACsxwAArMcAAMjHAADIxwAA5McAAOTHAAAAyAAAAMgAABzIAAAcyAAAOMgAADjIAABUyAAAVMgAAHDIAABwyAAAjMgAAIzIAACoyAAAqMgAAMTIAADEyAAA4MgAAODIAAD8yAAA/MgAABjJAAAYyQAANMkAADTJAABQyQAAUMkAAGzJAABsyQAAiMkAAIjJAACkyQAApMkAAMDJAADAyQAA3MkAANzJAAD4yQAA+MkAABTKAAAUygAAMMoAADDKAABMygAATMoAAGjKAABoygAAhMoAAITKAACgygAAoMoAALzKAAC8ygAA2MoAANjKAAD0ygAA9MoAABDLAAAQywAALMsAACzLAABIywAASMsAAGTLAABkywAAgMsAAIDLAACcywAAnMsAALjLAAC4ywAA1MsAANTLAADwywAA8MsAAAzMAAAMzAAAKMwAACjMAABEzAAARMwAAGDMAABgzAAAfMwAAHzMAACYzAAAmMwAALTMAAC0zAAA0MwAANDMAADszAAA7MwAAAjNAAAIzQAAJM0AACTNAABAzQAAQM0AAFzNAABczQAAeM0AAHjNAACUzQAAlM0AALDNAACwzQAAzM0AAMzNAADozQAA6M0AAATOAAAEzgAAIM4AACDOAAA8zgAAPM4AAFjOAABYzgAAdM4AAHTOAACQzgAAkM4AAKzOAACszgAAyM4AAMjOAADkzgAA5M4AAADPAAAAzwAAHM8AABzPAAA4zwAAOM8AAFTPAABUzwAAcM8AAHDPAACMzwAAjM8AAKjPAACozwAAxM8AAMTPAADgzwAA4M8AAPzPAAD8zwAAGNAAABjQAAA00AAANNAAAFDQAABQ0AAAbNAAAGzQAACI0AAAiNAAAKTQAACk0AAAwNAAAMDQAADc0AAA3NAAAPjQAAD40AAAFNEAABTRAAAw0QAAMNEAAEzRAABM0QAAaNEAAGjRAACE0QAAhNEAAKDRAACg0QAAvNEAALzRAADY0QAA2NEAAPTRAAD00QAAENIAABDSAAAs0gAALNIAAEjSAABI0gAAZNIAAGTSAACA0gAAgNIAAJzSAACc0gAAuNIAALjSAADU0gAA1NIAAPDSAADw0gAADNMAAAzTAAAo0wAAKNMAAETTAABE0wAAYNMAAGDTAAB80wAAfNMAAJjTAACY0wAAtNMAALTTAADQ0wAA0NMAAOzTAADs0wAACNQAAAjUAAAk1AAAJNQAAEDUAABA1AAAXNQAAFzUAAB41AAAeNQAAJTUAACU1AAAsNQAALDUAADM1AAAzNQAAOjUAADo1AAABNUAAATVAAAg1QAAINUAADzVAAA81QAAWNUAAFjVAAB01QAAdNUAAJDVAACQ1QAArNUAAKzVAADI1QAAyNUAAOTVAADk1QAAANYAAADWAAAc1gAAHNYAADjWAAA41gAAVNYAAFTWAABw1gAAcNYAAIzWAACM1gAAqNYAAKjWAADE1gAAxNYAAODWAADg1gAA/NYAAPzWAAAY1wAAGNcAADTXAAA01wAAUNcAAFDXAABs1wAAbNcAAIjXAACI1wAAAawAABusAAAdrAAAN6wAADmsAABTrAAAVawAAG+sAABxrAAAi6wAAI2sAACnrAAAqawAAMOsAADFrAAA36wAAOGsAAD7rAAA/awAABetAAAZrQAAM60AADWtAABPrQAAUa0AAGutAABtrQAAh60AAImtAACjrQAApa0AAL+tAADBrQAA260AAN2tAAD3rQAA+a0AABOuAAAVrgAAL64AADGuAABLrgAATa4AAGeuAABprgAAg64AAIWuAACfrgAAoa4AALuuAAC9rgAA164AANmuAADzrgAA9a4AAA+vAAARrwAAK68AAC2vAABHrwAASa8AAGOvAABlrwAAf68AAIGvAACbrwAAna8AALevAAC5rwAA068AANWvAADvrwAA8a8AAAuwAAANsAAAJ7AAACmwAABDsAAARbAAAF+wAABhsAAAe7AAAH2wAACXsAAAmbAAALOwAAC1sAAAz7AAANGwAADrsAAA7bAAAAexAAAJsQAAI7EAACWxAAA/sQAAQbEAAFuxAABdsQAAd7EAAHmxAACTsQAAlbEAAK+xAACxsQAAy7EAAM2xAADnsQAA6bEAAAOyAAAFsgAAH7IAACGyAAA7sgAAPbIAAFeyAABZsgAAc7IAAHWyAACPsgAAkbIAAKuyAACtsgAAx7IAAMmyAADjsgAA5bIAAP+yAAABswAAG7MAAB2zAAA3swAAObMAAFOzAABVswAAb7MAAHGzAACLswAAjbMAAKezAACpswAAw7MAAMWzAADfswAA4bMAAPuzAAD9swAAF7QAABm0AAAztAAANbQAAE+0AABRtAAAa7QAAG20AACHtAAAibQAAKO0AACltAAAv7QAAMG0AADbtAAA3bQAAPe0AAD5tAAAE7UAABW1AAAvtQAAMbUAAEu1AABNtQAAZ7UAAGm1AACDtQAAhbUAAJ+1AAChtQAAu7UAAL21AADXtQAA2bUAAPO1AAD1tQAAD7YAABG2AAArtgAALbYAAEe2AABJtgAAY7YAAGW2AAB/tgAAgbYAAJu2AACdtgAAt7YAALm2AADTtgAA1bYAAO+2AADxtgAAC7cAAA23AAAntwAAKbcAAEO3AABFtwAAX7cAAGG3AAB7twAAfbcAAJe3AACZtwAAs7cAALW3AADPtwAA0bcAAOu3AADttwAAB7gAAAm4AAAjuAAAJbgAAD+4AABBuAAAW7gAAF24AAB3uAAAebgAAJO4AACVuAAAr7gAALG4AADLuAAAzbgAAOe4AADpuAAAA7kAAAW5AAAfuQAAIbkAADu5AAA9uQAAV7kAAFm5AABzuQAAdbkAAI+5AACRuQAAq7kAAK25AADHuQAAybkAAOO5AADluQAA/7kAAAG6AAAbugAAHboAADe6AAA5ugAAU7oAAFW6AABvugAAcboAAIu6AACNugAAp7oAAKm6AADDugAAxboAAN+6AADhugAA+7oAAP26AAAXuwAAGbsAADO7AAA1uwAAT7sAAFG7AABruwAAbbsAAIe7AACJuwAAo7sAAKW7AAC/uwAAwbsAANu7AADduwAA97sAAPm7AAATvAAAFbwAAC+8AAAxvAAAS7wAAE28AABnvAAAabwAAIO8AACFvAAAn7wAAKG8AAC7vAAAvbwAANe8AADZvAAA87wAAPW8AAAPvQAAEb0AACu9AAAtvQAAR70AAEm9AABjvQAAZb0AAH+9AACBvQAAm70AAJ29AAC3vQAAub0AANO9AADVvQAA770AAPG9AAALvgAADb4AACe+AAApvgAAQ74AAEW+AABfvgAAYb4AAHu+AAB9vgAAl74AAJm+AACzvgAAtb4AAM++AADRvgAA674AAO2+AAAHvwAACb8AACO/AAAlvwAAP78AAEG/AABbvwAAXb8AAHe/AAB5vwAAk78AAJW/AACvvwAAsb8AAMu/AADNvwAA578AAOm/AAADwAAABcAAAB/AAAAhwAAAO8AAAD3AAABXwAAAWcAAAHPAAAB1wAAAj8AAAJHAAACrwAAArcAAAMfAAADJwAAA48AAAOXAAAD/wAAAAcEAABvBAAAdwQAAN8EAADnBAABTwQAAVcEAAG/BAABxwQAAi8EAAI3BAACnwQAAqcEAAMPBAADFwQAA38EAAOHBAAD7wQAA/cEAABfCAAAZwgAAM8IAADXCAABPwgAAUcIAAGvCAABtwgAAh8IAAInCAACjwgAApcIAAL/CAADBwgAA28IAAN3CAAD3wgAA+cIAABPDAAAVwwAAL8MAADHDAABLwwAATcMAAGfDAABpwwAAg8MAAIXDAACfwwAAocMAALvDAAC9wwAA18MAANnDAADzwwAA9cMAAA/EAAARxAAAK8QAAC3EAABHxAAAScQAAGPEAABlxAAAf8QAAIHEAACbxAAAncQAALfEAAC5xAAA08QAANXEAADvxAAA8cQAAAvFAAANxQAAJ8UAACnFAABDxQAARcUAAF/FAABhxQAAe8UAAH3FAACXxQAAmcUAALPFAAC1xQAAz8UAANHFAADrxQAA7cUAAAfGAAAJxgAAI8YAACXGAAA/xgAAQcYAAFvGAABdxgAAd8YAAHnGAACTxgAAlcYAAK/GAACxxgAAy8YAAM3GAADnxgAA6cYAAAPHAAAFxwAAH8cAACHHAAA7xwAAPccAAFfHAABZxwAAc8cAAHXHAACPxwAAkccAAKvHAACtxwAAx8cAAMnHAADjxwAA5ccAAP/HAAAByAAAG8gAAB3IAAA3yAAAOcgAAFPIAABVyAAAb8gAAHHIAACLyAAAjcgAAKfIAACpyAAAw8gAAMXIAADfyAAA4cgAAPvIAAD9yAAAF8kAABnJAAAzyQAANckAAE/JAABRyQAAa8kAAG3JAACHyQAAickAAKPJAAClyQAAv8kAAMHJAADbyQAA3ckAAPfJAAD5yQAAE8oAABXKAAAvygAAMcoAAEvKAABNygAAZ8oAAGnKAACDygAAhcoAAJ/KAAChygAAu8oAAL3KAADXygAA2coAAPPKAAD1ygAAD8sAABHLAAArywAALcsAAEfLAABJywAAY8sAAGXLAAB/ywAAgcsAAJvLAACdywAAt8sAALnLAADTywAA1csAAO/LAADxywAAC8wAAA3MAAAnzAAAKcwAAEPMAABFzAAAX8wAAGHMAAB7zAAAfcwAAJfMAACZzAAAs8wAALXMAADPzAAA0cwAAOvMAADtzAAAB80AAAnNAAAjzQAAJc0AAD/NAABBzQAAW80AAF3NAAB3zQAAec0AAJPNAACVzQAAr80AALHNAADLzQAAzc0AAOfNAADpzQAAA84AAAXOAAAfzgAAIc4AADvOAAA9zgAAV84AAFnOAABzzgAAdc4AAI/OAACRzgAAq84AAK3OAADHzgAAyc4AAOPOAADlzgAA/84AAAHPAAAbzwAAHc8AADfPAAA5zwAAU88AAFXPAABvzwAAcc8AAIvPAACNzwAAp88AAKnPAADDzwAAxc8AAN/PAADhzwAA+88AAP3PAAAX0AAAGdAAADPQAAA10AAAT9AAAFHQAABr0AAAbdAAAIfQAACJ0AAAo9AAAKXQAAC/0AAAwdAAANvQAADd0AAA99AAAPnQAAAT0QAAFdEAAC/RAAAx0QAAS9EAAE3RAABn0QAAadEAAIPRAACF0QAAn9EAAKHRAAC70QAAvdEAANfRAADZ0QAA89EAAPXRAAAP0gAAEdIAACvSAAAt0gAAR9IAAEnSAABj0gAAZdIAAH/SAACB0gAAm9IAAJ3SAAC30gAAudIAANPSAADV0gAA79IAAPHSAAAL0wAADdMAACfTAAAp0wAAQ9MAAEXTAABf0wAAYdMAAHvTAAB90wAAl9MAAJnTAACz0wAAtdMAAM/TAADR0wAA69MAAO3TAAAH1AAACdQAACPUAAAl1AAAP9QAAEHUAABb1AAAXdQAAHfUAAB51AAAk9QAAJXUAACv1AAAsdQAAMvUAADN1AAA59QAAOnUAAAD1QAABdUAAB/VAAAh1QAAO9UAAD3VAABX1QAAWdUAAHPVAAB11QAAj9UAAJHVAACr1QAArdUAAMfVAADJ1QAA49UAAOXVAAD/1QAAAdYAABvWAAAd1gAAN9YAADnWAABT1gAAVdYAAG/WAABx1gAAi9YAAI3WAACn1gAAqdYAAMPWAADF1gAA39YAAOHWAAD71gAA/dYAABfXAAAZ1wAAM9cAADXXAABP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AwAA9wMAAIEEAACKBAAALwUAADEFAABWBQAAWQUAAFwFAABeBQAAXgUAAGAFAACIBQAAigUAAIoFAADzBQAA8wUAACAGAABKBgAAbgYAAG8GAABxBgAA0wYAANUGAADVBgAA5QYAAOYGAADuBgAA7wYAAPoGAAD8BgAA/wYAAP8GAAAPBwAAEAcAABIHAAAvBwAATQcAAKUHAACxBwAAsQcAAMoHAADqBwAA9AcAAPUHAAD6BwAA+gcAAAAIAAAVCAAAGggAABoIAAAkCAAAJAgAACgIAAAoCAAAQAgAAFgIAABgCAAAaggAAHAIAACHCAAAiQgAAI4IAACgCAAAyQgAAAQJAAA5CQAAPQkAAD0JAABQCQAAUAkAAFgJAABhCQAAcQkAAIAJAACFCQAAjAkAAI8JAACQCQAAkwkAAKgJAACqCQAAsAkAALIJAACyCQAAtgkAALkJAAC9CQAAvQkAAM4JAADOCQAA3AkAAN0JAADfCQAA4QkAAPAJAADxCQAA/AkAAPwJAAAFCgAACgoAAA8KAAAQCgAAEwoAACgKAAAqCgAAMAoAADIKAAAzCgAANQoAADYKAAA4CgAAOQoAAFkKAABcCgAAXgoAAF4KAAByCgAAdAoAAIUKAACNCgAAjwoAAJEKAACTCgAAqAoAAKoKAACwCgAAsgoAALMKAAC1CgAAuQoAAL0KAAC9CgAA0AoAANAKAADgCgAA4QoAAPkKAAD5CgAABQsAAAwLAAAPCwAAEAsAABMLAAAoCwAAKgsAADALAAAyCwAAMwsAADULAAA5CwAAPQsAAD0LAABcCwAAXQsAAF8LAABhCwAAcQsAAHELAACDCwAAgwsAAIULAACKCwAAjgsAAJALAACSCwAAlQsAAJkLAACaCwAAnAsAAJwLAACeCwAAnwsAAKMLAACkCwAAqAsAAKoLAACuCwAAuQsAANALAADQCwAABQwAAAwMAAAODAAAEAwAABIMAAAoDAAAKgwAADkMAAA9DAAAPQwAAFgMAABaDAAAXQwAAF0MAABgDAAAYQwAAIAMAACADAAAhQwAAIwMAACODAAAkAwAAJIMAACoDAAAqgwAALMMAAC1DAAAuQwAAL0MAAC9DAAA3QwAAN4MAADgDAAA4QwAAPEMAADyDAAABA0AAAwNAAAODQAAEA0AABINAAA6DQAAPQ0AAD0NAABO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4AEAj+ABADDhAQA24QEAruIBAK7iAQDs4gEA7+IBAOzkAQDv5AEA7uUBAO/lAQDQ6AEA1ugBAETpAQBK6QEAIAAOAH8ADgAAAQ4A7wEOAK0AAACtAAAAHAYAABwGAAAPBwAADwcAAA4YAAAOGAAACyAAAAsgAAAOIAAADyAAACogAAAuIAAAYCAAAGQgAABmIAAAbyAAAP/+AAD//gAA+f8AAPv/AAAwNAEAPzQBAKC8AQCjvAEAc9EBAHrRAQABAA4AAQAOAGEAAAB6AAAAqgAAAKoAAAC1AAAAtQAAALoAAAC6AAAA3wAAAPYAAAD4AAAA/wAAAAEBAAABAQAAAwEAAAMBAAAFAQAABQEAAAcBAAAHAQAACQEAAAkBAAALAQAACwEAAA0BAAANAQAADwEAAA8BAAARAQAAEQEAABMBAAATAQAAFQEAABUBAAAXAQAAFwEAABkBAAAZAQAAGwEAABsBAAAdAQAAHQEAAB8BAAAfAQAAIQEAACEBAAAjAQAAIwEAACUBAAAlAQAAJwEAACcBAAApAQAAKQEAACsBAAArAQAALQEAAC0BAAAvAQAALwEAADEBAAAxAQAAMwEAADMBAAA1AQAANQEAADcBAAA4AQAAOgEAADoBAAA8AQAAPAEAAD4BAAA+AQAAQAEAAEABAABCAQAAQgEAAEQBAABEAQAARgEAAEYBAABIAQAASQEAAEsBAABLAQAATQEAAE0BAABPAQAATwEAAFEBAABRAQAAUwEAAFMBAABVAQAAVQEAAFcBAABXAQAAWQEAAFkBAABbAQAAWwEAAF0BAABdAQAAXwEAAF8BAABhAQAAYQEAAGMBAABjAQAAZQEAAGUBAABnAQAAZwEAAGkBAABpAQAAawEAAGsBAABtAQAAbQEAAG8BAABvAQAAcQEAAHEBAABzAQAAcwEAAHUBAAB1AQAAdwEAAHcBAAB6AQAAegEAAHwBAAB8AQAAfgEAAIABAACDAQAAgwEAAIUBAACFAQAAiAEAAIgBAACMAQAAjQEAAJIBAACSAQAAlQEAAJUBAACZAQAAmwEAAJ4BAACeAQAAoQEAAKEBAACjAQAAowEAAKUBAAClAQAAqAEAAKgBAACqAQAAqwEAAK0BAACtAQAAsAEAALABAAC0AQAAtAEAALYBAAC2AQAAuQEAALoBAAC9AQAAvwEAAMYBAADGAQAAyQEAAMkBAADMAQAAzAEAAM4BAADOAQAA0AEAANABAADSAQAA0gEAANQBAADUAQAA1gEAANYBAADYAQAA2AEAANoBAADaAQAA3AEAAN0BAADfAQAA3wEAAOEBAADhAQAA4wEAAOMBAADlAQAA5QEAAOcBAADnAQAA6QEAAOkBAADrAQAA6wEAAO0BAADtAQAA7wEAAPABAADzAQAA8wEAAPUBAAD1AQAA+QEAAPkBAAD7AQAA+wEAAP0BAAD9AQAA/wEAAP8BAAABAgAAAQIAAAMCAAADAgAABQIAAAUCAAAHAgAABwIAAAkCAAAJAgAACwIAAAsCAAANAgAADQIAAA8CAAAPAgAAEQIAABECAAATAgAAEwIAABUCAAAVAgAAFwIAABcCAAAZAgAAGQIAABsCAAAbAgAAHQIAAB0CAAAfAgAAHwIAACECAAAhAgAAIwIAACMCAAAlAgAAJQIAACcCAAAnAgAAKQIAACkCAAArAgAAKwIAAC0CAAAtAgAALwIAAC8CAAAxAgAAMQIAADMCAAA5AgAAPAIAADwCAAA/AgAAQAIAAEICAABCAgAARwIAAEcCAABJAgAASQIAAEsCAABLAgAATQIAAE0CAABPAgAAkwIAAJUCAAC4AgAAwAIAAMECAADgAgAA5AIAAHEDAABxAwAAcwMAAHMDAAB3AwAAdwMAAHoDAAB9AwAAkAMAAJADAACsAwAAzgMAANADAADRAwAA1QMAANcDAADZAwAA2QMAANsDAADbAwAA3QMAAN0DAADfAwAA3wMAAOEDAADhAwAA4wMAAOMDAADlAwAA5QMAAOcDAADnAwAA6QMAAOkDAADrAwAA6wMAAO0DAADtAwAA7wMAAPMDAAD1AwAA9QMAAPgDAAD4AwAA+wMAAPwDAAAwBAAAXwQAAGEEAABhBAAAYwQAAGMEAABlBAAAZQQAAGcEAABnBAAAaQQAAGkEAABrBAAAawQAAG0EAABtBAAAbwQAAG8EAABxBAAAcQQAAHMEAABzBAAAdQQAAHUEAAB3BAAAdwQAAHkEAAB5BAAAewQAAHsEAAB9BAAAfQQAAH8EAAB/BAAAgQQAAIEEAACLBAAAiwQAAI0EAACNBAAAjwQAAI8EAACRBAAAkQQAAJMEAACTBAAAlQQAAJUEAACXBAAAlwQAAJkEAACZBAAAmwQAAJsEAACdBAAAnQQAAJ8EAACfBAAAoQQAAKEEAACjBAAAowQAAKUEAAClBAAApwQAAKcEAACpBAAAqQQAAKsEAACrBAAArQQAAK0EAACvBAAArwQAALEEAACxBAAAswQAALMEAAC1BAAAtQQAALcEAAC3BAAAuQQAALkEAAC7BAAAuwQAAL0EAAC9BAAAvwQAAL8EAADCBAAAwgQAAMQEAADEBAAAxgQAAMYEAADIBAAAyAQAAMoEAADKBAAAzAQAAMwEAADOBAAAzwQAANEEAADRBAAA0wQAANMEAADVBAAA1QQAANcEAADXBAAA2QQAANkEAADbBAAA2wQAAN0EAADdBAAA3wQAAN8EAADhBAAA4QQAAOMEAADjBAAA5QQAAOUEAADnBAAA5wQAAOkEAADpBAAA6wQAAOsEAADtBAAA7QQAAO8EAADvBAAA8QQAAPEEAADzBAAA8wQAAPUEAAD1BAAA9wQAAPcEAAD5BAAA+QQAAPsEAAD7BAAA/QQAAP0EAAD/BAAA/wQAAAEFAAABBQAAAwUAAAMFAAAFBQAABQUAAAcFAAAHBQAACQUAAAkFAAALBQAACwUAAA0FAAANBQAADwUAAA8FAAARBQAAEQUAABMFAAATBQAAFQUAABUFAAAXBQAAFwUAABkFAAAZBQAAGwUAABsFAAAdBQAAHQUAAB8FAAAfBQAAIQUAACEFAAAjBQAAIwUAACUFAAAlBQAAJwUAACcFAAApBQAAKQUAACsFAAArBQAALQUAAC0FAAAvBQAALwUAAGAFAACIBQAA/BAAAPwQAAD4EwAA/RMAAIAcAACIHAAAihwAAIocAAAAHQAAvx0AAAEeAAABHgAAAx4AAAMeAAAFHgAABR4AAAceAAAHHgAACR4AAAkeAAALHgAACx4AAA0eAAANHgAADx4AAA8eAAARHgAAER4AABMeAAATHgAAFR4AABUeAAAXHgAAFx4AABkeAAAZHgAAGx4AABseAAAdHgAAHR4AAB8eAAAfHgAAIR4AACEeAAAjHgAAIx4AACUeAAAlHgAAJx4AACceAAApHgAAKR4AACseAAArHgAALR4AAC0eAAAvHgAALx4AADEeAAAxHgAAMx4AADMeAAA1HgAANR4AADceAAA3HgAAOR4AADkeAAA7HgAAOx4AAD0eAAA9HgAAPx4AAD8eAABBHgAAQR4AAEMeAABDHgAARR4AAEUeAABHHgAARx4AAEkeAABJHgAASx4AAEseAABNHgAATR4AAE8eAABPHgAAUR4AAFEeAABTHgAAUx4AAFUeAABVHgAAVx4AAFceAABZHgAAWR4AAFseAABbHgAAXR4AAF0eAABfHgAAXx4AAGEeAABhHgAAYx4AAGMeAABlHgAAZR4AAGceAABnHgAAaR4AAGkeAABrHgAAax4AAG0eAABtHgAAbx4AAG8eAABxHgAAcR4AAHMeAABzHgAAdR4AAHUeAAB3HgAAdx4AAHkeAAB5HgAAex4AAHseAAB9HgAAfR4AAH8eAAB/HgAAgR4AAIEeAACDHgAAgx4AAIUeAACFHgAAhx4AAIceAACJHgAAiR4AAIseAACLHgAAjR4AAI0eAACPHgAAjx4AAJEeAACRHgAAkx4AAJMeAACVHgAAnR4AAJ8eAACfHgAAoR4AAKEeAACjHgAAox4AAKUeAAClHgAApx4AAKceAACpHgAAqR4AAKseAACrHgAArR4AAK0eAACvHgAArx4AALEeAACxHgAAsx4AALMeAAC1HgAAtR4AALceAAC3HgAAuR4AALkeAAC7HgAAux4AAL0eAAC9HgAAvx4AAL8eAADBHgAAwR4AAMMeAADDHgAAxR4AAMUeAADHHgAAxx4AAMkeAADJHgAAyx4AAMseAADNHgAAzR4AAM8eAADPHgAA0R4AANEeAADTHgAA0x4AANUeAADVHgAA1x4AANceAADZHgAA2R4AANseAADbHgAA3R4AAN0eAADfHgAA3x4AAOEeAADhHgAA4x4AAOMeAADlHgAA5R4AAOceAADnHgAA6R4AAOkeAADrHgAA6x4AAO0eAADtHgAA7x4AAO8eAADxHgAA8R4AAPMeAADzHgAA9R4AAPUeAAD3HgAA9x4AAPkeAAD5HgAA+x4AAPseAAD9HgAA/R4AAP8eAAAHHwAAEB8AABUfAAAgHwAAJx8AADAfAAA3HwAAQB8AAEUfAABQHwAAVx8AAGAfAABnHwAAcB8AAH0fAACAHwAAhx8AAJAfAACXHwAAoB8AAKcfAACwHwAAtB8AALYfAAC3HwAAvh8AAL4fAADCHwAAxB8AAMYfAADHHwAA0B8AANMfAADWHwAA1x8AAOAfAADnHwAA8h8AAPQfAAD2HwAA9x8AAHEgAABxIAAAfyAAAH8gAACQIAAAnCAAAAohAAAKIQAADiEAAA8hAAATIQAAEyEAAC8hAAAvIQAANCEAADQhAAA5IQAAOSEAADwhAAA9IQAARiEAAEkhAABOIQAATiEAAHAhAAB/IQAAhCEAAIQhAADQJAAA6SQAADAsAABfLAAAYSwAAGEsAABlLAAAZiwAAGgsAABoLAAAaiwAAGosAABsLAAAbCwAAHEsAABxLAAAcywAAHQsAAB2LAAAfSwAAIEsAACBLAAAgywAAIMsAACFLAAAhSwAAIcsAACHLAAAiSwAAIksAACLLAAAiywAAI0sAACNLAAAjywAAI8sAACRLAAAkSwAAJMsAACTLAAAlSwAAJUsAACXLAAAlywAAJksAACZLAAAmywAAJssAACdLAAAnSwAAJ8sAACfLAAAoSwAAKEsAACjLAAAoywAAKUsAAClLAAApywAAKcsAACpLAAAqSwAAKssAACrLAAArSwAAK0sAACvLAAArywAALEsAACxLAAAsywAALMsAAC1LAAAtSwAALcsAAC3LAAAuSwAALksAAC7LAAAuywAAL0sAAC9LAAAvywAAL8sAADBLAAAwSwAAMMsAADDLAAAxSwAAMUsAADHLAAAxywAAMksAADJLAAAyywAAMssAADNLAAAzSwAAM8sAADPLAAA0SwAANEsAADTLAAA0ywAANUsAADVLAAA1ywAANcsAADZLAAA2SwAANssAADbLAAA3SwAAN0sAADfLAAA3ywAAOEsAADhLAAA4ywAAOQsAADsLAAA7CwAAO4sAADuLAAA8ywAAPMsAAAALQAAJS0AACctAAAnLQAALS0AAC0tAABBpgAAQaYAAEOmAABDpgAARaYAAEWmAABHpgAAR6YAAEmmAABJpgAAS6YAAEumAABNpgAATaYAAE+mAABPpgAAUaYAAFGmAABTpgAAU6YAAFWmAABVpgAAV6YAAFemAABZpgAAWaYAAFumAABbpgAAXaYAAF2mAABfpgAAX6YAAGGmAABhpgAAY6YAAGOmAABlpgAAZaYAAGemAABnpgAAaaYAAGmmAABrpgAAa6YAAG2mAABtpgAAgaYAAIGmAACDpgAAg6YAAIWmAACFpgAAh6YAAIemAACJpgAAiaYAAIumAACLpgAAjaYAAI2mAACPpgAAj6YAAJGmAACRpgAAk6YAAJOmAACVpgAAlaYAAJemAACXpgAAmaYAAJmmAACbpgAAnaYAACOnAAAjpwAAJacAACWnAAAnpwAAJ6cAACmnAAAppwAAK6cAACunAAAtpwAALacAAC+nAAAxpwAAM6cAADOnAAA1pwAANacAADenAAA3pwAAOacAADmnAAA7pwAAO6cAAD2nAAA9pwAAP6cAAD+nAABBpwAAQacAAEOnAABDpwAARacAAEWnAABHpwAAR6cAAEmnAABJpwAAS6cAAEunAABNpwAATacAAE+nAABPpwAAUacAAFGnAABTpwAAU6cAAFWnAABVpwAAV6cAAFenAABZpwAAWacAAFunAABbpwAAXacAAF2nAABfpwAAX6cAAGGnAABhpwAAY6cAAGOnAABlpwAAZacAAGenAABnpwAAaacAAGmnAABrpwAAa6cAAG2nAABtpwAAb6cAAHinAAB6pwAAeqcAAHynAAB8pwAAf6cAAH+nAACBpwAAgacAAIOnAACDpwAAhacAAIWnAACHpwAAh6cAAIynAACMpwAAjqcAAI6nAACRpwAAkacAAJOnAACVpwAAl6cAAJenAACZpwAAmacAAJunAACbpwAAnacAAJ2nAACfpwAAn6cAAKGnAAChpwAAo6cAAKOnAAClpwAApacAAKenAACnpwAAqacAAKmnAACvpwAAr6cAALWnAAC1pwAAt6cAALenAAC5pwAAuacAALunAAC7pwAAvacAAL2nAAC/pwAAv6cAAMGnAADBpwAAw6cAAMOnAADIpwAAyKcAAMqnAADKpwAAzacAAM2nAADRpwAA0acAANOnAADTpwAA1acAANWnAADXpwAA16cAANmnAADZpwAA26cAANunAADypwAA9KcAAPanAAD2pwAA+KcAAPqnAAAwqwAAWqsAAFyrAABpqwAAcKsAAL+rAAAA+wAABvsAABP7AAAX+wAAQf8AAFr/AAAoBAEATwQBANgEAQD7BAEAlwUBAKEFAQCjBQEAsQUBALMFAQC5BQEAuwUBALwFAQCABwEAgAcBAIMHAQCFBwEAhwcBALAHAQCyBwEAugcBAMAMAQDyDAEAcA0BAIUNAQDAGAEA3xgBAGBuAQB/bgEAGtQBADPUAQBO1AEAVNQBAFbUAQBn1AEAgtQBAJvUAQC21AEAudQBALvUAQC71AEAvdQBAMPUAQDF1AEAz9QBAOrUAQAD1QEAHtUBADfVAQBS1QEAa9UBAIbVAQCf1QEAutUBANPVAQDu1QEAB9YBACLWAQA71gEAVtYBAG/WAQCK1gEApdYBAMLWAQDa1gEA3NYBAOHWAQD81gEAFNcBABbXAQAb1wEANtcBAE7XAQBQ1wEAVdcBAHDXAQCI1wEAitcBAI/XAQCq1wEAwtcBAMTXAQDJ1wEAy9cBAMvXAQAA3wEACd8BAAvfAQAe3wEAJd8BACrfAQAw4AEAbeABACLpAQBD6QEAMAAAADkAAAAABgAABQYAAGAGAABpBgAAawYAAGwGAADdBgAA3QYAAPAGAAD5BgAAwAcAAMkHAACQCAAAkQgAAOIIAADiCAAAZgkAAG8JAADmCQAA7wkAAGYKAABvCgAA5goAAO8KAABmCwAAbwsAAOYLAADvCwAAZgwAAG8MAADmDAAA7wwAAGYNAABvDQAA5g0AAO8NAABQDgAAWQ4AANAOAADZDgAAIA8AACkPAABAEAAASRAAAJAQAACZEAAA4BcAAOkXAAAQGAAAGRgAAEYZAABPGQAA0BkAANoZAACAGgAAiRoAAJAaAACZGgAAUBsAAFkbAACwGwAAuRsAAEAcAABJHAAAUBwAAFkcAAAgpgAAKaYAANCoAADZqAAAAKkAAAmpAADQqQAA2akAAPCpAAD5qQAAUKoAAFmqAADwqwAA+asAABD/AAAZ/wAAoAQBAKkEAQAwDQEAOQ0BAEANAQBJDQEAZhABAG8QAQC9EAEAvRABAM0QAQDNEAEA8BABAPkQAQA2EQEAPxEBANARAQDZEQEA8BIBAPkSAQBQFAEAWRQBANAUAQDZFAEAUBYBAFkWAQDAFgEAyRYBANAWAQDjFgEAMBcBADkXAQDgGAEA6RgBAFAZAQBZGQEA8BsBAPkbAQBQHAEAWRwBAFAdAQBZHQEAoB0BAKkdAQBQHwEAWR8BADBhAQA5YQEAYGoBAGlqAQDAagEAyWoBAFBrAQBZawEAcG0BAHltAQDwzAEA+cwBAM7XAQD/1wEAQOEBAEnhAQDw4gEA+eIBAPDkAQD55AEA8eUBAPrlAQBQ6QEAWekBAPD7AQD5+wEAuwEAALsBAADAAQAAwwEAAJQCAACUAgAAuQIAAL8CAADGAgAA0QIAAOwCAADsAgAA7gIAAO4CAAB0AwAAdAMAAFkFAABZBQAA0AUAAOoFAADvBQAA8wUAACAGAABKBgAAbgYAAG8GAABxBgAA0wYAANUGAADVBgAA5QYAAOYGAADuBgAA7wYAAPoGAAD8BgAA/wYAAP8GAAAQBwAAEAcAABIHAAAvBwAATQcAAKUHAACxBwAAsQcAAMoHAADqBwAA9AcAAPUHAAD6BwAA+gcAAAAIAAAVCAAAGggAABoIAAAkCAAAJAgAACgIAAAoCAAAQAgAAFgIAABgCAAAaggAAHAIAACHCAAAiQgAAI4IAACgCAAAyQgAAAQJAAA5CQAAPQkAAD0JAABQCQAAUAkAAFgJAABhCQAAcQkAAIAJAACFCQAAjAkAAI8JAACQCQAAkwkAAKgJAACqCQAAsAkAALIJAACyCQAAtgkAALkJAAC9CQAAvQkAAM4JAADOCQAA3AkAAN0JAADfCQAA4QkAAPAJAADxCQAA/AkAAPwJAAAFCgAACgoAAA8KAAAQCgAAEwoAACgKAAAqCgAAMAoAADIKAAAzCgAANQoAADYKAAA4CgAAOQoAAFkKAABcCgAAXgoAAF4KAAByCgAAdAoAAIUKAACNCgAAjwoAAJEKAACTCgAAqAoAAKoKAACwCgAAsgoAALMKAAC1CgAAuQoAAL0KAAC9CgAA0AoAANAKAADgCgAA4QoAAPkKAAD5CgAABQsAAAwLAAAPCwAAEAsAABMLAAAoCwAAKgsAADALAAAyCwAAMwsAADULAAA5CwAAPQsAAD0LAABcCwAAXQsAAF8LAABhCwAAcQsAAHELAACDCwAAgwsAAIULAACKCwAAjgsAAJALAACSCwAAlQsAAJkLAACaCwAAnAsAAJwLAACeCwAAnwsAAKMLAACkCwAAqAsAAKoLAACuCwAAuQsAANALAADQCwAABQwAAAwMAAAODAAAEAwAABIMAAAoDAAAKgwAADkMAAA9DAAAPQwAAFgMAABaDAAAXQwAAF0MAABgDAAAYQwAAIAMAACADAAAhQwAAIwMAACODAAAkAwAAJIMAACoDAAAqgwAALMMAAC1DAAAuQwAAL0MAAC9DAAA3QwAAN4MAADgDAAA4QwAAPEMAADyDAAABA0AAAwNAAAODQAAEA0AABINAAA6DQAAPQ0AAD0NAABODQAATg0AAFQNAABWDQAAXw0AAGENAAB6DQAAfw0AAIUNAACWDQAAmg0AALENAACzDQAAuw0AAL0NAAC9DQAAwA0AAMYNAAAB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AQAAEAEAABABAAASAQAAEgEAABQBAAAUAQAAFgEAABYBAAAYAQAAGAEAABoBAAAaAQAAHAEAABwBAAAeAQAAHgEAACABAAAgAQAAIgEAACIBAAAkAQAAJAEAACYBAAAmAQAAKAEAACgBAAAqAQAAKgEAACwBAAAsAQAALgEAAC4BAAAwAQAAMAEAADIBAAAyAQAANAEAADQBAAA2AQAANgEAADkBAAA5AQAAOwEAADsBAAA9AQAAPQEAAD8BAAA/AQAAQQEAAEEBAABDAQAAQwEAAEUBAABFAQAARwEAAEcBAABKAQAASgEAAEwBAABMAQAATgEAAE4BAABQAQAAUAEAAFIBAABSAQAAVAEAAFQBAABWAQAAVgEAAFgBAABYAQAAWgEAAFoBAABcAQAAXAEAAF4BAABeAQAAYAEAAGABAABiAQAAYgEAAGQBAABkAQAAZgEAAGYBAABoAQAAaAEAAGoBAABqAQAAbAEAAGwBAABuAQAAbgEAAHABAABwAQAAcgEAAHIBAAB0AQAAdAEAAHYBAAB2AQAAeAEAAHkBAAB7AQAAewEAAH0BAAB9AQAAgQEAAIIBAACEAQAAhAEAAIYBAACHAQAAiQEAAIsBAACOAQAAkQEAAJMBAACUAQAAlgEAAJgBAACcAQAAnQEAAJ8BAACgAQAAogEAAKIBAACkAQAApAEAAKYBAACnAQAAqQEAAKkBAACsAQAArAEAAK4BAACvAQAAsQEAALMBAAC1AQAAtQEAALcBAAC4AQAAvAEAALwBAADEAQAAxQEAAMcBAADIAQAAygEAAMsBAADNAQAAzQEAAM8BAADPAQAA0QEAANEBAADTAQAA0wEAANUBAADVAQAA1wEAANcBAADZAQAA2QEAANsBAADbAQAA3gEAAN4BAADgAQAA4AEAAOIBAADiAQAA5AEAAOQBAADmAQAA5gEAAOgBAADoAQAA6gEAAOoBAADsAQAA7AEAAO4BAADuAQAA8QEAAPIBAAD0AQAA9AEAAPYBAAD4AQAA+gEAAPoBAAD8AQAA/AEAAP4BAAD+AQAAAAIAAAACAAACAgAAAgIAAAQCAAAEAgAABgIAAAYCAAAIAgAACAIAAAoCAAAKAgAADAIAAAwCAAAOAgAADgIAABACAAAQAgAAEgIAABICAAAUAgAAFAIAABYCAAAWAgAAGAIAABgCAAAaAgAAGgIAABwCAAAcAgAAHgIAAB4CAAAgAgAAIAIAACICAAAiAgAAJAIAACQCAAAmAgAAJgIAACgCAAAoAgAAKgIAACoCAAAsAgAALAIAAC4CAAAuAgAAMAIAADACAAAyAgAAMgIAADoCAAA7AgAAPQIAAD4CAABBAgAAQQIAAEMCAABGAgAASAIAAEgCAABKAgAASgIAAEwCAABMAgAATgIAAE4CAABwAwAAcAMAAHIDAAByAwAAdgMAAHYDAAB/AwAAfwMAAIYDAACGAwAAiAMAAIoDAACMAwAAjAMAAI4DAACPAwAAkQMAAKEDAACjAwAAqwMAAM8DAADPAwAA0gMAANQDAADYAwAA2AMAANoDAADaAwAA3AMAANwDAADeAwAA3gMAAOADAADgAwAA4gMAAOIDAADkAwAA5AMAAOYDAADmAwAA6AMAAOgDAADqAwAA6gMAAOwDAADsAwAA7gMAAO4DAAD0AwAA9AMAAPcDAAD3AwAA+QMAAPoDAAD9AwAALwQAAGAEAABgBAAAYgQAAGIEAABkBAAAZAQAAGYEAABmBAAAaAQAAGgEAABqBAAAagQAAGwEAABsBAAAbgQAAG4EAABwBAAAcAQAAHIEAAByBAAAdAQAAHQEAAB2BAAAdgQAAHgEAAB4BAAAegQAAHoEAAB8BAAAfAQAAH4EAAB+BAAAgAQAAIAEAACKBAAAigQAAIwEAACMBAAAjgQAAI4EAACQBAAAkAQAAJIEAACSBAAAlAQAAJQEAACWBAAAlgQAAJgEAACYBAAAmgQAAJoEAACcBAAAnAQAAJ4EAACeBAAAoAQAAKAEAACiBAAAogQAAKQEAACkBAAApgQAAKYEAACoBAAAqAQAAKoEAACqBAAArAQAAKwEAACuBAAArgQAALAEAACwBAAAsgQAALIEAAC0BAAAtAQAALYEAAC2BAAAuAQAALgEAAC6BAAAugQAALwEAAC8BAAAvgQAAL4EAADABAAAwQQAAMMEAADDBAAAxQQAAMUEAADHBAAAxwQAAMkEAADJBAAAywQAAMsEAADNBAAAzQQAANAEAADQBAAA0gQAANIEAADUBAAA1AQAANYEAADWBAAA2AQAANgEAADaBAAA2gQAANwEAADcBAAA3gQAAN4EAADgBAAA4AQAAOIEAADiBAAA5AQAAOQEAADmBAAA5gQAAOgEAADoBAAA6gQAAOoEAADsBAAA7AQAAO4EAADuBAAA8AQAAPAEAADyBAAA8gQAAPQEAAD0BAAA9gQAAPYEAAD4BAAA+AQAAPoEAAD6BAAA/AQAAPwEAAD+BAAA/gQAAAAFAAAABQAAAgUAAAIFAAAEBQAABAUAAAYFAAAGBQAACAUAAAgFAAAKBQAACgUAAAwFAAAMBQAADgUAAA4FAAAQBQAAEAUAABIFAAASBQAAFAUAABQFAAAWBQAAFgUAABgFAAAYBQAAGgUAABoFAAAcBQAAHAUAAB4FAAAeBQAAIAUAACAFAAAiBQAAIgUAACQFAAAkBQAAJgUAACYFAAAoBQAAKAUAACoFAAAqBQAALAUAACwFAAAuBQAALgUAADEFAABWBQAAoBAAAMUQAADHEAAAxxAAAM0QAADNEAAAoBMAAPUTAACJHAAAiRwAAAAeAAAAHgAAAh4AAAIeAAAEHgAABB4AAAYeAAAGHgAACB4AAAgeAAAKHgAACh4AAAweAAAMHgAADh4AAA4eAAAQHgAAEB4AABIeAAASHgAAFB4AABQeAAAWHgAAFh4AABgeAAAYHgAAGh4AABoeAAAcHgAAHB4AAB4eAAAeHgAAIB4AACAeAAAiHgAAIh4AACQeAAAkHgAAJh4AACYeAAAoHgAAKB4AACoeAAAqHgAALB4AACweAAAuHgAALh4AADAeAAAwHgAAMh4AADIeAAA0HgAANB4AADYeAAA2HgAAOB4AADgeAAA6HgAAOh4AADweAAA8HgAAPh4AAD4eAABAHgAAQB4AAEIeAABCHgAARB4AAEQeAABGHgAARh4AAEgeAABIHgAASh4AAEoeAABMHgAATB4AAE4eAABOHgAAUB4AAFAeAABSHgAAUh4AAFQeAABUHgAAVh4AAFYeAABYHgAAWB4AAFoeAABaHgAAXB4AAFweAABeHgAAXh4AAGAeAABgHgAAYh4AAGIeAABkHgAAZB4AAGYeAABmHgAAaB4AAGgeAABqHgAAah4AAGweAABsHgAAbh4AAG4eAABwHgAAcB4AAHIeAAByHgAAdB4AAHQeAAB2HgAAdh4AAHgeAAB4HgAAeh4AAHoeAAB8HgAAfB4AAH4eAAB+HgAAgB4AAIAeAACCHgAAgh4AAIQeAACEHgAAhh4AAIYeAACIHgAAiB4AAIoeAACKHgAAjB4AAIweAACOHgAAjh4AAJAeAACQHgAAkh4AAJIeAACUHgAAlB4AAJ4eAACeHgAAoB4AAKAeAACiHgAAoh4AAKQeAACkHgAAph4AAKYeAACoHgAAqB4AAKoeAACqHgAArB4AAKweAACuHgAArh4AALAeAACwHgAAsh4AALIeAAC0HgAAtB4AALYeAAC2HgAAuB4AALgeAAC6HgAAuh4AALweAAC8HgAAvh4AAL4eAADAHgAAwB4AAMIeAADCHgAAxB4AAMQeAADGHgAAxh4AAMgeAADIHgAAyh4AAMoeAADMHgAAzB4AAM4eAADOHgAA0B4AANAeAADSHgAA0h4AANQeAADUHgAA1h4AANYeAADYHgAA2B4AANoeAADaHgAA3B4AANweAADeHgAA3h4AAOAeAADgHgAA4h4AAOIeAADkHgAA5B4AAOYeAADmHgAA6B4AAOgeAADqHgAA6h4AAOweAADsHgAA7h4AAO4eAADwHgAA8B4AAPIeAADyHgAA9B4AAPQeAAD2HgAA9h4AAPgeAAD4HgAA+h4AAPoeAAD8HgAA/B4AAP4eAAD+HgAACB8AAA8fAAAYHwAAHR8AACgfAAAvHwAAOB8AAD8fAABIHwAATR8AAFkfAABZHwAAWx8AAFsfAABdHwAAXR8AAF8fAABfHwAAaB8AAG8fAACIHwAAjx8AAJgfAACfHwAAqB8AAK8fAAC4HwAAvB8AAMgfAADMHwAA2B8AANsfAADoHwAA7B8AAPgfAAD8HwAAAiEAAAIhAAAHIQAAByEAAAshAAANIQAAECEAABIhAAAVIQAAFSEAABkhAAAdIQAAJCEAACQhAAAmIQAAJiEAACghAAAoIQAAKiEAAC0hAAAwIQAAMyEAAD4hAAA/IQAARSEAAEUhAABgIQAAbyEAAIMhAACDIQAAtiQAAM8kAAAALAAALywAAGAsAABgLAAAYiwAAGQsAABnLAAAZywAAGksAABpLAAAaywAAGssAABtLAAAcCwAAHIsAAByLAAAdSwAAHUsAAB+LAAAgCwAAIIsAACCLAAAhCwAAIQsAACGLAAAhiwAAIgsAACILAAAiiwAAIosAACMLAAAjCwAAI4sAACOLAAAkCwAAJAsAACSLAAAkiwAAJQsAACULAAAliwAAJYsAACYLAAAmCwAAJosAACaLAAAnCwAAJwsAACeLAAAniwAAKAsAACgLAAAoiwAAKIsAACkLAAApCwAAKYsAACmLAAAqCwAAKgsAACqLAAAqiwAAKwsAACsLAAAriwAAK4sAACwLAAAsCwAALIsAACyLAAAtCwAALQsAAC2LAAAtiwAALgsAAC4LAAAuiwAALosAAC8LAAAvCwAAL4sAAC+LAAAwCwAAMAsAADCLAAAwiwAAMQsAADELAAAxiwAAMYsAADILAAAyCwAAMosAADKLAAAzCwAAMwsAADOLAAAziwAANAsAADQLAAA0iwAANIsAADULAAA1CwAANYsAADWLAAA2CwAANgsAADaLAAA2iwAANwsAADcLAAA3iwAAN4sAADgLAAA4CwAAOIsAADiLAAA6ywAAOssAADtLAAA7SwAAPIsAADyLAAAQKYAAECmAABCpgAAQqYAAESmAABEpgAARqYAAEamAABIpgAASKYAAEqmAABKpgAATKYAAEymAABOpgAATqYAAFCmAABQpgAAUqYAAFKmAABUpgAAVKYAAFamAABWpgAAWKYAAFimAABapgAAWqYAAFymAABcpgAAXqYAAF6mAABgpgAAYKYAAGKmAABipgAAZKYAAGSmAABmpgAAZqYAAGimAABopgAAaqYAAGqmAABspgAAbKYAAICmAACApgAAgqYAAIKmAACEpgAAhKYAAIamAACGpgAAiKYAAIimAACKpgAAiqYAAIymAACMpgAAjqYAAI6mAACQpgAAkKYAAJKmAACSpgAAlKYAAJSmAACWpgAAlqYAAJimAACYpgAAmqYAAJqmAAAipwAAIqcAACSnAAAkpwAAJqcAACanAAAopwAAKKcAACqnAAAqpwAALKcAACynAAAupwAALqcAADKnAAAypwAANKcAADSnAAA2pwAANqcAADinAAA4pwAAOqcAADqnAAA8pwAAPKcAAD6nAAA+pwAAQKcAAECnAABCpwAAQqcAAESnAABEpwAARqcAAEanAABIpwAASKcAAEqnAABKpwAATKcAAEynAABOpwAATqcAAFCnAABQpwAAUqcAAFKnAABUpwAAVKcAAFanAABWpwAAWKcAAFinAABapwAAWqcAAFynAABcpwAAXqcAAF6nAABgpwAAYKcAAGKnAABipwAAZKcAAGSnAABmpwAAZqcAAGinAABopwAAaqcAAGqnAABspwAAbKcAAG6nAABupwAAeacAAHmnAAB7pwAAe6cAAH2nAAB+pwAAgKcAAICnAACCpwAAgqcAAISnAACEpwAAhqcAAIanAACLpwAAi6cAAI2nAACNpwAAkKcAAJCnAACSpwAAkqcAAJanAACWpwAAmKcAAJinAACapwAAmqcAAJynAACcpwAAnqcAAJ6nAACgpwAAoKcAAKKnAACipwAApKcAAKSnAACmpwAApqcAAKinAACopwAAqqcAAK6nAACwpwAAtKcAALanAAC2pwAAuKcAALinAAC6pwAAuqcAALynAAC8pwAAvqcAAL6nAADApwAAwKcAAMKnAADCpwAAxKcAAMenAADJpwAAyacAAMunAADMpwAA0KcAANCnAADWpwAA1qcAANinAADYpwAA2qcAANqnAADcpwAA3KcAAPWnAAD1pwAAIf8AADr/AAAABAEAJwQBALAEAQDTBAEAcAUBAHoFAQB8BQEAigUBAIwFAQCSBQEAlAUBAJUFAQCADAEAsgwBAFANAQBlDQEAoBgBAL8YAQBAbgEAX24BAADUAQAZ1AEANNQBAE3UAQBo1AEAgdQBAJzUAQCc1AEAntQBAJ/UAQCi1AEAotQBAKXUAQCm1AEAqdQBAKzUAQCu1AEAtdQBANDUAQDp1AEABNUBAAXVAQAH1QEACtUBAA3VAQAU1QEAFtUBABzVAQA41QEAOdUBADvVAQA+1QEAQNUBAETVAQBG1QEARtUBAErVAQBQ1QEAbNUBAIXVAQCg1QEAudUBANTVAQDt1QEACNYBACHWAQA81gEAVdYBAHDWAQCJ1gEAqNYBAMDWAQDi1gEA+tYBABzXAQA01wEAVtcBAG7XAQCQ1wEAqNcBAMrXAQDK1wEAAOkBACHpAQAw8QEASfEBAFDxAQBp8QEAcPEBAInxAQDmTyIABQAAABR4JQAEAAAAoioiAAIAAABkKSUAAQAAAPJPIgAFAAAANHglAC0AAADYKiIABgAAAJx5JQBEAQAACCIiAAYAAAC8gyUADwAAAAQrIgACAAAA1DUlAAEAAAAFUCIABQAAADSEJQChAgAAClAiAAcAAAA8mSUATgAAAP5PIgAHAAAArJslADECAAAfUCIACQAAADStJQAUAAAAP1AiAAUAAADUrSUAVAAAADNQIgADAAAAdLAlAAIAAAA7UCIAAgAAAISwJQAJAAAARlAiAAUAAADMsCUAkQIAACTdIQBmAAAAeQMAABwAAAAk3SEAZgAAAKoDAAAtAAAAJN0hAGYAAACsAwAACQAAACTdIQBmAAAArQMAAAkAAAAk3SEAZgAAALADAAAPAAAAJN0hAGYAAACiAwAADQAAACTdIQBmAAAAnwMAAA0AAAAyBgAADAAAAAQAAAA6BgAAOwYAAH8GAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yZWdleC1zeW50YXgtMC44LjUvc3JjL3V0ZjgucnNpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBpbnZhbGlkIGVuY29kZWQgbGVuZ3RoOiAAAAAfxyUAQgAAALzGJQBjAAAAgwAAABIAAAC8xiUAYwAAALQBAAAtAAAAvMYlAGMAAAC1AQAAKwAAALzGJQBjAAAAuAEAAAkAAAAAAAAAAAAAAAEAAABqBwAAVHJ5RnJvbUNoYXJFcnJvcmV4Y2VlZGVkIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjYXB0dXJpbmcgZ3JvdXBzICgAAADMxyUAMQAAADyxKAABAAAAaW52YWxpZCBlc2NhcGUgc2VxdWVuY2UgZm91bmQgaW4gY2hhcmFjdGVyIGNsYXNzEMglADAAAABpbnZhbGlkIGNoYXJhY3RlciBjbGFzcyByYW5nZSwgdGhlIHN0YXJ0IG11c3QgYmUgPD0gdGhlIGVuZABIyCUAOwAAAGludmFsaWQgcmFuZ2UgYm91bmRhcnksIG11c3QgYmUgYSBsaXRlcmFsAAAAjMglACkAAAB1bmNsb3NlZCBjaGFyYWN0ZXIgY2xhc3PAyCUAGAAAAGRlY2ltYWwgbGl0ZXJhbCBlbXB0eQAAAODIJQAVAAAAZGVjaW1hbCBsaXRlcmFsIGludmFsaWQAAMklABcAAABoZXhhZGVjaW1hbCBsaXRlcmFsIGVtcHR5AAAAIMklABkAAABoZXhhZGVjaW1hbCBsaXRlcmFsIGlzIG5vdCBhIFVuaWNvZGUgc2NhbGFyIHZhbHVlAAAARMklADEAAABpbnZhbGlkIGhleGFkZWNpbWFsIGRpZ2l0AAAAgMklABkAAABpbmNvbXBsZXRlIGVzY2FwZSBzZXF1ZW5jZSwgcmVhY2hlZCBlbmQgb2YgcGF0dGVybiBwcmVtYXR1cmVseQAApMklAD4AAAB1bnJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNl7MklABwAAABkYW5nbGluZyBmbGFnIG5lZ2F0aW9uIG9wZXJhdG9yABDKJQAfAAAAZHVwbGljYXRlIGZsYWcAADjKJQAOAAAAZmxhZyBuZWdhdGlvbiBvcGVyYXRvciByZXBlYXRlZABQyiUAHwAAAGV4cGVjdGVkIGZsYWcgYnV0IGdvdCBlbmQgb2YgcmVnZXgAAHjKJQAiAAAAdW5yZWNvZ25pemVkIGZsYWcAAACkyiUAEQAAAGR1cGxpY2F0ZSBjYXB0dXJlIGdyb3VwIG5hbWXAyiUAHAAAAGVtcHR5IGNhcHR1cmUgZ3JvdXAgbmFtZeTKJQAYAAAAaW52YWxpZCBjYXB0dXJlIGdyb3VwIGNoYXJhY3RlcgAEyyUAHwAAAHVuY2xvc2VkIGNhcHR1cmUgZ3JvdXAgbmFtZQAsyyUAGwAAAHVuY2xvc2VkIGdyb3VwAABQyyUADgAAAHVub3BlbmVkIGdyb3VwAABoyyUADgAAAGV4Y2VlZCB0aGUgbWF4aW11bSBudW1iZXIgb2YgbmVzdGVkIHBhcmVudGhlc2VzL2JyYWNrZXRzICgAAIDLJQA6AAAAPLEoAAEAAABpbnZhbGlkIHJlcGV0aXRpb24gY291bnQgcmFuZ2UsIHRoZSBzdGFydCBtdXN0IGJlIDw9IHRoZSBlbmTMyyUAPAAAAHJlcGV0aXRpb24gcXVhbnRpZmllciBleHBlY3RzIGEgdmFsaWQgZGVjaW1hbAAAABDMJQAtAAAAdW5jbG9zZWQgY291bnRlZCByZXBldGl0aW9uAEjMJQAbAAAAcmVwZXRpdGlvbiBvcGVyYXRvciBtaXNzaW5nIGV4cHJlc3Npb24AAGzMJQAmAAAAc3BlY2lhbCB3b3JkIGJvdW5kYXJ5IGFzc2VydGlvbiBpcyBlaXRoZXIgdW5jbG9zZWQgb3IgY29udGFpbnMgYW4gaW52YWxpZCBjaGFyYWN0ZXIAnMwlAFMAAAB1bnJlY29nbml6ZWQgc3BlY2lhbCB3b3JkIGJvdW5kYXJ5IGFzc2VydGlvbiwgdmFsaWQgY2hvaWNlcyBhcmU6IHN0YXJ0LCBlbmQsIHN0YXJ0LWhhbGYgb3IgZW5kLWhhbGYA+MwlAGMAAABmb3VuZCBlaXRoZXIgdGhlIGJlZ2lubmluZyBvZiBhIHNwZWNpYWwgd29yZCBib3VuZGFyeSBvciBhIGJvdW5kZWQgcmVwZXRpdGlvbiBvbiBhIFxiIHdpdGggYW4gb3BlbmluZyBicmFjZSwgYnV0IG5vIGNsb3NpbmcgYnJhY2UAAABkzSUAgQAAAGludmFsaWQgVW5pY29kZSBjaGFyYWN0ZXIgY2xhc3MA8M0lAB8AAABiYWNrcmVmZXJlbmNlcyBhcmUgbm90IHN1cHBvcnRlZBjOJQAgAAAAbG9vay1hcm91bmQsIGluY2x1ZGluZyBsb29rLWFoZWFkIGFuZCBsb29rLWJlaGluZCwgaXMgbm90IHN1cHBvcnRlZABAziUAQwAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JlZ2V4LXN5bnRheC0wLjguNS9zcmMvYXN0L21vZC5ycwAAjM4lAGYAAAB/AgAAIgAAAIzOJQBmAAAAmAIAACIAAABhbG51bWFzY2lpYmxhbmtjbnRybGRpZ2l0Z3JhcGhsb3dlcnByaW50cHVuY3RzcGFjZXVwcGVyeGRpZ2l0AAAAjM4lAGYAAADzBAAAIwAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JlZ2V4LXN5bnRheC0wLjguNS9zcmMvaGlyL21vZC5ycwAAZM8lAGYAAAC/BAAALgAAAGTPJQBmAAAAwAQAACoAAAAyBgAADAAAAAQAAAA6BgAAawcAAH8GAAAAAAAAAAAAAAEAAAA2BgAAcmVnZXggcGFyc2UgZXJyb3I6CgAU0CUAEwAAAGVycm9yOiAAMNAlAAcAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yZWdleC1zeW50YXgtMC44LjUvc3JjL2Vycm9yLnJzAQAAAAAAAACkRSgAAQAAAG9uIGxpbmUgIChjb2x1bW4g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ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OTIGAAAMAAAABAAAADoGAAB2BwAAdQcAAGludmFsaWQgdHlwZTogLCBleHBlY3RlZCAAAAB4MyYADgAAAIYzJgALAAAAAAAAAAAAAAABAAAAdwcAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRlLXdhc20tYmluZGdlbi0wLjYuNS9zcmMvbGliLnJztDMmAGgAAAA1AAAADgAAAAAAAAAAAAAAAQAAAFoGAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zbWFydHN0cmluZy0xLjAuMS9zcmMvaW5saW5lLnJzPDQmAGQAAAArAAAAKwAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NtYXJ0c3RyaW5nLTEuMC4xL3NyYy9ib3hlZC5ycwCwNCYAYwAAAEEAAAAOAAAAsDQmAGMAAAB2AAAAJAAAAAAAAAAEAAAABAAAAHgHAAAvcnVzdC9kZXBzL2RsbWFsbG9jLTAuMi42L3NyYy9kbG1hbGxvYy5yc2Fzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQARDUmACkAAACoBAAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplIDw9IHNpemUgKyBtYXhfb3ZlcmhlYWQAAEQ1JgApAAAArgQAAA0AAAB1c2Ugb2Ygc3RkOjp0aHJlYWQ6OmN1cnJlbnQoKSBpcyBub3QgcG9zc2libGUgYWZ0ZXIgdGhlIHRocmVhZCdzCiAgICAgICAgIGxvY2FsIGRhdGEgaGFzIGJlZW4gZGVzdHJveWVkAOw1JgBnAAAAc3RkL3NyYy90aHJlYWQvY3VycmVudC5ycwAAAFw2JgAZAAAA7QAAAAkAAABBY2Nlc3NFcnJvcnN0ZC9zcmMvdGhyZWFkL21vZC5yc2ZhaWxlZCB0byBnZW5lcmF0ZSB1bmlxdWUgdGhyZWFkIElEOiBiaXRzcGFjZSBleGhhdXN0ZWQAqDYmADcAAACTNiYAFQAAAJMEAAANAAAAc3RkL3NyYy9iYWNrdHJhY2UucnN1bnN1cHBvcnRlZCBiYWNrdHJhY2VkaXNhYmxlZCBiYWNrdHJhY2UA+DYmABQAAACKAQAAHQAAAHkHAAAQAAAABAAAAHoHAAB7BwAAZW50aXR5IG5vdCBmb3VuZHBlcm1pc3Npb24gZGVuaWVkY29ubmVjdGlvbiByZWZ1c2VkY29ubmVjdGlvbiByZXNldGhvc3QgdW5yZWFjaGFibGVuZXR3b3JrIHVucmVhY2hhYmxlY29ubmVjdGlvbiBhYm9ydGVkbm90IGNvbm5lY3RlZGFkZHJlc3MgaW4gdXNlYWRkcmVzcyBub3QgYXZhaWxhYmxlbmV0d29yayBkb3duYnJva2VuIHBpcGVlbnRpdHkgYWxyZWFkeSBleGlzdHNvcGVyYXRpb24gd291bGQgYmxvY2tub3QgYSBkaXJlY3RvcnlpcyBhIGRpcmVjdG9yeWRpcmVjdG9yeSBub3QgZW1wdHlyZWFkLW9ubHkgZmlsZXN5c3RlbSBvciBzdG9yYWdlIG1lZGl1bWZpbGVzeXN0ZW0gbG9vcCBvciBpbmRpcmVjdGlvbiBsaW1pdCAoZS5nLiBzeW1saW5rIGxvb3Apc3RhbGUgbmV0d29yayBmaWxlIGhhbmRsZWludmFsaWQgaW5wdXQgcGFyYW1ldGVyaW52YWxpZCBkYXRhdGltZWQgb3V0d3JpdGUgemVyb25vIHN0b3JhZ2Ugc3BhY2VzZWVrIG9uIHVuc2Vla2FibGUgZmlsZWZpbGVzeXN0ZW0gcXVvdGEgZXhjZWVkZWRmaWxlIHRvbyBsYXJnZXJlc291cmNlIGJ1c3lleGVjdXRhYmxlIGZpbGUgYnVzeWRlYWRsb2NrY3Jvc3MtZGV2aWNlIGxpbmsgb3IgcmVuYW1ldG9vIG1hbnkgbGlua3NpbnZhbGlkIGZpbGVuYW1lYXJndW1lbnQgbGlzdCB0b28gbG9uZ29wZXJhdGlvbiBpbnRlcnJ1cHRlZHVuc3VwcG9ydGVkdW5leHBlY3RlZCBlbmQgb2YgZmlsZW91dCBvZiBtZW1vcnlpbiBwcm9ncmVzc290aGVyIGVycm9ydW5jYXRlZ29yaXplZCBlcnJvck9zY29kZUtpbmRDdXN0b20gKG9zIGVycm9yIAABAAAAAAAAAGA6JgALAAAAPLEoAAEAAAA6IHN0ZC9zcmMvcGF0aC5ycwAAAIY6JgAPAAAA0gIAACEAAACGOiYADwAAAPkCAAAsAAAAhjomAA8AAAD7AgAAJgAAAIY6JgAPAAAACAMAACcAAACGOiYADwAAABQDAAAnAAAAhjomAA8AAAB+AwAAKQAAAIY6JgAPAAAAfwMAACsAAACGOiYADwAAAJQDAAAvAAAAhjomAA8AAACMAwAALwAAAIY6JgAPAAAAmgMAACsAAABzdGQvc3JjL3N5bmMvbGF6eV9sb2NrLnJzAAAAODsmABkAAADQAAAAEwAAAHN0ZC9zcmMvc3lzL3N5bmMvbXV0ZXgvbm9fdGhyZWFkcy5yc2Q7JgAkAAAAFAAAAAkAAABzdGQvc3JjL3N5bmMvb25jZS5yc5g7JgAUAAAA2QAAABQAAAA8dW5rbm93bj7vv71zdGQvc3JjLy4uLy4uL2JhY2t0cmFjZS9zcmMvc3ltYm9saXplL21vZC5yc8g7JgAsAAAAZwEAADAAAAABAAAAAAAAAIQ6JgACAAAAIC0gAAEAAAAAAAAAFDwmAAMAAAAgICAgICAgICAgICAgICAgICAgYXQgTm90Rm91bmRQZXJtaXNzaW9uRGVuaWVkQ29ubmVjdGlvblJlZnVzZWRDb25uZWN0aW9uUmVzZXRIb3N0VW5yZWFjaGFibGVOZXR3b3JrVW5yZWFjaGFibGVDb25uZWN0aW9uQWJvcnRlZE5vdENvbm5lY3RlZEFkZHJJblVzZUFkZHJOb3RBdmFpbGFibGVOZXR3b3JrRG93bkJyb2tlblBpcGVBbHJlYWR5RXhpc3RzV291bGRCbG9ja05vdEFEaXJlY3RvcnlJc0FEaXJlY3RvcnlEaXJlY3RvcnlOb3RFbXB0eVJlYWRPbmx5RmlsZXN5c3RlbUZpbGVzeXN0ZW1Mb29wU3RhbGVOZXR3b3JrRmlsZUhhbmRsZUludmFsaWRJbnB1dEludmFsaWREYXRhVGltZWRPdXRXcml0ZVplcm9TdG9yYWdlRnVsbE5vdFNlZWthYmxlRmlsZXN5c3RlbVF1b3RhRXhjZWVkZWRGaWxlVG9vTGFyZ2VSZXNvdXJjZUJ1c3lFeGVjdXRhYmxlRmlsZUJ1c3lEZWFkbG9ja0Nyb3NzZXNEZXZpY2VzVG9vTWFueUxpbmtzSW52YWxpZEZpbGVuYW1lQXJndW1lbnRMaXN0VG9vTG9uZ0ludGVycnVwdGVkVW5zdXBwb3J0ZWRVbmV4cGVjdGVkRW9mT3V0T2ZNZW1vcnlJblByb2dyZXNzT3RoZXJVbmNhdGVnb3JpemVkb3BlcmF0aW9uIHN1Y2Nlc3NmdWxPbmNlIGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWR6PiYAKgAAAG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1heSBub3QgYmUgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5rD4mADgAAAAQAAAAEQAAABIAAAAQAAAAEAAAABMAAAASAAAADQAAAA4AAAAVAAAADAAAAAsAAAAVAAAAFQAAAA8AAAAOAAAAEwAAACYAAAA4AAAAGQAAABcAAAAMAAAACQAAAAoAAAAQAAAAFwAAABkAAAAOAAAADQAAABQAAAAIAAAAGwAAAA4AAAAQAAAAFgAAABUAAAALAAAAFgAAAA0AAAALAAAACwAAABMAAABYNyYAaDcmAHk3JgCLNyYAmzcmAKs3JgC+NyYA0DcmAN03JgDrNyYAADgmAAw4JgAXOCYALDgmAEE4JgBQOCYAXjgmAHE4JgCXOCYAzzgmAOg4JgD/OCYACzkmABQ5JgAeOSYALjkmAEU5JgBeOSYAbDkmAHk5JgCNOSYAlTkmALA5JgC+OSYAzjkmAOQ5JgD5OSYABDomABo6JgAnOiYAMjomAD06JgAIAAAAEAAAABEAAAAPAAAADwAAABIAAAARAAAADAAAAAkAAAAQAAAACwAAAAoAAAANAAAACgAAAA0AAAAMAAAAEQAAABIAAAAOAAAAFgAAAAwAAAALAAAACAAAAAkAAAALAAAACwAAABcAAAAMAAAADAAAABIAAAAIAAAADgAAAAwAAAAPAAAAEwAAAAsAAAALAAAADQAAAAsAAAAKAAAABQAAAA0AAAA+PCYARjwmAFY8JgBnPCYAdjwmAIU8JgCXPCYAqDwmALQ8JgC9PCYAzTwmANg8JgDiPCYA7zwmAPk8JgAGPSYAEj0mACM9JgA1PSYAQz0mAFk9JgBlPSYAcD0mAHg9JgCBPSYAjD0mAJc9JgCuPSYAuj0mAMY9JgDYPSYA4D0mAO49JgD6PSYACT4mABw+JgAnPiYAMj4mAD8+JgBKPiYAVD4mAFk+JgAyBgAADAAAAAQAAAA6BgAAdgcAADwGAAAAAAAAAAAAAAEAAAA2BgAAAAAAAAQAAAAEAAAAfAcAAAAAAAAAAAAAAQAAAH4HAAB/BwAAgAcAAAFTKABoAAAAJQEAACcAAAABUygAaAAAAEoBAAAxAAAAOiBicG9zID0gOyBsaW5lYnBvcyA9IAAAAQAAAAAAAAD8QSYACQAAAAVCJgANAAAAxFUoAAEAAAABUygAaAAAAEsBAAARAAAAAVMoAGgAAABhAQAAGQAAAAFTKABoAAAAgwEAAEYAAABtYXAuc3RhcnRfcG9zID0gOyB0b3RhbF9leHRyYV9ieXRlcyA9IDsgYnBvcyA9IABkQiYAEAAAAHRCJgAWAAAAikImAAkAAAABUygAaAAAAOwDAAAJAAAAAVMoAGgAAAAZBAAAEAAAAAFTKABoAAAAygQAADAAAAABUygAaAAAALYEAAAwAAAAAVMoAGgAAACiBQAAEAAAAG5vIGVycm9ycyBlbmNvdW50ZXJlZCBldmVuIHRob3VnaCBgZGVsYXlfc3Bhbl9idWdgIGlzc3VlZAAAAPxCJgA5AAAAUkomAGgAAACaAQAAEQAAAGVuY291bnRlcmVkIGVycm9yIHdpdGggYC1aIHRyZWF0X2Vycl9hc19idWcAUEMmACsAAABSSiYAaAAAAGcCAAANAAAABQAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3N3Y19jb21tb24tMTIuMC4xL3NyYy9jb21tZW50cy5ycwAAmEMmAGYAAACnAQAAFgAAAJhDJgBmAAAArAEAAA4AAACYQyYAZgAAALMBAAAnAAAAmEMmAGYAAAC/AQAAMgAAAJhDJgBmAAAAxwEAABYAAACYQyYAZgAAAMsBAAAWAAAAmEMmAGYAAADPAQAAFwAAAJhDJgBmAAAA1AEAAA4AAACYQyYAZgAAANsBAAAoAAAAmEMmAGYAAADnAQAAMwAAAJhDJgBmAAAA7wEAABcAAACYQyYAZgAAAPMBAAAXAAAAmEMmAGYAAAD5AQAALAAAAGNhbm5vdCBhZGQgcHVyZSBjb21tZW50IHRvIHplcm8gcG9zaXRpb27QRCYAKAAAAJhDJgBmAAAA9wEAAAkAAAAjX19AX18AAJhDJgBmAAAAMQIAAC0AAACYQyYAZgAAAGUCAAAuAAAALMImAHAAAADOAAAAHQAAACzCJgBwAAAAdAEAAC0AAAAAAAAABAAAAAQAAACCBwAAAQAAAAAAAACgXCgAAgAAACBtYWNyb3M+g1UoAAEAAAB4RSYACAAAADxxdW90ZSBleHBhbnNpb24+AAAAkEUmABEAAAA8YW5vbj4AAKxFJgAGAAAAPG1hY3JvIGV4cGFuc2lvbj4AAAC8RSYAEQAAADxwcm9jLW1hY3JvIHNvdXJjZSBjb2RlPthFJgAYAAAAg1UoAAEAAACCVSgAAQAAAGFzc2VydGlvbiBmYWlsZWQ6IGxpbmVfaW5kZXggPCBhbmFseXNpcy5saW5lcy5sZW4oKSBhcyBpc2l6ZZhGJgBoAAAAogMAAAkAAAAEAAAAUHJpbWFyeVNwYW5MYWJlbEJ5dGVQb3MAAAAAAAwAAAAEAAAAgwcAAIQHAAAAAAAADAAAAAQAAACFBwAAhgcAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3N3Y19jb21tb24tMTIuMC4xL3NyYy9zeW50YXhfcG9zLnJzL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvdW5pY29kZS13aWR0aC0wLjEuMTQvc3JjL3RhYmxlcy5ycwAARyYAZwAAAJEAAAAVAAAAAEcmAGcAAACXAAAAGQAAAEVycm9yIGNvbnN0cnVjdGVkIGJ1dCBub3QgZW1pdHRlZC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3N3Y19jb21tb24tMTIuMC4xL3NyYy9lcnJvcnMvZGlhZ25vc3RpY19idWlsZGVyLnJzqUcmAHcAAABdAQAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IHNvdXJjZV9maWxlX2VuZCA+PSBsYXN0X2xpbmVfc3RhcnQvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zd2NfY29tbW9uLTEyLjAuMS9zcmMvc3ludGF4X3Bvcy9hbmFseXplX3NvdXJjZV9maWxlLnJzZEgmAHwAAAAqAAAACQAAAGRIJgB8AAAAagAAABgAAABkSCYAfAAAAGoAAAAtAAAAb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybRBJJgAoAAAAJAAAAAAAAAACAAAAOEkmAAAAAAAAAAAAAQAAAHkGAAAvcnVzdGMvOTBiMzVhNjIzOWMzZDhiZGFiYzUzMGE2YTA4MTZmN2ZmODlhMGFhZi9saWJyYXJ5L3N0ZC9zcmMvcGF0aC5ycwBgSSYARwAAAJgMAAAbAAAAYEkmAEcAAAC7DAAAIQAAAGBJJgBHAAAArgwAACIAAABNZXNzYWdlU3ViRGlhZ25vc3RpY2xldmVscmVuZGVyX3NwYW5CdWdGYXRhbFBoYXNlRmF0YWxXYXJuaW5nTm90ZUhlbHBDYW5jZWxsZWRGYWlsdXJlTm90ZU11bHRpU3BhbnByaW1hcnlfc3BhbnNzcGFuX2xhYmVscy9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3N3Y19jb21tb24tMTIuMC4xL3NyYy9lcnJvcnMvbW9kLnJzAABSSiYAaAAAAFoDAAAfAAAALMImAHAAAABrAQAADQAAAAAAAAAAAAAAAQAAAIcHAACIBwAAiQcAAGFzc2VydGlvbiBmYWlsZWQ6IHN0YXJ0IDw9IGVuZC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3N3Y19jb21tb24tMTIuMC4xL3NyYy9pbnB1dC5ycwAAABJLJgBjAAAAHwAAAAkAAABNYWluSGVhZGVyTXNnSGVhZGVyTXNnTGluZUFuZENvbHVtbkxpbmVOdW1iZXJRdW90YXRpb25VbmRlcmxpbmVQcmltYXJ5VW5k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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO4HAADvBwAA8AcAAPEHAADyBwAA8wcAAO8HAAD0BwAA9QcAAPYHAAD3BwAA+AcAAPkHAAD6BwAA+wcAAPwHAAD9BwAA/QcAAP0HAAD9BwAA/QcAAP0HAAD9BwAA/QcAAP0HAAD+BwAA/wcAAAAIAAABCAAAAggAAAMIAAAECAAA8QcAAPEHAADxBwAA8QcAAPEHAADxBwAA8QcAAPEHAADxBwAA8QcAAPEHAADxBwAA8QcAAPEHAADxBwAA8QcAAPEHAADxBwAA8QcAAPEHAADxBwAA8QcAAPEHAADxBwAA8QcAAPEHAAAFCAAA8QcAAAYIAAAHCAAA8QcAAAgIAAAJCAAACggAAAsIAAAMCAAADQgAAA4IAAAPCAAA8QcAABAIAADxBwAAEQgAABIIAAATCAAAFAgAABUIAAAWCAAA8QcAABcIAAAYCAAAGQgAABoIAAAbCAAAHAgAAPEHAAAdCAAA8QcAAB4IAAAfCAAAIAgAACEIAAAiCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAjCAAAIwgAACMIAAAAAAAAAAAAAAEAAAAkCAAAJQgAACUIAAAAAAAAAAAAAAEAAAAmCAAAJwgAACcIAAAAAAAAAAAAAAEAAAAoCAAAKQgAACkIAAAAAAAAAAAAAAEAAAAqCAAAKwgAACsIAAAAAAAAAAAAAAEAAAAsCAAALQgAAC0IAAAAAAAAAAAAAAEAAAAuCAAALwgAAC8IAAAAAAAAAAAAAAEAAAAwCAAAMQgAADEIAAAAAAAAAAAAAAEAAAAyCAAAMwgAADMIAAAAAAAAAAAAAAEAAAA0CAAANQgAADUIAAAAAAAAAAAAAAEAAAA2CAAANwgAADcIAAAAAAAAAAAAAAEAAAA4CAAAOQgAADkIAAAAAAAAAAAAAAEAAAA6CAAAOwgAADsIAAAAAAAAAAAAAAEAAAA8CAAAPQgAAD0IAAAAAAAAAAAAAAEAAAA+CAAAPwgAAD8IAAAAAAAAAAAAAAEAAABACAAAQQgAAEEIAAAAAAAAAAAAAAEAAABCCAAAQwgAAEMIAAAAAAAAAAAAAAEAAABECAAARQgAAEUIAAAAAAAAAAAAAAEAAABGCAAARwgAAEcIAAAAAAAAAAAAAAEAAABICAAASQgAAEkIAAAAAAAAAAAAAAEAAABKCAAASwgAAEsIAAAAAAAAAAAAAAEAAABMCAAATQgAAE0IAABwcCYAZwAAAI0CAAASAAAAcHAmAGcAAAD9AgAAEgAAAHBwJgBnAAAAiwMAABIAAACEQigAAgAAAOxSKAABAAAADVYoAAEAAAB8VSgAAQAAAH1VKAADAAAA61UoAAEAAADtVSgAAQAAADyxKAABAAAA32goAAEAAADxaCgAAQAAAOBoKAABAAAA0GgoAAEAAADEVSgAAQAAAOFoKAABAAAA0UIoAAEAAADwaCgAAQAAAORCKAACAAAA6lUoAAEAAAB7PygAAgAAAH0/KAACAAAATj8oAAEAAACImyYAEQAAAD4gKGpzeCB0YWcgZW5kKQD4aiYADwAAAP9SKAACAAAAbWVzc2FnZXF1b3RhbXBhcG9zbHRndG5ic3BpZXhjbGNlbnRwb3VuZGN1cnJlbnllbmJydmJhcnNlY3R1bWxjb3B5b3JkZmxhcXVvbm90c2h5cmVnbWFjcmRlZ3BsdXNtbnN1cDJzdXAzYWN1dGVtaWNyb3BhcmFtaWRkb3RjZWRpbHN1cDFvcmRtcmFxdW9mcmFjMTRmcmFjMTJmcmFjMzRpcXVlc3RBZ3JhdmVBYWN1dGVBY2lyY0F0aWxkZUF1bWxBcmluZ0FFbGlnQ2NlZGlsRWdyYXZlRWFjdXRlRWNpcmNFdW1sSWdyYXZlSWFjdXRlSWNpcmNJdW1sRVRITnRpbGRlT2dyYXZlT2FjdXRlT2NpcmNPdGlsZGVPdW1sdGltZXNPc2xhc2hVZ3JhdmVVYWN1dGVVY2lyY1V1bWxZYWN1dGVUSE9STnN6bGlnYWdyYXZlYWFjdXRlYWNpcmNhdGlsZGVhdW1sYXJpbmdhZWxpZ2NjZWRpbGVncmF2ZWVhY3V0ZWVjaXJjZXVtbGlncmF2ZWlhY3V0ZWljaXJjaXVtbGV0aG50aWxkZW9ncmF2ZW9hY3V0ZW9jaXJjb3RpbGRlb3VtbGRpdmlkZW9zbGFzaHVncmF2ZXVhY3V0ZXVjaXJjdXVtbHlhY3V0ZXRob3JueXVtbE9FbGlnb2VsaWdTY2Fyb25zY2Fyb25ZdW1sZm5vZmNpcmN0aWxkZUFscGhhQmV0YUdhbW1hRGVsdGFFcHNpbG9uWmV0YUV0YVRoZXRhSW90YUthcHBhTGFtYmRhTXVOdVhpT21pY3JvblBpUmhvU2lnbWFUYXVVcHNpbG9uUGhpQ2hpUHNpT21lZ2FhbHBoYWJldGFnYW1tYWRlbHRhZXBzaWxvbnpldGFldGF0aGV0YWlvdGFrYXBwYWxhbWJkYW11bnV4aW9taWNyb25waXJob3NpZ21hZnNpZ21hdGF1dXBzaWxvbnBoaWNoaXBzaW9tZWdhdGhldGFzeW11cHNpaHBpdmVuc3BlbXNwdGhpbnNwenduanp3amxybXJsbW5kYXNobWRhc2hsc3F1b3JzcXVvc2JxdW9sZHF1b3JkcXVvYmRxdW9kYWdnZXJEYWdnZXJidWxsaGVsbGlwcGVybWlscHJpbWVQcmltZWxzYXF1b3JzYXF1b29saW5lZnJhc2xldXJvaW1hZ2V3ZWllcnByZWFsdHJhZGVhbGVmc3ltbGFycnVhcnJyYXJyZGFycmhhcnJjcmFycmxBcnJ1QXJyckFycmRBcnJoQXJyZm9yYWxscGFydGV4aXN0ZW1wdHluYWJsYWlzaW5ub3Rpbm5pcHJvZHN1bW1pbnVzbG93YXN0cmFkaWNpbmZpbmFuZ2FuZG9yY2FwY3VwaW50dGhlcmU0c2ltY29uZ2FzeW1wbmVlcXVpdmxlZ2VzdWJzdXBuc3Vic3ViZXN1cGVvcGx1c290aW1lc3BlcnBzZG90bGNlaWxyY2VpbGxmbG9vcnJmbG9vcmxhbmdyYW5nbG96c3BhZGVzY2x1YnNoZWFydHNkaWFtcwAAAAAAAgAAAAAAAAACHQAAAAAAAAAAAAAAAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc3djX2VjbWFfbGV4ZXItMTUuMC4xL3NyYy90b2tlbi5ycwBwcCYAZwAAAM4CAAASAAAAyL4mAGEAAAAuAgAADgAAAAAAAAAIAAAABAAAAH4IAAAAAAAABAAAAAQAAACgAAAAAAAAAAQAAAAEAAAAYAEAAAAAAAABAAAAAQAAABAAAAB/CAAAIAAAAAgAAAAXAgAAgAgAAAQAAAAEAAAAvgEAAIEIAAAEAAAABAAAAAACAADMBwAADAAAAAQAAAA3AgAAAAAAAAEAAAABAAAA2gcAAIIIAAAEAAAABAAAAIMIAAAAAAAAAQAAAAEAAACECAAAhQgAAAwAAAAEAAAAhggAAIcIAAAYAAAABAAAANgHAACICAAAEAAAAAgAAACJCAAAiggAACAAAAAIAAAAiwgAAIwIAAAEAAAABAAAAJoBAACNCAAADAAAAAQAAACOCAAAjwgAAAQAAAAEAAAAkAgAAAAAAAAEAAAABAAAADACAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAUAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAVAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAUAAAABwAAAAAAAAAAAAAAAAAAAAAAAADsryYAdgAAAHYAAAAgAAAAFQAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAB8VSgAAQAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3N3Y19lY21hX2xleGVyLTE1LjAuMS9zcmMvY29tbW9uL3BhcnNlci91dGlsLnJzAQAAAAAAAADwaCgAAQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IFVzaW5nIGlzIG5vdCBhIHZhbGlkIGRlY2xhcmF0aW9uIGZvciBgZGVjbGFyZWAga2V5d29yZNRzJgBgAAAAUHMmAHQAAABVAAAAHAAAAFVuZXhwZWN0ZWQgZW9mL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc3djX2VjbWFfbGV4ZXItMTUuMC4xL3NyYy9lcnJvci5yc0RlY2xhcmF0aW9uIGlzIG5vdCBhbGxvd2VkVXNpbmcgZGVjbGFyYXRpb24gaXMgbm90IGFsbG93ZWRVc2luZyBkZWNsYXJhdGlvbiBpcyBub3QgYWxsb3dlZCBpbiBmb3ItaW4gbG9vcFVzaW5nIGRlY2xhcmF0aW9uIGlzIG5vdCBlbmFibGVkLiBTZXQganNjLnBhcnNlci5leHBsaWNpdFJlc291cmNlTWFuYWdlbWVudCB0byB0cnVlVXNpbmcgZGVjbGFyYXRpb24gb25seSBhbGxvd3MgaWRlbnRpZmllcnNVc2luZyBkZWNsYXJhdGlvbiByZXF1aXJlcyBpbml0aWFsaXplcnByaXZhdGUgbmFtZXMgYXJlIG5vdCBhbGxvd2VkIGluIGludGVyZmFjZUludmFsaWQgYHN1cGVyKClgSW52YWxpZCBhY2Nlc3MgdG8gc3VwZXJJbmRleCBzdXBlciB3aXRoIHByaXZhdGUgbmFtZSBpcyBub3QgYWxsb3dlZCduZXcudGFyZ2V0JyBpcyBvbmx5IGFsbG93ZWQgaW4gdGhlIGJvZHkgb2YgYSBmdW5jdGlvbiBkZWNsYXJhdGlvbiwgZnVuY3Rpb24gZXhwcmVzc2lvbiwgb3IgY2xhc3MuSW1wb3J0IGlzIG5vdCBhbGxvd2VkIGhlcmVBbiBhcnJvdyBmdW5jdGlvbiBpcyBub3QgYWxsb3dlZCBoZXJlYGV4cG9ydGAgaXMgbm90IGFsbG93ZWQgaGVyZUEgZ2V0dGVyIG9yIGEgc2V0dGVyIGNhbm5vdCBiZSByZWFkb25seUEgZ2V0dGVyIG9yIGEgc2V0dGVyIGNhbm5vdCBiZSBvcHRpb25hbEEgYGdldGAgYWNjZXNzb3IgY2Fubm90IGhhdmUgcGFyYW1ldGVyc0EgYHNldGAgYWNjZXNzb3IgbXVzdCBoYXZlIGV4YWN0bHkgb25lIHBhcmFtZXRlcnRvcCBsZXZlbCBhd2FpdCBpcyBvbmx5IGFsbG93ZWQgaW4gbW9kdWxlTGVnYWN5IGRlY2ltYWwgZXNjYXBlIGlzIG5vdCBwZXJtaXR0ZWQgaW4gc3RyaWN0IG1vZGVMZWdhY3kgb2N0YWwgZXNjYXBlIGlzIG5vdCBwZXJtaXR0ZWQgaW4gc3RyaWN0IG1vZGVJbnZhbGlkIGNoYXJhY3RlciBpbiBpZGVudGlmaWVyYSBiaW5hcnlhbiBvY3RhbGEgZGVjaW1hbGEgaGV4YWRlY2ltYWxFeHBlY3RlZCAgZGlnaXQAAACCeCYACQAAAIt4JgAGAAAAWnQmAGcAAABAAQAAGgAAAFNldHRlciBzaG91bGQgaGF2ZSBleGFjdGx5IG9uZSBwYXJhbWV0ZXJSZXN0IHBhdHRlcm4gaXMgbm90IGFsbG93ZWQgaW4gc2V0dGVyVW50ZXJtaW5hdGVkIGJsb2NrIGNvbW1lbnRVbnRlcm1pbmF0ZWQgc3RyaW5nIGNvbnN0YW50RXhwZWN0ZWQgdW5pY29kZSBlc2NhcGVVbmV4cGVjdGVkIGVzY2FwZSBzZXF1ZW5jZSBpbiByZXNlcnZlZCB3b3JkOiAATnkmAC0AAABVbnRlcm1pbmF0ZWQgcmVnZXhwIGxpdGVyYWxVbnRlcm1pbmF0ZWQgdGVtcGxhdGVJZGVudGlmaWVyIGNhbm5vdCBmb2xsb3cgbnVtYmVyVW5leHBlY3RlZCBjaGFyYWN0ZXIg03kmABUAAABJbnZhbGlkIHN0cmluZyBlc2NhcGVJbnZhbGlkIHVuaWNvZGUgZXNjYXBlQmFkIGNoYXJhY3RlciBlc2NhcGUgc2VxdWVuY2UsIGV4cGVjdGVkIAAbeiYAKAAAAEV4cGVjdGVkICssIC0gb3IgZGVjaW1hbCBkaWdpdCBhZnRlciBlTGVnYWN5IGNvbW1lbnRzIGNhbm5vdCBiZSB1c2VkIGluIG1vZHVsZSBjb2RlYCBjYW5ub3QgYmUgdXNlZCBhcyBhbiBpZGVudGlmaWVyIGluIHN0cmljdCBtb2RlANFCKAABAAAAn3omADAAAABgYXdhaXRgIGNhbm5vdCBiZSB1c2VkIGFzIGFuIGlkZW50aWZpZXIgaW4gYW4gYXN5bmMgY29udGV4dCdldmFsJyBhbmQgJ2FyZ3VtZW50cycgY2Fubm90IGJlIHVzZWQgYXMgYSBiaW5kaW5nIGlkZW50aWZpZXIgaW4gc3RyaWN0IG1vZGUnYXJndW1lbnRzJyBpcyBvbmx5IGFsbG93ZWQgaW4gZnVuY3Rpb25zIGFuZCBjbGFzcyBtZXRob2RzSWxsZWdhbCAndXNlIHN0cmljdCcgZGlyZWN0aXZlIGluIGZ1bmN0aW9uIHdpdGggbm9uLXNpbXBsZSBwYXJhbWV0ZXIgbGlzdC4nKionIGNhbm5vdCBiZSBhcHBsaWVkIHRvIHVuYXJ5L2F3YWl0IGV4cHJlc3Npb24uVW5leHBlY3RlZCB0b2tlbiAnIydMaW5lQnJlYWsgY2Fubm90IGZvbGxvdyAndGhyb3cnVW5leHBlY3RlZCBsaW5lIGJyZWFrIGJldHdlZW4gYXJyb3cgaGVhZCBhbmQgYXJyb3dVbmV4cGVjdGVkIHRva2VuIGBgLiBFeHBlY3RlZCAAgXwmABIAAACTfCYADAAAACAsIG9yIAAAs3wmAAMAAAAgb3IgVW5leHBlY3RlZCB0b2tlbi4gRGlkIHlvdSBtZWFuIADEfCYAHwAAAOpVKAABAAAAY2Fubm90IGltcG9ydCBhcyByZXNlcnZlZCB3b3JkYXNzaWdubWVudCBwcm9wZXJ0eSBpcyBpbnZhbGlkIHN5bnRheEV4cGVjdGVkICcnLCBnb3QgJycAADd9JgAKAAAAQX0mAAgAAABJfSYAAQAAAEV4cGVjdGVkICc7JywgJ30nIG9yIDxlb2Y+YXdhaXQqIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgYXN5bmMgZnVuY3Rpb25zIHByb3Bvc2FsLiBVc2UgUHJvbWlzZS5hbGwoKSBpbnN0ZWFkLkNhbm5vdCB1c2UgYSByZXNlcnZlZCB3b3JkIGFzIGEgc2hvcnRoYW5kIHByb3BlcnR5TnVsbGlzaCBjb2FsZXNjaW5nIG9wZXJhdG9yKD8/KSByZXF1aXJlcyBwYXJlbnMgd2hlbiBtaXhpbmcgd2l0aCBsb2dpY2FsIG9wZXJhdG9yc0Egc3dpdGNoIGJsb2NrIGNhbm5vdCBoYXZlIG11bHRpcGxlIGRlZmF1bHRzVHJhaWxpbmcgY29tbWEgaXNuJ3QgcGVybWl0dGVkIGFmdGVyIGEgcmVzdCBlbGVtZW50UmVzdCBlbGVtZW50IG11c3QgYmUgZmluYWwgZWxlbWVudFBhcmVudGhlc2l6ZWQgZXhwcmVzc2lvbiBjYW5ub3QgY29udGFpbiBzcHJlYWQgb3BlcmF0b3JQYXJlbnRoZXNpemVkIGV4cHJlc3Npb24gY2Fubm90IGJlIGVtcHR5Tm90IGEgcGF0dGVybk5vdCBhbiBleHByZXNzaW9uQ2Fubm90IGFzc2lnbiB0byB0aGlzSW52YWxpZCBhc3NpZ25tZW50IHRhcmdldEV4cGVjdGVkIGlkZW50RXhwZWN0ZWQgJzsnIG9yIGxpbmUgYnJlYWtMYWJlbCAgaXMgYWxyZWFkeSBkZWNsYXJlZAAAAKt/JgAGAAAAsX8mABQAAABBbiBhc3luYyBmdW5jdGlvbiBjYW5ub3QgYmUgZ2VuZXJhdG9yJ2ltcG9ydCcsIGFuZCAnZXhwb3J0JyBhcmUgbm90IHBlcm1pdHRlZCBoZXJlJ2ltcG9ydCcsIGFuZCAnZXhwb3J0JyBjYW5ub3QgYmUgdXNlZCBvdXRzaWRlIG9mIG1vZHVsZSBjb2RlJ2ltcG9ydC5tZXRhJyBjYW5ub3QgYmUgdXNlZCBvdXRzaWRlIG9mIG1vZHVsZSBjb2RlLkRlc3RydWN0dXJpbmcgYmluZGluZ3MgcmVxdWlyZSBpbml0aWFsaXplcnNXaXRoIHN0YXRlbWVudCBhcmUgbm90IGFsbG93ZWQgaW4gc3RyaWN0IG1vZGVSZXR1cm4gc3RhdGVtZW50IGlzIG5vdCBhbGxvd2VkIGhlcmVFeHBlY3RlZCBvbmUgdmFyaWFibGUgYmluZGluZ1VuZXhwZWN0ZWQgaW5pdGlhbGl6ZXIgaW4gZm9yIGluL29mIGxvb3BHZW5lcmF0b3Igb3IgYXN5bmMgZnVuY3Rpb24gY2Fubm90IGJlIGxhYmVsbGVkRnVuY3Rpb24gY2Fubm90IGJlIGxhYmVsbGVkIGluIHN0cmljdCBtb2RlJ3lpZWxkJyBjYW5ub3QgYmUgdXNlZCBhcyBhIHBhcmFtZXRlciB3aXRoaW4gZ2VuZXJhdG9yYGF3YWl0YCBleHByZXNzaW9ucyBjYW5ub3QgYmUgdXNlZCBpbiBhIHBhcmFtZXRlciBpbml0aWFsaXplci5mb3IgYXdhaXQgc3ludGF4IGlzIHZhbGlkIG9ubHkgZm9yIGZvci1vZiBzdGF0ZW1lbnRhd2FpdCBpc24ndCBhbGxvd2VkIGluIG5vbi1hc3luYyBmdW5jdGlvblVudGVybWluYXRlZCBKU1ggY29udGVudHNKU1ggYXR0cmlidXRlcyBtdXN0IG9ubHkgYmUgYXNzaWduZWQgYSBub24tZW1wdHkgZXhwcmVzc2lvbkpTWCB2YWx1ZSBzaG91bGQgYmUgZWl0aGVyIGFuIGV4cHJlc3Npb24gb3IgYSBxdW90ZWQgSlNYIHRleHRFeHBlY3RlZCBjb3JyZXNwb25kaW5nIEpTWCBjbG9zaW5nIHRhZyBmb3IgPD5FeHBlY3RlZCBjb3JyZXNwb25kaW5nIEpTWCBjbG9zaW5nIHRhZyBmb3IgPAAAAEGDJgAsAAAAglUoAAEAAABMZWFkaW5nIGRlY29yYXRvcnMgbXVzdCBiZSBhdHRhY2hlZCB0byBhIGNsYXNzIGRlY2xhcmF0aW9uVXNpbmcgdGhlIGV4cG9ydCBrZXl3b3JkIGJldHdlZW4gYSBkZWNvcmF0b3IgYW5kIGEgY2xhc3MgaXMgbm90IGFsbG93ZWQuIFBsZWFzZSB1c2UgYGV4cG9ydCBAZGVjIGNsYXNzYCBpbnN0ZWFkLkEgcmVxdWlyZWQgZWxlbWVudCBjYW5ub3QgZm9sbG93IGFuIG9wdGlvbmFsIGVsZW1lbnQuVHlwZXNjcmlwdCBwYXJhbWV0ZXIgcHJvcGVydHkgbXVzdCBiZSBhbiBpZGVudGlmaWVyIG9yIGFzc2lnbm1lbnQgcGF0dGVyblVuZXhwZWN0ZWQgc3BhY2UgYmV0d2VlbiAjIGFuZCBpZGVudGlmaWVyQ29uc3RydWN0b3IgY2FuJ3QgYmUgYW4gYXN5bmMgZnVuY3Rpb25DbGFzc2VzIG1heSBub3QgaGF2ZSBhIG5vbi1zdGF0aWMgZmllbGQgbmFtZWQgJ2NvbnN0cnVjdG9yJ0NsYXNzZXMgY2FuJ3QgaGF2ZSBhIHByaXZhdGUgZmllbGQgbmFtZWQgJyNjb25zdHJ1Y3RvcicuJyBtb2RpZmllciBjYW5ub3QgYmUgdXNlZCB3aXRoIGEgcHJpdmF0ZSBpZGVudGlmaWVyAAAASX0mAAEAAABqhSYAMwAAAENsYXNzIGNvbnN0cnVjdG9yIGNhbid0IGJlIGFuIGFjY2Vzc29yLkEgbWV0aG9kIGNhbm5vdCBiZSByZWFkb25seUEgY29uc3RydWN0b3IgY2Fubm90IGJlIGdlbmVyYXRvckEgY2xhc3MgY2FuIG9ubHkgaGF2ZSBvbmUgY29uc3RydWN0b3JBIGJpbmRpbmcgcGF0dGVybiBwYXJhbWV0ZXIgY2Fubm90IGJlIG9wdGlvbmFsIGluIGFuIGltcGxlbWVudGF0aW9uIHNpZ25hdHVyZS5TdXBlciBjYWxsIGNhbm5vdCBiZSBvcHRpb25hbENvbnN0cnVjdG9yIGluL2FmdGVyIGFuIG9wdGlvbmFsIGNoYWluaW5nIGlzIG5vdCBhbGxvd2VkLlRhZ2dlZCB0ZW1wbGF0ZSBsaXRlcmFsIGlzIG5vdCBhbGxvd2VkIGluIG9wdGlvbmFsIGNoYWluLlRyYWlsaW5nIGNvbW1hIGlzIGRpc2FsbG93ZWQgaW5zaWRlIGltcG9ydCguLi4pIGFyZ3VtZW50c2V4cG9ydCBkZWZhdWx0IHN0YXRlbWVudHMgcmVxdWlyZWQgZnJvbSAnLi4uJztgIGNhbm5vdCBiZSB1c2VkIHdpdGhvdXQgYGZyb21gIGNsYXVzZQAA0UIoAAEAAAB8hyYAJgAAAGAuLi5gIG11c3QgYmUgZm9sbG93ZWQgYnkgYW4gaWRlbnRpZmllciBpbiBkZWNsYXJhdGlvbiBjb250ZXh0c0EgbnVtZXJpYyBzZXBhcmF0b3IgaXMgb25seSBhbGxvd2VkIGJldHdlZW4gdHdvIGRpZ2l0c0Egc3RyaW5nIGxpdGVyYWwgY2Fubm90IGJlIHVzZWQgYXMgYW4gaW1wb3J0ZWQgYmluZGluZy4KLSBEaWQgeW91IG1lYW4gYGltcG9ydCB7ICIiIGFzIGZvbyB9YD8AKYgmAFIAAAB7iCYADAAAAEEgc3RyaW5nIGxpdGVyYWwgY2Fubm90IGJlIHVzZWQgYXMgYW4gZXhwb3J0ZWQgYmluZGluZyB3aXRob3V0IGBmcm9tYC4nY29uc3QnIGRlY2xhcmF0aW9ucyBtdXN0IGJlIGluaXRpYWxpemVkRHVwbGljYXRlZCByZWd1bGFyIGV4cHJlc3Npb24gZmxhZyAnJy4GiSYAJAAAACqJJgACAAAAVW5rbm93biByZWd1bGFyIGV4cHJlc3Npb24gZmxhZ3MuRXhwZWN0ZWQgYW4gaWRlbnRpZmllckV4cGVjdGVkIGEgc2VtaWNvbG9uVHJhaWxpbmcgY29tbWEgaXMgbm90IGFsbG93ZWRBIHJlc3QgcGFyYW1ldGVyIG11c3QgYmUgbGFzdCBpbiBhIHBhcmFtZXRlciBsaXN0UGFyYW1ldGVyIGNhbm5vdCBoYXZlIHF1ZXN0aW9uIG1hcmsgYW5kIGluaXRpYWxpemVyJyBtb2RpZmllciBtdXN0IHByZWNlZGUgJycgbW9kaWZpZXIuSX0mAAEAAAAIiiYAGQAAACGKJgALAAAAJyBtb2RpZmllciBhbHJlYWR5IHNlZW4uSX0mAAEAAABEiiYAGAAAAGBkZWNsYXJlYCBtb2RpZmllciBjYW5ub3QgYXBwZWFyIG9uIGNsYXNzIGVsZW1lbnRzIG9mIHRoaXMga2luZGBkZWNsYXJlYCBtb2RpZmllciBub3QgYWxsb3dlZCBmb3IgY29kZSBhbHJlYWR5IGluIGFuIGFtYmllbnQgY29udGV4dGBhc3luY2AgbW9kaWZpZXIgY2Fubm90IGJlIHVzZWQgaGVyZUEgcmVzdCBwYXJhbWV0ZXIgY2Fubm90IGJlIG9wdGlvbmFsQSByZXN0IHBhcmFtZXRlciBjYW5ub3QgaGF2ZSBhbiBpbml0aWFsaXplcmpzYy50YXJnZXQgc2hvdWxkIGJlIGVzNSBvciB1cHBlciB0byB1c2UgZ2V0dGVyIC8gc2V0dGVyTGVnYWN5IG9jdGFsIGxpdGVyYWxzIGFyZSBub3QgYXZhaWxhYmxlIHdoZW4gdGFyZ2V0aW5nIEVDTUFTY3JpcHQgNSBhbmQgaGlnaGVyJyBtb2RpZmllciBjYW5ub3QgYXBwZWFyIG9uIGEgY29uc3RydWN0b3IgZGVjbGFyYXRpb24AAABJfSYAAQAAAOiLJgA1AAAAVHlwZSBwYXJhbWV0ZXJzIGNhbm5vdCBhcHBlYXIgb24gYSBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbkFuIGluZGV4IHNpZ25hdHVyZSBtdXN0IGhhdmUgZXhhY3RseSBvbmUgcGFyYW1ldGVyVHlwZSBwYXJhbWV0ZXIgbGlzdCBjYW5ub3QgYmUgZW1wdHlJbnZhbGlkIHVzZSBvZiAnYXJndW1lbnRzJyBpbiBzdHJpY3QgbW9kZSdkZWxldGUnIGNhbm5vdCBiZSBjYWxsZWQgb24gYW4gaWRlbnRpZmllciBpbiBzdHJpY3QgbW9kZUEgJ2JyZWFrJyBzdGF0ZW1lbnQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoaW4gYW4gZW5jbG9zaW5nIGl0ZXJhdGlvbiBvciBzd2l0Y2ggc3RhdGVtZW50VGhlIGxlZnQtaGFuZCBzaWRlIG9mIGEgYGZvci4uLm9mYCBzdGF0ZW1lbnQgbWF5IG5vdCBiZSBgYXN5bmNgSnVtcCB0YXJnZXQgY2Fubm90IGNyb3NzIGZ1bmN0aW9uIGJvdW5kYXJ5RXhwcmVzc2lvbiBleHBlY3RlZHR5cGUgZXhwZWN0ZWREdXBsaWNhdGUgbGFiZWxBICdjb250aW51ZScgc3RhdGVtZW50IGNhbiBvbmx5IGp1bXAgdG8gYSBsYWJlbCBvZiBhbiBlbmNsb3NpbmcgaXRlcmF0aW9uIHN0YXRlbWVudEEgJ2JyZWFrJyBzdGF0ZW1lbnQgY2FuIG9ubHkganVtcCB0byBhIGxhYmVsIG9mIGFuIGVuY2xvc2luZyBzdGF0ZW1lbnRWYXJpYWJsZSBkZWNsYXJhdGlvbiBsaXN0IGNhbm5vdCBiZSBlbXB0eWxpdGVyYWwgaW4gYW4gaW1wb3J0IHR5cGUgc2hvdWxkIGJlIHN0cmluZyBsaXRlcmFsQW4gb2JqZWN0IG1lbWJlciBjYW5ub3QgYmUgZGVjbGFyZWQgb3B0aW9uYWxDb21wdXRlZCBwcm9wZXJ0eSBuYW1lcyBhcmUgbm90IGFsbG93ZWQgaW4gZW51bXNBIGNvbW1hIGV4cHJlc3Npb24gaXMgbm90IGFsbG93ZWQgaW4gYSBjb21wdXRlZCBwcm9wZXJ0eSBuYW1lYGV4dGVuZHNgIGNsYXVzZSBhbHJlYWR5IHNlZW4uJ2V4dGVuZHMnIGNsYXVzZSBtdXN0IHByZWNlZGUgJ2ltcGxlbWVudHMnIGNsYXVzZS5DbGFzc2VzIGNhbiBvbmx5IGV4dGVuZCBhIHNpbmdsZSBjbGFzc2BpbXBsZW1lbnRzYCBjbGF1c2UgYWxyZWFkeSBzZWVuQW4gaW1wbGVtZW50YXRpb24gY2Fubm90IGJlIGRlY2xhcmVkIGluIGFtYmllbnQgY29udGV4dHNNb2RpZmllcnMgY2Fubm90IGFwcGVhciBoZXJlTWVyZ2UgY29uZmxpY3QgbWFya2VyIGVuY291bnRlcmVkLlR5cGUgYW5ub3RhdGlvbiBjYW5ub3QgYXBwZWFyIG9uIGEgY29uc3RydWN0b3IgZGVjbGFyYXRpb25DYXRjaCBjbGF1c2UgdmFyaWFibGUgY2Fubm90IGhhdmUgYSB0eXBlIGFubm90YXRpb25gYWJzdHJhY3RgIG1vZGlmaWVyIGNhbiBvbmx5IGFwcGVhciBvbiBhIGNsYXNzIG9yIG1ldGhvZCBkZWNsYXJhdGlvbicgbW9kaWZpZXIgY2Fubm90IGJlIHVzZWQgd2l0aCAnAAAASX0mAAEAAABZkSYAIAAAACGKJgALAAAAQWJzdHJhY3QgbWV0aG9kcyBjYW4gb25seSBhcHBlYXIgd2l0aGluIGFuIGFic3RyYWN0IGNsYXNzLkFic3RyYWN0IG1ldGhvZCBjYW5ub3QgaGF2ZSBhbiBpbXBsZW1lbnRhdGlvbi5BYnN0cmFjdCBwcm9wZXJ0eSBjYW5ub3QgaGF2ZSBhbiBpbml0aWFsaXplci4nIG1vZGlmaWVyIGNhbm5vdCBhcHBlYXIgb24gYSB0eXBlIHBhcmFtZXRlcgAAAEl9JgABAAAAKZImACwAAAAnIG1vZGlmaWVyIGNhbiBvbmx5IGFwcGVhciBvbiBhIHR5cGUgcGFyYW1ldGVyIG9mIGEgY2xhc3MsIGludGVyZmFjZSBvciB0eXBlIGFsaWFzAABJfSYAAQAAAGiSJgBSAAAAJyBtb2RpZmllciBjYW4gb25seSBhcHBlYXIgb24gYSB0eXBlIHBhcmFtZXRlciBvZiBhIGZ1bmN0aW9uLCBtZXRob2Qgb3IgY2xhc3MAAABJfSYAAQAAAMySJgBNAAAAVGhlICd0eXBlJyBtb2RpZmllciBjYW5ub3QgYmUgdXNlZCBvbiBhIG5hbWVkIGltcG9ydCB3aGVuICdpbXBvcnQgdHlwZScgaXMgdXNlZCBvbiBpdHMgaW1wb3J0IHN0YXRlbWVudC5UaGUgJ3R5cGUnIG1vZGlmaWVyIGNhbm5vdCBiZSB1c2VkIG9uIGEgbmFtZWQgZXhwb3J0IHdoZW4gJ2V4cG9ydCB0eXBlJyBpcyB1c2VkIG9uIGl0cyBleHBvcnQgc3RhdGVtZW50LkEgcGFyYW1ldGVyIHByb3BlcnR5IGlzIG9ubHkgYWxsb3dlZCBpbiBhIGNvbnN0cnVjdG9yIGltcGxlbWVudGF0aW9uQSBwYXJhbWV0ZXIgaW5pdGlhbGl6ZXIgaXMgb25seSBhbGxvd2VkIGluIGEgZnVuY3Rpb24gb3IgY29uc3RydWN0b3IgaW1wbGVtZW50YXRpb25UaGUgbGVmdC1oYW5kIHNpZGUgb2YgYW4gYXNzaWdubWVudCBleHByZXNzaW9uIG11c3QgYmUgYSB2YXJpYWJsZSBvciBhIHByb3BlcnR5IGFjY2Vzcy5UaGUgJ3dpdGgnIHN0YXRlbWVudCBpcyBub3Qgc3VwcG9ydGVkLiBBbGwgc3ltYm9scyBpbiBhICd3aXRoJyBibG9jayB3aWxsIGhhdmUgdHlwZSAnYW55Jy5JbnZhbGlkIGNsYXNzIG5hbWVpbnRlcmZhY2UgbmFtZSBpcyBpbnZhbGlkQW4gZW51bSBtZW1iZXIgY2Fubm90IGhhdmUgYSBudW1lcmljIG5hbWVUaGUgbGVmdC1oYW5kIHNpZGUgb2YgYSAnZm9yLi4ub2YnIHN0YXRlbWVudCBjYW5ub3QgdXNlIGEgdHlwZSBhbm5vdGF0aW9uVGhlIGxlZnQtaGFuZCBzaWRlIG9mIGEgJ2Zvci4uLmluJyBzdGF0ZW1lbnQgY2Fubm90IGJlIGEgZGVzdHJ1Y3R1cmluZyBwYXR0ZXJuQW4gaW50ZXJmYWNlIGNhbiBvbmx5IGV4dGVuZCBhbiBpZGVudGlmaWVyL3F1YWxpZmllZC1uYW1lIHdpdGggb3B0aW9uYWwgdHlwZSBhcmd1bWVudHMuVGhlIG9wZXJhbmQgb2YgYSBkZWxldGUgb3BlcmF0b3IgbXVzdCBiZSBhIHByb3BlcnR5IHJlZmVyZW5jZS5UaGlzIG1lbWJlciBjYW5ub3QgaGF2ZSBhbiAnb3ZlcnJpZGUnIG1vZGlmaWVyIGJlY2F1c2UgaXRzIGNvbnRhaW5pbmcgY2xhc3MgZG9lcyBub3QgZXh0ZW5kIGFub3RoZXIgY2xhc3MuRGVjb3JhdG9ycyBtYXkgbm90IGFwcGVhciBhZnRlciBgZXhwb3J0YCBvciBgZXhwb3J0IGRlZmF1bHRgIGlmIHRoZXkgYWxzbyBhcHBlYXIgYmVmb3JlIGBleHBvcnRgLkFuIGFjY2Vzc2liaWxpdHkgbW9kaWZpZXIgY2Fubm90IGJlIHVzZWQgd2l0aCBhIHByaXZhdGUgaWRlbnRpZmllci5UeXBlIGFubm90YXRpb25zIG11c3QgY29tZSBiZWZvcmUgZGVmYXVsdCBhc3NpZ25tZW50c1R5cGVzY3JpcHQgbm9uLW51bGwgYXNzZXJ0aW9uIG9wZXJhdG9yIGlzIG5vdCBhbGxvd2VkIHdpdGggJwAHmCYAPAAAAEl9JgABAAAAVGhpcyBzeW50YXggaXMgcmVzZXJ2ZWQgaW4gZmlsZXMgd2l0aCB0aGUgLm10cyBvciAuY3RzIGV4dGVuc2lvbi4gVXNlIGFuIGBhc2AgZXhwcmVzc2lvbiBpbnN0ZWFkLlRoaXMgc3ludGF4IGlzIHJlc2VydmVkIGluIGZpbGVzIHdpdGggdGhlIC5tdHMgb3IgLmN0cyBleHRlbnNpb24uIEFkZCBhIHRyYWlsaW5nIGNvbW1hLCBhcyBpbiBgPFQsPigpID0+IC4uLmAuVGhpcyBpcyB0aGUgZXhwcmVzc2lvbiBwYXJ0IG9mIGFuIGV4cHJlc3Npb24gc3RhdGVtZW50cHJldmlvdXMgZGVmYXVsdCBjYXNlIGlzIGRlY2xhcmVkIGF0IGhlcmUvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zd2NfZWNtYV9sZXhlci0xNS4wLjEvc3JjL2lucHV0LnJzAAAAgpkmAGcAAACxAAAAKwAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3N3Y19lY21hX2FzdC0xMi4wLjAvc3JjL2V4cHIucnP8mSYAZAAAAOQEAAAUAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc3djX2VjbWFfbGV4ZXItMTUuMC4xL3NyYy9jb21tb24vcGFyc2VyL3R5cGVzY3JpcHQucnMAAHCaJgB6AAAAngAAADMAAABwmiYAegAAAHoBAAAcAAAAlEIoAAYAAACaQigACQAAAKNCKAAHAAAA4lUoAAgAAACUQigABgAAAKNCKAAHAAAAmkIoAAkAAADiVSgACAAAANJVKAAIAAAAhkIoAAUAAADaVSgACAAAABxJKAACAAAAqkIoAAMAAAAiIgAAcJomAHoAAAAtCAAAMwAAADwgKGpzeCB0YWcgc3RhcnQpAAAAcJomAHoAAAC3CgAAPgAAAHCaJgB6AAAA6AgAAA4AAABwmiYAegAAAGEEAAASAAAAYW4gaWRlbnRpZmllciwgdm9pZCwgeWllbGQsIG51bGwsIGF3YWl0LCBicmVhaywgYSBzdHJpbmcgbGl0ZXJhbCwgYSBudW1lcmljIGxpdGVyYWwsIHRydWUsIGZhbHNlLCBgLCAtLCBpbXBvcnQsIHRoaXMsIHR5cGVvZiwgeywgWywgKG51bWVyaWMgbGl0ZXJhbCBvciBiaWdpbnQgbGl0ZXJhbAAAcJomAHoAAADUCQAANAAAAHCaJgB6AAAA5gkAADQAAABwmiYAegAAAPAJAAASAAAAcJomAHoAAAA9CQAAJwAAAHCaJgB6AAAAOwkAABYAAABFT0ZhbiBpZGVudGlmaWVyLCBbIGZvciBhbiBhcnJheSBwYXR0ZXJuLCB7IGZvciBhbiBvYmplY3QgcGF0dGVyIG9yIC4uLiBmb3IgYSByZXN0IHBhdHRlcm5nbG9iYWwgb3IgYSBzdHJpbmcgbGl0ZXJhbKydJgB0AAAAbgIAACIAAACsnSYAdAAAAIECAAAyAAAAKCBvciBgAACsnSYAdAAAALcCAAAmAAAArJ0mAHQAAACnAgAAIgAAAGZhaWySCAAADAAAAAQAAACTCAAAlAgAAJUIAAAAAAAAAAAAAAEAAACWCAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc3djX2VjbWFfbGV4ZXItMTUuMC4xL3NyYy9jb21tb24vcGFyc2VyL2V4cHIucnOsnSYAdAAAAMgCAAAbAAAAYC5gIG9yIGAoYAAArJ0mAHQAAAD/AgAAJwAAAFRyaWVkIHRvIHBhcnNlIGFuIGFyZ3VtZW50IG9mIHlpZWxkAAAAAACsnSYAdAAAANwHAAAYAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogaW52YWxpZCBwYXR0ZXJuOiBFeHByKISeJgBAAAAAPLEoAAEAAACsnSYAdAAAALcHAAAoAAAArJ0mAHQAAACQBwAAGgAAAKydJgB0AAAAzwgAAD0AAACsnSYAdAAAAO0IAAAfAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogcGFyc2VfbGl0IHNob3VsZCBub3QgYmUgY2FsbGVkIGZvciAAAAAUnyYATQAAAKydJgB0AAAAGQEAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXCAAAmAgAAJcIAACXCAAAmAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJcIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAmQgAAJkIAACZCAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc3djX2VjbWFfbGV4ZXItMTUuMC4xL3NyYy9jb21tb24vbGV4ZXIvbW9kLnJzAAAApCYAcgAAAGsCAAAvAAAAZmFpbGVkIHRvIHBhcnNlIGZsb2F0IHVzaW5nIHJ1c3QncyBpbXBsAACkJgByAAAA2QIAABIAAABmYWlsZWQgdG8gcGFyc2UgZmxvYXQgbGl0ZXJhbAAAAACkJgByAAAADAMAABYAAABmYWlsZWQgdG8gcGFyc2UgIHVzaW5nIGBmcm9tX3N0cl9yYWRpeGA6IAAAAOykJgAQAAAA/KQmABkAAAAApCYAcgAAAKACAAAlAAAAAKQmAHIAAABxBwAAIAAAAACkJgByAAAAAAgAAC0AAABiPigAAQAAAMRVKAABAAAAAKQmAHIAAADIAwAAJQAAAACkJgByAAAAyQMAADUAAAAApCYAcgAAADwFAAAeAAAAMiBoZXggY2hhcmFjdGVycwCkJgByAAAA5gMAACUAAAAApCYAcgAAAO4AAAA7AAAAAKQmAHIAAADqAAAAOwAAAHx8fHx8IAAAAKQmAHIAAAA0AQAAIQAAAACkJgByAAAAQgEAADQAAAAApCYAcgAAAD4BAAAeAAAAAKQmAHIAAABTAQAAKwAAADQgaGV4IGNoYXJhY3RlcnMxLTYgaGV4IGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlIDAgdG8gMTBGRkZGLjEtNiBoZXggY2hhcmFjdGVycwAAAKQmAHIAAABnAwAAPgAAAGZhaWxlZCB0byBwYXJzZSBmbG9hdCB1c2luZyBCaWdJbnQAAACkJgByAAAAPgIAAA4AAAAApCYAcgAAAG4EAAAZAAAAZmFpbGVkIHRvIHBhcnNlIHN0cmluZyBhcyBhIGJpZ2ludC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3N3Y19lY21hX2xleGVyLTE1LjAuMS9zcmMvY29tbW9uL2xleGVyL251bWJlci5ycwDmpiYAdQAAABAAAAAOAAAAAAAAAAEAAAABAAAAoAIAAAAAAAABAAAAAQAAAJoIAABQYXJzZUJpZ0ludEVycm9yUGFyc2VGbG9hdEVycm9yPDw8PDw8IGB7Jz4nfWBgJmd0O2Bgeyd9J31gYCZyYnJhY2U7YIzBJgBuAAAAaAAAABUAAACMwSYAbgAAAHAAAAAcAAAAjMEmAG4AAAB0AAAAHwAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3N3Y19lY21hX3BhcnNlci0xNS4wLjEvc3JjL2xleGVyL21vZC5ycwCoJgBsAAAARgAAABUAAAA9PT09AKgmAGwAAAA0AQAAFgAAADw8PDw8ID4+Pj4gL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc3djX2VjbWFfbGV4ZXItMTUuMC4xL3NyYy9jb21tb24vcGFyc2VyL2NsYXNzX2FuZF9mbi5ycwCUQigABgAAAJpCKAAJAAAAo0IoAAcAAAAcSSgAAgAAAKpCKAADAAAA0lUoAAgAAADiVSgACAAAANpVKAAIAAAAzFUoAAYAAACbqCYAfAAAANIEAAASAAAAKiBmb3IgZ2VuZXJhdG9yLCBwcml2YXRlIGtleSwgaWRlbnRpZmllciBvciBhc3luY2ludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGlzX2NvbnN0cnVjdG9yKCkgcmV0dXJucyBmYWxzZSBmb3IgUHJpdmF0ZU5hbWUAAAChqSYAWAAAAJuoJgB8AAAAIgQAABoAAADIviYAYQAAAMIAAAAmAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc3djX2VjbWFfbGV4ZXItMTUuMC4xL3NyYy9jb21tb24vcGFyc2VyL3N0bXQucnNUcmllZCB0byBwYXJzZSB0aGUgY29uZGl0aW9uIGZvciBhbiBpZiBzdGF0ZW1lbnQkqiYAdAAAAJYBAAAiAAAAJKomAHQAAACfAQAANAAAACSqJgB0AAAA2AAAAAkAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiAndXNlIHN0cmljdCc7IGRpcmVjdGl2ZSByZXF1aXJlcyBwYXJzZXIuaW5wdXQuY3VyIHRvIGJlIGVtcHR5IG9yICd9JywgYnV0IGN1cnJlbnQgdG9rZW4gd2FzOiAA+KomAIcAAAAkqiYAdAAAAHAFAAAVAAAAJKomAHQAAABSAwAAJgAAACSqJgB0AAAAmQAAABIAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zd2NfZWNtYV9sZXhlci0xNS4wLjEvc3JjL2NvbW1vbi9wYXJzZXIvb2JqZWN0LnJzLi4uICwgKiwgICgsIFssIDosICwgPywgPSBvciBhbiBpZGVudGlmaWVyLi4uICwgKiwgICgsIFssIDosICwgPywgPSwgYW4gaWRlbnRpZmllciwgcHVibGljLCBwcm90ZWN0ZWQsIHByaXZhdGUsIHJlYWRvbmx5LCA8LmlkZW50aWZpZXK4qyYAdgAAAKEBAAAaAAAAuKsmAHYAAAB/AQAAOAAAAGFuIGlkZW50aWZpZXIvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zd2NfZWNtYV9sZXhlci0xNS4wLjEvc3JjL2NvbW1vbi9wYXJzZXIvbW9kdWxlX2l0ZW0ucnPhrCYAewAAAG8BAAA0AAAA4awmAHsAAAA8AwAAGgAAAGEgc3RyaW5nIGxpdGVyYWzhrCYAewAAAIEDAAASAAAA4awmAHsAAAADAwAAFgAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGhhbmRsZV9pbXBvcnRfZXhwb3J0IHNob3VsZCBub3QgYmUgY2FsbGVkIGlmIGN1cnJlbnQgdG9rZW4gaXNuJ3QgaW1wb3J0IG5vciBleHBvcnSsrSYAfAAAAOGsJgB7AAAALQAAAAkAAADhrCYAewAAAFAAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zd2NfZWNtYV9sZXhlci0xNS4wLjEvc3JjL2NvbW1vbi9wYXJzZXIvaWRlbnQucnMAAAAAryYAdQAAALIAAABSAAAAAK8mAHUAAADaAAAADQAAAACvJgB1AAAAIgAAACQAAABsZXQgaXMgcmVzZXJ2ZWQgaW4gY29uc3QsIGxldCwgY2xhc3MgZGVjbGFyYXRpb25pZGVudGlmaWVyIG9yIHN0cmluZy9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3N3Y19lY21hX2xleGVyLTE1LjAuMS9zcmMvY29tbW9uL3BhcnNlci9idWZmZXIucnMAAOyvJgB2AAAAegAAAC0AAACbCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcCAAAnQgAAJ4IAACfCAAAoAgAAKEIAACdCAAAoggAAKMIAACkCAAApQgAAKYIAACnCAAAqAgAAKkIAACqCAAAqwgAAKsIAACrCAAAqwgAAKsIAACrCAAAqwgAAKsIAACrCAAArAgAAK0IAACuCAAArwgAALAIAACxCAAAsggAAJ8IAACfCAAAnwgAAJ8IAACfCAAAnwgAAJ8IAACfCAAAnwgAAJ8IAACfCAAAnwgAAJ8IAACfCAAAnwgAAJ8IAACfCAAAnwgAAJ8IAACfCAAAnwgAAJ8IAACfCAAAnwgAAJ8IAACfCAAAswgAAJ8IAAC0CAAAtQgAAJ8IAAC2CAAAtwgAALgIAAC5CAAAuggAALsIAAC8CAAAvQgAAJ8IAAC+CAAAnwgAAL8IAADACAAAwQgAAMIIAADDCAAAxAgAAJ8IAADFCAAAxggAAMcIAADICAAAyQgAAMoIAACfCAAAywgAAJ8IAADMCAAAzQgAAM4IAADPCAAA0AgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAA0QgAANEIAADRCAAAbWV0YXBhY2thZ2V0YXJnZXQvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zd2NfZWNtYV9wYXJzZXItMTUuMC4xL3NyYy9sZXhlci90b2tlbi5ycwCFtCYAbgAAAAUDAAAkAAAAPHN0cmluZyBsaXRlcmFsPjxudW1iZXIgbGl0ZXJhbD48YmlnaW50IGxpdGVyYWw+PHJlZ2V4cCBsaXRlcmFsPjx0ZW1w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CQAAQ2FwYWNpdHlPdmVyZmxvd0FsbG9jRXJybGF5b3V0L2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc21hbGx2ZWMtMS4xNC4wL3NyYy9saWIucnMAAAByvCYAXwAAAFUBAAAuAAAAcrwmAF8AAABEAQAANgAAAHK8JgBfAAAA0QQAAA4AAABhc3NlcnRpb24gZmFpbGVkOiBuZXdfY2FwID49IGxlbnK8JgBfAAAAnAQAAA0AAACSCAAADAAAAAQAAACTCAAAGQkAAJUIAAAAAAAADAAAAAQAAADABwAAwQcAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3N3Y19lY21hX2xleGVyLTE1LjAuMS9zcmMvY29tbW9uL3BhcnNlci9tb2QucnNpZGVudGlmaWVyLCBzdHJpbmcgbGl0ZXJhbCwgbnVtZXJpYyBsaXRlcmFsIG9yIFsgZm9yIHRoZSBjb21wdXRlZCBrZXlgvSYAcwAAAGsBAAA0AAAAdGVtcGxhdGUgdG9rZW5BbiBleHByZXNzaW9uIHNob3VsZCBmb2xsb3cgJy4uLicvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zbWFydHN0cmluZy0xLjAuMS9zcmMvb3BzLnJzV74mAGEAAAB6AAAAOwAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3R5cGVkLWFyZW5hLTIuMC4yL3NyYy9saWIucnMAAADIviYAYQAAAPoAAABBAAAAyL4mAGEAAADQAAAADgAAAMi+JgBhAAAAKwIAAA4AAAAAAAAABAAAAAQAAADRAgAAAAAAAAQAAAAEAAAArAIAAAAAAAABAAAAAQAAAK4CAAD8CAAADAAAAAQAAAAMAwAAGgkAACAAAAAIAAAAfwMAABsJAAAEAAAABAAAANACAAAcCQAABAAAAAQAAABaAwAAAAAAAAEAAAABAAAACgkAAB0JAAAEAAAABAAAAB4JAAAAAAAAAQAAAAEAAAAfCQAAIAkAAAwAAAAEAAAAIQkAAAcJAAAYAAAABAAAAAgJAAAiCQAAEAAAAAgAAAAjCQAAJAkAACAAAAAIAAAAJQkAACYJAAAEAAAABAAAAE0DAAAnCQAADAAAAAQAAAAoCQAAKQkAAAQAAAAEAAAAKgkAAAAAAAAEAAAABAAAAHMCAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zd2NfZWNtYV9sZXhlci0xNS4wLjEvc3JjL2NvbW1vbi9wYXJzZXIvcGF0LnJzaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogaW52YWxpZCBzeW50YXg6IFBhdDogAADvwCYAPwAAAHzAJgBzAAAAJQIAABIAAADiVSgACAAAAHzAJgBzAAAALgEAADUAAAB5aWVsZCwgYW4gaWRlbnRpZmllciwgWyBvciB7fMAmAHMAAAAoAwAAHAAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3N3Y19lY21hX3BhcnNlci0xNS4wLjEvc3JjL2xleGVyL3N0YXRlLnJzAACMwSYAbgAAADUAAAAZAAAAjMEmAG4AAAA0AAAAOAAAAIzBJgBuAAAAMwAAAEEAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zd2NfY29tbW9uLTEyLjAuMS9zcmMvc3ludGF4X3Bvcy9oeWdpZW5lLnJzLMImAHAAAAC9AQAANgAAAGThJgB3AAAA/QAAAAEAAABfYXBwbHlfZGVjb3JhdGVkX2Rlc2NyaXB0b3JAc3djL2hlbHBlcnMvXy9fYXBwbHlfZGVjb3JhdGVkX2Rlc2NyaXB0b3JfYXJyYXlfbGlrZV90b19hcnJheUBzd2MvaGVscGVycy9fL19hcnJheV9saWtlX3RvX2FycmF5X2FycmF5X3dpdGhfaG9sZXNAc3djL2hlbHBlcnMvXy9fYXJyYXlfd2l0aF9ob2xlc19hcnJheV93aXRob3V0X2hvbGVzQHN3Yy9oZWxwZXJzL18vX2FycmF5X3dpdGhvdXRfaG9sZXNfYXNzZXJ0X3RoaXNfaW5pdGlhbGl6ZWRAc3djL2hlbHBlcnMvXy9fYXNzZXJ0X3RoaXNfaW5pdGlhbGl6ZWRfYXN5bmNfZ2VuZXJhdG9yQHN3Yy9oZWxwZXJzL18vX2FzeW5jX2dlbmVyYXRvcl9hc3luY19nZW5lcmF0b3JfZGVsZWdhdGVAc3djL2hlbHBlcnMvXy9fYXN5bmNfZ2VuZXJhdG9yX2RlbGVnYXRlX2FzeW5jX2l0ZXJhdG9yQHN3Yy9oZWxwZXJzL18vX2FzeW5jX2l0ZXJhdG9yX2FzeW5jX3RvX2dlbmVyYXRvckBzd2MvaGVscGVycy9fL19hc3luY190b19nZW5lcmF0b3JfYXdhaXRfYXN5bmNfZ2VuZXJhdG9yQHN3Yy9oZWxwZXJzL18vX2F3YWl0X2FzeW5jX2dlbmVyYXRvcl9hd2FpdF92YWx1ZUBzd2MvaGVscGVycy9fL19hd2FpdF92YWx1ZV9jYWxsX3N1cGVyQHN3Yy9oZWxwZXJzL18vX2NhbGxfc3VwZXJfY2hlY2tfcHJpdmF0ZV9yZWRlY2xhcmF0aW9uQHN3Yy9oZWxwZXJzL18vX2NoZWNrX3ByaXZhdGVfcmVkZWNsYXJhdGlvbl9jbGFzc19hcHBseV9kZXNjcmlwdG9yX2Rlc3RydWN0dXJlQHN3Yy9oZWxwZXJzL18vX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfZGVzdHJ1Y3R1cmVfY2xhc3NfYXBwbHlfZGVzY3JpcHRvcl9nZXRAc3djL2hlbHBlcnMvXy9fY2xhc3NfYXBwbHlfZGVzY3JpcHRvcl9nZXRfY2xhc3NfYXBwbHlfZGVzY3JpcHRvcl9zZXRAc3djL2hlbHBlcnMvXy9fY2xhc3NfYXBwbHlfZGVzY3JpcHRvcl9zZXRfY2xhc3NfYXBwbHlfZGVzY3JpcHRvcl91cGRhdGVAc3djL2hlbHBlcnMvXy9fY2xhc3NfYXBwbHlfZGVzY3JpcHRvcl91cGRhdGVfY2xhc3NfY2FsbF9jaGVja0Bzd2MvaGVscGVycy9fL19jbGFzc19jYWxsX2NoZWNrX2NsYXNzX2NoZWNrX3ByaXZhdGVfc3RhdGljX2ZpZWxkX2Rlc2NyaXB0b3JAc3djL2hlbHBlcnMvXy9fY2xhc3NfY2hlY2tfcHJpdmF0ZV9zdGF0aWNfZmllbGRfZGVzY3JpcHRvcl9jbGFzc19leHRyYWN0X2ZpZWxkX2Rlc2NyaXB0b3JAc3djL2hlbHBlcnMvXy9fY2xhc3NfZXh0cmFjdF9maWVsZF9kZXNjcmlwdG9yX2NsYXNzX25hbWVfdGR6X2Vycm9yQHN3Yy9oZWxwZXJzL18vX2NsYXNzX25hbWVfdGR6X2Vycm9yX2NsYXNzX3ByaXZhdGVfZmllbGRfZ2V0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX3ByaXZhdGVfZmllbGRfZ2V0X2NsYXNzX3ByaXZhdGVfZmllbGRfaW5pdEBzd2MvaGVscGVycy9fL19jbGFzc19wcml2YXRlX2ZpZWxkX2luaXRfY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9iYXNlQHN3Yy9oZWxwZXJzL18vX2NsYXNzX3ByaXZhdGVfZmllbGRfbG9vc2VfYmFzZV9jbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2tleUBzd2MvaGVscGVycy9fL19jbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2tleV9jbGFzc19wcml2YXRlX2ZpZWxkX3NldEBzd2MvaGVscGVycy9fL19jbGFzc19wcml2YXRlX2ZpZWxkX3NldF9jbGFzc19wcml2YXRlX2ZpZWxkX3VwZGF0ZUBzd2MvaGVscGVycy9fL19jbGFzc19wcml2YXRlX2ZpZWxkX3VwZGF0ZV9jbGFzc19wcml2YXRlX21ldGhvZF9nZXRAc3djL2hlbHBlcnMvXy9fY2xhc3NfcHJpdmF0ZV9tZXRob2RfZ2V0X2NsYXNzX3ByaXZhdGVfbWV0aG9kX2luaXRAc3djL2hlbHBlcnMvXy9fY2xhc3NfcHJpdmF0ZV9tZXRob2RfaW5pdF9jbGFzc19wcml2YXRlX21ldGhvZF9zZXRAc3djL2hlbHBlcnMvXy9fY2xhc3NfcHJpdmF0ZV9tZXRob2Rfc2V0X2NsYXNzX3N0YXRpY19wcml2YXRlX2ZpZWxkX3NwZWNfZ2V0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX3N0YXRpY19wcml2YXRlX2ZpZWxkX3NwZWNfZ2V0X2NsYXNzX3N0YXRpY19wcml2YXRlX2ZpZWxkX3NwZWNfc2V0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX3N0YXRpY19wcml2YXRlX2ZpZWxkX3NwZWNfc2V0X2NsYXNzX3N0YXRpY19wcml2YXRlX2ZpZWxkX3VwZGF0ZUBzd2MvaGVscGVycy9fL19jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF91cGRhdGVfY29uc3RydWN0QHN3Yy9oZWxwZXJzL18vX2NvbnN0cnVjdF9jcmVhdGVfY2xhc3NAc3djL2hlbHBlcnMvXy9fY3JlYXRlX2NsYXNzX2RlY29yYXRlQHN3Yy9oZWxwZXJzL18vX2RlY29yYXRlX2RlZmF1bHRzQHN3Yy9oZWxwZXJzL18vX2RlZmF1bHRzX2RlZmluZV9lbnVtZXJhYmxlX3Byb3BlcnRpZXNAc3djL2hlbHBlcnMvXy9fZGVmaW5lX2VudW1lcmFibGVfcHJvcGVydGllc19kZWZpbmVfcHJvcGVydHlAc3djL2hlbHBlcnMvXy9fZGVmaW5lX3Byb3BlcnR5X2V4cG9ydF9zdGFyQHN3Yy9oZWxwZXJzL18vX2V4cG9ydF9zdGFyX2V4dGVuZHNAc3djL2hlbHBlcnMvXy9fZXh0ZW5kc19nZXRAc3djL2hlbHBlcnMvXy9fZ2V0X2dldF9wcm90b3R5cGVfb2ZAc3djL2hlbHBlcnMvXy9fZ2V0X3Byb3RvdHlwZV9vZl9pbmhlcml0c0Bzd2MvaGVscGVycy9fL19pbmhlcml0c19pbmhlcml0c19sb29zZUBzd2MvaGVscGVycy9fL19pbmhlcml0c19sb29zZV9pbml0aWFsaXplcl9kZWZpbmVfcHJvcGVydHlAc3djL2hlbHBlcnMvXy9faW5pdGlhbGl6ZXJfZGVmaW5lX3Byb3BlcnR5X2luaXRpYWxpemVyX3dhcm5pbmdfaGVscGVyQHN3Yy9oZWxwZXJzL18vX2luaXRpYWxpemVyX3dhcm5pbmdfaGVscGVyX2luc3RhbmNlb2ZAc3djL2hlbHBlcnMvXy9faW5zdGFuY2VvZl9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdEBzd2MvaGVscGVycy9fL19pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdF9pbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmRAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkX2lzX25hdGl2ZV9mdW5jdGlvbkBzd2MvaGVscGVycy9fL19pc19uYXRpdmVfZnVuY3Rpb25faXRlcmFibGVfdG9fYXJyYXlAc3djL2hlbHBlcnMvXy9faXRlcmFibGVfdG9fYXJyYXlfaXRlcmFibGVfdG9fYXJyYXlfbGltaXRAc3djL2hlbHBlcnMvXy9faXRlcmFibGVfdG9fYXJyYXlfbGltaXRfaXRlcmFibGVfdG9fYXJyYXlfbGltaXRfbG9vc2VAc3djL2hlbHBlcnMvXy9faXRlcmFibGVfdG9fYXJyYXlfbGltaXRfbG9vc2VfanN4QHN3Yy9oZWxwZXJzL18vX2pzeF9uZXdfYXJyb3dfY2hlY2tAc3djL2hlbHBlcnMvXy9fbmV3X2Fycm93X2NoZWNrX25vbl9pdGVyYWJsZV9yZXN0QHN3Yy9oZWxwZXJzL18vX25vbl9pdGVyYWJsZV9yZXN0X25vbl9pdGVyYWJsZV9zcHJlYWRAc3djL2hlbHBlcnMvXy9fbm9uX2l0ZXJhYmxlX3NwcmVhZF9vYmplY3RfZGVzdHJ1Y3R1cmluZ19lbXB0eUBzd2MvaGVscGVycy9fL19vYmplY3RfZGVzdHJ1Y3R1cmluZ19lbXB0eV9vYmplY3Rfc3ByZWFkQHN3Yy9oZWxwZXJzL18vX29iamVjdF9zcHJlYWRfb2JqZWN0X3NwcmVhZF9wcm9wc0Bzd2MvaGVscGVycy9fL19vYmplY3Rfc3ByZWFkX3Byb3BzX29iamVjdF93aXRob3V0X3Byb3BlcnRpZXNAc3djL2hlbHBlcnMvXy9fb2JqZWN0X3dpdGhvdXRfcHJvcGVydGllc19vYmplY3Rfd2l0aG91dF9wcm9wZXJ0aWVzX2xvb3NlQHN3Yy9oZWxwZXJzL18vX29iamVjdF93aXRob3V0X3Byb3BlcnRpZXNfbG9vc2Vfb3ZlcmxvYWRfeWllbGRAc3djL2hlbHBlcnMvXy9fb3ZlcmxvYWRfeWllbGRfcG9zc2libGVfY29uc3RydWN0b3JfcmV0dXJuQHN3Yy9oZWxwZXJzL18vX3Bvc3NpYmxlX2NvbnN0cnVjdG9yX3JldHVybl9yZWFkX29ubHlfZXJyb3JAc3djL2hlbHBlcnMvXy9fcmVhZF9vbmx5X2Vycm9yX3NldEBzd2MvaGVscGVycy9fL19zZXRfc2V0X3Byb3RvdHlwZV9vZkBzd2MvaGVscGVycy9fL19zZXRfcHJvdG90eXBlX29mX3NraXBfZmlyc3RfZ2VuZXJhdG9yX25leHRAc3djL2hlbHBlcnMvXy9fc2tpcF9maXJzdF9nZW5lcmF0b3JfbmV4dF9zbGljZWRfdG9fYXJyYXlAc3djL2hlbHBlcnMvXy9fc2xpY2VkX3RvX2FycmF5X3NsaWNlZF90b19hcnJheV9sb29zZUBzd2MvaGVscGVycy9fL19zbGljZWRfdG9fYXJyYXlfbG9vc2Vfc3VwZXJfcHJvcF9iYXNlQHN3Yy9oZWxwZXJzL18vX3N1cGVyX3Byb3BfYmFzZV90YWdnZWRfdGVtcGxhdGVfbGl0ZXJhbEBzd2MvaGVscGVycy9fL190YWdnZWRfdGVtcGxhdGVfbGl0ZXJhbF90YWdnZWRfdGVtcGxhdGVfbGl0ZXJhbF9sb29zZUBzd2MvaGVscGVycy9fL190YWdnZWRfdGVtcGxhdGVfbGl0ZXJhbF9sb29zZV90aHJvd0Bzd2MvaGVscGVycy9fL190aHJvd190b19hcnJheUBzd2MvaGVscGVycy9fL190b19hcnJheV90b19jb25zdW1hYmxlX2FycmF5QHN3Yy9oZWxwZXJzL18vX3RvX2NvbnN1bWFibGVfYXJyYXlfdG9fcHJpbWl0aXZlQHN3Yy9oZWxwZXJzL18vX3RvX3ByaW1pdGl2ZV90b19wcm9wZXJ0eV9rZXlAc3djL2hlbHBlcnMvXy9fdG9fcHJvcGVydHlfa2V5X3VwZGF0ZUBzd2MvaGVscGVycy9fL191cGRhdGVfdHlwZV9vZkBzd2MvaGVscGVycy9fL190eXBlX29mX3Vuc3VwcG9ydGVkX2l0ZXJhYmxlX3RvX2FycmF5QHN3Yy9oZWxwZXJzL18vX3Vuc3VwcG9ydGVkX2l0ZXJhYmxlX3RvX2FycmF5X3dyYXBfYXN5bmNfZ2VuZXJhdG9yQHN3Yy9oZWxwZXJzL18vX3dyYXBfYXN5bmNfZ2VuZXJhdG9yX3dyYXBfbmF0aXZlX3N1cGVyQHN3Yy9oZWxwZXJzL18vX3dyYXBfbmF0aXZlX3N1cGVyX3dyaXRlX29ubHlfZXJyb3JAc3djL2hlbHBlcnMvXy9fd3JpdGVfb25seV9lcnJvcl9jbGFzc19wcml2YXRlX2ZpZWxkX2Rlc3RydWN0dXJlQHN3Yy9oZWxwZXJzL18vX2NsYXNzX3ByaXZhdGVfZmllbGRfZGVzdHJ1Y3R1cmVfY2xhc3Nfc3RhdGljX3ByaXZhdGVfZmllbGRfZGVzdHJ1Y3R1cmVAc3djL2hlbHBlcnMvXy9fY2xhc3Nfc3RhdGljX3ByaXZhdGVfZmllbGRfZGVzdHJ1Y3R1cmVfY2xhc3Nfc3RhdGljX3ByaXZhdGVfbWV0aG9kX2dldEBzd2MvaGVscGVycy9fL19jbGFzc19zdGF0aWNfcHJpdmF0ZV9tZXRob2RfZ2V0X2NsYXNzX2NoZWNrX3ByaXZhdGVfc3RhdGljX2FjY2Vzc0Bzd2MvaGVscGVycy9fL19jbGFzc19jaGVja19wcml2YXRlX3N0YXRpY19hY2Nlc3NfaXNfbmF0aXZlX3JlZmxlY3RfY29uc3RydWN0QHN3Yy9oZWxwZXJzL18vX2lzX25hdGl2ZV9yZWZsZWN0X2NvbnN0cnVjdF9jcmVhdGVfc3VwZXJAc3djL2hlbHBlcnMvXy9fY3JlYXRlX3N1cGVyX2NyZWF0ZV9mb3Jfb2ZfaXRlcmF0b3JfaGVscGVyX2xvb3NlQHN3Yy9oZWxwZXJzL18vX2NyZWF0ZV9mb3Jfb2ZfaXRlcmF0b3JfaGVscGVyX2xvb3NlX3RzX2RlY29yYXRlQHN3Yy9oZWxwZXJzL18vX3RzX2RlY29yYXRlX3RzX2dlbmVyYXRvckBzd2MvaGVscGVycy9fL190c19nZW5lcmF0b3JfdHNfbWV0YWRhdGFAc3djL2hlbHBlcnMvXy9fdHNfbWV0YWRhdGFfdHNfcGFyYW1Ac3djL2hlbHBlcnMvXy9fdHNfcGFyYW1fdHNfdmFsdWVzQHN3Yy9oZWxwZXJzL18vX3RzX3ZhbHVlc190c19hZGRfZGlzcG9zYWJsZV9yZXNvdXJjZUBzd2MvaGVscGVycy9fL190c19hZGRfZGlzcG9zYWJsZV9yZXNvdXJjZV90c19kaXNwb3NlX3Jlc291cmNlc0Bzd2MvaGVscGVycy9fL190c19kaXNwb3NlX3Jlc291cmNlc19hcHBseV9kZWNzXzIyMDNfckBzd2MvaGVscGVycy9fL19hcHBseV9kZWNzXzIyMDNfcl9pZGVudGl0eUBzd2MvaGVscGVycy9fL19pZGVudGl0eV9kaXNwb3NlQHN3Yy9oZWxwZXJzL18vX2Rpc3Bvc2VfdXNpbmdAc3djL2hlbHBlcnMvXy9fdXNpbmdfdXNpbmdfY3R4QHN3Yy9oZWxwZXJzL18vX3VzaW5nX2N0eGFwcGx5X2RlY29yYXRlZF9kZXNjcmlwdG9yYXJyYXlfbGlrZV90b19hcnJheWFycmF5X3dpdGhfaG9sZXNhcnJheV93aXRob3V0X2hvbGVzYXNzZXJ0X3RoaXNfaW5pdGlhbGl6ZWRhc3luY19nZW5lcmF0b3Jhc3luY19nZW5lcmF0b3JfZGVsZWdhdGVhc3luY19pdGVyYXRvcmFzeW5jX3RvX2dlbmVyYXRvcmF3YWl0X2FzeW5jX2dlbmVyYXRvcmF3YWl0X3ZhbHVlY2FsbF9zdXBlcmNoZWNrX3ByaXZhdGVfcmVkZWNsYXJhdGlvbmNsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfZGVzdHJ1Y3R1cmVjbGFzc19hcHBseV9kZXNjcmlwdG9yX2dldGNsYXNzX2FwcGx5X2Rlc2NyaXB0b3Jfc2V0Y2xhc3NfYXBwbHlfZGVzY3JpcHRvcl91cGRhdGVjbGFzc19jYWxsX2NoZWNrY2xhc3NfY2hlY2tfcHJpdmF0ZV9zdGF0aWNfZmllbGRfZGVzY3JpcHRvcmNsYXNzX2V4dHJhY3RfZmllbGRfZGVzY3JpcHRvcmNsYXNzX25hbWVfdGR6X2Vycm9yY2xhc3NfcHJpdmF0ZV9maWVsZF9nZXRjbGFzc19wcml2YXRlX2ZpZWxkX2luaXRjbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2Jhc2VjbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2tleWNsYXNzX3ByaXZhdGVfZmllbGRfc2V0Y2xhc3NfcHJpdmF0ZV9maWVsZF91cGRhdGVjbGFzc19wcml2YXRlX21ldGhvZF9nZXRjbGFzc19wcml2YXRlX21ldGhvZF9pbml0Y2xhc3NfcHJpdmF0ZV9tZXRob2Rfc2V0Y2xhc3Nfc3RhdGljX3ByaXZhdGVfZmllbGRfc3BlY19nZXRjbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9zcGVjX3NldGNsYXNzX3N0YXRpY19wcml2YXRlX2ZpZWxkX3VwZGF0ZWNvbnN0cnVjdGNyZWF0ZV9jbGFzc2RlY29yYXRlZGVmYXVsdHNkZWZpbmVfZW51bWVyYWJsZV9wcm9wZXJ0aWVzZGVmaW5lX3Byb3BlcnR5ZXhwb3J0X3N0YXJnZXRfcHJvdG90eXBlX29maW5oZXJpdHNpbmhlcml0c19sb29zZWluaXRpYWxpemVyX2RlZmluZV9wcm9wZXJ0eWluaXRpYWxpemVyX3dhcm5pbmdfaGVscGVyaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRpbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmRpc19uYXRpdmVfZnVuY3Rpb25pdGVyYWJsZV90b19hcnJheWl0ZXJhYmxlX3RvX2FycmF5X2xpbWl0aXRlcmFibGVfdG9fYXJyYXlfbGltaXRfbG9vc2Vqc3huZXdfYXJyb3dfY2hlY2tub25faXRlcmFibGVfcmVzdG5vbl9pdGVyYWJsZV9zcHJlYWRvYmplY3RfZGVzdHJ1Y3R1cmluZ19lbXB0eW9iamVjdF9zcHJlYWRvYmplY3Rfc3ByZWFkX3Byb3Bzb2JqZWN0X3dpdGhvdXRfcHJvcGVydGllc29iamVjdF93aXRob3V0X3Byb3BlcnRpZXNfbG9vc2VvdmVybG9hZF95aWVsZHBvc3NpYmxlX2NvbnN0cnVjdG9yX3JldHVybnJlYWRfb25seV9lcnJvcnNldF9wcm90b3R5cGVfb2Zza2lwX2ZpcnN0X2dlbmVyYXRvcl9uZXh0c2xpY2VkX3RvX2FycmF5c2xpY2VkX3RvX2FycmF5X2xvb3Nlc3VwZXJfcHJvcF9iYXNldGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWx0YWdnZWRfdGVtcGxhdGVfbGl0ZXJhbF9sb29zZXRvX2FycmF5dG9fY29uc3VtYWJsZV9hcnJheXRvX3ByaW1pdGl2ZXRvX3Byb3BlcnR5X2tleXR5cGVfb2Z1bnN1cHBvcnRlZF9pdGVyYWJsZV90b19hcnJheXdyYXBfYXN5bmNfZ2VuZXJhdG9yd3JhcF9uYXRpdmVfc3VwZXJ3cml0ZV9vbmx5X2Vycm9yY2xhc3NfcHJpdmF0ZV9maWVsZF9kZXN0cnVjdHVyZWNsYXNzX3N0YXRpY19wcml2YXRlX2ZpZWxkX2Rlc3RydWN0dXJlY2xhc3Nfc3RhdGljX3ByaXZhdGVfbWV0aG9kX2dldGNsYXNzX2NoZWNrX3ByaXZhdGVfc3RhdGljX2FjY2Vzc2lzX25hdGl2ZV9yZWZsZWN0X2NvbnN0cnVjdGNyZWF0ZV9zdXBlcmNyZWF0ZV9mb3Jfb2ZfaXRlcmF0b3JfaGVscGVyX2xvb3NldHNfZGVjb3JhdGV0c19nZW5lcmF0b3J0c19tZXRhZGF0YXRzX3BhcmFtdHNfdmFsdWVzdHNfYWRkX2Rpc3Bvc2FibGVfcmVzb3VyY2V0c19kaXNwb3NlX3Jlc291cmNlc2FwcGx5X2RlY3NfMjIwM19yaWRlbnRpdHlkaXNwb3NldXNpbmdfY3R4JG5hbWVpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBFcnJvciBvY2N1cnJlZCB3aGlsZSBwYXJzaW5nIGVycm9yOiAADeEmAE4AAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zd2NfZWNtYV90cmFuc2Zvcm1zX2Jhc2UtMTYuMC4wL3NyYy9oZWxwZXJzL21vZC5ycwBk4SYAdwAAACgAAAAJAAAAQHN3Yy9oZWxwZXJzL18vX+zhJgAQAAAAcmVzb3VyY2VfX190c18AACsJAABmdW5jdGlvbiBfYXBwbHlfZGVjb3JhdGVkX2Rlc2NyaXB0b3IodGFyZ2V0LCBwcm9wZXJ0eSwgZGVjb3JhdG9ycywgZGVzY3JpcHRvciwgY29udGV4dCkgewogICAgdmFyIGRlc2MgPSB7fTsKICAgIE9iamVjdFsia2UiICsgInlzIl0oZGVzY3JpcHRvcikuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsKICAgICAgICBkZXNjW2tleV0gPSBkZXNjcmlwdG9yW2tleV07CiAgICB9KTsKICAgIGRlc2MuZW51bWVyYWJsZSA9ICEhZGVzYy5lbnVtZXJhYmxlOwogICAgZGVzYy5jb25maWd1cmFibGUgPSAhIWRlc2MuY29uZmlndXJhYmxlOwogICAgaWYgKCJ2YWx1ZSIgaW4gZGVzYyB8fCBkZXNjLmluaXRpYWxpemVyKSB7CiAgICAgICAgZGVzYy53cml0YWJsZSA9IHRydWU7CiAgICB9CiAgICBkZXNjID0gZGVjb3JhdG9ycy5zbGljZSgpLnJldmVyc2UoKS5yZWR1Y2UoZnVuY3Rpb24oZGVzYywgZGVjb3JhdG9yKSB7CiAgICAgICAgcmV0dXJuIGRlY29yYXRvciA/IGRlY29yYXRvcih0YXJnZXQsIHByb3BlcnR5LCBkZXNjKSB8fCBkZXNjIDogZGVzYzsKICAgIH0sIGRlc2MpOwogICAgdmFyIGhhc0FjY2Vzc29yID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRlc2MsICJnZXQiKSB8fCBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGVzYywgInNldCIpOwogICAgaWYgKGNvbnRleHQgJiYgZGVzYy5pbml0aWFsaXplciAhPT0gdm9pZCAwICYmICFoYXNBY2Nlc3NvcikgewogICAgICAgIGRlc2MudmFsdWUgPSBkZXNjLmluaXRpYWxpemVyID8gZGVzYy5pbml0aWFsaXplci5jYWxsKGNvbnRleHQpIDogdm9pZCAwOwogICAgICAgIGRlc2MuaW5pdGlhbGl6ZXIgPSB1bmRlZmluZWQ7CiAgICB9CiAgICBpZiAoaGFzQWNjZXNzb3IpIHsKICAgICAgICBkZWxldGUgZGVzYy53cml0YWJsZTsKICAgICAgICBkZWxldGUgZGVzYy5pbml0aWFsaXplcjsKICAgICAgICBkZWxldGUgZGVzYy52YWx1ZTsKICAgIH0KICAgIGlmIChkZXNjLmluaXRpYWxpemVyID09PSB2b2lkIDApIHsKICAgICAgICBPYmplY3RbImRlZmluZSIgKyAiUHJvcGVydHkiXSh0YXJnZXQsIHByb3BlcnR5LCBkZXNjKTsKICAgICAgICBkZXNjID0gbnVsbDsKICAgIH0KICAgIHJldHVybiBkZXNjOwp9CmZ1bmN0aW9uIF9hcnJheV9saWtlX3RvX2FycmF5KGFyciwgbGVuKSB7CiAgICBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsKICAgIGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTsKICAgIHJldHVybiBhcnIyOwp9CmZ1bmN0aW9uIF9hcnJheV93aXRoX2hvbGVzKGFycikgewogICAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsKfQpmdW5jdGlvbiBfYXJyYXlfd2l0aG91dF9ob2xlcyhhcnIpIHsKICAgIGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBfYXJyYXlfbGlrZV90b19hcnJheShhcnIpOwp9CmZ1bmN0aW9uIF9hc3NlcnRfdGhpc19pbml0aWFsaXplZChzZWxmKSB7CiAgICBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7CiAgICAgICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgIH0KICAgIHJldHVybiBzZWxmOwp9CmZ1bmN0aW9uIF9hc3luY19nZW5lcmF0b3IoZ2VuKSB7CiAgICB2YXIgZnJvbnQsIGJhY2s7CiAgICBmdW5jdGlvbiBzZW5kKGtleSwgYXJnKSB7CiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICB2YXIgcmVxdWVzdCA9IHsga2V5OiBrZXksIGFyZzogYXJnLCByZXNvbHZlOiByZXNvbHZlLCByZWplY3Q6IHJlamVjdCwgbmV4dDogbnVsbCB9OwogICAgICAgICAgICBpZiAoYmFjaykgYmFjayA9IGJhY2submV4dCA9IHJlcXVlc3Q7CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgZnJvbnQgPSBiYWNrID0gcmVxdWVzdDsKICAgICAgICAgICAgICAgIHJlc3VtZShrZXksIGFyZyk7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH0KICAgIGZ1bmN0aW9uIHJlc3VtZShrZXksIGFyZykgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHZhciByZXN1bHQgPSBnZW5ba2V5XShhcmcpOwogICAgICAgICAgICB2YXIgdmFsdWUgPSByZXN1bHQudmFsdWU7CiAgICAgICAgICAgIHZhciBvdmVybG9hZGVkID0gdmFsdWUgaW5zdGFuY2VvZiBfb3ZlcmxvYWRfeWllbGQ7CiAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZShvdmVybG9hZGVkID8gdmFsdWUudiA6IHZhbHVlKS50aGVuKGZ1bmN0aW9uKGFyZykgewogICAgICAgICAgICAgICAgaWYgKG92ZXJsb2FkZWQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dEtleSA9IGtleSA9PT0gInJldHVybiIgPyAicmV0dXJuIiA6ICJuZXh0IjsKICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlLmsgfHwgYXJnLmRvbmUpIHJldHVybiByZXN1bWUobmV4dEtleSwgYXJnKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGFyZyA9IGdlbltuZXh0S2V5XShhcmcpLnZhbHVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2V0dGxlKHJlc3VsdC5kb25lID8gInJldHVybiIgOiAibm9ybWFsIiwgYXJnKTsKICAgICAgICAgICAgfSwgZnVuY3Rpb24oZXJyKSB7CiAgICAgICAgICAgICAgICByZXN1bWUoInRocm93IiwgZXJyKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgICAgIHNldHRsZSgidGhyb3ciLCBlcnIpOwogICAgICAgIH0KICAgIH0KICAgIGZ1bmN0aW9uIHNldHRsZSh0eXBlLCB2YWx1ZSkgewogICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICAgICBjYXNlICJyZXR1cm4iOgogICAgICAgICAgICAgICAgZnJvbnQucmVzb2x2ZSh7IHZhbHVlOiB2YWx1ZSwgZG9uZTogdHJ1ZSB9KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJ0aHJvdyI6CiAgICAgICAgICAgICAgICBmcm9udC5yZWplY3QodmFsdWUpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBmcm9udC5yZXNvbHZlKHsgdmFsdWU6IHZhbHVlLCBkb25lOiBmYWxzZSB9KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBmcm9udCA9IGZyb250Lm5leHQ7CiAgICAgICAgaWYgKGZyb250KSByZXN1bWUoZnJvbnQua2V5LCBmcm9udC5hcmcpOwogICAgICAgIGVsc2UgYmFjayA9IG51bGw7CiAgICB9CgogICAgdGhpcy5faW52b2tlID0gc2VuZDsKICAgIGlmICh0eXBlb2YgZ2VuLnJldHVybiAhPT0gImZ1bmN0aW9uIikgdGhpcy5yZXR1cm4gPSB1bmRlZmluZWQ7Cn0KX2FzeW5jX2dlbmVyYXRvci5wcm90b3R5cGVbKHR5cGVvZiBTeW1ib2wgPT09ICJmdW5jdGlvbiIgJiYgU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHx8ICJAQGFzeW5jSXRlcmF0b3IiXSA9IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXM7Cn07Cl9hc3luY19nZW5lcmF0b3IucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbihhcmcpIHsKICAgIHJldHVybiB0aGlzLl9pbnZva2UoIm5leHQiLCBhcmcpOwp9OwpfYXN5bmNfZ2VuZXJhdG9yLnByb3RvdHlwZS50aHJvdyA9IGZ1bmN0aW9uKGFyZykgewogICAgcmV0dXJuIHRoaXMuX2ludm9rZSgidGhyb3ciLCBhcmcpOwp9OwpfYXN5bmNfZ2VuZXJhdG9yLnByb3RvdHlwZS5yZXR1cm4gPSBmdW5jdGlvbihhcmcpIHsKICAgIHJldHVybiB0aGlzLl9pbnZva2UoInJldHVybiIsIGFyZyk7Cn07CmZ1bmN0aW9uIF9hc3luY19nZW5lcmF0b3JfZGVsZWdhdGUoaW5uZXIpIHsKICAgIHZhciBpdGVyID0ge30sIHdhaXRpbmcgPSBmYWxzZTsKICAgIGZ1bmN0aW9uIHB1bXAoa2V5LCB2YWx1ZSkgewogICAgICAgIHdhaXRpbmcgPSB0cnVlOwogICAgICAgIHZhbHVlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkgewogICAgICAgICAgICByZXNvbHZlKGlubmVyW2tleV0odmFsdWUpKTsKICAgICAgICB9KTsKICAgICAgICByZXR1cm4geyBkb25lOiBmYWxzZSwgdmFsdWU6IG5ldyBfb3ZlcmxvYWRfeWllbGQodmFsdWUsIC8qIGtpbmQ6IGRlbGVnYXRlICovIDEpIH07CiAgICB9CiAgICBpdGVyWyh0eXBlb2YgU3ltYm9sICE9PSAidW5kZWZpbmVkIiAmJiBTeW1ib2wuaXRlcmF0b3IpIHx8ICJAQGl0ZXJhdG9yIl0gPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpczsKICAgIH07CiAgICBpdGVyLm5leHQgPSBmdW5jdGlvbih2YWx1ZSkgewogICAgICAgIGlmICh3YWl0aW5nKSB7CiAgICAgICAgICAgIHdhaXRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcHVtcCgibmV4dCIsIHZhbHVlKTsKICAgIH07CiAgICBpZiAodHlwZW9mIGlubmVyLnRocm93ID09PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgaXRlci50aHJvdyA9IGZ1bmN0aW9uKHZhbHVlKSB7CiAgICAgICAgICAgIGlmICh3YWl0aW5nKSB7CiAgICAgICAgICAgICAgICB3YWl0aW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICB0aHJvdyB2YWx1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcHVtcCgidGhyb3ciLCB2YWx1ZSk7CiAgICAgICAgfTsKICAgIH0KICAgIGlmICh0eXBlb2YgaW5uZXIucmV0dXJuID09PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgaXRlci5yZXR1cm4gPSBmdW5jdGlvbih2YWx1ZSkgewogICAgICAgICAgICBpZiAod2FpdGluZykgewogICAgICAgICAgICAgICAgd2FpdGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBwdW1wKCJyZXR1cm4iLCB2YWx1ZSk7CiAgICAgICAgfTsKICAgIH0KICAgIHJldHVybiBpdGVyOwp9CmZ1bmN0aW9uIF9hc3luY19pdGVyYXRvcihpdGVyYWJsZSkgewogICAgdmFyIG1ldGhvZCwgYXN5bmMsIHN5bmMsIHJldHJ5ID0gMjsKICAgIGZvciAoInVuZGVmaW5lZCIgIT0gdHlwZW9mIFN5bWJvbCAmJiAoYXN5bmMgPSBTeW1ib2wuYXN5bmNJdGVyYXRvciwgc3luYyA9IFN5bWJvbC5pdGVyYXRvcik7IHJldHJ5LS07KSB7CiAgICAgICAgaWYgKGFzeW5jICYmIG51bGwgIT0gKG1ldGhvZCA9IGl0ZXJhYmxlW2FzeW5jXSkpIHJldHVybiBtZXRob2QuY2FsbChpdGVyYWJsZSk7CiAgICAgICAgaWYgKHN5bmMgJiYgbnVsbCAhPSAobWV0aG9kID0gaXRlcmFibGVbc3luY10pKSByZXR1cm4gbmV3IEFzeW5jRnJvbVN5bmNJdGVyYXRvcihtZXRob2QuY2FsbChpdGVyYWJsZSkpOwogICAgICAgIGFzeW5jID0gIkBAYXN5bmNJdGVyYXRvciIsIHN5bmMgPSAiQEBpdGVyYXRvciI7CiAgICB9CiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgaXMgbm90IGFzeW5jIGl0ZXJhYmxlIik7Cn0KZnVuY3Rpb24gQXN5bmNGcm9tU3luY0l0ZXJhdG9yKHMpIHsKICAgIGZ1bmN0aW9uIEFzeW5jRnJvbVN5bmNJdGVyYXRvckNvbnRpbnVhdGlvbihyKSB7CiAgICAgICAgaWYgKE9iamVjdChyKSAhPT0gcikgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IociArICIgaXMgbm90IGFuIG9iamVjdC4iKSk7CiAgICAgICAgdmFyIGRvbmUgPSByLmRvbmU7CiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyLnZhbHVlKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7CiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiB2YWx1ZSwgZG9uZTogZG9uZSB9OwogICAgICAgIH0pOwogICAgfQogICAgcmV0dXJuIEFzeW5jRnJvbVN5bmNJdGVyYXRvciA9IGZ1bmN0aW9uKHMpIHsKICAgICAgICB0aGlzLnMgPSBzLCB0aGlzLm4gPSBzLm5leHQ7CiAgICB9LAogICAgICAgIEFzeW5jRnJvbVN5bmNJdGVyYXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgIHM6IG51bGwsCiAgICAgICAgICAgIG46IG51bGwsCiAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIEFzeW5jRnJvbVN5bmNJdGVyYXRvckNvbnRpbnVhdGlvbih0aGlzLm4uYXBwbHkodGhpcy5zLCBhcmd1bWVudHMpKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmV0dXJuOiBmdW5jdGlvbih2YWx1ZSkgewogICAgICAgICAgICAgICAgdmFyIHJldCA9IHRoaXMucy5yZXR1cm47CiAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSByZXQKICAgICAgICAgICAgICAgICAgICA/IFByb21pc2UucmVzb2x2ZSh7IHZhbHVlOiB2YWx1ZSwgZG9uZTogITAgfSkKICAgICAgICAgICAgICAgICAgICA6IEFzeW5jRnJvbVN5bmNJdGVyYXRvckNvbnRpbnVhdGlvbihyZXQuYXBwbHkodGhpcy5zLCBhcmd1bWVudHMpKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdGhyb3c6IGZ1bmN0aW9uKHZhbHVlKSB7CiAgICAgICAgICAgICAgICB2YXIgdGhyID0gdGhpcy5zLnJldHVybjsKICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IHRociA/IFByb21pc2UucmVqZWN0KHZhbHVlKSA6IEFzeW5jRnJvbVN5bmNJdGVyYXRvckNvbnRpbnVhdGlvbih0aHIuYXBwbHkodGhpcy5zLCBhcmd1bWVudHMpKTsKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgbmV3IEFzeW5jRnJvbVN5bmNJdGVyYXRvcihzKTsKfQpmdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIGtleSwgYXJnKSB7CiAgICB0cnkgewogICAgICAgIHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTsKICAgICAgICB2YXIgdmFsdWUgPSBpbmZvLnZhbHVlOwogICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICByZWplY3QoZXJyb3IpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmIChpbmZvLmRvbmUpIHsKICAgICAgICByZXNvbHZlKHZhbHVlKTsKICAgIH0gZWxzZSB7CiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKF9uZXh0LCBfdGhyb3cpOwogICAgfQp9CmZ1bmN0aW9uIF9hc3luY190b19nZW5lcmF0b3IoZm4pIHsKICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgc2VsZiA9IHRoaXMsIGFyZ3MgPSBhcmd1bWVudHM7CiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICB2YXIgZ2VuID0gZm4uYXBwbHkoc2VsZiwgYXJncyk7CiAgICAgICAgICAgIGZ1bmN0aW9uIF9uZXh0KHZhbHVlKSB7CiAgICAgICAgICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csICJuZXh0IiwgdmFsdWUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIF90aHJvdyhlcnIpIHsKICAgICAgICAgICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgInRocm93IiwgZXJyKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBfbmV4dCh1bmRlZmluZWQpOwogICAgICAgIH0pOwogICAgfTsKfQpmdW5jdGlvbiBfYXdhaXRfYXN5bmNfZ2VuZXJhdG9yKHZhbHVlKSB7CiAgICByZXR1cm4gbmV3IF9vdmVybG9hZF95aWVsZCh2YWx1ZSwgLyoga2luZDogYXdhaXQgKi8gMCk7Cn0KZnVuY3Rpb24gX2F3YWl0X3ZhbHVlKHZhbHVlKSB7CiAgICB0aGlzLndyYXBwZWQgPSB2YWx1ZTsKfQpmdW5jdGlvbiBfY2FsbF9zdXBlcihfdGhpcywgZGVyaXZlZCwgYXJncykgewogICAgLy8gU3VwZXIKICAgIGRlcml2ZWQgPSBfZ2V0X3Byb3RvdHlwZV9vZihkZXJpdmVkKTsKICAgIHJldHVybiBfcG9zc2libGVfY29uc3RydWN0b3JfcmV0dXJuKAogICAgICAgIF90aGlzLAogICAgICAgIF9pc19uYXRpdmVfcmVmbGVjdF9jb25zdHJ1Y3QoKQogICAgICAgICAgICAvLyBOT1RFOiBUaGlzIGRvZXNuJ3Qgd29yayBpZiB0aGlzLl9fcHJvdG9fXy5jb25zdHJ1Y3RvciBoYXMgYmVlbiBtb2RpZmllZC4KICAgICAgICAgICAgPyBSZWZsZWN0LmNvbnN0cnVjdChkZXJpdmVkLCBhcmdzIHx8IFtdLCBfZ2V0X3Byb3RvdHlwZV9vZihfdGhpcykuY29uc3RydWN0b3IpCiAgICAgICAgICAgIDogZGVyaXZlZC5hcHBseShfdGhpcywgYXJncykKICAgICk7Cn0KZnVuY3Rpb24gX2NoZWNrX3ByaXZhdGVfcmVkZWNsYXJhdGlvbihvYmosIHByaXZhdGVDb2xsZWN0aW9uKSB7CiAgICBpZiAocHJpdmF0ZUNvbGxlY3Rpb24uaGFzKG9iaikpIHsKICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpOwogICAgfQp9CmZ1bmN0aW9uIF9jbGFzc19hcHBseV9kZXNjcmlwdG9yX2Rlc3RydWN0dXJlKHJlY2VpdmVyLCBkZXNjcmlwdG9yKSB7CiAgICBpZiAoZGVzY3JpcHRvci5zZXQpIHsKICAgICAgICBpZiAoISgiX19kZXN0ck9iaiIgaW4gZGVzY3JpcHRvcikpIHsKICAgICAgICAgICAgZGVzY3JpcHRvci5fX2Rlc3RyT2JqID0gewogICAgICAgICAgICAgICAgc2V0IHZhbHVlKHYpIHsKICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLnNldC5jYWxsKHJlY2VpdmVyLCB2KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3IuX19kZXN0ck9iajsKICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKCFkZXNjcmlwdG9yLndyaXRhYmxlKSB7CiAgICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgdGhyb3cgaW4gc3RyaWN0IG1vZGUsIGJ1dCBjbGFzcyBib2RpZXMgYXJlCiAgICAgICAgICAgIC8vIGFsd2F5cyBzdHJpY3QgYW5kIHByaXZhdGUgZmllbGRzIGNhbiBvbmx5IGJlIHVzZWQgaW5zaWRlCiAgICAgICAgICAgIC8vIGNsYXNzIGJvZGllcy4KICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjsKICAgIH0KfQpmdW5jdGlvbiBfY2xhc3NfYXBwbHlfZGVzY3JpcHRvcl9nZXQocmVjZWl2ZXIsIGRlc2NyaXB0b3IpIHsKICAgIGlmIChkZXNjcmlwdG9yLmdldCkgewogICAgICAgIHJldHVybiBkZXNjcmlwdG9yLmdldC5jYWxsKHJlY2VpdmVyKTsKICAgIH0KICAgIHJldHVybiBkZXNjcmlwdG9yLnZhbHVlOwp9CmZ1bmN0aW9uIF9jbGFzc19hcHBseV9kZXNjcmlwdG9yX3NldChyZWNlaXZlciwgZGVzY3JpcHRvciwgdmFsdWUpIHsKICAgIGlmIChkZXNjcmlwdG9yLnNldCkgewogICAgICAgIGRlc2NyaXB0b3Iuc2V0LmNhbGwocmVjZWl2ZXIsIHZhbHVlKTsKICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKCFkZXNjcmlwdG9yLndyaXRhYmxlKSB7CiAgICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgdGhyb3cgaW4gc3RyaWN0IG1vZGUsIGJ1dCBjbGFzcyBib2RpZXMgYXJlCiAgICAgICAgICAgIC8vIGFsd2F5cyBzdHJpY3QgYW5kIHByaXZhdGUgZmllbGRzIGNhbiBvbmx5IGJlIHVzZWQgaW5zaWRlCiAgICAgICAgICAgIC8vIGNsYXNzIGJvZGllcy4KICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpOwogICAgICAgIH0KICAgICAgICBkZXNjcmlwdG9yLnZhbHVlID0gdmFsdWU7CiAgICB9Cn0KZnVuY3Rpb24gX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfdXBkYXRlKHJlY2VpdmVyLCBkZXNjcmlwdG9yKSB7CiAgICBpZiAoZGVzY3JpcHRvci5zZXQpIHsKICAgICAgICBpZiAoIWRlc2NyaXB0b3IuZ2V0KSB7CiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byByZWFkIHNldCBvbmx5IHByaXZhdGUgZmllbGQiKTsKICAgICAgICB9CiAgICAgICAgaWYgKCEoIl9fZGVzdHJXcmFwcGVyIiBpbiBkZXNjcmlwdG9yKSkgewogICAgICAgICAgICBkZXNjcmlwdG9yLl9fZGVzdHJXcmFwcGVyID0gewogICAgICAgICAgICAgICAgc2V0IHZhbHVlKHYpIHsKICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLnNldC5jYWxsKHJlY2VpdmVyLCB2KTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXQgdmFsdWUoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3IuZ2V0LmNhbGwocmVjZWl2ZXIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICByZXR1cm4gZGVzY3JpcHRvci5fX2Rlc3RyV3JhcHBlcjsKICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKCFkZXNjcmlwdG9yLndyaXRhYmxlKSB7CiAgICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgdGhyb3cgaW4gc3RyaWN0IG1vZGUsIGJ1dCBjbGFzcyBib2RpZXMgYXJlCiAgICAgICAgICAgIC8vIGFsd2F5cyBzdHJpY3QgYW5kIHByaXZhdGUgZmllbGRzIGNhbiBvbmx5IGJlIHVzZWQgaW5zaWRlCiAgICAgICAgICAgIC8vIGNsYXNzIGJvZGllcy4KICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjsKICAgIH0KfQpmdW5jdGlvbiBfY2xhc3NfY2FsbF9jaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsKICAgIGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7CiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIik7CiAgICB9Cn0KZnVuY3Rpb24gX2NsYXNzX2NoZWNrX3ByaXZhdGVfc3RhdGljX2ZpZWxkX2Rlc2NyaXB0b3IoZGVzY3JpcHRvciwgYWN0aW9uKSB7CiAgICBpZiAoZGVzY3JpcHRvciA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIgKyBhY3Rpb24gKyAiIHByaXZhdGUgc3RhdGljIGZpZWxkIGJlZm9yZSBpdHMgZGVjbGFyYXRpb24iKTsKICAgIH0KfQpmdW5jdGlvbiBfY2xhc3NfZXh0cmFjdF9maWVsZF9kZXNjcmlwdG9yKHJlY2VpdmVyLCBwcml2YXRlTWFwLCBhY3Rpb24pIHsKICAgIGlmICghcHJpdmF0ZU1hcC5oYXMocmVjZWl2ZXIpKSB7CiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIgKyBhY3Rpb24gKyAiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7CiAgICB9CiAgICByZXR1cm4gcHJpdmF0ZU1hcC5nZXQocmVjZWl2ZXIpOwp9CmZ1bmN0aW9uIF9jbGFzc19uYW1lX3Rkel9lcnJvcihuYW1lKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoIkNsYXNzIFwiIiArIG5hbWUgKyAiXCIgY2Fubm90IGJlIHJlZmVyZW5jZWQgaW4gY29tcHV0ZWQgcHJvcGVydHkga2V5cy4iKTsKfQpmdW5jdGlvbiBfY2xhc3NfcHJpdmF0ZV9maWVsZF9nZXQocmVjZWl2ZXIsIHByaXZhdGVNYXApIHsKICAgIHZhciBkZXNjcmlwdG9yID0gX2NsYXNzX2V4dHJhY3RfZmllbGRfZGVzY3JpcHRvcihyZWNlaXZlciwgcHJpdmF0ZU1hcCwgImdldCIpOwogICAgcmV0dXJuIF9jbGFzc19hcHBseV9kZXNjcmlwdG9yX2dldChyZWNlaXZlciwgZGVzY3JpcHRvcik7Cn0KZnVuY3Rpb24gX2NsYXNzX3ByaXZhdGVfZmllbGRfaW5pdChvYmosIHByaXZhdGVNYXAsIHZhbHVlKSB7CiAgICBfY2hlY2tfcHJpdmF0ZV9yZWRlY2xhcmF0aW9uKG9iaiwgcHJpdmF0ZU1hcCk7CiAgICBwcml2YXRlTWFwLnNldChvYmosIHZhbHVlKTsKfQpmdW5jdGlvbiBfY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9iYXNlKHJlY2VpdmVyLCBwcml2YXRlS2V5KSB7CiAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyZWNlaXZlciwgcHJpdmF0ZUtleSkpIHsKICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gdXNlIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7CiAgICB9CiAgICByZXR1cm4gcmVjZWl2ZXI7Cn0KdmFyIGlkID0gMDsKZnVuY3Rpb24gX2NsYXNzX3ByaXZhdGVfZmllbGRfbG9vc2Vfa2V5KG5hbWUpIHsKICAgIHJldHVybiAiX19wcml2YXRlXyIgKyBpZCsrICsgIl8iICsgbmFtZTsKfQpmdW5jdGlvbiBfY2xhc3NfcHJpdmF0ZV9maWVsZF9zZXQocmVjZWl2ZXIsIHByaXZhdGVNYXAsIHZhbHVlKSB7CiAgICB2YXIgZGVzY3JpcHRvciA9IF9jbGFzc19leHRyYWN0X2ZpZWxkX2Rlc2NyaXB0b3IocmVjZWl2ZXIsIHByaXZhdGVNYXAsICJzZXQiKTsKICAgIF9jbGFzc19hcHBseV9kZXNjcmlwdG9yX3NldChyZWNlaXZlciwgZGVzY3JpcHRvciwgdmFsdWUpOwogICAgcmV0dXJuIHZhbHVlOwp9CmZ1bmN0aW9uIF9jbGFzc19wcml2YXRlX2ZpZWxkX3VwZGF0ZShyZWNlaXZlciwgcHJpdmF0ZU1hcCkgewogICAgdmFyIGRlc2NyaXB0b3IgPSBfY2xhc3NfZXh0cmFjdF9maWVsZF9kZXNjcmlwdG9yKHJlY2VpdmVyLCBwcml2YXRlTWFwLCAidXBkYXRlIik7CiAgICByZXR1cm4gX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfdXBkYXRlKHJlY2VpdmVyLCBkZXNjcmlwdG9yKTsKfQpmdW5jdGlvbiBfY2xhc3NfcHJpdmF0ZV9tZXRob2RfZ2V0KHJlY2VpdmVyLCBwcml2YXRlU2V0LCBmbikgewogICAgaWYgKCFwcml2YXRlU2V0LmhhcyhyZWNlaXZlcikpIHsKICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7CiAgICB9CiAgICByZXR1cm4gZm47Cn0KZnVuY3Rpb24gX2NsYXNzX3ByaXZhdGVfbWV0aG9kX2luaXQob2JqLCBwcml2YXRlU2V0KSB7CiAgICBfY2hlY2tfcHJpdmF0ZV9yZWRlY2xhcmF0aW9uKG9iaiwgcHJpdmF0ZVNldCk7CiAgICBwcml2YXRlU2V0LmFkZChvYmopOwp9CmZ1bmN0aW9uIF9jbGFzc19wcml2YXRlX21ldGhvZF9zZXQoKSB7CiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gcmVhc3NpZ24gcHJpdmF0ZSBtZXRob2QiKTsKfQpmdW5jdGlvbiBfY2xhc3Nfc3RhdGljX3ByaXZhdGVfZmllbGRfc3BlY19nZXQocmVjZWl2ZXIsIGNsYXNzQ29uc3RydWN0b3IsIGRlc2NyaXB0b3IpIHsKICAgIF9jbGFzc19jaGVja19wcml2YXRlX3N0YXRpY19hY2Nlc3MocmVjZWl2ZXIsIGNsYXNzQ29uc3RydWN0b3IpOwogICAgX2NsYXNzX2NoZWNrX3ByaXZhdGVfc3RhdGljX2ZpZWxkX2Rlc2NyaXB0b3IoZGVzY3JpcHRvciwgImdldCIpOwogICAgcmV0dXJuIF9jbGFzc19hcHBseV9kZXNjcmlwdG9yX2dldChyZWNlaXZlciwgZGVzY3JpcHRvcik7Cn0KZnVuY3Rpb24gX2NsYXNzX3N0YXRpY19wcml2YXRlX2ZpZWxkX3NwZWNfc2V0KHJlY2VpdmVyLCBjbGFzc0NvbnN0cnVjdG9yLCBkZXNjcmlwdG9yLCB2YWx1ZSkgewogICAgX2NsYXNzX2NoZWNrX3ByaXZhdGVfc3RhdGljX2FjY2VzcyhyZWNlaXZlciwgY2xhc3NDb25zdHJ1Y3Rvcik7CiAgICBfY2xhc3NfY2hlY2tfcHJpdmF0ZV9zdGF0aWNfZmllbGRfZGVzY3JpcHRvcihkZXNjcmlwdG9yLCAic2V0Iik7CiAgICBfY2xhc3NfYXBwbHlfZGVzY3JpcHRvcl9zZXQocmVjZWl2ZXIsIGRlc2NyaXB0b3IsIHZhbHVlKTsKICAgIHJldHVybiB2YWx1ZTsKfQpmdW5jdGlvbiBfY2xhc3Nfc3RhdGljX3ByaXZhdGVfZmllbGRfdXBkYXRlKHJlY2VpdmVyLCBjbGFzc0NvbnN0cnVjdG9yLCBkZXNjcmlwdG9yKSB7CiAgICBfY2xhc3NfY2hlY2tfcHJpdmF0ZV9zdGF0aWNfYWNjZXNzKHJlY2VpdmVyLCBjbGFzc0NvbnN0cnVjdG9yKTsKICAgIF9jbGFzc19jaGVja19wcml2YXRlX3N0YXRpY19maWVsZF9kZXNjcmlwdG9yKGRlc2NyaXB0b3IsICJ1cGRhdGUiKTsKICAgIHJldHVybiBfY2xhc3NfYXBwbHlfZGVzY3JpcHRvcl91cGRhdGUocmVjZWl2ZXIsIGRlc2NyaXB0b3IpOwp9CmZ1bmN0aW9uIF9jb25zdHJ1Y3QoUGFyZW50LCBhcmdzLCBDbGFzcykgewogICAgaWYgKF9pc19uYXRpdmVfcmVmbGVjdF9jb25zdHJ1Y3QoKSkgewogICAgICAgIF9jb25zdHJ1Y3QgPSBSZWZsZWN0LmNvbnN0cnVjdDsKICAgIH0gZWxzZSB7CiAgICAgICAgX2NvbnN0cnVjdCA9IGZ1bmN0aW9uIGNvbnN0cnVjdChQYXJlbnQsIGFyZ3MsIENsYXNzKSB7CiAgICAgICAgICAgIHZhciBhID0gW251bGxdOwogICAgICAgICAgICBhLnB1c2guYXBwbHkoYSwgYXJncyk7CiAgICAgICAgICAgIHZhciBDb25zdHJ1Y3RvciA9IEZ1bmN0aW9uLmJpbmQuYXBwbHkoUGFyZW50LCBhKTsKICAgICAgICAgICAgdmFyIGluc3RhbmNlID0gbmV3IENvbnN0cnVjdG9yKCk7CiAgICAgICAgICAgIGlmIChDbGFzcykgX3NldF9wcm90b3R5cGVfb2YoaW5zdGFuY2UsIENsYXNzLnByb3RvdHlwZSk7CiAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICAgICB9OwogICAgfQogICAgcmV0dXJuIF9jb25zdHJ1Y3QuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKfQpmdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsKICAgICAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7CiAgICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOwogICAgICAgIGlmICgidmFsdWUiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsKICAgIH0KfQpmdW5jdGlvbiBfY3JlYXRlX2NsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgewogICAgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7CiAgICBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7CiAgICByZXR1cm4gQ29uc3RydWN0b3I7Cn0KZnVuY3Rpb24gX2RlY29yYXRlKGRlY29yYXRvcnMsIGZhY3RvcnksIHN1cGVyQ2xhc3MpIHsKICAgIHZhciByID0gZmFjdG9yeShmdW5jdGlvbiBpbml0aWFsaXplKE8pIHsKICAgICAgICBfaW5pdGlhbGl6ZUluc3RhbmNlRWxlbWVudHMoTywgZGVjb3JhdGVkLmVsZW1lbnRzKTsKICAgIH0sIHN1cGVyQ2xhc3MpOwogICAgdmFyIGRlY29yYXRlZCA9IF9kZWNvcmF0ZUNsYXNzKF9jb2FsZXNjZUNsYXNzRWxlbWVudHMoci5kLm1hcChfY3JlYXRlRWxlbWVudERlc2NyaXB0b3IpKSwgZGVjb3JhdG9ycyk7CiAgICBfaW5pdGlhbGl6ZUNsYXNzRWxlbWVudHMoci5GLCBkZWNvcmF0ZWQuZWxlbWVudHMpOwogICAgcmV0dXJuIF9ydW5DbGFzc0ZpbmlzaGVycyhyLkYsIGRlY29yYXRlZC5maW5pc2hlcnMpOwp9CgpmdW5jdGlvbiBfY3JlYXRlRWxlbWVudERlc2NyaXB0b3IoZGVmKSB7CiAgICB2YXIga2V5ID0gX3RvX3Byb3BlcnR5X2tleShkZWYua2V5KTsKICAgIHZhciBkZXNjcmlwdG9yOwogICAgaWYgKGRlZi5raW5kID09PSAibWV0aG9kIikgewogICAgICAgIGRlc2NyaXB0b3IgPSB7IHZhbHVlOiBkZWYudmFsdWUsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIGVudW1lcmFibGU6IGZhbHNlIH07CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRlZi52YWx1ZSwgIm5hbWUiLCB7IHZhbHVlOiBfdHlwZV9vZihrZXkpID09PSAic3ltYm9sIiA/ICIiIDoga2V5LCBjb25maWd1cmFibGU6IHRydWUgfSk7CiAgICB9IGVsc2UgaWYgKGRlZi5raW5kID09PSAiZ2V0IikgewogICAgICAgIGRlc2NyaXB0b3IgPSB7IGdldDogZGVmLnZhbHVlLCBjb25maWd1cmFibGU6IHRydWUsIGVudW1lcmFibGU6IGZhbHNlIH07CiAgICB9IGVsc2UgaWYgKGRlZi5raW5kID09PSAic2V0IikgewogICAgICAgIGRlc2NyaXB0b3IgPSB7IHNldDogZGVmLnZhbHVlLCBjb25maWd1cmFibGU6IHRydWUsIGVudW1lcmFibGU6IGZhbHNlIH07CiAgICB9IGVsc2UgaWYgKGRlZi5raW5kID09PSAiZmllbGQiKSB7CiAgICAgICAgZGVzY3JpcHRvciA9IHsgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSB9OwogICAgfQogICAgdmFyIGVsZW1lbnQgPSB7CiAgICAgICAga2luZDogZGVmLmtpbmQgPT09ICJmaWVsZCIgPyAiZmllbGQiIDogIm1ldGhvZCIsCiAgICAgICAga2V5OiBrZXksCiAgICAgICAgcGxhY2VtZW50OiBkZWYuc3RhdGljID8gInN0YXRpYyIgOiBkZWYua2luZCA9PT0gImZpZWxkIiA/ICJvd24iIDogInByb3RvdHlwZSIsCiAgICAgICAgZGVzY3JpcHRvcjogZGVzY3JpcHRvcgogICAgfTsKICAgIGlmIChkZWYuZGVjb3JhdG9ycykgZWxlbWVudC5kZWNvcmF0b3JzID0gZGVmLmRlY29yYXRvcnM7CiAgICBpZiAoZGVmLmtpbmQgPT09ICJmaWVsZCIpIGVsZW1lbnQuaW5pdGlhbGl6ZXIgPSBkZWYudmFsdWU7CiAgICByZXR1cm4gZWxlbWVudDsKfQpmdW5jdGlvbiBfY29hbGVzY2VHZXR0ZXJTZXR0ZXIoZWxlbWVudCwgb3RoZXIpIHsKICAgIGlmIChlbGVtZW50LmRlc2NyaXB0b3IuZ2V0ICE9PSB1bmRlZmluZWQpIHsKICAgICAgICBvdGhlci5kZXNjcmlwdG9yLmdldCA9IGVsZW1lbnQuZGVzY3JpcHRvci5nZXQ7CiAgICB9IGVsc2UgewogICAgICAgIG90aGVyLmRlc2NyaXB0b3Iuc2V0ID0gZWxlbWVudC5kZXNjcmlwdG9yLnNldDsKICAgIH0KfQpmdW5jdGlvbiBfY29hbGVzY2VDbGFzc0VsZW1lbnRzKGVsZW1lbnRzKSB7CiAgICB2YXIgbmV3RWxlbWVudHMgPSBbXTsKICAgIHZhciBpc1NhbWVFbGVtZW50ID0gZnVuY3Rpb24gaXNTYW1lRWxlbWVudChvdGhlcikgewogICAgICAgIHJldHVybiBvdGhlci5raW5kID09PSAibWV0aG9kIiAmJiBvdGhlci5rZXkgPT09IGVsZW1lbnQua2V5ICYmIG90aGVyLnBsYWNlbWVudCA9PT0gZWxlbWVudC5wbGFjZW1lbnQ7CiAgICB9OwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciBlbGVtZW50ID0gZWxlbWVudHNbaV07CiAgICAgICAgdmFyIG90aGVyOwogICAgICAgIGlmIChlbGVtZW50LmtpbmQgPT09ICJtZXRob2QiICYmIChvdGhlciA9IG5ld0VsZW1lbnRzLmZpbmQoaXNTYW1lRWxlbWVudCkpKSB7CiAgICAgICAgICAgIGlmIChfaXNEYXRhRGVzY3JpcHRvcihlbGVtZW50LmRlc2NyaXB0b3IpIHx8IF9pc0RhdGFEZXNjcmlwdG9yKG90aGVyLmRlc2NyaXB0b3IpKSB7CiAgICAgICAgICAgICAgICBpZiAoX2hhc0RlY29yYXRvcnMoZWxlbWVudCkgfHwgX2hhc0RlY29yYXRvcnMob3RoZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJEdXBsaWNhdGVkIG1ldGhvZHMgKCIgKyBlbGVtZW50LmtleSArICIpIGNhbid0IGJlIGRlY29yYXRlZC4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG90aGVyLmRlc2NyaXB0b3IgPSBlbGVtZW50LmRlc2NyaXB0b3I7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoX2hhc0RlY29yYXRvcnMoZWxlbWVudCkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoX2hhc0RlY29yYXRvcnMob3RoZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZWNvcmF0b3JzIGNhbid0IGJlIHBsYWNlZCBvbiBkaWZmZXJlbnQgYWNjZXNzb3JzIHdpdGggZm9yICIgKyAidGhlIHNhbWUgcHJvcGVydHkgKCIgKyBlbGVtZW50LmtleSArICIpLiIKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgb3RoZXIuZGVjb3JhdG9ycyA9IGVsZW1lbnQuZGVjb3JhdG9yczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF9jb2FsZXNjZUdldHRlclNldHRlcihlbGVtZW50LCBvdGhlcik7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBuZXdFbGVtZW50cy5wdXNoKGVsZW1lbnQpOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBuZXdFbGVtZW50czsKfQpmdW5jdGlvbiBfaGFzRGVjb3JhdG9ycyhlbGVtZW50KSB7CiAgICByZXR1cm4gZWxlbWVudC5kZWNvcmF0b3JzICYmIGVsZW1lbnQuZGVjb3JhdG9ycy5sZW5ndGg7Cn0KZnVuY3Rpb24gX2lzRGF0YURlc2NyaXB0b3IoZGVzYykgewogICAgcmV0dXJuIGRlc2MgIT09IHVuZGVmaW5lZCAmJiAhKGRlc2MudmFsdWUgPT09IHVuZGVmaW5lZCAmJiBkZXNjLndyaXRhYmxlID09PSB1bmRlZmluZWQpOwp9CmZ1bmN0aW9uIF9pbml0aWFsaXplQ2xhc3NFbGVtZW50cyhGLCBlbGVtZW50cykgewogICAgdmFyIHByb3RvID0gRi5wcm90b3R5cGU7CiAgICBbIm1ldGhvZCIsICJmaWVsZCJdLmZvckVhY2goZnVuY3Rpb24oa2luZCkgewogICAgICAgIGVsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24oZWxlbWVudCkgewogICAgICAgICAgICB2YXIgcGxhY2VtZW50ID0gZWxlbWVudC5wbGFjZW1lbnQ7CiAgICAgICAgICAgIGlmIChlbGVtZW50LmtpbmQgPT09IGtpbmQgJiYgKHBsYWNlbWVudCA9PT0gInN0YXRpYyIgfHwgcGxhY2VtZW50ID09PSAicHJvdG90eXBlIikpIHsKICAgICAgICAgICAgICAgIHZhciByZWNlaXZlciA9IHBsYWNlbWVudCA9PT0gInN0YXRpYyIgPyBGIDogcHJvdG87CiAgICAgICAgICAgICAgICBfZGVmaW5lQ2xhc3NFbGVtZW50KHJlY2VpdmVyLCBlbGVtZW50KTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfSk7Cn0KZnVuY3Rpb24gX2luaXRpYWxpemVJbnN0YW5jZUVsZW1lbnRzKE8sIGVsZW1lbnRzKSB7CiAgICBbIm1ldGhvZCIsICJmaWVsZCJdLmZvckVhY2goZnVuY3Rpb24oa2luZCkgewogICAgICAgIGVsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24oZWxlbWVudCkgewogICAgICAgICAgICBpZiAoZWxlbWVudC5raW5kID09PSBraW5kICYmIGVsZW1lbnQucGxhY2VtZW50ID09PSAib3duIikgewogICAgICAgICAgICAgICAgX2RlZmluZUNsYXNzRWxlbWVudChPLCBlbGVtZW50KTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfSk7Cn0KZnVuY3Rpb24gX2RlZmluZUNsYXNzRWxlbWVudChyZWNlaXZlciwgZWxlbWVudCkgewogICAgdmFyIGRlc2NyaXB0b3IgPSBlbGVtZW50LmRlc2NyaXB0b3I7CiAgICBpZiAoZWxlbWVudC5raW5kID09PSAiZmllbGQiKSB7CiAgICAgICAgdmFyIGluaXRpYWxpemVyID0gZWxlbWVudC5pbml0aWFsaXplcjsKICAgICAgICBkZXNjcmlwdG9yID0gewogICAgICAgICAgICBlbnVtZXJhYmxlOiBkZXNjcmlwdG9yLmVudW1lcmFibGUsCiAgICAgICAgICAgIHdyaXRhYmxlOiBkZXNjcmlwdG9yLndyaXRhYmxlLAogICAgICAgICAgICBjb25maWd1cmFibGU6IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlLAogICAgICAgICAgICB2YWx1ZTogaW5pdGlhbGl6ZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGluaXRpYWxpemVyLmNhbGwocmVjZWl2ZXIpCiAgICAgICAgfTsKICAgIH0KICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZWNlaXZlciwgZWxlbWVudC5rZXksIGRlc2NyaXB0b3IpOwp9CmZ1bmN0aW9uIF9kZWNvcmF0ZUNsYXNzKGVsZW1lbnRzLCBkZWNvcmF0b3JzKSB7CiAgICB2YXIgbmV3RWxlbWVudHMgPSBbXTsKICAgIHZhciBmaW5pc2hlcnMgPSBbXTsKICAgIHZhciBwbGFjZW1lbnRzID0geyBzdGF0aWM6IFtdLCBwcm90b3R5cGU6IFtdLCBvd246IFtdIH07CiAgICBlbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICAgICBfYWRkRWxlbWVudFBsYWNlbWVudChlbGVtZW50LCBwbGFjZW1lbnRzKTsKICAgIH0pOwogICAgZWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbihlbGVtZW50KSB7CiAgICAgICAgaWYgKCFfaGFzRGVjb3JhdG9ycyhlbGVtZW50KSkgcmV0dXJuIG5ld0VsZW1lbnRzLnB1c2goZWxlbWVudCk7CiAgICAgICAgdmFyIGVsZW1lbnRGaW5pc2hlcnNFeHRyYXMgPSBfZGVjb3JhdGVFbGVtZW50KGVsZW1lbnQsIHBsYWNlbWVudHMpOwogICAgICAgIG5ld0VsZW1lbnRzLnB1c2goZWxlbWVudEZpbmlzaGVyc0V4dHJhcy5lbGVtZW50KTsKICAgICAgICBuZXdFbGVtZW50cy5wdXNoLmFwcGx5KG5ld0VsZW1lbnRzLCBlbGVtZW50RmluaXNoZXJzRXh0cmFzLmV4dHJhcyk7CiAgICAgICAgZmluaXNoZXJzLnB1c2guYXBwbHkoZmluaXNoZXJzLCBlbGVtZW50RmluaXNoZXJzRXh0cmFzLmZpbmlzaGVycyk7CiAgICB9KTsKICAgIGlmICghZGVjb3JhdG9ycykgewogICAgICAgIHJldHVybiB7IGVsZW1lbnRzOiBuZXdFbGVtZW50cywgZmluaXNoZXJzOiBmaW5pc2hlcnMgfTsKICAgIH0KICAgIHZhciByZXN1bHQgPSBfZGVjb3JhdGVDb25zdHJ1Y3RvcihuZXdFbGVtZW50cywgZGVjb3JhdG9ycyk7CiAgICBmaW5pc2hlcnMucHVzaC5hcHBseShmaW5pc2hlcnMsIHJlc3VsdC5maW5pc2hlcnMpOwogICAgcmVzdWx0LmZpbmlzaGVycyA9IGZpbmlzaGVyczsKICAgIHJldHVybiByZXN1bHQ7Cn0KZnVuY3Rpb24gX2FkZEVsZW1lbnRQbGFjZW1lbnQoZWxlbWVudCwgcGxhY2VtZW50cywgc2lsZW50KSB7CiAgICB2YXIga2V5cyA9IHBsYWNlbWVudHNbZWxlbWVudC5wbGFjZW1lbnRdOwogICAgaWYgKCFzaWxlbnQgJiYga2V5cy5pbmRleE9mKGVsZW1lbnQua2V5KSAhPT0gLTEpIHsKICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJEdXBsaWNhdGVkIGVsZW1lbnQgKCIgKyBlbGVtZW50LmtleSArICIpIik7CiAgICB9CiAgICBrZXlzLnB1c2goZWxlbWVudC5rZXkpOwp9CmZ1bmN0aW9uIF9kZWNvcmF0ZUVsZW1lbnQoZWxlbWVudCwgcGxhY2VtZW50cykgewogICAgdmFyIGV4dHJhcyA9IFtdOwogICAgdmFyIGZpbmlzaGVycyA9IFtdOwogICAgZm9yICh2YXIgZGVjb3JhdG9ycyA9IGVsZW1lbnQuZGVjb3JhdG9ycywgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICB2YXIga2V5cyA9IHBsYWNlbWVudHNbZWxlbWVudC5wbGFjZW1lbnRdOwogICAgICAgIGtleXMuc3BsaWNlKGtleXMuaW5kZXhPZihlbGVtZW50LmtleSksIDEpOwogICAgICAgIHZhciBlbGVtZW50T2JqZWN0ID0gX2Zyb21FbGVtZW50RGVzY3JpcHRvcihlbGVtZW50KTsKICAgICAgICB2YXIgZWxlbWVudEZpbmlzaGVyRXh0cmFzID0gX3RvRWxlbWVudEZpbmlzaGVyRXh0cmFzKCgwLCBkZWNvcmF0b3JzW2ldKShlbGVtZW50T2JqZWN0KSB8fCBlbGVtZW50T2JqZWN0KTsKICAgICAgICBlbGVtZW50ID0gZWxlbWVudEZpbmlzaGVyRXh0cmFzLmVsZW1lbnQ7CiAgICAgICAgX2FkZEVsZW1lbnRQbGFjZW1lbnQoZWxlbWVudCwgcGxhY2VtZW50cyk7CiAgICAgICAgaWYgKGVsZW1lbnRGaW5pc2hlckV4dHJhcy5maW5pc2hlcikgewogICAgICAgICAgICBmaW5pc2hlcnMucHVzaChlbGVtZW50RmluaXNoZXJFeHRyYXMuZmluaXNoZXIpOwogICAgICAgIH0KICAgICAgICB2YXIgbmV3RXh0cmFzID0gZWxlbWVudEZpbmlzaGVyRXh0cmFzLmV4dHJhczsKICAgICAgICBpZiAobmV3RXh0cmFzKSB7CiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbmV3RXh0cmFzLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICBfYWRkRWxlbWVudFBsYWNlbWVudChuZXdFeHRyYXNbal0sIHBsYWNlbWVudHMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGV4dHJhcy5wdXNoLmFwcGx5KGV4dHJhcywgbmV3RXh0cmFzKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4geyBlbGVtZW50OiBlbGVtZW50LCBmaW5pc2hlcnM6IGZpbmlzaGVycywgZXh0cmFzOiBleHRyYXMgfTsKfQpmdW5jdGlvbiBfZGVjb3JhdGVDb25zdHJ1Y3RvcihlbGVtZW50cywgZGVjb3JhdG9ycykgewogICAgdmFyIGZpbmlzaGVycyA9IFtdOwogICAgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICB2YXIgb2JqID0gX2Zyb21DbGFzc0Rlc2NyaXB0b3IoZWxlbWVudHMpOwogICAgICAgIHZhciBlbGVtZW50c0FuZEZpbmlzaGVyID0gX3RvQ2xhc3NEZXNjcmlwdG9yKCgwLCBkZWNvcmF0b3JzW2ldKShvYmopIHx8IG9iaik7CiAgICAgICAgaWYgKGVsZW1lbnRzQW5kRmluaXNoZXIuZmluaXNoZXIgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICBmaW5pc2hlcnMucHVzaChlbGVtZW50c0FuZEZpbmlzaGVyLmZpbmlzaGVyKTsKICAgICAgICB9CiAgICAgICAgaWYgKGVsZW1lbnRzQW5kRmluaXNoZXIuZWxlbWVudHMgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICBlbGVtZW50cyA9IGVsZW1lbnRzQW5kRmluaXNoZXIuZWxlbWVudHM7CiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZWxlbWVudHMubGVuZ3RoIC0gMTsgaisrKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBrID0gaiArIDE7IGsgPCBlbGVtZW50cy5sZW5ndGg7IGsrKykgewogICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50c1tqXS5rZXkgPT09IGVsZW1lbnRzW2tdLmtleSAmJiBlbGVtZW50c1tqXS5wbGFjZW1lbnQgPT09IGVsZW1lbnRzW2tdLnBsYWNlbWVudCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJEdXBsaWNhdGVkIGVsZW1lbnQgKCIgKyBlbGVtZW50c1tqXS5rZXkgKyAiKSIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiB7IGVsZW1lbnRzOiBlbGVtZW50cywgZmluaXNoZXJzOiBmaW5pc2hlcnMgfTsKfQpmdW5jdGlvbiBfZnJvbUVsZW1lbnREZXNjcmlwdG9yKGVsZW1lbnQpIHsKICAgIHZhciBvYmogPSB7IGtpbmQ6IGVsZW1lbnQua2luZCwga2V5OiBlbGVtZW50LmtleSwgcGxhY2VtZW50OiBlbGVtZW50LnBsYWNlbWVudCwgZGVzY3JpcHRvcjogZWxlbWVudC5kZXNjcmlwdG9yIH07CiAgICB2YXIgZGVzYyA9IHsgdmFsdWU6ICJEZXNjcmlwdG9yIiwgY29uZmlndXJhYmxlOiB0cnVlIH07CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBTeW1ib2wudG9TdHJpbmdUYWcsIGRlc2MpOwogICAgaWYgKGVsZW1lbnQua2luZCA9PT0gImZpZWxkIikgb2JqLmluaXRpYWxpemVyID0gZWxlbWVudC5pbml0aWFsaXplcjsKICAgIHJldHVybiBvYmo7Cn0KZnVuY3Rpb24gX3RvRWxlbWVudERlc2NyaXB0b3JzKGVsZW1lbnRPYmplY3RzKSB7CiAgICBpZiAoZWxlbWVudE9iamVjdHMgPT09IHVuZGVmaW5lZCkgcmV0dXJuOwogICAgcmV0dXJuIF90b19hcnJheShlbGVtZW50T2JqZWN0cykubWFwKGZ1bmN0aW9uKGVsZW1lbnRPYmplY3QpIHsKICAgICAgICB2YXIgZWxlbWVudCA9IF90b0VsZW1lbnREZXNjcmlwdG9yKGVsZW1lbnRPYmplY3QpOwogICAgICAgIF9kaXNhbGxvd1Byb3BlcnR5KGVsZW1lbnRPYmplY3QsICJmaW5pc2hlciIsICJBbiBlbGVtZW50IGRlc2NyaXB0b3IiKTsKICAgICAgICBfZGlzYWxsb3dQcm9wZXJ0eShlbGVtZW50T2JqZWN0LCAiZXh0cmFzIiwgIkFuIGVsZW1lbnQgZGVzY3JpcHRvciIpOwogICAgICAgIHJldHVybiBlbGVtZW50OwogICAgfSk7Cn0KZnVuY3Rpb24gX3RvRWxlbWVudERlc2NyaXB0b3IoZWxlbWVudE9iamVjdCkgewogICAgdmFyIGtpbmQgPSBTdHJpbmcoZWxlbWVudE9iamVjdC5raW5kKTsKICAgIGlmIChraW5kICE9PSAibWV0aG9kIiAmJiBraW5kICE9PSAiZmllbGQiKSB7CiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigKICAgICAgICAgICAgIkFuIGVsZW1lbnQgZGVzY3JpcHRvcidzIC5raW5kIHByb3BlcnR5IG11c3QgYmUgZWl0aGVyIFwibWV0aG9kXCIgb3IiCiAgICAgICAgICAgICAgICArICIgXCJmaWVsZFwiLCBidXQgYSBkZWNvcmF0b3IgY3JlYXRlZCBhbiBlbGVtZW50IGRlc2NyaXB0b3Igd2l0aCIgKyAiIC5raW5kIFwiIiArIGtpbmQgKyAiXCIiCiAgICAgICAgKTsKICAgIH0KICAgIHZhciBrZXkgPSBfdG9fcHJvcGVydHlfa2V5KGVsZW1lbnRPYmplY3Qua2V5KTsKICAgIHZhciBwbGFjZW1lbnQgPSBTdHJpbmcoZWxlbWVudE9iamVjdC5wbGFjZW1lbnQpOwogICAgaWYgKHBsYWNlbWVudCAhPT0gInN0YXRpYyIgJiYgcGxhY2VtZW50ICE9PSAicHJvdG90eXBlIiAmJiBwbGFjZW1lbnQgIT09ICJvd24iKSB7CiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigKICAgICAgICAgICAgIkFuIGVsZW1lbnQgZGVzY3JpcHRvcidzIC5wbGFjZW1lbnQgcHJvcGVydHkgbXVzdCBiZSBvbmUgb2YgXCJzdGF0aWNcIiwiCiAgICAgICAgICAgICAgICArICIgXCJwcm90b3R5cGVcIiBvciBcIm93blwiLCBidXQgYSBkZWNvcmF0b3IgY3JlYXRlZCBhbiBlbGVtZW50IGRlc2NyaXB0b3IiICsgIiB3aXRoIC5wbGFjZW1lbnQgXCIiICsgcGxhY2VtZW50ICsgIlwiIgogICAgICAgICk7CiAgICB9CiAgICB2YXIgZGVzY3JpcHRvciA9IGVsZW1lbnRPYmplY3QuZGVzY3JpcHRvcjsKICAgIF9kaXNhbGxvd1Byb3BlcnR5KGVsZW1lbnRPYmplY3QsICJlbGVtZW50cyIsICJBbiBlbGVtZW50IGRlc2NyaXB0b3IiKTsKICAgIHZhciBlbGVtZW50ID0geyBraW5kOiBraW5kLCBrZXk6IGtleSwgcGxhY2VtZW50OiBwbGFjZW1lbnQsIGRlc2NyaXB0b3I6IE9iamVjdC5hc3NpZ24oe30sIGRlc2NyaXB0b3IpIH07CiAgICBpZiAoa2luZCAhPT0gImZpZWxkIikgewogICAgICAgIF9kaXNhbGxvd1Byb3BlcnR5KGVsZW1lbnRPYmplY3QsICJpbml0aWFsaXplciIsICJBIG1ldGhvZCBkZXNjcmlwdG9yIik7CiAgICB9IGVsc2UgewogICAgICAgIF9kaXNhbGxvd1Byb3BlcnR5KGRlc2NyaXB0b3IsICJnZXQiLCAiVGhlIHByb3BlcnR5IGRlc2NyaXB0b3Igb2YgYSBmaWVsZCBkZXNjcmlwdG9yIik7CiAgICAgICAgX2Rpc2FsbG93UHJvcGVydHkoZGVzY3JpcHRvciwgInNldCIsICJUaGUgcHJvcGVydHkgZGVzY3JpcHRvciBvZiBhIGZpZWxkIGRlc2NyaXB0b3IiKTsKICAgICAgICBfZGlzYWxsb3dQcm9wZXJ0eShkZXNjcmlwdG9yLCAidmFsdWUiLCAiVGhlIHByb3BlcnR5IGRlc2NyaXB0b3Igb2YgYSBmaWVsZCBkZXNjcmlwdG9yIik7CiAgICAgICAgZWxlbWVudC5pbml0aWFsaXplciA9IGVsZW1lbnRPYmplY3QuaW5pdGlhbGl6ZXI7CiAgICB9CiAgICByZXR1cm4gZWxlbWVudDsKfQpmdW5jdGlvbiBfdG9FbGVtZW50RmluaXNoZXJFeHRyYXMoZWxlbWVudE9iamVjdCkgewogICAgdmFyIGVsZW1lbnQgPSBfdG9FbGVtZW50RGVzY3JpcHRvcihlbGVtZW50T2JqZWN0KTsKICAgIHZhciBmaW5pc2hlciA9IF9vcHRpb25hbENhbGxhYmxlUHJvcGVydHkoZWxlbWVudE9iamVjdCwgImZpbmlzaGVyIik7CiAgICB2YXIgZXh0cmFzID0gX3RvRWxlbWVudERlc2NyaXB0b3JzKGVsZW1lbnRPYmplY3QuZXh0cmFzKTsKICAgIHJldHVybiB7IGVsZW1lbnQ6IGVsZW1lbnQsIGZpbmlzaGVyOiBmaW5pc2hlciwgZXh0cmFzOiBleHRyYXMgfTsKfQpmdW5jdGlvbiBfZnJvbUNsYXNzRGVzY3JpcHRvcihlbGVtZW50cykgewogICAgdmFyIG9iaiA9IHsga2luZDogImNsYXNzIiwgZWxlbWVudHM6IGVsZW1lbnRzLm1hcChfZnJvbUVsZW1lbnREZXNjcmlwdG9yKSB9OwogICAgdmFyIGRlc2MgPSB7IHZhbHVlOiAiRGVzY3JpcHRvciIsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9OwogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgU3ltYm9sLnRvU3RyaW5nVGFnLCBkZXNjKTsKICAgIHJldHVybiBvYmo7Cn0KZnVuY3Rpb24gX3RvQ2xhc3NEZXNjcmlwdG9yKG9iaikgewogICAgdmFyIGtpbmQgPSBTdHJpbmcob2JqLmtpbmQpOwogICAgaWYgKGtpbmQgIT09ICJjbGFzcyIpIHsKICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKAogICAgICAgICAgICAiQSBjbGFzcyBkZXNjcmlwdG9yJ3MgLmtpbmQgcHJvcGVydHkgbXVzdCBiZSBcImNsYXNzXCIsIGJ1dCBhIGRlY29yYXRvciIgKyAiIGNyZWF0ZWQgYSBjbGFzcyBkZXNjcmlwdG9yIHdpdGggLmtpbmQgXCIiICsga2luZAogICAgICAgICAgICAgICAgKyAiXCIiCiAgICAgICAgKTsKICAgIH0KICAgIF9kaXNhbGxvd1Byb3BlcnR5KG9iaiwgImtleSIsICJBIGNsYXNzIGRlc2NyaXB0b3IiKTsKICAgIF9kaXNhbGxvd1Byb3BlcnR5KG9iaiwgInBsYWNlbWVudCIsICJBIGNsYXNzIGRlc2NyaXB0b3IiKTsKICAgIF9kaXNhbGxvd1Byb3BlcnR5KG9iaiwgImRlc2NyaXB0b3IiLCAiQSBjbGFzcyBkZXNjcmlwdG9yIik7CiAgICBfZGlzYWxsb3dQcm9wZXJ0eShvYmosICJpbml0aWFsaXplciIsICJBIGNsYXNzIGRlc2NyaXB0b3IiKTsKICAgIF9kaXNhbGxvd1Byb3BlcnR5KG9iaiwgImV4dHJhcyIsICJBIGNsYXNzIGRlc2NyaXB0b3IiKTsKICAgIHZhciBmaW5pc2hlciA9IF9vcHRpb25hbENhbGxhYmxlUHJvcGVydHkob2JqLCAiZmluaXNoZXIiKTsKICAgIHZhciBlbGVtZW50cyA9IF90b0VsZW1lbnREZXNjcmlwdG9ycyhvYmouZWxlbWVudHMpOwogICAgcmV0dXJuIHsgZWxlbWVudHM6IGVsZW1lbnRzLCBmaW5pc2hlcjogZmluaXNoZXIgfTsKfQpmdW5jdGlvbiBfZGlzYWxsb3dQcm9wZXJ0eShvYmosIG5hbWUsIG9iamVjdFR5cGUpIHsKICAgIGlmIChvYmpbbmFtZV0gIT09IHVuZGVmaW5lZCkgewogICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3Iob2JqZWN0VHlwZSArICIgY2FuJ3QgaGF2ZSBhIC4iICsgbmFtZSArICIgcHJvcGVydHkuIik7CiAgICB9Cn0KZnVuY3Rpb24gX29wdGlvbmFsQ2FsbGFibGVQcm9wZXJ0eShvYmosIG5hbWUpIHsKICAgIHZhciB2YWx1ZSA9IG9ialtuYW1lXTsKICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiB2YWx1ZSAhPT0gImZ1bmN0aW9uIikgewogICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoIkV4cGVjdGVkICciICsgbmFtZSArICInIHRvIGJlIGEgZnVuY3Rpb24iKTsKICAgIH0KICAgIHJldHVybiB2YWx1ZTsKfQpmdW5jdGlvbiBfcnVuQ2xhc3NGaW5pc2hlcnMoY29uc3RydWN0b3IsIGZpbmlzaGVycykgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaW5pc2hlcnMubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIgbmV3Q29uc3RydWN0b3IgPSAoMCwgZmluaXNoZXJzW2ldKShjb25zdHJ1Y3Rvcik7CiAgICAgICAgaWYgKG5ld0NvbnN0cnVjdG9yICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKHR5cGVvZiBuZXdDb25zdHJ1Y3RvciAhPT0gImZ1bmN0aW9uIikgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiRmluaXNoZXJzIG11c3QgcmV0dXJuIGEgY29uc3RydWN0b3IuIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3RydWN0b3IgPSBuZXdDb25zdHJ1Y3RvcjsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gY29uc3RydWN0b3I7Cn0KZnVuY3Rpb24gX2RlZmF1bHRzKG9iaiwgZGVmYXVsdHMpIHsKICAgIHZhciBrZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZGVmYXVsdHMpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIGtleSA9IGtleXNbaV07CiAgICAgICAgdmFyIHZhbHVlID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkZWZhdWx0cywga2V5KTsKICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuY29uZmlndXJhYmxlICYmIG9ialtrZXldID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIG9iajsKfQpmdW5jdGlvbiBfZGVmaW5lX2VudW1lcmFibGVfcHJvcGVydGllcyhvYmosIGRlc2NzKSB7CiAgICBmb3IgKHZhciBrZXkgaW4gZGVzY3MpIHsKICAgICAgICB2YXIgZGVzYyA9IGRlc2NzW2tleV07CiAgICAgICAgZGVzYy5jb25maWd1cmFibGUgPSBkZXNjLmVudW1lcmFibGUgPSB0cnVlOwogICAgICAgIGlmICgidmFsdWUiIGluIGRlc2MpIGRlc2Mud3JpdGFibGUgPSB0cnVlOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgZGVzYyk7CiAgICB9CiAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgewogICAgICAgIHZhciBvYmplY3RTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhkZXNjcyk7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvYmplY3RTeW1ib2xzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHZhciBzeW0gPSBvYmplY3RTeW1ib2xzW2ldOwogICAgICAgICAgICB2YXIgZGVzYyA9IGRlc2NzW3N5bV07CiAgICAgICAgICAgIGRlc2MuY29uZmlndXJhYmxlID0gZGVzYy5lbnVtZXJhYmxlID0gdHJ1ZTsKICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gZGVzYykgZGVzYy53cml0YWJsZSA9IHRydWU7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIHN5bSwgZGVzYyk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIG9iajsKfQpmdW5jdGlvbiBfZGVmaW5lX3Byb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgewogICAgaWYgKGtleSBpbiBvYmopIHsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOwogICAgfSBlbHNlIHsKICAgICAgICBvYmpba2V5XSA9IHZhbHVlOwogICAgfQogICAgcmV0dXJuIG9iajsKfQpmdW5jdGlvbiBfZXhwb3J0X3N0YXIoZnJvbSwgdG8pIHsKICAgIE9iamVjdC5rZXlzKGZyb20pLmZvckVhY2goZnVuY3Rpb24oaykgewogICAgICAgIGlmIChrICE9PSAiZGVmYXVsdCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0bywgaykpIHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRvLCBrLCB7CiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLAogICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnJvbVtrXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfSk7CiAgICByZXR1cm4gZnJvbTsKfQpmdW5jdGlvbiBfZXh0ZW5kcygpIHsKICAgIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0YXJnZXQpIHsKICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOwogICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7CiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgewogICAgICAgICAgICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRhcmdldDsKICAgIH07CiAgICByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKfQpmdW5jdGlvbiBfZ2V0KHRhcmdldCwgcHJvcGVydHksIHJlY2VpdmVyKSB7CiAgICBpZiAodHlwZW9mIFJlZmxlY3QgIT09ICJ1bmRlZmluZWQiICYmIFJlZmxlY3QuZ2V0KSB7CiAgICAgICAgX2dldCA9IFJlZmxlY3QuZ2V0OwogICAgfSBlbHNlIHsKICAgICAgICBfZ2V0ID0gZnVuY3Rpb24gZ2V0KHRhcmdldCwgcHJvcGVydHksIHJlY2VpdmVyKSB7CiAgICAgICAgICAgIHZhciBiYXNlID0gX3N1cGVyX3Byb3BfYmFzZSh0YXJnZXQsIHByb3BlcnR5KTsKICAgICAgICAgICAgaWYgKCFiYXNlKSByZXR1cm47CiAgICAgICAgICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihiYXNlLCBwcm9wZXJ0eSk7CiAgICAgICAgICAgIGlmIChkZXNjLmdldCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGRlc2MuZ2V0LmNhbGwocmVjZWl2ZXIgfHwgdGFyZ2V0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZGVzYy52YWx1ZTsKICAgICAgICB9OwogICAgfQogICAgcmV0dXJuIF9nZXQodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIgfHwgdGFyZ2V0KTsKfQpmdW5jdGlvbiBfZ2V0X3Byb3RvdHlwZV9vZihvKSB7CiAgICBfZ2V0X3Byb3RvdHlwZV9vZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIGdldFByb3RvdHlwZU9mKG8pIHsKICAgICAgICByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOwogICAgfTsKICAgIHJldHVybiBfZ2V0X3Byb3RvdHlwZV9vZihvKTsKfQpmdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsKICAgIGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gImZ1bmN0aW9uIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7CiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTsKICAgIH0KICAgIHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgewogICAgICAgIGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9CiAgICB9KTsKICAgIGlmIChzdXBlckNsYXNzKSBfc2V0X3Byb3RvdHlwZV9vZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7Cn0KZnVuY3Rpb24gX2luaGVyaXRzX2xvb3NlKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7CiAgICBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MucHJvdG90eXBlKTsKICAgIHN1YkNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHN1YkNsYXNzOwogICAgc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsKfQpmdW5jdGlvbiBfaW5pdGlhbGl6ZXJfZGVmaW5lX3Byb3BlcnR5KHRhcmdldCwgcHJvcGVydHksIGRlc2NyaXB0b3IsIGNvbnRleHQpIHsKICAgIGlmICghZGVzY3JpcHRvcikgcmV0dXJuOwogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHksIHsKICAgICAgICBlbnVtZXJhYmxlOiBkZXNjcmlwdG9yLmVudW1lcmFibGUsCiAgICAgICAgY29uZmlndXJhYmxlOiBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSwKICAgICAgICB3cml0YWJsZTogZGVzY3JpcHRvci53cml0YWJsZSwKICAgICAgICB2YWx1ZTogZGVzY3JpcHRvci5pbml0aWFsaXplciA/IGRlc2NyaXB0b3IuaW5pdGlhbGl6ZXIuY2FsbChjb250ZXh0KSA6IHZvaWQgMAogICAgfSk7Cn0KZnVuY3Rpb24gX2luaXRpYWxpemVyX3dhcm5pbmdfaGVscGVyKGRlc2NyaXB0b3IsIGNvbnRleHQpIHsKICAgIHRocm93IG5ldyBFcnJvcigKICAgICAgICAiRGVjb3JhdGluZyBjbGFzcyBwcm9wZXJ0eSBmYWlsZWQuIFBsZWFzZSBlbnN1cmUgdGhhdCAiICsgInByb3Bvc2FsLWNsYXNzLXByb3BlcnRpZXMgaXMgZW5hYmxlZCBhbmQgc2V0IHRvIHVzZSBsb29zZSBtb2RlLiAiCiAgICAgICAgICAgICsgIlRvIHVzZSBwcm9wb3NhbC1jbGFzcy1wcm9wZXJ0aWVzIGluIHNwZWMgbW9kZSB3aXRoIGRlY29yYXRvcnMsIHdhaXQgZm9yICIKICAgICAgICAgICAgKyAidGhlIG5leHQgbWFqb3IgdmVyc2lvbiBvZiBkZWNvcmF0b3JzIGluIHN0YWdlIDIuIgogICAgKTsKfQpmdW5jdGlvbiBfaW5zdGFuY2VvZihsZWZ0LCByaWdodCkgewogICAgaWYgKHJpZ2h0ICE9IG51bGwgJiYgdHlwZW9mIFN5bWJvbCAhPT0gInVuZGVmaW5lZCIgJiYgcmlnaHRbU3ltYm9sLmhhc0luc3RhbmNlXSkgewogICAgICAgIHJldHVybiAhIXJpZ2h0W1N5bWJvbC5oYXNJbnN0YW5jZV0obGVmdCk7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBsZWZ0IGluc3RhbmNlb2YgcmlnaHQ7CiAgICB9Cn0KZnVuY3Rpb24gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0KG9iaikgewogICAgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07Cn0KZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7CiAgICBpZiAodHlwZW9mIFdlYWtNYXAgIT09ICJmdW5jdGlvbiIpIHJldHVybiBudWxsOwogICAgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsKICAgIHZhciBjYWNoZU5vZGVJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsKICAgIHJldHVybiAoX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24obm9kZUludGVyb3ApIHsKICAgICAgICByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7CiAgICB9KShub2RlSW50ZXJvcCk7Cn0KZnVuY3Rpb24gX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7CiAgICBpZiAoIW5vZGVJbnRlcm9wICYmIG9iaiAmJiBvYmouX19lc01vZHVsZSkgewogICAgICAgIHJldHVybiBvYmo7CiAgICB9CiAgICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICJvYmplY3QiICYmIHR5cGVvZiBvYmogIT09ICJmdW5jdGlvbiIpIHsKICAgICAgICByZXR1cm4geyBkZWZhdWx0OiBvYmogfTsKICAgIH0KICAgIHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCk7CiAgICBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsKICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KG9iaik7CiAgICB9CiAgICB2YXIgbmV3T2JqID0geyBfX3Byb3RvX186IG51bGwgfTsKICAgIHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsKICAgIGZvciAodmFyIGtleSBpbiBvYmopIHsKICAgICAgICBpZiAoa2V5ICE9PSAiZGVmYXVsdCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgewogICAgICAgICAgICB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsKICAgICAgICAgICAgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgewogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIG5ld09ialtrZXldID0gb2JqW2tleV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBuZXdPYmouZGVmYXVsdCA9IG9iajsKICAgIGlmIChjYWNoZSkgewogICAgICAgIGNhY2hlLnNldChvYmosIG5ld09iaik7CiAgICB9CiAgICByZXR1cm4gbmV3T2JqOwp9CmZ1bmN0aW9uIF9pc19uYXRpdmVfZnVuY3Rpb24oZm4pIHsKICAgIHJldHVybiBGdW5jdGlvbi50b1N0cmluZy5jYWxsKGZuKS5pbmRleE9mKCJbbmF0aXZlIGNvZGVdIikgIT09IC0xOwp9CmZ1bmN0aW9uIF9pdGVyYWJsZV90b19hcnJheShpdGVyKSB7CiAgICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gInVuZGVmaW5lZCIgJiYgaXRlcltTeW1ib2wuaXRlcmF0b3JdICE9IG51bGwgfHwgaXRlclsiQEBpdGVyYXRvciJdICE9IG51bGwpIHJldHVybiBBcnJheS5mcm9tKGl0ZXIpOwp9CmZ1bmN0aW9uIF9pdGVyYWJsZV90b19hcnJheV9saW1pdChhcnIsIGkpIHsKICAgIHZhciBfaSA9IGFyciA9PSBudWxsID8gbnVsbCA6IHR5cGVvZiBTeW1ib2wgIT09ICJ1bmRlZmluZWQiICYmIGFycltTeW1ib2wuaXRlcmF0b3JdIHx8IGFyclsiQEBpdGVyYXRvciJdOwogICAgaWYgKF9pID09IG51bGwpIHJldHVybjsKICAgIHZhciBfYXJyID0gW107CiAgICB2YXIgX24gPSB0cnVlOwogICAgdmFyIF9kID0gZmFsc2U7CiAgICB2YXIgX3MsIF9lOwogICAgdHJ5IHsKICAgICAgICBmb3IgKF9pID0gX2kuY2FsbChhcnIpOyAhKF9uID0gKF9zID0gX2kubmV4dCgpKS5kb25lKTsgX24gPSB0cnVlKSB7CiAgICAgICAgICAgIF9hcnIucHVzaChfcy52YWx1ZSk7CiAgICAgICAgICAgIGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhazsKICAgICAgICB9CiAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICBfZCA9IHRydWU7CiAgICAgICAgX2UgPSBlcnI7CiAgICB9IGZpbmFsbHkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGlmICghX24gJiYgX2lbInJldHVybiJdICE9IG51bGwpIF9pWyJyZXR1cm4iXSgpOwogICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgIGlmIChfZCkgdGhyb3cgX2U7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIF9hcnI7Cn0KZnVuY3Rpb24gX2l0ZXJhYmxlX3RvX2FycmF5X2xpbWl0X2xvb3NlKGFyciwgaSkgewogICAgdmFyIF9pID0gYXJyICYmICh0eXBlb2YgU3ltYm9sICE9PSAidW5kZWZpbmVkIiAmJiBhcnJbU3ltYm9sLml0ZXJhdG9yXSB8fCBhcnJbIkBAaXRlcmF0b3IiXSk7CiAgICBpZiAoX2kgPT0gbnVsbCkgcmV0dXJuOwogICAgdmFyIF9hcnIgPSBbXTsKICAgIGZvciAoX2kgPSBfaS5jYWxsKGFyciksIF9zdGVwOyAhKF9zdGVwID0gX2kubmV4dCgpKS5kb25lOykgewogICAgICAgIF9hcnIucHVzaChfc3RlcC52YWx1ZSk7CiAgICAgICAgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrOwogICAgfQogICAgcmV0dXJuIF9hcnI7Cn0KdmFyIFJFQUNUX0VMRU1FTlRfVFlQRTsKZnVuY3Rpb24gX2pzeCh0eXBlLCBwcm9wcywga2V5LCBjaGlsZHJlbikgewogICAgaWYgKCFSRUFDVF9FTEVNRU5UX1RZUEUpIHsKICAgICAgICBSRUFDVF9FTEVNRU5UX1RZUEUgPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIFN5bWJvbC5mb3IgJiYgU3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpIHx8IDB4ZWFjNzsKICAgIH0KICAgIHZhciBkZWZhdWx0UHJvcHMgPSB0eXBlICYmIHR5cGUuZGVmYXVsdFByb3BzOwogICAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCAtIDM7CiAgICBpZiAoIXByb3BzICYmIGNoaWxkcmVuTGVuZ3RoICE9PSAwKSB7CiAgICAgICAgcHJvcHMgPSB7IGNoaWxkcmVuOiB2b2lkIDAgfTsKICAgIH0KICAgIGlmIChwcm9wcyAmJiBkZWZhdWx0UHJvcHMpIHsKICAgICAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBkZWZhdWx0UHJvcHMpIHsKICAgICAgICAgICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PT0gdm9pZCAwKSB7CiAgICAgICAgICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBkZWZhdWx0UHJvcHNbcHJvcE5hbWVdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSBlbHNlIGlmICghcHJvcHMpIHsKICAgICAgICBwcm9wcyA9IGRlZmF1bHRQcm9wcyB8fCB7fTsKICAgIH0KICAgIGlmIChjaGlsZHJlbkxlbmd0aCA9PT0gMSkgewogICAgICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRyZW47CiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuTGVuZ3RoID4gMSkgewogICAgICAgIHZhciBjaGlsZEFycmF5ID0gbmV3IEFycmF5KGNoaWxkcmVuTGVuZ3RoKTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuTGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgY2hpbGRBcnJheVtpXSA9IGFyZ3VtZW50c1tpICsgM107CiAgICAgICAgfQogICAgICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRBcnJheTsKICAgIH0KICAgIHJldHVybiB7ICQkdHlwZW9mOiBSRUFDVF9FTEVNRU5UX1RZUEUsIHR5cGU6IHR5cGUsIGtleToga2V5ID09PSB1bmRlZmluZWQgPyBudWxsIDogIiIgKyBrZXksIHJlZjogbnVsbCwgcHJvcHM6IHByb3BzLCBfb3duZXI6IG51bGwgfTsKfQpmdW5jdGlvbiBfbmV3X2Fycm93X2NoZWNrKGlubmVyVGhpcywgYm91bmRUaGlzKSB7CiAgICBpZiAoaW5uZXJUaGlzICE9PSBib3VuZFRoaXMpIHsKICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5zdGFudGlhdGUgYW4gYXJyb3cgZnVuY3Rpb24iKTsKICAgIH0KfQpmdW5jdGlvbiBfbm9uX2l0ZXJhYmxlX3Jlc3QoKSB7CiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKAogICAgICAgICJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iCiAgICApOwp9CmZ1bmN0aW9uIF9ub25faXRlcmFibGVfc3ByZWFkKCkgewogICAgdGhyb3cgbmV3IFR5cGVFcnJvcigKICAgICAgICAiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIKICAgICk7Cn0KZnVuY3Rpb24gX29iamVjdF9kZXN0cnVjdHVyaW5nX2VtcHR5KG8pIHsKICAgIGlmIChvID09PSBudWxsIHx8IG8gPT09IHZvaWQgMCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGRlc3RydWN0dXJlICIgKyBvKTsKICAgIHJldHVybiBvOwp9CmZ1bmN0aW9uIF9vYmplY3Rfc3ByZWFkKHRhcmdldCkgewogICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsKICAgICAgICB2YXIgb3duS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7CiAgICAgICAgaWYgKHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgICAgIG93bktleXMgPSBvd25LZXlzLmNvbmNhdCgKICAgICAgICAgICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKS5maWx0ZXIoZnVuY3Rpb24oc3ltKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBzeW0pLmVudW1lcmFibGU7CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBvd25LZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7CiAgICAgICAgICAgIF9kZWZpbmVfcHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsKICAgICAgICB9KTsKICAgIH0KICAgIHJldHVybiB0YXJnZXQ7Cn0KZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7CiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7CiAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgewogICAgICAgIHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOwogICAgICAgIGlmIChlbnVtZXJhYmxlT25seSkgewogICAgICAgICAgICBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24oc3ltKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsKICAgIH0KICAgIHJldHVybiBrZXlzOwp9CmZ1bmN0aW9uIF9vYmplY3Rfc3ByZWFkX3Byb3BzKHRhcmdldCwgc291cmNlKSB7CiAgICBzb3VyY2UgPSBzb3VyY2UgIT0gbnVsbCA/IHNvdXJjZSA6IHt9OwogICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsKICAgIH0gZWxzZSB7CiAgICAgICAgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7CiAgICAgICAgfSk7CiAgICB9CiAgICByZXR1cm4gdGFyZ2V0Owp9CmZ1bmN0aW9uIF9vYmplY3Rfd2l0aG91dF9wcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHsKICAgIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OwogICAgdmFyIHRhcmdldCA9IF9vYmplY3Rfd2l0aG91dF9wcm9wZXJ0aWVzX2xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOwogICAgdmFyIGtleSwgaTsKICAgIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7CiAgICAgICAgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsKICAgICAgICAgICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsKICAgICAgICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsKICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gdGFyZ2V0Owp9CmZ1bmN0aW9uIF9vYmplY3Rfd2l0aG91dF9wcm9wZXJ0aWVzX2xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsKICAgIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OwogICAgdmFyIHRhcmdldCA9IHt9OwogICAgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOwogICAgdmFyIGtleSwgaTsKICAgIGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAga2V5ID0gc291cmNlS2V5c1tpXTsKICAgICAgICBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOwogICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07CiAgICB9CiAgICByZXR1cm4gdGFyZ2V0Owp9CmZ1bmN0aW9uIF9vdmVybG9hZF95aWVsZCh2YWx1ZSwgLyoqIDA6IGF3YWl0IDE6IGRlbGVnYXRlICovIGtpbmQpIHsKICAgIHRoaXMudiA9IHZhbHVlOwogICAgdGhpcy5rID0ga2luZDsKfQpmdW5jdGlvbiBfcG9zc2libGVfY29uc3RydWN0b3JfcmV0dXJuKHNlbGYsIGNhbGwpIHsKICAgIGlmIChjYWxsICYmIChfdHlwZV9vZihjYWxsKSA9PT0gIm9iamVjdCIgfHwgdHlwZW9mIGNhbGwgPT09ICJmdW5jdGlvbiIpKSB7CiAgICAgICAgcmV0dXJuIGNhbGw7CiAgICB9CiAgICByZXR1cm4gX2Fzc2VydF90aGlzX2luaXRpYWxpemVkKHNlbGYpOwp9CmZ1bmN0aW9uIF9yZWFkX29ubHlfZXJyb3IobmFtZSkgewogICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiXCIiICsgbmFtZSArICJcIiBpcyByZWFkLW9ubHkiKTsKfQpmdW5jdGlvbiBzZXQodGFyZ2V0LCBwcm9wZXJ0eSwgdmFsdWUsIHJlY2VpdmVyKSB7CiAgICBpZiAodHlwZW9mIFJlZmxlY3QgIT09ICJ1bmRlZmluZWQiICYmIFJlZmxlY3Quc2V0KSB7CiAgICAgICAgc2V0ID0gUmVmbGVjdC5zZXQ7CiAgICB9IGVsc2UgewogICAgICAgIHNldCA9IGZ1bmN0aW9uIHNldCh0YXJnZXQsIHByb3BlcnR5LCB2YWx1ZSwgcmVjZWl2ZXIpIHsKICAgICAgICAgICAgdmFyIGJhc2UgPSBfc3VwZXJfcHJvcF9iYXNlKHRhcmdldCwgcHJvcGVydHkpOwogICAgICAgICAgICB2YXIgZGVzYzsKICAgICAgICAgICAgaWYgKGJhc2UpIHsKICAgICAgICAgICAgICAgIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGJhc2UsIHByb3BlcnR5KTsKICAgICAgICAgICAgICAgIGlmIChkZXNjLnNldCkgewogICAgICAgICAgICAgICAgICAgIGRlc2Muc2V0LmNhbGwocmVjZWl2ZXIsIHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWRlc2Mud3JpdGFibGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocmVjZWl2ZXIsIHByb3BlcnR5KTsKICAgICAgICAgICAgaWYgKGRlc2MpIHsKICAgICAgICAgICAgICAgIGlmICghZGVzYy53cml0YWJsZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRlc2MudmFsdWUgPSB2YWx1ZTsKICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZWNlaXZlciwgcHJvcGVydHksIGRlc2MpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgX2RlZmluZV9wcm9wZXJ0eShyZWNlaXZlciwgcHJvcGVydHksIHZhbHVlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9OwogICAgfQogICAgcmV0dXJuIHNldCh0YXJnZXQsIHByb3BlcnR5LCB2YWx1ZSwgcmVjZWl2ZXIpOwp9CmZ1bmN0aW9uIF9zZXQodGFyZ2V0LCBwcm9wZXJ0eSwgdmFsdWUsIHJlY2VpdmVyLCBpc1N0cmljdCkgewogICAgdmFyIHMgPSBzZXQodGFyZ2V0LCBwcm9wZXJ0eSwgdmFsdWUsIHJlY2VpdmVyIHx8IHRhcmdldCk7CiAgICBpZiAoIXMgJiYgaXNTdHJpY3QpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImZhaWxlZCB0byBzZXQgcHJvcGVydHkiKTsKICAgIH0KICAgIHJldHVybiB2YWx1ZTsKfQpmdW5jdGlvbiBfc2V0X3Byb3RvdHlwZV9vZihvLCBwKSB7CiAgICBfc2V0X3Byb3RvdHlwZV9vZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZihvLCBwKSB7CiAgICAgICAgby5fX3Byb3RvX18gPSBwOwogICAgICAgIHJldHVybiBvOwogICAgfTsKICAgIHJldHVybiBfc2V0X3Byb3RvdHlwZV9vZihvLCBwKTsKfQpmdW5jdGlvbiBfc2tpcF9maXJzdF9nZW5lcmF0b3JfbmV4dChmbikgewogICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBpdCA9IGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgaXQubmV4dCgpOwogICAgICAgIHJldHVybiBpdDsKICAgIH07Cn0KZnVuY3Rpb24gX3NsaWNlZF90b19hcnJheShhcnIsIGkpIHsKICAgIHJldHVybiBfYXJyYXlfd2l0aF9ob2xlcyhhcnIpIHx8IF9pdGVyYWJsZV90b19hcnJheV9saW1pdChhcnIsIGkpIHx8IF91bnN1cHBvcnRlZF9pdGVyYWJsZV90b19hcnJheShhcnIsIGkpIHx8IF9ub25faXRlcmFibGVfcmVzdCgpOwp9CmZ1bmN0aW9uIF9zbGljZWRfdG9fYXJyYXlfbG9vc2UoYXJyLCBpKSB7CiAgICByZXR1cm4gX2FycmF5X3dpdGhfaG9sZXMoYXJyKSB8fCBfaXRlcmFibGVfdG9fYXJyYXlfbGltaXRfbG9vc2UoYXJyLCBpKSB8fCBfdW5zdXBwb3J0ZWRfaXRlcmFibGVfdG9fYXJyYXkoYXJyLCBpKQogICAgICAgIHx8IF9ub25faXRlcmFibGVfcmVzdCgpOwp9CmZ1bmN0aW9uIF9zdXBlcl9wcm9wX2Jhc2Uob2JqZWN0LCBwcm9wZXJ0eSkgewogICAgd2hpbGUgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSkpIHsKICAgICAgICBvYmplY3QgPSBfZ2V0X3Byb3RvdHlwZV9vZihvYmplY3QpOwogICAgICAgIGlmIChvYmplY3QgPT09IG51bGwpIGJyZWFrOwogICAgfQogICAgcmV0dXJuIG9iamVjdDsKfQpmdW5jdGlvbiBfdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWwoc3RyaW5ncywgcmF3KSB7CiAgICBpZiAoIXJhdykgewogICAgICAgIHJhdyA9IHN0cmluZ3Muc2xpY2UoMCk7CiAgICB9CiAgICByZXR1cm4gT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhzdHJpbmdzLCB7IHJhdzogeyB2YWx1ZTogT2JqZWN0LmZyZWV6ZShyYXcpIH0gfSkpOwp9CmZ1bmN0aW9uIF90YWdnZWRfdGVtcGxhdGVfbGl0ZXJhbF9sb29zZShzdHJpbmdzLCByYXcpIHsKICAgIGlmICghcmF3KSB7CiAgICAgICAgcmF3ID0gc3RyaW5ncy5zbGljZSgwKTsKICAgIH0KICAgIHN0cmluZ3MucmF3ID0gcmF3OwogICAgcmV0dXJuIHN0cmluZ3M7Cn0KZnVuY3Rpb24gX3Rocm93KGUpIHsKICAgIHRocm93IGU7Cn0KZnVuY3Rpb24gX3RvX2FycmF5KGFycikgewogICAgcmV0dXJuIF9hcnJheV93aXRoX2hvbGVzKGFycikgfHwgX2l0ZXJhYmxlX3RvX2FycmF5KGFycikgfHwgX3Vuc3VwcG9ydGVkX2l0ZXJhYmxlX3RvX2FycmF5KGFycikgfHwgX25vbl9pdGVyYWJsZV9yZXN0KCk7Cn0KZnVuY3Rpb24gX3RvX2NvbnN1bWFibGVfYXJyYXkoYXJyKSB7CiAgICByZXR1cm4gX2FycmF5X3dpdGhvdXRfaG9sZXMoYXJyKSB8fCBfaXRlcmFibGVfdG9fYXJyYXkoYXJyKSB8fCBfdW5zdXBwb3J0ZWRfaXRlcmFibGVfdG9fYXJyYXkoYXJyKSB8fCBfbm9uX2l0ZXJhYmxlX3NwcmVhZCgpOwp9CmZ1bmN0aW9uIF90b19wcmltaXRpdmUoaW5wdXQsIGhpbnQpIHsKICAgIGlmIChfdHlwZV9vZihpbnB1dCkgIT09ICJvYmplY3QiIHx8IGlucHV0ID09PSBudWxsKSByZXR1cm4gaW5wdXQ7CiAgICB2YXIgcHJpbSA9IGlucHV0W1N5bWJvbC50b1ByaW1pdGl2ZV07CiAgICBpZiAocHJpbSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgdmFyIHJlcyA9IHByaW0uY2FsbChpbnB1dCwgaGludCB8fCAiZGVmYXVsdCIpOwogICAgICAgIGlmIChfdHlwZV9vZihyZXMpICE9PSAib2JqZWN0IikgcmV0dXJuIHJlczsKICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpOwogICAgfQogICAgcmV0dXJuIChoaW50ID09PSAic3RyaW5nIiA/IFN0cmluZyA6IE51bWJlcikoaW5wdXQpOwp9CmZ1bmN0aW9uIF90b19wcm9wZXJ0eV9rZXkoYXJnKSB7CiAgICB2YXIga2V5ID0gX3RvX3ByaW1pdGl2ZShhcmcsICJzdHJpbmciKTsKICAgIHJldHVybiBfdHlwZV9vZihrZXkpID09PSAic3ltYm9sIiA/IGtleSA6IFN0cmluZyhrZXkpOwp9CmZ1bmN0aW9uIF91cGRhdGUodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIsIGlzU3RyaWN0KSB7CiAgICByZXR1cm4gewogICAgICAgIGdldCBfKCkgewogICAgICAgICAgICByZXR1cm4gX2dldCh0YXJnZXQsIHByb3BlcnR5LCByZWNlaXZlcik7CiAgICAgICAgfSwKICAgICAgICBzZXQgXyh2YWx1ZSkgewogICAgICAgICAgICBfc2V0KHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlciwgaXNTdHJpY3QpOwogICAgICAgIH0KICAgIH07Cn0KZnVuY3Rpb24gX3R5cGVfb2Yob2JqKSB7CiAgICAiQHN3Yy9oZWxwZXJzIC0gdHlwZW9mIjsKICAgIHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCAhPT0gInVuZGVmaW5lZCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgPyAic3ltYm9sIiA6IHR5cGVvZiBvYmo7Cn0KZnVuY3Rpb24gX3Vuc3VwcG9ydGVkX2l0ZXJhYmxlX3RvX2FycmF5KG8sIG1pbkxlbikgewogICAgaWYgKCFvKSByZXR1cm47CiAgICBpZiAodHlwZW9mIG8gPT09ICJzdHJpbmciKSByZXR1cm4gX2FycmF5X2xpa2VfdG9fYXJyYXkobywgbWluTGVuKTsKICAgIHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsKICAgIGlmIChuID09PSAiT2JqZWN0IiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOwogICAgaWYgKG4gPT09ICJNYXAiIHx8IG4gPT09ICJTZXQiKSByZXR1cm4gQXJyYXkuZnJvbShuKTsKICAgIGlmIChuID09PSAiQXJndW1lbnRzIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheV9saWtlX3RvX2FycmF5KG8sIG1pbkxlbik7Cn0KZnVuY3Rpb24gX3dyYXBfYXN5bmNfZ2VuZXJhdG9yKGZuKSB7CiAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIG5ldyBfYXN5bmNfZ2VuZXJhdG9yKGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpOwogICAgfTsKfQpmdW5jdGlvbiBfd3JhcF9uYXRpdmVfc3VwZXIoQ2xhc3MpIHsKICAgIHZhciBfY2FjaGUgPSB0eXBlb2YgTWFwID09PSAiZnVuY3Rpb24iID8gbmV3IE1hcCgpIDogdW5kZWZpbmVkOwogICAgX3dyYXBfbmF0aXZlX3N1cGVyID0gZnVuY3Rpb24gd3JhcE5hdGl2ZVN1cGVyKENsYXNzKSB7CiAgICAgICAgaWYgKENsYXNzID09PSBudWxsIHx8ICFfaXNfbmF0aXZlX2Z1bmN0aW9uKENsYXNzKSkgcmV0dXJuIENsYXNzOwogICAgICAgIGlmICh0eXBlb2YgQ2xhc3MgIT09ICJmdW5jdGlvbiIpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTsKICAgICAgICB9CiAgICAgICAgaWYgKHR5cGVvZiBfY2FjaGUgIT09ICJ1bmRlZmluZWQiKSB7CiAgICAgICAgICAgIGlmIChfY2FjaGUuaGFzKENsYXNzKSkgcmV0dXJuIF9jYWNoZS5nZXQoQ2xhc3MpOwogICAgICAgICAgICBfY2FjaGUuc2V0KENsYXNzLCBXcmFwcGVyKTsKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gV3JhcHBlcigpIHsKICAgICAgICAgICAgcmV0dXJuIF9jb25zdHJ1Y3QoQ2xhc3MsIGFyZ3VtZW50cywgX2dldF9wcm90b3R5cGVfb2YodGhpcykuY29uc3RydWN0b3IpOwogICAgICAgIH0KICAgICAgICBXcmFwcGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQ2xhc3MucHJvdG90eXBlLCB7CiAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBXcmFwcGVyLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9CiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuIF9zZXRfcHJvdG90eXBlX29mKFdyYXBwZXIsIENsYXNzKTsKICAgIH07CiAgICByZXR1cm4gX3dyYXBfbmF0aXZlX3N1cGVyKENsYXNzKTsKfQpmdW5jdGlvbiBfd3JpdGVfb25seV9lcnJvcihuYW1lKSB7CiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJcIiIgKyBuYW1lICsgIlwiIGlzIHdyaXRlLW9ubHkiKTsKfQpmdW5jdGlvbiBfY2xhc3NfcHJpdmF0ZV9maWVsZF9kZXN0cnVjdHVyZShyZWNlaXZlciwgcHJpdmF0ZU1hcCkgewogICAgdmFyIGRlc2NyaXB0b3IgPSBfY2xhc3NfZXh0cmFjdF9maWVsZF9kZXNjcmlwdG9yKHJlY2VpdmVyLCBwcml2YXRlTWFwLCAic2V0Iik7CiAgICByZXR1cm4gX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfZGVzdHJ1Y3R1cmUocmVjZWl2ZXIsIGRlc2NyaXB0b3IpOwp9CmZ1bmN0aW9uIF9jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9kZXN0cnVjdHVyZShyZWNlaXZlciwgY2xhc3NDb25zdHJ1Y3RvciwgZGVzY3JpcHRvcikgewogICAgX2NsYXNzX2NoZWNrX3ByaXZhdGVfc3RhdGljX2FjY2VzcyhyZWNlaXZlciwgY2xhc3NDb25zdHJ1Y3Rvcik7CiAgICBfY2xhc3NfY2hlY2tfcHJpdmF0ZV9zdGF0aWNfZmllbGRfZGVzY3JpcHRvcihkZXNjcmlwdG9yLCAic2V0Iik7CiAgICByZXR1cm4gX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfZGVzdHJ1Y3R1cmUocmVjZWl2ZXIsIGRlc2NyaXB0b3IpOwp9CmZ1bmN0aW9uIF9jbGFzc19zdGF0aWNfcHJpdmF0ZV9tZXRob2RfZ2V0KHJlY2VpdmVyLCBjbGFzc0NvbnN0cnVjdG9yLCBtZXRob2QpIHsKICAgIF9jbGFzc19jaGVja19wcml2YXRlX3N0YXRpY19hY2Nlc3MocmVjZWl2ZXIsIGNsYXNzQ29uc3RydWN0b3IpOwogICAgcmV0dXJuIG1ldGhvZDsKfQpmdW5jdGlvbiBfY2xhc3NfY2hlY2tfcHJpdmF0ZV9zdGF0aWNfYWNjZXNzKHJlY2VpdmVyLCBjbGFzc0NvbnN0cnVjdG9yKSB7CiAgICBpZiAocmVjZWl2ZXIgIT09IGNsYXNzQ29uc3RydWN0b3IpIHsKICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIHN0YXRpYyBhY2Nlc3Mgb2Ygd3JvbmcgcHJvdmVuYW5jZSIpOwogICAgfQp9CmZ1bmN0aW9uIF9pc19uYXRpdmVfcmVmbGVjdF9jb25zdHJ1Y3QoKSB7CiAgICAvLyBTaW5jZSBSZWZsZWN0LmNvbnN0cnVjdCBjYW4ndCBiZSBwcm9wZXJseSBwb2x5ZmlsbGVkLCBzb21lCiAgICAvLyBpbXBsZW1lbnRhdGlvbnMgKGUuZy4gY29yZS1qc0AyKSBkb24ndCBzZXQgdGhlIGNvcnJlY3QgaW50ZXJuYWwgc2xvdHMuCiAgICAvLyBUaG9zZSBwb2x5ZmlsbHMgZG9uJ3QgYWxsb3cgdXMgdG8gc3ViY2xhc3MgYnVpbHQtaW5zLCBzbyB3ZSBuZWVkIHRvCiAgICAvLyB1c2Ugb3VyIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uLgogICAgdHJ5IHsKICAgICAgICAvLyBJZiB0aGUgaW50ZXJuYWwgc2xvdHMgYXJlbid0IHNldCwgdGhpcyB0aHJvd3MgYW4gZXJyb3Igc2ltaWxhciB0bwogICAgICAgIC8vICAgVHlwZUVycm9yOiB0aGlzIGlzIG5vdCBhIEJvb2xlYW4gb2JqZWN0LgogICAgICAgIHZhciByZXN1bHQgPSAhQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbigpIHt9KSk7CiAgICB9IGNhdGNoIChfKSB7fQogICAgcmV0dXJuIChfaXNfbmF0aXZlX3JlZmxlY3RfY29uc3RydWN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuICEhcmVzdWx0OwogICAgfSkoKTsKfQpmdW5jdGlvbiBfY3JlYXRlX3N1cGVyKERlcml2ZWQpIHsKICAgIHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzX25hdGl2ZV9yZWZsZWN0X2NvbnN0cnVjdCgpOwogICAgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgewogICAgICAgIHZhciBTdXBlciA9IF9nZXRfcHJvdG90eXBlX29mKERlcml2ZWQpLCByZXN1bHQ7CiAgICAgICAgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsKICAgICAgICAgICAgdmFyIE5ld1RhcmdldCA9IF9nZXRfcHJvdG90eXBlX29mKHRoaXMpLmNvbnN0cnVjdG9yOwogICAgICAgICAgICByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBfcG9zc2libGVfY29uc3RydWN0b3JfcmV0dXJuKHRoaXMsIHJlc3VsdCk7CiAgICB9Owp9CmZ1bmN0aW9uIF9jcmVhdGVfZm9yX29mX2l0ZXJhdG9yX2hlbHBlcl9sb29zZShvLCBhbGxvd0FycmF5TGlrZSkgewogICAgdmFyIGl0ID0gdHlwZW9mIFN5bWJvbCAhPT0gInVuZGVmaW5lZCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdIHx8IG9bIkBAaXRlcmF0b3IiXTsKICAgIGlmIChpdCkgcmV0dXJuIChpdCA9IGl0LmNhbGwobykpLm5leHQuYmluZChpdCk7CiAgICAvLyBGYWxsYmFjayBmb3IgZW5naW5lcyB3aXRob3V0IHN5bWJvbCBzdXBwb3J0CiAgICBpZiAoQXJyYXkuaXNBcnJheShvKSB8fCAoaXQgPSBfdW5zdXBwb3J0ZWRfaXRlcmFibGVfdG9fYXJyYXkobykpIHx8IGFsbG93QXJyYXlMaWtlICYmIG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSAibnVtYmVyIikgewogICAgICAgIGlmIChpdCkgbyA9IGl0OwogICAgICAgIHZhciBpID0gMDsKICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmIChpID49IG8ubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4geyBkb25lOiB0cnVlIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiBvW2krK10gfTsKICAgICAgICB9OwogICAgfQogICAgdGhyb3cgbmV3IFR5cGVFcnJvcigKICAgICAgICAiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iCiAgICApOwp9CmZ1bmN0aW9uIF90c19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykgewogICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDsKICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gIm9iamVjdCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09ICJmdW5jdGlvbiIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTsKICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7CiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByOwp9ZnVuY3Rpb24gX3RzX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7CiAgICB2YXIgZiwgeSwgdCwgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uICgpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZyA9IE9iamVjdC5jcmVhdGUoKHR5cGVvZiBJdGVyYXRvciA9PT0gImZ1bmN0aW9uIiA/IEl0ZXJhdG9yIDogT2JqZWN0KS5wcm90b3R5cGUpOwogICAgcmV0dXJuIGcubmV4dCA9IHZlcmIoMCksIGdbInRocm93Il0gPSB2ZXJiKDEpLCBnWyJyZXR1cm4iXSA9IHZlcmIoMiksIHR5cGVvZiBTeW1ib2wgPT09ICJmdW5jdGlvbiIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pLCBnOwogICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9CiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7CiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTsKICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkgewogICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5WyJyZXR1cm4iXSA6IG9wWzBdID8geVsidGhyb3ciXSB8fCAoKHQgPSB5WyJyZXR1cm4iXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7CiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTsKICAgICAgICAgICAgc3dpdGNoIChvcFswXSkgewogICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9OwogICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH0KICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfQogICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfQogICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH0KICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7CiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTsKICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9CiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07CiAgICB9Cn1mdW5jdGlvbiBfdHNfbWV0YWRhdGEoaywgdikgewogICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSAib2JqZWN0IiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gImZ1bmN0aW9uIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEoaywgdik7Cn1mdW5jdGlvbiBfdHNfcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7CiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH0KfWZ1bmN0aW9uIF90c192YWx1ZXMobykgewogICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7CiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTsKICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gIm51bWJlciIpIHJldHVybiB7CiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwOwogICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07CiAgICAgICAgfQogICAgfTsKICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/ICJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLiIgOiAiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpOwp9ZnVuY3Rpb24gX3RzX2FkZF9kaXNwb3NhYmxlX3Jlc291cmNlKGVudiwgdmFsdWUsIGFzeW5jKSB7CiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHZvaWQgMCkgewogICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICJvYmplY3QiICYmIHR5cGVvZiB2YWx1ZSAhPT0gImZ1bmN0aW9uIikgdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkLiIpOwogICAgICAgIHZhciBkaXNwb3NlLCBpbm5lcjsKICAgICAgICBpZiAoYXN5bmMpIHsKICAgICAgICAgICAgaWYgKCFTeW1ib2wuYXN5bmNEaXNwb3NlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTeW1ib2wuYXN5bmNEaXNwb3NlIGlzIG5vdCBkZWZpbmVkLiIpOwogICAgICAgICAgICBkaXNwb3NlID0gdmFsdWVbU3ltYm9sLmFzeW5jRGlzcG9zZV07CiAgICAgICAgfQogICAgICAgIGlmIChkaXNwb3NlID09PSB2b2lkIDApIHsKICAgICAgICAgICAgaWYgKCFTeW1ib2wuZGlzcG9zZSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3ltYm9sLmRpc3Bvc2UgaXMgbm90IGRlZmluZWQuIik7CiAgICAgICAgICAgIGRpc3Bvc2UgPSB2YWx1ZVtTeW1ib2wuZGlzcG9zZV07CiAgICAgICAgICAgIGlmIChhc3luYykgaW5uZXIgPSBkaXNwb3NlOwogICAgICAgIH0KICAgICAgICBpZiAodHlwZW9mIGRpc3Bvc2UgIT09ICJmdW5jdGlvbiIpIHRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBub3QgZGlzcG9zYWJsZS4iKTsKICAgICAgICBpZiAoaW5uZXIpIGRpc3Bvc2UgPSBmdW5jdGlvbiAoKSB7IHRyeSB7IGlubmVyLmNhbGwodGhpcyk7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIFByb21pc2UucmVqZWN0KGUpOyB9IH07CiAgICAgICAgZW52LnN0YWNrLnB1c2goeyB2YWx1ZTogdmFsdWUsIGRpc3Bvc2U6IGRpc3Bvc2UsIGFzeW5jOiBhc3luYyB9KTsKICAgIH0KICAgIGVsc2UgaWYgKGFzeW5jKSB7CiAgICAgICAgZW52LnN0YWNrLnB1c2goeyBhc3luYzogdHJ1ZSB9KTsKICAgIH0KICAgIHJldHVybiB2YWx1ZTsKfWZ1bmN0aW9uIF90c19kaXNwb3NlX3Jlc291cmNlcyhlbnYpIHsKICAgIHZhciBfU3VwcHJlc3NlZEVycm9yID0gdHlwZW9mIFN1cHByZXNzZWRFcnJvciA9PT0gImZ1bmN0aW9uIiA/IFN1cHByZXNzZWRFcnJvciA6IGZ1bmN0aW9uIChlcnJvciwgc3VwcHJlc3NlZCwgbWVzc2FnZSkgewogICAgICAgIHZhciBlID0gbmV3IEVycm9yKG1lc3NhZ2UpOwogICAgICAgIHJldHVybiBlLm5hbWUgPSAiU3VwcHJlc3NlZEVycm9yIiwgZS5lcnJvciA9IGVycm9yLCBlLnN1cHByZXNzZWQgPSBzdXBwcmVzc2VkLCBlOwogICAgfTsKCgogICAgcmV0dXJuIChfdHNfZGlzcG9zZV9yZXNvdXJjZXMgPSBmdW5jdGlvbiBfdHNfZGlzcG9zZV9yZXNvdXJjZXMoZW52KSB7CiAgICAgICAgZnVuY3Rpb24gZmFpbChlKSB7CiAgICAgICAgICAgIGVudi5lcnJvciA9IGVudi5oYXNFcnJvciA/IG5ldyBfU3VwcHJlc3NlZEVycm9yKGUsIGVudi5lcnJvciwgIkFuIGVycm9yIHdhcyBzdXBwcmVzc2VkIGR1cmluZyBkaXNwb3NhbC4iKSA6IGU7CiAgICAgICAgICAgIGVudi5oYXNFcnJvciA9IHRydWU7CiAgICAgICAgfQogICAgICAgIHZhciByLCBzID0gMDsKICAgICAgICBmdW5jdGlvbiBuZXh0KCkgewogICAgICAgICAgICB3aGlsZSAociA9IGVudi5zdGFjay5wb3AoKSkgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXIuYXN5bmMgJiYgcyA9PT0gMSkgcmV0dXJuIHMgPSAwLCBlbnYuc3RhY2sucHVzaChyKSwgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihuZXh0KTsKICAgICAgICAgICAgICAgICAgICBpZiAoci5kaXNwb3NlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSByLmRpc3Bvc2UuY2FsbChyLnZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIuYXN5bmMpIHJldHVybiBzIHw9IDIsIFByb21pc2UucmVzb2x2ZShyZXN1bHQpLnRoZW4obmV4dCwgZnVuY3Rpb24gKGUpIHsgZmFpbChlKTsgcmV0dXJuIG5leHQoKTsgfSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgcyB8PSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICBmYWlsKGUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChzID09PSAxKSByZXR1cm4gZW52Lmhhc0Vycm9yID8gUHJvbWlzZS5yZWplY3QoZW52LmVycm9yKSA6IFByb21pc2UucmVzb2x2ZSgpOwogICAgICAgICAgICBpZiAoZW52Lmhhc0Vycm9yKSB0aHJvdyBlbnYuZXJyb3I7CiAgICAgICAgfQogICAgICAgIHJldHVybiBuZXh0KCk7CiAgICB9KShlbnYpOwp9LyogQG1pblZlcnNpb24gNy4yMC4wICovCgovKioKICBFbnVtcyBhcmUgdXNlZCBpbiB0aGlzIGZpbGUsIGJ1dCBub3QgYXNzaWduZWQgdG8gdmFycyB0byBhdm9pZCBub24taG9pc3RhYmxlIHZhbHVlcwoKICBDT05TVFJVQ1RPUiA9IDA7CiAgUFVCTElDID0gMTsKICBQUklWQVRFID0gMjsKCiAgRklFTEQgPSAwOwogIEFDQ0VTU09SID0gMTsKICBNRVRIT0QgPSAyOwogIEdFVFRFUiA9IDM7CiAgU0VUVEVSID0gNDsKCiAgU1RBVElDID0gNTsKCiAgQ0xBU1MgPSAxMDsgLy8gb25seSB1c2VkIGluIGFzc2VydFZhbGlkUmV0dXJuVmFsdWUKKi8KCmZ1bmN0aW9uIGFwcGx5RGVjczIyMDNSRmFjdG9yeSgpIHsKICAgIGZ1bmN0aW9uIGNyZWF0ZUFkZEluaXRpYWxpemVyTWV0aG9kKGluaXRpYWxpemVycywgZGVjb3JhdG9yRmluaXNoZWRSZWYpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gYWRkSW5pdGlhbGl6ZXIoaW5pdGlhbGl6ZXIpIHsKICAgICAgICAgICAgYXNzZXJ0Tm90RmluaXNoZWQoZGVjb3JhdG9yRmluaXNoZWRSZWYsICJhZGRJbml0aWFsaXplciIpOwogICAgICAgICAgICBhc3NlcnRDYWxsYWJsZShpbml0aWFsaXplciwgIkFuIGluaXRpYWxpemVyIik7CiAgICAgICAgICAgIGluaXRpYWxpemVycy5wdXNoKGluaXRpYWxpemVyKTsKICAgICAgICB9OwogICAgfQoKICAgIGZ1bmN0aW9uIG1lbWJlckRlYygKICAgICAgICBkZWMsCiAgICAgICAgbmFtZSwKICAgICAgICBkZXNjLAogICAgICAgIGluaXRpYWxpemVycywKICAgICAgICBraW5kLAogICAgICAgIGlzU3RhdGljLAogICAgICAgIGlzUHJpdmF0ZSwKICAgICAgICBtZXRhZGF0YSwKICAgICAgICB2YWx1ZQogICAgKSB7CiAgICAgICAgdmFyIGtpbmRTdHI7CgogICAgICAgIHN3aXRjaCAoa2luZCkgewogICAgICAgICAgICBjYXNlIDEgLyogQUNDRVNTT1IgKi86CiAgICAgICAgICAgICAgICBraW5kU3RyID0gImFjY2Vzc29yIjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDIgLyogTUVUSE9EICovOgogICAgICAgICAgICAgICAga2luZFN0ciA9ICJtZXRob2QiOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMyAvKiBHRVRURVIgKi86CiAgICAgICAgICAgICAgICBraW5kU3RyID0gImdldHRlciI7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA0IC8qIFNFVFRFUiAqLzoKICAgICAgICAgICAgICAgIGtpbmRTdHIgPSAic2V0dGVyIjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAga2luZFN0ciA9ICJmaWVsZCI7CiAgICAgICAgfQoKICAgICAgICB2YXIgY3R4ID0gewogICAgICAgICAgICBraW5kOiBraW5kU3RyLAogICAgICAgICAgICBuYW1lOiBpc1ByaXZhdGUgPyAiIyIgKyBuYW1lIDogbmFtZSwKICAgICAgICAgICAgc3RhdGljOiBpc1N0YXRpYywKICAgICAgICAgICAgcHJpdmF0ZTogaXNQcml2YXRlLAogICAgICAgICAgICBtZXRhZGF0YTogbWV0YWRhdGEsCiAgICAgICAgfTsKCiAgICAgICAgdmFyIGRlY29yYXRvckZpbmlzaGVkUmVmID0geyB2OiBmYWxzZSB9OwoKICAgICAgICBjdHguYWRkSW5pdGlhbGl6ZXIgPSBjcmVhdGVBZGRJbml0aWFsaXplck1ldGhvZCgKICAgICAgICAgICAgaW5pdGlhbGl6ZXJzLAogICAgICAgICAgICBkZWNvcmF0b3JGaW5pc2hlZFJlZgogICAgICAgICk7CgogICAgICAgIHZhciBnZXQsIHNldDsKICAgICAgICBpZiAoa2luZCA9PT0gMCAvKiBGSUVMRCAqLykgewogICAgICAgICAgICBpZiAoaXNQcml2YXRlKSB7CiAgICAgICAgICAgICAgICBnZXQgPSBkZXNjLmdldDsKICAgICAgICAgICAgICAgIHNldCA9IGRlc2Muc2V0OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZ2V0ID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzW25hbWVdOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHNldCA9IGZ1bmN0aW9uICh2KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpc1tuYW1lXSA9IHY7CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChraW5kID09PSAyIC8qIE1FVEhPRCAqLykgewogICAgICAgICAgICBnZXQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZGVzYy52YWx1ZTsKICAgICAgICAgICAgfTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyByZXBsYWNlIHdpdGggdmFsdWVzIHRoYXQgd2lsbCBnbyB0aHJvdWdoIHRoZSBmaW5hbCBnZXR0ZXIgYW5kIHNldHRlcgogICAgICAgICAgICBpZiAoa2luZCA9PT0gMSAvKiBBQ0NFU1NPUiAqLyB8fCBraW5kID09PSAzIC8qIEdFVFRFUiAqLykgewogICAgICAgICAgICAgICAgZ2V0ID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXNjLmdldC5jYWxsKHRoaXMpOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGtpbmQgPT09IDEgLyogQUNDRVNTT1IgKi8gfHwga2luZCA9PT0gNCAvKiBTRVRURVIgKi8pIHsKICAgICAgICAgICAgICAgIHNldCA9IGZ1bmN0aW9uICh2KSB7CiAgICAgICAgICAgICAgICAgICAgZGVzYy5zZXQuY2FsbCh0aGlzLCB2KTsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY3R4LmFjY2VzcyA9CiAgICAgICAgICAgIGdldCAmJiBzZXQgPyB7IGdldDogZ2V0LCBzZXQ6IHNldCB9IDogZ2V0ID8geyBnZXQ6IGdldCB9IDogeyBzZXQ6IHNldCB9OwoKICAgICAgICB0cnkgewogICAgICAgICAgICByZXR1cm4gZGVjKHZhbHVlLCBjdHgpOwogICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgIGRlY29yYXRvckZpbmlzaGVkUmVmLnYgPSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBhc3NlcnROb3RGaW5pc2hlZChkZWNvcmF0b3JGaW5pc2hlZFJlZiwgZm5OYW1lKSB7CiAgICAgICAgaWYgKGRlY29yYXRvckZpbmlzaGVkUmVmLnYpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKAogICAgICAgICAgICAgICAgImF0dGVtcHRlZCB0byBjYWxsICIgKyBmbk5hbWUgKyAiIGFmdGVyIGRlY29yYXRpb24gd2FzIGZpbmlzaGVkIgogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBhc3NlcnRDYWxsYWJsZShmbiwgaGludCkgewogICAgICAgIGlmICh0eXBlb2YgZm4gIT09ICJmdW5jdGlvbiIpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihoaW50ICsgIiBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gYXNzZXJ0VmFsaWRSZXR1cm5WYWx1ZShraW5kLCB2YWx1ZSkgewogICAgICAgIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlOwoKICAgICAgICBpZiAoa2luZCA9PT0gMSAvKiBBQ0NFU1NPUiAqLykgewogICAgICAgICAgICBpZiAodHlwZSAhPT0gIm9iamVjdCIgfHwgdmFsdWUgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgImFjY2Vzc29yIGRlY29yYXRvcnMgbXVzdCByZXR1cm4gYW4gb2JqZWN0IHdpdGggZ2V0LCBzZXQsIG9yIGluaXQgcHJvcGVydGllcyBvciB2b2lkIDAiCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh2YWx1ZS5nZXQgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgYXNzZXJ0Q2FsbGFibGUodmFsdWUuZ2V0LCAiYWNjZXNzb3IuZ2V0Iik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHZhbHVlLnNldCAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICBhc3NlcnRDYWxsYWJsZSh2YWx1ZS5zZXQsICJhY2Nlc3Nvci5zZXQiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAodmFsdWUuaW5pdCAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICBhc3NlcnRDYWxsYWJsZSh2YWx1ZS5pbml0LCAiYWNjZXNzb3IuaW5pdCIpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmICh0eXBlICE9PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgICAgIHZhciBoaW50OwogICAgICAgICAgICBpZiAoa2luZCA9PT0gMCAvKiBGSUVMRCAqLykgewogICAgICAgICAgICAgICAgaGludCA9ICJmaWVsZCI7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoa2luZCA9PT0gMTAgLyogQ0xBU1MgKi8pIHsKICAgICAgICAgICAgICAgIGhpbnQgPSAiY2xhc3MiOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaGludCA9ICJtZXRob2QiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICBoaW50ICsgIiBkZWNvcmF0b3JzIG11c3QgcmV0dXJuIGEgZnVuY3Rpb24gb3Igdm9pZCAwIgogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBhcHBseU1lbWJlckRlYygKICAgICAgICByZXQsCiAgICAgICAgYmFzZSwKICAgICAgICBkZWNJbmZvLAogICAgICAgIG5hbWUsCiAgICAgICAga2luZCwKICAgICAgICBpc1N0YXRpYywKICAgICAgICBpc1ByaXZhdGUsCiAgICAgICAgaW5pdGlhbGl6ZXJzLAogICAgICAgIG1ldGFkYXRhCiAgICApIHsKICAgICAgICB2YXIgZGVjcyA9IGRlY0luZm9bMF07CgogICAgICAgIHZhciBkZXNjLCBpbml0LCB2YWx1ZTsKCiAgICAgICAgaWYgKGlzUHJpdmF0ZSkgewogICAgICAgICAgICBpZiAoa2luZCA9PT0gMCAvKiBGSUVMRCAqLyB8fCBraW5kID09PSAxIC8qIEFDQ0VTU09SICovKSB7CiAgICAgICAgICAgICAgICBkZXNjID0gewogICAgICAgICAgICAgICAgICAgIGdldDogZGVjSW5mb1szXSwKICAgICAgICAgICAgICAgICAgICBzZXQ6IGRlY0luZm9bNF0sCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9IGVsc2UgaWYgKGtpbmQgPT09IDMgLyogR0VUVEVSICovKSB7CiAgICAgICAgICAgICAgICBkZXNjID0gewogICAgICAgICAgICAgICAgICAgIGdldDogZGVjSW5mb1szXSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0gZWxzZSBpZiAoa2luZCA9PT0gNCAvKiBTRVRURVIgKi8pIHsKICAgICAgICAgICAgICAgIGRlc2MgPSB7CiAgICAgICAgICAgICAgICAgICAgc2V0OiBkZWNJbmZvWzNdLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGRlc2MgPSB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGRlY0luZm9bM10sCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChraW5kICE9PSAwIC8qIEZJRUxEICovKSB7CiAgICAgICAgICAgIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGJhc2UsIG5hbWUpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGtpbmQgPT09IDEgLyogQUNDRVNTT1IgKi8pIHsKICAgICAgICAgICAgdmFsdWUgPSB7CiAgICAgICAgICAgICAgICBnZXQ6IGRlc2MuZ2V0LAogICAgICAgICAgICAgICAgc2V0OiBkZXNjLnNldCwKICAgICAgICAgICAgfTsKICAgICAgICB9IGVsc2UgaWYgKGtpbmQgPT09IDIgLyogTUVUSE9EICovKSB7CiAgICAgICAgICAgIHZhbHVlID0gZGVzYy52YWx1ZTsKICAgICAgICB9IGVsc2UgaWYgKGtpbmQgPT09IDMgLyogR0VUVEVSICovKSB7CiAgICAgICAgICAgIHZhbHVlID0gZGVzYy5nZXQ7CiAgICAgICAgfSBlbHNlIGlmIChraW5kID09PSA0IC8qIFNFVFRFUiAqLykgewogICAgICAgICAgICB2YWx1ZSA9IGRlc2Muc2V0OwogICAgICAgIH0KCiAgICAgICAgdmFyIG5ld1ZhbHVlLCBnZXQsIHNldDsKCiAgICAgICAgaWYgKHR5cGVvZiBkZWNzID09PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgICAgIG5ld1ZhbHVlID0gbWVtYmVyRGVjKAogICAgICAgICAgICAgICAgZGVjcywKICAgICAgICAgICAgICAgIG5hbWUsCiAgICAgICAgICAgICAgICBkZXNjLAogICAgICAgICAgICAgICAgaW5pdGlhbGl6ZXJzLAogICAgICAgICAgICAgICAga2luZCwKICAgICAgICAgICAgICAgIGlzU3RhdGljLAogICAgICAgICAgICAgICAgaXNQcml2YXRlLAogICAgICAgICAgICAgICAgbWV0YWRhdGEsCiAgICAgICAgICAgICAgICB2YWx1ZQogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKG5ld1ZhbHVlICE9PSB2b2lkIDApIHsKICAgICAgICAgICAgICAgIGFzc2VydFZhbGlkUmV0dXJuVmFsdWUoa2luZCwgbmV3VmFsdWUpOwoKICAgICAgICAgICAgICAgIGlmIChraW5kID09PSAwIC8qIEZJRUxEICovKSB7CiAgICAgICAgICAgICAgICAgICAgaW5pdCA9IG5ld1ZhbHVlOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChraW5kID09PSAxIC8qIEFDQ0VTU09SICovKSB7CiAgICAgICAgICAgICAgICAgICAgaW5pdCA9IG5ld1ZhbHVlLmluaXQ7CiAgICAgICAgICAgICAgICAgICAgZ2V0ID0gbmV3VmFsdWUuZ2V0IHx8IHZhbHVlLmdldDsKICAgICAgICAgICAgICAgICAgICBzZXQgPSBuZXdWYWx1ZS5zZXQgfHwgdmFsdWUuc2V0OwoKICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHsgZ2V0OiBnZXQsIHNldDogc2V0IH07CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3VmFsdWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmb3IgKHZhciBpID0gZGVjcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgewogICAgICAgICAgICAgICAgdmFyIGRlYyA9IGRlY3NbaV07CgogICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBtZW1iZXJEZWMoCiAgICAgICAgICAgICAgICAgICAgZGVjLAogICAgICAgICAgICAgICAgICAgIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgZGVzYywKICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXplcnMsCiAgICAgICAgICAgICAgICAgICAga2luZCwKICAgICAgICAgICAgICAgICAgICBpc1N0YXRpYywKICAgICAgICAgICAgICAgICAgICBpc1ByaXZhdGUsCiAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEsCiAgICAgICAgICAgICAgICAgICAgdmFsdWUKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKG5ld1ZhbHVlICE9PSB2b2lkIDApIHsKICAgICAgICAgICAgICAgICAgICBhc3NlcnRWYWxpZFJldHVyblZhbHVlKGtpbmQsIG5ld1ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbmV3SW5pdDsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGtpbmQgPT09IDAgLyogRklFTEQgKi8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV3SW5pdCA9IG5ld1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2luZCA9PT0gMSAvKiBBQ0NFU1NPUiAqLykgewogICAgICAgICAgICAgICAgICAgICAgICBuZXdJbml0ID0gbmV3VmFsdWUuaW5pdDsKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0ID0gbmV3VmFsdWUuZ2V0IHx8IHZhbHVlLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgc2V0ID0gbmV3VmFsdWUuc2V0IHx8IHZhbHVlLnNldDsKCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0geyBnZXQ6IGdldCwgc2V0OiBzZXQgfTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ld1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0luaXQgIT09IHZvaWQgMCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5pdCA9PT0gdm9pZCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0ID0gbmV3SW5pdDsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaW5pdCA9PT0gImZ1bmN0aW9uIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdCA9IFtpbml0LCBuZXdJbml0XTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXQucHVzaChuZXdJbml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGtpbmQgPT09IDAgLyogRklFTEQgKi8gfHwga2luZCA9PT0gMSAvKiBBQ0NFU1NPUiAqLykgewogICAgICAgICAgICBpZiAoaW5pdCA9PT0gdm9pZCAwKSB7CiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgaW5pdGlhbGl6ZXIgd2FzIHZvaWQgMCwgc3ViIGluIGEgZHVtbXkgaW5pdGlhbGl6ZXIKICAgICAgICAgICAgICAgIGluaXQgPSBmdW5jdGlvbiAoaW5zdGFuY2UsIGluaXQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5pdDsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGluaXQgIT09ICJmdW5jdGlvbiIpIHsKICAgICAgICAgICAgICAgIHZhciBvd25Jbml0aWFsaXplcnMgPSBpbml0OwoKICAgICAgICAgICAgICAgIGluaXQgPSBmdW5jdGlvbiAoaW5zdGFuY2UsIGluaXQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBpbml0OwoKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG93bkluaXRpYWxpemVycy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG93bkluaXRpYWxpemVyc1tpXS5jYWxsKGluc3RhbmNlLCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdmFyIG9yaWdpbmFsSW5pdGlhbGl6ZXIgPSBpbml0OwoKICAgICAgICAgICAgICAgIGluaXQgPSBmdW5jdGlvbiAoaW5zdGFuY2UsIGluaXQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxJbml0aWFsaXplci5jYWxsKGluc3RhbmNlLCBpbml0KTsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldC5wdXNoKGluaXQpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGtpbmQgIT09IDAgLyogRklFTEQgKi8pIHsKICAgICAgICAgICAgaWYgKGtpbmQgPT09IDEgLyogQUNDRVNTT1IgKi8pIHsKICAgICAgICAgICAgICAgIGRlc2MuZ2V0ID0gdmFsdWUuZ2V0OwogICAgICAgICAgICAgICAgZGVzYy5zZXQgPSB2YWx1ZS5zZXQ7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoa2luZCA9PT0gMiAvKiBNRVRIT0QgKi8pIHsKICAgICAgICAgICAgICAgIGRlc2MudmFsdWUgPSB2YWx1ZTsKICAgICAgICAgICAgfSBlbHNlIGlmIChraW5kID09PSAzIC8qIEdFVFRFUiAqLykgewogICAgICAgICAgICAgICAgZGVzYy5nZXQgPSB2YWx1ZTsKICAgICAgICAgICAgfSBlbHNlIGlmIChraW5kID09PSA0IC8qIFNFVFRFUiAqLykgewogICAgICAgICAgICAgICAgZGVzYy5zZXQgPSB2YWx1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGlzUHJpdmF0ZSkgewogICAgICAgICAgICAgICAgaWYgKGtpbmQgPT09IDEgLyogQUNDRVNTT1IgKi8pIHsKICAgICAgICAgICAgICAgICAgICByZXQucHVzaChmdW5jdGlvbiAoaW5zdGFuY2UsIGFyZ3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmdldC5jYWxsKGluc3RhbmNlLCBhcmdzKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICByZXQucHVzaChmdW5jdGlvbiAoaW5zdGFuY2UsIGFyZ3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnNldC5jYWxsKGluc3RhbmNlLCBhcmdzKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2luZCA9PT0gMiAvKiBNRVRIT0QgKi8pIHsKICAgICAgICAgICAgICAgICAgICByZXQucHVzaCh2YWx1ZSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJldC5wdXNoKGZ1bmN0aW9uIChpbnN0YW5jZSwgYXJncykgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUuY2FsbChpbnN0YW5jZSwgYXJncyk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYmFzZSwgbmFtZSwgZGVzYyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gYXBwbHlNZW1iZXJEZWNzKENsYXNzLCBkZWNJbmZvcywgbWV0YWRhdGEpIHsKICAgICAgICB2YXIgcmV0ID0gW107CiAgICAgICAgdmFyIHByb3RvSW5pdGlhbGl6ZXJzOwogICAgICAgIHZhciBzdGF0aWNJbml0aWFsaXplcnM7CgogICAgICAgIHZhciBleGlzdGluZ1Byb3RvTm9uRmllbGRzID0gbmV3IE1hcCgpOwogICAgICAgIHZhciBleGlzdGluZ1N0YXRpY05vbkZpZWxkcyA9IG5ldyBNYXAoKTsKCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWNJbmZvcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB2YXIgZGVjSW5mbyA9IGRlY0luZm9zW2ldOwoKICAgICAgICAgICAgLy8gc2tpcCBjb21wdXRlZCBwcm9wZXJ0eSBuYW1lcwogICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGVjSW5mbykpIGNvbnRpbnVlOwoKICAgICAgICAgICAgdmFyIGtpbmQgPSBkZWNJbmZvWzFdOwogICAgICAgICAgICB2YXIgbmFtZSA9IGRlY0luZm9bMl07CiAgICAgICAgICAgIHZhciBpc1ByaXZhdGUgPSBkZWNJbmZvLmxlbmd0aCA+IDM7CgogICAgICAgICAgICB2YXIgaXNTdGF0aWMgPSBraW5kID49IDU7IC8qIFNUQVRJQyAqLwogICAgICAgICAgICB2YXIgYmFzZTsKICAgICAgICAgICAgdmFyIGluaXRpYWxpemVyczsKCiAgICAgICAgICAgIGlmIChpc1N0YXRpYykgewogICAgICAgICAgICAgICAgYmFzZSA9IENsYXNzOwogICAgICAgICAgICAgICAga2luZCA9IGtpbmQgLSA1IC8qIFNUQVRJQyAqLzsKICAgICAgICAgICAgICAgIC8vIGluaXRpYWxpemUgc3RhdGljSW5pdGlhbGl6ZXJzIHdoZW4gd2Ugc2VlIGEgbm9uLWZpZWxkIHN0YXRpYyBtZW1iZXIKICAgICAgICAgICAgICAgIHN0YXRpY0luaXRpYWxpemVycyA9IHN0YXRpY0luaXRpYWxpemVycyB8fCBbXTsKICAgICAgICAgICAgICAgIGluaXRpYWxpemVycyA9IHN0YXRpY0luaXRpYWxpemVyczsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGJhc2UgPSBDbGFzcy5wcm90b3R5cGU7CiAgICAgICAgICAgICAgICAvLyBpbml0aWFsaXplIHByb3RvSW5pdGlhbGl6ZXJzIHdoZW4gd2Ugc2VlIGEgbm9uLWZpZWxkIG1lbWJlcgogICAgICAgICAgICAgICAgcHJvdG9Jbml0aWFsaXplcnMgPSBwcm90b0luaXRpYWxpemVycyB8fCBbXTsKICAgICAgICAgICAgICAgIGluaXRpYWxpemVycyA9IHByb3RvSW5pdGlhbGl6ZXJzOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoa2luZCAhPT0gMCAvKiBGSUVMRCAqLyAmJiAhaXNQcml2YXRlKSB7CiAgICAgICAgICAgICAgICB2YXIgZXhpc3RpbmdOb25GaWVsZHMgPSBpc1N0YXRpYwogICAgICAgICAgICAgICAgICAgID8gZXhpc3RpbmdTdGF0aWNOb25GaWVsZHMKICAgICAgICAgICAgICAgICAgICA6IGV4aXN0aW5nUHJvdG9Ob25GaWVsZHM7CgogICAgICAgICAgICAgICAgdmFyIGV4aXN0aW5nS2luZCA9IGV4aXN0aW5nTm9uRmllbGRzLmdldChuYW1lKSB8fCAwOwoKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0tpbmQgPT09IHRydWUgfHwKICAgICAgICAgICAgICAgICAgICAoZXhpc3RpbmdLaW5kID09PSAzIC8qIEdFVFRFUiAqLyAmJiBraW5kICE9PSA0KSAvKiBTRVRURVIgKi8gfHwKICAgICAgICAgICAgICAgICAgICAoZXhpc3RpbmdLaW5kID09PSA0IC8qIFNFVFRFUiAqLyAmJiBraW5kICE9PSAzKSAvKiBHRVRURVIgKi8KICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgIkF0dGVtcHRlZCB0byBkZWNvcmF0ZSBhIHB1YmxpYyBtZXRob2QvYWNjZXNzb3IgdGhhdCBoYXMgdGhlIHNhbWUgbmFtZSBhcyBhIHByZXZpb3VzbHkgZGVjb3JhdGVkIHB1YmxpYyBtZXRob2QvYWNjZXNzb3IuIFRoaXMgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgYnkgdGhlIGRlY29yYXRvcnMgcGx1Z2luLiBQcm9wZXJ0eSBuYW1lIHdhczogIiArCiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICghZXhpc3RpbmdLaW5kICYmIGtpbmQgPiAyIC8qIE1FVEhPRCAqLykgewogICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nTm9uRmllbGRzLnNldChuYW1lLCBraW5kKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdOb25GaWVsZHMuc2V0KG5hbWUsIHRydWUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBhcHBseU1lbWJlckRlYygKICAgICAgICAgICAgICAgIHJldCwKICAgICAgICAgICAgICAgIGJhc2UsCiAgICAgICAgICAgICAgICBkZWNJbmZvLAogICAgICAgICAgICAgICAgbmFtZSwKICAgICAgICAgICAgICAgIGtpbmQsCiAgICAgICAgICAgICAgICBpc1N0YXRpYywKICAgICAgICAgICAgICAgIGlzUHJpdmF0ZSwKICAgICAgICAgICAgICAgIGluaXRpYWxpemVycywKICAgICAgICAgICAgICAgIG1ldGFkYXRhCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBwdXNoSW5pdGlhbGl6ZXJzKHJldCwgcHJvdG9Jbml0aWFsaXplcnMpOwogICAgICAgIHB1c2hJbml0aWFsaXplcnMocmV0LCBzdGF0aWNJbml0aWFsaXplcnMpOwogICAgICAgIHJldHVybiByZXQ7CiAgICB9CgogICAgZnVuY3Rpb24gcHVzaEluaXRpYWxpemVycyhyZXQsIGluaXRpYWxpemVycykgewogICAgICAgIGlmIChpbml0aWFsaXplcnMpIHsKICAgICAgICAgICAgcmV0LnB1c2goZnVuY3Rpb24gKGluc3RhbmNlKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRpYWxpemVycy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemVyc1tpXS5jYWxsKGluc3RhbmNlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGFwcGx5Q2xhc3NEZWNzKHRhcmdldENsYXNzLCBjbGFzc0RlY3MsIG1ldGFkYXRhKSB7CiAgICAgICAgaWYgKGNsYXNzRGVjcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIHZhciBpbml0aWFsaXplcnMgPSBbXTsKICAgICAgICAgICAgdmFyIG5ld0NsYXNzID0gdGFyZ2V0Q2xhc3M7CiAgICAgICAgICAgIHZhciBuYW1lID0gdGFyZ2V0Q2xhc3MubmFtZTsKCiAgICAgICAgICAgIGZvciAodmFyIGkgPSBjbGFzc0RlY3MubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICAgICAgICAgIHZhciBkZWNvcmF0b3JGaW5pc2hlZFJlZiA9IHsgdjogZmFsc2UgfTsKCiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIHZhciBuZXh0TmV3Q2xhc3MgPSBjbGFzc0RlY3NbaV0obmV3Q2xhc3MsIHsKICAgICAgICAgICAgICAgICAgICAgICAga2luZDogImNsYXNzIiwKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgYWRkSW5pdGlhbGl6ZXI6IGNyZWF0ZUFkZEluaXRpYWxpemVyTWV0aG9kKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb3JhdG9yRmluaXNoZWRSZWYKICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgICAgIGRlY29yYXRvckZpbmlzaGVkUmVmLnYgPSB0cnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChuZXh0TmV3Q2xhc3MgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgIGFzc2VydFZhbGlkUmV0dXJuVmFsdWUoMTAgLyogQ0xBU1MgKi8sIG5leHROZXdDbGFzcyk7CiAgICAgICAgICAgICAgICAgICAgbmV3Q2xhc3MgPSBuZXh0TmV3Q2xhc3M7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICAgICBkZWZpbmVNZXRhZGF0YShuZXdDbGFzcywgbWV0YWRhdGEpLAogICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5pdGlhbGl6ZXJzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemVyc1tpXS5jYWxsKG5ld0NsYXNzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdOwogICAgICAgIH0KICAgICAgICAvLyBUaGUgdHJhbnNmb3JtZXIgd2lsbCBub3QgZW1pdCBhc3NpZ25tZW50IHdoZW4gdGhlcmUgYXJlIG5vIGNsYXNzIGRlY29yYXRvcnMsCiAgICAgICAgLy8gc28gd2UgZG9uJ3QgaGF2ZSB0byByZXR1cm4gYW4gZW1wdHkgYXJyYXkgaGVyZS4KICAgIH0KCiAgICBmdW5jdGlvbiBkZWZpbmVNZXRhZGF0YShDbGFzcywgbWV0YWRhdGEpIHsKICAgICAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KAogICAgICAgICAgICBDbGFzcywKICAgICAgICAgICAgU3ltYm9sLm1ldGFkYXRhIHx8IFN5bWJvbC5mb3IoIlN5bWJvbC5tZXRhZGF0YSIpLAogICAgICAgICAgICB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IG1ldGFkYXRhIH0KICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgQmFzaWMgdXNhZ2U6CiAgCiAgICBhcHBseURlY3MoCiAgICAgIENsYXNzLAogICAgICBbCiAgICAgICAgLy8gbWVtYmVyIGRlY29yYXRvcnMKICAgICAgICBbCiAgICAgICAgICBkZWMsICAgICAgICAgICAgICAgIC8vIGRlYyBvciBhcnJheSBvZiBkZWNzCiAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8vIGtpbmQgb2YgdmFsdWUgYmVpbmcgZGVjb3JhdGVkCiAgICAgICAgICAncHJvcCcsICAgICAgICAgICAgIC8vIG5hbWUgb2YgcHVibGljIHByb3Agb24gY2xhc3MgY29udGFpbmluZyB0aGUgdmFsdWUgYmVpbmcgZGVjb3JhdGVkLAogICAgICAgICAgJyNwJywgICAgICAgICAgICAgICAvLyB0aGUgbmFtZSBvZiB0aGUgcHJpdmF0ZSBwcm9wZXJ0eSAoaWYgaXMgcHJpdmF0ZSwgdm9pZCAwIG90aGVyd2lzZSksCiAgICAgICAgXQogICAgICBdLAogICAgICBbCiAgICAgICAgLy8gY2xhc3MgZGVjb3JhdG9ycwogICAgICAgIGRlYzEsIGRlYzIKICAgICAgXQogICAgKQogICAgYGBgCiAgCiAgICBGdWxseSB0cmFuc3BpbGVkIGV4YW1wbGU6CiAgCiAgICBgYGBqcwogICAgQGRlYwogICAgY2xhc3MgQ2xhc3MgewogICAgICBAZGVjCiAgICAgIGEgPSAxMjM7CiAgCiAgICAgIEBkZWMKICAgICAgI2EgPSAxMjM7CiAgCiAgICAgIEBkZWMKICAgICAgQGRlYzIKICAgICAgYWNjZXNzb3IgYiA9IDEyMzsKICAKICAgICAgQGRlYwogICAgICBhY2Nlc3NvciAjYiA9IDEyMzsKICAKICAgICAgQGRlYwogICAgICBjKCkgeyBjb25zb2xlLmxvZygnYycpOyB9CiAgCiAgICAgIEBkZWMKICAgICAgI2MoKSB7IGNvbnNvbGUubG9nKCdwcml2QycpOyB9CiAgCiAgICAgIEBkZWMKICAgICAgZ2V0IGQoKSB7IGNvbnNvbGUubG9nKCdkJyk7IH0KICAKICAgICAgQGRlYwogICAgICBnZXQgI2QoKSB7IGNvbnNvbGUubG9nKCdwcml2RCcpOyB9CiAgCiAgICAgIEBkZWMKICAgICAgc2V0IGUodikgeyBjb25zb2xlLmxvZygnZScpOyB9CiAgCiAgICAgIEBkZWMKICAgICAgc2V0ICNlKHYpIHsgY29uc29sZS5sb2coJ3ByaXZFJyk7IH0KICAgIH0KICAKICAKICAgIC8vIGJlY29tZXMKICAgIGxldCBpbml0aWFsaXplSW5zdGFuY2U7CiAgICBsZXQgaW5pdGlhbGl6ZUNsYXNzOwogIAogICAgbGV0IGluaXRBOwogICAgbGV0IGluaXRQcml2QTsKICAKICAgIGxldCBpbml0QjsKICAgIGxldCBpbml0UHJpdkIsIGdldFByaXZCLCBzZXRQcml2QjsKICAKICAgIGxldCBwcml2QzsKICAgIGxldCBwcml2RDsKICAgIGxldCBwcml2RTsKICAKICAgIGxldCBDbGFzczsKICAgIGNsYXNzIF9DbGFzcyB7CiAgICAgIHN0YXRpYyB7CiAgICAgICAgbGV0IHJldCA9IGFwcGx5RGVjcygKICAgICAgICAgIHRoaXMsCiAgICAgICAgICBbCiAgICAgICAgICAgIFtkZWMsIDAsICdhJ10sCiAgICAgICAgICAgIFtkZWMsIDAsICdhJywgKGkpID0+IGkuI2EsIChpLCB2KSA9PiBpLiNhID0gdl0sCiAgICAgICAgICAgIFtbZGVjLCBkZWMyXSwgMSwgJ2InXSwKICAgICAgICAgICAgW2RlYywgMSwgJ2InLCAoaSkgPT4gaS4jcHJpdkJEYXRhLCAoaSwgdikgPT4gaS4jcHJpdkJEYXRhID0gdl0sCiAgICAgICAgICAgIFtkZWMsIDIsICdjJ10sCiAgICAgICAgICAgIFtkZWMsIDIsICdjJywgKCkgPT4gY29uc29sZS5sb2coJ3ByaXZDJyldLAogICAgICAgICAgICBbZGVjLCAzLCAnZCddLAogICAgICAgICAgICBbZGVjLCAzLCAnZCcsICgpID0+IGNvbnNvbGUubG9nKCdwcml2RCcpXSwKICAgICAgICAgICAgW2RlYywgNCwgJ2UnXSwKICAgICAgICAgICAgW2RlYywgNCwgJ2UnLCAoKSA9PiBjb25zb2xlLmxvZygncHJpdkUnKV0sCiAgICAgICAgICBdLAogICAgICAgICAgWwogICAgICAgICAgICBkZWMKICAgICAgICAgIF0KICAgICAgICApCiAgCiAgICAgICAgaW5pdEEgPSByZXRbMF07CiAgCiAgICAgICAgaW5pdFByaXZBID0gcmV0WzFdOwogIAogICAgICAgIGluaXRCID0gcmV0WzJdOwogIAogICAgICAgIGluaXRQcml2QiA9IHJldFszXTsKICAgICAgICBnZXRQcml2QiA9IHJldFs0XTsKICAgICAgICBzZXRQcml2QiA9IHJldFs1XTsKICAKICAgICAgICBwcml2QyA9IHJldFs2XTsKICAKICAgICAgICBwcml2RCA9IHJldFs3XTsKICAKICAgICAgICBwcml2RSA9IHJldFs4XTsKICAKICAgICAgICBpbml0aWFsaXplSW5zdGFuY2UgPSByZXRbOV07CiAgCiAgICAgICAgQ2xhc3MgPSByZXRbMTBdCiAgCiAgICAgICAgaW5pdGlhbGl6ZUNsYXNzID0gcmV0WzExXTsKICAgICAgfQogIAogICAgICBhID0gKGluaXRpYWxpemVJbnN0YW5jZSh0aGlzKSwgaW5pdEEodGhpcywgMTIzKSk7CiAgCiAgICAgICNhID0gaW5pdFByaXZBKHRoaXMsIDEyMyk7CiAgCiAgICAgICNiRGF0YSA9IGluaXRCKHRoaXMsIDEyMyk7CiAgICAgIGdldCBiKCkgeyByZXR1cm4gdGhpcy4jYkRhdGEgfQogICAgICBzZXQgYih2KSB7IHRoaXMuI2JEYXRhID0gdiB9CiAgCiAgICAgICNwcml2QkRhdGEgPSBpbml0UHJpdkIodGhpcywgMTIzKTsKICAgICAgZ2V0ICNiKCkgeyByZXR1cm4gZ2V0UHJpdkIodGhpcyk7IH0KICAgICAgc2V0ICNiKHYpIHsgc2V0UHJpdkIodGhpcywgdik7IH0KICAKICAgICAgYygpIHsgY29uc29sZS5sb2coJ2MnKTsgfQogIAogICAgICAjYyguLi5hcmdzKSB7IHJldHVybiBwcml2Qyh0aGlzLCAuLi5hcmdzKSB9CiAgCiAgICAgIGdldCBkKCkgeyBjb25zb2xlLmxvZygnZCcpOyB9CiAgCiAgICAgIGdldCAjZCgpIHsgcmV0dXJuIHByaXZEKHRoaXMpOyB9CiAgCiAgICAgIHNldCBlKHYpIHsgY29uc29sZS5sb2coJ2UnKTsgfQogIAogICAgICBzZXQgI2UodikgeyBwcml2RSh0aGlzLCB2KTsgfQogICAgfQogIAogICAgaW5pdGlhbGl6ZUNsYXNzKENsYXNzKTsKICAgKi8KCiAgICByZXR1cm4gZnVuY3Rpb24gYXBwbHlEZWNzMjIwM1IodGFyZ2V0Q2xhc3MsIG1lbWJlckRlY3MsIGNsYXNzRGVjcywgcGFyZW50Q2xhc3MpIHsKICAgICAgICBpZiAocGFyZW50Q2xhc3MgIT09IHZvaWQgMCkgewogICAgICAgICAgICB2YXIgcGFyZW50TWV0YWRhdGEgPQogICAgICAgICAgICAgICAgcGFyZW50Q2xhc3NbU3ltYm9sLm1ldGFkYXRhIHx8IFN5bWJvbC5mb3IoIlN5bWJvbC5tZXRhZGF0YSIpXTsKICAgICAgICB9CiAgICAgICAgdmFyIG1ldGFkYXRhID0gT2JqZWN0LmNyZWF0ZSgKICAgICAgICAgICAgcGFyZW50TWV0YWRhdGEgPT09IHZvaWQgMCA/IG51bGwgOiBwYXJlbnRNZXRhZGF0YQogICAgICAgICk7CiAgICAgICAgdmFyIGUgPSBhcHBseU1lbWJlckRlY3ModGFyZ2V0Q2xhc3MsIG1lbWJlckRlY3MsIG1ldGFkYXRhKTsKICAgICAgICBpZiAoIWNsYXNzRGVjcy5sZW5ndGgpIGRlZmluZU1ldGFkYXRhKHRhcmdldENsYXNzLCBtZXRhZGF0YSk7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgZTogZSwKICAgICAgICAgICAgLy8gTGF6aWx5IGFwcGx5IGNsYXNzIGRlY29yYXRpb25zIHNvIHRoYXQgbWVtYmVyIGluaXQgbG9jYWxzIGNhbiBiZSBwcm9wZXJseSBib3VuZC4KICAgICAgICAgICAgZ2V0IGMoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYXBwbHlDbGFzc0RlY3ModGFyZ2V0Q2xhc3MsIGNsYXNzRGVjcywgbWV0YWRhdGEpOwogICAgICAgICAgICB9LAogICAgICAgIH07CiAgICB9Owp9CgpmdW5jdGlvbiBfYXBwbHlfZGVjc18yMjAzX3IodGFyZ2V0Q2xhc3MsIG1lbWJlckRlY3MsIGNsYXNzRGVjcywgcGFyZW50Q2xhc3MpIHsKICAgIHJldHVybiAoX2FwcGx5X2RlY3NfMjIwM19yID0gYXBwbHlEZWNzMjIwM1JGYWN0b3J5KCkpKAogICAgICAgIHRhcmdldENsYXNzLAogICAgICAgIG1lbWJlckRlY3MsCiAgICAgICAgY2xhc3NEZWNzLAogICAgICAgIHBhcmVudENsYXNzCiAgICApOwp9CmZ1bmN0aW9uIF9pZGVudGl0eSh4KSB7IHJldHVybiB4OyB9Ci8qIEBtaW5WZXJzaW9uIDcuMjIuMCAqLwpmdW5jdGlvbiBkaXNwb3NlX1N1cHByZXNzZWRFcnJvcihzdXBwcmVzc2VkLCBlcnJvcikgewogICAgaWYgKHR5cGVvZiBTdXBwcmVzc2VkRXJyb3IgIT09ICJ1bmRlZmluZWQiKSB7CiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmCiAgICAgICAgZGlzcG9zZV9TdXBwcmVzc2VkRXJyb3IgPSBTdXBwcmVzc2VkRXJyb3I7CiAgICB9IGVsc2UgewogICAgICAgIGRpc3Bvc2VfU3VwcHJlc3NlZEVycm9yID0gZnVuY3Rpb24gU3VwcHJlc3NlZEVycm9yKHN1cHByZXNzZWQsIGVycm9yKSB7CiAgICAgICAgICAgIHRoaXMuc3VwcHJlc3NlZCA9IHN1cHByZXNzZWQ7CiAgICAgICAgICAgIHRoaXMuZXJyb3IgPSBlcnJvcjsKICAgICAgICAgICAgdGhpcy5zdGFjayA9IG5ldyBFcnJvcigpLnN0YWNrOwogICAgICAgIH07CiAgICAgICAgZGlzcG9zZV9TdXBwcmVzc2VkRXJyb3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUsIHsKICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgIHZhbHVlOiBkaXNwb3NlX1N1cHByZXNzZWRFcnJvciwKICAgICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLAogICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAogICAgICAgICAgICB9LAogICAgICAgIH0pOwogICAgfQogICAgcmV0dXJuIG5ldyBkaXNwb3NlX1N1cHByZXNzZWRFcnJvcihzdXBwcmVzc2VkLCBlcnJvcik7Cn0KCmZ1bmN0aW9uIF9kaXNwb3NlKHN0YWNrLCBlcnJvciwgaGFzRXJyb3IpIHsKICAgIGZ1bmN0aW9uIG5leHQoKSB7CiAgICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHZhciByID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgICB2YXIgcCA9IHIuZC5jYWxsKHIudik7CiAgICAgICAgICAgICAgICBpZiAoci5hKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHApLnRoZW4obmV4dCwgZXJyKTsKICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGVycihlKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoaGFzRXJyb3IpIHRocm93IGVycm9yOwogICAgfQoKICAgIGZ1bmN0aW9uIGVycihlKSB7CiAgICAgICAgZXJyb3IgPSBoYXNFcnJvciA/IG5ldyBkaXNwb3NlX1N1cHByZXNzZWRFcnJvcihlLCBlcnJvcikgOiBlOwogICAgICAgIGhhc0Vycm9yID0gdHJ1ZTsKCiAgICAgICAgcmV0dXJuIG5leHQoKTsKICAgIH0KCiAgICByZXR1cm4gbmV4dCgpOwp9ZnVuY3Rpb24gX3VzaW5nKHN0YWNrLCB2YWx1ZSwgaXNBd2FpdCkgewogICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB2b2lkIDApIHJldHVybiB2YWx1ZTsKICAgIGlmIChPYmplY3QodmFsdWUpICE9PSB2YWx1ZSkgewogICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoInVzaW5nIGRlY2xhcmF0aW9ucyBjYW4gb25seSBiZSB1c2VkIHdpdGggb2JqZWN0cywgZnVuY3Rpb25zLCBudWxsLCBvciB1bmRlZmluZWQuIik7CiAgICB9CiAgICAvLyBjb3JlLWpzLXB1cmUgdXNlcyBTeW1ib2wuZm9yIGZvciBwb2x5ZmlsbGluZyB3ZWxsLWtub3duIHN5bWJvbHMKICAgIGlmIChpc0F3YWl0KSB7CiAgICAgICAgdmFyIGRpc3Bvc2UgPQogICAgICAgICAgICB2YWx1ZVtTeW1ib2wuYXN5bmNEaXNwb3NlIHx8IFN5bWJvbC5mb3IoIlN5bWJvbC5hc3luY0Rpc3Bvc2UiKV07CiAgICB9CiAgICBpZiAoZGlzcG9zZSA9PT0gbnVsbCB8fCBkaXNwb3NlID09PSB2b2lkIDApIHsKICAgICAgICBkaXNwb3NlID0gdmFsdWVbU3ltYm9sLmRpc3Bvc2UgfHwgU3ltYm9sLmZvcigiU3ltYm9sLmRpc3Bvc2UiKV07CiAgICB9CiAgICBpZiAodHlwZW9mIGRpc3Bvc2UgIT09ICJmdW5jdGlvbiIpIHsKICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBQcm9wZXJ0eSBbU3ltYm9sLmRpc3Bvc2VdIGlzIG5vdCBhIGZ1bmN0aW9uLmApOwogICAgfQogICAgc3RhY2sucHVzaCh7IHY6IHZhbHVlLCBkOiBkaXNwb3NlLCBhOiBpc0F3YWl0IH0pOwogICAgcmV0dXJuIHZhbHVlOwp9ZnVuY3Rpb24gX3VzaW5nX2N0eCgpIHsKICAgIHZhciBfZGlzcG9zZVN1cHByZXNzZWRFcnJvciA9CiAgICAgICAgdHlwZW9mIFN1cHByZXNzZWRFcnJvciA9PT0gImZ1bmN0aW9uIgogICAgICAgICAgICA/IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZgogICAgICAgICAgICBTdXBwcmVzc2VkRXJyb3IKICAgICAgICAgICAgOiAoZnVuY3Rpb24gKGVycm9yLCBzdXBwcmVzc2VkKSB7CiAgICAgICAgICAgICAgICB2YXIgZXJyID0gbmV3IEVycm9yKCk7CiAgICAgICAgICAgICAgICBlcnIubmFtZSA9ICJTdXBwcmVzc2VkRXJyb3IiOwogICAgICAgICAgICAgICAgZXJyLnN1cHByZXNzZWQgPSBzdXBwcmVzc2VkOwogICAgICAgICAgICAgICAgZXJyLmVycm9yID0gZXJyb3I7CiAgICAgICAgICAgICAgICByZXR1cm4gZXJyOwogICAgICAgICAgICB9KSwKICAgICAgICBlbXB0eSA9IHt9LAogICAgICAgIHN0YWNrID0gW107CiAgICBmdW5jdGlvbiB1c2luZyhpc0F3YWl0LCB2YWx1ZSkgewogICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7CiAgICAgICAgICAgIGlmIChPYmplY3QodmFsdWUpICE9PSB2YWx1ZSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICAgICAidXNpbmcgZGVjbGFyYXRpb25zIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBvYmplY3RzLCBmdW5jdGlvbnMsIG51bGwsIG9yIHVuZGVmaW5lZC4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBjb3JlLWpzLXB1cmUgdXNlcyBTeW1ib2wuZm9yIGZvciBwb2x5ZmlsbGluZyB3ZWxsLWtub3duIHN5bWJvbHMKICAgICAgICAgICAgaWYgKGlzQXdhaXQpIHsKICAgICAgICAgICAgICAgIHZhciBkaXNwb3NlID0KICAgICAgICAgICAgICAgICAgICB2YWx1ZVtTeW1ib2wuYXN5bmNEaXNwb3NlIHx8IFN5bWJvbC5mb3IoIlN5bWJvbC5hc3luY0Rpc3Bvc2UiKV07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGRpc3Bvc2UgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgZGlzcG9zZSA9IHZhbHVlW1N5bWJvbC5kaXNwb3NlIHx8IFN5bWJvbC5mb3IoIlN5bWJvbC5kaXNwb3NlIildOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh0eXBlb2YgZGlzcG9zZSAhPT0gImZ1bmN0aW9uIikgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUHJvcGVydHkgW1N5bWJvbC5kaXNwb3NlXSBpcyBub3QgYSBmdW5jdGlvbi5gKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdGFjay5wdXNoKHsgdjogdmFsdWUsIGQ6IGRpc3Bvc2UsIGE6IGlzQXdhaXQgfSk7CiAgICAgICAgfSBlbHNlIGlmIChpc0F3YWl0KSB7CiAgICAgICAgICAgIC8vIHByb3ZpZGUgdGhlIG51bGxpc2ggYHZhbHVlYCBhcyBgZGAgZm9yIG1pbmlmaWNhdGlvbiBnYWluCiAgICAgICAgICAgIHN0YWNrLnB1c2goeyBkOiB2YWx1ZSwgYTogaXNBd2FpdCB9KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgfQogICAgcmV0dXJuIHsKICAgICAgICAvLyBlcnJvcgogICAgICAgIGU6IGVtcHR5LAogICAgICAgIC8vIHVzaW5nCiAgICAgICAgdTogdXNpbmcuYmluZChudWxsLCBmYWxzZSksCiAgICAgICAgLy8gYXdhaXQgdXNpbmcKICAgICAgICBhOiB1c2luZy5iaW5kKG51bGwsIHRydWUpLAogICAgICAgIC8vIGRpc3Bvc2UKICAgICAgICBkOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBlcnJvciA9IHRoaXMuZTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIG5leHQoKSB7CiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVzZS1iZWZvcmUtZGVmaW5lCiAgICAgICAgICAgICAgICB3aGlsZSAoKHJlc291cmNlID0gc3RhY2sucG9wKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcG9zYWxSZXN1bHQgPSByZXNvdXJjZS5kICYmIHJlc291cmNlLmQuY2FsbChyZXNvdXJjZS52KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc291cmNlLmEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZGlzcG9zYWxSZXN1bHQpLnRoZW4obmV4dCwgZXJyKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycihlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZXJyb3IgIT09IGVtcHR5KSB0aHJvdyBlcnJvcjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gZXJyKGUpIHsKICAgICAgICAgICAgICAgIGVycm9yID0gZXJyb3IgIT09IGVtcHR5ID8gbmV3IF9kaXNwb3NlU3VwcHJlc3NlZEVycm9yKGVycm9yLCBlKSA6IGU7CgogICAgICAgICAgICAgICAgcmV0dXJuIG5leHQoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIG5leHQoKTsKICAgICAgICB9LAogICAgfTsKfU1hcmtlciBwcm92aWRlZCB0byByZXNvbHZlciBzaG91bGQgbm90IGJlIHRoZSByb290IG1hcmsAAABuDigANwAAAAAPKAB4AAAAhwAAAAUAAACUCQAADAAAAAQAAACVCQAAlgkAAAQAAAAEAAAAlwkAAAAAAAABAAAAAQAAAK4CAACYCQAABAAAAAQAAABRBAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc3djX2VjbWFfdHJhbnNmb3Jtc19iYXNlLTE2LjAuMC9zcmMvcmVzb2x2ZXIvbW9kLnJzAA8oAHgAAADGBgAANgAAAJkJAAAMAAAABAAAAOcDAACaCQAAIAAAAAgAAABTBAAAmwkAAAQAAAAEAAAAzgMAAJwJAAAEAAAABAAAAGAEAAAAAAAAAQAAAAEAAACuAgAAAAAAAAEAAAABAAAAnQkAAJ4JAAAEAAAABAAAAJ8JAAAAAAAAAQAAAAEAAACgCQAAoQkAAAwAAAAEAAAAogkAAKMJAAAYAAAABAAAAKQJAAClCQAAEAAAAAgAAAAjCQAApgkAACAAAAAIAAAApwkAAFEdKABjAAAAMwAAAA8AAACoCQAABAAAAAQAAAAdBAAAqQkAAAwAAAAEAAAAXwQAAJkJAAAMAAAABAAAAOcDAAAAAAAAAQAAAAEAAACdCQAAAAAAAAEAAAABAAAArgIAAAAAAAAEAAAABAAAAKoJAAAECQAAGAAAAAgAAACrAgAAqwkAAAQAAAAEAAAArAkAAAAAAAAEAAAABAAAAK0JAAAAAAAAAQAAAAEAAACuCQAArwkAADAAAAAIAAAAsAkAALEJAAAEAAAABAAAAGAEAAAAAAAABAAAAAQAAACIBAAAsgkAAAwAAAAEAAAA5wMAALMJAAAMAAAABAAAALQJAAC1CQAABAAAAAQAAADOAwAAAAAAAAEAAAABAAAArgIAALYJAAAEAAAABAAAAFEEAAC3CQAABAAAAAQAAAA5BAAAAAAAAAQAAAAEAAAAuAkAALkJAAAMAAAABAAAALoJAAC7CQAAGAAAAAQAAACkCQAAvAkAAAQAAAAEAAAATQMAAAQJAAAYAAAACAAAAKsCAAC9CQAADAAAAAQAAAAoCQAAvgkAAAQAAAAEAAAAvwkAAAAAAAAEAAAABAAAAAsEAADACQAAIAAAAAgAAAAHAwAAAAAAAAQAAAAEAAAAwQkAAMIJAAAMAAAABAAAAMMJAAAAAAAABAAAAAQAAADECQAAAAAAAAQAAAAEAAAAGwQAAAAAAAAEAAAABAAAAMUJAABNYXJrUR0oAGMAAAA7AAAAIwAAAEVvZkRlY2xOb3RBbGxvd2VkVXNpbmdEZWNsTm90QWxsb3dlZFVzaW5nRGVjbE5vdEFsbG93ZWRGb3JGb3JJbkxvb3BVc2luZ0RlY2xOb3RFbmFibGVkSW52YWxpZE5hbWVJblVzaW5nRGVjbEluaXRSZXF1aXJlZEZvclVzaW5nRGVjbFByaXZhdGVOYW1lSW5JbnRlcmZhY2VJbnZhbGlkU3VwZXJDYWxsSW52YWxpZFN1cGVySW52YWxpZFN1cGVyUHJpdmF0ZU5hbWVJbnZhbGlkTmV3VGFyZ2V0SW52YWxpZEltcG9ydEFycm93Tm90QWxsb3dlZEV4cG9ydE5vdEFsbG93ZWRHZXR0ZXJTZXR0ZXJDYW5ub3RCZVJlYWRvbmx5R2V0dGVyU2V0dGVyQ2Fubm90QmVPcHRpb25hbEdldHRlclBhcmFtU2V0dGVyUGFyYW1Ub3BMZXZlbEF3YWl0SW5TY3JpcHRMZWdhY3lEZWNpbWFsTGVnYWN5T2N0YWxJbnZhbGlkSWRlbnRDaGFyRXhwZWN0ZWREaWdpdHJhZGl4U2V0dGVyUGFyYW1SZXF1aXJlZFJlc3RQYXRJblNldHRlclVudGVybWluYXRlZEJsb2NrQ29tbWVudFVudGVybWluYXRlZFN0ckxpdEV4cGVjdGVkVW5pY29kZUVzY2FwZUVzY2FwZUluUmVzZXJ2ZWRXb3Jkd29yZFVudGVybWluYXRlZFJlZ0V4cFVudGVybWluYXRlZFRwbElkZW50QWZ0ZXJOdW1VbmV4cGVjdGVkQ2hhcmNJbnZhbGlkU3RyRXNjYXBlSW52YWxpZFVuaWNvZGVFc2NhcGVCYWRDaGFyYWN0ZXJFc2NhcGVTZXF1ZW5jZWV4cGVjdGVkTnVtTGl0VGVybWluYXRlZFdpdGhFeHBMZWdhY3lDb21tZW50SW5Nb2R1bGVJbnZhbGlkSWRlbnRJblN0cmljdEludmFsaWRJZGVudEluQXN5bmNFdmFsQW5kQXJndW1lbnRzSW5TdHJpY3RBcmd1bWVudHNJbkNsYXNzRmllbGRJbGxlZ2FsTGFuZ3VhZ2VNb2RlRGlyZWN0aXZlVW5hcnlJbkV4cGxlZnRfc3Bhbkhhc2hMaW5lQnJlYWtJblRocm93TGluZUJyZWFrQmVmb3JlQXJyb3dVbmV4cGVjdGVkZ290VW5leHBlY3RlZFRva2VuV2l0aFN1Z2dlc3Rpb25zY2FuZGlkYXRlX2xpc3RSZXNlcnZlZFdvcmRJbkltcG9ydEFzc2lnblByb3BlcnR5RXhwZWN0ZWRFeHBlY3RlZFNlbWlGb3JFeHByU3RtdEF3YWl0U3RhclJlc2VydmVkV29yZEluT2JqU2hvcnRoYW5kT3JQYXROdWxsaXNoQ29hbGVzY2luZ1dpdGhMb2dpY2FsT3BNdWx0aXBsZURlZmF1bHRwcmV2aW91c0NvbW1hQWZ0ZXJSZXN0RWxlbWVudE5vbkxhc3RSZXN0UGFyYW1TcHJlYWRJblBhcmVuRXhwckVtcHR5UGFyZW5FeHBySW52YWxpZFBhdEludmFsaWRFeHByTm90U2ltcGxlQXNzaWduSW52YWxpZEFzc2lnblRhcmdldEV4cGVjdGVkSWRlbnRFeHBlY3RlZFNlbWlEdXBsaWNhdGVMYWJlbEFzeW5jR2VuZXJhdG9yTm9uVG9wTGV2ZWxJbXBvcnRFeHBvcnRJbXBvcnRFeHBvcnRJblNjcmlwdEltcG9ydE1ldGFJblNjcmlwdFBhdFZhcldpdGhvdXRJbml0V2l0aEluU3RyaWN0UmV0dXJuTm90QWxsb3dlZFRvb01hbnlWYXJJbkZvckluSGVhZFZhckluaXRpYWxpemVySW5Gb3JJbkhlYWRMYWJlbGxlZEdlbmVyYXRvck9yQXN5bmNMYWJlbGxlZEZ1bmN0aW9uSW5TdHJpY3RZaWVsZFBhcmFtSW5HZW5Bd2FpdFBhcmFtSW5Bc3luY0F3YWl0Rm9yU3RtdEF3YWl0SW5GdW5jdGlvblVudGVybWluYXRlZEpTWENvbnRlbnRzRW1wdHlKU1hBdHRySW52YWxpZEpTWFZhbHVlSlNYRXhwZWN0ZWRDbG9zaW5nVGFnRm9yTHRHdEpTWEV4cGVjdGVkQ2xvc2luZ1RhZ0ludmFsaWRMZWFkaW5nRGVjb3JhdG9yRGVjb3JhdG9yT25FeHBvcnRUc1JlcXVpcmVkQWZ0ZXJPcHRpb25hbFRzSW52YWxpZFBhcmFtUHJvcFBhdFNwYWNlQmV0d2Vlbkhhc2hBbmRJZGVudEFzeW5jQ29uc3RydWN0b3JQcm9wZXJ0eU5hbWVkQ29uc3RydWN0b3JQcml2YXRlQ29uc3RydWN0b3JQcml2YXRlTmFtZU1vZGlmaWVyQ29uc3RydWN0b3JBY2Nlc3NvclJlYWRPbmx5TWV0aG9kR2VuZXJhdG9yQ29uc3RydWN0b3JEdXBsaWNhdGVDb25zdHJ1Y3RvclRzQmluZGluZ1BhdENhbm5vdEJlT3B0aW9uYWxTdXBlckNhbGxPcHRpb25hbE9wdENoYWluQ2Fubm90Rm9sbG93Q29uc3RydWN0b3JDYWxsVGFnZ2VkVHBsSW5PcHRDaGFpblRyYWlsaW5nQ29tbWFJbnNpZGVJbXBvcnRFeHBvcnREZWZhdWx0V2l0aE91dEZyb21FeHBvcnRFeHBlY3RGcm9tRG90c1dpdGhvdXRJZGVudGlmaWVyTnVtZXJpY1NlcGFyYXRvcklzQWxsb3dlZE9ubHlCZXR3ZWVuVHdvRGlnaXRzSW1wb3J0QmluZGluZ0lzU3RyaW5nRXhwb3J0QmluZGluZ0lzU3RyaW5nQ29uc3REZWNsYXJhdGlvbnNSZXF1aXJlSW5pdGlhbGl6YXRpb25EdXBsaWNhdGVkUmVnRXhwRmxhZ3NVbmtub3duUmVnRXhwRmxhZ3NUUzEwMDNUUzEwMDVUUzEwMDlUUzEwMTRUUzEwMTVUUzEwMjlUUzEwMzBUUzEwMzFUUzEwMzhUUzEwNDJUUzEwNDdUUzEwNDhUUzEwNTZUUzEwODVUUzEwODlUUzEwOTJUUzEwOTZUUzEwOThUUzExMDBUUzExMDJUUzExMDVUUzExMDZUUzExMDdUUzExMDlUUzExMTBUUzExMTRUUzExMTVUUzExMTZUUzExMjNUUzExNDFUUzExNjJUUzExNjRUUzExNzFUUzExNzJUUzExNzNUUzExNzRUUzExNzVUUzExODNUUzExODRUUzExODVUUzEwOTNUUzExOTZUUzEyNDJUUzEyNDNUUzEyNDRUUzEyNDVUUzEyNjdUUzEyNzNUUzEyNzRUUzEyNzdUUzIyMDZUUzIyMDdUUzIzNjlUUzIzNzFUUzI0MDZUUzI0MTBUUzI0MTRUUzI0MjdUUzI0NTJUUzI0ODNUUzI0OTFUUzI0OTlUUzI3MDNUUzQxMTJUUzgwMzhUUzE4MDEwVFNUeXBlQW5ub3RhdGlvbkFmdGVyQXNzaWduVHNOb25OdWxsQXNzZXJ0aW9uTm90QWxsb3dlZFdpdGhMYWJlbGlubmVybm90ZVJlc2VydmVkVHlwZUFzc2VydGlvblJlc2VydmVkQXJyb3dUeXBlUGFyYW1pbmRleCBub3QgZm91bmQvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9pbmRleG1hcC0yLjguMC9zcmMvbWFwL2NvcmUucnNRHSgAYwAAAEsAAAAKAAAAUR0oAGMAAACIAgAALAAAAFEdKABjAAAAYAIAACIAAABRHSgAYwAAAFsBAAA4AAAAAAAAAAwAAAAEAAAAxgkAAMcJAAAAAAAADAAAAAQAAADABwAAwQcAAGFyZ3VtZW50c2Nhbm5vdCByZWN1cnNpdmVseSBhY3F1aXJlIG11dGV4AAAAJR4oACAAAAAAL3J1c3RjLzkwYjM1YTYyMzljM2Q4YmRhYmM1MzBhNmEwODE2ZjdmZjg5YTBhYWYvbGlicmFyeS9zdGQvc3JjL3N5cy9zeW5jL211dGV4L25vX3RocmVhZHMucnMAAABRHigAXAAAABQAAAAJAAAAAAAAAAQAAAAEAAAA0QIAAGNhbGxlZCBleHBlY3Qgb24gAAAA0B4oABEAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zd2NfZWNtYV9hc3QtMTIuMC4wL3NyYy9wYXQucnMA7B4oAGMAAAANAAAAFAAAAMgJAAAEAAAABAAAAB0EAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zd2NfZWNtYV90cmFuc2Zvcm1zX2Jhc2UtMTYuMC4wL3NyYy9maXhlci5ycwAAAHAfKABxAAAAxAAAAEAAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBkZXN0cnVjdHVyaW5nIHBhdHRlcm4gaW5zaWRlIFRzUGFyYW1ldGVyUHJvcGVydHkAAPQfKABaAAAAmDQoAHsAAABBAQAAIQAAAJg0KAB7AAAARAMAAA0AAAA0SigAKgAAAJg0KAB7AAAA0wMAAB0AAADJCQAAKAAAAAgAAADZBAAAmDQoAHsAAACuAwAAQAAAAJg0KAB7AAAAPwQAAFEAAACYNCgAewAAAEwEAABWAAAAX2NyZWF0ZVJlcXVpcmVfX3JlcXVpcmVleHBvcnRzY3JlYXRlUmVxdWlyZQCYNCgAewAAADkFAAAaAAAAmDQoAHsAAAA7BQAAGgAAAFN1cGVyRm5FeHByQmluRXhwck5ld0V4cHJjYWxsZWVhcmdzT3B0Q2FsbFNlcUV4cHJBcnJheUxpdENhbGxFeHByQ29uZEV4cHJUaGlzRXhwcgAAAMoJAAAMAAAABAAAAMsJAADMCQAABAAAAAQAAADNCQAAAAAAAAEAAAABAAAArgIAAM4JAAAEAAAABAAAAMoEAAC3SygABAAAAAU6KAAEAAAAiDMoAAYAAABJOigABAAAAPArKAAIAAAA5CsoAAwAAAAPKygACwAAAPgrKAALAAAAQXJyb3dFeHByQXdhaXRFeHByQ2xhc3NFeHByUGFyZW5FeHBydGFndHBsVW5hcnlFeHByWWllbGRFeHByZGVsZWdhdGVBc3NpZ25FeHByTWVtYmVyRXhwclRwbEVsZW1lbnR0YWlsY29va2VkVXBkYXRlRXhwcnByZWZpeFNpbXBsZUV4cHJPclNwcmVhZHNwcmVhZE1ldGFQcm9wRXhwck9wdENoYWluRXhwcmJhc2VTcHJlYWRQcm9wU3VwZXJQcm9wRXhwcgDPCQAABAAAAAQAAAAWBQAAVHNBc0V4cHLQCQAADAAAAAQAAAB3BQAAVHNGblR5cGVsaXR0eXBlX25hbWVlbGVtX3R5cGV0eXBlX3BhcmFtVHNFbnRpdHlOYW1lVHNFeHRlcm5hbE1vZHVsZVJlZgAA0QkAAAwAAAAEAAAAFAUAAAAAAAABAAAAAQAAANIJAAAAAAAAAQAAAAEAAACuAgAAAAAAAAQAAAAEAAAA0wkAALdLKAAEAAAA1TEoAAoAAADfMSgADQAAAAIyKAALAAAA4lUoAAgAAAADOygABQAAAGVsZW1fdHlwZXMAAAQJAAAYAAAACAAAAKsCAADUCQAABAAAAAQAAADVCQAAAAAAAAQAAAAEAAAA1gkAAGlzX2luaXNfb3V0Y29uc3RyYWludAAAALdLKAAEAAAAjTYoAAQAAADUIygABQAAANkjKAAGAAAAti0oAAgAAADfIygACgAAADRJKAAHAAAAVHNUeXBlUGFyYW1leHByX25hbWVUc1VuaW9uVHlwZXR5cGVzVHNFbnVtTWVtYmVycXVhbGlmaWVyYXR0cmlidXRlcwAAAAAAAQAAAAEAAADXCQAA2AkAADAAAAAIAAAA2QkAAG5hbWVfdHlwZQAAALdLKAAEAAAA4lUoAAgAAAD9IigACgAAAIgkKAAJAAAADDooAAgAAAA5NigACAAAAFRzVHBsTGl0VHlwZVByb3RlY3RlZFRydWVQbHVzTWludXNUc05vbk51bGxFeHByVHNDYWxsU2lnbmF0dXJlRGVjbFRzQ29uc3RydWN0U2lnbmF0dXJlRGVjbFRzUHJvcGVydHlTaWduYXR1cmVUc0dldHRlclNpZ25hdHVyZVRzU2V0dGVyU2lnbmF0dXJlVHNNZXRob2RTaWduYXR1cmVUc1R1cGxlRWxlbWVudHR5b3BUc0ludGVyZmFjZUJvZHlUc1NhdGlzZmllc0V4cHJwYXJhbV9uYW1lAADaCQAABAAAAAQAAAB+BQAAY2hlY2tfdHlwZWV4dGVuZHNfdHlwZXRydWVfdHlwZWZhbHNlX3R5cGVUc0NvbnN0cnVjdG9yVHlwZWNvbXB1dGVkVHNBbnlLZXl3b3JkVHNVbmtub3duS2V5d29yZFRzTnVtYmVyS2V5d29yZFRzT2JqZWN0S2V5d29yZFRzQm9vbGVhbktleXdvcmRUc0JpZ0ludEtleXdvcmRUc1N0cmluZ0tleXdvcmRUc1N5bWJvbEtleXdvcmRUc1ZvaWRLZXl3b3JkVHNVbmRlZmluZWRLZXl3b3JkVHNOdWxsS2V5d29yZFRzTmV2ZXJLZXl3b3JkVHNJbnRyaW5zaWNLZXl3b3JkAAAAAAAAAAQAAAAEAAAAgAUAALdLKAAEAAAArDYoAAMAAADqJSgACAAAAAw6KAAIAAAAiDMoAAYAAAA5NigACAAAAA8rKAALAAAAVHNFeHByV2l0aFR5cGVBcmdzVHNJbnRlcnNlY3Rpb25UeXBlVHNJbXBvcnRDYWxsT3B0aW9uc29ial90eXBlaW5kZXhfdHlwZQAAALdLKAAEAAAA4lUoAAgAAACsNigAAwAAAOolKAAIAAAADDooAAgAAAA5NigACAAAAFRzTmFtZXNwYWNlRXhwb3J0RGVjbE9ubHkgYW1iaWVudCBtb2R1bGVzIGNhbiB1c2UgcXVvdGVkIG5hbWVzLgCYNCgAewAAAOUFAAAOAAAAQm9vbFJlZ2V4SlNYVGV4dGV4cGZsYWdzTnVtYmVySlNYQXR0ckpTWEVtcHR5RXhwckpTWEV4cHJDb250YWluZXJKU1hTcHJlYWRDaGlsZFNwcmVhZEVsZW1lbnRKU1hDbG9zaW5nRWxlbWVudG5zSlNYQ2xvc2luZ0ZyYWdtZW50SlNYT3BlbmluZ0ZyYWdtZW50UGFyYW1wYXRBc3NpZ25Qcm9wR2V0dGVyUHJvcE1ldGhvZFByb3BTZXR0ZXJQcm9wdGhpc19wYXJhbUtleVZhbHVlUHJvcENvbXB1dGVkUHJvcE5hbWVUc1BhcmFtUHJvcG5vdCBpbXBsZW1lbnRlZAA2OygAZQAAAKsJAAA+AAAA2wkAAAQAAAAEAAAAFgUAADY7KABlAAAAtwkAADwAAAA2OygAZQAAAJgJAAAmAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc3djX2VjbWFfdHJhbnNmb3Jtc190eXBlc2NyaXB0LTE4LjAuMC9zcmMvc3RyaXBfdHlwZS5ycxApKAB8AAAA1QAAACkAAAByYXdUcGxleHByc3F1YXNpc1RoaXNVbmFyeVVwZGF0ZUJpbk1lbWJlclN1cGVyUHJvcENvbmRDYWxsTmV3U2VxTGl0VGFnZ2VkVHBsQXJyb3dZaWVsZE1ldGFQcm9wQXdhaXRQYXJlbkpTWE1lbWJlckpTWE5hbWVzcGFjZWROYW1lSlNYRW1wdHlKU1hFbGVtZW50SlNYRnJhZ21lbnRUc1R5cGVBc3NlcnRpb25Uc0NvbnN0QXNzZXJ0aW9uVHNOb25OdWxsVHNBc1RzSW5zdGFudGlhdGlvblRzU2F0aXNmaWVzT3B0Q2hhaW5TaG9ydGhhbmQAANwJAAAMAAAABAAAABQFAADdCQAADAAAAAQAAADeCQAA3wkAAAQAAAAEAAAA0wQAAAAAAAABAAAAAQAAAK4CAADgCQAABAAAAAQAAADKBAAA4QkAAAQAAAAEAAAATQUAAAAAAAAEAAAABAAAAOIJAABzdXBlcl9jbGFzc3R5cGVfcGFyYW1zc3VwZXJfdHlwZV9wYXJhbXMAt0soAAQAAAAFOigABAAAANUxKAAKAAAASTooAAQAAAAEKygACwAAAOwxKAALAAAADysoAAsAAAAaKygAEQAAADU/KAAKAAAAZGVjbHNUcnlTdG10YmxvY2toYW5kbGVyZmluYWxpemVySlNYTWVtYmVyRXhwck9iamVjdExpdG9wZW5pbmdjaGlsZHJlbmNsb3NpbmcAAADjCQAADAAAAAQAAADkCQAA5QkAABgAAAAEAAAA5gkAAGlzX2dlbmVyYXRvcmlzX2FzeW5jcmV0dXJuX3R5cGUAiDMoAAYAAADVMSgACgAAALdLKAAEAAAABTooAAQAAABJOigABAAAAOQrKAAMAAAA8CsoAAgAAAAPKygACwAAAPgrKAALAAAARnVuY3Rpb25wcm9wVHNLZXl3b3JkVHlwZVRzVGhpc1R5cGVUc0ZuT3JDb25zdHJ1Y3RvclR5cGVUc1R5cGVSZWZUc1R5cGVRdWVyeVRzVHlwZUxpdFRzQXJyYXlUeXBlVHNUdXBsZVR5cGVUc09wdGlvbmFsVHlwZVRzUmVzdFR5cGVUc1VuaW9uT3JJbnRlcnNlY3Rpb25UeXBlVHNDb25kaXRpb25hbFR5cGVUc0luZmVyVHlwZVRzUGFyZW50aGVzaXplZFR5cGVUc1R5cGVPcGVyYXRvclRzSW5kZXhlZEFjY2Vzc1R5cGVUc01hcHBlZFR5cGVUc0xpdFR5cGVUc1R5cGVQcmVkaWNhdGVUc0ltcG9ydFR5cGVUc1R5cGVBbm5KU1hPcGVuaW5nRWxlbWVudGF0dHJzc2VsZl9jbG9zaW5ndHlwZV9hcmdzBAkAABgAAAAIAAAAqwIAAFRzRW51bURlY2xpc19jb25zdG1lbWJlcnNUc1F1YWxpZmllZE5hbWXACQAAIAAAAAgAAAAHAwAAAAAAAAQAAAAEAAAA5wkAALdLKAAEAAAAxVUoAAcAAADLQigABgAAALxCKAAJAAAAwzYoAAIAAABJOigABAAAAFRzTW9kdWxlRGVjbOgJAAAMAAAABAAAAOkJAAAAAAAABAAAAAQAAADqCQAAt0soAAQAAADDNigAAgAAAMVVKAAHAAAADysoAAsAAACtQigABwAAAEk6KAAEAAAAVHNNb2R1bGVCbG9ja1RzTmFtZXNwYWNlRGVjbFRzVHlwZUFsaWFzRGVjbFRzVHlwZVBhcmFtRGVjbFRzSW1wb3J0RXF1YWxzRGVjbGlzX2V4cG9ydG1vZHVsZV9yZWZUc1R5cGVQYXJhbUluc3RhbnRpYXRpb25DbGFzc0ZuVmFyVXNpbmdUc0ludGVyZmFjZVRzVHlwZUFsaWFzVHNFbnVtVHNNb2R1bGUAAAAAAAABAAAAAQAAAK4CAABGbkRlY2xpZGVudENsYXNzRGVjbFZhckRlY2xhcmF0b3IAAAC8CQAABAAAAAQAAABNAwAARXhwb3J0QWxsc3JjdHlwZV9vbmx5RXhwb3J0RGVjbGRlY2wA6wkAAAwAAAAEAAAAKAkAAOwJAAAEAAAABAAAAO0JAAAAAAAABAAAAAQAAABGBQAAc3BlY2lmaWVyc3BoYXNlALdLKAAEAAAAxC8oAAoAAAB5LygAAwAAAHwvKAAJAAAAE0koAAQAAADOLygABQAAAEltcG9ydERlY2xJbXBvcnRFeHBvcnROYW1lZEV4cG9ydERlZmF1bHREZWNsRXhwb3J0RGVmYXVsdEV4cHJUc0ltcG9ydEVxdWFsc1RzRXhwb3J0QXNzaWdubWVudFRzTmFtZXNwYWNlRXhwb3J0VHNJbnRlcmZhY2VEZWNsRXZhbHVhdGlvblNvdXJjZURlZmVyTmFtZWRFeHBvcnROYW1lc3BhY2VEZWZhdWx0TmFtZWRFeHBvcnROYW1lZFNwZWNpZmllcm9yaWdleHBvcnRlZGlzX3R5cGVfb25seUltcG9ydE5hbWVkU3BlY2lmaWVybG9jYWxpbXBvcnRlZEltcG9ydFN0YXJBc1NwZWNpZmllckV4cG9ydERlZmF1bHRTcGVjaWZpZXJJbXBvcnREZWZhdWx0U3BlY2lmaWVyRXhwb3J0TmFtZXNwYWNlU3BlY2lmaWVyUHJpdmF0ZVB1YmxpYwAAAO4JAAAgAAAACAAAAIoFAADvCQAABAAAAAQAAADTBAAA8AkAAAQAAAAEAAAAfgUAAAAAAAABAAAAAQAAAK4CAADRCQAADAAAAAQAAAAUBQAAAAAAAAEAAAABAAAA0gkAAGlzX3N0YXRpY2RlY29yYXRvcnNhY2Nlc3NpYmlsaXR5aXNfYWJzdHJhY3Rpc19vcHRpb25hbGlzX292ZXJyaWRlZGVmaW5pdGUAAAC3SygABAAAAKw2KAADAAAAe08oAAUAAAA5NigACAAAAMwxKAAJAAAA1TEoAAoAAADfMSgADQAAAOwxKAALAAAA9zEoAAsAAAACMigACwAAAOJVKAAIAAAAxVUoAAcAAAANMigACAAAAENsYXNzUHJvcERlY29yYXRvck1ldGhvZEdldHRlclNldHRlckNvbnN0cnVjdG9yUHJpdmF0ZU1ldGhvZFByaXZhdGVQcm9wVHNJbmRleFNpZ25hdHVyZVN0YXRpY0Jsb2NrQXV0b0FjY2Vzc29yAADxCQAABAAAAAQAAADyCQAAAAAAAAEAAAABAAAA8wkAAGtpbmS3SygABAAAAKw2KAADAAAA7VIoAAgAAAAQMygABAAAAMwxKAAJAAAA3zEoAA0AAADsMSgACwAAAPcxKAALAAAAAjIoAAsAAABDbGFzc01ldGhvZAD0CQAADAAAAAQAAAD1CQAA9gkAABgAAAAEAAAA5gkAAHBhcmFtcwAAt0soAAQAAAAFOigABAAAAKw2KAADAAAAiDMoAAYAAABJOigABAAAAN8xKAANAAAA9zEoAAsAAAD3CQAAEAAAAAgAAAAjCQAAt0soAAQAAAAFOigABAAAAKw2KAADAAAAe08oAAUAAAA5NigACAAAAMwxKAAJAAAA1TEoAAoAAADfMSgADQAAAPcxKAALAAAAAjIoAAsAAADiVSgACAAAAA0yKAAIAAAA+AkAACAAAAAIAAAA+QkAALdLKAAEAAAArDYoAAMAAAB7TygABQAAADk2KAAIAAAAzDEoAAkAAADVMSgACgAAAN8xKAANAAAA7DEoAAsAAAACMigACwAAAA0yKAAIAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc3djX2VjbWFfdHJhbnNmb3Jtc190eXBlc2NyaXB0LTE4LjAuMC9zcmMvdHJhbnNmb3JtLnJzAJg0KAB7AAAAwgIAADgAAACSCAAADAAAAAQAAACTCAAAGQkAAPoJAABOYU5JbmZpbml0eS9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3N3Y19lY21hX3RyYW5zZm9ybXNfdHlwZXNjcmlwdC0xOC4wLjAvc3JjL3RzX2VudW0ucnNHNSgAeQAAALAAAAASAAAAAQAAAAAAAAABAAAAAAAAAEc1KAB5AAAA2gAAABoAAAAAAAAAAAAAAAEAAACWCAAAQXJyYXlSZXN0T2JqZWN0QXNzaWduAAAAAAAAAAQAAAAEAAAAugQAAFJlc3RQYXRkb3QzX3Rva2VudHlwZV9hbm5BcnJheVBhdGVsZW1zQXNzaWduUGF0T2JqZWN0UGF0cHJvcHNTdHJOdW1Db21wdXRlZEJpZ0ludElkZW50TmFtZVByaXZhdGVOYW1lbmFtZU1vZHVsZURlY2xTdG10QXNzaWduUGF0UHJvcGtleUtleVZhbHVlQmluZGluZ0lkZW50aWRLZXlWYWx1ZVBhdFByb3BJbXBvcnQgZGVjbGFyYXRpb25zIGluIGEgbmFtZXNwYWNlIGNhbm5vdCByZWZlcmVuY2UgYSBtb2R1bGUuRVNNLXN0eWxlIG1vZHVsZSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwZXJtaXR0ZWQgaW4gYSBuYW1lc3BhY2UuSW1wb3J0IGFzc2lnbm1lbnQgY2Fubm90IGJlIHVzZWQgd2hlbiB0YXJnZXRpbmcgRUNNQVNjcmlwdCBtb2R1bGVzLiBDb25zaWRlciB1c2luZyBgaW1wb3J0ICogYXMgbnMgZnJvbSAibW9kImAsIGBpbXBvcnQge2F9IGZyb20gIm1vZCJgLCBgaW1wb3J0IGQgZnJvbSAibW9kImAsIG9yIGFub3RoZXIgbW9kdWxlIGZvcm1hdCBpbnN0ZWFkLkV4cG9ydCBhc3NpZ25tZW50IGNhbm5vdCBiZSB1c2VkIHdoZW4gdGFyZ2V0aW5nIEVDTUFTY3JpcHQgbW9kdWxlcy4gQ29uc2lkZXIgdXNpbmcgYGV4cG9ydCBkZWZhdWx0YCBvciBhbm90aGVyIG1vZHVsZSBmb3JtYXQgaW5zdGVhZC4vaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zd2NfZWNtYV90cmFuc2Zvcm1zX3R5cGVzY3JpcHQtMTguMC4wL3NyYy90eXBlc2NyaXB0LnJzAACWOCgAfAAAAEEAAAAsAAAAc3RydWN0IENvbmZpZ2VudW0gVHNJbXBvcnRFeHBvcnRBc3NpZ25Db25maWdlbnVtIEltcG9ydHNOb3RVc2VkQXNWYWx1ZXNJbnZhbGlkQmxvY2tEZWJ1Z2dlcldpdGhSZXR1cm5MYWJlbGVkQnJlYWtDb250aW51ZUlmU3dpdGNoVGhyb3dUcnlXaGlsZURvV2hpbGVGb3JGb3JJbkZvck9mRGVjbEV4cHIAAAAAAAAIAAAABAAAABEBAAAAAAAABAAAAAQAAACiAQAAAAAAAAQAAAAEAAAA0QIAAElkZW50Y3R4dHN5bW9wdGlvbmFsSWZTdG10dGVzdGNvbnNhbHRWYXJEZWNsVXNpbmdEZWNsUGF0Rm9yU3RtdGluaXR1cGRhdGVib2R5RXhwclN0bXRleHByV2l0aFN0bXRvYmpOb25lU29tZUJsb2NrU3RtdHN0bXRzQnJlYWtTdG10bGFiZWxFbXB0eVN0bXRGb3JJblN0bXRsZWZ0cmlnaHRGb3JPZlN0bXRpc19hd2FpdFRocm93U3RtdGFyZ1doaWxlU3RtdFJldHVyblN0bXRTd2l0Y2hDYXNlU3dpdGNoU3RtdGRpc2NyaW1pbmFudGNhc2VzQ2F0Y2hDbGF1c2VwYXJhbURvV2hpbGVTdG10TGFiZWxlZFN0bXRDb250aW51ZVN0bXREZWJ1Z2dlclN0bXQvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zd2NfZWNtYV91dGlscy0xNi4wLjAvc3JjL2xpYi5yc1N5bWJvbF8AAAEAAAAAAAAAoTsoAAEAAABzdXBlcl8AALQ7KAAGAAAAkggAAAwAAAAEAAAAkwgAAJQIAAD7CQAAAAAAAAAAAAABAAAAlggAAKE7KAABAAAAY2FwYWNpdHkgb3ZlcmZsb3cAAAD0OygAEQAAAC9ydXN0Yy85MGIzNWE2MjM5YzNkOGJkYWJjNTMwYTZhMDgxNmY3ZmY4OWEwYWFmL2xpYnJhcnkvYWxsb2Mvc3JjL3ZlYy9zcGVjX2Zyb21faXRlcl9uZXN0ZWQucnMAABA8KABeAAAAOQAAABIAAAAvcnVzdGMvOTBiMzVhNjIzOWMzZDhiZGFiYzUzMGE2YTA4MTZmN2ZmODlhMGFhZi9saWJyYXJ5L2FsbG9jL3NyYy92ZWMvbW9kLnJzgDwoAEwAAADSDQAADQAAAIA8KABMAAAALQoAACQAAAAAAAAADAAAAAQAAAD8CQAA/QkAAGNvbnN0cnVjdG9yIHNob3VsZCBoYXZlIGEgYm9keS9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3N3Y19lY21hX3V0aWxzLTE2LjAuMC9zcmMvY29uc3RydWN0b3IucnMAHj0oAG0AAAAOAAAAIAAAAJIIAAAMAAAABAAAAJMIAAAZCQAA+wkAADIGAAAMAAAABAAAADoGAAA9BgAAPAYAAAAAAAAAAAAAAQAAADYGAAD/CQAALAAAAAQAAAAACgAAAQoAAAIKAAADCgAABAoAAAUKAADUBQAAAVMoAGgAAAB6AgAAFAAAAAFTKABoAAAAogIAADwAAAABUygAaAAAAJECAAA+AAAAGFcoAE8AAAD6AQAANwAAAHZhcmxldD09IT09PT0hPT08PT49PDw+Pj4+PiV8XiZ8fCYmKio/PwBJQSgAZwAAAIMDAAASAAAASUEoAGcAAAABAgAASAAAAElBKABnAAAAAgIAACgAAABJQSgAZwAAAMoAAABMAAAASUEoAGcAAADNAAAAJwAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3N3Y19lY21hX2NvZGVnZW4tMTQuMC4wL3NyYy9saXQucnMAvD4oAGcAAAD4AAAANAAAAGVpbXBsZW1lbnRzLy8vKiovI19fUFVSRV9ffmRlbGV0ZSs9LT0qPS89JT08PD0+Pj0+Pj49fD1ePSY9Kio9JiY9fHw9Pz89KystLS9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy91dGlsL2l0ZXIucnN1bmV4cGVjdGVkIHJlZ2V4IGZpbmQgZXJyb3I6IAp0byBoYW5kbGUgZmluZCBlcnJvcnMsIHVzZSAndHJ5JyBvciAnc2VhcmNoJyBtZXRob2RzAOk/KAAdAAAABkAoADUAAAB/PygAagAAAH4BAAAZAAAAAFUoAGoAAABeAgAAHAAAAABVKABqAAAAawIAADIAAAACAAAAAFUoAGoAAAABAwAAFQAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy91dGlsL3NlYXJjaC5yc2ludmFsaWQgc3BhbiAgZm9yIGhheXN0YWNrIG9mIGxlbmd0aCAAAAD8QCgADQAAAAlBKAAYAAAAkEAoAGwAAACqAQAACQAAAGNsYXNzL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc3djX2VjbWFfY29kZWdlbi0xNC4wLjAvc3JjL2xpYi5yc0lBKABnAAAA8wcAACIAAABJQSgAZwAAAPYHAAAhAAAAc3VwZXJ5aWVsZA0KSUEoAGcAAAAmCAAAMgAAAElBKABnAAAAHwgAADAAAABuZXcudGFyZ2V0aW1wb3J0Lm1ldGE/Li9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3N3Y19lY21hX2NvZGVnZW4tMTQuMC4wL3NyYy90eXBlc2NyaXB0LnJzbmV3PT5jb25zdGVudW1pbmZlcnB1YmxpY3Byb3RlY3RlZHByaXZhdGVvdXRleHRlbmRzdHlwZW9mKy1uYW1lc3BhY2Vtb2R1bGVnbG9iYWxgAAATQigAbgAAAAQCAAAiAAAAJHsAABNCKABuAAAABwIAACEAAABhbnl1bmtub3dubnVtYmVyb2JqZWN0Ym9vbGVhbmJpZ2ludHN0cmluZ3N5bWJvbHZvaWR1bmRlZmluZWRuZXZlcmludHJpbnNpY2tleW9mdW5pcXVlaW50ZXJmYWNlc2F0aXNmaWVzYXNzZXJ0c2lzcmVxdWlyZUhhc2ggdGFibGUgY2FwYWNpdHkgb3ZlcmZsb3cAb0MoABwAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9oYXNoYnJvd24tMC4xNC41L3NyYy9yYXcvbW9kLnJzlEMoAGQAAABWAAAAKAAAADIGAAAMAAAABAAAADoGAAA9BgAAPAYAAAAAAAAAAAAAAQAAADYGAAAAAAAABAAAAAQAAAARAAAABwoAAAQAAAAEAAAACAoAAAkKAAAIAAAABAAAAAoKAABdIAAA32goAAEAAABgRCgAAgAAAAsKAAAIAAAABAAAAAwKAAANCgAADgoAAA8KAAAQCgAAEQoAABIKAAATCgAAFAoAABUKAAAWCgAAFwoAABgKAAAZCgAAU3ludGF4IGVycm9ySW52YWxpZFN5bnRheAAAALtLKABoAAAAAAEAAEkAAAC7SygAaAAAAFkBAAAVAAAAu0soAGgAAAAsAQAAJQAAALtLKABoAAAAOwEAACUAAAC7SygAaAAAAD8BAAAlAAAAu0soAGgAAABAAQAAJQAAALtLKABoAAAARAEAACUAAAC7SygAaAAAAEUBAAAlAAAAu0soAGgAAABGAQAAJQAAALtLKABoAAAATAEAACUAAAC7SygAaAAAAE4BAAAlAAAAu0soAGgAAABPAQAAJQAAALtLKABoAAAAUAEAACUAAAAKAAAAu0soAGgAAACsAQAAMAAAAGdlbmVyYXRlZCBjb2RlIHdhcyBub3QgdXRmLThmYWlsZWQgdG8gd3JpdGUgc291cmNlIG1hcHNvdXJjZSBtYXAgd2FzIG5vdCB1dGY4AAAAu0soAGgAAAD6AQAAEwAAALtLKABoAAAA6gEAABIAAAC7SygAaAAAAPEBAAA1AAAAu0soAGgAAAArAgAAEgAAALtLKABoAAAANwIAABUAAAC7SygAaAAAAEMCAAAVAAAAu0soAGgAAABRAgAAGQAAALtLKABoAAAAXQIAABkAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7SygAaAAAAIECAAAZAAAAu0soAGgAAACLAgAAQAAAALtLKABoAAAAjwIAACQAAADaVSgACAAAALtLKABoAAAAxQIAADwAAAC7SygAaAAAADUDAAAYAAAAaW5zdGFuY2VvZgAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRoaXO7SygAaAAAALwFAAAkAAAAc3RydWN0IE9wdGlvbnN2YXJpYW50IGlkZW50aWZpZXJlbnVtIE1vZGVVbmtub3duL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc3djX2VjbWFfY29kZWdlbi0xNC4wLjAvc3JjL21vZHVsZV9kZWNscy5yc3R5cGVhc2V4cG9ydGZyb21hc3NlcnRpbXBvcnRkZWZlcmFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuc3BlY2lmaWVycy5sZW4oKSA8PSAyAAAAZEcoAHAAAACnAAAAFQAAAG5vdCBpbXBsZW1lbnRlZDogY29kZWdlbiBvZiBgZXhwb3J0IGRlZmF1bHQgZnJvbSAnZm9vJztgNEgoADgAAABkRygAcAAAAP0AAAARAAAAAAAAAAwAAAAEAAAAGgoAABsKAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zd2NfZWNtYV9jb2RlZ2VuLTE0LjAuMC9zcmMvc3RtdC5yc2lmZWxzZWZvcnRyeWZpbmFsbHl3aXRoYnJlYWtpbm9mdGhyb3d3aGlsZXJldHVybmNhc2VkZWZhdWx0AJhIKABoAAAA/wAAAB0AAACYSCgAaAAAAAIBAABBAAAAc3dpdGNoY2F0Y2hkb2NvbnRpbnVlZGVidWdnZXJjYW5ub3QgYWNjZXNzIGEgc2NvcGVkIHRocmVhZCBsb2NhbCB2YXJpYWJsZSB3aXRob3V0IGNhbGxpbmcgYHNldGAgZmlyc3QvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zY29wZWQtdGxzLTEuMC4xL3NyYy9saWIucnMAAADBSSgAYAAAAKgAAAAJAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogIGlzIGFscmVhZHkgcmVuYW1lZCB0byAsIGJ1dCBpdCdzIHJlbmFtZWQgYXMgADRKKAAqAAAAXkooABcAAAB1SigAFgAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3N3Y19lY21hX3RyYW5zZm9ybXNfYmFzZS0xNi4wLjAvc3JjL3JlbmFtZS9tb2QucnMAAKRKKAB2AAAAswAAABkAAAAHCgAABAAAAAQAAAAICgAAL3J1c3RjLzkwYjM1YTYyMzljM2Q4YmRhYmM1MzBhNmEwODE2ZjdmZjg5YTBhYWYvbGlicmFyeS9hbGxvYy9zcmMvYm9ycm93LnJzADxLKABLAAAAFQEAACUAAABUb2tlbkFuZFNwYW50b2tlbmhhZF9saW5lX2JyZWFrc3Bhbi9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3N3Y19mYXN0X3RzX3N0cmlwLTIwLjAuMC9zcmMvbGliLnJzALtLKABoAAAAdQEAAFEAAAALCgAACAAAAAQAAAAMCgAADQoAAA4KAAAPCgAAEAoAABEKAAASCgAAEwoAABQKAAAVCgAAFgoAABcKAAAYCgAAGQoAAFVuc3VwcG9ydGVkIHN5bnRheGBtb2R1bGVgIGtleXdvcmQgaXMgbm90IHN1cHBvcnRlZC4gVXNlIGBuYW1lc3BhY2VgIGluc3RlYWQuVW5zdXBwb3J0ZWRTeW50YXhUeXBlU2NyaXB0IGV4cG9ydCBhc3NpZ25tZW50IGlzIG5vdCBzdXBwb3J0ZWQgaW4gc3RyaXAtb25seSBtb2RlVHlwZVNjcmlwdCBpbXBvcnQgZXF1YWxzIGRlY2xhcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gc3RyaXAtb25seSBtb2RlVHlwZVNjcmlwdCBlbnVtIGlzIG5vdCBzdXBwb3J0ZWQgaW4gc3RyaXAtb25seSBtb2RlVHlwZVNjcmlwdCBuYW1lc3BhY2UgZGVjbGFyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBzdHJpcC1vbmx5IG1vZGVUeXBlU2NyaXB0IHBhcmFtZXRlciBwcm9wZXJ0eSBpcyBub3Qgc3VwcG9ydGVkIGluIHN0cmlwLW9ubHkgbW9kZVRoZSBhbmdsZS1icmFja2V0IHN5bnRheCBmb3IgdHlwZSBhc3NlcnRpb25zLCBgPFQ+ZXhwcmAsIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdHlwZSBzdHJpcCBtb2RlLiBJbnN0ZWFkLCB1c2UgdGhlICdhcycgc3ludGF4OiBgZXhwciBhcyBUYC4vaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zd2NfZWNtYV9sZXhlci0xNS4wLjEvc3JjL2xleGVyL3N0YXRlLnJzAJ5OKABtAAAA4gEAAB8AAACeTigAbQAAAJ4BAABBAAAAnk4oAG0AAACfAQAAOAAAAJ5OKABtAAAAoAEAABkAAABkZXNjcmlwdGlvbigpIGlzIGRlcHJlY2F0ZWQ7IHVzZSBEaXNwbGF5UmVmQ2VsbHZhbHVlPGJvcnJvd2VkPgAAgE8oAAoAAABJb1V0ZjhCYWRKc29uVmxxTGVmdG92ZXJWbHFOb1ZhbHVlc1ZscU92ZXJmbG93QmFkU2VnbWVudFNpemVCYWRTb3VyY2VSZWZlcmVuY2VCYWROYW1lUmVmZXJlbmNlSW5jb21wYXRpYmxlU291cmNlTWFwSW52YWxpZERhdGFVcmxDYW5ub3RGbGF0dGVuSW52YWxpZFJhbUJ1bmRsZU1hZ2ljSW52YWxpZFJhbUJ1bmRsZUluZGV4SW52YWxpZFJhbUJ1bmRsZUVudHJ5Tm90QVJhbUJ1bmRsZUludmFsaWRSYW5nZU1hcHBpbmdJbmRleEludmFsaWRCYXNlNjRpbnZhbGlkIHV0Zi04OiBjb3JydXB0IGNvbnRlbnRzaW52YWxpZCB1dGYtOAAJCgAACAAAAAQAAAAcCgAACQoAAAgAAAAEAAAACgoAABwKAADAUCgAHQoAAB4KAAAfCgAAIAoAANcFAAAAAAAACAAAAAQAAAAhCgAAAAAAAAgAAAAEAAAA8wUAACEKAAD8UCgA1AUAACIKAAAjCgAA1AUAANcFAAAkCgAABAAAAAQAAAAlCgAAJAoAAAQAAAAEAAAAJgoAACUKAAA4USgAJwoAACgKAADWBQAAKQoAANcFAAAqCgAAHAAAAAQAAAArCgAAKgoAABwAAAAEAAAALAoAACsKAAB0USgALQoAAC4KAADWBQAALQoAANcFAAAvCgAAFAAAAAQAAAAwCgAALwoAABQAAAAEAAAAMQoAADAKAACwUSgAMgoAADMKAADWBQAAMgoAANcFAAA0CgAAMAAAAAQAAADZBQAANAoAADAAAAAEAAAA2gUAANkFAADsUSgA2wUAADUKAADdBQAA2wUAAN4FAAA2CgAAOAAAAAQAAADZBQAANgoAADgAAAAEAAAA2gUAANkFAAAoUigA2wUAADcKAADdBQAA2wUAAN4FAABjb250ZXh0c291cmNlAAAAaAcAABQAAAAEAAAAOAoAAGgHAAAUAAAABAAAALwFAAA4CgAAdFIoANQFAAA5CgAAOgoAANQFAADXBQAAOwoAAAwAAAAEAAAAPAoAADsKAAAMAAAABAAAAL0FAAA8CgAAsFIoANQFAAA9CgAA1gUAAD4KAADXBQAAI2Z1bmN0aW9uYXdhaXR1c2luZyMhL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc3djX2NvbW1vbi0xMi4wLjEvc3JjL3NvdXJjZV9tYXAucnMAAAABUygAaAAAADUFAAA8AAAAAVMoAGgAAABdBQAAJgAAAC9ydXN0Yy85MGIzNWE2MjM5YzNkOGJkYWJjNTMwYTZhMDgxNmY3ZmY4OWEwYWFmL2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zdGFibGUvcXVpY2tzb3J0LnJzAIxTKABfAAAATAAAAB8AAACMUygAXwAAAEYAAAAXAAAAAAAAAAQAAAAEAAAAfAcAAAAAAAAEAAAABAAAAA8BAABOb0ZpbGVGb3JpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBNb2R1bGUgaXMgaGFuZGxlZAogICAgYWJvdmUAADVUKABFAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc3djX2VjbWFfbGV4ZXItMTUuMC4xL3NyYy9wYXJzZXIvbW9kLnJzhFQoAGwAAAC9AAAAMgAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy91dGlsL3Bvb2wucnMAAABVKABqAAAAPQIAABwAAAAuLi4uPC8+PDwvPjw+PGludmFsaWQ+AAA/CgAAQAoAAEEKAABCCgAAQwoAAFgGAABECgAARQoAAEYKAABHCgAASAoAAFgGAAA7ZGVjbGFyZXN0YXRpY2Fic3RyYWN0b3ZlcnJpZGVyZWFkb25seT8hPShhc3luYypnZXRzZXRjb25zdHJ1Y3RvcmFjY2Vzc29yQCAgICBldmFsAAAAAAAABAAAAAAAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zd2NfZWNtYV9jb2RlZ2VuLTE0LjAuMC9zcmMvdGV4dF93cml0ZXIvYmFzaWNfaW1wbC5ycwAAJFYoAHoAAAByAAAAGgAAAHVzZSBzdHJpY3RzY3JpcHRcdXs8IS0tXHgzYyEtLS0tPi0tXHgzZW4tMHgA2FYoAAMAAAAweAAA5FYoAAIAAAAyBgAADAAAAAQAAAA6BgAAWQYAADwGAAAAAAAAAAAAAAEAAAA2BgAAL3J1c3RjLzkwYjM1YTYyMzljM2Q4YmRhYmM1MzBhNmEwODE2ZjdmZjg5YTBhYWYvbGlicmFyeS9jb3JlL3NyYy9zdHIvcGF0dGVybi5ycwAYVygATwAAAMgFAAAUAAAAGFcoAE8AAADIBQAAIQAAABhXKABPAAAAvAUAACEAAAAvcnVzdGMvOTBiMzVhNjIzOWMzZDhiZGFiYzUzMGE2YTA4MTZmN2ZmODlhMGFhZi9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc3RhYmxlL2RyaWZ0LnJzAJhXKABbAAAA/wAAABkAAACYVygAWwAAAPIAAAASAAAAmFcoAFsAAADOAAAAJAAAAJhXKABbAAAA0QAAACQAAACYVygAWwAAAEAAAAAiAAAAAAAAAAQAAAAEAAAASQoAAEoKAABLCgAAGFcoAE8AAABMBAAAJAAAABhXKABPAAAAvgEAADcAAAAyBgAADAAAAAQAAAA6BgAAPQYAADwGAAAAAAAAAAAAAAEAAAA2BgAAaHR0cDpodHRwczovAQAAAAAAAACvWCgAAQAAAC9ydXN0Yy85MGIzNWE2MjM5YzNkOGJkYWJjNTMwYTZhMDgxNmY3ZmY4OWEwYWFmL2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC91bnN0YWJsZS9xdWlja3NvcnQucnMAAADAWCgAYQAAADcAAAAbAAAAL3J1c3RjLzkwYjM1YTYyMzljM2Q4YmRhYmM1MzBhNmEwODE2ZjdmZjg5YTBhYWYvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9zb3J0L3Vuc3RhYmxlL2hlYXBzb3J0LnJzNFkoAGAAAAAUAAAADwAAADRZKABgAAAAHAAAAB0AAAAvcnVzdGMvOTBiMzVhNjIzOWMzZDhiZGFiYzUzMGE2YTA4MTZmN2ZmODlhMGFhZi9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9uYXZpZ2F0ZS5ycwC0WSgAXwAAAMYAAAAnAAAAL3J1c3RjLzkwYjM1YTYyMzljM2Q4YmRhYmM1MzBhNmEwODE2ZjdmZjg5YTBhYWYvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbWFwL2VudHJ5LnJzJFooAGAAAABxAQAANgAAAGFzc2VydGlvbiBmYWlsZWQ6IGlkeCA8IENBUEFDSVRZL3J1c3RjLzkwYjM1YTYyMzljM2Q4YmRhYmM1MzBhNmEwODE2ZjdmZjg5YTBhYWYvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbm9kZS5ycwC0WigAWwAAAJcCAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogZWRnZS5oZWlnaHQgPT0gc2VsZi5oZWlnaHQgLSAxtFooAFsAAACvAgAACQAAALRaKABbAAAAswIAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBzcmMubGVuKCkgPT0gZHN0LmxlbigptFooAFsAAAAvBwAABQAAALRaKABbAAAArwQAACMAAAC0WigAWwAAALMEAAAjAAAAtFooAFsAAADvBAAAJAAAAGFzc2VydGlvbiBmYWlsZWQ6IGVkZ2UuaGVpZ2h0ID09IHNlbGYubm9kZS5oZWlnaHQgLSAxAAAAtFooAFsAAADwAwAACQAAALRZKABfAAAAWAIAADAAAAC0WSgAXwAAABYCAAAvAAAAtFkoAF8AAAChAAAAJAAAAEluY2x1ZGVkRXhjbHVkZWRVbmJvdW5kZWRpbmRleCAgb3V0IG9mIHJhbmdlOiAAAGlcKAAGAAAAb1woAA8AAACIYigAXgAAADEGAAADAAAALi4vaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9ydXN0Yy1oYXNoLTIuMS4xL3NyYy9saWIucnMAAKJcKABgAAAAIwEAABwAAACiXCgAYAAAACQBAAAoAAAAolwoAGAAAAAlAQAAKAAAAKJcKABgAAAACAEAACsAAACiXCgAYAAAAAgBAABCAAAAolwoAGAAAAAFAQAAKwAAAKJcKABgAAAABQEAAEIAAAAAAAAAAAAAAAEAAAB5BgAAVHJ5RnJvbVNsaWNlRXJyb3IAAAAyBgAADAAAAAQAAAA6BgAAdgcAADwGAAAAAAAAAAAAAAEAAAA2BgAAJHNlcmRlX2pzb246OnByaXZhdGU6OlJhd1ZhbHVlUmF3U2VjdGlvbk9mZnNldGxpbmVjb2x1bW5SYXdTZWN0aW9ub2Zmc2V0dXJsbWFwRmFjZWJvb2tTY29wZU1hcHBpbmduYW1lc21hcHBpbmdzUmF3U291cmNlTWFwdmVyc2lvbmZpbGVzb3VyY2Vzc291cmNlUm9vdHNvdXJjZXNDb250ZW50c2VjdGlvbnNyYW5nZU1hcHBpbmdzaWdub3JlTGlzdHhfZmFjZWJvb2tfb2Zmc2V0c3hfbWV0cm9fbW9kdWxlX3BhdGhzeF9mYWNlYm9va19zb3VyY2VzZGVidWdfaWRkZWJ1Z0lkVXRmOEVycm9ydmFsaWRfdXBfdG9lcnJvcl9sZW5NaXNhbGlnbkVycm9yAAAAAQAAADIGAAAMAAAABAAAADoGAADIBwAAPAYAAAAAAAAAAAAAAQAAADYGAABhdHRlbXB0IHRvIGpvaW4gaW50byBjb2xsZWN0aW9uIHdpdGggbGVuID4gdXNpemU6Ok1BWC9ydXN0Yy85MGIzNWE2MjM5YzNkOGJkYWJjNTMwYTZhMDgxNmY3ZmY4OWEwYWFmL2xpYnJhcnkvYWxsb2Mvc3JjL3N0ci5ycwAAAFlfKABIAAAAmgAAAAoAAABtaWQgPiBsZW4AAAC0XygACQAAAFlfKABIAAAAsQAAABYAAABBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvcmFuZ2UgIG91dCBvZiBib3VuZHM6IAAAGGAoAAYAAAAeYCgAEAAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2JpdHZlYy0xLjAuMS9zcmMvc2xpY2UvYXBpLnJzAABAYCgAYgAAAI4KAAABAAAAMgYAAAwAAAAEAAAAOgYAAMUHAAA8BgAAAAAAAAAAAAABAAAANgYAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkvcnVzdGMvOTBiMzVhNjIzOWMzZDhiZGFiYzUzMGE2YTA4MTZmN2ZmODlhMGFhZi9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAABNhKABLAAAAewoAAA4AAABoBwAAFAAAAAQAAABMCgAAAAAAAAgAAAAEAAAATQoAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWVFcnJvckZyb21VdGY4RXJyb3JieXRlc2Vycm9yY2Fubm90ICAgYml0cyBmcm9tIGEgLWJpdCByZWdpb24A12EoAAcAAADeYSgAAQAAAN9hKAANAAAA7GEoAAsAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9iaXR2ZWMtMS4wLjEvc3JjL2ZpZWxkLnJzAAAYYigAXgAAAA4CAAACAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYml0dmVjLTEuMC4xL3NyYy9zbGljZS5ycwAAiGIoAF4AAAD3AAAAHwAAAIhiKABeAAAATwEAACMAAABsb2FkQml0U3BhbkVycm9yPD46OgxjKAANAAAAGWMoAAMAAABOdWxsTWlzYWxpZ25lZFRvb0xvbmdUb29IaWdoQ2Fubm90IHNldCBzb3VyY2VzIGZvciB0b21ic3RvbmUgc291cmNlIGlkL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc3djX3NvdXJjZW1hcC05LjMuMS9zcmMvYnVpbGRlci5ycwAAAHJjKABnAAAAgAAAAAkAAAByYygAZwAAAIQAAAAdAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc3djX3NvdXJjZW1hcC05LjMuMS9zcmMvZW5jb2Rlci5yc2ludmFsaWQgYnl0ZQD8YygAZwAAACMAAAASAAAAaW52YWxpZCB1dGY4/GMoAGcAAABmAAAAIQAAAGJhZCBqc29uOiAAAJxkKAAKAAAAbGVmdG92ZXIgY3VyL3NoaWZ0IGluIHZscSBkZWNvZGWwZCgAIAAAAHZscSBkZWNvZGUgZGlkIG5vdCBwcm9kdWNlIGFueSB2YWx1ZXMAAADYZCgAJQAAAHZscSBkZWNvZGUgY2F1c2VkIGFuIG92ZXJmbG93AAAACGUoAB0AAABnb3QgIHNlZ21lbnRzLCBleHBlY3RlZCA0IG9yIDUAADBlKAAEAAAANGUoABoAAABiYWQgcmVmZXJlbmNlIHRvIHNvdXJjZSAjAAAAYGUoABkAAABiYWQgcmVmZXJlbmNlIHRvIG5hbWUgIwCEZSgAFwAAAGVuY291bnRlcmVkIGluY29t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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////Pz//////Pz//qv///z/////////fX9wfzw//H9wfAAAAAAAAAAAAAAAAAAAAAAAAAAAABCAE//9/////f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEoAT//3////9///////////////////////////////////////////////////////////////////////8PAP//f/j//////w/////////////////////////////////D/wMAH1AAAAAAAAAAAAAAAAAAAAAA37xA1///+////////////7//////////////////////////////////w/8DAB9QAAD//////////////////9+8wNf///v///////////+///////////////////////8D/P///////////////////////////v///38C//////8BAAAAAAAAAAD///+HBwD/////////////////////+/z///////////////////////////7///9/Av//////Af7/////v7YA////hwcAAAAAAP//////BwAAAMD+//////////////8vAGDAAJwAAP3///8AAADg/////////////z8AAgAA/P///wcwBAAA/wf////////////D////////////////75///f+fAAD/////////5////////////////wMA////////PyT//z8EEAEAAP///wH/B////34AAP//////AwAAAAAAAPD///////8jAAAB/wMA/v/hn/n///3FIwBAALADAAMQ//////8/AAD///8P/wf///9+gP////////////v////////////////////P//7/75/5///9xfOfeYCwz/8DUOCH+f///W0DAAAAXgAAHADgv/v///3tIwAAAQADAAAC4J/5///97SMAAACwAwACAOjHPdYYx/8DAAABAAAAAADuh/n///1t04c5Al7A/z8A7r/7///97fO/OwEAz/8A/u6f+f///e3znzngsM//AgDsxz3WGMf/w8c9gQDA/wAA4N/9///9/yMAAAAnAwAAAOHf/f///e8jAAAAYAMABgDw3/3/////JwBAcIADAAD84P9//P//+y9/AAAAAAAAAP/f/f///f/z3z1gJ8//AADv3/3///3v8989YGDP/w4A/9/9///////fffCAz/8A/O7/f/z///svf4Rf/8D/DAD+//////8NAH8AAAAAAAAA1vf//6//DSBfAADwAAAAAAEAAAAAAAAA//7///8fAAAAHwAAAAAAAAAAAAAAAAAA/v///////wf/f/8DAAAAANb3//+v//8/X3//8wAAAAABAAAD/wOgwv/+////H/7/3////v///x9AAAAAAAAAAP//////BwCAAAA/PGLA4f8DQAAA/////78g///////3////////////////////////////////////////////////////PwAA///////////8////////AAAAAAD/D////////////wP///////////8//////78g///////3//////////////////////////////////////////////////9/AP//PwD/AAAAv////////QcAAAAAAAAAAP///////////z1/Pf//////Pf////89fz3/f/////////89//////////8HAAAAAP//AAD/////////////Pz////////////89fz3//////z3/////PX89/3//////////Pf//////////5wD+AwD//wAA/////////////z8//v////////////////////////////////////////////////////////////////////////////////////////////////////////////8DAAAAAAAAAAAAAAAA/////////////////5////7//wf////////////H/wH//wOA//8DAP//AwD/3wEA////////DwAAAIAQAAAAAP////////////////+f///+//8H////////////x/8B//8/gP//HwD//w8A/98NAP////////////+PMP8DAAAAAAAA//////////////8B//////8F//////////8/AP///38AAAAAAAD///8/HwD//////w////8DAAAAAAAAALj/A///////////////Af//////B///////////PwD///9//w//D8D/////Px8A//////8P////A/8HAAAAAP//fwD///////8fAAAAAAAAAAAAgAAAAAAAAAAAAAAA4P//////DwDgHwAAAAAAAPj///8BwAD8/////z8AAAD///8P/////////3////+f/wP/A4AA/7//fwAAAAAAAP///////////x//AwD4DwD//////////////////w8A/////w8AAAAA4AD8////P/8H///////nAAAAAADebwT///////////////////////////////8AAAAAAAAAAP////////8A/+P//////z//B///////5wAA9/////8H////////////////////////////////////////////////////////////////////////////////////BwAAAAAAAAAAAAAAAAAAAoAAAP8fAAAAAAAAAAAAAAAAhPwvP1D9//PgQwAA//////8BAAAAAAAAAAAAAAAAAAAAMAAAAAAAgAEAEAAAAAKAAAD/HwAAAAAAAP8f4v8BAIT8Lz9Q/f/z4EMAAP//////AQAAAAAAAAAAAAAAAAAA/////////////////////////////////////x94DAD/////vyD/////////gAAA//9/AH9/f39/f39/AAAAAP////////////////////////////////////8f+A8A/////78g/////////4AAgP//fwB/f39/f39/f//////gAAAA/gM+H/7///////////9/+P7/////////////9+D///////7/////////////fwAA/////wAAAAAAAP//4AAAAP7/Ph/+////////////f/7+///////////////g///////+/////////////38AAP////8AAAAAAAD/////////////////////////HwAAAAAAAAAA//////8/////////////////////////////////////////////////////////////////////////////////////AP8f//8ADAAA//////9/AID///8//////////////wAAAACA//z////////////////5/////////z/rHwAA/P//H////w8AAP////////C///////////////////8DAAAAgP/8////////////////+f////////8/6x8AAPz/u/f//wcAAAD///////8PAPz//////w8AAAAAAAAA/GgA/P//PwD//38AAAD///8f8P//////BwAAgAAA3/8AfP//////EAAA////////DwD//////////z8A/wP////o//////8//////w8A////H///////////AYD/A////3///////wEAAPcPAAD//3/E////////Yj4FAAA4/wccAH5+fgB/f///////9/8D//////////////////8HAAAA////////fwD/P/8D//9//P//////////BwAAOP//fAB+fn4Af3////////f/A////////////////////zf/A/////////////////8//////////////////wMAAAAAfwD4oP/9f1/b/////////////////wMAAAD4////////////////////////P/////////////////8DAAAAAH8A+OD//X9f2/////////////////8DAAAA+P//////AAAAAAAAAAAAAAAAAADf/////////////////////x8AAAAA/v//B/7//wfA/////////////3/8/PwcAAAAAP//AAD//xgAAOAAAAAA3/////////////////////8fAAD/A/7//4f+//8H4P////////////9//Pz8HAAAAAD/7///f///t/8//z8AAAAA////////////////////BwAAAAAAAAAA////////HwAAAAAAAAAAAAAAAAAAAAAA/+///3///7f/P/8/AAAAAP///////////////////wcAAAAAAAAAAP///////x8AAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAD///8f////////AQAAAAAA/////wDg////B/////8/AP///z//////D/8+AAAAAAAAAAAAAAAAAAAAAAAAAAAA////H////////wEAAQAAAP////8A4P///wf//////wf///8//////w//PgAAAAAA/////////////////////////z8AAP////8P/////w///////wD///////8PAP/3//e3//v/+xv///////8PAP////////////////////////8//wP/////D/////8P//////8A////////DwD/9//3t//7//sb////////DwA//f////+/kf//PwD//38A////fwAAAAAAAAAA//83AP//PwD///8DAAAAAAAAAAD/////////wAAAAAAAAAAAAQDv/v//PwAAAAAA////H////x8AAAAA//7//x8AAAD///////8/AP//PwD//wcA//8DAAAAAAAAAAAAAAAAAG/w7/7//z+HAAAAAP///x////8fAAAAAP/+//9/AAAA////////PwD//z8A//8HAP//AwAAAAAAAAAAAAAAAAD///////////8BAAAAAAAA////////BwD///////8HAP////8PAAAAAPz//z+A//8/AAAAAAAAAAAAAAAAAAAA////////////AQAAAAAAAP///////wcA////////BwD//////wD/A/////8/vv//PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wMDABwAAAAAAAAA////H4AA//8/AAAAAAD//wMAAAAAAP//HwAAAP//fwAAAAAAAAAAAAAAAAAAAAAA//////8bAwAcAAAAAAAA8P///x+AAP////8BAAAA//8/AAAAAAD//x8AAAD//38A+P///////wAAAAAAAAAmAPj//////wAAAAD///8BAAD4////fwAAAJAA/////0cA+P//////BwAeAAAUAAAAAP//////////fwAAAMD/P4D/////////BwQA////Af8D////////3//wAP////9PAP//////////H97/FwAAAAD///v//w8AgAEAAAAAAAAAf73/v/8B//////9/AAAAAOCf+f///e0jAAAB4AMAAAD/S/////+/AAAACgAAAAAA///7/////8ADAAAAAAAAAH+9/7//Af////////8H/wPvn/n///3t+585geDPHx8A/0v/////v/+l9w8ABgAAAP///////x8AgAcAgAMAAAD///////8AALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////fwAAAAAADwAAAAD///////////8H/8MDAAAA//////////+/AP8DAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8//wEAAD8AAAAA////////AAAQAAAAAAAAAP//////BwABAAAAAAAAAAD///8HAAAAAH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////EQD/AwAAAAD/////////Af8D//8PAAAA////5/8P/wN/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////w8AAAAAAAAAAAAAAAAAAP//////////AAAAgH/yb////wCAAgAAAAAAAAAAAAAA//z/////AQAKAAAA/////////wcAAAAAAAAAAAAAAAD///////////8DAIB/8m////+/+Q8A/wMAAAAAAAAAAP/8///////8GwAAAAH4/////wcEAAAB8P//////AwAgAAD///////////8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wEAAAD/////////f4AA////////////IwAA////////////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8BAP8D//3///9/AAABAAAAAAD8////AAAAAAAAAAAAAAAAAAB/+/////8BAEAAAAC//f///wMAAQAAAAAAAAAAAAAAAP/9/////3//AQD/AwAA/P////z///5/AAAAAAAAAAAAf/v/////f7T/AP8Dv/3///9/+wH/AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8HAPT//f///w8AAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//fwD///3/////xwcA/wcAAAAAAAAAAAAAAQAAAAAAAAAAAP////////////////9/AAD///////////////////////////////8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////////wEA////////AAB+AAAA//////////////////////////////////////////////////////////////////////////8HAAQAAAAnAPAA////////////////////////////////AAD//z8A//////////////////////////////////////////////////////////////////////////////8D//////////////////////////////////////////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///z8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////8B////fwAA////////////fwAA////PwAA////////AAAPAAAA+P//4P//AAAAAAAAAAAAAAAAAAD/////////Af///3//A////////////3//A////z8fAP///////38ADwD/A/j//+D//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////HwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////x//AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////AAAAAAAAAAAAAAAAAAAAAP///////////wcBAAAAAAAAAPj/AAAAAAAAAAALAAAAAAAAAAAAAAD//////////wAAAAAAAAAAAAAAAAAAAAD///////////+H/////////4D//wAAAAAAAAAAGwADAP//////////////////////////////////PwAAAACA/wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO9v/////////////////////////////////////////w8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////P///fwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////wf/H/8B/wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODjB/jnDwAAADwAAAAAAAAAAAAA/////////////////wf/H/8B/2MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///3/gBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/b/9/AAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8D/////////////9///////////99k3v/r7/////////+/59/f////e1/8/f//////////////////////////////////////////////////////P/////3///f////3///f////3///f////3/////9/////f//9w8AAAAAAAD//////////////////////////z/////9///3////9///3////9///3////9//////f////3///fP////////////////f/j//////x8gABAAAPj+/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////////////////////////////////wAAAAAAAAAA/////////z8AAAAAAAAAAAAAAAAAAAAAAAD//////x+APwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH////nbB/////////8/AAAAgAAAAAAAAAAAAAAAAAAA//////8f/z//QwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8/AAD//////w8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////fwAA/////////wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8/AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8H////////////////////////////////HwAAAAAAAAD//////////w8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////////////////////////x8AfwAAAAAA////////////D/8DAAAAAAAAAAAAAAAAAAAAAAAAAADv////lv73CoTqlqqW9/de//v/D+77/w8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////////////////////////wAAAAD///////////////////////////////////////////////////////////////////////////////8BAP//////P////////////////////////////////////////////////////////////////////////////////////////////wf///////////////////////////////////////////////////////8DAP////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAA//////////////8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQIDAwQFBgcICQoLDA0OAwMDAwMDAw8DAwMDAwMDDwkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJEAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAgICAwICBAIFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdAgIeAgICAgICAh8gISIjAiQlJicoKQIqAgICAissAgICAi0uAgICLzAxMjMCAgICAgI0AgI1NjcCODk6Ozw9Pj85OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTlAOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OUECAkJDAgJERUZHSEkCSjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OUsCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI5OTk5TAICAgICTU5PUAICAlECUlMCAgICAgICAgICAgICVFUCAlYCVwICWFlaW1xdXl9gYQJiYwJkZWZnAmgCaWprbAICbW5vcAJxcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR1AgICAgICAnZ3OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTl4OTk5OTk5OTk5eXoCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAns5OXw5OX0CAgICAgICAgICAgICAgICAgICfgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn8CAgKAgYICAgICAgICAgICAgICAgKDhAICAgICAgICAgKFhnUCAocCAgKIAgICAgICAomKAgICAgICAgICAgICAouMAo2OAo+QkZKTlJWWApcCApiZmpsCAgICAgICAgICOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5nB0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAnQICAgKenwIEAgUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0CAh4CAgICAgICHyAhIiMCJCUmJygpAioCAgICoKGio6Slpi6nqKmqq6ytMwICAgICAq4CAjU2NwI4OTo7PD0+rzk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OUwCAgICArBOT7GFhnUCAocCAgKIAgICAgICAomKAgICAgICAgICAgICAouMsrOOAo+QkZKTlJWWApcCApiZmpsCAgICAgICAgICVVV1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFVVVVUVAFBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUBAAAAAAAAAAAAABBBEFVVVVVVV1VVVVVVVVVVVVFVVQAAQFT13VVVVVVVVVVVFQAAAAAAVVVVVfxdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFABQAFARQVVVVVVVVVRVRVVVVVVVVVQAAAAAAAEBVVVVVVVVVVVXVV1VVVVVVVVVVVVVVBQAAVFVVVVVVVVVVVVVVVVUVAABVVVFVVVVVVQUQAAABAVBVVVVVVVVVVVVVAVVVVVVV/////39VVVVQVQAAVVVVVVVVVVVVVQUAAAAAAAAAAAAAAAAAQFVVVVVVVVVVVVVVVVVFVAEAVFEBAFVVBVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVEAVRVUVUVVVUFVVVVVVVVRUFVVVVVVVVVVVVVVVVVVVRBFRRQUVVVVVVVVVVQUVVVQVVVVVVVVVVVVVVVVVVVVAEQVFFVVVVVBVVVVVVVBQBRVVVVVVVVVVVVVVVVVVUEAVRVUVUBVVUFVVVVVVVVVUVVVVVVVVVVVVVVVVVVVUVUVVVRVRVVVVVVVVVVVVVVVFRVVVVVVVVVVVVVVVVVBFQFBFBVQVVVBVVVVVVVVVVRVVVVVVVVVVVVVVVVVVUURAUEUFVBVVUFVVVVVVVVVVBVVVVVVVVVVVVVVVVVFUQBVFVBVRVVVQVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVRRUFRFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVRAEBVVRUAQFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVEAAFRVVQBAVVVVVVVVVVVVVVVVVVVVVVVVUFVVVVVVVRFRVVVVVVVVVVVVVVVVVQEAAEAABFUBAAABAAAAAAAAAABUVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAQQAQUFVVVVVVVVQBVRVVVUBVFVVRUFVUVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUBVVVVVVVVVVVVVVVVBVRVVVVVVVUFVVVVVVVVVQVVVVVVVVVVBVVVVX///ff//ddfd9bV11UQAFBVRQEAAFVXUVVVVVVVVVVVVVUVAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQVVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBVUVUVVAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVcVFFVVVVVVVVVVVVVVVVVVRQBARAEAVBUAABRVVVVVVVVVVVVVVVUAAAAAAAAAQFVVVVVVVVVVVVVVVQBVVVVVVVVVVVVVVVUAAFAFVVVVVVVVVVVVFQAAVVVVUFVVVVVVVVUFUBBQVVVVVVVVVVVVVVVVVUVQEVBVVVVVVVVVVVVVVVVVVQAABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAAAQAVFFVVFBVVVVVVVVVVVVVVVVVVVVVVQAAAAAAAAAAAAAAAAAAAABVVRUAVVVVVVVVBUBVVVVVVVVVVVVVVVUAAAAAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAAAAAAAABUVVVVVVVVVVVV9VVVVWlVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf1X11VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV9VVVVVVVfVVVVVVVVVVVVVVVV////VVVVVVVVVVVVVdVVVVVV1VVVVV1V9VVVVVV9VV9VdVVXVVVVVXVV9V11XVVd9VVVVVVVVVVXVVVVVVVVVVV31d9VVVVVVVVVVVVVVVVVVVX9VVVVVVVVV1VV1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVXVV1VVVVVVVVVVVVVVVVddVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVQVVVVVVVVVVVVVVVVVVVV/f///////////////19V1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAAAAAAAAAKqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqVVVVqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpaVVVVVVVVqqqqqqqqqqqqqqqqqqoKAKqqqmqpqqqqqqqqqqqqqqqqqqqqqqqqqqpqgaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpVqaqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqKqqqqqqqqqqqmqqqqqqqqqqqqqqqqqqqqqqqqqqqqpVVZWqqqqqqqqqqqqqqmqqqqqqqqqqqqqqVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqVVVVVVVVVVVVVVVVVVVVVaqqqlaqqqqqqqqqqqqqqqqqalVVVVVVVVVVVVVVVVVfVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFUAAAFBVVVVVVVVVBVVVVVVVVVVVVVVVVVVVVVVVVVVVUFVVVUVFFVVVVVVVVUFVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQVVVVVVVVAAAAAFBVRRVVVVVVVVVVVVUFAFBVVVVVVRUAAFBVVVWqqqqqqqqqVkBVVVVVVVVVVVVVVRUFUFBVVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVQFAQUFVVRVVVVRVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVUEFFQFUVVVVVVVVVVVVVVQVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVFFVVVVVqqqqqqqqqqqqVVVVAAAAAABAFQAAAAAAAAAAAAAAAFVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAPCqqlpVAAAAAKqqqqqqqqqqaqqqqqpqqlVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRWpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpWVVVVVVVVVVVVVVVVVVUFVFVVVVVVVVVVVVVVVVVVVapqVVUAAFRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBUBVAUFVAFVVVVVVVVVVVVVAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQVVVVVVVVdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVRVVVVVVVVVVVVVVVVVVVVVVVVVAVVVVVVVVVVVVVVVVVVVVVVVBQAAVFVVVVVVVVVVVVVVBVBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVVVQAAAEBVVVVVVVVVVVVVFFRVFVBVVVVVVVVVVVVVVRVAQVVFVVVVVVVVVVVVVVVVVVVVQFVVVVVVVVVVFQABAFRVVVVVVVVVVVVVVVVVVRVVVVVQVVVVVVVVVVVVVVVVBQBABVUBFFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVAEVUVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVFQBAVVVVVVVQVVVVVVVVVVVVVVVVVRVEVFVVVVUVVVVVBQBUAFRVVVVVVVVVVVVVVVVVVVVVAAAFRFVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVFABEEQRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRUFUFUQVFVVVVVVVVBVVVVVVVVVVVVVVVVVVVVVVVVVVRUAQBFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVRABBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAQUQAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFQAAQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFUVBBFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUABVVUVVVVVVVVVQEAQFVVVVVVVVVVVRUABEBVFVVVAUABVVVVVVVVVVVVVQAAAABAUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAQAAQVVVVVVVVVVVVVVVVVVVVVVVVVVUFAAAAAAAFAARBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAUBFEAAAVVVVVVVVVVVVVVVVVVVVVVVVUBFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVFVVQFVVVVVVVVVVVVVVVQVAVURVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBUAAABQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAVFVVVVVVVVVVVVVVVVVVAEBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVRVAVVVVVVVVVVVVVVVVVVVVVVVVVapUVVVaVVVVqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqpaVVVVVVVVVVVVVaqqVlVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVaqpqmmqqqqqqqqqqmpVVVVlVVVVVVVVVWpZVVVVqlVVqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpVVVVVVVVVVUEAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAAAAAAAAAAAAAFAAAAAAAEBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVURUAUAAAAAQAEAVVVVVVVVVQVQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBVRVVVVVVVVVVVVVVVVVVQAAAAAAAAAAAAAAAABAFQAAAAAAAAAAAAAAAFRVUVVVVVRVVVVVFQABAAAAVVVVVVVVVVVVVVVVVVVVVVVVVVUAQAAAAAAUABAEQFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAEBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAQFVVVVVVVVVVVVVVVVVVV1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVXVVVVVVVVVVVVVVVVVVVVVdf3/f1VVVVVVVVVVVVVVVVVVVVVVVfX///////9uVVVVqqq6qqqqqur6v79VqqpWVV9VVVWqWlVVVVVVVf//////////V1VV/f/f///////////////////////3//////9VVVX/////////////f9X/VVVV/////1dX//////////////////////9/9//////////////////////////////////////////////////////////////X////////////////////X1VV1X////////9VVVVVdVVVVVVVVX1VVVVXVVVVVVVVVVVVVVVVVVVVVVVVVVXV////////////////////////////VVVVVVVVVVVVVVVV//////////////////////9fVVd//VX/VVXVV1X//1dVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX///9VV1VVVVVVVf//////////////f///3/////////////////////////////////////////////////////////////9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV////V///V1X//////////////9//X1X1////Vf//V1X//1dVqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlpVVVVVVVVVVVmWVWGqpVmqVVVVVVWVVVVVVVVVVZVVVQAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAABVVVVVVZVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRUAlmpaWmqqBUCmWZVlVVVVVVVVVVUAAAAAVVZVValWVVVVVVVVVVVVVlVVVVVVVVVVAAAAAAAAAABUVVVVlVlZVVVlVVVpVVVVVVVVVVVVVVWVVpVqqqqqVaqqWlVVVVlVqqqqVVVVVWVVVVpVVVVVpWVWVVVVlVVVVVVVVaaWmpZZWWWplqqqZlWqVVpZVVpWZVVVVWqqpaVaVVVVpapaVVVZWVVVWVVVVVVVlVVVVVVVVVVVVVVVVVVVVVVVVVVVZVX1VVVVaVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqVaqqqqqqqqqqqlVVVaqqqqqlWlVVmqpaVaWlVVpapZalWlVVVaVaVZVVVVV9VWlZpVVfVWZVVVVVVVVVVWZV////VVVVmppqmlVVVdVVVVVV1VVVpV1V9VVVVVW9Va+quqqrqqqaVbqq+q66rlVd9VVVVVVVVVVXVVVVVVlVVVV31d9VVVVVVVVVpaqqVVVVVVVV1VdVVVVVVVVVVVVVVVVXrVpVVVVVVVVVVVWqqqqqqqqqaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqgAAAMCqqlpVAAAAAKqqqqqqqqqqaqqqqqpqqlVVVVVVVVVVVVVVVQVUVVVVVVVVVVVVVVVVVVVVqmpVVQAAVFmqqmpVqqqqqqqqqlqqqqqqqqqqqqqqqqqqqlpVqqqqqqqqqrr+/7+qqqqqVlVVVVVVVVVVVVVVVVX1////////RW1wdHlJbnZhbGlkRGlnaXRQb3NPdmVyZmxvd05lZ092ZXJmbG93WmVybygpAAAAMgYAAAwAAAAEAAAAOgYAAD0GAAA8BgAAMDEyMzQ1Njc4OWFiY2RlZi9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3V1aWQtMS4xNi4wL3NyYy9mbXQucnMAmLAoAFsAAAC7AAAADQAAAJiwKABbAAAAswAAABUAAACYsCgAWwAAALYAAAANAAAAmLAoAFsAAAC3AAAADQAAAEpzVmFsdWUoKQAAADSxKAAIAAAAPLEoAAEAAAD//////////1CxKAAAAAAAAAAAAAAAAABUcmllZCB0byBzaHJpbmsgdG8gYSBsYXJnZXIgY2FwYWNpdHlosSgAJAAAAC9ydXN0Yy85MGIzNWE2MjM5YzNkOGJkYWJjNTMwYTZhMDgxNmY3ZmY4OWEwYWFmL2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnOUsSgATAAAAKYCAAAJAAAAAAAAAAAAAAABAAAATwoAAGNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24vcnVzdGMvOTBiMzVhNjIzOWMzZDhiZGFiYzUzMGE2YTA4MTZmN2ZmODlhMGFhZi9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAAAARrIoAE8AAAAEAQAAGgAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3dhc20tYmluZGdlbi0wLjIuMTAwL3NyYy9jYWNoZS9pbnRlcm4ucnMAAACosigAbQAAABoAAAArAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvd2FzbS1iaW5kZ2VuLWZ1dHVyZXMtMC40LjUwL3NyYy9xdWV1ZS5ycwAAACizKABtAAAAJQAAAC4AAAAosygAbQAAACgAAAApAAAAKLMoAG0AAAA+AAAAGgAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3dhc20tYmluZGdlbi1mdXR1cmVzLTAuNC41MC9zcmMvdGFzay9zaW5nbGV0aHJlYWQucnMAAADIsygAeQAAACIAAAAVAAAAUQoAAFIKAABTCgAAVAoAAMizKAB5AAAAZwAAACUAAABjbG9zdXJlIGludm9rZWQgcmVjdXJzaXZlbHkgb3IgYWZ0ZXIgYmVpbmcgZHJvcHBlZAAAVQoAAAQAAAAEAAAAVgoAAFcKAABMYXp5IGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAALy0KAAqAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvb25jZV9jZWxsLTEuMjEuMS9zcmMvbGliLnJz8LQoAGAAAAAIAwAAGQAAAHJlZW50cmFudCBpbml0AABgtSgADgAAAPC0KABgAAAAegIAAA0AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQICAgAAAAEBAgICCAAAAA0AAAAPAAAA4+kgAOvpIAD46SAAAAAAAAEAAAABAAAACAAAAA0AAAAPAAAA4+kgAOvpIAD46SAACAAAAA0AAAAPAAAA4+kgAOvpIAD46SAABgAAAAYAAAAIAAAABwAAAGB/IACbOygAZn8gAG5/IAAQriAAEq4gABSuIAAWriAAGK4gABquIAAcriAAHq4gACCuIAAiriAAJK4gACauIAAoriAAKq4gACyuIAAuriAAMK4gAOy1IAD8tSAADLYgABy2IAActiAALLYgADy2IABMtiAAXLYgAGy2IAB8tiAAjLYgAJy2IACstiAAvLYgAMy2IADctiAA7LYgAPy2IABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAGyuIAB8riAAjK4gAJyuIACsriAAvK4gAMyuIADcriAA7K4gAPyuIAAMryAAHK8gACyvIAA8ryAATK8gAFyvIABsryAAfK8gAIyvIACcryAArK8gALyvIADMryAAzK8gANyvIADsryAA/K8gAAywIAAcsCAALLAgADywIABMsCAAXLAgAGywIAB8sCAAfLAgAIywIACcsCAArLAgALywIADMsCAAzLAgANywIADssCAA/LAgAAyxIAAcsSAALLEgADyxIABMsSAAXLEgAGyxIABssSAAfLEgAIyxIACcsSAArLEgALyxIADMsSAA3LEgAOyxIAD8sSAADLIgAByyIAAssiAAPLIgAEyyIABcsiAAbLIgAHyyIAB8siAAjLIgAJyyIACssiAAvLIgAMyyIADcsiAA3LIgAOyyIAD8siAADLMgAByzIAAssyAAHLEgADyzIABMsyAAXLMgAGyzIAB8syAAjLMgAJyzIACssyAAvLMgAMyzIADcsyAA7LMgAPyzIAAMtCAAHLQgACy0IAA8tCAATLQgAFy0IABstCAAfLQgAIy0IACctCAArLQgALy0IADMtCAA3LQgAOy0IAD8tCAADLUgABy1IAAstSAAPLUgAEy1IABctSAAbLUgAHy1IACMtSAAnLUgAKy1IAC8tSAAzLUgANy1IAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAPqIgAEaiIABOoiAAVqIgAF6iIABmoiAAbqIgAHaiIAB+oiAAhqIgAI6iIACWoiAAnqIgAKaiIACuoiAAtqIgAL6iIADGoiAAzqIgANaiIADeoiAA5qIgAO6iIAD2oiAA/qIgAAajIAAOoyAAFqMgAB6jIAAmoyAALqMgADajIAA+oyAARqMgAE6jIABWoyAAXqMgAGajIABuoyAAdqMgAH6jIACGoyAAjqMgAJajIACeoyAApqMgAK6jIAC2oyAAvqMgAMajIADOoyAA1qMgAN6jIADmoyAA7qMgAPajIAD+oyAABqQgAA6kIAAWpCAAHqQgACakIAAupCAANqQgAD6kIABGpCAATqQgAFakIABepCAAZqQgAG6kIAB2pCAAfqQgAIakIACOpCAAlqQgAJ6kIACmpCAArqQgALakIAC+pCAAxqQgAM6kIADWpCAA3qQgAOakIADupCAA9qQgAP6kIAAGpSAADqUgABalIAAepSAAJqUgAC6lIAA2pSAAPqUgAEalIABOpSAAVqUgAF6lIABmpSAAbqUgAHalIAB+pSAAhqUgAI6lIACWpSAAnqUgAKalIACupSAAtqUgAL6lIADGpSAAzqUgANalIADepSAA5qUgAO6lIAD2pSAA/qUgAAamIAAOpiAAFqYgAB6mIAAmpiAALqYgADamIACsniAAsp4gALieIAC+niAAxJ4gAMqeIADQniAA1p4gANyeIADiniAA6J4gAO+eIAD2niAA/Z4gAASfIAALnyAAEp8gABmfIAAgnyAAJ58gAC6fIAA1nyAAPJ8gAEOfIABKnyAAUZ8gAFifIABfnyAAZp8gAG2fIAB0nyAAe58gAIKfIACJnyAAkJ8gAJefIACenyAApZ8gAKyfIACznyAAup8gAMGfIADInyAAz58gANafIADdnyAA5J8gAOufIADynyAA+Z8gAACgIAAHoCAADqAgABWgIAAcoCAAI6AgACqgIAAxoCAAOKAgAD+gIABGoCAATaAgAFSgIABboCAAYqAgAGmgIABwoCAAd6AgAH6gIACFoCAAjKAgAJOgIACaoCAAoaAgAKigIACvoCAAtqAgAL2gIADEoCAAy6AgANKgIADZoCAA4KAgAOegIADuoCAA9aAgAPygIAADoSAACqEgABGhIAAYoSAAH6EgACahIAAtoSAANKEgADuhIABCoSAASaEgAFChIABXoSAAXqEgAGahIABuoSAAdqEgAH6hIACGoSAAjqEgAJahIACeoSAApqEgAK6hIAC2oSAAvqEgAMahIADOoSAA1qEgAN6hIADmoSAA7qEgAPahIAD+oSAABqIgAA6iIAAWoiAAHqIgACaiIAAuoiAANqIgAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAMq4gADSuIAA2riAAOK4gADquIAA8riAAPq4gAECuIABCriAARK4gAEeuIABKriAATa4gAFCuIABTriAAVq4gAFmuIADstSAA/LUgAAy2IAActiAAHLYgACy2IAA8tiAATLYgAFy2IABstiAAfLYgAIy2IACctiAArLYgALy2IADMtiAA3LYgAOy2IAD8tiAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABcriAAXK4gAFyuIABsriAAfK4gAIyuIACcriAArK4gALyuIADMriAA3K4gAOyuIAD8riAADK8gAByvIAAsryAAPK8gAEyvIABcryAAbK8gAHyvIACMryAAnK8gAKyvIAC8ryAAzK8gAMyvIADcryAA7K8gAPyvIAAMsCAAHLAgACywIAA8sCAATLAgAFywIABssCAAfLAgAHywIACMsCAAnLAgAKywIAC8sCAAzLAgAMywIADcsCAA7LAgAPywIAAMsSAAHLEgACyxIAA8sSAATLEgAFyxIABssSAAbLEgAHyxIACMsSAAnLEgAKyxIAC8sSAAzLEgANyxIADssSAA/LEgAAyyIAAcsiAALLIgADyyIABMsiAAXLIgAGyyIAB8siAAfLIgAIyyIACcsiAArLIgALyyIADMsiAA3LIgANyyIADssiAA/LIgAAyzIAAcsyAALLMgAByxIAA8syAATLMgAFyzIABssyAAfLMgAIyzIACcsyAArLMgALyzIADMsyAA3LMgAOyzIAD8syAADLQgABy0IAAstCAAPLQgAEy0IABctCAAbLQgAHy0IACMtCAAnLQgAKy0IAC8tCAAzLQgANy0IADstCAA/LQgAAy1IAActSAALLUgADy1IABMtSAAXLUgAGy1IAB8tSAAjLUgAJy1IACstSAAvLUgAMy1IADctSAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAANCpIADYqSAA4KkgAOipIADwqSAA+KkgAACqIAAIqiAAEKogABiqIAAgqiAAKKogADCqIAA4qiAAQKogAEiqIABQqiAAWKogAGCqIABoqiAAcKogAHiqIACAqiAAiKogAJCqIACYqiAAoKogAKiqIACwqiAAuKogAMCqIADIqiAA0KogANiqIADgqiAA6KogAPCqIAD4qiAAAKsgAAirIAAQqyAAGKsgACCrIAAoqyAAMKsgADirIABAqyAASKsgAFCrIABYqyAAYKsgAGirIABwqyAAeKsgAICrIACIqyAAkKsgAJirIACgqyAAqKsgALCrIAC4qyAAwKsgAMirIADQqyAA2KsgAOCrIADoqyAA8KsgAPirIAAArCAACKwgABCsIAAYrCAAIKwgACisIAAwrCAAOKwgAECsIABIrCAAUKwgAFisIABgrCAAaKwgAHCsIAB4rCAAgKwgAIisIACQrCAAmKwgAKCsIACorCAAsKwgALisIADArCAAyKwgANCsIADYrCAA4KwgAOisIADwrCAA+KwgAACtIAAIrSAAEK0gABitIAAgrSAAKK0gADCtIAA4rSAAQK0gAEitIABQrSAAWK0gAGCtIABorSAAcK0gAHitIACArSAAiK0gAJCtIACYrSAAoK0gAKitIACwrSAAuK0gAMCtIADIrSAAPqYgAESmIABKpiAAUKYgAFamIABcpiAAYqYgAGimIABupiAAdKYgAHqmIACBpiAAiKYgAI+mIACWpiAAnaYgAKSmIACrpiAAsqYgALmmIADApiAAx6YgAM6mIADVpiAA3KYgAOOmIADqpiAA8aYgAPimIAD/piAABqcgAA2nIAAUpyAAG6cgACKnIAAppyAAMKcgADenIAA+pyAARacgAEynIABTpyAAWqcgAGGnIABopyAAb6cgAHanIAB9pyAAhKcgAIunIACSpyAAmacgAKCnIACnpyAArqcgALWnIAC8pyAAw6cgAMqnIADRpyAA2KcgAN+nIADmpyAA7acgAPSnIAD7pyAAAqggAAmoIAAQqCAAF6ggAB6oIAAlqCAALKggADOoIAA6qCAAQaggAEioIABPqCAAVqggAF2oIABkqCAAa6ggAHKoIAB5qCAAgKggAIeoIACOqCAAlaggAJyoIACjqCAAqqggALGoIAC4qCAAv6ggAMaoIADNqCAA1KggANuoIADiqCAA6aggAPCoIAD4qCAAAKkgAAipIAAQqSAAGKkgACCpIAAoqSAAMKkgADipIABAqSAASKkgAFCpIABYqSAAYKkgAGipIABwqSAAeKkgAICpIACIqSAAkKkgAJipIACgqSAAqKkgALCpIAC4qSAAwKkgAMipIAALAAAACAAAAAQAAAAGAAAABgAAABQAAACt0yAAuNMgAMDTIADE0yAAytMgANDTIAADAAAACAAAAAQAAAAl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AAAAAgAAAAIAAAACAAAAAgAAAEo+KABMPigATj4oAFE+KACDVSgAVD4oAIJVKABWPigAWD4oAFo+KABcPigAukIoALtCKADzVSgAr1goAF8+KABgPigAYT4oAGI+KABnPigAYz4oAGU+KABpPigAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAAEAAAAAgAAAAIAAAACAAAAAwAAAAMAAAADAAAAAwAAAOxVKABVPygAVz8oAFk/KABbPygAXT8oAF8/KABiPygAZT8oAGk/KABrPygAbT8oAG8/KAByPygAdT8oAHg/KADSVSgA2EcoAO5VKADgRygAHkkoANRHKADLQigAzFUoAPpSKADiVSgAR0MoAEJDKADFVSgAi0IoAGZDKACPQigAIUMoACtDKABNQygANT8oAF9DKABoQygA9FUoAPdVKAD4QigAOUMoAPtCKAAbQygACEMoAAJDKAAVQygADkMoADRDKADkRygAvEIoAAVWKAB0tCYAf7QmAFZDKAB4tCYAmkIoAKNCKACUQigACAAAAAIAAAAFAAAABAAAAAIAAAAEAAAABgAAAAYAAAAFAAAACAAAAAYAAAAFAAAABwAAAAQAAAACAAAABQAAAAYAAAAJAAAACQAAAAoAAAAHAAAABwAAAAMAAAADAAAAAwAAAAkAAAAHAAAABgAAAAYAAAAGAAAABgAAAAcAAAAFAAAABgAAAAkAAAAIAAAABAAAAAYAAAAJAAAABwAAAAkAAAAHAAAABgAAAPVSKAAXSSgAMEkoAGJJKABpSSgAcUkoADRJKABnSSgAAkkoAAxJKAAGSSgA7VIoAABJKAAqSSgAXEkoACBJKAAJSSgARD4oAEc+KACGQigAJUkoABNJKACBQigAIEcoANBBKABEQSgArUIoANpHKADqRygA1UEoABxJKAD4RigAtEIoACdDKABPPygABQAAAAUAAAAEAAAABQAAAAgAAAAIAAAABwAAAAIAAAAEAAAABwAAAAMAAAAIAAAAAgAAAAYAAAAGAAAABQAAAAMAAAADAAAAAwAAAAUAAAAFAAAABAAAAAMAAAAEAAAABQAAAAUAAAAHAAAABgAAAAYAAAAFAAAAAgAAAAoAAAAGAAAABAAAAAYAAAAKAAAABgAAAAUAAACBMCgAizAoAJEwKACSMigAmDIoAJ4yKAAGBgYGBwcHBwgICAkJCgoKAwQFAQIHBwoBAAAAEAAAABAAAAAIAAAACAAAAAgAAAAQAAAAFAAAABQAAAAMAAAADAAAAAwAAAAUAAAAEAAAABAAAAAIAAAACAAAAAgAAAAQAAAAFAAAABQAAAAMAAAADAAAAAwAAAAUAAAAEAAAABAAAAAIAAAACAAAAAgAAAAQAAAAFAAAABQAAAAMAAAADAAAAAwAAAAUAAAAIAAAABgAAAAYAAAAGAAAABAAAAAQAAAACAAAAAgAAAAIAAAABAAAAAQAAAAFAAAA2SQoAN0kKADhJCgADAAAABAAAAAPAAAADwAAABAAAAAPAAAADwAAAA8AAAANAAAAEgAAAA0AAAAOAAAAEgAAAPIlKAD+JSgADiYoAB0mKAAsJigAPCYoAEsmKABaJigAaSYoAHYmKACIJigAlSYoAKMmKAAGAAAACQAAAAcAAABjMSgA0CQoAFwxKAAQAAAAEAAAAAgAAAAIAAAACAAAABAAAAAQAAAACAAAAAgAAAAIAAAACgAAAAYAAAAFAAAAgTAoAIswKACRMCgAkjIoAJgyKACeMigAkjIoAJgyKACeMigABgAAAAkAAAAHAAAAYzEoANAkKABcMSgABAAAAAQAAAAFAAAA2SQoAN0kKADhJCgADAAAABAAAAAPAAAADwAAABAAAAAPAAAADwAAAA8AAAANAAAAEgAAAA0AAAAOAAAAEgAAAPIlKAD+JSgADiYoAB0mKAAsJigAPCYoAEsmKABaJigAaSYoAHYmKACIJigAlSYoAKMmKAAKAAAABgAAAAUAAACBMCgAizAoAJEwKAAGBgYGBwcHBwgICAkJCgoKAwQFAQIHBwsBBgYGBgcHBwcICAgJCQoKCgMEBQECBwcLAQYGBgYHBwcHCAgICQkKCgoDBAUBAgcHCwEGBgYGBwcHBwgICAkJCgoKAwQFAQIHBwsBBgYGBgcHBwcICAgJCQoKCgMEBQECBwcLAQAAAAQAAAAEAAAABQAAANkkKADdJCgA4SQoAAwAAAAQAAAADwAAAA8AAAAQAAAADwAAAA8AAAAPAAAADQAAABIAAAANAAAADgAAABIAAADyJSgA/iUoAA4mKAAdJigALCYoADwmKABLJigAWiYoAGkmKAB2JigAiCYoAJUmKACjJigABgAAAAkAAAAHAAAAYzEoANAkKABcMSgACgAAAAYAAAAFAAAAgTAoAIswKACRMCgAkjIoAJgyKACeMigA3P////j////Y////+P///9D////Q////4P////z////c/////P///9T////U////EAAAABAAAAAIAAAACAAAAAgAAAAQAAAAEAAAAAgAAAAIAAAACAAAAAIAAAACAAAAAwAAAAMAAAABAAAAAgAAAAEAAAACAAAAAgAAAAIAAAADAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAAKAAAAAgAAAAIAAABKPigATD4oAE4+KABRPigAg1UoAFQ+KACCVSgAVj4oAFg+KABaPigAXD4oALpCKAC7QigA81UoAK9YKABfPigAYD4oAGE+KABiPigAYz4oAGU+KAAcSSgA+EYoAGc+KABpPigAEAAAABAAAAAEAAAACAAAACgAAAAUAAAAFAAAABQAAAAUAAAACAAAAAwAAAAsAAAAGAAAABgAAAAUAAAAFAAAAAgAAAAMAAAALAAAABgAAAAYAAAAAwAAAAMAAAAFAAAARD4oAEc+KACGQigAOAAAACgAAAAYAAAAKAAAABgAAAAUAAAABAAAABwAAAAoAAAAPAAAACwAAAAcAAAALAAAABwAAAAYAAAACAAAACAAAAAsAAAAEAAAABAAAAAIAAAACAAAAAgAAAA8AAAALAAAABwAAAAsAAAAHAAAABgAAAAIAAAAIAAAACwAAAABAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAQAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAA7FUoAFU/KABXPygAWT8oAFs/KABdPygAXz8oAGI/KABlPygAaT8oAGs/KABtPygAbz8oAHI/KAB1PygAeD8oABAAAAAQAAAACAAAAAgAAAAIAAAAEAAAABAAAAAIAAAACAAAAAgAAAAUAAAAFAAAAAwAAAAMAAAADAAAABAAAAAQAAAACAAAAAgAAAAIAAAAAQAAAAEAAAABAAAAAQAAAAYAAAAEAAAABgAAALtCKAC6QigA61UoAE4/KAC0QigAJ0MoAE8/KAANAAAAEQAAAAcAAADERCgAxUwoAF1HKAAQAAAAEAAAAAgAAAAIAAAACAAAABAAAAAUAAAAFAAAAAwAAAAMAAAADAAAABQAAAAQAAAAEAAAAAgAAAAIAAAACAAAABQAAAAUAAAADAAAAAwAAAAMAAAAKAAAABAAAABAAAAALAAAABQAAABEAAAAEAAAABAAAAAIAAAACAAAAAgAAAAQAAAABAAAAAQAAAAIAAAACAAAABgAAAAYAAAABQAAAAwAAAALAAAACwAAAAQAAABAsCgARbAoAFGwKABcsCgAZ7AoAAAAAAAAAPA/AAAAAAAA+D8AAAAAAAAAAAbQz0Pr/Uw+AAAAAAAAAAAAAABAA7jiPwBBiMOjAQv4NgAAAAAAAAAAAAAAAAAAAAB4BgAAAAAAAAAAAAAAAAAAegYAAAIAAAAAAAAAewYAAAIAAAAAAAAAfAYAAAIAAAAAAAAAfQYAAAIAAAAAAAAAfgYAAAMAAAAAAAAAAQAAgAAAAAAAAAAAfQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAigcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIsHAAAAAAAAAAAAAAAAAAAAAAAAjAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAngcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAogcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAowcAAAAAAAAAAAAAAAAAAAAAAAAAAAAApAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAApQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAApgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAApwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAArAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAArQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAArgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAArwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALEHAAAAAAAAAAAAAAAAAAAAAAAAsgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAswcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAApAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALoHAAAAAAAAAAAAAAAAAAAAAAAAuwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAigcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMkHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMoHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE4IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE4IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFIIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFMIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFUIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFYIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFcIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFkIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFoIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFsIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF4IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGIIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGMIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGUIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGYIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGcIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGkIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGsIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG4IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHIIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHMIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHUIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHYIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHcIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL0HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI0HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI4HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI8HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJIHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJMHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJUHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJYHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJkHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJsHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJwHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ0HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ4HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ8HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKEHAAAAAAAAAAAAAAAAAAAAAAAAAAAAALQHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKIHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKUHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKYHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKcHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKsHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKwHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK0HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK4HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK8HAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAALkHAAAAAAAAAAAAAAAAAAAAAAAAAAAAANIIAAAAAAAAAAAAAAAAAAAAAAAAAAAAANMIAAAAAAAAAAAAAAAAAAAAAAAAAAAAANQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAANUIAAAAAAAAAAAAAAAAAAAAAAAAAAAAANYIAAAAAAAAAAAAAAAAAAAAAAAAAAAAANcIAAAAAAAAAAAAAAAAAAAAAAAAAAAAANgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAANkIAAAAAAAAAAAAAAAAAAAAAAAAAAAAANoIAAAAAAAAAAAAAAAAAAAAAAAAAAAAANsIAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJcHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN4IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAALIHAAAAAAAAAAAAAAAAAAAAAAAAAAAAALMHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOIIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOMIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOUIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOYIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOcIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKQHAAAAAAAAAAAAAAAAAAAAAAAAAAAAALUHAAAAAAAAAAAAAAAAAAAAAAAAAAAAALYHAAAAAAAAAAAAAAAAAAAAAAAAAAAAALcHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOkIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOoIAAAAAAAAAAAAAAAAAAAAAAAAAAAAALgHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOsIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO4IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPIIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPMIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPUIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPYIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKMHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKoHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJoHAAAAAAAAAAAAAAAAAIAAAAAAAAAAACwJAAAAAAAAAAAAgAAAAAAAAAAALQkAAAAAAAAAAACAAAAAAAAAAAAuCQAAAAAAAAAAAIAAAAAAAAAAAC8JAAAAAAAAAAAAgAAAAAAAAAAAMAkAAAAAAAAAAACAAAAAAAAAAAAxCQAAAAAAAAAAAIAAAAAAAAAAADIJAAAAAAAAAAAAgAAAAAAAAAAAMwkAAAAAAAAAAACAAAAAAAAAAAA0CQAAAAAAAAAAAIAAAAAAAAAAADUJAAAAAAAAAAAAgAAAAAAAAAAANgkAAAAAAAAAAACAAAAAAAAAAAA3CQAAAAAAAAAAAIAAAAAAAAAAADgJAAAAAAAAAAAAgAAAAAAAAAAAOQkAAAAAAAAAAACAAAAAAAAAAAA6CQAAAAAAAAAAAIAAAAAAAAAAADsJAAAAAAAAAAAAgAAAAAAAAAAAPAkAAAAAAAAAAACAAAAAAAAAAAA9CQAAAAAAAAAAAIAAAAAAAAAAAD4JAAAAAAAAAAAAgAAAAAAAAAAAPwkAAAAAAAAAAACAAAAAAAAAAABACQAAAAAAAAAAAIAAAAAAAAAAAEEJAAAAAAAAAAAAgAAAAAAAAAAAQgkAAAAAAAAAAACAAAAAAAAAAABDCQAAAAAAAAAAAIAAAAAAAAAAAEQJAAAAAAAAAAAAgAAAAAAAAAAARQkAAAAAAAAAAACAAAAAAAAAAABGCQAAAAAAAAAAAIAAAAAAAAAAAEcJAAAAAAAAAAAAgAAAAAAAAAAASAkAAAAAAAAAAACAAAAAAAAAAABJCQAAAAAAAAAAAIAAAAAAAAAAAEoJAAAAAAAAAAAAgAAAAAAAAAAASwkAAAAAAAAAAACAAAAAAAAAAABMCQAAAAAAAAAAAIAAAAAAAAAAAE0JAAAAAAAAAAAAgAAAAAAAAAAATgkAAAAAAAAAAACAAAAAAAAAAABPCQAAAAAAAAAAAIAAAAAAAAAAAFAJAAAAAAAAAAAAgAAAAAAAAAAAUQkAAAAAAAAAAACAAAAAAAAAAABSCQAAAAAAAAAAAIAAAAAAAAAAAFMJAAAAAAAAAAAAgAAAAAAAAAAAVAkAAAAAAAAAAACAAAAAAAAAAABVCQAAAAAAAAAAAIAAAAAAAAAAAFYJAAAAAAAAAAAAgAAAAAAAAAAAVwkAAAAAAAAAAACAAAAAAAAAAABYCQAAAAAAAAAAAIAAAAAAAAAAAFkJAAAAAAAAAAAAgAAAAAAAAAAAWgkAAAAAAAAAAACAAAAAAAAAAABbCQAAAAAAAAAAAIAAAAAAAAAAAFwJAAAAAAAAAAAAgAAAAAAAAAAAXQkAAAAAAAAAAACAAAAAAAAAAABeCQAAAAAAAAAAAIAAAAAAAAAAAF8JAAAAAAAAAAAAgAAAAAAAAAAAYAkAAAAAAAAAAACAAAAAAAAAAABhCQAAAAAAAAAAAIAAAAAAAAAAAGIJAAAAAAAAAAAAgAAAAAAAAAAAYwkAAAAAAAAAAACAAAAAAAAAAABkCQAAAAAAAAAAAIAAAAAAAAAAAGUJAAAAAAAAAAAAgAAAAAAAAAAAZgkAAAAAAAAAAACAAAAAAAAAAABnCQAAAAAAAAAAAIAAAAAAAAAAAGgJAAAAAAAAAAAAgAAAAAAAAAAAaQkAAAAAAAAAAACAAAAAAAAAAABqCQAAAAAAAAAAAIAAAAAAAAAAAGsJAAAAAAAAAAAAgAAAAAAAAAAAbAkAAAAAAAAAAACAAAAAAAAAAABtCQAAAAAAAAAAAIAAAAAAAAAAAG4JAAAAAAAAAAAAgAAAAAAAAAAAbwkAAAAAAAAAAACAAAAAAAAAAABwCQAAAAAAAAAAAIAAAAAAAAAAAHEJAAAAAAAAAAAAgAAAAAAAAAAAcgkAAAAAAAAAAACAAAAAAAAAAABzCQAAAAAAAAAAAIAAAAAAAAAAAHQJAAAAAAAAAAAAgAAAAAAAAAAAdQkAAAAAAAAAAACAAAAAAAAAAAB2CQAAAAAAAAAAAIAAAAAAAAAAAHcJAAAAAAAAAAAAgAAAAAAAAAAAeAkAAAAAAAAAAACAAAAAAAAAAAB5CQAAAAAAAAAAAIAAAAAAAAAAAHoJAAAAAAAAAAAAgAAAAAAAAAAAewkAAAAAAAAAAACAAAAAAAAAAAB8CQAAAAAAAAAAAIAAAAAAAAAAAH0JAAAAAAAAAAAAgAAAAAAAAAAAfgkAAAAAAAAAAACAAAAAAAAAAAB/CQAAAAAAAAAAAIAAAAAAAAAAAIAJAAAAAAAAAAAAgAAAAAAAAAAAgQkAAAAAAAAAAACAAAAAAAAAAACCCQAAAAAAAAAAAIAAAAAAAAAAAIMJAAAAAAAAAAAAgAAAAAAAAAAAhAkAAAAAAAAAAACAAAAAAAAAAACFCQAAAAAAAAAAAIAAAAAAAAAAAIYJAAAAAAAAAAAAgAAAAAAAAAAAhwkAAAAAAAAAAACAAAAAAAAAAACICQAAAAAAAAAAAIAAAAAAAAAAAIkJAAAAAAAAAAAAgAAAAAAAAAAAigkAAAAAAAAAAACAAAAAAAAAAACLCQAAAAAAAAAAAIAAAAAAAAAAAIwJAAAAAAAAAAAAgAAAAAAAAAAAjQkAAAAAAAAAAACAAAAAAAAAAACOCQAAAAAAAAAAAIAAAAAAAAAAAI8JAAAAAAAAAAAAgAAAAAAAAAAAkAkAAAAAAAAAAACAAAAAAAAAAACRCQAAAAAAAAAAAIAAAAAAAAAAAJIJAAAAAAAAAAAAgAAAAAAAAAAAkwkAAAAAAAAAAAAAAAAAAAAAAAC8BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8BwAAAAAAAAAAAAAAAAAAAAAAAP4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAUAoAAABKBG5hbWUBQwIvHl9fd2JpbmRnZW5fY2xvc3VyZV93cmFwcGVyODc4NfA6H19fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIASAlwcm9kdWNlcnMBDHByb2Nlc3NlZC1ieQIGd2FscnVzBjAuMjMuMwx3YXNtLWJpbmRnZW4TMC4yLjEwMCAoMjQwNWVjMmI0KQ==", "base64"); + var bytes = Buffer2.from("AGFzbQEAAAAB5gRNYAAAYAABf2AAAX5gAX8AYAF/AX9gAX8BfmACf38AYAJ/fwF/YAJ/fwF+YAJ/fwF8YAN/f38AYAN/f38Bf2ADf39/AX5gBH9/f38AYAR/f39/AX9gBH9/f38BfmAFf39/f38AYAV/f39/fwF/YAZ/f39/f38AYAZ/f39/f38Bf2AHf39/f39/fwBgB39/f39/f38Bf2AIf39/f39/f38AYAh/f39/f39/fwF/YAt/f39/f39/f39/fwF/YA1/f39/f39/f39/f39/AGAOf39/f39/f39/f39/f38Bf2APf39/f39/f39/f39/f39/AX9gE39/f39/f39/f39/f39/f39/f38Bf2AXf39/f39/f39/f39/f39/f39/f39/f38Bf2AJf39/f39/fn5+AGAFf39/f34AYAZ/f39/fn8AYAR/f39+AGAGf39/fn9/AGADf39+AGADf39+AX9gBH9/fn8AYAR/f35/AX9gBX9/fn9/AGAGf39+f35/AGAFf399f38AYAV/f3x/fwBgAn9+AGACf34Bf2ADf35/AGADf35/AX9gBH9+f38AYAR/fn9+AX5gA39+fgBgA39+fgF/YAR/fn5/AGAFf35+fn4AYAR/fX9/AGACf3wAYAN/fH8Bf2AEf3x/fwBgBH98f38Bf2ABfgBgAX4Bf2ABfgF+YAJ+fwBgAn5/AX9gAn5/AX5gA35/fwF/YAJ+fgBgAn5+AX5gA35+fwBgBH5+f38BfmAEfn5+fwF+YAd+fn5/f39/AX5gAXwBf2ABfAF8YAJ8fwF/YAJ8fwF8YAJ8fAF8YAN8fHwBfALLGj0YX193YmluZGdlbl9wbGFjZWhvbGRlcl9fFV9fd2JpbmRnZW5fc3RyaW5nX2dldAAGGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diZ19uZXdfMjNhMjY2NWZhYzgzYzYxMQAHGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxNfX3diaW5kZ2VuX2lzX2ZhbHN5AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fJF9fd2JnX2dldHdpdGhyZWZrZXlfMWRjMzYxYmQxMDA1M2JmZQAHGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXx1fX3diZ19sZW5ndGhfZTJkMmE0OTEzMmMxYjI1NgAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxRfX3diaW5kZ2VuX2lzX3N0cmluZwAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diZ19nZXRfYjliOTMwNDdmZTNjZjQ1YgAHGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxVfX3diaW5kZ2VuX3N0cmluZ19uZXcABxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18fX193YmdfdG9TdHJpbmdfNTI4NTU5Nzk2MDY3NmI3YgAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diZ19uZXdfNDA1ZTIyZjM5MDU3NmNlMgABGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diZ19uZXdfNzhmZWIxMDhiNjQ3MjcxMwABGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diZ19zZXRfM2YxZDBiOTg0ZWQyNzJlZAAKGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diZ19zZXRfMzc4MzcwMjNmM2Q3NDBlOAAKGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diaW5kZ2VuX29iamVjdF9kcm9wX3JlZgADGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxRfX3diaW5kZ2VuX2lzX2JpZ2ludAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxVfX3diaW5kZ2VuX251bWJlcl9nZXQABhhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18kX193YmdfaXNTYWZlSW50ZWdlcl8zNDNlMmJlZWVlY2UxYmIwAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JpbmRnZW5fYmlnaW50X2Zyb21faTY0ADsYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JpbmRnZW5fYmlnaW50X2Zyb21fdTY0ADsYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fH19fd2JnX2l0ZXJhdG9yXzlhMjRjODhkZjg2MGRjNjUAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18lX193YmdfaW5zdGFuY2VvZl9NYXBfZjM0NjljZTIyNDRkMjQzMAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxZfX3diaW5kZ2VuX2Jvb2xlYW5fZ2V0AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fE19fd2JpbmRnZW5fanN2YWxfZXEABxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18UX193YmluZGdlbl9pc19vYmplY3QABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18NX193YmluZGdlbl9pbgAHGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxdfX3diaW5kZ2VuX2lzX3VuZGVmaW5lZAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxRfX3diaW5kZ2VuX2Vycm9yX25ldwAHGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxVfX3diaW5kZ2VuX251bWJlcl9uZXcARxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18bX193YmdfbmV4dF82NTc0ZTFhOGE2MmQxMDU1AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fG19fd2JnX2RvbmVfNzY5ZTVlZGU0YjMxYzY3YgAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxxfX3diZ192YWx1ZV9jZDFmZmE3YjFhYjc5NGYxAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JnX2dldF82N2IyYmE2MmZjMzBkZTEyAAcYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fFl9fd2JpbmRnZW5faXNfZnVuY3Rpb24ABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18bX193YmdfbmV4dF8yNWZlYWRmYzA5MTNmZWE5AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fG19fd2JnX2NhbGxfNjcyYTRkMjE2MzRkNGEyNAAHGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXyBfX3diZ19uZXdub2FyZ3NfMTA1ZWQ0NzE0NzVhYWY1MAAHGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXy1fX3diZ19zdGF0aWNfYWNjZXNzb3JfR0xPQkFMXzg4YTkwMmQxM2E1NTdkMDcAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18yX193Ymdfc3RhdGljX2FjY2Vzc29yX0dMT0JBTF9USElTXzU2NTc4YmU3ZTlmODMyYjAAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18tX193Ymdfc3RhdGljX2FjY2Vzc29yX1dJTkRPV181ZGUzNzA0M2E5MWE5YzQwAAEYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fK19fd2JnX3N0YXRpY19hY2Nlc3Nvcl9TRUxGXzM3YzVkNDE4ZTRiZjU4MTkAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18eX193YmdfaXNBcnJheV9hMWVhYjdlMGQwNjczOTFiAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fG19fd2JnX2NhbGxfN2NjY2RkNjllMDc5MWFlMgALGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXx1fX3diZ19sZW5ndGhfYTQ0NjE5M2RjMjJjMTJmOAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxFfX3diaW5kZ2VuX21lbW9yeQABGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXx1fX3diZ19idWZmZXJfNjA5Y2MzZWVlNTFlZDE1OAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diZ19uZXdfYTEyMDAyYTdmOTFjNzViZQAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diZ19zZXRfNjU1OTViZGQ4NjhiMzAwOQAKGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXyxfX3diZ19pbnN0YW5jZW9mX1VpbnQ4QXJyYXlfMTcxNTZiY2YxMTgwODZhOQAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxtfX3diaW5kZ2VuX29iamVjdF9jbG9uZV9yZWYABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18ZX193YmluZGdlbl9qc3ZhbF9sb29zZV9lcQAHGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXy1fX3diZ19pbnN0YW5jZW9mX0FycmF5QnVmZmVyX2UxNDU4NTQzMmUzNzM3ZmMABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18eX193YmdfZW50cmllc18zMjY1ZDQxNThiMzNlNWRjAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fEF9fd2JpbmRnZW5fdGhyb3cABhhfX3diaW5kZ2VuX3BsYWNlaG9sZGVy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Bi0GAwcDBgcGBgYKBgYGBgYGCgYNAwMEBgMHDRIGCwYHAwsODgcQAwMDAwMDCgYlBgoQAwsNBwcHDQYGBgYNCwYGEAYKAw0DBhAEBgYKBwYGAwoGAworBgYGBgYGBgYREAoDBgYHBgoGBhISCgYNCgMKBQcQAysKCwsGDQoKBg0NBgMGCgMGChAdBgMQDQYKCgYGLwcHBgQGCgYDBgoGDQoGBwMDAw0KCgYHCgYHBwMGBAgHBgMmBgcHBwMGBgYcCgcDPQoKAw0NBgYGBwYNCgYOAwoOBhQHCgcGCwYGBgYKCgoHCgcGBwYKAwcmBAMHBAoGBgYDBgYGBgYGCgoGDRsGDgcGBgcQChAQEBAKEBAQChAQEA0QEAoQCgoHFAMNCgoDAwMDAwMDAwYDAwMDAwMDAwcGLAMDBw0GBwcSBgpAAw0GBgYGCgYHBwMEBgYKGA0LBg0GAwMLAwoEAxILCwcEBgMSBw0UBgYGBAYGCgoGBgcDBgMGBgYGBgYGBgYGBgYECgYDBgcGAwYDAw0KChUQBgcGBwYHAwQHBwcGAwQ2BgMNBgMGEQoGAwoDAwMRBgYGBhIDAwYLBAoGBgcKCgcNBwQKBwYGAwYDBxADBgMHAwMHAwYSEgMSBgYNBA0LCwYGBgoDDQ0GBAYQCgQDAwMGAwYDAwMGCgoKCgoKBgoGEAYGBgYGBwsECQYHBwYGBgYGBgYGBgQHBAcHBgcDAwMHBQMDAwQHBwcHAwMDBgMDAwMDAwMODg0GDQcOBAYQDQYGCgoGSgoHChIGBgYGBgoUEAYGDQYNBg0HBgoGCgYGBgMEBwcDBgoDAwMKDQMKBAcGBgYrBgYJBwcHBwcHBwcHBwcGBhANBgMGBgYGBAMKBwYEBktLSxAHBwcHCgYEEg0GBwcHBwcHAwcHAxIHBwcHBwcHBwcHBwcDAwcGBgYGBgYKBgYGBgoGDg0DBgYGAwsLS0tLEgQtBgQGDQcGAwYDAwMDAwYHAwMDBwMDAwMDAwMDAwYHBgYHBhIGBgYGAwotAwoKBg0KCgMDBhIHBgQHEisDDSQGEAcNBwYHBwoHBwMGBgMDAwcHBgYHEA8GBgcHAwsLCwsDBwMDBwMGAwMDAwMEBgoPBgoGCgoNBgcLBgYGBxQHBhAKBAMGDQMDBAoDBgMHAwMDAwMDAwMEBg0EBQQSBwcDAwMHBysKDgYGCgYGBgYGBgYGBgYKBgMGCzQQCwsLBgYDBwYDAwcDBgYGBgUGBgYGBgsNCgoGBgoEEAcOAwMGAwYDAwMKBgQGAwoKCgoKAwMOAwMDByQEAwokDgQkCgoEJBIGCwoKCwcEAwcGAwcGEBAQEAYEBgYHBgcGBw0SAwMKAwYDAwMGBgYKBBAEBgYNCgoQBAoGBgYHBwYEBgoKBAMGBgYGAwYGBgYNDQ0KBgsGBgYGBgoKBhIHBwMGAwYGCgQKBgoKAwMDAwMDAwYDCgcGEgoGDgYGBAMGA0EGBgYtBwcHBgcGBgYGBgYGBgYGBgYGBgYKBgYKEBAQBgsKCkVFDQMDAwMDAwMHBwcHAwMDBwMHBwcHBwcHAwcDAwMDAwMDAwMDAwMDAwMDAwoKCgYNBgcHBgMKDQ0EDQoKCgYrCgoKCg0NCgoDCwYEDgYSBxIOEAMHCgsECgtBBgMEBwsLCwsHBwcHQQcHAwYGCgMGBgcGAwsLAwcGBwYGBgYHAw4GBwcHAwQHEAcDAwMDBwYGDQYGAwMDBgsDBwQDBAcHBwcHBwMKBgYEBgYzMwMNCgYGBwYNBwcNCgMDAwYNBAQGBwcHBwYGBgoHCgcHBwYKEgsNBwcDBgMEBgcHAwcHBwcHBwcHAwcDBwcHAwcHBwcHBwcHBwcHAwcHBwMHAwcDAwMGAwMDBgYHBAcKBwcKAwoKBwcHCgcGCgMKBwQGAwQGBgMHBgoGBgoHAwoHCgcQAwcHCwcNBgoKBgoGBgYKBwQGBgcHBwcHBgYGBgoGDQYKCgcHBwcDBwcHBwcHBgcHCgoDAwoHBgYHBwcHBwcHCgQOBw4KBgYKDQYHCwcEBg0KCgYHCgo9BgM9PQc9BgcHBz0HBwc9Bz09PQcDPT09Az09PT09PT09CgoGCgoQAwcKEBAKEAQDBwMDAwMDBwcHBwcHBgYHEAMDBwMDBgcHBwYGBgYHBwcHBwcHAwcHAwcHAwcDAwYGBgYGBgYDAwMDAwYDEBAGEAYEEAoQEBAKBwoKEAYKBwcGBgYHBxAQED0DBgYGBgYKChAHCwsLCwcHBwcHBwc9BwcHBwcHBwYHBwcHBwcHBwcHBwcHBwcHBwcGBwcHBwcHBwcHBwcHAwcHBwMGEAMQBw0QDQoEBhAKEAcKCgMNBwoHAQQDBhIQAwcEBwYDAwMDAwYDBgoHBwMGBgMDAwMHBwQGCgMGEAsHBgYGBgYGBwYGBgZIBgYGBgYGBgYGBgYGBgAKBgYGBgYGBgYGBgsDCgYDAQMGCgYHEA4GBgsKCgYGAwYGBAMDEAcLAwMKBgoGDQ0DBgYKAyEKBgMDAyEDAwMDAwMDBgYDAwMDAwMDBAYhCgMKAwYDCgMHBwoGBwoHBgMGBgYGBgcDBgYEBwYDAwcSAwMEBwcGBwcGBgoGBgMDBwYGBgMGCgAHBg0GBgYGAwMDBgMDBgMDBgMDAwYDAwMDAwcHBwMGBgMHBwMKCgYDAwYDAwMDBgMDBwYDAwcHBwcHBwcHBwcHBwcHAwcHBgYDBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwwMBwcHBwcGBgYDBgYDBwMDChADBgMDEAYDAxIQCwYDBgYGAwMDBBABAwMDBgYGAwMQBgMDAwMDBgYDBgMDBgMDBgMDBgYDBgMGAwYGAwYGAwMDAwYGBgMGAwMEAwMHBwcHBwcHBwcGCg0GBwcHBwcHBwcMBwMHAwMHEgcGAwMHBwYGBgYGAwMDAwMDBgYGBgcGBwcGBgYGBwMKDQoSBggGAwoDBAcGBgQDBgMDBgQDAwoKBgYDCkZGAwYGPwYNBwMKCgoKCgoKCgMKCgYKBwcKCgYHCgoSDQYKDQ0NCgoHB0MSBgQCAgICAgsKCgICAgICAgICAgICAgICAgILCwYCAgICAgIKCgoKBgYDAwYHBxQGBg06CwcOBgoKCwo2AgMDOgICAwMDBgYGKwYGBgMKBgYKAwMKAwoDAwMDBwcEBgoGBhAHCgoKAwMHCAcDBAcKCgoHDgQHBwYGBgYGBgYGBgYGBgYGBgYGAwYDBgYGBgYGBgYGBgYEBgYGBgQGBgYKAwcyMgYHCgcHBwQHDREODQoHBgYGBwcHBwcGBgQKBwdCPAoHBwcHBwcGBwcGBwMHBwcGAwYGBgYGBgYGBgYGBgMOBxAQBxAKCAcHCgYDBg0GCgMKBgYKDgMGBwcHBwcHBwcHBw0HBwcNBwcHBgYEBwcNBgoGDDo6OgcGBwcGOgcECgY6BgYxOgYGAwYLBwADAw0DAAAAAAQAAAQHBwcHBwcHBwsHBwcHBwcHBwoKBgALCwcHAwMDAwMDBwYDAwMHBgZLAwMDAwMEBQoKBgYEBAQEBAQEBAYGBgEDDgcHBxAQEA0QDQcHBAMDBgcLBwcQEA0QEBAIChADAwcHBwcHBwcHBwcHBwQHBA4HBwYDBw4EBAYQEBAHDgcHBwYGBgY8AwMDAwMDAwYGBgMDBAsNCgMDAw0KBwoLCgYGBgYDAwoDEAM8CwMDBgYGCgYEBgYGDQQGAwMGBgYGCgMECgcHBgYDBgMKCjEKBgMGBhALAxAQAwMDBw4HEBAEBAQNCwYEBgMDDQQDAwMDAwMDAwYGAwoKBwMHBgcGCgYEBwcHBwcDAyMHDQMHBgcQJQsLCwYGBgYHAwYHBwcDBgYNBgYGBgcHBwMDBgcNDQcHDg0GAwMDAwQDDQsGAwMDAwMDAwcQCgQNAwcHCgoGAwoDAwMHAwMDBwYGBAcEAxANCj4+CgMDDQYHBwcHBwQEAwcGBgYGAwcNBgYGDAcGCgYGBwMGEhAGBwYGEAYDAwMGBgYEBgMGAwYGDQYGBgYHAwYGBgYGBgMLBgYMAwMHBgYDAwMDBgYDAwMDAwYGAwYDBwgGBgYDDg4ODgMOCxAOBAoHEw4OBwMrAw4ODgcEDgMGBgYGBgMDDgYDBwYOAw0KCgMEDg4QERAQKSonEQsDAwQKBwcGBgYKCg0NDQwGAwMMAwYHBgYGAQEDAwcDAwoKBgYGCgoDBgYDAwoNDQQDAwYGCgoBAQcODgcyDQcGAwcECgEGDAwHBD09AwYGBgYGBgYECwoGAwMDCgMDBz0EPQMGAwYHBgQHCgoDBwYNBgcLBgoKCgMHBAQHCgUDAwMGBgYDDQMGBxAHAwQEAwMDAwMDAwQDAwMGBgMDCgoDAwcHAwQHAwcHBAcHOwcHBwMDAwMDAwMNDQMGCgoGCgMGAwMDAwMDAwMGBgYKBgMDAwMGAwMDAwYGBgcDAwMEAwMEAwQGBwQEAwMBAwQDCgoDCgcBBAEBAQEBAQEBAQEBAQEBAQcGAwMDAwMDAwYDBgYDBgYDAwMDAwMGBgYGBgMGBgYGBgYBAwMDAwMDAwMDCgoGAwYDAwMMAwMDAwMDAwMDBgYDAwYGAwMDBwcHBwcHBgMHAwMDAwMHBwcLCwcHDD09DQcBEAMDAwMDBgYLAwYGBgYGBgMDAwMGAwYDAwMHCgcGAwMKDgsGDQcKBwcHBwcHBwMHAwMDBgMKAwMHBwcHBwcHAwYxBwcHBwcGCgcHBwsLBwMDAwYDBgMDAwMDAwMDAwMDAwMDAwcHBwcHBwcHAwMDAwMBAQMDAwMDAwYDAwsLCwsDAwcHAwcHAwMDAwMDAwMDAwcDAwMDAwMDAwMDBwYHAwMHAwMHAwMKEgYLCwcHCgMDCgcKAwMDAwcDBgYGAwMDAQcDAwMDAwMDAwYGBgYDBgYGBgYGBgYKAwMGBwMDCgMDCwMLBAQEBAcQAwMHAwELBwQEBAMOAwMDCwsNOgMDAwMDAwMDAwM6AwMDAwMGBgMDCwsDAwoNAwMDAwMDAwMDAwQKAwMDAwMDAwMDAwMGBgYDAwMDAwMDAwMDAwMDAwMDAwMDBgoDCgcHBgYHBwcHBwMGBgYGDQ0NDQ0NDQsHBwcHBgMHBwcDBwoDBwMKBwYHBwoKAgICAgICAgICAgICAgICBwMDAwMDAwMCAgMCCgYHBwQHBwYGBwMEAwMDBwMHCgMDCgoKAwMHAwMDAwcDBgoDAwMHAwMDBgYGBgYGBgYGBgMDAwMGBgMDAwMDBgYGBgMGBwQHBgYGBgYGBgsGCgoKBgYLBwYGBgcGBgYHAwQKBgYGBgYGAwMGBgYGBgYGBgYDAwYEBgYHBwYGAwsDDg4DBAMGBg4GBgYGBgYGBgYGBgYGBgYGCwYGBgMDAw0NBgYGAwMGBgYHBgYGAwYGBgADCwMECgAGCgoKBgYGAwMDAwMDCgoDBgMEBAQECgcKCwoHBwcHBwcHBAYDAwMNCwcEBwcHBwQEBAQEBAcHBwQHBwcDAwMHAwMDBwcHBwcHCgYHBwYHBAQGBwQHBwcHBEFBQUEHBwcDAwsLCwcHBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgcHBgYGBwcHBwcHBgYGBgYGBgYGBgYGBwcHBwcHAwMDAz0HPQYGBgYGBgYGBgYGAwYGBgQGCgcDAwMDAwoGBgYGBgYGBgYGBgYGBgYGAwQDTAYHFAQGBgYHBAoHBAcEBAQUBAYGBgYDAQMCAgICAgICAgICAgYCAgICAgICAgICAgICBgYGBgYGBgYGBgcCAgIGAgQEBwcGBgYDA0sDAQEEBAQEBAQEBAcEBAQEBAQDBAQEBAQEBAcEBAQEBAQEBAQBAAQEBEgEBAQABAQEBAQEBAQEBAQEAAsEBAEBCgYGBgYGCgoEBwFwAfMK8woFAwEAKAYJAX8BQYCAgAELB9QBCgZtZW1vcnkCAAl0cmFuc2Zvcm0AsxYNdHJhbnNmb3JtU3luYwCIGBNfX3diaW5kZ2VuX2V4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CSAEQf8Jai0AAEEQdHIhIiAELwDtCSAEQe8Jai0AAEEQdHIhIyAELwDdCSAEQd8Jai0AAEEQdHIhJCAELwDNCSAEQc8Jai0AAEEQdHIhJSAELwC9CSAEQb8Jai0AAEEQdHIhJiAELwCtCSAEQa8Jai0AAEEQdHIhJyAELwCdCSAEQZ8Jai0AAEEQdHIhKCAELwCNCSAEQY8Jai0AAEEQdHIhKSAELwD9CCAEQf8Iai0AAEEQdHIhKiAELwDtCCAEQe8Iai0AAEEQdHIhKyAELwDdCCAEQd8Iai0AAEEQdHIhLCAELwDNCCAEQc8Iai0AAEEQdHIhLSAELwC9CCAEQb8Iai0AAEEQdHIhLiAELwCtCCAEQa8Iai0AAEEQdHIhLyAELwCdCCAEQZ8Iai0AAEEQdHIhMCAELwCNCCAEQY8Iai0AAEEQdHIhMSAELwD9ByAEQf8Hai0AAEEQdHIhMiAELwDtByAEQe8Hai0AAEEQdHIhMyAELwDdByAEQd8Hai0AAEEQdHIhNCAELwDNByAEQc8Hai0AAEEQdHIhNSAELwC9ByAEQb8Hai0AAEEQdHIhNiAELwCtByAEQa8Hai0AAEEQdHIhNyAELwCdByAEQZ8Hai0AAEEQdHIhOCAELwCNByAEQY8Hai0AAEEQdHIhOSAELwD9BiAEQf8Gai0AAEEQdHIhOiAELwDtBiAEQe8Gai0AAEEQdHIhOyAELwDdBiAEQd8Gai0AAEEQdHIhPCAELwDNBiAEQc8Gai0AAEEQdHIhPSAELwC9BiAEQb8Gai0AAEEQdHIhPiAELwCtBiAEQa8Gai0AAEEQdHIhPyAELwCdBiAEQZ8Gai0AAEEQdHIhQCAELwCNBiAEQY8Gai0AAEEQdHIhQSAELwD9BSAEQf8Fai0AAEEQdHIhQiAELwDtBSAEQe8Fai0AAEEQdHIhQyAELwDdBSAEQd8Fai0AAEEQdHIhRCAELwDNBSAEQc8Fai0AAEEQdHIhRSAELwC9BSAEQb8Fai0AAEEQdHIhRiAELwCtBSAEQa8Fai0AAEEQdHIhRyAELwCdBSAEQZ8Fai0AAEEQdHIhSCAELwCNBSAEQY8Fai0AAEEQdHIhSSAELwD9BCAEQf8Eai0AAEEQdHIhSiAELwDtBCAEQe8Eai0AAEEQdHIhSyAELwDdBCAEQd8Eai0AAEEQdHIhTCAELwDNBCAEQc8Eai0AAEEQdHIhTSAELwC9BCAEQb8Eai0AAEEQdHIhTiAELwCtBCAEQa8Eai0AAEEQdHIhTyAELwCdBCAEQZ8Eai0AAEEQdHIhUCAELwCNBCAEQY8Eai0AAEEQdHIhUSAELwD9AyAEQf8Dai0AAEEQdHIhUiAELwDtAyAEQe8Dai0AAEEQdHIhUyAELwDdAyAEQd8Dai0AAEEQdHIhVCAELwDNAyAEQc8Dai0AAEEQdHIhVSAELwC9AyAEQb8Dai0AAEEQdHIhViAELwCtAyAEQa8Dai0AAEEQdHIhVyAELwCdAyAEQZ8Dai0AAEEQdHIhWCAELwCNAyAEQY8Dai0AAEEQdHIhWSAELwD9AiAEQf8Cai0AAEEQdHIhWiAELwDtAiAEQe8Cai0AAEEQdHIhWyAELwDdAiAEQd8Cai0AAEEQdHIhXCAELwDNAiAEQc8Cai0AAEEQdHIhXSAELwC9AiAEQb8Cai0AAEEQdHIhXiAELwCtAiAEQa8Cai0AAEEQdHIhXyAELwCdAiAEQZ8Cai0AAEEQdHIhYCAELwCNAiAEQY8Cai0AAEEQdHIhYSAELwD9ASAEQf8Bai0AAEEQdHIhYiAELwDtASAEQe8Bai0AAEEQdHIhYyAELwDdASAEQd8Bai0AAEEQdHIhZCAELwDNASAEQc8Bai0AAEEQdHIhZSAELwC9ASAEQb8Bai0AAEEQdHIhZiAELwCtASAEQa8Bai0AAEEQdHIhGSAELwCdASAEQZ8Bai0AAEEQdHIhBiAELwCNASAEQY8Bai0AAEEQdHIhCCAEQfwAajUCACGWBCAEQewAajUCACGaBCAEKQJ0IZcEIAQpAmQhlQQgBC0A7AohZyAEKALoCiFoIAQoAuQKIWkgBCgC4AohaiAELQDcCiFrIAQoAtgKIWwgBCgC1AohbSAEKALQCiFuIAQtAMwKIW8gBCgCyAohcCAEKALECiFxIAQoAsAKIXIgBC0AvAohcyAEKAK4CiF0IAQoArQKIXUgBCgCsAohdiAELQCsCiF3IAQoAqgKIXggBCgCpAoheSAEKAKgCiF6IAQtAJwKIXsgBCgCmAohfCAEKAKUCiF9IAQoApAKIX4gBC0AjAohfyAEKAKICiGAASAEKAKECiGBASAEKAKACiGCASAELQD8CSGDASAEKAL4CSGEASAEKAL0CSGFASAEKALwCSGGASAELQDsCSGHASAEKALoCSGIASAEKALkCSGJASAEKALgCSGKASAELQDcCSGLASAEKALYCSGMASAEKALUCSGNASAEKALQCSGOASAELQDMCSGPASAEKALICSGQASAEKALECSGRASAEKALACSGSASAELQC8CSGTASAEKAK4CSGUASAEKAK0CSGVASAEKAKwCSGWASAELQCsCSGXASAEKAKoCSGYASAEKAKkCSGZASAEKAKgCSGaASAELQCcCSGbASAEKAKYCSGcASAEKAKUCSGdASAEKAKQCSGeASAELQCMCSGfASAEKAKICSGgASAEKAKECSGhASAEKAKACSGiASAELQD8CCGjASAEKAL4CCGkASAEKAL0CCGlASAEKALwCCGmASAELQDsCCGnASAEKALoCCGoASAEKALkCCGpASAEKALgCCGqASAELQDcCCGrASAEKALYCCGsASAEKALUCCGtASAEKALQCCGuASAELQDMCCGvASAEKALICCGwASAEKALECCGxASAEKALACCGyASAELQC8CCGzASAEKAK4CCG0ASAEKAK0CCG1ASAEKAKwCCG2ASAELQCsCCG3ASAEKAKoCCG4ASAEKAKkCCG5ASAEKAKgCCG6ASAELQCcCCG7ASAEKAKYCCG8ASAEKAKUCCG9ASAEKAKQCCG+ASAELQCMCCG/ASAEKAKICCHAASAEKAKECCHBASAEKAKACCHCASAELQD8ByHDASAEKAL4ByHEASAEKAL0ByHFASAEKALwByHGASAELQDsByHHASAEKALoByHIASAEKALkByHJASAEKALgByHKASAELQDcByHLASAEKALYByHMASAEKALUByHNASAEKALQByHOASAELQDMByHPASAEKALIByHQASAEKALEByHRASAEKALAByHSASAELQC8ByHTASAEKAK4ByHUASAEKAK0ByHVASAEKAKwByHWASAELQCsByHXASAEKAKoByHYASAEKAKkByHZASAEKAKgByHaASAELQCcByHbASAEKAKYByHcASAEKAKUByHdASAEKAKQByHeASAELQCMByHfASAEKAKIByHgASAEKAKEByHhASAEKAKAByHiASAELQD8BiHjASAEKAL4BiHkASAEKAL0BiHlASAEKALwBiHmASAELQDsBiHnASAEKALoBiHoASAEKALkBiHpASAEKALgBiHqASAELQDcBiHrASAEKALYBiHsASAEKALUBiHtASAEKALQBiHuASAELQDMBiHvASAEKALIBiHwASAEKALEBiHxASAEKALABiHyASAELQC8BiHzASAEKAK4BiH0ASAEKAK0BiH1ASAEKAKwBiH2ASAELQCsBiH3ASAEKAKoBiH4ASAEKAKkBiH5ASAEKAKgBiH6ASAELQCcBiH7ASAEKAKYBiH8ASAEKAKUBiH9ASAEKAKQBiH+ASAELQCMBiH/ASAEKAKIBiGAAiAEKAKEBiGBAiAEKAKABiGCAiAELQD8BSGDAiAEKAL4BSGEAiAEKAL0BSGFAiAEKALwBSGGAiAELQDsBSGHAiAEKALoBSGIAiAEKALkBSGJAiAEKALgBSGKAiAELQDcBSGLAiAEKALYBSGMAiAEKALUBSGNAiAEKALQBSGOAiAELQDMBSGPAiAEKALIBSGQAiAEKALEBSGRAiAEKALABSGSAiAELQC8BSGTAiAEKAK4BSGUAiAEKAK0BSGVAiAEKAKwBSGWAiAELQCsBSGXAiAEKAKoBSGYAiAEKAKkBSGZAiAEKAKgBSGaAiAELQCcBSGbAiAEKAKYBSGcAiAEKAKUBSGdAiAEKAKQBSGeAiAELQCMBSGfAiAEKAKIBSGgAiAEKAKEBSGhAiAEKAKABSGiAiAELQD8BCGjAiAEKAL4BCGkAiAEKAL0BCGlAiAEKALwBCGmAiAELQDsBCGnAiAEKALoBCGoAiAEKALkBCGpAiAEKALgBCGqAiAELQDcBCGrAiAEKALYBCGsAiAEKALUBCGtAiAEKALQBCGuAiAELQDMBCGvAiAEKALIBCGwAiAEKALEBCGxAiAEKALABCGyAiAELQC8BCGzAiAEKAK4BCG0AiAEKAK0BCG1AiAEKAKwBCG2AiAELQCsBCG3AiAEKAKoBCG4AiAEKAKkBCG5AiAEKAKgBCG6AiAELQCcBCG7AiAEKAKYBCG8AiAEKAKUBCG9AiAEKAKQBCG+AiAELQCMBCG/AiAEKAKIBCHAAiAEKAKEBCHBAiAEKAKABCHCAiAELQD8AyHDAiAEKAL4AyHEAiAEKAL0AyHFAiAEKALwAyHGAiAELQDsAyHHAiAEKALoAyHIAiAEKALkAyHJAiAEKALgAyHKAiAELQDcAyHLAiAEKALYAyHMAiAEKALUAyHNAiAEKALQAyHOAiAELQDMAyHPAiAEKALIAyHQAiAEKALEAyHRAiAEKALAAyHSAiAELQC8AyHTAiAEKAK4AyHUAiAEKAK0AyHVAiAEKAKwAyHWAiAELQCsAyHXAiAEKAKoAyHYAiAEKAKkAyHZAiAEKAKgAyHaAiAELQCcAyHbAiAEKAKYAyHcAiAEKAKUAyHdAiAEKAKQAyHeAiAELQCMAyHfAiAEKAKIAyHgAiAEKAKEAyHhAiAEKAKAAyHiAiAELQD8AiHjAiAEKAL4AiHkAiAEKAL0AiHlAiAEKALwAiHmAiAELQDsAiHnAiAEKALoAiHoAiAEKALkAiHpAiAEKALgAiHqAiAELQDcAiHrAiAEKALYAiHsAiAEKALUAiHtAiAEKALQAiHuAiAELQDMAiHvAiAEKALIAiHwAiAEKALEAiHxAiAEKALAAiHyAiAELQC8AiHzAiAEKAK4AiH0AiAEKAK0AiH1AiAEKAKwAiH2AiAELQCsAiH3AiAEKAKoAiH4AiAEKAKkAiH5AiAEKAKgAiH6AiAELQCcAiH7AiAEKAKYAiH8AiAEKAKUAiH9AiAEKAKQAiH+AiAELQCMAiH/AiAEKAKIAiGAAyAEKAKEAiGBAyAEKAKAAiGCAyAELQD8ASGDAyAEKAL4ASGEAyAEKAL0ASGFAyAEKALwASGGAyAELQDsASGHAyAEKALoASGIAyAEKALkASGJAyAEKALgASGKAyAELQDcASGLAyAEKALYASGMAyAEKALUASGNAyAEKALQASGOAyAELQDMASGPAyAEKALIASGQAyAEKALEASGRAyAEKALAASGSAyAELQC8ASGTAyAEKAK4ASGUAyAEKAK0ASGVAyAEKAKwASGWAyAELQCsASGXAyAEKAKoASGYAyAEKAKkASENIAQoAqABIQwgBC0AnAEhDiAEKAKYASERIAQoApQBIRIgBCgCkAEhEyAELQCMASEUIAQoAogBIRUgBCgChAEhFiAEKAKAASEXIAQoAnAhGAsgmQRCA4UgmASEQgBRDQAgBC8A5RggBC0A5xhBEHRyIZkDIAQvAL0WIAQtAL8WQRB0ciGaAyAELwCpICAEQasgai0AAEEQdHIhmwMgBC8AmSAgBEGbIGotAABBEHRyIZwDIAQvAIkgIARBiyBqLQAAQRB0ciGdAyAELwD5HyAEQfsfai0AAEEQdHIhngMgBC8A6R8gBEHrH2otAABBEHRyIZ8DIAQvANkfIARB2x9qLQAAQRB0ciGgAyAELwDJHyAEQcsfai0AAEEQdHIhoQMgBC8AuR8gBEG7H2otAABBEHRyIaIDIAQvAKkfIARBqx9qLQAAQRB0ciGjAyAELwCZHyAEQZsfai0AAEEQdHIhpAMgBC8AiR8gBEGLH2otAABBEHRyIaUDIAQvAPkeIARB+x5qLQAAQRB0ciGmAyAELwDpHiAEQeseai0AAEEQdHIhpwMgBC8A2R4gBEHbHmotAABBEHRyIagDIAQvAMkeIARByx5qLQAAQRB0ciGpAyAELwC5HiAEQbseai0AAEEQdHIhqgMgBC8AqR4gBEGrHmotAABBEHRyIasDIAQvAJkeIARBmx5qLQAAQRB0ciGsAyAELwCJHiAEQYseai0AAEEQdHIhrQMgBC8A+R0gBEH7HWotAABBEHRyIa4DIAQvAPUYIARB9xhqLQAAQRB0ciGvAyAELQCoICGwAyAEKAKkICGxAyAEKAKgICGyAyAEKAKcICGzAyAELQCYICG0AyAEKAKUICG1AyAEKAKQICG2AyAEKAKMICG3AyAELQCIICG4AyAEKAKEICG5AyAEKAKAICG6AyAEKAL8HyG7AyAELQD4HyG8AyAEKAL0HyG9AyAEKALwHyG+AyAEKALsHyG/AyAELQDoHyHAAyAEKALkHyHBAyAEKALgHyHCAyAEKALcHyHDAyAELQDYHyHEAyAEKALUHyHFAyAEKALQHyHGAyAEKALMHyHHAyAELQDIHyHIAyAEKALEHyHJAyAEKALAHyHKAyAEKAK8HyHLAyAELQC4HyHMAyAEKAK0HyHNAyAEKAKwHyHOAyAEKAKsHyHPAyAELQCoHyHQAyAEKAKkHyHRAyAEKAKgHyHSAyAEKAKcHyHTAyAELQCYHyHUAyAEKAKUHyHVAyAEKAKQHyHWAyAEKAKMHyHXAyAELQCIHyHYAyAEKAKEHyHZAyAEKAKAHyHaAyAEKAL8HiHbAyAELQD4HiHcAyAEKAL0HiHdAyAEKALwHiHeAyAEKALsHiHfAyAELQDoHiHgAyAEKALkHiHhAyAEKALgHiHiAyAEKALcHiHjAyAELQDYHiHkAyAEKALUHiHlAyAEKALQHiHmAyAEKALMHiHnAyAELQDIHiHoAyAEKALEHiHpAyAEKALAHiHqAyAEKAK8HiHrAyAELQC4HiHsAyAEKAK0HiHtAyAEKAKwHiHuAyAEKAKsHiHvAyAELQCoHiHwAyAEKAKkHiHxAyAEKAKgHiHyAyAEKAKcHiHzAyAELQCYHiH0AyAEKAKUHiH1AyAEKAKQHiH2AyAEKAKMHiH3AyAELQCIHiH4AyAEKAKEHiH5AyAEKAKAHiH6AyAEKAL8HSH7AyAELQD4HSH8AyAEKAL0HSH9AyAEKALwHSH+AyAEKAL4GCH/AyAELQD0GCGABCAEKALwGCGBBCAEKALsGCGCBCAEKALoGCGDBCAELQDkGCGEBCAEKALgGCGFBCAEKALEFiGGBCAEKALAFiGHBCAELQC8FiGIBCAEKAK4FiGJBCAEKAK0FiGKBCAEKAKwFiGLBAJAAkACQCABKAJYIowELQAgQQJxRQ0AIIwELQAcQQFxDQAgmQRCAoUgmASEQgBSDQELAkAgAS0ARCIFQQJGDQAgBUEBcUUNBgsgjAQtABxBAXENBSCZBEIChSCYBIRQDQUCQCAPQQJGDQAgD0EBcQ0GCyAEQfAdaiABLQBCIgVBAkYgBXJBAXEgAiADEOsHIAQoAvAdQYCAgIB4Rg0EIAQoAvgdIgVFDQQgBCgC9B0ijQQgBUEEdGohjgQgjQQoAggijwQgjQQoAgQikARqQX9qIZEEQQAhBUEBIYwEII8EIZIEA0ACQAJAIAVBAXFFDQAgjQQhBSCNBCCOBEcNAQwGCyCMBCCOBCCNBGtBBHZPDQUgjQQgjARBBHRqIQULII8EIJIESQ0CIAUoAggikwRFDQUgBUEQaiGNBCAFKAIEQX9qIYwEQQAhBSCRBCGUBAJAA0AgkgQgBUYNAQJAIIwEIJMEai0AACCUBC0AAEYNACAFIZIEDAILIIwEQX9qIYwEIJQEQX9qIZQEIJMEIAVBAWoiBUcNAAsgkwQhkgQLQQAhjARBASEFIJIEDQAMBQsLQQAtAODnngEaQRBBwA0QsAciBUUNCCAFIJsDOwCtDSAFIJwDOwCdDSAFIJ0DOwCNDSAFIJ4DOwD9DCAFIJ8DOwDtDCAFIKADOwDdDCAFIKEDOwDNDCAFIKIDOwC9DCAFIKMDOwCtDCAFIKQDOwCdDCAFIKUDOwCNDCAFIKYDOwD9CyAFIKcDOwDtCyAFIKgDOwDdCyAFIKkDOwDNCyAFIKoDOwC9CyAFIKsDOwCtCyAFIKwDOwCdCyAFIK0DOwCNCyAFIK4DOwD9CiAFIK8DOwDtCiAFIJkDOwDdCiAFIJoDOwDNCiAFIBs7AK0KIAUgHDsAnQogBSAdOwCNCiAFIB47AP0JIAUgHzsA7QkgBSAgOwDdCSAFICE7AM0JIAUgIjsAvQkgBSAjOwCtCSAFICQ7AJ0JIAUgJTsAjQkgBSAmOwD9CCAFICc7AO0IIAUgKDsA3QggBSApOwDNCCAFICo7AL0IIAUgKzsArQggBSAsOwCdCCAFIC07AI0IIAUgLjsA/QcgBSAvOwDtByAFIDA7AN0HIAUgMTsAzQcgBSAyOwC9ByAFIDM7AK0HIAUgNDsAnQcgBSA1OwCNByAFIDY7AP0GIAUgNzsA7QYgBSA4OwDdBiAFIDk7AM0GIAUgOjsAvQYgBSA7OwCtBiAFIDw7AJ0GIAUgPTsAjQYgBSA+OwD9BSAFID87AO0FIAUgQDsA3QUgBSBBOwDNBSAFIEI7AL0FIAUgQzsArQUgBSBEOwCdBSAFIEU7AI0FIAUgRjsA/QQgBSBHOwDtBCAFIEg7AN0EIAUgSTsAzQQgBSBKOwC9BCAFIEs7AK0EIAUgTDsAnQQgBSBNOwCNBCAFIE47AP0DIAUgTzsA7QMgBSBQOwDdAyAFIFE7AM0DIAUgUjsAvQMgBSBTOwCtAyAFIFQ7AJ0DIAUgVTsAjQMgBSBWOwD9AiAFIFc7AO0CIAUgWDsA3QIgBSBZOwDNAiAFIFo7AL0CIAUgWzsArQIgBSBcOwCdAiAFIF07AI0CIAUgXjsA/QEgBSBfOwDtASAFIGA7AN0BIAUgYTsAzQEgBSBiOwC9ASAFIGM7AK0BIAUgZDsAnQEgBSBlOwCNASAFIGY7AH0gBSAZOwBtIAUgBjsAXSAFIJcENwI0IAUglQQ3AiQgBSCZBDcDECAFQQA6ALwNIAUgGjYCuA0gBSAHNgK0DSAFIAE2ArANIAUgsAM6AKwNIAUgsQM2AqgNIAUgsgM2AqQNIAUgswM2AqANIAUgtAM6AJwNIAUgtQM2ApgNIAUgtgM2ApQNIAUgtwM2ApANIAUguAM6AIwNIAUguQM2AogNIAUgugM2AoQNIAUguwM2AoANIAUgvAM6APwMIAUgvQM2AvgMIAUgvgM2AvQMIAUgvwM2AvAMIAUgwAM6AOwMIAUgwQM2AugMIAUgwgM2AuQMIAUgwwM2AuAMIAUgxAM6ANwMIAUgxQM2AtgMIAUgxgM2AtQMIAUgxwM2AtAMIAUgyAM6AMwMIAUgyQM2AsgMIAUgygM2AsQMIAUgywM2AsAMIAUgzAM6ALwMIAUgzQM2ArgMIAUgzgM2ArQMIAUgzwM2ArAMIAUg0AM6AKwMIAUg0QM2AqgMIAUg0gM2AqQMIAUg0wM2AqAMIAUg1AM6AJwMIAUg1QM2ApgMIAUg1gM2ApQMIAUg1wM2ApAMIAUg2AM6AIwMIAUg2QM2AogMIAUg2gM2AoQMIAUg2wM2AoAMIAUg3AM6APwLIAUg3QM2AvgLIAUg3gM2AvQLIAUg3wM2AvALIAUg4AM6AOwLIAUg4QM2AugLIAUg4gM2AuQLIAUg4wM2AuALIAUg5AM6ANwLIAUg5QM2AtgLIAUg5gM2AtQLIAUg5wM2AtALIAUg6AM6AMwLIAUg6QM2AsgLIAUg6gM2AsQLIAUg6wM2AsALIAUg7AM6ALwLIAUg7QM2ArgLIAUg7gM2ArQLIAUg7wM2ArALIAUg8AM6AKwLIAUg8QM2AqgLIAUg8gM2AqQLIAUg8wM2AqALIAUg9AM6AJwLIAUg9QM2ApgLIAUg9gM2ApQLIAUg9wM2ApALIAUg+AM6AIwLIAUg+QM2AogLIAUg+gM2AoQLIAUg+wM2AoALIAUg/AM6APwKIAUg/QM2AvgKIAUg/gM2AvQKIAUg/wM2AvAKIAUggAQ6AOwKIAUggQQ2AugKIAUgggQ2AuQKIAUggwQ2AuAKIAUghAQ6ANwKIAUghQQ2AtgKIAUghgQ2AtQKIAUghwQ2AtAKIAUgiAQ6AMwKIAUgiQQ2AsgKIAUgigQ2AsQKIAUgiwQ2AsAKIAUgDzoAvAogBSAQNgK4CiAFIAs2ArQKIAUgCTYCsAogBSBnOgCsCiAFIGg2AqgKIAUgaTYCpAogBSBqNgKgCiAFIGs6AJwKIAUgbDYCmAogBSBtNgKUCiAFIG42ApAKIAUgbzoAjAogBSBwNgKICiAFIHE2AoQKIAUgcjYCgAogBSBzOgD8CSAFIHQ2AvgJIAUgdTYC9AkgBSB2NgLwCSAFIHc6AOwJIAUgeDYC6AkgBSB5NgLkCSAFIHo2AuAJIAUgezoA3AkgBSB8NgLYCSAFIH02AtQJIAUgfjYC0AkgBSB/OgDMCSAFIIABNgLICSAFIIEBNgLECSAFIIIBNgLACSAFIIMBOgC8CSAFIIQBNgK4CSAFIIUBNgK0CSAFIIYBNgKwCSAFIIcBOgCsCSAFIIgBNgKoCSAFIIkBNgKkCSAFIIoBNgKgCSAFIIsBOgCcCSAFIIwBNgKYCSAFII0BNgKUCSAFII4BNgKQCSAFII8BOgCMCSAFIJABNgKICSAFIJEBNgKECSAFIJIBNgKACSAFIJMBOgD8CCAFIJQBNgL4CCAFIJUBNgL0CCAFIJYBNgLwCCAFIJcBOgDsCCAFIJgBNgLoCCAFIJkBNgLkCCAFIJoBNgLgCCAFIJsBOgDcCCAFIJwBNgLYCCAFIJ0BNgLUCCAFIJ4BNgLQCCAFIJ8BOgDMCCAFIKABNgLICCAFIKEBNgLECCAFIKIBNgLACCAFIKMBOgC8CCAFIKQBNgK4CCAFIKUBNgK0CCAFIKYBNgKwCCAFIKcBOgCsCCAFIKgBNgKoCCAFIKkBNgKkCCAFIKoBNgKgCCAFIKsBOgCcCCAFIKwBNgKYCCAFIK0BNgKUCCAFIK4BNgKQCCAFIK8BOgCMCCAFILABNgKICCAFILEBNgKECCAFILIBNgKACCAFILMBOgD8ByAFILQBNgL4ByAFILUBNgL0ByAFILYBNgLwByAFILcBOgDsByAFILgBNgLoByAFILkBNgLkByAFILoBNgLgByAFILsBOgDcByAFILwBNgLYByAFIL0BNgLUByAFIL4BNgLQByAFIL8BOgDMByAFIMABNgLIByAFIMEBNgLEByAFIMIBNgLAByAFIMMBOgC8ByAFIMQBNgK4ByAFIMUBNgK0ByAFIMYBNgKwByAFIMcBOgCsByAFIMgBNgKoByAFIMkBNgKkByAFIMoBNgKgByAFIMsBOgCcByAFIMwBNgKYByAFIM0BNgKUByAFIM4BNgKQByAFIM8BOgCMByAFINABNgKIByAFINEBNgKEByAFINIBNgKAByAFINMBOgD8BiAFINQBNgL4BiAFINUBNgL0BiAFINYBNgLwBiAFINcBOgDsBiAFINgBNgLoBiAFINkBNgLkBiAFINoBNgLgBiAFINsBOgDcBiAFINwBNgLYBiAFIN0BNgLUBiAFIN4BNgLQBiAFIN8BOgDMBiAFIOABNgLIBiAFIOEBNgLEBiAFIOIBNgLABiAFIOMBOgC8BiAFIOQBNgK4BiAFIOUBNgK0BiAFIOYBNgKwBiAFIOcBOgCsBiAFIOgBNgKoBiAFIOkBNgKkBiAFIOoBNgKgBiAFIOsBOgCcBiAFIOwBNgKYBiAFIO0BNgKUBiAFIO4BNgKQBiAFIO8BOgCMBiAFIPABNgKIBiAFIPEBNgKEBiAFIPIBNgKABiAFIPMBOgD8BSAFIPQBNgL4BSAFIPUBNgL0BSAFIPYBNgLwBSAFIPcBOgDsBSAFIPgBNgLoBSAFIPkBNgLkBSAFIPoBNgLgBSAFIPsBOgDcBSAFIPwBNgLYBSAFIP0BNgLUBSAFIP4BNgLQBSAFIP8BOgDMBSAFIIACNgLIBSAFIIECNgLEBSAFIIICNgLABSAFIIMCOgC8BSAFIIQCNgK4BSAFIIUCNgK0BSAFIIYCNgKwBSAFIIcCOgCsBSAFIIgCNgKoBSAFIIkCNgKkBSAFIIoCNgKgBSAFIIsCOgCcBSAFIIwCNgKYBSAFII0CNgKUBSAFII4CNgKQBSAFII8COgCMBSAFIJACNgKIBSAFIJECNgKEBSAFIJICNgKABSAFIJMCOgD8BCAFIJQCNgL4BCAFIJUCNgL0BCAFIJYCNgLwBCAFIJcCOgDsBCAFIJgCNgLoBCAFIJkCNgLkBCAFIJoCNgLgBCAFIJsCOgDcBCAFIJwCNgLYBCAFIJ0CNgLUBCAFIJ4CNgLQBCAFIJ8COgDMBCAFIKACNgLIBCAFIKECNgLEBCAFIKICNgLABCAFIKMCOgC8BCAFIKQCNgK4BCAFIKUCNgK0BCAFIKYCNgKwBCAFIKcCOgCsBCAFIKgCNgKoBCAFIKkCNgKkBCAFIKoCNgKgBCAFIKsCOgCcBCAFIKwCNgKYBCAFIK0CNgKUBCAFIK4CNgKQBCAFIK8COgCMBCAFILACNgKIBCAFILECNgKEBCAFILICNgKABCAFILMCOgD8AyAFILQCNgL4AyAFILUCNgL0AyAFILYCNgLwAyAFILcCOgDsAyAFILgCNgLoAyAFILkCNgLkAyAFILoCNgLgAyAFILsCOgDcAyAFILwCNgLYAyAFIL0CNgLUAyAFIL4CNgLQAyAFIL8COgDMAyAFIMACNgLIAyAFIMECNgLEAyAFIMICNgLAAyAFIMMCOgC8AyAFIMQCNgK4AyAFIMUCNgK0AyAFIMYCNgKwAyAF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NwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAApFDQBBACABKAIAEPQFIQNBjKiaAUEREMMMIQZBnaiaAUEgEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAAtFDQBBACABKAIAEPQFIQNBvaiaAUEUEMMMIQZB0aiaAUEjEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAAxFDQBBACABKAIAEPQFIQNB9KiaAUEYEMMMIQZBjKmaAUEnEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAA1FDQBBACABKAIAEPQFIQNBs6maAUEQEMMMIQZBw6maAUEfEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAA5FDQBBACABKAIAEPQFIQNB4qmaAUEZEMMMIQZB+6maAUEoEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAA9FDQBBACABKAIAEPQFIQNBo6qaAUEPEMMMIQZBsqqaAUEeEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtABBFDQBBACABKAIAEPQFIQNB0KqaAUETEMMMIQZB46qaAUEiEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtABFFDQBBACABKAIAEPQFIQNBhauaAUEWEMMMIQZBm6uaAUElEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtABJFDQBBACABKAIAEPQFIQNBwKuaAUEMEMMMIQZBzKuaAUEbEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtABNFDQBBACABKAIAEPQFIQNB56uaAUELEMMMIQZB8quaAUEaEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtABRFDQBBACABKAIAEPQFIQNBjKyaAUEcEMMMIQZBqKyaAUErEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtABVFDQBBACABKAIAEPQFIQNB06yaAUEjEMMMIQZB9qyaAUEyEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtABZFDQBBACABKAIAEPQFIQNBqK2aAUEbEMMMIQZBw62aAUEqEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtABdFDQBBACABKAIAEPQFIQNB7a2aAUEbEMMMIQZBiK6aAUEqEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtABhFDQBBACABKAIAEPQFIQNBsq6aAUEeEMMMIQZB0K6aAUEtEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtABlFDQBBACABKAIAEPQFIQNB/a6aAUEREMMMIQZBjq+aAUEgEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtABpFDQBBACABKAIAEPQFIQNBrq+aAUEsEMMMIQZB2q+aAUE7EMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtABtFDQBBACABKAIAEPQFIQNBlbCaAUEfEMMMIQZBtLCaAUEuEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtABxFDQBBACABKAIAEPQFIQNB4rCaAUEVEMMMIQZB97CaAUEkEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAB1FDQBBACABKAIAEPQFIQNBm7GaAUEYEMMMIQZBs7GaAUEnEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAB5FDQBBACABKAIAEPQFIQNB2rGaAUEZEMMMIQZB87GaAUEoEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAB9FDQBBACABKAIAEPQFIQNBm7KaAUEfEMMMIQZBurKaAUEuEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtACBFDQBBACABKAIAEPQFIQNB6LKaAUEeEMMMIQZBhrOaAUEtEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtACFFDQBBACABKAIAEPQFIQNBs7OaAUEYEMMMIQZBy7OaAUEnEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtACJFDQBBACABKAIAEPQFIQNB8rOaAUEbEMMMIQZBjbSaAUEqEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtACNFDQBBACABKAIAEPQFIQNBt7SaAUEZEMMMIQZB0LSaAUEoEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtACRFDQBBACABKAIAEPQFIQNB+LSaAUEaEMMMIQZBkrWaAUEpEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtACVFDQBBACABKAIAEPQFIQNBu7WaAUEZEMMMIQZB1LWaAUEoEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtACZFDQBBACABKAIAEPQFIQNB/LWaAUEkEMMMIQZBoLaaAUEzEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtACdFDQBBACABKAIAEPQFIQNB07aaAUEkEMMMIQZB97aaAUEzEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAChFDQBBACABKAIAEPQFIQNBqreaAUEiEMMMIQZBzLeaAUExEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAClFDQBBACABKAIAEPQFIQNB/beaAUEKEMMMIQZBh7iaAUEZEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtACpFDQBBACABKAIAEPQFIQNBoLiaAUENEMMMIQZBrbiaAUEcEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtACtFDQBBACABKAIAEPQFIQNBybiaAUEJEMMMIQZB0riaAUEYEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtACxFDQBBACABKAIAEPQFIQNB6riaAUEJEMMMIQZB87iaAUEYEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAC1FDQBBACABKAIAEPQFIQNBi7maAUEdEMMMIQZBqLmaAUEsEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAC5FDQBBACABKAIAEPQFIQNB1LmaAUEQEMMMIQZB5LmaAUEfEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAC9FDQBBACABKAIAEPQFIQNBg7qaAUEMEMMMIQZBj7qaAUEbEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtADBFDQBBACABKAIAEPQFIQNBqrqaAUEIEMMMIQZBsrqaAUEXEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtADFFDQBBACABKAIAEPQFIQNBybqaAUEEEMMMIQZBzbqaAUETEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtADJFDQBBACABKAIAEPQFIQNB4LqaAUEREMMMIQZB8bqaAUEgEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtADNFDQBBACABKAIAEPQFIQNBkbuaAUEJEMMMIQZBmruaAUEYEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtADRFDQBBACABKAIAEPQFIQNBsruaAUEPEMMMIQZBwbuaAUEeEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtADVFDQBBACABKAIAEPQFIQNB37uaAUEcEMMMIQZB+7uaAUErEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtADZFDQBBACABKAIAEPQFIQNBpryaAUEbEMMMIQZBwbyaAUEqEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtADdFDQBBACABKAIAEPQFIQNB67yaAUELEMMMIQZB9ryaAUEaEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtADhFDQBBACABKAIAEPQFIQNBkL2aAUEYEMMMIQZBqL2aAUEnEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtADlFDQBBACABKAIAEPQFIQNBz72aAUEZEMMMIQZB6L2aAUEoEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtADpFDQBBACABKAIAEPQFIQNBkL6aAUETEMMMIQZBo76aAUEiEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtADtFDQBBACABKAIAEPQFIQNBxb6aAUESEMMMIQZB176aAUEhEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtADxFDQBBACABKAIAEPQFIQNB+L6aAUEYEMMMIQZBkL+aAUEnEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAD1FDQBBACABKAIAEPQFIQNBt7+aAUEeEMMMIQZB1b+aAUEtEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAD5FDQBBACABKAIAEPQFIQNBgsCaAUEEEMMMIQZBhsCaAUETEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAD9FDQBBACABKAIAEPQFIQNBmcCaAUEQEMMMIQZBqcCaAUEfEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAEBFDQBBACABKAIAEPQFIQNByMCaAUESEMMMIQZB2sCaAUEhEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAEFFDQBBACABKAIAEPQFIQNB+8CaAUEUEMMMIQZBj8GaAUEjEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAEJFDQBBACABKAIAEPQFIQNBssGaAUEbEMMMIQZBzcGaAUEqEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAENFDQBBACABKAIAEPQFIQNB98GaAUEOEMMMIQZBhcKaAUEdEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAERFDQBBACABKAIAEPQFIQNBosKaAUEUEMMMIQZBtsKaAUEjEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAEVFDQBBACABKAIAEPQFIQNB2cKaAUEaEMMMIQZB88KaAUEpEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAEZFDQBBACABKAIAEPQFIQNBnMOaAUEgEMMMIQZBvMOaAUEvEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAEdFDQBBACABKAIAEPQFIQNB68OaAUEPEMMMIQZB+sOaAUEeEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAEhFDQBBACABKAIAEPQFIQNBmMSaAUEcEMMMIQZBtMSaAUErEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAElFDQBBACABKAIAEPQFIQNB38SaAUEQEMMMIQZB78SaAUEfEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAEpFDQBBACABKAIAEPQFIQNBjsWaAUEEEMMMIQZBksWaAUETEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAEtFDQBBACABKAIAEPQFIQNBpcWaAUEREMMMIQZBtsWaAUEgEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAExFDQBBACABKAIAEPQFIQNB1sWaAUEaEMMMIQZB8MWaAUEpEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAE1FDQBBACABKAIAEPQFIQNBmcaaAUEQEMMMIQZBqcaaAUEfEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAE5FDQBBACABKAIAEPQFIQNByMaaAUEWEMMMIQZB3saaAUElEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAE9FDQBBACABKAIAEPQFIQNBg8eaAUEQEMMMIQZBk8eaAUEfEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAFBFDQBBACABKAIAEPQFIQNBsseaAUEYEMMMIQZByseaAUEnEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICwJAIAEtAFFFDQBBACABKAIAEPQFIQNB8ceaAUEeEMMMIQZBj8iaAUEtEMMMIQdBAC0A4OeeARpByAAQfCICRQ0BIAJCADcDECACQpG+ATcDCCACQgA3AwAgAkIANwM4IAJBADoANCACIAM2AjAgAkIANwMoIAIgBjcDICACQRVqQgA3AAAgAkHAAGpBADoAAEEALQDg554BGkEYEHwiBEUNASAEQgA3AwggBCAHNwMAIARBEGpCADcDAAJAIAAoAggiBSAAKAIARw0AIABBgKeaARDwGwsgACgCBCAFQThsaiIDQgA3AhQgAyAENgIQIANBATYCDCADIAI2AgggA0KAgICAEDcDACADQRpqQgA3AQAgACAFQQFqNgIICyABLQBSRQ0B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KALQASIDIAMoAgAiA0F/ajYCAAJAIANBAUcNACAFKALQARD8DwsgBUHgDGokAA8LIAVBADYCkAYgBUEBNgKEBiAFQajbgAE2AoAGIAVCBDcCiAYgBUGABmpBsNuAARC1IQAL6YUBAQN/IwBBMGsiAyQAAkACQCACKAIEIgRB/////wdPDQAgAiAEQQFqNgIEIAItAAhFDQEgAyABQarUmgFBGiACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggMAQtBgKeaARCNGQALAkAgAi0ACUUNACADIAFBxNSaAUETIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAKRQ0AIAMgAUHX1JoBQRAgAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAAtFDQAgAyABQefUmgFBEyACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0ADEUNACADIAFB+tSaAUEXIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQANRQ0AIAMgAUGR1ZoBQQ8gAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAA5FDQAgAyABQaDVmgFBGCACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AD0UNACADIAFBuNWaAUEOIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAQRQ0AIAMgAUHG1ZoBQRIgAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItABFFDQAgAyABQdjVmgFBFSACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AEkUNACADIAFB7dWaAUELIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQATRQ0AIAMgAUH41ZoBQQogAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItABRFDQAgAyABQYLWmgFBGyACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AFUUNACADIAFBndaaAUEiIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAWRQ0AIAMgAUG/1poBQRogAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItABdFDQAgAyABQdnWmgFBGiACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AGEUNACADIAFB89aaAUEdIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAZRQ0AIAMgAUGQ15oBQRAgAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItABpFDQAgAyABQaDXmgFBKyACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AG0UNACADIAFBy9eaAUEeIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAcRQ0AIAMgAUHp15oBQRQgAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAB1FDQAgAyABQf3XmgFBFyACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AHkUNACADIAFBlNiaAUEYIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAfRQ0AIAMgAUGs2JoBQR4gAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItACBFDQAgAyABQcrYmgFBHSACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AIUUNACADIAFB59iaAUEXIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAiRQ0AIAMgAUH+2JoBQRogAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItACNFDQAgAyABQZjZmgFBGCACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AJEUNACADIAFBsNmaAUEZIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAlRQ0AIAMgAUHJ2ZoBQRggAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItACZFDQAgAyABQeHZmgFBIyACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AJ0UNACADIAFBhNqaAUEjIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAoRQ0AIAMgAUGn2poBQSEgAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAClFDQAgAyABQcjamgFBCSACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AKkUNACADIAFB0dqaAUEMIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQArRQ0AIAMgAUHd2poBQQggAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItACxFDQAgAyABQeXamgFBCCACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0ALUUNACADIAFB7dqaAUEcIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAuRQ0AIAMgAUGJ25oBQQ8gAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAC9FDQAgAyABQZjbmgFBCyACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AMEUNACADIAFBwu6bAUEHIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAxRQ0AIAMgAUHAspwBQQMgAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItADJFDQAgAyABQaPbmgFBECACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AM0UNACADIAFBs9uaAUEIIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA0RQ0AIAMgAUG725oBQQ4gAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItADVFDQAgAyABQcnbmgFBGyACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0ANkUNACADIAFB5NuaAUEaIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA3RQ0AIAMgAUHSmpwBQQogAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItADhFDQAgAyABQf7bmgFBFyACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AOUUNACADIAFBldyaAUEYIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA6RQ0AIAMgAUGt3JoBQRIgAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItADtFDQAgAyABQb/cmgFBESACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0APEUNACADIAFB0NyaAUEXIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA9RQ0AIAMgAUHn3JoBQR0gAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAD5FDQAgAyABQYTdmgFBAyACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AP0UNACADIAFBh92aAUEPIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBARQ0AIAMgAUGW3ZoBQREgAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAEFFDQAgAyABQafdmgFBEyACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AQkUNACADIAFBut2aAUEaIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBDRQ0AIAMgAUHU3ZoBQQ0gAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAERFDQAgAyABQeHdmgFBEyACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0ARUUNACADIAFB9N2aAUEZIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBGRQ0AIAMgAUGN3poBQR8gAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAEdFDQAgAyABQazemgFBDiACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0ASEUNACADIAFBut6aAUEbIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBJRQ0AIAMgAUHV3poBQQ8gAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAEpFDQAgAyABQcOynAFBAyACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AS0UNACADIAFB5N6aAUEQIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBMRQ0AIAMgAUH03poBQRkgAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAE1FDQAgAyABQY3fmgFBDyACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0ATkUNACADIAFBnN+aAUEVIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBPRQ0AIAMgAUGx35oBQQ8gAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAFBFDQAgAyABQcDfmgFBFyACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AUUUNACADIAFB19+aAUEdIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBSRQ0AIAMgAUHqjJwBQQUgAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAFNFDQAgAyABQfTfmgFBCCACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AVEUNACADIAFB/N+aAUETIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBVRQ0AIAMgAUGP4JoBQQwgAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAFZFDQAgAyABQZvgmgFBDyACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AV0UNACADIAFB0/aaAUEGIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBYRQ0AIAMgAUGq4JoBQQcgAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAFlFDQAgAyABQbHgmgFBHSACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AWkUNACADIAFBzuCaAUEUIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBbRQ0AIAMgAUHi4JoBQREgAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAFxFDQAgAyABQfPgmgFBECACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AXUUNACADIAFBg+GaAUEfIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBeRQ0AIAMgAUGi4ZoBQSYgAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAF9FDQAgAyABQcjhmgFBHyACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AYEUNACADIAFB5+GaAUEhIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBhRQ0AIAMgAUGI4poBQRsgAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAGJFDQAgAyABQaPimgFBDCACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AY0UNACADIAFBr+KaAUEjIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBkRQ0AIAMgAUHS4poBQQsgAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAGVFDQAgAyABQd3imgFBDCACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AZkUNACADIAFB6eKaAUELIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBnRQ0AIAMgAUH04poBQQggAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAGhFDQAgAyABQfzimgFBCSACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AaUUNACADIAFBheOaAUEaIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBqRQ0AIAMgAUGf45oBQRQgAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAGtFDQAgAyABQbPjmgFBESACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AbEUNACADIAFBxOOaAUEIIAIoAgAQ1gUCQCAAKAIIIgUgACgCAEcNACAAEO8bCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBtRQ0AIAMgAUHM45oBQQcgAigCABDWBQJAIAAoAggiBSAAKAIARw0AIAAQ7xsLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAG5FDQAgAyABQdz0mwFBBSACKAIAENYFAkAgACgCCCIFIAAoAgBHDQAgABDvGwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0Ab0UNACADIAFB0+OaAUEJIAIoAgAQ1gUCQCAAKAIIIgQgACgCAEcNACAAEO8bCyAAKAIEIARBMGxqIgEgAykDADcDACABQShqIANBKGopAwA3AwAgAUEgaiADQSBqKQMANwMAIAFBGGogA0EYaikDADcDACABQRBqIANBEGopAwA3AwAgAUEIaiADQQhqKQMANwMAIAAgBEEBajYCCAsgAiACKAIEQX9qNgIEIANBMGokAAuYiAECaH8IfiMAQbAHayIDJAAgAUEIaiEEIANB2AFqQR1qIQUgA0GgBGpBCGohBiADQaAFakEMaiEHIANBoARqQQRyIQggA0HFBGohCSADQaAFakEVaiEKIANBoARqQRRqIQsgA0GgBWpBBHIhDCADQZkCaiENIANB2AFqQSBqIQ4gA0GgBGpBFWohDyADQagBakEVaiEQIANBqAFqQQRyIREgA0HYBmpBFWohEiADQdgGakEEciETIANBoAZqQRVqIRQgA0GgBmpBBHIhFSADQfAFakEVaiEWIANB8AVqQQRyIRcgA0GgBGpBEGohGCADQaAEakEMaiEZIANBoQJqIRogA0GVAmohGyADQYQCaiEcIANB2AFqQQxqIR0gA0HYAWpBFWohHiADQdgBakEEciEfIANBkAdqQQRyISAgA0HYAWpBFGohISADQdgGakEMaiEiIANBoAVqQR1qISMgA0HYAWpBCGohJCADQdgGakEIaiElIANBqAFqQR1qISYgA0GoAWpBCGohJyADQfwAakEEaiEoIAAoAgAhKQJAAkADQAJAAkAgKSgCACIqRQ0AIAMgKjYC2AYCQCABLQDYASIAQaMBRw0AIANBoAVqIAEQlyQgASgC1AEhACABKALQASECIANBATYC3AEgA0G8t5wBNgLYASADQgE3AuQBIANBjwU2AqwBIAMgA0GoAWo2AuABIAMgA0HYBmo2AqgBIANBoARqIANB2AFqELQZIANBtARqIANBqAVqKAIANgIAIAMgAykCoAU3AqwEIAEgAiAAIANBoARqEKohDAQLIAAgKi0AAEcNAQwDCyABLQDYASIAQaMBRg0CCyADQQE6AHcgAyABKALQATYCeAJAAkAgAEEYRg0AQQQhKkEAIStBACEsDAELIANB2AFqIAFBARD0ASADKALcASEqIAMoAtgBIixBgICAgHhGDQMgAygC4AEhKyABLQDYASEACwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB/wFxIgBB2ABGIi0NACAAQd8ARw0BCyADICs2AogBIAMgKjYChAEgAyAsNgKAASADIAE2AnwCQCABKAKIASIqQYCAgIAGcQ0AIAEoAtQBIQAgASgC0AEhKiADQcaAgIB4NgLYASAqIAAgA0HYAWoQlxkhKgwuCwJAAkAgAEHfAEYNACAtDQEgA0EBNgLcASADQYyAnAE2AtgBIANCADcC5AEgAyADQawHajYC4AEgA0HYAWpBlICcARC1IQALIAEoAtABIS0CQAJAAkAgARDKCSIARQ0AIAAtAABBCEYNAQsCQAJAIAEQygkiAEUNACAALQAARQ0BCwJAIAEoAogBIgBBAnENACABIABBCnIQ4xELAkAgAS0A2AFB3wBGDQAgASgC1AEhACABKALQASEqIANBrANqIAEQlyQgA0EBNgKkBCADQby3nAE2AqAEIANCATcCrAQgA0GPBTYCrAEgA0HfADoAoAYgAyADQagBajYCqAQgAyADQdgGajYCqAEgAyADQaAGajYC2AYgA0GgBWogA0GgBGoQuhkgB0EIaiADQawDakEIaigCADYCACAHIAMpAqwDNwIAICogACADQaAFahCXGSEuIAEtANgBQaIBRw0xIAEgARDAKRCnFgwxCyABEJQLAkAgAS0A2AFBwABGDQAgA0EYakEEQQhByABBgP6bARDnGCADQQA2AsADIAMgAykDGDcCuAMCQCABKAKIASABLQDYASIAEMQNRQ0AIANBoARqIAEQjw0gAygCoAQhLiADLQC0BCIAQQJGDTAgESAIKQIANwIAIBAgDy8AADsAACARQQhqIiwgCEEIaiIrKQIANwIAIBBBAmoiLyAPQQJqIjAtAAA6AAAgAyAAOgC8ASADIC42AqgBQQAhMSABLQCRAUEgcUUNHyADQagBakGQ/psBQQQQ2B9FDR9BASExQQAhKiABLQDYASIAQQJGDSAgAEEPRg0gQQAhMSABKAKIASAAEMQNRQ0fAkACQCAAQf4ARw0AIAEQygkiAEUNASAALQAAQf4ARw0BCyADQaAEaiABEI8NIAMoAqAEIS4gAy0AtAQiAEECRg0lIANByANqQQhqICspAgA3AwAgA0HEA2pBAmogMC0AADoAACADIAgpAgA3A8gDIAMgDy8AADsBxAMgA0HEA2ohKiADQcgDaiExDB8LIAEQygkiAEUNHyAALQAAQRdHDR8gA0GgBWogARDDDiADQaAEaiADQaAFahC6IiADKAKgBCEuIAMtALQEIgBBAkYNJCADQeADakEIaiArKQIANwMAIANB3ANqQQJqIDAtAAA6AAAgAyAIKQIANwPgAyADIA8vAAA7AdwDIANB3ANqISogA0HgA2ohMQweC0EAITBBACExIABB/wFxQQ9GDScMKQsgA0GgBGogARC1GUEYQQgQ0yciAEEQaiAYKQMANwMAIABBCGogBikDADcDACAAIAMpA6AENwMAQQAhK0EAISoCQCABLQDZAQ0AAkAgAS0A2AEiLEH3AEYNAEEAISogLEHwAEcNAQsgARCUCyADQaAEaiABEJ8eIAMoAqQEIS4CQCADKAKgBCIqQTJHDQAgABCRJQwyCwJAQThFDQAgA0GgBWogBkE4/AoAAAsgKkEORw0GQRRBBBDTJyIqIC42AgAgKiADKQOgBTcCBCAqQQxqIANBoAVqQQhqKQMANwIACyABEJ0eGiABKALMASEyQQghM0EAITQgLSE1QQAhNkEAIS5BACEsDCwLIANBIGogARD0CSADKAIkITEgAygCIEEBcQ0BIAEQnR4aIAEoAswBITVBCSEsQRIhMyA3ISsgOCE0IDkhKiA6ITIgLSEAIDEhNgwrCyADQShqIAEQ9AkgAygCLCExIAMoAihBAXENGSABEJ0eGiABKALMASE1QQkhLEESITMgNyErIDghNCA5ISogOiEyIC0hACAxITYMKgsgMSEuDC0LIANBmAFqQQhqIi0gKEEIaigCADYCACADICgpAgA3A5gBAkAgKkGCgICAAnFBgICAgAJHDQAgASAqQQpyEOMRCyABKALQASEqIAEQlAsgAS0A2AEiAEGjAUYNAiABLwGQAUGAwABxIixFDQMgAEH8AEcNAyABKALQASEAIAEQlAsgA0GgBGogKBDiCCADQdgBaiABIAAgA0GgBGoQ/wsgAygC3AEhAAJAIAMoAtgBIitBCUcNAEEJISwgACE7DBQLICcgJCkDADcDACAnQRhqICRBGGopAwA3AwAgJ0EQaiAkQRBqKQMANwMAICdBCGogJEEIaikDADcDACADIAA2AqwBIAMgKzYCqAECQCArQQhGDQAgA0GSAWpBAmogJkECai0AADoAACADIAMvAcIBOwGWASADICYvAAA7AZIBIAMoArQBIjxBCHYhPSABKALMASE+QQEhLCADKQPIASFrIAMtAMQBIT8gAy0AwQEhQCADLQDAASFBIAMoArwBIUIgAygCuAEhQyADKAKwASFEICohRSAAIUYgKyFHDAULIANBqAFqEN8nIAEvAZABQYDAAHEhLCABLQDYASEADAMLIAMgKzYCqAQgAyAqNgKkBCADICw2AqAEIAEoAogBIQAgAyADQfcAajYCsAQgAyADQfgAajYCrAQCQAJAIABBgIAEcUUNACABIABB//97cTYCiAEgA0HYAWogA0GgBGogARC9EiABIAEoAogBQYCABHI2AogBDAELIANB2AFqIANBoARqIAEQvRILAkAgAygC2AEiAEETRw0AQQohLCADKALcASEqDC8LIANB6gBqQQJqIAVBAmotAAA6AAAgAyADLwHyATsBbiADIAUvAAA7AWpBCSEsIAMoAoQCIUggAygCgAIhSSADKQP4ASFsIAMtAPQBIUogAy0A8QEhSyADLQDwASE0IAMoAuwBIUwgAygC6AEhMiADKALkASE1IAMoAuABIU0gAygC3AEhNiAAITMMLgtBhKScAUEoQYD/mwEQxxwAC0EJISwgASgCgAEQqyEhOwwQCwJAICwNACABKALQASErQQAhMQwCCwJAIAAQ1RRFDQACQAJAIABBACAEIAQoAgBBCUYbEIQGIm1CAFENACAlICgQ4gggAyBtNwPYBgJAIAEtAJEBQSBxDQAgA0EINgKgBSAlEMolIG0Qnx8MAgsgASgCiAEhKyADQagCaiABEJUCIAEgASgCiAFBAXIQ4xEgA0HYAWogASABKALQASAlIG1BARCcBCADKALcASEAAkAgAygC2AEiLEEJRw0AIAMgADYCpAQgA0EJNgKgBCABIANBqAJqEOIFIANBCDYCoAUgCBDgBwwCCyAGICQpAwA3AwAgBkEYaiAkQRhqKQMANwMAIAZBEGogJEEQaikDADcDACAGQQhqICRBCGopAwA3AwAgAyAANgKkBCADICw2AqAEAkAgLEEIRw0AIAEgA0GoAmoQ4gUgA0EINgKgBQwCCyArQQFxIQACQEEoRQ0AIANBoAVqIANBoARqQSj8CgAACyABIAEoAogBQX5xIAByEOMRIANBqAJqENsjIAMoAqAFIgBBCEYNASADQZIBakECaiAjQQJqLQAAOgAAIAMgAy8BugU7AZYBIAMgIy8AADsBkgEgAygCrAUiPEEIdiE9IAEoAswBIT5BASEsIAMpA8AFIWsgAy0AvAUhPyADLQC5BSFAIAMtALgFIUEgAygCtAUhQiADKAKwBSFDIAMoAqgFIUQgAygCpAUhRiAqIUUgACFHDAMLQcD9mwEQ+CkACyADQaAFahDfJyABLQDYASEACwJAAkACQAJAAkAgAEH/AXEiLEEXRg0AAkACQCAsQd8ARg0AICxB9QBHDQYgARCUCyABLQDYAUGGAUYNASABKALUASEAIAEoAtABISogA0GIBGogARCXJCADQQE2AtwBIANBvLecATYC2AEgA0IBNwLkASADQY8FNgLcBiADQYYBOgCQByADIANB2AZqNgLgASADIANBoAZqNgLYBiADIANBkAdqNgKgBiADQaAEaiADQdgBahC6GSAZQQhqIANBiARqQQhqKAIANgIAIBkgAykCiAQ3AgAgKiAAIANBoARqEJcZITtBCSEsIAEtANgBQaIBRw0WIAEgARDAKRCnFgwWCyABEJQLQQAhACABLQDYAUGXAUcNBCABEMoJIixFDQQgLC0AABDVFA0CDAQLIAEQlAsgA0HYAWogAUEAQQAQ/AMgAygC2AEhACADLQDsASIrQQJGDQIgA0GgBGpBAmoiLCAeQQJqLQAAOgAAIAMgAy8B6gE7AdgGIAMgHi8AADsBoAQgAy0A6QEhLyADLQDoASEwIAMoAuQBIU4gAygC4AEhTyADKALcASEtAkAgARCEEiIxRQ0AIC2tQiCGIACthBCfH0EJISwgMSE7DBULIANBkgFqQQJqICwtAAA6AAAgAyADLwHYBjsBlgEgAyADLwGgBDsBkgFBCCEsIC1BCHYhPSABKALMASFGIC0hPCArIT8gLyFAIDAhQSBOIUIgTyFDIAAhRCAqIUcMFAsgARCUCyADQeAAaiABEPQJQQkhLCADKAJkIQACQCADKAJgQQFxDQAgAyAANgLYAQJAIAEQhBIiO0UNACADQdgBahDPAwwVCyABKALMASFGQQchLCAqIUcLIAAhOwwTCyABEJQLQQEhAAwBC0EJISwgACE7DBELIANB2AFqIAEQww4gAygC4AEhOyADKQPYASJtUA0PIAMoAuQBISwgA0EANgLoASADICw2AuQBIAMgOzYC4AEgA0EAOgDsASADIG03A9gBIANB2ABqIAEgKiADQdgBakEBIAAQzAJBCUEGIAMoAlhBAXEbISwgAygCXCE7DBALIAEoAtABISsgAS0AkQFBBXYgLEGXAUZxIjFFDQEgARCUCwwCCwwOCyAAQf8BcUHUAEYNAQtBAiEAQQAhLAwBCyABEJQLAkAgAS0A2AEiAEEYRw0AIAEoAtABIS8gA0HYAWogAUEAEPQBIAMoAtwBIQACQCADKALYASIsQYCAgIB4Rw0AIAAhOwwMCyADIAMoAuABNgKoBCADIAA2AqQEIAMgLDYCoAQCQCADKAKgAUUNACABKALMASEAIANBtIGAgHg2AtgBIC8gACADQdgBahCXGSE7AkAgAS0A2AFBogFHDQAgASABEMApEKcWCyADQaAEahDKJQwMCyADQZgBahDKJSAtIAYoAgA2AgAgAyADKQKgBDcDmAEgAS0A2AEhAAsCQAJAAkACQAJAAkAgAS0AkQFBIHFFDQACQAJAIABB/wFxQfMARw0AAkAgARDKCSIARQ0AIAAtAABB0ABHDQAgARDMJA0AIAEoAtABIQAgARCUCwJAAkAgAS0A2AFBogFGDQAgA0HYAWogASAqIAAgA0GYAWpBARCtBiADKALYASIAQQNHDQFBCSEsIAMoAtwBITsMFwtBCSEsIAEQwCkhOwwVCyADQZIBakECaiAFQQJqLQAAOgAAIAMgAy8B8gE7AZYBIAMgBS8AADsBkgEgAygC5AEiPEEIdiE9QQMhLCADKAKEAiE+IAMoAoACIUUgAykD+AEhayADLQD0ASE/IAMtAPEBIUAgAy0A8AEhQSADKALsASFCIAMoAugBIUMgAygC4AEhRCADKALcASFGIAAhRwwVCyABLQDYASIAQfMARw0BIAEQygkiAEUNACAALQAAQYIBRw0AIAEoAtQBIQAgASgC0AEhLCADQZ6BgIB4NgLYASABICwgACADQdgBahCqISABEJQLCyABLQDYASEACyAAQf8BcUGCAUcNACABKALQASEAIAEQlAsgA0HQAGogASAAELsEQQkhLCADKAJUIQAgAygCUEEBcUUNASAAITsMEQsCQCAAQf8BcSIAQdAARg0AIABB+ABHDQUgARDKCSIARQ0FIAAtAABB3QBHDQUgARDMJA0FIAEoAtABIQACQCABLQDYAUH4AEYNACABKALUASEqIANBoAZqIAEQlyQgA0EBNgKkBCADQby3nAE2AqAEIANCATcCrAQgA0GPBTYClAcgA0H4ADoAwAYgAyADQZAHajYCqAQgAyADQfgGajYCkAcgAyADQcAGajYC+AYgA0HYBmogA0GgBGoQ5A8gIkEIaiADQaAGakEIaigCADYCACAiIAMpAqAGNwIAIAAgKiADQdgGahCXGSE7IAEtANgBQaIBRw0EIAEgARDAKRCnFgwECyABEJQLIANB2AFqIAEgKkEBIAAgA0GYAWoQxQ4gAygC3AEhAAJAIAMoAtgBIipBA0cNACAAITsMBQsgA0GSAWpBAmogBUECai0AADoAACADIAMvAfIBOwGWASADIAUvAAA7AZIBIAMoAuQBIjxBCHYhPSADLQDxASFAIAMtAPABIUEgAygC7AEhQiADKALoASFDIAMoAuABIUQgAy0A9AEhPyADKQP4ASFrIAMoAoACIUUgAygChAIhPkEDISwgACFGICohRwwSCyADQdgBaiABICogASgC0AEgA0GYAWpBABCtBiADKALcASEAIAMoAtgBIipBA0YNASADQZIBakECaiAFQQJqLQAAOgAAIAMgAy8B8gE7AZYBIAMgBS8AADsBkgEgAygC5AEiPEEIdiE9IAMtAPEBIUAgAy0A8AEhQSADKALsASFCIAMoAugBIUMgAygC4AEhRCADLQD0ASE/IAMpA/gBIWsgAygCgAIhRSADKAKEAiE+QQMhLCAAIUYgKiFHDBELIAEoAswBIT5BAyEsQQIhRyAqIUUgACFGDA8LQQkhLCAAITsMDwsgA0GYAWoQyiULQQkhLAwNCyABLQDYASIAQd0ARg0CIAEtAJABQRBxRQ0BAkACQCAAQf4ARw0AAkAgARDKCSIARQ0AIAAtAABBwABGDQILIAEtANgBIQALIABB/wFxQQdHDQIgARDKCSIARQ0CIAAtAAAiAEECRg0AIABBD0cNAgsgASgCzAEhLyABKALIASEwQQAhAEEBISwLIAEtANgBQRhHDQMgASgC0AEhUCADQdgBaiABQQAQ9AEgAygC3AEhTiADKALYASJPQYCAgIB4Rw0CIE4hOwwJCwJAAkAgASgCiAEiAEHAAHENACABIABBwAByNgKIASADQTBqIAEQtBcgAygCMCErIAEgASgCiAFBv39xNgKIASADKAI0IQAMAQsgA0E4aiABELQXIAMoAjwhACADKAI4ISsLQQkhLAJAICtBAXENACADIAA2AtgBAkAgARCEEiI7RQ0AIANB2AFqEM8DDAsLIAEoAswBIUZBBCEsICohRwsgACE7DAkLIANB2AFqIAEgKkEAIAMgA0GYAWoQxQ4gAygC3AEhACADKALYASIqQQNGDQYgA0GSAWpBAmogBUECai0AADoAACADIAMvAfIBOwGWASADIAUvAAA7AZIBIAMoAuQBIjxBCHYhPSADLQDxASFAIAMtAPABIUEgAygC7AEhQiADKALoASFDIAMoAuABIUQgAy0A9AEhPyADKQP4ASFrIAMoAoACIUUgAygChAIhPkEDISwgACFGICohRwwJCyADIAMoAuABNgKoBCADIE42AqQEIAMgTzYCoAQCQCADKAKgAUUNACABKALMASEAIANBtIGAgHg2AtgBIFAgACADQdgBahCXGSE7IAEtANgBQaIBRg0CDAULIANBmAFqEMolIC0gBigCADYCACADIAMpAqAENwOYAQsgMQ0BAkACQCABLQDYASJOQfgARg0AIE5B0ABHDQEgA0HYAWogASAqIAEoAtABIANBmAFqQQAQiwQgAygC3AEhKwJAIAMoAtgBIi1BCEcNACArITsMDAsgA0HEA2pBAmogBUECai0AADoAACADIAMvAfIBOwHWASADIAUvAAA7AcQDIAMtAPEBIVEgAy0A8AEhQSADKALsASFCIAMoAugBIUMgAygC5AEhUiADKALgASFEIAMtAPQBIVMgAykD+AEhbkEAISwgLSFHICshRgwECwJAIAEQygkiTkUNACBOLQAAQd0ARw0AIAEQzCQNACADQdgBaiABIANBmAFqEMILIAMoAtwBISsCQCADKALYASItQQhHDQAgKyE7DAwLIANBxANqQQJqIAVBAmotAAA6AAAgAyADLwHyATsB1gEgAyAFLwAAOwHEAyADLQDxASFRIAMtAPABIUEgAygC7AEhQiADKALoASFDIAMoAuQBIVIgAygC4AEhRCADLQD0ASFTIAMpA/gBIW5BACEsIC0hRyArIUYMBAsgAS0A2AEhTgsCQCBOQf8BcSJPQd0ARw0AIAYgLSgCADYCACADIAMpA5gBNwOgBCADQdgBaiABIANBoARqEMcpIAMoAtwBISsCQCADKALYASItQQhHDQAgKyE7DAsLIANBxANqQQJqIAVBAmotAAA6AAAgAyADLwHyATsB1gEgAyAFLwAAOwHEAyADLQDxASFRIAMtAPABIUEgAygC7AEhQiADKALoASFDIAMoAuQBIVIgAygC4AEhRCADLQD0ASFTIAMpA/gBIW5BACEsIC0hRyArIUYMAwsCQCABLQCRAUEgcUUNACBPQdEARw0AAkAgARDKCSItRQ0AIC0tAABB/QBHDQAgASgC0AEhACABEJQLIAEQlAsgA0HIAGogASAAQQEQ+wEgAygCTCEAAkAgAygCSEEBcUUNAEEJISwgACE7DAkLIAEoAswBIT5BASEsQQYhRyAqIUUgACFGDAgLIAEtANgBIU4LAkAgTkH/AXEiLUHRAEYNAAJAIC1B4gBGDQAgLUHtAEYNAQwDCyABEMoJIi1FDQICQAJAIC0tAAAiLUF+ag4DAgECAAsgLUG1f2pBAkkNASAtQeIARg0BIC1B8QBGDQELIC1BjX9qQf8BcUEtSw0CCyADQcAAaiABQQAQ2gJBASEsIAMoAkQhKwJAIAMoAkBBAXENACBUIUQgVSFDIFYhQiBXIUFBAiFHICshRgwDC0EJISwgKyE7DAYLIAEgARDAKRCnFgwCCwJAAkACQAJAAkACQAJAICwNACABLQDYASEAAkACQAJAIAEtAJABQRBxRQ0AIAAQ1RQNAQsCQCAAQf8BcUEPRw0AIAEQygkiAEUNAiAALQAAQfUARw0CIAEtANgBIQALIANBADYCnAQgA0KAgICAgAE3ApQEIABB/wFxQQ9GDQQMBwsgA0HYAWogAUEAQQAQ/AMgAygC2AEhOyADLQDsASIAQQJGDQsgA0HcA2pBAmogHkECai0AADoAACADIB4vAAA7AdwDIAMoAugBISwgAygC5AEhLyADKALgASEwIAMoAtwBIS0MAgsgARCUCyADQdgBaiABELgFIAMoAtwBITsgAygC2AEiAEUNCiABKALMASFGQQUhLCAxITwgOyFEICohRyAAITsMCwsgA0HcA2pBAmogA0HTAWpBAmotAAA6AAAgAyADLwDTATsB3ANBACEsQeHqsaMHIS1B8ciVswYhOwsgA0EANgKcBCADQoCAgICAATcClAQgBSADLwHcAzsAACAFQQJqIANB3ANqQQJqLQAAOgAAIAMgADoA9AEgAyAsNgLwASADIC82AuwBIAMgMDYC6AEgAyAtNgLkASADIDs2AuABIANCAzcD2AEgA0GUBGogA0HYAWpB0P2bARDrHCABLQDYASEAAkAgAygCnARFDQAgAEH/AXFBB0cNAiABEMoJIgBFDQIgAC0AAEEPRw0CIAEQlAsMAQsgAEH/AXFBD0cNAgsgARCUCwJAIAEtANgBQfUARg0AIAEoAtQBIQAgASgC0AEhKiADQYgFaiABEJckIANBATYC3AEgA0G8t5wBNgLYASADQgE3AuQBIANBjwU2AtwGIANB9QA6AJAHIAMgA0HYBmo2AuABIAMgA0GgBmo2AtgGIAMgA0GQB2o2AqAGIANBoARqIANB2AFqELoZIBlBCGogA0GIBWpBCGooAgA2AgAgGSADKQKIBTcCACAqIAAgA0GgBGoQlxkhOyABLQDYAUGiAUcNBCABIAEQwCkQpxYMBAsgARCUCyADQaAEaiABEIAKIAMoAqgEITsgAykDoAQibUICUQ0DICEgGSkCADcCACAhQRBqIBlBEGooAgA2AgAgIUEIaiAZQQhqKQIANwIAIAMgKzYCgAIgAyA7NgLoASADIG03A+ABIANCAjcD2AEgAyABKALMATYChAIgA0GUBGogA0HYAWpB4P2bARDrHAsgAS0A2AEhAAsCQAJAAkACQCAAQf8BcSIAQf4ARg0AIAEtAJABQRBxDQEgASgC1AEhACABKALQASEqIANBlAVqIAEQlyQgA0EBNgLcASADQby3nAE2AtgBIANCATcC5AEgA0GPBTYC3AYgA0H+ADoAkAcgAyADQdgGajYC4AEgAyADQaAGajYC2AYgAyADQZAHajYCoAYgA0GgBGogA0HYAWoQuhkgGUEIaiADQZQFakEIaigCADYCACAZIAMpApQFNwIAICogACADQaAEahCXGSE7IAEtANgBQaIBRw0FIAEgARDAKRCnFgwFCyADQdgBaiABELgFIAMoAtwBIQAgAygC2AEiKw0BIAAhOwwECyAAQQdGDQEgASgC1AEhACABKALQASEqIANByANqIAEQlyQgA0EBNgLcASADQby3nAE2AtgBIANCATcC5AEgA0GPBTYC3AYgA0EHOgCQByADIANB2AZqNgLgASADIANBoAZqNgLYBiADIANBkAdqNgKgBiADQaAEaiADQdgBahC6GSAZQQhqIANByANqQQhqKAIANgIAIBkgAykCyAM3AgAgKiAAIANBoARqEJcZITsgAS0A2AFBogFHDQMgASABEMApEKcWDAMLIAEoAswBIjxBCHYhPUECISwgAygCnAQhRiADKAKYBCFHIAMoApQEITsgMSFBIAAhQiArIUMgKiFEDAcLIAEQlAsgAS0A2AEhAAsCQAJAIABB/wFxQQJHDQAgWCErAkACQANAIAEQlAsgAS0A2AFBA0YNASABKALQASFYIANB2AFqIAEQgAogAygC4AEhOyADKQPYASJtQgJRDQQgA0H4BmpBEGoiLCAdQRBqIi8oAgA2AgAgA0H4BmpBCGoiLSAdQQhqIgApAgA3AwAgAyAdKQIANwP4BgJAAkACQCBtp0EBcUUNACAZIAMpA/gGNwIAIBlBCGogLSkDADcCACAZQRBqICwoAgA2AgAgAyA7NgKoBCADIG03A6AEQQAhLAwBCyAgIAMpA/gGNwIAICBBCGoiMCAtKQMANwIAICBBEGoiLSAsKAIANgIAIAMgOzYCkAcCQAJAIAEtAJEBQSBxRQ0AIANBkAdqQZD+mwFBBBDYH0UNACABLQDYARDVFEUNACADQdgGaiABEMMOIANB2AFqIANB2AZqELoiIAMoAtgBITsCQAJAIAMtAOwBIixBAkYNACAVIB8pAgA3AgAgFCAeLwAAOwAAIBVBCGoiTiAfQQhqIk8pAgA3AgAgFEECaiAeQQJqIlAtAAA6AAAgAyAsOgC0BiADIDs2AqAGAkACQAJAAkACQAJAIANBoAZqQaSAnAFBAhDYHw0AIDENAQwFCwJAIAEtANgBENUUDQAgMUUNBCADKAKcByEsIAMoApgHISsgA0GngYCAeDYC2AEgASArICwgA0HYAWoQqiEMBAsgA0HYBWogARDDDiADQdgBaiADQdgFahC6IiADKALYASE7IAMtAOwBIixBAkYNAiATIB8pAgA3AgAgEiAeLwAAOwAAIBNBCGoiWSBPKQIANwIAIBJBAmoiWiBQLQAAOgAAIAMgLDoA7AYgAyA7NgLYBgJAIANB2AZqQaSAnAFBAhDYH0UNACABLQDYARDVFEUNACADQdgFaiABEMMOIANB2AFqIANB2AVqELoiIAMoAtgBISwCQCADLQDsASItQQJHDQAgAykD2AYQnx8gAykDoAYQnx9CAiFtICwhOyArIVgMCAsgA0HwBWpBCGoiKyBPKQIANwMAIANB6ARqQQJqIjsgUC0AADoAACADIB8pAgA3A/AFIAMgHi8AADsB6AQgMUUNAiADKAKcByFbIAMoApgHIVwgA0GngYCAeDYC2AEgASBcIFsgA0HYAWoQqiEMAgsgA0HABmpBCGogMCkCADcDACADQcAGakEQaiAtKAIANgIAIANB8ARqQQhqIFkpAgA3AwAgA0H0A2pBAmogWi0AADoAACADICApAgA3A8AGIAMgEykCADcD8AQgAyASLwAAOwH0AyADKAKQByE7IAMoApwHIVsgAygC2AYhXSADLQDsBiFeIAMpA6AGEJ8fQgAhb0EAIVwgWCErQgAhbQwKCyADKAKcByEsIAMoApgHIS0gA0GngYCAeDYC2AEgASAtICwgA0HYAWoQqiEMAwsgA0HABmpBCGogTikCADcDACADQcAGakEQaiAVQRBqKAIANgIAIANB8ARqQQhqICspAwA3AwAgA0H0A2pBAmogOy0AADoAACADIAMpA/AFNwPwBCADIAMvAegEOwH0AyADIBUpAgA3A8AGIAMoAqAGITsgAygCnAchWyADKQPYBhCfH0EBIVxCACFtQgAhbyAsIV0gLSFeDAQLIAMpA6AGEJ8fDAILIANBwAZqQQhqIE4pAgA3AwAgA0HABmpBEGogFUEQaigCADYCACADIBUpAgA3A8AGIAEoAswBIVtBASFcQgIhb0IAIW0gAygCoAYhOwwCCyAGIAMpA6AGNwMAIAZBEGogA0GgBmpBEGopAwA3AwAgBkEIaiADQaAGakEIaikDADcDACADQgA3A6AEIAMpA5AHEJ8fQQEhLAwDC0ICIW0gKyFYCyADKQOQBxCfHyBtQgJRDQkgWCErDAMLIAYgAykDkAc3AwAgBkEQaiADQZAHakEQaikDADcDACAGQQhqIANBkAdqQQhqKQMANwMAIANCADcDoARBACEsC0IAIW0LAkACQCABLQDYAUH1AEYNAEICIW8MAQsgARCUCyADQdgBaiABEIAKIAMoAuABITsgAykD2AEicEICUQ0EIANBiAZqQQhqIAApAgA3AwAgA0GsA2pBAmogBUECai0AADoAACADIB0pAgA3A4gGIAMgBS8AADsBrAMgAy0A9AEhXyA7IV0gcCFvCyADQcAGakEIaiAZQQhqKQIANwMAIANBwAZqQRBqIBlBEGooAgA2AgAgA0HwBGpBCGogA0GIBmpBCGopAwA3AwAgA0H0A2pBAmogA0GsA2pBAmotAAA6AAAgAyADKQOIBjcD8AQgAyADLwGsAzsB9AMgAyAZKQIANwPABiABKALMASFbIAMoAqgEITsgLCFcIFghKyBfIV4LIB0gAykDwAY3AgAgHCADKQPwBDcCACAbIAMvAfQDOwAAIC8gA0HABmpBEGooAgA2AgAgACADQcAGakEIaikDADcCACAcQQhqIANB8ARqQQhqKQMANwIAIBtBAmogA0H0A2pBAmotAAA6AAAgAyBdNgKAAiADIG83A/gBIAMgXjoAlAIgGiADKAC4AzYAACAaQQNqIANBuANqQQNqKAAANgAAIAMgXDoAoAIgAyBbNgKcAiADICs2ApgCIAMgOzYC4AEgAyBtNwPYASADQZQEaiADQdgBakHw/ZsBEOscAkAgAS0A2AFBfWoOBQIAAAABAAsLIAEoAtQBIQAgASgC0AEhKiADQfgDaiABEJckIANBATYC3AEgA0G8t5wBNgLYASADQgE3AuQBIANBjwU2AtwGIANBBzoAkAcgAyADQdgGajYC4AEgAyADQaAGajYC2AYgAyADQZAHajYCoAYgA0GgBGogA0HYAWoQuhkgGUEIaiADQfgDakEIaigCADYCACAZIAMpAvgDNwIAICogACADQaAEahCXGSE7IAEtANgBQaIBRw0DIAEgARDAKRCnFgwDCyABEJQLAkACQAJAIAEtANgBQf4ARg0AIAMoApgEIkcgAygCnAQiRkHQAGxqIUQgRyEsDAELIANB2AFqIAEQuAUgAygC3AEhOyADKALYASIARQ0EIAMoApwEIUYgAygCmAQhRyAAIUMMAQsDQAJAAkACQCAsIgAgREYNACAAQdAAaiEsAkAgACkDACJwQn58Im1CAiBtQgJUG6cOAwACAwALIAApAxAQxiAhbSAAKAIsIS0gACgCKCEAIANB7ICAgHg2AtgBIAMgbTcD4AEgASAAIC0gA0HYAWoQqiEMAwsgARCdHhpBACFDDAMLIAAoAhQhLSAAKAIQITsgACkDCBDGICFtIANB7ICAgHg2AtgBIAMgbTcD4AEgASA7IC0gA0HYAWoQqiEMAQsCQCBwp0EBcUUNACAAKAIUIS0gACgCECEAIANB8ICAgHg2AtgBIAEgACAtIANB2AFqEKohDAELQdDXngFB0NeeARDEJRogAEEIaiEtQQAoAtzXngFFDQBBACE8QQAoAtDXngEiQ0F4aiFCIC0pAwAQyB4ibUIZiEKBgoSIkKDAgAF+IXBBACgC1NeeASJBIG2ncSE7AkADQAJAIEMgO2opAAAicSBwhSJtQn+FIG1C//379+/fv/9+fINCgIGChIiQoMCAf4MibVANAANAIC0gQiBteqdBA3YgO2ogQXFBA3RrEIQMDQMgbUJ/fCBtgyJtUEUNAAsLIHEgcUIBhoNCgIGChIiQoMCAf4NQRQ0CIDsgPEEIaiI8aiBBcSE7DAALCyAAKAIUIS0gACgCECE7IAApAwgQxiAhbSADQeyAgIB4NgLYASADIG03A+ABIAEgOyAtIANB2AFqEKohDAALCyA7QQAgQxshQiABKALMASI8QQh2IT1BAiEsIAMoApQEITsgMSFBICohRCArIVgMCAsgA0GgBGoQ3yMMAQsgASgC1AEhACABKALQASEqIANB4ANqIAEQlyQgA0EBNgLcASADQby3nAE2AtgBIANCATcC5AEgA0GPBTYC3AYgA0ECOgCQByADIANB2AZqNgLgASADIANBoAZqNgLYBiADIANBkAdqNgKgBiADQaAEaiADQdgBahC6GSAZQQhqIANB4ANqQQhqKAIANgIAIBkgAykC4AM3AgAgKiAAIANBoARqEJcZITsgAS0A2AFBogFHDQEgASABEMApEKcWDAELICshWAsgA0GUBGoQgCYMAwsgA0GSAWpBAmogA0HEA2pBAmotAAA6AAAgAyADLwHWATsBlgEgAyADLwHEAzsBkgEgASgCzAEhSELxyJWzlqydtvQAIAAQoiYgUkEIdiE9AkAgLEUNACADQZgBahDKJQtBASEsIFEhQCBBIVcgQiFWIEMhVSBEIVQgUiE8IEghPiAqIUUgbiJsIWsgUyJKIT8MBQsgA0GgBGoQyiUMAQtBCSEsIAAhOwwCC0EJISwLIANBmAFqEMolCyAsQQlGDQEgPyFKIGshbCBFISogPiFICyADQeoAakECaiADQZIBakECai0AADoAACADIAMvAZYBOwFuIAMgAy8BkgE7AWogPUEIdCA8Qf8BcXIhNSAqIUkgQCFLIEEhNCBCIUwgQyEyIEQhTSBGITYgRyEzIDshKgwZC0EKISwgOyEqDBgLIDEhLgwUCyADKQOoARCfHyARIDEpAgA3AgAgLCAxQQhqKQIANwIAIBAgKi8AADsAACAvICpBAmotAAA6AAAgAyAuNgKoASADIAA6ALwBQQEhMQsCQCABLQCRAUEgcUUNACABLQDYAUH/AXFBF0YNAgsgA0EQaiADQagBahCcFQJAIAMoAhAiACADKAIUIi5BlP6bAUEGEK4jDQBBACEqIAAgLkGa/psBQQUQriNFDQQLIANBCGogA0GoAWoQnBUCQAJAIAMoAggiACADKAIMIipBlP6bAUEGEK4jIi5FDQBBASEqDAELIAAgKkGa/psBQQUQriNFDQNBAiEqCyABLQDYASIAQQJGDQAgAEEPRg0AAkACQCABKAKIASAAEMQNRQ0AIABB/gBHDQELQQAhKiABEMoJIgBFDQQgAC0AAEH+AEcNBAtBACEqIC5FDQAgA0GgBGogARCPDSADKAKgBCEuIAMtALQEIgBBAkYNBCADQfgDakEIaiIqICspAgA3AwAgA0H0A2pBAmoiKyAwLQAAOgAAIAMgCCkCADcD+AMgAyAPLwAAOwH0AyADKQOoARCfHyARIAMpA/gDNwIAICwgKikDADcCACAQIAMvAfQDOwAAIC8gKy0AADoAACADIC42AqgBIAMgADoAvAFBASEqDAMLIAMpA6gBEJ8fDAYLIBggA0GoAWpBEGopAwA3AwAgBiAnKQMANwMAIAMgAykDqAE3A6AEIAMgASAtIANBoARqQQAgMRDMAkEKQQYgAygCAEEBcRshLCADKAIEIS4MDwtBhKScAUEoQaD+mwEQxxwACyABLQDYASIAQQdGDQEgAEH+AEYNAiABKALUASEAIAEoAtABISogA0GIBGogARCXJCADQQE2AqQEIANBvLecATYCoAQgA0IBNwKsBCADQY8FNgLcBiADQQc6AJAHIAMgA0HYBmo2AqgEIAMgA0GgBmo2AtgGIAMgA0GQB2o2AqAGIANBoAVqIANBoARqELoZIAdBCGogA0GIBGpBCGooAgA2AgAgByADKQKIBDcCACAqIAAgA0GgBWoQlxkhLiABLQDYAUGiAUcNACABIAEQwCkQpxYLIAMpA6gBEJ8fDAsLIAEQlAsLIBggAykDqAE3AwAgGEEIaiAnKQMAIm03AwAgGEEQaiADQagBakEQaikDADcDACADQgM3A6AEIAMgbTcDqAQgA0G4A2ogA0GgBGpBsP6bARDsHAtBASErICpBAUYNBCABLQDYASIAQQ9HDQEgKiEwCyABKALQASEAIAEQlAsgAS0A2AFB9QBGDQIgASgC1AEhACABKALQASEqIANBlARqIAEQlyQgA0EBNgKkBCADQby3nAE2AqAEIANCATcCrAQgA0GPBTYCrAEgA0H1ADoAoAYgAyADQagBajYCqAQgAyADQdgGajYCqAEgAyADQaAGajYC2AYgA0GgBWogA0GgBGoQuhkgB0EIaiADQZQEakEIaigCADYCACAHIAMpApQENwIAICogACADQaAFahCXGSEuIAEtANgBQaIBRw0HIAEgARDAKRCnFgwHCyAxITAgKkUNACAqISsMAwtBACErAkAgAEH/AXFBAkcNAAJAA0AgARCUCyABLQDYAUEDRg0BIAEoAtABITEgA0GgBWogARCACiADKAKoBSEAAkACQAJAAkACQAJAIAMpA6AFIm1CAlINACAAIWAMAQsgAykDuAUhcCADKAK0BSEsIAMoArAFIS4gAygCrAUhKgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIG2nQQFxRQ0AIAEtANgBQfUARg0BIAMgKjYCrAUgAyAANgKoBSADQe+AgIB4NgKgBSAuICwgA0GgBWoQlxkhYCABLQDYAUGiAUcNAiABIAEQwCkQpxYMAgsgAyBwNwPoBSADICw2AuQFIAMgLjYC4AUgAyAqNgLcBSADIAA2AtgFQQAhACABLQCRAUEgcUUNCCADQdgFakGQ/psBQQQQ2B9FDQhBACEAIAEtANgBIioQ1RRFDQkgA0GIBmogARDDDiADQaAFaiADQYgGahC6IiADKAKgBSEAAkAgAy0AtAUiKkECRw0AQgUhbSAAIWAMDAsgFyAMKQIANwIAIBYgCi8AADsAACAXQQhqIAxBCGoiLCkCADcCACAWQQJqIApBAmotAAA6AAAgAyAqOgCEBiADIAA2AvAFAkAgA0HwBWpBpICcAUECENgfDQAgMEUNCCADKALkBSEAIAMoAuAFISogA0GmgYCAeDYCoAUgASAqIAAgA0GgBWoQqiEMCAsCQCABLQDYARDVFA0AIDBFDQYgAygC5AUhACADKALgBSEqIANBpoGAgHg2AqAFIAEgKiAAIANBoAVqEKohDAYLIANBoAVqIAFBABCzBSADKAKgBSFgAkACQCADLQC0BSIAQQJGDQAgFSAMKQIANwIAIBQgCikAADcAACAVQQhqICwpAgA3AgAgFEEHaiAKQQdqIiooAAA2AAAgAyAAOgC0BiADIGA2AqAGIANBiAZqIANBoAZqEJ0YAkAgA0GIBmpBpICcAUECENgfDQAgA0HwBGpBCGogA0GIBmpBCGopAwA3AwAgA0HwBGpBEGogA0GIBmpBEGopAwA3AwAgAyADKQOIBjcD8AQgAygC4AUhYSADKALcBSFiIAMoAuQFImMhZAwHCwJAIAEtANgBENUUDQAgA0HwBGpBCGogA0GIBmpBCGopAwA3AwAgA0HwBGpBEGogA0GIBmpBEGopAwA3AwAgAyADKQOIBjcD8AQgAygC5AUhYyADKALgBSFhIAMoAtwFIWIgAygClAYhZAwHCyADQaAFaiABQQAQswUgAygCoAUhYCADLQC0BSIAQQJHDQEgAykDiAYQnx8LIAMpA/AFEJ8fDAsLIBMgDCkCADcCACASIAopAAA3AAAgE0EIaiAsKQIANwIAIBJBB2ogKigAADYAACADIAA6AOwGIAMgYDYC2AYgA0HABmogA0HYBmoQnRggMA0CDAMLIAEQlAsgA0GgBWogAUEAELMFIAMoAqAFIWACQCADLQC0BSIvQQJGDQAgCCAMKQIANwIAIA8gCikAADcAACAIQQhqIAxBCGopAgA3AgAgD0EHaiAKQQdqKAAANgAAIAMgLzoAtAQgAyBgNgKgBCADQZAHaiADQaAEahCdGCADQfAEakEIaiADQZAHakEIaikDADcDACADQfAEakEQaiADQZAHakEQaikDADcDACADIAMpA5AHNwPwBEEAIWVCASFtIAMoApwHIWQgMSFmIHAhciAsIWMgLiFhICohYiAAIWAMEAsgKq1CIIYgAK2EEJ8fCyBwEK0oDAoLIAMoAuQFIQAgAygC4AUhKiADQaaBgIB4NgKgBSABICogACADQaAFahCqIQsgA0HwBGpBCGogA0HABmpBCGopAwA3AwAgA0HwBGpBEGogA0HABmpBEGopAwA3AwAgAyADKQPABjcD8AQgAykDgAYhciADKAL8BSFjIAMoAvgFIWEgAygC9AUhYiADKALwBSFgIAMoAuQFIWQgAykDiAYQnx9CACFtDAILIAMoAtgFIWAgAykD6AUhciADKQPwBRCfH0EAIWUMCQsgA0HwBGpBCGogA0HwBWpBCGopAwA3AwAgA0HwBGpBEGogA0HwBWpBEGopAwA3AwAgAyADKQPwBTcD8AQgASgCzAEhZEICIW0LQQEhZSAxIWYMBAsgA0GgBWpBEGoiACADQfAFakEQaikDADcDACADQaAFakEIaiIqIANB8AVqQQhqKQMANwMAIAMgAykD8AU3A6AFIAMpA9gFEJ8fIANB2AVqQRBqIAApAwA3AwAgA0HYBWpBCGogKikDADcDACADIAMpA6AFNwPYBUEBIQALIAEtANgBISoLAkAgKkH/AXFB9QBGDQAgA0HwBGpBEGogA0HYBWpBEGopAwA3AwAgA0HwBGpBCGogA0HYBWpBCGopAwA3AwAgAyADKQPYBTcD8AQgASgCzAEhZEICIW0gACFlDAYLIAEQlAsgA0GgBWogAUEAELMFIAMoAqAFIWAgAy0AtAUiKkECRw0DC0IFIW0LIAMpA9gFEJ8fIG1CBVINBAtBCiEsIGAhLgwNCyARIAwpAgA3AgAgECAKKQAANwAAIBFBCGogDEEIaikCADcCACAQQQdqIApBB2ooAAA2AAAgAyAqOgC8ASADIGA2AqgBIANB+AZqIANBqAFqEJ0YIANB8ARqQQhqIANB+AZqQQhqKQMANwMAIANB8ARqQRBqIANB+AZqQRBqKQMANwMAIAMgAykD+AY3A/AEIAMpA+gFIXIgAygC5AUhYyADKALgBSFhIAMoAtwFIWIgAygC2AUhYCADKAKEByFkIAAhZQtCACFtCyAxIWYLIA4gAykD8AQ3AwAgDSADKADoBDYAACAOQQhqIANB8ARqQQhqKQMANwMAIA5BEGogA0HwBGpBEGopAwA3AwAgDUEDaiADQegEakEDaigAADYAACADIHI3A/ABIAMgYzYC7AEgAyBhNgLoASADIGI2AuQBIAMgZToAmAIgAyBkNgKUAiADIGY2ApACIAMgYDYC4AEgAyBtNwPYASADQbgDaiADQdgBakHA/psBEOwcAkAgAS0A2AFBfWoOBQIAAAABAAsLIAEoAtQBIQAgASgC0AEhKiADQYgFaiABEJckIANBATYCpAQgA0G8t5wBNgKgBCADQgE3AqwEIANBjwU2AqwBIANBBzoAoAYgAyADQagBajYCqAQgAyADQdgGajYCqAEgAyADQaAGajYC2AYgA0GgBWogA0GgBGoQuhkgB0EIaiADQYgFakEIaigCADYCACAHIAMpAogFNwIAICogACADQaAFahCXGSEuIAEtANgBQaIBRw0HIAEgARDAKRCnFgwHCyABEJQLCyAwITEMAQsgARCUCyADQaAFaiABEI8NIAMoAqAFIS4gAy0AtAUiKkECRg0EIAsgDCkCADcCACAJIAovAAA7AAAgC0EIaiAMQQhqKQIANwIAIAlBAmogCkECai0AADoAACADICo6AMQEIAMgLjYCsAQgAyAANgKoBCADQgQ3A6AEIAMgASgCzAE2AqwEIANBuANqIANBoARqQdD+mwEQ7BwgMCErCyABLQDYASEACwJAIABB/wFxQf4ARg0AIAEoAtQBIQAgASgC0AEhKiADQZQFaiABEJckIANBATYCpAQgA0G8t5wBNgKgBCADQgE3AqwEIANBjwU2AqwBIANB/gA6AKAGIAMgA0GoAWo2AqgEIAMgA0HYBmo2AqgBIAMgA0GgBmo2AtgGIANBoAVqIANBoARqELoZIAdBCGogA0GUBWpBCGooAgA2AgAgByADKQKUBTcCACAqIAAgA0GgBWoQlxkhLiABLQDYAUGiAUcNAyABIAEQwCkQpxYMAwsgARCUCwJAIAEtANgBQcAARg0AIAggARCXJCADQRA2ArQEIANB4P6bATYCsAQgA0GwgICAeDYCoAQgASgC0AEgASgC1AEgA0GgBGoQlxkhLiABLQDYAUGiAUcNAyABIAEQwCkQpxYMAwsgA0GgBGogARC1GUEYQQgQ0yciAEEQaiAYKQMANwMAIABBCGogBikDADcDACAAIAMpA6AENwMAQQAhKgJAAkACQCABLQDZAQ0AAkAgAS0A2AEiLEH3AEYNACAsQfAARw0BCyABEJQLIANBoARqIAEQnx4gAygCpAQhLiADKAKgBCIqQTJGDQECQEE4RQ0AIANBoAVqIAZBOPwKAAALICpBDkcNBEEUQQQQ0yciKiAuNgIAICogAykDoAU3AgQgKkEMaiADQaAFakEIaikDADcCAAsgARCEEiIuRQ0BICoQ1SkLIAAQkSUMAwsgASgCzAEhMiADKALAAyE2IAMoArwDITMgAygCuAMhLkEAISwgMSE0IC0hNQsgKyE3IDQhOCAqITkgMiE6IDUhZyAAIWggNiFpIDMhagwFC0GEpJwBQShB8P6bARDHHAALQQohLAsgA0G4A2oQgSYgLEEKRg0AIGohMyBpITYgaCEAIGchNSA6ITIgOSEqIDghNCA3ISsMAgsgLiEqCyAoEMolQQohLAwBCyADQeoAakECaiADQdMBakECai0AADoAACADIAMvAZIBOwFuIAMgAy8A0wE7AWogKBDKJSArIUsgKiFMIAAhTSAuISoLICxBCkYNAiADQfAAakECaiItIANB6gBqQQJqLQAAOgAAIAMgAy8BbjsBdCADIAMvAWo7AXACQCACKAIIIisgAigCAEcNACACQbTsmwEQ8BsLIAIoAgQgK0E4bGoiACBLOgAhIAAgNDoAICAAIEw2AhwgACAyNgIYIAAgNTYCFCAAIE02AhAgACA2NgIMIAAgMzYCCCAAICo2AgQgACAsNgIAIAAgSjoAJCAAIAMvAXQ7ASIgACADLwFwOwAlIABBJ2ogLS0AADoAACAAIEg2ATQgACBJNgEwIAAgbDcBKCACICtBAWo2AggMAAsLQQAhKgsgA0GwB2okACAqC/dmAhF/An4jAEGAAmsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAgAiA0F0aiIEQQcgBEEmSRsOJgABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlAAsgACABKQMANwMAIABBOGogAUE4aikDADcDACAAQTBqIAFBMGopAwA3AwAgAEEoaiABQShqKQMANwMAIABBIGogAUEgaikDADcDACAAQRhqIAFBGGopAwA3AwAgAEEQaiABQRBqKQMANwMAIABBCGogAUEIaikDADcDAAwuCyABKAIIIQMgASgCFCEFIAEoAhAhBiACQZABaiABKAIMIgdBBEEQEPcOIAIoApQBIQggAigCkAFBAUYNJCACKAKYASEJAkAgCEUNACAHQQR0IQogCSEEIAghCwNAIApFDQECQCADKAIAIgxBAkYNACADQQRqKQIAIRMgA0EMaigCACENELUlIQEgAkGQAWogDRBCIAFBOGogAkGQAWpBOGopAwA3AwAgAUEwaiACQZABakEwaikDADcDACABQShqIAJBkAFqQShqKQMANwMAIAFBIGogAkGQAWpBIGopAwA3AwAgAUEYaiACQZABakEYaikDADcDACABQRBqIAJBkAFqQRBqKQMANwMAIAFBCGogAkGQAWpBCGopAwA3AwAgASACKQOQATcDAAsgA0EQaiEDIAQgDDYCACAEQQxqIAE2AgAgBEEEaiATNwIAIARBEGohBCAKQXBqIQogC0F/aiILDQALCyAAIAU2AhQgACAGNgIQIAAgBzYCDCAAIAk2AgggACAINgIEIABBDTYCAAwtCyABKAIQIQQgASgCFCEDIAJBkAFqIAFBBGoQoAEgAEEUaiADNgIAIABBDjYCACAAIAIpApABNwIEIAIgBDYCnAEgAEEMaiACQZgBaikCADcCAAwsCwJAAkAgAS0AHCINQQJHDQAMAQsgASgCGCEJIAEoAhQhByABKAIQIQggASkDCCITQgODQgBSDQAgE6ciBCAEKAIAIgRBAWo2AgAgBEF/TA0kCyABKAIgIQQQwSUhASACQYABaiAEEPcIIAJBIGogBEEMahDiCEGAgICAeCEMIAQoAjghBSAEKAI0IQYgBCgCMCEOAkAgBCgCGEGAgICAeEYNACAEKAIsIQMgBCkCJCEUIAJBkAFqIARBGGoQsAogAkHYAGogFDcDACACQeAAaiADNgIAIAIgAikClAE3A1AgAigCkAEhDAsgBC0ARSEPIAQtAEQhEEEAIQpBACEDAkAgBCgCPCILRQ0AELolIQMgCygCDCERIAsoAhAhEiACQZABaiALENwGIANBEGogEjYCACADIAIpApABNwIAIAIgETYCnAEgA0EIaiACQZABakEIaikCADcCAAsCQCAEKAJAIgRFDQAQtyUhCiAEKQIEIRQgBCgCACELELglIQQgAkGQAWogCxBzAkBB4ABFDQAgBCACQZABakHgAPwKAAALIAogFDcCBCAKIAQ2AgALIAJBkAFqQQhqIgQgAkGAAWpBCGooAgA2AgAgAkGkAWogAkEgakEIaigCADYCACACIAIpAoABIhQ3A5ABIAIgAikCIDcCnAEgAUEQaiACQZABakEQaikDADcCACABQQhqIAQpAwA3AgAgASAUNwIAIAEgDDYCGCABIA86AEUgASAQOgBEIAEgCjYCQCABIAM2AjwgASAFNgI4IAEgBjYCNCABIA42AjAgASACKQNQNwIcIAFBJGogAkHQAGpBCGopAwA3AgAgAUEsaiACQdAAakEQaigCADYCACAAIAE2AiAgACANOgAcIAAgCTYCGCAAIAc2AhQgACAINgIQIAAgEzcDCCAAQQ82AgAMKwsgASkDCCETIAEtABAhAxC1JSEEIAJBkAFqIAEoAgQQQiAEQThqIAJBkAFqQThqKQMANwMAIARBMGogAkGQAWpBMGopAwA3AwAgBEEoaiACQZABakEoaikDADcDACAEQSBqIAJBkAFqQSBqKQMANwMAIARBGGogAkGQAWpBGGopAwA3AwAgBEEQaiACQZABakEQaikDADcDACAEQQhqIAJBkAFqQQhqKQMANwMAIAQgAikDkAE3AwAgACADOgAQIAAgEzcDCCAAIAQ2AgQgAEEQNgIADCoLIAEpAgQhEyABLwEQIQMQtSUhBCACQZABaiABKAIMEEIgBEE4aiACQZABakE4aikDADcDACAEQTBqIAJBkAFqQTBqKQMANwMAIARBKGogAkGQAWpBKGopAwA3AwAgBEEgaiACQZABakEgaikDADcDACAEQRhqIAJBkAFqQRhqKQMANwMAIARBEGogAkGQAWpBEGopAwA3AwAgBEEIaiACQZABakEIaikDADcDACAEIAIpA5ABNwMAIAAgAzsBECAAIAQ2AgwgACATNwIEIABBETYCAAwpCyABKQIMIRMgAS0AFCEKELUlIQQgAkGQAWogASgCBBBCIARBOGogAkGQAWpBOGoiCykDADcDACAEQTBqIAJBkAFqQTBqIgwpAwA3AwAgBEEoaiACQZABakEoaiINKQMANwMAIARBIGogAkGQAWpBIGoiCCkDADcDACAEQRhqIAJBkAFqQRhqIgcpAwA3AwAgBEEQaiACQZABakEQaiIJKQMANwMAIARBCGogAkGQAWpBCGoiBSkDADcDACAEIAIpA5ABNwMAELUlIQMgAkGQAWogASgCCBBCIANBOGogCykDADcDACADQTBqIAwpAwA3AwAgA0EoaiANKQMANwMAIANBIGogCCkDADcDACADQRhqIAcpAwA3AwAgA0EQaiAJKQMANwMAIANBCGogBSkDADcDACADIAIpA5ABNwMAIAAgCjoAFCAAIBM3AgwgACADNgIIIAAgBDYCBCAAQRI2AgAMKAsgAS0APCELIAEoAjQhDCABKAIwIQ0CQCADQQtHDQACQAJAAkAgASgCBCIIDgMAAQIACyABKAIYIQcgASgCFCEJIAJBIGogAUEIahC3CSABLQAgIQUCQAJAIAEoAhwiBA0AQQAhCgwBCxC3JSEKIAQpAgQhEyAEKAIAIQYQuCUhBCACQZABaiAGEHMCQEHgAEUNACAEIAJBkAFqQeAA/AoAAAsgCiATNwIEIAogBDYCAAsgAigCKCEGIAIpAyAhEwwpCyABKAIYIQcgASgCFCEJIAJB0ABqIAFBCGoQ4AIgAS0AICEFAkACQCABKAIcIgQNAEEAIQoMAQsQtyUhCiAEKQIEIRMgBCgCACEGELglIQQgAkGQAWogBhBzAkBB4ABFDQAgBCACQZABakHgAPwKAAALIAogEzcCBCAKIAQ2AgALIAIoAlghBiACKQNQIRMMKAsgAkGOAWogAUEjai0AADoAACACIAEvACE7AYwBIAEtACAhBSABKAIcIQogASgCGCEHIAEoAhQhCSABKAIQIQYgASkDCCETDCcLAkACQAJAAkACQAJAAkACQAJAAkACQCADDgsAAQIDBAUGBwgJCgALIAJBkAFqIAFBCGoQvQwgAkGOAWogAkGrAWotAAA6AAAgAiACLwCpATsBjAEgAi0AqAEhBSACKAKkASEKIAIoAqABIQcgAigCnAEhCSACKAKYASEGIAIpA5ABIRMgAigCrAEhDgwwCyACQZABaiABQQhqELsGIAJBjgFqIAJBqwFqLQAAOgAAIAIgAi8AqQE7AYwBDC4LIAJBkAFqIAFBCGoQ4wggAkGOAWogAkGrAWotAAA6AAAgAiACLwCpATsBjAEMLQsgAkGQAWogAUEEahCXDgwrCyACQZABaiABQQRqEPQDDCkLIAJBkAFqIAFBBGoQogwMKAsgAkGQAWogAUEEahCiDAwnCyACQZABaiABQQRqEJcODCcLIAJBkAFqIAFBBGoQogwMJQsgAkGQAWogAUEEahCECwwkCyACQY4BaiABQSNqLQAAOgAAIAIgAS8AITsBjAEgASkDKCEUIAEoAiQhDiABLQAgIQUgASgCHCEKIAEoAhghByABKAIUIQkgASgCECEGIAEpAwghEyABKAIEIQgMJgsgASgCJCEKIAEoAiAhCxC1JSEEIAJBkAFqIAEoAigQQiAEQThqIAJBkAFqQThqIgcpAwA3AwAgBEEwaiACQZABakEwaiIJKQMANwMAIARBKGogAkGQAWpBKGoiBSkDADcDACAEQSBqIAJBkAFqQSBqIgYpAwA3AwAgBEEYaiACQZABakEYaiIOKQMANwMAIARBEGogAkGQAWpBEGoiDykDADcDACAEQQhqIAJBkAFqQQhqIhApAwA3AwAgBCACKQOQATcDAAJAAkACQAJAIAEoAggiDA4DAAECAAsgASgCFCEDIAEoAhAhDSABKAIcIQggASgCGCEHAkAgASkDECITQgODQgBSDQAgE6ciASABKAIAIgFBAWo2AgAgAUF/TA0iCyACIAM2ApABIAJB0ABqIQEMAgsgASgCFCEDIAEoAhAhDSABKAIcIQggASgCGCEHAkAgASkDECITQgODQgBSDQAgE6ciASABKAIAIgFBAWo2AgAgAUF/TA0hCyACIAM2ApABIAJB0ABqIQEMAQsgASgCFCEIIAEoAhAhDRC1JSEDIAJBkAFqIAEoAgwQQiADQThqIAcpAwA3AwAgA0EwaiAJKQMANwMAIANBKGogBSkDADcDACADQSBqIAYpAwA3AwAgA0EYaiAOKQMANwMAIANBEGogDykDADcDACADQQhqIBApAwA3AwAgAyACKQOQATcDACACQZABaiEBCyABIAg2AgAgACANNgIQIAAgAzYCDCAAIAw2AgggACAHNgIYIAAgBDYCKCAAIAo2AiQgACALNgIgIABBFDYCACAAIAIoApABNgIUIAAgAigCUDYCHAwmC0EBIQQgASgCLCEDIAEoAighCiABKAIkIQsgASgCICEMAkACQCABKAIIQQFHDQAgASkDECETIAFBDGoQmg8hAQwBCyABKAIcIQggASgCGCENQQAhBAJAIAEpAxAiE0IDg0IAUQ0ADAELIBOnIgEgASgCACIHQQFqNgIAIAdBf0wNHgsgACADNgIsIAAgCjYCKCAAIAs2AiQgACAMNgIgIAAgCDYCHCAAIA02AhggACATNwMQIAAgATYCDCAAIAQ2AgggAEEVNgIADCULIAEpAxAhExC1JSEEIAJBkAFqIAEoAgQQQiAEQThqIAJBkAFqQThqIgspAwA3AwAgBEEwaiACQZABakEwaiIMKQMANwMAIARBKGogAkGQAWpBKGoiDSkDADcDACAEQSBqIAJBkAFqQSBqIggpAwA3AwAgBEEYaiACQZABakEYaiIHKQMANwMAIARBEGogAkGQAWpBEGoiCSkDADcDACAEQQhqIAJBkAFqQQhqIgUpAwA3AwAgBCACKQOQATcDABC1JSEDIAJBkAFqIAEoAggQQiADQThqIAspAwA3AwAgA0EwaiAMKQMANwMAIANBKGogDSkDADcDACADQSBqIAgpAwA3AwAgA0EYaiAHKQMANwMAIANBEGogCSkDADcDACADQQhqIAUpAwA3AwAgAyACKQOQATcDABC1JSEKIAJBkAFqIAEoAgwQQiAKQThqIAspAwA3AwAgCkEwaiAMKQMANwMAIApBKGogDSkDADcDACAKQSBqIAgpAwA3AwAgCkEYaiAHKQMANwMAIApBEGogCSkDADcDACAKQQhqIAUpAwA3AwAgCiACKQOQATcDACAAIBM3AxAgACAKNgIMIAAgAzYCCCAAIAQ2AgQgAEEWNgIADCQLIAFBBGohCiABKAIkIQsgASgCICEMIAEoAhwhDQJAAkACQCABLQAYIgNBfWoiBEEBIARB/wFxQQNJG0H/AXEOAwABAgALIAJBAmogAUEbai0AADoAACACIAEvABk7AQAMHwsgAkECaiABQRtqLQAAOgAAIAIgAS8AGTsBAAweCxC1JSEEIAJBkAFqIAEoAhAQQiAEQThqIAJBkAFqQThqKQMANwMAIARBMGogAkGQAWpBMGopAwA3AwAgBEEoaiACQZABakEoaikDADcDACAEQSBqIAJBkAFqQSBqKQMANwMAIARBGGogAkGQAWpBGGopAwA3AwAgBEEQaiACQZABakEQaikDADcDACAEQQhqIAJBkAFqQQhqKQMANwMAIAQgAikDkAE3AwBBBSEDDB4LIAEoAhwhCiABKAIYIQsgASgCFCEMELUlIQQgAkGQAWogASgCEBBCIARBOGogAkGQAWpBOGopAwA3AwAgBEEwaiACQZABakEwaikDADcDACAEQShqIAJBkAFqQShqKQMANwMAIARBIGogAkGQAWpBIGopAwA3AwAgBEEYaiACQZABakEYaikDADcDACAEQRBqIAJBkAFqQRBqKQMANwMAIARBCGogAkGQAWpBCGopAwA3AwAgBCACKQOQATcDAEGAgICAeCEDAkAgASgCBEGAgICAeEYNACACQZABaiABQQRqEK4IIAIpApQBIRMgAigCkAEhAwsCQAJAIAEoAiAiAQ0AQQAhAQwBCyABEMgVIQELIAAgATYCICAAIAo2AhwgACALNgIYIAAgDDYCFCAAIAQ2AhAgACATNwMIIAAgAzYCBCAAQRg2AgAMIgsgASgCECEEIAEoAhQhAyACQZABaiABQQRqEIoJIABBFGogAzYCACAAQRk2AgAgACACKQKQATcCBCACIAQ2ApwBIABBDGogAkGYAWopAgA3AgAMIQsgASgCGCEEIAEoAhQhAyABKAIQIQoCQCABKQMIIhNCA4NCAFINACATpyILIAsoAgAiC0EBajYCACALQX9MDRkLIAAgBDYCGCAAIAM2AhQgACAKNgIQIAAgEzcDCCAAQRo2AgAgACABLQAcOgAcDCALAkACQAJAAkACQAJAAkACQAJAIAEoAggiCg4HAAECAwQFBgALIAEoAhwhCCABKAIYIQQCQCABKQMQIhNCA4NCAFINACATpyIDIAMoAgAiA0EBajYCACADQX9MDSALIAEoAiQhCyABKAIgIQMCQCABKQMgIhRQDQAgFEIDg1BFDQAgFKciASABKAIAIgFBAWo2AgAgAUF/TA0gCyATQiCIpyEMIBOnIQ0MBgsgASkDGCITQiCIpyEIIAEpAxAiFEIgiKchDCABKAIkIQsgASgCICEDIAEoAgwhASATpyEEIBSnIQ0MBgsgASkDGCITQiCIpyEIIAEpAxAiFEIgiKchDCABKAIkIQsgASgCICEDIAEoAgwhASATpyEEIBSnIQ0MBQsgASgCJCELIAEoAiAhAyABKQMYIRMgASgCFCEMIAEoAhAhDQJAIAEpAyAiFFANACAUQgODUEUNACAUpyIBIAEoAgAiAUEBajYCACABQX9MDR0LIBNCIIinIQggE6chBAwDCyABKAIgIQQgASgCFCEMIAEoAhAhDRC5JSEDIAQtAAwhCyACQZABaiAEQQRqKAIAIARBCGooAgAQ2xYgAyACKQKQATcCACACIAs6AJwBIANBCGogAkGQAWpBCGopAgA3AgAgASkDGCITpyEEAkAgE1ANACATQgODUEUNACAEIAQoAgAiAUEBajYCACABQX9MDRwLIBNCIIinIQgMAwsgASgCJCELIAEoAiAhAwJAIAEpAxAiE0IDg0IAUg0AIBOnIgQgBCgCACIEQQFqNgIAIARBf0wNGwsgASkDGCIUpyEEAkAgFEIDg0IAUg0AIAQgBCgCACIBQQFqNgIAIAFBf0wNGwsgFEIgiKchCCATQiCIpyEMIBOnIQ0MAQsgASgCJCELIAEoAiAhAwJAIAEpAxAiE0IDg0IAUg0AIBOnIgQgBCgCACIEQQFqNgIAIARBf0wNGgsgASkDGCIUpyEEAkAgFEIDg0IAUg0AIAQgBCgCACIBQQFqNgIAIAFBf0wNGgsgFEIgiKchCCATQiCIpyEMIBOnIQ0LCyAAIAs2AiQgACADNgIgIAAgATYCDCAAIAo2AgggAEEbNgIAIAAgCK1CIIYgBK2ENwMYIAAgDK1CIIYgDa2ENwMQDB8LIAEpAhwhEyACQZABaiABQQRqEIoJIAJBkAFqQQxqIAEoAhQgASgCGBDtCCAAQRxqIBM3AgAgAEEcNgIAIAAgAikCkAE3AgQgAEEMaiACQZgBaikCADcCACAAQRRqIAJBoAFqKQIANwIADB4LIAEoAhQhCiABKAIQIQsgASgCDCEMELUlIQQgAkGQAWogASgCBBBCIARBOGogAkGQAWpBOGopAwA3AwAgBEEwaiACQZABakEwaikDADcDACAEQShqIAJBkAFqQShqKQMANwMAIARBIGogAkGQAWpBIGopAwA3AwAgBEEYaiACQZABakEYaikDADcDACAEQRBqIAJBkAFqQRBqIg0pAwA3AwAgBEEIaiACQZABakEIaiIIKQMANwMAIAQgAikDkAE3AwACQAJAIAEoAhgiAw0AQQAhBwwBCyADEMgVIQcLIAEoAgghAxDDJSEBIAMpAhghEyACQZABaiADEIoJIAJBnAFqIANBEGooAgAgA0EUaigCABDtCCABQRhqIBM3AgAgASACKQKQATcCACABQQhqIAgpAgA3AgAgAUEQaiANKQIANwIAIAAgBzYCGCAAIAo2AhQgACALNgIQIAAgDDYCDCAAIAE2AgggACAENgIEIABBHTYCAAwdCyABKAIIIQMgASgCHCEHIAEoAhghCSABKAIUIQUgAkGQAWogASgCDCINQQhBKBD3DiACKAKUASEMIAIoApABQQFGDRUgAigCmAEhCAJAIAxFDQAgDUEobCEKIAghBCAMIQsDQCAKRQ0BIAJBkAFqIAMQugIgBEEgaiACQZABakEgaikDADcDACAEQRhqIAJBkAFqQRhqKQMANwMAIARBEGogAkGQAWpBEGopAwA3AwAgBEEIaiACQZABakEIaikDADcDACAEIAIpA5ABNwMAIARBKGohBCAKQVhqIQogA0EoaiEDIAtBf2oiCw0ACwsQvCUhBEGAgICAeCELAkACQCABKAIQIgooAgBBgICAgHhHDQAQtSUhAyACQZABaiAKKAIEEEIgA0E4aiACQZABakE4aikDADcDACADQTBqIAJBkAFqQTBqKQMANwMAIANBKGogAkGQAWpBKGopAwA3AwAgA0EgaiACQZABakEgaikDADcDACADQRhqIAJBkAFqQRhqKQMANwMAIANBEGogAkGQAWpBEGopAwA3AwAgA0EIaiACQZABakEIaikDADcDACADIAIpA5ABNwMADAELIAopAgwhEyAKKAIUIQMgAkGQAWogChCwCiACIAM2AqQBIAIgEzcCnAEgAkHYAGogAkGgAWopAgA3AwAgAiACKQKYATcDUCACKAKQASELIAIoApQBIQMLIAQgAzYCBCAEIAs2AgAgBCACKQNQNwIIIARBEGogAkHYAGopAwA3AgAgAS0AKSELIAEtACghBkEAIQNBACEKAkAgASgCICIORQ0AIA4QyRUhCgsCQCABKAIkIgFFDQAgARD6GCEDCyAAIAs6ACkgACAGOgAoIAAgAzYCJCAAIAo2AiAgACAHNgIcIAAgCTYCGCAAIAU2AhQgACAENgIQIAAgDTYCDCAAIAg2AgggACAMNgIEIABBHjYCAAwcCwJAAkAgAS0AHCINQQJHDQAMAQsgASgCGCEJIAEoAhQhByABKAIQIQggASkDCCITQgODQgBSDQAgE6ciBCAEKAIAIgRBAWo2AgAgBEF/TA0UCxDAJSEEIAEoAiAiASgCLCEFIAEoAighBiABKAIkIQ4gAkEgaiABEOIIIAJB0ABqIAFBDGoQckEAIQpBACEDAkAgASgCMCILRQ0AELUlIQMgAkGQAWogCxBCIANBOGogAkGQAWpBOGopAwA3AwAgA0EwaiACQZABakEwaikDADcDACADQShqIAJBkAFqQShqKQMANwMAIANBIGogAkGQAWpBIGopAwA3AwAgA0EYaiACQZABakEYaikDADcDACADQRBqIAJBkAFqQRBqKQMANwMAIANBCGogAkGQAWpBCGopAwA3AwAgAyACKQOQATcDAAsgAS0APCEPAkAgASgCNCILRQ0AELolIQogCygCDCEMIAsoAhAhECACQZABaiALENwGIApBEGogEDYCACAKIAIpApABNwIAIAIgDDYCnAEgCkEIaiACQZABakEIaikCADcCAAsCQAJAIAEoAjgiDA0AQQAhCwwBCxC6JSELIAwoAgwhECAMKAIQIREgAkGQAWogDBDFDCALQRBqIBE2AgAgCyACKQKQATcCACACIBA2ApwBIAtBCGogAkGQAWpBCGopAgA3AgALIAJBkAFqQRhqIgwgAUEYahDRBSACQZABakEIaiIBIAJBIGpBCGooAgA2AgAgAkGkAWogAkHQAGpBCGooAgA2AgAgAiACKQIgIhQ3A5ABIAIgAikCUDcCnAEgBEEgaiACQZABakEgaigCADYCACAEQRhqIAwpAwA3AgAgBEEQaiACQZABakEQaikDADcCACAEQQhqIAEpAwA3AgAgBCAUNwIAIAQgDzoAPCAEIAs2AjggBCAKNgI0IAQgAzYCMCAEIAU2AiwgBCAGNgIoIAQgDjYCJCAAIAQ2AiAgACANOgAcIAAgCTYCGCAAIAc2AhQgACAINgIQIAAgEzcDCCAAQR82AgAMGwsgASgCCCEEIAEoAgQhAwJAAkAgASgCDA0AQQAhCgwBCyABQQxqEJoPIQoLIAAgCjYCDCAAIAQ2AgggACADNgIEIABBIDYCACAAIAEtABA6ABAMGgsgACABKQMANwMAIABBOGogAUE4aikDADcDACAAQTBqIAFBMGopAwA3AwAgAEEoaiABQShqKQMANwMAIABBIGogAUEgaikDADcDACAAQRhqIAFBGGopAwA3AwAgAEEQaiABQRBqKQMANwMAIABBCGogAUEIaikDADcDAAwZCyABKQMIIRMQtSUhBCACQZABaiABKAIEEEIgBEE4aiACQZABakE4aikDADcDACAEQTBqIAJBkAFqQTBqKQMANwMAIARBKGogAkGQAWpBKGopAwA3AwAgBEEgaiACQZABakEgaikDADcDACAEQRhqIAJBkAFqQRhqKQMANwMAIARBEGogAkGQAWpBEGopAwA3AwAgBEEIaiACQZABakEIaikDADcDACAEIAIpA5ABNwMAIAAgEzcDCCAAIAQ2AgQgAEEiNgIADBgLIAEpAwghExC1JSEEIAJBkAFqIAEoAgQQQiAEQThqIAJBkAFqQThqKQMANwMAIARBMGogAkGQAWpBMGopAwA3AwAgBEEoaiACQZABakEoaikDADcDACAEQSBqIAJBkAFqQSBqKQMANwMAIARBGGogAkGQAWpBGGopAwA3AwAgBEEQaiACQZABakEQaikDADcDACAEQQhqIAJBkAFqQQhqKQMANwMAIAQgAikDkAE3AwAgACATNwMIIAAgBDYCBCAAQSM2AgAMFwsgASgCHCEEIAEoAhghAyACQZABaiABQSBqEKAIIAEoAhQhCiABKAIQIQsCQCABKQMIIhNCA4NCAFINACATpyIBIAEoAgAiAUEBajYCACABQX9MDQ8LIAAgAikDkAE3AyAgAEEwaiACQaABaikDADcDACAAQShqIAJBmAFqKQMANwMAIAAgBDYCHCAAIAM2AhggACAKNgIUIAAgCzYCECAAIBM3AwggAEEkNgIADBYLIAEoAhQhBCABKAIQIQMgASgCLCEKIAEoAighCwJAIAEpAwgiE0IDg0IAUg0AIBOnIgwgDCgCACIMQQFqNgIAIAxBf0wNDgsgASgCJCEMIAEoAiAhDQJAIAEpAxgiFEIDg0IAUg0AIBSnIgEgASgCACIBQQFqNgIAIAFBf0wNDgsgACAKNgIsIAAgCzYCKCAAIAw2AiQgACANNgIgIAAgFDcDGCAAIAQ2AhQgACADNgIQIAAgEzcDCCAAQSU2AgAMFQsgACABKQMANwMAIABBOGogAUE4aikDADcDACAAQTBqIAFBMGopAwA3AwAgAEEoaiABQShqKQMANwMAIABBIGogAUEgaikDADcDACAAQRhqIAFBGGopAwA3AwAgAEEQaiABQRBqKQMANwMAIABBCGogAUEIaikDADcDAAwUCyABKAIEIQQQwiUhASAEKAIEIQ0gBCgCACEIIAJBkAFqIARBwABqEJ4GIAQoAnQhByAEKAJwIQkgAkGAAWogBEH8AGoQqAIgBC0AiAEhBQJAAkAgBCgCeCIKDQBBACEDDAELELolIQMgCigCDCELIAooAhAhDCACQdAAaiAKEMUMIANBEGogDDYCACADIAIpAlA3AgAgAiALNgJcIANBCGogAkHQAGpBCGopAgA3AgALIAJBEGogBEGQAWoQiwpBBiEKAkAgBC0APEEGRg0AIAQoAgwhDCAEKAIIIQsgAkHQAGogBEEQahCeBiACQSBqQShqIAJB0ABqQShqKAIANgIAIAJBIGpBIGogAkHQAGpBIGopAwA3AwAgAkEgakEYaiACQdAAakEYaikDADcDACACQSBqQRBqIAJB0ABqQRBqKQMANwMAIAJBIGpBCGogAkHQAGpBCGopAwA3AwAgAkEeaiACQf8Aai0AADoAACACIAIpA1A3AyAgAiACLwB9OwEcIAItAHwhCgsgAkHfAGoiBCACQRBqQQhqKAIANgAAIAIgAikCEDcAVyABIAw2AgwgASALNgIIIAEgDTYCBCABIAg2AgAgASACKQMgNwMQIAFBGGogAkEgakEIaikDADcDACABQSBqIAJBIGpBEGopAwA3AwAgAUEoaiACQSBqQRhqKQMANwMAIAFBMGogAkEgakEgaikDADcDACABQThqIAJBIGpBKGooAgA2AgAgASAKOgA8IAEgAzYCeCABIAc2AnQgASAJNgJwIAEgAi8BHDsAPSABQT9qIAJBHmotAAA6AAAgAUHoAGogAkGQAWpBKGopAwA3AwAgAUHgAGogAkGQAWpBIGopAwA3AwAgAUHYAGogAkGQAWpBGGopAwA3AwAgAUHQAGogAkGQAWpBEGopAwA3AwAgAUHIAGogAkGQAWpBCGopAwA3AwAgASACKQOQATcDQCABQYQBaiACQYABakEIaigCADYCACABIAIpAoABNwJ8IAEgBToAiAEgAUGYAWogBCgAADYAACABQZEBaiACQdAAakEIaikAADcAACABIAIpAFA3AIkBIABBJzYCACAAIAE2AgQMEwsgASgCECEEIAEpAhQhEyABKAIcIQMgAkGQAWogAUEEahCLCiACQagBaiIKIAM2AgAgAEEUaiATNwIAIABBKDYCACAAIAIpApABNwIEIABBJGogASgCJDYCACACIAQ2ApwBIABBDGogAkGYAWopAgA3AgAgAiABKAIgNgKsASAAQRxqIAopAgA3AgAMEgsgASkCDCETELUlIQQgAkGQAWogASgCBBBCIARBOGogAkGQAWpBOGopAwA3AwAgBEEwaiACQZABakEwaikDADcDACAEQShqIAJBkAFqQShqKQMANwMAIARBIGogAkGQAWpBIGopAwA3AwAgBEEYaiACQZABakEYaikDADcDACAEQRBqIAJBkAFqQRBqKQMANwMAIARBCGogAkGQAWpBCGopAwA3AwAgBCACKQOQATcDACABKAIIIQMQuCUhASACQZABaiADEHMCQEHgAEUNACABIAJBkAFqQeAA/AoAAAsgACATNwIMIAAgATYCCCAAIAQ2AgQgAEEpNgIADBELIAEpAwghExC1JSEEIAJBkAFqIAEoAgQQQiAEQThqIAJBkAFqQThqKQMANwMAIARBMGogAkGQAWpBMGopAwA3AwAgBEEoaiACQZABakEoaikDADcDACAEQSBqIAJBkAFqQSBqKQMANwMAIARBGGogAkGQAWpBGGopAwA3AwAgBEEQaiACQZABakEQaikDADcDACAEQQhqIAJBkAFqQQhqKQMANwMAIAQgAikDkAE3AwAgACATNwMIIAAgBDYCBCAAQSo2AgAMEAsgASkDCCETELUlIQQgAkGQAWogASgCBBBCIARBOGogAkGQAWpBOGopAwA3AwAgBEEwaiACQZABakEwaikDADcDACAEQShqIAJBkAFqQShqKQMANwMAIARBIGogAkGQAWpBIGopAwA3AwAgBEEYaiACQZABakEYaikDADcDACAEQRBqIAJBkAFqQRBqKQMANwMAIARBCGogAkGQAWpBCGopAwA3AwAgBCACKQOQATcDACAAIBM3AwggACAENgIEIABBKzYCAAwPCyABKQIMIRMQtSUhBCACQZABaiABKAIEEEIgBEE4aiACQZABakE4aikDADcDACAEQTBqIAJBkAFqQTBqKQMANwMAIARBKGogAkGQAWpBKGopAwA3AwAgBEEgaiACQZABakEgaikDADcDACAEQRhqIAJBkAFqQRhqKQMANwMAIARBEGogAkGQAWpBEGopAwA3AwAgBEEIaiACQZABakEIaikDADcDACAEIAIpA5ABNwMAIAEoAgghAxC4JSEBIAJBkAFqIAMQcwJAQeAARQ0AIAEgAkGQAWpB4AD8CgAACyAAIBM3AgwgACABNgIIIAAgBDYCBCAAQSw2AgAMDgsgASkCDCETELUlIQQgAkGQAWogASgCBBBCIARBOGogAkGQAWpBOGopAwA3AwAgBEEwaiACQZABakEwaikDADcDACAEQShqIAJBkAFqQShqKQMANwMAIARBIGogAkGQAWpBIGopAwA3AwAgBEEYaiACQZABakEYaikDADcDACAEQRBqIAJBkAFqQRBqKQMANwMAIARBCGogAkGQAWpBCGoiCikDADcDACAEIAIpA5ABNwMAIAEoAgghAxC6JSEBIAMoAgwhCyADKAIQIQwgAkGQAWogAxDFDCABQRBqIAw2AgAgASACKQKQATcCACACIAs2ApwBIAFBCGogCikCADcCACAAIBM3AgwgACABNgIIIAAgBDYCBCAAQS02AgAMDQsgASkCDCETELUlIQQgAkGQAWogASgCBBBCIARBOGogAkGQAWpBOGopAwA3AwAgBEEwaiACQZABakEwaikDADcDACAEQShqIAJBkAFqQShqKQMANwMAIARBIGogAkGQAWpBIGopAwA3AwAgBEEYaiACQZABakEYaikDADcDACAEQRBqIAJBkAFqQRBqKQMANwMAIARBCGogAkGQAWpBCGopAwA3AwAgBCACKQOQATcDACABKAIIIQMQuCUhASACQZABaiADEHMCQEHgAEUNACABIAJBkAFqQeAA/AoAAAsgACATNwIMIAAgATYCCCAAIAQ2AgQgAEEuNgIADAwLIAEoAhQhBCABKAIQIQMCQCABKQMIIhNCA4NCAFINACATpyIBIAEoAgAiAUEBajYCACABQX9MDQQLIAAgBDYCFCAAIAM2AhAgACATNwMIIABBLzYCAAwLCyABLQAQIQwgASgCDCENIAEoAgghCBC2JSEEQQMhCwJAAkAgASgCBCIDKAIAQQNHDQAgAygCHCEHIAMoAhghCSADKAIUIQUQtSUhCiACQZABaiADKAIQEEIgCkE4aiACQZABakE4aikDADcDACAKQTBqIAJBkAFqQTBqKQMANwMAIApBKGogAkGQAWpBKGopAwA3AwAgCkEgaiACQZABakEgaikDADcDACAKQRhqIAJBkAFqQRhqKQMANwMAIApBEGogAkGQAWpBEGopAwA3AwAgCkEIaiACQZABakEIaiIGKQMANwMAIAogAikDkAE3AwAgAkHwAWogA0EEahCuCAJAIAMoAiAiAw0AQQAhAQwCCxC6JSEBIAMoAgwhDiADKAIQIQ8gAkGQAWogAxDFDCABQRBqIA82AgAgASACKQKQATcCACACIA42ApwBIAFBCGogBikCADcCAAwBCyADKAIcIQcgAygCGCEJELUlIQEgAkGQAWogAygCIBBCIAFBOGogAkGQAWpBOGopAwA3AwAgAUEwaiACQZABakEwaikDADcDACABQShqIAJBkAFqQShqKQMANwMAIAFBIGogAkGQAWpBIGopAwA3AwAgAUEYaiACQZABakEYaikDADcDACABQRBqIAJBkAFqQRBqKQMANwMAIAFBCGogAkGQAWpBCGopAwA3AwAgASACKQOQATcDACACQZABaiADEPEHIAJB8AFqQQhqIAJBnAFqKAIANgIAIAIgAikClAE3A/ABIAIoApABIQsgAigCoAEhCiACKAKkASEFCyAEIAs2AgAgBCACKQPwATcCBCAEIAE2AiAgBCAHNgIcIAQgCTYCGCAEIAU2AhQgBCAKNgIQIAAgDDoAECAAIA02AgwgACAINgIIIAAgBDYCBCAAQTA2AgAgBEEMaiACQfgBaigCADYCAAwKCyAAIAEpAwA3AwAgAEE4aiABQThqKQMANwMAIABBMGogAUEwaikDADcDACAAQShqIAFBKGopAwA3AwAgAEEgaiABQSBqKQMANwMAIABBGGogAUEYaikDADcDACAAQRBqIAFBEGopAwA3AwAgAEEIaiABQQhqKQMANwMADAkLIAggAigCmAFBtOqaARDBJgsACyAMIAIoApgBQbTqmgEQwSYACyABKAIUIQggASgCECEECyACQQRqIAoQrggCQAJAIAEoAigiAQ0AQQAhAQwBCyABEMgVIQELIAAgAikCBDcCBCAAIAM6ABggACAINgIUIAAgBDYCECAAIAIvAQA7ABkgACABNgIoIAAgCzYCJCAAIAw2AiAgACANNgIcIABBFzYCACAAQQxqIAJBDGooAgA2AgAgAEEbaiACQQJqLQAAOgAADAQLIAIoApwBIQYgAikClAEhEyACKAKQASEIDAILIAIpApQBIRMgAigCkAEhCAwBCyACLQCoASEFIAIoAqQBIQogAigCoAEhByACKAKcASEJIAIoApgBIQYgAikDkAEhEyACKAKsASEOIAIpA7ABIRQLELUlIQQgAkGQAWogASgCOBBCIARBOGogAkGQAWpBOGopAwA3AwAgBEEwaiACQZABakEwaikDADcDACAEQShqIAJBkAFqQShqKQMANwMAIARBIGogAkGQAWpBIGopAwA3AwAgBEEYaiACQZABakEYaikDADcDACAEQRBqIAJBkAFqQRBqKQMANwMAIARBCGogAkGQAWpBCGopAwA3AwAgBCAC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AhAgBCARNgIMIARBATYCCCAEIAA2AgQgBEEBNgIAQQkhHkERIQAMCgsgBEUNDyAEQgA3AgxBASEeIARBATYCCCAEIAA2AgQgBEEBNgIAQQIhACAEQQI6ABkgBEERakIANwAADAkLAkAgKkIAUg0AIBYgFigCACIEQQFqNgIAIARBf0wNDwtBAC0A4OeeARpBEBB8IgRFDQ4gACkDACErIABCATcDACACQegBakEQaiAAQRBqIhApAwAiLDcDACACQegBakEIaiAAQQhqIgApAwAiLTcDACAAQgA3AwAgEEIANwMAIAIgKzcD6AEgFUEQaiIcICw3AgAgFUEIaiIdIC03AgAgFSArNwIAIAJBkAJqQQhqIhAgAkGQBGpBCGoiHykCADcDACACQZACakEQaiIRIAJBkARqQRBqIiApAgA3AwAgAkGQAmpBGGoiHiACQZAEakEYaiIhKAIANgIAIAIgAikCkAQ3A5ACQQAtAODnngEaQcAAEHwiAEUNDiAAQQA2AgggAEEbNgIAIAAgAikDkAI3AgwgAEEUaiAQKQMANwIAIABBHGogESkDADcCACAAQSRqIB4oAgA2AgAgBCAANgIMIARBADYCAEEALQDg554BGkHAABB8IgBFDQ4gAEEAOgAcIAAgEzYCGCAAQgA3AxAgACApNwMIIABBGjYCACAYQgA3AgAgGEEIakIANwIAIAJBBToAmAMgAiAANgKQAyACQQE2AowDIAIgBDYCiAMgAkEBNgKEAyACQgA3AqgEIAJBAzoApAQgAkEANgKgBCACQgA3ArAEIAJCADcCmAQgAkKAgICAwAA3ApAEIAJBFzYCgAMgAkGQBGoQ3hxBAEEEEMcqIAYoAgQiAEEwaiIEKQMAISsgBEIANwMAIAApAyghLCAAQgE3AyggAEE4aikDACEtIABBNWpCADcAACAVICw3AgAgHSArNwIAIBwgLTcCACACQYADahCkECEEQQAtAODnngEaQTgQfCIARQ0OIABBADYCACAAIAIpApAENwIEIABBADoANCAAIAQ2AjAgAEIANwMoIABBADYCICAAQQxqIB8pAgA3AgAgAEEUaiAgKQIANwIAIABBHGogISgCADYCAEEAQQgQzSpBAC0A4OeeARogBigCBCIEKAIkIRAgBCgCICERIAQtAEAhHkEcEHwhBCAeDQIgBEUNDiAEQYAEOwEYIARBADYCFCAEIBA2AhAgBCARNgIMIARBATYCCCAEIAA2AgQgBEEBNgIAQREhAEEJIR4MBwtBACgC+OaeASIGRQ0DIABBJGooAgAhBCAAKAIgIRAgAkGAA2ogBkEDQdScmwFBwQEQ2gtBAC0A4OeeARogAigChAMhBkEIEHwiAEUNDSAAIAQ2AgQgACAQNgIAIAYoAhwgBkEgaiIQKAIAEP8pIAZBLGoiBCgCACAGQTBqKAIAEPAgIAYoAiggBCgCABCAKiAEQgQ3AgAgBkIBNwIkIBAgADYCACAGQQE2AhwgAkGQBGpBCGogAkGAA2pBCGooAgA2AgAgAiACKQKAAzcDkAQgAkGQBGoQ8wEgAkGQBGoQ6g0MCAtBAC0A4OeeARpBEBB8IhBFDQwgACkDACErIABCATcDACACQZACakEQaiAAQRBqIgQpAwAiLDcDACACQZACakEIaiAAQQhqIgApAwAiLTcDACAAQgA3AwAgBEIANwMAIAIgKzcDkAIgGiAsNwIAIAtBCGogLTcCACALICs3AgAgAkGQBGpBCGoiHiACQYADakEIaiIiKQIANwMAIAJBkARqQRBqIhwgAkGAA2pBEGoiIykCADcDACACQZAEakEYaiIdIA4oAgA2AgAgAiACKQKAAzcDkARBAC0A4OeeARpBwAAQfCIARQ0MIABBADYCCCAAQRs2AgAgACACKQOQBDcCDCAAQRRqIB4pAwA3AgAgAEEcaiAcKQMANwIAIABBJGogHSgCADYCACAQIAA2AgwgEEEANgIAQQAtAODnngEaQcAAEHwiAEUNDEEAISAgAEEAOgAcIAAgFDYCGCAAQgA3AxAgAELx5JWL166aueUANwMIIABBGjYCACACQgA3ApgDIAJBAzoAlAMgAkEANgKQAyACQgA3AqADIAJCADcCiAMgAkKAgICAwAA3AoADIAJBgANqEN4cQQBBBBDHKgJAIAYoAgQiBC0AQA0AQQUhIUEXISRBACERDAULIAQoAjQhICAEKAIwISECQCAEKQMoIitCA4NCAFINACArpyIEIAQoAgAiBEEBajYCACAEQX9MDQ0LQQAtAODnngEaQcAAEHwiEUUNDCARQQA6ABwgESAUNgIYIBFCADcDECARQvHK4YP3zZy68wA3AwggEUEaNgIAQQAtAODnngEaQcAAEHwiBEUNDCAEQgA3AjAgBEEFOgAYIAQgADYCEEEBISQgBEEBNgIMIAQgEDYCCCAEQpeAgIAQNwMAIARCADcCHEEAIRAgBEEAOgA8IAQgJTYCOCAEQSRqQgA3AgAgIUEIdiEfICtCIIinISYgK6chACAEISUMBAsgBEUNCyAEQgA3AgxBASEeIARBATYCCCAEIAA2AgQgBEEBNgIAQQIhACAEQQI6ABkgBEERakIANwAADAQLIAJBgANqQTBqIAZBMGopAwA3AwAgAkGAA2pBKGogBkEoaikDADcDACACQYADakEgaiAGQSBqKQMANwMAIA4gBkEYaikDADcDACACQYADakEQaiAGQRBqIgApAwA3AwAgAkGAA2pBCGogBkEIaiIEKQMANwMAIARCATcCACACIAYpAwA3A4ADIAZBCTYCACAAQQA2AgAgBkEcaiACQZACakEIaikCADcCACAGQSRqIAJBkAJqQRBqKQIANwIAIAZBLGogAkGQAmpBGGopAgA3AgAgBkE0aiACQZACakEgaigCADYCACAGIAIpApACNwIUIAIoAoADIgZBCUYNASAHIAgpAgA3AgAgB0EwaiAIQTBqKAIANgIAIAdBKGogCEEoaikCADcCACAHQSBqIAhBIGopAgA3AgAgB0EYaiAIQRhqKQIANwIAIAdBEGogCEEQaikCADcCACAHQQhqIAhBCGopAgA3AgAgAiAGNgKQBAJAAkAgBkEHRw0AIAIoApQEIgZFDQECQCANDQAgAikDmAQhJyAGIQ0MCAsgBhCzASAGQcAAQQgQ0hUMBwsgAkGQBGoQnAULQciamwEQ+CkAC0GFjpwBQcgAQbCPnAEQtysACyACQYgDahDrA0G4mpsBEPgpAAsgFyACLwCQAjsAACACIB87AJkDIAJBgANqQRtqIB9BEHY6AAAgF0ECaiACQZACakECai0AADoAACACQQA6ALwDIAIgJTYCuAMgAkIANwOwAyACIBE2AqgDIAJCADcDoAMgAiAgNgKcAyACICE6AJgDIAIgJjYClAMgAiAANgKQAyACQQE2AowDIAIgEDYCiAMgAkEBNgKEAyACICQ2AoADIAYoAgQiAEEwaiIEKQMAISsgBEIANwMAIAApAyghLCAAQgE3AyggAEE4aikDACEtIABBNWpCADcAACAVICw3AgAgFUEIaiArNwIAIBVBEGog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GzoAkQEgAiAQOgCXASACQQFBAiANQQFxGzoAkwEgAkEBQQIgC0EBcRs6AJQBIAJBAToAkAEgAiAkNgKkASACICVBCGo2AqABIAJBADYCsAEgAkKAgICAwAA3AqgBIAJBADYCvAEgAkKAgICAwAA3ArQBIAJCgICAgBA3AogEIAIgAkGgAWpBCGoiFDYChAQgAiACQaABajYCgAQgAkGcBWohBCACQfAEakEwaiENIAJB8ARqQQxqIQkgAkHwBGpBCGohCCACQfAEakHEAGohEiACQdwCakEMaiEgIAJBkAJqIQoCQAJAA0AgAkEgaiACQYAEahCDFyACKAIkIgFFDQIgAigCICEOIAIgAi0AngE6AKcCIAIgAi0AnAEiAzoApgIgAiACLQCdAToApQIgAiACKAKYATYCoAIgAkIBNwKYAiACQoCAgIAQNwKQAiACIAM6AKQCIAJCATcCiAIgAkIANwKAAiACQgQ3AvgBIAJCADcC8AEgAkIENwLoASACQgA3AuABIAJCBDcC2AEgAkIANwLQASACQgQ3AsgBIAJCADcCwAEgASgCACEFIAIgASgCBCIYNgLsAyACIAU2AugDIAIgAzoApAIgAkKBgICAEDcClAIgAkEANgLAASACQQA2AswBIAIgAkHAAWo2AuQDIAIoAtABDQEgAkF/NgLQASACKALcASEBIAJBADYC3AEgAigC2AEhAwJAA0AgAUUNASABQX9qIQEgAxCSIiADQfAAaiEDDAALCyACIAIoAtABQQFqNgLQAQJAIAIoAuABDQAgAkF/NgLgASACKALsASEBIAJBADYC7AEgAigC6AEhAwJAA0AgAUUNASABQX9qIQEgAxDrISADQZgBaiEDDAALCyACIAIoAuABQQFqNgLgASAIIApBCGooAgAiATYCACAJIAopAgAiPjcCACAJQQhqIAE2AgAgICA+NwIAICBBCGogCCkDADcCACAgQRBqIAJB8ARqQRBqKQMANwIAQQAhAyACQQA2AuQCIAJCgICAgMAANwLcAkEEIQYDQCACQeQDahCQBwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAIoApACIBhGDQACQCACQeQDahDODyIBQVhqDgQHCAsMAAsCQCABQYV/ag4CDQkACyABQT9GDQkgAUHbAEYNDSACQeQDahDODyIBQaR/ag4DBQIDAQsCQEEkRQ0AIAJBwANqIAJB3AJqQST8CgAACyACQfAEaiACQeQDaiACQcADahCIBCACKAL4BCEeIAIoAvQEIQEgAigC8AQiE0EiRg0PIAJB0ARqQQhqIARBCGopAgA3AwAgAiAEKQIANwPQBCACKAKYBSELIAIpApAFIT4gAikCiAUhPyACKAKEBSEHIAIoAoAFIQUgAigC/AQhIiACKAKsBSEMDB4LIAFBJEYNAiABQS5GDQ0LIAkgAkHkA2oQkg0gAkHkA2oQgAsaIAJBADoAlAUgAiABNgL4BEGCgICAeCEBIAJBgoCAgHg2AvQEDBQLIAggAkHkA2oQkg0gAkHkA2oQgAsaIAJBADoAkAUMEgsgCCACQeQDahCSDSACQeQDahCACxogAkEBOgCQBQwRCyACQfAEaiACQeQDahCEASACKAL0BCEBIAIoAvAEIhNBIkYNESACQbADakEIaiAEQQhqKQIAIj43AwAgAkHQBGpBCGogPjcDACACIAQpAgAiPjcDsAMgAiA+NwPQBCACKAKYBSELIAIpApAFIT4gAikCiAUhPyACKAKEBSEHIAIoAoAFIQUgAigC/AQhIiACKAL4BCEeIAIoAqwFIQwMDAsCQEEkRQ0AIAJBwANqIAJB3AJqQST8CgAACyACQfAEaiACQeQDaiACQcADahDTBSACKQKQBSE+IAIpAogFIT8gAigChAUhByACKAKABSEFIAIoAvwEIQMgAigC+AQhBiACKAL0BCEBIAIoAvAEIhNBIkYNByACQdAEakEIaiAEQQhqKQIANwMAIAIgBCkCADcD0AQMDgsCQEEkRQ0AIAJBwANqIAJB3AJqQST8CgAACyACQfAEaiACQeQDaiACQcADahD9AiACKQKQBSE+IAIpAogFIT8gAigChAUhByACKAKABSEFIAIoAvwEIQMgAigC+AQhBiACKAL0BCEBIAIoAvAEIhNBIkYNBiACQdAEakEIaiAEQQhqKQIANwMAIAIgBCkCADcD0AQMDQsCQEEkRQ0AIAJBwANqIAJB3AJqQST8CgAACyACQfAEaiACQeQDaiACQcADahDMBiACKQKQBSE+IAIpAogFIT8gAigChAUhByACKAKABSEFIAIoAvwEIQMgAigC+AQhBiACKAL0BCEBIAIo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AgBBgoCAgHhGDQAgAkEDOgDAAwwBCyACQcADaiABIAZBCGooAgAgBkEMaigCABCiCCACQcADaiEDIAItAMADQQNHDQELIAFBEGohAwsgICADKAAANgAAICBBBGogA0EEai8AADsAACACQQw2AvAEIAEgAkHwBGoQzxwMAwsgAkENNgLwBCABIAJB8ARqEM8cDAILICAQmSEgAkEJNgLwBCABIAJB8ARqEM8cDAELIAJBDjYC8AQgASACQfAEahDPHCAGKAIIRQ0AIAJBDzYC8AQgASACQfAEahDPHAsgBSgCACEDCyAaKAIAIQYCQAJAAkACQAJAAkACQAJAAkACQAJAIANBeWoOBQACCAEDBAsgBiAGKAIAQYiAxABGIgNBAnRqIQYDQAJAAkAgA0EBcUUNAAJAIAEtABQiE0ECRg0AIBNBAXENACAgEJghIAJBCjYC8AQgASACQfAEahDPHAwCCyAgEJkhIAJBCTYC8AQgASACQfAEahDPHAwBCyAGKAIAQYaAxABHDQACQCABLQAUIhNBAkYNACATQQFxDQAgIBCYISACQQo2AvAEIAEgAkHwBGoQzxwMAQsgIBCZISACQQk2AvAEIAEgAkHwBGoQzxwLIAJBsARqIAMgBhCUDgJAAkAgAigCsARBBEYNACACQRBqIAJBsARqENoTIAIoAhQhBCACKAIQIQgCQCACKALwAiITIAIoAugCRw0AIAxBhIGIARC+GgsgAigC7AIgE0EYbGoiASAGNgIEIAEgAzYCACABIAIpArAENwIIIAFBEGogAkGwBGpBCGopAgA3AgAgE0EBaiEBDAELIAJB8ARqIAMgBiACQeQDahBgAkACQCACKALwBCIBQYCAgIB4Rg0AIAJBwANqQQhqIAtBCGopAgA3AwAgAkHAA2pBEGogC0EQaigCADYCACACIAspAgA3A8ADIAIpAvwEIT4gAigC+AQhAyACKAL0BCEFDAELIAIoAuwCIAIoAvACIgFBGGxqQWhqIQMCQANAAkAgAQ0AQQAhAQwCCwJAIAMoAgAiBkECRg0AIAFBf2ohEyADQQRqKAIAIRggAkHABGogA0EIaiIeEIMTAkAgAigCwARBBEYNACACQdAEakEIaiACQcAEakEIaiINKQIANwMAIAIgEzYC8AIgAiACKQLABCI+NwPQBAJAID6nQQNHDQACQCACKALkAyITLQAUIgRBAkYNACAEQQFxDQAgIBCYISACQQo2AvAEIBMgAkHwBGoQzxwMAQsgIBCZISACQQk2AvAEIBMgAkHwBGoQzxwLIAJBCGogAkHQBGoQ2hMgAigCDCEEIAIoAgghCCADIBg2AgQgAyAGNgIAIB4gAikCwAQ3AgAgHkEIaiANKQIANwIADAULIAJB8ARqIAYgGCACQeQDahBgAkAgAigC8AQiAUGAgICAeEYNACACQcADakEIaiALQQhqKQIANwMAIAJBwANqQRBqIAtBEGooAgA2AgAgAiATNgLwAiACIAspAgA3A8ADIAIoAvQEIQUgAigC+AQhAyACKQL8BCE+DAQLIANBaGohAyATIQEMAQsLIAFBf2ohAQsgAiABNgLwAgwGCyAKIAIpA8ADNwIAIApBEGogAkHAA2pBEGooAgA2AgAgCkEIaiACQcADakEIaikDADcCACACID43AswBIAIgAzYCyAEgAiAFNgLEASACIAE2AsABDAYLIAIgATYC8AIgAigC5AMhASAEIQYgCCEDDAALCyAGQQhqKAIAIgENBQwCC0EAIQNBACEBDAYLIAZBCGooAgAiAUUNACABQX9qIQMgBkEEaigCACIGQQhqIRNBAiEBDAULIAJB8ARqIAJB5ANqIAUoAgAgGigCABBZAkACQCACKALwBCIBQYCAgIB4Rg0AQSRFDQIMAQsgAigC4AIgAigC5AIiAUEUbGpBbGohAwJAAkACQANAAkACQAJAAkAgAQ0AQQAhAQwBCwJAIANBBGoiGCgCACIGQQRGDQAgAUF/aiETIAMoAgAhBSAHIANBCGopAgA3AgAgB0EIaiADQRBqKAIANgIAIAIgBjYCgAQgAkGQBGogAkGABGoQug4gAigCkARBBEYNAyACQaAEakEIaiACQZAEakEIaiIaKQIANwMAIAIgEzYC5AIgAiACKQKQBCI+NwOgBCA+p0EDRg0CDAcLIAFBf2ohAQsgAiABNgLkAiACKALkAyIBKAIAIgNB/////wdPDQQgASADQQFqNgIAIAIgASgCDCIFNgLQBAJAIAVBAUcNACABIAM2AgAgAkHwBGogARCTDyACKALwBEEQRw0EQfDfhAEQ+CkACyACQQA2AvAEQQAgAkHQBGpB4MmbASACQfAEakGA4IQBEO0eAAsgAigC5AMhBiACQQ82AvAEIAYgAkHwBGoQzxwMBAsgAkHwBGogAkHkA2ogBSgCACAFQQRqKAIAEFkCQCACKALwBCIBQYCAgIB4Rg0AIAIgEzYC5AJBJA0FDAYLIANBbGohAyATIQEMAAsLIAJBwANqQRhqIAJB8ARqQRhqKAIANgIAIAJBwANqQRBqIAJB8ARqQRBqKQIANwMAIAJBwANqQQhqIAJB8ARqQQhqKQIANwMAIAIgAikC8AQ3A8ADIAkgAkHAA2oQqQxBASEDQYCAgIB4IQEMBAtB4N+EARCNGQALIAJBoARqEMEfIQYgAyAFNgIAIBggAikCkAQ3AgAgGEEIaiAaKQIANwIADAYLIAkgIEEk/AoAAAtBACEDCyACQdwCahDBIyACKALEASEeAkAgA0UNACACKALcASEFIAIoAtgBIQYgAigC1AEhEyACKALQASEYIAIoAswBIRogAigCyAEhBCACKALIAiACKALMAhC8ESACKALEAiACKALIAhCcKgJAIAIoArwBIgMgAigCtAFHDQAgAkG0AWpB4PGDARC/GgsgAigCuAEgA0EcbGoiASAFNgIYIAEgBjYCFCABIBM2AhAgASAYNgIMIAEgGjYCCCABIAQ2AgQgASAeNgIAIAIgA0EBajYCvAEMBwsgAkE4akEIaiACQbACakEIaikCADcDACACIAIpArACNwM4IAIoAuQBIQsgAikC3AEhPiACKQLUASE/IAIoAtABIQcgAigCzAEhBSACKALIASEiIAIoAsgCIAIoAswCELwRIAIoAsQCIAIoAsgCEJwqQQAhA0EiIRMMCQsgAUF/aiEDIAZBBGooAgAiBkEIaiETQQMhAQwBC0EBIQFBACEDCyACIAY2AvQDIAIgATYC8AMgAiADrUIghiATrYQ3AvgDIAJB8ANqEMEfIQYCQCACKALkAiIBIAIoAtwCRw0AIAJB3AJqQYSAiAEQwBoLIAIoAuACIAFBFGxqIgMgBTYCACADIAIpAvADNwIEIANBDGogAkHwA2pBCGopAgA3AgAgAUEBaiEBCyACIAE2AuQCIAIoAuQDIQEgBiEFDAALCwsgAi0AiAEhIyACLQCHASEnIAItAIYBISggAigCvAEhBiACKAK4ASEBAkACQCACLQCAASIdQQNGDQAgHUECRg0AIAIoAnQiHyAfKAIAIgNBAWo2AgAgA0F/TA0CIAIoAnwhKSACKAJ4ISoMAQsLIAItAIUBISsgAi0AhAEhLCACLQCNASEtIAItAIwBIS4gAi0AiwEhLyACKAJwITAgAigCbCExIAIoAmghMiACKAJkITMgAi0AigEhNCACLQCJASE1IAIoAlAhNiACKAJMITcgAigCYCE4IAIoAlwhOSACKAJYITogAigCVCE7IAItAI4BITxBACEbIAJB8ARqIAZBAEEEQQQQmQwgAigC9AQhPQJAIAIoAvAEQQFGDQAgAigC+AQhEQJAIAZFDQAgESEDIAYhBQNAIAMgATYCACADQQRqIQMgAUEcaiEBIAVBf2oiBQ0ACyAGIRsLQQAhBSACQQA2AuwEIAJCgICAgMAANwLkBAJAAkAgGw0AQQEhFUEEIRZBACETQQAhEkEEIQRBACEmDAELIAZBAnQhGEEAIQZBBCETQQAhBwNAIBEgBmooAgAhAxCUKCIBIAMoAhgiAy0AMjoAMiABIAMvATA7ATAgASADKQIoNwIoIAEgAykCIDcCICABIAMpAhg3AhggASADKQIQNwIQIAEgAykCCDcCCCABIAMpAgA3AgACQCAHIAIoAuQERw0AIAJB5ARqEMEaIAIoAugEIRMLIBMgBmogATYCACACIAdBAWoiBzYC7AQgGCAGQQRqIgZHDQALIAIoAugEIhJBBGohBCASIAdBAnRqIRYgEigCACIBKAIUIRQgASgCECEmQX8hE0EAIRULQQEhBkEBIQdBACEaQQAhHiATISBBACEiQQEhA0EAIQlBACEPQQAhCANAQQAhGANAIAkhHANAIBghCQJAAkACQAJAAkACQAJAAkACQAJAIANBAXENACAEIBZGDQIgBCEBIARBBGohBAwBCyASIQEgFQ0BCyABKAIAIQEgB0EBcSEDQQAhBwJAIANFDQAgAS0AMCEHCyABKAIsIRggASgCECEDICZBAXEiCkUNASADRQ0BIBQgASgCFEcNAgwDC0EALQDg554BGkE0EHwiAQ0DDAsLIAoNACADRQ0BC0EAISYLIAUgGGohAyAGQQFxIRhBACEGAkAgGEUNACABLQAxIQYLIAEoAighCiABKAIkIQsgASgCICEMIAEoAhwhDSABKAIYIQ4gAyAFSSEFQQEhGAJAIAhBAXENACABKAIAIggNAkEAIQ8LQQEhCAwDCyABIAZBAXE6ADIgAUEAOgAx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IAIgAkHQBGo2AsgBIAIgAkHAA2o2AtAEAkAgAkE4aiACQcABahDvJg0AIAJBATYCxAEgAkGU/IcBNgLAASACQgE3AswBIAJB+QA2AtQEIAIgEzYC0AQgAiACQdAEajYCyAEgAkE4aiACQcABahDvJg0AIAJBwANqEJ4qDA4LIAJBwANqEJ4qDAoLIAJBsAJqQf4AQc8AENAUIAJBADYC0AEgAkEBNgLEASACQYT8hwE2AsABIAJCBDcCyAEgAkE4aiACQcABahDvJkUNBwwICyA+QiCIpyEDID6nIQUCQCATQRFLDQBBASATdEGAwAlxRQ0AIAJB/ARqIQELIAIgATYC7AIgAiAHNgLkAiACIAM2AuACIAIgBTYC3AIgAiACQaAFajYC6AIgAkHkAmohEyACQYADaiACQdwCahDSBwJAIAUgAxChIA0AIAJBADYC0AEgAkEBNgLEASACQYT8hwE2AsABIAJCBDcCyAEgAkE4aiACQcABahDvJg0EIAJBwAFqIAJB3AJqENIHIAJBwANqIAJBwAFqELQEIAJBwAFqEMAXIAJBATYCxAEgAkG8t5wBNgLAASACQgE3AswBIAJBBDYC1AQgAiACQdAEajYCyAEgAiACQcADajYC0AQCQCACQThqIAJBwAFqEO8mDQAgAkEBNgLEASACQZT8hwE2AsABIAJCATcCzAEgAkH6ADYC1AQgAiATNgLQBCACIAJB0ARqNgLIASACQThqIAJBwAFqEO8mDQAgAkHAA2oQnioMBwsgAkHAA2oQnioMBAsgAkGwAmpB/gBBzwAQ0BQgAkEANgLQASACQQE2AsQBIAJBhPyHATYCwAEgAkIENwLIASACQThqIAJBwAFqEO8mRQ0BDAILIAJBwAFqQQhqIgFBADYCACACQoCAgIAQNwLAASACQcABakG4xYMBQcrFgwEQtx4gGEEIaiABKAIANgIAIBggAikCwAE3AgAMDAsgAkECNgLEASACQYD9hwE2AsABIAJCATcCzAEgAkEENgLEAyACIAJBwANqNgLIASACIAJBsAJqNgLAAyACQThqIAJBwAFqEO8mDQAgAkGABGogAkGAA2oQtAQgAkEBNgLEASACQby3nAE2AsABIAJCATcCzAEgAkEENgLEAyACIAJBwANqNgLIASACIAJBgARqNgLAAwJAIAJBOGogAkHAAWoQ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IAEoAnggASgCfCIEayIGajYCaCABKAKEAUEIaiAFIA4gBGsiBGogBiAEaxDiAyERIAIgFDkDKCACKAJIIgVBgICAgHhGDQggBSADEP4pDAgLQeCImgEQ+CkACyACQZeAgIB4NgJIIAJBCDoATCACIAggDCACQcgAahDSKzYCKEICIRMMCQsgASAIQQFqIgM2AnggASAFIAMgBGsiCGo2AmggAkHIAGogByAGENwEIAIoAkgNASACQRhqIAIoAkwiAyACKAJQIgZBLRCCFwJAAkAgAigCGCIHDQBBAiEHDAELIAMgByAHIAIoAhwiCUErELsdIg0bIQMgBiAJIA0bIQZBACEHCyACQcgAaiADIAZBEBDuASACKAJIIglBgICAgHhGDQEgAkE6aiINIAJByABqQQdqLQAAOgAAIAIgAi8ATTsBOEEALQDg554BGiACLQBMIQwgAigCUCEGQRAQfCIDRQ0AIAMgDDoABCADIAk2AgAgAyACLwE4OwAFIAMgBjYCCCADIAdBASAGGzoADCADQQdqIA0tAAA6AAAgASgChAFBCGogBSAKIARrIgRqIAggBGsQ4gMhESACIAM2AihCASETDAgLAAtB4IiaARD4KQALIAEQ4QoiBUUNASACIAU2AiggAigCSCIFQYCAgIB4Rg0AIAUgBxD+KQtCAiETDAQLIAEgASgCcCIFIAEoAnRqNgJsIAEgBSABKAJ4IAEoAnwiA2siBGo2AmggASgChAFBCGogBSAKIANrIgNqIAQgA2sQ4gMhESACIBQ5AyggAigCSCIFQYCAgIB4Rg0AIAUgBxD+KQtCACETDAILIAIgBToANEHIkZwBQSsgAkE0akHIl5kBQeyYmQEQoxIACyACQZeAgIB4NgJIIAJBEDoATCACIAggDyACQcgAahDSKzYCKEICIRMLIAIrAygiFL2nIQUCQCATQgJSDQAgACAFNgIEQQEhAQwFCyABQQhqIQMCQAJAIBOnQQFxRQ0AAkAgAygCAEEJRg0AIAMQvwULIAEgBTYCGCABIBE3AxAgAUEHNgIIQcIAIQEMAQsCQCADKAIAQQlGDQAgAxC/BQsgASAUOQMYIAEgETcDECABQQY2AghBwQAhAQsgACABOgABDAILIAUgA2shBiAHIQUCQAJAAkADQCAEIAVGDQEgBiAFaiEDIAVBAWohBSADLQAA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ALcEIAIgAikCrAM3A6AEIAItAPwDIR8gAigC+AMhICACKQPwAyElIAIoAuwDIR4gAigC6AMhGyABKALMASEaICMhEiAkIREMAwsgAiACKADnBDYA1wQgAiACKQPgBDcD0AQgIa1CIIYgJkIgiIQhJSAmpyEeDAELQQIhHyAbIR4gBCEbICYhJQsgHCAdQQFzciEhIAJBoARqQQhqIBooAgA2AgAgAiACKQKsAzcDoAQgAiACKQPQBDcDsAQgAiACKADXBDYAtwQgASgCzAEhGkEHIQQgEiEjIBEhJAsgGSACKQOwBDcAACAZQQdqIAIoALcENgAAIBggAikDoAQ3AwAgGEEIaiACQaAEakEIaigCADYCACACIB86AMwCIAIgIDYCyAIgAiAlNwPAAiACIB42ArwCIAIgGzYCuAIgAiAaNgLcAiACIA82AtgCIAIgEToA7gIgAiASOgDtAiACICE6AOwCIAIgIjYCtAIgAiAENgKwAiACQaADaiACQbACakHksJwBEOgcDAYLIBcgAikD4AQ3AAAgF0EHaiACKADnBDYAACACIB86APwDIAIgIDYC+AMgAiAhNgL0AyACICY3AuwDIAIgGzYC6AMgAiAENgLkAyACIB42AuADIAJBGGogAkHgA2oQjw8gAigCHCEEIAIoAhghAyACQdyAgIB4NgK4AyADIAQgAkG4A2oQlxkhBCABLQDYAUGiAUcNAyABIAEQwCkQpxYMAwsgIiEEDAMLIAEoAtABIQUgARCUCyABKALMASESIAJB4ANqIAFBABDQAiACKALkAyEEAkAgAigC4AMiC0EHRg0AIAkgEykDADcDACAJQRhqIBNBGGopAwA3AwAgCUEQaiATQRBqKQMANwMAIAlBCGogE0EIaikDADcDACACIAQ2ArwDIAIgCzYCuANBACEEAkACQCABLQCRAUEgcUUNACABLQDYAUH/AXFBCUcNACACQSBqIAFBASABKALQARC7EiACKAIkIQQgAigCIEEBcQ0BCyABKALMASELQSgQxyghEQJAQShFDQAgESACQbgDakEo/AoAAAsgFiACKQKsAzcCACAWQQhqIAJBrANqQQhqKAIANgIAIAIgDzYCiAQgAiAENgL4AyACIBI2AvQDIAIgBTYC8AMgAiALNgLsAyACIAU2AugDIAIgETYC5AMgAkECNgLgAyACIAEoAswBNgKMBCACQaADaiACQeADakH0sJwBEOgcDAULIAJBuANqEJQVCyACQawDahDKJQwFCyACKAKkAyEEIAIoAqADIgVBgICAgHhGDQUgAiACKAKoAyIINgKQAyACIAQ2AowDIAIgBTYCiAMCQAJAAkACQAJAIAEtANgBQQFGDQAgASgC1AEhBCABKALQASEDIAJBuANqIAEQlyQgAkEBNgK0AiACQby3nAE2ArACIAJCATcCvAIgAkGPBTYCxAQgAkEBOgCsAyACIAJBwARqNgK4AiACIAJBoARqNgLABCACIAJBrANqNgKgBCACQeADaiACQbACahDkDyACQfQDaiACQcADaigCADYCACACIAIpArgDNwLsAyADIAQgAkHgA2oQlxkhBCABLQDYAUGiAUYNAQwDCyABEJQLIAEtAJEBQSBxRQ0BIAEtANgBQf8BcUEJRw0BIAJBEGogAUEBIAEoAtABELsSIAIoAhQhBQJAIAIoAhBBAXFFDQAgAEENNgIAIAAgBTYCBAwECyACIAU2AuADIAJBCGogBSgCABCIECACKAIMIQUgAigCCCEJIAJBnIGAgHg2ArACIAEgCSAFIAJBsAJqEKohIAJB4ANqENYnDAELIAEgARDAKRCnFgwBCyAIQQZ0IQUgBCEJAkADQCAFRQ0BAkAgCSgCACITQQdGDQAgEw0CCyAFQUBqIQUgCUHAAGohCQwACwsgAkGwAmogAUEAQQAgBUUQ0wsgAigCtAIhEwJAAkAgAigCsAIiD0GBgICAeEYNACACQegDaiACQcACaikCADcDACACIAIpArgCNwPgAyAPQYCAgIB4RyILDQEgCEEGdCEFIAQhCQNAIAVFDQICQCAJKAIAQQdHDQAgCUEsaigCACERIAlBKGooAgAhEiACQaiBgIB4NgKwAiABIBIgESACQbACahCqIQsgCUHAAGohCSAFQUBqIQUMAAsLIABBDTYCACAAIBM2AgQMAgsCQCALDQAgAS8BkAFBgMAAcUUNACAIQQZ0IQUDQCAFRQ0BQRAhCUEMIQgCQAJAAkAgBCgCAEF8ag4EAQICAAILIARBHGotAABBAkcNAUEUIQlBECEICyAEIAhqKAIAIQggBCAJaigCACEJIAJBqYGAgHg2ArACIAEgCCAJIAJBsAJqEKohCyAEQcAAaiEEIAVBQGohBQwACwsCQCAORQ0AIAJBgoGAgHg2ArACIAJC4ebRi8au2jE3A7gCIAEgDCAQIAJBsAJqEKohCwJAIAYgFHFBAXFFDQAgAkGegYCAeDYCsAIgASAVIAogAkGwAmoQqiELAkAgAigCkAJBBUYNACAAIAIpA5ACNwMAIAAgAikCiAM3AkAgAEEIaiACQZACakEIaikDADcDACAAQRBqIAJBkAJqQRBqKQMANwMAIABBGGogAkGQAmpBGGopAwA3AwAgAEHIAGogAkGIA2pBCGooAgA2AgAgASgCzAEhASAAIAc6AFEgACANOgBQQQAhBSAAQQA2AkwgACABNgI8IAAgAzYCOCAAIBM2AiQgACAPNgIgIAJCADcDwAIgAkIBNwO4AiACQgA3A+gCIAJBADYCsAIgAkIANwP4AiACQoCAgICAATcD8AIgAkGAgICAeDYC0AIgAkGABjsBgAMgACACKQPgAzcCKCAAQTBqIAJB4ANqQQhqKQMANwIAIAJBsAJqELgbIAJB8AJqEPolIAJB0AJqEJknDA8LIAJBATYCtAIgAkHg6ZsBNgKwAiACQgA3ArwCIAIgAkG4A2o2ArgCIAJBsAJqQejpmwEQtSEACyAAQQ02AgAgACAENgIECyACQYgDahD6JQwLCyACQeADahCUFQsgAkHABGoQyiUMAgsgAS0A2AEiBEEBRg0AAkAgBEEHRg0AIAEoAtQBIQQgASgC0AEhAyACQYgDaiABEJckIAJBATYC5AMgAkG8t5wBNgLgAyACQgE3AuwDIAJBjwU2AsQEIAJBBzoA4AQgAiACQcAEajYC6AMgAiACQaAEajYCwAQgAiACQeAEajYCoAQgAkG4A2ogAkHgA2oQ5Q8gAkHMA2ogAkGQA2ooAgA2AgAgAiACKQKIAzcCxAMgAyAEIAJBuANqEJcZIQQgAS0A2AFBogFHDQIgASABEMApEKcWDAILIAEQlAsgCEEcRw0AIAEtANgBQf8BcUEBRw0AIAEoAswBIQQgASgCyAEhCCACQbqAgIB4NgLgAyABIAggBCACQeADahCqIQwACwsgAigCpAMiASACKAKoAxDjIiACKAKgAyABEMoqCyAAQQ02AgAgACAENgIEDAULIAEgARDAKRCnFgsgAEENNgIAIAAgBDYCBAwECyAAQQU2AgAgAkH8A2ogAkHIAmopAwA3AgAgAkH0A2ogAkHAAmopAwA3AgAgAkHsA2ogAkG4AmopAwA3AgAgAiACKQOwAjcC5AMCQEEkRQ0AIABBBGogAkHgA2pBJPwKAAALIAAgBzoAOSAAQQA6ADggACAJOgA3IAAgDToANiAAIAY6ADUgACAFQf8BcUGUAUY6ADQgACAENgIwIAAgAzYCLCAAIAo2AigMCQsCQCABLQDYASIGQQ9HDQAgARCUCwsgAkGwAmogARD1CSACKAK0AiEEAkAgAigCsAIiBUEGRw0AIABBDTYCACAAIAQ2AgRBASEEDAULIAJB4ANqQRhqIAJBsAJqQRhqKQMANwMAIAJB4ANqQRBqIAJBsAJqQRBqKQMANwMAIAIgAikDuAI3A+gDIAIgBDYC5AMgAiAFNgLgAwJAAkACQAJAIAJB4ANqEJAVDQAgEw0BQQEhBAJAIA0NAEEAIQQgAS0AkQFBIHFFDQAgAS0A2AFB/wFxQQpHDQAgARCUC0EBIQQLIAJBsAJqQRhqIAJB4ANqQRhqKQMANwMAIAJBsAJqQRBqIAJB4ANqQRBqKQMANwMAIAJBsAJqQQhqIAJB4ANqQQhqKQMANwMAIAJB3AJqIAJB+AFqQQhqKAIANgIAIAIgAikD4AM3A7ACIAIgAikD+AE3AtQCIAIgBzoA7AIgAiADNgLQAiACIAQ6AO8CIAIgEDYC6AIgAiAMNgLkAiACIA42AuACIAIgFEEBcToA7gIgAiAJQQFxOgDwAiACIAZBD0Y6APICIAJBAToA8QJBACEEIAJBADoA7QIgACABIAJBsAJqEJ0EDAgLIAJBgAFqIAJB4ANqEKsfIAIoAoQBIQQgAigCgAEhAyACQd6AgIB4NgKwAiADIAQgAkGwAmoQlxkhBCABLQDYAUGiAUcNAgwBCyABKALMASEEIAJB44CAgHg2ArACIAMgBCACQbACahCXGSEEIAEtANgBQaIBRw0BCyABIAEQwCkQpxYLIABBDTYCACAAIAQ2AgQgAkHgA2oQ0CRBASEEDAQLAkACQAJAIAoNACACQfgAaiACQZACahCrHyACIAIoAnwiCDYCxAQgAiACKAJ4Ig82AsAEIAJBsAJqIAEQ9QkgAigCtAIhCgJAIAIoArACIhVBBkYiBEUNACAAQQ02AgAgACAKNgIEDAcLIAJBiANqQRBqIAJBsAJqQRhqKQMAIiU3AwAgAkGQA2ogAkGwAmpBEGopAwAiJjcDACACQbgDakEQaiAmNwMAIAJBuANqQRhqICU3AwAgAiACKQO4AiIlNwOIAyACIAo2ArwDIAIgFTYCuAMgAiAlNwPAAwJAIBNFDQAgAkGPgICAeDYCsAIgASAPIAggAkGwAmoQqiELIAJBuANqEJAVDQEMBQsgAkGwAmpBBHIgARCXJCACQTE2AsQCIAJB1OibATYCwAIgAkGwgICAeDYCsAIgASgC0AEgASgC1AEgAkGwAmoQlxkhBCABLQDYAUGiAUcNASABIAEQwCkQpxYMAQsgAkHigICAeDYCsAIgASAPIAggAkGwAmoQqiEMAwsgAEENNgIAIAAgBDYCBAtBASEFC0EBIQQMAgsgAkHwAGogBhCcFQJAAkACQAJAAkACQCACKAJwIgYgAigCdCITQcCynAFBAxCuIw0AIAYgE0HDspwBQQMQriMNAUGEpJwBQShBxOibARDHHAALIAJB3AJqIAJB+AFqQQhqIgYoAgA2AgAgAkGwAmpBEGogAkGIA2pBCGopAwA3AwAgAkHIAmogAkGIA2pBEGopAwA3AwAgAiACKQP4ATcC1AIgAiAHOgDsAiACIAM2AtACIAIgDToA7wIgAiAQNgLoAiACIAw2AuQCIAIgDjYC4AIgAiAKNgK0AiACIBU2ArACIAIgAikDiAM3A7gCIAIgFEEBcSIKOgDuAiACIAlBAXEiCToA8AIgAkEAOwDxAiACQQE6AO0CIAIgAzYCoAQgAkHgA2pBCGogBigCADYCACACIAIpA/gBNwPgAyACQQA6AKADIAJBADoArAMgASgCiAEhAyACIAJBrANqNgL4AyACIAJBoANqNgL0AyACIAJBwARqNgLwAyACIAJBoARqNgLsAwJAAkAgA0GAgIAQcQ0AIAEgA0GAgIAQcjYCiAEgAkHIAGogAkHgA2ogARCfDiACKAJIIQYgASABKAKIAUH///9vcTYCiAEgAigCTCEDDAELIAJB0ABqIAJB4ANqIAEQnw4gAigCVCEDIAIoAlAhBgsCQCAGQQFxRQ0AIABBDTYCACAAIAM2AgQgAkGwAmoQ0CQMBgsgAS0AkQFBIHFFDQQgAS0AkgFB/wFxRQ0BDAQLIAJB3AJqIAJB+AFqQQhqIgYoAgA2AgAgAkGwAmpBEGogAkGIA2pBCGopAwA3AwAgAkHIAmogAkGIA2pBEGopAwA3AwAgAiACKQP4ATcC1AIgAiAHOgDsAiACIAM2AtACIAIgDToA7wIgAiAQNgLoAiACIAw2AuQCIAIgDjYC4AIgAiAKNgK0AiACIBU2ArACIAIgAikDiAM3A7gCIAIgFEEBcSIKOgDuAiACIAlBAXEiCToA8AIgAkEAOwDxAiACQQI6AO0CIAIgAzYCoAQgAkHgA2pBCGogBigCADYCACACIAIpA/gBNwPgAyACQQA6AKADIAJBADoArAMgASgCiAEhAyACIAJBrANqNgL4AyACIAJBoANqNgL0AyACIAJBwARqNgLwAyACIAJBoARqNgLsAwJAAkAgA0GAgIAQcQ0AIAEgA0GAgIAQcjYCiAEgAkHgAGogAkHgA2ogARCgDiACKAJgIQYgASABKAKIAUH///9vcTYCiAEgAigCZCEDDAELIAJB6ABqIAJB4ANqIAEQoA4gAigCbCEDIAIoAmghBgsCQCAGQQFxRQ0AIABBDTYCACAAIAM2AgQgAkGwAmoQ0CQMBQsgAS0AkQFBIHFFDQIgAS0AkgFB/wFxRQ0BDAILIAJBwABqIAJBsAJqEKsfIAIoAkQhBiACKAJAIRMgAkGAgYCAeDYC4AMgASATIAYgAkHgA2oQqiEMAgsgAkHYAGogAkGwAmoQqx8gAigCXCEGIAIoAlghEyACQYCBgIB4NgLgAyABIBMgBiACQeADahCqIQsCQAJAAkAgFUEFRg0AIAEoAswBIQYgAigCoAQhFSAUQQFxDQEMAgsgASgCzAEhFCACKAKgBCEGIAIoAsQCIRUCQCAHQf8BcUEDRg0AIAJBtYGAgHg2AuADIAEgBiAVIAYgFUkbIAYgFSAGIBVLGyACQeADahCqIQsgAkHgA2pBDGogAkGIA2pBCGooAgA2AgAgAEEGNgIAIAAgCToAKSAAIA06ACggACAKOgAnIABBAjoAJSAAIAc6ACQgACADNgIgIAAgFDYCHCAAIAY2AhggACAVNgIUIAIgAikDiAM3AuQDIAAgAikC4AM3AgQgACAFQf8BcUGUAUY6ACYgAEEMaiACQeADakEIaikCADcCAAwDCyADKAIYQYCAgIB4Rg0AIAJBoYGAgHg2AuADIAEgFSAGIAJB4ANqEKohCyAAQQU2AgAgAkH8A2ogAkHIAmopAwA3AgAgAkH0A2ogAkHAAmopAwA3AgAgAkHsA2ogAkG4AmopAwA3AgAgAiACKQOwAjcC5AMCQEEkRQ0AIABBBGogAkHgA2pBJPwKAAALIAAgBzoAOSAAQQI6ADggACAJOgA3IAAgDToANiAAIAo6ADUgACAFQf8BcUGUAUY6ADQgACADNgIwIAAgBjYCLCAAIBU2AigMAQsCQAJAAkAgFUEFRg0AIAEoAswBIQYgAigCoAQhFSAUQQFxDQEMAgsgASgCzAEhFCACKAKgBCEGIAIoAsQCIRUCQCAHQf8BcUEDRg0AIAJBtYGAgHg2AuADIAEgBiAVIAYgFUkbIAYgFSAGIBVLGyACQeADahCqIQsgAkHgA2pBDGogAkGIA2pBCGooAgA2AgAgAEEGNgIAIAAgCToAKSAAIA06ACggACAKOgAnIABBAToAJSAAIAc6ACQgACADNgIgIAAgFDYCHCAAIAY2AhggACAVNgIUIAIgAikDiAM3AuQDIAAgAikC4AM3AgQgACAFQf8BcUGUAUY6ACYgAEEMaiACQeADakEIaikCADcCAAwCCyADKAIYQYCAgIB4Rg0AIAJBoYGAgHg2AuADIAEgFSAGIAJB4ANqEKohCyAAQQU2AgAgAkH8A2ogAkHIAmopAwA3AgAgAkH0A2ogAkHAAmopAwA3AgAgAkHsA2ogAkG4AmopAwA3AgAgAiACKQOwAjcC5AMCQEEkRQ0AIABBBGogAkHgA2pBJPwKAAALIAAgBzoAOSAAQQE6ADggACAJOgA3IAAgDToANiAAIAo6ADUgACAFQf8BcUGUAUY6ADQgACADNgIwIAAgBjYCLCAAIBU2AigLQQEhBQsCQAJAAkAgAigCkAJBBUYNACAFDQEMAgsgAkGQAmoQ0CQMAQsgAkGQAmoQuBsLIARFDQILIAJB+AFqEMolDAELIAEoAswBIQQgAkHcAmogAkGUAWooAgA2AgAgAiACKQKMATcC1AIgAiAHOgDsAiACIAM2AtACIAJBADoA8AIgAkEANgLgAiACQQA7APECIAJBADsA7QIgAiAENgLEAiACIAM2AsACIAJC8ciVm8atmLnlADcDuAIgAkEANgKwAiACIAkgBUH/AXFBCkZxOgDvAiAAIAEgAkGwAmoQnQQLIAJB8ARqJAAL41sCC38BfiMAQbABayIDJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCACIEQXRqIgVBByAFQSZJGw4mAAECAwQFBgcICQoLDA0ODxARJyYlJCMiISAxHx4dHBsaGRgXFhUACyABKAIIIQUgA0GgAWogAiABKAIEIgRBABCIAgJAAkAgAy0AoAFBBEYNACADKQOgASIOQv8Bg0IEUg0BCyADIAU2AqgBIAMgBDYCpAEgA0EBNgKgASADQZABaiACIANBoAFqQeKanAFBBBCkDSADLQCQAUEERg0xIAMpA5ABIg5C/wGDQgRRDTELIA5C/wGDQgRRDTAgACAONwIADDELIAEoAhQhBiADQZABaiACIAEoAhAiB0EAEIgCAkAgAy0AkAFBBEYNACADKQOQASIOQv8Bg0IEUg0vCwJAIAdFDQAgA0GQAWogAiAHENsgIAMtAJABQQRGDQAgAykDkAEiDkL/AYNCBFINLwsgA0EANgKgASADQZABaiACIANBoAFqQcWpnAFBARCjDQJAIAMtAJABQQRGDQAgAykDkAEiDkL/AYNCBFINLwsgASgCCCIFIAEoAgwiCEEEdGpBcGohCUHSIiEKAkAgCEUNACAJRQ0AQdKiwABB0iIgCSgCAEECRhshCgsgA0GQAWogAiAHIAggCiAIEMIcAkAgAy0AkAFBBUYNACADKQOQASEODC0LQQUgAygClAEQ8iUgCEUNKyADQShqIAUQtxkgAi0ATUEBRg0qIANBkAFqIAIQsRUgAy0AkAFBBEYNKiADKQOQASIOQv8Bg0IEUQ0qDCwLIANBoAFqIAFBBGogAhB5IAMtAKABQQRGDS4gAykDoAEiDkL/AYNCBFENLiAAIA43AgAMLwsgA0GgAWogAUEIaiACELIFIAMtAKABQQRGDS0gAykDoAEiDkL/AYNCBFENLSAAIA43AgAMLgsgA0GgAWogAiABKAIIIgVBABCIAgJAAkAgAy0AoAFBBEYNACADKQOgASIOQv8Bg0IEUg0BCwJAIAVFDQAgA0GgAWogAiAFENsgIAMtAKABQQRGDQAgAykDoAEiDkL/AYNCBFINAQsgAUEEaiEEIANBMGogAS0AECIFELsiIAMoAjQhCyADKAIwIQwCQAJAAkACQCAFQQNLDQAgA0EANgKgASADQZABaiACIANBoAFqIAwgCxCjDQJAIAMtAJABQQRGDQAgAykDkAEiDkL/AYNCBFINBQsgBCgCACAFEJQNDQEMAwsgA0EANgKgASADQZABaiACIANBoAFqIAwgCxCkDQJAIAMtAJABQQRGDQAgAykDkAEiDkL/AYNCBFINBAsgBCgCACAFEJQNRQ0BCyADQaABaiACENYQIAMtAKABQQRGDQEgAykDoAEiDkL/AYNCBFENAQwCCyACLQBNDQAgA0GgAWogAhDWECADLQCgAUEERg0AIAMpA6ABIg5C/wGDQgRSDQELIANBoAFqIAQgAhDvKiADLQCgAUEERg0tIAMpA6ABIg5C/wGDQgRRDS0LIA5C/wGDQgRRDSwgACAONwIADC0LIANBoAFqIAIgASgCBCIFQQAQiAICQAJAIAMtAKABQQRGDQAgAykDoAEiDkL/AYNCBFINAQsCQCAFRQ0AIANBoAFqIAIgBRDbICADLQCgAUEERg0AIAMpA6ABIg5C/wGDQgRSDQELAkAgAS0AEQ0AIANBoAFqIAFBDGogAhDvKgJAIAMtAKABQQRGDQAgAykDoAEiDkL/AYNCBFINAgsgA0EANgKgASADQZABaiACIANBoAFqQffcmwFB9dybASABLQAQG0ECEKUNIAMtAJABQQRGDS0gAykDkAEiDkL/AYNCBFINAQwtCyADQQA2AqABIANBkAFqIAIgA0GgAWpB99ybAUH13JsBIAEtABAbQQIQpQ0CQCADLQCQAUEERg0AIAMpA5ABIg5C/wGDQgRSDQELIANBoAFqIAFBDGogAhDvKiADLQCgAUEERg0sIAMpA6ABIg5C/wGDQgRRDSwLIA5C/wGDQgRRDSsgACAONwIADCwLIANBoAFqIAIgASgCDCIFQQAQiAICQAJAIAMtAKABQQRGDQAgAykDoAEiDkL/AYNCBFINAQsCQCAFRQ0AIANBoAFqIAIgBRDbICADLQCgAUEERg0AIAMpA6ABIg5C/wGDQgRSDQELQQAhBSADQQA2AqgBIANCgICAgMAANwKgAUF/IQRBBCEKIAFBBGoiByELA0ACQCAEQQFqIgwgAygCoAFHDQAgA0GgAWoQ9xsgAygCpAEhCgsgCiAFaiALNgIAIAMgBEECajYCqAEgBUEEaiEFIAsoAgAiBkEEaiELIAwhBCAGKAIAQRJGDQALQQAhBCADKAKkASEGIAMoAqABIQoCQAJAA0AgBUUNASAGIAVqQXxqKAIAIQsCQCAEDQAgA0GQAWogCyACEO8qIAMtAJABQQRGDQAgAykDkAEiDkL/AYNCBFINAwsCQCAMIARGDQAgA0GQAWogAiALEOYDIAMtAJABQQRGDQAgAykDkAEiDkL/AYNCBFINAwsgBEEBaiEEIAVBfGohBQwACwsgBiAKEPIqIANBoAFqIAIgBxDmAyADLQCgAUEERg0sIAMpA6ABIg5C/wGDQgRSDQEMLAsgBiAKEPIqCyAOQv8Bg0IEUQ0qIAAgDjcCAAwrCyADQaABaiACIAEoAjBBABCIAgJAAkAgAy0AoAFBBEYNACADKQOgASIOQv8Bg0IEUg0BCwJAAkACQCAEQQtHDQAgAUEIaiEFAkACQAJAAkAgASgCBA4DAAECAAsgA0GgAWogBSACENkCIAMtAKABQQRGDQUgAykDoAEiDkL/AYNCBFINAgwFCyADQaABaiAFIAIQ0gEgAy0AoAFBBEYNBCADKQOgASIOQv8Bg0IEUg0BDAQLIANBoAFqIAEoAgggASgCDCACEKsRIAMtAKABQQRGDQMgAykDoAEiDkL/AYNCBFENAwsgDkL/AYNCBFINAQwCCwJAAkACQAJAAkACQAJAAkACQAJAAkACQCAEDgsAAQIDBAUGBwgJCgALIANBoAFqIAFBCGogAhCXCiADLQCgAUEERg0MIAMpA6ABIg5C/wGDQgRSDQoMDAsgA0GgAWogAUEIaiACEPQCIAMtAKABQQRGDQsgAykDoAEiDkL/AYNCBFINCQwLCyADQaABaiABQQhqIAIQ+gYgAy0AoAFBBEYNCiADKQOgASIOQv8Bg0IEUg0IDAoLIANBoAFqIAFBBGogAhDoByADLQCgAUEERg0JIAMpA6ABIg5C/wGDQgRSDQcMCQsgA0GgAWogAUEEaiACEI4EIAMtAKABQQRGDQggAykDoAEiDkL/AYNCBFINBgwICyADQaABaiABQQRqIAIQswggAy0AoAFBBEYNByADKQOgASIOQv8Bg0IEUg0FDAcLIANBoAFqIAFBBGogAhC0CCADLQCgAUEERg0GIAMpA6ABIg5C/wGDQgRSDQQMBgsgA0GgAWogAUEEaiACEI0NIAMtAKABQQRGDQUgAykDoAEiDkL/AYNCBFINAwwFCyADQaABaiABQQRqIAIQmQkgAy0AoAFBBEYNBCADKQOgASIOQv8Bg0IEUg0CDAQLIANBoAFqIAFBBGogAhDrDSADLQCgAUEERg0DIAMpA6ABIg5C/wGDQgRSDQEMAwsgA0GgAWogASgCBCABKAIIIAIQqxEgAy0AoAFBBEYNAiADKQOgASIOQv8Bg0IEUQ0CCyAOQv8Bg0IEUQ0BCyAOQv8Bg0IEUg0BCwJAIAItAE0NACADQaABaiACENYQIAMtAKABQQRGDQAgAykDoAEiDkL/AYNCBFINAQsgA0EANgKgASADQZABaiACIANBoAFqIAEtADxBAnQiBUHc1J4BaigCACAFQZzUngFqKAIAEKUNAkAgAy0AkAFBBEYNACADKQOQASIOQv8Bg0IEUg0BCwJAIAItAE0NACADQaABaiACENYQIAMtAKABQQRGDQAgAykDoAEiDkL/AYNCBFINAQsgA0GgAWogAUE4aiACEO8qIAMtAKABQQRGDSogAykDoAEiDkL/AYNCBFENKgsgDkL/AYNCBFENKSAAIA43AgAMKgsgA0GgAWogAUEIaiACEPQCIAMtAKABQQRGDSggAykDoAEiDkL/AYNCBFENKCAAIA43AgAMKQsgA0GgAWogAUEIaiACEPoGIAMtAKABQQRGDScgAykDoAEiDkL/AYNCBFENJyAAIA43AgAMKAsgA0GQAWogAiABKAIQIgVBABCIAgJAAkAgAy0AkAFBBEYNACADKQOQASIOQv8Bg0IEUg0BCwJAIAVFDQAgA0GQAWogAiAFENsgIAMtAJABQQRGDQAgAykDkAEiDkL/AYNCBFINAQsgA0GQAWogAUEEaiACEO8qAkAgAy0AkAFBBEYNACADKQOQASIOQv8Bg0IEUg0BCwJAIAItAE0NACADQZABaiACENYQIAMtAJABQQRGDQAgAykDkAEiDkL/AYNCBFINAQsgA0EANgKgASADQZABaiACIANBoAFqQeSHnAFBARCjDQJAIAMtAJABQQRGDQAgAykDkAEiDkL/AYNCBFINAQsCQCACLQBNDQAgA0GQAWogAhDWECADLQCQAUEERg0AIAMpA5ABIg5C/wGDQgRSDQELIANBkAFqIAFBCGogAhDvKgJAIAMtAJABQQRGDQAgAykDkAEiDkL/AYNCBFINAQsCQCACLQBNDQAgA0GQAWogAhDWECADLQCQAUEERg0AIAMpA5ABIg5C/wGDQgRSDQELIANBkAFqIAIgA0GgAWpBxKmcAUEBEKMNAkAgAy0AkAFBBEYNACADKQOQASIOQv8Bg0IEUg0BCwJAIAItAE0NACADQZABaiACENYQIAMtAJABQQRGDQAgAykDkAEiDkL/AYNCBFINAQsgA0GQAWogAUEMaiACEO8qIAMtAJABQQRGDScgAykDkAEiDkL/AYNCBFENJwsgDkL/AYNCBFENJiAAIA43AgAMJwsgASgCICEEIANBoAFqIAIgASgCHCIFQQAQiAICQAJAIAMtAKABQQRGDQAgAykDoAEiDkL/AYNCBFINAQsCQCAFRQ0AIANBoAFqIAIgBRDbICADLQCgAUEERg0AIAMpA6ABIg5C/wGDQgRSDQELAkACQAJAAkACQCABLQAYIgxBfWoiC0EBIAtB/wFxQQNJG0H/AXEOAwABAgALIANBoAFqIAEoAhAgASgCFCACELoUIAMtAKABQQRGDQMgAykDoAEiDkL/AYNCBFINAgwDCyADQQE2AoABIAMgASkDEDcChAEgA0H4AGogAiADQYABakHX9ZsBQQYQpA0CQAJAIAMtAHhBBEYNACADKQN4Ig5C/wGDQgRSDQELAkACQCAMDgMFAAEFCyADQQA2ApABIANBgAFqIAIgA0GQAWpB1YucAUEBEKMNAkAgAy0AgAFBBEYNACADKQOAASIOQv8Bg0IEUg0CCyADQYABaiACIANBkAFqQZT+mwFBBhCkDSADLQCAAUEERg0EIAMpA4ABIg5C/wGDQgRSDQEMBAsgA0EANgKgASADQYABaiACIANBoAFqQdWLnAFBARCjDQJAIAMtAIABQQRGDQAgAykDgAEiDkL/AYNCBFINAQsgA0GAAWogAiADQaABakGa/psBQQUQpA0gAy0AgAFBBEYNAyADKQOAASIOQv8Bg0IEUQ0DCyAOQv8Bg0IEUg0BDAILAkAgAUEQaiILKAIAIgwoAgBBGEcNACADQaABaiACIAxBBGpBABDeBCADLQCgAUEERg0CIAMpA6ABIg5C/wGDQgRSDQEMAgsgA0GgAWogCyACEO8qIAMtAKABQQRGDQEgAykDoAEiDkL/AYNCBFENAQsgDkL/AYNCBFINAQsCQCABKAIoIgtFDQAgA0GgAWogCyACEIgKIAMtAKABQQRGDQAgAykDoAEiDkL/AYNCBFINAQsgA0EANgJsIANBoAFqIAIgA0HsAGpBwamcAUEBEKMNAkAgAy0AoAFBBEYNACADKQOgASIOQv8Bg0IEUg0BCyADQaABaiACIAUgBCABKAIIIAEoAgwQzicCQCADLQCgAUEERg0AIAMpA6ABIg5C/wGDQgRSDQELIANBoAFqIAIgA0HsAGpB3PydAUEBEKMNIAMtAKABQQRGDSYgAykDoAEiDkL/AYNCBFENJgsgDkL/AYNCBFENJSAAIA43AgAMJgsgA0GgAWogAiABQQRqQQEQ3gQgAy0AoAFBBEYNJCADKQOgASIOQv8Bg0IEUQ0kIAAgDjcCAAwlCyADQaABaiACIAEoAhAiBUEAEIgCAkAgAy0AoAFBBEYNACADKQOgASIOQv8Bg0IEUg0HCwJAIAVFDQAgA0GgAWogAiAFENsgIAMtAKABQQRGDQAgAykDoAEiDkL/AYNCBFINBwsgASgCDEECdCEFIAEoAgghBEEBIQsDQCAFRQ0kAkAgC0EBcQ0AIANBADYCoAEgA0GQAWogAiADQaABakHDqZwBQQEQow0CQCADLQCQAUEERg0AIAMpA5ABIg5C/wGDQgRSDQkLIAItAE0NACADQaABaiACENYQIAMtAKABQQRGDQAgAykDoAEiDkL/AYNCBFINCAsgA0GgAWogBCACEO8qAkAgAy0AoAFBBEYNACADKQOgASIOQv8Bg0IEUg0ICyAEQQRqIQQgBUF8aiEFQQAhCwwACwsgA0GgAWogAUEIaiACEPkWIAMtAKABQQRGDSIgAykDoAEiDkL/AYNCBFENIiAAIA43AgAMIwsgA0GgAWogAUEIaiACEJEEIAMtAKABQQRGDSEgAykDoAEiDkL/AYNCBFENISAAIA43AgAMIgsgASgCICEIIANBkAFqIAIgASgCHCIFQQAQiAICQCADLQCQAUEERg0AIAMpA5ABIg5C/wGDQgRSDRsLAkAgBUUNACADQZABaiACIAUQ2yAgAy0AkAFBBEYNACADKQOQASIOQv8Bg0IEUg0bCyADQQA2AqABIANBkAFqIAIgA0GgAWpB5u6bAUEBEKMNAkAgAy0AkAFBBEYNACADKQOQASIOQv8Bg0IEUg0bCyABKAIMIgogASgCGCIMaiEEIAEoAhQhBiABKAIIIQdBACEFA0ACQAJAAkAgBCAFRg0AIAVBAXENASAFQQF2IgsgDE8NBiADQZABaiAGIAtBBXRqIAIQZyADLQCQAUEERg0CIAMpA5ABIg5C/wGDQgRSDR4MAgsgA0GQAWogAiADQaABakHm7psBQQEQow0CQCADLQCQAUEERg0AIAMpA5ABIg5C/wGDQgRSDR4LIAhFDSMgA0GQAWogAiAIENsgIAMtAJABQQRGDSMgAykDkAEiDkL/AYNCBFENIwwdCyADQZABaiACIANBoAFqQfjumwFBAhCjDQJAIAMtAJABQQRGDQAgAykDkAEiDkL/AYNCBFINHQsgBUEBdiILIApPDQMgA0GQAWogByALQQJ0aiACEO8qAkAgAy0AkAFBBEYNACADKQOQASIOQv8Bg0IEUg0dCyADQZABaiACIANBoAFqQdqLnAFBARCjDSADLQCQAUEERg0AIAMpA5ABIg5C/wGDQgRSDRwLIAVBAWohBQwACwsgASgCECEJIANBoAFqIAIgASgCDCIFQQAQiAICQCADLQCgAUEERg0AIAMpA6ABIg5C/wGDQgRSDRkLAkAgBUUNACADQaABaiACIAUQ2yAgAy0AoAFBBEYNACADKQOgASIOQv8Bg0IEUg0ZCwJAAkAgAUEEaiIFKAIAIgQoAgBBGEcNACADQaABaiACIARBBGpBABDeBCADLQCgAUEERg0BIAMpA6ABIg5C/wGDQgRRDQEMGgsgA0GgAWogBSACEO8qIAMtAKABQQRGDQAgAykDoAEiDkL/AYNCBFINGQsgA0GgAWogAUEYaiACEOEjAkAgAy0AoAFBBEYNACADKQOgASIOQv8Bg0IEUg0ZCyABKAIIIgUoAhwhDSADQZABaiACIAUoAhgiBEEAEIgCAkAgAy0AkAFBBEYNACADKQOQASIOQv8Bg0IEUg0XCwJAIARFDQAgA0GQAWogAiAEENsgIAMtAJABQQRGDQAgAykDkAEiDkL/AYNCBFINFwsgA0EANgKgASADQZABaiACIANBoAFqQebumwFBARCYDQJAIAMtAJABQQRGDQAgAykDkAEiDkL/AYNCBFINFwsgBSgCCCIHIAUoAhQiBmohCyAFKAIQIQogBSgCBCEIQQAhBQNAAkACQAJAAkACQCALIAVGDQAgBUEBcQ0BIAVBAXYiBCAGTw0CAkACQCAKIARBBXRqIgQoAggiDEUNACADQZABaiACIAwQ2yAgAy0AkAFBBEYNACADKQOQASIOQv8Bg0IEUg0BCyADQThqIAQQnBUgA0GQAWogAkEAQQAgAygCOCADKAI8EOcOAkAgAy0AkAFBBEYNACADKQOQASIOQv8Bg0IEUg0BCyAEKAIMIgRFDQUgA0GQAWogAiAEENsgIAMtAJABQQRGDQUgAykDkAEiDkL/AYNCBFENBQsgDkL/AYNCBFINHAwECyADQZABaiACIANBoAFqQebumwFBARCYDQJAIAMtAJABQQRGDQAgAykDkAEiDkL/AYNCBFINHAsgDUUNHCADQZABaiACIA0Q2yAgAy0AkAFBBEYNHCADKQOQASIOQv8Bg0IEUg0bDBwLIANBkAFqIAIgA0GgAWpB+O6bAUECEJgNAkAgAy0AkAFBBEYNACADKQOQASIOQv8Bg0IEUg0bCyAFQQF2IgQgB08NASADQZABaiAIIARBAnRqIAIQ7yoCQCADLQCQAUEERg0AIAMpA5ABIg5C/wGDQgRSDRsLIANBkAFqIAIgA0GgAWpB2oucAUEBEJgNIAMtAJABQQRGDQIgAykDkAEiDkL/AYNCBFENAgwaCyAEIAZBoNubARDAFAALIAQgB0Gw25sBEMAUAAsgBUEBaiEFDAALCyALIApBuOKbARDAFAALIAsgDEGo4psBEMAUAAsgDkL/AYNCBFENHCAAIA43AgAMHQsgA0GgAWogASgCBCABKAIIIAIQqxEgAy0AoAFBBEYNGyADKQOgASIOQv8Bg0IEUQ0bIAAgDjcCAAwcCyADQaABaiABQQRqIAIQjgQgAy0AoAFBBEYNGiADKQOgASIOQv8Bg0IEUQ0aIAAgDjcCAAwbCyADQaABaiABQQhqIAIQ9gggAy0AoAFBBEYNGSADKQOgASIOQv8Bg0IEUQ0ZIAAgDjcCAAwaCyADQaABaiABQQRqIAIQtAggAy0AoAFBBEYNGCADKQOgASIOQv8Bg0IEUQ0YIAAgDjcCAAwZCyADQaABaiABQQRqIAIQ6w0gAy0AoAFBBEYNFyADKQOgASIOQv8Bg0IEUQ0XIAAgDjcCAAwYCyADQaABaiABQQRqIAIQswggAy0AoAFBBEYNFiADKQOgASIOQv8Bg0IEUQ0WIAAgDjcCAAwXCyADQaABaiABQQRqIAIQjQ0gAy0AoAFBBEYNFSADKQOgASIOQv8Bg0IEUQ0VIAAgDjcCAAwWCyADQZABaiACIAEoAghBABCIAgJAAkAgAy0AkAFBBEYNACADKQOQASIOQv8Bg0IEUg0BCyADQZABaiABQQRqIAIQ7yoCQCADLQCQAUEERg0AIAMpA5ABIg5C/wGDQgRSDQELIANBkAFqIAIQ0RACQCADLQCQAUEERg0AIAMpA5ABIg5C/wGDQgRSDQELIANBADYCoAEgA0GQAWogAiADQaABakGkgJwBQQIQnQ0CQCADLQCQAUEERg0AIAMpA5ABIg5C/wGDQgRSDQELIANBkAFqIAIQ0RACQCADLQCQAUEERg0AIAMpA5ABIg5C/wGDQgRSDQELIANBkAFqIAIgA0GgAWpBm+6bAUEFEJ0NIAMtAJABQQRGDRUgAykDkAEiDkL/AYNCBFENFQsgDkL/AYNCBFENFCAAIA43AgAMFQsgA0GgAWogAUEEaiACEJkJIAMtAKABQQRGDRMgAykDoAEiDkL/AYNCBFENEyAAIA43AgAMFAsgA0GgAWogAUEEaiACEIAMIAMtAKABQQRGDRIgAykDoAEiDkL/AYNCBFENEiAAIA43AgAMEwsgA0GgAWogASgCBCACELsBIAMtAKABQQRGDREgAykDoAEiDkL/AYNCBFENESAAIA43AgAMEgsgA0GgAWogAUEIaiACEI4NIAMtAKABQQRGDRAgAykDoAEiDkL/AYNCBFENECAAIA43AgAMEQsgA0GgAWogAUEIaiACEJMKIAMtAKABQQRGDQ8gAykDoAEiDkL/AYNCBFENDyAAIA43AgAMEAsgA0GgAWogAUEEaiACEOgHIAMtAKABQQRGDQ4gAykDoAEiDkL/AYNCBFENDiAAIA43AgAMDwsgA0GgAWogAiABKAIIIgVBABCIAgJAAkAgAy0AoAFBBEYNACADKQOgASIOQv8Bg0IEUg0BCwJAIAVFDQAgA0GgAWogAiAFENsgIAMtAKABQQRGDQAgAykDoAEiDkL/AYNCBFINAQsgA0EANgKgASADQZABaiACIANBoAFqQbyknAFBBRCkDQJAIAMtAJABQQRGDQAgAykDkAEiDkL/AYNCBFINAQsgA0GgAWogAhDWEAJAIAMtAKABQQRGDQAgAykDoAEiDkL/AYNCBFINAQsgA0GgAWogAUEEaiACEO8qIAMtAKABQQRGDQ4gAykDoAEiDkL/AYNCBFENDgsgDkL/AYNCBFENDSAAIA43AgAMDgsgAS0ADCEEIAEoAgQhBQJAAkAgAigCREUNACADQaABaiACIAVBABCIAiADLQCgAUEERg0AIAMpA6ABIg5C/wGDQgRSDQELAkAgBUUNACADQaABaiACIAUQ2yAgAy0AoAFBBEYNACADKQOgASIOQv8Bg0IEUg0BCwJAIARBAXFFDQAgA0EANgKgASADQZABaiACIANBoAFqQY7jmwFBCxCkDSADLQCQAUEERg0OIAMpA5ABIg5C/wGDQgRSDQEMDgsgA0EANgKgASADQZABaiACIANBoAFqQYTjmwFBChCkDSADLQCQAUEERg0NIAMpA5ABIg5C/wGDQgRRDQ0LIA5C/wGDQgRRDQwgACAONwIADA0LIANBkAFqIAIgASgCBCIFQQAQiAICQAJAIAMtAJABQQRGDQAgAykDkAEiDkL/AYNCBFINAQsCQCAFRQ0AIANBkAFqIAIgBRDbICADLQCQAUEERg0AIAMpA5ABIg5C/wGDQgRSDQELIANBADYCoAEgA0GQAWogAiADQaABakHBpJwBQQUQpA0CQCADLQCQAUEERg0AIAMpA5ABIg5C/wGDQgRSDQELAkAgAS0AECIERQ0AIANBkAFqIAIgA0GgAWpBwqmcAUEBEKUNIAMtAJABQQRGDQAgAykDkAEiDkL/AYNCBFINAQsgASgCDCIFRQ0MAkACQAJAIAIgBRDIBiILDQACQCAEDQAgBRDoCA0CCyACLQBNDQIgA0GQAWogAhDWECADLQCQAUEERg0CIAMpA5ABIg5C/wGDQgRRDQIMAwsgA0GQAWogAiADQaABakHBqZwBQQEQow0gAy0AkAFBBEYNASADKQOQASIOQv8Bg0IEUQ0BDAILIANBkAFqIAIQ1hAgAy0AkAFBBEYNACADKQOQASIOQv8Bg0IEUg0BCyADQZABaiABQQxqIAIQmyQCQCADLQCQAUEERg0AIAMpA5ABIg5C/wGDQgRSDQELIAtFDQwgA0GQAWogAiADQaABakHc/J0BQQEQow0gAy0AkAFBBEYNDCADKQOQASIOQv8Bg0IEUQ0MCyAOQv8Bg0IEUQ0LIAAgDjcCAAwMCyADQaABaiABQQhqIAIQmgUgAy0AoAFBBEYNCiADKQOgASIOQv8Bg0IEUQ0KIAAgDjcCAAwLCyABKAIYIQogA0GgAWogAiABKAIUIgtBABCIAgJAAkAgAy0AoAFBBEYNACADKQOgASIOQv8Bg0IEUg0BCwJAIAtFDQAgA0GgAWogAiALENsgIAMtAKABQQRGDQAgAykDoAEiDkL/AYNCBFINAQsCQAJAAkAgAi0ATQ0AIAEtAChFDQIgA0EANgKgASADQZABaiACIANBoAFqQcaynAFBBRCkDSADLQCQAUEERg0BIAMpA5ABIg5C/wGDQgRSDQMMAQtBACEFAkAgASgCDEEBRw0AIAEoAggoAgBFIQULIAEtAChBAUcNASADQQA2AqABIANBkAFqIAIgA0GgAWpBxrKcAUEFEKQNAkAgAy0AkAFBBEYNACADKQOQASIOQv8Bg0IEUg0DCyAFDQAgAi0ATQ0BIANBoAFqIAIQ1hAgAy0AoAFBBEYNASADKQOgASIOQv8Bg0IEUQ0BDAILIANBoAFqIAIQ1hAgAy0AoAFBBEYNACADKQOgASIOQv8Bg0IEUg0BCwJAIAEtAClFDQAgA0EANgKgASADQZABaiACIANBoAFqQcKpnAFBARCjDSADLQCQAUEERg0AIAMpA5ABIg5C/wGDQgRSDQELAkACQAJAIAItAE0NACADQaABaiABQSBqIAIQ4CMgAy0AoAFBBEYNASADKQOgASIOQv8Bg0IEUg0DDAELAkACQCABKAIMQQFHDQAgASgCCCIFKAIARQ0BCyADQaABaiABQSBqIAIQ4CMgAy0AoAFBBEYNASADKQOgASIOQv8Bg0IEUQ0BDAMLAkACQCACKAJEIgQNAEEAIQUMAQsgBCAFKAIUIAIoAkgoAiwRBwAhBQsgA0GgAWogAUEgaiACEOAjAkAgAy0AoAFBBEYNACADKQOgASIOQv8Bg0IEUg0DC0EAIQggBUUNAQsgA0EANgKgAUEBIQggA0GQAWogAiADQaABakHBqZwBQQEQow0gAy0AkAFBBEYNACADKQOQASIOQv8Bg0IEUg0BCyABKAIIIQkgA0GgAWogAiALIAEoAgwiB0GQAiAHEMIcAkACQAJAIAMtAKABQQVGDQAgAykDoAEhDgwBC0EFIAMoAqQBEPIlAkAgB0UNACADQQE6AIABIANB4ABqIAkQjw8gA0EAOgCQASAHIQQgCSEFQQAhDEEAIQYDQAJAAkACQCAERQ0AIANB2ABqIAUQjw8gA0GgAWogAiAKQZACIAwgBiADQZABaiADQYABahCtBQJAIAMtAKABQQRGDQAgAykDoAEiDkL/AYNCBFINBgsgA0GgAWogBSACEMAGAkAgAy0AoAFBBEYNACADKQOgASIOQv8Bg0IEUg0GCyADLQCAAQ0BIANBAToAgAEMAgsCQCAJIAdBKGxqQVhqIgVFDQAgA0HAAGogBRCPDwsgA0GgAWogAiALIApBkAIgDCAGEIoCIAMtAKABQQRGDQMgAykDoAEiDkL/AYNCBFINBAwDCyACKAJERQ0AIANB0ABqIAUQigMgA0GgAWogAiADKAJUQQAQ7gMgAy0AoAFBBEYNACADKQOgASIOQv8Bg0IEUg0DCwJAIAMtAJABRQ0AIAIgAigCLEF/ajYCLCADQQA6AJABCyAEQX9qIQQgA0HIAGogBRCPDyAFQShqIQVBASEMIAMoAkwhBgwACwsgA0GgAWogAiAKIAdFQZACEJsTIAMtAKABQQRGDQEgAykDoAEiDkL/AYNCBFENAQsgDkL/AYNCBFINAQsCQCAIRQ0AIANBADYCoAEgA0GQAWogAiADQaABakHc/J0BQQEQow0gAy0AkAFBBEYNACADKQOQASIOQv8Bg0IEUg0BCwJAIAEoAiQiBUUNACADQQA2AqABIANBkAFqIAIgA0GgAWpBxKmcAUEBEKMNAkAgAy0AkAFBBEYNACADKQOQASIOQv8Bg0IEUg0CCwJAIAItAE0NACADQaABaiACENYQIAMtAKABQQRGDQAgAykDoAEiDkL/AYNCBFINAgsgA0GgAWogBSACENcRAkAgAy0AoAFBBEYNACADKQOgASIOQv8Bg0IEUg0CCyACLQBNDQAgA0GgAWogAhDWECADLQCgAUEERg0AIAMpA6ABIg5C/wGDQgRSDQELIANBADYCoAEgA0GQAWogAiADQaABakGZ7psBQQIQow0CQCADLQCQAUEERg0AIAMpA5ABIg5C/wGDQgRSDQELAkACQCABKAIQIgUoAgBBgICAgHhGDQAgA0GgAWogAiAFQQEQqQYgAy0AoAFBBEYNDCADKQOgASIOQv8Bg0IEUQ0MDAELIAIgAigCLEEBajYCLCADQaABaiAFQQRqIAIQ7yoCQCADLQCgAUEERg0AIAMpA6ABIg5C/wGDQgRSDQELIAIgAigCLEF/ajYCLAwLCyAOQv8Bg0IEUQ0KCyAOQv8Bg0IEUQ0JIAAgDjcCAAwKCyAOQv8Bg0IEUg0BCyAJRQ0HIANBoAFqIAIgCRDbICADLQCgAUEERg0HIAMpA6ABIg5C/wGDQgRRDQcLIA5C/wGDQgRRDQYgACAONwIADAcLIA5C/wGDQgRRDQUgACAONwIADAYLIANBADoAbAJAIAItAE0NACACIAIoAixBAWo2AiwLIANBADoAgAEgCCEEQQAhC0EAIQwDQAJAAkACQCAERQ0AIANBIGogBRC3GSADQZABaiACIAYgCiALIAwgA0GAAWogA0HsAGoQrQUCQCADLQCQAUEERg0AIAMpA5ABIg5C/wGDQgRSDQYLAkAgBSgCAEECRg0AIANBkAFqIAUgAhC4DCADLQCQAUEERg0AIAMpA5ABIg5C/wGDQgRSDQYLIAMtAGwNASADQQE6AGwMAgsCQCAJRQ0AIANBCGogCRC3GQsgA0GQAWogAiAHIAYgCiALIAwQigIgAy0AkAFBBEYNAyADKQOQASIOQv8Bg0IEUg0EDAMLIAIoAkRFDQBBACELAkAgBSgCACIMQQJGDQAgA0EYaiAFQQxqKAIAEMQDIAMoAhwhCyAMQQFxRQ0AIAVBBGooAgAiDCALIAwgC0sbIQsLIANBkAFqIAIgC0EAEO4DIAMtAJABQQRGDQAgAykDkAEiDkL/AYNCBFINAwsCQCADLQCAAUUNACACIAIoAixBf2o2AiwgA0EAOgCAAQsgBEF/aiEEIANBEGogBRC3GSAFQRBqIQVBASELIAMoAhQhDAwACwsgA0GQAWogAiAGIAhFIAoQmxMgAy0AkAFBBEYNASADKQOQASIOQv8Bg0IEUQ0BCyAOQv8Bg0IEUg0BCyADQZABaiACIANBoAFqQcapnAFBARCjDQJAIAMtAJABQQRGDQAgAykDkAEiDkL/AYNCBFINAQsgBkUNASADQZABaiACIAYQ2yAgAy0AkAFBBEYNASADKQOQASIOQv8Bg0IEUQ0BCyAOQv8Bg0IEUQ0AIAAgDjcCAAwBCwJAAkAgAigCREUNACADIAEQxAMgA0GgAWogAiADKAIEQQEQ7gMgAy0AoAFBBEYNACADKQOgASIOQv8Bg0IEUg0BCyAAQQQ6AAAMAQsgACAONwIACyADQbABaiQAC9dfAgp/An4jAEGwBWsiBSQAIAEtANgBIQYCQAJAAkAgAS8BkAFBgMAAcSIHRQ0AIAZB/wFxQdEARw0AAkAgARDKCSIGRQ0AIAYtAABB/QBHDQAgARCUCyABEJQLIAVBkAJqIAEgAkEBEPsBIAUoApQCIQECQAJAIAUoApACQQFxRQ0AQRMhBkEEIQgMAQsgAEEGNgIIQREhBkEMIQgLIAAgBjYCACAAIAhqIAE2AgAMAgsgAS0A2AEhBgsgASgCiAEhCAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAGQf8BcSIJQcwARw0AIAMgCEGAgICAAnEiCkEddnINAQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAlBs39qDiQQCwYNCxAPCwsACwsLCwcBDgILCwsLCwsDCwQLBQsICwwLCgkLCyABKALQASEIIAEQlAsCQAJAIAEoAogBIgZBgBhxQYAYRg0AIAEgBkGAGHI2AogBIAVBkARqIAEQnywgASABKAKIASAGQf9ncnE2AogBDAELIAVBkARqIAEQnywLIAVBoAFqIAVBkARqEKwfIAUoAqQBIQYCQCAFKAKgAUEBcUUNACAAQRM2AgAgACAGNgIEDD0LIAUgBjYCuAMCQCABLQDYAUHvAEYNACABKALUASEGIAEoAtABIQggBUHwBGogARCXJCAFQQE2ApQEIAVBvLecATYCkAQgBUIBNwKcBCAFQY8FNgLMAiAFQe8AOgCoAyAFIAVByAJqNgKYBCAFIAVBkANqNgLIAiAFIAVBqANqNgKQAyAFQcgDaiAFQZAEahC0GSAFQdwDaiAFQfgEaigCADYCACAFIAUpAvAENwLUAyAIIAYgBUHIA2oQlxkhBiABLQDYAUGiAUYNEgw7CyABEJQLAkAgAS0A2AFFDQAgASgC1AEhBiABKALQASEIIAVBkAVqIAEQlyQgBUEBNgKUBCAFQby3nAE2ApAEIAVCATcCnAQgBUGPBTYCzAIgBUEAOgCoAyAFIAVByAJqNgKYBCAFIAVBkANqNgLIAiAFIAVBqANqNgKQAyAFQcgDaiAFQZAEahC0GSAFQdwDaiAFQZgFaigCADYCACAFIAUpApAFNwLUAyAIIAYgBUHIA2oQlxkhBiABLQDYAUGiAUYNEww6CyABEJQLAkACQCABKAKIASIDQcAAcQ0AIAEgA0HAAHI2AogBIAVBkAFqIAEQ9AkgBSgCkAEhAiABIAEoAogBQb9/cTYCiAEgBSgClAEhAwwBCyAFQZgBaiABEPQJIAUoApwBIQMgBSgCmAEhAgsCQCACQQFxRQ0AIABBEzYCACAAIAM2AgQMPAsgBSADNgKoAyABLQDYAUEBRg0TIAEoAtQBIQYgASgC0AEhCCAFQegCaiABEJckIAVBATYClAQgBUG8t5wBNgKQBCAFQgE3ApwEIAVBjwU2AswCIAVBAToAwAMgBSAFQcgCajYCmAQgBSAFQZADajYCyAIgBSAFQcADajYCkAMgBUHIA2ogBUGQBGoQtBkgBUHcA2ogBUHwAmooAgA2AgAgBSAFKQLoAjcC1AMgCCAGIAVByANqEJcZIQYgAS0A2AFBogFHDTggASABEMApEKcWDDgLIAEoAtABIQkgARCUCyABKALQASEHAkACQCABLQDYASICQcwARg0AQQAhAyACIQYMAQsgARCUCyABLQDYASEGIAEoAswBIQtBASEDCwJAIAZB/wFxRQ0AIAEoAtQBIQYgASgC0AEhCCAFQfAEaiABEJckIAVBATYClAQgBUG8t5wBNgKQBCAFQgE3ApwEIAVBjwU2AuwCIAVBADoAkAMgBSAFQegCajYCmAQgBSAFQcgCajYC6AIgBSAFQZADajYCyAIgBUHIA2ogBUGQBGoQtBkgBUHcA2ogBUH4BGooAgA2AgAgBSAFKQLwBDcC1AMgCCAGIAVByANqEJcZIQYgAS0A2AFBogFGDRQMNwsgARCUCwJAAkAgASgCiAEiBkEQcQ0AIAEgBkEQcjYCiAEgBUGQBGogAyABEPcUIAEgASgCiAFBb3E2AogBDAELIAVBkARqIAMgARD3FAsgBSgClAQhCAJAIAUoApAEIgZBBUcNACAAQRM2AgAgACAINgIEDDwLIAUgBSkCmAQiDzcC8AIgBSAINgLsAiAFIAY2AugCAkACQAJAIAEtANgBQQFGDQAgASgC1AEhCCABKALQASEDIAVBkAVqIAEQlyQgBUEBNgKUBCAFQby3nAE2ApAEIAVCATcCnAQgBUGPBTYCzAIgBUEBOgCoAyAFIAVByAJqNgKYBCAFIAVBkANqNgLIAiAFIAVBqANqNgKQAyAFQcgDaiAFQZAEahC0GSAFQdwDaiAFQZAFakEIaigCADYCACAFIAUpApAFNwLUAyADIAggBUHIA2oQlxkhCCABLQDYAUGiAUYNAQw2CyABEJQLAkACQCABKAKIASIKQYAYcUGAGEYNACABIApBgBhyNgKIASAFQZAEaiABEJ8sIAEgASgCiAEgCkH/Z3JxNgKIAQwBCyAFQZAEaiABEJ8sCyAFQagBaiAFQZAEahCsHyAFKAKsASEKIAUoAqgBQQFxRQ0BIABBEzYCACAAIAo2AgQMNgsgASABEMApEKcWDDQLIA9CIIinIQwgD6chDSAFIAo2AqgDIAEoAswBIQ4CQAJAAkAgBkF+akEAIAZBfWpBAkkbDgMAAgEACyAFIAg2AswDIAUgBjYCyAMgBSANNgKQAyAFIAw2AsgCAkAgAw0AQQ4hASANIQIgDCEDIAghDSAKIQwgCSEKIA4hCSACIQ4MMwsgBUHSgICAeDYCkAQgByALIAVBkARqEJcZIQggAS0A2AFBogFGDRYMMwsgAkHMAEYhA0EQIQEgCCEGDDELIAUgDTYCzAMgBSAINgLIAyAFIAw2AsgCAkAgAw0AQQ8hASAIIQYMMQsgBUHSgICAeDYCkAQgByALIAVBkARqEJcZIQggAS0A2AFBogFHDS8gASABEMApEKcWDC8LIAVBkARqIAEQvgICQAJAIAUoApAEDQAgACAFKAKUBDYCBEETIQEMAQsgACAFKQKQBDcCBCAAQRRqIAVBoARqKAIANgIAQQghASAAQQxqIAVBkARqQQhqKQIANwIACyAAIAE2AgAMOgsgASgC0AEhAyABEJQLQQAhBgJAAkACQCABLQDYASIIQX1qDgQCAQECAAsgCEGjAUYNAQsgAS0A2QENAAJAAkAgASgCiAEiBkHAAHENACABIAZBwAByNgKIASAFQbABaiABEPQJIAUoArABIQggASABKAKIAUG/f3E2AogBIAUoArQBIQYMAQsgBUG4AWogARD0CSAFKAK8ASEGIAUoArgBIQgLIAhBAXFFDQAgAEETNgIAIAAgBjYCBAw6CyAFIAY2AsgDAkAgARCCEiIIRQ0AIABBEzYCACAAIAg2AgQgBUHIA2oQzigMOgsgASgCzAEhCAJAIAEtAIoBQQhxDQAgAS0AkAFBgAFxDQAgBUHLgICAeDYCkAQgASADIAggBUGQBGoQqiELIAAgBjYCDCAAIAg2AgggACADNgIEIABBBDYCAAw5CyABKALQASEDIAEQlAsCQCABLQDYAUUNACABKALUASEGIAEoAtABIQggBUGoA2ogARCXJCAFQQE2ApQEIAVBvLecATYCkAQgBUIBNwKcBCAFQY8FNgL0BCAFQQA6ALgDIAUgBUHwBGo2ApgEIAUgBUHIAmo2AvAEIAUgBUG4A2o2AsgCIAVByANqIAVBkARqELQZIAVB3ANqIAVBsANqKAIANgIAIAUgBSkCqAM3AtQDIAggBiAFQcgDahCXGSEGIAEtANgBQaIBRg0TDCwLIAEQlAsCQAJAIAEoAogBIgZBwABxDQAgASAGQcAAcjYCiAEgBUHAAWogARD0CSAFKALAASEIIAEgASgCiAFBv39xNgKIASAFKALEASEGDAELIAVByAFqIAEQ9AkgBSgCzAEhBiAFKALIASEICwJAIAhBAXFFDQAgAEETNgIAIAAgBjYCBAw5CyAFIAY2ArQDAkAgAS0A2AFBAUYNACABKALUASEGIAEoAtABIQggBUGQA2ogARCXJCAFQQE2ApQEIAVBvLecATYCkAQgBUIBNwKcBCAFQY8FNgL0BCAFQQE6ALgDIAUgBUHwBGo2ApgEIAUgBUHIAmo2AvAEIAUgBUG4A2o2AsgCIAVByANqIAVBkARqELQZIAVB3ANqIAVBmANqKAIANgIAIAUgBSkCkAM3AtQDIAggBiAFQcgDahCXGSEGIAEtANgBQaIBRg0UDCoLIAEQlAsgBUEANgLQAiAFQoCAgIDAADcCyAIgBUEANgLwBAJAIAEtANgBQQJGDQAgASgC1AEhBiABKALQASEIIAVBkAVqIAEQlyQgBUEBNgKUBCAFQby3nAE2ApAEIAVCATcCnAQgBUGPBTYCvAMgBUECOgDHAyAFIAVBuANqNgKYBCAFIAVBwANqNgK4AyAFIAVBxwNqNgLAAyAFQcgDaiAFQZAEahC0GSAFQdwDaiAFQZgFaigCADYCACAFIAUpApAFNwLUAyAIIAYgBUHIA2oQlxkhCCABLQDYAUGiAUcNKQwoCyABEJQLAkACQCABKAKIASIIQYAQcQ0AIAEgCEGAEHI2AogBIAVB8ARqIAVByAJqIAEQngQhCCABIAEoAogBQf9vcTYCiAEMAQsgBUHwBGogBUHIAmogARCeBCEICyAIDSgCQCABLQDYAUEDRg0AIAEoAtQBIQYgASgC0AEhCCAFQegCaiABEJckIAVBATYClAQgBUG8t5wBNgKQBCAFQgE3ApwEIAVBjwU2ArwDIAVBAzoAxwMgBSAFQbgDajYCmAQgBSAFQcADajYCuAMgBSAFQccDajYCwAMgBUHIA2ogBUGQBGoQtBkgBUHcA2ogBUHwAmooAgA2AgAgBSAFKQLoAjcC1AMgCCAGIAVByANqEJcZIQggAS0A2AFBogFGDSgMKQsgARCUCyAAIAM2AhQgACAGNgIQIABBCTYCACAAIAUpAsgCNwIEIABBDGogBUHQAmooAgA2AgAgACABKALMATYCGAw4CyABKALQASEDIAEQlAsCQCABLQDZAQ0AAkACQCABKAKIASIGQcAAcQ0AIAEgBkHAAHI2AogBIAVB0AFqIAEQ9AkgBSgC0AEhCCABIAEoAogBQb9/cTYCiAEgBSgC1AEhBgwBCyAFQdgBaiABEPQJIAUoAtwBIQYgBSgC2AEhCAsCQCAIQQFxRQ0AIABBEzYCACAAIAY2AgQMOQsgBSAGNgKQBAJAIAEQghIiCEUNACAAQRM2AgAgACAINgIEIAVBkARqENApDDkLIAAgAzYCCCAAIAY2AgQgAEEKNgIAIAAgASgCzAE2AgwMOAsgASgC1AEhBiABKALQASEIIAVBroCAgHg2ApAEIAggBiAFQZAEahCXGSEGIAEtANgBQaIBRw0lIAEgARDAKRCnFgwlCyABKALUASEGIAEoAtABIQggBUH1gICAeDYCkAQgASAIIAYgBUGQBGoQqiEgBUGQBGogARCYAwJAAkAgBSgCkARBCUYNACAFQZAEahDSJAwBCyAFQZAEakEEchCtBwsgBUGQBGogARCnDyAFQZAEahCiJCAIIAYQviIhASAAIAY2AgwgACAINgIIIAAgATYCBCAAQRI2AgAMNgsgASgC1AEhBiABKALQASEIIAVB9YCAgHg2ApAEIAEgCCAGIAVBkARqEKohIAVBkARqIAEQpw8gBUGQBGoQoiQgCCAGEL4iIQEgACAGNgIMIAAgCDYCCCAAIAE2AgQgAEESNgIADDULIAEoAtABIQMgARCUCyAFQZAEaiABQQAQhAggBSgClAQhBgJAIAUoApAEIghBgICAgHhHDQAgAEETNgIAIAAgBjYCBAw1CyAFQegCakEQaiAFQZAEakEQaikCADcCACAFIAUpApgENwLwAiAFIAY2AuwCIAUgCDYC6AIgASgC0AEhAiAFQZAEaiABEJgDIAUoApQEIQYCQAJAAkAgBSgCkAQiCEEJRw0AIABBEzYCACAAIAY2AgQMAQsCQEHAAEUNACAFQcgDakEIaiAFQZAEakEIakHAAPwKAAALIAUgBjYCzAMgBSAINgLIAyAFQZAEaiABEKcPIAUoApQEIQYgBSgCkAQiCUGBgICAeEcNASAAQRM2AgAgACAGNgIEIAVByANqENIkCyAFQegCahD7JQw1CyAFQZAFakEIaiAFQZAEakEQaikCADcDACAFIAUpApgENwOQBSAJQYCAgIB4Rw0gIAhBCEcNICAFQfWAgIB4NgKQBCABIAIgAiAFQZAEahCqIQwgCwJAIAEtAJEBQSBxRQ0AIAEoAtQBIQYgASgC0AEhCCAFQauBgIB4NgKQBCABIAggBiAFQZAEahCqIQsgASgC1AEhBiABKALQASEIIAVByoCAgHg2ApAEIAEgCCAGIAVBkARqELQOIAEoAtABIQMgARCUCwJAIAEtANgBRQ0AIAEoAtQBIQYgASgC0AEhCCAFQZAFaiABEJckIAVBATYClAQgBUG8t5wBNgKQBCAFQgE3ApwEIAVBjwU2AvQEIAVBADoAkAMgBSAFQfAEajYCmAQgBSAFQcgCajYC8AQgBSAFQZADajYCyAIgBUHIA2ogBUGQBGoQtBkgBUHcA2ogBUGYBWooAgA2AgAgBSAFKQKQBTcC1AMgCCAGIAVByANqEJcZIQYgAS0A2AFBogFGDRAMHwsgARCUCwJAAkAgASgCiAEiBkHAAHENACABIAZBwAByNgKIASAFQegBaiABEPQJIAUoAugBIQggASABKAKIAUG/f3E2AogBIAUoAuwBIQYMAQsgBUHwAWogARD0CSAFKAL0ASEGIAUoAvABIQgLAkAgCEEBcUUNACAAQRM2AgAgACAGNgIEDDQLIAUgBjYCkAMCQAJAAkAgAS0A2AFBAUYNACABKALUASEGIAEoAtABIQggBUHoAmogARCXJCAFQQE2ApQEIAVBvLecATYCkAQgBUIBNwKcBCAFQY8FNgL0BCAFQQE6AKgDIAUgBUHwBGo2ApgEIAUgBUHIAmo2AvAEIAUgBUGoA2o2AsgCIAVByANqIAVBkARqELQZIAVB3ANqIAVB8AJqKAIANgIAIAUgBSkC6AI3AtQDIAggBiAFQcgDahCXGSEIIAEtANgBQaIBRw0BIAEgARDAKRCnFgwBCyABEJQLAkACQCABKAKIASIIQYCAIHENACABIAhBgIAgcjYCiAEgBUGQBGogARCfLCABIAEoAogBQf//X3E2AogBDAELIAVBkARqIAEQnywLIAVB4AFqIAVBkARqEKwfIAUoAuQBIQggBSgC4AFBAXFFDQELIABBEzYCACAAIAg2AgQgBUGQA2oQ0CkMNAsgACADNgIMIAAgCDYCCCAAIAY2AgQgAEEDNgIAIAAgASgCzAE2AhAMMwsgASgC0AEhAyABEJQLAkAgAS0A2AFFDQAgASgC1AEhBiABKALQASEIIAVBkAVqIAEQlyQgBUEBNgKUBCAFQby3nAE2ApAEIAVCATcCnAQgBUGPBTYC9AQgBUEAOgCQAyAFIAVB8ARqNgKYBCAFIAVByAJqNgLwBCAFIAVBkANqNgLIAiAFQcgDaiAFQZAEahC0GSAFQdwDaiAFQZgFaigCADYCACAFIAUpApAFNwLUAyAIIAYgBUHIA2oQlxkhBiABLQDYAUGiAUYNEAwdCyABEJQLAkACQCABKAKIASIGQcAAcQ0AIAEgBkHAAHI2AogBIAVBgAJqIAEQ9AkgBSgCgAIhCCABIAEoAogBQb9/cTYCiAEgBSgChAIhBgwBCyAFQYgCaiABEPQJIAUoAowCIQYgBSgCiAIhCAsCQCAIQQFxRQ0AIABBEzYCACAAIAY2AgQMMwsgBSAGNgKQAwJAAkACQCABLQDYAUEBRg0AIAEoAtQBIQYgASgC0AEhCCAFQegCaiABEJckIAVBATYClAQgBUG8t5wBNgKQBCAFQgE3ApwEIAVBjwU2AvQEIAVBAToAqAMgBSAFQfAEajYCmAQgBSAFQcgCajYC8AQgBSAFQagDajYCyAIgBUHIA2ogBUGQBGoQtBkgBUHcA2ogBUHwAmooAgA2AgAgBSAFKQLoAjcC1AMgCCAGIAVByANqEJcZIQggAS0A2AFBogFHDQEgASABEMApEKcWDAELIAEQlAsCQAJAIAEoAogBIghBgBhxQYAYRg0AIAEgCEGAGHI2AogBIAVBkARqIAEQnywgASABKAKIASAIQf9ncnE2AogBDAELIAVBkARqIAEQnywLIAVB+AFqIAVBkARqEKwfIAUoAvwBIQggBSgC+AFBAXFFDQELIABBEzYCACAAIAg2AgQgBUGQA2oQ0CkMMwsgACADNgIMIAAgCDYCCCAAIAY2AgQgAEEMNgIAIAAgASgCzAE2AhAMMgsCQCADRQ0AIAZB/wFxQdEARg0BCwJAAkAgA0UNACAGQf8BcUHiAEYNAQsCQAJAIANFDQAgBkH/AXFBmwFGDQELAkACQAJAAkACQAJAIAdFDQAgBkH/AXFBggFGDQELAkAgB0UNACAGQf8BcUGXAUYNAgsCQCAHRQ0AIAZB/wFxQf0ARg0DCyAGQf8BcUF+ag4FAxsbGwQbCyABEMoJIgZFDRogBi0AABDVFEUNGiABEMwkDRogASgC0AEhBiABEJQLIAVB+ABqIAEgBhC7BCAFKAJ8IQECQCAFKAJ4QQFxRQ0AIABBEzYCACAAIAE2AgQMOAsgACABNgIMIABBBDYCCCAAQRE2AgAMNwsgARDKCSIGRQ0ZIAYtAAAQ1RRFDRkgARDMJA0ZIAEoAtABIQYgARCUCyAFQYABaiABIAYQywkgBSgChAEhAQJAIAUoAoABQQFxRQ0AIABBEzYCACAAIAE2AgQMNwsgACABNgIMIABBBTYCCCAAQRE2AgAMNgsgARDKCSIGRQ0YIAYtAAAQ1RRFDRggARDMJA0YIAEoAtABIQYgARCUCyAFQYgBaiABIAZBABD7ASAFKAKMASEBAkAgBSgCiAFBAXFFDQAgAEETNgIAIAAgATYCBAw2CyAAIAE2AgwgAEEGNgIIIABBETYCAAw1CwJAAkAgCEGAgICAAXENACABIAhBgICAgAFyNgKIASAFQZAEaiABEJ4sIAEgASgCiAFB/////35xNgKIAQwBCyAFQZAEaiABEJ4sCwJAAkAgBSgCkARBgICAgHhHDQAgACAFKAKUBDYCBEETIQEMAQsgACAFKQKQBDcCBCAAQRRqIAVBoARqKQIANwIAIABBDGogBUGYBGopAgA3AgBBACEBCyAAIAE2AgAMNAsgARCUCyAAIAI2AgQgAEEBNgIAIAAgASgCzAE2AggMMwsgBUHwAGogASACQQAQsgQgBSgCdCEGIAUoAnBBAXENGyAGRQ0VIAAgBjYCDCAAQQM2AgggAEERNgIADDILIAEQygkiBg0TDBQLIAVB4ABqIAFBABDaAiAFKAJkIQEgBSgCYEEBcQ0RIAAgATYCDCAAQQI2AgggAEERNgIADDALAkAgAw0AIAEoAtQBIQYgASgC0AEhCCAFQYGAgIB4NgKQBCABIAggBiAFQZAEahCqIQsgBUHIA2ogASACIAIgBEEAEIsEAkACQCAFKALIA0EIRw0AIAAgBSgCzAM2AgRBEyEBDAELAkBBKEUNACAFQZAEakEEaiAFQcgDakEo/AoAAAsCQEEsRQ0AIABBBGogBUGQBGpBLPwKAAALQREhAQsgACABNgIADDALAkAgAw0AIAEoAtQBIQYgASgC0AEhCCAFQYGAgIB4NgKQBCABIAggBiAFQZAEahCqIQsgBUGQBGpBCGogBEEIaigCADYCACAFIAQpAgA3A5AEIAVByANqIAEgBUGQBGoQxykCQAJAIAUoAsgDQQhHDQAgACAFKALMAzYCBEETIQEMAQsCQEEoRQ0AIAVBkARqQQRqIAVByANqQSj8CgAACwJAQSxFDQAgAEEEaiAFQZAEakEs/AoAAAtBESEBCyAAIAE2AgAMLwsgARCUCwJAIAEQghIiBkUNACAAQRM2AgAgACAGNgIEDC4LIAAgAjYCBCAAQQI2AgAgACABKALMATYCCAwtCyABEJQLAkACQAJAAkACQAJAIAEQnR4NACAFQZAEaiABIAEoAogBIghBgAJxRSAIQYABcUUQ/AMgBSgCkAQhCAJAIAUtAKQEIgNBAkcNACAAQRM2AgAgACAINgIEDDMLIAVB8AJqIgcgBUGQBGpBEGooAgA2AgAgBUGQBWpBAmogBUGQBGpBF2otAAA6AAAgBSAFKQOYBDcD6AIgBSAFLwClBDsBkAUgBSgClAQhCSABEIISIgpFDQEgAEETNgIAIAAgCjYCBCAJrUIghiAIrYQgAxChJgwyCyAFQQI6ANwDIAEoAswBIQggBkH/AXFBzQBGDQRBByEGIAEtAIkBQQRxRQ0BDBELIAVByANqQRBqIAcoAgA2AgAgBUHIA2pBF2ogBUGSBWotAAA6AAAgBSAJNgLMAyAFIAg2AsgDIAUgBSkD6AI3A9ADIAUgAzoA3AMgBSAFLwGQBTsA3QMgASgCzAEhCCAGQf8BcUHNAEYNAiABLQCJAUEEcQ0BCyAFQY6BgIB4NgKQBCABIAIgCCAFQZAEahCqIUEHIQYMDwtBByEGIAVByANqIAEoAuwBIAEoAvABEI8dDQ4gBUGKgYCAeDYCkAQgASACIAggBUGQBGoQqiEMDgsgBUHIA2ogASgC7AEgASgC8AEQjx1FDQsLQQYhBiABLQCJAUEIcQ0MIAVBiIGAgHg2ApAEIAEgAiAIIAVBkARqEKohDAwLIApFDQogAUEBOgCEAiAIQQRxDQogASgC1AEhBiABKALQASEIIAVBk4CAgHg2ApAEIAEgCCAGIAVBkARqEKohDAoLIAEgARDAKRCnFgwoCyABIAEQwCkQpxYMJgsgARCUCyABEJ0eGiAAIAg2AgwgACAGNgIIIAAgAzYCBCAAQQ02AgAgACABKALMATYCEAwoCyABIAEQwCkQpxYMIgsgASABEMApEKcWDBwLIAEgARDAKRCnFgwYCyABIAEQwCkQpxYMFQsgASABEMApEKcWDA4LIAEgARDAKRCnFgwMCyAFQY+BgIB4NgKQBCABIAIgCCAFQZAEahCqIUEGIQYMAQsgARDKCSIGRQ0DIAYtAABBmwFHDQMgASgC0AEhCCABEJQLIAVB2ABqIAEgAkEBELIEIAUoAlwhBgJAIAUoAlhBAXFFDQAgAEETNgIAIAAgBjYCBAwhCwJAIAZFDQAgACAGNgIMIABBAzYCCCAAQRE2AgAMIQsgBUHQAGogAUEBIAgQqAYgBSgCVCEGAkAgBSgCUEEBcUUNACAAQRM2AgAgACAGNgIEDCELAkACQCABKAKIASIIQcAAcQ0AIAEgCEHAAHI2AogBIAVBwABqIAYgARCmHiAFKAJAIQYgASABKAKIAUG/f3E2AogBIAUoAkQhCAwBCyAFQcgAaiAGIAEQph4gBSgCTCEIIAUoAkghBgsCQCAGQQFxRQ0AIABBEzYCACAAIAg2AgQMIQsgARCdHhogACACNgIIIAAgCDYCBCAAQRI2AgAgACABKALMATYCDAwgCyAAIAg2AgwgACACNgIIIAAgBjYCACAAIAUpA8gDNwMQIABBGGogBUHQA2opAwA3AwAgAEEgaiAFQdgDaikDADcDAAwfCyAAQRM2AgAgACABNgIEDB4LIAYtAAAQ1RlFDQAgBUHoAGogAUEAENoCIAUoAmwhASAFKAJoQQFxRQ0BIABBEzYCACAAIAE2AgQMHQsCQCABLQDYAUH4AEcNACABEMoJIgZFDQAgBi0AAEHdAEcNACABEMwkRQ0ECyABKAKIASIGQcAAcQ0BIAEgBkHAAHI2AogBIAVBMGogARD0CSAFKAIwIQggASABKAKIAUG/f3E2AogBIAUoAjQhBgwCCyAAIAE2AgwgAEECNgIIIABBETYCAAwbCyAFQThqIAEQ9AkgBSgCPCEGIAUoAjghCAsgCEEBcUUNASAAQRM2AgAgACAGNgIEDBkLIAVByANqIAEgBBDCCwJAAkAgBSgCyANBCEcNACAAIAUoAswDNgIEQRMhAQwBCwJAQShFDQAgBUGQBGpBBGogBUHIA2pBKPwKAAALAkBBLEUNACAAQQRqIAVBkARqQSz8CgAAC0ERIQELIAAgATYCAAwZCyAGIQgCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAYoAgBBdGoiCUEORw0AIAVBsAJqQRBqIgggBkEYaikDADcDACAFQbACakEIaiIDIAZBEGopAwA3AwAgBSAGKQMINwOwAiABLQDYAUEJRg0BIAVBkARqQRRqIAgpAwA3AgAgBUGQBGpBDGogAykDADcCACAFIAUpA7ACNwKUBEEIQcAAENQpIghFDRUgCEEaNgIAIAggBSkCkAQ3AgQgCEEMaiAFQZgEaikCADcCACAIQRRqIAVBoARqKQIANwIAIAhBHGogBUGoBGooAgA2AgALIAUgCDYCqANBASEDIAgoAgBBGkcNCiAFQShqIAhBCGoQnBUCQCAFKAIoIAUoAixB4e+bAUEJEK4jRQ0AIAEtANkBDQULIAEtAJEBQSBxRQ0KIAgoAhAhAyAIKQIUIQ8gCCkDCBDGICEQIAUgDzcCnAMgBSADNgKYAyAFIBA3A5ADIAUgCC0AHDoApAMgBUEgaiAFQZADahCcFSAFKAIgIgogBSgCJCIHQeWHnAFBBxCuIw0CIAogB0Hg7psBQQYQriMNASAFQegCaiABIAMgBCAFKQOQA0EAEJwEDAYLIAEQlAsCQAJAIAEoAogBIghBgBBxDQAgASAIQYAQcjYCiAEgACAFQbACaiABEJYRIAEgASgCiAFB/29xNgKIAQwBCyAAIAVBsAJqIAEQlhELQQEhAwwLCwJAIAEtANgBQQJGDQAgBUEINgLoAiAFKQOQAxCfHwwECyAFQagFaiAFQZADakEQaikDADcDACAFQZAFakEQaiAFQZADakEIaikDADcDACAFIAUpA5ADNwOYBSAFQgA3A5AFIAVB8ARqIAEQqQggBSgC8AQiB0GAgICAeEYNASAFQcgDakEIaiAFQfQEaiIKQQhqKQIANwMAIAUgCikCADcDyAMgASgCzAEhC0EIQdgAEMQpIgpFDRIgCiAFKQOQBTcDACAKIAc2AiAgCkEYaiAFQZAFakEYaikDADcDACAKQRBqIAVBkAVqQRBqKQMANwMAIApBCGogBUGQBWpBCGopAwA3AwACQEEhRQ0AIApBJGogBUHIA2pBIfwKAAALIApBADoAUiAKQYACOwFQIAogCzYCTCAKIAM2AkggCkECOgBFIAUgCjYC7AIgBUEHNgLoAgwDCyAFQcgDaiABIAMgBBD/CyAFKALMAyEDAkAgBSgCyAMiCkEJRg0AIAVB8ARqQRhqIgcgBUHIA2pBIGopAwA3AwAgBUHwBGpBEGoiCyAFQcgDakEYaikDADcDACAFQfAEakEIaiIMIAVByANqQRBqKQMANwMAIAUgBSkD0AM3A/AEAkACQCAKQQhGDQAgBUGQBGpBEGogDCkDADcDACAFQZAEakEYaiALKQMANwMAIAVBkARqQSBqIAcpAwA3AwAgBSADNgKUBCAFIAo2ApAEIAUgBSkD8AQ3A5gEIAVB6AJqIAVBkARqEMwODAELIAVBCDYC6AILIAUpA5ADEJ8fDAQLIAUgAzYC7AIgBSkDkAMQnx8MBAsgBSAFKAL0BCIDNgLsAiAFQZAFahDfIyAEEMolDAMLIAgoAhQhAyAIKAIQIQogCCkDCBDGICEPIAVBp4CAgHg2ApAEIAUgDzcDmAQgASAKIAMgBUGQBGoQtA4gARCdHhogACACNgIIIAAgCDYCBCAAQRI2AgAgACABKALMATYCDEEBIQMgCUEORw0iDAcLIAQQyiULIAUoAuwCIQMgBSgC6AIiCkEJRg0AIAVByAJqQRhqIgcgBUHoAmpBIGopAwA3AwAgBUHIAmpBEGoiCyAFQegCakEYaikDADcDACAFQcgCakEIaiIMIAVB6AJqQRBqKQMANwMAIAUgBSkD8AI3A8gCIApBCEYNAiAAIAUpA8gCNwMQIAAgAzYCDCAAIAo2AgggAEERNgIAIABBKGogBykDADcDACAAQSBqIAspAwA3AwAgAEEYaiAMKQMANwMADAELIABBEzYCACAAIAM2AgQLQQAhAwwCC0EAIQMLAkAgAS0AkQFBIHFFDQAgCCgCAEEaRw0AIAVBGGogCEEIahCcFQJAAkACQCAFKAIYIgogBSgCHCIHQanumwFBBhCuIw0AIAogB0HcmpwBQQYQriNFDQELIAEtANgBQYIBRw0CDAELIAogB0Hsh5wBQQgQriNFDQEgAS0A2AFB/wFxQYIBRw0BCyABEJQLIAgoAhQhCiAIKAIQIQggBUGtgYCAeDYCkAQgASAIIAogBUGQBGoQqiEgBUEQaiABIAIQuwQgBSgCFCEBAkACQCAFKAIQQQFxRQ0AQRMhCEEEIQIMAQsgAEEENgIIQREhCEEMIQILIAAgCDYCACAAIAJqIAE2AgAMAQsCQAJAAkACQCABEJ0eDQAgASgC1AEhCiABKALQASEHAkAgAS0A2AEiC0FRakH/AXFBDUkNACALQXNqQf8BcUEKSQ0AIAVBCGogCBDEAyAFQbWAgIB4NgKQBCAFIAUpAwg3ApQEIAcgCiAFQZAEahCXGSEIIAEtANgBQaIBRw0EIAEgARDAKRCnFgwECyAFQfWAgIB4NgKQBCABIAcgCiAFQZAEahCqISAFIAEgCEEAEMoNIAUoAgQhCCAFKAIAQQFxDQEgACACNgIIIAAgCDYCBCAAQRI2AgAgACABKALMATYCDCAJQQ5HDQgMBQsgACACNgIIIAAgCDYCBCAAQRI2AgAgACABKALMATYCDCAJQQ5GDQEMBwsgAEETNgIAIAAgCDYCBCAJQQ5HDQYMAwsgBigCAEEaRg0EDAMLIABBEzYCACAAIAg2AgQLIAVBqANqENApIAlBDkcNAwsgBigCAEEaRg0BCyAGEMYDCyAGEIssCyADRQ0YDBcLIABBEzYCACAAIAY2AgQMFgsgAEETNgIAIAAgBjYCBAwVCyAAQRM2AgAgACAGNgIEDBQLIAEoAswBIQggBUHoBGogBUHoAmpBEGopAgA3AwAgBUHgBGogBUHoAmpBCGopAgA3AwAgBSAFKQLoAjcD2AQCQEHIAEUNACAFQZAEaiAFQcgDakHIAPwKAAALQQhBgAEQ1CkiAUUNAAJAQeAARQ0AIAEgBUGQBGpB4AD8CgAACyABIAY2AmQgASAJNgJgIAEgCDYCfCABIAM2AnggASAFKQOQBTcDaCABQfAAaiAFQZgFaikDADcDACAAIAE2AgQgAEELNgIADBMLAAsgAEETNgIAIAAgBjYCBAwRCyABIAEQwCkQpxYLIABBEzYCACAAIAg2AgQgBUHIAmoQ/SUMAQsgAEETNgIAIAAgBjYCBAsgBUG0A2oQ0CkMDQsgAEETNgIAIAAgBjYCBAwMCyAAQRM2AgAgACAINgIEIAVByAJqENApIAVByANqEK4hQQAhCEEBIQAMAgsgACADNgIcIAAgDjYCGCAAIAk2AhQgACAKNgIQIAAgDDYCDCAAIA02AgggACAGNgIEIAAgATYCAAwKCyAAQRM2AgAgACAINgIEIAVByAJqEM4oIAVBkANqEM4oIAVByANqEK0hQQEhCEEAIQALIAVBqANqELcFDAILIABBEzYCACAAIAg2AgQLQQEhAEEBIQgLIAVB7AJqIQECQAJAAkAgBkF+akEAIAZBfWpBAkkbDgMBAgABCyABEK4hIAVB9AJqENApDAcLIABFDQYgBUHoAmoQrSEgBUHoAmpBCGoQziggBUH0AmoQzigMBgsgCEUNBSABEK4hIAVB9AJqENApDAULIABBEzYCACAAIAY2AgQMBAsgAEETNgIAIAAgBjYCBCAFQagDahDQKQwCCyAAQRM2AgAgACAGNgIEDAELIABBEzYCACAAIAY2AgQLIAVBuANqELcFCyAEEMolCyAFQbAFaiQAC+BSAgx/An4jAEHQAGsiAyQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAIADhMAAQIDBAUGBwgJCgsMDQ4PEBESAAsgA0HAAGogAUEEaiACEOQYIAMtAEBBBEYNFiADKQNAIg9C/wGDQgRRDRYgACAPNwIADC0LIANBwABqIAEoAgQgAhDUECADLQBAQQRGDSsgAykDQCIPQv8Bg0IEUQ0rIAAgDzcCAAwsCyABKAIIIQQgA0HAAGogAiABKAIEIgVBABCIAgJAAkAgAy0AQEEERg0AIAMpA0AiD0L/AYNCBFINAQsgAyAENgJIIAMgBTYCRCADQQE2AkAgA0EoaiACIANBwABqQb2NnAFBCBCqDQJAIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDQELIANBADYCQCADQShqIAIgA0HAAGoQqw0gAy0AKEEERg0rIAMpAygiD0L/AYNCBFENKwsgD0L/AYNCBFENKiAAIA83AgAMKwsCQAJAIAEoAgwiBEUNACADQShqIAIgBBDbICADLQAoQQRGDQAgAykDKCIPQv8Bg0IEUg0BCyADQQA2AkAgA0EoaiACIANBwABqQd+MnAFBBBCqDQJAIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDQELAkAgAi0ATQ0AIANBKGogAhDYECADLQAoQQRGDQAgAykDKCIPQv8Bg0IEUg0BCyADQShqIAIgA0HAAGpBwamcAUEBEJsNAkAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINAQsgA0EoaiABQQRqIAIQ7yoCQCADLQAoQQRGDQAgAykDKCIPQv8Bg0IEUg0BCyADQShqIAIgA0HAAGpB3PydAUEBEJsNAkAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINAQsgA0EoaiABQQhqIAIQ/CogAy0AKEEERg0qIAMpAygiD0L/AYNCBFENKgsgD0L/AYNCBFENKSAAIA83AgAMKgsgA0EoaiACIAEoAgQiBEEAEIgCAkAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINKAsCQCAERQ0AIANBKGogAiAEENsgIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDSgLIANBADYCQCADQShqIAIgA0HAAGpB9IycAUEGEKoNAkAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINKAsgASgCDCIERQ0mAkACQAJAIAIgBBDIBiIFDQAgBBDoCA0BIAItAE0NAiADQShqIAIQ2BAgAy0AKEEERg0CIAMpAygiD0L/AYNCBFENAgwqCyADQShqIAIgA0HAAGpBwamcAUEBEJsNIAMtAChBBEYNASADKQMoIg9C/wGDQgRRDQEMKQsgA0EoaiACENgQIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDSgLIANBKGogBCACEEcCQCADLQAoQQRGDQAgAykDKCIPQv8Bg0IEUg0oCyAFRQ0mIANBKGogAiADQcAAakHc/J0BQQEQmw0gAy0AKEEERg0mIAMpAygiD0L/AYNCBFENJgwnCyADQcAAaiABQRBqIAIQ+RYCQAJAIAMtAEBBBEYNACADKQNAIg9C/wGDQgRSDQELIANBADYCQCADQShqIAIgA0HAAGpBxKmcAUEBEJsNAkAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINAQsCQCACLQBNDQAgA0HAAGogAhDYECADLQBAQQRGDQAgAykDQCIPQv8Bg0IEUg0BCyADQcAAaiABQShqIAIQ/CogAy0AQEEERg0oIAMpA0AiD0L/AYNCBFENKAsgD0L/AYNCBFENJyAAIA83AgAMKAsCQCABKAIIIgRFDQAgA0EoaiACIAQQ2yAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINJAsgA0EANgJAIANBKGogAiADQcAAakHjjJwBQQUQqg0CQCADLQAoQQRGDQAgAykDKCIPQv8Bg0IEUg0kCyABLQAkQQJGDSIgA0EoaiACENgQAkAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINJAsgA0EoaiABQRBqIAIQ+RYgAy0AKEEERg0iIAMpAygiD0L/AYNCBFENIgwjCwJAIAEoAggiBEUNACADQShqIAIgBBDbICADLQAoQQRGDQAgAykDKCIPQv8Bg0IEUg0hCyADQQA2AkAgA0EoaiACIANBwABqQbWNnAFBCBCqDQJAIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDSELIAEtACRBAkYNHyADQShqIAIQ2BACQCADLQAoQQRGDQAgAykDKCIPQv8Bg0IEUg0hCyADQShqIAFBEGogAhD5FiADLQAoQQRGDR8gAykDKCIPQv8Bg0IEUQ0fDCALIANBKGogAiABKAIMIgRBABCIAgJAIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDR4LAkAgBEUNACADQShqIAIgBBDbICADLQAoQQRGDQAgAykDKCIPQv8Bg0IEUg0eCyADQQA2AkAgA0EoaiACIANBwABqQcyMnAFBAhCqDQJAIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDR4LAkAgAi0ATQ0AIANBKGogAhDYECADLQAoQQRGDQAgAykDKCIPQv8Bg0IEUg0eCyADQShqIAIgA0HAAGpBwamcAUEBEJsNAkAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINHgsgA0EoaiABQQRqIAIQ7yoCQCADLQAoQQRGDQAgAykDKCIPQv8Bg0IEUg0eCyADQShqIAIgA0HAAGpB3PydAUEBEJsNAkAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINHgsCQCACLQBNDQAgA0EoaiACENgQIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDR4LIAEoAggoAgAhBCADQShqIAFBCGogAhD8KgJAIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDR4LIAEoAhQiBUUNJCAEDRwgAi0ATQ0cIANBKGogAhDYECADLQAoQQRGDRwgAykDKCIPQv8Bg0IEUQ0cDB0LIAEoAhghBiADQcAAaiACIAEoAhQiBUEAEIgCAkAgAy0AQEEERg0AIAMpA0AiD0L/AYNCBFINGwsCQCAFRQ0AIANBwABqIAIgBRDbICADLQBAQQRGDQAgAykDQCIPQv8Bg0IEUg0bCyADQQA2AiggA0HAAGogAiADQShqQaiNnAFBBhCqDQJAIAMtAEBBBEYNACADKQNAIg9C/wGDQgRSDRsLIANBwABqIAIgA0EoakHBqZwBQQEQmw0CQCADLQBAQQRGDQAgAykDQCIPQv8Bg0IEUg0bCyADQcAAaiABQRBqIAIQ7yoCQCADLQBAQQRGDQAgAykDQCIPQv8Bg0IEUg0bCyADQcAAaiACIANBKGpB3PydAUEBEJsNAkAgAy0AQEEERg0AIAMpA0AiD0L/AYNCBFINGwsgA0HAAGogAiADQShqQdaLnAFBARCbDQJAIAMtAEBBBEYNACADKQNAIg9C/wGDQgRSDRsLIAEoAgghBCADQcAAaiACIAUgASgCDCIHQcEAIAcQwhwCQCADLQBAQQVGDQAgAykDQCEPDBkLQQUgAygCRBDyJQJAIAcNACACLQBNDRggA0HAAGogAhCxFSADLQBAQQRGDRggAykDQCIPQv8Bg0IEUQ0YDBkLIAItAE1BAUYNFiADQcAAaiACELEVIAMtAEBBBEYNFiADKQNAIg9C/wGDQgRRDRYMGAsgA0EoaiACIAEoAggiBEEAEIgCAkAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINFQsCQCAERQ0AIANBKGogAiAEENsgIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDRULIANBADYCQCADQShqIAIgA0HAAGpB6oycAUEFEKoNAkAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINFQsCQAJAAkAgAiABQQRqIgQoAgAiBhDIBiIFDQAgBhDoCA0BIAItAE0NAiADQShqIAIQ2BAgAy0AKEEERg0CIAMpAygiD0L/AYNCBFENAgwXCyADQShqIAIgA0HAAGpBwamcAUEBEJsNIAMtAChBBEYNASADKQMoIg9C/wGDQgRRDQEMFgsgA0EoaiACENgQIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDRULIANBKGogBCACEO8qAkAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINFQsgBUUNEyADQShqIAIgA0HAAGpB3PydAUEBEJsNIAMtAChBBEYNEyADKQMoIg9C/wGDQgRRDRMMFAsgA0HAAGogAiABKAIEIgQoAngiBUEAEIgCAkACQCADLQBAQQRGDQAgAykDQCIPQv8Bg0IEUg0BCwJAIAVFDQAgA0HAAGogAiAFENsgIAMtAEBBBEYNACADKQNAIg9C/wGDQgRSDQELIANBADYCKCADQcAAaiACIANBKGpB1YycAUEDEKoNAkAgAy0AQEEERg0AIAMpA0AiD0L/AYNCBFINAQsCQCACLQBNDQAgA0HAAGogAhDYECADLQBAQQRGDQAgAykDQCIPQv8Bg0IEUg0BCyADQcAAaiAEQcgAaiACEOQYAkAgAy0AQEEERg0AIAMpA0AiD0L/AYNCBFINAQsCQCAEKAIAQQhGDQACQCACLQBNDQAgA0HAAGogAhDYECADLQBAQQRGDQAgAykDQCIPQv8Bg0IEUg0CCyADQThqIAIgBCgCQCIFQQAQiAICQAJAIAMtADhBBEYNACADKQM4Ig9C/wGDQgRSDQELAkAgBUUNACADQThqIAIgBRDbICADLQA4QQRGDQAgAykDOCIPQv8Bg0IEUg0BCyADQQA2AkAgA0E4aiACIANBwABqQa6NnAFBBRCqDQJAIAMtADhBBEYNACADKQM4Ig9C/wGDQgRSDQELAkAgAi0ATQ0AIANBOGogAhDYECADLQA4QQRGDQAgAykDOCIPQv8Bg0IEUg0BCwJAIAQoAgBBB0YNACADQThqIAIgA0HAAGpBwamcAUEBEJsNAkAgAy0AOEEERg0AIAMpAzgiD0L/AYNCBFINAgsgA0E4aiAEIAIQwAYCQCADLQA4QQRGDQAgAykDOCIPQv8Bg0IEUg0CCyADQThqIAIgA0HAAGpB3PydAUEBEJsNIAMtADhBBEYNACADKQM4Ig9C/wGDQgRSDQELAkAgAi0ATQ0AIANBOGogAhDYECADLQA4QQRGDQAgAykDOCIPQv8Bg0IEUg0BCyADQThqIARBKGogAhDkGCADLQA4QQRGDQEgAykDOCIPQv8Bg0IEUQ0BCyAPQv8Bg0IEUg0BCyAEKAJgQYCAgIB4Rg0iAkAgAi0ATQ0AIANBwABqIAIQ2BAgAy0AQEEERg0AIAMpA0AiD0L/AYNCBFINAQsgA0HAAGogAiADQShqQdiMnAFBBxCqDQJAIAMtAEBBBEYNACADKQNAIg9C/wGDQgRSDQELIANBwABqIARB4ABqIAIQ5BggAy0AQEEERg0iIAMpA0AiD0L/AYNCBFENIgsgD0L/AYNCBFENISAAIA83AgAMIgsgA0EoaiACIAEoAgwiBEEAEIgCAkACQCADLQAoQQRGDQAgAykDKCIPQv8Bg0IEUg0BCwJAIARFDQAgA0EoaiACIAQQ2yAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINAQsgA0EANgJAIANBKGogAiADQcAAakHvjJwBQQUQqg0CQCADLQAoQQRGDQAgAykDKCIPQv8Bg0IEUg0BCyADQShqIAIgA0HAAGpBwamcAUEBEJsNAkAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINAQsgA0EoaiABQQRqIAIQ7yoCQCADLQAoQQRGDQAgAykDKCIPQv8Bg0IEUg0BCyADQShqIAIgA0HAAGpB3PydAUEBEJsNAkAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINAQsgA0EoaiABQQhqIAIQ/CogAy0AKEEERg0hIAMpAygiD0L/AYNCBFENIQsgD0L/AYNCBFENICAAIA83AgAMIQsgASgCECEFIANBKGogAiABKAIMIgRBABCIAgJAAkAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINAQsCQCAERQ0AIANBKGogAiAEENsgIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDQELIANBADYCQCADQShqIAIgA0HAAGpBs42cAUECEKoNAkAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINAQsCQAJAIAEoAggiBCgCACAEQQRqKAIAEIgkDQAgAi0ATQ0BIANBKGogAhDYECADLQAoQQRGDQEgAykDKCIPQv8Bg0IEUQ0BDAILIANBKGogAhDYECADLQAoQQRGDQAgAykDKCIPQv8Bg0IEUg0BCyADQShqIAFBCGogAhD8KgJAIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDQELIANBKGogAiADQcAAakHvjJwBQQUQqg0CQCADLQAoQQRGDQAgAykDKCIPQv8Bg0IEUg0BCwJAIAItAE0NACADQShqIAIQ2BAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINAQsgA0EoaiACIANBwABqQcGpnAFBARCbDQJAIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDQELIANBKGogAUEEaiACEO8qAkAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINAQsgA0EoaiACIANBwABqQdz8nQFBARCbDQJAIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDQELAkAgAi0AUkEBSw0AIANBKGogAiADQcAAahCrDSADLQAoQQRGDQAgAykDKCIPQv8Bg0IEUg0BCyAFRQ0gIANBKGogAiAFENsgIAMtAChBBEYNICADKQMoIg9C/wGDQgRRDSALIA9C/wGDQgRRDR8gACAPNwIADCALIANBKGogAiABKAIQIgRBABCIAgJAIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDQ8LAkAgBEUNACADQShqIAIgBBDbICADLQAoQQRGDQAgAykDKCIPQv8Bg0IEUg0PCyADQQA2AkAgA0EoaiACIANBwABqQdKMnAFBAxCqDQJAIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDQ8LIANBKGogAiADQcAAakHBqZwBQQEQmw0CQCADLQAoQQRGDQAgAykDKCIPQv8Bg0IEUg0PCwJAIAEoAgQiBEECRg0AIAFBCGohBQJAAkAgBEEBcUUNACADQShqIAUgAhDvKiADLQAoQQRGDQIgAykDKCIPQv8Bg0IEUg0BDAILIAMgBTYCOCADQShqIANBOGogAhCEGCADLQAoQQRGDQEgAykDKCIPQv8Bg0IEUQ0BCyAPQv8Bg0IEUg0PCyADQShqIAIgA0HAAGpB1IucAUEBEJsNAkAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINDwsgASgCGEUNDQJAIAItAE0NACADQShqIAIQ2BAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINDwsgA0EoaiABQRhqIAIQ7yogAy0AKEEERw0EDA0LIANBKGogAiABKAIUIgRBABCIAgJAAkAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINAQsCQCAERQ0AIANBKGogAiAEENsgIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDQELIANBADYCQCADQShqIAIgA0HAAGpB0oycAUEDEKoNAkAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINAQsgA0EoaiACIANBwABqQcGpnAFBARCbDQJAIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDQELIANBKGogAUEEaiACELkMAkAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINAQsCQAJAIAEoAgQgASgCCBCYDg0AIAItAE0NASADQShqIAIQ2BAgAy0AKEEERg0BIAMpAygiD0L/AYNCBFENAQwCCyADQShqIAIQ2BAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINAQsgA0EoaiACIANBwABqQdCanAFBAhCqDQJAIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDQELAkACQCABKAIMEOgIDQAgAi0ATQ0BIANBKGogAhDYECADLQAoQQRGDQEgAykDKCIPQv8Bg0IEUQ0BDAILIANBKGogAhDYECADLQAoQQRGDQAgAykDKCIPQv8Bg0IEUg0BCyADQShqIAFBDGogAhDvKgJAIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDQELIANBKGogAiADQcAAakHc/J0BQQEQmw0CQCADLQAoQQRGDQAgAykDKCIPQv8Bg0IEUg0BCyADQShqIAFBEGogAhD8KiADLQAoQQRGDR4gAykDKCIPQv8Bg0IEUQ0eCyAPQv8Bg0IEUQ0dIAAgDzcCAAweCyADQShqIAIgASgCFCIEQQAQiAICQCADLQAoQQRGDQAgAykDKCIPQv8Bg0IEUg0LCwJAIARFDQAgA0EoaiACIAQQ2yAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINCwsgA0EANgJAIANBKGogAiADQcAAakHSjJwBQQMQqg0CQCADLQAoQQRGDQAgAykDKCIPQv8Bg0IEUg0LCyABLQAcRQ0JIANBKGogAhDYEAJAIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDQsLIANBKGogAiADQcAAakG8pJwBQQUQqg0gAy0AKEEERg0JIAMpAygiD0L/AYNCBFENCQwKCyABQQhqIQQgASgCCEF+ag4CAwIECyADQcAAaiACIAEoAghBABCIAgJAIAMtAEBBBEYNACADKQNAIg9C/wGDQgRSDQYLIANBKGogAigCRCACKAJIIAEoAgwQ2iAgA0HAAGogAUEEaiACEO8qAkACQAJAIAMtAEBBBEYNACADKQNAIg9C/wGDQgRSDQELIANBADYCQCADQThqIAIgA0HAAGoQmQ0CQCADLQA4QQRGDQAgAykDOCIPQv8Bg0IEUg0BC0EEIQhCACEQIAMoAihBgICAgHhGDQEgAygCMEEYbCEFIAMoAiwhBEEEIQgDQCAFRQ0CIAItAE0hBgJAAkACQAJAAkAgBEEQai0AAEEBRw0AIAZBAXFFDQEMAwsgBkEBcQ0BIANBwABqIAJBjqOcAUEBEOYPIAMtAEBBBEYNASADKQNAIg9C/wGDQgRRDQEMBQsgA0HAAGogAkGOo5wBQQEQ5g8gAy0AQEEERg0BIAMpA0AiD0L/AYNCBFENAQwECwJAIARBCGooAgAiBkUNACADQcAAaiACIAYQ2yAgAy0AQEEERg0AIAMpA0AiD0L/AYNCBFINBAsgA0HAAGogAkHC3JsBQQIQ5g8CQCADLQBAQQRGDQAgAykDQCIPQv8Bg0IEUg0ECyADQRhqIAQQnBUgA0HAAGogAiADKAIYIAMoAhwQ5g8CQCADLQBAQQRGDQAgAykDQCIPQv8Bg0IEUg0ECwJAIARBDGooAgAiBkUNACADQcAAaiACIAYQ2yAgAy0AQEEERg0AIAMpA0AiD0L/AYNCBFINBAsgA0HAAGogAhCxFSADLQBAQQRGDQEgAykDQCIPQv8Bg0IEUg0DDAELAkAgBEEIaigCACIGRQ0AIANBwABqIAIgBhDbICADLQBAQQRGDQAgAykDQCIPQv8Bg0IEUg0DCyADQcAAaiACQcTcmwFBAhDmDwJAIAMtAEBBBEYNACADKQNAIg9C/wGDQgRSDQMLIANBEGogBBCcFSADQcAAaiACIAMoAhAgAygCFBDmDwJAIAMtAEBBBEYNACADKQNAIg9C/wGDQgRSDQMLAkAgBEEMaigCACIGQQJNDQAgA0HAAGogAiAGQX5qENsgIAMtAEBBBEYNACADKQNAIg9C/wGDQgRSDQMLIANBwABqIAJBxtybAUECEOYPAkAgAy0AQEEERg0AIAMpA0AiD0L/AYNCBFINAwsgAi0ATQ0AIANBwABqIAIQ0BAgAy0AQEEERg0AIAMpA0AiD0L/AYNCBFINAgsgBEEYaiEEIAVBaGohBQwACwsgD0KAfoMhECAPpyEICyADQShqEMwnIAhB/wFxQQRHDQYMGgsgAykDKCIPQv8Bg0IEUQ0IDAkLIANBwABqIAQgAhB+AkAgAy0AQEEERg0AIAMpA0AiD0L/AYNCBFENACAAIA83AgAMGgsgA0EANgJAIANBKGogAiADQcAAahCrDSADLQAoQQRGDRggAykDKCIPQv8Bg0IEUQ0YIAAgDzcCAAwZCyADIAFBDGo2AjggA0HAAGogA0E4aiACEIQYAkACQCADLQBAQQRGDQAgAykDQCIPQv8Bg0IEUg0BCyADQQA2AkAgA0EoaiACIANBwABqEKsNIAMtAChBBEYNGCADKQMoIg9C/wGDQgRRDRgLIAAgDzcCAAwYCyADQcAAaiAEIAIQfiADLQBAQQRGDRYgAykDQCIPQv8Bg0IEUQ0WIAAgDzcCAAwXCyAAQQQ6AAAMFgsgD6ciCEH/AXFBBEYNFCAPQoB+gyEQCyAAIBAgCK1C/wGDhDcCAAwUCwJAIAItAE0NACADQShqIAIQ2BAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINAQsgA0EoaiACIANBwABqQcGpnAFBARCbDQJAIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDQELIANBKGogAUEEaiACELkMAkAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINAQsCQAJAIAEoAgQgASgCCBCYDg0AIAItAE0NASADQShqIAIQ2BAgAy0AKEEERg0BIAMpAygiD0L/AYNCBFENAQwCCyADQShqIAIQ2BAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINAQsgA0EoaiACIANBwABqQeiMnAFBAhCqDQJAIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDQELAkACQCABKAIMEOgIDQAgAi0ATQ0BIANBKGogAhDYECADLQAoQQRGDQEgAykDKCIPQv8Bg0IEUQ0BDAILIANBKGogAhDYECADLQAoQQRGDQAgAykDKCIPQv8Bg0IEUg0BCyADQShqIAFBDGogAhDvKgJAIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDQELIANBKGogAiADQcAAakHc/J0BQQEQmw0CQCADLQAoQQRGDQAgAykDKCIPQv8Bg0IEUg0BCyADQShqIAFBEGogAhD8KiADLQAoQQRGDRIgAykDKCIPQv8Bg0IEUQ0SCyAPQv8Bg0IEUQ0RIAAgDzcCAAwSCyADQShqIAIgA0HAAGpB1IucAUEBEJsNAkAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINAQsCQCABKAIcRQ0AAkAgAi0ATQ0AIANBKGogAhDYECADLQAoQQRGDQAgAykDKCIPQv8Bg0IEUg0CCyADQShqIAFBHGogAhDvKiADLQAoQQRGDQAgAykDKCIPQv8Bg0IEUg0BCyADQShqIAIgA0HAAGpB3PydAUEBEJsNAkAgAy0AKEEERg0AIAMpAygiD0L/AYNCBFINAQsgA0EoaiABQQxqIAIQ/CogAy0AKEEERg0QIAMpAygiD0L/AYNCBFENEAsgD0L/AYNCBFENDyAAIA83AgAMEAsgA0EoaiACIANBwABqEKsNIAMtAChBBEYNDiADKQMoIg9C/wGDQgRRDQ4LIA9C/wGDQgRRDQ0gACAPNwIADA4LIANBADoAJgJAIAItAE0NACACIAIoAixBAWo2AiwLIANBADoAJyAEQRRqIQQgByEIQQAhCUEAIQoDQAJAAkACQAJAAkACQAJAIAhFDQAgBEF8aiILKAIAIQwgA0HAAGogAiAGQcEAIAkgCiADQSdqIANBJmoQrQUCQCADLQBAQQRGDQAgAykDQCIPQv8Bg0IEUg0KCyALKAIAIQogA0HAAGogAiAEQXhqKAIAIglBABCIAgJAIAMtAEBBBEYNACADKQNAIg9C/wGDQgRSDQYLAkAgCUUNACADQcAAaiACIAkQ2yAgAy0AQEEERg0AIAMpA0AiD0L/AYNCBFINBgsgBCgCACINRQ0BIANBADYCQCADQThqIAIgA0HAAGpB+oycAUEEEKoNAkAgAy0AOEEERg0AIAMpAzgiD0L/AYNCBFINBgsgDRDoCA0CIAItAE0NAyADQcAAaiACENgQIAMtAEBBBEYNAyADKQNAIg9C/wGDQgRRDQMMBQsgA0HAAGogAiAFIAZBwQAgCSAKEIoCIAMtAEBBBEYNByADKQNAIg9C/wGDQgRSDQgMBwsgA0EANgJAIANBOGogAiADQcAAakH+jJwBQQcQqg0gAy0AOEEERg0CIAMpAzgiD0L/AYNCBFENAgwDCyADQcAAaiACENgQIAMtAEBBBEYNACADKQNAIg9C/wGDQgRSDQILIANBwABqIAQgAhDvKiADLQBAQQRGDQAgAykDQCIPQv8Bg0IEUg0BCwJAIARBdGooAgAiDUEBRw0AIARBcGooAgAiDkEBQYiNnAEQ/ScgDkEBQZiNnAEQ/ScLIANBADYCQCADQThqIAIgA0HAAGpBxKmcAUEBEJsNAkAgAy0AOEEERg0AIAMpAzgiD0L/AYNCBFINAQsgA0HAAGogAiAJIAogBEFwaigCACANQcGABRCxBCADLQBAQQRGDQEgAykDQCIPQv8Bg0IEUQ0BCyAPQv8Bg0IEUg0DCwJAAkAgAy0AJg0AIANBAToAJgwBCyACKAJERQ0AIANBwABqIAIgCygCAEEAEO4DIAMtAEBBBEYNACADKQNAIg9C/wGDQgRSDQMLAkAgAy0AJ0UNACACIAIoAixBf2o2AiwgA0EAOgAnCyAIQX9qIQggBEEYaiEEQQEhCSAMIQoMAAsLIANBwABqIAIgBiAHRUHBABCbEyADLQBAQQRGDQEgAykDQCIPQv8Bg0IEUQ0BCyAPQv8Bg0IEUg0BCwJAIAZFDQAgA0HAAGogAiAGQX9qENsgIAMtAEBBBEYNACADKQNAIg9C/wGDQgRSDQELIANBwABqIAIgA0EoakHai5wBQQEQmw0gAy0AQEEERg0JIAMpA0AiD0L/AYNCBFENCQsgD0L/AYNCBFENCCAAIA83AgAMCQsgA0EoaiACIANBwABqQc6MnAFBBBCqDQJAIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDQELAkACQCAFKAIAIAVBBGooAgAQiCQNACACLQBNDQEgA0EoaiACENgQIAMtAChBBEYNASADKQMoIg9C/wGDQgRRDQEMAgsgA0EoaiACENgQIAMtAChBBEYNACADKQMoIg9C/wGDQgRSDQELIANBKGogAUEUaiACEPwqIAMtAChBBEYNByADKQMoIg9C/wGDQgRRDQcLIA9C/wGDQgRRDQYgACAPNwIADAcLIANBKGogAiADQcAAahCrDSADLQAoQQRGDQUgAykDKCIPQv8Bg0IEUQ0FCyAPQv8Bg0IEUQ0EIAAgDzcCAAwFCyADQShqIAIgA0HAAGoQqw0gAy0AKEEERg0DIAMpAygiD0L/AYNCBFENAwsgD0L/AYNCBFENAiAAIA83AgAMAwsgA0EoaiACIANBwABqEKsNIAMtAChBBEYNASADKQMoIg9C/wGDQgRRDQELIA9C/wGDQgRRDQAgACAPNwIADAELAkACQCACKAJERQ0AIANBCGogARDNBSADQcAAaiACIAMoAgxBARDuAyADLQBAQQRGDQAgAykDQCIPQv8Bg0IEUg0BCwJAIAItAE0NACACKAIAIQEgAkEANgIAIAItADwNACACKAIEIQQgAigCKCACKAIQIAIoAhQQgwkCQCACKAI4RQ0AIAJBADYCNCACIAIoAjBBAWo2AjALIAJBAToAPCABRQ0AIAIgBBDEBQsgAEEEOgAADAELIAAgDzcCAAsgA0HQAGokAAu6UQISfwF+IwBB0ABrIgMkAAJAAkAgAigCMCIERQ0AIANBwABqIAEQ0BACQCADLQBAQQRGDQAgAykDQCIVQv8Bg0IEUQ0AIAAgFTcCAAwCCyADQQA2AkAgA0EoaiABIANBwABqQcLumwFBBxCaDQJAIAMtAChBBEYNACADKQMoIhVC/wGDQgRRDQAgACAVNwIADAILAkACQCAEEOgIDQAgAS0ATQ0BIANBwABqIAEQ0BAgAy0AQEEERg0BIAMpA0AiFUL/AYNCBFENASAAIBU3AgAMAwsgA0HAAGogARDQECADLQBAQQRGDQAgAykDQCIVQv8Bg0IEUQ0AIAAgFTcCAAwCCyADQcAAaiACQTBqIAEQmyQCQCADLQBAQQRGDQAgAykDQCIVQv8Bg0IEUQ0AIAAgFTcCAAwCCyADQcAAaiACQThqIAEQ4SMgAy0AQEEERg0AIAMpA0AiFUL/AYNCBFENACAAIBU3AgAMAQsCQCACKAIgIgRFDQAgA0HAAGogARDQEAJAIAMtAEBBBEYNACADKQNAIhVC/wGDQgRRDQAgACAVNwIADAILIANBADYCQCADQShqIAEgA0HAAGpBuNybAUEKEJoNAkAgAy0AKEEERg0AIAMpAygiFUL/AYNCBFENACAAIBU3AgAMAgsgA0HAAGogARDQEAJAIAMtAEBBBEYNACADKQNAIhVC/wGDQgRRDQAgACAVNwIADAILIANBwABqIAEgAigCJCACKAIoIAIoAhwgBBDmBSADLQBAQQRGDQAgAykDQCIVQv8Bg0IEUQ0AIAAgFTcCAAwBCwJAAkACQAJAAkACQAJAIAEtAE0NACADQcAAaiABENAQIAMtAEBBBEYNACADKQNAIhVC/wGDQgRSDQELIANBADYCFCADQcAAaiABIANBFGpB1oucAUEBEJgNAkAgAy0AQEEERg0AIAMpA0AiFUL/AYNCBFENACAAIBU3AgAMBwsgAigCECEFIAIoAighBiADQcAAaiABIAIoAiQiByACKAIUIghBwQAgCBDCHAJAIAMtAEBBBUYNACADKQNAIRUMBQtBBSADKAJEEPIlAkAgCEUNAAJAIAEtAE0NACADQcAAaiABELEVIAMtAEBBBEYNACADKQNAIhVC/wGDQgRSDQYLIANBADoAIiABLQBNRQ0CDAMLIAEtAE0NAyADQcAAaiABELEVIAMtAEBBBEYNAyADKQNAIhVC/wGDQgRRDQMMBAsgACAVNwIADAULIAEgASgCLEEBajYCLAsgA0EAOgAjQQAhCUEAIQRBACEKA0AgCiELAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCSAIRg0AIAUgCUHYAGxqIgIgAigCACIKQXxqQQAgCkF7akEISRtBAnRB1NOeAWooAgBqKAIAIQogA0HAAGogASAGQcEAIAQgCyADQSNqIANBImoQrQUCQCADLQBAQQRGDQAgAykDQCIVQv8Bg0IEUg0TCyACKAIAIgRBfGpBACAEQXtqQQhJGw4JAQkIBwYFBAMCAQsgA0HAAGogASAHIAZBwQAgBCALEIoCIAMtAEBBBEYNECADKQNAIhVC/wGDQgRSDREMEAsgAigCPCEMIANBwABqIAEgAigCOCINQQAQiAICQCADLQBAQQRGDQAgAykDQCIVQv8Bg0IEUg0MCwJAIA1FDQAgA0HAAGogASANEN8gIAMtAEBBBEYNACADKQNAIhVC/wGDQgRSDQwLIANBwABqIAEgAi0AURDqCQJAIAMtAEBBBEYNACADKQNAIhVC/wGDQgRSDQwLIANBADYCKCADQcAAaiABIANBKGpB9YecAUELEKANAkAgAy0AQEEERg0AIAMpA0AiFUL/AYNCBFINDAsgA0HAAGogASADQShqQcGpnAFBARChDQJAIAMt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DQIMAQsgA0HAAGogASADQShqQcGpnAFBARChDQJAIAMtAEBBBEYNACADKQNAIhVC/wGDQgRSDQILIANBwABqIAsgARDvKgJAIAMtAEBBBEYNACADKQNAIhVC/wGDQgRSDQILIANBwABqIAEgA0EoakHc/J0BQQEQoQ0gAy0AQEEERg0AIAMpA0AiFUL/AYNCBFINAQsgA0EANgJAIANBOGogASADQcAAahCiDQJAIAMtADhBBEYNACADKQM4IhVC/wGDQgRSDQELIBFFDQggA0HAAGogASAREN8gIAMtAEBBBEYNCCADKQNAIhVC/wGDQgRRDQgLIBVC/wGDQgRSDQYMBwsgA0HAAGogASACKAIYIgRBABCIAgJAAkAgAy0AQEEERg0AIAMpA0AiFUL/AYNCBFINAQsCQCAERQ0AIANBwABqIAEgBBDfICADLQBAQQRGDQAgAykDQCIVQv8Bg0IEUg0BCwJAIAItACZFDQAgA0EANgJAIANBKGogASADQcAAakHcmpwBQQYQoA0CQCADLQAoQQRGDQAgAykDKCIVQv8Bg0IEUg0CCyADQcAAaiABENMQIAMtAEBBBEYNACADKQNAIhVC/wGDQgRSDQELIAJBCGohBAJAAkACQAJAIAItACUOAwIAAQILIANBADYCQCADQShqIAEgA0HAAGpBwLKcAUEDEKANAkAgAy0AKEEERg0AIAMpAygiFUL/AYNCBFINBAsgA0HAAGogARDTEAJAIAMtAEBBBEYNACADKQNAIhVC/wGDQgRSDQQLIANBwABqIAQgARD2CCADLQBAQQRGDQIgAykDQCIVQv8Bg0IEUQ0CDAMLIANBADYCQCADQShqIAEgA0HAAGpBw7KcAUEDEKANAkAgAy0AKEEERg0AIAMpAygiFUL/AYNCBFINAwsgA0HAAGogARDTEAJAIAMtAEBBBEYNACADKQNAIhVC/wGDQgRSDQMLIANBwABqIAQgARD2CCADLQBAQQRGDQEgAykDQCIVQv8Bg0IEUQ0BDAILAkAgAigCICILLQBFRQ0AIANBADYCQCADQShqIAEgA0HAAGpBxrKcAUEFEKANAkAgAy0AKEEERg0AIAMpAygiFUL/AYNCBFINAwsgA0HAAGogARDTECADLQBAQQRGDQAgAykDQCIVQv8Bg0IEUg0CCwJAIAstAERFDQAgA0EANgJAIANBKGogASADQcAAakHCqZwBQQEQoQ0gAy0AKEEERg0AIAMpAygiFUL/AYNCBFINAgsgA0HAAGogBCABEPYIIAMtAEBBBEYNACADKQNAIhVC/wGDQgRSDQELIANBwABqIAEgAigCIBCnBSADLQBAQQRGDQcgAykDQCIVQv8Bg0IEUQ0HCyAVQv8Bg0IEUg0FDAYLIANBKGogASACKAIoIgRBABCIAgJAAkAgAy0AKEEERg0AIAMpAygiFUL/AYNCBFINAQsgA0EoaiABIAJBCGoiEUEQQQggESgCACISQQJJG2ooAgBBABCIAgJAIAMtAChBBEYNACADKQMoIhVC/wGDQgRSDQELAkAgBEUNACADQShqIAEgBBDfICADLQAoQQRGDQAgAykDKCIVQv8Bg0IEUg0BCyACKAIwIhBBFGooAgBBDGwhBCAQQRBqKAIAIQsCQANAIARFDQEgA0EoaiALIAEQrAcCQCADLQAoQQRGDQAgAykDKCIVQv8Bg0IEUg0DCyALQQxqIQsgBEF0aiEEDAALCyADQShqIAEgAi0AORDqCQJAIAMtAChBBEYNACADKQMoIhVC/wGDQgRSDQELAkAgAi0ANEUNACADQQA2AiggA0E4aiABIANBKGpB3JqcAUEGEKANAkAgAy0AOEEERg0AIAMpAzgiFUL/AYNCBFINAgsCQCACLQA4DQAgEC0ARQ0AAkAgEC0ARA0AQQEgEnRBFXENAQsgAS0ATQ0BIANBKGogARDTECADLQAoQQRGDQEgAykDKCIVQv8Bg0IEUQ0BDAILIANBKGogARDTECADLQAoQQRGDQAgAykDKCIVQv8Bg0IEUg0BCwJAIAItADVFDQAgA0EANgIoIANBOGogASADQShqQeyHnAFBCBCgDQJAIAMtADhBBEYNACADKQM4IhVC/wGDQgRSDQILIANBKGogARDTECADLQAoQQRGDQAgAykDKCIVQv8Bg0IEUg0BCwJAIAItADdFDQAgA0EANgIoIANBOGogASADQShqQcSwnAFBCBCgDQJAIAMtADhBBEYNACADKQM4IhVC/wGDQgRSDQILIANBKGogARDTECADLQAoQQRGDQAgAykDKCIVQv8Bg0IEUg0BCwJAAkACQAJAAkACQAJAAkACQCACLQA4DgMCAAECCyADQQA2AiggA0E4aiABIANBKGpBwLKcAUEDEKANAkAgAy0AOEEERg0AIAMpAzgiFUL/AYNCBFINCQtBASASdEEVcQ0CIAEtAE0NAyADQShqIAEQ0xAgAy0AKEEERg0DIAMpAygiFUL/AYNCBFENAwwICyADQQA2AiggA0E4aiABIANBKGpBw7KcAUEDEKANAkAgAy0AOEEERg0AIAMpAzgiFUL/AYNCBFINCAtBASASdEEVcQ0DIAEtAE0NBCADQShqIAEQ0xAgAy0AKEEERg0EIAMpAygiFUL/AYNCBFENBAwHCyAQLQBFRQ0EIANBADYCKCADQThqIAEgA0EoakHGspwBQQUQoA0CQCADLQA4QQRGDQAgAykDOCIVQv8Bg0IEUg0HCyADQShqIAEQ0xAgAy0AKEEERg0EIAMpAygiFUL/AYNCBFENBAwGCyADQShqIAEQ0xAgAy0AKEEERg0AIAMpAygiFUL/AYNCBFINBQsgA0EoaiARIAEQiAUgAy0AKEEERg0DIAMpAygiFUL/AYNCBFENAwwECyADQShqIAEQ0xAgAy0AKEEERg0AIAMpAygiFUL/AYNCBFINAwsgA0EoaiARIAEQiAUgAy0AKEEERg0BIAMpAygiFUL/AYNCBFINAgwBCwJAIBAtAERFDQAgA0EANgIoIANBOGogASADQShqQcKpnAFBARChDSADLQA4QQRGDQAgAykDOCIVQv8Bg0IEUg0CCyADQShqIBEgARCIBSADLQAoQQRGDQAgAykDKCIVQv8Bg0IEUg0BCwJAIAItADZFDQAgA0EANgIoIANBOGogASADQShqQeSHnAFBARChDSADLQA4QQRGDQAgAykDOCIVQv8Bg0IEUg0BCwJAIBAoAjwiBEUNACADQShqIAQgARCDBSADLQAoQQRGDQAgAykDKCIVQv8Bg0IEUg0BCyADQQA2AkAgA0EoaiABIANBwABqQcGpnAFBARChDQJAIAMtAChBBEYNACADKQMoIhVC/wGDQgRSDQELIANBKGogASAQKAIwIBAoAjQgECgCBCAQKAIIEN4GAkAgAy0AKEEERg0AIAMpAygiFUL/AYNCBFINAQsgA0EoaiABIANBwABqQdz8nQFBARChDQJAIAMtAChBBEYNACADKQMoIhVC/wGDQgRSDQELAkAgECgCQEUNACADIBBBwABqNgI4IANBKGogASADQcAAakHEqZwB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IAMpAzAiD0L/AYNCBFINAQsCQCAFRQ0AIANBMGogAiAFEN0gIAMtADBBBEYNACADKQMwIg9C/wGDQgRSDQELIAMoAlggAygCXBD3KQwCCyADKAJYIAMoAlwQ9ykLIA+nIgRB/wFxQQRHDQILIANBCGogARCnDCADQTBqIAIgAygCDEEBEO4DAkAgAy0AMEEERg0AIAMpAzAiD0L/AYNCBFINAQsgAi0ATQ0CIANBMGogAhC0FSADLQAwQQRGDQIgAykDMCIPQv8Bg0IEUQ0CCyAPpyIEQf8BcUEERg0BCyAAIA9CgH6DIAStQv8Bg4Q3AgAMAQsgAyABEM4MIANBMGogAiADKAIEQQEQ7gMCQCADLQAwQQRGDQAgAykDMCIPQv8Bg0IEUQ0AIAAgDzcCAAwBCyAAQQQ6AAALIANB8ABqJAALyE8CFX8DfiMAQcABayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCAA4TAAECAwQFBgcICQoLDA0ODxAREgALIAEoAhghAyABKQMQIRcgAkE4aiABQQRqELAKIABBADYCACAAIAIpAjg3AgQgAiAXNwJEIABBDGogAkHAAGopAgA3AgAgAiADNgJMIABBFGogAkHIAGopAgA3AgAMGAsgACABKQMANwMAIABBKGogAUEoaikDADcDACAAQSBqIAFBIGopAwA3AwAgAEEYaiABQRhqKQMANwMAIABBEGogAUEQaikDADcDACAAQQhqIAFBCGopAwA3AwAMFwsgACABKQMANwMAIABBKGogAUEoaikDADcDACAAQSBqIAFBIGopAwA3AwAgAEEYaiABQRhqKQMANwMAIABBEGogAUEQaikDADcDACAAQQhqIAFBCGopAwA3AwAMFgsgASkCDCEXIAEoAgQhBBC1JSEDIAJBOGogBBBCIANBOGogAkE4akE4aikDADcDACADQTBqIAJBOGpBMGopAwA3AwAgA0EoaiACQThqQShqIgUpAwA3AwAgA0EgaiACQThqQSBqIgYpAwA3AwAgA0EYaiACQThqQRhqIgcpAwA3AwAgA0EQaiACQThqQRBqIggpAwA3AwAgA0EIaiACQThqQQhqIgkpAwA3AwAgAyACKQM4NwMAEL4lIQQgAkE4aiABKAIIEEwgBEEoaiAFKQMANwMAIARBIGogBikDADcDACAEQRhqIAcpAwA3AwAgBEEQaiAIKQMANwMAIARBCGogCSkDADcDACAEIAIpAzg3AwAgACAXNwIMIAAgBDYCCCAAIAM2AgQgAEEDNgIADBULIAEoAgghAyABKAIEIQQCQAJAIAEoAgwiBQ0AQQAhAQwBCxC1JSEBIAJBOGogBRBCIAFBOGogAkE4akE4aikDADcDACABQTBqIAJBOGpBMGopAwA3AwAgAUEoaiACQThqQShqKQMANwMAIAFBIGogAkE4akEgaikDADcDACABQRhqIAJBOGpBGGopAwA3AwAgAUEQaiACQThqQRBqKQMANwMAIAFBCGogAkE4akEIaikDADcDACABIAIpAzg3AwALIAAgATYCDCAAIAM2AgggACAENgIEIABBBDYCAAwUCyABKAIgIQQgASgCHCEFIAEoAhghBiABKAIMIQcgASgCCCEIAkAgASkDECIXQgODQgBSDQAgF6ciAyADKAIAIgNBAWo2AgAgA0F/TA0VCyABLQAkIQkQviUhAyACQThqIAEoAigQTCADQShqIAJBOGpBKGopAwA3AwAgA0EgaiACQThqQSBqKQMANwMAIANBGGogAkE4akEYaikDADcDACADQRBqIAJBOGpBEGopAwA3AwAgA0EIaiACQThqQQhqKQMANwMAIAMgAikDODcDACAAIAM2AiggACAJOgAkIAAgBDYCICAAIAU2AhwgACAGNgIYIAAgFzcDECAAIAc2AgwgACAINgIIIABBBTYCAAwTCyABKAIMIQMgASgCCCEEIAEtACQiBUECRw0MDA0LIAEoAgwhAyABKAIIIQQgAS0AJCIFQQJHDQ0MDgsgASgCECEKIAEoAgwhCyABKAIEIQQQtSUhAyACQThqIAQQQiADQThqIAJBOGpBOGopAwA3AwAgA0EwaiACQThqQTBqKQMANwMAIANBKGogAkE4akEoaiIFKQMANwMAIANBIGogAkE4akEgaiIGKQMANwMAIANBGGogAkE4akEYaiIHKQMANwMAIANBEGogAkE4akEQaiIIKQMANwMAIANBCGogAkE4akEIaiIJKQMANwMAIAMgAikDODcDABC+JSEEIAJBOGogASgCCBBMIARBKGogBSkDADcDACAEQSBqIAYpAwA3AwAgBEEYaiAHKQMANwMAIARBEGogCCkDADcDACAEQQhqIAkpAwA3AwAgBCACKQM4NwMAAkACQCABKAIUIgwNAEEAIQEMAQsQviUhASACQThqIAwQTCABQShqIAUpAwA3AwAgAUEgaiAGKQMANwMAIAFBGGogBykDADcDACABQRBqIAgpAwA3AwAgAUEIaiAJKQMANwMAIAEgAikDODcDAAsgACABNgIUIAAgCjYCECAAIAs2AgwgACAENgIIIAAgAzYCBCAAQQg2AgAMEAsgASgCGCENIAEoAhQhDiABKAIQIQMQtSUhDyACQThqIAMQQiAPQThqIAJBOGpBOGopAwA3AwAgD0EwaiACQThqQTBqKQMANwMAIA9BKGogAkE4akEoaikDADcDACAPQSBqIAJBOGpBIGopAwA3AwAgD0EYaiACQThqQRhqKQMANwMAIA9BEGogAkE4akEQaikDADcDACAPQQhqIAJBOGpBCGopAwA3AwAgDyACKQM4NwMAIAEoAgghBiACQThqIAEoAgwiEEEEQRgQ9w4gAigCPCERIAIoAjhBAUYNDSACKAJAIRICQCARRQ0AIAYgEEEYbGohE0EAIQogESEUA0AgBiATRg0BIAYoAhAhFSAGKAIMIRYCQAJAIAYoAhQiAQ0AQQAhBwwBCxC1JSEHIAJBOGogARBCIAdBOGogAkE4akE4aikDADcDACAHQTBqIAJBOGpBMGopAwA3AwAgB0EoaiACQThqQShqKQMANwMAIAdBIGogAkE4akEgaikDADcDACAHQRhqIAJBOGpBGGopAwA3AwAgB0EQaiACQThqQRBqKQMANwMAIAdBCGogAkE4akEIaikDADcDACAHIAIpAzg3AwALIAYoAgQhAyACQThqIAYoAggiC0EIQTAQ9w4gAigCPCEJIAIoAjhBAUYNECASIApBGGxqIQggAigCQCEMAkAgCUUNACALQTBsIQQgDCEBIAkhBQNAIARFDQEgAkE4aiADEEwgAUEoaiACQThqQShqKQMANwMAIAFBIGogAkE4akEgaikDADcDACABQRhqIAJBOGpBGGopAwA3AwAgAUEQaiACQThqQRBqKQMANwMAIAFBCGogAkE4akEIaikDADcDACABIAIpAzg3AwAgAUEwaiEBIARBUGohBCADQTBqIQMgBUF/aiIFDQALCyAKQQFqIQogBkEYaiEGIAggBzYCFCAIIBU2AhAgCCAWNgIMIAggCzYCCCAIIAw2AgQgCCAJNgIAIBRBf2oiFA0ACwsgACANNgIYIAAgDjYCFCAAIA82AhAgACAQNgIMIAAgEjYCCCAAIBE2AgQgAEEJNgIADA8LIAEpAwghFyABKAIEIQMQtSUhASACQThqIAMQQiABQThqIAJBOGpBOGopAwA3AwAgAUEwaiACQThqQTBqKQMANwMAIAFBKGogAkE4akEoaikDADcDACABQSBqIAJBOGpBIGopAwA3AwAgAUEYaiACQThqQRhqKQMANwMAIAFBEGogAkE4akEQaikDADcDACABQQhqIAJBOGpBCGopAwA3AwAgASACKQM4NwMAIAAgFzcDCCAAIAE2AgQgAEEKNgIADA4LQQAtAODnngEaIAEoAgQhA0GAARB8IgFFDQ4gAygCfCEIIAMoAnghCSADKQJUIRcgAygCXCEEIAJBCGogA0HIAGoQsAogAiAENgIcIAIgFzcCFEEIIQQCQCADKAIAIgdBCEYNAEEHIQQgAygCRCEGIAMoAkAhBQJAIAdBB0YNACACQThqIAMQugIgAkGgAWogAkHEAGopAgA3AwAgAkGoAWogAkHMAGopAgA3AwAgAkGwAWogAkHUAGopAgA3AwAgAkG4AWogAkHcAGooAgA2AgAgAiACKQI8NwOYASACKAI4IQQLIAMoAjwhByADKQI0IRcgAkEgaiADQShqELAKIAJBOGpBCGogAkGYAWpBCGopAwA3AwAgAkE4akEQaiACQZgBakEQaikDADcDACACQThqQRhqIAJBmAFqQRhqKQMANwMAIAJBOGpBIGogAkGYAWpBIGooAgA2AgAgAiAXNwIsIAJB5ABqIAJBIGpBCGopAgA3AgAgAiAHNgI0IAJB7ABqIAJBIGpBEGopAgA3AgAgAiACKQOYATcDOCACIAIpAiA3AlwLQYCAgIB4IQcCQCADKAJgQYCAgIB4Rg0AIAMoAnQhByADKQJsIRcgAkGYAWogA0HgAGoQsAogAkEoaiAXNwMAIAJBMGogBzYCACACIAIpApwBNwMgIAIoApgBIQcLIAEgBDYCACABIAIpAzg3AgQgASAGNgJEIAEgBTYCQCABQQxqIAJBOGpBCGopAwA3AgAgAUEUaiACQThqQRBqKQMANwIAIAFBHGogAkHQAGopAwA3AgAgAUEkaiACQdgAaikDADcCACABQSxqIAJB4ABqKQMANwIAIAFBNGogAkHoAGopAwA3AgAgAUE8aiACQfAAaigCADYCACABIAc2AmAgASAINgJ8IAEgCTYCeCABQdgAaiACQQhqQRBqKQMANwMAIAFB0ABqIAJBCGpBCGopAwA3AwAgASACKQMINwNIIAFB9ABqIAJBIGpBEGooAgA2AgAgAUHsAGogAkEgakEIaikDADcCACABIAIpAyA3AmQgAEELNgIAIAAgATYCBAwNCyABKQIMIRcgASgCBCEEELUlIQMgAkE4aiAEEEIgA0E4aiACQThqQThqKQMANwMAIANBMGogAkE4akEwaikDADcDACADQShqIAJBOGpBKGoiBSkDADcDACADQSBqIAJBOGpBIGoiBikDADcDACADQRhqIAJBOGpBGGoiBykDADcDACADQRBqIAJBOGpBEGoiCCkDADcDACADQQhqIAJBOGpBCGoiCSkDADcDACADIAIpAzg3AwAQviUhBCACQThqIAEoAggQTCAEQShqIAUpAwA3AwAgBEEgaiAGKQMANwMAIARBGGogBykDADcDACAEQRBqIAgpAwA3AwAgBEEIaiAJKQMANwMAIAQgAikDODcDACAAIBc3AgwgACAENgIIIAAgAzYCBCAAQQw2AgAMDAsgASkCDCEXIAEoAgQhBBC1JSEDIAJBOGogBBBCIANBOGogAkE4akE4aikDADcDACADQTBqIAJBOGpBMGopAwA3AwAgA0EoaiACQThqQShqIgUpAwA3AwAgA0EgaiACQThqQSBqIgYpAwA3AwAgA0EYaiACQThqQRhqIgcpAwA3AwAgA0EQaiACQThqQRBqIggpAwA3AwAgA0EIaiACQThqQQhqIgkpAwA3AwAgAyACKQM4NwMAEL4lIQQgAkE4aiABKAIIEEwgBEEoaiAFKQMANwMAIARBIGogBikDADcDACAEQRhqIAcpAwA3AwAgBEEQaiAIKQMANwMAIARBCGogCSkDADcDACAEIAIpAzg3AwAgACAXNwIMIAAgBDYCCCAAIAM2AgQgAEENNgIADAsLQQIhByABKAIUIQggASgCECEJAkAgASgCBCIEQQJGDQBBASEHIAEoAgghAwJAIARBAXFFDQAQtSUhBiACQThqIAMQQiAGQThqIAJBOGpBOGopAwA3AwAgBkEwaiACQThqQTBqKQMANwMAIAZBKGogAkE4akEoaikDADcDACAGQSBqIAJBOGpBIGopAwA3AwAgBkEYaiACQThqQRhqKQMANwMAIAZBEGogAkE4akEQaikDADcDACAGQQhqIAJBOGpBCGopAwA3AwAgBiACKQM4NwMADAELELslIQYgAygCFCEEIAMpAgwhFyADLwEYIQUgAkE4aiADEMgFIAJBOGpBGGoiAyAFOwEAIAYgAikCODcCACACIBc3AkQgBkEIaiACQThqQQhqKQIANwIAIAIgBDYCTCAGQRBqIAJBOGpBEGopAgA3AgAgBkEYaiADKAIANgIAQQAhBwtBACEEQQAhBQJAIAEoAhgiA0UNABC1JSEFIAJBOGogAxBCIAVBOGogAkE4akE4aikDADcDACAFQTBqIAJBOGpBMGopAwA3AwAgBUEoaiACQThqQShqKQMANwMAIAVBIGogAkE4akEgaikDADcDACAFQRhqIAJBOGpBGGopAwA3AwAgBUEQaiACQThqQRBqKQMANwMAIAVBCGogAkE4akEIaikDADcDACAFIAIpAzg3AwALAkAgASgCHCIDRQ0AELUlIQQgAkE4aiADEEIgBEE4aiACQThqQThqKQMANwMAIARBMGogAkE4akEwaikDADcDACAEQShqIAJBOGpBKGopAwA3AwAgBEEgaiACQThqQSBqKQMANwMAIARBGGogAkE4akEYaikDADcDACAEQRBqIAJBOGpBEGopAwA3AwAgBEEIaiACQThqQQhqKQMANwMAIAQgAikDODcDAAsQviUhAyACQThqIAEoAgwQTCADQShqIAJBOGpBKGopAwA3AwAgA0EgaiACQThqQSBqKQMANwMAIANBGGogAkE4akEYaikDADcDACADQRBqIAJBOGpBEGopAwA3AwAgA0EIaiACQThqQQhqKQMANwMAIAMgAikDODcDACAAIAQ2AhwgACAFNgIYIAAgCDYCFCAAIAk2AhAgACADNgIMIAAgBjYCCCAAIAc2AgQgAEEONgIADAoLIAEoAgghAyABKAIYIQYgASgCFCEHAkACQAJAAkAgASgCBCIIDgMAAQIACxC7JSEFIAMoAhQhBCADKQIMIRcgAy8BGCEJIAJBOGogAxDIBSACQThqQRhqIgMgCTsBACAFIAIpAjg3AgAgAiAXNwJEIAVBCGogAkE4akEIaikCADcCACACIAQ2AkwgBUEQaiACQThqQRBqKQIANwIAIAVBGGogAygCADYCAAwCCxC8JSEFIAMtABQhBCADKQIMIRcgAkE4aiADEMgFIAUgAikCODcCACACIBc3AkQgBUEIaiACQThqQQhqKQIANwIAIAIgBDoATCAFQRBqIAJBOGpBEGopAgA3AgAMAQsQtiUhBSACQThqIAMQugIgBUEgaiACQThqQSBqKQMANwMAIAVBGGogAkE4akEYaikDADcDACAFQRBqIAJBOGpBEGopAwA3AwAgBUEIaiACQThqQQhqKQMANwMAIAUgAikDODcDAAsgASgCDCEEELUlIQMgAkE4aiAEEEIgA0E4aiACQThqQThqKQMANwMAIANBMGogAkE4akEwaikDADcDACADQShqIAJBOGpBKGoiCSkDADcDACADQSBqIAJBOGpBIGoiCikDADcDACADQRhqIAJBOGpBGGoiCykDADcDACADQRBqIAJBOGpBEGoiDCkDADcDACADQQhqIAJBOGpBCGoiFCkDADcDACADIAIpAzg3AwAQviUhBCACQThqIAEoAhAQTCAEQShqIAkpAwA3AwAgBEEgaiAKKQMANwMAIARBGGogCykDADcDACAEQRBqIAwpAwA3AwAgBEEIaiAUKQMANwMAIAQgAikDODcDACAAIAY2AhggACAHNgIUIAAgBDYCECAAIAM2AgwgACAFNgIIIAAgCDYCBCAAQQ82AgAMCQsgASgCCCEDIAEtABwhBiABKAIYIQcgASgCFCEIAkACQAJAAkAgASgCBCIJDgMAAQIACxC7JSEFIAMoAhQhBCADKQIMIRcgAy8BGCEKIAJBOGogAxDIBSACQThqQRhqIgMgCjsBACAFIAIpAjg3AgAgAiAXNwJEIAVBCGogAkE4akEIaikCADcCACACIAQ2AkwgBUEQaiACQThqQRBqKQIANwIAIAVBGGogAygCADYCAAwCCxC8JSEFIAMtABQhBCADKQIMIRcgAkE4aiADEMgFIAUgAikCODcCACACIBc3AkQgBUEIaiACQThqQQhqKQIANwIAIAIgBDoATCAFQRBqIAJBOGpBEGopAgA3AgAMAQsQtiUhBSACQThqIAMQugIgBUEgaiACQThqQSBqKQMANwMAIAVBGGogAkE4akEYaikDADcDACAFQRBqIAJBOGpBEGopAwA3AwAgBUEIaiACQThqQQhqKQMANwMAIAUgAikDODcDAAsgASgCDCEEELUlIQMgAkE4aiAEEEIgA0E4aiACQThqQThqKQMANwMAIANBMGogAkE4akEwaikDADcDACADQShqIAJBOGpBKGoiCikDADcDACADQSBqIAJBOGpBIGoiCykDADcDACADQRhqIAJBOGpBGGoiDCkDADcDACADQRBqIAJBOGpBEGoiFCkDADcDACADQQhqIAJBOGpBCGoiFSkDADcDACADIAIpAzg3AwAQviUhBCACQThqIAEoAhAQTCAEQShqIAopAwA3AwAgBEEgaiALKQMANwMAIARBGGogDCkDADcDACAEQRBqIBQpAwA3AwAgBEEIaiAVKQMANwMAIAQgAikDODcDACAAIAY6ABwgACAHNgIYIAAgCDYCFCAAIAQ2AhAgACADNgIMIAAgBTYCCCAAIAk2AgQgAEEQNgIADAgLAkACQAJAAkACQAJAAkACQAJAAkAgASgCCCIEDggAAQIDBAUGBwALIAEoAiAhBSABKAIcIQYgASgCGCEHAkAgASkDECIXQgODQgBSDQAgF6ciAyADKAIAIgNBAWo2AgAgA0F/TA0SCyABLQAsIQggAS0AJCEJIAEoAighARDAJSEDIAEoAiwhFSABKAIoIRYgASgCJCESIAJBIGogARDiCCACQZgBaiABQQxqEHJBACELQQAhCgJAIAEoAjAiDEUNABC1JSEKIAJBOGogDBBCIApBOGogAkE4akE4aikDADcDACAKQTBqIAJBOGpBMGopAwA3AwAgCkEoaiACQThqQShqKQMANwMAIApBIGogAkE4akEgaikDADcDACAKQRhqIAJBOGpBGGopAwA3AwAgCkEQaiACQThqQRBqKQMANwMAIApBCGogAkE4akEIaikDADcDACAKIAIpAzg3AwALIAEtADwhEwJAIAEoAjQiDEUNABC6JSELIAwoAgwhFCAMKAIQIQ8gAkE4aiAMENwGIAtBEGogDzYCACALIAIpAjg3AgAgAiAUNgJEIAtBCGogAkE4akEIaikCADcCAAsCQAJAIAEoAjgiFA0AQQAhDAwBCxC6JSEMIBQoAgwhDyAUKAIQIREgAkE4aiAUEMUMIAxBEGogETYCACAMIAIpAjg3AgAgAiAPNgJEIAxBCGogAkE4akEIaikCADcCAAsgAkE4akEYaiIUIAFBGGoQ0QUgAkE4akEoaiIBIBY2AgAgAkE4akEIaiIWIAJBIGpBCGooAgA2AgAgAkHMAGogAkGYAWpBCGooAgA2AgAgAkE4akEwaiIPIAo2AgAgAkE4akE4aiIKIAw2AgAgAiAVNgJkIAIgEjYCXCACIAIpAiAiGDcDOCACIAIpApgBNwJEIAIgEzoAdCACIAs2AmwgA0E4aiAKKQMANwIAIANBMGogDykDADcCACADQShqIAEpAwA3AgAgA0EgaiACQThqQSBqKQMANwIAIANBGGogFCkDADcCACADQRBqIAJBOGpBEGopAwA3AgAgA0EIaiAWKQMANwIAIAMgGDcCAAwICyABKAIgIQUgASgCHCEGIAEoAhghBwJAIAEpAxAiF0IDg0IAUg0AIBenIgMgAygCACIDQQFqNgIAIANBf0wNEQsgAS0ALCEIIAEtACQhCSABKAIoIQEQwSUhAyACQQhqIAEQ9wggAkEgaiABQQxqEOIIQYCAgIB4IRQgASgCOCEVIAEoAjQhFiABKAIwIRICQCABKAIYQYCAgIB4Rg0AIAEoAiwhCiABKQIkIRggAkE4aiABQRhqELAKIAJBoAFqIBg3AwAgAkGoAWogCjYCACACIAIpAjw3A5gBIAIoAjghFAsgAS0ARSETIAEtAEQhD0EAIQtBACEKAkAgASgCPCIMRQ0AELolIQogDCgCDCERIAwoAhAhECACQThqIAwQ3AYgCkEQaiAQNgIAIAogAikCODcCACACIBE2AkQgCkEIaiACQThqQQhqKQIANwIACwJAIAEoAkAiAUUNABC3JSELIAEpAgQhGCABKAIAIQwQuCUhASACQThqIAwQcwJAQeAARQ0AIAEgAkE4akHgAPwKAAALIAsgGDcCBCALIAE2AgALIAJBOGpBCGoiASACQQhqQQhqKAIANgIAIAJBzABqIAJBIGpBCGooAgA2AgAgAiACKQIIIhg3AzggAiACKQIgNwJEIANBEGogAkE4akEQaikDADcCACADQQhqIAEpAwA3AgAgAyAYNwIAIAMgFDYCGCADIBM6AEUgAyAPOgBEIAMgCzYCQCADIAo2AjwgAyAVNgI4IAMgFjYCNCADIBI2AjAgAyACKQOYATcCHCADQSRqIAJBmAFqQQhqKQMANwIAIANBLGogAkGYAWpBEGooAgA2AgAMBwsgASgCDCEDELslIQEgAygCFCEFIAMpAgwhFyADLwEYIQYgAkE4aiADEMgFIAJBOGpBGGoiAyAGOwEAIAEgAikCODcCACACIBc3AkQgAUEIaiACQThqQQhqKQIANwIAIAIgBTYCTCABQRBqIAJBOGpBEGopAgA3AgAgAUEYaiADKAIANgIADAULIAEoAgwhAxC8JSEBIAMtABQhBSADKQIMIRcgAkE4aiADEMgFIAEgAikCODcCACACIBc3AkQgAUEIaiACQThqQQhqKQIANwIAIAIgBToATCABQRBqIAJBOGpBEGopAgA3AgAMBAsgASgCDCEDEL0lIQEgAygCGCEHIAMoAhQhCCADKAIQIQkgAygCBCEKIAMoAgAhCwJAIAMpAwgiF0IDg0IAUg0AIBenIgUgBSgCACIFQQFqNgIAIAVBf0wNDgsgAy0ARCEMIAMtABwhFAJAAkAgAygCICIGDQBBACEFDAELELolIQUgBigCDCEVIAYoAhAhFiACQThqIAYQ3AYgBUEQaiAWNgIAIAUgAikCODcCACACIBU2AkQgBUEIaiACQThqQQhqKQIANwIACyACQThqQThqIANBOGoQ0QUgAygCMCEGIAMoAjQhFSACQZgBaiADQSRqEJQBIAJB7ABqIBU2AgAgAiAGNgKkASACQeQAaiACQaABaikCADcCACACIAw6AHwgAiAUOgBUIAIgBzYCUCACIAg2AkwgAiAJNgJIIAIgFzcDQCACIAo2AjwgAiALNgI4IAIgBTYCWCACIAIpApgBNwJcQcgARQ0DIAEgAkE4akHIAPwKAAAMAwsgASgCDCEDEL4lIQEgAygCGCEHIAMoAhQhCCADKAIQIQkgAy0AKCEKIAMoAgQhCyADKAIAIQwCQCADKQMIIhdCA4NCAFINACAXpyIFIAUoAgAiBUEBajYCACAFQX9MDQ0LIAMtABwhFAJAAkAgAygCICIGDQBBACEFDAELELolIQUgBigCDCEVIAYoAhAhFiACQThqIAYQ3AYgBUEQaiAWNgIAIAUgAikCODcCACACIBU2AkQgBUEIaiACQThqQQhqKQIANwIACyADKAIkIQYQuCUhAyACQThqIAYQcwJAQeAARQ0AIAMgAkE4akHgAPwKAAALIAEgCjoAKCABIAM2AiQgASAFNgIgIAEgFDoAHCABIAc2AhggASAINgIUIAEgCTYCECABIBc3AwggASALNgIEIAEgDDYCAAwCCyABKAIMIQMQviUhASADKAIQIQUgAygCDCEGIAMoAgghByADLQAtIQggAy0ALCEJIAMoAhwhCiADKAIYIQsCQCADKQMAIhdCA4NCAFINACAXpyIMIAwoAgAiDEEBajYCACAMQX9MDQwLIAMtABQhDCACQThqQSBqIhQgA0EgahCbBSACQThqQQhqIgMgBzYCACACQThqQRBqIgcgBTYCACACQThqQRhqIgUgCzYCACABIBc3AwAgAUEgaiAUKQMANwMAIAIgBjYCRCABQQhqIAMpAwA3AwAgAiAMOgBMIAFBEGogBykDADcDACACIAo2AlQgAUEYaiAFKQMANwMAIAIgCDoAZSACIAk6AGQgAUEoaiACQThqQShqKQMANwMADAELIAEoAgwhAxC/JSEBIAMoAhQhByADKAIQIQggAy0AUiEJIAMtAFEhCiADLQBQIQsgAygCTCEMIAMoAkghFAJAAkAgAygCAEEBRw0AAkAgAykDCCIYQgODQgBSDQAgGKciBSAFKAIAIgVBAWo2AgAgBUF/TA0NC0IBIRkgAykDGCIXUA0BIBdCA4NQRQ0BIBenIgUgBSgCACIFQQFqNgIAIAVBf0oNAQwMC0IAIRkgAzUCGCEXAkAgAykDCCIYQgODQgBSDQAgGKciBSAFKAIAIgVBAWo2AgAgBUF/TA0MCyADMQAcQiCGIBeEIRcLQQMhBQJAIAMtAEVBA0YNACACQThqIANBIGoQqgUgAkGYAWpBHWogAkE4akEdaikAADcAACACQZgBakEYaiACQThqQRhqKQMANwMAIAJBmAFqQRBqIAJBOGpBEGopAwA3AwAgAkGYAWpBCGogAkE4akEIaikDADcDACACIAIpAzg3A5gBIAItAF0hBSACLwFeIQYLIAEgFzcDGCABIAc2AhQgASAINgIQIAEgGDcDCCABIBk3AwAgASACKQOYATcDICABIAk6AFIgASAKOgBRIAEgCzoAUCABIAw2AkwgASAUNgJIIAEgBjsBRiABIAU6AEUgAUEoaiACQaABaikDADcDACABQTBqIAJBqAFqKQMANwMAIAFBOGogAkGwAWopAwA3AwAgAUE9aiACQbUBaikAADcAAAsLIAAgCToAJCAAIAU2AiAgACAGNgIcIAAgBzYCGCAAIBc3AxAgACABNgIMIAAgBDYCCCAAIAIvADg7ACUgACAIOgAsIAAgAzYCKCAAIAIvAJgBOwAtIABBETYCACAAQSdqIAJBOGpBAmotAAA6AAAgAEEvaiACQZgBakECai0AADoAAAwHCyABKQMIIRcgASgCBCEDELUlIQEgAkE4aiADEEIgAUE4aiACQThqQThqKQMANwMAIAFBMGogAkE4akEwaikDADcDACABQShqIAJBOGpBKGopAwA3AwAgAUEgaiACQThqQSBqKQMANwMAIAFBGGogAkE4akEYaikDADcDACABQRBqIAJBOGpBEGopAwA3AwAgAUEIaiACQThqQQhqKQMANwMAIAEgAikDODcDACAAIBc3AwggACABNgIEIABBEjYCAAwGCyABKAIgIQggASgCHCEHIAEoAhghBiABKQMQIhdCA4NCAFINACAXpyIBIAEoAgAiAUEBajYCACABQX9MDQYLIAAgBToAJCAAIAg2AiAgACAHNgIcIAAgBjYCGCAAIBc3AxAgACADNgIMIAAgBDYCCCAAQQY2AgAMBAsgASgCICEIIAEoAhwhByABKAIYIQYgASkDECIXQgODQgBSDQAgF6ciASABKAIAIgFBAWo2AgAgAUF/TA0ECyAAIAU6ACQgACAINgIgIAAgBzYCHCAAIAY2AhggACAXNwMQIAAgAzYCDCAAIAQ2AgggAEEHNgIADAILIBEgAigCQEG06poBEMEmAAsgCSACKAJAQbTqmgEQwSYACyACQcABaiQADwsAC+hRAid/A34jAEHgA2siAyQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACKAIADggAAQgCAwQFBgALIANBgANqIAEQsyAgAEEIaiEEIAMoAoQDIQECQAJAIAMoAoADIgJBKkYNAEE4RQ0BIAQgA0GAA2pBCGpBOPwKAAAMAQsgBCABNgIACyAAIAI2AgAgACABNgIEDBILIAIoAgQiBSACKAIIIgJqIQQCQAJAAkACQCABLQALQQFxDQAgAkUNAiAFQQFqIQIMAQsgAkUNASAFIQIgBEF/aiIEIQULIANBKGogASAFLQAAIgUgBRDvDiADKAIoIgZBK0YNACADKAIwIQUgAygCLCEHIAZBKkYNAQJAQTRFDQAgAEEMaiADQShqQQxqQTT8CgAACyAAIAU2AgggACAHNgIEIAAgBjYCAAwTCyADQYADaiABELMgIABBCGohBCADKAKEAyEBAkACQCADKAKAAyICQSpGDQBBOEUNASAEIANBgANqQQhqQTj8CgAADAELIAQgATYCAAsgACACNgIAIAAgATYCBAwSCyADQcwCaiEIA0ACQAJAIAEtAAtBAXENACACIARGDQggAkEBaiEJDAELIAIgBEYNByACIQkgBEF/aiIEIQILIANBwAJqIAEgAi0AACICIAIQ7w4gAygCwAIiAkErRg0GIAMoAsgCIQogAygCxAIhBgJAIAJBKkYNAAJAQTRFDQAgAEEMaiAIQTT8CgAACyAAIAo2AgggACAGNgIEIAAgAjYCAAwTCyADQYADaiABIAUgBhCrCAJAIAMoAoADIgJBKkYNAAJAQTxFDQAgAEEEaiADQYADakEEckE8/AoAAAsgACACNgIADBMLIAkhAiAKIQUMAAsLIAIoAgRoQQJ0QYS7ngFqKAIAIQIgAS0AC0EBcUUNDyACaEECdEHMu54BaigCACECDA8LIAIoAgQhBCACKAIIIQUCQAJAAkACQCACKAIQIgYNACAERQ0AIAVBAUYNAQsgBEUNASACKAIMIQQgBiAFRg0CIAAgASAEIAItABQgBiAFEPQEDBILIAIoAgwhBAJAAkAgAi0AFA0AIANBgANqIAEQkxgMAQsgA0GAA2ogARCIFwsgAygChAMhAgJAIAMoAoADIgVBKkYNAAJAQThFDQAgAEEIaiADQYADakEIakE4/AoAAAsgACACNgIEIAAgBTYCAAwSCyADQYADaiABIAQQTSADKAKIAyEFIAMoAoQDIQQCQCADKAKAAyIGQSpGDQACQEE0RQ0AIABBDGogA0GAA2pBDGpBNPwKAAALIAAgBTYCCCAAIAQ2AgQgACAGNgIADBILIANBgANqIAEQsyAgAygChAMhBgJAIAMoAoADIglBKkYNAAJAQThFDQAgAEEIaiADQYADakEIakE4/AoAAAsgACAGNgIEIAAgCTYCAAwSCyADQYADaiABIAIgBBCrCAJAIAMoAoADIgRBKkYNAAJAQTxFDQAgAEEEaiADQYADakEEckE8/AoAAAsgACAENgIADBILIANBgANqIAEgAiAGEKsIAkAgAygCgAMi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CgAACyAAIAk2AgggACAFNgIEIAAgCjYCAAwKCyADQYADaiABIAkgBBCrCAJAIAMoAoADIgRBKkYNAAJAQTxFDQAgAEEEaiADQYADakEEckE8/AoAAAsgACAENgIADAoLIAcoAgAiBCAGTQ0FIAEoAuABIAhqIgQgAS8B7AE7AQwgBCAFNgIIIAQgKkIohiAsQiCGhCArhDcCACAFIQQLIAJBAmoiAiAMRg0FDAALCyADKALAAiADKALEAhCmKgwFC0GEyYMBELEfAAsgBiAFQZTJgwEQwBQACyAGIARBpMmDARDAFAALIANBgANqIAEgDSAEEKsIIAMoAoADIgJBKkYNAAsLAkBBPEUNACAAQQRqIANBgANqQQRyQTz8CgAACyAAIAI2AgALIAMoAsACIAMoAsQCEKYqDAMLQbyfhAEQjBkACwJAAkAgASgChAENACABQX82AoQBIAFBiAFqIhIQgwogAUGgAWohEyABQawBaiEUIBEgBEEDdGohFSADQfgBakF/aiEWIANBwAJqQQRqIRcgA0EoakECciEYIANB+AFqQQFqIRkgA0HGAmohGiADQckCaiEbA0AgESAVRg0CIANBiAJqIBEoAgAgESgCBBCDISARQQhqIREDQCADQe8BaiADQYgCahDjAwJAAkACQCADLQDvAUEERg0AIANB+AFqQQhqIANB7wFqQQhqLQAAOgAAIAMgAykA7wEiKzcD+AFBAiECAkACQCArp0H/AXEOBAQDAAEEC0EDIQIMAgtBBCECDAELIAMoAogCIAMoAowCEKYqDAMLIAJBAXYhBSAWIAJBAXRqIQIgGSEEA0AgBUUNASAELwAAIQYgBCACLwAAOwAAIAIgBjsAACAFQX9qIQUgAkF+aiECIARBAmohBAwACwsgA0EIaiADQfgBahD/IyABKQKsASErIAMoAgwhAiADKAIIIQQgAUKAgICAwAA3AqwBIAFBADYCtAEgA0EANgLIAyADICs3A8ADIANBgANqQQEgBCACEIUTAkACQCArp0UNACArQiCIpyECDAELIANBwANqQfzKgwEQyhogAygCxAMhAgsgAiADKQKAAzcCACACQQhqIANBgANqQQhqIhwpAgA3AgBBASECA0AgAyACQX9qIgI2AsgDIANBKGpBCGogAygCxAMgAkEEdGoiAkEIaikCACIrNwMAIAMg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rAEgASgCsAEQoyogFEEIaiADQcADakEIaigCADYCACAUIAMpA8ADNwIADAALCwtBzJ6EARCMGQALAkACQAJAIAEoAiANACABQX82AiAgASgCYA0BIAFBfzYCYCADQYADaiABQSRqIAFB5ABqEIoHIANBwAJqQQhqIgIgA0GMA2ooAgA2AgAgAyADKQKEAzcDwAICQAJAIAMoAoADIgRBKkYNAAJAQTBFDQAgAEEQaiADQYADakEQakEw/AoAAAsgAEEMaiADQcgCaigCADYCACAAIAMpA8ACNwIEIAAgBDYCAAwBCyADQShqQQhqIAIoAgA2AgAgAyADKQPAAjcDKCADQYADaiASIANBKGoQ9QUgAygCgAMiAkEqRg0DAkBBPEUNACAAQQRqIANBgANqQQRyQTz8CgAACyAAIAI2AgALIAEgASgCYEEBajYCYCABIAEoAiBBAWo2AiAgASABKAKEAUEBajYChAEMCQtB3J6EARCMGQALQeyehAEQjBkACyAAIANBKGoQhQkgASABKAJgQQFqNgJgIAEgASgCIEEBajYCICABIAEoAoQBQQFqNgKEAQwGCyAAIA82AgggACANNgIEIABBKjYCAAsgASABKALYAUEBajYC2AEMBAsgASABKAJgQQFqNgJgIAEgASgCIEEBajYCIAwDCyADQYADaiABELMgIAMoAoQDIQoCQCADKAKAAyIEQSpGDQACQEE4RQ0AIABBCGogA0GAA2pBCGpBOPwKAAALIAAgCjYCBCAAIAQ2AgAMAwtBACEFIANBgANqIAIoAhAiBkEAQQRBCBCZDCADKAKEAyEEAkAgAygCgANBAUYNACADQQA2AtwBIAMgAygCiAMiCTYC2AEgAyAENgLUASAGQQF0IQQgCq0hKiACKAIMIQJBACEGAkADQCAERQ0BIAIxAAEhKyACMQAAISwCQCAGIAMoAtQBRw0AIANB1AFqQZyehAEQxxogAygC2AEhCQsgAkECaiECIAkgBWogLEIghiAqhCArQiiGhDcCACADIAZBAWoiBjYC3AEgBEF+aiEEIAVBCGohBQwACwsgA0GAA2ogASADQdQBahDTHyADKAKEAyEBAkAgAygCgAMiAkEqRg0AAkBBOEUNACAAQQhqIANBgANqQQhqQTj8CgAACyAAIAE2AgQgACACNgIADAQLIAAgCjYCCCAAIAE2AgQgAEEqNgIADAMLIAQgAygCiANBjJ6EARDBJgALAkAgASgCIA0AIAFBfzYCICAAIAMoAoQDIgIgAygCiAMiBCABQSRqEL8CIAIgBBDkGSADKAKAAyACEKsqIAEgASgCIEEBajYCIAwCC0HsnYQBEIwZAAsCQCABKAIgRQ0AQayghAEQjBkACyABQX82AiAgAyACNgLIAiADQgM3AsACIANBgANqIAFBJGogA0HAAmoQsQwgASABKAIgQQFqNgIgIABBCGohBCADKAKEAyEBAkACQCADKAKAAyICQSpGDQBBOEUNASAEIANBgANqQQhqQTj8CgAADAELIAQgATYCAAsgACACNgIAIAAgATYCBAsgA0HgA2okAAvxTgIJfwF+IwBBMGsiAyQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCAA4UAAECAwQFBgcICQoLDA0ODxAREhMACyABKAIIIQQgA0EgaiACIAEoAgQiBUEAEIgCAkACQCADLQAgQQRGDQAgAykDICIMQv8Bg0IEUg0BCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtAAwODQABAgMEBQYHCAkKCwwACyADIAQ2AiggAyAFNgIkIANBATYCICADQQhqIAIgA0EgakGM75sBQQMQnQ0gAy0ACEEERg0yIAMpAwgiDEL/AYNCBFINDAwyCyADIAQ2AiggAyAFNgIkIANBATYCICADQQhqIAIgA0EgakGP75sBQQcQnQ0gAy0ACEEERg0xIAMpAwgiDEL/AYNCBFINCwwxCyADIAQ2AiggAyAFNgIkIANBATYCICADQQhqIAIgA0EgakGW75sBQQYQnQ0gAy0ACEEERg0wIAMpAwgiDEL/AYNCBFINCgwwCyADIAQ2AiggAyAFNgIkIANBATYCICADQQhqIAIgA0EgakGc75sBQQYQnQ0gAy0ACEEERg0vIAMpAwgiDEL/AYNCBFINCQwvCyADIAQ2AiggAyAFNgIkIANBATYCICADQQhqIAIgA0EgakGi75sBQQcQnQ0gAy0ACEEERg0uIAMpAwgiDEL/AYNCBFINCAwuCyADIAQ2AiggAyAFNgIkIANBATYCICADQQhq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GSACQbwDaiACQeQGaigCADYCACACIAIpAtwGNwK0AyADIAQgAkGoA2oQlxkhBCABLQDYAUGiAUcNCSABIAEQwCkQpxYMCQsgARCUCyABKALQASEDIAJB+ANqIAEQww4gAigCgAQhBCACKQP4AyIcQgBRDQggAigChAQhCCACQYABaiABQeAAQdCanAFBAhCXECACKAKEASEHAkAgAigCgAFBAXFFDQAgHBCfHyAHIQQMCQtBACEJIAJB0ANqQQA7AQAgAiAHNgLIAyACQQA6AMQDIAJBADYCwAMgAiAINgK8AyACIAQ2ArgDIAIgHDcDsAMgAkEANgLMAyACIAEoAswBNgKsAyACQQA6ANIDIAIgAzYCqAMCQAJAIAEtANgBIgRB9QBHDQAgARCUCyACQfgAaiABEIASIAIoAnwhCQJAIAIoAnhBAXFFDQAgCSEEDAILIAEtANgBIQQLIAIgCTYCiAUCQAJAIARB/wFxQQVGDQAgASgC1AEhBCABKALQASEDIAJB6AZqIAEQlyQgAkEBNgL8AyACQby3nAE2AvgDIAJCATcChAQgAkGPBTYC/AQgAkEFOgCYBSACIAJB+ARqNgKABCACIAJBmAdqNgL4BCACIAJBmAVqNgKYByACQeABaiACQfgDahC0GSACQfQBaiACQfAGaigCADYCACACIAIpAugGNwLsASADIAQgAkHgAWoQlxkhBCABLQDYAUGiAUcNASABIAEQwCkQpxYMAQsgARCUC0EAIQRBAyEHAkACQAJAIAEtANgBIgNBdmoOBQECAgAAAgsgARCUCwJAIAEtANgBQQpGDQAgASgC1AEhBCABKALQASEDIAJBgAdqIAEQlyQgAkEBNgL8AyACQby3nAE2AvgDIAJCATcChAQgAkGPBTYC/AQgAkEKOgCYBSACIAJB+ARqNgKABCACIAJBmAdqNgL4BCACIAJBmAVqNgKYByACQeABaiACQfgDahC0GSACQfQBaiACQYgHaigCADYCACACIAIpAoAHNwLsASADIAQgAkHgAWoQlxkhBCABLQDYAUGiAUcNAyABIAEQwCkQpxYMAwtBAUECIANBDUYbIQQLIAEQlAsgBCEHCyACQfAAaiABQQkQ5hIgAigCdCEDAkAgAigCcEEBcUUNACADIQQMAQsgAiADNgKYBQJAAkAgARCCEiIEDQAgAS0A2AFBA0YNASABKALUASEEIAEoAtABIQMgAkG4BWogARCXJCACQQE2AvwDIAJBvLecATYC+AMgAkIBNwKEBCACQY8FNgL8BCACQQM6AJAFIAIgAkH4BGo2AoAEIAIgAkGYB2o2AvgEIAIgAkGQBWo2ApgHIAJB4AFqIAJB+ANqELQZIAJB9AFqIAJBwAVqKAIANgIAIAIgAikCuAU3AuwBIAMgBCACQeABahCXGSEEIAEtANgBQaIBRw0AIAEgARDAKRCnFgsgAkGYBWoQwSgMAQsgARCUCyABKALMASEBAkBBKkUiBA0AIAJB+AJqIAJBqANqQSr8CgAACyACIAE2AoQEIAIgBjYCgARBECEBAkAgBA0AIAJB+ANqQRBqIAJB+AJqQSr8CgAACyACIAc6AMEEIAIgBToAwAQgAiADNgK8BCACIAk2ArgEIAJBADoAsgQMCwsgAkGIBWoQwSgLIAJBqANqEIUlDAgLIAEgAkH4A2oQ4gULIAEoAtABIQMgAkGoA2ogARCDASACKAKsAyEEAkACQCACKAKoAyIFQYCAgIB4Rw0AIAIgBDYC/ANBFCEBDAELIAIgAzYCiAQgAiACKAKwAzYChAQgAiAENgKABCACIAU2AvwDIAIgASgCzAE2AowEQQUhAQsgAiABNgL4AyACQYgBaiACQfgDahCsGiACKAKMASEEIAIoAogBIQEMGgsgARCUCyACQbABaiABEIASIAIoArQBIQQCQAJAIAIoArABQQFxDQAgAiAENgLoBgJAAkACQCABLQDYAUEBRg0AIAEoAtQBIQQgASgC0AEhAyACQeABaiABEJckIAJBATYC/AMgAkG8t5wBNgL4AyACQgE3AoQEIAJBjwU2ArwFIAJBAToA3AYgAiACQbgFajYCgAQgAiACQYAHajYCuAUgAiACQdwGajYCgAcgAkGoA2ogAkH4A2oQtBkgAkG8A2ogAkHoAWooAgA2AgAgAiACKQLgATcCtAMgAyAEIAJBqANqEJcZIQQgAS0A2AFBogFGDQEMAgsgARCUCyACIAM2AoAEIAIgBDYC/AMgAiABKALMATYChARBDSEBDAMLIAEgARDAKRCnFgsgAkHoBmoQ8gYLIAIgBDYC/ANBFCEBCyACIAE2AvgDIAJBqAFqIAJB+ANqEKwaIAIoAqwBIQQgAigCqAEhAQwZCyACQfgEahDqJQwCCyAHQQdGDQAgAkGoA2oQqBYLIAJBoAVqEOolCyACIAU2AvwDQRQhAQsgAiABNgL4AyACQZABaiACQfgDahCsGiACKAKUASEEIAIoApABIQEMFAsgAiAENgL8A0EUIQELIAIgATYC+AMgAkHoAGogAkH4A2oQrBogAigCbCEEIAIoAmghAQwSCyACIAU6ANwDIAIgBDYCqANBACEEIAEtANkBDQIgAS0A2AFB/wFxQRJHDQIgAkHgAGogARD3EiACKAJkIQQgAigCYEEBcUUNASACQagDahCEJQsgAiAENgL8A0EUIQEMAgsgARCUCwsgASgCzAEhAQJAQTRFIgYNACACQcACaiACQagDakE0/AoAAAsgAkG3AmoiByACQewDaigAADYAACACQbACaiIIIAJB5QNqKQAANwMAIAIgAikA3QM3A6gCIAIgATYChAQgAiADNgKABAJAIAYNACACQYgEaiACQcACakE0/AoAAAsgAkHFBGogCCkDADcAACACQcwEaiAHKAAANgAAIAIgBToAvAQgAiAENgLQBCACIAIpA6gCNwC9BEEEIQELIAIgATYC+AMgAkHYAGogAkH4A2oQrBogAigCXCEEIAIoAlghAQwNCyAIQYCAgIB4Rg0BIAEoAswBIQkLIAIgCTYCnAQgAiADNgKYBCACIAQ2ApQEIAIgBzYCkAQgAiAKNgKMBCACIAY2AogEIAIgAzYCoAQgAiAFNgKEBCACIAg2AoAEIAIgASgCzAE2AqQEQREhAQwBCyACIAU2AvwDQRQhAQsgAiABNgL4AyACQShqIAJB+ANqEKwaIAIoAiwhBCACKAIoIQEMCQsgAigCxAMhBiACKALAAyEHIAIpA7gDIRwgAikDsAMhGwsgASgCzAEhAQsgAiABNgKkBCACIAM2AqAEIAIgBjYCnAQgAiAHNgKYBCACIBw3A5AEIAIgGzcDiAQgAiAFNgKEBCACIAQ2AoAEQREhAQwECyACQeABahDLJSACQbgFahCpKAwCCyACQdwGahDLJQsgAkGsBWoQqSgLIAIgBTYC/ANBFCEBCyACIAE2AvgDIAJBGGogAkH4A2oQrBogAigCHCEEIAIoAhghAQwBC0EBIQELIAAgATYCACAAIAQ2AgQgAkGgB2okAAv1TgIgfwN+IwBBsANrIgIkAAJAIAAoAggiA0UN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EGopAwA3AgAgIUEIaiACQbACakEIaikDADcCACAhIAIpA7ACNwIAQQAtAODnngEaQcAAEHwiEUUNBSARQRo2AgAgESACKQLQAjcCBCARQQxqIAJB0AJqQQhqKQIANwIAIBFBFGogAkHQAmpBEGopAgA3AgAgEUEcaiACQegCaigCADYCAEEDIRILIAIgDjYCzAEgAiAWNgLIASACIBE2ArQBIAIgEjYCsAEgAiAKrUIghiAXrYQ3A8ABIAIgC61CIIYgCK2ENwO4ASAEKAI8IQggBEEANgI8AkAgCEUNACACQdACakE4aiAIQThqKQMANwMAIAJB0AJqQTBqIAhBMGopAwA3AwAgAkHQAmpBKGogCEEoaikDADcDACACQdACakEgaiAIQSBqKQMANwMAIAJB0AJqQRhqIAhBGGopAwA3AwAgAkHQAmpBEGogCEEQaikDADcDACACQdACakEIaiAIQQhqKQMANwMAIAIgCCkDADcD0AIgAkGwAWogAkHQAmoQoAQhCyAIQcAAQQgQ0hUgCyAEKAIoIAQoAiwQ1QoCQCACKAJUIgQgAigCTEcNACACQcwAakHgmZsBENIbCyACKAJQIARBAnRqIAs2AgAgAiAEQQFqNgJUDAILQdCZmwEQ+CkACwJAIAIoAlhBBUYNACACQdgAahCvDiACKAKcASIIIAIoAqABEOMiIAIoApgBIAgQyiogAigCeCIIQYCAgIB4Rg0AIAIoAnwiCyACKAKAARDiIiAIIAsQyCoLIAIgBDYCWAJAQdQARQ0AIAkgAkGwAWpB1AD8CgAACyASIRULIAZBAWohCyADQQBB2AAgAyAURhtqIQggBiAQRg0EDAALCyACQQE2AtQCIAJB8JebATYC0AIgAkIANwLcAiACIAJBsAFqNgLYAiACQdACakH4l5sBELUhAAsACwJAIAAoAhQiA0UNACAAKAIQIQQgA0HYAGwhAwNAAkAgBCgCAEEFTw0AIAIgCzYC2AIgAiAGNgLUAiACIAg2AtACIAQgAkHQAmoQnwQgAkGwAWogDBCXEyACQdACakEQaiACQbABakEQaigCADYCACACQdACakEIaiACQbABakEIaikCADcDACACIAUgD0EEdGo2AvACIAIgBzYC7AIgAiAFNgLoAiACIAU2AuQCIAIgAikCsAE3A9ACIAJB0AJqEKYHIAJB0AJqEKwDIAJB5AJqEPUSDAYLIARB2ABqIQQgA0Gof2oiAw0ACwsgAkGwAWogDBCXEyACQdACakEQaiACQbABakEQaigCADYCACACQdACakEIaiACQbABakEIaikCADcDACACIAUgD0EEdGo2AvACIAIgBzYC7AIgAiAFNgLoAiACIAU2AuQCIAIgAikCsAE3A9ACIAJB0AJqEKYHIAJB0AJqEKwDIAJB5AJqEPUSIAYgCxDCICAIIAYQxioMAwsgAigCWEEFRg0AAkBB2ABFDQAgAkGwAWogAkHYAGpB2AD8CgAACyACQbABaiACQcwAahCfBCAAKAIQIQMCQCAVIAAoAhQiBE8NACADIBVB2ABsaiIGKAIAQQpHDQAgBigCBCACKALoAUcNACAGKAIIIAIoAuwBRw0AAkBB2ABFIgQNACACQdACaiACQbABakHYAPwKAAALIAYQlQUCQCAEDQAgBiACQdACakHYAPwKAAALQQEhCwwCCwJAQdgARQ0AIAJB0AJqIAJBsAFqQdgA/AoAAAsCQCAEIAwoAgBHDQAgDEGwmZsBEOobIAAoAhAhAwsCQEHYAEUNACADIARB2ABsaiACQdACakHYAPwKAAALQQEhCyAAIARBAWo2AhQMAQtBACELCyACQbABaiAMEJcTIAIgBzYCzAEgAiAFNgLIASACIAU2AsQBIAIgBSAPQQR0ajYC0AECQCACKAKwASIEIAIoArQBIgZGDQAgAkHQAmpBBHIhCANAIAQoAgAiA0ENRg0BAkBB1ABFDQAgCCAEQQRqQdQA/AoAAAsgAiADNgLQAiACQdACahCWBSAEQdgAaiIEIAZHDQALCyACQcQBaiEEIAJCiICAgIABNwKwASACKAK4ASEDAkACQCACKALAAQ0AIAMgBEGMqJsBEKsHDAELIAMgAigCvAEgBBC4B0UNAAJAAkAgAigC0AEiBiACKALIASIDRw0AIAMhBgwBCyACQbABaiAGIANrQQR2EPYTIAIoArgBIAIoArwBIAQQuAdFDQEgAigC0AEhAyACKALIASEGCyACQdACaiADIAZrQQR2QQhB2AAQ9w4gAigC1AIhAyACKALQAkEBRg0CIAJBADYCqAIgAiACKALYAjYCpAIgAiADNgKgAiACQaACaiAEQbDhmwEQqwcgAiACKAKgAjYC2AIgAiACKAKkAiID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NgIAIAJBiANqQQhqIgsgBEEIaikCADcDACACQYgDakEQaiIMIARBEGooAgA2AgAgAiAEKQIANwOIAyAIQYGAgIB4Rg0BAkAgCiACKALQAkcNACACQdACaiAKQQFBBEEYELwbIAIoAtQCIQkLIAkgB2oiAUEYaiAINgIAIAFBHGogAikDiAM3AgAgAUEkaiALKQMANwIAIAFBLGogDCgCADYCACACIApBAWoiCjYC2AIgB0EYaiEHDAALCyAFQbiBgAEQkSEgAigC0AIhDSACKALUAiEOAkAgCkECSQ0AAkAgCkEVSQ0AIA4gChDOCwwBCyAOQRhqIQEDQCAHRQ0BIA4gARCXCyAHQWhqIQcgAUEYaiEBDAALCyACQcAAaiAKQQRBIEHkwYABEIYYIAJBADYCmAEgAiACKQNANwKQASAOIApBGGxqIQ8gAkGAAmpBDGohECACQdACakEMaiEJIAAoArQBIREgDiEBAkACQAJAA0ACQAJAIAEgD0YNAEGAgICAeCEEAkAgASgCAEGAgICAeEYNACACQYgDaiABQQRqKAIAIAFBCGooAgAQrxYgAigCiAMhBAsgBEGBgICAeEYNACABQRBqKAIAIQggAUEMaigCACEHIAIpAowDITcgAiABQRRqLQAAOgDkAiACIAg2AuACIAIgBzYC3AIgAiA3NwLUAiACIAQ2AtACIAJBsANqIAYgCSARIBEQdyACKAKwA0UNASACIAIpArQDNwPwAiACQZwBakEMaiAAQYABai8BADsBACACQdjCgAE2ApwBIAIgACkCeDcCoAEgAkGsAWpBDGogAEGoAWoiAS8BADsBACACQQYgAigC2AIgAigC0AJBgICAgHhGIgQbNgKAAyACQeDCgAEgAigC1AIgBBs2AvwCIAIgACkCoAE3ArABIAIgAkH8Amo2AqwBIAJBvAFqQQxqIAEvAQA7AQAgAiACKALcAjYC8AEgAiAAKQKgATcCwAEgAiACQfABajYCvAEgAkHMAWpBDGogAS8BADsBACACIAIoAuACNgKkAiACIAApAqABNwLQASACIAJBpAJqNgLMASACQbACakEMaiAAQYoBai8BADsBACACIAApAYIBNwK0AiACIAJB8AJqNgKwAiACQQE2AqwDIAJBAjYCpAMgAkECNgKcAyACQQM2ApQDIAJBAzYCjAMgAiACQbACajYCqAMgAiACQcwBajYCoAMgAiACQbwBajYCmAMgAiACQawBajYCkAMgAiACQZwBajYCiAMgAkEANgKQAiACQQY2AoQCIAJBhMOAATYCgAIgAkEFNgKMAiACIAJBiANqNgKIAiACQfwAaiACQYACahDCJiELIAItAPACIAIoAvQCEIQZIAJB0AJqEL4mIAIoApgBIQQgAigClAEiDCEBA0AgBEUNBCABKAIAIAFBBGooAgAQwyYgAUEYaigCACEHAkAgAUEcaigCACIIKAIAIgVFDQAgByAFEQMACwJAIAgoAgQiBUUNACAHIAUgCCgCCBDSFQsgBEF/aiEEIAFBIGohAQwACwsgAigCmAEhBCACKAKUASEBIAIgAigCkAE2AsQBIAIgATYCwAEgAiABNgK8ASACIAEgBEEFdGo2AsgBIABBEGohEiAAQcAAaiETIABBxABqIRQgAEEYaiEVIABBFGohFiAAQSRqIRcgAEE4aiEYIABBBGohGSAAKAJwIhogACgCdEEKbGohGyACQYACakEEaiEcIAJB0AJqQQRqIR0gAkGIA2pBBGohHiACQYgDakEUaiEfIAJBzAFqQQxqISAgACgCuAEhISACQcwBakEEaiIiQQhqISMCQANAIAIoAsABIgEgAigCyAFGDQEgAiABQSBqNgLAASABKAIAIgRBgYCAgHhGDQEgASgCHCEkIAEoAhghJSAiIAEpAgQ3AgAgIyABQQxqKQIANwIAICJBEGogAUEUaigCADYCACACIAQ2AswBIAJBiANqIAYgICARIBEQdwJAIAIoAogDQQFHDQAgAigCjAMgAigCkAMQhBkMBgsgAkEwaiACKAKMAyImIAIoApADIicoAgwRBgAgAkGsAWogAigCMCACKAI0ENkFICYgJygCHBEEACEEICYgJygCEBEEACgCACEJIAJBKGogAigCtAEiAUEBQQFB7KycARCGGEEAIQwgAkEANgK4AiACIAIpAyg3ArACIAJBIGpBAUEEQRRBmMaAARCGGCACQQA2AtgCIAIgAigCJCIoNgLUAiACIAIoAiA2AtACIAIgASACKAKwASIIajYCiAIgAiAINgKEAkGBgMQAIQEgCSEHA0AgAkGBgMQANgKAAgJAIAFBgYDEAEcNACAcEP4MIQELAkACQAJAAkACQAJAIAFBgIDEAEYNAAJAAkAg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EP4TIAggBBCSISACQdACahC+JgwFCyACQYACahC+JiACKAK4AiEFIAcNAiACKAK0AiAFEJIhDAMLQfTBgAEQ+CkACyACQYgDakEQaiACQdACakEQaikCADcDACACQYgDakEIaiACQdACakEIaikCADcDACACIAIpAtACNwOIAyACIAQ2AqQDIAIgCDYCoAMgAkGQAWogAkGIA2pBpMKAARD+EwwCCyACLQC0AiAFEIQZCyACQYgDakEQaiACQdACakEQaikCADcDACACQYgDakEIaiACQdACakEIaikCADcDACACIAIpAtACNwOIAyACIAQ2AqQDIAIgCDYCoAMgAkGQAWogAkGIA2pBlMKAARD+EwsgAUEYaiEBDAALCyACKAKQASAMEPkpDAELIAJBzAFqEL4mICUgJBCSISACQbwBahCaEEEBIQsLIA4hAQJAA0AgCkUNASABKAIAIAFBBGooAgAQwyYgCkF/aiEKIAFBGGohAQwACwsgDSAOQQRBGBDBFCALDQEgAigCfCEFCyACKQKAASE3DAELIAJB/ABqEPMpQYCAgIB4IQULIABBwAFqIQQLIAMoAjghByACQQhqIAMoAjwiAUEEQShBsOGbARCHGCACQQA2AogCIAIgAigCDDYChAIgAiACKAIIIgg2AoACAkACQCABIAhNDQAgAkGAAmpBACABQQRBKBDyCAwBCyABDQAgAkHQAGpBCGogAkGAAmpBCGooAgA2AgAgAiACKQKAAjcDUAJAAkAgAygCAEECRw0AQQAhAQwBCyADKAIMIQggAygCCCEBCwJAAkACQCADQSRqKAIARQ0AIAJBiANqIAQoAgBBCGogA0EgaigCACgCABCUAwJAAkAgAigCiANFDQAgAkHQAmpBCGogAkGIA2pBCGopAgA3AwAgAiACKQKIAzcD0AIMAQsgAkEANgLQAgsgA0EkaigCAEUNASACQYgDaiAEKAIAQQhqIANBIGooAgAoAgQQlAMCQCACKAKIA0UNACACQYACakEIaiACQYgDakEIaikCADcDACACIAIpAogDNwOAAgwDCyACQQA2AoACDAILIAJBADYC0AILIAJBADYCgAILAkACQAJAAkAgAigC0AIiBw0AQYCAgIB4IQsMAQsgAkEANgK4AiACQoCAgIAQNwKwAiACQYCAgAE2AowDIAJCoICAgA43ApADIAIgAkGwAmo2AogDIAdB6ABqIAJBiANqEIsmDQEgAikCtAIhOCACKAKwAiELCwJAAkAgAUUNACACQYgDaiABIAgQvhMMAQsgAkGAgICAeDYCiAMLIAMoAhhFDQEgAkHwAGogAygCFCIBQQRqKAIAIAFBCGooAgAQrxYgAkHgAGpBCGoiDCACQYgDakEIaigCADYCACACIAIpAogDNwNgIAIoAowCIQkgAigChAIhCiACKAKAAiEoIAIoAtwCISkgAigC1AIhECAAKAK8ASIEQQhqEJMWIQACQCAEKAIUIgggBCgCDEcNACAEQQxqEL8bCyAEKAIQIAhB3ABsaiIBIAk2AhwgASAoQQBHIgk2AhggASAKNgIUIAEgCTYCECABICk2AgwgASAHQQBHIgc2AgggASAQNgIEIAEgBzYCACABIAIpAnA3AiAgASACKQNQNwIsIAEgAikDYDcCOCABQShqIAJB8ABqQQhqKAIANgIAIAFBNGogAkHQAGpBCGooAgA2AgAgAUHAAGogDCgCADYCACABIDg3AlQgASALNgJQIAEgNzcCSCABIAU2AkQgAEEAOgAAIAQgCEEBajYCFCACQYACahCQISACQdACahCQISACQcADaiQADwtB8KmcAUE3IAJBzAFqQZiAgAFB9KqcARCjEgALQQBBAEGYgYABEMAUAAsgAiAHNgKwAiACQQE2AowDIAJBmMyAATYCiAMgAkIBNwKUAyACQQg2AtQCIAIgAkHQAmo2ApADIAIgAkGwAmo2AtACIAJBiANqQaDMgAEQtSEAC49LAxd/A34BfCMAQcABayICJAACQCAALQAkIgMNAAJAIAEoAgBBdGoiBEEHIARBJkkbQXtqIgRBH0sNAEEBIAR0Qa6igIB4cQ0BIAQNACABLQARRQ0BCyAAQQM6ACQLIAAtACUhBSABQQxqIQYgAUEIaiEHIAFBBGohCAJAA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCACIEQWdqDgsBAgICAgICAgICAAILAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA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AQsgAyAIQQhqNgLAAiADKAK4AiADKAK8AhDxKCADIBI2ArwCIANBATYCuAIgCCgCACIJIAgoAgQiEkHc04ABQQMQriMNBCAJIBJBzYubAUEKEK4jIQkgERCIKCAJRQ0DIBlB/wFxQQJHDQYgA0GABGogA0G4AmoQpSQgAy0AgARFDQUMCAsgCEEIaiEIIBIQiCggERCIKAwACwsgA0EAOgDzBiADQQA7APEGIAMgCDYCwAIgAyAZQQFxOgDwBiATQQFxIQ8MBwsgA0G4AmoQ4CQMAwsgERCIKAJAIBNB/wFxQQJGDQBB3NOAAUEDEJQWIREMBQsgA0GABGogA0G4AmoQpSQgAy0AgAQNAyADLQCBBCETDAILIAMtAIEEIRkMAQsLQc2LmwFBChCUFiERDAELIAMoAoQEIRELIAMgETYB8gYLIANBuAJqEMUmIAggBkcNACADKALwBiETDAILIAMoAfIGIQkMBQsgA0EANgK8BQJAQQEgEhCmJCIIEPspDQAgAyAINgKABCADQbgCaiAIEK4WAkACQCADKAK4AiIKQYCAgIB4Rg0AIAMoAsACIRogAygCvAIhBQwBCyADQYAEaiADQZACakGwzYABEOgGIQVBgICAgHghCgsgAygCgAQQiCggCkGAgICAeEcNAUGBgICAeCEIDAYLIAgQiChBgICAgHghCgsgAygCxAUhCCADKALMBSEJIAMoAsgFIQYMAAsLIANBgICAgHg2AowBIANBAjoApgEgA0ECOgCYASADQoCAgICAgICAAjcBngEMBgsgAygCvAIhCQtBgYCAgHghCAJAIApBgoCAgHhIDQAgCiAFEPUpCyAJIQULCyADQbwFahDFJiAIQYGAgIB4Rw0BC0EBIQgMAgsgAyAYOwCbASADQZ0BaiAYQRB2OgAAIAMgCToApgEgAyAQOgClASADIAo6AKQBIAMgDzoAowEgAyARNgCfASADIAY6AJ4BIAMgFTsAmQEgAyASOgCYASADIBo2ApQBIAMgBTYCkAEgAyAINgKMAQsgA0GABGogARCuFgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAygCgAQiE0GAgICAeEciD0UNACADQagBakEIaiADQYAEakEIaigCADYCACADIAMpAoAENwOoAQwBCwJAIAEQgysiCA0AQdSBgAFBIxAHIQUMAwsgA0G4AmogARAIIhEQrhYgAygCuAJBgICAgHhGDQEgA0GoAWpBCGogA0G4AmpBCGooAgA2AgAgAyADKQK4AjcDqAEgARCIKCAREIgoC0EALQDg554BGkEIEHwiCEUNAiAIQgA3AgBBBBChJSIRQQA2AgAgA0G0AWpBGGpBACkDgP2dASIcNwIAIANBATYCwAEgAyAINgK8ASADQQE2ArgBIANBADoAtAEgA0KBgICA8P+/fzcC4AEgAyARNgLcASADQQE2AtgBIANBADoA1AEgA0EAKQP4/J0BIhs3AsQBQRUgA0G0AWoQwyIhF0GMARCeJSIIQQA2AnQgCEKAgICAwAA3AmwgCEEAOgBoIAhBrN6YATYCZCAIQoCAgIAQNwJcIAhCgICAgMAANwJUIAhBCzYCCCAIQoKAgIAQNwIAIAhBATYCiAEgCCAbNwJ4IAhBgAFqIBw3AgAgAyAINgKMAkEBRQ0CIANBkAJqQQhqIANBqAFqQQhqKAIANgIAIANBpAJqIANBjAFqQQhqKQIANwIAIANBrAJqIANBnAFqKQIANwIAIANBtAJqIANBjAFqQRhqKAIANgIAIAMgAykDqAE3A5ACIAMgAykCjAE3ApwCQQAtAODnngEaQRgQfCIRRQ0CIBFBADYCFCARQoCAgIDAADcCDCARQQA6AAggEUKBgICAEDcCAAJAAkBBAC0AgOOeAQ4EAAAFAQALQQBBAjoAgOOeAUEALQDg554BGkGACBB8IglFDQNBAEEDOgCA454BQQAgCTYC+OKeAQsgA0GABGoQtBYgA0GABGpB7ABqEMcOIANCgYCAgMAANwK0BSADQbwFakHIAGpBAUEAEL4TIANBvAVqQdQAakEBQQAQvhMgA0G8BWpB4ABqQQFBABC+EyADQfAGahC0FiADKQKAByEcIAMpAqAHIRsgAykCqAchHSADKQKwByEeIANBvAVqQewAahDHDiADIB43AvwFIAMgHTcC9AUgAyAbNwLsBSADQqCAgICABDcC5AUgA0KggICAgAQ3AtwFIANCoICAgIAENwLUBSADIBw3AswFIANCoICAgIAENwLEBSADQqCAgICABDcCvAUgA0GABGpByABqEPMpIANBgARqQdQAahDzKSADQYAEakHgAGoQ8ykgAygC7AQgAygC8AQQ9CkCQEG0AUUNACADQYAEaiADQbwFakG0AfwKAAALAkBBvAFFDQAgA0G4AmogA0GABGpBvAH8CgAACyADIAg2AvgDIAMgETYC9AMgA0HwBmoQpCQgESARKAIAIghBAWo2AgAgCEF/TA0CIAMpArgCIRwgAykCwAIhGyADKQLIAiEdIAMpAtACIR4gAykC2AIhHyADKQLgAiEgIAMpAugCISEgAykC8AIhIiADKQL4AiEjIANByARqIAMoAoQDIAMoAogDEK8WIANB1ARqIAMoApADIAMoApQDEK8WIANB4ARqIAMoApwDIAMoAqADEK8WIAMgIzcCwAQgAyAiNwK4BCADICE3ArAEIAMgIDcCqAQgAyAfNwKgBCADIB43ApgEIAMgHTcCkAQgAyAbNwKIBCADIBw3AoAEIANB8AZqQQhqIgggA0G4A2ovAQA7AQAgAyADKQKwAzcD8AYgA0HwCGpBCGoiEiADQcIDai8BADsBACADIAMpAboDNwPwCCADQYgJakEIaiIFIANBzANqLwEAOwEAIAMgAykCxAM3A4gJIANB4AhqQQhqIhAgA0HWA2ovAQA7AQAgAyADKQHOAzcD4AggA0HQCGpBCGoiCiADQeADai8BADsBACADIAMpAtgDNwPQCCADQcAIakEIaiINIANB6gNqLwEAOwEAIAMgAykB4gM3A8AIIAMoAqgDIQ4gA0HYAGogAygCrAMiCUEBQQpB4LScARCFGCADKAJYIQwgAygCXCEGAkAgCUEKbCIYRQ0AIAYgDiAY/AoAAAsCQEHsAEUNACADQbwFaiADQYAEakHsAPwKAAALIANBsAhqQQhqIAgvAQA7AQAgA0GgCGpBCGogEi8BADsBACADQZAIakEIaiAFLwEAOwEAIANBgAhqQQhqIBAvAQA7AQAgA0HwB2pBCGogCi8BADsBACADIAMpA/AGNwOwCCADIAMpA/AINwOgCCADIAMpA4gJNwOQCCADIAMpA+AINwOACCADIAMpA9AINwPwByADQeAHakEIaiANLwEAOwEAIAMgAykDwAg3A+AHIAMoAvgDIhIgEigCACIIQQFqNgIAIAhBf0wNAiADKALwAyEFIAMoAuwDIRACQEHsAEUiCg0AIANBgARqIANBvAVqQewA/AoAAAsgA0HwBmpBCGoiDSADQbAIakEIai8BADsBACADQfAIakEIaiIOIANBoAhqQQhqLwEAOwEAIANBiAlqQQhqIhggA0GQCGpBCGovAQA7AQAgA0HgCGpBCGoiCyADQYAIakEIai8BADsBACADQdAIakEIaiIaIANB8AdqQQhqLwEAOwEAIAMgAykDsAg3A/AGIAMgAykDoAg3A/AIIAMgAykDkAg3A4gJIAMgAykDgAg3A+AIIAMgAykD8Ac3A9AIIANBwAhqQQhqIhUgA0HgB2pBCGovAQA7AQAgAyADKQPgBzcDwAhBxAEQniUhCAJAIAoNACAIIANBgARqQewA/AoAAAsgCCAJNgJ0IAggBjYCcCAIIAw2AmwgCCADKQPwBjcCeCAIQYABaiANLwEAOwEAIAggAykD8Ag3AYIBIAhBigFqIA4vAQA7AQAgCCADKQOICTcCjAEgCEGUAWogGC8BADsBACAIIAMpA+AINwGWASAIQZ4BaiALLwEAOwEAIAggEDYCtAEgCCAFNgK4ASAIIBE2ArwBIAggEjYCwAEgCEGoAWogGi8BADsBACAIIAMpA9AINwKgASAIIAMpA8AINwGqASAIQbIBaiAVLwEAOwEAIANBxwVqIhFBACkDgP2dASIcNwAAIANBACkD+PydASIbNwC/BSADQakEaiADQbwFakEIaiIJKQAANwAAIANBsARqIANBywVqIhIoAAA2AAAgA0EAOgCgBCADIAMpALwFNwChBCARIBw3AAAgAyAbNwC/BSADQQA6ALQEIANBxARqIBIoAAA2AAAgA0G9BGogCSkAADcAACADIAMpALwFNwC1BCARIBw3AAAgAyAbNwC/BSADQQE6AN4EIANBADYA3wQgA0EAOgCEBCADQQA2AoAEIANBgAI7AdwEIANBuICAATYCjAQgAyAINgKIBCADQQA6AMgEIANBADYCnAQgA0KAgICAwAA3ApQEIANBADoAkAQgA0HYBGogEigAADYAACADQdEEaiAJKQAANwAAIAMgAykAvAU3AMkEAkBBKEUNACADQbwFaiADQZACakEo/AoAAAsgAyADQYAEajYC6AUgAyADQYwCajYC5AVBFiADQYAEahDDIiERIANB8AhqIAMoAowCIANBgARqIANBvAVqIANBvAVqQQxqED8CQAJAIAMoAvAIQYCAgIB4Rw0AIANB8AZqEKIlIANBkAlqIgkgA0HwBmpBDGopAgA3AwAgA0GICWpBEGoiEiAD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ARpBwAAQfCIHRQ0XIAdBHDYCACAHIAMpArgBNwIEIAcgBTYCICAHIBKnNgIcIAdBDGogA0G4AWpBCGopAgA3AgAgB0EUaiADQbgBakEQaikCADcCACADIAc2AqwBIANBAjYCqAEgAygCUCEFIAMoAlQhByADKAJYIQogAyADKAJcNgLYASADIAY2AtABIAMgBiAEQQV0ajYC3AEgAyAGNgLUASAERQ0MIAMgBkEgajYC1AEgBi0AGCIEQQJGDQwgA0HYAmpBEGogBkEQaikDADcDACADQdgCakEIaiAGQQhqKQMANwMAIAYpAwAhEiADQdgCakEcaiAGQRxqKAAANgAAIAMgEjcD2AIgAyAGKAAZNgDxAiADIAQ6APACIANBADYCgAIgA0KAgICAEDcC+AEgA0HUoZsBNgKEASADQqCAgIAONwKIASADIANB+AFqNgKAAQJAIANB2AJqIANBgAFqEL8gDQAgAygC+AEhBiADKQL8ASESIANB2AJqEI4TIAZBgICAgHhGDQ0gAyASNwLoASADIAY2AuQBIANB2AJqQQhqIANB0AFqQQhqKQIANwMAIAMgAykC0AE3A9gCIANBADYCgAMgA0IANwP4AiADIAcgCkECdGo2AvQCIAMgBTYC8AIgAyAHNgLsAiADIAc2AugCIANB2AJqQRBqIQ8gAygC3AIiByADKALkAkYNDyADQYABakEZaiIFQQNqIQoDQCADIAdBIGo2AtwCIActABgiBkECRg0QIAUgBygAGTYAACADQYABakEQaiILIAdBEGoiDCkDADcDACADQYABakEIaiINIAdBCGoiDikDADcDACAKIAdBHGooAAA2AAAgAyAGOgCYASADIAcpAwA3A4ABAkAgAygC7AIiBCADKAL0AkcNACADQYABahCOEwwRCyADQfgBakEIaiAOKQMAIhI3AwAgA0H4AWpBEGogDCkDACITNwMAIAMgBEEEajYC7AIgAyAHKQMAIhQ3A/gBIAMgB0EZaiIHKAAANgLwASADIAdBA2ooAAA2APMBIAQoAgAhByALIBM3AwAgDSASNwMAIAUgAygC8AE2AAAgCiADKADzATYAACADIBQ3A4ABIAMgBjoAmAEgA0GQAmogASAHEFgCQAJAAkACQAJAIAMoApACDgIBABQLIANBoAJqIAMrA5gCELEODAELIAMgAykD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DBoLIARBnAFqQQxqIAMpAwA3AgAgBCAEKQPgAjcCoAEgBEEANgKcASAEQbABaiAEQZwBahDZCyABKAIAIARBsAFqEM8cDBgLIARBiAFqQQxqIAEpAwA3AgAgBCAEKQPgAjcCjAEgBEEBNgKIASAEQbABaiAEQYgBahDZCyAFIARBsAFqEM8cDBcLIARBsAFqIAEgAxC7CCAEQegCaiIBIARBsAFqQQxqKQIANwMAIAQgBCkCtAE3A+ACAkAgBCgCsAEiA0GAgICAeEYNACAAIAQpAsQBNwIUIABBJGogBEGwAWpBJGooAgA2AgAgAEEcaiAEQbABakEcaikCADcCACAAQQxqIAEpAwA3AgAgACAEKQPgAjcCBCAAIAM2AgAMGAsgBEH0AGpBDGogASkDADcCACAEIAQpA+ACNwJ4IARBADYCdCAEQbABaiAEQfQAahDZCyAFIARBsAFqEM8cDBYLIARBsAFqIAIQkw8gBCgCsAFBEEYNCSAEQeACakEYaiAEQbABakEYaigCADYCACAEQeACakEQaiAEQbABakEQaikCADcDACAEQeACakEIaiAEQbABakEIaikCADcDACAEIAQpArABNwPgAiAEQbACaiAEQeACahDgEyAEQbABaiACIAMtAHAgBEGwAmoQ7yECQCAEKAKwASIBQYCAgIB4Rg0AAkBBJEUNACAAQQRqIARBsAFqQQRqQST8CgAACyAAIAE2AgAgBCgCsAIgBCgCtAIQnSoMFwsgBEHsAmogBEGwAmpBCGopAgA3AgAgBCAEKQKwAjcC5AIgBEEANgLgAiAEQbABaiAEQeACahDZCyACIARBsAFqEM8cDBULIARBADYCrAIgBEKAgICAwAA3AqQCIAEoAgAhBSAEQeACakEEaiEDIARBsAFqQQRqIQIDQCAEQbABaiAFEJMPAkAgBCgCsAEiAUEQRw0AIARBCDYCsAIMDwsgAyACKQIANwIAIANBEGogAkEQaikCADcCACADQQhqIgYgAkEIaikCADcCACAEIAE2AuACAkACQAJAAkACQAJAAkACQAJAAkBBACABQXlqIgcgByABSxsOCQgAAQIDBAUGBwgLIARB2ABqQQhqIAYoAgA2AgAgBCADKQIANwNYIARBsAJqIARB2ABqEIsVDAgLIARBATYCtAEgBEGo6oQBNgKwASAEQgA3ArwB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IARBzAJqEN0JIARBvAJqIARBzAJqQQhqKQIANwIAIAQgBCkCzAI3ArQCIARBATYCsAIgBEHgAmogBEGwAmoQ2QsMBgsgBkEBcQ0CIAVBf0oNASAEQbABaiABKAIEIAEoAggQyxNBAiEBDAYLIAJBAXENAyAEQbQCakGA/gMQnwwgBEEBNgKwAiAEQeACaiAEQbACahDZCwwECyAEQcwCaiAFrUL/AYMiFkIghiAWhBCHDCAEQcwCahD4CSAEQbwCaiAEQdQCaikCADcCACAEIAQpAswCNwK0AiAEQQA2ArACIARB4AJqIARBsAJqENkLDAMLIARCjoCAgPD/vwg3AsACIARCi4CAgMABNwK4AiAEQoCAgICQATcCsAIgBEHQAmogBEGwAmoQ1AogBEEANgLMAiAEQeACaiAEQcwCahDZCwwCCyAEQY7+AzsA0AIgBEGAkqzgADYAzAIgBEG0AmogBEHMAmoQywsgBEEBNgKwAiAEQeACaiAEQbACahDZCwwBCyAEQbQCakKAgICA8P+/CBCHDCAEQQA2ArACIARB4AJqIARBsAJqENkLCyAEQcwBaiAEQfgCaigCADYCACAEQcQBaiAEQfACaikCADcCACAEQbwBaiAEQegCaikCADcCACAEIAQpAuACNwK0AQwBCyAEQbABakEUaiICIARB2ABqQQhqKQMANwIAIARBsAFqQRxqIgUgBEHYAGpBEGopAwA3AgAgBCABOgDUASAEIAQpA1g3ArwBIAQoArABIgFBgICAgHhGDQAgBEHQAGogBSgCACIDNgIAIARBOGpBEGogAikCACIWNwMAIARBOGpBCGogBEGwAWpBDGopAgAiFzcDACAEIAQpArQBIhg3AzggBCkC0AEhGSAAQRxqIAM2AgAgAEEUaiAWNwIAIABBDGogFzcCACAAIBg3AgQgACAZNwIgIAAgATYCAAwCCyAEQdAAaiAEQcwBaigCADYCACAEQcgAaiAEQcQBaikCADcDACAEQcAAaiAEQbwBaikCADcDACAEIAQpArQBNwM4IAMgBEE4ahDPHAsgAEGAgICAeDYCAAsgBEGAA2okAAu7OwEbfyMAQYABayIFJAAgAkEANgJoIAJBADYCVCACQQA2AjggAkEANgIkIAJBADYCCAJAAkACQAJAAkACQCADKAIQIgYgAygCFCIHSw0AIAMo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tAJLDQAgCUUNBQJAIAkgASgCuAJLDQAgASgCKCELIANB0ABqIAFBBGooAgAgAUEIaigCACAJQdy9gwEQhiAgAygCVCIJRQ0HAkACQCADKAJQIgctAAAiAkH/AUYNACACIAJBAnZqIAJBA3FBAEdqQQJqIQIMAQsgC0ECaiECCyACIAlPDQggByACQQJ0aigCACILQX9MDQQCQCACQQFqIgIgCU8NACAHIAJBAnRqKAIAIQIMBgsgAiAJQZS1gwEQwBQACyADQZABaiABKAIcIBUoAgAiAigCCEF/akF4cWpBCGogBiASIAQgBSACKAIQERIAIAMoApABRQ0BIAMoApQBIgIgBEsNAgsgBEEBaiECDAELCyAAQQA2AgAMDgsgC0H/////B3EhAgsgA0GAAWogAiAEQQFqIgkgAUEQaigCACABQRRqKAIAIAJBzL2DARCIIygCAGsgCRDYFiAAQQE2AgAgAEEMaiADQYgBaigCADYCACAAIAMpAoABNwIEDAwLIABBADYCAAwLC0EAQQBBtLWDARDAFAALIAIgCUGEtYMBEMAUAAsgAiAJQYS1gwEQwBQAC0EAQQBBtLWDARDAFAALIAAgAykClAE3AgQgAEEMaiADQZABakEMaigCADYCAAsgACACNgIADAULIApBAmohBwsgByALTw0BAkACQCAMIAdBAnRqKAIAIgpBf0wNAAJAIAdBAWoiByALTw0AIAwgB0ECdGooAgAhBwwCCyAHIAtBlLWDARDAFAALIApB/////wdxIQcLIANBgAFqIAcgBCABQRBqKAIAIAFBFGooAgAgB0HMvYMBEIgjKAIAayAEENgWIAEoAhwhB0EBIQgLIANBkAFqIAcgAUEgaiINKAIAIgsoAghBf2pBeHFqQQhqIAIoAggiEiACKAIMIhEgBCAFIAsoAhAREgACQAJAAkACQCADKAKQASICDgMCAQACCyABQSxqIRUgAygClAEhAiABQQhqIRMgAUEEaiEUIAFBFGohDwwCCyAAIAMpApQBNwIEIABBDGogA0GQAWpBDGooAgA2AgALIAAgAjYCAAwDCwJAAkACQANAAkACQAJAAkACQAJAAkACQCACIgQgBU8NACAEIBFPDQYgFSASIARqLQAAai0AACICQQJqIRAgCSEMAkADQAJAAkACQAJAIBQoAgAgEygCACAMQay8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ACAHIAQvAPEBOwAZIAdCADcCJCAHQv7///9vNwIcIAcgBCkCsAI3AiwgB0EbaiAEQfMBai0AADoAACAHQTRqIARBsAJqQQhqKQIANwIAIAdBPGogBEGwAmpBEGooAgA2AgAgBEHgAmpBGGoiDCAEQRhqKAIANgIAIARB4AJqQRBqIARBEGopAgA3AwAgBEHgAmpBCGogBEEIaikCADcDACAEIAQpAgA3A+ACQQAtAODnngEaQTgQfCIBRQ0DIAFBADYCACABIAQpA+ACNwIEIAFBADoANCABIAc2AjAgASAJNgIsIAEgCDYCKCABQQA2AiAgAUEMaiAEQeACakEIaikDADcCACABQRRqIARB8AJqKQMANwIAIAFBHGogDCgCADYCAEEALQDg554BGkEcEHwiB0UNAyAHIANBf3MgEnE6ABkgB0EAOgAYIAdBADYCFCAHIAk2AhAgByAINgIMIAdBATYCCCAHIAE2AgQgB0EBNgIAIAAgBzYCDCAAQQI2AgggAEEUNgIAQQBBCBDNKgwBC0EALQDg554BGkHAABB8IgdFDQIgB0EFOgAYIAcgATYCECAHQQE2AgwgByAMNgIIIAdCl4CAgBA3AwAgByAELwDxATsAGSAHQgA3AhwgByAEKQKwAjcCLCAHQSRqQgA3AgAgB0EbaiAEQfMBai0AADoAACAHQTRqIARBuAJqKQIANwIAIAdBPGogBEHAAmooAgA2AgAgACAJNgIMIAAgCDYCCCAAIAc2AgQgAEESNgIAIAQpA3AiGUIDg0IAUg0AIBmnIgcgBygCACIAQX9qNgIAIABBAUcNACAHIAcoAhAQjyILIAVBMEEIENIVCyACKAIAQQZxQQZGDQEgAhCFBQwBCwALIARBkANqJAALt0MBAn8jAEHQAGsiAiQAAkACQAJAAkACQAJAA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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IgNBoKqZAUEDEP8EIAJBATYCPCACQaiqmQE2AjggAkIBNwJEIAJBBjYCJCACIAEgA0EDdGo2AiAgAiACQSBqNgJAIAJBEGogAkE4ahCHDiACQSxqIAIoAhQiASABIAIoAhhqEMkeIAJBIGpBCGogAkEsakEIaigCADYCACACIAIpAiw3AyAgAigCECABEOMsDAELIAJBIGogASgCCCADQbCqmQFBBBD/BAsgAkECNgI8IAJB1KqZATYCOCACQgE3AkQgAkEENgIwIAIgAkEsajYCQCACIAJBIGo2AiwgAkEQaiACQThqEIcOIABBCGogAkEQakEIaigCADYCACAAIAIpAhA3AgAgAigCICACKAIkEOMsDAELQYSknAFBKEGUopkBEMccAAsgAkHQAGokAAvwNAI4fwN+IwBBoARrIgQkAAJAAkACQAJAIAMtACVBAkYNACAEQZgBakEIaiADQRBqKQMANwMAIARBmAFqQRBqIANBGGopAwA3AwAgBCADKQMINwOYASADKAIEIQUgAygCACEGIAMoAiAhByAEQTBqIANBCGoiAxCpHCAEKAI4IQggBCkDMCE8IARBMGpBIGogB0EgaikDADcDACAEQTBqQRhqIAdBGGopAwA3AwAgBEEwakEQaiAHQRBqKQMANwMAIARBMGpBCGogB0EIaikDADcDACAEIAcpAwA3AzAgBEEIaiA8IAggBEEwahBeAkACQCABQgODIjxCAFINACABpyIIIAgoAgAiCUEBajYCACAJQX9MDQMgBCACNgI4IAQgATcDMCAEQSBqIAMgBEEwahD1AyAIIAgoAgAiA0F/ajYCACADQQFHDQEgCCAIKAIQEI8iDAELIAQgAjYCOCAEIAE3AzAgBEEgaiADIARBMGoQ9QMLQQAtAODnngEaQcAAEHwiCEUNASAEQfwAakEMaiAEQZgBakEIaikDADcCACAEQfwAakEUaiAEQZgBakEQaikDADcCACAIQQA2AgAgCEIANwIgIAhBKGpCADcCACAIQTBqQQA2AgAgBCAEKQOYATcCgAEgCCAEKQJ8NwIEIAhBDGogBEH8AGpBCGopAgA3AgAgCEEUaiAEQfwAakEQaikCADcCACAIQRxqIARBlAFqKAIANgIAIAhCBDcCNCAEQQE2AugCIAQgCDYC5AIgBEEBNgLgAiAEQTBqIARB4AJq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A5gCIAQgIigAADYAnwICQCAKQQJJDQAgCkECRw0FIARBADYCsAIgBEEANgKoAiAEIAUoAgA2AsACIAQgBSgCBCIGNgK8AiAEIAY2ArgCIAQgBiAFKAIIIghBOGwiI2oiJDYCxAICQAJAIAhFDQBBACEHAkADQCAGIAdqIghBOGohJSAIKAIAIglBB0YNASAIQShqKAIAISYgCEEsaigCACEnIAhBMGooAgAhCiADIAhBBGoiKCkCADcCACADQQhqIiEgCEEMaikCADcCACADQRBqIh8gCEEUaikCADcCACADQRhqIiAgCEEcaikCADcCACADQSBqIiIgCEEkaigCADYCACAEIAk2AsgDAkAgCkUNACAEICU2ArwCIBkgKCkCADcCACAZQQhqIikgKEEIaikCADcCACAZQRBqIiogKEEQaikCADcCACAZQRhqIisgKEEYaikCADcCACAZQSBqIiwgKEEgaigCADYCACAEIAk2AuACIARB8ANqIARB4AJqENwFIAQoAvADQQxGDQsgBEHgAmpBKGoiLSAEQfADakEoaiIuKQMANwMAIARB4AJqQSBqIi8gBEHwA2pBIGoiMCkDADcDACAEQeACakEYaiIxIARB8ANqQRhqIjIpAwA3AwAgBEHgAmpBEGoiMyAEQfADakEQaiI0KQMANwMAIARB4AJqQQhqIjUgBEHwA2pBCGoiNikDADcDACAEIAQpA/ADNwPgAkEALQDg554BGkHAABB8IggNBAwXCyAEQcgDahC6CyAjIAdBOGoiB0cNAAsgJCElCyAEICU2ArwCCyAdEK4VQQAhB0EEIQgMEQsgCCAEKQPgAjcDACAIQQA6ADwgCCAKNgI4IAggJzYCNCAIICY2AjAgCEEoaiAtKQMANwMAIAhBIGogLykDADcDACAIQRhqIDEpAwA3AwAgCEEQaiAzKQMANwMAIAhBCGogNSkDADcDACAEQeACakEEQQRBBBD3DiAEKALkAiEHIAQoAuACQQFGDQcgBCgC6AIiNyAINgIAQQEhOCAEQQE2AqQDIAQgNzYCoAMgBCAHNgKcAyAaIB0pAgAiPDcDACAEQagDakEYaiAEQagCakEYaikCADcDACAEQagDakEIaiAEQagCakEIaikCADcDACAEIAQpAqgCNwOoAyA8pyE5IAQoAsQDIQYgBCgCvAMiOiEIAkAC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ArQBIAJBjwU2AsQEIAIgAkHABGo2ArABIAIgAkHIBGo2AsAEIAJBoANqIAJBqAFqEOkPIAJBtANqIAJBmANqKAIANgIAIAIgAikCkAM3AqwDIAUgBCACQaADahCXGSEEIAEtANgBQaIBRw0KIAEgARDAKRCnFgwKCyABEJQLIAEpA8gBIREgAkEBNgKoASACIBE3AqwBIAJB0ABqIAFBASACQagBahB4IAIoAlQhBCACKAJQIQYMAQsgARCUCyACQQA2ArABIAJCgICAgMAANwKoASACQdgAaiABQQEgBCACQagBahDDCyACKAJcIQQgAigCWCEGCyAGQQJGDQUMBwsgARCUCyABKALMASEFQQhBwAAQqSkiBEUNCiAEIAU2AgggBCADNgIEIARBDDYCAAwDCyACQQA2ArABIAJCgICAgMAANwKoASACQcgAaiABQQAgAiACQagBahDDCyACKAJMIQQgAigCSCEGDAULAkACQCABKAKIASIEQYCABHFFDQAgASAEQf//e3E2AogBIAJBqAFqIAEQlCwgASABKAKIAUGAgARyNgKIAQwBCyACQagBaiABEJQsCyACKAKsASEEIAIoAqgBIgZBgICAgHhGDQMgAkHoAmpBEGoiCiACQcABaikCADcDACACQegCakEIaiIMIAJBqAFqQRBqKQIANwMAIAIgAikCsAE3A+gCQQhBwAAQxikiBUUNCCAFIAQ2AgggBSAGNgIEIAVBHDYCACAFIAIpA+gCNwIMIAVBFGogDCkDADcCACAFQRxqIAopAwA3AgBBACEGIAUhBAwECyAGQXhqIQVBACELQQAhBAJAA0AgBiAEaikAACIUQoCBgoSIkKDAgH+DIhVCgIGChIiQoMCAf4UgFEL//fv379+//358gyERAkACQANAIBFQDQEgBSAReqdBA3YgBGogDHEiDUEDdGsoAgBFDQIgEUJ/fCARgyERDAALCyAVIBRCAYaDUEUNAiAEIAtBCGoiC2ogDHEhBAwBCwsgBiANQQN0QQN1IgRqIgVBgH9BfyAFKQAAIhEgEUIBhoNCgIGChIiQoMCAf4N6p0EDdiAGIARBeGogDHFqIgQpAAAiESARQgGGg0KAgYKEiJCgwIB/g3mnQQN2akEHSxsiBToAACAEQQhqIAU6AAAgAkHzgICAeDYCqAEgASADIAcgAkGoAWoQ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AqQBIAJBvMCAATYCoAEgAkIENwKoASABKAIAIAEoAgQgAkGgAWoQyCYNAiACQSBqIAMgBCgCGBEGACACKAIgIQUgAkEANgKIASACIAQ2AoABIAIgAzYCfCACQQA2AnggBUEARyEGA0AgAkEYaiACQfgAahDZEQJAIAIoAhgiBQ0AIAIoAnggAigCgAEQkSYMAwsgAigCHCEDIAIgAigCiAEiBEEBajYCiAEgAiADNgLkASACIAU2AuABIAJBADYCsAEgAkEBNgKkASACQcTAgAE2AqABIAJCBDcCqAECQCABKAIAIAEoAgQgAkGgAWoQyCYNACACQQA6AHQgAiAENgJsIAIgBjYCaCACIAE2AnAgAkEBNgKkASACQby3nAE2AqABIAJCATcCrAEgAkHRADYCXCACIAJB2ABqNgKoASACIAJB4AFqNgJYIAJB6ABqIAJBoAFqENMmRQ0BCwsgAigCeCACKAKAARCRJkEBIQUMAgsgBCABIAMoAgwRBwAhBQwBCwJAAkACQAJAAkACQAJAAkACQAJAIAAoAgQiA0EDRg0AIABBBGohAAwBCyACQRBqIAAgACgCACgCBBEGACACKAIQIAIoAhRBKGooAgAQyhwiAEUNASAAKAIAIQMLQQAhBSADQQJJDQggAkEANgJUIAJCgICAgBA3AkwgAkGAv4ABNgJcIAJCoICAgA43AmAgAiACQcwAajYCWAJAIAAoAgAOAwMCAAMLAkACQAJAAkACQAJAAkAgAC0AFA4EAAMCAQALIABBAjoAFEEALQCB454BIQVBAEEBOgCB454BIAIgBToAeCAFDQUgAEEDOgAUQQBBADoAgeOeAQsgACgCECIFIAAoAgwiA0sNAyAAKAIIIQAgAkEAKQP44pgBIh43AmwgAkGAgICAeDYCaCACQQA6AHQgAkEAOgCIASACQQA2AoQBIAJBrM6YATYCgAEgAiACQdgAajYCeCACIAJB6ABqNgJ8IAMgBUcNAiAeQiCIpyEAIB6nIQUMCgsgAkEANgKwASACQQE2AqQBIAJB7N2YATYCoAEgAkIENwKoASACQaABakHIzZgBELUhAAsgAkEANgKwASACQQE2AqQBIAJBrN2YATYCoAEgAkIENwKoASACQaABakHIzZgBELUhAAsgACADQQxsaiEHIAAgBUEMbGohCCACQaABakEIaiEJ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g0IAUg0AICGnIgYgBigCACIGQQFqNgIAIAZBf0wNBwsgDSkDECIiUA0BICJCA4NCAFINASAipyINIA0oAgAiDUEBajYCACANQX9MDQYMAQsgAkEIaiANQQhqEKAIIAIoAhwhHCACKAIYIQcgAikDECEiIAIoAgwhHiACKAIIIR8LIAggDDoAQSAIIAU6AEAgCCAXOgA8IAggATYCOCAIIAs2AjQgCCAJNgIwIAggIDcDKCAIIBM2AiQgCCAWNgIgIAggHDYCHCAIIAc2AhggCCAiNwMQIAggHjYCDCAIIB82AgggCCAhNwMAQgAhIQwICyABKAIMIQcgASgCCCEJIAEoAgQhDRC1JSEIIAJBCGogDRBCIAhBOGogAkEIakE4aikDADcDACAIQTBqIAJBCGpBMGopAwA3AwAgCEEoaiACQQhqQShqKQMANwMAIAhBIGogAkEIakEgaikDADcDACAIQRhqIAJBCGpBGGopAwA3AwAgCEEQaiACQQhqQRBqKQMANwMAIAhBCGogAkEIakEIaikDADcDACAIIAIpAwg3AwBCACEhDAcLQgAhISABKAIgIQsgASgCHCENIAEoAhghBSABKAIMIQcgASgCCCEJIAEpAxAiIqchDAJAICJCA4NCAFINACAMIAwoAgAiCEEBajYCACAIQX9MDQMLICJCIIinIQYgAS0AJCEXDAULIAggAigCEEG06poBEMEmAAsgCCACKAIQQbTqmgEQwSYACwALIAItABwhFyACKAIYIQsgAigCFCENIAIoAhAhBSACKQMIISIgAikDICEgCyAgQoCAgIBwgyEhICJCIIinIQYgIKchASAipyEMCwsgACAXOgAkIAAgCzYCICAAIA02AhwgACAFNgIYIAAgBzYCDCAAIAk2AgggACAINgIEIAAgAzYCACAAIAIvAUw7ACUgACAWNgI0IAAgEzYCMCAAQSdqIAJBzgBqLQAAOgAAIAAgISABrYQ3AyggACAGrUIghiAMrYQ3AxALIAJB0ABqJAALwCoCDX8BfiMAQbACayIDJAAgASgCDCEEIANB4AFqIAIgASgCCCIFQQAQiAICQAJAIAMtAOABQQRGDQAgAykD4AEiEEL/AYNCBFENACAAIBA3AgAMAQsCQAJAAkACQCAFRQ0AIANB4AFqIAIgBRDbICADLQDgAUEERg0AIAMpA+AB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A0HgAWpB9QAQhQogBw0CDAULIANB1AFqQfvGmwFBAhDxBQwHCyABIARGDQECQAJAAkACQAJAAkACQAJAAkACQAJAIAFBf2pBD0kNACABQfD//wBxQRBGDQEgAUFgakHfAEkNAiABQYF/akGBAUkNCiABQdi/f2oOAgQFAwsgA0HUAWpBjIeZAUEDEPEFIANBATYC5AEgA0G8t5wBNgLgASADQgE3AuwBIANB7AE2ArgBIAMgAToAoAEgAyADQbQBajYC6AEgAyADQaABajYCtAEgA0HUAWogA0HgAWoQghNFDRBByJGcAUErIANB4AFqQZyEmQFBkIeZARCjEgALIANB1AFqQeiGmQFBAhDxBSADQQE2AuQBIANBvLecATYC4AEgA0IBNwLsASADQewBNgK4ASADIAE6AKABIAMgA0G0AWo2AugBIAMgA0GgAWo2ArQBIANB1AFqIANB4AFqEIITRQ0PQciRnAFBKyADQeABakGchJkBQfyGmQEQoxIACyADQdQBaiABEPceDA4LIAFB//0DRg0CIAFBgAFJDQMgAUH//wNLDQUgCUEBcQ0EIANB1AFqIAEQ9x4MDQsgA0HUAWpBtIWZAUEGEPEFDAwLIANB1AFqQbqFmQFBBhDxBQwLCyADQdQBakHAhZkBQQYQ8QUMCgsgA0HUAWogARD3HgwJCyADQQE2AvQBIANB0IWZATYC8AEgA0EBNgLkASADQciFmQE2AuABIANBATYC7AEgA0GdAjYCuAEgAyABOwGgASADIANBtAFqNgLoASADIANBoAFqNgK0ASADQdQBaiADQeABahCCE0UNCEHIkZwBQSsgA0HgAWpBnISZAUHohZkBEKMSAAsCQAJAIA4NACAJQQFxDQEgA0HUAWogARD3HgwJCyADIAFBgIB8akEKdkGAsANqNgKwASADIAFB/wdxQYC4A3I2AqABIANBAjYC9AEgA0GohpkBNgLwASADQQI2AuQBIANBmIaZATYC4AEgA0ECNgLsASADQeQANgLAASADQeQANgK4ASADIANBtAFqNgLoASADIANBoAFqNgK8ASADIANBsAFqNgK0ASADQdQBaiADQeABahCCE0UNCEHIkZwBQSsgA0HgAWpBnISZAUHYhpkBEKMSAAsgA0EBNgL0ASADQdCFmQE2AvABIANBAjYC5AEgA0H4hZkBNgLgASADQQE2AuwBIANB5AA2ArgBIAMgATYCoAEgAyADQbQBajYC6AEgAyADQaABajYCtAEgA0HUAWogA0HgAWoQghNFDQdByJGcAUErIANB4AFqQZyEmQFBiIaZARCjEgALIA8NAiADQdQBaiABEPceDAYLIANB4AFqQfsAEIUKDAILIANB1AFqQdwAEPceIANB1AFqIAQQ9x4MBAsgA0HUAWpB6IaZAUECEPEFIANBATYC5AEgA0G8t5wBNgLgASADQgE3AuwBIANB7AE2ArgBIAMgAToAoAEgAyADQbQBajYC6AEgAyADQaABajYCtAEgA0HUAWogA0HgAWoQghNFDQNByJGcAUErIANB4AFqQZyEmQFB7IaZARCjEgALIANB4AFqIAEoAgAQhQogA0G0AWoQsCIaQQMhBQJAAkACQAJAAkACQAJAAkADQCAFRQ0BIANBtAFqELAiIgFBgIDEAEYNAgJAIAFBUGpBCkkNACABQZ9/akEGSQ0AIAFBv39qQQVLDQMLIANB4AFqIAEQhQogBUF/aiEFDAALCyAHDQFBBiEKQQIhBSADKALoASEGIAMoAuQBIQwMBAsgB0UNAQsgA0HgAWpB/QAQhQogBUUNAQsgA0HUAWpB+8abAUECEPEFDAMLQQMhBSADKALkASEMIAMoAugBIgZBf2oiCkEDSQ0BCwJAAkAgBSAGSQ0AIAUgBkYNAQwCCyAMIAVqLAAAQUBIDQELAkACQCAKIAZJDQAgCiAGRw0CDAELIAwgCmosAABBv39MDQELIAwgBWohAQJAAkACQAJAAkACQCAKIAVrIgoOAgQAAQtBASEFIAEtAABBVWoOAwMBAwELAkAgAS0AAEErRw0AIApBf2ohBSABQQFqIQEgCkEKSQ0BDAILIAohBSAKQQlPDQELQQAhCgNAIAVFDQMgA0HAAGogAS0AABDFICADKAJAQQFxRQ0CIAFBAWohASAFQX9qIQUgAygCRCAKQQR0aiEKDAALC0EAIQoDQCAFRQ0CIApB/////wBLDQEgA0HIAGogAS0AABDFICADKAJIQQFxRQ0BIAFBAWohASAFQX9qIQUgAygCTCAKQQR0IgtqIgogC08NAAsLIANB1AFqQfvGmwFBAhDxBQwCCwJAIApB//8DSw0AAkAgCkGA8ANxQYCwA0YNACADQdQBakH7xpsBQQIQ8QUMAwsgA0HUAWpB3AAQ9x4MAgsgA0HUAWogDCAGEPEFQQdBBSAHGyEBA0AgAUUNAiABQX9qIQEgA0GIAmoQsCIaDAALCyAMIAYgBSAKQaSFmQEQjygACyADQeABahDbKgwCCwJAIANBiAJqEKEhIgFFDQAgASgCAEFQakEKSQ0BCyADQdQBakGPhZkBQQIQ8QUMAQsgA0HUAWpBkYWZAUEEEPEFDAALCyAKQQFqIQoMAAsLIANBqgFqIAMtAOIBOgAAIAMgBzYCpAEgAyAINgKgASADIAMvAeABOwGoASADIAE6AKsBAkAgAi0AUEUNACADQThqIANBoAFqEJEXIAMoAjghBSADKAI8IQEgA0EINgKwASADIAE2AtABIAMgBTYCzAFBACEHIANBADYCxAEgAyAFIAFqNgLAASADIAU2ArwBIANBAjYCtAEgAyADQbABajYCyAEgA0EwaiADQbQBakEIahClCCADIAMoAjQ2ArgBIAMgAygCMCIINgK0AQJAAkACQCAIQQFxRQ0AAkACQCABDQBBgICAgHwhCEEAIQEMAQsCQCABQQ1JDQAgA0HgAWogARD8GCADKALgASEIIAMoAuQBIQcgAUUNASAHIAUgAfwKAAAMAQsgA0EANgDnASADQgA3A+ABIAMgAUHAAXI6AOsBAkAgAUUNACADQeABaiAFIAH8CgAACyADKALoASEIIAMoAuQBIQEgAygC4AEhBwsgAyAINgLcASADIAE2AtgBIAMgBzYC1AEgA0HgAWpBGGogA0G0AWpBGGopAgA3AwAgA0HgAWpBEGogA0G0AWpBEGopAgA3AwAgA0HgAWpBCGoiBiADQbQBakEIaikCADcDACADIAMpArQBNwPgASADQQA2AoACA0AgAygC4AEhASADQQI2AuABAkACQCABQQJGDQAgAygC5AEhBQwBCyADQShqIAYQpQggAygCLCEFIAMoAighAQsCQCABQQFxRQ0AIAMgAygCgAJBAWoiATYCgAIgA0EQaiADQdQBahDMHAJAIAEgBWoiAUUNAAJAIAEgAygCFCIFSQ0AIAEgBUYNAQwGCyADKAIQIAFqLAAAQb9/TA0FCyADLQDfASEFIAMoAtgBIQcgA0HUAWpBARCOByADQQhqIANB1AFqEMEZIAMoAgggAWohCAJAIAcgBUHAAGpB/wFxIgpBDCAKQQxJGyAFQf4BRhsiBSABayIBRQ0AIAhBAWogCCAB/AoAAAsgCEHcADoAACAFQQFqIQECQCADLQDfAUH+AUYNACABQQtLDQIgAyABQcABcjoA3wEMAgsgAyABNgLYAQwBCwsgA0GIAmpBCGogA0HUAWpBCGooAgA2AgAgAyADKQLUATcDiAIMAQsgA0H/AToAkwIgAyABNgKMAiADIAU2AogCCyADQSBqIANBiAJqEJEXIANB4AFqIAMoAiAgAygCJEGRqZwBQQRBlamcAUEHEOcMIANBtAFqIAMoAuQBIAMoAugBQZypnAFBA0GfqZwBQQYQ5wwCQAJAAkAgAygCtAEiAUH+//8HSw0AAkACQCABDQAgA0GoAmpBACgCtP6YATYCACADQQApAqz+mAE3A6ACIAMoArgBIQgMAQsgAygCuAEhCCADKAK8ASIFQQxLDQIgA0EANgCnAiADQgA3A6ACIAMgBUHAAXI6AKsCIAVFDQAgA0GgAmogCCAF/AoAAAsgASAIEL0VDAILIANBoAJqIAMoArgBIgUgAygCvAEQ0A0gASAFEL0VDAELIAMgAUH///8HIAFB////B0kbQYCAgHByNgKoAiADIAU2AqQCIAMgCDYCoAILIANBoAFqEIglIANBoAFqQQhqIANBoAJqQQhqKAIANgIAIAMgAykDoAI3A6ABIANB4AFqEPMpIANBiAJqEIglDAELIANBADYCmAIgA0EBNgKMAiADQcDcgAE2AogCIANCBDcCkAIgA0GIAmpByNyAARC1IQALIAMgBDoAtAEgA0HgAWogAiADQbQBakEBEOoPAkACQCADLQDgAUEERg0AIAMpA+ABIhBC/wGDQgRSDQELIANBGGogA0GgAWoQkRcgA0HgAWogAkEAQQAgAygCGCADKAIcEOoOAkAgAy0A4AFBBEYNACADKQPgASIQQv8Bg0IEUg0BCyADQeABaiACIANBtAFqQQEQ6g8CQCADLQDgAUEERg0AIAMpA+ABIhBC/wGDQgRSDQELIABBBDoAACADQaABahCIJQwBCyAAIBA3AgAgA0GgAWoQiCULIANBsAJqJAAL+CYCD38CfiMAQdADayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtANgBQRdHDQAgASgCaCIDIAEoAmwiBEYNAgJAAkAgAywAACIFQX9MDQAgBUH/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IAEoAoAFIAEoAoQFIAIgBhCcISEIIAUhCkEBIQULIAAgCjYCCCAAIAg2AgQMCQsgBiAIQbzggwEQwBQACyAEQfAAaiAJIApBA3ZBEHFqIgkpAwAgCUEIaikDACAKQf8AcRC2FSAEKQNwQgGDUA0AIAqtIRdCBCEYDAILIAEgCmotAGAhCQsgCUH/AXEhCgJAAkAgCA4DBAABBAsgCkEGaiEKDAMLIAEtAFlBAXENASAHrSEXQgIhGAsgF0IghiAYhCEXDAILAkAgByABKAKABSgC3AJPDQAgB0EGbCAKakEMaiEKDAELIAEoAoQFEJEZIQoMAgsCQCAKIAIoAogBIgtJDQAgCiALQaDigwEQwBQACyACKAKEASAKQQJ0aigCACIKQQBODQEgBCACNgKoASAEIAE2AqQBIARBmAFqIARBpAFqIAggByAJEIkBAkAgBCgCmAFBBUcNACAEKAKcASEKDAILIAQpA5gBIRcLIBdCIIghGAJAAkACQAJAIBenIgJBfWoiCkECIApBAkkbDgMAAQIACyAGEIIhIQYMAgsgGKcgBhCJHyEGDAELIAIgGKcQhh8hBgsgAEECNgIAIAAgBjYCBAwCCwJAIAUgBkYNACAGQX9qIQYCQCACKAKwAUEBcUUNACACIAIoArQBIgggAigCuAEiCWsgCSAIayAIIAlLGyACKAJwajYCcAsgAiAGNgK4ASACIAY2ArQBIAJBATYCsAFBfyAFQQNqIgggCCAFSRshDSABQeACaiEIIAMoAggiDkF9aiEMIAEoAoQFIREgASgCgAUhEiADKAIMIQ9BACETAkADQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIApB////P0sNACAGIAVPDQEMCwsgAigCsAFFDQIgAiAGNgK4ASAGIA9JDQEgBiAPQZzkgwEQwBQACyACKAJ8IRQgAigCeCEDA0AgAyAKIAggDCAGaiIJQQNqLQAAai0AAGpBAnRqKAIAIgtB////P0sNByAGIA1NDQcgAyALIAggCUECai0AAGotAABqQQJ0aigCACIHQf///z9LDQQgAyAHIAggCUEBai0AAGotAABqQQJ0aigCACILQf///z9LDQYgAyALIAggCS0AAGotAABqQQJ0aigCACIKQf///z9LDQUgBkF8aiIGIAVJDQoMAAsLIApB////P3EgCCAOIAZqLQAAIglqLQAAaiIDIAIoAnwiB08NAQJAAkAgAigCeCADQQJ0aigCACIDQQBIDQBBACEKDAELIAQgAjYChAEgBCABNgKAASAEQeAAaiAEQYABaiAKIAlBCHQQfyAEKAJkIQMgBCgCYCEKCwJAIApBAXFFDQAgBhCCISEGIABBAjYCACAAIAY2AgQMDwsgAyEKIAYhCQwHC0HA4YMBQR9B4OGDARCyFgALIAMgB0G84IMBEMAUAAsgBkF/aiEJIAchFSALIQcMAwsgBkF9aiEJIAohFSALIQcMAgsgBkF+aiEJIAshFQwBCyALIRUgBiEJIAohBwsCQCAVQQBIDQAgFSEKDAELAkACQCACKAKwAUUNACACIAk2ArgBIAcgCCAOIAlqLQAAIgtqLQAAaiIGIBRPDQECQAJAIAMgBkECdGooAgAiCkEASA0AQQAhBgwBCyAEIAI2AoQBIAQgATYCgAEgBEHoAGogBEGAAWogByALQQh0EH8gBCgCbCEKIAQoAmghBgsgBkEBcUUNAiAJEIIhIQYgAEECNgIAIAAgBjYCBAwJC0HA4YMBQR9B4OGDARCyFgALIAYgFEG84IMBEMAUAAsgCkGAgIDAAEkNASAKQYCAgIABcQ0BAkACQAJAIApBgICAwABxDQAgCkGAgICABHENASAKQYCAgIACcQ0CIARBATYChAEgBEH044MBNgKAASAEQgA3AowBIAQgBEGsAWo2AogBIARBgAFqQazkgwEQtSEAC0EAIRACQCASKALcAkEBRg0AIBEgAiAKEMofIgYoAgAgBigCBEEAEO8SIRALQQEhEyAJQQFqIRYMAwsgAiAJEJoaDAQLIAIgCRCaGgJAIAkgD08NACAOIAlqLQAAIAkQiR8hBiAAQQI2AgAgACAGNgIEDAcLIAkgD0G85IMBEMAUAAsgBiEJCyAJQX9qIQYgCSAFRw0ACyACKAKwASEGIAJBADYCsAECQAJAAkACQCAGQQFxRQ0AIAIgAigCcCACKAK0ASIGIAVrIAUgBmsgBiAFSxtqNgJwAkAgBQ0AIARB0ABqIAEgAiAKENEPAkAgBCgCUEEBcUUNAEEAEIIhIQYMBAsgBCgCVCIKQYCAgMAAcUUNBUEAIQUMBAsCQCAFQX9qIgYgD0kNACAGIA9B/OSDARDAFAALIARB2ABqIAEgAiAKIA4gBmotAAAiCBDQDyAEKAJYQQFxDQEgBCgCXCIKQYCAgMAAcQ0DIApBgICAgAJxRQ0EIAggBhCJHyEGDAILQfDhgwFBH0GQ4oMBELIWAAsgBRCCISEGCyAAQQI2AgAgACAGNgIEDAQLQQEhEyASIBEgAiAKEJwhIRAgBSEWCyAAIBY2AgggACAQNgIEIAAgEzYCAAwCCwJAAkACQAJAAkACQAJAIAUNACABLQDfBEEBaiIIIApB////P3FqIgYgAigCfCIFTw0CQQAhBQJAIAIoAnggBkECdGooAgAiBkEATg0AIAQgAjYChAEgBCABNgKAASAEQcAAaiAEQYABaiAKIAhBEHRBAXIQfyAEKAJEIQYgBCgCQCEFCyAFQQFxRQ0BQQAQgiEhBgwECyAFQX9qIgggAygCDCIGSQ0CIAggBkH85IMBEMAUAAtBACEFIAZBgICAwABxRQ0EDAMLIAYgBUHM4IMBEMAUAAsgCkH///8/cSABIAMoAgggCGotAAAiCWotAOACaiIGIAIoAnwiA08NBUEAIQMCQCACKAJ4IAZBAnRqKAIAIgZBAE4NACAEIAI2AoQBIAQgATYCgAEgBEHIAGogBEGAAWogCiAJQQh0EH8gBCgCTCEGIAQoAkghAwsCQCADQQFxRQ0AIAUQgiEhBgwBCyAGQYCAgMAAcQ0BAkAgBkGAgICAAnENAEEAIQUMAwsgCSAIEIkfIQYLIABBAjYCACAAIAY2AgQMAwsgBSEIQQEhBSABKAKABSABKAKEBSACIAYQnCEhCgsgACAINgIIIAAgCjYCBAsgACAFNgIACyAEQbABaiQADwsgBiADQbzggwEQwBQAC+wjAhF/AX4jAEEQayIGJAACQCAFRQ0AIAVBAnQiB0UNACAEQQAgB/wLAAsgAkEANgIIIAJBACADKAIUIgggAygCECIJayIHIAcgCEsbIgpBAWoiBzYCGAJAAkACQAJAAkAgASgCGCILNQLQAiAHrX4iF0IgiKcNACAXpyIHIAEoAgRBA3RBgICAASABKAIAG0sNAEEAIQoCQCAHQQV2IgwgB0EfcUEARyINaiIHIAIoAhQiDksNACACIAc2AhQgByEOCwJAIA5FDQACQCAOQQJ0IgpFDQAgAigCEEEAIAr8CwALIAIoAhQhCgsgAkEMaiEOAkAgByAKTQ0AIAohDwJAIAcgCmsiECAOKAIAIAprTQ0AIA4gCiAQQQRBBBDBGyACKAIUIQ8LIAIoAhAgD0ECdGohBwJAIBBBAkkNACAKIAxrIA1rQQFqIQoDQCAHQQA2AgAgB0EEaiEHIApBAWoiCg0ACyAPIBBqQX9qIQ8LIAdBADYCACACIA9BAWo2AhQLAkACQAJAIAkgCEsNACADKAIADgMBBAIBCyAAQQA2AgAMBQsgCygCsAIiESALKAK0AkYNA0H8p4QBIAFBCGogAS0AFEEDRhsiBygCAEEIaiESIAcoAgQhEyAIIAMoAgwiDCAIIAxJGyEUIAMoAgghECAHLQAMQf8BcUECRiEVIAkhFgJAAkADQAJAIBUNACAGQQRqIBIgEygCCEF/akF4cWogECAMIBYgCCATKAIQERIAIAYoAgRFDQIgBigCCCEWCwJAIAIoAggiByACKAIARw0AIAJBmOyDARDOGgsgAigCBCAHQQxsaiIKIBY2AgggCiARNgIEIApBADYCACACIAdBAWoiAzYCCAJAIANFDQADQCACIANBf2oiAzYCCCACKAIEIANBDGxqIgcoAgAiAUECRg0BIAcoAgghCiAHKAIEIQcCQAJAIAFBAXFFDQAgByAFTw0GIAQgB0ECdGogCjYCAAwBCyAGIAo2AgACQANAIA4gByAKIAlrEKIVRQ0BAkACQAJAAkACQAJAAkAgByALKALQAiIKTw0AAkACQAJAAkACQAJAAkACQCALKALMAiAHQRRsaiIDKAIADgkGAwQABQECEAcGCyADKAIEIQcgBigCACEKAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMoAghoDhIAAQIDBAUGBwgJCgsMDQ4PEBEACyAKRQ0eDCALIAogDEYNHQwfCyAKRQ0cAkAgCkF/aiIKIAxPDQAgECAKai0AACALLQDgAkYNHQwfCyAKIAxB6KyEARDAFAALIAogDEYNGwJAIAogDE8NACAQIApqLQAAIAstAOACRg0cDB4LIAogDEH4rIQBEMAUAAsgCkUNGgJAAkAgCkF/aiIDIAxPDQAgECADai0AAEF2ag4EHB4eAR4LIAMgDEGIrYQBEMAUAAsgCiAMTw0aIBAgCmotAABBCkcNGgwcCyAKIAxGDRkCQAJAIAogDE8NACAQIApqIgMtAABBdmoOBAEdHRsdCyAKIAxBmK2EARDAFAALIApFDRkgA0F/ai0AAEENRw0ZDBsLAkACQAJAIApFDQAgCkF/aiIDIAxPDQEgECADai0AAEHItIQBai0AACEDIAogDEkNAiADQQFxDRsMHQsgDEUNHCAQLQAAQci0hAFqLQAADRoMHAsgAyAMQaithAEQwBQACyADQf8BcSAQIApqLQAAQci0hAFqLQAARw0YDBoLAkACQAJAIApFDQAgCkF/aiIDIAxPDQEgECADai0AAEHItIQBai0AACEDIAogDEkNAiADQQFxRQ0aDBwLIAxFDRkgEC0AAEHItIQBai0AAEUNGQwbCyADIAxBqK2EARDAFAALIANB/wFxIBAgCmotAABByLSEAWotAABGDRcMGQsgECAMIAoQ0ARB/wFxDRYMGAsgECAMIAoQoANB/wFxDRUMFwsCQCAKDQAgDEUNFyAQLQAAQci0hAFqLQAADRUMFwsgCkF/aiIDIAxPDQ8gCiAMTw0WIBAgA2otAABByLSEAWotAAANFiAQIApqLQAAQci0hAFqLQAAQQFxDRQMFgsgCkUNFSAKQX9qIgMgDE8NDyAQIANqLQAAQci0hAFqLQAAIQFBASEDIAogDE8NEiAQIApqLQAAQci0hAFqLQAAQQFzIQMMEgsgECAMIAoQzARB/wFxDRIMFAsgECAMIAoQxgRB/wFxDREMEwsgCkUNEAJAIApBf2oiCiAMTw0AIBAgCmotAABByLSEAWotAABFDREMEwsgCiAMQeithAEQwBQACyAKIAxPDQ8gECAKai0AAEHItIQBai0AAEUNDwwRCyAQIAwgChDyBEH/AXENDgwQCyAQIAwgChD0BkH/AXENDQwPCyADKAIIIQEgAygCBCEHIAYoAgAhDwJAIAIoAggiCiACKAIARw0AIAJBuOyDARDOGgsgAigCBCAKQQxsaiIDIA82AgggAyABNgIEIANBADYCACACIApBAWo2AggMDAsgAygCBCEHIAMoAhAiCiAFTw0LIAQgCkECdGoiDygCACENAkAgAigCCCIDIAIoAgBHDQAgAkHI7IMBEM4aCyACKAIEIANBDGxqIgEgDTYCCCABIAo2AgQgAUEBNgIAIAIgA0EBajYCCCAPIAYoAgBBAWo2AgAMCwsgBigCACINIAhPDQwgDSAMTw0MIAMoAghBA3QhCiADKAIEQQVqIQMgECANai0A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aiABQQxqKQIANwIAIABBFGogAUEUaikCADcCAAwJCyACKAI8IQFBACEEIAJBADYCmAIgAkKAgICAwAA3ApACIAhBHGwhA0EEIQlBACEHAkACQAJAA0AgA0UNASABKAIAQQFHDQIgAkHAAWogASgCBCABKAIIIgoQugcgAi0AwAEiBkECRg0CIAZBAXENAgJAAkAgAigCxAEiBkGAAU8NAEEBIQsMAQsCQCAGQYAQTw0AQQIhCwwBC0EDQQQgBkGAgARJGyELCyAKIAtHDQICQCAHIAIoApACRw0AIAJBkAJqEN0aIAIoApQCIQkLIAFBHGohASAJIARqIAY2AgAgAiAHQQFqIgc2ApgCIANBZGohAyAEQQRqIQQMAAsLIAIoApACIgpBgICAgHhGDQEgAigClAIhBiACQShqIAhBBEEIQdyqmwEQlxhBACEBIAJBADYCmAIgAiACKQMoNwOQAiACQZACaiAIENwiIAhBAnQhByAIIAIoApgCIgNqIQsgAigClAIgA0EDdGohAwJAA0AgByABRg0BIANBBGogBiABaigCACIENgIAIAMgBDYCACADQQhqIQMgAUEEaiEBDAALCyAKIAYQsSogAikDkAIhHyACQcgBaiIBIAs2AgAgAiALRToAzAEgAiAfNwPAASACQcABahD5BSACQZwCaiABKQMANwIAIAIgAikDwAE3ApQCIAJBADYCkAIgACACQZACahCVDgwKCyACKAKQAiACKAKUAhCxKgsgAigCPCEBIAIoAkAhBEEAIQMgAkEANgKYAiACQoCAgIAQNwKQAiAEQRxsIQRBASEKAkADQCAERQ0BAkAgASgCAEEBRg0AIAIoApACIQcMCQsgAigCkAIhByABKAIIQQFHDQggASgCBC0AACEGAkAgAyAHRw0AIAJBkAJqQfzQhAEQ6w4gAigClAIhCgsgAUEcaiEBIAogA2ogBjoAACACIANBAWoiAzYCmAIgBEFkaiEEDAALCyACKAKQAiIKQYCAgIB4Rg0HIAIoApQCIQYgAkEgaiADQQFBAkHcqpsBEJcYQQAhASACQQA2ApgCIAIgAikDIDcDkAIgAkGQAmogAxDdIiACKAKUAiACKAKYAiILQQF0aiEEAkADQCADIAFGDQEgBEEBaiAGIAFqLQAAIgc6AAAgBCAHOgAAIARBAmohBCABQQFqIQEMAAsLIAogBhCtKiACKQOQAiEfIAJByAFqIgMgCyABaiIBNgIAIAIgAUU6AMwBIAIgHzcDwAEgAkHAAWoQ7gUgAkGcAmogAykDADcCACACIAIpA8ABNwKUAiACQQE2ApACIAAgAkGQAmoQlQ4MCAsgABDDFQwHCyAEIAEpAgQ3AgAgBEEIaiABQQxqKQIANwIAIARBEGogAUEUaikCADcCACACIAc2AkQgAkGQAmogAkHEAGoQ5RkgAkHAAWpBEGoiByACQZACakEQaiILKQIANwMAIAJBwAFqQQhqIgkgAkGQAmpBCGoiCCkCADcDACACIAIpApACIh83A8ABIAIoAqgCIQogH6dBB0YNASALIAcpAwA3AwAgCCAJKQMANwMAIAIgAikDwAE3A5ACIAIgCjYCqAIgAkE4aiACQZACakGkz4QBEIcUDAILQZTPhAEQ+CkACyACKALMASELIAIoAsgBIQcgAiACKALEATYCmAIgAiAHNgKQAiACIAc2ApQCIAJBOGogCxDXIiACKAJAIQkCQCALQRxsIghFDQAgAigCPCAJQRxsaiAHIAj8CgAACyACIAc2ApwCIAIgCSALajYCQCACQZACahCiHCAKEKwrCyABQRxqIQEgBkEcaiEGIANBZGohAwwACwsgByAKEK0qCyACKAI8IQwgAigCQCENIAJBADYCmAIgAkKAgICAwAA3ApACIAwgDUEcbGohCyACQbABaiACQZACahDNFyACQZACakEEciEGIAJBwAFqQQRqIQogDCEDAkACQAJAA0AgAyALRg0BIAMoAgBBAkcNAiADQRxqIQcCQAJAIAMoAgQNACACQbABaiADQQhqENgcDAELAkACQCADQQxqKAIAIgEgA0EQaigCACIEEJEfRQ0AIAJBGGogBEEEQQhBsOGbARCXGCACQQA2ApgCIAIgAikDGDcDkAIgAkGQAmogBBDcIiACKAKYAiEDAkAgBEUNACAEIANqIQkgAigClAIgA0EDdGohAwNAIAMgAS0AADYCACADQQRqIAFBAWotAAA2AgAgAUECaiEBIANBCGohAyAEQX9qIgQNAAsgCSEDCyACIAIpA5ACNwOQAiACIAM2ApgCIAIgA0U6AJwCIAJBkAJqEPkFIAJB8AFqQQhqIgMgBkEIaigCADYCACACIAYpAgA3A/ABIAIoApACIgFBgICAgHhHDQELIAJBAjYCYAwFCyAKIAIpA/ABNwIAIApBCGogAygCADYCACACIAE2AsABIAJBsAFqIAJBwAFqENgcIAEgAigCxAEQnSoLIAchAwwACwsgAkHsAGogAkG4AWopAgA3AgAgAiACKQKwATcCZCACQQA2AmAgACACQeAAahCVDgwCCyACQQI2AmALIAIoArABIAIoArQBEJ0qIAJB4ABqEPsmIAJBADYCmAIgAkKAgICAEDcCkAIgAkGwAWogAkGQAmoQzhcgAkGQAmpBBHIhCCACQcABakEEaiEFIAwhAwJAAkACQANAIAMgC0YNASADKAIAQQJHDQIgA0EcaiEJAkAgAygCBEUNACACQbABaiADQQhqENkcIAkhAwwBCwJAAkAgA0EMaigCACIBIANBEGooAgAiBBCOH0UNACACQRBqIARBAUECQbDhmwEQlxggAkEANgKYAiACIAIpAxA3A5ACIAJBkAJqIAQQ3SIgAigCmAIhBwJAIARFDQAgAigClAIgB0EBdGohAwNAIAEoAgAiBkGAAk8NCSABQQRqKAIAIgpBgAJPDQogAyAGOgAAIANBAWogCjoAACABQQhqIQEgA0ECaiEDIAdBAWohByAEQX9qIgQNAAsLIAIgAikDkAI3A5ACIAIgBzYCmAIgAiAHRToAnAIgAkGQAmoQ7gUgAkHwAWpBCGoiAyAIQQhqKAIANgIAIAIgCCkCADcD8AEgAigCkAIiAUGAgICAeEcNAQsgAkECNgJ0DAQLIAUgAikD8AE3AgAgBUEIaiADKAIANgIAIAIgATYCwAEgAkGwAWogAkHAAWoQ2RwgASACKALEARCoKiAJIQMMAAsLIAJBgAFqIAJBuAFqKQIANwIAIAIgAikCsAE3AnggAkEBNgJ0IAAgAkH0AGoQlQ4MAgsgAkECNgJ0CyACKAKwASACKAK0ARCoKiACQfQAahD7JiACKAI4IQEgDUECSQ0FIAwoAgBBBkcNBSAMKAIMIgNFDQUgDCgCCCEIQQAhBCAMIQlBASEHA0ACQAJAIARBAXFFDQAgCSEEIAkgC0cNAQwHCyAHIAsgCWtBHG5PDQYgCSAHQRxsaiEECyAEKAIAQQZHDQYgBEEcaiEJIAQoAgwiByADIAcgA0kbIQogBCgCCCEHQQAhBCAIIQYCQANAAkAgCiAERw0AIAohAwwCCwJAIAYgBxD1BEUNACAGQRxqIQYgB0EcaiEHIARBAWohBAwBCwsgBCADSw0FIAQhAwtBACEHQQEhBCADDQAMBgsLIAJBOGoQnigMBwtByJGcAUErIAJBmAFqQYSDiAFBjISIARCjEgALQciRnAFBKyACQZgBakGEg4gBQZyEiAEQoxIACyAEIANBzNGEARCHKgALIAJBADYCoAEgAkKAgICAwAA3ApgBIAJBADYCrAEgAkKAgICAwAA3AqQBIAIgCzYCvAEgAiABNgK4ASACIAw2ArQBIAIgDDYCsAEgAkGQAmpBBGohBiACQcABakEEaiIHQRBqIQgDQAJAAkAgDCALRg0AIAIgDEEcajYCtAEgDCgCACIBQQhHDQELIAJBsAFqEKIcIAJBgAJqQQhqIAJBmAFqQQhqKAIANgIAIAIgAikDmAE3A4ACIAJBkAJqIAJBpAFqEHEgAkGAAmogAkGQAmpBjNGEARCHFCACQZACaiACQYACahDTASACQYgBakEIaiIDIAJBkAJqQRhqKAIANgIAIAIgAikCoAI3A4gBIAIoApwCIQ0gAigCmAIhDCACKAKUAiEBIAIoApACIgRBCEYNAiAAIAIpA4gBNwIQIAAgDTYCDCAAIAw2AgggACABNgIEIAAgBDYCACAAQRhqIAMoAgA2AgAMBQsgByAMKQIENwIAIAdBCGogDEEMaikCADcCACAIIAxBFGopAgA3AgAgAiABNgLAASACQZACaiACQcABahDBHiACKAKQAkEGRw0DIAJB4AFqQQhqIgkgBkEIaigCACIBNgIAIAIgBikCADcD4AEgASADSQ0CIAJBCGogASADayIBQQRBHEGc0YQBEJYYIAIgAzYC6AEgAigCCCEKIAIoAgwhBAJAIAFBHGwiC0UNACAEIAIoAuQBIANBHGxqIAv8CgAACyACIAE2AvgBIAIgBDYC9AEgAiAKNgLwASACQZACaiACQfABahDTASACQaQBaiACQZACakGs0YQBEIcUAkACQCACKAKgAQ0AIAJBmAFqEJ4oIAJBmAFqQQhqIAkoAgA2AgAgAiACKQPgATcDmAEMAQsgAkHgAWoQnigLIAIoArQBIQwgAigCvAEhCwwACwsgAiAMNgI8IAIgATYCOCACIA02AkAgAiAMIA1BHGxqNgKcAiACIAw2ApgCQQAhAyACQQA2ApACIAJBkAJqEKUVIQECQAJAIAJBkAJqEKUVIgQNAEEAIQ4MAQsgBCgCACgCACIEKAIUIQ8gBCgCECEOCyACKAKQAiEEIAIoApwCIRAgAigCmAIhDSACKAKUAiERQQEhB0EBIQZBACELQQAhCUF/QQAgARsiCCEFQQAhDEEAIRJBACETQQAhFANAQQAhCgNAIBIhFQNAIAohEgJAAkACQAJAAkAgBEEBcQ0AIA0gEEYNAiANQRhqIQEgDUEcaiENDAELIBEhASARRQ0BCyABKAIAIQEgBkEBcSEEQQAhBgJAIARFDQAgAS0AMCEGCyABKAIsIQogASgCECEEAkACQAJAIA5BAXEiFkUNACAERQ0AIA8gASgCFEcNAQwCCyAWDQAgBEUNAQtBACEOCyADIApqIQQgB0EBcSEKQQAhBwJAIApFDQAgAS0AMSEHCyABKAIoIRYgASgCJCEXIAEoAiAhGCABKAIcIRkgASgCGCEaIAQgA0khA0EBIQoCQCAUQQFxDQAgASgCACIUDQJBACETC0EBIRQMAgtBNEEEEOgkIgEgB0EBcToAMiABQQA6ADEgASAGQQFxOgAwIAEgAzYCLCABIAs2AiggASAJNgIkIAEgCDYCICABIAU2AhwgASAMNgIYIAEgDzYCFCABIA42AhAgASAbNgIMIAEgFTYCCCABIBw2AgQgASATNgIAIABBDGogAkHAAGooAgA2AgAgACACKQI4NwIEIAAgATYCGCAAQQc2AgAMBwsgEyAUIBMgASgCBCIdIBxPcSIeGyETIBwgHSAeGyEcQQAhFAsgFiALciELIBcgCXIhCSAYIAhxIQggGSAFcSEFIBogDHIhDEF/IAQgAxshA0EAIQQgEkEBcQ0AC0EBIQpBACEEQQAhEiABKAIIIhZBAUcNAAsgFSAWIBUgASgCDCIBIBtNcSIEGyESIBsgASAEGyEbQQAhBAwACwsgAyABEMgUAAtBhKScAUEoQbzRhAEQxxwACyACQbACaiQAC/siAip/An4jAEGwAmsiAiQAIAEoAgQhAyACQdABaiABKAIIIgRBCEHYABD3DiACKALUASEFAkACQAJAAkACQCACKALQAUEBRg0AIAIoAtgBIQYCQCAFRQ0AIAMgBEHYAGxqIQcgAkHQAWpBHWohCCACQdABakEwaiEJIAJB2ABqQShqIQogAkHYAGpBJGohCyACQQRyIQwgAkEIaiENIAUhDkEAIQ8DQCADIAdGDQECQAJAAkACQAJAAkACQAJAAkACQCADKAIAIgFBfGpBACABQXtqQQhJGw4JAAECAwQFBgcIAAsgAygCTCEQIAMoAjwhESADKAI4IRIgAkHYAGogAxDEBCADKAJEIRMgAkHQAWogAygCSCIUQQhBwAAQ9w4gAigC1AEhFSACKALQAUEBRg0MIAIoAtgBIRYCQCAVRQ0AIBRBBnQhF0EAIRggFSEZA0AgFyAYRg0BAkACQCATIBhqIgEoAgBBB0YNACABQShqKAIAIRogAUEsaigCACEbIAkgAUEwahDiCCACQdABaiABELoCIAJBzAFqQQJqIAhBAmotAAA6AAAgAkHAAWpBCGogCUEIaigCADYCACACIBs2AvwBIAIgGjYC+AEgAiAILwAAOwHMASACIAkpAwA3A8ABIAIoAtABIRwgAigC1AEhHSACKALYASEeIAIoAtwBIR8gAigC4AEhICACKALkASEhIAIoAugBISIgAi0A7AEhIyACKALwASEkIAIoAvQBISUgAi0AjwIhJiACLQCOAiEnIAItAI0CISggAi0AjAIhKQwBCyABQSxqKAIAIRsgAUEoaigCACEaIAJBoAFqIAFBMGoQ4gggAUE9ai0AACEoIAFBPGotAAAhKSABQT5qLQAAIScCQAJAIAFBHGoiHC0AACIjQQJHDQAgAUEUaigCACEhIAFBEGooAgAhICABQQhqKAIAIR8QtiUhHiACQdABaiAfELoCIB5BIGogAkHQAWpBIGoiIikDADcDACAeQRhqIAJB0AFqQRhqIiMpAwA3AwAgHkEQaiACQdABakEQaiIcKQMANwMAIB5BCGogAkHQAWpBCGoiJCkDADcDACAeIAIpA9ABNwMAIAFBDGooAgAhARC1JSEfIAJB0AFqIAEQQiAfQThqIAJB0AFqQThqKQMANwMAIB9BMGogCSkDADcDACAfQShqIAJB0AFqQShqKQMANwMAIB9BIGogIikDADcDACAfQRhqICMpAwA3AwAgH0EQaiAcKQMANwMAIB9BCGogJCkDADcDACAfIAIpA9ABNwMAQQIhIyAqISIMAQsgAUEIaiIkKAIAIR4gAUEUaigCACEhIAFBEGooAgAhICABQQxqKAIAIR8gAUEYaigCACEiAkAgJCkDACIsQgODQgBSDQAgLKciIyAjKAIAIiNBAWo2AgAgI0EASA0UIBwtAAAhIwsCQCABQSBqKAIAIgENAEEAISsMAQsQtyUhKyABKQIEISwgASgCACEcELglIQEgAkHQAWogHBBzAkBB4ABFDQAgASACQdABakHgAPwKAAALICsgLDcCBCArIAE2AgALIAJBwAFqQQhqIAJBoAFqQQhqKAIANgIAIAIgAikDoAE3A8ABQQchHCAiISogKyEkCyAWIBhqIgEgHDYCACABQRxqICM6AAAgAUEYaiAiNgIAIAFBFGogITYCACABQRBqICA2AgAgAUEMaiAfNgIAIAFBCGogHjYCACABQQRqIB02AgAgAUEdaiACLwHMATsAACABQR9qIAJBzAFqQQJqLQAAOgAAIAFBLGogGzYCACABQShqIBo2AgAgAUEkaiAlNgIAIAFBIGogJDYCACABQTBqIAIpA8ABNwMAIAFBOGogAkHAAWpBCGooAgA2AgAgAUE/aiAmOgAAIAFBPmogJzoAACABQT1qICg6AAAgAUE8aiApOgAAIBhBwABqIRggGUF/aiIZDQALC0GAgICAeCEiAkAgAygCIEGAgICAeEYNACADKAIkIRogAygCNCEhIAMoAjAhICADKAIsIRkgAkHQAWogAygCKCIjQQhBMBD3DiACKALUASEiIAIoAtABQQFGDQ4gAigC2AEhHgJAICINAEEAISIMAQsgI0EwbCEbQQAhGCAiIR8DQCAbIBhGDQEgAkHQAWogGiAYahBMIB4gGGoiAUEoaiACQdABakEoaikDADcDACABQSBqIAJB0AFqQSBqKQMANwMAIAFBGGogAkHQAWpBGGopAwA3AwAgAUEQaiACQdABakEQaikDADcDACABQQhqIAJB0AFqQQhqKQMANwMAIAEgAikD0AE3AwAgGEEwaiEYIB9Bf2oiHw0ACwsgDSACQdgAakEIaikDADcDACACQRBqIAJB2ABqQRBqKQMANwMAIAJBGGogAkHYAGpBGGopAwA3AwAgAiACKQNYNwMAIAIgFDYCSCACIBY2AkQgAiAVNgJAIAIgEDYCTCACIBE2AjwgAiASNgI4IAIgITYCNCACICA2AjAgAiAZNgIsIAIgIzYCKCACIB42AiQgAiAiNgIgIAIgAy8BUDsBUAwICyADKQMoISwgAkHQAWogA0EIahDEBCACQdABakEoaiIBIAMoAjAQ0gQ2AgAgAkHQAWpBIGogLDcDACANQSBqICw3AwAgDSACKQPQATcDACANQQhqIAJB0AFqQQhqKQMANwMAIA1BEGogAkHQAWpBEGopAwA3AwAgDUEYaiACQdABakEYaikDADcDACACIAMtADQ6APwBIAIgAygANTYA/QEgDUEoaiABKQMANwMAIAIgAy0AOToAgQIgDUEwaiAJKQMANwMAIAJBBTYCAAwHCyADKAIUIQEgAygCECEYIAMoAhwhHyADKAIYIR4CQCADKQMIIixCA4NCAFINACAspyIaIBooAgAiGkEBajYCACAaQX9MDQ4LIAIgAygCIBDSBDYCICACIB82AhwgAiAeNgIYIAIgATYCFCACIBg2AhAgAiAsNwMIIAJBBjYCACACIAMvASg7ASggAiADKAIkNgIkDAYLIAMoAiwhHiADKAIoIRogAkGgAWogA0EIahDEBEEAIRhBACEBAkAgAygCPCIfRQ0AELUlIQEgAkHQAWogHxBCIAFBOGogAkHQAWpBOGopAwA3AwAgAUEwaiAJKQMANwMAIAFBKGogAkHQAWpBKGopAwA3AwAgAUEgaiACQdABakEgaikDADcDACABQRhqIAJB0AFqQRhqKQMANwMAIAFBEGogAkHQAWpBEGopAwA3AwAgAUEIaiACQdABakEIaikDADcDACABIAIpA9ABNwMACwJAIAMoAkAiH0UNABC3JSEYIB8pAgQhLCAfKAIAIRsQuCUhHyACQdABaiAbEHMCQEHgAEUNACAfIAJB0AFqQeAA/AoAAAsgGCAsNwIEIBggHzYCAAsgAy0ARCEfIAogA0EwahDiCCACQdgAakEIaiACQaABakEIaikDADcDACACQdgAakEQaiACQaABakEQaikDADcDACACQdgAakEYaiACQaABakEYaikDADcDACACIB42AnwgAiAaNgJ4IAIgHzoAlAEgAiAYNgKQASACIAE2AowBIAIgAikDoAE3A1ggAiADLQBLOgCbASACIAMvAEk7AJkBIAIgAygARTYAlQECQEHIAEUNACANIAJB2ABqQcgA/AoAAAsgAkEHNgIADAULIAMoAhQhHiADKAIQIRogAygCICEbIAMoAhwhIiADKAIYISMCQCADKQMIIixCA4NCAFINACAspyIBIAEoAgAiAUEBajYCACABQX9MDQwLQQAhGEEAIQECQCADKAIkIh9FDQAQtSUhASACQdABaiAfEEIgAUE4aiACQdABakE4aikDADcDACABQTBqIAkpAwA3AwAgAUEoaiACQdABakEoaikDADcDACABQSBqIAJB0AFqQSBqKQMANwMAIAFBGGogAkHQAWpBGGopAwA3AwAgAUEQaiACQdABakEQaikDADcDACABQQhqIAJB0AFqQQhqKQMANwMAIAEgAikD0AE3AwALAkAgAygCKCIfRQ0AELclIRggHykCBCEtIB8oAgAhGRC4JSEfIAJB0AFqIBkQcwJAQeAARQ0AIB8gAkHQAWpB4AD8CgAACyAYIC03AgQgGCAfNgIACyADLQA5IR8gCyADQSxqEOIIIAJB2ABqQQhqIhkgGjYCACACQdgAakEQaiIaICM2AgAgAkHYAGpBGGoiIyAbNgIAIAJB2ABqQSBqIhsgGDYCACACQdgAakEwaiIYIAMtADg6AAAgDSAsNwMAIA1BKGogCikDADcDACACIB42AmQgDUEIaiAZKQMANwMAIAIgIjYCbCANQRBqIBopAwA3AwAgAiABNgJ0IA1BGGogIykDADcDACANQSBqIBspAwA3AwAgAiAfOgCJASACIAMoATo2AYoBIA1BMGogGCkDADcDACACICw3A1ggAkEINgIADAQLIAwgA0EEahCyCCACQQk2AgAMAwtB2ABFDQIgAiADQdgA/AoAAAwCCyADKAIIIRggAygCGCEjIAMoAhQhGSADKAIQISAgAygCICEhIAMoAhwhJyACQdABaiADKAIMIhtBCEEwEPcOIAIoAtQBIRogAigC0AFBAUYNByACKALYASEiAkAgGkUNACAbQTBsIR8gIiEBIBohHgNAIB9FDQEgAkHQAWogGBBMIAFBKGogAkHQAWpBKGopAwA3AwAgAUEgaiACQdABakEgaikDADcDACABQRhqIAJB0AFqQRhqKQMANwMAIAFBEGogAkHQAWpBEGopAwA3AwAgAUEIaiACQdABakEIaikDADcDACABIAIpA9ABNwMAIAFBMGohASAfQVBqIR8gGEEwaiEYIB5Bf2oiHg0ACwsgAiAhNgIgIAIgJzYCHCACICM2AhggAiAZNgIUIAIgIDYCECACIBs2AgwgAiAiNgIIIAIgGjYCBCACQQs2AgAMAQsgAygC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aiABEIQjDAgLIABBCGogARCJJQwHCyAAQQRqIAEQlywMBgsgAEEEaiABEOEgDAULIABBBGogARCXLAwECyAAQQRqIAEQlywMAwsgAEEEaiABEJcsDAILIABBBGogARCXLAwBCyAAQQRqIAEQlywLIAQgARCXLAwYCyAAQQhqIAEQhCMMFwsgAEEIaiABEIklDBYLIABBBGogARCXLCAAQQhqIAEQlywgAEEMaiABEJcsDBULIABBBGohBAJAIAAtABhBBUcNACAAQRBqIAEQlywLIAQgARDWHQwUCyAAQRBqIAEQlywgACgCBEGAgICAeEYNEyAAQQRqIAEQ1h0MEwsgAEEEaiABEN4eDBILIABBBGogARDeHgwRCyAAQQRqIAEQlywgACgCCCABEN4eDBALIABBBGohBAJAAkACQCABLQBFDQAgAkGAAjsAxAEgBCACQcQBahDMFiACLQDEAQ0BCyACQfAAakEAIAEoAkBBABCMDCACQfABaiEDAkBB1ABFDQAgAyACQfAAakHUAPwKAAALIAJBzAJqQQApA4D9nQEiCjcCACACQdQBaiIGIAo3AgAgAkHkAWogCjcCACACQQA6ANQCIAJBADYCxAEgAkEAOgDsASACQQApA/j8nQEiCzcCxAIgAiALNwLMASACIAs3AtwBIAJBxAFqIAQQowwgAkHYAmpBCGogBikCADcDACACIAIpAswBNwPYAiACQegCaiACQcQCahClECACQaADaiIEIAJB3AFqEKUQIAIgAkHYAmo2ApgDIAJB0ANqQQhqIAo3AwAgAiALNwPQAyACQSBqIAJB6AJqEJ4SIAJB0ANqIAIoAiAQxSUCQCACKAKIA0GBgICAeEYNAAJAQTBFDQAgAkEgaiACQegCakEw/AoAAAsCQANAIAJB4ANqIAJBIGoQuw0gAikD4AMiClANASACIAIoAugDNgL4AyACIAo3A/ADAkAgAkHYAmogAkHwA2oQsQtFDQAgAikD8AMQnh8MAQsgAkHQA2ogChC+BgwACwtCABCiKCACQSBqEM0KCwJAIAIoAsADQYGAgIB4Rg0AAkBBMEUNACACQSBqIARBMPwKAAALAkADQCACQfADaiACQSBqELsNIAIpA/ADIgpQDQEgAkHQA2ogChC+BgwACwtCABCiKCACQSBqEM0KCyACQeQAaiIEIAJB0ANq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DQELIBFCAXwhEQsgEUKAgICAgICAEFQNAQsgA0EkakEBEM8FIANBJGoQgwwhESAGQYAIakH+D0oNASAGQQFqIQYLIBFC/////////weDIRBB/gdB/wcgEUKAgICAgICACFQbIAZqIQULIABBADoAACAAIAWtQjSGIBCEvyIVmiAVIARBLUYbOQMICyADQcAMaiQAC5MgAhN/A34jAEGABGsiBCQAAkACQCADQZLYmwEQ9AwiBUUNACAAQYGAgIB4NgKQASAAIAU2AgAMAQsgA0HQAWohBgJAIAMtANgBIgVBW2oiB0ESSw0AQQEgB3RBg4AacUUNACAEQeAAaiADIAMoAtABEKAFIAZBCGogBEHgAGpBCGooAgA2AgAgBiAEKQJgNwIAIAMtANgBIQULAkACQAJAAkAgBUH/AXFBE0cNACADKALQASEHIAMoAtQBIQUgBEHgAGogAxCpAiADIAU2AswBIAMgBzYCyAEgBiAEKQJgNwIAIAZBCGogBEHgAGpBCGooAgA2AgAgBEEgaiADEKUDIAMoAtABIQgCQAJAIANB3oucARD0DCIHDQACQCADLQDYASIHQVtqIglBEksNAEEBIAl0QYOAGnFFDQAgBEHgAGogAyADKALQARCgBSAGQQhqIARB4ABqQQhqKAIANgIAIAYgBCkCYDcCACADLQDYASEHCyAEQZTYmwE2AuADIAdB/wFxQRNGDQEgAygC1AEhBSADKALQASEGIARB8AJqIAMQlyQgBEEBNgJkIARBvLecATYCYCAEQgE3AmwgBEGPBTYCxAEgBCAEQcABajYCaCAEIARB4ANqNgLAASAEQaADaiAEQeAAahDkDyAEQbQDaiAEQfgCaigCADYCACAEIAQpAvACNwKsAyAGIAUgBEGgA2oQlxkhByADLQDYAUGiAUcNACADIAMQwCkQpxYLIABBgYCAgHg2ApABIAAgBzYCACAEQSBqEKcoDAULIAJBAXENASADKALQASEJIAMoAtQBIQcgBEHgAGogAxCpAiADIAc2AswBIAMgCTYCyAEgBiAEKQJgNwIAIAZBCGogBEHgAGpBCGooAgA2AgAMAgsCQAJAIAMoAogBIgVBgMAAcUUNACADIAVB/79/cTYCiAEgBEHgAGogAxChBCADIAMoAogBQYDAAHI2AogBDAELIARB4ABqIAMQoQQLIAQo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akEYaigCADYCACAAQRBqIAEpAwA3AgAgAiAMNwPYAQwjCyADLQBlQQFHDQULIAEQgAsaIAJBjAJqIAVBCGooAgA2AgAgAkH4AWpBCGogAkEYakEIaigCADYCACACIAUpAgA3AoQCIAIgAikDGDcD+AEgBEFdaiIGQRxNDQUMCAsgAkGsAmogARCFAiACKAKsAiEBAkBBOEUNACACQaABaiACQbACakE4/AoAAAsgAUEiRg0BIAIoAugCIQMCQEE4RQ0AIABBBGogAkGgAWpBOPwKAAALIAAgAzYCPAwCCyACQawCaiABEIMLIAJBoAFqQQhqIgEgAkGsAmpBDGopAgA3AwAgAkGgAWpBEGoiAyACQawCakEUaikCADcDACACQaABakEYaiIFIAJBrAJqQRxqKQIANwMAIAIgAikCsAI3A6ABAkACQCACKAKsAiIEQSJGDQAgACACKQLQAjcCJCAAQTxqIAJBrAJqQTxqKAIANgIAIABBNGogAkGsAmpBNGopAgA3AgAgAEEsaiACQawCakEsaikCADcCACAAQRxqIAUpAwA3AgAgAEEUaiADKQMANwIAIABBDGogASkDADcCACAAIAIpA6ABNwIEDAELIAJByABqQQhqIgYgASkDADcDACACQcgAakEQaiADKQMAIgw3AwAgAkHIAGpBGGogBSkDACINNwMAIAJByABqQQxqIAJBGGpBCGooAgA2AgAgAiACKQOgATcDSCAAQYKAgIB4NgIEIABBGGogDDcCACAAQSBqIA03AgAgAiACKQMYNwJMIAAgAikDSDcCCCAAQRBqIAYpAwA3AgALIAAgBDYCAAwfCwJAQThFIgMNACACQegAaiACQaABakE4/AoAAAsgAkGMAWogAkEgaigCADYCACACIAIpAxg3AoQBIAMNACAAQQRqIAJB6ABqQTj8CgAACyAAIAE2AgAMHQsgAkGgAWogARCSDSACQZACakEUaiACQaABakEUaigCADYCACACQZACakEIaiIDIAJBGGpBCGooAgA2AgAgAiACKQKsATcCnAIgAiACKQMYNwOQAiACQcgCaiABKAIEIAEoAggQyRMgAkHcAmogAykDADcCACACQeQCaiACQaACaikDADcCACACQSA2AqwCIAIgAikDkAI3AtQCQcAARQ0cIAAgAkGsAmpBwAD8CgAADBwLQQEgBnRB65uAgAFxRQ0CDAMLAkAgAy0AZQ0AIAJBoAFqIAEQkg0gAkGQAmpBFGogAkGgAWpBFGooAgA2AgAgAkGQAmpBCGoiAyACQRhqQQhqKAIANgIAIAIgAikCrAE3ApwCIAIgAikDGDcDkAIgAkHIAmogASgCBCABKAIIEMkTIAJB3AJqIAMpAwA3AgAgAkHkAmogAkGgAmopAwA3AgAgAkEgNgKsAiACIAIpA5ACNwLUAkHAAEUNGyAAIAJBrAJqQcAA/AoAAAwbCyACQShqIAEQoQkgAkE0aiACQRhqQQhqKAIANgIAIABCooCAgKCAgICAfzcCACAAQRhqIAJBKGpBEGopAgA3AgAgAEEgaiACQShqQRhqKQIANwIAIAIgAikDGDcCLCAAIAIpAig3AgggAEEQaiACQShqQQhqKQIANwIADBoLIAJBADYCrAIgAkEUakGUw4QBIAJBrAJqQZjDhAEQjx8ACyAEQaV/akEESQ0AIARBhX9qQQRJDQACQCAEQf8ASw0AIARBUGpBCkkNACAEQb9/akEaSQ0AIARBn39qQRpJDQAgBEH9AHFBPEcNAwsgBEFEag4HDwQQBAQLDgELIAAgAikD+AE3AgwgAEEBOgAkIAAgBDYCCCAAQqKAgICggICAgH83AgAgAEEcaiACQYgCaikDADcCACAAQRRqIAJBgAJqKQMANwIADBcLAkAgBEGOf2oOCQgDBgMJAwMDCwALIARBn39qDgYDCwICAgQBCyAAIAIpA/gBNwIMIABBAjoAJCAAIAQ2AgggAEKigICAoICAgIB/NwIAIABBHGogAkGIAmopAwA3AgAgAEEUaiACQYACaikDADcCAAwVCyAEQe4ARg0ECyACQcgCaiABKAIEIAEoAggQyRMgAkHcAmogAkGAAmopAwA3AgAgAkHkAmogAkGIAmopAwA3AgAgAkELNgKsAiACIAIpA/gBNwLUAkHAAEUNEyAAIAJBrAJqQcAA/AoAAAwTCyAAIAIpA/gBNwIMIABBBjsBJCAAQQc2AgggAEKigICAoICAgIB/NwIAIABBHGogAkGIAmopAwA3AgAgAEEUaiACQYACaikDADcCAAwSCyAAIAIpA/gBNwIMIABBhgI7ASQgAEEMNgIIIABCooCAgKCAgICAfzcCACAAQRxqIAJBiAJqKQMANwIAIABBFGogAkGAAmopAwA3AgAMEQsgACACKQP4ATcCDCAAQYYEOwEkIABBCTYCCCAAQqKAgICggICAgH83AgAgAEEcaiACQYgCaikDADcCACAAQRRqIAJBgAJqKQMANwIADBALIAAgAikD+AE3AgwgAEGGBjsBJCAAQQo2AgggAEKigICAoICAgIB/NwIAIABBHGogAkGIAmopAwA3AgAgAEEUaiACQYACaikDADcCAAwPCyAAIAIpA/gBNwIMIABBhgg7ASQgAEENNgIIIABCooCAgKCAgICAfzcCACAAQRxqIAJBiAJqKQMANwIAIABBFGogAkGAAmopAwA3AgAMDgsgACACKQP4ATcCDCAAQYYKOwEkIABBCzYCCCAAQqKAgICggICAgH83AgAgAEEcaiACQYgCaikDADcCACAAQRRqIAJBgAJqKQMANwIADA0LIAAgAikD+AE3AgggAEECOgAgIABCooCAgLCAgICAfzcCACAAQRhqIAJB+AFqQRBqKQMANwIAIABBEGogAkGAAmopAwA3AgAMDAsgACACKQP4ATcCCCAAQQM6ACAgAEKigICAsICAgIB/NwIAIABBGGogAkH4AWpBEGopAwA3AgAgAEEQaiACQYACaikDADcCAAwLCyACQZACakEQaiIHIAJB+AFqQRBqKQMANwMAIAJBkAJqQQhqIgggAkH4AWpBCGopAwA3AwAgAiACKQP4ATcDkAJBBCEGIAUoAgAgASgCCCIERg0JIAEQzg9B+wBHDQkgAiABEM4PIgk2AuwCIAlB+wBHDQQgAkHwAmpBCGogBUEIaiIJKAIANgIAIAIgBSkCADcD8AIgARCcIg0DIAJBtAFqIAkoAgA2AgAgAkGgAWpBCGoiAyACQRhqQQhqKAIANgIAIAIgAikDGDcDoAEgAiAFKQIANwKsASACQcgCaiABKAIEIAQQyRMgAkHcAmogAykDADcCACACQeQCaiACQbABaikDADcCAEEeIQMgAkEeNgKsAiACIAIpA6ABNwLUAiACLQCwAiEBDAcLIAAgAikD+AE3AgggAEEFOgAgIABCooCAgLCAgICAfzcCACAAQRhqIAJB+AFqQRBqKQMANwIAIABBEGogAkGAAmopAwA3AgAMCQsgACACKQP4ATcCCCAAQQg6ACAgAEKigICAsICAgIB/NwIAIABBGGogAkH4AWpBEGopAwA3AgAgAEEQaiACQfgBakEIaikDADcCAAwICyAAIAIpA/gBNwIIIABBCToAICAAQqKAgICwgICAgH83AgAgAEEYaiACQfgBakEQaikDADcCACAAQRBqIAJBgAJqKQMANwIADAcLIAJBgANqQQhqIAkoAgA2AgAgAiAFKQIANwOAAwJAIAEQzg8iCUEtRg0AIAlB3///AHFBv39qQRpJDQAgBSACKQPwAjcCACAFQQhqIAJB8AJqQQhqKAIANgIADAYLIAJBCGogA0HAAGpBqMOEARC4ISACKAIMIQogAigCCCIJQQA2AggDQAJAAkACQAJAIAUoAgAgBEYNACABEM4PIgNBLUYNAyADQd///wBxQb9/akEaSQ0DIAUoAgAgBEYNACABEM4PQf0ARg0BCyACQbQBaiAFQQhqKAIANgIAIAJBoAFqQQhqIgMgAkHwAmpBCGooAgA2AgAgAiACKQPwAjcDoAEgAiAFKQIANwKsASACQawCakEcaiABKAIEIAQQyRMgAkHcAmogAykDADcCACACQeQCaiACQbABaikDADcCACACQRw2AqwCIAIgAikDoAE3AtQCDAELIAJBkANqQQhqIAVBCGooAgA2AgAgAiAFKQIANwOQAyABEIALGgJAIAkoAgQiCyAJKAIIIglBxc+EAUEFELYjRQ0AQQYhAwwFCwJAIAsgCUHKz4QBQQMQtiNFDQBBByEDDAULQQohAyALIAlBuMOEAUEKELYjDQQCQCALIAlBwsOEAUEIELYjRQ0AQQshAwwFCyACQaABakEIaiIDIAJBgANqQQhqKAIANgIAIAJBtAFqIAJBkANqQQhqKAIANgIAIAIgAikDgAM3A6ABIAIgAikDkAM3AqwBIAJByAJqIAEoAgQgBBDJEyACQdwCaiADKQMANwIAIAJB5AJqIAJBsAFqKQMANwIAIAJBHTYCrAIgAiACKQOgATcC1AILIAogCigCAEEBajYCAAwECyAJIAEQzg8QwBYgARCcIhoMAAsLIAJBADYCoAEgAkHsAmpBmIWZASACQaABakHMw4QBEI8fAAsgAkEiNgKsAiACIAM6ALACIAogCigCAEEBajYCAAsgAi0AsAIhASACKAKsAiIDQSJGDQELAkBBO0UNACAAQQVqIAJBrAJqQQVqQTv8CgAACyAAIAE6AAQgACADNgIADAILIAFB/wFxQQxGDQAgAkGkAmogBUEIaigCADYCACACIAUpAgA3ApwCIAEhBgsgACACKQOQAjcCCCAAIAY6ACAgAEKigICAsICAgIB/NwIAIABBGGogBykDADcCACAAQRBqIAgpAwA3AgALIAJBoANqJAAL/B4BE38jAEGAAmsiAyQAAkACQAJAAkACQAJAAkACQCACKAIAIgQgAigCBCIFSw0AIAEtAOACRSACLQARciEGAkACQAJAIAItABANACABKAI8IgdFDQQgBkEBcQ0FQQAhCAJAIAEoAtgCIglFDQAgCSABKALUAksNACADQcgBaiABIAkQ9SMgAyADKQPIATcC3AEgA0HAAWogA0HcAWpBABC5FUEBIQggAygCwAFBAXFFDQIgAygCxAEhByADQdABaiAHIAQgAUE0aigCACABQThqKAIAIAdB/L2DARCIIygCAGsgBBDYFiABKAI8IQcLIANB3AFqIAcgAUHAAGoiCigCACILKAIIQX9qQXhxakEIaiACKAIIIgYgAigCDCIMIAQgBSALKAIQERIAIAMoAtwBIgIOAwcGCAcLQQAhCgJAIAEoAtwCIglFDQBBACEKIAkgASgC1AJLDQAgA0EoaiABIAkQ9SMgAyADKQMoNwLcASADQSBqIANB3AFqQQAQuRVBASEKIAMoAiBBAXFFDQIgAygCJCEHIANB0AFqIAcgBCABQTRqKAIAIAFBOGooAgAgB0H8vYMBEIgjKAIAayAEENgWIAZBAXFFDQAgA0HQAWohCwwJCyACKAIMIg0gBCANIARLGyEOIAFByABqIQ8gAigCCCEQIAFBCGohESABQQRqIQwgAUE4aiESIAFBNGohEyABQSBqIQggAUEcaiEUIAQhBwNAIANB0AFqIQsgByAFRg0JAkACQAJAIAcgDkYNACAQIAdqLQAAIQICQAJAIAwoAgAgESgCACAJQdSRhAEQiSMoAgQiFUUNACAUKAIAIAgoAgAgFSAPIAJqLQAAakHkkYQBEIgjKAIAIQkMAQsgA0EYaiABIAkQ9CMgAyADKQMYNwLsAQNAIANB9AFqIANB7AFqEP8SIAMtAPQBQQFHDQ4gAiADLQD1ASIJSw0ACyACIAlHDQ0gAygA9gEhCQsgCUEBRg0MIAkgASgC0AJLDQIgCUUNDCAJIAEoAtQCSw0CIANBEGogASAJEPUjIAMgAykDEDcC9AEgA0EIaiADQfQBakEAELkVIAMoAghBAXFFDQEgAygCDCECIANB3AFqIAIgB0EBaiILIBMoAgAgEigCACACQfy9gwEQiCMoAgBrIAsQ2BYgAygC3AEgBEsNAiADQdABakEIaiADQdwBakEIaigCADYCACADIAMpAtwBNwPQAUEBIQogBkEBcUUNAiADQdwBaiELDAwLIA4gDUGsn4ABEMAUAAtBjL6DARD4KQALIAdBAWohBwwACwtBjL6DARD4KQALQYy+gwEQ+CkACyAAQQA2AgAMBgsCQAJAAkACQAJAAkAgBkEBcQ0AQQAhDwJAIAEoAtgCIglFDQBBACEPIAkgASgC1AJLDQAgA0H4AGogASAJEPUjIAMgAykDeDcC3AEgA0HwAGogA0HcAWpBABC5FUEBIQ8gAygCcEEBcUUNBCADKAJ0IQcgA0HcAWogByAEIAFBNGooAgAgAUE4aigCACAHQfy9gwEQiCMoAgBrIAQQ2BYLIAIoAgwiDSAEIA0gBEsbIQwgAUHIAGohBiACKAIIIQogAUEIaiELIAFBBGohFSABQThqIQggAUE0aiEUIAFBIGohECABQRxqIRECQANAIAQgBUYNASAEIAxGDQQgBiAKIARqLQAAIgJqIQ4gCSEHAkADQAJAAkACQCAVKAIAIAsoAgAgB0HUkYQBEIkjKAIEIglFDQAgESgCACAQKAIAIAkgDi0AAGpB5JGEARCIIygCACEJDAELIANB6ABqIAEgBxD0IyADIAMpA2g3AvQBA0AgA0HQAWogA0H0AWoQ/xIgAy0A0AFBAUcNAiACIAMtANEBIglLDQALIAIgCUcNASADKADSASEJCyAJQQFHDQILIBUoAgAgCygCACAHQay4gAEQiSMoAgwhBwwACwsCQCAJIAEoAtACSw0AIAlFDQIgCSABKALUAksNACADQeAAaiABIAkQ9SMgAyADKQNgNwLQASADQdgAaiADQdABakEAELkVIAMoAlhBAXFFDQQgAygCXCECQQEhDyADQdwBaiACIARBAWoiByAUKAIAIAgoAgAgAkH8vYMBEIgjKAIAayAHENgWCyAEQQFqIQQMAAsLIAAgAykC3AE3AgQgACAPNgIAIABBDGogA0HkAWooAgA2AgAMCwsCQAJAIAEoAtgCIglFDQAgCSABKALUAksNACADQdAAaiABIAkQ9SMgAyADKQNQNwLcASADQcgAaiADQdwBakEAELkVIAMoAkhBAXFFDQEgAygCTCECIANB3AFqIAIgBCABQTRqKAIAIAFBOGooAgAgAkH8vYMBEIgjKAIAayAEENgWDAULIAIoAgwiCCAEIAggBEsbIQYgAUHIAGohCiACKAIIIQ8gAUEIaiELIAFBBGohFSABQSBqIRAgAUEcaiERA0BBACEMIAQgBUYNBgJAAkAgBCAGRg0AIAogDyAEai0AACICaiEOIAkhBwNAAkACQAJAIBUoAgAgCygCACAHQdSRhAEQiSMoAgQiCUUNACARKAIAIBAoAgAgCSAOLQAAakHkkYQBEIgjKAIAIQkMAQsgA0HAAGogASAHEPQjIAMgAykDQDcC0AEDQCADQdwBaiADQdABahD/EiADLQDcAUEBRw0CIAIgAy0A3QEiCUsNAAsgAiAJRw0BIAMoAN4BIQkLIAlBAUcNAwsgFSgCACALKAIAIAdBrLiAARCJIygCDCEHDAALCyAGIAhBrJ+AARDAFAALAkAgCSABKALQAksNACAJRQ0HIAkgASgC1AJLDQAgA0E4aiABIAkQ9SMgAyADKQM4NwLcASADQTBqIANB3AFqQQAQuRUCQCADKAIwQQFxRQ0AIAMoAjQhAiADQdwBaiACIARBAWoiCSABQTRqKAIAIAFBOGooAgAgAkH8vYMBEIgjKAIAayAJENgWDAcLQYy+gwEQ+CkACyAEQQFqIQQMAAsLQYy+gwEQ+CkAC0GMvoMBEPgpAAsgDCANQayfgAEQwBQAC0GMvoMBEPgpAAsgACADKQLcATcCBCAAQQxqIANB5AFqKAIANgIAQQEhDAsgACAMNgIADAULAkACQAJAAkAgASgC2AIiCUUNACAJIAEoAtQCSw0AIANBoAFqIAEgCRD1IyADIAMpA6ABNwLcASADQZgBaiADQdwBakEAELkVIAMoApgBQQFxRQ0BIAMoApwBIQIgA0HQAWogAiAEIAFBNGooAgAgAUE4aigCACACQfy9gwEQiCMoAgBrIAQQ2BYgAEEBNgIAIABBDGogA0HYAWooAgA2AgAgACADKQLQATcCBAwICyADQdwBaiAHIAFBwABqIg8oAgAiCygCCEF/akF4cWpBCGogAigCCCIGIAIoAgwiDCAEIAUgCygCEBESAAJAIAMoAtwBIgIOAwMCAAMLIAFByABqIQogAygC4AEhAiABQQhqIQsgAUEEaiEVIAFBIGohECABQRxqIREDQAJAIAIiBCAFSQ0AIABBADYCAAwJCwJAAkAgBCAMTw0AIAogBiAEai0AACICaiEOIAkhBwNAAkACQAJAIBUoAgAgCygCACAHQdSRhAEQiSMoAgQiCUUNACARKAIAIBAoAgAgCSAOLQAAakHkkYQBEIgjKAIAIQkMAQsgA0GQAWogASAHEPQjIAMgAykDkAE3AvQBA0AgA0HcAWogA0H0AWoQ/xIgAy0A3AFBAUcNAiACIAMtAN0BIglLDQALIAIgCUcNASADKADeASEJCyAJQQFHDQMLIBUoAgAgCygCACAHQay4gAEQiSMoAgwhBwwACwsgBCAMQayfgAEQwBQACwJAIAkgASgC0AJLDQACQCAJRQ0AAkACQCAJIAEoAtQCSw0AIANBiAFqIAEgCRD1IyADIAMpA4gBNwLcASADQYABaiADQdwBakEAELkVIAMoAoABQQFxDQFBjL6DARD4KQALIANB3AFqIAEoAjwgDygCACICKAIIQX9qQXhxakEIaiAGIAwgBCAFIAIoAhAREgACQCADKALcAUUNACADKALgASICIARLDQQMAwsgAEEANgIADAsLIAMoAoQBIQIgA0HQAWogAiAEQQFqIgkgAUE0aigCACABQThqKAIAIAJB/L2DARCIIygCAGsgCRDYFiAAQQE2AgAgAEEMaiADQdgBaigCADYCACAAIAMpAtABNwIEDAoLIABBADYCAAwJCyAEQQFqIQIMAAsLQYy+gwEQ+CkACyAAIAMpAuABNwIEIABBDGogA0HcAWpBDGooAgA2AgALIAAgAjYCAAwECyAAIAMpAuABNwIEIABBDGogA0HcAWpBDGooAgA2AgALIAAgAjYCAAwCCyABQcgAaiEPIAMoAuABIQIgAUEIaiELIAFBBGohFSABQThqIRQgAUE0aiENIAFBIGohECABQRxqIRECQANAAkACQAJAIAIiBCAFTw0AAkACQCAEIAxPDQAgDyAGIARqLQAAIgJqIQ4gCSEHA0ACQAJAAkAgFSgCACALKAIAIAdB1JGEARCJIygCBCIJRQ0AIBEoAgAgECgCACAJIA4tAABqQeSRhAEQiCMoAgAhCQwBCyADQbgBaiABIAcQ9CMgAyADKQO4ATcC9AEDQCADQdwBaiADQfQBahD/EiADLQDcAUEBRw0CIAIgAy0A3QEiCUsNAAsgAiAJRw0BIAMoAN4BIQkLIAlBAUcNAwsgFSgCACALKAIAIAdBrLiAARCJIygCDCEHDAALCyAEIAxBrJ+AARDAFAALAkAgCSABKALQAksNACAJRQ0FAkAgCSABKALUAksNACADQbABaiABIAkQ9SMgAyADKQOwATcC3AEgA0GoAWogA0HcAWpBABC5FSADKAKoAUEBcQ0EQYy+gwEQ+CkACyADQdwBaiABKAI8IAooAgAiAigCCEF/akF4cWpBCGogBiAMIAQgBSACKAIQERIAIAMoAtwBRQ0CIAMoAuABIgIgBEsNBAsgBEEBaiECDAMLIAAgAykC0AE3AgQgACAINgIAIABBDGogA0HYAWooAgA2AgAMBQsgAEEANgIADAQLIAMoAqwBIQdBASEIIANB0AFqIAcgBEEBaiICIA0oAgAgFCgCACAHQfy9gwEQiCMoAgBrIAIQ2BYMAAsLIAAgAykC0AE3AgQgACAINgIAIABBDGogA0HYAWooAgA2AgAMAQsgACAKNgIAIAAgCykCADcCBCAAQQxqIAtBCGooAgA2AgALIANBgAJqJAALoCMCA38BfiMAQdAAayIDJAAgAyACNgIYQcGpnAEhBEEBIQUCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAUH/AXEOpAGoAQABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHQwNDh4fICEi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NCADQQI2AjwgA0HYmZoBNgI4IANCATcCRCADQawCrUIghiADQTRqrYQ3AyAgAyADQSBqNgJAIAAgA0E4ahCKDgwQCyACRQ0JIAIoAgBBfmpBBk0NCSADQQhqIAJBEGoQnBUgAygCDCEFIAMoAgghBAwOCyACRQ0JIAIoAgBBAkcNCSADIAJBCGo2AjQgA0ECNgI8IANBlJqaATYCOCADQgE3AkQgA0GsAq1CIIYgA0E0aq2ENwMgIAMgA0EgajYCQCAAIANBOGoQig4MDgsgAkUNCSACKAIAQQRHDQkgAyACQRBqNgI0IANBAjYCPCADQcCamgE2AjggA0IBNwJEIANBrAKtQiCGIANBNGqthDcDICADIANBIGo2AkAgACADQThqEIoODA0LIAJFDQkgAigCAEECRw0JIANBEGogAkEIahCcFSADKAIUIQUgAygCECEEDAsLIAJFDQkgAigCAEEIRw0JIAMgAkEEajYCNCADQQI2AjwgA0GQm5oBNgI4IANCATcCRCADQaUCrUIghiADQTRqrYQ3AyAgAyADQSBqNgJAIAAgA0E4ahCKDgwLCyADQQE2AkwgA0H0l5oBNgJIIANBATYCPCADQfiYmwE2AjggA0EBNgJEIANBtQKtQiCGIANBGGqthDcDICADIANBIGo2AkAgA0E4akGMmJoBELUhAAsgA0EBNgJMIANB9JeaATYCSCADQQE2AjwgA0H4mJsBNgI4IANBATYCRCADQbUCrUIghiADQRhqrYQ3AyAgAyADQSBqNgJAIANBOGpByJiaARC1IQALIANBATYCTCADQfSXmgE2AkggA0EBNgI8IANB+JibATYCOCADQQE2AkQgA0G1Aq1CIIYgA0EYaq2ENwMgIAMgA0EgajYCQCADQThqQYCZmgEQtSEACyADQQE2AkwgA0H0l5oBNgJIIANBATYCPCADQfiYmwE2AjggA0EBNgJEIANBtQKtQiCGIANBGGqthDcDICADIANBIGo2AkAgA0E4akG4mZoBELUhAAsgA0EBNgJMIANB9JeaATYCSCADQQE2AjwgA0H4mJsBNgI4IANBATYCRCADQbUCrUIghiADQRhqrYQ3AyAgAyADQSBqNgJAIANBOGpB6JmaARC1IQALIANBATYCTCADQfSXmgE2AkggA0EBNgI8IANB+JibATYCOCADQQE2AkQgA0G1Aq1CIIYgA0EYaq2ENwMgIAMgA0EgajYCQCADQThqQfiZmgEQtSEACyADQQE2AkwgA0H0l5oBNgJIIANBATYCPCADQfiYmwE2AjggA0EBNgJEIANBtQKtQiCGIANBGGqthDcDICADIANBIGo2AkAgA0E4akGkmpoBELUhAAsgA0EBNgJMIANB9JeaATYCSCADQQE2AjwgA0H4mJsBNgI4IANBATYCRCADQbUCrUIghiADQRhqrYQ3AyAgAyADQSBqNgJAIANBOGpB0JqaARC1IQALIANBATYCTCADQfSXmgE2AkggA0EBNgI8IANB+JibATYCOCADQQE2AkQgA0G1Aq1CIIYgA0EYaq2ENwMgIAMgA0EgajYCQCADQThqQeCamgEQtSEACyADQQE2AkwgA0H0l5oBNgJIIANBATYCPCADQfiYmwE2AjggA0EBNgJEIANBtQKtQiCGIANBGGqthDcDICADIANBIGo2AkAgA0E4akGgm5oBELUhAAsgA0E4aiAFQQFBARD3DiADKAI8IQEgAygCOEEBRg0BIAMoAkAhAgJAIAVFDQAgAiAEIAX8CgAACyAAIAU2AgggACACNgIEIAAgATYCAAsgA0HQAGokAA8LIAEgAygCQEHgtJwBEMEmAAvVHwIKfwJ+IwBB0ANrIgYkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAA0ACQAJAIAMNAEEAIQMMAQsgAigCAA0AIANBAnQhB0EAIQhBACEJA0AgByAIRg0VAkAgAiAIaigCAA0AIAhBBGohCCAJQQFqIQkMAQsLIAZB8ABqIAkgAiADQeCaggEQmSAgBigCdCEDIAYoAnAhAiAGQegAaiAJIAAgAUHwmoIBEJogIAYoAmwhASAGKAJoIQALAkACQCAFDQBBACEFDAELIAQoAgANACAFQQJ0IQdBACEIQQAhCQNAIAcgCEYNFQJAIAQgCGooAgANACAIQQRqIQggCUEBaiEJDAELCyAGQeAAaiAJIAQgBUGAm4IBEJkgIAYoAmQhBSAGKAJgIQQgBkHYAGogCSAAIAFBkJuCARCaICAGKAJcIQEgBigCWCEACyADIAUgAyAFSxshByAEIAIgAyAFSSIIGyEKIAIgBCAIGyECIAMgBSAIGyIDQSFJDQMCQAJAIANBAXQgB00NACADQYECTw0BIAZBuANqIAIgAyADQQF2IghBkJyCARCEFCAGKAK8AyEEIAYoArgDIQUgBigCwAMhCyAGKALEAyECIAZBuANqIAogByAIQaCcggEQhBQgBigCvAMhByAGKAK4AyEKIAYoAsADIQwgBkGoA2ogAiAGKALEAyINakEBaiIOQbCcggEQ2RUgBigCrAMgBigCsAMgCyACIAwgDRCHASAGQagDahCcDCAGQShqIAggACABQcCcggEQmiAgBigCKCAGKAIsIAYoAqwDIgkgBigCsAMiDxD4CiAGQSBqIANB/gNxIAAgAUHQnIIBEJogIAYoAiAgBigCJCAJIA8Q+AogBkEANgKwAyAGQagDaiAOEIUUIAYoAqwDIAYoArADIAUgBCAKIAcQhwEgBkGoA2oQnAwgACABIAYoAqwDIgkgBigCsAMiAxD4CiAGQRhqIAggACABQeCcggEQmiAgBigCGCAGKAIcIAkgAxD4CiAGQbgDaiALIAIgBSAEEPsGIAYoAsQDIQsgBigCwAMhAiAGKAK8AyEEIAYtALgDIQUgBkG4A2ogDCANIAogBxD7BiAGKALEAyEKIAYoAsADIQMgBigCvAMhByAFIAYtALgDEJAaQf8BcQ4DAwoEAwsgBkG4A2ogCiAHIAdBAXYiCEGQnYIBEIQUIAYoAsQDIQUgBigCwAMhBCAAIAEgAiADIAYoArgDIAYoArwDEIcBIAZB0ABqIAggACABQaCdggEQmiAgBigCVCEBIAYoAlAhAAwBCwsgBkH4AGogAiAHQQNuQQFqIgUgAyAFIANJGyIIEOoRIAUgAyAIayIJIAUgCUkbIgQgCGoiCSADSw0DIAZBiAFqIAIgCEECdGogBBDqESAGQcgAaiAJIAIgA0Gwm4IBEJkgIAZBmAFqIAYoAkggBigCTBDqESAHRQ0EIAZBqAFqIAogBRDqESAFIAcgBWsiCCAFIAhJGyICIAVqIgggB0sNBSAGQbgBaiAKIAVBAnRqIAIQ6hEgBkHAAGogCCAKIAdB4JuCARCZICAGQcgBaiAGKAJAIAYoAkQQ6hEgBkHYAWogBkH4AGogBkGYAWoQiAsgBkHoAWogBkGoAWogBkHIAWoQiAsgBkH4AWogBkHYAWogBkGIAWoQrAogBkGIAmogBkHoAWogBkG4AWoQrAogBkGYAmogBkH4AGogBkGoAWoQuQ4gBkGoAmogBkGYAWogBkHIAWoQuQ4gBkGoA2ogBkHYAWogBkGIAWoQjgggBkG4A2ogBkHoAWogBkG4AWoQjgggBkG4AmogBkGoA2ogBkG4A2oQiQsgBkHIAmogBkH4AWogBkGIAmoQuQ4gBkG4A2ogBkH4AWogBkGYAWoQjgggBkGoA2ogBkG4A2oQxhsgBkGIA2ogBkGoA2ogBkH4AGoQuQcgBkG4A2ogBkGIAmogBkHIAWoQjgggBkGoA2ogBkG4A2oQxhsgBkG4A2ogBkGoA2ogBkGoAWoQuQcgBkHYAmogBkGIA2ogBkG4A2oQiQsgBkG4A2ogBkHYAmogBkG4AmoQ0QcgBigCwAMiB0ECdCEIIAYtAMQDIQpBACECIAYoArwDIQQgBigCuAMhCwJAA0AgCEUNASAIQXxqIgggBGoiCSAJKAIAIglBEHYiAyADIAJBEHRyQQNuIgJBA2xrQRB0IAlB//8DcXIiCUEDbiIDIAJBEHRyNgIAIAkgA0EDbGshAgwACwsgBkGoA2pBCGoiCCAHNgIAIAYgBDYCrAMgBiALNgKoAyAGQagDahCcDCAGQYgDakEIaiAIKAIANgIAIAYgBikCqAM3A4gDIAZB6AJqIAogBkGIA2oQ2hYgBkG4A2ogBkG4AmogBkHIAmoQ0QcgBkH4AmogBkG4A2oQlQogBkGIA2ogBkHIAmogBkGYAmoQ0QcgBigC7AIhCCAGKALoAiECIAYtAPQCIglBAUcNBiAGQbgDaiAGQYgDahCzJAwQCyAGQQhqIAggACABQfCcggEQmiAgBigCCCAGKAIMIAIgCyADIAoQhwEMBgsgBkEANgKwAyAGQagDaiAOEIUUIAYoAqwDIAYoArADIAIgCyADIAoQhwEgBkGoA2oQnAwgBkEQaiAIIAAgAUGAnYIBEJogIAYoAhAgBigCFCAGKAKsAyIJIAYoArADEP0HDAULIAIgA0ECdGohDEEAIQMDQCACIAxGDRAgBiADIAAgAUGwnYIBEJogIANBAWohAyACKAIAIQkgBigCBCEIIAYoAgAhBCACQQRqIgUhAiAJRQ0AIAZBuANqIAQgCCAHQZCaggEQgxQgByAGKAK8AyIIIAcgCEkbIQIgBigCxAMhBCAGKALAAyELIAYoArgDIQggCa0hEEIAIREgCiEJAkADQCACRQ0BIAggESAINQIAfCAJNQIAIBB+fCIRPgIAIBFCIIghESACQX9qIQIgCUEEaiEJIAhBBGohCAwACwsgBiARPgK4AyAGIAsgBCAGQbgDahDQCyIINgKoAwJAIAgNACAFIQIMAQsLIAZCADcCxAMgBkKBgICAwAA3ArwDIAZByJqCATYCuAMgBkGoA2ogBkG4A2oQ/B4ACyAJIANBoJuCARCHKgALIAVBAEHAm4IBEIcqAAsgCCAHQdCbggEQhyoACyAGLQCUAyIDDgMBCAIBCyAHIAMQmiogBCACEJoqIAYoAqgDIAkQmioMCgsgCUUNAQwCCyAJRQ0BCyAGKAKMAyIJIAYoApADIgQgCCAGKALwAhC1HkH/AXEOAgIDAQsgBkG4A2pBCGogBkHoAmpBCGooAgA2AgAgBiAGKQLoAjcDuAMgBkGoA2ogBkG4A2ogBigCjAMgBigCkAMQ5gogBkG4A2ogAyAGQagDahDaFgwFCyAGQbgDakEIaiAGQegCakEIaigCADYCACAGIAYpAugCNwO4AyAGQagDaiAGQbgDaiAJIAQQmCAgBkG4A2pBAiADayAGQagDahDaFgwECyAGQcADakEAKQL0mIIBNwMAIAZBACkC7JiCATcDuAMMAgsgBkG4A2pBCGogBkHoAmpBCGooAgA2AgAgBiAGKQLoAjcDuAMgBkGoA2ogCSAEIAZBuANqEMIFIAZBuANqIAMgBkGoA2oQ2hYMAgsgBkG4A2pBCGogBkHoAmpBCGooAgA2AgAgBkG4A2pBD2ogBkHoAmpBD2otAAA6AAAgBiAGKQLoAjcDuAMgBiAGLwD1AjsAxQMgBiAJRUEBdDoAxAMMAQsgAiAIEJoqCyAGQagDaiAGQbgDahCVCiAGLQC0AiEIAkACQCAGKAKwAkUNACAGQYCAgIB4NgK4AyAGIAZBqAJqNgK8AyAGQZwDaiAGQbgDakEAQQEQnAcMAQsgBkGAgICAeDYCuAMgBiAGQagCajYCvAMgBkGcA2ogBkG4A2oQxxsLIAZBuANqIAggBkGcA2oQ2hYgBkHoAmogBkGoA2ogBkG4A2oQjgggBkGoA2ogBkH4AmogBkGoAmoQrAogBkGQA2oiAigCACEEIAZBiANqQQ9qLQAAIQkgBi0AlAMhCCAGLwCVAyEDIAJBACkC9JiCATcDACAGQZoDaiIHIAk6AAAgBigCiAMhCSAGKAKMAyECIAZBACkC7JiCATcDiAMgBiADOwGYAwJAAkAgBi0AtAMiA0EBRw0AIAZBuANqQQ9qIActAAA6AAAgBiAIOgDEAyAGIAQ2AsADIAYgAjYCvAMgBiAJNgK4AyAGIAYvAZgDOwDFAwwBCwJAAkACQAJAAkACQAJAAkACQCAIDgMBAwABCyADRQ0BDAcLIANFDQYLIAIgBCAGKAKsAyIHIAYoArADIgoQtR5B/wFxDgICAwELIAZBuANqIAZBqANqELMkDAMLIAYgBDYCwAMgBiACNgK8AyAGIAk2ArgDIAZBnANqIAcgCiAGQbgDahDCBSAGQbgDaiADIAZBnANqENoWDAQLIAZBwANqQQApAvSYggE3AwAgBkEAKQLsmIIBNwO4AwwBCyAGIAQ2AsADIAYgAjYCvAMgBiAJNgK4AyAGQZwDaiAGQbgDaiAHIAoQmCAgBkG4A2ogCCAGQZwDahDaFgwCCyAJIAIQmioMAQsgBiAENgLAAyAGIAI2ArwDIAYgCTYCuAMgBkGcA2ogBkG4A2ogBigCrAMgBigCsAMQ5gogBkG4A2ogCCAGQZwDahDaFgtBAEEEEJoqIAZBiANqQQhqIAZBuANqQQhqIgIpAwA3AwAgBiAGKQO4AzcDiAMgBigCqAMgBigCrAMQmiogBkH4AmpBCGoiCCkDACERIAhBACkC9JiCATcDACAGQagDakEIaiARNwMAIAYpA/gCIREgBkEAKQLsmIIBNwP4AiAGIBE3A6gDIAZBuANqIAZBqANqIAZB6AJqENEHQQBBBBCaKiAIIAIpAgA3AwAgBiAGKQK4AzcD+AIgBiAGQagCajYCyAMgBiAGQegCajYCxAMgBiAGQYgDajYCwAMgBiAGQfgCajYCvAMgBiAGQZgCajYCuANBECEIA0ACQAJAAkACQCAIQXxGDQAgCEECdiECIAZBuANqIAhqIgkoAgAtAAwOAwEDAgELIAYoAogDIAYoAowDEJoqIAYoAvgCIAYoAvwCEJoqIAYoAugCIAYoAuwCEJoqIAYoAqgCIAYoAqwCEJoqIAYoApgCIAYoApwCEJoqDAQLIAZBMGogAiAFbCAAIAFB8JuCARCaICAGKAIwIAYoAjQgCSgCACICKAIEIAIoAggQ/QcMAQsgBkE4aiACIAVsIAAgAUGAnIIBEJogIAYoAjggBigCPCAJKAIAIgIoAgQgAigCCBD4CgsgCEF8aiEIDAALCyAGQdADaiQAC+UbAhR/AX4jAEEgayIBJAAgAEE8aiECIABBMGohAwNAIAFBADoAFCABQQA2AhAgASAAKAJoIgQ2AgggASAAKAJsIgUgBGsiBjYCDAJAIAUgBEYNACAEQQFqIQdBACEIAkACQAJAA0ACQCAEIAhqLQAAIglBIEcNACAIIQUDQAJAIAVBAWoiCCAGSQ0AIAEtABQhBSAGIQgMBAsgByAFaiEJIAghBSAJLQAAIglBIEYNAAsLAkACQAJAAkAgCUF2ag4EAAICAQILIAFBAToAFCAIQQFqIgggBkkNAyABLQAUIQUMBAsCQAJAIAhBAWoiBSAGSQ0AIAUhCAwBCyAIQQJqIAUgBCAFai0AAEEKRhshCAsgAUEBOgAUIAggBkkNAgwBCyABIAg2AhAgCUECdEHA+pkBaigCACIFRQ0AIAFBCGogBREEACEFIAEoAhAhCCAFRQ0AIAggBWoiCCAGSQ0BCwsgAS0AFCEFIAhFDQELIAAgACgCeCAIaiIINgJ4IAAgACgCcCIJIAAoAnRqNgJsIAAgCSAIIAAoAnxrajYCaCAFQQFxDQEMAgsgBUEBcUUNAQsgAEEBOgAoCwJAAkACQCAAKAJsIgggACgCaCIFRg0AIAUtAABBL0cNACAFQQFqIgkgCEYNAAJAAkAgCSwAACIIQX9MDQAgCEH/AXEhBQwBCyAFLQACQT9xIQkgCEEfcSEGAkAgCEFfSw0AIAZBBnQgCXIhBQwBCyAJQQZ0IAUtAANBP3FyIQkCQCAIQXBPDQAgCSAGQQx0ciEFDAELIAlBBnQgBS0ABEE/cXIgBkESdEGAgPAAcXIhBQsCQAJAIAVBVmoOBgECAgICAAILIABBAhCuAgwECyAAIAAoAngiCkECaiILNgJ4IAAgACgCcCIMIAAoAnQiDWoiDjYCbCAAIAwgCyAAKAJ8Ig9rIhBqIhE2AmggDSAQRg0BIAAtACghEiANIBBrIQdBACETIBEhCQJAA0ACQCAHDQBBACEHDAILQQAhCANAAkAgCCIFIAcgBUEgaiIEIAcgBEkbIghPDQACQANAIAkgBWotAAAiBkGAjJoBai0AAA0BIAggBUEBaiIFRg0CDAALCwJAAkAgBkHiAUcNACAFQQFqIQgCQCAFQQJqIgYgB08NAAJAIAggB08NACAJIAZqLQAAQQh0IAkgCGotAAByQYACckH//wNxQYDTAkcNAUHiASEGDAILIAggB0GAjpoBEMAUAAsCQCAIRQ0AIAAgDjYCbCAAIAsgCGoiCzYCeCAAIAwgCyAPa2oiCTYCaAsgDiAJayEHIA4gCUcNBAwBCwJAAkAgBQ0AIAkhBQwBCyAAIA42AmwgACALIAVqIgs2AnggACAMIAsgD2tqIgU2AmgLAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAZBdmoOBAMBAQQACyAGQSpGDQELIAVBAWohCSAFLAAAIghBf0oNCCAJLQAAQT9xIQcgCEEfcSEGAkACQAJAAkAgCEFfTQ0AIAdBBnQiByAFLQACQT9xciEJIAZBDHQhBCAIQXBJIghFDQEgCSAEciEUDAILIAAgBUECaiIJNgJoIAZBBnQgB3IiBUH+D3FBqMAARiATciETDAILIAlBBnQgBS0AA0E/cXIgBkESdEGAgPAAcXIhFAsgACAFQQNqIgk2AmggByAFLQACQT9xciEHIBRB/v//AHFBqMAARiATciETAkAgCEUNACAHIARyIQUMAQsgACAFQQRqIgk2AmggB0EGdCAFLQADQT9xciAGQRJ0QYCA8ABxciEFCwJAIAVBgAFPDQBBASALaiELDAwLAkAgBUGAEE8NAEECIAtqIQsMDAtBA0EEIAVBgIAESRsgC2ohCwwLCyAFIQgCQCAFIA5GDQACQCAFLAAAIghBf0wNACAFQQFqIQgMAQsCQCAIQWBPDQAgBUECaiEIDAELIAVBBEEDIAhBb0sbaiEICwJAIAggDkYNAAJAAkAgCCwAACIJQX9MDQAgCUH/AXEhCAwBCyAILQABQT9xIQYgCUEfcSEHAkAgCUFfSw0AIAdBBnQgBnIhCAwBCyAGQQZ0IAgtAAJBP3FyIQYCQCAJQXBPDQAgBiAHQQx0ciEIDAELIAZBBnQgCC0AA0E/cXIgB0ESdEGAgPAAcXIhCAsgCEEvRg0GC0EBIQggACAFQQFqIgk2AmggBSwAACIGQX9KDQQgACAFQQJqIgk2AmggBS0AAUE/cSEHIAZBH3EhBCAGQWBPDQIgBEEGdCAHciEFDAMLQQEhEyAAIAVBAWoiCTYCaEEBIQgCQCAFLAAAIgZBf0oNACAAIAVBAmoiCTYCaCAFLQABQT9xIQcgBkEfcSEIAkACQCAGQWBPDQAgCEEGdCAHciEFDAELIAAgBUEDaiIJNgJoIAdBBnQgBS0AAkE/cXIhBwJAIAZBcE8NACAHIAhBDHRyIQUMAQsgACAFQQRqIgk2AmggB0EGdCAFLQADQT9xciAIQRJ0QYCA8ABxciEFCwJAIAVBgAFPDQBBASALaiELDAsLQQIhCCAFQYAQSQ0AQQNBBCAFQYCABEkbIQgLIAggC2ohCwwJC0EBIQkgACAFQQFqIgg2AmgCQCAFLAAAIgZBf0oNACAAIAVBAmoiCDYCaCAFLQABQT9xIQQgBkEfcSEHAkACQCAGQWBPDQAgB0EGdCAEciEFDAELIAAgBUEDaiIINgJoIARBBnQgBS0AAkE/cXIhBAJAIAZBcE8NACAEIAdBDHRyIQUMAQsgACAFQQRqIgg2AmggBEEGdCAFLQADQT9xciAHQRJ0QYCA8ABxciEFCyAFQYABSQ0AQQIhCSAFQYAQSQ0AQQNBBCAFQYCABEkbIQkLIAAgCSALaiILNgJ4IAghBQJAIAggDkYNAAJAIAgsAAAiBUF/TA0AIAhBAWohBQwBCwJAIAVBYE8NACAIQQJqIQUMAQsgCEEEQQMgBUFvSxtqIQULQQEhEwJAIAUgDkcNACAIIQkMCgsCQAJAIAUsAAAiCUF/TA0AIAlB/wFxIQUMAQsgBS0AAUE/cSEGIAlBH3EhBwJAIAlBX0sNACAHQQZ0IAZyIQUMAQsgBkEGdCAFLQACQT9xciEGAkAgCUFwTw0AIAYgB0EMdHIhBQwBCyAGQQZ0IAUtAANBP3FyIAdBEnRBgIDwAHFyIQULIAVBCkYNBCAIIQkMCQsgACAFQQNqIgk2AmggB0EGdCAFLQACQT9xciEHAkAgBkFwTw0AIAcgBEEMdHIhBQwBCyAAIAVBBGoiCTYCaCAHQQZ0IAUtAANBP3FyIARBEnRBgIDwAHFyIQULIAVBgAFJDQBBAiEIIAVBgBBJDQBBA0EEIAVBgIAESRshCAsgCCALaiELDAULIAAgDjYCbCAAIAtBAmoiBTYCeCAAIAwgBSAPayIJaiIGNgJoIBNBAXENAgwDC0EBIRMgACAIQQFqIgk2AmhBASEFAkAgCCwAACIGQX9KDQAgACAIQQJqIgk2AmggCC0AAUE/cSEFIAZBH3EhBwJAAkAgBkFgTw0AIAdBBnQgBXIhCAwBCyAAIAhBA2oiCTYCaCAFQQZ0IAgtAAJBP3FyIQUCQCAGQXBPDQAgBSAHQQx0ciEIDAELIAAgCEEEaiIJNgJoIAVBBnQgCC0AA0E/cXIgB0ESdEGAgPAAcXIhCAsCQCAIQYABTw0AQQEgC2ohCwwFC0ECIQUgCEGAEEkNAEEDQQQgCEGAgARJGyEFCyAFIAtqIQsMAwsgACAJNgJoQQEgC2ohCwwCCyAAQQE6ACgLQQEhCAJAIBJBAXENAEEBIQgCQCAALQArIgdBpAFGDQAgB0G0f2pB/wFxQSdJDQBBACEIAkAgB0F+ag5KAQEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAQEBAAAAAAAAAQEACyAHQd8AakH/AXFB0gFJIQgLIA0gCUYNACAGLQAAQTtHIAhxIQgLIAMoAgBBgICAgHhGDQogACAFNgJ4IAAgDjYCbCAAIAY2AmgCQAJAAkACQCAJIBBrIgZBfmoiCUUNACAGQQJJDQEgESAJaiwAAEG/f0wNAQsgACgChAFBCGogESAJEOIDIRUCQCAIDQAgACgCMCIIQYCAgIB4Rg0CIAAoAiQhBgJAIAAoAjgiCSAIRw0AIANBqJOaARDjGwsgACgCNCAJQQV0aiIIQQE6ABwgCCAGNgIYIAhBAToAECAIIAU2AgwgCCAKNgIIIAggFTcDACAAIAlBAWo2AjgMDgsgAygCAEGAgICAeEYNAgJAIAAoAkQiCSAAKAI8Rw0AIAJBuJOaARDTGwsgACgCQCAJQRhsaiIIQQE6ABAgCCAFNgIMIAggCjYCCCAIIBU3AwAgACAJQQFqNgJEDA0LIBEgBkEAIAlBkI6aARCPKAALQaCOmgEQ+CkAC0GwjpoBEPgpAAsgACALNgJ4CyAOIAlrIQcgDiAJRw0DCyATQQFxRQ0FIABBAToAKAwFCyAEIAdJDQALCwsgACAONgJsIAAgCyAHaiIFNgJ4IAAgDCAFIA9rajYCaCATQQFxRQ0CIABBAToAKAwCCyABQSBqJAAPCyAAKAKAASEFIAFBmoCAgHg2AgggACAFIAUgAUEIahDzIQwBCyAAKAKAASEFIAFBmoCAgHg2AgggACAFIAUgAUEIahDzIQwACwvpHAIOfwN+IwBB0ABrIgUkAAJAAkACQAJAAkAgAg4DAQACAQsgASgCACIGKAKABUGwAmohBwwCCyABKAIAIgYoAoAFQbQCaiEHDAELAkAgASgCACIGLQBZQQFxDQAgACADrUIghkIChDcCAAwCCwJAIAMgBigCgAUiBygC3AJPDQAgBygC2AIgA0ECdGohBwwBCyAGQYQFaigCABCRGSEHIABBBTYCACAAIAc2AgQMAQsgBygCACEIIAEoAgQiBykCpAEhEyAHQoCAgIAQNwKkASAHQawBaiIJKAIAIQogCUEANgIAIAVBwABqIAo2AgAgBSATNwM4IAVBJGogBUE4ahDaIiAGKAKABSIJKAK4AiELIAktAOACIQwgCS0A5AIhDSAFKAIsIQogBSgCKCEJAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBEH/AXEOBgABAgMEBQALIAtBwP8PcUUNNSAJIAoQiB8hCyAKRQ0FIApBf2oiDEUNBiAJIAs6AAEgDEEBRg0HIAkgC0GAgAVyIg1BCHY6AAIgDEECTQ0IIAkgDUEQdjoAAyAMQQNGDQkgCSALQRh2OgAEDDULIAtBwP8PcUUNNAwzCwJAIAtBA3FFDQAgCSAKEIgfIQwgCkUNCSAKQX9qIg1FDQogCSAMQQFyOgABIA1BAUYNCyAJIAxBCHY6AAIgDUECTQ0MIAkgDEEQdjoAAyANQQNGDQ0gCSAMQRh2OgAECwJAIAtBPHFFDQAgCSAKEIgfIQwgCkUNDiAKQX9qIg1FDQ8gCSAMQRRyOgABIA1BAUYNECAJIAxBCHY6AAIgDUECTQ0RIAkgDEEQdjoAAyANQQNGDRIgCSAMQRh2OgAECyALQcD/D3FFDTMgCSAKEIgfIQsgCkUNEiAKQX9qIgxFDRMgCSALOgABIAxBAUYNFCAJIAtBgIAFciINQQh2OgACIAxBAk0NFSAJIA1BEHY6AAMgDEEDRg0WIAkgC0EYdjoABAwzCwJAIA1BAXENACALQTxxRQ0xIAkgChCIHyENIApFDRcgCkF/aiIORQ0YIAkgDUEQcjoAASAOQQFGDRkgCSANQQh2OgACIA5BAk0NGiAJIA1BEHY6AAMgDkEDRg0bDDALAkAgC0EwcUUNACAJIAoQxyMLIAtBPHFFDTAgCSAKEIgfIQ0gCkUNGyAKQX9qIg5FDRwgCSANQQRyOgABIA5BAUYNHSAJIA1BCHY6AAIgDkECTQ0eIAkgDUEQdjoAAyAOQQNHDS9BA0EDQdishAEQwBQACyALQTBxRQ0tAkAgDUEBcQ0AIAkgChDHIwwuCyAJIAoQiB8hDSAKRQ0eIApBf2oiDkUNHyAJIA1BEHI6AAEgDkEBRg0gIAkgDUEIdjoAAiAOQQJNDSEgCSANQRB2OgADIA5BA0YNIiAJIA1BGHY6AAQMLQsCQCALQTxxRQ0AIAkgChCIHyENIApFDSMgCkF/aiIORQ0kIAkgDUEEcjoAASAOQQFGDSUgCSANQQh2OgACIA5BAk0NJiAJIA1BEHY6AAMgDkEDRg0nIAkgDUEYdjoABAsgC0HA/w9xRQ0wIAxByLSEAWotAAANLyAJIAoQiB8hCyAKRQ0nIApBf2oiDEUNKCAJIAs6AAEgDEEBRg0pIAkgC0GAgAVyIg1BCHY6AAIgDEECTQ0qIAkgDUEQdjoAAyAMQQNGDSsgCSALQRh2OgAEDDALQQFBAEGYsYQBEIYqAAtBAEEAQaishAEQwBQAC0EBQQFBuKyEARDAFAALQQJBAkHIrIQBEMAUAAtBA0EDQdishAEQwBQAC0EBQQBBmLGEARCGKgALQQBBAEGorIQBEMAUAAtBAUEBQbishAEQwBQAC0ECQQJByKyEARDAFAALQQNBA0HYrIQBEMAUAAtBAUEAQZixhAEQhioAC0EAQQBBqKyEARDAFAALQQFBAUG4rIQBEMAUAAtBAkECQcishAEQwBQAC0EDQQNB2KyEARDAFAALQQFBAEGYsYQBEIYqAAtBAEEAQaishAEQwBQAC0EBQQFBuKyEARDAFAALQQJBAkHIrIQBEMAUAAtBA0EDQdishAEQwBQAC0EBQQBBmLGEARCGKgALQQBBAEGorIQBEMAUAAtBAUEBQbishAEQwBQAC0ECQQJByKyEARDAFAALQQNBA0HYrIQBEMAUAAtBAUEAQZixhAEQhioAC0EAQQBBqKyEARDAFAALQQFBAUG4rIQBEMAUAAtBAkECQcishAEQwBQAC0EBQQBBmLGEARCGKgALQQBBAEGorIQBEMAUAAtBAUEBQbishAEQwBQAC0ECQQJByKyEARDAFAALQQNBA0HYrIQBEMAUAAtBAUEAQZixhAEQhioAC0EAQQBBqKyEARDAFAALQQFBAUG4rIQBEMAUAAtBAkECQcishAEQwBQAC0EDQQNB2KyEARDAFAALQQFBAEGYsYQBEIYqAAtBAEEAQaishAEQwBQAC0EBQQFBuKyEARDAFAALQQJBAkHIrIQBEMAUAAtBA0EDQdishAEQwBQMBQsCQCAMQQ1HDQAgC0E8cUUNACAJIAoQiB8hDAJAAkACQAJAAkAgCkUNACAKQX9qIg1FDQEgCSAMQQRyOgABIA1BAUYNAiAJIAxBCHY6AAIgDUECTQ0DIAkgDEEQdjoAAyANQQNGDQQgCSAMQRh2OgAEDAULQQFBAEGYsYQBEIYqAAtBAEEAQaishAEQwBQAC0EBQQFBuKyEARDAFAALQQJBAkHIrIQBEMAUAAtBA0EDQdishAEQwBQACyALQcD/D3FFDQMgCSAKEIgfIQsCQAJAAkACQAJAIApFDQAgCkF/aiIMRQ0BIAkgCzoAASAMQQFGDQIgCSALQYCABXIiDUEIdjoAAiAMQQJNDQMgCSANQRB2OgADIAxBA0YNBCAJIAtBGHY6AAQMCAtBAUEAQZixhAEQhioAC0EAQQBBqKyEARDAFAALQQFBAUG4rIQBEMAUAAtBAkECQcishAEQwBQAC0EDQQNB2KyEARDAFAALIAkgDUEYdjoABCAMQQpHDQAgCSAJIAoQiB8iDEEYdjoABCAJIAxBEHY6AAMgCSAMQQh2OgACIAkgDEEEcjoAAQsgC0HA/w9xRQ0BIAkgChCIHyELAkACQAJAAkACQCAKRQ0AIApBf2oiDEUNASAJIAs6AAEgDEEBRg0CIAkgC0GAgAVyIg1BCHY6AAIgDEECTQ0DIAkgDUEQdjoAAyAMQQNGDQQgCSALQRh2OgAEDAYLQQFBAEGYsYQBEIYqAAtBAEEAQaishAEQwBQAC0EBQQFBuKyEARDAFAALQQJBAkHIrIQBEMAUAAtBA0EDQdishAEQwBQACyAJIAoQxiMLIAdBADYCSCAJIAoQjR8hCSAGKAKABSAIIAkgB0GYAWogB0EwaiIKEKYDIAVBOGogBUEkahD6DSAGKAKABSAKIAVBOGoQ0wYgBi0AXCEOIAUoAkAhCSAFKAI8IQogBSgCOCEMAkACQCAHKAIMRQ0AIAcpAxAgB0EYaikDACAKIAkQ1wYhEyAHKAIAIghBdGohDyAHKAIEIg0gE6dxIQsgE0IZiEL/AINCgYKEiJCgwIABfiEUQQAhEAJAA0ACQCAIIAtqKQAAIhUgFIUiE0J/hSATQv/9+/fv37//fnyDQoCBgoSIkKDAgH+DIhNQDQADQCAKIAkgD0EAIBN6p0EDdiALaiANcWsiEUEMbGoiEigCACASQQRqKAIAEJsoDQMgE0J/fCATgyITUEUNAAsLIBUgFUIBhoNCgIGChIiQoMCAf4NQRQ0CIAsgEEEIaiIQaiANcSELDAALCyAIIBFBDGxqQXxqKAIAIQkgByEBDAELIAVBGGogCiAJEIAQIAUoAhghCwJAAkACQCAFKAIcIg0gBxCHF2pBBCAGQYQFaigCAHRqQRRqIAYoAogFTQ0AIAEQ8g0NAQsgBUEQaiABEKMTIAUoAhBBAXFFDQELIAsgCygCACIHQX9qNgIAAkAgB0EBRw0AIAsgDRD3HAsgASgCBCAKrUIghiAMrYQQmSMgAEIDNwIADAULIAUoAhQhCSALIA0QuCQhCCAHQfQAakEBIAZBhAVqKAIAdBChFSAJQYCAgIABciAJIA5BAXEbIglBgICAwAByIAkgCBshCQJAIAZB4ARqIg5B8IqEAUEgEL4ZRQ0AIAYgCRDSHw0AIAZBhAVqKAIAEJwaIQggBUEANgI0IAUgDjYCMANAIAVBCGogBUEwahCdECAFLQAIRQ0BIAYgByAJIAUtAAlB/wFxQQh0IAgQoAkMAAsLIAcgBygCaCANajYCaCALIAsoAgAiCEEBajYCACAIQX9MDQECQCAHKAKUASIIIAcoAowBRw0AIAdBjAFqENMaCyAHKAKQASAIQQN0aiIOIA02AgQgDiALNgIAIAcgCEEBajYClAEgByALIA0gCRCPBiABKAIEIQELIAEgCq1CIIYgDK2EEJkjAkACQCAJQf///z9xIgogBygCfE8NACAKQX8gBigChAV0QX9zcUUNAQtBzIeEAUEsQfiHhAEQxxwACyAEQf8BcSEKAkACQCACDgMEAAEECyAKQQZqIQoMAwsgBi0AWUEBcUUNASADQQZsIApqQQxqIQoMAgsACyAFQQA2AkggBUEBNgI8IAVB3IiEATYCOCAFQgQ3AkAgBUE4akHkiIQBELUhAAsCQCAKIAcoAogBIgZJDQAgCiAGQfSIhAEQwBQACyAAIAk2AgQgAEEFNgIAIAcoAoQBIApBAnRqIAk2AgALIAVB0ABqJAALyB0CFH8BfiMAQcABayIGJAACQAJAAkACQCADKAIAIgdBf2pBAkkNAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAUgASgCpA0iCCgCxAJBEGooAgBBAXRLDQAgBkHsAGogASgCsA0gASgCtA0iCSgCCEF/akF4cWpBCGoiCiADKAIIIgsgAygCDCIMIAMoAhAiDSADKAIUIg4gCSgCECIPERIAAkACQAJAIAYoAmxBAUcNACACQZgDaiEQIAFBkAVqIREgAy0AGCESQQAhEyABLQCsDUEBcSEUIAEpAwBCAoUgASkDCIQhGiANIRUDQCAGKAJwIRYgBiAGKAJ0Igk2AowBIAYgDTYCiAECQAJAIAkgDEsNACANIAlBAWpNDQELIAZBAjYCmAEgBkGw4JsBNgKUASAGQgI3AqABIAZBCzYCuAEgBkGXATYCsAEgBiAMNgKQASAGIAZBrAFqNgKcASAGIAZBkAFqNgK0ASAGIAZBiAFqNgKsASAGQZQBakHA4JsBELUhAAsgBiAXQYB+cSASciIXNgKEASAGIAk2AoABIAYgDTYCfCAGIAw2AnggBiALNgJ0IAZBATYCbCAUDQUCQAJAIBpQDQAgAigCyARBAkYNCCAGQawBaiARIBAgBkHsAGogExDsASAGKAKwASEYIAYoAqwBIhNBAkcNASAYQQFxRQ0FIAZBwABqIAEgAiADEM8EDBgLIAZBATYCmAEgBkGknoMBNgKUASAGQgA3AqABIAYgBkG8AWo2ApwBIAZBlAFqQayegwEQtSEACyATQQFxDQIgFSAOTw0BIBZBf0YNByAGQewAaiAKIAsgDCAWQQFqIhUgDiAPERIAIAkhEyAGKAJsDQALCyAGQQA2AkAMFAsgBiAGKAK0ASIJNgKIASAGIA42AowBIA4gDEsNBSAJIA5BAWpLDQUgBiASNgKEASAGIA42AoABIAYgCTYCfCAGIAw2AnggBiALNgJ0IAYgGDYCcCAGQQI2AmwgAigCyARBAkYNBiACQdgBaiENAkACQAJAAkACQCABKAKABSIMLQDiAg0AIAZBlAFqIAEgDSAGQewAahBPIAYoApQBIgxBAkcNAQwWCyAMLQDjAiEOIAZBlAFqIAEgDSAGQewAahBPIAYoApQBIgxBAkYNFSAMQQFxRQ0DIAYoApwBIRYgDkEBcUUNAiAGQawBaiAGQewAaiAGKAKYASAWIBYgASANELkGIAYoAqwBIgxBAkcNASAGKAKwASEJDBYLIAxBAXFFDQIgBigCnAEhFgwBCyAGKAK0ASEWCyAMQQFxRQ0AIAkgFksNCCAGIBg2AkwgBiAWNgJIIAYgCTYCRCAGQQE2AkAMFAsgBkEBNgKYASAGQaSfgwE2ApQBIAZCADcCoAEgBiAGQbwBajYCnAEgBkGUAWpBrJ+DARC1IQALIAIoAsgEQQJGDQcgBkHsAGogASACQdgBaiADEIMEAkAgBigCbCIJQQJHDQAgBigCcBCTExogBkHAAGogASACIAMQzwQMEwsgBiAGKQJ0NwJIIAYgBigCcDYCRCAGIAk2AkAMEgsgAygCBCEZIAZB7ABqIAEoArANIAEoArQNIgkoAghBf2pBeHFqQQhqIgogAygCCCILIAMoAgwiDCADKAIQIg0gAygCFCIOIAkoAhAiDxESACAGKAJsQQFHDRMgAkGYA2ohECABQZAFaiERIAMtABghEkEAIRMgAS0ArA1BAXEhFCABKQMAQgKFIAEpAwiEIRogDSEVAkADQCAGKAJwIRYgBiAGKAJ0Igk2AkQgBiANNgJAIAkgDEsNCSANIAlBAWpLDQkgBiAXQYB+cSASciIXNgKEASAGIAk2AoABIAYgDTYCfCAGIAw2AnggBiALNgJ0IAZBATYCbCAUDQoCQAJAIBpQDQAgAigCyARBAkYNDSAGQawBaiARIBAgBkHsAGogExDsASAGKAKwASEYIAYoAqwBIhNBAkcNASAYQQFxRQ0DIAZBGGogASACIAMgBCAFEMEGIAYoAhwhAyAGKAIYIQEMGQsgBkEBNgKYASAGQaSegwE2ApQBIAZCADcCoAEgBiAGQbwBajYCnAEgBkGUAWpBrJ6DARC1IQALAkAgE0EBcQ0AIBUgDk8NFiAWQX9GDQ0gBkHsAGogCiALIAwgFkEBaiIVIA4gDxESACAJIRMgBigCbEUNFgwBCwsgBiAGKAK0ASIDNgKsASAGIA42ArABIA4gDEsNDCADIA5BAWpLDQwgBiASOgCEASAGIA42AoABIAYgAzYCfCAGIAw2AnggBiALNgJ0IAYgGDYCcCAGQQI2AmwgBkE4aiABIAIgBkHsAGogBCAFEMEGIAYoAjwhAyAGKAI4IQEMFgsCQCAFIAgoAsQCQRBqKAIAQQF0Sw0AIAIoAsgEQQJGDQ0gBkHsAGogASACQdgBaiADEIMEAkACQCAGKAJsIglBAkcNACAGKAJwEJMTGiAGQZQBaiABIAIgAxDPBCAGKAKUASEJDAELIAYgBikCdDcCnAEgBiAGKAJwNgKYAQsgCUEBcUUNFCAGKAKgASIDQQF0IgFBAXIhCSAGKQKYASEaAkAgASAFTw0AIAQgAUECdGogGqdBAWo2AgALQQEhASAJIAVPDRZBASEBIAQgCUECdGogGkIgiKdBAWo2AgAMFgsCQCABKALkCkEDRg0AIAEoAogLIgkoArACIAkoArQCRw0AIAZBMGogASACIAMgBCAFEMEGIAYoAjQhAyAGKAIwIQEMFgsgAigCyARBAkYNDSAGQewAaiABIAJB2AFqIAMQgwQCQCAGKAJsIglBAkcNACAGKAJwEJMTGiAGQSBqIAEgAiADIAQgBRDBBiAGKAIkIQMgBigCICEBDBYLIAlBAXFFDRMgBigCeCEDIAYoAnQhCSAGKAJwIRYgBiAONgKAASAGIA02AnwgBiAMNgJ4IAYgCzYCdCAGIBI6AIQBIAYgGTYCcCAGIAc2AmwgBkHQAGogBkHsAGogFiAJEJAMIAYgAzYCVCAGQQI2AlAgBkEoaiABIAIgBkHQAGogBCAFEMEGIAYoAihBAXFFDQ4gBigCLCEDQQEhAQwVC0GEpJwBQShBjKODARDHHAALQayigwEQ+CkAC0HMnYMBEPgpAAsgBkECNgKYASAGQbDgmwE2ApQBIAZCAjcCoAEgBkELNgK4ASAGQZcBNgKwASAGIAw2ApABIAYgBkGsAWo2ApwBIAYgBkGQAWo2ArQBIAYgBkGIAWo2AqwBIAZBlAFqQcDgmwEQtSEAC0H8oYMBEPgpAAsgBkEANgKkASAGQQE2ApgBIAZB7JSEATYClAEgBkIENwKcASAGQZQBakG8pIMBELUhAAtB7KGDARD4KQALIAZBAjYCmAEgBkGw4JsBNgKUASAGQgI3AqABIAZBCzYCuAEgBkGXATYCsAEgBiAMNgKIASAGIAZBrAFqNgKcASAGIAZBiAFqNgK0ASAGIAZBwABqNgKsASAGQZQBakHA4JsBELUhAAtBhKScAUEoQYyjgwEQxxwAC0GsooMBEPgpAAtBzJ2DARD4KQALIAZBAjYCcCAGQbDgmwE2AmwgBkICNwJ4IAZBCzYCoAEgBkGXATYCmAEgBiAMNgJAIAYgBkGUAWo2AnQgBiAGQcAAajYCnAEgBiAGQawBajYClAEgBkHsAGpBwOCbARC1IQALQeyhgwEQ+CkAC0HsoYMBEPgpAAtBxJyDAUETQdicgwEQshYACyAGKAKYASEJCyAJEJMTGiAGQcAAaiABIAIgAxDPBAsgBigCQEUNAUEBIQEgBigCTCIDQQF0IglBAXIhAiAGKQJEIRoCQCAJIAVPDQAgBCAJQQJ0aiAap0EBajYCAAsgAiAFTw0DQQEhASAEIAJBAnRqIBpCIIinQQFqNgIADAMLAkACQAJAAkACQAJAAkACQCAFIAEoAqQNKALEAkEQaigCAEEBdEsNACABLQCsDUEBRg0BIAEpAwBCAoUgASkDCIRQDQMgAigCyARBAkYNAiAGQewAaiABIAJB2AFqIAMQgwQCQCAGKAJsIglBAkcNACAGKAJwEJMTGiAGQZQBaiABIAIgAxDPBAwICyAGIAYpAnQ3ApwBIAYgBigCcDYCmAEgBiAJNgKUAQwHCwJAAkAgASgC5ApBA0cNACABLQCsDUUNAUGEpJwBQShBzKKDARDHHAALIAZBEGogASACIAMgBCAFEMEGIAYoAhQhAyAGKAIQIQEMCgsCQAJAIAEpAwBCAoUgASkDCIRQDQAgAigCyARBAkYNBSAGQewAaiABIAJB2AFqIAMQgwQgBigCbCIJQQJHDQEgBigCcBCTExoLIAYgASACIAMgBCAFEMEGIAYoAgQhAyAGKAIAIQEMCgsgCUEBcUUNByAGKAJ4IQwgBigCcCEJIAMtABghFiADKAIMIQ0gAygCCCEOIAYgBigCdCIDNgKwASAGIAk2AqwBIAkgA0EBaksNBCADIA1LDQQgBiAWOgCEASAGIAM2AoABIAYgCTYCfCAGIA02AnggBiAONgJ0IAYgDDYCcCAGQQI2AmwgBkEIaiABIAIgBkHsAGogBCAFEMEGQQEhASAGKAIIQQFxRQ0FIAYoAgwhAwwJC0GEpJwBQShBzKKDARDHHAALQeyhgwEQ+CkACyAGQZQBaiABIAIgAxDPBAwDC0HsoYMBEPgpAAsgBkECNgJwIAZBsOCbATYCbCAGQgI3AnggBkELNgKgASAGQZcBNgKYASAGIA02AkAgBiAGQZQBajYCdCAGIAZBwABqNgKcASAGIAZBrAFqNgKUASAGQewAakHA4JsBELUhAAtBxJyDAUETQdicgwEQshYACyAGKAKUAQ0BC0EAIQEMAQtBASEBIAYoAqABIgNBAXQiCUEBciECIAYpApgBIRoCQCAJIAVPDQAgBCAJQQJ0aiAap0EBajYCAAsgAiAFTw0AQQEhASAEIAJBAnRqIBpCIIinQQFqNgIACyAAIAE2AgAgACADNgIEIAZBwAFqJAALlhoDDn8CfgF8IwBBwABrIgIkACABKAJ4IQMgAkEAOgAnIAJBADoAGCABIAJBJ2ogAkEmaiACQRhqEIwDAkACQAJAAkACQAJAIAItACcNACACQZeAgIB4NgIoIAJBCjoALCABKAJ4IAMgAkEoahDSKyEEDAELIAEoAnghBSACLQAYIQYgASABKAJwIgcgASgCdCIIaiIENgJsIAUgASgCfCIJayIKIAMgCWsiC2shDAJAAkAgCCAKRg0AAkACQAJAAkACQAJAAkACQCAHIApqIggtAABB7gBHDQAgASAFQQFqIgg2AnggASAHIAggCWsiCWo2AmggAkEoaiAHIAtqIgUgDBDcBCACKAIoDQIgAkEIaiACKAIsIgggAigCMCIHQS0QghcCQAJAIAIoAggiBA0AQQIhBAwBCyAIIAQgBCACKAIMIgpBKxC7HSIGGyEIIAcgCiAGGyEHQQAhBAsgAkEoaiAIIAdBChDuASACKAIoIgpBgICAgHhGDQIgAkEWaiIGIAJBKGpBB2otAAA6AAAgAiACLwAtOwEUQQAtAODnngEaIAItACwhAyACKAIwIQdBEBB8IggNAQALAkACQAJAIAgsAAAiB0F/Sg0AIAdBH3EiCkEGdCAILQABQT9xIgtyIQkCQCAHQWBJDQAgC0EGdCAILQACQT9xciEMAkACQCAHQXBPDQAgDCAKQQx0ciEMDAELIAxBBnQgCC0AA0E/cXIgCkESdEGAgPAAcXIhDAsgDEEuRg0CDAcLIAlBLkcNBiABIAhBAmoiDTYCaEEBIQcMAgsgB0EuRw0FQQEhByABIAhBAWoiDTYCaAwBCyABIAhBAmoiDTYCaAJAIAdBYEkNACABIAhBA2oiDTYCaCALQQZ0IAgtAAJBP3FyIQkCQCAHQXBPDQAgCSAKQQx0ciEJDAELIAEgCEEEaiINNgJoIAlBBnQgCC0AA0E/cXIgCkESdEGAgPAAcXIhCQsCQCAJQYABTw0AQQEhBwwBCwJAIAlBgBBPDQBBAiEHDAELQQNBBCAJQYCABEkbIQcLIAEgByAFaiIONgJ4IA0gBEYNAiAOIQtBgIDEACEJA0AgCUFSaiEPIA0hCAJAAkADQAJAAkAgCCwAACIHQX9KIgoNACAILQABQT9xIQkgB0EfcSEMAkAgB0FgTw0AIAxBBnQgCXIhCQwCCyAJQQZ0IAgtAAJBP3FyIQkCQCAHQXBPDQAgCSAMQQx0ciEJDAILIAlBBnQgCC0AA0E/cXIgDEESdEGAgPAAcXIhCQwBCyAHQf8BcSEJCwJAAkAgCUHfAEYNAEEBIQwgCUGAgMQARg0KIAlBUGpBCUsNCkEBIQwgASAIQQFqIg02AmhBASEPIAoNBCABIAhBAmoiDTYCaCAILQABQT9xIQogB0EfcSEPIAdBYE8NASAPQQZ0IApyIQgMAwsCQAJAIApFDQAgCEEBaiEJDAELAkAgB0FgTw0AIAhBAmohCQwBCyAIQQRBAyAHQW9LG2ohCQsCQAJAIAkgBEYNAAJAAkAgCSwAACIKQX9KDQAgCS0AAUE/cSEGIApBH3EhCwJAIApBYE8NACALQQZ0IAZyIQkMAgsgBkEGdCAJLQACQT9xciEGAkAgCkFwTw0AIAYgC0EMdHIhCQwCCyAGQQZ0IAktAANBP3FyIAtBEnRBgIDwAHFyIQkMAQsgCkH/AXEhCQsgCUFQakEJSw0AIA8OQgABAQEBAQEBAQEBAQEBAQEBAQEBAAEBAAEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEAAQEAAQEBAQEBAQEBAAELIAJB7oCAgHg2AiggASAOIAJBKGoQtSkgASgCbCEEIAEoAmgiCC0AACEHCyABIAhBAWoiCjYCaAJAAkAgB8BBf0oNACABIAhBAmoiCjYCaCAILQABQT9xIQkgB0EfcSEGAkACQCAHQf8BcSIHQeABTw0AIAZBBnQgCXIhCAwBCyABIAhBA2oiCjYCaCAJQQZ0IAgtAAJBP3FyIQkCQCAHQfABTw0AIAkgBkEMdHIhCAwBCyABIAhBBGoiCjYCaCAJQQZ0IAgtAANBP3FyIAZBEnRBgIDwAHFyIQgLIAEoAnghBwJAIAhBgAFPDQBBASEJIAohCAwCCwJAIAhBgBBPDQBBAiEJIAohCAwCC0EDQQQgCEGAgARJGyEJIAohCAwBCyABKAJ4IQdBASEJIAohCAsgASAJIAdqIgs2AnhBASEGQQEhDCAIIARGDQkMAQsLIAEgCEEDaiINNgJoIApBBnQgCC0AAkE/cXIhCgJAIAdBcE8NACAKIA9BDHRyIQgMAQsgASAIQQRqIg02AmggCkEGdCAILQADQT9xciAPQRJ0QYCA8ABxciEICwJAIAhBgAFPDQBBASEPDAELQQIhDyAIQYAQSQ0AQQNBBCAIQYCABEkbIQ8LIAEgDyALaiILNgJ4IA0hCCANIARGDQUMAAsLIAggAzoABCAIIAo2AgAgCCACLwEUOwAFIAggBzYCCCAIIARBASAHGzoADCAIQQdqIAYtAAA6AAAgASgChAFBCGogBSAJIAtrEOIDIRAgAiAINgIYIAIpAxghESACIBA3AzAgAiARPgI4IAJBBzYCKCABIAJBKGoQlAVBwgAhAQwKC0Hgg5oBEPgpAAsgASgCfCEJIAEoAnQhCCABKAJwIQcgDiEFDAILQQAhDCAFIQsLAkAgCCAERg0AAkACQAJAAkAgCCwAACIJQX9KDQAgCUEfcSIOQQZ0IAgtAAFBP3EiD3IhCgJAIAlBYEkNACAPQQZ0IAgtAAJBP3FyIQcCQAJAIAlBcE8NACAHIA5BDHRyIQcMAQsgB0EGdCAILQADQT9xciAOQRJ0QYCA8ABxciEHCyAHQd///wBxQcUARw0FIAEgCEECaiIHNgJoIAlBYEkNAyABIAhBA2oiBzYCaCAPQQZ0IAgtAAJBP3FyIQUgCUFwTw0CIAUgDkEMdHIhCgwDCyAKQd8PcUHFAEcNBCABIAhBAmoiBzYCaAwCCyAJQd8AcUHFAEcNA0EBIQkgASAIQQFqIgc2AmgMAgsgASAIQQRqIgc2AmggBUEGdCAILQADQT9xciAOQRJ0QYCA8ABxciEKCwJAIApBgAFPDQBBASEJDAELAkAgCkGAEE8NAEECIQkMAQtBA0EEIApBgIAESRshCQsgASAJIAtqIgk2AngCQAJAIAcgBEYNAAJAIAcsAAAiCEF/TA0AIAhB/wFxIQQMAgsgBy0AAUE/cSEEIAhBH3EhBQJAIAhBX0sNACAFQQZ0IARyIQQMAgsgBEEGdCAHLQACQT9xciEEAkAgCEFwTw0AIAQgBUEMdHIhBAwCCyAEQQZ0IActAANBP3FyIAVBEnRBgIDwAHFyIgRBgIDEAEcNAQsgAkGlgICAeDYCKCAJIAkgAkEoahCkISEEDAYLAkACQCAEQVVqDgMAAQABC0EBIQQgASAHQQFqNgJoAkAgCEF/Sg0AIAEgB0ECajYCaCAHLQABQT9xIQUgCEEfcSEKAkACQCAIQWBPDQAgCkEGdCAFciEIDAELIAEgB0EDajYCaCAFQQZ0IActAAJBP3FyIQUCQCAIQXBPDQAgBSAKQQx0ciEIDAELIAEgB0EEajYCaCAFQQZ0IActAANBP3FyIApBEnRBgIDwAHFyIQgLIAhBgAFJDQBBAiEEIAhBgBBJDQBBA0EEIAhBgIAESRshBAsgASAEIAlqIgk2AngLIAJBADoAJyACQQA6ABggASACQSdqIAJBJmogAkEYahCMAwJAIAItACcNACACQZeAgIB4NgIoIAJBCjoALCABKAJ4IAkgAkEoahDSKyEEDAYLIAYgAi0AGHIhBiABKAJ4IQUgASgCfCEJIAEoAnQhCCABKAJwIQcMAQsgASgCfCEJIAEoAnQhCCABKAJwIQcgDEUNASALIQULIAEgByAIajYCbCABIAcgBSAJayIEajYCaCACQRhqIAcgAyAJayIKaiAEIAprIAZBAXEQ7gggAkEoaiACKAIcIgQgAigCIBCBASACLQAoQQFGDQcgAisDMCESIAIoAhgiCkGAgICAeEYNAiAKIAQQ/ikMAgsgBSAJayIKIAMgCWsiC2shDAsgASAFNgJ4IAEgByAIajYCbCABIAcgCmo2AmggAkEoaiAHIAtqIAwgBkEBcRDuCCACKAIsIgQgAigCMBCbDyESIAIoAigiCkGAgICAeEYNACAKIAQQ/ikLIAEQ4QoiBEUNAQsgACAENgIEQQEhAQwCCyABIAcgCGo2AmwgASAHIAUgCWsiCGo2AmggAiAHIAMgCWsiBGogCCAEaxDDDDcDMCACIBI5AzggAkEGNgIoIAEgAkEoahCUBUHBACEBCyAAIAE6AAFBACEBCyAAIAE6AAAgAkHAAGokAA8LIAIgAi0AKToAJ0Gyg5oBQR0gAkEnakGQkpoBQdCDmgEQoxIAC7AaAgt/An4jAEEwayIEJAAgBEEYakEIQQFBARD3DiAEKAIcIQUCQAJAAkACQCAEKAIYQQFGDQAgBCgCICEGIAEgASgCaCIHQQFqIgg2AmggBEEANgIMIAQgBjYCCCAEIAU2AgQgASgCbCEJAkACQAJAAkAgBywAACIFQX9KDQAgASAHQQJqIgg2AmggBy0AAUE/cSEGIAVBH3EhCiAFQV9LDQEgCkEGdCAGciEFDAILIAEoAnghB0EBIQUMAgsgASAHQQNqIgg2AmggBkEGdCAHLQACQT9xciEGAkAgBUFwTw0AIAYgCkEMdHIhBQwBCyABIAdBBGoiCDYCaCAGQQZ0IActAANBP3FyIApBEnRBgIDwAHFyIQULIAEoAnghBwJAIAVBgAFPDQBBASEFDAELAkAgBUGAEE8NAEECIQUMAQtBA0EEIAVBgIAESRshBQsgASAFIAdqIgs2AngCQCAIIAlHDQAgCyEFDAMLIAshBSALIQoDQAJAAkAgCCwAACIGQX9KIgxFDQAgBkH/AXEhBwwBCyAILQABQT9xIQcgBkEfcSENAkAgBkFfSw0AIA1BBnQgB3IhBwwBCyAHQQZ0IAgtAAJBP3FyIQcCQCAGQXBPDQAgByANQQx0ciEHDAELIAdBBnQgCC0AA0E/cXIgDUESdEGAgPAAcXIhBwsCQAJAAkACQAJAAkACQAJAIAdB2wBKDQAgB0F2ag4bBAMDBAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMBAwsgB0HYv39qQQJJDQMCQAJAIAdBpH9qDgUDBAQEAQALIAdBgIDEAEcNAwwLCwJAAkAgBCgCBEGAgICAeEcNAEEBIQYgBCgCCCEFDAELIAEgBTYCeCABIAEoAnAiByABKAJ0ajYCbCABIAcgBSABKAJ8IghraiIFNgJoIARBBGogByAKIAhraiAFEMkeIAQoAgghBQJAIAQoAgQiB0GAgICAeEcNAEEBIQYMAQsgASgChAFBCGogBSAEKAIMEOIDIQ8gByAFEP4pQQAhBgsgASABKAJwIgcgASgCdGo2AmwgASAHIAEoAnggASgCfCIIayIKajYCaCABKAKEAUEIaiAHIAsgCGsiCGogCiAIaxDiAyEQQQEhCCABIAEoAmgiB0EBajYCaAJAAkACQAJAIAcsAAAiCkF/Sg0AIAEgB0ECajYCaCAHLQABQT9xIQggCkEfcSEMIApBX0sNASAMQQZ0IAhyIQgMAgsgASgCeCEHDAILIAEgB0EDajYCaCAIQQZ0IActAAJBP3FyIQgCQCAKQXBPDQAgCCAMQQx0ciEIDAELIAEgB0EEajYCaCAIQQZ0IActAANBP3FyIAxBEnRBgIDwAHFyIQgLIAEoAnghBwJAIAhBgAFPDQBBASEIDAELAkAgCEGAEE8NAEECIQgMAQtBA0EEIAhBgIAESRshCAsgASAIIAdqNgJ4IAFBCGohBwJAIAEoAghBCUYNACAHEL8FC0HFAEHIACADGyEIIAcgBjYCAAwJCwJAAkAgDEUNACAIQQFqIQcMAQsCQCAGQWBPDQAgCEECaiEHDAELIAhBBEEDIAZBb0sbaiEHCyAHIAlGDQECQAJAIAcsAAAiCUF/TA0AIAlB/wFxIQcMAQsgBy0AAUE/cSENIAlBH3EhDgJAIAlBX0sNACAOQQZ0IA1yIQcMAQsgDUEGdCAHLQACQT9xciENAkAgCUFwTw0AIA0gDkEMdHIhBwwBCyANQQZ0IActAANBP3FyIA5BEnRBgIDwAHFyIQcLIAdB+wBHDQECQAJAIAQoAgRBgICAgHhHDQBBASEGIAQoAgghBQwBCyABIAU2AnggASABKAJwIgcgASgCdGo2AmwgASAHIAUgASgCfCIIa2oiBTYCaCAEQQRqIAcgCiAIa2ogBRDJHiAEKAIIIQUCQCAEKAIEIgdBgICAgHhHDQBBASEGDAELIAEoAoQBQQhqIAUgBCgCDBDiAyEPIAcgBRCfJ0EAIQYLIAEgASgCcCIHIAEoAnRqNgJsIAEgByABKAJ4IAEoAnwiCGsiCmo2AmggASgChAFBCGogByALIAhrIghqIAogCGsQ4gMhECABIAEoAnhBAmoiBzYCeCABIAEoAnAiCCABKAJ0ajYCbCABIAggByABKAJ8a2o2AmggAUEIaiEHAkAgASgCCEEJRg0AIAcQvwULQcYAQccAIAMbIQggByAGNgIADAgLIAQoAgRBgICAgHhGDQIgASAFNgJ4IAEgASgCcCIHIAEoAnRqNgJsIAEgByAFIAEoAnwiCGtqIgU2AmggBEEEaiAHIAogCGtqIAUQyR4MAgtBASEHIAEgCEEBajYCaAJAIAwNACABIAhBAmo2AmggCC0AAUE/cSEMIAZBH3EhCQJAAkAgBkFgTw0AIAlBBnQgDHIhCAwBCyABIAhBA2o2AmggDEEGdCAILQACQT9xciEMAkAgBkFwTw0AIAwgCUEMdHIhCAwBCyABIAhBBGo2AmggDEEGdCAILQADQT9xciAJQRJ0QYCA8ABxciEICyAIQYABSQ0AQQIhByAIQYAQSQ0AQQNBBCAIQYCABEkbIQcLIAEgByAFaiIFNgJ4DAMLAkAgBCgCBEGAgICAeEYNACABIAU2AnggASABKAJwIgggASgCdGo2AmwgASAIIAUgASgCfCIGa2oiBTYCaCAEQQRqIAggCiAGa2ogBRDJHgtBASEIAkACQAJAAkAgB0F2ag4EAwICAAELIAEoAmgiBSEHAkAgBSABKAJsIgZGDQACQCAFLAAAIgdBf0wNACAFQQFqIQcMAQsCQCAHQWBPDQAgBUECaiEHDAELIAVBBEEDIAdBb0sbaiEHCwJAIAcgBkcNAEEKIQcMAwsCQAJAIAcsAAAiBkF/TA0AIAZB/wFxIQYMAQsgBy0AAUE/cSEKIAZBH3EhDAJAIAZBX0sNACAMQQZ0IApyIQYMAQsgCkEGdCAHLQACQT9xciEKAkAgBkFwTw0AIAogDEEMdHIhBgwBCyAKQQZ0IActAANBP3FyIAxBEnRBgIDwAHFyIQYLQQohByAGQQpHDQIgASAFQQFqNgJoAkACQAJAAkAgBSwAACIGQX9KDQAgASAFQQJqNgJoIAUtAAFBP3EhCiAGQR9xIQwgBkFfSw0BIAxBBnQgCnIhBgwCCyABKAJ4IQVBASEGDAILIAEgBUEDajYCaCAKQQZ0IAUtAAJBP3FyIQoCQCAGQXBPDQAgCiAMQQx0ciEGDAELIAEgBUEEajYCaCAKQQZ0IAUtAANBP3FyIAxBEnRBgIDwAHFyIQYLIAEoAnghBQJAIAZBgAFPDQBBASEGDAELAkAgBkGAEE8NAEECIQYMAQtBA0EEIAZBgIAESRshBgsgASAGIAVqNgJ4DAILIAdB2L9/akECTw0AQQAhCAwBC0GEpJwBQShBsJaaARDHHAALIAEgASgCaCIFQQFqNgJoAkACQAJAAkAgBSwAACIGQX9KDQAgASAFQQJqNgJoIAUtAAFBP3EhDCAGQR9xIQogBkFfSw0BIApBBnQgDHIhBgwCCyABKAJ4IQVBASEGDAILIAEgBUEDajYCaCAMQQZ0IAUtAAJBP3FyIQwCQCAGQXBPDQAgDCAKQQx0ciEGDAELIAEgBUEEajYCaCAMQQZ0IAUtAANBP3FyIApBEnRBgIDwAHFyIQYLIAEoAnghBQJAIAZBgAFPDQBBASEGDAELAkAgBkGAEE8NAEECIQYMAQtBA0EEIAZBgIAESRshBgsgASAGIAVqIgU2AnggBSEKIAQoAgRBgICAgHhGDQIgBCgCDCEGIARBBGpBAUEDIAgbIgoQ3yIgBCgCCCAEKAIMaiEFAkAgCA0AIAVBgAE6AAEgBSAHQYABcjoAAiAHQQx2QWByIQcLIAUgBzoAACAEIAYgCmo2AgwMAQsgBEEYaiABQQEQmwECQAJAIAQoAhgiCEGAgICAeGoOAgIAAQsgBCgCCCEHIAQoAhwhBQJAAkAgBCgCBCIIQYCAgIB4Rg0AIAggBxD+KQwBCyAHQQhqEJYDIAdBIEEIENIVCyAEIAU2AgggBEGAgICAeDYCBAwBCyAEKAIcIQYCQCAEKAIEQYCAgIB4Rg0AIAQoAiAiB0UNACAHQQJ0IQUgBiEHA0AgBEEEaiAHKAIAEOIEIAdBBGohByAFQXxqIgUNAAsLIAggBhC/KgsgASgCeCIFIQoLIAEoAmgiCCABKAJsIglHDQAMAwsLIAUgBCgCIEHsrJwBEMEmAAsgASAQNwMYIAEgDzcDECABIAU2AgwgACAIOgABIABBADoAAAwBCyAEQZ+AgIB4NgIYIARBEGogBSACIARBGGoQ1ioCQCAELQAQIgFBAkcNACAEKAIUIQEgAEEBOgAAIAAgATYCBCAEKAIEIAQoAggQtCIMAQsgACAELwAROwABIABBA2ogBC0AEzoAACAAIAQoAhQ2AgQgACABOgAAIAQoAgQgBCgCCBC0IgsgBEEwaiQAC7MkAgR/An4jAEEgayICJAAgACABKQMANwMAIABBCGohAyABQQhqIQQCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCCCIFQTQgBUG7gYCAeEgbQf8BcQ67AQABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbgBuQG6AQALIANBgICAgHg2AgAMugELIANBgYCAgHg2AgAMuQELIANBgoCAgHg2AgAMuAELIANBg4CAgHg2AgAMtwELIANBhICAgHg2AgAMtgELIANBhYCAgHg2AgAMtQELIANBhoCAgHg2AgAMtAELIANBh4CAgHg2AgAMswELIANBiICAgHg2AgAMsgELIANBiYCAgHg2AgAMsQELIANBioCAgHg2AgAMsAELIANBi4CAgHg2AgAMrwELIANBjICAgHg2AgAMrgELIANBjYCAgHg2AgAMrQELIANBjoCAgHg2AgAMrAELIANBj4CAgHg2AgAMqwELIANBkICAgHg2AgAMqgELIANBkYCAgHg2AgAMqQELIANBkoCAgHg2AgAMqAELIANBk4CAgHg2AgAMpwELIANBlICAgHg2AgAMpgELIANBlYCAgHg2AgAMpQELIANBloCAgHg2AgAMpAELIAMgBCkDADcDACADQRBqIARBEGopAwA3AwAgA0EIaiAEQQhqKQMANwMADKMBCyADQZiAgIB4NgIADKIBCyADQZmAgIB4NgIADKEBCyADQZqAgIB4NgIADKABCyADQZuAgIB4NgIADJ8BCyADQZyAgIB4NgIADJ4BCwJAIAEpAxAiBkIDg0IAUg0AIAanIgEgASgCACIBQQFqNgIAIAFBf0wNnwELIABBnYCAgHg2AgggACAGNwMQDJ0BCyADQZ6AgIB4NgIADJwBCyADQZ+AgIB4NgIADJsBCyADQaCAgIB4NgIADJoBCyADIAQpAwA3AwAgA0EQaiAEQRBqKQMANwMAIANBCGogBEEIaikDADcDAAyZAQsgA0GigICAeDYCAAyYAQsgA0GjgICAeDYCAAyXAQsgAyAEKQMANwMAIANBEGogBEEQaikDADcDACADQQhqIARBCGopAwA3AwAMlgELIANBpYCAgHg2AgAMlQELIANBpoCAgHg2AgAMlAELAkAgASkDECIGQgODQgBSDQAgBqciASABKAIAIgFBAWo2AgAgAUF/TA2VAQsgAEGngICAeDYCCCAAIAY3AxAMkwELIANBqICAgHg2AgAMkgELIANBqYCAgHg2AgAMkQELIANBqoCAgHg2AgAMkAELIANBq4CAgHg2AgAMjwELIAJBFGogASgCECABKAIUEK8WIABBrICAgHg2AgggACACKQIUNwIMIABBFGogAkEUakEIaigCADYCACAAIAEpAxg3AxgMjgELIANBrYCAgHg2AgAMjQELIANBroCAgHg2AgAMjAELIANBr4CAgHg2AgAMiwELIAJBFGogASgCECABKAIUEK8WIABBsICAgHg2AgggACACKQIUNwIMIABBFGogAkEUakEIaigCADYCACAAIAEpAxg3AxgMigELIAJBFGogASgCECABKAIUEKQWIABBsYCAgHg2AgggAEEUaiACQRRqQQhqKAIANgIAIAAgAikCFDcCDAyJAQsgA0GygICAeDYCAAyIAQsgA0GzgICAeDYCAAyHAQsgAkEIaiABKAIMIAEoAhAQrxYgAkEUaiABKAIYIAEoAhwQrxYgA0EIaiACQQhqQQhqKAIANgIAIAMgAikCCDcCACAAIAIpAhQ3AhQgAEEcaiACQRRqQQhqKAIANgIADIYBCyAAQbWAgIB4NgIIIAAgASkCDDcCDAyFAQsgA0G2gICAeDYCAAyEAQsgA0G3gICAeDYCAAyDAQsgA0G4gICAeDYC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ACENA0ACQAJAIANB/wFxIgNB+ABGDQBBACEOIANBAUcNASABEJQLIAAgGDcCECAAIA02AgwgAEEIaiACQegAakEIaigCADYCACAAIAIpAmg3AgAMCAtBACEOIAEQygkiA0UNAAJAIAMtAAAiAw0AQQEhDgwBCyADQd0ARiADENUUciEOCyABQQE2AuABIAEgASgC0AEiDzYC5AEgAkHoAWogARDKDwJAIAItAOgBQQFHDQAgAigC7AEhASAAQQI2AgwgACABNgIADAULIAItAOkBIRAgASgC0AEhEQJAAkAgAS0AkQFBIHFFDQACQCABKAKIASISIAEtANgBIgMQ3SMNACADQf8BcUEcRw0BIAEQygkiA0UNASADLQAAIgMQ1RRFDQEgAyASEM4ODQEgAS0A2AEhAwsCQAJAAkAgA0H/AXFBHEYNACACQdAAaiABEKUJIAIoAlQhEiACKAJQQQFxRQ0BIABBAjYCDCAAIBI2AgAMCQsgARCUCyABKALMASETIAEoAsgBIRQgAkHAAGogARClCUEBIRUgAigCRCESIAIoAkBBAXFFDQEgAEECNgIMIAAgEjYCAAwIC0EAIRUCQAJAIAEtANgBIgNBF0YNACADQWFqQf8BcUEOSw0BCyACQcgAaiABIA8gEhCpAyACKAJMIRIgAigCSEEBcUUNACAAQQI2AgwgACASNgIADAgLIBYhFAsgAiASNgKAASACIBM2AnwgAiAUNgJ4IAIgFTYCdCAUIRYMAQsCQAJAIAEoAogBIgNBwABxDQAgASADQcAAcjYCiAEgAkHoAWogARD1CiABIAEoAogBQb9/cTYCiAEMAQsgAkHoAWogARD1CgsgAigC7AEhFAJAIAIoAugBIhVBAkcNACAAQQI2AgwgACAUNgIADAYLIAIgAikC8AEiGTcCfCACIBQ2AnggAiAVNgJ0IBlCIIinIRILIAEtANgBIQMCQAJAAkACQAJAAkACQAJAIAEtAJEBQSBxRQ0AIANB/wFxQQpHDQACQAJAAkACQCABEMoJIgNFDQACQCADLQAAIgNBeWoOAwIBAgALIANBAUYNASADQRdGDQELIAEtANgBIQMgFQ0DAkAgA0H/AXFBCkYNACABKALUASEDIAEoAtABIQQgAkGEAWogARCXJCACQQE2AuwBIAJBvLecATYC6AEgAkIBNwL0ASACQY8FNgK4ASACQQo6AJQBIAIgAkG0AWo2AvABIAIgAkGcAmo2ArQBIAIgAkGUAWo2ApwCIAJBwAFqIAJB6AFqEOkPIAJB1AFqIAJBjAFqKAIANgIAIAIgAikChAE3AswBIAQgAyACQcABahCXGSEDIAEtANgBQaIBRg0CDA8LIAEQlAsgAiASNgKQASACQTBqIAEQvhIgAigCNCEDAkACQCACKAIwQQFxRQ0AIABBAjYCDCAAIAM2AgAMAQsgAiADNgKUAQJAAkAgAS0A2AFBCUYNACABKALUASEDIAEoAtABIQQgAkGYAWogARCXJCACQQE2AuwBIAJBvLecATYC6AEgAkIBNwL0ASACQY8FNgK4ASACQQk6AKcBIAIgAkG0AWo2AvABIAIgAkGcAmo2ArQBIAIgAkGnAWo2ApwCIAJBwAFqIAJB6AFqEOkPIAJB1AFqIAJBoAFqKAIANgIAIAIgAikCmAE3AswBIAQgAyACQcABahCXGSEVIAEtANgBQaIBRw0BIAEgARDAKRCnFgwBCyABEJQLAkACQCABKAKIASIVQYCAAnENACABIBVBgIACcjYCiAEgAkEgaiABEPwSIAIoAiAhFCABIAEoAogBQf//fXE2AogBIAIoAiQhFQwBCyACQShqIAEQ/BIgAigCLCEVIAIoAighFAsgFEEBcUUNBAsgAEECNgIMIAAgFTYCACACQZQBahDYKQsgAkGQAWoQ2CkMDwsgARCUCwJAIBVFDQAgASgCzAEhAyABKALIASEXIAJB/oCAgHg2AugBIAEgFyADIAJB6AFqEKohCwJAIBIoAgBBGkcNAEEBIRUMBAsgAkE4aiASEMQDIAIoAjwhAwJAAkAgFUEBcQ0AIAIoAjghBAwBCyAUIAMgFCADSRshBCAUIAMgFCADSxshAwsgAkHmgICAeDYC6AEgBCADIAJB6AFqEJcZIQMgAS0A2AFBogFHDQ0LIAEgARDAKRCnFgwMCyACQRhqIBUQxAMgAiAPNgL0ASACIBU2AvABIAIgAzYC7AEgAiASNgLoASACIAIoAhw2AvgBIAIgAkHoAWoQgBwiEjYCgAEgAkEANgJ0IAEtANgBIQMLIAEtAJEBQSBxRQ0BIANB/wFxQQlHDQFBACEVCyACQegBaiABQQAgEhBqIAIoAuwBIRIgAigC6AEiA0EHRw0BIABBAjYCDCAAIBI2AgAMCgsgEEEBcQ0BDAMLIAQgCikDADcDACAEQRhqIApBGGopAwA3AwAgBEEQaiAKQRBqKQMANwMAIARBCGogCkEIaikDADcDACACIBI2AsQBIAIgAzYCwAEgFUUNAQJAIAMNACACQQE6ANwBDAILQYSknAFBKEGE+JsBEMccAAsgASgCzAEhAyACQaiBgIB4NgLoASABIA8gAyACQegBahCqIQwBCwJAAkACQAJAAkACQAJAAkAgAigCdEUNACABKALMASESIAIpAnghGUEoQQgQ5ychAwJAQShFDQAgAyACQcABakEo/AoAAAsgAkEANgLYASACIBk3A9ABIAIgEjYCzAEgAiARNgLIASACIAM2AsQBIAJBAjYCwAEMAQsgCCEVIAYhEgJAAkAgAw4HBAECAQUFAAQLIAIgCTYCnAIgAkECNgLsASACQeT3mwE2AugBIAJCATcC9AEgAkHOAjYCuAEgAiACQbQBajYC8AEgAiACQZwCajYCtAEgAkHoAWpB9PebARC1IQALIAghFQwBCyAEIRULIAchEgsgAkEQaiABEP8XIAIoAhQhAyACKAIQQQFxDQECQCADRQ0AIBUgETYCACAVIAEoAswBNgIECyASENcoIBIgAzYCAAsgAS0A2AFBF0cNAiABEJQLIAJBCGogARC0FyACKAIMIQMgAigCCEEBcUUNAQsgAEECNgIMIAAgAzYCACACQcABahCWFQwICyABKALMASEVQShBCBDnJyESAkBBKEUNACASIAJBwAFqQSj8CgAACyACIBU2AtABIAIgETYCzAEgAiADNgLIASACIBI2AsQBIAJBBDYCwAELAkAgEEEBcUUNACABKALMASEDIAJBqIGAgHg2AugBIAEgDyADIAJB6AFqEKohCyACQegAaiACQcABakH09psBEO0cDAELIAsgAikCdDcCACALQQhqIAJB9ABqQQhqKQIANwIAIAJBBzYC6AEgAkHoAGogAkHoAWpB5PabARDtHAsCQCABLQDYASIDQRtHDQAgARCUCwJAAkAgAigCcCIVRQ0AQQQhEgJAAkACQAJAIAIoAmwiAygCACIUQXpqDgICAQALIBRFDQIMBAtBECESCyADIBJqKAIAKAIAQRpHDQILIAJBwAFqIAMgFRDKCiACQQA2AugBIAJBtAFqIAEgAkHAAWogAkHoAWoQxQIgAigCuAEhAwJAIAIoArQBIhJBgICAgHhHDQAgAEECNgIMIAAgAzYCAAwICyACIAIoArwBIhU2ArABIAIgAzYCrAEgAiASNgKoASACIAFBACADIBUQ/R0QjgogAigCBCESAkAgAigCAEEBcUUNACAAQQI2AgwgACASNgIAIAJBqAFqEOclDAgLIAEoAswBIRUgAkHoAWoQ1hkgAikCgAIhGSACKAKIAiEUQcAAQQgQ5yciA0EeNgIAIANBADoAKSADIA46ACggAyAUNgIkIAMgGTcCHCADIBU2AhggAyAPNgIUIAMgEjYCECADIAIpAqgBNwIEIANBDGogAkGoAWpBCGooAgA2AgAgAiADNgLQASACQgc3A8ABIAJB6ABqIAJBwAFqQZT3mwEQ7RwgAkHoAWoQ5yUgBRCwIQwBC0EAQQBBhPebARDAFAALIAEtANgBIQMLIANB/wFxIhJBAUYNAAJAIBJBB0YNACABKALUASEDIAEoAtABIQQgAkGQAmogARCXJCACQQE2AuwBIAJBvLecATYC6AEgAkIBNwL0ASACQY8FNgK4ASACQQc6AJQBIAIgAkG0AWo2AvABIAIgAkGcAmo2ArQBIAIgAkGUAWo2ApwCIAJBwAFqIAJB6AFqEOkPIAJB1AFqIAJBmAJqKAIANgIAIAIgAikCkAI3AswBIAQgAyACQcABahCXGSEDIAEtANgBQaIBRw0DIAEgARDAKRCnFgwDCyABEJQLQQEgDSABLQDYASIDQQFGIhIbIQ0gASkDyAEgGCASGyEYDAALCyABIAEQwCkQpxYMAwsgAEECNgIMIAAgAzYCAAwBCyAAQQI2AgwgACADNgIAIAwQ2CkLIAJB6ABqEIUmDAELIABBAjYCDCAAIAM2AgALIAJBoAJqJAALixsCH38BfiMAQeAAayICJAAgAkEANgJQQQEhAyACQQE2AkQgAkGgoIABNgJAIAJCBDcCSAJAAkAgASgCACIEIAEoAgQiBSACQcAAahDIJg0AIABBKGohBiAAKAIoIgdBAmohCCAAKALAAiEJIAAoArwCIQogACgCuAIhCyAAKAIIIQwgACgCBCENQQAhDgJAAkACQAJAA0AgAkEYaiAOIA0gDEGooIABEIcgAkACQAJAIAIoAhwiD0UNACACKAIYIRACQAJAAkACQCAODQAgECgCACIBQf8BcSERQQAhEgwBCyAQKAIAIgFB/wFxIRFBACESIA4gC00NAQtBACETDAELAkACQCARQf8BRg0AIBEgEUECdmogAUEDcUEAR2pBAmoiFCAPSQ0BIBQgD0HEtYMBEMAUAAsgCCEUIAggD08NCwtBASESIBAgFEECdGooAgAiFEEBIBRBf0obIRMLAkACQAJAAkACQAJAAkACQCABQf8BcUGCfmoOAgAEAQsgD0F/ag4CAQIECwJAIA9BAUYNACAQKAIEIRQgAkEIakECIBAgD0GwpYABEIcgIBFBAnYgAUEDcUEAR2oiFSACKAIMIgFLDQ0gAigCCCEWIAIgFUECaiAQIA9B0KWAARCHICARIAIoAgQiAUsNDCACKAIAIRdBACEYDAYLQQFBAUGgpYABEMAUAAtBAUEBQfClgAEQwBQAC0ECQQJBgKaAARDAFAALAkAgD0EBRg0AIBAoAgQhFCACQRBqQQIgECAPQaCmgAEQhyAgByACKAIUIgFLDQggAigCECEWQQIhGCAHIRUMAgtBAUEBQZCmgAEQwBQACyABQQh2IRkgECgCCCEWIBAoAgQhFEEBIRgLCwJAIA5FDQAgDiAKRiAOIAlGciEBAkAgDiALTQ0AIAENAyACQQA2AlBBASEDIAJBATYCRCACQcyfgAE2AkAgAkIENwJIIAQgBSACQcAAahDIJkUNBAwKCwJAIAENACACQQA2AlBBASEDIAJBATYCRCACQeCfgAE2AkAgAkIENwJIIAQgBSACQcAAahDIJkUNBAwKCyACQQA2AlBBASEDIAJBATYCRCACQeyfgAE2AkAgAkIENwJIIAQgBSACQcAAahDIJkUNAwwJCyACQQA2AlBBASEDIAJBATYCRCACQfSfgAE2AkAgAkIENwJIIAQgBSACQcAAahDIJkUNAgwICyACQQI2AkQgAkHcoYABNgJAIAJCATcCTCACQTo2AiwgAiAAQcQCajYCKCACIAJBKGo2AkhBASEDIAQgBSACQcAAahDIJg0HIAJBAjYCRCACQfihgAE2AkAgAkIBNwJMIAJBIDYCLCACIAAoAhwiAUEARzoAXCACIAJBKGo2AkggAiACQdwAajYCKCAEIAUgAkHAAGoQyCYNByACQQI2AkQgAkGwroMBNgJAIAJCATcCTCACQSE2AiwgAiAAQRhqNgIoIAIgAkEoajYCSCAEIAUgAkHAAGoQyCYNByACQQI2AkQgAkHQroMBNgJAIAJCATcCTCACQSE2AiwgAiAAKAIUIhQ2AlwgAiACQShqNgJIIAIgAkHcAGo2AiggBCAFIAJBwABqEMgmDQcgAkECNgJEIAJBpKKAATYCQCACQgE3AkwgAkEhNgIsIAIgAEGsAmo2AiggAiACQShqNgJIIAQgBSACQcAAahDIJg0HIAJBAjYCRCACQcyigAE2AkAgAkIBNwJMIAJBITYCLCACIABBsAJqNgIoIAIgAkEoajYCSCAEIAUgAkHAAGoQyCYNByACQQI2AkQgAkHwooABNgJAIAJCATcCTCACQSE2AiwgAiAGNgIoIAIgAkEoajYCSCAEIAUgAkHAAGoQyCYNByACQQI2AkQgAkGQo4ABNgJAIAJCATcCTCACQTk2AiwgAiAAQSxqNgIoIAIgAkEoajYCSCAEIAUgAkHAAGoQyCYNByACQbCjgAE2AkAgAkIBNwJMIAJBITYCLCAAKAIkIRogAkECNgJEIAIgGkEAIAEbIBQgDGpBAnRqNgJcIAIgAkEoajYCSCACIAJB3ABqNgIoIAQgBSACQcAAahDIJg0HIAJBADYCUCACQQE2AkQgAkHgroMBNgJAIAJCBDcCSCAEIAUgAkHAAGoQyCYhAwwHCyACQQA2AlBBASEDIAJBATYCRCACQdifgAE2AkAgAkIENwJIIAQgBSACQcAAahDIJg0GCyACIA42AiQgAkECNgJUIAJB0KCAATYCUCACQQM2AkQgAkG4oIABNgJAIAJBAjYCTCACQQs2AjQgAkELNgIsIAIgFDYCXCACIAJBKGo2AkggAiACQdwAajYCMCACIAJBJGo2AiggBCAFIAJBwABqEMgmDQRBACEaQQAhG0EAIRxBACEBQQAhHQNAIBohFCAbIR4gICEfAkADQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBgOAwIAAQILQQEhAyAZIRsgFiEaIAFFDQUMAgsgASAVTw0BIBYhGiABIRsMAwsgASARSQ0BCwJAIB1BAXFFDQBBACEdIBQhGiAeIRsgHyEgDAQLIAJBADYCUEEBIQMgAkEBNgJEIAJBxMCAATYCQCACQgQ3AkggBCAFIAJBwABqEMgmDRECQAJAIA5FDQAgDiALSw0BIAJBADYCUEEBIQMgAkEBNgJEIAJBlKGAATYCQCACQgQ3AkggBCAFIAJBwABqEMgmDRNBACEBAkADQAJAAkACQCATIAFGDQAgAiABNgIoIAghFAJAIBAtAAAiGkH/AUYNACAaIBpBAnZqIBpBA3FBAEdqQQJqIRQLIBQgD08NBAJAAkAgECAUQQJ0aigCACIaQX9MDQAgFCABakEBaiIUIA9JDQEgFCAPQZS1gwEQwBQACyABRQ0CIAJBADYCQEEAQcTwmAEgAkEoaiACQcAAakGktYMBEO0eAAsgECAUQQJ0aigCACEUIAFFDQIgAkEANgJQQQEhAyACQQE2AkQgAkGcsoABNgJAIAJCBDcCSCAEIAUgAkHAAGoQyCZFDQIMGAsgAkEANgJQQQEhAyACQQE2AkQgAkHEwIABNgJAIAJCBDcCSCAEIAUgAkHAAGoQyCZFDQUMFwsgGkH/////B3EhFAtBASEDIAJBATYCRCACQby3nAE2AkAgAkIBNwJMIAJBCzYCLCACIBQ2AlwgAUEBaiEBIAIgAkEoajYCSCACIAJB3ABqNgIoIAQgBSACQcAAahDIJkUNAAwVCwsgFCAPQYS1gwEQwBQAC0EBIQMgAkEBNgJUIAJBtK+DATYCUCACQQI2AkQgAkGgoYABNgJAIAJBATYCTCACQQs2AiwgAkEBNgJcIAIgAkEoajYCSCACIAJB3ABqNgIoIAQgBSACQcAAahDIJg0SC0ECIRsgByEaAkACQAJAIBAtAAAiAUGCfmoOAgECAAsgAUECdiABQQNxQQBHakECaiEbIAEhGgwBC0EBIRoLQQAhFAJAAkACQAJAIBJFDQACQAJAAkAgAUH/AUYNACABIAFBAnZqIAFBA3FBAEdqQQJqIgEgD0kNASABIA9BxLWDARDAFAALIAggD08NA0EBIRQgECAIQQJ0aigCACIBQQBIDQIgAUEBRw0BDAILQQEhFCAQIAFBAnRqKAIAIgFBAEgNASABQQFGDQELIAFBAWohFAsgDiAbIBpqIBRqaiIBIA5JDQEgAkHAAGogARDyICACKAJAQQFGDQIgAigCRCEODA8LIAggD0HUtYMBEMAUAAtBsKGAARD4KQALIAIgAikDSDcDKEHIkZwBQSsgAkEoakH8n4ABQcChgAEQoxIACyABQQJ2IhogFU8NBiACIBYgGkECdGooAgA2AkAgAkHAAGogAUEDcXItAAAhGyAXIRoLIAFBAWohAyAaIAFBAnRqKAIAIRoLIB1BAXFFDQEgFCAaRg0CQQEhHSAbISAgAyEBCyAUQQFGDQcgHA0CDAYLIBqtQiCGIButQv8BgyIhQgiGhCAhhCEhDAMLIBStQiCGIButQv8Bg0IIhoQgH61C/wGDhCEhDAILIAJBADYCUEEBIQMgAkEBNgJEIAJBnLKAATYCQCACQgQ3AkggBCAFIAJBwABqEMgmRQ0DDAoLIBogFUGMqYABEMAUAAsgIUIgiKchFCAhQgiIpyEeICGnIR9BASEdIAMhAQwACwsgHEEBaiEcAkAgH0H/AXEgHkH/AXFGDQAgAiAfOgBbIAIgHjoAJCACQQM2AiwgAkHk14MBNgIoIAJCAzcCNCACQSE2AlQgAkEiNgJMIAJBIjYCRCACIBQ2AlwgAiACQcAAajYCMCACIAJB3ABqNgJQIAIgAkEkajYCSCACIAJB2wBqNgJAIAQgBSACQShqEMgmDQYMAQsgAiAeOgAkIAJBAjYCRCACQbjWgwE2AkAgAkICNwJMIAJBITYCNCACQSI2AiwgAiAUNgJcIAIgAkEoajYCSCACIAJB3ABqNgIwIAIgAkEkajYCKCAEIAUgAkHAAGoQyCYNBQwACwsLIAcgAUGwpoABEIcqAAsgESABQeClgAEQhyoACyAVIAFBwKWAARCHKgALQQEhAwsgAkHgAGokACADDwsgCCAPQdS1gwEQwBQAC58bAgh/AX4CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiAUF0aiICQQcgAkEmSRtBf2oOJAABAgMEBQYHCAkKCwwNDg8QERITIhQVFhciGBkaGxwdHh8gISILIAAoAgghAwJAIAAoAgwiAUUNACADIQIDQAJAIAIoAgBBAkYNACACQQxqKAIAIgQQkQEgBEHAAEEIENIVCyACQRBqIQIgAUF/aiIBDQALCyAAKAIEIAMQxyoPCyAAKAIIIQMCQCAAKAIMIgRFDQAgAyECA0ACQAJAIAIoAgAiAUUNACABEJEBIAFBwABBCBDSFQwBCyACQQRqKAIAIgEQyAQgAUHwAEEIENIVCyACQQxqIQIgBEF/aiIEDQALCyAAKAIEIAMQwyoPCwJAIAAtABxBAkYNACAAKQMIIglCA4NCAFINACAJpyICIAIoAgAiAUF/ajYCACABQQFHDQAgAiACKAIQEI8iCyAAKAIgIgRBBGooAgAhAAJAIAQoAggiAkUNAANAIAAQ/QYgAEHAAGohACACQX9qIgINAAsgBEEEaigCACEACyAEKAIAIAAQyiogBEEQaigCACEAAkAgBCgCFCICRQ0AA0AgACgCACIBEJEBIAFBwABBCBDSFSAAQQxqIQAgAkF/aiICDQALIARBEGooAgAhAAsgBCgCDCAAEMMqAkAgBCgCGCIBQYCAgIB4Rg0AIARBHGooAgAhAAJAIAQoAiAiAkUNAANAIAAQ1QIgAEEwaiEAIAJBf2oiAg0ACyAEQRxqKAIAIQAgBCgCGCEBCyABIAAQyCoLAkAgBCgCPCIARQ0AIAAQrw8gACgCACAAQQRqKAIAEMgqIABBFEEEENIVCwJAIAQoAkAiAEUNACAAKAIAIgIQhwIgAkHgAEEIENIVIABBDEEEENIVCyAEQcgAQQQQ0hUPCyAAKAIEIgAQkQEgAEHAAEEIENIVDwsgACgCDCIAEJEBIABBwABBCBDSFQ8LIAAoAgQiAhCRASACQcAAQQgQ0hUgACgCCCIAEJEBIABBwABBCBDSFQ8LAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEODAABAgMEBQYHCAkLCgsLIABBCGoQ3xUMCgsgAEEIahCwDwwJCyAAQQhqENEXDAgLIABBBGoQkycMBwsgAEEEahD6CgwGCyAAQQRqEOEiDAULIABBBGoQ4SIMBAsgAEEEahCTJwwDCyAAQQRqEOEiDAILIABBBGoQ0BMMAQsCQAJAIAAoAgQOAgABAgsgAEEIahDkEwwBCyAAQQhqENwNCyAAKAI4IgAQkQEgAEHAAEEIENIVDwsgACgCKCICEJEBIAJBwABBCBDSFSAAQQhqEPIQDwsCQCAAKAIIDQAgACkDECIJQgODQgBSDRogCaciACAAKAIAIgJBf2o2AgAgAkEBRw0aIAAgACgCEBCPIg8LIABBDGoQkicPCyAAKAIEIgIQkQEgAkHAAEEIENIVIAAoAggiAhCRASACQcAAQQgQ0hUgACgCDCIAEJEBIABBwABBCBDSFQ8LAkAgAC0AGEEFRw0AIAAoAhAiAhCRASACQcAAQQgQ0hULIAAoAgghAwJAIAAoAgwiAUUNACADQQxqIQIDQCACKAIAIgQQkQEgBEHAAEEIENIVIAJBEGohAiABQX9qIgENAAsLIAAoAgQgAxDHKiAAKAIoIgBFDRcgABCjGiAAQRRBBBDSFQ8LIAAoAhAiAhCRASACQcAAQQgQ0hUCQCAAKAIEIgJBgICAgHhGDQAgAEEEahDeHCACIAAoAggQxyoLIAAoAiAiAEUNFiAAEKMaIABBFEEEENIVDwsgACgCCCEDAkAgACgCDCIBRQ0AIAMhAgNAIAIoAgAiBBCRASAEQcAAQQgQ0hUgAkEEaiECIAFBf2oiAQ0ACwsgACgCBCADEMYqDwsgACkDCCIJQgODQgBSDRQgCaciACAAKAIAIgJBf2o2AgAgAkEBRw0UIAAgACgCEBCPIg8LIABBCGoQ8wsPCyAAKAIIIQMCQCAAKAIMIgFFDQAgAyECA0AgAigCACIEEJEBIARBwABBCBDSFSACQQRqIQIgAUF/aiIBDQALCyAAKAIEIAMQxiogACgCFCICIAAoAhgQhxAgACgCECACEMsqDwsgACgCBCICEJEBIAJBwABBCBDSFQJAIAAoAhgiAkUNACACEKMaIAJBFEEEENIVCyAAKAIIIgRBBGooAgAhAAJAIAQoAggiAkUNAANAIAAoAgAiARCRASABQcAAQQgQ0hUgAEEEaiEAIAJBf2oiAg0ACyAEQQRqKAIAIQALIAQoAgAgABDGKiAEQRBqIgAoAgAgBEEUaigCABCHECAEKAIMIAAoAgAQyyogBEEgQQQQ0hUPCyAAKAIIIQQCQCAAKAIMIgFFDQAgBCECA0AgAhCiByACQShqIQIgAUF/aiIBDQALCyAAKAIEIAQQzCoCQAJAIAAoAhAiAigCAEGAgICAeEYNACACEMUdDAELIAJBBGoQkicLIAJBGEEEENIVAkAgACgCICICRQ0AIAIQlg4gAkEUQQQQ0hULIAAoAiQiAEUNECAAEJQnIABBDEEEENIVDwsCQCAALQAcQQJGDQAgACkDCCIJQgODQgBSDQAgCaciAiACKAIAIgFBf2o2AgAgAUEBRw0AIAIgAigCEBCPIgsgACgCICIFQQRqKAIAIQACQCAFKAIIIgJFDQADQCAAKAIAIgEQkQEgAUHAAEEIENIVIABBDGohACACQX9qIgINAAsgBUEEaigCACEACyAFKAIAIAAQwyogBUEQaigCACEAAkAgBSgCFCICRQ0AA0AgABC7AyAAQdgAaiEAIAJBf2oiAg0ACyAFQRBqKAIAIQALIAUoAgwgABDFKgJAIAUoAjAiAEUNACAAEJEBIABBwABBCBDSFQsCQCAFKAI0IgBFDQAgABCvDyAAKAIAIABBBGooAgAQyCogAEEUQQQQ0hULAkAgBSgCOCIARQ0AIAAQxh0gACgCACAAQQRqKAIAEMYqIABBFEEEENIVCyAFQRxqKAIAIQYCQCAFKAIgIgdFDQBBACEDA0AgBiADQQR0aiIAKAIAIgIQkQEgAkHAAEEIENIVAkAgACgCDCIERQ0AIARBBGoiCCgCACEAAkAgBCgCCCICRQ0AA0AgACgCACIBEIcCIAFB4ABBCBDSFSAAQQRqIQAgAkF/aiICDQALIAgoAgAhAAsgBCgCACAAEMYqIARBFEEEENIVCyADQQFqIgMgB0cNAAsgBUEcaigCACEGCyAFKAIYIAYQxyogBUHAAEEEENIVDwsgACgCDCIARQ0OIAAQkQEgAEHAAEEIENIVDwsgACgCBCIAEJEBIABBwABBCBDSFQ8LIAAoAgQiABCRASAAQcAAQQgQ0hUPCyAAQQhqEPMQDwsgAEEIahDREw8LIAAoAgQiA0HAAGoQjBQgA0GAAWooAgAhAgJAIAMoAoQBIgFFDQADQAJAAkAgAigCAEEFRg0AAkACQCACQTBqIgQpAwBCAFINACACQThqKQMAIglCA4NCAFINASAJpyIEIAQoAgAiBkF/ajYCACAGQQFHDQEgBCAEKAIQEI8iDAELIAQQ0RMLAkACQAJAAkAgAigCAA4FAQIDAAUBCyACQQRqIgQQkREgBCgCACACQQhqKAIAEMwqDAQLIAJBCGoQ8wsMAwsgAkEEaigCAEUNAiACQQhqKAIAIgQQkQEgBEHAAEEIENIVDAILIAJBBGoQjAkMAQsgAkEEaigCACIEEJEBIARBwABBCBDSFQsgAkHYAGohAiABQX9qIgENAAsgA0GAAWooAgAhAgsgAygCfCACEMUqAkAgAygCeCICRQ0AIAIQxh0gAigCACACQQRqKAIAEMYqIAJBFEEEENIVCyADQZABahCRESADKAKQASADQZQBaigCABDMKgJAIAMtADxBBkYNACADQRBqEIwUCyAAKAIEQaABQQgQ0hUPCyAAKAIIIQQCQCAAKAIMIgFFDQAgBCECA0AgAhDXDCACQShqIQIgAUF/aiIBDQALCyAAKAIEIAQQzCoPCyAAKAIEIgIQkQEgAkHAAEEIENIVIAAoAggiABCHAiAAQeAAQQgQ0hUPCyAAKAIEIgAQkQEgAEHAAEEIENIVDwsgACgCBCIAEJEBIABBwABBCBDSFQ8LIAAoAgQiAhCRASACQcAAQQgQ0hUgACgCCCIAEIcCIABB4ABBCBDSFQ8LIAAoAgQiAhCRASACQcAAQQgQ0hUgACgCCCIEQQRqKAIAIQACQCAEKAIIIgJFDQADQCAAKAIAIgEQhwIgAUHgAEEIENIVIABBBGohACACQX9qIgINAAsgBEEEaigCACEACyAEKAIAIAAQxiogBEEUQQQQ0hUPCyAAKAIEIgIQkQEgAkHAAEEIENIVIAAoAggiABCHAiAAQeAAQQgQ0hUPCyAAKQMIIglCA4NCAFINASAJpyIAIAAoAgAiAkF/ajYCACACQQFHDQEgACAAKAIQEI8iDwsCQAJAIAAoAgQiACgCAEEDRg0AIAAQsA8MAQsgAEEEahDHDQsgAEEoQQgQ0hULC+4aAhN/A34jAEGQAmsiAiQAIAEoAtABIQMgARCUCyACQcAAakEIQQRBDEGQ1psBEOIYIAJBADYCVCACIAIoAkQiBDYCUCACIAIoAkA2AkwgAkHgAWpBBGohBSACQeABakEEciEGIAJBsAFqQQhqIQcgAkHgAWpBCGohCCACQZABakEIaiEJIAEtANgBIQpBACELQQAhDANAIAtBDGwhDQJAAkACQANAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCkH/AXEiCkEDRg0AIAIgASgC0AEiDjYCdAJAIApBD0YNAAJAIApBHEcNACABEJQLIAEoAswBIQ8gAkEoaiABEJATIAIgAigCLCIKNgJcIAIoAihBAXFFDQQgAkEBNgJYDBYLIAJB4AFqIAEQyg8gAi0A4AENAiACLQDhASEQIAEoAswBIREgASgCyAEhEiACQeABaiABENkeIAIoAuQBIQogAigC4AEiD0EFRg0VIAcgCCkDADcDACAHQRBqIAhBEGopAwA3AwAgB0EIaiITIAhBCGopAwA3AwAgAiAKNgK0ASACIA82ArABIAEtANgBIQogAS8BkAFBgMAAcSIURQ0GIApBF0sNBSAKIQ5BASAKdEGRiYIEcQ0JIApBCUcNBQwHCyABEJQLIAJB4AFqIAEQ2R4gAigC5AEhDiACKALgASIPQQVGDQMgAkH4AGpBEGoiFCAIQRBqKQMANwMAIAJB+ABqQQhqIhMgCEEIaikDADcDACACIAgpAwA3A3gCQAJAIAEoAogBIgpBgICAEHENACABIApBgICAEHI2AogBIAJBMGogAigCdCABENISIAIoAjAhECABIAEoAogBQf///29xNgKIASACKAI0IQoMAQsgAkE4aiACKAJ0IAEQ0hIgAigCPCEKIAIoAjghEAsgCSACKQN4NwMAIAlBCGogEykDADcDACAJQRBqIBQpAwA3AwAgAiAONgKUASACIA82ApABAkACQCAQQQFxRQ0AIAJBkAFqELUbQQEhDgwBCyAFIAIpA5ABNwIAIAVBGGogAkGQAWpBGGopAwA3AgAgBUEQaiACQZABakEQaikDADcCACAFQQhqIAkpAwA3AgBB8AAQxygiDkEKNgIAAkBBJEUNACAOQQRqIAJB4AFqQST8CgAACyAOIAo2AiggAiAONgJgQQAhCkEAIQ4LIAIgDjYCWCACIAo2AlwMEQsgARCUCyABKALMASEKAkAgDEEBcUUNACACQeABaiABQfQBaiADIBWnIBVCIIinEJMGCyAAQQ42AgAgACACKQJMNwIEIAAgCjYCFCAAIAM2AhAgAEEMaiACQdQAaigCADYCAAwUCyACKALkASEKDBILIAIgDzYCZCACIA42AmAgAkEANgJYDA8LIAIgDjYCXCACQQE2AlggDiEKDBALIAohDiAKQUBqQQJJDQMgChDVFA0AQRIhDiAKQRJGDQMCQCAPDQAgCiEOIApBA0YNBAsgASgC1AEhCiABKALQASEOIAJB9YCAgHg2AuABIAEgDiAKIAJB4AFqEKohIAEoAswBIQ4gAigCdCEPQcAAEOsqIgpFDQIgCiAONgIIIAogDzYCBCAKQTE2AgAgBSACKQOwATcCACAFQQhqIAcpAwA3AgAgBUEQaiACQbABakEQaikDADcCACAFQRhqIAJBsAFqQRhqKQMANwIAQfAAEMcoIg5BBjYCAAJAQSRFDQAgDkEEaiACQeABakEk/AoAAAsgDiAKNgIoIAIgDjYCYCACQgA3AlhBACEKDA0LIAohDiAKQQlHDQILIAEQlAsgAiABEJATIAIoAgQhCgJAIAIoAgBBAXENACAFIAIpA7ABNwIAIAVBGGogAkGwAWpBGGopAwA3AgAgBUEQaiACQbABakEQaikDADcCACAFQQhqIAcpAwA3AgBB8AAQxygiDkEGNgIAAkBBJEUNACAOQQRqIAJB4AFqQST8CgAACyAOIAo2AiggAiAONgJgQQAhCiACQQA2AlwMDAsgDw0CIAIpA7gBEJ4fDA0LAAsCQAJAIBRBAEcgDkH/AXFBEkZxDQAgDkUNACAPDQEgCSATKQMANwMAIAIgBykDADcDkAECQCAOQQpHDQAgARCUCyABKALMASEKIAEoAsgBIQ4gAkGSgYCAeDYC4AEgASAOIAogAkHgAWoQqiEgAS0A2AEiCiEOCwJAAkACQAJAIA5B/wFxIg5BfWoOBQECAgIBAAsgDkEXRw0BCyAKQf8BcUEXRg0BIAIpA7gBIRYgAikDwAEhF0EAIQpB8AAQxygiDkEAOgAcIA5BADYCGCAOIBc3AxAgDiAWNwMIIA5BBTYCACACIA42AmAMCwsgAkEYaiACQZABahCcFSACKAIYIgogAigCHCIOQcCynAFBAxCuIw0HIAogDkHDspwBQQMQriMNByAKIA5BxrKcAUEFEK4jDQcCQCABLQCRAUEgcQ0AIAYgARCXJCACQSo2AvQBIAJBy7KcATYC8AEgAkGwgICAeDYC4AEgASgC0AEgASgC1AEgAkHgAWoQlxkhCiABLQDYAUGiAUcNBiABIAEQwCkQpxYMBgsgBiABEJckIAJB0gA2AvQBIAJB9bKcATYC8AEgAkGwgICAeDYC4AEgASgC0AEgASgC1AEgAkHgAWoQlxkhCiABLQDYAUGiAUcNBCABIAEQwCkQpxYMBAsgARCUCyACQSBqIAEQkBMgAigCJCEKAkAgAigCIEEBcUUNAEEBIQ4gAkEBNgJYIAIgCjYCXCACKQO4ARCeHwwLCyABKALMASEPIAIoAnQhFCACKQO4ASEWIAIpA8ABIRdB8AAQxygiDiAKNgIoQQAhCiAOQQA6ACQgDkEANgIgIA4gFzcDGCAOIBY3AxAgDiAPNgIMIA4gFDYCCCAOQQc2AgAgAiAONgJgDAkLAkACQCABKAKIASIKQYCAgBBxDQAgASAKQYCAgBByNgKIASACQQhqIAIoAnQgARDTEiACKAIIIQ4gASABKAKIAUH///9vcTYCiAEgAigCDCEKDAELIAJBEGogAigCdCABENMSIAIoAhQhCiACKAIQIQ4LAkAgDkEBcUUNACACQbABahC1GwwNCyAFIAIpA7ABNwIAIAVBGGogAkGwAWpBGGopAwA3AgAgBUEQaiACQbABakEQaikDADcCACAFQQhqIAcpAwA3AgBB8AAQxygiDkEKNgIAAkBBJEUNACAOQQRqIAJB4AFqQST8CgAACyAOIAo2AiggAiAONgJgQQAhCgwKCyAGIAEQlyQgAkEKNgL0ASACQceznAE2AvABIAJBsICAgHg2AuABIAEoAtABIAEoAtQBIAJB4AFqEJcZIQoCQCABLQDYAUGiAUcNACABIAEQwCkQpxYLIAJBATYCWCACIAo2AlwLIAJBsAFqELUbDAoLIAJBATYCWAwBCyACQQE2AlgLIAIgCjYCXAwBCwJAIBBBAXFFDQAgAkH9gICAeDYC4AEgASASIBEgAkHgAWoQqiELQQAhCgJAIAJBkAFqQcaynAFBBRDYH0UNAAJAIAEtANgBIgpBD0cNACABEJQLCyAKQQ9GIQoLIAIgCjoA1wEgAkHgAWogARDZHiACKALkASEKIAIoAuABIg5BBUcNASACIAo2AlwgAkEBNgJYCyACKQOQARCeHwwFCyACKQP4ASEWIAIoAvABIQ8gAigC6AEhFCACIAIoAvQBIhMgAigC7AEiECAOQQJJIhEbNgLcASACIA8gFCARGzYC2AEgAiAWNwP4ASACIBM2AvQBIAIgDzYC8AEgAiAQNgLsASACIBQ2AugBIAIgCjYC5AEgAiAONgLgASABKAKIASEKIAIgAkHYAWo2AogCIAIgAkH0AGo2AoQCIAIgAkGQAWo2AoACIAIgAkHXAWo2AowCAkACQCAKQYCAgBBxDQAgASAKQYCAgBByNgKIASACQdgAaiACQeABaiABENUPIAEgASgCiAFB////b3E2AogBDAELIAJB2ABqIAJB4AFqIAEQ1Q8LIAIpA5ABEJ4fIAIoAlwhCiACKAJYIQ4MAQsgAkIANwJYQQAhDgsgDkEBcQ0CCyACKQJgIRYCQCALIAIoAkxHDQAgAkHMAGoQ4hsgAigCUCEECyAEIA1qIg4gCjYCACAOQQRqIBY3AgAgAiALQQFqIgs2AlQgDUEMaiENAkAgAS0A2AEiCkF9ag4FAQAAAAQACwsgASgC1AEhCiABKALQASELIAJB6ABqIAEQlyQgAkEBNgLkASACQby3nAE2AuABIAJCATcC7AEgAkGPBTYCfCACQQc6ANgBIAIgAkH4AGo2AugBIAIgAkHYAGo2AnggAiACQdgBajYCWCACQZABaiACQeABahDkDyACQaQBaiACQfAAaigCADYCACACIAIpAmg3ApwBIAsgCiACQZABahCXGSEKIAEtANgBQaIBRw0AIAEgARDAKRCnFgsgAEEyNgIAIAAgCjYCBCACQcwAahDtJQsgAkGQAmokAA8LIAEQlAtBASAMIAEtANgBIgpBA0YiDRshDCABKQPIASAVIA0bIRUMAAsLnxoBFn8jAEHABmsiBCQAAkACQCACQQFxDQAgBEGAAWoQiBIMAQtBgAJFDQAgBEGAAWogA0HIAGpBgAL8CgAACyADKAIIIQUCQAJAAkACQAJAAkACQAJAAkACQCABQf8BcQ0AIAVBf0wNAiAFQQFNDQEgBUEBdEF8aiEFCwJAIAVBICAELQD/AiICZ2siBkEAIAIbdCIHQQEgBnRBASACGyICSQ0AAkAgByACayICQf////8HSQ0AIABC/v///wc3AxAgAEEANgIIIABBATYCACAAIAKtNwMYDAcLIAMoAtQCIQICQAJAAkACQCABQf8BcQ0AIAJFDQMCQCACQX9qIgJBf0wNACACQQF0IQYMAgtB9JmAARD4KQALIAJFDQEgAkF/aiEGCyAEQbQGaiAHQZSagAEQ5gsgBEH4AGogBkEEQQxBpJqAARC3FyAEQQA2AqAGIAQgBCgCfCICNgKcBiAEIAQoAngiBzYCmAZBACEIAkAgBiAHTQ0AIARBmAZqQQAgBkEEQQwQwRsgBCgCoAYhCCAEKAKcBiECCyACIAhBDGxqIQIgBkEBIAZBAUsbIglBf2ohBwNAAkAgBw0AIAggCWohBwJAAkAgBg0AQQBBBBCFKiAHQX9qIQcMAQsgAkEANgIIIAJCgICAgMAANwIACyAEQYgGaiAHNgIAIAQgBCkCmAY3A4AGIAMoAjQhAiAEQYADaiADKAI4IghBAEEEQQQQmQwgBCgChAMhCgJAAkAgBCgCgANBAUYNACAEKAKIAyEJAkAgCEECdCIHRQ0AIAkgAiAH/AoAAAsCQAJAIAMoAjwiBw0ADAELIAcgBygCACICQQFqNgIAIAJBf0wNAiADKAJEIQsgAygCQCEMCyADLQDgAiENIARBwANqIQYgBC0A/wIhAgJAQYACRQ0AIAYgBEGAAWpBgAL8CgAACyAEQdAFakIANwMAIARBgANqQQhqIARBtAZqQQhqKAIANgIAIARBgANqQRRqIARBgAZqQQhqKAIANgIAIARCADcDyAUgBCANOgDYBSAEIAs2ArADIAQgDDYCrAMgBCAHNgKoAyAEIAg2AqADIAQgCTYCnAMgBCAKNgKYAyAEIAQpArQGNwOAAyAEIAQpA4AGNwKMAyAEQQA2AqQDIAQgAykCyAI3A8AFIARBICACZ2tBACACGyIONgK8AyAEIAJBAWo2ArgDIAQgBTYCtAMCQCABQf8BcQ4DAAsKAAsgBEHcBWogAygCCCICQfSagAEQ5gsgBEHoBWogAkGEm4ABEOYLIARB9AVqIAVBlJuAARDUFSADKAIEIQcgBCACNgKMBiAEQQA2AogGIAQgByACQRRsajYChAYgBCAHNgKABkECIA50IQ9BASAOdCEQIAMoAtwCIREgAygC2AIhEiAEKAL8BSETIAQoAvgFIRQgBCgC8AUhFSAEKALsBSEWIAQoAuQFIRcgBCgC4AUhGEEAIQsDQCAEQfAAaiAEQYAGahD/FgJAAkACQAJAIAQoAnQiB0UNACAEKAJwIgJBAk8NASAYIBcgAkHUnYABEIgjIAs2AgAgFiAVIAJB5J2AARCIIyALNgIADAILQQAhAiAEKAK0AyEIA0ACQAJAAkAgAiAIRg0AIAIgBCgC/AUiB08NASACIA50IQcgAkEBaiEFIAQoAogDIQYgBCgChAMhAQJAIAQoAvgFIAJqLQAADQAgBEEwaiABIAYgB0H0m4ABEIYgIARBKGogECAEKAIwIAQoAjRBhJyAARDHIiAEKAIsQQJ0IQcgBCgCKCECA0AgB0UNBCACIAQoAuAFIAQoAuQFIAIoAgBBlJyAARCIIygCADYCACAHQXxqIQcgAkEEaiECDAALCyAEQSBqIAEgBiAHQaScgAEQhiAgBEEYaiAQIAQoAiAgBCgCJEG0nIABEMciIAQoAhxBAnQhByAEKAIYIQIDQCAHRQ0DIAIgBCgC7AUgBCgC8AUgAigCAEHEnIABEIgjKAIANgIAIAdBfGohByACQQRqIQIMAAsLIAQgBCgC7AUiAiAEKALwBSIHIAMoAtACQaSbgAEQiCMoAgA2AsgFIAQgAiAHIAMoAtQCQbSbgAEQiCMoAgA2AswFIAQgBCgC4AUiBSAEKALkBSASQcSbgAEQiCMoAgA2AtAFIAQgAiAHIBFB1JuAARCIIygCADYC1AUgBCgC9AUgBCgC+AUQiiogBCgC6AUgAhCFKiAEKALcBSAFEIUqDBILIAIgB0Hkm4ABEMAUAAsgBSECDAALCwJAAkACQCACIBJGDQACQCACIBFGDQAgBCALNgKQBiAEIAsgEGo2ApQGIBggFyACQdScgAEQiCMgBCgCkAY2AgAgFiAVIAJB5JyAARCIIyAEKAKUBiIFNgIAIBQgEyAFIA52QfScgAEQ+iNBAToAACAHQQhqKAIARQ0DIARB6ABqIAMgAhD1IyAEQYADaiAEKAKQBiAEKAJoIgVBKGooAgAgBUEsaigCACAEKAJsEOEJIARB4ABqIAMgAhD1IyAEQYADaiAEKAKUBiAEKAJgIgVBKGooAgAgBUEsaigCACAEKAJkEOEJDAMLIBggFyARQYSdgAEQiCNBADYCACAWIBUgEUGUnYABEIgjIAs2AgAgFCATIAsgDnZBpJ2AARD6I0EBOgAADAELIBggFyASQbSdgAEQiCMgCzYCACAWIBUgEkHEnYABEIgjQQA2AgALAkAgB0EIaigCAEUNACAEQcgAaiADIAIQ9SMgBEGAA2ogCyAEKAJIIgdBKGooAgAgB0EsaigCACAEKAJMEOEJCyAEQcAAaiADIAIQ9CMgBCAEKQNANwK0BkEAIQdBACECA0AgBEGYBmogBEG0BmoQ/xICQAJAIAQtAJgGQQFHDQAgAiAELQCZBiIKIAIgCksbIQggBCgAmgYhDAwBCyAEQQA6AKAGIARB/wE2ApwGIAQgAjYCmAYDQCABQf8BcSEFA0AgBEE4aiAEQZgGahDXFiAEKAI4QQFxRQ0FIAcgBSAGIAQoAjxB/wFxai0AACIBQf8BcUZxIQJBASEHIAINAAtBASEHIAQoAoQDIAQoAogDIAsgAUEBEJMhDAALCwNAAkACQCAIIAJGDQAgByABQf8BcSAGIAJB/wFxai0AACIJQf8BcUZxIQVBASEHIAJBAWohAiAFRQ0BDAILAkAgByABQf8BcSAGIApqLQAAIgJB/wFxRnENACAEKAKEAyAEKAKIAyALIAIgDBCTISACIQELIAhBAWohAkEBIQcMAgtBASEHIAQoAoQDIAQoAogDIAsgCUEBEJMhIAkhAQwACwsLIAQgAzYCnAYgBCAHNgKYBiAEIARBlAZqNgKoBiAEIARBkAZqNgKkBiAEIARBgANqNgKgBiAEQdgAaiADIAIQ9CMgBCAEKQNYNwKsBkEAIQdBACECAkADQCAEQbQGaiAEQawGahD/EgJAAkAgBC0AtAZBAUcNACACIAQtALUGIg0gAiANSxshCCAEKAC2BiEZDAELIARBADoAvAYgBEH/ATYCuAYgBCACNgK0BgNAIAFB/wFxIQUDQCAEQdAAaiAEQbQGahDXFiAEKAJQQQFxRQ0EIAcgBSAGIAQoAlQiCEH/AXFqLQAAIgFB/wFxRnEhAkEBIQcgAg0AC0EBIQcgBEGYBmogCCABQQEQ3AcMAAsLA0ACQAJAIAggAkYNACAHIAFB/wFxIAYgAkH/AXFqLQAAIglB/wFxRnEhBUEBIQcgAiEKIAJBAWoiDCECIAVFDQEMAgsCQCAHIAFB/wFxIAYgDWotAAAiAkH/AXFGcQ0AIARBmAZqIA0gAiAZENwHIAIhAQsgCEEBaiECQQEhBwwCC0EBIQcgBEGYBmogCiAJQQEQ3AcgCSEBIAwhAgwACwsLIA8hAgwBCyAQIQILIAsgAmohCwwACwsgCiAEKAKIA0HgtJwBEMEmCwALIARBgANqQQRBABCVFiACQQhqIARBgANqQQhqKAIANgIAIAIgBCkCgAM3AgAgB0F/aiEHIAJBDGohAgwACwtBhJqAARD4KQALQeSZgAEQ+CkAC0HUmYABEPgpAAtBxJmAARD4KQALQbSZgAEQ+CkAC0EBIAMgBEGAA2oQ2gQMAQtBACADIARBgANqENoECwJAIAQoAoADIAQoAogDIgJNDQAgBEEQaiAEQYADaiACQQQQxBQgBCgCECICQYGAgIB4Rw0CCwJAIAQoApgDIAQoAqADIgJNDQAgBEEIaiAEQZgDaiACQQQQxBQgBCgCCCICQYGAgIB4Rw0DCwJAIAQoAowDIAQoApQDIgJNDQAgBCAEQYwDaiACQQwQxBQgBCgCACICQYGAgIB4Rw0ECwJAQdwCRQ0AIABBBGogBEGAA2pB3AL8CgAACyAAQQA2AgALIARBwAZqJAAPCyACIAQoAhRBtJqAARDBJgALIAIgBCgCDEHEmoABEMEmAAsgAiAEKAIEQdSagAEQwSYAC+UXAhh/AX4jAEGgAWsiAiQAIAEoAgQhAyACQcAAaiABKAIIIgRBCEE4EPcOIAIoAkQhBQJAAkACQAJAIAIoAkBBAUYNACACKAJIIQYCQCAFRQ0AIAMgBEE4bGohByACQQhqQQRyIQhBACEJIAUhCgNAIAkhCyADIAdGDQECQAJAAkACQAJAAkACQAJAIAMoAgBBfGoiAUEEIAFBB0kbDgcAAQIDBAUGAAsgAygCCCEJIAMoAhQhDCADKAIQIQ0gAkHAAGogAygCDCIOQQhBKBD3DiACKAJEIQ8gAigCQEEBRg0KIAIoAkghEAJAIA9FDQAgDkEobCERIBAhASAPIRIDQCARRQ0BIAJBwABqIAkQnAMgAUEgaiACQcAAakEgaikDADcDACABQRhqIAJBwABqQRhqKQMANwMAIAFBEGogAkHAAGpBEGopAwA3AwAgAUEIaiACQcAAakEIaikDADcDACABIAIpA0A3AwAgAUEoaiEBIBFBWGohESAJQShqIQkgEkF/aiISDQALC0EAIQFBACEJAkAgAygCGCIRRQ0AELclIQkgESkCBCEaIBEoAgAhEhC4JSERIAJBwABqIBIQcwJAQeAARQ0AIBEgAkHAAGpB4AD8CgAACyAJIBo3AgQgCSARNgIACwJAIAMoAhwiEUUNABC6JSEBIBEoAgwhEiARKAIQIRMgAkHAAGogERDcBiABQRBqIBM2AgAgASACKQJANwIAIAIgEjYCTCABQQhqIAJBwABqQQhqKQIANwIACyACIAE2AiQgAiAJNgIgIAIgDDYCHCACIA02AhggAiAONgIUIAIgEDYCECACIA82AgwgAkEENgIIDAYLIAMoAgghCSADKAIUIQwgAygCECENIAJBwABqIAMoAgwiDkEIQSgQ9w4gAigCRCEPIAIoAkBBAUYNCiACKAJIIRACQCAPRQ0AIA5BKGwhESAQIQEgDyESA0AgEUUNASACQcAAaiAJEJwDIAFBIGogAkHAAGpBIGopAwA3AwAgAUEYaiACQcAAakEYaikDADcDACABQRBqIAJBwABqQRBqKQMANwMAIAFBCGogAkHAAGpBCGopAwA3AwAgASACKQNANwMAIAFBKGohASARQVhqIREgCUEoaiEJIBJBf2oiEg0ACwtBACEBQQAhCQJAIAMoAhgiEUUNABC3JSEJIBEpAgQhGiARKAIAIRIQuCUhESACQcAAaiASEHMCQEHgAEUNACARIAJBwABqQeAA/AoAAAsgCSAaNwIEIAkgETYCAAsCQCADKAIcIhFFDQAQuiUhASARKAIMIRIgESgCECETIAJBwABqIBEQ3AYgAUEQaiATNgIAIAEgAikCQDcCACACIBI2AkwgAUEIaiACQcAAakEIaikCADcCAAsgAiABNgIkIAIgCTYCICACIAw2AhwgAiANNgIYIAIgDjYCFCACIBA2AhAgAiAPNgIMIAJBBTYCCAwFCyADLQAUIRIgAygCCCEPIAMoAgQhDiADKAIQIQkQtSUhASACQcAAaiAJEEIgAUE4aiACQcAAakE4aikDADcDACABQTBqIAJBwABqQTBqKQMANwMAIAFBKGogAkHAAGpBKGopAwA3AwAgAUEgaiACQcAAakEgaikDADcDACABQRhqIAJBwABqQRhqKQMANwMAIAFBEGogAkHAAGpBEGopAwA3AwAgAUEIaiACQcAAakEIaikDADcDACABIAIpA0A3AwAgAy0AFiEQIAMtABUhDAJAAkAgAygCDCIRDQBBACEJDAELELclIQkgESkCBCEaIBEoAgAhDRC4JSERIAJBwABqIA0QcwJAQeAARQ0AIBEgAkHAAGpB4AD8CgAACyAJIBo3AgQgCSARNgIACyACIBA6AB4gAiAMOgAdIAIgEjoAHCACIAE2AhggAiAJNgIUIAIgDzYCECACIA42AgwgAkEGNgIIDAQLIAMoAgwhEiADKAIIIQ8gAygCBCEJELUlIQEgAkHAAGogCRBCIAFBOGogAkHAAGpBOGopAwA3AwAgAUEwaiACQcAAakEwaikDADcDACABQShqIAJBwABqQShqKQMANwMAIAFBIGogAkHAAGpBIGopAwA3AwAgAUEYaiACQcAAakEYaikDADcDACABQRBqIAJBwABqQRBqKQMANwMAIAFBCGogAkHAAGpBCGopAwA3AwAgASACKQNANwMAIAMtABQhDgJAAkAgAygCECIRDQBBACEJDAELELclIQkgESkCBCEaIBEoAgAhEBC4JSERIAJBwABqIBAQcwJAQeAARQ0AIBEgAkHAAGpB4AD8CgAACyAJIBo3AgQgCSARNgIACyACIA46ABwgAiAJNgIYIAIgEjYCFCACIA82AhAgAiABNgIMIAJBBzYCCAwDCyADKQMoIRogAygCMCEJELUlIQEgAkHAAGogCRBCIAFBOGogAkHAAGpBOGopAwA3AwAgAUEwaiACQcAAakEwaiIJKQMANwMAIAFBKGogAkHAAGpBKGopAwA3AwAgAUEgaiACQcAAakEgaiIRKQMANwMAIAFBGGogAkHAAGpBGGoiEikDADcDACABQRBqIAJBwABqQRBqIg8pAwA3AwAgAUEIaiACQcAAakEIaiIOKQMANwMAIAEgAikDQDcDACADLQA0IRAgAkHAAGogAxCcAyAJIAE2AgAgAkEIakEoaiAaNwMAIAJBCGpBCGogDikDADcDACACQQhqQRBqIA8pAwA3AwAgAkEIakEYaiASKQMANwMAIAJBCGpBIGogESkDADcDACACIBA6AHQgAkEIakEwaiAJKQMANwMAIAIgAikDQDcDCAwCCyADKAIYIRQgAygCFCEVIAMoAhAhARC1JSENIAJBwABqIAEQQiANQThqIAJBwABqQThqKQMANwMAIA1BMGogAkHAAGpBMGopAwA3AwAgDUEoaiACQcAAakEoaikDADcDACANQSBqIAJBwABqQSBqIg4pAwA3AwAgDUEYaiACQcAAakEYaiIQKQMANwMAIA1BEGogAkHAAGpBEGoiDCkDADcDACANQQhqIAJBwABqQQhqIg8pAwA3AwAgDSACKQNANwMAIAMoAgghCSADLQAlIRYgAy0AJCEXIAJBwABqIAMoAgwiGEEIQSgQ9w4gAigCRCETIAIoAkBBAUYNByACKAJIIRkCQCATRQ0AIBhBKGwhESAZIQEgEyESA0AgEUUNASACQcAAaiAJEJwDIAFBIGogDikDADcDACABQRhqIBApAwA3AwAgAUEQaiAMKQMANwMAIAFBCGogDykDADcDACABIAIpA0A3AwAgAUEoaiEBIBFBWGohESAJQShqIQkgEkF/aiISDQALC0EAIQFBACEJAkAgAygCHCIRRQ0AELclIQkgESkCBCEaIBEoAgAhEhC4JSERIAJBwABqIBIQcwJAQeAARQ0AIBEgAkHAAGpB4AD8CgAACyAJIBo3AgQgCSARNgIACwJAIAMoAiAiEUUNABC6JSEBIBEoAgwhEiARKAIQIQ4gAkHAAGogERDcBiAB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DAYLQQAhBgJAIAggASgCzAJLDQAgAUEQaigCACABQRRqKAIAIAggASgCPHZBfmpBqLqDARCNIyIHKAIEIAcoAghBABCOIygCACEHIANBEGogByAEIAFBHGooAgAgAUEgaigCACAHQZi6gwEQiCMoAgBrIAQQ2BZBASEGCyACKAIMIhIgBCASIARLGyEHIAFBwABqIQsgAigCCCECIAFBCGohDCABQQRqIQ0gAUEUaiEUIAFBEGohDyABQSBqIRAgAUEcaiERA0ACQCAFIARHDQAgACADKQIQNwIEIAAgBjYCACAAQQxqIANBGGooAgA2AgAMBwsCQAJAIAcgBEYNACANKAIAIAwoAgAgCCALIAIgBGotAABqLQAAakGIuoMBEIgjKAIAIgggASgCyAJLDQECQAJAIAhFDQAgCCABKALMAk0NAQwDCyAAIAMpAhA3AgQgACAGNgIAIABBDGogA0EYaigCADYCAAwJCyAPKAIAIBQoAgAgCCABKAI8dkF+akGouoMBEI0jIg4oAgQgDigCCEEAEI4jKAIAIQ5BASEGIANBEGogDiAEQQFqIhMgESgCACAQKAIAIA5BmLqDARCIIygCAGsgExDYFgwBCyAHIBJBrJ+AARDAFAALIARBAWohBAwACwsCQCABKALQAiIIDQAQjC0hAiAAQQI2AgAgACACNgIEDAULAkACQCAIIAEoAswCTQ0AIAIoAgwiDiAEIA4gBEsbIQcgAUHAAGohCyACKAIIIQIgAUEIaiEMIAFBBGohDQNAAkAgBSAERw0AIABBADYCAAwICwJAAkAgByAERg0AIA0oAgAgDCgCACAIIAsgAiAEai0AAGotAABqQYi6gwEQiCMoAgAiCCABKALIAksNAQJAIAgNAEEAIQIMBQsgCCABKALMAksNASAEQQFqIQQMAwsgByAOQayfgAEQwBQACyAEQQFqIQQMAAsLIAFBEGooAgAgAUEUaigCACAIIAEoAjx2QX5qQai6gwEQjSMiAigCBCACKAIIQQAQjiMoAgAhAiADQRBqIAIgBCABQRxqKAIAIAFBIGooAgAgAkGYuoMBEIgjKAIAayAEENgWIABBDGogA0EYaigCADYCACAAIAMpAhA3AgRBASECCyAAIAI2AgAMBAsCQCABKALQAiIIDQAQjC0hAiAAQQI2AgAgACACNgIEDAQLAkAgCCABKALMAksNACABQRBqKAIAIAFBFGooAgAgCCABKAI8dkF+akGouoMBEI0jIgIoAgQgAigCCEEAEI4jKAIAIQIgAyACIAQgAUEcaigCACABQSBqKAIAIAJBmLqDARCIIygCAGsgBBDYFiAAQQE2AgAgAEEMaiADQQhqKAIANgIAIAAgAykCADcCBAwECyADQRBqIAcgAUEsaiITKAIAIgwoAghBf2pBeHFqQQhqIAIoAggiCyACKAIMIgcgBCAFIAwoAhAREgACQAJAAkAgAygCECICDgMCAQACCyABQcAAaiEMIAMoAhQhBCABQQhqIQ0gAUEEaiEOAkACQAJAA0ACQCAEIgIgBUkNACAAQQA2AgAMCgsgAiAHTw0CAkACQCAOKAIAIA0oAgAgCCAMIAsgAmotAABqLQAAakGIuoMBEIgjKAIAIgggASgCyAJLDQAgCEUNBSAIIAEoAswCTQ0DIANBEGogASgCKCATKAIAIgQoAghBf2pBeHFqQQhqIAsgByACIAUgBCgCEBESACADKAIQRQ0BIAMoAhQiBCACSw0CCyACQQFqIQQMAQsLIABBADYCAAwICyABQRBqKAIAIAFBFGooAgAgCCABKAI8dkF+akGouoMBEI0jIggoAgQgCCgCCEEAEI4jKAIAIQggAyAIIAJBAWoiAiABQRxqKAIAIAFBIGooAgAgCEGYuoMBEIgjKAIAayACENgWIABBATYCACAAQQxqIANBCGooAgA2AgAgACADKQIANwIEDAcLIAIgB0Gsn4ABEMAUAAsgAEEANgIADAULIAAgAykCFDcCBCAAQQxqIANBEGpBDGooAgA2AgALIAAgAjYCAAwDC0EAIQYCQCAIIAEoAswCSw0AIAFBEGooAgAgAUEUaigCACAIIAEoAjx2QX5qQai6gwEQjSMiBygCBCAHKAIIQQAQjiMoAgAhByADIAcgBCABQRxqKAIAIAFBIGooAgAgB0GYuoMBEIgjKAIAayAEENgWIAEoAighB0EBIQYLIANBEGogByABQSxqIgwoAgAiDSgCCEF/akF4cWpBCGogAigCCCILIAIoAgwiByAEIAUgDSgCEBESAAJAAkACQAJAIAMoAhAiAg4DAgEAAgsgAUHAAGohDSADKAIUIQQgAUEIaiEOIAFBBGohEyABQRRqIRQgAUEQaiEPIAFBIGohECAB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A2pBARDIIgsgBCgCrAMgCEECdGogBzYCACAEIAhBAWo2ArADDAELCyAGIApB5LWDARDAFAALIAIgBSAJQZyqgAEQiCMgDjYCAAwACwsgByAEKAKwA0HgtJwBEMEmCwALIAAgBCkDkAY3AxggAEL+////BzcDECAAIA42AgwgAEEANgIIIABBgICAgHg2AgAgBCgCqAMgBCgCrAMQhSogBCgCtAMgBCgCuAMQhSogBCgCxAMiAkUNACACIAIoAgAiBkF/ajYCACAGQQFHDQAgEBCKEgsgBCgCnAMgBCgCoAMQhSogBEGwBmokAAu4GAEIfyMAQYACayIDJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACLQDYAUHQAEYNACACKALUASEEIAIoAtABIQUgA0EkaiACEJckIANBATYCxAEgA0G8t5wBNgLAASADQgE3AswBIANBjwU2AjQgA0HQADoATCADIANBMGo2AsgBIAMgA0HkAGo2AjAgAyADQcwAajYCZCADQZgBaiADQcABahDkDyADQawBaiADQSxqKAIANgIAIAMgAykCJDcCpAEgBSAEIANBmAFqEJcZIQQgAi0A2AFBogFGDQEMCgsgAhCUCyADQcABaiACIAEoAgwtAABBARCkBSADKALAASEEIAMtANQBIgVBA0YNCCADQTBqQQxqIANBwAFqQQxqKQIANwIAIANBMGpBF2ogA0HAAWpBF2otAAA6AAAgAyADKQLEATcCNCADIAMvANUBOwBFIAMgBToARCADIAQ2AjBBACEEAkACQAJAIAItAJEBQSBxRQ0AAkAgBUECRg0AIANBGGogA0EwahCcFQJAIAMoAhgiBSADKAIcIgZBr++bAUEGEK4jDQAgBSAGQfmonAFBBBCuIw0AIAUgBkGW75sBQQYQriMNACAFIAZBnO+bAUEGEK4jDQAgBSAGQYzvmwFBAxCuIw0AIAUgBkGP75sBQQcQriMNACAFIAZBou+bAUEHEK4jDQAgBSAGQanvmwFBBhCuIw0AIAUgBkG175sBQQYQriMNACAFIAZBu++bAUEEEK4jDQAgBSAGQcjvmwFBBRCuIw0AIAUgBkHN75sBQQkQriNFDQELIAMoAjwhBSADKAI4IQYgA0GsgYCAeDYCwAEgAiAGIAUgA0HAAWoQqiELIAItAJEBQSBxRQ0AIANBEGogAkEBQQEQ4RggAygCFCEEIAMoAhBBAXENAQsgAi0A2AEiBUHZAEYNAUEAIQcgA0EANgJIQQAhBgwGCyAAQQM6ABQgACAENgIADAgLIAIQlAsgA0HAAWogAhDNCyADKALEASEHIAMoAsABIgZFDQEgAyAGNgJkIAItANgBIQUgAi0AkQFBIHFFDQMgBUH/AXFBB0cNAyACEJQLIANBwAFqIAIQxQQgAygCxAEhBQJAIAMoAsABIghBgICAgHhHDQAgAEEDOgAUIAAgBTYCACAHEKspIANB5ABqEM0pDAcLIAMgAygCyAEiCTYCoAEgAyAFNgKcASADIAg2ApgBIAlBBHQhCANAIAhFDQMgBSgCCCEJIAUoAgQhCiADQZeBgIB4NgLAASACIAogCSADQcABahCqISAIQXBqIQggBUEQaiEFDAALCyACIAIQwCkQpxYMCAsgAEEDOgAUIAAgBzYCAAwECyADQZgBahDoJSACLQDYASEFCyADIAY2AkggBUH/AXFB2QBHDQAgAhCUCyACKALMASEFIAIoAsgBIQggA0GVgYCAeDYCwAEgAiAIIAUgA0HAAWoQqiEgA0HAAWogAhDNCyADKALEASEFAkAgAygCwAEiCA0AIABBAzoAFCAAIAU2AgAMAgsgAyAFNgKcASADIAg2ApgBIANBmAFqEM0pIAUQqykgAi0A2AEhBQsCQAJAAkAgAi0AkQFBIHFFDQAgBUH/AXFBgQFGDQELIANBCGpBBEEEQRBB7OebARDiGEEAIQkgAygCDCEFIAMoAgghCAwBCyACEJQLIANBwAFqIAIQxQQgAygCxAEhBQJAIAMoAsABIghBgICAgHhGDQAgAygCyAEhCQwBCyAAQQM6ABQgACAFNgIADAELIAMgCTYCVCADIAU2AlAgAyAINgJMIAItANgBIQUCQAJAIAIvAZABQYDAAHEiCEUNACAFQf8BcUGBAUcNACACEJQLIAIoAswBIQUgAigCyAEhCCADQZiBgIB4NgLAASACIAggBSADQcABahCqISADQcABaiACEMUEIAMoAsQBIQUCQCADKALAASIIQYCAgIB4Rw0AIABBAzoAFCAAIAU2AgAMAgsgAyADKALIATYCoAEgAyAFNgKcASADIAg2ApgBIANBmAFqEOglIAIvAZABQYDAAHEhCCACLQDYASEFCwJAAkAgCEUNACAFQf8BcUHZAEcNACACEJQLIAIoAswBIQUgAigCyAEhCCADQZaBgIB4NgLAASACIAggBSADQcABahCqISADQcABaiACEM0LIAMoAsQBIQUCQCADKALAASIIDQAgAEEDOgAUIAAgBTYCAAwDCyADIAg2AsABIAYhCQJAAkACQAJAAkAgBg0AIANByABqEMwoIAMgCDYCSCAFDQEgCCEJCyAFEKspIAYNAQwCCyAHEKspIAUhBwwCCyADQcABahDNKQsgCSEICyACLQDYASEFDAELIAYhCAsCQAJAAkACQAJAIAVB/wFxQQJGDQAgAigC1AEhBSACKALQASEGIANB2ABqIAIQlyQgA0EBNgLEASADQby3nAE2AsABIANCATcCzAEgA0GPBTYCaCADQQI6AJABIAMgA0HkAGo2AsgBIAMgA0GIAWo2AmQgAyADQZABajYCiAEgA0GYAWogA0HAAWoQ5A8gA0GsAWogA0HgAGooAgA2AgAgAyADKQJYNwKkASAGIAUgA0GYAWoQlxkhBSACLQDYAUGiAUYNAQwECyACEJQLIAhFDQECQAJAIAIoAogBIgVBgICAAnENACACIAVBgICAAnI2AogBIANBwAFqIAIQpAcgAiACKAKIAUH///99cTYCiAEMAQsgA0HAAWogAhCkBwsgAygCxAEhBSADKALAASIGQYCAgIB4Rw0CIABBAzoAFCAAIAU2AgAMBAsgAiACEMApEKcWDAILAkACQCACKAKIASIFQYCAgAJxRQ0AIAIgBUH///99cTYCiAEgA0HAAWogAhCkByACIAIoAogBQYCAgAJyNgKIAQwBCyADQcABaiACEKQHCyADKALEASEFIAMoAsABIgZBgICAgHhHDQAgAEEDOgAUIAAgBTYCAAwCCyADIAMoAsgBNgJsIAMgBTYCaCADIAY2AmQCQAJAAkAgAi0A2AEiBUEDRg0AAkAgBUGjAUcNACADQfAAaiACEJckIAIoAtQBIQUgAigC0AEhBiADQQE2AsQBIANBvLecATYCwAEgA0IBNwLMASADQZEFNgKMASADQQM6AJABIAMgA0GIAWo2AsgBIAMgA0GQAWo2AogBIANBmAFqIANBwAFqEOQPIANBrAFqIANB+ABqKAIANgIAIAMgAykCcDcCpAEgAiAGIAUgA0GYAWoQqiEMAgsgAigC1AEhBSACKALQASEGIANB/ABqIAIQlyQgA0EBNgLEASADQby3nAE2AsABIANCATcCzAEgA0GPBTYCjAEgA0EDOgCXASADIANBiAFqNgLIASADIANBkAFqNgKIASADIANBlwFqNgKQASADQZgBaiADQcABahDkDyADQawBaiADQYQBaigCADYCACADIAMpAnw3AqQBIAYgBSADQZgBahCXGSEFIAItANgBQaIBRw0CIAIgAhDAKRCnFgwCCyACEJQLCyAAIAMpAzA3AwAgAEEIaiADQTBqQQhqKQMANwMAIABBEGogA0EwakEQaikDADcDACABKAIQKAIAIQUgAigCzAEhBiADQawBaiADQeQAakEIaigCADYCACADQZgBakEIaiABQQhqKAIANgIAIAMgAykCZDcCpAEgAyABKQIANwOYASADQbgBaiADQcwAakEIaigCADYCACADIAMpAkw3A7ABIANB9QFqQgA3AAAgA0EANgLsASADQgA3AuQBIANCADcC8AEgA0EANgLYASADQgg3AtABIANCADcCyAEgA0KAgICAwAA3AsABIANCBDcC3AFBwABBBBDYJyECAkBBJEUNACACIANBmAFqQST8CgAACyACQQA6ADwgAiAHNgI4IAIgBDYCNCACIAg2AjAgAkEANgIsIAIgBjYCKCACIAU2AiQgACACNgIYIANBwAFqEKwhDAkLIABBAzoAFCAAIAU2AgAgA0HkAGoQ+SUMAQsgAEEDOgAUIAAgBTYCAAsgA0HMAGoQ6CULIAcQqykgA0HIAGoQzCgLIAQQqyMLIAMpAzAgAy0ARBCiJgwCCyAAQQM6ABQgACAENgIADAELIABBAzoAFCAAIAQ2AgALIAEQyiULIANBgAJqJAALrxcDBX8CfgJ8IwBB8AFrIgQkACACKAIEIQUgBEHIAWogASACKAIAIgZBABCIAgJAAkAgBC0AyAFBBEYNACAEKQPIASIJQv8Bg0IEUQ0AIAAgCTcCAAwBCyACQQhqIQcgAikDECEJAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACKwMIIguZIgxEAAAAAAAA8H9iDQAgCVANAQsCQCAGRQ0AIARByAFqIAEgBhDbICAELQDIAUEERg0AIAQpA8gBIgpC/wGDQgRSDQILIAJB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KAJAISMCQCAcDQBBACEcDAELICJBMGwhKUEAIRUgHCESA0AgKSAVRg0BIAJBOGogFiAVahBMICMgFWoiD0EoaiACQThqQShqKQMANwMAIA9BIGogEykDADcDACAPQRhqIBApAwA3AwAgD0EQaiARKQMANwMAIA9BCGogFCkDADcDACAPIAIpAzg3AwAgFUEwaiEVIBJBf2oiEg0ACwsgCyACQZwBakECai0AADoAACACIAIvAZwBOwEMIAIoAiwiFUGAfnEhFiACKQMgIitCIIinIREgAikDGCIsQiCIpyEUIAIoAighECACKAIUISkgAigCECEPICunIRIgLKchEwwDCyACQThqIA9BCGoQxAQgDygCKBDSBCEOIAsgCkECai0AADoAACACIAovAAA7AQwgAigCTCIVQYB+cSEWIAIpA0AiK0IgiKchESACKQM4IixCIIinIRQgAi0AVCEYIAIoAlAhFyACKAJIIRAgAigCXCEZICunIRIgLKchE0EKIQ8LCwsgASAYOgAkIAEgFzYCICABIBA2AhggASApNgIEIAEgDzYCACABIAIvAQw7ACUgASAdNgJoIAEgJDYCZCABICU2AmAgASAmNgJcIAEgJzYCWCABICg2AlQgASAiNgJQIAEgIzYCTCABIBw2AkggASAaNgJEIAEgGzYCQCABIB42AjwgASAfNgI4IAEgIDYCNCABICE2AjAgASAZNgIsIAEgDjYCKCABIBYgFUH/AXFyNgIcIAFBJ2ogCy0AADoAACABIBGtQiCGIBKthDcDECABIBStQiCGIBOthDcDCEEAIQ8MAQsgAygCCCEqIAMoAgQhARC1JSEPIAJBOGogDhBCIA9BOGogAkE4akE4aikDADcDACAPQTBqIAJBOGpBMGopAwA3AwAgD0EoaiACQThqQShqKQMANwMAIA9BIGogAkE4akEgaikDADcDACAPQRhqIAJBOGpBGGopAwA3AwAgD0EQaiACQThqQRBqKQMANwMAIA9BCGogAkE4akEIaikDADcDACAPIAIpAzg3AwALIANBDGohAyAGIAxBDGxqIg4gKjYCCCAOIAE2AgQgDiAPNgIAIAxBAWohDCANQX9qIg0NAAsLIAAgBDYCCCAAIAY2AgQgACAFNgIAIAJBoAFqJAAPCyAFIAIoAkBBtOqaARDBJgsACyAOIAIoAkBB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ICABEMEMDwsgACgCBCEADBQLIAAoAgwhAAwTCyAAKAIEIAEQpAEgACgCCCEADBILAkACQCACQQtHDQAgAEEIaiEDAkACQCAAKAIEDgMAAQMACyADIAEQ1BYgACgCOCEADBQLIAMgARC/DyAAKAI4IQAMEwsCQAJAAkACQAJAAkACQAJAAkACQCACDgsAAQIDBAUGBwgJCgALIABBCGogARCHISAAKAI4IQAMGwsgACgCKCABEKQBIAAoAghBAkkNCCAAQQxqIAEQ+ysgACgCOCEADBoLIAAoAghBAUcNByAAKAIMIAEQpAEgACgCOCEADBkLIAAoAgQgARCkASAAKAI4IQAMGAsCQCAAKAIEIgQoAgAiA0EDRw0AIAQoAhAgARCkAQJAIARBDGooAgAiA0UNACADQQR0IQIgBEEIaigCAEEMaiEDA0AgAygCACABEKQBIANBEGohAyACQXBqIgINAAsLIAQoAiAiA0UNBiADIAEQ0h0gACgCOCEADBgLIAQoAiAgARCkASADQQJJDQUgBEEEaiABEPsrIAAoAjghAAwXCyAAQQRqIAEQ3SUgACgCOCEADBYLIABBBGogARDdJSAAKAI4IQAMFQsgACgCBCABEKQBIAAoAjghAAwUCyAAQQRqIAEQ3SUgACgCOCEADBMLIABBBGogARD3GQsgACgCOCEADBELIAAoAiggARCkASAAKAIIQQJJDRUgAEEMaiABEPsrDwsgACgCCEEBRw0UIABBDGogARD7Kw8LIAAoAgQgARCkASAAKAIIIAEQpAEgACgCDCEADA4LAkAgAC0AGEEFRw0AIAAoAhAgARCkAQsCQCAAKAIMIgNFDQAgA0EEdCECIAAoAghBDGohAwNAIAMoAgAgARCkASADQRBqIQMgAkFwaiICDQALCyAAKAIoIgBFDRIgACABENIdDwsgACgCECABEKQBAkAgACgCBEGAgICAeEYNACAAKAIMIgNFDQAgA0EEdCECIAAoAghBDGohAwNAIAMoAgAgARCkASADQRBqIQMgAkFwaiICDQALCyAAKAIgIgBFDREgACABENIdDwsgACgCDCIDRQ0QIAAoAgghACADQQJ0IQMDQCAAKAIAIAEQpAEgAEEEaiEAIANBfGoiAw0ADBELCyAAKAIMIgNFDQ8gACgCCCEAIANBAnQhAwNAIAAoAgAgARCk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iJCgwIB/g1BFDQIgAyAHQQhqIgdqIAZxIQMMAAsLAkACQCABKAIIDgMAAgEACyABKQMQIglCA4NCAFINAyAJpyIDIAMoAgAiA0EBajYCACADQX9KDQMMBAsCQAJAIAEoAgwiAygCAEFlag4CAQACCyADKAIMDQEgAygCGEEBRw0BIAMoAhQiAykDEFANASACIANBEGoQnBUgAigCACACKAIEEMMMIQkMAwsgAygCCEUNAQsgAikDCCIJQgODQgBSDQMgCaciAyADKAIAIgRBf2o2AgAgBEEBRw0DIAMgAygCEBCPIgwDCyADKQMQIglCA4NCAFINACAJpyIDIAMoAgAiA0EBajYCACADQX9MDQELIAIgCTcDKCACIAIoAhA2AiAgAiACKQMINwMYAkAgACgCTEUNACAAKAJAIgRBWGohBSACQRhqELQSIglCGYhCgYKEiJCgwIABfiEKIAAoAkQiBiAJp3EhA0EAIQgDQAJAIAQgA2opAAAiCyAKhSIJQn+FIAlC//379+/fv/9+fINCgIGChIiQoMCAf4MiCVANAAJAA0AgAkEYaiAFQQAgCXqnQQN2IANqIAZxayIHQShsahDmHw0BIAlCf3wgCYMiCVANAgwACwsCQCAEIAdBKGxqIgZBcGoiAygCACIEQQJPDQACQAJAIAQNAAJAIAZBeGopAwAiCUIDg0IAUg0AIAmnIgMgAygCACIDQQFqNgIAIANBf0wNBwsgAkEANgJwIAIgCTcDeAwBCyACQfAAakEIaiADQQhqKQMANwMAIAIgAykDADcDcAsgAkEwaiACQfAAahCfBSABELMBIAFBOGogAkEwakE4aikDADcDACABQTBqIAJBMGpBMGopAwA3AwAgAUEoaiACQTBqQShqKQMANwMAIAFBIGogAkEwakEgaikDADcDACABQRhqIAJBMGpBGGopAwA3AwAgAUEQaiACQTBqQRBqKQMANwMAIAFBCGogAkEwakEIaikDADcDACABIAIpAzA3AwALIAJBGGoQ1BMMBAsgCyALQgGGg0KAgYKEiJCgwIB/g1BFDQEgAyAIQQhqIghqIAZxIQMMAAsLIAJBGGoQ1BMMAQsACyABKAIAIQMLAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA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IQUgBkF8aiIGDQAMEAsLAkAgASgCDCIGRQ0AIAEoAgghBSAGQShsIQYDQCAFIAAQkA4gBUEoaiEFIAZBWGoiBg0ACwsCQCABKAIQIgUoAgBBgICAgHhHDQAgACAFKAIEEKcBDA8LIAUgABCcHgwOCyABKAIgIAAQhwcMDQsgASgCDCIFRQ0MIAAgBRCnAQwMCyAAIAEoAgQQpwEMCwsgACABKAIEEKcBDAoLIAEtADRBAkcNCSABQSBqENMjDAkLIAEoAgQgABC7BQwICyABKAIMIgVFDQcgBUEobCEGIAEoAghBBGohBQNAAkACQAJAAkACQCAFQXxqKAIADgUEAAECAwQLIAUoAgBBAUcNAyAAIAVBBGooAgAQpwEMAwsgACAFKAIAEKcBDAILIAAgBSgCABDFCQwBCyAFIAAQ7wsLIAVBKGohBSAGQVhqIgYNAAwICwsgACABKAIEEKcBDAYLIAAgASgCBBCnAQwFCyAAIAEoAgQQpwEMBAsgACABKAIEEKcBDAMLIAAgASgCBBCnAQwCCyAAIAEoAgQQpwEMAQsgASgCBCAAELITCyAAIAM6AAwCQAJAAkACQCABKAIAQRdHDQAgAS0AGEEDRw0AIABBAToADSABKQMAIQsgAUIxNwMAIAFBCGoiBSkDACEMIAVBADYCACACQQhqQQhqIgUgDDcDACACQQhqQRBqIgYgAUEQaikDADcDACACQQhqQRhqIgQgAUEYaikDADcDACACQQhqQSBqIgkgAUEgaikDADcDACACQQhqQShqIgcgAUEoaikDADcDACACQQhqQTBqIgggAUEwaikDADcDACACQQhqQThqIgogAUE4aikDADcDACACIAs3AwggAkHMAGogABCKCUEALQDg554BGkHAABB8IgBFDQMgACACKQMINwMAIABBOGogCikDADcDACAAQTBqIAgpAwA3AwAgAEEoaiAHKQMANwMAIABBIGogCSkDADcDACAAQRhqIAQpAwA3AwAgAEEQaiAGKQMANwMAIABBCGogBSkDADcDACACKAJUIQUgAigCUCEGIAIoAkwhBAJAAkACQCADQQFxDQBBASEJIAJB5ABqIAVBAWpBBEEQEPcOIAIoAmghByACKAJkQQFGDQQgAigCbCIDIAA2AgwgA0EANgIAIAJBADYCbCACIAM2AmggAiAHNgJkAkAgBUUNACADQRxqIQAgBUECdCIFQXxqQQJ2QQJqIQkgBiEDA0AgACADKAIANgIAIABBdGpBADYCACAAQRBqIQAgA0EEaiEDIAVBfGoiBQ0ACwsgAkHkAGpBCGoiACAJNgIAIAQgBhDGKiACQdgAakEIaiIDIAAoAgA2AgAgAiACKQJkNwNYQQAtAODnngEaQcAAEHwiAA0BDAYLQQEhCSACQeQAaiAFQQFqQQRBBBD3DiACKAJoIQcgAigCZEEBRg0EIAIoAmwiAyAANgIAIAJBADYCbCACIAM2AmggAiAHNgJkAkAgBUUNACADQQRqIQAgBUECdCIFQXxqQQJ2QQJqIQkgBiEDA0AgACADKAIANgIAIABBBGohACADQQRqIQMgBUF8aiIFDQALCyACIAk2AmwgBCAGEMYqIAIoAmQhAyACKQJoIQtBGSEFDAELIABBDTYCACAAIAIpA1g3AgQgAEIANwMQIABBDGogAygCADYCAEEALQDg554BGkHAABB8IgNFDQQgA0IANwMQIANBAzYCCCADQRs2AgAgA0EYakIANwMAIANBIGpCADcDACADrUIghkIChCELQRQhBQsgARCjASABIAA2AiggAUIANwMgIAFCADcDECABIAs3AwggASADNgIEIAEgBTYCAAsgAkHwAGokAA8LIAcgAigCbEGw4ZsBEMEmAAsgByACKAJsQbDhmwEQwSYACwALyxMDD38GfgF8IwBB4AFrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOCAABAgMICAQFAAsgACgCICABEOUEDAcLIAAoAiAgARCJDQwGCyAAKAIEIgAoAggiA0UNBSAAKAIEIgAgA0E4bGohBANAIAAgARCODgJAIABBMGooAgAiA0UNACADIAEQ/gILIABBOGoiACAERw0ADAYLCyAAKAIEIgAoAggiA0UNBCAAKAIEIgAgA0E4bGohBANAIAAgARCODgJAIABBMGooAgAiA0UNACADIAEQ/gILIABBOGoiACAERw0ADAULCyAAKAIEIgUoAiQhAAJAIAUoAigiBkUNACAGQTBsIQQgAEEoaiEDA0ACQCADKAIAIgdFDQAgByABEP4CCyADQTBqIQMgBEFQaiIEDQALCyAFLQAtDQEMAgsgAkGIAWogACgCBCIAEPYiIAIpA4gBIREgASgCGCEDIAEgAigCkAE2AhggASkDECESIAEgETcDEAJAIAAtAEVBA0YNACAAQSBqIAEQsAsgASkDECERCwJAIBFQDQAgEUIDg0IAUg0AIBGnIgAgACgCACIEQX9qNgIAIARBAUcNACAAIAAoAhAQjyILIAEgAzYCGCABIBI3AxAMAgsgAkGIAWogBRCpHCABQdAAaiACKQOIASACKAKQARCFBhogBSgCKCEGIAUoAiQhAAsgAkEBNgIAIAJCADcDCAJAIAZFDQAgACAGQTBsaiEIIAFBwABqIQkgAkEQakEIaiEKIAFB0ABqIQsDQCAAKAIUIQQgACgCECEGIAAoAiQhDCAAKAIgIQ0CQAJAIAAoAgAiDkEBRw0AAkAgACkDCCISQgODQgBSDQAgEqciAyADKAIAIgNBAWo2AgAgA0F/TA0GC0IBIRMgACkDGCIRUA0BIBFCA4NQRQ0BIBGnIgMgAygCACIDQQFqNgIAIANBf0oNAQwFCyAANQIYIRMCQCAAKQMIIhJCA4NCAFINACASpyIDIAMoAgAiA0EBajYCACADQX9MDQULIAAxABxCIIYgEUKAgICAgGCDIBOEhCERQgAhEwsCQAJAIAAoAigiDw0AQQAhAwwBCxC1JSEDIAJBiAFqIA8QQiADQThqIAJBiAFqQThqKQMANwMAIANBMGogAkGIAWpBMGopAwA3AwAgA0EoaiACQYgBakEoaikDADcDACADQSBqIAJBiAFqQSBqKQMANwMAIANBGGogAkGIAWpBGGopAwA3AwAgA0EQaiACQYgBakEQaikDADcDACADQQhqIAJBiAFqQQhqKQMANwMAIAMgAikDiAE3AwALIAIgDDYCNCACIA02AjAgAiADNgI4IAIgETcDKCACIAQ2AiQgAiAGNgIgIAIgEjcDGCACIBM3AxAgAkHAAGogBRCpHAJAAkAgA0UNACACIAEoAmA2AoQBIAIgCTYCgAEgAiACQcAAajYCfCACQYgBaiACQfwAaiADEFgCQCACKAKIAUECRw0AIAJB/ABqIAIoAowBENEBCyACQegAakEIaiACQYgBakEIaikDADcDACACIAIpA4gBIhM3A2gCQAJAIBOnIgNBfWoOAgECAAsgAikDcCEUIAIoAmwhBwwCCyACQegAahClFwsCQAJAAkAgAigCACIDDgQAAQIDAAtBACEDIAIpAwgiFEID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AygCDCIARQ0EIAAoAgAgARCpAQwECyADKAIEIAEQpAEgAygCECIARQ0DIAAoAgAgARCpAQwDCyADKAIwIAEQpAECQAJAAkACQCACDgQAAQIDAAsgA0EIaiABEIchDAULIANBBGogARDUFgwECyADQQRqIAEQpCMMAwsgA0EEaiABEL8PDAILIAMoAhAgARCkAQJAIAMoAgwiAkUNACADKAIIIQAgAkEobCECA0ACQAJAAkACQAJAIAAoAgAOBAABAgMACyAAQQhqIAEQhyEMAwsgAEEEaiABENQWDAILIABBBGogARCkIwwBCyAAQQRqIAEQvw8LIABBKGohACACQVhqIgINAAsLAkAgAygCHCIARQ0AIAAoAgAgARCpAQsgAygCICIARQ0BIABBCGooAgAiAkUNASACQTBsIQIgAEEEaigCAEEkaiEAA0ACQCAAQXxqKAIAIgRFDQAgBCABEKkBCwJAIAAoAgAiBEUNACAEIAEQqQELIABBMGohACACQVBqIgINAAwCCwsCQCADKAIMIgJFDQAgAygCCCEAIAJBKGwhAgNAAkACQAJAAkACQCAAKAIADgQAAQIDAAsgAEEIaiABEIchDAMLIABBBGogARDUFgwCCyAAQQRqIAEQpCMMAQsgAEEEaiABEL8PCyAAQShqIQAgAkFYaiICDQALCyADKAIQIgBFDQAgACgCACABEKkBCyADQThqIgMgBUcNAAwNCwsgACgCBCEADA0LIAAoAgwiA0UNCiAAKAIIIQAgA0E4bCEDA0ACQCAAKAIAQQdGDQAgACABENkICyAAQTBqKAIAIAEQqQEgAEE4aiEAIANBSGoiAw0ADAsLCyAAKAIEIQAMCwsgACgCECECIAAoAgwhAwJAIAAoAgRBAUcNACACRQ0JIAJBAnQhAANAIAMoAgAgARCpASADQQRqIQMgAEF8aiIADQAMCgsLIAJFDQggAkECdCEAA0AgAygCACABEKkBIANBBGohAyAAQXxqIgANAAwJCwsgACgCBCABEKkBIAAoAgggARCpASAAKAIMIAEQqQEgACgCECEADAkLAkAgACgCMCIDRQ0AIAMgARCpAQsgACgCNCIADQgMBgsgACgCBCEADAcLIAAoAgQgARCpASAAKAIIIQAMBgsCQCAAKAIwIgNFDQAgAyABEKkBCwJAIAAoAjQiA0UNACADIAEQqQELAkAgACgCQCIDRQ0AIAMgARCpAQsgACgCRCIADQUMAwsgACgCCEGEgICAeEgNAiABIABBCGoQ0x0PCyAAKAIoIgBFDQEgACgCACEADAMLAkAgAC0APEECRw0AIAAoAigQ/yQLAkAgACgCQCIDRQ0AIANBCGooAgAiAkUNACADQQRqKAIAIQMgAkECdCECA0AgAygCACABEKkBIANBBGohAyACQXxqIgINAAsLIAAoAkQiAEUNACAAIAEQ8RcLDwsgACgCACgCACEADAALC4IVAg1/A34jAEGQA2siAyQAIANBKGogASgCIBCcFQJAAkACQAJAIAMoAigiBCADKAIsIgVBwLKcAUEDEK4jDQAgBCAFQcOynAFBAxCuIw0BIAQgBUHGspwBQQUQriMNAkGEpJwBQShBsNabARDHHAALIAEoAiQiBSgCACEEIAMgASgCKCIGNgLoASADQQA2AuABIANCgICAgMAANwLYASADQQA6AKABIANBADoAWCADIAQ2AtACIAIoAogBIQQgAyADQaABajYC9AEgAyADQdACajYC8AEgAyADQdgAajYC7AEgAyADQaABajYC5AECQAJAIARBgAFxRQ0AIAIgBEH/fnE2AogBIANBCGogA0HYAWogAhCNDCADKAIIIQcgAiACKAKIAUGAAXI2AogBIAMoAgwhBAwBCyADIANB2AFqIAIQjQwgAygCBCEEIAMoAgAhBwsCQAJAIAdBAXFFDQAgBCEIQYCAgIB4IQcMAQsgBCgCBCEIIAQoAgAhBwJAQShFDQAgA0EwaiAEQQhqQSj8CgAACyADQbACaiAEQcAAaikCADcDACADQaACakEIaiAEQThqKQIANwMAIAMgBCkCMDcDoAIgBBCNLAsgA0HYAGpBCGogAUEIaikDADcDACADQdgAakEQaiABQRBqKQMANwMAIANB2ABqQRhqIAFBGGopAwA3AwAgAyAFNgKAASADIAY2AnwgAyACNgJ4IAMgASkDADcDWAJAIAdBgICAgHhHDQAgAEEBNgIAIAAgCDYCBCADQdgAahC0GwwDCyADIAg2AtwBIAMgBzYC2AECQEEoRQ0AIANB2AFqQQhqIANBMGpBKPwKAAALIANBmAJqIANBoAJqQRBqKQMAIhA3AgAgA0HYAWpBOGogA0GgAmpBCGopAwA3AgAgAyADKQOgAjcCiAICQCACLQCRAUEgcUUNACACLQCSAUH/AXENACAGKAIEIQQgBigCACEHIANBgIGAgHg2AtACIAIgByAEIANB0AJqEKohCyADQaABakEIaiABQQhqKQMANwMAIANBoAFqQRBqIAFBEGopAwA3AwAgA0GgAWpBGGogAUEYaikDADcDACADQcgBaiADQTBqQRhqKQIANwMAIANB0AFqIANBMGpBIGopAgA3AwAgAyADKQJANwPAASADIAEpAwA3A6ABIAUoAgAhBCACKALMASECAkBBOEUNACADQdACakEEaiADQaABakE4/AoAAAsgEKchBUHwAEEIEMonIgFBCDYCAAJAQTxFDQAgAUEEaiADQdACakE8/AoAAAsgASAFNgJIIAEgAjYCRCABIAQ2AkAgA0HYAWoQ7iUgA0HkAWoQyiUgAygClAIQySkgACABNgIIIABCADcCAAwCCyABKAIkIggoAgAhBCADIAEoAigiCTYC6AEgA0EANgLgASADQoCAgIDAADcC2AEgA0EAOgCgASADQQA6AFggAyAENgLQAiACKAKIASEEIAMgA0GgAWo2AvQBIAMgA0HQAmo2AvABIAMgA0HYAGo2AuwBIAMgA0GgAWo2AuQBAkACQCAEQYABcUUNACACIARB/35xNgKIASADQRhqIANB2AFqIAIQjgwgAygCGCEEIAIgAigCiAFBgAFyNgKIASADKAIcIQUMAQsgA0EQaiADQdgBaiACEI4MIAMoAhQhBSADKAIQIQQLAkACQCAEQQFxRQ0AIAUhBEGAgICAeCEGDAELIAUoAgghByAFKAIEIQQgBSgCACEGAkBBJEUNACADQTBqIAVBDGpBJPwKAAALIANBmAFqIAVBwABqKQIANwMAIANBkAFqIAVBOGopAgA3AwAgAyAFKQIwNwOIASAFEI0sCyADQaABakEIaiABQQhqKQMANwMAIANBoAFqQRBqIAFBEGopAwA3AwAgA0GgAWpBGGogAUEYaikDADcDACADIAg2AsgBIAMgCTYCxAEgAyACNgLAASADIAEpAwA3A6ABAkAgBkGAgICAeEcNACAAQQE2AgAgACAENgIEIANBoAFqELQbDAILIAMgBDYC3AEgAyAGNgLYASADIAc2AuABIANB5AFqIQoCQEEkRQ0AIAogA0EwakEk/AoAAAsgA0HYAWpBwABqIANBmAFqKQMANwIAIANBkAJqIANBkAFqKQMANwIAIAMgAykDiAE3AogCQQchCwJAIAdBAkkNAAJAQcAARQ0AIANB0AJqIARBwAD8CgAACwJAIAdBBnRBQGoiBUUNACAEIARBwABqIAX8CgAACyADKALQAiELAkBBJEUNACADQdgAaiADQdACakEEckEk/AoAAAsgA0GAA2oQyiUgB0F/aiEHCyADIAY2AsgCIAMgBDYCwAIgAyAENgLEAiADIAQgB0EGdGo2AswCAkACQCAHRQ0AIAMgBEHAAGo2AsQCIAQoAgAiBUEHRg0AIAQoAgQhByAEKAIIIQYgBEEUaiIJKQIAIRAgBEEcaiIMKQIAIREgBEEkaiINKAIAIQ4gBCkCDCESIANB0AJqQThqIARBOGopAwA3AwAgA0HQAmpBMGoiDyAEQTBqKQMANwMAIANB0AJqQSRqIA42AgAgA0HQAmpBHGogETcCACADQdACakEUaiAQNwIAIAMgBjYC2AIgAyAHNgLUAiADIAU2AtACIAMgBCkDKDcD+AIgAyASNwLcAiADQbgCaiANKAIANgIAIANBsAJqIAwpAgA3AwAgA0GoAmogCSkCADcDACADIAQpAgw3A6ACIA8QyiUMAQsgCSgCBCEEIAkoAgAhBSADQZKAgIB4NgLQAiACIAUgBCADQdACahCqIUEFIQVBACEGQQAhBwtBKEEIEMonIgQgBjYCCCAEIAc2AgQgBCAFNgIAIAQgAykDoAI3AgwgBEEUaiADQaACakEIaikDADcCACAEQRxqIANBoAJqQRBqKQMANwIAIARBJGogA0GgAmpBGGooAgA2AgAgA0HAAmoQrRwgCCgCACEFIAIoAswBIQdB8ABBCBDKJyICIAs2AiAgAkEYaiABQRhqKQMANwMAIAJBEGogAUEQaikDADcDACACQQhqIAFBCGopAwA3AwAgAiABKQMANwMAAkBBJEUNACACQSRqIANB2ABqQST8CgAACyACIAQ2AmggAiAHNgJkIAIgBTYCYCACQdgAaiADQTBqQRxqKQIANwIAIAJB0ABqIANBMGpBFGopAgA3AgAgAiADKQI8NwJIIAoQyiUgAygClAIQySkgA0GYAmoQwyggACACNgIIIABCADcCAAwBCyADQQA2AuABIANCgICAgMAANwLYAUEBIQQgA0EgaiACIANB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5NeDATYCCCACQgM3AhQgAkEhNgI8IAJBIjYCNCACQSI2AiwgAiAWNgIkIAIgAkEoajYCECACIAJBJGo2AjggAiACQSNqNgIwIAIgAkEiajYCKCAaIQEgFSEdIBwhGCAbIRYgDCALIAJBCGoQyCYNBAwDCyACIB06ACMgAkECNgIsIAJBuNaDATYCKCACQgI3AjQgAkEhNgIUIAJBIjYCDCACIBY2AiQgAiACQQhqNgIwIAIgAkEkajYCECACIAJBI2o2AgggGiEBIBUhHSAcIRggGyEWIAwgCyACQShqEMgmDQMMAgsgFUGAAmohFSAeQiCIpyEWIB5CCIinIRggHqchHUEBIQMgGiEBDAALCwsLQQEhAwsgAkHAAGokACADC44UAgN/An4CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiACgCACIBQXRqIgJBByACQSZJG0F/ag4kAAECAwQFBgcICQoLDA0ODxAREhMiFBUWFyIYGRobHB0eHyAhIgsgAEEIaiICKAIAIABBDGooAgAQpxwgACgCBCACKAIAEMcqDCELIABBCGoiAigCACAAQQxqKAIAEJsYIAAoAgQgAigCABDDKgwgCwJAIAAtABxBAkYNACAAKQMIIgRCA4NCAFINACAEpyICIAIoAgAiAUF/ajYCACABQQFHDQAgAiACKAIQEI8iCyAAKAIgIgJBBGoiASgCACACQQhqKAIAEOYiIAIoAgAgASgCABDKKiACQRBqIgEoAgAgAkEUaigCABDEICACKAIMIAEoAgAQwyoCQCACKAIYQYCAgIB4Rg0AIAJBHGoiASgCACACQSBqKAIAEOIiIAIoAhggASgCABDIKgsCQCACKAI8IgFFDQAgARCvDyABKAIAIAFBBGooAgAQyCogAUEUQQQQ0hULAkAgAigCQCIBRQ0AIAEoAgAiAxDSAyADQeAAQQgQ0hUgAUEMQQQQ0hULIAJByABBBBDSFQwfCyAAQQRqELoBDB4LIABBDGoQugEMHQsgAEEEahC6ASAAQQhqELoBDBwLAkACQCABQQtGDQAgABDJBQwBCyAAQQRqEOYVCyAAQThqELoBDBsLIABBKGoQugECQAJAAkAgACgCCA4CAQIACyAA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ICEEDAoLIABB3AJB2AIgAS0AEBtqKAIAIghFDQggCCAAKALUAksNCCACKAIcIQcgAigCGCEJIANByABqIAAgCBD1IyAHQQAgCRsiByADKAJIIAMoAkwQixpPDQggAkEBNgIYIAIgB0EBajYCHCADQcAAaiAAIAgQ9SMgAyADKQNANwKYASADQThqIANBmAFqIAcQuRUgAygCOEEBcUUNAiADKAI8IQEgA0GYAWogASAEIABBNGooAgAgAEE4aigCACABQfy9gwEQiCMoAgBrIAQQ2BYgAkEBNgIAIAYgAykCmAE3AgAgBkEIaiADQZgBakEIaigCADYCAAwKCyACKAIcIQcgA0EwaiAAIAgQ9SMCQCAHIAMoAjAgAygCNBCLGkkNACACQQA2AhggAkEANgIAIAIgAigCIEEBaiIENgIgDAkLIAJBATYCGCACIAdBAWo2AhwgAigCICEJIANBEGogACAIEPUjIAMgAykDEDcCmAEgA0EIaiADQZgBaiAHELkVIAMoAghBAXFFDQIgAygCDCEBIANBmAFqIAEgCUEBaiIIIABBNGooAgAgAEE4aigCACABQfy9gwEQiCMoAgBrIAgQ2BYgAkEBNgIAIAYgAykCmAE3AgAgBkEIaiADQZgBakEIaigCADYCAAwJCwJAAkAgAigCEEEBRw0AIAIoAhQhCCACKAIYDQEgAigCICEEDAcLIAAoAtgCIghFDQUgCCAAKALUAksNBSACKAIcIQkgAigCGCEKIANBkAFqIAAgCBD1IyAJQQAgChsiCSADKAKQASADKAKUARCLGk8NBSACQQE2AhggAiAJQQFqNgIcIANBiAFqIAAgCBD1IyADIAMpA4gBNwKYASADQYABaiADQZgBaiAJELkVIAMoAoABQQFxRQ0DIAMoAoQBIQEgA0GYAWogASAEIABBNGooAgAgAEE4aigCACABQfy9gwEQiCMoAgBrIAQQ2BYgAkEBNgIAIAYgAykCmAE3AgAgBkEIaiADQZgBakEIaigCADYCAAwJCyACKAIcIQkgA0H4AGogACAIEPUjAkAgCSADKAJ4IAMoAnwQixpJDQAgAkEANgIYIAJBADYCACACIAIoAiBBAWoiBDYCIAwGCyACQQE2AhggAiAJQQFqNgIcIAIoAiAhByADQdgAaiAAIAgQ9SMgAyADKQNYNwKYASADQdAA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IANBCGogAigCCCICQQFBAUHgtJwBEJgYIAMoAgghBSADKAIMIQYCQCACRQ0AIAYgBCAC/AoAAAsgA0EBOgBMIAMgAjYCSCADIAY2AkQgAyAFNgJAIANBIGogA0HAAGoQwh4gASgCCCABLQAQIANBIGoQgyQgAEEIaiADQSBqQQhqKAIANgIAIAAgAykCIDcCAAwICyADQRRqIAEgAigCDBDCASACKAIEIQQCQCACKAIQIgUNACACLQAUIQYCQAJAIARFDQAgAigCCEEBRg0BCyADQRRqEKMcCyADQQA2AkggA0KAgICAEDcCQCADQQE6AEwgA0EgaiADQcAAahDCHgJAIAZBAXENACADQRRqIANBIGpBAxCCHQsgA0HAAGpBCGogA0EUakEIaigCADYCACADIAMpAhQ3A0AgACABKAIMIAEtABAgA0HAAGogA0EgahCtCCADQSBqEIAnDAgLIAEoAgQiByAFIAcgBUkbIQYCQCAERQ0AIAUgAigCCEcNACADQQE6AEwgA0EANgJIIANCgICAgBA3AkAgA0E0aiADQcAAahDCHgJAA0AgBkUNASADQTRqEMoTDQEgA0EgakEIaiADQTRqQQhqKAIANgIAIAMgAykCNDcDICADQcAAaiADQRRqENELIANBNGogASADQSBqIANBwABqEMICIAZBf2ohBiADQcAAahCAJwwACwsgBSAHTQ0GIANBNGoQoxwMBgsgA0EBOgBMIANBADYCSCADQoCAgIAQNwJAIANBNGogA0HAAGoQwh4DQAJAAkAgBkUNACADQTRqEMoTRQ0BCyADQTRqEKMcIAAgAykCNDcCACAAQQhqIANBNGpBCGooAgA2AgAMCAsgA0EgakEIaiADQTRqQQhqKAIANgIAIAMgAykCNDcDICADQcAAaiADQRRqENELIANBNGogASADQSBqIANBwABqEMICIAZBf2ohBiADQcAAahCAJwwACwsgAigCDCEFIAIoAgghBgJAIAEtABANACADQQE6AEwgA0EANgJIIANCgICAgBA3AkAgBUEcbCECIANBNGogA0HAAGoQwh4CQANAIAJFDQEgA0E0ahDKEw0BIANBIGpBCGogA0E0akEIaigCADYCACADIAMpAjQ3AyAgA0HAAGogASAGEMIBIANBNGogASADQSBqIANBwABqEMICIAJBZGohAiAGQRxqIQYgA0HAAGoQgCcMAAsLIAAgAykCNDcCACAAQQhqIANBNGpBCGooAgA2AgAMBwsgA0EBOgBMIANBADYCSCADQoCAgIAQNwJAIAVBHGwhAiAGQWRqIQYgA0E0aiADQcAAahDCHgJAA0AgAkUNASADQTRqEMoTDQEgA0EgakEIaiADQTRqQQhqKAIANgIAIAMgAykCNDcDICADQcAAaiABIAYgAmoQwgEgA0E0aiABIANBIGogA0HAAGoQwgIgAkFkaiECIANBwABqEIAnDAALCyAAIAMpAjQ3AgAgAEEIaiADQTRqQQhqKAIANgIADAYLAkAgAigCBA0AIAJBDGooAgAiBCACQRBqKAIAQQN0IgZqIQggASgCACEHQQAhBSAEIQICQAJAA0AgBkUNASAFIAdLDQIgBkF4aiEGIAJBBGooAgAgAigCAGsgBWpBAWohBSACQQhqIQIMAAsLIAUgB0sNACADQQA2AhwgA0KAgICAwAA3AhQDQAJAAkACQCAEIAhGDQAgBEEIaiEHIAQoAgQhBSAEKAIAIQJBACEGA0AgBkEBcQ0DIAIgBUsNAyADQQA2AjBBASEGAkAgAkGAAUkNAEECIQYgAkGAEEkNAEEDQQQgAkGAgARJGyEGCyACIANBMGoQzw0gA0EANgI8IANCgICAgBA3AjQgA0Hg04QBNgJEIANCoICAgA43AkggAyADQTRqNgJAIANBwABqIANBMGogBhD/BQ0CIAJBgMADIAJBAWogAkH/rwNGGyACIAVPIgYbIQIgA0EgakEIaiADQTRqQQhqKAIANgIAIAMgAykCNDcDICADQQE6ACwgA0EUaiADQSBqEKARDAALCyABKAIIIAEtABAgA0EUahCDJCAAQQhqIANBFGpBCGooAgA2AgAgACADKQIUNwIADAoLQfCpnAFBNyADQSBqQfjThAFB9KqcARCjEgALIAchBAwACwsgAEGAgICAeDYCAAwGCyACQQxqKAIAIgggAkEQaigCAEEBdCIGaiEJIAEoAgAhCkEAIQUgCCECAkACQAJAAkADQCAGRQ0BIAUgCksNAiACQQFqLQAAIgQgAi0AACIHSQ0EIAJBAmohAiAGQX5qIQYgBCAHa0H/AXEgBWpBAWohBQwACwsgBSAKSw0AIANBADYCKCADQoCAgIDAADcCIAwBCyAAQYCAgIB4NgIADAcLA0ACQAJAIAggCUYNACAILQABIQcgCC0AACECQQAhBANAIARBAXENAiACQf8BcSIGIAdB/wFxIgVLDQJBAUEBEOokIgQgAjoAACADQQE6AEwgA0EBNgJIIAMgBDYCRCADQQE2AkAgBiAFTyEEIAIgBiAFSWohAiADQSBqIANBwABqEKARDAALCyABKAIIIAEtABAgA0EgahCDJCAAQQhqIANBIGpBCGooAgA2AgAgACADKQIgNwIADAgLIAhBAmohCAwACwtBgNCEARD4KQALIAIoAgxBHGwhBiABLQAQIQggASgCDCEKIAIoAgghBUEEIQRBACECQQAhBwJAA0AgBkUNASACQYCAgIB4Rg0BIAMgBzYCKCADIAQ2AiQgAyACNgIgIANBwABqIAEgBRDCASADQTRqIAogCCADQSBqIANBwABqEK0IIAZBZGohBiAFQRxqIQUgAygCNCECIAMoAjghBCADKAI8IQcgA0HAAGoQgCcMAAsLIAAgBzYCCCAAIAQ2AgQgACACNgIADAQLIAIoAgQhAgwACwsgACADKQI0NwIAIABBCGogA0E0akEIaigCADYCAAsgA0EUahCAJwsgA0HQAGokAAvqEgEMfyMAQYABayICJAACQCABLQA8RQ0AIAAgACgCHCAAKAIgIAFBJGoiAyABKAIEIAEoAggiBEEMbGoiBUF8aiAFQQxGGyADIAQbKAIAELgTEKMkCwJAAkAgASgCICIGRQ0AIAAoAhwgACgCICABKAIcIgMoAgRBf2oQ0SchBCADIAZBBHRqIgVBEEYNASAAIAQoAgAiAyAFQXhqKAIAIgQgAyAESRsgAyAEIAMgBEsbENgdCyABIAAQ5h4gASgCECIHIAEoAhRB2ABsaiEIA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgByIDIAhGDQAgA0HYAGohBwJAAkACQAJAAkACQAJAAkAgAygCACIEQXxqQQAgBEF7akEISRsOCQABAgMEBRQGBwALIAMoAiBBgICAgHhGDQgCQCADLQBRQQNGDQAgAkEYaiADEOMgIAAgAygCOCACKAIYEPUMCyADQSBqIQkgAyAAEIslIAMoAkQiBSADKAJIQQZ0aiEKAkADQCAFIApGDQEgBUHAAGohCwJAIAUoAgBBB0YNACAFIAAQgCggCyEFDAELIAUoAjhBDGwh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gICAeEYNACAAIAIpAkg3AgQgAEGMgICAeDYCACAAQQxqIAJB0ABqKAIANgIADAULAkACQCABEJArDQAgAkHUAGogAkHEAGoQrxAgAigCVEGAgICAeEYNASAAIAIpAlQ3AgQgAEGOgICAeDYCACAAQQxqIAJB3ABqKAIANgIADAYLIAIgATYCwAECQAJAIAEQkCtFDQAgARAEIQEgAkEANgJ0IAIgATYCcCACQQA2AmwgAiACQcABajYCaCACQdABaiABQYCABCABQYCABEkbEOgdIAJBwAFqIQECQAJAA0AgAUUNASACQQhqIAJB6ABqEMUbIAIoAghBAXFFDQEgAigCDCEBIAIgAigCdEEBajYCdCACQeABaiABEM0BAkACQAJAIAIoAuABQZWAgIB4Rw0AIAIoAuQBIQEMAQsgAkGQAWpBCGogAkHgAWpBCGopAwA3AwAgAiACKQPgASIINwOQASAIpyIBQZaAgIB4Rw0BIAIoApQBIQELIABBlYCAgHg2AgAgACABNgIEIAJB0AFqEJEoDAULIAFBlYCAgHhGDQIgAkHQAWogAkGQAWoQjRogAigCaCEBDAALCyACQZWAgIB4NgKQAQsgAkGQAWoQ1iYgAEGUgICAeDYCACAAIAIpAtABNwIEIABBDGogAkHYAWooAgA2AgAMAQsgAkHgAWogARCXDCACKALgASEBAkACQAJAIAItAOQBIgNBfmoOAgIAAQsgAEGVgICAeDYCACAAIAE2AgQMAgsgAiADQQFxOgDUASACIAE2AtABIAJB6ABqQQAQ6B0CQAJAA0AgAkEQaiACQdABahCLESACKAIQIgNBAkYNASACKAIUIQECQAJAIANBAXENACACQeABaiABEM0BIAIoAuQBIQEgAigC4AEiA0GVgICAeEcNAQsgAEGVgICAeDYCACAAIAE2AgQgAkHoAGoQkSgMAwsgAiACKQPoATcDmAEgAiABNgKUASACIAM2ApABIAJB6ABqIAJBkAFqEI0aDAALCyACQZWAgIB4NgKQASACQZABahDWJiAAQZSAgIB4NgIAIABBDGogAkHwAGooAgA2AgAgACACKQJoNwIECyACKALQARCIKAwBCyAAIAJBwAFqEJEgCyACKALAARCIKAwGCyABEIErRQ0DEBMiAyABEPopIQQgAxCIKAJAIARFDQAgARAURQ0E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IARBAUcNASABKAIMIQEgA0HgAGpBCGogAkEIaigCADYCACADQeAAakEUaiACQRRqKAIANgIAIANB4ABqQSBqIAJBIGopAgA3AwAgA0HgAGpBKGogAkEoaikCADcDACADIAIpAgA3A2AgAyACKQIMNwJsIAMgAikCGDcDeCABKAIAIQYgAikCNCELIAIpAjwhDCACLwFEIQdByABBBBDHJyEBAkBBMEUNACABIANB4ABqQTD8CgAACyABIAc7AUQgASAMNwI8IAEgCzcCNCABIAY2AjAgA0HIAGpBCGogBUEIaikDADcDACADQcgAakEQaiAFQRBqKQMANwMAIAMgBSkDADcDSCACEI0sQQEhBgwCCyADKAIcIQIgAEEJNgIAIAAgAjYCBAwMCyADLQA8IQYgA0HIAGpBCGogBUEIaikDADcDACADQcgAakEQaiAFQRBqKQMANwMAIANBxgBqIANBP2otAAA6AAAgAyADLwA9OwFEIAMgBSkDADcDSCADKAIcIQUgAiEBCyAAIAU2AgQgACAENgIAIAAgAykDSDcDCCAAIAY6ACQgACABNgIgIAAgAy8BRDsAJSAAQRBqIANB0ABqKQMANwMAIABBGGogA0HIAGpBEGopAwA3AwAgAEEnaiADQcYAai0AADoAAAwKCyADQeAAaiACIAEoAhAoAgAiBCAEIAFBABCLBAJAAkACQCADKAJgIgRBCEYNACADQeAAakEIaiEFIAMoAoABIQIgBA0BIAEoAgwhASADQRhqQQhqIAJBCGooAgA2AgAgA0EYakEUaiACQRRqKAIANgIAIANBGGpBIGogAkEgaigCADYCACADIAIpAgA3AxggAyACKQIMNwIkIAMgAikCGDcDMCABKAIAIQYgAikCKCELIAIpAjAhDCACKAI4IQcgAi0APCEIQcAAQQQQxychAQJAQSRFDQAgASADQRhqQST8CgAACyABIAg6ADwgASAHNgI4IAEgDDcCMCABIAs3AiggASAGNgIkIANBmAFqQQhqIAVBCGopAwA3AwAgA0GYAWpBEGogBUEQaikDADcDACADIAUpAwA3A5gBIAIQjixBASEGDAILIAMoAmQhAiAAQQk2AgAgACACNgIEDAsLIAMtAIQBIQYgA0GYAWpBCGogBUEIaikDADcDACADQZgBakEQaiAFQRBqKQMANwMAIANB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aiABKAIEIAEoAggQyRMgAEEaNgIAIAAgAykD+AE3AiggAEEwaiAEKQMANwIAIABBOGogA0GIAmopAwA3AgAMCQsgA0GMAmogBUEIaigCACIENgIAIANB+AFqQQhqIgYgBDYCACADIAUpAgAiETcChAIgAyARNwP4ASAAQRxqIAEoAgQgASgCCBDJEyAAQRs2AgAgACADKQP4ATcCKCAAQTBqIAYpAwA3AgAgAEE4aiADQYgCaikDADcCAAwJCyADQYwCaiAFQQhqKAIAIgQ2AgAgA0H4AWpBCGoiBiAENgIAIAMgBSkCACIRNwKEAiADIBE3A/gBIABBHGogASgCBCABKAIIEMkTIABBGzYCACAAIAMpA/gBNwIoIABBMGogBikDADcCACAAQThqIANBiAJqKQMANwIADAcLIANB+AFqIAEQ2AYgA0EZNgKEASADQQU2AmggA0EoaiADQfgBaiADQegAaiADQYQBahCRDAJAAkACQAJAAkAgBSgCACIIIAEoAggiCUYNACABEM4PQSxHDQIgARCcIg0DIANBjAJqIAVBCGooAgA2AgAgA0H4AWpBCGoiBCADQRBqQQhqKAIANgIAIAMgAykDEDcD+AEgAyAFKQIANwKEAiAAQRxqIAEoAgQgCRDJEyAAQRo2AgAgACADKQP4ATcCKCAAQTBqIAQpAwA3AgAgAEE4aiADQYgCaikDADcCAAwBCyADQYwCaiAFQQhqKAIANgIAIANB+AFqQQhqIgQgA0EQakEIaigCADYCACADIAMpAxA3A/gBIAMgBSkCADcChAIgAEEcaiABKAIEIAgQyRMgAEEaNgIAIAAgAykD+AE3AiggAEEwaiAEKQMANwIAIABBOGogA0GIAmopAwA3AgALQQEhBEEBIQgMCAsgAygCLCEKIAMoAigiBEEiRw0BQQAhC0EBIQxBACEEQQAhCAwECyABEM4PIQggAygCKCENAkAgCEH9AEcNACADKAIsIQoCQCANQSJHDQBBACEEQQEhDEEBIQtBACEIDAULAkBBOEUNACAAQQhqIANBKGpBCGpBOPwKAAALIAAgCjYCBAwFCwJAAkACQCANQSJGIggNACADQShqQcTBhAEQ8BJFDQEgBC0AZw0CAkBBwABFDQAgACADQShqQcAA/AoAAAtBACEIQQEhBAwJCyADKAIsIQoMBAsgAygCLCEBAkBBOEUNACAAQQhqIANBKGpBCGpBOPwKAAALIAAgATYCBAwFCyADKAJEIAMoAkgQrSpBACEKDAILAkBBOEUNACAAQQhqIANBKGpBCGpBOPwKAAALIAAgCjYCBCAAIAQ2AgAMBAtB8MGEAUEkQZTChAEQxxwACyADQfgBaiABENgGIANBoAFqIANB+AFqIANB6ABqIANBhAFqEJEMIAMoAqQBIQ0CQCADKAKgASIEQSJGDQACQEE4RQ0AIABBCGogA0GgAWpBCGpBOPwKAAALIAAgDTYCBCAAIAQ2AgBBASEEDAQLQQEhBEECIQtBACEMCwJAAkAgBSgCACAJRg0AIAEQzg9B/QBGDQELIANBjAJqIAVBCGooAgA2AgAgA0H4AWpBCGoiBiADQRBqQQhqKAIANgIAIAMgAykDEDcD+AEgAyAFKQIANwKEAiAAQRxqIAEoAgQgCRDJEyAAQRo2AgAgACADKQP4ATcCKCAAQTBqIAYpAwA3AgAgAEE4aiADQYgCaikDADcCAAwDC0EBIQ4CQCABEJwiRQ0AIAEQzg9BP0cNACABEIALGkEAIQ4LIANB4AFqQRRqIAVBCGoiDygCADYCACADQeABakEIaiIQIANBEGpBCGooAgA2AgAgAyADKQMQNwPgASADIAUpAgA3AuwBAkAgDCAKIA1Ncg0AIABBHGogASgCBCAJEMkTIABBGDYCACAAIAMpA+ABNwIoIABBMGogECkDADcCACAAQThqIANB8AFqKQMANwIADAMLIANBoAFqQRRqIA8oAgA2AgAgA0H4AWpBFGogECkDADcCACADQZQCaiADQeABakEQaikDADcCACADQaABakEIaiIEIAYgBxDdFSIBQQhqKAIANgIAIAMgBSkCADcCrAEgAyABKQIANwOgASADIAMpA+ABNwKEAkEIEKwlIgEgBzYCBCABIAY2AgAgA0GoAmogBCkDADcCACADQbACaiADQaABakEQaikDADcCACADIA46ALgCIAMgDTYCgAIgAyAKNgL8ASADIAs2AvgBIAMgATYCnAIgAyADKQOgATcCoAIgAkEIIANB+AFqELkkQeDBhAEQ/BwCQEEkRQ0AIABBBGogAkEk/AoAAAsgAEEiNgIADAULIAAgDTYCAAtBACEEQQAhCAsgCEUNACAERQ0AIAMoAihBIkYNACADKAJE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ECIIUA0BIAhCA4NCAFINASAIpyIDIAMoAgAiBEF/ajYCACAEQQFHDQEgAyADKAIQEI8iDAELIAAoAgQgARD+AgsgAkHQAGokAA8LAAvaDwEIfyMAQYADayICJAAgAkGIAmogARChHCACKAKIAiEDAkBBOEUNACACQcgCaiACQYwCakE4/AoAAAsCQAJAIANBIkYNACACKALEAiEBAkBBOEUNACAAQQhqIAJByAJqQTj8CgAACyAAIAE2AkAgACADNgIEIABBiIDEADYCAAwBCwJAQThFDQAgAkEIaiACQcgCakE4/AoAAAsgARCQBwJAAkACQCABKAIAKAJQIAEoAggiBEYNACABEM4PQS1HDQIgARCQCEHdAEYNAiABEJAIQS1GDQICQCABEJwiDQAgAEEEaiABEPMJIABBiIDEADYCAAwCCyACQYgCaiABEKEcIAIoAogCIQMCQEE4RQ0AIAJByAJqIAJBjAJqQTj8CgAACwJAIANBIkYNACACKALEAiEBAkBBOEUNACAAQQhqIAJByAJqQTj8CgAACyAAIAE2AkAgACADNgIEIABBiIDEADYCAAwCCwJAQThFIgMNACACQcAAaiACQcgCakE4/AoAAAsgAkGwAWpBCGogAkEIahCeIiIFQQhqKAIANgIAIAIgBSkCADcDsAEgAkGwAWpBFGogAkHAAGoQniIiBUEUaigCADYCACACIAUpAgw3ArwBAkAgAw0AIAJByAJqIAJBCGpBOPwKAAALIAJBiAJqIAJByAJqIAEoAgQiAyAEEMoLIAJByAFqQQhqIAJBiAJqQRBqKQIANwMAIAJByAFqQRBqIgUgAkGIAmpBGGopAgA3AwAgAkHIAWpBGGoiBiACQagCaigCADYCACACIAIpApACNwPIASACKAKMAiEBAkAgAigCiAIiB0EiRg0AIAAgAikCrAI3AiggAEHAAGogAkHEAmooAgA2AgAgAEE4aiACQbwCaikCADcCACAAQTBqIAJBtAJqKQIANwIAIABBJGogBigCADYCACAAQRxqIAUpAwA3AgAgAEEUaiACQdABaikDADcCACAAIAIpA8gBNwIMIAAgATYCCCAAIAc2AgQgAEGIgMQANgIAIAJBwABqEK0lDAQLAkBBOEUNACACQcgCaiACQcAAakE4/AoAAAsgAkGIAmogAkHIAmogAyAEEMoLIAJB6AFqQQhqIgYgAkGIAmpBEGopAgA3AwAgAkHoAWpBEGoiByACQYgCakEYaikCADcDACACQegBakEYaiIIIAJBqAJqKAIANgIAIAIgAikCkAI3A+gBIAIoAowCIQUCQCACKAKIAiIJQSJGDQAgACACKQKsAjcCKCAAQcAAaiACQcQCaigCADYCACAAQThqIAJBvAJqKQIANwIAIABBMGogAkG0AmopAgA3AgAgAEEkaiAIKAIANgIAIABBHGogBykDADcCACAAQRRqIAYpAwA3AgAgACACKQPoATcCDCAAIAU2AgggACAJNgIEIABBiIDEADYCAAwECyACQfgAakEIaiAGKQMANwMAIAJB+ABqQRBqIAcpAwA3AwAgAkH4AGpBGGogCCgCADYCACACQfgAakEkaiACQbABakEIaikDADcCACACQaQBaiACQbABakEQaikDADcCACACIAIpA+gBNwN4IAIgAikDsAE3ApQBAkAgASAFTQ0AIABBIGogAyAEEMkTIABCiIDEgCA3AgAgACACKQOwATcCLCAAQTRqIAJBuAFqKQMANwIAIABBPGogAkHAAWopAwA3AgAMBAsgAEEEaiIDIAIpA8gBNwIAIANBGGogAkHIAWpBGGooAgA2AgAgA0EQaiACQcgBakEQaikDADcCACADQQhqIAJByAFqQQhqKQMANwIAAkBBNEUNACAAQSRqIAJB+ABqQTT8CgAACyAAIAU2AiAgACABNgIADAMLIABBBGogARDzCSAAQYiAxAA2AgALIAJBCGoQrSUMAQsgAkEsaiEFIAJBCGpBBGohAwJAAkACQAJAIAIoAggiB0H+////B2oiBkEEIAZBBEkbDgUBAAACAwALIAJBlAJqIANBCGopAgA3AgAgAkGcAmogA0EQaikCADcCACACQaQCaiADQRhqKQIANwIAIAJBtAJqIAVBCGopAgA3AgAgAkGIAmpBNGogBUEQaigCADYCACACIAc2AogCIAIgAykCADcCjAIgAiAFKQIANwKsAiACQcgCakEQaiIFIAJBiAJqEJ4iIgNBEGopAgA3AwAgAkHIAmpBCGoiBiADQQhqKQIANwMAIAIgAykCADcDyAIgAEEgaiABKAIEIAQQyRMgAEEBNgIEIAAgAikDyAI3AiwgAEE0aiAGKQMANwIAIABBPGogBSkDADcCACAA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ASEEIAIoArABIgZBIkYNAQJAQThFDQAgAEEMaiACQbgBakE4/AoAAAsgACAENgIIIAAgBjYCBCAAQYSAgIB4NgIADAULAkAgAUHkh5wBQQEQ0xQNACACQbABaiABIAJBIGoQyw4gAigCtAEhAQJAIAIoArABIgRBIkYNAAJAQThFDQAgAEEMaiACQbgBakE4/AoAAAsgACABNgIIIAAgBDYCBCAAQYSAgIB4NgIADAYLIAJBxAFqIANBCGooAgAiBDYCACACQbABakEIaiAENgIAIAIgAykCACILNwK8ASACIAs3A7ABIAJBEGogAkGwAWoQ/RwgAigCFCEEQQgQrCUiAyAENgIEIANBADYCACAAIAM2AiwgACABNgIEIABBgICAgHg2AgAgACACKQIgNwIwIABBOGogAkEgakEIaikCADcCACAAQcAAaiACQTBqKQIANwIADAULIAMoAgAiBCABKAIIIgVGDQMgAkGwAWogARCqAyACQdAAakEIaiIGIAJByAFqKQIANwMAIAJB0ABqQRBqIgcgAkHQAWopAgA3AwAgAiACKQLAATcDUCACKAK8ASEEIAIoArgBIQggAigCtAEhCQJAIAIoArABIgpBIkYNACAAIAIpAtgBNwIsIABBPGogAkHoAWopAgA3AgAgAEE0aiACQeABaikCADcCACAAIAQ2AhAgACAINgIMIAAgCTYCCCAAIAIpA1A3AhQgAEEcaiAGKQMANwIAIABBJGogBykDADcCACAAIAo2AgQgAEGEgICAeDYCAAwFCyACQfgAakEIaiAGKQMANwMAIAJB+ABqQRBqIAcpAwA3AwAgAiACKQNQNwN4IAIgARDODyIGNgKUASABEIALGgJAAkAgBkEpRg0AIAZBOkcNASAAIAQ2AgwgACAINgIIIAAgCTYCBCAAIAIpA3g3AhAgAEEYaiACQfgAakEIaikDADcCACAAQSBqIAJB+ABqQRBqKQMANwIAIAJBxAFqIANBCGooAgAiATYCACACQbABakEIaiABNgIAIAIgAykCACILNwK8ASACIAs3A7ABIAJBCGogAkGwAWoQ/RwgAigCDCEDQQgQrCUiASADNgIEIAFBADYCACAAIAE2AiwgAEGCgICAeDYCACAAIAIpAiA3AjAgAEE4aiACQSBqQQhqKQIANwIAIABBwABqIAJBIGpBEGopAgA3AgAMBgsCQCAERQ0AIAJBrAFqIANBCGooAgA2AgAgACACKQN4NwIQIAAgBDYCDCAAIAg2AgggACAJNgIEIABBg4CAgHg2AgAgAkGYAWpBCGoiASACQSBqQQhqKAIANgIAIABBGGogAkH4AGpBCGopAwA3AgAgAEEgaiACQfgAakEQaikDADcCACACIAMpAgA3AqQBIAIgAikCIDcDmAEgAEE4aiACQZgBakEQaikDADcCACAAQTBqIAEpAwA3AgAgACACKQOYATcCKAwGCyAAQSBqIAEoAgQgBRDJEyAAQoSAgIC4AzcCACAAIAIpAzg3AiwgAEE0aiACQcAAaikDADcCACAAQTxqIAJByABqKQMANwIAIAkgCBCcKgwFCyACQQA2ArABIAJBlAFqQazChAEgAkGwAWpBsMKEARCPHwALIAJBsAFqIAEgBBDvASACKAKwASEBAkBBKEUNACACQdAAaiACQbQBakEo/AoAAAsCQCABQSJGDQAgACACKQLcATcCMCAAQcAAaiACQewBaigCADYCACAAQThqIAJB5AFqKQIANwIAAkBBKEUNACAAQQhqIAJB0ABqQSj8CgAACyAAQYSAgIB4NgIAIAAgATYCBAwECwJAQShFDQAgACACQdAAakEo/AoAAAsgAkHEAWogA0EIaigCACIBNgIAIAJBsAFqQQhqIAE2AgAgAiADKQIAIgs3ArwBIAIgCzcDsAEgAiACQbABahD9HCACKAIEIQNBCBCsJSIBIAM2AgQgAUEANgIAIAAgATYCLCAAIAU6ACggACACKQIgNwIwIABBOGogAkEgakEIaikCADcCACAAQcAAaiACQTBqKQIANwIADAMLIAJBADYCsAEgAkEcakGIvIQBIAJBsAFqQcDChAEQjx8ACyACQbABakEIaiIDIAJBIGpBCGooAgA2AgAgAkHEAWogASgCACIEQdgAaigCADYCACACIAIpAiA3A7ABIAIgBCkCUDcCvAEgAEEgaiABKAIEIAEoAggQyRMgAEEhNgIEIAAgAikDsAE3AiwgAEE0aiADKQMANwIAIABBPGogAkHAAWopAwA3AgAgAEGEgICAeDYCAAwBCyAAQSBqIAEoAgQgBBDJEyAAQoSAgIDYAjcCACAAIAIpAiA3AiwgAEE0aiACQShqKQIANwIAIABBPGogAkEwaikCADcC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QQFqIgwgDEECdEHUioIBaigCAEELdCALSxsiDCAMQQFqIgwgDEECdEHUioIBaigCAEELdCALSxsiDEECdEHUioIBaigCAEELdCINIAtGIA0gC0lqIAxqIgxBAnRB1IqCAWoiDigCAEEVdiELQaECIQ0CQAJAIAxBKEsNACAOKAIEQRV2IQ0gDA0AQQAhDAwBCyAOQXxqKAIAQf///wBxIQwLAkAgDSALQQFqRg0AIAogDGshDCANQX9qIQ1BACEKA0AgCiALQZbvgAFqLQAAaiIKIAxLDQEgDSALQQFqIgtHDQALCyALQQFxRQ0BDAILIApBUGpBCkkNAQsgA0EYaiABEJINIABBHGogASgCBCAHEMkTIABBEzYCACAAIAMpAhg3AiggAEEwaiADQSBqKQIANwIAIABBOGogA0EoaikCADcCAAwECyABEIALDQALCwJAAkACQCAEKAJQIg8gB0YNACAEKQJUIRMgAyABEM4PIgo2AhQgCkE+Rw0BIAEQgAsaIANBCGogASgCBCIQIAcgBiAPQdTChAEQnhEgAygCDCIBDQIgAEEcaiAQIAcQyRMgACAINgI8IAAgCTYCOCAAIAY2AjQgACAINgIwIAAgCTYCLCAAIAY2AiggAEESNgIADAQLIANBGGpBFGogBUEIaigCACIENgIAIANBGGpBCGoiCiAENgIAIAMgBSkCACITNwIkIAMgEzcDGCAAQRxqIAEoAgQgBxDJEyAAQRQ2AgAgACADKQMYNwIoIABBMGogCikDADcCACAAQThqIANBKGopAwA3AgAMAwsgA0EANgIYIANBFGpB0MKEASADQRhqQeTChAEQjx8ACyADQRhqIAMoAgggARDJEwJAAkAgBCgCMA0AIAMoAiAhDiADKAIcIQ0gAygCGCERIARBfzYCMAJAIAQoAjwiAQ0AQQAhAQwCCyAEKAI4IRJBACEKA0ACQCABQQFLDQACQCANIA4gEiAKQShsaiIBQQRqKAIAIAFBCGooAgAQtiBB/wFxIgtFDQAgCiALQf8BRmohAQwECyADQegAaiIKIAFBHGopAgA3AwAgA0HYAGpBCGoiCyABQRRqKQIANwMAIAMgASkCDDcDWCADQRhqQRxqIBAgBxDJEyADQRhqQRRqIAopAwA3AgAgA0EkaiALKQMANwIAIAMgEzcCUCADIA82AkwgAyAI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IAVBBHJBPPwKAAALIAAgATYCAAwBCyAAIAM2AgggACAGNgIEIABBKjYCAAsgBUHQAGokAAu/DwEHfyMAQYACayICJAAgASgC0AEhAyABEJQLAkACQAJAAkACQAJAAkAgAS0A2AFFDQAgASgC1AEhBCABKALQASEDIAJBDGogARCXJCACQQE2AqQBIAJBvLecATYCoAEgAkIBNwKsASACQY8FNgIcIAJBADoA5AEgAiACQRhqNgKoASACIAJB1ABqNgIYIAIgAkHkAWo2AlQgAkHoAGogAkGgAWoQtBkgAkH8AGogAkEUaigCADYCACACIAIpAgw3AnQgAyAEIAJB6ABqEJcZIQQgAS0A2AFBogFGDQEMBQsgARCUCyABLQDYASIEQcAARg0BIARBogFHDQIgARDAKSEBIABBBDoANCAAIAE2AgAMBQsgASABEMApEKcWDAMLIAJBGGogARC1GQwBCyABKALUASEEIAEoAtABIQUgARCUCyACQZGBgIB4NgKgASABIAUgBCACQaABahCqISACIAQ2AiQgAiAFNgIgIAJCocSIATcDKCACQgE3AxgLQQAhBQJAAkACQCABLQDYASIEQQdHDQAgARCUCyABLQDYASIEQQJHDQAgASgC0AEhBiABEJQLAkACQAJAIAEtANgBQfAARg0AIAEoAtQBIQQgASgC0AEhAyACQTxqIAEQlyQgAkEBNgKkASACQby3nAE2AqABIAJCATcCrAEgAkGPBTYCWCACQfAAOgD4ASACIAJB1ABqNgKoASACIAJB8AFqNgJUIAIgAkH4AWo2AvABIAJB6ABqIAJBoAFqELQZIAJB/ABqIAJBxABqKAIANgIAIAIgAikCPDcCdCADIAQgAkHoAGoQlxkhBCABLQDYAUGiAUcNAgwBCyABEJQLAkAgAS0A2AFBCUYNACABKALUASEEIAEoAtABIQMgAkHIAGogARCXJCACQQE2AqQBIAJBvLecATYCoAEgAkIBNwKsASACQY8FNgJYIAJBCToA+AEgAiACQdQAajYCqAEgAiACQfABajYCVCACIAJB+AFqNgLwASACQegAaiACQaABahC0GSACQfwAaiACQdAAaigCADYCACACIAIpAkg3AnQgAyAEIAJB6ABqEJcZIQQgAS0A2AFBogFGDQEMAgsgARCUCyACQaABaiABEJ8eIAIo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DAILIAIoAgAiASABKAIAIgFBf2o2AgBCACERQgIhECABQQFHDQELIAIoAgAgAigCBBCoEgsgACARNwMIIAAgEDcDAAJAQZAKRQ0AIABBEGogBUHgEWpBkAr8CgAACyAFQeAeaiQAC6wOAgx/An4jAEHwAWsiAiQAAkACQAJAAkACQAJAAkACQAJAIAEQzg9B8ABGDQAgARDOD0HQAEcNAQsgAkHQAGogASgCACIDQcAAakHQyIQBELghIAIoAlQhBCACKAJQIgVBADYCCCABEM4PIQYCQCABEJwiDQAgAkG8AWogA0HYAGooAgAiBTYCACACQbABaiIGIAU2AgAgAiADKQJQIg43ArQBIAIgDjcDqAEgAEEcaiABKAIEIAEoAggQyRMgAEEKNgIAIAAgAikDqAE3AiggAEEwaiAGKQMANwIAIABBOGogAkG4AWopAwA3AgAMBwsCQCABEM4PQfsARw0AIAJBqAFqIAEQkg0gAkHgAGogAkG8AWooAgA2AgAgAiACKQK0ATcDWANAIAEQnCJFDQQgARDOD0H9AEYNBCAFIAEQzg8QwBYMAAsLIAJB6ABqQQhqIANB2ABqKAIANgIAIAIgAykCUDcDaCABEM4PIgVB3ABGDQEgARCcIhpBgICAgHghByACQegAaiEBDAMLQdDJhAFBOkGMyoQBEMccAAsgAkGoAWogARCSDSAAQRxqIAEoAgQgASgCCBDJEyAAQR82AgAgACACKQKoATcCKCAAQTBqIAJBqAFqQQhqKQIANwIAIABBOGogAkG4AWopAgA3AgAMBAsgAygCUCIIIAEoAghGDQIgAiABEM4PIgg2AmQCQCAIQf0ARg0AIAJBADYCqAEgAkHkAGpBuMaEASACQagBakHAyYQBEI8fAAsgARCACxogAkGoAWogBSgCBCIJIAUoAggiCkHQ2psBQQIQ0gICQAJAAkAgAigCqAFBAUcNACACQbABaiEBIAIoAuQBIQUgAigC4AEhCCACKALcASEHIAIoAtgBIQsgAigCzAFBf0YNASACQZwBaiABIAsgByAIIAVBABDfBgwCC0EAIQwCQCACLQC2AQ0AIAIoAtwBIQsgAigC2AEhDSACKAKsASEFIAItALQBIQgCQANAIAJByABqIAUgDSALEIkXIAIoAkgiAUUNCSACKAJMIQcgAiABNgLoASACIAEg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AkAgASkDECIYQgODQgBSDQAgGKciCyALKAIAIgtBAWo2AgAgC0F/TA0GCyAZQiCIpyEMIBmnIQ1BBiEDDAcLIAEoAhghCxC5JSENIAtBBGooAgAhDiALLQAMIQ8gAiALQQhqKAIAIgtBAEEEQQQQnQwgAigCBCEQIAIoAgBBAUYNAiACKAIIIQMCQCALQQJ0IhFFDQAgAyAOIBH8CgAACyANIA86AAwgDSALNgIIIA0gAzYCBCANIBA2AgACQCABKQMQIhhCA4NCAFINACAYpyILIAsoAgAiC0EBajYCACALQX9MDQULQQchAwwGCyABKAIMIQsQmCchDiACIAsQjQEgDkEYaiACQRhqKQMANwMAIA5BEGogAkEQaikDADcDAEEIIQMgDkEIaiACQQhqKQMANwMAIA4gAikDADcDAAwFC0EAIQMgASkDECIYQgODQgBSDQEgGKciCyALKAIAIgtBAWo2AgAgC0F/TA0CDAQLIBAgAigCCEHgtJwBEMEmAAsMAgsACwtBACEQQQAhDwJAIAEoAjBBgICAgHhGDQAgASgCRCEPIAEoAjghEAsgASgCeCESIAEoAogBIRMgAS0AKyEUQQohCwJAAkAgASgCoAEiFUEKRw0ADAELIAFBuAFqIRZBCSELAkACQAJAAkAgFUEJRw0ADAELQQchCwJAAkACQAJAAkACQAJAIBVBfmoiEUEBIBFBB0kbDgcABgECAwQFAAtBAiELIAEpA6gBEMYgIRkMBgsgASkDqAEQxiAhGSABKAK0ASEXIAEoArABIREgASkDsAEQxiAaQQQhCwwFCyABKQOoARDGICEZIAEoArQBIRcgASgCsAEhESABKQOwARDGIBpBBSELDAQLIAEpA7ABIhlCIIinIRcgGachEUEGIQsgASkDqAEQxiAhGQwDCxC5JSERIAEoArABIhUtAAwhFyACIBVBBGooAgAgFUEIaigCABDbFiARIAIpAgA3AgAgAiAXOgAMIBFBCGogAkEIaikCADcCACABKQOoARDGICEZDAILQQghCyABQaQBahC2ASEVDAMLIAEoArQBIRcgASgCsAEhESABKQOwARDGIBogFUEBcQ0BQQAhCyABKQOoARDGICEZCwwBC0EBIQsgAUGkAWoQtgEhFQsgAkEIaiAWQQhqKAIANgIAIAIgFikCADcDAAsgACASNgI8IAAgEzYCOCAAIA82AjQgACAQNgIwIAAgFDoAKyAAIAg6ACogACAJOgApIAAgCjoAKCAAIAQ2AiQgACAFNgIgIAAgDDYCHCAAIA02AhggACAYNwMQIAAgDjYCDCAAIAM2AgggACAGNgIEIAAgBzYCACAAIAEpA8gBNwNoIAAgFzYCVCAAIBE2AlAgACAZNwNIIAAgFTYCRCAAIAs2AkAgAEH4AGogAUHYAWooAgA2AgAgACABKQPQATcDcCAAIAIpAwA3AlggAEHgAGogAkEIaigCADYCACACQSBqJAALpg0CCX8BfiMAQeABayIDJAAgA0IENwI0IANCADcCLCADQoCAgIDAADcCJCADQQA2AkAgAyABNgI8IANBoAFqQQhqIQQgA0GgAWpBBGohBSADQdQAakEEaiEGIANBMGohBwJAA0AgAkEEaiIBKAIAIQhB2AAhCQJAAkACQAJAAkAgAigCAA4MBAQEBAQEBAMAAQICBAtBKCEJDAILQTAhCQwBC0EMIQkLIANBoAFqIANBPGogCCAJahDgCiADKAKgASIJQSJGDQACQEE8RQ0AIABBBGogA0GgAWpBBGpBPPwKAAALIAAgCTYCAAwCCyABKAIAIQECQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAigCAEF5ag4FAAUBBgQICyABIAEoAgBBiIDEAEYiCUECdGohAQNAAkACQCAJQQFxRQ0AIANBoAFqIANBPGogAUEIahDgCiADKAKgASIIQSJGDQEgAykCrAEhDCADKAKoASEBIAMoAqQBIQlBLEUNDSADQeQAaiADQbQBakEs/AoAAAwNCwJAAkACQCABKAIAQYCAvH9qIghBAiAIQQhJGw4IAwMDAwMDAAEDCyABKAIEQdgAaiEIDAELIAFBEGohCAsgA0GgAWogA0E8aiAIEOAKIAMoAqABIghBIkYNACADKQKsASEMIAMoAqgBIQEgAygCpAEhCUEsRQ0MIANB5ABqIANBtAFqQSz8CgAADAwLIANBkAFqIAkgARCUDgJAIAMoApABQQRGDQAgBCADKQKQATcCACAEQQhqIANBkAFqQQhqKQIANwIAIANBCGogA0GQAWoQ2hMgAyABNgKkASADIAk2AqABIAMoAgwhASADKAIIIQkgByADQaABakGEgYgBEMEWDAELIANBoAFqIAkgASADQTxqENsiAkAgAygCoAEiCEEiRg0AIAMpAqwBIQwgAygCqAEhASADKAKkASEJQSxFDQwgA0HkAGogA0G0AWpBLPwKAAAMDAsgAygCNCADKAI4IglBGGxqQWhqIQEDQAJAIAkNAEEAIQEMBQsgASgCACIIQQJGDQMgCUF/aiEJIAFBBGooAgAhCiADQZABaiABQQhqEIMTAkAgAygCkAFBBEYNACADIAk2AjggBEEIaiADQZABakEIaikCADcCACAEIAMpApABNwIAIAMgA0GQAWoQ2hMgAyAKNgKkASADIAg2AqABIAMoAgQhASADKAIAIQkgByADQaABakGUgYgBEMEWDAILIANBoAFqIAggCiADQTxqENsiAkAgAygCoAEiCEEiRg0AIAMgCTYCOCADKAKkASEJIAMoAqgBIQEgAykCrAEhDEEsRQ0NIANB5ABqIANBtAFqQSz8CgAADA0LIAFBaGohAQwACwsLQQEhCUEAIQgMCAsgCUF/aiEBCyADIAE2AjgMAwsgAUEIaiIJKAIAIghFDQIgAUEEaiIKKAIAIAhBxICIARCcJiEBIANBGGogCigCACAJKAIAQdSAiAEQ7iFBAiEJIAMoAhghCiADKAIcIQgMBQtBACEIQQAhCQwECyABQQhqIggoAgAiCQ0CCyACKAIAQQdJDQAgA0E8ahCAJAsgAygCKCADKAIsIglBFGxqQWxqIQEDQAJAAkACQCAJDQBBACEBDAELAkAgAUEEaigCACICQQRGDQAgCUF/aiEJIAEoAgAhCCAGIAFBCGopAgA3AgAgBkEIaiABQRBqKAIANgIAIAMgAjYCVCADQZABaiADQdQAahC6DiADKAKQAUEERg0CIAMgCTYCLCAFQQhqIANBkAFqQQhqKQIANwIAIAUgAykCkAE3AgAgA0GQAWoQwR8hAiADIAg2AqABIANBJGogA0GgAWpBlICIARDCFgwHCyAJQX9qIQELIABBIjYCACADIAE2AiwMBgsCQCAIKAIAQQZNDQAgA0E8ahCAJAsgAUFsaiEBDAALCyABQQRqIgooAgAgCUGkgIgBEJwmIQEgA0EQaiAKKAIAIAgoAgBBtICIARDuIUEDIQkgAygCECEKIAMoAhQhCAsgA0HEAGpBCGoiCyAIrUIghiAKrYQ3AgAgAyABNgJIIAMgCTYCRCADQcQAahDBHyEBIAUgAykCRDcCACAFQQhqIAspAgA3AgAgAyACNgKgASADQSRqIANBoAFqQYSAiAEQwhYgASECDAELCwJAQSxFDQAgAEEUaiADQeQAakEs/AoAAAsgACAMNwIMIAAgATYCCCAAIAk2AgQgACAINgIACyADQSRqEMEjIANB4AFqJAAL4w0BC38jAEHQAmsiAiQAIAEoAtABIQMCQAJAAkACQAJAAkACQAJAIAEtANgBIgRB3wBGDQACQCAEQeYARw0AIAEQlAsgAkEDOgA4IAIgAzYCMCACIAEoAswBNgI0IAJBIGogASACQTBqQQBBABBhIAIoAiQhBSACKAIgIQQMCAsgAkEYaiABEI8TQQEhBCACKAIcIQYgAigCGEEBcQ0GQQAhBCAGKAIAIgVBHkYNBkEAIQcgAS0AkQFBIHFFDQUCQCABLQDYASIEQTVGDQAgBEESRw0GCyABKAKIASEEIAJB0AFqIAEQlQIgASABKAKIAUEBchDjESACQRBqIAEQxAcgAigCFCEHIAIoAhBBAXENASABEJQLIAEtANgBRQ0CIAcQrikgASACQdABahDiBQwDCyABEJQLIAJBKGogASADQQAQ2wYgAigCLCEFIAIoAighBAwGCyACIAc2ApwBIAJBATYCmAEgASACQdABahDiBSACQZgBahDeIwwBCyABIAEoAogBQX5xIARBAXFyEOMRIAJB0AFqENsjDAELQQAhBwsgBigCACEFCwJAAkACQAJAAkACQAJAIAVBGEcNACAGKAIEQYCAgIB4Rg0BCyABLQDYAUUNAiAHDQFBACEEDAYLIAJB8ABqQRhqIAZBBGoiBEEYaikCADcDACACQfAAakEQaiAEQRBqKQIANwMAIAJB8ABqQQhqIgUgBEEIaikCADcDACACIAQpAgA3A3ACQAJAIAdFDQACQCABLQDYAUUNACABKALUASEFIAEoAtABIQMgAkE8aiABEJckQQEhBCACQQE2ApwBIAJBvLecATYCmAEgAkIBNwKkASACQY8FNgJkIAJBADoAbyACIAJB4ABqNgKgASACIAJB6ABqNgJgIAIgAkHvAGo2AmggAkHIAGogAkGYAWoQ6Q8gAkHcAGogAkHEAGooAgA2AgAgAiACKQI8NwJUIAMgBSACQcgAahCXGSEFAkAgAS0A2AFBogFHDQAgASABEMApEKcWCyACQfwA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ASACIANBEGoQyCYNAgsCQCAALQAFQQRGDQAgACgABSEAAkAgB0EERg0AQQEhCSABQdSLnAFBASACKAIMEQsADQMLIABBCHYhCQJAAkACQAJAIABB/wFxDgQDAAECAwsgASAJQf8BcUGAAXNBAnRBzKCeAWooAgBBECACKAIMEQsADQQMAwsgASAJQYABc0H/AXFBAnQiAEHMsJ4BaigCACAAQcyongFqKAIAIAIoAgwRCwANAwwCCyADIABBGHY6AAMgAyAAQRB2OgACIAMgCToAASADIANBAWo2AgRBASEJIAMgA0EBakEBajYCCCADIANBA2o2AgwgA0EDNgIUIANB1OyCATYCECADQgM3AhwgA0HzADYCPCADQfMANgI0IANB8wA2AiwgAyADQShqNgIYIAMgA0EMajYCOCADIANBCGo2AjAgAyADQQRqNgIoIAEgAiADQRBqEMgmDQMMAQsgASAJwEECdCIAQYigngFqKAIAIABBxJ+eAWooAgAgAigCDBELAA0BCwJAAkAgBEEARyAFckEBcUUNAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAFQQFxDQAgBEUNGyAEQQFxDQEgBEECcQ0DDAoLIAdBBEcNASACKAIMIQAMAwsgAigCDCEAIAdBBEcNAwwEC0EBIQkgAUHUi5wBQQEgAigCDCIAEQsARQ0BDBsLIAIoAgwhACAHQQRHDQQMBQtBASEJIAFBnJeCAUEBIAARCwANGSAERQ0WQQEhCCAEQQFxRQ0CC0EBIQkgAUHUi5wBQQEgABELAA0YC0EBIQkgAUGdl4IBQQEgABELAA0XQQEhCCAEQQJxRQ0DDAELIARBAnFFDQILQQEhCSABQdSLnAFBASAAEQsADRULQQEhCSABQZ6XggFBASAAEQsADRQgBEEEcQ0BIARBCHENAwwECwJAIARBBHENACAEQQhxRQ0FIAIoAgwhACAIDQMMBgsgAigCDCEAIAhFDQELQQEhCSABQdSLnAFBASAAEQsADRILQQEhCSABQZ+XggFBASAAEQsADREgBEEIcUUNAQtBASEJIAFB1IucAUEBIAARCwBFDQIMEAtBASEICwJAIARBEHENACAEQSBxRQ0HIAIoAgwhACAIDQUMCAsgAigCDCEAIAgNAQwDC0EBIQkgAUGgl4IBQQEgABELAA0NIARBEHFFDQELQQEhCSABQdSLnAFBASAAEQsARQ0BDAwLIARBIHENAQwCC0EBIQkgAUGhl4IBQQEgABELAA0KIARBIHFFDQELQQEhCSABQdSLnAFBASAAEQsARQ0CDAkLQQEhCAsCQCAEQcAAcQ0AIAghCQwECyACKAIMIQAgCA0BDAILQQEhCSABQaKXggFBASAAEQsADQZBASEJIARBwABxRQ0CC0EBIQkgAUHUi5wBQQEgABELAA0FC0EBIQkgAUGjl4IBQQEgABELAA0ECyAEQX9KDQACQAJAIAkNACACKAIMIQAMAQtBASEJIAFB1IucAUEBIAIoAgwiABELAA0ECyAGIAFBpJeCAUEBIAARCwAiCXJFDQEMAwsCQCAGRQ0AQQAhCQwDCyACKAIMIQALIAFBjZOJAUEBIAARCwAhCQwBC0EBIQkLIANBwABqJAAgCQvWDQICfwF+IwBB4ABrIgIkAAJAAkACQAJAAkACQAJAAkACQANAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAIAQXRqDiUAExMEExMTEwEIEwkTEwUMExMTAhMTExMTExMTExMTExMTExMDEwsgAkEIakEEQQFBARD3DiACKAIMIQMgAigCCEEBRg0PIAIoAhAhASAAQQQ2AgggACABNgIEIAAgAzYCACABQfTQpZsHNgAADBMLIAEoAggOAwQRBQQLIAEtABxBAkcNAgwQCyABKAIEIgEoAgAiA0EDRg0GIAMOAwoJCwoLIAEtABxBAkYNDgsgAkEANgIoIAJCgICAgBA3AiAgAkHwpZsBNgIMIAJCoICAgA43AhAgAiACQSBqNgIIIAFBCGogAkEIahC/IA0LIAAgAikCIDcCACAAQQhqIAJBIGpBCGooAgA2AgAMDgsgAkHQAGogASgCKBCfAgJAAkAgAigCUEGAgICAeEYNACACQcAAakEIaiACQdAAakEIaigCADYCACACIAIpAlA3A0AMAQsgAkEANgJIIAJCgICAgBA3A0ALIAJBAjYCDCACQaCmmwE2AgggAkICNwIUIAJBpwKtQiCGIAFBEGqthDcDKCACQfwErUIghiACQcAAaq2ENwMgIAIgAkEgajYCECAAIAJBCGoQ4AkgAigCQCACKAJEEP4pDA0LIAJBCGogASgCKBCfAgJAAkAgAigCCEGAgICAeEYNACACQTBqQQhqIAJBCGpBCGooAgA2AgAgAiACKQIINwMwDAELIAJBADYCOCACQoCAgIAQNwMwCyACQdAAaiABKAIMEJ8CAkACQCACKAJQQYCAgIB4Rg0AIAJBwABqQQhqIAJB0ABqQQhqKAIANgIAIAIgAikCUDcDQAwBCyACQQA2AkggAkKAgICAEDcDQAsgAkECNgIMIAJBoKabATYCCCACQgI3AhQgAkH8BK1CIIYiBCACQcAAaq2ENwMoIAIgBCACQTBqrYQ3AyAgAiACQSBqNgIQIAAgAkEIahDgCSACKAJAIAIoAkQQ/ikgAigCMCACKAI0EP4pDAwLAkAgASgCCA0AIAJBATYCDCACQbimmwE2AgggAkIBNwIUIAJBpwKtQiCGIAFBEGqthDcDICACIAJBIGo2AhAgACACQQhqEOAJDAwLIAJBIGogASgCDBCfAgJAAkAgAigCIEGAgICAeEYNACACQdAAakEIaiACQSBqQQhqKAIANgIAIAIgAikCIDcDUAwBCyACQQA2AlggAkKAgICAEDcDUAsgAkEBNgIMIAJBuKabATYCCCACQgE3AhQgAkH8BK1CIIYgAkHQAGqthDcDQCACIAJBwABqNgIQIAAgAkEIahDgCSACKAJQIAIoAlQQ/ikMCwsgAS0AGEEFRw0JCyABKAIQIQEMAAsLIAEoAggNBiACQQA2AiggAkKAgICAEDcCICACQfClmwE2AgwgAkKggICADjcCECACIAJBIGo2AgggAUEQaiACQQhqEL8gDQUgACACKQIgNwIAIABBCGogAkEgakEIaigCADYCAAwHCyAAQYCAgIB4NgIADAYLIAJB0ABqIAEoAiAQnwICQAJAIAIoAlBBgICAgHhGDQAgAkHAAGpBCGogAkHQAGpBCGooAgA2AgAgAiACKQJQNwNADAELIAJBADYCSCACQoCAgIAQNwNACyACQQI2AgwgAkGgppsBNgIIIAJCAjcCFCACQacCrUIghiABQQhqrYQ3AyggAkH8BK1CIIYgAkHAAGqthDcDICACIAJBIGo2AhAgACACQQhqEOAJIAIoAkAgAigCRBD+KQwFCyACQQhqIAEoAiAQnwICQAJAIAIoAghBgICAgHhGDQAgAkEwakEIaiACQQhqQQhqKAIANgIAIAIgAikCCDcDMAwBCyACQQA2AjggAkKAgICAEDcDMAsgAkHQAGogASgCBBCfAgJAAkAgAigCUEGAgICAeEYNACACQcAAakEIaiACQdAAakEIaigCADYCACACIAIpAlA3A0AMAQsgAkEANgJIIAJCgICAgBA3A0ALIAJBAjYCDCACQaCmmwE2AgggAkICNwIUIAJB/AStQiCGIgQgAkHAAGqthDcDKCACIAQgAkEwaq2ENwMgIAIgAkEgajYCECAAIAJBCGoQ4AkgAigCQCACKAJEEP4pIAIoAjAgAigCNBD+KQwECyADIAIoAhBB4LScARDBJgALQfCpnAFBNyACQdAAakGIppsBQfSqnAEQoxIAC0HwqZwBQTcgAkHQAGpBiKabAUH0qpwBEKMSAAsgAEGAgICAeDYCAAsgAkHgAGokAAv4CwILfwF+IwBBMGsiAiQAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOCAABAgMEBQYHAAsgACgCICABEJcDDAcLIAAoAiAgARDBCwwGCyAAKAIEIgAoAggiA0UNBSAAKAIEIgAgA0E4bGohBANAIAAgARD9CgJAIABBMGooAgAiA0UNACADIAEQowILIABBOGoiACAERw0ADAYLCyAAKAIEIgAoAggiA0UNBCAAKAIEIgAgA0E4bGohBANAIAAgARD9CgJAIABBMGooAgAiA0UNACADIAEQowILIABBOGoiACAERw0ADAULCyAAKAIEIAEQ3wkMAwsCQCAAKAIEIgUoAiAiAEUNACAAKAIIIgNFDQAgA0EwbCEDIAAoAgRBJGohAANAAkAgAEF8aigCACIERQ0AIAQgARCtAgsCQCAAKAIAIgRFDQAgBCABEK0CCyAAQTBqIQAgA0FQaiIDDQALCyAFKAIkIAEQrQIMAgsgACgCBCIAKAIoIgNFDQEgA0EwbCEDIAAoAiRBKGohAANAAkAgACgCACIERQ0AIAQgARCjAgsgAEEwaiEAIANBUGoiAw0ADAILCyAAKAIEIgBBIGohBQJAAkAgAC0ARUF+ag4CAQIACyAAKAJAIgUtACVBAkYNAANAIAUoAiAiBS0AJUECRw0ACwsgBSgCCCIGQThsIQcgBSgCBCEAQQAhAwJAAkACQAJAAkADQCAHIANGIggNASAAIANqIQQgA0E4aiEDIAQoAgBBBkcNAAsgBkUNAQwCCyAGDQEMBAsgAkEIakEAKQOA/Z0BIg03AwAgAkEYaiANNwMAIAJBACkD+PydASINNwMAIAIgDTcDECACQRBqIQlBASEKDAELIAZBOGwhB0EAIQMCQAJAA0ACQCAAIANqIgQoAgBBCUcNACAEQQhqKAIAQRFHDQAgBEEQaigCAEEHRg0CCyAHIANBOGoiA0cNAAsgCA0EQQEhCgwBCyAIDQJBACEKCyACQQhqQQApA4D9nQEiDTcDACACQRhqIA03AwAgAkEAKQP4/J0BIg03AwAgAiANNwMQIAZBOGwhAyACQRBqIQkDQAJAAkAgACgCAEEJRw0AIABBCGogAhCGBAwBCyAAIAIQhwMLIABBOGohACADQUhqIgMNAAsLAkAgBSgCCCIIRQ0AQQAhACAFQQA2AghBACEDAkACQANAAkAgBSgCBCAAaiIEKAIAQQZHDQAgBEEEaigCACIHLQBBDQIgBy0AQA0AIAJBIGogB0EoahCpHCACIAJBIGoQpQwhBwJAIAIpAyAiDUIDg0IAUg0AIA2nIgYgBigCACILQX9qNgIAIAtBAUcNACAGIAYoAhAQjyILIAdFDQILIABBOGohACAIIANBAWoiA0cNAAtBACEGDAELIAQQywVBASEGIANBAWogCEYNACAAQThqIQQgA0F/cyAIaiEHQQEhBgNAAkACQAJAIAUoAgQiAyAEaiIAKAIAQQZHDQAgAEEEaigCACILLQBBDQEgCy0AQA0AIAJBIGogC0EoahCpHCACIAJBIGoQpQwhAwJAIAIpAyAiDUIDg0IAUg0AIA2nIgsgCygCACIMQX9qNgIAIAxBAUcNACALIAsoAhAQjyILIANFDQEgBSgCBCEDCyADIAZBSGxqIARqIgMgACkDADcDACADQTBqIABBMGopAwA3AwAgA0EoaiAAQShqKQMANwMAIANBIGogAEEgaikDADcDACADQRhqIABBGGopAwA3AwAgA0EQaiAAQRBqKQMANwMAIANBCGogAEEIaikDADcDAAwBCyAAEMsFIAZBAWohBgsgBEE4aiEEIAdBf2oiBw0ACwsgBSAIIAZrNgIICyACEKYKIAkQrAwgCg0BIAUoAgghBiAFKAIEIQALIAZFDQAgBkE4bCEFQQAhBANAAkAgACAEaiIDKAIAQQlHDQAgA0EIaigCAEERRw0AIANBEGooAgBBB0cNACADQRRqKAIALQBFQQNGDQAgAyABEJMLCyAFIARBOGoiBEcNAAsLIAJBMGokAAuHDAINfwJ+IwBBwABrIgQkAAJAA0ACQAJAAkACQCABQSFJDQACQCADDQAgACABEJIHDAILIAAgAUEDdiIFQcQBbGohBiAAIAVB8ABsaiEHAkACQCABQcAASQ0AIAAgByAGIAUQ4gwhBQwBCyAAIQUgACgCBCIIIAcoAgQiCUkgACgCACIKIAcoAgAiC0kgCiALRhsiDCAIIAYoAgQiDUkgCiAGKAIAIghJIAogCEYbRw0AIAYgByAMIAkgDUkgCyAISSALIAhGG3MbIQULIANBf2ohAyAFIABrIgdBHG4hBQJAIAJFDQAgAigCBCAAIAdqIgYoAgRJIAIoAgAiCiAGKAIAIgtJIAogC0YbQQFHDQQLIAUgAUkNAgwFCyAAIAEQvQMLIARBwABqJAAPCyAEQSBqQRhqIgsgAEEYaiIMKAIANgIAIARBIGpBEGoiCCAAQRBqIg0pAgA3AwAgBEEgakEIaiIJIABBCGoiDikCADcDACAEIAApAgA3AyAgACAHaiIGQQhqIgcpAgAhESAGQRBqIgUpAgAhEiAGQRhqIgooAgAhDyAAIAYpAgA3AgAgDCAPNgIAIA0gEjcCACAOIBE3AgAgCiALKAIANgIAIAUgCCkDADcCACAHIAkpAwA3AgAgBiAEKQMgNwIAIAsgAEE0aigCADYCACAIIABBLGopAgA3AwAgCSAAQSRqKQIANwMAIAQgACkCHDcDICAEQQA2AhwgBCAAQThqIgY2AhggBCAAQRxqIgc2AhAgACABQRxsIg9qIQogBCAEQSBqNgIUIABBBGohBQJAA0ACQCAGIApJDQAgByAPakFkaiEKA0AgBiAKRg0DIAAoAgAgBSgCACAHIARBEGoQ2AwgBCgCGCEGDAALCyAAKAIAIAUoAgAgByAEQRBqENgMIAQoAhghBgwACwsgBCAEKAIUNgIYIAAoAgAgBSgCACAHIARBEGoQ2AwgBCgCHCIHIAFPDQIgCyAMKAIANgIAIAggDSkCADcDACAJIA4pAgA3AwAgBCAAKQIANwMgIAAgB0EcbGoiBkEIaiIFKQIAIREgBkEQaiIKKQIAIRIgBkEYaiIPKAIAIRAgACAGKQIANwIAIAwgEDYCACANIBI3AgAgDiARNwIAIA8gCygCADYCACAKIAgpAwA3AgAgBSAJKQMANwIAIAYgBCkDIDcCACAAIAcgAiADEKECIAEgB0F/c2ohASAGQRxqIQAgBiECDAELIARBIGpBGGoiCiAAQRhqIggoAgA2AgAgBEEgakEQaiICIABBEGoiCSkCADcDACAEQSBqQQhqIgsgAEEIaiIMKQIANwMAIAQgACkCADcDICAGQQhqIgcpAgAhESAGQRBqIgUpAgAhEiAGQRhqIg0oAgAhDiAAIAYpAgA3AgAgCCAONgIAIAkgEjcCACAMIBE3AgAgDSAKKAIANgIAIAUgAikDADcCACAHIAspAwA3AgAgBiAEKQMgNwIAIAogAEE0aigCADYCACACIABBLGopAgA3AwAgCyAAQSRqKQIANwMAIAQgACkCHDcDICAEQQA2AhwgBCAAQThqIgY2AhggBCAAQRxqIgU2AhAgACABQRxsaiEHIAQgBEEgajYCFAJAA0ACQCAGIAdJDQADQCAGIAdGDQMgACgCACAAQQRqKAIAIAUgBEEQahDZDCAEKAIYIQYMAAsLIAAoAgAgAEEEaigCACAFIARBEGoQ2QwgBCgCGCEGDAALCyAEIAQoAhQ2AhggACgCACAAQQRqKAIAIAUgBEEQahDZDCAEKAIcIgcgAU8NASAKIAgoAgA2AgAgAiAJKQIANwMAIAsgDCkCADcDACAEIAApAgA3AyAgACAHQRxsaiIGQQhqIgUpAgAhESAGQRBqIg0pAgAhEiAGQRhqIg4oAgAhDyAAIAYpAgA3AgAgCCAPNgIAIAkgEjcCACAMIBE3AgAgDiAKKAIANgIAIA0gAikDADcCACAFIAspAwA3AgAgBiAEKQMgNwIAIARBCGogB0EBaiAAIAEQ1SBBACECIAQoAgwhASAEKAIIIQAMAAsLAAv/CwILfwV+IwBBEGsiBCQAIAQQpR0iDzcDACAPQgODIRACQAJAAkACQAJAAkACQAJAAkACQAJAIAEgBBCEDA0AAkAgEEIAUg0AIA+nIgUgBSgCACIGQX9qNgIAIAZBAUcNACAFIAUoAhAQjyILAkAgASkDACIQQgODIhFCAFINACAQpyIFIAUoAgAiBUEBajYCACAFQX9MDQYLIABBHGogECABKAIIIgcQhQYaIAAoAgQhBgJAAkACQCAAKAIIIggOAgIBAAsCQCABKQMAIg9CA4NCAFINACAPpykDCCEPCyAAKAIQIgkgD6dB3cvdnnlsIA9CIIinakHdy92eeWwgB2pB3cvdnnlsQQ93IgVxIQogBUEZdq1CgYKEiJCgwIABfiESIAAoAgwiC0F8aiEMQQAhDQNAIAsgCmopAAAiEyAShSIPQn+FIA9C//379+/fv/9+fINCgIGChIiQoMCAf4MhDwJAA0AgD1ANASAMIA96p0EDdiAKaiAJcUECdGsoAgAiBSAITw0HIA9Cf3wgD4MhDyABIAYgBUEYbGoiBRCEDEUNACAHIAUoAghHDQAMDwsLIBMgE0IBhoNCgIGChIiQoMCAf4NCAFINAiANQQhqIg0gCmogCXEhCgwACwsgASAGEIQMRQ0AIAcgBigCCEYNCwsgAg0BDAQLIBBCAFINCSAPpyIFIAUoAgAiAUF/ajYCACABQQFHDQkgBSAFKAIQEI8iDAkLIAcQyhYhBQJAAkBBACgCgOeeASIGRQ0AIAZBIGoQkxYhCCAGQSxqIQEgBkEoaiEGA0AgBUUNAiAFIANGDQIgBSABKAIAIgpPDQQgBigCACAFQQJ0aigCACEFDAALC0GFjpwBQcgAQbCPnAEQtysACyAIQQA6AAAgBSADRw0CDAgLIAUgCEGc9ZoBEMAUAAsgBSAKQdjymAEQwBQACwJAAkAgEUIAUg0AIBCnIgUgBSgCACIBQQFqNgIAIAFBf0wNAiAFKQMIIQ8MAQsgECEPCyAEIBA3AwAgBCAHNgIIIABBDGoiCkEBIAAoAgQiCCAAKAIIIgYQxSQgACgCECIDIA+nQd3L3Z55bCAPQiCIp2pB3cvdnnlsIAdqQd3L3Z55bEEPdyILcSEBIAtBGXYiDq1CgYKEiJCgwIABfiERIAAoAgwhDEEAIQJBACEHA0AgDCABaikAACIQIBGFIg9Cf4UgD0L//fv379+//358g0KAgYKEiJCgwIB/gyEPAkADQCAPUA0BIAooAgAgD3qnQQN2IAFqIANxIglBAnRrQXxqKAIAIgUgBk8NBCAPQn98IA+DIQ8gBCAIIAVBGGxqIgUQhAxFDQAgBCgCCCAFKAIIRw0ACyAAKAIMQQAgCWtBAnRqQXxqKAIAIgUgACgCCCIBTw0EIAQpAwAiD0IDg0IAUg0HIA+nIgUgBSgCACIBQX9qNgIAIAFBAUcNByAFIAUoAhAQjyIMBwsgEEKAgYKEiJCgwIB/gyEPQQEhBQJAAkACQCAHDQAgD0IAUiEFIA96p0EDdiABaiADcSENIA9QDQELIA8gEEIBhoNCAFINAQsgASACQQhqIgJqIANxIQEgBSEHDAELCwJAIAwgDWosAABBAEgNACAMKQMAQoCBgoSIkKDAgH+DeqdBA3YhDQsgACgCDCIFIA1qIgEtAAAhAyAAKAIIIQYgASAOOgAAIAUgACgCECANQXhqcWpBCGogDjoAACAFIA1BAnRrQXxqIAY2AgAgACAAKAIYQQFqNgIYIAAgACgCFCADQQFxazYCFCAEKAIIIQMgBCkDACEPIAAoAggiBSAAKAIARw0EIAAoAhggACgCFGoiAUHVqtUqIAFB1arVKkkbIAVrIgVBAU0NAyAAIAUQ4R9BgYCAgHhHDQMMBAsACyAFIAZBnPWaARDAFAALIAUgAUGIlJsBEMAUAAsgAEEBELQoCwJAIAAoAggiBSAAKAIARw0AIAAQ9hsLIAAoAgQgBUEYbGoiASALNgIQIAEgAzYCCCABIA83AwAgACAFQQFqNgIICyAEQRBqJAAL0AwBA38CQAJAAkACQAJAA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACICQXRqIgNBByADQSZJGw4mHQABAgMEBQYHCAkKCwwdHQ0ODxARHRISEx0dFBUWFxcZGhsdHB0dCyAAKAIMIgNFDRwgACgCCCEAIANBBHQhAwNAAkAgACgCAEECRg0AIABBDGooAgAgARCjAgsgAEEQaiEAIANBcGoiAw0ADB0LCyAAKAIMIgNFDRsgACgCCCEAIANBDGwhAwNAAkACQCAAKAIAIgINACAAQQRqKAIAIAEQ2AgMAQsgAiABEKMCCyAAQQxqIQAgA0F0aiIDDQAMHAsLIAAoAiAgARDBCw8LIAAoAgQhAAwUCyAAKAIMIQAMEwsgACgCBCABEKMCIAAoAgghAAwSCwJAAkAgAkELRw0AIABBCGohAwJAAkAgACgCBA4DAAEDAAsgAyABENIWIAAoAjghAAwUCyADIAEQoBkgACgCOCEADBMLAkACQAJAAkACQAJAAkACQAJAAkAgAg4LAAECAwQFBgcICQoACyAAQQhqIAEQ2yUgACgCOCEADBsLIAAoAiggARCjAiAAKAIIQQJJDQggAEEMaiABEPorIAAoAjghAAwaCyAAKAIIQQFHDQcgACgCDCABEKMCIAAoAjghAAwZCyAAKAIEIAEQowIgACgCOCEADBgLAkAgACgCBCIEKAIAIgNBA0cNACAEKAIQIAEQowICQCAEQQxqKAIAIgNFDQAgA0EEdCECIARBCGooAgBBDGohAwNAIAMoAgAgARCjAiADQRBqIQMgAkFwaiICDQALCyAEKAIgIgNFDQYgAyABENEdIAAoAjghAAwYCyAEKAIgIAEQowIgA0ECSQ0FIARBBGogARD6KyAAKAI4IQAMFwsgAEEEaiABENwlIAAoAjghAAwWCyAAQQRqIAEQ3CUgACgCOCEADBULIAAoAgQgARCjAiAAKAI4IQAMFAsgAEEEaiABENwlIAAoAjghAAwTCyAAQQRqIAEQ9hkLIAAoAjghAAwRCyAAKAIoIAEQowIgACgCCEECSQ0VIABBDGogARD6Kw8LIAAoAghBAUcNFCAAQQxqIAEQ+isPCyAAKAIEIAEQowIgACgCCCABEKMCIAAoAgwhAAwOCwJAIAAtABhBBUcNACAAKAIQIAEQowILAkAgACgCDCIDRQ0AIANBBHQhAiAAKAIIQQxqIQMDQCADKAIAIAEQowIgA0EQaiEDIAJBcGoiAg0ACwsgACgCKCIARQ0SIAAgARDRHQ8LIAAoAhAgARCjAgJAIAAoAgRBgICAgHhGDQAgACgCDCIDRQ0AIANBBHQhAiAAKAIIQQxqIQMDQCADKAIAIAEQowIgA0EQaiEDIAJBcGoiAg0ACwsgACgCICIARQ0RIAAgARDRHQ8LIAAoAgwiA0UNECAAKAIIIQAgA0ECdCEDA0AgACgCACABEKMCIABBBGohACADQXxqIgMNAAwRCwsgACgCDCIDRQ0PIAAoAgghACADQQJ0IQMDQCAAKAIAIAEQowIgAEEEaiEAIANBfGoiAw0ADBALCyAAKAIEIAEQowICQCAAKAIYIgNFDQAgAyABENEdCyAAKAIIIgBBCGooAgAiA0UNDiAAQQRqKAIAIQAgA0ECdCEDA0AgACgCACABEKMCIABBBGohACADQXxqIgMNAAwPCwsCQCAAKAIMIgJFDQAgACgCCCEDIAJBKGwhAgNAIAMgARD9CiADQShqIQMgAkFYaiICDQALCwJAAkAgACgCECIDKAIAQYCAgIB4Rw0AIAMoAgQgARCjAgwBCyADIAEQlR4LAkAgACgCICIDRQ0AIAMgARDPFQsgACgCJCIARQ0NIAAoAgAgARCtAg8LIAAoAiAgARCXAw8LIAAoAgwiAA0GDAsLIAAoAgQhAAwFCyAALQA0QQJHDQkgAEEgahDTIw8LIAAoAgQgARDlBQ8LIABBBGogARDsCw8LIABBBGogARDcJQ8LIAAoAgQhAAwACwsgAEEEaiABENwlDwsgAEEEaiABEPYZDwsgAEEEaiABENwlDwsCQCAAKAIEIgAoAgBBA0cNACAAQQRqIAEQ0xYPCyAAIAEQ1iMLC4INAgZ/A34jAEGwFWsiBCQAIARB8AhqIAEQggcCQAJAIAQoAqQMIgFBgICAgHhHDQAgBEGwBWpBEGogBEHwCGpBEGopAwAiCjcDACAEIAQpA/gIIgs3A7gFIAQgBCkD8AgiDDcDsAUgAEEYaiAKNwMAIABBEGogCzcDACAAIAw3AwggAEEBNgIADAELAkBBtANFIgUNACAEQbAFaiAEQfAIakG0A/wKAAALAkBB6AJFDQAgBEGQD2pBuANqIARB8AhqQbgDakHoAvwKAAALAkAgBQ0AIARBkA9qIARBsAVqQbQD/AoAAAsgBCABNgLEEiAEQdASaiEGAkAgBCgC2BIiASAEKALQEkcNACAGQdyShAEQrhoLIAQoAtQSIAFBCWxqIgVCADcAACAFQQhqQQA6AAAgBCABQQFqNgLYEiAEQegSaiEHAkAgBCgC8BIiBSAEKALoEkcNACAHQeyShAEQrxoLIARBkA9qQbQDaiEBIAQoAuwSIAVBA3RqQgA3AgAgBCAFQQFqNgLwEiAEQdwSaiEIAkAgBCgC5BIiBSAEKALcEkcNACAIQfyShAEQsxoLIAQoAuASIAVBAnRqQQA2AgAgBCAFQQFqNgLkEiAEQfAIaiABQQAQrA0CQAJAAkAgBCgC8AgiBUEDRg0AIARBqAVqIARBgAlqKQMANwMAIAQgBCkD+Ag3A6AFDAELIARB8AhqIAFBABCsDQJAIAQoAvAIIgVBA0YNACAEQagFaiAEQYAJaikDADcDACAEIAQpA/gINwOgBQwBCyAEQfAIaiABQQAQrA0gBCgC9AghCQJAIAQoAvAIIgVBA0YNACAEQagFaiAEQYAJaikDADcDACAEIAQpA/gINwOgBQwCCyAEIAk2ApwVIARB8AhqIAFBABCsDSAEKAL0CCEJAkAgBCgC8AgiBUEDRg0AIARBqAVqIARBgAlqKQMANwMAIAQgBCkD+Ag3A6AFDAILIAQgCTYCoBUgBEHwCGogBEGQD2oQugwCQCAEKALwCCIFQQNGDQAgBEGoBWogBEGACWopAwA3AwAgBCAEKQP4CDcDoAUMAQsgBEHwCGogBEGQD2oQwBMCQCAEKALwCCIFQQNGDQAgBEGoBWogBEGACWopAwA3AwAgBCAEKQP4CDcDoAUMAQsgBEHwCGogBEGQD2ogAiADEIUDAkAgBCgC8AgiBUEDRg0AIARBqAVqIARBgAlqKQMANwMAIAQgBCkD+Ag3A6AFDAELIAEQwhcgBEHwCGogBEGQD2oQjRECQEGAAkUNACAEQYwTaiAEQfAIakGAAvwKAAALIARB8AhqIARBkA9qEJoJAkAgBCgC8AgiBUEDRg0AIARBqAVqIARBgAlqKQMANwMAIAQgBCkD+Ag3A6AFDAELIARBkA9qEIkSIARB8AhqIARBkA9qEO0GAkAgBCgC8AgiBUEDRg0AIARBqAVqIARBgAlqKQMANwMAIAQgBCkD+Ag3A6AFDAELIARB8AhqIARBkA9qEJwCAkAgBCgC8AgiBUEDRg0AIARBqAVqIARBgAlqKQMANwMAIAQgBCkD+Ag3A6AFDAELIARBkA9qELILIARBkA9qEN4CIARB8AhqIARBsA9qIgkQlwEgBEGAE2ohAQJAIAQoAoATIgVFDQAgBSAFKAIAIgNBf2o2AgAgA0EBRw0AIAEQihILIAEgBCkC8Ag3AgAgAUEIaiAEQfAIakEIaigCADYCACAEIARBkA9qQZAGQYgGIAQoAoATG2ooAgA2ApQVIAYQwxcgCBDEFyAHEMUXIARB9BJqEMYXIARBoAVqQQhqIgUgBEHYEmopAwA3AwAgBCAEKQPQEjcDoAUgBCkCxBIhCiAEKALMEiEDAkBByAJFIgENACAEQdgCaiAEQeASakHIAvwKAAALIAkQ7x0gBEHIAmpBCGoiCSAFKQMANwMAIAQgBCkDoAU3A8gCAkAgAQ0AIAQgBEHYAmpByAL8CgAACyAAIAM2AgwgACAKNwIEIAAgBCkDyAI3AhAgAEEYaiAJKQMANwIAAkAgAQ0AIABBIGogBEHIAvwKAAALIABBADYCAAwCCyAEKAL0CCEJCyAEQbAPahDvHSABEJ8VIARByAJqQQhqIARBoAVqQQhqKQMAIgo3AwAgBCAEKQOgBSILNwPIAiAAIAk2AgwgACAFNgIIIAAgCzcCECAAQRhqIAo3AgAgAEEBNgIACyAEQbAVaiQAC9AMAgh/BX4jAEGQAWsiACQAIABBKGpB+NaeARCbCyAAKAIsIQECQAJAIAAoAigiAkEBcUUNACABIQMgAiEEDAELIABBIGpBhNeeARCbCyAAKAIkIQMgACgCICEEIAIgARDxKAsCQAJAIARBAXFFDQAgAyECIAQhAQwBCyAAQRhqQezWngEQmwsgACgCHCECIAAoAhghASAEIAMQ8SgLAkACQCABQQFxRQ0AIAIhBCABIQMMAQsgAEEQakGQ154BEJsLIAAoAhQhBCAAKAIQIQMgASACEPEoCwJAAkAgA0EBcUUNACAEEBlBAUcNASAEEIgoCwJAQQApA7DnngEiCKcNAAJAAkBBAC0AmOeeAUUNAEEAKQOo554BIQlBACkDoOeeASEKDAELIABBMGoQwhlBAEEBOgCY554BQQAgACkDOCIJNwOo554BIAApAzAhCkEAKQOw554BIQgLIABBPGpBACkDgP2dATcCAEEAQgE3A7DnngFBACAJNwPY554BQQAgCjcD0OeeAUEAIApCAXw3A6DnngEgAEEAKQP4/J0BNwI0QQAoAsDnngEhBUEAIAApAjA3ArznngFBACgCxOeeASEGQQAgAEE4aikCADcCxOeeAUEAKALM554BIQNBACAAQcAAaigCADYCzOeeAUEAQQA2ArjnngEgCFANACAGRQ0AAkAgA0UNACAFQQhqIQQgBSkDAEJ/hUKAgYKEiJCgwIB/gyEIIAUhAUEBIQcDQCAHRQ0BAkADQCAIQgBSDQEgAUGAf2ohASAEKQMAQn+FQoCBgoSIkKDAgH+DIQggBEEIaiEEDAALCyABIAh6p0EBdEHwAXFrIgJBcGooAgAgAkF0aigCABCYKiAIQn98IAiDIQggA0F/aiIDIQcgAkF8aigCACICQYQBSQ0AIAIQDSADIQcMAAsLIABB8ABqQRAgBkEBahDAEiAAKAJ0IgRFDQAgBSAAKAJ4ayAEIAAoAnAQ0hULAkACQAJAQQAoArjnngEiBEH/////B08NAEEAIQZBACAEQQFqNgK4554BQQAoAsznngFFDQFBACkD0OeeASEIIABBMGpBGGoiBEEAKQPY554BIgpC88rRy6eM2bL0AIU3AwAgAEEwakEQaiIBIApC7d6R85bM3LfkAIU3AwAgAEEwakEIaiICIAhC4eSV89bs2bzsAIU3AwAgAEHoAGoiA0IANwMAIABCADcDYCAAIAo3A1ggACAINwNQIAAgCEL1ys2D16zbt/MAhTcDMCAAQTBqQcWSggFBCxDlCiAAQf8BOgBwIABBMGogAEHwAGpBARDlCiAAQfAAakEQaiIHIAEpAwA3AwAgAEHwAGpBCGoiASACKQMANwMAIABB8ABqQRhqIgIgAzUCAEI4hiAAKQNghCIIIAQpAwCFNwMAIAAgACkDMDcDcCAAQfAAahDEE0EAKALE554BIgMgAikDACIKIAEpAwBC/wGFfCIJIAcpAwAiC0INiSALIAApA3AgCIV8IgiFIgt8IgwgC0IRiYUiC0INiSAKQhCJIAmFIgogCEIgiXwiCCALfCIJhSILQhGJIApCFYkgCIUiCCAMQiCJfCIKIAt8IguFIgxCDYkgCEIQiSAKhSIIIAlCIIl8IgogDHyFIglCEYkgCEIViSAKhSIIIAtCIIl8IgogCXwiCUIgiIUgCEIQiSAKhUIViYUgCYUiCKdxIQEgCEIZiEL/AINCgYKEiJCgwIABfiEKQQAoAsDnngEhBANAIAQgAWopAAAiCSAKhSIIQn+FIAhC//379+/fv/9+fINCgIGChIiQoMCAf4MhCAJAAkADQCAIUA0BQcWSggFBCyAEIAh6p0EDdiABaiADcSIHQQR0ayICQXRqKAIAIAJBeGooAgAQtiMNAiAIQn98IAiDIQgMAAsLIAkgCUIBhoNCgIGChIiQoMCAf4NQRQ0DIAEgBkEIaiIGaiADcSEBDAELCyAEIAdBBHRrQXxqKAIAIQJBACEBDAILQdCAngEQjRkAC0HFkoIBIQFBCyECC0EAQQAoArjnngFBf2o2ArjnngFBgAEhBCAAQQhqIAEgAhAjIgFBgAEQjxogACgCDCECAkACQCAAKAIIQQFxDQAgAiEEDAELIAIQiCgLIAEQiCgLIABBkAFqJAAgBAv7CgISfwJ+IwBBgANrIgUkACABrSIXQv//////////P3wgF4AhGAJAAkAgAUGBIEkNACABEIgiIQYMAQsgASABQQF2ayIHQcAAIAdBwABJGyEGCyAAQXhqIQhBASEHQQAhCUEAIQoDQEEBIQtBACEMAkAgCSABTw0AIAVBKGogCSAAIAFBuImcARC6ICAFKAIoIQ0CQAJAIAUoAiwiDiAGSQ0AQQAhDwJAAkAgDkECSQ0AAkACQAJAIA0oAggiECANKAIAIhFHDQAgDSgCDCANKAIETw0BDAILIBAgEUkNAQsgDUEUaiEQQQIhEQNAIA4gEUYNAgJAAkAgEEF8aigCACISIBBBdGooAgAiE0cNACAQKAIAIBBBeGooAgBJDQUMAQsgEiATSQ0ECyAQQQhqIRAgEUEBaiERDAALCyANQRRqIRBBAiERA0BBASEPIA4gEUYNAQJAAkAgEEF8aigCACISIBBBdGooAgAiE0cNACAQKAIAIBBBeGooAgBPDQQMAQsgEiATTw0DCyAQQQhqIRAgEUEBaiERDAALCyAOIRELIBEgBkkNAAJAIA9FDQAgBUEgaiARIA0gDkGIiZwBEIYiQQAhEkEAIAUoAiQiE0EBdiINayEPIAUoAiAiECATQQN0akF4aiEOA0AgDyASRg0BIBJBf2ohEgJAIBNBAkkNACAQKQIAIRcgECAOKQIANwIAIA4gFzcCACAOQXhqIQ4gEEEIaiEQDAELCyASIA1B1KycARDAFAALIBFBAXRBAXIhCwwBCwJAIAQNACAOIAYgDiAGSRtBAXQhCwwBCyAFQRhqIA5BICAOQSBJGyIQIA0gDkH4iJwBEIYiIAUoAhggBSgCHCACIANBAEEAEMABIBBBAXRBAXIhCwsgC0EBdiAJaq0gCa0iF3wgGH4gCSAHQQF2a60gF3wgGH6FeachDAsgCCAJQQN0IhBqIRQgACAQaiEVA0ACQAJAAkACQAJAAkACQCAKQQJJDQAgBUG+AmogCkF/aiITai0AACAMTw0BCyAFQb4CaiAKaiAMOgAAIAVBNGogCkECdGogBzYCACAJIAFPDQEgCkEBaiEKIAtBAXYgCWohCSALIQcMBwsCQCAFQTRqIBNBAnRqKAIAIgpBAXYiECAHQQF2Ig5qIg8gA0sNACAKIAdyQQFxRQ0CCyAAIAkgD2tBA3RqIRICQCAKQQFxDQAgBUEQaiAQIBIgD0GYiZwBEIYiIAUoAhAgBSgCFCACIAMQzCMLAkAgB0EBcQ0AIAVBCGogECASIA9BqImcARC6ICAFKAIIIAUoAgwgAiADEMwjCyAKQQJJDQQgB0ECSQ0EIAMgDiAQIA4gEEkiChsiDkkNBCASIBBBA3RqIhAgEiAKGyEHAkAgDkEDdCIORQ0AIAIgByAO/AoAAAsgAiAOaiEOIAoNAiACIQoDQCAKIA5GDQQgECAVRg0EAkACQCAQKAIAIhEgCigCACISRg0AIBEgEkkhEQwBCyAQKAIEIAooAgRJIRELIAcgECAKIBEbKQIANwIAIAdBCGohByAQIBFBA3RqIRAgCiARQQFzQQN0aiEKDAALCwJAIAdBAXENACAAIAEgAiADEMwjCyAFQYADaiQADwsgD0EBdCEHIBMhCgwDCyAUIQoDQAJAAkAgDkF4aiIQKAIAIg0gB0F4aiIRKAIAIhZGDQAgDSAWSSEHDAELIA5BfGooAgAgB0F8aigCAEkhBwsgCiARIBAgBxspAgA3AgAgECAHQQN0aiEOAkAgESAHQQFzQQN0aiIHIBJGDQAgCkF4aiEKIA4gAkcNAQsLIAIhCgsgDiAKayIQRQ0AIAcgCiAQ/AoAAAsgD0EBdEEBciEHIBMhCgwACwsL/QoCEn8CfiMAQYADayIFJAAgAa0iF0L//////////z98IBeAIRcCQAJAIAFBgSBJDQAgARCIIiEGDAELIAEgAUEBdmsiB0HAACAHQcAASRshBgsgAEF+aiEIQQEhB0EAIQlBACEKA0BBASELQQAhDAJAIAkgAU8NACAFQShqIAkgACABQbiJnAEQvCAgBSgCKCENAkACQCAFKAIsIg4gBkkNAEEAIQ8CQAJAIA5BAkkNAAJAAkACQCANLQACIhAgDS0AACIRRw0AIA0tAAMgDS0AAU8NAQwCCyAQIBFJDQELQQIhESANQQJqIRADQCAOIBFGDQICQAJAIBBBAmoiEi0AACITIBAtAAAiFEcNACAQQQNqLQAAIBBBAWotAABJDQUMAQsgEyAUSQ0ECyARQQFqIREgEiEQDAALC0ECIREgDUECaiEQA0BBASEPIA4gEUYNAQJAAkAgEEECaiISLQAAIhMgEC0AACIURw0AQQEhDyAQQQNqLQAAIBBBAWotAABPDQQMAQsgEyAUTw0DCyARQQFqIREgEiEQDAALCyAOIRELIBEgBkkNAAJAIA9FDQAgBUEgaiARIA0gDkGIiZwBEKAiQQAhEkEAIAUoAiQiE0EBdiINayEUIAUoAiAiDiATQQF0akF+aiEQA0AgFCASRg0BIBJBf2ohEgJAIBNBAkkNACAOLwAAIQ8gDiAQLwAAOwAAIBAgDzsAACAQQX5qIRAgDkECaiEODAELCyASIA1B1KycARDAFAALIBFBAXRBAXIhCwwBCwJAIAQNACAOIAYgDiAGSRtBAXQhCwwBCyAFQRhqIA5BICAOQSBJGyIQIA0gDkH4iJwBEKAiIAUoAhggBSgCHCACIANBAEEAEL0BIBBBAXRBAXIhCwsgC0EBdiAJaq0gCa0iGHwgF34gCSAHQQF2a60gGHwgF36FeachDAsgCCAJQQF0Ig5qIRUgACAOaiEWA0ACQAJAAkACQAJAAkACQCAKQQJJDQAgBUG+AmogCkF/aiIPai0AACAMTw0BCyAFQb4CaiAKaiAMOgAAIAVBNGogCkECdGogBzYCACAJIAFPDQEgCkEBaiEKIAtBAXYgCWohCSALIQcMBwsCQCAFQTRqIA9BAnRqKAIAIgpBAXYiDiAHQQF2IhBqIhMgA0sNACAKIAdyQQFxRQ0CCyAAIAkgE2tBAXRqIRICQCAKQQFxDQAgBUEQaiAOIBIgE0GYiZwBEKAiIAUoAhAgBSgCFCACIAMQzSMLAkAgB0EBcQ0AIAVBCGogDiASIBNBqImcARC8ICAFKAIIIAUoAgwgAiADEM0jCyAKQQJJDQQgB0ECSQ0EIAMgECAOIBAgDkkiChsiEEkNBCASIA5BAXRqIg4gEiAKGyEHAkAgEEEBdCIQRQ0AIAIgByAQ/AoAAAsgAiAQaiEQIAoNAiACIQoDQCAKIBBGDQQgDiAWRg0EAkACQCAOLQAAIhEgCi0AACISRg0AIBEgEkkhEQwBCyAOLQABIAotAAFJIRELIAcgDiAKIBEbLwAAOwAAIAdBAmohByAOIBFBAXRqIQ4gCiARQQFzQQF0aiEKDAALCwJAIAdBAXENACAAIAEgAiADEM0jCyAFQYADaiQADwsgE0EBdCEHIA8hCgwDCyAVIQoDQAJAAkAgEEF+aiIOLQAAIhQgB0F+aiIRLQAAIg1GDQAgFCANSSEHDAELIBBBf2otAAAgB0F/ai0AAEkhBwsgCiARIA4gBxsvAAA7AAAgDiAHQQF0aiEQAkAgESAHQQFzQQF0aiIHIBJGDQAgCkF+aiEKIBAgAkcNAQsLIAIhCgsgECAKayIORQ0AIAcgCiAO/AoAAAsgE0EBdEEBciEHIA8hCgwACwsLqwsCG38DfiMAQdABayICJAAgASgCBCEDIAJBMGogASgCCCIEQQhB2AAQ9w4gAigCNCEFAkACQCACKAIwQQFGDQAgAigCOCEGAkAgBUUNACAEQdgAbCEHIAJBCGpBEGohCCACQQhqQQhqIQkgAkEIakEEciEKQQAhCyAFIQwDQCAHIAtGDQECQAJAIAMgC2oiASgCACINQQVHDQAgAUEMaigCACEOIAFBCGooAgAhDyABQQRqKAIAIQEQtSUhDSACQTBqIAEQQiANQThqIAJBMGpBOGopAwA3AwAgDUEwaiACQTBqQTBqKQMANwMAIA1BKGogAkEwakEoaikDADcDACANQSBqIAJBMGpBIGopAwA3AwAgDUEYaiACQTBqQRhqKQMANwMAIA1BEGogAkEwakEQaikDADcDACANQQhqIAJBMGpBCGopAwA3AwAgDSACKQMwNwMAQQUhEAwBCyABQSxqKAIAIREgAUEoaigCACESAkACQCABQTBqKQMAIh1QDQAgAUE8aigCACETIAFBOGooAgAhDyABQdQAaigCACEUIAFB0ABqKAIAIRUCQCAdQgODQgBSDQAgHaciECAQKAIAIhBBAWo2AgAgEEF/TA0HCyABQcwAaigCACEWIAFByABqKAIAIRcgAUHAAGopAwAiHqchDgJAIB5CA4NCAFINACAOIA4oAgAiEEEBajYCACAQQX9MDQcLIB5CIIinIRgMAQsgAUHEAGooAgAhGCABQcAAaigCACEOIAFBOGopAwAiHachDwJAIB1CA4NCAFINACAPIA8oAgAiEEEBajYCACAQQX9MDQYLIB1CIIinIRNCACEdC0EEIRACQCANQQRGDQACQAJAAkACQAJAIAEoAgAiEA4EAAECAwALIAkgAUEIahDwAwwDCyABQQhqKAIAIRkgAUEUaigCACEaIAFBEGooAgAhGwJAAkAgAUEEaigCACINQQFHDQAQtSUhASACQTBqIBkQQiABQThqIAJBMGpBOGopAwA3AwAgAUEwaiACQTBqQTBqKQMANwMAIAFBKGogAkEwakEoaikDADcDACABQSBqIAJBMGpBIGopAwA3AwAgAUEYaiACQTBqQRhqKQMANwMAIAFBEGogAkEwakEQaikD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AykCBCEKIAMoAgAhCRC4JSEDIAJBIGogCRBzAkBB4ABFDQAgAyACQSBqQeAA/AoAAAsgASAKNwIEIAEgAzYCAAsgACABNgIYIAAgBDYCFCAAIAU2AhAgACAHNgIMIAAgCDYCCCAAIAY2AgQgAEECNgIADAQLIAEoAhQhAyABKAIQIQQgAkEUaiABQQRqEOACIAEtABwhBQJAAkAgASgCGCIGDQBBACEBDAELELclIQEgBikCBCEKIAYoAgAhBxC4JSEGIAJBIGogBxBzAkBB4ABFDQAgBiACQSBqQeAA/AoAAAsgASAKNwIEIAEgBjYCAAsgACACKQIUNwIEIAAgBToAHCAAIAE2AhggACADNgIUIAAgBDYCECAAQQM2AgAgAEEMaiACQRxqKAIANgIADAMLIAEpAgwhChC2JSEGIAJBIGogASgCBBC6AiAGQSBqIAJBIGpBIGoiAykDADcDACAGQRhqIAJBIGpBGGoiBCkDADcDACAGQRBqIAJBIGpBEGoiBSkDADcDACAGQQhqIAJBIGpBCGoiBykDADcDACAGIAIpAyA3AwAgASgCCCEIELUlIQEgAkEgaiAIEEIgAUE4aiACQSBqQThqKQMANwMAIAFBMGogAkEgakEwaikDADcDACABQShqIAJBIGpBKGopAwA3AwAgAUEgaiADKQMANwMAIAFBGGogBCkDADcDACABQRBqIAUpAwA3AwAgAUEIaiAHKQMANwMAIAEgAikDIDcDACAAIAo3AgwgACABNgIIIAAgBjYCBCAAQQQ2AgAMAgsgACABKQMANwMAIABBIGogAUEgaikDADcDACAAQRhqIAFBGGopAwA3AwAgAEEQaiABQRBqKQMANwMAIABBCGogAUEIaikDADcDAAwBCyABKAIEIQYQtSUhASACQSBqIAYQQiABQThqIAJBIGpBOGopAwA3AwAgAUEwaiACQSBqQTBqKQMANwMAIAFBKGogAkEgakEoaikDADcDACABQSBqIAJBIGpBIGopAwA3AwAgAUEYaiACQSBqQRhqKQMANwMAIAFBEGogAkEgakEQaikDADcDACABQQhqIAJBIGpBCGopAwA3AwAgASACKQMgNwMAIABBBjYCACAAIAE2AgQLIAJBgAFqJAAPCwAL3wwCDH8BfiMAQfACayIDJAAgAyACNgIUAkACQAJAIAEtANgBIgJBPkYNACACQRJHDQELIAEtAJEBQSBxRQ0AIAEoAogBIQIgA0EYaiABEJUCIAEgASgCiAFBAXIQ4xEgA0EIaiABQQBBABDJDyADKAIMIQQCQAJAIAMoAghBAXFFDQAgA0GBgICAeDYCmAEgAyAENgKcAQwBCwJAAkACQAJAAkACQAJAAkACQCABLQDYAUUNACABKALUASECIAEoAtABIQUgA0GsAWogARCXJCADQQE2ArQCIANBvLecATYCsAIgA0IBNwK8AiADQY8FNgK8ASADQQA6AOgBIAMgA0G4AWo2ArgCIAMgA0HgAWo2ArgBIAMgA0HoAWo2AuABIANB8AFqIANBsAJqELQZIANBhAJqIANBtAFqKAIANgIAIAMgAykCrAE3AvwBIAUgAiADQfABahCXGSECIAEtANgBQaIBRg0BDAcLIAEQlAsgA0GwAmogARDDAiADKAK0AiEGIAMoArACIgdBgICAgHhGDQUgAkEBcSEIIAMoArgCQQZ0IQkgB0EGdCEKIANB4AJqIQtBACEFQQAhAgJAA0AgBiAFaiEMIAkgAkYNASAGIAJqIQ0CQEHAAEUiDg0AIANB8AFqIA1BwAD8CgAACwJAIA4NACADQbACaiANQcAA/AoAAAsgCxDKJQJAQShFDQAgDCADQfABakEo/AoAAAsgBUEoaiEFIAJBwABqIQIMAAsLIANBCDYCsAIgA0EANgK4AkEAQQgQyiogA0EINgK8AiADQQg2ArQCIApBKG4hBSAGIQICQCAHRQ0AIAYhAiAKIAVBKGwiDUYNACAGIAogDRD8ISICRQ0CCyADIAI2ArwBIAMgBTYCuAEgAyAMIAZrQShuNgLAASADQbACahCtHAJAAkACQAJAIAEtANgBQQFGDQAgASgC1AEhAiABKALQASEFIANBxAFqIAEQlyQgA0EBNgK0AiADQby3nAE2ArACIANCATcCvAIgA0GPBTYC5AEgA0EBOgDQASADIANB4AFqNgK4AiADIANB6AFqNgLgASADIANB0AFqNgLoASADQfABaiADQbACahC0GSADQYQCaiADQcwBaigCADYCACADIAMpAsQBNwL8ASAFIAIgA0HwAWoQlxkhAiABLQDYAUGiAUYNAQwHCyABEJQLQQAhAiABLQDYASIFQQlHDQIgA0EJOgCwAiADIAEgA0GwAmoQlREgAygCBCECIAMoAgBBAXFFDQEgA0GBgICAeDYCmAEgAyACNgKcAQwHCyABIAEQwCkQpxYMBQsgAS0A2AEhBQsgAyACNgLQAQJAIAVB/wFxQRtGDQAgASgC1AEhAiABKALQASEFIANB1AFqIAEQlyQgA0EBNgK0AiADQby3nAE2ArACIANCATcCvAIgA0GPBTYC5AEgA0EbOgDvASADIANB4AFqNgK4AiADIANB6AFqNgLgASADIANB7wFqNgLoASADQfABaiADQbACahC0GSADQYQCaiADQdwBaigCADYCACADIAMpAtQBNwL8ASAFIAIgA0HwAWoQlxkhAiABLQDYAUGiAUcNAyABIAEQwCkQpxYMAwsgARCUCyADQZgBakEIaiADQbgBakEIaigCADYCACADIAI2AqgBIAMgBDYCpAEgAyADKQK4ASIPNwOYAQJAAkAgD6ciBUGAgICAeGoOAgAKAQsgASADQRhqEOIFDAoLIAMpApwBIQ8gASABKAKIAUF+cSAIchDjESADQRhqENsjIAMgAjYCxAIgAyAENgLAAiADIA83ArQCIAMgBTYCsAIgASgCiAEhAiADIANBFGo2ArwCAkAgAkGAAXENACABIAJBgAFyNgKIASAAIANBsAJqIAEQnRIgASABKAKIAUH/fnE2AogBDAsLIAAgA0GwAmogARCdEgwKCyABIAEQwCkQpxYMBQsACyADQYGAgIB4NgKYASADIAI2ApwBIANB0AFqEL8oDAELIANBgYCAgHg2ApgBIAMgAjYCnAELIANBuAFqEOclDAILIAMgBjYCnAEgA0GBgICAeDYCmAEMAQsgA0GBgICAeDYCmAEgAyACNgKcAQsgBBDCKQsgASADQRhqEOIFIANBmAFqQQRyEOAHCyAAQYCAgIB4NgIACyADQfACaiQAC4cLAh1/BX4jAEHAAGsiASQAEL8lIQIgACgCACIAKAIUIQMgACgCECEEIAAtAFIhBSAALQBRIQYgAC0AUCEHIAAoAkwhCCAAKAJIIQkCQAJAAkAgACgCAEEBRw0AAkAgACkDCCIeQgODQgBSDQAgHqciCiAKKAIAIgpBAWo2AgAgCkF/TA0DC0IBIR8gACkDGCIgUA0BICBCA4NQRQ0BICCnIgogCigCACIKQQFqNgIAIApBf0oNAQwCC0IAIR8gADUCGCEgAkAgACkD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BkEBIQECQCAEKAIQIg5BgICAgHhHDQAgBiECDAELIAMQlAsgAygCzAEhAUEUQQQQxyciAiABNgIQIAIgBTYCDCACIAw2AgggAiAGNgIEIAIgDjYCAEEAIQELIAAgAjYCBCAAIAE2AgAgBEHwAGokAAu0DAEKfyMAQZACayICJAAgASgC0AEhAyABEJQLAkACQAJAAkACQAJAAkACQAJAAkACQCABLQDYAUUNACABKALUASEEIAEoAtABIQUgAkEkaiABEJckIAJBATYC5AEgAkG8t5wBNgLgASACQgE3AuwBIAJBjwU2AoABIAJBADoAMCACIAJB/ABqNgLoASACIAJBxABqNgJ8IAIgAkEwajYCRCACQcgAaiACQeABahC0GSACQdwAaiACQSxqKAIANgIAIAIgAikCJDcCVCAFIAQgAkHIAGoQlxkhBCABLQDYAUGiAUYNAQwJCyABKALMASEFIAEoAsgBIQYgARCUCwJAAkAgASgCiAEiBEGAgIAgcUUNACABIARB////X3E2AogBIAJBGGogARCREyACKAIYIQQgASABKAKIAUGAgIAgcjYCiAEgAigCHCEHDAELIAJBEGogARCREyACKAIUIQcgAigCECEECwJAIARBAXFFDQAgBygCBCEBIAcoAgAhBEEEQQQQ3iciCCAHNgIAIAIgBTYC9AEgAiAGNgLwASACIAg2AuQBIAJBMDYC7AEgAkHs6psBNgLoASACQbiBgIB4NgLgASAEIAEgAkHgAWoQlxkhASAAQQA2AgAgACABNgIEDAoLIAIgBzYCMAJAIAEtANgBQQFGDQAgASgC1AEhBCABKALQASEFIAJBNGogARCXJCACQQE2AuQBIAJBvLecATYC4AEgAkIBNwLsASACQY8FNgKAASACQQE6AEMgAiACQfwAajYC6AEgAiACQcQAajYCfCACIAJBwwBqNgJEIAJByABqIAJB4AFqELQZIAJB3ABqIAJBPGooAgA2AgAgAiACKQI0NwJUIAUgBCACQcgAahCXGSEEIAEtANgBQaIBRg0CDAcLIAEQlAsgAkHgAWogAUGAgICgAhDVHSACQQhqIAJB4AFqEKwfIAIoAgwhCSACKAIIQQFxDQUgAiAJNgJEIAEtAIsBQQRxDQMgAkEANgJ8IAJB/ABqQQhqIQogAkHgAWpBCGohBgNAAkAgAS0A2AEiBEHXAEYNAEETIQYMBAsgARCUCwJAAkACQCABLQDYAUHeAEYNACACQeABaiABQYCAgKACENUdIAIoAuQBIQUgAigC4AEiBkETRg0BQShFDQYgAkGQAWogAkHoAWpBKPwKAAAMBgsCQAJAIAEoAogBIgRBgICAIHENACABIARBgICAIHI2AogBIAJB4AFqIAEQvgIgASABKAKIAUH///9fcTYCiAEMAQsgAkHgAWogARC+AgsgAigC5AEhBSACKALgASIIDQELIABBADYCACAAIAU2AgQgAkH8AGoQ0yggAkHEAGoQtwUMCQsgAkG4AWpBCGoiCyAGQQhqKAIANgIAIAIgBikCADcDuAECQCACKAJ8RQ0AQTBBCBDeJyIEIAU2AgggBCAINgIEIARBCDYCACAEIAIpA7gBNwIMIARBFGogCygCADYCACABKALMASACQfwAaiAEENsdDAELIAJB/ABqENMoIAogAikDuAE3AgAgCkEIaiALKAIANgIAIAIgBTYCgAEgAiAINgJ8DAALCyABIAEQwCkQpxYMBwsgASABEMApEKcWDAQLAkACQCACKAJ8RQ0AIAJByAFqQRBqIgggAkH8AGpBEGooAgA2AgAgAkHIAWpBCGoiCyACQfwAakEIaikCADcDACACIAIpAnw3A8gBAkAgBEHXAEcNAEEwQQgQ3iciBCAFNgIEIAQgBjYCAAJAQShFDQAgBEEIaiACQZABakEo/AoAAAsgASgCzAEgAkHIAWogBBDbHQsgAkHcAGogCCgCADYCACACQQg2AkggAkHUAGogCykDADcCACACIAIpA8gBNwJMDAELIAIgBTYCTCACIAY2AkgCQEEoRQ0AIAJB0ABqIAJBkAFqQSj8CgAACyAGQRNGDQELIAJByABqEKAkIQQMAQtBACEECyAAIAQ2AhAgACADNgIIIAAgCTYCBCAAIAc2AgAgACABKALMATYCDAwECyAAQQA2AgAgACAJNgIEDAELIABBADYCACAAIAQ2AgQLIAJBMGoQ0CkMAQsgAEEANgIAIAAgBDYCBAsgAkGQAmokAAusCwIQfwJ+IwBB0AFrIgQkACAEQeAAaiADENkiIAQoAmQhBQJAAkAgBCgCYCIGQSpGDQACQEE4RQ0AIABBCGogBEHgAGpBCGpBOPwKAAALIAAgBTYCBCAAIAY2AgAMAQsgBEEANgIUIARCgICAgMAANwIMAkACQAJAIAJFDQAgBEEYaiABEN4MIARBGGpBGGohB0EEIQggBEEYakEEaiEJIAWtIRQgBEEYakEMaiEKIARBoAFqQRBqIQtBACEMA0ACQAJAAkACQAJAAkACQCAEKAJIIgYgBCgCTEYNACAEIAZBCGo2AkgCQCAGKAIAIg0gAk8NACAGMQAEIRUgBCgCJCEOIAQoAiwhDwJAIAEgDUEYbGooAghFDQACQCAPIA5HDQAgCkH084MBEMcaCyAEKAIoIA9BA3RqIBVCKIYgFUIghoQ3AgAgBCAPQQFqNgIsAkAgDCAEKAIMRw0AIARBDGoQxhogBCgCECEICwJAQThFDQAgCCAMQThsaiAEQRhqQTj8CgAACyAEIAxBAWoiDDYCFCAGKAIAIgYgAk8NAyAEQRhqIAEgBkEYbGoQ3gwMCQsCQCAPIA5HDQAgCkGk9IMBEMcaCyAEKAIoIA9BA3RqIBVCIIYgFIQgFUIohoQ3AgAgBCAPQQFqNgIsDAgLIA0gAkHk84MBEMAUAAsgBCgCLA4CBQIBCyAGIAJBlPSDARDAFAALIARB0ABqQQhqIApBCGooAgA2AgAgBCAKKQIANwNQIARBADYCLCAEQoCAgIDAADcCJCAEQeAAaiADIARB0ABqEPkcIAQoAmQhDyAEKAJgIgZBKkYNAkE4RQ0BIABBCGogBEHgAGpBCGpBOPwKAAAMAQsgBEEANgIsIARB4ABqIAMgBCgCKCkCABDJISAEKAJkIQ8gBCgCYCIGQSpGDQFBOEUNACAAQQhqIARB4ABqQQhqQTj8CgAACyAAIA82AgQgACAGNgIAIAQoAhggBCgCHBChKgwFCwJAIAQoAiAiBiAEKAIYRw0AIARBGGpBtPSDARDEGgsgBCgCHCAGQQJ0aiAPNgIAIAQgBkEBajYCIAsgBCAHEN4QAkAgBCgCACIGRQ0AIAQoAgQhDQJAIAQoAiAiDyAEKAIYRw0AIARBGGpBxPSDARDEGgsgBCgCHCAPQQJ0aiAFNgIAIAQgD0EBajYCICAEIAY2AkggBCAGIA1BA3RqNgJMDAELIARB4ABqIAMgBEEYahD6HCAEKAJkIQ4CQCAEKAJgIgZBKkYNAAJAQThFDQAgAEEIaiAEQeAAakEIakE4/AoAAAsgACAONgIEIAAgBjYCAAwECwJAIAwNAEEAIQwMAwsgBCAMQX9qIgw2AhQgCCAMQThsaiIGKAIAIhBBgICAgHhGDQIgBigCFCEPIAYoAhAhDSAEQcABakEIaiIRIAZBDGooAgA2AgAgBikCBCEVIAsgBkEoaikCADcDACAEQaABakEYaiISIAZBMGopAgA3AwAgBEGgAWpBCGoiEyAGQSBqKQIANwMAIAQgFTcDwAEgBCAGKQIYNwOgAQJAIA9FDQAgDSAPQQN0akF4aiIGRQ0AIAYgDjYCACAEKAIkIAQoAigQpiogCSAEKQPAATcCACAJQQhqIBEoAgA2AgAgByAEKQOgATcCACAHQQhqIBMpAwA3AgAgB0EQaiALKQMANwIAIAdBGGogEikDADcCACAEIBA2AhggBCAPNgIsIAQgDTYCKAwBCwtB1PSDARD4KQALQQBBAEHU84MBEMAUAAsgACAFNgIIIAAgDjYCBCAAQSo2AgALIAQoAiQgBCgCKBCmKgJAIAxFDQAgCCEGA0AgBigCACAGQQRqKAIAEKEqIAZBDGooAgAgBkEQaigCABCmKiAGQThqIQYgDEF/aiIMDQALCyAEKAIMIAhBBEE4ELgVCyAEQdABaiQAC8MLAgh/AX4CQAJAAkACQAJAAkACQAJAAkACQCAAKAIADggBAgMEBQYHCAALIAApAxAiCUIDg0IAUg0IIAmnIgAgACgCACIBQX9qNgIAIAFBAUcNCCAAIAAoAhAQjyIPCyAAKAIIIgEgACgCDBDnCCAAKAIEIAEQwiogACgCECIBEIgTIAFBGEEIENIVIAAoAhwiAkUNByACQQRqKAIAIQACQCACKAIIIgNFDQADQAJAAkAgACgCACIBRQ0AIAEQkQEgAUHAAEEIENIVDAELIABBBGooAgAiARDIBCABQfAAQQgQ0hULIABBDGohACADQX9qIgMNAAsgAkEEaigCACEACyACKAIAIAAQwyogAkEUQQQQ0hUPCyAAQQhqELQCDwsgACgCCCIBIAAoAgwQ8AcgACgCBCABEMQqAkAgACgCGCIBRQ0AIAEQiBMgAUEYQQgQ0hULIAAoAhwiAkUNBSACQQRqKAIAIQACQCACKAIIIgNFDQADQAJAAkAgACgCACIBRQ0AIAEQkQEgAUHAAEEIENIVDAELIABBBGooAgAiARDIBCABQfAAQQgQ0hULIABBDGohACADQX9qIgMNAAsgAkEEaigCACEACyACKAIAIAAQwyogAkEUQQQQ0hUPCwJAAkACQCAAKAIIDgIBAgALIAAoAgwiABD/ByAAQcgAQQgQ0hUPCwJAIAAtACRBAkYNACAAKQMQIglCA4NCAFINACAJpyIBIAEoAgAiA0F/ajYCACADQQFHDQAgASABKAIQEI8iCyAAKAIoIgRBBGooAgAhAAJAIAQoAggiAUUNAANAIAAoAgAiAxCRASADQcAAQQgQ0hUgAEEMaiEAIAFBf2oiAQ0ACyAEQQRqKAIAIQALIAQoAgAgABDDKiAEQRBqKAIAIQACQCAEKAIUIgFFDQADQCAAELsDIABB2ABqIQAgAUF/aiIBDQALIARBEGooAgAhAAsgBCgCDCAAEMUqAkAgBCgCMCIARQ0AIAAQkQEgAEHAAEEIENIVCwJAIAQoAjQiAEUNACAAEJYOIABBFEEEENIVCwJAIAQoAjgiAkUNACACQQRqKAIAIQACQCACKAIIIgFFDQADQCAAKAIAIgMQhwIgA0HgAEEIENIVIABBBGohACABQX9qIgENAAsgAkEEaigCACEACyACKAIAIAAQxiogAkEUQQQQ0hULIARBHGooAgAhBQJAIAQoAiAiBkUNAEEAIQcDQCAFIAdBBHRqIgAoAgAiARCRASABQcAAQQgQ0hUCQCAAKAIMIgJFDQAgAkEEaiIIKAIAIQACQCACKAIIIgFFDQADQCAAKAIAIgMQhwIgA0HgAEEIENIVIABBBGohACABQX9qIgENAAsgCCgCACEACyACKAIAIAAQxiogAkEUQQQQ0hULIAdBAWoiByAGRw0ACyAEQRxqKAIAIQULIAQoAhggBRDHKiAEQcAAQQQQ0hUPCwJAIAAtACRBAkYNACAAKQMQIglCA4NCAFINACAJpyIBIAEoAgAiA0F/ajYCACADQQFHDQAgASABKAIQEI8iCyAAQShqEMMGDwsgACgCBCIAEJEBIABBwABBCBDSFQ8LIAAoAgQiARCIEyABQRhBCBDSFSAAKAIQIgJFDQIgAkEEaigCACEAAkAgAigCCCIDRQ0AA0ACQAJAIAAoAgAiAUUNACABEJEBIAFBwABBCBDSFQwBCyAAQQRqKAIAIgEQyAQgAUHwAEEIENIVCyAAQQxqIQAgA0F/aiIDDQALIAJBBGooAgAhAAsgAigCACAAEMMqIAJBFEEEENIVDwsCQCAAKAIEIgApAygiCUIDg0IAUg0AIAmnIgEgASgCACIDQX9qNgIAIANBAUcNACABIAEoAhAQjyILAkACQCAAKQMAQgBSDQAgAEEIahC9EAwBCyAAEIgTCyAAQcgAQQgQ0hUPCyAAKAIEIgAQkQEgAEHAAEEIENIVCwvhCwEFfyMAQSBrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIDQXRqIgRBByAEQSZJGw4mHwABAgMEBQYHCAkKCwwfHw0ODxARHxITFB8fFRYXGBkaGxwfHR8fCyAAKAIMQQR0IQQgACgCCCEAA0AgBEUNHwJAIAAoAgBBAkYNACAAQQxqIAEQmCwLIABBEGohACAEQXBqIQQMAAsLIABBBGogARC3BgwdCyAAQQhqIAEQmSwMHAsgAEEEaiABEJgsDBsLIABBDGogARCYLAwaCyAAQQRqIAEQmCwgAEEIaiABEJgsDBkLIABBOGohBAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADDgwBAgMEBQYHCAkKCwABCyAAQQhqIQMCQAJAIAAoAgQOAwABDAALIAEgAxDVEAwLCyABIAMQ2gwMCgsgAEEIaiABEPYUDAkLIABBCGogARCFIwwICyAAQQhqIAEQiiUMBwsgAEEEaiABEJgsDAYLIABBBGogARCkHgwFCyABIABBBGoQ5BEMBAsgASAAQQRqEOQRDAMLIAEgAEEEahDiIAwCCyABIABBBGoQtQ4MAQsgASAAQQRqELkZCyAEIAEQmCwMGAsgAEEIaiABEIUjDBcLIABBCGogARCKJQwWCyAAQQRqIAEQmCwgAEEIaiABEJgsIABBDGogARCYLAwVCyAAQQRqIQQCQCAALQAYQQVHDQAgAEEQaiABEJgsCyAEIAEQ1x0gACgCKCABEOMjDBQLIABBEGogARCYLAJAIAAoAgRBgICAgHhGDQAgAEEEaiABENcdCyAAKAIgIAEQ4yMMEwsgAEEEaiABENweDBILIABBBGogARDcHgwRCyAAQQRqIAEQmCwgACgCGCABEOMjIAAoAgggARDcHgwQCyAAKAIgIgRFDQ4gASAEKAIMIAQoAhAQ2B0gAC0AKEUNDiACQQhqIAEoAiggASgCLCAEKAIMIAQoAhAQtxsgAiACKAIIIgMgAigCDGo2AhwgAiADNgIYIAJBGGoQshVFDQ4gASgCHCABKAIgIAQoAhAQ0CchAyAEKAIMIQQgASADKAIAQSAQ5hwgASAEQSgQ5hwMDgsgAEEIaiABEJosDA4LIAAoAgwiBEUNDSAAQQxqIAEQmCwgBCgCAEEeRw0NIAQtACgNDSABIARBIGooAgAQ+A8MDQsgAEEEaiABEJgsDAwLIABBBGogARCYLAwLCyAAQSBqEJwkDAoLIAAoAgQgARDZDQwJCyAAQQRqIAEQtxMMCAsgASAAQQRqELUODAcLIAJBEGogACgCBBDEAyABIAIoAhQiBCAAKAIMIgMgBCADSRsgBCADIAQgA0sbENgdIABBBGogARCYLAwGCyABIABBBGoQ4iAMBQsgASAAQQRqEOQRDAQLIAEgAEEEahC5GQwDCyABIABBBGoQ5BEMAgsgAEEEaiABEKQeDAELAkAgACgCJCIERQ0AIAEgBCgCBCAEKAIIENgdIAEoAhwiAyABKAIgIgUgBCgCBEF/ahDRJyEGIAMgBSAEKAIIENAnIQUgAiABKAIoIAEoAiwgBigCACIDIAUoAgAiBSADIAVJGyADIAUgAyAFSxsQtxsgAiACKAIAIgMgAigCBGo2AhwgAiADNgIYIAJBGGoQshVFDQAgASAGKAIAIAYoAgQQ2B0gBCgCCEF+aiEEAkADQCAEIAEoAiwiA08NASAEQQFqIQMCQCABKAIoIARqLAAAQb9/Sg0AIAEgA0EgEOYcIARBf2ohBAwBCwsgASADQSkQ5hwMAQsgBCADQbCanAEQwBQACyAAKAIMQShsIQQgACgCCCEDAkADQCAERQ0BIAMgARC5FCAEQVhqIQQgA0EoaiEDDAALCwJAIAAoAhAiACgCAEGAgICAeEcNACAAQQRqIAEQmCwMAQsgACABEN0eCyACQSBqJAALtwsCEH8BfiMAQeAAayIEJAACQAJAAkAgAigCAEGAgICAeEYNACADKAIAQYCAgIB4Rw0BCyABKAIMIQUMAQtBfyACKAIIrSADNQIIfiIUpyAUQiCIpxsgASgCDCIFTQ0AIAMQsyoLIAEtABAhBgJAAkAgAygCAEGAgICAeEYNACACIQcgAigCAEGAgICAeEcNASADKAIIIQhBACEHIANBADYCCCAEQQA2AiggBCADNgIgIAQgCDYCJCAEIAMoAgQiCTYCGCAEIAkgCEEEdGo2AhwgBEEYahC7DgwBCyAEIAIQ7RECQAJAAkAgBCgCAEEBcUUNACAEKAIERQ0BCyACEKMcDAELIAIQgCcgAkGAgICAeDYCAAtBACEHCwJAAkAgBkEBcUUNACAHRQ0BIARBGGpBfyAHQQhqIgg1AgAgAzUCCH4iFKcgFEIgiKcbQbDWhAEQ9h0gBEEIakEIaiAIKAIAIgk2AgAgBykCACEUIAcgBCkCGDcCACAIIARBGGpBCGooAgA2AgAgBCAUNwMIIAMoAgghCiADQQA2AgggBEEANgIoIAQgAzYCICAEIAo2AiQgBCADKAIEIgggCkEEdGoiCzYCHCAJQQR0IQwgBCgCDEEMaiENQQAhDgNAAkACQCAIIAtGDQAgCEEQaiEPIAgoAgAiEEGAgICAeEcNASAOIQogDyELCyAEIAo2AiwgBCALNgIYIARBGGoQuw4gAhCBJyAEQQhqELAlDAMLIAgoAgghESAIKAIEIRIgCC0ADEEBcSEDIAwhCSANIQgCQANAIAlFDQECQAJAIAgtAAANACAODQEgBEEwaiAIQXhqKAIAIAhBfGooAgAQixcgBCAILQAAOgA8IAcgBEEwakHA1oQBEOYZDAELIARBwABqIAhBfGoiEygCACARakHQ1oQBEPcdIARBAToATCAEQcAAaiASIBEQsSUgBEHAAGogCEF4aigCACATKAIAELElAkAgAw0AIARBADoATAsgByAEQcAAakHg1oQBEOYZCyAJQXBqIQkgCEEQaiEIDAALCyAQIBIQrSogDkEBaiEOIA8hCAwACwsgB0UNACAEQRhqQX8gB0EIaiIINQIAIAM1Agh+IhSnIBRCIIinG0Hw1YQBEPYdIAcoAgAhDSAHKAIEIQwgByAEKQIYNwIAIAgoAgAhCSAIIARBGGpBCGooAgA2AgAgDCAJQQR0aiEQIARBGGpBDWohCyAMIQgCQANAAkAgCCAQRw0AIBAhEgwCCyAIQRBqIRIgCCgCACIPQYCAgIB4Rg0BIAgoAgghESAIKAIEIQ4CQCAILQAMIglBAXENACALIAhBDWoiCC8AADsAACALQQJqIAhBAmotAAA6AAAgBCAJOgAkIAQgETYCICAEIA42AhwgBCAPNgIYIAcgBEEYakGA1oQBEOYZIBIhCAwBCyADKAIIQQR0IQkgAygCBCEIAkADQCAJRQ0BIARB0ABqIAhBCGoiEygCACARakGQ1oQBEPcdIARBAToAXCAEQdAAaiAOIBEQsSUgBEHQAGogCEEEaigCACATKAIAELElAkAgCC0ADA0AIARBADoAXAsgCEEQaiEIIAcgBEHQAGpBoNaEARDmGSAJQXBqIQkMAAsLIA8gDhCtKiASIQgMAAsLIBAgEmtBBHYhCAJAA0AgCEUNASASKAIAIBJBBGooAgAQrSogCEF/aiEIIBJBEGohEgwACwsgDSAMEKIqIAMoAgghCCADQQA2AgggBEEANgIoIAQgAzYCICAEIAg2AiQgBCADKAIEIgk2AhggBCAJIAhBBHRqNgIcIARBGGoQuw4gAhCBJwsCQAJAIAIoAgBBgICAgHhGDQAgAigCCCAFSw0BCyABKAIIIAYgAhCDJCAAQQhqIAJBCGooAgA2AgAgACACKQIANwIAIARB4ABqJAAPC0H61IQBQcQAQcDVhAEQxxwAC/ILARN/IwBB0AFrIgIkACACQQA2AiggAkKAgICAgAE3AiAgAkHIAGpBCGohAyACQfAAakEIaiEEIAJB8ABqQRxqIQVBACEGQQghB0EAIQhBACEJQQAhCgJAAkACQANAAkACQAJAIAEtANgBQQFGDQACQCAKQf7/e0sNACAKIAlyRQ0AIAJB94CAgHg2AnAgASAKIAkgAkHwAGoQqiELIAEoAtABIQsgAkHwAGogAUEAEPQBIAIoAnQhDAJAIAIoAnAiDUGAgICAeEcNACAAQYCAgIB4NgIAIAAgDDYCBAwGCyACIAIoAng2AjQgAiAMNgIwIAIgDTYCLAJAAkAgAS0A2AFBHEYNACACQfAAaiABEOECIAIoAnQhDgJAIAIoAnAiD0EHRw0AIABBgICAgHg2AgAgACAONgIEDAILIAJBOGpBCGogBUEIaigCADYCACACIAUpAgA3AzggAigCiAEhECACKAKEASERIAIoAoABIRIgAigCfCETIAIoAnghDQwECyABKALQASENIAEQlAsgASgCzAEhESACQfAAaiABQQAQ0AIgAigCdCEMAkAgAigCcCIKQQdGDQAgAyAEKQMANwMAIANBGGogBEEYaikDADcDACADQRBqIARBEGopAwA3AwAgA0EIaiAEQQhq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DQ0AIAJBMGogCkEk/AoAAAsCQCADQSJGDQAgACACKQLIATcCLCAAQTxqIAJB2AFqKQIANwIAIABBNGogAkHQAWopAgA3AgACQEEkRQ0AIABBCGogAkEwakEk/AoAAAsgAEGJgMQANgIAIAAgAzYCBAwOCyANDQogAkEMaiACQTBqQST8CgAADAoLAkBB8ABFDQAgAkEwaiAKQfAA/AoAAAsCQCADQYmAxABGDQACQEEkRQ0AIABBBGogAkEwakEk/AoAAAtBzABFDQggAEEoaiALQcwA/AoAAAwICyANDQkgAkEMaiACQTBqQST8CgAADAkLIAEQqg9BJkcNByABQenamwFBAhDTFEUNAwJAQSRFDQAgAkGgAWogAkEMakEk/AoAAAsgAkEMaiAEQQAgAkGgAWoQ0g4MCAsgARCqD0EtRw0GIAFB99ybAUECENMURQ0DAkBBJEUNACACQaABaiACQQxqQST8CgAACyACQQxqIARBASACQaABahDSDgwHCyABEKoPQf4ARw0FIAFB1MeEAUECENMURQ0DAkBBJEUNACACQaABaiACQQxqQST8CgAACyACQQxqIARBAiACQaABahDSDgwGCyAAQQRqIAEQ8wkgAEGJgMQANgIADAYLQezGhAFBJEGQx4QBEMccAAtBoMeEAUEkQcTHhAEQxxwAC0HWx4QBQSRB/MeEARDHHAALIAAgAzYCAAwECyACQaABaiABEOYBIAIoAqABIQMCQEHAAEUiDQ0AIAJBMGogCkHAAPwKAAALAkAgA0GIgMQARw0AAkBBwABFDQAgAEEEaiACQTBqQcAA/AoAAAsgAEGJgMQANgIADAILIAcgCSkCADcCACAHQRBqIAlBEGooAgA2AgAgB0EIaiAJQQhqKQIANwIAIAIgAzYCuAICQCANDQAgCCACQTBqQcAA/AoAAAsgAkEMaiACQbgCahCrEgwACwsgAkEMahCdKAwBCyACQQA2AqABIAJBCGpBwL2EASACQaABakGMyIQBEI8fAAsgAkGQA2okAAuPCwIXfwN+IwBB8ABrIgQkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAygCAEF/akECSQ0AIARBIGogASgCwBIgASgCxBIiBSgCCEF/akF4cWpBCGoiBiADKAIIIgcgAygCDCIIIAMoAhAiCSADKAIUIgogBSgCECILERIAAkACQAJAIAQoAiBBAUcNACACQdgBaiEMIApBAWohDSACQRhqIQ4gAUGwDWohDyABKQMIIRsgASkDACEcIAEtAKwNIRAgAy0AGCERQQAhEiABLQDUEkEBcSETIAEpA7ANQgKFIAEpA7gNhCEdIAkhFEEAIRUDQCAEKAIkIgUgEkkNBiAEKAIoIRYgBCAJNgJEIAQgBTYCSCAFIAhLDQogCSAFQQFqIhdLDQogBCAYQYB+cSARciIYNgIcIAQgBTYCGCAEIAk2AhQgBCAINgIQIAQgBzYCDCAEQQE2AgQgEw0LIB1QDQ0gAigCyAFBAkYNDCAEQdgAaiAPIA4gBEEEaiAVEOwBIAQoAlwhGSAEKAJYIhVBAkYNBQJAAkAgFUEBcUUNACAEIAQoAmAiFTYCPCAEIAo2AkAgCiAISw0QIBUgDUsNECAEIBpBgH5xIBFyIho2AjggBCAKNgI0IAQgFTYCMCAEIAg2AiwgBCAHNgIoIAQgGTYCJCAEQQI2AiAgEEEBcQ0RAkAgHEIChSAbhFANACACKALIBEECRg0TIARBxABqIAEgDCAEQSBqEJ0CIAQoAkQiEkECRg0KIBJBAXFFDQUgBUF/Rg0UIAQoAkghEgwCCyAEQQE2AlwgBEG0oIMBNgJYIARCADcCZCAEIARBPGo2AmAgBEHYAGpBvKCDARC1IQALIBQgCk8NAiAFQX9GDRgLIARBIGogBiAHIAggFyAKIAsREgAgFyEUIBYhFSAEKAIgDQALC0EAIQgMAQsgFSAEKAJMIgVLDQ9BASEICyAAIBk2AgwgACAFNgIIIAAgFTYCBCAAIAg2AgAMBQsgAS0ArA1BAUYNDiABKQMAQgKFIAEpAwiEUA0CIAIoAsgEQQJGDQ8gBEEgaiABIAJB2AFqIAMQgwQCQCAEKAIgIgVBAkcNACAEKAIkEJMTGgwDCyAEKAIkIQggACAEKQIoNwIIIAAgCDYCBCAAIAU2AgAMBAsgGUEBcQ0BCyAQQQFxDQ4gHEIChSAbhFANACACKALIBEECRg0PIARBIGogASAMIAMQgwQgBCgCICIFQQJHDQEgBCgCJBCTExoLIAAgASACIAMQzwQMAQsgBCgCJCEIIAAgBCkCKDcCCCAAIAg2AgQgACAFNgIACyAEQfAAaiQADwsgBEECNgIkIARBsOCbATYCICAEQgI3AiwgBEELNgJkIARBlwE2AlwgBCAINgI8IAQgBEHYAGo2AiggBCAEQTxqNgJgIAQgBEHEAGo2AlggBEEgakHA4JsBELUhAAtBhKScAUEoQbyjgwEQxxwAC0Gso4MBEPgpAAsgBEEBNgIkIARBtKCDATYCICAEQgA3AiwgBCAEQTxqNgIoIARBIGpBzKCDARC1IQALIARBAjYCXCAEQbDgmwE2AlggBEICNwJkIARBCzYCUCAEQZcBNgJIIAQgCDYCVCAEIARBxABqNgJgIAQgBEHUAGo2AkwgBCAEQTxqNgJEIARB2ABqQcDgmwEQtSEAC0GEpJwBQShB7KKDARDHHAALQYyigwEQ+CkAC0Hcn4MBEPgpAAsgBEEANgJoIARBATYCXCAEQeyUhAE2AlggBEIENwJgIARB2ABqQbykgwEQtSEAC0GEpJwBQShBzKKDARDHHAALQeyhgwEQ+CkAC0GEpJwBQShBzKKDARDHHAALQeyhgwEQ+CkAC0HMn4MBEPgpAAvSCwECfyMAQRBrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAIgAoAgBBdGoiA0EHIANBJkkbDiYAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJQALIAIgAEEEajYCDCABQfv+mgFBBCACQQxqQewCEPALIQEMJQsgAiAAQQRqNgIMIAFB47OcAUEFIAJBDGpB7QIQ8AshAQwkCyACIABBBGo2AgwgAUHss5wBQQYgAkEMakHuAhDwCyEBDCMLIAIgAEEIajYCDCABQaaWmwFBAiACQQxqQe8CEPALIQEMIgsgAiAAQQRqNgIMIAFB//6aAUEFIAJBDGpB8AIQ8AshAQwhCyACIABBBGo2AgwgAUGE/5oBQQYgAkEMakHxAhDwCyEBDCALIAIgAEEEajYCDCABQYr/mgFBAyACQQxqQfICEPALIQEMHwsgAiAANgIMIAFB8rOcAUEGIAJBDGpB8wIQ8AshAQweCyACIABBCGo2AgwgAUGN/5oBQQYgAkEMakHVAhDwCyEBDB0LIAIgAEEIajYCDCABQZP/mgFBCSACQQxqQdYCEPALIQEMHAsgAiAAQQRqNgIMIAFBnP+aAUEEIAJBDGpB9AIQ8AshAQwbCyACIABBBGo2AgwgAUGg/5oBQQQgAkEMakH1AhDwCyEBDBoLIAIgAEEEajYCDCABQaT/mgFBAyACQQxqQfYCEPALIQEMGQsgAiAAQQRqNgIMIAFBp/+aAUEDIAJBDGpB9wIQ8AshAQwYCyACIABBCGo2AgwgAUHes5wBQQUgAkEMakH4AhDwCyEBDBcLIAIgAEEIajYCDCABQaeVmwFBAyACQQxqQfkCEPALIQEMFgsgAiAAQQRqNgIMIAFB7f6aAUEDIAJBDGpB+gIQ8AshAQwVCyACIABBBGo2AgwgAUGq/5oBQQkgAkEMakH7AhDwCyEBDBQLIAIgAEEEajYCDCABQbP/mgFBBSACQQxqQfwCEPALIQEMEwsgAiAAQQhqNgIMIAFBoZabAUEFIAJBDGpB/QIQ8AshAQwSCyACIABBBGo2AgwgAUG4/5oBQQUgAkEMakH+AhDwCyEBDBELIAIgAEEEajYCDCABQb3/mgFBCCACQQxqQf8CEPALIQEMEAsgAiAAQQRqNgIMIAFBxf+aAUEFIAJBDGpBgAMQ8AshAQwPCyACIABBBGo2AgwgAUHK/5oBQQUgAkEMakHXAhDwCyEBDA4LIAIgAEEIajYCDCABQc//mgFBCSACQQxqQYEDEPALIQEMDQsgAiAAQQhqNgIMIAFB9ZSbAUERIAJBDGpBggMQ8AshAQwMCyACIABBBGo2AgwgAUHY/5oBQQggAkEMakGDAxDwCyEBDAsLIAIgAEEEajYCDCABQbqVmwFBCiACQQxqQYQDEPALIQEMCgsgAiAAQQRqNgIMIAFBhpWbAUELIAJBDGpBhQMQ8AshAQwJCyACIABBBGo2AgwgAUHg/5oBQQ8gAkEMakHcAhDwCyEBDAgLIAIgAEEEajYCDCABQe//mgFBECACQQxqQYYDEPALIQEMBwsgAiAAQQRqNgIMIAFB//+aAUEJIAJBDGpB2wIQ8AshAQwGCyACIABBBGo2AgwgAUGIgJsBQQQgAkEMakHZAhDwCyEBDAULIAIgAEEEajYCDCABQYyAmwFBDyACQQxqQd0CEPALIQEMBAsgAiAAQQRqNgIMIAFBm4CbAUELIAJBDGpB2gIQ8AshAQwDCyACIABBCGo2AgwgAUGFkpsBQQsgAkEMakGHAxDwCyEBDAILIAIgAEEEajYCDCABQaaAmwFBCCACQQxqQdgCEPALIQEMAQsgAiAAQQRqNgIMIAFB+LOcAUEHIAJBDGpB0wIQ8AshAQsgAkEQaiQAIAELsQsBDX8jAEHAAWsiAyQAAkACQAJAAkACQAJAAkACQCABLQDYASIEENUUDQAgBEF+ag4DBgMBAgsgA0E4aiABIAIQswUCQAJAIAMtAExBAkcNACAAIAMoAjg2AgRBByEBDAELIANB/ABqIANB0ABqKQMANwIAIANB9ABqIANByABqKQMANwIAIANB7ABqIANBwABqKQMANwIAIAMgAykDODcCZAJAQSRFDQAgAEEEaiADQeAAakEk/AoAAAtBACEBCyAAIAE2AgAMBgsgASgC0AEhBSABEJQLIANBADYCFCADQoCAgICAATcCDCADQThqQQhqIQIgA0HgAGpBCGohBkEAIQdBACEIA0ACQAJAAkACQAJAAkACQCABLQDYASIEQXtqDgMBAAIACwJAIAhB/v97Sw0AIAggB3JFDQAgA0G7gICAeDYCOCABIAggByADQThqEKohIAEtANgBIQQLAkAgBEH/AXEiCUEcRg0AIANBOGogARCLCCADKAI8IQogAygCOCIEQQdGDQUgBiACKQMANwMAIAZBGGogAkEYaikDADcDACAGQRBqIAJBEGopAwA3AwAgBkEIaiACQQhqKQMANwMAIAMgCjYCZCADIAQ2AmAgA0EMaiADQeAAakGUsJwBEO0cDAQLIAEoAtABIQggARCUCyABKALMASELIANBOGogAUEAENACIAMoAjwhCiADKAI4IgxBB0YNBCADQRhqQRhqIg0gAkEYaikDADcDACADQRhqQRBqIg4gAkEQaikDADcDACADQRhqQQhqIg8gAkEIaikDADcDACADIAIpAwA3AxggASgCzAEhB0EoEMcoIgQgCjYCBCAEIAw2AgAgBCADKQMYNwMIIARBEGogDykDADcDACAEQRhqIA4pAwA3AwAgBEEgaiANKQMANwMAIANBADYCUCADIAs2AkwgAyAINgJIIAMgBzYCRCADIAg2AkAgAyAENgI8IANBAjYCOCADQQxqIANBOGpBpLCcARDtHAwDCyABEJQLAkACQCABLQCRAUEEcQ0AQQAhBCABLQCJAUHAAHFFDQMgAS0A2AFB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DjYCAAsgAkEQakEoaiACQcAAakEoaikDADcDACACQRBqQSBqIAJBwABqQSBqKQMANwMAIAJBEGpBGGogAkHAAGpBGGopAwA3AwAgAkEQakEQaiACQcAAakEQaikDADcDACACQRBqQQhqIAJBwABqQQhqKQMANwMAIAJBCGogAkH0AGpBCGooAgA2AgAgAiACKQNANwMQIAIgAikCdDcDACABKAKUASEIIAJBgAFqIAEoApgBIhJBCEEoEPcOIAIoAoQBIREgAigCgAFBAUYNASACKAKIASEOAkAgEUUNACASQShsIRAgDiEKIBEhEwNAIBBFDQEgAkGAAWogCBCWASAKQSBqIAJBgAFqQSBqKQMANwMAIApBGGogAkGAAWpBGGopAwA3AwAgCkEQaiACQYABakEQaikDADcDACAKQQhqIAJBgAFqQQhqKQMANwMAIAogAikDgAE3AwAgEEFYaiEQIApBKGohCiAIQShqIQggE0F/aiITDQALC0EGIQoCQCABLQA8QQZGDQAgASgCDCEQIAEoAgghCCACQYABaiABQRBqEJ4GIAJBwABqQShqIAJBgAFqQShqKAIANgIAIAJBwABqQSBqIAJBgAFqQSBqKQMANwMAIAJBwABqQRhqIAJBgAFqQRhqKQMANwMAIAJBwABqQRBqIAJBgAFqQRBqKQMANwMAIAJBwABqQQhqIAJBgAFqQQhqKQMANwMAIAJB9gBqIAJBrwFqLQAAOgAAIAIgAikDgAE3A0AgAiACLwCtATsBdCACLQCsASEKCyAAIAM2AgQgACAENgIAIAAgAikDEDcDQCAAIAk2AnggACAFNgJ0IAAgBjYCcCAAIAIpAwA3AnwgAEHIAGogAkEQakEIaikDADcDACAAQdAAaiACQRBqQRBqKQMANwMAIABB2ABqIAJBEGpBGGopAwA3AwAgAEHgAGogAkEQakEgaikDADcDACAAQegAaiACQRBqQShqKQMANwMAIABBhAFqIAJBCGooAgA2AgAgACASNgKYASAAIA42ApQBIAAgETYCkAEgACAHOgCIASAAIAg2AgggACAQNgIMIAAgAikDQDcDECAAQRhqIAJBwABqQQhqKQMANwMAIABBIGogAkHAAGpBEGopAwA3AwAgAEEoaiACQcAAakEYaikDADcDACAAQTBqIAJBwABqQSBqKQMANwMA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IQQMAQsCQCAEQYAQTw0AQQIhBAwBC0EDQQQgBEGAgARJGyEECyAEIAVqIQUgAiADRw0ACwsgASADNgJsIAEgBSAGajYCaCABIAkgBWo2AnggASgChAFBCGogBiAFEOIDIQoLIABBADYCACAAIAo3AwgL1AoBEH8jAEHQAGsiASQAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAKMBiICIAAoApAGIgNPDQAgASADNgIcIANBA0cNASABQRBqIAAoArwDIgRBBEEEQbDhmwEQtxdBACEDIAFBADYCKCABIAEpAxA3AiAgAUEgaiAEEMUiIAEoAiQgASgCKCIFQQJ0aiEGAkADQCAEIANGDQEgBiADNgIAIAZBBGohBiADQQFqIQMMAAsLIAFBwABqIAUgA2o2AgAgASABKQIgNwM4IAFBADYCRCAAKAK4AyEGQQQhB0EEIQMDQCADIAQgAyAESxshBQJAA0AgBSADRg0BIAFBIGogAxDyICABKAIgQQFGDQUgA0EBaiEDIAYgBCABKAIkIghBrI2AARCJIygCCEUNAAsgAUE4aiAGIAQgCCAHELAJIAFBIGogB0EBahDyICABKAIgQQFGDQsgASgCJCEHDAELCyAHRQ0DIAFBIGogB0F/ahDyICABKAIgQQFGDQQgAUE4aiAGIARBAyABKAIkIgMQsAkgB0EBRg0FIAFBIGogB0F+ahDyICABKAIgQQFGDQYgAUE4aiAGIAQgAiABKAIkIgUQsAkgB0ECTQ0HIAFBIGogB0F9ahDyICABKAIgQQFGDQggASgCJCEIIAAgAzYCkAYgACAFNgKMBiAAIAg2AogGIAYgBCADQYyNgAEQiSMoAghFDQogACADNgKIBgwKC0Hoi4ABQS9BmIyAARDHHAALIAFCADcCLCABQoGAgIDAADcCJCABQfiNgAE2AiBBAEGojIABIAFBHGogAUEgakGAjoABEO0eAAsgASABKQMoNwNIQciRnAFBKyABQcgAakHogoABQZyNgAEQoxIAC0GsjIABEPgpAAsgASABKQMoNwNIQciRnAFBKyABQcgAakHogoABQbyMgAEQoxIAC0HMjIABEPgpAAsgASABKQMoNwNIQciRnAFBKyABQcgAakHogoABQdyMgAEQoxIAC0HsjIABEPgpAAsgASABKQMoNwNIQciRnAFBKyABQcgA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OBD3DiACKAI0IQUCQAJAIAIoAjBBAUYNACACKAI4IQYCQCAFRQ0AIARBOGwhByACQSVqIQhBACEJIAUhCgNAIAcgCUYNAQJAAkACQAJAIAMgCWoiASgCACILDgMAAQIACyACQQhqIAFBCGoQxAQgAUEoaigCACEBELYlIQwgAkEwaiABELoCIAxBIGogAkEwakEgaikDADcDACAMQRhqIAJBMGpBGGopAwA3AwAgDEEQaiACQTBqQRBqKQMANwMAIAxBCGogAkEwakEIaikDADcDACAMIAIpAzA3AwAgAigCCCENIAIoAgwhDiACKAIQIQ8gAigCFCEQIAIoAhghESACKAIcIRIgAigCICETIAItACQhFCACQQRqQQJqIAhBAmotAAA6AAAgAiAILwAAOwEEIAIoAiwhFQwCCyABQSBqKAIAIRMgAUEcaigCACESIAFBGGooAgAhESABQQxqKAIAIQ4gAUEIaigCACENAkAgAUEQaikDACIZQgODQgBSDQAgGaciDCAMKAIAIgxBAWo2AgAgDEF/TA0GCyABQSRqLQAAIRRBACEWQQAhDAJAIAFBKGooAgAiD0UNABC3JSEMIA8pAgQhGiAPKAIAIRAQuCUhDyACQTBqIBAQcwJAQeAARQ0AIA8gAkEwakHgAPwKAAALIAwgGjcCBCAMIA82AgALAkAgAUEwaigCACIBRQ0AELUlIRYgAkEwaiABEEIgFkE4aiACQTBqQThqKQMANwMAIBZBMGogAkEwakEwaikDADcDACAWQShqIAJBMGpBKGopAwA3AwAgFkEgaiACQTBqQSBqKQMANwMAIBZBGGogAkEwakEYaikDADcDACAWQRBqIAJBMGpBEGopAwA3AwAgFkEIaiACQTBqQQhqKQMANwMAIBYgAikDMDcDAAsgGUIgiKchECAZpyEPDAELIAFBFGooAgAhECABQRBqKAIAIQ8gAUEMaigCACEOIAFBCGooAgAhDSABQQRqKAIAIREQtiUhFyACQTBqIBEQugIgF0EgaiACQTBqQSBqKQMANwMAIBdBGGogAkEwakEYaikDADcDACAXQRBqIAJBMGpBEGopAwA3AwAgF0EIaiACQTBqQQhqKQMANwMAIBcgAikDMDcDAAJAIAFBGGooAgAiAQ0AQQAhEQwBCxC3JSERIAEpAgQhGSABKAIAIRgQuCUh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CwsgACgCICABEIQNDwsgASAAKAIEELMoDwsgASAAKAIMELMoDwsgASAAKAIEELMoIAEgACgCCBCzKA8LAkACQCACQQtHDQAgAEEIaiEDAkACQCAAKAIEDgMAAQMACyADIAEQgBsMAgsgAyABEIkeDAELIAAgARD1CwsgASAAKAI4ELMoDwsgASAAKAIoELMoIAEgAEEIahCPJA8LIAEgAEEIahCQJA8LIAEgACgCBBCzKCABIAAoAggQsyggASAAKAIMELMoDwsCQCAALQAYQQVHDQACQAJAIAAoAhAiAygCAEEaRw0AIANBCGpBlOWbAUEEENcfDQELIAEgACgCEBCzKAwBCyABQQE6AAALIAAoAgwiA0UNEyADQQR0IQMgACgCCEEMaiEAA0AgASAAKAIAELMoIABBEGohACADQXBqIgMNAAwUCwsgASAAKAIQELMoIAAoAgRBgICAgHhGDRIgACgCDCIDRQ0SIANBBHQhAyAAKAIIQQxqIQADQCABIAAoAgAQsyggAEEQaiEAIANBcGoiAw0ADBMLCyAAKAIMIgNFDREgACgCCCEAIANBAnQhAwNAIAEgACgCABCzKCAAQQRqIQAgA0F8aiIDDQAMEgsLIAAoAgwiA0UNECAAKAIIIQAgA0ECdCEDA0AgASAAKAIAELMoIABBBGohACADQXxqIgMNAAwRCwsgASAAKAIEELMoIAAoAggiACgCCCIDRQ0PIAAoAgQhACADQQJ0IQMDQCABIAAoAgAQsyggAEEEaiEAIANBfGoiAw0ADBALCyAAQQRqIAEQzBYPCyAAKAIgIAEQ9wUPCyAAKAIMIgBFDQwgASAAELMoDwsgASAAKAIEELMoDwsgASAAKAIEELMoDwsgAEEIahD5JA8LIAEgACgCBBCrDA8LIAAoAgwiA0UNByAAKAIIIgIgA0EobGohBANAAkACQAJAAkACQCACKAIADgUEAAECAwQLIAIoAgRBAUcNAyABIAIoAggQsygMAwsgASACKAIEELMoDAILIAEgAigCBBCrDAwBCyACKAIMIgNFDQAgAigCCCEAIANBKGwhAwNAIAAgARDWCCAAQShqIQAgA0FYaiIDDQALCyACQShqIgIgBEcNAAwICwsgASAAKAIEELMoDwsgASAAKAIEELMoDwsgASAAKAIEELMoDwsgASAAKAIEELMoDwsg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QdgAajYCKCADIANB4ABqNgJYIANBwABqIANB+ABqEOQPIANB1ABqIANBJGooAgA2AgAgAyADKQIcNwJMIAUgBCADQcAAahCXGSEEIAItANgBQaIBRw0BIAIgAhDAKRCnFgwBCyACEJQLIAEoAgwhByADIAEoAhA2AoABIAMgBzYCfCADIAEoAhQiCDYCeAJAAkAgAigCiAEiBEGAgIABcQ0AIAIgBEGAgIABcjYCiAEgA0HAAGogA0H4AGogAhC2FCACIAIoAogBQf///35xNgKIAQwBCyADQcAAaiADQfgAaiACELYUCyADKAJEIQQgAygCQCIFQYCAgIB4Rg0AIAMgAygCSCIJNgIwIAMgBDYCLCADIAU2AigCQAJAIAItANgBQQFGDQAgAigC1AEhBCACKALQASEFIANBNGogAhCXJCADQQE2AnwgA0G8t5wBNgJ4IANCATcChAEgA0GPBTYCXCADQQE6AGcgAyADQdgAajYCgAEgAyADQeAAajYCWCADIANB5wBqNgJgIANBwABqIANB+ABqEOQPIANB1ABqIANBPGooAgA2AgAgAyADKQI0NwJMIAUgBCADQcAAahCXGSEEIAItANgBQaIBRw0BIAIgAhDAKRCnFgwBCyACEJQLAkACQAJAAkAgAi0AkQFBIHFFDQAgAi0A2AFB/wFxQQlGDQELQQAhCgwBCyADQQk6AHggAyACIANB+ABqEJURIAMoAgQhCiADKAIAQQFxDQELIAMgCjYCQCADQfgAaiACIAgtAAAgBy0AACAEIAkQ/B0Q0wsgAygCfCELAkAgAygCeCIMQYGAgIB4Rw0AIANBwABqEMMoIAshBAwCCyADQegAakEIaiINIANB+ABqQRBqIg4pAgA3AwAgAyADKQKAATcDaAJAIAxBgICAgHhHDQAgAi8BkAFBgMAAcUUNACAJQQZ0IQUDQCAFRQ0BAkAgBCgCAEEERw0AIARBEGooAgAhCSAEQQxqKAIAIQ8gA0GpgYCAeDYCeCACIA8gCSADQfgAahCqIQsgBEHAAGohBCAFQUBqIQUMAAsLIANBjAFqIAFBCGooAgA2AgAgA0H4AGpBCGoiBSADQShqQQhqKAIANgIAIAMgAykCKDcDeCADIAEpAgA3AoQBIAEoAhgoAgAhASACKALMASEJIActAAAhAiAILQAAIQdByABBBBDKJyIEIAs2AhwgBCAMNgIYIAQgBzoARSAEIAI6AEQgBCAKNgJAIAQgBjYCPEEAIQIgBEEANgI4IAQgCTYCNCAEIAE2AjAgBEEQaiAOKQMANwIAIARBCGogBSkDADcCACAEIAMpA3g3AgAgBCADKQNoNwIgIARBKGogDSkDADcCAAwECyAKIQQLIANBKGoQ7iULIAYQySkLIAEQyiVBASECCyAAIAQ2AgQgACACNgIAIANBkAFqJAALqgoBDX8jAEGQAWsiAyQAQQAhBAJAAkACQCACLQCRAUEgcUUNAAJAAkAgAigCiAEiBEGAIHENACACIARBgCByNgKIASADQQhqIAIQ9RQgAygCCCEFIAIgAigCiAFB/19xNgKIASADKAIMIQQMAQsgA0EQaiACEPUUIAMoAhQhBCADKAIQIQULIAVBAXENAQsgBCEGAkACQCACLQDYAUUNACACKALUASEEIAIoAtABIQUgA0EcaiACEJckIANBATYCfCADQby3nAE2AnggA0IBNwKEASADQY8FNgIsIANBADoAYCADIANBKGo2AoABIAMgA0HYAGo2AiggAyADQeAAajYCWCADQcAAaiADQfgAahDkDyADQdQAaiADQSRqKAIANgIAIAMgAykCHDcCTCAFIAQgA0HAAGoQlxkhBCACLQDYAUGiAUcNASACIAIQwCkQpxYMAQsgAhCUCyABKAIMIQcgAyABKAIQNgKAASADIAc2AnwgAyABKAIUIgg2AngCQAJAIAIoAogBIgRBgICAAXENACACIARBgICAAXI2AogBIANBwABqIANB+ABqIAIQ8R8gAiACKAKIAUH///9+cTYCiAEMAQsgA0HAAGogA0H4AGogAhDxHwsgAygCRCEEIAMoAkAiBUGAgICAeEYNACADIAMoAkgiCTYCMCADIAQ2AiwgAyAFNgIoAkACQCACLQDYAUEBRg0AIAIoAtQBIQQgAigC0AEhBSADQTRqIAIQlyQgA0EBNgJ8IANBvLecATYCeCADQgE3AoQBIANBjwU2AlwgA0EBOgBnIAMgA0HYAGo2AoABIAMgA0HgAGo2AlggAyADQecAajYCYCADQcAAaiADQfgAahDkDyADQdQAaiADQTxqKAIANgIAIAMgAykCNDcCTCAFIAQgA0HAAGoQlxkhBCACLQDYAUGiAUcNASACIAIQwCkQpxYMAQsgAhCUCwJAAkACQAJAIAItAJEBQSBxRQ0AIAItANgBQf8BcUEJRg0BC0EAIQoMAQsgA0EJOgB4IAMgAiADQfgAahCVESADKAIEIQogAygCAEEBcQ0BCyADIAo2AkAgA0H4AGogAiAILQAAIActAAAgBCAJEPwdENMLIAMoAnwhCwJAIAMoAngiDEGBgICAeEcNACADQcAAahDDKCALIQQMAgsgA0HoAGpBCGoiDSADQfgAakEQaiIOKQIANwMAIAMgAykCgAE3A2gCQCAMQYCAgIB4Rw0AIAIvAZABQYDAAHFFDQAgCUEGdCEFA0AgBUUNAQJAIAQoAgBBBEcNACAEQRBqKAIAIQkgBEEMaigCACEPIANBqYGAgHg2AnggAiAPIAkgA0H4AGoQqiELIARBwABqIQQgBUFAaiEFDAALCyADQYwBaiABQQhqKAIANgIAIANB+ABqQQhqIgUgA0EoakEIaigCADYCACADIAMpAig3A3ggAyABKQIANwKEASABKAIYKAIAIQEgAigCzAEhCSAHLQAAIQIgCC0AACEHQcgAQQQQyiciBCALNgIcIAQgDDYCGCAEIAc6AEUgBCACOgBEIAQgCjYCQCAEIAY2AjxBACECIARBADYCOCAEIAk2AjQgBCABNgIwIARBEGogDikDADcCACAEQQhqIAUpAwA3AgAgBCADKQN4NwIAIAQgAykDaDcCICAEQShqIA0pAwA3AgAMBAsgCiEECyADQShqEO4lCyAGEMkpCyABEMolQQEhAgsgACAENgIEIAAgAjYCACADQZABaiQAC6oKAQ1/IwBBkAFrIgMkAEEAIQQCQAJAAkAgAi0AkQFBIHFFDQACQAJAIAIoAogBIgRBgCBxDQAgAiAEQYAgcjYCiAEgA0EIaiACEPUUIAMoAgghBSACIAIoAogBQf9fcTYCiAEgAygCDCEEDAELIANBEGogAhD1FCADKAIUIQQgAygCECEFCyAFQQFxDQELIAQhBgJAAkAgAi0A2AFFDQAgAigC1AEhBCACKALQASEFIANBHGogAhCXJCADQQE2AnwgA0G8t5wBNgJ4IANCATcChAEgA0GPBTYCLCADQQA6AGAgAyADQShqNgKAASADIANB2ABqNgIoIAMgA0HgAGo2AlggA0HAAGogA0H4AGoQ5A8gA0HUAGogA0EkaigCADYCACADIAMpAhw3AkwgBSAEIANBwABqEJcZIQQgAi0A2AFBogFHDQEgAiACEMApEKcWDAELIAIQlAsgASgCDCEHIAMgASgCEDYCgAEgAyAHNgJ8IAMgASgCFCIINgJ4AkACQCACKAKIASIEQYCAgAFxDQAgAiAEQYCAgAFyNgKIASADQcAAaiADQfgAaiACEPIfIAIgAigCiAFB////fnE2AogBDAELIANBwABqIANB+ABqIAIQ8h8LIAMoAkQhBCADKAJAIgVBgICAgHhGDQAgAyADKAJIIgk2AjAgAyAENgIsIAMgBTYCKAJAAkAgAi0A2AFBAUYNACACKALUASEEIAIoAtABIQUgA0E0aiACEJckIANBATYCfCADQby3nAE2AnggA0IBNwKEASADQY8FNgJcIANBAToAZyADIANB2ABqNgKAASADIANB4ABqNgJYIAMgA0HnAGo2AmAgA0HAAGogA0H4AGoQ5A8gA0HUAGogA0E8aigCADYCACADIAMpAjQ3AkwgBSAEIANBwABqEJcZIQQgAi0A2AFBogFHDQEgAiACEMApEKcWDAELIAIQlAsCQAJAAkACQCACLQCRAUEgcUUNACACLQDYAUH/AXFBCUYNAQtBACEKDAELIANBCToAeCADIAIgA0H4AGoQlREgAygCBCEKIAMoAgBBAXENAQsgAyAKNgJAIANB+ABqIAIgCC0AACAHLQAAIAQgCRD8HRDTCyADKAJ8IQsCQCADKAJ4IgxBgYCAgHhHDQAgA0HAAGoQwyggCyEEDAILIANB6ABqQQhqIg0gA0H4AGpBEGoiDikCADcDACADIAMpAoABNwNoAkAgDEGAgICAeEcNACACLwGQAUGAwABxRQ0AIAlBBnQhBQNAIAVFDQECQCAEKAIAQQRHDQAgBEEQaigCACEJIARBDGooAgAhDyADQamBgIB4NgJ4IAIgDyAJIANB+ABqEKohCyAEQcAAaiEEIAVBQGohBQwACwsgA0GMAWogAUEIaigCADYCACADQfgAakEIaiIFIANBKGpBCGooAgA2AgAgAyADKQIoNwN4IAMgASkCADcChAEgASgCGCgCACEBIAIoAswBIQkgBy0AACECIAgtAAAhB0HIAEEEEMonIgQgCzYCHCAEIAw2AhggBCAHOgBFIAQgAjoARCAEIAo2AkAgBCAGNgI8QQAhAiAEQQA2AjggBCAJNgI0IAQgATYCMCAEQRBqIA4pAwA3AgAgBEEIaiAFKQMANwIAIAQgAykDeDcCACAEIAMpA2g3AiAgBEEoaiANKQMANwIADAQLIAohBAsgA0EoahDuJQsgBhDJKQsgARDKJUEBIQILIAAgBDYCBCAAIAI2AgAgA0GQAWokAAuqCgENfyMAQZABayIDJABBACEEAkACQAJAIAItAJEBQSBxRQ0AAkACQCACKAKIASIEQYAgcQ0AIAIgBEGAIHI2AogBIANBCGogAhD1FCADKAIIIQUgAiACKAKIAUH/X3E2AogBIAMoAgwhBAwBCyADQRBqIAIQ9RQgAygCFCEEIAMoAhAhBQsgBUEBcQ0BCyAEIQYCQAJAIAItANgBRQ0AIAIoAtQBIQQgAigC0AEhBSADQRxqIAIQlyQgA0EBNgJ8IANBvLecATYCeCADQgE3AoQBIANBjwU2AiwgA0EAOgBgIAMgA0EoajYCgAEgAyADQdgAajYCKCADIANB4ABqNgJYIANBwABqIANB+ABqEOQPIANB1ABqIANBJGooAgA2AgAgAyADKQIcNwJMIAUgBCADQcAAahCXGSEEIAItANgBQaIBRw0BIAIgAhDAKRCnFgwBCyACEJQLIAEoAgwhByADIAEoAhA2AoABIAMgBzYCfCADIAEoAhQiCDYCeAJAAkAgAigCiAEiBEGAgIABcQ0AIAIgBEGAgIABcjYCiAEgA0HAAGogA0H4AGogAhC4FCACIAIoAogBQf///35xNgKIAQwBCyADQcAAaiADQfgAaiACELgUCyADKAJEIQQgAygCQCIFQYCAgIB4Rg0AIAMgAygCSCIJNgIwIAMgBDYCLCADIAU2AigCQAJAIAItANgBQQFGDQAgAigC1AEhBCACKALQASEFIANBNGogAhCXJCADQQE2AnwgA0G8t5wBNgJ4IANCATcChAEgA0GPBTYCXCADQQE6AGcgAyADQdgAajYCgAEgAyADQeAAajYCWCADIANB5wBqNgJgIANBwABqIANB+ABqEOQPIANB1ABqIANBPGooAgA2AgAgAyADKQI0NwJMIAUgBCADQcAAahCXGSEEIAItANgBQaIBRw0BIAIgAhDAKRCnFgwBCyACEJQLAkACQAJAAkAgAi0AkQFBIHFFDQAgAi0A2AFB/wFxQQlGDQELQQAhCgwBCyADQQk6AHggAyACIANB+ABqEJURIAMoAgQhCiADKAIAQQFxDQELIAMgCjYCQCADQfgAaiACIAgtAAAgBy0AACAEIAkQ/B0Q0wsgAygCfCELAkAgAygCeCIMQYGAgIB4Rw0AIANBwABqEMMoIAshBAwCCyADQegAakEIaiINIANB+ABqQRBqIg4pAgA3AwAgAyADKQKAATcDaAJAIAxBgICAgHhHDQAgAi8BkAFBgMAAcUUNACAJQQZ0IQUDQCAFRQ0BAkAgBCgCAEEERw0AIARBEGooAgAhCSAEQQxqKAIAIQ8gA0GpgYCAeDYCeCACIA8gCSADQfgAahCqIQsgBEHAAGohBCAFQUBqIQUMAAsLIANBjAFqIAFBCGooAgA2AgAgA0H4AGpBCGoiBSADQShqQQhqKAIANgIAIAMgAykCKDcDeCADIAEpAgA3AoQBIAEoAhgoAgAhASACKALMASEJIActAAAhAiAILQAAIQdByABBBBDKJyIEIAs2AhwgBCAMNgIYIAQgBzoARSAEIAI6AEQgBCAKNgJAIAQgBjYCPEEAIQIgBEEANgI4IAQgCTYCNCAEIAE2AjAgBEEQaiAOKQMANwIAIARBCGogBSkDADcCACAEIAMpA3g3AgAgBCADKQNoNwIgIARBKGogDSkDADcCAAwECyAKIQQLIANBKGoQ7iULIAYQySkLIAEQyiVBASECCyAAIAQ2AgQgACACNgIAIANBkAFqJAALqgoBDX8jAEGQAWsiAyQAQQAhBAJAAkACQCACLQCRAUEgcUUNAAJAAkAgAigCiAEiBEGAIHENACACIARBgCByNgKIASADQQhqIAIQ9RQgAygCCCEFIAIgAigCiAFB/19xNgKIASADKAIMIQQMAQsgA0EQaiACEPUUIAMoAhQhBCADKAIQIQULIAVBAXENAQsgBCEGAkACQCACLQDYAUUNACACKALUASEEIAIoAtABIQUgA0EcaiACEJckIANBATYCfCADQby3nAE2AnggA0IBNwKEASADQY8FNgIsIANBADoAYCADIANBKGo2AoABIAMgA0HYAGo2AiggAyADQeAAajYCWCADQcAAaiADQfgAahDkDyADQdQAaiADQSRqKAIANgIAIAMgAykCHDcCTCAFIAQgA0HAAGoQlxkhBCACLQDYAUGiAUcNASACIAIQwCkQpxYMAQsgAhCUCyABKAIMIQcgAyABKAIQNgKAASADIAc2AnwgAyABKAIUIgg2AngCQAJAIAIoAogBIgRBgICAAXENACACIARBgICAAXI2AogBIANBwABqIANB+ABqIAIQ8R8gAiACKAKIAUH///9+cTYCiAEMAQsgA0HAAGogA0H4AGogAhDxHwsgAygCRCEEIAMoAkAiBUGAgICAeEYNACADIAMoAkgiCTYCMCADIAQ2AiwgAyAFNgIoAkACQCACLQDYAUEBRg0AIAIoAtQBIQQgAigC0AEhBSADQTRqIAIQlyQgA0EBNgJ8IANBvLecATYCeCADQgE3AoQBIANBjwU2AlwgA0EBOgBnIAMgA0HYAGo2AoABIAMgA0HgAGo2AlggAyADQecAajYCYCADQcAAaiADQfgAahDkDyADQdQAaiADQTxqKAIANgIAIAMgAykCNDcCTCAFIAQgA0HAAGoQlxkhBCACLQDYAUGiAUcNASACIAIQwCkQpxYMAQsgAhCUCwJAAkACQAJAIAItAJEBQSBxRQ0AIAItANgBQf8BcUEJRg0BC0EAIQoMAQsgA0EJOgB4IAMgAiADQfgAahCVESADKAIEIQogAygCAEEBcQ0BCyADIAo2AkAgA0H4AGogAiAILQAAIActAAAgBCAJEPwdENMLIAMoAnwhCwJAIAMoAngiDEGBgICAeEcNACADQcAAahDLKCALIQQMAgsgA0HoAGpBCGoiDSADQfgAakEQaiIOKQIANwMAIAMgAykCgAE3A2gCQCAMQYCAgIB4Rw0AIAIvAZABQYDAAHFFDQAgCUEGdCEFA0AgBUUNAQJAIAQoAgBBBEcNACAEQRBqKAIAIQkgBEEMaigCACEPIANBqYGAgHg2AnggAiAPIAkgA0H4AGoQqiELIARBwABqIQQgBUFAaiEFDAALCyADQYwBaiABQQhqKAIANgIAIANB+ABqQQhqIgUgA0EoakEIaigCADYCACADIAMpAig3A3ggAyABKQIANwKEASABKAIYKAIAIQEgAigCzAEhCSAHLQAAIQIgCC0AACEHQcgAQQQQ2CciBCALNgIcIAQgDDYCGCAEIAc6AEUgBCACOgBEIAQgCjYCQCAEIAY2AjxBACECIARBADYCOCAEIAk2AjQgBCABNgIwIARBEGogDikDADcCACAEQQhqIAUpAwA3AgAgBCADKQN4NwIAIAQgAykDaDcCICAEQShqIA0pAwA3AgAMBAsgCiEECyADQShqEO4lCyAGEKsjCyABEMolQQEhAgsgACAENgIEIAAgAjYCACADQZABaiQAC6oKAQ1/IwBBkAFrIgMkAEEAIQQCQAJAAkAgAi0AkQFBIHFFDQACQAJAIAIoAogBIgRBgCBxDQAgAiAEQYAgcjYCiAEgA0EIaiACEPUUIAMoAgghBSACIAIoAogBQf9fcTYCiAEgAygCDCEEDAELIANBEGogAhD1FCADKAIUIQQgAygCECEFCyAFQQFxDQELIAQhBgJAAkAgAi0A2AFFDQAgAigC1AEhBCACKALQASEFIANBHGogAhCXJCADQQE2AnwgA0G8t5wBNgJ4IANCATcChAEgA0GPBTYCLCADQQA6AGAgAyADQShqNgKAASADIANB2ABqNgIoIAMgA0HgAGo2AlggA0HAAGogA0H4AGoQ5A8gA0HUAGogA0EkaigCADYCACADIAMpAhw3AkwgBSAEIANBwABqEJcZIQQgAi0A2AFBogFHDQEgAiACEMApEKcWDAELIAIQlAsgASgCDCEHIAMgASgCEDYCgAEgAyAHNgJ8IAMgASgCFCIINgJ4AkACQCACKAKIASIEQYCAgAFxDQAgAiAEQYCAgAFyNgKIASADQcAAaiADQfgAaiACEPIfIAIgAigCiAFB////fnE2AogBDAELIANBwABqIANB+ABqIAIQ8h8LIAMoAkQhBCADKAJAIgVBgICAgHhGDQAgAyADKAJIIgk2AjAgAyAENgIsIAMgBTYCKAJAAkAgAi0A2AFBAUYNACACKALUASEEIAIoAtABIQUgA0E0aiACEJckIANBATYCfCADQby3nAE2AnggA0IBNwKEASADQY8FNgJcIANBAToAZyADIANB2ABqNgKAASADIANB4ABqNgJYIAMgA0HnAGo2AmAgA0HAAGogA0H4AGoQ5A8gA0HUAGogA0E8aigCADYCACADIAMpAjQ3AkwgBSAEIANBwABqEJcZIQQgAi0A2AFBogFHDQEgAiACEMApEKcWDAELIAIQlAsCQAJAAkACQCACLQCRAUEgcUUNACACLQDYAUH/AXFBCUYNAQtBACEKDAELIANBCToAeCADIAIgA0H4AGoQlREgAygCBCEKIAMoAgBBAXENAQsgAyAKNgJAIANB+ABqIAIgCC0AACAHLQAAIAQgCRD8HRDTCyADKAJ8IQsCQCADKAJ4IgxBgYCAgHhHDQAgA0HAAGoQyyggCyEEDAILIANB6ABqQQhqIg0gA0H4AGpBEGoiDikCADcDACADIAMpAoABNwNoAkAgDEGAgICAeEcNACACLwGQAUGAwABxRQ0AIAlBBnQhBQNAIAVFDQECQCAEKAIAQQRHDQAgBEEQaigCACEJIARBDGooAgAhDyADQamBgIB4NgJ4IAIgDyAJIANB+ABqEKohCyAEQcAAaiEEIAVBQGohBQwACwsgA0GMAWogAUEIaigCADYCACADQfgAakEIaiIFIANBKGpBCGooAgA2AgAgAyADKQIoNwN4IAMgASkCADcChAEgASgCGCgCACEBIAIoAswBIQkgBy0AACECIAgtAAAhB0HIAEEEENgnIgQgCzYCHCAEIAw2AhggBCAHOgBFIAQgAjoARCAEIAo2AkAgBCAGNgI8QQAhAiAEQQA2AjggBCAJNgI0IAQgATYCMCAEQRBqIA4pAwA3AgAgBEEIaiAFKQMANwIAIAQgAykDeDcCACAEIAMpA2g3AiAgBEEoaiANKQMANwIADAQLIAohBAsgA0EoahDuJQsgBhCrIwsgARDKJUEBIQILIAAgBDYCBCAAIAI2AgAgA0GQAWokAAvbCQEKfyMAQfAAayICJAACQCAAKAIAIgNBgICAgHhGDQAgACgCCCEEIAJBIGogABDtEQJAAkACQAJAAkACQAJAIAIoAiBBAXFFDQAgAigCJEUNAQsgAUUNASAAENQFIAAoAgAiA0GAgICAeEYNBSAAKAIIIgVFDQUgACgCBCAFQYDXhAEQnSYiBigCCCEHIAYoAgQhCCACQQE2AkggAiAGIAVBBHRqNgJEIAIgBjYCQCAHIQkDQCACQcAAahDxEiIGRQ0DAkAgCSAHSw0AIAkgBigCCCIKIAkgCkkbIQkgBigCBCEKQQAhBgNAAkACQCAJIAZGDQAgCiAGai0AACAIIAZqLQAARg0BIAYhCQsgCQ0DQQEhCEEAIQkMBwsgBkEBaiEGDAALCwsgCSAHQaDXhAEQhyoACyAAELMqDAULIARFDQMgACgCBCAEQbDXhAEQnSYiBigCCCEFIAYoAgQhCyACQQE2AkggAiAGIARBBHRqNgJEIAIgBjYCQCAFIQgCQAJAA0AgAkHAAGoQ8RIiBkUNASAFIAhrIQkgBigCCCEIIAYoAgQhBiACQRhqIAkgCyAFQdDXhAEQlyEgBiAIakF/aiEJIAIoAhggAigCHCIHakF/aiEKQQAhBgNAAkACQCAIIAZGDQACQCAHIAZHDQAgByEIDAELIAktAAAgCi0AAEYNASAGIQgLIAgNAkEAIQkMBAsgCUF/aiEJIApBf2ohCiAGQQFqIQYMAAsLCyACQRBqIAUgCGsgCyAFQcDXhAEQlyEgAigCFCEJCyAEIQUMAgsgCSAHTQ0AIAkgB0GQ14QBEIcqAAsgBEECSQ0AIAlBf2pBAksNACAILQAAQcjZhAFqLQAAQccBSw0AIABBARChFiAAEIEnDAILAkACQCAAEOEUDQAgCUEBSw0BDAILIAlBBEsNACAJQQJJIANBgICAgHhHIAVBEUlxcg0BCwJAAkAgAQ0AIAAgCRCEEAwBCyAAIAkQoRYLIAAQgScgAiAAKAIIIgY2AjAgAiAAKAIAQYCAgIB4RyIJNgIsAkAgBkEBRw0AIAkNAQsgAkEANgJAIAJBLGogAkHAAGoQ9R4ACwJAAkAgABDhFA0AIAJBgYCAgHg2AjQMAQsgAkE0aiAAENELCyACQQU2AkQCQEEoRQ0AIAJBwABqQQhqQfDXhAFBKPwKAAALQQAhBgNAAkACQCAGQShGDQAgACgCAEGAgICAeEYNACAAKAIIIAJBwABqIAZqIglBDGooAgBLDQELIAJBCGogABDIIwJAIAIoAggiBkUNACAGQQRqIQogAigCDEEEdCEJA0AgCUUNAQJAAkACQCAGKAIIDgICAAELIAooAgAtAABByNmEAWotAABB+QFLDQELIAZBEGohBiAJQXBqIQkgCkEQaiEKDAELCyAAELMqCyACKAI0QYGAgIB4Rg0CAkAgACgCAEGAgICAeEYNACACIAAQ7REgAigCAEEBcUUNACACKAIEQQJNDQAgACgCCEHAAEsNACACQTRqEIAnDAMLIAAQgCcgAEEIaiACQTRqQQhqKAIANgIAIAAgAikCNDcCAAwCCyAJQQhqKAIAIQkCQAJAIAENACAAIAkQhBAMAQsgACAJEKEWIAAQ1AULIAZBCGohBgwACwsgAkHwAGokAAvMCgECfyMAQTBrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgBBgICAgHhzIgNBCyADQRJJGw4SAAECAwQFBgcICQoLDA0ODxARAAsgAiAAQQRqNgIIIAJBATYCFCACQby3nAE2AhAgAkIBNwIcIAJBiwU2AiwgAiACQShqNgIYIAIgAkEIajYCKCABKAIAIAEoAgQgAkEQahDIJiEBDBELIAIgAEEEajYCCCACQQE2AhQgAkG8t5wBNgIQIAJCATcCHCACQYwFNgIsIAIgAkEoajYCGCACIAJBCGo2AiggASgCACABKAIEIAJBEGoQyCYhAQwQCyACIABBBGo2AgggAkEBNgIUIAJBiL2bATYCECACQgE3AhwgAkGNBTYCLCACIAJBKGo2AhggAiACQQhqNgIoIAEoAgAgASgCBCACQRBqEMgmIQEMDwsgAkEANgIgIAJBATYCFCACQbC9mwE2AhAgAkIENwIYIAEoAgAgASgCBCACQRBqEMgmIQEMDgsgAkEANgIgIAJBATYCFCACQeC9mwE2AhAgAkIENwIYIAEoAgAgASgCBCACQRBqEMgmIQEMDQsgAkEANgIgIAJBATYCFCACQYi+mwE2AhAgAkIENwIYIAEoAgAgASgCBCACQRBqEMgmIQEMDAsgAiAAKAIENgIIIAJBAjYCFCACQbC+mwE2AhAgAkIBNwIcIAJBCzYCLCACIAJBKGo2AhggAiACQQhqNgIoIAEoAgAgASgCBCACQRBqEMgmIQEMCwsgAiAAKAIENgIIIAJBATYCFCACQdy+mwE2AhAgAkIBNwIcIAJBCzYCLCACIAJBKGo2AhggAiACQQhqNgIoIAEoAgAgASgCBCACQRBqEMgmIQEMCgsgAiAAKAIENgIIIAJBATYCFCACQfy+mwE2AhAgAkIBNwIcIAJBCzYCLCACIAJBKGo2AhggAiACQQhqNgIoIAEoAgAgASgCBCACQRBqEMgmIQEMCQsgAkEANgIgIAJBATYCFCACQbC/mwE2AhAgAkIENwIYIAEoAgAgASgCBCACQRBqEMgmIQEMCAsgAkEANgIgIAJBATYCFCACQdi/mwE2AhAgAkIENwIYIAEoAgAgASgCBCACQRBqEMgmIQEMBwsgAiAANgIIIAJBATYCFCACQYjAmwE2AhAgAkIBNwIcIAJB/gA2AiwgAiACQShqNgIYIAIgAkEIajYCKCABKAIAIAEoAgQgAkEQahDIJiEBDAYLIAJBADYCICACQQE2AhQgAkG0wJsBNgIQIAJCBDcCGCABKAIAIAEoAgQgAkEQahDIJiEBDAULIAJBADYCICACQQE2AhQgAkHgwJsBNgIQIAJCBDcCGCABKAIAIAEoAgQgAkEQahDIJiEBDAQLIAJBADYCICACQQE2AhQgAkGIwZsBNgIQIAJCBDcCGCABKAIAIAEoAgQgAkEQahDIJiEBDAMLIAJBADYCICACQQE2AhQgAkGgwZsBNgIQIAJCBDcCGCABKAIAIAEoAgQgAkEQahDIJiEBDAILIAIgAC0ACDoADCACIAAoAgQ2AgggAkEBNgIUIAJByMGbATYCECACQgE3AhwgAkGOBTYCLCACIAJBKGo2AhggAiACQQhqNgIoIAEoAgAgASgCBCACQRBqEMgmIQEMAQsgAiAAKAIENgIIIAJBATYCFCACQezBmwE2AhAgAkIBNwIcIAJBBTYCLCACIAJBKGo2AhggAiACQQhqNgIoIAEoAgAgASgCBCACQRBqEMgmIQELIAJBMGokACABC6oJAgR/AX4jAEEgayIDJAAgASgCHCEEIANBEGogAiABKAIYIgVBABCIAgJAAkAgAy0AEEEERg0AIAMpAxAiB0L/AYNCBFENACAAIAc3AgAMAQsCQAJAAkACQAJAAkACQAJAAkAgBUUNACADQRBqIAIgBRDbICADLQAQQQRGDQAgAykDECIHQv8Bg0IEUg0BCyABKAIgIgUoAgBBaGoOBAMCAgECCyAAIAc3AgAMBwsgBSgCCEEDRg0DCyADQRBqIAFBIGogAhDvKiADLQAQQQRHDQFBACEGDAQLQQAhBiADQRBqIAIgBUEEakEAEN4EIAMtABBBBEYNAyADKQMQIgdC/wGDQgRRDQMgACAHNwIADAQLQQAhBiADKQMQIgdC/wGDQgRSDQEMAgsgA0EQaiACIAVBEGpBARCfAQJAIAMtABBBBEcNACADLQARIQYMAgsCQCADKQMQIgdC/wGDQgRSDQAgB0KAAoNCCIinIQYMAgsgACAHNwIADAILIAAgBzcCAAwBCwJAAkACQAJAAkACQAJAAkACQCABKAIADgMBAgABCyADQRBqIAFBBGogAhD+CCADLQAQQQRGDQcgAykDECIHQv8Bg0IEUg0CDAcLIAEoAhAhBSAGQQFxRQ0FAkAgBUECSQ0AIANBEGogAiAFQX5qQQAQiAIgAy0AEEEERg0AIAMpAxAiB0L/AYNCBFINAwsgA0EANgIQIANBCGogAiADQRBqQdWLnAFBARCjDSADLQAIQQRGDQUgAykDCCIHQv8Bg0IEUQ0FIAAgBzcCAAwHCyABKAIQIQUgBkEBcUUNAwJAIAVBAkkNACADQRBqIAIgBUF+akEAEIgCIAMtABBBBEYNACADKQMQIgdC/wGDQgRSDQMLIANBADYCECADQQhqIAIgA0EQakHVi5wBQQEQow0gAy0ACEEERg0DIAMpAwgiB0L/AYNCBFENAyAAIAc3AgAMBgsgACAHNwIADAULIAAgBzcCAAwECyAAIAc3AgAMAwsCQAJAIAVFDQAgA0EQaiACIAVBf2pBABCIAiADLQAQQQRGDQAgAykDECIHQv8Bg0IEUg0BCyADQQA2AhAgA0EIaiACIANBEGpB1YucAUEBEKMNAkAgAy0ACEEERg0AIAMpAwgiB0L/AYNCBFENACAAIAc3AgAMBAsgA0EQaiABQQhqIAIQ9gggAy0AEEEERg0CIAMpAxAiB0L/AYNCBFENAiAAIAc3AgAMAwsgACAHNwIADAILAkACQCAFRQ0AIANBEGogAiAFQX9qQQAQiAIgAy0AEEEERg0AIAMpAxAiB0L/AYNCBFINAQsgA0EANgIQIANBCGogAiADQRBqQdWLnAFBARCjDQJAIAMtAAhBBEYNACADKQMIIgdC/wGDQgRRDQAgACAHNwIADAMLIANBEGogAUEIaiACELUXIAMtABBBBEYNASADKQMQIgdC/wGDQgRRDQEgACAHNwIADAILIAAgBzcCAAwBCwJAAkAgBEUNACADQRBqIAIgBBDbICADLQAQQQRGDQAgAykDECIHQv8Bg0IEUg0BCyAAQQQ6AAAMAQsgACAHNwIACyADQSBqJAALnAoBDX8jAEGQAWsiAyQAQQAhBAJAAkACQCACLQCRAUEgcUUNAAJAAkAgAigCiAEiBEGAIHENACACIARBgCByNgKIASADQQhqIAIQ9RQgAygCCCEFIAIgAigCiAFB/19xNgKIASADKAIMIQQMAQsgA0EQaiACEPUUIAMoAhQhBCADKAIQIQULIAVBAXENAQsgBCEGAkACQCACLQDYAUUNACACKALUASEEIAIoAtABIQUgA0EcaiACEJckIANBATYCfCADQby3nAE2AnggA0IBNwKEASADQY8FNgIsIANBADoAYCADIANBKGo2AoABIAMgA0HYAGo2AiggAyADQeAAajYCWCADQcAAaiADQfgAahDkDyADQdQAaiADQSRqKAIANgIAIAMgAykCHDcCTCAFIAQgA0HAAGoQlxkhBCACLQDYAUGiAUcNASACIAIQwCkQpxYMAQsgAhCUCyABKAIMIQcgASgCECEIAkACQCACKAKIASIEQYCAgAFxDQAgAiAEQYCAgAFyNgKIASADQfgAaiACIAgtAAAgBy0AABDAHCACIAIoAogBQf///35xNgKIAQwBCyADQfgAaiACIAgtAAAgBy0AABDAHAsgAygCfCEEIAMoAngiBUGAgICAeEYNACADIAMoAoABIgk2AjAgAyAENgIsIAMgBTYCKAJAAkAgAi0A2AFBAUYNACACKALUASEEIAIoAtABIQUgA0E0aiACEJckIANBATYCfCADQby3nAE2AnggA0IBNwKEASADQY8FNgJcIANBAToAZyADIANB2ABqNgKAASADIANB4ABqNgJYIAMgA0HnAGo2AmAgA0HAAGogA0H4AGoQ5A8gA0HUAGogA0E8aigCADYCACADIAMpAjQ3AkwgBSAEIANBwABqEJcZIQQgAi0A2AFBogFHDQEgAiACEMApEKcWDAELIAIQlAsCQAJAAkACQCACLQCRAUEgcUUNACACLQDYAUH/AXFBCUYNAQtBACEKDAELIANBCToAeCADIAIgA0H4AGoQlREgAygCBCEKIAMoAgBBAXENAQsgAyAKNgJAIANB+ABqIAIgCC0AACAHLQAAIAQgCRD8HRDTCyADKAJ8IQsCQCADKAJ4IgxBgYCAgHhHDQAgA0HAAGoQwyggCyEEDAILIANB6ABqQQhqIg0gA0H4AGpBEGoiDikCADcDACADIAMpAoABNwNoAkAgDEGAgICAeEcNACACLwGQAUGAwABxRQ0AIAlBBnQhBQNAIAVFDQECQCAEKAIAQQRHDQAgBEEQaigCACEJIARBDGooAgAhDyADQamBgIB4NgJ4IAIgDyAJIANB+ABqEKohCyAEQcAAaiEEIAVBQGohBQwACwsgA0GMAWogAUEIaigCADYCACADQfgAakEIaiIFIANBKGpBCGooAgA2AgAgAyADKQIoNwN4IAMgASkCADcChAEgASgCFCgCACEB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RQ0BIAYgB0F/aiIHNgIIQYCAgIB4IQggBigCBCAHQfAAbGoiB0EEaiEJIAcoAgAiCkGAgICAeGoOAgIBAwsgA0EANgKkASADQTRqQcy8hAEgA0GkAWpBgL2EARCPHwALIANBpAFqIAEQkg0gAEEcaiABKAIEIAEoAggQyRMgAEEWNgIAIAAgAykCpAE3AiggAEEwaiADQawBaikCADcCACAAQThqIANBpAFqQRBqKQIANwIADAQLAkBBJEUNACADQYABaiAJQST8CgAACwJAIAYoAggiBw0AQYGAgIB4IQogA0GBgICAeDYCpAEMAwsgBiAHQX9qIgc2AgggBigCBCAHQfAAbGohBwJAQfAARQ0AIANBpAFqIAdB8AD8CgAACyADKAKkASIKQYKAgIB4SA0CIANB2AJqIANBjAFqKQIANwMAIANB4AJqIANBlAFqKQIANwMAIANB6AJqIANBnAFqKQIANwMAIAMgAykChAE3A9ACIAdBBGohCSADKAKAASEIIAMtAJACIQYMAQsgBy0AbCEGCyADQYwBaiAJQQhqKQIANwIAIANBlAFqIAlBEGopAgA3AgAgA0GcAWogCUEYaikCADcCACADIAo2AoABIAMgCSkCADcChAECQEE8RQ0AIANBOGogB0EkakE8/AoAAAsgBSAGQQFxOgBkIAIgBSkCUDcCGCACQSBqIAVB2ABqIgYoAgA2AgAgARCACxogA0H8AGogBigCADYCACADIAUpAlA3AnQCQAJAIAhBgICAgHhGDQAgA0G4AmogA0HQAmpBCGopAwA3AgAgA0HAAmogA0HgAmooAgA2AgAgA0GsAmpBIGogAkEYaiIBQQhqKAIANgIAIAMgCDYCrAIgAyADKQPQAjcCsAIgAyABKQIANwLEAgJAQSRFDQAgA0GkAWogAkEk/AoAAAsgA0EgaiADQaQBahDfECADQawCaiADKAIgIAMoAiRB4LyEARD8HAJAAkACQAJAIAMoArQCDgICAQALIANBCGogA0GsAmoQmyJBCiEGIAMoAgwhAgwECyADQRhqIANBrAJqEJ4aAkAgAygCGCIGQQxGDQAgAygCHCECDAILQez5hwEQ+CkACyADQRBqIANBuAJqEP0cQQAhBiADKAIUIQILIANBrAJqEJMoDAELAkBBJEUNACADQaQBaiACQST8CgAACyADIANB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QQRqIQgMKAsgA0EQaiEHIANBDGohCAwnCyADQTRqIQcgA0EwaiEIDCYLIANBJGohByADQSBqIQgMJQsgA0EkaiEHIANBIGohCAwkCyADQRRqIQcgA0EQaiEIDCMLIANBIGohByADQRxqIQgMIgsgA0EYaiEHIANBFGohCAwhCyADQRRqIQcgA0EQaiEIDCALIANBFGohByADQRBqIQgMHwsgAygCCA4HFhcYGRobHBYLIANBIGohByADQRxqIQgMHQsgA0EQaiEHIANBDGohCAwcCyADQRhqIQcgA0EUaiEIDBsLIAMoAiAiCEEoaiEHIAhBJGohCAwaCyADQQhqIQcgA0EEaiEIDBkLIANBCGohByADQQRqIQgMGAsgA0EMaiEHIANBCGohCAwXCyADQQxqIQcgA0EIaiEIDBYLIANBHGohByADQRhqIQgMFQsgA0EsaiEHIANBKGohCAwUCyADQQhqIQcgA0EEaiEIDBMLIAMoAgQiCEEEaiEHDBILIANBFGohByADQRBqIQgMEQsgA0EQaiEHIANBDGohCAwQCyADQQxqIQcgA0EIaiEIDA8LIANBDGohByADQQhqIQgMDgsgA0EQaiEHIANBDGohCAwNCyADQRBqIQcgA0EMaiEIDAwLIANBEGohByADQQxqIQgMCwsgA0EUaiEHIANBEGohCAwKCyADQQxqIQcgA0EIaiEIDAkLIANBCGohByADQQRqIQgMCAsgA0EcaiEHIANBGGohCAwHCyADQRBqIQcgA0EMaiEIDAYLIANBEGohByADQQxqIQgMBQsgA0EUaiEHIANBEGohCAwECyADQRRqIQcgA0EQaiEIDAMLIANBJGohByADQSBqIQgMAgsgA0EkaiEHIANBIGohCAwBCyADQQhqIQcgA0EEaiEICyAIKAIAIQggAUEMaiAHKAIANgIAIAFBCGogCDYCACABQQRqIAM2AgAgAUESNgIAIAAgACgCCEEBajYCCCABQTBqIgEgBUcNAAtBAQv9CAIIfwV+IwBBEGsiAiQAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAA4JCQABAgMEBQcGCQsgAEEIaiABELUGDAgLIAAtACANByAAKAIYDQcCQCAAKAIMIgNFDQAgACgCCCEEIANB0ABsIQUDQEEIIQMCQAJAAkACQCAEKQMAIgpCfnwiC0IC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aiABKAIEIAUQ2xYgACADQThqIAggBBC8AwwGCyADQSBqIAEgBhCOGCADQSxqIAIgBhCOGCADQThqIANBIGogAygCMCIBIAMoAjQQvAMgAEEIaiADQThqQQhqKAIANgIAIAAgAykCODcCACADQRBqQQhqIANBzABqKAIANgIAIAMgAykCRDcDECADKAIsIAEQmiogAEEMaiEBAkAgAygCFCADQRBqIAMoAhBBgICAgHhGGygCCEUNACABIANBEGogB0UgBkEfcRDHBwwGCyABIANBEGoQxxsMBQsgA0EANgJIIANBATYCPCADQaDDggE2AjggA0IENwJAIANBOGpB2MOCARC1IQALIABBCGpBACgClKCcASIBNgIAIABBACkCjKCcASIJNwIAIAAgCTcCDCAAQRRqIAE2AgAMAwsgA0EANgJIIANBATYCPCADQaDDggE2AjggA0IENwJAIANBOGpBqMOCARC1IQsAC0HIw4IBEPgpAAsgA0HgAGokAAvYCAIJfwF+IwBBEGsiAiQAQQEhAwJAAkACQAJAAkACQAJAAkAgASgCAA4KAwcBBwUHAgcHAAcLQQEhAyABKAIIQRFHDQZBASEDIAEoAhBBB0cNBkEBIQMgASgCFC0ARUEDRg0GIAEgACgCDBCTC0EBIQMMBgsgAS0AIEUNBEEAIQMMBQsgASgCBCIBLQBBRQ0BQQAhAwwEC0EBIQMgAS0AIA0DQQEhAyABKAIMIgRFDQMgASgCCCEDIAAoAgghBSAAKAIEIQZBACEHAkACQANAIAdBAWohCCAGIAUgAxDHBkUNASADQcgAaiEDIAghByAEIAhHDQALQQAhBwwBCyADENgJAkAgCCAERw0AQQEhBwwBCyADQcgAaiEDIAdBf3MgBGohCEEBIQcDQAJAAkAgBiAFIAMQxwYNACADENgJIAdBAWohBwwBC0HIAEUNACADIAdBuH9saiADQcgA/AoAAAsgA0HIAGohAyAIQX9qIggNAAsLIAEgBCAHazYCDCAAKAIALQAAIAQgB0dyIQMMAwtBASEDIAEtAEANAiAAKAIEIQMgAiABQShqEKkcIAMgAhClDCEDIAIpAwAiC0IDg0IAUg0CIAunIgEgASgCACIIQX9qNgIAIAhBAUcNAiABIAEoAhAQjyIMAgtBASEDIAEoAgQiASgCAEEaRw0BIAAoAggh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KAIIEMkTIABBBDYCBCAAIAIpAzg3AiwgAEE0aiADKQMANwIAIABBPGogAkHIAGopAwA3AgAgAEGJgMQANgIADAQLIAEQzg8iBkHeAEYNAQwCCyACQQA2AjggAkEEakHAvYQBIAJBOGpBnMiEARCPHwALIAEQnCINACACQcwAaiAFQQhqKAIANgIAIAJBOGpBCGoiAyACQQhqQQhqKAIANgIAIAIgAikDCDcDOCACIAUpAgA3AkQgAEEgaiABKAIEIAEoAggQyRMgAEEENgIEIAAgAikDODcCLCAAQTRqIAMpAwA3AgAgAEE8aiACQcgAaikDADcCACAAQYmAxAA2AgAMAQsgAkE0aiAFQQhqKAIAIgM2AgAgAkEoaiADNgIAIAJBADYCHCACQoCAgIDAADcCFCACIAUpAgAiCDcCLCACIAg3AiAgAkE4akEIaiEDIAJBIGohBAJAAkADQCABEM4PQS1HDQEgAyABEJINIAJBADoAWCACQoGAxIDQBTcCOCACQRRqIAJBOGoQqxIgARCcIg0ACyACQThqQQhqIgMgAkEIakEIaigCACIFNgIAIAJBzABqIAU2AgAgAiACKQMIIgg3AzggAiAINwJEIABBIGogASgCBCABKAIIEMkTIABBBDYCBCAAIAIpAzg3AiwgAEE0aiADKQMANwIAIABBPGogAkHIAGopAwA3AgAMAQsCQCACKAIcDQAgARDOD0HdAEcNACACQThqQQhqIgMgARCSDSACQQA6AFggAkKBgMSA0As3AjggAkEUaiACQThqEKsSIAEQnCINACACQcwAaiAFQQhqKAIANgIAIAMgAkEIakEIaigCADYCACACIAIpAwg3AzggAiAFKQIANwJEIABBIGogASgCBCABKAIIEMkTIABBBDYCBCAAIAIpAzg3AiwgAEE0aiADKQMANwIAIABBPGogAkHIAGopAwA3AgAMAQsgAkGQAWpBFGogBUEIaigCADYCACACQZABakEIaiIBIAJBCGpBCGooAgA2AgAgAkGoAWpBCGoiAyAEQQhqKAIAIgc2AgAgAkGoAWpBFGogBzYCACACIAIpAwg3A5ABIAIgBSkCADcCnAEgAiAEKQIAIgg3A6gBIAIgCDcCtAECQEEkRQ0AIABB9ABqIAJBFGpBJPwKAAALIABCBDcCCCAAQoeAxAA3AgAgACAGQd4A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KQMANwMAIAQgAkHYAGpBIGoiCikDADcDACACIAw3AzAgAiAAIAJBMGpBARBcIAFBCGohAAJAAkACQCACKAIAQW1qIgtBAiALQQJJGw4DAAECAAsgASkDACEMIAFBCTYCACACQdgAakEwaiABQTBqKQMANwMAIAJB2ABqQShqIAQpAwA3AwAgCiAFKQMANwMAIAkgBikDADcDACAIIAMpAwA3AwAgByAAKQMANwMAIANBADYCACAAQgE3AwAgAiAMNwNYAkAgDKdBCUYNACACQdgAahCcBQwDCyACQeAAahDrAwwCCyAAEIUFIABBIGogAkEoaikDADcDACAAQRhqIAJBIGopAwA3AwAgAEEQaiACQRhqKQMANwMAIABBCGogAkEQaikDADcDACAAIAIpAwg3AwAMAQsgAkHYAGpBLGogAkEoaikDADcCACACQdgAakEkaiACQSBqKQMANwIAIAJB2ABqQRxqIAJBGGopAwA3AgAgAkHYAGpBFGogAkEQaikDADcCACACQdgAakEMaiACQQhqKQMANwIAIAIgAikDADcCXCABEJwFIAFBCTYCACABIAIpAlg3AgQgAUEMaiAHKQIANwIAIAFBFGogCCkCADcCACABQRxqIAkpAgA3AgAgAUEkaiAKKQIANwIAIAFBLGogAkHYAGpBKGopAgA3AgAgAUE0aiACQYgBaigCADYCAAsgAkGQAWokAAuWCQIJfwF+IwBBIGsiAyQAIAEoAnghBEEBIQUgASABKAJoIgZBAWoiBzYCaCABKAJsIQgCQCAGLAAAIglBf0oNACABIAZBAmoiBzYCaCAGLQABQT9xIQogCUEfcSELAkACQCAJQWBPDQAgC0EGdCAKciEGDAELIAEgBkEDaiIHNgJoIApBBnQgBi0AAkE/cXIhCgJAIAlBcE8NACAKIAtBDHRyIQYMAQsgASAGQQRqIgc2AmggCkEGdCAGLQADQT9xciALQRJ0QYCA8ABxciEGCyAGQYABSQ0AQQIhBSAGQYAQSQ0AQQNBBCAGQYCABEkbIQULIAEgBSAEaiILNgJ4AkACQAJAAkAgCCAHRg0AIAggB2shCUEAIQgDQAJAIAgiBiAJIAZBIGoiCiAJIApJGyIITw0AAkADQCAHIAZqLQAAIgVBgJCaAWotAAANASAIIAZBAWoiBkYNAgwACwsgBcAhCAJA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AygCAEEBcQ0BCwJAIAIQnR4NACACKALUASEFIAIoAtABIQYgA0H1gICAeDYCCCACIAYgBSADQQhqEKohCwJAAkAgASgCLCgCAA0AIAEoAgBBBUYNASACKALMASEHIAEoAhwhCCABKAIYIQkgASgCFCEKIAEoAhAhCyABKAIMIQYgASgCPCIMLQAAIQUgASgCMCgCACENIARFDQggBUEBcQ0EDAgLIAAgASkDIDcDMCAAQThqIAFBKGooAgA2AgAgASgCMCgCACEFIAIoAswBIQIgASgCVCEGIAEoAjQtAAAhDCABKAI8LQAAIQcgASgCQC0AACENIAEoAkQtAAAhCCABKAI4LQAAIQkgAEEMNgIAIANBJGogAUEYaikCADcCACADQRxqIAFBEGopAgA3AgAgA0EIakEMaiABQQhqKQIANwIAIAMgASkCADcCDAJAQSRFDQAgAEEEaiADQQhqQST8CgAACyAAIAk6AEggACAIOgBHIAAgDToARiAAIAc6AEUgACAMOgBEIAAgBjYCQCAAIAQ2AjwgACACNgIsIAAgBTYCKAwJC0EIIQ4gAUEIaiEFQQMhDCABKAIwIQggASgCFCEGIAEoAjgiBy0AAEEDRw0BDAULIABBDTYCACAAIAQ2AgQgASgCAEEFRg0CIAEQuBsMAwsgCCgCACEMIANBtYGAgHg2AgggAiAMIAYgDCAGSRsgDCAGIAwgBksbIANBCGoQqiEgBy0AACEMDAMLIANBooGAgHg2AgggAiANIAcgA0EIahCqISAMLQAAIQUMAwsgASkDCBCfHwsgAUHUAGoQyyggAUEgahDKJQwDCyADQRRqIAVBCGooAgA2AgAgAyAFKQIANwIMIAEoAlQhDSABKQIkIRogASgCICEHIAIoAswBIQogCCgCACELIAEoAkQtAAAhDyABKAJALQAAIRAgASgCSC0AACERIAEoAjQtAAAhEkEAIQkgBCEIIAEoAkwtAAAhBAwBCyABKAJUIQIgAS0AKyEQIAEtACohESABLQApIRIgAS0AKCEMIAEpAyAhGiABKAJELQAAIRMgASgCUC0AACEUIAEoAkwtAAAhFSABKAJALQAAIRYgASgCSC0AACEXIAEoAjgtAAAhGCABKAI0LQAAIRkgA0EUaiABQQhqKAIANgIAIAMgASkCADcCDCAEQRB2IQEgBEEIdiEP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KkkbIARrIgQgA00NAiAAIAQQ4R9BgYCAgHhHDQIMAwsgCiACKAIIQbTqmgEQwSYLAAsgACADELQoCyACIAEoAjw2AgggAiABKAJAIgM2AgAgAiADNgIEIAIgAyABKAJEIgVBBHRqIgQ2AgwCQCAFRQ0AA0AgACADKQMAIANBCGooAgBBARCkDCADQRBqIgMgBEcNAAsgAiAENgIECyACEPUSCyACQThqIgUgAUE4aigCADYCACACQTBqIgYgAUEwaikCADcDACACQShqIgsgAUEoaikCADcDACACQSBqIgwgAUEgaikCADcDACACQRhqIgogAUEYaikCADcDACACQRBqIgggAUEQaikCADcDACACQQhqIgkgAUEIaikCADcDACACIAEpAgA3AwACQCAAKAI0IgQgACgCLEcNACAAQSxqEPUbCyAAKAIwIARBPGxqIgMgAikDADcCACADQThqIAUoAgA2AgAgA0EwaiAGKQMANwIAIANBKGogCykDADcCACADQSBqIAwpAwA3AgAgA0EYaiAKKQMANwIAIANBEGogCCkDADcCACADQQhqIAkpAwA3AgAgACAEQQFqNgI0AkAgBw0AIAEoAkAgASgCRBCXFyABKAI8IAEoAkAQ2CoLIAJBwABqJAAL+ggCD38CfiMAQaADayICJAAgAkEIQQhBKEGY2JsBEOIYIAIgAigCBCIDNgIQIAIgAigCADYCDCABQdABaiEEIAJB6ABqQQhqIQUgAkHAAGpBCGohBiACQfwBaiEHIAJB6ABqQQRyIQggAkHAAGpBBHIhCUEAIQpBACELAkADQCACIAs2AhQCQCABKAJ4IAEoAtABIgxGDQAgASAMNgJ4IAEgASgCcCINIAEoAnRqNgJsIAEgDSAMIAEoAnxrajYCaAsgAkHoAGogARCpAiAEQQhqIg0gBSgCADYCACAEIAIpAmg3AgACQAJAAkACQAJAAkACQAJAIAEtANgBIgxBAkYNACAMQRJGDQIgDEE8Rg0JIAxBygBGDQMgDEGjAUYNAUGEpJwBQShB9NebARDHHAALAkACQCABKAKIASIMQYCABnEiDUUNACABIAxB//95cTYCiAEgAkHoAGogARCvBCABIAEoAogBIA1yNgKIAQwBCyACQegAaiABEK8ECyACKAJsIQwgAigCaCINQQVGDQYgBiAFKQMANwMA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NwIcIANB0ABqIQUgAkEoaiEGAkACQAJAA0ACQAJAIAEQzg9BOkYNACABEM4PQSlHDQELAkAgBEEBcUUNACAAQRxqIAEoAgQgASgCCBDJEyAAQQw2AgAgACACKQI0NwIoIABBMGogAkE8aikCADcCACAAQThqIAJBxABqKQIANwIADAQLIAYgBSkCADcCACAGQQhqIAVBCGooAgA2AgACQEEkRQ0AIABBBGogAkEQakEk/AoAAAsgAEEiNgIADAQLAkACQAJAIAEQzg9BLUYiBA0AIAJByAFqIAEQkg0gAkGIAWogARD5CiACLQCMASEDIAIoAogBIgdBIkYNAQJAQTtFDQAgAEEFaiACQYgBakEFakE7/AoAAAsgACADOgAEIAAgBzYCAAwFCyACQTRqIAEQkg0gAkHMAGogARCSDSACQQc6AGQgAiACQRBqIAJBzABqEIwLIAIoAgBBAXENAwwBCyACQegAakEIaiACQcgBakEIaikCADcDACACQegAakEQaiACQcgBakEQaikCADcDACACIAIpAsgBNwNoIAIgAzoAgAEgAkEIaiACQRBqIAJB6ABqEIwLIAIoAghBAXFFDQAgAigCDCEEIAJByAFqIAEQkg0gAkGIAWpBEGoiAyACKAIUIAIoAhggBEGEw4QBEJsjIgRBEGopAgA3AwAgAkGIAWpBCGoiByAEQQhqKQIANwMAIAIgBCkCADcDiAEgAEEcaiABKAIEIAEoAggQyRMgAEENNgIAIAAgAikDiAE3AgQgAEEMaiAHKQMANwIAIABBFGogAykDADcCACAAIAIpAsgBNwIoIABBMGogAkHIAWpBCGopAgA3AgAgAEE4aiACQcgBakEQaikCADcCAAwDCyABEIALDQALIAJBnAFqIAVBCGooAgAiBDYCACACQYgBakEIaiIDIAQ2AgAgAiAFKQIAIgg3ApQBIAIgCDcDiAEgAEEcaiABKAIEIAEoAggQyRMgAEEPNgIAIAAgAikDiAE3AiggAEEwaiADKQMANwIAIABBOGogAkGYAWopAwA3AgAMAQsgAigCBCEEIAJByAFqIAEQkg0gAkGIAWpBEGoiAyACKAIUIAIoAhggBEH0woQBEJsjIgRBEGopAgA3AwAgAkGIAWpBCGoiByAEQQhqKQIANwMAIAIgBCkCADcDiAEgAEEcaiABKAIEIAEoAggQyRMgAEEONgIAIAAgAikDiAE3AgQgAEEMaiAHKQMANwIAIABBFGogAykDADcCACAAIAIpAsgBNwIoIABBMGogAkHIAWpBCGopAgA3AgAgAEE4aiACQcgBakEQaikCADcCAAsgAigCECACKAIUEJwqCyACQeABaiQAC7MJAgh/An4jAEGgC2siAyQAIANBAzYCMCADQQA7ADUgA0EAOgAeIANBADoAKiADQQE6ACAgA0KCgICAMDcCFCADQQM2AiQgA0EBOgA0IANBADoAOSADQYACOwEsIANBATsBKCADQQE7ARwgA0ECQQEgAkH1A0kbIgQ6ADggA0GgA2ogA0EUakEcaiABIAIQpAICQAJAAkACQCADKAKgA0EBRw0AIANBEGogA0G+A2ovAQA7AQAgAyADKQG2AzcDCCADLQC1AyEBIAMtALQDIQQgAygCsAMhBSADKAKsAyECIAMoAqgDIQYMAQsgA0HICGoiASADQb4Dai8BADsBACADIAMpAbYDNwPACCADKQKkAyELIAMpAqwDIQwgAy8BtAMhBQJAQcgCRQ0AIANBPGpBHGogA0HAA2pByAL8CgAACyADQdYAaiABLwEAOwEAIAMgBTsBTCADIAw3AkQgAyALNwI8IAMgAykDwAg3AU4CQAJAAkACQAJAIAJB9QNJDQAgA0GgA2pBAkEBIANBPGoQnQECQCADKAKgAyIBQYCAgIB4Rw0AIANBEGogA0G+A2ovAQA7AQAgAyADKQG2AzcDCAwFCyADQcAIakEIaiICIANBvgNqLwEAOwEAIAMgAykBtgM3A8AIIAMtALUDIQUgAy0AtAMhBiADKAKwAyEHIAMoAqwDIQggAygCqAMhCSADKAKkAyEKAkBBqAJFDQAgA0GIBmogA0HAA2pBqAL8CgAACyADQbAIakEIaiACLwEAOwEAIAMgAykDwAg3A7AIQQAtAODnngEaQdACEHwiAkUNASACIAU6AB0gAiAGOgAcIAIgBzYCGCACIAg2AhQgAiAJNgIQIAIgCjYCDCACIAE2AgggAkKBgICAEDcCACACIAMpA7AINwEeIAJBJmogA0G4CGovAQA7AQACQEGoAkUNACACQShqIANBiAZqQagC/AoAAAtB1LKDASEFDAMLIANBoANqQQBBASADQTxqEJMBIAMoAqADDQEgA0HACGpBCGoiAiAD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IAJBvwFqNgK4ASACQaABaiACQTBqELQZIAJBtAFqIAJBnAFqKAIANgIAIAIgAikClAE3AqwBIAQgAyACQaABahCXGSEDIAEtANgBQaIBRg0IDAoLIAtBGGogA0EgaikCADcCACALQRBqIANBGGopAgA3AgAgC0EIaiADQRBqKQIANwIAIAsgA0EIaikCADcCAAwDCyACQfAAakEYaiAEQRhqKAIANgIAIAJB8ABqQRBqIARBEGopAgA3AwAgAkHwAGpBCGogBEEIaikCADcDACACIAQpAgA3A3AMAgsgAkHwAGpBEGogBEEQaikCADcDACACQfAAakEIaiAEQQhqKQIANwMAIAIgBCkCADcDcAwBCyACQfAAakEYaiAEQRhqKAIANgIAIAJB8ABqQRBqIARBEGopAgA3AwAgAkHwAGpBCGogBEEIaikCADcDACACIAQpAgA3A3ALAkAgBiACKAIURw0AIAJBFGoQ6xsgAigCGCEHCyAHIA1qIgNBfGogBTYCAAJAQSRFDQAgAyACQfAAakEk/AoAAAsgAiAGQQFqIgY2AhwgChDKJQJAIAIoAjBBBEkNACACQTBqEKgWCyAIQUBqIQggDUEoaiENIA4hAwwACwsgAiAONgIkIAJBoAFqQQRyIAEQlyQgAkHXADYCtAEgAkHE0JsBNgKwASACQbCAgIB4NgKgASABKALQASABKALUASACQaABahCXGSEDIAEtANgBQaIBRw0CIAEgARDAKRCnFgwCCyABEJQLIABBCGogAkEUakEIaigCADYCACAAIAIpAhQ3AgAMBAsgASABEMApEKcWDAELIABBgICAgHg2AgAgACADNgIEIAoQyiUgAkEwahCoFiACQSBqEK0cDAELIABBgICAgHg2AgAgACADNgIECyACQRRqEKgoCyACQcABaiQAC9cIAQR/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgBBdGoiAkEHIAJBJkkbDiYAASIhIB8eHRwbGhkYFyMWFRQTEhEQDw4NIyMMCwoJCAcGBQQDAgALIAFBADoABA8LIAEtAARBAUcNISABIAAoAgwiAyABKAIAakECajYCACADRQ0hIANBBHQhAiAAKAIIIgQhAANA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IANBIGogAkHgAGoQ3w4LIAMoAmggAkHgAGoQ3w4CQCADKAJIQYCAgIB4Rg0AIAJB4ABqIANByABqEPMNCyACQeAAahCjCiAHEL4KDAILAkAgAygCCEEDRw0AIAItADkhBCACQQE6ADkgAygCDCACENkBIAIgBDoAOQsgAygCKCEDIAIoAjAQpxUhBCAJIA03AgAgCUEIaiAMNwIAIAJBoAFqQQhqIAw3AwAgCCAGKQIANwIAIAhBCGogBkEIaigCADYCACACQeAAakEIaiAMNwMAIAcgCSkDADcDACACQeAAakEYaiACQaABakEYaikDADcDACACIA03A6ABIAIgDTcDYCACLQA4IQogAiACKAE6NgGaASACQQE6AJkBIAJBAToAiAEgAiAENgKEASACIAo6AJgBIAIgAjYCgAEgAkHgAGogAxDVBCACQeAAahCjCiAHEL4KDAELIAIgAxDBJAsgAUEMaiEBIABBdGoiAA0ACwsgAhCjCiAFEL4KIAJBwAFqJAALzAgBAn8CQAJAA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACICQXRqIgNBByADQSZJGw4mGgABAgMEBQYHCAkKCwwNGg4PEBESGhMTFBoaFRYXFxcXFxcaGRoaCyAAKAIMIgNFDRkgACgCCCEAIANBBHQhAwNAAkAgACgCAEECRg0AIABBDGooAgAgARC6AwsgAEEQaiEAIANBcGoiAw0ADBoLCyAAKAIMIgNFDRggACgCCCEAIANBDGwhAwNAAkACQCAAKAIAIgINACAAQQRqKAIAIAEQhgsMAQsgAiABELoDCyAAQQxqIQAgA0F0aiIDDQAMGQsLAkAgAC0AHEECRg0AIABBADYCGAsgACgCICABEIUNDwsgACgCBCEADBQLIAAoAgwhAAwTCyAAKAIEIAEQugMgACgCCCEADBILAkACQCACQQtHDQAgAEEIaiEDAkACQCAAKAIEDgMAAQMACyADIAEQgRsgACgCOCEADBQLIAMgARCLHiAAKAI4IQAMEwsgACABEJwPCyAAKAI4IQAMEQsgACgCKCABELoDIAAoAghBAkkNEiAAQQxqIAEQ8isPCyAAKAIIQQFHDREgAEEMaiABEPIrDwsgACgCBCABELoDIAAoAgggARC6AyAA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Rg0FIAENBiACQYAEOwEyIAJCADcBKiACQdzgADsBKAwHCyACQYAEOwEyIAJCADcBKiACQdzoATsBKAwGCyACQYAEOwEyIAJCADcBKiACQdzkATsBKAwFCyACQYAEOwEyIAJCADcBKiACQdzcATsBKAwECyACQYAEOwEyIAJCADcBKiACQdy4ATsBKAwDCyACQYAEOwEyIAJCADcBKiACQdzEADsBKAwCCyACQYAEOwEyIAJCADcBKiACQdzOADsBKAwBCwJAIAFB/wVNDQAgARD2B0UNACACQThqIAEQ6QogAkEoakEIaiACQThqQQhqKAAANgIAIAIgAikAODcDKAwBCwJAIAEQwgwNACACQThqIAEQ6QogAkEoakEIaiACQThqQQhqKAAANgIAIAIgAikAODcDKAwBCyACIAE2AiwgAkGAAToAKAsgAkHuATYCJCACQQE2AjwgAkG8t5wBNgI4IAJCATcCRCACIAJBKGo2AiAgAiACQSBqNgJAIAUgBCACQThqEMgmRQ0ACwtBASEBCyACQdAAaiQAIAELtQgCBX8DfiMAQfAAayICJAAgASgC0AEhAwJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLQDYASIEQbV/aiIFQR9LDQBBASAFdEGBgIKQeHENAQsCQAJAAkAgBEFAag4DBgABAgsgAkHYAGogARDOECACKQNgIgdCgICAgHCDIQggAikDWCEJIAenIQUgASgCzAEhAUECIQYMBgsgAkHYAGogARDPECACKQNgIQkgAigCWCEFIAEoAswBIQFBBCEGQgAhCAwFCyAEQbR/akH/AXFB1QBJDQAgBEEERg0CIAJB2ABqQQRyIAEQlyQgAkHFADYCbCACQZDUmwE2AmggAkGwgICAeDYCWCABKALQASABKALUASACQdgAahCXGSEDIAEtANgBQaIBRg0BDAkLIAEQ8B8hCCABNQLMAUIghiADrYQhCSAIQiCIpyEBIAinIQNBACEGQgAhCAwGCyABIAEQwCkQpxYMBwsgARCUCyABKALQASEGIAJBCGogARCQEyACKAIMIQQCQCACKAIIQQFxDQAgAiAENgIUIAEtANgBIQUgAS0AkQFBIHFFDQQgBUH/AXFBB0cNBEEEQQQQyiciBSAENgIAIAJBATYCICACIAU2AhwgAkEBNgIYA0ACQCABLQDY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ACgCECICRQ0AIAJBxOOXAUEQEP8FDQILQQAhAiAAQQA6AAQLIAAgAjYCAAwCC0EBIQIMAQtBACECCyABQTBqJAAgAgvrBwIHfwF+IwBB8ABrIgMkACADQQhqIAEoAgAiBEHAAGpBqMaEARC4ISADKAIMIQUgAygCCCIGQQA2AgggA0EQakEIaiAEQdgAaigCADYCACADIAQpAlA3AxAgA0HAAGogARCSDSADQSBqQQhqIANB1ABqKAIANgIAIAMgAykCTDcDICAEQdAAaiEEAkACQANAIAEQnCJFDQEgARDOD0H9AEYNAQJAIAEQzg8QtyANACADQcAAaiABEJINIABBHGogASgCBCABKAIIEMkTIABBCTYCACAAIAMpAkA3AiggAEEwaiADQcgAaikCADcCACAAQThqIANB0ABqKQIANwIADAMLIAYgARDODxDAFgwACwsCQAJAAkACQCAEKAIAIgcgASgCCCIIRg0AIANBMGpBCGogBEEIaigCADYCACADIAQpAgA3AzAgBigCBCEJIAYoAgghBiADIAEQzg8iBzYCPCAHQf0ARw0BIAEQnCIaIAZFDQIgA0HAAGogCSAGQRAQlgggAy0AQA0DIAMoAkQiBkGAsANzQYCAvH9qQYCQvH9JDQMgBkGAgMQARg0DIANB2ABqQQhqIgEgA0EgakEIaigCADYCACADQewAaiAEQQhqKAIANgIAIAAgBjYCBCAAIAMpAyAiCjcCCCAAIAI6ACEgAEEFOgAgIAMgBCkCADcCZCAAQRBqIAEpAwA3AgAgAEEYaiADQdgAakEQaikDADcCACADIAo3A1ggAEEiNgIADAQLIANB1ABqIARBCGooAgA2AgAgA0HAAGpBCGoiBiADQRBqQQhqKAIANgIAIAMgAykDEDcDQCADIAQpAgA3AkwgAEEcaiABKAIEIAcQyRMgAEEKNgIAIAAgAykDQDcCKCAAQTBqIAYpAwA3AgAgAEE4aiADQdAAaikDADcCAAwDCyADQQA2AkAgA0E8akG4xoQBIANBwABqQbzGhAEQjx8ACyADQdQAaiAEQQhqKAIANgIAIANBwABqQQhqIgYgA0EQakEIaigCADYCACADIAMpAxA3A0AgAyAEKQIANwJMIABBHGogASgCBCAIEMkTIABBBzYCACAAIAMpA0A3AiggAEEwaiAGKQMANwIA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AkUNACABQQhqIAIRAwACQCAAKAIEIgQoAgAiBSgCACIDRQ0AIAMgAygCACIAQX9qNgIAAkAgAEEBRw0AIAUoAgAQxRILIAUoAgQiBigC8AUhAAJAIAYoAvQFIgMoAgAiAkUNACAAIAIRAwALAkAgAygCBCICRQ0AIAAgAiADKAIIENIVCyAGQYQGaigCACEHIAZBgAZqKAIAIQhBACEJAkADQCAJIAdGDQEgCCAJQQZ0aiIDQQRqIQogA0EMaigCACEAIANBCGooAgAhAgJAA0AgAEUNASACKAIAIgMoAhQiCyALKAIAIgtBf2o2AgACQCALQQFHDQAgAygCFBDsEQsgAygCCCADQQxqKAIAEKEqAkAgAygC6AQiC0GAgICAeEYNACALIANB7ARqKAIAEMAqIANB9ARqEMkoIANBpAVqEMkoCwJAIAMoAtQFIgtBgICAgHhGDQAgCyADQdgFaigCABDAKiADKALgBSADQeQFaigCABCxKgsCQCADKALYBCILQYCAgIB4Rg0AIAsgA0HcBGooAgAQoSoLAkAgAygCyARBAkYNACADQdgBahCzESADQZgDahCzEQsCQCADKALIAUECRg0AIANBGGoQsxELIANB8AVBCBDSFSAAQX9qIQAgAkEEaiECDAALCyAKKAIAIApBBGooAgBBBEEEEM8UIAlBAWohCQwACwsgBigC/AUgBkGABmooAgBBwABBwAAQzxQCQCAGKAIAQQJGDQAgBigCFCIDIAMoAgAiA0F/ajYCAAJAIANBAUcNACAGKAIUEOwRCyAGKAIIIAZBDGooAgAQoSoCQCAGKALoBCIDQYCAgIB4Rg0AIAMgBkHsBGooAgAQwCogBkH0BGoQySggBkGkBWoQySgLAkAgBigC1AUiA0GAgICAeEYNACADIAZB2AVqKAIAEMAqIAYoAuAFIAZB5AVqKAIAELEqCwJAIAYoAtgEIgNBgICAgHhGDQAgAyAGQdwEaigCABChKgsCQCAGKALIBEECRg0AIAZB2AFqELcRIAZBmANqELcRCyAGKALIAUECRg0AIAZBGGoQtxELIAZBiAZBCBDSFSAFKAIIIgMgAygCACIDQX9qNgIAIANBAUcNACAFKAIIIAVBDGooAgAQ9xwLIAQoAgAiAyABKQIINwIAIANBCGogAUEIakEIaikCADcCACABQSBqJABB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AGpBmNqbARDjGwsgAygCSCAQQQV0aiIJIAU2AgAgCSADKQN4NwIEIAkgBjoAGCAJIAMoAnA2ABkgCUEMaiAPKQMANwIAIAlBFGogDigCADYCACAJQRxqIAMoAHM2AAAgCEEEaiEIIBBBAWohCQwBCwsgA0HEAGoQyyULIANBHGoQyCVBgICAgHghCQwBCyADQRBqQQhqIgYgA0HEAGpBCGooAgA2AgAgAyADKQJENwMQIAMoAiAhBSADKAIcIglBgICAgHhGDQAgACADKQMQNwIMIABBFGogBigCADYCACAAIAQ2AhggACAHNgIIIAAgASgCzAE2AhwLIAAgCTYCACAAIAU2AgQgA0GQAWokAA8LAAuIBwEDfwJAAkACQANAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAA4TAA8PAQIDDw8EBRAODAsKCQgHBgALIAAoAgwiAkUNDiAAKAIIIQAgAkEwbCECA0AgACABEJkEIABBMGohACACQVBqIgINAAwPCwsgASAAKAIEEKcBIAAoAgghAAwLCyAAKAIMIgBFDQwgASAAEKcBDwsgACgCKCEADAkLIAEgACgCBBCnASAAKAIIIAEQmQQgACgCFCIADQgMCgsgASAAKAIQEKcBIAAoAgwiAkUNCSAAKAIIIgMgAkEYbGohBANAAkAgAygCFCIARQ0AIAEgABCnAQsCQCADQQhqKAIAIgJFDQAgA0EEaigCACEAIAJBMGwhAgNAIAAgARCZBCAAQTBqIQAgAkFQaiICDQALCyADQRhqIgMgBEYNCgwACwsgAS0ADCECIAFBAToADCABIAAoAgQQpwEgASACOgAMDAgLIABBCGogARCVBw8LIAAoAgghAgJAAkACQAJAIAAoAgQOAwABAgALIAIgARCuGQwCCyACIAEQrxkMAQsgAiABEJAOCyABIAAoAgwQpwEgACgCECEADAQLIAAoAgghAgJAAkACQAJAIAAoAgQOAwABAgALIAIgARCuGQwCCyACIAEQrxkMAQsgAiABEJAOCyABIAAoAgwQpwEgACgCECEADAMLAkAgACgCBCICQQJGDQAgACgCCCEDAkAgAkEBcUUNACABIAMQpwEMAQsgAyABEK4ZCwJAIAAoAhgiAkUNACABIAIQpwELAkAgACgCHCICRQ0AIAEgAhCnAQsgACgCDCEA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ABCjBUEJQQcgBigCGEEBcRshByAGKAIcIQEMBQtBCSEHIAEoAoABEKshIQEMBAsgBkEgaiABIAIQ/AVBCUEHIAYoAiBBAXEbIQcgBigCJCEBDAMLIAZBKGogASACQQEQowVBCUEHIAYoAihBAXEbIQcgBigCLCEBDAILIABBCDYCACAGKQNAEJ8fDAILIAZBMGogASACEMsJQQlBBSAGKAIwQQFxGyEHIAYoAjQhAQsgACAHNgIAIAAgATYCBCAGKQNAEJ8fCyADEMolCyAGQfAAaiQAC/IGAQt/IwBB0ABrIgMkACADIAIoAiA2AiAgAi0APCEEIAItAD4hBSACKAIwIQYgA0EwaiACQSxqKAIANgIAIAMgAikCJDcDKCACLQA/IQcgAi0AQCEIIAItAD0hCSADIAItAEE6ACYgAyACLQBCOgAnIAEoAogBIQogAyADQSdqNgI8IAMgA0EmajYCOCADIANBIGo2AjQCQAJAIApBgICAEHENACABIApBgICAEHI2AogBIANBEGogA0EoaiABEP8NIAMoAhAhCyABIAEoAogBQf///29xNgKIASADKAIUIQoMAQsgA0EYaiADQShqIAEQ/w0gAygCHCEKIAMoAhghCwsCQAJAIAtBAXFFDQAgAEENNgIAIAAgCjYCBCACENAkDAELAkACQAJAAkAgCQ4DAwABAwsgAS0AkQFBIHFFDQIgAS0AkgFB/wFxDQIMAQsgAS0AkQFBIHFFDQEgAS0AkgFB/wFxDQELIANBCGogAhCrHyADKAIMIQsgAygCCCEMIANBgIGAgHg2AiggASAMIAsgA0EoahCqIQsCQAJAAkAgAigCAEEFRg0AIAEoAswBIQsgAygCICEMIAVBAXENAQwCCyACQQhqIQsgASgCzAEhDSACKAIUIQIgAygCICEMAkAgBEH/AXFBA0YNACADQbWBgIB4NgIoIAEgDCACIAwgAkkbIAwgAiAMIAJLGyADQShqEKohCyADQShqQQxqIAtBCGooAgA2AgAgAEEGNgIAIAAgCDoAKSAAIAc6ACggACAFOgAnIAAgCToAJSAAIAQ6ACQgACAKNgIgIAAgDTYCHCAAIAw2AhggACACNgIUIAAgBkEARzoAJiADIAspAgA3AiwgACADKQIoNwIEIABBDGogA0EoakEIaikCADcCAAwCCyAKKAIYQYCAgIB4Rg0AIANBoYGAgHg2AiggASAMIAsgA0EoahCqIQsgAEEFNgIAIANBxABqIAJBGGopAgA3AgAgA0E8aiACQRBqKQIANwIAIANBNGogAkEIaikCADcCACADIAIpAgA3AiwCQEEkRQ0AIABBBGogA0EoakEk/AoAAAsgACAEOgA5IAAgCToAOCAAIAg6ADcgACAHOgA2IAAgBToANSAAIAZBAEc6ADQgACAKNgIwIAAgCzYCLCAAIAw2AigLIANB0ABqJAALiQcCCH8BfiMAQcABayIDJAAgA0GQAWpBCGohBCADQeAAakEIaiEFIAAoAgAhBgJAAkADQAJAAkACQAJAAkAgAi0A2AEiB0HUAEYNACAHQc4ARw0BCyADQQA2AiQgA0KAgICAgAE3AhwgAigC0AEhCCACEJQLIAdBzgBGDQEgBkEBcUUNAiACKALUASEHIAIoAtABIQkgACkCBCELIANBuYCAgHg2AmAgAyALNwJkIAkgByADQeAAahCXGSEKIAItANgBQaIBRw0FIAIgAhDAKRCnFgwFC0EAIQoMBQsCQAJAIAIoAogBIgdBwABxDQAgAiAHQcAAcjYCiAEgA0EIaiACEPQJIAMoAgghByACIAIoAogBQb9/cTYCiAEgAygCDCEKDAELIANBEGogAhD0CSADKAIUIQogAygCECEHCyAHQQFxRQ0BDAMLIAAgCDYCBEEBIQYgAEEBNgIAIAAgAigCzAE2AghBACEKCyADIAo2AigCQAJAIAItANgBQQlGDQAgAigC1AEhByACKALQASEJIANBLGogAhCXJCADQQE2AmQgA0G8t5wBNgJgIANCATcCbCADQY8FNgJUIANBCToAXyADIANB0ABqNgJoIAMgA0HYAGo2AlAgAyADQd8AajYCWCADQThqIANB4ABqELQZIANBzABqIANBNGooAgA2AgAgAyADKQIsNwJEIAkgByADQThqEJcZIQogAi0A2AFBogFHDQEgAiACEMApEKcWDAELIAIQlAsDQAJAAkAgAi0A2AEiB0EDRg0AIAdB1ABGDQAgB0HOAEcNAQsgAigCzAEhCQJAIAEoAggiByABKAIARw0AIAEQ2xsLIAEgB0EBajYCCCABKAIEIAdBGGxqIgcgAykCHDcCACAHIAo2AhQgByAJNgIQIAcgCDYCDCAHQQhqIANBHGpBCGooAgA2AgAMAwsCQAJAIAIoAogBIgdBgICAgAJxRQ0AIAIgB0H/////fXE2AogBIANB4ABqIAIQoCwgAiACKAKIAUGAgICAAnI2AogBDAELIANB4ABqIAIQoCwLIAMoAmQhBwJAIAMoAmAiCUETRw0AIAchCgwCCwJAQShFDQAgBCAFQSj8CgAACyADIAc2ApQBIAMgCTYCkAEgA0EcaiADQZABakHU7JsBEOocDAALCwsgA0EoahDOKAsgA0EcahD7JQsgA0HAAWokACAKC94GAQh/IwBBgAFrIgIkAAJAAkAgASgCCA0AIAEoAgQiA0EAEMIgIAEoAgAgAxDGKgwBCwJAAkACQAJAAkAgACgCIEGAgICAeEYNACACQQhqQQhqIAFBCGooAgA2AgAgAkEAOwEUIAIgASkCADcDCEEAQQQQxioCQCAAKAIoIgNFDQAgACgCJCEBIANBMGwhAwNAIAEgAkEIahCZBCABQTBqIQEgA0FQaiIDDQALIAItABVBAXENBAsgAigCECEDIAJBADYCECACKAIIIQQgAigCDCEBIAJCgICAgMAANwMIIAJBHGogAEEgakEAQQAQmBMgAiABIANBAnRqNgI8IAIgBDYCOCACIAE2AjQgAiABNgIwAkAgAigCHCIBIAIoAiAiBEYNACACQcAAakEEciIAQShqIQUgAEEgaiEGIABBGGohByAAQRBqIQggAEEIaiEJA0AgASgCACIDQRNGDQEgBSABQSxqKAIANgIAIAYgAUEkaikCADcCACAHIAFBHGopAgA3AgAgCCABQRRqKQIANwIAIAkgAUEMaikCADcCACAAIAFBBGopAgA3AgAgAiADNgJAIAJBwABqEIECIAFBMGoiASAERw0ACwsgAkEcakEUaiEBIAJCiICAgIABNwIcIAIoAiQhAwJAIAIoAiwNACADIAFBjKibARCDAwwDCyADIAIoAiggARCGA0UNAgJAIAIoAjwiACACKAI0IgNHDQAgAyEADAILIAJBHGogACADa0ECdhD6EyACKAIkIAIoAiggARCGA0UNAiACKAI8IQMgAigCNCEADAELQZyomwFBHkGoqZsBELIWAAsgAkHAAGogAyAAa0ECdkEIQTAQ9w4gAigCRCEDIAIoAkBBAUYNAiACQQA2AnwgAiACKAJINgJ4IAIgAzYCdCACQfQAaiABQbDhmwEQgwMgAiACKAJ0NgJIIAIgAigCeCIDNgJAIAIgAzYCRCACIAMgAigCfCIAQTBsajYCTAJAIABFDQAgAkEcaiAAEPoTIAIoAiQgAigCKCACQcAAahCnCBoLIAJBwABqEK8bCyACQRxqEKoLIAEQghsLIAIoAgwgAigCEBDCICACKAIIIAIoAgwQxioMAQsgAyACKAJIQbDhmwEQwSYACyACQYABaiQAC8gGAgZ/AX4jAEEgayICJABBAC0A4OeeARoCQEHAABB8IgNFDQAgA0EANgIIIANCDDcDAAJAAkACQAJAAkACQAJAAkAgACgCAA4FAAIDAQQACyAAKQMQIQggACgCDCEEIAAoAgghBUEAIQYMBgsgACgCDCEEIAAoAgghBSAAKAIEIQdBAiEGDAQLIAJBBGpBFGogAEEYaikCADcCACACQRBqIABBEGopAgA3AgBBACEEQQAtAODnngEaIAIgACkCCDcCCEHAABB8IgdFDQUgB0EANgIIIAdBGzYCACAHIAIpAgQ3AgwgB0EUaiACQQxqKQIANwIAIAdBHGogAkEEakEQaikCADcCACAHQSRqIAJBBGpBGGooAgA2AgAMAgsgAkEEakEUaiAAQRhqKQIANwIAIAJBEGogAEEQaikCADcCAEEAIQRBAC0A4OeeARogAiAAKQIINwIIQcAAEHwiB0UNBCAHQQM2AgggB0EbNgIAIAcgAikCBDcCDCAHQRRqIAJBDGopAgA3AgAgB0EcaiACQQRqQRBqKQIANwIAIAdBJGogAkEEakEYaigCADYCAAwBCyACQQRqQRRqIABBGGopAgA3AgAgAkEQaiAAQRBqKQIANwIAQQAhBEEALQDg554BGiACIAApAgg3AghBwAAQfCIHRQ0DIAdBBDYCCCAHQRs2AgAgByACKQIENwIMIAdBFGogAkEMaikCADcCACAHQRxqIAJBBGpBEGopAgA3AgAgB0EkaiACQQRqQRhqKAIANgIAC0ECIQZBACEFCwtBAC0A4OeeARpBwAAQfCIARQ0AIAAgASkDADcDACAAQThqIAFBOGopAwA3AwAgAEEwaiABQTBqKQMANwMAIABBKGogAUEoaikDADcDACAAQSBqIAFBIGopAwA3AwAgAEEYaiABQRhqKQMANwMAIABBEGogAUEQaikDADcDACAAQQhqIAFBCGopAwA3AwBBAC0A4OeeARpBwAAQfCIBRQ0AIAFBADoAPCABIAA2AjggAUIANwMwIAEgAzYCKCABQgA3AyAgASAINwIYIAEgBDYCFCABIAU2AhAgASAHNgIMIAEgBjYCCCABQQE2AgAgAkEgaiQAIAEPCwAL3QYCDn8DfiMAQfAAayICJAAgASgC0AEhAyABEJwBIAJB0ABqIAEQwwoCQAJAAkACQAJAAkACQCACLQBkQQJHDQAgAigCUCEBDAELIAIpA1ghECACKQNQIREgAS0A2AFBCUcNAiABEJQLIAEQnAEgAkHQAGogARDDCiACLQBkQQJHDQEgAigCUCEBIBEQnh8LIABBBjoALCAAIAE2AgAMBAsgAikDUCESIBFQRQ0BIBAhESASIRALQQAhBCACQQA6ABQgAkEANgIQIAIgED4CCCACIBBCIIg+AgxBAyEFDAELIAIoAlghBSACIAIoAlwiBjYCJCACIAM2AiAgAiAGNgIcIAIgBTYCGCACIBA3AwggAiASNwMQIBJCIIinIQRBBSEFCyACIAU6ACwgAiARNwMAIAJBLWohByACQRxqIQggAkEVaiEJIAJBBHIhCgNAAkACQCABLQDYAUEIRw0AIAEQlAsgARCcASACQdAAaiABEMMKIAItAGRBAkcNASACKAJQIQEgAEEGOgAsIAAgATYCACACEKscDAMLQTBFDQIgACACQTD8CgAADAILIAIoAlwhCyACKAJYIQwgAikDUCEQIAEoAswBIQYCQAJAAkACQCAFQX1qIgVBASAFQf8BcSINQQNJG0H/AXEOAwECAAELIAJBATYCVCACQYDZmwE2AlAgAkIANwJcIAIgAkHsAGo2AlggAkHQAGpBiNmbARC1IQALIBGnIQ4gAkHQAGpBCGogCkEIaikCADcDACACQcwAakECaiAJQQJqLQAAOgAAIAIgCikCADcDUCACIAkvAAA7AUwgBCEFDAELAkBBCEEwEMYpIg5FDQACQEEwRQ0AIA4gAkEw/AoAAAtBAiEFDAELAAsgAkE4akEIaiIEIAJB0ABqQQhqKQMANwMAIAJBNGpBAmoiDyACQcwAakECai0AADoAACACIAIpA1A3AzggAiACLwFMOwE0AkAgDUECRw0AIAIQqxwLIAggAikDODcCACAHIAIvATQ7AAAgCEEIaiAEKQMANwIAIAdBAmogDy0AADoAACACIA42AhggAiAGNgIUIAIgAzYCECACIAs2AgwgAiAMNgIIIAIgEDcDACACIAU6ACwgBiEEIBAhEQwACwsgAkHwAGokAAvzBgEJfyMAQbABayICJAACQAJAIAEoAgAiAyABKAIERg0AIAEgA0EYajYCAAJAAkAgASgCECIEIAEoAhRGDQAgASAEQQpqNgIQIAQtAAAiBUECRg0AIAJBgAFqIARBCWotAAA6AAAgAiAEKQABNwN4DAELIAEgASgCDCIGNgIUIAEgASgCCCIENgIQIAQgBkYNASABIARBCmo2AhAgAkGAAWogBEEJai0AADoAACACIAQpAAE3A3ggBC0AACIFQQJGDQELIAJBIGpBCGogAkH4AGpBCGotAAA6AAAgAiACKQN4NwMgIAJBGGogAxCtIwJAAkAgAigCGCIBDQBBgICAgHghBCACQYCAgIB4NgIsIAMoAhAhByADKAIMIQgMAQsgAkEsaiABIAIoAhwQgRdBgICAgHghBCADKAIQIQcgAygCDCEIAkAgAigCLEGAgICAeEcNAAwBCyACKAIwIQYgAigCNCEDQQAhBCACQQA2AnggAkEQakEKIAJB+ABqEIwaIAIoAnghCSACKAIUIQpBASEBIAJBATsBXCACIAM2AlggAkEANgJUIAIgCjoAUCACIAk2AkwgAiADNgJIIAJBADYCRCACIAM2AkAgAiAGNgI8IAJBCjYCOCACQewAaiACQThqEP8GQQQhA0EAIQYCQCACKAJsQYCAgIB4Rg0AQQwhAyACQQhqQQRBBEEMQbDhmwEQhxggAkHsAGpBCGooAgAhBCACKAIIIQkgAigCDCIGIAIpAmw3AgAgBkEIaiAENgIAIAJBATYCaCACIAY2AmQgAiAJNgJgAkBBKEUNACACQfgAaiACQThqQSj8CgAACwJAA0AgAkGkAWogAkH4AGoQ/wYgAigCpAFBgICAgHhGDQECQCABIAIoAmBHDQAgAkHgAGpBARDKIiACKAJkIQYLIAYgA2oiBCACKQKkATcCACAEQQhqIAJBpAFqQQhqKAIANgIAIAIgAUEBaiIBNgJoIANBDGohAwwACwtBgICAgHggAigCqAEQ2SYgAigCZCEDIAIoAmAhBCABIQYLIAJBLGoQ8ykLIAAgBToAFCAAIAc2AhAgACAINgIMIAAgBjYCCCAAIAM2AgQgACAENgIAIAAgAikDIDcAFSAAQR1qIAJBKGotAAA6AAAMAQsgAEGBgICAeDYCAAsgAkGwAWokAAvzBgEDfwJAAkACQANAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAA4TAA8PAQIDDw8EBRAODAsKCQgHBgALIAAoAgwiAkUNDiAAKAIIIQAgAkEwbCECA0AgACABEKMEIABBMGohACACQVBqIgINAAwPCwsgASAAKAIEEJsDIAAoAgghAAwLCyAAKAIMIgBFDQwgASAAEJsDDwsgACgCKCEADAkLIAEgACgCBBCbAyAAKAIIIAEQowQgACgCFCIADQgMCgsgASAAKAIQEJsDIAAoAgwiAkUNCSAAKAIIIgMgAkEYbGohBANAAkAgAygCFCIARQ0AIAEgABCbAwsCQCADQQhqKAIAIgJFDQAgA0EEaigCACEAIAJBMGwhAgNAIAAgARCjBCAAQTBqIQAgAkFQaiICDQALCyADQRhqIgMgBEYNCgwACwsgASAAKAIEEJsDDAgLIABBCGogARCFBw8LIAAoAgghAgJAAkACQAJAIAAoAgQOAwABAgALIAIgARCbGQwCCyACIAEQnRkMAQsgAiABEIwOCyABIAAoAgwQmwMgACgCECEADAQLIAAoAgghAgJAAkACQAJAIAAoAgQOAwABAgALIAIgARCbGQwCCyACIAEQnRkMAQsgAiABEIwOCyABIAAoAgwQmwMgACgCECEADAMLAkAgACgCBCICQQJGDQAgACgCCCEDAkAgAkEBcUUNACABIAMQmwMMAQsgAyABEJsZCwJAIAAoAhgiAkUNACABIAIQmwMLAkAgACgCHCICRQ0AIAEgAhCbAwsgACgCDCEADAILIAEgACgCBBCbAyAAKAIIIQAMAQsgASAAKAIEEJsDIAAoAgghAAwACwsCQCAAKAIEIgNB0ABqKAIAIgJFDQAgA0HMAGooAgAhACACQTBsIQIDQCAAIAEQowQgAEEwaiEAIAJBUGoiAg0ACwsCQAJAAkAgAygCAEF5ag4CAQIACyADIAEQjA4LIANBMGooAgAiAkUNACADQSxqKAIAIQAgAkEwbCECA0AgACABEKMEIABBMGohACACQVBqIgINAAsLIAMoAmBBgICAgHhGDQAgA0HoAGooAgAiAkUNACADQeQAaigCACEAIAJBMGwhAgNAIAAgARCjBCAAQTBqIQAgAkFQaiICDQALCw8LIAEgACgCBBCbAwvzBgEDfwJAAkACQANAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAA4TAA8PAQIDDw8EBRAODAsKCQgHBgALIAAoAgwiAkUNDiAAKAIIIQAgAkEwbCECA0AgACABEKQEIABBMGohACACQVBqIgINAAwPCwsgACgCBCABEP4CIAAoAgghAAwLCyAAKAIMIgBFDQwgACABEP4CDwsgACgCKCEADAkLIAAoAgQgARD+AiAAKAIIIAEQpAQgACgCFCIADQgMCgsgACgCECABEP4CIAAoAgwiAkUNCSAAKAIIIgMgAkEYbGohBANAAkAgAygCFCIARQ0AIAAgARD+AgsCQCADQQhqKAIAIgJFDQAgA0EEaigCACEAIAJBMGwhAgNAIAAgARCkBCAAQTBqIQAgAkFQaiICDQALCyADQRhqIgMgBEYNCgwACwsgACgCBCABEP4CDAgLIABBCGogARCoAQ8LIAAoAgghAgJAAkACQAJAIAAoAgQOAwABAgALIAIgARCrGQwCCyACIAEQrBkMAQsgAiABEI4OCyAAKAIMIAEQ/gIgACgCECEADAQLIAAoAgghAgJAAkACQAJAIAAoAgQOAwABAgALIAIgARCrGQwCCyACIAEQrBkMAQsgAiABEI4OCyAAKAIMIAEQ/gIgACgCECEADAMLAkAgACgCBCICQQJGDQAgACgCCCEDAkAgAkEBcUUNACADIAEQ/gIMAQsgAyABEKsZCwJAIAAoAhgiAkUNACACIAEQ/gILAkAgACgCHCICRQ0AIAIgARD+AgsgACgCDCEADAILIAAoAgQgARD+AiAAKAIIIQAMAQsgACgCBCABEP4CIAAoAgghAAwACwsCQCAAKAIEIgNB0ABqKAIAIgJFDQAgA0HMAGooAgAhACACQTBsIQIDQCAAIAEQpAQgAEEwaiEAIAJBUGoiAg0ACwsCQAJAAkAgAygCAEF5ag4CAQIACyADIAEQjg4LIANBMGooAgAiAkUNACADQSxqKAIAIQAgAkEwbCECA0AgACABEKQEIABBMGohACACQVBqIgINAAsLIAMoAmBBgICAgHhGDQAgA0HoAGooAgAiAkUNACADQeQAaigCACEAIAJBMGwhAgNAIAAgARCkBCAAQTBqIQAgAkFQaiICDQALCw8LIAAoAgQgARD+AgvzBgEDfwJAAkACQANAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAA4TAA8PAQIDDw8EBRAODAsKCQgHBgALIAAoAgwiAkUNDiAAKAIIIQAgAkEwbCECA0AgACABEKUEIABBMGohACACQVBqIgINAAwPCwsgACgCBCABEKMCIAAoAgghAAwLCyAAKAIMIgBFDQwgACABEKMCDwsgACgCKCEADAkLIAAoAgQgARCjAiAAKAIIIAEQpQQgACgCFCIADQgMCgsgACgCECABEKMCIAAoAgwiAkUNCSAAKAIIIgMgAkEYbGohBANAAkAgAygCFCIARQ0AIAAgARCjAgsCQCADQQhqKAIAIgJFDQAgA0EEaigCACEAIAJBMGwhAgNAIAAgARClBCAAQTBqIQAgAkFQaiICDQALCyADQRhqIgMgBEYNCgwACwsgACgCBCABEKMCDAgLIABBCGogARCgAg8LIAAoAgghAgJAAkACQAJAIAAoAgQOAwABAgALIAIgARCnGQwCCyACIAEQqBkMAQsgAiABEP0KCyAAKAIMIAEQowIgACgCECEADAQLIAAoAgghAgJAAkACQAJAIAAoAgQOAwABAgALIAIgARCnGQwCCyACIAEQqBkMAQsgAiABEP0KCyAAKAIMIAEQowIgACgCECEADAMLAkAgACgCBCICQQJGDQAgACgCCCEDAkAgAkEBcUUNACADIAEQowIMAQsgAyABEKcZCwJAIAAoAhgiAkUNACACIAEQowILAkAgACgCHCICRQ0AIAIgARCjAgsgACgCDCEADAILIAAoAgQgARCjAiAAKAIIIQAMAQsgACgCBCABEKMCIAAoAgghAAwACwsCQCAAKAIEIgNB0ABqKAIAIgJFDQAgA0HMAGooAgAhACACQTBsIQIDQCAAIAEQpQQgAEEwaiEAIAJBUGoiAg0ACwsCQAJAAkAgAygCAEF5ag4CAQIACyADIAEQ/QoLIANBMGooAgAiAkUNACADQSxqKAIAIQAgAkEwbCECA0AgACABEKUEIABBMGohACACQVBqIgINAAsLIAMoAmBBgICAgHhGDQAgA0HoAGooAgAiAkUNACADQeQAaigCACEAIAJBMGwhAgNAIAAgARClBCAAQTBqIQAgAkFQaiICDQALCw8LIAAoAgQgARCjAgvzBgEDfwJAAkACQANAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAA4TAA8PAQIDDw8EBRAODAsKCQgHBgALIAAoAgwiAkUNDiAAKAIIIQAgAkEwbCECA0AgACABEKYEIABBMGohACACQVBqIgINAAwPCwsgASAAKAIEENEBIAAoAgghAAwLCyAAKAIMIgBFDQwgASAAENEBDwsgACgCKCEADAkLIAEgACgCBBDRASAAKAIIIAEQpgQgACgCFCIADQgMCgsgASAAKAIQENEBIAAoAgwiAkUNCSAAKAIIIgMgAkEYbGohBANAAkAgAygCFCIARQ0AIAEgABDRAQsCQCADQQhqKAIAIgJFDQAgA0EEaigCACEAIAJBMGwhAgNAIAAgARCmBCAAQTBqIQAgAkFQaiICDQALCyADQRhqIgMgBEYNCgwACwsgASAAKAIEENEBDAgLIABBCGogARCGBw8LIAAoAgghAgJAAkACQAJAIAAoAgQOAwABAgALIAIgARClGQwCCyACIAEQphkMAQsgAiABEI8OCyABIAAoAgwQ0QEgACgCECEADAQLIAAoAgghAgJAAkACQAJAIAAoAgQOAwABAgALIAIgARClGQwCCyACIAEQphkMAQsgAiABEI8OCyABIAAoAgwQ0QEgACgCECEADAMLAkAgACgCBCICQQJGDQAgACgCCCEDAkAgAkEBcUUNACABIAMQ0QEMAQsgAyABEKUZCwJAIAAoAhgiAkUNACABIAIQ0QELAkAgACgCHCICRQ0AIAEgAhDRAQsgACgCDCEADAILIAEgACgCBBDRASAAKAIIIQAMAQsgASAAKAIEENEBIAAoAgghAAwACwsCQCAAKAIEIgNB0ABqKAIAIgJFDQAgA0HMAGooAgAhACACQTBsIQIDQCAAIAEQpgQgAEEwaiEAIAJBUGoiAg0ACwsCQAJAAkAgAygCAEF5ag4CAQIACyADIAEQjw4LIANBMGooAgAiAkUNACADQSxqKAIAIQAgAkEwbCECA0AgACABEKYEIABBMGohACACQVBqIgINAAsLIAMoAmBBgICAgHhGDQAgA0HoAGooAgAiAkUNACADQeQAaigCACEAIAJBMGwhAgNAIAAgARCmBCAAQTBqIQAgAkFQaiICDQALCw8LIAEgACgCBBDRAQvz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ACACQQxqKAIAEIQhRQ0DDAILIAAoAgwNAQwCCyAAKAIMRQ0BC0EcQQQQ6CQhAhDyGCEDIABBGGoiBCgCACEFIAQgAzYCACAAKQIAIQYgAEEANgIAIAIgBjcCACACQQhqIABBCGopAgA3AgAgAkEQaiAAQRBqKQIANwIAIAJBGGogBTYCAEEBIQAgAUEBNgIUIAEgAjYCECABQQE2AgwgAUHUAGpBBGohAgNAAkACQAJAAkACQAJAIABFDQAgASAAQX9qIgA2AhQgAUE4akEIaiIDIAEoAhAgAEEcbGoiAEEMaikCADcDACABQThqQRBqIgQgAEEUaikCADcDACABIAApAgQ3AzggACgCACIAQQhGDQAgAiABKQM4NwIAIAJBCGogAykDADcCACACQRBqIAQpAwA3AgAgASAANgJUIAAOCAUFBQUBAgMEBQsgAUEMahCeKAwGCyABKAJgIQAQ8hghAyABQfAAakEYaiAAQRhqIgQoAgA2AgAgAUHwAGpBEGogAEEQaikCADcDACABQfAAakEIaiAAQQhqKQIANwMAIAQgAzYCACAAKQIAIQYgAEEANgIAIAEgBjcDcCABQQxqIAFB8ABqQaDQhAEQhxQMAwsgASgCWCEAEPIYIQMgAUHwAGpBGGogAEEYaiIEKAIANgIAIAFB8ABqQRBqIABBEGopAgA3AwAgAUHwAGpBCGogAEEIaikCADcDACAEIAM2AgAgACkCACEGIABBADYCACABIAY3A3AgAUEMaiABQfAAakGw0IQBEIcUDAILIAEoAmAhACABQQA2AmAgAUEANgKAASABIAA2AnwgASACNgJ4IAEgASgCXCIDNgJwIAEgAyAAQRxsajYCdCABQQxqIAFB8ABqQcDQhAEQpAgMAQsgASgCYCEAIAFBADYCYCABQQA2AoABIAEgADYCfCABIAI2AnggASABKAJcIgM2AnAgASADIABBHGxqNgJ0IAFBDGogAUHwAGpB0NCEARCkCAsgAUHUAGoQmiggASgCFCEADAALCyABQZABaiQAC/gGAQN/AkACQANAIAAtAAANAgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCAA4TABAQAQIDEBAEBQYHCAkKCwwNDwALIAEoAgwiAkUNDyABKAIIIQEgAkEwbCECA0AgACABEKoEIAFBMGohASACQVBqIgINAAwQCwsCQCAALQABDQAgACABKAIEELMoIAEoAgghAQwNCyAAQQE6AAAPCyABKAIMIgFFDQ0gACABELMoDwsgASgCKCEBDAoLIAAgASgCBBCzKCAAIAEoAggQqgQgASgCFCIBDQkMCwsgACABKAIQELMoIAEoAgwiAkUNCiABKAIIIgMgAkEYbGohBANAAkAgAygCFCIBRQ0AIAAgARCzKAsCQCADKAIIIgJFDQAgAygCBCEBIAJBMGwhAgNAIAAgARCqBCABQTBqIQEgAkFQaiICDQALCyADQRhqIgMgBEcNAAwLCwsgACABKAIEELMoDwsCQCABKAIEIgMoAlAiAkUNACADKAJMIQEgAkEwbCECA0AgACABEKoEIAFBMGohASACQVBqIgINAAsLAkACQAJAIAMoAgBBeWoOAgECAAsgAyAAEIsOCyADKAIwIgJFDQAgAygCLCEBIAJBMGwhAgNAIAAgARCqBCABQTBqIQEgAkFQaiICDQALCyADKAJgQYCAgIB4Rg0IIAMoAmgiAkUNCCADKAJkIQEgAkEwbCECA0AgACABEKoEIAFBMGohASACQVBqIgINAAwJCwsgASgCCCECIAAgASgCBBCzKCACIQEMBQsgASgCCCECIAAgASgCBBCzKCACIQEMBAsCQCABKAIEIgJBAkYNACABKAIIIQMCQCACQQFxRQ0AIAAgAxCzKAwBCyADIAAQmRkLAkAgASgCGCICRQ0AIAAgAhCzKAsCQCABKAIcIgJFDQAgACACELMoCyABKAIMIQEMAwsgASgCCCECAkACQAJAAkAgASgCBA4DAAECAAsgAiAAEJkZDAILIAIgABCaGQwBCyACIAAQiw4LIAAgASgCDBCzKCABKAIQIQEMAgsgASgCCCECAkACQAJAAkAgASgCBA4DAAECAAsgAiAAEJkZDAILIAIgABCaGQwBCyACIAAQiw4LIAAgASgCDBCzKCABKAIQIQEMAQsLIAFBCGogABCEBw8LIAAgASgCBBCzKAsL2QYCCH8CfiMAQbABayICJAACQAJAAkACQAJAAkACQAJAAkACQCABKAIAIgMOCwkAAQIDBAUGBwgJCQsgACABQQhqEOcfDAgLIAEoAghBAUcNByAAIAEoAgwQpgEMBwsgACABKAIEEKYBDAYLAkAgASgCBCIEKAIAQQNHDQAg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IAEoAsgBIQYgBEH2gICAeDYCECABIAYgBSAEQRBqEKohCwJAIAEtAJEBQQJxDQAgASgCzAEhBSAEQYSAgIB4NgIQIAEgAiAFIARBEGoQqiELAkAgAS0AiwFBEHENACABKALMASEFIARBgoCAgHg2AhAgASACIAUgBEEQahCqIQsgBCgCDEE4bCEGIAQoAgghBQNAAkACQAJAIAZFDQAgBSgCAA0BDAILIAEQghIiBQ0DIAEoAswBIQFBGEEEEN4nIgUgAzoAFCAFIAE2AhAgBSACNgIMIAVBCGogBEEEakEIaigCADYCACAFIAQpAgQ3AgBBACEGDAQLIAEoAswBIQggBEGFgICAeDYCECABIAIgCCAEQRBqEKohCwJAIAUoAjANACABKALMASEIIARBhoCAgHg2AhAgASACIAggBEEQahCqIQsgBUE4aiEFIAZBSGohBgwACwsgBEEEahD/JUEBIQYLIAAgBTYCBCAAIAY2AgAgBEGAAWokAAvnBgIGfwV+IwBBoAFrIgMkACABvSEJAkACQCABmUQAAAAAAADwf2INAEEDIQQMAQsCQCAJQoCAgICAgID4/wCDIgpCgICAgICAgPj/AFINAEECIQQMAQsgCUL/////////B4MiC0KAgICAgICACIQgCUIBhkL+////////D4MgCUI0iKdB/w9xIgUbIgxCAYMhDQJAIApCAFINAAJAIAtQRQ0AQQQhBAwCCyAFQc13aiEFIA2nQQFzIQRCASEKDAELQoCAgICAgIAgIAxCAYYgDEKAgICAgICACFEiBhshDEICQgEgBhshCiANp0EBcyEEQct3Qcx3IAYbIAVqIQULIAMgBTsBiAEgAyAKNwOAASADQgE3A3ggAyAMNwNwIAMgBDoAigECQAJAAkACQAJAAkACQCAEQX5qIgRFDQBBASEFQdDumwFBz+6bASAJQgBTIgYbQdDumwFBASAGGyACGyEGQQEgCUI/iKcgAhshAiAEQQMgBEEDSRtBf2oOAwECAwELIANBAzYCICADQfyhmwE2AhwgA0ECOwEYQQEhBkEAIQJBASEFDAMLIANBAzYCICADQa7mlwE2AhwgA0ECOwEYDAILIANBAzYCICADQamVgQE2AhwgA0ECOwEYDAELIANB4ABqIANB8ABqIANBB2oQ/AECQAJAIAMoAmBFDQAgA0GQAWpBCGogA0HgAGpBCGooAgA2AgAgAyADKQJgNwOQAQwBCyADQZABaiADQfAAaiADQQdqEHYLIAMoApQBIgVFDQEgAygCkAEiBy0AAEEwTQ0CIAMuAZgBIQggAyAHNgIcIANBAjsBGCADQQE2AiACQAJAIAVBAUcNACADQSRqIQRBAyEFDAELIANBPGohBCADQQI7ATAgA0HVi5wBNgIoIANBAjsBJCADIAVBf2o2AjggA0EBNgIsIAMgB0EBajYCNEEFIQULIARBATsBDCAEQQI7AQAgBEEBIAhrIAhBf2ogCEEBSCIIGzsBDiAEQQJBASAIGzYCCCAEQeyHmQFBqJWBASAIGzYCBAsgAyAFNgJsIAMgAjYCZCADIAY2AmAgAyADQRhqNgJoIAAgA0HgAGoQxgUhBCADQaABaiQAIAQPC0Ggk4EBQSFBiJWBARDHHAALQdiUgQFBH0GYlYEBEMccAAuxBgIJfwF+IwBB8ABrIgIkACACQQA2AhggAkKAgICAEDcCECABKAIYIQMgASgCHCEEIAJBADYCRCACQQA7AUAgAiAENgI8IAJBADYCOCACQQE6ADQgAkEKNgIwIAIgBDYCLCACQQA2AiggAiAENgIkIAIgAzYCICACQQo2AhwgASgCICIFQQJqQQQgBRshBiABKAIEIQcgASgCCCEIAkACQANAIAJBCGogAkEcahCLByACKAIIIgRFDQIgAigCDCEDIAIgAigCRCIBQQFqIgk2AkQCQAJAIAUNACACQRBqQYyRnAFBkJGcARC3HgwBCyACIAk2AlQgAkHYAGogAkHUAGoQpRMgBSACKAJgIglJDQIgAkHkAGpBICAFIAlrENAUIAJB5ABqIAIoAlwgCRCTKSACQcgAakEIaiIJIAJB5ABqQQhqKAIANgIAIAIgAikCZDcDSCACQdgAahCeKiACQRBqIAIoAkwgCSgCABCTKSACQcgAahCeKiACQRBqQYTJmAFBhsmYARC3HgsgAkEQaiAEIAMQkykgAkEQakEKEIQKAkAgASAITw0AIAcgAUEMbGoiBEEIaiIDKAIARQ0BIAJBADYCbCACQoCAgIAQNwJkIAYhAQJAA0AgAUUNASACQeQAakEgEIQKIAFBf2ohAQwACwsgBEEEaigCACIEIAMoAgBBGGxqIQpBACEBA0ACQAJAIAQgCkYNACABIAQoAghBf2oiAyABIANLGyIDIAFrIQECQANAIAFFDQEgAkHkAGpBIBCECiABQX9qIQEMAAsLQQAgBCgCFCIBIAQoAghrIgkgCSABSxsiAUEBIAFBAUsbIgkhAQNAIAFFDQIgAkHkAGpB3gAQhAogAUF/aiEBDAALCyACKQJoIQsgAigCZCIBQYCAgIB4Rg0DIAIgATYCZCACIAs3AmggAkEQaiALpyALQiCIpxCTKSACQRBqQQoQhAogAkHkAGoQnioMAwsgCSADaiEBIARBGGohBAwACwsLIAEgCEG4/ocBEMAUAAtByP6HARD4KQALIAAgAikCEDcCACAAQQhqIAJBEGpBCGooAgA2AgAgAkHwAGokAAvFBgIIfwF+IwBB8ABrIgIkAAJAAkAgACgCACIDQQlHDQAgAUEAOgB9IABBCGogARDkAgwBCwJAAkACQAJAAkACQAJAAkACQCADDgkAAQIDBAUGBwgACwJAIAAoAgwiA0UNACAAKAIIIQQgA0HIAGwhBSABQSxqIQYgAUGAAWohB0EAIQgDQAJAAkACQAJAIAQgCGoiAykDAEJ9fCIKp0EBakEAIApCAlQbDgMAAQIACyADQSBqIgkgARDfHAJAIAMpAwAiCkICUQ0AIAqnQQFxDQAgA0EIaiABEN8cCyACQQhqIAkQqRwgBiACKQMIIAIoAhBBARCkDCABIAkpAwAgA0EwaigCABCTEQwCCyADQRBqIQkgA0EgaigCACEDAkAgAS0AkAENACADRQ0AIAJBCGogCRCpHCAHIAIpAwggAigCEBCFBhoLIAJBCGogCRCpHCAGIAIpAwggAigCEEEBEKQMIAEgCSkDACADEJMRDAELIANBEGohCSADQSBqKAIAIQMCQCABLQCQAQ0AIANFDQAgAkEIaiAJEKkcIAcgAikDCCACKAIQEIUGGgsgAkEIaiAJEKkcIAYgAikDCCACKAIQQQEQpAwgASAJKQMAIAMQkxELIAUgCEHIAGoiCEcNAAsLIAAoAhwiA0UNCCADIAEQ2hcMCAsgAEEIaiABEPAEDAcLIABBBGohAwJAIAAoAhgNACADIAEQ3gkMBwsgAS0AkAEhCCABQQE6AJABIAMgARDeCSABIAg6AJABDAYLAkACQAJAAkAgACgCCA4DAAEJAAsgAUEsaiIDIABBEGoiCBDJEiAALQAkQQJHDQEgAkEIaiADEO4MDAILIAFBLGogAEEQaiIDENMeIAEgAxDhBQwHCyABIAApAxAgACgCICIJEJMRIAJBCGogAxDuDCABLQCQAQ0AIAlFDQAgAkHgAGogCBCpHCABQYABaiACKQNgIAIoAmgQhQYaCyAAKAIoIAEQqwYgAyACQQhqEKQDDAULIAEgACgCBBCIHgwECyAAKAIQIgNFDQMgAyABENoXDAMLIAAoAgRBKGogARDfHAwCCyABIAAoAgQQiB4MAQsgAEEQaiABEN8cCyACQfAAaiQAC5kGAgd/AX4jAEEwayICJAAgACkCaCEJIABCgICAgIABNwNoQQghAyACQQhqQQhqIgQgAEHwAGoiBSgCADYCAEEAIQYgBUEANgIAIAIgCTcDCCAAQegAaiEHAkACQAJAIAEoAggiBQ0AIAcgAikDCDcCACAHQQhqIAQoAgA2AgBBACEGDAELIAEoAgQhAwJAAkADQAJAAkACQCADKAIAQQlHDQAgA0EIaigCACEEIAAgAxCRAyAEQQFHDQEMAgsgACADEJEDCyADKAIAQQlHDQAgA0EIaigCAEEBRg0CCyADQThqIQMgBSAGQQFqIgZHDQALQQAhCAwBCyADEMsFQQEhCCAGQQFqIAVGDQAgA0E4aiEDIAZBf3MgBWohBEEBIQgDQAJAAkACQAJAIAMoAgBBCUcNACADQQhqKAIAIQYgACADEJEDIAZBAUcNAQwCCyAAIAMQkQMLIAMoAgBBCUcNACADQQhqKAIAQQFHDQAgAxDLBSAIQQFqIQgMAQsgAyAIQUhsaiIGIAMpAwA3AwAgBkEwaiADQTBqKQMANwMAIAZBKGogA0EoaikDADcDACAGQSBqIANBIGopAwA3AwAgBkEYaiADQRhqKQMANwMAIAZBEGogA0EQaikDADcDACAGQQhqIANBCGopAwA3AwALIANBOGohAyAEQX9qIgQNAAsLIAEgBSAIayIFNgIIIAAoAmwhAyAAKAJoIQYgByACKQMINwIAIAAoAnAhACAHQQhqIAJBCGpBCGooAgA2AgAgAEUNACACIAY2AhwgAiADNgIYIAIgAzYCFCACIAMgAEEEdGo2AiAgAkEkaiACQRRqEL4IQQAtAODnngEaAkBBHBB8IgNFDQAgAyACKQIkNwIAIANCADcCDCADQRJqQgA3AQAgA0EIaiACQSRqQQhqKAIANgIAAkAgBSABKAIARw0AIAFB5JabARDwGwsgASAFQQFqNgIIIAEoAgQgBUE4bGoiBiADNgIUIAZBAjYCECAGQRE2AgggBkEJNgIAQQBBCBDNKgwCCwALIAYgAxDYKgsgAkEwaiQAC8QGAQ9/IwBBIGsiAiQAAkAgACgCCCIDRQ0AIAEoAggiBEUNACABKAIEIQVBACEGQQAhBwNAAkACQCAHIANPDQAgBiAESQ0BCyADIAcgAyAHSxshBANAAkAgBCAHRw0AIAJBDGogACADEN8aIAJBDGoQxRUgACAALQAMIAEtAAxxOgAMDAQLIAAgACgCBCAAKAIIIAdB+OWHARCcIyIGLQAAIAYtAAFBiOaHARCBHSAHQQFqIQcMAAsLAkACQAJAIAUgBCAGQZjmhwEQnCMtAAEgACgCBCIIIAAoAggiCSAHQajmhwEQnCMtAABJDQACQCAIIAkgB0G45ocBEJwjLQABIAUgBCAGQcjmhwEQnCMtAABJDQAgCCAJIAdB2OaHARCcIyEKAkAgBSAEIAZB6OaHARCcIyILLQAAIgwgCi0AACINIAwgDUsbIAstAAEiCyAKLQABIgogCyAKSRtLDQAgCCAJIAdB+OaHARCcIyIILQABIQwgCC0AACENA0ACQCAEIAZHDQAgBCEGDAULIAUgBCAGQYjnhwEQnCMiCC0AACIKIA1B/wFxIgkgCiAJSxsgCC0AASIKIAxB/wFxIgggCiAISRtLDQQgBSAEIAZBmOeHARCcIyIKLQABIQsCQCAKLQAAIg4gCUsiCg0AIAkgC0H/AXEiD0sNACAIIA9NDQYLAkAgDiAJIAobIAtB/wFxIg8gCCAPIAhJIhAbSw0AAkACQAJAAkAgCg0AIA8gCE8NAQtBACEMIAoNAQwCC0GYy4QBQShBwMuEARDHHAALIAkgDhDpJEH/AXEiDSAJIA1LGyEMIAkgDSAJIA1JGyENCwJAIBBFDQAgCxCCJEH/AXEiCSAIIAkgCEsbIQsgCSAIIAkgCEkbIQkCQCAKRQ0AIAAgDSAMQajnhwEQgR0LIAshDCAJIQ0MAQsgCkUNBgsgBSAEIAZBuOeHARCcIy0AASAISw0EIAZBAWohBgwACwtB2OeHAUHJAEGk6IcBEMccAAsgACAIIAkgB0G06IcBEJwjIggtAAAgCC0AAUHE6IcBEIEdDAILIAZBAWohBgwCCyAAIA0gDEHI54cBEIEdCyAHQQFqIQcMAAsLIAJBIGokAAuzBgIHfwF+IwBBsAFrIgQkAAJAIAEQzg9BP0YNACABEM4PQSpGDQAgARDOD0ErRg0AQeTAhAFB0ABBtMGEARDHHAALIARBEGpBCGogASgCACIFQdgAaigCADYCACAEIAUpAlA3AxAgBEEIaiACEJ4aIAVB0ABqIQUCQAJAAkACQAJAAkAgBCgCCCIGQQxGDQAgBCAEKAIMIgc2AiQgBCAGNgIgIAZBAkkNAkEBIQggARCACw0BDAQLIARBPGogBUEIaigCACIGNgIAIARBKGpBCGoiAyAGNgIAIAQgBSkCACILNwI0IAQgCzcDKCAAQRxqIAEoAgQgASgCCBDJEyAAQRs2AgAgACAEKQMoNwIoIABBMGogAykDADcCACAAQThqIARBOGopAwA3AgAMAgsgARDOD0E/Rw0CIAEQgAsaQQAhCAwCCyAEQTxqIAVBCGooAgAiBjYCACAEQShqQQhqIgMgBjYCACAEIAUpAgAiCzcCNCAEIAs3AyggAEEcaiABKAIEIAEoAggQyRMgAEEbNgIAIAAgBCkDKDcCKCAAQTBqIAMpAwA3AgAgAEE4aiAEQThqKQMANwIAIARBIGoQ1gsLIAIQkygMAQsgBEHwAGpBFGogBUEIaiIBKAIANgIAIARB8ABqQQhqIgkgBiAHEN0VIgpBCGooAgA2AgAgBCAFKQIANwJ8IAQgCikCADcDcCAEQShqQQhqIgogBEEQakEIaigCADYCACAEQShqQRRqIAEoAgA2AgAgBEGIAWpBCGogA0EIaigCADYCACAEIAUpAgA3AjQgBEGIAWpBFGogCikDADcCACAEQaQBaiAEQShqQRBqKQMANwIAIAQgBCkDEDcClAEgBCADKQIANwOIAUEIEKwlIgEgBzYCBCABIAY2AgAgBEHYAGogCSkDADcCACAEQeAAaiAEQfAAakEQaikDADcCACAEIAQpA3A3AlACQEEkRSIFDQAgBEEoaiAEQYgBakEk/AoAAAsgBCABNgJMIAQgCDoAaCACQQggBEEoahC5JEHUwIQBEPwcAkAgBQ0AIABBBGogAkEk/AoAAAsgAEEiNgIACyAEQbABaiQAC6sHAgF/AXwjAEEwayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAALQAADhIAAQIDBAUGBwgJCgsMDQ4PEBEACyACIAAtAAE6AAggAkECNgIUIAJBwLqYATYCECACQgE3AhwgAkHVADYCLCACIAJBKGo2AhggAiACQQhqNgIoIAEoAgAgASgCBCACQRBqEMgmIQEMEQsgAiAAKQMINwMIIAJBAjYCFCACQdy6mAE2AhAgAkIBNwIcIAJB1gA2AiwgAiACQShqNgIYIAIgAkEIajYCKCABKAIAIAEoAgQgAkEQahDIJiEBDBALIAIgACkDCDcDCCACQQI2AhQgAkHcupgBNgIQIAJCATcCHCACQdcANgIsIAIgAkEoajYCGCACIAJBCGo2AiggASgCACABKAIEIAJBEGoQyCYhAQwPCyAAKwMIIQMgAkECNgIUIAJB/LqYATYCECACQgE3AhwgAkHYADYCDCACIAM5AyggAiACQQhqNgIYIAIgAkEoajYCCCABKAIAIAEoAgQgAkEQahDIJiEBDA4LIAIgACgCBDYCCCACQQI2AhQgAkGYu5gBNgIQIAJCATcCHCACQQU2AiwgAiACQShqNgIYIAIgAkEIajYCKCABKAIAIAEoAgQgAkEQahDIJiEBDA0LIAIgACkCBDcCCCACQQE2AhQgAkGwu5gBNgIQIAJCATcCHCACQcoANgIsIAIgAkEoajYCGCACIAJBCGo2AiggASgCACABKAIEIAJBEGoQyCYhAQwMCyABKAIAQa26mAFBCiABKAIEKAIMEQsAIQEMCwsgASgCAEG4u5gBQQogASgCBCgCDBELACEBDAoLIAEoAgBBwruYAUEMIAEoAgQoAgwRCwAhAQwJCyABKAIAQc67mAFBDiABKAIEKAIMEQsAIQEMCAsgASgCAEHcu5gBQQggASgCBCgCDBELACEBDAcLIAEoAgBBi62bAUEDIAEoAgQoAgwRCwAhAQwGCyABKAIAQaDumwFBBCABKAIEKAIMEQsAIQEMBQsgASgCAEHku5gBQQwgASgCBCgCDBELACEBDAQLIAEoAgBB8LuYAUEPIAEoAgQoAgwRCwAhAQwDCyABKAIAQf+7mAFBDSABKAIEKAIMEQsAIQEMAgsgASgCAEGMvJgBQQ4gASgCBCgCDBELACEBDAELIAEoAgAgACgCBCAAKAIIIAEoAgQoAgwRCwAhAQsgAkEwaiQAIAELxAYBDn8jAEEgayIBJAAgAC0AACECIAFBGGohA0EAIQQDQCAEQQlLIQUCQANAAkAgAkEBcQ0AIAJB/wFxIQYgACACQQFyIAAtAAAiAiACIAZGIgYbOgAAIAZFDQEgAUEgaiQADwsCQCACQQJxDQACQCAFDQAgBEEBaiEEDAMLIAJB/wFxIQYgACACQQJyIAAtAAAiAiACIAZGGzoAACACIAZHDQELCwJAAkACQEEAKALA4p4BDQBBAEEAKAK44p4BQQFqIgc2ArjingEgB0EDbCEEAkADQAJAQQAoArzingEiCA0AEMMZIQgLIAgoAgQiAiAETw0BIAJBBnQhBiAIKAIAIQICQANAIAZFDQEgAiACKAIAIgVBASAFGzYCAAJAIAVFDQAgAhDdFAsgAkHAAGohAiAGQUBqIQYMAAsLAkBBACgCvOKeASAIRg0AIAgoAgRBBnQhAiAIKAIAIQYDQCACRQ0CIAJBQGohAiAGEOohIAZBwABqIQYMAAsLCyAHIAgQtgchCSAIKAIAIgIgCCgCBEEGdGohCgJAA0AgAiAKRg0BIAJBwABqIQtBACAJKAIIa0EfcSEMIAkoAgAhDSAJKAIEIQ4gAigCBCECA0ACQCACDQAgCyECDAILIAIoAgBBufPd8XlsIAx2IgYgDk8NBSACKAIEIQUgDSAGQQZ0aiIGQQhqIQQCQAJAIAYoAggiB0UNACAHIAI2AgQMAQsgBiACNgIECyAEIAI2AgAgAkEANgIEIAUhAgwACwsLQQAgCTYCvOKeASAIKAIEQQZ0IQIgCCgCACEGA0AgAkUNASACQUBqIQIgBhDqISAGQcAAaiEGDAALCyADQQA6AABBAEIANwLE4p4BQQBCADcCzOKeASABQQhqQQhqQgA3AwBBACgCwOKeASECQQBBATYCwOKeAUEAIAMoAgA2AtTingEgAUIANwMIIAJFDQBBAEEAKAK44p4BQX9qNgK44p4BCyAAEOsRIQIgAC0AAEEDRg0BIAIQ6iFBACEEDAILIAYgDkHIkYMBEMAUAAtBACAANgLE4p4BQQBBADYCyOKeAUEAQQA6ANTingFBAEEANgLQ4p4BEL8fAAsgAC0AACECDAALC/0GAgd/An4jAEHQAGsiAyQAIANBOGogARDDDiADKAJAIQQCQAJAIAMpAzgiCkIAUg0AQQEhBQwBCyADIAMoAkQ2AiQgAyAENgIgIAMgCjcDGCADQRBqIANBGGoQnBUCQAJAIAMoAhAiBCADKAIUIgVBr++bAUEGEK4jDQAgBCAFQfmonAFBBBCuIw0AIAQgBUGW75sBQQYQriMNACAEIAVBnO+bAUEGEK4jDQAgBCAFQYzvmwFBAxCuIw0AIAQgBUGP75sBQQcQriMNACAEIAVBou+bAUEHEK4jDQAgBCAFQanvmwFBBhCuIw0AIAQgBUG175sBQQYQriMNACAEIAVBu++bAUEEEK4jDQAgBCAFQcjvmwFBBRCuIw0AIAQgBUHN75sBQQkQriNFDQELIAMoAiQhBCADKAIgIQUgA0GtgYCAeDYCOCABIAUgBCADQThqEKohC0EBIQUgA0EIaiABQQFBABDhGCADKAIMIQYCQAJAAkAgAygCCEEBcUUNACAGIQQMAQsCQAJAAkAgAS0A2AFB2QBGDQAgA0EANgI0IANCgICAgMAANwIsDAELIAEQlAsgA0E4aiABEMUEIAMoAjwhBCADKAI4IgdBgICAgHhGDQEgAyADKAJANgI0IAMgBDYCMCADIAc2AiwgAS0A2AFB2QBHDQAgASgC1AEhBCABKALQASEHIANBlYGAgHg2AjggASAHIAQgA0E4ahCqIQNAIAEtANgBIgRBAkYNASAEQaMBRg0BIAEQlAsMAAsLIAEoAtABIQcCQAJAIAEoAogBIgRBgCBxDQAgASAEQYAgcjYCiAEgA0E4aiABEIMBIAEgASgCiAFB/19xNgKIAQwBCyADQThqIAEQgwELIAMoAjwhBCADKAI4IghBgICAgHhHDQIgA0EsahDoJQsgBhC/KQsgAykDGBCfHwwBCyADKAJAIQUgASgCzAEhCSADKQMYIQogAykDICELQcgAQQgQxyciASAJNgI0IAEgBzYCMCABIAU2AiwgASAENgIoIAEgCDYCJCABIAY2AiBBACEFIAFBADoAHCABQQA2AhggASALNwMQIAEgCjcDCCABIAk2AgQgASACNgIAIAFBADoARCABIAMpAiw3AjggAUHAAGogA0EsakEIaigCADYCACABIQQLIAAgBDYCBCAAIAU2AgAgA0HQAGokAAuLBgIDfwF+IwBBIGsiBCQAIARBEGogASACKAIYIgUoAiRBABCIAgJAAkAgBC0AEEEERg0AIAQpAxAiB0L/AYNCBFENACAAIAc3AgAMAQsCQAJAAkACQCAFKAIkIgZFDQAgBEEQaiABIAYQ2yAgBC0AEEEERg0AIAQpAxAiB0L/AYNCBFINAQsgAi0AHA0BDAILIAAgBzcCAAwCCyAEQQA2AhAgBEEIaiABIARBEGpB5YecAUEHEJoNAkAgBC0ACEEERg0AIAQpAwgiB0L/AYNCBFENACAAIAc3AgAMAgsgBEEQaiABENAQIAQtABBBBEYNACAEKQMQIgdC/wGDQgRRDQAgACAHNwIADAELAkAgAw0AIAVBCGooAgBBDGwhAyAFQQRqKAIAIQYDQCADRQ0BIARBEGogBiABEKwHAkACQCAELQAQQQRGDQAgBCkDECIHQv8Bg0IEUg0BCyAGQQxqIQYgA0F0aiEDDAELCyAAIAc3AgAMAQsCQCAFLQA8RQ0AIARBADYCECAEQQhqIAEgBEEQakHsh5wBQQgQmg0CQCAELQAIQQRGDQAgBCkDCCIHQv8Bg0IEUQ0AIAAgBzcCAAwCCyAEQRBqIAEQ0BAgBC0AEEEERg0AIAQpAxAiB0L/AYNCBFENACAAIAc3AgAMAQsgBEEANgIQIARBCGogASAEQRBqQdDgmwFBBRCaDQJAIAQtAAhBBEYNACAEKQMIIgdC/wGDQgRRDQAgACAHNwIADAELIARBEGogARDQEAJAIAQtABBBBEYNACAEKQMQIgdC/wGDQgRRDQAgACAHNwIADAELIARBEGogAiABEPkWAkAgBC0AEEEERg0AIAQpAxAiB0L/AYNCBFENACAAIAc3AgAMAQsgBEEQaiAFQTRqIAEQ4CMCQCAELQAQQQRGDQAgBCkDECIHQv8Bg0IEUQ0AIAAgBzcCAAwBCyAEQRBqIAEgBRBKAkAgBC0AEEEERg0AIAQpAxAiB0L/AYNCBFENACAAIAc3AgAMAQsgAEEEOgAACyAEQSBqJAALhgYBCX8jAEHgAGsiCCQAAkACQCACDQBBACEGDAELQQAhCSAIQQA2AhQgCEKAgICAEDcCDCAEIANqIQogAEEEaiELIAUgBkEFdGohDCAIQcgAakEEaiINQQhqIQ4CQANAIAUiBiAMRg0BIAZBIGohBSADIAQgBkEMaigCACIPIAZBEGooAgAiEBD9FkUNAAJAAkAgDyADTyAQIA9qIg8gCk1xDQAgDyADSQ0AIA8gCk0NAQsgCCALNgJIIA0gBikAFDcAACAOIAZBHGovAAA7AAAgCEEwaiAIQcgAahCeEyAIQQxqIAgoAjQgCCgCOBDtKCAJQQFqIQkgCEEwahDzKQwBCwtBACACIAlrIgUgBSACSxshBQJAIAdB/wFxIgNBAkYNACAIIABBJGo2AkggCEHUAGoiBCAGQRxqIgwvAAA7AQAgCCAGKQAUNwJMIAhBMGogCEHIAGoQnhMgCEEMaiAIKAI0IAgoAjgQ7SggCEEwahDzKSAIQTBqIAAoAgAQsRYgCEEkaiAIKAI0IAgoAjhBAUECIANBAUYbIAVqEIkKIAggCEEkajYCSCAEIAwvAAA7AQAgCCAGKQAUNwJMIAhBGGogCEHIAGoQnxMgCEEMaiAIKAIcIAgoAiAQ7SggBSAJakEDaiEJIAhBGGoQ8ykgCEEkahDzKSAIQTBqEPMpDAELIAVBAmohBgJAA0AgBkUNASAIQQxqQSAQsBYgBkF/aiEGDAALCyAFIAlqQQNqIQkLAkBBACACQQNqIgYgCWsiBSAFIAZLGyIGQYCABE8NACAIIAY7AVwgCEEANgJYIAhBBjYCVCAIQby3nAE2AlAgCEEENgJMIAhBAjYCRCAIQbDEgAE2AkAgCEECNgI0IAhBkKObATYCMCAIQQM2AjwgCCAIQQxqNgJIIAggCEHIAGo2AjggASAIQTBqEMImIQYgCEEMahDzKQwBCyAIQQA2AlggCEEBNgJMIAhB8MiAATYCSCAIQgQ3AlAgCEHIAGpBoMSAARC1IQALIAhB4ABqJAAgBgueBgEEfwJAAkACQAJAAkADQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiACgCAA4UDw8AAQIDCAQICAUGBwgICQsMDQ4PCwJAIAAoAgRBgICAgHhGDQAgAEEEaiABEOIeIAEgAEEcahCwJiAAQRBqIAEQoiwPCyAAQQhqIAEQ4h4gASAAQSBqELAmIABBFGogARCiLA8LIABBEGogARDlISABIABBKGoQsSYPCyAAQdgAaiECIABBEGohAwJAAkAgAC0AREEERg0AIAMgARC4CgwBCyADIAEQ5SELIAEgAhCxJg8LIAAoAgxBOGwhBCAAKAIIIQVBACEAA0AgBCAARg0MAkACQAJAAkACQAJAAkACQCAFIABqIgIoAgBBfGoiA0EEIANBB0kbDgcAAQIDBAUGAAsgAkEEaiABEOIeIAEgAkEYahDgJyABIAJBHGoQsCYMBgsgAkEEaiABEOIeIAEgAkEYahDgJyABIAJBHGoQsCYMBQsgAkEQaigCACABEPcDIAEgAkEMahDgJwwECyACQQRqKAIAIAEQ9wMgASACQRBqEOAnDAMLIAJBMGooAgAgARD3AyACIAEQxAoMAgsgAkEQaigCACABEPcDIAJBBGogARDiHiABIAJBHGoQ4CcgASACQSBqELAmDAELIAJBBGogARDhJwsgAEE4aiEADAALCyAAKAIMQThsIQIgACgCCCEAA0AgAkUNCwJAIAAoAgBBB0YNACAAIAEQsxULIABBMGogARC+BCACQUhqIQIgAEE4aiEADAALCyAAQQhqIAEQ4R4PCyAAQQRqIAEQvgQgAEEIaiABEL4EIABBDGogARC+BCAAQRBqIQAMAwsgAEEQaiABEL8iDwsgAEEEaiEADAELIABBBGogARC+BCAAQQhqIQAMAAsLIABBEGogARC/IiABIABBwABqEOInIAEgAEHEAGoQ4icPCyAAKAIIQYSAgIB4SA0CIABBCGogARDhHg8LIABBKGohAgJAIAAtABxBAkYNACABKAIUIABBCGoQ5QgaCyABIAIQ4CcPCyAAQQhqIAEQuAoLC+AGAgd/AX4jAEHwAGsiAyQAIAEoAtABIQRBACEFAkACQAJAIAINACABLQDYASIGIQUCQCAGQfMARw0AIAEQlAsgAS0A2AEhBQsCQCAFQf8BcUHjAEYNACABKALUASECIAEoAtABIQYgA0EYaiABEJckIANBATYCTCADQby3nAE2AkggA0IBNwJUIANBjwU2AmQgA0HjADoAbyADIANB4ABqNgJQIAMgA0HoAGo2AmAgAyADQe8AajYCaCADQTBqIANByABqELQZIANBxABqIANBIGooAgA2AgAgAyADKQIYNwI8IAYgAiADQTBqEJcZIQIgAS0A2AFBogFHDQIgASABEMApEKcWDAILIAEQlAsgBkHzAEYhBQsgA0EQaiABQQBBARDhGCADKAIUIQYCQCADKAIQQQFxRQ0AIABBgYCAgHg2AgAgACAGNgIEDAILAkACQAJAAkACQCABLQDYAUUNACABKALUASECIAEoAtABIQUgA0EkaiABEJckIANBATYCTCADQby3nAE2AkggA0IBNwJU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IAdByABqENwoIAdBKGoQ2icMAQsgBxC6GyAHQSBqEOwnIAdB6ABqEO0nIAdByABqENonCyAHIAg2AiggByAKNgIcIAcgCzYCGCAHIA03AxAgB0EANgIIIAdBBjYCAAwCCyABIAAQliwMAQsgAkHAAGokAA8LIAFBDGohASADQXRqIQMMAAsLiwYDC38CfgF8IwBBwABrIgIkAAJAAkACQAJAAkACQAJAAkAgASgCACIDDgUAAQIEAwALIAEoAhQhBCABKAIQIQUCQCABKQMIIg1CA4NCAFINACANpyIBIAEoAgAiAUEBajYCACABQX9MDQYLIAAgBDYCFCAAIAU2AhAgACANNwMIDAQLIAEoAhQhBCABKAIQIQUCQCABKQMIIg5CA4NCAFINACAOpyIGIAYoAgAiBkEBajYCACAGQX9MDQULAkAgASkDGCINUA0AIA1CA4NQRQ0AIA2nIgEgASgCACIBQQFqNgIAIAFBf0wNBQsgACANNwMYIAAgBDYCFCAAIAU2AhAgACAONwMIDAMLIAErAxAhDyABKAIMIQQgASgCCCEFAkAgASkDGCINUA0AIA1CA4NQRQ0AIA2nIgEgASgCACIBQQFqNgIAIAFBf0wNBAsgACANNwMYIAAgDzkDECAAIAQ2AgwgACAFNgIIDAILIAEoAhghBSABKAIMIQcgASgCCCEIELklIQQgBUEEaigCACEJIAUtAAwhCiACIAVBCGooAgAiBUEAQQRBBBCdDCACKAIEIQsgAigCAEEBRg0DIAIoAgghBgJAIAVBAnQiDEUNACAGIAkgDPwKAAALIAQgCjoADCAEIAU2AgggBCAGNgIEIAQgCzYCAAJAIAEpAxAiDVANACANQgODUEUNACANpyIBIAEoAgAiAUEBajYCACABQX9MDQMLIAAgBDYCGCAAIA03AxAgACAHNgIMIAAgCDYCCAwBCyABKQMIIQ0gASgCBCEEELUlIQEgAiAEEEIgAUE4aiACQThqKQMANwMAIAFBMGogAkEwaikDADcDACABQShqIAJBKGopAwA3AwAgAUEgaiACQSBqKQMANwMAIAFBGGogAkEYaikDADcDACABQRBqIAJBEGopAwA3AwAgAUEIaiACQQhqKQMANwMAIAEgAikDADcDACAAIA03AwggACABNgIECyAAIAM2AgAgAkHAAGokAA8LAAsg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AQwECyACQRBqKAIAIQEgAkEEaigCACIEEIgTIARBGEEIENIVIAFFDQMgAUEEaiIEKAIAIAFBCGooAgAQmxggASgCACAEKAIAEMMqIAFBFEEEENIVDAMLAkAgAkEEaigCACIBKQMoIgZCA4NCAFINACAGpyIEIAQoAgAiBUF/ajYCACAFQQFHDQAgBCAEKAIQEI8iCwJAIAEpAwBCAFINACABQQhqEL0QIAFByABBCBDSFQwDCyABEIgTIAFByABBCBDSFQwCCyACQQRqEN8BDAELIAJBCGoQlAQLIAJBOGohAiADQX9qIgMNAAsLIAAoAgggACgCABDNKgvGBgEHfyMAQZABayIDJAAgA0EgaiACEMUDQQEhBCADKAIkIQUCQAJAIAMoAiBBAXENAEEAIQQgAi0A2QENACACLQDYAUHZAEcNACACEJQLIAMgBTYCLAJAAkAgAigCiAEiBEGAgIDAAHENACACIARBgICAwAByNgKIASADQRBqIAIQxQMgAygCECEGIAIgAigCiAFB////v39xNgKIASADKAIUIQcMAQsgA0EYaiACEMUDIAMoAhwhByADKAIYIQYLQQEhBAJAAkAgBkEBcUUNACAHIQYMAQsgAyAHNgIwAkACQCACLQDYAUEKRg0AIAIoAtQBIQYgAigC0AEhBSADQTRqIAIQlyQgA0EBNgJsIANBvLecATYCaCADQgE3AnQgA0GPBTYChAEgA0EKOgBAIAMgA0GAAWo2AnAgAyADQYgBajYCgAEgAyADQcAAajYCiAEgA0HQAGogA0HoAGoQ5A8gA0HkAGogA0E8aigCADYCACADIAMpAjQ3AlwgBSAGIANB0ABqEJcZIQYgAi0A2AFBogFHDQEgAiACEMApEKcWDAELIAIQlAsgA0EIaiACEIASIAMoAgwhCAJAIAMoAghBAXFFDQAgCCEGDAELIAMgCDYCQAJAAkACQCACLQDYAUEJRg0AIAIoAtQBIQYgAigC0AEhBSADQcQAaiACEJckIANBATYCbCADQby3nAE2AmggA0IBNwJ0IANBjwU2AoQBIANBCToAjwEgAyADQYABajYCcCADIANBiAFqNgKAASADIANBjwFqNgKIASADQdAAaiADQegAahDkDyADQeQAaiADQcwAaigCADYCACADIAMpAkQ3AlwgBSAGIANB0ABqEJcZIQYg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wABqIQUgA0FAaiIDDQALCwJAIAEoAkAiA0UNACAALQA0QQFHDQAgAC0AOiEEIABBgQI7ADkgAygCACAAEMEBIAAgBDoAOgsgAEEBOgA5AkAgASgCGEGAgICAeEYNAAJAIAEoAiwNACAAKAIkIgNFDQAgAUEAIAMQ9AU2AiwLIAFBGGohAwJAIAAtAD0iBA0AAkAgASgCIA0AIABBADoAPQwBCyAAIAEoAhwiBSgCACAFQQRqKAIAEPsYOgA9CyAAIAMQsgogACAEOgA9CyACQcAAaiQAC6wGAQV/IwBB8ABrIgMkACABKALQASEEAkACQAJAAkACQCACRQ0AAkAgAS0A2AFB4wBGDQAgASgC1AEhAiADQRhqIAEQlyQgA0EBNgJMIANBvLecATYCSCADQgE3AlQgA0GPBTYCZCADQeMAOgBvIAMgA0HgAGo2AlAgAyADQegAajYCYCADIANB7wBqNgJoIANBMGogA0HIAGoQtBkgA0HEAGogA0EgaigCADYCACADIAMpAhg3AjwgBCACIANBMGoQlxkhAiABLQDYAUGiAUYNAgwECyABEJQLCyADQRBqIAFBAEEBEOEYIAMoAhQhBSADKAIQQQFxRQ0BIABBAjYCACAAIAU2AgQMAwsgASABEMApEKcWDAELAkACQAJAAkACQCABLQDYAUUNACABKALUASECIAEoAtABIQQgA0EkaiABEJckIANBATYCTCADQby3nAE2AkggA0IBNwJUIANBjwU2AmQgA0EAOgBvIAMgA0HgAGo2AlAgAyADQegAajYCYCADIANB7wBqNgJoIANBMGogA0HIAGoQtBkgA0HEAGogA0EsaigCADYCACADIAMpAiQ3AjwgBCACIANBMGoQlxkhAiABLQDYAUGiAUYNAQwDCyABEJQLIANByABqIAEQsQMgAygCTCEGIAMoAkgiB0GAgICAeEYNASADIAMoAlA2AjggAyAGNgI0IAMgBzYCMAJAAkACQAJAIAEtANgBQQlGDQBBACEGDAELIANBCToAYCADQQhqIAEgA0HgAGoQlREgAygCDCEGIAMoAghBAXENAQsgAyAGNgJIAkAgARDNJCIHRQ0AIABBAjYCACAAIAc2AgQgA0HIAGoQvygMAgsgACADKQIwNwIEIAAgBTYCHCAAIAY2AhggACAENgIQIAAgAjYCACAAIAEo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IAYhAwsgACADNgIIIAAgBTYCBCAAIAQ2AgBBNEUNASAAQQxqIAJBCGpBNPwKAAAMAQsgAEErNgIACyACQbABaiQADwtB3J+EARCMGQALIAJBADYCgAEgAkEBNgJ0IAJB4PqDATYCcCACQgQ3AnggAkHwAGpB5P+DARC1IQALQYyhhAEQjBkAC0GUgIQBQR9BtICEARCyFgALQeyfhAEQjBkAC0GUgIQBQR9BtICEARCyFgALIAQgA0GEgIQBEMAUAAvfBQIGfwF+IwBB0ABrIgMkACADQQhqIAEoAgAiBEHAAGpBmMaEARC4ISADKAIMIQVBACEGIAMoAggiB0EANgIIIANBGGogBEHYAGooAgA2AgAgAyAEKQJQNwMQIARB0ABqIQggAkH/AXFBAnRBqLyeAWooAgAhBANAAkACQAJAAkACQCAEIAZGDQAgBg0BDAILIAEQnCIaIANBIGogBygCBCAHKAIIQRAQlggCQCADLQAgDQAgAygCJCIGQYCwA3NBgIC8f2pBgJC8f0kNACAGQYCAxABGDQAgA0E4akEIaiIBIANBEGpBCGooAgA2AgAgA0HMAGogCEEIaigCADYCACAAIAY2AgQgACADKQMQIgk3AgggACACOgAhIABBBDoAICADIAgpAgA3AkQgAEEQaiABKQMANwIAIABBGGogA0E4akEQaikDADcCACADIAk3AzggAEEiNgIADAMLIANBIGpBCGoiBiADQRBqQQhqKAIANgIAIANBNGogCEEIaigCADYCACADIAMpAxA3AyAgAyAIKQIANwIsIABBHGogASgCBCABKAIIEMkTIABBCDYCACAAIAMpAyA3AiggAEEwaiAGKQMANwIAIABBOGogA0EgakEQaikDADcCAAwCCyABEJwiDQAgA0E0aiAIQQhqKAIAIgY2AgAgA0EgakEIaiIEIAY2AgAgAyAIKQIAIgk3AiwgAyAJNwMgIABBHGogASgCBCABKAIIEMkTIABBCjYCACAAIAMpAyA3AiggAEEwaiAEKQMANwIAIABBOGogA0EwaikDADcCAAwBCyABEM4PELcgDQEgA0EgaiABEJINIABBHGogASgCBCABKAIIEMkTIABBCTYCACAAIAMpAiA3AiggAEEwaiADQShqKQIANwIAIABBOGogA0EwaikCADcCAAsgBSAFKAIAQQFqNgIA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AwAgAEEwaiABQTBqKQMANwMAIABBOGogAUE4aikDADcDACABQcAAQQgQ0hUPC0EALQDg554BGkHAABB8IgJFDQEgAkIANwMQIAJBAzYCCCACQRs2AgAgAkEYakIANwMAIAJBIGpCADcDAEEALQDg554BGkHAABB8IgFFDQEgASACNgIEIAFBEDYCACABQRBqIgJBBToAACABQQhqQgA3AwAgAEEIakIANwMAIAAgASkDADcDACAAQRhqIAFBGGopAwA3AwAgAEEgaiABQSBqKQMANwMAIABBKGogAUEoaikDADcDACAAQTBqIAFBMGopAwA3AwAgAEE4aiABQThqKQMANwMAIABBEGogAikDADcDACABQcAAQQgQ0hUPCyABKwMIIgQgBGINAQJAIASZRAAAAAAAAPB/YQ0AIABCADcDICAAIAQ5AxggAEIANwMQIABBAzYCCCAAQRs2AgAPCxCqHSEDAkAgBL1CAFMNACAAQgA3AxAgACADNwMIIABBGjYCACAAQRVqQgA3AAAPC0EALQDg554BGkHAABB8IgFFDQAgAUIANwMQIAEgAzcCCCABQRo2AgAgAEIANwMIIAAgATYCBCAAQRA2AgAgAUEVakIANwAAIABBEGpBADoAAA8LAAsgAEIANwMQIABCsZyF8wQ3AwggAEEaNgIAIABBFWpCADcAAAuiBQEMfyMAQTBrIgMkAAJAIAEoAnggAkYNACABIAI2AnggASABKAJwIgQgASgCdGo2AmwgASAEIAIgASgCfGtqNgJoCyABEIgBIAEoAnghBQJAAkACQAJAIAEoAmwgASgCaCICRw0AIAUhBgwBCwJAAkACQCACLQAAIgRBPkcNAEETIQcMAQsgBEEvRw0BQRAhBwsgASAFQQFqIgY2AnggASACQQFqNgJoDAILIAFBADoAkwEgA0EEaiABIARBAnRB1JuaAWooAgARBgACQCADLQAEQQFxRQ0AIAMoAgghAiADQQg2AhggAyACNgIcIAEgA0EYahCUBSABKAJ4IQZBogEhBwwCCyABKAJ4IQYgAy0ABSIHQaMBRw0BCyABLQAoIQJBowEhBwwBCyAGIQICQCABKAIwQYCAgIB4Rg0AIAEoAkQhBCABQQA2AkQgA0EANgIUIAMgAUE8ajYCDCADIAQ2AhAgAyABKAJAIgI2AgQgAyACIARBGGwiCGoiCTYCCAJAIARFDQAgAUEwaiEKIAEoAjgiC0EFdCEMA0AgA0EYakEQaiINIAJBEGopAwA3AwAgA0EYakEIaiIOIAJBCGopAwA3AwAgAyACKQMANwMYAkAgCyAKKAIARw0AIApByJOaARDjGwsgAkEYaiECIAEoAjQgDGoiBCADKQMYNwMAIARBEGogDSkDADcDACAEQQhqIA4pAwA3AwAgBEEcakEAOgAAIARBGGogBTYCACABIAtBAWoiCzYCOCAMQSBqIQwgCEFoaiIIDQALIAMgCTYCBAsgA0EEahC7CSABKAJ4IQILIAEgAjYCJCABIAc6ACsgASABLQAoIgI6ACkLIAAgAjoACSAAIAc6AAggACAGNgIEIAAgBTYCACADQTBqJAAL8gQCD38BfiAAKAIEQQFqIgRBA3YgBEEHcUEAR2ohBSAAKAIAIgYhBwNAAkAgBQ0AAkACQCAEQQhJDQAgBiAEaiAGKQAANwAADAELIARFDQAgBkEIaiAGIAT8CgAACyADQQFxIQggA0EccSEJIANBAnYhCiADQQNxIQtBACEGA0ACQAJAIAYiByAETw0AIAcgByAESWohBiAAKAIAIgUgB2otAABBgAFHDQIgBSADIAdBf3NsaiIMIAlqIQ0DQCABIAAgByACEQwAIRMgACgCBCEFIAUgByAFIBOnIg5xIg9rIAAoAgAiECAFIBMQ4hIiESAPa3NxQQhJDQIgECARaiIPLQAAIRIgDyAOQRl2Ig46AAAgACgCACARQXhqIAVxakEIaiAOOgAAIBAgAyARQX9zbGohBQJAIBJB/wFHDQAgACgCBCEQIAAoAgAgB2pB/wE6AAAgACgCACAQIAdBeGpxakEIakH/AToAACADRQ0EIAUgDCAD/AoAAAwECyAMIAUgChDyHCALRQ0AIAUgCWohEEEAIQUCQCALQQFGDQAgDS8AACEFIA0gEC8AADsAACAQIAU7AABBAiEFIAhFDQELIA0gBWoiDi0AACEPIA4gECAFaiIFLQAAOgAAIAUgDzoAAAwACwsgACAAKAIEIgcgB0EBakEDdkEHbCAHQQhJGyAAKAIMazYCCA8LIBAgB2ogDkEZdiIQOgAAIAAoAgAgBSAHQXhqcWpBCGogEDoAAAwACwsgByAHKQMAIhNCf4VCB4hCgYKEiJCgwIABgyATQv/+/fv379+//wCEfDcDACAHQQhqIQcgBUF/aiEFDAALC8cFAQh/IwBBwAFrIgMkACADQfwAaiEEIANBOGpBCGohBSADQQhqQQhqIQYgACgCACEHAkACQANAAkACQCAHKAIAIghFDQAgAyAINgJsAkAgAS0A2AEiAEGjAUcNACADQawBaiABEJckIAEoAtQBIQAgASgC0AEhCCADQQE2AnwgA0G8t5wBNgJ4IANCATcChAEgA0GPBTYCdCADIANB8ABqNgKAASADIANB7ABqNgJwIANBCGogA0H4AGoQtBkgA0EcaiADQbQBaigCADYCACADIAMpAqwBNwIUIAEgCCAAIANBCGoQqiEMBAsgACAILQAARw0BDAMLIAEtANgBIgBBowFGDQILIANBAToAbCADIAEoAtABNgJwAkACQCAAQRhGDQBBBCEIQQAhCUEAIQoMAQsgA0H4AGogAUEBEPQBIAMoAnwhCCADKAJ4IgpBgICAgHhGDQMgAygCgAEhCSABLQDYASEACwJAAkACQCAAQf8BcSIAQdgARg0AIABB3wBHDQELIAMgCTYChAEgAyAINgKAASADIAo2AnwgAyABNgJ4IANBCGogASAEEIwIDAELIAMgCTYCtAEgAyAINgKwASADIAo2AqwBIAEoAogBIQAgAyADQewAajYCvAEgAyADQfAAajYCuAECQAJAIABBgIAEcUUNACABIABB//97cTYCiAEgA0H4AGogA0GsAWogARC9EiABIAEoAogBQYCABHI2AogBDAELIANB+ABqIANBrAFqIAEQvRILAkAgAygCeEETRw0AIAMgAygCfDYCDCADQRM2AggMAQtBMEUNACADQQhqIANB+ABqQTD8CgAACyADKAIMIQggAygCCCIAQRNGDQICQEEoRQ0AIAUgBkEo/AoAAAsgAyAINgI8IAMgADYCOCACIANBOGpBtOybARDqHAwACwtBACEICyADQcABaiQAIAgLtAUCCn8BfiMAQeAAayIEJAAgBEE4aiABEMMOIAQoAkAhBQJAAkAgBCkDOCIOQgBSDQBBASEBIAUhBgwBCyAEKAJEIQcCQAJAAkAgAS0A2AFBCEYNACAEQThqIAEQqQgCQCAEKAI4IghBgICAgHhHDQAgBCgCPCEGDAMLIARBEGogBEHIAGooAgA2AgAgBCAEKQJANwMIIAQoAjwhCUECIQoM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NwMAIAIgASkCBDcDAAwFCyACQQhqIAFBDGooAgA2AgAgAiABKQIENwMAQQchBQwECyACQQhqIAFBDGopAgA3AwAgAiABKQIENwMAQQUhBQwDCyACQQhqIAFBDGopAgA3AwAgAiABKQIENwMAQQkhBQwCCyACQQhqIAFBDGopAgA3AwAgAiABKQIENwMAQQYhBQwBCyACQQhqIAFBDGopAgA3AwAgAiABKQIENwMAQQQhBQsLIAAgBTYCACAAIAIpAwA3AgQgACAGNwMoIAAgAzYCJCAAIAQ2AiAgAEEMaiACQQhqKQMANwIAIABBFGogAkEQaikDADcCACAAQRxqIAJBGGooAgA2AgAMAgsgAEELNgIAIAAgATYCBAwCCyACQQxqIAFBEGopAgA3AgAgAkEUaiABQRhqKQIANwIAIABBADYCACAAQQA2AiAgAiABKQIINwIEIAAgAikDADcCBCAAQQxqIAJBCGopAwA3AgAgAEEUaiACQRBqKQMANwIAIABBHGogAkEYaigCADYCAAsgAUHAAEEIENIVCyACQSBqJAAL9wQCCn8BfiMAQcAAayICJAACQAJAAkACQCABLQAlIgNBAkYNACABKAIYIQQgASgCFCEFIAEoAhAhBiABLQAkIQcgASgCBCEIIAEoAgAhCQJAIAEpAwgiDEIDg0IAUg0AIAynIgogCigCACIKQQFqNgIAIApBf0wNAwsgAS0AHCELELYlIQogAkEIaiABKAIgEKkFIApBIGogAkEIakEgaikDADcDACAKQRhqIAJBCGpBGGopAwA3AwAgCkEQaiACQQhqQRBqKQMANwMAIApBCGogAkEIakEIaikDADcDACAKIAIpAwg3AwAgACAHOgAkIAAgCjYCICAAIAs6ABwgACAENgIYIAAgBTYCFCAAIAY2AhAgACAMNwMIIAAgCDYCBCAAIAk2AgAMAQsgASgCBCEKIAEoAhAhCCABKAIMIQkgAkEIaiABKAIIIgZBCEE4EPcOIAIoAgwhBSACKAIIQQFGDQIgAigCECEHAkAgBUUNACAGQThsIQMgByEBIAUhBANAIANFDQEgAkEIaiAKEGQgAUEwaiACQQhqQTBqKQMANwMAIAFBKGogAkEIakEoaikDADcDACABQSBqIAJBCGpBIGopAwA3AwAgAUEYaiACQQhqQRhqKQMANwMAIAFBEGogAkEIakEQaikDADcDACABQQhqIAJBCGpBCGopAwA3AwAgASACKQMINwMAIAFBOGohASADQUhqIQMgCkE4aiEKIARBf2oiBA0ACwsgACAINgIQIAAgCTYCDCAAIAY2AgggACAHNgIEIAAgBTYCAEECIQMLIAAgAzoAJSACQcAAaiQADwsACyAFIAIoAhBBtOqaARDBJgAL9wQCCn8BfiMAQcAAayICJAACQAJAAkACQCABLQAlIgNBAkYNACABKAIYIQQgASgCFCEFIAEoAhAhBiABLQAkIQcgASgCBCEIIAEoAgAhCQJAIAEpAwgiDEIDg0IAUg0AIAynIgogCigCACIKQQFqNgIAIApBf0wNAwsgAS0AHCELELYlIQogAkEIaiABKAIgEKoFIApBIGogAkEIakEgaikDADcDACAKQRhqIAJBCGpBGGopAwA3AwAgCkEQaiACQQhqQRBqKQMANwMAIApBCGogAkEIakEIaikDADcDACAKIAIpAwg3AwAgACAHOgAkIAAgCjYCICAAIAs6ABwgACAENgIYIAAgBTYCFCAAIAY2AhAgACAMNwMIIAAgCDYCBCAAIAk2AgAMAQsgASgCBCEKIAEoAhAhCCABKAIMIQkgAkEIaiABKAIIIgZBCEE4EPcOIAIoAgwhBSACKAIIQQFGDQIgAigCECEHAkAgBUUNACAGQThsIQMgByEBIAUhBANAIANFDQEgAkEIaiAKEGQgAUEwaiACQQhqQTBqKQMANwMAIAFBKGogAkEIakEoaikDADcDACABQSBqIAJBCGpBIGopAwA3AwAgAUEYaiACQQhqQRhqKQMANwMAIAFBEGogAkEIakEQaikDADcDACABQQhqIAJBCGpBCGopAwA3AwAgASACKQMINwMAIAFBOGohASADQUhqIQMgCkE4aiEKIARBf2oiBA0ACwsgACAINgIQIAAgCTYCDCAAIAY2AgggACAHNgIEIAAgBTYCAEECIQMLIAAgAzoAJSACQcAAaiQADwsACyAFIAIoAhBBtOqaARDBJgALiwUBC39BACEDAkAgACgCACIEKAIIDQAgBBCkEyEDCwJAAkAgBCgCECAEKAIUIANBqNiEARCIIygCACIFDQAgASACaiEGAkADQAJAAkAgASAGRg0AIAEtAAAhByABQQFqIQECQCAEKAIEIgggBCgCCCIJ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AhAgASACNgIAAkACQANAAkAgAw0AIAEgAjYCACACQQFxRQ0DIAEoAgghACABKAIEIgMNAiABKAIMIQQgACEDA0ACQCAEDQBBACEADAQLIARBf2ohBCADKAKYAyEDDAALCyABIANBf2o2AiACQAJAAkACQAJAAkACQCACQQFxIgNFDQAgASgCBA0AIAEoAgghAyABKAIMIQADQAJAIAANACABQgA3AgggASADNgIEQQEhAgwDCyAAQX9qIQAgAygCmAMhAwwACwsgA0UNASABKAIEIQMLIAEoAgwhBCABKAIIIQACQAJAA0AgBCADLwGSA0kNASABQSRqIAMgABCTGSABKAIkIgNFDQIgASgCLCEEIAEoAighAAwACwsgBEEBaiEFAkACQCAADQAgAyEGDAELIAMgBUECdGpBmANqIQUDQCAFKAIAIgZBmANqIQUgAEF/aiIADQALQQAhBQsgASAFNgIMIAFBADYCCCABIAY2AgQgA0UNCCADIARBDGxqQYwCahC6KiADIARBGGxqIgMtAAAOBQUFBQMEAgtBkLabARD4KQALQYSymwEQ+CkACyADQQRqEMcFDAILIANBBGoQuioMAQsgA0EEahDiEyADKAIEIAMoAggQvCoLIAEoAiAhAwwACwsDQCABQSRqIAMgABCTGSABKAIkIgNFDQEgASgCKCEADAALCyABQTBqJAALxAQCC38FfiMAQfAAayICJAAgASgCBCEDIAJBMGogASgCCCIEQQhBOBD3DiACKAI0IQUCQCACKAIwQQFGDQAgAigCOCEGAkAgBUUNACAEQThsIQcgBiEBIAUhCANAIAdFDQEgAygCLCEJIAMoAighCiACQQhqIAMQugICQAJAIAMoAjAiCw0AQQAhDAwBCxC1JSEMIAJBMGogCxBCIAxBOGogAkEwakE4aikDADcDACAMQTBqIAJBMGpBMGopAwA3AwAgDEEoaiACQTBqQShqKQMANwMAIAxBIGogAkEwakEgaikDADcDACAMQRhqIAJBMGpBGGopAwA3AwAgDEEQaiACQTBqQRBqKQMANwMAIAxBCGogAkEwakEIaikDADcDACAMIAIpAzA3AwALIAMtADQhCyACQTBqQSBqIAJBCGpBIGopAwAiDTcDACACQTBqQRhqIAJBCGpBGGopAwAiDjcDACACQTBqQRBqIAJBCGpB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EMAUAAuPBQECfyMAQTBrIgMkAAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgBBfmoiBEEGIARBCUkbDgkAAQIDBAUGBwgACyADQQE2AhQgA0G8t5wBNgIQIANCATcCHCADQZcCNgIMIAMgACkCCDcCKCADIANBCGo2AhggAyADQShqNgIIIAEgAiADQRBqEMgmIQAMCAsgAyAAQQRqNgIIIANBAjYCFCADQZj0mAE2AhAgA0IBNwIcIANB/gA2AiwgAyADQShqNgIYIAMgA0EIajYCKCABIAIgA0EQahDIJiEADAcLIANBADYCICADQQE2AhQgA0G89JgBNgIQIANCBDcCGCABIAIgA0EQahDIJiEADAYLIANBADYCICADQQE2AhQgA0HM9JgBNgIQIANCBDcCGCABIAIgA0EQahDIJiEADAULIANBADYCICADQQE2AhQgA0Ho9JgBNgIQIANCBDcCGCABIAIgA0EQahDIJiEADAQLIANBADYCICADQQE2AhQgA0GI9ZgBNgIQIANCBDcCGCABIAIgA0EQahDIJiEADAMLIAMgADYCCCADQQE2AhQgA0G8t5wBNgIQIANCATcCHCADQZgCNgIsIAMgA0EoajYCGCADIANBCGo2AiggASACIANBEGoQyCYhAAwCCyADIABBBGo2AgggA0ECNgIUIANBkPWYATYCECADQgE3AhwgA0H+ADYCLCADIANBKGo2AhggAyADQQhqNgIoIAEgAiADQRBqEMgmIQAMAQsgAyAAQQRqNgIIIANBATYCFCADQby3nAE2AhAgA0IBNwIcIANB/gA2AiwgAyADQShqNgIYIAMgA0EIajYCKCABIAIgA0EQahDIJiEACyADQTBqJAAgAAveBAEWfyMAQeAAayICJAAgASgCBCEDIAIgASgCCCIEQQRBEBD3DiACKAIEIQUCQAJAIAIoAgBBAUYNACACKAIIIQYCQCAFRQ0AIAMgBEEEdGohB0EAIQggBSEJA0AgAyAHRg0BIAMoAgghCiADKAIEIQsgAygCACEBELUlIQwgAiABEEIgDEE4aiACQThqKQMANwMAIAxBMGogAkEwaikDADcDACAMQShqIAJBKGopAwA3AwAgDEEgaiACQSBqKQMANwMAIAxBGGogAkEYaikDADcDACAMQRBqIAJBEGopAwA3AwAgDEEIaiACQQhq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xeKME4UhCAwCCyACNQAAIQggAUEIaiAEQXxqIAIgBEGEw5sBEJ8hIAEoAgxBBEcNBSAIQtORjK2I0dqfJIUhByABKAIINQAAQsTmwZvgxeKME4UhCAwBCyACIARqQX9qMQAAQgiGIAIgBEEBdmoxAACEQsTmwZvgxeKME4UhCCACMQAAQtORjK2I0dqfJIUhBwsgAUEgaiQAIANB3cvdnnlsIAdC/////w+DIAhCIIh+IASthSAHQiCIIAhC/////w+DfkIgiYUiCKdqQd3L3Z55bCAIQiCIp2pBycH4/QBsQaPuuZwEakEPd60PC0EIIABB5MKbARCHKgALQRAgAEH0wpsBEIcqAAtByJGcAUErIAFBH2pB7O2YAUG0w5sBEKMSAAtByJGcAUErIAFBH2pB7O2YAUGUw5sBEKMSAAvlBAEGfyMAQTBrIgMkACADIAI2AgggAyABNgIEIANBIGogA0EEahCdBgJAAkACQAJAIAMoAiAiBEUNACADKAIkIQECQCADKAIsDQAgACABNgIIIAAgBDYCBCAAQYCAgIB4NgIADAQLIAJBf0wNAQJAAkAgAg0AQQEhBQwBC0EALQDg554BGiACEHwiBUUNAwtBACEGIANBADYCFCADIAU2AhAgAyACNgIMAkAgASACTQ0AIANBDGpBACABENEMIAMoAgwhAiADKAIQIQUgAygCFCEGCwJAIAFFDQAgBSAGaiAEIAH8CgAACyADIAYgAWoiATYCFAJAIAIgAWtBAksNACADQQxqIAFBAxDRDCADKAIQIQUgAygCFCEBCyAFIAFqIgJBAC8AndeYASIHOwAAIAJBAmpBAC0An9eYASIIOgAAIAMgAUEDaiICNgIUIAMgAykCBDcCGAJAA0AgA0EgaiADQRhqEJ0GIAMoAiAiBkUNASADKAIsIQQCQCADKAIkIgEgAygCDCACa00NACADQQxqIAIgARDRDCADKAIQIQUgAygCFCECCwJAIAFFDQAgBSACaiAGIAH8CgAACyADIAIgAWoiAjYCFCAERQ0AAkAgAygCDCACa0ECSw0AIANBDGogAkEDENEMIAMoAhAhBSADKAIUIQILIAUgAmoiASAHOwAAIAFBAmogCDoAACADIAJBA2oiAjYCFAwACwsgACADKQIMNwIAIABBCGogA0EMakEIaigCADYCAAwDCyAAQQA2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IQAMAQsgBUEMaigCACAHQQxqKAIASSEACwJAAkAgAygCACIEIAIoAgAiBkYNACAEIAZJIQQMAQsgA0EMaigCACACQQxqKAIASSEECwJAAkAgAyACIAUgABsgBBsiBigCACIIIAcgBSACIAQbIAAbIgkoAgAiCkYNACAIIApJIQgMAQsgBkEMaigCACAJQQxqKAIASSEICyABIAUgByAAGyIAKQIANwIAIAFBEGogAEEQaikCADcCACABQQhqIABBCGopAgA3AgAgAUEoaiAGIAkgCBsiAEEQaikCADcCACABQSBqIABBCGopAgA3AgAgASAAKQIANwIYIAFBwABqIAkgBiAIGyIAQRBqKQIANwIAIAFBOGogAEEIaikCADcCACABIAApAgA3AjAgASACIAMgBBsiACkCADcCSCABQdAAaiAAQQhqKQIANwIAIAFB2ABqIABBEGopAgA3AgAL4wQBBn8jAEEQayICJAAgAEHAAGoQ2SUCQCAAKAKEASIDRQ0AIAAoAoABIgQgA0HYAGxqIQUDQAJAAkAgBCgCACIDQQVHDQAgBCgCBCABEKMCDAELIANBBEYNAAJAAkACQCADDgQDAAECAwsgBCgCBEEBRw0CIAQoAgggARCjAgwCCyAEKAIEIAEQ5QUMAQsgBCgCDCIDRQ0AIANBKGwhBiAEKAIIQQRqIQMDQAJAAkACQAJAAkAgA0F8aigCAA4FBAABAgMECyADKAIAQQFHDQMgA0EEaigCACABEKMCDAMLIAMoAgAgARCjAgwCCyABIAMoAgAQxAkMAQsgAyABEOwLCyADQShqIQMgBkFYaiIGDQALCyAEQdgAaiIEIAVHDQALCwJAIAAoAngiA0UNACADIAEQ0R0LAkAgACgCmAEiA0UNACAAKAKUASIGIANBKGxqIQUDQAJAAkACQAJAAkAgBigCAA4FBAABAgMECyAGKAIEQQFHDQMgBigCCCABEKMCDAMLIAYoAgQgARCjAgwCCyAGKAIEIgdBwABqIAEQwQogBygCmAEhBCAHKAKUASEDIAIgATYCCAJAIARFDQAgBEEobCEEA0AgAkEIaiADEMwIIANBKGohAyAEQVhqIgQNAAsLIActADxBBkYNASAHQRBqENklDAELIAYoAgwhBCAGKAIIIQMgAiABNgIMIARFDQAgBEEobCEEA0AgAkEMaiAD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fiMAQeABayICJAACQCABKAIYIgMoAhQiBEUNACADKAIQIQUgBEEMbCEEIAAtADkhBgNAIAUoAgAhByAAQQE6ADkgByAAENkBIAAgBjoAOSAFQQxqIQUgBEF0aiIEDQALCyAAQSxqIQUCQAJAIAEtABRBAkYNACAAKAIwEKcVIQQgAkE0aiIHIAVBCGooAgA2AgAgAkEIakEAKQOA/Z0BIgg3AwAgAkEQaiIGQQApA/j8nQEiCTcDACACQRhqIAg3AwAgAiAANgIgIAIgBDYCJCACQQE6ADkgAkEBOgAoIAIgBSkCADcCLCACIAk3AwAgAiAAKAE6NgE6IAIgAC0AODoAOCACIAFBAxDUDyACKAIwEKcVIQAgAkGAAWpBNGogBygCADYCACACQYABakEIaiAINwMAIAJBgAFqQRBqIgUgCTcDACACQYABakEYaiAINwMAIAIgADYCpAEgAkEBOgC5ASACQQE6AKgBIAIgAikCLDcCrAEgAiAJNwOAASACIAIoATo2AboBIAIgAi0AODoAuAEgAiACNgKgASACQYABaiADENUEIAJBgAFqEKMKIAUQvgogAhCjCiAGEL4KDAELIAAoAjAQpxUhBCACQbQBaiAFQQhqKAIANgIAIAJBgAFqQQhqQQApA4D9nQEiCDcDACACQZABaiIHQQApA/j8nQEiCTcDACACQZgBaiAINwMAIAIgADYCoAEgAiAENgKkASACQQE6ALkBIAJBAToAqAEgAiAFKQIANwKsASACIAk3A4ABIAIgACgBOjYBugEgAiAALQA4OgC4ASACQYABaiADENUEIAJBgAFqEKMKIAcQvgoLIAJB4AFqJAALvQQCBn8DfiMAQRBrIgMkACADIAIQqRwgAykDACEJAkACQAJAAkACQCABKAIMRQ0AIAEoAgAiBEFgaiEFIAkgAygCCBDhHCIJQhmIQoGChIiQoMCAAX4hCiABKAIEIgYgCadxIQFBACEHAkACQANAAkAgBCABaikAACILIAqFIglCf4UgCUL//fv379+//358g0KAgYKEiJCgwIB/gyIJUA0AA0AgAyAFIAl6p0EDdiABaiAGcSIIQQV0axCkJg0DIAlCf3wgCYMiCVBFDQALCyALIAtCAYaDQoCBgoSIkKDAgH+DUEUNAiABIAdBCGoiB2ogBnEhAQwACwsgBEEAIAhrQQV0aiIBQXBqKQMAIglQRQ0CQQYhAQwDCyADKQMAIQkLIABBBjoALCAJQgODQgBSDQMgCaciACAAKAIAIgFBf2o2AgAgAUEBRw0DIAAgACgCEBCPIgwDCwJAIAlCA4NCAFINACAJpyIEIAQoAgAiBEEBajYCACAEQX9MDQILIAIoAgwhBCACKAIIIQYgAUF4aigCACEBAkAgAikDACIKQgODQgBSDQAgCqciAiACKAIAIgJBAWo2AgAgAkF/TA0CCyAAIAE2AiggAEIANwMgIAAgCTcDGCAAQgA3AxAgACAENgIMIAAgBjYCCCAAIAo3AwBBACEBCyAAIAE6ACwgAykDACIJQgODQgBSDQEgCaciACAAKAIAIgFBf2o2AgAgAUEBRw0BIAAgACgCEBCPIgwBCwALIANBEGokAAvNBAECfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADhMAEREBAgMEBQYHCAkKCwwNDg8QAAsgASAAQQRqEIwHDwsgAEEEaiABEJYsIABBCGogARC3LA8LIABBDGogARD8Jw8LIAEoAhQgAEEQahDlCBogAEEoaiABELcsDwsgAEEQaiABKAIUEIcmDwsgAEEQaiABKAIUEIcmDwsgAEEEaiABEJYsIABBCGogARC3LCAAKAIURQ0KIABBFGogARC3LA8LIABBEGogARCWLCAAKAIMQRhsIQIgACgCCCEAA0AgAkUNCiAAQRRqIAEQ/CcgASAAEIwHIAJBaGohAiAAQRhqIQAMAAsLIABBBGogARCWLA8LIAEgACgCBCIAQcgAahCMByAAQeAAaiECAkACQAJAIAAoAgBBeWoOAgECAAsgACABELMVCyABIABBKGoQjAcLIAIoAgBBgICAgHhGDQcgASACEIwHDwsgAEEEaiABEJYsIABBCGogARC3LA8LIABBBGogARCWLCAAQQhqIAEQtywPCwJAIAAoAgQiAkECRg0AIABBCGohAwJAIAJBAXFFDQAgAyABEJYsDAELIAMgARC4LAsgAEEYaiABEPwnIABBHGogARD8JyAAQQxqIAEQtywPCyAAQQRqIAEQ/h8gAEEMaiABEJYsIABBEGogARC3LA8LIABBBGogARD+HyAAQQxqIAEQliwgAEEQaiABELcsDwsgASAAQQhqEIkFDwsgAEEEaiAB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IgY2AnggASAEQQFqIgU2AmgCQAJAIAMgBUYNACADIAVrIQdBACEDDAELIABBADoADCAAQYCAgIB4NgIAIAEgASgCcCIEIAEoAnRqNgJsIAEgBCAGIAEoAnwiA2siBWo2AmggACAFIAIgA2siA2s2AgggACAEIANqNgIEDwsDQAJAIAMiBCAHIARBIGoiCCAHIAhJGyIDTw0AAkADQCAFIARqLQAAIglBgJCaAWotAAANASADIARBAWoiBEYNAgwACwsgCcAhAwJAIARFDQAgASAGIARqIgY2AnggASABKAJwIgQgASgCdGo2AmwgASAEIAYgASgCfGtqNgJoCwJAIANBf0oNACAAIAEgAhC3Ag8LAkAgA0HcAEcNACAAIAEgAhC3Ag8LIABBADoADCAAQYCAgIB4NgIAIAEgASgCcCIEIAEoAnRqNgJsIAEgBCAGIAEoAnwiA2siBWo2AmggACAFIAIgA2siA2s2AgggACAEIANqNgIEDwsgCCAHSQ0ACyAAQQA6AAwgAEGAgICAeDYCACABIAYgB2oiAzYCeCABIAEoAnAiBCABKAJ0ajYCbCABIAQgAyABKAJ8IgVrIgNqNgJoIAAgAyACIAVrIgVrNgIIIAAgBCAFajYCBAvQBAIGfwF+IwBBgAFrIgMkAAJAAkACQAJAIAEtANgBIgRBgAFGDQACQCAEQcAARg0AIANBKGpBBHIgARCXJCADQRo2AjwgA0Gs0ZsBNgI4IANBsICAgHg2AiggASgC0AEgASgC1AEgA0EoahCXGSEFIAEtANgBQaIBRw0DIAEgARDAKRCnFgwDCyADQegAaiABELUZQgEhCQwBCyADQShqIAEQww4gAygCMCEFIAMpAygiCVANASADQQA2AnggAyADKAI0NgJ0IAMgBTYCcCADQQA6AHwgAyAJNwNoQgAhCQsgA0EIakEQaiADQfAAaikDADcDACADQSBqIANB6ABqQRBqKQMANwMAIAMgCTcDCCADIAMpA2g3AxACQAJAAkAgAS0A2AFBAkYNACABEIISIgUNAUEDIQYMAgsgA0HoAGogARCpCAJAIAMoAmgiB0GAgICAeEYNACADQcgAaiADQfQAaikCADcDACADIAMpAmw3A0BBAiEGDAILIAMoAmwhBQsgA0EIahDfIwwBCyABKALMASEIQdgAQQgQxyciBSAHNgIg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IAc2AgAgCCAEKQMYNwIIIAhBEGogBEEgaikDADcCACAIQRhqIARBGGpBEGopAwA3AgAgASgCzAEhBwJAIAIoAgBBMEcNACAEQemAgIB4NgIwIAEgBSAHIARBMGoQqiELELUlIgZBADYCCCAGQjE3AwAQwyUiAUIANwIYIAFCCDcCECABQgA3AgggAUKAgICAwAA3AgAgACADNgIUIABBADYCECAAIAc2AgwgACAFNgIIIAAgCDYCBCAAIAI2AgAgBEIANwI4IARCADcCQCAEIAY2AjAgBCABNgI0IARBMGoQmSQLIARB0ABqJAALswQBB38jAEEwayICJAACQAJAAkACQCABKAIAQQdHDQACQCABKAIEIgMtAEVBA0YNACADQSBqIAAQuxkLIAMtAFENACADKQMAQgBSDQAgAygCSCEEAkACQCADLQBQDQAgBEF/aiIBIAAoAgQiBU8NBCAAKAIAIAFqLQAAQe0ARg0BDAILAkAgACgCDCIGDQBBACEBDAULIAAoAgghB0EAIQAgBiEBAkACQANAAkAgAUEBSw0AAkAgByAAQQxsaigCACIBIARGDQAgACABIARJaiEBDAkLIABBAWoiASAGTw0CIAcgAUEMbGoiAS0ACEGGAUcNAwwFCyAAIAFBAXYiBSAAaiIIIAcgCEEMbGooAgAgBEsbIQAgASAFayEBDAALCyABIAZBpJicARDAFAALIAEoAgAhBAtBACgC+OaeASIARQ0BIAJBFGogACAEIAMoAhQiASAEIAFJGyAEIAEgBCABSxtBtJicAUE7EL4QIAJBCGpBEUHgtJwBEOwYIAIoAgghACACKAIMIgFBACkA75icATcAACABQQhqQQApAPeYnAE3AAAgAUEQakEALQD/mJwBOgAAIAJBETYCLCACIAE2AiggAiAANgIkIAJBADYCICACQRRqIAJBIGoQ+R0iARDzASABEO0NCyACQTBqJAAPC0GFjpwBQcgAQbCPnAEQtysACyABIAVBhJicARDAFAALIAIgATYCIEHIkZwBQSsgAkEgakGEkpwBQZSYnAEQoxIAC6sEAQh/IwBBwABrIgIkAAJAAkACQAJAAkACQCABKAIAQYCAgIB4Rg0AAkAgASgCCCIDRQ0AIANBDGwiBEF0akEMbiEFIAQhAyABKAIEIgYhBwJAA0AgA0UNASADQXRqIQMg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FEUNAQwCCwJAIAVBq39qIgZBHEsNAEEBIAZ0QYGAgJQBcQ0CCyAFQcwARg0BCyAAIAAoAogBQX5xIANBAXFyEOMRIAFBCGoQ2yMgBCECDAELIAQQrikgACABQQhqEOIFCyABQZABaiQAIAIL8wQBAn8jAEHAAGsiAiQAAkACQAJAAkACQCABEJwTDQAgARDsDUUNAQsgAkEIaiABEM8MIAAgAigCCCACKAIMENgdIAIgARDPDCAAIAIoAgAgAigCBBD1DgwBCwJAAkACQAJAAkACQAJAAkAgASgCAA4IAAECAwQFBgcACyAAIAEoAiAQwwEMBwsgASgCICAAEOQLDAYLIAEoAgQgABCgEgwFCyABKAIEIAAQoBIMBAsgAUEEaiAAEIAIDAMLIAAgASgCBCIBKAIAIgMgAUEEaigCACIBENgdIAAgAyABEPUODAILQQAoAvjmngEiAEUNAiACQSRqIAAgASgCBCIBQRhqKAIAIAFBHGooAgBB7pucAUEzEL4QIAJBEGpBEUHgtJwBEOwYIAIoAhAhACACKAIUIgFBACkA75icATcAACABQQhqQQApAPeYnAE3AAAgAUEQakEALQD/mJwBOgAAIAJBETYCPCACIAE2AjggAiAANgI0IAJBADYCMCACQSRqIAJBMGoQ+R0iARDzASABEO0NDAELQQAoAvjmngEiAEUNAiACQSRqIAAgASgCBCIBQcgAaigCACABQcwAaigCAEGhnJwBQcQAEL4QIAJBGGpBEUHgtJwBEOwYIAIoAhghACACKAIcIgFBACkA75icATcAACABQQhqQQApAPeYnAE3AAAgAUEQakEALQD/mJwBOgAAIAJBETYCPCACIAE2AjggAiAANgI0IAJBADYCMCACQSRqIAJBMGoQ+R0iARDzASABEO0NCyACQcAAaiQADwtBhY6cAUHIAEGwj5wBELcrAAtBhY6cAUHIAEGwj5wBELcrAAu7BQACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADhkAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYAAsgASgCACAAKAIEIAAoAgggASgCBCgCDBELAA8LIABBBGogARDTBw8LIAEoAgBB5L6YAUEYIAEoAgQoAgwRCwAPCyABKAIAQfy+mAFB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Ag4JBgMCBgEGBgYGBgsgBCAHQf8BELwODAMLIAEoAghBAnQhBgwEC0GACCEGDAMLIAEoAghBA3QhBgwCCyAAIAAoAqgCIAVyNgKoAgsgACgCwAIhA0EAIQYLIAAgACgCsAIgBmo2ArACAkAgAyAAKAK4AkcNACAAQbgCahDRGgsgACADQQFqNgLAAiAAKAK8AiADQRRsaiIAIAEpAgA3AgAgAEEIaiABQQhqKQIANwIAIABBEGogAUEQaigCADYCACADC6wEAgV/An4jAEEgayIDJAAgAUHQAWohBAJAIAEtANgBIgVBA0cNACADQQhqIAEgASgC0AFBABDdBSAEQQhqIANBCGpBCGooAgA2AgAgBCADKQIINwIAIAEtANgBIQULIAQoAgAhBAJAAkACQAJAAkACQAJAIAVB/wFxIgVBuX9qDgIBAgALIAVBogFGDQIgA0EIakEEciABEJckIANBAzYCHCADQZjZmwE2AhggA0GwgICAeDYCCCABKALQASABKALUASADQQhqEJcZIQQCQCABLQDYAUGiAUcNACABENURIQUgARCUCyABIAUQpxYLIABBAjoAGCAAIAQ2AgAMBQsgA0EIaiABEIgPIAMpAxghCCADKQMQIQkgAygCDCEGIAMoAgghByABEJQLIAEoAswBQX5qIQFBACEFIAdBAXFFDQMgAyAGNgIIAkAgAg0AIABBAjoAGCAAIAY2AgAgCBCeHwwFCyADQQhqEOwlDAILIANBCGogARCIDyADKQMYIQggAykDECEJIAMoAgwhBiADKAIIIQcgARCUCyABKALMAUF/aiEBQQEhBSAHQQFxRQ0CIAMgBjYCCAJAIAINACAAQQI6ABggACAGNgIAIAgQnh8MBAsgA0EIahDsJQwBCyABENURIQQgARCUCyAAQQI6ABggACAENgIADAILQgAhCQsgACAFOgAYIAAgCTcDECAAIAE2AgwgACAENgIIIAAgCDcDAAsgA0EgaiQAC6kEAgd/AX4gACgCACIBQQRqKAIAIQICQCABKAIIIgNFDQBBACEEA0ACQAJAAkACQAJAAkACQCACIARBOGxqIgUoAgAOBgECAwQFBgALIAUoAgQiABCRASAAQcAAQQgQ0hUMBQsCQCAFKQMIIghCA4NCAFINACAIpyIAIAAoAgAiBkF/ajYCACAGQQFHDQAgACAA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IgNBAnYhASACQQRqEO8VIAJBBGoQghsCQAJAIANBCEkNAEEALQDg554BGkHAABB8IgMNAQALAkACQCAKIAZHDQBBACEDDAELIAYoAgAhA0EAIQELIAYgARDCICAFIAYQxioMBAsgAyAHNgIUIAMgCDYCECADIAE2AgwgAyAGNgIIIAMgBTYCBCADQRk2AgAMAwsgAS0AAA0BIAFBAToAAAsgACEDDAILQQAhAwJAIARBcGoOCgEAAAAAAAAAAAEACyAAEMkBCyAAQcAAQQgQ0hULIAJBIGokACADC9wDAQV/IwBBgAFrIgIkAAJAAkACQCABLQAUQQJGDQAgAEEaNgIAIAAgASkDADcDCCAAQRhqIAFBEGopAwA3AwAgAEEQaiABQQhqKQMANwMADAELIAJBCGogASgCACIDQSBqKQMANwMAIAJBEGogA0EoaikDADcDACACQRhqQQhqIgQgA0EIaikDADcDACACIAMpAxg3AwAgAiADKQMANwMYIAMoAhQhBSADKAIQIQYgAkEoaiACEOIGQQAtAODnngEaQcAAEHwiAUUNASABIAIpAyg3AwAgAUE4aiACQShqQThqKQMANwMAIAFBMGogAkEoakEwaikDADcDACABQShqIAJBKGpBKGopAwA3AwAgAUEgaiACQShqQSBqKQMANwMAIAFBGGogAkEoakEYaikDADcDACABQRBqIAJBKGpBEGopAwA3AwAgAUEIaiACQShqQQhqKQMANwMAIAJB+ABqIAQpAwA3AgAgAEEANgIIIAAgATYCKCAAIAU2AiQgACAGNgIgIABBFDYCACACIAIpAxg3AnAgACACKQJsNwIMIABBFGogAkHsAGpBCGopAgA3AgAgAEEcaiACQewAakEQaigCADYCACADQTBBCBDSFQsgAkGAAWokAA8LAAvxAwEHfyMAQdAAayIHJAACQAJAAkAgASgCACIIQX9qQQJJDQAgByABKAIENgIEIAcgCDYCACAHIAEoAhAiCDYCECAHIAEoAgwiCTYCDCAHIAEoAggiCjYCCCAHIAEtABg6ABggASgCFCIBQX9qIAlLIQsCQANAAkACQCAEIAlJDQAgBCAJRw0BDAULIAogBGosAABBv39KDQQLQQAhDAJAIAFFDQAgByAINgIcIAcgAUF/aiIENgIgIAsNAiAIIAFLDQIgByAENgIU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ACgCBCAAKAIIELAgIghB/wFxDQAgAy0ADCAALQAMayEICyACIAAgAyAIwEF/SiIJGyIKKQIANwIAIAJBCGogCkEIaikCADcCACAIQYABcUEDdiEKIAlBBHQhCQJAIAQoAgQgBCgCCCAHKAIEIAcoAggQsCAiCEH/AXENACAELQAMIActAAxrIQgLIAJBEGohAiADIApqIQMgACAJaiEAIAUgBCAHIAjAIghBf0obIgkpAgA3AgAgBUEIaiAJQQhqKQIANwIAIAVBcGohBSAHIAhBB3UiCEEEdGohByAEIAhBf3NBBHRqIQQgBkF/aiIGDQALIAdBEGohBwJAIAFBAXFFDQAgAiAAIAMgACAHSSIFGyIIKQIANwIAIAJBCGogCEEIaikCADcCACADIAAgB09BBHRqIQMgACAFQQR0aiEACwJAIAAgB0cNACADIARBEGpHDQAPCxC1HwAL8AMBBX8jAEHQAGsiAyQAIAMgARDZIiADKAIEIQQCQAJAIAMoAgAiBUEqRg0AAkBBOEUNACAAQQhqIANBCGpBOPwKAAALIAAgBDYCBCAAIAU2AgAMAQsCQAJAIAIoAggiBkUNACACIAIvARBBAWoiBTsBECAFQf//A3EgBUYNASADQgA3AgggA0KAgICAwAA3AgAgA0EAOwEQIANBxABqIAMgAigCDEGUyIMBELAIIAIoAgQiBSAGEP0gIAIoAgAgBRClKiACQQhqIANBxABqQQhqKAIANgIAIAIgAykCRDcCAAwBCyADQgA3AgggA0KAgICAwAA3AgAgA0EAOwEQIANBxABqIAMgAigCDEGkyIMBELAIIAIoAgQiBUEAEP0gIAIoAgAgBRClKiACQQhqIANBxABqQQhqKAIANgIAIAIgAykCRDcCAAsgAigCHCEGIAJBADYCHCACKAIYIQcCQCAGRQ0AIAchBQNAIAUoAgAgBUEEaigCABCmKiAFQRBqIQUgBkF/aiIGDQALCwJAIAIoAhQNACACQRRqQdSihAEQyhogAigCGCEHCyAHQQA6AAwgB0EANgIIIAdCgICAgMAANwIAIAAgBDYCDCAAIAI2AgggACABNgIEIABBKjYCACACQQE2AhwLIANB0ABqJAALswMBC38jAEEgayICJABBACEDAkACQAJAIAEtACVFDQAMAQsgAUEUaiEEIAEgAS0AGCIFakET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AkACQEEALQCY4p4BQQJHDQBBACgCnOKeASEBQQBBADYCnOKeASABRQ0BIABBKGogAREDACAAQRBqQRBqIgIgAEEoakEQaigCADYCACAAQRBqQQhqIgMgAEEoakEIaikCADcDACAAQQxqQQJqIgQgAEE/ai0AADoAACAAIAApAig3AxAgACAALwA9OwEMIAAtADwhAQJAAkBBAC0AmOKeAUECRw0AQQAgACkDEDcChOKeAUEAIAE6AJjingFBACAALwEMOwCZ4p4BQQAgAigCADYClOKeAUEAIAMpAwA3AozingFBACAELQAAOgCb4p4BDAELIAFB/wFxQQJHDQMLIABBAjoAPCAAQShqEO0gCyAAQcAAaiQADwsgAEEANgI4IABBATYCLCAAQbCEngE2AiggAEIENwIwIABBKGpBmIWeARC1IQALIABBP2ogAEEOai0AADoAACAAQShqQQhqIABBEGpBCGopAwA3AwAgAEEoakEQaiAAQRBqQRBqKAIANgIAIAAgAC8BDDsAPSAAIAApAxA3AyggACABOgA8IABBKGoQ7SAgAEEANgI4IABBATYCLCAAQbiFngE2AiggAEIENwIwIABBKGpBwIWeARC1IQALnAMCCX8EfiMAQTBrIgIkACABQQF2IAFqIQMCQANAIANFDQECQAJAIANBf2oiAyABSQ0AIAMgAWshBAwBCyAAIANBHGxqIgVBCGoiBCkCACELIAVBEGoiBikCACEMIAVBGGoiBygCACEIIAApAgAhDSAAIAUpAgA3AgAgAEEYaiIJKAIAIQogCSAINgIAIABBEGoiCCkCACEOIAggDDcCACAAQQhqIggpAgAhDCAIIAs3AgAgByAKNgIAIAYgDjcCACAEIAw3AgAgBSANNwIAQQAhBAsgAkEIaiABIAMgASADSRsgACABELkiIAIoAgwhCCACKAIIIQYDQCAEQQF0IgdBAXIiBSAITw0BAkAgB0ECaiIHIAhPDQAgBSAGIAVBHGxqIgkoAgQgBiAHQRxsaiIHKAIESSAJKAIAIgkgBygCACIHSSAJIAdGG2ohBQsgBiAEQRxsaiIEKAIEIAYgBUEcbGoiBygCBEkgBCgCACIJIAcoAgAiCkkgCSAKRhtBAUcNASAEIAdBBxCrHSAFIQQMAAsLCyACQTBqJAAL8AMCAn8CfiMAQdALayIDJAAC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ajYCACACQaGAgIB4NgIIIAIgBDYCDCACIAEgASACQQhqEPgkQQEhAQJAIAItAAAiA0ECRg0AIAAgAi8AATsAASAAQQNqIAItAAM6AAAgAyEBCyACKAIEIQMgACABOgAAIAAgAzYCBCACQSBqJAALogMCCn8BfiMAQeAAayIDJAACQCABKAIMIgQgASgCBCIFa0EEdiIGIAAoAgAgACgCCCIHa00NACAAIAcgBkEIQdgAENYbIAAoAgghBwsCQCAFIARGDQAgACgCBCAHQdgAbGohBiADQQhqQShqIQggA0E8aiEJIANBxQBqIgpBBGohCwNAIAEgBUEQaiIMNgIEIAUpAwAhDSAJQgA3AgAgCUEIakEAOgAAIApBADYAACALQQA7AAAgA0IANwMYIANCATcDECADQQA2AjAgA0IANwMoIANBADYCCCADQQM6AEsgA0IENwI0IANB0ABqQQhqIgUgCEEIaigCADYCACADIAgpAwA3A1AgA0EIahCcDiAGQShqQgA3AgAgBkEYakIANwIAIAZBEGogDTcCACAGQQhqQQA2AgAgBkEHNgIAIAZBMGogAykDUDcCACAGQThqIAUoAgA2AgAgBkE8akIANwIAIAZBwwBqQgA3AAAgBkHLAGpBAzoAACAGQdgAaiEGIAdBAWohByAMIQUgDCAERw0ACwsgACAHNgIIIANB4ABqJAALrAMCA38BfiMAQSBrIgMkACABKAIIIQQgA0EQaiACIAEoAgQiBUEAEIgCAkACQCADLQAQQQRGDQAgAykDECIGQv8Bg0IEUQ0AIAAgBjcCAAwBCwJAAkACQCAFRQ0AIANBEGogAiAFEN8gIAMtABBBBEYNACADKQMQIgZC/wGDQgRSDQELIANBADYCECADQQhqIAIgA0EQakHIipwBQQEQoQ0gAy0ACEEERg0BIAMpAwgiBkL/AYNCBFENASAAIAY3AgAMAgsgACAGNwIADAELIANBEGogASACEO8qAkAgAy0AEEEERg0AIAMpAxAiBkL/AYNCBFENACAAIAY3AgAMAQsgAigCACEBIAJBADYCAAJAIAItADwNACACKAIEIQUgAigCKCACKAIQIAIoAhQQgwkCQCACKAI4RQ0AIAJBADYCNCACIAIoAjBBAWo2AjALIAJBAToAPCABRQ0AIAIgBRDEBQsCQAJAIARFDQAgA0EQ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IGsiAyQAAkACQCACLQAMIgRBAUcNACAAIAEpAgA3AgAgAEEIaiABQQhqKQIANwIAIAIoAgAgAigCBBCaKgwBCwJAAkACQAJAAkACQAJAAkACQCABLQAMIgUOAwEAAgELIAAgAikCADcCACAAQQIgBGs6AAwgACACLwANOwANIABBCGogAkEIaigCADYCACAAQQ9qIAJBD2otAAA6AAAgASgCBCEEDAcLIARFDQEMAgsgBEUNAQsgASgCBCIEIAEoAgggAigCBCIGIAIoAggQtR5B/wFxDgICAwELIANBEGogASACEJkRIAAgBSADQRBqENoWDAQLIANBEGpBCGogAkEIaigCADYCACADIAIpAgA3AxAgA0EEaiADQRBqIAEQtCQgAEECIAVrIANBBGoQ2hYMAwsgAEEIakEAKQL0mIIBNwIAIABBACkC7JiCATcCACACKAIAIAYQmioMAQsgA0EQakEIaiABQQhqKAIANgIAIAMgASkCADcDECADQQRqIANBEGogAhC0JCAAIAUgA0EEahDaFgwBCyABKAIAIAQQmioLIANBIGokAAuWAwEDfyMAQRBrIgMkAAJAAkAgAg0AIABBAjoAAAwBCwJAAkACQAJAIAEsAAAiBEF/Sg0AAkAgBEFASQ0AAkACQAJAIARBYE8NAEECIQUMAQsgBEFwTw0BQQMhBQsgBSACTQ0EDAULIARBeEkNAgsgACAEOgABIABBAToAAAwECyAAIARB/wFxNgIEIABBADoAAAwDC0EEIQUgAkEESQ0BCyADQQRqIAEgBRDcBAJAIAMoAgRBAUcNACAAIAQ6AAEgAEEBOgAADAILAkAgAygCDEUNAAJAAkAgAygCCCIBLAAAIgJBf0wNACACQf8BcSECDAELIAEtAAFBP3EhBCACQR9xIQUCQCACQV9LDQAgBUEGdCAEciECDAELIARBBnQgAS0AAkE/cXIhBAJAIAJBcE8NACAEIAVBDHRyIQIMAQsgBEEGdCABLQADQT9xciAFQRJ0QYCA8ABxciICQYCAxABGDQELIAAgAjYCBCAAQQA6AAAMAgtB9IKIARD4KQALIAAgBDoAASAAQQE6AAALIANBEGokAAuEAwIEfwF+IwBB0ABrIgMkACADIAEgAkHp4JcBQQEQ0gIDQCADQcQAaiADEJUDIAMoAkQiBEUNAAsCQAJAAkAg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aigCADYCACABIAApAgA3AhggASACIAQgCBsiACkCADcCJCABQSxqIABBCGooAgA2AgALpwMBBH8jAEEgayIDJAACQAJAIAItAAwiBEEBRw0AIAAgASkCADcCACAAQQhqIAFBCGopAgA3AgAMAQsCQAJAAkACQAJAAkACQAJAAkAgAS0ADCIFDgMBAAIBCyADIAIQsyQgACADKQIANwIAIANBAiADLQAMazoADCAAQQhqIANBCGopAgA3AgAgASgCBCEEDAcLIARFDQEMAgsgBEUNAQsgASgCBCIEIAEoAgggAigCBCIGIAIoAggiAhC1HkH/AXEOAgIDAQsgA0EIaiABQQhqKAIANgIAIAMgASkCADcDACADQRRqIAMgAigCBCACKAIIEOYKIAAgBSADQRRqENoWDAQLIANBCGogAUEIaigCADYCACADIAEpAgA3AwAgA0EUaiAGIAIgAxDCBSAAQQIgBWsgA0EUahDaFgwDCyAAQQhqQQApAvSYggE3AgAgAEEAKQLsmIIBNwIADAELIANBCGogAUEIaigCADYCACADIAEpAgA3AwAgA0EUaiADIAYgAhCYICAAIAUgA0EUahDaFgwBCyABKAIAIAQQmioLIANBIGokAAudAwEFfyMAQdAAayICJABBACEDIAJBADsBNCACQQA2AiwgAkEBOgAoIAJBCjYCJCACQQA2AhwgAkEKNgIQIAIgASgCBCIENgIwIAIgBDYCICACIAQ2AhggAiABKAIAIgU2AhQgAiACQRBqEMMeIgY2AgwCQCAFIARBChDBHUUNACACIAZBAWoiBjYCDAsCQCAGQQJJDQAgAkEQaiACQQxqEKUTIAIoAhghAyACQRBqEJ4qCyACQQA2AkAgAkKAgICAwAA3AjggAkEQaiACQThqIAYQ0AggAiADNgIwIAIgBDYCLCACIAU2AiggAkEANgIkIAJCgICAgMAANwIcIAJBOGpBCGoiBiABKAIMIgRBCGopAgA3AwAgAkE4akEQaiIFIARBEGopAgA3AwAgAiAEKQIANwM4IAJBEGogAkE4ahDGFQJAIAEoAhAiAUUNACAFIAFBEGopAgA3AwAgBiABQQhqKQIANwMAIAIgASkCADcDOCACQRBqIAJBOGoQxhULAkBBJEUNACAAIAJBEGpBJPwKAAALIAJB0ABqJAALsQMBAX8jAEHA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NgJAIAMgA0HPAGo2AkggA0EQaiADQShqELQZIANBJGogA0EMaigCADYCACADIAMpAgQ3AhwgBCACIANBEGoQlxkhAiABLQDYAUGiAUYNAQwDCyABEJQLAkACQCABKAKIASIFQYCAgIACcUUNACABIAVB/////31xNgKIASADQShqIAIgARCLISABIAEoAogBQYCAgIACcjYCiAEMAQsgA0EoaiACIAEQiyELIAMoAiwhAiADKAIoIgVBgICAgHhHDQEgAEGAgICAeDYCACAAIAI2AgQMAwsgASABEMApEKcWDAELIAMoAjAhBiAAQQA2AhQgACAENgIMIAAgBjYCCCAAIAI2AgQgACAFNgIAIAAgASgCzAE2AhAMAQsgAEGAgICAeDYCACAAIAI2AgQLIANB0ABqJAALqwMBBn8jAEHwAGsiAyQAAkBBJEUNACADQQxqIAJB4AFqQST8CgAACyACQQA2AvABIAJCgICAgIABNwPoASACQQA2AuABIAJBACkD+PydATcC9AEgAkH8AWpBACkDgP2dATcCACADIAI2AjACQAJAIAItAJEBQSBxRQ0AIAItANgBQf8BcUECRg0AIAIQnR5FDQAgAEGAgICAeDYCAAwBCwJAAkAgAigCiAEiBEHAAHENACACIARBwAByNgKIASADQTRqIAIQkywgAiACKAKIAUG/f3E2AogBDAELIANBNGogAhCTLAsgAygCOCEEAkAgAygCNCIFQYCAgIB4Rw0AIABBgYCAgHg2AgAgACAENgIEDAELIANBwABqIQYgAygCPCEHAkAgAUEBcQ0AIANBzABqIAQgBxCJEyADKAJMQQFHDQAgAygCVCEBIAMoAlAhCCADQauAgIB4NgJYIAIgCCABIANB2ABqEKohCyAAIAc2AgggACAENgIEIAAgBTYCACAAIAYpAgA3AgwgAEEUaiAGQQhqKAIANgIACyADQQxqENkgIANB8ABqJAALkgMBBH8jAEEwayIEJAAgBCADNgIoIAQgAjYCJEEAIQUCQAJAAkACQCABLQDYAUEGRg0AAkACQCABKAKIASIFQcAAcQ0AIAEgBUHAAHI2AogBIARBEGogARD0CSAEKAIQIQYgASABKAKIAUG/f3E2AogBIAQoAhQhBQwBCyAEQRhqIAEQ9AkgBCgCHCEFIAQoAhghBgsCQCAGQQFxRQ0A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IAJBCGogA0EhEMULEOsQIQMMAQsgAiAEQbW7mwFBByAFKAIMEQsAOgAQIAIgATYCDCACQQA6ABEgAkEANgIIIAJBCGogA0GHBRDFCxDrECEDCyACQTBqJAAgAwuCAwEEfyMAQeAAayICJAAgASgC0AEhAyACQThqIAFBABDQAiACKAI8IQQCQAJAIAIoAjgiBUEHRw0AIABBBzYCACAAIAQ2AgQMAQsgAkEQakEgaiACQThqQSBqKQMANwMAIAJBEGpBGGogAkE4akEYaikDADcDACACQRBqQRBqIAJBOGpBEGopAwA3AwAgAiACKQNANwMYIAIgBDYCFCACIAU2AhACQCABLQDYAUEXRg0AQShFDQEgACACQRBqQSj8CgAADAELIAEQlAsgAkEIaiABEJATIAIoAgwhBAJAIAIoAghBAXENAAJAIAEtAIkBQcAAcUUNACABKALMASEFIAJBqYGAgHg2AjggASADIAUgAkE4ahCqIQsgASgCzAEhBUEoEMcoIQECQEEoRQ0AIAEgAkEQakEo/AoAAAsgACAFNgIQIAAgAzYCDCAAIAQ2AgggACABNgIEIABBBDYCAAwBCyAAQQc2AgAgACAENgIEIAJBEGoQlBULIAJB4ABqJAALlgMBA38jAEHAAGsiAyQAIANBJGogAkEIaigCADYCACADIAE2AhggAyACKQIANwIcIANBHGohAgJAAkACQAJAAkACQCABLQDYAUHfAEcNACABKALQASEEAkAgARDKCSIFRQ0AIAUtAABFDQMLIAEtANgBQd8ARw0AIAEQygkiBUUNACAFLQAAQQhGDQELIAEoAtQBIQUgASgC0AEhBCADQceAgIB4NgIoIAQgBSADQShqEJcZIQUgAS0A2AFBogFHDQMgASABEMApEKcWDAMLIANBCGogARD0CSADKAIMIQUgAygCCEEBcQ0BIAEQnR4aIAAgBDYCCCAAIAU2AgQgAEESNgIAIAAgASgCzAE2AgwMAwsgA0EQaiABEPQJIAMoAhQhBQJAIAMoAhBBAXENACABEJ0eGiAAIAQ2AgggACAFNgIEIABBEjYCACAAIAEoAswBNgIMDAMLIABBEzYCACAAIAU2AgQMAgsgAEETNgIAIAAgBTYCBAwBCyAAQRM2AgAgACAFNgIECyACEMolIANBwABqJAAL0AMDAn8CfgV8AkACQAJAAkAgAL0iA0KAgICAgICACFMNACADQv/////////3/wBWDQNBgXghAQJAIANCIIgiBEKAgMD/A1ENACAEpyECDAILQYCAwP8DIQIgA6cNAUQAAAAAAAAAAA8LAkAgAEQAAAAAAAAAAGINAEQAAAAAAADwvyAAIACiow8LIANCAFMNASAARAAAAAAAAFBDor0iA0IgiKchAkHLdyEBCyACQeK+JWoiAkH//z9xQZ7Bmv8Daq1CIIYgA0L/////D4OEv0QAAAAAAADwv6AiACAAIABEAAAAAAAA4D+ioiIFob1CgICAgHCDvyIGRAAAIGVHFfc/oiIHIAJBFHYgAWq3IgigIgkgByAIIAmhoCAAIAahIAWhIAAgAEQAAAAAAAAAQKCjIgAgBSAAIACiIgcgB6IiACAAIABEn8Z40Amawz+iRK94jh3Fccw/oKJEBPqXmZmZ2T+goiAHIAAgACAARERSPt8S8cI/okTeA8uWZEbHP6CiRFmTIpQkSdI/oKJEk1VVVVVV5T+goqCgoqAiAEQAACBlRxX3P6IgACAGoEQAou8u/AXnPaKgoKAPCyAAIAChRAAAAAAAAAAAoyEACyAAC4sDAQV/IwBBIGsiAyQAAkACQCACLQAMIgRBAUcNACAAIAEpAgA3AgAgAEEIaiABQQhqKQIANwIAIAIoAgAgAigCBBCaKgwBCwJAAkACQAJAAkACQCABLQAMIgUOAwEAAgELIAAgAikCADcCACAAQQhqIAJBCGopAgA3AgAgASgCBCEGDAQLIARFDQEMAgsgBEUNAQsgA0EQaiABIAIQmREgACAFIANBEGoQ2hYMAgsCQAJAAkAgASgCBCIGIAEoAgggAigCBCIHIAIoAggQtR5B/wFxDgIBAgALIANBEGpBCGogAkEIaigCADYCACADIAIpAgA3AxAgA0EEaiADQRBqIAEQtCQgACAEIANBBGoQ2hYMAwsgAEEIakEAKQL0mIIBNwIAIABBACkC7JiCATcCACACKAIAIAcQmioMAQsgA0EQakEIaiABQQhqKAIANgIAIAMgASkCADcDECADQQRqIANBEGogAhC0JCAAIAUgA0EEahDaFgwBCyABKAIAIAYQmioLIANBIGokAAv2AgEDfyMAQRBrIgYkAAJAAkACQAJAAkACQCABKAIkIgctAOICDQAgBkEIaiABIAIgAyAEIAUQtAEgBigCDCEBIAYoAggiAkECRg0BIAJBAXENAwwECyAHLQDjAiEHIAZBCGogASACIAMgBCAFELQBIAYoAgwhASAGKAIIIgJBAkcNAQsgAEECNgIAIAAgATYCBAwDCyACQQFxRQ0BIAdBAXFFDQACQAJAAkAgAUEBdCIHIAVPDQACQCAEIAdBAnRqKAIAIghFDQAgB0EBciIHIAVPDQMgBCAHQQJ0aigCACIFRQ0CIAggBUcNBAJAAkAgCEF/aiIFIAMoAgwiBEkNACAFIARGDQYMAQsgAygCCCAFaiwAAEG/f0oNBQsgAEEANgIADAYLQbSsgwEQ+CkACyAHIAVBpKyDARDAFAALQdSsgwEQ+CkACyAHIAVBxKyDARDAFAALIAAgATYCBCAAIAI2AgAMAQsgAEEANgIACyAGQRBqJAAL8wIBCn8jAEEwayIBJAACQAJAIAAoAgAiAi0AZA0AIAAQqg8hAwwBC0GAgMQAIQMgAigCUCICIAAoAggiBEYNAEEBIQMCQCAAEM4PIgVBgAFJDQBBAiEDIAVBgBBJDQBBA0EEIAVBgIAESRshAwsgAUEYaiAAKAIEIgYgBCADIAJqIgdBhLuEARD3GCABKAIcIQMgASgCGCEAQQAhCCABQQA2AiwgASAAIANqIgM2AiggASAANgIkAkADQCABQRBqIAFBJGoQkgwgASgCEEEBcUUNASABKAIUIQIgASABKAIsIgkgA2ogACABKAIoIgVqayABKAIkIgBqNgIsIAUhAyACEPoODQAgCEEBcSEKIAUhAyACQSNGIAhBAXNxIQggAkEKQSMgChtGDQALIAkgB2ohBwsgAUEIaiAGIAQgB0GUu4QBEPcYIAEgASgCCCIANgIkIAEgACABKAIMajYCKCABQSRqEPQdIQMLIAFBMGokACADC+0CAgJ/A34jAEEwayIEJAACQAJAAkACQAJAAkACQAJAAkACQCACDgIAAQILIABBADoAAQwHC0EBIQUgAS0AAEFVag4DAwEDAQsCQCABLQAAQStHDQAgAkF/aiEFIAFBAWohASACQRJJDQEMAgsgAiEFIAJBEEsNAQsgA60hBkIAIQcDQCAFRQ0EIARBCGogAS0AACADEJEdIAQoAghBAXFFDQIgAUEBaiEBIAVBf2ohBSAHIAZ+IAQoAgytfCEHDAALCyADrSEIQgAhBwNAIAVFDQMgBEEQaiAHQgAgCEIAEKISIARBKGogAS0AACADEJEdIAQoAihBAXFFDQEgBCkDGEIAUg0CIAFBAWohASAFQX9qIQUgBCkDECIGIAQoAiytfCIHIAZaDQALIABBAjoAAQwDC0EBIQEgAEEBOgABDAMLIABBAjoAAQwBCyAAIAc3AwhBACEBDAELQQEhAQsgACABOgAAIARBMGokAAufAwEHfyMAQTBrIgMkACABQQhqIQQCQAJAAkACQAJAAkACQCABKAIIQbiBgIB4Rw0AIAEoAhwhBSABKAIYIQYgASgCFCEHIAEoAhAhCCADIAEoAgwiCSgCACACEJIIIAMoAgQgBiAFIAggBxDADhogAEEIaiADQQhqKAIANgIAIAAgAykCADcCACAJEM4rIAEoAghBuIGAgHhHDQEMBQsgASgCBCEFIAEoAgAhBiADQRBqIARBEGopAwA3AwAgA0EIaiAEQQhqKQMANwMAIAMgBCkDADcDACABEM8rIANBGGogAxBdIANBJGogAiAGIAUgAygCHCIBIAMoAiAQvhAgAygCAEHL////B2oOBQIDAwMBAwsgBBDUBwwDCyADKAIoIAMoAgQgAygCCEHJ45kBQSkQwA4aDAELIAMoAiggAygCBCADKAIIQZPjmQFBNhDADhoLIAAgAykCJDcCACAAQQhqIANBJGpBCGooAgA2AgACQCADKAIYIgBBgICAgHhGDQAgACABEOMsCyADENQHDAELIAEQzysLIANBMGokAAuDAwEFfyMAQdAAayIDJAAgASgCDCgCACEEIAEoAhQtAAAhBSABKAIYLQAAIQYgASgCECEHIANBMGpBCGogAUEIaigCADYCACADIAc2AkAgAyAGOgAvIAMgBToALiADIAQ2AiggAyABKQIANwMwIAIoAogBIgRBgAFxIQEgAyADQS9qNgJMIAMgA0EoajYCSCADIANBLmo2AkQgAyADQS9qNgI8AkACQCAFDQACQCABRQ0AIAIgBEH/fnE2AogBIANBIGogA0EwaiACEIsPIAMoAiAhASACIAIoAogBQYABcjYCiAEgAygCJCECDAILIANBGGogA0EwaiACEIsPIAMoAhwhAiADKAIYIQEMAQsCQCABDQAgAiAEQYABcjYCiAEgA0EIaiADQTBqIAIQjA8gAygCCCEBIAIgAigCiAFB/35xNgKIASADKAIMIQIMAQsgA0EQaiADQTBqIAIQjA8gAygCFCECIAMoAhAhAQsgACACNgIEIAAgATYCACADQdAAaiQAC4MDAQV/IwBB0ABrIgMkACABKAIMKAIAIQQgASgCFC0AACEFIAEoAhgtAAAhBiABKAIQIQcgA0EwakEIaiABQQhqKAIANgIAIAMgBzYCQCADIAY6AC8gAyAFOgAuIAMgBDYCKCADIAEpAgA3AzAgAigCiAEiBEGAAXEhASADIANBL2o2AkwgAyADQShqNgJIIAMgA0EuajYCRCADIANBL2o2AjwCQAJAIAUNAAJAIAFFDQAgAiAEQf9+cTYCiAEgA0EgaiADQTBqIAIQig8gAygCICEBIAIgAigCiAFBgAFyNgKIASADKAIkIQIMAgsgA0EYaiADQTBqIAIQig8gAygCHCECIAMoAhghAQwBCwJAIAENACACIARBgAFyNgKIASADQQhqIANBMGogAhCODyADKAIIIQEgAiACKAKIAUH/fnE2AogBIAMoAgwhAgwBCyADQRBqIANBMGogAhCODyADKAIUIQIgAygCECEBCyAAIAI2AgQgACABNgIAIANB0ABqJAALigMBBH8jAEHQAGsiAyQAIAMgAjoAAyADIAEoAtABNgIEAkACQAJAIAEtANgBIgJBGEYNAEEEIQRBACEFQQAhBgwBCyADQQhqIAFBARD0ASADKAIMIQQCQCADKAIIIgZBgICAgHhGDQAgAygCECEFIAEtANgBIQIMAQsgAEETNgIAIAAgBDYCBAwBCwJAAkAgAkH/AXEiAkHYAEYNACACQd8ARw0BCyADIAU2AhQgAyAENgIQIAMgBjYCDCADIAE2AgggACABIANBDGoQjAgMAQsgAyAFNgJEIAMgBDYCQCADIAY2AjwgASgCiAEhAiADIANBA2o2AkwgAyADQQRqNgJIAkACQCACQYCABHFFDQAgASACQf//e3E2AogBIANBCGogA0E8aiABELwSIAEgASgCiAFBgIAEcjYCiAEMAQsgA0EIaiADQTxqIAEQvBILAkAgAygCCEETRw0AIAAgAygCDDYCBCAAQRM2AgAMAQtBMEUNACAAIANBCGpBMPwKAAALIANB0ABqJAAL5AICA38CfiMAQRBrIgQkAAJAAkACQAJAAkACQAJAAkACQCACDgIAAQIL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Rw0DIAIgAUEEaigCABCbAwwDCyACIAEoAgAQmwMMAgsgASACEKEPDAELIAEgAhCXEgsgAUEoaiEBIABBWGoiAA0ACwsgAy0APEEGRg0BIANBEGoQ2SUPCyABKAIMIgBFDQAgAEEobCEAIAEoAghBBGohAQNAAkACQAJAAkACQCABQXxqKAIADgUEAAECAwQLIAEoAgBBAUcNAyACIAFBBGooAgAQmwMMAwsgAiABKAIAEJsDDAILIAIgASgCABC/CQwBCyABIAIQ6wsLIAFBKGohASAAQVhqIgANAAsLC8sCAgJ/An4CQAJAAkACQCAAKQMAIgNCfnwiBEICIARCAlQbpw4CAQIACyAAQQhqIQECQAJAIANCAFINACABKQMAIgRCA4NCAFINASAEpyIBIAEoAgAiAkF/ajYCACACQQFHDQEgASABKAIQEI8iDAELIAEQiBMLIAApAyAiBEICUQ0CIABBKGohAAJAIARCAFINACAAKQMAIgRCA4NCAFINAyAEpyIAIAAoAgAiAUF/ajYCACABQQFHDQMgACAAKAIQEI8iDwsgABCIEw8LIABBEGohAQJAIAAoAggNACABKQMAIgRCA4NCAFINAiAEpyIAIAAoAgAiAUF/ajYCACABQQFHDQIgACAAKAIQEI8iDwsgARCIEw8LIAApAwgiBEIDg0IAUg0AIASnIgAgACgCACIBQX9qNgIAIAFBAUcNACAAIAAoAhAQjyILC/YCAQJ/IAAoAgAhAgJAAkACQAJAAkAgASgCAA4FBAABAgMECyABKAIEQQFHDQMgAiABKAIIENEBDwsgAiABKAIEENEBDwsgASgCBCIDQcAAaiACEKELAkAgAygCmAEiAUUNACABQShsIQAgAygClAFBBGohAQNAAkACQAJAAkACQCABQXxqKAIADgUEAAECAwQLIAEoAgBBAUcNAyACIAFBBGooAgAQ0QEMAwsgAiABKAIAENEBDAILIAEgAhCiDwwBCyABIAIQmBILIAFBKGohASAAQVhqIgANAAsLIAMtADxBBkYNASADQRBqENklDwsgASgCDCIARQ0AIABBKGwhACABKAIIQQRqIQEDQAJAAkACQAJAAkAgAUF8aigCAA4FBAABAgMECyABKAIAQQFHDQMgAiABQQRqKAIAENEBDAMLIAIgASgCABDRAQwCCyACIAEoAgAQ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KAIEIQUCQCACKAIAQQFGDQAgAigCCCEGAkAgBUUNACAEQQxsIQcgBiEIIAUhCQNAIAdFDQEgAykCBCELIAMoAgAhChC1JSEBIAIgChBCIAFBOGogAkE4aikDADcDACABQTBqIAJBMGopAwA3AwAgAUEoaiACQShqKQMANwMAIAFBIGogAkEgaikDADcDACABQRhqIAJBGGopAwA3AwAgAUEQaiACQRBqKQMANwMAIAFBCGogAkEIaikDADcDACABIAIpAwA3AwAgCEEEaiALNwIAIAggATYCACAIQQxqIQggB0F0aiEHIANBDGohAyAJQX9qIgkNAAsLIAAgBDYCCCAAIAY2AgQgACAFNgIAIAJBwABqJAAPCyAFIAIoAghBtOqaARDBJgAL2AICCX8BfiMAQcAAayICJABBASEDIAEoAiQhBCABKAIgIQUgASgCHCEGIAEoAhghBwJAAkAgASgCAEEBRw0AIAEpAwghCxC1JSEIIAIgASgCBBBCIAhBOGogAkE4aikDADcDACAIQTBqIAJBMGopAwA3AwAgCEEoaiACQShqKQMANwMAIAhBIGogAkEgaikDADcDACAIQRhqIAJBGGopAwA3AwAgCEEQaiACQRBqKQMANwMAIAhBCGogAkEIaikDADcDACAIIAIpAwA3AwAMAQsgASgCFCEJIAEoAhAhCkEAIQMCQCABKQMIIgtCA4NCAFENAAwBCyALpyIBIAEoAgAiAUEBajYCACABQX9KDQAACyAAIAQ2AiQgACAFNgIgIAAgBjYCHCAAIAc2AhggACAJNgIUIAAgCjYCECAAIAs3AwggACAINgIEIAAgAzYCACACQcAAaiQAC/oCAQF/IwBBEGsiAiQAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIAKAIADgkAAQIDBAUGBwgACyACIABBBGo2AgwgAUG6/JoBQQYgAkEMakHTBBDwCyEBDAgLIAIgAEEIajYCDCABQbH7mgFBCiACQQxqQdQEEPALIQEMBwsgAiAAQQRqNgIMIAFBwPyaAUELIAJBDGpB1QQQ8AshAQwGCyACIABBCGo2AgwgAUHL/JoBQREgAkEMakHWBBDwCyEBDAULIAIgAEEEajYCDCABQdz8mgFBESACQQxqQdcEEPALIQEMBAsgAiAAQQRqNgIMIAFBnPuaAUEJIAJBDGpB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AgRBASEDDAELQQAhAxDyGCEFCyAAIAU2AhggACADNgIADAILIAAgARCUCTYCGCAAQQI2AgAgAEEUaiABQRBqKAIANgIAIABBDGogAUEIaikCADcCACAAIAEpAgA3AgQMAgsgAkEgahCYISACQQE2AhwgACACQRxqEJQJNgIYIABBAjYCACAAQRRqIAJBLGooAgA2AgAgAEEMaiACQSRqKQIANwIAIAAgAikCHDcCBAsgARCYIgsgAkEwaiQAC7ECAQV/AkAgACgCCCICRQ0AIAAoAgQhA0EAIQQgAS0AAEEBcSEFAkACQANAIARBAWohBiADIAUQpQpFDQEgA0E4aiEDIAYhBCACIAZHDQALQQAhBQwBCyADEMsFAkAgBiACRw0AQQEhBQwBCyADQThqIQMgBEF/cyACaiEEQQEhBQNAAkACQCADIAEtAAAQpQoNACADEMsFIAVBAWohBQwBCyADIAVBSGxqIgYgAykDADcDACAGQTBqIANBMGopAwA3AwAgBkEoaiADQShqKQMANwMAIAZBIGogA0EgaikDADcDACAGQRhqIANBGGopAwA3AwAgBkEQaiADQRBqKQMANwMAIAZBCGogA0EIaikDADcDAAsgA0E4aiEDIARBf2oiBA0ACwsgACACIAVrNgIICwvAAgIFfwJ+IwBBIGsiAiQAAkACQAJAIAEOAgACAQsgAEEANgIIDAELAkACQCABaUEBRg0AIAAoAghBAnQhAyABrSEHIAAoAgQhAUIAIQgDQCADRQ0CIAEgATUCACAHfiAIfCIIPgIAIANBfGohAyABQQRqIQEgCEIgiCEIDAALCyAAKAIEIQMgACgCCCIEIQUCQCAAKAIAIgZBgICAgHhHDQAgAygCCCEFCwJAAkAgBUUNACACIAQ2AhwgAiADNgIYIAIgBjYCFCACQQhqIAJBFGpBACABaBCcBwwBCyACIAQ2AhwgAiADNgIYIAIgBjYCFCACQQhqIAJBFGoQxxsLQQBBBBCaKiAAQQhqIAJBCGpBCGooAgA2AgAgACACKQIINwIADAELIAhQDQAgACAIp0HQnYIBEP0eCyACQSBqJAALxQIBBH8jAEEwayIGJABBACEHAkAgAygCECIIIAMoAhQiCUsNACABQQRqIQcCQAJAAkAgAygCAEF/akECSQ0AIAZBDGogByADKAIIIAMoAgwg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PEEGRg0AIAAgAUEQahDoCQsLxwIBBH8gAUHAAGogABCaCwJAIAEoApgBIgJFDQAgASgClAEiAyACQShsaiEEA0ACQAJAAkACQAJAIAMoAgAOBQQAAQIDBAsgAygCBEEBRw0DIAAgAygCCBCmAQwDCyAAIAMoAgQQpgEMAgsgAygCBCICQcAAaiAAEJoLIAJBkAFqIAAQuBIgAi0APEEGRg0BIAAgAkEQahDhDAwBCyADKAIMIgJFDQAgAkEobCEFIAMoAghBBGohAgNAAkACQAJAAkACQCACQXxqKAIADgUEAAECAwQLIAIoAgBBAUcNAyAAIAJBBGooAgAQpgEMAwsgACACKAIAEKYBDAILIAAgAigCABC1CQwBCyACIAAQ4QsLIAJBKGohAiAFQVhqIgUNAAsLIANBKGoiAyAERw0ACwsCQCABLQA8QQZGDQAgACABQRBqEOEMCwvVAgIDfwJ+IwBBMGsiAiQAAkACQAJAAkACQCAAKQMAIgVCgICAgICAf1ENAAJAIAVCKogiBkL///8BUQ0AQQEhACACQQE2AgwgAkG8t5wBNgIIIAJCATcCFCACQQs2AiwgAiAGPgIgIAIgAkEoajYCECACIAJBIGo2AiggASgCACIDIAEoAgQiBCACQQhqEN4FDQUgBUL///////8AgyIFUEUNAgwECyAFQv///////wCDIgVQDQMgASgCBCEEIAEoAgAhAwwCCyABKAIAQYCwgwFBAyABKAIEKAIMEQsAIQAMAwtBASEAIANB/aicAUEBIAQoAgwRCwANAgsgAkEBNgIMIAJBvLecATYCCCACQgE3AhQgAkG3ATYCJCACIAU3AyggAiACQSBqNgIQIAIgAkEoajYCICADIAQgAkEIahDeBSEADAELQQAhAAsgAkEwaiQAIAALpQIBB38jAEEwayICJAAgASgCBCEDIAJBCGogASgCCCIEQQhBKBD3DiACKAIMIQUCQCACKAIIQQFGDQAgAigCECEGAkAgBUUNACAEQShsIQcgBiEBIAUhCANAIAdFDQECQAJAIAMoAgBBB0YNACACQQhqIAMQugIMAQsgAkEHNgIICyADQShqIQMgASACKQMINwMAIAFBIGogAkEIakEgaikDADcDACABQRhqIAJBCGpBGGopAwA3AwAgAUEQaiACQQhqQRBqKQMANwMAIAFBCGog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LQA8QQZGDQEgAkEQahDZJQwBCyADKAIMIgJFDQAgAkEobCEFIAMoAghBBGohAgNAAkACQAJAAkACQCACQXxqKAIADgUEAAECAwQLIAIoAgBBAUcNAyAAIAJBBGooAgAQVAwDCyAAIAIoAgAQVAwCCyAAIAIoAgAQvQkMAQsgAiAAEOoLCyACQShqIQIgBUFYaiIFDQALCyADQShqIgMgBEcNAAsLAkAgAS0APEEGRg0AIAFBEGoQ2SULC8MCAQR/IAFBwABqIAAQnwsCQCABKAKYASICRQ0AIAEoApQBIgMgAkEobGohBANAAkACQAJAAkACQCADKAIADgUEAAECAwQLIAMoAgRBAUcNAyADKAIIIAAQugMMAwsgAygCBCAAELoDDAILIAMoAgQiAkHAAGogABCfCyACQZABaiAAELESIAItADxBBkYNASACQRBqENcYDAELIAMoAgwiAkUNACACQShsIQUgAygCCEEEaiECA0ACQAJAAkACQAJAIAJBfGooAgAOBQQAAQIDBAsgAigCAEEBRw0DIAJBBGooAgAgABC6AwwDCyACKAIAIAAQugMMAgsgACACKAIAEL4JDAELIAIgABDpCwsgAkEoaiECIAVBWGoiBQ0ACwsgA0EoaiIDIARHDQALCwJAIAEtADxBBkYNACABQRBqENcYCwvDAgEEfyABQcAAaiAAEKALAkAgASgCmAEiAkUNACABKAKUASIDIAJBKGxqIQQDQAJAAkACQAJAAkAgAygCAA4FBAABAgMECyADKAIEQQFHDQMgACADKAIIEJsDDAMLIAAgAygCBBCbAwwCCyADKAIEIgJBwABqIAAQoAsgAkGQAWogABCzEiACLQA8QQZGDQEgAkEQahDZJQwBCyADKAIMIgJFDQAgAkEobCEFIAMoAghBBGohAgNAAkACQAJAAkACQCACQXxqKAIADgUEAAECAwQLIAIoAgBBAUcNAyAAIAJBBGooAgAQmwMMAwsgACACKAIAEJsDDAILIAAgAigCABC/CQwBCyACIAAQ6wsLIAJBKGohAiAFQVhqIgUNAAsLIANBKGoiAyAERw0ACwsCQCABLQA8QQZGDQAgAUEQahDZJQsLzwIBAX8jAEEQayICJAACQAJAAkACQAJAAkACQAJAAkAgACgCAA4IAAECAwQFBgcACyACIABBCGo2AgwgAUGhlpsBQQUgAkEMakG8BBDwCyEADAcLIAIgAEEIajYCDCABQaaWmwFBAiACQQxqQb0EEPALIQAMBgsgAiAAQQRqNgIMIAFBqJabAUEDIAJBDGpBvgQQ8AshAAwFCyACIABBBGo2AgwgAUGrlpsBQQUgAkEMakG/BBDwCyEADAQLIAIgAEEEajYCDCABQbCWmwFBCyACQQxqQcAEEPALIQAMAwsgAiAAQQRqNgIMIAFBu5abAUELIAJBDGpBwQQQ8AshAAwCCyACIABBBGo2AgwgAUHGlpsBQQYgAkEMakHCBBDwCyEADAELIAIgAEEEajYCDCABQcyWmwFBCCACQQxqQcMEEPALIQALIAJBEGokACAAC7kCAQJ/AkACQAJAAkACQCAAKAIADgUEAAECAwQLIAAoAgRBAUcNAyAAKAIIIAEQ9wIPCyAAKAIEIAEQ9wIPCyABIAAoAgQiAkHAAGoQzAoCQCACQYQBaigCACIDRQ0AIAJBgAFqKAIAIQAgA0HYAGwhAwNAAkACQAJAIAAoAgBBfGoOAgIAAQsgAEEEaigCACABEPcCDAELIAEgABDOBwsgAEHYAGohACADQah/aiIDDQALCwJAIAJBmAFqKAIAIgNFDQAgAkGUAWooAgAhACADQShsIQMDQCAAIAEQwQkgAEEoaiEAIANBWGoiAw0ACwsgAi0APEEGRg0BIAEgAkEQahDMCg8LIAAoAgwiA0UNACAAKAIIIQAgA0EobCEDA0AgACABEL0HIABBKGohACADQVhqIgMNAAsLC8MCAQR/IAFBwABqIAAQ/goCQCABKAKYASICRQ0AIAEoApQBIgMgAkEobGohBANAAkACQAJAAkACQCADKAIADgUEAAECAwQLIAMoAgRBAUcNAyAAIAMoAggQ5AEMAwsgACADKAIEEOQBDAILIAMoAgQiAkHAAGogABD+CiACQZABaiAAELYSIAItADxBBkYNASACQRBqENsYDAELIAMoAgwiAkUNACACQShsIQUgAygCCEEEaiECA0ACQAJAAkACQAJAIAJBfGooAgAOBQQAAQIDBAsgAigCAEEBRw0DIAAgAkEEaigCABDkAQwDCyAAIAIoAgAQ5AEMAgsgACACKAIAEMIJDAELIAIgABDtCwsgAkEoaiECIAVBWGoiBQ0ACwsgA0EoaiIDIARHDQALCwJAIAEtADxBBkYNACABQRBqENsYCwvDAgEEfyABQcAAaiAAEKELAkAgASgCmAEiAkUNACABKAKUASIDIAJBKGxqIQQDQAJAAkACQAJAAkAgAygCAA4FBAABAgMECyADKAIEQQFHDQMgACADKAIIENEBDAMLIAAgAygCBBDRAQwCCyADKAIEIgJBwABqIAAQoQsgAkGQAWogABC1EiACLQA8QQZGDQEgAkEQahDZJQwBCyADKAIMIgJFDQAgAkEobCEFIAMoAghBBGohAgNAAkACQAJAAkACQCACQXxqKAIADgUEAAECAwQLIAIoAgBBAUcNAyAAIAJBBGooAgAQ0QEMAwsgACACKAIAENEBDAILIAAgAigCABDDCQwBCyACIAAQ7gsLIAJBKGohAiAFQVhqIgUNAAsLIANBKGoiAyAERw0ACwsCQCABLQA8QQZGDQAgAUEQahDZJQsLwwIBBH8gAUHAAGogABDBCgJAIAEoApgBIgJFDQAgASgClAEiAyACQShsaiEEA0ACQAJAAkACQAJAIAMoAgAOBQQAAQIDBAsgAygCBEEBRw0DIAMoAgggABCjAgwDCyADKAIEIAAQowIMAgsgAygCBCICQcAAaiAAEMEKIAJBkAFqIAAQtxIgAi0APEEGRg0BIAJBEGoQ2SUMAQsgAygCDCICRQ0AIAJBKGwhBSADKAIIQQRqIQIDQAJAAkACQAJAAkAgAkF8aigCAA4FBAABAgMECyACKAIAQQFHDQMgAkEEaigCACAAEKMCDAMLIAIoAgAgABCjAgwCCyAAIAIoAgAQxAkMAQsgAiAAEOwLCyACQShqIQIgBUFYaiIFDQALCyADQShqIgMgBEcNAAsLAkAgAS0APEEGRg0AIAFBEGoQ2SULC8MCAQR/IAFBwABqIAAQogsCQCABKAKYASICRQ0AIAEoApQBIgMgAkEobGohBANAAkACQAJAAkACQCADKAIADgUEAAECAwQLIAMoAgRBAUcNAyAAIAMoAggQpwEMAwsgACADKAIEEKcBDAILIAMoAgQiAkHAAGogABCiCyACQZABaiAAELkSIAItADxBBkYNASACQRBqENklDAELIAMoAgwiAkUNACACQShsIQUgAygCCEEEaiECA0ACQAJAAkACQAJAIAJBfGooAgAOBQQAAQIDBAsgAigCAEEBRw0DIAAgAkEEaigCABCnAQwDCyAAIAIoAgAQpwEMAgsgACACKAIAEMUJDAELIAIgABDvCwsgAkEoaiECIAVBWGoiBQ0ACwsgA0EoaiIDIARHDQALCwJAIAEtADxBBkYNACABQRBqENklCwvgAgECfyMAQbAFayIDJAACQAJAAkAgAS0AJUUNACACKAI4QeUATw0AIANByAJqIAEtABggAS0AGSACEJMBIAMoAsgCQQFGDQBB5AIQpiUiAUKBgICAEDcCAAJAQdwCRQ0AIAFBCGogA0HIAmpBBHJB3AL8CgAACyAAQQI6AAggAEH0tYABNgIEIAAgATYCAAwBCyADIAEoAgAgAS0ADCACEJ0BAkAgAygCAEGAgICAeEcNAAJAQeQCRSIEDQAgA0HIAmogAkHkAvwKAAALQewCEKYlIgFCgYCAgBA3AgACQCAEDQAgAUEIaiADQcgCakHkAvwKAAALIABBADoACCAAQcS3gAE2AgQgACABNgIADAILQdACEKYlIgFCgYCAgBA3AgACQEHIAkUNACABQQhqIANByAL8CgAACyAAQQE6AAggAEHctoABNgIEIAAgATYCAAsgAhDIHAsgA0GwBWokAAuxAgEKfyMAQRBrIgQkACAAIANB/wFxIgVqQcgAaiEGIAAoAiAhByAAKAIcIQggACgCCCEJIAAoAgQhCgN/AkACQAJAAkACQAJAAkAgCiAJIAJB1JGEARCJIygCBCIDRQ0AIAggByADIAYtAABqQeSRhAEQiCMhAwwBCyAEQQhqIAAgAhD0IyAEKAIMIQMgBCgCCCELA0AgA0UNAiADIAsoAhQiDE8NBSALKAIQIANBCWxqIgwoAAUhAyAFIAwtAAAiDUsNAAsgBSANRw0BIAxBAWohAwsgAygAACEDIAENASADQQFHDQEMBAsgAUUNA0EAIQMMAQsgA0EAIANBAUcbIQMLIARBEGokACADDwsgAyAMQcSRhAEQwBQACyAKIAkgAkGsuIABEIkjKAIMIQIMAAsLoAIBA38jAEGAAWsiAiQAIAAoAgAhAAJAAkACQCABKAIIIgNBgICAEHENACADQYCAgCBxDQEgACgCAEEBIAEQ4gchAAwCCyAAKAIAIQBBgQEhAwNAIAIgA2pBfmogAEEPcSIEQTByIARB1wBqIARBCkkbOgAAIANBf2ohAyAAQQ9LIQQgAEEEdiEAIAQNAAsgAUEBQbSpnAFBAiACIANqQX9qQYEBIANrENoFIQAMAQsgACgCACEAQYEBIQMDQCACIANqQX5qIABBD3EiBEEwciAEQTdqIARBCkkbOgAAIANBf2ohAyAAQQ9LIQQgAEEEdiEAIAQNAAsgAUEBQbSpnAFBAiACIANqQX9qQYEBIANrENoFIQALIAJBgAFqJAAgAAuyAgICfwF+IwBBwABrIgIkAAJAAkACQAJAAkACQCABKAIADgQAAQIDAAsCQCABKQMIIgRCA4NCAFINACAEpyIBIAEoAgAiAUEBajYCACABQX9MDQULIABBADYCACAAIAQ3AwgMAwsgACABKQMANwMAIABBCGogAUEIaikDADcDAAwCCyABKAIEIQMQtSUhASACIAMQQiABQThqIAJBOGopAwA3AwAgAUEwaiACQTBqKQMANwMAIAFBKGogAkEoaikDADcDACABQSBqIAJBIGopAwA3AwAgAUEYaiACQRhqKQMANwMAIAFBEGogAkEQaikDADcDACABQQhqIAJBCGopAwA3AwAgASACKQMANwMAIABBAjYCACAAIAE2AgQMAQsgAEEDNgIACyACQcAAaiQADwsAC6wCAgN/AX4jAEHQAGsiASQAQQohAgJAAkAgACgCoAFBCkYNACAAQcABaiEADAELIABBoAFqIQMgACkDCCEEIABBCTYCCCABQRBqIABBGGopAwA3AwAgAUEIaiAAQRBqKQMANwMAIAEgBDcDACABQRxqIAAQ7wkCQCABLQAlQQJGDQAgACgCCCECIABBCTYCCCABQShqQRxqIAFBHGpBCGooAgA2AgAgAUEoakEIaiAAQRRqKQIANwMAIAFBKGpBEGogAEEcaigCADYCACABIAEpAhw3AjwgASAAKQIMNwMoCyADEMknIAAgAjYCoAECQEEkRQ0AIABBpAFqIAFBKGpBJPwKAAALIAAgARC5G0EAIABBwAFqIAAoAqABQQpGGyEACyABQdAAaiQAIAALuwICB38BfiMAQSBrIgMkACADQRBqIAEQww4gAygCGCEEAkACQCADKQMQIgpCAFINAEEBIQUMAQsgAygCHCEGQQEhBSADQQhqIAFBAUEAEOEYIAMoAgwhBwJAAkACQCADKAIIQQFxRQ0AIAchBAwBCyADIAFBF0HAqZwBQQEQlxAgAygCBCEIAkACQCADKAIAQQFxRQ0A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rRkPCyAAKAIEIgJBwABqEN8lAkAgAkGEAWooAgAiA0UNACACQYABaigCACEAIANB2ABsIQMDQAJAAkACQCAAKAIAQXxqDgICAAELIAFBADoABAwBCyABIAAQngcLIABB2ABqIQAgA0Gof2oiAw0ACwsCQCACQZgBaigCACIDRQ0AIAJBlAFqKAIAIQAgA0EobCEDA0AgACABEOkJIABBKGohACADQVhqIgMNAAsLIAItADxBBkYNASACQRBqEN8lDwsgACgCDCIDRQ0AIAAoAgghACADQShsIQMDQCAAIAEQygcgAEEoaiEAIANBWGoiAw0ACwsLrwICAX8BfiMAQSBrIgMkAAJAAkACQAJAAkACQAJAAkAgAkH/AXEOBAABAgQACyADQQA2AhAgA0EIaiABIANBEGpBqe6bAUEGEJoNIAMtAAhBBEYNAiADKQMIIgRC/wGDQgRRDQIgACAENwIADAYLIANBADYCECADQQhqIAEgA0EQakGv7psBQQkQmg0gAy0ACEEERg0BIAMpAwgiBEL/AYNCBFENASAAIAQ3AgAMBQsgA0EANgIQIANBCGogASADQRBqQbjumwFBBxCaDSADLQAIQQRGDQAgAykDCCIEQv8Bg0IEUg0CCyADQRBqIAEQ0BAgAy0AEEEERg0AIAMpAxAiBEL/AYNCBFINAgsgAEEEOgAADAILIAAgBDcCAAwBCyAAIAQ3AgALIANBIGokAAujAgEDfyMAQTBrIgMkACAAKAIoIQQgA0EIaiAAKAIEIAAoAgggAUHcvYMBEIYgIAMoAgwhACADKAIIIQUgAyACNgIUAkACQAJAIABFDQACQAJAIAUtAAAiAUH/AUYNACABIAFBAnZqIAFBA3FBAEdqQQJqIQEMAQsgBEECaiEBCyABIABPDQECQAJAIAUgAUECdGooAgAiBEF/TA0AAkAgAiABakEBaiIBIABPDQAgBSABQQJ0aigCACEADAILIAEgAEGUtYMBEMAUAAsgAg0DIARB/////wdxIQALIANBMGokACAADwtBAEEAQbS1gwEQwBQACyABIABBhLWDARDAFAALIANBADYCGEEAQcTwmAEgA0EUaiADQRhqQaS1gwEQ7R4AC6ACAQR/IwBBMGsiBiQAQQAhBwJAIAMoAhAiCCADKAIUIglLDQACQAJAAkAgAygCAEF/akECSQ0A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cjoAAiAFIAFBDHZB4AFyOgAAIAUgAUEGdkE/cUGAAXI6AAEMAgsgBSABOgAADAELIAUgAUE/cUGAAXI6AAEgBSABQQZ2QcABcjoAAAsgACADIARqNgIIQQALogICA38BfiMAQcAAayICJAACQAJAAkACQCABLQDYASIDQUBqQQJJDQACQCADQaIBRg0AIAJBEGogARCSDgJAIAIpAxAiBUICUg0AQQEhAyACKAIYIQEMAwsCQCAFp0EBcUUNAEEAIQMgAkEQakEIahCTDiEBDAMLIAIpAxghBSACKAIkIQMgAigCICEEIAJBh4CAgHg2AiggASAEIAMgAkEoahCqIUEIQcAAEMQpIgFFDQQgASADNgIUIAEgBDYCECABIAU3AgggAUEvNgIAQQAhAwwCC0ECIQMgARDAKSEBDAILIAJBCGogARCPEyACKAIMIQEgAigCCCEDC0ECQQAgA0EBcRshAwsgACADOgAAIAAgATYCBCACQcAAaiQADwsAC7cCAgJ/AX4jAEEwayICJAACQAJAAkACQAJAIAEtANgBIgNBwABGDQACQCADENUUDQAgAkEYakEEciABEJckIAJBFDYCLCACQfaknAE2AiggAkGwgICAeDYCGCABKALQASABKALUASACQRhqEJcZIQMgAS0A2AFBogFHDQQgASABEMApEKcWDAQLIAJBGGogARDDDiACKAIgIQEgAikDGCIEUA0CIAJBADYCECACIAIoAiQ2AgwgAiABNgIIIAJBADoAFCACIAQ3AwBCACEEDAELIAIgARC1GUIBIQQLIAAgBDcDACAAIAIpAwA3AwggAEEQaiACQQhqKQMANwMAIABBGGogAkEQaikDADcDAAwCCyAAQgI3AwAgACABNgIIDAELIABCAjcDACAAIAM2AggLIAJBMGokAAudAgEGfyMAQTBrIgIkAAJAAkAgASgCAEGAgICAeEYNACABKAIEIQMgAiABKAIIIgRBBEEMQbDhmwEQhxggAkEANgIQIAIgAikDADcCCCACQQhqIAQQyiIgAigCECEFAkAgBEUNACAEIAVqIQYgAUEUaiEHIAIoAgwgBUEMbGohASACQSBqQQRqIQUDQCAFQQhqIAdBCGovAQA7AQAgBSAHKQIANwIAIAIgAzYCICACQRRqIAJBIGoQoBMgAUEIaiACQRRqQQhqKAIANgIA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Rg0AIAMpAxgiBkL/AYNCBFENACAAIAY3AgAMAQsgA0EANgIMIANBGGogAiADQQxqQd6LnAFBARCcDQJAIAMtABhBBEYNACADKQMYIgZC/wGDQgRRDQAgACAGNwIADAELIANBGGogAiAFIAQgASgCBCABKAIIQZDSARCuBAJAIAMtABhBBEYNACADKQMYIgZC/wGDQgRRDQAgACAGNwIADAELIANBGGogAiADQQxqQd2LnAFBARCcDQJAIAMtABhBBEYNACADKQMYIgZC/wGDQgRRDQAgACAGNwIADAELIABBBDoAAAsgA0EgaiQAC54CAgJ/AX4jAEEgayIEJAACQAJAIAMNACAAQQA2AgggAEKAgICAEDcCAAwBCwJAAkAgAq0gA61+IgZCIIinDQAgBEEIaiAGpyIFQbyXggEQihggBEEANgIcIAQgBCkDCDcCFCAEQRRqIAEgASACahCLGCAEKAIcIQIgBCgCGCEBAkADQAJAIANBAUsNACAEIAI2AhwgBSACRw0CDAQLAkAgAkUNACABIAJqIAEgAvwKAAALIAJBAXQhAiADQQF2IQMMAAsLAkAgBSACayIDRQ0AIAEgAmogASAD/AoAAAsgBCAFNgIcDAELQcimmwFBEUHMl4IBELIWAAsgACAEKQIUNwIAIABBCGogBEEUakEIaigCADYCAAsgBEEgaiQAC4sCAgV/AX4jAEEgayIFJABBACEGAkACQCADIARqQX9qQQAgA2txrSACQQFqIgIgASgCACIHQQF0IgggAiAISxsiAkEEIAJBBEsbIgitfiIKQiCIp0UNAAwBCyAKpyIJQYCAgIB4IANrSw0AAkACQCAHDQAgBUEUakEEaiEGQQAhAgwBCyAFQRxqIQYgBSADNgIYIAUgASgCBDYCFCAHIARsIQILIAYgAjYCACAFQQhqIAMgCSAFQRRqELIQAkAgBSgCCEEBRw0AIAUoAhAhAiAFKAIMIQYMAQsgBSgCDCEDIAEgCDYCACABIAM2AgRBgYCAgHghBgsgACACNgIEIAAgBjYCACAFQSBqJAALjAIBB38jAEEwayICJAAgASgCBCEDIAJBCGogASgCCCIEQQhBKBD3DiACKAIMIQUCQCACKAIIQQFGDQAgAigCECEGAkAgBUUNACAEQShsIQcgBiEBIAUhCANAIAdFDQEgAkEIaiADEJYBIAFBIGogAkEIakEgaikDADcDACABQRhqIAJBCGpBGGopAwA3AwAgAUEQaiACQQhqQRBqKQMANwMAIAFBCGogAkEIakEIaikDADcDACABIAIpAwg3AwAgAUEoaiEBIAdBWGohByADQShqIQMgCEF/aiIIDQALCyAAIAQ2AgggACAGNgIEIAAgBTYCACACQTBqJAAPCyAFIAIoAhBBtOqaARDBJgALjAIBB38jAEEwayICJAAgASgCBCEDIAJBCGogASgCCCIEQQhBKBD3DiACKAIMIQUCQCACKAIIQQFGDQAgAigCECEGAkAgBUUNACAEQShsIQcgBiEBIAUhCANAIAdFDQEgAkEIaiADEJwDIAFBIGogAkEIakEgaikDADcDACABQRhqIAJBCGpBGGopAwA3AwAgAUEQaiACQQhqQRBqKQMANwMAIAFBCGogAkEIakEIaikDADcDACABIAIpAwg3AwAgAUEoaiEBIAdBWGohByADQShqIQMgCEF/aiIIDQALCyAAIAQ2AgggACAGNgIEIAAgBTYCACACQTBqJAAPCyAFIAIoAhBBtOqaARDBJgALywIBAX8jAEHwAGsiAiQAIAAoAgAhACACQbSLmwE2AmggAkGEi5sBNgJgIAIgAEHBAGo2AlwgAkGEi5sBNgJYIAIgAEHAAGo2AlQgAkGEi5sBNgJQIAIgAEE/ajYCTCACQYSLmwE2AkggAiAAQT5qNgJEIAJBhIubATYCQCACIABBPWo2AjwgAkGki5sBNgI4IAIgAEHDAGo2AjQgAkGUi5sBNgIwIAIgAEEoajYCLCACQYSLmwE2AiggAiAAQTxqNgIkIAJB9IqbATYCICACIABBOGo2AhwgAkHkipsBNgIYIAIgAEE0ajYCFCACQdSKmwE2AhAgAiAANgIMIAJBxIqbATYCCCACIABBIGo2AgQgAiAAQcIAajYCbCACIAJB7ABqNgJkIAFB+IybAUEJQZCMmwFBDSACQQRqQQ0QmgohACACQfAAaiQAIAALqwIBAX8jAEEwayIEJAAgBEEAOgAVIAQgAjoAFCAEQQE6ABYgBCADOgAXAkAgASgCiAEiAkGAgAFxRQ0AIAEtAJEBQSBxRQ0AIAEtANgBQf8BcUECRw0AIAEoAtQBIQIgASgC0AEhAyAEQZmBgIB4NgIYIAEgAyACIARBGGoQqiEgASgCiAEhAgsgBCAEQRVqNgIkIAQgBEEWajYCICAEIARBF2o2AhwgBCAEQRRqNgIYAkACQCACQYCAIHENACABIAJBgIAgcjYCiAEgBCAEQRhqIAEQ0A4gBCgCACECIAEgASgCiAFB//9fcTYCiAEgBCgCBCEBDAELIARBCGogBEEYaiABENAOIAQoAgwhASAEKAIIIQILIAAgATYCBCAAIAI2AgAgBEEwaiQAC5gCAgF/AX4jAEEgayIDJAAgA0EANgIMIANBGGogAiADQQxqQdaLnAFBARCbDQJAAkAgAy0AGEEERg0AIAMpAxgiBEL/AYNCBFENACAAIAQ3AgAMAQsgA0EYaiACIAEoAgxBAWpBARDuAwJAIAMtABhBBEYNACADKQMYIgRC/wGDQgRRDQAgACAENwIADAELAkAgASgCAEEBRw0AIANBGGogAUEEaiACEO8qIAMtABhBBEYNACADKQMYIgRC/wGDQgRRDQAgACAENwIADAELIANBGGogAiADQQxqQdqLnAFBARCbDQJAIAMtABhBBEYNACADKQMYIgRC/wGDQgRRDQAgACAENwIADAELIABBBDoAAAsgA0EgaiQAC5ACAQd/IwBBMGsiAyQAQQAhBCADQQA2AhAgA0KAgICAEDcCCCADQQE6ACwgA0HfADYCKCADIAI2AiQgAyACNgIcIAMgATYCGCADQd8ANgIUIANBKGohBUEAIQYCQANAIAIgBiIHSQ0BIANB3wAgASAHaiACIAdrEO0QIAMoAgBBAXFFDQEgAyADKAIEIgggB2oiCUEBaiIGNgIgIAkgAk8NACABIAhqIAdqIgdBASAFQQEQriNFDQAgA0EIaiABIARqIAcQrR4gA0EIakEBQQEQrR4gBiEEDAALCyADQQhqIAEgBGogASACahCtHiAAQQhqIANBCGpBCGooAgA2AgAgACADKQIINwIAIANBMGokAAudAgEFfwJAIAEoAhQiAiABKAKwAiIDdiIEQYCAgAFLDQACQEEBIANBH3F0IgMgAUEMaiIFKAIAIAJrTQ0AIAUgAiADQQhBCBDBGyABKAIUIQILIAIgA2ohBSABKAIQIgYgAkEDdGohAgNAIAJCADcDACACQQhqIQIgA0F/aiIDDQALIAEgBTYCFAJAIAQgASgCsAJ0IAEoArQCaiICIAVPDQAgBiACQQN0akKAgICAgIB/NwMAAkACQCABKAK8AkEBcUUNACABKAIgQQJ0IAVBA3RqIAEoAsACIgJLDQELIABBMDYCACAAIAQ2AgQPCyAAIAI2AgQgAEEuNgIADwsgAiAFQdStgwEQwBQACyAAQoCAgAE3AwggAEErNgIAC6ACAQN/IwBBMGsiBCQAAkACQAJAIAMoAhAiBSADKAIUIgZLDQAgAUEEaiEBAkAgAygCAEF/akECSQ0AIARBDGogASADKAIIIAMoAgwgBSAGEOAGQQAhAwJAIAQoAgxBAUcNACAEKAIQIgMgBCgCFCIFSw0DIABBADYCDCAAIAU2AgggACADNgIEQQEhAwsgACADNgIADAMLQQAhBgJAIAUgAygCDE8NACABLQAAIAMoAgggBWotAABHDQAgAEEANgIMIAAgBTYCBEEBIQYgACAFQQFqNgIICyAAIAY2AgAMAgsgAEEANgIADAELIARBADYCKCAEQQE2AhwgBEHslIQBNgIYIARCBDcCICAEQRhqQbykgwEQtSEACyAEQTBqJAALlAICAn8BfiMAQSBrIgMkACABQRhqIQQCQAJAAkACQCABLQAsQQJGDQAgA0EQaiAEIAIQ+RYgAy0AEEEERg0CIAMpAxAiBUL/AYNCBFINAQwCCyADQRBqIAQoAgAgAhCTCiADLQAQQQRGDQEgAykDECIFQv8Bg0IEUQ0BCyAFQv8Bg0IEUQ0AIAAgBTcCAAwBCyADQQA2AhAgA0EIaiACIANBEGpB1YucAUEBEJsNAkAgAy0ACEEERg0AIAMpAwgiBUL/AYNCBFENACAAIAU3AgAMAQsgA0EQaiABIAIQtRcCQCADLQAQQQRGDQAgAykDECIFQv8Bg0IEUQ0AIAAgBTcCAAwBCyAAQQQ6AAALIANBIGokAAujAgEEfyMAQRBrIgMkAAJAAkAgACgCCCIEQYCABE8NAAJAIAAoAhQiBSAAKAIMRw0AIABBDGpBtKuAARCzGgsgACAFQQFqNgIUIAAoAhAgBUECdGogBDYCACADQQRqIAJBAEEBQQEQmQwgAygCCCEGIAMoAgRBAUYNASADKAIMIQQCQCACRQ0AIAQgASAC/AoAAAsCQCAAKAIIIgUgACgCAEcNACAAQcSrgAEQtRoLIAAgBUEBajYCCCAAKAIEIAVBDGxqIgUgAjYCCCAFIAQ2AgQgBSAGNgIAIAAgACgCHCACajYCHCAAIAIgACgCGCIFIAIgBUkbNgIYIANBEGokAA8LQeyqgAFBN0Gkq4ABEMccAAsgBiADKAIMQeC0nAEQwSYAC5oCAQZ/IwBBEGsiAiQAIAEoAgQhA0EAIQQCQCABLQAMIgUNACABKAIIQQJ0IQRBACEGIAMhBwJAAkADQCAERQ0BIAcoAgANAiAEQXxqIQQgBkEBaiEGIAdBBGohBwwACwtBqMeCAUEcQbDIggEQshYACyAGrUIFhiADIAZBAnRqKAIAaK2EUCEECwJAAkAgAyABIAEoAgBBgICAgHhGGygCCEUNACACIAFBAEEBEMcHDAELIAIgARDHGwsCQCAERQ0AAkAgAigCCCIEDQAgAkEAQfyYggEQ/R4gAigCCCEECyACKAIEIQcgAkEBNgIMIAcgBCACQQxqENALRQ0AIAJBAUGMmYIBEP0eCyAAIAUgAhDaFiACQRBqJAALkwIBCn8jAEEQayIBJAAgACgCBEGAAiAAKAIAIgIbIgMgACgCDCIEIAMgBEsbIQUgBEGAAiAEQYACSxshBiAAKAIIIQcgAC0AEEEBcSEIIAAtABFB/wFxIQkCQAJAA0ACQCAFIAQiA0cNAEECIQNBACEEIAVBf0YNAiACDQIgAEF/NgIMIActAP8BQRB0QYGABGoiA0GAgPwPcSEEDAILIAYgA0YNAiAAIANBAWoiBDYCDCAHIANqLQAAIQoCQCAIRQ0AIAkgCkH/AXFGDQELCyAAIAo6ABEgAEEBOgAQIANBCHQiBCEDCyABQRBqJAAgA0H/AXEgBHIPC0HIkZwBQSsgAUEPakGoxYMBQYTQgwEQoxIAC5gCAgF/AX4jAEEgayIDJAAgA0EQaiACIAEoAgggASABLQAUEN0GAkACQCADLQAQQQRGDQAgAykDECIEQv8Bg0IEUQ0AIAAgBDcCAAwBCwJAAkACQCABKAIYIgFFDQAgA0EANgIQIANBCGogAiADQRBqQcSpnAFBARCbDQJAIAMtAAhBBEYNACADKQMIIgRC/wGDQgRRDQAgACAENwIADAQLAkAgAi0ATQ0AIANBEGogAhDYECADLQAQQQRGDQAgAykDECIEQv8Bg0IEUg0CCyADQRBqIAEgAhDXESADLQAQQQRGDQAgAykDECIEQv8Bg0IEUg0CCyAAQQQ6AAAMAgsgACAENwIADAELIAAgBDcCAAsgA0EgaiQAC50CAgV/An4jAEEwayICJAAgASgCACIDQQhqIQQgAyABKAIEIgVqQQFqIQYgAykDAEJ/hUKAgYKEiJCgwIB/gyEHIAEoAgwhAQJAAkAgBQ0AQgAhCEEAIQUMAQsgAkEIQQggBUEBahCYESADIAIoAghrrUIghiACNQIEhCEIIAIoAgAhBQsgACABQQFqQQF2IAEgACgCDBsQxSUgAiAINwIkIAIgBTYCICACIAE2AhggAiADNgIQIAIgBjYCDCACIAQ2AgggAiAHNwMAAkADQCABRQ0BIAIQ8REhAyACIAIoAhhBf2oiATYCGCAAIANBeGopAwAQvgYMAAsLAkAgAigCICIBRQ0AIAIoAiggASACKAIkEMYmCyACQTBqJAALmAIBBH8jAEEwayIDJAACQCAAKAI4RQ0AIANBGGogASACELkJIAMoAhwhBCAAIAAoAjAgAygCGCIFajYCMCADQRBqIAQgASACEIkXAkAgAygCECIGRQ0AIAMoAhQhAUEAIQIgA0EAOwEsIAMgBjYCJCADIAYgAWo2AihBACEBA0ACQAJAAkAgAkH//wNxDQAgA0EIaiADQSRqEJIMAkAgAygCCEEBcUUNAAJAIAMoAgwiAkH//wNLDQAgAy8BLCECDAQLIAJB/wdxQYC4f3IhAgwCCyAAIAFBACAAKAI0IAUbajYCNAwFC0EAIQILIAMgAjsBLAsgAUEBaiEBDAALCyABIAIgBCACQdConAEQjygACyADQTBqJAALmgIBAX8jAEEgayIHJAAgByAENgIAIAcgBjYCBAJAIAQgBkcNACAAKAIAIAEgAiAAKAIEKAIMEQsAIQYgB0EAOgANIAcgBjoADCAHIAA2AggDQCAHQQhqIAMoAgAgA0EEaigCACAFQQ8QsQkhACADQQhqIQMgBUEIaiEFIARBf2oiBA0ACyAHLQANIgUgBy0ADCIEciEDAkAgBUEBcUUNACAEQQFxDQACQCAAKAIAIgMtAApBgAFxDQAgAygCAEHH5JcBQQIgAygCBCgCDBELACEDDAELIAMoAgBB2oucAUEBIAMoAgQoAgwRCwAhAwsgB0EgaiQAIANBAXEPCyAHQQA2AghBACAHIAdBBGogB0EIakGcm4EBEO0eAAuRAgEEfyMAQTBrIgYkAEEAIQcCQCADKAIQIgggAygCFCIJSw0AIAFBBGohAQJAAkACQCADKAIAQX9qQQJJDQAgBkEMaiABIAMoAgggAygCDCAIIAkQ4AYgBigCDEEBRw0CIAYoAhAiCCAGKAIUIgNNDQEgBkEANgIoIAZBATYCHCAGQeyUhAE2AhggBkIENwIgIAZBGGpBvKSDARC1IQALQQAhByAIIAMoAgxPDQJBACEHIAEtAAAgAygCCCAIai0AAEcNAiAIQQFqIQMLQQEhByAFRQ0BIAQgCEEBajYCACAFQQFGDQFBASEHIAQgA0EBajYCBAwBC0EAIQcLIABBADYCBCAAIAc2AgAgBkEwaiQAC58CAQR/IwBBMGsiBCQAQQAhBQJAAkAgAygCECIGIAMoAhQiB0sNACABQQRqIQECQAJAIAMoAgBBf2pBAkkNACAEQQxqIAEgAygCCCADKAIMIAYgBxDvBSAEKAIMQQFHDQIgBCgCECAEKAIUIgNNDQEgBEEANgIoIARBATYCHCAEQeyUhAE2AhggBEIENwIgIARBGGpBvKSDARC1IQALIARBDGogASADKAIIIAMoAgwgBiADENoVIAQoAgxBAUcNASAEKAIQIAQoAhQiA0sNAgsgACADNgIIIABBADYCBEEBIQULIAAgBTYCACAEQTBqJAAPCyAEQQA2AiggBEEBNgIcIARB7JSEATYCGCAEQgQ3AiAgBEEYakG8pIMBELUhAAucAgEDfyMAQTBrIgQkAAJAAkACQCADKAIQIgUgAygCFCIGSw0AAkAgAygCAEF/akECSQ0AIARBDGogASADKAIIIAMoAgwgBSAGENsPQQAhAwJAIAQoAgxBAUcNACAEKAIQIgMgBCgCFCIFSw0DIABBADYCDCAAIAU2AgggACADNgIEQQEhAwsgACADNgIADAMLQQAhBgJAIAUgAygCDE8NACABIAMoAgggBWotAABqLQAAQQFHDQAgAEEANgIMIAAgBTYCBCAAIAVBAWo2AghBASEGCyAAIAY2AgAMAgsgAEEANgIADAELIARBADYCKCAEQQE2AhwgBEHslIQBNgIYIARCBDcCICAEQRhqQbykgwEQtSEACyAEQTBqJAALnwIBBH8jAEEwayIEJABBACEFAkACQCADKAIQIgYgAygCFCIHSw0AIAFBBGohAQJAAkAgAygCAEF/akECSQ0AIARBDGogASADKAIIIAMoAgwg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AwAgBUEQaiAINwMAIAVBCGogBzcDACAFIAw3AwAgBUE4aiEFIAZBAWohBiAEQThqIgQgA0cNAAsgASAENgIECyAAIAY2AggLpwIBBH8gABDZJQJAIAAoAkQiAkUNACAAKAJAIgMgAkHYAGxqIQQDQAJAAkACQCADKAIAIgJBfGoOAgIAAQsgAygCBCABEKMCDAELAkACQAJAIAIOBAMAAQIDCyADKAIEQQFHDQIgAygCCCABEKMCDAILIAMoAgQgARDlBQwBCyADKAIMIgJFDQAgAkEobCEFIAMoAghBBGohAgNAAkACQAJAAkACQCACQXxqKAIADgUEAAECAwQLIAIoAgBBAUcNAyACQQRqKAIAIAEQowIMAwsgAigCACABEKMCDAILIAEgAigCABDECQwBCyACIAEQ7AsLIAJBKGohAiAFQVhqIgUNAAsLIANB2ABqIgMgBEcNAAsLAkAgACgCOCICRQ0AIAIgARDRHQsLqgIBA38jAEEgayIDJAAgAyACIAFBKGogASgCGCgCACABKAIcLQAAIAEoAiAtAAAQ9QggAygCBCEEAkACQAJAAkAgAygCAEEBcUUNACAAQQM6ABQgACAENgIADAELIAEoAiQtAABFDQEgBCgCGEGAgICAeEcNASADQQhqQQRyIAIQlyQgA0EBNgIcIANB1oucATYCGCADQbCAgIB4NgIIIAIoAtABIAIoAtQBIANBCGoQlxkhBQJAIAItANgBQaIBRw0AIAIgAhDAKRCnFgsgAEEDOgAUIAAgBTYCACAEENoeCyABKQMAIAEtABQQoSYMAQsgACAENgIYIAAgASkDADcDACAAQRBqIAFBEGopAwA3AwAgAEEIaiABQQhqKQMANwMACyADQSBqJAALsgICA38BfiMAQSBrIgIkAAJAAkACQAJAIAEtANgBQf0BcUHJAEcNACABLQCTAUEBcUUNASABKALUASEDIAEoAtABIQQgAkGjgICAeDYCCCAEIAMgAkEIahCXGSEDAkAgAS0A2AFBogFHDQAgARDVESEEIAEQlAsgASAEEKcWCyAAIAM2AgAMAgsgAkEIakEEciABEJckIAJBDjYCHCACQYTYmwE2AhggAkGwgICAeDYCCCABKALQASABKALUASACQQhqEJcZIQMCQCABLQDYAUGiAUcNACABENURIQQgARCUCyABIAQQpxYLIAAgAzYCAAwBCyABEIMSIQUgARCUC0EAIQMgAEEANgIQIAAgBTcDACAAIAEpA8gBNwMIDAELQQIhAwsgACADOgAUIAJBIGokAAuVAgEEfwJAAkACQAJAIAAoAgAOBAABAgMACyAAQQhqIAEQ6CMPCyAAKAIMQShsIQIgACgCCCEDAkADQCACRQ0BAkAgAygCAEEHRg0AIAMgARCzFQsgA0EoaiEDIAJBWGohAgwACwsgAEEYaiABELImDwsgAEEEaiABELMmDwsgACgCDEE4bCEEIAAoAgghBUEAIQMCQANAIAQgA0YNAQJAAkACQAJAIAUgA2oiAigCAA4DAAECAAsgAkEIaigCACACQQxqKAIAIAEQ1CcgAkEoaigCACABELMVDAILIAJBEGogARDoIyACQTBqKAIAIAEQ1CgMAQsgAkEEaiABELMmCyADQThqIQMMAAsLIABBGGogARCyJguLAgEIfyMAQRBrIgIkACACQQRqIAEoAgQgASgCCEEQEK4BIAIoAgwhAwJAAkAgAS0ADEUNACACKAIIIQQMAQsCQCADIAIoAgRHDQAgAkEEakH8n5wBEOsOCyACKAIIIgQgA2pBLToAACACIANBAWoiAzYCDAtBACEBQQAgA0EBdiIFayEGIAMgBGpBf2ohByADQQJJIQgCQANAIAYgAUYNASABQX9qIQMCQCAIDQAgBC0AACEJIAQgByABaiIBLQAAOgAAIAEgCToAACAEQQFqIQQgAyEBDAELCyADIAVB1KycARDAFAALIAAgAikCBDcCACAAQQhqIAJBBGpBCGooAgA2AgAgAkEQaiQAC6ACAQF/IwBBMGsiAiQAIAIgADYCDCACIAE2AggCQCAAKAIgQQFHDQAgACgCKCIBIAEoAgAiAUF/ajYCACABQQFHDQAgACgCKCAAKAIsEPccCyAAQQA2AiAgACACKQIQNwIkIABBLGogAkEYaigCADYCACACQQhqEJMEAkAgAigCCCgCgAUoAtACIgFBf0oNACACQQE2AhQgAkGwsoQBNgIQIAJCATcCHCACQf0ANgIsIAJBiLKEATYCKCACIAJBKGo2AhggAkEQakGos4QBELUhAAsgAEEANgJIIABBMGogARDRIiAAQTxqIAEQ0SIgAEEANgJkIABBzABqIAEQ0SIgAEHYAGogARDRIiAAQQA2ArAB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QfgARhshAwJAIAEQzg9B+wBGDQAgACABIAMQ7wQMAQsgACABIAMQ5QMLIAJBIGokAAuHAgIGfwF+IwBBwABrIgIkACABKQIIIQgQtSUhAyACIAEoAgAQQiADQThqIAJBOGopAwA3AwAgA0EwaiACQTBqKQMANwMAIANBKGogAkEoaikDADcDACADQSBqIAJBIGopAwA3AwAgA0EYaiACQRhqKQMANwMAIANBEGogAkEQaikDADcDACADQQhqIAJBCGoiBCkDADcDACADIAIpAwA3AwAgASgCBCEFELolIQEgBSgCDCEGIAUoAhAhByACIAUQxQwgAUEQaiAHNgIAIAEgAikCADcCACACIAY2AgwgAUEIaiAEKQIANwIAIAAgATYCBCAAIAM2AgAgACAINwIIIAJBwABqJAALkwIBAX8CQAJAAkACQAJAAkACQCAAKAIADgcAAQIDBQQGAAsgASAAQQhqEP4LDwsgACgCDCICRQ0CIAAoAgghACACQShsIQIDQAJAIAAoAgBBB0YNACAAIAEQhQsLIABBKGohACACQVhqIgINAAwDCwsgACgCBCABEIULDwsgACgCDCICRQ0AIAAoAgghACACQThsIQIDQAJAAkACQAJAIAAoAgAOAwABAgALIABBCGogARDPJSAAQShqKAIAIAEQhQsMAgsgASAAQQhqEKgRDAELIABBBGooAgAgARCFCwsgAEE4aiEAIAJBSGoiAg0ACwsPCyAAKAIEIAEQhQsgASAAKAIIEIgeDwsgASAAKAIEEIgeC5oCAQJ/AkACQAJAAkACQAJAAkAgACgCACICQXtqIgNBBCADQQZJGw4GAAECAwQFAAsgAEEANgIYDwsCQCAAKAIIQQNHDQAgACgCDCABELoDCyAAKAIoIAEQugMPCyAAQQA2AiAgACgCKCABELoDDwsgAEEoaiEDAkAgACgCCEEDRw0AIAAoAgwgARC6AwsgAygCAEGAgICAeEYNAiADIAEQjB4PCyAAQSBqIQMCQCACQQNHDQAgACgCBCABELoDCwJAIAMoAgBBB0YNACADIAEQ1Q0LIAAoAmggARDVDSAAKAJIQYCAgIB4Rg0BIABByABqIAEQjB4PCwJAIAAoAghBA0cNACAAKAIMIAEQugMLIAAoAiggARCFDQsL9AEBAX8jAEEQayICJAAgAkEANgIMAkACQAJAIAFBgAFJDQAgAUGAEEkNAQJAIAFBgIAESQ0AIAIgAUE/cUGAAXI6AA8gAiABQRJ2QfABcjoADCACIAFBBnZBP3FBgAFyOgAOIAIgAUEMdkE/cUGAAXI6AA1BBCEBDAMLIAIgAUE/cUGAAXI6AA4gAiABQQx2QeABcjoADCACIAFBBnZBP3FBgAFyOgANQQMhAQwCCyACIAE6AAxBASEBDAELIAIgAUE/cUGAAXI6AA0gAiABQQZ2QcABcjoADEECIQELIAAgAkEMaiABEI0FIQEgAkEQaiQAIAELlAIBBX8jAEEQayIDJAACQAJAIAItAAwiBEEBRw0AIAAgARCzJAwBCwJAAkACQAJAAkAgAS0ADCIFDgMABAEACyAERQ0BDAILIARFDQELIANBBGogASgCBCABKAIIIAIoAgQgAigCCBC5FiAAIAUgA0EEahDaFgwCCwJAAkACQCABKAIEIgYgASgCCCIBIAIoAgQiByACKAIIIgIQtR5B/wFxDgIBAgALIANBBGogByACIAYgARCbICAAIAQgA0EEahDaFgwDCyAAQQhqQQApAvSYggE3AgAgAEEAKQLsmIIBNwIADAILIANBBGogBiABIAcgAhCbICAAIAUgA0EEahDaFgwBCyAAIAIQsyQLIANBEGokAAuRAgEJfyMAQRBrIgMkACACLQAMIQQgAS0ADCEFIAIoAgQhBiACKAIAIQcgASgCBCEIIAEoAgAhCQJAAkACQAJAIAEoAggiCkUNACACKAIIIgsNAQsgA0EIakEAKAKUoJwBNgIAIANBACkCjKCcATcDAAwBCwJAIAtBAUcNACADQQhqIAFBCGooAgA2AgAgAyABKQIANwMAIAMgBigCABCRCSAGIQggByEJDAILAkAgCkEBRw0AIANBCGogAkEIaigCADYCACADIAIpAgA3AwAgAyAIKAIAEJEJDAILIAMgCCAKIAYgCxDpEQsgByAGEJoqCyAJIAgQmiogACAFIAQQkBpB/wFxIAMQ2hYgA0EQaiQAC4oCAQR/IwBBMGsiAyQAQQAhBAJAAkAgAigCECIFIAIoAhQiBksNAAJAIAIoAgBBf2pBAkkNACADQQxqIAAgAigCCCACKAIMIAUgBhDuDUEAIQQgAygCDEEBRw0BQQEhBCADKAIQIAMoAhRNDQEgA0EANgIoIANBATYCHCADQeyUhAE2AhggA0IENwIgIANBGGpBvKSDARC1IQALIANBDGogACACKAIIIAIoAgwgBSAGENsTQQAhBCADKAIMQQFHDQBBASEEIAMoAhAgAygCFEsNAQsgA0EwaiQAIAQPCyADQQA2AiggA0EBNgIcIANB7JSEATYCGCADQgQ3AiAgA0EYakG8pIMBELUhAAuKAgEEfyMAQTBrIgMkAEEAIQQCQAJAIAIoAhAiBSACKAIUIgZLDQACQCACKAIAQX9qQQJJDQAgA0EMaiAAIAIoAgggAigCDCAFIAYQvwhBACEEIAMoAgxBAUcNAUEBIQQgAygCECADKAIUTQ0BIANBADYCKCADQQE2AhwgA0HslIQBNgIYIANCBDcCICADQRhqQbykgwEQtSEACyADQQxqIAAgAigCCCACKAIMIAUgBhDyCUEAIQQgAygCDEEBRw0AQQEhBCADKAIQIAMoAhRLDQELIANBMGokACAEDwsgA0EANgIoIANBATYCHCADQeyUhAE2AhggA0IENwIgIANBGGpBvKSDARC1IQAL9AEBCX8gASgCCCIDQRxsIQRBACEFIAItABhB/wFxIgZBB0chByABKAIEIgghCQJAAkADQCAERQ0BAkAgCS0AGCIKQQdHIAdzDQBBASELIApBB0YNAyAGQQdGDQMgCiAGRg0DCyAJQRxqIQkgBUEBaiEFIARBZGohBAwACwsCQCADIAEoAgBHDQAgARDnGiABKAIEIQgLIAEgA0EBajYCCCAIIANBHGxqIgQgAikCADcCACAEQRhqIAJBGGooAgA2AgAgBEEQaiACQRBqKQIANwIAIARBCGogAkEIaikCADcCAEEAIQsLIAAgBTYCBCAAIAs2AgALjQICA38BfiMAQSBrIgIkAAJAAkACQCAAKAIADQAgACgCECIARQ0BIABB5IecAUEBEP8FIQEMAgsgAiAAEK0PAkAgAigCAA0AAkAgACgCECIDRQ0AQQEhASADQdTjlwFBxOOXASACLQAEQQFxIgQbQRlBECAEGxD/BQ0DCyAAIAIpAgA3AgAgAEEIaiACQQhqKQIANwIADAELIAAoAhBFDQAgACkCACEFIAAgAikCADcCACACQRBqQQhqIgQgAEEIaiIDKQIANwMAIAMgAkEIaikCADcCACACIAU3AxAgACABQQFxEPIBIQEgAyAEKQMANwIA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gICAeDYCCCADIAggCSAEQQhqEKohDAELIARBkoCAgHg2AgggAyABIAIgBEEIahCqIQsgACAHNgIIIAAgBTYCBCAAIAY2AgALIARBIGokAAuAAgEBfyMAQcAAayIGJAAgBkEQaiACIAMgBCAFQcSTgAEQwBsgBigCECECIAYoAhQhBSAGQgE3AigCQAJAAkAgBSABKAJAIgNJDQAgBkEIaiABIAZBKGogAiAFIAEoAjwgAyABKAIwERQAIAYoAghBAXFFDQAgBigCDCAEaiIBIANqIgUgAUkNAiAAQQA2AgwgACAFNgIIIAAgATYCBCAAQQE2AgAMAQsgAEEANgIAIAAgBikCHDcCBCAAQQxqIAZBJGooAgA2AgALIAZBwABqJAAPCyAGQQA2AjggBkEBNgIsIAZB7JSEATYCKCAGQgQ3AjAgBkEoakH0lIQBELUhAAvyAQEHfyMAQRBrIgIkAAJAIAEoAggiA0UNACABKAIEIgQgA0ECdGpBfGoiBUUNACAFKAIADQAgA0ECdCEFIARBfGohBiADQf////8DcSEHAkADQCAHIQQCQCAFDQBBACEEDAILIARBf2ohByAGIAVqIQggBUF8aiEFIAgoAgBFDQALIAQgA0sNAQsgASAENgIIIAQhAwsCQCADIAEoAgBBAnZPDQAgAkEIaiABIAMQgA4gAigCCCIFQYGAgIB4Rg0AIAUgAigCDEGYx4IBEMEmAAsgACABKQIANwIAIABBCGogAUEIaigCADYCACACQRBqJAAL+AEBBH8gAigCCCEDIAIoAgQhBCAAEJUTIQACQAJAAkAgASACKAIATw0AA0ACQCADDQBBACEFDAQLIAAoAhAgACgCFCADQX9qIgZB9OCYARCgIyIFKAIAIAFJDQIgBEECIAUtAAQiA0F/aiADQQRGG0H/AXFrIQQgBiEDDAALCyADIAAoAhQiBiADIAZLGyEFA0AgBSADRg0CIAAoAhAgACgCFCADQYThmAEQoCMiBigCACABTw0BIARBAiAGLQAEIgZBf2ogBkEERhtB/wFxaiEEIANBAWohAwwACwsgAyEFCyACIAU2AgggAiAENgIEIAIgATYCACAEC/gBAgN/An4jAEEQayICJAACQAJAIAAtACVBAkYNACACIABBCGoQqRwgAikDACEFIAEoAhghAyABIAIoAgg2AhggASkDECEGIAEgBTcDECAAKAIgIAEQsAsCQCABKQMQIgVQDQAgBUIDg0IAUg0AIAWnIgAgACgCACIEQX9qNgIAIARBAUcNACAAIAAoAhAQjyILIAEgAzYCGCABIAY3AxAMAQsgACgCCCIDRQ0AIAAoAgQhACADQThsIQMDQAJAAkAgACgCAEEJRw0AIABBCGogARCkBAwBCyAAIAEQ5QELIABBOGohACADQUhqIgMNAAsLIAJBEGokAAv5AQIGfwN+AkAgACgCDA0AQQAPCyAAKAIAIgJBcGohAyABKQMAIAEoAggQ4RwiCEIZiEKBgoSIkKDAgAF+IQkgACgCBCIEIAincSEFQQAhBgN/IAIgBWopAAAiCiAJhSIIQn+FIAhC//379+/fv/9+fINCgIGChIiQoMCAf4MhCAJAAkACQANAIAhQIgANASABIAMgCHqnQQN2IAVqIARxIgdBBHRrEKQmDQIgCEJ/fCAIgyEIDAALCyAKIApCAYaDQoCBgoSIkKDAgH+DUA0BC0EAQQAgAiAHQQR0ayAAG0FwaiAAGw8LIAUgBkEIaiIGaiAEcSEFDAALC40CAQp/IwBBEGsiASQAIAAoArgDIAAoArwDIAAoAowGIgJBwI+AARCJIyEDAkAgACgCsAMtAARBf2pB/wFxQQFLDQAgAygCCEUNACADKAIEIQQgAEG0A2ohBSAAQfwDaiEGIAAoAtQDIQcgACgC0AMhCCAAKALIAyEJIAAoAsQDIQpBACEDA0AgAUEIaiAFIAIgAyAAENgZIAEoAggiA0EBcUUNASAKIAkgASgCDCIAQdCPgAEQiiMoAAEgAkcNACAKIAkgAEHgj4ABEIojQQA2AAEgBEUNACAIIAcgBCAGIAogCSAAQfCPgAEQiiMtAABqLQAAakGAkIABEIgjQQA2AgAMAAsLIAFBEGokAAuMAgEEfyMAQSBrIgMkAEEBIQQCQCAALQAEDQAgAC0ABSEFAkACQCAAKAIAIgYtAApBgAFxDQBBASEEIAVBAXFFDQEgBigCAEHal5oBQQIgBigCBCgCDBELAEUNAQwCC0EBIQQCQCAFQQFxDQAgBigCAEGQl5wBQQEgBigCBCgCDBELAA0CC0EBIQQgA0EBOgAPIANB2JiBATYCFCADIAYpAgA3AgAgAyAGKQIINwIYIAMgA0EPajYCCCADIAM2AhAgASADQRBqIAIRBwANASADKAIQQfOYgQFBAiADKAIUKAIMEQsAIQQMAQsgASAGIAIRBwAhBAsgAEEBOgAFIAAgBDoABCADQSBqJAAgAAvmAQEDfwJAIANBCEkNACAAIAAgA0EDdiIDQQV0IgRqIAAgA0E4bCIFaiADELQLIQAgASABIARqIAEgBWogAxC0CyEBIAIgAiAEaiACIAVqIAMQtAshAgsCQAJAIAAoAgAiAyABKAIAIgVGDQAgAyAFSSEEDAELIAAoAgQgASgCBEkhBAsCQAJAIAMgAigCACIGRg0AIAMgBkkhAwwBCyAAKAIEIAIoAgRJIQMLAkAgBCADRw0AAkACQCAFIAZGDQAgBSAGSSEADAELIAEoAgQgAigCBEkhAAsgAiABIAQgAHMbIQALIAAL5gEBA38CQCADQQhJDQAgACAAIANBeHEiBGogACADQQN2IgNBDmwiBWogAxC1CyEAIAEgASAEaiABIAVqIAMQtQshASACIAIgBGogAiAFaiADELULIQILAkACQCAALQAAIgMgAS0AACIFRg0AIAMgBUkhBAwBCyAALQABIAEtAAFJIQQLAkACQCADIAItAAAiBkYNACADIAZJIQMMAQsgAC0AASACLQABSSEDCwJAIAQgA0cNAAJAAkAgBSAGRg0AIAUgBkkhAAwBCyABLQABIAItAAFJIQALIAIgASAEIABzGyEACyAAC48CAQF/IwBB4ABrIgIkACAAKAIAIQAgAkEANgJMIAJCgICAgBA3AkQgAkHcvZgBNgJUIAJCoICAgA43AlggAiACQcQAajYCUAJAIAAgAkHQAGoQmgZFDQBB8KmcAUE3IAJBIGpB9L2YAUH0qpwBEKMSAAsgAkE4akEIaiACQcQAakEIaigCADYCACACIAIpAkQ3AzggAkELNgI0IAJBCzYCLCACQdwANgIkIAJBBDYCDCACQdzDmAE2AgggAkIDNwIUIAIgAEEQajYCMCACIABBDGo2AiggAiACQThqNgIgIAIgAkEgajYCECABKAIAIAEoAgQgAkEIahDIJiEAIAJBOGoQuiogAkHgAGokACAAC+sBAgR/AX4jAEEgayIFJAACQCACIAAoAgAiBiABa00NAEEAIQcCQAJAAkAgASACaiICIAFPDQAMAQsCQCADIARqQX9qQQAgA2txrSACrX4iCUIgiKdFDQAM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AwsgACABQQhqEP4NIAEoAihBgICAgHhGDQIgAUEoaiAAEJseDAILIAAgARD+DQJAIAEoAiBBB0YNACABQSBqIAAQ5AoLIAEoAmggABDkCiABKAJIQYCAgIB4Rg0BIAFByABqIAAQmx4MAQsgACABQQhqEP4NIAEoAiggABCLDQsCQCACQQFHDQAgACAAKAIAQQFqNgIADwsgAEEAOgAECwvjAQEHfyACKAIAIAAoAgQgACgCABCzHyEDIAIoAgAgACgCDCAAKAIIELMfIQQgAigCACAAQQxBCCAEG2oiBSgCACAAIANBAnRqIgYoAgAQsx8hByACKAIAIABBCEEMIAQbaiIEKAIAIAAgA0EBc0ECdGoiACgCABCzHyEDIAIoAgAgBCAAIAUgBxsgAxsiAigCACAGIAUgACADGyAHGyIIKAIAELMfIQkgASAFIAYgBxsoAgA2AgAgASACIAggCRsoAgA2AgQgASAIIAIgCRsoAgA2AgggASAAIAQgAxsoAgA2AgwL3wEBBn8CQCABRQ0AAkAgACgCDCICQQFxRQ0AAkACQCACQQV2IgMgAWoiBEGAgIDAAE8NACAEQQV0IAJBH3FyIQQMAQtBAC0A4OeeARogACgCCCEFIAAoAgQhBiAAKAIAIQcCQEEUEHwiBEUNACAEQQE2AhAgBCADIAZqNgIIIAQgByADazYCBCAEIAUgA2o2AgAgBCACQQJ2QQdxNgIMDAELAAsgACAENgIMCyAAIAAoAgAgAWo2AgAgACAAKAIIIAFrNgIIIABBACAAKAIEIgQgAWsiASABIARLGzYCBAsL6QEBAn8jAEEgayICJAACQAJAIAFB////d0YNACACIAFB////B3E2AhggAkEBNgIUIAJBADYCHCACQQhqIAJBFGpBrN2AARDfGSAAIAIoAggiASACKAIMakF/akEAIAFrcSABENIVDAELQQAhAQJAIABBfGoiACgAACIDQX9zQR92IANBgN2AARCTICIDQfj///8HSw0AQQQhASACQQQ2AhwgAiADQQRqNgIYCyACIAE2AhQgAkEIaiACQRRqQZzdgAEQ3xkgACACKAIIIgEgAigCDGpBf2pBACABa3EgARDSFQsgAkEgaiQAC+wBAQJ/IwBB0ABrIgYkACAGIAU2AiAgBiAENgIcAkAgBSADSw0AIAQgBUEBaksNAEEA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AkHkpYMBNgJIIAJB1KWDATYCQCACQcSlgwE2AjggAkG0pYMBNgIwIAJBpKWDATYCKCACQZSlgwE2AiAgAkGEpYMBNgIYIAJB9KSDATYCECACQeSkgwE2AgggAiAANgI8IAIgAEHkCmo2AjQgAiAAQcgKajYCLCACIABBsApqNgIkIAIgAEGoDWo2AhwgAiAAQaQNajYCFCACIABBoApqNgIMIAIgAEGgDWo2AgQgAiAAQawNajYCTCACIAJBzABqNgJEIAFBzKaDAUEEQYSmgwFBCSACQQRqQQkQmgohACACQdAAaiQAIAAL4QEBA38jAEGwB2siAiQAIAEoAqQNKALEAiIDIAMoAgAiBEEBajYCAAJAIARBf0wNACACIAMQkRggAkHoBGogASgCsAoQ0iIgAkHUBWogASgCyAoQ0yIgAkHYBGogASgC5AogASgCiAsQjhIgAkHYAWogARCCDgJAAkAgASkDsA1CAoUgASkDuA2EUA0AIAJB8AVqIAFBsA1qELgGDAELIAJBAjYCoAcLAkBBwAFFDQAgAkEYaiACQfAFakHAAfwKAAALAkBB8AVFDQAgACACQfAF/AoAAAsgAkGwB2okAA8LAAvPAQEEfyMAQTBrIgMkAEEAIQQCQCACKAIQIgUgAigCFCIGSw0AAkAgAigCAEF/akECSQ0AIANBDGogAEEEaiACKAIIIAIoAgwgBSAGEOQGIAMoAgwiBEEBRw0BIAMoAhAgAygCFE0NASADQQA2AiggA0EBNgIcIANB7JSEATYCGCADQgQ3AiAgA0EYakG8pIMBELUhAAsgBSACKAIMTw0AIAAtAAQgAigCCCAFai0AAEH/AXEiAkYgAC0ABUH/AXEgAkZyIQQLIANBMGokACAEC/ABAgV/AX5BACECIwBB4ABrIgNBMGpBACkDgP2dASIHNwIAIANBIGogBzcCACADQQA2AVogA0EANgIUIANCgICAgIABNwIMIANBADYCQCADQQE6AEQgA0EANgJQIANCgICAgMAANwI4IANCgICAgIABNwJIIANBACkD+PydASIHNwIoIAMgAS8BTDsBWCADIAEoAkg2AlQgAyAHNwIYAkADQCACQdQARg0BIAEgAmoiBCgCACEFIAQgA0EMaiACaiIGKAIANgIAIAYgBTYCACACQQRqIQIMAAsLAkBB1ABFDQAgACAD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KAI4IgVFDQAgAygCNCECIAVBDGwhBQNAIAEgAigCABCtGSACQQxqIQIgBUF0aiIFDQALCyADIAEQ5AogA0HAAGoiAiEDIAIgBEcNAAsLIABBGGohAwJAIAAoAhQiBUUNACAAKAIQIQIgBUEMbCEFA0AgASACKAIAEK0ZIAJBDGohAiAFQXRqIgUNAAsLAkAgAygCAEGAgICAeEYNACADIAEQmx4LC90BAQF/AkAgACgCACICQQlHDQAgAEEIaiABEKcEDwsCQAJAAkACQAJAAkACQAJAIAIOCQABAgMEBQcGBwALAkAgACgCDCICRQ0AIAJByABsIQIDQCACQbh/aiICDQALCyAAKAIcIgBFDQYgACABENwYDwsgAEEIaiABEPgCDwsgACgCHCIARQ0EIAAgARDcGA8LAkACQCAAKAIIDgMAAQUACyABQQA6AAQPCyABQQA6AAQPCyABIAAoAgQQrRkPCyAAKAIQIgBFDQEgACABENwYDwsgASAAKAIEEK0ZCwvMAQIBfwF+IwBBIGsiAyQAIANBEGogAiABKAIEQQAQiAICQAJAIAMtABBBBEYNACADKQMQIgRC/wGDQgRRDQAgACAENwIADAELIANBEGogASACEO8qAkAgAy0AEEEERg0AIAMpAxAiBEL/AYNCBFENACAAIAQ3AgAMAQsgA0EANgIQIANBCGogAiADQRBqQfSHnAFBARCcDQJAIAMtAAhBBEYNACADKQMIIgRC/wGDQgRRDQAgACAENwIADAELIABBBDoAAAsgA0EgaiQAC8oBAgF/AX4jAEEgayIDJAAgA0EQaiABIAIQtRcCQAJAIAMtABBBBEYNACADKQMQIgRC/wGDQgRRDQAgACAENwIADAELIANBADYCECADQQhqIAIgA0EQakHEqZwBQQEQmw0CQCADLQAIQQRGDQAgAykDCCIEQv8Bg0IEUQ0AIAAgBDcCAAwBCyADQRBqIAFBEGogAhC1FwJAIAMtABBBBEYNACADKQMQIgRC/wGDQgRRDQAgACAENwIADAELIABBBDoAAAsgA0EgaiQAC9MBAQN/IwBBwABrIgIkAAJAAkAgASgCiAEiA0GAA3EiBEUNACABIANB/3xxNgKIASACIAEQkiwgASABKAKIASAEcjYCiAEMAQsgAiABEJIsCyACKAIAIQECQAJAIAItABQiA0EC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IAFBf0obDwsgASACQey9gwEQhioAC0EAQQBBtLWDARDAFAALIAEgAkHUtYMBEMAUAAvNAQEFfyAAKAIEIQECQCAAKAIIIgJFDQAgASEDA0ACQAJAAkACQCADKAIADgIBAgALIANBBGooAgAiBBCiByAEQShBCBDSFSADQRhqKAIAIgRFDQIgBCgCACIFEIcCIAVB4ABBCBDSFSAEQQxBBBDSFQwCCyADQQhqEMgNDAELIANBCGoQ8hILIANBOGohAyACQX9qIgINAAsLIAAoAgAgARDNKgJAIAAoAhQiA0UNACADKAIAIgIQhwIgAkHgAEEIENIVIANBDEEEENIVCwvLAQEDfyMAQdAAayIBJAAgACgCACICKAIAIQMgAkEANgIAIAMoAlAhAiADQQA2AlACQCACRQ0AIAFBCGogAhEDAAJAIAAoAgQiAigCACIDKAI4IgBBAkYNACAARQ0AIAMoAkAiAEUNACADKAI8IABBARDSFSACKAIAIQMLAkBByABFDQAgAyABQQhqQcgA/AoAAAsgAUHQAGokAEEBDwsgAUEANgIYIAFBATYCDCABQbCEngE2AgggAUIENwIQIAFBCGpByLecARC1IQALywEBAn8jAEEQayICJAACQAJAAkACQAJAAkACQCAAKAIAQXtqIgNBBCADQQZJGw4GAAECAwQFAAsgAEEIaiABEN8cDAULAkAgACgCCEEDRw0AIAEgACgCDBCIHgsgASAAKAIoEIgeDAQLIABBEGogARDfHCABIAAoAigQiB4MAwsgAEEIaiABEOIfDAILIAAgARDKGAwBCyAAQQhqIAEQ1CMLAkAgAw0AIAIgAEEIahCpHCABQSxqIAIpAwAgAigCCBCSCwsgAkEQaiQAC84BAQF/AkAgACgCACICQQlHDQAgAEEIaiABEJkEDwsCQAJAAkACQAJAAkACQAJAIAIOCQABAgMEBQcGBwALAkAgACgCDCICRQ0AIAJByABsIQIDQCACQbh/aiICDQALCyAAKAIcIgBFDQYgACABEPsXDwsgAEEIaiABEJUHDwsgACgCHCIARQ0EIAAgARD7Fw8LIAAoAggNAyAAKAIoIAEQhwcPCyABIAAoAgQQpwEPCyAAKAIQIgBFDQEgACABEPsXDwsgASAAKAIEEKcBCwvZAQEDfyMAQSBrIgMkAAJAAkAgASgCiAEi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DQAgAUEIaiACEQMAAkAgACgCBCIAKAIAIgMoAgAiAkGCgICAeEgNACACIANBBGooAgAQ/ikgACgCACEDCyADIAEpAgg3AgAgA0EIaiABQQhqQQhqKAIANgIAIAFBIGokAEEBDwsgAUEANgIYIAFBATYCDCABQbCEngE2AgggAUIENwIQIAFBCGpByLecARC1IQALygEBAX8CQAJAAkACQAJAAkAgACgCAEF7aiICQQQgAkEGSRsOBgUAAQIDBAULIAEgAEEIahCTJCABIAAoAigQsygPCyABIAAoAigQsygPCyABIABBCGoQkyQgACgCKEGAgICAeEYNAiAAQShqIAEQih4PCyABIAAQkyQCQCAAKAIgQQdGDQAgAEEgaiABEIsOCyAAKAJoIAEQiw4gACgCSEGAgICAeEYNASAAQcgAaiABEIoeDwsgASAAQQhqEJMkIAAoAiggARCEDQsLygEBAX8jAEEQayICJAACQCAALQAEQQFHDQACQAJAAkACQAJAIAEoAgAOBQECAAMEAQsCQCAALQAFDQAgASsDEJlEAAAAAAAA8H9iDQAgAEEAOgAECyAAIAAoAgBBBWo2AgAMBAsgAiABQQhqEJwVIAAgAigCBCAAKAIAakECajYCAAwDCyACQQhqIAFBCGoQnBUgACACKAIMIAAoAgBqQQJqNgIADAILIAAgASgCBBCtGSAAQQA6AAQMAQsgAEEAOgAECyACQRBqJAALwwEBAX8jAEEwayIDJAAgA0EYakEIaiABQQhqKAIANgIAIAMgASkCADcDGCADIAEoAhQ2AiwgAyABKQIMNwIkAkACQCACKAKIASIBQYCAEHFFDQAgAiABQf//b3E2AogBIANBEGogA0EYaiACEIIaIAMoAhAhASACIAIoAogBQYCAEHI2AogBIAMoAhQhAgwBCyADQQhqIANBGGogAhCCGiADKAIMIQIgAygCCCEBCyAAIAI2AgQgACABNgIAIANBMGokAAu8AQEFfyMAQRBrIgMkAAJAAkAgASgCACIEDQBBACEEIANBDGohBQwBCyADQQQ2AgwgBEECdCEEIAEoAgQhBiADQQhqIQULIAUgBDYCAAJAAkAgAygCDCIERQ0AIAMoAgghBwJAAkAgAg0AIAYgBCAHEMYmQQQhBgwBCyAGIAcgBCACQQJ0IgUQ8wMiBkUNAgsgASAC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KQMANwMACyAAIAM3AwALIAJBEGokAAuvAQEBfyMAQcAAayIBJAAgAUEoaiAAEM8jIAFBDGpBFGogAUEoakEQaikDADcCACABQQxqQQxqIAFBKGpBCGopAwA3AgAgASABKQMoNwIQAkBBCEHAABDEKSIADQAACyAAQRo2AgAgACABKQIMNwIEIABBDGogAUEMakEIaikCADcCACAAQRRqIAFBDGpBEGopAgA3AgAgAEEcaiABQSRqKAIANgIAIAFBwABqJAAgAAvBAQACQCABQQFxRQ0AIAAgAjYCBCAAQQI2AgAgACACKQIANwIIDwsCQAJAAkACQCACKAIAQfr/u39qDgIBAgALIABBBDYCAA8LIAIoAgQiAigCAEGIgMQARg0BIABCBDcCCCAAIAI2AgQgAEEANgIADwsCQCACKAIMIgFFDQAgAEEANgIAIAAgAUF/ajYCDCAAIAIoAggiAjYCBCAAIAJB2ABqNgIIDwsgAEEENgIADwsgAEEBNgIAIAAgAkEEajYCBAvAAQEBfyMAQSBrIgIkAAJAAkACQCABENAsDQAgAkEEaiABENwJAkAgAigCBEGAgICAeEYNACACQRBqQQhqIAJBBGpBCGooAgA2AgAgAiACKQIENwMQIAAgAkEQahDnFgwCC0GAgICAeCACKAIIEPomIAAgARCUCTYCGCAAQQI2AgAgAEEUaiABQRBqKAIANgIAIABBDGogAUEIaikCADcCACAAIAEpAgA3AgQMAgsgABDDFQsgARCfIgsgAkEgaiQAC7gBAgR/AX4gACgCBCEBAkAgACgCCCICRQ0AIAFBJGohAQNAAkAgAUFkaikDACIFQgODQgBSDQAgBaciAyADKAIAIgRBf2o2AgAgBEEBRw0AIAMgAygCEBCPIgsCQCABQXxqKAIAIgNFDQAgAxCHAiADQeAAQQgQ0hULAkAgASgCACIDRQ0AIAMQhwIgA0HgAEEIENIVCyABQTBqIQEgAkF/aiICDQALIAAoAgQhAQsgACgCACABEMgqC7UBAgJ/AX4jAEHAAGsiAiQAIAEpAgQhBBC1JSEDIAIgASgCABBCIANBOGogAkE4aikDADcDACADQTBqIAJBMGopAwA3AwAgA0EoaiACQShqKQMANwMAIANBIGogAkEgaikDADcDACADQRhqIAJBGGopAwA3AwAgA0EQaiAC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IAAgASkCCDcCACAAQQhqIAFBCGpBCGopAgA3AgAgAUEgaiQAQQEPCyABQQA2AhggAUEBNgIMIAFBsISeATYCCCABQgQ3AhAgAUEIakHIt5wBELUhAAvOAQEBfyMAQcAAayICJAAgACgCACEAIAJB4OyaATYCOCACQdDsmgE2AjAgAiAAQSBqNgIsIAJB5OuaATYCKCACIABBKmo2AiQgAkHk65oBNgIgIAIgAEEpajYCHCACQeTrmgE2AhggAiAAQShqNgIUIAJBwOyaATYCECACIABBCGo2AgwgAkHEipsBNgIIIAIgADYCBCACIABBJGo2AjwgAiACQTxqNgI0IAFBwO2aAUELQYjtmgFBByACQQRqQQcQmgohACACQcAAaiQAIAALzgEBAX8jAEHAAGsiAiQAIAAoAgAhACACQdTymgE2AjggAkG88JoBNgIwIAIgAEEYajYCLCACQezqmgE2AiggAiAANgIkIAJB5OuaATYCICACIABBIWo2AhwgAkHk65oBNgIYIAIgAEEgajYCFCACQdTqmgE2AhAgAiAAQQxqNgIMIAJBxIqbATYCCCACIABBEGo2AgQgAiAAQRxqNgI8IAIgAkE8ajYCNCABQe/vmgFBEUHk8poBQQcgAkEEakEHEJoKIQAgAkHAAGokACAAC9IBAQF/IwBBwABrIgIkACAAKAIAIQAgAkG0i5sBNgI4IAJBpIubATYCMCACIABB0QBqNgIsIAJBhI+bATYCKCACIABBIGo2AiQgAkH0jpsBNgIgIAIgAEHAAGo2AhwgAkHUipsBNgIYIAIgADYCFCACQeSOmwE2AhAgAiAAQcwAajYCDCACQcSKmwE2AgggAiAAQThqNgIEIAIgAEHQAGo2AjwgAiACQTxqNgI0IAFBnI2bAUELQaCPmwFBByACQQRqQQcQmgohACACQcAAaiQAIAALvAEBAn8gAUHAAGogABDwFgJAIAEoAoQBIgJFDQAgASgCgAEhAyACQdgAbCECA0ACQAJAAkAgAygCAEF8ag4CAgABCyAAIANBBGooAgAQiB4MAQsgACADEMwHCyADQdgAaiEDIAJBqH9qIgINAAsLAkAgASgCmAEiAkUNACABKAKUASEDIAJBKGwhAgNAIAMgABC8CSADQShqIQMgAkFYaiICDQALCwJAIAEtADxBBkYNACABQRBqIAAQ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IgVqIAAgA0EcbCIGaiADIAQQuA4hACABIAEgBWogASAGaiADIAQQuA4hASACIAIgBWogAiAGaiADIAQQuA4hAgsCQCAEKAIAKAIAIAAoAgAgASgCABCzHyIDIAQoAgAoAgAgACgCACACKAIAELMfRw0AIAIgASADIAQoAgAoAgAgASgCACACKAIAELMfcxshAAsgAAu+AQEFfyMAQRBrIgMkACACLQAMIQQgAS0ADCEFAkACQAJAIAEoAggiBkUNACACKAIIIgcNAQsgA0EIakEAKAKUoJwBNgIAIANBACkCjKCcATcDAAwBCyACKAIEIQIgASgCBCEBAkAgB0EBRw0AIAMgASAGIAIoAgAQ4RkMAQsCQCAGQQFHDQAgAyACIAcgASgCABDhGQwBCyADIAEgBiACIAcQ6RELIAAgBSAEEJAaQf8BcSADENoWIANBEGokAAvIAQECfyMAQRBrIgIkAAJAAkACQAJAAkACQCABKAIADgQBAAIDAQsgAEEENgIADAQLIABBBDYCAAwDCyABKAIMIgNFDQEgAiABKAIIIgEgA0HkgIgBEO4hIAAgAikDADcCCCAAIAE2AgQgAEECNgIADAILAkAgASgCDCIDRQ0AIAJBCGogASgCCCIBIANB9ICIARDuISAAIAIpAwg3AgggACABNgIEIABBAzYCAAwCCyAAQQQ2AgAMAQsgAEEENgIACyACQRBqJAALrwEBBX8gACgCBCEBIAAoAgAhAiAAQoSAgIDAADcCAAJAIAEgAkYNACABIAJrQQR2IQEDQCABRQ0BIAIoAgAgAkEEaigCABCtKiABQX9qIQEgAkEQaiECDAALCwJAIAAoAhAiAkUNAAJAIAAoAgwiAyAAKAIIIgEoAggiAEYNACACQQR0IgRFDQAgASgCBCIFIABBBHRqIAUgA0EEdGogBPwKAAALIAEgAiAAajYCCAsLqAEBAX8jAEEgayIDJAACQCABQf8BcUUNACADQRBqQgFCACABQX9qIgFB/wBxELUVIAAgAUGAAXFBA3ZqIgEgASkDACADKQMQhDcDACABQQhqIgEgASkDACADKQMYhDcDAAsgA0IBQgAgAkH/AHEQtRUgACACQYABcUEDdmoiAiACKQMAIAMpAwCENwMAIAJBCGoiAiACKQMAIAMpAwiENwMAIANBIGokAAvGAQEDfyAAEKkE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CyAAIAQtAAAgAy0AACACEOMYC7oBAQJ/IwBBIGsiAyQAIANBEGpBDGogAUEMaigCADYCACADIAEoAgA2AhAgAyABKQIENwIUAkACQCACKAKIASIBQYCcgIACcSIERQ0AIAIgAUH/4///fXE2AogBIANBCGogA0EQaiACEOMLIAMoAgghASACIAIoAogBIARyNgKIASADKAIMIQIMAQsgAyADQRBqIAIQ4wsgAygCBCECIAMoAgAhAQsgACACNgIEIAAgATYCACADQSBqJAALzQEBAX8jAEHAAGsiAiQAIAJBsIOEATYCOCACQZTugwE2AjAgAkHQi4QBNgIoIAJBwIuEATYCICACQbDpgwE2AhggAkGE7oMBNgIQIAJB9O2DATYCCCACIAA2AgQgAiAAQeAEajYCLCACIABB4AJqNgIkIAIgAEHgAGo2AhwgAiAAQYQFajYCFCACIABBgAVqNgIMIAIgAEGIBWo2AjwgAiACQTxqNgI0IAFB1IyEAUEDQZyMhAFBByACQQRqQQcQmgohACACQcAAaiQAIAALwAECAX8BfiMAQYACayIEJAAgBEEQaiADEPsOIARB7ABqIAEgBEEQahDvBiAEQQhqIAFBIGpB1L+EARC4ISAEIAI6AMQBIARBiYDEADYCaCAEKAIMIQMgBCgCCCAEQegAakHkv4QBENccIAMgAygCAEEBajYCACAAQQA2AgggAEKAgICAwAA3AgAgAEEgaiABQdgAaigCACIDNgIAIAAgASkCUCIFNwIYIAAgBTcCDCAAQRRqIAM2AgAgBEGAAmokAAuiAQECfwJAAkAgAEEASA0AIAAhAgwBCyABQS06AABBACAAayECIAFBAWohAQsCQCACQeMASg0AAkAgAkEJSg0AIAEgAkEwajoAACAAQR92QQFqDwsgASACQQF0QeT8mAFqLwAAOwAAIABBH3ZBAnIPCyABIAJB5ABuIgNBMGo6AAAgASACIANB5ABsa0EBdEHk/JgBai8AADsAASAAQR92QQNqC7UBAQN/IwBBIGsiASQAIAAoAgAiAigCACEDIAJBADYCACADKAIUIQIgA0EANgIUAkAgAkUNACABQQhqIAIRAwACQCAAKAIEIgAoAgAiAygCAEUNACADEL4KIAAoAgAhAwsgAyABKQIINwIAIANBCGogAUEIakEIaikCADcCACAB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ACggACABEIULAkAgAEEwaigCACIDRQ0AIAFBADoAeSABQQA6ACggBSADEJAeIAMgARCGAgsgASAHOgAoIAEgBjoAeSAAQThqIgAgBEcNAAsLIAEgAjoAeguyAQECfyABQcAAahDfJQJAIAEoAoQBIgJFDQAgASgCgAEhAyACQdgAbCECA0ACQAJAAkAgAygCAEF8ag4CAgABCyAAQQA6AAQMAQsgACADEJ4HCyADQdgAaiEDIAJBqH9qIgINAAsLAkAgASgCmAEiAkUNACABKAKUASEDIAJBKGwhAgNAIAMgABDpCSADQShqIQMgAkFYaiICDQALCwJAIAEtADxBBkYNACABQRBqEN8lCwu2AQEEfyAAQcAAaiABKAIUIgIQsx0gAEGQAWohAyAAKAKEAUHYAGwhBCAAKAKAASEFAkADQCAERQ0BAkACQAJAAkACQCAFKAIADgYEAQIDBAAECyAFQQRqIAEQliwMAwsgBUEEaiABEJklDAILIAVBBGogARC0LAwBCyAFQQRqIAEQuRMLIAVB2ABqIQUgBEGof2ohBAwACwsgAyABELkTAkAgAC0APEEGRg0AIABBEGogAhCzHQsLswEBA38CQCAAKAIcIgMgACgCICIEIAEQoRIiBUUNACADIAQgBUF/akHQmZwBEKkjIQUgAyAEIAJBf2oQoRIiAiAEQX9qRg0AIAMgBCACQQFqQeCZnAEQqSMiBC0ACUEBRw0AAkACQCAELQAIIgRBEEsNAEEBIAR0QYDABXENAQsCQCAEDgUBAgICAQALIARBxQBHDQELAkAgBS0ACEEGRw0AIAUoAgAhAQsgACABQTsQ5hwLC7YBAgR/AX4jAEEQayIBJABBACECIAFBCGpBACgClKCcATYCACABQQApAoygnAE3AwBCgICE/qbe4REhBUEEIQNBACEEAkADQCAEQQJGDQECQCAEIAEoAgBHDQAgAUGEoZwBELMaIAEoAgQhAwsgAyACaiAFpzYCACABIARBAWoiBDYCCCACQQRqIQIgBUIgiCEFDAALCyAAIAEpAwA3AgAgAEEIaiABQQhqKAIANgIAIAFBEGokAAuoAQICfwF+AkACQAJAIAIgA2pBf2pBACACa3GtIAGtfiIGQiCIpw0AIAanIgRBgICAgHggAmtNDQELIABBADYCBEEBIQMMAQsCQCAEDQAgACACNgIIQQAhAyAAQQA2AgQMAQtBACEDQQAtAODnngEaAkAgBCACEOIkIgVFDQAgACAFNgIIIAAgATYCBAwBCyAAIAQ2AgggACACNgIEQQEhAwsgACADNgIAC6gBAgF/AX5BfyACIANqIgMgAyACSRsiA0H/////ByACrUIDfiIFp0EBdiAFQiCIpxsiBCADIARLGyIEQRAgBEEQSxshAwJAAkAgBEH+//8HSw0AQQAtAODnngEaIAMQfCIEDQEACyADELAQIQQLAkAgAkUNACAEIAEgAvwKAAALIAAgAjYCBCAAIAQ2AgAgACADQf///wcgA0H///8HSRtBgICAcHI2AggLogEBBH8CQCABKAIEIgIgASgCACIDa0ECdiIEIAAoAgAgACgCCCIFa00NACAAIAUgBEEEQQwQwRsgACgCCCEFCwJAIAMgAkYNACABKAIIIQQgACgCBCAFQQxsaiEBA0AgAUEIaiAEKAIANgIAIAFBADYCACABQQRqIAJBfGoiAigCADYCACABQQxqIQEgBUEBaiEFIAIgA0cNAAsLIAAgBTYCCAugAQECfwJAAkAgAEF3aiIBQRhJDQBBACEBIABBgAFJDQECQAJAIABBCHYiAkUNAAJAIAJBMEYNACACQSBGDQIgAkEWRw0EIABBgC1GIQEMBAsgAEGA4ABGIQEMAwsgAEH/AXFB8LScAWotAAAhAQwCCyAAQf8BcUHwtJwBai0AAEECcUEBdiEBDAELQQBBn4CABCABdkEBcWshAQsgAUEBcQu7AQECfwJAAkACQAJAAkAgASgCCA4CAQIACwJAQSRFDQAgAEEEaiABQST8CgAACyAAQYeAxAA2AgAPCyAAQYCAxAA2AgAgACABKQIMNwIEIABBFGogAUEcaikCADcCACAAQQxqIAFBFGopAgA3AgAMAQsgAUEANgIIIAEoAgQiAigCACIDQYiAxABGDQEgACADNgIAQdQARQ0AIABBBGogAkEEakHUAPwKAAALIAEQnSgPC0G4+ocBEPgpAAufAQEEf0EAIQUCQAJAA0ACQCACQQFLDQAgAyAEIAEgBUEEdGoiAigCACACQQRqKAIAELYqQf8BcUUNAkEAIQIMAwsgAkEBdiIGIAVqIQcgBSAHIAMgBCABIAdBBHRqIggoAgAgCEEEaigCABC2KkH/AXFBAUYbIQUgAiAGayECDAALCyACKAIMIQUgAigCCCECCyAAIAU2AgQgACACNgIAC6wBAgJ/AX4jAEEQayIDJAACQAJAAkACQCABKAIIIgQgASgCBE8NACABKAIAIARqLQAAIAJB/wFxRg0BCyAAQgA3AwgMAQtBASECIAEgBEEBajYCCCADIAEQ+gcCQCADLQAADQACQCADKQMIIgVCf1ENACAAIAVCAXw3AwgMAgsgAEEAOgABQQEhAgwCCyAAIAMtAAE6AAEMAQtBACECCyAAIAI6AAAgA0EQaiQAC6gBAQV/IwBBEGsiASQAAkACQCAAKAIMIgJFDQAgACgCCCEDIAFBCGogAigCACIEIAIoAgQgACkDABDoGSABKAIIIQAgAS0ADCEFIAIgAigCDEEBajYCDCACIAIoAgggBUEBcWs2AgggBCAAQQR0ayICQXxqQQA2AgAgAkF0akKAgICAgAE3AgAgAkFwaiADNgIADAELIAAoAgAhAgsgAUEQaiQAIAJBdGoLpAEBBX8gACgCBCEBIAAoAgAhAiAAQoiAgICAATcCACABIAJrQShuIQMCQCABIAJGDQADQCADRQ0BIANBf2ohAyACEIwkIAJBKGohAgwACwsCQCAAKAIQIgJFDQACQCAAKAIMIgEgACgCCCIDKAIIIgBGDQAgAkEobCIERQ0AIAMoAgQiBSAAQShsaiAFIAFBKGxqIAT8CgAACyADIAIgAGo2AggLC7gBAQF/IAAoAgQiASAAKAIIEMQgIAAoAgAgARDDKiAAKAIQIgEgACgCFBDkIiAAKAIMIAEQxSoCQCAAKAIwRQ0AIABBMGoQ3wELAkAgACgCNCIBRQ0AIAEQrw8gASgCACABQQRqKAIAEMgqIAFBFEEEENIVCwJAIAAoAjgiAUUNACABEMYdIAEoAgAgAUEEaigCABDGKiABQRRBBBDSFQsgACgCHCIBIAAoAiAQ0w8gACgCGCABEMcqC7gBAQF/IAAoAgQiASAAKAIIEMQgIAAoAgAgARDDKiAAKAIQIgEgACgCFBDkIiAAKAIMIAEQxSoCQCAAKAIwRQ0AIABBMGoQ4AELAkAgACgCNCIBRQ0AIAEQrw8gASgCACABQQRqKAIAEMgqIAFBFEEEENIVCwJAIAAoAjgiAUUNACABEMYdIAEoAgAgAUEEaigCABDGKiABQRRBBBDSFQsgACgCHCIBIAAoAiAQ0w8gACgCGCABEMcqC7IBAQJ/IAAoAgAiAkHAAGogARC2CgJAIAIoApgBIgBFDQAgAEEobCEDIAIoApQBQQRqIQADQAJAAkACQAJAAkAgAEF8aigCAA4FBAABAgMECyAAKAIAQQFHDQMgASAAQQRqKAIAEMEkDAMLIAEgACgCABDBJAwCCyAAIAEQgg8MAQsgACABEJYSCyAAQShqIQAgA0FYaiIDDQALCwJAIAItADxBBkYNACABIAJBEGoQ6AkLC7gBAQF/IAAoAgQiASAAKAIIEMQgIAAoAgAgARDDKiAAKAIQIgEgACgCFBDkIiAAKAIMIAEQxSoCQCAAKAIwRQ0AIABBMGoQ4QELAkAgACgCNCIBRQ0AIAEQrw8gASgCACABQQRqKAIAEMgqIAFBFEEEENIVCwJAIAAoAjgiAUUNACABEMYdIAEoAgAgAUEEaigCABDGKiABQRRBBBDSFQsgACgCHCIBIAAoAiAQ0w8gACgCGCABEMcqC7IBAQJ/IAAoAgAiAkHAAGogARCaCwJAIAIoApgBIgBFDQAgAEEobCEDIAIoApQBQQRqIQADQAJAAkACQAJAAkAgAEF8aigCAA4FBAABAgMECyAAKAIAQQFHDQMgASAAQQRqKAIAEKYBDAMLIAEgACgCABCmAQwCCyAAIAEQhA8MAQsgACABEJsSCyAAQShqIQAgA0FYaiIDDQALCwJAIAItADxBBkYNACABIAJBEGoQ4QwLC7gBAQF/IAAoAgQiASAAKAIIEMQgIAAoAgAgARDDKiAAKAIQIgEgACgCFBDkIiAAKAIMIAEQxSoCQCAAKAIwRQ0AIABBMGoQ1AELAkAgACgCNCIBRQ0AIAEQrw8gASgCACABQQRqKAIAEMgqIAFBFEEEENIVCwJAIAAoAjgiAUUNACABEMYdIAEoAgAgAUEEaigCABDGKiABQRRBBBDSFQsgACgCHCIBIAAoAiAQ0w8gACgCGCABEMcqC7gBAQF/IAAoAgQiASAAKAIIEMQgIAAoAgAgARDDKiAAKAIQIgEgACgCFBDkIiAAKAIMIAEQxSoCQCAAKAIwRQ0AIABBMGoQ1QELAkAgACgCNCIBRQ0AIAEQrw8gASgCACABQQRqKAIAEMgqIAFBFEEEENIVCwJAIAAoAjgiAUUNACABEMYdIAEoAgAgAUEEaigCABDGKiABQRRBBBDSFQsgACgCHCIBIAAoAiAQ0w8gACgCGCABEMcqC7gBAQF/IAAoAgQiASAAKAIIEMQgIAAoAgAgARDDKiAAKAIQIgEgACgCFBDkIiAAKAIMIAEQxSoCQCAAKAIwRQ0AIABBMGoQ1gELAkAgACgCNCIBRQ0AIAEQrw8gASgCACABQQRqKAIAEMgqIAFBFEEEENIVCwJAIAAoAjgiAUUNACABEMYdIAEoAgAgAUEEaigCABDGKiABQRRBBBDSFQsgACgCHCIBIAAoAiAQ0w8gACgCGCABEMcqC6cBAgF/AX4jAEEgayICJAAgASkDCCEDIAFBCTYCCCACQQhqQRBqIAFBGGopAwA3AwAgAkEQaiABQRBqKQMANwMAIAIgAzcDCAJAAkAgA6ciAUEJRg0AIAFBfmpBBksNAQsgAkEIahDZDkGEpJwBQShB8KacARDHHAALIAAgAikDCDcDACAAQQhqIAJBCGpBCGopAwA3AwAgACACKQMYNwMQIAJBIGokAAuxAQIDfwJ+IwBBIGsiAyQAIAEoAtABIQQgA0EIaiABEIgPIAMpAxghBgJAAkACQCADKAIIQQFxDQAgAykDECEHDAELIAMgAygCDCIFNgIIAkAgAg0AIABBAjoAGCAAIAU2AgAgBhCeHwwCCyADQQhqEOwlQgAhBwsgARCUCyAAQQA6ABggACAHNwMQIAAgBEEBajYCCCAAIAY3AwAgACABKALMAUF+ajYCDAsgA0EgaiQAC7EBAQJ/IwBBIGsiAyQAAkACQCABKAIcLQAADQAgA0EYaiACIAEQ1BIgAygCHCECIAMoAhghAQwBCwJAIAIoAogBIgRBgAJxDQAgAiAEQYACcjYCiAEgA0EIaiABIAIQ7QIgAygCCCEBIAIgAigCiAFB/31xNgKIASADKAIMIQIMAQsgA0EQaiABIAIQ7QIgAygCFCECIAMoAhAhAQsgACABNgIAIAAgAjYCBCADQSBqJAALsQEBAn8jAEEgayIDJAACQAJAIAEoAhwtAAANACADQRhqIAIgARDWEiADKAIcIQIgAygCGCEBDAELAkAgAigCiAEiBEGAAnENACACIARBgAJyNgKIASADQQhqIAEgAhDuAiADKAIIIQEgAiACKAKIAUH/fXE2AogBIAMoAgwhAgwBCyADQRBqIAEgAhDuAiADKAIUIQIgAygCECEBCyAAIAE2AgAgACACNgIEIANBIGokAAuxAQECfyMAQSBrIgMkAAJAAkAgASgCHC0AAA0AIANBGGogAiABENYSIAMoAhwhAiADKAIYIQEMAQsCQCACKAKIASIEQYACcQ0AIAIgBEGAAnI2AogBIANBCGogASACEPECIAMoAgghASACIAIoAogBQf99cTYCiAEgAygCDCECDAELIANBEGogASACEPECIAMoAhQhAiADKAIQIQELIAAgATYCACAAIAI2AgQgA0EgaiQAC7EBAQJ/IwBBIGsiAyQAAkACQCABKAIYLQAADQAgA0EYaiACIAEQ1RIgAygCHCECIAMoAhghAQwBCwJAIAIoAogBIgRBgAJxDQAgAiAEQYACcjYCiAEgA0EIaiABIAIQ9QIgAygCCCEBIAIgAigCiAFB/31xNgKIASADKAIMIQIMAQsgA0EQaiABIAIQ9QIgAygCFCECIAMoAhAhAQsgACABNgIAIAAgAjYCBCADQSBqJAALsQEBAn8jAEEgayIDJAACQAJAIAEoAhwtAAANACADQRhqIAIgARDUEiADKAIcIQIgAygCGCEBDAELAkAgAigCiAEiBEGAAnENACACIARBgAJyNgKIASADQQhqIAEgAhDwAiADKAIIIQEgAiACKAKIAUH/fXE2AogBIAMoAgwhAgwBCyADQRBqIAEgAhDwAiADKAIUIQIgAygCECEBCyAAIAE2AgAgACACNgIEIANBIGokAAu7AQECfyMAQRBrIgIkAAJAAkACQAJAAkACQAJAIAEoAgAOBwACAQIDBAUACyACIAFBCGoQnBggAigCBCEDIAIoAgAhAQwFCyABKAIMIQMgASgCCCEBDAQLIAEoAhQhAyABKAIQIQEMAwsgASgCECEDIAEoAgwhAQwCCyABKAIIIQMgASgCBCEBDAELIAJBCGogASgCBBDEAyACKAIMIQMgAigCCCEBCyAAIAE2AgAgACADNgIEIAJBEGokAAuxAQECfyMAQSBrIgMkAAJAAkAgASgCGC0AAA0AIANBGGogAiABENUSIAMoAhwhAiADKAIYIQEMAQsCQCACKAKIASIEQYACcQ0AIAIgBEGAAnI2AogBIANBCGogASACEPYCIAMoAgghASACIAIoAogBQf99cTYCiAEgAygCDCECDAELIANBEGogASACEPYCIAMoAhQh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BkYNACACQRBqENklCwuwAQECfyAAKAIAIgJBwABqIAEQnwsCQCACKAKYASIARQ0AIABBKGwhAyACKAKUAUEEaiEAA0ACQAJAAkACQAJAIABBfGooAgAOBQQAAQIDBAsgACgCAEEBRw0DIABBBGooAgAgARC6AwwDCyAAKAIAIAEQugMMAgsgACABEKAPDAELIAAgARCVEgsgAEEoaiEAIANBWGoiAw0ACwsCQCACLQA8QQZGDQAgAkEQahDXGAsLsAEBAn8gACgCACICQcAAaiABEKALAkAgAigCmAEiAEUNACAAQShsIQMgAigClAFBBGohAANAAkACQAJAAkACQCAAQXxqKAIADgUEAAECAwQLIAAoAgBBAUcNAyABIABBBGooAgAQmwMMAwsgASAAKAIAEJsDDAILIAAgARChDwwBCyAAIAEQlxILIABBKGohACADQVhqIgMNAAsLAkAgAi0APEEGRg0AIAJBEGoQ2SULC7ABAQJ/IAAoAgAiAkHAAGogARChCwJAIAIoApgBIgBFDQAgAEEobCEDIAIoApQBQQRqIQADQAJAAkACQAJAAkAgAEF8aigCAA4FBAABAgMECyAAKAIAQQFHDQMgASAAQQRqKAIAENEBDAMLIAEgACgCABDRAQwCCyAAIAEQog8MAQsgACABEJgSCyAAQShqIQAgA0FYaiIDDQALCwJAIAItADxBBkYNACACQRBqENklCwuwAQECfyAAKAIAIgJBwABqIAEQ/goCQCACKAKYASIARQ0AIABBKGwhAyACKAKUAUEEaiEAA0ACQAJAAkACQAJAIABBfGooAgAOBQQAAQIDBAsgACgCAEEBRw0DIAEgAEEEaigCABDkAQwDCyABIAAoAgAQ5AEMAgsgACABEKMPDAELIAAgARCZEgsgAEEoaiEAIANBWGoiAw0ACwsCQCACLQA8QQZGDQAgAkEQahDbGAsLsAEBAn8gACgCACICQcAAaiABEMEKAkAgAigCmAEiAEUNACAAQShsIQMgAigClAFBBGohAANAAkACQAJAAkACQCAAQXxqKAIADgUEAAECAwQLIAAoAgBBAUcNAyAAQQRqKAIAIAEQowIMAwsgACgCACABEKMCDAILIAAgARCkDwwBCyAAIAEQmhILIABBKGohACADQVhqIgMNAAsLAkAgAi0APEEGRg0AIAJBEGoQ2SULC7ABAQJ/IAAoAgAiAkHAAGogARCiCwJAIAIoApgBIgBFDQAgAEEobCEDIAIoApQBQQRqIQADQAJAAkACQAJAAkAgAEF8aigCAA4FBAABAgMECyAAKAIAQQFHDQMgASAAQQRqKAIAEKcBDAMLIAEgACgCABCnAQwCCyAAIAEQpQ8MAQsgACABEJwSCyAAQShqIQAgA0FYaiIDDQALCwJAIAItADxBBkYNACACQRBqENklCwueAQEDfyMAQSBrIgIkAAJAAkAgASgCBCIDIAEoAgAiBCgCFE8NACABIANBAWo2AgQgAkEIakEEciAEKAIQIANBBHRqIgFBBGooAgAgAUEIaigCABCZEyAAQQhqIAJBCGpBCGopAwA3AwAgAEEQaiACQQhqQRBqKQMANwMAIAJBAzoACCAAIAIpAwg3AwAMAQsgAEEGOgAACyACQSBqJAALtgEBAn8jAEEwayICJAACQAJAAkAgAS0A2AFB2wBGDQBBgICAgHghAwwBCyABEJQLIAJBGGogAUEAEIQIIAIoAhwhAQJAIAIoAhgiA0GAgICAeEYNACACQRBqIAJBKGopAgA3AwAgAiACKQIgNwMIDAELIABBgYCAgHg2AgAgACABNgIEDAELIAAgATYCBCAAIAM2AgAgACACKQMINwIIIABBEGogAkEQaikDADcCAAsgAkEwaiQAC50BAQF/IwBBIGsiASQAIAFBBGpBFGogAEEQaikCADcCACABQQRqQQxqIABBCGopAgA3AgAgASAAKQIANwIIAkBBCEHAABCpKSIADQAACyAAQRo2AgAgACABKQIENwIEIABBDGogAUEEakEIaikCADcCACAAQRRqIAFBBGpBEGopAgA3AgAgAEEcaiABQRxqKAIANgIAIAFBIGokACAAC6ABAQN/IwBBEGsiAiQAIAAoAgAiA0EEaigCACEAIANBCGooAgAhAyABKAIAQcWpnAFBASABKAIEKAIMEQsAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQgA0EDdCEBAkADQCABRQ0BIAIgADYCDCACQQRqIAJBDGpBOxCzCxogAUF4aiEBIABBCGohAAwACwsgAkEEahDzICEBIAJBEGokACABC6kBAQR/IwBBEGsiASQAQYCAxAAhAgJAIAAoAgAoAlAiAyAAKAIIIgRGDQAgACgCBCECAkAC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nAEQ4hggAigCCCEFIAIoAgwhAwJAIAFFDQAgAyAEIAH8CgAACyAAIAE2AgggACADNgIEIAAgBTYCAAsgAkEQaiQAC6wBAQR/IwBBEGsiAiQAIAEoAgwhAwJAAkACQAJAAkAgASgCBA4CAAECCyADDQFBASEEQQAhAQwCCyADDQAgASgCACIDKAIEIQEgAygCACEEDAELIAAgARDgCQwBCyACQQhqIAFBAUEBQeC0nAEQ3xggAigCCCEFIAIoAgwhAwJAIAFFDQAgAyAEIAH8CgAACyAAIAE2AgggACADNgIEIAAgBTYCAAsgAkEQaiQAC6MBAgJ/AX4jAEEQayIEJAACQAJAAkAgA0UNAAJAIAEtADxBAUcNACAEQQhqIAEQqhYCQCAELQAIQQRGDQAgBCkDCCIGQv8Bg0IEUg0DCyABQQA6ADwgASgCACEFIAFBADYCACAFQQFHDQAgASABKAIEEMQFCyABKAIoIAIgAxCDCSABIAIgAxDXBwsgAEEEOgAADAELIAAgBjcCAAsgBEEQaiQAC58BAQF/IwBBIGsiAiQAAkACQAJAIAEtABRBAkYNACACIAAgASABKAIYELYIIAItABRBA0cNASABLQAUQQJGDQAgACgCFCABEOUIGgsgASgCGCAAEPgGDAELIAEQuSYgAUEYaiACQRhqKQMANwMAIAFBEGogAkEQaikDADcDACABQQhqIAJBCGopAwA3AwAgASACKQMANwMACyACQSBqJAALowECAn8BfiMAQRBrIgQkAAJAAkACQCADRQ0AAkAgAS0APEEBRw0AIARBCGogARCqFgJAIAQtAAhBBEYNACAEKQMIIgZC/wGDQgRSDQMLIAFBADoAPCABKAIAIQUgAUEANgIAIAVBAUcNACABIAEoAgQQxQULIAEoAiggAiADEIMJIAEgAiADENcHCyAAQQQ6AAAMAQsgACAGNwIACyAEQRBqJAALrAEBBH8jAEEQayICJAAgASgCDCEDAkACQAJAAkACQCABKAIEDgIAAQILIAMNAUEBIQRBACEBDAILIAMNACABKAIAIgMoAgQhASADKAIAIQQMAQsgACABEOAJDAELIAJBCGogAUEBQQFB4LScARDpGCACKAIIIQUgAigCDCEDAkAgAUUNACADIAQgAfwKAAALIAAgATYCCCAAIAM2AgQgACAFNgIACyACQRBqJAALowECAn8BfiMAQRBrIgQkAAJAAkACQCADRQ0AAkAgAS0APEEBRw0AIARBCGogARCqFgJAIAQtAAhBBEYNACAEKQMIIgZC/wGDQgRSDQMLIAFBADoAPCABKAIAIQUgAUEANgIAIAVBAUcNACABIAEoAgQQxAULIAEoAiggAiADEIMJIAEgAiADEJkKCyAAQQQ6AAAMAQsgACAGNwIACyAEQRBqJAALmwECA38BfiMAQSBrIgIkAEEAIQNBACEEAkADQCABIARGDQEgACkCACEFIABBgYCAgHg2AgAgAkEIakEQaiAAQRBqKQIANwMAIAJBCGpBCGogAEEIaikCADcDACACIAU3AwgCQCAFp0GBgICAeEYNACAEQQFqIQQgAkEIahC/JgwBCwsgASAEayEDIAJBCGoQvyYLIAJBIGokACADC6UBAQR/IwBBEGsiAiQAIAIgASgCFCIDEPIgAkACQCACKAIAQQFHDQAgACACKQMINwMQIABC/v///wc3AwggAEEANgIADAELIAIoAgQhBAJAIAMgAUEMaiIFKAIARw0AIAVBxImAARCuGgsgACAENgIEIABBAzYCACABIANBAWo2AhQgASgCECADQQlsaiIBQgA3AAAgAUEIakEAOgAACyACQRBqJAALsQEBA38jAEEgayIDJAAgA0IAEOcLAkACQCADKAIAQYSAgIB4Rw0AQQAtAODnngEaIAMoAgQhBEEQEHwiBUUNASAFIAI6AA0gBSABOgAMIAUgBDYCCCAFQoGAgIAQNwIAIABBvJmDATYCBCAAIAU2AgAgA0EgaiQADwsgA0EQakEIaiADQQhqKQMANwMAIAMgAykDADcDEEHIkZwBQSsgA0EQakHclIMBQayZgwEQoxILAAuPAQIDfwF+AkACQCABrUIMfiIFQiCIpw0AIAWnIgJBeEsNACACQQdqQXhxIgIgAUEIamoiAyACSQ0AIANB+P///wdLDQBBAC0A4OeeARogAxB8IgNFDQEgAEEANgIMIAAgAUF/aiIENgIEIAAgAyACajYCACAAIAQgAUEDdkEHbCABQQlJGzYCCA8LELsfCwALpAECAn8BfgJAAkACQCABKAIAQQVGDQAgASkCACIFQiCIpyEDAkACQAJAIAWnIgRBfWoiAUECIAFBAkkbDgMAAQIAC0EBIQEgAhCCISECDAML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IAAoAggiAmtNDQAgACACIAFBBEEEEMEbIAAoAgghAgsgACgCBCACQQJ0aiEDAkACQAJAIAFBAkkNACABQX9qIQQDQCADQQA2AgAgA0EEaiEDIARBf2oiBA0ACyACIAFqQX9qIQIMAQsgAUUNAQsgA0EANgIAIAJBAWohAgsgACACNgIIC5YBAQZ/IwBBEGsiAiQAIAEoAgQiA0GAAiADQYACSxshBCABKAIAIQUCQANAAkAgBCADIgZHDQAMAgsgASAGQQFqIgM2AgQgAiAFIAZBA3ZB8P///wFxaiIHKQMAIAcpAwggBkH/AHEQthUgAikDAEIBg1ANAAsgA0F/aiEECyAAIAY6AAEgACAEQYACSToAACACQRBqJAALkQECAX8CfiABIAEoAjhBBGo2AjggASAArSIDIAEoAjwiAEEDdEE4ca2GIAEpAzCEIgQ3AzACQAJAQQggAGsiAkEESw0AIAEgASkDGCAEhTcDGCABEOcNIAEpAzAhBCABIAMgAkEDdK2INwMwIAEgBCABKQMAhTcDACAAQXxqIQAMAQsgAEEEaiEACyABIAA2AjwLlgECBH8BfiMAQSBrIgEkABC7JSECIAAoAhQhAyAAKQIMIQUgAC8BGCEEIAFBBGogABDIBSABQQRqQRhqIgAgBDsBACACIAEpAgQ3AgAgASAFNwIQIAJBCGogAUEEakEIaikCADcCACABIAM2AhggAkEQaiABQQRqQRBqKQIANwIAIAJBGGogACgCADYCACABQSBqJAAgAguZAQIDfwF+AkAgACgCCCIBRQ0AIAAoAgQhAANAIABBCGohAgJAAkAgACgCAA0AIAIpAwAiBEIDg0IAUg0BIASnIgIgAigCACIDQX9qNgIAIANBAUcNASACIAIoAhAQjyIMAQsgAhCIEwsCQCAAQShqKAIAIgJFDQAgAhCRASACQcAAQQgQ0hULIABBMGohACABQX9qIgENAAsLC5MBAQJ/IwBBEGsiAyQAAkACQCABKAIAIgRBAWpBfnEgBEYNACADQQhqIAEQlB8gAygCDCEBIAMoAgghBAwBCyABKAIIIQELAkACQAJAIAFBAksNACABQQJHDQEMAgsgBCwAAkG/f0oNAQsgBCABQQIgASACEI8oAAsgACABQX5qNgIEIAAgBEECajYCACADQRBqJAALowECAX8BfiMAQRBrIgIkAAJAAkACQAJAIAAoAgAiACkDAEJ+fCIDQgIgA0ICVBunDgMAAQIACyACIABBCGo2AgQgAUG+/ZoBQQkgAkEEakHlAxDwCyEADAILIAIgAEEIajYCCCABQcf9mgFBByACQQhqQeYDEPALIQAMAQsgAiAANgIMIAFBzv2aAUEFIAJBDGpB5wMQ8AshAAsgAkEQaiQAIAALmwECAX8BfiMAQRBrIgIkAAJAAkAgAC0AUUUNACAALQBQQQFHDQAgAEEAOgBRDAELIABBADoAUSACIAEQqRwgAikDACEDIAIgAigCCDYCCCACIAM3AwAgACACIAAtAEwgACgCSBCiAiADQgODQgBSDQAgA6ciACAAKAIAIgFBf2o2AgAgAUEBRw0AIAAgACgCEBCPIgsgAkEQaiQAC5YBAQF/QQAtAODnngEaAkBBwAAQfCIBDQAACyABIAApAwA3AwAgAUE4aiAAQThqKQMANwMAIAFBMGogAEEwaikDADcDACABQShqIABBKGopAwA3AwAgAUEgaiAAQSBqKQMANwMAIAFBGGogAEEYaikDADcDACABQRBqIABBEGopAwA3AwAgAUEIaiAAQQhqKQMANwMAIAELmgECA38CfiABKAIMIQIgASgCACIDKQMAIQUCQAJAIAEoAgQiAQ0AQgAhBkEAIQQMAQsgAyABQQR0a0Fwaq1CIIYgAUERbEEZaq2EIQZBCCEECyAAIAY3AiQgACAENgIgIAAgAjYCGCAAIAM2AhAgACADQQhqNgIIIAAgAyABakEBajYCDCAAIAVCf4VCgIGChIiQoMCAf4M3AwAL0wEBAn9BACECQQAhAwJAIAC9Qv///////////wCDQv/////////3/wBVDQAgAJ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjG/wDIQMLAkAgAb1C////////////AINC//////////f/AFUNACABnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMb/ANBH3EhAgsgAyACdLcL0wEBAn9BACECQQAhAwJAIAC9Qv///////////wCDQv/////////3/wBVDQAgAJ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjG/wDIQMLAkAgAb1C////////////AINC//////////f/AFUNACABnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMb/ANBH3EhAgsgAyACdbcL0wEBAn9BACECQQAhAwJAIAC9Qv///////////wCDQv/////////3/wBVDQAgAJ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjG/wDIQMLAkAgAb1C////////////AINC//////////f/AFUNACABnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMb/ANBH3EhAgsgAyACdrgLmQEBAX8jAEEgayIFJAAgBSAEOgAHIAUgAjYCACAFQQhqQQhqIANBCGooAgA2AgAgBSADKQIANwMIIAEoAogBIQMgBSAFNgIYIAUgBUEHajYCFAJAAkAgA0EIcQ0AIAEgA0EIcjYCiAEgACAFQQhqIAEQngEgASABKAKIAUF3cTYCiAEMAQsgACAFQQhqIAEQngELIAVBIGokAAuVAQEDfyMAQRBrIgIkACAAKAIEIQMgACgCCCEAIAEoAgBBxamcAUEBIAEoAgQoAgwRCwAhBCACQQA6AAkgAiAEOgAIIAIgATYCBCAAQQJ0IQECQANAIAFFDQEgAiADNgIMIAJBBGogAkEMakEuELMLGiABQXxqIQEgA0EEaiEDDAALCyACQQRqEPMgIQEgAkEQaiQAIAELlQEBA38jAEEQayICJAAgACgCBCEDIAAoAgghACABKAIAQcWpnAFBASABKAIEKAIMEQsAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQgAEEMbCEBAkADQCABRQ0BIAIgAzYCDCACQQRqIAJBDGpBPRCzCxogAUF0aiEBIANBDGohAwwACwsgAkEEahDzICEBIAJBEGokACABC5UBAQN/IwBBEGsiAiQAIAAoAgQhAyAAKAIIIQAgASgCAEHFqZwBQQEgASgCBCgCDBELACEEIAJBADoACSACIAQ6AAggAiABNgIEIABBAnQhAQJAA0AgAUUNASACIAM2AgwgAkEEaiACQQxqQTwQswsaIAFBfGohASADQQRqIQMMAAsLIAJBBGoQ8yAhASACQRBqJAAgAQuVAQEDfyMAQRBrIgIkACAAKAIEIQMgACgCCCEAIAEoAgBBxamcAUEBIAEoAgQoAgwRCwAhBCACQQA6AAkgAiAEOgAIIAIgATYCBCAAQQxsIQECQANAIAFFDQEgAiADNgIMIAJBBGogAkEMakE/ELMLGiABQXRqIQEgA0EMaiEDDAALCyACQQRqEPMgIQEgAkEQaiQAIAELlQEBBH8jAEGAIGsiAyQAAkACQCABQYCJ+gAgAUGAifoASRsiBCABIAFBAXZrIgUgBCAFSxsiBEGBCEkNACADIAQQ5R0gACABIAMoAgQiBCADKAIIIgVBAnRqIAMoAgAiBiAFayABQcEASSACEN8CIAYgBBDDLAwBCyAAIAEgA0GACCABQcEASSACEN8CCyADQYAgaiQAC5cBAQF/IwBBEGsiAiQAAkACQCABKAIAIgEQgytFDQAgAkEEaiABEKcSIABBCGogAkEEakEIaigCADYCACAAIAIpAgQ3AgAMAQsCQCABEDJFDQAgAkEEaiABEC0iARCnEiAAQQhqIAJBBGpBCGooAgA2AgAgACACKQIENwIAIAEQiCgMAQsgAEGAgICAeDYCAAsgAkEQaiQAC5UBAQN/IwBBIGsiASQAQQAhAgJAIABBf3NBH3YgAEGA3YABEJMgIgNB+P///wdLDQBBBCECIAFBBDYCHCABIANBBGo2AhgLIAEgAjYCFCABQQhqIAFBFGpBnN2AARDfGQJAIAEoAggiACAAIAEoAgxqQX9qQQAgAGtxEIQpIgANAAALIAAgAzYAACABQSBqJAAgAEEEagudAQEBfyMAQSBrIgYkAAJAAkAgAUUNACAGQRRqIAEgAyAEIAUgAigCEBEQAAJAIAYoAhQgBigCHCIBTQ0AIAZBCGogBkEUaiABQQRBBBDxCyAGKAIIIgFBgYCAgHhHDQIgBigCHCEBCyAAIAE2AgQgACAGKAIYNgIAIAZBIGokAA8LQbyDngFBMhCRKwALIAEgBigCDEHgkoIBEMEmAAuXAQECfyMAQRBrIgQkAAJAAkAgAygCBEUNAAJAIAMoAggiBQ0AIARBCGogASACEJEiIAQoAgwhBSAEKAIIIQMMAgsgAygCACAFIAEgAhDzAyEDIAIhBQwBCyAEIAEgAhCRIiAEKAIEIQUgBCgCACEDCyAAIAMgASADGzYCBCAAIANFNgIAIAAgBSACIAMbNgIIIARBEGokAAuqAQEDfyMAQSBrIgIkACACQgAQ5wsCQAJAIAIoAgBBhICAgHhHDQBBAC0A4OeeARogAigCBCEDQRAQfCIERQ0BIAQgAToADCAEIAM2AgggBEKBgICAEDcCACAAQYycgwE2AgQgACAENgIAIAJBIGokAA8LIAJBEGpBCGogAkEIaikDADcDACACIAIpAwA3AxBByJGcAUErIAJBEGpB3JSDAUGsmYMBEKMSCwALlgEBA38jAEEQayICJAAgACgCCCEDIAAoAgQhACABKAIAQcWpnAFBASABKAIEKAIMEQsAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBA3QhAQNAIAIgADYCDCACQQRqIAJBDGpBvgEQswsaIABBCGohACABQXhqIgENAAsLIAJBBGoQ8yAhACACQRBqJAAgAAuWAQEDfyMAQRBrIgIkACAAKAIIIQMgACgCBCEAIAEoAgBBxamcAUEBIAEoAgQoAgwRCwAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0EMbCEBA0AgAiAANgIMIAJBBGogAkEMakHAARCzCxogAEEMaiEAIAFBdGoiAQ0ACwsgAkEEahDzICEAIAJBEGokACAAC5YBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCAEHFqZwBQQEgASgCBCgCDBELACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQQV0IQEDQCACIAA2AgwgAkEEaiACQQxqQcEBELMLGiAAQSBqIQAgAUFgaiIBDQALCyACQQRqEPMgIQAgAkEQaiQAIAALlgEBA38jAEEQayICJAAgACgCCCEDIAAoAgQhACABKAIAQcWpnAFBASABKAIEKAIMEQsAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBAnQhAQNAIAIgADYCDCACQQRqIAJBDGpBjgEQswsaIABBBGohACABQXxqIgENAAsLIAJBBGoQ8yAhACACQRBqJAAgAAuWAQEDfyMAQRBrIgIkACAAKAIEIQMgACgCCCEAIAEoAgBBxamcAUEBIAEoAgQoAgwRCwAhBCACQQA6AAkgAiAEOgAIIAIgATYCBCAAQQN0IQECQANAIAFFDQEgAiADNgIMIAJBBGogAkEMakH6ARCzCxogAUF4aiEBIANBCGohAwwACwsgAkEEahDzICEBIAJBEGokACABC5YBAQN/IwBBEGsiAiQAIAAoAgQhAyAAKAIIIQAgASgCAEHFqZwBQQEgASgCBCgCDBELACEEIAJBADoACSACIAQ6AAggAiABNgIEIABBAXQhAQJAA0AgAUUNASACIAM2AgwgAkEEaiACQQxqQfsBELMLGiABQX5qIQEgA0ECaiEDDAALCyACQQRqEPMgIQEgAkEQaiQAIAELpgEBA38gABCpBAJAAkACQAJAAkACQAJAIAAoAgAOCAYBAgYDBAUABgsgAEEEahCeKAwFCyAAKAIIIgFFDQQgACgCBCABQQEQ0hUMBAsgAEEEahCfIgwDCyAAQQxqEJIpDAILIABBBGohAQJAIAAoAgwiAkUNACAAKAIQIgNFDQAgAiADQQEQ0hULIAEQkikMAQsgAEEEahCeKAsgACgCGEE0QQQQ0hULlgEBA38jAEEQayICJAAgACgCBCEDIAAoAgghACABKAIAQcWpnAFBASABKAIEKAIMEQsAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQgAEEEdCEBAkADQCABRQ0BIAIgAzYCDCACQQRqIAJBDGpBjQIQswsaIAFBcGohASADQRBqIQMMAAsLIAJBBGoQ8yAhASACQRBqJAAgAQuWAQEDfyMAQRBrIgIkACAAKAIEIQMgACgCCCEAIAEoAgBBxamcAUEBIAEoAgQoAgwRCwAhBCACQQA6AAkgAiAEOgAIIAIgATYCBCAAQQN0IQECQANAIAFFDQEgAiADNgIMIAJBBGogAkEMakGPAhCzCxogAUF4aiEBIANBCGohAwwACwsgAkEEahDzICEBIAJBEGokACABC5QBAgJ/AX4CQCAALQAUQQJHDQAgACgCACIAQRhqEL0QAkAgACkDACIDQgODQgBSDQAgA6ciASABKAIAIgJBf2o2AgAgAkEBRw0AIAEgASgCEBCPIgsgAEEwQQgQ0hUPCwJAIAApAwAiA0IDg0IAUg0AIAOnIgAgACgCACIBQX9qNgIAIAFBAUcNACAAIAAoAhAQjyILC50BAQF/IwBBEGsiBiQAIAZBBGogAUEDIAQgBRDaCyAGKAIIIQVBCBChJSIEIAM2AgQgBCACNgIAIAUoAhwgBSgCIBD/KSAFKAIsIgEgBSgCMBDwICAFKAIoIAEQgCogBUIENwIsIAVCATcCJCAFIAQ2AiAgBUEBNgIcIAAgBikCBDcCACAAQQhqIAZBBGpBCGooAgA2AgAgBkEQaiQAC5YBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCAEHFqZwBQQEgASgCBCgCDBELACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQShsIQEDQCACIAA2AgwgAkEEaiACQQxqQdwDELMLGiAAQShqIQAgAUFYaiIBDQALCyACQQRqEPMgIQAgAkEQaiQAIAALlgEBA38jAEEQayICJAAgACgCCCEDIAAoAgQhACABKAIAQcWpnAFBASABKAIEKAIMEQsAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBOGwhAQNAIAIgADYCDCACQQRqIAJBDGpB3gMQswsaIABBOGohACABQUhqIgENAAsLIAJBBGoQ8yAhACACQRBqJAAgAAuXAQEDfyMAQRBrIgIkACAAKAIIIQMgACgCBCEAIAEoAgBBxamcAUEBIAEoAgQoAgwRCwAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0EGdCEBA0AgAiAANgIMIAJBBGogAkEMakHhAxCzCxogAEHAAGohACABQUBqIgENAAsLIAJBBGoQ8yAhACACQRBqJAAgAAuZAQEDfyMAQRBrIgIkACAAKAIIIQMgACgCBCEAIAEoAgBBxamcAUEBIAEoAgQoAgwRCwAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0HQAGwhAQNAIAIgADYCDCACQQRqIAJBDGpB5AMQswsaIABB0ABqIQAgAUGwf2oiAQ0ACwsgAkEEahDzICEAIAJBEGokACAAC5YBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCAEHFqZwBQQEgASgCBCgCDBELACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQShsIQEDQCACIAA2AgwgAkEEaiACQQxqQeMDELMLGiAAQShqIQAgAUFYaiIBDQALCyACQQRqEPMgIQAgAkEQaiQAIAALlgEBA38jAEEQayICJAAgACgCCCEDIAAoAgQhACABKAIAQcWpnAFBASABKAIEKAIMEQsAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBKGwhAQNAIAIgADYCDCACQQRqIAJBDGpB6QMQswsaIABBKGohACABQVhqIgENAAsLIAJBBGoQ8yAhACACQRBqJAAgAAuZAQEDfyMAQRBrIgIkACAAKAIIIQMgACgCBCEAIAEoAgBBxamcAUEBIAEoAgQoAgwRCwAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0HYAGwhAQNAIAIgADYCDCACQQRqIAJBDGpB7QMQswsaIABB2ABqIQAgAUGof2oiAQ0ACwsgAkEEahDzICEAIAJBEGokACAAC5cBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCAEHFqZwBQQEgASgCBCgCDBELACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQQZ0IQEDQCACIAA2AgwgAkEEaiACQQxqQe8DELMLGiAAQcAAaiEAIAFBQGoiAQ0ACwsgAkEEahDzICEAIAJBEGokACAAC5YBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCAEHFqZwBQQEgASgCBCgCDBELACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQShsIQEDQCACIAA2AgwgAkEEaiACQQxqQfEDELMLGiAAQShqIQAgAUFYaiIBDQALCyACQQRqEPMgIQAgAkEQaiQAIAALlgEBA38jAEEQayICJAAgACgCCCEDIAAoAgQhACABKAIAQcWpnAFBASABKAIEKAIMEQsAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBDGwhAQNAIAIgADYCDCACQQRqIAJBDGpB8gMQswsaIABBDGohACABQXRqIgENAAsLIAJBBGoQ8yAhACACQRBqJAAgAAuZAQEDfyMAQRBrIgIkACAAKAIIIQMgACgCBCEAIAEoAgBBxamcAUEBIAEoAgQoAgwRCwAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0HIAGwhAQNAIAIgADYCDCACQQRqIAJBDGpB8wMQswsaIABByABqIQAgAUG4f2oiAQ0ACwsgAkEEahDzICEAIAJBEGokACAAC5kBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCAEHFqZwBQQEgASgCBCgCDBELACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQdgAbCEBA0AgAiAANgIMIAJBBGogAkEMakH3AxCzCxogAEHYAGohACABQah/aiIBDQALCyACQQRqEPMgIQAgAkEQaiQAIAALlAECAn8BfgJAIAAtABRBAkcNACAAKAIAIgBBGGoQyxACQCAAKQMAIgNCA4NCAFINACADpyIBIAEoAgAiAkF/ajYCACACQQFHDQAgASABKAIQEI8iCyAAQTBBCBDSFQ8LAkAgACkDACIDQgODQgBSDQAgA6ciACAAKAIAIgFBf2o2AgAgAUEBRw0AIAAgACgCEBCPIgsLlAECAn8BfgJAIAAtABRBAkcNACAAKAIAIgBBGGoQzBACQCAAKQMAIgNCA4NCAFINACADpyIBIAEoAgAiAkF/ajYCACACQQFHDQAgASABKAIQEI8iCyAAQTBBCBDSFQ8LAkAgACkDACIDQgODQgBSDQAgA6ciACAAKAIAIgFBf2o2AgAgAUEBRw0AIAAgACgCEBCPIgsLogEBAn8jAEEQayICJAACQAJAAkACQCAAKAIAIgAtACxBfWoiA0EBIANB/wFxQQNJG0H/AXEOAwABAgALIAIgADYCBCABQd6znAFBBSACQQRqQfgCEPALIQAMAgsgAiAANgIIIAFB3JSbAUENIAJBCGpBgQMQ8AshAAwBCyACIAA2AgwgAUH1lJsBQREgAkEMakGCAxDwCyEACyACQRBqJAAgAAucAQMCfwF+AXwjAEEgayICJAAgASkDCCEEIAFBCTYCCCACQQhqQRBqIAFBGGopAwA3AwAgAkEQaiABQRBqKQMANwMAIAIgBDcDCAJAAkAgBKciA0EJRg0AIANBBkYNAQsgAkEIahDZDkGEpJwBQShB0KacARDHHAALIAIrAxghBSAAIAIpAxA3AwggACAFOQMAIAEQlAsgAkEgaiQAC5oBAgJ/AX4jAEEgayICJAAgASkDCCEEIAFBCTYCCCACQQhqQRBqIAFBGGopAwA3AwAgAkEQaiABQRBqKQMANwMAIAIgBDcDCAJAAkAgBKciA0EJRg0AIANBB0YNAQsgAkEIahDZDkGEpJwBQShBwKacARDHHAALIAIoAhghAyAAIAIpAxA3AwggACADNgIAIAEQlAsgAkEgaiQAC6EBAgJ/AX4jAEEQayICJAACQAJAAkAgAS0APEEBRw0AIAJBCGogARCqFgJAIAItAAhBBEYNACACKQMIIgRC/wGDQgRSDQILIAFBADoAPCABKAIAIQMgAUEANgIAIANBAUcNACABIAEoAgQQxAULIAEoAihBjqOcAUEBEIMJIAFBjqOcAUEBENcHIABBBDoAAAwBCyAAIAQ3AgALIAJBEGokAAuhAQICfwF+IwBBEGsiAiQAAkACQAJAIAEtADxBAUcNACACQQhqIAEQqhYCQCACLQAIQQRGDQAgAikDCCIEQv8Bg0IEUg0CCyABQQA6ADwgASgCACEDIAFBADYCACADQQFHDQAgASABKAIEEMQFCyABKAIoQY6jnAFBARCDCSABQY6jnAFBARDYByAAQQQ6AAAMAQsgACAENwIACyACQRBqJAALoQECAn8BfiMAQRBrIgIkAAJAAkACQCABLQA8QQFHDQAgAkEIaiABEKoWAkAgAi0ACEEERg0AIAIpAwgiBEL/AYNCBFINAgsgAUEAOgA8IAEoAgAhAyABQQA2AgAgA0EBRw0AIAEgASgCBBDFBQsgASgCKEGOo5wBQQEQgwkgAUGOo5wBQQEQ1wcgAEEEOgAADAELIAAgBDcCAAsgAkEQaiQAC6EBAgJ/AX4jAEEQayICJAACQAJAAkAgAS0APEEBRw0AIAJBCGogARCqFgJAIAItAAhBBEYNACACKQMIIgRC/wGDQgRSDQILIAFBADoAPCABKAIAIQMgAUEANgIAIANBAUcNACABIAEoAgQQxAULIAEoAihBjqOcAUEBEIMJIAFBjqOcAUEBENkHIABBBDoAAAwBCyAAIAQ3AgALIAJBEGokAAuXAQIBfwF+IwBBIGsiAyQAIANBEGogAiABQQAQiAICQAJAIAMtABBBBEYNACADKQMQIgRC/wGDQgRRDQAgACAENwIADAELIANBADYCECADQQhqIAIgA0EQakHUi5wBQQEQmw0CQCADLQAIQQRGDQAgAykDCCIEQv8Bg0IEUQ0AIAAgBDcCAAwBCyAAQQQ6AAALIANBIGokAAudAQECfwJAIAEtABhFDQACQAJAIAEoAhQiAkUNACAAKAIcIAAoAiAgAigCBEF/ahChEiECDAELIAAoAhwgACgCICABKAIQELgTIQILIAAgAhCjJAsgASgCCEEobCEDIAEoAgQhAgJAA0AgA0UNAQJAIAIoAgBBB0YNACACIAAQuRQLIAJBKGohAiADQVhqIQMMAAsLIAEoAhQgABDkIwuhAQICfwF+IwBBEGsiAiQAAkACQAJAIAEtADxBAUcNACACQQhqIAEQqhYCQCACLQAIQQRGDQAgAikDCCIEQv8Bg0IEUg0CCyABQQA6ADwgASgCACEDIAFBADYCACADQQFHDQAgASABKAIEEMQFCyABKAIoQY6jnAFBARCDCSABQY6jnAFBARCjCyAAQQQ6AAAMAQsgACAENwIACyACQRBqJAALoQECAn8BfiMAQRBrIgIkAAJAAkACQCABLQA8QQFHDQAgAkEIaiABEKoWAkAgAi0ACEEERg0AIAIpAwgiBEL/AYNCBFINAgsgAUEAOgA8IAEoAgAhAyABQQA2AgAgA0EBRw0AIAEgASgCBBDEBQsgASgCKEGOo5wBQQEQgwkgAUGOo5wBQQEQmQogAEEEOgAADAELIAAgBDcCAAsgAkEQaiQAC6EBAgJ/AX4jAEEQayICJAACQAJAAkAgAS0APEEBRw0AIAJBCGogARCqFgJAIAItAAhBBEYNACACKQMIIgRC/wGDQgRSDQILIAFBADoAPCABKAIAIQMgAUEANgIAIANBAUcNACABIAEoAgQQxAULIAEoAihBjqOcAUEBEIMJIAFBjqOcAUEBENoHIABBBDoAAAwBCyAAIAQ3AgALIAJBEGokAAuXAQECfyMAQRBrIgMkAAJAAkAgAigCBEUNAAJAIAIoAggiBA0AIANBCGpBBCABEKIiIAMoAgwhBCADKAIIIQIMAgsgAigCACAEQQQgARDzAyECIAEhBAwBCyADQQQgARCiIiADKAIEIQQgAygCACECCyAAIAJBBCACGzYCBCAAIAJFNgIAIAAgBCABIAIbNgIIIANBEGokAAuWAQEDfyMAQRBrIgIkACACQQA2AgxBASEDAkAgAUGAAUkNAEECIQMgAUGAEEkNAEEDQQQgAUGAgARJGyEDCyABIAJBDGoQzw0gAiADQQFBAUHgtJwBEIwYIAIoAgAhBCACKAIEIQECQCADRQ0AIAEgAkEMaiAD/AoAAAsgACADNgIIIAAgATYCBCAAIAQ2AgAgAkEQaiQAC4IBAQN/AkAgA0EISQ0AIAAgACADQQN2IgNBBHQiBGogACADQRxsIgVqIAMQ2xAhACABIAEgBGogASAFaiADENsQIQEgAiACIARqIAIgBWogAxDbECECCyAAIAIgASAAKAIAIgMgASgCACIESSIFIAQgAigCACIGSXMbIAUgAyAGSXMbC48BAQN/IwBBEGsiBCQAIARBBGogAxDoESAEKAIIIQUCQCAEKAIEQQFGDQAgBCgCDCEGAkAgA0UNACAGIAIgA/wKAAALIAAgBTYCCCAAIAM2AgQgACAGNgIAIABBICAFQQp2Z2siA0EHIANBB0kbQQJ0QQFyNgIMIARBEGokAA8LIAUgBCgCDEHgtJwBEMEmAAuWAQECfyAAQTBqENEcIABB0ABqKAIAIQECQCAAQdQAaigCACICRQ0AA0AgASgCAEE0QQQQ0hUgAUEEaiEBIAJBf2oiAg0ACyAAQdAAaigCACEBCyAAKAJMIAFBBEEEELgVIAAoAlhBNEEEENIVAkAgAEF/Rg0AIAAgACgCBCIBQX9qNgIEIAFBAUcNACAAQdwAQQQQ0hULC5oBAQN/AkACQAJAAkAgASgCCCICIAEoAgxGDQAgASACQQhqNgIIIAIoAgQiAyACKAIAIgRJDQIgAyABKAIEIgJLDQMgAyAEayECIAEoAgAgBEEDdGohAwwBCyABKAIQIQMgAUEANgIQIAEoAhQhAgsgACACNgIEIAAgAzYCAA8LIAQgA0GU9YMBEIgqAAsgAyACQZT1gwEQhyoAC58BAQN/IwBBEGsiAiQAAkACQAJAAkACQCABKAIIDgICAQALQSQQrCUhAwJAQSRFDQAgAyABQST8CgAAC0ELIQQMAwsgAkEIaiABEJ4aAkAgAigCCCIEQQxGDQAgAigCDCEDDAILQfz5hwEQ+CkACyACIAFBDGoQ/RxBACEEIAIoAgQhAwsgARCTKAsgACADNgIEIAAgBDYCACACQRBqJAALkQEBA38jAEEwayICJAAgAiABEKgFQQwhASACKAIEIQMCQCACKAIAIgRBC0YNACAAIAIpAwg3AwggAEEoaiACQShqKQMANwMAIABBIGogAkEgaikDADcDACAAQRhqIAJBGGopAwA3AwAgAEEQaiACQRBqKQMANwMAIAQhAQsgACABNgIAIAAgAzYCBCACQTBqJAALoAECBH8BfiMAQRBrIgEkACABQQhBCEEEEN4RIAEoAgQhAgJAAkAgASgCACIDDQAgATUCCCEFDAELIAEpAgghBSACQQlqIgRFDQAgA0H/ASAE/AsACyABQQhqIgQgBTcCACABIAI2AgQgASADNgIAIAFCwcrZi8YNEL4GIAEQjh0QvgYgAEEIaiAEKQIANwIAIAAgASkCADcCACABQRBqJAALpwEAAkAgASACQcjimwFBBRCuI0UNAEHmAA8LAkAgASACQdyanAFBBhCuI0UNAEGUAQ8LAkAgASACQaiNnAFBBhCuI0UNAEHnAA8LAkAgASACQbXvmwFBBhCuI0UNAEGWAQ8LAkAgASACQcOynAFBAxCuI0UNAEGTAQ8LAkAgASACQa/vmwFBBhCuI0UNAEGVAQ8LQZ5/QaR/IAEgAkHq75sBQQkQriMbC6cBAAJAIAEgAkHimpwBQQQQriNFDQBB6AAPCwJAIAEgAkHqjJwBQQUQriNFDQBB6QAPCwJAIAEgAkH1qJwBQQQQriNFDQBB6gAPCwJAIAEgAkHJ7psBQQYQriNFDQBB7AAPCwJAIAEgAkHVjJwBQQMQriNFDQBB6wAPCwJAIAEgAkGQ/psBQQQQriNFDQBBlwEPC0Ggf0GkfyABIAJB5PibAUEGEK4jGwvQAQECf0EAIQJBACEDAkAgAL1C////////////AINC//////////f/AFUNACAAnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMb/AMhAwsCQCABvUL///////////8Ag0L/////////9/8AVQ0AIAGdIgAgAEQAAAAAAADwPaKdRAAAAAAAAPBBoqEgAKYiAEQAAAAAAADwQaAgACAARAAAAAAAAAAAYxv8AyECCyACIANytwvQAQECf0EAIQJBACEDAkAgAL1C////////////AINC//////////f/AFUNACAAnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMb/AMhAwsCQCABvUL///////////8Ag0L/////////9/8AVQ0AIAGdIgAgAEQAAAAAAADwPaKdRAAAAAAAAPBBoqEgAKYiAEQAAAAAAADwQaAgACAARAAAAAAAAAAAYxv8AyECCyACIANztwvQAQECf0EAIQJBACEDAkAgAL1C////////////AINC//////////f/AFUNACAAnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMb/AMhAwsCQCABvUL///////////8Ag0L/////////9/8AVQ0AIAGdIgAgAEQAAAAAAADwPaKdRAAAAAAAAPBBoqEgAKYiAEQAAAAAAADwQaAgACAARAAAAAAAAAAAYxv8AyECCyACIANxtwuYAQECfyMAQRBrIgYkAEEAIQcCQAJAAkAgAS0A2AFBhAFHDQAgARCUCyAGQQhqIAFBACABKALQARC7EiAGKAIMIQcgBigCCEEBcQ0BCyAAIAc2AiAgACACNgIYIABBAjoAFCAAIAEoAswBNgIcIAAgBa1CIIYgBK2ENwMADAELIAAgBzYCAEECIQMLIAAgAzoAJCAGQRBqJAALrAEBAn8jAEEgayIBJAACQAJAQQAoAojnngENAAJAAkAgAEUNACAAKAIAIQIgAEEANgIAIAJFDQAgACgCBCEADAELQQBBACgCnNeeASIAQQFqNgKc154BIABFDQILQQAgADYCjOeeAUEAQQE2AojnngELIAFBIGokAEGM554BDwsgAUEANgIYIAFBATYCDCABQYychAE2AgggAUIENwIQIAFBCGpBlJyEARC1IQALjQEBBH8jAEEQayIDJAAgA0EIaiAAKAIAIgQgACgCBCABEOgZIAMoAgghBSADLQAMIQYgACAAKAIMQQFqNgIMIAAgACgCCCAGQQFxazYCCCAEQQAgBWtBGGxqQWhqIgAgAikDADcDACAAQQhqIAJBCGopAwA3AwAgAEEQaiACQRBqKQMANwMAIANBEGokAAuhAQACQAJAAkACQAJAAkACQAJAAkAgACgCAA4KAQIDBAUGCAcIAAELIABBCGogARCcBg8LIABBHGogARC0Jg8LIABBCGogARCAAQ8LIABBHGogARC0Jg8LAkACQCAAKAIIDgMAAQUACyAAKAIoIAEQaA8LIAAoAiggARDUGQ8LIABBBGogARCXLA8LIABBEGogARC0Jg8LIABBBGogARCXLAsLnwEBA38gAC0ACCEBAkACQCAAKAIA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AgQiABCwASAAQcAAQQgQ0hULC5UBAQF/IwBBIGsiAyQAIAMgAjYCHAJAAkAgASgCiAEiAkGAIHENACABIAJBgCByNgKIASADQQhqIANBHGogARCZBSADKAIIIQIgASABKAKIAUH/X3E2AogBIAMoAgwhAQwBCyADQRBqIANBHGogARCZBSADKAIUIQEgAygCECECCyAAIAI2AgAgACABNgIEIANBIGokAAuYAQEBfyMAQSBrIgMkACADQQhqQRBqIAFBEGopAwA3AwAgA0EIakEIaiABQQhqKQMANwMAIAMgASkDADcDCAJAAkAgAigCiAEiAUGAgICAAXFFDQAgAiABQf////9+cTYCiAEgACADQQhqIAIQjgMgAiACKAKIAUGAgICAAXI2AogBDAELIAAgA0EIaiACEI4DCyADQSBqJAALkQEBBH8jAEEgayICJAAgAkEIakEQaiIDIAFBLGooAgA2AgAgAkEIakEIaiIEIAFBJGopAgA3AwAgAiABKQIcNwMIQRRBBBDTJyIFQRBqIAMoAgA2AgAgBUEIaiAEKQMANwIAIAUgAikDCDcCACABQQRqEKklIAEQqSwgAEHAhZwBNgIEIAAgBTYCACACQSBqJAALggECAX8BfgJAAkAgAa0gA61+IgVCIIinDQAgBaciASACQX9qaiIEIAFJDQAgBEEAIAJrcSIBIANBCGpqIgMgAUkNAQJAIANBgICAgHggAmtLDQAgACABNgIIIAAgAzYCBCAAIAI2AgAPCyAAQQA2AgAPCyAAQQA2AgAPCyAAQQA2AgALkgEBBH8jAEEQayIDJAACQAJAIAEoAgAiBCACKAIAIgVPDQAgA0EIaiACQQhqKAIANgIAIAMgAikCADcDACAAIAMgASgCBCIGIAEoAggQ5goMAQsgA0EIaiABQQhqKAIANgIAIAMgASkCADcDACAAIAMgAigCBCIGIAIoAggQ5gogBSEECyAEIAYQmiogA0EQaiQAC4kBAAJAAkAgAUGAAUkNAAJAIAFBgBBPDQAgAiABQT9xQYABcjoAASACIAFBBnZBwAFyOgAAQQIhAQwCCyACIAFBP3FBgAFyOgACIAIgAUEMdkHgAXI6AAAgAiABQQZ2QT9xQYABcjoAAUEDIQEMAQsgAiABOgAAQQEhAQsgACABNgIEIAAgAjYCAAuUAQECfyAAKAIY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ASgCICAAQRRqKAIAELgTEKMkCyAAIAEQuRQgAEEwaiIDKAIARQ0BIAMgARCYLAwBCw8LIABBOGohACACQUhqIQIMAAsLcwEEf0F/IQNBACEEAkAgAUUNAAJAA0ACQCABQQFLDQAgACAEQQxsaigCACIBIAJHDQJBACEDDAMLIAQgAUEBdiIFIARqIgYgACAGQQxsaigCACACSxshBCABIAVrIQEMAAsLIAQgASACSWohBAsgAyAEagtuAQZ+IAAgA0L/////D4MiBSABQv////8PgyIGfiIHIANCIIgiCCAGfiIGIAUgAUIgiCIJfnwiBUIghnwiCjcDACAAIAggCX4gBSAGVK1CIIYgBUIgiIR8IAogB1StfCAEIAF+IAMgAn58fDcDCAt7AQF/IwBBwABrIgUkACAFIAE2AgwgBSAANgIIIAUgAzYCFCAFIAI2AhAgBUECNgIcIAVB5NeYATYCGCAFQgI3AiQgBUEPrUIghiAFQRBqrYQ3AzggBUEMrUIghiAFQQhqrYQ3AzAgBSAFQTBqNgIgIAVBGGogBBC1IQALgAEBAn8jAEEQayIDJAAgAigCAEHFqZwBQQEgAigCBCgCDBELACEEIANBADoACSADIAQ6AAggAyACNgIEAkAgAUUNAANAIAMgADYCDCADQQRqIANBDGpBJBCzCxogAEEBaiEAIAFBf2oiAQ0ACwsgA0EEahDzICEAIANBEGokACAAC3gBAX8jAEEgayIDJAAgAyACNgIEAkAgACgCECACRw0AQQAhAAJAA0AgAkUNASACQX9qIQIgAEEBdCABLQAAaiEAIAFBAWohAQwACwsgA0EgaiQAIAAPCyADQQA2AghBACAAQRBqIANBBGogA0EIakGYsYABEO0eAAt9AQF/IwBBIGsiAyQAIANBEGogACABEPUjIAMgAykDEDcCGCACQQFqIQECQAJAAkADQCADQQhqIANBGGoQuhUgAygCCCEAIAFBf2oiAUUNASAAQQFGDQAMAgsLIABBAXENAQtBjL6DARD4KQALIAMoAgwhASADQSBqJAAgAQuFAQEGfyMAQRBrIgIkACACQQRqIAEQKhDbESACKAIIIQMCQCACKAIEQQFHDQAgAyACKAIMQdCSggEQwSYACyACKAIMIQQQKyIFECwiBhAtIQcgBhCIKCAHIAEgBBAuIAcQiCggBRCI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AX8CQCAAKAIIIgJFDQAgAkEobCECIAAoAgRBBGohAANAAkACQAJAAkACQCAAQXxqKAIADgUEAAECAwQLIAAoAgBBAUcNAyABIABBBGooAgAQ0QEMAwsgASAAKAIAENEBDAILIAAgARCiDwwBCyAAIAEQmBILIABBKGohACACQVhqIgINAAsLC4kBAQF/AkAgACgCCCICRQ0AIAJBKGwhAiAAKAIEQQRqIQADQAJAAkACQAJAAkAgAEF8aigCAA4FBAABAgMECyAAKAIAQQFHDQMgASAAQQRqKAIAEOQBDAMLIAEgACgCABDkAQwCCyAAIAEQow8MAQsgACABEJkSCyAAQShqIQAgAkFYaiICDQALCwuJAQEBfwJAIAAoAggiAkUNACACQShsIQIgACgCBEEEaiEAA0ACQAJAAkACQAJAIABBfGooAgAOBQQAAQIDBAsgACgCAEEBRw0DIABBBGooAgAgARCjAgwDCyAAKAIAIAEQowIMAgsgACABEKQPDAELIAAgARCaEgsgAEEoaiEAIAJBWGoiAg0ACwsLiQEBAX8CQCAAKAIIIgJFDQAgAkEobCECIAAoAgRBBGohAANAAkACQAJAAkACQCAAQXxqKAIADgUEAAECAwQLIAAoAgBBAUcNAyABIABBBGooAgAQpgEMAwsgASAAKAIAEKYBDAILIAAgARCEDwwBCyAAIAEQmxILIABBKGohACACQVhqIgINAAsLC4kBAQF/AkAgACgCCCICRQ0AIAJBKGwhAiAAKAIEQQRqIQADQAJAAkACQAJAAkAgAEF8aigCAA4FBAABAgMECyAAKAIAQQFHDQMgASAAQQRqKAIAEKcBDAMLIAEgACgCABCnAQwCCyAAIAEQpQ8MAQsgACABEJwSCyAAQShqIQAgAkFYaiICDQALCwuFAQEDfyMAQRBrIgMkAAJAIAAtAABBAUYNACADQQhqIAAoAgQiBCgCACAALQABQQFGEJYkAkAgA0EIahCUJCIFDQAgAEECOgABIAQoAgAgASACENQgIgUNACADQQQ6AAggA0EIahCUJCEFCyADQRBqJAAgBQ8LQYSknAFBKEGIx5sBEMccAAuJAQECfyMAQRBrIgQkAAJAAkAgASgCiAEiBUGAIHENACABIAVBgCByNgKIASAEIAIgAyABEIESIAQoAgAhAiABIAEoAogBQf9fcTYCiAEgBCgCBCEBDAELIARBCGogAiADIAEQgRIgBCgCDCEBIAQoAgghAgsgACACNgIAIAAgATYCBCAEQRBqJAALjgEBAX8jAEEgayIDJAAgA0EIakEIaiABQQhqKQIANwMAIAMgASgCEDYCGCADIAEpAgA3AwgCQAJAIAIoAogBIgFBgICAgAFxDQAgAiABQYCAgIABcjYCiAEgACADQQhqIAIQ8CUgAiACKAKIAUH/////fnE2AogBDAELIAAgA0EIaiACEPAlCyADQSBqJAALjgEBAX8jAEEgayIDJAAgA0EIakEIaiABQQhqKQIANwMAIAMgASgCEDYCGCADIAEpAgA3AwgCQAJAIAIoAogBIgFBgICAgAFxDQAgAiABQYCAgIABcjYCiAEgACADQQhqIAIQ8SUgAiACKAKIAUH/////fnE2AogBDAELIAAgA0EIaiACEPElCyADQSBqJAALjAEBA38jAEEQayICJAACQAJAIAEoAogBIgNBwIAGcUHAgAZGDQAgASADQcCABnI2AogBIAJBCGogARC0FyACKAIIIQQgASABKAKIASADQb//eXJxNgKIASACKAIMIQEMAQsgAiABELQXIAIoAgQhASACKAIAIQQLIAAgBDYCACAAIAE2AgQgAkEQaiQAC4cBAQJ/IwBBEGsiAiQAIAEoAgAhAyABQQA2AgACQAJAIAMgASgCBBCmJCIBEPspDQAgAkEIaiABELsVQQEhAQJAAkAgAi0ACEEBRw0AIAAgAigCDDYCBAwBCyAAIAItAAk6AAFBACEBCyAAIAE6AAAMAQsgAEGABDsBACABEIgoCyACQRBqJAALdQEBfgJAAkAgAa0gAq1+IgNCIIinDQAgA6ciAUF4Sw0AIAFBB2pBeHEiASACQQhqaiICIAFJDQECQCACQfj///8HSw0AIAAgATYCCCAAIAI2AgQgAEEINgIADwsgAEEANgIADwsgAEEANgIADwsgAEEANgIAC44BAgN/AX4jAEEgayIBJAAgACgCACICKAIAIQMgAkEANgIAIAMoAhAhAiADQQA2AhACQCACDQAgAUEANgIYIAFBATYCDCABQbCEngE2AgggAUIENwIQIAFBCGpByLecARC1IQALIAIRAgAhBCAAKAIEIgMoAgApAwAQuh0gAygCACAENwMAIAFBIGokAEEBC3gBAn8j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IgENASAAQThqIQAgAiEDIAJBSGohAiADDQALCyABC4wBAAJAAkACQAJAAkACQAJAIAAoAgAOBwABAwQFAgYACyAAQQA6ABwgAEEgahCIIQ8LIABBBGogARChGSAAQQA6ABwLDwsgACgCBCABENASIABBGGoQiCEPCyAAQQRqIAEQ5g4gAEEAOgAcDwsgACgCBCABENASIAEgACgCCBDkAQ8LIAEgACgCBBDkAQuEAQECfyMAQTBrIgEkAAJAAkAgACgCACICDQBBACEAQQAhAgwBCyABIAI2AiQgAUEANgIgIAEgAjYCFCABQQA2AhAgASAAKAIEIgI2AiggASACNgIYIAAoAgghAkEBIQALIAEgAjYCLCABIAA2AhwgASAANgIMIAFBDGoQ+iEgAUEwaiQAC4kBAQJ/IwBBEGsiAyQAAkACQCACKAKIASIEQYCAEHFFDQAgAiAEQf//b3E2AogBIANBCGogASACEL8cIAMoAgghASACIAIoAogBQYCAEHI2AogBIAMoAgwhAgwBCyADIAEgAhC/HCADKAIEIQIgAygCACEBCyAAIAE2AgAgACACNgIEIANBEGokAAuJAQECfyMAQRBrIgMkAAJAAkAgAigCiAEiBEGAgBBxRQ0AIAIgBEH//29xNgKIASADQQhqIAEgAhDBHCADKAIIIQEgAiACKAKIAUGAgBByNgKIASADKAIMIQIMAQsgAyABIAIQwRwgAygCBCECIAMoAgAhAQsgACABNgIAIAAgAjYCBCADQRBqJAALhgEBAn8jAEEQayIDJAACQAJAIAEoAogBIgRBgAJxRQ0AIAEgBEH/fXE2AogBIANBCGogAiABEO0CIAMoAgghAiABIAEoAogBQYACcjYCiAEgAygCDCEBDAELIAMgAiABEO0CIAMoAgQhASADKAIAIQILIAAgAjYCACAAIAE2AgQgA0EQaiQAC4YBAQJ/IwBBEGsiAyQAAkACQCABKAKIASIEQYACcUUNACABIARB/31xNgKIASADQQhqIAIgARD1AiADKAIIIQIgASABKAKIAUGAAnI2AogBIAMoAgwhAQwBCyADIAIgARD1AiADKAIEIQEgAygCACECCyAAIAI2AgAgACABNgIEIANBEGokAAuGAQECfyMAQRBrIgMkAAJAAkAgASgCiAEiBEGAAnFFDQAgASAEQf99cTYC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IAJBEGokAAt+AQN/AkACQAJAIAEoAgQiAg0AQQAhAQwBCyACIAEoAgAiAygCFCIETw0BIAAgAygCECACQQlsaiICKAAANgABIAEgAigABSIDNgIEIAAgAzYABiAAQQVqIAJBBGotAAA6AABBASEBCyAAIAE6AAAPCyACIARBxJGEARDAFAALegEBfyMAQSBrIgIkACAAKAIAIQAgAiABKAIAQQFBACABKAIEKAIMEQsAOgAUIAIgATYCECACQQE6ABUgAkEANgIMIAIgADYCGCACIABBBGo2AhwgAkEMaiACQRhqQTMQxQsgAkEcakE8EMULEOsQIQEgAkEgaiQAIAELhgEBAn8jAEEQayICJAACQAJAAkAgASgCAEGVgICAeEYNAAJAAkAgASgCAEGAgICAeHMiA0EVIANBFUkbQW5qDgQBAwMAAwsgASgCCA0CCyABEP0UC0EAIQMMAQtBASEDIAEgAkEPakH0xZgBEJQhIQELIAAgATYCBCAAIAM2AgAgAkEQaiQAC4IBAQJ/IwBBEGsiAiQAIAIgADYCDCABKAIMIQMCQAJAAkACQAJAIAEoAgQOAgABAwsgAw0CQQEhAUEAIQMMAQsgAw0BIAEoAgAiASgCBCEDIAEoAgAhAQsgACABIAMQ6QxBACEBDAELIAJBDGpB2NyAASABEN4FIQELIAJBEGokACABC4UBAQF/AkACQAJAAkAgASgCAA4EAwABAgMLIABBBDYCAA8LIABBAzYCACAAIAEoAgw2AgggACABKAIENgIEDwsgAEEENgIADwsCQCABKAIMIgJFDQAgAEEANgIAIAAgAkF/ajYCDCAAIAEoAggiATYCBCAAIAFB2ABqNgIIDwsgAEEENgIAC3wBAX8jAEEgayICJAAgACgCACEAIAIgASgCAEEBQQAgASgCBCgCDBELADoAFCACIAE2AhAgAkEBOgAVIAJBADYCDCACIAA2AhggAiAAQQRqNgIcIAJBDGogAkEYakG/ARDFCyACQRxqQb8BEMULEOsQIQEgAkEgaiQAIAELgAEBAn8jAEEQayIEJAACQAJAIANFDQAgA0EFTw0BIARCADcDCAJAIANBAXQiBUUNACAEQQhqIAIgBfwKAAALIAAgATYCCCAAIAM6AAwgACAEKQMINwIAIARBEGokAA8LQaDNgwFBGUG8zYMBEMccAAtBzM2DAUEaQejNgwEQxxwAC28AAkAgAiABTw0AAkAgACACQQxsaiICKAIIIgEgAigCAEcNACACQcDMgwEQxxoLIAIoAgQgAUEDdGogBK1C/wGDQiiGIAOtQv8Bg0IghoQgBa2ENwIAIAIgAUEBajYCCA8LIAIgAUGAzYMBEMAUAAuAAQEDfwJAAkAgACgCACIBQYCAgIB4Rg0AIAFFDQEgACgCBCABQQEQ0hUPCyAALQAEQQNHDQAgACgCCCIAKAIAIQICQCAAQQRqKAIAIgEoAgAiA0UNACACIAMRAwALAkAgASgCBCIDRQ0AIAIgAyABKAIIENIVCyAAQQxBBBDSFQsLdQICfwF+AkAgACkDACIDQgODQgBSDQAgA6ciASABKAIAIgJBf2o2AgAgAkEBRw0AIAEgASgCEBCPIgsCQCAAKQMQIgNQDQAgA0IDg0IAUg0AIAOnIgAgACgCACIBQX9qNgIAIAFBAUcNACAAIAAoAhAQjyILC3MBA38gAkEwbCEDIAFBUGohAgJAA0BBACEEIANFDQEgAkEwaiIFKAIAQRJHDQEgAkE0aigCACIBKAIAQRtHDQEgASgCCA0BIANBUGohAyAFIQJBEiABEPsYRQ0ACyAAIAUpAgg3AgRBASEECyAAIAQ2AgALdQICfwF+AkAgACkDACIDQgODQgBSDQAgA6ciASABKAIAIgJBf2o2AgAgAkEBRw0AIAEgASgCEBCPIgsCQCAAKQMQIgNQDQAgA0IDg0IAUg0AIAOnIgAgACgCACIBQX9qNgIAIAFBAUcNACAAIAAoAhAQjyILC4EBAQN/IAAtACYhAiAAQQE6ACYgASgCBCEDAkACQAJAAkAgASgCAA4DAAECAAsgAyAAEI4eIAAgAjoAJg8LIAMoAggiBEUNASADKAIEIQEgBEE4bCEDA0AgACABEM8dIAFBOGohASADQUhqIgMNAAwCCwsgAyAAEJQMCyAAIAI6ACYLdQICfwF+AkAgACkDACIDQgODQgBSDQAgA6ciASABKAIAIgJBf2o2AgAgAkEBRw0AIAEgASgCEBCPIgsCQCAAKQMQIgNQDQAgA0IDg0IAUg0AIAOnIgAgACgCACIBQX9qNgIAIAFBAUcNACAAIAAoAhAQjyILC3UCAn8BfgJAIAApAwAiA0IDg0IAUg0AIAOnIgEgASgCACICQX9qNgIAIAJBAUcNACABIAEoAhAQjyILAkAgACkDECIDUA0AIANCA4NCAFINACADpyIAIAAoAgAiAUF/ajYCACABQQFHDQAgACAAKAIQEI8iCwt1AgJ/AX4CQCAAKQMQIgNQDQAgA0IDg0IAUg0AIAOnIgEgASgCACICQX9qNgIAIAJBAUcNACABIAEoAhAQjyILAkAgACkDACIDQgODQgBSDQAgA6ciACAAKAIAIgFBf2o2AgAgAUEBRw0AIAAgACgCEBCPIgsLggEBAn8jAEEQayICJAACQAJAIAEoAogBIgNBgMAAcQ0AIAEgA0GAwAByNgKIASACIAEQXyACKAIAIQMgASABKAKIAUH/v39xNgKIASACKAIEIQEMAQsgAkEIaiABEF8gAigCDCEBIAIoAgghAwsgACADNgIAIAAgATYCBCACQRBqJAALgQEBAn8jAEEQayICJAACQAJAIAEoAogBIgNBwABxDQAgASADQcAAcjYCiAEgAiABELQXIAIoAgAhAyABIAEoAogBQb9/cTYCiAEgAigCBCEBDAELIAJBCGogARC0FyACKAIMIQEgAigCCCEDCyAAIAM2AgAgACABNgIEIAJBEGokAAuBAQECfyMAQRBrIgIkAAJAAkAgASgCiAEiA0HAAHENACABIANBwAByNgKIASACIAEQ9AkgAigCACEDIAEgASgCiAFBv39xNgKIASACKAIEIQEMAQsgAkEIaiABEPQJIAIoAgwhASACKAIIIQMLIAAgAzYCACAAIAE2AgQgAkEQaiQAC4QBAQJ/IwBBEGsiAyQAIANBDGogAUEMaigCADYCACADIAEoAgA2AgAgAyABKQIENwIEAkACQCACKAKIASIBQYCcgIACcSIERQ0AIAIgAUH/4///fXE2AogBIAAgAyACEOcSIAIgAigCiAEgBHI2AogBDAELIAAgAyACEOcSCyADQRBqJAALfAECfyMAQTBrIgEkACABIAA2AgwCQCAALQAAQQJJDQAgAUEBNgIUIAFBnMaDATYCECABQgE3AhwgAUGYATYCLCABIAFBKGo2AhggASABQQxqNgIoIAFBEGpBkMeDARC1IQALIAAoAgQhAiAAQQxBBBDSFSABQTBqJAAgAgt9AAJAIAQoAgBBgICAgHhHDQAgBC0ABCEEIAAgASACEMsTIAAgBEEDajoAJCAAIAMpAgA3AgwgAEEUaiADQQhqKQIANwIAIABBHGogA0EQaikCADcCAA8LIABBgICAgHg2AgAgACAEKQIANwIEIABBDGogBEEIaikCADcCAAtyAQJ/IwBBIGsiASQAAkACQCAAKAIwQQJHDQAgAEE0aiECDAELIAEgADYCCCABIABBNGoiAjYCDCABIAFBH2o2AhggASABQQxqNgIUIAEgAUEIajYCECAAQTBqIAFBEGpByOeYARC2BgsgAUEgaiQAIAILkAECAn8BfCMAQZABayICJAACQAJAIAErAwAiBEQAAAAAAAAAAGENAAJAAkAgBL1C////////////AINC//////////f/AFUNACACQQxqIQEgBCACQQxqEPgBIQMMAQsgAiAEEMMdIAIoAgQhAyACKAIAIQELIAAgASADEKAYDAELIAAgARCqEwsgAkGQAWokAAt4AQR/IwBBEGsiAiQAIAJBCGpBAEEAIAEoAggiA0Gwp5sBEOkdIAIoAgwhBCABIAIoAggiBTYCCCAAIAQ2AgwgACABNgIIIAAgAyAEazYCECAAIAEoAgQiASAEQdgAbGo2AgQgACABIAVB2ABsajYCACACQRBqJAALdgECfyMAQRBrIgQkACAEQQhqIAIgAyABKAIIIgVBsKebARDpHSAEKAIMIQMgASAEKAIIIgI2AgggACADNgIMIAAgATYCCCAAIAUgA2s2AhAgACABKAIEIgEgA0EwbGo2AgQgACABIAJBMGxqNgIAIARBEGokAAuIAQEBfyMAQSBrIgMkACADQQA2AgggA0KAgICAEDcCACADQeyqmwE2AhAgA0KggICADjcCFCADIAM2AgwCQCABIAIgA0EMahCWK0UNAEHwqZwBQTcgA0EfakGEq5sBQfSqnAEQoxIACyAAIAMpAgA3AgAgAEEIaiADQQhqKAIANgIAIANBIGokAAuIAQEBfyMAQSBrIgMkACADQQA2AgggA0KAgICAEDcCACADQZSrmwE2AhAgA0KggICADjcCFCADIAM2AgwCQCABIAIgA0EMahCWK0UNAEHwqZwBQTcgA0EfakGsq5sBQfSqnAEQoxIACyAAIAMpAgA3AgAgAEEIaiADQQhqKAIANgIAIANBIGokAAt6AgF/AX4jAEEQayIFJAACQAJAAkAgBEGAPHFBgDxHDQAgA0UNASAFQQhqIAEgAkEB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AANAIAAoAgAgARD+AiAAQRBqIQAgAkFwaiICDQAMAgsLIAAoAiAgARD+AiACQQJJDQAgACgCBCABEP4CCwt1AQF/AkACQCAAKAIAIgJBA0cNACAAKAIQIAEQ9wIgACgCDCICRQ0BIAJBBHQhAiAAKAIIQQxqIQADQCAAKAIAIAEQ9wIgAEEQaiEAIAJBcGoiAg0ADAILCyAAKAIgIAEQ9wIgAkECSQ0AIAAoAgQgARD3AgsLdQEBfwJAAkAgACgCACICQQNHDQAgASAAKAIQEKcBIAAoAgwiAkUNASACQQR0IQIgACgCCEEMaiEAA0AgASAAKAIAEKcBIABBEGohACACQXBqIgINAAwCCwsgASAAKAIgEKcBIAJBAkkNACABIAAoAgQQpwELC3kBAX8jAEEQayIEJAACQAJAIAIgA0GArJsBQR4QriNFDQBBASEDDAELIARBCGogASgCACgCAEHWi5wBELsoAkAgBEEIahCUJCICRQ0AQQIhAyACIQEMAQsgAEEBOgABQQAhAwsgACABNgIEIAAgAzoAACAEQRBqJAALfQECfyADKAKIASIEQYACcSEFAkACQCABQQFxDQAgBUUNASADIARB/31xNgKIASAAIAIgAxDIKCADIAMoAogBQYACcjYCiAEPCyAFDQAgAyAEQYACcjYCiAEgACACIAMQyCggAyADKAKIAUH/fXE2AogBDwsgACACIAMQyCgLfQECfyADKAKIASIEQYABcSEFAkACQCABQQFxDQAgBUUNASADIARB/35xNgKIASAAIAIgAxC3FCADIAMoAogBQYABcjYCiAEPCyAFDQAgAyAEQYABcjYCiAEgACACIAMQtxQgAyADKAKIAUH/fnE2AogBDwsgACACIAMQtxQLdgIDfwF+IwBBEGsiAyQAIAEoAhQhBCABKAIQIQUgAyABQQhqEJwVIANBCGogAiAFIAQgAygCACADKAIEEOcOAkACQCADLQAIQQRGDQAgAykDCCIGQv8Bg0IEUQ0AIAAgBjcCAAwBCyAAQQQ6AAALIANBEGokAAt6AQF/IAAoAghBKGwhAiAAKAIEIQACQANAIAJFDQECQAJAAkACQAJAIAAoAgAOBQQAAQIDBAsgAEEEaiABEJclDAMLIABBBGogARCYLAwCCyAAQQRqIAEQsiwMAQsgAEEEaiABELcTCyAAQShq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LQAARw0BIAJBAWohAyAAQQFqIQQgAEECaiEAIAJBAmohAiAELQAAQf8BcSADLQAAQf8BcUYNAAsLQQALdwEBfyMAQSBrIgIkAAJAIAEoAgBBCkYNACACQQE2AgQgAkH03YQBNgIAIAJCATcCDCACQfsANgIcIAIgATYCGCACIAJBGGo2AgggAkH83YQBELUhAAsgACABKQIENwIAIABBCGogAUEMaikCADcCACACQSBqJAALdwEBfyMAQSBrIgIkAAJAIAEoAgBBCUYNACACQQE2AgQgAkGs3YQBNgIAIAJCATcCDCACQfsANgIcIAIgATYCGCACIAJBGGo2AgggAkG03YQBELUhAAsgACABKQIENwIAIABBCGogAUEMaikCADcCACACQSBqJAALcAEBfwJAAkACQAJAAkACQAJAAkAgACgCAEGAgLx/aiIBQQIgAUEISRsOCAABAgMEBQYHAAsgAEEEag8LIABBCGoPCyAAQcAAag8LIABBBGoPCyAAQSBqDwsgAEEEag8LIAAoAgRB2ABqDwsgAEEQagt6AQF/IAAoAgRBBGohASAAKAIIIQACQANAIABFDQECQAJAAkACQCABQXxqLQAADgUDAwMBAgALIAEQxwUMAgsgASgCACABQQRqKAIAELsqDAELIAEQ4hMgASgCACABQQRqKAIAELwqCyAAQX9qIQAgAUEYaiEBDAALCwtxAQR/IAEoAgQhAiABKAIAIQMCQCABKAIIIgEgACgCACAAKAIIIgRrTQ0AIAAgBCABQQhBGBDWGyAAKAIIIQQLAkAgAUEYbCIFRQ0AIAAoAgQgBEEYbGogAiAF/AoAAAsgACAEIAFqNgIIIAMgAhDBKgt1AQN/IAAoAgQhAQJAIAAoAggiAkUNACABIQMDQAJAIAMoAgBBB0YNACADEKIHCyADQShqIQMgAkF/aiICDQALCyAAKAIAIAEQzCoCQCAAKAIUIgNFDQAgAygCACICEIcCIAJB4ABBCBDSFSADQQxBBBDSFQsLaQECfwJAIABCA4NCAFINACAApyICIAIoAgAiA0F/ajYCACADQQFHDQAgAiACKAIQEI8iCwJAIAFQDQAgAUIDg0IAUg0AIAGnIgIgAigCACIDQX9qNgIAIANBAUcNACACIAIoAhAQjyILC3MBA38gASgCACECQQAhAyABQQA2AgACQAJA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AgAgACgCABDNKiABQRhBBBDSFQtsAQN/IwBBEGsiAiQAIAJBCGogASgCDBDEAyACKAIMIQMCQAJAIAEoAgBBAUYNACACKAIIIQEMAQsgASgCBCIEIAMgBCADSRshASAEIAMgBCADSxshAwsgACABNgIAIAAgAzYCBCACQRBqJAALbAEBfwJAIAAoAggiAyAAKAIARw0AIAAgAhC3GgsgACADQQFqNgIIIAAoAgQgA0EFdGoiACABKQIANwIAIABBCGogAUEIaikCADcCACAAQRBqIAFBEGopAgA3AgAgAEEYaiABQRhqKQIANwIAC28BAX8CQCAAKAIIIgIgACgCAEcNACAAQbDMgAEQwxsLIAAgAkEBajYCCCAAKAIEIAJBBXRqIgAgASkDADcDACAAQQhqIAFBCGopAwA3AwAgAEEQaiABQRBqKQMANwMAIABBGGogAUEYaikDADcDAAtvAQF/AkAgACgCCCICIAAoAgBHDQAgAEHsyYABEMMbCyAAIAJBAWo2AgggACgCBCACQQV0aiIAIAEpAwA3AwAgAEEIaiABQQhqKQMANwMAIABBEGogAUEQaikDADcDACAAQRhqIAFBGGopAwA3AwALcQEDfyMAQRBrIgMkACADQQRqIAIQ6BEgAygCCCEEAkAgAygCBEEBRg0AIAMoAgwhBQJAIAJFDQAgBSABIAL8CgAACyAAIAI2AgggACAFNgIEIAAgBDYCACADQRBqJAAPCyAEIAMoAgxB4LScARDBJgALbQEBfyMAQSBrIgUkAAJAIAIgA08NACAFQQA2AhggBUEBNgIMIAVBlIicATYCCCAFQgQ3AhAgBUEIaiAEELUhAAsgACADNgIEIAAgATYCACAAIAIgA2s2AgwgACABIANBAnRqNgIIIAVBIGokAAttAQF/IwBBIGsiBSQAAkAgAiADTw0AIAVBADYCGCAFQQE2AgwgBUGUiJwBNgIIIAVCBDcCECAFQQhqIAQQtSEACyAAIAM2AgQgACABNgIAIAAgAiADazYCDCAAIAEgA0ECdGo2AgggBUEgaiQAC20BAX8jAEEgayIFJAACQCACIANPDQAgBUEANgIYIAVBATYCDCAFQZSInAE2AgggBUIENwIQIAVBCGogBBC1IQALIAAgAzYCBCAAIAE2AgAgACACIANrNgIMIAAgASADQQJ0ajYCCCAFQSBqJAALaAEDfwJAIAEgACgCCCICTQ0AIAAgASACayIDEI0YIANBf2ohASAAKAIEIAAoAggiBEECdGohAgJAA0AgAkEANgIAIAFFDQEgAUF/aiEBIAJBBGohAgwACwsgBCADaiEBCyAAIAE2AggLbAECf0EAIQNBACEEAkACQCACRQ0AIAJBf2oiBCABTw0BIAAgBGotAABByLSEAWotAAAhBAsCQCACIAFPDQAgACACai0AAEHItIQBai0AACEDCyAEIANzQX9zQQFxDwsgBCABQaithAEQwBQAC2wBAX8CQCAAKAIIIgMgACgCAEcNACAAIAIQvxoLIAAgA0EBajYCCCAAKAIEIANBHGxqIgAgASkCADcCACAAQQhqIAFBCGopAgA3AgAgAEEQaiABQRBqKQIANwIAIABBGGogAUEYaigCADYCAAtsAQF/AkAgACgCCCIDIAAoAgBHDQAgACACEL8aCyAAIANBAWo2AgggACgCBCADQRxsaiIAIAEpAgA3AgAgAEEIaiABQQhqKQIANwIAIABBEGogAUEQaikCADcCACAAQRhqIAFBGGooAgA2AgALZwEBfyMAQTBrIgQkACAEQSBqIAFCACAAQgAQohIgBEEQaiACQgAgAEIAEKISIAQgBCkDKCIAIAQpAxB8IgEgBCkDGCABIABUrXwgA0H/AHFBwABzELYVIAQpAwAhACAEQTBqJAAgAAtnAQF/IwBBMGsiBCQAIARBIGogAUIAIABCABCiEiAEQRBqIAJCACAAQgAQohIgBCAEKQMoIgAgBCkDEHwiASAEKQMYIAEgAFStfCADQf8AcUHAAHMQthUgBCkDACEAIARBMGokACAAC38BAn8jAEEQayIEJABBAEEAKAL85p4BIgVBAWo2AvzmngECQCAFQQBIDQACQAJAQQAtAODmngENAEEAQQAoAtzmngFBAWo2AtzmngFBACgChOOeAUF/Sg0BDAILIARBCGogACABEQYAAAtBAEEAOgDg5p4BIAJFDQAQxS0ACwALbwIBfwF+AkACQAJAAkAgAC0ALEF9aiIBQQEgAUH/AXFBA0kbQf8BcQ4CAQIACyAAENETDwsgACkDACICQgODQgBSDQEgAqciACAAKAIAIgFBf2o2AgAgAUEBRw0BIAAgACgCEBCPIg8LIAAQ8xALC3MCAn8BfgJAIAApAwgi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DQAgASADIAAQ0hULIARBEGokAAt5AQJ/IAAtAAQiASECAkAgAC0ABUUNAEEBIQICQCABQQFxDQACQCAAKAIAIgItAApBgAFxDQAgAigCAEHH5JcBQQIgAigCBCgCDBELACECDAELIAIoAgBB2oucAUEBIAIoAgQoAgwRCwAhAgsgACACOgAECyACQQFxC3MBAX8jAEEgayIEJAACQCACIAEoAgBNDQAgBEEANgIYIARBATYCDCAEQYz+nQE2AgggBEIENwIQIARBCGpB5P6dARC1IQALIAQgASACQQQgAxCiDiAEKAIEIQEgACAEKAIANgIAIAAgATYCBCAEQSBqJAALcwEBfyMAQSBrIgMkAAJAIAIgASgCAE0NACADQQA2AhggA0EBNgIMIANBjP6dATYCCCADQgQ3AhAgA0EIakHk/p0BELUhAAsgAyABIAJBBEEEEKIOIAMoAgQhASAAIAMoAgA2AgAgACABNgIEIANBIGokAAtpAgF/AX4jAEEwayIDJAAgAyABNgIEIAMgADYCACADQQM2AgwgA0H8u4ABNgIIIANCAjcCFCADQQutQiCGIgQgA0EEaq2ENwMoIAMgBCADrYQ3AyAgAyADQSBqNgIQIANBCGogAhC1IQALaQIBfwF+IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EDNgIMIANBqLyAATYCCCADQgI3AhQgA0ELrUIghiIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQtSEAC2wCAX8BfiMAQTBrIgIkACACIAE2AgQgAiAANgIAIAJBAzYCDCACQdi8gAE2AgggAkICNwIUIAJBC61CIIYiAyACQQRqrYQ3AyggAiADIAKthDcDICACIAJBIGo2AhAgAkEIakGc0YQBELUhAAt2AQJ/IwBBEGsiAiQAAkACQAJAAkAgAUIBVg0AIAGnDgIBAgELQQEhAyACQQE6AAAgAiABNwMIIAAgAkGk0oABQazSgAEQ/xQ2AgQMAgtBACEDIABBADoAAQwBCyAAQQE6AAFBACEDCyAAIAM6AAAgAkEQaiQAC2kCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQaiGggE2AgggA0ICNwIUIANBC61CIIYiBCADQQRqrYQ3AyggAyAEIAOthDcDICAD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AgAiBkYNAAsgBCAGSyAEIAZJayEEC0F/QQAgAiADRxsgBCAFGwtuAAJAAkAgAkUNACAEDQELIABBCGpBACgClKCcATYCACAAQQApAoygnAE3AgAPCwJAIARBAUYNAAJAIAJBAUcNACAAIAMgBCABKAIAEOIZDwsgACABIAIgAyAEEOkRDwsgACABIAIgAygCABDiGQtjAQR/QQAhAQNAIAAoAgAhAgJAA0AgAkEBcQ0BIAAgAkEBciAAKAIAIgMgAyACRiIEGzYCACADIQIgBEUNAAsPCwJAAkAgAkEDSw0AIAFBCkkNAQsQvx8ACyABQQFqIQEMAAsLegEBfyMAQRBrIgIkACACIABB1BJqNgIMIAFB8KaDAUEMQd+mgwFBBCAAQZABQfymgwFBCCAAQcASakGRAUH4pYMBQQYgAEHQEmpBkgFB/NyDAUEGIABBsA1qQZMBQYLdgwFBAyACQQxqQZQBEJoMIQAgAkEQaiQAIAALbwEBfwJAAkAgAiABKAIEIgNPDQACQCABKAIAIAJqIgItAAANACACQQE6AAAgAEEBOgABIAEgASgCCEEBajYCCEEAIQEMAgtBACEBIABBADoAAQwBCyAAIAM2AgggACACNgIEQQEhAQsgACABOgAAC2kBAn9BACEDQQAhBAJAAkAgAkUNACACQX9qIgQgAU8NASAAIARqLQAAQci0hAFqLQAAIQQLAkAgAiABTw0AIAAgAmotAABByLSEAWotAAAhAwsgBCADc0EBcQ8LIAQgAUGorYQBEMAUAAtkAQR/IwBBEGsiASQAIAFBCGogABDII0EAIQICQCABKAIIIgBFDQAgASgCDEEEdCEDA0ACQCADDQBBASECDAILIANBcGohAyAALQAMIQQgAEEQaiEAIAQNAAsLIAFBEGokACACC2cBA38jAEEQayIDJABBACEEAkACQCABQQBIDQACQCABDQBBACEBQQEhBQwCC0EBIQQgA0EIakEBIAEQpSIgAygCCCIFDQELIAQgASACEMEmAAsgACAFNgIEIAAgATYCACADQRBqJAALbgECfyMAQRBrIgMkAAJAAkAgAigCAEUNAEEJIQJBlNeYASEEDAELIANBBGogAigCBCACKAIIENwEQZTXmAEgAygCCCADKAIEIgIbIQRBCSADKAIMIAIbIQILIAQgAiABEPAOIQIgA0EQaiQAIAILZAECfwJAIABCA4NCAFINACAApyICIAIoAgAiA0F/ajYCACADQQFHDQAgAiACKAIQEI8iCwJAIAFCA4NCAFINACABpyICIAIoAgAiA0F/ajYCACADQQFHDQAgAiACKAIQEI8iCwttAgR/AX4gASgCECECIAEoAgwhAyABKAIIIQQCQCABKQMAIgZCA4NCAFINACAGpyIFIAUoAgAiBUEBajYCACAFQX9KDQAACyAAIAI2AhAgACADNgIMIAAgBDYCCCAAIAY3AwAgACABLQAUOgAUC3QBAX8gACgCACIAEMolIABBEGoiASgCACAAQRRqKAIAEOQiIAAoAgwgASgCABDFKiAAQTBqEK4oIAAoAjQQsSIgACgCOBCrKSAAQRxqIgEoAgAgAEEgaigCABDTDyAAKAIYIAEoAgAQxyogAEHAAEEEENIVC4cBAQJ/QQAhAQJAAkACQAJAAkAgAEEIdiICQWpqDhsABAQEBAQEBAQEAwQEBAQEBAQEBAQEBAQEBAECCyAAQYAtRiEBDAMLIABBgOAARiEBDAILIAINASAAQf8BcUHwtJwBai0AACEBDAELIABB/wFxQfC0nAFqLQAAQQJxQQF2IQELIAFBAXELbQEBfyMAQRBrIgIkAAJAAkAgACgCACIAKAIAQQFHDQAgAiAAQQRqNgIMIAFBgqWaAUEDIAJBDGpBpQIQ8AshAAwBCyACIABBCGo2AgggAUGApZoBQQIgAkEIakGgAhDwCyEACyACQRBqJAAgAAt3AAJAIAEgAkH6jJwBQQQQriNFDQBBzgAPCwJAIAEgAkGujZwBQQUQriNFDQBBzwAPCwJAIAEgAkHQ4JsBQQUQriNFDQBB0AAPCwJAIAEgAkGb7psBQQUQriNFDQBB0QAPC0HSAEGkfyABIAJBtY2cAUEIEK4jGwt3AAJAIAEgAkG9jZwBQQgQriNFDQBB0wAPCwJAIAEgAkH+jJwBQQcQriNFDQBB1AAPCwJAIAEgAkHJ3JsBQQYQriNFDQBB1QAPCwJAIAEgAkGzjZwBQQIQriNFDQBB1gAPC0H8AEGkfyABIAJB5YecAUEHEK4jGwt3AAJAIAEgAkHwqJwBQQUQriNFDQBB2gAPCwJAIAEgAkHYjJwBQQcQriNFDQBB2wAPCwJAIAEgAkHSjJwBQQMQriNFDQBB3AAPCwJAIAEgAkHU9JsBQQgQriNFDQBB3QAPC0H+AEGkfyABIAJBnvObAUEEEK4jGwt3AAJAIAEgAkGW7psBQQMQriNFDQBB4wAPCwJAIAEgAkH5qJwBQQQQriNFDQBB5AAPCwJAIAEgAkGW75sBQQYQriNFDQBBiAEPCwJAIAEgAkHI75sBQQUQriNFDQBBhwEPC0GGf0GkfyABIAJB0e6bAUEJEK4jGwttAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAoAgBBAUcNACACIABBBGo2AgwgAUH9kZsBQQggAkEMakHpAhDwCyEADAELIAIgAEEIajYCCCABQd6znAFBBSACQQhqQeoCEPALIQALIAJBEGokACAAC24BAn8jAEEQayICJAAgACgCACIAQQRqIQMCQAJAIAAoAgBBAUcNACACIAM2AgwgAUGu85oBQRIgAkEMakGFBBDwCyEADAELIAIgAzYCCCABQdTtmgFBCyACQQhqQYYEEPALIQALIAJBEGokACAAC24BAn8jAEEQayICJAAgACgCACIAQQRqIQMCQAJAIAAoAgBBAUcNACACIAM2AgwgAUH/s5wBQQQgAkEMakHOAhDwCyEADAELIAIgAzYCCCABQfCCmwFBByACQQhqQb4EEPALIQALIAJBEGokACAAC24BAn8jAEEQayICJAAgACgCACIAQQhqIQMCQAJAIAAoAgBBAUcNACACIAM2AgwgAUGYlJsBQQMgAkEMakGWBBDwCyEADAELIAIgAzYCCCABQd6znAFBBSACQQhqQfgCEPALIQALIAJBEGokACAAC2QBAn8CQCAAQgODQgBSDQAgAKciAiACKAIAIgNBf2o2AgAgA0EBRw0AIAIgAigCEBCPIgsCQCABQgODQgBSDQAgAaciAiACKAIAIgNBf2o2AgAgA0EBRw0AIAIgAigCEBCPIgsLdwEBfyMAQRBrIgIkACACIABBOGo2AgwgAUH5hpsBQRFBzJSbAUEEIABB7gRB+I2cAUEEIABBMGpBjAJBioebAUEFIABBPGpB7wRBj4ebAUEMIABByABqQeQCQZuHmwFBCSACQQxqQZADEJoMIQAgAkEQaiQAIAALbgECfyMAQRBrIgIkACAAKAIAIgBBBGohAwJAAkAgACgCAEEBRw0AIAIgAzYCDCABQf+znAFBBCACQQxqQc4CEPALIQAMAQsgAiADNgIIIAFB0JSbAUEMIAJBCGpBgwMQ8AshAAsgAkEQaiQAIAALbwICfwF+IAApAwghAwJAAkAgACgCAA0AIANCA4NCAFINASADpyIBIAEoAgAiAkF/ajYCACACQQFHDQEgASABKAIQEI8iDAELIAMgACkDGBDlEwsCQCAAKAIoIgBFDQAgABCwASAAQcAAQQgQ0hULC2cBA38jAEEQayICJAACQAJAIAEtANgBIgNBEkYNAEEAIQFBACEEIANBPkcNARDtKgALIAJBCGogAUEAQQEQyQ8gAigCCEEBcSEEIAIoAgwhAQsgACABNgIEIAAgBDYCACACQRBqJAALcQEBfwJAAkACQCAAKAIYIgINACAALQAURQ0CIAEoAhwgASgCICAAKAIMELgTIQAMAQsgASACQQRqKAIAIAJBCGooAgAQ2B0gAC0AFEEBRw0BIAEoAhwgASgCICACKAIEQX9qEKESIQALIAEgABCjJAsLbwECfyACKAKIASIDQSBxIQQCQAJAIAENACAERQ0BIAIgA0FfcTYCiAEgACACENcBIAIgAigCiAFBIHI2AogBDwsgBA0AIAIgA0EgcjYCiAEgACACENcBIAIgAigCiAFBX3E2AogBDwsgACACENcBC2wBBX8gACgCCCEBIAAoAgQiAiEDAkADQCABRQ0BAkAgAygCACIEQYCAgIB4Rg0AIANBBGooAgAiBSADQQhqKAIAEMsiIAQgBRCRKgsgAUF/aiEBIANBIGohAwwACwsgACgCACACQQRBIBDCFAtqAQF/IABBJGohAAJAA0AgAUUNASAAQWBqIgIoAgAgAEFkaigCABDvICAAQVxqKAIAIAIoAgAQ/SkgAEFoahChIwJAIAAoAgBBgICAgHhGDQAgABChIwsgAUF/aiEBIABBwABqIQAMAAsLC3ABAn8CQAJAIAEoAgQiAg0AQQAhAQwBCyAAIAEoAgAiA0EQaigCACADQRRqKAIAIAJBxJGEARCKIyICKAAANgABIAEgAigABSIDNgIEIAAgAzYABiAAQQVqIAJBBGotAAA6AABBASEBCyAAIAE6AAALawEBfyMAQTBrIgIkACACQQI2AgwgAkGY85gBNgIIIAJCAjcCFCACQQs2AiwgAkELNgIkIAIgADYCICACIABBBGo2AiggAiACQSBqNgIQIAEoAgAgASgCBCACQQhq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IAA2AgggAUGyg5sBQQkgAkEIakG+AxDwCyEACyACQRBqJAAgAAtmAQN/IAAoAgwiASAAKAIEIgJrQThuIQMCQCABIAJGDQADQCACEPQKAkAgAkEwaigCACIBRQ0AIAEQsAEgAUHAAEEIENIVCyACQThqIQIgA0F/aiIDDQALCyAAKAIIIAAoAgAQzSoLVwEDfkIBIAGtIAKtfSIDQgGGIgR9IAQgA0IAUxshAwNAIAAgA0IfgyIEQiCEIAQgA0IFhyIFQgBVG6dBnqybAWotAAAQhQogA0IfViECIAUhAyACDQALC2gBA38CQCABKAIEIgIgASgCACIDKAIITw0AIABBADYCECAAIAI2AgwgACADNgIIIAEgAkEBajYCBCAAIAEoAggiBDYCACAAIAMoAgQgAkEcbGo2AgQgASAEQQFqNgIIDwsgAEEANgIEC24BAn8gASgCACECIAFBADYCAAJAIAEtADwNACABKAIEIQMgASgCKCABKAIQIAEoAhQQgwkCQCABKAI4RQ0AIAFBADYCNCABIAEoAjBBAWo2AjALIAFBAToAPCACRQ0AIAEgAxDEBQsgAEEEOgAAC2sBAn8jAEEQayIBJAACQAJAA0AgAUEIaiAAEJIMAkAgASgCDEGAgMQAIAEoAghBAXEbIgJBdmoOBAIBAQIACyACQdi/f2pBAkkNASACQYCAxABHDQALQQAhAgwBC0EBIQILIAFBEGokACACC2oAAkACQAJAAkACQAJAAkAgACgCAA4HAAECAwQGBQALIABBCGogASgCFBCbLA8LIABBBGogARD5Gw8LIABBBGogARCGLQ8LIABBBGogARCoBA8LIABBBGogARD3Jw8LIABBBGogARCWLAsLbgECfyABKAIAIQIgAUEANgIAAkAgAS0APA0AIAEoAgQhAyABKAIoIAEoAhAgASgCFBCDCQJAIAEoAjhFDQAgAUEANgI0IAEgASgCMEEBajYCMAsgAUEBOgA8IAJFDQAgASADEMUFCyAAQQQ6AAALVwEBfgJAAkAgA0HAAHENACADRQ0BIAIgA0E/ca0iBIYgAUEAIANrQT9xrYiEIQIgASAEhiEBDAELIAEgA0E/ca2GIQJCACEBCyAAIAE3AwAgACACNwMIC1cBAX4CQAJAIANBwABxDQAgA0UNASACQQAgA2tBP3GthiABIANBP3Gt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AgggACADNgIEIAAgAjYCAA8LQfy6gAEQth8LAAtfAQJ/IAAoAgghAgJAAkAgAUGAAU8NAEEBIQMMAQsCQCABQYAQTw0AQQIhAwwBC0EDQQQgAUGAgARJGyEDCyAAIAMQwSIgASAAKAIEIAAoAghqEM8NIAAgAyACajYCCAtZAQF/IwBBIGsiAiQAIAJBADYCECACQQhqIAEgAkEQahCMGiACQRRqIAIoAgggAigCDBD+FiAAQQhqIAJBFGpBCGooAgA2AgAgACACKQIUNwIAIAJBIGokAAtaAQF/IwBBMGsiAyQAIAMgATYCDCADIAA2AgggA0EBNgIUIANBvLecATYCECADQgE3AhwgA0EMrUIghiADQQhqrYQ3AyggAyADQShqNgIYIANBEGogAhC1IQALXQEBfyMAQSBrIgIkACACQQA6ABggAiABNgIUIAIgADYCECACQQE2AgwgAiACQQxqNgIcIAJBHGpBjNWAARABIQECQCACKAIMRQ0AIAJBEGoQoCULIAJBIGokACABC5ABACAAQcgAakH4ABCdFSAAQdQAakEhEJ0VIABB4ABqQT4QnRUgAEL8gICA4As3AkAgAEL8gICAwA83AjggAELbgICA0As3AjAgAEKngICA4As3AiggAEKugICAgAw3AiAgAEKsgICA4A43AhggAELegICA4Ac3AhAgAEKrgICAoAc3AgggAEKtgICAwA83AgALWgECfwJAIAAoAgwiAyAAKAIAIgRHDQAgACACEKMOIAAoAgAhBCAAKAIMIQMLIAAgA0EBajYCDCAAKAIEIAAoAgggA2oiAEEAIAQgACAESRtrQQJ0aiABNgIAC2YBAX8jAEEQayICJAAgAiAAQYICajYCDCABQbmXgAFBDkGtl4ABQQcgAEEsQZyXgAFBBSAAQYACakEqQbSXgAFBBSAAQYECakEqQceXgAFBBSACQQxqQSQQ0AwhACACQRBqJAAgAAthAQJ/AkAgAigCACABKAIAIAFBfGoiAygCABCzH0UNACABKAIAIQQCQANAIAMiAUEEaiABKAIANgIAIAEgAEYNASACKAIAIAQgAUF8aiIDKAIAELMfDQALCyABIAQ2AgALC2QBAX8jAEEQayICJAAgAiAAQRRqNgIMIAFBnLmDAUEJQfu4gwFBCCAAQQxqQTBBubuDAUEHIABBxABBwLuDAUEIIABBEGpBIUHIu4MBQQkgAkEMakEzENAMIQAgAkEQaiQAIAALVwEBfyMAQRBrIgUkAAJAAkAgAiAETw0AIAVBBGogAyAEENsWIAAgBUEEaiABIAIQ5goMAQsgBUEEaiABIAIQ2xYgACAFQQRqIAMgBBDmCgsgBUEQaiQAC2QBAn8jAEEQayIBJAACQCAAKAIERQ0AAkAgACgCACICLQAADQAgAkEBOgAAIAAgACgCCEEBajYCCAsgAUEQaiQADwsgAUIANwIIQeT1gwFBKiABQQhqQajwgwFBkPaDARCjEgALZQEBfyMAQRBrIgIkACACIABBLGo2AgwgAUHzuIMBQQhB+7iDAUEIIABBGGpBMEGDuYMBQQkgAEGoAUGMuYMBQQsgAEEcakGpAUHUtoMBQQsgAkEMakEzENAMIQAgAkEQaiQAIAALZQEBfyMAQRBrIgIkACACIABBFGo2AgwgAUGcuYMBQQlB+7iDAUEIIABBDGpBMEG5u4MBQQcgAEHEAEHAu4MBQQggAEEQakH9AEHIu4MBQQkgAkEMakEzENAMIQAgAkEQaiQAIAALXQECf0EBIQMCQCACRQ0AAkACQAJAIAJBf2oiBCABTw0AIAAgBGotAABBdmoOBAMBAQIBCyAEIAFBiK2EARDAFAALQQAPCyACIAFPDQAgACACai0AAEEKRyEDCyADC2IBAX8jAEEQayICJAACQAJAIAAoAgBBAXFFDQAgAiAAQRBqNgIMIAFBia2cAUEEIAJBDGpB2wEQ8AshAAwBCyABKAIAQYWtnAFBBCABKAIEKAIMEQsAIQALIAJBEGokACAAC1wBAn8jAEEgayIEJAAgBEEANgIYIARBADoAHCAEQQA2AgwgBCAAQeACajYCFAJAA0AgBEEMahCWCiIFQf8BcUECRg0BIAAgASACIAUgAxCgCQwACwsgBEEgaiQAC18BAn8gACgCCCECAkACQCABQYABTw0AQQEhAwwBCwJAIAFBgBBPDQBBAiEDDAELQQNBBCABQYCABEkbIQMLIAAgAxDNIiABIAAoAgQgACgCCGoQzw0gACADIAJqNgIIC1wBAX8CQCAAKAIIIgMgACgCAEcNACAAIAIQvhoLIAAgA0EBajYCCCAAKAIEIANBGGxqIgAgASkCADcCACAAQQhqIAFBCGopAgA3AgAgAEEQaiABQRBqKQIANwIAC1wBAX8CQCAAKAIIIgMgACgCAEcNACAAIAIQwBoLIAAgA0EBajYCCCAAKAIEIANBFGxqIgAgASkCADcCACAAQQhqIAFBCGopAgA3AgAgAEEQaiABQRBqKAIANgIAC1kBAX8jAEEgayICJAAgAkEANgIQIAJBCGogASACQRBqEIwaIAJBFGogAigCCCACKAIMEIoXIABBCGogAkEUakEIaigCADYCACAAIAIpAhQ3AgAgAkEgaiQAC1wBAX8CQCAAKAIIIgMgACgCAEcNACAAIAIQvhoLIAAgA0EBajYCCCAAKAIEIANBGGxqIgAgASkCADcCACAAQQhqIAFBCGopAgA3AgAgAEEQaiABQRBqKQIANwIAC2ABAn8jAEEQayICJAACQAJAIAEtAABBA0YNAEEAIQEMAQsgAkEIaiABKAIEIgEoAgAgASgCBCgCGBEGACACKAIMIQMgAigCCCEBCyAAIAM2AgQgACABNgIAIAJBEGokAAtgAQJ/IwBBEGsiAiQAAkACQCABLQAAQQNGDQBBACEBDAELIAJBCGogASgCBCIBKAIAIAEoAgQoAiQRBgAgAigCDCEDIAIoAgghAQsgACADNgIEIAAgATYCACACQRBqJAALWQICfwF+A0ACQAJAIAFFDQAgACkDACIEQgODQgBSDQEgBKciAiACKAIAIgNBf2o2AgAgA0EBRw0BIAIgAigCEBCPIgwBCw8LIAFBf2ohASAAQRhqIQAMAAsLXAEBfwJAIAAoAggiAyAAKAIARw0AIAAgAhDTGwsgACADQQFqNgIIIAAoAgQgA0EYbGoiACABKQMANwMAIABBCGogAUEIaikDADcDACAAQRBqIAFBEGopAwA3AwALWgECfyMAQRBrIgIkAAJAAkAgACgCACIDQQFqQX5xIANGDQAgAkEIaiAAEJQfIAIoAgwhACACKAIIIQMMAQsgACgCCCEACyABIAMgABD/BSEDIAJBEGokACADC2YBAn8CQAJAQQAoAoDnngEiAUUNACAAIAEQkxYiAUEMaigCACICTw0BIAFBCGooAgAgAEEDdGooAgAhACABQQA6AAAgAA8LQYWOnAFByABBsI+cARC3KwALIAAgAkH4pZoBEMAUAAthAQJ/AkAgACgCCCICRQ0AIAAoAgQhAyACQShsIQIDQCADIAEQjA4gA0EoaiED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IwBBEGsiAiQAIAJBCGogAUGE8IQBENwTAkACQCACKAIMIgFFDQAgACACKAIIIgMgARC9ETYCGCAAIAE2AgggACADNgIEIABBATYCAAwBCyAAEJApCyACQRBqJAALYwEBfyMAQRBrIgIkAAJAAkAgACgCACIALQAAQQJGDQAgAiAANgIMIAFBia2cAUEEIAJBDGpBrAEQ8AshAQwBCyABKAIAQYWtnAFBBCABKAIEKAIMEQsAIQELIAJBEGokACABC2cBAX8jAEEQayICJAACQAJAIAAoAgAiACgCAEGAgICAeEYNACACIAA2AgwgAUGJrZwBQQQgAkEMakGWAhDwCyEBDAELIAEoAgBBha2cAUEEIAEoAgQoAgwRCwAhAQsgAkEQaiQAIAELXgEBfyMAQSBrIgMkACADQQhqIAAoAgBBCGpB5O6YARC4ISADKAIMIQAgA0EQaiADKAIIIAEQ5QkgA0EQahD+DiACQfTumAEQyBYgACAAKAIAQQFqNgIAIANBIGokAAteAQF/IwBBIGsiAyQAIANBCGogACgCBEEIakHU75gBELghIAMoAgwhACADQRBqIAMoAgggARDlCSADQRBqEP4OIAJB5O+YARDIFiAAIAAoAgBBAWo2AgAgA0EgaiQAC10BBH8gACgCBCEBAkAgACgCCCICRQ0AIAEhAwNAIAMQogcCQCADQTBqKAIAIgRFDQAgBBCRASAEQcAAQQgQ0hULIANBOGohAyACQX9qIgINAAsLIAAoAgAgARDNKgtdAQR/IAAoAgQhAQJAIAAoAggiAkUNACABIQMDQCADEKIHAkAgA0EwaigCACIERQ0AIAQQkQEgBEHAAEEIENIVCyADQThqIQMgAkF/aiICDQALCyAAKAIAIAEQzSoLWgEBfwJAIAFFDQAgAUEMbCEBA0ACQCAAKAIADQAgAEEEaigCACIDKAIAQQhHDQAgAygCKEGAgICAeEYNACACIANBKGoQwiQLIABBDGohACABQXRqIgENAAsLC2EBAX8jAEEQayICJAACQAJAIAAoAgBBAUcNACACIABBBGo2AgwgAUGJrZwBQQQgAkEMakGPAhDwCyEADAELIAEoAgBBha2cAUEEIAEoAgQoAgwRCwAhAAsgAkEQaiQAIAALWwECfwJAAkACQCAALQAsIgJBfWoiA0EBIANB/wFxQQNJG0H/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IAEoAgxPDQEgASADQQFqNgIICyAAIAI2AgQgACADNgIADwtByNqDARD4KQALYAEBfyMAQRBrIgIkACAAKAIAIQAgAiABKAIAQZDBgwFBCyABKAIEKAIMEQsAOgAMIAIgATYCCCACQQA6AA0gAkEANgIEIAJBBGogAEGvARDFCxDrECEBIAJBEGokACABC1oBAX9BASEDAkAgAiABRg0AAkACQAJAIAIgAU8NACAAIAJqIgEtAABBdmoOBAIBAQMBCyACIAFBmK2EARDAFAALQQAPCyACRQ0AIAFBf2otAABBDUchAwsgAwthAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAoAgBFDQAgAiAANgIMIAFBia2cAUEEIAJBDGpBvQEQ8AshAQwBCyABKAIAQYWtnAFBBCABKAIEKAIMEQsAIQELIAJBEGokACABC1MAIAAoAgxBDGwgACgClAFBA3RqIAAoAkQgACgCOGogACgCVGogACgCYGpBAnRqIAAoAqQBaiAAKAJoaiAAKAKIASAAKAJ8aiAAKAKYAWpBAnRqC14BAX8jAEEQayICJAACQCABKAIgRQ0AQbyghAEQjBkACyABQX82AiAgAkEANgIMIAJCgICAgMAANwIEIAAgAUEkaiACQQRqEPocIAEgASgCIEEBajYCICACQRBqJAALUwACQAJAIAFFDQACQAJAIAMgAUsNACADIAFHDQEMAgsgAiABaiwAAEG/f0oNAQtBACECDAELIAIgAWohAiADIAFrIQELIAAgATYCBCAAIAI2AgALXAEDfyMAQRBrIgMkACADQQhqIAJBAUEBQeC0nAEQlhggAygCCCEEIAMoAgwhBQJAIAJFDQAgBSABIAL8CgAACyAAIAI2AgggACAFNgIEIAAgBDYCACADQRBqJAALXAEDfyMAQRBrIgMkACADQQhqIAJBAUEBQeC0nAEQlxggAygCCCEEIAMoAgwhBQJAIAJFDQAgBSABIAL8CgAACyAAIAI2AgggACAFNgIEIAAgBDYCACADQRBqJAALWAECfyMAQRBrIgIkAAJAAkAgASgCACIBKAIAQQFGDQBBACEBDAELIAJBCGogAUEEahDFFiACKAIMIQMgAigCCCEBCyAAIAM2AgQgACABNgIAIAJBEGokAAtYAQJ/QQAhAgJAIAAoAgAoAgAiAygCACAAKAIEKAIA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cUUNACABLQDYAUH/AXFBPkcNABDnKgALIAJBCGogARDUAiACKAIMIQEgACACKAIINgIAIAAgATYCBCACQRBqJAALWQIBfwF+IwBBEGsiAyQAIANBCGogAiABKAIIIAFBABDdBgJAAkAgAy0ACEEERg0AIAMpAwgiBEL/AYNCBFENACAAIAQ3AgAMAQsgAEEEOgAACyADQRBqJAALXAEDfyMAQRBrIgMkACADQQhqIAJBAUEBQeC0nAEQ5xggAygCCCEEIAMoAgwhBQJAIAJFDQAgBSABIAL8CgAACyAAIAI2AgggACAFNgIEIAAgBDYCACADQRBqJAALVgEBfyMAQRBrIgUkACAFQQRqIAFBACACIAMQmQwgBSgCCCEDAkAgBSgCBEEBRw0AIAMgBSgCDCAEEMEmAAsgACAFKAIMNgIEIAAgAzYCACAFQRBqJAALWAECfyAAQRhqEIQiIABBDGoQhCIgACgCBCIBIAAoAggQsh8gACgCACABEIkqAkAgACgCHCIBRQ0AIAEgASgCACICQX9qNgIAIAJBAUcNACAAQRxqEIoSCwtRAQF/IwBBIGsiAiQAIAJBEGogACABEPUjIAIgAikDEDcCGEF/IQEDQCABQQFqIQEgAkEIaiACQRhqELoVIAIoAghBAXENAAsgAkEgaiQAIAELYwACQAJAIAEgAkHu0YABQQYQriMNAAJAIAEgAkH00YABQQgQriMNACAAIAEgAkH80YABQQIQ2RI2AgRBASECDAILIABBAToAAUEAIQIMAQtBACECIABBADoAAQsgACACOgAAC1QAAkAgASgCACIBQQFxRQ0AIAEgBBEEACEBAkAgA0UNACABIAIgA/wKAAALIAAgAzYCCCAAIAE2AgQgACADIAJqIAFrNgIADwsgACABIAIgAxCbFQtaAQF/IwBBIGsiBSQAAkAgAw0AIAVBADYCGCAFQQE2AgwgBUGcnoIBNgIIIAVCBDcCECAFQQhqIAQQtSEACyAAIAM2AgggACACNgIEIAAgATYCACAFQSBqJAALVgEBfyMAQRBrIgMkACADQQRqIAFBAEEEQQQQnQwgAygCCCEBAkAgAygCBEEBRw0AIAEgAygCDCACEMEmAAsgACADKAIMNgIEIAAgATYCACADQRBqJAALVgEBfyMAQRBrIgUkACAFQQRqIAFBACACIAMQnQwg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IABBpQFBxcGDAUELIABBMGpBpgFB1LaDAUELIAJBDGpBMxCRDSEAIAJBEGokACAAC1MBAn8jAEEQayIBJABBASAAdCECAkAgAEEfcUEbSQ0AIAEgAq03AwhByJGcAUErIAFBCGpBoIOEAUGUiYQBEKMSAAsgAUEQaiQAIAJBgICAgARyC1kBAX8gASgCDCECAkACQAJAAkAgASgCBA4CAAECCyACDQFBASEBQQAhAgwCCyACDQAgASgCACIBKAIEIQIgASgCACEBDAELIAAgARDgCQ8LIAAgASACEIoXC08BA38gASEDIAIhBAJAIAEoAogCIgVFDQAgAkEBaiEDIAEvAZADIQQLIAFByANBmAMgAhtBCBDSFSAAIAU2AgAgACAErUIghiADrYQ3AgQLUAECfyMAQRBrIgEkAAJAIAAoAhAiAkUNACABQQRqIAAoAgQgACgCCCACQQFqEJgRIAAoAgwgASgCDGsgASgCBCABKAIIEMYmCyABQRBqJAALWQEBfyABKAIMIQICQAJAAkACQCABKAIEDgIAAQILIAINAUEBIQFBACECDAILIAINACABKAIAIgEoAgQhAiABKAIAIQEMAQsgACABEOAJDwsgACABIAIQoBgLSwACQAJAAkAgAiADSw0AIAIgA0cNAQwCCyABIANqLAAAQb9/Sg0BCyABIAIgAyACIAQQjygACyAAIAIgA2s2AgQgACABIANqNgIAC1MBAX9BAC0A4OeeARoCQEEgEHwiAw0AAAsgAyABNgIEIAMgADYCACADIAIpAwA3AwggA0EQaiACQQhqKQMANwMAIANBGGogAkEQaikDADcDACADC1gBAX8jAEEQayICJAAgAiAAQRBqNgIMIAFBmJSbAUEDQfiNnAFBBCAAQQhqQYwCQfeSnAFBBSAAQaQCQbSUmwFBAyACQQxqQYoEEJENIQAgAkEQaiQAIAALTQECfwJAIAAoAggiAkUNACAAKAIEIgAgAkE4bGohAwNAIAAgARCLDgJAIABBMGooAgAiAkUNACABIAIQsygLIABBOGoiACADRw0ACwsLTQECfwJAIAAoAggiAkUNACAAKAIEIgAgAkE4bGohAwNAIAAgARCLDgJAIABBMGooAgAiAkUNACABIAIQsygLIABBOGoiACADRw0ACwsLTQECfwJAIAAoAggiAkUNACAAKAIEIgAgAkE4bGohAwNAIAAgARCMDgJAIABBMGooAgAiAkUNACABIAIQmwMLIABBOGoiACADRw0ACwsLTQECfwJAIAAoAggiAkUNACAAKAIEIgAgAkE4bGohAwNAIAAgARDVDQJAIABBMGooAgAiAkUNACACIAEQugMLIABBOGoiACADRw0ACwsLTQECfwJAIAAoAggiAkUNACAAKAIEIgAgAkE4bGohAwNAIAAgARCMDgJAIABBMGooAgAiAkUNACABIAIQmwMLIABBOGoiACADRw0ACwsLTQECfwJAIAAoAggiAkUNACAAKAIEIgAgAkE4bGohAwNAIAAgARDVDQJAIABBMGooAgAiAkUNACACIAEQugMLIABBOGoiACADRw0ACwsLWAEBfyMAQRBrIgIkACACIAA2AgwgAUGyg5sBQQlB+I2cAUEEIABBDGpBjAJBqJGbAUEEIABBFGpBjANBu4ObAUEFIAJBDGpBtgMQkQ0hACACQRBqJAAgAAtQAQJ/AkAgACgCCCICRQ0AIAAoAgQhAyACQThsIQIDQCADIAEQjBYgA0E4aiEDIAJBSGoiAg0ACwsCQCAAKAIUIgNFDQAgAygCACABEK0CCwtOAQJ/AkAgACgCCCICRQ0AIAAoAgQhAyACQShsIQIDQAJAIAMoAgBBB0YNACADIAEQ0BILIANBKGohAyACQVhqIgINAAsLIABBFGoQiCELTQECfwJAIAAoAggiAkUNACAAKAIEIgAgAkE4bGohAwNAIAAgARDQEgJAIABBMGooAgAiAkUNACABIAIQ5AELIABBOGoiACADRw0ACwsLTQECfwJAIAAoAggiAkUNACAAKAIEIgAgAkE4bGohAwNAIAAgARDQEgJAIABBMGooAgAiAkUNACABIAIQ5AELIABBOGoiACADRw0ACwsLdAEBfEQAAAAAAADwvyEBAkAgAL1C////////////AINC//////////f/AFUNACAAnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMb/ANBf3O3IQELIAELTQECfwJAIAAoAggiAkUNACAAKAIEIgAgAkE4bGohAwNAIAAgARCPDgJAIABBMGooAgAiAkUNACABIAIQ0QELIABBOGoiACADRw0ACwsLTQECfwJAIAAoAggiAkUNACAAKAIEIgAgAkE4bGohAwNAIAAgARCPDgJAIABBMGooAgAiAkUNACABIAIQ0QELIABBOGoiACADRw0ACwsLTQECfwJAIAAoAggiAkUNACAAKAIEIgAgAkE4bGohAwNAIAAgARD9CgJAIABBMGooAgAiAkUNACACIAEQowILIABBOGoiACADRw0ACwsLTQECfwJAIAAoAggiAkUNACAAKAIEIgAgAkE4bGohAwNAIAAgARD9CgJAIABBMGooAgAiAkUNACACIAEQowILIABBOGoiACADRw0ACwsLTQECfwJAIAAoAggiAkUNACAAKAIEIgAgAkE4bGohAwNAIAAgARCNDgJAIABBMGooAgAiAkUNACACIAEQ9wILIABBOGoiACADRw0ACwsLTQECfwJAIAAoAggiAkUNACAAKAIEIgAgAkE4bGohAwNAIAAgARCNDgJAIABBMGooAgAiAkUNACACIAEQ9wILIABBOGoiACADRw0ACwsLTQECfwJAIAAoAggiAkUNACAAKAIEIgAgAkE4bGohAwNAIAAgARCODgJAIABBMGooAgAiAkUNACACIAEQ/gILIABBOGoiACADRw0ACwsLTQECfwJAIAAoAggiAkUNACAAKAIEIgAgAkE4bGohAwNAIAAgARCODgJAIABBMGooAgAiAkUNACACIAEQ/gILIABBOGoiACADRw0ACwsLVAACQAJAAkAgAC0ABEEBRw0AAkACQCABKAIAQWZqDgMEAAEDCyABKAIIQQVGDQMMAgsgASgCDEUNASAAQQA6AAQLDwsgASAAELIDDwsgAEEAOgAEC00BAn8CQCAAKAIIIgJFDQAgACgCBCIAIAJBOGxqIQMDQCAAIAEQkA4CQCAAQTBqKAIAIgJFDQAgASACEKcBCyAAQThqIgAgA0cNAAsLC00BAn8CQCAAKAIIIgJFDQAgACgCBCIAIAJBOGxqIQMDQCAAIAEQkA4CQCAAQTBqKAIAIgJFDQAgASACEKcBCyAAQThqIgAgA0cNAAsLC00BAn8CQCAAKAIIIgJFDQAgACgCBCIAIAJBOGxqIQMDQCAAIAEQ5AoCQCAAQTBqKAIAIgJFDQAgASACEK0ZCyAAQThqIgAgA0cNAAsLC00BAn8CQCAAKAIIIgJFDQAgACgCBCIAIAJBOGxqIQMDQCAAIAEQ5AoCQCAA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CGogACgCBCgCACgCAEHai5wBELsoIAFBCGoQlCQhAgsgAUEQaiQAIAILQwEBfyABQQF2IQIgAUEcbCAAakFkaiEBAkADQCACRQ0BIAAgAUEHEKsdIAJBf2ohAiAAQRxqIQAgAUFkaiEBDAALCwtHAQR/IAEgASACIAMQ5RIiBGoiBS0AACEGIAUgA6dBGXYiBzoAACABIAIgBEF4anFqQQhqIAc6AAAgACAGOgAEIAAgBDYCAAtQAQF/IwBBEGsiAyQAIANBCGogAiABIAEoAgwoAgAgASgCEC0AACABKAIULQAAEPUIIAMoAgwhASAAIAMoAgg2AgAgACABNgIEIANBEGokAAtRAQF/IABBBGoiASgCACAAQQhqKAIAEOYiIAAoAgAgASgCABDKKiAAQQxqEMolIABBGGoQ2icgACgCPBCxIiAAQcAAahDQKCAAQcgAQQQQ0hULTAEBfwJAIAAoAggiAyAAKAIARw0AIAAgAhDXGwsgACADQQFqNgIIIAAoAgQgA0EEdGoiACABKQIANwIAIABBCGogAUEIaikCADcCAAtRAQF/IABBBGoiASgCACAAQQhqKAIAEOYiIAAoAgAgASgCABDKKiAAQQxqEMolIABBGGoQ2icgACgCPBCxIiAAQcAAahDcKCAAQcgAQQQQ0hULUAEBfyMAQRBrIgIkACACQQhqIAEgASgCACgCBBEGACACIAIoAgggAigCDCgCGBEGACACKAIEIQEgACACKAIANgIAIAAgATYCBCACQRBqJAALUQEBfyAAQQRqIgEoAgAgAEEIaigCABDmIiAAKAIAIAEoAgAQyiogAEEMahDKJSAAQRhqENonIAAoAjwQsSIgAEHAAGoQ4SggAEHIAEEEENIVC00AAkACQCABIAIQ6w9FDQAgACEBDAELIAAgASkCADcCACAAQRBqIAFBEGopAgA3AgAgAEEIaiABQQhqKQIANwIACyABQYGAgIB4NgIAC08BA38gACgCCCEBIAAoAgQiAiEDAkADQCABRQ0BAkAgAygCAEGVgICAeEYNACADEPcoCyABQX9qIQEgA0EgaiEDDAALCyAAKAIAIAIQkioLRAEBfyMAQRBrIgIkACACIAAgAUGAAXFBA3ZqIgApAwAgAEEIaikDACABQf8AcRC2FSACKAIAIQEgAkEQaiQAIAFBAXELRgEBfyMAQRBrIgIkACACIAE2AgwgAiAANgIIQX8hAQNAIAFBAWohASACIAJBCGoQuhUgAigCAEEBcQ0ACyACQRBqJAAgAQtMAQF/AkACQCABQYABTw0AQQEhAwwBCwJAIAFBgBBPDQBBAiEDDAELQQNBBCABQYCABEkbIQMLIAEgAhDPDSAAIAM2AgQgACACNgIAC0oBAX8CQCAAKAIIIgIgACgCAEcNACAAEMQbCyAAIAJBAWo2AgggACgCBCACQQR0aiIAIAEpAwA3AwAgAEEIaiABQQhqKQMANwMAC08BAn8gACgCBCECIAAoAgAhAwJAIAAoAggiAC0AAEUNACADQYyRnAFBBCACKAIMEQsARQ0AQQEPCyAAIAFBCkY6AAAgAyABIAIoAhARBwALRgECfyMAQRBrIgMkACABIAIQIiECIANBCGoQkCIgAygCDCEBIAAgAygCCEEBcSIENgIAIAAgASACIAQbNgIEIANBEGokAAtNAQF/QQEhAgJAAkAgAEH/AXFBAUYNACABIQICQAJAAkAgAUH/AXEOAwADAQALIABB/wFxDQEMAwsgAEH/AXENAgtBACECCyACDwtBAgtKAQF/AkAgACgCCCICIAAoAgBHDQAgABDpGgsgACACQQFqNgIIIAAoAgQgAkEMbGoiACABKQIANwIAIABBCGogAUEIaigCADYCAAtRAQF/AkAgACgCAEEDRg0AIAAoAiQiASABKAIAIgFBf2o2AgACQCABQQFHDQAgACgCJBCpEgsgACgCDCAAKAIQEKAqIAAoAhggACgCHBChKgsLXgEBfyABKAIAIgEgASgCACICQQFqNgIAAkAgAkF/Sg0AAAsgACABEJEYIABBgICAgHg2AtQFIABBgICAgHg2AugEIABBgICAgHg2AtgEIABBAjYCyAQgAEECNgLIAQteAQF/IAEoAkgiASABKAIAIgJBAWo2AgACQCACQX9KDQAACyAAIAEQkRggAEGAgICAeDYC1AUgAEGAgICAeDYC6AQgAEGAgICAeDYC2AQgAEECNgLIBCAAQQI2AsgBC18BAX8gASgCkAMiASABKAIAIgJBAWo2AgACQCACQX9KDQAACyAAIAEQkRggAEGAgICAeDYC1AUgAEGAgICAeDYC6AQgAEGAgICAeDYC2AQgAEECNgLIBCAAQQI2AsgBC18BAX8gASgCgAIi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AgAhACACQQA2AgwgAiABIAJBDGoQggwgACACKAIAIAIoAgQQ6QwgAkEQaiQAQQALPgEBfwNAAkAgAg0ADwsgACgAACEDIAAgASgAADYAACABIAM2AAAgAkF/aiECIAFBBGohASAAQQRqIQAMAAsLPgEBfwNAAkAgAg0ADwsgACgAACEDIAAgASgAADYAACABIAM2AAAgAkF/aiECIAFBBGohASAAQQRqIQAMAAsLOgEBfwJAIABBf0YNACAAIAAoAgQiAkF/ajYCBCACQQFHDQAgAUELakF8cSIBRQ0AIAAgAUEEENIVCws+AQF/IwBBEGsiAiQAIAIgAEECajYCDCABQarBgwEgAEGaASAAQQFqQZoBIAJBDGoQnwYhACACQRBqJAAgAAs+AQF/IwBBEGsiAyQAIANBDGogAkEIaigCADYCACADQQI2AgAgAyACKQIANwIEIAAgASADELEMIANBEGokAAs+AQF/IwBBEGsiAyQAIANBDGogAkEIaigCADYCACADQQY2AgAgAyACKQIANwIEIAAgASADELEMIANBEGokAAs+AQF/QQAhBgJAIAQgA08NACABLQAAIAIgBGotAABHDQAgACAENgIEQQEhBiAAIARBAWo2AggLIAAgBjYCAAtAAQF/AkAgACgCCCIEIAAoAgBHDQAgACADEL0aCyAAIARBAWo2AgggACgCBCAEQQN0aiIAIAI2AgQgACABNgIAC0EBAX9BGBCsJSICQRBqIAFBEGopAgA3AgAgAkEIaiABQQhqKQIANwIAIAIgASkCADcCACAAIAI2AgQgAEEANgIACzYBAX8gACABQb9/akFfcUEKaiABQVBqIgMgAkEKSxsgAyABQTlLGyIBNgIEIAAgASACSTYCAAtAAQF/AkAgACgCCCIEIAAoAgBHDQAgACADEOAaCyAAIARBAWo2AgggACgCBCAEQQF0aiIAIAI6AAEgACABOgAAC0ABAX8CQCAAKAIIIgQgACgCAEcNACAAIAMQvRoLIAAgBEEBajYCCCAAKAIEIARBA3RqIgAgAjYCBCAAIAE2AgALQAEBfwJAIAAoAggiBCAAKAIARw0AIAAgAxDgGgsgACAEQQFqNgIIIAAoAgQgBEEBdGoiACACOgABIAAgAToAAAs+AQF/A0ACQCACDQAPCyAAKAAAIQMgACABKAAANgAAIAEg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OgAACz8BAn8CQAJAIAEoAgAiAiABKAIEIgNHDQAMAQsgASACQQFqNgIAIAItAAAhAQsgACABOgABIAAgAiADRzoAAAtBAQF/IAEgASgCCCIEQQFqNgIIAkAgBEEASA0AIAAgATYCDCAAIAM2AgggACACNgIEIABBtNmAATYCAA8LELgtAAs4AQJ/AkAgAFANACAAQgODUEUNACAApyIBIAEoAgAiAkF/ajYCACACQQFHDQAgASABKAIQEI8iCws8AQF/IwBBEGsiAyQAIANBADYCDCADIAIgA0EMahCaESAAIAEgAygCACADKAIEELUjIQIgA0EQaiQAIAILRAEBfyAAKAIAIQACQCABKAIIIgJBgICAEHENAAJAIAJBgICAIHENACAAIAEQ9g0PCyAALQAAIAEQ5xEPCyAAIAEQrBELOwACQCACIAAgA0H/AXFqLQBAaiIDIAAoAggiAkkNACADIAJBiLqDARDAFAALIAAoAgQgA0ECdGooAgALQAEDfwJAIAEoAhQiAiABKAIMIgNPDQAgASgCCCACai0AACEECyAAIAQ6AAkgACACIANJOgAIIAAgASkCADcCAAs8AQJ/IAAgAhDcIiAAKAIIIQMCQCACQQN0IgRFDQAgACgCBCADQQN0aiABIAT8CgAACyAAIAMgAmo2AggLPAECfyAAIAIQ3SIgACgCCCEDAkAgAkEBdCIERQ0AIAAoAgQgA0EBdGogASAE/AoAAAsgACADIAJqNgIICzwBAX8jAEEQayIDJAAgA0EANgIMIAMgAiADQQxqEPILIAAgASADKAIAIAMoAgQQyhkhAiADQRBqJAAgAgs+AQF/AkAgACgCCCIDIAAoAgBHDQAgABDqGgsgACADQQFqNgIIIAAoAgQgA0EDdGoiACACNgIEIAAgATYCAAtGAgJ/AX4gAEEIQQkgAb0iBEJ/VSICG0EDIARC/////////weDUCIDGzYCBCAAQf+hmwFBtOaXASACG0H8oZsBIAMbNgIAC0ACAX8BfkG4154BEMosGgJAQQApA7jXngEiAUIDg0IAUg0AIAGnIgAgACgCACIAQQFqNgIAIABBf0oNAAALIAELPgEDfyAAKAIEIQECQCAAKAIIIgJFDQAgASEDA0AgAxDVAiADQTBqIQMgAkF/aiICDQALCyAAKAIAIAEQyCoLPwECfwJAIAAo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QQA2AgggACADNwIAIAJBEGokAAs6AQF/IwBBEGsiAiQAIAJBADYCDCACIAEgAkEMahCMGiAAIAIoAgAgAigCBBC4AiEBIAJBEGokACABCzkBAX8gACACIAFrIgIQwSIgACgCCCEDAkAgAkUNACAAKAIEIANqIAEgAvwKAAALIAAgAyACajYCCAtAAQF/AkAgASgCCCICQYCAgBBxDQACQCACQYCAgCBxDQAgACABEPwpDwsgACgCACABEIYSDwsgACgCACABEIcSCzwBAX8jAEEQayICJAAgAiAAKAIANgIMIAFB/oKEAUEPQd2PhAFBCSACQQxqQR0QoQ4hACACQRBqJAAgAAs8AQF/IwBBEGsiAiQAIAIgACgCADYCDCABQYKXgAFBDkHH04QBQQMgAkEMakEkEKEOIQAgAkEQaiQAIAALMAACQCAAQb9/akH/AXFBGkkNACAAQd8AcSAAIABBn39qQf8BcUEaSRsPCyAAQSByC0ABAX8CQCABKAIIIgJBgICAEHENAAJAIAJBgICAIHENACAAIAEQhSIPCyAAKAIAIAEQixIPCyAAKAIAIAEQjBILPAACQCACRQ0AQQAtAODnngEaAkAgAw0AIAIgARDiJCEBDAELIAIgARDZGSEBCyAAIAI2AgQgACABNgIACzkAAkAgAkGAgMQARg0AIAAgAiABKAIQEQcARQ0AQQEPCwJAIAMNAEEADwsgACADIAQgASgCDBELAAsuAAJAIAEgA0YNACABIANLIAEgA0lrDwsgACAAIAFBAnQiAWogAiACIAFqENsUCzwAAkAgAkUNAEEALQDg554BGgJAIAMNACACIAEQ4iQhAQwBCyACIAEQ2RkhAQsgACACNgIEIAAgATYCAAs5AQF/IAAgAiABayICEM0iIAAoAgghAwJAIAJFDQAgACgCBCADaiABIAL8CgAACyAAIAMgAmo2AggLQAEBfwJAIAEoAggiAkGAgIAQcQ0AAkAgAkGAgIAgcQ0AIAAgARD8KQ8LIAAoAgAgARCGEg8LIAAoAgAgARCHEgtAACABQegEaiAAKAKwChDAISABQdQFaiAAKALIChDsISABQdgEaiAAKALkCiAAKAKICxCAISABQdgBaiAAEI8cC0AAIAFB6ARqIAAoArAKEMAhIAFB1AVqIAAoAsgKEOwhIAFB2ARqIAAoAuQKIAAoAogLEIAhIAFB2AFqIAAQjxwLQAAgAUHoBGogACgCsAoQwCEgAUHUBWogACgCyAoQ7CEgAUHYBGogACgC5AogACgCiAsQgCEgAUHYAWogABCPHAs8AQF/IwBBEGsiAiQAIAIgACgCADYCDCABQf6ChAFBD0Hdj4QBQQkgAkEMakEdEKEOIQAgAkEQaiQAIAALOQEBfwJAIAEgACgCPHZBfmoiASAAKAIUIgJJDQAgASACQci6gwEQwBQACyAAKAIQIAFBDGxqKAIICz0BAX8jAEEQayICJAAgAiAAKAIANgIMIAFB5o+EAUEHQe2PhAFBBCACQQxqQckBEKEOIQAgAkEQaiQAIAALPQEBfyMAQRBrIgIkACACIAAoAgA2AgwgAUG/4ocBQQpBw7KcAUEDIAJBDGpB5gEQoQ4hACACQRBqJAAgAAs9AQF/IwBBEGsiAiQAIAIgACgCADYCDCABQbPihwFBDEHDspwBQQMgAkEMakH4ARChDiEAIAJBEGokACAACzgAIAAgASkCADcCACABQQA2AgAgAEEQaiABQRBqKQIANwIAIABBCGogAUEIaikCADcCACABEJooCzwBAX9BEEEEEOokIQIgAEEBNgIIIAAgAjYCBCAAQQE2AgAgAkEIaiABQQhqKQIANwIAIAIgASkCADcCAAs1AQJ/IwBBEGsiASQAQX8hAgNAIAFBCGogABCLByACQQFqIQIgASgCCA0ACyABQRBqJAAgAgs5AQF/IAAgAiABayICEN4iIAAoAgghAwJAIAJFDQAgACgCBCADaiABIAL8CgAACyAAIAMgAmo2AggLQAEBfwJAIAEoAggiAkGAgIAQcQ0AAkAgAkGAgIAgcQ0AIAAgARCFIg8LIAAoAgAgARCLEg8LIAAoAgAgARCMEgs5AQF/IwBBEGsiAiQAIAJBCGogABCcFSACKAIIIAIoAgwgASgCACABKAIEEOgDIQEgAkEQaiQAIAELNAECfyMAQRBrIgIkACACQQA2AgwgACABIAJBDGoQhh0gAigCDCEDIAJBEGokACADQQ93rQszAAJAIABCA4NCAFINACAApykDCCEACyAAp0Hdy92eeWwgAEIgiKdqQd3L3Z55bEEPd60LOQEBfyAAIAIgAWsiAhDfIiAAKAIIIQMCQCACRQ0AIAAoAgQgA2ogASAC/AoAAAsgACADIAJqNgIICzUBAX9BACECA38CQAJAIAEgAkYNACAAIAJqLQAAQTBGDQEgAiEBCyABDwsgAkEBaiECDAALCz0BAX8jAEEQayICJAAgAiAAKAIANgIMIAFB5KycAUEFQY+BnAFBBSACQQxqQasCEKEOIQAgAkEQaiQAIAALPQEBfyMAQRBrIgIkACACIAAoAgA2AgwgAUH4s5wBQQdB+I2cAUEEIAJBDGpBjwIQoQ4hACACQRBqJAAgAAs9AQF/IwBBEGsiAiQAIAIgACgCADYCDCABQcjkmgFBBUH4jZwBQQQgAkEMakGPAhChDiEAIAJBEGokACAACz0BAX8jAEEQayICJAAgAiAAKAIANgIMIAFBkeWaAUEIQfiNnAFBBCACQQxqQY8CEKEOIQAgAkEQaiQAIAALPQEBfyMAQRBrIgIkACACIAAoAgA2AgwgAUHthJsBQQpB+I2cAUEEIAJBDGpBjwIQoQ4hACACQRBqJAAgAAs2AQJ/IwBB4ABrIgIkACACQQxqIABBLGoiAxDtDCABIAAQ4BwgAyACQQxqEKQDIAJB4ABqJAALPQEBfyMAQRBrIgIkACACIAAoAgA2AgwgAUH39poBQQlB+I2cAUEEIAJBDGpBjwIQoQ4hACACQRBqJAAgAAs9AQF/IwBBEGsiAiQAIAIgACgCADYCDCABQZP4mgFBDEH4jZwBQQQgAkEMakGPAhChDiEAIAJBEGokACAACzkBAX8jAEEQayICJAACQCABLQAUQQJGDQAgAiABEKkcIAAgAikDACACKAIIQQEQpAwLIAJBEGokAAs9AQF/IwBBEGsiAiQAIAIgACgCADYCDCABQan+mgFBFkHr/ZoBQQggAkEMakH4AhChDiEAIAJBEGokACAACzwBAX8CQCAAKAIAIgBFDQAgAEEEaiIBKAIAIABBCGooAgAQmxggACgCACABKAIAEMMqIABBFEEEENIVCws9AQF/IwBBEGsiAiQAIAIgACgCADYCDCABQdCUmwFBDEH4jZwBQQQgAkEMakGPAhChDiEAIAJBEGokACAACz0BAX8jAEEQayICJAAgAiAAKAIANgIMIAFB/ZWbAUESQfiNnAFBBCACQQxqQY8CEKEOIQAgAkEQaiQAIAALPQEBfyMAQRBrIgIkACACIAAoAgA2AgwgAUGgu5sBQQRB+I2cAUEEIAJBDGpBjwIQoQ4hACACQRBqJAAgAAtGAQF/AkAgASgCiAEiAkGAgIAEcQ0AIAEgAkGAgIAEcjYCiAEgACABEMEDIAEgASgCiAFB////e3E2AogBDwsgACABEMEDCz4AIAAQ7iUgAEEMahDKJQJAIAAoAhhBgICAgHhGDQAgAEEYahDJJQsgACgCPBDJKSAAQcAAahDDKCAAEI0sC0ABAX8CQCABKAKIASICQcAAcQ0AIAEgAkHAAHI2AogBIAAgARCjHiABIAEoAogBQb9/cTYCiAEPCyAAIAEQox4LNwEBfyAAKAIIQQJ0IQIgACgCBCEAAkADQCACRQ0BIAAgARCYLCACQXxqIQIgAEEEaiEADAALCws3AQF/IAAoAghBMGwhAiAAKAIEIQACQANAIAJFDQEgACABEMEEIAJBUGohAiAAQTBqIQAMAAsLCzcBAX8gACgCCEECdCECIAAoAgQhAAJAA0AgAkUNASAAIAEQlywgAkF8aiECIABBBGohAAwACwsLNwEBfyAAKAIIQTBsIQIgACgCBCEAAkADQCACRQ0BIAAgARCcBiACQVBqIQIgAEEwaiEADAALCws3AQF/IAAoAghBMGwhAiAAKAIEIQACQANAIAJFDQEgACABEL8iIAJBUGohAiAAQTBqIQAMAAsLCzcBAX8gACgCCEECdCECIAAoAgQhAAJAA0AgAkUNASAAIAEQvgQgAkF8aiECIABBBGohAAwACwsLNwEBfyAAKAIIQShsIQIgACgCBCEAAkADQCACRQ0BIAAgARDECiACQVhqIQIgAEEoaiEADAALCws3AQF/IAAoAghBKGwhAiAAKAIEIQACQANAIAJFDQEgACABEMUcIAJBWGohAiAAQShqIQAMAAsLCzcBAX8gACgCCEEMbCECIAAoAgQhAAJAA0AgAkUNASAAIAEQlywgAkF0aiECIABBDGohAAwACwsLNwEBfyAAKAIIQQxsIQIgACgCBCEAAkADQCACRQ0BIAAgARCWLCACQXRqIQIgAEEMaiEADAALCws3AQF/IAAoAghBDGwhAiAAKAIEIQACQANAIAJFDQEgACABEJgsIAJBdGohAiAAQQxqIQAMAAsLCzoBAX8gACgCDCAAQRBqKAIAEP4qAkAgAEF/Rg0AIAAgACgCBEF/aiIBNgIEIAENACAAQRhBBBDSFQsLLgACQCABIANGDQAgASADSyABIANJaw8LIAAgACABQQJ0IgFqIAIgAiABahDbFAszAQF/QQAhAgJAIAFFDQADQCACIAAsAABBv39KaiECIABBAWohACABQX9qIgENAAsLIAILNAEBfyMAQRBrIgUkACAFQQhqIAMgBBDbJiAFKAIMIQQgACABIAIQhwUgBBALIAVBEGokAAs5AQF/IwBBEGsiBSQAIAUgAjYCDCAFIAE2AgggACAFQQhqQbyqgAEgBUEMakG8qoABIAMgBBCqCAALOQEBfyMAQRBrIgIkACACIAA2AgwgAUH+goQBQQ9B3Y+EAUEJIAJBDGpBHRChDiEAIAJBEGokACAACzkBAX8jAEEQayIFJAAgBSACNgIMIAUgATYCCCAAIAVBCGpBtJeBASAFQQxqQbSXgQEgAyAEEKoIAAs8AQF/IwBBEGsiAyQAIAMgADYCDCADQcTwmAE2AghBACADQQhqQdyqgAEgA0EMakHcqoABIAEgAhCqCAALMgEBfkIAIQICQANAIAFFDQEgAUF/aiEBQgEgADEAAIYgAoQhAiAAQQFqIQAMAAsLIAILPQEBfwJAIAEoAggiAkGAgIAQcQ0AAkAgAkGAgIAgcQ0AIAAgARD2DQ8LIAAtAAAgARDnEQ8LIAAgARCsEQs5AQF/IwBBEGsiAiQAIAIgADYCDCABQcyXgAFBDUGcl4ABQQUgAkEMakEkEKEOIQAgAkEQaiQAIAALNwEBfwJAIAAoAggiAyAAKAIARw0AIAAgAhCzGgsgACADQQFqNgIIIAAoAgQgA0ECdGogATYCAAs/AQF/IwBBEGsiAiQAIAIgADYCDCACQcTwmAE2AghBACACQQhqQcyqgAEgAkEMakHMqoABIAFB4KeAARCqCAALPwEBfyAAKAIAIAAoAgQQhSogACgCECIBIAAoAhQQ9SAgACgCDCABEIkqIAAoAhggACgCHBCFKiAAQShqELYhCz8BAX8jAEEQayICJAAgAiAANgIMIAJBiNSEATYCCEEAIAJBCGpBvLiAASACQQxqQby4gAEgAUHg14QBEKoIAAs5AQF/IwBBEGsiBCQAIAQgATYCDCAEIAA2AghBACAEQQhqQYjJmAEgBEEMakGIyZgBIAIgAxCqCAALNgEBfyMAQRBrIgIkACACQQA2AgwgAiABIAJBDGoQggwgACACKAIAIAIoAgQQ6QwgAkEQaiQACzwBAX8jAEEQayIDJAAgAyABNgIMIAMgADYCCEEAIANBCGpBxJeBASADQQxqQcSXgQEgAkH0gYEBEKoIAAs2AQF/IwBBEGsiASQAIAFBwAAQmwwgAEEIaiABQQhqKQIANwIAIAAgASkCADcCACABQRBqJAALNwEBfwJAIAAoAggiAyAAKAIARw0AIAAgAhCMHAsgACADQQFqNgIIIAAoAgQgA0ECdGogATYCAAs1AQF/IwBBEGsiAiQAIAJBCGogAUEIaigCADYCACACIAEpAgA3AwAgACACEK4LIAJBEGokAAs/AQF/IwBBEGsiAiQAIAJBxPCYATYCDCACIAA2AghBACACQQhqQcDJggEgAkEMakHAyYIBIAFB0JqCARCqCAALNwEBfwJAIAAoAggiAyAAKAIARw0AIAAgAhCMHAsgACADQQFqNgIIIAAoAgQgA0ECdGogATYCAAssAAJAIAEgA0YNACABIANLDwsgACAAIAFBAnQiAWogAiACIAFqENsUwEEASgs5AQF/AkAgAC0ADEECRg0AIAAoAgAiASABKAIAIgFBf2o2AgAgAUEBRw0AIAAoAgAgACgCBBCoEgsLPwEBfyMAQRBrIgIkACACIAA2AgwgAkHE8JgBNgIIQQAgAkEIakHI8IMBIAJBDGpByPCDASABQbiogwEQqggACzoBAX8jAEEQayICJAAgAiAANgIMIAFB0KaDAUEPQd+mgwFBBCACQQxqQZ0BEKEOIQAgAkEQaiQAIAALPQEBfwJAIAEoAggiAkGAgIAQcQ0AAkAgAkGAgIAgcQ0AIAAgARD2DQ8LIAAtAAAgARDnEQ8LIAAgARCsEQs5AQF/IwBBEGsiAiQAIAIgADYCDCABQbHBgwFBBkG3wYMBQQYgAkEMakE0EKEOIQAgAkEQaiQAIAALOgEBfyMAQRBrIgIkACACIAA2AgwgAUGQwYMBQQtBm8GDAUECIAJBDGpBrgEQoQ4hACACQRBqJAAgAAs6AQF/IwBBEGsiAiQAIAIgADYCDCABQZ6ngwFBDkGMjpsBQQQgAkEMakGwARChDiEAIAJBEGokACAACzUBAX8jAEEQayICJAAgAiABNgIMIAIgADYCCCACQQM6AAQgAkEEahCvICEBIAJBEGokACABCzkBAX8jAEEQayICJAAgAiAANgIMIAFB/oKEAUEPQd2PhAFBCSACQQxqQR0QoQ4hACACQRBqJAAgAAs3AAJAAkAgAUUNACABQQRNDQEgACgAAQ8LQQFBAEHor4QBEIYqAAtBBCABQX9qQZishAEQhyoACzUBAX8jAEEQayICJAAgAiABNgIIIAIgADoABSACQQA6AAQgAkEEahCvICEBIAJBEGokACABCzoBAX8jAEEQayICJAAgAiAANgIMIAFB5o+EAUEHQe2PhAFBBCACQQxqQckBEKEOIQAgAkEQaiQAIAALOQEBfyMAQRBrIgQkACAEIAE2AgwgBCAANgIIQQAgBEEIakG48IMBIARBDGpBuPCDASACIAMQqggACzkBAX8jAEEQayICJAAgAiAANgIMIAFBzY+EAUEQQd2PhAFBCSACQQxqQR0QoQ4hACACQRBqJAAgAAs3AAJAAkAgAUUNACABQQRNDQEgACgAAQ8LQQFBAEGYr4QBEIYqAAtBBCABQX9qQZishAEQhyoACzABAX9BASECAkAgAUUNACAAIAFBA3RqIgFBeGpFDQAgAUF8aigCAEGAAUkhAgsgAgs5AQF/IwBBEGsiBCQAIAQgATYCDCAEIAA2AghBACAEQQhqQbyEiAEgBEEMakG8hIgBIAIgAxCqCAALOgEBfyMAQRBrIgIkACACIAA2AgwgAUHol5kBQQ1BjI6bAUEEIAJBDGpB5QEQoQ4hACACQRBqJAAgAAsvAQF/QQEhAgJAIAFFDQAgACABQQF0aiIBQX5qRQ0AIAFBf2osAABBf0ohAgsgAgs6AQF/IwBBEGsiAiQAIAIgADYCDCABQeiXmQFBDUGMjpsBQQQgAkEMakHlARChDiEAIAJBEGokACAACzYBAX8jAEEQayICJAAgAkEIaiABEIwXIAIoAgwhASAAIAIoAgg2AgAgACABNgIEIAJBEGokAAs4AQJ/IAEtAAAiAkEBdiEDAkAgAkEYSQ0AIANBC0Hwx5gBEIcqAAsgACADNgIEIAAgAUEBajYCAAs+AQF/IwBBEGsiASQAAkAgAEH/////B0kNAEHIkZwBQSsgAUEPakH8xpgBQeTImAEQoxIACyABQRBqJAAgAAs1AQF/IAAoAgAoAgAiAikDACAAKAIEKAIAIAFBBXRrQWBqIgApAwCFIAIpAwggACkDCIWEUAs1AQF/IAAoAgAoAgAiAikDACAAKAIEKAIAIAFBBHRrQXBqIgApAwCFIAIpAwggACkDCIWEUAs5AQF/IwBBEGsiBCQAIAQgATYCDCAEIAA2AghBASAEQQhqQfjymAEgBEEMakH48pgBIAIgAxCqCAALPAECfyAAKAIEIQIgASAAKAIIIgMQ8RAgAiADIAEQ+B0gACgCECECIAEgACgCFCIAEPEQIAIgACABELwMCzcBAX8CQCAAKAIIIgMgACgCAEcNACAAIAIQ0hsLIAAgA0EBajYCCCAAKAIEIANBAnRqIAE2AgALPwEBfyMAQRBrIgIkACACQcTwmAE2AgwgAiAANgIIQQEgAkEIakGI85gBIAJBDGpBiPOYASABQZjxmAEQqggACzMAIAEoAgBBACACa0EMbGoiAkF0aigCAEHdy92eeWwgAkF4aigCAGpB3cvdnnlsQQ93rQs0AQJ/AkAgAEIDg0IAUg0AIACnIgEgASgCACICQX9qNgIAIAJBAUcNACABIAEoAhAQjyILCzQBAn8CQCAAQgODQgBSDQAgAKciASABKAIAIgJBf2o2AgAgAkEBRw0AIAEgASgCEBCPIgsLNAECfwJAIABCA4NCAFINACAApyIBIAEoAgAiAkF/ajYCACACQQFHDQAgASABKAIQEI8iCws6AQF/IwBBEGsiAiQAIAIgADYCDCABQaCSmgFBD0GMjpsBQQQgAkEMakGqAhChDiEAIAJBEGokACAACzoBAX8CQCAAKAIIIgIgACgCAEcNACAAQYCWmgEQ0hsLIAAgAkEBajYCCCAAKAIEIAJBAnRqIAE2AgALOgEBfyMAQRBrIgIkACACIAA2AgwgAUGgkpoBQQ9BjI6bAUEEIAJBDGpBqgIQoQ4hACACQRBqJAAgAAs6AQF/IwBBEGsiAiQAIAIgADYCDCABQcjkmgFBBUH4jZwBQQQgAkEMakGPAhChDiEAIAJBEGokACAACzYAAkAgAC0ANEEERg0AIAEgABC0EQ8LAkAgAC0AFEECRg0AIAEgABD0Eg8LIAEgACgCABDOIAs0AQJ/AkAgAEIDg0IAUg0AIACnIgEgASgCACICQX9qNgIAIAJBAUcNACABIAEoAhAQjyILCzoBAX8jAEEQayICJAAgAiAANgIMIAFBj5abAUESQfiNnAFBBCACQQxqQY8CEKEOIQAgAkEQaiQAIAALNgEBfyMAQRBrIgEkACABQQA2AgggAUGBAjsBDCABQQhqIAAQrRkgAS0ADCEAIAFBEGokACAACzcBAX8CQCAAKAIIIgMgACgCAEcNACAAIAIQ0hsLIAAgA0EBajYCCCAAKAIEIANBAnRqIAE2AgALMwEBfyMAQTBrIgIkAAJAQShFDQAgAkEIaiABQSj8CgAACyAAIAJBCGoQzA4gAkEwaiQACzQBAn8CQCAAQgODQgBSDQAgAKciASABKAIAIgJBf2o2AgAgAkEBRw0AIAEgASgCEBCPIgsLMwEBfyAAIAFBDEEUIAEoAgBBfmpBA0kiAhtqKAIANgIEIAAgAUEIQRAgAhtqKAIANgIACzoBAX8CQAJAIAEoAgBBE0cNACABKAIEIQFBASECDAELQQAhAiABEKAkIQELIAAgATYCBCAAIAI2AgALRgAgAEEEahCpJQJAIAFC+IKZvZXuxsW5f1INACACQu26rbbNhdT14wBSDQAgACgCJCAAQShqKAIAEMUsCyAAQThBBBDSFQs0AQJ/AkAgAEIDg0IAUg0AIACnIgEgASgCACICQX9qNgIAIAJBAUcNACABIAEoAhAQjyILCzcAIAAgASkCADcCACABQYGAgIB4NgIAIABBEGogAUEQaikCADcCACAAQQhqIAFBCGopAgA3AgALMwAgAEEBNgIEIABBACABKAIEIAEoAgBrQRhuIAEoAgwgASgCCEYbIgE2AgggACABNgIACzcBAX8jAEEgayIBJAAgAUEANgIYIAFBATYCDCABQcCFggE2AgggAUIENwIQIAFBCGogABC1IQALMQACQANAIAFFDQEgACgCACAAQQRqKAIAQQRBCBC4FSABQX9qIQEgAEEMaiEADAALCws9AQF/IABBBGoiAygCACAAQQhqIgAoAgAgAUHwtIABEI0jKAIIIAMoAgAgACgCACACQYC1gAEQjSMoAghLCzoBAX8CQCABKAIIIgJBgICAEHENAAJAIAJBgICAIHENACAAIAEQ/CkPCyAAIAEQuREPCyAAIAEQuhELOgEBfyMAQSBrIgAkACAAQQA2AhggAEEBNgIMIABB2JyBATYCCCAAQgQ3AhAgAEEIakGQnYEBELUhAAs3AQF/IwBBIGsiASQAIAFBADYCGCABQQE2AgwgAUHcppsBNgIIIAFCBDcCECABQQhqIAAQtSEACzcBAX8jAEEgayIBJAAgAUEANgIY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QQhBwAAQqSkiAQ0AAAsgAUEwNgIAIAEgACkCADcCBCABQQxqIABBCGopAgA3AgAgAQs3AQF/AkBBCEHAABCpKSIBDQAACyABQS02AgAgASAAKQIANwIEIAFBDGogAEEIaikCADcCACABCzcBAX8CQEEIQcAAEKkpIgENAAALIAFBITYCACABIAApAgA3AgQgAUEMaiAAQQhqKAIANgIAIAELNAEBfwJAQQhBwAAQqSkiAUUNACABQR42AgACQEEoRQ0AIAFBBGogAEEo/AoAAAsgAQ8LAAs3AQF/AkBBCEHAABCpKSIBDQAACyABQSA2AgAgASAAKQIANwIEIAFBDGogAEEIaikCADcCACABCzcBAX8CQEEIQcAAEKkpIgENAAALIAFBIzYCACABIAApAgA3AgQgAUEMaiAAQQhqKAIANgIAIAELPAEBfyAAQQRqIQICQAJAAkAgACgCAA4DAAECAAsgAiABELYsDwsgAigCACABEIEYDwsgAigCACABEOYYCzwBAX8gAEEEaiECAkACQAJAIAAoAgAOAwABAgALIAIgARC4LA8LIAEgAigCABC9GQ8LIAIoAgAgARCzFQs8AQF/IABBBGohAgJAAkACQCAAKAIADgMAAQIACyACIAEQuiwPCyACKAIAIAEQoBIPCyACKAIAIAEQuRQLQgEBfwJAQRwQgi0iAA0AAAsgAEEANgIIIABCgYCAgBA3AgAgAEEAKQP4/J0BNwIMIABBFGpBACkDgP2dATcCACAACzwBAX8CQAJAIAAoAgANACAAKAIcIgEgACgCIBCIHSAAKAIYIAEQzSoMAQsgAEEYahD7JQsgACkDEBCiKAsvAAJAIANpQQFHDQAgAUGAgICAeCADa0sNACAAIAEgAyACEPMDIgNFDQAgAw8LAAsyAQF/IwBBEGsiAiQAIAIgADYCDCABQamwgwFBDCACQQxqQR4Q8AshACACQRBqJAAgAAsyAQF/IwBBEGsiAiQAIAIgADYCDCABQfyWgAFBBiACQQxqQS8Q8AshACACQRBqJAAgAAsyAQF/IwBBEGsiAiQAIAIgADYCDCABQbHBgwFBBiACQQxqQTQQ8AshACACQRBqJAAgAAstAAJAIAIgA08NACADIAIgBBCGKgALIAAgAiADazYCBCAAIAEgA0ECdGo2AgALLQACQCADIAFPDQAgASADIAQQhioACyAAIAMgAWs2AgQgACACIAFBAnRqNgIACy0AAkAgAyABTw0AIAEgAyAEEIYqAAsgACADIAFrNgIEIAAgAiABQQJ0ajYCAAs0AAJAIAEgA0cNAAJAIAFBAnQiAUUNACACIAAgAfwKAAALDwtB4LSbAUEoQYi1mwEQxxwACy0AAkAgAyABTw0AIAEgAyAEEIYqAAsgACADIAFrNgIEIAAgAiABQQJ0ajYCAAswAAJAIAMgAU8NACABIANBuIqcARCGKgALIAAgAyABazYCBCAAIAIgAUECdGo2AgALMwEBfyMAQRBrIgIkACACIAA2AgwgAUGgtYABQQggAkEMakHJABDwCyEAIAJBEGokACAACzMBAX8jAEEQayICJAAgAiAANgIMIAFBtJyEAUEPIAJBDGpBzAAQ8AshACACQRBqJAAgAAstACAAKAIkIAAoAhRBDGxqIAAoAiAgACgCCGpBAnRqIAAoAjBBACAAKAIoG2oLMgEBfyAAKAIIIQEgACgCBCEAAkADQCABRQ0BIAFBf2ohASAAEPcoIABBIGohAAwACwsLMgEBfyAAKAIIIQEgACgCBCEAAkADQCABRQ0BIAFBf2ohASAAENoSIABBEGohAAwACwsLNwEBfyMAQRBrIgIkACABIAJBD2pBoM2AARDoBiEBIABBlYCAgHg2AgAgACABNgIEIAJBEGokAAsxAQF/IwBBEGsiAiQAIAJBCGogABDMHCABIAIoAgggAigCDBD/BSEAIAJBEGokACAACzQBAX8jAEEQayIDJAACQCAADQBB/IKZAUEOIANBD2pB8NyAASACEKMSAAsgA0EQaiQAIAELMwEBfyMAQRBrIgIkACACIAA2AgwgAUHUw5sBQREgAkEMakHMABDwCyEAIAJBEGokACAACzMBAX8jAEEQayICJAAgAiAANgIMIAFBw+qZAUEEIAJBDGpBzgAQ8AshACACQRBqJAAgAAstAAJAIAIgA08NACADIAIgBBCGKgALIAAgAiADazYCBCAAIAEgA0ECdGo2AgALLQACQCACIANPDQAgAyACIAQQhioACyAAIAIgA2s2AgQgACABIANBAnRqNgIACzYBAX8gASgCBCABQQhqIgQoAgAgAiADEP0HIAEQnAwgAEEIaiAEKAIANgIAIAAgASkCADcCAAstAAJAIAMgAU8NACABIAMgBBCGKgALIAAgAyABazYCBCAAIAIgAUECdGo2AgALLQACQCADIAFPDQAgASADIAQQhioACyAAIAMgAWs2AgQgACACIAFBAnRqNgIACy4BAX8jAEEQayIFJAAgBUEEaiABIAIQ2xYgACAFQQRqIAMgBBCYICAFQRBqJAALKwACQCAAIAFBAnRqQXxqIgANAEGUwYIBEPgpAAsgAa1CBYYgACgCAGetfQs0AQF/AkAgACgCCCIDIAAoAgBHDQAgACACEOsOCyAAIANBAWo2AgggACgCBCADaiABOgAACy0AAkAgAiADTw0AIAMgAiAEEIYqAAsgACACIANrNgIEIAAgASADQQJ0ajYCAAsyAQF/IAAoAgghASAAKAIEIQACQANAIAFFDQEgAUF/aiEBIAAQvg4gAEEcaiEADAALCwsyAQF/IAAoAgghASAAKAIEIQACQANAIAFFDQEgAUF/aiEBIAAQ2AsgAEEIaiEADAALCwsuAQF/IwBBEGsiAiQAIAJBCGpBCiAAIAEQ7RAgAigCCCEBIAJBEGokACABQQFGCzMBAX8jAEEQayICJAAgAiAANgIMIAFBi6eDAUEGIAJBDGpB/wAQ8AshACACQRBqJAAgAAszAQF/IwBBEGsiAiQAIAIgADYCDCABQYSngwFBByACQQxqQYEBEPALIQAgAkEQaiQAIAALMwEBfyMAQRBrIgIkACACIAA2AgwgAUGV8IMBQRIgAkEMakGDARDwCyEAIAJBEGokACAACzMBAX8jAEEQayICJAAgAiAANgIMIAFB97eEAUEGIAJBDGpBhQEQ8AshACACQRBqJAAgAAszAQF/IwBBEGsiAiQAIAIgADYCDCABQcykgwFBCSACQQxqQYsBEPALIQAgAkEQaiQAIAALMwEBfyMAQRBrIgIkACACIAA2AgwgAUGRp4MBQQ0gAkEMakGVARDwCyEAIAJBEGokACAACzMBAX8jAEEQayICJAAgAiAANgIMIAFBhriEAUEKIAJBDGpBmQEQ8AshACACQRBqJAAgAAsyAQF/IwBBEGsiAiQAIAIgADYCDCABQZ3BgwFBBiACQQxqQSQQ8AshACACQRBqJAAgAAszAQF/IwBBEGsiAiQAIAIgADYCDCABQeaPhAFBByACQQxqQasBEPALIQAgAkEQaiQAIAALMwEBfyMAQRBrIgIkACACIAA2AgwgAUGpsIMBQQwgAkEMakG6ARDwCyEAIAJBEGokACAACzMBAX8jAEEQayICJAAgAiAANgIMIAFBhriEAUEKIAJBDGpBwwEQ8AshACACQRBqJAAgAAstACAAKAIkIAAoAhRBDGxqIAAoAiAgACgCCGpBAnRqIAAoAjBBACAAKAIoG2oLMwEBfyMAQRBrIgIkACACIAA2AgwgAUG0nIQBQQ8gAkEMakHMABDwCyEAIAJBEGokACAACzUBAX9BAC0A4OeeARoCQEEMEHwiAQ0AAAsgASAAKQIANwIAIAFBCGogAEEIaigCADYCACABCygAIAAgAiABIAMgASADSRsQvhkiAiABIANrIAIbIgNBAEogA0EASGsLMwEBfyMAQRBrIgIkACACIAA2AgwgAUHCj4QBQQsgAkEMakHOABDwCyEAIAJBEGokACAACzMBAX8jAEEQayICJAAgAiAANgIMIAFBuI+EAUEKIAJBDGpBzAAQ8AshACACQRBqJAAgAAs0AAJAIAEoAiBFDQBB/J+EARCMGQALIAFBfzYCICAAIAFBJGoQ2SIgASABKAIgQQFqNgIgCzMBAX8gACgCCCEBIAAoAgQhAAJAA0AgAUUNASABQX9qIQEgABDaHCAAQdgAaiEADAALCws0AQF/QQAhAgJAIAAoAgAgASgCAEcNACAAKAIEIAEoAgRHDQAgACgCCCABKAIIRiECCyACCygAIAIgACADIAEgAyABSRsQvhkiACADIAFrIAAbIgFBAEogAUEASGsLLQEBf0EBIQECQCAAQVBqQQpJDQAgAEGff2pBBkkNACAAQb9/akEGSSEBCyABCzsBAX9BgMADIQECQCAAQf+vA0YNACAAQQFqIgFBgLADc0GAgLx/akH/j7x/Sw0AQYDrhwEQ+CkACyABCzUBAX8gACABQf8BcUECdCIBQYi/ngFqKAIAIgI2AgAgACACIAFB0L6eAWooAgBBAXRqNgIECy0AAkAgAyABTw0AIAEgAyAEEIYqAAsgACADIAFrNgIEIAAgAiABQQN0ajYCAAstAAJAIAMgAU8NACABIAMgBBCGKgALIAAgAyABazYCBCAAIAIgAUEYbGo2AgALLQACQCADIAFPDQAgASADIAQQhioACyAAIAMgAWs2AgQgACACIAFBAXRqNgIACzMBAX8jAEEQayICJAAgAiAA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AEEUaiEBCyABEKAlIAAoAgwQiCggACgCEBCIKAsLKgACQCADIAFPDQAgASADIAQQhioACyAAIAMgAWs2AgQgACACIAFqNgIACyoAAkAgAyABTw0AIAEgAyAEEIYqAAsgACADIAFrNgIEIAAgAiABajYCAAswAQF/IwBBEGsiASQAIAFBADYCDCABQoCAgIAQNwIEIAAgAUEEahDOFyABQRBqJAALMQEBfyMAQRBrIgEkACABQQA2AgwgAUKAgICAwAA3AgQgACABQQRqEM0XIAFBEGokAAsvAQJ/AkAgACgCACIBRQ0AIAEgASgCACICQX9qNgIAIAJBAUcNACAAKAIAEKkSCws0ACABKAIAIAAoAgAoAgBoQQJ0IgBBlLmeAWooAgAgAEHMuJ4BaigCACABKAIEKAIMEQsACzIBAX9BACEEAkAgACgC3AJBAUYNACABIAIgAxDKHyIEKAIAIAQoAgRBABDvEiEECyAECzQAIAEoAgAgACgCACgCAGhBAnQiAEH8vJ4BaigCACAAQbS8ngFqKAIAIAEoAgQoAgwRCwALKgACQCADIAFPDQAgASADIAQQhioACyAAIAMgAWs2AgQgACACIAFqNgIACyoAAkAgAyABTw0AIAEgAyAEEIYqAAsgACADIAFrNgIEIAAgAiABajYCAAsyAQF/AkAgACgCACIBQYGAxABHDQAgACAAQQRqEPQdIgE2AgALQQAgACABQYCAxABGGwsyAQF/AkAgACgCACIBQYGAxABHDQAgACAAQQRqEP4MIgE2AgALQQAgACABQYCAxABGGwsyAQJ/AkBBCEHAABCpKSIBDQAACyABQQA2AgggAUIxNwMAIAAoAgAhAiAAIAE2AgAgAgstAAJAIAMgAU8NACABIANBuIqZARCGKgALIAAgAyABazYCBCAAIAIgAWo2AgALKwEBfyMAQRBrIgMkACADQQhqIAEgACACEKMmIAMoAgwhAiADQRBqJAAgAgs2AQF/IAAoAgQhAgJAAkACQCAAKAIADgMAAQIACyABIAIQ3g8PCyABIAIQkRIPCyACIAEQ3w4LKgEBfyMAQRBrIgEkACABQQhqIAAQ5iogAUEIahCUJCEAIAFBEGokACAACzABAn8gACgCCCECIABBARDfIiAAKAIIIQMgACACQQFqNgIIIAMgACgCBGogAToAAAsvAAJAAkAgACgCACIAKAIAQQNGDQAgABDXIAwBCyAAQQRqEKgmCyAAQShBCBDSFQszAAJAAkAgACgCACIAKAIAQYCAgIB4Rg0AIAAQySUMAQsgAEEEahDBKQsgAEEYQQQQ0hULLwACQCAALQCIAUEBcQ0AIAAtAJEBQQhxDQAgACABIAIgAxCXGRCnFg8LIAMQ7AcLLwEBfyMAQSBrIgEkACABQYCAgIB4NgIIIAAgACABQQhqEJcZIQAgAUEgaiQAIAALLwAgABDKJSAAQQxqEPklIABBMGoQzCggACgCNBCrIyAAKAI4EKspIABBGGoQ6CULLwEBfwJAIAAoAgAiAUECRg0AIABBBGohAAJAIAENACAAKAIAENEpDwsgABDQKQsLNQEBfyAAQQRqIQECQAJAAkAgACgCAA4CAQIACyABEN0nDwsgASgCABDRKQ8LIAEoAgAQ0ikLMAACQCAALQAlQQJHDQAgABD+JQ8LIAApAwgQnh8gACgCICIAEK8hIABBKEEIENIVCzMAAkACQCAAKAIAIgAoAgBBgICAgHhGDQAgABDJJQwBCyAAQQRqENgpCyAAQRhBBBDSFQsvAAJAAkAgACgCACIAKAIAQQNGDQAgABDZKQwBCyAAQQRqELgmCyAAQShBCBDSFQswAAJAIAAtACVBAkcNACAAEP4lDwsgACkDCBCfHyAAKAIgIgAQsiEgAEEoQQgQ0hULNQEBfyAAQQRqIQECQAJAAkAgACgCAA4CAQIACyABEO0nDwsgASgCABDRKQ8LIAEoAgAQ0ikLMQEBfyABQXhqIgIgAigCAEEBaiICNgIAAkAgAg0AAAsgACABNgIEIABBnIOeATYCAAsrAQF/IwBBEGsiAiQAIAJBATsBDCACIAE2AgggAiAANgIEIAJBBGoQuiEACywBAn8CQCAAKAIAIgFFDQAgASABKAIAIgJBf2o2AgAgAkEBRw0AIAAQihILCyoBAX8jAEEQayIDJAAgAyAAKAIANgIMIANBDGogASACENULIANBEGokAAsrAAJAIAEoAgBFDQAgAhCMGQALIAFBfzYCACAAIAE2AgQgACABQQRqNgIACzMAIAEoAgAgACgCAC0AAEECdCIAQYjWngFqKAIAIABB/NWeAWooAgAgASgCBCgCDBELAAstAgF/AX4jAEEQayIBJAAgACkCACECIAEgADYCDCABIAI3AgQgAUEEahDVLAALMwAgASgCACAAKAIALQAAQQJ0IgBB0IaeAWooAgAgAEHAhp4BaigCACABKAIEKAIMEQsACzEBAX8CQAJAIAENAEEEIQIMAQtBAC0A4OeeARogARB8IQILIAAgATYCBCAAIAI2AgALMwAgASgCACAAKAIALQAAQQJ0IgBB4L2eAWooAgAgAEHEvZ4BaigCACABKAIEKAIMEQsACygBAX8gAUEEdCECQRAhAQNAIAAgACABahCxCCACIAFBEGoiAUcNAAsLKAEBfyMAQRBrIgMkACADIAI2AgwgACABIANBDGpBARBSIANBEGokAAswAAJAIAAoAgBBgICAgHhHDQBBsOqDARD4KQALIABBDGogARCfCiAAQTxqIAEQnwoLKwAgABCcCSAAKAKwDSAAKAK0DSIAKAIIQX9qQXhxakEIaiAAKAIYEQQAagszACABKAIAIAAoAgAtAABBAnQiAEHgup4BaigCACAAQdS6ngFqKAIAIAEoAgQoAgwRCwALLgEBfwJAIAEgACgCFCICSQ0AIAEgAkHMvYMBEMAUAAsgACgCECABQQJ0aigCAAsuAQF/AkAgASAAKAIgIgJJDQAgASACQZi6gwEQwBQACyAAKAIcIAFBAnRqKAIACy4BAX8CQCABIAAoAjgiAkkNACABIAJB/L2DARDAFAALIAAoAjQgAUECdGooAgALMwAgASgCACAAKAIALQAAQQJ0IgBB+LqeAWooAgAgAEHsup4BaigCACABKAIEKAIMEQsACy0AIAAQvwMCQCAAKAIAQYiAxABGDQAgABDaHA8LIABBBGoQ/SYgAEEIahD9JgsvAQF/IAAoAgAiASABKAIAIgFBf2o2AgACQCABQQFHDQAgACgCACAAKAIEEKgSCwsrAQF/IwBBEGsiAyQAIANBATYCACADIAI3AgQgACABIAMQsQwgA0EQaiQACzMAIAEoAgAgACgCAC0AAEECdCIAQeC/ngFqKAIAIABBzL+eAWooAgAgASgCBCgCDBELAAssAAJAIAEgA0cNAAJAIAFFDQAgACACIAH8CgAACw8LIAEgA0GEy5sBEJcqAAstACAAEL8DAkAgACgCAEGIgMQARg0AIAAQ5xkPCyAAQQRqEIgnIABBCGoQiCcLLAAgACABQS5GIAAtAARyOgAEIAAoAgAiACgCACABIABBBGooAgAoAhARBwALKwEBfyMAQRBrIgIkACACIAE2AgwgAiAANgIIIAJBCGpBhwJBAUEAEIsUAAszACABKAIAIAAoAgAtAABBAnQiAEHYyZ4BaigCACAAQbTJngFqKAIAIAEoAgQoAgwRCwALKAAgASACIAMgBBC1IyEDIAAgAiAEazYCBCAAIAEgBGpBACADGzYCAAssACAAIAJCgIGChIiQoMCAf4MiAkIAUjYCACAAIAJ6p0EDdiADaiABcTYCBAs1AQF/QYABIQMCQCABIAJB4O6bAUEGEK4jDQBB/wBBpH8gASACQcCynAFBAxCuIxshAwsgAws1AQF/Qe0AIQMCQCABIAJByNqbAUEDEK4jDQBB7gBBpH8gASACQbvvmwFBBBCuIxshAwsgAws1AQF/Qe8AIQMCQCABIAJB74ycAUEFEK4jDQBB8ABBpH8gASACQd+MnAFBBBCuIxshAwsgAwswAQF/AkAgASgCAEEDRw0AIAAtADkhAiAAQQE6ADkgASgCBCAAENkBIAAgAjoAOQsLLAEBfwNAIAFBGGohAgJAIAEtACxBAkYNACAAIAIQ9BIPCyACKAIAIQEMAAsLMAEBfwJAIAEoAgBBAkcNACAALQA5IQIgAEEBOgA5IAEoAgQgABDZASAAIAI6ADkLCzABAX8CQCABKAIAQQFHDQAgAC0AOSECIABBAToAOSABKAIEIAAQ2QEgACACOgA5CwszACABKAIAIAAoAgAtAABBAnQiAEHY0J4BaigCACAAQczQngFqKAIAIAEoAgQoAgwRCwALLQACQCAAKAIAIgBFDQAgABCvDyAAKAIAIABBBGooAgAQyCogAEEUQQQQ0hULCywAIAEgABD6JAJAIAEoAgBBA0cNACABKAIEIgEoAgBBGUcNACAAIAEQyAELCzMAIAEoAgAgACgCAC0AAEECdCIAQejPngFqKAIAIABBtM+eAWooAgAgASgCBCgCDBELAAszACABKAIAIAAoAgAtAABBAnQiAEGo0J4BaigCACAAQZzQngFqKAIAIAEoAgQoAgwRCwALMwAgASgCACAAKAIALQAAQQJ0IgBBwNCeAWooAgAgAEG00J4BaigCACABKAIEKAIMEQsACy0AAkAgACgCACIARQ0AIAAQxh0gACgCACAAQQRqKAIAEMYqIABBFEEEENIVCwsrAQF/IwBBEGsiAiQAIAIgABCpHCABIAIpAwAgAigCCBCFBhogAkEQaiQACywBAX8DQCAAQRhqIQICQCAALQAsQQJGDQAgAiABEOAhDwsgAigCACEADAALCywAAkAgASADRw0AAkAgAUUNACAAIAIgAfwKAAALDwsgASADQYTLmwEQlyoACykBAX8jAEEQayICJAAgAkEDOgAPIAAgAUEAIAJBD2oQ2QYgAkEQaiQACzEBAX5CACECAkAgAS0A2AFBoQFHDQAgARCDEiECIAEQlAsLIABBADYCACAAIAI3AwgLKgADQAJAIAAtABRBAkYNACABKAIUIAAQ5QgaDwsgACgCAEEYaiEADAALCysAIAAgARCYLAJAIAAoAgwiAEUNACABIABBDGooAgAgAEEQaigCABDlIwsLMAAgASgCACAALQAAQQJ0IgBBhIaeAWooAgAgAEH4hZ4BaigCACABKAIEKAIMEQsACzAAIAEoAgAgAC0AAEECdCIAQZyGngFqKAIAIABBkIaeAWooAgAgASgCBCgCDBELAAswACABKAIAIAAtAABBAnQiAEG0hp4BaigCACAAQaiGngFqKAIAIAEoAgQoAgwRCwALKQEBfyAAIAAoAgAiAUF/ajYCAAJAIAFBBEkNACABQQJxDQAgABDPCgsLLAACQAJAIAAoAgBBiYDEAEYNACAAQfQAahCdKAwBCyAAQQRqIQALIAAQoxULLgACQAJAIAFBAkYNACAAKAIAQYCAgIB4Rg0BIABBADYCFAsPC0HA6oMBEPgpAAswACABKAIAIAAtAABBAnQiAEG8up4BaigCACAAQaS6ngFqKAIAIAEoAgQoAgwRCwALJwACQCACDQBBAUEAIAMQhioACyAAIAJBf2o2AgQgACABQQhqNgIACy0AAkAgAS0AEEEBcUUNACADEPEECwJAIAJFDQAgAxD4CQsgAEGAgICAeDYCAAswACABKAIAIAAtAABBAnQiAEHswp4BaigCACAAQcTBngFqKAIAIAEoAgQoAgwRCwALMAAgASgCACAALQAAQQJ0IgBBoMqeAWooAgAgAEH8yZ4BaigCACABKAIEKAIMEQsACycBAX9BACEEAkAgASADSQ0AIAIgAyAAIAEgA2tqIAMQriMhBAsgBAspAAJAIAAtAIgBQQFxRQ0AIAMQlgMPCyAAQdAAaiABIAIgAxCXGRChHwsvAQF/AkAgAC0ANEUNACAALwA5IQIgAEGBAjsAOSABKAIAIAAQwQEgACACOwA5CwsoAANAAkAgACgCACIALQAsQQJGDQAgAEEANgIoDwsgAEEYaiEADAALCy4BAX8CQCAAKAIAIgBFDQAgACgCACIBENUDIAFB4ABBCBDSFSAAQQxBBBDSFQsLLgEBfwJAIAAoAgAiAEUNACAAKAIAIgEQygMgAUHgAEEIENIVIABBDEEEENIVCwsoAANAAkAgACgCACIALQAsQQJGDQAgAEEAOgAsDwsgAEEYaiEADAALCzwBAX9BASEBAkACQAJAIAAoAgBBf2oOEQACAgICAgICAgICAgICAgIBAgtBAA8LIABBCGoQ0yAhAQsgAQsoAQF/IwBBEGsiASQAA0AgAUEEaiAAEPkGIAEoAgQNAAsgAUEQaiQACyMAIAAgA0EDdCACQQdxcjYCBCAAIAJB+AFxQQN2IAFyNgIACygAAkAgAg0AAkAgAUUNACAAIAFBCBDSFQtBCA8LIAAgAUEIIAIQ8wMLJwADQAJAIAAtABRBAkYNACABIAAQ5QgaDwsgACgCAEEYaiEADAALCy8AAkACQAJAIAAoAgAOAgECAAsgAEEEahDYKQ8LIAApAwgQnx8PCyAAKQMIEJ8fCywAIAApAwgQnx8gACgCIBCxIiAAQThqEOglIABBJGoQ6SUgAEHIAEEIENIVCygBAX8CQAJAIAAtACwiAUEERg0AIAFBfWpBA0kNAQsgAEEYahCcJAsLKAEBfwJAAkAgAC0ALCIBQQRGDQAgAUF9akEDSQ0BCyAAQRhqEJ0kCwsrAQF/IAAtABQhASAAQQE6ABQgAEF4aiEAAkAgAQ0AIAAQiC0PCyAAENwkCyoBAX8gACgCACIBIAEoAgAiAUF/ajYCAAJAIAFBAUcNACAAKAIAEK4FCwsqAQF/IAAoAgAiASABKAIAIgFBf2o2AgACQCABQQFHDQAgACgCABDtGAsLIwEBfyAAKAIAIgAgAEEfdSICcyACayAAQX9zQR92IAEQ4gcLJQACQCABIANLDQAgACABNgIEIAAgAjYCAA8LIAEgAyAEEIcqAAsoAAJAIAFBC0sNACAAIAE2AgQgACACNgIADwsgAUELQZi1mwEQhyoACx4BAX9BAUEgIABBAXJna0EBdiIBdCAAIAF2akEBdgslACAAIAIgAxD4CyAAQRBqIAJBEGogAxD4CyACQQggASADEIcJCyoBAX8gACgCACIBIAEoAgAiAUF/ajYCAAJAIAFBAUcNACAAKAIAEO0YCwslACAAKAIAIAAoAgQiACgCCEF/akF4cWpBCGogASAAKAIMEQcACyUAIAAoAgAgACgCBCIAKAIIQX9qQXhxakEIaiABIAAoAlARBwALKgACQCACRQ0AQQAtAODnngEaIAIgARDiJCEBCyAAIAI2AgQgACABNgIACyQAAkAgACgCACIAQQFxRQ0AIABBfnEgASACELgaDwsgABCAFQshAAJAIAFBF2pBeHFBD2pBeHEiAUUNACAAIAFBCBDSFQsLLQEBfkEAKQOQ554BIQFBAEIANwOQ554BIAAgAUIgiD4CBCAAIAGnQQFGNgIACyoAAkAgAkUNAEEALQDg554BGiACIAEQ4iQhAQsgACACNgIEIAAgATYCAAspAAJAIAAoAgBBgICAgHhGDQAgABCTKCAAQSRqENUcDwsgAEEEahCTKAsqAQF/IAAoAgAiASABKAIAIgFBf2o2AgACQCABQQFHDQAgACgCABCpEgsLKgEBfyAAKAIAIgEgASgCACIBQX9qNgIAAkAgAUEBRw0AIAAoAgAQ3RALCyUAIAAoAgAgACgCBCIAKAIIQX9qQXhxakEIaiABIAAoAgwRBwALKgEBfyAAKAIAIgEgASgCACIBQX9qNgIAAkAgAUEBRw0AIAAoAgAQ7BELCywBAX8gACgCgAIiASABKAIAIgFBf2o2AgACQCABQQFHDQAgACgCgAIQ7BELCysBAn8gACgCCCEBIAAoAgQhAgJAIAAoAgANACACIAEQnSoPCyACIAEQqCoLLgAgASgCAEGs+YMBQYCkhAEgACgCAC0AACIAG0ENQQMgABsgASgCBCgCDBELAAslACAAIAEoAgAgASgCBCIBKAIIQX9qQXhxakEIaiABKAIUEQYACysBAX9BJBCsJSECAkBBJEUNACACIAFBJPwKAAALIAAgAjYCBCAAQQo2AgALKgEBf0EAIQECQCAAEIALRQ0AIAAQkAcgACgCACgCUCAAKAIIRyEBCyABCyYBAX9BACECAkAgACABELUgRQ0AIABBDGogAUEMahC1ICECCyACCykBAX8gACAAKAIAQf7///8HaiIBQQQgAUEESRtB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EMEbCwsrACABKAIAQbn5gwFBrPmDASAALQAAIgAbQQ9BDSAAGyABKAIEKAIMEQsACyYBAX8CQCABIAAoAgAgACgCCCICa00NACAAIAIgAUEEQQwQvBsLCyIAAkADQCABRQ0BIAFBf2ohASAAENsqIABBDGohAAwACwsLJAACQCADIAJNDQAgAyACIAQQhyoACyAAIAM2AgQgACABNgIACyYBAX8CQCABIAAoAgAgACgCCCICa00NACAAIAIgAUEBQQEQzBsLCyQAAkAgACkDAEIChSAAKQMIhFANACAAEPogIABBkAVqEPogCwstAQJ/AkAgACgCACIBQYCAgIB4Rg0AIAAoAgQiAiAAKAIIEPwgIAEgAhCiKgsLLQECfwJAIAAoAgAiAUGAgICAeEYNACAAKAIEIgIgACgCCBD8ICABIAIQoioLCyUBAX8CQCABIAAoAggiAksNACAAIAE2AggPCyAAIAEgAmsQmxALKQAgAEEMaiABEOQNIABBPGogARDkDSAAQQA2AgggAEKAgICAwAA3AgALKQAgAEIANwIUIABCgICAgMAANwIMIABCBDcCBCAAIAFBAkZBH3Q2AgALIwAgACgCACAAKAIEIgAoAghBf2pBeHFqQQhqIAAoAkARBAALJQEBfwJAIAEgACgCCCICSw0AIAAgATYCCA8LIAAgASACaxCcEAsnAQF/IABBBBDNIiAAKAIEIAAoAggiAWpBADYAACAAIAFBBGo2AggLJgEBfwJAIAEgACgCACAAKAIIIgJrTQ0AIAAgAiABQQRBHBDMGwsLJwEBfyAAKAIAIgEgASgCACIBQX9qNgIAAkAgAUEBRw0AIAAQihILCyQBAX8jAEEQayICJAAgAkIANwIAIAAgASACELEMIAJBEGokAAsrACABQZiuhAFBoa6EARC3HiAAQQhqIAFBCGooAgA2AgAgACABKQIANwIACygAAkACQCABQQFxDQAgAigCAEGGgMQASQ0BCyADEIAkCyAAQSI2AgALJgEBfwJAIAEgACgCACAAKAIIIgJrTQ0AIAAgAiABQQRBCBDMGwsLJgEBfwJAIAEgACgCACAAKAIIIgJrTQ0AIAAgAiABQQFBAhDMGwsLJgEBfwJAIAEgACgCACAAKAIIIgJrTQ0AIAAgAiABQQFBARDzCAsLJgEBfwJAIAEgACgCACAAKAII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EIYEDwsgACABEIcDCyQAAkAgAC0AFEEFRw0AIABBDGoQwSkLIAAQpCggACgCJBCrKQsnACAAKQMIIAApAxgQySsgAEEgahDGJyAAKAI4EKspIAAoAjwQ6yULHgACQCACIAFJDQAgAiABIAMQwBQACyAAIAJBDGxqCyQAAkAgAC0AFEECRg0AIAEoAhQgABDlCBoLIAAoAhggARDTGQskAAJAIABFDQAgABCvDyAAKAIAIABBBGooAgAQyCogABCdLAsLIQAgACgCACgCACAAKAIEKAIAQQAgAWtBGGxqQWhqEKQmCyUAIAAgASgCCDYCBCAAQQAgASgCBCABKAIAQYCAgIB4Rhs2AgALIAEBf0EAIQQCQCABIANHDQAgACACIAEQvhlFIQQLIAQLIgEBfyAAIAAtAAAiAUEBIAEbOgAAAkAgAUUNACAAELoECwsbACAAIAEgAiADIAFBAXJnQQF0QT5zQQAQ9wELHwAgACACENwMIABBEGogAkEQahDcDCACQQggARCbCQsfAAJAIAFB/wFxRQ0AIAAgAUF/ahCAFwsgACACEIAXCyQAIAAoAgAgACgCBBCFKiAAKAIMIAAoAhAQhSogAEEcahC2IQseACAAKAIkQQAgACgCHBsgACgCFCAAKAIIakECdGoLIAEBf0EAIQQCQCABIANJDQAgAiAAIAMQvhlFIQQLIAQLIAEBf0EAIQQCQCABIANHDQAgACACIAEQvhlFIQQLIAQLJAACQCAADQBBvIOeAUEyEJErAAsgACACIAMgBCABKAIQEQ0ACyQAAkAgAA0AQbyDngFBMhCRKwALIAAgAiADIAQgASgCEBEOAAskAAJAIAANAEG8g54BQTIQkSsACyAAIAIgAyAEIAEoAhARDQALJAACQCAADQBBvIOeAUEyEJErAAsgACACIAMgBCABKAIQEQ0ACyQAAkAgAA0AQbyDngFBMhCRKwALIAAgAiADIAQgASgCEBE1AAskAAJAIAANAEG8g54BQTIQkSsACyAAIAIgAyAEIAEoAhAROAALJAACQCAADQBBvIOeAUEyEJErAAsgACACIAMgBCABKAIQES8ACyQAAkAgAA0AQbyDngFBMhCRKwALIAAgAiADIAQgASgCEBEOAAsnAQF/QQAhAwJAIAAQvh8NACABQaWXggFBBCACKAIMEQsAIQMLIAMLIgEBfyAAIAAoAgAiAUF/ajYCAAJAIAFBAUcNACAAEJkWCwskACAAKAIAIAAoAgRBBEEUEMEVIAAoAgwgACgCEEEEQRgQwRULHgAgACgCJEEAIAAoAhwbIAAoAhQgACgCCGpBAnRqCyEAIAAgAhDqBiAAQcAAaiACQcAAahDqBiACQQggARCJBwshAAJAIAENAEEAQQBB2K+EARDAFAALIAAtAAhBCHFBA3YLIQACQCABDQBBAEEAQcivhAEQwBQACyAALQAIQQRxQQJ2CyMAAkAgAQ0AQQBBAEH4sIQBEMAUAAsgACAALQAAQQRyOgAACyMAAkAgAQ0AQQBBAEGIsYQBEMAUAAsgACAALQAAQQhyOgAACyUAIAAgASgCCDYCBCAAQQAgASgCBCABKAIAQYCAgIB4Rhs2AgALHwAgACACEJcIIABBIGogAkEgahCXCCACQQggARCDCAsfACAAIAIQmAggAEEIaiACQQhqEJgIIAJBCCABEP4HCxsAIAAgASACIAMgAUEBcmdBAXRBPnNBABCxAQsbACAAIAEgAiADIAFBAXJnQQF0QT5zQQAQwAELGwAgACABIAIgAyABQQFyZ0EBdEE+c0EAEL0BCx4AIAEoAgAgAkEEdGtBcGooAgBB3cvdnnlsQQ93rQskACAAQQA2AhAgAEEAOgAUIAAgASkDCDcDCCAAIAEpAwA3AwALJQEBfyAAKAIEIgEgACgCCBDDICAAKAIAIAEQzCogAEEUahClKAslAQF/IAAoAgQiASAAKAIIEMMgIAAoAgAgARDMKiAAQRRqEK8oCx4AIAEoAgAgAkEDdGtBeGooAgBB3cvdnnlsQQ93rQsgAAJAA0AgACgCACIALQAsQQJHDQEgAEEYaiEADAALCwsjAAJAIAAoAgBBA0cNACABIAAoAgQQiB4LIAEgACgCIBDnBwslACABKAIAIAAtAABBAnRB5NCeAWooAgBBBiABKAIEKAIMEQsACyMAIAAoAiAgARCjAgJAIAAoAgBBAkkNACAAKAIEIAEQowILCyMAIAAoAiAgARCkAQJAIAAoAgBBAkkNACAAKAIEIAEQpAELCyUAIAAgASgCCDYCBCAAQQAgASgCBCABKAIAQYCAgIB4Rhs2AgALIwEBfwJAQQRBNBDIJCIADQAACyAAQQA7ATIgAEEANgIAIAALJAEBfwJAQQRB5AAQyCQiAA0AAAsgAEEAOwEyIABBADYCACAACyAAIABBCGoQ9w8CQCAAKAJAQQpGDQAgAEHAAGoQ9w8LCyUBAX8gACgCBCIBIAAoAggQwyAgACgCACABEMwqIABBFGoQvygLIQEBf0EAIQICQCABENUURQ0AIAEgABDODkEBcyECCyACCyMBAX8gAEEEaiEBAkAgACgCAA0AIAEoAgAQqykPCyABEOAHCyUBAX4gACkDCCEBAkAgACgCAA0AIAEQnx8PCyABIAApAxgQySsLIAACQCABKAIAIgFFDQAgACABIAIQgwUPCyAAQQQ6AAALIAACQCABKAIAIgFFDQAgACABIAIQiAoPCyAAQQQ6AAALIwAgASgCICAAEPcDAkAgASgCAEECRw0AIAEoAgQgABD3AwsLHwACQCAARQ0AIAEgAEEMaigCACAAQRBqKAIAEOUjCwsfAAJAIABFDQAgASAAQQRqKAIAIABBCGooAgAQ2B0LCxsAIAAgASACIAEgAkkbIAEgAiABIAJLGxDYHQskAAJAIAEoAgBBgICAgHhGDQAgACABIAIQ5BgPCyAAQQQ6AAALJQEBfyAAKAIEIgEgACgCCBDDICAAKAIAIAEQzCogAEEUahDQKAshACABKAIUIAAQ5QgaAkAgACgCGCIARQ0AIAAgARC+BAsLHwACQCAARQ0AIAEgAEEMaigCACAAQRBqKAIAENgdCwslAQF/IAAoAgQiASAAKAIIEMMgIAAoAgAgARDMKiAAQRRqENcoCyUBAX8gACgCBCIBIAAoAggQwyAgACgCACABEMwqIABBFGoQ3CgLHwAgACACENAHIABBMGogAkEwahDQByACQQggARDBBwsbACAAIAEgAiADIAFBAXJnQQF0QT5zQQAQqwELGwAgACABIAIgAyABQQFyZ0EBdEE+c0EAEKwBCyEBAX9BACEBAkAgACgCAEERRw0AIABBCGoQnBMhAQsgAQslAQF/IAAoAgQiASAAKAIIEMMgIAAoAgAgARDMKiAAQRRqEOEoCyQBAX8gACgCACIAIAAoAgBBf2oiATYCAAJAIAENACAAEOceCwsjACAAQQE2AgQgACABKAIAQYGAgIB4RyIBNgIIIAAgATYCAAsjAAJAQQAgACgCABEEACIADQBB2P2dARCLGQALIAAgATYCAAslACAAIAEoAgQgASgCCCAC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GwseACAAKAIAIgAoAgAgACgCBCABKAIAIAEoAgQQ6AMLIQEBfwJAIAAoAgAiAUGEgICAeEgNACABIAAoAgQQiioLCx4AIAAoAgAiACgCBCAAKAIIIAEoAgAgASgCBBDoAwscAEEALQDg554BGgJAIAAgARDiJCIBDQAACyABCxsAAkAgAEH/AXENAEHw6ocBEPgpAAsgAEF/agscAEEALQDg554BGgJAIAAgARDiJCIBDQAACyABCxwAQQAtAODnngEaAkAgACABEOIkIgENAAALIAELHgEBfxCzJSIBQgA3AgwgASAANwIEIAFBATYCACABCxwAIAAoAgAiACgCACABIABBBGooAgAoAgwRBwALHABBAC0A4OeeARoCQCAAIAEQ4iQiAQ0AAAsgAQshAEH33JsBQfXcmwEgAC0AABtBAiABKAIAIAEoAgQQ6AMLIQEBfwJAIAAoAgAiAUGAgICAeEYNACABIAAoAgQQ/ikLCx0AAkAgAC0AC0H+AUcNACAAKAIAIAAoAggQ+gsLCxwAIAAQpREgACgCACAAKAIEEM0qIABBFGoQpSgLGgAgACkDCBCeHyAAQSBqEKooIABBJGoQqigLGgAgACkDCBCfHyAAQSBqEKwoIABBJGoQrCgLHAAgABClESAAKAIAIAAoAgQQzSogAEEUahCvKAsaACAAKQMIEJ8fIABBIGoQsiggAEEkahCyKAsbACABIAIgAxCXGSEDIABBAToAACAAIAM2AgQLGwAgASACIAMQlxkhAyAAQQI6AAAgACADNgIECxsAAkADQCAALQAsQQJHDQEgACgCGCEADAALCwsZAAJAIAAoAgBBA0cNACABIABBBGoQkSQLCxkAAkAgASAAKAIITQ0AIAAgASACEJICGgsLGQACQCABIAAoAghNDQAgACABIAIQjgIaCwsbACABIAAQwQ4CQCAAKAIARQ0AIAAgARDvCAsLGQACQCABIAAoAghNDQAgACABIAIQ/wEaCwsbAAJAA0AgAC0ALEECRw0BIAAoAhghAAwACwsLGQACQCABKAIAQRFHDQAgAUEIaiAAEM8HCwshAQF/AkAgACgCACIBQYCAgIB4Rg0AIAEgACgCBBD1KQsLHAAgAEEMaiAAKAIEIAAoAgggACgCACgCEBEKAAscACAAEKURIAAoAgAgACgCBBDNKiAAQRRqEL8oCxoAAkAgAC0ANEEERw0AIAAQ3h8PCyAAEKgjCxoAIAApAwgQnx8gAEEgahDBKCAAQSRqEMEoCxsAIAAoAgAgAEEEaigCABCFKiAAQRBBBBDSFQsaACAAKQMIEJ4fIABBIGoQxiggAEEkahDGKAsdAAJAIAAtAAtB/gFHDQAgACgCACAAKAIIEPoLCwsZAAJAIAAoAgBBAUcNACAAQQRqIAEQlywLCxkAAkAgACgCAEEBRw0AIABBBGogARCYLAsLGQACQCAAKAIAQQNHDQAgAEEEaiABEJgsCwsZAAJAIAEgACgCCE0NACAAIAEgAhDQBhoLCxkAAkAgACgCAEEDRw0AIABBBGogARCXLAsLGgAgACkDCBCfHyAAQSBqEM0oIABBJGoQzSgLHAAgABClESAAKAIAIAAoAgQQzSogAEEUahDQKAsaACAAKQMIEJ4fIABBIGoQ0SggAEEkahDRKAsbACAAKQMAIABBEGopAwAQySsgAEEYQQgQ0hULGQACQCABKAIAQRFHDQAgACABQQhqEJEGCwscACAAEKURIAAoAgAgACgCBBDNKiAAQRRqENcoCxoAIAApAwgQnx8gAEEgahDaKCAAQSRqENooCxoAIAApAwgQnx8gAEEgahDdKCAAQSRqEN0oCxwAIAAQpREgACgCACAAKAIEEM0qIABBFGoQ3CgLGQACQCAAKAIAQQFHDQAgAEEEaiABEJgsCwsZAAJAIAAoAgBBAUcNACAAQQRqIAEQlywLCxkAAkAgACgCAEEBRw0AIABBBGogARCWLAsLHABBAC0A4OeeARoCQCAAIAEQ4iQiAQ0AAAsgAQscACAAEKURIAAoAgAgACgCBBDNKiAAQRRqEOEoCxoAIAApAwgQnh8gAEEgahDlKCAAQSRqEOUoCxoAIAApAwgQnh8gAEEgahDpKCAAQSRqEOkoCxkAQQAtAODnngEaAkAgABB8IgANAAALIAALHQEBfyAAKAIEIgEgACgCCBDLIiAAKAIAIAEQkSoLHAACQCAALQAIDQAgACgCABCIKCAAKAIEEIgoCwsZAEEALQDg554BGgJAIAAQfCIADQAACyAACyAAAkBBAC0A8OKeAQ0AQQBBAToA8OKeAQsgAEEBNgIACxkAQQAtAODnngEaAkAgABB8IgANAAALIAALHAACQCAAIAFGDQBB4LSbAUEoQYi1mwEQxxwACwsZACAAKAIAIgAoAgAgAEEEaigCACABEKQSCxkAQQAtAODnngEaAkAgABB8IgANAAALIAALGQBBAC0A4OeeARoCQCAAEHwiAA0AAAsgAAsYAAJAIABBAXFFDQBB5deAAUExEJErAAsLFwACQCAAKAIAQQJHDQAgAEEEahCyCQsLGwEBf0EALQDg554BGgJAQQwQfCIADQAACyAACxUAIABBBEEcIAAoAgBBIkYbahCfKgsZAEEALQDg554BGgJAIAAQfCIADQAACyAACxsAAkAgACgCAEH+////B2pBBEkNACAAEJ8aCwscACAAIAEgAkGI5YcBEIAdIAAQ+QUgAEEAOgAMCxwAIAAgASACQYjlhwEQgR0gABDuBSAAQQA6AAwLHQEBfyAAKAIEIgEgACgCCBD8ICAAKAIAIAEQoioLGAACQCAALQAMQQFHDQAgACABIAIQjykLCxwAIAEoAgAgACgCACAAKAIEIAEoAgQoAgwRCwALGwEBf0EALQDg554BGgJAQRQQfCIADQAACyAACxwBAX9ByABBBBDgIiIBIAA2AgQgAUEQNgIAIAELHAEBf0EALQDg554BGgJAQcAAEHwiAA0AAAsgAAsbAQF/QQAtAODnngEaAkBBKBB8IgANAAALIAALGwEBf0EALQDg554BGgJAQQwQfCIADQAACyAACxwBAX9BAC0A4OeeARoCQEHgABB8IgANAAALIAALGwEBf0EALQDg554BGgJAQRAQfCIADQAACyAACxsBAX9BAC0A4OeeARoCQEEUEHwiAA0AAAsgAAsbAQF/QQAtAODnngEaAkBBHBB8IgANAAALIAALGwEBf0EALQDg554BGgJAQRgQfCIADQAACyAACxwBAX9BAC0A4OeeARoCQEHIABB8IgANAAALIAALGwEBf0EALQDg554BGgJAQTAQfCIADQAACyAACxwBAX9BAC0A4OeeARoCQEHYABB8IgANAAALIAALHAEBf0EALQDg554BGgJAQcAAEHwiAA0AAAsgAAscAQF/QQAtAODnngEaAkBByAAQfCIADQAACyAACxwBAX9BAC0A4OeeARoCQEGgARB8IgANAAALIAALGwEBf0EALQDg554BGgJAQSAQfCIADQAACyAACxgAAkAgACgCEEECRg0AIAAgARCeGAsgAAsXAAJAIAEgACgC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IiAAKAIAIAEQ0CoLGQACQCABKAIAQQNHDQAgASgCBCAAEPcDCwsXAAJAIAAtABRBAkYNACABIAAQ5QgaCwsdAQF/IAAoAgQiASAAKAIIEP4iIAAoAgAgARDcKgsdAQF/IAAoAgQiASAAKAIIEOoiIAAoAgAgARC/KgsdAQF/IAAoAgQiASAAKAIIEMMgIAAoAgAgARDMKgsXACAAKAIAQQhqIAEoAgAgASgCBBDQBQsXACAAKAIAIAEgACgCBEEMaigCABEHAAsVACABIAAoArwCRiABIAAoAsACRnILFQAgASAAKALYAkYgASAAKALcAkZyCxUAIAEgACgC0AJGIAEgACgC1AJGcgsZACAAKAIAIAAoAgQgASgCACABKAIEEOgDCxUAAkAgAEUNACABIABBBEEIEMIUCwsXACAAQQRqEKklIAAoAhwgACgCIBDFLAsZACAAKAIEIAAoAgggASgCACABKAIEEOgDCxcBAX8gABAkIgE2AgQgACABQQBHNgIACxcBAX8gABAlIgE2AgQgACABQQBHNgIACxcBAX8gABAmIgE2AgQgACABQQBHNgIACxcBAX8gABAnIgE2AgQgACABQQBHNgIACxgAIAAQqQQgABDbDiAAKAIYQTRBBBDSFQsVACABIAAoArwCRiABIAAoAsACRnILFQAgASAAKALQAkYgASAAKALUAkZyCxUAIAEgACgC2AJGIAEgACgC3AJGcgsVAAJAIAENAEEAQQAgAhDAFAALIAALFQACQCABDQBBAEEAIAIQwBQACyAACxkAIAAoAgAgACgCBCABKAIAIAEoAgQQ6AMLGQAgACgCBCAAKAIIIAEoAgAgASgCBBDoAwsTACABKAIAIAJBBHRrQXBqENgFCxUAAkAgAUH/AXFBAkYNACAAEJ4fCwsVAAJAIAFB/wFxQQJGDQAgABCfHwsLFwAgACABIAIgAxCXGTYCBCAAQQE2AgALFQAgACABEIQMIAAoAgggASgCCEZxCx0AAkBBACgCyOGeAUECRg0AELIZC0EAKALE4Z4BCxcAIABBADYCECAAQgE3AgAgAEEANgIICxcAIAAoAgAgAEEEaigCABCFKiAAEIwsCxcAIABBDGoQwSkgABCkKCAAKAIcEKspCxUAAkAgAC0AAEUNACAAQQRqEOAHCwsXACAAEKscIABBPGoQ7yUgACgCOBCrKQsVAAJAIAAoAgBFDQAgAEEEahDvKQsLGgACQCAAKAIAQYCAgIB4Rg0AIAAgARDdHgsLGgACQCAAKAIAQYCAgIB4Rg0AIAAgARDfHgsLFQACQCABDQBBAEEAIAIQwBQACyAACxUAAkAgAC0AAEUNACAAQQRqEK0HCwsWAAJAIAEoAgAiAUUNACABIAAQ4B4LCxYAAkAgASgCACIBRQ0AIAEgABDhHgsLFgACQCAAKAIAIgBFDQAgACABEL4ECwsWACAAKAIAIAEQsxUgAEEUaiABELImCxUAAkAgACgCACIARQ0AIAAgARBsCwsWAAJAIAAoAgAiAEUNACABIAAQwwQLCxcAIABBDGoQ5CcgABCkKCAAKAIkEKspCxcAIABBDGoQ2CkgABDlJyAAKAIcEKspCxcAIABBDGoQ2CkgABCkKCAAKAIcEKspCxcAIAApAwAgAC0AFBCiJiAAQRhqEP8YCxoAAkAgACgCAEGAgICAeEYNACABIAAQjAcLCxcAIABBBGoQqSUgACgCJCAAKAIoEMUsCxgAIAAoAjQgACgCOCABEOYgIAAgARCzFQscACAAQQA2AhAgAEIANwIIIABCgICAgMAANwIACxgAAkAgACgCAEGAgICAeEYNACAAEPMpCwsYAAJAIAAoAgBBgYCAgHhGDQAgABC+JgsLGQAgASgCAEHkrJwBQQUgASgCBCgCDBELAAsRAAJAIABFDQAACyACELYfAAsbAAJAIAEoAgQOAgAAAAsgAEHovoABIAEQ3gULFwACQCAAQYCAgIB4Rg0AIAAgARCZKgsLGAACQCAAKAIAQZWAgIB4Rg0AIAAQ1xILCxcAIAAoAhAQiCggACgCACAAKAIEEPEoCxMAAkAgAkUNACAAIAIgARDSFQsLFgAgACABIAMgAnZBrJCAARCIIygCAAsYAAJAIAIoAgQOAgAAAAsgACABIAIQ3gULFwACQCAAQYCAgIB4Rg0AIAAgARCKKgsLGAAgACABIAIgA0HUq4ABEI0jKQIENwMACxMAAkAgASAAEPIoIgANAAALIAALEwACQCACRQ0AIAAgAiABENIVCwsZACAAKAIQIAAoAhQgAUHMvYMBEIgjKAIACxkAIAAoAjQgACgCOCABQfy9gwEQiCMoAgALGQAgACgCHCAAKAIgIAFBmLqDARCIIygCAAsZACABKAIAQeSsnAFBBSABKAIEKAIMEQsACxsAAkAgASgCBA4CAAAACyAAQcy4gAEgARDeBQsZACABKAIAQeyEmQFBCyABKAIEKAIMEQsACxsAAkAgASgCBA4CAAAACyAAQYTBgAEgARDeBQsVACAAKAIAIgAQ/RQgAEEQQQgQ0hULGQAgASgCAEHRvZgBQQkgASgCBCgCDBELAAsYAAJAIAAoAgBBlYCAgHhGDQAgABD9FAsLFQAgACgCACIAENcSIABBEEEIENIVCxUAIAAoAgAiABDaEiAAQRBBCBDSFQsXAAJAIABBgICAgHhGDQAgACABEPUpCwsVACAAKAIAIgAQ2BIgAEEQQQgQ0hULFAAgACABIAIQBzYCBCAAQQA2AgALGAACQCAAKAIAQZWAgIB4Rg0AIAAQ2xILCxUAIAAoAgAiABDbEiAAQRBBCBDSFQsZACABKAIAQYafnAFBCSABKAIEKAIMEQsACxkAIAEoAgBBwJ6cAUEQIAEoAgQoAgwRCwALGQAgASgCAEH0npwBQRIgASgCBCgCDBELAAsZACABKAIAQZy6mAFBCSABKAIEKAIMEQsACxkAIAEoAgBB3p6cAUEWIAEoAgQoAgwRCwALGQAgASgCAEGrlZkBQQ8gASgCBCgCDBELAAsZACABKAIAQdCenAFBDiABKAIEKAIMEQsACxUAIAAoAgAiABDcEiAAQRBBCBDSFQsWACAAQbTWgAE2AgQgACABQRxqNgIACxMAIABBBGoQqSUgAEEsQQQQ0hULGQAgASgCAEHklYEBQQsgASgCBCgCDBELAAsZACABKAIAQe+VgQFBDiABKAIEKAIMEQsACxsAAkAgASgCBA4CAAAACyAAQdiYgQEgARDeBQsbAAJAIAEoAgQOAgAAAAsgAEHYq5sBIAEQ3gULGQAgASgCAEHshJkBQQsgASgCBCgCDBELAAsTAAJAIABBAkYNACAAIAEQiCkLCxEAIAAgASABIAJBAnRqEI0cCxsAAkAgASgCBA4CAAAACyAAQZSUgwEgARDeBQsWACABIAAoAgAiACgCBCAAKAIIEP8FCxcAIAAoAgAoAgAgASgCACABKAIEEPYFCxgAAkAgAigCBA4CAAAACyAAIAEgAhDeBQsYAAJAIAIoAgQOAgAAAAsgACABIAIQ3gULGQAgASgCAEHshJkBQQsgASgCBCgCDBELAAsVACAAKAIAIgAQ1gsgAEEIQQQQ0hULFgAgACgCACIAEKMVIABB9ABBBBDSFQsWACAAKAIAIgAQoxUgAEHYAEEEENIVCxMAAkAgAUUNACAAIAFBARDSFQsLFQAgACgCACIAEJooIABBHEEEENIVCxcAAkAgAEGAgICAeEYNACAAIAEQrSoLCxQAAkAgACgCAEECRg0AIAAQnyILCxYAIAAoAgAiABDHISAAQfQAQQQQ0hULFgAgACgCACIAEMchIABB2ABBBBDSFQsVACAAKAIAIgAQvg4gAEEcQQQQ0hULFQAgACgCACIAENgLIABBCEEEENIVCxgAAkAgACgCAEGAgICAeEYNACAAELAlCwsYAAJAIAAoAgBBgICAgHhGDQAgABCnCwsLFAACQCAAKAIAQQhGDQAgABC6EAsLFgAgACgCACIAEKYVIABB9ABBBBDSFQsVACAAKAIAIgAQugkgAEEIQQQQ0hULFgAgACgCACIAEKYVIABB2ABBBBDSFQsVACAAKAIAIgAQvw4gAEEcQQQQ0hULFgAgACgCACIAEMwhIABB9ABBBBDSFQsWACAAKAIAIgAQzCEgAEHYAEEEENIVCxUAIAAoAgAiABC9DiAAQRxBBBDSFQsbAAJAIAEoAgQOAgAAAAsgAEHMhIgBIAEQ3gULGQAgASgCAEHkrJwBQQUgASgCBCgCDBELAAsbAAJAIAEoAgQOAgAAAAsgAEHs25cBIAEQ3gULGQAgASgCAEGc5pcBQRIgASgCBCgCDBELAAsbAAJAIAEoAgQOAgAAAAsgAEGAupgBIAEQ3gULGwACQCABKAIEDgIAAAALIABBsMWYASABEN4FCxkAIAEoAgBBmLqYAUEEIAEoAgQoAgwRCwALFgAgASAAKAIAIgAoAhQgACgCGBD/BQsWACAAKAIAIgAQkQEgAEHAAEEIENIVCxYAIAAoAgAiABCRASAAQcAAQQgQ0hULFgAgACgCACIAEIcCIABB4ABBCBDSFQsWACAAKAIAIgAQoQEgAEHAAEEIENIVCxYAIAAoAgAiABChASAAQcAAQQgQ0hULFQEBfwJAQQRBBBCpKSIADQAACyAACxUBAX8CQEEIQSAQqSkiAA0AAAsgAAsYAAJAIAAoAgBBgICAgHhGDQAgABDJJQsLFQAgACgCACIAEIcGIABBDEEEENIVCxUAIAAoAgAiABCjFiAAQShBCBDSFQsVACAAKAIAIgAQiAYgAEEMQQQQ0hULFQAgACgCACIAEIkGIABBDEEEENIVCxUAIAAoAgAiABCPFSAAQShBCBDSFQsXAAJAIABBgICAgHhGDQAgACABEP4pCwsWACAAKAIAIgAQsgEgAEHAAEEIENIVCxYAIAAoAgAiABCyASAAQcAAQQgQ0hULFwBBhX9BpH8gASACQdbvmwFBBRCuIxsLFwBB4gBBpH8gASACQcvamwFBAxCuIxsLFwBBn39BpH8gASACQbz2mwFBBBCuIxsLFwBB8QBBpH8gASACQcGknAFBBRCuIxsLFgAgACgCACIAEKIBIABBwABBCBDSFQsWACAAKAIAIgAQogEgAEHAAEEIENIVCxYAIAAoAgAiACgCBCAAKAIIIAEQyBELFgAgACgCACIAKAIEIAAoAgggARDFEQsWACAAKAIAIgAQyQEgAEHAAEEIENIVCxYAIAAoAgAiACgCBCAAKAIIIAEQxhELFgAgACgCACIAKAIEIAAoAgggARDHEQsVACAAKAIAIgAQjRMgAEEYQQgQ0hULFgAgACgCACIAEMUBIABBwABBCBDSFQsWACAAKAIAIgAQxQEgAEHAAEEIENIVCxYAIAAoAgAiABCvASAAQcAAQQgQ0hULFgAgACgCACIAEK8BIABBwABBCBDSFQsWACAAKAIAIgAQswEgAEHAAEEIENIVCxYAIAAoAgAiABCzASAAQcAAQQgQ0hULFgAgACgCACIAEL4BIABBwABBCBDSFQsWACAAKAIAIgAQvwEgAEHAAEEIENIVCxYAIAAoAgAiABC/ASAAQcAAQQgQ0hULGQAgASgCAEHkrJwBQQUgASgCBCgCDBELAAsWACAAKAIAIgAQrQEgAEHAAEEIENIVCxYAIAAoAgAiABCtASAAQcAAQQgQ0hULFgAgACgCACIAEMYBIABBwABBCBDSFQsWACAAKAIAIgAQxgEgAEHAAEEIENIVCxYAIAAoAgAiABDPASAAQcAAQQgQ0hULFgAgACgCACIAELABIABBwABBCBDSFQsWACAAKAIAIgAQsAEgAEHAAEEIENIVCxYAIAAoAgAiABCjASAAQcAAQQgQ0hULFgAgACgCACIAEKMBIABBwABBCBDSFQsYAAJAIAAoAgBBgICAgHhGDQAgABDbKgsLGQAgASgCAEGlupgBQQggASgCBCgCDBELAAsXAAJAIABBgICAgHhGDQAgACABEOMsCwsZACABKAIAQcTJmwFBDCABKAIEKAIMEQsACxUAIAAoAgAiABDyBiAAQQxBBBDSFQsUAAJAIAAtABRBA0YNACAAEN4fCwsTAAJAIAEgABDEKSIADQAACyAACxUAIAAoAgAiABCoFiAAQShBCBDSFQsUAAJAIAAoAgBBCkYNACAAENkOCwsTAAJAIAEgABDGKSIADQAACyAACxUAIAAoAgAiABCKBiAAQQxBBBDSFQsYAAJAIAAoAgBBgICAgHhGDQAgABDzJQsLFgAgACABKAIAIAIgASgCBCgCIBEKAAsUACAAIAEgAiADIAQgBUGQChD7AwsXAAJAIABBgICAgHhGDQAgACABEPUpCwsXACAAIAEgACABIAIQuBNBsJmcARCpIwsXACAAIAEgACABIAIQoRJBwJmcARCpIwsbAAJAIAEoAgQOAgAAAAsgAEGA+50BIAEQ3gULEwACQCABIAAQ2ykiAA0AAAsgAAsTAAJAIABBA0cNACABIAIQ9wMLCxQAAkAgAC0ACEEFRw0AIAAQzSkLCxUAIAAoAgAiABCLBiAAQQxBBBDSFQsVACAAIAIgASgCECgCACABQQAQqRALEwACQCABIAAQzykiAA0AAAsgAAsVACAAIAIgASgCECgCACABQQEQqRALGAACQCAAKAIAQYCAgIB4Rg0AIAAQ+yULCxUAIAAoAgAiABCuBiAAQQxBBBDSFQsUAAJAIAAoAgBBB0YNACAAEJUVCwsVACAAKAIAIgAQlRUgAEEoQQgQ0hULEwACQCABIAAQ1CkiAA0AAAsgAAsUAAJAIAAoAgBBCEYNACAAEOULCwsUAAJAIAEoAgBFDQAgASAAEKIsCwsTACAAIAEQ4h4gASAAQQxqEOAnCxQAAkAgASgCAEUNACABIAAQvgQLCxUAIAAoAgAiABCMBiAAQQxBBBDSFQsUAAJAIAAtAAhBBUcNACAAENgpCwsYAAJAIAAoAgBBgICAgHhGDQAgABCkKAsLFwEBfxC1JSIAQQA2AgggAEIxNwMAIAALEwACQCABIAAQqSkiAA0AAAsgAAsYAAJAIAAoAgBBgICAgHhGDQAgABDKJQsLFQAgACgCACIAEJYVIABBKEEIENIVCxUAIAAoAgAiABCvBiAAQQxBBBDSFQsXACAAKQMAIAAtABQQoiYgACgCGBCFGgsUAAJAIAAoAgBBB0YNACAAEKwWCwsVACAAKAIAIgAQrBYgAEEoQQgQ0hULFQAgACgCACIAEI0HIABBMEEIENIVCxQAAkAgACkDAEICUQ0AIAAQ3yMLCxYAIABBuIecATYCBCAAIAFBCGo2AgALFgAgAEH8hpwBNgIEIAAgAUEIajYCAAsWACAAQYSFnAE2AgQgACABQRxqNgIACxYAIABBwIWcATYCBCAAIAFBHGo2AgALEgAgAEEEahCpJSAAQSRqEIAZCxQAAkAgACgCAEUNACAAIAEQlywLCxQAAkAgACgCAEUNACAAIAEQliwLCxMAIAAgARCwLCAAQQRqIAEQliwLEwAgACABELEsIABBBGogARCXLAsUAAJAIAAoAgBFDQAgACABEJgsCwsTACAAQTBqIAEQ5R4gACABELMVCxMAIABBMGogARDkHiAAIAEQ5hgLFAACQCAAKAIARQ0AIAAgARCWLAsLEwACQCABDQBBAEEAIAIQwBQACwsVACAAKAIAIgAQlxUgAEEoQQgQ0hULFQAgACgCACIAEJsGIABBDEEEENIVCxMAIABBMGogARDmHiAAIAEQuRQLGwACQCABKAIEDgIAAAALIABBkK2cASABEN4FCxUAIAAoAgAiABCNBiAAQQxBBBDSFQsVACAAKAIAIgAQlBUgAEEoQQgQ0hULEwACQCABRQ0AIAAgASACENIVCwsTAEEAIACtQiCGQgGENwOQ554BCxQAIAAoAgAiACAAKAIAKAIAEQMACxAAIAAgASABIAJqEK0eQQALEQACQCAAQYQBSQ0AIAAQDQsLEQAgACgCACACIAEQsx9BAXMLFAEBf0ECQQEQyyYiASAAOgAAIAELDwAgAEEcakEAIAAoAhwbCw8AIABBPGpBACAAKAI8GwsPACAAQShqQQAgACgCKBsLFAAgACgCACABIAAoAgQoAhARBwALEAAgACABIAIgAyAEEJkDAAsUACAAEI8gIAAoAgAgACgCBBCSKgsUACAAEJAgIAAoAgAgACgCBBCTKgsUACAAKAIAIAEgACgCBCgCDBEHAAsUACAAEKAgIAAoAgAgACgCBBCdKgsTAQF/AkBBNBC5KiIADQAACyAACxAAIAAgASABIAJqELceQQALFAAgACgCACABKAIAIAEoAgQQ9gULDwAgAEEcakEAIAAoAhwbCw8AIABBKGpBACAAKAIoGwsPACAAQTxqQQAgACgCPBsLFAAgABCpBCAAEOASIAAoAhgQrCsLEAAgACABIAJBCGogAxC2IwsUACAAELQgIAAoAgAgACgCBBCuKgsUACAAELQgIAAoAgAgACgCBBCuKgsUACAAEJ8gIAAoAgAgACgCBBCcKgsQACAAIAEgAkECELYjQQFzCxAAIAAgASABIAJqEMQeQQALFgAgAEEANgIAIABBACkD+OKYATcCBAsRAAJAIABCAFENACAAEJ4fCwsSACAAKQMAEJ4fIABBGGoQpSgLFAAgABDeHCAAKAIAIAAoAgQQxyoLEgACQCAAKAIARQ0AIAAQmicLCxIAAkAgACgCAEUNACAAEJ8DCwsUACAAEJERIAAoAgAgACgCBBDMKgsUACAAEKQJIAAoAgAgACgCBBDMKgsUACAAEMYdIAAoAgAgACgCBBDGKgsSAAJAIAAoAgBFDQAgABCHBgsLEgACQCAAKAIARQ0AIAAQnCcLCxIAAkAgACgCAEUNACAAEIgGCwsRAAJAIABCAFENACAAEJ8fCwsSAAJAIAAoAgBFDQAgABCdAwsLEgACQCAAKAIARQ0AIAAQnScLCxIAIAApAwAQnx8gAEEYahCvKAsSAAJAIAAoAgBFDQAgABDlAgsLEgACQCAAKAIARQ0AIAAQiQYLCxMAAkAgAC0AAA0AIAEgABDmAgsLEgAgACAAKAIIIAFBCEEYELcLCxQAIAAQpAkgACgCACAAKAIEEMwqCxIAAkAgACgCAEUNACAAEOABCwsQACAAIAEgASACahDJHkEACxAAIAAgASABIAJqEMkeQQALFAAgABDiEyAAKAIAIAAoAgQQvCoLEgACQCAAKAIARQ0AIAAQgiULCxIAIAEgAkEBEIMJIABBBDoAAAsSACABIAIgAxCDCSAAQQQ6AAALFAAgABCvDyAAKAIAIAAoAgQQyCoLEgACQCAAKAIARQ0AIAAQwSkLCxIAAkAgACgCAEUNACAAEMUnCwsSACAAKQMAEJ8fIABBGGoQvygLEgACQCAAKAIARQ0AIAAQ8gYLCxQAIAAQoBAgACgCACAAKAIEEMgqCxIAAkAgACgCAEUNACAAEMsnCwsUACAAEKURIAAoAgAgACgCBBDNKgsSAAJAIAAoAgBFDQAgABCzAwsLEgACQCAAKAIARQ0AIAAQigYLCxEAAkAgABDrKiIADQAACyAACxAAIAAgAiABQQFxQQAQpAULFAAgABDGJSAAKAIcIAAoAiAQoSoLEgACQCAAKAIARQ0AIAAQvgoLCxIAAkAgACgCAEUNACAAENYnCwsSAAJAIAAoAgBFDQAgABDNKQsLEgACQCAAKAIARQ0AIAAQiwYLCxIAAkAgACgCAEUNACAAENApCwsSACAAKQMAEJ4fIABBGGoQ0CgLEgACQCAAKAIARQ0AIAAQ2ycLCxIAAkAgACgCAEUNACAAEK4GCwsSAAJAIAAoAgBFDQAgABC3BQsLEgACQCAAKAIARQ0AIAAQ/CULCxEAAkAgAEUNACAAIAEQ9wMLCxMAIAAgARCsLCAAKAIUIAEQ5CMLEQACQCAARQ0AIAAgARC3BgsLEgACQCAAKAIARQ0AIAAQ4ycLCxIAAkAgACgCAEUNACAAENgpCwsSACAAKQMAEJ8fIABBGGoQ1ygLEgACQCAAKAIARQ0AIAAQjAYLCxIAAkAgACgCAEUNACAAEM8DCwsSAAJAIAAoAgBFDQAgABDqJwsLEgACQCAAKAIARQ0AIAAQrwYLCxIAIAApAwAQnx8gAEEYahDcKAsSAAJAIAAoAgBFDQAgABCmIgsLEgAgACkDABCeHyAAQRhqEOEoCxIAAkAgACgCAEUNACAAEP8nCwsSAAJAIAAoAgBFDQAgABDpKQsLEgAgACkDCBCeHyAAQSBqEOkpCxIAAkAgACgCAEUNACAAEK8HCwsSAAJAIAAoAgBFDQAgABCbBgsLEgACQCAAKAIARQ0AIAAQgigLCxIAAkAgACgCAEUNACAAEO8pCwsSACAAKQMAEJ4fIABBGGoQ5igLEgACQCAAKAIARQ0AIAAQjQYLCxEAAkAgAEUNACAAIAEQkiELCxAAIAAgAjYCBCAAIAE2AgALDwAgABDzKSAAQQxqEL4mCw4AIAAgASABIAJqEK0eCxEAIAEgACgCBCAAKAIIEP8FCxEAIAEgACgCACAAKAIEEP8FCxUAIABBADYCCCAAQoCAgIDAADcCAAsPAAJAIABFDQAgARCIKAsLEgBBAC0A4OeeARogASAAEOIkCxEAIAEgACgCACAAKAIEEP8FCw4AIAFBf2ogACgCuAJJCw4AIAFBf2ogACgC1AJJCw4AIAFBf2ogACgCzAJJCw8AIAAQ2hIgAEEQahDaEgshACAAQtjsvP+Rkbm0WDcDCCAAQt74y97d39+dkn83AwALEwAgAEHw1oABNgIEIAAgATYCAAsiACAAQtikoIKS9unV2wA3AwggAELs8q6BvOXHrvUANwMACxMAIABBKDYCBCAAQbiAnAE2AgALEAAgACABIAIgA0HeABC7FwsQACAAIAEgAiADQd4AEJIPCxAAIAAgASgCACACIAMQuR0LEAAgACABKAIAIAIgAxCbFQsQACAAIAEoAgAgAiADEMYLCxAAIAAgASACIANB3wAQuxcLEAAgACABIAIgA0HfABCSDwsQACAAKAIAIAEgAhDpDEEACxIAQQAtAODnngEaIAEgABDiJAsRACABKAIAIAEoAgQgABDeBQsRACABIAAoAgAgACgCBBD/BQsRACABKAIAIAEoAgQgABDeBQsPAAJAIABFDQAgARCIKAsLDwACQCAARQ0AIAAQwCMLCw4AIAFBf2ogACgCuAJJCw4AIAFBf2ogACgCzAJJCw4AIAFBf2ogACgC1AJJCw8AIAAQmxEgAEEwahDgFgsRACABIAAoAgQgACgCCBD/BQsOACAAIAEgASACahC3HgsRACAAEPIYNgIYIABBADYCAAsRACAAKAIEIAAoAgggARCkEgsRACAAKAIAIgAQuhAgABCuKwsOACAAIAEgASACahC3HgsRACAAKAIAIAAoAgQgARCkEgsiACAAQsqZnv+e6rKh9AA3AwggAEKHzbm5xd/trbx/NwMACxEAIAEgACgCBCAAKAIIEP8FCxEAIAAoAgAgACgCBCABEPAOCxAAIAAgAhCeECABIAIQnhALDgAgACABIAEgAmoQyR4LFgBB0NyeARDKLBpBACkD0NyeARDGIAsWAEG43J4BEMosGkEAKQO43J4BEMYgCxYAQdjbngEQyiwaQQApA9jbngEQxiALFgBBwNueARDKLBpBACkDwNueARDGIAsWAEGo254BEMosGkEAKQOo254BEMYgCxYAQfjangEQyiwaQQApA/jangEQxiALFgBBkNueARDKLBpBACkDkNueARDGIAsWAEHg2p4BEMosGkEAKQPg2p4BEMYgCxYAQbDangEQyiwaQQApA7DangEQxiALFgBByNqeARDKLBpBACkDyNqeARDG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ENIVCwwAIABBwABBBBDSFQsMACABEKcmIAAQrSgLCwAgACABEIcKQQALDAAgARCGJSAAEKIoCwsAIAAgAUEAELMFCwsAIAAgAUEBEIQICwsAIAAgAUEAEJgECwsAIAAgAUEAEJUICwwAIAAoAgAgARD3AwsLACAAKAIAIAEQegsMACAAKAIAIAEQwQILDAAgACgCGCABEOQLCwwAIAEgACgCGBDDAQsKACABIAAQ5QgaCwsAIAAgAUEEEPIcCwsAIABBFEEEENIVCwsAIAAgAUEAEIQICw8AIAAgAUGAgICAAhDVHQsLACAAIAFBARCVCAsKACAAEPoDGkEBCwwAIAAoAgAgARC+BAsLACAAIAEgAhCtHQsMACAAKAIAIAEQtgsLCgAgAEEIahCAGQsMACAAELsmIAAQpywLCwAgAEE4QQQQ0hULDAAgABD0JyAAEKksCwsAIABBMEEEENIVCwsAIAAgASACENgTCwwAIAAoAgAgARDkCwsMACAAKAIAIAEQuRQLDAAgACgCACABENMZCwwAIAAoAgAgARDUGQsMACAAKAIAIAEQ1AsLDAAgACgCACABELMVCwwAIAAoAgAgARDmGAsMACAAKAIAIAEQ2Q0LDAAgACgCACABENYPCwwAIAAoAgAgARD0DgsMACAAKAIAIAEQnAYLDAAgACgCACABEIEYCwwAIAAoAgAgARDrBQsMACABIAAoAgAQvRkLDAAgACgCACABEMEECwwAIAAoAgAgARCgEgsMACAAQfAAQQgQ0hULDgAgAEHwg54BQaQFEDwLCgAgAEF4ahDcJAsLACAAIAEgAhDYAgsJACABIAAQ9ykLCQAgACABEPgjCwkAIABCATcDAAsJAEEEIAAQ8igLCQAgACABEIUqCwkAIABBADYCAAsJACAAIAEQ9SkLCAAgACABEGILBwAgAEF+cQsKACAAKAIAEIAVCwkAIAAgARDoDAsJACAAIAAQvBULCQAgACABEPgjCwgAIABByABqCwgAIABBkANqCwgAIABBgAJqCwkAIABCATcDAAsIACAAKAIMRQsJACAAIAEQrSoLCQAgACABEJ0qCwkAIAAgARCoKgsJACAAQQA2AgALCAAgABDwEAALCwBBACgC3OaeAUULDQAgAEGAgICAeDYCAAsMAEHSmpwBQQoQwwwLDABB1PSbAUEIEMMMCwwA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HwEZAR8BGQEIAB8GBtUHARECBwECAQUFPiEBcC0KBxABAB4SLAAc5B4CAQAHAQQBAgEPAcU7RAMBAwEABAEbAQIBAQIBAQoBBAEBAQEGAQQBAQEBAQEDAQIBAQIBAQEBAQEBAQEBAgEBAgQBBwEEAQQBAQEKAREFAwEFAREAGgYaBhoAACAABt4CAA4ADwAAAAAABQAAAHAABwAtAQEBAgECAQFICzAVEAFlBwIGAgIBBCMBHhtbCzoJCQEYBAEJAQMBBSsDOwkqGAEgNwEBAQQIBAEDBwoCHQE6AQEBAgQIAQkBCgIaAQICOQEEAgQCAgMDAR4CAwELAjkBBAUBAgQBFAIWBgEBOgEBAgEECAEHAwoCHgE7AQEBDAEJASgBAwE3AQEDBQMBBAcCCwIdAToBAgIBAQMDAQQHAgsCHAI5AgEBAgQIAQkBCgIdAUgBBAECAwEBCAFRAQIHDAhiAQIJCwdJAhsBAQEBATcOAQUBAgULASQJAWYEAQYBAgICGQIEAxAEDQECAgYBDwEAAwAEHAMdAh4CQAIBBwgBAgsJAS0DAQF1AiIBdgMEAgkBBgPbAgIBOgEBBwEBAQECCAYKAgEwHzEEMAoEAyYJDAIgBAIGOAEBAgMBAQU4CAICmAMBDQEHBAEGAQMCxkAAAcMhAAONAWAgAAZpAgAEAQogAlACAAEDAQQBGQIFAZcCGhINASYIGQsBASwDMAECBAICAgEkAUMGAgICAgwBCAEvATMBAQMCAgUCAQEqAggB7gECAQQBAAEAEBAQAAIAAeIBlQUAAwECBQQoAwQBpQIABEEFAAJPBEYLMQR7ATYPKQECAgoDMQQCAgcBPQMkBQEIPgEMAjQJAQEIBAIBXwMCBAYBAgGdAQMIFQI5AgEBAQEMAQkBDgcDBUMBAgYBAQIBAQMEAwEBDgJVCAIDAQEXAVEBAgYBAQIBAQIBAusBAgQGAgECGwJVCAIBAQJqAQEBAghlAQEBAgQBBQAJAQL1AQoEBAGQBAICBAEgCigGAgQIAQkGAgMuDQECAAcBBgEBUhYCBwECAQJ6BgMBAQIBBwEBSAIDAQEBAAILAjQFBQMXAQABBg8ADAMDAAU7BwABPwRRAQsCAAIALgIXAAUDBggIAgceBJQDADcEMggBDgEWBQEPAAcBEQIHAQIBBWQBoAcAAT0EAAT+AgAHbQcAYIDwADAKeAIFAQIDAAqGCsYKAAp2CgQGbAp2CnYKAgZuDXMKCAdnCmgHBxNtCmAKdgpGFAAKRgoAFAAD7woGChYKAAqAC6UKBgq2ClYKhgoGCgABAwYGCsYzAgUAPE4WAB4AAQABGQkOAwAEigoeCAEPIAonDwAKvAoABpoKJgrGChYKVgoACgAKAC0MORECABskBB0BCAGGBcoKAAgZBycJSwUWBqACAhACLkAJNAIeA0sFaAgYCCkHAAYwCgYKAB+eCioEcAeGHoAKPAqQCgcU+woACnYKAApmCgYUTAwAE10KAApWHeMKRgoACmYVAG8ACgAKVgqGCgEHAAoAFwAKABQMFGwZADIACgAKAAr3CgAJgAoAOwEDAQRMLQEPAA0ACgAAAQAAAAAAAAAKAAAAAAAAAGQAAAAAAAAA6AMAAAAAAAAQJwAAAAAAAKCGAQAAAAAAQEIPAAAAAACAlpgAAAAAAADh9QUAAAAAAMqaOwAAAAAA5AtUAgAAAADodkgXAAAAABCl1OgAAAAAoHJOGAkAAABAehDzWgAAAIDGpH6NAwBsaWJyYXJ5L2NvcmUvc3JjL251bS9kZWMyZmx0L2RlY2ltYWxfc2VxLnJzADg5IAArAAAAVgAAACcAAAA4OSAAKwAAAIgAAAATAAAAODkgACsAAACwAAAAIAAAADg5IAArAAAAxwAAACUAAAA4OSAAKwAAAPQAAAAVAAAAODkgACsAAAD/AAAAGAAAAAAAAAgBCAMIBhAJEA0QEhgXGB0YJCArIDMgPCBGKFAoWyhnMHMwgDCOOJw4qzi7OMxA3UDvQAJJFUkpST5RU1FpUYBRmFmwWclZ42H9YRhiNGpQam1qi2qqcsly6XIKeyt7TXtwg5ODt4PcgwKMKIxPjHeUn5TIlPKcHAUcBRwFHAUFAgUBAgUGAgUDAQIFAQUGAgUHCAECBQMJAAYCBQEJBQMBAgUJBwYFBgIFBAgIAggBAgUCBAQBBAAGAgUBAgIABwADAQIFBgEAAwUBBQYCBQMABQEHBQcIAQIFAQUCBQgHCAkABgIFBwYCCQMJBAUDAQIFAwgBBAYJBwIGBQYCBQEJAAcDBAgGAwIIAQIFCQUDBgcEAwEGBAAGAgUEBwYIAwcBBQgCAAMBAgUCAwgEAQgFBwkBAAEFBgIFAQEJAgAJAggJBQUABwgBAgUFCQYABAYEBAcHBQMJAAYCBQIJCAACAwICAwgHBgkFAwECBQEECQABAQYBAQkDCAQHBgUGAgUHBAUABQgABQkGCQIDCAIIAQIFAwcCBQIJAAIJCAQGAQkBBAAGAgUBCAYCBgQFAQQJAgMACQUHAAMBAgUJAwEDAgIFBwQGAQUEBwgFAQUGAgUEBgUGBgECCAcDAAcHAwkCBQcIAQIFAgMCCAMABgQDBgUDCAYJBgIICQAGAgUBAQYEAQUDAgEIAgYJAwQIAQQEBQMBAgUFCAIABwYGAAkBAwQGBwQABwICBgUGAgUCCQEAAwgDAAQFBgcDAwcAAwYBAwIIAQIFAQQFBQEJAQUCAggDBgYIBQEIAAYGBAAGAgUHAgcFCQUHBgEEAQgDBAIFCQADAwIAAwECBQMGAwcJBwgIAAcACQEHAQIJBQEGBgABBQYCBQEIAQgJCAkEAAMFBAUIBQYEBwUIAwAABwgBAgUJAAkECQQHAAEHBwIJAggCAwcJAQUAAwkABgIFBAUEBwQHAwUACAgGBAYEAQEICQUHBQEJBQMBAgUCAgcDBwMGBwUEBAMCAwIABQkEBwgHBQkHBgUGAgUBAQMGCAYIAwcHAgEGAQYAAgkHAwkDBwkICAIIAQIFBQYIBAMEAQgIBgAIAAgAAQQIBgkGCAkJBAEEAAYCBQIIBAIBBwAJBAMABAAEAAAHBAMECAQECQcABwADAQIFAQQCAQAIBQQHAQUCAAIAAAMHAQcEAgIECAUDBQEFBgIFBwEABQQCBwMFBwYAAQAAAQgFCAcBAQIEAgYHBQcIAQIFAwUFAgcBAwYHCAgAAAUAAAkCCQMFBQYCAQMDBwgJAAYCBQEHBwYDBQYIAwkEAAACBQAEBgQGBwcIAQAGBggJBAUDAQIFCAgIAQcIBAEJBwAAAQIFAgMCAwMICQAFAwMEBAcCBgUGAgUEBAQACAkCAAkIBQAABgIGAQYBBgkEBQIGBgcCAwYDAggBAgUCAgIABAQGAAQJAgUAAwEDAAgACAQHAgYDAwMGAQgBBgQABgIFAQEBAAICAwACBAYCBQEFBgUEAAQCAwYDAQYGCAAJAAgCAAMBAgUFBQUBAQEFAQIDAQIFBwgCBwACAQEIAQUIAwQABAUEAQABBQYCBQIHBwUFBQcFBgEFBgIICQEDBQEABQkABwkBBwACAgcABQAHCAECBQEDCAcHBwgH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L25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2hzdHItMi4wLjEvc3JjL2xpYi5ycwAAbIggAFoAAAAZAQAAPAAAAAAAAAAAAAAAAQAAAFMDAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9qcy1zeXMtMC4zLjc3L3NyYy9saWIucnNyZXR1cm4gdGhpc+iIIABdAAAA+xgAAAEAAAB0fycAbwAAACQBAAAOAAAAM0QmAHAAAABNAAAALgAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNS9zcmMvYXJjaC9hbGwvdHdvd2F5LnJzgIkgAGgAAAC/AAAALgAAAICJIABoAAAAxwAAACkAAACAiSAAaAAAAMwAAAA0AAAAgIkgAGgAAADUAAAAJAAAAICJIABoAAAA1AAAADEAAACAiSAAaAAAANcAAAAiAAAAgIkgAGgAAADXAAAAMwAAAICJIABoAAAA8QAAAC4AAACAiSAAaAAAAPgAAAApAAAAgIkgAGgAAAD9AAAANAAAAICJIABoAAAABAEAABgAAACAiSAAaAAAAAQBAAAlAAAAgIkgAGgAAADCAQAAHQAAAICJIABoAAAAwwEAABkAAACAiSAAaAAAAAoCAAAbAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbWVtY2hyLTIuNy41L3NyYy9hcmNoL2FsbC9tb2QucnMAAADYiiAAZQAAACwAAAAeAAAAPHNlYXJjaGVyIGZ1bmN0aW9uPgBQiyAAEwAAAGNhbGw8c2VhcmNoZXIga2luZCB1bmlvbj4AAABwiyAAFQAAAEZpbmRlcmhhc2gbWzEyMzQ1Njc4ORtbMG1Jb0Vycm9yT3V0T2ZCb3VuZHMAAxonAEoAAAALAgAAFwAAAAMaJwBKAAAACgIAADIAAABApCAAbQAAAGgAAABCAAAAQKQgAG0AAABpAAAANAAAAECkIABtAAAAagAAACIAAABApCAAbQAAAG8AAAAXAAAA0KQgAHAAAACEAAAAMQAAANCkIABwAAAAhQAAADQAAADQpCAAcAAAAIcAAAAlAAAAGBAnAGwAAADwAAAAFQAAABgQJwBsAAAA+gAAABMAAAAAAAAABAAAAAAAAAABAAAAQKQgAG0AAACJAAAAGwAAAECkIABtAAAAjgAAABsAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9udW0tYmlnaW50LTAuNC42L3NyYy9iaWd1aW50L211bHRpcGxpY2F0aW9uLnJzAJyMIABzAAAALAAAABwAAABjYXJyeSBvdmVyZmxvdyBkdXJpbmcgbXVsdGlwbGljYXRpb24hAAAAII0gACUAAACcjCAAcwAAADkAAAAFAAAAnIwgAHMAAABHAAAAEwAAAJyMIABzAAAASAAAABsAAACcjCAAcwAAAE8AAAATAAAAnIwgAHMAAABQAAAAGwAAAJyMIABzAAAALQEAACYAAACcjCAAcwAAAC4BAAAmAAAAnIwgAHMAAAAxAQAAJgAAAJyMIABzAAAAMgEAACYAAACcjCAAcwAAADMBAAAmAAAAnIwgAHMAAACTAQAAJwAAAJyMIABzAAAAkgEAACYAAACcjCAAcwAAAOYAAAAaAAAAnIwgAHMAAADnAAAAGgAAAJyMIABzAAAA7AAAACUAAACcjCAAcwAAAPQAAAAWAAAAnIwgAHMAAAD1AAAAFgAAAJyMIABzAAAAAAEAABYAAACcjCAAcwAAABIBAAAeAAAAnIwgAHMAAAAPAQAAHgAAAJyMIABzAAAAoAAAAB8AAACcjCAAcwAAAKQAAAAWAAAAnIwgAHMAAABoAAAAHwAAAJyMIABzAAAAnAEAACQAAACcjCAAcwAAAK8BAAAcAAAAnIwgAHMAAAC5AQAADwAAAJyMIABzAAAAvAEAAA8AAABjaHVuayBzaXplIG11c3QgYmUgbm9uLXplcm8AAI8gABsAAAAYECcAbAAAADMAAAAKAAAAGBAnAGwAAABJAAAAFAAAABgQJwBsAAAAXwAAAA4AAAAYECcAbAAAAFUAAAASAAAAGBAnAGwAAAB4AAAAFAAAABgQJwBsAAAAfQAAAA0AAAAYECcAbAAAAH8AAAAaAAAAGBAnAGwAAACEAAAACgAAABgQJwBsAAAAhwAAABcAAAAYECcAbAAAAIkAAAASAAAAGBAnAGwAAABiAgAAEwAAABgQJwBsAAAAawIAABcAAAAYECcAbAAAAG0CAAANAAAAGBAnAGwAAABmAgAAEQAAABgQJwBsAAAAfAIAABMAAAAYECcAbAAAAJMCAAANAAAAGBAnAGwAAACGAgAAEQAAABgQJwBsAAAArgIAABMAAAAYECcAbAAAAOUCAAAcAAAAGBAnAGwAAADnAgAADQAAABgQJwBsAAAA3wIAABEAAAAYECcAbAAAANUCAAAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkRvUzxQAAAAAAAAAAAAAAJVzwkgNAAAAABC/gQwAAACXnNt1CwAAAAAAAAAAAAAAkRvUzwoAAAAAypo7CQAAACtti4wJAAAAAAChGQgAAAAhEJ8wCAAAAADB9lcIAAAAgZvCmAgAAAAAAAAAAAAAAHFFdRgHAAAAgLx9JAcAAAB7Zkc1BwAAAABAS0wHAAAAHW5aawcAAACA4ayUBwAAAGeD8coHAAAAAABkCwYAAABRSo0OBgAAAECuaRIGAAAASZEXFwYAAAAAELkcBgAAAJlIdCMGAAAAQKhzKwYAAABBO+Y0BgAAAAAAAAAAAAAAwTz6TAYAAABA2BNcBgAAABm1kW0GAAAAABC/gQYAAADJ4O2YBgAAAEA+d7MGAAAA0cS70QYAAAAAACT0BgAAAEnT5wYFAAAAoDDKBwUAAAC7K8MIBQAAAABs1AkFAAAA/az/CgUAAADgvkYMBQAAAO+Gqw0FAAAAAAAwDwUAAADxOtYQBQAAACBfoBIFAAAA46qQFAUAAAAAdKkWBQAAACUo7RgFAAAAYE1eGwUAAACXgv8dBQAAAACA0yAFAAAAmRfdIwUAAACgNR8nBQAAAAvhnCoFAAAAADxZLgUAAABNhFcyBQAAAOATmzYFAAAAP2EnOwUAAAAAAAAAAAAAAEGhKEUFAAAAIBSlSgUAAAAzRnlQBQAAAABEqVYFAAAAdTk5XQUAAABgci1kBQAAAOdaimsFAAAAAIBUcwUAAADpj5B7BQAAAKBaQ4QFAAAAW9JxjQUAAAAADCGXBQAAAJ0/VqEFAAAA4MgWrAUAAACPJ2i3BQAAAAAAUMMFAAAAkRvUzwUAAAAgafrcBQAAAIP9yOoFAAAAABRG+QUAAACxhBwDBAAAABCrQgMEAAAAISxqAwQAAAAAEJMDBAAAAOFevQMEAAAAECHpAwQAAADxXhYEBAAAAAAhRQQEAAAA0W91BAQAAAAQVKcEBAAAAIHW2gQEAAAAAAAQBQQAAACB2UYFBAAAABBsfwUEAAAA0cC5BQQAAAAA4fUFBAAAAPHVMwYEAAAAEKlzBgQAAADhY7UGBAAAAAAQ+QYEAAAAIbc+BwQAAAAQY4YHBAAAALEd0AcEAAAAAPEbCAQAAAAR52kIBAAAABAKuggEAAAAQWQMCQQAAAAAAGEJBAAAAMHntwkEAAAAECYRCgQAAACRxWwKBAAAAADRygoEAAAAMVMrCwQAAAAQV44LBAAAAKHn8wsEAAAAABBcDAQAAABh28YMBAAAABBVNA0EAAAAcYikDQQAAAAAgRcOBAAAAFFKjQ4EAAAAEPAFDwQAAAABfoEPBAAAAAAAAAAAAAAAAYKBEAQAAAAQEAYRBAAAAFG2jREEAAAAAIEYEgQAAABxfKYSBAAAABC1NxMEAAAAYTfMEwQAAAAAEGQUBAAAAKFL/xQEAAAAEPedFQQAAAAxH0AWBAAAAADR5RYEAAAAkRmPFwQAAAAQBjwYBAAAAMGj7BgEAAAAAAChGQQAAABBKFkaBAAAABAqFRsEAAAAERPVGwQAAAAA8ZgcBAAAALHRYB0EAAAAEMMsHgQAAAAh0/weBAAAAAAQ0R8EAAAA4YepIAQAAAAQSYYhBAAAAPFhZyIEAAAAAOFMIwQAAADR1DYkBAAAABBMJSUEAAAAgVUYJgQAAAAAABAnBAAAAIFaDCgEAAAAEHQNKQQAAADRWxMqBAAAAAAhHisEAAAA8dItLAQAAAAQgUItBAAAAOE6XC4EAAAAABB7LwQAAAAhEJ8wBAAAABBLyDEEAAAAsdD2MgQAAAAAsSo0BAAAABH8YzUEAAAAEMKiNgQAAABBE+c3BAAAAAAAMTkEAAAAwZiAOgQAAAAQ7tU7BAAAAJEQMT0EAAAAABGSPgQAAAAxAPk/BAAAABDvZUEEAAAAoe7YQgQAAAAAEFJEBAAAAGFk0UUEAAAAEP1WRwQAAABx6+JIBAAAAABBdUoEAAAAUQ8OTAQAAAAQaK1NBAAAAAFdU08EAAAAAAAAUQQAAAABY7NSBAAAABCYbVQEAAAAUbEuVgQAAAAAwfZXBAAAAHHZxVkEAAAAEA2cWwQAAABhbnldBAAAAAAQXl8EAAAAoQRKYQQAAAAQXz1jBAAAADEyOGUEAAAAAJE6ZwQAAACRjkRpBAAAABA+VmsEAAAAwbJvbQQAAAAAAJFvBAAAAEE5unEEAAAAEHLrcwQAAAARviR2BAAAAAAxZngEAAAAsd6vegQAAAAQ2wF9BAAAACE6XH8EAAAAABC/gQQAAADhcCqEBAAAABBxnoYEAAAA8SQbiQQAAAAAoaCLBAAAANH5Lo4EAAAAEETGkAQAAACBlGaTBAAAAAAAEJYEAAAAgZvCmAQAAAAQfH6bBAAAANG2Q54EAAAAAGESoQQAAADxj+qjBAAAABBZzKYEAAAA4dG3qQQAAAAAEK2sBAAAACEprK8EAAAAEDO1sgQAAACxQ8i1BAAAAABx5bgEAAAAEdEMvAQAAAAQej6/BAAAAEGCesIEAAAAAADBxQQAAADBCRLJBAAAABC2bcwEAAAAkRvUzwQAAAAAUUXTBAAAADFtwdYEAAAAEIdI2gQAAAChtdrdBAAAAAAQeOEEAAAAYa0g5QQAAAAQpdToBAAAAHEOlOwEAAAAAAFf8AQAAABRlDX0BAAAABDgF/gEAAAAAfwF/AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKnmAAAKAAAAAAAAAAAAAAAJPQAABgAAAEC2AAAGAAAAp0EAAAUAAAAAAAAAAAAAAKnmAAAFAAAAECcAAAQAAAAxOQAABAAAAABRAAAEAAAAkW8AAAQAAAAQlgAABAAAAMHFAAAEAAAAAAAAAAAAAAAxEwAAAwAAAMgWAAADAAAAyxoAAAMAAABAHwAAAwAAAC0kAAADAAAAmCkAAAMAAACHLwAAAwAAAAA2AAADAAAACT0AAAMAAACoRAAAAwAAAONMAAADAAAAwFUAAAMAAABFXwAAAwAAAHhpAAADAAAAX3QAAAMAAAAAAAAAAAAAAGGMAAADAAAAiJkAAAMAAAB7pwAAAwAAAEC2AAADAAAA3cUAAAMAAABY1gAAAwAAALfnAAADAAAAAPoAAAMAAACRBgAAAgAAAOQGAAACAAAAOQcAAAIAAACQBwAAAgAAAOkHAAACAAAARAgAAAIAAAChCAAAAgAAAAAJAAACAAAAYQkAAAIAAADECQAAAgAAACkKAAACAAAAkAoAAAIAAAD5CgAAAgAAAGQLAAACAAAA0QsAAAIAAABADAAAAgAAALEMAAACAAAAJA0AAAIAAACZDQAAAgAAABAOAAACAAAAiQ4AAAIAAAAEDwAAAgAAAIEPAAACAAAAAAAAAAAAAACBEAAAAgAAAAQRAAACAAAAiREAAAIAAAAQEgAAAgAAAJkSAAACAAAAJBMAAAIAAACxEwAAAgAAAEAUAAACAAAA0RQAAAIAAABkFQAAAgAAAPkVAAACAAAAkBYAAAIAAAApFwAAAgAAAMQXAAACAAAAYRgAAAIAAAAAGQAAAgAAAKEZAAACAAAARBoAAAIAAADpGgAAAgAAAJAbAAACAAAAORwAAAIAAADkHAAAAgAAAJEdAAACAAAAQB4AAAIAAADxHgAAAgAAAKQfAAACAAAAWSAAAAIAAAAQIQAAAgAAAMkhAAACAAAAhCIAAAIAAABBIwAAAgAAAAAkAAACAAAAwSQAAAIAAACEJQAAAgAAAEkmAAACAAAAECcAAAIAAADZJwAAAgAAAKQoAAACAAAAcSkAAAIAAABAKgAAAgAAABErAAACAAAA5CsAAAIAAAC5LAAAAgAAAJAtAAACAAAAaS4AAAIAAABELwAAAgAAACEwAAACAAAAADEAAAIAAADhMQAAAgAAAMQyAAACAAAAqTMAAAIAAACQNAAAAgAAAHk1AAACAAAAZDYAAAIAAABRNwAAAgAAAEA4AAACAAAAMTkAAAIAAAAkOgAAAgAAABk7AAACAAAAEDwAAAIAAAAJPQAAAgAAAAQ+AAACAAAAAT8AAAIAAAAAAAAAAAAAAAFBAAACAAAABEIAAAIAAAAJQwAAAgAAABBEAAACAAAAGUUAAAIAAAAkRgAAAgAAADFHAAACAAAAQEgAAAIAAABRSQAAAgAAAGRKAAACAAAAeUsAAAIAAACQTAAAAgAAAKlNAAACAAAAxE4AAAIAAADhTwAAAgAAAABRAAACAAAAIVIAAAIAAABEUwAAAgAAAGlUAAACAAAAkFUAAAIAAAC5VgAAAgAAAORXAAACAAAAEVkAAAIAAABAWgAAAgAAAHFbAAACAAAApFwAAAIAAADZXQAAAgAAABBfAAACAAAASWAAAAIAAACEYQAAAgAAAMFiAAACAAAAAGQAAAIAAABBZQAAAgAAAIRmAAACAAAAyWcAAAIAAAAQaQAAAgAAAFlqAAACAAAApGsAAAIAAADxbAAAAgAAAEBuAAACAAAAkW8AAAIAAADkcAAAAgAAADlyAAACAAAAkHMAAAIAAADpdAAAAgAAAER2AAACAAAAoXcAAAIAAAAAeQAAAgAAAGF6AAACAAAAxHsAAAIAAAApfQAAAgAAAJB+AAACAAAA+X8AAAIAAABkgQAAAgAAANGCAAACAAAAQIQAAAIAAACxhQAAAgAAACSHAAACAAAAmYgAAAIAAAAQigAAAgAAAImLAAACAAAABI0AAAIAAACBjgAAAgAAAACQAAACAAAAgZEAAAIAAAAEkwAAAgAAAImUAAACAAAAEJYAAAIAAACZlwAAAgAAACSZAAACAAAAsZoAAAIAAABAnAAAAgAAANGdAAACAAAAZJ8AAAIAAAD5oAAAAgAAAJCiAAACAAAAKaQAAAIAAADEpQAAAgAAAGGnAAACAAAAAKkAAAIAAAChqgAAAgAAAESsAAACAAAA6a0AAAIAAACQrwAAAgAAADmxAAACAAAA5LIAAAIAAACRtAAAAgAAAEC2AAACAAAA8bcAAAIAAACkuQAAAgAAAFm7AAACAAAAEL0AAAIAAADJvgAAAgAAAITAAAACAAAAQcIAAAIAAAAAxAAAAgAAAMHFAAACAAAAhMcAAAIAAABJyQAAAgAAABDLAAACAAAA2cwAAAIAAACkzgAAAgAAAHHQAAACAAAAQNIAAAIAAAAR1AAAAgAAAOTVAAACAAAAudcAAAIAAACQ2QAAAgAAAGnbAAACAAAARN0AAAIAAAAh3wAAAgAAAADhAAACAAAA4eIAAAIAAADE5AAAAgAAAKnmAAACAAAAkOgAAAIAAAB56gAAAgAAAGTsAAACAAAAUe4AAAIAAABA8AAAAgAAADHyAAACAAAAJPQAAAIAAAAZ9gAAAgAAABD4AAACAAAACfoAAAIAAAAE/AAAAgAAAAH+AAACAAAAAAAAAAAAAAA0oyAAZAAAAFYDAAArAAAAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9pdGVyLnJzAACkoCAATgAAAPYFAAAVAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuNi9zcmMvYmlndWludC9kaXZpc2lvbi5ycwAAAAShIABtAAAAHAAAAAYAAABhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvAAAAhKEgABkAAAAEoSAAbQAAAFcAAAAJAAAABKEgAG0AAADdAAAAOQAAAAShIABtAAAA7gAAAB8AAAAEoSAAbQAAANIAAAAJAAAABKEgAG0AAAAVAQAADgAAAAShIABtAAAAFgEAAA4AAAAEoSAAbQAAABoBAAAPAAAABKEgAG0AAABRAQAADAAAAAShIABtAAAAIAEAACEAAAAEoSAAbQAAACEBAAAYAAAABKEgAG0AAABCAQAAPAAAAAShIABtAAAARgEAACkAAAAEoSAAbQAAAEsBAAAPAAAABKEgAG0AAABOAQAAGwAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL251bS1iaWdpbnQtMC40LjYvc3JjL2JpZ3VpbnQvc2hpZnQucnMAAIiiIABqAAAAHgAAABwAAACIoiAAagAAACgAAAAZAAAAiKIgAGoAAAAuAAAAEgAAAIiiIABqAAAASgAAACMAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9udW0tYmlnaW50LTAuNC42L3NyYy9iaWd1aW50LnJzNKMgAGQAAABjAwAAFwAAAG5lZ2F0aXZlIHZhbHVlcyBhcmUgbm9uLXplcm8vaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9udW0tYmlnaW50LTAuNC42L3NyYy9iaWdpbnQvc2hpZnQucnMAAADEoyAAaQAAAGYAAAAoAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuNi9zcmMvYmlndWludC9hZGRpdGlvbi5ycwAAAECkIABtAAAAOwAAABoAAAAAAAAABAAAAAQAAABOAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuNi9zcmMvYmlndWludC9zdWJ0cmFjdGlvbi5yc9CkIABwAAAANAAAABoAAADQpCAAcAAAADUAAAAaAAAAQ2Fubm90IHN1YnRyYWN0IGIgZnJvbSBhIGJlY2F1c2UgYiBpcyBsYXJnZXIgdGhhbiBhLmClIAA0AAAA0KQgAHAAAABFAAAABQAAANCkIABwAAAAXQAAABoAAADQpCAAcAAAAF4AAAAaAAAAYXNzZXJ0aW9uIGZhaWxlZDogYV9oaS5pc19lbXB0eSgpAAAA0KQgAHAAAABiAAAABQAAANCkIABwAAAAZQAAAAUAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9udW0taW50ZWdlci0wLjEuNDYvc3JjL3Jvb3RzLnJzEKYgAGQAAACDAQAAAQAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL29uY2VfY2VsbC0xLjIxLjMvc3JjL2ltcF9zdGQucnOEpiAAZAAAAKEAAAA2AAAAhKYgAGQAAACbAAAACQAAADM4OzU7MDM4OzU7MTM4OzU7MjM4OzU7MzM4OzU7NDM4OzU7NTM4OzU7NjM4OzU7NzM4OzU7ODM4OzU7OTM4OzU7MTAzODs1OzExMzg7NTsxMjM4OzU7MTMzODs1OzE0Mzg7NTsxNTM4OzU7MTYzODs1OzE3Mzg7NTsxODM4OzU7MTkzODs1OzIwMzg7NTsyMTM4OzU7MjIzODs1OzIzMzg7NTsyNDM4OzU7MjUzODs1OzI2Mzg7NTsyNzM4OzU7MjgzODs1OzI5Mzg7NTszMDM4OzU7MzEzODs1OzMyMzg7NTszMzM4OzU7MzQzODs1OzM1Mzg7NTszNjM4OzU7MzczODs1OzM4Mzg7NTszOTM4OzU7NDAzODs1OzQxMzg7NTs0MjM4OzU7NDMzODs1OzQ0Mzg7NTs0NTM4OzU7NDYzODs1OzQ3Mzg7NTs0ODM4OzU7NDkzODs1OzUwMzg7NTs1MTM4OzU7NTIzODs1OzUzMzg7NTs1NDM4OzU7NTUzODs1OzU2Mzg7NTs1NzM4OzU7NTgzODs1OzU5Mzg7NTs2MDM4OzU7NjEzODs1OzYyMzg7NTs2MzM4OzU7NjQzODs1OzY1Mzg7NTs2NjM4OzU7NjczODs1OzY4Mzg7NTs2OTM4OzU7NzAzODs1OzcxMzg7NTs3MjM4OzU7NzMzODs1Ozc0Mzg7NTs3NTM4OzU7NzYzODs1Ozc3Mzg7NTs3ODM4OzU7NzkzODs1OzgwMzg7NTs4MTM4OzU7ODIzODs1OzgzMzg7NTs4NDM4OzU7ODUzODs1Ozg2Mzg7NTs4NzM4OzU7ODgzODs1Ozg5Mzg7NTs5MDM4OzU7OTEzODs1OzkyMzg7NTs5MzM4OzU7OTQzODs1Ozk1Mzg7NTs5NjM4OzU7OTczODs1Ozk4Mzg7NTs5OTM4OzU7MTAwMzg7NTsxMDEzODs1OzEwMjM4OzU7MTAzMzg7NTsxMDQzODs1OzEwNTM4OzU7MTA2Mzg7NTsxMDczODs1OzEwODM4OzU7MTA5Mzg7NTsxMTAzODs1OzExMTM4OzU7MTEyMzg7NTsxMTMzODs1OzExNDM4OzU7MTE1Mzg7NTsxMTYzODs1OzExNzM4OzU7MTE4Mzg7NTsxMTkzODs1OzEyMDM4OzU7MTIxMzg7NTsxMjIzODs1OzEyMzM4OzU7MTI0Mzg7NTsxMjUzODs1OzEyNjM4OzU7MTI3Mzg7NTsxMjgzODs1OzEyOTM4OzU7MTMwMzg7NTsxMzEzODs1OzEzMjM4OzU7MTMzMzg7NTsxMzQzODs1OzEzNTM4OzU7MTM2Mzg7NTsxMzczODs1OzEzODM4OzU7MTM5Mzg7NTsxNDAzODs1OzE0MTM4OzU7MTQyMzg7NTsxNDMzODs1OzE0NDM4OzU7MTQ1Mzg7NTsxNDYzODs1OzE0NzM4OzU7MTQ4Mzg7NTsxNDkzODs1OzE1MDM4OzU7MTUxMzg7NTsxNTIzODs1OzE1MzM4OzU7MTU0Mzg7NTsxNTUzODs1OzE1NjM4OzU7MTU3Mzg7NTsxNTgzODs1OzE1OTM4OzU7MTYwMzg7NTsxNjEzODs1OzE2MjM4OzU7MTYzMzg7NTsxNjQzODs1OzE2NTM4OzU7MTY2Mzg7NTsxNjczODs1OzE2ODM4OzU7MTY5Mzg7NTsxNzAzODs1OzE3MTM4OzU7MTcyMzg7NTsxNzMzODs1OzE3NDM4OzU7MTc1Mzg7NTsxNzYzODs1OzE3NzM4OzU7MTc4Mzg7NTsxNzkzODs1OzE4MDM4OzU7MTgxMzg7NTsxODIzODs1OzE4MzM4OzU7MTg0Mzg7NTsxODUzODs1OzE4NjM4OzU7MTg3Mzg7NTsxODgzODs1OzE4OTM4OzU7MTkwMzg7NTsxOTEzODs1OzE5MjM4OzU7MTkzMzg7NTsxOTQzODs1OzE5NTM4OzU7MTk2Mzg7NTsxOTczODs1OzE5ODM4OzU7MTk5Mzg7NTsyMDAzODs1OzIwMTM4OzU7MjAyMzg7NTsyMDMzODs1OzIwNDM4OzU7MjA1Mzg7NTsyMDYzODs1OzIwNzM4OzU7MjA4Mzg7NTsyMDkzODs1OzIxMDM4OzU7MjExMzg7NTsyMTIzODs1OzIxMzM4OzU7MjE0Mzg7NTsyMTUzODs1OzIxNjM4OzU7MjE3Mzg7NTsyMTgzODs1OzIxOTM4OzU7MjIwMzg7NTsyMjEzODs1OzIyMjM4OzU7MjIzMzg7NTsyMjQzODs1OzIyNTM4OzU7MjI2Mzg7NTsyMjczODs1OzIyODM4OzU7MjI5Mzg7NTsyMzAzODs1OzIzMTM4OzU7MjMyMzg7NTsyMzMzODs1OzIzNDM4OzU7MjM1Mzg7NTsyMzYzODs1OzIzNzM4OzU7MjM4Mzg7NTsyMzkzODs1OzI0MDM4OzU7MjQxMzg7NTsyNDIzODs1OzI0MzM4OzU7MjQ0Mzg7NTsyNDUzODs1OzI0NjM4OzU7MjQ3Mzg7NTsyNDgzODs1OzI0OTM4OzU7MjUwMzg7NTsyNTEzODs1OzI1MjM4OzU7MjUzMzg7NTsyNTQzODs1OzI1NTQ4OzU7MDQ4OzU7MTQ4OzU7MjQ4OzU7MzQ4OzU7NDQ4OzU7NTQ4OzU7NjQ4OzU7NzQ4OzU7ODQ4OzU7OTQ4OzU7MTA0ODs1OzExNDg7NTsxMjQ4OzU7MTM0ODs1OzE0NDg7NTsxNTQ4OzU7MTY0ODs1OzE3NDg7NTsxODQ4OzU7MTk0ODs1OzIwNDg7NTsyMTQ4OzU7MjI0ODs1OzIzNDg7NTsyNDQ4OzU7MjU0ODs1OzI2NDg7NTsyNzQ4OzU7Mjg0ODs1OzI5NDg7NTszMDQ4OzU7MzE0ODs1OzMyNDg7NTszMzQ4OzU7MzQ0ODs1OzM1NDg7NTszNjQ4OzU7Mzc0ODs1OzM4NDg7NTszOTQ4OzU7NDA0ODs1OzQxNDg7NTs0MjQ4OzU7NDM0ODs1OzQ0NDg7NTs0NTQ4OzU7NDY0ODs1OzQ3NDg7NTs0ODQ4OzU7NDk0ODs1OzUwNDg7NTs1MTQ4OzU7NTI0ODs1OzUzNDg7NTs1NDQ4OzU7NTU0ODs1OzU2NDg7NTs1NzQ4OzU7NTg0ODs1OzU5NDg7NTs2MDQ4OzU7NjE0ODs1OzYyNDg7NTs2MzQ4OzU7NjQ0ODs1OzY1NDg7NTs2NjQ4OzU7Njc0ODs1OzY4NDg7NTs2OTQ4OzU7NzA0ODs1OzcxNDg7NTs3MjQ4OzU7NzM0ODs1Ozc0NDg7NTs3NTQ4OzU7NzY0ODs1Ozc3NDg7NTs3ODQ4OzU7Nzk0ODs1OzgwNDg7NTs4MTQ4OzU7ODI0ODs1OzgzNDg7NTs4NDQ4OzU7ODU0ODs1Ozg2NDg7NTs4NzQ4OzU7ODg0ODs1Ozg5NDg7NTs5MDQ4OzU7OTE0ODs1OzkyNDg7NTs5MzQ4OzU7OTQ0ODs1Ozk1NDg7NTs5NjQ4OzU7OTc0ODs1Ozk4NDg7NTs5OTQ4OzU7MTAwNDg7NTsxMDE0ODs1OzEwMjQ4OzU7MTAzNDg7NTsxMDQ0ODs1OzEwNTQ4OzU7MTA2NDg7NTsxMDc0ODs1OzEwODQ4OzU7MTA5NDg7NTsxMTA0ODs1OzExMTQ4OzU7MTEyNDg7NTsxMTM0ODs1OzExNDQ4OzU7MTE1NDg7NTsxMTY0ODs1OzExNzQ4OzU7MTE4NDg7NTsxMTk0ODs1OzEyMDQ4OzU7MTIxNDg7NTsxMjI0ODs1OzEyMzQ4OzU7MTI0NDg7NTsxMjU0ODs1OzEyNjQ4OzU7MTI3NDg7NTsxMjg0ODs1OzEyOTQ4OzU7MTMwNDg7NTsxMzE0ODs1OzEzMjQ4OzU7MTMzNDg7NTsxMzQ0ODs1OzEzNTQ4OzU7MTM2NDg7NTsxMzc0ODs1OzEzODQ4OzU7MTM5NDg7NTsxNDA0ODs1OzE0MTQ4OzU7MTQyNDg7NTsxNDM0ODs1OzE0NDQ4OzU7MTQ1NDg7NTsxNDY0ODs1OzE0NzQ4OzU7MTQ4NDg7NTsxNDk0ODs1OzE1MDQ4OzU7MTUxNDg7NTsxNTI0ODs1OzE1MzQ4OzU7MTU0NDg7NTsxNTU0ODs1OzE1NjQ4OzU7MTU3NDg7NTsxNTg0ODs1OzE1OTQ4OzU7MTYwNDg7NTsxNjE0ODs1OzE2MjQ4OzU7MTYzNDg7NTsxNjQ0ODs1OzE2NTQ4OzU7MTY2NDg7NTsxNjc0ODs1OzE2ODQ4OzU7MTY5NDg7NTsxNzA0ODs1OzE3MTQ4OzU7MTcyNDg7NTsxNzM0ODs1OzE3NDQ4OzU7MTc1NDg7NTsxNzY0ODs1OzE3NzQ4OzU7MTc4NDg7NTsxNzk0ODs1OzE4MDQ4OzU7MTgxNDg7NTsxODI0ODs1OzE4MzQ4OzU7MTg0NDg7NTsxODU0ODs1OzE4NjQ4OzU7MTg3NDg7NTsxODg0ODs1OzE4OTQ4OzU7MTkwNDg7NTsxOTE0ODs1OzE5MjQ4OzU7MTkzNDg7NTsxOTQ0ODs1OzE5NTQ4OzU7MTk2NDg7NTsxOTc0ODs1OzE5ODQ4OzU7MTk5NDg7NTsyMDA0ODs1OzIwMTQ4OzU7MjAyNDg7NTsyMDM0ODs1OzIwNDQ4OzU7MjA1NDg7NTsyMDY0ODs1OzIwNzQ4OzU7MjA4NDg7NTsyMDk0ODs1OzIxMDQ4OzU7MjExNDg7NTsyMTI0ODs1OzIxMzQ4OzU7MjE0NDg7NTsyMTU0ODs1OzIxNjQ4OzU7MjE3NDg7NTsyMTg0ODs1OzIxOTQ4OzU7MjIwNDg7NTsyMjE0ODs1OzIyMjQ4OzU7MjIzNDg7NTsyMjQ0ODs1OzIyNTQ4OzU7MjI2NDg7NTsyMjc0ODs1OzIyODQ4OzU7MjI5NDg7NTsyMzA0ODs1OzIzMTQ4OzU7MjMyNDg7NTsyMzM0ODs1OzIzNDQ4OzU7MjM1NDg7NTsyMzY0ODs1OzIzNzQ4OzU7MjM4NDg7NTsyMzk0ODs1OzI0MDQ4OzU7MjQxNDg7NTsyNDI0ODs1OzI0MzQ4OzU7MjQ0NDg7NTsyNDU0ODs1OzI0NjQ4OzU7MjQ3NDg7NTsyNDg0ODs1OzI0OTQ4OzU7MjUwNDg7NTsyNTE0ODs1OzI1MjQ4OzU7MjUzNDg7NTsyNTQ0ODs1OzI1NTM4OzI7AAAALLYgAAUAAADUBScAAQAAANQFJwABAAAANDg7MjsAAABMtiAABQAAANQFJwABAAAA1AUnAAEAAAAzMDMxMzIzMzM0MzUzNjM3Mzk5MDkxOTI5Mzk0OTU5Njk3NDA0MTQyNDM0NDQ1NDY0NzQ5MTAwMTAxMTAyMTAzMTA0MTA1MTA2MTA3Mzg7MjsyNDA7MjQ4OzI1NTM4OzI7MjUwOzIzNTsyMTUzODsyOzAwMDsyNTU7MjU1Mzg7MjsxMjc7MjU1OzIxMjM4OzI7MjQwOzI1NTsyNTUzODsyOzI0NTsyNDU7MjIwMzg7MjsyNTU7MjI4OzE5NjM4OzI7MDAwOzAwMDswMDAzODsyOzI1NTsyMzU7MjA1Mzg7MjswMDA7MDAwOzI1NTM4OzI7MTM4OzA0MzsyMjYzODsyOzE2NTswNDI7MDQyMzg7MjsyMjI7MTg0OzEzNTM4OzI7MDk1OzE1ODsxNjAzODsyOzEyNzsyNTU7MDAwMzg7MjsyMTA7MTA1OzAzMDM4OzI7MjU1OzEyNzswODAzODsyOzEwMDsxNDk7MjM3Mzg7MjsyNTU7MjQ4OzIyMDM4OzI7MjIwOzAyMDswNjAzODsyOzAwMDswMDA7MTM5Mzg7MjswMDA7MTM5OzEzOTM4OzI7MTg0OzEzNDswMTEzODsyOzE2OTsxNjk7MTY5Mzg7MjswMDA7MTAwOzAwMDM4OzI7MTg5OzE4MzsxMDczODsyOzEzOTswMDA7MTM5Mzg7MjswODU7MTA3OzA0NzM4OzI7MjU1OzE0MDswMDAzODsyOzE1MzswNTA7MjA0Mzg7MjsxMzk7MDAwOzAwMDM4OzI7MjMzOzE1MDsxMjIzODsyOzE0MzsxODg7MTQzMzg7MjswNzI7MDYxOzEzOTM4OzI7MDQ3OzA3OTswNzkzODsyOzAwMDsyMDY7MjA5Mzg7MjsxNDg7MDAwOzIxMTM4OzI7MjU1OzAyMDsxNDczODsyOzAwMDsxOTE7MjU1Mzg7MjsxMDU7MTA1OzEwNTM4OzI7MDMwOzE0NDsyNTUzODsyOzE3ODswMzQ7MDM0Mzg7MjsyNTU7MjUwOzI0MDM4OzI7MDM0OzEzOTswMzQzODsyOzI1NTswMDA7MjU1Mzg7MjsyMjA7MjIwOzIyMDM4OzI7MjQ4OzI0ODsyNTUzODsyOzI1NTsyMTU7MDAwMzg7MjsyMTg7MTY1OzAzMjM4OzI7MTI4OzEyODsxMjgzODsyOzAwMDsxMjg7MDAwMzg7MjsxNzM7MjU1OzA0NzM4OzI7MjQwOzI1NTsyNDAzODsyOzI1NTsxMDU7MTgwMzg7MjsyMDU7MDkyOzA5MjM4OzI7MDc1OzAwMDsxMzAzODsyOzI1NTsyNTU7MjQwMzg7MjsyNDA7MjMwOzE0MDM4OzI7MjMwOzIzMDsyNTAzODsyOzI1NTsyNDA7MjQ1Mzg7MjsxMjQ7MjUyOzAwMDM4OzI7MjU1OzI1MDsyMDUzODsyOzE3MzsyMTY7MjMwMzg7MjsyNDA7MTI4OzEyODM4OzI7MjI0OzI1NTsyNTUzODsyOzI1MDsyNTA7MjEwMzg7MjsyMTE7MjExOzIxMTM4OzI7MTQ0OzIzODsxNDQzODsyOzI1NTsxODI7MTkzMzg7MjsyNTU7MTYwOzEyMjM4OzI7MDMyOzE3ODsxNzAzODsyOzEzNTsyMDY7MjUwMzg7MjsxMTk7MTM2OzE1MzM4OzI7MTc2OzE5NjsyMjIzODsyOzI1NTsyNTU7MjI0Mzg7MjswMDA7MjU1OzAwMDM4OzI7MDUwOzIwNTswNTAzODsyOzI1MDsyNDA7MjMwMzg7MjsxMjg7MDAwOzAwMDM4OzI7MTAyOzIwNTsxNzAzODsyOzAwMDswMDA7MjA1Mzg7MjsxODY7MDg1OzIxMTM4OzI7MTQ3OzExMjsyMTkzODsyOzA2MDsxNzk7MTEzMzg7MjsxMjM7MTA0OzIzODM4OzI7MDAwOzI1MDsxNTQzODsyOzA3MjsyMDk7MjA0Mzg7MjsxOTk7MDIxOzEzMzM4OzI7MDI1OzAyNTsxMTIzODsyOzI0NTsyNTU7MjUwMzg7MjsyNTU7MjI4OzIyNTM4OzI7MjU1OzIyODsxODEzODsyOzI1NTsyMjI7MTczMzg7MjswMDA7MDAwOzEyODM4OzI7MjUzOzI0NTsyMzAzODsyOzEyODsxMjg7MDAwMzg7MjsxMDc7MTQyOzAzNTM4OzI7MjU1OzE2NTswMDAzODsyOzI1NTswNjk7MDAwMzg7MjsyMTg7MTEyOzIxNDM4OzI7MjM4OzIzMjsxNzAzODsyOzE1MjsyNTE7MTUyMzg7MjsxNzU7MjM4OzIzODM4OzI7MjE5OzExMjsxNDczODsyOzI1NTsyMzk7MjEzMzg7MjsyNTU7MjE4OzE4NTM4OzI7MjA1OzEzMzswNjMzODsyOzI1NTsxOTI7MjAzMzg7MjsyMjE7MTYwOzIyMTM4OzI7MTc2OzIyNDsyMzAzODsyOzEyODswMDA7MTI4Mzg7MjsxMDI7MDUxOzE1MzM4OzI7MjU1OzAwMDswMDAzODsyOzE4ODsxNDM7MTQzMzg7MjswNjU7MTA1OzIyNTM4OzI7MTM5OzA2OTswMTkzODsyOzI1MDsxMjg7MTE0Mzg7MjsyNDQ7MTY0OzA5NjM4OzI7MDQ2OzEzOTswODczODsyOzI1NTsyNDU7MjM4Mzg7MjsxNjA7MDgyOzA0NTM4OzI7MTkyOzE5MjsxOTIzODsyOzEzNTsyMDY7MjM1Mzg7MjsxMDY7MDkwOzIwNTM4OzI7MTEyOzEyODsxNDQzODsyOzI1NTsyNTA7MjUwMzg7MjswMDA7MjU1OzEyNzM4OzI7MDcwOzEzMDsxODAzODsyOzIxMDsxODA7MTQwMzg7MjswMDA7MTI4OzEyODM4OzI7MjE2OzE5MTsyMTYzODsyOzI1NTswOTk7MDcxMzg7MjswNjQ7MjI0OzIwODM4OzI7MjM4OzEzMDsyMzgzODsyOzI0NTsyMjI7MTc5Mzg7MjsyNTU7MjU1OzI1NTM4OzI7MjQ1OzI0NTsyNDUzODsyOzI1NTsyNTU7MDAwMzg7MjsxNTQ7MjA1OzA1MDQ4OzI7MjQwOzI0ODsyNTU0ODsyOzI1MDsyMzU7MjE1NDg7MjswMDA7MjU1OzI1NTQ4OzI7MTI3OzI1NTsyMTI0ODsyOzI0MDsyNTU7MjU1NDg7MjsyNDU7MjQ1OzIyMDQ4OzI7MjU1OzIyODsxOTY0ODsyOzAwMDswMDA7MDAwNDg7MjsyNTU7MjM1OzIwNTQ4OzI7MDAwOzAwMDsyNTU0ODsyOzEzODswNDM7MjI2NDg7MjsxNjU7MDQyOzA0MjQ4OzI7MjIyOzE4NDsxMzU0ODsyOzA5NTsxNTg7MTYwNDg7MjsxMjc7MjU1OzAwMDQ4OzI7MjEwOzEwNTswMzA0ODsyOzI1NTsxMjc7MDgwNDg7MjsxMDA7MTQ5OzIzNzQ4OzI7MjU1OzI0ODsyMjA0ODsyOzIyMDswMjA7MDYwNDg7MjswMDA7MDAwOzEzOTQ4OzI7MDAwOzEzOTsxMzk0ODsyOzE4NDsxMzQ7MDExNDg7MjsxNjk7MTY5OzE2OTQ4OzI7MDAwOzEwMDswMDA0ODsyOzE4OTsxODM7MTA3NDg7MjsxMzk7MDAwOzEzOTQ4OzI7MDg1OzEwNzswNDc0ODsyOzI1NTsxNDA7MDAwNDg7MjsxNTM7MDUwOzIwNDQ4OzI7MTM5OzAwMDswMDA0ODsyOzIzMzsxNTA7MTIyNDg7MjsxNDM7MTg4OzE0MzQ4OzI7MDcyOzA2MTsxMzk0ODsyOzA0NzswNzk7MDc5NDg7MjswMDA7MjA2OzIwOTQ4OzI7MTQ4OzAwMDsyMTE0ODsyOzI1NTswMjA7MTQ3NDg7MjswMDA7MTkxOzI1NTQ4OzI7MTA1OzEwNTsxMDU0ODsyOzAzMDsxNDQ7MjU1NDg7MjsxNzg7MDM0OzAzNDQ4OzI7MjU1OzI1MDsyNDA0ODsyOzAzNDsxMzk7MDM0NDg7MjsyNTU7MDAwOzI1NTQ4OzI7MjIwOzIyMDsyMjA0ODsyOzI0ODsyNDg7MjU1NDg7MjsyNTU7MjE1OzAwMDQ4OzI7MjE4OzE2NTswMzI0ODsyOzEyODsxMjg7MTI4NDg7MjswMDA7MTI4OzAwMDQ4OzI7MTczOzI1NTswNDc0ODsyOzI0MDsyNTU7MjQwNDg7MjsyNTU7MTA1OzE4MDQ4OzI7MjA1OzA5MjswOTI0ODsyOzA3NTswMDA7MTMwNDg7MjsyNTU7MjU1OzI0MDQ4OzI7MjQwOzIzMDsxNDA0ODsyOzIzMDsyMzA7MjUwNDg7MjsyNTU7MjQwOzI0NTQ4OzI7MTI0OzI1MjswMDA0ODsyOzI1NTsyNTA7MjA1NDg7MjsxNzM7MjE2OzIzMDQ4OzI7MjQwOzEyODsxMjg0ODsyOzIyNDsyNTU7MjU1NDg7MjsyNTA7MjUwOzIxMDQ4OzI7MjExOzIxMTsyMTE0ODsyOzE0NDsyMzg7MTQ0NDg7MjsyNTU7MTgyOzE5MzQ4OzI7MjU1OzE2MDsxMjI0ODsyOzAzMjsxNzg7MTcwNDg7MjsxMzU7MjA2OzI1MDQ4OzI7MTE5OzEzNjsxNTM0ODsyOzE3NjsxOTY7MjIyNDg7MjsyNTU7MjU1OzIyNDQ4OzI7MDAwOzI1NTswMDA0ODsyOzA1MDsyMDU7MDUwNDg7MjsyNTA7MjQwOzIzMDQ4OzI7MTI4OzAwMDswMDA0ODsyOzEwMjsyMDU7MTcwNDg7MjswMDA7MDAwOzIwNTQ4OzI7MTg2OzA4NTsyMTE0ODsyOzE0NzsxMTI7MjE5NDg7MjswNjA7MTc5OzExMzQ4OzI7MTIzOzEwNDsyMzg0ODsyOzAwMDsyNTA7MTU0NDg7MjswNzI7MjA5OzIwNDQ4OzI7MTk5OzAyMTsxMzM0ODsyOzAyNTswMjU7MTEyNDg7MjsyNDU7MjU1OzI1MDQ4OzI7MjU1OzIyODsyMjU0ODsyOzI1NTsyMjg7MTgxNDg7MjsyNTU7MjIyOzE3MzQ4OzI7MDAwOzAwMDsxMjg0ODsyOzI1MzsyNDU7MjMwNDg7MjsxMjg7MTI4OzAwMDQ4OzI7MTA3OzE0MjswMzU0ODsyOzI1NTsxNjU7MDAwNDg7MjsyNTU7MDY5OzAwMDQ4OzI7MjE4OzExMjsyMTQ0ODsyOzIzODsyMzI7MTcwNDg7MjsxNTI7MjUxOzE1MjQ4OzI7MTc1OzIzODsyMzg0ODsyOzIxOTsxMTI7MTQ3NDg7MjsyNTU7MjM5OzIxMzQ4OzI7MjU1OzIxODsxODU0ODsyOzIwNTsxMzM7MDYzNDg7MjsyNTU7MTkyOzIwMzQ4OzI7MjIxOzE2MDsyMjE0ODsyOzE3NjsyMjQ7MjMwNDg7MjsxMjg7MDAwOzEyODQ4OzI7MTAyOzA1MTsxNTM0ODsyOzI1NTswMDA7MDAwNDg7MjsxODg7MTQzOzE0MzQ4OzI7MDY1OzEwNTsyMjU0ODsyOzEzOTswNjk7MDE5NDg7MjsyNTA7MTI4OzExNDQ4OzI7MjQ0OzE2NDswOTY0ODsyOzA0NjsxMzk7MDg3NDg7MjsyNTU7MjQ1OzIzODQ4OzI7MTYwOzA4MjswNDU0ODsyOzE5MjsxOTI7MTkyNDg7MjsxMzU7MjA2OzIzNTQ4OzI7MTA2OzA5MDsyMDU0ODsyOzExMjsxMjg7MTQ0NDg7MjsyNTU7MjUwOzI1MDQ4OzI7MDAwOzI1NTsxMjc0ODsyOzA3MDsxMzA7MTgwNDg7MjsyMTA7MTgwOzE0MDQ4OzI7MDAwOzEyODsxMjg0ODsyOzIxNjsxOTE7MjE2NDg7MjsyNTU7MDk5OzA3MTQ4OzI7MDY0OzIyNDsyMDg0ODsyOzIzODsxMzA7MjM4NDg7MjsyNDU7MjIyOzE3OTQ4OzI7MjU1OzI1NTsyNTU0ODsyOzI0NTsyNDU7MjQ1NDg7MjsyNTU7MjU1OzAwMDQ4OzI7MTU0OzIwNTswNTAoyCAAbwAAAGsBAAAXAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFya2luZ19sb3RfY29yZS0wLjkuMTEvc3JjL3BhcmtpbmdfbG90LnJzACjIIABvAAAASwAAABsAAAAoyCAAbwAAAFIAAAAeAAAAKMggAG8AAABOAAAAFQAAACjIIABvAAAASgEAAAwAAABQYXJraW5nIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybQAA2MggACYAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJraW5nX2xvdF9jb3JlLTAuOS4xMS9zcmMvdGhyZWFkX3Bhcmtlci93YXNtLnJzAAAIySAAdgAAABoAAAAJAAAACMkgAHYAAAAqAAAACQAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LTEuMTEuMS9zcmMvYnVpbGRlcnMucnMAAACgySAAYQAAAEcAAAAJAAAAWQMAAAwAAAAEAAAAWgMAAFsDAABcAwAAAAAAAAAAAAABAAAArAIAAFN5bnRheCgKPMogAAgAAABDb21waWxlZFRvb0JpZwAAXQMAABAAAAAIAAAAXgMAAF8DAAAEAAAABAAAAGADAAC80yAAbAAAAMcHAAAqAAAAvNMgAGwAAADKBwAAGgAAALzTIABsAAAAzgcAACYAAAByZXZlcnNlIHNlYXJjaCBtdXN0IG1hdGNoIGlmIGZvcndhcmQgc2VhcmNoIGRvZXMvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvaHli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AQAAAQAAAKoAAAAmBAAAJwQAABcEAAAoBAAAKQQAAAwAAAAEAAAArQAAACoEAAArBAAALAQAAJ8DAABBaG9Db3Jhc2lja2FjTWVtY2hyTWVtY2hyMk1lbWNocjNNZW1tZW1maW5kZXJzZWFyY2hlcmFuY2hvcmVkX2FjUHJlZmlsdGVyaXNfZmFzdG1heF9uZWVkbGVfbGVuUXVpdGJ5dGVHYXZlVXBIYXlzdGFja1Rvb0xvbmdsZW5VbnN1cHBvcnRlZEFuY2hvcmVkbW9kZQAAAAAAAAAIAAAACAAAAC0EAAAQASEAbgAAANkAAAAyAAAAEAEhAG4AAACRCAAACQAAABABIQBuAAAAkggAAAkAAAAQASEAbgAAAJMIAAAJAAAAEAEhAG4AAACaCAAAGgAAABABIQBuAAAAmwgAABwAAAAQASEAbgAAAJwIAAAcAAAAEAEhAG4AAAC1CAAAKAAAABABIQBuAAAAuwgAACIAAAAQASEAbgAAAMAIAAAfAAAAEAEhAG4AAADACAAAJQAAABABIQBuAAAAyggAAB8AAAAQASEAbgAAAMoIAAAlAAAAEAEhAG4AAADQCAAACQAAABABIQBuAAAA0ggAADgAAAAQASEAbgAAANIIAAAJAAAAEAEhAG4AAADwCAAAQQAAAEdyb3VwSW5mb1Rvb01hbnlQYXR0ZXJuc2VyclRvb01hbnlHcm91cHNwYXR0ZXJubWluaW11bU1pc3NpbmdHcm91cHNGaXJzdE11c3RCZVVubmFtZWREdXBsaWNhdGUAAAAAAAAAAAAAAQAAAC4EAABlcnJvciBidWlsZGluZyBORkFpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBmb3VuZCBpbXBvc3NpYmxlIGVycm9yIGluIG1ldGEgZW5naW5lOiAAyuIgAFEAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvbWV0YS9lcnJvci5ycwAk4yAAawAAAO0AAAARAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDlj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aXRoeWJyaWRfY2FjaGVfY2FwYWNpdHloeWJyaWRkZmFkZmFfc2l6ZV9saW1pdGRmYV9zdGF0ZV9saW1pdG9uZXBhc3NiYWNrdHJhY2tsaW5lX3Rlcm1pbmF0b3IAAADqGyEACgAAACjuIAAKAAAAMu4gAAcAAAD0GyEAAwAAADnuIAAOAAAAR+4gAA4AAABV7iAAEgAAAGfuIAAVAAAAfO4gAAYAAACC7iAAAwAAAIXuIAAOAAAAk+4gAA8AAACi7iAABwAAAKnuIAAJAAAA3wYhAAwAAACy7iAADwAAAEdyb3VwSW5mb0lubmVyc2xvdF9yYW5nZXNuYW1lX3RvX2luZGV4aW5kZXhfdG9fbmFtZW1lbW9yeV9leHRyYQAAAAAAAAAAAAEAAAAuBAAAM0QmAHAAAAC8AAAAKgAAADNEJgBwAAAAuQAAACoAAAAzRCYAcAAAADoAAAAVAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbWVtY2hyLTIuNy41L3NyYy9tZW1tZW0vc2VhcmNoZXIucnPE7yAAaAAAAHQCAAAbAAAAwAEhAGsAAADHBAAAHgAAAMABIQBrAAAA6QUAAB4AAABubyBxdWl0IGluIHN0YXJ0IHdpdGhvdXQgbG9vay1iZWhpbmTAASEAawAAAEUGAAAWAAAAYXNzZXJ0aW9uIGZhaWxlZDogaWQuaXNfbWF0Y2goKQDAASEAawAAALUGAAAJAAAAbm8gaW4tcHJvZ3Jlc3Mgc2VhcmNoIHRvIHVwZGF0ZQDAASEAawAAALcHAAAkAAAAbm8gaW4tcHJvZ3Jlc3Mgc2VhcmNoIHRvIGZpbmlzaADAASEAawAAAMMHAAAiAAAAwAEhAGsAAACOCgAAHQAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy9oeWJyaWQvc2VhcmNoLnJzAAAw8SAAbgAAAFkAAAApAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogc2lkIGJlaW5nIHVua25vd24gaXMgYSBidWew8SAARAAAADDxIABuAAAAHQEAABEAAAAw8SAAbgAAABoBAAAtAAAAMPEgAG4AAABXAQAAKQAAADDxIABuAAAArQEAABEAAAAw8SAAbgAAAKoBAAAtAAAAMPEgAG4AAAD7AQAAJQAAADDxIABuAAAAIgIAABEAAAAw8SAAbgAAAB0CAAAVAAAAMPEgAG4AAADiAgAAFAAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy9tZXRhL2xpbWl0ZWQucnMAAACM8iAAbQAAAI4AAAAlAAAAjPIgAG0AAADoAAAAFAAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy9tZXRhL3N0b3BhdC5ycxzzIABsAAAAbgAAACUAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvdXRpbC93aXJlLnJzAACY8yAAagAAAFcCAAAOAAAAmPMgAGoAAAB4AwAADAAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy91dGlsL2VtcHR5LnJzACT0IABrAAAA+QAAADoAAAAAAAAACAAAAAQAAAA0BAAAAAAAAAQAAAAEAAAAfQAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy9tZXRhL3dyYXBwZXJzLnJzAADA9CAAbgAAAIkAAAAZAAAAwPQgAG4AAABFAQAAHQAAAMD0IABuAAAA+wEAAB0AAADA9CAAbgAAAB8DAAAdAAAAwPQgAG4AAAAsBAAADQAAAMD0IABuAAAAtAQAAB0AAADA9CAAbgAAAEQFAAANAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL25mYS90aG9tcHNvbi9iYWNrdHJhY2sucnMAoPUgAHcAAACZBQAAFQAAAKD1IAB3AAAAogUAABoAAACg9SAAdwAAAAEGAAAhAAAAoPUgAHcAAAAFBgAAJQAAAKD1IAB3AAAAIQcAABcAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvdXRpbC9lc2NhcGUucnNo9iAAbAAAACgAAAA9AAAAaPYgAGwAAAAlAAAADQAAADUEAABgAAAAEAAAADYEAADWAwAABAAAAAQAAACSAAAAAAAAACAAAAAQAAAANwQAAAAAAAABAAAAAQAAAOMAAAAxBAAAEAAAAAQAAADfAAAAAAAAAAEAAAABAAAAMAQAAAAAAAAwAAAAEAAAADgEAAAAAAAACAAAAAQAAAATBAAAAAAAAAgAAAAEAAAAMwQAAGZvcndhcmRyZXZlcnNlUGlrZVZNRW5naW5lQm91bmRlZEJhY2t0cmFja2VyRW5naW5lT25lUGFzc0VuZ2luZUh5YnJpZEVuZ2luZURGQUVuZ2luZVJldmVyc2VIeWJyaWRFbmdpbmVSZXZlcnNlREZBUmV2ZXJzZURGQUVuZ2luZXZpc2l0ZWRfY2FwYWNpdHlCb3VuZGVkQmFja3RyYWNrZXIAAAAAAAgAAAAEAAAAOQQAAAAAAAAEAAAABAAAADoEAAAAAAAABAAAAAQAAAA7BAAAUHJvcGVydGllcy9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy9tZXRhL3JlZ2V4LnJzAAAAYvggAGsAAACIBwAAEwAAAGL4IABrAAAAbw0AABIAAABi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cGVjaWFsaXplX3N0YXJ0X3N0YXRlc3NraXBfY2FjaGVfY2FwYWNpdHlfY2hlY2ttaW5pbXVtX2NhY2hlX2NsZWFyX2NvdW50bWluaW11bV9ieXRlc19wZXJfc3RhdGXqGyEACgAAAPQbIQADAAAAyAYhABcAAADfBiEADAAAAOsGIQAVAAAABwYhAAcAAAAAByEAFwAAAA4GIQAOAAAAFwchABkAAAAwByEAGQAAAEkHIQAXAAAAQ2FjaGVFcnJvckxhenlTdGF0ZUlETGF6eVN0YXRlSURFcnJvcmF0dGVtcHRlZEJ5dGVTZXRiaXRzL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9hbGxvYy9zcmMvYm94ZWQvY29udmVydC5ycwDxByEAUgAAAFIAAAATAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy9uZmEvbm9uY29udGlndW91cy5yc1QIIQBwAAAAIgEAACAAAABUCCEAcAAAAFQBAAAdAAAAVAghAHAAAABmAQAAFwAAAGV4cGVjdGVkIG51bWJlciBvZiBwYXR0ZXJucyB0byBtYXRjaCBwYXR0ZXJuIElEAPQIIQAvAAAAVAghAHAAAAA0BAAADQAAAFQIIQBwAAAAOQQAACMAAABUCCEAcAAAAFUEAAA5AAAAVAghAHAAAADKAwAAGQAAAFQIIQBwAAAAywMAABoAAABUCCEAcAAAAM8DAAAYAAAAVAghAHAAAADjAwAAGQAAAFQIIQBwAAAAFgQAABkAAABUCCEAcAAAABcEAAAYAAAAVAghAHAAAAAYBAAAGgAAAFQIIQBwAAAAGQQAAB8AAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9haG8tY29yYXNpY2stMS4xLjMvc3JjL3V0aWwvc2VhcmNoLnJzAADcCSEAagAAAE4BAAAJAAAAaW52YWxpZCBtYXRjaCBzcGFuAABYCiEAEgAAANwJIQBqAAAAWwMAAAkAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9haG8tY29yYXNpY2stMS4xLjMvc3JjL3BhY2tlZC9hcGkucnMAAACECiEAaQAAABkCAAAcAAAAhAohAGkAAAAfAgAAMQAAABEEAAAEAAAABAAAABIEAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvdXRpbC9wcmVmaWx0ZXIvYnl0ZXNldC5ycwAgCyEAdwAAACMAAAARAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL3V0aWwvcHJlZmlsdGVyL21lbWNoci5ycwAAqAshAHYAAAAnAAAALQAAAKgLIQB2AAAAVQAAABYAAACoCyEAdgAAAFYAAAAWAAAAqAshAHYAAABkAAAANgAAAKgLIQB2AAAAkgAAABYAAACoCyEAdgAAAJMAAAAWAAAAqAshAHYAAACUAAAAFgAAAKgLIQB2AAAAogAAAD4AAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvdXRpbC9wcmVmaWx0ZXIvbWVtbWVtLnJzAACgDCEAdgAAACsAAAAnAAAAoAwhAHYAAAA7AAAAGAAAAGFoby1jb3Jhc2ljayBERkEgc2hvdWxkIG5ldmVyIGZhaWwvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvdXRpbC9wcmVmaWx0ZXIvdGVkZHkucnMAWg0hAHUAAABxAAAAEgAAAHJlZ2V4OiB0aHJlYWQgSUQgYWxsb2NhdGlvbiBzcGFjZSBleGhhdXN0ZWQA4A0hACsAAADI/SYAagAAAF4BAAARAAAAAAAAAAAAAAABAAAALgQAAFRyeUZyb21JbnRFcnJvci9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy9uZmEvdGhvbXBzb24vY29tcGlsZXIucnMAAABDDiEAdgAAALUDAAAWAAAAQw4hAHYAAAC2AwAAFgAAAEMOIQB2AAAA3QMAAA4AAABDDiEAdgAAADAEAAAoAAAAQw4hAHYAAAAsBAAAFgAAAEMOIQB2AAAARQUAABkAAABDDiEAdgAAAEcFAAATAAAAQw4hAHYAAACdBQAALAAAAEMOIQB2AAAAngUAADIAAABDDiEAdgAAAIUFAAAwAAAAQw4hAHYAAACOBQAAMAAAAEMOIQB2AAAAjwUAADYAAABDDiEAdgAAAGYFAAAdAAAAQw4hAHYAAABsBQAAPwAAAEMOIQB2AAAAbQUAADsAAABDDiEAdgAAAGoFAAAXAAAAQw4hAHYAAADtBQAAKgAAAEMOIQB2AAAATwYAABYAAABDDiEAdgAAAFMGAAAWAAAAQw4hAHYAAABaBgAAFgAAAEMOIQB2AAAAXgYAABYAAABDDiEAdgAAAGIGAAAWAAAAQw4hAHYAAABtBgAAFgAAAEMOIQB2AAAAdAYAABYAAABDDiEAdgAAAHgGAAAWAAAAQw4hAHYAAAB8BgAAFgAAAEMOIQB2AAAAhQYAABYAAABDDiEAdgAAAJAGAAAWAAAAQw4hAHYAAACUBgAAFgAAAEMOIQB2AAAAmAYAABYAAABhc3NlcnRpb24gZmFpbGVkOiBwcmVmaXhfbGVuIDwgcmFuZ2VzLmxlbigpAEMOIQB2AAAA/gYAAAkAAABub24tZW1wdHkgbm9kZXMAQw4hAHYAAAAiBwAADgAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuc3RhdGUudW5jb21waWxlZFtsYXN0XS5sYXN0LmlzX25vbmUoKUMOIQB2AAAAIwcAAAkAAABDDiEAdgAAACkHAAAjAAAAQw4hAHYAAAAxBwAAHwAAAEMOIQB2AAAANQcAADoAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLnN0YXRlLnVuY29tcGlsZWRbMF0ubGFzdC5pc19ub25lKCkAAABDDiEAdgAAADwHAAAJAAAAQw4hAHYAAAA9BwAAJQAAAEMOIQB2AAAAOwcAAAkAAABDDiEAdgAAAEYHAAAOAAAAQw4hAHYAAABOBwAAGAAAAEFsbEltcGxpY2l0AF8DAAAEAAAABAAAAGADAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvbWV0YS9saXRlcmFsLnJzAAAAHBIhAG0AAAAeAAAADQAAABwSIQBtAAAAPgAAAA4AAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBsaXRlcmFsLCBnb3QgrBIhAEAAAAAcEiEAbQAAADgAAAAeAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgbGl0ZXJhbCBvciBjb25jYXQsIGdvdCAAAAQTIQBKAAAAHBIhAG0AAAA8AAAAEgAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy9uZmEvdGhvbXBzb24vbmZhLnJzAAAAaBMhAHEAAAB5AgAAFwAAAGgTIQBxAAAAgwcAABQAAAAAAAAAAAAAAAAAAAACAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL25mYS90aG9tcHNvbi9waWtldm0ucnMMFCEAdAAAAIUEAAAKAAAAYnl0ZSBzbGljZSBsZW5ndGhzIG11c3QgYmUgbGVzcyB0aGFuIHVzaXplIE1BWAAAkBQhAC4AAAAMFCEAdAAAANgEAAAJAAAADBQhAHQAAACHBQAACQAAAAwUIQB0AAAAzAUAABMAAAAMFCEAdAAAAFgGAAAPAAAADBQhAHQAAABc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Z2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1zeW50YXgtMC44LjUvc3JjL2hpci9saXRlcmFsLnJzYXNzZXJ0aW9uIGZhaWxlZDogc2VxMS5sZW4oKS5tYXBfb3IodHJ1ZSwgfHh8IHggPD0gc2VsZi5saW1pdF90b3RhbCkAABAqIQBqAAAAOQIAAAkAAAAQKiEAagAAAGYCAAAJAAAAECohAGoAAAA5AwAADgAAABAqIQBqAAAAxQMAACwAAAAQKiEAagAAAMcDAAAXAAAAECohAGoAAADLAwAAMQAAABAqIQBqAAAA0wMAABcAAAAQKiEAagAAAFQEAAAsAAAAECohAGoAAABeBAAAHwAAABAqIQBqAAAAYgQAADEAAAAQKiEAagAAAGoEAAAXAAAAECohAGoAAADRBAAADwAAABAqIQBqAAAAZwYAABgAAAAQKiEAagAAAHQGAAATAAAAECohAGoAAABtBgAAGgAAABAqIQBqAAAAnAYAABgAAAAQKiEAagAAAKoGAAATAAAAECohAGoAAACjBgAAGgAAABAqIQBqAAAAeAcAABEAAAAFAAAACgAAAAQAAAAKAAAAAwAAAEAAAAACAAAAQAAAAAEAAAAKAAAAECohAGoAAADOCAAAFQAAABAqIQBqAAAA3ggAACgAAAAQKiEAagAAAPIIAAAVAAAAECohAGoAAADiCAAAHgAAABAqIQBqAAAA5AgAACcAAAAQKiEAagAAAOQIAAAzAAAAECohAGoAAADlCAAANAAAABAqIQBqAAAA6wgAACAAAAAQKiEAagAAAOsIAAAtAAAAECohAGoAAAACCQAAFQAAABAqIQBqAAAAAwkAABYAAAA3NDMyMTAvLi1n8kJD5SwrKikoJyYlJCMiITggHx4dHP+UpJWIoJut3d6GeujK1+DQ3My7t7OxqLLI4sOauK5+eL+dwqq9oqGWwY6Jq7C5p7pwr8C8nIyPe4WAk4qSct+X+dju7P3j2ub3h7Tx6fb054v18/vrycTw1pi2zbV/G9TT0tXkxamfg6xpUGJgYVHPkXRzkIKZeWuEbW58b1Jsdo1xgXd9pXVcalNIY11BT6bto8e+4dHLxtnbzur4nu//////////////////////////////////////////////////////////////////////////////////////dHJpZWQgdG8gdW53cmFwIGV4cHIgZnJvbSBIaXJGcmFtZSwgZ290OiAAAADILSEAKQAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LXN5bnRheC0wLjguNS9zcmMvaGlyL3RyYW5zbGF0ZS5yc/wtIQBsAAAAAQEAABIAAAB0cmllZCB0byB1bndyYXAgVW5pY29kZSBjbGFzcyBmcm9tIEhpckZyYW1lLCBnb3Q6IAAAeC4hADIAAAD8LSEAbAAAAAoBAAASAAAAdHJpZWQgdG8gdW53cmFwIGJ5dGUgY2xhc3MgZnJvbSBIaXJGcmFtZSwgZ290OiAAxC4hAC8AAAD8LSEAbAAAABcBAAASAAAAdHJpZWQgdG8gdW53cmFwIHJlcGV0aXRpb24gZnJvbSBIaXJGcmFtZSwgZ290OiAADC8hAC8AAAD8LSEAbAAAACUBAAARAAAAdHJpZWQgdG8gdW53cmFwIGdyb3VwIGZyb20gSGlyRnJhbWUsIGdvdDogAABULyEAKgAAAPwtIQBsAAAANAEAABEAAAB0cmllZCB0byB1bndyYXAgYWx0IHBpcGUgZnJvbSBIaXJGcmFtZSwgZ290OiAAAACYLyEALQAAAPwtIQBsAAAAPwEAABEAAAD8LSEAbAAAAE4BAAAnAAAA/C0hAGwAAABPAQAAFwAAAPwtIQBsAAAATgEAAAkAAAD8LSEAbAAAAKwBAAAuAAAA/C0hAGwAAACjAQAALgAAAPwtIQBsAAAAtwEAACcAAAD8LSEAbAAAALgBAAAcAAAA/C0hAGwAAAC8AQAAJwAAAPwtIQBsAAAAvQEAACwAAAD8LSEAbAAAAM4BAAAgAAAA/C0hAGwAAADPAQAAGwAAAPwtIQBsAAAAxQEAAB8AAAD8LSEAbAAAAP4BAAAuAAAA/C0hAGwAAAD6AQAALgAAAPwtIQBsAAAACgIAAC4AAAD8LSEAbAAAAAYCAAAuAAAA/C0hAGwAAAAZAgAALgAAAPwtIQBsAAAAFAIAAC4AAAD8LSEAbAAAACACAAAqAAAA/C0hAGwAAAAsAgAALgAAAPwtIQBsAAAAJwIAAC4AAAD8LSEAbAAAAD4CAAAvAAAA/C0hAGwAAABFAgAALwAAAPwtIQBsAAAAMwIAAC8AAAD8LSEAbAAAADoCAAAvAAAA/C0hAGwAAACMAgAAJgAAAPwtIQBsAAAAjQIAACYAAAD8LSEAbAAAAI4CAAAmAAAA/C0hAGwAAABzAgAAJgAAAPwtIQBsAAAAdAIAACYAAAD8LSEAbAAAAHUCAAAmAAAA/C0hAGwAAAC4AgAAHAAAAPwtIQBsAAAAuAIAACkAAAD8LSEAbAAAAMMCAAAsAAAA/C0hAGwAAADHAgAAEwAAAPwtIQBsAAAA0QIAACwAAAD8LSEAbAAAANMCAAAVAAAA/C0hAGwAAADVAgAAEwAAAPwtIQBsAAAA2wIAABwAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGNvbmNhdCwgZ290IFVuaWNvZGUgY2xhc3NQMiEAVAAAAPwtIQBsAAAA6QIAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGNvbmNhdCwgZ290IGJ5dGUgY2xhc3MAAAC8MiEAUQAAAPwtIQBsAAAA7AIAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGNvbmNhdCwgZ290IHJlcGV0aXRpb24AAAAoMyEAUQAAAPwtIQBsAAAA7wIAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGNvbmNhdCwgZ290IGdyb3VwlDMhAEwAAAD8LSEAbAAAAPICAAARAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgZXhwciBvciBjb25jYXQsIGdvdCBhbHQgbWFya2VyAAAA+DMhAFEAAAD8LSEAbAAAAPUCAAARAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgZXhwciBvciBjb25jYXQsIGdvdCBhbHQgYnJhbmNoIG1hcmtlcmQ0IQBYAAAA/C0hAGwAAAD4AgAAEQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGV4cGVjdGVkIGV4cHIgb3IgYWx0LCBnb3QgVW5pY29kZSBjbGFzcwAAANQ0IQBRAAAA/C0hAGwAAAAIAwAAEQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGV4cGVjdGVkIGV4cHIgb3IgYWx0LCBnb3QgYnl0ZSBjbGFzcwAAQDUhAE4AAAD8LSEAbAAAAAsDAAARAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgZXhwciBvciBhbHQsIGdvdCByZXBldGl0aW9uAACoNSEATgAAAPwtIQBsAAAADgMAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGFsdCwgZ290IGdyb3VwAAAAEDYhAEkAAAD8LSEAbAAAABEDAAARAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgZXhwciBvciBhbHQsIGdvdCBjb25jYXQgbWFya2VyAAAAdDYhAFEAAAD8LSEAbAAAABQDAAARAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgZXhwciBvciBhbHQsIGdvdCBhbHQgYnJhbmNoIG1hcmtlcgAAAOA2IQBVAAAA/C0hAGwAAAAXAwAAEQAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuZmxhZ3MoKS51bmljb2RlKCn8LSEAbAAAAEMEAAAJAAAABQxhc3NlcnRpb24gZmFpbGVkOiAhc2VsZi5mbGFncygpLnVuaWNvZGUoKQD8LSEAbAAAAFkEAAAJAAAAMDlBWmF6QVphegB/CQkgIAAff38wOSF+YXogfiEvOkBbYHt+CQkKCgsLDAwNDSAgQVowOUFaX19hejA5QUZhZqQBIgBmAAAAVwEAABkAAABhAAAAYgAAAGMAAABlAAAAZgAAAGcAAABoAAAAaQAAAGoAAABrAAAAKiEAAGwAAABtAAAAbgAAAG8AAABwAAAAcQAAAHIAAABzAAAAfwEAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAHoAAABBAAAAQgAAAEMAAABFAAAARgAAAEcAAABIAAAASQAAAEoAAABLAAAAKiEAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABTAAAAfwEAAFQAAABVAAAAVgAAAFcAAABYAAAAWQAAAFoAAACcAwAAvAMAAOAAAADhAAAA4gAAAOMAAADkAAAA5QAAACshAADmAAAA5wAAAOgAAADpAAAA6gAAAOsAAADsAAAA7QAAAO4AAADvAAAA8AAAAPEAAADyAAAA8wAAAPQAAAD1AAAA9gAAAPgAAAD5AAAA+gAAAPsAAAD8AAAA/QAAAP4AAACeHgAAwAAAAMEAAADCAAAAwwAAAMQAAADFAAAAKyEAAMYAAADHAAAAyAAAAMkAAADKAAAAywAAAMwAAADNAAAAzgAAAM8AAADQAAAA0QAAANIAAADTAAAA1AAAANUAAADWAAAA2AAAANkAAADaAAAA2wAAANwAAADdAAAA3gAAAHgBAAABAQAAAAEAAAMBAAACAQAABQEAAAQBAAAHAQAABgEAAAkBAAAIAQAACwEAAAoBAAANAQAADAEAAA8BAAAOAQAAEQEAABABAAATAQAAEgEAABUBAAAUAQAAFwEAABYBAAAZAQAAGAEAABsBAAAaAQAAHQEAABwBAAAfAQAAHgEAACEBAAAgAQAAIwEAACIBAAAlAQAAJAEAACcBAAAmAQAAKQEAACgBAAArAQAAKgEAAC0BAAAsAQAALwEAAC4BAAAzAQAAMgEAADUBAAA0AQAANwEAADYBAAA6AQAAOQEAADwBAAA7AQAAPgEAAD0BAABAAQAAPwEAAEIBAABBAQAARAEAAEMBAABGAQAARQEAAEgBAABHAQAASwEAAEoBAABNAQAATAEAAE8BAABOAQAAUQEAAFABAABTAQAAUgEAAFUBAABUAQAAVwEAAFYBAABZAQAAWAEAAFsBAABaAQAAXQEAAFwBAABfAQAAXgEAAGEBAABgAQAAYwEAAGIBAABlAQAAZAEAAGcBAABmAQAAaQEAAGgBAABrAQAAagEAAG0BAABsAQAAbwEAAG4BAABxAQAAcAEAAHMBAAByAQAAdQEAAHQBAAB3AQAAdgEAAP8AAAB6AQAAeQEAAHwBAAB7AQAAfgEAAH0BAABTAAAAcwAAAEMCAABTAgAAgwEAAIIBAACFAQAAhAEAAFQCAACIAQAAhwEAAFYCAABXAgAAjAEAAIsBAADdAQAAWQIAAFsCAACSAQAAkQEAAGACAABjAgAA9gEAAGkCAABoAgAAmQEAAJgBAAA9AgAA3KcAAG8CAAByAgAAIAIAAHUCAAChAQAAoAEAAKMBAACiAQAApQEAAKQBAACAAgAAqAEAAKcBAACDAgAArQEAAKwBAACIAgAAsAEAAK8BAACKAgAAiwIAALQBAACzAQAAtgEAALUBAACSAgAAuQEAALgBAAC9AQAAvAEAAPcBAADFAQAAxgEAAMQBAADGAQAAxAEAAMUBAADIAQAAyQEAAMcBAADJAQAAxwEAAMgBAADLAQAAzAEAAMoBAADMAQAAygEAAMsBAADOAQAAzQEAANABAADPAQAA0gEAANEBAADUAQAA0wEAANYBAADVAQAA2AEAANcBAADaAQAA2QEAANwBAADbAQAAjgEAAN8BAADeAQAA4QEAAOABAADjAQAA4gEAAOUBAADkAQAA5wEAAOYBAADpAQAA6AEAAOsBAADqAQAA7QEAAOwBAADvAQAA7gEAAPIBAADzAQAA8QEAAPMBAADxAQAA8gEAAPUBAAD0AQAAlQEAAL8BAAD5AQAA+AEAAPsBAAD6AQAA/QEAAPwBAAD/AQAA/gEAAAECAAAAAgAAAwIAAAICAAAFAgAABAIAAAcCAAAGAgAACQIAAAgCAAALAgAACgIAAA0CAAAMAgAADwIAAA4CAAARAgAAEAIAABMCAAASAgAAFQIAABQCAAAXAgAAFgIAABkCAAAYAgAAGwIAABoCAAAdAgAAHAIAAB8CAAAeAgAAngEAACMCAAAiAgAAJQIAACQCAAAnAgAAJgIAACkCAAAoAgAAKwIAACoCAAAtAgAALAIAAC8CAAAuAgAAMQIAADACAAAzAgAAMgIAAGUsAAA8AgAAOwIAAJoBAABmLAAAfiwAAH8sAABCAgAAQQIAAIABAACJAgAAjAIAAEcCAABGAgAASQIAAEgCAABLAgAASgIAAE0CAABMAgAATwIAAE4CAABvLAAAbSwAAHAsAACBAQAAhgEAAIkBAACKAQAAjwEAAJABAACrpwAAkwEAAKynAACUAQAAy6cAAI2nAACqpwAAlwEAAJYBAACupwAAYiwAAK2nAACcAQAAbiwAAJ0BAACfAQAAZCwAAKYBAADFpwAAqQEAALGnAACuAQAARAIAALEBAACyAQAARQIAALcBAACypwAAsKcAAJkDAAC5AwAAvh8AAHEDAABwAwAAcwMAAHIDAAB3AwAAdgMAAP0DAAD+AwAA/wMAAPMDAACsAwAArQMAAK4DAACvAwAAzAMAAM0DAADOAwAA0x8AALEDAACyAwAA0AMAALMDAAC0AwAAtQMAAPUDAAC2AwAAtwMAALgDAADRAwAA9AMAAEUDAAC5AwAAvh8AALoDAADwAwAAuwMAALUAAAC8AwAAvQMAAL4DAAC/AwAAwAMAANYDAADBAwAA8QMAAMIDAADDAwAAxAMAAMUDAADGAwAA1QMAAMcDAADIAwAAyQMAACYhAADKAwAAywMAAIYDAACIAwAAiQMAAIoDAADjHwAAkQMAAJIDAADQAwAAkwMAAJQDAACVAwAA9QMAAJYDAACXAwAAmAMAANEDAAD0AwAARQMAAJkDAAC+HwAAmgMAAPADAACbAwAAtQAAAJwDAACdAwAAngMAAJ8DAACgAwAA1gMAAKEDAADxAwAAowMAAMMDAACjAwAAwgMAAKQDAAClAwAApgMAANUDAACnAwAAqAMAAKkDAAAmIQAAqgMAAKsDAACMAwAAjgMAAI8DAADXAwAAkgMAALIDAACYAwAAuAMAAPQDAACmAwAAxgMAAKADAADAAwAAzwMAANkDAADYAwAA2wMAANoDAADdAwAA3AMAAN8DAADeAwAA4QMAAOADAADjAwAA4gMAAOUDAADkAwAA5wMAAOYDAADpAwAA6AMAAOsDAADqAwAA7QMAAOwDAADvAwAA7gMAAJoDAAC6AwAAoQMAAMEDAAD5AwAAfwMAAJgDAAC4AwAA0QMAAJUDAAC1AwAA+AMAAPcDAADyAwAA+wMAAPoDAAB7AwAAfAMAAH0DAABQBAAAUQQAAFIEAABTBAAAVAQAAFUEAABWBAAAVwQAAFgEAABZBAAAWgQAAFsEAABcBAAAXQQAAF4EAABfBAAAMAQAADEEAAAyBAAAgBwAADMEAAA0BAAAgRwAADUEAAA2BAAANwQAADgEAAA5BAAAOgQAADsEAAA8BAAAPQQAAD4EAACCHAAAPwQAAEAEAABBBAAAgxwAAEIEAACEHAAAhRwAAEMEAABEBAAARQQAAEYEAABHBAAASAQAAEkEAABKBAAAhhwAAEsEAABMBAAATQQAAE4EAABPBAAAEAQAABEEAAASBAAAgBwAABMEAAAUBAAAgRwAABUEAAAWBAAAFwQAABgEAAAZBAAAGgQAABsEAAAcBAAAHQQAAB4EAACCHAAAHwQAACAEAAAhBAAAgxwAACIEAACEHAAAhRwAACMEAAAkBAAAJQQAACYEAAAnBAAAKAQAACkEAAAqBAAAhhwAACsEAAAsBAAALQQAAC4EAAAvBAAAAAQAAAEEAAACBAAAAwQAAAQEAAAFBAAABgQAAAcEAAAIBAAACQQAAAoEAAALBAAADAQAAA0EAAAOBAAADwQAAGEEAABgBAAAYwQAAIccAABiBAAAhxwAAGUEAABkBAAAZwQAAGYEAABpBAAAaAQAAGsEAABqBAAAbQQAAGwEAABvBAAAbgQAAHEEAABwBAAAcwQAAHIEAAB1BAAAdAQAAHcEAAB2BAAAeQQAAHgEAAB7BAAAegQAAH0EAAB8BAAAfwQAAH4EAACBBAAAgAQAAIsEAACKBAAAjQQAAIwEAACPBAAAjgQAAJEEAACQBAAAkwQAAJIEAACVBAAAlAQAAJcEAACWBAAAmQQAAJgEAACbBAAAmgQAAJ0EAACcBAAAnwQAAJ4EAAChBAAAoAQAAKMEAACiBAAApQQAAKQEAACnBAAApgQAAKkEAACoBAAAqwQAAKoEAACtBAAArAQAAK8EAACuBAAAsQQAALAEAACzBAAAsgQAALUEAAC0BAAAtwQAALYEAAC5BAAAuAQAALsEAAC6BAAAvQQAALwEAAC/BAAAvgQAAM8EAADCBAAAwQQAAMQEAADDBAAAxgQAAMUEAADIBAAAxwQAAMoEAADJBAAAzAQAAMsEAADOBAAAzQQAAMAEAADRBAAA0AQAANMEAADSBAAA1QQAANQEAADXBAAA1gQAANkEAADYBAAA2wQAANoEAADdBAAA3AQAAN8EAADeBAAA4QQAAOAEAADjBAAA4gQAAOUEAADkBAAA5wQAAOYEAADpBAAA6AQAAOsEAADqBAAA7QQAAOwEAADvBAAA7gQAAPEEAADwBAAA8wQAAPIEAAD1BAAA9AQAAPcEAAD2BAAA+QQAAPgEAAD7BAAA+gQAAP0EAAD8BAAA/wQAAP4EAAABBQAAAAUAAAMFAAACBQAABQUAAAQFAAAHBQAABgUAAAkFAAAIBQAACwUAAAoFAAANBQAADAUAAA8FAAAOBQAAEQUAABAFAAATBQAAEgUAABUFAAAUBQAAFwUAABYFAAAZBQAAGAUAABsFAAAaBQAAHQUAABwFAAAfBQAAHgUAACEFAAAgBQAAIwUAACIFAAAlBQAAJAUAACcFAAAmBQAAKQUAACgFAAArBQAAKgUAAC0FAAAsBQAALwUAAC4FAABhBQAAYgUAAGMFAABkBQAAZQUAAGYFAABnBQAAaAUAAGkFAABqBQAAawUAAGwFAABtBQAAbgUAAG8FAABwBQAAcQUAAHIFAABzBQAAdAUAAHUFAAB2BQAAdwUAAHgFAAB5BQAAegUAAHsFAAB8BQAAfQUAAH4FAAB/BQAAgAUAAIEFAACCBQAAgwUAAIQFAACFBQAAhgUAADEFAAAyBQAAMwUAADQFAAA1BQAANgUAADcFAAA4BQAAOQUAADoFAAA7BQAAPAUAAD0FAAA+BQAAPwUAAEAFAABBBQAAQgUAAEMFAABEBQAARQUAAEYFAABHBQAASAUAAEkFAABKBQAASwUAAEwFAABNBQAATgUAAE8FAABQBQAAUQUAAFIFAABTBQAAVAUAAFUFAABWBQAAAC0AAAEtAAACLQAAAy0AAAQtAAAFLQAABi0AAActAAAILQAACS0AAAotAAALLQAADC0AAA0tAAAOLQAADy0AABAtAAARLQAAEi0AABMtAAAULQAAFS0AABYtAAAXLQAAGC0AABktAAAaLQAAGy0AABwtAAAdLQAAHi0AAB8tAAAgLQAAIS0AACItAAAjLQAAJC0AACUtAAAnLQAALS0AAJAcAACRHAAAkhwAAJMcAACUHAAAlRwAAJYcAACXHAAAmBwAAJkcAACaHAAAmxwAAJwcAACdHAAAnhwAAJ8cAACgHAAAoRwAAKIcAACjHAAApBwAAKUcAACmHAAApxwAAKgcAACpHAAAqhwAAKscAACsHAAArRwAAK4cAACvHAAAsBwAALEcAACyHAAAsxwAALQcAAC1HAAAthwAALccAAC4HAAAuRwAALocAAC9HAAAvhwAAL8cAABwqwAAcasAAHKrAABzqwAAdKsAAHWrAAB2qwAAd6sAAHirAAB5qwAAeqsAAHurAAB8qwAAfasAAH6rAAB/qwAAgKsAAIGrAACCqwAAg6sAAISrAACFqwAAhqsAAIerAACIqwAAiasAAIqrAACLqwAAjKsAAI2rAACOqwAAj6sAAJCrAACRqwAAkqsAAJOrAACUqwAAlasAAJarAACXqwAAmKsAAJmrAACaqwAAm6sAAJyrAACdqwAAnqsAAJ+rAACgqwAAoasAAKKrAACjqwAApKsAAKWrAACmqwAAp6sAAKirAACpqwAAqqsAAKurAACsqwAArasAAK6rAACvqwAAsKsAALGrAACyqwAAs6sAALSrAAC1qwAAtqsAALerAAC4qwAAuasAALqrAAC7qwAAvKsAAL2rAAC+qwAAv6sAAPgTAAD5EwAA+hMAAPsTAAD8EwAA/RMAAPATAADxEwAA8hMAAPMTAAD0EwAA9RMAABIEAAAyBAAAFAQAADQEAAAeBAAAPgQAACEEAABBBAAAIgQAAEIEAACFHAAAIgQAAEIEAACEHAAAKgQAAEoEAABiBAAAYwQAAEqmAABLpgAAihwAAIkcAADQEAAA0RAAANIQAADTEAAA1BAAANUQAADWEAAA1xAAANgQAADZEAAA2hAAANsQAADcEAAA3RAAAN4QAADfEAAA4BAAAOEQAADiEAAA4xAAAOQQAADlEAAA5hAAAOcQAADoEAAA6RAAAOoQAADrEAAA7BAAAO0QAADuEAAA7xAAAPAQAADxEAAA8hAAAPMQAAD0EAAA9RAAAPYQAAD3EAAA+BAAAPkQAAD6EAAA/RAAAP4QAAD/EAAAfacAAGMsAADGpwAAAR4AAAAeAAADHgAAAh4AAAUeAAAEHgAABx4AAAYeAAAJHgAACB4AAAseAAAKHgAADR4AAAweAAAPHgAADh4AABEeAAAQHgAAEx4AABIeAAAVHgAAFB4AABceAAAWHgAAGR4AABgeAAAbHgAAGh4AAB0eAAAcHgAAHx4AAB4eAAAhHgAAIB4AACMeAAAiHgAAJR4AACQeAAAnHgAAJh4AACkeAAAoHgAAKx4AACoeAAAtHgAALB4AAC8eAAAuHgAAMR4AADAeAAAzHgAAMh4AADUeAAA0HgAANx4AADYeAAA5HgAAOB4AADseAAA6HgAAPR4AADweAAA/HgAAPh4AAEEeAABAHgAAQx4AAEIeAABFHgAARB4AAEceAABGHgAASR4AAEgeAABLHgAASh4AAE0eAABMHgAATx4AAE4eAABRHgAAUB4AAFMeAABSHgAAVR4AAFQeAABXHgAAVh4AAFkeAABYHgAAWx4AAFoeAABdHgAAXB4AAF8eAABeHgAAYR4AAJseAABgHgAAmx4AAGMeAABiHgAAZR4AAGQeAABnHgAAZh4AAGkeAABoHgAAax4AAGoeAABtHgAAbB4AAG8eAABuHgAAcR4AAHAeAABzHgAAch4AAHUeAAB0HgAAdx4AAHYeAAB5HgAAeB4AAHseAAB6HgAAfR4AAHweAAB/HgAAfh4AAIEeAACAHgAAgx4AAIIeAACFHgAAhB4AAIceAACGHgAAiR4AAIgeAACLHgAAih4AAI0eAACMHgAAjx4AAI4eAACRHgAAkB4AAJMeAACSHgAAlR4AAJQeAABgHgAAYR4AAN8AAAChHgAAoB4AAKMeAACiHgAApR4AAKQeAACnHgAAph4AAKkeAACoHgAAqx4AAKoeAACtHgAArB4AAK8eAACuHgAAsR4AALAeAACzHgAAsh4AALUeAAC0HgAAtx4AALYeAAC5HgAAuB4AALseAAC6HgAAvR4AALweAAC/HgAAvh4AAMEeAADAHgAAwx4AAMIeAADFHgAAxB4AAMceAADGHgAAyR4AAMgeAADLHgAAyh4AAM0eAADMHgAAzx4AAM4eAADRHgAA0B4AANMeAADSHgAA1R4AANQeAADXHgAA1h4AANkeAADYHgAA2x4AANoeAADdHgAA3B4AAN8eAADeHgAA4R4AAOAeAADjHgAA4h4AAOUeAADkHgAA5x4AAOYeAADpHgAA6B4AAOseAADqHgAA7R4AAOweAADvHgAA7h4AAPEeAADwHgAA8x4AAPIeAAD1HgAA9B4AAPceAAD2HgAA+R4AAPgeAAD7HgAA+h4AAP0eAAD8HgAA/x4AAP4eAAAIHwAACR8AAAofAAALHwAADB8AAA0fAAAOHwAADx8AAAAfAAABHwAAAh8AAAMfAAAEHwAABR8AAAYfAAAHHwAAGB8AABkfAAAaHwAAGx8AABwfAAAdHwAAEB8AABEfAAASHwAAEx8AABQfAAAVHwAAKB8AACkfAAAqHwAAKx8AACwfAAAtHwAALh8AAC8fAAAgHwAAIR8AACIfAAAjHwAAJB8AACUfAAAmHwAAJx8AADgfAAA5HwAAOh8AADsfAAA8HwAAPR8AAD4fAAA/HwAAMB8AADEfAAAyHwAAMx8AADQfAAA1HwAANh8AADcfAABIHwAASR8AAEofAABLHwAATB8AAE0fAABAHwAAQR8AAEIfAABDHwAARB8AAEUfAABZHwAAWx8AAF0fAABfHwAAUR8AAFMfAABVHwAAVx8AAGgfAABpHwAAah8AAGsfAABsHwAAbR8AAG4fAABvHwAAYB8AAGEfAABiHwAAYx8AAGQfAABlHwAAZh8AAGcfAAC6HwAAux8AAMgfAADJHwAAyh8AAMsfAADaHwAA2x8AAPgfAAD5HwAA6h8AAOsfAAD6HwAA+x8AAIgfAACJHwAAih8AAIsfAACMHwAAjR8AAI4fAACPHwAAgB8AAIEfAACCHwAAgx8AAIQfAACFHwAAhh8AAIcfAACYHwAAmR8AAJofAACbHwAAnB8AAJ0fAACeHwAAnx8AAJAfAACRHwAAkh8AAJMfAACUHwAAlR8AAJYfAACXHwAAqB8AAKkfAACqHwAAqx8AAKwfAACtHwAArh8AAK8fAACgHwAAoR8AAKIfAACjHwAApB8AAKUfAACmHwAApx8AALgfAAC5HwAAvB8AALAfAACxHwAAcB8AAHEfAACzHwAARQMAAJkDAAC5AwAAzB8AAHIfAABzHwAAdB8AAHUfAADDHwAA2B8AANkfAACQAwAA0B8AANEfAAB2HwAAdx8AAOgfAADpHwAAsAMAAOwfAADgHwAA4R8AAHofAAB7HwAA5R8AAPwfAAB4HwAAeR8AAHwfAAB9HwAA8x8AAKkDAADJAwAASwAAAGsAAADFAAAA5QAAAE4hAAAyIQAAcCEAAHEhAAByIQAAcyEAAHQhAAB1IQAAdiEAAHchAAB4IQAAeSEAAHohAAB7IQAAfCEAAH0hAAB+IQAAfyEAAGAhAABhIQAAYiEAAGMhAABkIQAAZSEAAGYhAABnIQAAaCEAAGkhAABqIQAAayEAAGwhAABtIQAAbiEAAG8hAACEIQAAgyEAANAkAADRJAAA0iQAANMkAADUJAAA1SQAANYkAADXJAAA2CQAANkkAADaJAAA2yQAANwkAADdJAAA3iQAAN8kAADgJAAA4SQAAOIkAADjJAAA5CQAAOUkAADmJAAA5yQAAOgkAADpJAAAtiQAALckAAC4JAAAuSQAALokAAC7JAAAvCQAAL0kAAC+JAAAvyQAAMAkAADBJAAAwiQAAMMkAADEJAAAxSQAAMYkAADHJAAAyCQAAMkkAADKJAAAyyQAAMwkAADNJAAAziQAAM8kAAAwLAAAMSwAADIsAAAzLAAANCwAADUsAAA2LAAANywAADgsAAA5LAAAOiwAADssAAA8LAAAPSwAAD4sAAA/LAAAQCwAAEEsAABCLAAAQywAAEQsAABFLAAARiwAAEcsAABILAAASSwAAEosAABLLAAATCwAAE0sAABOLAAATywAAFAsAABRLAAAUiwAAFMsAABULAAAVSwAAFYsAABXLAAAWCwAAFksAABaLAAAWywAAFwsAABdLAAAXiwAAF8sAAAALAAAASwAAAIsAAADLAAABCwAAAUsAAAGLAAABywAAAgsAAAJLAAACiwAAAssAAAMLAAADSwAAA4sAAAPLAAAECwAABEsAAASLAAAEywAABQsAAAVLAAAFiwAABcsAAAYLAAAGSwAABosAAAbLAAAHCwAAB0sAAAeLAAAHywAACAsAAAhLAAAIiwAACMsAAAkLAAAJSwAACYsAAAnLAAAKCwAACksAAAqLAAAKywAACwsAAAtLAAALiwAAC8sAABhLAAAYCwAAGsCAAB9HQAAfQIAADoCAAA+AgAAaCwAAGcsAABqLAAAaSwAAGwsAABrLAAAUQIAAHECAABQAgAAUgIAAHMsAAByLAAAdiwAAHUsAAA/AgAAQAIAAIEsAACALAAAgywAAIIsAACFLAAAhCwAAIcsAACGLAAAiSwAAIgsAACLLAAAiiwAAI0sAACMLAAAjywAAI4sAACRLAAAkCwAAJMsAACSLAAAlSwAAJQsAACXLAAAliwAAJksAACYLAAAmywAAJosAACdLAAAnCwAAJ8sAACeLAAAoSwAAKAsAACjLAAAoiwAAKUsAACkLAAApywAAKYsAACpLAAAqCwAAKssAACqLAAArSwAAKwsAACvLAAAriwAALEsAACwLAAAsywAALIsAAC1LAAAtCwAALcsAAC2LAAAuSwAALgsAAC7LAAAuiwAAL0sAAC8LAAAvywAAL4sAADBLAAAwCwAAMMsAADCLAAAxSwAAMQsAADHLAAAxiwAAMksAADILAAAyywAAMosAADNLAAAzCwAAM8sAADOLAAA0SwAANAsAADTLAAA0iwAANUsAADULAAA1ywAANYsAADZLAAA2CwAANssAADaLAAA3SwAANwsAADfLAAA3iwAAOEsAADgLAAA4ywAAOIsAADsLAAA6ywAAO4sAADtLAAA8ywAAPIsAACgEAAAoRAAAKIQAACjEAAApBAAAKUQAACmEAAApxAAAKgQAACpEAAAqhAAAKsQAACsEAAArRAAAK4QAACvEAAAsBAAALEQAACyEAAAsxAAALQQAAC1EAAAthAAALcQAAC4EAAAuRAAALoQAAC7EAAAvBAAAL0QAAC+EAAAvxAAAMAQAADBEAAAwhAAAMMQAADEEAAAxRAAAMcQAADNEAAAQaYAAECmAABDpgAAQqYAAEWmAABEpgAAR6YAAEamAABJpgAASKYAAIgcAABLpgAAiBwAAEqmAABNpgAATKYAAE+mAABOpgAAUaYAAFCmAABTpgAAUqYAAFWmAABUpgAAV6YAAFamAABZpgAAWKYAAFumAABapgAAXaYAAFymAABfpgAAXqYAAGGmAABgpgAAY6YAAGKmAABlpgAAZKYAAGemAABmpgAAaaYAAGimAABrpgAAaqYAAG2mAABspgAAgaYAAICmAACDpgAAgqYAAIWmAACEpgAAh6YAAIamAACJpgAAiKYAAIumAACKpgAAjaYAAIymAACPpgAAjqYAAJGmAACQpgAAk6YAAJKmAACVpgAAlKYAAJemAACWpgAAmaYAAJimAACbpgAAmqYAACOnAAAipwAAJacAACSnAAAnpwAAJqcAACmnAAAopwAAK6cAACqnAAAtpwAALKcAAC+nAAAupwAAM6cAADKnAAA1pwAANKcAADenAAA2pwAAOacAADinAAA7pwAAOqcAAD2nAAA8pwAAP6cAAD6nAABBpwAAQKcAAEOnAABCpwAARacAAESnAABHpwAARqcAAEmnAABIpwAAS6cAAEqnAABNpwAATKcAAE+nAABOpwAAUacAAFCnAABTpwAAUqcAAFWnAABUpwAAV6cAAFanAABZpwAAWKcAAFunAABapwAAXacAAFynAABfpwAAXqcAAGGnAABgpwAAY6cAAGKnAABlpwAAZKcAAGenAABmpwAAaacAAGinAABrpwAAaqcAAG2nAABspwAAb6cAAG6nAAB6pwAAeacAAHynAAB7pwAAeR0AAH+nAAB+pwAAgacAAICnAACDpwAAgqcAAIWnAACEpwAAh6cAAIanAACMpwAAi6cAAGUCAACRpwAAkKcAAJOnAACSpwAAxKcAAJenAACWpwAAmacAAJinAACbpwAAmqcAAJ2nAACcpwAAn6cAAJ6nAAChpwAAoKcAAKOnAACipwAApacAAKSnAACnpwAApqcAAKmnAACopwAAZgIAAFwCAABhAgAAbAIAAGoCAACeAgAAhwIAAJ0CAABTqwAAtacAALSnAAC3pwAAtqcAALmnAAC4pwAAu6cAALqnAAC9pwAAvKcAAL+nAAC+pwAAwacAAMCnAADDpwAAwqcAAJSnAACCAgAAjh0AAMinAADHpwAAyqcAAMmnAABkAgAAzacAAMynAADRpwAA0KcAANenAADWpwAA2acAANinAADbpwAA2qcAAJsBAAD2pwAA9acAALOnAACgEwAAoRMAAKITAACjEwAApBMAAKUTAACmEwAApxMAAKgTAACpEwAAqhMAAKsTAACsEwAArRMAAK4TAACvEwAAsBMAALETAACyEwAAsxMAALQTAAC1EwAAthMAALcTAAC4EwAAuRMAALoTAAC7EwAAvBMAAL0TAAC+EwAAvxMAAMATAADBEwAAwhMAAMMTAADEEwAAxRMAAMYTAADHEwAAyBMAAMkTAADKEwAAyxMAAMwTAADNEwAAzhMAAM8TAADQEwAA0RMAANITAADTEwAA1BMAANUTAADWEwAA1xMAANgTAADZEwAA2hMAANsTAADcEwAA3RMAAN4TAADfEwAA4BMAAOETAADiEwAA4xMAAOQTAADlEwAA5hMAAOcTAADoEwAA6RMAAOoTAADrEwAA7BMAAO0TAADuEwAA7xMAAAb7AAAF+wAAQf8AAEL/AABD/wAARP8AAEX/AABG/wAAR/8AAEj/AABJ/wAASv8AAEv/AABM/wAATf8AAE7/AABP/wAAUP8AAFH/AABS/wAAU/8AAFT/AABV/wAAVv8AAFf/AABY/wAAWf8AAFr/AAAh/wAAIv8AACP/AAAk/wAAJf8AACb/AAAn/wAAKP8AACn/AAAq/wAAK/8AACz/AAAt/wAALv8AAC//AAAw/wAAMf8AADL/AAAz/wAANP8AADX/AAA2/wAAN/8AADj/AAA5/wAAOv8AACgEAQApBAEAKgQBACsEAQAsBAEALQQBAC4EAQAvBAEAMAQBADEEAQAyBAEAMwQBADQEAQA1BAEANgQBADcEAQA4BAEAOQQBADoEAQA7BAEAPAQBAD0EAQA+BAEAPwQBAEAEAQBBBAEAQgQBAEMEAQBEBAEARQQBAEYEAQBHBAEASAQBAEkEAQBKBAEASwQBAEwEAQBNBAEATgQBAE8EAQAABAEAAQQBAAIEAQADBAEABAQBAAUEAQAGBAEABwQBAAgEAQAJBAEACgQBAAsEAQAMBAEADQQBAA4EAQAPBAEAEAQBABEEAQASBAEAEwQBABQEAQAVBAEAFgQBABcEAQAYBAEAGQQBABoEAQAbBAEAHAQBAB0EAQAeBAEAHwQBACAEAQAhBAEAIgQBACMEAQAkBAEAJQQBACYEAQAnBAEA2AQBANkEAQDaBAEA2wQBANwEAQDdBAEA3gQBAN8EAQDgBAEA4QQBAOIEAQDjBAEA5AQBAOUEAQDmBAEA5wQBAOgEAQDpBAEA6gQBAOsEAQDsBAEA7QQBAO4EAQDvBAEA8AQBAPEEAQDyBAEA8wQBAPQEAQD1BAEA9gQBAPcEAQD4BAEA+QQBAPoEAQD7BAEAsAQBALEEAQCyBAEAswQBALQEAQC1BAEAtgQBALcEAQC4BAEAuQQBALoEAQC7BAEAvAQBAL0EAQC+BAEAvwQBAMAEAQDBBAEAwgQBAMMEAQDEBAEAxQQBAMYEAQDHBAEAyAQBAMkEAQDKBAEAywQBAMwEAQDNBAEAzgQBAM8EAQDQBAEA0QQBANIEAQDTBAEAlwUBAJgFAQCZBQEAmgUBAJsFAQCcBQEAnQUBAJ4FAQCfBQEAoAUBAKEFAQCjBQEApAUBAKUFAQCmBQEApwUBAKgFAQCpBQEAqgUBAKsFAQCsBQEArQUBAK4FAQCvBQEAsAUBALEFAQCzBQEAtAUBALUFAQC2BQEAtwUBALgFAQC5BQEAuwUBALwFAQBwBQEAcQUBAHIFAQBzBQEAdAUBAHUFAQB2BQEAdwUBAHgFAQB5BQEAegUBAHwFAQB9BQEAfgUBAH8FAQCABQEAgQUBAIIFAQCDBQEAhAUBAIUFAQCGBQEAhwUBAIgFAQCJBQEAigUBAIwFAQCNBQEAjgUBAI8FAQCQBQEAkQUBAJIFAQCUBQEAlQUBAMAMAQDBDAEAwgwBAMMMAQDEDAEAxQwBAMYMAQDHDAEAyAwBAMkMAQDKDAEAywwBAMwMAQDNDAEAzgwBAM8MAQDQDAEA0QwBANIMAQDTDAEA1AwBANUMAQDWDAEA1wwBANgMAQDZDAEA2gwBANsMAQDcDAEA3QwBAN4MAQDfDAEA4AwBAOEMAQDiDAEA4wwBAOQMAQDlDAEA5gwBAOcMAQDoDAEA6QwBAOoMAQDrDAEA7AwBAO0MAQDuDAEA7wwBAPAMAQDxDAEA8gwBAIAMAQCBDAEAggwBAIMMAQCEDAEAhQwBAIYMAQCHDAEAiAwBAIkMAQCKDAEAiwwBAIwMAQCNDAEAjgwBAI8MAQCQDAEAkQwBAJIMAQCTDAEAlAwBAJUMAQCWDAEAlwwBAJgMAQCZDAEAmgwBAJsMAQCcDAEAnQwBAJ4MAQCfDAEAoAwBAKEMAQCiDAEAowwBAKQMAQClDAEApgwBAKcMAQCoDAEAqQwBAKoMAQCrDAEArAwBAK0MAQCuDAEArwwBALAMAQCxDAEAsgwBAHANAQBxDQEAcg0BAHMNAQB0DQEAdQ0BAHYNAQB3DQEAeA0BAHkNAQB6DQEAew0BAHwNAQB9DQEAfg0BAH8NAQCADQEAgQ0BAIINAQCDDQEAhA0BAIUNAQBQDQEAUQ0BAFINAQBTDQEAVA0BAFUNAQBWDQEAVw0BAFgNAQBZDQEAWg0BAFsNAQBcDQEAXQ0BAF4NAQBfDQEAYA0BAGENAQBiDQEAYw0BAGQNAQBlDQEAwBgBAMEYAQDCGAEAwxgBAMQYAQDFGAEAxhgBAMcYAQDIGAEAyRgBAMoYAQDLGAEAzBgBAM0YAQDOGAEAzxgBANAYAQDRGAEA0hgBANMYAQDUGAEA1RgBANYYAQDXGAEA2BgBANkYAQDaGAEA2xgBANwYAQDdGAEA3hgBAN8YAQCgGAEAoRgBAKIYAQCjGAEApBgBAKUYAQCmGAEApxgBAKgYAQCpGAEAqhgBAKsYAQCsGAEArRgBAK4YAQCvGAEAsBgBALEYAQCyGAEAsxgBALQYAQC1GAEAthgBALcYAQC4GAEAuRgBALoYAQC7GAEAvBgBAL0YAQC+GAEAvxgBAGBuAQBhbgEAYm4BAGNuAQBkbgEAZW4BAGZuAQBnbgEAaG4BAGluAQBqbgEAa24BAGxuAQBtbgEAbm4BAG9uAQBwbgEAcW4BAHJuAQBzbgEAdG4BAHVuAQB2bgEAd24BAHhuAQB5bgEAem4BAHtuAQB8bgEAfW4BAH5uAQB/bgEAQG4BAEFuAQBCbgEAQ24BAERuAQBFbgEARm4BAEduAQBIbgEASW4BAEpuAQBLbgEATG4BAE1uAQBObgEAT24BAFBuAQBRbgEAUm4BAFNuAQBUbgEAVW4BAFZuAQBXbgEAWG4BAFluAQBabgEAW24BAFxuAQBdbgEAXm4BAF9uAQAi6QEAI+kBACTpAQAl6QEAJukBACfpAQAo6QEAKekBACrpAQAr6QEALOkBAC3pAQAu6QEAL+kBADDpAQAx6QEAMukBADPpAQA06QEANekBADbpAQA36QEAOOkBADnpAQA66QEAO+kBADzpAQA96QEAPukBAD/pAQBA6QEAQekBAELpAQBD6QEAAOkBAAHpAQAC6QEAA+kBAATpAQAF6QEABukBAAfpAQAI6QEACekBAArpAQAL6QEADOkBAA3pAQAO6QEAD+kBABDpAQAR6QEAEukBABPpAQAU6QEAFekBABbpAQAX6QEAGOkBABnpAQAa6QEAG+kBABzpAQAd6QEAHukBAB/pAQAg6QEAIekBAEEAAAAUOCEAAQAAAEIAAAAYOCEAAQAAAEMAAAAcOCEAAQAAAEQAAACgQiYAAQAAAEUAAAAgOCEAAQAAAEYAAAAkOCEAAQAAAEcAAAAoOCEAAQAAAEgAAAAsOCEAAQAAAEkAAAAwOCEAAQAAAEoAAAA0OCEAAQAAAEsAAAA4OCEAAgAAAEwAAABAOCEAAQAAAE0AAABEOCEAAQAAAE4AAABIOCEAAQAAAE8AAABMOCEAAQAAAFAAAABQOCEAAQAAAFEAAABUOCEAAQAAAFIAAABYOCEAAQAAAFMAAABcOCEAAgAAAFQAAABkOCEAAQAAAFUAAABoOCEAAQAAAFYAAABsOCEAAQAAAFcAAABwOCEAAQAAAFgAAAB0OCEAAQAAAFkAAAB4OCEAAQAAAFoAAAB8OCEAAQAAAGEAAACAOCEAAQAAAGIAAACEOCEAAQAAAGMAAACIOCEAAQAAAGQAAACcQiYAAQAAAGUAAACMOCEAAQAAAGYAAACQOCEAAQAAAGcAAACUOCEAAQAAAGgAAACYOCEAAQAAAGkAAACcOCEAAQAAAGoAAACgOCEAAQAAAGsAAACkOCEAAgAAAGwAAACsOCEAAQAAAG0AAACwOCEAAQAAAG4AAAC0OCEAAQAAAG8AAAC4OCEAAQAAAHAAAAC8OCEAAQAAAHEAAADAOCEAAQAAAHIAAADEOCEAAQAAAHMAAADIOCEAAgAAAHQAAADQOCEAAQAAAHUAAADUOCEAAQAAAHYAAADYOCEAAQAAAHcAAADcOCEAAQAAAHgAAADgOCEAAQAAAHkAAADkOCEAAQAAAHoAAADoOCEAAQAAALUAAADsOCEAAgAAAMAAAAD0OCEAAQAAAMEAAAD4OCEAAQAAAMIAAAD8OCEAAQAAAMMAAAAAOSEAAQAAAMQAAAAEOSEAAQAAAMUAAAAIOSEAAgAAAMYAAAAQOSEAAQAAAMcAAAAUOSEAAQAAAMgAAAAYOSEAAQAAAMkAAAAcOSEAAQAAAMoAAAAgOSEAAQAAAMsAAAAkOSEAAQAAAMwAAAAoOSEAAQAAAM0AAAAsOSEAAQAAAM4AAAAwOSEAAQAAAM8AAAA0OSEAAQAAANAAAAA4OSEAAQAAANEAAAA8OSEAAQAAANIAAABAOSEAAQAAANMAAABEOSEAAQAAANQAAABIOSEAAQAAANUAAABMOSEAAQAAANYAAABQOSEAAQAAANgAAABUOSEAAQAAANkAAABYOSEAAQAAANoAAABcOSEAAQAAANsAAABgOSEAAQAAANwAAABkOSEAAQAAAN0AAABoOSEAAQAAAN4AAABsOSEAAQAAAN8AAABwOSEAAQAAAOAAAAB0OSEAAQAAAOEAAAB4OSEAAQAAAOIAAAB8OSEAAQAAAOMAAACAOSEAAQAAAOQAAACEOSEAAQAAAOUAAACIOSEAAgAAAOYAAACQOSEAAQAAAOcAAACUOSEAAQAAAOgAAACYOSEAAQAAAOkAAACcOSEAAQAAAOoAAACgOSEAAQAAAOsAAACkOSEAAQAAAOwAAACoOSEAAQAAAO0AAACsOSEAAQAAAO4AAACwOSEAAQAAAO8AAAC0OSEAAQAAAPAAAAC4OSEAAQAAAPEAAAC8OSEAAQAAAPIAAADAOSEAAQAAAPMAAADEOSEAAQAAAPQAAADIOSEAAQAAAPUAAADMOSEAAQAAAPYAAADQOSEAAQAAAPgAAADUOSEAAQAAAPkAAADYOSEAAQAAAPoAAADcOSEAAQAAAPsAAADgOSEAAQAAAPwAAADkOSEAAQAAAP0AAADoOSEAAQAAAP4AAADsOSEAAQAAAP8AAADwOSEAAQAAAAABAAD0OSEAAQAAAAEBAAD4OSEAAQAAAAIBAAD8OSEAAQAAAAMBAAAAOiEAAQAAAAQBAAAEOiEAAQAAAAUBAAAIOiEAAQAAAAYBAAAMOiEAAQAAAAcBAAAQOiEAAQAAAAgBAAAUOiEAAQAAAAkBAAAYOiEAAQAAAAoBAAAcOiEAAQAAAAsBAAAgOiEAAQAAAAwBAAAkOiEAAQAAAA0BAAAoOiEAAQAAAA4BAAAsOiEAAQAAAA8BAAAwOiEAAQAAABABAAA0OiEAAQAAABEBAAA4OiEAAQAAABIBAAA8OiEAAQAAABMBAABAOiEAAQAAABQBAABEOiEAAQAAABUBAABIOiEAAQAAABYBAABMOiEAAQAAABcBAABQOiEAAQAAABgBAABUOiEAAQAAABkBAABYOiEAAQAAABoBAABcOiEAAQAAABsBAABgOiEAAQAAABwBAABkOiEAAQAAAB0BAABoOiEAAQAAAB4BAABsOiEAAQAAAB8BAABwOiEAAQAAACABAAB0OiEAAQAAACEBAAB4OiEAAQAAACIBAAB8OiEAAQAAACMBAACAOiEAAQAAACQBAACEOiEAAQAAACUBAACIOiEAAQAAACYBAACMOiEAAQAAACcBAACQOiEAAQAAACgBAACUOiEAAQAAACkBAACYOiEAAQAAACoBAACcOiEAAQAAACsBAACgOiEAAQAAACwBAACkOiEAAQAAAC0BAACoOiEAAQAAAC4BAACsOiEAAQAAAC8BAACwOiEAAQAAADIBAAC0OiEAAQAAADMBAAC4OiEAAQAAADQBAAC8OiEAAQAAADUBAADAOiEAAQAAADYBAADEOiEAAQAAADcBAADIOiEAAQAAADkBAADMOiEAAQAAADoBAADQOiEAAQAAADsBAADUOiEAAQAAADwBAADYOiEAAQAAAD0BAADcOiEAAQAAAD4BAADgOiEAAQAAAD8BAADkOiEAAQAAAEABAADoOiEAAQAAAEEBAADsOiEAAQAAAEIBAADwOiEAAQAAAEMBAAD0OiEAAQAAAEQBAAD4OiEAAQAAAEUBAAD8OiEAAQAAAEYBAAAAOyEAAQAAAEcBAAAEOyEAAQAAAEgBAAAIOyEAAQAAAEoBAAAMOyEAAQAAAEsBAAAQOyEAAQAAAEwBAAAUOyEAAQAAAE0BAAAYOyEAAQAAAE4BAAAcOyEAAQAAAE8BAAAgOyEAAQAAAFABAAAkOyEAAQAAAFEBAAAoOyEAAQAAAFIBAAAsOyEAAQAAAFMBAAAwOyEAAQAAAFQBAAA0OyEAAQAAAFUBAAA4OyEAAQAAAFYBAAA8OyEAAQAAAFcBAABAOyEAAQAAAFgBAABEOyEAAQAAAFkBAABIOyEAAQAAAFoBAABMOyEAAQAAAFsBAABQOyEAAQAAAFwBAABUOyEAAQAAAF0BAABYOyEAAQAAAF4BAABcOyEAAQAAAF8BAABgOyEAAQAAAGABAABkOyEAAQAAAGEBAABoOyEAAQAAAGIBAABsOyEAAQAAAGMBAABwOyEAAQAAAGQBAAB0OyEAAQAAAGUBAAB4OyEAAQAAAGYBAAB8OyEAAQAAAGcBAACAOyEAAQAAAGgBAACEOyEAAQAAAGkBAACIOyEAAQAAAGoBAACMOyEAAQAAAGsBAACQOyEAAQAAAGwBAACUOyEAAQAAAG0BAACYOyEAAQAAAG4BAACcOyEAAQAAAG8BAACgOyEAAQAAAHABAACkOyEAAQAAAHEBAACoOyEAAQAAAHIBAACsOyEAAQAAAHMBAACwOyEAAQAAAHQBAAC0OyEAAQAAAHUBAAC4OyEAAQAAAHYBAAC8OyEAAQAAAHcBAADAOyEAAQAAAHgBAADEOyEAAQAAAHkBAADIOyEAAQAAAHoBAADMOyEAAQAAAHsBAADQOyEAAQAAAHwBAADUOyEAAQAAAH0BAADYOyEAAQAAAH4BAADcOyEAAQAAAH8BAADgOyEAAgAAAIABAADoOyEAAQAAAIEBAADsOyEAAQAAAIIBAADwOyEAAQAAAIMBAAD0OyEAAQAAAIQBAAD4OyEAAQAAAIUBAAD8OyEAAQAAAIYBAAAAPCEAAQAAAIcBAAAEPCEAAQAAAIgBAAAIPCEAAQAAAIkBAAAMPCEAAQAAAIoBAAAQPCEAAQAAAIsBAAAUPCEAAQAAAIwBAAAYPCEAAQAAAI4BAAAcPCEAAQAAAI8BAAAgPCEAAQAAAJABAAAkPCEAAQAAAJEBAAAoPCEAAQAAAJIBAAAsPCEAAQAAAJMBAAAwPCEAAQAAAJQBAAA0PCEAAQAAAJUBAAA4PCEAAQAAAJYBAAA8PCEAAQAAAJcBAABAPCEAAQAAAJgBAABEPCEAAQAAAJkBAABIPCEAAQAAAJoBAABMPCEAAQAAAJsBAABQPCEAAQAAAJwBAABUPCEAAQAAAJ0BAABYPCEAAQAAAJ4BAABcPCEAAQAAAJ8BAABgPCEAAQAAAKABAABkPCEAAQAAAKEBAABoPCEAAQAAAKIBAABsPCEAAQAAAKMBAABwPCEAAQAAAKQBAAB0PCEAAQAAAKUBAAB4PCEAAQAAAKYBAAB8PCEAAQAAAKcBAACAPCEAAQAAAKgBAACEPCEAAQAAAKkBAACIPCEAAQAAAKwBAACMPCEAAQAAAK0BAACQPCEAAQAAAK4BAACUPCEAAQAAAK8BAACYPCEAAQAAALABAACcPCEAAQAAALEBAACgPCEAAQAAALIBAACkPCEAAQAAALMBAACoPCEAAQAAALQBAACsPCEAAQAAALUBAACwPCEAAQAAALYBAAC0PCEAAQAAALcBAAC4PCEAAQAAALgBAAC8PCEAAQAAALkBAADAPCEAAQAAALwBAADEPCEAAQAAAL0BAADIPCEAAQAAAL8BAADMPCEAAQAAAMQBAADQPCEAAgAAAMUBAADYPCEAAgAAAMYBAADgPCEAAgAAAMcBAADoPCEAAgAAAMgBAADwPCEAAgAAAMkBAAD4PCEAAgAAAMoBAAAAPSEAAgAAAMsBAAAIPSEAAgAAAMwBAAAQPSEAAgAAAM0BAAAYPSEAAQAAAM4BAAAcPSEAAQAAAM8BAAAgPSEAAQAAANABAAAkPSEAAQAAANEBAAAoPSEAAQAAANIBAAAsPSEAAQAAANMBAAAwPSEAAQAAANQBAAA0PSEAAQAAANUBAAA4PSEAAQAAANYBAAA8PSEAAQAAANcBAABAPSEAAQAAANgBAABEPSEAAQAAANkBAABIPSEAAQAAANoBAABMPSEAAQAAANsBAABQPSEAAQAAANwBAABUPSEAAQAAAN0BAABYPSEAAQAAAN4BAABcPSEAAQAAAN8BAABgPSEAAQAAAOABAABkPSEAAQAAAOEBAABoPSEAAQAAAOIBAABsPSEAAQAAAOMBAABwPSEAAQAAAOQBAAB0PSEAAQAAAOUBAAB4PSEAAQAAAOYBAAB8PSEAAQAAAOcBAACAPSEAAQAAAOgBAACEPSEAAQAAAOkBAACIPSEAAQAAAOoBAACMPSEAAQAAAOsBAACQPSEAAQAAAOwBAACUPSEAAQAAAO0BAACYPSEAAQAAAO4BAACcPSEAAQAAAO8BAACgPSEAAQAAAPEBAACkPSEAAgAAAPIBAACsPSEAAgAAAPMBAAC0PSEAAgAAAPQBAAC8PSEAAQAAAPUBAADAPSEAAQAAAPYBAADEPSEAAQAAAPcBAADIPSEAAQAAAPgBAADMPSEAAQAAAPkBAADQPSEAAQAAAPoBAADUPSEAAQAAAPsBAADYPSEAAQAAAPwBAADcPSEAAQAAAP0BAADgPSEAAQAAAP4BAADkPSEAAQAAAP8BAADoPSEAAQAAAAACAADsPSEAAQAAAAECAADwPSEAAQAAAAICAAD0PSEAAQAAAAMCAAD4PSEAAQAAAAQCAAD8PSEAAQAAAAUCAAAAPiEAAQAAAAYCAAAEPiEAAQAAAAcCAAAIPiEAAQAAAAgCAAAMPiEAAQAAAAkCAAAQPiEAAQAAAAoCAAAUPiEAAQAAAAsCAAAYPiEAAQAAAAwCAAAcPiEAAQAAAA0CAAAgPiEAAQAAAA4CAAAkPiEAAQAAAA8CAAAoPiEAAQAAABACAAAsPiEAAQAAABECAAAwPiEAAQAAABICAAA0PiEAAQAAABMCAAA4PiEAAQAAABQCAAA8PiEAAQAAABUCAABAPiEAAQAAABYCAABEPiEAAQAAABcCAABIPiEAAQAAABgCAABMPiEAAQAAABkCAABQPiEAAQAAABoCAABUPiEAAQAAABsCAABYPiEAAQAAABwCAABcPiEAAQAAAB0CAABgPiEAAQAAAB4CAABkPiEAAQAAAB8CAABoPiEAAQAAACACAABsPiEAAQAAACICAABwPiEAAQAAACMCAAB0PiEAAQAAACQCAAB4PiEAAQAAACUCAAB8PiEAAQAAACYCAACAPiEAAQAAACcCAACEPiEAAQAAACgCAACIPiEAAQAAACkCAACMPiEAAQAAACoCAACQPiEAAQAAACsCAACUPiEAAQAAACwCAACYPiEAAQAAAC0CAACcPiEAAQAAAC4CAACgPiEAAQAAAC8CAACkPiEAAQAAADACAACoPiEAAQAAADECAACsPiEAAQAAADICAACwPiEAAQAAADMCAAC0PiEAAQAAADoCAAC4PiEAAQAAADsCAAC8PiEAAQAAADwCAADAPiEAAQAAAD0CAADEPiEAAQAAAD4CAADIPiEAAQAAAD8CAADMPiEAAQAAAEACAADQPiEAAQAAAEECAADUPiEAAQAAAEICAADYPiEAAQAAAEMCAADcPiEAAQAAAEQCAADgPiEAAQAAAEUCAADkPiEAAQAAAEYCAADoPiEAAQAAAEcCAADsPiEAAQAAAEgCAADwPiEAAQAAAEkCAAD0PiEAAQAAAEoCAAD4PiEAAQAAAEsCAAD8PiEAAQAAAEwCAAAAPyEAAQAAAE0CAAAEPyEAAQAAAE4CAAAIPyEAAQAAAE8CAAAMPyEAAQAAAFACAAAQPyEAAQAAAFECAAAUPyEAAQAAAFICAAAYPyEAAQAAAFMCAAAcPyEAAQAAAFQCAAAgPyEAAQAAAFYCAAAkPyEAAQAAAFcCAAAoPyEAAQAAAFkCAAAsPyEAAQAAAFsCAAAwPyEAAQAAAFwCAAA0PyEAAQAAAGACAAA4PyEAAQAAAGECAAA8PyEAAQAAAGMCAABAPyEAAQAAAGQCAABEPyEAAQAAAGUCAABIPyEAAQAAAGYCAABMPyEAAQAAAGgCAABQPyEAAQAAAGkCAABUPyEAAQAAAGoCAABYPyEAAQAAAGsCAABcPyEAAQAAAGwCAABgPyEAAQAAAG8CAABkPyEAAQAAAHECAABoPyEAAQAAAHICAABsPyEAAQAAAHUCAABwPyEAAQAAAH0CAAB0PyEAAQAAAIACAAB4PyEAAQAAAIICAAB8PyEAAQAAAIMCAACAPyEAAQAAAIcCAACEPyEAAQAAAIgCAACIPyEAAQAAAIkCAACMPyEAAQAAAIoCAACQPyEAAQAAAIsCAACUPyEAAQAAAIwCAACYPyEAAQAAAJICAACcPyEAAQAAAJ0CAACgPyEAAQAAAJ4CAACkPyEAAQAAAEUDAACoPyEAAwAAAHADAAC0PyEAAQAAAHEDAAC4PyEAAQAAAHIDAAC8PyEAAQAAAHMDAADAPyEAAQAAAHYDAADEPyEAAQAAAHcDAADIPyEAAQAAAHsDAADMPyEAAQAAAHwDAADQPyEAAQAAAH0DAADUPyEAAQAAAH8DAADYPyEAAQAAAIYDAADcPyEAAQAAAIgDAADgPyEAAQAAAIkDAADkPyEAAQAAAIoDAADoPyEAAQAAAIwDAADsPyEAAQAAAI4DAADwPyEAAQAAAI8DAAD0PyEAAQAAAJADAAD4PyEAAQAAAJEDAAD8PyEAAQAAAJIDAAAAQCEAAgAAAJMDAAAIQCEAAQAAAJQDAAAMQCEAAQAAAJUDAAAQQCEAAgAAAJYDAAAYQCEAAQAAAJcDAAAcQCEAAQAAAJgDAAAgQCEAAwAAAJkDAAAsQCEAAwAAAJoDAAA4QCEAAgAAAJsDAABAQCEAAQAAAJwDAABEQCEAAgAAAJ0DAABMQCEAAQAAAJ4DAABQQCEAAQAAAJ8DAABUQCEAAQAAAKADAABYQCEAAgAAAKEDAABgQCEAAgAAAKMDAABoQCEAAgAAAKQDAABwQCEAAQAAAKUDAAB0QCEAAQAAAKYDAAB4QCEAAgAAAKcDAACAQCEAAQAAAKgDAACEQCEAAQAAAKkDAACIQCEAAgAAAKoDAACQQCEAAQAAAKsDAACUQCEAAQAAAKwDAACYQCEAAQAAAK0DAACcQCEAAQAAAK4DAACgQCEAAQAAAK8DAACkQCEAAQAAALADAACoQCEAAQAAALEDAACsQCEAAQAAALIDAACwQCEAAgAAALMDAAC4QCEAAQAAALQDAAC8QCEAAQAAALUDAADAQCEAAgAAALYDAADIQCEAAQAAALcDAADMQCEAAQAAALgDAADQQCEAAwAAALkDAADcQCEAAwAAALoDAADoQCEAAgAAALsDAADwQCEAAQAAALwDAAD0QCEAAgAAAL0DAAD8QCEAAQAAAL4DAAAAQSEAAQAAAL8DAAAEQSEAAQAAAMADAAAIQSEAAgAAAMEDAAAQQSEAAgAAAMIDAAAYQSEAAgAAAMMDAAAgQSEAAgAAAMQDAAAoQSEAAQAAAMUDAAAsQSEAAQAAAMYDAAAwQSEAAgAAAMcDAAA4QSEAAQAAAMgDAAA8QSEAAQAAAMkDAABAQSEAAgAAAMoDAABIQSEAAQAAAMsDAABMQSEAAQAAAMwDAABQQSEAAQAAAM0DAABUQSEAAQAAAM4DAABYQSEAAQAAAM8DAABcQSEAAQAAANADAABgQSEAAgAAANEDAABoQSEAAwAAANUDAAB0QSEAAgAAANYDAAB8QSEAAgAAANcDAACEQSEAAQAAANgDAACIQSEAAQAAANkDAACMQSEAAQAAANoDAACQQSEAAQAAANsDAACUQSEAAQAAANwDAACYQSEAAQAAAN0DAACcQSEAAQAAAN4DAACgQSEAAQAAAN8DAACkQSEAAQAAAOADAACoQSEAAQAAAOEDAACsQSEAAQAAAOIDAACwQSEAAQAAAOMDAAC0QSEAAQAAAOQDAAC4QSEAAQAAAOUDAAC8QSEAAQAAAOYDAADAQSEAAQAAAOcDAADEQSEAAQAAAOgDAADIQSEAAQAAAOkDAADMQSEAAQAAAOoDAADQQSEAAQAAAOsDAADUQSEAAQAAAOwDAADYQSEAAQAAAO0DAADcQSEAAQAAAO4DAADgQSEAAQAAAO8DAADkQSEAAQAAAPADAADoQSEAAgAAAPEDAADwQSEAAgAAAPIDAAD4QSEAAQAAAPMDAAD8QSEAAQAAAPQDAAAAQiEAAwAAAPUDAAAMQiEAAgAAAPcDAAAUQiEAAQAAAPgDAAAYQiEAAQAAAPkDAAAcQiEAAQAAAPoDAAAgQiEAAQAAAPsDAAAkQiEAAQAAAP0DAAAoQiEAAQAAAP4DAAAsQiEAAQAAAP8DAAAwQiEAAQAAAAAEAAA0QiEAAQAAAAEEAAA4QiEAAQAAAAIEAAA8QiEAAQAAAAMEAABAQiEAAQAAAAQEAABEQiEAAQAAAAUEAABIQiEAAQAAAAYEAABMQiEAAQAAAAcEAABQQiEAAQAAAAgEAABUQiEAAQAAAAkEAABYQiEAAQAAAAoEAABcQiEAAQAAAAsEAABgQiEAAQAAAAwEAABkQiEAAQAAAA0EAABoQiEAAQAAAA4EAABsQiEAAQAAAA8EAABwQiEAAQAAABAEAAB0QiEAAQAAABEEAAB4QiEAAQAAABIEAAB8QiEAAgAAABMEAACEQiEAAQAAABQEAACIQiEAAgAAABUEAACQQiEAAQAAABYEAACUQiEAAQAAABcEAACYQiEAAQAAABgEAACcQiEAAQAAABkEAACgQiEAAQAAABoEAACkQiEAAQAAABsEAACoQiEAAQAAABwEAACsQiEAAQAAAB0EAACwQiEAAQAAAB4EAAC0QiEAAgAAAB8EAAC8QiEAAQAAACAEAADAQiEAAQAAACEEAADEQiEAAgAAACIEAADMQiEAAwAAACMEAADYQiEAAQAAACQEAADcQiEAAQAAACUEAADgQiEAAQAAACYEAADkQiEAAQAAACcEAADoQiEAAQAAACgEAADsQiEAAQAAACkEAADwQiEAAQAAACoEAAD0QiEAAgAAACsEAAD8QiEAAQAAACwEAAAAQyEAAQAAAC0EAAAEQyEAAQAAAC4EAAAIQyEAAQAAAC8EAAAMQyEAAQAAADAEAAAQQyEAAQAAADEEAAAUQyEAAQAAADIEAAAYQyEAAgAAADMEAAAgQyEAAQAAADQEAAAkQyEAAgAAADUEAAAsQyEAAQAAADYEAAAwQyEAAQAAADcEAAA0QyEAAQAAADgEAAA4QyEAAQAAADkEAAA8QyEAAQAAADoEAABAQyEAAQAAADsEAABEQyEAAQAAADwEAABIQyEAAQAAAD0EAABMQyEAAQAAAD4EAABQQyEAAgAAAD8EAABYQyEAAQAAAEAEAABcQyEAAQAAAEEEAABgQyEAAgAAAEIEAABoQyEAAwAAAEMEAAB0QyEAAQAAAEQEAAB4QyEAAQAAAEUEAAB8QyEAAQAAAEYEAACAQyEAAQAAAEcEAACEQyEAAQAAAEgEAACIQyEAAQAAAEkEAACMQyEAAQAAAEoEAACQQyEAAgAAAEsEAACYQyEAAQAAAEwEAACcQyEAAQAAAE0EAACgQyEAAQAAAE4EAACkQyEAAQAAAE8EAACoQyEAAQAAAFAEAACsQyEAAQAAAFEEAACwQyEAAQAAAFIEAAC0QyEAAQAAAFMEAAC4QyEAAQAAAFQEAAC8QyEAAQAAAFUEAADAQyEAAQAAAFYEAADEQyEAAQAAAFcEAADIQyEAAQAAAFgEAADMQyEAAQAAAFkEAADQQyEAAQAAAFoEAADUQyEAAQAAAFsEAADYQyEAAQAAAFwEAADcQyEAAQAAAF0EAADgQyEAAQAAAF4EAADkQyEAAQAAAF8EAADoQyEAAQAAAGAEAADsQyEAAQAAAGEEAADwQyEAAQAAAGIEAAD0QyEAAgAAAGMEAAD8QyEAAgAAAGQEAAAERCEAAQAAAGUEAAAIRCEAAQAAAGYEAAAMRCEAAQAAAGcEAAAQRCEAAQAAAGgEAAAURCEAAQAAAGkEAAAYRCEAAQAAAGoEAAAcRCEAAQAAAGsEAAAgRCEAAQAAAGwEAAAkRCEAAQAAAG0EAAAoRCEAAQAAAG4EAAAsRCEAAQAAAG8EAAAwRCEAAQAAAHAEAAA0RCEAAQAAAHEEAAA4RCEAAQAAAHIEAAA8RCEAAQAAAHMEAABARCEAAQAAAHQEAABERCEAAQAAAHUEAABIRCEAAQAAAHYEAABMRCEAAQAAAHcEAABQRCEAAQAAAHgEAABURCEAAQAAAHkEAABYRCEAAQAAAHoEAABcRCEAAQAAAHsEAABgRCEAAQAAAHwEAABkRCEAAQAAAH0EAABoRCEAAQAAAH4EAABsRCEAAQAAAH8EAABwRCEAAQAAAIAEAAB0RCEAAQAAAIEEAAB4RCEAAQAAAIoEAAB8RCEAAQAAAIsEAACARCEAAQAAAIwEAACERCEAAQAAAI0EAACIRCEAAQAAAI4EAACMRCEAAQAAAI8EAACQRCEAAQAAAJAEAACURCEAAQAAAJEEAACYRCEAAQAAAJIEAACcRCEAAQAAAJMEAACgRCEAAQAAAJQEAACkRCEAAQAAAJUEAACoRCEAAQAAAJYEAACsRCEAAQAAAJcEAACwRCEAAQAAAJgEAAC0RCEAAQAAAJkEAAC4RCEAAQAAAJoEAAC8RCEAAQAAAJsEAADARCEAAQAAAJwEAADERCEAAQAAAJ0EAADIRCEAAQAAAJ4EAADMRCEAAQAAAJ8EAADQRCEAAQAAAKAEAADURCEAAQAAAKEEAADYRCEAAQAAAKIEAADcRCEAAQAAAKMEAADgRCEAAQAAAKQEAADkRCEAAQAAAKUEAADoRCEAAQAAAKYEAADsRCEAAQAAAKcEAADwRCEAAQAAAKgEAAD0RCEAAQAAAKkEAAD4RCEAAQAAAKoEAAD8RCEAAQAAAKsEAAAARSEAAQAAAKwEAAAERSEAAQAAAK0EAAAIRSEAAQAAAK4EAAAMRSEAAQAAAK8EAAAQRSEAAQAAALAEAAAURSEAAQAAALEEAAAYRSEAAQAAALIEAAAcRSEAAQAAALMEAAAgRSEAAQAAALQEAAAkRSEAAQAAALUEAAAoRSEAAQAAALYEAAAsRSEAAQAAALcEAAAwRSEAAQAAALgEAAA0RSEAAQAAALkEAAA4RSEAAQAAALoEAAA8RSEAAQAAALsEAABARSEAAQAAALwEAABERSEAAQAAAL0EAABIRSEAAQAAAL4EAABMRSEAAQAAAL8EAABQRSEAAQAAAMAEAABURSEAAQAAAMEEAABYRSEAAQAAAMIEAABcRSEAAQAAAMMEAABgRSEAAQAAAMQEAABkRSEAAQAAAMUEAABoRSEAAQAAAMYEAABsRSEAAQAAAMcEAABwRSEAAQAAAMgEAAB0RSEAAQAAAMkEAAB4RSEAAQAAAMoEAAB8RSEAAQAAAMsEAACARSEAAQAAAMwEAACERSEAAQAAAM0EAACIRSEAAQAAAM4EAACMRSEAAQAAAM8EAACQRSEAAQAAANAEAACURSEAAQAAANEEAACYRSEAAQAAANIEAACcRSEAAQAAANMEAACgRSEAAQAAANQEAACkRSEAAQAAANUEAACoRSEAAQAAANYEAACsRSEAAQAAANcEAACwRSEAAQAAANgEAAC0RSEAAQAAANkEAAC4RSEAAQAAANoEAAC8RSEAAQAAANsEAADARSEAAQAAANwEAADERSEAAQAAAN0EAADIRSEAAQAAAN4EAADMRSEAAQAAAN8EAADQRSEAAQAAAOAEAADURSEAAQAAAOEEAADYRSEAAQAAAOIEAADcRSEAAQAAAOMEAADgRSEAAQAAAOQEAADkRSEAAQAAAOUEAADoRSEAAQAAAOYEAADsRSEAAQAAAOcEAADwRSEAAQAAAOgEAAD0RSEAAQAAAOkEAAD4RSEAAQAAAOoEAAD8RSEAAQAAAOsEAAAARiEAAQAAAOwEAAAERiEAAQAAAO0EAAAIRiEAAQAAAO4EAAAMRiEAAQAAAO8EAAAQRiEAAQAAAPAEAAAURiEAAQAAAPEEAAAYRiEAAQAAAPIEAAAcRiEAAQAAAPMEAAAgRiEAAQAAAPQEAAAkRiEAAQAAAPUEAAAoRiEAAQAAAPYEAAAsRiEAAQAAAPcEAAAwRiEAAQAAAPgEAAA0RiEAAQAAAPkEAAA4RiEAAQAAAPoEAAA8RiEAAQAAAPsEAABARiEAAQAAAPwEAABERiEAAQAAAP0EAABIRiEAAQAAAP4EAABMRiEAAQAAAP8EAABQRiEAAQAAAAAFAABURiEAAQAAAAEFAABYRiEAAQAAAAIFAABcRiEAAQAAAAMFAABgRiEAAQAAAAQFAABkRiEAAQAAAAUFAABoRiEAAQAAAAYFAABsRiEAAQAAAAcFAABwRiEAAQAAAAgFAAB0RiEAAQAAAAkFAAB4RiEAAQAAAAoFAAB8RiEAAQAAAAsFAACARiEAAQAAAAwFAACERiEAAQAAAA0FAACIRiEAAQAAAA4FAACMRiEAAQAAAA8FAACQRiEAAQAAABAFAACURiEAAQAAABEFAACYRiEAAQAAABIFAACcRiEAAQAAABMFAACgRiEAAQAAABQFAACkRiEAAQAAABUFAACoRiEAAQAAABYFAACsRiEAAQAAABcFAACwRiEAAQAAABgFAAC0RiEAAQAAABkFAAC4RiEAAQAAABoFAAC8RiEAAQAAABsFAADARiEAAQAAABwFAADERiEAAQAAAB0FAADIRiEAAQAAAB4FAADMRiEAAQAAAB8FAADQRiEAAQAAACAFAADURiEAAQAAACEFAADYRiEAAQAAACIFAADcRiEAAQAAACMFAADgRiEAAQAAACQFAADkRiEAAQAAACUFAADoRiEAAQAAACYFAADsRiEAAQAAACcFAADwRiEAAQAAACgFAAD0RiEAAQAAACkFAAD4RiEAAQAAACoFAAD8RiEAAQAAACsFAAAARyEAAQAAACwFAAAERyEAAQAAAC0FAAAIRyEAAQAAAC4FAAAMRyEAAQAAAC8FAAAQRyEAAQAAADEFAAAURyEAAQAAADIFAAAYRyEAAQAAADMFAAAcRyEAAQAAADQFAAAgRyEAAQAAADUFAAAkRyEAAQAAADYFAAAoRyEAAQAAADcFAAAsRyEAAQAAADgFAAAwRyEAAQAAADkFAAA0RyEAAQAAADoFAAA4RyEAAQAAADsFAAA8RyEAAQAAADwFAABARyEAAQAAAD0FAABERyEAAQAAAD4FAABIRyEAAQAAAD8FAABMRyEAAQAAAEAFAABQRyEAAQAAAEEFAABURyEAAQAAAEIFAABYRyEAAQAAAEMFAABcRyEAAQAAAEQFAABgRyEAAQAAAEUFAABkRyEAAQAAAEYFAABoRyEAAQAAAEcFAABsRyEAAQAAAEgFAABwRyEAAQAAAEkFAAB0RyEAAQAAAEoFAAB4RyEAAQAAAEsFAAB8RyEAAQAAAEwFAACARyEAAQAAAE0FAACERyEAAQAAAE4FAACIRyEAAQAAAE8FAACMRyEAAQAAAFAFAACQRyEAAQAAAFEFAACURyEAAQAAAFIFAACYRyEAAQAAAFMFAACcRyEAAQAAAFQFAACgRyEAAQAAAFUFAACkRyEAAQAAAFYFAACoRyEAAQAAAGEFAACsRyEAAQAAAGIFAACwRyEAAQAAAGMFAAC0RyEAAQAAAGQFAAC4RyEAAQAAAGUFAAC8RyEAAQAAAGYFAADARyEAAQAAAGcFAADERyEAAQAAAGgFAADIRyEAAQAAAGkFAADMRyEAAQAAAGoFAADQRyEAAQAAAGsFAADURyEAAQAAAGwFAADYRyEAAQAAAG0FAADcRyEAAQAAAG4FAADgRyEAAQAAAG8FAADkRyEAAQAAAHAFAADoRyEAAQAAAHEFAADsRyEAAQAAAHIFAADwRyEAAQAAAHMFAAD0RyEAAQAAAHQFAAD4RyEAAQAAAHUFAAD8RyEAAQAAAHYFAAAASCEAAQAAAHcFAAAESCEAAQAAAHgFAAAISCEAAQAAAHkFAAAMSCEAAQAAAHoFAAAQSCEAAQAAAHsFAAAUSCEAAQAAAHwFAAAYSCEAAQAAAH0FAAAcSCEAAQAAAH4FAAAgSCEAAQAAAH8FAAAkSCEAAQAAAIAFAAAoSCEAAQAAAIEFAAAsSCEAAQAAAIIFAAAwSCEAAQAAAIMFAAA0SCEAAQAAAIQFAAA4SCEAAQAAAIUFAAA8SCEAAQAAAIYFAABASCEAAQAAAKAQAABESCEAAQAAAKEQAABISCEAAQAAAKIQAABMSCEAAQAAAKMQAABQSCEAAQAAAKQQAABUSCEAAQAAAKUQAABYSCEAAQAAAKYQAABcSCEAAQAAAKcQAABgSCEAAQAAAKgQAABkSCEAAQAAAKkQAABoSCEAAQAAAKoQAABsSCEAAQAAAKsQAABwSCEAAQAAAKwQAAB0SCEAAQAAAK0QAAB4SCEAAQAAAK4QAAB8SCEAAQAAAK8QAACASCEAAQAAALAQAACESCEAAQAAALEQAACISCEAAQAAALIQAACMSCEAAQAAALMQAACQSCEAAQAAALQQAACUSCEAAQAAALUQAACYSCEAAQAAALYQAACcSCEAAQAAALcQAACgSCEAAQAAALgQAACkSCEAAQAAALkQAACoSCEAAQAAALoQAACsSCEAAQAAALsQAACwSCEAAQAAALwQAAC0SCEAAQAAAL0QAAC4SCEAAQAAAL4QAAC8SCEAAQAAAL8QAADASCEAAQAAAMAQAADESCEAAQAAAMEQAADISCEAAQAAAMIQAADMSCEAAQAAAMMQAADQSCEAAQAAAMQQAADUSCEAAQAAAMUQAADYSCEAAQAAAMcQAADcSCEAAQAAAM0QAADgSCEAAQAAANAQAADkSCEAAQAAANEQAADoSCEAAQAAANIQAADsSCEAAQAAANMQAADwSCEAAQAAANQQAAD0SCEAAQAAANUQAAD4SCEAAQAAANYQAAD8SCEAAQAAANcQAAAASSEAAQAAANgQAAAESSEAAQAAANkQAAAISSEAAQAAANoQAAAMSSEAAQAAANsQAAAQSSEAAQAAANwQAAAUSSEAAQAAAN0QAAAYSSEAAQAAAN4QAAAcSSEAAQAAAN8QAAAgSSEAAQAAAOAQAAAkSSEAAQAAAOEQAAAoSSEAAQAAAOIQAAAsSSEAAQAAAOMQAAAwSSEAAQAAAOQQAAA0SSEAAQAAAOUQAAA4SSEAAQAAAOYQAAA8SSEAAQAAAOcQAABASSEAAQAAAOgQAABESSEAAQAAAOkQAABISSEAAQAAAOoQAABMSSEAAQAAAOsQAABQSSEAAQAAAOwQAABUSSEAAQAAAO0QAABYSSEAAQAAAO4QAABcSSEAAQAAAO8QAABgSSEAAQAAAPAQAABkSSEAAQAAAPEQAABoSSEAAQAAAPIQAABsSSEAAQAAAPMQAABwSSEAAQAAAPQQAAB0SSEAAQAAAPUQAAB4SSEAAQAAAPYQAAB8SSEAAQAAAPcQAACASSEAAQAAAPgQAACESSEAAQAAAPkQAACISSEAAQAAAPoQAACMSSEAAQAAAP0QAACQSSEAAQAAAP4QAACUSSEAAQAAAP8QAACYSSEAAQAAAKATAACcSSEAAQAAAKETAACgSSEAAQAAAKITAACkSSEAAQAAAKMTAACoSSEAAQAAAKQTAACsSSEAAQAAAKUTAACwSSEAAQAAAKYTAAC0SSEAAQAAAKcTAAC4SSEAAQAAAKgTAAC8SSEAAQAAAKkTAADASSEAAQAAAKoTAADESSEAAQAAAKsTAADISSEAAQAAAKwTAADMSSEAAQAAAK0TAADQSSEAAQAAAK4TAADUSSEAAQAAAK8TAADYSSEAAQAAALATAADcSSEAAQAAALETAADgSSEAAQAAALITAADkSSEAAQAAALMTAADoSSEAAQAAALQTAADsSSEAAQAAALUTAADwSSEAAQAAALYTAAD0SSEAAQAAALcTAAD4SSEAAQAAALgTAAD8SSEAAQAAALkTAAAASiEAAQAAALoTAAAESiEAAQAAALsTAAAISiEAAQAAALwTAAAMSiEAAQAAAL0TAAAQSiEAAQAAAL4TAAAUSiEAAQAAAL8TAAAYSiEAAQAAAMATAAAcSiEAAQAAAMETAAAgSiEAAQAAAMITAAAkSiEAAQAAAMMTAAAoSiEAAQAAAMQTAAAsSiEAAQAAAMUTAAAwSiEAAQAAAMYTAAA0SiEAAQAAAMcTAAA4SiEAAQAAAMgTAAA8SiEAAQAAAMkTAABASiEAAQAAAMoTAABESiEAAQAAAMsTAABISiEAAQAAAMwTAABMSiEAAQAAAM0TAABQSiEAAQAAAM4TAABUSiEAAQAAAM8TAABYSiEAAQAAANATAABcSiEAAQAAANETAABgSiEAAQAAANITAABkSiEAAQAAANMTAABoSiEAAQAAANQTAABsSiEAAQAAANUTAABwSiEAAQAAANYTAAB0SiEAAQAAANcTAAB4SiEAAQAAANgTAAB8SiEAAQAAANkTAACASiEAAQAAANoTAACESiEAAQAAANsTAACISiEAAQAAANwTAACMSiEAAQAAAN0TAACQSiEAAQAAAN4TAACUSiEAAQAAAN8TAACYSiEAAQAAAOATAACcSiEAAQAAAOETAACgSiEAAQAAAOITAACkSiEAAQAAAOMTAACoSiEAAQAAAOQTAACsSiEAAQAAAOUTAACwSiEAAQAAAOYTAAC0SiEAAQAAAOcTAAC4SiEAAQAAAOgTAAC8SiEAAQAAAOkTAADASiEAAQAAAOoTAADESiEAAQAAAOsTAADISiEAAQAAAOwTAADMSiEAAQAAAO0TAADQSiEAAQAAAO4TAADUSiEAAQAAAO8TAADYSiEAAQAAAPATAADcSiEAAQAAAPETAADgSiEAAQAAAPITAADkSiEAAQAAAPMTAADoSiEAAQAAAPQTAADsSiEAAQAAAPUTAADwSiEAAQAAAPgTAAD0SiEAAQAAAPkTAAD4SiEAAQAAAPoTAAD8SiEAAQAAAPsTAAAASyEAAQAAAPwTAAAESyEAAQAAAP0TAAAISyEAAQAAAIAcAAAMSyEAAgAAAIEcAAAUSyEAAgAAAIIcAAAcSyEAAgAAAIMcAAAkSyEAAgAAAIQcAAAsSyEAAwAAAIUcAAA4SyEAAwAAAIYcAABESyEAAgAAAIccAABMSyEAAgAAAIgcAABUSyEAAgAAAIkcAABcSyEAAQAAAIocAABgSyEAAQAAAJAcAABkSyEAAQAAAJEcAABoSyEAAQAAAJIcAABsSyEAAQAAAJMcAABwSyEAAQAAAJQcAAB0SyEAAQAAAJUcAAB4SyEAAQAAAJYcAAB8SyEAAQAAAJccAACASyEAAQAAAJgcAACESyEAAQAAAJkcAACISyEAAQAAAJocAACMSyEAAQAAAJscAACQSyEAAQAAAJwcAACUSyEAAQAAAJ0cAACYSyEAAQAAAJ4cAACcSyEAAQAAAJ8cAACgSyEAAQAAAKAcAACkSyEAAQAAAKEcAACoSyEAAQAAAKIcAACsSyEAAQAAAKMcAACwSyEAAQAAAKQcAAC0SyEAAQAAAKUcAAC4SyEAAQAAAKYcAAC8SyEAAQAAAKccAADASyEAAQAAAKgcAADESyEAAQAAAKkcAADISyEAAQAAAKocAADMSyEAAQAAAKscAADQSyEAAQAAAKwcAADUSyEAAQAAAK0cAADYSyEAAQAAAK4cAADcSyEAAQAAAK8cAADgSyEAAQAAALAcAADkSyEAAQAAALEcAADoSyEAAQAAALIcAADsSyEAAQAAALMcAADwSyEAAQAAALQcAAD0SyEAAQAAALUcAAD4SyEAAQAAALYcAAD8SyEAAQAAALccAAAATCEAAQAAALgcAAAETCEAAQAAALkcAAAITCEAAQAAALocAAAMTCEAAQAAAL0cAAAQTCEAAQAAAL4cAAAUTCEAAQAAAL8cAAAYTCEAAQAAAHkdAAAcTCEAAQAAAH0dAAAgTCEAAQAAAI4dAAAkTCEAAQAAAAAeAAAoTCEAAQAAAAEeAAAsTCEAAQAAAAIeAAAwTCEAAQAAAAMeAAA0TCEAAQAAAAQeAAA4TCEAAQAAAAUeAAA8TCEAAQAAAAYeAABATCEAAQAAAAceAABETCEAAQAAAAgeAABITCEAAQAAAAkeAABMTCEAAQAAAAoeAABQTCEAAQAAAAseAABUTCEAAQAAAAweAABYTCEAAQAAAA0eAABcTCEAAQAAAA4eAABgTCEAAQAAAA8eAABkTCEAAQAAABAeAABoTCEAAQAAABEeAABsTCEAAQAAABIeAABwTCEAAQAAABMeAAB0TCEAAQAAABQeAAB4TCEAAQAAABUeAAB8TCEAAQAAABYeAACATCEAAQAAABceAACETCEAAQAAABgeAACITCEAAQAAABkeAACMTCEAAQAAABoeAACQTCEAAQAAABseAACUTCEAAQAAABweAACYTCEAAQAAAB0eAACcTCEAAQAAAB4eAACgTCEAAQAAAB8eAACkTCEAAQAAACAeAACoTCEAAQAAACEeAACsTCEAAQAAACIeAACwTCEAAQAAACMeAAC0TCEAAQAAACQeAAC4TCEAAQAAACUeAAC8TCEAAQAAACYeAADATCEAAQAAACceAADETCEAAQAAACgeAADITCEAAQAAACkeAADMTCEAAQAAACoeAADQTCEAAQAAACseAADUTCEAAQAAACweAADYTCEAAQAAAC0eAADcTCEAAQAAAC4eAADgTCEAAQAAAC8eAADkTCEAAQAAADAeAADoTCEAAQAAADEeAADsTCEAAQAAADIeAADwTCEAAQAAADMeAAD0TCEAAQAAADQeAAD4TCEAAQAAADUeAAD8TCEAAQAAADYeAAAATSEAAQAAADceAAAETSEAAQAAADgeAAAITSEAAQAAADkeAAAMTSEAAQAAADoeAAAQTSEAAQAAADseAAAUTSEAAQAAADweAAAYTSEAAQAAAD0eAAAcTSEAAQAAAD4eAAAgTSEAAQAAAD8eAAAkTSEAAQAAAEAeAAAoTSEAAQAAAEEeAAAsTSEAAQAAAEIeAAAwTSEAAQAAAEMeAAA0TSEAAQAAAEQeAAA4TSEAAQAAAEUeAAA8TSEAAQAAAEYeAABATSEAAQAAAEceAABETSEAAQAAAEgeAABITSEAAQAAAEkeAABMTSEAAQAAAEoeAABQTSEAAQAAAEseAABUTSEAAQAAAEweAABYTSEAAQAAAE0eAABcTSEAAQAAAE4eAABgTSEAAQAAAE8eAABkTSEAAQAAAFAeAABoTSEAAQAAAFEeAABsTSEAAQAAAFIeAABwTSEAAQAAAFMeAAB0TSEAAQAAAFQeAAB4TSEAAQAAAFUeAAB8TSEAAQAAAFYeAACATSEAAQAAAFceAACETSEAAQAAAFgeAACITSEAAQAAAFkeAACMTSEAAQAAAFoeAACQTSEAAQAAAFseAACUTSEAAQAAAFweAACYTSEAAQAAAF0eAACcTSEAAQAAAF4eAACgTSEAAQAAAF8eAACkTSEAAQAAAGAeAACoTSEAAgAAAGEeAACwTSEAAgAAAGIeAAC4TSEAAQAAAGMeAAC8TSEAAQAAAGQeAADATSEAAQAAAGUeAADETSEAAQAAAGYeAADITSEAAQAAAGceAADMTSEAAQAAAGgeAADQTSEAAQAAAGkeAADUTSEAAQAAAGoeAADYTSEAAQAAAGseAADcTSEAAQAAAGweAADgTSEAAQAAAG0eAADkTSEAAQAAAG4eAADoTSEAAQAAAG8eAADsTSEAAQAAAHAeAADwTSEAAQAAAHEeAAD0TSEAAQAAAHIeAAD4TSEAAQAAAHMeAAD8TSEAAQAAAHQeAAAATiEAAQAAAHUeAAAETiEAAQAAAHYeAAAITiEAAQAAAHceAAAMTiEAAQAAAHgeAAAQTiEAAQAAAHkeAAAUTiEAAQAAAHoeAAAYTiEAAQAAAHseAAAcTiEAAQAAAHweAAAgTiEAAQAAAH0eAAAkTiEAAQAAAH4eAAAoTiEAAQAAAH8eAAAsTiEAAQAAAIAeAAAwTiEAAQAAAIEeAAA0TiEAAQAAAIIeAAA4TiEAAQAAAIMeAAA8TiEAAQAAAIQeAABATiEAAQAAAIUeAABETiEAAQAAAIYeAABITiEAAQAAAIceAABMTiEAAQAAAIgeAABQTiEAAQAAAIkeAABUTiEAAQAAAIoeAABYTiEAAQAAAIseAABcTiEAAQAAAIweAABgTiEAAQAAAI0eAABkTiEAAQAAAI4eAABoTiEAAQAAAI8eAABsTiEAAQAAAJAeAABwTiEAAQAAAJEeAAB0TiEAAQAAAJIeAAB4TiEAAQAAAJMeAAB8TiEAAQAAAJQeAACATiEAAQAAAJUeAACETiEAAQAAAJseAACITiEAAgAAAJ4eAACQTiEAAQAAAKAeAACUTiEAAQAAAKEeAACYTiEAAQAAAKIeAACcTiEAAQAAAKMeAACgTiEAAQAAAKQeAACkTiEAAQAAAKUeAACoTiEAAQAAAKYeAACsTiEAAQAAAKceAACwTiEAAQAAAKgeAAC0TiEAAQAAAKkeAAC4TiEAAQAAAKoeAAC8TiEAAQAAAKseAADATiEAAQAAAKweAADETiEAAQAAAK0eAADITiEAAQAAAK4eAADMTiEAAQAAAK8eAADQTiEAAQAAALAeAADUTiEAAQAAALEeAADYTiEAAQAAALIeAADcTiEAAQAAALMeAADgTiEAAQAAALQeAADkTiEAAQAAALUeAADoTiEAAQAAALYeAADsTiEAAQAAALceAADwTiEAAQAAALgeAAD0TiEAAQAAALkeAAD4TiEAAQAAALoeAAD8TiEAAQAAALseAAAATyEAAQAAALweAAAETyEAAQAAAL0eAAAITyEAAQAAAL4eAAAMTyEAAQAAAL8eAAAQTyEAAQAAAMAeAAAUTyEAAQAAAMEeAAAYTyEAAQAAAMIeAAAcTyEAAQAAAMMeAAAgTyEAAQAAAMQeAAAkTyEAAQAAAMUeAAAoTyEAAQAAAMYeAAAsTyEAAQAAAMceAAAwTyEAAQAAAMgeAAA0TyEAAQAAAMkeAAA4TyEAAQAAAMoeAAA8TyEAAQAAAMseAABATyEAAQAAAMweAABETyEAAQAAAM0eAABITyEAAQAAAM4eAABMTyEAAQAAAM8eAABQTyEAAQAAANAeAABUTyEAAQAAANEeAABYTyEAAQAAANIeAABcTyEAAQAAANMeAABgTyEAAQAAANQeAABkTyEAAQAAANUeAABoTyEAAQAAANYeAABsTyEAAQAAANceAABwTyEAAQAAANgeAAB0TyEAAQAAANkeAAB4TyEAAQAAANoeAAB8TyEAAQAAANseAACATyEAAQAAANweAACETyEAAQAAAN0eAACITyEAAQAAAN4eAACMTyEAAQAAAN8eAACQTyEAAQAAAOAeAACUTyEAAQAAAOEeAACYTyEAAQAAAOIeAACcTyEAAQAAAOMeAACgTyEAAQAAAOQeAACkTyEAAQAAAOUeAACoTyEAAQAAAOYeAACsTyEAAQAAAOceAACwTyEAAQAAAOgeAAC0TyEAAQAAAOkeAAC4TyEAAQAAAOoeAAC8TyEAAQAAAOseAADATyEAAQAAAOweAADETyEAAQAAAO0eAADITyEAAQAAAO4eAADMTyEAAQAAAO8eAADQTyEAAQAAAPAeAADUTyEAAQAAAPEeAADYTyEAAQAAAPIeAADcTyEAAQAAAPMeAADgTyEAAQAAAPQeAADkTyEAAQAAAPUeAADoTyEAAQAAAPYeAADsTyEAAQAAAPceAADwTyEAAQAAAPgeAAD0TyEAAQAAAPkeAAD4TyEAAQAAAPoeAAD8TyEAAQAAAPseAAAAUCEAAQAAAPweAAAEUCEAAQAAAP0eAAAIUCEAAQAAAP4eAAAMUCEAAQAAAP8eAAAQUCEAAQAAAAAfAAAUUCEAAQAAAAEfAAAYUCEAAQAAAAIfAAAcUCEAAQAAAAMfAAAgUCEAAQAAAAQfAAAkUCEAAQAAAAUfAAAoUCEAAQAAAAYfAAAsUCEAAQAAAAcfAAAwUCEAAQAAAAgfAAA0UCEAAQAAAAkfAAA4UCEAAQAAAAofAAA8UCEAAQAAAAsfAABAUCEAAQAAAAwfAABEUCEAAQAAAA0fAABIUCEAAQAAAA4fAABMUCEAAQAAAA8fAABQUCEAAQAAABAfAABUUCEAAQAAABEfAABYUCEAAQAAABIfAABcUCEAAQAAABMfAABgUCEAAQAAABQfAABkUCEAAQAAABUfAABoUCEAAQAAABgfAABsUCEAAQAAABkfAABwUCEAAQAAABofAAB0UCEAAQAAABsfAAB4UCEAAQAAABwfAAB8UCEAAQAAAB0fAACAUCEAAQAAACAfAACEUCEAAQAAACEfAACIUCEAAQAAACIfAACMUCEAAQAAACMfAACQUCEAAQAAACQfAACUUCEAAQAAACUfAACYUCEAAQAAACYfAACcUCEAAQAAACcfAACgUCEAAQAAACgfAACkUCEAAQAAACkfAACoUCEAAQAAACofAACsUCEAAQAAACsfAACwUCEAAQAAACwfAAC0UCEAAQAAAC0fAAC4UCEAAQAAAC4fAAC8UCEAAQAAAC8fAADAUCEAAQAAADAfAADEUCEAAQAAADEfAADIUCEAAQAAADIfAADMUCEAAQAAADMfAADQUCEAAQAAADQfAADUUCEAAQAAADUfAADYUCEAAQAAADYfAADcUCEAAQAAADcfAADgUCEAAQAAADgfAADkUCEAAQAAADkfAADoUCEAAQAAADofAADsUCEAAQAAADsfAADwUCEAAQAAADwfAAD0UCEAAQAAAD0fAAD4UCEAAQAAAD4fAAD8UCEAAQAAAD8fAAAAUSEAAQAAAEAfAAAEUSEAAQAAAEEfAAAIUSEAAQAAAEIfAAAMUSEAAQAAAEMfAAAQUSEAAQAAAEQfAAAUUSEAAQAAAEUfAAAYUSEAAQAAAEgfAAAcUSEAAQAAAEkfAAAgUSEAAQAAAEofAAAkUSEAAQAAAEsfAAAoUSEAAQAAAEwfAAAsUSEAAQAAAE0fAAAwUSEAAQAAAFEfAAA0USEAAQAAAFMfAAA4USEAAQAAAFUfAAA8USEAAQAAAFcfAABAUSEAAQAAAFkfAABEUSEAAQAAAFsfAABIUSEAAQAAAF0fAABMUSEAAQAAAF8fAABQUSEAAQAAAGAfAABUUSEAAQAAAGEfAABYUSEAAQAAAGIfAABcUSEAAQAAAGMfAABgUSEAAQAAAGQfAABkUSEAAQAAAGUfAABoUSEAAQAAAGYfAABsUSEAAQAAAGcfAABwUSEAAQAAAGgfAAB0USEAAQAAAGkfAAB4USEAAQAAAGofAAB8USEAAQAAAGsfAACAUSEAAQAAAGwfAACEUSEAAQAAAG0fAACIUSEAAQAAAG4fAACMUSEAAQAAAG8fAACQUSEAAQAAAHAfAACUUSEAAQAAAHEfAACYUSEAAQAAAHIfAACcUSEAAQAAAHMfAACgUSEAAQAAAHQfAACkUSEAAQAAAHUfAACoUSEAAQAAAHYfAACsUSEAAQAAAHcfAACwUSEAAQAAAHgfAAC0USEAAQAAAHkfAAC4USEAAQAAAHofAAC8USEAAQAAAHsfAADAUSEAAQAAAHwfAADEUSEAAQAAAH0fAADIUSEAAQAAAIAfAADMUSEAAQAAAIEfAADQUSEAAQAAAIIfAADUUSEAAQAAAIMfAADYUSEAAQAAAIQfAADcUSEAAQAAAIUfAADgUSEAAQAAAIYfAADkUSEAAQAAAIcfAADoUSEAAQAAAIgfAADsUSEAAQAAAIkfAADwUSEAAQAAAIofAAD0USEAAQAAAIsfAAD4USEAAQAAAIwfAAD8USEAAQAAAI0fAAAAUiEAAQAAAI4fAAAEUiEAAQAAAI8fAAAIUiEAAQAAAJAfAAAMUiEAAQAAAJEfAAAQUiEAAQAAAJIfAAAUUiEAAQAAAJMfAAAYUiEAAQAAAJQfAAAcUiEAAQAAAJUfAAAgUiEAAQAAAJYfAAAkUiEAAQAAAJcfAAAoUiEAAQAAAJgfAAAsUiEAAQAAAJkfAAAwUiEAAQAAAJofAAA0UiEAAQAAAJsfAAA4UiEAAQAAAJwfAAA8UiEAAQAAAJ0fAABAUiEAAQAAAJ4fAABEUiEAAQAAAJ8fAABIUiEAAQAAAKAfAABMUiEAAQAAAKEfAABQUiEAAQAAAKIfAABUUiEAAQAAAKMfAABYUiEAAQAAAKQfAABcUiEAAQAAAKUfAABgUiEAAQAAAKYfAABkUiEAAQAAAKcfAABoUiEAAQAAAKgfAABsUiEAAQAAAKkfAABwUiEAAQAAAKofAAB0UiEAAQAAAKsfAAB4UiEAAQAAAKwfAAB8UiEAAQAAAK0fAACAUiEAAQAAAK4fAACEUiEAAQAAAK8fAACIUiEAAQAAALAfAACMUiEAAQAAALEfAACQUiEAAQAAALMfAACUUiEAAQAAALgfAACYUiEAAQAAALkfAACcUiEAAQAAALofAACgUiEAAQAAALsfAACkUiEAAQAAALwfAACoUiEAAQAAAL4fAACsUiEAAwAAAMMfAAC4UiEAAQAAAMgfAAC8UiEAAQAAAMkfAADAUiEAAQAAAMofAADEUiEAAQAAAMsfAADIUiEAAQAAAMwfAADMUiEAAQAAANAfAADQUiEAAQAAANEfAADUUiEAAQAAANMfAADYUiEAAQAAANgfAADcUiEAAQAAANkfAADgUiEAAQAAANofAADkUiEAAQAAANsfAADoUiEAAQAAAOAfAADsUiEAAQAAAOEfAADwUiEAAQAAAOMfAAD0UiEAAQAAAOUfAAD4UiEAAQAAAOgfAAD8UiEAAQAAAOkfAAAAUyEAAQAAAOofAAAEUyEAAQAAAOsfAAAIUyEAAQAAAOwfAAAMUyEAAQAAAPMfAAAQUyEAAQAAAPgfAAAUUyEAAQAAAPkfAAAYUyEAAQAAAPofAAAcUyEAAQAAAPsfAAAgUyEAAQAAAPwfAAAkUyEAAQAAACYhAAAoUyEAAgAAACohAAAwUyEAAgAAACshAAA4UyEAAgAAADIhAABAUyEAAQAAAE4hAABEUyEAAQAAAGAhAABIUyEAAQAAAGEhAABMUyEAAQAAAGIhAABQUyEAAQAAAGMhAABUUyEAAQAAAGQhAABYUyEAAQAAAGUhAABcUyEAAQAAAGYhAABgUyEAAQAAAGchAABkUyEAAQAAAGghAABoUyEAAQAAAGkhAABsUyEAAQAAAGohAABwUyEAAQAAAGshAAB0UyEAAQAAAGwhAAB4UyEAAQAAAG0hAAB8UyEAAQAAAG4hAACAUyEAAQAAAG8hAACEUyEAAQAAAHAhAACIUyEAAQAAAHEhAACMUyEAAQAAAHIhAACQUyEAAQAAAHMhAACUUyEAAQAAAHQhAACYUyEAAQAAAHUhAACcUyEAAQAAAHYhAACgUyEAAQAAAHchAACkUyEAAQAAAHghAACoUyEAAQAAAHkhAACsUyEAAQAAAHohAACwUyEAAQAAAHshAAC0UyEAAQAAAHwhAAC4UyEAAQAAAH0hAAC8UyEAAQAAAH4hAADAUyEAAQAAAH8hAADEUyEAAQAAAIMhAADIUyEAAQAAAIQhAADMUyEAAQAAALYkAADQUyEAAQAAALckAADUUyEAAQAAALgkAADYUyEAAQAAALkkAADcUyEAAQAAALokAADgUyEAAQAAALskAADkUyEAAQAAALwkAADoUyEAAQAAAL0kAADsUyEAAQAAAL4kAADwUyEAAQAAAL8kAAD0UyEAAQAAAMAkAAD4UyEAAQAAAMEkAAD8UyEAAQAAAMIkAAAAVCEAAQAAAMMkAAAEVCEAAQAAAMQkAAAIVCEAAQAAAMUkAAAMVCEAAQAAAMYkAAAQVCEAAQAAAMckAAAUVCEAAQAAAMgkAAAYVCEAAQAAAMkkAAAcVCEAAQAAAMokAAAgVCEAAQAAAMskAAAkVCEAAQAAAMwkAAAoVCEAAQAAAM0kAAAsVCEAAQAAAM4kAAAwVCEAAQAAAM8kAAA0VCEAAQAAANAkAAA4VCEAAQAAANEkAAA8VCEAAQAAANIkAABAVCEAAQAAANMkAABEVCEAAQAAANQkAABIVCEAAQAAANUkAABMVCEAAQAAANYkAABQVCEAAQAAANckAABUVCEAAQAAANgkAABYVCEAAQAAANkkAABcVCEAAQAAANokAABgVCEAAQAAANskAABkVCEAAQAAANwkAABoVCEAAQAAAN0kAABsVCEAAQAAAN4kAABwVCEAAQAAAN8kAAB0VCEAAQAAAOAkAAB4VCEAAQAAAOEkAAB8VCEAAQAAAOIkAACAVCEAAQAAAOMkAACEVCEAAQAAAOQkAACIVCEAAQAAAOUkAACMVCEAAQAAAOYkAACQVCEAAQAAAOckAACUVCEAAQAAAOgkAACYVCEAAQAAAOkkAACcVCEAAQAAAAAsAACgVCEAAQAAAAEsAACkVCEAAQAAAAIsAACoVCEAAQAAAAMsAACsVCEAAQAAAAQsAACwVCEAAQAAAAUsAAC0VCEAAQAAAAYsAAC4VCEAAQAAAAcsAAC8VCEAAQAAAAgsAADAVCEAAQAAAAksAADEVCEAAQAAAAosAADIVCEAAQAAAAssAADMVCEAAQAAAAwsAADQVCEAAQAAAA0sAADUVCEAAQAAAA4sAADYVCEAAQAAAA8sAADcVCEAAQAAABAsAADgVCEAAQAAABEsAADkVCEAAQAAABIsAADoVCEAAQAAABMsAADsVCEAAQAAABQsAADwVCEAAQAAABUsAAD0VCEAAQAAABYsAAD4VCEAAQAAABcsAAD8VCEAAQAAABgsAAAAVSEAAQAAABksAAAEVSEAAQAAABosAAAIVSEAAQAAABssAAAMVSEAAQAAABwsAAAQVSEAAQAAAB0sAAAUVSEAAQAAAB4sAAAYVSEAAQAAAB8sAAAcVSEAAQAAACAsAAAgVSEAAQAAACEsAAAkVSEAAQAAACIsAAAoVSEAAQAAACMsAAAsVSEAAQAAACQsAAAwVSEAAQAAACUsAAA0VSEAAQAAACYsAAA4VSEAAQAAACcsAAA8VSEAAQAAACgsAABAVSEAAQAAACksAABEVSEAAQAAACosAABIVSEAAQAAACssAABMVSEAAQAAACwsAABQVSEAAQAAAC0sAABUVSEAAQAAAC4sAABYVSEAAQAAAC8sAABcVSEAAQAAADAsAABgVSEAAQAAADEsAABkVSEAAQAAADIsAABoVSEAAQAAADMsAABsVSEAAQAAADQsAABwVSEAAQAAADUsAAB0VSEAAQAAADYsAAB4VSEAAQAAADcsAAB8VSEAAQAAADgsAACAVSEAAQAAADksAACEVSEAAQAAADosAACIVSEAAQAAADssAACMVSEAAQAAADwsAACQVSEAAQAAAD0sAACUVSEAAQAAAD4sAACYVSEAAQAAAD8sAACcVSEAAQAAAEAsAACgVSEAAQAAAEEsAACkVSEAAQAAAEIsAACoVSEAAQAAAEMsAACsVSEAAQAAAEQsAACwVSEAAQAAAEUsAAC0VSEAAQAAAEYsAAC4VSEAAQAAAEcsAAC8VSEAAQAAAEgsAADAVSEAAQAAAEksAADEVSEAAQAAAEosAADIVSEAAQAAAEssAADMVSEAAQAAAEwsAADQVSEAAQAAAE0sAADUVSEAAQAAAE4sAADYVSEAAQAAAE8sAADcVSEAAQAAAFAsAADgVSEAAQAAAFEsAADkVSEAAQAAAFIsAADoVSEAAQAAAFMsAADsVSEAAQAAAFQsAADwVSEAAQAAAFUsAAD0VSEAAQAAAFYsAAD4VSEAAQAAAFcsAAD8VSEAAQAAAFgsAAAAViEAAQAAAFksAAAEViEAAQAAAFosAAAIViEAAQAAAFssAAAMViEAAQAAAFwsAAAQViEAAQAAAF0sAAAUViEAAQAAAF4sAAAYViEAAQAAAF8sAAAcViEAAQAAAGAsAAAgViEAAQAAAGEsAAAkViEAAQAAAGIsAAAoViEAAQAAAGMsAAAsViEAAQAAAGQsAAAwViEAAQAAAGUsAAA0ViEAAQAAAGYsAAA4ViEAAQAAAGcsAAA8ViEAAQAAAGgsAABAViEAAQAAAGksAABEViEAAQAAAGosAABIViEAAQAAAGssAABMViEAAQAAAGwsAABQViEAAQAAAG0sAABUViEAAQAAAG4sAABYViEAAQAAAG8sAABcViEAAQAAAHAsAABgViEAAQAAAHIsAABkViEAAQAAAHMsAABoViEAAQAAAHUsAABsViEAAQAAAHYsAABwViEAAQAAAH4sAAB0ViEAAQAAAH8sAAB4ViEAAQAAAIAsAAB8ViEAAQAAAIEsAACAViEAAQAAAIIsAACEViEAAQAAAIMsAACIViEAAQAAAIQsAACMViEAAQAAAIUsAACQViEAAQAAAIYsAACUViEAAQAAAIcsAACYViEAAQAAAIgsAACcViEAAQAAAIksAACgViEAAQAAAIosAACkViEAAQAAAIssAACoViEAAQAAAIwsAACsViEAAQAAAI0sAACwViEAAQAAAI4sAAC0ViEAAQAAAI8sAAC4ViEAAQAAAJAsAAC8ViEAAQAAAJEsAADAViEAAQAAAJIsAADEViEAAQAAAJMsAADIViEAAQAAAJQsAADMViEAAQAAAJUsAADQViEAAQAAAJYsAADUViEAAQAAAJcsAADYViEAAQAAAJgsAADcViEAAQAAAJksAADgViEAAQAAAJosAADkViEAAQAAAJssAADoViEAAQAAAJwsAADsViEAAQAAAJ0sAADwViEAAQAAAJ4sAAD0ViEAAQAAAJ8sAAD4ViEAAQAAAKAsAAD8ViEAAQAAAKEsAAAAVyEAAQAAAKIsAAAEVyEAAQAAAKMsAAAIVyEAAQAAAKQsAAAMVyEAAQAAAKUsAAAQVyEAAQAAAKYsAAAUVyEAAQAAAKcsAAAYVyEAAQAAAKgsAAAcVyEAAQAAAKksAAAgVyEAAQAAAKosAAAkVyEAAQAAAKssAAAoVyEAAQAAAKwsAAAsVyEAAQAAAK0sAAAwVyEAAQAAAK4sAAA0VyEAAQAAAK8sAAA4VyEAAQAAALAsAAA8VyEAAQAAALEsAABAVyEAAQAAALIsAABEVyEAAQAAALMsAABIVyEAAQAAALQsAABMVyEAAQAAALUsAABQVyEAAQAAALYsAABUVyEAAQAAALcsAABYVyEAAQAAALgsAABcVyEAAQAAALksAABgVyEAAQAAALosAABkVyEAAQAAALssAABoVyEAAQAAALwsAABsVyEAAQAAAL0sAABwVyEAAQAAAL4sAAB0VyEAAQAAAL8sAAB4VyEAAQAAAMAsAAB8VyEAAQAAAMEsAACAVyEAAQAAAMIsAACEVyEAAQAAAMMsAACIVyEAAQAAAMQsAACMVyEAAQAAAMUsAACQVyEAAQAAAMYsAACUVyEAAQAAAMcsAACYVyEAAQAAAMgsAACcVyEAAQAAAMksAACgVyEAAQAAAMosAACkVyEAAQAAAMssAACoVyEAAQAAAMwsAACsVyEAAQAAAM0sAACwVyEAAQAAAM4sAAC0VyEAAQAAAM8sAAC4VyEAAQAAANAsAAC8VyEAAQAAANEsAADAVyEAAQAAANIsAADEVyEAAQAAANMsAADIVyEAAQAAANQsAADMVyEAAQAAANUsAADQVyEAAQAAANYsAADUVyEAAQAAANcsAADYVyEAAQAAANgsAADcVyEAAQAAANksAADgVyEAAQAAANosAADkVyEAAQAAANssAADoVyEAAQAAANwsAADsVyEAAQAAAN0sAADwVyEAAQAAAN4sAAD0VyEAAQAAAN8sAAD4VyEAAQAAAOAsAAD8VyEAAQAAAOEsAAAAWCEAAQAAAOIsAAAEWCEAAQAAAOMsAAAIWCEAAQAAAOssAAAMWCEAAQAAAOwsAAAQWCEAAQAAAO0sAAAUWCEAAQAAAO4sAAAYWCEAAQAAAPIsAAAcWCEAAQAAAPMsAAAgWCEAAQAAAAAtAAAkWCEAAQAAAAEtAAAoWCEAAQAAAAItAAAsWCEAAQAAAAMtAAAwWCEAAQAAAAQtAAA0WCEAAQAAAAUtAAA4WCEAAQAAAAYtAAA8WCEAAQAAAActAABAWCEAAQAAAAgtAABEWCEAAQAAAAktAABIWCEAAQAAAAotAABMWCEAAQAAAAstAABQWCEAAQAAAAwtAABUWCEAAQAAAA0tAABYWCEAAQAAAA4tAABcWCEAAQAAAA8tAABgWCEAAQAAABAtAABkWCEAAQAAABEtAABoWCEAAQAAABItAABsWCEAAQAAABMtAABwWCEAAQAAABQtAAB0WCEAAQAAABUtAAB4WCEAAQAAABYtAAB8WCEAAQAAABctAACAWCEAAQAAABgtAACEWCEAAQAAABktAACIWCEAAQAAABotAACMWCEAAQAAABstAACQWCEAAQAAABwtAACUWCEAAQAAAB0tAACYWCEAAQAAAB4tAACcWCEAAQAAAB8tAACgWCEAAQAAACAtAACkWCEAAQAAACEtAACoWCEAAQAAACItAACsWCEAAQAAACMtAACwWCEAAQAAACQtAAC0WCEAAQAAACUtAAC4WCEAAQAAACctAAC8WCEAAQAAAC0tAADAWCEAAQAAAECmAADEWCEAAQAAAEGmAADIWCEAAQAAAEKmAADMWCEAAQAAAEOmAADQWCEAAQAAAESmAADUWCEAAQAAAEWmAADYWCEAAQAAAEamAADcWCEAAQAAAEemAADgWCEAAQAAAEimAADkWCEAAQAAAEmmAADoWCEAAQAAAEqmAADsWCEAAgAAAEumAAD0WCEAAgAAAEymAAD8WCEAAQAAAE2mAAAAWSEAAQAAAE6mAAAEWSEAAQAAAE+mAAAIWSEAAQAAAFCmAAAMWSEAAQAAAFGmAAAQWSEAAQAAAFKmAAAUWSEAAQAAAFOmAAAYWSEAAQAAAFSmAAAcWSEAAQAAAFWmAAAgWSEAAQAAAFamAAAkWSEAAQAAAFemAAAoWSEAAQAAAFimAAAsWSEAAQAAAFmmAAAwWSEAAQAAAFqmAAA0WSEAAQAAAFumAAA4WSEAAQAAAFymAAA8WSEAAQAAAF2mAABAWSEAAQAAAF6mAABEWSEAAQAAAF+mAABIWSEAAQAAAGCmAABMWSEAAQAAAGGmAABQWSEAAQAAAGKmAABUWSEAAQAAAGOmAABYWSEAAQAAAGSmAABcWSEAAQAAAGWmAABgWSEAAQAAAGamAABkWSEAAQAAAGemAABoWSEAAQAAAGimAABsWSEAAQAAAGmmAABwWSEAAQAAAGqmAAB0WSEAAQAAAGumAAB4WSEAAQAAAGymAAB8WSEAAQAAAG2mAACAWSEAAQAAAICmAACEWSEAAQAAAIGmAACIWSEAAQAAAIKmAACMWSEAAQAAAIOmAACQWSEAAQAAAISmAACUWSEAAQAAAIWmAACYWSEAAQAAAIamAACcWSEAAQAAAIemAACgWSEAAQAAAIimAACkWSEAAQAAAImmAACoWSEAAQAAAIqmAACsWSEAAQAAAIumAACwWSEAAQAAAIymAAC0WSEAAQAAAI2mAAC4WSEAAQAAAI6mAAC8WSEAAQAAAI+mAADAWSEAAQAAAJCmAADEWSEAAQAAAJGmAADIWSEAAQAAAJKmAADMWSEAAQAAAJOmAADQWSEAAQAAAJSmAADUWSEAAQAAAJWmAADYWSEAAQAAAJamAADcWSEAAQAAAJemAADgWSEAAQAAAJimAADkWSEAAQAAAJmmAADoWSEAAQAAAJqmAADsWSEAAQAAAJumAADwWSEAAQAAACKnAAD0WSEAAQAAACOnAAD4WSEAAQAAACSnAAD8WSEAAQAAACWnAAAAWiEAAQAAACanAAAEWiEAAQAAACenAAAIWiEAAQAAACinAAAMWiEAAQAAACmnAAAQWiEAAQAAACqnAAAUWiEAAQAAACunAAAYWiEAAQAAACynAAAcWiEAAQAAAC2nAAAgWiEAAQAAAC6nAAAkWiEAAQAAAC+nAAAoWiEAAQAAADKnAAAsWiEAAQAAADOnAAAwWiEAAQAAADSnAAA0WiEAAQAAADWnAAA4WiEAAQAAADanAAA8WiEAAQAAADenAABAWiEAAQAAADinAABEWiEAAQAAADmnAABIWiEAAQAAADqnAABMWiEAAQAAADunAABQWiEAAQAAADynAABUWiEAAQAAAD2nAABYWiEAAQAAAD6nAABcWiEAAQAAAD+nAABgWiEAAQAAAECnAABkWiEAAQAAAEGnAABoWiEAAQAAAEKnAABsWiEAAQAAAEOnAABwWiEAAQAAAESnAAB0WiEAAQAAAEWnAAB4WiEAAQAAAEanAAB8WiEAAQAAAEenAACAWiEAAQAAAEinAACEWiEAAQAAAEmnAACIWiEAAQAAAEqnAACMWiEAAQAAAEunAACQWiEAAQAAAEynAACUWiEAAQAAAE2nAACYWiEAAQAAAE6nAACcWiEAAQAAAE+nAACgWiEAAQAAAFCnAACkWiEAAQAAAFGnAACoWiEAAQAAAFKnAACsWiEAAQAAAFOnAACwWiEAAQAAAFSnAAC0WiEAAQAAAFWnAAC4WiEAAQAAAFanAAC8WiEAAQAAAFenAADAWiEAAQAAAFinAADEWiEAAQAAAFmnAADIWiEAAQAAAFqnAADMWiEAAQAAAFunAADQWiEAAQAAAFynAADUWiEAAQAAAF2nAADYWiEAAQAAAF6nAADcWiEAAQAAAF+nAADgWiEAAQAAAGCnAADkWiEAAQAAAGGnAADoWiEAAQAAAGKnAADsWiEAAQAAAGOnAADwWiEAAQAAAGSnAAD0WiEAAQAAAGWnAAD4WiEAAQAAAGanAAD8WiEAAQAAAGenAAAAWyEAAQAAAGinAAAEWyEAAQAAAGmnAAAIWyEAAQAAAGqnAAAMWyEAAQAAAGunAAAQWyEAAQAAAGynAAAUWyEAAQAAAG2nAAAYWyEAAQAAAG6nAAAcWyEAAQAAAG+nAAAgWyEAAQAAAHmnAAAkWyEAAQAAAHqnAAAoWyEAAQAAAHunAAAsWyEAAQAAAHynAAAwWyEAAQAAAH2nAAA0WyEAAQAAAH6nAAA4WyEAAQAAAH+nAAA8WyEAAQAAAICnAABAWyEAAQAAAIGnAABEWyEAAQAAAIKnAABIWyEAAQAAAIOnAABMWyEAAQAAAISnAABQWyEAAQAAAIWnAABUWyEAAQAAAIanAABYWyEAAQAAAIenAABcWyEAAQAAAIunAABgWyEAAQAAAIynAABkWyEAAQAAAI2nAABoWyEAAQAAAJCnAABsWyEAAQAAAJGnAABwWyEAAQAAAJKnAAB0WyEAAQAAAJOnAAB4WyEAAQAAAJSnAAB8WyEAAQAAAJanAACAWyEAAQAAAJenAACEWyEAAQAAAJinAACIWyEAAQAAAJmnAACMWyEAAQAAAJqnAACQWyEAAQAAAJunAACUWyEAAQAAAJynAACYWyEAAQAAAJ2nAACcWyEAAQAAAJ6nAACgWyEAAQAAAJ+nAACkWyEAAQAAAKCnAACoWyEAAQAAAKGnAACsWyEAAQAAAKKnAACwWyEAAQAAAKOnAAC0WyEAAQAAAKSnAAC4WyEAAQAAAKWnAAC8WyEAAQAAAKanAADAWyEAAQAAAKenAADEWyEAAQAAAKinAADIWyEAAQAAAKmnAADMWyEAAQAAAKqnAADQWyEAAQAAAKunAADUWyEAAQAAAKynAADYWyEAAQAAAK2nAADcWyEAAQAAAK6nAADgWyEAAQAAALCnAADkWyEAAQAAALGnAADoWyEAAQAAALKnAADsWyEAAQAAALOnAADwWyEAAQAAALSnAAD0WyEAAQAAALWnAAD4WyEAAQAAALanAAD8WyEAAQAAALenAAAAXCEAAQAAALinAAAEXCEAAQAAALmnAAAIXCEAAQAAALqnAAAMXCEAAQAAALunAAAQXCEAAQAAALynAAAUXCEAAQAAAL2nAAAYXCEAAQAAAL6nAAAcXCEAAQAAAL+nAAAgXCEAAQAAAMCnAAAkXCEAAQAAAMGnAAAoXCEAAQAAAMKnAAAsXCEAAQAAAMOnAAAw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XiEAAQAAAFX/AACMXiEAAQAAAFb/AACQXiEAAQAAAFf/AACUXiEAAQAAAFj/AACYXiEAAQAAAFn/AACcXiEAAQAAAFr/AACgXiEAAQAAAAAEAQCkXiEAAQAAAAEEAQCoXiEAAQAAAAIEAQCsXiEAAQAAAAMEAQCwXiEAAQAAAAQEAQC0XiEAAQAAAAUEAQC4XiEAAQAAAAYEAQC8XiEAAQAAAAcEAQDAXiEAAQAAAAgEAQDEXiEAAQAAAAkEAQDIXiEAAQAAAAoEAQDMXiEAAQAAAAsEAQDQXiEAAQAAAAwEAQDUXiEAAQAAAA0EAQDYXiEAAQAAAA4EAQDcXiEAAQAAAA8EAQDgXiEAAQAAABAEAQDkXiEAAQAAABEEAQDoXiEAAQAAABIEAQDsXiEAAQAAABMEAQDwXiEAAQAAABQEAQD0XiEAAQAAABUEAQD4XiEAAQAAABYEAQD8XiEAAQAAABcEAQAAXyEAAQAAABgEAQAEXyEAAQAAABkEAQAIXyEAAQAAABoEAQAMXyEAAQAAABsEAQAQXyEAAQAAABwEAQAUXyEAAQAAAB0EAQAYXyEAAQAAAB4EAQAcXyEAAQAAAB8EAQAgXyEAAQAAACAEAQAkXyEAAQAAACEEAQAoXyEAAQAAACIEAQAsXyEAAQAAACMEAQAwXyEAAQAAACQEAQA0XyEAAQAAACUEAQA4XyEAAQAAACYEAQA8XyEAAQAAACcEAQBAXyEAAQAAACgEAQBEXyEAAQAAACkEAQBIXyEAAQAAACoEAQBMXyEAAQAAACsEAQBQXyEAAQAAACwEAQBUXyEAAQAAAC0EAQBYXyEAAQAAAC4EAQBcXyEAAQAAAC8EAQBgXyEAAQAAADAEAQBkXyEAAQAAADEEAQBoXyEAAQAAADIEAQBsXyEAAQAAADMEAQBwXyEAAQAAADQEAQB0XyEAAQAAADUEAQB4XyEAAQAAADYEAQB8XyEAAQAAADcEAQCAXyEAAQAAADgEAQCEXyEAAQAAADkEAQCIXyEAAQAAADoEAQCMXyEAAQAAADsEAQCQXyEAAQAAADwEAQCUXyEAAQAAAD0EAQCYXyEAAQAAAD4EAQCcXyEAAQAAAD8EAQCgXyEAAQAAAEAEAQCkXyEAAQAAAEEEAQCoXyEAAQAAAEIEAQCsXyEAAQAAAEMEAQCwXyEAAQAAAEQEAQC0XyEAAQAAAEUEAQC4XyEAAQAAAEYEAQC8XyEAAQAAAEcEAQDAXyEAAQAAAEgEAQDEXyEAAQAAAEkEAQDIXyEAAQAAAEoEAQDMXyEAAQAAAEsEAQDQXyEAAQAAAEwEAQDUXyEAAQAAAE0EAQDYXyEAAQAAAE4EAQDcXyEAAQAAAE8EAQDgXyEAAQAAALAEAQDkXyEAAQAAALEEAQDoXyEAAQAAALIEAQDsXyEAAQAAALMEAQDwXyEAAQAAALQEAQD0XyEAAQAAALUEAQD4XyEAAQAAALYEAQD8XyEAAQAAALcEAQAAYCEAAQAAALgEAQAEYCEAAQAAALkEAQAIYCEAAQAAALoEAQAMYCEAAQAAALsEAQAQYCEAAQAAALwEAQAUYCEAAQAAAL0EAQAYYCEAAQAAAL4EAQAcYCEAAQAAAL8EAQAgYCEAAQAAAMAEAQAkYCEAAQAAAMEEAQAoYCEAAQAAAMIEAQAsYCEAAQAAAMMEAQAwYCEAAQAAAMQEAQA0YCEAAQAAAMUEAQA4YCEAAQAAAMYEAQA8YCEAAQAAAMcEAQBAYCEAAQAAAMgEAQBEYCEAAQAAAMkEAQBIYCEAAQAAAMoEAQBMYCEAAQAAAMsEAQBQYCEAAQAAAMwEAQBUYCEAAQAAAM0EAQBYYCEAAQAAAM4EAQBcYCEAAQAAAM8EAQBgYCEAAQAAANAEAQBkYCEAAQAAANEEAQBoYCEAAQAAANIEAQBsYCEAAQAAANMEAQBwYCEAAQAAANgEAQB0YCEAAQAAANkEAQB4YCEAAQAAANoEAQB8YCEAAQAAANsEAQCAYCEAAQAAANwEAQCEYCEAAQAAAN0EAQCIYCEAAQAAAN4EAQCMYCEAAQAAAN8EAQCQYCEAAQAAAOAEAQCUYCEAAQAAAOEEAQCYYCEAAQAAAOIEAQCcYCEAAQAAAOMEAQCgYCEAAQAAAOQEAQCkYCEAAQAAAOUEAQCoYCEAAQAAAOYEAQCsYCEAAQAAAOcEAQCwYCEAAQAAAOgEAQC0YCEAAQAAAOkEAQC4YCEAAQAAAOoEAQC8YCEAAQAAAOsEAQDAYCEAAQAAAOwEAQDEYCEAAQAAAO0EAQDIYCEAAQAAAO4EAQDMYCEAAQAAAO8EAQDQYCEAAQAAAPAEAQDUYCEAAQAAAPEEAQDYYCEAAQAAAPIEAQDcYCEAAQAAAPMEAQDgYCEAAQAAAPQEAQDkYCEAAQAAAPUEAQDoYCEAAQAAAPYEAQDsYCEAAQAAAPcEAQDwYCEAAQAAAPgEAQD0YCEAAQAAAPkEAQD4YCEAAQAAAPoEAQD8YCEAAQAAAPsEAQAAYSEAAQAAAHAFAQAEYSEAAQAAAHEFAQAIYSEAAQAAAHIFAQAMYSEAAQAAAHMFAQAQYSEAAQAAAHQFAQAUYSEAAQAAAHUFAQAYYSEAAQAAAHYFAQAcYSEAAQAAAHcFAQAgYSEAAQAAAHgFAQAkYSEAAQAAAHkFAQAoYSEAAQAAAHoFAQAsYSEAAQAAAHwFAQAwYSEAAQAAAH0FAQA0YSEAAQAAAH4FAQA4YSEAAQAAAH8FAQA8YSEAAQAAAIAFAQBAYSEAAQAAAIEFAQBEYSEAAQAAAIIFAQBIYSEAAQAAAIMFAQBMYSEAAQAAAIQFAQBQYSEAAQAAAIUFAQBUYSEAAQAAAIYFAQBYYSEAAQAAAIcFAQBcYSEAAQAAAIgFAQBgYSEAAQAAAIkFAQBkYSEAAQAAAIoFAQBoYSEAAQAAAIwFAQBsYSEAAQAAAI0FAQBwYSEAAQAAAI4FAQB0YSEAAQAAAI8FAQB4YSEAAQAAAJAFAQB8YSEAAQAAAJEFAQCAYSEAAQAAAJIFAQCEYSEAAQAAAJQFAQCIYSEAAQAAAJUFAQCMYSEAAQAAAJcFAQCQYSEAAQAAAJgFAQCUYSEAAQAAAJkFAQCYYSEAAQAAAJoFAQCcYSEAAQAAAJsFAQCgYSEAAQAAAJwFAQCkYSEAAQAAAJ0FAQCoYSEAAQAAAJ4FAQCsYSEAAQAAAJ8FAQCwYSEAAQAAAKAFAQC0YSEAAQAAAKEFAQC4YSEAAQAAAKMFAQC8YSEAAQAAAKQFAQDAYSEAAQAAAKUFAQDEYSEAAQAAAKYFAQDIYSEAAQAAAKcFAQDMYSEAAQAAAKgFAQDQYSEAAQAAAKkFAQDUYSEAAQAAAKoFAQDYYSEAAQAAAKsFAQDcYSEAAQAAAKwFAQDgYSEAAQAAAK0FAQDkYSEAAQAAAK4FAQDoYSEAAQAAAK8FAQDsYSEAAQAAALAFAQDwYSEAAQAAALEFAQD0YSEAAQAAALMFAQD4YSEAAQAAALQFAQD8YSEAAQAAALUFAQAAYiEAAQAAALYFAQAEYiEAAQAAALcFAQAIYiEAAQAAALgFAQAMYiEAAQAAALkFAQAQYiEAAQAAALsFAQAUYiEAAQAAALwFAQAYYiEAAQAAAIAMAQAcYiEAAQAAAIEMAQAgYiEAAQAAAIIMAQAkYiEAAQAAAIMMAQAoYiEAAQAAAIQMAQAsYiEAAQAAAIUMAQAwYiEAAQAAAIYMAQA0YiEAAQAAAIcMAQA4YiEAAQAAAIgMAQA8YiEAAQAAAIkMAQBAYiEAAQAAAIoMAQBEYiEAAQAAAIsMAQBIYiEAAQAAAIwMAQBMYiEAAQAAAI0MAQBQYiEAAQAAAI4MAQBUYiEAAQAAAI8MAQBYYiEAAQAAAJAMAQBcYiEAAQAAAJEMAQBgYiEAAQAAAJIMAQBkYiEAAQAAAJMMAQBoYiEAAQAAAJQMAQBsYiEAAQAAAJUMAQBwYiEAAQAAAJYMAQB0YiEAAQAAAJcMAQB4YiEAAQAAAJgMAQB8YiEAAQAAAJkMAQCAYiEAAQAAAJoMAQCEYiEAAQAAAJsMAQCIYiEAAQAAAJwMAQCMYiEAAQAAAJ0MAQCQYiEAAQAAAJ4MAQCUYiEAAQAAAJ8MAQCYYiEAAQAAAKAMAQCcYiEAAQAAAKEMAQCgYiEAAQAAAKIMAQCkYiEAAQAAAKMMAQCoYiEAAQAAAKQMAQCsYiEAAQAAAKUMAQCwYiEAAQAAAKYMAQC0YiEAAQAAAKcMAQC4YiEAAQAAAKgMAQC8YiEAAQAAAKkMAQDAYiEAAQAAAKoMAQDEYiEAAQAAAKsMAQDIYiEAAQAAAKwMAQDMYiEAAQAAAK0MAQDQYiEAAQAAAK4MAQDUYiEAAQAAAK8MAQDYYiEAAQAAALAMAQDcYiEAAQAAALEMAQDgYiEAAQAAALIMAQDkYiEAAQAAAMAMAQDoYiEAAQAAAMEMAQDsYiEAAQAAAMIMAQDwYiEAAQAAAMMMAQD0YiEAAQAAAMQMAQD4YiEAAQAAAMUMAQD8YiEAAQAAAMYMAQAAYyEAAQAAAMcMAQAEYyEAAQAAAMgMAQAIYyEAAQAAAMkMAQAMYyEAAQAAAMoMAQAQYyEAAQAAAMsMAQAUYyEAAQAAAMwMAQAYYyEAAQAAAM0MAQAcYyEAAQAAAM4MAQAgYyEAAQAAAM8MAQAkYyEAAQAAANAMAQAoYyEAAQAAANEMAQAsYyEAAQAAANIMAQAwYyEAAQAAANMMAQA0YyEAAQAAANQMAQA4YyEAAQAAANUMAQA8YyEAAQAAANYMAQBAYyEAAQAAANcMAQBEYyEAAQAAANgMAQBIYyEAAQAAANkMAQBMYyEAAQAAANoMAQBQYyEAAQAAANsMAQBUYyEAAQAAANwMAQBYYyEAAQAAAN0MAQBcYyEAAQAAAN4MAQBgYyEAAQAAAN8MAQBkYyEAAQAAAOAMAQBoYyEAAQAAAOEMAQBsYyEAAQAAAOIMAQBwYyEAAQAAAOMMAQB0YyEAAQAAAOQMAQB4YyEAAQAAAOUMAQB8YyEAAQAAAOYMAQCAYyEAAQAAAOcMAQCEYyEAAQAAAOgMAQCIYyEAAQAAAOkMAQCMYyEAAQAAAOoMAQCQYyEAAQAAAOsMAQCUYyEAAQAAAOwMAQCYYyEAAQAAAO0MAQCcYyEAAQAAAO4MAQCgYyEAAQAAAO8MAQCkYyEAAQAAAPAMAQCoYyEAAQAAAPEMAQCsYyEAAQAAAPIMAQCwYyEAAQAAAFANAQC0YyEAAQAAAFENAQC4YyEAAQAAAFINAQC8YyEAAQAAAFMNAQDAYyEAAQAAAFQNAQDEYyEAAQAAAFUNAQDIYyEAAQAAAFYNAQDMYyEAAQAAAFcNAQDQYyEAAQAAAFgNAQDUYyEAAQAAAFkNAQDYYyEAAQAAAFoNAQDcYyEAAQAAAFsNAQDgYyEAAQAAAFwNAQDkYyEAAQAAAF0NAQDoYyEAAQAAAF4NAQDsYyEAAQAAAF8NAQDwYyEAAQAAAGANAQD0YyEAAQAAAGENAQD4YyEAAQAAAGINAQD8YyEAAQAAAGMNAQAAZCEAAQAAAGQNAQAEZCEAAQAAAGUNAQAIZCEAAQAAAHANAQAMZCEAAQAAAHENAQAQZCEAAQAAAHINAQAUZCEAAQAAAHMNAQAYZCEAAQAAAHQNAQAcZCEAAQAAAHUNAQAgZCEAAQAAAHYNAQAkZCEAAQAAAHcNAQAoZCEAAQAAAHgNAQAsZCEAAQAAAHkNAQAwZCEAAQAAAHoNAQA0ZCEAAQAAAHsNAQA4ZCEAAQAAAHwNAQA8ZCEAAQAAAH0NAQBAZCEAAQAAAH4NAQBEZCEAAQAAAH8NAQBIZCEAAQAAAIANAQBMZCEAAQAAAIENAQBQZCEAAQAAAIINAQBUZCEAAQAAAIMNAQBYZCEAAQAAAIQNAQBcZCEAAQAAAIUNAQBgZCEAAQAAAKAYAQBkZCEAAQAAAKEYAQBoZCEAAQAAAKIYAQBsZCEAAQAAAKMYAQBwZCEAAQAAAKQYAQB0ZCEAAQAAAKUYAQB4ZCEAAQAAAKYYAQB8ZCEAAQAAAKcYAQCAZCEAAQAAAKgYAQCEZCEAAQAAAKkYAQCIZCEAAQAAAKoYAQCMZCEAAQAAAKsYAQCQZCEAAQAAAKwYAQCUZCEAAQAAAK0YAQCYZCEAAQAAAK4YAQCcZCEAAQAAAK8YAQCgZCEAAQAAALAYAQCkZCEAAQAAALEYAQCoZCEAAQAAALIYAQCsZCEAAQAAALMYAQCwZCEAAQAAALQYAQC0ZCEAAQAAALUYAQC4ZCEAAQAAALYYAQC8ZCEAAQAAALcYAQDAZCEAAQAAALgYAQDEZCEAAQAAALkYAQDIZCEAAQAAALoYAQDMZCEAAQAAALsYAQDQZCEAAQAAALwYAQDUZCEAAQAAAL0YAQDYZCEAAQAAAL4YAQDcZCEAAQAAAL8YAQDgZCEAAQAAAMAYAQDkZCEAAQAAAMEYAQDoZCEAAQAAAMIYAQDsZCEAAQAAAMMYAQDwZCEAAQAAAMQYAQD0ZCEAAQAAAMUYAQD4ZCEAAQAAAMYYAQD8ZCEAAQAAAMcYAQAAZSEAAQAAAMgYAQAEZSEAAQAAAMkYAQAIZSEAAQAAAMoYAQAMZSEAAQAAAMsYAQAQZSEAAQAAAMwYAQAUZSEAAQAAAM0YAQAYZSEAAQAAAM4YAQAcZSEAAQAAAM8YAQAgZSEAAQAAANAYAQAkZSEAAQAAANEYAQAoZSEAAQAAANIYAQAsZSEAAQAAANMYAQAwZSEAAQAAANQYAQA0ZSEAAQAAANUYAQA4ZSEAAQAAANYYAQA8ZSEAAQAAANcYAQBAZSEAAQAAANgYAQBEZSEAAQAAANkYAQBIZSEAAQAAANoYAQBMZSEAAQAAANsYAQBQZSEAAQAAANwYAQBUZSEAAQAAAN0YAQBYZSEAAQAAAN4YAQBcZSEAAQAAAN8YAQBgZSEAAQAAAEBuAQBkZSEAAQAAAEFuAQBoZSEAAQAAAEJuAQBsZSEAAQAAAENuAQBwZSEAAQAAAERuAQB0ZSEAAQAAAEVuAQB4ZSEAAQAAAEZuAQB8ZSEAAQAAAEduAQCAZSEAAQAAAEhuAQCEZSEAAQAAAEluAQCIZSEAAQAAAEpuAQCMZSEAAQAAAEtuAQCQ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c2NhcGUgc2VxdWVuY2UgZm91bmQgaW4gY2hhcmFjdGVyIGNsYXNzCPYhADAAAABpbnZhbGlkIGNoYXJhY3RlciBjbGFzcyByYW5nZSwgdGhlIHN0YXJ0IG11c3QgYmUgPD0gdGhlIGVuZABA9iEAOwAAAGludmFsaWQgcmFuZ2UgYm91bmRhcnksIG11c3QgYmUgYSBsaXRlcmFsAAAAhPYhACkAAAB1bmNsb3NlZCBjaGFyYWN0ZXIgY2xhc3O49iEAGAAAAGRlY2ltYWwgbGl0ZXJhbCBlbXB0eQAAANj2IQAVAAAAZGVjaW1hbCBsaXRlcmFsIGludmFsaWQA+PYhABcAAABoZXhhZGVjaW1hbCBsaXRlcmFsIGVtcHR5AAAAGPchABkAAABoZXhhZGVjaW1hbCBsaXRlcmFsIGlzIG5vdCBhIFVuaWNvZGUgc2NhbGFyIHZhbHVlAAAAPPchADEAAABpbnZhbGlkIGhleGFkZWNpbWFsIGRpZ2l0AAAAePchABkAAABpbmNvbXBsZXRlIGVzY2FwZSBzZXF1ZW5jZSwgcmVhY2hlZCBlbmQgb2YgcGF0dGVybiBwcmVtYXR1cmVseQAAnPchAD4AAAB1bnJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNl5PchABwAAABkYW5nbGluZyBmbGFnIG5lZ2F0aW9uIG9wZXJhdG9yAAj4IQAfAAAAZHVwbGljYXRlIGZsYWcAADD4IQAOAAAAZmxhZyBuZWdhdGlvbiBvcGVyYXRvciByZXBlYXRlZABI+CEAHwAAAGV4cGVjdGVkIGZsYWcgYnV0IGdvdCBlbmQgb2YgcmVnZXgAAHD4IQAiAAAAdW5yZWNvZ25pemVkIGZsYWcAAACc+CEAEQAAAGR1cGxpY2F0ZSBjYXB0dXJlIGdyb3VwIG5hbWW4+CEAHAAAAGVtcHR5IGNhcHR1cmUgZ3JvdXAgbmFtZdz4IQAYAAAAaW52YWxpZCBjYXB0dXJlIGdyb3VwIGNoYXJhY3RlcgD8+CEAHwAAAHVuY2xvc2VkIGNhcHR1cmUgZ3JvdXAgbmFtZQAk+SEAGwAAAHVuY2xvc2VkIGdyb3VwAABI+SEADgAAAHVub3BlbmVkIGdyb3VwAABg+SEADgAAAGV4Y2VlZCB0aGUgbWF4aW11bSBudW1iZXIgb2YgbmVzdGVkIHBhcmVudGhlc2VzL2JyYWNrZXRzICgAAHj5IQA6AAAAXH4nAAEAAABpbnZhbGlkIHJlcGV0aXRpb24gY291bnQgcmFuZ2UsIHRoZSBzdGFydCBtdXN0IGJlIDw9IHRoZSBlbmTE+SEAPAAAAHJlcGV0aXRpb24gcXVhbnRpZmllciBleHBlY3RzIGEgdmFsaWQgZGVjaW1hbAAAAAj6IQAtAAAAdW5jbG9zZWQgY291bnRlZCByZXBldGl0aW9uAED6IQAbAAAAcmVwZXRpdGlvbiBvcGVyYXRvciBtaXNzaW5nIGV4cHJlc3Npb24AAGT6IQAmAAAAc3BlY2lhbCB3b3JkIGJvdW5kYXJ5IGFzc2VydGlvbiBpcyBlaXRoZXIgdW5jbG9zZWQgb3IgY29udGFpbnMgYW4gaW52YWxpZCBjaGFyYWN0ZXIAlPohAFMAAAB1bnJlY29nbml6ZWQgc3BlY2lhbCB3b3JkIGJvdW5kYXJ5IGFzc2VydGlvbiwgdmFsaWQgY2hvaWNlcyBhcmU6IHN0YXJ0LCBlbmQsIHN0YXJ0LWhhbGYgb3IgZW5kLWhhbGYA8PohAGMAAABmb3VuZCBlaXRoZXIgdGhlIGJlZ2lubmluZyBvZiBhIHNwZWNpYWwgd29yZCBib3VuZGFyeSBvciBhIGJvdW5kZWQgcmVwZXRpdGlvbiBvbiBhIFxiIHdpdGggYW4gb3BlbmluZyBicmFjZSwgYnV0IG5vIGNsb3NpbmcgYnJhY2UAAABc+yEAgQAAAGludmFsaWQgVW5pY29kZSBjaGFyYWN0ZXIgY2xhc3MA6PshAB8AAABiYWNrcmVmZXJlbmNlcyBhcmUgbm90IHN1cHBvcnRlZBD8IQAgAAAAbG9vay1hcm91bmQsIGluY2x1ZGluZyBsb29rLWFoZWFkIGFuZCBsb29rLWJlaGluZCwgaXMgbm90IHN1cHBvcnRlZAA4/CEAQwAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LXN5bnRheC0wLjguNS9zcmMvYXN0L21vZC5ycwAAhPwhAGYAAAB/AgAAIgAAAIT8IQBmAAAAmAIAACIAAABhbG51bWJsYW5rZ3JhcGhwcmludHhkaWdpdAAAhPwhAGYAAADnBAAAFAAAAIT8IQBmAAAA8wQAACMAAACE/CEAZgAAAA8GAAAUAAAAhPwhAGYAAACHBgAAGwAAAIT8IQBmAAAAigYAABsAAACE/CEAZgAAAI0GAAAbAAAAhPwhAGYAAACQBgAAGwAAAIT8IQBmAAAAxAYAAB8AAACE/CEAZgAAAMsGAAAbAAAAhPwhAGYAAADMBgAAGwAAAEUEAAAMAAAABAAAAEkEAABKBAAAXAMAAAAAAAAAAAAAAQAAAKwCAAByZWdleCBwYXJzZSBlcnJvcjoKAPD9IQATAAAAZXJyb3I6IAAM/iEABwAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LXN5bnRheC0wLjguNS9zcmMvZXJyb3IucnMBAAAAAAAAAJALJwABAAAAb24gbGluZSAgKGNvbHVtbiApIHRocm91Z2ggbGluZSCQ/iEACAAAAJj+IQAJAAAAof4hAA8AAACY/iEACQAAAFx+JwABAAAAHP4hAGQAAABpAAAAGwAAABz+IQBkAAAAqwAAABYAAAAc/iEAZAAAAL4AAAAdAAAAHP4hAGQAAAC7AAAAGQAAABz+IQBkAAAAuwAAAB0AAAAc/iEAZAAAALwAAAAZAAAAHP4hAGQAAADdAAAAIgAAABz+IQBkAAAA+AAAAD8AAAAEFicATQAAAHgKAAAiAAAAAAAAAAgAAAAEAAAAzQIAAC4uPQB4/yEAAwAAACAoZXhoYXVzdGVkKYT/IQAMAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtc3ludGF4LTAuOC41L3NyYy9hc3QvdmlzaXRvci5ycwAAmP8hAGoAAADaAAAAHAAAAJj/IQBqAAAA9gAAACAAAACY/yEAagAAABcBAAAeAAAAmP8hAGoAAAAYAQAAHgAAAJj/IQBqAAAAEwEAADMAAACY/yEAagAAABMBAABFAAAAmP8hAGoAAAAoAQAARQAAAJj/IQBqAAAAMQEAACQAAACY/yEAagAAAEIBAAAiAAAAmP8hAGoAAABWAQAAJgAAACcgJwCkACIAAwAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LXN5bnRheC0wLjguNS9zcmMvZGVidWcucnOwACIAZAAAABgAAAA9AAAAsAAiAGQAAAAVAAAADQAAAHjjJgABAAAAsAAiAGQAAAAyAAAAGwAAAAIAAAAAAAAAAAACAAAAAAAAAAAAIAAA6bAAIgBkAAAALgAAACMAAACwACIAZAAAAGgAAAArAAAAAAAAAAAAAAABAAAASwQAAFRyeUZyb21DaGFyRXJyb3IvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1zeW50YXgtMC44LjUvc3JjL2hpci9tb2QucnMAAKQBIgBmAAAAvwQAAC4AAACkASIAZgAAAMAEAAAqAAAATAQAABQAAAAEAAAATQQAAAAAAAAEAAAABAAAACEBAABOBAAADAAAAAQAAABaAwAATwQAAFwDAABnb3QgY29kZXBvaW50IFUrIHdoaWNoIG9jY3VycyBiZWZvcmUgbGFzdCBjb2RlcG9pbnQgVSsAAGQCIgAQAAAAdAIiACYAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1zeW50YXgtMC44LjUvc3JjL3VuaWNvZGUucnMAAKwCIgBmAAAAfgAAAA0AAABhc3NlcnRpb24gZmFpbGVkOiBpID4gc2VsZi5uZXh0AKwCIgBmAAAAmwAAABEAAACsAiIAZgAAALUAAAAJAAAAR2VuZXJhbF9DYXRlZ29yeVNjcmlwdGNmc2NsY0FnZVNjcmlwdF9FeHRlbnNpb25zR3JhcGhlbWVfQ2x1c3Rlcl9CcmVha1NlbnRlbmNlX0JyZWFrV29yZF9CcmVhawAAMAAAADkAAABBAAAAWgAAAF8AAABfAAAAYQAAAHoAAACqAAAAqgAAALUAAAC1AAAAugAAALoAAADAAAAA1gAAANgAAAD2AAAA+AAAAMECAADGAgAA0QIAAOACAADkAgAA7AIAAOwCAADuAgAA7gIAAAADAAB0AwAAdgMAAHcDAAB6AwAAfQMAAH8DAAB/AwAAhgMAAIYDAACIAwAAigMAAIwDAACMAwAAjgMAAKEDAACjAwAA9QMAAPcDAACBBAAAgwQAAC8FAAAxBQAAVgUAAFkFAABZBQAAYAUAAIgFAACRBQAAvQUAAL8FAAC/BQAAwQUAAMIFAADEBQAAxQUAAMcFAADHBQAA0AUAAOoFAADvBQAA8gUAABAGAAAaBgAAIAYAAGkGAABuBgAA0wYAANUGAADcBgAA3wYAAOgGAADqBgAA/AYAAP8GAAD/BgAAEAcAAEoHAABNBwAAsQcAAMAHAAD1BwAA+gcAAPoHAAD9BwAA/QcAAAAIAAAtCAAAQAgAAFsIAABgCAAAaggAAHAIAACHCAAAiQgAAI4IAACXCAAA4QgAAOMIAABjCQAAZgkAAG8JAABxCQAAgwkAAIUJAACMCQAAjwkAAJAJAACTCQAAqAkAAKoJAACwCQAAsgkAALIJAAC2CQAAuQkAALwJAADECQAAxwkAAMgJAADLCQAAzgkAANcJAADXCQAA3AkAAN0JAADfCQAA4wkAAOYJAADxCQAA/AkAAPwJAAD+CQAA/gkAAAEKAAADCgAABQoAAAoKAAAPCgAAEAoAABMKAAAoCgAAKgoAADAKAAAyCgAAMwoAADUKAAA2CgAAOAoAADkKAAA8CgAAPAoAAD4KAABCCgAARwoAAEgKAABLCgAATQoAAFEKAABRCgAAWQoAAFwKAABeCgAAXgoAAGYKAAB1CgAAgQoAAIMKAACFCgAAjQoAAI8KAACRCgAAkwoAAKgKAACqCgAAsAoAALIKAACzCgAAtQoAALkKAAC8CgAAxQoAAMcKAADJCgAAywoAAM0KAADQCgAA0AoAAOAKAADjCgAA5goAAO8KAAD5CgAA/woAAAELAAADCwAABQsAAAwLAAAPCwAAEAsAABMLAAAoCwAAKgsAADALAAAyCwAAMwsAADULAAA5CwAAPAsAAEQLAABHCwAASAsAAEsLAABNCwAAVQsAAFcLAABcCwAAXQsAAF8LAABjCwAAZgsAAG8LAABxCwAAcQsAAIILAACDCwAAhQsAAIoLAACOCwAAkAsAAJILAACVCwAAmQsAAJoLAACcCwAAnAsAAJ4LAACfCwAAowsAAKQLAACoCwAAqgsAAK4LAAC5CwAAvgsAAMILAADGCwAAyAsAAMoLAADNCwAA0AsAANALAADXCwAA1wsAAOYLAADvCwAAAAwAAAwMAAAODAAAEAwAABIMAAAoDAAAKgwAADkMAAA8DAAARAwAAEYMAABIDAAASgwAAE0MAABVDAAAVgwAAFgMAABaDAAAXQwAAF0MAABgDAAAYwwAAGYMAABvDAAAgAwAAIMMAACFDAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvAwAAMQMAADGDAAAyAwAAMoMAADNDAAA1QwAANYMAADdDAAA3gwAAOAMAADjDAAA5gwAAO8MAADxDAAA8wwAAAANAAAMDQAADg0AABANAAASDQAARA0AAEYNAABIDQAASg0AAE4NAABUDQAAVw0AAF8NAABjDQAAZg0AAG8NAAB6DQAAfw0AAIENAACDDQAAhQ0AAJYNAACaDQAAsQ0AALMNAAC7DQAAvQ0AAL0NAADADQAAxg0AAMoNAADKDQAAzw0AANQNAADWDQAA1g0AANgNAADfDQAA5g0AAO8NAADyDQAA8w0AAAEOAAA6DgAAQA4AAE4OAABQDgAAWQ4AAIEOAACCDgAAhA4AAIQOAACGDgAAig4AAIwOAACjDgAApQ4AAKUOAACnDgAAvQ4AAMAOAADEDgAAxg4AAMYOAADIDgAAzg4AANAOAADZDgAA3A4AAN8OAAAADwAAAA8AABgPAAAZDwAAIA8AACkPAAA1DwAANQ8AADcPAAA3DwAAOQ8AADkPAAA+DwAARw8AAEkPAABsDwAAcQ8AAIQPAACGDwAAlw8AAJkPAAC8DwAAxg8AAMYPAAAAEAAASRAAAFAQAACdEAAAoBAAAMUQAADHEAAAxxAAAM0QAADNEAAA0BAAAPoQAAD8EAAASBIAAEoSAABNEgAAUBIAAFYSAABYEgAAWBIAAFoSAABdEgAAYBIAAIgSAACKEgAAjRIAAJASAACwEgAAshIAALUSAAC4EgAAvhIAAMASAADAEgAAwhIAAMUSAADIEgAA1hIAANgSAAAQEwAAEhMAABUTAAAYEwAAWhMAAF0TAABfEwAAgBMAAI8TAACgEwAA9RMAAPgTAAD9EwAAARQAAGwWAABvFgAAfxYAAIEWAACaFgAAoBYAAOoWAADuFgAA+BYAAAAXAAAVFwAAHxcAADQXAABAFwAAUxcAAGAXAABsFwAAbhcAAHAXAAByFwAAcxcAAIAXAADTFwAA1xcAANcXAADcFwAA3RcAAOAXAADpFwAACxgAAA0YAAAPGAAAGRgAACAYAAB4GAAAgBgAAKoYAACwGAAA9RgAAAAZAAAeGQAAIBkAACsZAAAwGQAAOxkAAEYZAABtGQAAcBkAAHQZAACAGQAAqxkAALAZAADJGQAA0BkAANkZAAAAGgAAGxoAACAaAABeGgAAYBoAAHwaAAB/GgAAiRoAAJAaAACZGgAApxoAAKcaAACwGgAAzhoAAAAbAABMGwAAUBsAAFkbAABrGwAAcxsAAIAbAADzGwAAABwAADccAABAHAAASRwAAE0cAAB9HAAAgBwAAIocAACQHAAAuhwAAL0cAAC/HAAA0BwAANIcAADUHAAA+hwAAAAdAAAVHwAAGB8AAB0fAAAgHwAARR8AAEgfAABNHwAAUB8AAFcfAABZHwAAWR8AAFsfAABbHwAAXR8AAF0fAABfHwAAfR8AAIAfAAC0HwAAth8AALwfAAC+HwAAvh8AAMIfAADEHwAAxh8AAMwfAADQHwAA0x8AANYfAADbHwAA4B8AAOwfAADyHwAA9B8AAPYfAAD8HwAADCAAAA0gAAA/IAAAQCAAAFQgAABUIAAAcSAAAHEgAAB/IAAAfyAAAJAgAACcIAAA0CAAAPAgAAACIQAAAiEAAAchAAAHIQAACiEAABMhAAAVIQAAFSEAABkhAAAdIQAAJCEAACQhAAAmIQAAJiEAACghAAAoIQAAKiEAAC0hAAAvIQAAOSEAADwhAAA/IQAARSEAAEkhAABOIQAATiEAAGAhAACIIQAAtiQAAOkkAAAALAAA5CwAAOssAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAMC0AAGctAABvLQAAby0AAH8tAACWLQAAoC0AAKYtAACoLQAAri0AALAtAAC2LQAAuC0AAL4tAADALQAAxi0AAMgtAADOLQAA0C0AANYtAADYLQAA3i0AAOAtAAD/LQAALy4AAC8uAAAFMAAABzAAACEwAAAvMAAAMTAAADUwAAA4MAAAPDAAAEEwAACWMAAAmTAAAJowAACdMAAAnzAAAKEwAAD6MAAA/DAAAP8wAAAFMQAALzEAADExAACOMQAAoDEAAL8xAADw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YWlyZWRicmFja2V0dHlwZUJpZGlfUGFpcmVkX0JyYWNrZXRfVHlwZWJsa2JtZ2JwYmJwdGNhbm9uaWNhbGNvbWJpbmluZ2NsYXNzQ2Fub25pY2FsX0NvbWJpbmluZ19DbGFzc2Nhc2VkQ2FzZWRjYXNlZm9sZGluZ0Nhc2VfRm9sZGluZ2Nhc2VpZ25vcmFibGVDYXNlX0lnbm9yYWJsZWNjY2NlQ29tcG9zaXRpb25fRXhjbHVzaW9uY2hhbmdlc3doZW5jYXNlZm9sZGVkQ2hhbmdlc19XaGVuX0Nhc2Vmb2xkZWRjaGFuZ2Vzd2hlbmNhc2VtYXBwZWRDaGFuZ2VzX1doZW5fQ2FzZW1hcHBlZGNoYW5nZXN3aGVubG93ZXJjYXNlZENoYW5nZXNfV2hlbl9Mb3dlcmNhc2VkY2hhbmdlc3doZW5uZmtjY2FzZWZvbGRlZENoYW5nZXNfV2hlbl9ORktDX0Nhc2Vmb2xkZWRjaGFuZ2Vzd2hlbnRpdGxlY2FzZWRDaGFuZ2VzX1doZW5fVGl0bGVjYXNlZGNoYW5nZXN3aGVudXBwZXJjYXNlZENoYW5nZXNfV2hlbl9VcHBlcmNhc2VkY2ljamthY2NvdW50aW5nbnVtZXJpY2tBY2NvdW50aW5nTnVtZXJpY2Nqa2NvbXBhdGliaWxpdHl2YXJpYW50a0NvbXBhdGliaWxpdHlWYXJpYW50Y2praWljb3Jla0lJQ29yZWNqa2lyZ2dzb3VyY2VrSVJHX0dTb3VyY2Vjamtpcmdoc291cmNla0lSR19IU291cmNlY2praXJnanNvdXJjZWtJUkdfSlNvdXJjZWNqa2lyZ2twc291cmNla0lSR19LUFNvdXJjZWNqa2lyZ2tzb3VyY2VrSVJHX0tTb3VyY2Vjamtpcmdtc291cmNla0lSR19NU291cmNlY2praXJnc3NvdXJjZWtJUkdfU1NvdXJjZWNqa2lyZ3Rzb3VyY2VrSVJHX1RTb3VyY2Vjamtpcmd1a3NvdXJjZWtJUkdfVUtTb3VyY2Vjamtpcmd1c291cmNla0lSR19VU291cmNlY2praXJndnNvdXJjZWtJUkdfVlNvdXJjZWNqa290aGVybnVtZXJpY2tPdGhlck51bWVyaWNjamtwcmltYXJ5bnVtZXJpY2tQcmltYXJ5TnVtZXJpY2Nqa3JzdW5pY29kZWtSU1VuaWNvZGVjb21wZXhGdWxsX0NvbXBvc2l0aW9uX0V4Y2x1c2lvbmNvbXBvc2l0aW9uZXhjbHVzaW9uY3djZmN3Y21jd2tjZmN3bGN3dGN3dWRhc2hEYXNoZGVjb21wb3NpdGlvbm1hcHBpbmdEZWNvbXBvc2l0aW9uX01hcHBpbmdkZWNvbXBvc2l0aW9udHlwZURlY29tcG9zaXRpb25fVHlwZWRlZmF1bHRpZ25vcmFibGVjb2RlcG9pbnREZWZhdWx0X0lnbm9yYWJsZV9Db2RlX1BvaW50ZGVwRGVwcmVjYXRlZGRlcHJlY2F0ZWRkaWRpYURpYWNyaXRpY2RpYWNyaXRpY2RtZHRlYUVhc3RfQXNpYW5fV2lkdGhlYXN0YXNpYW53aWR0aGViYXNlRW1vamlfTW9kaWZpZXJfQmFzZWVjb21wRW1vamlfQ29tcG9uZW50ZW1vZEVtb2ppX01vZGlmaWVyZW1vamlFbW9qaWVtb2ppY29tcG9uZW50ZW1vamltb2RpZmllcmVtb2ppbW9kaWZpZXJiYXNlZW1vamlwcmVzZW50YXRpb25FbW9qaV9QcmVzZW50YXRpb25lcHJlc2VxdWlkZW9FcXVpdmFsZW50X1VuaWZpZWRfSWRlb2dyYXBoZXF1aXZhbGVudHVuaWZpZWRpZGVvZ3JhcGhleHBhbmRzb25uZmNFeHBhbmRzX09uX05GQ2V4cGFuZHNvbm5mZEV4cGFuZHNfT25fTkZEZXhwYW5kc29ubmZrY0V4cGFuZHNfT25fTkZLQ2V4cGFuZHNvbm5ma2RFeHBhbmRzX09uX05GS0RleHRFeHRlbmRlcmV4dGVuZGVkcGljdG9ncmFwaGljRXh0ZW5kZWRfUGljdG9ncmFwaGljZXh0ZW5kZXJleHRwaWN0ZmNuZmtjRkNfTkZLQ19DbG9zdXJlZmNuZmtjY2xvc3VyZWZ1bGxjb21wb3NpdGlvbmV4Y2x1c2lvbmdjZ2NiZ2VuZXJhbGNhdGVnb3J5Z3JhcGhlbWViYXNlR3JhcGhlbWVfQmFzZWdyYXBoZW1lY2x1c3RlcmJyZWFrZ3JhcGhlbWVleHRlbmRHcmFwaGVtZV9FeHRlbmRncmFwaGVtZWxpbmtHcmFwaGVtZV9MaW5rZ3JiYXNlZ3JleHRncmxpbmtoYW5ndWxzeWxsYWJsZXR5cGVIYW5ndWxfU3lsbGFibGVfVHlwZWhleEhleF9EaWdpdGhleGRpZ2l0aHN0aHlwaGVuSHlwaGVuaWRjSURfQ29udGludWVpZGNvbXBhdG1hdGhjb250aW51ZUlEX0NvbXBhdF9NYXRoX0NvbnRpbnVlaWRjb21wYXRtYXRoc3RhcnRJRF9Db21wYXRfTWF0aF9TdGFydGlkY29udGludWVpZGVvSWRlb2dyYXBoaWNpZGVvZ3JhcGhpY2lkc0lEX1N0YXJ0aWRzYklEU19CaW5hcnlfT3BlcmF0b3JpZHNiaW5hcnlvcGVyYXRvcmlkc3RJRFNfVHJpbmFyeV9PcGVyYXRvcmlkc3RhcnRpZHN0cmluYXJ5b3BlcmF0b3JpZHN1SURTX1VuYXJ5X09wZXJhdG9yaWRzdW5hcnlvcGVyYXRvcmluY2JJbmRpY19Db25qdW5jdF9CcmVha2luZGljY29uanVuY3RicmVha2luZGljcG9zaXRpb25hbGNhdGVnb3J5SW5kaWNfUG9zaXRpb25hbF9DYXRlZ29yeWluZGljc3lsbGFiaWNjYXRlZ29yeUluZGljX1N5bGxhYmljX0NhdGVnb3J5aW5wY2luc2Npc2NJU09fQ29tbWVudGphbW9zaG9ydG5hbWVKYW1vX1Nob3J0X05hbWVqZ0pvaW5pbmdfR3JvdXBqb2luY0pvaW5fQ29udHJvbGpvaW5jb250cm9sam9pbmluZ2dyb3Vwam9pbmluZ3R5cGVKb2luaW5nX1R5cGVqc25qdGthY2NvdW50aW5nbnVtZXJpY2tjb21wYXRpYmlsaXR5dmFyaWFudGtlaGNhdGtFSF9DYXRrZWhkZXNja0VIX0Rlc2NrZWhoZ2tFSF9IR2tlaGlmYW9rRUhfSUZBT2tlaGpzZXNoa0VIX0pTZXNoa2Vobm9taXJyb3JrRUhfTm9NaXJyb3JrZWhub3JvdGF0ZWtFSF9Ob1JvdGF0ZWtpaWNvcmVraXJnZ3NvdXJjZWtpcmdoc291cmNla2lyZ2pzb3VyY2VraXJna3Bzb3VyY2VraXJna3NvdXJjZWtpcmdtc291cmNla2lyZ3Nzb3VyY2VraXJndHNvdXJjZWtpcmd1a3NvdXJjZWtpcmd1c291cmNla2lyZ3Zzb3VyY2Vrb3RoZXJudW1lcmlja3ByaW1hcnludW1lcmlja3JzdW5pY29kZWxiTGluZV9CcmVha0xvd2VyY2FzZV9NYXBwaW5nbGluZWJyZWFrbG9lTG9naWNhbF9PcmRlcl9FeGNlcHRpb25sb2dpY2Fsb3JkZXJleGNlcHRpb25sb3dlckxvd2VyY2FzZWxvd2VyY2FzZWxvd2VyY2FzZW1hcHBpbmdtYXRoTWF0aG1jbU1vZGlmaWVyX0NvbWJpbmluZ19NYXJrbW9kaWZpZXJjb21iaW5pbmdtYXJrbmFOYW1lbmExVW5pY29kZV8xX05hbWVuYW1lYWxpYXNOYW1lX0FsaWFzbmNoYXJOb25jaGFyYWN0ZXJfQ29kZV9Qb2ludG5mY3FjTkZDX1F1aWNrX0NoZWNrbmZjcXVpY2tjaGVja25mZHFjTkZEX1F1aWNrX0NoZWNrbmZkcXVpY2tjaGVja25ma2NjYXNlZm9sZE5GS0NfQ2FzZWZvbGRuZmtjY2ZuZmtjcWNORktDX1F1aWNrX0NoZWNrbmZrY3F1aWNrY2hlY2tuZmtjc2NmTkZLQ19TaW1wbGVfQ2FzZWZvbGRuZmtjc2ltcGxlY2FzZWZvbGRuZmtkcWNORktEX1F1aWNrX0NoZWNrbmZrZHF1aWNrY2hlY2tub25jaGFyYWN0ZXJjb2RlcG9pbnRudE51bWVyaWNfVHlwZW51bWVyaWN0eXBlbnVtZXJpY3ZhbHVlTnVtZXJpY19WYWx1ZW52b2FscGhhT3RoZXJfQWxwaGFiZXRpY29jb21tZW50b2RpT3RoZXJfRGVmYXVsdF9JZ25vcmFibGVfQ29kZV9Qb2ludG9ncmV4dE90aGVyX0dyYXBoZW1lX0V4dGVuZG9pZGNPdGhlcl9JRF9Db250aW51ZW9pZHNPdGhlcl9JRF9TdGFydG9sb3dlck90aGVyX0xvd2VyY2FzZW9tYXRoT3RoZXJfTWF0aG90aGVyYWxwaGFiZXRpY290aGVyZGVmYXVsdGlnbm9yYWJsZWNvZGVwb2ludG90aGVyZ3JhcGhlbWVleHRlbmRvdGhlcmlkY29udGludWVvdGhlcmlkc3RhcnRvdGhlcmxvd2VyY2FzZW90aGVybWF0aG90aGVydXBwZXJjYXNlT3RoZXJfVXBwZXJjYXNlb3VwcGVycGF0c3luUGF0dGVybl9TeW50YXhwYXR0ZXJuc3ludGF4cGF0dGVybndoaXRlc3BhY2VQYXR0ZXJuX1doaXRlX1NwYWNlcGF0d3NwY21QcmVwZW5kZWRfQ29uY2F0ZW5hdGlvbl9NYXJrcHJlcGVuZGVkY29uY2F0ZW5hdGlvbm1hcmtxbWFya1F1b3RhdGlvbl9NYXJrcXVvdGF0aW9ubWFya3JhZGljYWxSYWRpY2FscmVnaW9uYWxpbmRpY2F0b3JSZWdpb25hbF9JbmRpY2F0b3JyaXNic2NmU2ltcGxlX0Nhc2VfRm9sZGluZ3NjcmlwdGV4dGVuc2lvbnNzY3hzZFNvZnRfRG90dGVkc2VudGVuY2VicmVha3NlbnRlbmNldGVybWluYWxTZW50ZW5jZV9UZXJtaW5hbHNmY3NpbXBsZWNhc2Vmb2xkaW5nc2ltcGxlbG93ZXJjYXNlbWFwcGluZ1NpbXBsZV9Mb3dlcmNhc2VfTWFwcGluZ3NpbXBsZXRpdGxlY2FzZW1hcHBpbmdTaW1wbGVfVGl0bGVjYXNlX01hcHBpbmdzaW1wbGV1cHBlcmNhc2VtYXBwaW5nU2ltcGxlX1VwcGVyY2FzZV9NYXBwaW5nc2xjc29mdGRvdHRlZHNwYWNlV2hpdGVfU3BhY2VzdGNzdGVybXN1Y3RjVGl0bGVjYXNlX01hcHBpbmd0ZXJtVGVybWluYWxfUHVuY3R1YXRpb250ZXJtaW5hbHB1bmN0dWF0aW9udGl0bGVjYXNlbWFwcGluZ3VjVXBwZXJjYXNlX01hcHBpbmd1aWRlb1VuaWZpZWRfSWRlb2dyYXBodW5pY29kZTFuYW1ldW5pY29kZXJhZGljYWxzdHJva2V1bmlmaWVkaWRlb2dyYXBodXBwZXJVcHBlcmNhc2V1cHBlcmNhc2V1cHBlcmNhc2VtYXBwaW5ndXJzdmFyaWF0aW9uc2VsZWN0b3JWYXJpYXRpb25fU2VsZWN0b3J2ZXJ0aWNhbG9yaWVudGF0aW9uVmVydGljYWxfT3JpZW50YXRpb252b3Zzd2J3aGl0ZXNwYWNld29yZGJyZWFrd3NwYWNleGlkY1hJRF9Db250aW51ZXhpZGNvbnRpbnVleGlkc1hJRF9TdGFydHhpZHN0YXJ0eG9uZmN4b25mZHhvbmZrY3hvbmZrZGwfIgADAAAAgAMiAAMAAABv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JyIACwAAABMoIgADAAAAFigiAAgAAAAeKCIABAAAACIoIgATAAAANSgiABEAAAAiKCIAEwAAAEYoIgAEAAAASigiABQAAABeKCIABwAAABYoIgAIAAAAZSgiABIAAABKKCIAFAAAAHcoIgAEAAAAeygiABIAAACNKCIAEAAAAHsoIgASAAAAnSgiAAQAAAChKCIAFAAAALUoIgASAAAAoSgiABQAAADHKCIAFwAAAN4oIgAZAAAA9ygiABUAAAAMKSIAFwAAACMpIgAEAAAA3igiABkAAAAnKSIABAAAAAwpIgAXAAAAKykiAAMAAAAuKSIACwAAADkpIgANAAAARikiAA8AAABVKSIAAgAAAFcpIgANAAAAZCkiAAUAAABpKSIADAAAAHUpIgALAAAAaSkiAAwAAACAKSIADAAAAFcpIgANAAAAjCkiAAsAAACXKSIADAAAAKMpIgADAAAARikiAA8AAACmKSIAAgAAAJcpIgAMAAAAqCkiABIAAAAiIiIAEgAAALopIgAVAAAASyIiABUAAADPKSIABgAAANUpIgAHAAAA3CkiAAcAAADjKSIACAAAAOspIgAFAAAA8CkiAAYAAAD2KSIABwAAAP0pIgAIAAAABSoiAAgAAAANKiIACQAAABYqIgALAAAAISoiAAwAAAAtKiIACwAAADgqIgAMAAAARCoiAAcAAABpIiIABwAAAEsqIgALAAAAfSIiAAwAAABWKiIACwAAAJYiIgAMAAAAYSoiAAsAAACvIiIADAAAAGwqIgAMAAAAySIiAA0AAAB4KiIACwAAAOMiIgAMAAAAgyoiAAsAAAD8IiIADAAAAI4qIgALAAAAFSMiAAwAAACZKiIACwAAAC4jIgAMAAAApCoiAAwAAABIIyIADQAAALAqIgALAAAAYiMiAAwAAAC7KiIACwAAAHsjIgAMAAAAxioiAA0AAACWIyIADQAAANMqIgAPAAAAtCMiAA8AAADiKiIACgAAAM8jIgAKAAAA7CoiAAIAAADuKiIACgAAAH4DIgACAAAA+CoiABEAAAAJKyIACQAAAO4qIgAKAAAAEisiAAMAAAAVKyIAFwAAACwrIgAVAAAAFSsiABcAAABBKyIABQAAAEYrIgAJAAAATysiAAkAAABGKyIACQAAAFgrIgAQAAAA+CoiABEAAABoKyIABAAAAGwrIgAE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QyIABAAAAOZDIgADAAAAV0MiAAQAAADpQyIAAwAAAF5DIgAEAAAA7EMiAAMAAABlQyIABAAAAO9DIgADAAAAbEMiAAQAAADyQyIAAwAAAHNDIgAEAAAA9UMiAAMAAAB6QyIABAAAAPhDIgADAAAAgUMiAAQAAAD7QyIAAwAAAIhDIgAEAAAA/kMiAAMAAACPQyIABAAAAGNhc2VkbGV0dGVyQ2FzZWRfTGV0dGVyY2NDb250cm9sRm9ybWF0Y2xvc2VwdW5jdHVhdGlvbkNsb3NlX1B1bmN0dWF0aW9uY25jbnRybGNvUHJpdmF0ZV9Vc2Vjb21iaW5pbmdtYXJrY29ubmVjdG9ycHVuY3R1YXRpb25Db25uZWN0b3JfUHVuY3R1YXRpb25jb250cm9sY3NTdXJyb2dhdGVjdXJyZW5jeXN5bWJvbEN1cnJlbmN5X1N5bWJvbGRhc2hwdW5jdHVhdGlvbkRhc2hfUHVuY3R1YXRpb25kZWNpbWFsbnVtYmVyRGVjaW1hbF9OdW1iZXJkaWdpdGVuY2xvc2luZ21hcmtFbmNsb3NpbmdfTWFya2ZpbmFscHVuY3R1YXRpb25GaW5hbF9QdW5jdHVhdGlvbmZvcm1hdGluaXRpYWxwdW5jdHVhdGlvbkluaXRpYWxfUHVuY3R1YXRpb25sTGV0dGVybGV0dGVybGV0dGVybnVtYmVyTGV0dGVyX051bWJlcmxpbmVzZXBhcmF0b3JMaW5lX1NlcGFyYXRvcmxsTG93ZXJjYXNlX0xldHRlcmxtTW9kaWZpZXJfTGV0dGVybG9PdGhlcl9MZXR0ZXJsb3dlcmNhc2VsZXR0ZXJUaXRsZWNhc2VfTGV0dGVybHVVcHBlcmNhc2VfTGV0dGVybW1hcmttYXRoc3ltYm9sTWF0aF9TeW1ib2xtY1NwYWNpbmdfTWFya21lbW5Ob25zcGFjaW5nX01hcmttb2RpZmllcmxldHRlcm1vZGlmaWVyc3ltYm9sTW9kaWZpZXJfU3ltYm9sbmRubG5vT3RoZXJfTnVtYmVybm9uc3BhY2luZ21hcmtvcGVucHVuY3R1YXRpb25PcGVuX1B1bmN0dWF0aW9ub3RoZXJvdGhlcmxldHRlcm90aGVybnVtYmVyb3RoZXJwdW5jdHVhdGlvbk90aGVyX1B1bmN0dWF0aW9ub3Ro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UCIABgAAAIpQIgAGAAAAhFAiAAYAAACQUCIAAwAAAJNQIgAOAAAAoVAiAAwAAACTUCIADgAAAOpIIgABAAAArVAiAAEAAACuUCIAAgAAALBQIgACAAAAslAiAAIAAAC0UCIAAgAAALZQIgADAAAAuVAiAAMAAAAySiIABQAAAFouJgAFAAAAvFAiAAIAAAC+UCIABwAAAMVQIgAHAAAAvlAiAAcAAADzLiIAEQAAAAQvIgASAAAAFi8iAAIAAAAELyIAEgAAAPFKIgACAAAAzFAiAAsAAAASSyIACwAAAMxQIgALAAAA11AiAAEAAADYUCIAAQAAANlQIgABAAAA2lAiAAEAAADbUCIAAgAAAFouJgAFAAAAKEkmAAMAAADdUCIAAwAAAGFkbGFtQWRsYW1hZGxtYWdoYkNhdWNhc2lhbl9BbGJhbmlhbmFob21BaG9tYW5hdG9saWFuaGllcm9nbHlwaHNBbmF0b2xpYW5fSGllcm9nbHlwaHNhcmFiQXJhYmljYXJhYmljYXJtZW5pYW5Bcm1lbmlhbmFybWlJbXBlcmlhbF9BcmFtYWljYXJtbmF2ZXN0YW5BdmVzdGFuYXZzdGJhbGlCYWxpbmVzZWJhbGluZXNlYmFtdUJhbXVtYmFtdW1iYXNzQmFzc2FfVmFoYmFzc2F2YWhiYXRha0JhdGFrYmF0a2JlbmdCZW5nYWxpYmVuZ2FsaWJoYWlrc3VraUJoYWlrc3VraWJoa3Nib3BvQm9wb21vZm9ib3BvbW9mb2JyYWhCcmFobWlicmFobWlicmFpQnJhaWxsZWJyYWlsbGVidWdpQnVnaW5lc2VidWdpbmVzZWJ1aGRCdWhpZGJ1aGlkY2FrbUNoYWttYWNhbmFkaWFuYWJvcmlnaW5hbENhbmFkaWFuX0Fib3JpZ2luYWxjYW5zY2FyaUNhcmlhbmNhcmlhbmNhdWNhc2lhbmFsYmFuaWFuY2hha21hY2hhbUNoYW1jaGVyQ2hlcm9rZWVjaGVyb2tlZWNob3Jhc21pYW5DaG9yYXNtaWFuY2hyc2NvbW1vbkNvbW1vbmNvcHRDb3B0aWNjb3B0aWNjcG1uQ3lwcm9fTWlub2FuY3BydEN5cHJpb3RjdW5laWZvcm1DdW5laWZvcm1jeXByaW90Y3lwcm9taW5vYW5jeXJpbGxpY0N5cmlsbGljY3lybGRlc2VyZXREZXNlcmV0ZGV2YURldmFuYWdhcmlkZXZhbmFnYXJpZGlha0RpdmVzX0FrdXJ1ZGl2ZXNha3VydWRvZ3JEb2dyYWRvZ3JhZHNydGR1cGxEdXBsb3lhbmR1cGxveWFuZWd5cEVneXB0aWFuX0hpZXJvZ2x5cGhzZWd5cHRpYW5oaWVyb2dseXBoc2VsYmFFbGJhc2FuZWxiYXNhbmVseW1FbHltYWljZWx5bWFpY2V0aGlFdGhpb3BpY2V0aGlvcGljZ2FyYUdhcmF5Z2FyYXlnZW9yR2VvcmdpYW5nZW9yZ2lhbmdsYWdHbGFnb2xpdGljZ2xhZ29saXRpY2dvbmdHdW5qYWxhX0dvbmRpZ29ubU1hc2FyYW1fR29uZGlnb3RoR290aGljZ290aGljZ3JhbkdyYW50aGFncmFudGhhZ3JlZWtHcmVla2dyZWtndWphcmF0aUd1amFyYXRpZ3Vqcmd1a2hHdXJ1bmdfS2hlbWFndW5qYWxhZ29uZGlndXJtdWtoaUd1cm11a2hpZ3VydWd1cnVuZ2toZW1haGFuSGFuaGFuZ0hhbmd1bGhhbmd1bGhhbmloYW5pZmlyb2hpbmd5YUhhbmlmaV9Sb2hpbmd5YWhhbm9IYW51bm9vaGFudW5vb2hhdHJIYXRyYW5oYXRyYW5oZWJySGVicmV3aGVicmV3aGlyYUhpcmFnYW5haGlyYWdhbmFobHV3aG1uZ1BhaGF3aF9IbW9uZ2htbnBOeWlha2VuZ19QdWFjaHVlX0htb25naHJrdEthdGFrYW5hX09yX0hpcmFnYW5haHVuZ09sZF9IdW5nYXJpYW5pbXBlcmlhbGFyYW1haWNpbmhlcml0ZWRJbmhlcml0ZWRpbnNjcmlwdGlvbmFscGFobGF2aUluc2NyaXB0aW9uYWxfUGFobGF2aWluc2NyaXB0aW9uYWxwYXJ0aGlhbkluc2NyaXB0aW9uYWxfUGFydGhpYW5pdGFsT2xkX0l0YWxpY2phdmFKYXZhbmVzZWphdmFuZXNla2FpdGhpS2FpdGhpa2FsaUtheWFoX0xpa2FuYUthdGFrYW5ha2FubmFkYUthbm5hZGFrYXRha2FuYWthdGFrYW5hb3JoaXJhZ2FuYWthd2lLYXdpa2F5YWhsaWtoYXJLaGFyb3NodGhpa2hhcm9zaHRoaWtoaXRhbnNtYWxsc2NyaXB0S2hpdGFuX1NtYWxsX1NjcmlwdGtobWVyS2htZXJraG1ya2hvaktob2praWtob2praWtodWRhd2FkaUtodWRhd2FkaWtpcmF0cmFpS2lyYXRfUmFpa2l0c2tuZGFrcmFpa3RoaWxhbmFUYWlfVGhhbWxhb0xhb2xhb29sYXRpbkxhdGlubGF0bmxlcGNMZXBjaGFsZXBjaGFsaW1iTGltYnVsaW1idWxpbmFMaW5lYXJfQWxpbmJMaW5lYXJfQmxpbmVhcmFsaW5lYXJibGlzdUxpc3VseWNpTHljaWFubHljaWFubHlkaUx5ZGlhbmx5ZGlhbm1haGFqYW5pTWFoYWphbmltYWhqbWFrYU1ha2FzYXJtYWthc2FybWFsYXlhbGFtTWFsYXlhbGFtbWFuZE1hbmRhaWNtYW5kYWljbWFuaU1hbmljaGFlYW5tYW5pY2hhZWFubWFyY01hcmNoZW5tYXJjaGVubWFzYXJhbWdvbmRpbWVkZWZhaWRyaW5NZWRlZmFpZHJpbm1lZGZtZWV0ZWltYXlla01lZXRlaV9NYXlla21lbmRNZW5kZV9LaWtha3VpbWVuZGVraWtha3VpbWVyY01lcm9pdGljX0N1cnNpdmVtZXJvTWVyb2l0aWNfSGllcm9nbHlwaHNtZXJvaXRpY2N1cnNpdmVtZXJvaXRpY2hpZXJvZ2x5cGhzbWlhb01pYW9tbHltbW9kaU1vZGltb25nTW9uZ29saWFubW9uZ29saWFubXJvTXJvbXJvb210ZWltdWx0TXVsdGFuaW11bHRhbmlteWFubWFyTXlhbm1hcm15bXJuYWJhdGFlYW5OYWJhdGFlYW5uYWdtTmFnX011bmRhcmluYWdtdW5kYXJpbmFuZE5hbmRpbmFnYXJpbmFuZGluYWdhcmluYXJiT2xkX05vcnRoX0FyYWJpYW5uYmF0bmV3YU5ld2FuZXd0YWlsdWVOZXdfVGFpX0x1ZW5rb05rb25rb29uc2h1TnVzaHVudXNodW55aWFrZW5ncHVhY2h1ZWhtb25nb2dhbU9naGFtb2doYW1vbGNoaWtpT2xfQ2hpa2lvbGNrb2xkaHVuZ2FyaWFub2xkaXRhbGljb2xkbm9ydGhhcmFiaWFub2xkcGVybWljT2xkX1Blcm1pY29sZHBlcnNpYW5PbGRfUGVyc2lhbm9sZHNvZ2RpYW5PbGRfU29nZGlhbm9sZHNvdXRoYXJhYmlhbk9sZF9Tb3V0aF9BcmFiaWFub2xkdHVya2ljT2xkX1R1cmtpY29sZHV5Z2h1ck9sZF9VeWdodXJvbG9uYWxPbF9PbmFsb25hb29yaXlhT3JpeWFvcmtob3J5YW9zYWdlT3NhZ2Vvc2dlb3NtYU9zbWFueWFvc21hbnlhb3VncnBhaGF3aGhtb25ncGFsbVBhbG15cmVuZXBhbG15cmVuZXBhdWNQYXVfQ2luX0hhdXBhdWNpbmhhdXBlcm1waGFnUGhhZ3NfUGFwaGFnc3BhcGhsaXBobHBQc2FsdGVyX1BhaGxhdmlwaG54UGhvZW5pY2lhbnBob2VuaWNpYW5wbHJkcHJ0aXBzYWx0ZXJwYWhsYXZpcWFhY3FhYWlyZWphbmdSZWphbmdyam5ncm9oZ3J1bmljUnVuaWNydW5yc2FtYXJpdGFuU2FtYXJpdGFuc2FtcnNhcmJzYXVyU2F1cmFzaHRyYXNhdXJhc2h0cmFzZ253U2lnbldyaXRpbmdzaGFyYWRhU2hhcmFkYXNoYXZpYW5TaGF2aWFuc2hhd3NocmRzaWRkU2lkZGhhbXNpZGRoYW1zaWdud3JpdGluZ3NpbmRzaW5oU2luaGFsYXNpbmhhbGFzb2dkU29nZGlhbnNvZ2RpYW5zb2dvc29yYVNvcmFfU29tcGVuZ3NvcmFzb21wZW5nc295b1NveW9tYm9zb3lvbWJvc3VuZFN1bmRhbmVzZXN1bmRhbmVzZXN1bnVTdW51d2Fyc3VudXdhcnN5bG9TeWxvdGlfTmFncmlzeWxvdGluYWdyaXN5cmNTeXJpYWNzeXJpYWN0YWdhbG9nVGFnYWxvZ3RhZ2JUYWdiYW53YXRhZ2JhbndhdGFpbGVUYWlfTGV0YWl0aGFtdGFpdmlldFRhaV9WaWV0dGFrclRha3JpdGFrcml0YWxldGFsdXRhbWlsVGFtaWx0YW1sdGFuZ1Rhbmd1dHRhbmdzYVRhbmdzYXRhbmd1dHRhdnR0ZWx1VGVsdWd1dGVsdWd1dGZuZ1RpZmluYWdodGdsZ3RoYWFUaGFhbmF0aGFhbmF0aGFpVGhhaXRpYmV0YW5UaWJldGFudGlidHRpZmluYWdodGlyaFRpcmh1dGF0aXJodXRhdG5zYXRvZGhyaVRvZGhyaXRvZHJ0b3RvVG90b3R1bHV0aWdhbGFyaVR1bHVfVGlnYWxhcml0dXRndWdhclVnYXJpdGljdWdhcml0aWN2YWlWYWl2YWlpdml0aFZpdGhrdXFpdml0aGt1cWl3YW5jaG9XYW5jaG93YXJhV2FyYW5nX0NpdGl3YXJhbmdjaXRpd2Nob3hwZW94c3V4eWV6aVllemlkaXllemlkaXlpWWl5aWlpemFuYWJhemFyc3F1YXJlWmFuYWJhemFyX1NxdWFyZXphbmJ6aW5oenl5eXp6enoAoFIiAAUAAAClUiIABQAAAKpSIgAEAAAApVIiAAUAAACuUiIABAAAALJSIgASAAAAxFIiAAQAAADIUiIABAAAAMxSIgAUAAAA4FIiABUAAAD1UiIABAAAAPlSIgAGAAAA/1IiAAYAAAD5UiIABgAAAAVTIgAIAAAADVMiAAgAAAAVUyIABAAAABlTIgAQAAAAKVMiAAQAAAANUyIACAAAAC1TIgAHAAAANFMiAAcAAAA7UyIABAAAADRTIgAHAAAAP1MiAAQAAABDUyIACAAAAEtTIgAIAAAAQ1MiAAgAAABTUyIABAAAAFdTIgAFAAAAXFMiAAUAAABXUyIABQAAAGFTIgAEAAAAZVMiAAkAAABuUyIACAAAAGVTIgAJAAAAdlMiAAUAAAB7UyIABQAAAIBTIgAEAAAAe1MiAAUAAACEUyIABAAAAIhTIgAHAAAAj1MiAAcAAACIUyIABwAAAJZTIgAJAAAAn1MiAAkAAACoUyIABAAAAJ9TIgAJAAAArFMiAAQAAACwUyIACAAAALhTIgAIAAAAsFMiAAgAAADAUyIABAAAAMRTIgAGAAAAylMiAAYAAADEUyIABgAAANBTIgAEAAAA1FMiAAcAAADbUyIABwAAANRTIgAHAAAA4lMiAAQAAADmUyIACAAAAO5TIgAIAAAA5lMiAAgAAAD2UyIABAAAAPpTIgAFAAAA/1MiAAUAAAD6UyIABQAAAARUIgAEAAAACFQiAAYAAAAOVCIAEgAAACBUIgATAAAAM1QiAAQAAAAgVCIAEwAAADdUIgAEAAAAO1QiAAYAAABBVCIABgAAADtUIgAGAAAAR1QiABEAAACyUiIAEgAAAFhUIgAGAAAACFQiAAYAAABeVCIABAAAAGJUIgAEAAAAZlQiAAQAAABqVCIACAAAAHJUIgAIAAAAalQiAAgAAAB6VCIACgAAAIRUIgAKAAAAjlQiAAQAAACEVCIACgAAAJJUIgAGAAAAmFQiAAYAAACeVCIABAAAAKJUIgAGAAAAqFQiAAYAAACiVCIABgAAAK5UIgAEAAAAslQiAAwAAAC+VCIABAAAAMJUIgAHAAAAyVQiAAkAAADSVCIACQAAANtUIgAHAAAAwlQiAAcAAADiVCIACwAAALJUIgAMAAAA7VQiAAgAAAD1VCIACAAAAP1UIgAEAAAA9VQiAAgAAAABVSIABwAAAAhVIgAHAAAAD1UiAAQAAAATVSIACgAAAB1VIgAKAAAAE1UiAAoAAAAnVSIABAAAACtVIgALAAAANlUiAAoAAAArVSIACwAAAEBVIgAEAAAARFUiAAUAAABJVSIABQAAAERVIgAFAAAATlUiAAQAAAAIVSIABwAAAFJVIgAEAAAAVlUiAAgAAABeVSIACAAAAFZVIgAIAAAAZlUiAAQAAABqVSIAFAAAAH5VIgATAAAAalUiABQAAACRVSIABAAAAJVVIgAHAAAAnFUiAAcAAACVVSIABwAAAKNVIgAEAAAAp1UiAAcAAACuVSIABwAAAKdVIgAHAAAAtVUiAAQAAAC5VSIACAAAAMFVIgAIAAAAuVUiAAgAAADJVSIABAAAAM1VIgAFAAAA0lUiAAUAAADNVSIABQAAANdVIgAEAAAA21UiAAgAAADjVSIACAAAANtVIgAIAAAA61UiAAQAAADvVSIACgAAAPlVIgAKAAAA71UiAAoAAAADViIABAAAAAdWIgANAAAAFFYiAAQAAAAYViIADQAAACVWIgAEAAAAKVYiAAYAAAAvViIABgAAAClWIgAGAAAANVYiAAQAAAA5ViIABwAAAEBWIgAHAAAAOVYiAAcAAABHViIABQAAAExWIgAFAAAAUVYiAAQAAABMViIABQAAAFVWIgAIAAAAXVYiAAgAAABlViIABAAAAF1WIgAIAAAAaVYiAAQAAABtViIADAAAAHlWIgAMAAAAB1YiAA0AAACFViIACAAAAI1WIgAIAAAAlVYiAAQAAACNViIACAAAAJlWIgALAAAAbVYiAAwAAACkViIAAwAAAKdWIgADAAAAqlYiAAQAAACuViIABgAAALRWIgAGAAAArlYiAAYAAAC6ViIABAAAAKdWIgADAAAAvlYiAA4AAADMViIADwAAANtWIgAEAAAA31YiAAcAAADmViIABwAAAN9WIgAHAAAA7VYiAAQAAADxViIABgAAAPdWIgAGAAAA8VYiAAYAAAD9ViIABAAAAAFXIgAGAAAAB1ciAAYAAAABVyIABgAAAA1XIgAEAAAAEVciAAgAAAAZVyIACAAAABFXIgAIAAAAIVciAAQAAADgUiIAFQAAACVXIgAEAAAAKVciAAwAAAA1VyIABAAAADlXIgAWAAAAT1ciAAQAAABTVyIAFAAAAGdXIgAEAAAAa1ciAA0AAAB4VyIADwAAABlTIgAQAAAAh1ciAAkAAACQVyIACQAAAJlXIgAUAAAArVciABUAAADCVyIAFQAAANdXIgAWAAAA7VciAAQAAADxVyIACgAAAPtXIgAEAAAA/1ciAAgAAAAHWCIACAAAAP9XIgAIAAAAD1giAAYAAAAVWCIABgAAABtYIgAEAAAAH1giAAgAAAAnWCIABAAAACtYIgAIAAAAM1giAAcAAAA6WCIABwAAAEFYIgAIAAAAK1giAAgAAABJWCIAEgAAAFNXIgAUAAAAW1giAAQAAABfWCIABAAAAGNYIgAHAAAAH1giAAgAAABqWCIABAAAAG5YIgAKAAAAeFgiAAoAAABuWCIACgAAAIJYIgARAAAAk1giABMAAACmWCIABQAAAKtYIgAFAAAAsFgiAAQAAACrWCIABQAAALRYIgAEAAAAuFgiAAYAAAC+WCIABgAAALhYIgAGAAAAxFgiAAkAAADNWCIACQAAANZYIgAIAAAA3lgiAAkAAADnWCIABAAAAJNYIgATAAAA61giAAQAAAA6WCIABwAAAO9YIgAEAAAA3lgiAAkAAADzWCIABAAAABVYIgAGAAAA91giAAQAAAD7WCIACAAAAANZIgADAAAABlkiAAMAAAAJWSIABAAAAAZZIgADAAAADVkiAAUAAAASWSIABQAAABdZIgAEAAAAElkiAAUAAAAbWSIABAAAAB9ZIgAGAAAAJVkiAAYAAAAfWSIABgAAACtZIgAEAAAAL1kiAAUAAAA0WSIABQAAAC9ZIgAFAAAAOVkiAAQAAAA9WSIACAAAAEVZIgAEAAAASVkiAAgAAABRWSIABwAAAD1ZIgAIAAAAWFkiAAcAAABJWSIACAAAAF9ZIgAEAAAAY1kiAAQAAABnWSIABAAAAGtZIgAGAAAAcVkiAAYAAABrWSIABgAAAHdZIgAEAAAAe1kiAAYAAACBWSIABgAAAHtZIgAGAAAAh1kiAAgAAACPWSIACAAAAJdZIgAEAAAAj1kiAAgAAACbWSIABAAAAJ9ZIgAHAAAAplkiAAcAAACfWSIABwAAAK1ZIgAJAAAAtlkiAAkAAAC/WSIABAAAAMNZIgAHAAAAylkiAAcAAADDWSIABwAAANFZIgAEAAAA1VkiAAoAAADfWSIACgAAANVZIgAKAAAA6VkiAAQAAADtWSIABwAAAPRZIgAHAAAA7VkiAAcAAAD7WSIADAAAABhWIgANAAAAB1oiAAsAAAASWiIACwAAAB1aIgAEAAAAEloiAAsAAAAhWiIACwAAACxaIgAMAAAAOFoiAAQAAAA8WiIADQAAAElaIgAMAAAAPFoiAA0AAABVWiIABAAAAFlaIgAQAAAAaVoiAAQAAABtWiIAFAAAAIFaIgAPAAAAWVoiABAAAACQWiIAEwAAAG1aIgAUAAAAo1oiAAQAAACnWiIABAAAAKtaIgAEAAAAtlkiAAkAAACvWiIABAAAALNaIgAEAAAAt1oiAAQAAAC7WiIACQAAAMRaIgAJAAAAu1oiAAkAAADNWiIAAwAAANBaIgADAAAA01oiAAQAAADQWiIAAwAAANdaIgAEAAAALFoiAAwAAADbWiIABAAAAN9aIgAHAAAA5loiAAcAAADfWiIABwAAAO1aIgAHAAAA9FoiAAcAAAD7WiIABAAAAPRaIgAHAAAA/1oiAAkAAAAIWyIACQAAABFbIgAEAAAAFVsiAAsAAAAgWyIACgAAABVbIgALAAAAKlsiAAQAAAAuWyIACwAAADlbIgALAAAALlsiAAsAAABEWyIABAAAAEhbIgARAAAAWVsiAAQAAAAIWyIACQAAAF1bIgAEAAAAYVsiAAQAAABlWyIACQAAAG5bIgALAAAAeVsiAAMAAAB8WyIAAwAAAH9bIgAEAAAAfFsiAAMAAACDWyIABAAAAIdbIgAFAAAAjFsiAAUAAACHWyIABQAAAJFbIgAUAAAAOVciABYAAAClWyIABAAAAKlbIgAFAAAArlsiAAUAAACpWyIABQAAALNbIgAHAAAAulsiAAgAAADCWyIABAAAALpbIgAIAAAAxlsiAAwAAABrVyIADQAAANJbIgAJAAAA8VciAAoAAADbWyIADwAAAEhbIgARAAAA6lsiAAkAAADzWyIACgAAAP1bIgAKAAAAB1wiAAsAAAASXCIACgAAABxcIgALAAAAJ1wiAA8AAAA2XCIAEQAAAEdcIgAJAAAAUFwiAAoAAABaXCIACQAAAGNcIgAKAAAAbVwiAAYAAABzXCIABwAAAHpcIgAEAAAAc1wiAAcAAAB+XCIABQAAAINcIgAFAAAAiFwiAAQAAABQXCIACgAAAIxcIgAEAAAAg1wiAAUAAACQXCIABQAAAJVcIgAFAAAAmlwiAAQAAACVXCIABQAAAJ5cIgAEAAAAolwiAAcAAACpXCIABwAAAKJcIgAHAAAAsFwiAAQAAABjXCIACgAAALRcIgALAAAAKVciAAwAAAC/XCIABAAAAMNcIgAJAAAAzFwiAAkAAADDXCIACQAAANVcIgAEAAAA2VwiAAsAAADkXCIACQAAANlcIgALAAAA7VwiAAQAAADzWyIACgAAAPFcIgAEAAAA9VwiAAgAAAD9XCIABwAAAPVcIgAIAAAABF0iAAQAAACtVyIAFQAAAAhdIgAEAAAADF0iAA8AAAAbXSIABAAAAB9dIgAKAAAAKV0iAAoAAAAfXSIACgAAADNdIgAEAAAAp1oiAAQAAAA3XSIABAAAANdXIgAWAAAAO10iAA4AAAAMXSIADwAAAEldIgAEAAAAolQiAAYAAABNXSIABAAAAJBXIgAJAAAAUV0iAAYAAABXXSIABgAAAF1dIgAEAAAAV10iAAYAAABhXSIABAAAAMxWIgAPAAAAZV0iAAUAAABqXSIABQAAAG9dIgAEAAAAal0iAAUAAABzXSIACQAAAHxdIgAJAAAAhV0iAAQAAAB8XSIACQAAAIldIgAEAAAANlwiABEAAACNXSIABAAAAJFdIgAKAAAAm10iAAoAAACRXSIACgAAAKVdIgAEAAAAqV0iAAsAAAC0XSIABwAAALtdIgAHAAAAwl0iAAcAAADJXSIABwAAANBdIgAEAAAAyV0iAAcAAADUXSIABAAAALtdIgAHAAAA2F0iAAQAAADcXSIABwAAAONdIgAHAAAA3F0iAAcAAADqXSIACwAAAKldIgALAAAA9V0iAAQAAADNWCIACQAAAPldIgAEAAAA/V0iAAcAAAAEXiIABwAAAP1dIgAH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AgAAAAMAAEUDAABgAwAAYQMAAHQDAAB1AwAAegMAAHoDAAB+AwAAfgMAAIQDAACKAwAAjAMAAIwDAACOAwAAoQMAAKMDAADOAwAA0AMAANYDAADaAwAA2gMAANwDAADcAwAA3gMAAN4DAADgAwAA4AMAAOIDAADzAwAAAQQAAAwEAAAOBAAATwQAAFEEAABcBAAAXgQAAIYEAACQBAAAxAQAAMcEAADIBAAAywQAAMwEAADQBAAA6wQAAO4EAAD1BAAA+AQAAPkEAAAxBQAAVgUAAFkFAABfBQAAYQUAAIcFAACJBQAAiQUAALAFAAC5BQAAuwUAAMMFAADQBQAA6gUAAPAFAAD0BQAADAYAAAwGAAAbBgAAGwYAAB8GAAAfBgAAIQYAADoGAABABgAAUgYAAGAGAABtBgAAcAYAALcGAAC6BgAAvgYAAMAGAADOBgAA0AYAAO0GAADwBgAA+QYAAAEJAAADCQAABQkAADkJAAA8CQAATQkAAFAJAABUCQAAWAkAAHAJAACBCQAAgwkAAIUJAACMCQAAjwkAAJAJAACTCQAAqAkAAKoJAACwCQAAsgkAALIJAAC2CQAAuQkAALwJAAC8CQAAvgkAAMQJAADHCQAAyAkAAMsJAADNCQAA1wkAANcJAADcCQAA3QkAAN8JAADjCQAA5gkAAPoJAAACCgAAAgoAAAUKAAAKCgAADwoAABAKAAATCgAAKAoAACoKAAAwCgAAMgoAADMKAAA1CgAANgoAADgKAAA5CgAAPAoAADwKAAA+CgAAQgoAAEcKAABICgAASwoAAE0KAABZCgAAXAoAAF4KAABeCgAAZgoAAHQKAACBCgAAgwoAAIUKAACLCgAAjQoAAI0KAACPCgAAkQoAAJMKAACoCgAAqgoAALAKAACyCgAAswoAALUKAAC5CgAAvAoAAMUKAADHCgAAyQoAAMsKAADNCgAA0AoAANAKAADgCgAA4AoAAOYKAADvCgAAAQsAAAMLAAAFCwAADAsAAA8LAAAQCwAAEwsAACgLAAAqCwAAMAsAADILAAAzCwAANgsAADkLAAA8CwAAQwsAAEcLAABICwAASwsAAE0LAABWCwAAVwsAAFwLAABdCwAAXwsAAGELAABmCwAAcAsAAIILAACDCwAAhQsAAIoLAACOCwAAkAsAAJILAACVCwAAmQsAAJoLAACc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BgAA1QYAAOUGAADmBgAA7gYAAO8GAAD6BgAA/AYAAP8GAAD/BgAAEAcAABAHAAASBwAALwcAAE0HAAClBwAAsQcAALEHAADKBwAA6gcAAPQHAAD1BwAA+gcAAPoHAAAACAAAFQgAABoIAAAaCAAAJAgAACQIAAAoCAAAKAgAAEAIAABYCAAAYAgAAGoIAABwCAAAhwgAAIkIAACOCAAAoAgAAMkIAAAECQAAOQkAAD0JAAA9CQAAUAkAAFAJAABYCQAAYQkAAHEJAACACQAAhQkAAIwJAACPCQAAkAkAAJMJAACoCQAAqgkAALAJAACyCQAAsgkAALYJAAC5CQAAvQkAAL0JAADOCQAAzgkAANwJAADdCQAA3wkAAOEJAADwCQAA8QkAAPwJAAD8CQAABQoAAAoKAAAPCgAAEAoAABMKAAAoCgAAKgoAADAKAAAyCgAAMwoAADUKAAA2CgAAOAoAADkKAABZCgAAXAoAAF4KAABeCgAAcgoAAHQKAACFCgAAjQoAAI8KAACRCgAAkwoAAKgKAACqCgAAsAoAALIKAACzCgAAtQoAALkKAAC9CgAAvQoAANAKAADQCgAA4AoAAOEKAAD5CgAA+QoAAAULAAAMCwAADwsAABALAAATCwAAKAsAACoLAAAwCwAAMgsAADMLAAA1CwAAOQsAAD0LAAA9CwAAXAsAAF0LAABfCwAAYQsAAHELAABxCwAAgwsAAIMLAACFCwAAigsAAI4LAACQCwAAkgsAAJULAACZCwAAmgsAAJwLAACcCwAAngsAAJ8LAACjCwAApAsAAKgLAACqCwAArgsAALkLAADQCwAA0AsAAAUMAAAMDAAADgwAABAMAAASDAAAKAwAACoMAAA5DAAAPQwAAD0MAABYDAAAWgwAAF0MAABdDAAAYAwAAGEMAACADAAAgAwAAIUMAACMDAAAjgwAAJAMAACSDAAAqAwAAKoMAACzDAAAtQwAALkMAAC9DAAAvQwAAN0MAADeDAAA4AwAAOEMAADxDAAA8gwAAAQNAAAMDQAADg0AABANAAASDQAAOg0AAD0NAAA9DQAATg0AAE4NAABUDQAAVg0AAF8NAABhDQAAeg0AAH8NAACFDQAAlg0AAJoNAACxDQAAsw0AALsNAAC9DQAAvQ0AAMANAADGDQAAAQ4AADAOAAAyDgAAMw4AAEAOAABG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AQAAGQEAABsBAAAbAQAAHQEAAB0BAAAfAQAAHwEAACEBAAAhAQAAIwEAACMBAAAlAQAAJQEAACcBAAAnAQAAKQEAACkBAAArAQAAKwEAAC0BAAAtAQAALwEAAC8BAAAxAQAAMQEAADMBAAAzAQAANQEAADUBAAA3AQAAOAEAADoBAAA6AQAAPAEAADwBAAA+AQAAPgEAAEABAABAAQAAQgEAAEIBAABEAQAARAEAAEYBAABGAQAASAEAAEkBAABLAQAASwEAAE0BAABNAQAATwEAAE8BAABRAQAAUQEAAFMBAABTAQAAVQEAAFUBAABXAQAAVwEAAFkBAABZAQAAWwEAAFsBAABdAQAAXQEAAF8BAABfAQAAYQEAAGEBAABjAQAAYwEAAGUBAABlAQAAZwEAAGcBAABpAQAAaQEAAGsBAABrAQAAbQEAAG0BAABvAQAAbwEAAHEBAABxAQAAcwEAAHMBAAB1AQAAdQEAAHcBAAB3AQAAegEAAHoBAAB8AQAAfAEAAH4BAACAAQAAgwEAAIMBAACFAQAAhQEAAIgBAACIAQAAjAEAAI0BAACSAQAAkgEAAJUBAACVAQAAmQEAAJsBAACeAQAAngEAAKEBAAChAQAAowEAAKMBAAClAQAApQEAAKgBAACoAQAAqgEAAKsBAACtAQAArQEAALABAACwAQAAtAEAALQBAAC2AQAAtgEAALkBAAC6AQAAvQEAAL8BAADGAQAAxgEAAMkBAADJAQAAzAEAAMwBAADOAQAAzgEAANABAADQAQAA0gEAANIBAADUAQAA1AEAANYBAADWAQAA2AEAANgBAADaAQAA2gEAANwBAADdAQAA3wEAAN8BAADhAQAA4QEAAOMBAADjAQAA5QEAAOUBAADnAQAA5wEAAOkBAADpAQAA6wEAAOsBAADtAQAA7QEAAO8BAADwAQAA8wEAAPMBAAD1AQAA9QEAAPkBAAD5AQAA+wEAAPsBAAD9AQAA/QEAAP8BAAD/AQAAAQIAAAECAAADAgAAAwIAAAUCAAAFAgAABwIAAAcCAAAJAgAACQIAAAsCAAALAgAADQIAAA0CAAAPAgAADwIAABECAAARAgAAEwIAABMCAAAVAgAAFQIAABcCAAAXAgAAGQIAABkCAAAbAgAAGwIAAB0CAAAdAgAAHwIAAB8CAAAhAgAAIQIAACMCAAAjAgAAJQIAACUCAAAnAgAAJwIAACkCAAApAgAAKwIAACsCAAAtAgAALQIAAC8CAAAvAgAAMQIAADECAAAzAgAAOQIAADwCAAA8AgAAPwIAAEACAABCAgAAQgIAAEcCAABHAgAASQIAAEkCAABLAgAASwIAAE0CAABNAgAATwIAAJMCAACVAgAArwIAAHEDAABxAwAAcwMAAHMDAAB3AwAAdwMAAHsDAAB9AwAAkAMAAJADAACsAwAAzgMAANADAADRAwAA1QMAANcDAADZAwAA2QMAANsDAADbAwAA3QMAAN0DAADfAwAA3wMAAOEDAADhAwAA4wMAAOMDAADlAwAA5QMAAOcDAADnAwAA6QMAAOkDAADrAwAA6wMAAO0DAADtAwAA7wMAAPMDAAD1AwAA9QMAAPgDAAD4AwAA+wMAAPwDAAAwBAAAXwQAAGEEAABhBAAAYwQAAGMEAABlBAAAZQQAAGcEAABnBAAAaQQAAGkEAABrBAAAawQAAG0EAABtBAAAbwQAAG8EAABxBAAAcQQAAHMEAABzBAAAdQQAAHUEAAB3BAAAdwQAAHkEAAB5BAAAewQAAHsEAAB9BAAAfQQAAH8EAAB/BAAAgQQAAIEEAACLBAAAiwQAAI0EAACNBAAAjwQAAI8EAACRBAAAkQQAAJMEAACTBAAAlQQAAJUEAACXBAAAlwQAAJkEAACZBAAAmwQAAJsEAACdBAAAnQQAAJ8EAACfBAAAoQQAAKEEAACjBAAAowQAAKUEAAClBAAApwQAAKcEAACpBAAAqQQAAKsEAACrBAAArQQAAK0EAACvBAAArwQAALEEAACxBAAAswQAALMEAAC1BAAAtQQAALcEAAC3BAAAuQQAALkEAAC7BAAAuwQAAL0EAAC9BAAAvwQAAL8EAADCBAAAwgQAAMQEAADEBAAAxgQAAMYEAADIBAAAyAQAAMoEAADKBAAAzAQAAMwEAADOBAAAzwQAANEEAADRBAAA0wQAANMEAADVBAAA1QQAANcEAADXBAAA2QQAANkEAADbBAAA2wQAAN0EAADdBAAA3wQAAN8EAADhBAAA4QQAAOMEAADjBAAA5QQAAOUEAADnBAAA5wQAAOkEAADpBAAA6wQAAOsEAADtBAAA7QQAAO8EAADvBAAA8QQAAPEEAADzBAAA8wQAAPUEAAD1BAAA9wQAAPcEAAD5BAAA+QQAAPsEAAD7BAAA/QQAAP0EAAD/BAAA/wQAAAEFAAABBQAAAwUAAAMFAAAFBQAABQUAAAcFAAAHBQAACQUAAAkFAAALBQAACwUAAA0FAAANBQAADwUAAA8FAAARBQAAEQUAABMFAAATBQAAFQUAABUFAAAXBQAAFwUAABkFAAAZBQAAGwUAABsFAAAdBQAAHQUAAB8FAAAfBQAAIQUAACEFAAAjBQAAIwUAACUFAAAlBQAAJwUAACcFAAApBQAAKQUAACsFAAArBQAALQUAAC0FAAAvBQAALwUAAGAFAACIBQAA0BAAAPoQAAD9EAAA/xAAAPgTAAD9EwAAgBwAAIgcAACKHAAAihwAAAAdAAArHQAAax0AAHcdAAB5HQAAmh0AAAEeAAABHgAAAx4AAAMeAAAFHgAABR4AAAceAAAHHgAACR4AAAkeAAALHgAACx4AAA0eAAANHgAADx4AAA8eAAARHgAAER4AABMeAAATHgAAFR4AABUeAAAXHgAAFx4AABkeAAAZHgAAGx4AABseAAAdHgAAHR4AAB8eAAAfHgAAIR4AACEeAAAjHgAAIx4AACUeAAAlHgAAJx4AACceAAApHgAAKR4AACseAAArHgAALR4AAC0eAAAvHgAALx4AADEeAAAxHgAAMx4AADMeAAA1HgAANR4AADceAAA3HgAAOR4AADkeAAA7HgAAOx4AAD0eAAA9HgAAPx4AAD8eAABBHgAAQR4AAEMeAABDHgAARR4AAEUeAABHHgAARx4AAEkeAABJHgAASx4AAEseAABNHgAATR4AAE8eAABPHgAAUR4AAFEeAABTHgAAUx4AAFUeAABVHgAAVx4AAFceAABZHgAAWR4AAFseAABbHgAAXR4AAF0eAABfHgAAXx4AAGEeAABhHgAAYx4AAGMeAABlHgAAZR4AAGceAABnHgAAaR4AAGkeAABrHgAAax4AAG0eAABtHgAAbx4AAG8eAABxHgAAcR4AAHMeAABzHgAAdR4AAHUeAAB3HgAAdx4AAHkeAAB5HgAAex4AAHseAAB9HgAAfR4AAH8eAAB/HgAAgR4AAIEeAACDHgAAgx4AAIUeAACFHgAAhx4AAIceAACJHgAAiR4AAIseAACLHgAAjR4AAI0eAACPHgAAjx4AAJEeAACRHgAAkx4AAJMeAACVHgAAnR4AAJ8eAACfHgAAoR4AAKEeAACjHgAAox4AAKUeAAClHgAApx4AAKceAACpHgAAqR4AAKseAACrHgAArR4AAK0eAACvHgAArx4AALEeAACxHgAAsx4AALMeAAC1HgAAtR4AALceAAC3HgAAuR4AALkeAAC7HgAAux4AAL0eAAC9HgAAvx4AAL8eAADBHgAAwR4AAMMeAADDHgAAxR4AAMUeAADHHgAAxx4AAMkeAADJHgAAyx4AAMseAADNHgAAzR4AAM8eAADPHgAA0R4AANEeAADTHgAA0x4AANUeAADVHgAA1x4AANceAADZHgAA2R4AANseAADbHgAA3R4AAN0eAADfHgAA3x4AAOEeAADhHgAA4x4AAOMeAADlHgAA5R4AAOceAADnHgAA6R4AAOkeAADrHgAA6x4AAO0eAADtHgAA7x4AAO8eAADxHgAA8R4AAPMeAADzHgAA9R4AAPUeAAD3HgAA9x4AAPkeAAD5HgAA+x4AAPseAAD9HgAA/R4AAP8eAAAHHwAAEB8AABUfAAAgHwAAJx8AADAfAAA3HwAAQB8AAEUfAABQHwAAVx8AAGAfAABnHwAAcB8AAH0fAACAHwAAhx8AAJAfAACXHwAAoB8AAKcfAACwHwAAtB8AALYfAAC3HwAAvh8AAL4fAADCHwAAxB8AAMYfAADHHwAA0B8AANMfAADWHwAA1x8AAOAfAADnHwAA8h8AAPQfAAD2HwAA9x8AAAohAAAKIQAADiEAAA8hAAATIQAAEyEAAC8hAAAvIQAANCEAADQhAAA5IQAAOSEAADwhAAA9IQAARiEAAEkhAABOIQAATiEAAIQhAACEIQAAMCwAAF8sAABhLAAAYSwAAGUsAABmLAAAaCwAAGgsAABqLAAAaiwAAGwsAABsLAAAcSwAAHEsAABzLAAAdCwAAHYsAAB7LAAAgSwAAIEsAACDLAAAgywAAIUsAACFLAAAhywAAIcsAACJLAAAiSwAAIssAACLLAAAjSwAAI0sAACPLAAAjywAAJEsAACRLAAAkywAAJMsAACVLAAAlSwAAJcsAACXLAAAmSwAAJksAACbLAAAmywAAJ0sAACdLAAAnywAAJ8sAAChLAAAoSwAAKMsAACjLAAApSwAAKUsAACnLAAApywAAKksAACpLAAAqywAAKssAACtLAAArSwAAK8sAACvLAAAsSwAALEsAACzLAAAsywAALUsAAC1LAAAtywAALcsAAC5LAAAuSwAALssAAC7LAAAvSwAAL0sAAC/LAAAvywAAMEsAADBLAAAwywAAMMsAADFLAAAxSwAAMcsAADHLAAAySwAAMksAADLLAAAyywAAM0sAADNLAAAzywAAM8sAADRLAAA0SwAANMsAADTLAAA1SwAANUsAADXLAAA1ywAANksAADZLAAA2ywAANssAADdLAAA3SwAAN8sAADfLAAA4SwAAOEsAADjLAAA5CwAAOwsAADsLAAA7iwAAO4sAADzLAAA8ywAAAAtAAAlLQAAJy0AACctAAAtLQAALS0AAEGmAABBpgAAQ6YAAEOmAABFpgAARaYAAEemAABHpgAASaYAAEmmAABLpgAAS6YAAE2mAABNpgAAT6YAAE+mAABRpgAAUaYAAFOmAABTpgAAVaYAAFWmAABXpgAAV6YAAFmmAABZpgAAW6YAAFumAABdpgAAXaYAAF+mAABfpgAAYaYAAGGmAABjpgAAY6YAAGWmAABlpgAAZ6YAAGemAABppgAAaaYAAGumAABrpgAAbaYAAG2mAACBpgAAgaYAAIOmAACDpgAAhaYAAIWmAACHpgAAh6YAAImmAACJpgAAi6YAAIumAACNpgAAjaYAAI+mAACPpgAAkaYAAJGmAACTpgAAk6YAAJWmAACVpgAAl6YAAJemAACZpgAAmaYAAJumAACbpgAAI6cAACOnAAAlpwAAJacAACenAAAnpwAAKacAACmnAAArpwAAK6cAAC2nAAAtpwAAL6cAADGnAAAzpwAAM6cAADWnAAA1pwAAN6cAADenAAA5pwAAOacAADunAAA7pwAAPacAAD2nAAA/pwAAP6cAAEGnAABBpwAAQ6cAAEOnAABFpwAARacAAEenAABHpwAASacAAEmnAABLpwAAS6cAAE2nAABNpwAAT6cAAE+nAABRpwAAUacAAFOnAABTpwAAVacAAFWnAABXpwAAV6cAAFmnAABZpwAAW6cAAFunAABdpwAAXacAAF+nAABfpwAAYacAAGGnAABjpwAAY6cAAGWnAABlpwAAZ6cAAGenAABppwAAaacAAGunAABrpwAAbacAAG2nAABvpwAAb6cAAHGnAAB4pwAAeqcAAHqnAAB8pwAAfKcAAH+nAAB/pwAAgacAAIGnAACDpwAAg6cAAIWnAACFpwAAh6cAAIenAACMpwAAjKcAAI6nAACOpwAAkacAAJGnAACTpwAAlacAAJenAACXpwAAmacAAJmnAACbpwAAm6cAAJ2nAACdpwAAn6cAAJ+nAAChpwAAoacAAKOnAACjpwAApacAAKWnAACnpwAAp6cAAKmnAACppwAAr6cAAK+nAAC1pwAAtacAALenAAC3pwAAuacAALmnAAC7pwAAu6cAAL2nAAC9pwAAv6cAAL+nAADBpwAAwacAAMOnAADDpwAAyKcAAMinAADKpwAAyqcAAM2nAADNpwAA0acAANGnAADTpwAA06cAANWnAADVpwAA16cAANenAADZpwAA2acAANunAADbpwAA9qcAAPanAAD6pwAA+qcAADCrAABaqwAAYKsAAGirAABwqwAAv6sAAAD7AAAG+wAAE/sAABf7AABB/wAAWv8AACgEAQBPBAEA2AQBAPsEAQCXBQEAoQUBAKMFAQCxBQEAswUBALkFAQC7BQEAvAUBAMAMAQDyDAEAcA0BAIUNAQDAGAEA3xgBAGBuAQB/bgEAGtQBADPUAQBO1AEAVNQBAFbUAQBn1AEAgtQBAJvUAQC21AEAudQBALvUAQC71AEAvdQBAMPUAQDF1AEAz9QBAOrUAQAD1QEAHtUBADfVAQBS1QEAa9UBAIbVAQCf1QEAutUBANPVAQDu1QEAB9YBACLWAQA71gEAVtYBAG/WAQCK1gEApdYBAMLWAQDa1gEA3NYBAOHWAQD81gEAFNcBABbXAQAb1wEANtcBAE7XAQBQ1wEAVdcBAHDXAQCI1wEAitcBAI/XAQCq1wEAwtcBAMTXAQDJ1wEAy9cBAMvXAQAA3wEACd8BAAvfAQAe3wEAJd8BACrfAQAi6QEAQ+kBAAADAABvAwAAgwQAAIkEAACRBQAAvQUAAL8FAAC/BQAAwQUAAMIFAADEBQAAxQUAAMcFAADHBQAAEAYAABoGAABLBgAAXwYAAHAGAABwBgAA1gYAANwGAADfBgAA5AYAAOcGAADoBgAA6gYAAO0GAAARBwAAEQcAADAHAABKBwAApgcAALAHAADrBwAA8wcAAP0HAAD9BwAAFggAABkIAAAbCAAAIwgAACUIAAAnCAAAKQgAAC0IAABZCAAAWwgAAJcIAACfCAAAyggAAOEIAADjCAAAAwkAADoJAAA8CQAAPgkAAE8JAABR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HwAA7x8AAP0fAAD+HwAAmzAAAJwwAAAApwAAFqcAACCnAAAhpwAAiacAAIqnAABbqwAAW6sAAGqrAABrqwAAsvsAAML7AAA+/wAAPv8AAED/AABA/wAA4/8AAOP/AAD78wEA//MBAAADAABvAwAAgwQAAIcEAACRBQAAvQUAAL8FAAC/BQAAwQUAAMIFAADEBQAAxQUAAMcFAADHBQAAEAYAABoGAABLBgAAXwYAAHAGAABwBgAA1gYAANwGAADfBgAA5AYAAOcGAADoBgAA6gYAAO0GAAARBwAAEQcAADAHAABKBwAApgcAALAHAADrBwAA8wcAAP0HAAD9BwAAFggAABkIAAAbCAAAIwgAACUIAAAnCAAAKQgAAC0IAABZCAAAWwgAAJcIAACfCAAAyggAAOEIAADjCAAAAgkAADoJAAA6CQAAPAkAADwJAABBCQAASAkAAE0JAABNCQAAUQkAAFcJAABiCQAAYwkAAIEJAACBCQAAvAkAALwJAADBCQAAxAkAAM0JAADNCQAA4gkAAOMJAAD+CQAA/gkAAAEKAAACCgAAPAoAADwKAABBCgAAQgoAAEcKAABICgAASwoAAE0KAABRCgAAUQoAAHAKAABxCgAAdQoAAHUKAACBCgAAggoAALwKAAC8CgAAwQoAAMUKAADHCgAAyAoAAM0KAADNCgAA4goAAOMKAAD6CgAA/woAAAELAAABCwAAPAsAADwLAAA/CwAAPwsAAEELAABECwAATQsAAE0LAABVCwAAVgsAAGILAABjCwAAggsAAIILAADACwAAwAsAAM0LAADNCwAAAAwAAAAMAAAEDAAABAwAADwMAAA8DAAAPgwAAEAMAABGDAAASAwAAEoMAABNDAAAVQwAAFYMAABiDAAAYwwAAIEMAACBDAAAvAwAALwMAAC/DAAAvwwAAMYMAADGDAAAzAwAAM0MAADiDAAA4wwAAAANAAABDQAAOw0AADwNAABBDQAARA0AAE0NAABNDQAAYg0AAGMNAACBDQAAgQ0AAMoNAADKDQAA0g0AANQNAADWDQAA1g0AADEOAAAxDgAANA4AADoOAABHDgAATg4AALEOAACxDgAAtA4AALwOAADIDgAAzg4AABgPAAAZDwAANQ8AADUPAAA3DwAANw8AADkPAAA5DwAAcQ8AAH4PAACADwAAhA8AAIYPAACH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FwAAdBcAAH8XAADeFwAA3xcAAOoXAADvFwAA+hcAAP8XAAAOGAAADhgAABoYAAAfGAAAeRgAAH8YAACrGAAArxgAAPYYAAD/GAAAHxkAAB8ZAAAsGQAALxkAADwZAAA/GQAAQRkAAEMZAABuGQAAbxkAAHUZAAB/GQAArBkAAK8ZAADKGQAAzxkAANsZAADdGQAAHBoAAB0aAABfGgAAXxoAAH0aAAB+GgAAihoAAI8aAACaGgAAnxoAAK4aAACvGgAAzxoAAP8aAABNGwAATRsAAPQbAAD7GwAAOBwAADocAABKHAAATBwAAIscAACPHAAAuxwAALwcAADIHAAAzxwAAPscAAD/HAAAFh8AABcfAAAeHwAAHx8AAEYfAABHHwAATh8AAE8fAABYHwAAWB8AAFofAABaHwAAXB8AAFwfAABeHwAAXh8AAH4fAAB/HwAAtR8AALUfAADFHwAAxR8AANQfAADVHwAA3B8AANwfAADwHwAA8R8AAPUfAAD1HwAA/x8AAP8fAAALIAAADyAAACogAAAuIAAAYCAAAG8gAAByIAAAcyAAAI8gAACPIAAAnSAAAJ8gAADBIAAAzyAAAPEgAAD/IAAAjCEAAI8hAAAqJAAAPyQAAEskAABfJAAAdCsAAHUrAACWKwAAlisAAPQsAAD4LAAAJi0AACYtAAAoLQAALC0AAC4tAAAvLQAAaC0AAG4tAABxLQAAfi0AAJctAACfLQAApy0AAKctAACvLQAAry0AALctAAC3LQAAvy0AAL8tAADHLQAAxy0AAM8tAADPLQAA1y0AANctAADfLQAA3y0AAF4uAAB/LgAAmi4AAJouAAD0LgAA/y4AANYvAADvLwAAQDAAAEAwAACXMAAAmDAAAAAxAAAEMQAAMDEAADAxAACPMQAAjzEAAOYxAADuMQAAHzIAAB8yAACNpAAAj6QAAMekAADPpAAALKYAAD+mAAD4pgAA/6YAAM6nAADPpwAA0qcAANKnAADUpwAA1KcAAN2nAADxpwAALagAAC+oAAA6qAAAP6gAAHioAAB/qAAAxqgAAM2oAADaqAAA36gAAFSpAABeqQAAfakAAH+pAADOqQAAzqkAANqpAADdqQAA/6kAAP+pAAA3qgAAP6oAAE6qAABPqgAAWqoAAFuqAADDqgAA2qoAAPeqAAAAqwAAB6sAAAirAAAP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CAAAWAgAAGAIAABqCAAAcAgAAIcIAACJCAAAjggAAKAIAADICAAABAkAADkJAAA9CQAAPQkAAFAJAABQCQAAWAkAAGEJAAByCQAAgAkAAIUJAACMCQAAjwkAAJAJAACTCQAAqAkAAKoJAACwCQAAsgkAALIJAAC2CQAAuQkAAL0JAAC9CQAAzgkAAM4JAADcCQAA3QkAAN8JAADhCQAA8AkAAPEJAAD8CQAA/AkAAAUKAAAKCgAADwoAABAKAAATCgAAKAoAACoKAAAwCgAAMgoAADMKAAA1CgAANgoAADgKAAA5CgAAWQoAAFwKAABeCgAAXgoAAHIKAAB0CgAAhQoAAI0KAACPCgAAkQoAAJMKAACoCgAAqgoAALAKAACyCgAAswoAALUKAAC5CgAAvQoAAL0KAADQCgAA0AoAAOAKAADhCgAA+QoAAPkKAAAFCwAADAsAAA8LAAAQCwAAEwsAACgLAAAqCwAAMAsAADILAAAzCwAANQsAADkLAAA9CwAAPQsAAFwLAABdCwAAXwsAAGELAABxCwAAcQsAAIMLAACDCwAAhQsAAIoLAACOCwAAkAsAAJILAACVCwAAmQsAAJoLAACcCwAAnAsAAJ4LAACfCwAAowsAAKQLAACoCwAAqgsAAK4LAAC5CwAA0AsAANALAAAFDAAADAwAAA4MAAAQDAAAEgwAACgMAAAqDAAAOQwAAD0MAAA9DAAAWAwAAFoMAABdDAAAXQwAAGAMAABhDAAAgAwAAIAMAACFDAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvQwAAL0MAADdDAAA3gwAAOAMAADhDAAA8QwAAPIMAAAEDQAADA0AAA4NAAAQDQAAEg0AADoNAAA9DQAAPQ0AAE4NAABODQAAVA0AAFYNAABfDQAAYQ0AAHoNAAB/DQAAhQ0AAJYNAACaDQAAsQ0AALMNAAC7DQAAvQ0AAL0NAADADQAAxg0AAAEOAAAwDgAAMg4AADMOAABADgAARQ4AAIEOAACCDgAAhA4AAIQOAACGDgAAig4AAIwOAACjDgAApQ4AAKUOAACnDgAAsA4AALIOAACzDgAAvQ4AAL0OAADADgAAxA4AANwOAADfDgAAAA8AAAAPAABADwAARw8AAEkPAABsDwAAiA8AAIwPAAAAEAAAKhAAAD8QAAA/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FwAAbRcAAHEXAABxFwAAdBcAAH8XAADeFwAA3xcAAOoXAADvFwAA+hcAAP8XAAAaGAAAHxgAAHkYAAB/GAAAqxgAAK8YAAD2GAAA/xgAAB8ZAAAfGQAALBkAAC8ZAAA8GQAAPxkAAEEZAABDGQAAbhkAAG8ZAAB1GQAAfxkAAKwZAACvGQAAyhkAAM8ZAADbGQAA3RkAABwaAAAdGgAAXxoAAF8aAAB9GgAAfhoAAIoaAACPGgAAmhoAAJ8aAACuGgAArxoAAM8aAAD/GgAATRsAAE0bAAD0GwAA+xsAADgcAAA6HAAAShwAAEwcAACLHAAAjxwAALscAAC8HAAAyBwAAM8cAAD7HAAA/xwAABYfAAAXHwAAHh8AAB8fAABGHwAARx8AAE4fAABPHwAAWB8AAFgfAABaHwAAWh8AAFwfAABcHwAAXh8AAF4fAAB+HwAAfx8AALUfAAC1HwAAxR8AAMUfAADUHwAA1R8AANwfAADcHwAA8B8AAPEfAAD1HwAA9R8AAP8fAAD/HwAAZSAAAGUgAAByIAAAcyAAAI8gAACPIAAAnSAAAJ8gAADBIAAAzyAAAPEgAAD/IAAAjCEAAI8hAAAqJAAAPyQAAEskAABfJAAAdCsAAHUrAACWKwAAlisAAPQsAAD4LAAAJi0AACYtAAAoLQAALC0AAC4tAAAvLQAAaC0AAG4tAABxLQAAfi0AAJctAACfLQAApy0AAKctAACvLQAAry0AALctAAC3LQAAvy0AAL8tAADHLQAAxy0AAM8tAADPLQAA1y0AANctAADfLQAA3y0AAF4uAAB/LgAAmi4AAJouAAD0LgAA/y4AANYvAADvLwAAQDAAAEAwAACXMAAAmDAAAAAxAAAEMQAAMDEAADAxAACPMQAAjzEAAOYxAADuMQAAHzIAAB8yAACNpAAAj6QAAMekAADPpAAALKYAAD+mAAD4pgAA/6YAAM6nAADPpwAA0qcAANKnAADUpwAA1KcAAN2nAADxpwAALagAAC+oAAA6qAAAP6gAAHioAAB/qAAAxqgAAM2oAADaqAAA36gAAFSpAABeqQAAfakAAH+pAADOqQAAzqkAANqpAADdqQAA/6kAAP+pAAA3qgAAP6oAAE6qAABPqgAAWqoAAFuqAADDqgAA2qoAAPeqAAAAqwAAB6sAAAirAAAPqwAAEKsAABerAAAf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AQAAIgEAACIBAAAkAQAAJAEAACYBAAAmAQAAKAEAACgBAAAqAQAAKgEAACwBAAAsAQAALgEAAC4BAAAwAQAAMAEAADIBAAAyAQAANAEAADQBAAA2AQAANgEAADkBAAA5AQAAOwEAADsBAAA9AQAAPQEAAD8BAAA/AQAAQQEAAEEBAABDAQAAQwEAAEUBAABFAQAARwEAAEcBAABKAQAASgEAAEwBAABMAQAATgEAAE4BAABQAQAAUAEAAFIBAABSAQAAVAEAAFQBAABWAQAAVgEAAFgBAABYAQAAWgEAAFoBAABcAQAAXAEAAF4BAABeAQAAYAEAAGABAABiAQAAYgEAAGQBAABkAQAAZgEAAGYBAABoAQAAaAEAAGoBAABqAQAAbAEAAGwBAABuAQAAbgEAAHABAABwAQAAcgEAAHIBAAB0AQAAdAEAAHYBAAB2AQAAeAEAAHkBAAB7AQAAewEAAH0BAAB9AQAAgQEAAIIBAACEAQAAhAEAAIYBAACHAQAAiQEAAIsBAACOAQAAkQEAAJMBAACUAQAAlgEAAJgBAACcAQAAnQEAAJ8BAACgAQAAogEAAKIBAACkAQAApAEAAKYBAACnAQAAqQEAAKkBAACsAQAArAEAAK4BAACvAQAAsQEAALMBAAC1AQAAtQEAALcBAAC4AQAAvAEAALwBAADEAQAAxAEAAMcBAADHAQAAygEAAMoBAADNAQAAzQEAAM8BAADPAQAA0QEAANEBAADTAQAA0wEAANUBAADVAQAA1wEAANcBAADZAQAA2QEAANsBAADbAQAA3gEAAN4BAADgAQAA4AEAAOIBAADiAQAA5AEAAOQBAADmAQAA5gEAAOgBAADoAQAA6gEAAOoBAADsAQAA7AEAAO4BAADuAQAA8QEAAPEBAAD0AQAA9AEAAPYBAAD4AQAA+gEAAPoBAAD8AQAA/AEAAP4BAAD+AQAAAAIAAAACAAACAgAAAgIAAAQCAAAEAgAABgIAAAYCAAAIAgAACAIAAAoCAAAKAgAADAIAAAwCAAAOAgAADgIAABACAAAQAgAAEgIAABICAAAUAgAAFAIAABYCAAAWAgAAGAIAABgCAAAaAgAAGgIAABwCAAAcAgAAHgIAAB4CAAAgAgAAIAIAACICAAAiAgAAJAIAACQCAAAmAgAAJgIAACgCAAAoAgAAKgIAACoCAAAsAgAALAIAAC4CAAAuAgAAMAIAADACAAAyAgAAMgIAADoCAAA7AgAAPQIAAD4CAABBAgAAQQIAAEMCAABGAgAASAIAAEgCAABKAgAASgIAAEwCAABMAgAATgIAAE4CAABwAwAAcAMAAHIDAAByAwAAdgMAAHYDAAB/AwAAfwMAAIYDAACGAwAAiAMAAIoDAACMAwAAjAMAAI4DAACPAwAAkQMAAKEDAACjAwAAqwMAAM8DAADPAwAA0gMAANQDAADYAwAA2AMAANoDAADaAwAA3AMAANwDAADeAwAA3gMAAOADAADgAwAA4gMAAOIDAADkAwAA5AMAAOYDAADmAwAA6AMAAOgDAADqAwAA6gMAAOwDAADsAwAA7gMAAO4DAAD0AwAA9AMAAPcDAAD3AwAA+QMAAPoDAAD9AwAALwQAAGAEAABgBAAAYgQAAGIEAABkBAAAZAQAAGYEAABmBAAAaAQAAGgEAABqBAAAagQAAGwEAABsBAAAbgQAAG4EAABwBAAAcAQAAHIEAAByBAAAdAQAAHQEAAB2BAAAdgQAAHgEAAB4BAAAegQAAHoEAAB8BAAAfAQAAH4EAAB+BAAAgAQAAIAEAACKBAAAigQAAIwEAACMBAAAjgQAAI4EAACQBAAAkAQAAJIEAACSBAAAlAQAAJQEAACWBAAAlgQAAJgEAACYBAAAmgQAAJoEAACcBAAAnAQAAJ4EAACeBAAAoAQAAKAEAACiBAAAogQAAKQEAACkBAAApgQAAKYEAACoBAAAqAQAAKoEAACqBAAArAQAAKwEAACuBAAArgQAALAEAACwBAAAsgQAALIEAAC0BAAAtAQAALYEAAC2BAAAuAQAALgEAAC6BAAAugQAALwEAAC8BAAAvgQAAL4EAADABAAAwQQAAMMEAADDBAAAxQQAAMUEAADHBAAAxwQAAMkEAADJBAAAywQAAMsEAADNBAAAzQQAANAEAADQBAAA0gQAANIEAADUBAAA1AQAANYEAADWBAAA2AQAANgEAADaBAAA2gQAANwEAADcBAAA3gQAAN4EAADgBAAA4AQAAOIEAADiBAAA5AQAAOQEAADmBAAA5gQAAOgEAADoBAAA6gQAAOoEAADsBAAA7AQAAO4EAADuBAAA8AQAAPAEAADyBAAA8gQAAPQEAAD0BAAA9gQAAPYEAAD4BAAA+AQAAPoEAAD6BAAA/AQAAPwEAAD+BAAA/gQAAAAFAAAABQAAAgUAAAIFAAAEBQAABAUAAAYFAAAGBQAACAUAAAgFAAAKBQAACgUAAAwFAAAMBQAADgUAAA4FAAAQBQAAEAUAABIFAAASBQAAFAUAABQFAAAWBQAAFgUAABgFAAAYBQAAGgUAABoFAAAcBQAAHAUAAB4FAAAeBQAAIAUAACAFAAAiBQAAIgUAACQFAAAkBQAAJgUAACYFAAAoBQAAKAUAACoFAAAqBQAALAUAACwFAAAuBQAALgUAADEFAABWBQAAoBAAAMUQAADHEAAAxxAAAM0QAADNEAAAoBMAAPUTAACJHAAAiRwAAJAcAAC6HAAAvRwAAL8cAAAAHgAAAB4AAAIeAAACHgAABB4AAAQeAAAGHgAABh4AAAgeAAAIHgAACh4AAAoeAAAMHgAADB4AAA4eAAAOHgAAEB4AABAeAAASHgAAEh4AABQeAAAUHgAAFh4AABYeAAAYHgAAGB4AABoeAAAaHgAAHB4AABweAAAeHgAAHh4AACAeAAAgHgAAIh4AACIeAAAkHgAAJB4AACYeAAAmHgAAKB4AACgeAAAqHgAAKh4AACweAAAsHgAALh4AAC4eAAAwHgAAMB4AADIeAAAyHgAANB4AADQeAAA2HgAANh4AADgeAAA4HgAAOh4AADoeAAA8HgAAPB4AAD4eAAA+HgAAQB4AAEAeAABCHgAAQh4AAEQeAABEHgAARh4AAEYeAABIHgAASB4AAEoeAABKHgAATB4AAEweAABOHgAATh4AAFAeAABQHgAAUh4AAFIeAABUHgAAVB4AAFYeAABWHgAAWB4AAFgeAABaHgAAWh4AAFweAABcHgAAXh4AAF4eAABgHgAAYB4AAGIeAABiHgAAZB4AAGQeAABmHgAAZh4AAGgeAABoHgAAah4AAGoeAABsHgAAbB4AAG4eAABuHgAAcB4AAHAeAAByHgAAch4AAHQeAAB0HgAAdh4AAHYeAAB4HgAAeB4AAHoeAAB6HgAAfB4AAHweAAB+HgAAfh4AAIAeAACAHgAAgh4AAIIeAACEHgAAhB4AAIYeAACGHgAAiB4AAIgeAACKHgAAih4AAIweAACMHgAAjh4AAI4eAACQHgAAkB4AAJIeAACSHgAAlB4AAJQeAACeHgAAnh4AAKAeAACgHgAAoh4AAKIeAACkHgAApB4AAKYeAACmHgAAqB4AAKgeAACqHgAAqh4AAKweAACsHgAArh4AAK4eAACwHgAAsB4AALIeAACyHgAAtB4AALQeAAC2HgAAth4AALgeAAC4HgAAuh4AALoeAAC8HgAAvB4AAL4eAAC+HgAAwB4AAMAeAADCHgAAwh4AAMQeAADEHgAAxh4AAMYeAADIHgAAyB4AAMoeAADKHgAAzB4AAMweAADOHgAAzh4AANAeAADQHgAA0h4AANIeAADUHgAA1B4AANYeAADWHgAA2B4AANgeAADaHgAA2h4AANweAADcHgAA3h4AAN4eAADgHgAA4B4AAOIeAADiHgAA5B4AAOQeAADmHgAA5h4AAOgeAADoHgAA6h4AAOoeAADsHgAA7B4AAO4eAADuHgAA8B4AAPAeAADyHgAA8h4AAPQeAAD0HgAA9h4AAPYeAAD4HgAA+B4AAPoeAAD6HgAA/B4AAPweAAD+HgAA/h4AAAgfAAAPHwAAGB8AAB0fAAAoHwAALx8AADgfAAA/HwAASB8AAE0fAABZHwAAWR8AAFsfAABbHwAAXR8AAF0fAABfHwAAXx8AAGgfAABvHwAAuB8AALsfAADIHwAAyx8AANgfAADbHwAA6B8AAOwfAAD4HwAA+x8AAAIhAAACIQAAByEAAAchAAALIQAADSEAABAhAAASIQAAFSEAABUhAAAZIQAAHSEAACQhAAAkIQAAJiEAACYhAAAoIQAAKCEAACohAAAtIQAAMCEAADMhAAA+IQAAPyEAAEUhAABFIQAAgyEAAIMhAAAALAAALywAAGAsAABgLAAAYiwAAGQsAABnLAAAZywAAGksAABpLAAAaywAAGssAABtLAAAcCwAAHIsAAByLAAAdSwAAHUsAAB+LAAAgCwAAIIsAACCLAAAhCwAAIQsAACGLAAAhiwAAIgsAACILAAAiiwAAIosAACMLAAAjCwAAI4sAACOLAAAkCwAAJAsAACSLAAAkiwAAJQsAACULAAAliwAAJYsAACYLAAAmCwAAJosAACaLAAAnCwAAJwsAACeLAAAniwAAKAsAACgLAAAoiwAAKIsAACkLAAApCwAAKYsAACmLAAAqCwAAKgsAACqLAAAqiwAAKwsAACsLAAAriwAAK4sAACwLAAAsCwAALIsAACyLAAAtCwAALQsAAC2LAAAtiwAALgsAAC4LAAAuiwAALosAAC8LAAAvCwAAL4sAAC+LAAAwCwAAMAsAADCLAAAwiwAAMQsAADELAAAxiwAAMYsAADILAAAyCwAAMosAADKLAAAzCwAAMwsAADOLAAAziwAANAsAADQLAAA0iwAANIsAADULAAA1CwAANYsAADWLAAA2CwAANgsAADaLAAA2iwAANwsAADcLAAA3iwAAN4sAADgLAAA4CwAAOIsAADiLAAA6ywAAOssAADtLAAA7SwAAPIsAADyLAAAQKYAAECmAABCpgAAQqYAAESmAABEpgAARqYAAEamAABIpgAASKYAAEqmAABKpgAATKYAAEymAABOpgAATqYAAFCmAABQpgAAUqYAAFKmAABUpgAAVKYAAFamAABWpgAAWKYAAFimAABapgAAWqYAAFymAABcpgAAXqYAAF6mAABgpgAAYKYAAGKmAABipgAAZKYAAGSmAABmpgAAZqYAAGimAABopgAAaqYAAGqmAABspgAAbKYAAICmAACApgAAgqYAAIKmAACEpgAAhKYAAIamAACGpgAAiKYAAIimAACKpgAAiqYAAIymAACMpgAAjqYAAI6mAACQpgAAkKYAAJKmAACSpgAAlKYAAJSmAACWpgAAlqYAAJimAACYpgAAmqYAAJqmAAAipwAAIqcAACSnAAAkpwAAJqcAACanAAAopwAAKKcAACqnAAAqpwAALKcAACynAAAupwAALqcAADKnAAAypwAANKcAADSnAAA2pwAANqcAADinAAA4pwAAOqcAADqnAAA8pwAAPKcAAD6nAAA+pwAAQKcAAECnAABCpwAAQqcAAESnAABEpwAARqcAAEanAABIpwAASKcAAEqnAABKpwAATKcAAEynAABOpwAATqcAAFCnAABQpwAAUqcAAFKnAABUpwAAVKcAAFanAABWpwAAWKcAAFinAABapwAAWqcAAFynAABcpwAAXqcAAF6nAABgpwAAYKcAAGKnAABipwAAZKcAAGSnAABmpwAAZqcAAGinAABopwAAaqcAAGqnAABspwAAbKcAAG6nAABupwAAeacAAHmnAAB7pwAAe6cAAH2nAAB+pwAAgKcAAICnAACCpwAAgqcAAISnAACEpwAAhqcAAIanAACLpwAAi6cAAI2nAACNpwAAkKcAAJCnAACSpwAAkqcAAJanAACWpwAAmKcAAJinAACa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XyIABgAAAEydIwACAAAADF8iAAYAAABEyyMABgAAACxfIgAGAAAAdMsjABEAAABMXyIABgAAAPzLIwAHAAAAXF8iAAQAAAA0zCMABgAAAGdfIgAHAAAAZMwjAAgAAAA8XyIACAAAAKTMIwAHAAAAfl8iAAcAAADczCMABgAAAJZfIgAGAAAADM0jAAcAAACkXyIABAAAAETNIwACAAAAtF8iAA0AAABUzSMAEAAAAMlfIgAIAAAAxJ4jAAIAAADcXyIAAwAAANSeIwABAAAA518iAAgAAADcniMACAAAAP1fIgAGAAAAHJ8jAAIAAAAHYCIACwAAACyfIwACAAAALGAiAAYAAADUzSMABwAAADpgIgACAAAADM4jAAcAAABPYCIAEAAAAGSfIwABAAAAMAAAADkAAABBAAAARgAAAGEAAABmAAAAQQAAAFoAAABhAAAAegAAAKoAAACqAAAAtQAAALUAAAC6AAAAugAAAMAAAADWAAAA2AAAAPYAAAD4AAAAwQIAAMYCAADRAgAA4AIAAOQCAADsAgAA7AIAAO4CAADuAgAARQMAAEUDAABjAwAAdAMAAHYDAAB3AwAAegMAAH0DAAB/AwAAfwMAAIYDAACGAwAAiAMAAIoDAACMAwAAjAMAAI4DAAChAwAAowMAAPUDAAD3AwAAgQQAAIoEAAAvBQAAMQUAAFYFAABZBQAAWQUAAGAFAACIBQAAsAUAAL0FAAC/BQAAvwUAAMEFAADCBQAAxAUAAMUFAADHBQAAxwUAANAFAADqBQAA7wUAAPIFAAAQBgAAGgYAACAGAABXBgAAWQYAAF8GAABuBgAA0wYAANUGAADcBgAA4QYAAOgGAADtBgAA7wYAAPoGAAD8BgAA/wYAAP8GAAAQBwAAPwcAAE0HAACxBwAAygcAAOoHAAD0BwAA9QcAAPoHAAD6BwAAAAgAABcIAAAaCAAALAgAAEAIAABYCAAAYAgAAGoIAABwCAAAhwgAAIkIAACOCAAAlwgAAJcIAACgCAAAyQgAANQIAADfCAAA4wgAAOkIAADwCAAAOwkAAD0JAABMCQAATgkAAFAJAABVCQAAYwkAAHEJAACDCQAAhQkAAIwJAACPCQAAkAkAAJMJAACoCQAAqgkAALAJAACyCQAAsgkAALYJAAC5CQAAvQkAAMQJAADHCQAAyAkAAMsJAADMCQAAzgkAAM4JAADXCQAA1wkAANwJAADdCQAA3wkAAOMJAADwCQAA8QkAAPwJAAD8CQAAAQoAAAMKAAAFCgAACgoAAA8KAAAQCgAAEwoAACgKAAAqCgAAMAoAADIKAAAzCgAANQoAADYKAAA4CgAAOQoAAD4KAABCCgAARwoAAEgKAABLCgAATAoAAFEKAABRCgAAWQoAAFwKAABeCgAAXgoAAHAKAAB1CgAAgQoAAIMKAACFCgAAjQoAAI8KAACRCgAAkwoAAKgKAACqCgAAsAoAALIKAACzCgAAtQoAALkKAAC9CgAAxQoAAMcKAADJCgAAywoAAMwKAADQCgAA0AoAAOAKAADjCgAA+QoAAPwKAAABCwAAAwsAAAULAAAMCwAADwsAABALAAATCwAAKAsAACoLAAAwCwAAMgsAADMLAAA1CwAAOQsAAD0LAABECwAARwsAAEgLAABLCwAATAsAAFYLAABXCwAAXAsAAF0LAABfCwAAYwsAAHELAABxCwAAggsAAIMLAACFCwAAigsAAI4LAACQCwAAkgsAAJULAACZCwAAmgsAAJwLAACcCwAAngsAAJ8LAACjCwAApAsAAKgLAACqCwAArgsAALkLAAC+CwAAwgsAAMYLAADICwAAygsAAMwLAADQCwAA0AsAANcLAADXCwAAAAwAAAwMAAAODAAAEAwAABIMAAAoDAAAKgwAADkMAAA9DAAARAwAAEYMAABIDAAASgwAAEwMAABVDAAAVgwAAFgMAABaDAAAXQwAAF0MAABgDAAAYwwAAIAMAACDDAAAhQwAAIwMAACODAAAkAwAAJIMAACoDAAAqgwAALMMAAC1DAAAuQwAAL0MAADEDAAAxgwAAMgMAADKDAAAzAwAANUMAADWDAAA3QwAAN4MAADgDAAA4wwAAPEMAADzDAAAAA0AAAwNAAAODQAAEA0AABINAAA6DQAAPQ0AAEQNAABGDQAASA0AAEoNAABMDQAATg0AAE4NAABUDQAAVw0AAF8NAABjDQAAeg0AAH8NAACBDQAAgw0AAIUNAACWDQAAmg0AALENAACzDQAAuw0AAL0NAAC9DQAAwA0AAMYNAADPDQAA1A0AANYNAADWDQAA2A0AAN8NAADyDQAA8w0AAAEOAAA6DgAAQA4AAEYOAABNDgAATQ4AAIEOAACCDgAAhA4AAIQOAACG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bwEASm8BAE9vAQCHbwEAj28BAJ9vAQDgbwEA4W8BAONvAQDjbwEA8G8BAPFvAQAAcAEA94cBAACIAQDVjAEA/4wBAAiNAQDwrwEA868BAPWvAQD7rwEA/a8BAP6vAQAAsAEAIrEBADKxAQAysQEAULEBAFKxAQBVsQEAVbEBAGSxAQBnsQEAcLEBAPuyAQAAvAEAarwBAHC8AQB8vAEAgLwBAIi8AQCQvAEAmbwBAJ68AQCevAEAANQBAFTUAQBW1AEAnNQBAJ7UAQCf1AEAotQBAKLUAQCl1AEAptQBAKnUAQCs1AEArtQBALnUAQC71AEAu9QBAL3UAQDD1AEAxdQBAAXVAQAH1QEACtUBAA3VAQAU1QEAFtUBABzVAQAe1QEAOdUBADvVAQA+1QEAQNUBAETVAQBG1QEARtUBAErVAQBQ1QEAUtUBAKXWAQCo1gEAwNYBAMLWAQDa1gEA3NYBAPrWAQD81gEAFNcBABbXAQA01wEANtcBAE7XAQBQ1wEAbtcBAHDXAQCI1wEAitcBAKjXAQCq1wEAwtcBAMTXAQDL1wEAAN8BAB7fAQAl3wEAKt8BAADgAQAG4AEACOABABjgAQAb4AEAIeABACPgAQAk4AEAJuABACrgAQAw4AEAbeABAI/gAQCP4AEAAOEBACzhAQA34QEAPeEBAE7hAQBO4QEAkOIBAK3iAQDA4gEA6+IBANDkAQDr5AEA0OUBAO3lAQDw5QEA8OUBAODnAQDm5wEA6OcBAOvnAQDt5wEA7ucBAPDnAQD+5wEAAOgBAMToAQAA6QEAQ+kBAEfpAQBH6QEAS+kBAEvpAQAA7gEAA+4BAAXuAQAf7gEAIe4BACLuAQAk7gEAJO4BACfuAQAn7gEAKe4BADLuAQA07gEAN+4BADnuAQA57gEAO+4BADvuAQBC7gEAQu4BAEfuAQBH7gEASe4BAEnuAQBL7gEAS+4BAE3uAQBP7gEAUe4BAFLuAQBU7gEAVO4BAFfuAQBX7gEAWe4BAFnuAQBb7gEAW+4BAF3uAQBd7gEAX+4BAF/uAQBh7gEAYu4BAGTuAQBk7gEAZ+4BAGruAQBs7gEAcu4BAHTuAQB37gEAee4BAHzuAQB+7gEAfu4BAIDuAQCJ7gEAi+4BAJvuAQCh7gEAo+4BAKXuAQCp7gEAq+4BALvuAQAw8QEASfEBAFDxAQBp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AQAAWgEAAFwBAABcAQAAXgEAAF4BAABgAQAAYAEAAGIBAABiAQAAZAEAAGQBAABmAQAAZgEAAGgBAABoAQAAagEAAGoBAABsAQAAbAEAAG4BAABuAQAAcAEAAHABAAByAQAAcgEAAHQBAAB0AQAAdgEAAHYBAAB4AQAAeQEAAHsBAAB7AQAAfQEAAH0BAAB/AQAAfwEAAIEBAACCAQAAhAEAAIQBAACGAQAAhwEAAIkBAACLAQAAjgEAAJEBAACTAQAAlAEAAJYBAACYAQAAnAEAAJ0BAACfAQAAoAEAAKIBAACiAQAApAEAAKQBAACmAQAApwEAAKkBAACpAQAArAEAAKwBAACuAQAArwEAALEBAACzAQAAtQEAALUBAAC3AQAAuAEAALwBAAC8AQAAxAEAAMUBAADHAQAAyAEAAMoBAADLAQAAzQEAAM0BAADPAQAAzwEAANEBAADRAQAA0wEAANMBAADVAQAA1QEAANcBAADXAQAA2QEAANkBAADbAQAA2wEAAN4BAADeAQAA4AEAAOABAADiAQAA4gEAAOQBAADkAQAA5gEAAOYBAADoAQAA6AEAAOoBAADqAQAA7AEAAOwBAADuAQAA7gEAAPEBAADyAQAA9AEAAPQBAAD2AQAA+AEAAPoBAAD6AQAA/AEAAPwBAAD+AQAA/gEAAAACAAAAAgAAAgIAAAICAAAEAgAABAIAAAYCAAAGAgAACAIAAAgCAAAKAgAACgIAAAwCAAAMAgAADgIAAA4CAAAQAgAAEAIAABICAAASAgAAFAIAABQCAAAWAgAAFgIAABgCAAAYAgAAGgIAABoCAAAcAgAAHAIAAB4CAAAeAgAAIAIAACACAAAiAgAAIgIAACQCAAAkAgAAJgIAACYCAAAoAgAAKAIAACoCAAAqAgAALAIAACwCAAAuAgAALgIAADACAAAwAgAAMgIAADICAAA6AgAAOwIAAD0CAAA+AgAAQQIAAEECAABDAgAARgIAAEgCAABIAgAASgIAAEoCAABMAgAATAIAAE4CAABOAgAARQMAAEUDAABwAwAAcAMAAHIDAAByAwAAdgMAAHYDAAB/AwAAfwMAAIYDAACGAwAAiAMAAIoDAACMAwAAjAMAAI4DAACPAwAAkQMAAKEDAACjAwAAqwMAAMIDAADCAwAAzwMAANEDAADVAwAA1gMAANgDAADYAwAA2gMAANoDAADcAwAA3AMAAN4DAADeAwAA4AMAAOADAADiAwAA4gMAAOQDAADkAwAA5gMAAOYDAADoAwAA6AMAAOoDAADqAwAA7AMAAOwDAADuAwAA7gMAAPADAADxAwAA9AMAAPUDAAD3AwAA9wMAAPkDAAD6AwAA/QMAAC8EAABgBAAAYAQAAGIEAABiBAAAZAQAAGQEAABmBAAAZgQAAGgEAABoBAAAagQAAGoEAABsBAAAbAQAAG4EAABuBAAAcAQAAHAEAAByBAAAcgQAAHQEAAB0BAAAdgQAAHYEAAB4BAAAeAQAAHoEAAB6BAAAfAQAAHwEAAB+BAAAfgQAAIAEAACABAAAigQAAIoEAACMBAAAjAQAAI4EAACOBAAAkAQAAJAEAACSBAAAkgQAAJQEAACUBAAAlgQAAJYEAACYBAAAmAQAAJoEAACaBAAAnAQAAJwEAACeBAAAngQAAKAEAACgBAAAogQAAKIEAACkBAAApAQAAKYEAACmBAAAqAQAAKgEAACqBAAAqgQAAKwEAACsBAAArgQAAK4EAACwBAAAsAQAALIEAACyBAAAtAQAALQEAAC2BAAAtgQAALgEAAC4BAAAugQAALoEAAC8BAAAvAQAAL4EAAC+BAAAwAQAAMEEAADDBAAAwwQAAMUEAADFBAAAxwQAAMcEAADJBAAAyQQAAMsEAADLBAAAzQQAAM0EAADQBAAA0AQAANIEAADSBAAA1AQAANQEAADWBAAA1gQAANgEAADYBAAA2gQAANoEAADcBAAA3AQAAN4EAADeBAAA4AQAAOAEAADiBAAA4gQAAOQEAADkBAAA5gQAAOYEAADoBAAA6AQAAOoEAADqBAAA7AQAAOwEAADuBAAA7gQAAPAEAADwBAAA8gQAAPIEAAD0BAAA9AQAAPYEAAD2BAAA+AQAAPgEAAD6BAAA+gQAAPwEAAD8BAAA/gQAAP4EAAAABQAAAAUAAAIFAAACBQAABAUAAAQFAAAGBQAABgUAAAgFAAAIBQAACgUAAAoFAAAMBQAADAUAAA4FAAAOBQAAEAUAABAFAAASBQAAEgUAABQFAAAUBQAAFgUAABYFAAAYBQAAGAUAABoFAAAaBQAAHAUAABwFAAAeBQAAHgUAACAFAAAgBQAAIgUAACIFAAAkBQAAJAUAACYFAAAmBQAAKAUAACgFAAAqBQAAKgUAACwFAAAsBQAALgUAAC4FAAAxBQAAVgUAAIcFAACHBQAAoBAAAMUQAADHEAAAxxAAAM0QAADNEAAA+BMAAP0TAACAHAAAiRwAAJAcAAC6HAAAvRwAAL8cAAAAHgAAAB4AAAIeAAACHgAABB4AAAQeAAAGHgAABh4AAAgeAAAIHgAACh4AAAoeAAAMHgAADB4AAA4eAAAOHgAAEB4AABAeAAASHgAAEh4AABQeAAAUHgAAFh4AABYeAAAYHgAAGB4AABoeAAAaHgAAHB4AABweAAAeHgAAHh4AACAeAAAgHgAAIh4AACIeAAAkHgAAJB4AACYeAAAmHgAAKB4AACgeAAAqHgAAKh4AACweAAAsHgAALh4AAC4eAAAwHgAAMB4AADIeAAAyHgAANB4AADQeAAA2HgAANh4AADgeAAA4HgAAOh4AADoeAAA8HgAAPB4AAD4eAAA+HgAAQB4AAEAeAABCHgAAQh4AAEQeAABEHgAARh4AAEYeAABIHgAASB4AAEoeAABKHgAATB4AAEweAABOHgAATh4AAFAeAABQHgAAUh4AAFIeAABUHgAAVB4AAFYeAABWHgAAWB4AAFgeAABaHgAAWh4AAFweAABcHgAAXh4AAF4eAABgHgAAYB4AAGIeAABiHgAAZB4AAGQeAABmHgAAZh4AAGgeAABoHgAAah4AAGoeAABsHgAAbB4AAG4eAABuHgAAcB4AAHAeAAByHgAAch4AAHQeAAB0HgAAdh4AAHYeAAB4HgAAeB4AAHoeAAB6HgAAfB4AAHweAAB+HgAAfh4AAIAeAACAHgAAgh4AAIIeAACEHgAAhB4AAIYeAACGHgAAiB4AAIgeAACKHgAAih4AAIweAACMHgAAjh4AAI4eAACQHgAAkB4AAJIeAACSHgAAlB4AAJQeAACaHgAAmx4AAJ4eAACeHgAAoB4AAKAeAACiHgAAoh4AAKQeAACkHgAAph4AAKYeAACoHgAAqB4AAKoeAACqHgAArB4AAKweAACuHgAArh4AALAeAACwHgAAsh4AALIeAAC0HgAAtB4AALYeAAC2HgAAuB4AALgeAAC6HgAAuh4AALweAAC8HgAAvh4AAL4eAADAHgAAwB4AAMIeAADCHgAAxB4AAMQeAADGHgAAxh4AAMgeAADIHgAAyh4AAMoeAADMHgAAzB4AAM4eAADOHgAA0B4AANAeAADSHgAA0h4AANQeAADUHgAA1h4AANYeAADYHgAA2B4AANoeAADaHgAA3B4AANweAADeHgAA3h4AAOAeAADgHgAA4h4AAOIeAADkHgAA5B4AAOYeAADmHgAA6B4AAOgeAADqHgAA6h4AAOweAADsHgAA7h4AAO4eAADwHgAA8B4AAPIeAADyHgAA9B4AAPQeAAD2HgAA9h4AAPgeAAD4HgAA+h4AAPoeAAD8HgAA/B4AAP4eAAD+HgAACB8AAA8fAAAYHwAAHR8AACgfAAAvHwAAOB8AAD8fAABIHwAATR8AAFkfAABZHwAAWx8AAFsfAABdHwAAXR8AAF8fAABfHwAAaB8AAG8fAACAHwAArx8AALIfAAC0HwAAtx8AALwfAADCHwAAxB8AAMcfAADMHwAA2B8AANsfAADoHwAA7B8AAPIfAAD0HwAA9x8AAPwfAAAmIQAAJiEAACohAAArIQAAMiEAADIhAABgIQAAbyEAAIMhAACDIQAAtiQAAM8kAAAALAAALywAAGAsAABgLAAAYiwAAGQsAABnLAAAZywAAGksAABpLAAAaywAAGssAABtLAAAcCwAAHIsAAByLAAAdSwAAHUsAAB+LAAAgCwAAIIsAACCLAAAhCwAAIQsAACGLAAAhiwAAIgsAACILAAAiiwAAIosAACMLAAAjCwAAI4sAACOLAAAkCwAAJAsAACSLAAAkiwAAJQsAACULAAAliwAAJYsAACYLAAAmCwAAJosAACaLAAAnCwAAJwsAACeLAAAniwAAKAsAACgLAAAoiwAAKIsAACkLAAApCwAAKYsAACmLAAAqCwAAKgsAACqLAAAqiwAAKwsAACsLAAAriwAAK4sAACwLAAAsCwAALIsAACyLAAAtCwAALQsAAC2LAAAtiwAALgsAAC4LAAAuiwAALosAAC8LAAAvCwAAL4sAAC+LAAAwCwAAMAsAADCLAAAwiwAAMQsAADELAAAxiwAAMYsAADILAAAyCwAAMosAADKLAAAzCwAAMwsAADOLAAAziwAANAsAADQLAAA0iwAANIsAADULAAA1CwAANYsAADWLAAA2CwAANgsAADaLAAA2iwAANwsAADcLAAA3iwAAN4sAADgLAAA4CwAAOIsAADiLAAA6ywAAOssAADtLAAA7SwAAPIsAADyLAAAQKYAAECmAABCpgAAQqYAAESmAABEpgAARqYAAEamAABIpgAASKYAAEqmAABKpgAATKYAAEymAABOpgAATqYAAFCmAABQpgAAUqYAAFKmAABUpgAAVKYAAFamAABWpgAAWKYAAFimAABapgAAWqYAAFymAABcpgAAXqYAAF6mAABgpgAAYKYAAGKmAABipgAAZKYAAGSmAABmpgAAZqYAAGimAABopgAAaqYAAGqmAABspgAAbKYAAICmAACApgAAgqYAAIKmAACEpgAAhKYAAIamAACGpgAAiKYAAIimAACKpgAAiqYAAIymAACMpgAAjqYAAI6mAACQpgAAkKYAAJKmAACSpgAAlKYAAJSmAACWpgAAlqYAAJimAACYpgAAmqYAAJqmAAAipwAAIqcAACSnAAAkpwAAJqcAACanAAAopwAAKKcAACqnAAAqpwAALKcAACynAAAupwAALqcAADKnAAAypwAANKcAADSnAAA2pwAANqcAADinAAA4pwAAOqcAADqnAAA8pwAAPKcAAD6nAAA+pwAAQKcAAECnAABCpwAAQqcAAESnAABEpwAARqcAAEanAABIpwAASKcAAEqnAABKpwAATKcAAEynAABOpwAATqcAAFCnAABQpwAAUqcAAFKnAABUpwAAVKcAAFanAABWpwAAWKcAAFinAABapwAAWqcAAFynAABcpwAAXqcAAF6nAABgpwAAYKcAAGKnAABipwAAZKcAAGSnAABmpwAAZqcAAGinAABopwAAaqcAAGqnAABspwAAbKcAAG6nAABupwAAeacAAHmnAAB7pwAAe6cAAH2nAAB+pwAAgKcAAICnAACCpwAAgqcAAISnAACEpwAAhqcAAIanAACLpwAAi6cAAI2nAACNpwAAkKcAAJCnAACSpwAAkqcAAJanAACWpwAAmKcAAJinAACapwAAmqcAAJynAACcpwAAnqcAAJ6nAACgpwAAoKcAAKKnAACipwAApKcAAKSnAACmpwAApqcAAKinAACopwAAqqcAAK6nAACwpwAAtKcAALanAAC2pwAAuKcAALinAAC6pwAAuqcAALynAAC8pwAAvqcAAL6nAADApwAAwKcAAMKnAADCpwAAxKcAAMenAADJpwAAyacAAMunAADMpwAA0KcAANCnAADWpwAA1qcAANinAADYpwAA2qcAANqnAADcpwAA3KcAAPWnAAD1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AQAArgEAAK8BAACxAQAAswEAALUBAAC1AQAAtwEAALgBAAC8AQAAvAEAAMQBAADFAQAAxwEAAMgBAADKAQAAywEAAM0BAADNAQAAzwEAAM8BAADRAQAA0QEAANMBAADTAQAA1QEAANUBAADXAQAA1wEAANkBAADZAQAA2wEAANsBAADeAQAA3gEAAOABAADgAQAA4gEAAOIBAADkAQAA5AEAAOYBAADmAQAA6AEAAOgBAADqAQAA6gEAAOwBAADsAQAA7gEAAO4BAADxAQAA8gEAAPQBAAD0AQAA9gEAAPgBAAD6AQAA+gEAAPwBAAD8AQAA/gEAAP4BAAAAAgAAAAIAAAICAAACAgAABAIAAAQCAAAGAgAABgIAAAgCAAAIAgAACgIAAAoCAAAMAgAADAIAAA4CAAAOAgAAEAIAABACAAASAgAAEgIAABQCAAAUAgAAFgIAABYCAAAYAgAAGAIAABoCAAAaAgAAHAIAABwCAAAeAgAAHgIAACACAAAgAgAAIgIAACICAAAkAgAAJAIAACYCAAAmAgAAKAIAACgCAAAqAgAAKgIAACwCAAAsAgAALgIAAC4CAAAwAgAAMAIAADICAAAyAgAAOgIAADsCAAA9AgAAPgIAAEECAABBAgAAQwIAAEYCAABIAgAASAIAAEoCAABKAgAATAIAAEwCAABOAgAATgIAAHADAABwAwAAcgMAAHIDAAB2AwAAdgMAAH8DAAB/AwAAhgMAAIYDAACIAwAAigMAAIwDAACMAwAAjgMAAI8DAACRAwAAoQMAAKMDAACrAwAAzwMAAM8DAADYAwAA2AMAANoDAADaAwAA3AMAANwDAADeAwAA3gMAAOADAADgAwAA4gMAAOIDAADkAwAA5AMAAOYDAADmAwAA6AMAAOgDAADqAwAA6gMAAOwDAADsAwAA7gMAAO4DAAD0AwAA9AMAAPcDAAD3AwAA+QMAAPoDAAD9AwAALwQAAGAEAABgBAAAYgQAAGIEAABkBAAAZAQAAGYEAABmBAAAaAQAAGgEAABqBAAAagQAAGwEAABsBAAAbgQAAG4EAABwBAAAcAQAAHIEAAByBAAAdAQAAHQEAAB2BAAAdgQAAHgEAAB4BAAAegQAAHoEAAB8BAAAfAQAAH4EAAB+BAAAgAQAAIAEAACKBAAAigQAAIwEAACMBAAAjgQAAI4EAACQBAAAkAQAAJIEAACSBAAAlAQAAJQEAACWBAAAlgQAAJgEAACYBAAAmgQAAJoEAACcBAAAnAQAAJ4EAACeBAAAoAQAAKAEAACiBAAAogQAAKQEAACkBAAApgQAAKYEAACoBAAAqAQAAKoEAACqBAAArAQAAKwEAACuBAAArgQAALAEAACwBAAAsgQAALIEAAC0BAAAtAQAALYEAAC2BAAAuAQAALgEAAC6BAAAugQAALwEAAC8BAAAvgQAAL4EAADABAAAwQQAAMMEAADDBAAAxQQAAMUEAADHBAAAxwQAAMkEAADJBAAAywQAAMsEAADNBAAAzQQAANAEAADQBAAA0gQAANIEAADUBAAA1AQAANYEAADWBAAA2AQAANgEAADaBAAA2gQAANwEAADcBAAA3gQAAN4EAADgBAAA4AQAAOIEAADiBAAA5AQAAOQEAADmBAAA5gQAAOgEAADoBAAA6gQAAOoEAADsBAAA7AQAAO4EAADuBAAA8AQAAPAEAADyBAAA8gQAAPQEAAD0BAAA9gQAAPYEAAD4BAAA+AQAAPoEAAD6BAAA/AQAAPwEAAD+BAAA/gQAAAAFAAAABQAAAgUAAAIFAAAEBQAABAUAAAYFAAAGBQAACAUAAAgFAAAKBQAACgUAAAwFAAAMBQAADgUAAA4FAAAQBQAAEAUAABIFAAASBQAAFAUAABQFAAAWBQAAFgUAABgFAAAYBQAAGgUAABoFAAAcBQAAHAUAAB4FAAAeBQAAIAUAACAFAAAiBQAAIgUAACQFAAAkBQAAJgUAACYFAAAoBQAAKAUAACoFAAAqBQAALAUAACwFAAAuBQAALgUAADEFAABWBQAAoBAAAMUQAADHEAAAxxAAAM0QAADNEAAAoBMAAPUTAACJHAAAiRwAAJAcAAC6HAAAvRwAAL8cAAAAHgAAAB4AAAIeAAACHgAABB4AAAQeAAAGHgAABh4AAAgeAAAIHgAACh4AAAoeAAAMHgAADB4AAA4eAAAOHgAAEB4AABAeAAASHgAAEh4AABQeAAAUHgAAFh4AABYeAAAYHgAAGB4AABoeAAAaHgAAHB4AABweAAAeHgAAHh4AACAeAAAgHgAAIh4AACIeAAAkHgAAJB4AACYeAAAmHgAAKB4AACgeAAAqHgAAKh4AACweAAAsHgAALh4AAC4eAAAwHgAAMB4AADIeAAAyHgAANB4AADQeAAA2HgAANh4AADgeAAA4HgAAOh4AADoeAAA8HgAAPB4AAD4eAAA+HgAAQB4AAEAeAABCHgAAQh4AAEQeAABEHgAARh4AAEYeAABIHgAASB4AAEoeAABKHgAATB4AAEweAABOHgAATh4AAFAeAABQHgAAUh4AAFIeAABUHgAAVB4AAFYeAABWHgAAWB4AAFgeAABaHgAAWh4AAFweAABcHgAAXh4AAF4eAABgHgAAYB4AAGIeAABiHgAAZB4AAGQeAABmHgAAZh4AAGgeAABoHgAAah4AAGoeAABsHgAAbB4AAG4eAABuHgAAcB4AAHAeAAByHgAAch4AAHQeAAB0HgAAdh4AAHYeAAB4HgAAeB4AAHoeAAB6HgAAfB4AAHweAAB+HgAAfh4AAIAeAACAHgAAgh4AAIIeAACEHgAAhB4AAIYeAACGHgAAiB4AAIgeAACKHgAAih4AAIweAACMHgAAjh4AAI4eAACQHgAAkB4AAJIeAACSHgAAlB4AAJQeAACeHgAAnh4AAKAeAACgHgAAoh4AAKIeAACkHgAApB4AAKYeAACmHgAAqB4AAKgeAACqHgAAqh4AAKweAACsHgAArh4AAK4eAACwHgAAsB4AALIeAACyHgAAtB4AALQeAAC2HgAAth4AALgeAAC4HgAAuh4AALoeAAC8HgAAvB4AAL4eAAC+HgAAwB4AAMAeAADCHgAAwh4AAMQeAADEHgAAxh4AAMYeAADIHgAAyB4AAMoeAADKHgAAzB4AAMweAADOHgAAzh4AANAeAADQHgAA0h4AANIeAADUHgAA1B4AANYeAADWHgAA2B4AANgeAADaHgAA2h4AANweAADcHgAA3h4AAN4eAADgHgAA4B4AAOIeAADiHgAA5B4AAOQeAADmHgAA5h4AAOgeAADoHgAA6h4AAOoeAADsHgAA7B4AAO4eAADuHgAA8B4AAPAeAADyHgAA8h4AAPQeAAD0HgAA9h4AAPYeAAD4HgAA+B4AAPoeAAD6HgAA/B4AAPweAAD+HgAA/h4AAAgfAAAPHwAAGB8AAB0fAAAoHwAALx8AADgfAAA/HwAASB8AAE0fAABZHwAAWR8AAFsfAABbHwAAXR8AAF0fAABfHwAAXx8AAGgfAABvHwAAiB8AAI8fAACYHwAAnx8AAKgfAACvHwAAuB8AALwfAADIHwAAzB8AANgfAADbHwAA6B8AAOwfAAD4HwAA/B8AACYhAAAmIQAAKiEAACshAAAyIQAAMiEAAGAhAABvIQAAgyEAAIMhAAC2JAAAzyQAAAAsAAAvLAAAYCwAAGAsAABiLAAAZCwAAGcsAABnLAAAaSwAAGksAABrLAAAaywAAG0sAABwLAAAciwAAHIsAAB1LAAAdSwAAH4sAACALAAAgiwAAIIsAACELAAAhCwAAIYsAACGLAAAiCwAAIgsAACKLAAAiiwAAIwsAACMLAAAjiwAAI4sAACQLAAAkCwAAJIsAACSLAAAlCwAAJQsAACWLAAAliwAAJgsAACYLAAAmiwAAJosAACcLAAAnCwAAJ4sAACeLAAAoCwAAKAsAACiLAAAoiwAAKQsAACkLAAApiwAAKYsAACoLAAAqCwAAKosAACqLAAArCwAAKwsAACuLAAAriwAALAsAACwLAAAsiwAALIsAAC0LAAAtCwAALYsAAC2LAAAuCwAALgsAAC6LAAAuiwAALwsAAC8LAAAviwAAL4sAADALAAAwCwAAMIsAADCLAAAxCwAAMQsAADGLAAAxiwAAMgsAADILAAAyiwAAMosAADMLAAAzCwAAM4sAADOLAAA0CwAANAsAADSLAAA0iwAANQsAADULAAA1iwAANYsAADYLAAA2CwAANosAADaLAAA3CwAANwsAADeLAAA3iwAAOAsAADgLAAA4iwAAOIsAADrLAAA6ywAAO0sAADtLAAA8iwAAPIsAABApgAAQKYAAEKmAABCpgAARKYAAESmAABGpgAARqYAAEimAABIpgAASqYAAEqmAABMpgAATKYAAE6mAABOpgAAUKYAAFCmAABSpgAAUqYAAFSmAABUpgAAVqYAAFamAABYpgAAWKYAAFqmAABapgAAXKYAAFymAABepgAAXqYAAGCmAABgpgAAYqYAAGKmAABkpgAAZKYAAGamAABmpgAAaKYAAGimAABqpgAAaqYAAGymAABspgAAgKYAAICmAACCpgAAgqYAAISmAACEpgAAhqYAAIamAACIpgAAiKYAAIqmAACKpgAAjKYAAIymAACOpgAAjqYAAJCmAACQpgAAkqYAAJKmAACUpgAAlKYAAJamAACWpgAAmKYAAJimAACapgAAmqYAACKnAAAipwAAJKcAACSnAAAmpwAAJqcAACinAAAopwAAKqcAACqnAAAspwAALKcAAC6nAAAupwAAMqcAADKnAAA0pwAANKcAADanAAA2pwAAOKcAADinAAA6pwAAOqcAADynAAA8pwAAPqcAAD6nAABApwAAQKcAAEKnAABCpwAARKcAAESnAABGpwAARqcAAEinAABIpwAASqcAAEqnAABMpwAATKcAAE6nAABOpwAAUKcAAFCnAABSpwAAUqcAAFSnAABUpwAAVqcAAFanAABYpwAAWKcAAFqnAABapwAAXKcAAFynAABepwAAXqcAAGCnAABgpwAAYqcAAGKnAABkpwAAZKcAAGanAABmpwAAaKcAAGinAABqpwAAaqcAAGynAABspwAAbqcAAG6nAAB5pwAAeacAAHunAAB7pwAAfacAAH6nAACApwAAgKcAAIKnAACCpwAAhKcAAISnAACGpwAAhqcAAIunAACLpwAAjacAAI2nAACQpwAAkKcAAJKnAACSpwAAlqcAAJanAACYpwAAmKcAAJqnAACapwAAnKcAAJynAACepwAAnqcAAKCnAACgpwAAoqcAAKKnAACkpwAApKcAAKanAACmpwAAqKcAAKinAACqpwAArqcAALCnAAC0pwAAtqcAALanAAC4pwAAuKcAALqnAAC6pwAAvKcAALynAAC+pwAAvqcAAMCnAADApwAAwqcAAMKnAADEpwAAx6cAAMmnAADJpwAAy6cAAMynAADQpwAA0KcAANanAADWpwAA2KcAANinAADapwAA2qcAANynAADcpwAA9acAAPWnAAAh/wAAOv8AAAAEAQAnBAEAsAQBANMEAQBwBQEAegUBAHwFAQCKBQEAjAUBAJIFAQCUBQEAlQUBAIAMAQCyDAEAUA0BAGUNAQCgGAEAvxgBAEBuAQBfbgEAAOkBACHpAQBhAAAAegAAALUAAAC1AAAA3wAAAPYAAAD4AAAA/wAAAAEBAAABAQAAAwEAAAMBAAAFAQAABQEAAAcBAAAHAQAACQEAAAkBAAALAQAACwEAAA0BAAANAQAADwEAAA8BAAARAQAAEQEAABMBAAATAQAAFQEAABUBAAAXAQAAFwEAABkBAAAZAQAAGwEAABsBAAAdAQAAHQEAAB8BAAAfAQAAIQEAACEBAAAjAQAAIwEAACUBAAAlAQAAJwEAACcBAAApAQAAKQEAACsBAAArAQAALQEAAC0BAAAvAQAALwEAADEBAAAxAQAAMwEAADMBAAA1AQAANQEAADcBAAA3AQAAOgEAADoBAAA8AQAAPAEAAD4BAAA+AQAAQAEAAEABAABCAQAAQgEAAEQBAABEAQAARgEAAEYBAABIAQAASQEAAEsBAABLAQAATQEAAE0BAABPAQAATwEAAFEBAABRAQAAUwEAAFMBAABVAQAAVQEAAFcBAABXAQAAWQEAAFkBAABbAQAAWwEAAF0BAABdAQAAXwEAAF8BAABhAQAAYQEAAGMBAABjAQAAZQEAAGUBAABnAQAAZwEAAGkBAABpAQAAawEAAGsBAABtAQAAbQEAAG8BAABvAQAAcQEAAHEBAABzAQAAcwEAAHUBAAB1AQAAdwEAAHcBAAB6AQAAegEAAHwBAAB8AQAAfgEAAIABAACDAQAAgwEAAIUBAACFAQAAiAEAAIgBAACMAQAAjAEAAJIBAACSAQAAlQEAAJUBAACZAQAAmwEAAJ4BAACeAQAAoQEAAKEBAACjAQAAowEAAKUBAAClAQAAqAEAAKgBAACtAQAArQEAALABAACwAQAAtAEAALQBAAC2AQAAtgEAALkBAAC5AQAAvQEAAL0BAAC/AQAAvwEAAMQBAADEAQAAxgEAAMcBAADJAQAAygEAAMwBAADMAQAAzgEAAM4BAADQAQAA0AEAANIBAADSAQAA1AEAANQBAADWAQAA1gEAANgBAADYAQAA2gEAANoBAADcAQAA3QEAAN8BAADfAQAA4QEAAOEBAADjAQAA4wEAAOUBAADlAQAA5wEAAOcBAADpAQAA6QEAAOsBAADrAQAA7QEAAO0BAADvAQAA8QEAAPMBAADzAQAA9QEAAPUBAAD5AQAA+QEAAPsBAAD7AQAA/QEAAP0BAAD/AQAA/wEAAAECAAABAgAAAwIAAAMCAAAFAgAABQIAAAcCAAAHAgAACQIAAAkCAAALAgAACwIAAA0CAAANAgAADwIAAA8CAAARAgAAEQIAABMCAAATAgAAFQIAABUCAAAXAgAAFwIAABkCAAAZAgAAGwIAABsCAAAdAgAAHQIAAB8CAAAfAgAAIwIAACMCAAAlAgAAJQIAACcCAAAnAgAAKQIAACkCAAArAgAAKwIAAC0CAAAtAgAALwIAAC8CAAAxAgAAMQIAADMCAAAzAgAAPAIAADwCAAA/AgAAQAIAAEICAABCAgAARwIAAEcCAABJAgAASQIAAEsCAABLAgAATQIAAE0CAABPAgAAVAIAAFYCAABXAgAAWQIAAFkCAABbAgAAXAIAAGACAABhAgAAYwIAAGYCAABoAgAAbAIAAG8CAABvAgAAcQIAAHICAAB1AgAAdQIAAH0CAAB9AgAAgAIAAIACAACCAgAAgwIAAIcCAACMAgAAkgIAAJICAACdAgAAngIAAEUDAABFAwAAcQMAAHEDAABzAwAAcwMAAHcDAAB3AwAAewMAAH0DAACQAwAAkAMAAKwDAADOAwAA0AMAANEDAADVAwAA1wMAANkDAADZAwAA2wMAANsDAADdAwAA3QMAAN8DAADfAwAA4QMAAOEDAADjAwAA4wMAAOUDAADlAwAA5wMAAOcDAADpAwAA6QMAAOsDAADrAwAA7QMAAO0DAADvAwAA8wMAAPUDAAD1AwAA+AMAAPgDAAD7AwAA+wMAADAEAABfBAAAYQQAAGEEAABjBAAAYwQAAGUEAABlBAAAZwQAAGcEAABpBAAAaQQAAGsEAABrBAAAbQQAAG0EAABvBAAAbwQAAHEEAABxBAAAcwQAAHMEAAB1BAAAdQQAAHcEAAB3BAAAeQQAAHkEAAB7BAAAewQAAH0EAAB9BAAAfwQAAH8EAACBBAAAgQQAAIsEAACLBAAAjQQAAI0EAACPBAAAjwQAAJEEAACRBAAAkwQAAJMEAACVBAAAlQQAAJcEAACXBAAAmQQAAJkEAACbBAAAmwQAAJ0EAACdBAAAnwQAAJ8EAAChBAAAoQQAAKMEAACjBAAApQQAAKUEAACnBAAApwQAAKkEAACpBAAAqwQAAKsEAACtBAAArQQAAK8EAACvBAAAsQQAALEEAACzBAAAswQAALUEAAC1BAAAtwQAALcEAAC5BAAAuQQAALsEAAC7BAAAvQQAAL0EAAC/BAAAvwQAAMIEAADCBAAAxAQAAMQEAADGBAAAxgQAAMgEAADIBAAAygQAAMoEAADMBAAAzAQAAM4EAADPBAAA0QQAANEEAADTBAAA0wQAANUEAADVBAAA1wQAANcEAADZBAAA2QQAANsEAADbBAAA3QQAAN0EAADfBAAA3wQAAOEEAADhBAAA4wQAAOMEAADlBAAA5QQAAOcEAADnBAAA6QQAAOkEAADrBAAA6wQAAO0EAADtBAAA7wQAAO8EAADxBAAA8QQAAPMEAADzBAAA9QQAAPUEAAD3BAAA9wQAAPkEAAD5BAAA+wQAAPsEAAD9BAAA/QQAAP8EAAD/BAAAAQUAAAEFAAADBQAAAwUAAAUFAAAFBQAABwUAAAcFAAAJBQAACQUAAAsFAAALBQAADQUAAA0FAAAPBQAADwUAABEFAAARBQAAEwUAABMFAAAVBQAAFQUAABcFAAAXBQAAGQUAABkFAAAbBQAAGwUAAB0FAAAdBQAAHwUAAB8FAAAhBQAAIQUAACMFAAAjBQAAJQUAACUFAAAnBQAAJwUAACkFAAApBQAAKwUAACsFAAAtBQAALQUAAC8FAAAvBQAAYQUAAIcFAAD4EwAA/RMAAIAcAACIHAAAihwAAIocAAB5HQAAeR0AAH0dAAB9HQAAjh0AAI4dAAABHgAAAR4AAAMeAAADHgAABR4AAAUeAAAHHgAABx4AAAkeAAAJHgAACx4AAAseAAANHgAADR4AAA8eAAAPHgAAER4AABEeAAATHgAAEx4AABUeAAAVHgAAFx4AABceAAAZHgAAGR4AABseAAAbHgAAHR4AAB0eAAAfHgAAHx4AACEeAAAhHgAAIx4AACMeAAAlHgAAJR4AACceAAAnHgAAKR4AACkeAAArHgAAKx4AAC0eAAAtHgAALx4AAC8eAAAxHgAAMR4AADMeAAAzHgAANR4AADUeAAA3HgAANx4AADkeAAA5HgAAOx4AADseAAA9HgAAPR4AAD8eAAA/HgAAQR4AAEEeAABDHgAAQx4AAEUeAABFHgAARx4AAEceAABJHgAASR4AAEseAABLHgAATR4AAE0eAABPHgAATx4AAFEeAABRHgAAUx4AAFMeAABVHgAAVR4AAFceAABXHgAAWR4AAFkeAABbHgAAWx4AAF0eAABdHgAAXx4AAF8eAABhHgAAYR4AAGMeAABjHgAAZR4AAGUeAABnHgAAZx4AAGkeAABpHgAAax4AAGseAABtHgAAbR4AAG8eAABvHgAAcR4AAHEeAABzHgAAcx4AAHUeAAB1HgAAdx4AAHceAAB5HgAAeR4AAHseAAB7HgAAfR4AAH0eAAB/HgAAfx4AAIEeAACBHgAAgx4AAIMeAACFHgAAhR4AAIceAACHHgAAiR4AAIkeAACLHgAAix4AAI0eAACNHgAAjx4AAI8eAACRHgAAkR4AAJMeAACTHgAAlR4AAJseAAChHgAAoR4AAKMeAACjHgAApR4AAKUeAACnHgAApx4AAKkeAACpHgAAqx4AAKseAACtHgAArR4AAK8eAACvHgAAsR4AALEeAACzHgAAsx4AALUeAAC1HgAAtx4AALceAAC5HgAAuR4AALseAAC7HgAAvR4AAL0eAAC/HgAAvx4AAMEeAADBHgAAwx4AAMMeAADFHgAAxR4AAMceAADHHgAAyR4AAMkeAADLHgAAyx4AAM0eAADNHgAAzx4AAM8eAADRHgAA0R4AANMeAADTHgAA1R4AANUeAADXHgAA1x4AANkeAADZHgAA2x4AANseAADdHgAA3R4AAN8eAADfHgAA4R4AAOEeAADjHgAA4x4AAOUeAADlHgAA5x4AAOceAADpHgAA6R4AAOseAADrHgAA7R4AAO0eAADvHgAA7x4AAPEeAADxHgAA8x4AAPMeAAD1HgAA9R4AAPceAAD3HgAA+R4AAPkeAAD7HgAA+x4AAP0eAAD9HgAA/x4AAAcfAAAQHwAAFR8AACAfAAAnHwAAMB8AADcfAABAHwAARR8AAFAfAABXHwAAYB8AAGcfAABwHwAAfR8AAIAfAACHHwAAkB8AAJcfAACgHwAApx8AALAfAAC0HwAAth8AALcfAAC+HwAAvh8AAMIfAADEHwAAxh8AAMcfAADQHwAA0x8AANYfAADXHwAA4B8AAOcfAADyHwAA9B8AAPYfAAD3HwAATiEAAE4hAABwIQAAfyEAAIQhAACEIQAA0CQAAOkkAAAwLAAAXywAAGEsAABhLAAAZSwAAGYsAABoLAAAaCwAAGosAABqLAAAbCwAAGwsAABzLAAAcywAAHYsAAB2LAAAgSwAAIEsAACDLAAAgywAAIUsAACFLAAAhywAAIcsAACJLAAAiSwAAIssAACLLAAAjSwAAI0sAACPLAAAjywAAJEsAACRLAAAkywAAJMsAACVLAAAlSwAAJcsAACXLAAAmSwAAJksAACbLAAAmywAAJ0sAACdLAAAnywAAJ8sAAChLAAAoSwAAKMsAACjLAAApSwAAKUsAACnLAAApywAAKksAACpLAAAqywAAKssAACtLAAArSwAAK8sAACvLAAAsSwAALEsAACzLAAAsywAALUsAAC1LAAAtywAALcsAAC5LAAAuSwAALssAAC7LAAAvSwAAL0sAAC/LAAAvywAAMEsAADBLAAAwywAAMMsAADFLAAAxSwAAMcsAADHLAAAySwAAMksAADLLAAAyywAAM0sAADNLAAAzywAAM8sAADRLAAA0SwAANMsAADTLAAA1SwAANUsAADXLAAA1ywAANksAADZLAAA2ywAANssAADdLAAA3SwAAN8sAADfLAAA4SwAAOEsAADjLAAA4ywAAOwsAADsLAAA7iwAAO4sAADzLAAA8ywAAAAtAAAlLQAAJy0AACctAAAtLQAALS0AAEGmAABBpgAAQ6YAAEOmAABFpgAARaYAAEemAABHpgAASaYAAEmmAABLpgAAS6YAAE2mAABNpgAAT6YAAE+mAABRpgAAUaYAAFOmAABTpgAAVaYAAFWmAABXpgAAV6YAAFmmAABZpgAAW6YAAFumAABdpgAAXaYAAF+mAABfpgAAYaYAAGGmAABjpgAAY6YAAGWmAABlpgAAZ6YAAGemAABppgAAaaYAAGumAABrpgAAbaYAAG2mAACBpgAAgaYAAIOmAACDpgAAhaYAAIWmAACHpgAAh6YAAImmAACJpgAAi6YAAIumAACNpgAAjaYAAI+mAACPpgAAkaYAAJGmAACTpgAAk6YAAJWmAACVpgAAl6YAAJemAACZpgAAmaYAAJumAACbpgAAI6cAACOnAAAlpwAAJacAACenAAAnpwAAKacAACmnAAArpwAAK6cAAC2nAAAtpwAAL6cAAC+nAAAzpwAAM6cAADWnAAA1pwAAN6cAADenAAA5pwAAOacAADunAAA7pwAAPacAAD2nAAA/pwAAP6cAAEGnAABBpwAAQ6cAAEOnAABFpwAARacAAEenAABHpwAASacAAEmnAABLpwAAS6cAAE2nAABNpwAAT6cAAE+nAABRpwAAUacAAFOnAABTpwAAVacAAFWnAABXpwAAV6cAAFmnAABZpwAAW6cAAFunAABdpwAAXacAAF+nAABfpwAAYacAAGGnAABjpwAAY6cAAGWnAABlpwAAZ6cAAGenAABppwAAaacAAGunAABrpwAAbacAAG2nAABvpwAAb6cAAHqnAAB6pwAAfKcAAHynAAB/pwAAf6cAAIGnAACBpwAAg6cAAIOnAACFpwAAhacAAIenAACHpwAAjKcAAIynAACRpwAAkacAAJOnAACUpwAAl6cAAJenAACZpwAAmacAAJunAACbpwAAnacAAJ2nAACfpwAAn6cAAKGnAAChpwAAo6cAAKOnAAClpwAApacAAKenAACnpwAAqacAAKmnAAC1pwAAtacAALenAAC3pwAAuacAALmnAAC7pwAAu6cAAL2nAAC9pwAAv6cAAL+nAADBpwAAwacAAMOnAADDpwAAyKcAAMinAADKpwAAyqcAAM2nAADNpwAA0acAANGnAADXpwAA16cAANmnAADZpwAA26cAANunAAD2pwAA9qcAAFOrAABTqwAAcKsAAL+rAAAA+wAABvsAABP7AAAX+wAAQf8AAFr/AAAoBAEATwQBANgEAQD7BAEAlwUBAKEFAQCjBQEAsQUBALMFAQC5BQEAuwUBALwFAQDADAEA8gwBAHANAQCFDQEAwBgBAN8YAQBgbgEAf24BACLpAQBD6QEAYQAAAHoAAAC1AAAAtQAAAN8AAAD2AAAA+AAAAP8AAAABAQAAAQEAAAMBAAADAQAABQEAAAUBAAAHAQAABwEAAAkBAAAJAQAACwEAAAsBAAANAQAADQEAAA8BAAAPAQAAEQEAABEBAAATAQAAEwEAABUBAAAVAQAAFwEAABcBAAAZAQAAGQEAABsBAAAbAQAAHQEAAB0BAAAfAQAAHwEAACEBAAAhAQAAIwEAACMBAAAlAQAAJQEAACcBAAAnAQAAKQEAACkBAAArAQAAKwEAAC0BAAAtAQAALwEAAC8BAAAxAQAAMQEAADMBAAAzAQAANQEAADUBAAA3AQAANwEAADoBAAA6AQAAPAEAADwBAAA+AQAAPgEAAEABAABAAQAAQgEAAEIBAABEAQAARAEAAEYBAABGAQAASAEAAEkBAABLAQAASwEAAE0BAABNAQAATwEAAE8BAABRAQAAUQEAAFMBAABTAQAAVQEAAFUBAABXAQAAVwEAAFkBAABZAQAAWwEAAFsBAABdAQAAXQEAAF8BAABfAQAAYQEAAGEBAABjAQAAYwEAAGUBAABlAQAAZwEAAGcBAABpAQAAaQEAAGsBAABrAQAAbQEAAG0BAABvAQAAbwEAAHEBAABxAQAAcwEAAHMBAAB1AQAAdQEAAHcBAAB3AQAAegEAAHoBAAB8AQAAfAEAAH4BAACAAQAAgwEAAIMBAACFAQAAhQEAAIgBAACIAQAAjAEAAIwBAACSAQAAkgEAAJUBAACVAQAAmQEAAJsBAACeAQAAngEAAKEBAAChAQAAowEAAKMBAAClAQAApQEAAKgBAACoAQAArQEAAK0BAACwAQAAsAEAALQBAAC0AQAAtgEAALYBAAC5AQAAuQEAAL0BAAC9AQAAvwEAAL8BAADFAQAAxgEAAMgBAADJAQAAywEAAMwBAADOAQAAzgEAANABAADQAQAA0gEAANIBAADUAQAA1AEAANYBAADWAQAA2AEAANgBAADaAQAA2gEAANwBAADdAQAA3wEAAN8BAADhAQAA4QEAAOMBAADjAQAA5QEAAOUBAADnAQAA5wEAAOkBAADpAQAA6wEAAOsBAADtAQAA7QEAAO8BAADwAQAA8gEAAPMBAAD1AQAA9QEAAPkBAAD5AQAA+wEAAPsBAAD9AQAA/QEAAP8BAAD/AQAAAQIAAAECAAADAgAAAwIAAAUCAAAFAgAABwIAAAcCAAAJAgAACQIAAAsCAAALAgAADQIAAA0CAAAPAgAADwIAABECAAARAgAAEwIAABMCAAAVAgAAFQIAABcCAAAXAgAAGQIAABkCAAAbAgAAGwIAAB0CAAAdAgAAHwIAAB8CAAAjAgAAIwIAACUCAAAlAgAAJwIAACcCAAApAgAAKQIAACsCAAArAgAALQIAAC0CAAAvAgAALwIAADECAAAxAgAAMwIAADMCAAA8AgAAPAIAAD8CAABAAgAAQgIAAEICAABHAgAARwIAAEkCAABJAgAASwIAAEsCAABNAgAATQIAAE8CAABUAgAAVgIAAFcCAABZAgAAWQIAAFsCAABcAgAAYAIAAGECAABjAgAAZgIAAGgCAABsAgAAbwIAAG8CAABxAgAAcgIAAHUCAAB1AgAAfQIAAH0CAACAAgAAgAIAAIICAACDAgAAhwIAAIwCAACSAgAAkgIAAJ0CAACeAgAARQMAAEUDAABxAwAAcQMAAHMDAABzAwAAdwMAAHcDAAB7AwAAfQMAAJADAACQAwAArAMAAM4DAADQAwAA0QMAANUDAADXAwAA2QMAANkDAADbAwAA2wMAAN0DAADdAwAA3wMAAN8DAADhAwAA4QMAAOMDAADjAwAA5QMAAOUDAADnAwAA5wMAAOkDAADpAwAA6wMAAOsDAADtAwAA7QMAAO8DAADzAwAA9QMAAPUDAAD4AwAA+AMAAPsDAAD7AwAAMAQAAF8EAABhBAAAYQQAAGMEAABjBAAAZQQAAGUEAABnBAAAZwQAAGkEAABpBAAAawQAAGsEAABtBAAAbQQAAG8EAABvBAAAcQQAAHEEAABzBAAAcwQAAHUEAAB1BAAAdwQAAHcEAAB5BAAAeQQAAHsEAAB7BAAAfQQAAH0EAAB/BAAAfwQAAIEEAACBBAAAiwQAAIsEAACNBAAAjQQAAI8EAACPBAAAkQQAAJEEAACTBAAAkwQAAJUEAACVBAAAlwQAAJcEAACZBAAAmQQAAJsEAACbBAAAnQQAAJ0EAACfBAAAnwQAAKEEAAChBAAAowQAAKMEAAClBAAApQQAAKcEAACnBAAAqQQAAKkEAACrBAAAqwQAAK0EAACtBAAArwQAAK8EAACxBAAAsQQAALMEAACzBAAAtQQAALUEAAC3BAAAtwQAALkEAAC5BAAAuwQAALsEAAC9BAAAvQQAAL8EAAC/BAAAwgQAAMIEAADEBAAAxAQAAMYEAADGBAAAyAQAAMgEAADKBAAAygQAAMwEAADMBAAAzgQAAM8EAADRBAAA0QQAANMEAADTBAAA1QQAANUEAADXBAAA1wQAANkEAADZBAAA2wQAANsEAADdBAAA3QQAAN8EAADfBAAA4QQAAOEEAADjBAAA4wQAAOUEAADlBAAA5wQAAOcEAADpBAAA6QQAAOsEAADrBAAA7QQAAO0EAADvBAAA7wQAAPEEAADxBAAA8wQAAPMEAAD1BAAA9QQAAPcEAAD3BAAA+QQAAPkEAAD7BAAA+wQAAP0EAAD9BAAA/wQAAP8EAAABBQAAAQUAAAMFAAADBQAABQUAAAUFAAAHBQAABwUAAAkFAAAJBQAACwUAAAsFAAANBQAADQUAAA8FAAAPBQAAEQUAABEFAAATBQAAEwUAABUFAAAVBQAAFwUAABcFAAAZBQAAGQUAABsFAAAbBQAAHQUAAB0FAAAfBQAAHwUAACEFAAAhBQAAIwUAACMFAAAlBQAAJQUAACcFAAAnBQAAKQUAACkFAAArBQAAKwUAAC0FAAAtBQAALwUAAC8FAABhBQAAhwUAANAQAAD6EAAA/RAAAP8QAAD4EwAA/RMAAIAcAACIHAAAihwAAIocAAB5HQAAeR0AAH0dAAB9HQAAjh0AAI4dAAABHgAAAR4AAAMeAAADHgAABR4AAAUeAAAHHgAABx4AAAkeAAAJHgAACx4AAAseAAANHgAADR4AAA8eAAAPHgAAER4AABEeAAATHgAAEx4AABUeAAAVHgAAFx4AABceAAAZHgAAGR4AABseAAAbHgAAHR4AAB0eAAAfHgAAHx4AACEeAAAhHgAAIx4AACMeAAAlHgAAJR4AACceAAAnHgAAKR4AACkeAAArHgAAKx4AAC0eAAAtHgAALx4AAC8eAAAxHgAAMR4AADMeAAAzHgAANR4AADUeAAA3HgAANx4AADkeAAA5HgAAOx4AADseAAA9HgAAPR4AAD8eAAA/HgAAQR4AAEEeAABDHgAAQx4AAEUeAABFHgAARx4AAEceAABJHgAASR4AAEseAABLHgAATR4AAE0eAABPHgAATx4AAFEeAABRHgAAUx4AAFMeAABVHgAAVR4AAFceAABXHgAAWR4AAFkeAABbHgAAWx4AAF0eAABdHgAAXx4AAF8eAABhHgAAYR4AAGMeAABjHgAAZR4AAGUeAABnHgAAZx4AAGkeAABpHgAAax4AAGseAABtHgAAbR4AAG8eAABvHgAAcR4AAHEeAABzHgAAcx4AAHUeAAB1HgAAdx4AAHceAAB5HgAAeR4AAHseAAB7HgAAfR4AAH0eAAB/HgAAfx4AAIEeAACBHgAAgx4AAIMeAACFHgAAhR4AAIceAACHHgAAiR4AAIkeAACLHgAAix4AAI0eAACNHgAAjx4AAI8eAACRHgAAkR4AAJMeAACTHgAAlR4AAJseAAChHgAAoR4AAKMeAACjHgAApR4AAKUeAACnHgAApx4AAKkeAACpHgAAqx4AAKseAACtHgAArR4AAK8eAACvHgAAsR4AALEeAACzHgAAsx4AALUeAAC1HgAAtx4AALceAAC5HgAAuR4AALseAAC7HgAAvR4AAL0eAAC/HgAAvx4AAMEeAADBHgAAwx4AAMMeAADFHgAAxR4AAMceAADHHgAAyR4AAMkeAADLHgAAyx4AAM0eAADNHgAAzx4AAM8eAADRHgAA0R4AANMeAADTHgAA1R4AANUeAADXHgAA1x4AANkeAADZHgAA2x4AANseAADdHgAA3R4AAN8eAADfHgAA4R4AAOEeAADjHgAA4x4AAOUeAADlHgAA5x4AAOceAADpHgAA6R4AAOseAADrHgAA7R4AAO0eAADvHgAA7x4AAPEeAADxHgAA8x4AAPMeAAD1HgAA9R4AAPceAAD3HgAA+R4AAPkeAAD7HgAA+x4AAP0eAAD9HgAA/x4AAAcfAAAQHwAAFR8AACAfAAAnHwAAMB8AADcfAABAHwAARR8AAFAfAABXHwAAYB8AAGcfAABwHwAAfR8AAIAfAAC0HwAAth8AALcfAAC8HwAAvB8AAL4fAAC+HwAAwh8AAMQfAADGHwAAxx8AAMwfAADMHwAA0B8AANMfAADWHwAA1x8AAOAfAADnHwAA8h8AAPQfAAD2HwAA9x8AAPwfAAD8HwAATiEAAE4hAABwIQAAfyEAAIQhAACEIQAA0CQAAOkkAAAwLAAAXywAAGEsAABhLAAAZSwAAGYsAABoLAAAaCwAAGosAABqLAAAbCwAAGwsAABzLAAAcywAAHYsAAB2LAAAgSwAAIEsAACDLAAAgywAAIUsAACFLAAAhywAAIcsAACJLAAAiSwAAIssAACLLAAAjSwAAI0sAACPLAAAjywAAJEsAACRLAAAkywAAJMsAACVLAAAlSwAAJcsAACXLAAAmSwAAJksAACbLAAAmywAAJ0sAACdLAAAnywAAJ8sAAChLAAAoSwAAKMsAACjLAAApSwAAKUsAACnLAAApywAAKksAACpLAAAqywAAKssAACtLAAArSwAAK8sAACvLAAAsSwAALEsAACzLAAAsywAALUsAAC1LAAAtywAALcsAAC5LAAAuSwAALssAAC7LAAAvSwAAL0sAAC/LAAAvywAAMEsAADBLAAAwywAAMMsAADFLAAAxSwAAMcsAADHLAAAySwAAMksAADLLAAAyywAAM0sAADNLAAAzywAAM8sAADRLAAA0SwAANMsAADTLAAA1SwAANUsAADXLAAA1ywAANksAADZLAAA2ywAANssAADdLAAA3SwAAN8sAADfLAAA4SwAAOEsAADjLAAA4ywAAOwsAADsLAAA7iwAAO4sAADzLAAA8ywAAAAtAAAlLQAAJy0AACctAAAtLQAALS0AAEGmAABBpgAAQ6YAAEOmAABFpgAARaYAAEemAABHpgAASaYAAEmmAABLpgAAS6YAAE2mAABNpgAAT6YAAE+mAABRpgAAUaYAAFOmAABTpgAAVaYAAFWmAABXpgAAV6YAAFmmAABZpgAAW6YAAFumAABdpgAAXaYAAF+mAABfpgAAYaYAAGGmAABjpgAAY6YAAGWmAABlpgAAZ6YAAGemAABppgAAaaYAAGumAABrpgAAbaYAAG2mAACBpgAAgaYAAIOmAACDpgAAhaYAAIWmAACHpgAAh6YAAImmAACJpgAAi6YAAIumAACNpgAAjaYAAI+mAACPpgAAkaYAAJGmAACTpgAAk6YAAJWmAACVpgAAl6YAAJemAACZpgAAmaYAAJumAACbpgAAI6cAACOnAAAlpwAAJacAACenAAAnpwAAKacAACmnAAArpwAAK6cAAC2nAAAtpwAAL6cAAC+nAAAzpwAAM6cAADWnAAA1pwAAN6cAADenAAA5pwAAOacAADunAAA7pwAAPacAAD2nAAA/pwAAP6cAAEGnAABBpwAAQ6cAAEOnAABFpwAARacAAEenAABHpwAASacAAEmnAABLpwAAS6cAAE2nAABNpwAAT6cAAE+nAABRpwAAUacAAFOnAABTpwAAVacAAFWnAABXpwAAV6cAAFmnAABZpwAAW6cAAFunAABdpwAAXacAAF+nAABfpwAAYacAAGGnAABjpwAAY6cAAGWnAABlpwAAZ6cAAGenAABppwAAaacAAGunAABrpwAAbacAAG2nAABvpwAAb6cAAHqnAAB6pwAAfKcAAHynAAB/pwAAf6cAAIGnAACBpwAAg6cAAIOnAACFpwAAhacAAIenAACHpwAAjKcAAIynAACRpwAAkacAAJOnAACUpwAAl6cAAJenAACZpwAAmacAAJunAACbpwAAnacAAJ2nAACfpwAAn6cAAKGnAAChpwAAo6cAAKOnAAClpwAApacAAKenAACnpwAAqacAAKmnAAC1pwAAtacAALenAAC3pwAAuacAALmnAAC7pwAAu6cAAL2nAAC9pwAAv6cAAL+nAADBpwAAwacAAMOnAADDpwAAyKcAAMinAADKpwAAyqcAAM2nAADNpwAA0acAANGnAADXpwAA16cAANmnAADZpwAA26cAANunAAD2pwAA9qcAAFOrAABTqwAAcKsAAL+rAAAA+wAABvsAABP7AAAX+wAAQf8AAFr/AAAoBAEATwQBANgEAQD7BAEAlwUBAKEFAQCjBQEAsQUBALMFAQC5BQEAuwUBALwFAQDADAEA8gwBAHANAQCFDQEAwBgBAN8YAQBgbgEAf24BACLpAQBD6QEALQAAAC0AAACKBQAAigUAAL4FAAC+BQAAABQAAAAUAAAGGAAABhgAABAgAAAV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GgEAmRoBAJkaAQA/HAEAPxwBAEIdAQBCHQEARB0BAEUdAQCXHQEAlx0BAEEfAQBCHwEAWh8BAFofAQBHNAEAVTQBAC9hAQAvYQEA8GoBAPRqAQAwawEANmsBAGttAQBsbQEAj28BAJ9vAQDwbwEA8W8BAPCvAQDzrwEA9a8BAPuvAQD9rwEA/q8BAADPAQAtzwEAMM8BAEbPAQBn0QEAadEBAG3RAQBy0QEAe9EBAILRAQCF0QEAi9EBAKrRAQCt0QEAMOABAG3gAQAw4QEANuEBAK7iAQCu4gEA7OIBAO/iAQDu5QEA7+UBANDoAQDW6AEAROkBAEbpAQBI6QEASukBACMAAAAjAAAAKgAAACoAAAAwAAAAOQAAAKkAAACpAAAArgAAAK4AAAA8IAAAPCAAAEkgAABJIAAAIiEAACIhAAA5IQAAOSEAAJQhAACZIQAAqSEAAKohAAAaIwAAGyMAACgjAAAoIwAAzyMAAM8jAADpIwAA8yMAAPgjAAD6IwAAwiQAAMIkAACqJQAAqyUAALYlAAC2JQAAwCUAAMAlAAD7JQAA/iUAAAAmAAAEJgAADiYAAA4mAAARJgAAESYAABQmAAAVJgAAGCYAABgmAAAdJgAAHSYAACAmAAAgJgAAIiYAACMmAAAmJgAAJiYAAComAAAqJgAALiYAAC8mAAA4JgAAOiYAAEAmAABAJgAAQiYAAEImAABIJgAAUyYAAF8mAABgJgAAYyYAAGMmAABlJgAAZiYAAGgmAABoJgAAeyYAAHsmAAB+JgAAfyYAAJImAACXJgAAmSYAAJkmAACbJgAAnCYAAKAmAAChJgAApyYAAKcmAACqJgAAqyYAALAmAACxJgAAvSYAAL4mAADEJgAAxSYAAMgmAADIJgAAziYAAM8mAADRJgAA0SYAANMmAADUJgAA6SYAAOomAADwJgAA9SYAAPcmAAD6JgAA/SYAAP0mAAACJwAAAicAAAUnAAAFJwAACCcAAA0nAAAPJwAADycAABInAAASJwAAFCcAABQnAAAWJwAAFicAAB0nAAAdJwAAIScAACEnAAAoJwAAKCcAADMnAAA0JwAARCcAAEQnAABHJwAARycAAEwnAABMJwAATicAAE4nAABTJwAAVScAAFcnAABXJwAAYycAAGQnAACVJwAAlycAAKEnAAChJwAAsCcAALAnAAC/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BQAA7wUAAPQFAAAGBgAADwYAABsGAAAbBgAAHQYAAEoGAABgBgAAbwYAAHEGAADVBgAA3gYAAN4GAADlBgAA5gYAAOkGAADpBgAA7gYAAA0HAAAQBwAAEAcAABIHAAAvBwAATQcAAKUHAACxBwAAsQcAAMAHAADqBwAA9AcAAPoHAAD+BwAAFQgAABoIAAAaCAAAJAgAACQIAAAoCAAAKAgAADAIAAA+CAAAQAgAAFgIAABeCAAAXggAAGAIAABqCAAAcAgAAI4IAACgCAAAyQgAAAMJAAA5CQAAOwkAADsJAAA9CQAAQAkAAEkJAABMCQAATgkAAFAJAABYCQAAYQkAAGQJAACACQAAggkAAIMJAACFCQAAjAkAAI8JAACQCQAAkwkAAKgJAACqCQAAsAkAALIJAACyCQAAtgkAALkJAAC9CQAAvQkAAL8JAADACQAAxwkAAMgJAADLCQAAzAkAAM4JAADOCQAA3AkAAN0JAADfCQAA4QkAAOYJAAD9CQAAAwoAAAMKAAAFCgAACgoAAA8KAAAQCgAAEwoAACgKAAAqCgAAMAoAADIKAAAzCgAANQoAADYKAAA4CgAAOQoAAD4KAABACgAAWQoAAFwKAABeCgAAXgoAAGYKAABvCgAAcgoAAHQKAAB2CgAAdgoAAIMKAACDCgAAhQoAAI0KAACPCgAAkQoAAJMKAACoCgAAqgoAALAKAACyCgAAswoAALUKAAC5CgAAvQoAAMAKAADJCgAAyQoAAMsKAADMCgAA0AoAANAKAADgCgAA4QoAAOYKAADxCgAA+QoAAPkKAAACCwAAAwsAAAULAAAMCwAADwsAABALAAATCwAAKAsAACoLAAAwCwAAMgsAADMLAAA1CwAAOQsAAD0LAAA9CwAAQAsAAEALAABHCwAASAsAAEsLAABMCwAAXAsAAF0LAABfCwAAYQsAAGYLAAB3CwAAgwsAAIMLAACFCwAAigsAAI4LAACQCwAAkgsAAJULAACZCwAAmgsAAJwLAACcCwAAngsAAJ8LAACjCwAApAsAAKgLAACqCwAArgsAALkLAAC/CwAAvwsAAMELAADCCwAAxgsAAMgLAADKCwAAzAsAANALAADQCwAA5gsAAPoLAAABDAAAAwwAAAUMAAAMDAAADgwAABAMAAASDAAAKAwAACoMAAA5DAAAPQwAAD0MAABBDAAARAwAAFgMAABaDAAAXQwAAF0MAABgDAAAYQwAAGYMAABvDAAAdwwAAIAMAACCDAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvQwAAL4MAADBDAAAwQwAAMMMAADEDAAA3QwAAN4MAADgDAAA4QwAAOYMAADvDAAA8QwAAPMMAAACDQAADA0AAA4NAAAQDQAAEg0AADoNAAA9DQAAPQ0AAD8NAABADQAARg0AAEgNAABKDQAATA0AAE4NAABPDQAAVA0AAFYNAABYDQAAYQ0AAGYNAAB/DQAAgg0AAIMNAACFDQAAlg0AAJoNAACxDQAAsw0AALsNAAC9DQAAvQ0AAMANAADGDQAA0A0AANENAADYDQAA3g0AAOYNAADvDQAA8g0AAPQNAAABDgAAMA4AADIOAAAzDgAAPw4AAEYOAABPDgAAWw4AAIEOAACCDgAAhA4AAIQOAACGDgAAig4AAIwOAACjDgAApQ4AAKUOAACnDgAAsA4AALIOAACzDgAAvQ4AAL0OAADADgAAxA4AAMYOAADGDgAA0A4AANkOAADcDgAA3w4AAAAPAAAXDwAAGg8AADQPAAA2DwAANg8AADgPAAA4DwAAOg8AAEcPAABJDwAAbA8AAH8PAAB/DwAAhQ8AAIUPAACIDwAAjA8AAL4PAADFDwAAxw8AAMwPAADODwAA2g8AAAAQAAAsEAAAMRAAADEQAAA4EAAAOBAAADsQAAA8EAAAPxAAAFcQAABaEAAAXRAAAGEQAABwEAAAdRAAAIEQAACDEAAAhBAAAIcQAACMEAAAjhAAAJwQAACeEAAAxRAAAMcQAADHEAAAzRAAAM0QAADQEAAASBIAAEoSAABNEgAAUBIAAFYSAABYEgAAWBIAAFoSAABdEgAAYBIAAIgSAACKEgAAjRIAAJASAACwEgAAshIAALUSAAC4EgAAvhIAAMASAADAEgAAwhIAAMUSAADIEgAA1hIAANgSAAAQEwAAEhMAABUTAAAYEwAAWhMAAGATAAB8EwAAgBMAAJkTAACgEwAA9RMAAPgTAAD9EwAAABQAAJwWAACgFgAA+BYAAAAXAAARFwAAHxcAADEXAAA1FwAANhcAAEAXAABRFwAAYBcAAGwXAABuFwAAcBcAAIAXAACzFwAAthcAALYXAAC+FwAAxRcAAMcXAADIFwAA1BcAANwXAADgFwAA6RcAAPAXAAD5FwAAABgAAAoYAAAQGAAAGRgAACAYAAB4GAAAgBgAAIQYAACHGAAAqBgAAKoYAACqGAAAsBgAAPUYAAAAGQAAHhkAACMZAAAmGQAAKRkAACsZAAAwGQAAMRkAADMZAAA4GQAAQBkAAEAZAABEGQAAbRkAAHAZAAB0GQAAgBkAAKsZAACwGQAAyRkAANAZAADaGQAA3hkAABYaAAAZGgAAGhoAAB4aAABVGgAAVxoAAFcaAABhGgAAYRoAAGMaAABkGgAAbRoAAHIaAACAGgAAiRoAAJAaAACZGgAAoBoAAK0aAAAEGwAAMxsAAD4bAABBGwAARRsAAEwbAABOGwAAahsAAHQbAAB/GwAAghsAAKEbAACmGwAApxsAAK4bAADlGwAA5xsAAOcbAADqGwAA7BsAAO4bAADuGwAA/BsAACscAAA0HAAANRwAADscAABJHAAATRwAAIocAACQHAAAuhwAAL0cAADHHAAA0xwAANMcAADhHAAA4RwAAOkcAADsHAAA7hwAAPMcAAD1HAAA9xwAAPocAAD6HAAAAB0AAL8dAAAAHgAAFR8AABgfAAAdHwAAIB8AAEUfAABIHwAATR8AAFAfAABXHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAH0fAACAHwAAtB8AALYfAADEHwAAxh8AANMfAADWHwAA2x8AAN0fAADvHwAA8h8AAPQfAAD2HwAA/h8AAAAgAAAKIAAAECAAACcgAAAvIAAAXyAAAHAgAABxIAAAdCAAAI4gAACQIAAAnCAAAKAgAADAIAAAACEAAIshAACQIQAAKSQAAEAkAABKJAAAYCQAAHMrAAB2KwAAlSsAAJcrAADuLAAA8iwAAPMsAAD5LAAAJS0AACctAAAnLQAALS0AAC0tAAAwLQAAZy0AAG8tAABwLQAAgC0AAJYtAACgLQAApi0AAKgtAACuLQAAsC0AALYtAAC4LQAAvi0AAMAtAADGLQAAyC0AAM4tAADQLQAA1i0AANgtAADeLQAAAC4AAF0uAACALgAAmS4AAJsuAADzLgAAAC8AANUvAADwLwAAKTAAADAwAAA/MAAAQTAAAJYwAACbMAAA/zAAAAUxAAAvMQAAMTEAAI4xAACQMQAA5TEAAO8xAAAeMgAAIDIAAIykAACQ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IgAAHiIAAB4iAADB1gEAwdYBANvWAQDb1gEA+9YBAPvWAQAV1wEAFdcBADXXAQA11wEAT9cBAE/XAQBv1wEAb9cBAInXAQCJ1wEAqdcBAKnXAQDD1wEAw9cBADAAAAA5AAAAQQAAAFoAAABfAAAAXwAAAGEAAAB6AAAAqgAAAKoAAAC1AAAAtQAAALcAAAC3AAAAugAAALoAAADAAAAA1gAAANgAAAD2AAAA+AAAAMECAADGAgAA0QIAAOACAADkAgAA7AIAAOwCAADuAgAA7gIAAAADAAB0AwAAdgMAAHcDAAB6AwAAfQMAAH8DAAB/AwAAhgMAAIoDAACMAwAAjAMAAI4DAAChAwAAowMAAPUDAAD3AwAAgQQAAIMEAACHBAAAigQAAC8FAAAxBQAAVgUAAFkFAABZBQAAYAUAAIgFAACRBQAAvQUAAL8FAAC/BQAAwQUAAMIFAADEBQAAxQUAAMcFAADHBQAA0AUAAOoFAADvBQAA8gUAABAGAAAaBgAAIAYAAGkGAABuBgAA0wYAANUGAADcBgAA3wYAAOgGAADqBgAA/AYAAP8GAAD/BgAAEAcAAEoHAABNBwAAsQcAAMAHAAD1BwAA+gcAAPoHAAD9BwAA/QcAAAAIAAAtCAAAQAgAAFsIAABgCAAAaggAAHAIAACHCAAAiQgAAI4IAACXCAAA4QgAAOMIAABjCQAAZgkAAG8JAABxCQAAgwkAAIUJAACMCQAAjwkAAJAJAACTCQAAqAkAAKoJAACwCQAAsgkAALIJAAC2CQAAuQkAALwJAADECQAAxwkAAMgJAADLCQAAzgkAANcJAADXCQAA3AkAAN0JAADfCQAA4wkAAOYJAADxCQAA/AkAAPwJAAD+CQAA/gkAAAEKAAADCgAABQoAAAoKAAAPCgAAEAoAABMKAAAoCgAAKgoAADAKAAAyCgAAMwoAADUKAAA2CgAAOAoAADkKAAA8CgAAPAoAAD4KAABCCgAARwoAAEgKAABLCgAATQoAAFEKAABRCgAAWQoAAFwKAABeCgAAXgoAAGYKAAB1CgAAgQoAAIMKAACFCgAAjQoAAI8KAACRCgAAkwoAAKgKAACqCgAAsAoAALIKAACzCgAAtQoAALkKAAC8CgAAxQoAAMcKAADJCgAAywoAAM0KAADQCgAA0AoAAOAKAADjCgAA5goAAO8KAAD5CgAA/woAAAELAAADCwAABQsAAAwLAAAPCwAAEAsAABMLAAAoCwAAKgsAADALAAAyCwAAMwsAADULAAA5CwAAPAsAAEQLAABHCwAASAsAAEsLAABNCwAAVQsAAFcLAABcCwAAXQsAAF8LAABjCwAAZgsAAG8LAABxCwAAcQsAAIILAACDCwAAhQsAAIoLAACOCwAAkAsAAJILAACVCwAAmQsAAJoLAACcCwAAnAsAAJ4LAACfCwAAowsAAKQLAACoCwAAqgsAAK4LAAC5CwAAvgsAAMILAADGCwAAyAsAAMoLAADNCwAA0AsAANALAADXCwAA1wsAAOYLAADvCwAAAAwAAAwMAAAODAAAEAwAABIMAAAoDAAAKgwAADkMAAA8DAAARAwAAEYMAABIDAAASgwAAE0MAABVDAAAVgwAAFgMAABaDAAAXQwAAF0MAABgDAAAYwwAAGYMAABvDAAAgAwAAIMMAACFDAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvAwAAMQMAADGDAAAyAwAAMoMAADNDAAA1QwAANYMAADdDAAA3gwAAOAMAADjDAAA5gwAAO8MAADxDAAA8wwAAAANAAAMDQAADg0AABANAAASDQAARA0AAEYNAABIDQAASg0AAE4NAABUDQAAVw0AAF8NAABjDQAAZg0AAG8NAAB6DQAAfw0AAIENAACDDQAAhQ0AAJYNAACaDQAAsQ0AALMNAAC7DQAAvQ0AAL0NAADADQAAxg0AAMoNAADKDQAAzw0AANQNAADWDQAA1g0AANgNAADfDQAA5g0AAO8NAADyDQAA8w0AAAEOAAA6DgAAQA4AAE4OAABQDgAAWQ4AAIEOAACCDgAAhA4AAIQOAACGDgAAig4AAIwOAACjDgAApQ4AAKUOAACnDgAAvQ4AAMAOAADEDgAAxg4AAMYOAADIDgAAzg4AANAOAADZDgAA3A4AAN8OAAAADwAAAA8AABgPAAAZDwAAIA8AACkPAAA1DwAANQ8AADcPAAA3DwAAOQ8AADkPAAA+DwAARw8AAEkPAABsDwAAcQ8AAIQPAACGDwAAlw8AAJkPAAC8DwAAxg8AAMYPAAAAEAAASRAAAFAQAACdEAAAoBAAAMUQAADHEAAAxxAAAM0QAADNEAAA0BAAAPoQAAD8EAAASBIAAEoSAABNEgAAUBIAAFYSAABYEgAAWBIAAFoSAABdEgAAYBIAAIgSAACKEgAAjRIAAJASAACwEgAAshIAALUSAAC4EgAAvhIAAMASAADAEgAAwhIAAMUSAADIEgAA1hIAANgSAAAQEwAAEhMAABUTAAAYEwAAWhMAAF0TAABfEwAAaRMAAHETAACAEwAAjxMAAKATAAD1EwAA+BMAAP0TAAABFAAAbBYAAG8WAAB/FgAAgRYAAJoWAACgFgAA6hYAAO4WAAD4FgAAABcAABUXAAAfFwAANBcAAEAXAABTFwAAYBcAAGwXAABuFwAAcBcAAHIXAABzFwAAgBcAANMXAADXFwAA1xcAANwXAADdFwAA4BcAAOkXAAALGAAADRgAAA8YAAAZGAAAIBgAAHgYAACAGAAAqhgAALAYAAD1GAAAABkAAB4ZAAAgGQAAKxkAADAZAAA7GQAARhkAAG0ZAABwGQAAdBkAAIAZAACrGQAAsBkAAMkZAADQGQAA2hkAAAAaAAAbGgAAIBoAAF4aAABgGgAAfBoAAH8aAACJGgAAkBoAAJkaAACnGgAApxoAALAaAAC9GgAAvxoAAM4aAAAAGwAATBsAAFAbAABZGwAAaxsAAHMbAACAGwAA8xsAAAAcAAA3HAAAQBwAAEkcAABNHAAAfRwAAIAcAACKHAAAkBwAALocAAC9HAAAvxwAANAcAADSHAAA1BwAAPocAAAAHQAAFR8AABgfAAAdHwAAIB8AAEUfAABIHwAATR8AAFAfAABXHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAH0fAACAHwAAtB8AALYfAAC8HwAAvh8AAL4fAADCHwAAxB8AAMYfAADMHwAA0B8AANMfAADWHwAA2x8AAOAfAADsHwAA8h8AAPQfAAD2HwAA/B8AAAwgAAANIAAAPyAAAEAgAABUIAAAVCAAAHEgAABxIAAAfyAAAH8gAACQIAAAnCAAANAgAADcIAAA4SAAAOEgAADlIAAA8CAAAAIhAAACIQAAByEAAAchAAAKIQAAEyEAABUhAAAVIQAAGCEAAB0hAAAkIQAAJCEAACYhAAAmIQAAKCEAACghAAAqIQAAOSEAADwhAAA/IQAARSEAAEkhAABOIQAATiEAAGAhAACIIQAAACwAAOQsAADrLAAA8ywAAAAtAAAlLQAAJy0AACctAAAtLQAALS0AADAtAABnLQAAby0AAG8tAAB/LQAAli0AAKAtAACmLQAAqC0AAK4tAACwLQAAti0AALgtAAC+LQAAwC0AAMYtAADILQAAzi0AANAtAADWLQAA2C0AAN4tAADgLQAA/y0AAAUwAAAHMAAAITAAAC8wAAAxMAAANTAAADgwAAA8MAAAQTAAAJYwAACZMAAAnzAAAKEwAAD/MAAABTEAAC8xAAAxMQAAjjEAAKAxAAC/MQAA8DEAAP8xAAAANAAAv00AAABOAACMpAAA0KQAAP2kAAAApQAADKYAABCmAAArpgAAQKYAAG+mAAB0pgAAfaYAAH+mAADxpgAAF6cAAB+nAAAipwAAiKcAAIunAADNpwAA0KcAANGnAADTpwAA06cAANWnAADcpwAA8qcAACeoAAAsqAAALKgAAECoAABzqAAAgKgAAMWoAADQqAAA2agAAOCoAAD3qAAA+6gAAPuoAAD9qAAALakAADCpAABTqQAAYKkAAHypAACAqQAAwKkAAM+pAADZqQAA4KkAAP6pAAAAqgAANqoAAECqAABNqgAAUKoAAFmqAABgqgAAdqoAAHqqAADCqgAA26oAAN2qAADgqgAA76oAAPKqAAD2qgAAAasAAAarAAAJqwAADqsAABGrAAAWqwAAIKsAACarAAAoqwAALqsAADCrAABaqwAAXKsAAGmrAABwqwAA6qsAAOyrAADtqwAA8KsAAPmrAAAArAAAo9cAALDXAADG1wAAy9cAAPvXAAAA+QAAbfoAAHD6AADZ+gAAAPsAAAb7AAAT+wAAF/sAAB37AAAo+wAAKvsAADb7AAA4+wAAPPsAAD77AAA++wAAQPsAAEH7AABD+wAARPsAAEb7AACx+wAA0/sAAD39AABQ/QAAj/0AAJL9AADH/QAA8P0AAPv9AAAA/gAAD/4AACD+AAAv/gAAM/4AADT+AABN/gAAT/4AAHD+AAB0/gAAdv4AAPz+AAAQ/wAAGf8AACH/AAA6/wAAP/8AAD//AABB/wAAWv8AAGX/AAC+/wAAwv8AAMf/AADK/wAAz/8AANL/AADX/wAA2v8AANz/AAAAAAEACwABAA0AAQAmAAEAKAABADoAAQA8AAEAPQABAD8AAQBNAAEAUAABAF0AAQCAAAEA+gABAEABAQB0AQEA/QEBAP0BAQCAAgEAnAIBAKACAQDQAgEA4AIBAOACAQAAAwEAHwMBAC0DAQBKAwEAUAMBAHoDAQCAAwEAnQMBAKADAQDDAwEAyAMBAM8DAQDRAwEA1QMBAAAEAQCdBAEAoAQBAKkEAQCwBAEA0wQBANgEAQD7BAEAAAUBACcFAQAwBQEAYwUBAHAFAQB6BQEAfAUBAIoFAQCMBQEAkgUBAJQFAQCVBQEAlwUBAKEFAQCjBQEAsQUBALMFAQC5BQEAuwUBALwFAQDABQEA8wUBAAAGAQA2BwEAQAcBAFUHAQBgBwEAZwcBAIAHAQCFBwEAhwcBALAHAQCyBwEAugcBAAAIAQAFCAEACAgBAAgIAQAKCAEANQgBADcIAQA4CAEAPAgBADwIAQA/CAEAVQgBAGAIAQB2CAEAgAgBAJ4IAQDgCAEA8ggBAPQIAQD1CAEAAAkBABUJAQAgCQEAOQkBAIAJAQC3CQEAvgkBAL8JAQAACgEAAwoBAAUKAQAGCgEADAoBABMKAQAVCgEAFwoBABkKAQA1CgEAOAoBADoKAQA/CgEAPwoBAGAKAQB8CgEAgAoBAJwKAQDACgEAxwoBAMkKAQDmCgEAAAsBADULAQBACwEAVQsBAGALAQByCwEAgAsBAJELAQAADAEASAwBAIAMAQCyDAEAwAwBAPIMAQAADQEAJw0BADANAQA5DQEAQA0BAGUNAQBpDQEAbQ0BAG8NAQCFDQEAgA4BAKkOAQCrDgEArA4BALAOAQCxDgEAwg4BAMQOAQD8DgEAHA8BACcPAQAnDwEAMA8BAFAPAQBwDwEAhQ8BALAPAQDEDwEA4A8BAPYPAQAAEAEARhABAGYQAQB1EAEAfxABALoQAQDCEAEAwhABANAQAQDoEAEA8BABAPkQAQAAEQEANBEBADYRAQA/EQEARBEBAEcRAQBQEQEAcxEBAHYRAQB2EQEAgBEBAMQRAQDJEQEAzBEBAM4RAQDaEQEA3BEBANwRAQAAEgEAERIBABMSAQA3EgEAPhIBAEESAQCAEgEAhhIBAIgSAQCIEgEAihIBAI0SAQCPEgEAnRIBAJ8SAQCoEgEAsBIBAOoSAQDwEgEA+RIBAAATAQADEwEABRMBAAwTAQAPEwEAEBMBABMTAQAoEwEAKhMBADATAQAyEwEAMxMBADUTAQA5EwEAOxMBAEQTAQBHEwEASBMBAEsTAQBNEwEAUBMBAFATAQBXEwEAVxMBAF0TAQBjEwEAZhMBAGwTAQBwEwEAdBMBAIATAQCJEwEAixMBAIsTAQCOEwEAjhMBAJATAQC1EwEAtxMBAMATAQDCEwEAwhMBAMUTAQDFEwEAxxMBAMoTAQDMEwEA0xMBAOETAQDiEwEAABQBAEoUAQBQFAEAWRQBAF4UAQBhFAEAgBQBAMUUAQDHFAEAxxQBANAUAQDZFAEAgBUBALUVAQC4FQEAwBUBANgVAQDdFQEAABYBAEAWAQBEFgEARBYBAFAWAQBZFgEAgBYBALgWAQDAFgEAyRYBANAWAQDjFgEAABcBABoXAQAdFwEAKxcBADAXAQA5FwEAQBcBAEYXAQAAGAEAOhgBAKAYAQDpGAEA/xgBAAYZAQAJGQEACRkBAAwZAQATGQEAFRkBABYZAQAYGQEANRkBADcZAQA4GQEAOxkBAEMZAQBQGQEAWRkBAKAZAQCnGQEAqhkBANcZAQDaGQEA4RkBAOMZAQDkGQEAABoBAD4aAQBHGgEARxoBAFAaAQCZGgEAnRoBAJ0aAQCwGgEA+BoBAMAbAQDgGwEA8BsBAPkbAQAAHAEACBwBAAocAQA2HAEAOBwBAEAcAQBQHAEAWRwBAHIcAQCPHAEAkhwBAKccAQCpHAEAthwBAAAdAQAGHQEACB0BAAkdAQALHQEANh0BADodAQA6HQEAPB0BAD0dAQA/HQEARx0BAFAdAQBZHQEAYB0BAGUdAQBnHQEAaB0BAGodAQCOHQEAkB0BAJEdAQCTHQEAmB0BAKAdAQCpHQEA4B4BAPYeAQAAHwEAEB8BABIfAQA6HwEAPh8BAEIfAQBQHwEAWh8BALAfAQCwHwEAACABAJkjAQAAJAEAbiQBAIAkAQBDJQEAkC8BAPAvAQAAMAEALzQBAEA0AQBVNAEAYDQBAPpDAQAARAEARkYBAABhAQA5YQEAAGgBADhqAQBAagEAXmoBAGBqAQBpagEAcGoBAL5qAQDAagEAyWoBANBqAQDtagEA8GoBAPRqAQAAawEANmsBAEBrAQBDawEAUGsBAFlrAQBjawEAd2sBAH1rAQCPawEAQG0BAGxtAQBwbQEAeW0BAEBuAQB/bgEAAG8BAEpvAQBPbwEAh28BAI9vAQCfbwEA4G8BAOFvAQDjbwEA5G8BAPBvAQDxbwEAAHABAPeHAQAAiAEA1YwBAP+MAQAIjQEA8K8BAPOvAQD1rwEA+68BAP2vAQD+rwEAALABACKxAQAysQEAMrEBAFCxAQBSsQEAVbEBAFWxAQBksQEAZ7EBAHCxAQD7sgEAALwBAGq8AQBwvAEAfLwBAIC8AQCIvAEAkLwBAJm8AQCdvAEAnrwBAPDMAQD5zAEAAM8BAC3PAQAwzwEARs8BAGXRAQBp0QEAbdEBAHLRAQB70QEAgtEBAIXRAQCL0QEAqtEBAK3RAQBC0gEARNIBAADUAQBU1AEAVtQBAJzUAQCe1AEAn9QBAKLUAQCi1AEApdQBAKbUAQCp1AEArNQBAK7UAQC51AEAu9QBALvUAQC91AEAw9QBAMXUAQAF1QEAB9UBAArVAQAN1QEAFNUBABbVAQAc1QEAHtUBADnVAQA71QEAPtUBAEDVAQBE1QEARtUBAEbVAQBK1QEAUNUBAFLVAQCl1gEAqNYBAMDWAQDC1gEA2tYBANzWAQD61gEA/NYBABTXAQAW1wEANNcBADbXAQBO1wEAUNcBAG7XAQBw1wEAiNcBAIrXAQCo1wEAqtcBAMLXAQDE1wEAy9cBAM7XAQD/1wEAANoBADbaAQA72gEAbNoBAHXaAQB12gEAhNoBAITaAQCb2gEAn9oBAKHaAQCv2gEAAN8BAB7fAQAl3wEAKt8BAADgAQAG4AEACOABABjgAQAb4AEAIeABACPgAQAk4AEAJuABACrgAQAw4AEAbeABAI/gAQCP4AEAAOEBACzhAQAw4QEAPeEBAEDhAQBJ4QEATuEBAE7hAQCQ4gEAruIBAMDiAQD54gEA0OQBAPnkAQDQ5QEA+uUBAODnAQDm5wEA6OcBAOvnAQDt5wEA7ucBAPDnAQD+5wEAAOgBAMToAQDQ6AEA1ugBAADpAQBL6QEAUOkBAFnpAQAA7gEAA+4BAAXuAQAf7gEAIe4BACLuAQAk7gEAJO4BACfuAQAn7gEAKe4BADLuAQA07gEAN+4BADnuAQA57gEAO+4BADvuAQBC7gEAQu4BAEfuAQBH7gEASe4BAEnuAQBL7gEAS+4BAE3uAQBP7gEAUe4BAFLuAQBU7gEAVO4BAFfuAQBX7gEAWe4BAFnuAQBb7gEAW+4BAF3uAQBd7gEAX+4BAF/uAQBh7gEAYu4BAGTuAQBk7gEAZ+4BAGruAQBs7gEAcu4BAHTuAQB37gEAee4BAHzuAQB+7gEAfu4BAIDuAQCJ7gEAi+4BAJvuAQCh7gEAo+4BAKXuAQCp7gEAq+4BALvuAQDw+wEA+fsBAAAAAgDfpgIAAKcCADm3AgBAtwIAHbgCACC4AgChzgIAsM4CAODrAgDw6wIAXe4CAAD4AgAd+gIAAAADAEoTAwBQEwMAryMDAAABDgDvAQ4AQQAAAFoAAABhAAAAegAAAKoAAACqAAAAtQAAALUAAAC6AAAAugAAAMAAAADWAAAA2AAAAPYAAAD4AAAAwQIAAMYCAADRAgAA4AIAAOQCAADsAgAA7AIAAO4CAADuAgAAcAMAAHQDAAB2AwAAdwMAAHoDAAB9AwAAfwMAAH8DAACGAwAAhgMAAIgDAACKAwAAjAMAAIwDAACOAwAAoQMAAKMDAAD1AwAA9wMAAIEEAACKBAAALwUAADEFAABWBQAAWQUAAFkFAABgBQAAiAUAANAFAADqBQAA7wUAAPIFAAAgBgAASgYAAG4GAABvBgAAcQYAANMGAADVBgAA1QYAAOUGAADmBgAA7gYAAO8GAAD6BgAA/AYAAP8GAAD/BgAAEAcAABAHAAASBwAALwcAAE0HAAClBwAAsQcAALEHAADKBwAA6gcAAPQHAAD1BwAA+gcAAPoHAAAACAAAFQgAABoIAAAaCAAAJAgAACQIAAAoCAAAKAgAAEAIAABYCAAAYAgAAGoIAABwCAAAhwgAAIkIAACOCAAAoAgAAMkIAAAECQAAOQkAAD0JAAA9CQAAUAkAAFAJAABYCQAAYQkAAHEJAACACQAAhQkAAIwJAACPCQAAkAkAAJMJAACoCQAAqgkAALAJAACyCQAAsgkAALYJAAC5CQAAvQkAAL0JAADOCQAAzgkAANwJAADdCQAA3wkAAOEJAADwCQAA8QkAAPwJAAD8CQAABQoAAAoKAAAPCgAAEAoAABMKAAAoCgAAKgoAADAKAAAyCgAAMwoAADUKAAA2CgAAOAoAADkKAABZCgAAXAoAAF4KAABeCgAAcgoAAHQKAACFCgAAjQoAAI8KAACRCgAAkwoAAKgKAACqCgAAsAoAALIKAACzCgAAtQoAALkKAAC9CgAAvQoAANAKAADQCgAA4AoAAOEKAAD5CgAA+QoAAAULAAAMCwAADwsAABALAAATCwAAKAsAACoLAAAwCwAAMgsAADMLAAA1CwAAOQsAAD0LAAA9CwAAXAsAAF0LAABfCwAAYQsAAHELAABxCwAAgwsAAIMLAACFCwAAigsAAI4LAACQCwAAkgsAAJULAACZCwAAmgsAAJwLAACcCwAAngsAAJ8LAACjCwAApAsAAKgLAACqCwAArgsAALkLAADQCwAA0AsAAAUMAAAMDAAADgwAABAMAAASDAAAKAwAACoMAAA5DAAAPQwAAD0MAABYDAAAWgwAAF0MAABdDAAAYAwAAGEMAACADAAAgAwAAIUMAACMDAAAjgwAAJAMAACSDAAAqAwAAKoMAACzDAAAtQwAALkMAAC9DAAAvQwAAN0MAADeDAAA4AwAAOEMAADxDAAA8gwAAAQNAAAMDQAADg0AABANAAASDQAAOg0AAD0NAAA9DQAATg0AAE4NAABUDQAAVg0AAF8NAABhDQAAeg0AAH8NAACFDQAAlg0AAJoNAACxDQAAsw0AALsNAAC9DQAAvQ0AAMANAADGDQAAAQ4AADAOAAAyDgAAMw4AAEAOAABGDgAAgQ4AAIIOAACEDgAAhA4AAIYOAACKDgAAjA4AAKMOAAClDgAApQ4AAKcOAACwDgAAsg4AALMOAAC9DgAAvQ4AAMAOAADEDgAAxg4AAMYOAADcDgAA3w4AAAAPAAAADwAAQA8AAEcPAABJDwAAbA8AAIgPAACMDwAAABAAACoQAAA/EAAAPxAAAFAQAABVEAAAWhAAAF0QAABhEAAAYRAAAGUQAABmEAAAbhAAAHAQAAB1EAAAgRAAAI4QAACOEAAAoBAAAMUQAADHEAAAxxAAAM0QAADNEAAA0BAAAPoQAAD8EAAASBIAAEoSAABNEgAAUBIAAFYSAABYEgAAWBIAAFoSAABdEgAAYBIAAIgSAACKEgAAjRIAAJASAACwEgAAshIAALUSAAC4EgAAvhIAAMASAADAEgAAwhIAAMUSAADIEgAA1hIAANgSAAAQEwAAEhMAABUTAAAYEwAAWhMAAIATAACPEwAAoBMAAPUTAAD4EwAA/RMAAAEUAABsFgAAbxYAAH8WAACBFgAAmhYAAKAWAADqFgAA7hYAAPgWAAAAFwAAERcAAB8XAAAxFwAAQBcAAFEXAABgFwAAbBcAAG4XAABwFwAAgBcAALMXAADXFwAA1xcAANwXAADcFwAAIBgAAHgYAACAGAAAqBgAAKoYAACqGAAAsBgAAPUYAAAAGQAAHhkAAFAZAABtGQAAcBkAAHQZAACAGQAAqxkAALAZAADJGQAAABoAABYaAAAgGgAAVBoAAKcaAACnGgAABRsAADMbAABFGwAATBsAAIMbAACgGwAArhsAAK8bAAC6GwAA5RsAAAAcAAAjHAAATRwAAE8cAABaHAAAfRwAAIAcAACKHAAAkBwAALocAAC9HAAAvxwAAOkcAADsHAAA7hwAAPMcAAD1HAAA9hwAAPocAAD6HAAAAB0AAL8dAAAAHgAAFR8AABgfAAAdHwAAIB8AAEUfAABIHwAATR8AAFAfAABXHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAH0fAACAHwAAtB8AALYfAAC8HwAAvh8AAL4fAADCHwAAxB8AAMYfAADMHwAA0B8AANMfAADWHwAA2x8AAOAfAADsHwAA8h8AAPQfAAD2HwAA/B8AAHEgAABxIAAAfyAAAH8gAACQIAAAnCAAAAIhAAACIQAAByEAAAchAAAKIQAAEyEAABUhAAAVIQAAGCEAAB0hAAAkIQAAJCEAACYhAAAmIQAAKCEAACghAAAqIQAAOSEAADwhAAA/IQAARSEAAEkhAABOIQAATiEAAGAhAACIIQAAACwAAOQsAADrLAAA7iwAAPIsAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAMC0AAGctAABvLQAAby0AAIAtAACWLQAAoC0AAKYtAACoLQAAri0AALAtAAC2LQAAuC0AAL4tAADALQAAxi0AAMgtAADOLQAA0C0AANYtAADYLQAA3i0AAAUwAAAHMAAAITAAACkwAAAxMAAANTAAADgwAAA8MAAAQTAAAJYwAACbMAAAnzAAAKEwAAD6MAAA/DAAAP8wAAAFMQAALzEAADExAACOMQAAoDEAAL8xAADwMQAA/zEAAAA0AAC/TQAAAE4AAIykAADQpAAA/aQAAAClAAAMpgAAEKYAAB+mAAAqpgAAK6YAAECmAABupgAAf6YAAJ2mAACgpgAA76YAABenAAAfpwAAIqcAAIinAACLpwAAzacAANCnAADRpwAA06cAANOnAADVpwAA3KcAAPKnAAABqAAAA6gAAAWoAAAHqAAACqgAAAyoAAAiqAAAQKgAAHOoAACCqAAAs6gAAPKoAAD3qAAA+6gAAPuoAAD9qAAA/qgAAAqpAAAl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AAAA3wAAAPYAAAD4AAAA/wAAAAEBAAABAQAAAwEAAAMBAAAFAQAABQEAAAcBAAAHAQAACQEAAAkBAAALAQAACwEAAA0BAAANAQAADwEAAA8BAAARAQAAEQEAABMBAAATAQAAFQEAABUBAAAXAQAAFwEAABkBAAAZAQAAGwEAABsBAAAdAQAAHQEAAB8BAAAfAQAAIQEAACEBAAAjAQAAIwEAACUBAAAlAQAAJwEAACcBAAApAQAAKQEAACsBAAArAQAALQEAAC0BAAAvAQAALwEAADEBAAAxAQAAMwEAADMBAAA1AQAANQEAADcBAAA4AQAAOgEAADoBAAA8AQAAPAEAAD4BAAA+AQAAQAEAAEABAABCAQAAQgEAAEQBAABEAQAARgEAAEYBAABIAQAASQEAAEsBAABLAQAATQEAAE0BAABPAQAATwEAAFEBAABRAQAAUwEAAFMBAABVAQAAVQEAAFcBAABXAQAAWQEAAFkBAABbAQAAWwEAAF0BAABdAQAAXwEAAF8BAABhAQAAYQEAAGMBAABjAQAAZQEAAGUBAABnAQAAZwEAAGkBAABpAQAAawEAAGsBAABtAQAAbQEAAG8BAABvAQAAcQEAAHEBAABzAQAAcwEAAHUBAAB1AQAAdwEAAHcBAAB6AQAAegEAAHwBAAB8AQAAfgEAAIABAACDAQAAgwEAAIUBAACFAQAAiAEAAIgBAACMAQAAjQEAAJIBAACSAQAAlQEAAJUBAACZAQAAmwEAAJ4BAACeAQAAoQEAAKEBAACjAQAAowEAAKUBAAClAQAAqAEAAKgBAACqAQAAqwEAAK0BAACtAQAAsAEAALABAAC0AQAAtAEAALYBAAC2AQAAuQEAALoBAAC9AQAAvwEAAMYBAADGAQAAyQEAAMkBAADMAQAAzAEAAM4BAADOAQAA0AEAANABAADSAQAA0gEAANQBAADUAQAA1gEAANYBAADYAQAA2AEAANoBAADaAQAA3AEAAN0BAADfAQAA3wEAAOEBAADhAQAA4wEAAOMBAADlAQAA5QEAAOcBAADnAQAA6QEAAOkBAADrAQAA6wEAAO0BAADtAQAA7wEAAPABAADzAQAA8wEAAPUBAAD1AQAA+QEAAPkBAAD7AQAA+wEAAP0BAAD9AQAA/wEAAP8BAAABAgAAAQIAAAMCAAADAgAABQIAAAUCAAAHAgAABwIAAAkCAAAJAgAACwIAAAsCAAANAgAADQIAAA8CAAAPAgAAEQIAABECAAATAgAAEwIAABUCAAAVAgAAFwIAABcCAAAZAgAAGQIAABsCAAAbAgAAHQIAAB0CAAAfAgAAHwIAACECAAAhAgAAIwIAACMCAAAlAgAAJQIAACcCAAAnAgAAKQIAACkCAAArAgAAKwIAAC0CAAAtAgAALwIAAC8CAAAxAgAAMQIAADMCAAA5AgAAPAIAADwCAAA/AgAAQAIAAEICAABCAgAARwIAAEcCAABJAgAASQIAAEsCAABLAgAATQIAAE0CAABPAgAAkwIAAJUCAAC4AgAAwAIAAMECAADgAgAA5AIAAEUDAABFAwAAcQMAAHEDAABzAwAAcwMAAHcDAAB3AwAAegMAAH0DAACQAwAAkAMAAKwDAADOAwAA0AMAANEDAADVAwAA1wMAANkDAADZAwAA2wMAANsDAADdAwAA3QMAAN8DAADfAwAA4QMAAOEDAADjAwAA4wMAAOUDAADlAwAA5wMAAOcDAADpAwAA6QMAAOsDAADrAwAA7QMAAO0DAADvAwAA8wMAAPUDAAD1AwAA+AMAAPgDAAD7AwAA/AMAADAEAABfBAAAYQQAAGEEAABjBAAAYwQAAGUEAABlBAAAZwQAAGcEAABpBAAAaQQAAGsEAABrBAAAbQQAAG0EAABvBAAAbwQAAHEEAABxBAAAcwQAAHMEAAB1BAAAdQQAAHcEAAB3BAAAeQQAAHkEAAB7BAAAewQAAH0EAAB9BAAAfwQAAH8EAACBBAAAgQQAAIsEAACLBAAAjQQAAI0EAACPBAAAjwQAAJEEAACRBAAAkwQAAJMEAACVBAAAlQQAAJcEAACXBAAAmQQAAJkEAACbBAAAmwQAAJ0EAACdBAAAnwQAAJ8EAAChBAAAoQQAAKMEAACjBAAApQQAAKUEAACnBAAApwQAAKkEAACpBAAAqwQAAKsEAACtBAAArQQAAK8EAACvBAAAsQQAALEEAACzBAAAswQAALUEAAC1BAAAtwQAALcEAAC5BAAAuQQAALsEAAC7BAAAvQQAAL0EAAC/BAAAvwQAAMIEAADCBAAAxAQAAMQEAADGBAAAxgQAAMgEAADIBAAAygQAAMoEAADMBAAAzAQAAM4EAADPBAAA0QQAANEEAADTBAAA0wQAANUEAADVBAAA1wQAANcEAADZBAAA2QQAANsEAADbBAAA3QQAAN0EAADfBAAA3wQAAOEEAADhBAAA4wQAAOMEAADlBAAA5QQAAOcEAADnBAAA6QQAAOkEAADrBAAA6wQAAO0EAADtBAAA7wQAAO8EAADxBAAA8QQAAPMEAADzBAAA9QQAAPUEAAD3BAAA9wQAAPkEAAD5BAAA+wQAAPsEAAD9BAAA/QQAAP8EAAD/BAAAAQUAAAEFAAADBQAAAwUAAAUFAAAFBQAABwUAAAcFAAAJBQAACQUAAAsFAAALBQAADQUAAA0FAAAPBQAADwUAABEFAAARBQAAEwUAABMFAAAVBQAAFQUAABcFAAAXBQAAGQUAABkFAAAbBQAAGwUAAB0FAAAdBQAAHwUAAB8FAAAhBQAAIQUAACMFAAAjBQAAJQUAACUFAAAnBQAAJwUAACkFAAApBQAAKwUAACsFAAAtBQAALQUAAC8FAAAvBQAAYAUAAIgFAADQEAAA+hAAAPwQAAD/EAAA+BMAAP0TAACAHAAAiBwAAIocAACKHAAAAB0AAL8dAAABHgAAAR4AAAMeAAADHgAABR4AAAUeAAAHHgAABx4AAAkeAAAJHgAACx4AAAseAAANHgAADR4AAA8eAAAPHgAAER4AABEeAAATHgAAEx4AABUeAAAVHgAAFx4AABceAAAZHgAAGR4AABseAAAbHgAAHR4AAB0eAAAfHgAAHx4AACEeAAAhHgAAIx4AACMeAAAlHgAAJR4AACceAAAnHgAAKR4AACkeAAArHgAAKx4AAC0eAAAtHgAALx4AAC8eAAAxHgAAMR4AADMeAAAzHgAANR4AADUeAAA3HgAANx4AADkeAAA5HgAAOx4AADseAAA9HgAAPR4AAD8eAAA/HgAAQR4AAEEeAABDHgAAQx4AAEUeAABFHgAARx4AAEceAABJHgAASR4AAEseAABLHgAATR4AAE0eAABPHgAATx4AAFEeAABRHgAAUx4AAFMeAABVHgAAVR4AAFceAABXHgAAWR4AAFkeAABbHgAAWx4AAF0eAABdHgAAXx4AAF8eAABhHgAAYR4AAGMeAABjHgAAZR4AAGUeAABnHgAAZx4AAGkeAABpHgAAax4AAGseAABtHgAAbR4AAG8eAABvHgAAcR4AAHEeAABzHgAAcx4AAHUeAAB1HgAAdx4AAHceAAB5HgAAeR4AAHseAAB7HgAAfR4AAH0eAAB/HgAAfx4AAIEeAACBHgAAgx4AAIMeAACFHgAAhR4AAIceAACHHgAAiR4AAIkeAACLHgAAix4AAI0eAACNHgAAjx4AAI8eAACRHgAAkR4AAJMeAACTHgAAlR4AAJ0eAACfHgAAnx4AAKEeAAChHgAAox4AAKMeAAClHgAApR4AAKceAACnHgAAqR4AAKkeAACrHgAAqx4AAK0eAACtHgAArx4AAK8eAACxHgAAsR4AALMeAACzHgAAtR4AALUeAAC3HgAAtx4AALkeAAC5HgAAux4AALseAAC9HgAAvR4AAL8eAAC/HgAAwR4AAMEeAADDHgAAwx4AAMUeAADFHgAAxx4AAMceAADJHgAAyR4AAMseAADLHgAAzR4AAM0eAADPHgAAzx4AANEeAADRHgAA0x4AANMeAADVHgAA1R4AANceAADXHgAA2R4AANkeAADbHgAA2x4AAN0eAADdHgAA3x4AAN8eAADhHgAA4R4AAOMeAADjHgAA5R4AAOUeAADnHgAA5x4AAOkeAADpHgAA6x4AAOseAADtHgAA7R4AAO8eAADvHgAA8R4AAPEeAADzHgAA8x4AAPUeAAD1HgAA9x4AAPceAAD5HgAA+R4AAPseAAD7HgAA/R4AAP0eAAD/HgAABx8AABAfAAAVHwAAIB8AACcfAAAwHwAANx8AAEAfAABFHwAAUB8AAFcfAABgHwAAZx8AAHAfAAB9HwAAgB8AAIcfAACQHwAAlx8AAKAfAACnHwAAsB8AALQfAAC2HwAAtx8AAL4fAAC+HwAAwh8AAMQfAADGHwAAxx8AANAfAADTHwAA1h8AANcfAADgHwAA5x8AAPIfAAD0HwAA9h8AAPcfAABxIAAAcSAAAH8gAAB/IAAAkCAAAJwgAAAKIQAACiEAAA4hAAAPIQAAEyEAABMhAAAvIQAALyEAADQhAAA0IQAAOSEAADkhAAA8IQAAPSEAAEYhAABJIQAATiEAAE4hAABwIQAAfyEAAIQhAACEIQAA0CQAAOkkAAAwLAAAXywAAGEsAABhLAAAZSwAAGYsAABoLAAAaCwAAGosAABqLAAAbCwAAGwsAABxLAAAcSwAAHMsAAB0LAAAdiwAAH0sAACBLAAAgSwAAIMsAACDLAAAhSwAAIUsAACHLAAAhywAAIksAACJLAAAiywAAIssAACNLAAAjSwAAI8sAACPLAAAkSwAAJEsAACTLAAAkywAAJUsAACVLAAAlywAAJcsAACZLAAAmSwAAJssAACbLAAAnSwAAJ0sAACfLAAAnywAAKEsAAChLAAAoywAAKMsAAClLAAApSwAAKcsAACnLAAAqSwAAKksAACrLAAAqywAAK0sAACtLAAArywAAK8sAACxLAAAsSwAALMsAACzLAAAtSwAALUsAAC3LAAAtywAALksAAC5LAAAuywAALssAAC9LAAAvSwAAL8sAAC/LAAAwSwAAMEsAADDLAAAwywAAMUsAADFLAAAxywAAMcsAADJLAAAySwAAMssAADLLAAAzSwAAM0sAADPLAAAzywAANEsAADRLAAA0ywAANMsAADVLAAA1SwAANcsAADXLAAA2SwAANksAADbLAAA2ywAAN0sAADdLAAA3ywAAN8sAADhLAAA4SwAAOMsAADkLAAA7CwAAOwsAADuLAAA7iwAAPMsAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAQaYAAEGmAABDpgAAQ6YAAEWmAABFpgAAR6YAAEemAABJpgAASaYAAEumAABLpgAATaYAAE2mAABPpgAAT6YAAFGmAABRpgAAU6YAAFOmAABVpgAAVaYAAFemAABXpgAAWaYAAFmmAABbpgAAW6YAAF2mAABdpgAAX6YAAF+mAABhpgAAYaYAAGOmAABjpgAAZaYAAGWmAABnpgAAZ6YAAGmmAABppgAAa6YAAGumAABtpgAAbaYAAIGmAACBpgAAg6YAAIOmAACFpgAAhaYAAIemAACHpgAAiaYAAImmAACLpgAAi6YAAI2mAACNpgAAj6YAAI+mAACRpgAAkaYAAJOmAACTpgAAlaYAAJWmAACXpgAAl6YAAJmmAACZpgAAm6YAAJ2mAAAjpwAAI6cAACWnAAAlpwAAJ6cAACenAAAppwAAKacAACunAAArpwAALacAAC2nAAAvpwAAMacAADOnAAAzpwAANacAADWnAAA3pwAAN6cAADmnAAA5pwAAO6cAADunAAA9pwAAPacAAD+nAAA/pwAAQacAAEGnAABDpwAAQ6cAAEWnAABFpwAAR6cAAEenAABJpwAASacAAEunAABLpwAATacAAE2nAABPpwAAT6cAAFGnAABRpwAAU6cAAFOnAABVpwAAVacAAFenAABXpwAAWacAAFmnAABbpwAAW6cAAF2nAABdpwAAX6cAAF+nAABhpwAAYacAAGOnAABjpwAAZacAAGWnAABnpwAAZ6cAAGmnAABppwAAa6cAAGunAABtpwAAbacAAG+nAAB4pwAAeqcAAHqnAAB8pwAAfKcAAH+nAAB/pwAAgacAAIGnAACDpwAAg6cAAIWnAACFpwAAh6cAAIenAACMpwAAjKcAAI6nAACOpwAAkacAAJGnAACTpwAAlacAAJenAACXpwAAmacAAJmnAACbpwAAm6cAAJ2nAACdpwAAn6cAAJ+nAAChpwAAoacAAKOnAACjpwAApacAAKWnAACnpwAAp6cAAKmnAACppwAAr6cAAK+nAAC1pwAAtacAALenAAC3pwAAuacAALmnAAC7pwAAu6cAAL2nAAC9pwAAv6cAAL+nAADBpwAAwacAAMOnAADDpwAAyKcAAMinAADKpwAAyqcAAM2nAADNpwAA0acAANGnAADTpwAA06cAANWnAADVpwAA16cAANenAADZpwAA2acAANunAADbpwAA8qcAAPSnAAD2pwAA9qcAAPinAAD6pwAAMKsAAFqrAABcqwAAaasAAHCrAAC/qwAAAPsAAAb7AAAT+wAAF/sAAEH/AABa/wAAKAQBAE8EAQDYBAEA+wQBAJcFAQChBQEAowUBALEFAQCzBQEAuQUBALsFAQC8BQEAgAcBAIAHAQCDBwEAhQcBAIcHAQCwBwEAsgcBALoHAQDADAEA8gwBAHANAQCFDQEAwBgBAN8YAQBgbgEAf24BABrUAQAz1AEATtQBAFTUAQBW1AEAZ9QBAILUAQCb1AEAttQBALnUAQC71AEAu9QBAL3UAQDD1AEAxdQBAM/UAQDq1AEAA9UBAB7VAQA31QEAUtUBAGvVAQCG1QEAn9UBALrVAQDT1QEA7tUBAAfWAQAi1gEAO9YBAFbWAQBv1gEAitYBAKXWAQDC1gEA2tYBANzWAQDh1gEA/NYBABTXAQAW1wEAG9cBADbXAQBO1wEAUNcBAFXXAQBw1wEAiNcBAIrXAQCP1wEAqtcBAMLXAQDE1wEAydcBAMvXAQDL1wEAAN8BAAnfAQAL3wEAHt8BACXfAQAq3wEAMOABAG3gAQAi6QEAQ+kBACsAAAArAAAAPAAAAD4AAABeAAAAXgAAAHwAAAB8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AQAAYAEAAGIBAABiAQAAZAEAAGQBAABmAQAAZgEAAGgBAABoAQAAagEAAGoBAABsAQAAbAEAAG4BAABuAQAAcAEAAHABAAByAQAAcgEAAHQBAAB0AQAAdgEAAHYBAAB4AQAAeQEAAHsBAAB7AQAAfQEAAH0BAACBAQAAggEAAIQBAACEAQAAhgEAAIcBAACJAQAAiwEAAI4BAACRAQAAkwEAAJQBAACWAQAAmAEAAJwBAACdAQAAnwEAAKABAACiAQAAogEAAKQBAACkAQAApgEAAKcBAACpAQAAqQEAAKwBAACsAQAArgEAAK8BAACxAQAAswEAALUBAAC1AQAAtwEAALgBAAC8AQAAvAEAAMQBAADEAQAAxwEAAMcBAADKAQAAygEAAM0BAADNAQAAzwEAAM8BAADRAQAA0QEAANMBAADTAQAA1QEAANUBAADXAQAA1wEAANkBAADZAQAA2wEAANsBAADeAQAA3gEAAOABAADgAQAA4gEAAOIBAADkAQAA5AEAAOYBAADmAQAA6AEAAOgBAADqAQAA6gEAAOwBAADsAQAA7gEAAO4BAADxAQAA8QEAAPQBAAD0AQAA9gEAAPgBAAD6AQAA+gEAAPwBAAD8AQAA/gEAAP4BAAAAAgAAAAIAAAICAAACAgAABAIAAAQCAAAGAgAABgIAAAgCAAAIAgAACgIAAAoCAAAMAgAADAIAAA4CAAAOAgAAEAIAABACAAASAgAAEgIAABQCAAAUAgAAFgIAABYCAAAYAgAAGAIAABoCAAAaAgAAHAIAABwCAAAeAgAAHgIAACACAAAgAgAAIgIAACICAAAkAgAAJAIAACYCAAAmAgAAKAIAACgCAAAqAgAAKgIAACwCAAAsAgAALgIAAC4CAAAwAgAAMAIAADICAAAyAgAAOgIAADsCAAA9AgAAPgIAAEECAABBAgAAQwIAAEYCAABIAgAASAIAAEoCAABKAgAATAIAAEwCAABOAgAATgIAAHADAABwAwAAcgMAAHIDAAB2AwAAdgMAAH8DAAB/AwAAhgMAAIYDAACIAwAAigMAAIwDAACMAwAAjgMAAI8DAACRAwAAoQMAAKMDAACrAwAAzwMAAM8DAADSAwAA1AMAANgDAADYAwAA2gMAANoDAADcAwAA3AMAAN4DAADeAwAA4AMAAOADAADiAwAA4gMAAOQDAADkAwAA5gMAAOYDAADoAwAA6AMAAOoDAADqAwAA7AMAAOwDAADuAwAA7gMAAPQDAAD0AwAA9wMAAPcDAAD5AwAA+gMAAP0DAAAvBAAAYAQAAGAEAABiBAAAYgQAAGQEAABkBAAAZgQAAGYEAABoBAAAaAQAAGoEAABqBAAAbAQAAGwEAABuBAAAbgQAAHAEAABwBAAAcgQAAHIEAAB0BAAAdAQAAHYEAAB2BAAAeAQAAHgEAAB6BAAAegQAAHwEAAB8BAAAfgQAAH4EAACABAAAgAQAAIoEAACKBAAAjAQAAIwEAACOBAAAjgQAAJAEAACQBAAAkgQAAJIEAACUBAAAlAQAAJYEAACWBAAAmAQAAJgEAACaBAAAmgQAAJwEAACcBAAAngQAAJ4EAACgBAAAoAQAAKIEAACiBAAApAQAAKQEAACmBAAApgQAAKgEAACoBAAAqgQAAKoEAACsBAAArAQAAK4EAACuBAAAsAQAALAEAACyBAAAsgQAALQEAAC0BAAAtgQAALYEAAC4BAAAuAQAALoEAAC6BAAAvAQAALwEAAC+BAAAvgQAAMAEAADBBAAAwwQAAMMEAADFBAAAxQQAAMcEAADHBAAAyQQAAMkEAADLBAAAywQAAM0EAADNBAAA0AQAANAEAADSBAAA0gQAANQEAADUBAAA1gQAANYEAADYBAAA2AQAANoEAADaBAAA3AQAANwEAADeBAAA3gQAAOAEAADgBAAA4gQAAOIEAADkBAAA5AQAAOYEAADmBAAA6AQAAOgEAADqBAAA6gQAAOwEAADsBAAA7gQAAO4EAADwBAAA8AQAAPIEAADyBAAA9AQAAPQEAAD2BAAA9gQAAPgEAAD4BAAA+gQAAPoEAAD8BAAA/AQAAP4EAAD+BAAAAAUAAAAFAAACBQAAAgUAAAQFAAAEBQAABgUAAAYFAAAIBQAACAUAAAoFAAAKBQAADAUAAAwFAAAOBQAADgUAABAFAAAQBQAAEgUAABIFAAAUBQAAFAUAABYFAAAWBQAAGAUAABgFAAAaBQAAGgUAABwFAAAcBQAAHgUAAB4FAAAgBQAAIAUAACIFAAAiBQAAJAUAACQFAAAmBQAAJgUAACgFAAAoBQAAKgUAACoFAAAsBQAALAUAAC4FAAAuBQAAMQUAAFYFAACgEAAAxRAAAMcQAADHEAAAzRAAAM0QAACgEwAA9RMAAIkcAACJHAAAkBwAALocAAC9HAAAvxwAAAAeAAAAHgAAAh4AAAIeAAAEHgAABB4AAAYeAAAGHgAACB4AAAgeAAAKHgAACh4AAAweAAAMHgAADh4AAA4eAAAQHgAAEB4AABIeAAASHgAAFB4AABQeAAAWHgAAFh4AABgeAAAYHgAAGh4AABoeAAAcHgAAHB4AAB4eAAAeHgAAIB4AACAeAAAiHgAAIh4AACQeAAAkHgAAJh4AACYeAAAoHgAAKB4AACoeAAAqHgAALB4AACweAAAuHgAALh4AADAeAAAwHgAAMh4AADIeAAA0HgAANB4AADYeAAA2HgAAOB4AADgeAAA6HgAAOh4AADweAAA8HgAAPh4AAD4eAABAHgAAQB4AAEIeAABCHgAARB4AAEQeAABGHgAARh4AAEgeAABIHgAASh4AAEoeAABMHgAATB4AAE4eAABOHgAAUB4AAFAeAABSHgAAUh4AAFQeAABUHgAAVh4AAFYeAABYHgAAWB4AAFoeAABaHgAAXB4AAFweAABeHgAAXh4AAGAeAABgHgAAYh4AAGIeAABkHgAAZB4AAGYeAABmHgAAaB4AAGgeAABqHgAAah4AAGweAABsHgAAbh4AAG4eAABwHgAAcB4AAHIeAAByHgAAdB4AAHQeAAB2HgAAdh4AAHgeAAB4HgAAeh4AAHoeAAB8HgAAfB4AAH4eAAB+HgAAgB4AAIAeAACCHgAAgh4AAIQeAACEHgAAhh4AAIYeAACIHgAAiB4AAIoeAACKHgAAjB4AAIweAACOHgAAjh4AAJAeAACQHgAAkh4AAJIeAACUHgAAlB4AAJ4eAACeHgAAoB4AAKAeAACiHgAAoh4AAKQeAACkHgAAph4AAKYeAACoHgAAqB4AAKoeAACqHgAArB4AAKweAACuHgAArh4AALAeAACwHgAAsh4AALIeAAC0HgAAtB4AALYeAAC2HgAAuB4AALgeAAC6HgAAuh4AALweAAC8HgAAvh4AAL4eAADAHgAAwB4AAMIeAADCHgAAxB4AAMQeAADGHgAAxh4AAMgeAADIHgAAyh4AAMoeAADMHgAAzB4AAM4eAADOHgAA0B4AANAeAADSHgAA0h4AANQeAADUHgAA1h4AANYeAADYHgAA2B4AANoeAADaHgAA3B4AANweAADeHgAA3h4AAOAeAADgHgAA4h4AAOIeAADkHgAA5B4AAOYeAADmHgAA6B4AAOgeAADqHgAA6h4AAOweAADsHgAA7h4AAO4eAADwHgAA8B4AAPIeAADyHgAA9B4AAPQeAAD2HgAA9h4AAPgeAAD4HgAA+h4AAPoeAAD8HgAA/B4AAP4eAAD+HgAACB8AAA8fAAAYHwAAHR8AACgfAAAvHwAAOB8AAD8fAABIHwAATR8AAFkfAABZHwAAWx8AAFsfAABdHwAAXR8AAF8fAABfHwAAaB8AAG8fAAC4HwAAux8AAMgfAADLHwAA2B8AANsfAADoHwAA7B8AAPgfAAD7HwAAAiEAAAIhAAAHIQAAByEAAAshAAANIQAAECEAABIhAAAVIQAAFSEAABkhAAAdIQAAJCEAACQhAAAmIQAAJiEAACghAAAoIQAAKiEAAC0hAAAwIQAAMyEAAD4hAAA/IQAARSEAAEUhAABgIQAAbyEAAIMhAACDIQAAtiQAAM8kAAAALAAALywAAGAsAABgLAAAYiwAAGQsAABnLAAAZywAAGksAABpLAAAaywAAGssAABtLAAAcCwAAHIsAAByLAAAdSwAAHUsAAB+LAAAgCwAAIIsAACCLAAAhCwAAIQsAACGLAAAhiwAAIgsAACILAAAiiwAAIosAACMLAAAjCwAAI4sAACOLAAAkCwAAJAsAACSLAAAkiwAAJQsAACULAAAliwAAJYsAACYLAAAmCwAAJosAACaLAAAnCwAAJwsAACeLAAAniwAAKAsAACgLAAAoiwAAKIsAACkLAAApCwAAKYsAACmLAAAqCwAAKgsAACqLAAAqiwAAKwsAACsLAAAriwAAK4sAACwLAAAsCwAALIsAACyLAAAtCwAALQsAAC2LAAAtiwAALgsAAC4LAAAuiwAALosAAC8LAAAvCwAAL4sAAC+LAAAwCwAAMAsAADCLAAAwiwAAMQsAADELAAAxiwAAMYsAADILAAAyCwAAMosAADKLAAAzCwAAMwsAADOLAAAziwAANAsAADQLAAA0iwAANIsAADULAAA1CwAANYsAADWLAAA2CwAANgsAADaLAAA2iwAANwsAADcLAAA3iwAAN4sAADgLAAA4CwAAOIsAADiLAAA6ywAAOssAADtLAAA7SwAAPIsAADyLAAAQKYAAECmAABCpgAAQqYAAESmAABEpgAARqYAAEamAABIpgAASKYAAEqmAABKpgAATKYAAEymAABOpgAATqYAAFCmAABQpgAAUqYAAFKmAABUpgAAVKYAAFamAABWpgAAWKYAAFimAABapgAAWqYAAFymAABcpgAAXqYAAF6mAABgpgAAYKYAAGKmAABipgAAZKYAAGSmAABmpgAAZqYAAGimAABopgAAaqYAAGqmAABspgAAbKYAAICmAACApgAAgqYAAIKmAACEpgAAhKYAAIamAACGpgAAiKYAAIimAACKpgAAiqYAAIymAACMpgAAjqYAAI6mAACQpgAAkKYAAJKmAACSpgAAlKYAAJSmAACWpgAAlqYAAJimAACYpgAAmqYAAJqmAAAipwAAIqcAACSnAAAkpwAAJqcAACanAAAopwAAKKcAACqnAAAqpwAALKcAACynAAAupwAALqcAADKnAAAypwAANKcAADSnAAA2pwAANqcAADinAAA4pwAAOqcAADqnAAA8pwAAPKcAAD6nAAA+pwAAQKcAAECnAABCpwAAQqcAAESnAABEpwAARqcAAEanAABIpwAASKcAAEqnAABKpwAATKcAAEynAABOpwAATqcAAFCnAABQpwAAUqcAAFKnAABUpwAAVKcAAFanAABWpwAAWKcAAFinAABapwAAWqcAAFynAABcpwAAXqcAAF6nAABgpwAAYKcAAGKnAABipwAAZKcAAGSnAABmpwAAZqcAAGinAABopwAAaqcAAGqnAABspwAAbKcAAG6nAABupwAAeacAAHmnAAB7pwAAe6cAAH2nAAB+pwAAgKcAAICnAACCpwAAgqcAAISnAACEpwAAhqcAAIanAACLpwAAi6cAAI2nAACNpwAAkKcAAJCnAACSpwAAkqcAAJanAACWpwAAmKcAAJinAACapwAAmqcAAJynAACcpwAAnqcAAJ6nAACgpwAAoKcAAKKnAACipwAApKcAAKSnAACmpwAApqcAAKinAACopwAAqqcAAK6nAACwpwAAtKcAALanAAC2pwAAuKcAALinAAC6pwAAuqcAALynAAC8pwAAvqcAAL6nAADApwAAwKcAAMKnAADCpwAAxKcAAMenAADJpwAAyacAAMunAADMpwAA0KcAANCnAADWpwAA1qcAANinAADYpwAA2qcAANqnAADcpwAA3KcAAPWnAAD1pwAAIf8AADr/AAAABAEAJwQBALAEAQDTBAEAcAUBAHoFAQB8BQEAigUBAIwFAQCSBQEAlAUBAJUFAQCADAEAsgwBAFANAQBlDQEAoBgBAL8YAQBAbgEAX24BAADUAQAZ1AEANNQBAE3UAQBo1AEAgdQBAJzUAQCc1AEAntQBAJ/UAQCi1AEAotQBAKXUAQCm1AEAqdQBAKzUAQCu1AEAtdQBANDUAQDp1AEABNUBAAXVAQAH1QEACtUBAA3VAQAU1QEAFtUBABzVAQA41QEAOdUBADvVAQA+1QEAQNUBAETVAQBG1QEARtUBAErVAQBQ1QEAbNUBAIXVAQCg1QEAudUBANTVAQDt1QEACNYBACHWAQA81gEAVdYBAHDWAQCJ1gEAqNYBAMDWAQDi1gEA+tYBABzXAQA01wEAVtcBAG7XAQCQ1wEAqNcBAMrXAQDK1wEAAOkBACHpAQAw8QEASfEBAFDxAQBp8QEAcPEBAInxAQALGAAADRgAAA8YAAAPGAAAAP4AAA/+AAAAAQ4A7wEOADAAAAA5AAAAQQAAAFoAAABfAAAAXwAAAGEAAAB6AAAAqgAAAKoAAAC1AAAAtQAAALcAAAC3AAAAugAAALoAAADAAAAA1gAAANgAAAD2AAAA+AAAAMECAADGAgAA0QIAAOACAADkAgAA7AIAAOwCAADuAgAA7gIAAAADAAB0AwAAdgMAAHcDAAB7AwAAfQMAAH8DAAB/AwAAhgMAAIoDAACMAwAAjAMAAI4DAAChAwAAowMAAPUDAAD3AwAAgQQAAIMEAACHBAAAigQAAC8FAAAxBQAAVgUAAFkFAABZBQAAYAUAAIgFAACRBQAAvQUAAL8FAAC/BQAAwQUAAMIFAADEBQAAxQUAAMcFAADHBQAA0AUAAOoFAADvBQAA8gUAABAGAAAaBgAAIAYAAGkGAABuBgAA0wYAANUGAADcBgAA3wYAAOgGAADqBgAA/AYAAP8GAAD/BgAAEAcAAEoHAABNBwAAsQcAAMAHAAD1BwAA+gcAAPoHAAD9BwAA/QcAAAAIAAAtCAAAQAgAAFsIAABgCAAAaggAAHAIAACHCAAAiQgAAI4IAACXCAAA4QgAAOMIAABjCQAAZgkAAG8JAABxCQAAgwkAAIUJAACMCQAAjwkAAJAJAACTCQAAqAkAAKoJAACwCQAAsgkAALIJAAC2CQAAuQkAALwJAADECQAAxwkAAMgJAADLCQAAzgkAANcJAADXCQAA3AkAAN0JAADfCQAA4wkAAOYJAADxCQAA/AkAAPwJAAD+CQAA/gkAAAEKAAADCgAABQoAAAoKAAAPCgAAEAoAABMKAAAoCgAAKgoAADAKAAAyCgAAMwoAADUKAAA2CgAAOAoAADkKAAA8CgAAPAoAAD4KAABCCgAARwoAAEgKAABLCgAATQoAAFEKAABRCgAAWQoAAFwKAABeCgAAXgoAAGYKAAB1CgAAgQoAAIMKAACFCgAAjQoAAI8KAACRCgAAkwoAAKgKAACqCgAAsAoAALIKAACzCgAAtQoAALkKAAC8CgAAxQoAAMcKAADJCgAAywoAAM0KAADQCgAA0AoAAOAKAADjCgAA5goAAO8KAAD5CgAA/woAAAELAAADCwAABQsAAAwLAAAPCwAAEAsAABMLAAAoCwAAKgsAADALAAAyCwAAMwsAADULAAA5CwAAPAsAAEQLAABHCwAASAsAAEsLAABNCwAAVQsAAFcLAABcCwAAXQsAAF8LAABjCwAAZgsAAG8LAABxCwAAcQsAAIILAACDCwAAhQsAAIoLAACOCwAAkAsAAJILAACVCwAAmQsAAJoLAACcCwAAnAsAAJ4LAACfCwAAowsAAKQLAACoCwAAqgsAAK4LAAC5CwAAvgsAAMILAADGCwAAyAsAAMoLAADNCwAA0AsAANALAADXCwAA1wsAAOYLAADvCwAAAAwAAAwMAAAODAAAEAwAABIMAAAoDAAAKgwAADkMAAA8DAAARAwAAEYMAABIDAAASgwAAE0MAABVDAAAVgwAAFgMAABaDAAAXQwAAF0MAABgDAAAYwwAAGYMAABvDAAAgAwAAIMMAACFDAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvAwAAMQMAADGDAAAyAwAAMoMAADNDAAA1QwAANYMAADdDAAA3gwAAOAMAADjDAAA5gwAAO8MAADxDAAA8wwAAAANAAAMDQAADg0AABANAAASDQAARA0AAEYNAABIDQAASg0AAE4NAABUDQAAVw0AAF8NAABjDQAAZg0AAG8NAAB6DQAAfw0AAIENAACDDQAAhQ0AAJYNAACaDQAAsQ0AALMNAAC7DQAAvQ0AAL0NAADADQAAxg0AAMoNAADKDQAAzw0AANQNAADWDQAA1g0AANgNAADf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CQAAPQkAAD0JAABQCQAAUAkAAFgJAABhCQAAcQkAAIAJAACFCQAAjAkAAI8JAACQCQAAkwkAAKgJAACqCQAAsAkAALIJAACyCQAAtgkAALkJAAC9CQAAvQkAAM4JAADOCQAA3AkAAN0JAADfCQAA4QkAAPAJAADxCQAA/AkAAPwJAAAFCgAACgoAAA8KAAAQCgAAEwoAACgKAAAqCgAAMAoAADIKAAAzCgAANQoAADYKAAA4CgAAOQoAAFkKAABcCgAAXgoAAF4KAAByCgAAdAoAAIUKAACNCgAAjwoAAJEKAACTCgAAqAoAAKoKAACwCgAAsgoAALMKAAC1CgAAuQoAAL0KAAC9CgAA0AoAANAKAADgCgAA4QoAAPkKAAD5CgAABQsAAAwLAAAPCwAAEAsAABMLAAAoCwAAKgsAADALAAAyCwAAMwsAADULAAA5CwAAPQsAAD0LAABcCwAAXQsAAF8LAABhCwAAcQsAAHELAACDCwAAgwsAAIULAACKCwAAjgsAAJALAACSCwAAlQsAAJkLAACaCwAAnAsAAJwLAACeCwAAnwsAAKMLAACkCwAAqAsAAKoLAACuCwAAuQsAANALAADQCwAABQwAAAwMAAAODAAAEAwAABIMAAAoDAAAKgwAADkMAAA9DAAAPQwAAFgMAABaDAAAXQwAAF0MAABgDAAAYQwAAIAMAACADAAAhQwAAIwMAACODAAAkAwAAJIMAACoDAAAqgwAALMMAAC1DAAAuQwAAL0MAAC9DAAA3QwAAN4MAADgDAAA4QwAAPEMAADyDAAABA0AAAwNAAAODQAAEA0AABINAAA6DQAAPQ0AAD0NAABODQAATg0AAFQNAABWDQAAXw0AAGENAAB6DQAAfw0AAIUNAACWDQAAmg0AALENAACzDQAAuw0AAL0NAAC9DQAAwA0AAMYNAAABDgAAMA4AADIOAAAyDgAAQA4AAEYOAACBDgAAgg4AAIQOAACEDgAAhg4AAIoOAACMDgAAow4AAKUOAAClDgAApw4AALAOAACyDgAAsg4AAL0OAAC9DgAAwA4AAMQOAADGDgAAxg4AANwOAADfDgAAAA8AAAAPAABADwAARw8AAEkPAABsDwAAiA8AAIwPAAAAEAAAKhAAAD8QAAA/EAAAUBAAAFUQAABaEAAAXRAAAGEQAABhEAAAZRAAAGYQAABu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BQAAxwUAABAGAAAaBgAASwYAAF8GAABwBgAAcAYAANYGAADcBgAA3wYAAOQGAADnBgAA6AYAAOoGAADtBgAAEQcAABEHAAAwBwAASgcAAKYHAACwBwAA6wcAAPMHAAD9BwAA/QcAABYIAAAZCAAAGwgAACMIAAAlCAAAJwgAACkIAAAtCAAAWQgAAFsIAACXCAAAnwgAAMoIAADhCAAA4wgAAAIJAAA6CQAAOgkAADwJAAA8CQAAQQkAAEgJAABNCQAATQkAAFEJAABXCQAAYgkAAGMJAACBCQAAgQkAALwJAAC8CQAAvgkAAL4JAADBCQAAxAkAAM0JAADNCQAA1wkAANcJAADiCQAA4wkAAP4JAAD+CQAAAQoAAAIKAAA8CgAAPAoAAEEKAABCCgAARwoAAEgKAABLCgAATQoAAFEKAABRCgAAcAoAAHEKAAB1CgAAdQoAAIEKAACCCgAAvAoAALwKAADBCgAAxQoAAMcKAADICgAAzQoAAM0KAADiCgAA4woAAPoKAAD/CgAAAQsAAAELAAA8CwAAPAsAAD4LAAA/CwAAQQsAAEQLAABNCwAATQsAAFULAABXCwAAYgsAAGMLAACCCwAAggsAAL4LAAC+CwAAwAsAAMALAADNCwAAzQsAANcLAADXCwAAAAwAAAAMAAAEDAAABAwAADwMAAA8DAAAPgwAAEAMAABGDAAASAwAAEoMAABNDAAAVQwAAFYMAABiDAAAYwwAAIEMAACBDAAAvAwAALwMAAC/DAAAwAwAAMIMAADCDAAAxgwAAMgMAADKDAAAzQwAANUMAADWDAAA4gwAAOMMAAAADQAAAQ0AADsNAAA8DQAAPg0AAD4NAABBDQAARA0AAE0NAABNDQAAVw0AAFcNAABiDQAAYw0AAIENAACBDQAAyg0AAMoNAADPDQAAzw0AANINAADUDQAA1g0AANYNAADfDQAA3w0AADEOAAAxDgAANA4AADoOAABHDgAATg4AALEOAACxDgAAtA4AALwOAADIDgAAzg4AABgPAAAZDwAANQ8AADUPAAA3DwAANw8AADkPAAA5DwAAcQ8AAH4PAACADwAAhA8AAIYPAACHDwAAjQ8AAJcPAACZDwAAvA8AAMYPAADGDwAALRAAADAQAAAyEAAANxAAADkQAAA6EAAAPRAAAD4QAABYEAAAWRAAAF4QAABg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bwEA8G8BAPFvAQCdvAEAnrwBAADPAQAtzwEAMM8BAEbPAQBl0QEAadEBAG3RAQBy0QEAe9EBAILRAQCF0QEAi9EBAKrRAQCt0QEAQtIBAETSAQAA2gEANtoBADvaAQBs2gEAddoBAHXaAQCE2gEAhNoBAJvaAQCf2gEAodoBAK/aAQAA4AEABuABAAjgAQAY4AEAG+ABACHgAQAj4AEAJOABACbgAQAq4AEAj+ABAI/gAQAw4QEANuEBAK7iAQCu4gEA7OIBAO/iAQDs5AEA7+QBAO7lAQDv5QEA0OgBANboAQBE6QEASukBAPvzAQD/8wEAIAAOAH8ADgAAAQ4A7wEOAAARAABfEQAAYKkAAHypAAAKAAAACgAAAACsAAAArAAAHKwAABysAAA4rAAAOKwAAFSsAABUrAAAcKwAAHCsAACMrAAAjKwAAKisAACorAAAxKwAAMSsAADgrAAA4KwAAPysAAD8rAAAGK0AABitAAA0rQAANK0AAFCtAABQrQAAbK0AAGytAACIrQAAiK0AAKStAACkrQAAwK0AAMCtAADcrQAA3K0AAPitAAD4rQAAFK4AABSuAAAwrgAAMK4AAEyuAABMrgAAaK4AAGiuAACErgAAhK4AAKCuAACgrgAAvK4AALyuAADYrgAA2K4AAPSuAAD0rgAAEK8AABCvAAAsrwAALK8AAEivAABIrwAAZK8AAGSvAACArwAAgK8AAJyvAACcrwAAuK8AALivAADUrwAA1K8AAPCvAADwrwAADLAAAAywAAAosAAAKLAAAESwAABEsAAAYLAAAGCwAAB8sAAAfLAAAJiwAACYsAAAtLAAALSwAADQsAAA0LAAAOywAADssAAACLEAAAixAAAksQAAJLEAAECxAABAsQAAXLEAAFyxAAB4sQAAeLEAAJSxAACUsQAAsLEAALCxAADMsQAAzLEAAOixAADosQAABLIAAASyAAAgsgAAILIAADyyAAA8sgAAWLIAAFiyAAB0sgAAdLIAAJCyAACQsgAArLIAAKyyAADIsgAAyLIAAOSyAADksgAAALMAAACzAAAcswAAHLMAADizAAA4swAAVLMAAFSzAABwswAAcLMAAIyzAACMswAAqLMAAKizAADEswAAxLMAAOCzAADgswAA/LMAAPyzAAAYtAAAGLQAADS0AAA0tAAAULQAAFC0AABstAAAbLQAAIi0AACItAAApLQAAKS0AADAtAAAwLQAANy0AADctAAA+LQAAPi0AAAUtQAAFLUAADC1AAAwtQAATLUAAEy1AABotQAAaLUAAIS1AACEtQAAoLUAAKC1AAC8tQAAvLUAANi1AADYtQAA9LUAAPS1AAAQtgAAELYAACy2AAAstgAASLYAAEi2AABktgAAZLYAAIC2AACAtgAAnLYAAJy2AAC4tgAAuLYAANS2AADUtgAA8LYAAPC2AAAMtwAADLcAACi3AAAotwAARLcAAES3AABgtwAAYLcAAHy3AAB8twAAmLcAAJi3AAC0twAAtLcAANC3AADQtwAA7LcAAOy3AAAIuAAACLgAACS4AAAkuAAAQLgAAEC4AABcuAAAXLgAAHi4AAB4uAAAlLgAAJS4AACwuAAAsLgAAMy4AADMuAAA6LgAAOi4AAAEuQAABLkAACC5AAAguQAAPLkAADy5AABYuQAAWLkAAHS5AAB0uQAAkLkAAJC5AACsuQAArLkAAMi5AADIuQAA5LkAAOS5AAAAugAAALoAABy6AAAcugAAOLoAADi6AABUugAAVLoAAHC6AABwugAAjLoAAIy6AACougAAqLoAAMS6AADEugAA4LoAAOC6AAD8ugAA/LoAABi7AAAYuwAANLsAADS7AABQuwAAULsAAGy7AABsuwAAiLsAAIi7AACkuwAApLsAAMC7AADAuwAA3LsAANy7AAD4uwAA+LsAABS8AAAUvAAAMLwAADC8AABMvAAATLwAAGi8AABovAAAhLwAAIS8AACgvAAAoLwAALy8AAC8vAAA2LwAANi8AAD0vAAA9LwAABC9AAAQvQAALL0AACy9AABIvQAASL0AAGS9AABkvQAAgL0AAIC9AACcvQAAnL0AALi9AAC4vQAA1L0AANS9AADwvQAA8L0AAAy+AAAMvgAAKL4AACi+AABEvgAARL4AAGC+AABgvgAAfL4AAHy+AACYvgAAmL4AALS+AAC0vgAA0L4AANC+AADsvgAA7L4AAAi/AAAIvwAAJL8AACS/AABAvwAAQL8AAFy/AABcvwAAeL8AAHi/AACUvwAAlL8AALC/AACwvwAAzL8AAMy/AADovwAA6L8AAATAAAAEwAAAIMAAACDAAAA8wAAAPMAAAFjAAABYwAAAdMAAAHTAAACQwAAAkMAAAKzAAACswAAAyMAAAMjAAADkwAAA5MAAAADBAAAAwQAAHMEAABzBAAA4wQAAOMEAAFTBAABUwQAAcMEAAHDBAACMwQAAjMEAAKjBAACowQAAxMEAAMTBAADgwQAA4MEAAPzBAAD8wQAAGMIAABjCAAA0wgAANMIAAFDCAABQwgAAbMIAAGzCAACIwgAAiMIAAKTCAACkwgAAwMIAAMDCAADcwgAA3MIAAPjCAAD4wgAAFMMAABTDAAAwwwAAMMMAAEzDAABMwwAAaMMAAGjDAACEwwAAhMMAAKDDAACgwwAAvMMAALzDAADYwwAA2MMAAPTDAAD0wwAAEMQAABDEAAAsxAAALMQAAEjEAABIxAAAZMQAAGTEAACAxAAAgMQAAJzEAACcxAAAuMQAALjEAADUxAAA1MQAAPDEAADwxAAADMUAAAzFAAAoxQAAKMUAAETFAABExQAAYMUAAGDFAAB8xQAAfMUAAJjFAACYxQAAtMUAALTFAADQxQAA0MUAAOzFAADsxQAACMYAAAjGAAAkxgAAJMYAAEDGAABAxgAAXMYAAFzGAAB4xgAAeMYAAJTGAACUxgAAsMYAALDGAADMxgAAzMYAAOjGAADoxgAABMcAAATHAAAgxwAAIMcAADzHAAA8xwAAWMcAAFjHAAB0xwAAdMcAAJDHAACQxwAArMcAAKzHAADIxwAAyMcAAOTHAADkxwAAAMgAAADIAAAcyAAAHMgAADjIAAA4yAAAVMgAAFTIAABwyAAAcMgAAIzIAACMyAAAqMgAAKjIAADEyAAAxMgAAODIAADgyAAA/MgAAPzIAAAYyQAAGMkAADTJAAA0yQAAUMkAAFDJAABsyQAAbMkAAIjJAACIyQAApMkAAKTJAADAyQAAwMkAANzJAADcyQAA+MkAAPjJAAAUygAAFMoAADDKAAAwygAATMoAAEzKAABoygAAaMoAAITKAACEygAAoMoAAKDKAAC8ygAAvMoAANjKAADYygAA9MoAAPTKAAAQywAAEMsAACzLAAAsywAASMsAAEjLAABkywAAZMsAAIDLAACAywAAnMsAAJzLAAC4ywAAuMsAANTLAADUywAA8MsAAPDLAAAMzAAADMwAACjMAAAozAAARMwAAETMAABgzAAAYMwAAHzMAAB8zAAAmMwAAJjMAAC0zAAAtMwAANDMAADQzAAA7MwAAOzMAAAIzQAACM0AACTNAAAkzQAAQM0AAEDNAABczQAAXM0AAHjNAAB4zQAAlM0AAJTNAACwzQAAsM0AAMzNAADMzQAA6M0AAOjNAAAEzgAABM4AACDOAAAgzgAAPM4AADzOAABYzgAAWM4AAHTOAAB0zgAAkM4AAJDOAACszgAArM4AAMjOAADIzgAA5M4AAOTOAAAAzwAAAM8AABzPAAAczwAAOM8AADjPAABUzwAAVM8AAHDPAABwzwAAjM8AAIzPAACozwAAqM8AAMTPAADEzwAA4M8AAODPAAD8zwAA/M8AABjQAAAY0AAANNAAADTQAABQ0AAAUNAAAGzQAABs0AAAiNAAAIjQAACk0AAApNAAAMDQAADA0AAA3NAAANzQAAD40AAA+NAAABTRAAAU0QAAMNEAADDRAABM0QAATNEAAGjRAABo0QAAhNEAAITRAACg0QAAoNEAALzRAAC80QAA2NEAANjRAAD00QAA9NEAABDSAAAQ0gAALNIAACzSAABI0gAASNIAAGTSAABk0gAAgNIAAIDSAACc0gAAnNIAALjSAAC40gAA1NIAANTSAADw0gAA8NIAAAzTAAAM0wAAKNMAACjTAABE0wAARNMAAGDTAABg0wAAfNMAAHzTAACY0wAAmNMAALTTAAC00wAA0NMAANDTAADs0wAA7NMAAAjUAAAI1AAAJNQAACTUAABA1AAAQNQAAFzUAABc1AAAeNQAAHjUAACU1AAAlNQAALDUAACw1AAAzNQAAMzUAADo1AAA6NQAAATVAAAE1QAAINUAACDVAAA81QAAPNUAAFjVAABY1QAAdNUAAHTVAACQ1QAAkNUAAKzVAACs1QAAyNUAAMjVAADk1QAA5NUAAADWAAAA1gAAHNYAABzWAAA41gAAONYAAFTWAABU1gAAcNYAAHDWAACM1gAAjNYAAKjWAACo1gAAxNYAAMTWAADg1gAA4NYAAPzWAAD81gAAGNcAABjXAAA01wAANNcAAFDXAABQ1wAAbNcAAGzXAACI1wAAiNcAAAGsAAAbrAAAHawAADesAAA5rAAAU6wAAFWsAABvrAAAcawAAIusAACNrAAAp6wAAKmsAADDrAAAxawAAN+sAADhrAAA+6wAAP2sAAAXrQAAGa0AADOtAAA1rQAAT60AAFGtAABrrQAAba0AAIetAACJrQAAo60AAKWtAAC/rQAAwa0AANutAADdrQAA960AAPmtAAATrgAAFa4AAC+uAAAxrgAAS64AAE2uAABnrgAAaa4AAIOuAACFrgAAn64AAKGuAAC7rgAAva4AANeuAADZrgAA864AAPWuAAAPrwAAEa8AACuvAAAtrwAAR68AAEmvAABjrwAAZa8AAH+vAACBrwAAm68AAJ2vAAC3rwAAua8AANOvAADVrwAA768AAPGvAAALsAAADbAAACewAAApsAAAQ7AAAEWwAABfsAAAYbAAAHuwAAB9sAAAl7AAAJmwAACzsAAAtbAAAM+wAADRsAAA67AAAO2wAAAHsQAACbEAACOxAAAlsQAAP7EAAEGxAABbsQAAXbEAAHexAAB5sQAAk7EAAJWxAACvsQAAsbEAAMuxAADNsQAA57EAAOmxAAADsgAABbIAAB+yAAAhsgAAO7IAAD2yAABXsgAAWbIAAHOyAAB1sgAAj7IAAJGyAACrsgAArbIAAMeyAADJsgAA47IAAOWyAAD/sgAAAbMAABuzAAAdswAAN7MAADmzAABTswAAVbMAAG+zAABxswAAi7MAAI2zAACnswAAqbMAAMOzAADFswAA37MAAOGzAAD7swAA/bMAABe0AAAZtAAAM7QAADW0AABPtAAAUbQAAGu0AABttAAAh7QAAIm0AACjtAAApbQAAL+0AADBtAAA27QAAN20AAD3tAAA+bQAABO1AAAVtQAAL7UAADG1AABLtQAATbUAAGe1AABptQAAg7UAAIW1AACftQAAobUAALu1AAC9tQAA17UAANm1AADztQAA9bUAAA+2AAARtgAAK7YAAC22AABHtgAASbYAAGO2AABltgAAf7YAAIG2AACbtgAAnbYAALe2AAC5tgAA07YAANW2AADvtgAA8bYAAAu3AAANtwAAJ7cAACm3AABDtwAARbcAAF+3AABhtwAAe7cAAH23AACXtwAAmbcAALO3AAC1twAAz7cAANG3AADrtwAA7bcAAAe4AAAJuAAAI7gAACW4AAA/uAAAQbgAAFu4AABduAAAd7gAAHm4AACTuAAAlbgAAK+4AACxuAAAy7gAAM24AADnuAAA6bgAAAO5AAAFuQAAH7kAACG5AAA7uQAAPbkAAFe5AABZuQAAc7kAAHW5AACPuQAAkbkAAKu5AACtuQAAx7kAAMm5AADjuQAA5bkAAP+5AAABugAAG7oAAB26AAA3ugAAOboAAFO6AABVugAAb7oAAHG6AACLugAAjboAAKe6AACpugAAw7oAAMW6AADfugAA4boAAPu6AAD9ugAAF7sAABm7AAAzuwAANbsAAE+7AABRuwAAa7sAAG27AACHuwAAibsAAKO7AACluwAAv7sAAMG7AADbuwAA3bsAAPe7AAD5uwAAE7wAABW8AAAvvAAAMbwAAEu8AABNvAAAZ7wAAGm8AACDvAAAhbwAAJ+8AAChvAAAu7wAAL28AADXvAAA2bwAAPO8AAD1vAAAD70AABG9AAArvQAALb0AAEe9AABJvQAAY70AAGW9AAB/vQAAgb0AAJu9AACdvQAAt70AALm9AADTvQAA1b0AAO+9AADxvQAAC74AAA2+AAAnvgAAKb4AAEO+AABFvgAAX74AAGG+AAB7vgAAfb4AAJe+AACZvgAAs74AALW+AADPvgAA0b4AAOu+AADtvgAAB78AAAm/AAAjvwAAJb8AAD+/AABBvwAAW78AAF2/AAB3vwAAeb8AAJO/AACVvwAAr78AALG/AADLvwAAzb8AAOe/AADpvwAAA8AAAAXAAAAfwAAAIcAAADvAAAA9wAAAV8AAAFnAAABzwAAAdcAAAI/AAACRwAAAq8AAAK3AAADHwAAAycAAAOPAAADlwAAA/8AAAAHBAAAbwQAAHcEAADfBAAA5wQAAU8EAAFXBAABvwQAAccEAAIvBAACNwQAAp8EAAKnBAADDwQAAxcEAAN/BAADhwQAA+8EAAP3BAAAXwgAAGcIAADPCAAA1wgAAT8IAAFHCAABrwgAAbcIAAIfCAACJwgAAo8IAAKXCAAC/wgAAwcIAANvCAADdwgAA98IAAPnCAAATwwAAFcMAAC/DAAAxwwAAS8MAAE3DAABnwwAAacMAAIPDAACFwwAAn8MAAKHDAAC7wwAAvcMAANfDAADZwwAA88MAAPXDAAAPxAAAEcQAACvEAAAtxAAAR8QAAEnEAABjxAAAZcQAAH/EAACBxAAAm8QAAJ3EAAC3xAAAucQAANPEAADVxAAA78QAAPHEAAALxQAADcUAACfFAAApxQAAQ8UAAEXFAABfxQAAYcUAAHvFAAB9xQAAl8UAAJnFAACzxQAAtcUAAM/FAADRxQAA68UAAO3FAAAHxgAACcYAACPGAAAlxgAAP8YAAEHGAABbxgAAXcYAAHfGAAB5xgAAk8YAAJXGAACvxgAAscYAAMvGAADNxgAA58YAAOnGAAADxwAABccAAB/HAAAhxwAAO8cAAD3HAABXxwAAWccAAHPHAAB1xwAAj8cAAJHHAACrxwAArccAAMfHAADJxwAA48cAAOXHAAD/xwAAAcgAABvIAAAdyAAAN8gAADnIAABTyAAAVcgAAG/IAABxyAAAi8gAAI3IAACnyAAAqcgAAMPIAADFyAAA38gAAOHIAAD7yAAA/cgAABfJAAAZyQAAM8kAADXJAABPyQAAUckAAGvJAABtyQAAh8kAAInJAACjyQAApckAAL/JAADByQAA28kAAN3JAAD3yQAA+ckAABPKAAAVygAAL8oAADHKAABLygAATcoAAGfKAABpygAAg8oAAIXKAACfygAAocoAALvKAAC9ygAA18oAANnKAADzygAA9coAAA/LAAARywAAK8sAAC3LAABHywAAScsAAGPLAABlywAAf8sAAIHLAACbywAAncsAALfLAAC5ywAA08sAANXLAADvywAA8csAAAvMAAANzAAAJ8wAACnMAABDzAAARcwAAF/MAABhzAAAe8wAAH3MAACXzAAAmcwAALPMAAC1zAAAz8wAANHMAADrzAAA7cwAAAfNAAAJzQAAI80AACXNAAA/zQAAQc0AAFvNAABdzQAAd80AAHnNAACTzQAAlc0AAK/NAACxzQAAy80AAM3NAADnzQAA6c0AAAPOAAAFzgAAH84AACHOAAA7zgAAPc4AAFfOAABZzgAAc84AAHXOAACPzgAAkc4AAKvOAACtzgAAx84AAMnOAADjzgAA5c4AAP/OAAABzwAAG88AAB3PAAA3zwAAOc8AAFPPAABVzwAAb88AAHHPAACLzwAAjc8AAKfPAACpzwAAw88AAMXPAADfzwAA4c8AAPvPAAD9zwAAF9AAABnQAAAz0AAANdAAAE/QAABR0AAAa9AAAG3QAACH0AAAidAAAKPQAACl0AAAv9AAAMHQAADb0AAA3dAAAPfQAAD50AAAE9EAABXRAAAv0QAAMdEAAEvRAABN0QAAZ9EAAGnRAACD0QAAhdEAAJ/RAACh0QAAu9EAAL3RAADX0QAA2dEAAPPRAAD10QAAD9IAABHSAAAr0gAALdIAAEfSAABJ0gAAY9IAAGXSAAB/0gAAgdIAAJvSAACd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AQAAUQEAAFMBAABTAQAAVQEAAFUBAABXAQAAVwEAAFkBAABZAQAAWwEAAFsBAABdAQAAXQEAAF8BAABfAQAAYQEAAGEBAABjAQAAYwEAAGUBAABlAQAAZwEAAGcBAABpAQAAaQEAAGsBAABrAQAAbQEAAG0BAABvAQAAbwEAAHEBAABxAQAAcwEAAHMBAAB1AQAAdQEAAHcBAAB3AQAAegEAAHoBAAB8AQAAfAEAAH4BAACAAQAAgwEAAIMBAACFAQAAhQEAAIgBAACIAQAAjAEAAI0BAACSAQAAkgEAAJUBAACVAQAAmQEAAJsBAACeAQAAngEAAKEBAAChAQAAowEAAKMBAAClAQAApQEAAKgBAACoAQAAqgEAAKsBAACtAQAArQEAALABAACwAQAAtAEAALQBAAC2AQAAtgEAALkBAAC6AQAAvQEAAL8BAADGAQAAxgEAAMkBAADJAQAAzAEAAMwBAADOAQAAzgEAANABAADQAQAA0gEAANIBAADUAQAA1AEAANYBAADWAQAA2AEAANgBAADaAQAA2gEAANwBAADdAQAA3wEAAN8BAADhAQAA4QEAAOMBAADjAQAA5QEAAOUBAADnAQAA5wEAAOkBAADpAQAA6wEAAOsBAADtAQAA7QEAAO8BAADwAQAA8wEAAPMBAAD1AQAA9QEAAPkBAAD5AQAA+wEAAPsBAAD9AQAA/QEAAP8BAAD/AQAAAQIAAAECAAADAgAAAwIAAAUCAAAFAgAABwIAAAcCAAAJAgAACQIAAAsCAAALAgAADQIAAA0CAAAPAgAADwIAABECAAARAgAAEwIAABMCAAAVAgAAFQIAABcCAAAXAgAAGQIAABkCAAAbAgAAGwIAAB0CAAAdAgAAHwIAAB8CAAAhAgAAIQIAACMCAAAjAgAAJQIAACUCAAAnAgAAJwIAACkCAAApAgAAKwIAACsCAAAtAgAALQIAAC8CAAAvAgAAMQIAADECAAAzAgAAOQIAADwCAAA8AgAAPwIAAEACAABCAgAAQgIAAEcCAABHAgAASQIAAEkCAABLAgAASwIAAE0CAABNAgAATwIAAJMCAACVAgAAuAIAAMACAADBAgAA4AIAAOQCAABxAwAAcQMAAHMDAABzAwAAdwMAAHcDAAB6AwAAfQMAAJADAACQAwAArAMAAM4DAADQAwAA0QMAANUDAADXAwAA2QMAANkDAADbAwAA2wMAAN0DAADdAwAA3wMAAN8DAADhAwAA4QMAAOMDAADjAwAA5QMAAOUDAADnAwAA5wMAAOkDAADpAwAA6wMAAOsDAADtAwAA7QMAAO8DAADzAwAA9QMAAPUDAAD4AwAA+AMAAPsDAAD8AwAAMAQAAF8EAABhBAAAYQQAAGMEAABjBAAAZQQAAGUEAABnBAAAZwQAAGkEAABpBAAAawQAAGsEAABtBAAAbQQAAG8EAABvBAAAcQQAAHEEAABzBAAAcwQAAHUEAAB1BAAAdwQAAHcEAAB5BAAAeQQAAHsEAAB7BAAAfQQAAH0EAAB/BAAAfwQAAIEEAACBBAAAiwQAAIsEAACNBAAAjQQAAI8EAACPBAAAkQQAAJEEAACTBAAAkwQAAJUEAACVBAAAlwQAAJcEAACZBAAAmQQAAJsEAACbBAAAnQQAAJ0EAACfBAAAnwQAAKEEAAChBAAAowQAAKMEAAClBAAApQQAAKcEAACnBAAAqQQAAKkEAACrBAAAqwQAAK0EAACtBAAArwQAAK8EAACxBAAAsQQAALMEAACzBAAAtQQAALUEAAC3BAAAtwQAALkEAAC5BAAAuwQAALsEAAC9BAAAvQQAAL8EAAC/BAAAwgQAAMIEAADEBAAAxAQAAMYEAADGBAAAyAQAAMgEAADKBAAAygQAAMwEAADMBAAAzgQAAM8EAADRBAAA0QQAANMEAADTBAAA1QQAANUEAADXBAAA1wQAANkEAADZBAAA2wQAANsEAADdBAAA3QQAAN8EAADfBAAA4QQAAOEEAADjBAAA4wQAAOUEAADlBAAA5wQAAOcEAADpBAAA6QQAAOsEAADrBAAA7QQAAO0EAADvBAAA7wQAAPEEAADxBAAA8wQAAPMEAAD1BAAA9QQAAPcEAAD3BAAA+QQAAPkEAAD7BAAA+wQAAP0EAAD9BAAA/wQAAP8EAAABBQAAAQUAAAMFAAADBQAABQUAAAUFAAAHBQAABwUAAAkFAAAJBQAACwUAAAsFAAANBQAADQUAAA8FAAAPBQAAEQUAABEFAAATBQAAEwUAABUFAAAVBQAAFwUAABcFAAAZBQAAGQUAABsFAAAbBQAAHQUAAB0FAAAfBQAAHwUAACEFAAAhBQAAIwUAACMFAAAlBQAAJQUAACcFAAAnBQAAKQUAACkFAAArBQAAKwUAAC0FAAAtBQAALwUAAC8FAABgBQAAiAUAAPwQAAD8EAAA+BMAAP0TAACAHAAAiBwAAIocAACKHAAAAB0AAL8dAAABHgAAAR4AAAMeAAADHgAABR4AAAUeAAAHHgAABx4AAAkeAAAJHgAACx4AAAseAAANHgAADR4AAA8eAAAPHgAAER4AABEeAAATHgAAEx4AABUeAAAVHgAAFx4AABceAAAZHgAAGR4AABseAAAbHgAAHR4AAB0eAAAfHgAAHx4AACEeAAAhHgAAIx4AACMeAAAlHgAAJR4AACceAAAnHgAAKR4AACkeAAArHgAAKx4AAC0eAAAtHgAALx4AAC8eAAAxHgAAMR4AADMeAAAzHgAANR4AADUeAAA3HgAANx4AADkeAAA5HgAAOx4AADseAAA9HgAAPR4AAD8eAAA/HgAAQR4AAEEeAABDHgAAQx4AAEUeAABFHgAARx4AAEceAABJHgAASR4AAEseAABLHgAATR4AAE0eAABPHgAATx4AAFEeAABRHgAAUx4AAFMeAABVHgAAVR4AAFceAABXHgAAWR4AAFkeAABbHgAAWx4AAF0eAABdHgAAXx4AAF8eAABhHgAAYR4AAGMeAABjHgAAZR4AAGUeAABnHgAAZx4AAGkeAABpHgAAax4AAGseAABtHgAAbR4AAG8eAABvHgAAcR4AAHEeAABzHgAAcx4AAHUeAAB1HgAAdx4AAHceAAB5HgAAeR4AAHseAAB7HgAAfR4AAH0eAAB/HgAAfx4AAIEeAACBHgAAgx4AAIMeAACFHgAAhR4AAIceAACHHgAAiR4AAIkeAACLHgAAix4AAI0eAACNHgAAjx4AAI8eAACRHgAAkR4AAJMeAACTHgAAlR4AAJ0eAACfHgAAnx4AAKEeAAChHgAAox4AAKMeAAClHgAApR4AAKceAACnHgAAqR4AAKkeAACrHgAAqx4AAK0eAACtHgAArx4AAK8eAACxHgAAsR4AALMeAACzHgAAtR4AALUeAAC3HgAAtx4AALkeAAC5HgAAux4AALseAAC9HgAAvR4AAL8eAAC/HgAAwR4AAMEeAADDHgAAwx4AAMUeAADFHgAAxx4AAMceAADJHgAAyR4AAMseAADLHgAAzR4AAM0eAADPHgAAzx4AANEeAADRHgAA0x4AANMeAADVHgAA1R4AANceAADXHgAA2R4AANkeAADbHgAA2x4AAN0eAADdHgAA3x4AAN8eAADhHgAA4R4AAOMeAADjHgAA5R4AAOUeAADnHgAA5x4AAOkeAADpHgAA6x4AAOseAADtHgAA7R4AAO8eAADvHgAA8R4AAPEeAADzHgAA8x4AAPUeAAD1HgAA9x4AAPceAAD5HgAA+R4AAPseAAD7HgAA/R4AAP0eAAD/HgAABx8AABAfAAAVHwAAIB8AACcfAAAwHwAANx8AAEAfAABFHwAAUB8AAFcfAABgHwAAZx8AAHAfAAB9HwAAgB8AAIcfAACQHwAAlx8AAKAfAACnHwAAsB8AALQfAAC2HwAAtx8AAL4fAAC+HwAAwh8AAMQfAADGHwAAxx8AANAfAADTHwAA1h8AANcfAADgHwAA5x8AAPIfAAD0HwAA9h8AAPcfAABxIAAAcSAAAH8gAAB/IAAAkCAAAJwgAAAKIQAACiEAAA4hAAAPIQAAEyEAABMhAAAvIQAALyEAADQhAAA0IQAAOSEAADkhAAA8IQAAPSEAAEYhAABJIQAATiEAAE4hAABwIQAAfyEAAIQhAACEIQAA0CQAAOkkAAAwLAAAXywAAGEsAABhLAAAZSwAAGYsAABoLAAAaCwAAGosAABqLAAAbCwAAGwsAABxLAAAcSwAAHMsAAB0LAAAdiwAAH0sAACBLAAAgSwAAIMsAACDLAAAhSwAAIUsAACHLAAAhywAAIksAACJLAAAiywAAIssAACNLAAAjSwAAI8sAACPLAAAkSwAAJEsAACTLAAAkywAAJUsAACVLAAAlywAAJcsAACZLAAAmSwAAJssAACbLAAAnSwAAJ0sAACfLAAAnywAAKEsAAChLAAAoywAAKMsAAClLAAApSwAAKcsAACnLAAAqSwAAKksAACrLAAAqywAAK0sAACtLAAArywAAK8sAACxLAAAsSwAALMsAACzLAAAtSwAALUsAAC3LAAAtywAALksAAC5LAAAuywAALssAAC9LAAAvSwAAL8sAAC/LAAAwSwAAMEsAADDLAAAwywAAMUsAADFLAAAxywAAMcsAADJLAAAySwAAMssAADLLAAAzSwAAM0sAADPLAAAzywAANEsAADRLAAA0ywAANMsAADVLAAA1SwAANcsAADXLAAA2SwAANksAADbLAAA2ywAAN0sAADdLAAA3ywAAN8sAADhLAAA4SwAAOMsAADkLAAA7CwAAOwsAADuLAAA7iwAAPMsAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAQaYAAEGmAABDpgAAQ6YAAEWmAABFpgAAR6YAAEemAABJpgAASaYAAEumAABLpgAATaYAAE2mAABPpgAAT6YAAFGmAABRpgAAU6YAAFOmAABVpgAAVaYAAFemAABXpgAAWaYAAFmmAABbpgAAW6YAAF2mAABdpgAAX6YAAF+mAABhpgAAYaYAAGOmAABjpgAAZaYAAGWmAABnpgAAZ6YAAGmmAABppgAAa6YAAGumAABtpgAAbaYAAIGmAACBpgAAg6YAAIOmAACFpgAAhaYAAIemAACHpgAAiaYAAImmAACLpgAAi6YAAI2mAACNpgAAj6YAAI+mAACRpgAAkaYAAJOmAACTpgAAlaYAAJWmAACXpgAAl6YAAJmmAACZpgAAm6YAAJ2mAAAjpwAAI6cAACWnAAAlpwAAJ6cAACenAAAppwAAKacAACunAAArpwAALacAAC2nAAAvpwAAMacAADOnAAAzpwAANacAADWnAAA3pwAAN6cAADmnAAA5pwAAO6cAADunAAA9pwAAPacAAD+nAAA/pwAAQacAAEGnAABDpwAAQ6cAAEWnAABFpwAAR6cAAEenAABJpwAASacAAEunAABLpwAATacAAE2nAABPpwAAT6cAAFGnAABRpwAAU6cAAFOnAABVpwAAVacAAFenAABXpwAAWacAAFmnAABbpwAAW6cAAF2nAABdpwAAX6cAAF+nAABhpwAAYacAAGOnAABjpwAAZacAAGWnAABnpwAAZ6cAAGmnAABppwAAa6cAAGunAABtpwAAbacAAG+nAAB4pwAAeqcAAHqnAAB8pwAAfKcAAH+nAAB/pwAAgacAAIGnAACDpwAAg6cAAIWnAACFpwAAh6cAAIenAACMpwAAjKcAAI6nAACOpwAAkacAAJGnAACTpwAAlacAAJenAACXpwAAmacAAJmnAACbpwAAm6cAAJ2nAACdpwAAn6cAAJ+nAAChpwAAoacAAKOnAACjpwAApacAAKWnAACnpwAAp6cAAKmnAACppwAAr6cAAK+nAAC1pwAAtacAALenAAC3pwAAuacAALmnAAC7pwAAu6cAAL2nAAC9pwAAv6cAAL+nAADBpwAAwacAAMOnAADD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EwEA1RMBAEsUAQBMFAEAwhUBAMMVAQDJFQEA1xUBAEEWAQBCFgEAPBcBAD4XAQBEGQEARBkBAEYZAQBGGQEAQhoBAEMaAQCbGgEAnBoBAEEcAQBCHAEA9x4BAPgeAQBDHwEARB8BAG5qAQBvagEA9WoBAPVqAQA3awEAOGsBAERrAQBEawEAbm0BAG9tAQCYbgEAmG4BAJ+8AQCfvAEAiNoBAIjaAQCFAAAAhQAAACggAAApIAAACQAAAAkAAAALAAAADAAAACAAAAAgAAAAoAAAAKAAAACAFgAAgBYAAAAgAAAKIAAALyAAAC8gAABfIAAAXyAAAAAwAAAAMAAAQQAAAFoAAADAAAAA1gAAANgAAADeAAAAAAEAAAABAAACAQAAAgEAAAQBAAAEAQAABgEAAAYBAAAIAQAACAEAAAoBAAAKAQAADAEAAAwBAAAOAQAADgEAABABAAAQAQAAEgEAABIBAAAUAQAAFAEAABYBAAAWAQAAGAEAABgBAAAaAQAAGgEAABwBAAAcAQAAHgEAAB4BAAAgAQAAIAEAACIBAAAiAQAAJAEAACQBAAAmAQAAJgEAACgBAAAoAQAAKgEAACoBAAAsAQAALAEAAC4BAAAuAQAAMAEAADABAAAyAQAAMgEAADQBAAA0AQAANgEAADYBAAA5AQAAOQEAADsBAAA7AQAAPQEAAD0BAAA/AQAAPwEAAEEBAABBAQAAQwEAAEMBAABFAQAARQEAAEcBAABHAQAASgEAAEoBAABMAQAATAEAAE4BAABOAQAAUAEAAFABAABSAQAAUgEAAFQBAABUAQAAVgEAAFYBAABYAQAAWAEAAFoBAABaAQAAXAEAAFwBAABeAQAAXgEAAGABAABgAQAAYgEAAGIBAABkAQAAZAEAAGYBAABmAQAAaAEAAGgBAABqAQAAagEAAGwBAABsAQAAbgEAAG4BAABwAQAAcAEAAHIBAAByAQAAdAEAAHQBAAB2AQAAdgEAAHgBAAB5AQAAewEAAHsBAAB9AQAAfQEAAIEBAACCAQAAhAEAAIQBAACGAQAAhwEAAIkBAACLAQAAjgEAAJEBAACTAQAAlAEAAJYBAACYAQAAnAEAAJ0BAACfAQAAoAEAAKIBAACiAQAApAEAAKQBAACmAQAApwEAAKkBAACpAQAArAEAAKwBAACuAQAArwEAALEBAACzAQAAtQEAALUBAAC3AQAAuAEAALwBAAC8AQAAxAEAAMUBAADHAQAAyAEAAMoBAADLAQAAzQEAAM0BAADPAQAAzwEAANEBAADRAQAA0wEAANMBAADVAQAA1QEAANcBAADXAQAA2QEAANkBAADbAQAA2wEAAN4BAADeAQAA4AEAAOABAADiAQAA4gEAAOQBAADkAQAA5gEAAOYBAADoAQAA6AEAAOoBAADqAQAA7AEAAOwBAADuAQAA7gEAAPEBAADyAQAA9AEAAPQBAAD2AQAA+AEAAPoBAAD6AQAA/AEAAPwBAAD+AQAA/gEAAAACAAAAAgAAAgIAAAICAAAEAgAABAIAAAYCAAAGAgAACAIAAAgCAAAKAgAACgIAAAwCAAAMAgAADgIAAA4CAAAQAgAAEAIAABICAAASAgAAFAIAABQCAAAWAgAAFgIAABgCAAAYAgAAGgIAABoCAAAcAgAAHAIAAB4CAAAeAgAAIAIAACACAAAiAgAAIgIAACQCAAAkAgAAJgIAACYCAAAoAgAAKAIAACoCAAAqAgAALAIAACwCAAAuAgAALgIAADACAAAwAgAAMgIAADICAAA6AgAAOwIAAD0CAAA+AgAAQQIAAEECAABDAgAARgIAAEgCAABIAgAASgIAAEoCAABMAgAATAIAAE4CAABOAgAAcAMAAHADAAByAwAAcgMAAHYDAAB2AwAAfwMAAH8DAACGAwAAhgMAAIgDAACKAwAAjAMAAIwDAACOAwAAjwMAAJEDAAChAwAAowMAAKsDAADPAwAAzwMAANIDAADUAwAA2AMAANgDAADaAwAA2gMAANwDAADcAwAA3gMAAN4DAADgAwAA4AMAAOIDAADiAwAA5AMAAOQDAADmAwAA5gMAAOgDAADoAwAA6gMAAOoDAADsAwAA7AMAAO4DAADuAwAA9AMAAPQDAAD3AwAA9wMAAPkDAAD6AwAA/QMAAC8EAABgBAAAYAQAAGIEAABiBAAAZAQAAGQEAABmBAAAZgQAAGgEAABoBAAAagQAAGoEAABsBAAAbAQAAG4EAABuBAAAcAQAAHAEAAByBAAAcgQAAHQEAAB0BAAAdgQAAHYEAAB4BAAAeAQAAHoEAAB6BAAAfAQAAHwEAAB+BAAAfgQAAIAEAACABAAAigQAAIoEAACMBAAAjAQAAI4EAACOBAAAkAQAAJAEAACSBAAAkgQAAJQEAACUBAAAlgQAAJYEAACYBAAAmAQAAJoEAACaBAAAnAQAAJwEAACeBAAAngQAAKAEAACgBAAAogQAAKIEAACkBAAApAQAAKYEAACmBAAAqAQAAKgEAACqBAAAqgQAAKwEAACsBAAArgQAAK4EAACwBAAAsAQAALIEAACyBAAAtAQAALQEAAC2BAAAtgQAALgEAAC4BAAAugQAALoEAAC8BAAAvAQAAL4EAAC+BAAAwAQAAMEEAADDBAAAwwQAAMUEAADFBAAAxwQAAMcEAADJBAAAyQQAAMsEAADLBAAAzQQAAM0EAADQBAAA0AQAANIEAADSBAAA1AQAANQEAADWBAAA1gQAANgEAADYBAAA2gQAANoEAADcBAAA3AQAAN4EAADeBAAA4AQAAOAEAADiBAAA4gQAAOQEAADkBAAA5gQAAOYEAADoBAAA6AQAAOoEAADqBAAA7AQAAOwEAADuBAAA7gQAAPAEAADwBAAA8gQAAPIEAAD0BAAA9AQAAPYEAAD2BAAA+AQAAPgEAAD6BAAA+gQAAPwEAAD8BAAA/gQAAP4EAAAABQAAAAUAAAIFAAACBQAABAUAAAQFAAAGBQAABgUAAAgFAAAIBQAACgUAAAoFAAAMBQAADAUAAA4FAAAOBQAAEAUAABAFAAASBQAAEgUAABQFAAAUBQAAFgUAABYFAAAYBQAAGAUAABoFAAAaBQAAHAUAABwFAAAeBQAAHgUAACAFAAAgBQAAIgUAACIFAAAkBQAAJAUAACYFAAAmBQAAKAUAACgFAAAqBQAAKgUAACwFAAAsBQAALgUAAC4FAAAxBQAAVgUAAKAQAADFEAAAxxAAAMcQAADNEAAAzRAAAKATAAD1EwAAiRwAAIkcAAAAHgAAAB4AAAIeAAACHgAABB4AAAQeAAAGHgAABh4AAAgeAAAIHgAACh4AAAoeAAAMHgAADB4AAA4eAAAOHgAAEB4AABAeAAASHgAAEh4AABQeAAAUHgAAFh4AABYeAAAYHgAAGB4AABoeAAAaHgAAHB4AABweAAAeHgAAHh4AACAeAAAgHgAAIh4AACIeAAAkHgAAJB4AACYeAAAmHgAAKB4AACgeAAAqHgAAKh4AACweAAAsHgAALh4AAC4eAAAwHgAAMB4AADIeAAAyHgAANB4AADQeAAA2HgAANh4AADgeAAA4HgAAOh4AADoeAAA8HgAAPB4AAD4eAAA+HgAAQB4AAEAeAABCHgAAQh4AAEQeAABEHgAARh4AAEYeAABIHgAASB4AAEoeAABKHgAATB4AAEweAABOHgAATh4AAFAeAABQHgAAUh4AAFIeAABUHgAAVB4AAFYeAABWHgAAWB4AAFgeAABaHgAAWh4AAFweAABcHgAAXh4AAF4eAABgHgAAYB4AAGIeAABiHgAAZB4AAGQeAABmHgAAZh4AAGgeAABoHgAAah4AAGoeAABsHgAAbB4AAG4eAABuHgAAcB4AAHAeAAByHgAAch4AAHQeAAB0HgAAdh4AAHYeAAB4HgAAeB4AAHoeAAB6HgAAfB4AAHweAAB+HgAAfh4AAIAeAACAHgAAgh4AAIIeAACEHgAAhB4AAIYeAACGHgAAiB4AAIgeAACKHgAAih4AAIweAACMHgAAjh4AAI4eAACQHgAAkB4AAJIeAACSHgAAlB4AAJQeAACeHgAAnh4AAKAeAACgHgAAoh4AAKIeAACkHgAApB4AAKYeAACmHgAAqB4AAKgeAACqHgAAqh4AAKweAACsHgAArh4AAK4eAACwHgAAsB4AALIeAACyHgAAtB4AALQeAAC2HgAAth4AALgeAAC4HgAAuh4AALoeAAC8HgAAvB4AAL4eAAC+HgAAwB4AAMAeAADCHgAAwh4AAMQeAADEHgAAxh4AAMYeAADIHgAAyB4AAMoeAADKHgAAzB4AAMweAADOHgAAzh4AANAeAADQHgAA0h4AANIeAADUHgAA1B4AANYeAADWHgAA2B4AANgeAADaHgAA2h4AANweAADcHgAA3h4AAN4eAADgHgAA4B4AAOIeAADiHgAA5B4AAOQeAADmHgAA5h4AAOgeAADoHgAA6h4AAOoeAADsHgAA7B4AAO4eAADuHgAA8B4AAPAeAADyHgAA8h4AAPQeAAD0HgAA9h4AAPYeAAD4HgAA+B4AAPoeAAD6HgAA/B4AAPweAAD+HgAA/h4AAAgfAAAPHwAAGB8AAB0fAAAoHwAALx8AADgfAAA/HwAASB8AAE0fAABZHwAAWR8AAFsfAABbHwAAXR8AAF0fAABfHwAAXx8AAGgfAABvHwAAiB8AAI8fAACYHwAAnx8AAKgfAACvHwAAuB8AALwfAADIHwAAzB8AANgfAADbHwAA6B8AAOwfAAD4HwAA/B8AAAIhAAACIQAAByEAAAchAAALIQAADSEAABAhAAASIQAAFSEAABUhAAAZIQAAHSEAACQhAAAkIQAAJiEAACYhAAAoIQAAKCEAACohAAAtIQAAMCEAADMhAAA+IQAAPyEAAEUhAABFIQAAYCEAAG8hAACDIQAAgyEAALYkAADPJAAAACwAAC8sAABgLAAAYCwAAGIsAABkLAAAZywAAGcsAABpLAAAaSwAAGssAABrLAAAbSwAAHAsAAByLAAAciwAAHUsAAB1LAAAfiwAAIAsAACCLAAAgiwAAIQsAACELAAAhiwAAIYsAACILAAAiCwAAIosAACKLAAAjCwAAIwsAACOLAAAjiwAAJAsAACQLAAAkiwAAJIsAACULAAAlCwAAJYsAACWLAAAmCwAAJgsAACaLAAAmiwAAJwsAACcLAAAniwAAJ4sAACgLAAAoCwAAKIsAACiLAAApCwAAKQsAACmLAAApiwAAKgsAACoLAAAqiwAAKosAACsLAAArCwAAK4sAACuLAAAsCwAALAsAACyLAAAsiwAALQsAAC0LAAAtiwAALYsAAC4LAAAuCwAALosAAC6LAAAvCwAALwsAAC+LAAAviwAAMAsAADALAAAwiwAAMIsAADELAAAxCwAAMYsAADGLAAAyCwAAMgsAADKLAAAyiwAAMwsAADMLAAAziwAAM4sAADQLAAA0CwAANIsAADSLAAA1CwAANQsAADWLAAA1iwAANgsAADYLAAA2iwAANosAADcLAAA3CwAAN4sAADeLAAA4CwAAOAsAADiLAAA4iwAAOssAADrLAAA7SwAAO0sAADyLAAA8iwAAECmAABApgAAQqYAAEKmAABEpgAARKYAAEamAABGpgAASKYAAEimAABKpgAASqYAAEymAABMpgAATqYAAE6mAABQpgAAUKYAAFKmAABSpgAAVKYAAFSmAABWpgAAVqYAAFimAABYpgAAWqYAAFqmAABcpgAAXKYAAF6mAABepgAAYKYAAGCmAABipgAAYqYAAGSmAABkpgAAZqYAAGamAABopgAAaKYAAGqmAABqpgAAbKYAAGymAACApgAAgKYAAIKmAACCpgAAhKYAAISmAACGpgAAhqYAAIimAACIpgAAiqYAAIqmAACMpgAAjKYAAI6mAACOpgAAkKYAAJCmAACSpgAAkqYAAJSmAACUpgAAlqYAAJamAACYpgAAmKYAAJqmAACapgAAIqcAACKnAAAkpwAAJKcAACanAAAmpwAAKKcAACinAAAqpwAAKqcAACynAAAspwAALqcAAC6nAAAypwAAMqcAADSnAAA0pwAANqcAADanAAA4pwAAOKcAADqnAAA6pwAAPKcAADynAAA+pwAAPqcAAECnAABApwAAQqcAAEKnAABEpwAARKcAAEanAABGpwAASKcAAEinAABKpwAASqcAAEynAABMpwAATqcAAE6nAABQpwAAUKcAAFKnAABSpwAAVKcAAFSnAABWpwAAVqcAAFinAABYpwAAWqcAAFqnAABcpwAAXKcAAF6nAABepwAAYKcAAGCnAABipwAAYqcAAGSnAABkpwAAZqcAAGanAABopwAAaKcAAGqnAABqpwAAbKcAAGynAABupwAAbqcAAHmnAAB5pwAAe6cAAHunAAB9pwAAfqcAAICnAACApwAAgqcAAIKnAACEpwAAhKcAAIanAACGpwAAi6cAAIunAACNpwAAjacAAJCnAACQpwAAkqcAAJKnAACWpwAAlqcAAJinAACYpwAAmqcAAJqnAACcpwAAnKcAAJ6nAACepwAAoKcAAKCnAACipwAAoqcAAKSnAACkpwAApqcAAKanAACopwAAqKcAAKqnAACupwAAsKcAALSnAAC2pwAAtqcAALinAAC4pwAAuqcAALqnAAC8pwAAvKcAAL6nAAC+pwAAwKcAAMCnAADCpwAAwqcAAMSnAADHpwAAyacAAMmnAADLpwAAzKcAANCnAADQpwAA1qcAANanAADYpwAA2KcAANqnAADapwAA3KcAANynAAD1pwAA9acAACH/AAA6/wAAAAQBACcEAQCwBAEA0wQBAHAFAQB6BQEAfAUBAIoFAQCMBQEAkgUBAJQFAQCVBQEAgAwBALIMAQBQDQEAZQ0BAKAYAQC/GAEAQG4BAF9uAQAA1AEAGdQBADTUAQBN1AEAaNQBAIHUAQCc1AEAnNQBAJ7UAQCf1AEAotQBAKLUAQCl1AEAptQBAKnUAQCs1AEArtQBALXUAQDQ1AEA6dQBAATVAQAF1QEAB9UBAArVAQAN1QEAFNUBABbVAQAc1QEAONUBADnVAQA71QEAPtUBAEDVAQBE1QEARtUBAEbVAQBK1QEAUNUBAGzVAQCF1QEAoNUBALnVAQDU1QEA7dUBAAjWAQAh1gEAPNYBAFXWAQBw1gEAidYBAKjWAQDA1gEA4tYBAPrWAQAc1wEANNcBAFbXAQBu1wEAkNcBAKjXAQDK1wEAytcBAADpAQAh6QEAMPEBAEnxAQBQ8QEAafEBAHDxAQCJ8QEAknUiAAUAAADAnSUABAAAAE5QIgACAAAAEE8lAAEAAACedSIABQAAAOCdJQAtAAAAhFAiAAYAAABInyUARAEAAKRHIgAGAAAAaKklAA8AAACwUCIAAgAAAIBbJQABAAAAsXUiAAUAAADgqSUAoQIAALZ1IgAHAAAA6L4lAE4AAACqdSIABwAAAFjBJQAxAgAAy3UiAAkAAADg0iUAFAAAAOt1IgAFAAAAgNMlAFQAAADfdSIAAwAAACDWJQACAAAA53UiAAIAAAAw1iUACQAAAPJ1IgAFAAAAeNYlAJECAACsAiIAZgAAAHkDAAAcAAAArAIiAGYAAACqAwAALQAAAKwCIgBmAAAArAMAAAkAAACsAiIAZgAAAK0DAAAJAAAArAIiAGYAAACwAwAADwAAAKwCIgBmAAAAogMAAA0AAACsAiIAZgAAAJ8DAAANAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtc3ludGF4LTAuOC41L3NyYy91dGY4LnJzaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogaW52YWxpZCBlbmNvZGVkIGxlbmd0aDogAAAAs+wlAEIAAABQ7CUAYwAAAIMAAAASAAAAUOwlAGMAAABBAQAAGgAAAFDsJQBjAAAAtAEAAC0AAABQ7CUAYwAAALUBAAArAAAAUOwlAGMAAAC4AQAACQAAACgpL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9jb3JlL3NyYy9vcHMvZnVuY3Rpb24ucnMAAFLtJQBQAAAApgAAAAUAAAAAAAAAAAAAAAEAAABQBAAASW52YWxpZERpZ2l0UG9zT3ZlcmZsb3dOZWdPdmVyZmxvd1plcm8AAAAAAAAMAAAABAAAAFEEAABSBAAAUwQAAF9aTi9ydXN0L2RlcHMvcnVzdGMtZGVtYW5nbGUtMC4xLjI0L3NyYy9sZWdhY3kucnMAAAAH7iUALgAAAD0AAAALAAAAB+4lAC4AAAA6AAAACwAAAAfuJQAuAAAANgAAAAsAAAAH7iUALgAAAGYAAAAcAAAAB+4lAC4AAABvAAAAJwAAAAfuJQAuAAAAcAAAAB0AAAAH7iUALgAAAHIAAAAhAAAAB+4lAC4AAABzAAAAGgAAADo6AAAH7iUALgAAAH4AAAAdAAAAB+4lAC4AAAC0AAAAJgAAAAfuJQAuAAAAtQAAACEAAAAH7iUALgAAAIoAAABJAAAAB+4lAC4AAACLAAAAHwAAAAfuJQAuAAAAiwAAAC8AAABDAAAAB+4lAC4AAACdAAAANQAAAAfuJQAuAAAAggAAACwAAAAH7iUALgAAAIQAAAAlAAAAB+4lAC4AAACHAAAAJQAAAAAAAAABAAAAAQAAAFQEAAAH7iUALgAAAHIAAABIAAAAX19SL3J1c3QvZGVwcy9ydXN0Yy1kZW1hbmdsZS0wLjEuMjQvc3JjL3YwLnJzAAAAg+8lACoAAAAyAAAAEwAAAIPvJQAqAAAALwAAABMAAACD7yUAKgAAACsAAAATAAAAAAAAAAAAAAABAAAAVQQAAGBmbXQ6OkVycm9yYHMgc2hvdWxkIGJlIGltcG9zc2libGUgd2l0aG91dCBhIGBmbXQ6OkZvcm1hdHRlcmAAAACD7yUAKgAAAEsAAAAOAAAAg+8lACoAAABaAAAAKAAAAIPvJQAqAAAAigAAAA0AAABwdW55Y29kZXswAACD7yUAKgAAAB4BAAAxAAAAg+8lACoAAAAxAQAAFgAAAIPvJQAqAAAANAEAAEcAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBzdHI6OmZyb21fdXRmOCgpID0gIHdhcyBleHBlY3RlZCB0byBoYXZlIDEgY2hhciwgYnV0ICBjaGFycyB3ZXJlIGZvdW5knPAlADkAAADV8CUABAAAANnwJQAiAAAA+/AlABEAAACD7yUAKgAAAFwBAAAaAAAAYm9vbGNoYXJzdHJpOGkxNmkzMmk2NGkxMjhpc2l6ZXUxNnUzMnU2NHUxMjh1c2l6ZWYzMmY2NACD7yUAKgAAAL8BAAAfAAAAg+8lACoAAAAeAgAAHgAAAIPvJQAqAAAAIwIAACIAAACD7yUAKgAAACQCAAAlAAAAg+8lACoAAACHAgAAEQAAAHtpbnZhbGlkIHN5bnRheH17cmVjdXJzaW9uIGxpbWl0IHJlYWNoZWR9Zm9yPD4gOjp7Y2xvc3VyZXNoaW0gYXMgbXV0IGNvbnN0IDsgZHluICArIHVuc2FmZSBleHRlcm4gIgCD7yUAKgAAANQDAAAtAAAAIiBmbiggLT4gID0gIHsgIH0AAACD7yUAKgAAAMoEAAAtAAAALmxsdm0uL3J1c3QvZGVwcy9ydXN0Yy1kZW1hbmdsZS0wLjEuMjQvc3JjL2xpYi5ycwAAAGLyJQArAAAAYgAAABsAAABi8iUAKwAAAGkAAAATAAAAe3NpemUgbGltaXQgcmVhY2hlZH0AAAAAAAAAAAEAAABWBAAAYGZtdDo6RXJyb3JgIGZyb20gYFNpemVMaW1pdGVkRm10QWRhcHRlcmAgd2FzIGRpc2NhcmRlZABi8iUAKwAAAFMBAAAeAAAAU2l6ZUxpbWl0RXhoYXVzdGVkaW5mMC4wLUluZmluaXR5AAAAAQAAAAAAAAAAAAAAAAAAIJqZmZmZmZmZmZmZmZmZmRkVrkfhehSuR+F6FK5H4XoU3iQGgZVDi2zn+6nx0k1iEJbUCWgibHh6pSxDHOviNhqrQ26GG/D5YYTwaOOItfgUIjZYOEnzx7Q2je21oPfGEGojjcAOUqaHV0ivvJry1xqIT9dmpUG4n985jDDijnkVB6YSH1EBLeaylNYm6AsuEaQJUcuBaK7Wt7q919nffBvqOqeiNO3x3l+VZHnhf/0Vu8iF6PbwJ38ZEeotgZmXEfgN1kC+tAxlwoF2SWjCJRyTcd4zmJBw6gGbK6GGm4QWQ8F+KeCm8yGbFVbnnq8DEjc1MQ/N14VpK7yJ2Jey0hz5kFo/1983IYmW1EZG9Q4X+nNIzEXmX+egq0PS0V1yEl2GDXo8PWalNKzStk/Jgx2xnteUY5ceUV0jQpIMoZwXwUt53YLfftp9T5sOCrTjEmisW2LRmGQqluVeFxAgOR5T8OKBp+C27kRRshJAsy0YqSZPzlJNklhqp46omcJXE0GkfrC3e1Anqth92vXQ8h40UGXAX8mmUrsTy67EQMIYkKbqmUzU6w7JDzzyNprOE4AKEcOtU3mxQRlgUL72sB9nCHQCi9wtwWdHs6b+XloZUqApNW+wJDSGn8Lr/ktIFNsZ7pDyWR2Qnn9oiWXWORBfKbC0HcP7TJcyp6jVI/YZsrpZXbE1lj2sWx+6d+nEFChi4X0nXquXVklM+5KHnRANnWjJ2Mmr8vAOevi3pZUaPhe6OnqhvFtaci4tk4REFctF+y7IGsqvro6LikKdAxFFCZKxpvfcskrkeKqd+zgbBKFBweuSffVugy1VsS/HFQO0Z2eJdWTEWJxXdycmbBHS7KXY24htbfTGJfILPeAb2yPrRhYHvorDOB4oo/1MFkm2VdIRbP5unGBLU08x1xEOiu+2TxOXsWBnRYUYgoscpaG/+HIPrCcauWo3rQHWFh5OmWDCcla54WBVLCTORBKVFsLNAx5X9TXOuxNt4zodq6sBCwMYrCor2C92ik9iF1aJNG8C4Ly7VRPzxG4MtRKJqO2x0MzHku8euNRKeu4dB7pXjkAK09vyS5MQb/vxFwbI33EA1ah89W8P2lj8JxPWDGbpM7un+rtMsimOYKYeEdeEhyn8UpXJo45UCxqFGA6s0NK6yaiqB4PYdm+unRPjrBoeXtza3aXRwFeysGIfT4pIS0uwSH5RQZqsjsAbGdmh09XVWW3L2s3hVqUzFhR7gdx3EXtXPOLX56vqwhEQKs9gWYJe8sY2JqasqgS2GbulgEdoGPVrxVHrVlWdkRSWhAAG7XkqI9GnIt/dfXQQVgc0o+GP3dGBDNExlvxTGkVs9ugac+SnND2n9ET9DxWeVvhT4igdU12XUl1ql9kQYleNuQPbYesu8lCVEL/1GuhFpMfPSE68WFva3aZlkRUga4Ns2dNxY63i4RcfHkERzRGfrSiGHJ9IBAPzZGObGwvbGL5Ta7DlBp01jx3pFRaiFUfLD4nz6mtKkXLkIKsRN7xxeEzbuERGqhuEbQFFHF9jwcbWFccDBVVJA76anRYZ6c1rRd44Njd3B2n+rhcSwUEWRqJjwVZYWHIOl7HyHM5nq9GBHAHfeRP1cRKOKBel7FVBzhY0f2HckMEO2IYSbkdWNX0kIGUCx+do5IykHSU5ePcwHYDqAWy5IB3XtheE+iz587CZuzQjYU0XrPgSOfdHKFNOXF9UOGgV8qxaHi4s07l1C31/Q2BTRFuKSBhYI9zH99Uwmc8ZqTZ8O20TJtL5coyJtI6yjw7x+SsVH7hBLo+jBypyKKYL9Me83Rj6mr6lTzm7wYYe1lwGl+QT9vcwCRnCXpzXMPD61iTUH/hfWgcUaOVJeY0mL9+Ddhlg5uEFECBRbscKUr/lz14UGoWB0QyA2vEFbw6ZhNlLEPXUaIIUAMRP1uTj9KD1Ehord+0Bqplp2RG3HPez99sUvMWKAYgU7q10krDFXPmvECwJ3mim7XxJVOqAb5Qosxok1ORTuFfKOhBVmr92IFwVg3YdQ2B5O2Jzqq7/XoAWEZ69yNFm9SuduBCxMsszVxt/ZG1BUsS8fWAN9I6iXN8VzLaKZ9tp/crmPcPYTn1/Ed+Kd3LFDy+r1y8FjuQu/xuA1ZJbBHPyiKyMaj4dv2UWZkRCSdAo9dNWPVWYSv/qEaOgA0JNQYi5V5W78xAyqxzp5gJo1805YXl3/MJAW+8WVFICIHlxYect+clozRVZEoZQnZmOtWilfFt2dBVWWx3SpkrhPpEgUf0VxfbdRHwXDh+iGv9ATafKRDeSsdDJEkrLafdkzq4LEW5YUE+0Dx47PO7FUNiLPKfxeXM/kAwYycnxN9p5CcqF9MfCMkA9E9tC6b/2wqipb7oMnrdmyB7jm7rMK89TISaVcH4sUqAYgkmVcIlyqRq43SZl8HSzE511iBoPhHX3jC8+COeHhR8XXqB7cjaRXwommAbsnzcZ3+QZllv4QBnVhEYF8H8sFEzqR6uvxgDhEDcF0YyZIxBH3T9FTKRnzuck1bRHj9IZBrHMndbpUtgft93Dn3KoFDgnCktF7tt5GSx+aRnChhBZ2KkRouNfKY9GMA+PNnEaehO7p4Ecs7qla/PY2F4nFS+pleya4yhiUYmPreBL7BAXde/g9zgOnegOTK+arBMbeSpZGpMt2LBTctYl4lapFS5VR0gPvnmN3MHet4FFVBF8uwvafpaPFZScl4zPCLobly/WFP8Rpnd2sN/Wcm0uFnmM3kP/p1H5kfOyePW9vhGOrf3S/j8cwhzst1oiY2Qc2IpkQjIzsAEX8F8VtbW2Fkaig5uOwlkBrFnm3ZDEKxKjAzlfFwT2zqzCo/wa1BIdg5wtTKxpXnK9mxzKSENCF5zjitaJVBj1/eIWCAdpmxLGBau9D1SN7i9r8QzYdMUdBWsi/nJ2176MIsFwRirRFwS8TssoxRL/1k5njWu7DROg+X14dDtRyyR+2HsSX3weTWH++SnJDQm3Ma38QX9jGAqBy5Qh1NegxSckyjTMghN3znhUz7m/Z28MbUMhrTcf+XEt3aWUzB9ZcIrPTVf5GMf0vX1R3dZ/evOhPz6s+hML7i/J6C6+/8O4nDL9efcf1iTzoCC/MWY2+hbC/ceSGXgdXBoazCe4XvurActsdRRg5Hx7rglTkxjJvGei8F0QmaCUxbBC6x70dJQ/aucvGuHmdgQnAonlXCrdMogf8xTn6yudhc6gt7DusCigf8IQ2N/fYW9KAVm0Sk50M8zQGq1M5ucl1c3gKaI+kI/WcxXx1lGGUXdxTe60y9lyeCkR6Ffp1ui+6HuwVKyPhI11GyATId9TMrr8Wd2JDGqk9xWAQucYQyjIY65KbnDu6ZIRZmrYJzgNDQYXEUoaF0MeHOshrewspD1rEnRuexKcfhZWTle98Bz+iNtcWPxB4/4RI0olYrSUlkFfYY1gNgXLHOnUHegpqqtnf+c9TfjQCBeH3RcguyFWuTK5ZNf5c20SpZWMZitpI8LqwTrywux7HR3e1h6JuoLOuzRiWwJXlhcYGN9LB2I1pfz2tOIBrN4SWfNkediciDuU8Yc3NhMxHuH1g8dGSm383FoGxpFCJxgaKwMGn25XMBevntGnm1ITkN7RPMt9JRolGDEcppLqHkDlpzA8/h1It3la44SouxgAUYbAyTFL08XHroKdU8kTzbSjzULpEVIJphfRyIWoH6SQHD4CIdt0B7jfQDqeUxlQDUrLAbQV9wVgGWf75EIUpwoICZsp3vg3s3pS/IM1ENfdDKiRQjCOWbgqt5M57xkTSwogDgKNPuH57vhCYb8UDzwIgD6bPWXnx1j6mxqZEOQsDQBk+MhupQyOkPmQjhrqI6SZ6fnTi7ejcUBh2j4VuxxQ4bqUqTz5gvSZGhX/ECths5vEunXHjtEgw127MRuJGikWapXE0gsO52ixYsEVoXu6EYh30NtvPh+HJ4JnEZuSXRxAv4As5mOYPj/Q2BtJdeRJM8wzvVG2RmX/DEcW1F1Qbo/Wj8qnXgVRzHDSEVPJs+NLVxlE2f1uTq3ngxypOvaCCXlHA+GXJaWK7M8WuvvEaNRgbM+AeYTqbvA/Eir5Bw6HNHrlmvXTEEsaMx0ilDkLbJAuUeIqQ9oIFVwXtanH1bymi9qBVc/h0xCwEocP2SIucd+QnFXlAlOB5h1sDBRPi1pM2hbeHc+omusXiqOppaJ7o654frGlIOIiE6kFqaJqX9J9J5e1opo2nh5U0SCCiH/blx+s904Vkn4Yd6eAzgZmfHlMI8bY3XSYE/ELAeQKcC2PrWujJ5ZUWh9a1gBQolkkDL7vtR94EBUZFUWa2YEUHXD+8vey+dkQFHdqexSbQxfA/lvGKC57DRDyQ5LtxAXyzMosCg59K68ZwpwOvtA3WwpvvaFxyiKMFM7jPstz+UgIjJe0J9UbcBCwn2R47FsO2qwlVAxV+UwawH9QYPCvPnu9t6nWEGEKFTNmQIDzv8uVlyzu3nMa1RBScM1mUmas71hHsGS5kO4a21mkuA6FIyZHbPO2+qaLFUmutpPY0IIebCMpX5WFPBF1sIof9Bqe/aw4qP7uCJQb91nVsimvsZe9k4aYJQcQFix7d/W6JY6sl9yeEx5sphETxVgiKwl9er8t/rjJeT0cdmqtTu+g/WHMV8tgoZSXFsXuvQtZGv7nCRMJ503dEhI6sfxFW11jptyEDtiv++ocyI0wa69KHIWw0D4T82IiF9TXJrzybuPQJtrLdcLogRKGjKTG6heftNcpRomdp5wda3BQBe/fGCpG7gShF4awF4nz2Z0ls+BUa4udTXme8xJ0UvZib+vNh3hFL3wol1IeXahegr8iC9PGar/JhhJCGOS5S2jMGzwPn4j/OtIOaBNtKXlAeixgGJjamJGD5AwfJCGUM8hWs0YT4hMONh3XGLZNQymgeI843LTcpJFK3xOKr2uoZid/WmAhYaGCqssfor/vueuFMhVNtE20m7tvGU6ZjGGJ0Y6qPZCk9uJiWRQM4dYaoafY7srZtitPgkcQRZskXptyJ34R9orfsQMMGgRJHRhJ9YX+Dfg7GVtp1hTQoEoT1F2ey6T5LxR8h6sQTQERUlPJY986XOa5+QusGnFn2nQPoRwZL7Ae+/pvVhXBUkgq2YCwrSXASy8v8xERNFENqo405xUJzRKyfutPG8QNce4+XR+rbQoPKDKJ2RWdpI2LZRcZvFcIDCAo1HoRlDp8Ejzy9CxZDeDM2bn3G0OVltv89MPw4D2zcOHHXxYDERIWl102WhrL9SaBOeYRBOgc8CT8VpCQ3iILNY+jHNDs44wdMN/ZpkuCol0/6RbaI4M9sVl/4euizk6xMlQSXDk4L7XCy2h50X3kToRTHeMtYL9dNdZTlKdkUHIDdhcci+ZlsSp4qXbstqaOz8QS+kTXb7WqJg/xE4vXfbIHHmJq378qIlI/J0NvrGQoBhhOiH+ZiE7bZR+c8olQIDgTSg3MKHRKxW9lk+oPtDPAHjukCYf2oWpZhA8ic/bCmRiWtgds+OfurTbZtPWRNa4TVlcM4PM/fkkk9boigyJ9H0Ws1kz2/2TU6ZCV6GjoMBnRiXg9+P+DQ+5zRO1TICcUdKGTl8bMnM/xjwPxD00fEFICuSWkR2F/HLMF6H+uyxkPNce36dJNzBZc0ez/8aIU2ZDSXyEPCz0SsNojM1uCEMHnUJloS6thULMqBoUrahpnuUAUuqIiTkBcVWtqvCEVU5QA3ZToTgvNSUS87snnEFHtAMiH2hcSSKnTxkp2DBvavQCgbEhG22yH3GvVkaMVr2TNTL0GBUmKn+Pv3adPEbE64nrICgioQ/845i+mshv0Luj7OaI5U2n/kx7zhCgWXfLsL/u0x3WH/w+y9QO6ES7qR+aRIdkiP/9/tiLTXBzyVAaFQYF6tWX//5HoqLAW9UM4NwEBYsS3MjPbhu0mEu6f8/EBaDY6WYTrkaQVCx2LGfYnm7le++BpvHRQETwX1npehuL6fi/nh2NdQHSWElaR/dbQ95flcdk4Ys2GvR2r2sp4DZN5hMF6Leg90soXVhVvLXFCYdCayIqGMagIEyIiGK9OamhNkdqqPU9AdB7otHnyPohTpNquiGQ/AF0Yh11hKP9s3OmuWG1QzJl9E6SVaA1lrmCp5I1IGnpcLx+DRO09t76zuoNxoK5hsPIYNp2KMSwy9i42wea+51n1E/Bhd4ITHb3kiZvXlz/27h9aTiw1qX3Kg6Gv398y+IsZFaVW9yD+oZzn8rJMwvlvFKodEvmzMRtKuSiPcJuUWRDdlbbB7LVeQ/UN5YDF7SgaSt5eAVde5TXEpB1nBIvtFNWxGAGsfrfEaR1+UtAIvhAitlqbeZcloQ8vMLezp8kagV4VSWGst03ZWPP4wh9uFZtLRAeBI8bXreD1kzXmJBErrNM+mwU9WUk0VoYiPW4bvIncyxWe/eBtwxEFgsrxFWOh428RGP6zJGlBN5s7jhHRm9J/tVljhgd1NSXFxRYcDuMOM5EU6dHSkPdQN554FgscP4/adrp0dQ3GQCwY+hF4xjHlkCT37btIo2fgWcMcLQVbt0AdLIvJ07UfTa4CFyQEfF/NfVZv1A8r5nCLaBIGbcaYSMnwfu2yET1OEnQdn72e4AahwJhXwqf9pA6QF+bKS03SgABHeZvsylCl2RKiRHlIHc4A2I7FrUSBCCkegtAtbRfYMxM/0VedmtMgGM6mJCR5RvaoZaesShV2TRN9pDqgjj29dG+leneIVuIeZFCV5j4xZF2Mt/vFBhK1GLemquvLjbZKcCyW0WsOxBNXpKoSExYkERpH8OgSF6Af3+nuDtxEg9oUbPNTQt9MGYAhv9h8nQLiQyMpQ2h/PRQzgTJ6/X1oTjYcVM+5MjEQuM5QkJXJQEq9xrlLKVHoGcYLp6Z31DMIMdLHb4fauRRrCewexnYpoI0O07/SrpQQ39usZKNXQgBJF7j/HX6HGhnjI+q13wHNoBJgmbExORWutRyIkUzOcE115q0njvoQ4lWUprWt4xqvu3BJDH0qG+h3Q4XEV+l78mKNBz2XuxWH+TUEanmHyY61CgZk32IRccK8BhCPpXXkiHfWbGXRGyc1ymumpbf36dOSq/AdQRYfxKG8Hh7GX+4PD1aNsc0RZdMCYWRjo/8Ws7GJSE98HFHcm01QHOky3yiO1AbZyRYOfUlxc+Mgj7Ig2HYFFDsSfC4PgoUFm37qzVnxO1MrHcq+pQGeN6/L7tdH9C/cVRehmIQ0S/lYCb+sbMOMFqsSAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAZAAAAAAAAAAAAAAAAAABAHwAAAAAAAAAAAAAAAAAAiBMAAAAAAAAAAAAAAAAAAGoYAAAAAAAAAAAAAAAAAICEHgAAAAAAAAAAAAAAAADQEhMAAAAAAAAAAAAAAAAAhNcXAAAAAAAAAAAAAAAAAGXNHQAAAAAAAAAAAAAAACBfoBIAAAAAAAAAAAAAAADodkgXAAAAAAAAAAAAAAAAopQaHQAAAAAAAAAAAAAAQOWcMBIAAAAAAAAAAAAAAJAexLwWAAAAAAAAAAAAAAA0JvVrHAAAAAAAAAAAAACA4Dd5wxEAAAAAAAAAAAAAoNiFVzQWAAAAAAAAAAAAAMhOZ23BGwAAAAAAAAAAAAA9kWDkWBEAAAAAAAAAAABAjLV4Ha8VAAAAAAAAAAAAUO/i1uQaGwAAAAAAAAAAAJLVTQbP8BAAAAAAAAAAAID2SuHHAi0VAAAAAAAAAAAgtJ3ZeUN4GgAAAAAAAAAAlJACKCwqixAAAAAAAAAAALk0AzK39K0UAAAAAAAAAEDnAYT+5HHZGQAAAAAAAACIMIESHy/nJxAAAAAAAAAAqnwh1+b64DEUAAAAAAAAgNTb6YygOVk+GQAAAAAAAKDJUiSwCIjvjR8AAAAAAAAEvrMWbgW1tbgTAAAAAAAAha1gnMlGIuOmGAAAAAAAQObYeAN82Oqb0B4AAAAAAOiPhyuCTcdyYUITAAAAAADic2m24iB5z/kSGAAAAACA2tADZBtpV0O4Fx4AAAAAkIhigh6xoRYq084SAAAAALQq+yJmHUqc9IeCFwAAAABh9bmrv6Rcw/EpYx0AAACgXDlUy/fmGRo3+l0SAAAAyLNHKb61YKDgxHj1FgAAALqgmbMt43jIGPbWshwAAEB0BECQ/I1Lfc9Zxu8RAABQkQVQtHtxnlxD8LdrFgAApPUGZKHaDcYzVOylBhwAgIZZhN6kqMhboLSzJ4QRACDobyUWztK6csihoDHlFQAo4suum4GHaY86ygh+XhsAWW0/TQGx9KGZZH7FDhsRQK9Ij6BB3XEKwP3ddtJhFRDbGrMIklQODTB9lRRHuhrqyPBvRdv0KAg+bt1sbLQQJPvsyxYSMjOKzckUiIfhFO056H6clv6/7ED8GWrpGRo0JFHPIR7/95OoPVDiMVAQQW0lQ6rl/vW4Ek3kWj5kFJLI7tMUn34zZ1dgnfFNfRm2euoI2kZeAEFtuARuodwfsoySRUjsOqBIRPPC5OTpE94v91Zap0nIWhWw8x1e5BjW+7TsMBFcerEanHCldR0fZR3xk76KeeyukGFmh2lyE79k7Thu7Zen2vT5P+kDTxjvvSjHyeh9URFy+I/jxGIetXZ5HH6x7tJKR/s5Drv9EmLUl6PdXaqHHRl6yNEpvRd7yX0MVfWU6WSfmDpGdKwd7Z3OJ1UZ/RGfY5/kq8iLEmhFwnGqX3zWhjzH3da6LhfC1jIOlXcbjKgLOZWMafocOcbfKL0qkVdJp0Pd94EcEsi3F3NsdXWtG5GU1HWioxa6pd2Px9LSmGK1uUkTi0wclIfqubzDg59dERQO7NavEXkpZeirtGQHtRWZEafMGxbXc37i1uE9SSJb/9XQv6IbZgiPTSatxm31mL+F4rdFEYDK8uBvWDjJMn8vJ9sllxUgfS/Zi26Ge/9e+/BR7/waNK69ZxcFNK1fG502kxXeEMEZrUFdBoGYN2JEBPiaFRUyYBiS9EehfsV6VQW2AVsaHzxP2/jMJG+7bFXDEeF4ECcLIxI3AO5K6scqNFYZlxTwzavWRICp3eR5NcGr37wZtmArBivwiQovbMFYywsWEOQ4tsc1bCzNOsfxLr6OGxQdx6M5Q4d3gAk5rrptciIZ5LgMCBRpleBLx1kpCQ9rH47zB4WsYV1sjxzYuWXpohNy8EmmF7p0R7MjTii/o4sYj2zcj53oURmgrGHyroyuHtnD6XliMdMP5At9V+0XLRPPNGQYu/3HE91OXK3oXfgXA0J93in9uViUYrPYYnX2HUJJDis6PnS3nB1wx10JuhKS29G1yE1R5QMlTDm1i2gXd1JG4zqhpd5ELp+Hoq5CHYrzC87EhCcL63zDlCWtSRJt8I4B9mXxzSVc9PluGNwWiKzygXO/bUEvc3G4ih6THNWrNzGol+SI/edGsxbz2xHKloU9kr0d6/yhGGDc71IWffzmzPYs5SV8yh5406vnG85dEEAaPK+XjT4TK2TLcBFCdRTQIAub/TAO2DU9/swVkpIZBOnNAT29EU6DzD1AG5v7j6KxICFGFssQ0p8mCBGC+jML3mip19v9lMZHMEoVI/kAjhXDk81SPTq4WbycGrabwHjtWXzAU2YkE7j1oRCjwvDWaHCbsOh/7Rcmc8oUTPOsDINMwtzi3+id7w/9GQ8Y7OfRb/nJ7YuxwvUpPhATHudhxst3POnuXTNztE0UmOVg+re+lYujajUAkCFhGf4e+fhlLntuTMVCAPRpuR9fs5u7//wMxU+7KYA44tMTN6CCqj88ULYjKjSgxtrIGERII5VPS+SjrDRBSHgR+x4rDTa9Ea9u5uvAKC3r6lwTdZCDLNZaCuAm8XL4pSU0GJN0pLeL8QyYcK2Pdg8vQR7cyMZS9xYIX2bMGappvegSE3t4J7UcyvZ/P6AUxOyiF9eZVnHio3z0X0/IGfWnix0mINaGbebN+JsxHTD5SHcSMKiL6AhgAfcCfiR8NxsVFzySriILuMG0g50tWwVi2hxlG631BhP5UHKC/FhDfQgSP2IYs8hXN+UOozsvlJyKFs963t+6LYWe0osKO7lDLRzBDOvLlDwTo2OX5sRTSpwR8c/l/rkL2Is8PSC26FwDFu5Dn36oDs6ui0yo4yI0hBt1iiNPKclATdcvSc6VoDIREm3sonP7kCDNe9tBu0h/FVaIp4tQOrVowFpSEuoa3xo2tUhXckRxQbh4c0vScMsQg+Ia7Y6VzVHmVlDeBk3+FCSbYajy+kDmn2zklUjgPRr3AD2p15zo7+PDrl0trGYQNEGMkw3E4uvcdBq1OFeAFIFRb/gQddsmFBJh4gZtoBnxkkWbKilJmEyrfE0kRAQQrfcWQnVzW74f1ttgLVUFFJi1nJJSUPKtp8sSuXiqBhn/4kM3Z+RumZF+V+cWVUgf322KgsBO5f8ar5ZQLjWNE1cJLaNwot6/4Vq85HmCcBitS/jLDEvWL5px610Yo4weTC97/+fu5V0AJ7M67+UXEx/7Wf+hal91wPBfCWvf3RfneTB/SkW3kvDst8tFV9UdMEx+j06LslsW9FKfi1alEjzfXTMiLp/yG7Enhy6sThcLVzXAqvlG72Kd8Sg6VyIdZ1YhuApcjNVdApdZhHY1EgGsKWYNc+9K9cL8byXUwhYBF7S/0E+rnbLz+8suiXMcYI7Qd+IRi6JPeH0/vTXIEfmxxBVb1i2LY9ZcjyxDOhZ33jXb8Uv5bfwLNLP308gbCqsBKXfPu8R9hwDQeoRdEc0VQvNUw+o1XakAhJnltBVAmxIwKnRlg7TTAOX/HiIbCKELXppoH9JQhCDvX1P1EEqJjvXAQqcGZaXo6jeoMhWdK/IycRNRSL7OouVFUn8aQlvXvyasMu02wYWva5OPEBIyzW8wV3+ohDFnm0Z4sxSXfsCL/Cyf0uX9QEJYVuAZHk9Y1x18o6Ovnmgp9zUsEOZiLk0lW4yMW8bC83RDNxSf+3mg7nGvb/J3szBSFEUZh3qYSGpOmwvvVeC8ZlmWH5RMX20CEUFntTUMNuD3vRO6H7cIQ1URwSJDj0PYda0YqOfkypOqVXHrE3NUTtPYHskQz16citUmc+zH9BCERxP71IJ2Q+2K8I/n+TEVZRkYOoojVJSorexzYXh+Wr4fHmQ2lrRciexz6DwLj/jW0xL9w7vhs6vnkCIMzrK2zIgX/bQq2qCWITUrj4Ff5P9qHR6xWogk/jQBe/mwu+7fYhJlXXGqrT2Cwdk3nWrql/sWv7QNFRnN4jHQhUQF5X26HPeQKK0vwC0fotNKI6+O9BE1tXKYOzD5poqIHexasnEWgmKPfkp8t1Ct6iSn8R4OHJGdGY+urXJSrBJ3CFfTiBH2BOAyGlkPZ1fXlMosCOsVMwaYv2Av00AtDTr9N8plG+ADv3ec/YNIPEhE/mKeHxHYxK6VA/2kWkta1b37hWcVDnYae0Q8TjHesEqtemfBGsmJ8Myq5dDeiq5OrKzguBA7rCyAFR+Fli1aYtfXGOcUStc34NpmJvy48DrNDd8gGo7mIsxIAJidc9ZEoGiLVBAyoCv/WgD+hBAMVshCrmkUPoj2vnGAPaYUj2t60xmEGU4qtC6O4MzP2XIGWUgg5R9wmjDdWAzgIcgHpDctNO8TDcF8FG8PWCq6CY2FOAHrGFDxm9lKE+60KEzwpobBJR/SdgHIDswUcZkvVij0mHcThtQBehL/Wc1/u2syMX9VGKhJghjXfrDAX6oGf/3eah4JblFvRk9u2HsqZG9eywITi8klCxjjic4aNT0LNn7DF+477w3eWyyCYYIMjsNdtB11hbXIarlb8XzRxziaupAS0ubiesWnsi3cxfnGQOk0F4agm9m2UR85Uze4+JAjAh1URAFIEpOzA5Qic5s6ViESaZUB2tZ3oAQ5609CyaupFsP6gZDMlchFB+bjkrsWVBy6PFHan12di8Rvzjs1jrQR6Ivl0Ae1hK61C8KKwrEhFuPuHsVJ4iUao45yLTMeqhtNVTMbbq1X8CWZZ/zfUkoRoSoAosmYbWxvf4H7l+ecFUk1gAr8/ohHS99h+n0hBBtOIZCGXZ+1DI8rfbzulOIQoSk06DQH489ydpxrKjobFQo0QSICyduDD5SDBrUIYhqGwGhVoV1psok8EiRxRX0Qp/DCqgm1Ax+syxZtzZacFNGscxVMosQml35cyIC8wxkDTGiNb+U6eB7POX3QVRoQA1/CcMueSRbmQoicROsgFMT28kx+Btybn1OqwxUmKRl2tC/gHQjTgofolDSbb3MfydAdrBLlw7FUEd0AwSWoE/xEJVdX3jTeqVUUQTEvkhg7lu4s7RXCVRRrWZH9urYe5R0VPLRNmbXs4td63jQyE15lGkshof/ip9uNGRbC/he2/uCdaYm/25FS8Z+bcv4dMZ+sAuK1Vymb0/ZDoQe/Ev7GV4Nao63zgYj0lInJbhe9uC0kMQyZcKKqMfrre0oddpOctp6nX4alCl98c41OElS4Q2SGkffnTs12W9Aw4hZpplT953X1oaKAVHIEvZocAehU/rBpOaVl0HTHIrbgEQIi6j0dxIcOfwRSeavjWBaCqmSNJLUp0p6FpleWHO8bkepe2DYRWkODE8j23XF1ETaldo6ElTAUZBh6dFXO0hWDThSy5bo8GX2emNHqgUcbErFMj8/0xS8OY//CMrEMEVbdH3MDcre70Tu/c3/dTxWs1OdPhE6lKsYKr1Df1KMa6+TwsRJRp9q7Zm2SC2WmECYebV5XJVHRasAId07+zxSwZQg2rW6lhYXwyhTi/QMajj/FQSxlh3NT1v5MrX5CEHGPNlJ3PmlQ6Is+oFgeUxROM8QmFY6DZOIuTsju5WcZIkB1cJpxpP2aumF6at/BHxVISYYAx4beoBR9jKIr2RMamtunwHgoFslZnC+Lds8YoYDS0fCWsls7cIP7LVQDH2SQI4NWnk8ZJSYyvZwUYhN+dOwj7IWjX66vfuzDmToYnZHnLGdnjPeZW57nNEBJHgK7EHygwLc6QPnCECHI7RLD6RSbyLBlSZC381QpOqkXMyTawfocv1t0pTCqs4iTHaBWKLkccle5aGdeSnA1fBJIbHLno06t50IB9lzMQhsXWgdP4UyimKGTgTN0fxPiHJhk0QxwZf9E/DCgqC9MDRK+vQUQzD4/Vjs9yJI7n5AWLi0HFH8OzyuKTHp3Csc0HD18hGwPaWFb1m+simb8oBFMm6VHU8M58suLVy2AOwkWHwKPGSg0yO6+bq04YIqLG1Nh+Q+ZID1VN2VsI3w2NxGoufdTv2iMKoV+RywbBIUVEqj1KO+CL3UmXln3IUXmGguJmXnVsT0J2NqXOjXrzxBO6//XSh6NC47RPYkC5gMVIub/jd1lcI7xRY0rg99EGtXvv3iqPwb5tks4+7ELaxDK6+8Wlc9Ht6ReBnqezoUUvearXHrDGeVN9ocYRkKnGTZw63ksGjCv8PlUz2uJCBBDTGaYtyD82mw4KsPGqwoUVN9/fuUouxGIxvRzuFYNGSrXH94e8ykWKvjxkGasUB965tNK8zfaTRo7lxrAa5ITGeCIHfDFUOHgCT0hsAZ3GB8Y6yRs96QZWUyMKVzIlB4T7xKXoxoHsLev95k5/RwT2KrXfEzhCJylm3UAiDzkF46VDZyfGQsDjwKTAKpL3R15fYjBA/DmYZnhW0BKT6oS15zqsQSsYLr/2XLQHONUFw1EZd4F1/iof5CPBOQbKh2ISv+qY4abyU+62YJuUToSKh2/lfxnArzjKJAjyuXIFnTkLrv7AQOrHDN0rDwfexzJTv1UPeHh6vGfyOuF88wRe6I8qoxZmmXux7pmZzBAFhrLy9Tv7wD/6XlpQIE80BvwXv/k9ZVgPzLsQcjQJWIRrDY/XnO7OM8+Z1L6RK+6FVcEzzVQ6gaDDgHnOBZbKRu2YqEhclLkEalgkOPt2PkQZLsJqg5nXVbTeHRcKU84FT0qjFTSwPQrCJeRs/Nihhpmmtd0g/h4G2X+OlDY/ZMQAIENUqQ2V2L+vUlkTv24FEDhkGZNBO36fS1c/aE85xnIjBpgsCLUvG6cWT7lhTAQ+i8heFwrCWyKA/CNXqc8FPh7KZYzdgsHbQRsMTbRSxn22rN7wFPOSIgFx72DxZ4f2mhQTVj0gC11Y5xWcjvDExCDpGBuMeF4UnxD7E4KtBgAAAAACAAAAAQAAABXBAAAWAQAAFkEAAB1bml0YSBib29sZWFuYSBzdHJpbmdieXRlIGFycmF5Ym9vbGVhbiBgNx0mAAkAAABm9yYAAQAAAGludGVnZXIgYAAAAFAdJgAJAAAAZvcmAAEAAABmbG9hdGluZyBwb2ludCBgbB0mABAAAABm9yYAAQAAAGNoYXJhY3RlciBgAIwdJgALAAAAZvcmAAEAAABzdHJpbmcgAKgdJgAHAAAAdW5pdCB2YWx1ZU9wdGlvbiB2YWx1ZW5ld3R5cGUgc3RydWN0c2VxdWVuY2V1bml0IHZhcmlhbnRuZXd0eXBlIHZhcmlhbnR0dXBsZSB2YXJpYW50c3RydWN0IHZhcmlhbnRleHBsaWNpdCBwYW5pYy9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlLTEuMC4yMTkvc3JjL2RlL21vZC5ycygeJgBgAAAA6wgAABIAAABm9yYAAQAAAGb3JgABAAAAYCBvciBgAABm9yYAAQAAAKgeJgAGAAAAZvcmAAEAAABvbmUgb2YgLjBhbnkgdmFsdWUAAFoEAAAMAAAABAAAAFsEAABcBAAAXQQAAAAAAAAAAAAAAQAAAKwCAACEFScATwAAADkGAAAUAAAAhBUnAE8AAAA5BgAAIQAAAIQVJwBPAAAALQYAABQAAACEFScATwAAAC0GAAAhAAAAJxUnAEsAAAAyCAAAHgAAAIQVJwBPAAAAugQAACQAAABFT0Ygd2hpbGUgcGFyc2luZyBhIGxpc3RFT0Ygd2hpbGUgcGFyc2luZyBhbiBvYmplY3RFT0Ygd2hpbGUgcGFyc2luZyBhIHN0cmluZ0VPRiB3aGlsZSBwYXJzaW5nIGEgdmFsdWVleHBlY3RlZCBgOmBleHBlY3RlZCBgLGAgb3IgYF1gZXhwZWN0ZWQgYCxgIG9yIGB9YGV4cGVjdGVkIGlkZW50ZXhwZWN0ZWQgdmFsdWVleHBlY3RlZCBgImBpbnZhbGlkIGVzY2FwZWludmFsaWQgbnVtYmVybnVtYmVyIG91dCBvZiByYW5nZWludmFsaWQgdW5pY29kZSBjb2RlIHBvaW50Y29udHJvbCBjaGFyYWN0ZXIgKFx1MDAwMC1cdTAwMUYpIGZvdW5kIHdoaWxlIHBhcnNpbmcgYSBzdHJpbmdrZXkgbXVzdCBiZSBhIHN0cmluZ2ludmFsaWQgdmFsdWU6IGV4cGVjdGVkIGtleSB0byBiZSBhIG51bWJlciBpbiBxdW90ZXNmbG9hdCBrZXkgbXVzdCBiZSBmaW5pdGUgKGdvdCBOYU4gb3IgKy8taW5mKWxvbmUgbGVhZGluZyBzdXJyb2dhdGUgaW4gaGV4IGVzY2FwZXRyYWlsaW5nIGNvbW1hdHJhaWxpbmcgY2hhcmFjdGVyc3VuZXhwZWN0ZWQgZW5kIG9mIGhleCBlc2NhcGVyZWN1cnNpb24gbGltaXQgZXhjZWVkZWQgYXQgbGluZSAgY29sdW1uIAAAAAEAAAAAAAAAmCEmAAkAAAChISYACAAAAEVycm9yKCwgbGluZTogLCBjb2x1bW46IMQhJgAGAAAAyiEmAAgAAADSISYACgAAAFx+JwABAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfanNvbi0xLjAuMTQwL3NyYy9lcnJvci5yc/whJgBkAAAA9wEAACEAAAD8ISYAZAAAAPsBAAAMAAAA/CEmAGQAAAACAgAAIQAAAPwhJgBkAAAACwIAACoAAAD8ISYAZAAAAA8CAAAsAAAAWgQAAAwAAAAEAAAAWwQAAFwEAABdBAAAaW52YWxpZCB0eXBlOiAsIGV4cGVjdGVkIAAAAMgiJgAOAAAA1iImAAsAAAAAAAAAAAAAAAEAAABeBAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGUtd2FzbS1iaW5kZ2VuLTAuNi41L3NyYy9saWIucnMEIyYAaAAAADUAAAAOAAAAAAAAAAAAAAABAAAANQMAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NtYXJ0c3RyaW5nLTEuMC4xL3NyYy9pbmxpbmUucnOMIyYAZAAAACsAAAArAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc21hcnRzdHJpbmctMS4wLjEvc3JjL2JveGVkLnJzAAAkJgBjAAAAQQAAAA4AAAAAJCYAYwAAAHYAAAAkAAAAOiAAAAAAAAAEAAAABAAAAF8EAAAvcnVzdC9kZXBzL2RsbWFsbG9jLTAuMi44L3NyYy9kbG1hbGxvYy5yc2Fzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAmCQmACkAAACsBAAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplIDw9IHNpemUgKyBtYXhfb3ZlcmhlYWQAAJgkJgApAAAAsgQAAA0AAAB1c2Ugb2Ygc3RkOjp0aHJlYWQ6OmN1cnJlbnQoKSBpcyBub3QgcG9zc2libGUgYWZ0ZXIgdGhlIHRocmVhZCdzIGxvY2FsIGRhdGEgaGFzIGJlZW4gZGVzdHJveWVkAABAJSYAXgAAAGxpYnJhcnkvc3RkL3NyYy90aHJlYWQvY3VycmVudC5ycwAAAKglJgAhAAAAAQEAAAkAAABBY2Nlc3NFcnJvcmNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb246IADnJSYASAAAAGxpYnJhcnkvc3RkL3NyYy90aHJlYWQvbW9kLnJzZmFpbGVkIHRvIGdlbmVyYXRlIHVuaXF1ZSB0aHJlYWQgSUQ6IGJpdHNwYWNlIGV4aGF1c3RlZFUmJgA3AAAAOCYmAB0AAACpBAAADQAAAGxpYnJhcnkvc3RkL3NyYy9zeW5jL2xhenlfbG9jay5ycwAAAKQmJgAhAAAA0QAAABMAAABsaWJyYXJ5L3N0ZC9zcmMvYmFja3RyYWNlLnJzdW5zdXBwb3J0ZWQgYmFja3RyYWNlZGlzYWJsZWQgYmFja3RyYWNlANgmJgAcAAAAigEAAB0AAABgBAAAEAAAAAQAAABhBAAAYgQAAFdvdWxkQmxvY2tlbnRpdHkgbm90IGZvdW5kcGVybWlzc2lvbiBkZW5pZWRjb25uZWN0aW9uIHJlZnVzZWRjb25uZWN0aW9uIHJlc2V0aG9zdCB1bnJlYWNoYWJsZW5ldHdvcmsgdW5yZWFjaGFibGVjb25uZWN0aW9uIGFib3J0ZWRub3QgY29ubmVjdGVkYWRkcmVzcyBpbiB1c2VhZGRyZXNzIG5vdCBhdmFpbGFibGVuZXR3b3JrIGRvd25icm9rZW4gcGlwZWVudGl0eSBhbHJlYWR5IGV4aXN0c29wZXJhdGlvbiB3b3VsZCBibG9ja25vdCBhIGRpcmVjdG9yeWlzIGEgZGlyZWN0b3J5ZGlyZWN0b3J5IG5vdCBlbXB0eXJlYWQtb25seSBmaWxlc3lzdGVtIG9yIHN0b3JhZ2UgbWVkaXVtZmlsZXN5c3RlbSBsb29wIG9yIGluZGlyZWN0aW9uIGxpbWl0IChlLmcuIHN5bWxpbmsgbG9vcClzdGFsZSBuZXR3b3JrIGZpbGUgaGFuZGxlaW52YWxpZCBpbnB1dCBwYXJhbWV0ZXJpbnZhbGlkIGRhdGF0aW1lZCBvdXR3cml0ZSB6ZXJvbm8gc3RvcmFnZSBzcGFjZXNlZWsgb24gdW5zZWVrYWJsZSBmaWxlcXVvdGEgZXhjZWVkZWRmaWxlIHRvbyBsYXJnZXJlc291cmNlIGJ1c3lleGVjdXRhYmxlIGZpbGUgYnVzeWRlYWRsb2NrY3Jvc3MtZGV2aWNlIGxpbmsgb3IgcmVuYW1ldG9vIG1hbnkgbGlua3NpbnZhbGlkIGZpbGVuYW1lYXJndW1lbnQgbGlzdCB0b28gbG9uZ29wZXJhdGlvbiBpbnRlcnJ1cHRlZHVuc3VwcG9ydGVkdW5leHBlY3RlZCBlbmQgb2YgZmlsZW91dCBvZiBtZW1vcnlpbiBwcm9ncmVzc290aGVyIGVycm9ydW5jYXRlZ29yaXplZCBlcnJvck9zY29kZUtpbmRDdXN0b20gKG9zIGVycm9yIAAAAQAAAAAAAABHKiYACwAAAFx+JwABAAAAbGlicmFyeS9zdGQvc3JjL3BhdGgucnMAbComABcAAADTAgAAIQAAAGwqJgAXAAAA+gIAACwAAABsKiYAFwAAAPwCAAAmAAAAbComABcAAAAJAwAAJwAAAGwqJgAXAAAAFQMAACcAAABsKiYAFwAAAH8DAAApAAAAbComABcAAACAAwAAKwAAAGwqJgAXAAAAlQMAAC8AAABsKiYAFwAAAI0DAAAvAAAAbComABcAAACbAwAAKwAAAGxpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9tdXRleC9ub190aHJlYWRzLnJzJCsmACwAAAATAAAACQAAAGxpYnJhcnkvc3RkL3NyYy9zeW5jL3BvaXNvbi9vbmNlLnJzAGArJgAjAAAA1gAAABQAAAA8dW5rbm93bj7vv71saWJyYXJ5L3N0ZC9zcmMvLi4vLi4vYmFja3RyYWNlL3NyYy9zeW1ib2xpemUvbW9kLnJzoCsmADQAAABnAQAAMAAAAAEAAAAAAAAAhCQmAAIAAAACAAAAAAAAAAAABAAAAAAAAAAAACAAAOggLSAAAQAAAAAAAAAMLCYAAwAAAAIAAAAAAAAAAQAAAAEAAAAAAAAAIAAA6CAgICAgICAgICAgICAgICAgICBhdCAAAMQUJwABAAAATm90Rm91bmRQZXJtaXNzaW9uRGVuaWVkQ29ubmVjdGlvblJlZnVzZWRDb25uZWN0aW9uUmVzZXRIb3N0VW5yZWFjaGFibGVOZXR3b3JrVW5yZWFjaGFibGVDb25uZWN0aW9uQWJvcnRlZE5vdENvbm5lY3RlZEFkZHJJblVzZUFkZHJOb3RBdmFpbGFibGVOZXR3b3JrRG93bkJyb2tlblBpcGVBbHJlYWR5RXhpc3RzTm90QURpcmVjdG9yeUlzQURpcmVjdG9yeURpcmVjdG9yeU5vdEVtcHR5UmVhZE9ubHlGaWxlc3lzdGVtRmlsZXN5c3RlbUxvb3BTdGFsZU5ldHdvcmtGaWxlSGFuZGxlSW52YWxpZElucHV0SW52YWxpZERhdGFUaW1lZE91dFdyaXRlWmVyb1N0b3JhZ2VGdWxsTm90U2Vla2FibGVRdW90YUV4Y2VlZGVkRmlsZVRvb0xhcmdlUmVzb3VyY2VCdXN5RXhlY3V0YWJsZUZpbGVCdXN5RGVhZGxvY2tDcm9zc2VzRGV2aWNlc1Rvb01hbnlMaW5rc0ludmFsaWRGaWxlbmFtZUFyZ3VtZW50TGlzdFRvb0xvbmdJbnRlcnJ1cHRlZFVuc3VwcG9ydGVkVW5leHBlY3RlZEVvZk91dE9mTWVtb3J5SW5Qcm9ncmVzc090aGVyVW5jYXRlZ29yaXplZG9wZXJhdGlvbiBzdWNjZXNzZnVsT25jZSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAACALiYAKgAAAG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1heSBub3QgYmUgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5tC4mADgAAABjBAAADAAAAAQAAABkBAAAZQQAAGYEAAAAAAAAAAAAAAEAAACsAgAAAAAAAAQAAAAEAAAAZwQAAAAAAAAAAAAAAQAAAGkEAABqBAAAawQAAEkFJwBoAAAABAEAACAAAABJBScAaAAAACUBAAAnAAAASQUnAGgAAAAqAQAANAAAAEkFJwBoAAAASgEAADEAAAA6IGJwb3MgPSA7IGxpbmVicG9zID0gAAABAAAAAAAAAIQvJgAJAAAAjS8mAA0AAADUBScAAQAAAEkFJwBoAAAASwEAABEAAABJBScAaAAAAGEBAAAZAAAASQUnAGgAAACDAQAARgAAAEkFJwBoAAAA3gMAADUAAABJBScAaAAAAOUDAAA2AAAAbWFwLnN0YXJ0X3BvcyA9IDsgdG90YWxfZXh0cmFfYnl0ZXMgPSA7IGJwb3MgPSAADDAmABAAAAAcMCYAFgAAADIwJgAJAAAASQUnAGgAAADsAwAACQAAAEkFJwBoAAAAGQQAABAAAABJBScAaAAAAMoEAAAwAAAASQUnAGgAAAC2BAAAMAAAAEkFJwBoAAAApwUAABAAAABubyBlcnJvcnMgZW5jb3VudGVyZWQgZXZlbiB0aG91Z2ggYGRlbGF5X3NwYW5fYnVnYCBpc3N1ZWQAAACkMCYAOQAAANA4JgBoAAAAmgEAABEAAABlbmNvdW50ZXJlZCBlcnJvciB3aXRoIGAtWiB0cmVhdF9lcnJfYXNfYnVnAPgwJgArAAAA0DgmAGgAAABnAgAADQAAABYAAABvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtQDEmACgAAAAkAAAAAAAAAAIAAABoMSYAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9zdGQvc3JjL3BhdGgucnMAgDEmAEcAAAC4DAAAGwAAAIAxJgBHAAAA2wwAACEAAACAMSYARwAAAM4MAAAiAAAAhZImAHAAAABpAQAADQAAANgGJwABAAAATWFyay9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19jb21tb24tMTQuMC4zL3NyYy9lcnJvcnMvZGlhZ25vc3RpY19idWlsZGVyLnJzRXJyb3IgY29uc3RydWN0ZWQgYnV0IG5vdCBlbWl0dGVkFDImAHcAAABdAQAADQAAAAAAAAAAAAAAAQAAAGwEAABtBAAAbgQAAE1lc3NhZ2VTdWJEaWFnbm9zdGljbGV2ZWxyZW5kZXJfc3BhbkJ1Z0ZhdGFsUGhhc2VGYXRhbFdhcm5pbmdOb3RlSGVscENhbmNlbGxlZEZhaWx1cmVOb3RlL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvdW5pY29kZS13aWR0aC0wLjEuMTQvc3JjL3RhYmxlcy5ycy0zJgBnAAAAkQAAABUAAAAtMyYAZwAAAJcAAAAZAAAAAAAAAAwAAAAEAAAAbwQAAHAEAAAAAAAADAAAAAQAAABxBAAAcgQAAGFzc2VydGlvbiBmYWlsZWQ6IHN0YXJ0IDw9IGVuZC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19jb21tb24tMTQuMC4zL3NyYy9pbnB1dC5ycwAAAPozJgBjAAAAHwAAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBzb3VyY2VfZmlsZV9lbmQgPj0gbGFzdF9saW5lX3N0YXJ0L2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2NvbW1vbi0xNC4wLjMvc3JjL3N5bnRheF9wb3MvYW5hbHl6ZV9zb3VyY2VfZmlsZS5yc6Q0JgB8AAAAKgAAAAkAAACkNCYAfAAAAGoAAAAYAAAApDQmAHwAAABqAAAALQAAAKQ0JgB8AAAAdQAAACIAAACkNCYAfAAAAH0AAAAiAAAApDQmAHwAAABVAAAAHwAAAKQ0JgB8AAAAWQAAABsAAACkNCYAfAAAAF0AAAAbAAAApDQmAHwAAABgAAAAJgAAAKQ0JgB8AAAAYwAAACYAAABNYWluSGVhZGVyTXNnSGVhZGVyTXNnTGluZUFuZENvbHVtbkxpbmVOdW1iZXJRdW90YXRpb25VbmRlcmxpbmVQcmltYXJ5VW5kZXJsaW5lU2Vjb25kYXJ5TGFiZWxQcmltYXJ5TGFiZWxTZWNvbmRhcnlPbGRTY2hvb2xOb3RlVGV4dE5vU3R5bGVMZXZlbEhpZ2hsaWdodGNhbm5vdCByZWN1cnNpdmVseSBhY3F1aXJlIG11dGV4WDYmACAAAAAvcnVzdGMvMmU2ODgyYWM1YmUyN2E3MzI5M2Q2ZjdhZTU2Mzk3ZmRmMzI4NDhkZS9saWJyYXJ5L3N0ZC9zcmMvc3lzL3N5bmMvbXV0ZXgvbm9fdGhyZWFkcy5yc4A2JgBcAAAAEwAAAAkAAAAAAAAAAAAAAAEAAABTAwAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2NvbW1vbi0xNC4wLjMvc3JjL2NvbW1lbnRzLnJzAAD8NiYAZgAAAKcBAAAWAAAA/DYmAGYAAACnAQAAOwAAAPw2JgBmAAAArAEAAA4AAAD8NiYAZgAAALMBAAAnAAAA/DYmAGYAAAC/AQAAMgAAAPw2JgBmAAAAxwEAABYAAAD8NiYAZgAAAMsBAAAWAAAA/DYmAGYAAADPAQAAFwAAAPw2JgBm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dW1iZXIgYXMgY2hhcgAAQIEmAHIAAACyAwAADgAAAG1lc3NhZ2VxdW90YW1wYXBvc2x0Z3RuYnNwaWV4Y2xjZW50cG91bmRjdXJyZW55ZW5icnZiYXJzZWN0dW1sY29weW9yZGZsYXF1b25vdHNoeXJlZ21hY3JkZWdwbHVzbW5zdXAyc3VwM2FjdXRlbWljcm9wYXJhbWlkZG90Y2VkaWxzdXAxb3JkbXJhcXVvZnJhYzE0ZnJhYzEyZnJhYzM0aXF1ZXN0QWdyYXZlQWFjdXRlQWNpcmNBdGlsZGVBdW1sQXJpbmdBRWxpZ0NjZWRpbEVncmF2ZUVhY3V0ZUVjaXJjRXVtbElncmF2ZUlhY3V0ZUljaXJjSXVtbEVUSE50aWxkZU9ncmF2ZU9hY3V0ZU9jaXJjT3RpbGRlT3VtbHRpbWVzT3NsYXNoVWdyYXZlVWFjdXRlVWNpcmNVdW1sWWFjdXRlVEhPUk5zemxpZ2FncmF2ZWFhY3V0ZWFjaXJjYXRpbGRlYXVtbGFyaW5nYWVsaWdjY2VkaWxlZ3JhdmVlYWN1dGVlY2lyY2V1bWxpZ3JhdmVpYWN1dGVpY2lyY2l1bWxldGhudGlsZGVvZ3JhdmVvYWN1dGVvY2lyY290aWxkZW91bWxkaXZpZGVvc2xhc2h1Z3JhdmV1YWN1dGV1Y2lyY3V1bWx5YWN1dGV0aG9ybnl1bWxPRWxpZ29lbGlnU2Nhcm9uc2Nhcm9uWXVtbGZub2ZjaXJjdGlsZGVBbHBoYUJldGFHYW1tYURlbHRhRXBzaWxvblpldGFFdGFUaGV0YUlvdGFLYXBwYUxhbWJkYU11TnVYaU9taWNyb25QaVJob1NpZ21hVGF1VXBzaWxvblBoaUNoaVBzaU9tZWdhYWxwaGFiZXRhZ2FtbWFkZWx0YWVwc2lsb256ZXRhZXRhdGhldGFpb3Rha2FwcGFsYW1iZGFtdW51eGlvbWljcm9ucGlyaG9zaWdtYWZzaWdtYXRhdXVwc2lsb25waGljaGlwc2lvbWVnYXRoZXRhc3ltdXBzaWhwaXZlbnNwZW1zcHRoaW5zcHp3bmp6d2pscm1ybG1uZGFzaG1kYXNobHNxdW9yc3F1b3NicXVvbGRxdW9yZHF1b2JkcXVvZGFnZ2VyRGFnZ2VyYnVsbGhlbGxpcHBlcm1pbHByaW1lUHJpbWVsc2FxdW9yc2FxdW9vbGluZWZyYXNsZXVyb2ltYWdld2VpZXJwcmVhbHRyYWRlYWxlZnN5bWxhcnJ1YXJycmFycmRhcnJoYXJyY3JhcnJsQXJydUFycnJBcnJkQXJyaEFycmZvcmFsbHBhcnRleGlzdGVtcHR5bmFibGFpc2lubm90aW5uaXByb2RzdW1taW51c2xvd2FzdHJhZGljaW5maW5hbmdhbmRvcmNhcGN1cGludHRoZXJlNHNpbWNvbmdhc3ltcG5lZXF1aXZsZWdlc3Vic3VwbnN1YnN1YmVzdXBlb3BsdXNvdGltZXNwZXJwc2RvdGxjZWlscmNlaWxsZmxvb3JyZmxvb3JsYW5ncmFuZ2xvenNwYWRlc2NsdWJzaGVhcnRzZGlhbXNzdHJ1Y3QgVHNTeW50YXgvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9sZXhlci0yMy4wLjAvc3JjL2NvbW1vbi9wYXJzZXIvdXRpbC5ycwAAAQAAAAAAAADVBScAAQAAAAEAAAAAAAAAxBQnAAEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBVc2luZyBpcyBub3QgYSB2YWxpZCBkZWNsYXJhdGlvbiBmb3IgYGRlY2xhcmVgIGtleXdvcmRQSyYAYAAAALpKJgB0AAAAVQAAABwAAAAAAAAAAQAAAAEAAABEBAAAAAAAAAEAAAABAAAAiwQAAFBhcnNlSW50RXJyb3IvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9sZXhlci0yMy4wLjAvc3JjL2NvbW1vbi9sZXhlci9udW1iZXIucnMAAPVLJgB1AAAAOgAAACQAAAD1SyYAdQAAAEYAAAAjAAAA9UsmAHUAAABSAAAAIwAAAPVLJgB1AAAAXAAAABoAAAD1SyYAdQAAAFoAAAAaAAAAVW5leHBlY3RlZCBlb2YvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9sZXhlci0yMy4wLjAvc3JjL2Vycm9yLnJzRGVjbGFyYXRpb24gaXMgbm90IGFsbG93ZWRVc2luZyBkZWNsYXJhdGlvbiBpcyBub3QgYWxsb3dlZFVzaW5nIGRlY2xhcmF0aW9uIGlzIG5vdCBhbGxvd2VkIGluIGZvci1pbiBsb29wVXNpbmcgZGVjbGFyYXRpb24gaXMgbm90IGVuYWJsZWQuIFNldCBqc2MucGFyc2VyLmV4cGxpY2l0UmVzb3VyY2VNYW5hZ2VtZW50IHRvIHRydWVVc2luZyBkZWNsYXJhdGlvbiBvbmx5IGFsbG93cyBpZGVudGlmaWVyc1VzaW5nIGRlY2xhcmF0aW9uIHJlcXVpcmVzIGluaXRpYWxpemVycHJpdmF0ZSBuYW1lcyBhcmUgbm90IGFsbG93ZWQgaW4gaW50ZXJmYWNlSW52YWxpZCBgc3VwZXIoKWBJbnZhbGlkIGFjY2VzcyB0byBzdXBlckluZGV4IHN1cGVyIHdpdGggcHJpdmF0ZSBuYW1lIGlzIG5vdCBhbGxvd2VkJ25ldy50YXJnZXQnIGlzIG9ubHkgYWxsb3dlZCBpbiB0aGUgYm9keSBvZiBhIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLCBmdW5jdGlvbiBleHByZXNzaW9uLCBvciBjbGFzcy5JbXBvcnQgaXMgbm90IGFsbG93ZWQgaGVyZUFuIGFycm93IGZ1bmN0aW9uIGlzIG5vdCBhbGxvd2VkIGhlcmVgZXhwb3J0YCBpcyBub3QgYWxsb3dlZCBoZXJlQSBnZXR0ZXIgb3IgYSBzZXR0ZXIgY2Fubm90IGJlIHJlYWRvbmx5QSBnZXR0ZXIgb3IgYSBzZXR0ZXIgY2Fubm90IGJlIG9wdGlvbmFsQSBgZ2V0YCBhY2Nlc3NvciBjYW5ub3QgaGF2ZSBwYXJhbWV0ZXJzQSBgc2V0YCBhY2Nlc3NvciBtdXN0IGhhdmUgZXhhY3RseSBvbmUgcGFyYW1ldGVydG9wIGxldmVsIGF3YWl0IGlzIG9ubHkgYWxsb3dlZCBpbiBtb2R1bGVMZWdhY3kgZGVjaW1hbCBlc2NhcGUgaXMgbm90IHBlcm1pdHRlZCBpbiBzdHJpY3QgbW9kZUxlZ2FjeSBvY3RhbCBlc2NhcGUgaXMgbm90IHBlcm1pdHRlZCBpbiBzdHJpY3QgbW9kZUludmFsaWQgY2hhcmFjdGVyIGluIGlkZW50aWZpZXJhIGJpbmFyeWFuIG9jdGFsYSBkZWNpbWFsYSBoZXhhZGVjaW1hbEV4cGVjdGVkICBkaWdpdAAAAPJQJgAJAAAA+1AmAAYAAADKTCYAZwAAAEABAAAaAAAAU2V0dGVyIHNob3VsZCBoYXZlIGV4YWN0bHkgb25lIHBhcmFtZXRlclJlc3QgcGF0dGVybiBpcyBub3QgYWxsb3dlZCBpbiBzZXR0ZXJVbnRlcm1pbmF0ZWQgYmxvY2sgY29tbWVudFVudGVybWluYXRlZCBzdHJpbmcgY29uc3RhbnRFeHBlY3RlZCB1bmljb2RlIGVzY2FwZVVuZXhwZWN0ZWQgZXNjYXBlIHNlcXVlbmNlIGluIHJlc2VydmVkIHdvcmQ6IAC+USYALQAAAFVudGVybWluYXRlZCByZWdleHAgbGl0ZXJhbFVudGVybWluYXRlZCB0ZW1wbGF0ZUlkZW50aWZpZXIgY2Fubm90IGZvbGxvdyBudW1iZXJVbmV4cGVjdGVkIGNoYXJhY3RlciBDUiYAFQAAAEludmFsaWQgc3RyaW5nIGVzY2FwZUludmFsaWQgdW5pY29kZSBlc2NhcGVCYWQgY2hhcmFjdGVyIGVzY2FwZSBzZXF1ZW5jZSwgZXhwZWN0ZWQgAItSJgAoAAAARXhwZWN0ZWQgKywgLSBvciBkZWNpbWFsIGRpZ2l0IGFmdGVyIGVMZWdhY3kgY29tbWVudHMgY2Fubm90IGJlIHVzZWQgaW4gbW9kdWxlIGNvZGVgIGNhbm5vdCBiZSB1c2VkIGFzIGFuIGlkZW50aWZpZXIgaW4gc3RyaWN0IG1vZGUAZvcmAAEAAAAPUyYAMAAAAGBhd2FpdGAgY2Fubm90IGJlIHVzZWQgYXMgYW4gaWRlbnRpZmllciBpbiBhbiBhc3luYyBjb250ZXh0J2V2YWwnIGFuZCAnYXJndW1lbnRzJyBjYW5ub3QgYmUgdXNlZCBhcyBhIGJpbmRpbmcgaWRlbnRpZmllciBpbiBzdHJpY3QgbW9kZSdhcmd1bWVudHMnIGlzIG9ubHkgYWxsb3dlZCBpbiBmdW5jdGlvbnMgYW5kIGNsYXNzIG1ldGhvZHNJbGxlZ2FsICd1c2Ugc3RyaWN0JyBkaXJlY3RpdmUgaW4gZnVuY3Rpb24gd2l0aCBub24tc2ltcGxlIHBhcmFtZXRlciBsaXN0LicqKicgY2Fubm90IGJlIGFwcGxpZWQgdG8gdW5hcnkvYXdhaXQgZXhwcmVzc2lvbi5VbmV4cGVjdGVkIHRva2VuICcjJ0xpbmVCcmVhayBjYW5ub3QgZm9sbG93ICd0aHJvdydVbmV4cGVjdGVkIGxpbmUgYnJlYWsgYmV0d2VlbiBhcnJvdyBoZWFkIGFuZCBhcnJvd1VuZXhwZWN0ZWQgdG9rZW4gYGAuIEV4cGVjdGVkIADxVCYAEgAAAANVJgAMAAAAICwgb3IgAAAjVSYAAwAAACBvciBVbmV4cGVjdGVkIHRva2VuLiBEaWQgeW91IG1lYW4gADRVJgAfAAAA5AMnAAEAAABjYW5ub3QgaW1wb3J0IGFzIHJlc2VydmVkIHdvcmRhc3NpZ25tZW50IHByb3BlcnR5IGlzIGludmFsaWQgc3ludGF4RXhwZWN0ZWQgJycsIGdvdCAnJwAAp1UmAAoAAACxVSYACAAAALlVJgABAAAARXhwZWN0ZWQgJzsnLCAnfScgb3IgPGVvZj5hd2FpdCogaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBhc3luYyBmdW5jdGlvbnMgcHJvcG9zYWwuIFVzZSBQcm9taXNlLmFsbCgpIGluc3RlYWQuQ2Fubm90IHVzZSBhIHJlc2VydmVkIHdvcmQgYXMgYSBzaG9ydGhhbmQgcHJvcGVydHlOdWxsaXNoIGNvYWxlc2Npbmcgb3BlcmF0b3IoPz8pIHJlcXVpcmVzIHBhcmVucyB3aGVuIG1peGluZyB3aXRoIGxvZ2ljYWwgb3BlcmF0b3JzQSBzd2l0Y2ggYmxvY2sgY2Fubm90IGhhdmUgbXVsdGlwbGUgZGVmYXVsdHNUcmFpbGluZyBjb21tYSBpc24ndCBwZXJtaXR0ZWQgYWZ0ZXIgYSByZXN0IGVsZW1lbnRSZXN0IGVsZW1lbnQgbXVzdCBiZSBmaW5hbCBlbGVtZW50UGFyZW50aGVzaXplZCBleHByZXNzaW9uIGNhbm5vdCBjb250YWluIHNwcmVhZCBvcGVyYXRvclBhcmVudGhlc2l6ZWQgZXhwcmVzc2lvbiBjYW5ub3QgYmUgZW1wdHlOb3QgYSBwYXR0ZXJuTm90IGFuIGV4cHJlc3Npb25DYW5ub3QgYXNzaWduIHRvIHRoaXNJbnZhbGlkIGFzc2lnbm1lbnQgdGFyZ2V0RXhwZWN0ZWQgaWRlbnRFeHBlY3RlZCAnOycgb3IgbGluZSBicmVha0xhYmVsICBpcyBhbHJlYWR5IGRlY2xhcmVkAAAAG1gmAAYAAAAhWCYAFAAAAEFuIGFzeW5jIGZ1bmN0aW9uIGNhbm5vdCBiZSBnZW5lcmF0b3InaW1wb3J0JywgYW5kICdleHBvcnQnIGFyZSBub3QgcGVybWl0dGVkIGhlcmUnaW1wb3J0JywgYW5kICdleHBvcnQnIGNhbm5vdCBiZSB1c2VkIG91dHNpZGUgb2YgbW9kdWxlIGNvZGUnaW1wb3J0Lm1ldGEnIGNhbm5vdCBiZSB1c2VkIG91dHNpZGUgb2YgbW9kdWxlIGNvZGUuRGVzdHJ1Y3R1cmluZyBiaW5kaW5ncyByZXF1aXJlIGluaXRpYWxpemVyc1dpdGggc3RhdGVtZW50IGFyZSBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZVJldHVybiBzdGF0ZW1lbnQgaXMgbm90IGFsbG93ZWQgaGVyZUV4cGVjdGVkIG9uZSB2YXJpYWJsZSBiaW5kaW5nVW5leHBlY3RlZCBpbml0aWFsaXplciBpbiBmb3IgaW4vb2YgbG9vcEdlbmVyYXRvciBvciBhc3luYyBmdW5jdGlvbiBjYW5ub3QgYmUgbGFiZWxsZWRGdW5jdGlvbiBjYW5ub3QgYmUgbGFiZWxsZWQgaW4gc3RyaWN0IG1vZGUneWllbGQnIGNhbm5vdCBiZSB1c2VkIGFzIGEgcGFyYW1ldGVyIHdpdGhpbiBnZW5lcmF0b3JgYXdhaXRgIGV4cHJlc3Npb25zIGNhbm5vdCBiZSB1c2VkIGluIGEgcGFyYW1ldGVyIGluaXRpYWxpemVyLmZvciBhd2FpdCBzeW50YXggaXMgdmFsaWQgb25seSBmb3IgZm9yLW9mIHN0YXRlbWVudGF3YWl0IGlzbid0IGFsbG93ZWQgaW4gbm9uLWFzeW5jIGZ1bmN0aW9uVW50ZXJtaW5hdGVkIEpTWCBjb250ZW50c0pTWCBhdHRyaWJ1dGVzIG11c3Qgb25seSBiZSBhc3NpZ25lZCBhIG5vbi1lbXB0eSBleHByZXNzaW9uSlNYIHZhbHVlIHNob3VsZCBiZSBlaXRoZXIgYW4gZXhwcmVzc2lvbiBvciBhIHF1b3RlZCBKU1ggdGV4dEV4cGVjdGVkIGNvcnJlc3BvbmRpbmcgSlNYIGNsb3NpbmcgdGFnIGZvciA8PkV4cGVjdGVkIGNvcnJlc3BvbmRpbmcgSlNYIGNsb3NpbmcgdGFnIGZvciA8AAAAsVsmACwAAADdBScAAQAAAExlYWRpbmcgZGVjb3JhdG9ycyBtdXN0IGJlIGF0dGFjaGVkIHRvIGEgY2xhc3MgZGVjbGFyYXRpb25Vc2luZyB0aGUgZXhwb3J0IGtleXdvcmQgYmV0d2VlbiBhIGRlY29yYXRvciBhbmQgYSBjbGFzcyBpcyBub3QgYWxsb3dlZC4gUGxlYXNlIHVzZSBgZXhwb3J0IEBkZWMgY2xhc3NgIGluc3RlYWQuQSByZXF1aXJlZCBlbGVtZW50IGNhbm5vdCBmb2xsb3cgYW4gb3B0aW9uYWwgZWxlbWVudC5UeXBlc2NyaXB0IHBhcmFtZXRlciBwcm9wZXJ0eSBtdXN0IGJlIGFuIGlkZW50aWZpZXIgb3IgYXNzaWdubWVudCBwYXR0ZXJuVW5leHBlY3RlZCBzcGFjZSBiZXR3ZWVuICMgYW5kIGlkZW50aWZpZXJDb25zdHJ1Y3RvciBjYW4ndCBiZSBhbiBhc3luYyBmdW5jdGlvbkNsYXNzZXMgbWF5IG5vdCBoYXZlIGEgbm9uLXN0YXRpYyBmaWVsZCBuYW1lZCAnY29uc3RydWN0b3InQ2xhc3NlcyBjYW4ndCBoYXZlIGEgcHJpdmF0ZSBmaWVsZCBuYW1lZCAnI2NvbnN0cnVjdG9yJy4nIG1vZGlmaWVyIGNhbm5vdCBiZSB1c2VkIHdpdGggYSBwcml2YXRlIGlkZW50aWZpZXIAAAC5VSYAAQAAANpdJgAzAAAAQ2xhc3MgY29uc3RydWN0b3IgY2FuJ3QgYmUgYW4gYWNjZXNzb3IuQSBtZXRob2QgY2Fubm90IGJlIHJlYWRvbmx5QSBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgZ2VuZXJhdG9yQSBjbGFzcyBjYW4gb25seSBoYXZlIG9uZSBjb25zdHJ1Y3RvckEgYmluZGluZyBwYXR0ZXJuIHBhcmFtZXRlciBjYW5ub3QgYmUgb3B0aW9uYWwgaW4gYW4gaW1wbGVtZW50YXRpb24gc2lnbmF0dXJlLlN1cGVyIGNhbGwgY2Fubm90IGJlIG9wdGlvbmFsQ29uc3RydWN0b3IgaW4vYWZ0ZXIgYW4gb3B0aW9uYWwgY2hhaW5pbmcgaXMgbm90IGFsbG93ZWQuVGFnZ2VkIHRlbXBsYXRlIGxpdGVyYWwgaXMgbm90IGFsbG93ZWQgaW4gb3B0aW9uYWwgY2hhaW4uVHJhaWxpbmcgY29tbWEgaXMgZGlzYWxsb3dlZCBpbnNpZGUgaW1wb3J0KC4uLikgYXJndW1lbnRzZXhwb3J0IGRlZmF1bHQgc3RhdGVtZW50cyByZXF1aXJlZCBmcm9tICcuLi4nO2AgY2Fubm90IGJlIHVzZWQgd2l0aG91dCBgZnJvbWAgY2xhdXNlAABm9yYAAQAAAOxfJgAmAAAAYC4uLmAgbXVzdCBiZSBmb2xsb3dlZCBieSBhbiBpZGVudGlmaWVyIGluIGRlY2xhcmF0aW9uIGNvbnRleHRzQSBudW1lcmljIHNlcGFyYXRvciBpcyBvbmx5IGFsbG93ZWQgYmV0d2VlbiB0d28gZGlnaXRzQSBzdHJpbmcgbGl0ZXJhbCBjYW5ub3QgYmUgdXNlZCBhcyBhbiBpbXBvcnRlZCBiaW5kaW5nLgotIERpZCB5b3UgbWVhbiBgaW1wb3J0IHsgIiIgYXMgZm9vIH1gPwCZYCYAUgAAAOtgJgAMAAAAQSBzdHJpbmcgbGl0ZXJhbCBjYW5ub3QgYmUgdXNlZCBhcyBhbiBleHBvcnRlZCBiaW5kaW5nIHdpdGhvdXQgYGZyb21gLidjb25zdCcgZGVjbGFyYXRpb25zIG11c3QgYmUgaW5pdGlhbGl6ZWREdXBsaWNhdGVkIHJlZ3VsYXIgZXhwcmVzc2lvbiBmbGFnICcnLnZhJgAkAAAAmmEmAAIAAABVbmtub3duIHJlZ3VsYXIgZXhwcmVzc2lvbiBmbGFncy5FeHBlY3RlZCBhbiBpZGVudGlmaWVyRXhwZWN0ZWQgYSBzZW1pY29sb25UcmFpbGluZyBjb21tYSBpcyBub3QgYWxsb3dlZEEgcmVzdCBwYXJhbWV0ZXIgbXVzdCBiZSBsYXN0IGluIGEgcGFyYW1ldGVyIGxpc3RQYXJhbWV0ZXIgY2Fubm90IGhhdmUgcXVlc3Rpb24gbWFyayBhbmQgaW5pdGlhbGl6ZXInIG1vZGlmaWVyIG11c3QgcHJlY2VkZSAnJyBtb2RpZmllci65VSYAAQAAAHhiJgAZAAAAkWImAAsAAAAnIG1vZGlmaWVyIGFscmVhZHkgc2Vlbi65VSYAAQAAALRiJgAYAAAAYGRlY2xhcmVgIG1vZGlmaWVyIGNhbm5vdCBhcHBlYXIgb24gY2xhc3MgZWxlbWVudHMgb2YgdGhpcyBraW5kYGRlY2xhcmVgIG1vZGlmaWVyIG5vdCBhbGxvd2VkIGZvciBjb2RlIGFscmVhZHkgaW4gYW4gYW1iaWVudCBjb250ZXh0YGFzeW5jYCBtb2RpZmllciBjYW5ub3QgYmUgdXNlZCBoZXJlQSByZXN0IHBhcmFtZXRlciBjYW5ub3QgYmUgb3B0aW9uYWxBIHJlc3QgcGFyYW1ldGVyIGNhbm5vdCBoYXZlIGFuIGluaXRpYWxpemVyanNjLnRhcmdldCBzaG91bGQgYmUgZXM1IG9yIHVwcGVyIHRvIHVzZSBnZXR0ZXIgLyBzZXR0ZXJMZWdhY3kgb2N0YWwgbGl0ZXJhbHMgYXJlIG5vdCBhdmFpbGFibGUgd2hlbiB0YXJnZXRpbmcgRUNNQVNjcmlwdCA1IGFuZCBoaWdoZXInIG1vZGlmaWVyIGNhbm5vdCBhcHBlYXIgb24gYSBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbgAAALlVJgABAAAAWGQmADUAAABUeXBlIHBhcmFtZXRlcnMgY2Fubm90IGFwcGVhciBvbiBhIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uQW4gaW5kZXggc2lnbmF0dXJlIG11c3QgaGF2ZSBleGFjdGx5IG9uZSBwYXJhbWV0ZXJUeXBlIHBhcmFtZXRlciBsaXN0IGNhbm5vdCBiZSBlbXB0eUludmFsaWQgdXNlIG9mICdhcmd1bWVudHMnIGluIHN0cmljdCBtb2RlJ2RlbGV0ZScgY2Fubm90IGJlIGNhbGxlZCBvbiBhbiBpZGVudGlmaWVyIGluIHN0cmljdCBtb2RlQSAnYnJlYWsnIHN0YXRlbWVudCBjYW4gb25seSBiZSB1c2VkIHdpdGhpbiBhbiBlbmNsb3NpbmcgaXRlcmF0aW9uIG9yIHN3aXRjaCBzdGF0ZW1lbnRUaGUgbGVmdC1oYW5kIHNpZGUgb2YgYSBgZm9yLi4ub2ZgIHN0YXRlbWVudCBtYXkgbm90IGJlIGBhc3luY2BKdW1wIHRhcmdldCBjYW5ub3QgY3Jvc3MgZnVuY3Rpb24gYm91bmRhcnlFeHByZXNzaW9uIGV4cGVjdGVkdHlwZSBleHBlY3RlZER1cGxpY2F0ZSBsYWJlbEEgJ2NvbnRpbnVlJyBzdGF0ZW1lbnQgY2FuIG9ubHkganVtcCB0byBhIGxhYmVsIG9mIGFuIGVuY2xvc2luZyBpdGVyYXRpb24gc3RhdGVtZW50QSAnYnJlYWsnIHN0YXRlbWVudCBjYW4gb25seSBqdW1wIHRvIGEgbGFiZWwgb2YgYW4gZW5jbG9zaW5nIHN0YXRlbWVudFZhcmlhYmxlIGRlY2xhcmF0aW9uIGxpc3QgY2Fubm90IGJlIGVtcHR5bGl0ZXJhbCBpbiBhbiBpbXBvcnQgdHlwZSBzaG91bGQgYmUgc3RyaW5nIGxpdGVyYWxBbiBvYmplY3QgbWVtYmVyIGNhbm5vdCBiZSBkZWNsYXJlZCBvcHRpb25hbENvbXB1dGVkIHByb3BlcnR5IG5hbWVzIGFyZSBub3QgYWxsb3dlZCBpbiBlbnVtc0EgY29tbWEgZXhwcmVzc2lvbiBpcyBub3QgYWxsb3dlZCBpbiBhIGNvbXB1dGVkIHByb3BlcnR5IG5hbWVgZXh0ZW5kc2AgY2xhdXNlIGFscmVhZHkgc2Vlbi4nZXh0ZW5kcycgY2xhdXNlIG11c3QgcHJlY2VkZSAnaW1wbGVtZW50cycgY2xhdXNlLkNsYXNzZXMgY2FuIG9ubHkgZXh0ZW5kIGEgc2luZ2xlIGNsYXNzYGltcGxlbWVudHNgIGNsYXVzZSBhbHJlYWR5IHNlZW5BbiBpbXBsZW1lbnRhdGlvbiBjYW5ub3QgYmUgZGVjbGFyZWQgaW4gYW1iaWVudCBjb250ZXh0c01vZGlmaWVycyBjYW5ub3QgYXBwZWFyIGhlcmVNZXJnZSBjb25mbGljdCBtYXJrZXIgZW5jb3VudGVyZWQuVHlwZSBhbm5vdGF0aW9uIGNhbm5vdCBhcHBlYXIgb24gYSBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbkNhdGNoIGNsYXVzZSB2YXJpYWJsZSBjYW5ub3QgaGF2ZSBhIHR5cGUgYW5ub3RhdGlvbmBhYnN0cmFjdGAgbW9kaWZpZXIgY2FuIG9ubHkgYXBwZWFyIG9uIGEgY2xhc3Mgb3IgbWV0aG9kIGRlY2xhcmF0aW9uJyBtb2RpZmllciBjYW5ub3QgYmUgdXNlZCB3aXRoICcAAAC5VSYAAQAAAMlpJgAgAAAAkWImAAsAAABBYnN0cmFjdCBtZXRob2RzIGNhbiBvbmx5IGFwcGVhciB3aXRoaW4gYW4gYWJzdHJhY3QgY2xhc3MuQWJzdHJhY3QgbWV0aG9kIGNhbm5vdCBoYXZlIGFuIGltcGxlbWVudGF0aW9uLkFic3RyYWN0IHByb3BlcnR5IGNhbm5vdCBoYXZlIGFuIGluaXRpYWxpemVyLicgbW9kaWZpZXIgY2Fubm90IGFwcGVhciBvbiBhIHR5cGUgcGFyYW1ldGVyAAAAuVUmAAEAAACZaiYALAAAACcgbW9kaWZpZXIgY2FuIG9ubHkgYXBwZWFyIG9uIGEgdHlwZSBwYXJhbWV0ZXIgb2YgYSBjbGFzcywgaW50ZXJmYWNlIG9yIHR5cGUgYWxpYXMAALlVJgABAAAA2GomAFIAAAAnIG1vZGlmaWVyIGNhbiBvbmx5IGFwcGVhciBvbiBhIHR5cGUgcGFyYW1ldGVyIG9mIGEgZnVuY3Rpb24sIG1ldGhvZCBvciBjbGFzcwAAALlVJgABAAAAPGsmAE0AAABUaGUgJ3R5cGUnIG1vZGlmaWVyIGNhbm5vdCBiZSB1c2VkIG9uIGEgbmFtZWQgaW1wb3J0IHdoZW4gJ2ltcG9ydCB0eXBlJyBpcyB1c2VkIG9uIGl0cyBpbXBvcnQgc3RhdGVtZW50LlRoZSAndHlwZScgbW9kaWZpZXIgY2Fubm90IGJlIHVzZWQgb24gYSBuYW1lZCBleHBvcnQgd2hlbiAnZXhwb3J0IHR5cGUnIGlzIHVzZWQgb24gaXRzIGV4cG9ydCBzdGF0ZW1lbnQuQSBwYXJhbWV0ZXIgcHJvcGVydHkgaXMgb25seSBhbGxvd2VkIGluIGEgY29uc3RydWN0b3IgaW1wbGVtZW50YXRpb25BIHBhcmFtZXRlciBpbml0aWFsaXplciBpcyBvbmx5IGFsbG93ZWQgaW4gYSBmdW5jdGlvbiBvciBjb25zdHJ1Y3RvciBpbXBsZW1lbnRhdGlvblRoZSBsZWZ0LWhhbmQgc2lkZSBvZiBhbiBhc3NpZ25tZW50IGV4cHJlc3Npb24gbXVzdCBiZSBhIHZhcmlhYmxlIG9yIGEgcHJvcGVydHkgYWNjZXNzLlRoZSAnd2l0aCcgc3RhdGVtZW50IGlzIG5vdCBzdXBwb3J0ZWQuIEFsbCBzeW1ib2xzIGluIGEgJ3dpdGgnIGJsb2NrIHdpbGwgaGF2ZSB0eXBlICdhbnknLkludmFsaWQgY2xhc3MgbmFtZWludGVyZmFjZSBuYW1lIGlzIGludmFsaWRBbiBlbnVtIG1lbWJlciBjYW5ub3QgaGF2ZSBhIG51bWVyaWMgbmFtZVRoZSBsZWZ0LWhhbmQgc2lkZSBvZiBhICdmb3IuLi5vZicgc3RhdGVtZW50IGNhbm5vdCB1c2UgYSB0eXBlIGFubm90YXRpb25UaGUgbGVmdC1oYW5kIHNpZGUgb2YgYSAnZm9yLi4uaW4nIHN0YXRlbWVudCBjYW5ub3QgYmUgYSBkZXN0cnVjdHVyaW5nIHBhdHRlcm5BbiBpbnRlcmZhY2UgY2FuIG9ubHkgZXh0ZW5kIGFuIGlkZW50aWZpZXIvcXVhbGlmaWVkLW5hbWUgd2l0aCBvcHRpb25hbCB0eXBlIGFyZ3VtZW50cy5UaGUgb3BlcmFuZCBvZiBhIGRlbGV0ZSBvcGVyYXRvciBtdXN0IGJlIGEgcHJvcGVydHkgcmVmZXJlbmNlLlRoaXMgbWVtYmVyIGNhbm5vdCBoYXZlIGFuICdvdmVycmlkZScgbW9kaWZpZXIgYmVjYXVzZSBpdHMgY29udGFpbmluZyBjbGFzcyBkb2VzIG5vdCBleHRlbmQgYW5vdGhlciBjbGFzcy5EZWNvcmF0b3JzIG1heSBub3QgYXBwZWFyIGFmdGVyIGBleHBvcnRgIG9yIGBleHBvcnQgZGVmYXVsdGAgaWYgdGhleSBhbHNvIGFwcGVhciBiZWZvcmUgYGV4cG9ydGAuQW4gYWNjZXNzaWJpbGl0eSBtb2RpZmllciBjYW5ub3QgYmUgdXNlZCB3aXRoIGEgcHJpdmF0ZSBpZGVudGlmaWVyLlR5cGUgYW5ub3RhdGlvbnMgbXVzdCBjb21lIGJlZm9yZSBkZWZhdWx0IGFzc2lnbm1lbnRzVHlwZXNjcmlwdCBub24tbnVsbCBhc3NlcnRpb24gb3BlcmF0b3IgaXMgbm90IGFsbG93ZWQgd2l0aCAnAHdwJgA8AAAAuVUmAAEAAABUaGlzIHN5bnRheCBpcyByZXNlcnZlZCBpbiBmaWxlcyB3aXRoIHRoZSAubXRzIG9yIC5jdHMgZXh0ZW5zaW9uLiBVc2UgYW4gYGFzYCBleHByZXNzaW9uIGluc3RlYWQuVGhpcyBzeW50YXggaXMgcmVzZXJ2ZWQgaW4gZmlsZXMgd2l0aCB0aGUgLm10cyBvciAuY3RzIGV4dGVuc2lvbi4gQWRkIGEgdHJhaWxpbmcgY29tbWEsIGFzIGluIGA8VCw+KCkgPT4gLi4uYC5UaGlzIGlzIHRoZSBleHByZXNzaW9uIHBhcnQgb2YgYW4gZXhwcmVzc2lvbiBzdGF0ZW1lbnRwcmV2aW91cyBkZWZhdWx0IGNhc2UgaXMgZGVjbGFyZWQgYXQgaGVyZUVvZkRlY2xOb3RBbGxvd2VkVXNpbmdEZWNsTm90QWxsb3dlZFVzaW5nRGVjbE5vdEFsbG93ZWRGb3JGb3JJbkxvb3BVc2luZ0RlY2xOb3RFbmFibGVkSW52YWxpZE5hbWVJblVzaW5nRGVjbEluaXRSZXF1aXJlZEZvclVzaW5nRGVjbFByaXZhdGVOYW1lSW5JbnRlcmZhY2VJbnZhbGlkU3VwZXJDYWxsSW52YWxpZFN1cGVySW52YWxpZFN1cGVyUHJpdmF0ZU5hbWVJbnZhbGlkTmV3VGFyZ2V0SW52YWxpZEltcG9ydEFycm93Tm90QWxsb3dlZEV4cG9ydE5vdEFsbG93ZWRHZXR0ZXJTZXR0ZXJDYW5ub3RCZVJlYWRvbmx5R2V0dGVyU2V0dGVyQ2Fubm90QmVPcHRpb25hbEdldHRlclBhcmFtU2V0dGVyUGFyYW1Ub3BMZXZlbEF3YWl0SW5TY3JpcHRMZWdhY3lEZWNpbWFsTGVnYWN5T2N0YWxJbnZhbGlkSWRlbnRDaGFyRXhwZWN0ZWREaWdpdHJhZGl4U2V0dGVyUGFyYW1SZXF1aXJlZFJlc3RQYXRJblNldHRlclVudGVybWluYXRlZEJsb2NrQ29tbWVudFVudGVybWluYXRlZFN0ckxpdEV4cGVjdGVkVW5pY29kZUVzY2FwZUVzY2FwZUluUmVzZXJ2ZWRXb3Jkd29yZFVudGVybWluYXRlZFJlZ0V4cFVudGVybWluYXRlZFRwbElkZW50QWZ0ZXJOdW1VbmV4cGVjdGVkQ2hhcmNJbnZhbGlkU3RyRXNjYXBlSW52YWxpZFVuaWNvZGVFc2NhcGVCYWRDaGFyYWN0ZXJFc2NhcGVTZXF1ZW5jZWV4cGVjdGVkTnVtTGl0VGVybWluYXRlZFdpdGhFeHBMZWdhY3lDb21tZW50SW5Nb2R1bGVJbnZhbGlkSWRlbnRJblN0cmljdEludmFsaWRJZGVudEluQXN5bmNFdmFsQW5kQXJndW1lbnRzSW5TdHJpY3RBcmd1bWVudHNJbkNsYXNzRmllbGRJbGxlZ2FsTGFuZ3VhZ2VNb2RlRGlyZWN0aXZlVW5hcnlJbkV4cGxlZnRfc3Bhbkhhc2hMaW5lQnJlYWtJblRocm93TGluZUJyZWFrQmVmb3JlQXJyb3dVbmV4cGVjdGVkZ290VW5leHBlY3RlZFRva2VuV2l0aFN1Z2dlc3Rpb25zY2FuZGlkYXRlX2xpc3RSZXNlcnZlZFdvcmRJbkltcG9ydEFzc2lnblByb3BlcnR5RXhwZWN0ZWRFeHBlY3RlZFNlbWlGb3JFeHByU3RtdEF3YWl0U3RhclJlc2VydmVkV29yZEluT2JqU2hvcnRoYW5kT3JQYXROdWxsaXNoQ29hbGVzY2luZ1dpdGhMb2dpY2FsT3BNdWx0aXBsZURlZmF1bHRwcmV2aW91c0NvbW1hQWZ0ZXJSZXN0RWxlbWVudE5vbkxhc3RSZXN0UGFyYW1TcHJlYWRJblBhcmVuRXhwckVtcHR5UGFyZW5FeHBySW52YWxpZFBhdEludmFsaWRFeHByTm90U2ltcGxlQXNzaWduSW52YWxpZEFzc2lnblRhcmdldEV4cGVjdGVkSWRlbnRFeHBlY3RlZFNlbWlEdXBsaWNhdGVMYWJlbEFzeW5jR2VuZXJhdG9yTm9uVG9wTGV2ZWxJbXBvcnRFeHBvcnRJbXBvcnRFeHBvcnRJblNjcmlwdEltcG9ydE1ldGFJblNjcmlwdFBhdFZhcldpdGhvdXRJbml0V2l0aEluU3RyaWN0UmV0dXJuTm90QWxsb3dlZFRvb01hbnlWYXJJbkZvckluSGVhZFZhckluaXRpYWxpemVySW5Gb3JJbkhlYWRMYWJlbGxlZEdlbmVyYXRvck9yQXN5bmNMYWJlbGxlZEZ1bmN0aW9uSW5TdHJpY3RZaWVsZFBhcmFtSW5HZW5Bd2FpdFBhcmFtSW5Bc3luY0F3YWl0Rm9yU3RtdEF3YWl0SW5GdW5jdGlvblVudGVybWluYXRlZEpTWENvbnRlbnRzRW1wdHlKU1hBdHRySW52YWxpZEpTWFZhbHVlSlNYRXhwZWN0ZWRDbG9zaW5nVGFnRm9yTHRHdEpTWEV4cGVjdGVkQ2xvc2luZ1RhZ0ludmFsaWRMZWFkaW5nRGVjb3JhdG9yRGVjb3JhdG9yT25FeHBvcnRUc1JlcXVpcmVkQWZ0ZXJPcHRpb25hbFRzSW52YWxpZFBhcmFtUHJvcFBhdFNwYWNlQmV0d2Vlbkhhc2hBbmRJZGVudEFzeW5jQ29uc3RydWN0b3JQcm9wZXJ0eU5hbWVkQ29uc3RydWN0b3JQcml2YXRlQ29uc3RydWN0b3JQcml2YXRlTmFtZU1vZGlmaWVyQ29uc3RydWN0b3JBY2Nlc3NvclJlYWRPbmx5TWV0aG9kR2VuZXJhdG9yQ29uc3RydWN0b3JEdXBsaWNhdGVDb25zdHJ1Y3RvclRzQmluZGluZ1BhdENhbm5vdEJlT3B0aW9uYWxTdXBlckNhbGxPcHRpb25hbE9wdENoYWluQ2Fubm90Rm9sbG93Q29uc3RydWN0b3JDYWxsVGFnZ2VkVHBsSW5PcHRDaGFpblRyYWlsaW5nQ29tbWFJbnNpZGVJbXBvcnRFeHBvcnREZWZhdWx0V2l0aE91dEZyb21FeHBvcnRFeHBlY3RGcm9tRG90c1dpdGhvdXRJZGVudGlmaWVyTnVtZXJpY1NlcGFyYXRvcklzQWxsb3dlZE9ubHlCZXR3ZWVuVHdvRGlnaXRzSW1wb3J0QmluZGluZ0lzU3RyaW5nRXhwb3J0QmluZGluZ0lzU3RyaW5nQ29uc3REZWNsYXJhdGlvbnNSZXF1aXJlSW5pdGlhbGl6YXRpb25EdXBsaWNhdGVkUmVnRXhwRmxhZ3NVbmtub3duUmVnRXhwRmxhZ3NUUzEwMDNUUzEwMDVUUzEwMDlUUzEwMTRUUzEwMTVUUzEwMjlUUzEwMzBUUzEwMzFUUzEwMzhUUzEwNDJUUzEwNDdUUzEwNDhUUzEwNTZUUzEwODVUUzEwODlUUzEwOTJUUzEwOTZUUzEwOThUUzExMDBUUzExMDJUUzExMDVUUzExMDZUUzExMDdUUzExMDlUUzExMTBUUzExMTRUUzExMTVUUzExMTZUUzExMjNUUzExNDFUUzExNjJUUzExNjRUUzExNzFUUzExNzJUUzExNzNUUzExNzRUUzExNzVUUzExODNUUzExODRUUzExODVUUzEwOTNUUzExOTZUUzEyNDJUUzEyNDNUUzEyNDRUUzEyNDVUUzEyNjdUUzEyNzNUUzEyNzRUUzEyNzdUUzIyMDZUUzIyMDdUUzIzNjlUUzIzNzFUUzI0MDZUUzI0MTBUUzI0MTRUUzI0MjdUUzI0NTJUUzI0ODNUUzI0OTFUUzI0OTlUUzI3MDNUUzQxMTJUUzgwMzhUUzE4MDEwVFNUeXBlQW5ub3RhdGlvbkFmdGVyQXNzaWduVHNOb25OdWxsQXNzZXJ0aW9uTm90QWxsb3dlZFdpdGhMYWJlbGlubmVybm90ZVJlc2VydmVkVHlwZUFzc2VydGlvblJlc2VydmVkQXJyb3dUeXBlUGFyYW0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjAQAAI0EAACMBAAAjAQAAI0EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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ZWNtYV90cmFuc2Zvcm1zX2Jhc2UtMjUuMC4wL3NyYy9oZWxwZXJzL21vZC5ycwAIkyYAdwAAAPsAAAABAAAAX2FwcGx5X2RlY29yYXRlZF9kZXNjcmlwdG9yQHN3Yy9oZWxwZXJzL18vX2FwcGx5X2RlY29yYXRlZF9kZXNjcmlwdG9yX2FycmF5X2xpa2VfdG9fYXJyYXlAc3djL2hlbHBlcnMvXy9fYXJyYXlfbGlrZV90b19hcnJheV9hcnJheV93aXRoX2hvbGVzQHN3Yy9oZWxwZXJzL18vX2FycmF5X3dpdGhfaG9sZXNfYXJyYXlfd2l0aG91dF9ob2xlc0Bzd2MvaGVscGVycy9fL19hcnJheV93aXRob3V0X2hvbGVzX2Fzc2VydF90aGlzX2luaXRpYWxpemVkQHN3Yy9oZWxwZXJzL18vX2Fzc2VydF90aGlzX2luaXRpYWxpemVkX2FzeW5jX2dlbmVyYXRvckBzd2MvaGVscGVycy9fL19hc3luY19nZW5lcmF0b3JfYXN5bmNfZ2VuZXJhdG9yX2RlbGVnYXRlQHN3Yy9oZWxwZXJzL18vX2FzeW5jX2dlbmVyYXRvcl9kZWxlZ2F0ZV9hc3luY19pdGVyYXRvckBzd2MvaGVscGVycy9fL19hc3luY19pdGVyYXRvcl9hc3luY190b19nZW5lcmF0b3JAc3djL2hlbHBlcnMvXy9fYXN5bmNfdG9fZ2VuZXJhdG9yX2F3YWl0X2FzeW5jX2dlbmVyYXRvckBzd2MvaGVscGVycy9fL19hd2FpdF9hc3luY19nZW5lcmF0b3JfYXdhaXRfdmFsdWVAc3djL2hlbHBlcnMvXy9fYXdhaXRfdmFsdWVfY2FsbF9zdXBlckBzd2MvaGVscGVycy9fL19jYWxsX3N1cGVyX2NoZWNrX3ByaXZhdGVfcmVkZWNsYXJhdGlvbkBzd2MvaGVscGVycy9fL19jaGVja19wcml2YXRlX3JlZGVjbGFyYXRpb25fY2xhc3NfYXBwbHlfZGVzY3JpcHRvcl9kZXN0cnVjdHVyZUBzd2MvaGVscGVycy9fL19jbGFzc19hcHBseV9kZXNjcmlwdG9yX2Rlc3RydWN0dXJlX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfZ2V0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfZ2V0X2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3Jfc2V0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3Jfc2V0X2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfdXBkYXRlQHN3Yy9oZWxwZXJzL18vX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfdXBkYXRlX2NsYXNzX2NhbGxfY2hlY2tAc3djL2hlbHBlcnMvXy9fY2xhc3NfY2FsbF9jaGVja19jbGFzc19jaGVja19wcml2YXRlX3N0YXRpY19maWVsZF9kZXNjcmlwdG9yQHN3Yy9oZWxwZXJzL18vX2NsYXNzX2NoZWNrX3ByaXZhdGVfc3RhdGljX2ZpZWxkX2Rlc2NyaXB0b3JfY2xhc3NfZXh0cmFjdF9maWVsZF9kZXNjcmlwdG9yQHN3Yy9oZWxwZXJzL18vX2NsYXNzX2V4dHJhY3RfZmllbGRfZGVzY3JpcHRvcl9jbGFzc19uYW1lX3Rkel9lcnJvckBzd2MvaGVscGVycy9fL19jbGFzc19uYW1lX3Rkel9lcnJvcl9jbGFzc19wcml2YXRlX2ZpZWxkX2dldEBzd2MvaGVscGVycy9fL19jbGFzc19wcml2YXRlX2ZpZWxkX2dldF9jbGFzc19wcml2YXRlX2ZpZWxkX2luaXRAc3djL2hlbHBlcnMvXy9fY2xhc3NfcHJpdmF0ZV9maWVsZF9pbml0X2NsYXNzX3ByaXZhdGVfZmllbGRfbG9vc2VfYmFzZUBzd2MvaGVscGVycy9fL19jbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2Jhc2VfY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9rZXlAc3djL2hlbHBlcnMvXy9fY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9rZXlfY2xhc3NfcHJpdmF0ZV9maWVsZF9zZXRAc3djL2hlbHBlcnMvXy9fY2xhc3NfcHJpdmF0ZV9maWVsZF9zZXRfY2xhc3NfcHJpdmF0ZV9maWVsZF91cGRhdGVAc3djL2hlbHBlcnMvXy9fY2xhc3NfcHJpdmF0ZV9maWVsZF91cGRhdGVfY2xhc3NfcHJpdmF0ZV9tZXRob2RfZ2V0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX3ByaXZhdGVfbWV0aG9kX2dldF9jbGFzc19wcml2YXRlX21ldGhvZF9pbml0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX3ByaXZhdGVfbWV0aG9kX2luaXRfY2xhc3NfcHJpdmF0ZV9tZXRob2Rfc2V0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX3ByaXZhdGVfbWV0aG9kX3NldF9jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9zcGVjX2dldEBzd2MvaGVscGVycy9fL19jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9zcGVjX2dldF9jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9zcGVjX3NldEBzd2MvaGVscGVycy9fL19jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9zcGVjX3NldF9jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF91cGRhdGVAc3djL2hlbHBlcnMvXy9fY2xhc3Nfc3RhdGljX3ByaXZhdGVfZmllbGRfdXBkYXRlX2NvbnN0cnVjdEBzd2MvaGVscGVycy9fL19jb25zdHJ1Y3RfY3JlYXRlX2NsYXNzQHN3Yy9oZWxwZXJzL18vX2NyZWF0ZV9jbGFzc19kZWNvcmF0ZUBzd2MvaGVscGVycy9fL19kZWNvcmF0ZV9kZWZhdWx0c0Bzd2MvaGVscGVycy9fL19kZWZhdWx0c19kZWZpbmVfZW51bWVyYWJsZV9wcm9wZXJ0aWVzQHN3Yy9oZWxwZXJzL18vX2RlZmluZV9lbnVtZXJhYmxlX3Byb3BlcnRpZXNfZGVmaW5lX3Byb3BlcnR5QHN3Yy9oZWxwZXJzL18vX2RlZmluZV9wcm9wZXJ0eV9leHBvcnRfc3RhckBzd2MvaGVscGVycy9fL19leHBvcnRfc3Rhcl9leHRlbmRzQHN3Yy9oZWxwZXJzL18vX2V4dGVuZHNfZ2V0QHN3Yy9oZWxwZXJzL18vX2dldF9nZXRfcHJvdG90eXBlX29mQHN3Yy9oZWxwZXJzL18vX2dldF9wcm90b3R5cGVfb2ZfaW5oZXJpdHNAc3djL2hlbHBlcnMvXy9faW5oZXJpdHNfaW5oZXJpdHNfbG9vc2VAc3djL2hlbHBlcnMvXy9faW5oZXJpdHNfbG9vc2VfaW5pdGlhbGl6ZXJfZGVmaW5lX3Byb3BlcnR5QHN3Yy9oZWxwZXJzL18vX2luaXRpYWxpemVyX2RlZmluZV9wcm9wZXJ0eV9pbml0aWFsaXplcl93YXJuaW5nX2hlbHBlckBzd2MvaGVscGVycy9fL19pbml0aWFsaXplcl93YXJuaW5nX2hlbHBlcl9pbnN0YW5jZW9mQHN3Yy9oZWxwZXJzL18vX2luc3RhbmNlb2ZfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRfaW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkQHN3Yy9oZWxwZXJzL18vX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZF9pc19uYXRpdmVfZnVuY3Rpb25Ac3djL2hlbHBlcnMvXy9faXNfbmF0aXZlX2Z1bmN0aW9uX2l0ZXJhYmxlX3RvX2FycmF5QHN3Yy9oZWxwZXJzL18vX2l0ZXJhYmxlX3RvX2FycmF5X2l0ZXJhYmxlX3RvX2FycmF5X2xpbWl0QHN3Yy9oZWxwZXJzL18vX2l0ZXJhYmxlX3RvX2FycmF5X2xpbWl0X2l0ZXJhYmxlX3RvX2FycmF5X2xpbWl0X2xvb3NlQHN3Yy9oZWxwZXJzL18vX2l0ZXJhYmxlX3RvX2FycmF5X2xpbWl0X2xvb3NlX2pzeEBzd2MvaGVscGVycy9fL19qc3hfbmV3X2Fycm93X2NoZWNrQHN3Yy9oZWxwZXJzL18vX25ld19hcnJvd19jaGVja19ub25faXRlcmFibGVfcmVzdEBzd2MvaGVscGVycy9fL19ub25faXRlcmFibGVfcmVzdF9ub25faXRlcmFibGVfc3ByZWFkQHN3Yy9oZWxwZXJzL18vX25vbl9pdGVyYWJsZV9zcHJlYWRfb2JqZWN0X2Rlc3RydWN0dXJpbmdfZW1wdHlAc3djL2hlbHBlcnMvXy9fb2JqZWN0X2Rlc3RydWN0dXJpbmdfZW1wdHlfb2JqZWN0X3NwcmVhZEBzd2MvaGVscGVycy9fL19vYmplY3Rfc3ByZWFkX29iamVjdF9zcHJlYWRfcHJvcHNAc3djL2hlbHBlcnMvXy9fb2JqZWN0X3NwcmVhZF9wcm9wc19vYmplY3Rfd2l0aG91dF9wcm9wZXJ0aWVzQHN3Yy9oZWxwZXJzL18vX29iamVjdF93aXRob3V0X3Byb3BlcnRpZXNfb2JqZWN0X3dpdGhvdXRfcHJvcGVydGllc19sb29zZUBzd2MvaGVscGVycy9fL19vYmplY3Rfd2l0aG91dF9wcm9wZXJ0aWVzX2xvb3NlX292ZXJsb2FkX3lpZWxkQHN3Yy9oZWxwZXJzL18vX292ZXJsb2FkX3lpZWxkX3Bvc3NpYmxlX2NvbnN0cnVjdG9yX3JldHVybkBzd2MvaGVscGVycy9fL19wb3NzaWJsZV9jb25zdHJ1Y3Rvcl9yZXR1cm5fcmVhZF9vbmx5X2Vycm9yQHN3Yy9oZWxwZXJzL18vX3JlYWRfb25seV9lcnJvcl9zZXRAc3djL2hlbHBlcnMvXy9fc2V0X3NldF9wcm90b3R5cGVfb2ZAc3djL2hlbHBlcnMvXy9fc2V0X3Byb3RvdHlwZV9vZl9za2lwX2ZpcnN0X2dlbmVyYXRvcl9uZXh0QHN3Yy9oZWxwZXJzL18vX3NraXBfZmlyc3RfZ2VuZXJhdG9yX25leHRfc2xpY2VkX3RvX2FycmF5QHN3Yy9oZWxwZXJzL18vX3NsaWNlZF90b19hcnJheV9zbGljZWRfdG9fYXJyYXlfbG9vc2VAc3djL2hlbHBlcnMvXy9fc2xpY2VkX3RvX2FycmF5X2xvb3NlX3N1cGVyX3Byb3BfYmFzZUBzd2MvaGVscGVycy9fL19zdXBlcl9wcm9wX2Jhc2VfdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWxAc3djL2hlbHBlcnMvXy9fdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWxfdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWxfbG9vc2VAc3djL2hlbHBlcnMvXy9fdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWxfbG9vc2VfdGhyb3dAc3djL2hlbHBlcnMvXy9fdGhyb3dfdG9fYXJyYXlAc3djL2hlbHBlcnMvXy9fdG9fYXJyYXlfdG9fY29uc3VtYWJsZV9hcnJheUBzd2MvaGVscGVycy9fL190b19jb25zdW1hYmxlX2FycmF5X3RvX3ByaW1pdGl2ZUBzd2MvaGVscGVycy9fL190b19wcmltaXRpdmVfdG9fcHJvcGVydHlfa2V5QHN3Yy9oZWxwZXJzL18vX3RvX3Byb3BlcnR5X2tleV91cGRhdGVAc3djL2hlbHBlcnMvXy9fdXBkYXRlX3R5cGVfb2ZAc3djL2hlbHBlcnMvXy9fdHlwZV9vZl91bnN1cHBvcnRlZF9pdGVyYWJsZV90b19hcnJheUBzd2MvaGVscGVycy9fL191bnN1cHBvcnRlZF9pdGVyYWJsZV90b19hcnJheV93cmFwX2FzeW5jX2dlbmVyYXRvckBzd2MvaGVscGVycy9fL193cmFwX2FzeW5jX2dlbmVyYXRvcl93cmFwX25hdGl2ZV9zdXBlckBzd2MvaGVscGVycy9fL193cmFwX25hdGl2ZV9zdXBlcl93cml0ZV9vbmx5X2Vycm9yQHN3Yy9oZWxwZXJzL18vX3dyaXRlX29ubHlfZXJyb3JfY2xhc3NfcHJpdmF0ZV9maWVsZF9kZXN0cnVjdHVyZUBzd2MvaGVscGVycy9fL19jbGFzc19wcml2YXRlX2ZpZWxkX2Rlc3RydWN0dXJlX2NsYXNzX3N0YXRpY19wcml2YXRlX2ZpZWxkX2Rlc3RydWN0dXJlQHN3Yy9oZWxwZXJzL18vX2NsYXNzX3N0YXRpY19wcml2YXRlX2ZpZWxkX2Rlc3RydWN0dXJlX2NsYXNzX3N0YXRpY19wcml2YXRlX21ldGhvZF9nZXRAc3djL2hlbHBlcnMvXy9fY2xhc3Nfc3RhdGljX3ByaXZhdGVfbWV0aG9kX2dldF9jbGFzc19jaGVja19wcml2YXRlX3N0YXRpY19hY2Nlc3NAc3djL2hlbHBlcnMvXy9fY2xhc3NfY2hlY2tfcHJpdmF0ZV9zdGF0aWNfYWNjZXNzX2lzX25hdGl2ZV9yZWZsZWN0X2NvbnN0cnVjdEBzd2MvaGVscGVycy9fL19pc19uYXRpdmVfcmVmbGVjdF9jb25zdHJ1Y3RfY3JlYXRlX3N1cGVyQHN3Yy9oZWxwZXJzL18vX2NyZWF0ZV9zdXBlcl9jcmVhdGVfZm9yX29mX2l0ZXJhdG9yX2hlbHBlcl9sb29zZUBzd2MvaGVscGVycy9fL19jcmVhdGVfZm9yX29mX2l0ZXJhdG9yX2hlbHBlcl9sb29zZV90c19kZWNvcmF0ZUBzd2MvaGVscGVycy9fL190c19kZWNvcmF0ZV90c19nZW5lcmF0b3JAc3djL2hlbHBlcnMvXy9fdHNfZ2VuZXJhdG9yX3RzX21ldGFkYXRhQHN3Yy9oZWxwZXJzL18vX3RzX21ldGFkYXRhX3RzX3BhcmFtQHN3Yy9oZWxwZXJzL18vX3RzX3BhcmFtX3RzX3ZhbHVlc0Bzd2MvaGVscGVycy9fL190c192YWx1ZXNfdHNfYWRkX2Rpc3Bvc2FibGVfcmVzb3VyY2VAc3djL2hlbHBlcnMvXy9fdHNfYWRkX2Rpc3Bvc2FibGVfcmVzb3VyY2VfdHNfZGlzcG9zZV9yZXNvdXJjZXNAc3djL2hlbHBlcnMvXy9fdHNfZGlzcG9zZV9yZXNvdXJjZXNfYXBwbHlfZGVjc18yMjAzX3JAc3djL2hlbHBlcnMvXy9fYXBwbHlfZGVjc18yMjAzX3JfaWRlbnRpdHlAc3djL2hlbHBlcnMvXy9faWRlbnRpdHlfZGlzcG9zZUBzd2MvaGVscGVycy9fL19kaXNwb3NlX3VzaW5nQHN3Yy9oZWxwZXJzL18vX3VzaW5nX3VzaW5nX2N0eEBzd2MvaGVscGVycy9fL191c2luZ19jdHhhcHBseV9kZWNvcmF0ZWRfZGVzY3JpcHRvcmFycmF5X2xpa2VfdG9fYXJyYXlhcnJheV93aXRoX2hvbGVzYXJyYXlfd2l0aG91dF9ob2xlc2Fzc2VydF90aGlzX2luaXRpYWxpemVkYXN5bmNfZ2VuZXJhdG9yYXN5bmNfZ2VuZXJhdG9yX2RlbGVnYXRlYXN5bmNfaXRlcmF0b3Jhc3luY190b19nZW5lcmF0b3Jhd2FpdF9hc3luY19nZW5lcmF0b3Jhd2FpdF92YWx1ZWNhbGxfc3VwZXJjaGVja19wcml2YXRlX3JlZGVjbGFyYXRpb25jbGFzc19hcHBseV9kZXNjcmlwdG9yX2Rlc3RydWN0dXJlY2xhc3NfYXBwbHlfZGVzY3JpcHRvcl9nZXRjbGFzc19hcHBseV9kZXNjcmlwdG9yX3NldGNsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfdXBkYXRlY2xhc3NfY2FsbF9jaGVja2NsYXNzX2NoZWNrX3ByaXZhdGVfc3RhdGljX2ZpZWxkX2Rlc2NyaXB0b3JjbGFzc19leHRyYWN0X2ZpZWxkX2Rlc2NyaXB0b3JjbGFzc19uYW1lX3Rkel9lcnJvcmNsYXNzX3ByaXZhdGVfZmllbGRfZ2V0Y2xhc3NfcHJpdmF0ZV9maWVsZF9pbml0Y2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9iYXNlY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9rZXljbGFzc19wcml2YXRlX2ZpZWxkX3NldGNsYXNzX3ByaXZhdGVfZmllbGRfdXBkYXRlY2xhc3NfcHJpdmF0ZV9tZXRob2RfZ2V0Y2xhc3NfcHJpdmF0ZV9tZXRob2RfaW5pdGNsYXNzX3ByaXZhdGVfbWV0aG9kX3NldGNsYXNzX3N0YXRpY19wcml2YXRlX2ZpZWxkX3NwZWNfZ2V0Y2xhc3Nfc3RhdGljX3ByaXZhdGVfZmllbGRfc3BlY19zZXRjbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF91cGRhdGVjb25zdHJ1Y3RjcmVhdGVfY2xhc3NkZWNvcmF0ZWRlZmF1bHRzZGVmaW5lX2VudW1lcmFibGVfcHJvcGVydGllc2RlZmluZV9wcm9wZXJ0eWV4cG9ydF9zdGFyZ2V0X3Byb3RvdHlwZV9vZmluaGVyaXRzaW5oZXJpdHNfbG9vc2Vpbml0aWFsaXplcl9kZWZpbmVfcHJvcGVydHlpbml0aWFsaXplcl93YXJuaW5nX2hlbHBlcmludGVyb3BfcmVxdWlyZV9kZWZhdWx0aW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkaXNfbmF0aXZlX2Z1bmN0aW9uaXRlcmFibGVfdG9fYXJyYXlpdGVyYWJsZV90b19hcnJheV9saW1pdGl0ZXJhYmxlX3RvX2FycmF5X2xpbWl0X2xvb3NlanN4bmV3X2Fycm93X2NoZWNrbm9uX2l0ZXJhYmxlX3Jlc3Rub25faXRlcmFibGVfc3ByZWFkb2JqZWN0X2Rlc3RydWN0dXJpbmdfZW1wdHlvYmplY3Rfc3ByZWFkb2JqZWN0X3NwcmVhZF9wcm9wc29iamVjdF93aXRob3V0X3Byb3BlcnRpZXNvYmplY3Rfd2l0aG91dF9wcm9wZXJ0aWVzX2xvb3Nlb3ZlcmxvYWRfeWllbGRwb3NzaWJsZV9jb25zdHJ1Y3Rvcl9yZXR1cm5yZWFkX29ubHlfZXJyb3JzZXRfcHJvdG90eXBlX29mc2tpcF9maXJzdF9nZW5lcmF0b3JfbmV4dHNsaWNlZF90b19hcnJheXNsaWNlZF90b19hcnJheV9sb29zZXN1cGVyX3Byb3BfYmFzZXRhZ2dlZF90ZW1wbGF0ZV9saXRlcmFsdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWxfbG9vc2V0b19hcnJheXRvX2NvbnN1bWFibGVfYXJyYXl0b19wcmltaXRpdmV0b19wcm9wZXJ0eV9rZXl0eXBlX29mdW5zdXBwb3J0ZWRfaXRlcmFibGVfdG9fYXJyYXl3cmFwX2FzeW5jX2dlbmVyYXRvcndyYXBfbmF0aXZlX3N1cGVyd3JpdGVfb25seV9lcnJvcmNsYXNzX3ByaXZhdGVfZmllbGRfZGVzdHJ1Y3R1cmVjbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9kZXN0cnVjdHVyZWNsYXNzX3N0YXRpY19wcml2YXRlX21ldGhvZF9nZXRjbGFzc19jaGVja19wcml2YXRlX3N0YXRpY19hY2Nlc3Npc19uYXRpdmVfcmVmbGVjdF9jb25zdHJ1Y3RjcmVhdGVfc3VwZXJjcmVhdGVfZm9yX29mX2l0ZXJhdG9yX2hlbHBlcl9sb29zZXRzX2RlY29yYXRldHNfZ2VuZXJhdG9ydHNfbWV0YWRhdGF0c19wYXJhbXRzX3ZhbHVlc3RzX2FkZF9kaXNwb3NhYmxlX3Jlc291cmNldHNfZGlzcG9zZV9yZXNvdXJjZXNhcHBseV9kZWNzXzIyMDNfcmlkZW50aXR5ZGlzcG9zZXVzaW5nX2N0eEBzd2MvaGVscGVycy9fL1/csSYAEAAAANIEAABNYXJrZXIgcHJvdmlkZWQgdG8gcmVzb2x2ZXIgc2hvdWxkIG5vdCBiZSB0aGUgcm9vdCBtYXJrAPixJgA3AAAArLomAHgAAACHAAAABQAAAFN1cGVyRm5FeHByQmluRXhwck5ld0V4cHJjYWxsZWVhcmdzT3B0Q2FsbFNlcUV4cHJBcnJheUxpdENhbGxFeHByQ29uZEV4cHJUaGlzRXhwcgAAANMEAAAMAAAABAAAANQEAADVBAAABAAAAAQAAADWBAAAAAAAAAEAAAABAAAAZAEAANcEAAAEAAAABAAAABACAAD4BicABAAAAKjIJgAEAAAAlMcmAAYAAACaxyYABAAAAPzBJgAIAAAA8MEmAAwAAAALwSYACwAAAATCJgALAAAAQXJyb3dFeHByQXdhaXRFeHByQ2xhc3NFeHByUGFyZW5FeHBydGFndHBsVW5hcnlFeHByWWllbGRFeHByZGVsZWdhdGVBc3NpZ25FeHByTWVtYmVyRXhwclRwbEVsZW1lbnR0YWlsY29va2VkVXBkYXRlRXhwcnByZWZpeFNpbXBsZUV4cHJPclNwcmVhZHNwcmVhZE1ldGFQcm9wRXhwck9wdENoYWluRXhwcmJhc2VTcHJlYWRQcm9wU3VwZXJQcm9wRXhwcmNhbGxlZCBleHBlY3Qgb24g47MmABEAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9hc3QtMTUuMC4wL3NyYy9wYXQucnMA/LMmAGMAAAANAAAAFAAAANgEAAAEAAAABAAAAGABAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV90cmFuc2Zvcm1zX2Jhc2UtMjUuMC4wL3NyYy9maXhlci5ycwAAAIC0JgBxAAAAxAAAAEAAAACAtCYAcQAAAGsDAAAjAAAAgLQmAHEAAAB7AwAAMQAAAIC0JgBxAAAAhwMAACkAAAADGicASgAAAKgBAAAfAAAAv9EmAGUAAABcBgAAFAAAANkEAAAEAAAABAAAAGABAABUc0FzRXhwctoEAAAMAAAABAAAAAECAABUc0ZuVHlwZWxpdHR5cGVfbmFtZWVsZW1fdHlwZXR5cGVfcGFyYW1Uc0VudGl0eU5hbWVUc0V4dGVybmFsTW9kdWxlUmVmAADbBAAADAAAAAQAAADiAQAAAAAAAAEAAAABAAAA3AQAAAAAAAABAAAAAQAAAGQBAAAAAAAABAAAAAQAAADdBAAA+AYnAAQAAADNxSYACgAAANfFJgANAAAA+sUmAAsAAABUGCcACAAAAN67JgAFAAAAZWxlbV90eXBlcwAA3gQAABgAAAAIAAAAXgEAAN8EAAAEAAAABAAAAOAEAAAAAAAABAAAAAQAAADhBAAAaXNfaW5pc19vdXRjb25zdHJhaW50AAAA+AYnAAQAAABMyiYABAAAAHC2JgAFAAAAdbYmAAYAAAC+wyYACAAAAHu2JgAKAAAAfgYnAAcAAABUc1R5cGVQYXJhbWV4cHJfbmFtZVRzVW5pb25UeXBldHlwZXNUc0VudW1NZW1iZXJxdWFsaWZpZXJhdHRyaWJ1dGVzAAAAAAABAAAAAQAAAOIEAADjBAAAMAAAAAgAAADkBAAAbmFtZV90eXBlAAAA+AYnAAQAAABUGCcACAAAAJm1JgAKAAAAJLcmAAkAAACsyCYACAAAAMjIJgAIAAAAVHNUcGxMaXRUeXBlUHJvdGVjdGVkVHJ1ZVBsdXNNaW51c1RzTm9uTnVsbEV4cHJUc0NhbGxTaWduYXR1cmVEZWNsVHNDb25zdHJ1Y3RTaWduYXR1cmVEZWNsVHNQcm9wZXJ0eVNpZ25hdHVyZVRzR2V0dGVyU2lnbmF0dXJlVHNTZXR0ZXJTaWduYXR1cmVUc01ldGhvZFNpZ25hdHVyZVRzVHVwbGVFbGVtZW50dHlvcFRzSW50ZXJmYWNlQm9keVRzU2F0aXNmaWVzRXhwcnBhcmFtX25hbWUAAOUEAAAEAAAABAAAAAICAABjaGVja190eXBlZXh0ZW5kc190eXBldHJ1ZV90eXBlZmFsc2VfdHlwZVRzQ29uc3RydWN0b3JUeXBlY29tcHV0ZWRUc0FueUtleXdvcmRUc1Vua25vd25LZXl3b3JkVHNOdW1iZXJLZXl3b3JkVHNPYmplY3RLZXl3b3JkVHNCb29sZWFuS2V5d29yZFRzQmlnSW50S2V5d29yZFRzU3RyaW5nS2V5d29yZFRzU3ltYm9sS2V5d29yZFRzVm9pZEtleXdvcmRUc1VuZGVmaW5lZEtleXdvcmRUc051bGxLZXl3b3JkVHNOZXZlcktleXdvcmRUc0ludHJpbnNpY0tleXdvcmQAAAAAAAAABAAAAAQAAAADAgAA+AYnAAQAAAAdySYAAwAAAIa4JgAIAAAArMgmAAgAAACUxyYABgAAAMjIJgAIAAAAC8EmAAsAAABUc0V4cHJXaXRoVHlwZUFyZ3NUc0ludGVyc2VjdGlvblR5cGVUc0ltcG9ydENhbGxPcHRpb25zb2JqX3R5cGVpbmRleF90eXBlAAAA+AYnAAQAAABUGCcACAAAAB3JJgADAAAAhrgmAAgAAACsyCYACAAAAMjIJgAIAAAAVHNOYW1lc3BhY2VFeHBvcnREZWNsRm5EZWNsaWRlbnRDbGFzc0RlY2xBc3NpZ25Qcm9wR2V0dGVyUHJvcE1ldGhvZFByb3BTZXR0ZXJQcm9wdGhpc19wYXJhbUtleVZhbHVlUHJvcFZhckRlY2xhcmF0b3JDb21wdXRlZFByb3BOYW1lVMkmAGMAAAA7AAAAIwAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX3RyYW5zZm9ybXNfYmFzZS0yNS4wLjAvc3JjL3Jlc29sdmVyL21vZC5yc6y6JgB4AAAAxgYAADYAAABJZlN0bXR0ZXN0Y29uc2FsdFBhdEZvclN0bXRpbml0dXBkYXRlRXhwclN0bXRXaXRoU3RtdEJyZWFrU3RtdGxhYmVsRW1wdHlTdG10Rm9ySW5TdG10Rm9yT2ZTdG10VGhyb3dTdG10V2hpbGVTdG10UmV0dXJuU3RtdFN3aXRjaENhc2VTd2l0Y2hTdG10ZGlzY3JpbWluYW50Y2FzZXNDYXRjaENsYXVzZXBhcmFtRG9XaGlsZVN0bXRMYWJlbGVkU3RtdE1vZHVsZURlY2xTdG10Q29udGludWVTdG10RGVidWdnZXJTdG10L2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfdHJhbnNmb3Jtc19iYXNlLTI1LjAuMC9zcmMvcmVuYW1lL2FuYWx5emVyL3JldmVyc2VfbWFwLnJzAAAfvCYAhwAAAA4AAAAsAAAAUGFyYW1wYXRUc1BhcmFtUHJvcC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX3RyYW5zZm9ybXNfYmFzZS0yNS4wLjAvc3JjL3JlbmFtZS9hbmFseXplci9tb2QucnMAAMu8JgB/AAAAKQAAABsAAADLvCYAfwAAADQAAAA3AAAAy7wmAH8AAACEAAAAHQAAAOYEAAAEAAAABAAAABYCAAAAAAAAAQAAAAEAAABkAQAARXhwb3J0QWxsc3JjdHlwZV9vbmx5RXhwb3J0RGVjbGRlY2wA5wQAAAwAAAAEAAAA6AQAAOkEAAAEAAAABAAAAOoEAAAAAAAABAAAAAQAAACdAQAAc3BlY2lmaWVyc3BoYXNlAPgGJwAEAAAA8L0mAAoAAAClvSYAAwAAAKi9JgAJAAAAXwYnAAQAAAD6vSYABQAAAEltcG9ydERlY2xJbXBvcnRFeHBvcnROYW1lZEV4cG9ydERlZmF1bHREZWNsRXhwb3J0RGVmYXVsdEV4cHJUc0ltcG9ydEVxdWFsc1RzRXhwb3J0QXNzaWdubWVudFRzTmFtZXNwYWNlRXhwb3J0RXZhbHVhdGlvblNvdXJjZURlZmVyTmFtZWRFeHBvcnROYW1lc3BhY2VEZWZhdWx0TmFtZWRFeHBvcnROYW1lZFNwZWNpZmllcm9yaWdleHBvcnRlZEltcG9ydE5hbWVkU3BlY2lmaWVybG9jYWxpbXBvcnRlZEltcG9ydFN0YXJBc1NwZWNpZmllckV4cG9ydERlZmF1bHRTcGVjaWZpZXJJbXBvcnREZWZhdWx0U3BlY2lmaWVyRXhwb3J0TmFtZXNwYWNlU3BlY2lmaWVyVHBsZXhwcnNxdWFzaXNUaGlzVW5hcnlVcGRhdGVCaW5NZW1iZXJTdXBlclByb3BDb25kQ2FsbE5ld1NlcVRhZ2dlZFRwbEFycm93WWllbGRNZXRhUHJvcEF3YWl0UGFyZW5KU1hNZW1iZXJKU1hFbXB0eVRzVHlwZUFzc2VydGlvblRzQ29uc3RBc3NlcnRpb25Uc05vbk51bGxUc0FzVHNJbnN0YW50aWF0aW9uVHNTYXRpc2ZpZXNPcHRDaGFpblNob3J0aGFuZEJsb2NrRGVidWdnZXJXaXRoUmV0dXJuTGFiZWxlZEJyZWFrQ29udGludWVJZlN3aXRjaFRocm93VHJ5V2hpbGVEb1doaWxlRm9yRm9ySW5Gb3JPZkRlY2wA2wQAAAwAAAAEAAAA4gEAAOsEAAAMAAAABAAAAOwEAADtBAAABAAAAAQAAACiAQAAAAAAAAEAAAABAAAAZAEAANcEAAAEAAAABAAAABACAADuBAAABAAAAAQAAACVAQAAAAAAAAQAAAAEAAAA7wQAAHN1cGVyX2NsYXNzdHlwZV9wYXJhbXNzdXBlcl90eXBlX3BhcmFtcwD4BicABAAAAKjIJgAEAAAAzcUmAAoAAACaxyYABAAAAADBJgALAAAA5MUmAAsAAAALwSYACwAAABbBJgARAAAAOO4mAAoAAABWYXJEZWNsZGVjbHNUcnlTdG10YmxvY2toYW5kbGVyZmluYWxpemVyVXNpbmdEZWNsaXNfYXdhaXRPYmplY3RMaXRCbG9ja1N0bXRzdG10c/AEAAAMAAAABAAAAPEEAADyBAAAGAAAAAQAAADzBAAAAAAAAAQAAAAEAAAAXwEAAGlzX2dlbmVyYXRvcmlzX2FzeW5jcmV0dXJuX3R5cGUAlMcmAAYAAADNxSYACgAAAPgGJwAEAAAAqMgmAAQAAACaxyYABAAAAPDBJgAMAAAA/MEmAAgAAAALwSYACwAAAATCJgALAAAARnVuY3Rpb25Uc0tleXdvcmRUeXBlVHNUaGlzVHlwZVRzRm5PckNvbnN0cnVjdG9yVHlwZVRzVHlwZVJlZlRzVHlwZVF1ZXJ5VHNUeXBlTGl0VHNBcnJheVR5cGVUc1R1cGxlVHlwZVRzT3B0aW9uYWxUeXBlVHNSZXN0VHlwZVRzVW5pb25PckludGVyc2VjdGlvblR5cGVUc0NvbmRpdGlvbmFsVHlwZVRzSW5mZXJUeXBlVHNQYXJlbnRoZXNpemVkVHlwZVRzVHlwZU9wZXJhdG9yVHNJbmRleGVkQWNjZXNzVHlwZVRzTWFwcGVkVHlwZVRzTGl0VHlwZVRzVHlwZVByZWRpY2F0ZVRzSW1wb3J0VHlwZVRzVHlwZUFubkpTWE9wZW5pbmdFbGVtZW50YXR0cnNzZWxmX2Nsb3Npbmd0eXBlX2FyZ3PeBAAAGAAAAAgAAABeAQAAVHNFbnVtRGVjbGlzX2NvbnN0bWVtYmVyc1RzUXVhbGlmaWVkTmFtZfQEAAAgAAAACAAAALsBAAAAAAAABAAAAAQAAAD1BAAA+AYnAAQAAADlAycABwAAAGD3JgAGAAAAUfcmAAkAAAA0ySYAAgAAAJrHJgAEAAAAVHNNb2R1bGVEZWNs9gQAAAwAAAAEAAAA9wQAAAAAAAAEAAAABAAAAPgEAAD4BicABAAAADTJJgACAAAA5QMnAAcAAAALwSYACwAAAEL3JgAHAAAAmscmAAQAAABUc0ludGVyZmFjZURlY2xUc01vZHVsZUJsb2NrVHNOYW1lc3BhY2VEZWNsVHNUeXBlQWxpYXNEZWNsVHNUeXBlUGFyYW1EZWNsVHNJbXBvcnRFcXVhbHNEZWNsaXNfZXhwb3J0aXNfdHlwZV9vbmx5bW9kdWxlX3JlZlRzVHlwZVBhcmFtSW5zdGFudGlhdGlvbmFyZ3VtZW50cwBUySYAYwAAADMAAAAPAAAAUHJpdmF0ZVB1YmxpYwAAAAAAAAAIAAAABAAAAAwBAAD5BAAAIAAAAAgAAABHAgAA+gQAAAQAAAAEAAAAogEAAPsEAAAEAAAABAAAAAICAAAAAAAAAQAAAAEAAABkAQAA2wQAAAwAAAAEAAAA4gEAAAAAAAABAAAAAQAAANwEAAAAAAAABAAAAAQAAACsAAAAaXNfc3RhdGljZGVjb3JhdG9yc2FjY2Vzc2liaWxpdHlpc19hYnN0cmFjdGlzX29wdGlvbmFsaXNfb3ZlcnJpZGVkZWZpbml0ZQAAAPgGJwAEAAAAHckmAAMAAAB3CScABQAAAMjIJgAIAAAAxMUmAAkAAADNxSYACgAAANfFJgANAAAA5MUmAAsAAADvxSYACwAAAPrFJgALAAAAVBgnAAgAAADlAycABwAAAAXGJgAIAAAAQ2xhc3NQcm9wRGVjb3JhdG9yTWV0aG9kR2V0dGVyU2V0dGVyQ29uc3RydWN0b3JQcml2YXRlTWV0aG9kUHJpdmF0ZVByb3BUc0luZGV4U2lnbmF0dXJlRW1wdHlTdGF0aWNCbG9ja0F1dG9BY2Nlc3NvcgD8BAAABAAAAAQAAAD9BAAAAAAAAAEAAAABAAAA/gQAAGtpbmT4BicABAAAAB3JJgADAAAAVPomAAgAAAAMxyYABAAAAMTFJgAJAAAA18UmAA0AAADkxSYACwAAAO/FJgALAAAA+sUmAAsAAABDbGFzc01ldGhvZAAAAAAABAAAAAQAAACMAQAA/wQAAAwAAAAEAAAAAAUAAPIEAAAYAAAABAAAAPMEAABwYXJhbXNib2R5AAD4BicABAAAAKjIJgAEAAAAHckmAAMAAACUxyYABgAAAJrHJgAEAAAA18UmAA0AAADvxSYACwAAAAEFAAAQAAAACAAAAAIFAAD4BicABAAAAKjIJgAEAAAAHckmAAMAAAB3CScABQAAAMjIJgAIAAAAxMUmAAkAAADNxSYACgAAANfFJgANAAAA78UmAAsAAAD6xSYACwAAAFQYJwAIAAAABcYmAAgAAAADBQAAIAAAAAgAAAAEBQAA+AYnAAQAAAAdySYAAwAAAHcJJwAFAAAAyMgmAAgAAADExSYACQAAAM3FJgAKAAAA18UmAA0AAADkxSYACwAAAPrFJgALAAAABcYmAAgAAABjdHh0b3B0aW9uYWxSZXN0UGF0ZG90M190b2tlbmFyZ3R5cGVfYW5uQXJyYXlQYXRlbGVtc0Fzc2lnblBhdGxlZnRyaWdodE9iamVjdFBhdHByb3BzQ29tcHV0ZWRQcml2YXRlTmFtZUFzc2lnblBhdFByb3BrZXlLZXlWYWx1ZUJpbmRpbmdJZGVudGlkS2V5VmFsdWVQYXRQcm9waW5kZXggbm90IGZvdW5kL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW5kZXhtYXAtMi45LjAvc3JjL21hcC9jb3JlLnJzAFTJJgBjAAAASwAAAAoAAABUySYAYwAAABYCAAANAAAAVMkmAGMAAACIAgAALAAAAFTJJgBjAAAAYAIAACIAAABUySYAYwAAAE8BAAAWAAAAVMkmAGMAAABbAQAAOAAAAFN0ckJvb2xOdW1CaWdJbnRSZWdleEpTWFRleHRyYXdleHBmbGFnc051bWJlckpTWEF0dHJuYW1lSlNYRW1wdHlFeHBySlNYTWVtYmVyRXhwcklkZW50TmFtZXN5bUpTWE5hbWVzcGFjZWROYW1lSlNYRnJhZ21lbnRvcGVuaW5nY2hpbGRyZW5jbG9zaW5nTGl0SlNYRXhwckNvbnRhaW5lckpTWEVsZW1lbnRvYmpwcm9wSlNYU3ByZWFkQ2hpbGRleHByU3ByZWFkRWxlbWVudEpTWENsb3NpbmdFbGVtZW50bnNKU1hDbG9zaW5nRnJhZ21lbnRKU1hPcGVuaW5nRnJhZ21lbnRDbGFzc0ZuVmFyVXNpbmdUc0ludGVyZmFjZVRzVHlwZUFsaWFzVHNFbnVtVHNNb2R1bGVk0iYAewAAAO8AAAAXAAAAZNImAHsAAAAKAQAAEgAAAGTSJgB7AAAAUAEAACgAAABk0iYAewAAAFEBAAAtAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZGVzdHJ1Y3R1cmluZyBwYXR0ZXJuIGluc2lkZSBUc1BhcmFtZXRlclByb3BlcnR5AACUyyYAWgAAAGTSJgB7AAAAQQEAACEAAABk0iYAewAAAGwBAAASAAAAZNImAHsAAAA/AgAAJwAAAGTSJgB7AAAAPAIAADIAAABk0iYAewAAAEQDAAANAAAAZNImAHsAAACiAwAAHwAAAGTSJgB7AAAAowMAAB8AAABk0iYAewAAAMsDAAAfAAAAm/EmACoAAABk0iYAewAAANMDAAAdAAAAZNImAHsAAADvAwAAIwAAAGTSJgB7AAAAmwMAADEAAABk0iYAewAAAF0EAAAjAAAAZNImAHsAAAAzBAAAKwAAAGTSJgB7AAAAPwQAAFEAAABk0iYAewAAAEIEAAAfAAAAZNImAHsAAABMBAAAVgAAAGTSJgB7AAAATgQAAB8AAABleHBvcnRzAGTSJgB7AAAAfgUAACMAAABk0iYAewAAAIIFAAAfAAAAZNImAHsAAAA5BQAAGgAAAGTSJgB7AAAAOwUAABoAAABfY3JlYXRlUmVxdWlyZV9fcmVxdWlyZWNyZWF0ZVJlcXVpcmUIBQAAKAAAAAgAAACzAQAAZNImAHsAAACuAwAAQAAAAE9ubHkgYW1iaWVudCBtb2R1bGVzIGNhbiB1c2UgcXVvdGVkIG5hbWVzLgAAZNImAHsAAADlBQAADgAAAEltcG9ydCBkZWNsYXJhdGlvbnMgaW4gYSBuYW1lc3BhY2UgY2Fubm90IHJlZmVyZW5jZSBhIG1vZHVsZS5FU00tc3R5bGUgbW9kdWxlIGRlY2xhcmF0aW9ucyBhcmUgbm90IHBlcm1pdHRlZCBpbiBhIG5hbWVzcGFjZS5JbXBvcnQgYXNzaWdubWVudCBjYW5ub3QgYmUgdXNlZCB3aGVuIHRhcmdldGluZyBFQ01BU2NyaXB0IG1vZHVsZXMuIENvbnNpZGVyIHVzaW5nIGBpbXBvcnQgKiBhcyBucyBmcm9tICJtb2QiYCwgYGltcG9ydCB7YX0gZnJvbSAibW9kImAsIGBpbXBvcnQgZCBmcm9tICJtb2QiYCwgb3IgYW5vdGhlciBtb2R1bGUgZm9ybWF0IGluc3RlYWQuRXhwb3J0IGFzc2lnbm1lbnQgY2Fubm90IGJlIHVzZWQgd2hlbiB0YXJnZXRpbmcgRUNNQVNjcmlwdCBtb2R1bGVzLiBDb25zaWRlciB1c2luZyBgZXhwb3J0IGRlZmF1bHRgIG9yIGFub3RoZXIgbW9kdWxlIGZvcm1hdCBpbnN0ZWFkLi9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX3RyYW5zZm9ybXNfdHlwZXNjcmlwdC0yOC4wLjAvc3JjL3R5cGVzY3JpcHQucnMAAJrPJgB8AAAAQgAAACwAAACazyYAfAAAAGgAAAAQAAAACQUAAAQAAAAEAAAAYAEAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX3RyYW5zZm9ybXNfdHlwZXNjcmlwdC0yOC4wLjAvc3JjL3N0cmlwX3R5cGUucnNI0CYAfAAAANUAAAApAAAACgUAAAwAAAAEAAAACwUAAAwFAABmBAAAAAAAAAAAAAABAAAADQUAAE5hTkluZmluaXR5L2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfdHJhbnNmb3Jtc190eXBlc2NyaXB0LTI4LjAuMC9zcmMvdHNfZW51bS5ycwfRJgB5AAAAsAAAABIAAAABAAAAAAAAAAEAAAAAAAAAB9EmAHkAAADaAAAAGgAAAG5vdCBpbXBsZW1lbnRlZC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX3V0aWxzLTIxLjAuMC9zcmMvbGliLnJzv9EmAGUAAADVCQAAPgAAAA8FAAAEAAAABAAAAGABAAC/0SYAZQAAAOEJAAA8AAAAv9EmAGUAAADCCQAAJgAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX3RyYW5zZm9ybXNfdHlwZXNjcmlwdC0yOC4wLjAvc3JjL3RyYW5zZm9ybS5ycwBk0iYAewAAAMICAAA4AAAACgUAAAwAAAAEAAAACwUAAAwFAABmBAAAAAAAAAAAAAABAAAADQUAAFN5bWJvbF8AAQAAAAAAAAAe0yYAAQAAAHN1cGVyXwAAMNMmAAYAAAAe0yYAAQAAAGNhcGFjaXR5IG92ZXJmbG93AAAASNMmABEAAAAvcnVzdGMvMmU2ODgyYWM1YmUyN2E3MzI5M2Q2ZjdhZTU2Mzk3ZmRmMzI4NDhkZS9saWJyYXJ5L2FsbG9jL3NyYy92ZWMvbW9kLnJzZNMmAEwAAABWCgAAJAAAAC9ydXN0Yy8yZTY4ODJhYzViZTI3YTczMjkzZDZmN2FlNTYzOTdmZGYzMjg0OGRlL2xpYnJhcnkvY29yZS9zcmMvcHRyL21vZC5ycwDA0yYASwAAAAwCAAABAAAAY29uc3RydWN0b3Igc2hvdWxkIGhhdmUgYSBib2R5L2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfdXRpbHMtMjEuMC4wL3NyYy9jb25zdHJ1Y3Rvci5ycwA61CYAbQAAAA4AAAAgAAAAAAAAAAwAAAAEAAAAEAUAABEFAACEFScATwAAAAoCAAA3AAAAqAIAAAwAAAAEAAAAqQIAAKoCAACrAgAAAAAAAAAAAAABAAAArAIAABMFAAAsAAAABAAAABQFAAAVBQAAFgUAABcFAAAYBQAAGQUAACMDAABJBScAaAAAAHoCAAAUAAAASQUnAGgAAACiAgAAPAAAAEkFJwBoAAAAkQIAAD4AAADIFicAXgAAADQAAAAFAAAAYwQAAAwAAAAEAAAAZAQAABoFAABmBAAAAAAAAAAAAAABAAAArAIAAGMEAAAMAAAABAAAAGQEAAAaBQAAZgQAAAAAAAAAAAAAAQAAAKwCAABodHRwOmh0dHBzOgABAAAAAAAAAH0UJwABAAAAYwQAAAwAAAAEAAAAZAQAAIIEAABmBAAAAAAAAAAAAAABAAAArAIAACRzZXJkZV9qc29uOjpwcml2YXRlOjpSYXdWYWx1ZUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky9SYXdTZWN0aW9uT2Zmc2V0bGluZWNvbHVtblJhd1NlY3Rpb25vZmZzZXR1cmxtYXBGYWNlYm9va1Njb3BlTWFwcGluZ25hbWVzbWFwcGluZ3NSYXdTb3VyY2VNYXB2ZXJzaW9uZmlsZXNvdXJjZXNzb3VyY2VSb290c291cmNlc0NvbnRlbnRzZWN0aW9uc3JhbmdlTWFwcGluZ3NpZ25vcmVMaXN0eF9mYWNlYm9va19vZmZzZXRzeF9tZXRyb19tb2R1bGVfcGF0aHN4X2ZhY2Vib29rX3NvdXJjZXNkZWJ1Z19pZGRlYnVnSWQvcnVzdGMvMmU2ODgyYWM1YmUyN2E3MzI5M2Q2ZjdhZTU2Mzk3ZmRmMzI4NDhkZS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvdW5zdGFibGUvcXVpY2tzb3J0LnJzS9cmAGEAAAA5AAAAGwAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19zb3VyY2VtYXAtOS4zLjQvc3JjL2J1aWxkZXIucnMAvNcmAGcAAABpAAAAGgAAALzXJgBnAAAAagAAACIAAABDYW5ub3Qgc2V0IHNvdXJjZXMgZm9yIHRvbWJzdG9uZSBzb3VyY2UgaWQAALzXJgBnAAAAgAAAAAkAAAC81yYAZwAAAIQAAAAdAAAAvNcmAGcAAAAHAQAAFQAAAHU4L3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbmF2aWdhdGUucnMAAACi2CYAXwAAAMYAAAAnAAAAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbWFwL2VudHJ5LnJzFNkmAGAAAAChAQAALgAAAGFzc2VydGlvbiBmYWlsZWQ6IGlkeCA8IENBUEFDSVRZL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbm9kZS5ycwCk2SYAWwAAAJUCAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogZWRnZS5oZWlnaHQgPT0gc2VsZi5oZWlnaHQgLSAxpNkmAFsAAACtAgAACQAAAKTZJgBbAAAAsQIAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBzcmMubGVuKCkgPT0gZHN0LmxlbigppNkmAFsAAABKBwAABQAAAKTZJgBbAAAAxwQAACMAAACk2SYAWwAAAMsEAAAjAAAApNkmAFsAAAAKBQAAJAAAAGFzc2VydGlvbiBmYWlsZWQ6IGVkZ2UuaGVpZ2h0ID09IHNlbGYubm9kZS5oZWlnaHQgLSAxAAAApNkmAFsAAAD6AwAACQAAAKLYJgBfAAAAWAIAADAAAACi2CYAXwAAABYCAAAvAAAAotgmAF8AAAChAAAAJAAAAEluY2x1ZGVkRXhjbHVkZWRVbmJvdW5kZWRpbmRleCAgb3V0IG9mIHJhbmdlOiAAAFnbJgAGAAAAX9smAA8AAAD83CYAXgAAADEGAAADAAAAcmFuZ2UgIG91dCBvZiBib3VuZHM6IAAAkNsmAAYAAACW2yYAEAAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2JpdHZlYy0xLjAuMS9zcmMvc2xpY2UvYXBpLnJzAAC42yYAYgAAAI4KAAABAAAAGwUAABQAAAAEAAAAngIAAAAAAAAIAAAABAAAABwFAABjYW5ub3QgIGJpdHMgZnJvbSBhIC1iaXQgcmVnaW9uAEzcJgAHAAAAjhEnAAEAAABT3CYADQAAAGDcJgALAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYml0dmVjLTEuMC4xL3NyYy9maWVsZC5ycwAAjNwmAF4AAAAOAgAAAgAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2JpdHZlYy0xLjAuMS9zcmMvc2xpY2UucnMAAPzcJgBeAAAA9wAAAB8AAAD83CYAXgAAAE8BAAAjAAAAbG9hZEJpdFNwYW5FcnJvcjw+OjqA3SYADQAAAI3dJgADAAAATnVsbE1pc2FsaWduZWRUb29Mb25nVG9vSGlnaC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19zb3VyY2VtYXAtOS4zLjQvc3JjL2VuY29kZXIucnMAvN0mAGcAAAA3AAAADQAAAGludmFsaWQgYnl0ZbzdJgBnAAAAIwAAABIAAABpbnZhbGlkIHV0Zji83SYAZwAAAGYAAAAhAAAAvN0mAGcAAABYAAAAEQAAAGJhZCBqc29uOiAAAHzeJgAKAAAAbGVmdG92ZXIgY3VyL3NoaWZ0IGluIHZscSBkZWNvZGWQ3iYAIAAAAHZscSBkZWNvZGUgZGlkIG5vdCBwcm9kdWNlIGFueSB2YWx1ZXMAAAC43iYAJQAAAHZscSBkZWNvZGUgY2F1c2VkIGFuIG92ZXJmbG93AAAA6N4mAB0AAABnb3QgIHNlZ21lbnRzLCBleHBlY3RlZCA0IG9yIDUAABDfJgAEAAAAFN8mABoAAABiYWQgcmVmZXJlbmNlIHRvIHNvdXJjZSAjAAAAQN8mABkAAABiYWQgcmVmZXJlbmNlIHRvIG5hbWUgIwBk3yYAFwAAAGVuY291bnRlcmVkIGluY29tcGF0aWJsZSBzb3VyY2VtYXAgZm9ybWF0AAAAhN8mACkAAAB0aGUgcHJvdmlkZWQgZGF0YSBVUkwgaXMgaW52YWxpZLjfJgAgAAAAY2Fubm90IGZsYXR0ZW4gdGhlIGluZGV4ZWQgc291cmNlbWFwOiAAAODfJgAmAAAAaW52YWxpZCBtYWdpYyBudW1iZXIgZm9yIHJhbSBidW5kbGUAEOAmACMAAABpbnZhbGlkIG1vZHVsZSBpbmRleCBpbiByYW0gYnVuZGxlAAA84CYAIgAAAGludmFsaWQgcmFtIGJ1bmRsZSBtb2R1bGUgZW50cnkAaOAmAB8AAABub3QgYSByYW0gYnVuZGxlkOAmABAAAABpbnZhbGlkIHJhbmdlIG1hcHBpbmcgaW5kZXg6IAAAAKjgJgAdAAAAaW52YWxpZCBiYXNlNjQgY2hhcmFjdGVyOiAAANDgJgAaAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcnVzdGMtaGFzaC0yLjEuMS9zcmMvbGliLnJz9OAmAGAAAAAjAQAAHAAAAPTgJgBgAAAAJAEAACgAAAD04CYAYAAAACUBAAAoAAAA9OAmAGAAAAAIAQAAKwAAAPTgJgBgAAAACAEAAEIAAAD04CYAYAAAAAUBAAArAAAA9OAmAGAAAAAFAQAAQgAAAAAAAAAAAAAAAQAAAFMDAABUcnlGcm9tU2xpY2VFcnJvci9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0MC9zcmMvc2VyLnJzAOXhJgBiAAAADQYAABIAAADl4SYAYgAAAEwIAAAzAAAAdXV1dXV1dXVidG51ZnJ1dXV1dXV1dXV1dXV1dXV1dXUAACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOXhJgBiAAAAPwgAAEAAAAAiXCJcXFxiXGZcblxyXHQA5eEmAGIAAAB/AgAAKgAAAOXhJgBiAAAAlgIAACoAAADl4SYAYgAAAKQCAAAqAAAA5eEmAGIAAAD8AQAAKgAAAOXhJgBiAAAACgIAACoAAABleHBlY3RlZCBSYXdWYWx1ZS9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3d5ei0wLjUuMS9zcmMvY29tdS5ycwDp4yYAWgAAACcBAAACAAAAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9zb3J0L3Vuc3RhYmxlL2hlYXBzb3J0LnJzVOQmAGAAAAAcAAAAHQAAAE51bGxQdHJFcnJvci4uTWlzYWxpZ25FcnJvcgABAAAAYXR0ZW1wdCB0byBqb2luIGludG8gY29sbGVjdGlvbiB3aXRoIGxlbiA+IHVzaXplOjpNQVgvcnVzdGMvMmU2ODgyYWM1YmUyN2E3MzI5M2Q2ZjdhZTU2Mzk3ZmRmMzI4NDhkZS9saWJyYXJ5L2FsbG9jL3NyYy9zdHIucnMAAAAZ5SYASAAAAJoAAAAKAAAAGeUmAEgAAACdAAAAFgAAABnlJgBIAAAAsQAAABYAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9sZXhlci0yMy4wLjAvc3JjL2NvbW1vbi9wYXJzZXIvdHlwZXNjcmlwdC5ycwAAlOUmAHoAAABBAAAAEwAAAJTlJgB6AAAARQAAAA0AAACU5SYAegAAAHQBAAAcAAAAKfcmAAYAAAAv9yYACQAAADj3JgAHAAAAVBgnAAgAAAAp9yYABgAAADj3JgAHAAAAL/cmAAkAAABUGCcACAAAAOwDJwAIAAAAG/cmAAUAAABEGCcACAAAAFANJwACAAAAP/cmAAMAAACU5SYAegAAAAwIAAAzAAAAPCAoanN4IHRhZyBzdGFydCkAAACU5SYAegAAAJUKAAASAAAAlOUmAHoAAADJCAAADgAAAJTlJgB6AAAAUgQAABIAAABhbiBpZGVudGlmaWVyLCB2b2lkLCB5aWVsZCwgbnVsbCwgYXdhaXQsIGJyZWFrLCBhIHN0cmluZyBsaXRlcmFsLCBhIG51bWVyaWMgbGl0ZXJhbCwgdHJ1ZSwgZmFsc2UsIGAsIC0sIGltcG9ydCwgdGhpcywgdHlwZW9mLCB7LCBbLCAobnVtZXJpYyBsaXRlcmFsIG9yIGJpZ2ludCBsaXRlcmFsAACU5SYAegAAALEJAAA0AAAAlOUmAHoAAADDCQAANAAAAJTlJgB6AAAAzQkAABIAAACU5SYAegAAABgJAAAnAAAAlOUmAHoAAAAWCQAAFgAAAJTlJgB6AAAAOQQAAA8AAACU5SYAegAAAD0EAAAQAAAAlOUmAHoAAAB4AAAADQAAAJTlJgB6AAAAUQUAABQAAACU5SYAegAAAF8FAAAOAAAAYW4gaWRlbnRpZmllciwgWyBmb3IgYW4gYXJyYXkgcGF0dGVybiwgeyBmb3IgYW4gb2JqZWN0IHBhdHRlciBvciAuLi4gZm9yIGEgcmVzdCBwYXR0ZXJuAJTlJgB6AAAAKgEAABMAAABnbG9iYWwgb3IgYSBzdHJpbmcgbGl0ZXJhbAAAY/omAHQAAABqAgAAJgAAAGP6JgB0AAAAfwIAADYAAAAoIG9yIGAAAGP6JgB0AAAAswIAACoAAABj+iYAdAAAAKcCAAAmAAAAZmFpbKgCAAAMAAAABAAAAA8DAAAdBQAAqwIAAAAAAAAAAAAAAQAAAKwCAABj+iYAdAAAACIBAAAjAAAAY/omAHQAAAAzAQAAHQAAAPj0JgB0AAAARAMAACIAAAD49CYAdAAAAF0DAAAqAAAA+PQmAHQAAAA+AwAAHAAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX2xleGVyLTIzLjAuMC9zcmMvY29tbW9uL3BhcnNlci9tb2QucnMAjOkmAHMAAAC7AQAAFwAAAGlkZW50aWZpZXIsIHN0cmluZyBsaXRlcmFsLCBudW1lcmljIGxpdGVyYWwgb3IgWyBmb3IgdGhlIGNvbXB1dGVkIGtleQAAAIzpJgBzAAAAfgEAAB8AAAB0ZW1wbGF0ZSB0b2tlbkFuIGV4cHJlc3Npb24gc2hvdWxkIGZvbGxvdyAnLi4uJy9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX2xleGVyLTIzLjAuMC9zcmMvY29tbW9uL3BhcnNlci9vYmplY3QucnMAAACX6iYAdgAAACQAAAAZAAAAl+omAHYAAAAnAAAAEwAAAJfqJgB2AAAApwEAAB4AAAAcAy9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX3BhcnNlci0yMy4wLjAvc3JjL3BhcnNlci9qc3gvbW9kLnJzAELrJgBxAAAAMQEAABkAAABC6yYAcQAAADsBAAATAAAAPCAoanN4IHRhZyBzdGFydCksIGpzeCB0ZXh0IG9yIHtC6yYAcQAAAN4AAAASAAAAanN4IGlkZW50aWZpZXISEBMAAABC6yYAcQAAAKEAAAAYAAAAQusmAHEAAACnAAAAEgAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IEpTWE5hbWVzcGFjZWROYW1lIC0+IEpTWE9iamVjdDjsJgBIAAAAQusmAHEAAABeAAAAGgAAAGB9YC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX3BhcnNlci0yMy4wLjAvc3JjL3BhcnNlci90cGwucnOb7CYAbQAAAHgAAAATAAAAm+wmAG0AAAB7AAAAFAAAAJvsJgBtAAAA6AAAABEAAACb7CYAbQAAAOsAAAAUAAAAdmFybGV0PT0hPT09PSE9PTw9Pj08PD4+Pj4+JXxeJnx8JiYqKj8/AMDwJgBnAAAAgwMAABIAAADA8CYAZwAAAAECAABIAAAAwPAmAGcAAAACAgAAKAAAAMDwJgBnAAAAygAAAEwAAADA8CYAZwAAAM0AAAAnAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfY29kZWdlbi0xNy4wLjAvc3JjL2xpdC5ycwDA7SYAZwAAAPgAAAA0AAAAaW1wbGVtZW50cy8vLyoqL35kZWxldGUrPS09Kj0vPSU9PDw9Pj49Pj4+PXw9Xj0mPSoqPSYmPXx8PT8/PSsrLS0vaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvdXRpbC9pdGVyLnJzdW5leHBlY3RlZCByZWdleCBmaW5kIGVycm9yOiAKdG8gaGFuZGxlIGZpbmQgZXJyb3JzLCB1c2UgJ3RyeScgb3IgJ3NlYXJjaCcgbWV0aG9kcwAAAOPuJgAdAAAAAO8mADUAAAB57iYAagAAAH4BAAAZAAAAyP0mAGoAAABeAgAAHAAAAMj9JgBqAAAAawIAADIAAADI/SYAagAAAG8CAAAXAAAAAgAAAMj9JgBqAAAAAQMAABUAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvdXRpbC9zZWFyY2gucnNpbnZhbGlkIHNwYW4gIGZvciBoYXlzdGFjayBvZiBsZW5ndGggAAAACPAmAA0AAAAV8CYAGAAAAJzvJgBsAAAAqgEAAAkAAABjbGFzcy9ydXN0Yy8yZTY4ODJhYzViZTI3YTczMjkzZDZmN2FlNTYzOTdmZGYzMjg0OGRlL2xpYnJhcnkvY29yZS9zcmMvaXRlci90cmFpdHMvaXRlcmF0b3IucnMAAABV8CYAWAAAANMHAAAJAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfY29kZWdlbi0xNy4wLjAvc3JjL2xpYi5ycwDA8CYAZwAAAPMHAAAiAAAAwPAmAGcAAAD2BwAAIQAAAHN1cGVyAAAAwPAmAGcAAABnBwAAFwAAAA0KAADA8CYAZwAAACYIAAAyAAAAwPAmAGcAAAAfCAAAMAAAAG5ldy50YXJnZXRpbXBvcnQubWV0YT8uaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogIGlzIGFscmVhZHkgcmVuYW1lZCB0byAsIGJ1dCBpdCdzIHJlbmFtZWQgYXMgAACb8SYAKgAAAMXxJgAXAAAA3PEmABYAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV90cmFuc2Zvcm1zX2Jhc2UtMjUuMC4wL3NyYy9yZW5hbWUvbW9kLnJzAAAM8iYAdgAAAP4AAAAZAAAAZXZhbEhhc2ggdGFibGUgY2FwYWNpdHkgb3ZlcmZsb3eY8iYAHAAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2hhc2hicm93bi0wLjE0LjUvc3JjL3Jhdy9tb2QucnO88iYAZAAAAFYAAAAoAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfbGV4ZXItMjMuMC4wL3NyYy9jb21tb24vcGFyc2VyL2NsYXNzX2FuZF9mbi5yczDzJgB8AAAA3wUAABUAAAAw8yYAfAAAAPcFAAAPAAAAMPMmAHwAAADlBQAAEwAAADDzJgB8AAAAZQAAABQAAAAw8yYAfAAAAFcGAAARAAAAKfcmAAYAAAAv9yYACQAAADj3JgAHAAAAUA0nAAIAAAA/9yYAAwAAAOwDJwAIAAAAVBgnAAgAAABEGCcACAAAAFwNJwAGAAAAMPMmAHwAAAD7BAAAEgAAACogZm9yIGdlbmVyYXRvciwgcHJpdmF0ZSBrZXksIGlkZW50aWZpZXIgb3IgYXN5bmNpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBpc19jb25zdHJ1Y3RvcigpIHJldHVybnMgZmFsc2UgZm9yIFByaXZhdGVOYW1lAAAAhfQmAFgAAAAw8yYAfAAAAEoEAAAaAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfbGV4ZXItMjMuMC4wL3NyYy9jb21tb24vcGFyc2VyL3N0bXQucnNUcmllZCB0byBwYXJzZSB0aGUgY29uZGl0aW9uIGZvciBhbiBpZiBzdGF0ZW1lbnT49CYAdAAAAIgBAAAiAAAA+PQmAHQAAACLAQAAIwAAAPj0JgB0AAAAkQEAADQAAAD49CYAdAAAAJsBAAAyAAAA+PQmAHQAAADRAAAACQAAAPj0JgB0AAAA/AAAABUAAAD49CYAdAAAABUBAAAPAAAA+PQmAHQAAABWBQAAFQAAACJ1c2Ugc3RyaWN0Iid1c2Ugc3RyaWN0J/j0JgB0AAAAdgUAABMAAAD49CYAdAAAAFIBAAAPAAAA+PQmAHQAAADWAwAAFgAAAPj0JgB0AAAA2QMAABMAAAD49CYAdAAAAJYAAAASAAAA0BMnAG4AAADcAgAAEQAAAAAAAAAMAAAABAAAAB8FAAAgBQAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfY29kZWdlbi0xNy4wLjAvc3JjL3R5cGVzY3JpcHQucnNuZXc9PmNvbnN0ZW51bWluZmVycHVibGljcHJvdGVjdGVkcHJpdmF0ZW91dGV4dGVuZHN0eXBlb2YrLW5hbWVzcGFjZW1vZHVsZWdsb2JhbGAAqPYmAG4AAAAEAgAAIgAAACR7AACo9iYAbgAAAAcCAAAhAAAAYW55dW5rbm93bm51bWJlcm9iamVjdGJvb2xlYW5iaWdpbnRzdHJpbmdzeW1ib2x2b2lkdW5kZWZpbmVkbmV2ZXJpbnRyaW5zaWNrZXlvZnVuaXF1ZWludGVyZmFjZXNhdGlzZmllc2Fzc2VydHNpc3JlcXVpcmUvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9wYXJzZXItMjMuMC4wL3NyYy9sZXhlci9jYXB0dXJpbmcucnMAAAAD+CYAcgAAADsAAAATAAAAA/gmAHIAAAAwAAAAKwAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX3BhcnNlci0yMy4wLjAvc3JjL2xleGVyL3N0YXRlLnJzAACY+CYAbgAAAHsAAAAJAAAAmPgmAG4AAACAAAAACQAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX2NvZGVnZW4tMTcuMC4wL3NyYy9tb2R1bGVfZGVjbHMucnNleHBvcnRmcm9tYXNzZXJ0KPkmAHAAAACZAAAAIAAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuc3BlY2lmaWVycy5sZW4oKSA8PSAyKPkmAHAAAACnAAAAFQAAACj5JgBwAAAAWQEAACgAAABub3QgaW1wbGVtZW50ZWQ6IGNvZGVnZW4gb2YgYGV4cG9ydCBkZWZhdWx0IGZyb20gJ2Zvbyc7YAT6JgA4AAAAKPkmAHAAAAD9AAAAEQAAAGZ1bmN0aW9udXNpbmcjIS9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX2xleGVyLTIzLjAuMC9zcmMvY29tbW9uL3BhcnNlci9leHByLnJzaW1wb3J0AAAAY/omAHQAAABKAAAAFQAAAGP6JgB0AAAAUwAAAA8AAABj+iYAdAAAAE8AAAATAAAAY/omAHQAAADFAgAAGwAAAGAuYCBvciBgKGAAAGP6JgB0AAAA+QIAACcAAABtZXRhVHJpZWQgdG8gcGFyc2UgYW4gYXJndW1lbnQgb2YgeWllbGQAY/omAHQAAADDBwAAEwAAAGP6JgB0AAAAvQcAABMAAABj+iYAdAAAAMkHAAAYAAAAY/omAHQAAADdBwAAEwAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGludmFsaWQgcGF0dGVybjogRXhwciik+yYAQAAAAFx+JwABAAAAY/omAHQAAACkBwAAKAAAAGP6JgB0AAAAfQcAABoAAABj+iYAdAAAALYIAAA9AAAAY/omAHQAAADFCAAAGQAAAGP6JgB0AAAA1AgAAB8AAABj+iYAdAAAANUIAAAeAAAAY/omAHQAAADMCAAANAAAAHRhcmdldGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IHBhcnNlX2xpdCBzaG91bGQgbm90IGJlIGNhbGxlZCBmb3IgAGr8JgBNAAAAY/omAHQAAAAQAQAACQAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX3RyYW5zZm9ybXNfYmFzZS0yNS4wLjAvc3JjL3JlbmFtZS9vcHMucnMAAND8JgB2AAAASAIAABcAAADQ/CYAdgAAAE0CAAARAAAA0PwmAHYAAAAcAQAAGQAAAND8JgB2AAAARQEAABkAAADQ/CYAdgAAAHkBAAAcAAAA0PwmAHYAAAC5AQAAFwAAAND8JgB2AAAAvgEAABEAAADQ/CYAdgAAAHwCAAASAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL3V0aWwvcG9vbC5ycwAAyP0mAGoAAAA9AgAAHAAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX2xleGVyLTIzLjAuMC9zcmMvY29tbW9uL3BhcnNlci9tb2R1bGVfaXRlbS5ycwBE/iYAewAAAHYBAAA4AAAARP4mAHsAAABhAgAAGAAAAET+JgB7AAAAegIAABgAAABE/iYAewAAAJcCAAAYAAAARP4mAHsAAAAZAwAAGgAAAHR5cGVzb3VyY2VkZWZlcgBE/iYAewAAADsDAAAaAAAARP4mAHsAAABVAwAAGAAAAET+JgB7AAAAaQMAABwAAABE/iYAewAAAGIDAAAYAAAAYSBzdHJpbmcgbGl0ZXJhbET+JgB7AAAAhAMAABIAAABE/iYAewAAAAYDAAAWAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogaGFuZGxlX2ltcG9ydF9leHBvcnQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaWYgY3VycmVudCB0b2tlbiBpc24ndCBpbXBvcnQgbm9yIGV4cG9ydJD/JgB8AAAARP4mAHsAAAAwAAAACQAAAGFzAABE/iYAewAAAFIAAAASAAAAZGVzY3JpcHRpb24oKSBpcyBkZXByZWNhdGVkOyB1c2UgRGlzcGxheVV0ZjhFcnJvcnZhbGlkX3VwX3RvZXJyb3JfbGVuRnJvbVV0ZjhFcnJvcmJ5dGVzZXJyb3JJb1V0ZjhCYWRKc29uVmxxTGVmdG92ZXJWbHFOb1ZhbHVlc1ZscU92ZXJmbG93QmFkU2VnbWVudFNpemVCYWRTb3VyY2VSZWZlcmVuY2VCYWROYW1lUmVmZXJlbmNlSW5jb21wYXRpYmxlU291cmNlTWFwSW52YWxpZERhdGFVcmxDYW5ub3RGbGF0dGVuSW52YWxpZFJhbUJ1bmRsZU1hZ2ljSW52YWxpZFJhbUJ1bmRsZUluZGV4SW52YWxpZFJhbUJ1bmRsZUVudHJ5Tm90QVJhbUJ1bmRsZUludmFsaWRSYW5nZU1hcHBpbmdJbmRleEludmFsaWRCYXNlNjRpbnZhbGlkIHV0Zi04OiBjb3JydXB0IGNvbnRlbnRzaW52YWxpZCB1dGYtOAAhBQAACAAAAAQAAAAiBQAAIQUAAAgAAAAEAAAAIwUAACIFAADAAScAJAUAACUFAAAmBQAAJwUAACYDAAAAAAAACAAAAAQAAAAoBQAAAAAAAAgAAAAEAAAAzQIAACgFAAD8AScAIwMAACkFAAAqBQAAIwMAACYDAAArBQAABAAAAAQAAAAsBQAAKwUAAAQAAAAEAAAALQUAACwFAAA4AicALgUAAC8FAAAlAwAAMAUAACYDAAAxBQAAHAAAAAQAAAAyBQAAMQUAABwAAAAEAAAAMwUAADIFAAB0AicANAUAADUFAAAlAwAANAUAADYFAAA3BQAAFAAAAAQAAAA4BQAANwUAABQAAAAEAAAAOQUAADgFAACwAicAOgUAADsFAAAlAwAAOgUAADYFAAA8BQAAOAAAAAQAAAAoAwAAPAUAADgAAAAEAAAAKQMAACgDAADsAicAKgMAAD0FAAAsAwAALQMAAC4DAAA+BQAAMAAAAAQAAAAoAwAAPgUAADAAAAAEAAAAKQMAACgDAAAoAycAKgMAAD8FAAAsAwAALQMAAC4DAABjb250ZXh0AEAFAAAUAAAABAAAAEEFAABABQAAFAAAAAQAAACeAgAAQQUAAGwDJwAjAwAAQgUAAEMFAAAjAwAAJgMAAEQFAAAMAAAABAAAAEUFAABEBQAADAAAAAQAAACfAgAARQUAAKgDJwAjAwAARgUAACUDAABHBQAAJgMAAD9kZWNsYXJlYWJzdHJhY3QhY29uc3RydWN0b3JhY2Nlc3Nvcm1pZCA+IGxlbgAAAAgEJwAJAAAAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9zb3J0L3N0YWJsZS9kcmlmdC5ycwAcBCcAWwAAAP8AAAAZAAAAHAQnAFsAAADyAAAAEgAAABwEJwBbAAAAzgAAACQAAAAcBCcAWwAAANEAAAAkAAAAHAQnAFsAAABAAAAAIgAAAC9ydXN0Yy8yZTY4ODJhYzViZTI3YTczMjkzZDZmN2FlNTYzOTdmZGYzMjg0OGRlL2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zdGFibGUvcXVpY2tzb3J0LnJzAMgEJwBfAAAATgAAAB8AAADIBCcAXwAAAEgAAAAXAAAAQC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19jb21tb24tMTQuMC4zL3NyYy9zb3VyY2VfbWFwLnJzAAAASQUnAGgAAAA1BQAASgAAAEkFJwBoAAAAYgUAACYAAAA7LnsuLi59PC8+PDwvPjw+L2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfY29kZWdlbi0xNy4wLjAvc3JjL3N0bXQucnNpZmVsc2Vmb3J0cnlmaW5hbGx5d2l0aGJyZWFrb2Z0aHJvd3doaWxlcmV0dXJuY2FzZWRlZmF1bHQAAADkBScAaAAAAP8AAAAdAAAA5AUnAGgAAAACAQAAQQAAAHN3aXRjaGNhdGNoZG9jb250aW51ZWRlYnVnZ2VyAAAAAAAAAAQAAAAEAAAAZwQAACNUb2tlbkFuZFNwYW50b2tlbmhhZF9saW5lX2JyZWFrc3Bhbk5vRmlsZUZvcmNhbm5vdCBhY2Nlc3MgYSBzY29wZWQgdGhyZWFkIGxvY2FsIHZhcmlhYmxlIHdpdGhvdXQgY2FsbGluZyBgc2V0YCBmaXJzdC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3Njb3BlZC10bHMtMS4wLjEvc3JjL2xpYi5ycwAAAE0HJwBgAAAAqAAAAAkAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBNb2R1bGUgaXMgaGFuZGxlZCBhYm92ZQAAAMAHJwBBAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfcGFyc2VyLTIzLjAuMC9zcmMvcGFyc2VyL21vZC5ycwAAAAwIJwBtAAAAKAEAADIAAAAgICAgqAIAAAwAAAAEAAAAqQIAAKoCAACrAgAAAAAAAAAAAAABAAAArAIAAEgFAAAEAAAABAAAAEkFAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlAEoFAAAIAAAABAAAACMFAAAAAAAABAAAAAQAAAAhAAAAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9hbGxvYy9zcmMvYm9ycm93LnJzABQJJwBLAAAAFQEAACUAAABSZWZDZWxsdmFsdWU8Ym9ycm93ZWQ+AAB8CScACgAAAEsFAABMBQAATQUAAE4FAABPBQAAUAUAAFEFAABSBQAAUwUAAFQFAABVBQAAVgUAAF0gAADFFCcAAQAAAMAJJwACAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX3RzX2Zhc3Rfc3RyaXAtMzEuMC4wL3NyYy9saWIucnNXBQAACAAAAAQAAABYBQAAWQUAAFoFAABbBQAAXAUAAF0FAABeBQAAXwUAAGAFAABhBQAAYgUAAGMFAABkBQAAZQUAAFN5bnRheCBlcnJvckludmFsaWRTeW50YXgAAADUCScAaAAAADABAABJAAAA1AknAGgAAACJAQAAFQAAANQJJwBoAAAAXAEAACUAAADUCScAaAAAAGsBAAAlAAAA1AknAGgAAABvAQAAJQAAANQJJwBoAAAAcAEAACUAAADUCScAaAAAAHQBAAAlAAAA1AknAGgAAAB1AQAAJQAAANQJJwBoAAAAdgEAACUAAADUCScAaAAAAHwBAAAlAAAA1AknAGgAAAB+AQAAJQAAANQJJwBoAAAAfwEAACUAAADUCScAaAAAAIABAAAlAAAAVW5zdXBwb3J0ZWQgc3ludGF4AADUCScAaAAAAN8BAAAbAAAACgAAANQJJwBoAAAA9wEAADAAAABnZW5lcmF0ZWQgY29kZSB3YXMgbm90IHV0Zi041AknAGgAAAClAQAAUQAAAGZhaWxlZCB0byB3cml0ZSBzb3VyY2UgbWFwc291cmNlIG1hcCB3YXMgbm90IHV0ZjgAAADUCScAaAAAAEICAAATAAAA1AknAGgAAAA1AgAAEgAAANQJJwBoAAAAOQIAADUAAABgbW9kdWxlYCBrZXl3b3JkIGlzIG5vdCBzdXBwb3J0ZWQuIFVzZSBgbmFtZXNwYWNlYCBpbnN0ZWFkLlVuc3VwcG9ydGVkU3ludGF41AknAGgAAABrAgAAGwAAANQJJwBoAAAAbwIAABkAAADUCScAaAAAAHMCAAASAAAA1AknAGgAAAB/AgAAFQAAANQJJwBoAAAAiwIAABUAAADUCScAaAAAAJkCAAAZAAAA1AknAGgAAAClAgAAGQAAANQJJwBoAAAAywIAABkAAADUCScAaAAAANUCAABAAAAA1AknAGgAAADZAgAAJAAAANQJJwBoAAAACwMAADwAAADUCScAaAAAAHsDAAAYAAAA1AknAGgAAADaAwAALAAAAGluaW5zdGFuY2VvZnN0YXRpY3RoaXNUeXBlU2NyaXB0IGV4cG9ydCBhc3NpZ25tZW50IGlzIG5vdCBzdXBwb3J0ZWQgaW4gc3RyaXAtb25seSBtb2RlVHlwZVNjcmlwdCBpbXBvcnQgZXF1YWxzIGRlY2xhcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gc3RyaXAtb25seSBtb2RlVHlwZVNjcmlwdCBlbnVtIGlzIG5vdCBzdXBwb3J0ZWQgaW4gc3RyaXAtb25seSBtb2RlVHlwZVNjcmlwdCBuYW1lc3BhY2UgZGVjbGFyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBzdHJpcC1vbmx5IG1vZGVUeXBlU2NyaXB0IHBhcmFtZXRlciBwcm9wZXJ0eSBpcyBub3Qgc3VwcG9ydGVkIGluIHN0cmlwLW9ubHkgbW9kZVRoZSBhbmdsZS1icmFja2V0IHN5bnRheCBmb3IgdHlwZSBhc3NlcnRpb25zLCBgPFQ+ZXhwcmAsIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdHlwZSBzdHJpcCBtb2RlLiBJbnN0ZWFkLCB1c2UgdGhlICdhcycgc3ludGF4OiBgZXhwciBhcyBUYC4AANQJJwBoAAAA+wUAACQAAABmaWVsZCBpZGVudGlmaWVyc3RydWN0IE9wdGlvbnNzdHJ1Y3QgVHJhbnNmb3JtQ29uZmlndmFyaWFudCBpZGVudGlmaWVyZW51bSBNb2RlVW5rbm93bi9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL251bS1iaWdpbnQtMC40LjYvc3JjL2JpZ2ludC5ycwAAAJYPJwBjAAAAbAMAAA8AAAAAAAAABAAAAAAAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9udW0tYmlnaW50LTAuNC42L3NyYy9iaWd1aW50L2NvbnZlcnQucnMYECcAbAAAAPABAAAWAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfcGFyc2VyLTIzLjAuMC9zcmMvcGFyc2VyL2lucHV0LnJzAJQQJwBvAAAAAQEAACgAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9jb2RlZ2VuLTE3LjAuMC9zcmMvdGV4dF93cml0ZXIvYmFzaWNfaW1wbC5ycyAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9sZXhlci0yMy4wLjAvc3JjL2NvbW1vbi9wYXJzZXIvaWRlbnQucnNpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RljxEnAHUAAADUAAAACQAAAGF3YWl0eWllbGRsZXQgaXMgcmVzZXJ2ZWQgaW4gY29uc3QsIGxldCwgY2xhc3MgZGVjbGFyYXRpb25pZGVudGlmaWVyIG9yIHN0cmluZy9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX2xleGVyLTIzLjAuMC9zcmMvY29tbW9uL3BhcnNlci9idWZmZXIucnOKEicAdgAAAGMAAAAgAAAAlBAnAG8AAAAqAAAADQAAAJQQJwBvAAAAYAAAAA0AAACUECcAbwAAAFEAAAANAAAAlBAnAG8AAABJAAAADQAAAJQQJwBvAAAAOQAAAA0AAACUECcAbwAAAEEAAAANAAAAlBAnAG8AAABZAAAADQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IHRva2VuX3ZhbHVlOiAAgBMnADcAAACUECcAbwAAADEAAAANAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfcGFyc2VyLTIzLjAuMC9zcmMvbGV4ZXIvdG9rZW4ucnMAANATJwBuAAAAGQMAACQAAAAUEScAegAAAHIAAAAaAAAAFBEnAHoAAACLAAAAGAAAAGZhbHNldHJ1ZW51bGwvdXNlIHN0cmljdHNjcmlwdFx1ezwhLS1ceDNjIS0tLS0+LS1ceDNlbi0weAAAAKYUJwADAAAAMHgAALQUJwACAAAAPSgqLDpbXQCoAgAADAAAAAQAAACpAgAAEwMAAKsCAAAAAAAAAAAAAAEAAACsAgAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseS9ydXN0Yy8yZTY4ODJhYzViZTI3YTczMjkzZDZmN2FlNTYzOTdmZGYzMjg0OGRlL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAAJxUnAEsAAADwCgAADgAAAC9ydXN0Yy8yZTY4ODJhYzViZTI3YTczMjkzZDZmN2FlNTYzOTdmZGYzMjg0OGRlL2xpYnJhcnkvY29yZS9zcmMvc3RyL3BhdHRlcm4ucnMAhBUnAE8AAADiBQAAFAAAAIQVJwBPAAAA4gUAACEAAACEFScATwAAANYFAAAhAAAAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9tb2QucnMAAAAEFicATQAAAOwDAAArAAAARXJyb3IAAAAnFScASwAAAOgBAAAXAAAAPGludmFsaWQ+Tm9uZVNvbWUAAAAAAAAABAAAAAQAAABmBQAAZwUAAGgFAACEFScATwAAAGYEAAAkAAAAhBUnAE8AAADOAQAANwAAAC9ydXN0Yy8yZTY4ODJhYzViZTI3YTczMjkzZDZmN2FlNTYzOTdmZGYzMjg0OGRlL2xpYnJhcnkvYWxsb2Mvc3JjL3ZlYy9zcGVjX2Zyb21faXRlcl9uZXN0ZWQucnMAAMgWJwBeAAAAEwAAAAUAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9sZXhlci0yMy4wLjAvc3JjL2NvbW1vbi9wYXJzZXIvcGF0LnJzADgXJwBzAAAA3AIAABAAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBpbnZhbGlkIHN5bnRheDogUGF0OiAAvBcnAD8AAAA4FycAcwAAACUCAAASAAAAOBcnAHMAAAC/AQAAEwAAADgXJwBzAAAAvQEAABMAAAA4FycAcwAAAKUBAAATAAAAb3ZlcnJpZGVEGCcACAAAAHJlYWRvbmx5VBgnAAgAAAA4FycAcwAAAJUCAAAUAAAAOBcnAHMAAACPAgAAFAAAADgXJwBzAAAAFQEAAB4AAAA4FycAcwAAACsBAAA1AAAAOBcnAHMAAABOAQAAGAAAADgXJwBzAAAAJwEAACQAAAA4FycAcwAAACUBAAAgAAAAeWllbGQsIGFuIGlkZW50aWZpZXIs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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////////////////8/P/////8/P/+q////P////////99f3B/PD/8f3B8AAAAAAAAAAAAAAAAAAAAAAAAAAAAEIAT//3////9///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgBP//f////3///////////////////////////////////////////////////////////////////////w8A//9/+P//////D////////////////////////////////8P/AwAfUAAAAAAAAAAAAAAAAAAAAADfvEDX///7////////////v//////////////////////////////////D/wMAH1AAAP//////////////////37zA1///+////////////7///////////////////////wP8///////////////////////////+////fwL//////wEAAAAAAAAAAP///4cHAP/////////////////////7/P///////////////////////////v///38C//////8B/v////+/tgD///+HBwAAAAAA//////8HAAAAwP7//////////////y8AYMAAnAAA/f///wAAAOD/////////////PwACAAD8////BzAEAAD/B////////////8P////////////////vn//9/58AAP/////////n////////////////AwD///////8/JP//PwQQAQAA////Af8H////fgAA//////8DAAAAAAAA8P///////yMAAAH/AwD+/+Gf+f///cUjAEAAsAMAAxD//////z8AAP///w//B////36A////////////+////////////////////8///v/vn/n///3F8595gLDP/wNQ4If5///9bQMAAABeAAAcAOC/+////e0jAAABAAMAAALgn/n///3tIwAAALADAAIA6Mc91hjH/wMAAAEAAAAAAO6H+f///W3ThzkCXsD/PwDuv/v///3t8787AQDP/wD+7p/5///97fOfOeCwz/8CAOzHPdYYx//Dxz2BAMD/AADg3/3///3/IwAAACcDAAAA4d/9///97yMAAABgAwAGAPDf/f////8nAEBwgAMAAPzg/3/8///7L38AAAAAAAAA/9/9///9//PfPWAnz/8AAO/f/f///e/z3z1gYM//DgD/3/3//////9998IDP/wD87v9//P//+y9/hF//wP8MAP7//////w0AfwAAAAAAAADW9///r/8NIF8AAPAAAAAAAQAAAAAAAAD//v///x8AAAAfAAAAAAAAAAAAAAAAAAD+////////B/9//wMAAAAA1vf//6///z9ff//zAAAAAAEAAAP/A6DC//7///8f/v/f///+////H0AAAAAAAAAA//////8HAIAAAD88YsDh/wNAAAD/////vyD///////f///////////////////////////////////////////////////8/AAD///////////z///////8AAAAAAP8P////////////A////////////z//////vyD///////f//////////////////////////////////////////////////38A//8/AP8AAAC////////9BwAAAAAAAAAA////////////PX89//////89/////z1/Pf9//////////z3//////////wcAAAAA//8AAP////////////8/P////////////z1/Pf//////Pf////89fz3/f/////////89///////////nAP4DAP//AAD/////////////Pz/+/////////////////////////////////////////////////////////////////////////////////////////////////////////////wMAAAAAAAAAAAAAAAD/////////////////n////v//B////////////8f/Af//A4D//wMA//8DAP/fAQD///////8PAAAAgBAAAAAA/////////////////5////7//wf////////////H/wH//z+A//8fAP//DwD/3w0A/////////////48w/wMAAAAAAAD//////////////wH//////wX//////////z8A////fwAAAAAAAP///z8fAP//////D////wMAAAAAAAAAuP8D//////////////8B//////8H//////////8/AP///3//D/8PwP////8/HwD//////w////8D/wcAAAAA//9/AP///////x8AAAAAAAAAAACAAAAAAAAAAAAAAADg//////8PAOAfAAAAAAAA+P///wHAAPz/////PwAAAP///w//////////f////5//A/8DgAD/v/9/AAAAAAAA////////////H/8DAPgPAP//////////////////DwD/////DwAAAADgAPz///8//wf//////+cAAAAAAN5vBP///////////////////////////////wAAAAAAAAAA/////////wD/4///////P/8H///////nAAD3/////wf///////////////////////////////////////////////////////////////////////////////////8HAAAAAAAAAAAAAAAAAAACgAAA/x8AAAAAAAAAAAAAAACE/C8/UP3/8+BDAAD//////wEAAAAAAAAAAAAAAAAAAAAwAAAAAACAAQAQAAAAAoAAAP8fAAAAAAAA/x/i/wEAhPwvP1D9//PgQwAA//////8BAAAAAAAAAAAAAAAAAAD/////////////////////////////////////H3gMAP////+/IP////////+AAAD//38Af39/f39/f38AAAAA/////////////////////////////////////x/4DwD/////vyD/////////gACA//9/AH9/f39/f39//////+AAAAD+Az4f/v///////////3/4/v/////////////34P///////v////////////9/AAD/////AAAAAAAA///gAAAA/v8+H/7///////////9//v7//////////////+D///////7/////////////fwAA/////wAAAAAAAP////////////////////////8fAAAAAAAAAAD//////z////////////////////////////////////////////////////////////////////////////////////8A/x///wAMAAD//////38AgP///z//////////////AAAAAID//P////////////////n/////////P+sfAAD8//8f////DwAA////////8L///////////////////wMAAACA//z////////////////5/////////z/rHwAA/P+79///BwAAAP///////w8A/P//////DwAAAAAAAAD8aAD8//8/AP//fwAAAP///x/w//////8HAACAAADf/wB8//////8QAAD///////8PAP//////////PwD/A////+j//////z//////DwD///8f//////////8BgP8D////f///////AQAA9w8AAP//f8T///////9iPgUAADj/BxwAfn5+AH9////////3/wP//////////////////wcAAAD///////9/AP8//wP//3/8//////////8HAAA4//98AH5+fgB/f///////9/8D////////////////////N/8D/////////////////z//////////////////AwAAAAB/APig//1/X9v/////////////////AwAAAPj///////////////////////8//////////////////wMAAAAAfwD44P/9f1/b/////////////////wMAAAD4//////8AAAAAAAAAAAAAAAAAAN//////////////////////HwAAAAD+//8H/v//B8D/////////////f/z8/BwAAAAA//8AAP//GAAA4AAAAADf/////////////////////x8AAP8D/v//h/7//wfg/////////////3/8/PwcAAAAAP/v//9///+3/z//PwAAAAD///////////////////8HAAAAAAAAAAD///////8fAAAAAAAAAAAAAAAAAAAAAAD/7///f///t/8//z8AAAAA////////////////////BwAAAAAAAAAA////////HwAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAP///x////////8BAAAAAAD/////AOD///8H/////z8A////P/////8P/z4AAAAAAAAAAAAAAAAAAAAAAAAAAAD///8f////////AQABAAAA/////wDg////B///////B////z//////D/8+AAAAAAD/////////////////////////PwAA/////w//////D///////AP///////w8A//f/97f/+//7G////////w8A/////////////////////////z//A/////8P/////w///////wD///////8PAP/3//e3//v/+xv///////8PAD/9/////7+R//8/AP//fwD///9/AAAAAAAAAAD//zcA//8/AP///wMAAAAAAAAAAP/////////AAAAAAAAAAAABAO/+//8/AAAAAAD///8f////HwAAAAD//v//HwAAAP///////z8A//8/AP//BwD//wMAAAAAAAAAAAAAAAAAb/Dv/v//P4cAAAAA////H////x8AAAAA//7//38AAAD///////8/AP//PwD//wcA//8DAAAAAAAAAAAAAAAAAP///////////wEAAAAAAAD///////8HAP///////wcA/////w8AAAAA/P//P4D//z8AAAAAAAAAAAAAAAAAAAD///////////8BAAAAAAAA////////BwD///////8HAP//////AP8D/////z++//8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AwMAHAAAAAAAAAD///8fgAD//z8AAAAAAP//AwAAAAAA//8fAAAA//9/AAAAAAAAAAAAAAAAAAAAAAD//////xsDABwAAAAAAADw////H4AA/////wEAAAD//z8AAAAAAP//HwAAAP//fwD4////////AAAAAAAAACYA+P//////AAAAAP///wEAAPj///9/AAAAkAD/////RwD4//////8HAB4AABQAAAAA//////////9/AAAAwP8/gP////////8HBAD///8B/wP////////f//AA/////08A//////////8f3v8XAAAAAP//+///DwCAAQAAAAAAAAB/vf+//wH//////38AAAAA4J/5///97SMAAAHgAwAAAP9L/////78AAAAKAAAAAAD///v/////wAMAAAAAAAAAf73/v/8B/////////wf/A++f+f///e37nzmB4M8fHwD/S/////+//6X3DwAGAAAA////////HwCABwCAAwAAAP///////wAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////9/AAAAAAAPAAAAAP///////////wf/wwMAAAD//////////78A/wMAAAAAAAAAAAAAAAAAAAAAAAAAAP///////z//AQAAPwAAAAD///////8AABAAAAAAAAAA//////8HAAEAAAAAAAAAAP///wcAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////8RAP8DAAAAAP////////8B/wP//w8AAAD////n/w//A38AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////DwAAAAAAAAAAAAAAAAAA//////////8AAACAf/Jv////AIACAAAAAAAAAAAAAAD//P////8BAAoAAAD/////////BwAAAAAAAAAAAAAAAP///////////wMAgH/yb////7/5DwD/AwAAAAAAAAAA//z///////wbAAAAAfj/////BwQAAAHw//////8DACAAAP///////////wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AQAAAP////////9/gAD///////////8jAAD///////////8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wEA/wP//f///38AAAEAAAAAAPz///8AAAAAAAAAAAAAAAAAAH/7/////wEAQAAAAL/9////AwABAAAAAAAAAAAAAAAA//3/////f/8BAP8DAAD8/////P///n8AAAAAAAAAAAB/+/////9/tP8A/wO//f///3/7Af8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wcA9P/9////DwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//9/AP///f/////HBwD/BwAAAAAAAAAAAAABAAAAAAAAAAAA/////////////////38AAP///////////////////////////////w8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////AQD///////8AAH4AAAD//////////////////////////////////////////////////////////////////////////wcABAAAACcA8AD///////////////////////////////8AAP//PwD//////////////////////////////////////////////////////////////////////////////wP//////////////////////////////////////////38AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////wH///9/AAD///////////9/AAD///8/AAD///////8AAA8AAAD4///g//8AAAAAAAAAAAAAAAAAAP////////8B////f/8D////////////f/8D////Px8A////////fwAPAP8D+P//4P//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////H/8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////8AAAAAAAAAAAAAAAAAAAAA////////////BwEAAAAAAAAA+P8AAAAAAAAAAAsAAAAAAAAAAAAAAP//////////AAAAAAAAAAAAAAAAAAAAAP///////////4f/////////gP//AAAAAAAAAAAbAAMA//////////////////////////////////8/AAAAAID/AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA72//////////////////////////////////////////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8///9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////B/8f/wH/AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4OMH+OcPAAAAPAAAAAAAAAAAAAD/////////////////B/8f/wH/YwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////f+AHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9v/38AAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wP/////////////3///////////32Te/+vv/////////7/n39////97X/z9//////////////////////////////////////////////////////8//////f//9/////f//9/////f//9/////f/////3////9///3DwAAAAAAAP//////////////////////////P/////3///f////3///f////3///f////3/////9/////f//98////////////////9/+P//////HyAAEAAA+P7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////////////////////////////AAAAAAAAAAD/////////PwAAAAAAAAAAAAAAAAAAAAAAAP//////H4A/AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf///+dsH/////////z8AAACAAAAAAAAAAAAAAAAAAAD//////x//P/9DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///z8AAP//////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///9/AAD/////////AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///z8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wf///////////////////////////////8fAAAAAAAAAP//////////DwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////////////////////HwB/AAAAAAD///////////8P/wMAAAAAAAAAAAAAAAAAAAAAAAAAAO////+W/vcKhOqWqpb3917/+/8P7vv/DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////AAAAAP///////////////////////////////////////////////////////////////////////////////wEA//////8/////////////////////////////////////////////////////////////////////////////////////////////B////////////////////////////////////////////////////////wMA/////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAD//////////////z8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMDBAUGBwgJCgsMDQ4DAwMDAwMDDwMDAwMDAwMPCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkQCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQICAgIDAgIEAgUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0CAh4CAgICAgICHyAhIiMCJCUmJygpAioCAgICKywCAgICLS4CAgIvMDEyMwICAgICAjQCAjU2NwI4OTo7PD0+Pzk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OUA5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5QQICQkMCAkRFRkdISQJKOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5SwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjk5OTlMAgICAgJNTk9QAgICUQJSUwICAgICAgICAgICAgJUVQICVgJXAgJYWVpbXF1eX2BhAmJjAmRlZmcCaAJpamtsAgJtbm9wAnFyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHUCAgICAgICdnc5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OXg5OTk5OTk5OTl5egICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICezk5fDk5fQICAgICAgICAgICAgICAgICAgJ+AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICfwICAoCBggICAgICAgICAgICAgICAoOEAgICAgICAgICAoWGdQIChwICAogCAgICAgICiYoCAgICAgICAgICAgICi4wCjY4Cj5CRkpOUlZYClwICmJmamwICAgICAgICAgI5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTmcHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCdAgICAp6fAgQCBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHQICHgICAgICAgIfICEiIwIkJSYnKCkCKgICAgKgoaKjpKWmLqeoqaqrrK0zAgICAgICrgICNTY3Ajg5Ojs8PT6vOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5TAICAgICsE5PsYWGdQIChwICAogCAgICAgICiYoCAgICAgICAgICAgICi4yys44Cj5CRkpOUlZYClwICmJmamwICAgICAgICAgJVVXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVVVVVRUAUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQEAAAAAAAAAAAAAEEEQVVVVVVVXVVVVVVVVVVVVUVVVAABAVPXdVVVVVVVVVVUVAAAAAABVVVVV/F1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQUAFAAUBFBVVVVVVVVVFVFVVVVVVVVVAAAAAAAAQFVVVVVVVVVVVdVXVVVVVVVVVVVVVVUFAABUVVVVVVVVVVVVVVVVVRUAAFVVUVVVVVVVBRAAAAEBUFVVVVVVVVVVVVUBVVVVVVX/////f1VVVVBVAABVVVVVVVVVVVVVBQAAAAAAAAAAAAAAAABAVVVVVVVVVVVVVVVVVUVUAQBUUQEAVVUFVVVVVVVVVVFVVVVVVVVVVVVVVVVVVUQBVFVRVRVVVQVVVVVVVVVFQVVVVVVVVVVVVVVVVVVVVEEVFFBRVVVVVVVVVVBRVVVBVVVVVVVVVVVVVVVVVVVUARBUUVVVVVUFVVVVVVUFAFFVVVVVVVVVVVVVVVVVVQQBVFVRVQFVVQVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVRVRVVVFVFVVVVVVVVVVVVVVUVFVVVVVVVVVVVVVVVVUEVAUEUFVBVVUFVVVVVVVVVVFVVVVVVVVVVVVVVVVVVRREBQRQVUFVVQVVVVVVVVVVUFVVVVVVVVVVVVVVVVUVRAFUVUFVFVVVBVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVFFQVEVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVEAQFVVFQBAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUQAAVFVVAEBVVVVVVVVVVVVVVVVVVVVVVVVQVVVVVVVVEVFVVVVVVVVVVVVVVVVVAQAAQAAEVQEAAAEAAAAAAAAAAFRVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUBBABBQVVVVVVVVVAFVFVVVQFUVVVFQVVRVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQFVVVVVVVVVVVVVVVUFVFVVVVVVVQVVVVVVVVVVBVVVVVVVVVUFVVVVf//99//911931tXXVRAAUFVFAQAAVVdRVVVVVVVVVVVVVRUAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAFVRVRVUBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVxUUVVVVVVVVVVVVVVVVVVVFAEBEAQBUFQAAFFVVVVVVVVVVVVVVVQAAAAAAAABAVVVVVVVVVVVVVVVVAFVVVVVVVVVVVVVVVQAAUAVVVVVVVVVVVVUVAABVVVVQVVVVVVVVVQVQEFBVVVVVVVVVVVVVVVVVRVARUFVVVVVVVVVVVVVVVVVVAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAAABABUUVVUUFVVVVVVVVVVVVVVVVVVVVVVAAAAAAAAAAAAAAAAAAAAAFVVFQBVVVVVVVUFQFVVVVVVVVVVVVVVVQAAAABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAAAAAAAAAFRVVVVVVVVVVVX1VVVVaVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/VfXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX1VVVVVVV9VVVVVVVVVVVVVVVX///9VVVVVVVVVVVVV1VVVVVXVVVVVXVX1VVVVVX1VX1V1VVdVVVVVdVX1XXVdVV31VVVVVVVVVVdVVVVVVVVVVXfV31VVVVVVVVVVVVVVVVVVVf1VVVVVVVVXVVXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVdVXVVVVVVVVVVVVVVVVV11VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVBVVVVVVVVVVVVVVVVVVVX9////////////////X1XVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAAAAAAAAqqqqqqqqmqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlpVVVVVVVWqqqqqqqqqqqqqqqqqqgoAqqqqaqmqqqqqqqqqqqqqqqqqqqqqqqqqqmqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlWpqqqqqqqqqqqqqqmqqqqqqqqqqqqqqqqoqqqqqqqqqqqqaqqqqqqqqqqqqqqqqqqqqqqqqqqqqlVVlaqqqqqqqqqqqqqqaqqqqqqqqqqqqqpVVaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpVVVVVVVVVVVVVVVVVVVVVqqqqVqqqqqqqqqqqqqqqqqpqVVVVVVVVVVVVVVVVVV9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVQAAAUFVVVVVVVVUFVVVVVVVVVVVVVVVVVVVVVVVVVVVQVVVVRUUVVVVVVVVVQVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBVVVVVVVUAAAAAUFVFFVVVVVVVVVVVVQUAUFVVVVVVFQAAUFVVVaqqqqqqqqpWQFVVVVVVVVVVVVVVFQVQUFVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVAUBBQVVVFVVVVFVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVQQUVAVRVVVVVVVVVVVVVVBVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFUUVVVVVWqqqqqqqqqqqpVVVUAAAAAAEAVAAAAAAAAAAAAAAAAVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAA8KqqWlUAAAAAqqqqqqqqqqpqqqqqqmqqVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFamqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlZVVVVVVVVVVVVVVVVVVQVUVVVVVVVVVVVVVVVVVVVVqmpVVQAAVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFQFUBQVUAVVVVVVVVVVVVVUAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBVVVVVVVV1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVFVVVVVVVVVVVVVVVVVVVVVVVVUBVVVVVVVVVVVVVVVVVVVVVVUFAABUVVVVVVVVVVVVVVUFUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVAAAAQFVVVVVVVVVVVVUUVFUVUFVVVVVVVVVVVVVVFUBBVUVVVVVVVVVVVVVVVVVVVVVAVVVVVVVVVVUVAAEAVFVVVVVVVVVVVVVVVVVVFVVVVVBVVVVVVVVVVVVVVVUFAEAFVQEUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVUARVRVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRUVAEBVVVVVVVBVVVVVVVVVVVVVVVVVFURUVVVVVRVVVVUFAFQAVFVVVVVVVVVVVVVVVVVVVVUAAAVEVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVUUAEQRBFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFQVQVRBUVVVVVVVVUFVVVVVVVVVVVVVVVVVVVVVVVVVVFQBAEVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVEAEFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUBBRAAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVAABBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVRUEEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAFVVRVVVVVVVVVAQBAVVVVVVVVVVVVFQAEQFUVVVUBQAFVVVVVVVVVVVVVAAAAAEBQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBAABBVVVVVVVVVVVVVVVVVVVVVVVVVVQUAAAAAAAUABEFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUBQEUQAABVVVVVVVVVVVVVVVVVVVVVVVVQEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVUVVVAVVVVVVVVVVVVVVVVBUBVRFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFQAAAFBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBUVVVVVVVVVVVVVVVVVVUAQFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVFUBVVVVVVVVVVVVVVVVVVVVVVVVVqlRVVVpVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpVVaqqqqqqqqqqqqqqqqqqqqqqqqqqqlpVVVVVVVVVVVVVqqpWVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVqqmqaaqqqqqqqqqqalVVVWVVVVVVVVVVallVVVWqVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlVVVVVVVVVVQQBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAAAAAAAAAAAAUAAAAAAAQFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRFQBQAAAABAAQBVVVVVVVVVBVBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFVFVVVVVVVVVVVVVVVVVVAAAAAAAAAAAAAAAAAEAVAAAAAAAAAAAAAAAAVFVRVVVVVFVVVVUVAAEAAABVVVVVVVVVVVVVVVVVVVVVVVVVVQBAAAAAABQAEARAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVUAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAQFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBAVVVVVVVVVVVVVVVVVVVXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVdVVVVVVVVVVVVVVVVVVVVV1/f9/VVVVVVVVVVVVVVVVVVVVVVVV9f///////25VVVWqqrqqqqqq6vq/v1WqqlZVX1VVVapaVVVVVVVV//////////9XVVX9/9////////////////////////f//////1VVVf////////////9/1f9VVVX/////V1f//////////////////////3/3/////////////////////////////////////////////////////////////9f///////////////////9fVVXVf////////1VVVVV1VVVVVVVVfVVVVVdVVVVVVVVVVVVVVVVVVVVVVVVVVdX///////////////////////////9VVVVVVVVVVVVVVVX//////////////////////19VV3/9Vf9VVdVXVf//V1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf///1VXVVVVVVVV//////////////9////f/////////////////////////////////////////////////////////////1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX///9X//9XVf//////////////3/9fVfX///9V//9XVf//V1WqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqWlVVVVVVVVVVWZZVYaqlWapVVVVVVZVVVVVVVVVVlVVVAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAFVVVVVVlVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFQCWalpaaqoFQKZZlWVVVVVVVVVVVQAAAABVVlVVqVZVVVVVVVVVVVVWVVVVVVVVVVUAAAAAAAAAAFRVVVWVWVlVVWVVVWlVVVVVVVVVVVVVVZVWlWqqqqpVqqpaVVVVWVWqqqpVVVVVZVVVWlVVVVWlZVZVVVWVVVVVVVVVppaalllZZamWqqpmVapVWllVWlZlVVVVaqqlpVpVVVWlqlpVVVlZVVVZVVVVVVWVVVVVVVVVVVVVVVVVVVVVVVVVVVVlVfVVVVVpVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpVqqqqqqqqqqqqVVVVqqqqqqVaVVWaqlpVpaVVWlqllqVaVVVVpVpVlVVVVX1VaVmlVV9VZlVVVVVVVVVVZlX///9VVVWammqaVVVV1VVVVVXVVVWlXVX1VVVVVb1Vr6q6qquqqppVuqr6rrquVV31VVVVVVVVVVdVVVVVWVVVVXfV31VVVVVVVVWlqqpVVVVVVVXVV1VVVVVVVVVVVVVVVVetWlVVVVVVVVVVVaqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAAAAwKqqWlUAAAAAqqqqqqqqqqpqqqqqqmqqVVVVVVVVVVVVVVVVBVRVVVVVVVVVVVVVVVVVVVWqalVVAABUWaqqalWqqqqqqqqqWqqqqqqqqqqqqqqqqqqqWlWqqqqqqqqquv7/v6qqqqpWVVVVVVVVVVVVVVVVVfX///////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAgIDBAUGBwgJCgsMDQICAgICAgIOAgICAgICAg4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgICAgMCAgQCBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHQICHgICAgICAgIfICEiIwIkJSYnKCkCKgICAgIrLAICAgItLgICAi8wMTIzAgICAgICNAICNTY3Ajg5Ojs8PT4/OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OUACAkFCAgJDREVGR0gCSTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OUoCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI5OTk5SwICAgICTE1OTwICAlACUVICAgICAgICAgICAgICU1QCAlUCVgICV1hZWltcXV5fYGFiYwJkZWZnAmgCaWprbAICbW5vcAJxcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdAICAgICAgICAgICAgICAgICAnV2AgICdwICAnh5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTl6OTk5OTk5OTk5e3wCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn05OX45OX8CAgICAgICAgICAgICAgICAgICgAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoECAgKCg4QChQICAgICAgICAgICAgKGhwICAgICAgICAgKIiXYCAooCAgKLAowCAgICAo2OAgICAgICAgICAgICAo+QApGSApOUlZaXmJmaApsCApydnp8CAgICAgICAgICOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5oB0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoQICAgKiowIEAgUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0CAh4CAgICAgICHyAhIiMCJCUmJygpAioCAgICpKWmp6ipqi6rOaytrq+wsQICAgICArICAjU2NwI4OTo7PD0+szk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OUsCAgICArRNTrWIiXYCAooCAgKLAowCAgICAo2OAgICAgICAgICAgICAo+QtreSApOUlZaXmJmaApsCApydnp8CAgICAgICAgICVVV1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFVVVVUVAFBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUBAAAAAAAAAAAAABBBEFVVVVVVV1VVVVVVVVVVVVFVVQAAQFT13VVVVVVVVVVVFQAAAAAAVVVVVfxdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFABQAFARQVVVVVVVVVRVRVVVVVVVVVQAAAAAAAEBVVVVVVVVVVVXVV1VVVVVVVVVVVVVVBQAAVFVVVVVVVVVVVVVVVVUVAABVVVFVVVVVVQUQAAABAVBVVVVVVVVVVVVVAVVVVVVV/////39VVVVQFQAAVVVVVVVVVVVVVQUAAAAAAAAAAAAAAAAAQFVVVVVVVVVVVVVVVVVFVAEAVFEBAFVVBVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVEAVRVUVUVVVUFVVVVVVVVRUFVVVVVVVVVVVVVVVVVVVRBFRRQUVVVVVVVVVVQUVVVQVVVVVVVVVVVVVVVVVVVVAEQVFFVVVVVBVVVVVVVBQBRVVVVVVVVVVVVVVVVVVUEAVRVUVUBVVUFVVVVVVVVVUVVVVVVVVVVVVVVVVVVVUVUVVVRVRVVVVVVVVVVVVVVVFRVVVVVVVVVVVVVVVVVBFQFBFBVQVVVBVVVVVVVVVVRVVVVVVVVVVVVVVVVVVUURAUEUFVBVVUFVVVVVVVVVVBVVVVVVVVVVVVVVVVVFUQBVFVBVRVVVQVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVRRUFRFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVRAEBVVRUAQFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVEAAFRVVQBAVVVVVVVVVVVVVVVVVVVVVVVVUFVVVVVVVRFRVVVVVVVVVVVVVVVVVQEAAEAABFUBAAABAAAAAAAAAABUVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAQQAQUFVVVVVVVVQBVRVVVUBVFVVRUFVUVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUBVVVVVVVVVVVVVVVVBVBVVVVVVVUFVFVVVVVVVQVVVVVVVVVVBVVVVX///ff//ddfd9bV11UQAFBVRQEAAFVXUVVVVVVVVVVVVVUVAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQVVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBVUVUVVAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVcVFFVVVVVVVVVVVVVVVVVVRQBARAEAVBUAABRVVVVVVVVVVVVVVVUAAAAAAAAAQFVVVVVVVVVVVVVVVQBVVVVVVVVVVVVVVVUAAFAFVFVVVVVVVVVVFQAAVVVVUFVVVVVVVVUFUABQVVVVVVVVVVVVVVVVVUVQEQBVVVVVVVVVVVVVVVVVVQAABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAAAQAVFFVVFBVVVVVVVVVVVVVVVVVVVVVVQAAAAAAAAAAAAAAAAAAAABVVRUAVVVVVVVVBUBVVVVVVVVVVVVVVVUAAAAAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAAAAAAAABUVVVVVVVVVVVV9VVVVWlVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf1X11VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV9VVVVVVVfVVVVVVVVqqpVVVVV////VVVVVVVVVVVVVdVVVaWq1VVVVV1V9VVVVVV9VV9VdVVXVVVVVXVV9V11XVVd9VVVVVVVVVVXVVVVVVVVVVV31d9VVVVVVVVVVVVVVVVVVVX9VVVVVVVVV1VV1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVXVV1VVVVVVVVVVVVVVVVddVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVQVVVVVVVVVVVVVVVVVVVV/f///////////////19V1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAAAAAAAAAKqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqVVVVqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpaVVVVVVVVqqqqqqqqqqqqqqqqqqoKAKqqqmqpqqqqqqqqqqqqqqqqqqqqqqqqqqpqgaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpVqaqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqKqqqqqqqqqqqmqqqqqqqqqqqqqqqqqqqqqqqqqqqqpaVZWqqqqqqqqqqqqqqmqqqqqqqqqqqqqqVVWqqqqqqqqqqqqqqqqqqqpWqqqqqqqqqqqqqqqqqmpVVVVVVVVVVVVVVVVVX1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVAAABQVVVVVVVVVQVVVVVVVVVVVVVVVVVVVVVVVVVVVVBVVVVFRRVVVVVVVVVBVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFVVVVVVVQAAAABQVUUVVVVVVVVVVVVVBQBQVVVVVVUVAAAQVVVVqqqqqqqqqlZAVVVVVVVVVVVVVVUVBVBQVFVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVUBQEFBVVUVVVVUVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVBBRUBVFVVVVVVVVVVVVVUFVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVRRVVVVVaqqqqqqqqqqqlVVVQAAAAAAQBUAAAAAAAAAAAAAAABVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUMAADwqqpaVQAAAACqqqqqqqqqqmqqqqqqaqpVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVqaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqVlVVVVVVVVVVVVVVVVVVBVRVVVVVVVVVVVVVVVVVVVWqalVVAABUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQVAVQFBVQBVVVVVVVVVVVVVQBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFVVVVVVVXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBVVVVVVVVVVVVVVVVVVVVVAVBVVVVVVVVVVVVVVVVVVRVUVVVVVVVVVVVVVVVVVVVVVVVVVQBVVVVVVVVVVVVVVVVVVVVVVQUAAFRVVVVVVVVVVVVVVQVQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVVUAAABAVVVVVVVVVVVVVRRUVRVQVVVVVVVVVVVVVVUVQEFVRVVVVVVVVVVVVVVVVVVVVUBVVVVVVVVVVRUAAQBUVVVVVVVVVVVVVVVVVVUVVVVVUFVVVVVVVVVVVVVVVQUAQARVARRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVQAFVFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFRUAQFVVVVVVUFVVVVVVVVVVVVVVVVUVRFRVVVFVFVVVVQUAVABUVVVVVVVVVVVVVVVVVVVVVRQARBFQBUBVVVVBVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAFRFVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVFABEEQRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRUFUFUQVFVVVVVVVVBVVVVVVVVVVVVVVVVVVVVVVVVVVRUAQBFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVRAABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVEQUQAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFQAAQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFUVABFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUABVVUVVVVVVVVVQEAQFVVVVVVVVVVVRUABEBVFVVVAUABVVVVVVVVVVVVVQAAAABAUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAQAAQVVVVVVVVVVVVVVVVVVVVVVVVVVUFAAAAAAAFAARBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAUBFEAAAVVVVVVVVVVVVVVVVVVVVVVVVUBFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVFVVQFVVVVVVVVVVVVVVVQVAVUBVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBUAAABQVVVVVVVVVVVVVVVVVVVVVVUFAABQAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBUVVVVVVVVVVVVVVVVVVUAQFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVXVV1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVUVQFVVVVVVVVVVVVVVVVVVVVVVVVWqVFVVUFVVVaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlVVqqqqqqqqqqqqqqqqqqqqqqqqqqqqWlVVVVVVVVVVVZWqqlZVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWqqappqqqqqqqqqqpqVVVVZVVVVVVVVVVqWVVVVapVVaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqVVVVVVVVVVVBAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAAAAAAAAAAAABQAAAAAABAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAVABAAAAAEABAFVVVVVVVVUFUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQVUVVVVVVVVVVVVVVVVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqpqVVWqqqqqqmpVVQAAAAAAAAAAAAAAAABAFQAAAAAAAAAAAAAAAFRVUVVVVVRVVVVVFQABAAAAVVVVVVVVVVVVVVVVVVVVVVVVVVUAQAAAAAAUABAEQFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAQFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBAVVVVVVVVVVVVVVVVVVVXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVdVVVVVVVVVVVVVVVVVVVVV1/f9/VVVVVVVVVVVVVVVVVVVVVVVV9f///////25VVVWqqrqqqqqq6vq/v1WqqlZVX1VVVapaVVVVVVVV//////////9XVVX9/9////////////////////////f//////1VVVf////////////9/1f9VVVX/////V1f//////////////////////3/3/////////////////////////////////////////////////////////////9f///////////////////9fVVXVf////////1VVVVV1VVVVVVVVfVVVVVdVVVVVVVVVVVVVVVVVVVVVVVVVVdX///////////////////////////9VVVVVVVVVVVVVVVX//////////////////////19VV3/9Vf9VVdVXVf//V1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf///1VXVVVVVVVV//////////////9////f/////////////////////////////////////////////////////////////1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX///9X//9f1f////////////////9/VfX////X//9fVf//V1WqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqWlVVVVVVVVVVWZZVYaqlWapVVVVVVZVVVVVVVVVVlVVVAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAFVVVVVVlVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFQCWalpaaqoFQKZZlWVVVVVVVVVVVQAAAABVVlVVqVZVVVVVVVVVVVVWVVVVVVVVVVUAAAAAAAAAAFRVVVWVWVlVVWVVVWlVVVVVVVVVVVVVVaqqqmqqqqpVqqpaVVVVWVWqqqpVVVVVZVVVWlVVVVWlZVZVVVWVVVVVVVVVppaalllZZamWqqpmVapVWllVWlZlVVVVaqqlpVpVVVWlqlpVVVlZVVVZVVVVVVWVVVVVVVVVVVVVVVVVVVVVVVVVVVVlVfVVVVVpVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqVaqqqqqqqqqqqlZVVaqqqqqlWlVVmqpaVaWlVVpapZalWlVVVaVaVZVVVVV9VWlZpVWvVWZVVVVVqqpVVWZV////VVVVmppqmlVVVdVVVaWq1VVVpV1V9VVVVVW9Va+quqqrqqqaVbqq+q66rlVd9VVVVVVVVVVXVVVVVVlVVVV31d9VVVVVVVVVpaqqqqqqqqr9VVVVVVVVV1VV1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVXVV1VVVVVVVVVVVVVVVVetWlVVVVVVVVVVVaqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAwAAwKqqWlUAAAAAqqqqqqqqqqpqqqqqqmqqVVVVVVVVVVVVVVVVBVRVVVVVVVVVVVVVVVVVVVWqalVVAABUWaqqqlaqqqqqqqqqWqqqqqqqqqqqqqqqqqqqWlWqqqqqqqqquv7/v6qqqqpWVVVVVVVVVVVVVVVVVfX///////9pBQAADAAAAAQAAABkBAAAGgUAAGYEAAAwMTIzNDU2Nzg5YWJjZGVmL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvdXVpZC0xLjE3LjAvc3JjL2ZtdC5ycwCofScAWwAAALsAAAANAAAAqH0nAFsAAACzAAAAFQAAAKh9JwBbAAAAtgAAAA0AAACofScAWwAAALcAAAANAAAAFH8nAFAAAAAuAgAAEQAAAEpzVmFsdWUoKQAAAFR+JwAIAAAAXH4nAAEAAAD//////////3B+JwAAAAAAAAAAAAAAAAAvcnVzdGMvMmU2ODgyYWM1YmUyN2E3MzI5M2Q2ZjdhZTU2Mzk3ZmRmMzI4NDhkZS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAIh+JwBPAAAAGQEAABkAAABUcmllZCB0byBzaHJpbmsgdG8gYSBsYXJnZXIgY2FwYWNpdHnoficAJAAAAC9ydXN0Yy8yZTY4ODJhYzViZTI3YTczMjkzZDZmN2FlNTYzOTdmZGYzMjg0OGRlL2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzFH8nAFAAAAC5AgAACQAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3dhc20tYmluZGdlbi0wLjIuMTAwL3NyYy9jb252ZXJ0L3NsaWNlcy5ycy9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3dhc20tYmluZGdlbi0wLjIuMTAwL3NyYy9jYWNoZS9pbnRlcm4ucnPjfycAbQAAABoAAAArAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLWZ1dHVyZXMtMC40LjUwL3NyYy9xdWV1ZS5ycwAAAGCAJwBtAAAAJQAAAC4AAABggCcAbQAAACgAAAApAAAAYIAnAG0AAAA+AAAAGgAAAGCAJwBtAAAAPgAAACcAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93YXNtLWJpbmRnZW4tZnV0dXJlcy0wLjQuNTAvc3JjL3Rhc2svc2luZ2xldGhyZWFkLnJzAAAAEIEnAHkAAAAiAAAAFQAAAGwFAABtBQAAbgUAAG8FAAAQgScAeQAAAGcAAAAlAAAAY2xvc3VyZSBpbnZva2VkIHJlY3Vyc2l2ZWx5IG9yIGFmdGVyIGJlaW5nIGRyb3BwZWQAAHAFAAAEAAAABAAAAHEFAAByBQAATGF6eSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAAAEgicAKgAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4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AAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAmqogAKKqIACqqiAAsqogALqqIADCqiAAyqogANKqIADaqiAA4qogAOqqIADyqiAA+qogAAKrIAAKqyAAEqsgABqrIAAiqyAAKqsgADKrIAA6qyAAQqsgAEqrIABSqyAAWqsgAGKrIABqqyAAcqsgAHqrIACCqyAAiqsgAJKrIACaqyAAoqsgAKqrIACyqyAAuqsgAMKrIADKqyAA0qsgANqrIADiqyAA6qsgAPKrIAD6qyAAAqwgAAqsIAASrCAAGqwgACKsIAAqrCAAMqwgADqsIABCrCAASqwgAFKsIABarCAAYqwgAGqsIAByrCAAeqwgAIKsIACKrCAAkqwgAJqsIACirCAAqqwgALKsIAC6rCAAwqwgAMqsIADSrCAA2qwgAOKsIADqrCAA8qwgAPqsIAACrSAACq0gABKtIAAarSAAIq0gACqtIAAyrSAAOq0gAEKtIABKrSAAUq0gAFqtIABirSAAaq0gAHKtIAB6rSAAgq0gAIqtIACSrSAAmq0gAKKtIACqrSAAsq0gALqtIADCrSAAyq0gANKtIADarSAA4q0gAOqtIADyrSAA+q0gAAKuIAAKriAAEq4gABquIAAiriAAKq4gADKuIAA6riAAQq4gAEquIABSriAAWq4gAGKuIABqriAAcq4gAHquIACCriAAiq4gAJKuIAAIpyAADqcgABSnIAAapyAAIKcgACanIAAspyAAMqcgADinIAA+pyAARKcgAEunIABSpyAAWacgAGCnIABnpyAAbqcgAHWnIAB8pyAAg6cgAIqnIACRpyAAmKcgAJ+nIACmpyAAracgALSnIAC7pyAAwqcgAMmnIADQpyAA16cgAN6nIADlpyAA7KcgAPOnIAD6pyAAAaggAAioIAAPqCAAFqggAB2oIAAkqCAAK6ggADKoIAA5qCAAQKggAEeoIABOqCAAVaggAFyoIABjqCAAaqggAHGoIAB4qCAAf6ggAIaoIACNqCAAlKggAJuoIACiqCAAqaggALCoIAC3qCAAvqggAMWoIADMqCAA06ggANqoIADhqCAA6KggAO+oIAD2qCAA/aggAASpIAALqSAAEqkgABmpIAAgqSAAJ6kgAC6pIAA1qSAAPKkgAEOpIABKqSAAUakgAFipIABfqSAAZqkgAG2pIAB0qSAAe6kgAIKpIACJqSAAkKkgAJepIACeqSAApakgAKypIACzqSAAuqkgAMKpIADKqSAA0qkgANqpIADiqSAA6qkgAPKpIAD6qSAAAqogAAqqIAASqiAAGqogACKqIAAqqiAAMqogADqqIABCqiAASqogAFKqIABaqiAAYqogAGqqIAByqiAAeqogAIKqIACKqiAAkqogAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAjrYgAJC2IACStiAAlLYgAJa2IACYtiAAmrYgAJy2IACetiAAoLYgAKO2IACmtiAAqbYgAKy2IACvtiAAsrYgALW2IAD4xiAACMcgABjHIAAoxyAAKMcgADjHIABIxyAAWMcgAGjHIAB4xyAAiMcgAJjHIACoxyAAuMcgAMjHIADYxyAA6McgAPjHIAAIyCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGi/IAB4vyAAiL8gAJi/IACovyAAuL8gAMi/IADYvyAA6L8gAPi/IAAIwCAAGMAgACjAIAA4wCAASMAgAFjAIABowCAAeMAgAIjAIACYwCAAqMAgALjAIADIwCAA2MAgANjAIADowCAA+MAgAAjBIAAYwSAAKMEgADjBIABIwSAAWMEgAGjBIAB4wSAAiMEgAIjBIACYwSAAqMEgALjBIADIwSAA2MEgANjBIADowSAA+MEgAAjCIAAYwiAAKMIgADjCIABIwiAAWMIgAGjCIAB4wiAAeMIgAIjCIACYwiAAqMIgALjCIADIwiAA2MIgAOjCIAD4wiAACMMgABjDIAAowyAAOMMgAEjDIABYwyAAaMMgAHjDIACIwyAAiMMgAJjDIACowyAAuMMgAMjDIADYwyAA6MMgAOjDIAD4wyAACMQgABjEIAAoxCAAOMQgACjCIABIxCAAWMQgAGjEIAB4xCAAiMQgAJjEIACoxCAAuMQgAMjEIADYxCAA6MQgAPjEIAAIxSAAGMUgACjFIAA4xSAASMUgAFjFIABoxSAAeMUgAIjFIACYxSAAqMUgALjFIADIxSAA2MUgAOjFIAD4xSAACMYgABjGIAAoxiAAOMYgAEjGIABYxiAAaMYgAHjGIACIxiAAmMYgAKjGIAC4xiAAyMYgANjGIADoxiAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAACyyIAA0siAAPLIgAESyIABMsiAAVLIgAFyyIABksiAAbLIgAHSyIAB8siAAhLIgAIyyIACUsiAAnLIgAKSyIACssiAAtLIgALyyIADEsiAAzLIgANSyIADcsiAA5LIgAOyyIAD0siAA/LIgAASzIAAMsyAAFLMgAByzIAAksyAALLMgADSzIAA8syAARLMgAEyzIABUsyAAXLMgAGSzIABssyAAdLMgAHyzIACEsyAAjLMgAJSzIACcsyAApLMgAKyzIAC0syAAvLMgAMSzIADMsyAA1LMgANyzIADksyAA7LMgAPSzIAD8syAABLQgAAy0IAAUtCAAHLQgACS0IAAstCAANLQgADy0IABEtCAATLQgAFS0IABctCAAZLQgAGy0IAB0tCAAfLQgAIS0IACMtCAAlLQgAJy0IACktCAArLQgALS0IAC8tCAAxLQgAMy0IADUtCAA3LQgAOS0IADstCAA9LQgAPy0IAAEtSAADLUgABS1IAActSAAJLUgACy1IAA0tSAAPLUgAES1IABMtSAAVLUgAFy1IABktSAAbLUgAHS1IAB8tSAAhLUgAIy1IACUtSAAnLUgAKS1IACstSAAtLUgALy1IADEtSAAzLUgANS1IADctSAA5LUgAOy1IAD0tSAA/LUgAAS2IAAMtiAAFLYgABy2IAAktiAAmq4gAKCuIACmriAArK4gALKuIAC4riAAvq4gAMSuIADKriAA0K4gANauIADdriAA5K4gAOuuIADyriAA+a4gAACvIAAHryAADq8gABWvIAAcryAAI68gACqvIAAxryAAOK8gAD+vIABGryAATa8gAFSvIABbryAAYq8gAGmvIABwryAAd68gAH6vIACFryAAjK8gAJOvIACaryAAoa8gAKivIACvryAAtq8gAL2vIADE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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHMEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIUEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIYEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIYEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIYEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIcEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIcEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIcEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIcEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIcEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIcEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIcEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIkEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIkEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIUEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIUEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIoEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHYEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHcEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJMEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJUEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJYEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJcEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJkEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJoEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJsEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4FAAAAAAAAAAAAAAAAAAAAAAAAEgUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAABrBQAAAEoEbmFtZQFDAjweX193YmluZGdlbl9jbG9zdXJlX3dyYXBwZXI2NDQzgCsfX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcgA8CXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AgZ3YWxydXMGMC4yMy4zDHdhc20tYmluZGdlbgcwLjIuMTAw", "base64"); var wasmModule = new WebAssembly.Module(bytes); var wasmInstance = new WebAssembly.Instance(wasmModule, imports); wasm = wasmInstance.exports; diff --git a/deps/amaro/dist/package.json b/deps/amaro/dist/package.json index 80f3408a448a8b..7252a093299df2 100644 --- a/deps/amaro/dist/package.json +++ b/deps/amaro/dist/package.json @@ -4,7 +4,7 @@ "강동윤 " ], "description": "wasm module for swc", - "version": "1.12.1", + "version": "1.13.5", "license": "Apache-2.0", "repository": { "type": "git", diff --git a/deps/amaro/lib/wasm.d.ts b/deps/amaro/lib/wasm.d.ts index d5d4c4660c3174..3f7ffbacc3fda3 100644 --- a/deps/amaro/lib/wasm.d.ts +++ b/deps/amaro/lib/wasm.d.ts @@ -43,6 +43,20 @@ interface TransformConfig { * Defaults to false. */ tsEnumIsMutable?: boolean; + + /** + * Available only on nightly builds. + */ + jsx?: JsxConfig; +} + +interface JsxConfig { + /** + * How to transform JSX. + * + * @default "react-jsx" + */ + transform?: "react-jsx" | "react-jsxdev"; } diff --git a/deps/amaro/package.json b/deps/amaro/package.json index 6c56e76e3ddde0..7669ba5ae45294 100644 --- a/deps/amaro/package.json +++ b/deps/amaro/package.json @@ -1,6 +1,6 @@ { "name": "amaro", - "version": "1.1.0", + "version": "1.1.2", "description": "Node.js TypeScript wrapper", "license": "MIT", "type": "commonjs", diff --git a/deps/googletest/include/gtest/gtest-typed-test.h b/deps/googletest/include/gtest/gtest-typed-test.h index 442e00bd3478a5..ae24f94915d004 100644 --- a/deps/googletest/include/gtest/gtest-typed-test.h +++ b/deps/googletest/include/gtest/gtest-typed-test.h @@ -48,15 +48,15 @@ template class FooTest : public testing::Test { public: ... - typedef std::list List; + using List = ::std::list; static T shared_; T value_; }; // Next, associate a list of types with the test suite, which will be -// repeated for each type in the list. The typedef is necessary for +// repeated for each type in the list. The using-declaration is necessary for // the macro to parse correctly. -typedef testing::Types MyTypes; +using MyTypes = ::testing::Types; TYPED_TEST_SUITE(FooTest, MyTypes); // If the type list contains only one type, you can write that type @@ -157,7 +157,7 @@ REGISTER_TYPED_TEST_SUITE_P(FooTest, // argument to the INSTANTIATE_* macro is a prefix that will be added // to the actual test suite name. Remember to pick unique prefixes for // different instances. -typedef testing::Types MyTypes; +using MyTypes = ::testing::Types; INSTANTIATE_TYPED_TEST_SUITE_P(My, FooTest, MyTypes); // If the type list contains only one type, you can write that type diff --git a/deps/googletest/include/gtest/gtest.h b/deps/googletest/include/gtest/gtest.h index cbe680c1adb266..69994ee9dc3a36 100644 --- a/deps/googletest/include/gtest/gtest.h +++ b/deps/googletest/include/gtest/gtest.h @@ -1610,6 +1610,8 @@ GTEST_API_ AssertionResult DoubleNearPredFormat(const char* expr1, double val1, double val2, double abs_error); +using GoogleTest_NotSupported_OnFunctionReturningNonVoid = void; + // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // A class that enables one to stream messages to assertion macros class GTEST_API_ AssertHelper { @@ -1621,7 +1623,8 @@ class GTEST_API_ AssertHelper { // Message assignment is a semantic trick to enable assertion // streaming; see the GTEST_MESSAGE_ macro below. - void operator=(const Message& message) const; + GoogleTest_NotSupported_OnFunctionReturningNonVoid operator=( + const Message& message) const; private: // We put our data in a struct so that the size of the AssertHelper class can diff --git a/deps/histogram/include/hdr/hdr_histogram_version.h b/deps/histogram/include/hdr/hdr_histogram_version.h index a9a4300170875a..ad6a118f5a771e 100644 --- a/deps/histogram/include/hdr/hdr_histogram_version.h +++ b/deps/histogram/include/hdr/hdr_histogram_version.h @@ -7,6 +7,6 @@ #ifndef HDR_HISTOGRAM_VERSION_H #define HDR_HISTOGRAM_VERSION_H -#define HDR_HISTOGRAM_VERSION "0.11.8" +#define HDR_HISTOGRAM_VERSION "0.11.9" #endif // HDR_HISTOGRAM_VERSION_H diff --git a/deps/histogram/src/hdr_histogram.c b/deps/histogram/src/hdr_histogram.c index 7a4c4fdfa30ff6..c620045cb174b2 100644 --- a/deps/histogram/src/hdr_histogram.c +++ b/deps/histogram/src/hdr_histogram.c @@ -341,10 +341,10 @@ static int32_t buckets_needed_to_cover_value(int64_t value, int32_t sub_bucket_c /* ## ## ######## ## ## ####### ## ## ## */ int hdr_calculate_bucket_config( - int64_t lowest_discernible_value, - int64_t highest_trackable_value, - int significant_figures, - struct hdr_histogram_bucket_config* cfg) + int64_t lowest_discernible_value, + int64_t highest_trackable_value, + int significant_figures, + struct hdr_histogram_bucket_config* cfg) { int32_t sub_bucket_count_magnitude; int64_t largest_value_with_single_unit_resolution; @@ -406,10 +406,10 @@ void hdr_init_preallocated(struct hdr_histogram* h, struct hdr_histogram_bucket_ } int hdr_init( - int64_t lowest_discernible_value, - int64_t highest_trackable_value, - int significant_figures, - struct hdr_histogram** result) + int64_t lowest_discernible_value, + int64_t highest_trackable_value, + int significant_figures, + struct hdr_histogram** result) { int64_t* counts; struct hdr_histogram_bucket_config cfg; @@ -492,13 +492,12 @@ bool hdr_record_values(struct hdr_histogram* h, int64_t value, int64_t count) { int32_t counts_index; - if (value < 0) + if (value < 0 || h->highest_trackable_value < value) { return false; } counts_index = counts_index_for(h, value); - if (counts_index < 0 || h->counts_len <= counts_index) { return false; @@ -514,7 +513,7 @@ bool hdr_record_values_atomic(struct hdr_histogram* h, int64_t value, int64_t co { int32_t counts_index; - if (value < 0) + if (value < 0 || h->highest_trackable_value < value) { return false; } diff --git a/deps/openssl/config/archs/BSD-x86/asm/apps/progs.c b/deps/openssl/config/archs/BSD-x86/asm/apps/progs.c index 43cef00799b86e..acc204a3e6e781 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/apps/progs.c +++ b/deps/openssl/config/archs/BSD-x86/asm/apps/progs.c @@ -89,6 +89,7 @@ FUNCTION functions[] = { {FT_general, "s_time", s_time_main, s_time_options, NULL, NULL}, #endif {FT_general, "sess_id", sess_id_main, sess_id_options, NULL, NULL}, + {FT_general, "skeyutl", skeyutl_main, skeyutl_options, NULL, NULL}, {FT_general, "smime", smime_main, smime_options, NULL, NULL}, {FT_general, "speed", speed_main, speed_options, NULL, NULL}, {FT_general, "spkac", spkac_main, spkac_options, NULL, NULL}, @@ -225,9 +226,15 @@ FUNCTION functions[] = { {FT_cipher, "camellia-256-ecb", enc_main, enc_options, NULL}, #endif {FT_cipher, "base64", enc_main, enc_options, NULL}, -#ifdef ZLIB +#ifndef OPENSSL_NO_ZLIB {FT_cipher, "zlib", enc_main, enc_options, NULL}, #endif +#ifndef OPENSSL_NO_BROTLI + {FT_cipher, "brotli", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ZSTD + {FT_cipher, "zstd", enc_main, enc_options, NULL}, +#endif #ifndef OPENSSL_NO_DES {FT_cipher, "des", enc_main, enc_options, NULL}, #endif diff --git a/deps/openssl/config/archs/BSD-x86/asm/configdata.pm b/deps/openssl/config/archs/BSD-x86/asm/configdata.pm index 2d6abc8184cdff..f019538bfaea44 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/configdata.pm +++ b/deps/openssl/config/archs/BSD-x86/asm/configdata.pm @@ -18,6 +18,7 @@ our %config = ( "ARFLAGS" => [ "qc" ], + "ASFLAGS" => [], "CC" => "gcc", "CFLAGS" => [ "-Wall -O3 -fomit-frame-pointer" @@ -27,14 +28,16 @@ our %config = ( "CPPINCLUDES" => [], "CXXFLAGS" => [], "FIPSKEY" => "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813", + "FIPS_VENDOR" => "OpenSSL FIPS Provider", "HASHBANGPERL" => "/usr/bin/env perl", "LDFLAGS" => [], "LDLIBS" => [], + "OBJCOPY" => "objcopy", "PERL" => "/usr/bin/perl", "RANLIB" => "ranlib", "RC" => "windres", "RCFLAGS" => [], - "api" => "30000", + "api" => "30500", "b32" => "1", "b64" => "0", "b64l" => "0", @@ -56,11 +59,13 @@ our %config = ( "doc/build.info", "test/build.info", "engines/build.info", + "exporters/build.info", "crypto/objects/build.info", "crypto/buffer/build.info", "crypto/bio/build.info", "crypto/stack/build.info", "crypto/lhash/build.info", + "crypto/hashtable/build.info", "crypto/rand/build.info", "crypto/evp/build.info", "crypto/asn1/build.info", @@ -78,6 +83,7 @@ our %config = ( "crypto/md5/build.info", "crypto/sha/build.info", "crypto/mdc2/build.info", + "crypto/ml_kem/build.info", "crypto/hmac/build.info", "crypto/ripemd/build.info", "crypto/whrlpool/build.info", @@ -119,11 +125,19 @@ our %config = ( "crypto/cmp/build.info", "crypto/encode_decode/build.info", "crypto/ffc/build.info", + "crypto/hpke/build.info", + "crypto/thread/build.info", + "crypto/ml_dsa/build.info", + "crypto/slh_dsa/build.info", + "ssl/record/build.info", + "ssl/rio/build.info", + "ssl/quic/build.info", "apps/lib/build.info", "providers/common/build.info", "providers/implementations/build.info", "providers/fips/build.info", "doc/man1/build.info", + "ssl/record/methods/build.info", "providers/common/der/build.info", "providers/implementations/digests/build.info", "providers/implementations/ciphers/build.info", @@ -137,6 +151,7 @@ our %config = ( "providers/implementations/encode_decode/build.info", "providers/implementations/storemgmt/build.info", "providers/implementations/kem/build.info", + "providers/implementations/skeymgmt/build.info", "providers/implementations/rands/seeding/build.info" ], "build_metadata" => "", @@ -156,7 +171,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.17", + "full_version" => "3.5.2", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -165,36 +180,51 @@ our %config = ( "libdir" => "", "major" => "3", "makedep_scheme" => "gcc", - "minor" => "0", + "minor" => "5", "openssl_api_defines" => [ - "OPENSSL_CONFIGURED_API=30000" + "OPENSSL_CONFIGURED_API=30500" ], "openssl_feature_defines" => [ "OPENSSL_RAND_SEED_OS", "OPENSSL_THREADS", "OPENSSL_NO_AFALGENG", "OPENSSL_NO_ASAN", + "OPENSSL_NO_BROTLI", + "OPENSSL_NO_BROTLI_DYNAMIC", "OPENSSL_NO_COMP", "OPENSSL_NO_CRYPTO_MDEBUG", "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE", + "OPENSSL_NO_DEMOS", "OPENSSL_NO_EC_NISTP_64_GCC_128", "OPENSSL_NO_EGD", "OPENSSL_NO_EXTERNAL_TESTS", + "OPENSSL_NO_FIPS_JITTER", "OPENSSL_NO_FUZZ_AFL", "OPENSSL_NO_FUZZ_LIBFUZZER", + "OPENSSL_NO_H3DEMO", + "OPENSSL_NO_HQINTEROP", + "OPENSSL_NO_JITTER", "OPENSSL_NO_KTLS", "OPENSSL_NO_LOADERENG", "OPENSSL_NO_MD2", "OPENSSL_NO_MSAN", + "OPENSSL_NO_PIE", "OPENSSL_NO_RC5", "OPENSSL_NO_SCTP", "OPENSSL_NO_SSL3", "OPENSSL_NO_SSL3_METHOD", + "OPENSSL_NO_SSLKEYLOG", + "OPENSSL_NO_TFO", "OPENSSL_NO_TRACE", "OPENSSL_NO_UBSAN", "OPENSSL_NO_UNIT_TEST", "OPENSSL_NO_UPLINK", "OPENSSL_NO_WEAK_SSL_CIPHERS", + "OPENSSL_NO_WINSTORE", + "OPENSSL_NO_ZLIB", + "OPENSSL_NO_ZLIB_DYNAMIC", + "OPENSSL_NO_ZSTD", + "OPENSSL_NO_ZSTD_DYNAMIC", "OPENSSL_NO_DYNAMIC_ENGINE" ], "openssl_other_defines" => [ @@ -202,11 +232,11 @@ our %config = ( ], "openssl_sys_defines" => [], "openssldir" => "", - "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "17", + "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", + "patch" => "2", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", - "perl_version" => "5.38.2", + "perl_version" => "5.34.0", "perlargv" => [ "no-comp", "no-shared", @@ -236,6 +266,7 @@ our %config = ( "LDLIBS" => undef, "MT" => undef, "MTFLAGS" => undef, + "OBJCOPY" => undef, "OPENSSL_LOCAL_CONFIG_DIR" => undef, "PERL" => undef, "RANLIB" => undef, @@ -255,11 +286,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "1 Jul 2025", + "release_date" => "5 Aug 2025", "shlib_version" => "3", "sourcedir" => ".", "target" => "BSD-x86", - "version" => "3.0.17" + "version" => "3.5.2" ); our %target = ( "AR" => "ar", @@ -267,6 +298,7 @@ our %target = ( "CC" => "cc", "CFLAGS" => "-Wall -O3 -fomit-frame-pointer", "HASHBANGPERL" => "/usr/bin/env perl", + "OBJCOPY" => "objcopy", "RANLIB" => "ranlib", "RC" => "windres", "_conf_fname_int" => [ @@ -277,6 +309,8 @@ our %target = ( "Configurations/shared-info.pl" ], "asm_arch" => "x86", + "bin_cflags" => "", + "bin_lflags" => "", "bn_ops" => "BN_LLONG", "build_file" => "Makefile", "build_scheme" => [ @@ -320,6 +354,8 @@ our %target = ( our @disablables = ( "acvp-tests", "afalgeng", + "apps", + "argon2", "aria", "asan", "asm", @@ -330,11 +366,14 @@ our @disablables = ( "autoload-config", "bf", "blake2", + "brotli", + "brotli-dynamic", "buildtest-c++", "bulk", "cached-fetch", "camellia", "capieng", + "winstore", "cast", "chacha", "cmac", @@ -343,11 +382,16 @@ our @disablables = ( "comp", "crypto-mdebug", "ct", + "default-thread-pool", + "demos", + "h3demo", + "hqinterop", "deprecated", "des", "devcryptoeng", "dgram", "dh", + "docs", "dsa", "dso", "dtls", @@ -357,6 +401,7 @@ our @disablables = ( "ec_nistp_64_gcc_128", "ecdh", "ecdsa", + "ecx", "egd", "engine", "err", @@ -364,10 +409,15 @@ our @disablables = ( "filenames", "fips", "fips-securitychecks", + "fips-post", + "fips-jitter", "fuzz-afl", "fuzz-libfuzzer", "gost", + "http", "idea", + "integrity-only-ciphers", + "jitter", "ktls", "legacy", "loadereng", @@ -375,6 +425,8 @@ our @disablables = ( "md2", "md4", "mdc2", + "ml-dsa", + "ml-kem", "module", "msan", "multiblock", @@ -383,10 +435,13 @@ our @disablables = ( "ocsp", "padlockeng", "pic", + "pie", "pinshared", "poly1305", "posix-io", "psk", + "quic", + "unstable-qlog", "rc2", "rc4", "rc5", @@ -400,7 +455,9 @@ our @disablables = ( "shared", "siphash", "siv", + "slh-dsa", "sm2", + "sm2-precomp", "sm3", "sm4", "sock", @@ -411,9 +468,13 @@ our @disablables = ( "ssl-trace", "static-engine", "stdio", + "sslkeylog", "tests", + "tfo", + "thread-pool", "threads", "tls", + "tls-deprecated-ec", "trace", "ts", "ubsan", @@ -424,6 +485,8 @@ our @disablables = ( "whirlpool", "zlib", "zlib-dynamic", + "zstd", + "zstd-dynamic", "ssl3", "ssl3-method", "tls1", @@ -444,32 +507,45 @@ our @disablables_int = ( our %disabled = ( "afalgeng" => "option", "asan" => "default", + "brotli" => "default", + "brotli-dynamic" => "default", "buildtest-c++" => "default", "comp" => "option", "crypto-mdebug" => "default", "crypto-mdebug-backtrace" => "default", + "demos" => "default", "dynamic-engine" => "cascade", "ec_nistp_64_gcc_128" => "default", "egd" => "default", "external-tests" => "default", + "fips-jitter" => "default", "fuzz-afl" => "default", "fuzz-libfuzzer" => "default", + "h3demo" => "default", + "hqinterop" => "default", + "jitter" => "default", "ktls" => "default", "loadereng" => "cascade", "md2" => "default", "msan" => "default", + "pie" => "default", "rc5" => "default", "sctp" => "default", "shared" => "option", "ssl3" => "default", "ssl3-method" => "default", + "sslkeylog" => "default", + "tfo" => "default", "trace" => "default", "ubsan" => "default", "unit-test" => "default", "uplink" => "no uplink_arch", "weak-ssl-ciphers" => "default", + "winstore" => "not-windows", "zlib" => "default", - "zlib-dynamic" => "default" + "zlib-dynamic" => "default", + "zstd" => "default", + "zstd-dynamic" => "default" ); our %withargs = (); our %unified_info = ( @@ -695,6 +771,11 @@ our %unified_info = ( "pod" => "1" } }, + "doc/man1/openssl-skeyutl.pod" => { + "doc/man1/openssl-skeyutl.pod.in" => { + "pod" => "1" + } + }, "doc/man1/openssl-smime.pod" => { "doc/man1/openssl-smime.pod.in" => { "pod" => "1" @@ -752,6 +833,21 @@ our %unified_info = ( } }, "generate" => { + "exporters/OpenSSLConfig.cmake" => { + "exporter" => "cmake" + }, + "exporters/OpenSSLConfigVersion.cmake" => { + "exporter" => "cmake" + }, + "exporters/libcrypto.pc" => { + "exporter" => "pkg-config" + }, + "exporters/libssl.pc" => { + "exporter" => "pkg-config" + }, + "exporters/openssl.pc" => { + "exporter" => "pkg-config" + }, "include/openssl/configuration.h" => { "skip" => "1" } @@ -772,6 +868,9 @@ our %unified_info = ( "providers/liblegacy.a" => { "noinst" => "1" }, + "providers/libtemplate.a" => { + "noinst" => "1" + }, "test/libtestutil.a" => { "has_main" => "1", "noinst" => "1" @@ -789,6 +888,9 @@ our %unified_info = ( } }, "programs" => { + "fuzz/acert-test" => { + "noinst" => "1" + }, "fuzz/asn1-test" => { "noinst" => "1" }, @@ -819,9 +921,60 @@ our %unified_info = ( "fuzz/ct-test" => { "noinst" => "1" }, + "fuzz/decoder-test" => { + "noinst" => "1" + }, + "fuzz/dtlsclient-test" => { + "noinst" => "1" + }, + "fuzz/dtlsserver-test" => { + "noinst" => "1" + }, + "fuzz/hashtable-test" => { + "noinst" => "1" + }, + "fuzz/ml-dsa-test" => { + "noinst" => "1" + }, + "fuzz/ml-kem-test" => { + "noinst" => "1" + }, + "fuzz/pem-test" => { + "noinst" => "1" + }, + "fuzz/provider-test" => { + "noinst" => "1" + }, + "fuzz/punycode-test" => { + "noinst" => "1" + }, + "fuzz/quic-client-test" => { + "noinst" => "1" + }, + "fuzz/quic-lcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-rcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-server-test" => { + "noinst" => "1" + }, + "fuzz/quic-srtm-test" => { + "noinst" => "1" + }, "fuzz/server-test" => { "noinst" => "1" }, + "fuzz/slh-dsa-test" => { + "noinst" => "1" + }, + "fuzz/smime-test" => { + "noinst" => "1" + }, + "fuzz/v3name-test" => { + "noinst" => "1" + }, "fuzz/x509-test" => { "noinst" => "1" }, @@ -873,18 +1026,30 @@ our %unified_info = ( "test/bftest" => { "noinst" => "1" }, + "test/bio_addr_test" => { + "noinst" => "1" + }, + "test/bio_base64_test" => { + "noinst" => "1" + }, "test/bio_callback_test" => { "noinst" => "1" }, "test/bio_core_test" => { "noinst" => "1" }, + "test/bio_dgram_test" => { + "noinst" => "1" + }, "test/bio_enc_test" => { "noinst" => "1" }, "test/bio_memleak_test" => { "noinst" => "1" }, + "test/bio_meth_test" => { + "noinst" => "1" + }, "test/bio_prefix_text" => { "noinst" => "1" }, @@ -894,6 +1059,9 @@ our %unified_info = ( "test/bio_readbuffer_test" => { "noinst" => "1" }, + "test/bio_tfo_test" => { + "noinst" => "1" + }, "test/bioprinttest" => { "noinst" => "1" }, @@ -903,6 +1071,9 @@ our %unified_info = ( "test/bntest" => { "noinst" => "1" }, + "test/build_wincrypt_test" => { + "noinst" => "1" + }, "test/buildtest_c_aes" => { "noinst" => "1" }, @@ -918,6 +1089,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => { "noinst" => "1" }, + "test/buildtest_c_byteorder" => { + "noinst" => "1" + }, "test/buildtest_c_camellia" => { "noinst" => "1" }, @@ -942,9 +1116,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => { "noinst" => "1" }, - "test/buildtest_c_core_names" => { - "noinst" => "1" - }, "test/buildtest_c_core_object" => { "noinst" => "1" }, @@ -969,6 +1140,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => { "noinst" => "1" }, + "test/buildtest_c_e_ostime" => { + "noinst" => "1" + }, "test/buildtest_c_ebcdic" => { "noinst" => "1" }, @@ -996,12 +1170,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => { "noinst" => "1" }, + "test/buildtest_c_hpke" => { + "noinst" => "1" + }, "test/buildtest_c_http" => { "noinst" => "1" }, "test/buildtest_c_idea" => { "noinst" => "1" }, + "test/buildtest_c_indicator" => { + "noinst" => "1" + }, "test/buildtest_c_kdf" => { "noinst" => "1" }, @@ -1017,6 +1197,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => { "noinst" => "1" }, + "test/buildtest_c_ml_kem" => { + "noinst" => "1" + }, "test/buildtest_c_modes" => { "noinst" => "1" }, @@ -1047,6 +1230,9 @@ our %unified_info = ( "test/buildtest_c_provider" => { "noinst" => "1" }, + "test/buildtest_c_quic" => { + "noinst" => "1" + }, "test/buildtest_c_rand" => { "noinst" => "1" }, @@ -1089,6 +1275,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => { "noinst" => "1" }, + "test/buildtest_c_thread" => { + "noinst" => "1" + }, "test/buildtest_c_tls1" => { "noinst" => "1" }, @@ -1104,6 +1293,12 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => { "noinst" => "1" }, + "test/byteorder_test" => { + "noinst" => "1" + }, + "test/ca_internals_test" => { + "noinst" => "1" + }, "test/casttest" => { "noinst" => "1" }, @@ -1188,6 +1383,9 @@ our %unified_info = ( "test/danetest" => { "noinst" => "1" }, + "test/decoder_propq_test" => { + "noinst" => "1" + }, "test/defltfips_test" => { "noinst" => "1" }, @@ -1260,15 +1458,24 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => { "noinst" => "1" }, + "test/evp_pkey_dhkem_test" => { + "noinst" => "1" + }, "test/evp_pkey_dparams_test" => { "noinst" => "1" }, "test/evp_pkey_provided_test" => { "noinst" => "1" }, + "test/evp_skey_test" => { + "noinst" => "1" + }, "test/evp_test" => { "noinst" => "1" }, + "test/evp_xof_test" => { + "noinst" => "1" + }, "test/exdatatest" => { "noinst" => "1" }, @@ -1296,6 +1503,9 @@ our %unified_info = ( "test/hmactest" => { "noinst" => "1" }, + "test/hpke_test" => { + "noinst" => "1" + }, "test/http_test" => { "noinst" => "1" }, @@ -1305,12 +1515,18 @@ our %unified_info = ( "test/igetest" => { "noinst" => "1" }, + "test/json_test" => { + "noinst" => "1" + }, "test/keymgmt_internal_test" => { "noinst" => "1" }, "test/lhash_test" => { "noinst" => "1" }, + "test/list_test" => { + "noinst" => "1" + }, "test/localetest" => { "noinst" => "1" }, @@ -1320,9 +1536,21 @@ our %unified_info = ( "test/mdc2test" => { "noinst" => "1" }, + "test/membio_test" => { + "noinst" => "1" + }, "test/memleaktest" => { "noinst" => "1" }, + "test/ml_dsa_test" => { + "noinst" => "1" + }, + "test/ml_kem_evp_extra_test" => { + "noinst" => "1" + }, + "test/ml_kem_internal_test" => { + "noinst" => "1" + }, "test/modes_internal_test" => { "noinst" => "1" }, @@ -1341,6 +1569,9 @@ our %unified_info = ( "test/packettest" => { "noinst" => "1" }, + "test/pairwise_fail_test" => { + "noinst" => "1" + }, "test/param_build_test" => { "noinst" => "1" }, @@ -1365,6 +1596,9 @@ our %unified_info = ( "test/pemtest" => { "noinst" => "1" }, + "test/pkcs12_api_test" => { + "noinst" => "1" + }, "test/pkcs12_format_test" => { "noinst" => "1" }, @@ -1380,6 +1614,9 @@ our %unified_info = ( "test/poly1305_internal_test" => { "noinst" => "1" }, + "test/priority_queue_test" => { + "noinst" => "1" + }, "test/property_test" => { "noinst" => "1" }, @@ -1389,6 +1626,9 @@ our %unified_info = ( "test/provfetchtest" => { "noinst" => "1" }, + "test/provider_default_search_path_test" => { + "noinst" => "1" + }, "test/provider_fallback_test" => { "noinst" => "1" }, @@ -1407,6 +1647,72 @@ our %unified_info = ( "test/punycode_test" => { "noinst" => "1" }, + "test/quic_ackm_test" => { + "noinst" => "1" + }, + "test/quic_cc_test" => { + "noinst" => "1" + }, + "test/quic_cfq_test" => { + "noinst" => "1" + }, + "test/quic_client_test" => { + "noinst" => "1" + }, + "test/quic_fc_test" => { + "noinst" => "1" + }, + "test/quic_fifd_test" => { + "noinst" => "1" + }, + "test/quic_lcidm_test" => { + "noinst" => "1" + }, + "test/quic_multistream_test" => { + "noinst" => "1" + }, + "test/quic_newcid_test" => { + "noinst" => "1" + }, + "test/quic_qlog_test" => { + "noinst" => "1" + }, + "test/quic_radix_test" => { + "noinst" => "1" + }, + "test/quic_rcidm_test" => { + "noinst" => "1" + }, + "test/quic_record_test" => { + "noinst" => "1" + }, + "test/quic_srt_gen_test" => { + "noinst" => "1" + }, + "test/quic_srtm_test" => { + "noinst" => "1" + }, + "test/quic_stream_test" => { + "noinst" => "1" + }, + "test/quic_tserver_test" => { + "noinst" => "1" + }, + "test/quic_txp_test" => { + "noinst" => "1" + }, + "test/quic_txpim_test" => { + "noinst" => "1" + }, + "test/quic_wire_test" => { + "noinst" => "1" + }, + "test/quicapitest" => { + "noinst" => "1" + }, + "test/quicfaultstest" => { + "noinst" => "1" + }, "test/rand_status_test" => { "noinst" => "1" }, @@ -1422,12 +1728,15 @@ our %unified_info = ( "test/rc5test" => { "noinst" => "1" }, - "test/rdrand_sanitytest" => { + "test/rdcpu_sanitytest" => { "noinst" => "1" }, "test/recordlentest" => { "noinst" => "1" }, + "test/rpktest" => { + "noinst" => "1" + }, "test/rsa_complex" => { "noinst" => "1" }, @@ -1440,6 +1749,12 @@ our %unified_info = ( "test/rsa_test" => { "noinst" => "1" }, + "test/rsa_x931_test" => { + "noinst" => "1" + }, + "test/safe_math_test" => { + "noinst" => "1" + }, "test/sanitytest" => { "noinst" => "1" }, @@ -1455,6 +1770,9 @@ our %unified_info = ( "test/siphash_internal_test" => { "noinst" => "1" }, + "test/slh_dsa_test" => { + "noinst" => "1" + }, "test/sm2_internal_test" => { "noinst" => "1" }, @@ -1476,6 +1794,9 @@ our %unified_info = ( "test/ssl_ctx_test" => { "noinst" => "1" }, + "test/ssl_handshake_rtt_test" => { + "noinst" => "1" + }, "test/ssl_old_test" => { "noinst" => "1" }, @@ -1497,12 +1818,18 @@ our %unified_info = ( "test/stack_test" => { "noinst" => "1" }, + "test/strtoultest" => { + "noinst" => "1" + }, "test/sysdefaulttest" => { "noinst" => "1" }, "test/test_test" => { "noinst" => "1" }, + "test/threadpool_test" => { + "noinst" => "1" + }, "test/threadstest" => { "noinst" => "1" }, @@ -1512,12 +1839,18 @@ our %unified_info = ( "test/time_offset_test" => { "noinst" => "1" }, + "test/time_test" => { + "noinst" => "1" + }, "test/tls13ccstest" => { "noinst" => "1" }, "test/tls13encryptiontest" => { "noinst" => "1" }, + "test/tls13groupselection_test" => { + "noinst" => "1" + }, "test/trace_api_test" => { "noinst" => "1" }, @@ -1545,6 +1878,9 @@ our %unified_info = ( "test/wpackettest" => { "noinst" => "1" }, + "test/x509_acert_test" => { + "noinst" => "1" + }, "test/x509_check_cert_pkey_test" => { "noinst" => "1" }, @@ -1554,6 +1890,15 @@ our %unified_info = ( "test/x509_internal_test" => { "noinst" => "1" }, + "test/x509_load_cert_file_test" => { + "noinst" => "1" + }, + "test/x509_req_test" => { + "noinst" => "1" + }, + "test/x509_test" => { + "noinst" => "1" + }, "test/x509_time_test" => { "noinst" => "1" }, @@ -1656,6 +2001,9 @@ our %unified_info = ( "MD5_ASM", "RC4_ASM" ], + "test/endecode_test" => [ + "STATIC_LEGACY" + ], "test/evp_extra_test" => [ "STATIC_LEGACY" ], @@ -1668,14 +2016,21 @@ our %unified_info = ( }, "depends" => { "" => [ + "OpenSSLConfigVersion.cmake", + "crypto/params_idx.c", + "exporters/OpenSSLConfigVersion.cmake", + "exporters/openssl.pc", "include/crypto/bn_conf.h", "include/crypto/dso_conf.h", + "include/internal/param_names.h", "include/openssl/asn1.h", "include/openssl/asn1t.h", "include/openssl/bio.h", "include/openssl/cmp.h", "include/openssl/cms.h", + "include/openssl/comp.h", "include/openssl/conf.h", + "include/openssl/core_names.h", "include/openssl/crmf.h", "include/openssl/crypto.h", "include/openssl/ct.h", @@ -1692,10 +2047,22 @@ our %unified_info = ( "include/openssl/ssl.h", "include/openssl/ui.h", "include/openssl/x509.h", + "include/openssl/x509_acert.h", "include/openssl/x509_vfy.h", "include/openssl/x509v3.h", + "openssl.pc", "test/provider_internal_test.cnf" ], + "OpenSSLConfig.cmake" => [ + "builddata.pm" + ], + "OpenSSLConfigVersion.cmake" => [ + "OpenSSLConfig.cmake", + "builddata.pm" + ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/progs.h" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/progs.h" ], @@ -1841,6 +2208,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/progs.h" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/progs.h" + ], "apps/openssl-bin-smime.o" => [ "apps/progs.h" ], @@ -1929,6 +2299,9 @@ our %unified_info = ( "crypto/libcrypto-lib-info.o" => [ "crypto/buildinf.h" ], + "crypto/params_idx.c" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "crypto/rc4/rc4-586.S" => [ "crypto/perlasm/x86asm.pl" ], @@ -2094,6 +2467,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -2235,6 +2611,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -2271,6 +2650,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -2286,6 +2668,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -2358,6 +2743,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -2424,6 +2812,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -2523,6 +2914,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -2661,6 +3058,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -2778,6 +3178,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -2865,6 +3271,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -2937,9 +3346,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -2955,12 +3370,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -3030,9 +3451,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -3042,12 +3472,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -3063,9 +3505,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -3090,6 +3538,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -3105,6 +3556,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -3141,6 +3595,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -3414,6 +3871,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -3453,6 +3913,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -3474,6 +3937,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -3588,6 +4054,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -3615,9 +4084,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -3633,6 +4114,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -3642,12 +4126,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -3666,12 +4156,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -3681,9 +4183,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -3696,9 +4204,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -3714,24 +4234,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -3744,6 +4285,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -3753,8 +4300,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -3774,6 +4321,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -3822,6 +4384,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -3888,6 +4453,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -4011,9 +4579,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -4029,6 +4603,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -4053,9 +4630,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -4089,6 +4675,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -4146,15 +4735,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -4164,6 +4765,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -4185,9 +4789,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -4203,6 +4813,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -4215,9 +4828,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -4248,9 +4858,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -4266,12 +4873,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -4326,6 +4987,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -4335,9 +4999,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -4485,6 +5146,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -4626,6 +5290,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -4662,6 +5329,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -4677,6 +5347,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -4749,6 +5422,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -4815,6 +5491,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -4914,6 +5593,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -5052,6 +5737,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -5169,6 +5857,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -5256,6 +5950,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -5328,9 +6025,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -5346,12 +6049,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -5421,9 +6130,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -5433,12 +6151,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -5454,9 +6184,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -5481,6 +6217,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -5496,6 +6235,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -5532,6 +6274,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -5805,6 +6550,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -5844,6 +6592,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -5865,6 +6616,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -5979,6 +6733,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -6006,9 +6763,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -6024,6 +6793,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -6033,12 +6805,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -6057,12 +6835,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -6072,9 +6862,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -6087,9 +6883,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -6105,24 +6913,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -6135,6 +6964,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -6144,8 +6979,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -6165,6 +7000,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -6213,6 +7063,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -6279,6 +7132,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -6402,9 +7258,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -6420,6 +7282,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -6444,9 +7309,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -6480,6 +7354,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -6537,15 +7414,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -6555,6 +7444,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -6576,9 +7468,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -6594,6 +7492,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -6606,9 +7507,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -6639,9 +7537,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -6657,12 +7552,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -6717,6 +7666,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -6726,9 +7678,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -6908,6 +7857,10 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod.in", "doc/perlvars.pm" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in", + "doc/perlvars.pm" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in", "doc/perlvars.pm" @@ -6947,6 +7900,27 @@ our %unified_info = ( "doc/man7/openssl_user_macros.pod" => [ "doc/man7/openssl_user_macros.pod.in" ], + "exporters/OpenSSLConfig.cmake" => [ + "installdata.pm" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/OpenSSLConfig.cmake", + "installdata.pm" + ], + "exporters/libcrypto.pc" => [ + "installdata.pm" + ], + "exporters/libssl.pc" => [ + "installdata.pm" + ], + "exporters/openssl.pc" => [ + "exporters/libcrypto.pc", + "exporters/libssl.pc", + "installdata.pm" + ], + "fuzz/acert-test" => [ + "libcrypto" + ], "fuzz/asn1-test" => [ "libcrypto", "libssl" @@ -6979,17 +7953,85 @@ our %unified_info = ( "fuzz/ct-test" => [ "libcrypto" ], + "fuzz/decoder-test" => [ + "libcrypto" + ], + "fuzz/dtlsclient-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/dtlsserver-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/hashtable-test" => [ + "libcrypto.a" + ], + "fuzz/ml-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/ml-kem-test" => [ + "libcrypto.a" + ], + "fuzz/pem-test" => [ + "libcrypto.a" + ], + "fuzz/provider-test" => [ + "libcrypto" + ], + "fuzz/punycode-test" => [ + "libcrypto.a" + ], + "fuzz/quic-client-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-lcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-rcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-server-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-srtm-test" => [ + "libcrypto.a", + "libssl.a" + ], "fuzz/server-test" => [ "libcrypto", "libssl" ], + "fuzz/slh-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/smime-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/v3name-test" => [ + "libcrypto.a" + ], "fuzz/x509-test" => [ "libcrypto" ], + "include/internal/param_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], + "include/openssl/core_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "libcrypto.ld" => [ "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libcrypto.pc" => [ + "builddata.pm" + ], "libssl" => [ "libcrypto" ], @@ -6997,6 +8039,14 @@ our %unified_info = ( "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libssl.pc" => [ + "builddata.pm" + ], + "openssl.pc" => [ + "builddata.pm", + "libcrypto.pc", + "libssl.pc" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/DIGESTS.asn1", "providers/common/der/NIST.asn1", @@ -7014,11 +8064,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7058,6 +8116,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov/der_rsa.h" ], @@ -7065,6 +8129,12 @@ our %unified_info = ( "providers/common/include/prov/der_digests.h", "providers/common/include/prov/der_rsa.h" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov/der_wrap.h" ], @@ -7104,11 +8174,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7141,9 +8219,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov/der_sm2.h" ], @@ -7156,9 +8240,15 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/legacy" => [ "libcrypto", "providers/liblegacy.a" @@ -7236,6 +8326,14 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_addr_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/bio_base64_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_callback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7244,6 +8342,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_dgram_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_enc_test" => [ "libcrypto", "test/libtestutil.a" @@ -7252,6 +8354,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_meth_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_prefix_text" => [ "libcrypto", "test/libtestutil.a" @@ -7264,6 +8370,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_tfo_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bioprinttest" => [ "libcrypto", "test/libtestutil.a" @@ -7276,6 +8386,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/build_wincrypt_test" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_aes" => [ "libcrypto", "libssl" @@ -7296,6 +8410,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_byteorder" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_camellia" => [ "libcrypto", "libssl" @@ -7328,10 +8446,6 @@ our %unified_info = ( "libcrypto", "libssl" ], - "test/buildtest_c_core_names" => [ - "libcrypto", - "libssl" - ], "test/buildtest_c_core_object" => [ "libcrypto", "libssl" @@ -7364,6 +8478,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_e_ostime" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_ebcdic" => [ "libcrypto", "libssl" @@ -7400,6 +8518,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_hpke" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_http" => [ "libcrypto", "libssl" @@ -7408,6 +8530,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_indicator" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_kdf" => [ "libcrypto", "libssl" @@ -7428,6 +8554,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_ml_kem" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_modes" => [ "libcrypto", "libssl" @@ -7468,6 +8598,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_quic" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_rand" => [ "libcrypto", "libssl" @@ -7524,6 +8658,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_thread" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_tls1" => [ "libcrypto", "libssl" @@ -7544,10 +8682,23 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/byteorder_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ca_internals_test" => [ + "libssl", + "test/libtestutil.a" + ], "test/casttest" => [ "libcrypto", "test/libtestutil.a" ], + "test/cert_comp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/chacha_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7661,7 +8812,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], - "test/defltfips_test" => [ + "test/decoder_propq_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/defltfips_test" => [ "libcrypto", "test/libtestutil.a" ], @@ -7717,6 +8872,8 @@ our %unified_info = ( ], "test/endecode_test" => [ "libcrypto.a", + "providers/libcommon.a", + "providers/liblegacy.a", "test/libtestutil.a" ], "test/endecoder_legacy_test" => [ @@ -7760,6 +8917,10 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => [ "libcrypto" ], + "test/evp_pkey_dhkem_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/evp_pkey_dparams_test" => [ "libcrypto", "test/libtestutil.a" @@ -7768,10 +8929,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/evp_skey_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/evp_xof_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/exdatatest" => [ "libcrypto", "test/libtestutil.a" @@ -7810,6 +8979,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/hpke_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/http_test" => [ "libcrypto", "test/libtestutil.a" @@ -7822,17 +8995,25 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/json_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/keymgmt_internal_test" => [ "libcrypto.a", "test/libtestutil.a" ], "test/lhash_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/libtestutil.a" => [ "libcrypto" ], + "test/list_test" => [ + "test/libtestutil.a" + ], "test/localetest" => [ "libcrypto", "test/libtestutil.a" @@ -7845,10 +9026,26 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/membio_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/memleaktest" => [ "libcrypto", "test/libtestutil.a" ], + "test/ml_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_evp_extra_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_internal_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/modes_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7873,6 +9070,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pairwise_fail_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/param_build_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7905,6 +9106,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pkcs12_api_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/pkcs12_format_test" => [ "libcrypto", "test/libtestutil.a" @@ -7925,6 +9130,11 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/priority_queue_test" => [ + "libcrypto", + "libssl.a", + "test/libtestutil.a" + ], "test/property_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7937,6 +9147,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/provider_default_search_path_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/provider_fallback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7961,12 +9175,122 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/quic_ackm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cfq_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_client_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fifd_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_lcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_multistream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_newcid_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_qlog_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_radix_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_rcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_record_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srt_gen_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srtm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_stream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_tserver_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txpim_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_wire_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicapitest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicfaultstest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/rand_status_test" => [ "libcrypto", "test/libtestutil.a" ], "test/rand_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/rc2test" => [ @@ -7981,7 +9305,7 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "libcrypto.a", "test/libtestutil.a" ], @@ -7990,6 +9314,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/rpktest" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/rsa_mp_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8002,10 +9331,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/sanitytest" => [ + "test/rsa_x931_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/safe_math_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/sanitytest" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/secmemtest" => [ "libcrypto", "test/libtestutil.a" @@ -8023,6 +9360,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/slh_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/sm2_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8052,6 +9393,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/ssl_handshake_rtt_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/ssl_old_test" => [ "libcrypto.a", "libssl.a", @@ -8068,8 +9414,8 @@ our %unified_info = ( "test/libtestutil.a" ], "test/sslapitest" => [ - "libcrypto", - "libssl", + "libcrypto.a", + "libssl.a", "test/libtestutil.a" ], "test/sslbuffertest" => [ @@ -8086,6 +9432,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/strtoultest" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/sysdefaulttest" => [ "libcrypto", "libssl", @@ -8095,8 +9445,12 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/threadpool_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/threadstest" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/threadstest_fips" => [ @@ -8107,6 +9461,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/time_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/tls13ccstest" => [ "libcrypto", "libssl", @@ -8117,6 +9475,11 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/tls13groupselection_test" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/trace_api_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8154,6 +9517,10 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/x509_acert_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_check_cert_pkey_test" => [ "libcrypto", "test/libtestutil.a" @@ -8166,6 +9533,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/x509_load_cert_file_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_req_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_time_test" => [ "libcrypto", "test/libtestutil.a" @@ -8180,9 +9559,13 @@ our %unified_info = ( }, "dirinfo" => { "apps" => { + "deps" => [ + "apps/ca_internals_test-bin-ca.o" + ], "products" => { "bin" => [ - "apps/openssl" + "apps/openssl", + "test/ca_internals_test" ], "script" => [ "apps/CA.pl", @@ -8193,6 +9576,14 @@ our %unified_info = ( "apps/lib" => { "deps" => [ "apps/lib/openssl-bin-cmp_mock_srv.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", "apps/lib/cmp_client_test-bin-cmp_mock_srv.o", "apps/lib/uitest-bin-apps_ui.o", "apps/lib/libapps-lib-app_libctx.o", @@ -8201,12 +9592,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -8217,6 +9610,7 @@ our %unified_info = ( "products" => { "bin" => [ "apps/openssl", + "test/ca_internals_test", "test/cmp_client_test", "test/uitest" ], @@ -8228,8 +9622,12 @@ our %unified_info = ( }, "crypto" => { "deps" => [ + "crypto/asn1_time_test-bin-ctype.o", + "crypto/ca_internals_test-bin-ctype.o", + "crypto/packettest-bin-quic_vlint.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -8239,10 +9637,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -8259,6 +9660,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -8266,12 +9668,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libcrypto-lib-x86cpuid.o", @@ -8294,6 +9700,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -8302,9 +9709,15 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", "crypto/libfips-lib-x86cpuid.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test", + "test/packettest" + ], "lib" => [ "libcrypto", "providers/libfips.a" @@ -8347,6 +9760,8 @@ our %unified_info = ( }, "crypto/asn1" => { "deps" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", "crypto/asn1/libcrypto-lib-a_bitstr.o", "crypto/asn1/libcrypto-lib-a_d2i_fp.o", "crypto/asn1/libcrypto-lib-a_digest.o", @@ -8413,6 +9828,10 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test" + ], "lib" => [ "libcrypto" ] @@ -8478,6 +9897,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -8638,6 +10058,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -9009,7 +10430,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", - "crypto/err/libcrypto-lib-err_prn.o" + "crypto/err/libcrypto-lib-err_mark.o", + "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o" ], "products" => { "lib" => [ @@ -9110,7 +10533,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/evp/libfips-lib-asymcipher.o", "crypto/evp/libfips-lib-dh_support.o", "crypto/evp/libfips-lib-digest.o", @@ -9126,14 +10551,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", - "crypto/evp/libfips-lib-signature.o" + "crypto/evp/libfips-lib-s_lib.o", + "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o" ], "products" => { "lib" => [ @@ -9166,6 +10592,20 @@ our %unified_info = ( ] } }, + "crypto/hashtable" => { + "deps" => [ + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/hmac" => { "deps" => [ "crypto/hmac/libcrypto-lib-hmac.o", @@ -9178,6 +10618,17 @@ our %unified_info = ( ] } }, + "crypto/hpke" => { + "deps" => [ + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, "crypto/http" => { "deps" => [ "crypto/http/libcrypto-lib-http_client.o", @@ -9262,6 +10713,44 @@ our %unified_info = ( ] } }, + "crypto/ml_dsa" => { + "deps" => [ + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ml_kem" => { + "deps" => [ + "crypto/ml_kem/libcrypto-lib-ml_kem.o", + "crypto/ml_kem/libfips-lib-ml_kem.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/modes" => { "deps" => [ "crypto/modes/libcrypto-lib-cbc128.o", @@ -9276,6 +10765,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -9284,7 +10774,8 @@ our %unified_info = ( "crypto/modes/libfips-lib-ghash-x86.o", "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", - "crypto/modes/libfips-lib-xts128.o" + "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o" ], "products" => { "lib" => [ @@ -9428,6 +10919,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rand/libfips-lib-rand_lib.o" ], @@ -9578,6 +11070,36 @@ our %unified_info = ( ] } }, + "crypto/slh_dsa" => { + "deps" => [ + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/sm2" => { "deps" => [ "crypto/sm2/libcrypto-lib-sm2_crypt.o", @@ -9651,6 +11173,38 @@ our %unified_info = ( ] } }, + "crypto/thread" => { + "deps" => [ + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/thread/arch" => { + "deps" => [ + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/ts" => { "deps" => [ "crypto/ts/libcrypto-lib-ts_asn1.o", @@ -9718,14 +11272,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -9734,12 +11296,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -9747,13 +11314,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -9771,6 +11345,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -9780,6 +11355,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -9808,6 +11384,7 @@ our %unified_info = ( "fuzz" => { "products" => { "bin" => [ + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -9818,13 +11395,31 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test" ] } }, "providers" => { "deps" => [ + "providers/endecode_test-bin-legacyprov.o", "providers/evp_extra_test-bin-legacyprov.o", "providers/libcrypto-lib-baseprov.o", "providers/libcrypto-lib-defltprov.o", @@ -9834,6 +11429,7 @@ our %unified_info = ( ], "products" => { "bin" => [ + "test/endecode_test", "test/evp_extra_test" ], "dso" => [ @@ -9885,8 +11481,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/der/libdefault-lib-der_rsa_sig.o", "providers/common/der/libdefault-lib-der_sm2_gen.o", @@ -9905,6 +11505,7 @@ our %unified_info = ( "providers/fips" => { "deps" => [ "providers/fips/fips-dso-fips_entry.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o" @@ -9948,6 +11549,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -9972,7 +11576,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -10069,7 +11679,10 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", - "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" + "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" ], "products" => { "lib" => [ @@ -10097,7 +11710,9 @@ our %unified_info = ( }, "providers/implementations/kdfs" => { "deps" => [ + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -10116,7 +11731,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", - "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" + "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" ], "products" => { "lib" => [ @@ -10128,13 +11744,22 @@ our %unified_info = ( }, "providers/implementations/kem" => { "deps" => [ + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", - "providers/implementations/kem/libfips-lib-rsa_kem.o" + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", + "providers/implementations/kem/libfips-lib-rsa_kem.o", + "providers/implementations/kem/libtemplate-lib-template_kem.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10146,19 +11771,29 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", - "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10186,18 +11821,18 @@ our %unified_info = ( }, "providers/implementations/rands" => { "deps" => [ - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o" ], "products" => { @@ -10226,13 +11861,31 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", - "providers/implementations/signature/libfips-lib-rsa_sig.o" + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", + "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/skeymgmt" => { + "deps" => [ + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o" ], "products" => { "lib" => [ @@ -10260,14 +11913,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -10283,32 +11937,107 @@ our %unified_info = ( "ssl/libssl-lib-t1_trce.o", "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", - "ssl/libssl-lib-tls_srp.o", - "ssl/libdefault-lib-s3_cbc.o", - "ssl/libfips-lib-s3_cbc.o" + "ssl/libssl-lib-tls_srp.o" ], "products" => { "lib" => [ - "libssl", - "providers/libdefault.a", - "providers/libfips.a" + "libssl" + ] + } + }, + "ssl/quic" => { + "deps" => [ + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, "ssl/record" => { "deps" => [ - "ssl/record/libssl-lib-dtls1_bitmap.o", "ssl/record/libssl-lib-rec_layer_d1.o", - "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/libssl-lib-rec_layer_s3.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "ssl/record/methods" => { + "deps" => [ + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/record/methods/libcommon-lib-tls_pad.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o", + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "products" => { "lib" => [ "libssl", - "providers/libcommon.a" + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "ssl/rio" => { + "deps" => [ + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, @@ -10346,9 +12075,40 @@ our %unified_info = ( "test/helpers/dtlstest-bin-ssltestlib.o", "test/helpers/endecode_test-bin-predefined_dhparams.o", "test/helpers/fatalerrtest-bin-ssltestlib.o", + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/helpers/pkcs12_api_test-bin-pkcs12.o", "test/helpers/pkcs12_format_test-bin-pkcs12.o", + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", "test/helpers/recordlentest-bin-ssltestlib.o", + "test/helpers/rpktest-bin-ssltestlib.o", "test/helpers/servername_test-bin-ssltestlib.o", + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/helpers/ssl_test-bin-handshake.o", "test/helpers/ssl_test-bin-handshake_srp.o", @@ -10357,7 +12117,8 @@ our %unified_info = ( "test/helpers/sslapitest-bin-ssltestlib.o", "test/helpers/sslbuffertest-bin-ssltestlib.o", "test/helpers/sslcorrupttest-bin-ssltestlib.o", - "test/helpers/tls13ccstest-bin-ssltestlib.o" + "test/helpers/tls13ccstest-bin-ssltestlib.o", + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" ], "products" => { "bin" => [ @@ -10375,16 +12136,37 @@ our %unified_info = ( "test/dtlstest", "test/endecode_test", "test/fatalerrtest", + "test/json_test", + "test/pkcs12_api_test", "test/pkcs12_format_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_radix_test", + "test/quic_srt_gen_test", + "test/quicapitest", + "test/quicfaultstest", "test/recordlentest", + "test/rpktest", "test/servername_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", "test/sslapitest", "test/sslbuffertest", "test/sslcorrupttest", - "test/tls13ccstest" + "test/tls13ccstest", + "test/tls13groupselection_test" + ] + } + }, + "test/radix" => { + "deps" => [ + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "products" => { + "bin" => [ + "test/quic_radix_test" ] } }, @@ -10396,6 +12178,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -10431,6 +12214,12 @@ our %unified_info = ( } }, "generate" => { + "OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], "apps/progs.c" => [ "apps/progs.pl", "\"-C\"", @@ -10441,6 +12230,19 @@ our %unified_info = ( "\"-H\"", "\$(APPS_OPENSSL)" ], + "builddata.pm" => [ + "util/mkinstallvars.pl", + "PREFIX=.", + "BINDIR=apps", + "APPLINKDIR=ms", + "LIBDIR=", + "INCLUDEDIR=include", + "\"INCLUDEDIR=\$(SRCDIR)/include\"", + "ENGINESDIR=engines", + "MODULESDIR=providers", + "\"VERSION=\$(VERSION)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"" + ], "crypto/aes/aes-586.S" => [ "crypto/aes/asm/aes-586.pl" ], @@ -10462,6 +12264,24 @@ our %unified_info = ( "crypto/aes/aes-ppc.s" => [ "crypto/aes/asm/aes-ppc.pl" ], + "crypto/aes/aes-riscv32-zkn.s" => [ + "crypto/aes/asm/aes-riscv32-zkn.pl" + ], + "crypto/aes/aes-riscv64-zkn.s" => [ + "crypto/aes/asm/aes-riscv64-zkn.pl" + ], + "crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvbb-zvkg-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkb-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkb-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkned.pl" + ], + "crypto/aes/aes-riscv64.s" => [ + "crypto/aes/asm/aes-riscv64.pl" + ], "crypto/aes/aes-s390x.S" => [ "crypto/aes/asm/aes-s390x.pl" ], @@ -10489,6 +12309,9 @@ our %unified_info = ( "crypto/aes/aesni-x86_64.s" => [ "crypto/aes/asm/aesni-x86_64.pl" ], + "crypto/aes/aesni-xts-avx512.s" => [ + "crypto/aes/asm/aesni-xts-avx512.pl" + ], "crypto/aes/aesp8-ppc.s" => [ "crypto/aes/asm/aesp8-ppc.pl" ], @@ -10501,12 +12324,18 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.S" => [ "crypto/aes/asm/bsaes-armv7.pl" ], + "crypto/aes/bsaes-armv8.S" => [ + "crypto/aes/asm/bsaes-armv8.pl" + ], "crypto/aes/bsaes-x86_64.s" => [ "crypto/aes/asm/bsaes-x86_64.pl" ], "crypto/aes/vpaes-armv8.S" => [ "crypto/aes/asm/vpaes-armv8.pl" ], + "crypto/aes/vpaes-loongarch64.S" => [ + "crypto/aes/asm/vpaes-loongarch64.pl" + ], "crypto/aes/vpaes-ppc.s" => [ "crypto/aes/asm/vpaes-ppc.pl" ], @@ -10567,15 +12396,33 @@ our %unified_info = ( "crypto/bn/ppc-mont.s" => [ "crypto/bn/asm/ppc-mont.pl" ], + "crypto/bn/ppc64-mont-fixed.s" => [ + "crypto/bn/asm/ppc64-mont-fixed.pl" + ], "crypto/bn/ppc64-mont.s" => [ "crypto/bn/asm/ppc64-mont.pl" ], + "crypto/bn/rsaz-2k-avx512.s" => [ + "crypto/bn/asm/rsaz-2k-avx512.pl" + ], + "crypto/bn/rsaz-2k-avxifma.s" => [ + "crypto/bn/asm/rsaz-2k-avxifma.pl" + ], + "crypto/bn/rsaz-3k-avx512.s" => [ + "crypto/bn/asm/rsaz-3k-avx512.pl" + ], + "crypto/bn/rsaz-3k-avxifma.s" => [ + "crypto/bn/asm/rsaz-3k-avxifma.pl" + ], + "crypto/bn/rsaz-4k-avx512.s" => [ + "crypto/bn/asm/rsaz-4k-avx512.pl" + ], + "crypto/bn/rsaz-4k-avxifma.s" => [ + "crypto/bn/asm/rsaz-4k-avxifma.pl" + ], "crypto/bn/rsaz-avx2.s" => [ "crypto/bn/asm/rsaz-avx2.pl" ], - "crypto/bn/rsaz-avx512.s" => [ - "crypto/bn/asm/rsaz-avx512.pl" - ], "crypto/bn/rsaz-x86_64.s" => [ "crypto/bn/asm/rsaz-x86_64.pl" ], @@ -10637,6 +12484,9 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.S" => [ "crypto/chacha/asm/chacha-armv4.pl" ], + "crypto/chacha/chacha-armv8-sve.S" => [ + "crypto/chacha/asm/chacha-armv8-sve.pl" + ], "crypto/chacha/chacha-armv8.S" => [ "crypto/chacha/asm/chacha-armv8.pl" ], @@ -10649,9 +12499,19 @@ our %unified_info = ( "crypto/chacha/chacha-ia64.s" => [ "crypto/chacha/chacha-ia64.S" ], + "crypto/chacha/chacha-loongarch64.S" => [ + "crypto/chacha/asm/chacha-loongarch64.pl" + ], "crypto/chacha/chacha-ppc.s" => [ "crypto/chacha/asm/chacha-ppc.pl" ], + "crypto/chacha/chacha-riscv64-v-zbb-zvkb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl", + "zvkb" + ], + "crypto/chacha/chacha-riscv64-v-zbb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl" + ], "crypto/chacha/chacha-s390x.S" => [ "crypto/chacha/asm/chacha-s390x.pl" ], @@ -10661,6 +12521,9 @@ our %unified_info = ( "crypto/chacha/chacha-x86_64.s" => [ "crypto/chacha/asm/chacha-x86_64.pl" ], + "crypto/chacha/chachap10-ppc.s" => [ + "crypto/chacha/asm/chachap10-ppc.pl" + ], "crypto/des/crypt586.S" => [ "crypto/des/asm/crypt586.pl" ], @@ -10673,6 +12536,9 @@ our %unified_info = ( "crypto/des/dest4-sparcv9.S" => [ "crypto/des/asm/dest4-sparcv9.pl" ], + "crypto/ec/ecp_nistp384-ppc64.s" => [ + "crypto/ec/asm/ecp_nistp384-ppc64.pl" + ], "crypto/ec/ecp_nistp521-ppc64.s" => [ "crypto/ec/asm/ecp_nistp521-ppc64.pl" ], @@ -10697,6 +12563,9 @@ our %unified_info = ( "crypto/ec/ecp_nistz256-x86_64.s" => [ "crypto/ec/asm/ecp_nistz256-x86_64.pl" ], + "crypto/ec/ecp_sm2p256-armv8.S" => [ + "crypto/ec/asm/ecp_sm2p256-armv8.pl" + ], "crypto/ec/x25519-ppc64.s" => [ "crypto/ec/asm/x25519-ppc64.pl" ], @@ -10706,18 +12575,39 @@ our %unified_info = ( "crypto/ia64cpuid.s" => [ "crypto/ia64cpuid.S" ], + "crypto/loongarch64cpuid.s" => [ + "crypto/loongarch64cpuid.pl" + ], "crypto/md5/md5-586.S" => [ "crypto/md5/asm/md5-586.pl" ], + "crypto/md5/md5-aarch64.S" => [ + "crypto/md5/asm/md5-aarch64.pl" + ], + "crypto/md5/md5-loongarch64.S" => [ + "crypto/md5/asm/md5-loongarch64.pl" + ], "crypto/md5/md5-sparcv9.S" => [ "crypto/md5/asm/md5-sparcv9.pl" ], "crypto/md5/md5-x86_64.s" => [ "crypto/md5/asm/md5-x86_64.pl" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.S" => [ + "crypto/modes/asm/aes-gcm-armv8-unroll8_64.pl" + ], "crypto/modes/aes-gcm-armv8_64.S" => [ "crypto/modes/asm/aes-gcm-armv8_64.pl" ], + "crypto/modes/aes-gcm-avx512.s" => [ + "crypto/modes/asm/aes-gcm-avx512.pl" + ], + "crypto/modes/aes-gcm-ppc.s" => [ + "crypto/modes/asm/aes-gcm-ppc.pl" + ], + "crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s" => [ + "crypto/modes/asm/aes-gcm-riscv64-zvkb-zvkg-zvkned.pl" + ], "crypto/modes/aesni-gcm-x86_64.s" => [ "crypto/modes/asm/aesni-gcm-x86_64.pl" ], @@ -10736,6 +12626,15 @@ our %unified_info = ( "crypto/modes/ghash-parisc.s" => [ "crypto/modes/asm/ghash-parisc.pl" ], + "crypto/modes/ghash-riscv64-zvkb-zvbc.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkb-zvbc.pl" + ], + "crypto/modes/ghash-riscv64-zvkg.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkg.pl" + ], + "crypto/modes/ghash-riscv64.s" => [ + "crypto/modes/asm/ghash-riscv64.pl" + ], "crypto/modes/ghash-s390x.S" => [ "crypto/modes/asm/ghash-s390x.pl" ], @@ -10754,6 +12653,9 @@ our %unified_info = ( "crypto/modes/ghashv8-armx.S" => [ "crypto/modes/asm/ghashv8-armx.pl" ], + "crypto/params_idx.c" => [ + "crypto/params_idx.c.in" + ], "crypto/pariscid.s" => [ "crypto/pariscid.pl" ], @@ -10814,6 +12716,12 @@ our %unified_info = ( "crypto/ripemd/rmd-586.S" => [ "crypto/ripemd/asm/rmd-586.pl" ], + "crypto/riscv32cpuid.s" => [ + "crypto/riscv32cpuid.pl" + ], + "crypto/riscv64cpuid.s" => [ + "crypto/riscv64cpuid.pl" + ], "crypto/s390xcpuid.S" => [ "crypto/s390xcpuid.pl" ], @@ -10922,6 +12830,9 @@ our %unified_info = ( "crypto/sha/sha256-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S" => [ + "crypto/sha/asm/sha256-riscv64-zvkb-zvknha_or_zvknhb.pl" + ], "crypto/sha/sha256-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -10958,6 +12869,9 @@ our %unified_info = ( "crypto/sha/sha512-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha512-riscv64-zvkb-zvknhb.S" => [ + "crypto/sha/asm/sha512-riscv64-zvkb-zvknhb.pl" + ], "crypto/sha/sha512-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -10970,6 +12884,24 @@ our %unified_info = ( "crypto/sha/sha512p8-ppc.s" => [ "crypto/sha/asm/sha512p8-ppc.pl" ], + "crypto/sm3/sm3-armv8.S" => [ + "crypto/sm3/asm/sm3-armv8.pl" + ], + "crypto/sm3/sm3-riscv64-zvksh.S" => [ + "crypto/sm3/asm/sm3-riscv64-zvksh.pl" + ], + "crypto/sm4/sm4-armv8.S" => [ + "crypto/sm4/asm/sm4-armv8.pl" + ], + "crypto/sm4/sm4-riscv64-zvksed.s" => [ + "crypto/sm4/asm/sm4-riscv64-zvksed.pl" + ], + "crypto/sm4/vpsm4-armv8.S" => [ + "crypto/sm4/asm/vpsm4-armv8.pl" + ], + "crypto/sm4/vpsm4_ex-armv8.S" => [ + "crypto/sm4/asm/vpsm4_ex-armv8.pl" + ], "crypto/uplink-ia64.s" => [ "ms/uplink-ia64.pl" ], @@ -11135,6 +13067,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -11276,6 +13211,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -11312,6 +13250,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -11327,6 +13268,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -11399,6 +13343,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -11465,6 +13412,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -11564,6 +13514,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -11702,6 +13658,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -11819,6 +13778,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -11906,6 +13871,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -11978,9 +13946,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -11996,12 +13970,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -12071,9 +14051,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -12083,12 +14072,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -12104,9 +14105,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -12131,6 +14138,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -12146,6 +14156,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -12182,6 +14195,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -12455,6 +14471,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -12494,6 +14513,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -12515,6 +14537,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -12629,6 +14654,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -12656,9 +14684,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -12674,6 +14714,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -12683,12 +14726,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -12707,12 +14756,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -12722,9 +14783,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -12737,9 +14804,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -12755,24 +14834,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -12785,6 +14885,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -12794,8 +14900,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -12815,6 +14921,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -12863,6 +14984,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -12929,6 +15053,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -13052,9 +15179,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -13070,6 +15203,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -13094,9 +15230,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -13130,6 +15275,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -13187,15 +15335,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -13205,6 +15365,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -13226,9 +15389,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -13244,6 +15413,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -13256,9 +15428,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -13289,9 +15458,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -13307,12 +15473,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -13367,6 +15587,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -13376,9 +15599,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -13526,6 +15746,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -13667,6 +15890,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -13703,6 +15929,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -13718,6 +15947,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -13790,6 +16022,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -13856,6 +16091,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -13955,6 +16193,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -14093,6 +16337,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -14210,6 +16457,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -14297,6 +16550,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -14369,9 +16625,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -14387,12 +16649,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -14462,9 +16730,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -14474,12 +16751,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -14495,9 +16784,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -14522,6 +16817,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -14537,6 +16835,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -14573,6 +16874,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -14846,6 +17150,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -14885,6 +17192,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -14906,6 +17216,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -15020,6 +17333,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -15047,9 +17363,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -15065,6 +17393,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -15074,12 +17405,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -15098,12 +17435,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -15113,9 +17462,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -15128,9 +17483,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -15146,24 +17513,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -15176,6 +17564,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -15185,8 +17579,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -15206,6 +17600,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -15254,6 +17663,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -15320,6 +17732,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -15443,9 +17858,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -15461,6 +17882,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -15485,9 +17909,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -15521,6 +17954,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -15578,15 +18014,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -15596,6 +18044,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -15617,9 +18068,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -15635,6 +18092,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -15647,9 +18107,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -15680,9 +18137,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -15698,12 +18152,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -15758,6 +18266,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -15767,9 +18278,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -15905,6 +18413,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc/man1/openssl-sess_id.pod.in" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in" ], @@ -15941,12 +18452,30 @@ our %unified_info = ( "engines/e_padlock-x86_64.s" => [ "engines/asm/e_padlock-x86_64.pl" ], + "exporters/OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], + "exporters/libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], + "exporters/libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "exporters/openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "include/crypto/bn_conf.h" => [ "include/crypto/bn_conf.h.in" ], "include/crypto/dso_conf.h" => [ "include/crypto/dso_conf.h.in" ], + "include/internal/param_names.h" => [ + "include/internal/param_names.h.in" + ], "include/openssl/asn1.h" => [ "include/openssl/asn1.h.in" ], @@ -15962,12 +18491,18 @@ our %unified_info = ( "include/openssl/cms.h" => [ "include/openssl/cms.h.in" ], + "include/openssl/comp.h" => [ + "include/openssl/comp.h.in" + ], "include/openssl/conf.h" => [ "include/openssl/conf.h.in" ], "include/openssl/configuration.h" => [ "include/openssl/configuration.h.in" ], + "include/openssl/core_names.h" => [ + "include/openssl/core_names.h.in" + ], "include/openssl/crmf.h" => [ "include/openssl/crmf.h.in" ], @@ -16016,20 +18551,47 @@ our %unified_info = ( "include/openssl/x509.h" => [ "include/openssl/x509.h.in" ], + "include/openssl/x509_acert.h" => [ + "include/openssl/x509_acert.h.in" + ], "include/openssl/x509_vfy.h" => [ "include/openssl/x509_vfy.h.in" ], "include/openssl/x509v3.h" => [ "include/openssl/x509v3.h.in" ], + "installdata.pm" => [ + "util/mkinstallvars.pl", + "\"PREFIX=\$(INSTALLTOP)\"", + "BINDIR=bin", + "\"LIBDIR=\$(LIBDIR)\"", + "\"libdir=\$(libdir)\"", + "INCLUDEDIR=include", + "APPLINKDIR=include/openssl", + "\"ENGINESDIR=\$(ENGINESDIR)\"", + "\"MODULESDIR=\$(MODULESDIR)\"", + "\"PKGCONFIGDIR=\$(PKGCONFIGDIR)\"", + "\"CMAKECONFIGDIR=\$(CMAKECONFIGDIR)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"", + "\"VERSION=\$(VERSION)\"" + ], "libcrypto.ld" => [ "util/libcrypto.num", "libcrypto" ], + "libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], "libssl.ld" => [ "util/libssl.num", "libssl" ], + "libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/der_digests_gen.c.in" ], @@ -16042,9 +18604,15 @@ our %unified_info = ( "providers/common/der/der_ecx_gen.c" => [ "providers/common/der/der_ecx_gen.c.in" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/der_ml_dsa_gen.c.in" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/der_rsa_gen.c.in" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/der_slh_dsa_gen.c.in" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/der_sm2_gen.c.in" ], @@ -16063,9 +18631,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/include/prov/der_ecx.h.in" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/include/prov/der_ml_dsa.h.in" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/include/prov/der_rsa.h.in" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/include/prov/der_slh_dsa.h.in" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/include/prov/der_sm2.h.in" ], @@ -16107,6 +18681,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "buffer" ], + "test/buildtest_byteorder.c" => [ + "test/generate_buildtest.pl", + "byteorder" + ], "test/buildtest_camellia.c" => [ "test/generate_buildtest.pl", "camellia" @@ -16139,10 +18717,6 @@ our %unified_info = ( "test/generate_buildtest.pl", "core_dispatch" ], - "test/buildtest_core_names.c" => [ - "test/generate_buildtest.pl", - "core_names" - ], "test/buildtest_core_object.c" => [ "test/generate_buildtest.pl", "core_object" @@ -16175,6 +18749,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "e_os2" ], + "test/buildtest_e_ostime.c" => [ + "test/generate_buildtest.pl", + "e_ostime" + ], "test/buildtest_ebcdic.c" => [ "test/generate_buildtest.pl", "ebcdic" @@ -16211,6 +18789,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "hmac" ], + "test/buildtest_hpke.c" => [ + "test/generate_buildtest.pl", + "hpke" + ], "test/buildtest_http.c" => [ "test/generate_buildtest.pl", "http" @@ -16219,6 +18801,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "idea" ], + "test/buildtest_indicator.c" => [ + "test/generate_buildtest.pl", + "indicator" + ], "test/buildtest_kdf.c" => [ "test/generate_buildtest.pl", "kdf" @@ -16239,6 +18825,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "mdc2" ], + "test/buildtest_ml_kem.c" => [ + "test/generate_buildtest.pl", + "ml_kem" + ], "test/buildtest_modes.c" => [ "test/generate_buildtest.pl", "modes" @@ -16279,6 +18869,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "provider" ], + "test/buildtest_quic.c" => [ + "test/generate_buildtest.pl", + "quic" + ], "test/buildtest_rand.c" => [ "test/generate_buildtest.pl", "rand" @@ -16335,6 +18929,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "symhacks" ], + "test/buildtest_thread.c" => [ + "test/generate_buildtest.pl", + "thread" + ], "test/buildtest_tls1.c" => [ "test/generate_buildtest.pl", "tls1" @@ -16415,6 +19013,7 @@ our %unified_info = ( "doc/html/man1/openssl-s_server.html", "doc/html/man1/openssl-s_time.html", "doc/html/man1/openssl-sess_id.html", + "doc/html/man1/openssl-skeyutl.html", "doc/html/man1/openssl-smime.html", "doc/html/man1/openssl-speed.html", "doc/html/man1/openssl-spkac.html", @@ -16464,6 +19063,7 @@ our %unified_info = ( "doc/html/man3/BIO_find_type.html", "doc/html/man3/BIO_get_data.html", "doc/html/man3/BIO_get_ex_new_index.html", + "doc/html/man3/BIO_get_rpoll_descriptor.html", "doc/html/man3/BIO_meth_new.html", "doc/html/man3/BIO_new.html", "doc/html/man3/BIO_new_CMS.html", @@ -16476,11 +19076,13 @@ our %unified_info = ( "doc/html/man3/BIO_s_connect.html", "doc/html/man3/BIO_s_core.html", "doc/html/man3/BIO_s_datagram.html", + "doc/html/man3/BIO_s_dgram_pair.html", "doc/html/man3/BIO_s_fd.html", "doc/html/man3/BIO_s_file.html", "doc/html/man3/BIO_s_mem.html", "doc/html/man3/BIO_s_null.html", "doc/html/man3/BIO_s_socket.html", + "doc/html/man3/BIO_sendmmsg.html", "doc/html/man3/BIO_set_callback.html", "doc/html/man3/BIO_should_retry.html", "doc/html/man3/BIO_socket_wait.html", @@ -16505,6 +19107,7 @@ our %unified_info = ( "doc/html/man3/BN_swap.html", "doc/html/man3/BN_zero.html", "doc/html/man3/BUF_MEM_new.html", + "doc/html/man3/CMAC_CTX.html", "doc/html/man3/CMS_EncryptedData_decrypt.html", "doc/html/man3/CMS_EncryptedData_encrypt.html", "doc/html/man3/CMS_EnvelopedData_create.html", @@ -16527,6 +19130,7 @@ our %unified_info = ( "doc/html/man3/CMS_uncompress.html", "doc/html/man3/CMS_verify.html", "doc/html/man3/CMS_verify_receipt.html", + "doc/html/man3/COMP_CTX_new.html", "doc/html/man3/CONF_modules_free.html", "doc/html/man3/CONF_modules_load_file.html", "doc/html/man3/CRYPTO_THREAD_run_once.html", @@ -16560,6 +19164,8 @@ our %unified_info = ( "doc/html/man3/DSA_size.html", "doc/html/man3/DTLS_get_data_mtu.html", "doc/html/man3/DTLS_set_timer_cb.html", + "doc/html/man3/DTLSv1_get_timeout.html", + "doc/html/man3/DTLSv1_handle_timeout.html", "doc/html/man3/DTLSv1_listen.html", "doc/html/man3/ECDSA_SIG_new.html", "doc/html/man3/ECDSA_sign.html", @@ -16606,6 +19212,7 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_ctrl.html", "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html", "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html", + "doc/html/man3/EVP_PKEY_CTX_get_algor.html", "doc/html/man3/EVP_PKEY_CTX_new.html", "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html", "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html", @@ -16645,6 +19252,8 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_verify_recover.html", "doc/html/man3/EVP_RAND.html", "doc/html/man3/EVP_SIGNATURE.html", + "doc/html/man3/EVP_SKEY.html", + "doc/html/man3/EVP_SKEYMGMT.html", "doc/html/man3/EVP_SealInit.html", "doc/html/man3/EVP_SignInit.html", "doc/html/man3/EVP_VerifyInit.html", @@ -16674,6 +19283,7 @@ our %unified_info = ( "doc/html/man3/EVP_sm3.html", "doc/html/man3/EVP_sm4_cbc.html", "doc/html/man3/EVP_whirlpool.html", + "doc/html/man3/GENERAL_NAME.html", "doc/html/man3/HMAC.html", "doc/html/man3/MD5.html", "doc/html/man3/MDC2_Init.html", @@ -16698,14 +19308,18 @@ our %unified_info = ( "doc/html/man3/OPENSSL_init_ssl.html", "doc/html/man3/OPENSSL_instrument_bus.html", "doc/html/man3/OPENSSL_load_builtin_modules.html", + "doc/html/man3/OPENSSL_load_u16_le.html", "doc/html/man3/OPENSSL_malloc.html", + "doc/html/man3/OPENSSL_riscvcap.html", "doc/html/man3/OPENSSL_s390xcap.html", "doc/html/man3/OPENSSL_secure_malloc.html", "doc/html/man3/OPENSSL_strcasecmp.html", "doc/html/man3/OSSL_ALGORITHM.html", "doc/html/man3/OSSL_CALLBACK.html", + "doc/html/man3/OSSL_CMP_ATAV_set0.html", "doc/html/man3/OSSL_CMP_CTX_new.html", "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html", + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html", "doc/html/man3/OSSL_CMP_ITAV_set0.html", "doc/html/man3/OSSL_CMP_MSG_get0_header.html", "doc/html/man3/OSSL_CMP_MSG_http_perform.html", @@ -16729,18 +19343,27 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_CTX.html", "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html", "doc/html/man3/OSSL_ENCODER_to_bio.html", + "doc/html/man3/OSSL_ERR_STATE_save.html", "doc/html/man3/OSSL_ESS_check_signing_certs.html", + "doc/html/man3/OSSL_GENERAL_NAMES_print.html", + "doc/html/man3/OSSL_HPKE_CTX_new.html", "doc/html/man3/OSSL_HTTP_REQ_CTX.html", "doc/html/man3/OSSL_HTTP_parse_url.html", "doc/html/man3/OSSL_HTTP_transfer.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html", + "doc/html/man3/OSSL_INDICATOR_set_callback.html", "doc/html/man3/OSSL_ITEM.html", "doc/html/man3/OSSL_LIB_CTX.html", + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html", "doc/html/man3/OSSL_PARAM.html", "doc/html/man3/OSSL_PARAM_BLD.html", "doc/html/man3/OSSL_PARAM_allocate_from_text.html", "doc/html/man3/OSSL_PARAM_dup.html", "doc/html/man3/OSSL_PARAM_int.html", + "doc/html/man3/OSSL_PARAM_print_to_bio.html", "doc/html/man3/OSSL_PROVIDER.html", + "doc/html/man3/OSSL_QUIC_client_method.html", "doc/html/man3/OSSL_SELF_TEST_new.html", "doc/html/man3/OSSL_SELF_TEST_set_callback.html", "doc/html/man3/OSSL_STORE_INFO.html", @@ -16749,11 +19372,13 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_attach.html", "doc/html/man3/OSSL_STORE_expect.html", "doc/html/man3/OSSL_STORE_open.html", + "doc/html/man3/OSSL_sleep.html", "doc/html/man3/OSSL_trace_enabled.html", "doc/html/man3/OSSL_trace_get_category_num.html", "doc/html/man3/OSSL_trace_set_channel.html", "doc/html/man3/OpenSSL_add_all_algorithms.html", "doc/html/man3/OpenSSL_version.html", + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html", "doc/html/man3/PEM_X509_INFO_read_bio_ex.html", "doc/html/man3/PEM_bytes_read_bio.html", "doc/html/man3/PEM_read.html", @@ -16766,6 +19391,7 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_create_cert.html", "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html", "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html", + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html", "doc/html/man3/PKCS12_add1_attr_by_NID.html", "doc/html/man3/PKCS12_add_CSPName_asc.html", "doc/html/man3/PKCS12_add_cert.html", @@ -16857,6 +19483,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_sess_set_get_cb.html", "doc/html/man3/SSL_CTX_sessions.html", "doc/html/man3/SSL_CTX_set0_CA_list.html", + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html", "doc/html/man3/SSL_CTX_set1_curves.html", "doc/html/man3/SSL_CTX_set1_sigalgs.html", "doc/html/man3/SSL_CTX_set1_verify_cert_store.html", @@ -16870,6 +19497,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_ct_validation_callback.html", "doc/html/man3/SSL_CTX_set_ctlog_list_file.html", "doc/html/man3/SSL_CTX_set_default_passwd_cb.html", + "doc/html/man3/SSL_CTX_set_domain_flags.html", "doc/html/man3/SSL_CTX_set_generate_session_id.html", "doc/html/man3/SSL_CTX_set_info_callback.html", "doc/html/man3/SSL_CTX_set_keylog_callback.html", @@ -16877,6 +19505,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_min_proto_version.html", "doc/html/man3/SSL_CTX_set_mode.html", "doc/html/man3/SSL_CTX_set_msg_callback.html", + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html", "doc/html/man3/SSL_CTX_set_num_tickets.html", "doc/html/man3/SSL_CTX_set_options.html", "doc/html/man3/SSL_CTX_set_psk_client_callback.html", @@ -16915,6 +19544,7 @@ our %unified_info = ( "doc/html/man3/SSL_SESSION_print.html", "doc/html/man3/SSL_SESSION_set1_id.html", "doc/html/man3/SSL_accept.html", + "doc/html/man3/SSL_accept_stream.html", "doc/html/man3/SSL_alert_type_string.html", "doc/html/man3/SSL_alloc_buffers.html", "doc/html/man3/SSL_check_chain.html", @@ -16924,59 +19554,90 @@ our %unified_info = ( "doc/html/man3/SSL_export_keying_material.html", "doc/html/man3/SSL_extension_supported.html", "doc/html/man3/SSL_free.html", + "doc/html/man3/SSL_get0_connection.html", + "doc/html/man3/SSL_get0_group_name.html", + "doc/html/man3/SSL_get0_peer_rpk.html", "doc/html/man3/SSL_get0_peer_scts.html", + "doc/html/man3/SSL_get1_builtin_sigalgs.html", "doc/html/man3/SSL_get_SSL_CTX.html", "doc/html/man3/SSL_get_all_async_fds.html", "doc/html/man3/SSL_get_certificate.html", "doc/html/man3/SSL_get_ciphers.html", "doc/html/man3/SSL_get_client_random.html", + "doc/html/man3/SSL_get_conn_close_info.html", "doc/html/man3/SSL_get_current_cipher.html", "doc/html/man3/SSL_get_default_timeout.html", "doc/html/man3/SSL_get_error.html", + "doc/html/man3/SSL_get_event_timeout.html", "doc/html/man3/SSL_get_extms_support.html", "doc/html/man3/SSL_get_fd.html", + "doc/html/man3/SSL_get_handshake_rtt.html", "doc/html/man3/SSL_get_peer_cert_chain.html", "doc/html/man3/SSL_get_peer_certificate.html", "doc/html/man3/SSL_get_peer_signature_nid.html", "doc/html/man3/SSL_get_peer_tmp_key.html", "doc/html/man3/SSL_get_psk_identity.html", "doc/html/man3/SSL_get_rbio.html", + "doc/html/man3/SSL_get_rpoll_descriptor.html", "doc/html/man3/SSL_get_session.html", "doc/html/man3/SSL_get_shared_sigalgs.html", + "doc/html/man3/SSL_get_stream_id.html", + "doc/html/man3/SSL_get_stream_read_state.html", + "doc/html/man3/SSL_get_value_uint.html", "doc/html/man3/SSL_get_verify_result.html", "doc/html/man3/SSL_get_version.html", "doc/html/man3/SSL_group_to_name.html", + "doc/html/man3/SSL_handle_events.html", "doc/html/man3/SSL_in_init.html", + "doc/html/man3/SSL_inject_net_dgram.html", "doc/html/man3/SSL_key_update.html", "doc/html/man3/SSL_library_init.html", "doc/html/man3/SSL_load_client_CA_file.html", "doc/html/man3/SSL_new.html", + "doc/html/man3/SSL_new_domain.html", + "doc/html/man3/SSL_new_listener.html", + "doc/html/man3/SSL_new_stream.html", "doc/html/man3/SSL_pending.html", + "doc/html/man3/SSL_poll.html", "doc/html/man3/SSL_read.html", "doc/html/man3/SSL_read_early_data.html", "doc/html/man3/SSL_rstate_string.html", "doc/html/man3/SSL_session_reused.html", "doc/html/man3/SSL_set1_host.html", + "doc/html/man3/SSL_set1_initial_peer_addr.html", + "doc/html/man3/SSL_set1_server_cert_type.html", "doc/html/man3/SSL_set_async_callback.html", "doc/html/man3/SSL_set_bio.html", + "doc/html/man3/SSL_set_blocking_mode.html", "doc/html/man3/SSL_set_connect_state.html", + "doc/html/man3/SSL_set_default_stream_mode.html", "doc/html/man3/SSL_set_fd.html", + "doc/html/man3/SSL_set_incoming_stream_policy.html", + "doc/html/man3/SSL_set_quic_tls_cbs.html", "doc/html/man3/SSL_set_retry_verify.html", "doc/html/man3/SSL_set_session.html", + "doc/html/man3/SSL_set_session_secret_cb.html", "doc/html/man3/SSL_set_shutdown.html", "doc/html/man3/SSL_set_verify_result.html", "doc/html/man3/SSL_shutdown.html", "doc/html/man3/SSL_state_string.html", + "doc/html/man3/SSL_stream_conclude.html", + "doc/html/man3/SSL_stream_reset.html", "doc/html/man3/SSL_want.html", "doc/html/man3/SSL_write.html", "doc/html/man3/TS_RESP_CTX_new.html", - "doc/html/man3/TS_VERIFY_CTX_set_certs.html", + "doc/html/man3/TS_VERIFY_CTX.html", "doc/html/man3/UI_STRING.html", "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", + "doc/html/man3/X509_ACERT_add1_attr.html", + "doc/html/man3/X509_ACERT_add_attr_nconf.html", + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html", + "doc/html/man3/X509_ACERT_get_attr.html", + "doc/html/man3/X509_ACERT_print_ex.html", "doc/html/man3/X509_ALGOR_dup.html", "doc/html/man3/X509_ATTRIBUTE.html", "doc/html/man3/X509_CRL_get0_by_serial.html", @@ -16993,6 +19654,7 @@ our %unified_info = ( "doc/html/man3/X509_REQ_get_attr.html", "doc/html/man3/X509_REQ_get_extensions.html", "doc/html/man3/X509_SIG_get0.html", + "doc/html/man3/X509_STORE_CTX_get_by_subject.html", "doc/html/man3/X509_STORE_CTX_get_error.html", "doc/html/man3/X509_STORE_CTX_new.html", "doc/html/man3/X509_STORE_CTX_set_verify_cb.html", @@ -17015,6 +19677,7 @@ our %unified_info = ( "doc/html/man3/X509_get0_notBefore.html", "doc/html/man3/X509_get0_signature.html", "doc/html/man3/X509_get0_uids.html", + "doc/html/man3/X509_get_default_cert_file.html", "doc/html/man3/X509_get_extension_flags.html", "doc/html/man3/X509_get_pubkey.html", "doc/html/man3/X509_get_serialNumber.html", @@ -17060,12 +19723,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-RC5.html", "doc/html/man7/EVP_CIPHER-SEED.html", "doc/html/man7/EVP_CIPHER-SM4.html", + "doc/html/man7/EVP_KDF-ARGON2.html", "doc/html/man7/EVP_KDF-HKDF.html", + "doc/html/man7/EVP_KDF-HMAC-DRBG.html", "doc/html/man7/EVP_KDF-KB.html", "doc/html/man7/EVP_KDF-KRB5KDF.html", "doc/html/man7/EVP_KDF-PBKDF1.html", "doc/html/man7/EVP_KDF-PBKDF2.html", "doc/html/man7/EVP_KDF-PKCS12KDF.html", + "doc/html/man7/EVP_KDF-PVKKDF.html", "doc/html/man7/EVP_KDF-SCRYPT.html", "doc/html/man7/EVP_KDF-SS.html", "doc/html/man7/EVP_KDF-SSHKDF.html", @@ -17074,7 +19740,10 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X942-ASN1.html", "doc/html/man7/EVP_KDF-X942-CONCAT.html", "doc/html/man7/EVP_KDF-X963.html", + "doc/html/man7/EVP_KEM-EC.html", + "doc/html/man7/EVP_KEM-ML-KEM.html", "doc/html/man7/EVP_KEM-RSA.html", + "doc/html/man7/EVP_KEM-X25519.html", "doc/html/man7/EVP_KEYEXCH-DH.html", "doc/html/man7/EVP_KEYEXCH-ECDH.html", "doc/html/man7/EVP_KEYEXCH-X25519.html", @@ -17086,6 +19755,7 @@ our %unified_info = ( "doc/html/man7/EVP_MAC-Poly1305.html", "doc/html/man7/EVP_MAC-Siphash.html", "doc/html/man7/EVP_MD-BLAKE2.html", + "doc/html/man7/EVP_MD-KECCAK.html", "doc/html/man7/EVP_MD-MD2.html", "doc/html/man7/EVP_MD-MD4.html", "doc/html/man7/EVP_MD-MD5-SHA1.html", @@ -17105,12 +19775,17 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-EC.html", "doc/html/man7/EVP_PKEY-FFC.html", "doc/html/man7/EVP_PKEY-HMAC.html", + "doc/html/man7/EVP_PKEY-ML-DSA.html", + "doc/html/man7/EVP_PKEY-ML-KEM.html", "doc/html/man7/EVP_PKEY-RSA.html", + "doc/html/man7/EVP_PKEY-SLH-DSA.html", "doc/html/man7/EVP_PKEY-SM2.html", "doc/html/man7/EVP_PKEY-X25519.html", + "doc/html/man7/EVP_RAND-CRNG-TEST.html", "doc/html/man7/EVP_RAND-CTR-DRBG.html", "doc/html/man7/EVP_RAND-HASH-DRBG.html", "doc/html/man7/EVP_RAND-HMAC-DRBG.html", + "doc/html/man7/EVP_RAND-JITTER.html", "doc/html/man7/EVP_RAND-SEED-SRC.html", "doc/html/man7/EVP_RAND-TEST-RAND.html", "doc/html/man7/EVP_RAND.html", @@ -17118,17 +19793,19 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-ECDSA.html", "doc/html/man7/EVP_SIGNATURE-ED25519.html", "doc/html/man7/EVP_SIGNATURE-HMAC.html", + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html", "doc/html/man7/EVP_SIGNATURE-RSA.html", + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html", "doc/html/man7/OSSL_PROVIDER-FIPS.html", "doc/html/man7/OSSL_PROVIDER-base.html", "doc/html/man7/OSSL_PROVIDER-default.html", "doc/html/man7/OSSL_PROVIDER-legacy.html", "doc/html/man7/OSSL_PROVIDER-null.html", + "doc/html/man7/OSSL_STORE-winstore.html", "doc/html/man7/RAND.html", "doc/html/man7/RSA-PSS.html", "doc/html/man7/X25519.html", "doc/html/man7/bio.html", - "doc/html/man7/crypto.html", "doc/html/man7/ct.html", "doc/html/man7/des_modes.html", "doc/html/man7/evp.html", @@ -17139,14 +19816,31 @@ our %unified_info = ( "doc/html/man7/life_cycle-mac.html", "doc/html/man7/life_cycle-pkey.html", "doc/html/man7/life_cycle-rand.html", - "doc/html/man7/migration_guide.html", "doc/html/man7/openssl-core.h.html", "doc/html/man7/openssl-core_dispatch.h.html", "doc/html/man7/openssl-core_names.h.html", "doc/html/man7/openssl-env.html", "doc/html/man7/openssl-glossary.html", + "doc/html/man7/openssl-qlog.html", + "doc/html/man7/openssl-quic-concurrency.html", + "doc/html/man7/openssl-quic.html", "doc/html/man7/openssl-threads.html", "doc/html/man7/openssl_user_macros.html", + "doc/html/man7/ossl-guide-introduction.html", + "doc/html/man7/ossl-guide-libcrypto-introduction.html", + "doc/html/man7/ossl-guide-libraries-introduction.html", + "doc/html/man7/ossl-guide-libssl-introduction.html", + "doc/html/man7/ossl-guide-migration.html", + "doc/html/man7/ossl-guide-quic-client-block.html", + "doc/html/man7/ossl-guide-quic-client-non-block.html", + "doc/html/man7/ossl-guide-quic-introduction.html", + "doc/html/man7/ossl-guide-quic-multi-stream.html", + "doc/html/man7/ossl-guide-quic-server-block.html", + "doc/html/man7/ossl-guide-quic-server-non-block.html", + "doc/html/man7/ossl-guide-tls-client-block.html", + "doc/html/man7/ossl-guide-tls-client-non-block.html", + "doc/html/man7/ossl-guide-tls-introduction.html", + "doc/html/man7/ossl-guide-tls-server-block.html", "doc/html/man7/ossl_store-file.html", "doc/html/man7/ossl_store.html", "doc/html/man7/passphrase-encoding.html", @@ -17165,10 +19859,10 @@ our %unified_info = ( "doc/html/man7/provider-object.html", "doc/html/man7/provider-rand.html", "doc/html/man7/provider-signature.html", + "doc/html/man7/provider-skeymgmt.html", "doc/html/man7/provider-storemgmt.html", "doc/html/man7/provider.html", "doc/html/man7/proxy-certificates.html", - "doc/html/man7/ssl.html", "doc/html/man7/x509.html" ] }, @@ -17183,12 +19877,21 @@ our %unified_info = ( ] }, "includes" => { + "OpenSSLConfig.cmake" => [ + "." + ], + "OpenSSLConfigVersion.cmake" => [ + "." + ], "apps/asn1parse.o" => [ "apps" ], "apps/ca.o" => [ "apps" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps" + ], "apps/ciphers.o" => [ "apps" ], @@ -17415,6 +20118,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps" + ], "apps/openssl-bin-smime.o" => [ "apps" ], @@ -17502,6 +20208,9 @@ our %unified_info = ( "apps/sess_id.o" => [ "apps" ], + "apps/skeyutl.o" => [ + "apps" + ], "apps/smime.o" => [ "apps" ], @@ -17553,6 +20262,12 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.o" => [ "crypto" ], + "crypto/aes/vpaes-armv8.o" => [ + "crypto" + ], + "crypto/aes/vpaes-loongarch64.o" => [ + "crypto" + ], "crypto/arm64cpuid.o" => [ "crypto" ], @@ -17604,9 +20319,15 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.o" => [ "crypto" ], + "crypto/chacha/chacha-armv8-sve.o" => [ + "crypto" + ], "crypto/chacha/chacha-armv8.o" => [ "crypto" ], + "crypto/chacha/chacha-loongarch64.o" => [ + "crypto" + ], "crypto/chacha/chacha-s390x.o" => [ "crypto" ], @@ -17631,15 +20352,27 @@ our %unified_info = ( "crypto/ec/ecp_s390x_nistp.o" => [ "crypto" ], + "crypto/ec/ecp_sm2p256-armv8.o" => [ + "crypto" + ], + "crypto/ec/ecx_key.o" => [ + "crypto" + ], "crypto/ec/ecx_meth.o" => [ "crypto" ], "crypto/ec/ecx_s390x.o" => [ "crypto" ], + "crypto/ec/libcrypto-lib-ecx_key.o" => [ + "crypto" + ], "crypto/ec/libcrypto-lib-ecx_meth.o" => [ "crypto" ], + "crypto/ec/libfips-lib-ecx_key.o" => [ + "crypto" + ], "crypto/evp/e_aes.o" => [ "crypto", "crypto/modes" @@ -17711,9 +20444,18 @@ our %unified_info = ( "crypto/libfips-lib-cpuid.o" => [ "." ], + "crypto/md5/md5-aarch64.o" => [ + "crypto" + ], + "crypto/md5/md5-loongarch64.o" => [ + "crypto" + ], "crypto/md5/md5-sparcv9.o" => [ "crypto" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.o" => [ + "crypto" + ], "crypto/modes/aes-gcm-armv8_64.o" => [ "crypto" ], @@ -17738,6 +20480,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-gcm128.o" => [ "crypto" ], + "crypto/params_idx.c" => [ + "util/perl" + ], "crypto/poly1305/poly1305-armv4.o" => [ "crypto" ], @@ -17759,6 +20504,9 @@ our %unified_info = ( "crypto/sha/keccak1600-armv4.o" => [ "crypto" ], + "crypto/sha/keccak1600-armv8.o" => [ + "crypto" + ], "crypto/sha/sha1-armv4-large.o" => [ "crypto" ], @@ -17804,6 +20552,18 @@ our %unified_info = ( "crypto/sha/sha512-sparcv9.o" => [ "crypto" ], + "crypto/sm3/sm3-armv8.o" => [ + "crypto" + ], + "crypto/sm4/sm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4_ex-armv8.o" => [ + "crypto" + ], "doc/man1/openssl-asn1parse.pod" => [ "doc" ], @@ -17936,6 +20696,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc" + ], "doc/man1/openssl-smime.pod" => [ "doc" ], @@ -17963,6 +20726,24 @@ our %unified_info = ( "doc/man1/openssl-x509.pod" => [ "doc" ], + "exporters/OpenSSLConfig.cmake" => [ + "." + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "." + ], + "exporters/libcrypto.pc" => [ + "." + ], + "exporters/libssl.pc" => [ + "." + ], + "exporters/openssl.pc" => [ + "." + ], + "fuzz/acert-test" => [ + "include" + ], "fuzz/asn1-test" => [ "include" ], @@ -17993,12 +20774,69 @@ our %unified_info = ( "fuzz/ct-test" => [ "include" ], + "fuzz/decoder-test" => [ + "include" + ], + "fuzz/dtlsclient-test" => [ + "include" + ], + "fuzz/dtlsserver-test" => [ + "include" + ], + "fuzz/hashtable-test" => [ + "include" + ], + "fuzz/ml-dsa-test" => [ + "include" + ], + "fuzz/ml-kem-test" => [ + "include" + ], + "fuzz/pem-test" => [ + "include" + ], + "fuzz/provider-test" => [ + "include" + ], + "fuzz/punycode-test" => [ + "include" + ], + "fuzz/quic-client-test" => [ + "include" + ], + "fuzz/quic-lcidm-test" => [ + "include" + ], + "fuzz/quic-rcidm-test" => [ + "include" + ], + "fuzz/quic-server-test" => [ + "include" + ], + "fuzz/quic-srtm-test" => [ + "include" + ], "fuzz/server-test" => [ "include" ], + "fuzz/slh-dsa-test" => [ + "include" + ], + "fuzz/smime-test" => [ + "include" + ], + "fuzz/v3name-test" => [ + "include" + ], "fuzz/x509-test" => [ "include" ], + "include/internal/param_names.h" => [ + "util/perl" + ], + "include/openssl/core_names.h" => [ + "util/perl" + ], "libcrypto" => [ ".", "include", @@ -18009,6 +20847,9 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libcrypto.pc" => [ + "." + ], "libssl" => [ ".", "include" @@ -18017,6 +20858,12 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libssl.pc" => [ + "." + ], + "openssl.pc" => [ + "." + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der" ], @@ -18056,6 +20903,15 @@ our %unified_info = ( "providers/common/der/der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der" ], @@ -18068,6 +20924,15 @@ our %unified_info = ( "providers/common/der/der_rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der" ], @@ -18113,12 +20978,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov" ], @@ -18149,9 +21026,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der" ], @@ -18194,9 +21077,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18209,12 +21098,24 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18227,28 +21128,39 @@ our %unified_info = ( "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libdefault.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libfips.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/liblegacy.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" + ], + "providers/libtemplate.a" => [ + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" ], "test/aborttest" => [ "include", @@ -18317,6 +21229,14 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_addr_test" => [ + "include", + "apps/include" + ], + "test/bio_base64_test" => [ + "include", + "apps/include" + ], "test/bio_callback_test" => [ "include", "apps/include" @@ -18325,11 +21245,20 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_dgram_test" => [ + "include", + "apps/include", + "." + ], "test/bio_enc_test" => [ "include", "apps/include" ], - "test/bio_memleak_test" => [ + "test/bio_memleak_test" => [ + "include", + "apps/include" + ], + "test/bio_meth_test" => [ "include", "apps/include" ], @@ -18346,6 +21275,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_tfo_test" => [ + "include", + "apps/include", + "." + ], "test/bioprinttest" => [ "include", "apps/include" @@ -18360,6 +21294,9 @@ our %unified_info = ( "include", "apps/include" ], + "test/build_wincrypt_test" => [ + "include" + ], "test/buildtest_c_aes" => [ "include" ], @@ -18375,6 +21312,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => [ "include" ], + "test/buildtest_c_byteorder" => [ + "include" + ], "test/buildtest_c_camellia" => [ "include" ], @@ -18399,9 +21339,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => [ "include" ], - "test/buildtest_c_core_names" => [ - "include" - ], "test/buildtest_c_core_object" => [ "include" ], @@ -18426,6 +21363,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => [ "include" ], + "test/buildtest_c_e_ostime" => [ + "include" + ], "test/buildtest_c_ebcdic" => [ "include" ], @@ -18453,12 +21393,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => [ "include" ], + "test/buildtest_c_hpke" => [ + "include" + ], "test/buildtest_c_http" => [ "include" ], "test/buildtest_c_idea" => [ "include" ], + "test/buildtest_c_indicator" => [ + "include" + ], "test/buildtest_c_kdf" => [ "include" ], @@ -18474,6 +21420,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => [ "include" ], + "test/buildtest_c_ml_kem" => [ + "include" + ], "test/buildtest_c_modes" => [ "include" ], @@ -18504,6 +21453,9 @@ our %unified_info = ( "test/buildtest_c_provider" => [ "include" ], + "test/buildtest_c_quic" => [ + "include" + ], "test/buildtest_c_rand" => [ "include" ], @@ -18546,6 +21498,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => [ "include" ], + "test/buildtest_c_thread" => [ + "include" + ], "test/buildtest_c_tls1" => [ "include" ], @@ -18561,10 +21516,24 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => [ "include" ], + "test/byteorder_test" => [ + "include", + "apps/include" + ], + "test/ca_internals_test" => [ + ".", + "include", + "apps/include" + ], "test/casttest" => [ "include", "apps/include" ], + "test/cert_comp_test" => [ + "include", + "apps/include", + "." + ], "test/chacha_internal_test" => [ ".", "include", @@ -18688,6 +21657,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/decoder_propq_test" => [ + ".", + "include", + "apps/include" + ], "test/defltfips_test" => [ "include", "apps/include" @@ -18703,7 +21677,8 @@ our %unified_info = ( "test/drbgtest" => [ "include", "apps/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "test/dsa_no_digest_size_test" => [ "include", @@ -18746,7 +21721,9 @@ our %unified_info = ( "test/endecode_test" => [ ".", "include", - "apps/include" + "apps/include", + "providers/common/include", + "providers/implementations/include" ], "test/endecoder_legacy_test" => [ ".", @@ -18791,6 +21768,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_pkey_dhkem_test" => [ + "include", + "apps/include" + ], "test/evp_pkey_dparams_test" => [ "include", "apps/include" @@ -18799,10 +21780,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_skey_test" => [ + "include", + "apps/include" + ], "test/evp_test" => [ "include", "apps/include" ], + "test/evp_xof_test" => [ + "include", + "apps/include" + ], "test/exdatatest" => [ "include", "apps/include" @@ -18903,22 +21892,62 @@ our %unified_info = ( ".", "include" ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/pkcs12.o" => [ ".", "include" ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + ".", + "include" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ ".", "include" ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/ssl_test-bin-handshake.o" => [ ".", "include" @@ -18952,6 +21981,10 @@ our %unified_info = ( ".", "include" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/hexstr_test" => [ ".", "include", @@ -18961,6 +21994,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/hpke_test" => [ + "include", + "apps/include" + ], "test/http_test" => [ "include", "apps/include" @@ -18973,6 +22010,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/json_test" => [ + "include", + "apps/include" + ], "test/keymgmt_internal_test" => [ ".", "include", @@ -18987,6 +22028,10 @@ our %unified_info = ( "apps/include", "." ], + "test/list_test" => [ + "include", + "apps/include" + ], "test/localetest" => [ "include", "apps/include" @@ -19000,10 +22045,27 @@ our %unified_info = ( "include", "apps/include" ], + "test/membio_test" => [ + "include", + "apps/include", + "." + ], "test/memleaktest" => [ "include", "apps/include" ], + "test/ml_dsa_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_evp_extra_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_internal_test" => [ + "include", + "apps/include" + ], "test/modes_internal_test" => [ ".", "include", @@ -19038,6 +22100,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pairwise_fail_test" => [ + "include", + "apps/include" + ], "test/param_build_test" => [ "include", "apps/include" @@ -19071,6 +22137,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pkcs12_api_test" => [ + "include", + "apps/include" + ], "test/pkcs12_format_test" => [ "include", "apps/include" @@ -19092,6 +22162,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/priority_queue_test" => [ + "include", + "apps/include" + ], "test/property_test" => [ ".", "include", @@ -19105,6 +22179,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/provider_default_search_path_test" => [ + "include", + "apps/include" + ], "test/provider_fallback_test" => [ "include", "apps/include" @@ -19131,6 +22209,97 @@ our %unified_info = ( "include", "apps/include" ], + "test/quic_ackm_test" => [ + "include", + "apps/include" + ], + "test/quic_cc_test" => [ + "include", + "apps/include" + ], + "test/quic_cfq_test" => [ + "include", + "apps/include" + ], + "test/quic_client_test" => [ + "include", + "apps/include" + ], + "test/quic_fc_test" => [ + "include", + "apps/include" + ], + "test/quic_fifd_test" => [ + "include", + "apps/include" + ], + "test/quic_lcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_multistream_test" => [ + "include", + "apps/include" + ], + "test/quic_newcid_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_qlog_test" => [ + "include", + "apps/include" + ], + "test/quic_radix_test" => [ + "include", + "apps/include" + ], + "test/quic_rcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_record_test" => [ + "include", + "apps/include" + ], + "test/quic_srt_gen_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_srtm_test" => [ + "include", + "apps/include" + ], + "test/quic_stream_test" => [ + "include", + "apps/include" + ], + "test/quic_tserver_test" => [ + "include", + "apps/include" + ], + "test/quic_txp_test" => [ + "include", + "apps/include" + ], + "test/quic_txpim_test" => [ + "include", + "apps/include" + ], + "test/quic_wire_test" => [ + "include", + "apps/include" + ], + "test/quicapitest" => [ + "include", + "apps/include" + ], + "test/quicfaultstest" => [ + "include", + "apps/include", + "." + ], "test/rand_status_test" => [ "include", "apps/include" @@ -19151,14 +22320,20 @@ our %unified_info = ( "include", "apps/include" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "include", - "apps/include" + "apps/include", + "crypto" ], "test/recordlentest" => [ "include", "apps/include" ], + "test/rpktest" => [ + "include", + "apps/include", + "." + ], "test/rsa_complex" => [ "include", "apps/include" @@ -19177,6 +22352,15 @@ our %unified_info = ( "include", "apps/include" ], + "test/rsa_x931_test" => [ + ".", + "include", + "apps/include" + ], + "test/safe_math_test" => [ + "include", + "apps/include" + ], "test/sanitytest" => [ "include", "apps/include" @@ -19198,6 +22382,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/slh_dsa_test" => [ + "include", + "apps/include" + ], "test/sm2_internal_test" => [ "include", "apps/include" @@ -19228,6 +22416,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/ssl_handshake_rtt_test" => [ + "include", + "apps/include", + "." + ], "test/ssl_old_test" => [ ".", "include", @@ -19244,6 +22437,7 @@ our %unified_info = ( "test/sslapitest" => [ "include", "apps/include", + "providers/common/include", "." ], "test/sslbuffertest" => [ @@ -19258,6 +22452,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/strtoultest" => [ + "include", + "apps/include" + ], "test/sysdefaulttest" => [ "include", "apps/include" @@ -19266,7 +22464,13 @@ our %unified_info = ( "include", "apps/include" ], + "test/threadpool_test" => [ + ".", + "include", + "apps/include" + ], "test/threadstest" => [ + ".", "include", "apps/include" ], @@ -19278,6 +22482,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/time_test" => [ + "include", + "apps/include" + ], "test/tls13ccstest" => [ "include", "apps/include" @@ -19287,6 +22495,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/tls13groupselection_test" => [ + "include", + "apps/include" + ], "test/trace_api_test" => [ ".", "include", @@ -19325,6 +22537,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_acert_test" => [ + "include", + "apps/include" + ], "test/x509_check_cert_pkey_test" => [ "include", "apps/include" @@ -19338,6 +22554,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_load_cert_file_test" => [ + "include", + "apps/include" + ], + "test/x509_req_test" => [ + "include", + "apps/include" + ], + "test/x509_test" => [ + "include", + "apps/include" + ], "test/x509_time_test" => [ "include", "apps/include" @@ -19359,6 +22587,7 @@ our %unified_info = ( "providers/libdefault.a", "providers/libfips.a", "providers/liblegacy.a", + "providers/libtemplate.a", "test/libtestutil.a" ], "mandocs" => { @@ -19411,6 +22640,7 @@ our %unified_info = ( "doc/man/man1/openssl-s_server.1", "doc/man/man1/openssl-s_time.1", "doc/man/man1/openssl-sess_id.1", + "doc/man/man1/openssl-skeyutl.1", "doc/man/man1/openssl-smime.1", "doc/man/man1/openssl-speed.1", "doc/man/man1/openssl-spkac.1", @@ -19460,6 +22690,7 @@ our %unified_info = ( "doc/man/man3/BIO_find_type.3", "doc/man/man3/BIO_get_data.3", "doc/man/man3/BIO_get_ex_new_index.3", + "doc/man/man3/BIO_get_rpoll_descriptor.3", "doc/man/man3/BIO_meth_new.3", "doc/man/man3/BIO_new.3", "doc/man/man3/BIO_new_CMS.3", @@ -19472,11 +22703,13 @@ our %unified_info = ( "doc/man/man3/BIO_s_connect.3", "doc/man/man3/BIO_s_core.3", "doc/man/man3/BIO_s_datagram.3", + "doc/man/man3/BIO_s_dgram_pair.3", "doc/man/man3/BIO_s_fd.3", "doc/man/man3/BIO_s_file.3", "doc/man/man3/BIO_s_mem.3", "doc/man/man3/BIO_s_null.3", "doc/man/man3/BIO_s_socket.3", + "doc/man/man3/BIO_sendmmsg.3", "doc/man/man3/BIO_set_callback.3", "doc/man/man3/BIO_should_retry.3", "doc/man/man3/BIO_socket_wait.3", @@ -19501,6 +22734,7 @@ our %unified_info = ( "doc/man/man3/BN_swap.3", "doc/man/man3/BN_zero.3", "doc/man/man3/BUF_MEM_new.3", + "doc/man/man3/CMAC_CTX.3", "doc/man/man3/CMS_EncryptedData_decrypt.3", "doc/man/man3/CMS_EncryptedData_encrypt.3", "doc/man/man3/CMS_EnvelopedData_create.3", @@ -19523,6 +22757,7 @@ our %unified_info = ( "doc/man/man3/CMS_uncompress.3", "doc/man/man3/CMS_verify.3", "doc/man/man3/CMS_verify_receipt.3", + "doc/man/man3/COMP_CTX_new.3", "doc/man/man3/CONF_modules_free.3", "doc/man/man3/CONF_modules_load_file.3", "doc/man/man3/CRYPTO_THREAD_run_once.3", @@ -19556,6 +22791,8 @@ our %unified_info = ( "doc/man/man3/DSA_size.3", "doc/man/man3/DTLS_get_data_mtu.3", "doc/man/man3/DTLS_set_timer_cb.3", + "doc/man/man3/DTLSv1_get_timeout.3", + "doc/man/man3/DTLSv1_handle_timeout.3", "doc/man/man3/DTLSv1_listen.3", "doc/man/man3/ECDSA_SIG_new.3", "doc/man/man3/ECDSA_sign.3", @@ -19602,6 +22839,7 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_ctrl.3", "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3", "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3", + "doc/man/man3/EVP_PKEY_CTX_get_algor.3", "doc/man/man3/EVP_PKEY_CTX_new.3", "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3", "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3", @@ -19641,6 +22879,8 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_verify_recover.3", "doc/man/man3/EVP_RAND.3", "doc/man/man3/EVP_SIGNATURE.3", + "doc/man/man3/EVP_SKEY.3", + "doc/man/man3/EVP_SKEYMGMT.3", "doc/man/man3/EVP_SealInit.3", "doc/man/man3/EVP_SignInit.3", "doc/man/man3/EVP_VerifyInit.3", @@ -19670,6 +22910,7 @@ our %unified_info = ( "doc/man/man3/EVP_sm3.3", "doc/man/man3/EVP_sm4_cbc.3", "doc/man/man3/EVP_whirlpool.3", + "doc/man/man3/GENERAL_NAME.3", "doc/man/man3/HMAC.3", "doc/man/man3/MD5.3", "doc/man/man3/MDC2_Init.3", @@ -19694,14 +22935,18 @@ our %unified_info = ( "doc/man/man3/OPENSSL_init_ssl.3", "doc/man/man3/OPENSSL_instrument_bus.3", "doc/man/man3/OPENSSL_load_builtin_modules.3", + "doc/man/man3/OPENSSL_load_u16_le.3", "doc/man/man3/OPENSSL_malloc.3", + "doc/man/man3/OPENSSL_riscvcap.3", "doc/man/man3/OPENSSL_s390xcap.3", "doc/man/man3/OPENSSL_secure_malloc.3", "doc/man/man3/OPENSSL_strcasecmp.3", "doc/man/man3/OSSL_ALGORITHM.3", "doc/man/man3/OSSL_CALLBACK.3", + "doc/man/man3/OSSL_CMP_ATAV_set0.3", "doc/man/man3/OSSL_CMP_CTX_new.3", "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3", + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3", "doc/man/man3/OSSL_CMP_ITAV_set0.3", "doc/man/man3/OSSL_CMP_MSG_get0_header.3", "doc/man/man3/OSSL_CMP_MSG_http_perform.3", @@ -19725,18 +22970,27 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_CTX.3", "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3", "doc/man/man3/OSSL_ENCODER_to_bio.3", + "doc/man/man3/OSSL_ERR_STATE_save.3", "doc/man/man3/OSSL_ESS_check_signing_certs.3", + "doc/man/man3/OSSL_GENERAL_NAMES_print.3", + "doc/man/man3/OSSL_HPKE_CTX_new.3", "doc/man/man3/OSSL_HTTP_REQ_CTX.3", "doc/man/man3/OSSL_HTTP_parse_url.3", "doc/man/man3/OSSL_HTTP_transfer.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3", + "doc/man/man3/OSSL_INDICATOR_set_callback.3", "doc/man/man3/OSSL_ITEM.3", "doc/man/man3/OSSL_LIB_CTX.3", + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3", "doc/man/man3/OSSL_PARAM.3", "doc/man/man3/OSSL_PARAM_BLD.3", "doc/man/man3/OSSL_PARAM_allocate_from_text.3", "doc/man/man3/OSSL_PARAM_dup.3", "doc/man/man3/OSSL_PARAM_int.3", + "doc/man/man3/OSSL_PARAM_print_to_bio.3", "doc/man/man3/OSSL_PROVIDER.3", + "doc/man/man3/OSSL_QUIC_client_method.3", "doc/man/man3/OSSL_SELF_TEST_new.3", "doc/man/man3/OSSL_SELF_TEST_set_callback.3", "doc/man/man3/OSSL_STORE_INFO.3", @@ -19745,11 +22999,13 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_attach.3", "doc/man/man3/OSSL_STORE_expect.3", "doc/man/man3/OSSL_STORE_open.3", + "doc/man/man3/OSSL_sleep.3", "doc/man/man3/OSSL_trace_enabled.3", "doc/man/man3/OSSL_trace_get_category_num.3", "doc/man/man3/OSSL_trace_set_channel.3", "doc/man/man3/OpenSSL_add_all_algorithms.3", "doc/man/man3/OpenSSL_version.3", + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3", "doc/man/man3/PEM_X509_INFO_read_bio_ex.3", "doc/man/man3/PEM_bytes_read_bio.3", "doc/man/man3/PEM_read.3", @@ -19762,6 +23018,7 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_create_cert.3", "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3", "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3", + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3", "doc/man/man3/PKCS12_add1_attr_by_NID.3", "doc/man/man3/PKCS12_add_CSPName_asc.3", "doc/man/man3/PKCS12_add_cert.3", @@ -19853,6 +23110,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_sess_set_get_cb.3", "doc/man/man3/SSL_CTX_sessions.3", "doc/man/man3/SSL_CTX_set0_CA_list.3", + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3", "doc/man/man3/SSL_CTX_set1_curves.3", "doc/man/man3/SSL_CTX_set1_sigalgs.3", "doc/man/man3/SSL_CTX_set1_verify_cert_store.3", @@ -19866,6 +23124,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_ct_validation_callback.3", "doc/man/man3/SSL_CTX_set_ctlog_list_file.3", "doc/man/man3/SSL_CTX_set_default_passwd_cb.3", + "doc/man/man3/SSL_CTX_set_domain_flags.3", "doc/man/man3/SSL_CTX_set_generate_session_id.3", "doc/man/man3/SSL_CTX_set_info_callback.3", "doc/man/man3/SSL_CTX_set_keylog_callback.3", @@ -19873,6 +23132,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_min_proto_version.3", "doc/man/man3/SSL_CTX_set_mode.3", "doc/man/man3/SSL_CTX_set_msg_callback.3", + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3", "doc/man/man3/SSL_CTX_set_num_tickets.3", "doc/man/man3/SSL_CTX_set_options.3", "doc/man/man3/SSL_CTX_set_psk_client_callback.3", @@ -19911,6 +23171,7 @@ our %unified_info = ( "doc/man/man3/SSL_SESSION_print.3", "doc/man/man3/SSL_SESSION_set1_id.3", "doc/man/man3/SSL_accept.3", + "doc/man/man3/SSL_accept_stream.3", "doc/man/man3/SSL_alert_type_string.3", "doc/man/man3/SSL_alloc_buffers.3", "doc/man/man3/SSL_check_chain.3", @@ -19920,59 +23181,90 @@ our %unified_info = ( "doc/man/man3/SSL_export_keying_material.3", "doc/man/man3/SSL_extension_supported.3", "doc/man/man3/SSL_free.3", + "doc/man/man3/SSL_get0_connection.3", + "doc/man/man3/SSL_get0_group_name.3", + "doc/man/man3/SSL_get0_peer_rpk.3", "doc/man/man3/SSL_get0_peer_scts.3", + "doc/man/man3/SSL_get1_builtin_sigalgs.3", "doc/man/man3/SSL_get_SSL_CTX.3", "doc/man/man3/SSL_get_all_async_fds.3", "doc/man/man3/SSL_get_certificate.3", "doc/man/man3/SSL_get_ciphers.3", "doc/man/man3/SSL_get_client_random.3", + "doc/man/man3/SSL_get_conn_close_info.3", "doc/man/man3/SSL_get_current_cipher.3", "doc/man/man3/SSL_get_default_timeout.3", "doc/man/man3/SSL_get_error.3", + "doc/man/man3/SSL_get_event_timeout.3", "doc/man/man3/SSL_get_extms_support.3", "doc/man/man3/SSL_get_fd.3", + "doc/man/man3/SSL_get_handshake_rtt.3", "doc/man/man3/SSL_get_peer_cert_chain.3", "doc/man/man3/SSL_get_peer_certificate.3", "doc/man/man3/SSL_get_peer_signature_nid.3", "doc/man/man3/SSL_get_peer_tmp_key.3", "doc/man/man3/SSL_get_psk_identity.3", "doc/man/man3/SSL_get_rbio.3", + "doc/man/man3/SSL_get_rpoll_descriptor.3", "doc/man/man3/SSL_get_session.3", "doc/man/man3/SSL_get_shared_sigalgs.3", + "doc/man/man3/SSL_get_stream_id.3", + "doc/man/man3/SSL_get_stream_read_state.3", + "doc/man/man3/SSL_get_value_uint.3", "doc/man/man3/SSL_get_verify_result.3", "doc/man/man3/SSL_get_version.3", "doc/man/man3/SSL_group_to_name.3", + "doc/man/man3/SSL_handle_events.3", "doc/man/man3/SSL_in_init.3", + "doc/man/man3/SSL_inject_net_dgram.3", "doc/man/man3/SSL_key_update.3", "doc/man/man3/SSL_library_init.3", "doc/man/man3/SSL_load_client_CA_file.3", "doc/man/man3/SSL_new.3", + "doc/man/man3/SSL_new_domain.3", + "doc/man/man3/SSL_new_listener.3", + "doc/man/man3/SSL_new_stream.3", "doc/man/man3/SSL_pending.3", + "doc/man/man3/SSL_poll.3", "doc/man/man3/SSL_read.3", "doc/man/man3/SSL_read_early_data.3", "doc/man/man3/SSL_rstate_string.3", "doc/man/man3/SSL_session_reused.3", "doc/man/man3/SSL_set1_host.3", + "doc/man/man3/SSL_set1_initial_peer_addr.3", + "doc/man/man3/SSL_set1_server_cert_type.3", "doc/man/man3/SSL_set_async_callback.3", "doc/man/man3/SSL_set_bio.3", + "doc/man/man3/SSL_set_blocking_mode.3", "doc/man/man3/SSL_set_connect_state.3", + "doc/man/man3/SSL_set_default_stream_mode.3", "doc/man/man3/SSL_set_fd.3", + "doc/man/man3/SSL_set_incoming_stream_policy.3", + "doc/man/man3/SSL_set_quic_tls_cbs.3", "doc/man/man3/SSL_set_retry_verify.3", "doc/man/man3/SSL_set_session.3", + "doc/man/man3/SSL_set_session_secret_cb.3", "doc/man/man3/SSL_set_shutdown.3", "doc/man/man3/SSL_set_verify_result.3", "doc/man/man3/SSL_shutdown.3", "doc/man/man3/SSL_state_string.3", + "doc/man/man3/SSL_stream_conclude.3", + "doc/man/man3/SSL_stream_reset.3", "doc/man/man3/SSL_want.3", "doc/man/man3/SSL_write.3", "doc/man/man3/TS_RESP_CTX_new.3", - "doc/man/man3/TS_VERIFY_CTX_set_certs.3", + "doc/man/man3/TS_VERIFY_CTX.3", "doc/man/man3/UI_STRING.3", "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", + "doc/man/man3/X509_ACERT_add1_attr.3", + "doc/man/man3/X509_ACERT_add_attr_nconf.3", + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3", + "doc/man/man3/X509_ACERT_get_attr.3", + "doc/man/man3/X509_ACERT_print_ex.3", "doc/man/man3/X509_ALGOR_dup.3", "doc/man/man3/X509_ATTRIBUTE.3", "doc/man/man3/X509_CRL_get0_by_serial.3", @@ -19989,6 +23281,7 @@ our %unified_info = ( "doc/man/man3/X509_REQ_get_attr.3", "doc/man/man3/X509_REQ_get_extensions.3", "doc/man/man3/X509_SIG_get0.3", + "doc/man/man3/X509_STORE_CTX_get_by_subject.3", "doc/man/man3/X509_STORE_CTX_get_error.3", "doc/man/man3/X509_STORE_CTX_new.3", "doc/man/man3/X509_STORE_CTX_set_verify_cb.3", @@ -20011,6 +23304,7 @@ our %unified_info = ( "doc/man/man3/X509_get0_notBefore.3", "doc/man/man3/X509_get0_signature.3", "doc/man/man3/X509_get0_uids.3", + "doc/man/man3/X509_get_default_cert_file.3", "doc/man/man3/X509_get_extension_flags.3", "doc/man/man3/X509_get_pubkey.3", "doc/man/man3/X509_get_serialNumber.3", @@ -20056,12 +23350,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-RC5.7", "doc/man/man7/EVP_CIPHER-SEED.7", "doc/man/man7/EVP_CIPHER-SM4.7", + "doc/man/man7/EVP_KDF-ARGON2.7", "doc/man/man7/EVP_KDF-HKDF.7", + "doc/man/man7/EVP_KDF-HMAC-DRBG.7", "doc/man/man7/EVP_KDF-KB.7", "doc/man/man7/EVP_KDF-KRB5KDF.7", "doc/man/man7/EVP_KDF-PBKDF1.7", "doc/man/man7/EVP_KDF-PBKDF2.7", "doc/man/man7/EVP_KDF-PKCS12KDF.7", + "doc/man/man7/EVP_KDF-PVKKDF.7", "doc/man/man7/EVP_KDF-SCRYPT.7", "doc/man/man7/EVP_KDF-SS.7", "doc/man/man7/EVP_KDF-SSHKDF.7", @@ -20070,7 +23367,10 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X942-ASN1.7", "doc/man/man7/EVP_KDF-X942-CONCAT.7", "doc/man/man7/EVP_KDF-X963.7", + "doc/man/man7/EVP_KEM-EC.7", + "doc/man/man7/EVP_KEM-ML-KEM.7", "doc/man/man7/EVP_KEM-RSA.7", + "doc/man/man7/EVP_KEM-X25519.7", "doc/man/man7/EVP_KEYEXCH-DH.7", "doc/man/man7/EVP_KEYEXCH-ECDH.7", "doc/man/man7/EVP_KEYEXCH-X25519.7", @@ -20082,6 +23382,7 @@ our %unified_info = ( "doc/man/man7/EVP_MAC-Poly1305.7", "doc/man/man7/EVP_MAC-Siphash.7", "doc/man/man7/EVP_MD-BLAKE2.7", + "doc/man/man7/EVP_MD-KECCAK.7", "doc/man/man7/EVP_MD-MD2.7", "doc/man/man7/EVP_MD-MD4.7", "doc/man/man7/EVP_MD-MD5-SHA1.7", @@ -20101,12 +23402,17 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-EC.7", "doc/man/man7/EVP_PKEY-FFC.7", "doc/man/man7/EVP_PKEY-HMAC.7", + "doc/man/man7/EVP_PKEY-ML-DSA.7", + "doc/man/man7/EVP_PKEY-ML-KEM.7", "doc/man/man7/EVP_PKEY-RSA.7", + "doc/man/man7/EVP_PKEY-SLH-DSA.7", "doc/man/man7/EVP_PKEY-SM2.7", "doc/man/man7/EVP_PKEY-X25519.7", + "doc/man/man7/EVP_RAND-CRNG-TEST.7", "doc/man/man7/EVP_RAND-CTR-DRBG.7", "doc/man/man7/EVP_RAND-HASH-DRBG.7", "doc/man/man7/EVP_RAND-HMAC-DRBG.7", + "doc/man/man7/EVP_RAND-JITTER.7", "doc/man/man7/EVP_RAND-SEED-SRC.7", "doc/man/man7/EVP_RAND-TEST-RAND.7", "doc/man/man7/EVP_RAND.7", @@ -20114,17 +23420,19 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-ECDSA.7", "doc/man/man7/EVP_SIGNATURE-ED25519.7", "doc/man/man7/EVP_SIGNATURE-HMAC.7", + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7", "doc/man/man7/EVP_SIGNATURE-RSA.7", + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7", "doc/man/man7/OSSL_PROVIDER-FIPS.7", "doc/man/man7/OSSL_PROVIDER-base.7", "doc/man/man7/OSSL_PROVIDER-default.7", "doc/man/man7/OSSL_PROVIDER-legacy.7", "doc/man/man7/OSSL_PROVIDER-null.7", + "doc/man/man7/OSSL_STORE-winstore.7", "doc/man/man7/RAND.7", "doc/man/man7/RSA-PSS.7", "doc/man/man7/X25519.7", "doc/man/man7/bio.7", - "doc/man/man7/crypto.7", "doc/man/man7/ct.7", "doc/man/man7/des_modes.7", "doc/man/man7/evp.7", @@ -20135,14 +23443,31 @@ our %unified_info = ( "doc/man/man7/life_cycle-mac.7", "doc/man/man7/life_cycle-pkey.7", "doc/man/man7/life_cycle-rand.7", - "doc/man/man7/migration_guide.7", "doc/man/man7/openssl-core.h.7", "doc/man/man7/openssl-core_dispatch.h.7", "doc/man/man7/openssl-core_names.h.7", "doc/man/man7/openssl-env.7", "doc/man/man7/openssl-glossary.7", + "doc/man/man7/openssl-qlog.7", + "doc/man/man7/openssl-quic-concurrency.7", + "doc/man/man7/openssl-quic.7", "doc/man/man7/openssl-threads.7", "doc/man/man7/openssl_user_macros.7", + "doc/man/man7/ossl-guide-introduction.7", + "doc/man/man7/ossl-guide-libcrypto-introduction.7", + "doc/man/man7/ossl-guide-libraries-introduction.7", + "doc/man/man7/ossl-guide-libssl-introduction.7", + "doc/man/man7/ossl-guide-migration.7", + "doc/man/man7/ossl-guide-quic-client-block.7", + "doc/man/man7/ossl-guide-quic-client-non-block.7", + "doc/man/man7/ossl-guide-quic-introduction.7", + "doc/man/man7/ossl-guide-quic-multi-stream.7", + "doc/man/man7/ossl-guide-quic-server-block.7", + "doc/man/man7/ossl-guide-quic-server-non-block.7", + "doc/man/man7/ossl-guide-tls-client-block.7", + "doc/man/man7/ossl-guide-tls-client-non-block.7", + "doc/man/man7/ossl-guide-tls-introduction.7", + "doc/man/man7/ossl-guide-tls-server-block.7", "doc/man/man7/ossl_store-file.7", "doc/man/man7/ossl_store.7", "doc/man/man7/passphrase-encoding.7", @@ -20161,10 +23486,10 @@ our %unified_info = ( "doc/man/man7/provider-object.7", "doc/man/man7/provider-rand.7", "doc/man/man7/provider-signature.7", + "doc/man/man7/provider-skeymgmt.7", "doc/man/man7/provider-storemgmt.7", "doc/man/man7/provider.7", "doc/man/man7/proxy-certificates.7", - "doc/man/man7/ssl.7", "doc/man/man7/x509.7" ] }, @@ -20176,6 +23501,7 @@ our %unified_info = ( ], "programs" => [ "apps/openssl", + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -20186,7 +23512,24 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test", "test/aborttest", "test/acvp_test", @@ -20204,21 +23547,28 @@ our %unified_info = ( "test/asynctest", "test/bad_dtls_test", "test/bftest", + "test/bio_addr_test", + "test/bio_base64_test", "test/bio_callback_test", "test/bio_core_test", + "test/bio_dgram_test", "test/bio_enc_test", "test/bio_memleak_test", + "test/bio_meth_test", "test/bio_prefix_text", "test/bio_pw_callback_test", "test/bio_readbuffer_test", + "test/bio_tfo_test", "test/bioprinttest", "test/bn_internal_test", "test/bntest", + "test/build_wincrypt_test", "test/buildtest_c_aes", "test/buildtest_c_async", "test/buildtest_c_blowfish", "test/buildtest_c_bn", "test/buildtest_c_buffer", + "test/buildtest_c_byteorder", "test/buildtest_c_camellia", "test/buildtest_c_cast", "test/buildtest_c_cmac", @@ -20227,7 +23577,6 @@ our %unified_info = ( "test/buildtest_c_conftypes", "test/buildtest_c_core", "test/buildtest_c_core_dispatch", - "test/buildtest_c_core_names", "test/buildtest_c_core_object", "test/buildtest_c_cryptoerr_legacy", "test/buildtest_c_decoder", @@ -20236,6 +23585,7 @@ our %unified_info = ( "test/buildtest_c_dsa", "test/buildtest_c_dtls1", "test/buildtest_c_e_os2", + "test/buildtest_c_e_ostime", "test/buildtest_c_ebcdic", "test/buildtest_c_ec", "test/buildtest_c_ecdh", @@ -20245,13 +23595,16 @@ our %unified_info = ( "test/buildtest_c_evp", "test/buildtest_c_fips_names", "test/buildtest_c_hmac", + "test/buildtest_c_hpke", "test/buildtest_c_http", "test/buildtest_c_idea", + "test/buildtest_c_indicator", "test/buildtest_c_kdf", "test/buildtest_c_macros", "test/buildtest_c_md4", "test/buildtest_c_md5", "test/buildtest_c_mdc2", + "test/buildtest_c_ml_kem", "test/buildtest_c_modes", "test/buildtest_c_obj_mac", "test/buildtest_c_objects", @@ -20262,6 +23615,7 @@ our %unified_info = ( "test/buildtest_c_pem2", "test/buildtest_c_prov_ssl", "test/buildtest_c_provider", + "test/buildtest_c_quic", "test/buildtest_c_rand", "test/buildtest_c_rc2", "test/buildtest_c_rc4", @@ -20276,11 +23630,14 @@ our %unified_info = ( "test/buildtest_c_stack", "test/buildtest_c_store", "test/buildtest_c_symhacks", + "test/buildtest_c_thread", "test/buildtest_c_tls1", "test/buildtest_c_ts", "test/buildtest_c_txt_db", "test/buildtest_c_types", "test/buildtest_c_whrlpool", + "test/byteorder_test", + "test/ca_internals_test", "test/casttest", "test/chacha_internal_test", "test/cipher_overhead_test", @@ -20309,6 +23666,7 @@ our %unified_info = ( "test/curve448_internal_test", "test/d2i_test", "test/danetest", + "test/decoder_propq_test", "test/defltfips_test", "test/destest", "test/dhtest", @@ -20333,9 +23691,12 @@ our %unified_info = ( "test/evp_kdf_test", "test/evp_libctx_test", "test/evp_pkey_ctx_new_from_name", + "test/evp_pkey_dhkem_test", "test/evp_pkey_dparams_test", "test/evp_pkey_provided_test", + "test/evp_skey_test", "test/evp_test", + "test/evp_xof_test", "test/exdatatest", "test/exptest", "test/ext_internal_test", @@ -20345,21 +23706,29 @@ our %unified_info = ( "test/gmdifftest", "test/hexstr_test", "test/hmactest", + "test/hpke_test", "test/http_test", "test/ideatest", "test/igetest", + "test/json_test", "test/keymgmt_internal_test", "test/lhash_test", + "test/list_test", "test/localetest", "test/mdc2_internal_test", "test/mdc2test", + "test/membio_test", "test/memleaktest", + "test/ml_dsa_test", + "test/ml_kem_evp_extra_test", + "test/ml_kem_internal_test", "test/modes_internal_test", "test/namemap_internal_test", "test/nodefltctxtest", "test/ocspapitest", "test/ossl_store_test", "test/packettest", + "test/pairwise_fail_test", "test/param_build_test", "test/params_api_test", "test/params_conversion_test", @@ -20368,36 +23737,65 @@ our %unified_info = ( "test/pbetest", "test/pem_read_depr_test", "test/pemtest", + "test/pkcs12_api_test", "test/pkcs12_format_test", "test/pkcs7_test", "test/pkey_meth_kdf_test", "test/pkey_meth_test", "test/poly1305_internal_test", + "test/priority_queue_test", "test/property_test", "test/prov_config_test", "test/provfetchtest", + "test/provider_default_search_path_test", "test/provider_fallback_test", "test/provider_internal_test", "test/provider_pkey_test", "test/provider_status_test", "test/provider_test", "test/punycode_test", + "test/quic_ackm_test", + "test/quic_cc_test", + "test/quic_cfq_test", + "test/quic_client_test", + "test/quic_fc_test", + "test/quic_fifd_test", + "test/quic_lcidm_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_qlog_test", + "test/quic_radix_test", + "test/quic_rcidm_test", + "test/quic_record_test", + "test/quic_srt_gen_test", + "test/quic_srtm_test", + "test/quic_stream_test", + "test/quic_tserver_test", + "test/quic_txp_test", + "test/quic_txpim_test", + "test/quic_wire_test", + "test/quicapitest", + "test/quicfaultstest", "test/rand_status_test", "test/rand_test", "test/rc2test", "test/rc4test", "test/rc5test", - "test/rdrand_sanitytest", + "test/rdcpu_sanitytest", "test/recordlentest", + "test/rpktest", "test/rsa_complex", "test/rsa_mp_test", "test/rsa_sp800_56b_test", "test/rsa_test", + "test/rsa_x931_test", + "test/safe_math_test", "test/sanitytest", "test/secmemtest", "test/servername_test", "test/sha_test", "test/siphash_internal_test", + "test/slh_dsa_test", "test/sm2_internal_test", "test/sm3_internal_test", "test/sm4_internal_test", @@ -20405,6 +23803,7 @@ our %unified_info = ( "test/srptest", "test/ssl_cert_table_internal_test", "test/ssl_ctx_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", @@ -20412,13 +23811,17 @@ our %unified_info = ( "test/sslbuffertest", "test/sslcorrupttest", "test/stack_test", + "test/strtoultest", "test/sysdefaulttest", "test/test_test", + "test/threadpool_test", "test/threadstest", "test/threadstest_fips", "test/time_offset_test", + "test/time_test", "test/tls13ccstest", "test/tls13encryptiontest", + "test/tls13groupselection_test", "test/trace_api_test", "test/uitest", "test/upcallstest", @@ -20428,9 +23831,13 @@ our %unified_info = ( "test/verify_extra_test", "test/versions", "test/wpackettest", + "test/x509_acert_test", "test/x509_check_cert_pkey_test", "test/x509_dup_cert_test", "test/x509_internal_test", + "test/x509_load_cert_file_test", + "test/x509_req_test", + "test/x509_test", "test/x509_time_test", "test/x509aux" ], @@ -20446,6 +23853,33 @@ our %unified_info = ( "apps/CA.pl" => [ "apps/CA.pl.in" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/ca.c" + ], + "apps/lib/ca_internals_test-bin-app_libctx.o" => [ + "apps/lib/app_libctx.c" + ], + "apps/lib/ca_internals_test-bin-app_provider.o" => [ + "apps/lib/app_provider.c" + ], + "apps/lib/ca_internals_test-bin-app_rand.o" => [ + "apps/lib/app_rand.c" + ], + "apps/lib/ca_internals_test-bin-app_x509.o" => [ + "apps/lib/app_x509.c" + ], + "apps/lib/ca_internals_test-bin-apps.o" => [ + "apps/lib/apps.c" + ], + "apps/lib/ca_internals_test-bin-apps_ui.o" => [ + "apps/lib/apps_ui.c" + ], + "apps/lib/ca_internals_test-bin-engine.o" => [ + "apps/lib/engine.c" + ], + "apps/lib/ca_internals_test-bin-fmt.o" => [ + "apps/lib/fmt.c" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/lib/cmp_mock_srv.c" ], @@ -20467,6 +23901,9 @@ our %unified_info = ( "apps/lib/libapps-lib-apps.o" => [ "apps/lib/apps.c" ], + "apps/lib/libapps-lib-apps_opt_printf.o" => [ + "apps/lib/apps_opt_printf.c" + ], "apps/lib/libapps-lib-apps_ui.o" => [ "apps/lib/apps_ui.c" ], @@ -20485,6 +23922,9 @@ our %unified_info = ( "apps/lib/libapps-lib-http_server.o" => [ "apps/lib/http_server.c" ], + "apps/lib/libapps-lib-log.o" => [ + "apps/lib/log.c" + ], "apps/lib/libapps-lib-names.o" => [ "apps/lib/names.c" ], @@ -20516,12 +23956,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -20575,6 +24017,7 @@ our %unified_info = ( "apps/openssl-bin-s_server.o", "apps/openssl-bin-s_time.o", "apps/openssl-bin-sess_id.o", + "apps/openssl-bin-skeyutl.o", "apps/openssl-bin-smime.o", "apps/openssl-bin-speed.o", "apps/openssl-bin-spkac.o", @@ -20720,6 +24163,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/sess_id.c" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/skeyutl.c" + ], "apps/openssl-bin-smime.o" => [ "apps/smime.c" ], @@ -20795,6 +24241,12 @@ our %unified_info = ( "crypto/aria/libcrypto-lib-aria.o" => [ "crypto/aria/aria.c" ], + "crypto/asn1/asn1_time_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], + "crypto/asn1/ca_internals_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], "crypto/asn1/libcrypto-lib-a_bitstr.o" => [ "crypto/asn1/a_bitstr.c" ], @@ -20987,6 +24439,9 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" => [ "crypto/asn1/x_val.c" ], + "crypto/asn1_time_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/async/arch/libcrypto-lib-async_null.o" => [ "crypto/async/arch/async_null.c" ], @@ -21080,6 +24535,9 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_dgram.o" => [ "crypto/bio/bss_dgram.c" ], + "crypto/bio/libcrypto-lib-bss_dgram_pair.o" => [ + "crypto/bio/bss_dgram_pair.c" + ], "crypto/bio/libcrypto-lib-bss_fd.o" => [ "crypto/bio/bss_fd.c" ], @@ -21311,6 +24769,9 @@ our %unified_info = ( "crypto/buffer/libfips-lib-buffer.o" => [ "crypto/buffer/buffer.c" ], + "crypto/ca_internals_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/camellia/libcrypto-lib-cmll-x86.o" => [ "crypto/camellia/cmll-x86.S" ], @@ -21362,6 +24823,9 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_err.o" => [ "crypto/cmp/cmp_err.c" ], + "crypto/cmp/libcrypto-lib-cmp_genm.o" => [ + "crypto/cmp/cmp_genm.c" + ], "crypto/cmp/libcrypto-lib-cmp_hdr.o" => [ "crypto/cmp/cmp_hdr.c" ], @@ -22049,9 +25513,15 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_blocks.o" => [ "crypto/err/err_blocks.c" ], + "crypto/err/libcrypto-lib-err_mark.o" => [ + "crypto/err/err_mark.c" + ], "crypto/err/libcrypto-lib-err_prn.o" => [ "crypto/err/err_prn.c" ], + "crypto/err/libcrypto-lib-err_save.o" => [ + "crypto/err/err_save.c" + ], "crypto/ess/libcrypto-lib-ess_asn1.o" => [ "crypto/ess/ess_asn1.c" ], @@ -22298,9 +25768,15 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libcrypto-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libcrypto-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libcrypto-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/evp/libfips-lib-asymcipher.o" => [ "crypto/evp/asymcipher.c" ], @@ -22346,9 +25822,6 @@ our %unified_info = ( "crypto/evp/libfips-lib-keymgmt_meth.o" => [ "crypto/evp/keymgmt_meth.c" ], - "crypto/evp/libfips-lib-m_sigver.o" => [ - "crypto/evp/m_sigver.c" - ], "crypto/evp/libfips-lib-mac_lib.o" => [ "crypto/evp/mac_lib.c" ], @@ -22367,9 +25840,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libfips-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libfips-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libfips-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/ffc/libcrypto-lib-ffc_backend.o" => [ "crypto/ffc/ffc_backend.c" ], @@ -22412,12 +25891,30 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params_validate.o" => [ "crypto/ffc/ffc_params_validate.c" ], + "crypto/hashtable/libcrypto-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libcrypto-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], + "crypto/hashtable/libfips-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libfips-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], "crypto/hmac/libcrypto-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], "crypto/hmac/libfips-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], + "crypto/hpke/libcrypto-lib-hpke.o" => [ + "crypto/hpke/hpke.c" + ], + "crypto/hpke/libcrypto-lib-hpke_util.o" => [ + "crypto/hpke/hpke_util.c" + ], "crypto/http/libcrypto-lib-http_client.o" => [ "crypto/http/http_client.c" ], @@ -22460,6 +25957,9 @@ our %unified_info = ( "crypto/libcrypto-lib-bsearch.o" => [ "crypto/bsearch.c" ], + "crypto/libcrypto-lib-comp_methods.o" => [ + "crypto/comp_methods.c" + ], "crypto/libcrypto-lib-context.o" => [ "crypto/context.c" ], @@ -22487,9 +25987,15 @@ our %unified_info = ( "crypto/libcrypto-lib-cversion.o" => [ "crypto/cversion.c" ], + "crypto/libcrypto-lib-defaults.o" => [ + "crypto/defaults.c" + ], "crypto/libcrypto-lib-der_writer.o" => [ "crypto/der_writer.c" ], + "crypto/libcrypto-lib-deterministic_nonce.o" => [ + "crypto/deterministic_nonce.c" + ], "crypto/libcrypto-lib-ebcdic.o" => [ "crypto/ebcdic.c" ], @@ -22499,6 +26005,9 @@ our %unified_info = ( "crypto/libcrypto-lib-getenv.o" => [ "crypto/getenv.c" ], + "crypto/libcrypto-lib-indicator_core.o" => [ + "crypto/indicator_core.c" + ], "crypto/libcrypto-lib-info.o" => [ "crypto/info.c" ], @@ -22547,6 +26056,9 @@ our %unified_info = ( "crypto/libcrypto-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libcrypto-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libcrypto-lib-passphrase.o" => [ "crypto/passphrase.c" ], @@ -22568,12 +26080,21 @@ our %unified_info = ( "crypto/libcrypto-lib-punycode.o" => [ "crypto/punycode.c" ], + "crypto/libcrypto-lib-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/libcrypto-lib-self_test_core.o" => [ "crypto/self_test_core.c" ], + "crypto/libcrypto-lib-sleep.o" => [ + "crypto/sleep.c" + ], "crypto/libcrypto-lib-sparse_array.o" => [ "crypto/sparse_array.c" ], + "crypto/libcrypto-lib-ssl_err.o" => [ + "crypto/ssl_err.c" + ], "crypto/libcrypto-lib-threads_lib.o" => [ "crypto/threads_lib.c" ], @@ -22586,6 +26107,9 @@ our %unified_info = ( "crypto/libcrypto-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libcrypto-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libcrypto-lib-trace.o" => [ "crypto/trace.c" ], @@ -22652,6 +26176,9 @@ our %unified_info = ( "crypto/libfips-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libfips-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libfips-lib-provider_core.o" => [ "crypto/provider_core.c" ], @@ -22676,6 +26203,9 @@ our %unified_info = ( "crypto/libfips-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libfips-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libfips-lib-x86cpuid.o" => [ "crypto/x86cpuid.S" ], @@ -22703,6 +26233,60 @@ our %unified_info = ( "crypto/mdc2/libcrypto-lib-mdc2dgst.o" => [ "crypto/mdc2/mdc2dgst.c" ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_kem/libcrypto-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], + "crypto/ml_kem/libfips-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], "crypto/modes/libcrypto-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22739,6 +26323,9 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libcrypto-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/modes/libfips-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22766,6 +26353,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libfips-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/objects/libcrypto-lib-o_names.o" => [ "crypto/objects/o_names.c" ], @@ -22811,6 +26401,9 @@ our %unified_info = ( "crypto/ocsp/libcrypto-lib-v3_ocsp.o" => [ "crypto/ocsp/v3_ocsp.c" ], + "crypto/packettest-bin-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/pem/libcrypto-lib-pem_all.o" => [ "crypto/pem/pem_all.c" ], @@ -22973,6 +26566,9 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_pool.o" => [ "crypto/rand/rand_pool.c" ], + "crypto/rand/libcrypto-lib-rand_uniform.o" => [ + "crypto/rand/rand_uniform.c" + ], "crypto/rand/libcrypto-lib-randfile.o" => [ "crypto/rand/randfile.c" ], @@ -23204,6 +26800,66 @@ our %unified_info = ( "crypto/siphash/libcrypto-lib-siphash.o" => [ "crypto/siphash/siphash.c" ], + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], + "crypto/slh_dsa/libfips-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libfips-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libfips-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libfips-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libfips-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], "crypto/sm2/libcrypto-lib-sm2_crypt.o" => [ "crypto/sm2/sm2_crypt.c" ], @@ -23258,6 +26914,42 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_strings.o" => [ "crypto/store/store_strings.c" ], + "crypto/thread/arch/libcrypto-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/arch/libfips-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libfips-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libfips-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/libcrypto-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libcrypto-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libcrypto-lib-internal.o" => [ + "crypto/thread/internal.c" + ], + "crypto/thread/libfips-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libfips-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libfips-lib-internal.o" => [ + "crypto/thread/internal.c" + ], "crypto/ts/libcrypto-lib-ts_asn1.o" => [ "crypto/ts/ts_asn1.c" ], @@ -23345,6 +27037,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_tree.o" => [ "crypto/x509/pcy_tree.c" ], + "crypto/x509/libcrypto-lib-t_acert.o" => [ + "crypto/x509/t_acert.c" + ], "crypto/x509/libcrypto-lib-t_crl.o" => [ "crypto/x509/t_crl.c" ], @@ -23354,6 +27049,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-t_x509.o" => [ "crypto/x509/t_x509.c" ], + "crypto/x509/libcrypto-lib-v3_aaa.o" => [ + "crypto/x509/v3_aaa.c" + ], + "crypto/x509/libcrypto-lib-v3_ac_tgt.o" => [ + "crypto/x509/v3_ac_tgt.c" + ], "crypto/x509/libcrypto-lib-v3_addr.o" => [ "crypto/x509/v3_addr.c" ], @@ -23369,6 +27070,21 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_asid.o" => [ "crypto/x509/v3_asid.c" ], + "crypto/x509/libcrypto-lib-v3_attrdesc.o" => [ + "crypto/x509/v3_attrdesc.c" + ], + "crypto/x509/libcrypto-lib-v3_attrmap.o" => [ + "crypto/x509/v3_attrmap.c" + ], + "crypto/x509/libcrypto-lib-v3_audit_id.o" => [ + "crypto/x509/v3_audit_id.c" + ], + "crypto/x509/libcrypto-lib-v3_authattid.o" => [ + "crypto/x509/v3_authattid.c" + ], + "crypto/x509/libcrypto-lib-v3_battcons.o" => [ + "crypto/x509/v3_battcons.c" + ], "crypto/x509/libcrypto-lib-v3_bcons.o" => [ "crypto/x509/v3_bcons.c" ], @@ -23393,15 +27109,24 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_genn.o" => [ "crypto/x509/v3_genn.c" ], + "crypto/x509/libcrypto-lib-v3_group_ac.o" => [ + "crypto/x509/v3_group_ac.c" + ], "crypto/x509/libcrypto-lib-v3_ia5.o" => [ "crypto/x509/v3_ia5.c" ], + "crypto/x509/libcrypto-lib-v3_ind_iss.o" => [ + "crypto/x509/v3_ind_iss.c" + ], "crypto/x509/libcrypto-lib-v3_info.o" => [ "crypto/x509/v3_info.c" ], "crypto/x509/libcrypto-lib-v3_int.o" => [ "crypto/x509/v3_int.c" ], + "crypto/x509/libcrypto-lib-v3_iobo.o" => [ + "crypto/x509/v3_iobo.c" + ], "crypto/x509/libcrypto-lib-v3_ist.o" => [ "crypto/x509/v3_ist.c" ], @@ -23411,6 +27136,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_ncons.o" => [ "crypto/x509/v3_ncons.c" ], + "crypto/x509/libcrypto-lib-v3_no_ass.o" => [ + "crypto/x509/v3_no_ass.c" + ], + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o" => [ + "crypto/x509/v3_no_rev_avail.c" + ], "crypto/x509/libcrypto-lib-v3_pci.o" => [ "crypto/x509/v3_pci.c" ], @@ -23432,18 +27163,36 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_purp.o" => [ "crypto/x509/v3_purp.c" ], + "crypto/x509/libcrypto-lib-v3_rolespec.o" => [ + "crypto/x509/v3_rolespec.c" + ], "crypto/x509/libcrypto-lib-v3_san.o" => [ "crypto/x509/v3_san.c" ], + "crypto/x509/libcrypto-lib-v3_sda.o" => [ + "crypto/x509/v3_sda.c" + ], + "crypto/x509/libcrypto-lib-v3_single_use.o" => [ + "crypto/x509/v3_single_use.c" + ], "crypto/x509/libcrypto-lib-v3_skid.o" => [ "crypto/x509/v3_skid.c" ], + "crypto/x509/libcrypto-lib-v3_soa_id.o" => [ + "crypto/x509/v3_soa_id.c" + ], "crypto/x509/libcrypto-lib-v3_sxnet.o" => [ "crypto/x509/v3_sxnet.c" ], + "crypto/x509/libcrypto-lib-v3_timespec.o" => [ + "crypto/x509/v3_timespec.c" + ], "crypto/x509/libcrypto-lib-v3_tlsf.o" => [ "crypto/x509/v3_tlsf.c" ], + "crypto/x509/libcrypto-lib-v3_usernotice.o" => [ + "crypto/x509/v3_usernotice.c" + ], "crypto/x509/libcrypto-lib-v3_utf8.o" => [ "crypto/x509/v3_utf8.c" ], @@ -23453,6 +27202,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3err.o" => [ "crypto/x509/v3err.c" ], + "crypto/x509/libcrypto-lib-x509_acert.o" => [ + "crypto/x509/x509_acert.c" + ], "crypto/x509/libcrypto-lib-x509_att.o" => [ "crypto/x509/x509_att.c" ], @@ -23504,6 +27256,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_vpm.o" => [ "crypto/x509/x509_vpm.c" ], + "crypto/x509/libcrypto-lib-x509aset.o" => [ + "crypto/x509/x509aset.c" + ], "crypto/x509/libcrypto-lib-x509cset.o" => [ "crypto/x509/x509cset.c" ], @@ -23531,6 +27286,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_exten.o" => [ "crypto/x509/x_exten.c" ], + "crypto/x509/libcrypto-lib-x_ietfatt.o" => [ + "crypto/x509/x_ietfatt.c" + ], "crypto/x509/libcrypto-lib-x_name.o" => [ "crypto/x509/x_name.c" ], @@ -23558,6 +27316,16 @@ our %unified_info = ( "engines/libcrypto-lib-e_padlock.o" => [ "engines/e_padlock.c" ], + "fuzz/acert-test" => [ + "fuzz/acert-test-bin-acert.o", + "fuzz/acert-test-bin-test-corpus.o" + ], + "fuzz/acert-test-bin-acert.o" => [ + "fuzz/acert.c" + ], + "fuzz/acert-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/asn1-test" => [ "fuzz/asn1-test-bin-asn1.o", "fuzz/asn1-test-bin-fuzz_rand.o", @@ -23670,6 +27438,190 @@ our %unified_info = ( "fuzz/ct-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/decoder-test" => [ + "fuzz/decoder-test-bin-decoder.o", + "fuzz/decoder-test-bin-fuzz_rand.o", + "fuzz/decoder-test-bin-test-corpus.o" + ], + "fuzz/decoder-test-bin-decoder.o" => [ + "fuzz/decoder.c" + ], + "fuzz/decoder-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/decoder-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsclient-test" => [ + "fuzz/dtlsclient-test-bin-dtlsclient.o", + "fuzz/dtlsclient-test-bin-fuzz_rand.o", + "fuzz/dtlsclient-test-bin-test-corpus.o" + ], + "fuzz/dtlsclient-test-bin-dtlsclient.o" => [ + "fuzz/dtlsclient.c" + ], + "fuzz/dtlsclient-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsclient-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsserver-test" => [ + "fuzz/dtlsserver-test-bin-dtlsserver.o", + "fuzz/dtlsserver-test-bin-fuzz_rand.o", + "fuzz/dtlsserver-test-bin-test-corpus.o" + ], + "fuzz/dtlsserver-test-bin-dtlsserver.o" => [ + "fuzz/dtlsserver.c" + ], + "fuzz/dtlsserver-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsserver-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/hashtable-test" => [ + "fuzz/hashtable-test-bin-fuzz_rand.o", + "fuzz/hashtable-test-bin-hashtable.o", + "fuzz/hashtable-test-bin-test-corpus.o" + ], + "fuzz/hashtable-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/hashtable-test-bin-hashtable.o" => [ + "fuzz/hashtable.c" + ], + "fuzz/hashtable-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-dsa-test" => [ + "fuzz/ml-dsa-test-bin-fuzz_rand.o", + "fuzz/ml-dsa-test-bin-ml-dsa.o", + "fuzz/ml-dsa-test-bin-test-corpus.o" + ], + "fuzz/ml-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-dsa-test-bin-ml-dsa.o" => [ + "fuzz/ml-dsa.c" + ], + "fuzz/ml-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-kem-test" => [ + "fuzz/ml-kem-test-bin-fuzz_rand.o", + "fuzz/ml-kem-test-bin-ml-kem.o", + "fuzz/ml-kem-test-bin-test-corpus.o" + ], + "fuzz/ml-kem-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-kem-test-bin-ml-kem.o" => [ + "fuzz/ml-kem.c" + ], + "fuzz/ml-kem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/pem-test" => [ + "fuzz/pem-test-bin-pem.o", + "fuzz/pem-test-bin-test-corpus.o" + ], + "fuzz/pem-test-bin-pem.o" => [ + "fuzz/pem.c" + ], + "fuzz/pem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/provider-test" => [ + "fuzz/provider-test-bin-provider.o", + "fuzz/provider-test-bin-test-corpus.o" + ], + "fuzz/provider-test-bin-provider.o" => [ + "fuzz/provider.c" + ], + "fuzz/provider-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/punycode-test" => [ + "fuzz/punycode-test-bin-punycode.o", + "fuzz/punycode-test-bin-test-corpus.o" + ], + "fuzz/punycode-test-bin-punycode.o" => [ + "fuzz/punycode.c" + ], + "fuzz/punycode-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-client-test" => [ + "fuzz/quic-client-test-bin-fuzz_rand.o", + "fuzz/quic-client-test-bin-quic-client.o", + "fuzz/quic-client-test-bin-test-corpus.o" + ], + "fuzz/quic-client-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-client-test-bin-quic-client.o" => [ + "fuzz/quic-client.c" + ], + "fuzz/quic-client-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-lcidm-test" => [ + "fuzz/quic-lcidm-test-bin-fuzz_rand.o", + "fuzz/quic-lcidm-test-bin-quic-lcidm.o", + "fuzz/quic-lcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-lcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-lcidm-test-bin-quic-lcidm.o" => [ + "fuzz/quic-lcidm.c" + ], + "fuzz/quic-lcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-rcidm-test" => [ + "fuzz/quic-rcidm-test-bin-fuzz_rand.o", + "fuzz/quic-rcidm-test-bin-quic-rcidm.o", + "fuzz/quic-rcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-rcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-rcidm-test-bin-quic-rcidm.o" => [ + "fuzz/quic-rcidm.c" + ], + "fuzz/quic-rcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-server-test" => [ + "fuzz/quic-server-test-bin-fuzz_rand.o", + "fuzz/quic-server-test-bin-quic-server.o", + "fuzz/quic-server-test-bin-test-corpus.o" + ], + "fuzz/quic-server-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-server-test-bin-quic-server.o" => [ + "fuzz/quic-server.c" + ], + "fuzz/quic-server-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-srtm-test" => [ + "fuzz/quic-srtm-test-bin-fuzz_rand.o", + "fuzz/quic-srtm-test-bin-quic-srtm.o", + "fuzz/quic-srtm-test-bin-test-corpus.o" + ], + "fuzz/quic-srtm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-srtm-test-bin-quic-srtm.o" => [ + "fuzz/quic-srtm.c" + ], + "fuzz/quic-srtm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/server-test" => [ "fuzz/server-test-bin-fuzz_rand.o", "fuzz/server-test-bin-server.o", @@ -23684,6 +27636,40 @@ our %unified_info = ( "fuzz/server-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/slh-dsa-test" => [ + "fuzz/slh-dsa-test-bin-fuzz_rand.o", + "fuzz/slh-dsa-test-bin-slh-dsa.o", + "fuzz/slh-dsa-test-bin-test-corpus.o" + ], + "fuzz/slh-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/slh-dsa-test-bin-slh-dsa.o" => [ + "fuzz/slh-dsa.c" + ], + "fuzz/slh-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/smime-test" => [ + "fuzz/smime-test-bin-smime.o", + "fuzz/smime-test-bin-test-corpus.o" + ], + "fuzz/smime-test-bin-smime.o" => [ + "fuzz/smime.c" + ], + "fuzz/smime-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test" => [ + "fuzz/v3name-test-bin-test-corpus.o", + "fuzz/v3name-test-bin-v3name.o" + ], + "fuzz/v3name-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test-bin-v3name.o" => [ + "fuzz/v3name.c" + ], "fuzz/x509-test" => [ "fuzz/x509-test-bin-fuzz_rand.o", "fuzz/x509-test-bin-test-corpus.o", @@ -23804,6 +27790,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -23865,6 +27852,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -24042,7 +28030,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", + "crypto/err/libcrypto-lib-err_mark.o", "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o", "crypto/ess/libcrypto-lib-ess_asn1.o", "crypto/ess/libcrypto-lib-ess_err.o", "crypto/ess/libcrypto-lib-ess_lib.o", @@ -24125,7 +28115,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/ffc/libcrypto-lib-ffc_backend.o", "crypto/ffc/libcrypto-lib-ffc_dh.o", "crypto/ffc/libcrypto-lib-ffc_key_generate.o", @@ -24133,7 +28125,11 @@ our %unified_info = ( "crypto/ffc/libcrypto-lib-ffc_params.o", "crypto/ffc/libcrypto-lib-ffc_params_generate.o", "crypto/ffc/libcrypto-lib-ffc_params_validate.o", + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", "crypto/hmac/libcrypto-lib-hmac.o", + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o", "crypto/http/libcrypto-lib-http_client.o", "crypto/http/libcrypto-lib-http_err.o", "crypto/http/libcrypto-lib-http_lib.o", @@ -24147,6 +28143,7 @@ our %unified_info = ( "crypto/lhash/libcrypto-lib-lhash.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -24156,10 +28153,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -24176,6 +28176,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -24183,12 +28184,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libcrypto-lib-x86cpuid.o", @@ -24200,6 +28205,15 @@ our %unified_info = ( "crypto/md5/libcrypto-lib-md5_sha1.o", "crypto/mdc2/libcrypto-lib-mdc2_one.o", "crypto/mdc2/libcrypto-lib-mdc2dgst.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_kem/libcrypto-lib-ml_kem.o", "crypto/modes/libcrypto-lib-cbc128.o", "crypto/modes/libcrypto-lib-ccm128.o", "crypto/modes/libcrypto-lib-cfb128.o", @@ -24212,6 +28226,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/objects/libcrypto-lib-o_names.o", "crypto/objects/libcrypto-lib-obj_dat.o", "crypto/objects/libcrypto-lib-obj_err.o", @@ -24276,6 +28291,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rc2/libcrypto-lib-rc2_cbc.o", "crypto/rc2/libcrypto-lib-rc2_ecb.o", @@ -24327,6 +28343,16 @@ our %unified_info = ( "crypto/sha/libcrypto-lib-sha512-586.o", "crypto/sha/libcrypto-lib-sha512.o", "crypto/siphash/libcrypto-lib-siphash.o", + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", "crypto/sm2/libcrypto-lib-sm2_crypt.o", "crypto/sm2/libcrypto-lib-sm2_err.o", "crypto/sm2/libcrypto-lib-sm2_key.o", @@ -24344,6 +28370,12 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_register.o", "crypto/store/libcrypto-lib-store_result.o", "crypto/store/libcrypto-lib-store_strings.o", + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", "crypto/ts/libcrypto-lib-ts_asn1.o", "crypto/ts/libcrypto-lib-ts_conf.o", "crypto/ts/libcrypto-lib-ts_err.o", @@ -24373,14 +28405,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -24389,12 +28429,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -24402,13 +28447,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -24426,6 +28478,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -24435,6 +28488,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -24457,14 +28511,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -24481,12 +28536,60 @@ our %unified_info = ( "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", "ssl/libssl-lib-tls_srp.o", - "ssl/record/libssl-lib-dtls1_bitmap.o", + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o", "ssl/record/libssl-lib-rec_layer_d1.o", "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o", "ssl/statem/libssl-lib-extensions.o", "ssl/statem/libssl-lib-extensions_clnt.o", "ssl/statem/libssl-lib-extensions_cust.o", @@ -24524,12 +28627,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/der/der_ecx_key.c" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/der/der_ml_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/der/der_ml_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/der/der_rsa_gen.c" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/der/der_rsa_key.c" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/der/der_slh_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/der/der_slh_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/der/der_wrap_gen.c" ], @@ -24596,6 +28711,9 @@ our %unified_info = ( "providers/common/libfips-lib-securitycheck_fips.o" => [ "providers/common/securitycheck_fips.c" ], + "providers/endecode_test-bin-legacyprov.o" => [ + "providers/legacyprov.c" + ], "providers/evp_extra_test-bin-legacyprov.o" => [ "providers/legacyprov.c" ], @@ -24606,6 +28724,9 @@ our %unified_info = ( "providers/fips/fips-dso-fips_entry.o" => [ "providers/fips/fips_entry.c" ], + "providers/fips/libfips-lib-fipsindicator.o" => [ + "providers/fips/fipsindicator.c" + ], "providers/fips/libfips-lib-fipsprov.o" => [ "providers/fips/fipsprov.c" ], @@ -24669,6 +28790,15 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o" => [ "providers/implementations/ciphers/cipher_aes_gcm_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o" => [ "providers/implementations/ciphers/cipher_aes_hw.c" ], @@ -24741,9 +28871,27 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o" => [ "providers/implementations/ciphers/cipher_sm4.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o" => [ "providers/implementations/ciphers/cipher_sm4_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o" => [ "providers/implementations/ciphers/cipher_tdes.c" ], @@ -24963,6 +29111,15 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" => [ "providers/implementations/encode_decode/endecoder_common.c" ], + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o" => [ + "providers/implementations/encode_decode/ml_common_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o" => [ + "providers/implementations/encode_decode/ml_dsa_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" => [ + "providers/implementations/encode_decode/ml_kem_codecs.c" + ], "providers/implementations/exchange/libdefault-lib-dh_exch.o" => [ "providers/implementations/exchange/dh_exch.c" ], @@ -24987,9 +29144,15 @@ our %unified_info = ( "providers/implementations/exchange/libfips-lib-kdf_exch.o" => [ "providers/implementations/exchange/kdf_exch.c" ], + "providers/implementations/kdfs/libdefault-lib-argon2.o" => [ + "providers/implementations/kdfs/argon2.c" + ], "providers/implementations/kdfs/libdefault-lib-hkdf.o" => [ "providers/implementations/kdfs/hkdf.c" ], + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o" => [ + "providers/implementations/kdfs/hmacdrbg_kdf.c" + ], "providers/implementations/kdfs/libdefault-lib-kbkdf.o" => [ "providers/implementations/kdfs/kbkdf.c" ], @@ -25047,12 +29210,39 @@ our %unified_info = ( "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" => [ "providers/implementations/kdfs/pbkdf1.c" ], + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" => [ + "providers/implementations/kdfs/pvkkdf.c" + ], + "providers/implementations/kem/libdefault-lib-ec_kem.o" => [ + "providers/implementations/kem/ec_kem.c" + ], + "providers/implementations/kem/libdefault-lib-ecx_kem.o" => [ + "providers/implementations/kem/ecx_kem.c" + ], + "providers/implementations/kem/libdefault-lib-kem_util.o" => [ + "providers/implementations/kem/kem_util.c" + ], + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libdefault-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libdefault-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libfips-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libfips-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libfips-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libtemplate-lib-template_kem.o" => [ + "providers/implementations/kem/template_kem.c" + ], "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25071,9 +29261,21 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25092,9 +29294,24 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" => [ + "providers/implementations/keymgmt/template_kmgmt.c" + ], "providers/implementations/macs/libdefault-lib-blake2b_mac.o" => [ "providers/implementations/macs/blake2b_mac.c" ], @@ -25131,9 +29348,6 @@ our %unified_info = ( "providers/implementations/macs/libfips-lib-kmac_prov.o" => [ "providers/implementations/macs/kmac_prov.c" ], - "providers/implementations/rands/libdefault-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libdefault-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25149,12 +29363,12 @@ our %unified_info = ( "providers/implementations/rands/libdefault-lib-seed_src.o" => [ "providers/implementations/rands/seed_src.c" ], + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o" => [ + "providers/implementations/rands/seed_src_jitter.c" + ], "providers/implementations/rands/libdefault-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], - "providers/implementations/rands/libfips-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libfips-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25167,6 +29381,9 @@ our %unified_info = ( "providers/implementations/rands/libfips-lib-drbg_hmac.o" => [ "providers/implementations/rands/drbg_hmac.c" ], + "providers/implementations/rands/libfips-lib-fips_crng_test.o" => [ + "providers/implementations/rands/fips_crng_test.c" + ], "providers/implementations/rands/libfips-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], @@ -25194,9 +29411,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/implementations/signature/sm2_sig.c" ], @@ -25212,9 +29435,27 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libfips-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], "providers/implementations/storemgmt/libdefault-lib-file_store.o" => [ "providers/implementations/storemgmt/file_store.c" ], @@ -25238,8 +29479,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/libcommon-lib-provider_ctx.o", "providers/common/libcommon-lib-provider_err.o", @@ -25251,7 +29496,7 @@ our %unified_info = ( "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", "providers/implementations/digests/libcommon-lib-digestcommon.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/methods/libcommon-lib-tls_pad.o" ], "providers/libcrypto-lib-baseprov.o" => [ "providers/baseprov.c" @@ -25287,6 +29532,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -25311,7 +29559,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -25340,11 +29594,16 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o", "providers/implementations/exchange/libdefault-lib-dh_exch.o", "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", "providers/implementations/exchange/libdefault-lib-ecx_exch.o", "providers/implementations/exchange/libdefault-lib-kdf_exch.o", + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -25355,6 +29614,11 @@ our %unified_info = ( "providers/implementations/kdfs/libdefault-lib-sskdf.o", "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", "providers/implementations/kdfs/libdefault-lib-x942kdf.o", + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", @@ -25362,7 +29626,11 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libdefault-lib-blake2b_mac.o", "providers/implementations/macs/libdefault-lib-blake2s_mac.o", "providers/implementations/macs/libdefault-lib-cmac_prov.o", @@ -25371,12 +29639,12 @@ our %unified_info = ( "providers/implementations/macs/libdefault-lib-kmac_prov.o", "providers/implementations/macs/libdefault-lib-poly1305_prov.o", "providers/implementations/macs/libdefault-lib-siphash_prov.o", - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", @@ -25386,11 +29654,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", "providers/implementations/storemgmt/libdefault-lib-file_store.o", "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", - "ssl/libdefault-lib-s3_cbc.o" + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" ], "providers/libfips.a" => [ "crypto/aes/libfips-lib-aes-586.o", @@ -25498,14 +29770,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", + "crypto/evp/libfips-lib-s_lib.o", "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o", "crypto/ffc/libfips-lib-ffc_backend.o", "crypto/ffc/libfips-lib-ffc_dh.o", "crypto/ffc/libfips-lib-ffc_key_generate.o", @@ -25513,6 +29786,8 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params.o", "crypto/ffc/libfips-lib-ffc_params_generate.o", "crypto/ffc/libfips-lib-ffc_params_validate.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o", "crypto/hmac/libfips-lib-hmac.o", "crypto/lhash/libfips-lib-lhash.o", "crypto/libfips-lib-asn1_dsa.o", @@ -25534,6 +29809,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -25542,7 +29818,17 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", "crypto/libfips-lib-x86cpuid.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o", + "crypto/ml_kem/libfips-lib-ml_kem.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -25552,6 +29838,7 @@ our %unified_info = ( "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o", "crypto/property/libfips-lib-defn_cache.o", "crypto/property/libfips-lib-property.o", "crypto/property/libfips-lib-property_parse.o", @@ -25583,7 +29870,23 @@ our %unified_info = ( "crypto/sha/libfips-lib-sha3.o", "crypto/sha/libfips-lib-sha512-586.o", "crypto/sha/libfips-lib-sha512.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o", "crypto/stack/libfips-lib-stack.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o", "providers/common/der/libfips-lib-der_rsa_sig.o", "providers/common/libfips-lib-bio_prov.o", "providers/common/libfips-lib-capabilities.o", @@ -25592,6 +29895,7 @@ our %unified_info = ( "providers/common/libfips-lib-provider_util.o", "providers/common/libfips-lib-securitycheck.o", "providers/common/libfips-lib-securitycheck_fips.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o", @@ -25629,6 +29933,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", "providers/implementations/kem/libfips-lib-rsa_kem.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", @@ -25636,24 +29942,32 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libfips-lib-cmac_prov.o", "providers/implementations/macs/libfips-lib-gmac_prov.o", "providers/implementations/macs/libfips-lib-hmac_prov.o", "providers/implementations/macs/libfips-lib-kmac_prov.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o", "providers/libcommon.a", - "ssl/libfips-lib-s3_cbc.o" + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "providers/liblegacy-lib-prov_running.o" => [ "providers/prov_running.c" @@ -25683,13 +29997,12 @@ our %unified_info = ( "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", "providers/implementations/digests/liblegacy-lib-wp_prov.o", "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o", "providers/liblegacy-lib-prov_running.o" ], - "ssl/libdefault-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" - ], - "ssl/libfips-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" + "providers/libtemplate.a" => [ + "providers/implementations/kem/libtemplate-lib-template_kem.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "ssl/libssl-lib-bio_ssl.o" => [ "ssl/bio_ssl.c" @@ -25709,6 +30022,9 @@ our %unified_info = ( "ssl/libssl-lib-pqueue.o" => [ "ssl/pqueue.c" ], + "ssl/libssl-lib-priority_queue.o" => [ + "ssl/priority_queue.c" + ], "ssl/libssl-lib-s3_enc.o" => [ "ssl/s3_enc.c" ], @@ -25724,15 +30040,15 @@ our %unified_info = ( "ssl/libssl-lib-ssl_cert.o" => [ "ssl/ssl_cert.c" ], + "ssl/libssl-lib-ssl_cert_comp.o" => [ + "ssl/ssl_cert_comp.c" + ], "ssl/libssl-lib-ssl_ciph.o" => [ "ssl/ssl_ciph.c" ], "ssl/libssl-lib-ssl_conf.o" => [ "ssl/ssl_conf.c" ], - "ssl/libssl-lib-ssl_err.o" => [ - "ssl/ssl_err.c" - ], "ssl/libssl-lib-ssl_err_legacy.o" => [ "ssl/ssl_err_legacy.c" ], @@ -25781,11 +30097,131 @@ our %unified_info = ( "ssl/libssl-lib-tls_srp.o" => [ "ssl/tls_srp.c" ], - "ssl/record/libcommon-lib-tls_pad.o" => [ - "ssl/record/tls_pad.c" + "ssl/quic/libssl-lib-cc_newreno.o" => [ + "ssl/quic/cc_newreno.c" + ], + "ssl/quic/libssl-lib-json_enc.o" => [ + "ssl/quic/json_enc.c" + ], + "ssl/quic/libssl-lib-qlog.o" => [ + "ssl/quic/qlog.c" + ], + "ssl/quic/libssl-lib-qlog_event_helpers.o" => [ + "ssl/quic/qlog_event_helpers.c" + ], + "ssl/quic/libssl-lib-quic_ackm.o" => [ + "ssl/quic/quic_ackm.c" + ], + "ssl/quic/libssl-lib-quic_cfq.o" => [ + "ssl/quic/quic_cfq.c" + ], + "ssl/quic/libssl-lib-quic_channel.o" => [ + "ssl/quic/quic_channel.c" + ], + "ssl/quic/libssl-lib-quic_demux.o" => [ + "ssl/quic/quic_demux.c" + ], + "ssl/quic/libssl-lib-quic_engine.o" => [ + "ssl/quic/quic_engine.c" + ], + "ssl/quic/libssl-lib-quic_fc.o" => [ + "ssl/quic/quic_fc.c" + ], + "ssl/quic/libssl-lib-quic_fifd.o" => [ + "ssl/quic/quic_fifd.c" + ], + "ssl/quic/libssl-lib-quic_impl.o" => [ + "ssl/quic/quic_impl.c" + ], + "ssl/quic/libssl-lib-quic_lcidm.o" => [ + "ssl/quic/quic_lcidm.c" + ], + "ssl/quic/libssl-lib-quic_method.o" => [ + "ssl/quic/quic_method.c" + ], + "ssl/quic/libssl-lib-quic_obj.o" => [ + "ssl/quic/quic_obj.c" + ], + "ssl/quic/libssl-lib-quic_port.o" => [ + "ssl/quic/quic_port.c" + ], + "ssl/quic/libssl-lib-quic_rcidm.o" => [ + "ssl/quic/quic_rcidm.c" + ], + "ssl/quic/libssl-lib-quic_reactor.o" => [ + "ssl/quic/quic_reactor.c" + ], + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o" => [ + "ssl/quic/quic_reactor_wait_ctx.c" + ], + "ssl/quic/libssl-lib-quic_record_rx.o" => [ + "ssl/quic/quic_record_rx.c" + ], + "ssl/quic/libssl-lib-quic_record_shared.o" => [ + "ssl/quic/quic_record_shared.c" + ], + "ssl/quic/libssl-lib-quic_record_tx.o" => [ + "ssl/quic/quic_record_tx.c" + ], + "ssl/quic/libssl-lib-quic_record_util.o" => [ + "ssl/quic/quic_record_util.c" + ], + "ssl/quic/libssl-lib-quic_rstream.o" => [ + "ssl/quic/quic_rstream.c" ], - "ssl/record/libssl-lib-dtls1_bitmap.o" => [ - "ssl/record/dtls1_bitmap.c" + "ssl/quic/libssl-lib-quic_rx_depack.o" => [ + "ssl/quic/quic_rx_depack.c" + ], + "ssl/quic/libssl-lib-quic_sf_list.o" => [ + "ssl/quic/quic_sf_list.c" + ], + "ssl/quic/libssl-lib-quic_srt_gen.o" => [ + "ssl/quic/quic_srt_gen.c" + ], + "ssl/quic/libssl-lib-quic_srtm.o" => [ + "ssl/quic/quic_srtm.c" + ], + "ssl/quic/libssl-lib-quic_sstream.o" => [ + "ssl/quic/quic_sstream.c" + ], + "ssl/quic/libssl-lib-quic_statm.o" => [ + "ssl/quic/quic_statm.c" + ], + "ssl/quic/libssl-lib-quic_stream_map.o" => [ + "ssl/quic/quic_stream_map.c" + ], + "ssl/quic/libssl-lib-quic_thread_assist.o" => [ + "ssl/quic/quic_thread_assist.c" + ], + "ssl/quic/libssl-lib-quic_tls.o" => [ + "ssl/quic/quic_tls.c" + ], + "ssl/quic/libssl-lib-quic_tls_api.o" => [ + "ssl/quic/quic_tls_api.c" + ], + "ssl/quic/libssl-lib-quic_trace.o" => [ + "ssl/quic/quic_trace.c" + ], + "ssl/quic/libssl-lib-quic_tserver.o" => [ + "ssl/quic/quic_tserver.c" + ], + "ssl/quic/libssl-lib-quic_txp.o" => [ + "ssl/quic/quic_txp.c" + ], + "ssl/quic/libssl-lib-quic_txpim.o" => [ + "ssl/quic/quic_txpim.c" + ], + "ssl/quic/libssl-lib-quic_types.o" => [ + "ssl/quic/quic_types.c" + ], + "ssl/quic/libssl-lib-quic_wire.o" => [ + "ssl/quic/quic_wire.c" + ], + "ssl/quic/libssl-lib-quic_wire_pkt.o" => [ + "ssl/quic/quic_wire_pkt.c" + ], + "ssl/quic/libssl-lib-uint_set.o" => [ + "ssl/quic/uint_set.c" ], "ssl/record/libssl-lib-rec_layer_d1.o" => [ "ssl/record/rec_layer_d1.c" @@ -25793,14 +30229,44 @@ our %unified_info = ( "ssl/record/libssl-lib-rec_layer_s3.o" => [ "ssl/record/rec_layer_s3.c" ], - "ssl/record/libssl-lib-ssl3_buffer.o" => [ - "ssl/record/ssl3_buffer.c" + "ssl/record/methods/libcommon-lib-tls_pad.o" => [ + "ssl/record/methods/tls_pad.c" + ], + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libfips-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libssl-lib-dtls_meth.o" => [ + "ssl/record/methods/dtls_meth.c" + ], + "ssl/record/methods/libssl-lib-ssl3_meth.o" => [ + "ssl/record/methods/ssl3_meth.c" + ], + "ssl/record/methods/libssl-lib-tls13_meth.o" => [ + "ssl/record/methods/tls13_meth.c" + ], + "ssl/record/methods/libssl-lib-tls1_meth.o" => [ + "ssl/record/methods/tls1_meth.c" + ], + "ssl/record/methods/libssl-lib-tls_common.o" => [ + "ssl/record/methods/tls_common.c" ], - "ssl/record/libssl-lib-ssl3_record.o" => [ - "ssl/record/ssl3_record.c" + "ssl/record/methods/libssl-lib-tls_multib.o" => [ + "ssl/record/methods/tls_multib.c" ], - "ssl/record/libssl-lib-ssl3_record_tls13.o" => [ - "ssl/record/ssl3_record_tls13.c" + "ssl/record/methods/libssl-lib-tlsany_meth.o" => [ + "ssl/record/methods/tlsany_meth.c" + ], + "ssl/rio/libssl-lib-poll_builder.o" => [ + "ssl/rio/poll_builder.c" + ], + "ssl/rio/libssl-lib-poll_immediate.o" => [ + "ssl/rio/poll_immediate.c" + ], + "ssl/rio/libssl-lib-rio_notifier.o" => [ + "ssl/rio/rio_notifier.c" ], "ssl/statem/libssl-lib-extensions.o" => [ "ssl/statem/extensions.c" @@ -25896,6 +30362,8 @@ our %unified_info = ( "test/asn1_string_table_test.c" ], "test/asn1_time_test" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1_time_test-bin-ctype.o", "test/asn1_time_test-bin-asn1_time_test.o" ], "test/asn1_time_test-bin-asn1_time_test.o" => [ @@ -25926,6 +30394,18 @@ our %unified_info = ( "test/bftest-bin-bftest.o" => [ "test/bftest.c" ], + "test/bio_addr_test" => [ + "test/bio_addr_test-bin-bio_addr_test.o" + ], + "test/bio_addr_test-bin-bio_addr_test.o" => [ + "test/bio_addr_test.c" + ], + "test/bio_base64_test" => [ + "test/bio_base64_test-bin-bio_base64_test.o" + ], + "test/bio_base64_test-bin-bio_base64_test.o" => [ + "test/bio_base64_test.c" + ], "test/bio_callback_test" => [ "test/bio_callback_test-bin-bio_callback_test.o" ], @@ -25938,6 +30418,12 @@ our %unified_info = ( "test/bio_core_test-bin-bio_core_test.o" => [ "test/bio_core_test.c" ], + "test/bio_dgram_test" => [ + "test/bio_dgram_test-bin-bio_dgram_test.o" + ], + "test/bio_dgram_test-bin-bio_dgram_test.o" => [ + "test/bio_dgram_test.c" + ], "test/bio_enc_test" => [ "test/bio_enc_test-bin-bio_enc_test.o" ], @@ -25950,6 +30436,12 @@ our %unified_info = ( "test/bio_memleak_test-bin-bio_memleak_test.o" => [ "test/bio_memleak_test.c" ], + "test/bio_meth_test" => [ + "test/bio_meth_test-bin-bio_meth_test.o" + ], + "test/bio_meth_test-bin-bio_meth_test.o" => [ + "test/bio_meth_test.c" + ], "test/bio_prefix_text" => [ "test/bio_prefix_text-bin-bio_prefix_text.o" ], @@ -25968,6 +30460,12 @@ our %unified_info = ( "test/bio_readbuffer_test-bin-bio_readbuffer_test.o" => [ "test/bio_readbuffer_test.c" ], + "test/bio_tfo_test" => [ + "test/bio_tfo_test-bin-bio_tfo_test.o" + ], + "test/bio_tfo_test-bin-bio_tfo_test.o" => [ + "test/bio_tfo_test.c" + ], "test/bioprinttest" => [ "test/bioprinttest-bin-bioprinttest.o" ], @@ -25986,6 +30484,12 @@ our %unified_info = ( "test/bntest-bin-bntest.o" => [ "test/bntest.c" ], + "test/build_wincrypt_test" => [ + "test/build_wincrypt_test-bin-build_wincrypt_test.o" + ], + "test/build_wincrypt_test-bin-build_wincrypt_test.o" => [ + "test/build_wincrypt_test.c" + ], "test/buildtest_c_aes" => [ "test/buildtest_c_aes-bin-buildtest_aes.o" ], @@ -26016,6 +30520,12 @@ our %unified_info = ( "test/buildtest_c_buffer-bin-buildtest_buffer.o" => [ "test/buildtest_buffer.c" ], + "test/buildtest_c_byteorder" => [ + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" + ], + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" => [ + "test/buildtest_byteorder.c" + ], "test/buildtest_c_camellia" => [ "test/buildtest_c_camellia-bin-buildtest_camellia.o" ], @@ -26064,12 +30574,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch-bin-buildtest_core_dispatch.o" => [ "test/buildtest_core_dispatch.c" ], - "test/buildtest_c_core_names" => [ - "test/buildtest_c_core_names-bin-buildtest_core_names.o" - ], - "test/buildtest_c_core_names-bin-buildtest_core_names.o" => [ - "test/buildtest_core_names.c" - ], "test/buildtest_c_core_object" => [ "test/buildtest_c_core_object-bin-buildtest_core_object.o" ], @@ -26118,6 +30622,12 @@ our %unified_info = ( "test/buildtest_c_e_os2-bin-buildtest_e_os2.o" => [ "test/buildtest_e_os2.c" ], + "test/buildtest_c_e_ostime" => [ + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" + ], + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" => [ + "test/buildtest_e_ostime.c" + ], "test/buildtest_c_ebcdic" => [ "test/buildtest_c_ebcdic-bin-buildtest_ebcdic.o" ], @@ -26172,6 +30682,12 @@ our %unified_info = ( "test/buildtest_c_hmac-bin-buildtest_hmac.o" => [ "test/buildtest_hmac.c" ], + "test/buildtest_c_hpke" => [ + "test/buildtest_c_hpke-bin-buildtest_hpke.o" + ], + "test/buildtest_c_hpke-bin-buildtest_hpke.o" => [ + "test/buildtest_hpke.c" + ], "test/buildtest_c_http" => [ "test/buildtest_c_http-bin-buildtest_http.o" ], @@ -26184,6 +30700,12 @@ our %unified_info = ( "test/buildtest_c_idea-bin-buildtest_idea.o" => [ "test/buildtest_idea.c" ], + "test/buildtest_c_indicator" => [ + "test/buildtest_c_indicator-bin-buildtest_indicator.o" + ], + "test/buildtest_c_indicator-bin-buildtest_indicator.o" => [ + "test/buildtest_indicator.c" + ], "test/buildtest_c_kdf" => [ "test/buildtest_c_kdf-bin-buildtest_kdf.o" ], @@ -26214,6 +30736,12 @@ our %unified_info = ( "test/buildtest_c_mdc2-bin-buildtest_mdc2.o" => [ "test/buildtest_mdc2.c" ], + "test/buildtest_c_ml_kem" => [ + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" + ], + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" => [ + "test/buildtest_ml_kem.c" + ], "test/buildtest_c_modes" => [ "test/buildtest_c_modes-bin-buildtest_modes.o" ], @@ -26274,6 +30802,12 @@ our %unified_info = ( "test/buildtest_c_provider-bin-buildtest_provider.o" => [ "test/buildtest_provider.c" ], + "test/buildtest_c_quic" => [ + "test/buildtest_c_quic-bin-buildtest_quic.o" + ], + "test/buildtest_c_quic-bin-buildtest_quic.o" => [ + "test/buildtest_quic.c" + ], "test/buildtest_c_rand" => [ "test/buildtest_c_rand-bin-buildtest_rand.o" ], @@ -26358,6 +30892,12 @@ our %unified_info = ( "test/buildtest_c_symhacks-bin-buildtest_symhacks.o" => [ "test/buildtest_symhacks.c" ], + "test/buildtest_c_thread" => [ + "test/buildtest_c_thread-bin-buildtest_thread.o" + ], + "test/buildtest_c_thread-bin-buildtest_thread.o" => [ + "test/buildtest_thread.c" + ], "test/buildtest_c_tls1" => [ "test/buildtest_c_tls1-bin-buildtest_tls1.o" ], @@ -26388,6 +30928,29 @@ our %unified_info = ( "test/buildtest_c_whrlpool-bin-buildtest_whrlpool.o" => [ "test/buildtest_whrlpool.c" ], + "test/byteorder_test" => [ + "test/byteorder_test-bin-byteorder_test.o" + ], + "test/byteorder_test-bin-byteorder_test.o" => [ + "test/byteorder_test.c" + ], + "test/ca_internals_test" => [ + "apps/ca_internals_test-bin-ca.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", + "crypto/ca_internals_test-bin-ctype.o", + "test/ca_internals_test-bin-ca_internals_test.o" + ], + "test/ca_internals_test-bin-ca_internals_test.o" => [ + "test/ca_internals_test.c" + ], "test/casttest" => [ "test/casttest-bin-casttest.o" ], @@ -26566,6 +31129,12 @@ our %unified_info = ( "test/danetest-bin-danetest.o" => [ "test/danetest.c" ], + "test/decoder_propq_test" => [ + "test/decoder_propq_test-bin-decoder_propq_test.o" + ], + "test/decoder_propq_test-bin-decoder_propq_test.o" => [ + "test/decoder_propq_test.c" + ], "test/defltfips_test" => [ "test/defltfips_test-bin-defltfips_test.o" ], @@ -26647,6 +31216,7 @@ our %unified_info = ( "test/ectest.c" ], "test/endecode_test" => [ + "providers/endecode_test-bin-legacyprov.o", "test/endecode_test-bin-endecode_test.o", "test/helpers/endecode_test-bin-predefined_dhparams.o" ], @@ -26679,17 +31249,29 @@ our %unified_info = ( ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", - "test/evp_extra_test-bin-evp_extra_test.o" + "test/evp_extra_test-bin-evp_extra_test.o", + "test/evp_extra_test-bin-fake_pipelineprov.o", + "test/evp_extra_test-bin-fake_rsaprov.o" ], "test/evp_extra_test-bin-evp_extra_test.o" => [ "test/evp_extra_test.c" ], + "test/evp_extra_test-bin-fake_pipelineprov.o" => [ + "test/fake_pipelineprov.c" + ], + "test/evp_extra_test-bin-fake_rsaprov.o" => [ + "test/fake_rsaprov.c" + ], "test/evp_extra_test2" => [ - "test/evp_extra_test2-bin-evp_extra_test2.o" + "test/evp_extra_test2-bin-evp_extra_test2.o", + "test/evp_extra_test2-bin-tls-provider.o" ], "test/evp_extra_test2-bin-evp_extra_test2.o" => [ "test/evp_extra_test2.c" ], + "test/evp_extra_test2-bin-tls-provider.o" => [ + "test/tls-provider.c" + ], "test/evp_fetch_prov_test" => [ "test/evp_fetch_prov_test-bin-evp_fetch_prov_test.o" ], @@ -26714,6 +31296,12 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name-bin-evp_pkey_ctx_new_from_name.o" => [ "test/evp_pkey_ctx_new_from_name.c" ], + "test/evp_pkey_dhkem_test" => [ + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" + ], + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" => [ + "test/evp_pkey_dhkem_test.c" + ], "test/evp_pkey_dparams_test" => [ "test/evp_pkey_dparams_test-bin-evp_pkey_dparams_test.o" ], @@ -26726,12 +31314,28 @@ our %unified_info = ( "test/evp_pkey_provided_test-bin-evp_pkey_provided_test.o" => [ "test/evp_pkey_provided_test.c" ], + "test/evp_skey_test" => [ + "test/evp_skey_test-bin-evp_skey_test.o", + "test/evp_skey_test-bin-fake_cipherprov.o" + ], + "test/evp_skey_test-bin-evp_skey_test.o" => [ + "test/evp_skey_test.c" + ], + "test/evp_skey_test-bin-fake_cipherprov.o" => [ + "test/fake_cipherprov.c" + ], "test/evp_test" => [ "test/evp_test-bin-evp_test.o" ], "test/evp_test-bin-evp_test.o" => [ "test/evp_test.c" ], + "test/evp_xof_test" => [ + "test/evp_xof_test-bin-evp_xof_test.o" + ], + "test/evp_xof_test-bin-evp_xof_test.o" => [ + "test/evp_xof_test.c" + ], "test/exdatatest" => [ "test/exdatatest-bin-exdatatest.o" ], @@ -26817,15 +31421,108 @@ our %unified_info = ( "test/helpers/fatalerrtest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/json_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/json_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/json_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + "test/helpers/pkcs12.c" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ "test/helpers/pkcs12.c" ], + "test/helpers/quic_multistream_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_multistream_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_multistream_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_newcid_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_newcid_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_newcid_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_radix_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_radix_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_radix_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_srt_gen_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicapitest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicapitest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicapitest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicfaultstest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicfaultstest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicfaultstest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/ssl_old_test-bin-predefined_dhparams.o" => [ "test/helpers/predefined_dhparams.c" ], @@ -26853,6 +31550,9 @@ our %unified_info = ( "test/helpers/tls13ccstest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/hexstr_test" => [ "test/hexstr_test-bin-hexstr_test.o" ], @@ -26865,6 +31565,12 @@ our %unified_info = ( "test/hmactest-bin-hmactest.o" => [ "test/hmactest.c" ], + "test/hpke_test" => [ + "test/hpke_test-bin-hpke_test.o" + ], + "test/hpke_test-bin-hpke_test.o" => [ + "test/hpke_test.c" + ], "test/http_test" => [ "test/http_test-bin-http_test.o" ], @@ -26883,6 +31589,16 @@ our %unified_info = ( "test/igetest-bin-igetest.o" => [ "test/igetest.c" ], + "test/json_test" => [ + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/json_test-bin-json_test.o" + ], + "test/json_test-bin-json_test.o" => [ + "test/json_test.c" + ], "test/keymgmt_internal_test" => [ "test/keymgmt_internal_test-bin-keymgmt_internal_test.o" ], @@ -26903,6 +31619,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -26915,6 +31632,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-tests.o", "test/testutil/libtestutil-lib-testutil_init.o" ], + "test/list_test" => [ + "test/list_test-bin-list_test.o" + ], + "test/list_test-bin-list_test.o" => [ + "test/list_test.c" + ], "test/localetest" => [ "test/localetest-bin-localetest.o" ], @@ -26933,12 +31656,36 @@ our %unified_info = ( "test/mdc2test-bin-mdc2test.o" => [ "test/mdc2test.c" ], + "test/membio_test" => [ + "test/membio_test-bin-membio_test.o" + ], + "test/membio_test-bin-membio_test.o" => [ + "test/membio_test.c" + ], "test/memleaktest" => [ "test/memleaktest-bin-memleaktest.o" ], "test/memleaktest-bin-memleaktest.o" => [ "test/memleaktest.c" ], + "test/ml_dsa_test" => [ + "test/ml_dsa_test-bin-ml_dsa_test.o" + ], + "test/ml_dsa_test-bin-ml_dsa_test.o" => [ + "test/ml_dsa_test.c" + ], + "test/ml_kem_evp_extra_test" => [ + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" + ], + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" => [ + "test/ml_kem_evp_extra_test.c" + ], + "test/ml_kem_internal_test" => [ + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" + ], + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" => [ + "test/ml_kem_internal_test.c" + ], "test/modes_internal_test" => [ "test/modes_internal_test-bin-modes_internal_test.o" ], @@ -26984,11 +31731,18 @@ our %unified_info = ( "test/p_test.c" ], "test/packettest" => [ + "crypto/packettest-bin-quic_vlint.o", "test/packettest-bin-packettest.o" ], "test/packettest-bin-packettest.o" => [ "test/packettest.c" ], + "test/pairwise_fail_test" => [ + "test/pairwise_fail_test-bin-pairwise_fail_test.o" + ], + "test/pairwise_fail_test-bin-pairwise_fail_test.o" => [ + "test/pairwise_fail_test.c" + ], "test/param_build_test" => [ "test/param_build_test-bin-param_build_test.o" ], @@ -27037,6 +31791,13 @@ our %unified_info = ( "test/pemtest-bin-pemtest.o" => [ "test/pemtest.c" ], + "test/pkcs12_api_test" => [ + "test/helpers/pkcs12_api_test-bin-pkcs12.o", + "test/pkcs12_api_test-bin-pkcs12_api_test.o" + ], + "test/pkcs12_api_test-bin-pkcs12_api_test.o" => [ + "test/pkcs12_api_test.c" + ], "test/pkcs12_format_test" => [ "test/helpers/pkcs12_format_test-bin-pkcs12.o", "test/pkcs12_format_test-bin-pkcs12_format_test.o" @@ -27068,6 +31829,12 @@ our %unified_info = ( "test/poly1305_internal_test-bin-poly1305_internal_test.o" => [ "test/poly1305_internal_test.c" ], + "test/priority_queue_test" => [ + "test/priority_queue_test-bin-priority_queue_test.o" + ], + "test/priority_queue_test-bin-priority_queue_test.o" => [ + "test/priority_queue_test.c" + ], "test/property_test" => [ "test/property_test-bin-property_test.o" ], @@ -27086,6 +31853,12 @@ our %unified_info = ( "test/provfetchtest-bin-provfetchtest.o" => [ "test/provfetchtest.c" ], + "test/provider_default_search_path_test" => [ + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" + ], + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" => [ + "test/provider_default_search_path_test.c" + ], "test/provider_fallback_test" => [ "test/provider_fallback_test-bin-provider_fallback_test.o" ], @@ -27134,6 +31907,174 @@ our %unified_info = ( "test/punycode_test-bin-punycode_test.o" => [ "test/punycode_test.c" ], + "test/quic_ackm_test" => [ + "test/quic_ackm_test-bin-cc_dummy.o", + "test/quic_ackm_test-bin-quic_ackm_test.o" + ], + "test/quic_ackm_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_ackm_test-bin-quic_ackm_test.o" => [ + "test/quic_ackm_test.c" + ], + "test/quic_cc_test" => [ + "test/quic_cc_test-bin-quic_cc_test.o" + ], + "test/quic_cc_test-bin-quic_cc_test.o" => [ + "test/quic_cc_test.c" + ], + "test/quic_cfq_test" => [ + "test/quic_cfq_test-bin-quic_cfq_test.o" + ], + "test/quic_cfq_test-bin-quic_cfq_test.o" => [ + "test/quic_cfq_test.c" + ], + "test/quic_client_test" => [ + "test/quic_client_test-bin-quic_client_test.o" + ], + "test/quic_client_test-bin-quic_client_test.o" => [ + "test/quic_client_test.c" + ], + "test/quic_fc_test" => [ + "test/quic_fc_test-bin-quic_fc_test.o" + ], + "test/quic_fc_test-bin-quic_fc_test.o" => [ + "test/quic_fc_test.c" + ], + "test/quic_fifd_test" => [ + "test/quic_fifd_test-bin-cc_dummy.o", + "test/quic_fifd_test-bin-quic_fifd_test.o" + ], + "test/quic_fifd_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_fifd_test-bin-quic_fifd_test.o" => [ + "test/quic_fifd_test.c" + ], + "test/quic_lcidm_test" => [ + "test/quic_lcidm_test-bin-quic_lcidm_test.o" + ], + "test/quic_lcidm_test-bin-quic_lcidm_test.o" => [ + "test/quic_lcidm_test.c" + ], + "test/quic_multistream_test" => [ + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/quic_multistream_test-bin-quic_multistream_test.o" + ], + "test/quic_multistream_test-bin-quic_multistream_test.o" => [ + "test/quic_multistream_test.c" + ], + "test/quic_newcid_test" => [ + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/quic_newcid_test-bin-quic_newcid_test.o" + ], + "test/quic_newcid_test-bin-quic_newcid_test.o" => [ + "test/quic_newcid_test.c" + ], + "test/quic_qlog_test" => [ + "test/quic_qlog_test-bin-quic_qlog_test.o" + ], + "test/quic_qlog_test-bin-quic_qlog_test.o" => [ + "test/quic_qlog_test.c" + ], + "test/quic_radix_test" => [ + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "test/quic_rcidm_test" => [ + "test/quic_rcidm_test-bin-quic_rcidm_test.o" + ], + "test/quic_rcidm_test-bin-quic_rcidm_test.o" => [ + "test/quic_rcidm_test.c" + ], + "test/quic_record_test" => [ + "test/quic_record_test-bin-quic_record_test.o" + ], + "test/quic_record_test-bin-quic_record_test.o" => [ + "test/quic_record_test.c" + ], + "test/quic_srt_gen_test" => [ + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" + ], + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" => [ + "test/quic_srt_gen_test.c" + ], + "test/quic_srtm_test" => [ + "test/quic_srtm_test-bin-quic_srtm_test.o" + ], + "test/quic_srtm_test-bin-quic_srtm_test.o" => [ + "test/quic_srtm_test.c" + ], + "test/quic_stream_test" => [ + "test/quic_stream_test-bin-quic_stream_test.o" + ], + "test/quic_stream_test-bin-quic_stream_test.o" => [ + "test/quic_stream_test.c" + ], + "test/quic_tserver_test" => [ + "test/quic_tserver_test-bin-quic_tserver_test.o" + ], + "test/quic_tserver_test-bin-quic_tserver_test.o" => [ + "test/quic_tserver_test.c" + ], + "test/quic_txp_test" => [ + "test/quic_txp_test-bin-cc_dummy.o", + "test/quic_txp_test-bin-quic_txp_test.o" + ], + "test/quic_txp_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_txp_test-bin-quic_txp_test.o" => [ + "test/quic_txp_test.c" + ], + "test/quic_txpim_test" => [ + "test/quic_txpim_test-bin-quic_txpim_test.o" + ], + "test/quic_txpim_test-bin-quic_txpim_test.o" => [ + "test/quic_txpim_test.c" + ], + "test/quic_wire_test" => [ + "test/quic_wire_test-bin-quic_wire_test.o" + ], + "test/quic_wire_test-bin-quic_wire_test.o" => [ + "test/quic_wire_test.c" + ], + "test/quicapitest" => [ + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/quicapitest-bin-quicapitest.o" + ], + "test/quicapitest-bin-quicapitest.o" => [ + "test/quicapitest.c" + ], + "test/quicfaultstest" => [ + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", + "test/quicfaultstest-bin-quicfaultstest.o" + ], + "test/quicfaultstest-bin-quicfaultstest.o" => [ + "test/quicfaultstest.c" + ], + "test/radix/quic_radix_test-bin-quic_radix.o" => [ + "test/radix/quic_radix.c" + ], "test/rand_status_test" => [ "test/rand_status_test-bin-rand_status_test.o" ], @@ -27164,11 +32105,11 @@ our %unified_info = ( "test/rc5test-bin-rc5test.o" => [ "test/rc5test.c" ], - "test/rdrand_sanitytest" => [ - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" + "test/rdcpu_sanitytest" => [ + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" ], - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" => [ - "test/rdrand_sanitytest.c" + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" => [ + "test/rdcpu_sanitytest.c" ], "test/recordlentest" => [ "test/helpers/recordlentest-bin-ssltestlib.o", @@ -27177,6 +32118,13 @@ our %unified_info = ( "test/recordlentest-bin-recordlentest.o" => [ "test/recordlentest.c" ], + "test/rpktest" => [ + "test/helpers/rpktest-bin-ssltestlib.o", + "test/rpktest-bin-rpktest.o" + ], + "test/rpktest-bin-rpktest.o" => [ + "test/rpktest.c" + ], "test/rsa_complex" => [ "test/rsa_complex-bin-rsa_complex.o" ], @@ -27201,6 +32149,18 @@ our %unified_info = ( "test/rsa_test-bin-rsa_test.o" => [ "test/rsa_test.c" ], + "test/rsa_x931_test" => [ + "test/rsa_x931_test-bin-rsa_x931_test.o" + ], + "test/rsa_x931_test-bin-rsa_x931_test.o" => [ + "test/rsa_x931_test.c" + ], + "test/safe_math_test" => [ + "test/safe_math_test-bin-safe_math_test.o" + ], + "test/safe_math_test-bin-safe_math_test.o" => [ + "test/safe_math_test.c" + ], "test/sanitytest" => [ "test/sanitytest-bin-sanitytest.o" ], @@ -27232,6 +32192,12 @@ our %unified_info = ( "test/siphash_internal_test-bin-siphash_internal_test.o" => [ "test/siphash_internal_test.c" ], + "test/slh_dsa_test" => [ + "test/slh_dsa_test-bin-slh_dsa_test.o" + ], + "test/slh_dsa_test-bin-slh_dsa_test.o" => [ + "test/slh_dsa_test.c" + ], "test/sm2_internal_test" => [ "test/sm2_internal_test-bin-sm2_internal_test.o" ], @@ -27274,6 +32240,13 @@ our %unified_info = ( "test/ssl_ctx_test-bin-ssl_ctx_test.o" => [ "test/ssl_ctx_test.c" ], + "test/ssl_handshake_rtt_test" => [ + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" + ], + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" => [ + "test/ssl_handshake_rtt_test.c" + ], "test/ssl_old_test" => [ "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/ssl_old_test-bin-ssl_old_test.o" @@ -27332,6 +32305,12 @@ our %unified_info = ( "test/stack_test-bin-stack_test.o" => [ "test/stack_test.c" ], + "test/strtoultest" => [ + "test/strtoultest-bin-strtoultest.o" + ], + "test/strtoultest-bin-strtoultest.o" => [ + "test/strtoultest.c" + ], "test/sysdefaulttest" => [ "test/sysdefaulttest-bin-sysdefaulttest.o" ], @@ -27362,6 +32341,9 @@ our %unified_info = ( "test/testutil/libtestutil-lib-format_output.o" => [ "test/testutil/format_output.c" ], + "test/testutil/libtestutil-lib-helper.o" => [ + "test/testutil/helper.c" + ], "test/testutil/libtestutil-lib-load.o" => [ "test/testutil/load.c" ], @@ -27395,6 +32377,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-testutil_init.o" => [ "test/testutil/testutil_init.c" ], + "test/threadpool_test" => [ + "test/threadpool_test-bin-threadpool_test.o" + ], + "test/threadpool_test-bin-threadpool_test.o" => [ + "test/threadpool_test.c" + ], "test/threadstest" => [ "test/threadstest-bin-threadstest.o" ], @@ -27413,6 +32401,12 @@ our %unified_info = ( "test/time_offset_test-bin-time_offset_test.o" => [ "test/time_offset_test.c" ], + "test/time_test" => [ + "test/time_test-bin-time_test.o" + ], + "test/time_test-bin-time_test.o" => [ + "test/time_test.c" + ], "test/tls13ccstest" => [ "test/helpers/tls13ccstest-bin-ssltestlib.o", "test/tls13ccstest-bin-tls13ccstest.o" @@ -27426,6 +32420,13 @@ our %unified_info = ( "test/tls13encryptiontest-bin-tls13encryptiontest.o" => [ "test/tls13encryptiontest.c" ], + "test/tls13groupselection_test" => [ + "test/helpers/tls13groupselection_test-bin-ssltestlib.o", + "test/tls13groupselection_test-bin-tls13groupselection_test.o" + ], + "test/tls13groupselection_test-bin-tls13groupselection_test.o" => [ + "test/tls13groupselection_test.c" + ], "test/trace_api_test" => [ "test/trace_api_test-bin-trace_api_test.o" ], @@ -27481,6 +32482,12 @@ our %unified_info = ( "test/wpackettest-bin-wpackettest.o" => [ "test/wpackettest.c" ], + "test/x509_acert_test" => [ + "test/x509_acert_test-bin-x509_acert_test.o" + ], + "test/x509_acert_test-bin-x509_acert_test.o" => [ + "test/x509_acert_test.c" + ], "test/x509_check_cert_pkey_test" => [ "test/x509_check_cert_pkey_test-bin-x509_check_cert_pkey_test.o" ], @@ -27499,6 +32506,24 @@ our %unified_info = ( "test/x509_internal_test-bin-x509_internal_test.o" => [ "test/x509_internal_test.c" ], + "test/x509_load_cert_file_test" => [ + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" + ], + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" => [ + "test/x509_load_cert_file_test.c" + ], + "test/x509_req_test" => [ + "test/x509_req_test-bin-x509_req_test.o" + ], + "test/x509_req_test-bin-x509_req_test.o" => [ + "test/x509_req_test.c" + ], + "test/x509_test" => [ + "test/x509_test-bin-x509_test.o" + ], + "test/x509_test-bin-x509_test.o" => [ + "test/x509_test.c" + ], "test/x509_time_test" => [ "test/x509_time_test-bin-x509_time_test.o" ], @@ -27562,6 +32587,7 @@ my @makevars = ( "LDLIBS", "MT", "MTFLAGS", + "OBJCOPY", "PERL", "RANLIB", "RC", @@ -27575,6 +32601,12 @@ my %disabled_info = ( "asan" => { "macro" => "OPENSSL_NO_ASAN" }, + "brotli" => { + "macro" => "OPENSSL_NO_BROTLI" + }, + "brotli-dynamic" => { + "macro" => "OPENSSL_NO_BROTLI_DYNAMIC" + }, "comp" => { "macro" => "OPENSSL_NO_COMP", "skipped" => [ @@ -27587,6 +32619,9 @@ my %disabled_info = ( "crypto-mdebug-backtrace" => { "macro" => "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE" }, + "demos" => { + "macro" => "OPENSSL_NO_DEMOS" + }, "ec_nistp_64_gcc_128" => { "macro" => "OPENSSL_NO_EC_NISTP_64_GCC_128" }, @@ -27596,12 +32631,24 @@ my %disabled_info = ( "external-tests" => { "macro" => "OPENSSL_NO_EXTERNAL_TESTS" }, + "fips-jitter" => { + "macro" => "OPENSSL_NO_FIPS_JITTER" + }, "fuzz-afl" => { "macro" => "OPENSSL_NO_FUZZ_AFL" }, "fuzz-libfuzzer" => { "macro" => "OPENSSL_NO_FUZZ_LIBFUZZER" }, + "h3demo" => { + "macro" => "OPENSSL_NO_H3DEMO" + }, + "hqinterop" => { + "macro" => "OPENSSL_NO_HQINTEROP" + }, + "jitter" => { + "macro" => "OPENSSL_NO_JITTER" + }, "ktls" => { "macro" => "OPENSSL_NO_KTLS" }, @@ -27617,6 +32664,9 @@ my %disabled_info = ( "msan" => { "macro" => "OPENSSL_NO_MSAN" }, + "pie" => { + "macro" => "OPENSSL_NO_PIE" + }, "rc5" => { "macro" => "OPENSSL_NO_RC5", "skipped" => [ @@ -27632,6 +32682,12 @@ my %disabled_info = ( "ssl3-method" => { "macro" => "OPENSSL_NO_SSL3_METHOD" }, + "sslkeylog" => { + "macro" => "OPENSSL_NO_SSLKEYLOG" + }, + "tfo" => { + "macro" => "OPENSSL_NO_TFO" + }, "trace" => { "macro" => "OPENSSL_NO_TRACE" }, @@ -27646,6 +32702,21 @@ my %disabled_info = ( }, "weak-ssl-ciphers" => { "macro" => "OPENSSL_NO_WEAK_SSL_CIPHERS" + }, + "winstore" => { + "macro" => "OPENSSL_NO_WINSTORE" + }, + "zlib" => { + "macro" => "OPENSSL_NO_ZLIB" + }, + "zlib-dynamic" => { + "macro" => "OPENSSL_NO_ZLIB_DYNAMIC" + }, + "zstd" => { + "macro" => "OPENSSL_NO_ZSTD" + }, + "zstd-dynamic" => { + "macro" => "OPENSSL_NO_ZSTD_DYNAMIC" } ); my @user_crossable = qw( AR AS CC CXX CPP LD MT RANLIB RC ); @@ -27659,15 +32730,15 @@ unless (caller) { use File::Copy; use Pod::Usage; - use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; - use OpenSSL::fallback '/home/runner/work/node/node/deps/openssl/openssl/external/perl/MODULES.txt'; + use lib '/node/deps/openssl/openssl/util/perl'; + use OpenSSL::fallback '/node/deps/openssl/openssl/external/perl/MODULES.txt'; my $here = dirname($0); if (scalar @ARGV == 0) { # With no arguments, re-create the build file # We do that in two steps, where the first step emits perl - # snipets. + # snippets. my $buildfile = $config{build_file}; my $buildfile_template = "$buildfile.in"; @@ -27687,7 +32758,7 @@ unless (caller) { ); use lib '.'; - use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; + use lib '/node/deps/openssl/openssl/Configurations'; use gentemplate; open my $buildfile_template_fh, ">$buildfile_template" @@ -27704,8 +32775,8 @@ unless (caller) { my $prepend = <<'_____'; use File::Spec::Functions; -use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; -use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; +use lib '/node/deps/openssl/openssl/util/perl'; +use lib '/node/deps/openssl/openssl/Configurations'; use lib '.'; use platform; _____ diff --git a/deps/openssl/config/archs/BSD-x86/asm/crypto/aes/aes-586.S b/deps/openssl/config/archs/BSD-x86/asm/crypto/aes/aes-586.S index 54ca918323b688..cca5b86b1a282d 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/crypto/aes/aes-586.S +++ b/deps/openssl/config/archs/BSD-x86/asm/crypto/aes/aes-586.S @@ -3275,4 +3275,4 @@ L056permute: .byte 65,69,83,32,102,111,114,32,120,56,54,44,32,67,82,89 .byte 80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114 .byte 111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 -.comm _OPENSSL_ia32cap_P,16 +.comm _OPENSSL_ia32cap_P,40 diff --git a/deps/openssl/config/archs/BSD-x86/asm/crypto/aes/aesni-x86.S b/deps/openssl/config/archs/BSD-x86/asm/crypto/aes/aesni-x86.S index 0dfd8d39f9fb45..33783dd53acdf2 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/crypto/aes/aesni-x86.S +++ b/deps/openssl/config/archs/BSD-x86/asm/crypto/aes/aesni-x86.S @@ -3323,4 +3323,4 @@ Lkey_const: .byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 .byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 .byte 115,108,46,111,114,103,62,0 -.comm _OPENSSL_ia32cap_P,16 +.comm _OPENSSL_ia32cap_P,40 diff --git a/deps/openssl/config/archs/BSD-x86/asm/crypto/bn/bn-586.S b/deps/openssl/config/archs/BSD-x86/asm/crypto/bn/bn-586.S index 74f325b80bf104..9b5d37a1fbdb71 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/crypto/bn/bn-586.S +++ b/deps/openssl/config/archs/BSD-x86/asm/crypto/bn/bn-586.S @@ -1557,4 +1557,4 @@ L032pw_end: popl %ebx popl %ebp ret -.comm _OPENSSL_ia32cap_P,16 +.comm _OPENSSL_ia32cap_P,40 diff --git a/deps/openssl/config/archs/BSD-x86/asm/crypto/bn/x86-gf2m.S b/deps/openssl/config/archs/BSD-x86/asm/crypto/bn/x86-gf2m.S index 67ddae47d13912..f3c0912cc8b3da 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/crypto/bn/x86-gf2m.S +++ b/deps/openssl/config/archs/BSD-x86/asm/crypto/bn/x86-gf2m.S @@ -355,4 +355,4 @@ L001ialu: .byte 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 .byte 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 .byte 62,0 -.comm _OPENSSL_ia32cap_P,16 +.comm _OPENSSL_ia32cap_P,40 diff --git a/deps/openssl/config/archs/BSD-x86/asm/crypto/bn/x86-mont.S b/deps/openssl/config/archs/BSD-x86/asm/crypto/bn/x86-mont.S index 958fd5ceb507e6..fe41c053fc8ac2 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/crypto/bn/x86-mont.S +++ b/deps/openssl/config/archs/BSD-x86/asm/crypto/bn/x86-mont.S @@ -477,4 +477,4 @@ L000just_leave: .byte 54,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 .byte 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 .byte 111,114,103,62,0 -.comm _OPENSSL_ia32cap_P,16 +.comm _OPENSSL_ia32cap_P,40 diff --git a/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h index 93545e7fcec163..a23ea3eae8cc8b 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: BSD-x86" -#define DATE "built on: Sun Jul 20 00:45:41 2025 UTC" +#define DATE "built on: Tue Aug 5 17:10:12 2025 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/BSD-x86/asm/crypto/chacha/chacha-x86.S b/deps/openssl/config/archs/BSD-x86/asm/crypto/chacha/chacha-x86.S index 43fb04a04b222e..1c821b153dd8c5 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/crypto/chacha/chacha-x86.S +++ b/deps/openssl/config/archs/BSD-x86/asm/crypto/chacha/chacha-x86.S @@ -1455,4 +1455,4 @@ L019done: popl %ebx popl %ebp ret -.comm _OPENSSL_ia32cap_P,16 +.comm _OPENSSL_ia32cap_P,40 diff --git a/deps/openssl/config/archs/BSD-x86/asm/crypto/ec/ecp_nistz256-x86.S b/deps/openssl/config/archs/BSD-x86/asm/crypto/ec/ecp_nistz256-x86.S index 44d644b785db3c..2ebea569d7ab14 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/crypto/ec/ecp_nistz256-x86.S +++ b/deps/openssl/config/archs/BSD-x86/asm/crypto/ec/ecp_nistz256-x86.S @@ -5255,4 +5255,4 @@ L013pic: popl %ebx popl %ebp ret -.comm _OPENSSL_ia32cap_P,16 +.comm _OPENSSL_ia32cap_P,40 diff --git a/deps/openssl/config/archs/BSD-x86/asm/crypto/params_idx.c b/deps/openssl/config/archs/BSD-x86/asm/crypto/params_idx.c new file mode 100644 index 00000000000000..9d76ffededc24c --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/asm/crypto/params_idx.c @@ -0,0 +1,3366 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from crypto/params_idx.c.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#include "internal/e_os.h" +#include "internal/param_names.h" +#include + +/* Machine generated TRIE -- generated by util/perl/OpenSSL/paramnames.pm */ +int ossl_param_find_pidx(const char *s) +{ + switch(s[0]) { + default: + break; + case 'a': + switch(s[1]) { + default: + break; + case 'c': + if (strcmp("vp-info", s + 2) == 0) + return PIDX_KDF_PARAM_X942_ACVPINFO; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'd': + if (strcmp("itional-random", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_ADD_RANDOM; + break; + case '\0': + return PIDX_KDF_PARAM_ARGON2_AD; + } + break; + case 'e': + if (strcmp("ad", s + 2) == 0) + return PIDX_CIPHER_PARAM_AEAD; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("id_param", s + 4) == 0) + return PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD; + break; + case 'i': + if (strcmp("d-absent", s + 4) == 0) + return PIDX_DIGEST_PARAM_ALGID_ABSENT; + break; + case 'o': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'h': + switch(s[8]) { + default: + break; + case 'm': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '-': + if (strcmp("params", s + 13) == 0) + return PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS; + break; + case '\0': + return PIDX_ALG_PARAM_ALGORITHM_ID; + } + } + } + } + } + } + } + } + } + } + break; + case 'i': + if (strcmp("as", s + 3) == 0) + return PIDX_STORE_PARAM_ALIAS; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_A; + } + break; + case 'b': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("sis-type", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_CHAR2_TYPE; + break; + case 'i': + if (strcmp("ts", s + 2) == 0) + return PIDX_PKEY_PARAM_BITS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("size", s + 6) == 0) + return PIDX_MAC_PARAM_BLOCK_SIZE; + break; + case '_': + if (strcmp("padding", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING; + break; + case 's': + if (strcmp("ize", s + 6) == 0) + return PIDX_DIGEST_PARAM_BLOCK_SIZE; + } + } + } + } + break; + case 'u': + if (strcmp("ildinfo", s + 2) == 0) + return PIDX_PROV_PARAM_BUILDINFO; + break; + case '\0': + return PIDX_PKEY_PARAM_EC_B; + } + break; + case 'c': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_C_ROUNDS; + break; + case 'e': + if (strcmp("kalg", s + 2) == 0) + return PIDX_KDF_PARAM_CEK_ALG; + break; + case 'i': + if (strcmp("pher", s + 2) == 0) + return PIDX_ALG_PARAM_CIPHER; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("actor", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_COFACTOR; + break; + case 'n': + switch(s[3]) { + default: + break; + case 's': + if (strcmp("tant", s + 4) == 0) + return PIDX_KDF_PARAM_CONSTANT; + break; + case 't': + if (strcmp("ext-string", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_CONTEXT_STRING; + } + } + break; + case 't': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("mode", s + 4) == 0) + return PIDX_CIPHER_PARAM_CTS_MODE; + break; + case '\0': + return PIDX_CIPHER_PARAM_CTS; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '-': + if (strcmp("iv", s + 7) == 0) + return PIDX_CIPHER_PARAM_CUSTOM_IV; + break; + case '\0': + return PIDX_MAC_PARAM_CUSTOM; + } + } + } + } + } + } + break; + case 'd': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_D_ROUNDS; + break; + case 'a': + switch(s[2]) { + default: + break; + case 't': + switch(s[3]) { + default: + break; + case 'a': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 's': + if (strcmp("tructure", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_STRUCTURE; + break; + case 't': + if (strcmp("ype", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_TYPE; + } + break; + case '\0': + return PIDX_OBJECT_PARAM_DATA; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + if (strcmp("ded-from-explicit", s + 4) == 0) + return PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS; + break; + case 'r': + if (strcmp("ypt-only", s + 4) == 0) + return PIDX_CIPHER_PARAM_DECRYPT_ONLY; + } + break; + case 'f': + if (strcmp("ault-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_DEFAULT_DIGEST; + break; + case 's': + if (strcmp("c", s + 3) == 0) + return PIDX_OBJECT_PARAM_DESC; + break; + case 't': + if (strcmp("erministic", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_DETERMINISTIC; + } + break; + case 'h': + if (strcmp("kem-ikm", s + 2) == 0) + return PIDX_PKEY_PARAM_DHKEM_IKM; + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("heck", s + 8) == 0) + return PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK; + break; + case 'n': + if (strcmp("oinit", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_NOINIT; + break; + case 'o': + if (strcmp("neshot", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_ONESHOT; + break; + case 'p': + if (strcmp("rops", s + 8) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS; + break; + case 's': + if (strcmp("ize", s + 8) == 0) + return PIDX_PKEY_PARAM_DIGEST_SIZE; + } + break; + case '\0': + return PIDX_STORE_PARAM_DIGEST; + } + } + } + } + break; + case 's': + if (strcmp("tid", s + 3) == 0) + return PIDX_PKEY_PARAM_DIST_ID; + } + break; + case 'r': + if (strcmp("bg-no-trunc-md", s + 2) == 0) + return PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST; + break; + case 's': + if (strcmp("a-sign-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_DSA_SIGN_DISABLED; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_D; + } + break; + case 'e': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("rly_clean", s + 2) == 0) + return PIDX_KDF_PARAM_EARLY_CLEAN; + break; + case 'c': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'h': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'a': + switch(s[9]) { + default: + break; + case 'c': + switch(s[10]) { + default: + break; + case 't': + switch(s[11]) { + default: + break; + case 'o': + switch(s[12]) { + default: + break; + case 'r': + switch(s[13]) { + default: + break; + case '-': + switch(s[14]) { + default: + break; + case 'c': + if (strcmp("heck", s + 15) == 0) + return PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK; + break; + case 'm': + if (strcmp("ode", s + 15) == 0) + return PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE; + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'm': + if (strcmp("s_check", s + 2) == 0) + return PIDX_KDF_PARAM_FIPS_EMS_CHECK; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("d-pub-key", s + 6) == 0) + return PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY; + break; + case 'i': + if (strcmp("ng", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_ENCODING; + } + } + break; + case 'r': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'c': + if (strcmp("heck", s + 9) == 0) + return PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK; + break; + case 'l': + if (strcmp("evel", s + 9) == 0) + return PIDX_ENCODER_PARAM_ENCRYPT_LEVEL; + } + } + } + } + } + } + break; + case 'g': + if (strcmp("ine", s + 3) == 0) + return PIDX_ALG_PARAM_ENGINE; + break; + case 't': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'y': + switch(s[7]) { + default: + break; + case '_': + if (strcmp("required", s + 8) == 0) + return PIDX_DRBG_PARAM_ENTROPY_REQUIRED; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_ENTROPY; + } + } + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_E; + break; + case 'x': + if (strcmp("pect", s + 2) == 0) + return PIDX_STORE_PARAM_EXPECT; + } + break; + case 'f': + switch(s[1]) { + default: + break; + case 'i': + switch(s[2]) { + default: + break; + case 'e': + if (strcmp("ld-type", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_FIELD_TYPE; + break; + case 'n': + if (strcmp("gerprint", s + 3) == 0) + return PIDX_STORE_PARAM_FINGERPRINT; + break; + case 'p': + if (strcmp("s-indicator", s + 3) == 0) + return PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR; + } + } + break; + case 'g': + switch(s[1]) { + default: + break; + case 'e': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_GENERATE; + } + break; + case 'o': + if (strcmp("r", s + 8) == 0) + return PIDX_PKEY_PARAM_EC_GENERATOR; + } + } + } + } + } + } + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_GINDEX; + break; + case 'r': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'u': + switch(s[4]) { + default: + break; + case 'p': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("check", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE; + break; + case '\0': + return PIDX_PKEY_PARAM_GROUP_NAME; + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_G; + } + break; + case 'h': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("s-randkey", s + 2) == 0) + return PIDX_CIPHER_PARAM_HAS_RAND_KEY; + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_H; + break; + case 'k': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'f': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_KEY_CHECK; + } + } + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_HMAC_KEY_CHECK; + break; + case 's': + if (strcmp("_padding", s + 2) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING; + } + break; + case 'i': + switch(s[1]) { + default: + break; + case 'd': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_PKCS12_ID; + } + break; + case 'k': + if (strcmp("me", s + 2) == 0) + return PIDX_KEM_PARAM_IKME; + break; + case 'm': + if (strcmp("plicit-rejection", s + 2) == 0) + return PIDX_PKEY_PARAM_IMPLICIT_REJECTION; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("lude-public", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC; + break; + case 'f': + if (strcmp("o", s + 3) == 0) + return PIDX_PASSPHRASE_PARAM_INFO; + break; + case 'p': + if (strcmp("ut-type", s + 3) == 0) + return PIDX_STORE_PARAM_INPUT_TYPE; + break; + case 's': + if (strcmp("tance", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_INSTANCE; + } + break; + case 't': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("tion", s + 5) == 0) + return PIDX_GEN_PARAM_ITERATION; + break; + case '\0': + return PIDX_KDF_PARAM_ITER; + } + } + } + break; + case 'v': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("generated", s + 3) == 0) + return PIDX_CIPHER_PARAM_AEAD_IV_GENERATED; + break; + case 'l': + if (strcmp("en", s + 3) == 0) + return PIDX_CIPHER_PARAM_IVLEN; + break; + case '\0': + return PIDX_MAC_PARAM_IV; + } + } + break; + case 'j': + switch(s[1]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_COFACTOR; + } + break; + case 'k': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K2; + } + break; + case '3': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K3; + } + break; + case 'a': + if (strcmp("t", s + 2) == 0) + return PIDX_SIGNATURE_PARAM_KAT; + break; + case 'b': + if (strcmp("kdf-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KBKDF_KEY_CHECK; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case 's': + switch(s[9]) { + default: + break; + case 't': + switch(s[10]) { + default: + break; + case '-': + if (strcmp("props", s + 11) == 0) + return PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_KDF_DIGEST; + } + } + } + } + } + } + break; + case 'o': + if (strcmp("utlen", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_OUTLEN; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_TYPE; + break; + case 'u': + if (strcmp("km", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_UKM; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'y': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("heck", s + 5) == 0) + return PIDX_PKEY_PARAM_FIPS_KEY_CHECK; + break; + case 'l': + if (strcmp("ength", s + 5) == 0) + return PIDX_SKEY_PARAM_KEY_LENGTH; + } + break; + case 'b': + if (strcmp("its", s + 4) == 0) + return PIDX_CIPHER_PARAM_RC2_KEYBITS; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_KEYLEN; + break; + case '\0': + return PIDX_MAC_PARAM_KEY; + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KMAC_KEY_CHECK; + } + break; + case 'l': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("el", s + 3) == 0) + return PIDX_KDF_PARAM_LABEL; + break; + case 'n': + if (strcmp("es", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_LANES; + } + } + break; + case 'm': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'k': + if (strcmp("ey", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_MAC_KEY; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_KDF_PARAM_MAC_SIZE; + break; + case '\0': + return PIDX_ALG_PARAM_MAC; + } + break; + case 'n': + if (strcmp("datory-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_MANDATORY_DIGEST; + break; + case 'x': + switch(s[3]) { + default: + break; + case '-': + if (strcmp("size", s + 4) == 0) + return PIDX_PKEY_PARAM_MAX_SIZE; + break; + case '_': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("dinlen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_ADINLEN; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("rly_data", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA; + break; + case 'n': + if (strcmp("tropylen", s + 6) == 0) + return PIDX_DRBG_PARAM_MAX_ENTROPYLEN; + } + break; + case 'f': + if (strcmp("rag_len", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_NONCELEN; + break; + case 'p': + if (strcmp("erslen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_PERSLEN; + break; + case 'r': + if (strcmp("equest", s + 5) == 0) + return PIDX_RAND_PARAM_MAX_REQUEST; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MAX_LENGTH; + break; + case 'm': + if (strcmp("em_bytes", s + 4) == 0) + return PIDX_KDF_PARAM_SCRYPT_MAXMEM; + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'm': + if (strcmp("cost", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_MEMCOST; + break; + case 's': + if (strcmp("sage-encoding", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING; + } + break; + case 'g': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_DIGEST; + break; + case 'p': + if (strcmp("roperties", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_PROPERTIES; + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_MASKGENFUNC; + } + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("alg", s + 3) == 0) + return PIDX_DIGEST_PARAM_MICALG; + break; + case 'n': + switch(s[3]) { + default: + break; + case '_': + switch(s[4]) { + default: + break; + case 'e': + if (strcmp("ntropylen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_ENTROPYLEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_NONCELEN; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MIN_LENGTH; + } + } + break; + case 'l': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + if (strcmp("nput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS; + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED; + } + } + } + } + break; + case 'k': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + switch(s[8]) { + default: + break; + case 'm': + if (strcmp("port_pct_type", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE; + break; + case 'n': + if (strcmp("put_formats", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS; + } + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED; + } + } + } + } + } + } + break; + case 'o': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case '\0': + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE; + } + break; + case 'u': + if (strcmp("le-filename", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_MODULE_FILENAME; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_SIGNATURE_PARAM_MU; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_M; + } + break; + case 'n': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("me", s + 2) == 0) + return PIDX_STORE_PARAM_ISSUER; + break; + case 'o': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("short-mac", s + 3) == 0) + return PIDX_PROV_PARAM_NO_SHORT_MAC; + break; + case 'n': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("type", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_NONCE_TYPE; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_NONCE; + } + } + } + } + break; + case 'u': + if (strcmp("m", s + 2) == 0) + return PIDX_CIPHER_PARAM_NUM; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_N; + } + break; + case 'o': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("ep-label", s + 2) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL; + break; + case 'p': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'n': + if (strcmp("ssl-version", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_VERSION; + break; + case 'r': + if (strcmp("ation", s + 4) == 0) + return PIDX_KEM_PARAM_OPERATION; + } + break; + case 't': + if (strcmp("ions", s + 3) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS; + } + break; + case 'r': + if (strcmp("der", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_ORDER; + } + break; + case 'p': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P2; + } + break; + case 'a': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'm': + if (strcmp("ode", s + 5) == 0) + return PIDX_PKEY_PARAM_PAD_MODE; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_DIGEST_PARAM_PAD_TYPE; + } + break; + case 'd': + if (strcmp("ing", s + 4) == 0) + return PIDX_CIPHER_PARAM_PADDING; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_PAD; + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'u': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYUINFO; + break; + case 'v': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYVINFO; + } + } + } + break; + case 's': + if (strcmp("s", s + 3) == 0) + return PIDX_KDF_PARAM_PASSWORD; + } + break; + case 'b': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("ts", s + 3) == 0) + return PIDX_PKEY_PARAM_FFC_PBITS; + break; + case 'k': + if (strcmp("df2-lower-bound-check", s + 3) == 0) + return PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK; + } + break; + case 'c': + if (strcmp("ounter", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_PCOUNTER; + break; + case 'i': + if (strcmp("peline-tag", s + 2) == 0) + return PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG; + break; + case 'k': + if (strcmp("cs5", s + 2) == 0) + return PIDX_KDF_PARAM_PKCS5; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("nt-format", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT; + break; + case 't': + if (strcmp("ential", s + 3) == 0) + return PIDX_GEN_PARAM_POTENTIAL; + } + break; + case 'r': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("iction_resistance", s + 4) == 0) + return PIDX_DRBG_PARAM_PREDICTION_RESISTANCE; + break; + case 'f': + if (strcmp("ix", s + 4) == 0) + return PIDX_KDF_PARAM_PREFIX; + } + break; + case 'i': + switch(s[3]) { + default: + break; + case 'm': + if (strcmp("es", s + 4) == 0) + return PIDX_PKEY_PARAM_RSA_PRIMES; + break; + case 'v': + switch(s[4]) { + default: + break; + case '_': + if (strcmp("len", s + 5) == 0) + return PIDX_PKEY_PARAM_DH_PRIV_LEN; + break; + case '\0': + return PIDX_PKEY_PARAM_PRIV_KEY; + } + } + break; + case 'o': + switch(s[3]) { + default: + break; + case 'p': + if (strcmp("erties", s + 4) == 0) + return PIDX_STORE_PARAM_PROPERTIES; + break; + case 'v': + if (strcmp("ider-name", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_PROV_NAME; + } + } + break; + case 'u': + if (strcmp("b", s + 2) == 0) + return PIDX_PKEY_PARAM_PUB_KEY; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_P; + } + break; + case 'q': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q2; + } + break; + case 'b': + if (strcmp("its", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_QBITS; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_Q; + break; + case 'x': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_X; + } + break; + case 'y': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_Y; + } + } + break; + case 'r': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'k': + if (strcmp("ey", s + 5) == 0) + return PIDX_CIPHER_PARAM_RANDOM_KEY; + break; + case 'o': + if (strcmp("m_data", s + 5) == 0) + return PIDX_DRBG_PARAM_RANDOM_DATA; + } + } + break; + case 'w': + if (strcmp("-bytes", s + 3) == 0) + return PIDX_SKEY_PARAM_RAW_BYTES; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case '_': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("head", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD; + break; + case 'b': + if (strcmp("uffer_len", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN; + } + } + } + break; + case 'f': + if (strcmp("erence", s + 3) == 0) + return PIDX_OBJECT_PARAM_REFERENCE; + break; + case 's': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case '_': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("ounter", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_COUNTER; + break; + case 'r': + if (strcmp("equests", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_REQUESTS; + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case 'm': + switch(s[10]) { + default: + break; + case 'e': + switch(s[11]) { + default: + break; + case '_': + if (strcmp("interval", s + 12) == 0) + return PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL; + break; + case '\0': + return PIDX_DRBG_PARAM_RESEED_TIME; + } + } + } + } + } + } + } + } + } + } + break; + case 'o': + if (strcmp("unds", s + 2) == 0) + return PIDX_CIPHER_PARAM_ROUNDS; + break; + case 's': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + switch(s[5]) { + default: + break; + case 'o': + switch(s[6]) { + default: + break; + case 'e': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case 'i': + switch(s[10]) { + default: + break; + case 'c': + switch(s[11]) { + default: + break; + case 'i': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'n': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case '1': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT1; + } + break; + case '2': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT2; + } + break; + case '3': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT3; + } + break; + case '4': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT4; + } + break; + case '5': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT5; + } + break; + case '6': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT6; + } + break; + case '7': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT7; + } + break; + case '8': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT8; + } + break; + case '9': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'd': + if (strcmp("erive-from-pq", s + 5) == 0) + return PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'x': + switch(s[6]) { + default: + break; + case 'p': + switch(s[7]) { + default: + break; + case 'o': + switch(s[8]) { + default: + break; + case 'n': + switch(s[9]) { + default: + break; + case 'e': + switch(s[10]) { + default: + break; + case 'n': + switch(s[11]) { + default: + break; + case 't': + switch(s[12]) { + default: + break; + case '1': + switch(s[13]) { + default: + break; + case '0': + switch(s[14]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT1; + } + break; + case '2': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT2; + } + break; + case '3': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT3; + } + break; + case '4': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT4; + } + break; + case '5': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT5; + } + break; + case '6': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT6; + } + break; + case '7': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT7; + } + break; + case '8': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT8; + } + break; + case '9': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT; + } + } + } + } + } + } + } + } + break; + case 'f': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'o': + switch(s[9]) { + default: + break; + case 'r': + switch(s[10]) { + default: + break; + case '1': + switch(s[11]) { + default: + break; + case '0': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR1; + } + break; + case '2': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR2; + } + break; + case '3': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR3; + } + break; + case '4': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR4; + } + break; + case '5': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR5; + } + break; + case '6': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR6; + } + break; + case '7': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR7; + } + break; + case '8': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR8; + } + break; + case '9': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR; + } + } + } + } + } + } + break; + case 'p': + switch(s[5]) { + default: + break; + case 'k': + if (strcmp("cs15-pad-disabled", s + 6) == 0) + return PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED; + break; + case 's': + if (strcmp("s-saltlen-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK; + } + break; + case 's': + if (strcmp("ign-x931-pad-disabled", s + 5) == 0) + return PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED; + } + } + } + break; + case '\0': + return PIDX_KDF_PARAM_SCRYPT_R; + } + break; + case 's': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("eprime-generator", s + 3) == 0) + return PIDX_PKEY_PARAM_DH_GENERATOR; + break; + case 'l': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'l': + if (strcmp("en", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_PSS_SALTLEN; + break; + case '\0': + return PIDX_MAC_PARAM_SALT; + } + } + break; + case 'v': + if (strcmp("e-parameters", s + 3) == 0) + return PIDX_ENCODER_PARAM_SAVE_PARAMETERS; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'r': + if (strcmp("et", s + 4) == 0) + return PIDX_KDF_PARAM_SECRET; + break; + case 'u': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'y': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'b': + if (strcmp("its", s + 10) == 0) + return PIDX_PKEY_PARAM_SECURITY_BITS; + break; + case 'c': + if (strcmp("hecks", s + 10) == 0) + return PIDX_PROV_PARAM_SECURITY_CHECKS; + } + } + } + } + } + } + } + break; + case 'e': + if (strcmp("d", s + 3) == 0) + return PIDX_PKEY_PARAM_SLH_DSA_SEED; + break; + case 'r': + if (strcmp("ial", s + 3) == 0) + return PIDX_STORE_PARAM_SERIAL; + break; + case 's': + if (strcmp("sion_id", s + 3) == 0) + return PIDX_KDF_PARAM_SSHKDF_SESSION_ID; + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'n': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + if (strcmp("heck", s + 6) == 0) + return PIDX_PKEY_PARAM_FIPS_SIGN_CHECK; + break; + case 'x': + if (strcmp("931-pad-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK; + } + break; + case 'a': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case 'u': + switch(s[7]) { + default: + break; + case 'r': + switch(s[8]) { + default: + break; + case 'e': + switch(s[9]) { + default: + break; + case '-': + if (strcmp("digest-check", s + 10) == 0) + return PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK; + break; + case '\0': + return PIDX_SIGNATURE_PARAM_SIGNATURE; + } + } + } + } + } + } + } + break; + case 'z': + if (strcmp("e", s + 3) == 0) + return PIDX_MAC_PARAM_SIZE; + } + break; + case 'p': + if (strcmp("eed", s + 2) == 0) + return PIDX_CIPHER_PARAM_SPEED; + break; + case 's': + switch(s[2]) { + default: + break; + case 'h': + switch(s[3]) { + default: + break; + case 'k': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'f': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_KEY_CHECK; + } + } + } + } + } + break; + case 'k': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'f': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_KEY_CHECK; + } + } + } + } + break; + case 'l': + if (strcmp("3-ms", s + 3) == 0) + return PIDX_DIGEST_PARAM_SSL3_MS; + } + break; + case 't': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("esc", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_DESC; + break; + case 'p': + if (strcmp("hase", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_PHASE; + break; + case 't': + if (strcmp("ype", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_TYPE; + } + break; + case 'a': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_STATE; + } + break; + case 'u': + if (strcmp("s", s + 5) == 0) + return PIDX_PROV_PARAM_STATUS; + } + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("m_mac", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC; + break; + case 'n': + if (strcmp("gth", s + 5) == 0) + return PIDX_RAND_PARAM_STRENGTH; + } + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("ject", s + 3) == 0) + return PIDX_STORE_PARAM_SUBJECT; + break; + case 'p': + switch(s[3]) { + default: + break; + case 'p': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + if (strcmp("ivinfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PRIVINFO; + break; + case 'u': + if (strcmp("binfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PUBINFO; + } + } + } + } + } + } + break; + case 't': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_TAGLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TAG; + } + } + break; + case 'd': + if (strcmp("es-encrypt-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED; + break; + case 'e': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case '-': + if (strcmp("entropy", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_TEST_ENTROPY; + break; + case '_': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("ntropy", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_ENTROPY; + break; + case 'n': + if (strcmp("once", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_NONCE; + } + } + } + } + break; + case 'h': + if (strcmp("reads", s + 2) == 0) + return PIDX_KDF_PARAM_THREADS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("lient-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION; + break; + case 'd': + if (strcmp("ata-size", s + 5) == 0) + return PIDX_MAC_PARAM_TLS_DATA_SIZE; + break; + case 'g': + switch(s[5]) { + default: + break; + case 'r': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'u': + switch(s[8]) { + default: + break; + case 'p': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'a': + if (strcmp("lg", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_ALG; + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_ID; + } + break; + case 's': + if (strcmp("-kem", s + 12) == 0) + return PIDX_CAPABILITY_TLS_GROUP_IS_KEM; + } + break; + case 'n': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'm': + switch(s[13]) { + default: + break; + case 'e': + switch(s[14]) { + default: + break; + case '-': + if (strcmp("internal", s + 15) == 0) + return PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL; + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_NAME; + } + } + } + } + break; + case 's': + if (strcmp("ec-bits", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case '-': + if (strcmp("size", s + 8) == 0) + return PIDX_CIPHER_PARAM_TLS_MAC_SIZE; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS_MAC; + } + break; + case 'x': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS; + } + } + } + break; + case 'i': + switch(s[6]) { + default: + break; + case 'n': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS; + } + } + } + break; + case 'u': + if (strcmp("lti", s + 6) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK; + } + break; + case 'n': + if (strcmp("egotiated-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION; + break; + case 's': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'a': + switch(s[8]) { + default: + break; + case 'l': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '-': + switch(s[11]) { + default: + break; + case 'c': + if (strcmp("ode-point", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT; + break; + case 'h': + switch(s[12]) { + default: + break; + case 'a': + switch(s[13]) { + default: + break; + case 's': + switch(s[14]) { + default: + break; + case 'h': + switch(s[15]) { + default: + break; + case '-': + switch(s[16]) { + default: + break; + case 'n': + if (strcmp("ame", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME; + break; + case 'o': + if (strcmp("id", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_OID; + } + } + } + } + } + break; + case 'i': + if (strcmp("ana-name", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME; + break; + case 'k': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'y': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case 'y': + switch(s[16]) { + default: + break; + case 'p': + switch(s[17]) { + default: + break; + case 'e': + switch(s[18]) { + default: + break; + case '-': + if (strcmp("oid", s + 19) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID; + break; + case '\0': + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE; + } + } + } + } + } + } + } + break; + case 'n': + if (strcmp("ame", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_NAME; + break; + case 'o': + if (strcmp("id", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_OID; + break; + case 's': + switch(s[12]) { + default: + break; + case 'e': + if (strcmp("c-bits", s + 13) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS; + break; + case 'i': + switch(s[13]) { + default: + break; + case 'g': + switch(s[14]) { + default: + break; + case '-': + switch(s[15]) { + default: + break; + case 'n': + if (strcmp("ame", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME; + break; + case 'o': + if (strcmp("id", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_OID; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'v': + if (strcmp("ersion", s + 5) == 0) + return PIDX_CIPHER_PARAM_TLS_VERSION; + } + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK; + break; + case 'e': + if (strcmp("ms-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK; + } + } + } + } + } + break; + case '3': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'k': + switch(s[7]) { + default: + break; + case 'd': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'u': + switch(s[6]) { + default: + break; + case 'l': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case '_': + switch(s[10]) { + default: + break; + case 'a': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'd': + switch(s[13]) { + default: + break; + case 'p': + if (strcmp("acklen", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD; + } + } + } + break; + case 'e': + switch(s[11]) { + default: + break; + case 'n': + switch(s[12]) { + default: + break; + case 'c': + switch(s[13]) { + default: + break; + case 'i': + if (strcmp("n", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN; + break; + case 'l': + if (strcmp("en", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC; + } + } + } + break; + case 'i': + if (strcmp("nterleave", s + 11) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE; + break; + case 'm': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'x': + switch(s[13]) { + default: + break; + case 'b': + if (strcmp("ufsz", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE; + break; + case 's': + if (strcmp("ndfrag", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT; + } + } + } + } + } + } + } + } + } + } + break; + case 'a': + switch(s[4]) { + default: + break; + case 'a': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'p': + if (strcmp("ad", s + 7) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD; + } + } + } + break; + case 'i': + switch(s[4]) { + default: + break; + case 'v': + switch(s[5]) { + default: + break; + case 'f': + if (strcmp("ixed", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED; + break; + case 'g': + if (strcmp("en", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN; + break; + case 'i': + if (strcmp("nv", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV; + } + } + break; + case 't': + if (strcmp("ree", s + 4) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS; + } + break; + case 'y': + if (strcmp("pe", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_TYPE; + } + break; + case 'u': + switch(s[1]) { + default: + break; + case 'k': + if (strcmp("m", s + 2) == 0) + return PIDX_KDF_PARAM_UKM; + break; + case 'p': + if (strcmp("dated-iv", s + 2) == 0) + return PIDX_CIPHER_PARAM_UPDATED_IV; + break; + case 's': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'b': + if (strcmp("its", s + 5) == 0) + return PIDX_CIPHER_PARAM_USE_BITS; + break; + case 'c': + if (strcmp("ofactor-flag", s + 5) == 0) + return PIDX_PKEY_PARAM_USE_COFACTOR_FLAG; + break; + case 'k': + if (strcmp("eybits", s + 5) == 0) + return PIDX_KDF_PARAM_X942_USE_KEYBITS; + break; + case 'l': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_KBKDF_USE_L; + } + break; + case 's': + if (strcmp("eparator", s + 5) == 0) + return PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR; + } + break; + case '_': + switch(s[4]) { + default: + break; + case 'd': + if (strcmp("erivation_function", s + 5) == 0) + return PIDX_DRBG_PARAM_USE_DF; + break; + case 'e': + if (strcmp("tm", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM; + } + } + } + } + break; + case 'v': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'l': + switch(s[3]) { + default: + break; + case 'i': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_VALIDATE_G; + } + break; + case 'l': + if (strcmp("egacy", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY; + break; + case 'p': + if (strcmp("q", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_PQ; + } + } + } + } + } + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'r': + switch(s[3]) { + default: + break; + case 'i': + if (strcmp("fy-message", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE; + break; + case 's': + if (strcmp("ion", s + 4) == 0) + return PIDX_PROV_PARAM_VERSION; + } + } + } + break; + case 'x': + switch(s[1]) { + default: + break; + case '9': + switch(s[2]) { + default: + break; + case '4': + if (strcmp("2kdf-key-check", s + 3) == 0) + return PIDX_PROV_PARAM_X942KDF_KEY_CHECK; + break; + case '6': + switch(s[3]) { + default: + break; + case '3': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'f': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_KEY_CHECK; + } + } + } + } + } + } + } + break; + case 'c': + if (strcmp("ghash", s + 2) == 0) + return PIDX_KDF_PARAM_SSHKDF_XCGHASH; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_DIGEST_PARAM_XOFLEN; + break; + case '\0': + return PIDX_MAC_PARAM_XOF; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP; + } + break; + case 'q': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ; + } + break; + case 't': + if (strcmp("s_standard", s + 2) == 0) + return PIDX_CIPHER_PARAM_XTS_STANDARD; + } + } + return -1; +} + +/* End of TRIE */ diff --git a/deps/openssl/config/archs/BSD-x86/asm/crypto/poly1305/poly1305-x86.S b/deps/openssl/config/archs/BSD-x86/asm/crypto/poly1305/poly1305-x86.S index 6fd5469a571356..2bf33f3c8977a0 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/crypto/poly1305/poly1305-x86.S +++ b/deps/openssl/config/archs/BSD-x86/asm/crypto/poly1305/poly1305-x86.S @@ -1940,4 +1940,4 @@ Lconst_sse2: .byte 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111 .byte 114,103,62,0 .align 2,0x90 -.comm _OPENSSL_ia32cap_P,16 +.comm _OPENSSL_ia32cap_P,40 diff --git a/deps/openssl/config/archs/BSD-x86/asm/crypto/rc4/rc4-586.S b/deps/openssl/config/archs/BSD-x86/asm/crypto/rc4/rc4-586.S index 55215f177a9f84..60042da2862cb1 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/crypto/rc4/rc4-586.S +++ b/deps/openssl/config/archs/BSD-x86/asm/crypto/rc4/rc4-586.S @@ -392,4 +392,4 @@ L019opts: .byte 80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114 .byte 111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 6,0x90 -.comm _OPENSSL_ia32cap_P,16 +.comm _OPENSSL_ia32cap_P,40 diff --git a/deps/openssl/config/archs/BSD-x86/asm/crypto/sha/sha1-586.S b/deps/openssl/config/archs/BSD-x86/asm/crypto/sha/sha1-586.S index 2e977b873bb848..2f16bd08c9e1f4 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/crypto/sha/sha1-586.S +++ b/deps/openssl/config/archs/BSD-x86/asm/crypto/sha/sha1-586.S @@ -3983,4 +3983,4 @@ LK_XX_XX: .byte 102,111,114,109,32,102,111,114,32,120,56,54,44,32,67,82 .byte 89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112 .byte 114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 -.comm _OPENSSL_ia32cap_P,16 +.comm _OPENSSL_ia32cap_P,40 diff --git a/deps/openssl/config/archs/BSD-x86/asm/crypto/sha/sha256-586.S b/deps/openssl/config/archs/BSD-x86/asm/crypto/sha/sha256-586.S index ab935deb824c0a..c5fe87bf89cd8e 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/crypto/sha/sha256-586.S +++ b/deps/openssl/config/archs/BSD-x86/asm/crypto/sha/sha256-586.S @@ -6784,4 +6784,4 @@ L018avx_bmi_00_47: popl %ebx popl %ebp ret -.comm _OPENSSL_ia32cap_P,16 +.comm _OPENSSL_ia32cap_P,40 diff --git a/deps/openssl/config/archs/BSD-x86/asm/crypto/sha/sha512-586.S b/deps/openssl/config/archs/BSD-x86/asm/crypto/sha/sha512-586.S index 0dea93b398287d..97a269ba66bcf9 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/crypto/sha/sha512-586.S +++ b/deps/openssl/config/archs/BSD-x86/asm/crypto/sha/sha512-586.S @@ -2830,4 +2830,4 @@ L001K512: .byte 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 .byte 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 .byte 62,0 -.comm _OPENSSL_ia32cap_P,16 +.comm _OPENSSL_ia32cap_P,40 diff --git a/deps/openssl/config/archs/BSD-x86/asm/crypto/x86cpuid.S b/deps/openssl/config/archs/BSD-x86/asm/crypto/x86cpuid.S index 39d138a7e345d6..9420cd0c4086d9 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/crypto/x86cpuid.S +++ b/deps/openssl/config/archs/BSD-x86/asm/crypto/x86cpuid.S @@ -122,6 +122,24 @@ L002generic: xorl %ecx,%ecx .byte 0x0f,0xa2 movl %ebx,8(%edi) + movl %ecx,12(%edi) + movl %edx,16(%edi) + cmpl $1,%eax + jb L005no_extended_info + movl $7,%eax + movl $1,%ecx + .byte 0x0f,0xa2 + movl %eax,20(%edi) + movl %edx,24(%edi) + movl %ebx,28(%edi) + movl %ecx,32(%edi) + andl $524288,%edx + cmpl $0,%edx + je L005no_extended_info + movl $36,%eax + movl $0,%ecx + .byte 0x0f,0xa2 + movl %ebx,36(%edi) L005no_extended_info: btl $27,%ebp jnc L006clear_avx @@ -137,6 +155,7 @@ L008clear_xmm: andl $4278190079,%esi L006clear_avx: andl $4026525695,%ebp + andl $4286578687,20(%edi) andl $4294967263,8(%edi) L007done: movl %esi,%eax @@ -583,7 +602,7 @@ L036done: popl %ebx popl %edi ret -.comm _OPENSSL_ia32cap_P,16 +.comm _OPENSSL_ia32cap_P,40 .text .type __GLOBAL_$I$_OPENSSL_cpuid_setup,@function .globl __GLOBAL_$I$_OPENSSL_cpuid_setup diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/internal/param_names.h b/deps/openssl/config/archs/BSD-x86/asm/include/internal/param_names.h new file mode 100644 index 00000000000000..0a0404a57e82b9 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/asm/include/internal/param_names.h @@ -0,0 +1,469 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/internal/param_names.h.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +int ossl_param_find_pidx(const char *s); + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +#define NUM_PIDX 346 + +#define PIDX_ALG_PARAM_ALGORITHM_ID 0 +#define PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS 1 +#define PIDX_ALG_PARAM_CIPHER 2 +#define PIDX_ALG_PARAM_DIGEST 3 +#define PIDX_ALG_PARAM_ENGINE 4 +#define PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR 5 +#define PIDX_ALG_PARAM_MAC 6 +#define PIDX_ALG_PARAM_PROPERTIES 7 +#define PIDX_ASYM_CIPHER_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_ENGINE PIDX_PKEY_PARAM_ENGINE +#define PIDX_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +#define PIDX_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS 9 +#define PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL 10 +#define PIDX_ASYM_CIPHER_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_ASYM_CIPHER_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION 11 +#define PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION 12 +#define PIDX_CAPABILITY_TLS_GROUP_ALG 13 +#define PIDX_CAPABILITY_TLS_GROUP_ID 14 +#define PIDX_CAPABILITY_TLS_GROUP_IS_KEM 15 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_GROUP_NAME 20 +#define PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL 21 +#define PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS 22 +#define PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT 23 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME 24 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_OID 25 +#define PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME 26 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE 27 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID 28 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_SIGALG_NAME 29 +#define PIDX_CAPABILITY_TLS_SIGALG_OID 30 +#define PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS 31 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME 32 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_OID 33 +#define PIDX_CIPHER_PARAM_AEAD 34 +#define PIDX_CIPHER_PARAM_AEAD_IVLEN PIDX_CIPHER_PARAM_IVLEN +#define PIDX_CIPHER_PARAM_AEAD_IV_GENERATED 35 +#define PIDX_CIPHER_PARAM_AEAD_MAC_KEY 36 +#define PIDX_CIPHER_PARAM_AEAD_TAG 37 +#define PIDX_CIPHER_PARAM_AEAD_TAGLEN 38 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD 39 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD 40 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN 41 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED 42 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV 43 +#define PIDX_CIPHER_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD 44 +#define PIDX_CIPHER_PARAM_BLOCK_SIZE 45 +#define PIDX_CIPHER_PARAM_CTS 46 +#define PIDX_CIPHER_PARAM_CTS_MODE 47 +#define PIDX_CIPHER_PARAM_CUSTOM_IV 48 +#define PIDX_CIPHER_PARAM_DECRYPT_ONLY 49 +#define PIDX_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK 50 +#define PIDX_CIPHER_PARAM_HAS_RAND_KEY 51 +#define PIDX_CIPHER_PARAM_IV 52 +#define PIDX_CIPHER_PARAM_IVLEN 53 +#define PIDX_CIPHER_PARAM_KEYLEN 54 +#define PIDX_CIPHER_PARAM_MODE 55 +#define PIDX_CIPHER_PARAM_NUM 56 +#define PIDX_CIPHER_PARAM_PADDING 57 +#define PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG 58 +#define PIDX_CIPHER_PARAM_RANDOM_KEY 59 +#define PIDX_CIPHER_PARAM_RC2_KEYBITS 60 +#define PIDX_CIPHER_PARAM_ROUNDS 61 +#define PIDX_CIPHER_PARAM_SPEED 62 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK 63 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD 64 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN 65 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC 66 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN 67 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN 68 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE 69 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE 70 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT 71 +#define PIDX_CIPHER_PARAM_TLS_MAC 72 +#define PIDX_CIPHER_PARAM_TLS_MAC_SIZE 73 +#define PIDX_CIPHER_PARAM_TLS_VERSION 74 +#define PIDX_CIPHER_PARAM_UPDATED_IV 75 +#define PIDX_CIPHER_PARAM_USE_BITS 76 +#define PIDX_CIPHER_PARAM_XTS_STANDARD 77 +#define PIDX_DECODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DIGEST_PARAM_ALGID_ABSENT 78 +#define PIDX_DIGEST_PARAM_BLOCK_SIZE 45 +#define PIDX_DIGEST_PARAM_MICALG 79 +#define PIDX_DIGEST_PARAM_PAD_TYPE 80 +#define PIDX_DIGEST_PARAM_SIZE 81 +#define PIDX_DIGEST_PARAM_SSL3_MS 82 +#define PIDX_DIGEST_PARAM_XOF 83 +#define PIDX_DIGEST_PARAM_XOFLEN 84 +#define PIDX_DRBG_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_DRBG_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_DRBG_PARAM_ENTROPY_REQUIRED 85 +#define PIDX_DRBG_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_DRBG_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_DRBG_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_DRBG_PARAM_MAX_ADINLEN 86 +#define PIDX_DRBG_PARAM_MAX_ENTROPYLEN 87 +#define PIDX_DRBG_PARAM_MAX_LENGTH 88 +#define PIDX_DRBG_PARAM_MAX_NONCELEN 89 +#define PIDX_DRBG_PARAM_MAX_PERSLEN 90 +#define PIDX_DRBG_PARAM_MIN_ENTROPYLEN 91 +#define PIDX_DRBG_PARAM_MIN_LENGTH 92 +#define PIDX_DRBG_PARAM_MIN_NONCELEN 93 +#define PIDX_DRBG_PARAM_PREDICTION_RESISTANCE 94 +#define PIDX_DRBG_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DRBG_PARAM_RANDOM_DATA 95 +#define PIDX_DRBG_PARAM_RESEED_COUNTER 96 +#define PIDX_DRBG_PARAM_RESEED_REQUESTS 97 +#define PIDX_DRBG_PARAM_RESEED_TIME 98 +#define PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL 99 +#define PIDX_DRBG_PARAM_SIZE 81 +#define PIDX_DRBG_PARAM_USE_DF 100 +#define PIDX_ENCODER_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_ENCODER_PARAM_ENCRYPT_LEVEL 101 +#define PIDX_ENCODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_ENCODER_PARAM_SAVE_PARAMETERS 102 +#define PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE 103 +#define PIDX_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_EXCHANGE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST 104 +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS 105 +#define PIDX_EXCHANGE_PARAM_KDF_OUTLEN 106 +#define PIDX_EXCHANGE_PARAM_KDF_TYPE 107 +#define PIDX_EXCHANGE_PARAM_KDF_UKM 108 +#define PIDX_EXCHANGE_PARAM_PAD 109 +#define PIDX_GEN_PARAM_ITERATION 110 +#define PIDX_GEN_PARAM_POTENTIAL 111 +#define PIDX_KDF_PARAM_ARGON2_AD 112 +#define PIDX_KDF_PARAM_ARGON2_LANES 113 +#define PIDX_KDF_PARAM_ARGON2_MEMCOST 114 +#define PIDX_KDF_PARAM_ARGON2_VERSION 115 +#define PIDX_KDF_PARAM_CEK_ALG 116 +#define PIDX_KDF_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_KDF_PARAM_CONSTANT 117 +#define PIDX_KDF_PARAM_DATA 118 +#define PIDX_KDF_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_KDF_PARAM_EARLY_CLEAN 119 +#define PIDX_KDF_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KDF_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_KDF_PARAM_FIPS_EMS_CHECK 120 +#define PIDX_KDF_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KDF_PARAM_HMACDRBG_ENTROPY 121 +#define PIDX_KDF_PARAM_HMACDRBG_NONCE 122 +#define PIDX_KDF_PARAM_INFO 123 +#define PIDX_KDF_PARAM_ITER 124 +#define PIDX_KDF_PARAM_KBKDF_R 125 +#define PIDX_KDF_PARAM_KBKDF_USE_L 126 +#define PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR 127 +#define PIDX_KDF_PARAM_KEY 128 +#define PIDX_KDF_PARAM_LABEL 129 +#define PIDX_KDF_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_KDF_PARAM_MAC_SIZE 130 +#define PIDX_KDF_PARAM_MODE 55 +#define PIDX_KDF_PARAM_PASSWORD 131 +#define PIDX_KDF_PARAM_PKCS12_ID 132 +#define PIDX_KDF_PARAM_PKCS5 133 +#define PIDX_KDF_PARAM_PREFIX 134 +#define PIDX_KDF_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_KDF_PARAM_SALT 135 +#define PIDX_KDF_PARAM_SCRYPT_MAXMEM 136 +#define PIDX_KDF_PARAM_SCRYPT_N 137 +#define PIDX_KDF_PARAM_SCRYPT_P 138 +#define PIDX_KDF_PARAM_SCRYPT_R 125 +#define PIDX_KDF_PARAM_SECRET 139 +#define PIDX_KDF_PARAM_SEED 140 +#define PIDX_KDF_PARAM_SIZE 81 +#define PIDX_KDF_PARAM_SSHKDF_SESSION_ID 141 +#define PIDX_KDF_PARAM_SSHKDF_TYPE 142 +#define PIDX_KDF_PARAM_SSHKDF_XCGHASH 143 +#define PIDX_KDF_PARAM_THREADS 144 +#define PIDX_KDF_PARAM_UKM 145 +#define PIDX_KDF_PARAM_X942_ACVPINFO 146 +#define PIDX_KDF_PARAM_X942_PARTYUINFO 147 +#define PIDX_KDF_PARAM_X942_PARTYVINFO 148 +#define PIDX_KDF_PARAM_X942_SUPP_PRIVINFO 149 +#define PIDX_KDF_PARAM_X942_SUPP_PUBINFO 150 +#define PIDX_KDF_PARAM_X942_USE_KEYBITS 151 +#define PIDX_KEM_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KEM_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KEM_PARAM_IKME 152 +#define PIDX_KEM_PARAM_OPERATION 153 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING 154 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING 155 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA 156 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN 157 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE 55 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS 158 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD 159 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC 160 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE 161 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM 162 +#define PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN 163 +#define PIDX_MAC_PARAM_BLOCK_SIZE 164 +#define PIDX_MAC_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_MAC_PARAM_CUSTOM 165 +#define PIDX_MAC_PARAM_C_ROUNDS 166 +#define PIDX_MAC_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_MAC_PARAM_DIGEST_NOINIT 167 +#define PIDX_MAC_PARAM_DIGEST_ONESHOT 168 +#define PIDX_MAC_PARAM_D_ROUNDS 169 +#define PIDX_MAC_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_MAC_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_MAC_PARAM_FIPS_NO_SHORT_MAC PIDX_PROV_PARAM_NO_SHORT_MAC +#define PIDX_MAC_PARAM_IV 52 +#define PIDX_MAC_PARAM_KEY 128 +#define PIDX_MAC_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_MAC_PARAM_SALT 135 +#define PIDX_MAC_PARAM_SIZE 81 +#define PIDX_MAC_PARAM_TLS_DATA_SIZE 170 +#define PIDX_MAC_PARAM_XOF 83 +#define PIDX_OBJECT_PARAM_DATA 118 +#define PIDX_OBJECT_PARAM_DATA_STRUCTURE 171 +#define PIDX_OBJECT_PARAM_DATA_TYPE 172 +#define PIDX_OBJECT_PARAM_DESC 173 +#define PIDX_OBJECT_PARAM_INPUT_TYPE 174 +#define PIDX_OBJECT_PARAM_REFERENCE 175 +#define PIDX_OBJECT_PARAM_TYPE 142 +#define PIDX_PASSPHRASE_PARAM_INFO 123 +#define PIDX_PKEY_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_PKEY_PARAM_BITS 176 +#define PIDX_PKEY_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_PKEY_PARAM_DEFAULT_DIGEST 177 +#define PIDX_PKEY_PARAM_DHKEM_IKM 178 +#define PIDX_PKEY_PARAM_DH_GENERATOR 179 +#define PIDX_PKEY_PARAM_DH_PRIV_LEN 180 +#define PIDX_PKEY_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_PKEY_PARAM_DIGEST_SIZE 181 +#define PIDX_PKEY_PARAM_DIST_ID 182 +#define PIDX_PKEY_PARAM_EC_A 183 +#define PIDX_PKEY_PARAM_EC_B 184 +#define PIDX_PKEY_PARAM_EC_CHAR2_M 185 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K1 186 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K2 187 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K3 188 +#define PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS 189 +#define PIDX_PKEY_PARAM_EC_CHAR2_TYPE 190 +#define PIDX_PKEY_PARAM_EC_COFACTOR 191 +#define PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS 192 +#define PIDX_PKEY_PARAM_EC_ENCODING 193 +#define PIDX_PKEY_PARAM_EC_FIELD_TYPE 194 +#define PIDX_PKEY_PARAM_EC_GENERATOR 195 +#define PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE 196 +#define PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC 197 +#define PIDX_PKEY_PARAM_EC_ORDER 198 +#define PIDX_PKEY_PARAM_EC_P 138 +#define PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT 199 +#define PIDX_PKEY_PARAM_EC_PUB_X 200 +#define PIDX_PKEY_PARAM_EC_PUB_Y 201 +#define PIDX_PKEY_PARAM_EC_SEED 140 +#define PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY 202 +#define PIDX_PKEY_PARAM_ENGINE PIDX_ALG_PARAM_ENGINE +#define PIDX_PKEY_PARAM_FFC_COFACTOR 203 +#define PIDX_PKEY_PARAM_FFC_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_FFC_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_FFC_G 204 +#define PIDX_PKEY_PARAM_FFC_GINDEX 205 +#define PIDX_PKEY_PARAM_FFC_H 206 +#define PIDX_PKEY_PARAM_FFC_P 138 +#define PIDX_PKEY_PARAM_FFC_PBITS 207 +#define PIDX_PKEY_PARAM_FFC_PCOUNTER 208 +#define PIDX_PKEY_PARAM_FFC_Q 209 +#define PIDX_PKEY_PARAM_FFC_QBITS 210 +#define PIDX_PKEY_PARAM_FFC_SEED 140 +#define PIDX_PKEY_PARAM_FFC_TYPE 142 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_G 211 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY 212 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_PQ 213 +#define PIDX_PKEY_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK 214 +#define PIDX_PKEY_PARAM_FIPS_KEY_CHECK 215 +#define PIDX_PKEY_PARAM_FIPS_SIGN_CHECK 216 +#define PIDX_PKEY_PARAM_GROUP_NAME 217 +#define PIDX_PKEY_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_PKEY_PARAM_MANDATORY_DIGEST 218 +#define PIDX_PKEY_PARAM_MASKGENFUNC 219 +#define PIDX_PKEY_PARAM_MAX_SIZE 220 +#define PIDX_PKEY_PARAM_MGF1_DIGEST 221 +#define PIDX_PKEY_PARAM_MGF1_PROPERTIES 222 +#define PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS 223 +#define PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS 224 +#define PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED 225 +#define PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED 226 +#define PIDX_PKEY_PARAM_ML_DSA_SEED 140 +#define PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE 227 +#define PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS 228 +#define PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS 229 +#define PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED 230 +#define PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED 231 +#define PIDX_PKEY_PARAM_ML_KEM_SEED 140 +#define PIDX_PKEY_PARAM_PAD_MODE 232 +#define PIDX_PKEY_PARAM_PRIV_KEY 233 +#define PIDX_PKEY_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_PUB_KEY 234 +#define PIDX_PKEY_PARAM_RSA_BITS PIDX_PKEY_PARAM_BITS +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT 235 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT1 236 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT2 237 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT3 238 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT4 239 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT5 240 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT6 241 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT7 242 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT8 243 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT9 244 +#define PIDX_PKEY_PARAM_RSA_D 245 +#define PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ 246 +#define PIDX_PKEY_PARAM_RSA_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_RSA_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_RSA_E 247 +#define PIDX_PKEY_PARAM_RSA_EXPONENT 248 +#define PIDX_PKEY_PARAM_RSA_EXPONENT1 249 +#define PIDX_PKEY_PARAM_RSA_EXPONENT10 250 +#define PIDX_PKEY_PARAM_RSA_EXPONENT2 251 +#define PIDX_PKEY_PARAM_RSA_EXPONENT3 252 +#define PIDX_PKEY_PARAM_RSA_EXPONENT4 253 +#define PIDX_PKEY_PARAM_RSA_EXPONENT5 254 +#define PIDX_PKEY_PARAM_RSA_EXPONENT6 255 +#define PIDX_PKEY_PARAM_RSA_EXPONENT7 256 +#define PIDX_PKEY_PARAM_RSA_EXPONENT8 257 +#define PIDX_PKEY_PARAM_RSA_EXPONENT9 258 +#define PIDX_PKEY_PARAM_RSA_FACTOR 259 +#define PIDX_PKEY_PARAM_RSA_FACTOR1 260 +#define PIDX_PKEY_PARAM_RSA_FACTOR10 261 +#define PIDX_PKEY_PARAM_RSA_FACTOR2 262 +#define PIDX_PKEY_PARAM_RSA_FACTOR3 263 +#define PIDX_PKEY_PARAM_RSA_FACTOR4 264 +#define PIDX_PKEY_PARAM_RSA_FACTOR5 265 +#define PIDX_PKEY_PARAM_RSA_FACTOR6 266 +#define PIDX_PKEY_PARAM_RSA_FACTOR7 267 +#define PIDX_PKEY_PARAM_RSA_FACTOR8 268 +#define PIDX_PKEY_PARAM_RSA_FACTOR9 269 +#define PIDX_PKEY_PARAM_RSA_MASKGENFUNC PIDX_PKEY_PARAM_MASKGENFUNC +#define PIDX_PKEY_PARAM_RSA_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_PKEY_PARAM_RSA_N 137 +#define PIDX_PKEY_PARAM_RSA_PRIMES 270 +#define PIDX_PKEY_PARAM_RSA_PSS_SALTLEN 271 +#define PIDX_PKEY_PARAM_RSA_TEST_P1 272 +#define PIDX_PKEY_PARAM_RSA_TEST_P2 273 +#define PIDX_PKEY_PARAM_RSA_TEST_Q1 274 +#define PIDX_PKEY_PARAM_RSA_TEST_Q2 275 +#define PIDX_PKEY_PARAM_RSA_TEST_XP 276 +#define PIDX_PKEY_PARAM_RSA_TEST_XP1 277 +#define PIDX_PKEY_PARAM_RSA_TEST_XP2 278 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ 279 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ1 280 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ2 281 +#define PIDX_PKEY_PARAM_SECURITY_BITS 282 +#define PIDX_PKEY_PARAM_SLH_DSA_SEED 140 +#define PIDX_PKEY_PARAM_USE_COFACTOR_ECDH PIDX_PKEY_PARAM_USE_COFACTOR_FLAG +#define PIDX_PKEY_PARAM_USE_COFACTOR_FLAG 283 +#define PIDX_PROV_PARAM_BUILDINFO 284 +#define PIDX_PROV_PARAM_CORE_MODULE_FILENAME 285 +#define PIDX_PROV_PARAM_CORE_PROV_NAME 286 +#define PIDX_PROV_PARAM_CORE_VERSION 287 +#define PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST 288 +#define PIDX_PROV_PARAM_DSA_SIGN_DISABLED 289 +#define PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK 290 +#define PIDX_PROV_PARAM_HKDF_DIGEST_CHECK 291 +#define PIDX_PROV_PARAM_HKDF_KEY_CHECK 292 +#define PIDX_PROV_PARAM_HMAC_KEY_CHECK 293 +#define PIDX_PROV_PARAM_KBKDF_KEY_CHECK 294 +#define PIDX_PROV_PARAM_KMAC_KEY_CHECK 295 +#define PIDX_PROV_PARAM_NAME 296 +#define PIDX_PROV_PARAM_NO_SHORT_MAC 297 +#define PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK 298 +#define PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED 299 +#define PIDX_PROV_PARAM_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED 301 +#define PIDX_PROV_PARAM_SECURITY_CHECKS 302 +#define PIDX_PROV_PARAM_SELF_TEST_DESC 303 +#define PIDX_PROV_PARAM_SELF_TEST_PHASE 304 +#define PIDX_PROV_PARAM_SELF_TEST_TYPE 305 +#define PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK 306 +#define PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK 307 +#define PIDX_PROV_PARAM_SSHKDF_KEY_CHECK 308 +#define PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK 309 +#define PIDX_PROV_PARAM_SSKDF_KEY_CHECK 310 +#define PIDX_PROV_PARAM_STATUS 311 +#define PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED 312 +#define PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK 313 +#define PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK 314 +#define PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK 315 +#define PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK 316 +#define PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK 317 +#define PIDX_PROV_PARAM_VERSION 115 +#define PIDX_PROV_PARAM_X942KDF_KEY_CHECK 318 +#define PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK 319 +#define PIDX_PROV_PARAM_X963KDF_KEY_CHECK 320 +#define PIDX_RAND_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_RAND_PARAM_GENERATE 321 +#define PIDX_RAND_PARAM_MAX_REQUEST 322 +#define PIDX_RAND_PARAM_STATE 323 +#define PIDX_RAND_PARAM_STRENGTH 324 +#define PIDX_RAND_PARAM_TEST_ENTROPY 325 +#define PIDX_RAND_PARAM_TEST_NONCE 326 +#define PIDX_SIGNATURE_PARAM_ADD_RANDOM 327 +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID PIDX_PKEY_PARAM_ALGORITHM_ID +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_SIGNATURE_PARAM_CONTEXT_STRING 328 +#define PIDX_SIGNATURE_PARAM_DETERMINISTIC 329 +#define PIDX_SIGNATURE_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_SIGNATURE_PARAM_DIGEST_SIZE PIDX_PKEY_PARAM_DIGEST_SIZE +#define PIDX_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_SIGNATURE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_CHECK PIDX_PKEY_PARAM_FIPS_SIGN_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK 330 +#define PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE 331 +#define PIDX_SIGNATURE_PARAM_INSTANCE 332 +#define PIDX_SIGNATURE_PARAM_KAT 333 +#define PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING 334 +#define PIDX_SIGNATURE_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_SIGNATURE_PARAM_MGF1_PROPERTIES PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_SIGNATURE_PARAM_MU 335 +#define PIDX_SIGNATURE_PARAM_NONCE_TYPE 336 +#define PIDX_SIGNATURE_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_SIGNATURE_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_SIGNATURE_PARAM_PSS_SALTLEN 271 +#define PIDX_SIGNATURE_PARAM_SIGNATURE 337 +#define PIDX_SIGNATURE_PARAM_TEST_ENTROPY 338 +#define PIDX_SKEY_PARAM_KEY_LENGTH 339 +#define PIDX_SKEY_PARAM_RAW_BYTES 340 +#define PIDX_STORE_PARAM_ALIAS 341 +#define PIDX_STORE_PARAM_DIGEST 3 +#define PIDX_STORE_PARAM_EXPECT 342 +#define PIDX_STORE_PARAM_FINGERPRINT 343 +#define PIDX_STORE_PARAM_INPUT_TYPE 174 +#define PIDX_STORE_PARAM_ISSUER 296 +#define PIDX_STORE_PARAM_PROPERTIES 7 +#define PIDX_STORE_PARAM_SERIAL 344 +#define PIDX_STORE_PARAM_SUBJECT 345 diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/asn1.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/asn1.h index 21ff58e3d803d4..15e9e44674b0f3 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/asn1.h +++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/asn1.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/asn1.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -21,6 +21,9 @@ # define HEADER_ASN1_H # endif +# ifndef OPENSSL_NO_STDIO +# include +# endif # include # include # include @@ -50,14 +53,14 @@ extern "C" { # define V_ASN1_PRIMITIVE_TAG 0x1f # define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG -# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ -# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ -# define V_ASN1_ANY -4/* used in ASN1 template code */ +# define V_ASN1_APP_CHOOSE -2 /* let the recipient choose */ +# define V_ASN1_OTHER -3 /* used in ASN1_TYPE */ +# define V_ASN1_ANY -4 /* used in ASN1 template code */ # define V_ASN1_UNDEF -1 /* ASN.1 tag values */ # define V_ASN1_EOC 0 -# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_BOOLEAN 1 # define V_ASN1_INTEGER 2 # define V_ASN1_BIT_STRING 3 # define V_ASN1_OCTET_STRING 4 @@ -70,19 +73,19 @@ extern "C" { # define V_ASN1_UTF8STRING 12 # define V_ASN1_SEQUENCE 16 # define V_ASN1_SET 17 -# define V_ASN1_NUMERICSTRING 18 /**/ +# define V_ASN1_NUMERICSTRING 18 # define V_ASN1_PRINTABLESTRING 19 # define V_ASN1_T61STRING 20 -# define V_ASN1_TELETEXSTRING 20/* alias */ -# define V_ASN1_VIDEOTEXSTRING 21 /**/ +# define V_ASN1_TELETEXSTRING 20 /* alias */ +# define V_ASN1_VIDEOTEXSTRING 21 # define V_ASN1_IA5STRING 22 # define V_ASN1_UTCTIME 23 -# define V_ASN1_GENERALIZEDTIME 24 /**/ -# define V_ASN1_GRAPHICSTRING 25 /**/ -# define V_ASN1_ISO64STRING 26 /**/ -# define V_ASN1_VISIBLESTRING 26/* alias */ -# define V_ASN1_GENERALSTRING 27 /**/ -# define V_ASN1_UNIVERSALSTRING 28 /**/ +# define V_ASN1_GENERALIZEDTIME 24 +# define V_ASN1_GRAPHICSTRING 25 +# define V_ASN1_ISO64STRING 26 +# define V_ASN1_VISIBLESTRING 26 /* alias */ +# define V_ASN1_GENERALSTRING 27 +# define V_ASN1_UNIVERSALSTRING 28 # define V_ASN1_BMPSTRING 30 /* @@ -155,7 +158,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) -# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +# define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */ /* * This indicates that the ASN1_STRING is not a real value but just a place * holder for the location where indefinite length constructed data should be @@ -275,7 +278,7 @@ typedef struct ASN1_TLC_st ASN1_TLC; /* This is just an opaque pointer */ typedef struct ASN1_VALUE_st ASN1_VALUE; -/* Declare ASN1 functions: the implement macro in in asn1t.h */ +/* Declare ASN1 functions: the implement macro is in asn1t.h */ /* * The mysterious 'extern' that's passed to some macros is innocuous, @@ -368,6 +371,7 @@ typedef struct ASN1_VALUE_st ASN1_VALUE; typedef void *d2i_of_void(void **, const unsigned char **, long); typedef int i2d_of_void(const void *, unsigned char **); +typedef int OSSL_i2d_of_void_ctx(const void *, unsigned char **, void *vctx); /*- * The following macros and typedefs allow an ASN1_ITEM @@ -996,6 +1000,8 @@ int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, unsigned char *data, int max_len); void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/bio.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/bio.h index f9aa74731c833c..e02f867beb0ec0 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/bio.h +++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/bio.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/bio.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -67,8 +67,13 @@ extern "C" { # define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) # endif # define BIO_TYPE_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_PAIR (26|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_MEM (27|BIO_TYPE_SOURCE_SINK) +/* Custom type starting index returned by BIO_get_new_index() */ #define BIO_TYPE_START 128 +/* Custom type maximum index that can be returned by BIO_get_new_index() */ +#define BIO_TYPE_MASK 0xFF /* * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. @@ -171,6 +176,31 @@ extern "C" { # define BIO_CTRL_SET_INDENT 80 # define BIO_CTRL_GET_INDENT 81 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +# define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +# define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +# define BIO_CTRL_DGRAM_GET_CAPS 86 +# define BIO_CTRL_DGRAM_SET_CAPS 87 +# define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +# define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +# define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +# define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +# define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 +# define BIO_CTRL_DGRAM_SET0_LOCAL_ADDR 94 + +# define BIO_DGRAM_CAP_NONE 0U +# define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +# define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +# define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +# define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + # ifndef OPENSSL_NO_KTLS # define BIO_get_ktls_send(b) \ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) @@ -208,7 +238,7 @@ extern "C" { # define BIO_FLAGS_NONCLEAR_RST 0x400 # define BIO_FLAGS_IN_EOF 0x800 -/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */ +/* the BIO FLAGS values 0x1000 to 0x8000 are reserved for internal KTLS flags */ typedef union bio_addr_st BIO_ADDR; typedef struct bio_addrinfo_st BIO_ADDRINFO; @@ -256,12 +286,14 @@ void BIO_clear_flags(BIO *b, int flags); # define BIO_RR_ACCEPT 0x03 /* These are passed by the BIO callback */ -# define BIO_CB_FREE 0x01 -# define BIO_CB_READ 0x02 -# define BIO_CB_WRITE 0x03 -# define BIO_CB_PUTS 0x04 -# define BIO_CB_GETS 0x05 -# define BIO_CB_CTRL 0x06 +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 +# define BIO_CB_RECVMMSG 0x07 +# define BIO_CB_SENDMMSG 0x08 /* * The callback is called before and after the underling operation, The @@ -362,6 +394,36 @@ struct bio_dgram_sctp_prinfo { }; # endif +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_TYPE_SSL 2 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + SSL *ssl; + } value; +} BIO_POLL_DESCRIPTOR; + /* * #define BIO_CONN_get_param_hostname BIO_ctrl */ @@ -428,10 +490,17 @@ struct bio_dgram_sctp_prinfo { # define BIO_C_SET_CONNECT_MODE 155 +# define BIO_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +# define BIO_C_SET_SOCK_TYPE 157 +# define BIO_C_GET_SOCK_TYPE 158 +# define BIO_C_GET_DGRAM_BIO 159 + # define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) # define BIO_get_app_data(s) BIO_get_ex_data(s,0) -# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_tfo(b,n) BIO_ctrl(b,BIO_C_SET_TFO,(n),NULL) # ifndef OPENSSL_NO_SOCK /* IP families we support, for BIO_s_connect() and BIO_s_accept() */ @@ -452,7 +521,11 @@ struct bio_dgram_sctp_prinfo { # define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) # define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) # define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_get_conn_mode(b) BIO_ctrl(b,BIO_C_GET_CONNECT,4,NULL) # define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) +# define BIO_set_sock_type(b,t) BIO_ctrl(b,BIO_C_SET_SOCK_TYPE,(t),NULL) +# define BIO_get_sock_type(b) BIO_ctrl(b,BIO_C_GET_SOCK_TYPE,0,NULL) +# define BIO_get0_dgram_bio(b, p) BIO_ctrl(b,BIO_C_GET_DGRAM_BIO,0,(void *)(BIO **)(p)) /* BIO_s_accept() */ # define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ @@ -469,6 +542,7 @@ struct bio_dgram_sctp_prinfo { (char *)(bio)) # define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) # define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) +# define BIO_set_tfo_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,5,(n)?(void *)"a":NULL) /* Aliases kept for backward compatibility */ # define BIO_BIND_NORMAL 0 @@ -596,8 +670,32 @@ int BIO_ctrl_reset_read_request(BIO *b); (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) # define BIO_dgram_set_peer(b,peer) \ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_detect_peer_addr(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) # define BIO_dgram_get_mtu_overhead(b) \ (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +# define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +# define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +# define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +# define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +# define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +# define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +# define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +# define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +# define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +# define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) +# define BIO_dgram_set0_local_addr(b, addr) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET0_LOCAL_ADDR, 0, (addr)) /* ctrl macros for BIO_f_prefix */ # define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) @@ -640,10 +738,18 @@ void BIO_vfree(BIO *a); int BIO_up_ref(BIO *a); int BIO_read(BIO *b, void *data, int dlen); int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); int BIO_gets(BIO *bp, char *buf, int size); int BIO_get_line(BIO *bio, char *buf, int size); int BIO_write(BIO *b, const void *data, int dlen); int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); int BIO_puts(BIO *bp, const char *buf); int BIO_indent(BIO *b, int indent, int max); long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); @@ -667,6 +773,9 @@ int BIO_nwrite0(BIO *bio, char **buf); int BIO_nwrite(BIO *bio, char **buf, int num); const BIO_METHOD *BIO_s_mem(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +# endif const BIO_METHOD *BIO_s_secmem(void); BIO *BIO_new_mem_buf(const void *buf, int len); # ifndef OPENSSL_NO_SOCK @@ -686,6 +795,7 @@ const BIO_METHOD *BIO_f_nbio_test(void); const BIO_METHOD *BIO_f_prefix(void); const BIO_METHOD *BIO_s_core(void); # ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_pair(void); const BIO_METHOD *BIO_s_datagram(void); int BIO_dgram_non_fatal_error(int error); BIO *BIO_new_dgram(int fd, int close_flag); @@ -704,6 +814,7 @@ int BIO_dgram_sctp_msg_waiting(BIO *b); # ifndef OPENSSL_NO_SOCK int BIO_sock_should_retry(int i); int BIO_sock_non_fatal_error(int error); +int BIO_err_is_non_fatal(unsigned int errcode); int BIO_socket_wait(int fd, int for_read, time_t max_time); # endif int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); @@ -726,6 +837,8 @@ int BIO_hex_string(BIO *out, int indent, int width, const void *data, # ifndef OPENSSL_NO_SOCK BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, const void *where, size_t wherelen, unsigned short port); void BIO_ADDR_free(BIO_ADDR *); @@ -788,6 +901,7 @@ int BIO_sock_info(int sock, # define BIO_SOCK_KEEPALIVE 0x04 # define BIO_SOCK_NONBLOCK 0x08 # define BIO_SOCK_NODELAY 0x10 +# define BIO_SOCK_TFO 0x20 int BIO_socket(int domain, int socktype, int protocol, int options); int BIO_connect(int sock, const BIO_ADDR *addr, int options); @@ -805,6 +919,11 @@ BIO *BIO_new_fd(int fd, int close_flag); int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, BIO **bio2, size_t writebuf2); +# ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +# endif + /* * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default @@ -849,38 +968,54 @@ ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); BIO_METHOD *BIO_meth_new(int type, const char *name); void BIO_meth_free(BIO_METHOD *biom); -int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int); -int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t, - size_t *); int BIO_meth_set_write(BIO_METHOD *biom, int (*write) (BIO *, const char *, int)); int BIO_meth_set_write_ex(BIO_METHOD *biom, int (*bwrite) (BIO *, const char *, size_t, size_t *)); -int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); -int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); +int BIO_meth_set_sendmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_read(BIO_METHOD *biom, int (*read) (BIO *, char *, int)); int BIO_meth_set_read_ex(BIO_METHOD *biom, int (*bread) (BIO *, char *, size_t, size_t *)); -int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +int BIO_meth_set_recvmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_puts(BIO_METHOD *biom, int (*puts) (BIO *, const char *)); -int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); int BIO_meth_set_gets(BIO_METHOD *biom, int (*ossl_gets) (BIO *, char *, int)); -long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); int BIO_meth_set_ctrl(BIO_METHOD *biom, long (*ctrl) (BIO *, int, long, void *)); -int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); -int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); -long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) - (BIO *, int, BIO_info_cb *); int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, long (*callback_ctrl) (BIO *, int, BIO_info_cb *)); - +# ifndef OPENSSL_NO_DEPRECATED_3_5 +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, + int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, + long, void *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) (BIO *, int, + BIO_info_cb *); +# endif # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/cmp.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/cmp.h index 49825570d8c303..05aed3029d594c 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -35,7 +35,9 @@ extern "C" { # endif -# define OSSL_CMP_PVNO 2 +# define OSSL_CMP_PVNO_2 2 +# define OSSL_CMP_PVNO_3 3 +# define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ /*- * PKIFailureInfo ::= BIT STRING { @@ -137,7 +139,6 @@ extern "C" { # if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX # error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int # endif - typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) @@ -203,8 +204,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_PKISTATUS_revocationWarning 4 # define OSSL_CMP_PKISTATUS_revocationNotification 5 # define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 - typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; + DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) # define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 @@ -274,6 +275,46 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) #define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) #define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) + +typedef struct ossl_cmp_crlstatus_st OSSL_CMP_CRLSTATUS; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS) +#define sk_OSSL_CMP_CRLSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_value(sk, idx) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CRLSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CRLSTATUS_new_null() ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CRLSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CRLSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CRLSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_delete(sk, i) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CRLSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_pop(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_shift(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CRLSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CRLSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CRLSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CRLSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CRLSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) + + +typedef OSSL_CRMF_ATTRIBUTETYPEANDVALUE OSSL_CMP_ATAV; +# define OSSL_CMP_ATAV_free OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free +typedef STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) OSSL_CMP_ATAVS; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_ATAVS) +# define stack_st_OSSL_CMP_ATAV stack_st_OSSL_CRMF_ATTRIBUTETYPEANDVALUE +# define sk_OSSL_CMP_ATAV_num sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num +# define sk_OSSL_CMP_ATAV_value sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value +# define sk_OSSL_CMP_ATAV_push sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push +# define sk_OSSL_CMP_ATAV_pop_free sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free + typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT; typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI; DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI) @@ -375,21 +416,75 @@ void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type, ASN1_TYPE *value); ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav); ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); -int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p, +int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **sk_p, OSSL_CMP_ITAV *itav); void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new0_certProfile(STACK_OF(ASN1_UTF8STRING) + *certProfile); +int OSSL_CMP_ITAV_get0_certProfile(const OSSL_CMP_ITAV *itav, + STACK_OF(ASN1_UTF8STRING) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_create(const X509_CRL *crl, + const X509 *cert, int only_DN); +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_new1(const DIST_POINT_NAME *dpn, + const GENERAL_NAMES *issuer, + const ASN1_TIME *thisUpdate); +int OSSL_CMP_CRLSTATUS_get0(const OSSL_CMP_CRLSTATUS *crlstatus, + DIST_POINT_NAME **dpn, GENERAL_NAMES **issuer, + ASN1_TIME **thisUpdate); +void OSSL_CMP_CRLSTATUS_free(OSSL_CMP_CRLSTATUS *crlstatus); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_crlStatusList(STACK_OF(OSSL_CMP_CRLSTATUS) *crlStatusList); +int OSSL_CMP_ITAV_get0_crlStatusList(const OSSL_CMP_ITAV *itav, + STACK_OF(OSSL_CMP_CRLSTATUS) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_crls(const X509_CRL *crls); +int OSSL_CMP_ITAV_get0_crls(const OSSL_CMP_ITAV *it, STACK_OF(X509_CRL) **out); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_certReqTemplate(OSSL_CRMF_CERTTEMPLATE *certTemplate, + OSSL_CMP_ATAVS *keySpec); +int OSSL_CMP_ITAV_get1_certReqTemplate(const OSSL_CMP_ITAV *itav, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +OSSL_CMP_ATAV *OSSL_CMP_ATAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ATAV_set0(OSSL_CMP_ATAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ATAV_get0_type(const OSSL_CMP_ATAV *itav); +ASN1_TYPE *OSSL_CMP_ATAV_get0_value(const OSSL_CMP_ATAV *itav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_algId(const X509_ALGOR *alg); +X509_ALGOR *OSSL_CMP_ATAV_get0_algId(const OSSL_CMP_ATAV *atav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_rsaKeyLen(int len); +int OSSL_CMP_ATAV_get_rsaKeyLen(const OSSL_CMP_ATAV *atav); +int OSSL_CMP_ATAV_push1(OSSL_CMP_ATAVS **sk_p, const OSSL_CMP_ATAV *atav); + void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); /* from cmp_ctx.c */ OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const OSSL_CMP_CTX *ctx); /* CMP general options: */ # define OSSL_CMP_OPT_LOG_VERBOSITY 0 /* CMP transfer options: */ -# define OSSL_CMP_OPT_KEEP_ALIVE 10 -# define OSSL_CMP_OPT_MSG_TIMEOUT 11 +# define OSSL_CMP_OPT_KEEP_ALIVE 10 +# define OSSL_CMP_OPT_MSG_TIMEOUT 11 # define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 +# define OSSL_CMP_OPT_USE_TLS 13 /* CMP request options: */ # define OSSL_CMP_OPT_VALIDITY_DAYS 20 # define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 @@ -407,6 +502,7 @@ int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); # define OSSL_CMP_OPT_DIGEST_ALGNID 34 # define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35 # define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36 +# define OSSL_CMP_OPT_NO_CACHE_EXTRACERTS 37 int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val); int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt); /* CMP-specific callback for logging and outputting the error queue: */ @@ -420,9 +516,11 @@ int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); +# ifndef OPENSSL_NO_HTTP int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); +# endif typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); @@ -432,7 +530,9 @@ void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); +# define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +# define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); /* client authentication: */ @@ -448,12 +548,15 @@ int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx, int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); int OSSL_CMP_CTX_reset_geninfo_ITAVs(OSSL_CMP_CTX *ctx); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_CTX_get0_geninfo_ITAVs(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, STACK_OF(X509) *extraCertsOut); /* certificate template: */ int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set1_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, const GENERAL_NAME *name); @@ -477,6 +580,7 @@ int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); # define OSSL_CMP_PKISI_BUFLEN 1024 +X509 *OSSL_CMP_CTX_get0_validatedSrvCert(const OSSL_CMP_CTX *ctx); X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); @@ -498,10 +602,13 @@ OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const OSSL_CMP_PKIHEADER *hdr); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_HDR_get0_geninfo_ITAVs(const OSSL_CMP_PKIHEADER *hdr); /* from cmp_msg.c */ OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg); +X509_PUBKEY *OSSL_CMP_MSG_get0_certreq_publickey(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_recipNonce(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid); @@ -517,8 +624,10 @@ int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, X509_STORE *trusted_store, X509 *cert); /* from cmp_http.c */ +# ifndef OPENSSL_NO_HTTP OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); +# endif /* from cmp_server.c */ typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; @@ -561,6 +670,13 @@ int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx, OSSL_CMP_SRV_error_cb_t process_error, OSSL_CMP_SRV_certConf_cb_t process_certConf, OSSL_CMP_SRV_pollReq_cb_t process_pollReq); +typedef int (*OSSL_CMP_SRV_delayed_delivery_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +typedef int (*OSSL_CMP_SRV_clean_transaction_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_SRV_CTX_init_trans(OSSL_CMP_SRV_CTX *srv_ctx, + OSSL_CMP_SRV_delayed_delivery_cb_t delay, + OSSL_CMP_SRV_clean_transaction_cb_t clean); OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx, @@ -577,6 +693,8 @@ X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type, # define OSSL_CMP_CR 2 # define OSSL_CMP_P10CR 4 # define OSSL_CMP_KUR 7 +# define OSSL_CMP_GENM 21 +# define OSSL_CMP_ERROR 23 # define OSSL_CMP_exec_IR_ses(ctx) \ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL) # define OSSL_CMP_exec_CR_ses(ctx) \ @@ -590,6 +708,18 @@ int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); +int OSSL_CMP_get1_crlUpdate(OSSL_CMP_CTX *ctx, const X509 *crlcert, + const X509_CRL *last_crl, + X509_CRL **crl); +int OSSL_CMP_get1_certReqTemplate(OSSL_CMP_CTX *ctx, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/cms.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/cms.h index 3b453e6a2187a2..63afab563557b0 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/cms.h +++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/cms.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cms.h.in * - * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2008-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -31,8 +31,10 @@ extern "C" { # endif +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; typedef struct CMS_ContentInfo_st CMS_ContentInfo; typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; typedef struct CMS_CertificateChoices CMS_CertificateChoices; typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; @@ -147,10 +149,14 @@ SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, #define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) +DECLARE_ASN1_DUP_FUNCTION(CMS_EnvelopedData) + CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq); # define CMS_SIGNERINFO_ISSUER_SERIAL 0 @@ -190,6 +196,7 @@ CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq) # define CMS_ASCIICRLF 0x80000 # define CMS_CADES 0x100000 # define CMS_USE_ORIGINATOR_KEYID 0x200000 +# define CMS_NO_SIGNING_TIME 0x400000 const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms); @@ -217,13 +224,16 @@ int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, unsigned int flags); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, BIO *dcont, + unsigned int flags); CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, unsigned int flags); CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, @@ -233,27 +243,26 @@ CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, unsigned int flags); CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, const unsigned char *key, size_t keylen, BIO *dcont, BIO *out, unsigned int flags); - CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags); CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, @@ -272,7 +281,7 @@ CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags); CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, BIO *dcont, BIO *out, unsigned int flags); @@ -291,12 +300,16 @@ int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo * -CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx, +CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags); @@ -385,6 +398,11 @@ ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); int CMS_SignerInfo_sign(CMS_SignerInfo *si); int CMS_SignerInfo_verify(CMS_SignerInfo *si); int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, @@ -441,7 +459,7 @@ CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( unsigned char *id, int idlen, int allorfirst, STACK_OF(GENERAL_NAMES) *receiptList, STACK_OF(GENERAL_NAMES) *receiptsTo, - OSSL_LIB_CTX *ctx); + OSSL_LIB_CTX *libctx); int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/comp.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/comp.h new file mode 100644 index 00000000000000..90e39511fe8d28 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/comp.h @@ -0,0 +1,98 @@ +/* + * Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_COMP_H +# define OPENSSL_COMP_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_COMP_H +# endif + +# include + +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + + +# ifndef OPENSSL_NO_COMP + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX* comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); + +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); + +COMP_METHOD *COMP_zlib(void); +COMP_METHOD *COMP_zlib_oneshot(void); +COMP_METHOD *COMP_brotli(void); +COMP_METHOD *COMP_brotli_oneshot(void); +COMP_METHOD *COMP_zstd(void); +COMP_METHOD *COMP_zstd_oneshot(void); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define COMP_zlib_cleanup() while(0) continue +# endif + +# ifdef OPENSSL_BIO_H +const BIO_METHOD *BIO_f_zlib(void); +const BIO_METHOD *BIO_f_brotli(void); +const BIO_METHOD *BIO_f_zstd(void); +# endif + +# endif + +typedef struct ssl_comp_st SSL_COMP; + +SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) +#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) +#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) +#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) +#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) +#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) +#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) +#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) +#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) +#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) +#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) +#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) + + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/conf.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/conf.h index 44989929f6c84a..38576290bf641b 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/conf.h +++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/conf.h @@ -27,6 +27,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -65,7 +68,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) #define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) #define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); -#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp))) +#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp)), lh_CONF_VALUE_hash_thunk, lh_CONF_VALUE_comp_thunk, lh_CONF_VALUE_doall_thunk, lh_CONF_VALUE_doall_arg_thunk)) #define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/configuration.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/configuration.h index 5ef293f853fae2..e81c58e297e557 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/configuration.h +++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/configuration.h @@ -27,7 +27,7 @@ extern "C" { * OpenSSL was configured with the following options: */ -# define OPENSSL_CONFIGURED_API 30000 +# define OPENSSL_CONFIGURED_API 30500 # ifndef OPENSSL_RAND_SEED_OS # define OPENSSL_RAND_SEED_OS # endif @@ -40,6 +40,12 @@ extern "C" { # ifndef OPENSSL_NO_ASAN # define OPENSSL_NO_ASAN # endif +# ifndef OPENSSL_NO_BROTLI +# define OPENSSL_NO_BROTLI +# endif +# ifndef OPENSSL_NO_BROTLI_DYNAMIC +# define OPENSSL_NO_BROTLI_DYNAMIC +# endif # ifndef OPENSSL_NO_COMP # define OPENSSL_NO_COMP # endif @@ -49,6 +55,9 @@ extern "C" { # ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # endif +# ifndef OPENSSL_NO_DEMOS +# define OPENSSL_NO_DEMOS +# endif # ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 # define OPENSSL_NO_EC_NISTP_64_GCC_128 # endif @@ -58,12 +67,24 @@ extern "C" { # ifndef OPENSSL_NO_EXTERNAL_TESTS # define OPENSSL_NO_EXTERNAL_TESTS # endif +# ifndef OPENSSL_NO_FIPS_JITTER +# define OPENSSL_NO_FIPS_JITTER +# endif # ifndef OPENSSL_NO_FUZZ_AFL # define OPENSSL_NO_FUZZ_AFL # endif # ifndef OPENSSL_NO_FUZZ_LIBFUZZER # define OPENSSL_NO_FUZZ_LIBFUZZER # endif +# ifndef OPENSSL_NO_H3DEMO +# define OPENSSL_NO_H3DEMO +# endif +# ifndef OPENSSL_NO_HQINTEROP +# define OPENSSL_NO_HQINTEROP +# endif +# ifndef OPENSSL_NO_JITTER +# define OPENSSL_NO_JITTER +# endif # ifndef OPENSSL_NO_KTLS # define OPENSSL_NO_KTLS # endif @@ -76,6 +97,9 @@ extern "C" { # ifndef OPENSSL_NO_MSAN # define OPENSSL_NO_MSAN # endif +# ifndef OPENSSL_NO_PIE +# define OPENSSL_NO_PIE +# endif # ifndef OPENSSL_NO_RC5 # define OPENSSL_NO_RC5 # endif @@ -88,6 +112,12 @@ extern "C" { # ifndef OPENSSL_NO_SSL3_METHOD # define OPENSSL_NO_SSL3_METHOD # endif +# ifndef OPENSSL_NO_SSLKEYLOG +# define OPENSSL_NO_SSLKEYLOG +# endif +# ifndef OPENSSL_NO_TFO +# define OPENSSL_NO_TFO +# endif # ifndef OPENSSL_NO_TRACE # define OPENSSL_NO_TRACE # endif @@ -103,6 +133,21 @@ extern "C" { # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS # define OPENSSL_NO_WEAK_SSL_CIPHERS # endif +# ifndef OPENSSL_NO_WINSTORE +# define OPENSSL_NO_WINSTORE +# endif +# ifndef OPENSSL_NO_ZLIB +# define OPENSSL_NO_ZLIB +# endif +# ifndef OPENSSL_NO_ZLIB_DYNAMIC +# define OPENSSL_NO_ZLIB_DYNAMIC +# endif +# ifndef OPENSSL_NO_ZSTD +# define OPENSSL_NO_ZSTD +# endif +# ifndef OPENSSL_NO_ZSTD_DYNAMIC +# define OPENSSL_NO_ZSTD_DYNAMIC +# endif # ifndef OPENSSL_NO_DYNAMIC_ENGINE # define OPENSSL_NO_DYNAMIC_ENGINE # endif @@ -124,6 +169,12 @@ extern "C" { # define RC4_INT unsigned int +# if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +# define OPENSSL_NO_COMP_ALG +# else +# undef OPENSSL_NO_COMP_ALG +# endif + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/core_names.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/core_names.h new file mode 100644 index 00000000000000..e93e79a52bc910 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/core_names.h @@ -0,0 +1,575 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/core_names.h.in + * + * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#ifndef OPENSSL_CORE_NAMES_H +# define OPENSSL_CORE_NAMES_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +/* OSSL_CIPHER_PARAM_CTS_MODE Values */ +# define OSSL_CIPHER_CTS_MODE_CS1 "CS1" +# define OSSL_CIPHER_CTS_MODE_CS2 "CS2" +# define OSSL_CIPHER_CTS_MODE_CS3 "CS3" + +/* Known CIPHER names (not a complete list) */ +# define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" + +/* Known DIGEST names (not a complete list) */ +# define OSSL_DIGEST_NAME_MD5 "MD5" +# define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" +# define OSSL_DIGEST_NAME_SHA1 "SHA1" +# define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" +# define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" +# define OSSL_DIGEST_NAME_SHA2_256_192 "SHA2-256/192" +# define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" +# define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" +# define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" +# define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" +# define OSSL_DIGEST_NAME_MD2 "MD2" +# define OSSL_DIGEST_NAME_MD4 "MD4" +# define OSSL_DIGEST_NAME_MDC2 "MDC2" +# define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" +# define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" +# define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" +# define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" +# define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" +# define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" +# define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" +# define OSSL_DIGEST_NAME_SM3 "SM3" + +/* Known MAC names */ +# define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" +# define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" +# define OSSL_MAC_NAME_CMAC "CMAC" +# define OSSL_MAC_NAME_GMAC "GMAC" +# define OSSL_MAC_NAME_HMAC "HMAC" +# define OSSL_MAC_NAME_KMAC128 "KMAC128" +# define OSSL_MAC_NAME_KMAC256 "KMAC256" +# define OSSL_MAC_NAME_POLY1305 "POLY1305" +# define OSSL_MAC_NAME_SIPHASH "SIPHASH" + +/* Known KDF names */ +# define OSSL_KDF_NAME_HKDF "HKDF" +# define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" +# define OSSL_KDF_NAME_PBKDF1 "PBKDF1" +# define OSSL_KDF_NAME_PBKDF2 "PBKDF2" +# define OSSL_KDF_NAME_SCRYPT "SCRYPT" +# define OSSL_KDF_NAME_SSHKDF "SSHKDF" +# define OSSL_KDF_NAME_SSKDF "SSKDF" +# define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" +# define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" +# define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" +# define OSSL_KDF_NAME_X963KDF "X963KDF" +# define OSSL_KDF_NAME_KBKDF "KBKDF" +# define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" +# define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" + +/* RSA padding modes */ +# define OSSL_PKEY_RSA_PAD_MODE_NONE "none" +# define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" +# define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" +# define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" +# define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" + +/* RSA pss padding salt length */ +# define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" + +/* OSSL_PKEY_PARAM_EC_ENCODING values */ +# define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" +# define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" + +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" + +# define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" + +/* PROV_SKEY well known key types */ +# define OSSL_SKEY_TYPE_GENERIC "GENERIC-SECRET" +# define OSSL_SKEY_TYPE_AES "AES" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" + +/* Provider configuration variables */ +#define OSSL_PKEY_RETAIN_SEED "pkey_retain_seed" + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +# define OSSL_ALG_PARAM_ALGORITHM_ID "algorithm-id" +# define OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS "algorithm-id-params" +# define OSSL_ALG_PARAM_CIPHER "cipher" +# define OSSL_ALG_PARAM_DIGEST "digest" +# define OSSL_ALG_PARAM_ENGINE "engine" +# define OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR "fips-indicator" +# define OSSL_ALG_PARAM_MAC "mac" +# define OSSL_ALG_PARAM_PROPERTIES "properties" +# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +# define OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props" +# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" +# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name" +# define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal" +# define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name" +# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid" +# define OSSL_CIPHER_PARAM_AEAD "aead" +# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +# define OSSL_CIPHER_PARAM_AEAD_IV_GENERATED "iv-generated" +# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" +# define OSSL_CIPHER_PARAM_AEAD_TAG "tag" +# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" +# define OSSL_CIPHER_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD "alg_id_param" +# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_CIPHER_PARAM_CTS "cts" +# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" +# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" +# define OSSL_CIPHER_PARAM_DECRYPT_ONLY "decrypt-only" +# define OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK "encrypt-check" +# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" +# define OSSL_CIPHER_PARAM_IV "iv" +# define OSSL_CIPHER_PARAM_IVLEN "ivlen" +# define OSSL_CIPHER_PARAM_KEYLEN "keylen" +# define OSSL_CIPHER_PARAM_MODE "mode" +# define OSSL_CIPHER_PARAM_NUM "num" +# define OSSL_CIPHER_PARAM_PADDING "padding" +# define OSSL_CIPHER_PARAM_PIPELINE_AEAD_TAG "pipeline-tag" +# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" +# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" +# define OSSL_CIPHER_PARAM_ROUNDS "rounds" +# define OSSL_CIPHER_PARAM_SPEED "speed" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag" +# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" +# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" +# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" +# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" +# define OSSL_CIPHER_PARAM_USE_BITS "use-bits" +# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard" +# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" +# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_DIGEST_PARAM_MICALG "micalg" +# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" +# define OSSL_DIGEST_PARAM_SIZE "size" +# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" +# define OSSL_DIGEST_PARAM_XOF "xof" +# define OSSL_DIGEST_PARAM_XOFLEN "xoflen" +# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +# define OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +# define OSSL_DRBG_PARAM_SIZE "size" +# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" +# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" +# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" +# define OSSL_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_EXCHANGE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" +# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" +# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" +# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" +# define OSSL_EXCHANGE_PARAM_PAD "pad" +# define OSSL_GEN_PARAM_ITERATION "iteration" +# define OSSL_GEN_PARAM_POTENTIAL "potential" +# define OSSL_KDF_PARAM_ARGON2_AD "ad" +# define OSSL_KDF_PARAM_ARGON2_LANES "lanes" +# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost" +# define OSSL_KDF_PARAM_ARGON2_VERSION "version" +# define OSSL_KDF_PARAM_CEK_ALG "cekalg" +# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_KDF_PARAM_CONSTANT "constant" +# define OSSL_KDF_PARAM_DATA "data" +# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean" +# define OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KDF_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_KDF_PARAM_FIPS_EMS_CHECK "ems_check" +# define OSSL_KDF_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy" +# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce" +# define OSSL_KDF_PARAM_INFO "info" +# define OSSL_KDF_PARAM_ITER "iter" +# define OSSL_KDF_PARAM_KBKDF_R "r" +# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" +# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" +# define OSSL_KDF_PARAM_KEY "key" +# define OSSL_KDF_PARAM_LABEL "label" +# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_KDF_PARAM_MAC_SIZE "maclen" +# define OSSL_KDF_PARAM_MODE "mode" +# define OSSL_KDF_PARAM_PASSWORD "pass" +# define OSSL_KDF_PARAM_PKCS12_ID "id" +# define OSSL_KDF_PARAM_PKCS5 "pkcs5" +# define OSSL_KDF_PARAM_PREFIX "prefix" +# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_KDF_PARAM_SALT "salt" +# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" +# define OSSL_KDF_PARAM_SCRYPT_N "n" +# define OSSL_KDF_PARAM_SCRYPT_P "p" +# define OSSL_KDF_PARAM_SCRYPT_R "r" +# define OSSL_KDF_PARAM_SECRET "secret" +# define OSSL_KDF_PARAM_SEED "seed" +# define OSSL_KDF_PARAM_SIZE "size" +# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" +# define OSSL_KDF_PARAM_SSHKDF_TYPE "type" +# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" +# define OSSL_KDF_PARAM_THREADS "threads" +# define OSSL_KDF_PARAM_UKM "ukm" +# define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info" +# define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info" +# define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info" +# define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo" +# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_KEM_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KEM_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KEM_PARAM_IKME "ikme" +# define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING "hs_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm" +# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len" +# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" +# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_MAC_PARAM_CUSTOM "custom" +# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" +# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" +# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" +# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" +# define OSSL_MAC_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_MAC_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_MAC_PARAM_FIPS_NO_SHORT_MAC OSSL_PROV_PARAM_NO_SHORT_MAC +# define OSSL_MAC_PARAM_IV "iv" +# define OSSL_MAC_PARAM_KEY "key" +# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_MAC_PARAM_SALT "salt" +# define OSSL_MAC_PARAM_SIZE "size" +# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" +# define OSSL_MAC_PARAM_XOF "xof" +# define OSSL_OBJECT_PARAM_DATA "data" +# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" +# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" +# define OSSL_OBJECT_PARAM_DESC "desc" +# define OSSL_OBJECT_PARAM_INPUT_TYPE "input-type" +# define OSSL_OBJECT_PARAM_REFERENCE "reference" +# define OSSL_OBJECT_PARAM_TYPE "type" +# define OSSL_PASSPHRASE_PARAM_INFO "info" +# define OSSL_PKEY_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_PKEY_PARAM_BITS "bits" +# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" +# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm" +# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" +# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +# define OSSL_PKEY_PARAM_DIST_ID "distid" +# define OSSL_PKEY_PARAM_EC_A "a" +# define OSSL_PKEY_PARAM_EC_B "b" +# define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3" +# define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp" +# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" +# define OSSL_PKEY_PARAM_EC_ENCODING "encoding" +# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +# define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_PARAM_EC_ORDER "order" +# define OSSL_PKEY_PARAM_EC_P "p" +# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +# define OSSL_PKEY_PARAM_EC_PUB_X "qx" +# define OSSL_PKEY_PARAM_EC_PUB_Y "qy" +# define OSSL_PKEY_PARAM_EC_SEED "seed" +# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE +# define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +# define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_FFC_G "g" +# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +# define OSSL_PKEY_PARAM_FFC_H "hindex" +# define OSSL_PKEY_PARAM_FFC_P "p" +# define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +# define OSSL_PKEY_PARAM_FFC_Q "q" +# define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +# define OSSL_PKEY_PARAM_FFC_SEED "seed" +# define OSSL_PKEY_PARAM_FFC_TYPE "type" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +# define OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK "digest-check" +# define OSSL_PKEY_PARAM_FIPS_KEY_CHECK "key-check" +# define OSSL_PKEY_PARAM_FIPS_SIGN_CHECK "sign-check" +# define OSSL_PKEY_PARAM_GROUP_NAME "group" +# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" +# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +# define OSSL_PKEY_PARAM_MAX_SIZE "max-size" +# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +# define OSSL_PKEY_PARAM_ML_DSA_INPUT_FORMATS "ml-dsa.input_formats" +# define OSSL_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS "ml-dsa.output_formats" +# define OSSL_PKEY_PARAM_ML_DSA_PREFER_SEED "ml-dsa.prefer_seed" +# define OSSL_PKEY_PARAM_ML_DSA_RETAIN_SEED "ml-dsa.retain_seed" +# define OSSL_PKEY_PARAM_ML_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE "ml-kem.import_pct_type" +# define OSSL_PKEY_PARAM_ML_KEM_INPUT_FORMATS "ml-kem.input_formats" +# define OSSL_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS "ml-kem.output_formats" +# define OSSL_PKEY_PARAM_ML_KEM_PREFER_SEED "ml-kem.prefer_seed" +# define OSSL_PKEY_PARAM_ML_KEM_RETAIN_SEED "ml-kem.retain_seed" +# define OSSL_PKEY_PARAM_ML_KEM_SEED "seed" +# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +# define OSSL_PKEY_PARAM_PRIV_KEY "priv" +# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_PUB_KEY "pub" +# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9" +# define OSSL_PKEY_PARAM_RSA_D "d" +# define OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ "rsa-derive-from-pq" +# define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_RSA_E "e" +# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1" +# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10" +# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2" +# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3" +# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4" +# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5" +# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6" +# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7" +# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8" +# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9" +# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1" +# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10" +# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2" +# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3" +# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4" +# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5" +# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6" +# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7" +# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8" +# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9" +# define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC +# define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_PKEY_PARAM_RSA_N "n" +# define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" +# define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1" +# define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2" +# define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1" +# define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2" +# define OSSL_PKEY_PARAM_RSA_TEST_XP "xp" +# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" +# define OSSL_PKEY_PARAM_SLH_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG +# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +# define OSSL_PROV_PARAM_BUILDINFO "buildinfo" +# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" +# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" +# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" +# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" +# define OSSL_PROV_PARAM_DSA_SIGN_DISABLED "dsa-sign-disabled" +# define OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK "ecdh-cofactor-check" +# define OSSL_PROV_PARAM_HKDF_DIGEST_CHECK "hkdf-digest-check" +# define OSSL_PROV_PARAM_HKDF_KEY_CHECK "hkdf-key-check" +# define OSSL_PROV_PARAM_HMAC_KEY_CHECK "hmac-key-check" +# define OSSL_PROV_PARAM_KBKDF_KEY_CHECK "kbkdf-key-check" +# define OSSL_PROV_PARAM_KMAC_KEY_CHECK "kmac-key-check" +# define OSSL_PROV_PARAM_NAME "name" +# define OSSL_PROV_PARAM_NO_SHORT_MAC "no-short-mac" +# define OSSL_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK "pbkdf2-lower-bound-check" +# define OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED "rsa-pkcs15-pad-disabled" +# define OSSL_PROV_PARAM_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED "rsa-sign-x931-pad-disabled" +# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" +# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" +# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" +# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" +# define OSSL_PROV_PARAM_SIGNATURE_DIGEST_CHECK "signature-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_DIGEST_CHECK "sshkdf-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_KEY_CHECK "sshkdf-key-check" +# define OSSL_PROV_PARAM_SSKDF_DIGEST_CHECK "sskdf-digest-check" +# define OSSL_PROV_PARAM_SSKDF_KEY_CHECK "sskdf-key-check" +# define OSSL_PROV_PARAM_STATUS "status" +# define OSSL_PROV_PARAM_TDES_ENCRYPT_DISABLED "tdes-encrypt-disabled" +# define OSSL_PROV_PARAM_TLS13_KDF_DIGEST_CHECK "tls13-kdf-digest-check" +# define OSSL_PROV_PARAM_TLS13_KDF_KEY_CHECK "tls13-kdf-key-check" +# define OSSL_PROV_PARAM_TLS1_PRF_DIGEST_CHECK "tls1-prf-digest-check" +# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" +# define OSSL_PROV_PARAM_TLS1_PRF_KEY_CHECK "tls1-prf-key-check" +# define OSSL_PROV_PARAM_VERSION "version" +# define OSSL_PROV_PARAM_X942KDF_KEY_CHECK "x942kdf-key-check" +# define OSSL_PROV_PARAM_X963KDF_DIGEST_CHECK "x963kdf-digest-check" +# define OSSL_PROV_PARAM_X963KDF_KEY_CHECK "x963kdf-key-check" +# define OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_RAND_PARAM_GENERATE "generate" +# define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +# define OSSL_RAND_PARAM_STATE "state" +# define OSSL_RAND_PARAM_STRENGTH "strength" +# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" +# define OSSL_SIGNATURE_PARAM_ADD_RANDOM "additional-random" +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID OSSL_PKEY_PARAM_ALGORITHM_ID +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string" +# define OSSL_SIGNATURE_PARAM_DETERMINISTIC "deterministic" +# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE +# define OSSL_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_SIGNATURE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_CHECK OSSL_PKEY_PARAM_FIPS_SIGN_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK "sign-x931-pad-check" +# define OSSL_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE "verify-message" +# define OSSL_SIGNATURE_PARAM_INSTANCE "instance" +# define OSSL_SIGNATURE_PARAM_KAT "kat" +# define OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING "message-encoding" +# define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_SIGNATURE_PARAM_MU "mu" +# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type" +# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +# define OSSL_SIGNATURE_PARAM_SIGNATURE "signature" +# define OSSL_SIGNATURE_PARAM_TEST_ENTROPY "test-entropy" +# define OSSL_SKEY_PARAM_KEY_LENGTH "key-length" +# define OSSL_SKEY_PARAM_RAW_BYTES "raw-bytes" +# define OSSL_STORE_PARAM_ALIAS "alias" +# define OSSL_STORE_PARAM_DIGEST "digest" +# define OSSL_STORE_PARAM_EXPECT "expect" +# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" +# define OSSL_STORE_PARAM_INPUT_TYPE "input-type" +# define OSSL_STORE_PARAM_ISSUER "name" +# define OSSL_STORE_PARAM_PROPERTIES "properties" +# define OSSL_STORE_PARAM_SERIAL "serial" +# define OSSL_STORE_PARAM_SUBJECT "subject" + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/crmf.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/crmf.h index 71b747ed33d239..4bf550fd47daa9 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/crmf.h +++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/crmf.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/crmf.h.in * - * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -26,6 +26,7 @@ # include # include # include /* for GENERAL_NAME etc. */ +# include /* explicit #includes not strictly needed since implied by the above: */ # include @@ -43,9 +44,12 @@ extern "C" { # define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 # define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 - typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) + +typedef struct ossl_crmf_encryptedkey_st OSSL_CRMF_ENCRYPTEDKEY; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDKEY) + typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) @@ -77,6 +81,36 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) #define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; +void OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(OSSL_CRMF_ATTRIBUTETYPEANDVALUE *v); +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value(sk, idx) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new(cmp) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_null() ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (n)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete(sk, i) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (i))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete_ptr(sk, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_shift(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk),ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), (idx)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set(sk, idx, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), pnum) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup(sk) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) + + typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER) typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY; @@ -118,6 +152,7 @@ typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO) typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTTEMPLATE) typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS) @@ -198,12 +233,14 @@ int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, int rid, int acceptRAVerified, OSSL_LIB_CTX *libctx, const char *propq); OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); -const ASN1_INTEGER -*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const ASN1_INTEGER +*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); X509_EXTENSIONS *OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME @@ -215,10 +252,24 @@ int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl, const X509_NAME *subject, const X509_NAME *issuer, const ASN1_INTEGER *serial); -X509 -*OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, - OSSL_LIB_CTX *libctx, const char *propq, - EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDKEY_get1_encCert(const OSSL_CRMF_ENCRYPTEDKEY *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, unsigned int flags); +unsigned char +*OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *enc, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, int *outlen); +EVP_PKEY *OSSL_CRMF_ENCRYPTEDKEY_get1_pkey(const OSSL_CRMF_ENCRYPTEDKEY *encryptedKey, + X509_STORE *ts, STACK_OF(X509) *extra, EVP_PKEY *pkey, + X509 *cert, ASN1_OCTET_STRING *secret, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSG_centralkeygen_requested(const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr); +# ifndef OPENSSL_NO_CMS +OSSL_CRMF_ENCRYPTEDKEY *OSSL_CRMF_ENCRYPTEDKEY_init_envdata(CMS_EnvelopedData *envdata); +# endif # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/crypto.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/crypto.h index 3f40be6d8c61d5..fd2cfd3e5a9ac4 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/crypto.h +++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/crypto.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/crypto.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -85,9 +85,15 @@ int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock); void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock); int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_add64(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_and(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, CRYPTO_RWLOCK *lock); int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, CRYPTO_RWLOCK *lock); /* No longer needed, so this is a no-op */ #define OPENSSL_malloc_init() while(0) continue @@ -96,6 +102,9 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_zalloc(num) \ CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_aligned_alloc(num, alignment, freeptr) \ + CRYPTO_aligned_alloc(num, alignment, freeptr, \ + OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_realloc(addr, num) \ CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_clear_realloc(addr, old_num, num) \ @@ -124,6 +133,7 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); size_t OPENSSL_strnlen(const char *str, size_t maxlen); +int OPENSSL_strtoul(const char *str, char **endptr, int base, unsigned long *num); int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength, const unsigned char *buf, size_t buflen, const char sep); @@ -160,6 +170,7 @@ const char *OpenSSL_version(int type); # define OPENSSL_FULL_VERSION_STRING 7 # define OPENSSL_MODULES_DIR 8 # define OPENSSL_CPU_INFO 9 +# define OPENSSL_WINCTX 10 const char *OPENSSL_info(int type); /* @@ -174,6 +185,7 @@ const char *OPENSSL_info(int type); # define OPENSSL_INFO_LIST_SEPARATOR 1006 # define OPENSSL_INFO_SEED_SOURCE 1007 # define OPENSSL_INFO_CPU_SETTINGS 1008 +# define OPENSSL_INFO_WINDOWS_CONTEXT 1009 int OPENSSL_issetugid(void); @@ -341,11 +353,14 @@ void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn, CRYPTO_realloc_fn *realloc_fn, CRYPTO_free_fn *free_fn); -void *CRYPTO_malloc(size_t num, const char *file, int line); -void *CRYPTO_zalloc(size_t num, const char *file, int line); -void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); -char *CRYPTO_strdup(const char *str, const char *file, int line); -char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc(size_t num, size_t align, + void **freeptr, const char *file, + int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strdup(const char *str, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); void CRYPTO_free(void *ptr, const char *file, int line); void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line); void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); @@ -354,8 +369,8 @@ void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, int CRYPTO_secure_malloc_init(size_t sz, size_t minsize); int CRYPTO_secure_malloc_done(void); -void *CRYPTO_secure_malloc(size_t num, const char *file, int line); -void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); void CRYPTO_secure_free(void *ptr, const char *file, int line); void CRYPTO_secure_clear_free(void *ptr, size_t num, const char *file, int line); @@ -376,6 +391,9 @@ void OPENSSL_cleanse(void *ptr, size_t len); # define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */ # define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */ +/* max allowed length for value of OPENSSL_MALLOC_FAILURES env var. */ +# define CRYPTO_MEM_CHECK_MAX_FS 256 + void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); # ifndef OPENSSL_NO_DEPRECATED_3_0 # define OPENSSL_mem_debug_push(info) \ @@ -551,6 +569,13 @@ int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file); void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); +int OSSL_LIB_CTX_get_conf_diagnostics(OSSL_LIB_CTX *ctx); +void OSSL_LIB_CTX_set_conf_diagnostics(OSSL_LIB_CTX *ctx, int value); + +void OSSL_sleep(uint64_t millis); + + +void *OSSL_LIB_CTX_get_data(OSSL_LIB_CTX *ctx, int index); # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/ct.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/ct.h index b6dd8c3547710a..e6dd1192a4e0b3 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/ct.h +++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/ct.h @@ -133,7 +133,7 @@ typedef enum { */ CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); - + /* * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library * context and property query string is used. diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/err.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/err.h index 2abf2483488181..daca18e7b757b0 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/err.h +++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/err.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -372,7 +372,7 @@ typedef struct ERR_string_data_st { } ERR_STRING_DATA; DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); -#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp))) +#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp)), lh_ERR_STRING_DATA_hash_thunk, lh_ERR_STRING_DATA_comp_thunk, lh_ERR_STRING_DATA_doall_thunk, lh_ERR_STRING_DATA_doall_arg_thunk)) #define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) @@ -496,6 +496,14 @@ int ERR_get_next_error_library(void); int ERR_set_mark(void); int ERR_pop_to_mark(void); int ERR_clear_last_mark(void); +int ERR_count_to_mark(void); +int ERR_pop(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); #ifdef __cplusplus } diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/fipskey.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/fipskey.h index 42ba014b313ba8..929db18c678364 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/fipskey.h +++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/fipskey.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/fipskey.h.in * - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -29,6 +29,11 @@ extern "C" { */ #define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" +/* + * The FIPS provider vendor name, as a string. + */ +#define FIPS_VENDOR "OpenSSL FIPS Provider" + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/lhash.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/lhash.h index 39dd6254acdeb6..62c55b20fd9716 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/lhash.h +++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/lhash.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -24,6 +24,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -31,9 +34,13 @@ extern "C" { typedef struct lhash_node_st OPENSSL_LH_NODE; typedef int (*OPENSSL_LH_COMPFUNC) (const void *, const void *); +typedef int (*OPENSSL_LH_COMPFUNCTHUNK) (const void *, const void *, OPENSSL_LH_COMPFUNC cfn); typedef unsigned long (*OPENSSL_LH_HASHFUNC) (const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNCTHUNK) (const void *, OPENSSL_LH_HASHFUNC hfn); typedef void (*OPENSSL_LH_DOALL_FUNC) (void *); +typedef void (*OPENSSL_LH_DOALL_FUNC_THUNK) (void *, OPENSSL_LH_DOALL_FUNC doall); typedef void (*OPENSSL_LH_DOALL_FUNCARG) (void *, void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG_THUNK) (void *, void *, OPENSSL_LH_DOALL_FUNCARG doall); typedef struct lhash_st OPENSSL_LHASH; /* @@ -79,26 +86,40 @@ typedef struct lhash_st OPENSSL_LHASH; int OPENSSL_LH_error(OPENSSL_LHASH *lh); OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +OPENSSL_LHASH *OPENSSL_LH_set_thunks(OPENSSL_LHASH *lh, + OPENSSL_LH_HASHFUNCTHUNK hw, + OPENSSL_LH_COMPFUNCTHUNK cw, + OPENSSL_LH_DOALL_FUNC_THUNK daw, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw); void OPENSSL_LH_free(OPENSSL_LHASH *lh); void OPENSSL_LH_flush(OPENSSL_LHASH *lh); void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); -void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg_thunk(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw, + OPENSSL_LH_DOALL_FUNCARG fn, void *arg); + unsigned long OPENSSL_LH_strhash(const char *c); unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); # ifndef OPENSSL_NO_STDIO -void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# endif +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # endif -void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define _LHASH OPENSSL_LHASH @@ -129,110 +150,190 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); /* Helper macro for internal use */ # define DEFINE_LHASH_OF_INTERNAL(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ typedef void (*lh_##type##_doallfunc)(type *a); \ - static ossl_unused ossl_inline type *ossl_check_##type##_lh_plain_type(type *ptr) \ + static ossl_inline unsigned long lh_##type##_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static ossl_inline int lh_##type##_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_inline void lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_inline void lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline type *\ + ossl_check_##type##_lh_plain_type(type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const type *ossl_check_const_##type##_lh_plain_type(const type *ptr) \ + static ossl_unused ossl_inline const type * \ + ossl_check_const_##type##_lh_plain_type(const type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const OPENSSL_LHASH *ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline const OPENSSL_LHASH * \ + ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ { \ return (const OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LHASH *ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline OPENSSL_LHASH * \ + ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ { \ return (OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ + static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC \ + ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ { \ return (OPENSSL_LH_COMPFUNC)cmp; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ + static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC \ + ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ { \ return (OPENSSL_LH_HASHFUNC)hfn; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ + static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC \ + ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ { \ return (OPENSSL_LH_DOALL_FUNC)dfn; \ } \ LHASH_OF(type) -# define DEFINE_LHASH_OF(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ - static ossl_unused ossl_inline LHASH_OF(type) *lh_##type##_new(unsigned long (*hfn)(const type *), \ - int (*cfn)(const type *, const type *)) \ +# ifndef OPENSSL_NO_DEPRECATED_3_1 +# define DEFINE_LHASH_OF_DEPRECATED(type) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ - return (LHASH_OF(type) *) \ - OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ - static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } +# else +# define DEFINE_LHASH_OF_DEPRECATED(type) +# endif + +# define DEFINE_LHASH_OF_EX(type) \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ + static unsigned long \ + lh_##type##_hfn_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static int lh_##type##_cfn_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_free(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_flush(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_flush(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ { \ return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline int \ + lh_##type##_error(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_num_items(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_get_down_load(LHASH_OF(type) *lh) \ { \ - OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ { \ - OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ } \ - static ossl_unused ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ { \ - OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ { \ - return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ } \ - static ossl_unused ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall(LHASH_OF(type) *lh, void (*doall)(type *)) \ { \ - OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ - void (*doall)(type *)) \ + static ossl_unused ossl_inline LHASH_OF(type) * \ + lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ { \ - OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \ + lh_##type##_hfn_thunk, lh_##type##_cfn_thunk, \ + lh_##type##_doall_thunk, \ + lh_##type##_doall_arg_thunk); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall_arg(LHASH_OF(type) *lh, \ - void (*doallarg)(type *, void *), \ - void *arg) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg(LHASH_OF(type) *lh, \ + void (*doallarg)(type *, void *), void *arg) \ { \ OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ } \ LHASH_OF(type) +# define DEFINE_LHASH_OF(type) \ + DEFINE_LHASH_OF_EX(type); \ + DEFINE_LHASH_OF_DEPRECATED(type) \ + LHASH_OF(type) + #define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ int_implement_lhash_doall(type, argtype, const type) @@ -240,17 +341,26 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); int_implement_lhash_doall(type, argtype, type) #define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype##_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG fn) \ + { \ + void (*fn_conv)(cbargtype *, argtype *) = (void (*)(cbargtype *, argtype *))fn; \ + fn_conv((cbargtype *)node, (argtype *)arg); \ + } \ static ossl_unused ossl_inline void \ lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ void (*fn)(cbargtype *, argtype *), \ argtype *arg) \ { \ - OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNCARG)fn, (void *)arg); \ + OPENSSL_LH_doall_arg_thunk((OPENSSL_LHASH *)lh, \ + lh_##type##_doall_##argtype##_thunk, \ + (OPENSSL_LH_DOALL_FUNCARG)fn, \ + (void *)arg); \ } \ LHASH_OF(type) DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); -#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp)), lh_OPENSSL_STRING_hash_thunk, lh_OPENSSL_STRING_comp_thunk, lh_OPENSSL_STRING_doall_thunk, lh_OPENSSL_STRING_doall_arg_thunk)) #define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) @@ -265,7 +375,7 @@ DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); #define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) #define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); -#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp)), lh_OPENSSL_CSTRING_hash_thunk, lh_OPENSSL_CSTRING_comp_thunk, lh_OPENSSL_CSTRING_doall_thunk, lh_OPENSSL_CSTRING_doall_arg_thunk)) #define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/opensslv.h index 5fb5bc63056fe0..71a357701fd5e3 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/opensslv.h @@ -28,8 +28,8 @@ extern "C" { * These macros express version number MAJOR.MINOR.PATCH exactly */ # define OPENSSL_VERSION_MAJOR 3 -# define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 17 +# define OPENSSL_VERSION_MINOR 5 +# define OPENSSL_VERSION_PATCH 2 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.17" -# define OPENSSL_FULL_VERSION_STR "3.0.17" +# define OPENSSL_VERSION_STR "3.5.2" +# define OPENSSL_FULL_VERSION_STR "3.5.2" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "1 Jul 2025" +# define OPENSSL_RELEASE_DATE "5 Aug 2025" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.17 1 Jul 2025" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.2 5 Aug 2025" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/pkcs12.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/pkcs12.h index c5e0cab06491ec..0809645dad0bbf 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/pkcs12.h +++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/pkcs12.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/pkcs12.h.in * - * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -41,6 +44,7 @@ extern "C" { # define PKCS12_MAC_KEY_LENGTH 20 +/* The macro is expected to be used only internally. Kept for backwards compatibility. */ # define PKCS12_SALT_LEN 8 /* It's not clear if these are actually needed... */ @@ -130,7 +134,9 @@ int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); const STACK_OF(PKCS12_SAFEBAG) * PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); @@ -218,6 +224,7 @@ ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); const STACK_OF(X509_ATTRIBUTE) * PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, const char *pass, int passlen, const unsigned char *in, int inlen, @@ -285,6 +292,9 @@ int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, unsigned char *salt, int saltlen, int iter, const EVP_MD *md_type); +int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type, const char *prf_md_name); int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, int saltlen, const EVP_MD *md_type); unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, @@ -305,6 +315,7 @@ DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) void PKCS12_PBE_add(void); int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype); @@ -312,6 +323,11 @@ PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype, OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/pkcs7.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/pkcs7.h index 0ce79bf4fa160e..fa68462aff973b 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/pkcs7.h +++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/pkcs7.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/pkcs7.h.in * - * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -28,6 +28,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -131,8 +134,8 @@ SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INF typedef struct pkcs7_signed_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; struct pkcs7_st *contents; } PKCS7_SIGNED; @@ -158,8 +161,8 @@ typedef struct pkcs7_enveloped_st { typedef struct pkcs7_signedandenveloped_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; PKCS7_ENC_CONTENT *enc_data; STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; @@ -200,7 +203,7 @@ typedef struct pkcs7_st { /* NID_pkcs7_data */ ASN1_OCTET_STRING *data; /* NID_pkcs7_signed */ - PKCS7_SIGNED *sign; + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ /* NID_pkcs7_enveloped */ PKCS7_ENVELOPE *enveloped; /* NID_pkcs7_signedAndEnveloped */ @@ -341,13 +344,13 @@ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, const EVP_MD *dgst); int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); -int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); -int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); int PKCS7_content_new(PKCS7 *p7, int nid); int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, - X509 *x509); + X509 *signer); BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/ssl.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/ssl.h index 3df725c56d6c5e..7e3d89c7ef3dc9 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/ssl.h +++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/ssl.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/ssl.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -24,6 +24,7 @@ # endif # include +# include # include # include # include @@ -42,6 +43,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -231,10 +235,8 @@ typedef struct ssl_cipher_st SSL_CIPHER; typedef struct ssl_session_st SSL_SESSION; typedef struct tls_sigalgs_st TLS_SIGALGS; typedef struct ssl_conf_ctx_st SSL_CONF_CTX; -typedef struct ssl_comp_st SSL_COMP; STACK_OF(SSL_CIPHER); -STACK_OF(SSL_COMP); /* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ typedef struct srtp_protection_profile_st { @@ -278,28 +280,31 @@ typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, /* Extension context codes */ /* This extension is only allowed in TLS */ -#define SSL_EXT_TLS_ONLY 0x0001 +#define SSL_EXT_TLS_ONLY 0x00001 /* This extension is only allowed in DTLS */ -#define SSL_EXT_DTLS_ONLY 0x0002 +#define SSL_EXT_DTLS_ONLY 0x00002 /* Some extensions may be allowed in DTLS but we don't implement them for it */ -#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 /* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ -#define SSL_EXT_SSL3_ALLOWED 0x0008 +#define SSL_EXT_SSL3_ALLOWED 0x00008 /* Extension is only defined for TLS1.2 and below */ -#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 /* Extension is only defined for TLS1.3 and above */ -#define SSL_EXT_TLS1_3_ONLY 0x0020 +#define SSL_EXT_TLS1_3_ONLY 0x00020 /* Ignore this extension during parsing if we are resuming */ -#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 -#define SSL_EXT_CLIENT_HELLO 0x0080 +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 /* Really means TLS1.2 or below */ -#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 -#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 -#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 -#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 -#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 -#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 -#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 /* Typedefs for handling custom extensions */ @@ -404,7 +409,7 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); */ # define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_BIT(22) /* - * If set, a server will allow a client to issue a SSLv3.0 version + * If set, a server will allow a client to issue an SSLv3.0 version * number as latest version supported in the premaster secret, even when * TLSv1.0 (version 3.1) was announced in the client hello. Normally * this is forbidden to prevent version rollback attacks. @@ -430,6 +435,19 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); * interoperability with CryptoPro CSP 3.x */ # define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +# define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +# define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) + /* Enable KTLS TX zerocopy on Linux */ +# define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) + +#define SSL_OP_PREFER_NO_DHE_KEX SSL_OP_BIT(35) /* * Option "collections." @@ -574,6 +592,8 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); # define CERT_PKEY_CERT_TYPE 0x400 /* Cert chain suitable to Suite B */ # define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +# define CERT_PKEY_RPK 0x1000 # define SSL_CONF_FLAG_CMDLINE 0x1 # define SSL_CONF_FLAG_FILE 0x2 @@ -965,6 +985,7 @@ uint32_t SSL_get_recv_max_early_data(const SSL *s); # include /* This is mostly sslv3 with a few tweaks */ # include /* Datagram TLS */ # include /* Support for the use_srtp extension */ +# include #ifdef __cplusplus extern "C" { @@ -1000,32 +1021,6 @@ SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) #define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) #define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) #define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) -SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) -#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) -#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) -#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) -#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) -#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) -#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) -#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) -#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) -#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) -#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) -#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) /* compatibility */ @@ -1066,6 +1061,7 @@ typedef enum { DTLS_ST_CR_HELLO_VERIFY_REQUEST, TLS_ST_CR_SRVR_HELLO, TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, TLS_ST_CR_CERT_STATUS, TLS_ST_CR_KEY_EXCH, TLS_ST_CR_CERT_REQ, @@ -1075,6 +1071,7 @@ typedef enum { TLS_ST_CR_FINISHED, TLS_ST_CW_CLNT_HELLO, TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, TLS_ST_CW_KEY_EXCH, TLS_ST_CW_CERT_VRFY, TLS_ST_CW_CHANGE, @@ -1085,10 +1082,12 @@ typedef enum { DTLS_ST_SW_HELLO_VERIFY_REQUEST, TLS_ST_SW_SRVR_HELLO, TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, TLS_ST_SW_KEY_EXCH, TLS_ST_SW_CERT_REQ, TLS_ST_SW_SRVR_DONE, TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, TLS_ST_SR_KEY_EXCH, TLS_ST_SR_CERT_VRFY, TLS_ST_SR_NEXT_PROTO, @@ -1380,9 +1379,13 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_CTRL_GET_SIGNATURE_NID 132 # define SSL_CTRL_GET_TMP_KEY 133 # define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +# define SSL_CTRL_GET_IANA_GROUPS 135 # define SSL_CTRL_SET_RETRY_VERIFY 136 # define SSL_CTRL_GET_VERIFY_CERT_STORE 137 # define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +# define SSL_CTRL_GET0_IMPLEMENTED_GROUPS 139 +# define SSL_CTRL_GET_SIGNATURE_NAME 140 +# define SSL_CTRL_GET_PEER_SIGNATURE_NAME 141 # define SSL_CERT_SET_FIRST 1 # define SSL_CERT_SET_NEXT 2 # define SSL_CERT_SET_SERVER 3 @@ -1485,10 +1488,15 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get1_groups(s, glist) \ SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_IANA_GROUPS,0,(uint16_t **)(plst)) # define SSL_CTX_set1_groups(ctx, glist, glistlen) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) # define SSL_CTX_set1_groups_list(ctx, s) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s)) +# define SSL_CTX_get0_implemented_groups(ctx, all, out) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET0_IMPLEMENTED_GROUPS, all, \ + (STACK_OF(OPENSSL_CSTRING) *)(out)) # define SSL_set1_groups(s, glist, glistlen) \ SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist)) # define SSL_set1_groups_list(s, str) \ @@ -1520,8 +1528,12 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) (char *)(clist)) # define SSL_set1_client_certificate_types(s, clist, clistlen) \ SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist)) +# define SSL_get0_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn) +# define SSL_get0_peer_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_peer_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) # define SSL_get_peer_tmp_key(s, pk) \ @@ -1549,6 +1561,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get_max_proto_version(s) \ SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +const char *SSL_get0_group_name(SSL *s); const char *SSL_group_to_name(SSL *s, int id); /* Backwards compatibility, original 1.1.0 names */ @@ -1613,7 +1626,11 @@ void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); __owur int SSL_want(const SSL *s); __owur int SSL_clear(SSL *s); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()") void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); +#endif +void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm); __owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); __owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); @@ -1725,13 +1742,21 @@ __owur const char *SSL_state_string(const SSL *s); __owur const char *SSL_rstate_string(const SSL *s); __owur const char *SSL_state_string_long(const SSL *s); __owur const char *SSL_rstate_string_long(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_get_time_ex()") __owur long SSL_SESSION_get_time(const SSL_SESSION *s); +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_set_time_ex()") __owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +#endif __owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); __owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); __owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); __owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); +__owur time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s); +__owur time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t); + __owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); __owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, @@ -1783,6 +1808,9 @@ __owur int SSL_has_matching_session_id(const SSL *s, unsigned int id_len); SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); # ifdef OPENSSL_X509_H __owur X509 *SSL_get0_peer_certificate(const SSL *s); @@ -1840,6 +1868,8 @@ __owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, SSL *SSL_new(SSL_CTX *ctx); int SSL_up_ref(SSL *s); int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); __owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, unsigned int sid_ctx_len); @@ -1848,8 +1878,8 @@ __owur int SSL_set_purpose(SSL *ssl, int purpose); __owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); __owur int SSL_set_trust(SSL *ssl, int trust); -__owur int SSL_set1_host(SSL *s, const char *hostname); -__owur int SSL_add1_host(SSL *s, const char *hostname); +__owur int SSL_set1_host(SSL *s, const char *host); +__owur int SSL_add1_host(SSL *s, const char *host); __owur const char *SSL_get0_peername(SSL *s); void SSL_set_hostflags(SSL *s, unsigned int flags); @@ -1924,6 +1954,11 @@ OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg); void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, void *arg); +typedef int (*SSL_new_pending_conn_cb_fn) (SSL_CTX *ctx, SSL *new_ssl, + void *arg); +void SSL_CTX_set_new_pending_conn_cb(SSL_CTX *c, SSL_new_pending_conn_cb_fn cb, + void *arg); + int SSL_client_hello_isv2(SSL *s); unsigned int SSL_client_hello_get0_legacy_version(SSL *s); size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); @@ -1932,6 +1967,8 @@ size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); size_t SSL_client_hello_get0_compression_methods(SSL *s, const unsigned char **out); int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); int SSL_client_hello_get0_ext(SSL *s, unsigned int type, const unsigned char **out, size_t *outlen); @@ -1978,6 +2015,12 @@ long SSL_callback_ctrl(SSL *, int, void (*)(void)); long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); +# define SSL_WRITE_FLAG_CONCLUDE (1U << 0) + +__owur int SSL_write_ex2(SSL *s, const void *buf, size_t num, + uint64_t flags, + size_t *written); + # define SSL_EARLY_DATA_NOT_SENT 0 # define SSL_EARLY_DATA_REJECTED 1 # define SSL_EARLY_DATA_ACCEPTED 2 @@ -1986,6 +2029,7 @@ __owur int SSL_get_early_data_status(const SSL *s); __owur int SSL_get_error(const SSL *s, int ret_code); __owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); /* This sets the 'default' SSL version that SSL_new() will create */ # ifndef OPENSSL_NO_DEPRECATED_3_0 @@ -2281,6 +2325,8 @@ void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); +int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size, + size_t hs_block_size); int SSL_set_record_padding_callback(SSL *ssl, size_t (*cb) (SSL *ssl, int type, @@ -2288,12 +2334,255 @@ int SSL_set_record_padding_callback(SSL *ssl, void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); void *SSL_get_record_padding_callback_arg(const SSL *ssl); int SSL_set_block_padding(SSL *ssl, size_t block_size); - +int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size, + size_t hs_block_size); int SSL_set_num_tickets(SSL *s, size_t num_tickets); size_t SSL_get_num_tickets(const SSL *s); int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +__owur int SSL_is_listener(SSL *ssl); +__owur SSL *SSL_get0_listener(SSL *s); +#define SSL_LISTENER_FLAG_NO_VALIDATE (1UL << 1) +__owur SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags); +__owur SSL *SSL_new_listener_from(SSL *ssl, uint64_t flags); +__owur SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags); +#define SSL_ACCEPT_CONNECTION_NO_BLOCK (1UL << 0) +__owur SSL *SSL_accept_connection(SSL *ssl, uint64_t flags); +__owur size_t SSL_get_accept_connection_queue_len(SSL *ssl); +__owur int SSL_listen(SSL *ssl); + +__owur int SSL_is_domain(SSL *s); +__owur SSL *SSL_get0_domain(SSL *s); +__owur SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags); + +#define SSL_DOMAIN_FLAG_SINGLE_THREAD (1U << 0) +#define SSL_DOMAIN_FLAG_MULTI_THREAD (1U << 1) +#define SSL_DOMAIN_FLAG_THREAD_ASSISTED (1U << 2) +#define SSL_DOMAIN_FLAG_BLOCKING (1U << 3) +#define SSL_DOMAIN_FLAG_LEGACY_BLOCKING (1U << 4) + +__owur int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t domain_flags); +__owur int SSL_CTX_get_domain_flags(const SSL_CTX *ctx, uint64_t *domain_flags); +__owur int SSL_get_domain_flags(const SSL *ssl, uint64_t *domain_flags); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +# ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +# endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + +# define SSL_VALUE_CLASS_GENERIC 0 +# define SSL_VALUE_CLASS_FEATURE_REQUEST 1 +# define SSL_VALUE_CLASS_FEATURE_PEER_REQUEST 2 +# define SSL_VALUE_CLASS_FEATURE_NEGOTIATED 3 + +# define SSL_VALUE_NONE 0 +# define SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL 1 +# define SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL 2 +# define SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL 3 +# define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL 4 +# define SSL_VALUE_QUIC_IDLE_TIMEOUT 5 +# define SSL_VALUE_EVENT_HANDLING_MODE 6 +# define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7 +# define SSL_VALUE_STREAM_WRITE_BUF_USED 8 +# define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9 + +# define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0 +# define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1 +# define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT 2 + +int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v); +int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v); + +# define SSL_get_generic_value_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_set_generic_value_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_get_feature_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_set_feature_request_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_get_feature_peer_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, (id), (v)) +# define SSL_get_feature_negotiated_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_NEGOTIATED, (id), (v)) + +# define SSL_get_quic_stream_bidi_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_bidi_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, \ + (value)) + +# define SSL_get_event_handling_mode(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) +# define SSL_set_event_handling_mode(ssl, value) \ + SSL_set_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) + +# define SSL_get_stream_write_buf_size(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_SIZE, \ + (value)) +# define SSL_get_stream_write_buf_used(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_USED, \ + (value)) +# define SSL_get_stream_write_buf_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_AVAIL, \ + (value)) + +# define SSL_POLL_EVENT_NONE 0 + +# define SSL_POLL_EVENT_F (1U << 0) /* F (Failure) */ +# define SSL_POLL_EVENT_EL (1U << 1) /* EL (Exception on Listener) */ +# define SSL_POLL_EVENT_EC (1U << 2) /* EC (Exception on Conn) */ +# define SSL_POLL_EVENT_ECD (1U << 3) /* ECD (Exception on Conn Drained) */ +# define SSL_POLL_EVENT_ER (1U << 4) /* ER (Exception on Read) */ +# define SSL_POLL_EVENT_EW (1U << 5) /* EW (Exception on Write) */ +# define SSL_POLL_EVENT_R (1U << 6) /* R (Readable) */ +# define SSL_POLL_EVENT_W (1U << 7) /* W (Writable) */ +# define SSL_POLL_EVENT_IC (1U << 8) /* IC (Incoming Connection) */ +# define SSL_POLL_EVENT_ISB (1U << 9) /* ISB (Incoming Stream: Bidi) */ +# define SSL_POLL_EVENT_ISU (1U << 10) /* ISU (Incoming Stream: Uni) */ +# define SSL_POLL_EVENT_OSB (1U << 11) /* OSB (Outgoing Stream: Bidi) */ +# define SSL_POLL_EVENT_OSU (1U << 12) /* OSU (Outgoing Stream: Uni) */ + +# define SSL_POLL_EVENT_RW (SSL_POLL_EVENT_R | SSL_POLL_EVENT_W) +# define SSL_POLL_EVENT_RE (SSL_POLL_EVENT_R | SSL_POLL_EVENT_ER) +# define SSL_POLL_EVENT_WE (SSL_POLL_EVENT_W | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_RWE (SSL_POLL_EVENT_RE | SSL_POLL_EVENT_WE) +# define SSL_POLL_EVENT_E (SSL_POLL_EVENT_EL | SSL_POLL_EVENT_EC \ + | SSL_POLL_EVENT_ER | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_IS (SSL_POLL_EVENT_ISB | SSL_POLL_EVENT_ISU) +# define SSL_POLL_EVENT_ISE (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_EC) +# define SSL_POLL_EVENT_I (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_IC) +# define SSL_POLL_EVENT_OS (SSL_POLL_EVENT_OSB | SSL_POLL_EVENT_OSU) +# define SSL_POLL_EVENT_OSE (SSL_POLL_EVENT_OS | SSL_POLL_EVENT_EC) + +typedef struct ssl_poll_item_st { + BIO_POLL_DESCRIPTOR desc; + uint64_t events, revents; +} SSL_POLL_ITEM; + +# define SSL_POLL_FLAG_NO_HANDLE_EVENTS (1U << 0) + +__owur int SSL_poll(SSL_POLL_ITEM *items, + size_t num_items, + size_t stride, + const struct timeval *timeout, + uint64_t flags, + size_t *result_count); + +static ossl_inline ossl_unused BIO_POLL_DESCRIPTOR +SSL_as_poll_descriptor(SSL *s) +{ + BIO_POLL_DESCRIPTOR d; + + d.type = BIO_POLL_DESCRIPTOR_TYPE_SSL; + d.value.ssl = s; + return d; +} + # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define SSL_cache_hit(s) SSL_session_reused(s) # endif @@ -2593,6 +2882,51 @@ void SSL_set_allow_early_data_cb(SSL *s, const char *OSSL_default_cipher_list(void); const char *OSSL_default_ciphersuites(void); +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + +/* + * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used. + */ +# define OSSL_RECORD_PROTECTION_LEVEL_NONE 0 +# define OSSL_RECORD_PROTECTION_LEVEL_EARLY 1 +# define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE 2 +# define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3 + +int SSL_set_quic_tls_cbs(SSL *s, const OSSL_DISPATCH *qtdis, void *arg); +int SSL_set_quic_tls_transport_params(SSL *s, + const unsigned char *params, + size_t params_len); + +int SSL_set_quic_tls_early_data_enabled(SSL *s, int enabled); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/x509.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/x509.h index 1f7755e5b69c75..d013458c226461 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/x509.h +++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/x509.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -40,6 +40,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -162,16 +165,24 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) # define X509_FILETYPE_ASN1 2 # define X509_FILETYPE_DEFAULT 3 -# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 -# define X509v3_KU_NON_REPUDIATION 0x0040 -# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 -# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 -# define X509v3_KU_KEY_AGREEMENT 0x0008 -# define X509v3_KU_KEY_CERT_SIGN 0x0004 -# define X509v3_KU_CRL_SIGN 0x0002 -# define X509v3_KU_ENCIPHER_ONLY 0x0001 -# define X509v3_KU_DECIPHER_ONLY 0x8000 -# define X509v3_KU_UNDEF 0xffff +/*- + * : + * The KeyUsage BITSTRING is treated as a little-endian integer, hence bit `0` + * is 0x80, while bit `7` is 0x01 (the LSB of the integer value), bit `8` is + * then the MSB of the second octet, or 0x8000. + */ +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 /* (0) */ +# define X509v3_KU_NON_REPUDIATION 0x0040 /* (1) */ +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 /* (2) */ +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 /* (3) */ +# define X509v3_KU_KEY_AGREEMENT 0x0008 /* (4) */ +# define X509v3_KU_KEY_CERT_SIGN 0x0004 /* (5) */ +# define X509v3_KU_CRL_SIGN 0x0002 /* (6) */ +# define X509v3_KU_ENCIPHER_ONLY 0x0001 /* (7) */ +# define X509v3_KU_DECIPHER_ONLY 0x8000 /* (8) */ +# ifndef OPENSSL_NO_DEPRECATED_3_4 +# define X509v3_KU_UNDEF 0xffff /* vestigial, not used */ +# endif struct X509_algor_st { ASN1_OBJECT *algorithm; @@ -462,7 +473,12 @@ typedef struct PBKDF2PARAM_st { X509_ALGOR *prf; } PBKDF2PARAM; -#ifndef OPENSSL_NO_SCRYPT +typedef struct { + X509_ALGOR *keyDerivationFunc; + X509_ALGOR *messageAuthScheme; +} PBMAC1PARAM; + +# ifndef OPENSSL_NO_SCRYPT typedef struct SCRYPT_PARAMS_st { ASN1_OCTET_STRING *salt; ASN1_INTEGER *costParameter; @@ -470,7 +486,7 @@ typedef struct SCRYPT_PARAMS_st { ASN1_INTEGER *parallelizationParameter; ASN1_INTEGER *keyLength; } SCRYPT_PARAMS; -#endif +# endif #ifdef __cplusplus } @@ -603,6 +619,8 @@ EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); # endif @@ -651,6 +669,8 @@ EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); DECLARE_ASN1_DUP_FUNCTION(X509) @@ -884,12 +904,12 @@ int X509_REQ_get_signature_nid(const X509_REQ *req); int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); -EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); int X509_REQ_extension_nid(int nid); int *X509_REQ_get_extension_nids(void); void X509_REQ_set_extension_nids(int *nids); -STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(OSSL_FUTURE_CONST X509_REQ *req); int X509_REQ_add_extensions_nid(X509_REQ *req, const STACK_OF(X509_EXTENSION) *exts, int nid); int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); @@ -950,13 +970,14 @@ X509_REVOKED_get0_extensions(const X509_REVOKED *r); X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); -int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); -int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey); +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); int X509_chain_check_suiteb(int *perror_depth, X509 *x, STACK_OF(X509) *chain, unsigned long flags); int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); @@ -1077,6 +1098,8 @@ X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, X509_EXTENSION *ex, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_extensions(STACK_OF(X509_EXTENSION) **target, + const STACK_OF(X509_EXTENSION) *exts); int X509_get_ext_count(const X509 *x); int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); @@ -1198,9 +1221,10 @@ X509 *X509_find_by_subject(STACK_OF(X509) *sk, const X509_NAME *name); DECLARE_ASN1_FUNCTIONS(PBEPARAM) DECLARE_ASN1_FUNCTIONS(PBE2PARAM) DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) -#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(PBMAC1PARAM) +# ifndef OPENSSL_NO_SCRYPT DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) -#endif +# endif int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, const unsigned char *salt, int saltlen); @@ -1237,6 +1261,7 @@ X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, int prf_nid, int keylen, OSSL_LIB_CTX *libctx); +PBKDF2PARAM *PBMAC1_get1_pbkdf2_param(const X509_ALGOR *macalg); /* PKCS#8 utilities */ DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) @@ -1262,6 +1287,8 @@ int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len); +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, int ptype, void *pval, unsigned char *penc, int penclen); diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/x509_acert.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/x509_acert.h new file mode 100644 index 00000000000000..9dde625677f9a9 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/x509_acert.h @@ -0,0 +1,294 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/x509_acert.h.in + * + * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_X509_ACERT_H +# define OPENSSL_X509_ACERT_H +# pragma once + +# include +# include +# include + +typedef struct X509_acert_st X509_ACERT; +typedef struct X509_acert_info_st X509_ACERT_INFO; +typedef struct ossl_object_digest_info_st OSSL_OBJECT_DIGEST_INFO; +typedef struct ossl_issuer_serial_st OSSL_ISSUER_SERIAL; +typedef struct X509_acert_issuer_v2form_st X509_ACERT_ISSUER_V2FORM; + +DECLARE_ASN1_FUNCTIONS(X509_ACERT) +DECLARE_ASN1_DUP_FUNCTION(X509_ACERT) +DECLARE_ASN1_ITEM(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_OBJECT_DIGEST_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_ISSUER_SERIAL) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_ISSUER_V2FORM) + +# ifndef OPENSSL_NO_STDIO +X509_ACERT *d2i_X509_ACERT_fp(FILE *fp, X509_ACERT **acert); +int i2d_X509_ACERT_fp(FILE *fp, const X509_ACERT *acert); +# endif + +DECLARE_PEM_rw(X509_ACERT, X509_ACERT) + +X509_ACERT *d2i_X509_ACERT_bio(BIO *bp, X509_ACERT **acert); +int i2d_X509_ACERT_bio(BIO *bp, const X509_ACERT *acert); + +int X509_ACERT_sign(X509_ACERT *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_ACERT_sign_ctx(X509_ACERT *x, EVP_MD_CTX *ctx); +int X509_ACERT_verify(X509_ACERT *a, EVP_PKEY *r); + +# define X509_ACERT_VERSION_2 1 + +const GENERAL_NAMES *X509_ACERT_get0_holder_entityName(const X509_ACERT *x); +const OSSL_ISSUER_SERIAL *X509_ACERT_get0_holder_baseCertId(const X509_ACERT *x); +const OSSL_OBJECT_DIGEST_INFO * X509_ACERT_get0_holder_digest(const X509_ACERT *x); +const X509_NAME *X509_ACERT_get0_issuerName(const X509_ACERT *x); +long X509_ACERT_get_version(const X509_ACERT *x); +void X509_ACERT_get0_signature(const X509_ACERT *x, + const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_ACERT_get_signature_nid(const X509_ACERT *x); +const X509_ALGOR *X509_ACERT_get0_info_sigalg(const X509_ACERT *x); +const ASN1_INTEGER *X509_ACERT_get0_serialNumber(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notBefore(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notAfter(const X509_ACERT *x); +const ASN1_BIT_STRING *X509_ACERT_get0_issuerUID(const X509_ACERT *x); + +int X509_ACERT_print(BIO *bp, X509_ACERT *x); +int X509_ACERT_print_ex(BIO *bp, X509_ACERT *x, unsigned long nmflags, + unsigned long cflag); + +int X509_ACERT_get_attr_count(const X509_ACERT *x); +int X509_ACERT_get_attr_by_NID(const X509_ACERT *x, int nid, int lastpos); +int X509_ACERT_get_attr_by_OBJ(const X509_ACERT *x, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_ACERT_get_attr(const X509_ACERT *x, int loc); +X509_ATTRIBUTE *X509_ACERT_delete_attr(X509_ACERT *x, int loc); + +void *X509_ACERT_get_ext_d2i(const X509_ACERT *x, int nid, int *crit, int *idx); +int X509_ACERT_add1_ext_i2d(X509_ACERT *x, int nid, void *value, int crit, + unsigned long flags); +const STACK_OF(X509_EXTENSION) *X509_ACERT_get0_extensions(const X509_ACERT *x); + +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY 0 +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY_CERT 1 +# define OSSL_OBJECT_DIGEST_INFO_OTHER 2 /* must not be used in RFC 5755 profile */ +int X509_ACERT_set_version(X509_ACERT *x, long version); +void X509_ACERT_set0_holder_entityName(X509_ACERT *x, GENERAL_NAMES *name); +void X509_ACERT_set0_holder_baseCertId(X509_ACERT *x, OSSL_ISSUER_SERIAL *isss); +void X509_ACERT_set0_holder_digest(X509_ACERT *x, + OSSL_OBJECT_DIGEST_INFO *dinfo); + +int X509_ACERT_add1_attr(X509_ACERT *x, X509_ATTRIBUTE *attr); +int X509_ACERT_add1_attr_by_OBJ(X509_ACERT *x, const ASN1_OBJECT *obj, + int type, const void *bytes, int len); +int X509_ACERT_add1_attr_by_NID(X509_ACERT *x, int nid, int type, + const void *bytes, int len); +int X509_ACERT_add1_attr_by_txt(X509_ACERT *x, const char *attrname, int type, + const unsigned char *bytes, int len); +int X509_ACERT_add_attr_nconf(CONF *conf, const char *section, + X509_ACERT *acert); + +int X509_ACERT_set1_issuerName(X509_ACERT *x, const X509_NAME *name); +int X509_ACERT_set1_serialNumber(X509_ACERT *x, const ASN1_INTEGER *serial); +int X509_ACERT_set1_notBefore(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); +int X509_ACERT_set1_notAfter(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); + +void OSSL_OBJECT_DIGEST_INFO_get0_digest(const OSSL_OBJECT_DIGEST_INFO *o, + int *digestedObjectType, + const X509_ALGOR **digestAlgorithm, + const ASN1_BIT_STRING **digest); + +int OSSL_OBJECT_DIGEST_INFO_set1_digest(OSSL_OBJECT_DIGEST_INFO *o, + int digestedObjectType, + X509_ALGOR *digestAlgorithm, + ASN1_BIT_STRING *digest); + +const X509_NAME *OSSL_ISSUER_SERIAL_get0_issuer(const OSSL_ISSUER_SERIAL *isss); +const ASN1_INTEGER *OSSL_ISSUER_SERIAL_get0_serial(const OSSL_ISSUER_SERIAL *isss); +const ASN1_BIT_STRING *OSSL_ISSUER_SERIAL_get0_issuerUID(const OSSL_ISSUER_SERIAL *isss); + +int OSSL_ISSUER_SERIAL_set1_issuer(OSSL_ISSUER_SERIAL *isss, + const X509_NAME *issuer); +int OSSL_ISSUER_SERIAL_set1_serial(OSSL_ISSUER_SERIAL *isss, + const ASN1_INTEGER *serial); +int OSSL_ISSUER_SERIAL_set1_issuerUID(OSSL_ISSUER_SERIAL *isss, + const ASN1_BIT_STRING *uid); + +# define OSSL_IETFAS_OCTETS 0 +# define OSSL_IETFAS_OID 1 +# define OSSL_IETFAS_STRING 2 + +typedef struct OSSL_IETF_ATTR_SYNTAX_VALUE_st OSSL_IETF_ATTR_SYNTAX_VALUE; +typedef struct OSSL_IETF_ATTR_SYNTAX_st OSSL_IETF_ATTR_SYNTAX; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_value(sk, idx) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new(cmp) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_null() ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (n)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete(sk, i) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (i))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete_ptr(sk, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_pop(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_shift(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_shift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk),ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), (idx)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set(sk, idx, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_set(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), pnum) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_dup(sk) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_copyfunc_type(copyfunc), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set_cmp_func(sk, cmp) ((sk_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) + + +DECLARE_ASN1_ITEM(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX) + +const GENERAL_NAMES * +OSSL_IETF_ATTR_SYNTAX_get0_policyAuthority(const OSSL_IETF_ATTR_SYNTAX *a); +void OSSL_IETF_ATTR_SYNTAX_set0_policyAuthority(OSSL_IETF_ATTR_SYNTAX *a, + GENERAL_NAMES *names); + +int OSSL_IETF_ATTR_SYNTAX_get_value_num(const OSSL_IETF_ATTR_SYNTAX *a); +void *OSSL_IETF_ATTR_SYNTAX_get0_value(const OSSL_IETF_ATTR_SYNTAX *a, + int ind, int *type); +int OSSL_IETF_ATTR_SYNTAX_add1_value(OSSL_IETF_ATTR_SYNTAX *a, int type, + void *data); +int OSSL_IETF_ATTR_SYNTAX_print(BIO *bp, OSSL_IETF_ATTR_SYNTAX *a, int indent); + +struct TARGET_CERT_st { + OSSL_ISSUER_SERIAL *targetCertificate; + GENERAL_NAME *targetName; + OSSL_OBJECT_DIGEST_INFO *certDigestInfo; +}; + +typedef struct TARGET_CERT_st OSSL_TARGET_CERT; + +# define OSSL_TGT_TARGET_NAME 0 +# define OSSL_TGT_TARGET_GROUP 1 +# define OSSL_TGT_TARGET_CERT 2 + +typedef struct TARGET_st { + int type; + union { + GENERAL_NAME *targetName; + GENERAL_NAME *targetGroup; + OSSL_TARGET_CERT *targetCert; + } choice; +} OSSL_TARGET; + +typedef STACK_OF(OSSL_TARGET) OSSL_TARGETS; +typedef STACK_OF(OSSL_TARGETS) OSSL_TARGETING_INFORMATION; + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGET, OSSL_TARGET, OSSL_TARGET) +#define sk_OSSL_TARGET_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_value(sk, idx) ((OSSL_TARGET *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGET_sk_type(sk), (idx))) +#define sk_OSSL_TARGET_new(cmp) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new(ossl_check_OSSL_TARGET_compfunc_type(cmp))) +#define sk_OSSL_TARGET_new_null() ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGET_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGET_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGET_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGET_sk_type(sk), (n)) +#define sk_OSSL_TARGET_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_delete(sk, i) ((OSSL_TARGET *)OPENSSL_sk_delete(ossl_check_OSSL_TARGET_sk_type(sk), (i))) +#define sk_OSSL_TARGET_delete_ptr(sk, ptr) ((OSSL_TARGET *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_pop(sk) ((OSSL_TARGET *)OPENSSL_sk_pop(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_shift(sk) ((OSSL_TARGET *)OPENSSL_sk_shift(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGET_sk_type(sk),ossl_check_OSSL_TARGET_freefunc_type(freefunc)) +#define sk_OSSL_TARGET_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), (idx)) +#define sk_OSSL_TARGET_set(sk, idx, ptr) ((OSSL_TARGET *)OPENSSL_sk_set(ossl_check_OSSL_TARGET_sk_type(sk), (idx), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), pnum) +#define sk_OSSL_TARGET_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_dup(sk) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_copyfunc_type(copyfunc), ossl_check_OSSL_TARGET_freefunc_type(freefunc))) +#define sk_OSSL_TARGET_set_cmp_func(sk, cmp) ((sk_OSSL_TARGET_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGETS, OSSL_TARGETS, OSSL_TARGETS) +#define sk_OSSL_TARGETS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_value(sk, idx) ((OSSL_TARGETS *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGETS_sk_type(sk), (idx))) +#define sk_OSSL_TARGETS_new(cmp) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new(ossl_check_OSSL_TARGETS_compfunc_type(cmp))) +#define sk_OSSL_TARGETS_new_null() ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGETS_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGETS_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGETS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGETS_sk_type(sk), (n)) +#define sk_OSSL_TARGETS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_delete(sk, i) ((OSSL_TARGETS *)OPENSSL_sk_delete(ossl_check_OSSL_TARGETS_sk_type(sk), (i))) +#define sk_OSSL_TARGETS_delete_ptr(sk, ptr) ((OSSL_TARGETS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_pop(sk) ((OSSL_TARGETS *)OPENSSL_sk_pop(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_shift(sk) ((OSSL_TARGETS *)OPENSSL_sk_shift(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGETS_sk_type(sk),ossl_check_OSSL_TARGETS_freefunc_type(freefunc)) +#define sk_OSSL_TARGETS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), (idx)) +#define sk_OSSL_TARGETS_set(sk, idx, ptr) ((OSSL_TARGETS *)OPENSSL_sk_set(ossl_check_OSSL_TARGETS_sk_type(sk), (idx), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), pnum) +#define sk_OSSL_TARGETS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_dup(sk) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_copyfunc_type(copyfunc), ossl_check_OSSL_TARGETS_freefunc_type(freefunc))) +#define sk_OSSL_TARGETS_set_cmp_func(sk, cmp) ((sk_OSSL_TARGETS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_compfunc_type(cmp))) + + +DECLARE_ASN1_FUNCTIONS(OSSL_TARGET) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETS) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETING_INFORMATION) + +typedef STACK_OF(OSSL_ISSUER_SERIAL) OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL) +#define sk_OSSL_ISSUER_SERIAL_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_value(sk, idx) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_value(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), (idx))) +#define sk_OSSL_ISSUER_SERIAL_new(cmp) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) +#define sk_OSSL_ISSUER_SERIAL_new_null() ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ISSUER_SERIAL_new_reserve(cmp, n) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp), (n))) +#define sk_OSSL_ISSUER_SERIAL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (n)) +#define sk_OSSL_ISSUER_SERIAL_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_delete(sk, i) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (i))) +#define sk_OSSL_ISSUER_SERIAL_delete_ptr(sk, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_pop(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_pop(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_shift(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_shift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk),ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc)) +#define sk_OSSL_ISSUER_SERIAL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), (idx)) +#define sk_OSSL_ISSUER_SERIAL_set(sk, idx, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_set(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (idx), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), pnum) +#define sk_OSSL_ISSUER_SERIAL_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_dup(sk) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_copyfunc_type(copyfunc), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc))) +#define sk_OSSL_ISSUER_SERIAL_set_cmp_func(sk, cmp) ((sk_OSSL_ISSUER_SERIAL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) + + +#endif diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/x509_vfy.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/x509_vfy.h index 29b0e147adcab1..c9bdc3b39d685d 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/x509_vfy.h +++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/x509_vfy.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509_vfy.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -411,6 +411,7 @@ X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ # define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 # define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 # define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +# define X509_V_ERR_RPK_UNTRUSTED 95 /* Certificate verify flags */ # ifndef OPENSSL_NO_DEPRECATED_1_1_0 @@ -491,71 +492,72 @@ int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); X509_STORE *X509_STORE_new(void); -void X509_STORE_free(X509_STORE *v); -int X509_STORE_lock(X509_STORE *ctx); -int X509_STORE_unlock(X509_STORE *ctx); -int X509_STORE_up_ref(X509_STORE *v); -STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *v); -STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *st); -STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get1_objects(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, const X509_NAME *nm); STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, const X509_NAME *nm); -int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); -int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); -int X509_STORE_set_trust(X509_STORE *ctx, int trust); -int X509_STORE_set1_param(X509_STORE *ctx, const X509_VERIFY_PARAM *pm); -X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *ctx); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); -void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); #define X509_STORE_set_verify_func(ctx, func) \ X509_STORE_set_verify((ctx),(func)) void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, X509_STORE_CTX_verify_fn verify); -X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *ctx); -void X509_STORE_set_verify_cb(X509_STORE *ctx, +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, X509_STORE_CTX_verify_cb verify_cb); # define X509_STORE_set_verify_cb_func(ctx,func) \ X509_STORE_set_verify_cb((ctx),(func)) -X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *ctx); -void X509_STORE_set_get_issuer(X509_STORE *ctx, +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, X509_STORE_CTX_get_issuer_fn get_issuer); -X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *ctx); -void X509_STORE_set_check_issued(X509_STORE *ctx, +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, X509_STORE_CTX_check_issued_fn check_issued); -X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *ctx); -void X509_STORE_set_check_revocation(X509_STORE *ctx, +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, X509_STORE_CTX_check_revocation_fn check_revocation); X509_STORE_CTX_check_revocation_fn - X509_STORE_get_check_revocation(const X509_STORE *ctx); -void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, X509_STORE_CTX_get_crl_fn get_crl); -X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *ctx); -void X509_STORE_set_check_crl(X509_STORE *ctx, +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, X509_STORE_CTX_check_crl_fn check_crl); -X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *ctx); -void X509_STORE_set_cert_crl(X509_STORE *ctx, +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, X509_STORE_CTX_cert_crl_fn cert_crl); -X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *ctx); -void X509_STORE_set_check_policy(X509_STORE *ctx, +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, X509_STORE_CTX_check_policy_fn check_policy); -X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *ctx); -void X509_STORE_set_lookup_certs(X509_STORE *ctx, +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, X509_STORE_CTX_lookup_certs_fn lookup_certs); -X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *ctx); -void X509_STORE_set_lookup_crls(X509_STORE *ctx, +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, X509_STORE_CTX_lookup_crls_fn lookup_crls); #define X509_STORE_set_lookup_crls_cb(ctx, func) \ X509_STORE_set_lookup_crls((ctx), (func)) -X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *ctx); -void X509_STORE_set_cleanup(X509_STORE *ctx, +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, X509_STORE_CTX_cleanup_fn cleanup); -X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); #define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) -int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); -void *X509_STORE_get_ex_data(const X509_STORE *ctx, int idx); +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); X509_STORE_CTX *X509_STORE_CTX_new(void); @@ -565,11 +567,14 @@ int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); void X509_STORE_CTX_free(X509_STORE_CTX *ctx); int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY* rpk); void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, @@ -579,6 +584,8 @@ X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); @@ -600,7 +607,7 @@ X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); # define X509_STORE_get1_crl X509_STORE_CTX_get1_crls #endif -X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); X509_LOOKUP_METHOD *X509_LOOKUP_file(void); X509_LOOKUP_METHOD *X509_LOOKUP_store(void); @@ -685,8 +692,8 @@ X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( const X509_LOOKUP_METHOD *method); -int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); -int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, @@ -730,23 +737,21 @@ void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); -int X509_STORE_load_file(X509_STORE *ctx, const char *file); -int X509_STORE_load_path(X509_STORE *ctx, const char *path); -int X509_STORE_load_store(X509_STORE *ctx, const char *store); -int X509_STORE_load_locations(X509_STORE *ctx, - const char *file, - const char *dir); -int X509_STORE_set_default_paths(X509_STORE *ctx); +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); -int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file, +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_store_ex(X509_STORE *ctx, const char *store, +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file, - const char *dir, OSSL_LIB_CTX *libctx, - const char *propq); -int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OSSL_LIB_CTX *libctx, - const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); #define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) @@ -764,6 +769,7 @@ X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); @@ -773,6 +779,8 @@ int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); @@ -804,6 +812,7 @@ int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, unsigned long flags); unsigned long X509_VERIFY_PARAM_get_flags(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_get_purpose(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/x509v3.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/x509v3.h index 20b67455f2061d..b8dabac35a4915 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/x509v3.h +++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/x509v3.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509v3.h.in * - * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -146,6 +149,11 @@ typedef struct BASIC_CONSTRAINTS_st { ASN1_INTEGER *pathlen; } BASIC_CONSTRAINTS; +typedef struct OSSL_BASIC_ATTR_CONSTRAINTS_st { + int authority; + ASN1_INTEGER *pathlen; +} OSSL_BASIC_ATTR_CONSTRAINTS; + typedef struct PKEY_USAGE_PERIOD_st { ASN1_GENERALIZEDTIME *notBefore; ASN1_GENERALIZEDTIME *notAfter; @@ -198,6 +206,8 @@ typedef struct ACCESS_DESCRIPTION_st { GENERAL_NAME *location; } ACCESS_DESCRIPTION; +int GENERAL_NAME_set1_X509_NAME(GENERAL_NAME **tgt, const X509_NAME *src); + SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) #define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) #define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) @@ -294,6 +304,7 @@ typedef struct DIST_POINT_NAME_st { /* If relativename then this contains the full distribution point name */ X509_NAME *dpname; } DIST_POINT_NAME; +DECLARE_ASN1_DUP_FUNCTION(DIST_POINT_NAME) /* All existing reasons */ # define CRLDP_ALL_REASONS 0x807f @@ -659,15 +670,16 @@ struct ISSUING_DIST_POINT_st { # define EXFLAG_SAN_CRITICAL 0x80000 # define EXFLAG_NO_FINGERPRINT 0x100000 -# define KU_DIGITAL_SIGNATURE 0x0080 -# define KU_NON_REPUDIATION 0x0040 -# define KU_KEY_ENCIPHERMENT 0x0020 -# define KU_DATA_ENCIPHERMENT 0x0010 -# define KU_KEY_AGREEMENT 0x0008 -# define KU_KEY_CERT_SIGN 0x0004 -# define KU_CRL_SIGN 0x0002 -# define KU_ENCIPHER_ONLY 0x0001 -# define KU_DECIPHER_ONLY 0x8000 +/* https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3 */ +# define KU_DIGITAL_SIGNATURE X509v3_KU_DIGITAL_SIGNATURE +# define KU_NON_REPUDIATION X509v3_KU_NON_REPUDIATION +# define KU_KEY_ENCIPHERMENT X509v3_KU_KEY_ENCIPHERMENT +# define KU_DATA_ENCIPHERMENT X509v3_KU_DATA_ENCIPHERMENT +# define KU_KEY_AGREEMENT X509v3_KU_KEY_AGREEMENT +# define KU_KEY_CERT_SIGN X509v3_KU_KEY_CERT_SIGN +# define KU_CRL_SIGN X509v3_KU_CRL_SIGN +# define KU_ENCIPHER_ONLY X509v3_KU_ENCIPHER_ONLY +# define KU_DECIPHER_ONLY X509v3_KU_DECIPHER_ONLY # define NS_SSL_CLIENT 0x80 # define NS_SSL_SERVER 0x40 @@ -729,7 +741,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) #define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) - +# define X509_PURPOSE_DEFAULT_ANY 0 # define X509_PURPOSE_SSL_CLIENT 1 # define X509_PURPOSE_SSL_SERVER 2 # define X509_PURPOSE_NS_SSL_SERVER 3 @@ -739,9 +751,10 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509_PURPOSE_ANY 7 # define X509_PURPOSE_OCSP_HELPER 8 # define X509_PURPOSE_TIMESTAMP_SIGN 9 +# define X509_PURPOSE_CODE_SIGN 10 # define X509_PURPOSE_MIN 1 -# define X509_PURPOSE_MAX 9 +# define X509_PURPOSE_MAX 10 /* Flags for X509V3_EXT_print() */ @@ -767,6 +780,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509V3_ADD_SILENT 0x10 DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) +DECLARE_ASN1_FUNCTIONS(OSSL_BASIC_ATTR_CONSTRAINTS) DECLARE_ASN1_FUNCTIONS(SXNET) DECLARE_ASN1_FUNCTIONS(SXNETID) @@ -976,7 +990,6 @@ int X509V3_extensions_print(BIO *out, const char *title, int X509_check_ca(X509 *x); int X509_check_purpose(X509 *x, int id, int ca); int X509_supported_extension(X509_EXTENSION *ex); -int X509_PURPOSE_set(int *p, int purpose); int X509_check_issued(X509 *issuer, X509 *subject); int X509_check_akid(const X509 *issuer, const AUTHORITY_KEYID *akid); void X509_set_proxy_flag(X509 *x); @@ -992,22 +1005,26 @@ const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); int X509_PURPOSE_get_count(void); -X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_unused_id(OSSL_LIB_CTX *libctx); int X509_PURPOSE_get_by_sname(const char *sname); int X509_PURPOSE_get_by_id(int id); int X509_PURPOSE_add(int id, int trust, int flags, int (*ck) (const X509_PURPOSE *, const X509 *, int), const char *name, const char *sname, void *arg); +void X509_PURPOSE_cleanup(void); + +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_id(const X509_PURPOSE *); char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); -void X509_PURPOSE_cleanup(void); -int X509_PURPOSE_get_id(const X509_PURPOSE *); +int X509_PURPOSE_set(int *p, int purpose); STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); + /* Flags for X509_check_* functions */ /* @@ -1444,6 +1461,507 @@ const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( void PROFESSION_INFO_set0_registrationNumber( PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); +int OSSL_GENERAL_NAMES_print(BIO *out, GENERAL_NAMES *gens, int indent); + +typedef STACK_OF(X509_ATTRIBUTE) OSSL_ATTRIBUTES_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTES_SYNTAX) + +typedef STACK_OF(USERNOTICE) OSSL_USER_NOTICE_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_USER_NOTICE_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(USERNOTICE, USERNOTICE, USERNOTICE) +#define sk_USERNOTICE_num(sk) OPENSSL_sk_num(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_value(sk, idx) ((USERNOTICE *)OPENSSL_sk_value(ossl_check_const_USERNOTICE_sk_type(sk), (idx))) +#define sk_USERNOTICE_new(cmp) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new(ossl_check_USERNOTICE_compfunc_type(cmp))) +#define sk_USERNOTICE_new_null() ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_null()) +#define sk_USERNOTICE_new_reserve(cmp, n) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_reserve(ossl_check_USERNOTICE_compfunc_type(cmp), (n))) +#define sk_USERNOTICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_USERNOTICE_sk_type(sk), (n)) +#define sk_USERNOTICE_free(sk) OPENSSL_sk_free(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_zero(sk) OPENSSL_sk_zero(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_delete(sk, i) ((USERNOTICE *)OPENSSL_sk_delete(ossl_check_USERNOTICE_sk_type(sk), (i))) +#define sk_USERNOTICE_delete_ptr(sk, ptr) ((USERNOTICE *)OPENSSL_sk_delete_ptr(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_pop(sk) ((USERNOTICE *)OPENSSL_sk_pop(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_shift(sk) ((USERNOTICE *)OPENSSL_sk_shift(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_USERNOTICE_sk_type(sk),ossl_check_USERNOTICE_freefunc_type(freefunc)) +#define sk_USERNOTICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), (idx)) +#define sk_USERNOTICE_set(sk, idx, ptr) ((USERNOTICE *)OPENSSL_sk_set(ossl_check_USERNOTICE_sk_type(sk), (idx), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), pnum) +#define sk_USERNOTICE_sort(sk) OPENSSL_sk_sort(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_dup(sk) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_dup(ossl_check_const_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_deep_copy(ossl_check_const_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_copyfunc_type(copyfunc), ossl_check_USERNOTICE_freefunc_type(freefunc))) +#define sk_USERNOTICE_set_cmp_func(sk, cmp) ((sk_USERNOTICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_compfunc_type(cmp))) + + +typedef struct OSSL_ROLE_SPEC_CERT_ID_st { + GENERAL_NAME *roleName; + GENERAL_NAME *roleCertIssuer; + ASN1_INTEGER *roleCertSerialNumber; + GENERAL_NAMES *roleCertLocator; +} OSSL_ROLE_SPEC_CERT_ID; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID) +#define sk_OSSL_ROLE_SPEC_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_value(sk, idx) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_value(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new(cmp) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_null() ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_reserve(cmp, n) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp), (n))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (n)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete(sk, i) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (i))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete_ptr(sk, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_pop(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_shift(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_shift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk),ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), (idx)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set(sk, idx, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_set(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), pnum) +#define sk_OSSL_ROLE_SPEC_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_dup(sk) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_copyfunc_type(copyfunc), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set_cmp_func(sk, cmp) ((sk_OSSL_ROLE_SPEC_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) + + +typedef STACK_OF(OSSL_ROLE_SPEC_CERT_ID) OSSL_ROLE_SPEC_CERT_ID_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID_SYNTAX) +typedef struct OSSL_HASH_st { + X509_ALGOR *algorithmIdentifier; + ASN1_BIT_STRING *hashValue; +} OSSL_HASH; + +typedef struct OSSL_INFO_SYNTAX_POINTER_st { + GENERAL_NAMES *name; + OSSL_HASH *hash; +} OSSL_INFO_SYNTAX_POINTER; + +# define OSSL_INFO_SYNTAX_TYPE_CONTENT 0 +# define OSSL_INFO_SYNTAX_TYPE_POINTER 1 + +typedef struct OSSL_INFO_SYNTAX_st { + int type; + union { + ASN1_STRING *content; + OSSL_INFO_SYNTAX_POINTER *pointer; + } choice; +} OSSL_INFO_SYNTAX; + +typedef struct OSSL_PRIVILEGE_POLICY_ID_st { + ASN1_OBJECT *privilegePolicy; + OSSL_INFO_SYNTAX *privPolSyntax; +} OSSL_PRIVILEGE_POLICY_ID; + +typedef struct OSSL_ATTRIBUTE_DESCRIPTOR_st { + ASN1_OBJECT *identifier; + ASN1_STRING *attributeSyntax; + ASN1_UTF8STRING *name; + ASN1_UTF8STRING *description; + OSSL_PRIVILEGE_POLICY_ID *dominationRule; +} OSSL_ATTRIBUTE_DESCRIPTOR; + +DECLARE_ASN1_FUNCTIONS(OSSL_HASH) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX_POINTER) +DECLARE_ASN1_FUNCTIONS(OSSL_PRIVILEGE_POLICY_ID) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_DESCRIPTOR) + +typedef struct OSSL_TIME_SPEC_ABSOLUTE_st { + ASN1_GENERALIZEDTIME *startTime; + ASN1_GENERALIZEDTIME *endTime; +} OSSL_TIME_SPEC_ABSOLUTE; + +typedef struct OSSL_DAY_TIME_st { + ASN1_INTEGER *hour; + ASN1_INTEGER *minute; + ASN1_INTEGER *second; +} OSSL_DAY_TIME; + +typedef struct OSSL_DAY_TIME_BAND_st { + OSSL_DAY_TIME *startDayTime; + OSSL_DAY_TIME *endDayTime; +} OSSL_DAY_TIME_BAND; + +# define OSSL_NAMED_DAY_TYPE_INT 0 +# define OSSL_NAMED_DAY_TYPE_BIT 1 +# define OSSL_NAMED_DAY_INT_SUN 1 +# define OSSL_NAMED_DAY_INT_MON 2 +# define OSSL_NAMED_DAY_INT_TUE 3 +# define OSSL_NAMED_DAY_INT_WED 4 +# define OSSL_NAMED_DAY_INT_THU 5 +# define OSSL_NAMED_DAY_INT_FRI 6 +# define OSSL_NAMED_DAY_INT_SAT 7 +# define OSSL_NAMED_DAY_BIT_SUN 0 +# define OSSL_NAMED_DAY_BIT_MON 1 +# define OSSL_NAMED_DAY_BIT_TUE 2 +# define OSSL_NAMED_DAY_BIT_WED 3 +# define OSSL_NAMED_DAY_BIT_THU 4 +# define OSSL_NAMED_DAY_BIT_FRI 5 +# define OSSL_NAMED_DAY_BIT_SAT 6 + +typedef struct OSSL_NAMED_DAY_st { + int type; + union { + ASN1_INTEGER *intNamedDays; + ASN1_BIT_STRING *bitNamedDays; + } choice; +} OSSL_NAMED_DAY; + +# define OSSL_TIME_SPEC_X_DAY_OF_FIRST 0 +# define OSSL_TIME_SPEC_X_DAY_OF_SECOND 1 +# define OSSL_TIME_SPEC_X_DAY_OF_THIRD 2 +# define OSSL_TIME_SPEC_X_DAY_OF_FOURTH 3 +# define OSSL_TIME_SPEC_X_DAY_OF_FIFTH 4 + +typedef struct OSSL_TIME_SPEC_X_DAY_OF_st { + int type; + union { + OSSL_NAMED_DAY *first; + OSSL_NAMED_DAY *second; + OSSL_NAMED_DAY *third; + OSSL_NAMED_DAY *fourth; + OSSL_NAMED_DAY *fifth; + } choice; +} OSSL_TIME_SPEC_X_DAY_OF; + +# define OSSL_TIME_SPEC_DAY_TYPE_INT 0 +# define OSSL_TIME_SPEC_DAY_TYPE_BIT 1 +# define OSSL_TIME_SPEC_DAY_TYPE_DAY_OF 2 +# define OSSL_TIME_SPEC_DAY_BIT_SUN 0 +# define OSSL_TIME_SPEC_DAY_BIT_MON 1 +# define OSSL_TIME_SPEC_DAY_BIT_TUE 2 +# define OSSL_TIME_SPEC_DAY_BIT_WED 3 +# define OSSL_TIME_SPEC_DAY_BIT_THU 4 +# define OSSL_TIME_SPEC_DAY_BIT_FRI 5 +# define OSSL_TIME_SPEC_DAY_BIT_SAT 6 +# define OSSL_TIME_SPEC_DAY_INT_SUN 1 +# define OSSL_TIME_SPEC_DAY_INT_MON 2 +# define OSSL_TIME_SPEC_DAY_INT_TUE 3 +# define OSSL_TIME_SPEC_DAY_INT_WED 4 +# define OSSL_TIME_SPEC_DAY_INT_THU 5 +# define OSSL_TIME_SPEC_DAY_INT_FRI 6 +# define OSSL_TIME_SPEC_DAY_INT_SAT 7 + +typedef struct OSSL_TIME_SPEC_DAY_st { + int type; + union { + STACK_OF(ASN1_INTEGER) *intDay; + ASN1_BIT_STRING *bitDay; + OSSL_TIME_SPEC_X_DAY_OF *dayOf; + } choice; +} OSSL_TIME_SPEC_DAY; + +# define OSSL_TIME_SPEC_WEEKS_TYPE_ALL 0 +# define OSSL_TIME_SPEC_WEEKS_TYPE_INT 1 +# define OSSL_TIME_SPEC_WEEKS_TYPE_BIT 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_1 0 +# define OSSL_TIME_SPEC_BIT_WEEKS_2 1 +# define OSSL_TIME_SPEC_BIT_WEEKS_3 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_4 3 +# define OSSL_TIME_SPEC_BIT_WEEKS_5 4 + +typedef struct OSSL_TIME_SPEC_WEEKS_st { + int type; + union { + ASN1_NULL *allWeeks; + STACK_OF(ASN1_INTEGER) *intWeek; + ASN1_BIT_STRING *bitWeek; + } choice; +} OSSL_TIME_SPEC_WEEKS; + +# define OSSL_TIME_SPEC_MONTH_TYPE_ALL 0 +# define OSSL_TIME_SPEC_MONTH_TYPE_INT 1 +# define OSSL_TIME_SPEC_MONTH_TYPE_BIT 2 +# define OSSL_TIME_SPEC_INT_MONTH_JAN 1 +# define OSSL_TIME_SPEC_INT_MONTH_FEB 2 +# define OSSL_TIME_SPEC_INT_MONTH_MAR 3 +# define OSSL_TIME_SPEC_INT_MONTH_APR 4 +# define OSSL_TIME_SPEC_INT_MONTH_MAY 5 +# define OSSL_TIME_SPEC_INT_MONTH_JUN 6 +# define OSSL_TIME_SPEC_INT_MONTH_JUL 7 +# define OSSL_TIME_SPEC_INT_MONTH_AUG 8 +# define OSSL_TIME_SPEC_INT_MONTH_SEP 9 +# define OSSL_TIME_SPEC_INT_MONTH_OCT 10 +# define OSSL_TIME_SPEC_INT_MONTH_NOV 11 +# define OSSL_TIME_SPEC_INT_MONTH_DEC 12 +# define OSSL_TIME_SPEC_BIT_MONTH_JAN 0 +# define OSSL_TIME_SPEC_BIT_MONTH_FEB 1 +# define OSSL_TIME_SPEC_BIT_MONTH_MAR 2 +# define OSSL_TIME_SPEC_BIT_MONTH_APR 3 +# define OSSL_TIME_SPEC_BIT_MONTH_MAY 4 +# define OSSL_TIME_SPEC_BIT_MONTH_JUN 5 +# define OSSL_TIME_SPEC_BIT_MONTH_JUL 6 +# define OSSL_TIME_SPEC_BIT_MONTH_AUG 7 +# define OSSL_TIME_SPEC_BIT_MONTH_SEP 8 +# define OSSL_TIME_SPEC_BIT_MONTH_OCT 9 +# define OSSL_TIME_SPEC_BIT_MONTH_NOV 10 +# define OSSL_TIME_SPEC_BIT_MONTH_DEC 11 + +typedef struct OSSL_TIME_SPEC_MONTH_st { + int type; + union { + ASN1_NULL *allMonths; + STACK_OF(ASN1_INTEGER) *intMonth; + ASN1_BIT_STRING *bitMonth; + } choice; +} OSSL_TIME_SPEC_MONTH; + +typedef struct OSSL_TIME_PERIOD_st { + STACK_OF(OSSL_DAY_TIME_BAND) *timesOfDay; + OSSL_TIME_SPEC_DAY *days; + OSSL_TIME_SPEC_WEEKS *weeks; + OSSL_TIME_SPEC_MONTH *months; + STACK_OF(ASN1_INTEGER) *years; +} OSSL_TIME_PERIOD; + +# define OSSL_TIME_SPEC_TIME_TYPE_ABSOLUTE 0 +# define OSSL_TIME_SPEC_TIME_TYPE_PERIODIC 1 + +typedef struct OSSL_TIME_SPEC_TIME_st { + int type; + union { + OSSL_TIME_SPEC_ABSOLUTE *absolute; + STACK_OF(OSSL_TIME_PERIOD) *periodic; + } choice; +} OSSL_TIME_SPEC_TIME; + +typedef struct OSSL_TIME_SPEC_st { + OSSL_TIME_SPEC_TIME *time; + ASN1_BOOLEAN notThisTime; + ASN1_INTEGER *timeZone; +} OSSL_TIME_SPEC; + +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME_BAND) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_WEEKS) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_MONTH) +DECLARE_ASN1_FUNCTIONS(OSSL_NAMED_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_X_DAY_OF) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_ABSOLUTE) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_PERIOD) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TIME_PERIOD, OSSL_TIME_PERIOD, OSSL_TIME_PERIOD) +#define sk_OSSL_TIME_PERIOD_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_value(sk, idx) ((OSSL_TIME_PERIOD *)OPENSSL_sk_value(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), (idx))) +#define sk_OSSL_TIME_PERIOD_new(cmp) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) +#define sk_OSSL_TIME_PERIOD_new_null() ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TIME_PERIOD_new_reserve(cmp, n) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp), (n))) +#define sk_OSSL_TIME_PERIOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (n)) +#define sk_OSSL_TIME_PERIOD_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_delete(sk, i) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (i))) +#define sk_OSSL_TIME_PERIOD_delete_ptr(sk, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_pop(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_pop(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_shift(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_shift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk),ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc)) +#define sk_OSSL_TIME_PERIOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), (idx)) +#define sk_OSSL_TIME_PERIOD_set(sk, idx, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_set(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (idx), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), pnum) +#define sk_OSSL_TIME_PERIOD_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_dup(sk) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_copyfunc_type(copyfunc), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc))) +#define sk_OSSL_TIME_PERIOD_set_cmp_func(sk, cmp) ((sk_OSSL_TIME_PERIOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND) +#define sk_OSSL_DAY_TIME_BAND_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_value(sk, idx) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_value(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), (idx))) +#define sk_OSSL_DAY_TIME_BAND_new(cmp) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) +#define sk_OSSL_DAY_TIME_BAND_new_null() ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_null()) +#define sk_OSSL_DAY_TIME_BAND_new_reserve(cmp, n) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp), (n))) +#define sk_OSSL_DAY_TIME_BAND_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (n)) +#define sk_OSSL_DAY_TIME_BAND_free(sk) OPENSSL_sk_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_delete(sk, i) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (i))) +#define sk_OSSL_DAY_TIME_BAND_delete_ptr(sk, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_pop(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_pop(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_shift(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_shift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk),ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc)) +#define sk_OSSL_DAY_TIME_BAND_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), (idx)) +#define sk_OSSL_DAY_TIME_BAND_set(sk, idx, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_set(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (idx), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), pnum) +#define sk_OSSL_DAY_TIME_BAND_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_dup(sk) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_dup(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_copyfunc_type(copyfunc), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc))) +#define sk_OSSL_DAY_TIME_BAND_set_cmp_func(sk, cmp) ((sk_OSSL_DAY_TIME_BAND_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) + + +/* Attribute Type and Value */ +typedef struct atav_st { + ASN1_OBJECT *type; + ASN1_TYPE *value; +} OSSL_ATAV; + +typedef struct ATTRIBUTE_TYPE_MAPPING_st { + ASN1_OBJECT *local; + ASN1_OBJECT *remote; +} OSSL_ATTRIBUTE_TYPE_MAPPING; + +typedef struct ATTRIBUTE_VALUE_MAPPING_st { + OSSL_ATAV *local; + OSSL_ATAV *remote; +} OSSL_ATTRIBUTE_VALUE_MAPPING; + +# define OSSL_ATTR_MAP_TYPE 0 +# define OSSL_ATTR_MAP_VALUE 1 + +typedef struct ATTRIBUTE_MAPPING_st { + int type; + union { + OSSL_ATTRIBUTE_TYPE_MAPPING *typeMappings; + OSSL_ATTRIBUTE_VALUE_MAPPING *typeValueMappings; + } choice; +} OSSL_ATTRIBUTE_MAPPING; + +typedef STACK_OF(OSSL_ATTRIBUTE_MAPPING) OSSL_ATTRIBUTE_MAPPINGS; +DECLARE_ASN1_FUNCTIONS(OSSL_ATAV) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_TYPE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_VALUE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPINGS) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING) +#define sk_OSSL_ATTRIBUTE_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_value(sk, idx) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_value(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new(cmp) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_null() ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_reserve(cmp, n) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp), (n))) +#define sk_OSSL_ATTRIBUTE_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (n)) +#define sk_OSSL_ATTRIBUTE_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete(sk, i) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (i))) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete_ptr(sk, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_pop(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_shift(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_shift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk),ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc)) +#define sk_OSSL_ATTRIBUTE_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), (idx)) +#define sk_OSSL_ATTRIBUTE_MAPPING_set(sk, idx, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_set(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), pnum) +#define sk_OSSL_ATTRIBUTE_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_dup(sk) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_copyfunc_type(copyfunc), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc))) +#define sk_OSSL_ATTRIBUTE_MAPPING_set_cmp_func(sk, cmp) ((sk_OSSL_ATTRIBUTE_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) + + +# define OSSL_AAA_ATTRIBUTE_TYPE 0 +# define OSSL_AAA_ATTRIBUTE_VALUES 1 + +typedef struct ALLOWED_ATTRIBUTES_CHOICE_st { + int type; + union { + ASN1_OBJECT *attributeType; + X509_ATTRIBUTE *attributeTypeandValues; + } choice; +} OSSL_ALLOWED_ATTRIBUTES_CHOICE; + +typedef struct ALLOWED_ATTRIBUTES_ITEM_st { + STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *attributes; + GENERAL_NAME *holderDomain; +} OSSL_ALLOWED_ATTRIBUTES_ITEM; + +typedef STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) OSSL_ALLOWED_ATTRIBUTES_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_CHOICE) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_ITEM) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) + + +typedef struct AA_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + int dp_reasons; + ASN1_BOOLEAN indirectCRL; + ASN1_BOOLEAN containsUserAttributeCerts; + ASN1_BOOLEAN containsAACerts; + ASN1_BOOLEAN containsSOAPublicKeyCerts; +} OSSL_AA_DIST_POINT; + +DECLARE_ASN1_FUNCTIONS(OSSL_AA_DIST_POINT) + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/progs.h b/deps/openssl/config/archs/BSD-x86/asm/include/progs.h index be55f61503d405..1b62ec37dec130 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/include/progs.h +++ b/deps/openssl/config/archs/BSD-x86/asm/include/progs.h @@ -56,6 +56,7 @@ extern int s_client_main(int argc, char *argv[]); extern int s_server_main(int argc, char *argv[]); extern int s_time_main(int argc, char *argv[]); extern int sess_id_main(int argc, char *argv[]); +extern int skeyutl_main(int argc, char *argv[]); extern int smime_main(int argc, char *argv[]); extern int speed_main(int argc, char *argv[]); extern int spkac_main(int argc, char *argv[]); @@ -110,6 +111,7 @@ extern const OPTIONS s_client_options[]; extern const OPTIONS s_server_options[]; extern const OPTIONS s_time_options[]; extern const OPTIONS sess_id_options[]; +extern const OPTIONS skeyutl_options[]; extern const OPTIONS smime_options[]; extern const OPTIONS speed_options[]; extern const OPTIONS spkac_options[]; diff --git a/deps/openssl/config/archs/BSD-x86/asm/openssl-cl.gypi b/deps/openssl/config/archs/BSD-x86/asm/openssl-cl.gypi index 4380305593acd1..b4d8e4514b603c 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/openssl-cl.gypi +++ b/deps/openssl/config/archs/BSD-x86/asm/openssl-cl.gypi @@ -82,6 +82,7 @@ 'openssl/apps/s_server.c', 'openssl/apps/s_time.c', 'openssl/apps/sess_id.c', + 'openssl/apps/skeyutl.c', 'openssl/apps/smime.c', 'openssl/apps/speed.c', 'openssl/apps/spkac.c', @@ -97,12 +98,14 @@ 'openssl/apps/lib/app_rand.c', 'openssl/apps/lib/app_x509.c', 'openssl/apps/lib/apps.c', + 'openssl/apps/lib/apps_opt_printf.c', 'openssl/apps/lib/apps_ui.c', 'openssl/apps/lib/columns.c', 'openssl/apps/lib/engine.c', 'openssl/apps/lib/engine_loader.c', 'openssl/apps/lib/fmt.c', 'openssl/apps/lib/http_server.c', + 'openssl/apps/lib/log.c', 'openssl/apps/lib/names.c', 'openssl/apps/lib/opt.c', 'openssl/apps/lib/s_cb.c', diff --git a/deps/openssl/config/archs/BSD-x86/asm/openssl-fips.gypi b/deps/openssl/config/archs/BSD-x86/asm/openssl-fips.gypi index f900bbeb914057..8718c229855634 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/openssl-fips.gypi +++ b/deps/openssl/config/archs/BSD-x86/asm/openssl-fips.gypi @@ -96,14 +96,15 @@ 'openssl/crypto/evp/kem.c', 'openssl/crypto/evp/keymgmt_lib.c', 'openssl/crypto/evp/keymgmt_meth.c', - 'openssl/crypto/evp/m_sigver.c', 'openssl/crypto/evp/mac_lib.c', 'openssl/crypto/evp/mac_meth.c', 'openssl/crypto/evp/p_lib.c', 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -111,6 +112,8 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', @@ -140,6 +143,16 @@ 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -148,6 +161,7 @@ 'openssl/crypto/modes/ofb128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/property/defn_cache.c', 'openssl/crypto/property/property.c', 'openssl/crypto/property/property_parse.c', @@ -176,7 +190,23 @@ 'openssl/crypto/sha/sha256.c', 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/stack/stack.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/providers/common/der/der_rsa_sig.c', 'openssl/providers/common/bio_prov.c', 'openssl/providers/common/capabilities.c', @@ -185,6 +215,7 @@ 'openssl/providers/common/provider_util.c', 'openssl/providers/common/securitycheck.c', 'openssl/providers/common/securitycheck_fips.c', + 'openssl/providers/fips/fipsindicator.c', 'openssl/providers/fips/fipsprov.c', 'openssl/providers/fips/self_test.c', 'openssl/providers/fips/self_test_kats.c', @@ -222,6 +253,8 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -229,29 +262,39 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/cmac_prov.c', 'openssl/providers/implementations/macs/gmac_prov.c', 'openssl/providers/implementations/macs/hmac_prov.c', 'openssl/providers/implementations/macs/kmac_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', + 'openssl/providers/implementations/rands/fips_crng_test.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/signature/dsa_sig.c', 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -262,7 +305,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/fips/fips_entry.c', ], @@ -280,6 +323,7 @@ './config/archs/BSD-x86/asm/crypto/des/crypt586.S', './config/archs/BSD-x86/asm/crypto/des/des-586.S', './config/archs/BSD-x86/asm/crypto/ec/ecp_nistz256-x86.S', + './config/archs/BSD-x86/asm/crypto/params_idx.c', './config/archs/BSD-x86/asm/crypto/x86cpuid.S', './config/archs/BSD-x86/asm/crypto/md5/md5-586.S', './config/archs/BSD-x86/asm/crypto/modes/ghash-x86.S', @@ -296,7 +340,9 @@ './config/archs/BSD-x86/asm/providers/common/der/der_dsa_gen.c', './config/archs/BSD-x86/asm/providers/common/der/der_ec_gen.c', './config/archs/BSD-x86/asm/providers/common/der/der_ecx_gen.c', + './config/archs/BSD-x86/asm/providers/common/der/der_ml_dsa_gen.c', './config/archs/BSD-x86/asm/providers/common/der/der_rsa_gen.c', + './config/archs/BSD-x86/asm/providers/common/der/der_slh_dsa_gen.c', './config/archs/BSD-x86/asm/providers/common/der/der_wrap_gen.c', './config/archs/BSD-x86/asm/providers/legacy.ld', './config/archs/BSD-x86/asm/providers/fips.ld', diff --git a/deps/openssl/config/archs/BSD-x86/asm/openssl.gypi b/deps/openssl/config/archs/BSD-x86/asm/openssl.gypi index dbe9034311729f..2ddc8e46672933 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/openssl.gypi +++ b/deps/openssl/config/archs/BSD-x86/asm/openssl.gypi @@ -7,14 +7,15 @@ 'openssl/ssl/d1_srtp.c', 'openssl/ssl/methods.c', 'openssl/ssl/pqueue.c', + 'openssl/ssl/priority_queue.c', 'openssl/ssl/s3_enc.c', 'openssl/ssl/s3_lib.c', 'openssl/ssl/s3_msg.c', 'openssl/ssl/ssl_asn1.c', 'openssl/ssl/ssl_cert.c', + 'openssl/ssl/ssl_cert_comp.c', 'openssl/ssl/ssl_ciph.c', 'openssl/ssl/ssl_conf.c', - 'openssl/ssl/ssl_err.c', 'openssl/ssl/ssl_err_legacy.c', 'openssl/ssl/ssl_init.c', 'openssl/ssl/ssl_lib.c', @@ -31,12 +32,60 @@ 'openssl/ssl/tls13_enc.c', 'openssl/ssl/tls_depr.c', 'openssl/ssl/tls_srp.c', - 'openssl/ssl/record/dtls1_bitmap.c', + 'openssl/ssl/quic/cc_newreno.c', + 'openssl/ssl/quic/json_enc.c', + 'openssl/ssl/quic/qlog.c', + 'openssl/ssl/quic/qlog_event_helpers.c', + 'openssl/ssl/quic/quic_ackm.c', + 'openssl/ssl/quic/quic_cfq.c', + 'openssl/ssl/quic/quic_channel.c', + 'openssl/ssl/quic/quic_demux.c', + 'openssl/ssl/quic/quic_engine.c', + 'openssl/ssl/quic/quic_fc.c', + 'openssl/ssl/quic/quic_fifd.c', + 'openssl/ssl/quic/quic_impl.c', + 'openssl/ssl/quic/quic_lcidm.c', + 'openssl/ssl/quic/quic_method.c', + 'openssl/ssl/quic/quic_obj.c', + 'openssl/ssl/quic/quic_port.c', + 'openssl/ssl/quic/quic_rcidm.c', + 'openssl/ssl/quic/quic_reactor.c', + 'openssl/ssl/quic/quic_reactor_wait_ctx.c', + 'openssl/ssl/quic/quic_record_rx.c', + 'openssl/ssl/quic/quic_record_shared.c', + 'openssl/ssl/quic/quic_record_tx.c', + 'openssl/ssl/quic/quic_record_util.c', + 'openssl/ssl/quic/quic_rstream.c', + 'openssl/ssl/quic/quic_rx_depack.c', + 'openssl/ssl/quic/quic_sf_list.c', + 'openssl/ssl/quic/quic_srt_gen.c', + 'openssl/ssl/quic/quic_srtm.c', + 'openssl/ssl/quic/quic_sstream.c', + 'openssl/ssl/quic/quic_statm.c', + 'openssl/ssl/quic/quic_stream_map.c', + 'openssl/ssl/quic/quic_thread_assist.c', + 'openssl/ssl/quic/quic_tls.c', + 'openssl/ssl/quic/quic_tls_api.c', + 'openssl/ssl/quic/quic_trace.c', + 'openssl/ssl/quic/quic_tserver.c', + 'openssl/ssl/quic/quic_txp.c', + 'openssl/ssl/quic/quic_txpim.c', + 'openssl/ssl/quic/quic_types.c', + 'openssl/ssl/quic/quic_wire.c', + 'openssl/ssl/quic/quic_wire_pkt.c', + 'openssl/ssl/quic/uint_set.c', 'openssl/ssl/record/rec_layer_d1.c', 'openssl/ssl/record/rec_layer_s3.c', - 'openssl/ssl/record/ssl3_buffer.c', - 'openssl/ssl/record/ssl3_record.c', - 'openssl/ssl/record/ssl3_record_tls13.c', + 'openssl/ssl/record/methods/dtls_meth.c', + 'openssl/ssl/record/methods/ssl3_meth.c', + 'openssl/ssl/record/methods/tls13_meth.c', + 'openssl/ssl/record/methods/tls1_meth.c', + 'openssl/ssl/record/methods/tls_common.c', + 'openssl/ssl/record/methods/tls_multib.c', + 'openssl/ssl/record/methods/tlsany_meth.c', + 'openssl/ssl/rio/poll_builder.c', + 'openssl/ssl/rio/poll_immediate.c', + 'openssl/ssl/rio/rio_notifier.c', 'openssl/ssl/statem/extensions.c', 'openssl/ssl/statem/extensions_clnt.c', 'openssl/ssl/statem/extensions_cust.c', @@ -147,6 +196,7 @@ 'openssl/crypto/bio/bss_conn.c', 'openssl/crypto/bio/bss_core.c', 'openssl/crypto/bio/bss_dgram.c', + 'openssl/crypto/bio/bss_dgram_pair.c', 'openssl/crypto/bio/bss_fd.c', 'openssl/crypto/bio/bss_file.c', 'openssl/crypto/bio/bss_log.c', @@ -202,6 +252,7 @@ 'openssl/crypto/cmp/cmp_client.c', 'openssl/crypto/cmp/cmp_ctx.c', 'openssl/crypto/cmp/cmp_err.c', + 'openssl/crypto/cmp/cmp_genm.c', 'openssl/crypto/cmp/cmp_hdr.c', 'openssl/crypto/cmp/cmp_http.c', 'openssl/crypto/cmp/cmp_msg.c', @@ -376,7 +427,9 @@ 'openssl/crypto/err/err_all.c', 'openssl/crypto/err/err_all_legacy.c', 'openssl/crypto/err/err_blocks.c', + 'openssl/crypto/err/err_mark.c', 'openssl/crypto/err/err_prn.c', + 'openssl/crypto/err/err_save.c', 'openssl/crypto/ess/ess_asn1.c', 'openssl/crypto/ess/ess_err.c', 'openssl/crypto/ess/ess_lib.c', @@ -459,7 +512,9 @@ 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -467,7 +522,11 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', + 'openssl/crypto/hpke/hpke.c', + 'openssl/crypto/hpke/hpke_util.c', 'openssl/crypto/http/http_client.c', 'openssl/crypto/http/http_err.c', 'openssl/crypto/http/http_lib.c', @@ -481,6 +540,7 @@ 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', 'openssl/crypto/bsearch.c', + 'openssl/crypto/comp_methods.c', 'openssl/crypto/context.c', 'openssl/crypto/core_algorithm.c', 'openssl/crypto/core_fetch.c', @@ -490,10 +550,13 @@ 'openssl/crypto/cryptlib.c', 'openssl/crypto/ctype.c', 'openssl/crypto/cversion.c', + 'openssl/crypto/defaults.c', 'openssl/crypto/der_writer.c', + 'openssl/crypto/deterministic_nonce.c', 'openssl/crypto/ebcdic.c', 'openssl/crypto/ex_data.c', 'openssl/crypto/getenv.c', + 'openssl/crypto/indicator_core.c', 'openssl/crypto/info.c', 'openssl/crypto/init.c', 'openssl/crypto/initthread.c', @@ -517,12 +580,16 @@ 'openssl/crypto/provider_core.c', 'openssl/crypto/provider_predefined.c', 'openssl/crypto/punycode.c', + 'openssl/crypto/quic_vlint.c', 'openssl/crypto/self_test_core.c', + 'openssl/crypto/sleep.c', 'openssl/crypto/sparse_array.c', + 'openssl/crypto/ssl_err.c', 'openssl/crypto/threads_lib.c', 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', 'openssl/crypto/trace.c', 'openssl/crypto/uid.c', 'openssl/crypto/md4/md4_dgst.c', @@ -532,6 +599,15 @@ 'openssl/crypto/md5/md5_sha1.c', 'openssl/crypto/mdc2/mdc2_one.c', 'openssl/crypto/mdc2/mdc2dgst.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -543,6 +619,7 @@ 'openssl/crypto/modes/siv128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/objects/o_names.c', 'openssl/crypto/objects/obj_dat.c', 'openssl/crypto/objects/obj_err.c', @@ -606,6 +683,7 @@ 'openssl/crypto/rand/rand_lib.c', 'openssl/crypto/rand/rand_meth.c', 'openssl/crypto/rand/rand_pool.c', + 'openssl/crypto/rand/rand_uniform.c', 'openssl/crypto/rand/randfile.c', 'openssl/crypto/rc2/rc2_cbc.c', 'openssl/crypto/rc2/rc2_ecb.c', @@ -652,6 +730,16 @@ 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', 'openssl/crypto/siphash/siphash.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/sm2/sm2_crypt.c', 'openssl/crypto/sm2/sm2_err.c', 'openssl/crypto/sm2/sm2_key.c', @@ -669,6 +757,12 @@ 'openssl/crypto/store/store_register.c', 'openssl/crypto/store/store_result.c', 'openssl/crypto/store/store_strings.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/crypto/ts/ts_asn1.c', 'openssl/crypto/ts/ts_conf.c', 'openssl/crypto/ts/ts_err.c', @@ -697,14 +791,22 @@ 'openssl/crypto/x509/pcy_map.c', 'openssl/crypto/x509/pcy_node.c', 'openssl/crypto/x509/pcy_tree.c', + 'openssl/crypto/x509/t_acert.c', 'openssl/crypto/x509/t_crl.c', 'openssl/crypto/x509/t_req.c', 'openssl/crypto/x509/t_x509.c', + 'openssl/crypto/x509/v3_aaa.c', + 'openssl/crypto/x509/v3_ac_tgt.c', 'openssl/crypto/x509/v3_addr.c', 'openssl/crypto/x509/v3_admis.c', 'openssl/crypto/x509/v3_akeya.c', 'openssl/crypto/x509/v3_akid.c', 'openssl/crypto/x509/v3_asid.c', + 'openssl/crypto/x509/v3_attrdesc.c', + 'openssl/crypto/x509/v3_attrmap.c', + 'openssl/crypto/x509/v3_audit_id.c', + 'openssl/crypto/x509/v3_authattid.c', + 'openssl/crypto/x509/v3_battcons.c', 'openssl/crypto/x509/v3_bcons.c', 'openssl/crypto/x509/v3_bitst.c', 'openssl/crypto/x509/v3_conf.c', @@ -713,12 +815,17 @@ 'openssl/crypto/x509/v3_enum.c', 'openssl/crypto/x509/v3_extku.c', 'openssl/crypto/x509/v3_genn.c', + 'openssl/crypto/x509/v3_group_ac.c', 'openssl/crypto/x509/v3_ia5.c', + 'openssl/crypto/x509/v3_ind_iss.c', 'openssl/crypto/x509/v3_info.c', 'openssl/crypto/x509/v3_int.c', + 'openssl/crypto/x509/v3_iobo.c', 'openssl/crypto/x509/v3_ist.c', 'openssl/crypto/x509/v3_lib.c', 'openssl/crypto/x509/v3_ncons.c', + 'openssl/crypto/x509/v3_no_ass.c', + 'openssl/crypto/x509/v3_no_rev_avail.c', 'openssl/crypto/x509/v3_pci.c', 'openssl/crypto/x509/v3_pcia.c', 'openssl/crypto/x509/v3_pcons.c', @@ -726,13 +833,20 @@ 'openssl/crypto/x509/v3_pmaps.c', 'openssl/crypto/x509/v3_prn.c', 'openssl/crypto/x509/v3_purp.c', + 'openssl/crypto/x509/v3_rolespec.c', 'openssl/crypto/x509/v3_san.c', + 'openssl/crypto/x509/v3_sda.c', + 'openssl/crypto/x509/v3_single_use.c', 'openssl/crypto/x509/v3_skid.c', + 'openssl/crypto/x509/v3_soa_id.c', 'openssl/crypto/x509/v3_sxnet.c', + 'openssl/crypto/x509/v3_timespec.c', 'openssl/crypto/x509/v3_tlsf.c', + 'openssl/crypto/x509/v3_usernotice.c', 'openssl/crypto/x509/v3_utf8.c', 'openssl/crypto/x509/v3_utl.c', 'openssl/crypto/x509/v3err.c', + 'openssl/crypto/x509/x509_acert.c', 'openssl/crypto/x509/x509_att.c', 'openssl/crypto/x509/x509_cmp.c', 'openssl/crypto/x509/x509_d2.c', @@ -750,6 +864,7 @@ 'openssl/crypto/x509/x509_v3.c', 'openssl/crypto/x509/x509_vfy.c', 'openssl/crypto/x509/x509_vpm.c', + 'openssl/crypto/x509/x509aset.c', 'openssl/crypto/x509/x509cset.c', 'openssl/crypto/x509/x509name.c', 'openssl/crypto/x509/x509rset.c', @@ -759,6 +874,7 @@ 'openssl/crypto/x509/x_attrib.c', 'openssl/crypto/x509/x_crl.c', 'openssl/crypto/x509/x_exten.c', + 'openssl/crypto/x509/x_ietfatt.c', 'openssl/crypto/x509/x_name.c', 'openssl/crypto/x509/x_pubkey.c', 'openssl/crypto/x509/x_req.c', @@ -791,6 +907,9 @@ 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c', 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', @@ -815,7 +934,13 @@ 'openssl/providers/implementations/ciphers/cipher_cts.c', 'openssl/providers/implementations/ciphers/cipher_null.c', 'openssl/providers/implementations/ciphers/cipher_sm4.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm_hw.c', 'openssl/providers/implementations/ciphers/cipher_sm4_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts_hw.c', 'openssl/providers/implementations/ciphers/cipher_tdes.c', 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', 'openssl/providers/implementations/ciphers/cipher_tdes_default.c', @@ -844,11 +969,16 @@ 'openssl/providers/implementations/encode_decode/encode_key2ms.c', 'openssl/providers/implementations/encode_decode/encode_key2text.c', 'openssl/providers/implementations/encode_decode/endecoder_common.c', + 'openssl/providers/implementations/encode_decode/ml_common_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_dsa_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_kem_codecs.c', 'openssl/providers/implementations/exchange/dh_exch.c', 'openssl/providers/implementations/exchange/ecdh_exch.c', 'openssl/providers/implementations/exchange/ecx_exch.c', 'openssl/providers/implementations/exchange/kdf_exch.c', + 'openssl/providers/implementations/kdfs/argon2.c', 'openssl/providers/implementations/kdfs/hkdf.c', + 'openssl/providers/implementations/kdfs/hmacdrbg_kdf.c', 'openssl/providers/implementations/kdfs/kbkdf.c', 'openssl/providers/implementations/kdfs/krb5kdf.c', 'openssl/providers/implementations/kdfs/pbkdf2.c', @@ -859,6 +989,11 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ec_kem.c', + 'openssl/providers/implementations/kem/ecx_kem.c', + 'openssl/providers/implementations/kem/kem_util.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -866,7 +1001,11 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/blake2b_mac.c', 'openssl/providers/implementations/macs/blake2s_mac.c', 'openssl/providers/implementations/macs/cmac_prov.c', @@ -875,12 +1014,12 @@ 'openssl/providers/implementations/macs/kmac_prov.c', 'openssl/providers/implementations/macs/poly1305_prov.c', 'openssl/providers/implementations/macs/siphash_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', 'openssl/providers/implementations/rands/seed_src.c', + 'openssl/providers/implementations/rands/seed_src_jitter.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/rands/seeding/rand_cpu_x86.c', 'openssl/providers/implementations/rands/seeding/rand_tsc.c', @@ -890,17 +1029,23 @@ 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', 'openssl/providers/implementations/signature/sm2_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', 'openssl/providers/implementations/storemgmt/file_store.c', 'openssl/providers/implementations/storemgmt/file_store_any2obj.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -911,7 +1056,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/implementations/ciphers/cipher_blowfish.c', 'openssl/providers/implementations/ciphers/cipher_blowfish_hw.c', 'openssl/providers/implementations/ciphers/cipher_cast5.c', @@ -936,6 +1081,7 @@ 'openssl/providers/implementations/digests/ripemd_prov.c', 'openssl/providers/implementations/digests/wp_prov.c', 'openssl/providers/implementations/kdfs/pbkdf1.c', + 'openssl/providers/implementations/kdfs/pvkkdf.c', 'openssl/providers/prov_running.c', 'openssl/providers/legacyprov.c', ], @@ -953,6 +1099,7 @@ './config/archs/BSD-x86/asm/crypto/des/crypt586.S', './config/archs/BSD-x86/asm/crypto/des/des-586.S', './config/archs/BSD-x86/asm/crypto/ec/ecp_nistz256-x86.S', + './config/archs/BSD-x86/asm/crypto/params_idx.c', './config/archs/BSD-x86/asm/crypto/x86cpuid.S', './config/archs/BSD-x86/asm/crypto/md5/md5-586.S', './config/archs/BSD-x86/asm/crypto/modes/ghash-x86.S', @@ -969,7 +1116,9 @@ './config/archs/BSD-x86/asm/providers/common/der/der_dsa_gen.c', './config/archs/BSD-x86/asm/providers/common/der/der_ec_gen.c', './config/archs/BSD-x86/asm/providers/common/der/der_ecx_gen.c', + './config/archs/BSD-x86/asm/providers/common/der/der_ml_dsa_gen.c', './config/archs/BSD-x86/asm/providers/common/der/der_rsa_gen.c', + './config/archs/BSD-x86/asm/providers/common/der/der_slh_dsa_gen.c', './config/archs/BSD-x86/asm/providers/common/der/der_wrap_gen.c', './config/archs/BSD-x86/asm/providers/legacy.ld', './config/archs/BSD-x86/asm/providers/fips.ld', diff --git a/deps/openssl/config/archs/BSD-x86/asm/providers/common/der/der_ml_dsa_gen.c b/deps/openssl/config/archs/BSD-x86/asm/providers/common/der/der_ml_dsa_gen.c new file mode 100644 index 00000000000000..4a8a113a268578 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/asm/providers/common/der/der_ml_dsa_gen.c @@ -0,0 +1,37 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_ml_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44] = { + DER_OID_V_id_ml_dsa_44 +}; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65] = { + DER_OID_V_id_ml_dsa_65 +}; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87] = { + DER_OID_V_id_ml_dsa_87 +}; + diff --git a/deps/openssl/config/archs/BSD-x86/asm/providers/common/der/der_slh_dsa_gen.c b/deps/openssl/config/archs/BSD-x86/asm/providers/common/der/der_slh_dsa_gen.c new file mode 100644 index 00000000000000..1419a9515097dd --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/asm/providers/common/der/der_slh_dsa_gen.c @@ -0,0 +1,100 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_slh_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s] = { + DER_OID_V_id_slh_dsa_sha2_128s +}; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f] = { + DER_OID_V_id_slh_dsa_sha2_128f +}; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s] = { + DER_OID_V_id_slh_dsa_sha2_192s +}; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f] = { + DER_OID_V_id_slh_dsa_sha2_192f +}; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s] = { + DER_OID_V_id_slh_dsa_sha2_256s +}; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f] = { + DER_OID_V_id_slh_dsa_sha2_256f +}; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s] = { + DER_OID_V_id_slh_dsa_shake_128s +}; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f] = { + DER_OID_V_id_slh_dsa_shake_128f +}; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s] = { + DER_OID_V_id_slh_dsa_shake_192s +}; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f] = { + DER_OID_V_id_slh_dsa_shake_192f +}; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s] = { + DER_OID_V_id_slh_dsa_shake_256s +}; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f] = { + DER_OID_V_id_slh_dsa_shake_256f +}; + diff --git a/deps/openssl/config/archs/BSD-x86/asm/providers/common/include/prov/der_ml_dsa.h b/deps/openssl/config/archs/BSD-x86/asm/providers/common/include/prov/der_ml_dsa.h new file mode 100644 index 00000000000000..c55f780ab4527c --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/asm/providers/common/include/prov/der_ml_dsa.h @@ -0,0 +1,40 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_ml_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +#define DER_OID_V_id_ml_dsa_44 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x11 +#define DER_OID_SZ_id_ml_dsa_44 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44]; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +#define DER_OID_V_id_ml_dsa_65 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x12 +#define DER_OID_SZ_id_ml_dsa_65 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65]; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +#define DER_OID_V_id_ml_dsa_87 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x13 +#define DER_OID_SZ_id_ml_dsa_87 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87]; + + +int ossl_DER_w_algorithmIdentifier_ML_DSA(WPACKET *pkt, int tag, ML_DSA_KEY *key); diff --git a/deps/openssl/config/archs/BSD-x86/asm/providers/common/include/prov/der_slh_dsa.h b/deps/openssl/config/archs/BSD-x86/asm/providers/common/include/prov/der_slh_dsa.h new file mode 100644 index 00000000000000..760f8e7699be72 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/asm/providers/common/include/prov/der_slh_dsa.h @@ -0,0 +1,103 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_slh_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x14 +#define DER_OID_SZ_id_slh_dsa_sha2_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s]; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x15 +#define DER_OID_SZ_id_slh_dsa_sha2_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f]; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x16 +#define DER_OID_SZ_id_slh_dsa_sha2_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s]; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x17 +#define DER_OID_SZ_id_slh_dsa_sha2_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f]; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x18 +#define DER_OID_SZ_id_slh_dsa_sha2_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s]; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x19 +#define DER_OID_SZ_id_slh_dsa_sha2_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f]; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +#define DER_OID_V_id_slh_dsa_shake_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1A +#define DER_OID_SZ_id_slh_dsa_shake_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s]; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +#define DER_OID_V_id_slh_dsa_shake_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1B +#define DER_OID_SZ_id_slh_dsa_shake_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f]; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +#define DER_OID_V_id_slh_dsa_shake_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1C +#define DER_OID_SZ_id_slh_dsa_shake_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s]; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +#define DER_OID_V_id_slh_dsa_shake_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1D +#define DER_OID_SZ_id_slh_dsa_shake_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f]; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +#define DER_OID_V_id_slh_dsa_shake_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1E +#define DER_OID_SZ_id_slh_dsa_shake_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s]; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +#define DER_OID_V_id_slh_dsa_shake_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1F +#define DER_OID_SZ_id_slh_dsa_shake_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f]; + + +int ossl_DER_w_algorithmIdentifier_SLH_DSA(WPACKET *pkt, int tag, SLH_DSA_KEY *key); diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/apps/progs.c b/deps/openssl/config/archs/BSD-x86/asm_avx2/apps/progs.c index 43cef00799b86e..acc204a3e6e781 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/apps/progs.c +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/apps/progs.c @@ -89,6 +89,7 @@ FUNCTION functions[] = { {FT_general, "s_time", s_time_main, s_time_options, NULL, NULL}, #endif {FT_general, "sess_id", sess_id_main, sess_id_options, NULL, NULL}, + {FT_general, "skeyutl", skeyutl_main, skeyutl_options, NULL, NULL}, {FT_general, "smime", smime_main, smime_options, NULL, NULL}, {FT_general, "speed", speed_main, speed_options, NULL, NULL}, {FT_general, "spkac", spkac_main, spkac_options, NULL, NULL}, @@ -225,9 +226,15 @@ FUNCTION functions[] = { {FT_cipher, "camellia-256-ecb", enc_main, enc_options, NULL}, #endif {FT_cipher, "base64", enc_main, enc_options, NULL}, -#ifdef ZLIB +#ifndef OPENSSL_NO_ZLIB {FT_cipher, "zlib", enc_main, enc_options, NULL}, #endif +#ifndef OPENSSL_NO_BROTLI + {FT_cipher, "brotli", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ZSTD + {FT_cipher, "zstd", enc_main, enc_options, NULL}, +#endif #ifndef OPENSSL_NO_DES {FT_cipher, "des", enc_main, enc_options, NULL}, #endif diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm b/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm index b1de949bf4761b..260f82e60bbd7e 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm @@ -18,6 +18,7 @@ our %config = ( "ARFLAGS" => [ "qc" ], + "ASFLAGS" => [], "CC" => "../config/fake_gcc.pl", "CFLAGS" => [ "-Wall -O3 -fomit-frame-pointer" @@ -27,14 +28,16 @@ our %config = ( "CPPINCLUDES" => [], "CXXFLAGS" => [], "FIPSKEY" => "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813", + "FIPS_VENDOR" => "OpenSSL FIPS Provider", "HASHBANGPERL" => "/usr/bin/env perl", "LDFLAGS" => [], "LDLIBS" => [], + "OBJCOPY" => "objcopy", "PERL" => "/usr/bin/perl", "RANLIB" => "ranlib", "RC" => "windres", "RCFLAGS" => [], - "api" => "30000", + "api" => "30500", "b32" => "1", "b64" => "0", "b64l" => "0", @@ -56,11 +59,13 @@ our %config = ( "doc/build.info", "test/build.info", "engines/build.info", + "exporters/build.info", "crypto/objects/build.info", "crypto/buffer/build.info", "crypto/bio/build.info", "crypto/stack/build.info", "crypto/lhash/build.info", + "crypto/hashtable/build.info", "crypto/rand/build.info", "crypto/evp/build.info", "crypto/asn1/build.info", @@ -78,6 +83,7 @@ our %config = ( "crypto/md5/build.info", "crypto/sha/build.info", "crypto/mdc2/build.info", + "crypto/ml_kem/build.info", "crypto/hmac/build.info", "crypto/ripemd/build.info", "crypto/whrlpool/build.info", @@ -119,11 +125,19 @@ our %config = ( "crypto/cmp/build.info", "crypto/encode_decode/build.info", "crypto/ffc/build.info", + "crypto/hpke/build.info", + "crypto/thread/build.info", + "crypto/ml_dsa/build.info", + "crypto/slh_dsa/build.info", + "ssl/record/build.info", + "ssl/rio/build.info", + "ssl/quic/build.info", "apps/lib/build.info", "providers/common/build.info", "providers/implementations/build.info", "providers/fips/build.info", "doc/man1/build.info", + "ssl/record/methods/build.info", "providers/common/der/build.info", "providers/implementations/digests/build.info", "providers/implementations/ciphers/build.info", @@ -137,6 +151,7 @@ our %config = ( "providers/implementations/encode_decode/build.info", "providers/implementations/storemgmt/build.info", "providers/implementations/kem/build.info", + "providers/implementations/skeymgmt/build.info", "providers/implementations/rands/seeding/build.info" ], "build_metadata" => "", @@ -156,7 +171,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.17", + "full_version" => "3.5.2", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -165,36 +180,51 @@ our %config = ( "libdir" => "", "major" => "3", "makedep_scheme" => "gcc", - "minor" => "0", + "minor" => "5", "openssl_api_defines" => [ - "OPENSSL_CONFIGURED_API=30000" + "OPENSSL_CONFIGURED_API=30500" ], "openssl_feature_defines" => [ "OPENSSL_RAND_SEED_OS", "OPENSSL_THREADS", "OPENSSL_NO_AFALGENG", "OPENSSL_NO_ASAN", + "OPENSSL_NO_BROTLI", + "OPENSSL_NO_BROTLI_DYNAMIC", "OPENSSL_NO_COMP", "OPENSSL_NO_CRYPTO_MDEBUG", "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE", + "OPENSSL_NO_DEMOS", "OPENSSL_NO_EC_NISTP_64_GCC_128", "OPENSSL_NO_EGD", "OPENSSL_NO_EXTERNAL_TESTS", + "OPENSSL_NO_FIPS_JITTER", "OPENSSL_NO_FUZZ_AFL", "OPENSSL_NO_FUZZ_LIBFUZZER", + "OPENSSL_NO_H3DEMO", + "OPENSSL_NO_HQINTEROP", + "OPENSSL_NO_JITTER", "OPENSSL_NO_KTLS", "OPENSSL_NO_LOADERENG", "OPENSSL_NO_MD2", "OPENSSL_NO_MSAN", + "OPENSSL_NO_PIE", "OPENSSL_NO_RC5", "OPENSSL_NO_SCTP", "OPENSSL_NO_SSL3", "OPENSSL_NO_SSL3_METHOD", + "OPENSSL_NO_SSLKEYLOG", + "OPENSSL_NO_TFO", "OPENSSL_NO_TRACE", "OPENSSL_NO_UBSAN", "OPENSSL_NO_UNIT_TEST", "OPENSSL_NO_UPLINK", "OPENSSL_NO_WEAK_SSL_CIPHERS", + "OPENSSL_NO_WINSTORE", + "OPENSSL_NO_ZLIB", + "OPENSSL_NO_ZLIB_DYNAMIC", + "OPENSSL_NO_ZSTD", + "OPENSSL_NO_ZSTD_DYNAMIC", "OPENSSL_NO_DYNAMIC_ENGINE" ], "openssl_other_defines" => [ @@ -202,11 +232,11 @@ our %config = ( ], "openssl_sys_defines" => [], "openssldir" => "", - "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "17", + "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", + "patch" => "2", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", - "perl_version" => "5.38.2", + "perl_version" => "5.34.0", "perlargv" => [ "no-comp", "no-shared", @@ -236,6 +266,7 @@ our %config = ( "LDLIBS" => undef, "MT" => undef, "MTFLAGS" => undef, + "OBJCOPY" => undef, "OPENSSL_LOCAL_CONFIG_DIR" => undef, "PERL" => undef, "RANLIB" => undef, @@ -255,11 +286,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "1 Jul 2025", + "release_date" => "5 Aug 2025", "shlib_version" => "3", "sourcedir" => ".", "target" => "BSD-x86", - "version" => "3.0.17" + "version" => "3.5.2" ); our %target = ( "AR" => "ar", @@ -267,6 +298,7 @@ our %target = ( "CC" => "cc", "CFLAGS" => "-Wall -O3 -fomit-frame-pointer", "HASHBANGPERL" => "/usr/bin/env perl", + "OBJCOPY" => "objcopy", "RANLIB" => "ranlib", "RC" => "windres", "_conf_fname_int" => [ @@ -277,6 +309,8 @@ our %target = ( "Configurations/shared-info.pl" ], "asm_arch" => "x86", + "bin_cflags" => "", + "bin_lflags" => "", "bn_ops" => "BN_LLONG", "build_file" => "Makefile", "build_scheme" => [ @@ -320,6 +354,8 @@ our %target = ( our @disablables = ( "acvp-tests", "afalgeng", + "apps", + "argon2", "aria", "asan", "asm", @@ -330,11 +366,14 @@ our @disablables = ( "autoload-config", "bf", "blake2", + "brotli", + "brotli-dynamic", "buildtest-c++", "bulk", "cached-fetch", "camellia", "capieng", + "winstore", "cast", "chacha", "cmac", @@ -343,11 +382,16 @@ our @disablables = ( "comp", "crypto-mdebug", "ct", + "default-thread-pool", + "demos", + "h3demo", + "hqinterop", "deprecated", "des", "devcryptoeng", "dgram", "dh", + "docs", "dsa", "dso", "dtls", @@ -357,6 +401,7 @@ our @disablables = ( "ec_nistp_64_gcc_128", "ecdh", "ecdsa", + "ecx", "egd", "engine", "err", @@ -364,10 +409,15 @@ our @disablables = ( "filenames", "fips", "fips-securitychecks", + "fips-post", + "fips-jitter", "fuzz-afl", "fuzz-libfuzzer", "gost", + "http", "idea", + "integrity-only-ciphers", + "jitter", "ktls", "legacy", "loadereng", @@ -375,6 +425,8 @@ our @disablables = ( "md2", "md4", "mdc2", + "ml-dsa", + "ml-kem", "module", "msan", "multiblock", @@ -383,10 +435,13 @@ our @disablables = ( "ocsp", "padlockeng", "pic", + "pie", "pinshared", "poly1305", "posix-io", "psk", + "quic", + "unstable-qlog", "rc2", "rc4", "rc5", @@ -400,7 +455,9 @@ our @disablables = ( "shared", "siphash", "siv", + "slh-dsa", "sm2", + "sm2-precomp", "sm3", "sm4", "sock", @@ -411,9 +468,13 @@ our @disablables = ( "ssl-trace", "static-engine", "stdio", + "sslkeylog", "tests", + "tfo", + "thread-pool", "threads", "tls", + "tls-deprecated-ec", "trace", "ts", "ubsan", @@ -424,6 +485,8 @@ our @disablables = ( "whirlpool", "zlib", "zlib-dynamic", + "zstd", + "zstd-dynamic", "ssl3", "ssl3-method", "tls1", @@ -444,32 +507,45 @@ our @disablables_int = ( our %disabled = ( "afalgeng" => "option", "asan" => "default", + "brotli" => "default", + "brotli-dynamic" => "default", "buildtest-c++" => "default", "comp" => "option", "crypto-mdebug" => "default", "crypto-mdebug-backtrace" => "default", + "demos" => "default", "dynamic-engine" => "cascade", "ec_nistp_64_gcc_128" => "default", "egd" => "default", "external-tests" => "default", + "fips-jitter" => "default", "fuzz-afl" => "default", "fuzz-libfuzzer" => "default", + "h3demo" => "default", + "hqinterop" => "default", + "jitter" => "default", "ktls" => "default", "loadereng" => "cascade", "md2" => "default", "msan" => "default", + "pie" => "default", "rc5" => "default", "sctp" => "default", "shared" => "option", "ssl3" => "default", "ssl3-method" => "default", + "sslkeylog" => "default", + "tfo" => "default", "trace" => "default", "ubsan" => "default", "unit-test" => "default", "uplink" => "no uplink_arch", "weak-ssl-ciphers" => "default", + "winstore" => "not-windows", "zlib" => "default", - "zlib-dynamic" => "default" + "zlib-dynamic" => "default", + "zstd" => "default", + "zstd-dynamic" => "default" ); our %withargs = (); our %unified_info = ( @@ -695,6 +771,11 @@ our %unified_info = ( "pod" => "1" } }, + "doc/man1/openssl-skeyutl.pod" => { + "doc/man1/openssl-skeyutl.pod.in" => { + "pod" => "1" + } + }, "doc/man1/openssl-smime.pod" => { "doc/man1/openssl-smime.pod.in" => { "pod" => "1" @@ -752,6 +833,21 @@ our %unified_info = ( } }, "generate" => { + "exporters/OpenSSLConfig.cmake" => { + "exporter" => "cmake" + }, + "exporters/OpenSSLConfigVersion.cmake" => { + "exporter" => "cmake" + }, + "exporters/libcrypto.pc" => { + "exporter" => "pkg-config" + }, + "exporters/libssl.pc" => { + "exporter" => "pkg-config" + }, + "exporters/openssl.pc" => { + "exporter" => "pkg-config" + }, "include/openssl/configuration.h" => { "skip" => "1" } @@ -772,6 +868,9 @@ our %unified_info = ( "providers/liblegacy.a" => { "noinst" => "1" }, + "providers/libtemplate.a" => { + "noinst" => "1" + }, "test/libtestutil.a" => { "has_main" => "1", "noinst" => "1" @@ -789,6 +888,9 @@ our %unified_info = ( } }, "programs" => { + "fuzz/acert-test" => { + "noinst" => "1" + }, "fuzz/asn1-test" => { "noinst" => "1" }, @@ -819,9 +921,60 @@ our %unified_info = ( "fuzz/ct-test" => { "noinst" => "1" }, + "fuzz/decoder-test" => { + "noinst" => "1" + }, + "fuzz/dtlsclient-test" => { + "noinst" => "1" + }, + "fuzz/dtlsserver-test" => { + "noinst" => "1" + }, + "fuzz/hashtable-test" => { + "noinst" => "1" + }, + "fuzz/ml-dsa-test" => { + "noinst" => "1" + }, + "fuzz/ml-kem-test" => { + "noinst" => "1" + }, + "fuzz/pem-test" => { + "noinst" => "1" + }, + "fuzz/provider-test" => { + "noinst" => "1" + }, + "fuzz/punycode-test" => { + "noinst" => "1" + }, + "fuzz/quic-client-test" => { + "noinst" => "1" + }, + "fuzz/quic-lcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-rcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-server-test" => { + "noinst" => "1" + }, + "fuzz/quic-srtm-test" => { + "noinst" => "1" + }, "fuzz/server-test" => { "noinst" => "1" }, + "fuzz/slh-dsa-test" => { + "noinst" => "1" + }, + "fuzz/smime-test" => { + "noinst" => "1" + }, + "fuzz/v3name-test" => { + "noinst" => "1" + }, "fuzz/x509-test" => { "noinst" => "1" }, @@ -873,18 +1026,30 @@ our %unified_info = ( "test/bftest" => { "noinst" => "1" }, + "test/bio_addr_test" => { + "noinst" => "1" + }, + "test/bio_base64_test" => { + "noinst" => "1" + }, "test/bio_callback_test" => { "noinst" => "1" }, "test/bio_core_test" => { "noinst" => "1" }, + "test/bio_dgram_test" => { + "noinst" => "1" + }, "test/bio_enc_test" => { "noinst" => "1" }, "test/bio_memleak_test" => { "noinst" => "1" }, + "test/bio_meth_test" => { + "noinst" => "1" + }, "test/bio_prefix_text" => { "noinst" => "1" }, @@ -894,6 +1059,9 @@ our %unified_info = ( "test/bio_readbuffer_test" => { "noinst" => "1" }, + "test/bio_tfo_test" => { + "noinst" => "1" + }, "test/bioprinttest" => { "noinst" => "1" }, @@ -903,6 +1071,9 @@ our %unified_info = ( "test/bntest" => { "noinst" => "1" }, + "test/build_wincrypt_test" => { + "noinst" => "1" + }, "test/buildtest_c_aes" => { "noinst" => "1" }, @@ -918,6 +1089,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => { "noinst" => "1" }, + "test/buildtest_c_byteorder" => { + "noinst" => "1" + }, "test/buildtest_c_camellia" => { "noinst" => "1" }, @@ -942,9 +1116,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => { "noinst" => "1" }, - "test/buildtest_c_core_names" => { - "noinst" => "1" - }, "test/buildtest_c_core_object" => { "noinst" => "1" }, @@ -969,6 +1140,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => { "noinst" => "1" }, + "test/buildtest_c_e_ostime" => { + "noinst" => "1" + }, "test/buildtest_c_ebcdic" => { "noinst" => "1" }, @@ -996,12 +1170,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => { "noinst" => "1" }, + "test/buildtest_c_hpke" => { + "noinst" => "1" + }, "test/buildtest_c_http" => { "noinst" => "1" }, "test/buildtest_c_idea" => { "noinst" => "1" }, + "test/buildtest_c_indicator" => { + "noinst" => "1" + }, "test/buildtest_c_kdf" => { "noinst" => "1" }, @@ -1017,6 +1197,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => { "noinst" => "1" }, + "test/buildtest_c_ml_kem" => { + "noinst" => "1" + }, "test/buildtest_c_modes" => { "noinst" => "1" }, @@ -1047,6 +1230,9 @@ our %unified_info = ( "test/buildtest_c_provider" => { "noinst" => "1" }, + "test/buildtest_c_quic" => { + "noinst" => "1" + }, "test/buildtest_c_rand" => { "noinst" => "1" }, @@ -1089,6 +1275,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => { "noinst" => "1" }, + "test/buildtest_c_thread" => { + "noinst" => "1" + }, "test/buildtest_c_tls1" => { "noinst" => "1" }, @@ -1104,6 +1293,12 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => { "noinst" => "1" }, + "test/byteorder_test" => { + "noinst" => "1" + }, + "test/ca_internals_test" => { + "noinst" => "1" + }, "test/casttest" => { "noinst" => "1" }, @@ -1188,6 +1383,9 @@ our %unified_info = ( "test/danetest" => { "noinst" => "1" }, + "test/decoder_propq_test" => { + "noinst" => "1" + }, "test/defltfips_test" => { "noinst" => "1" }, @@ -1260,15 +1458,24 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => { "noinst" => "1" }, + "test/evp_pkey_dhkem_test" => { + "noinst" => "1" + }, "test/evp_pkey_dparams_test" => { "noinst" => "1" }, "test/evp_pkey_provided_test" => { "noinst" => "1" }, + "test/evp_skey_test" => { + "noinst" => "1" + }, "test/evp_test" => { "noinst" => "1" }, + "test/evp_xof_test" => { + "noinst" => "1" + }, "test/exdatatest" => { "noinst" => "1" }, @@ -1296,6 +1503,9 @@ our %unified_info = ( "test/hmactest" => { "noinst" => "1" }, + "test/hpke_test" => { + "noinst" => "1" + }, "test/http_test" => { "noinst" => "1" }, @@ -1305,12 +1515,18 @@ our %unified_info = ( "test/igetest" => { "noinst" => "1" }, + "test/json_test" => { + "noinst" => "1" + }, "test/keymgmt_internal_test" => { "noinst" => "1" }, "test/lhash_test" => { "noinst" => "1" }, + "test/list_test" => { + "noinst" => "1" + }, "test/localetest" => { "noinst" => "1" }, @@ -1320,9 +1536,21 @@ our %unified_info = ( "test/mdc2test" => { "noinst" => "1" }, + "test/membio_test" => { + "noinst" => "1" + }, "test/memleaktest" => { "noinst" => "1" }, + "test/ml_dsa_test" => { + "noinst" => "1" + }, + "test/ml_kem_evp_extra_test" => { + "noinst" => "1" + }, + "test/ml_kem_internal_test" => { + "noinst" => "1" + }, "test/modes_internal_test" => { "noinst" => "1" }, @@ -1341,6 +1569,9 @@ our %unified_info = ( "test/packettest" => { "noinst" => "1" }, + "test/pairwise_fail_test" => { + "noinst" => "1" + }, "test/param_build_test" => { "noinst" => "1" }, @@ -1365,6 +1596,9 @@ our %unified_info = ( "test/pemtest" => { "noinst" => "1" }, + "test/pkcs12_api_test" => { + "noinst" => "1" + }, "test/pkcs12_format_test" => { "noinst" => "1" }, @@ -1380,6 +1614,9 @@ our %unified_info = ( "test/poly1305_internal_test" => { "noinst" => "1" }, + "test/priority_queue_test" => { + "noinst" => "1" + }, "test/property_test" => { "noinst" => "1" }, @@ -1389,6 +1626,9 @@ our %unified_info = ( "test/provfetchtest" => { "noinst" => "1" }, + "test/provider_default_search_path_test" => { + "noinst" => "1" + }, "test/provider_fallback_test" => { "noinst" => "1" }, @@ -1407,6 +1647,72 @@ our %unified_info = ( "test/punycode_test" => { "noinst" => "1" }, + "test/quic_ackm_test" => { + "noinst" => "1" + }, + "test/quic_cc_test" => { + "noinst" => "1" + }, + "test/quic_cfq_test" => { + "noinst" => "1" + }, + "test/quic_client_test" => { + "noinst" => "1" + }, + "test/quic_fc_test" => { + "noinst" => "1" + }, + "test/quic_fifd_test" => { + "noinst" => "1" + }, + "test/quic_lcidm_test" => { + "noinst" => "1" + }, + "test/quic_multistream_test" => { + "noinst" => "1" + }, + "test/quic_newcid_test" => { + "noinst" => "1" + }, + "test/quic_qlog_test" => { + "noinst" => "1" + }, + "test/quic_radix_test" => { + "noinst" => "1" + }, + "test/quic_rcidm_test" => { + "noinst" => "1" + }, + "test/quic_record_test" => { + "noinst" => "1" + }, + "test/quic_srt_gen_test" => { + "noinst" => "1" + }, + "test/quic_srtm_test" => { + "noinst" => "1" + }, + "test/quic_stream_test" => { + "noinst" => "1" + }, + "test/quic_tserver_test" => { + "noinst" => "1" + }, + "test/quic_txp_test" => { + "noinst" => "1" + }, + "test/quic_txpim_test" => { + "noinst" => "1" + }, + "test/quic_wire_test" => { + "noinst" => "1" + }, + "test/quicapitest" => { + "noinst" => "1" + }, + "test/quicfaultstest" => { + "noinst" => "1" + }, "test/rand_status_test" => { "noinst" => "1" }, @@ -1422,12 +1728,15 @@ our %unified_info = ( "test/rc5test" => { "noinst" => "1" }, - "test/rdrand_sanitytest" => { + "test/rdcpu_sanitytest" => { "noinst" => "1" }, "test/recordlentest" => { "noinst" => "1" }, + "test/rpktest" => { + "noinst" => "1" + }, "test/rsa_complex" => { "noinst" => "1" }, @@ -1440,6 +1749,12 @@ our %unified_info = ( "test/rsa_test" => { "noinst" => "1" }, + "test/rsa_x931_test" => { + "noinst" => "1" + }, + "test/safe_math_test" => { + "noinst" => "1" + }, "test/sanitytest" => { "noinst" => "1" }, @@ -1455,6 +1770,9 @@ our %unified_info = ( "test/siphash_internal_test" => { "noinst" => "1" }, + "test/slh_dsa_test" => { + "noinst" => "1" + }, "test/sm2_internal_test" => { "noinst" => "1" }, @@ -1476,6 +1794,9 @@ our %unified_info = ( "test/ssl_ctx_test" => { "noinst" => "1" }, + "test/ssl_handshake_rtt_test" => { + "noinst" => "1" + }, "test/ssl_old_test" => { "noinst" => "1" }, @@ -1497,12 +1818,18 @@ our %unified_info = ( "test/stack_test" => { "noinst" => "1" }, + "test/strtoultest" => { + "noinst" => "1" + }, "test/sysdefaulttest" => { "noinst" => "1" }, "test/test_test" => { "noinst" => "1" }, + "test/threadpool_test" => { + "noinst" => "1" + }, "test/threadstest" => { "noinst" => "1" }, @@ -1512,12 +1839,18 @@ our %unified_info = ( "test/time_offset_test" => { "noinst" => "1" }, + "test/time_test" => { + "noinst" => "1" + }, "test/tls13ccstest" => { "noinst" => "1" }, "test/tls13encryptiontest" => { "noinst" => "1" }, + "test/tls13groupselection_test" => { + "noinst" => "1" + }, "test/trace_api_test" => { "noinst" => "1" }, @@ -1545,6 +1878,9 @@ our %unified_info = ( "test/wpackettest" => { "noinst" => "1" }, + "test/x509_acert_test" => { + "noinst" => "1" + }, "test/x509_check_cert_pkey_test" => { "noinst" => "1" }, @@ -1554,6 +1890,15 @@ our %unified_info = ( "test/x509_internal_test" => { "noinst" => "1" }, + "test/x509_load_cert_file_test" => { + "noinst" => "1" + }, + "test/x509_req_test" => { + "noinst" => "1" + }, + "test/x509_test" => { + "noinst" => "1" + }, "test/x509_time_test" => { "noinst" => "1" }, @@ -1656,6 +2001,9 @@ our %unified_info = ( "MD5_ASM", "RC4_ASM" ], + "test/endecode_test" => [ + "STATIC_LEGACY" + ], "test/evp_extra_test" => [ "STATIC_LEGACY" ], @@ -1668,14 +2016,21 @@ our %unified_info = ( }, "depends" => { "" => [ + "OpenSSLConfigVersion.cmake", + "crypto/params_idx.c", + "exporters/OpenSSLConfigVersion.cmake", + "exporters/openssl.pc", "include/crypto/bn_conf.h", "include/crypto/dso_conf.h", + "include/internal/param_names.h", "include/openssl/asn1.h", "include/openssl/asn1t.h", "include/openssl/bio.h", "include/openssl/cmp.h", "include/openssl/cms.h", + "include/openssl/comp.h", "include/openssl/conf.h", + "include/openssl/core_names.h", "include/openssl/crmf.h", "include/openssl/crypto.h", "include/openssl/ct.h", @@ -1692,10 +2047,22 @@ our %unified_info = ( "include/openssl/ssl.h", "include/openssl/ui.h", "include/openssl/x509.h", + "include/openssl/x509_acert.h", "include/openssl/x509_vfy.h", "include/openssl/x509v3.h", + "openssl.pc", "test/provider_internal_test.cnf" ], + "OpenSSLConfig.cmake" => [ + "builddata.pm" + ], + "OpenSSLConfigVersion.cmake" => [ + "OpenSSLConfig.cmake", + "builddata.pm" + ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/progs.h" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/progs.h" ], @@ -1841,6 +2208,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/progs.h" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/progs.h" + ], "apps/openssl-bin-smime.o" => [ "apps/progs.h" ], @@ -1929,6 +2299,9 @@ our %unified_info = ( "crypto/libcrypto-lib-info.o" => [ "crypto/buildinf.h" ], + "crypto/params_idx.c" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "crypto/rc4/rc4-586.S" => [ "crypto/perlasm/x86asm.pl" ], @@ -2094,6 +2467,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -2235,6 +2611,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -2271,6 +2650,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -2286,6 +2668,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -2358,6 +2743,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -2424,6 +2812,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -2523,6 +2914,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -2661,6 +3058,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -2778,6 +3178,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -2865,6 +3271,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -2937,9 +3346,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -2955,12 +3370,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -3030,9 +3451,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -3042,12 +3472,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -3063,9 +3505,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -3090,6 +3538,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -3105,6 +3556,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -3141,6 +3595,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -3414,6 +3871,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -3453,6 +3913,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -3474,6 +3937,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -3588,6 +4054,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -3615,9 +4084,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -3633,6 +4114,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -3642,12 +4126,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -3666,12 +4156,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -3681,9 +4183,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -3696,9 +4204,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -3714,24 +4234,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -3744,6 +4285,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -3753,8 +4300,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -3774,6 +4321,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -3822,6 +4384,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -3888,6 +4453,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -4011,9 +4579,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -4029,6 +4603,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -4053,9 +4630,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -4089,6 +4675,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -4146,15 +4735,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -4164,6 +4765,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -4185,9 +4789,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -4203,6 +4813,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -4215,9 +4828,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -4248,9 +4858,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -4266,12 +4873,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -4326,6 +4987,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -4335,9 +4999,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -4485,6 +5146,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -4626,6 +5290,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -4662,6 +5329,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -4677,6 +5347,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -4749,6 +5422,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -4815,6 +5491,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -4914,6 +5593,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -5052,6 +5737,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -5169,6 +5857,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -5256,6 +5950,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -5328,9 +6025,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -5346,12 +6049,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -5421,9 +6130,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -5433,12 +6151,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -5454,9 +6184,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -5481,6 +6217,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -5496,6 +6235,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -5532,6 +6274,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -5805,6 +6550,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -5844,6 +6592,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -5865,6 +6616,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -5979,6 +6733,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -6006,9 +6763,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -6024,6 +6793,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -6033,12 +6805,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -6057,12 +6835,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -6072,9 +6862,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -6087,9 +6883,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -6105,24 +6913,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -6135,6 +6964,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -6144,8 +6979,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -6165,6 +7000,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -6213,6 +7063,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -6279,6 +7132,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -6402,9 +7258,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -6420,6 +7282,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -6444,9 +7309,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -6480,6 +7354,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -6537,15 +7414,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -6555,6 +7444,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -6576,9 +7468,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -6594,6 +7492,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -6606,9 +7507,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -6639,9 +7537,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -6657,12 +7552,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -6717,6 +7666,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -6726,9 +7678,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -6908,6 +7857,10 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod.in", "doc/perlvars.pm" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in", + "doc/perlvars.pm" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in", "doc/perlvars.pm" @@ -6947,6 +7900,27 @@ our %unified_info = ( "doc/man7/openssl_user_macros.pod" => [ "doc/man7/openssl_user_macros.pod.in" ], + "exporters/OpenSSLConfig.cmake" => [ + "installdata.pm" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/OpenSSLConfig.cmake", + "installdata.pm" + ], + "exporters/libcrypto.pc" => [ + "installdata.pm" + ], + "exporters/libssl.pc" => [ + "installdata.pm" + ], + "exporters/openssl.pc" => [ + "exporters/libcrypto.pc", + "exporters/libssl.pc", + "installdata.pm" + ], + "fuzz/acert-test" => [ + "libcrypto" + ], "fuzz/asn1-test" => [ "libcrypto", "libssl" @@ -6979,17 +7953,85 @@ our %unified_info = ( "fuzz/ct-test" => [ "libcrypto" ], + "fuzz/decoder-test" => [ + "libcrypto" + ], + "fuzz/dtlsclient-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/dtlsserver-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/hashtable-test" => [ + "libcrypto.a" + ], + "fuzz/ml-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/ml-kem-test" => [ + "libcrypto.a" + ], + "fuzz/pem-test" => [ + "libcrypto.a" + ], + "fuzz/provider-test" => [ + "libcrypto" + ], + "fuzz/punycode-test" => [ + "libcrypto.a" + ], + "fuzz/quic-client-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-lcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-rcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-server-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-srtm-test" => [ + "libcrypto.a", + "libssl.a" + ], "fuzz/server-test" => [ "libcrypto", "libssl" ], + "fuzz/slh-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/smime-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/v3name-test" => [ + "libcrypto.a" + ], "fuzz/x509-test" => [ "libcrypto" ], + "include/internal/param_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], + "include/openssl/core_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "libcrypto.ld" => [ "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libcrypto.pc" => [ + "builddata.pm" + ], "libssl" => [ "libcrypto" ], @@ -6997,6 +8039,14 @@ our %unified_info = ( "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libssl.pc" => [ + "builddata.pm" + ], + "openssl.pc" => [ + "builddata.pm", + "libcrypto.pc", + "libssl.pc" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/DIGESTS.asn1", "providers/common/der/NIST.asn1", @@ -7014,11 +8064,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7058,6 +8116,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov/der_rsa.h" ], @@ -7065,6 +8129,12 @@ our %unified_info = ( "providers/common/include/prov/der_digests.h", "providers/common/include/prov/der_rsa.h" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov/der_wrap.h" ], @@ -7104,11 +8174,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7141,9 +8219,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov/der_sm2.h" ], @@ -7156,9 +8240,15 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/legacy" => [ "libcrypto", "providers/liblegacy.a" @@ -7236,6 +8326,14 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_addr_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/bio_base64_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_callback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7244,6 +8342,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_dgram_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_enc_test" => [ "libcrypto", "test/libtestutil.a" @@ -7252,6 +8354,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_meth_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_prefix_text" => [ "libcrypto", "test/libtestutil.a" @@ -7264,6 +8370,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_tfo_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bioprinttest" => [ "libcrypto", "test/libtestutil.a" @@ -7276,6 +8386,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/build_wincrypt_test" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_aes" => [ "libcrypto", "libssl" @@ -7296,6 +8410,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_byteorder" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_camellia" => [ "libcrypto", "libssl" @@ -7328,10 +8446,6 @@ our %unified_info = ( "libcrypto", "libssl" ], - "test/buildtest_c_core_names" => [ - "libcrypto", - "libssl" - ], "test/buildtest_c_core_object" => [ "libcrypto", "libssl" @@ -7364,6 +8478,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_e_ostime" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_ebcdic" => [ "libcrypto", "libssl" @@ -7400,6 +8518,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_hpke" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_http" => [ "libcrypto", "libssl" @@ -7408,6 +8530,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_indicator" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_kdf" => [ "libcrypto", "libssl" @@ -7428,6 +8554,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_ml_kem" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_modes" => [ "libcrypto", "libssl" @@ -7468,6 +8598,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_quic" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_rand" => [ "libcrypto", "libssl" @@ -7524,6 +8658,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_thread" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_tls1" => [ "libcrypto", "libssl" @@ -7544,10 +8682,23 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/byteorder_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ca_internals_test" => [ + "libssl", + "test/libtestutil.a" + ], "test/casttest" => [ "libcrypto", "test/libtestutil.a" ], + "test/cert_comp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/chacha_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7661,7 +8812,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], - "test/defltfips_test" => [ + "test/decoder_propq_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/defltfips_test" => [ "libcrypto", "test/libtestutil.a" ], @@ -7717,6 +8872,8 @@ our %unified_info = ( ], "test/endecode_test" => [ "libcrypto.a", + "providers/libcommon.a", + "providers/liblegacy.a", "test/libtestutil.a" ], "test/endecoder_legacy_test" => [ @@ -7760,6 +8917,10 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => [ "libcrypto" ], + "test/evp_pkey_dhkem_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/evp_pkey_dparams_test" => [ "libcrypto", "test/libtestutil.a" @@ -7768,10 +8929,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/evp_skey_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/evp_xof_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/exdatatest" => [ "libcrypto", "test/libtestutil.a" @@ -7810,6 +8979,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/hpke_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/http_test" => [ "libcrypto", "test/libtestutil.a" @@ -7822,17 +8995,25 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/json_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/keymgmt_internal_test" => [ "libcrypto.a", "test/libtestutil.a" ], "test/lhash_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/libtestutil.a" => [ "libcrypto" ], + "test/list_test" => [ + "test/libtestutil.a" + ], "test/localetest" => [ "libcrypto", "test/libtestutil.a" @@ -7845,10 +9026,26 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/membio_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/memleaktest" => [ "libcrypto", "test/libtestutil.a" ], + "test/ml_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_evp_extra_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_internal_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/modes_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7873,6 +9070,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pairwise_fail_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/param_build_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7905,6 +9106,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pkcs12_api_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/pkcs12_format_test" => [ "libcrypto", "test/libtestutil.a" @@ -7925,6 +9130,11 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/priority_queue_test" => [ + "libcrypto", + "libssl.a", + "test/libtestutil.a" + ], "test/property_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7937,6 +9147,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/provider_default_search_path_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/provider_fallback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7961,12 +9175,122 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/quic_ackm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cfq_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_client_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fifd_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_lcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_multistream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_newcid_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_qlog_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_radix_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_rcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_record_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srt_gen_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srtm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_stream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_tserver_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txpim_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_wire_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicapitest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicfaultstest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/rand_status_test" => [ "libcrypto", "test/libtestutil.a" ], "test/rand_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/rc2test" => [ @@ -7981,7 +9305,7 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "libcrypto.a", "test/libtestutil.a" ], @@ -7990,6 +9314,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/rpktest" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/rsa_mp_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8002,10 +9331,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/sanitytest" => [ + "test/rsa_x931_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/safe_math_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/sanitytest" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/secmemtest" => [ "libcrypto", "test/libtestutil.a" @@ -8023,6 +9360,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/slh_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/sm2_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8052,6 +9393,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/ssl_handshake_rtt_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/ssl_old_test" => [ "libcrypto.a", "libssl.a", @@ -8068,8 +9414,8 @@ our %unified_info = ( "test/libtestutil.a" ], "test/sslapitest" => [ - "libcrypto", - "libssl", + "libcrypto.a", + "libssl.a", "test/libtestutil.a" ], "test/sslbuffertest" => [ @@ -8086,6 +9432,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/strtoultest" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/sysdefaulttest" => [ "libcrypto", "libssl", @@ -8095,8 +9445,12 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/threadpool_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/threadstest" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/threadstest_fips" => [ @@ -8107,6 +9461,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/time_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/tls13ccstest" => [ "libcrypto", "libssl", @@ -8117,6 +9475,11 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/tls13groupselection_test" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/trace_api_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8154,6 +9517,10 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/x509_acert_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_check_cert_pkey_test" => [ "libcrypto", "test/libtestutil.a" @@ -8166,6 +9533,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/x509_load_cert_file_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_req_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_time_test" => [ "libcrypto", "test/libtestutil.a" @@ -8180,9 +9559,13 @@ our %unified_info = ( }, "dirinfo" => { "apps" => { + "deps" => [ + "apps/ca_internals_test-bin-ca.o" + ], "products" => { "bin" => [ - "apps/openssl" + "apps/openssl", + "test/ca_internals_test" ], "script" => [ "apps/CA.pl", @@ -8193,6 +9576,14 @@ our %unified_info = ( "apps/lib" => { "deps" => [ "apps/lib/openssl-bin-cmp_mock_srv.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", "apps/lib/cmp_client_test-bin-cmp_mock_srv.o", "apps/lib/uitest-bin-apps_ui.o", "apps/lib/libapps-lib-app_libctx.o", @@ -8201,12 +9592,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -8217,6 +9610,7 @@ our %unified_info = ( "products" => { "bin" => [ "apps/openssl", + "test/ca_internals_test", "test/cmp_client_test", "test/uitest" ], @@ -8228,8 +9622,12 @@ our %unified_info = ( }, "crypto" => { "deps" => [ + "crypto/asn1_time_test-bin-ctype.o", + "crypto/ca_internals_test-bin-ctype.o", + "crypto/packettest-bin-quic_vlint.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -8239,10 +9637,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -8259,6 +9660,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -8266,12 +9668,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libcrypto-lib-x86cpuid.o", @@ -8294,6 +9700,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -8302,9 +9709,15 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", "crypto/libfips-lib-x86cpuid.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test", + "test/packettest" + ], "lib" => [ "libcrypto", "providers/libfips.a" @@ -8347,6 +9760,8 @@ our %unified_info = ( }, "crypto/asn1" => { "deps" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", "crypto/asn1/libcrypto-lib-a_bitstr.o", "crypto/asn1/libcrypto-lib-a_d2i_fp.o", "crypto/asn1/libcrypto-lib-a_digest.o", @@ -8413,6 +9828,10 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test" + ], "lib" => [ "libcrypto" ] @@ -8478,6 +9897,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -8638,6 +10058,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -9009,7 +10430,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", - "crypto/err/libcrypto-lib-err_prn.o" + "crypto/err/libcrypto-lib-err_mark.o", + "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o" ], "products" => { "lib" => [ @@ -9110,7 +10533,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/evp/libfips-lib-asymcipher.o", "crypto/evp/libfips-lib-dh_support.o", "crypto/evp/libfips-lib-digest.o", @@ -9126,14 +10551,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", - "crypto/evp/libfips-lib-signature.o" + "crypto/evp/libfips-lib-s_lib.o", + "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o" ], "products" => { "lib" => [ @@ -9166,6 +10592,20 @@ our %unified_info = ( ] } }, + "crypto/hashtable" => { + "deps" => [ + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/hmac" => { "deps" => [ "crypto/hmac/libcrypto-lib-hmac.o", @@ -9178,6 +10618,17 @@ our %unified_info = ( ] } }, + "crypto/hpke" => { + "deps" => [ + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, "crypto/http" => { "deps" => [ "crypto/http/libcrypto-lib-http_client.o", @@ -9262,6 +10713,44 @@ our %unified_info = ( ] } }, + "crypto/ml_dsa" => { + "deps" => [ + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ml_kem" => { + "deps" => [ + "crypto/ml_kem/libcrypto-lib-ml_kem.o", + "crypto/ml_kem/libfips-lib-ml_kem.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/modes" => { "deps" => [ "crypto/modes/libcrypto-lib-cbc128.o", @@ -9276,6 +10765,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -9284,7 +10774,8 @@ our %unified_info = ( "crypto/modes/libfips-lib-ghash-x86.o", "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", - "crypto/modes/libfips-lib-xts128.o" + "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o" ], "products" => { "lib" => [ @@ -9428,6 +10919,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rand/libfips-lib-rand_lib.o" ], @@ -9578,6 +11070,36 @@ our %unified_info = ( ] } }, + "crypto/slh_dsa" => { + "deps" => [ + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/sm2" => { "deps" => [ "crypto/sm2/libcrypto-lib-sm2_crypt.o", @@ -9651,6 +11173,38 @@ our %unified_info = ( ] } }, + "crypto/thread" => { + "deps" => [ + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/thread/arch" => { + "deps" => [ + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/ts" => { "deps" => [ "crypto/ts/libcrypto-lib-ts_asn1.o", @@ -9718,14 +11272,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -9734,12 +11296,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -9747,13 +11314,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -9771,6 +11345,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -9780,6 +11355,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -9808,6 +11384,7 @@ our %unified_info = ( "fuzz" => { "products" => { "bin" => [ + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -9818,13 +11395,31 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test" ] } }, "providers" => { "deps" => [ + "providers/endecode_test-bin-legacyprov.o", "providers/evp_extra_test-bin-legacyprov.o", "providers/libcrypto-lib-baseprov.o", "providers/libcrypto-lib-defltprov.o", @@ -9834,6 +11429,7 @@ our %unified_info = ( ], "products" => { "bin" => [ + "test/endecode_test", "test/evp_extra_test" ], "dso" => [ @@ -9885,8 +11481,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/der/libdefault-lib-der_rsa_sig.o", "providers/common/der/libdefault-lib-der_sm2_gen.o", @@ -9905,6 +11505,7 @@ our %unified_info = ( "providers/fips" => { "deps" => [ "providers/fips/fips-dso-fips_entry.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o" @@ -9948,6 +11549,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -9972,7 +11576,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -10069,7 +11679,10 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", - "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" + "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" ], "products" => { "lib" => [ @@ -10097,7 +11710,9 @@ our %unified_info = ( }, "providers/implementations/kdfs" => { "deps" => [ + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -10116,7 +11731,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", - "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" + "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" ], "products" => { "lib" => [ @@ -10128,13 +11744,22 @@ our %unified_info = ( }, "providers/implementations/kem" => { "deps" => [ + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", - "providers/implementations/kem/libfips-lib-rsa_kem.o" + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", + "providers/implementations/kem/libfips-lib-rsa_kem.o", + "providers/implementations/kem/libtemplate-lib-template_kem.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10146,19 +11771,29 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", - "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10186,18 +11821,18 @@ our %unified_info = ( }, "providers/implementations/rands" => { "deps" => [ - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o" ], "products" => { @@ -10226,13 +11861,31 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", - "providers/implementations/signature/libfips-lib-rsa_sig.o" + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", + "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/skeymgmt" => { + "deps" => [ + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o" ], "products" => { "lib" => [ @@ -10260,14 +11913,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -10283,32 +11937,107 @@ our %unified_info = ( "ssl/libssl-lib-t1_trce.o", "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", - "ssl/libssl-lib-tls_srp.o", - "ssl/libdefault-lib-s3_cbc.o", - "ssl/libfips-lib-s3_cbc.o" + "ssl/libssl-lib-tls_srp.o" ], "products" => { "lib" => [ - "libssl", - "providers/libdefault.a", - "providers/libfips.a" + "libssl" + ] + } + }, + "ssl/quic" => { + "deps" => [ + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, "ssl/record" => { "deps" => [ - "ssl/record/libssl-lib-dtls1_bitmap.o", "ssl/record/libssl-lib-rec_layer_d1.o", - "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/libssl-lib-rec_layer_s3.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "ssl/record/methods" => { + "deps" => [ + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/record/methods/libcommon-lib-tls_pad.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o", + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "products" => { "lib" => [ "libssl", - "providers/libcommon.a" + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "ssl/rio" => { + "deps" => [ + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, @@ -10346,9 +12075,40 @@ our %unified_info = ( "test/helpers/dtlstest-bin-ssltestlib.o", "test/helpers/endecode_test-bin-predefined_dhparams.o", "test/helpers/fatalerrtest-bin-ssltestlib.o", + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/helpers/pkcs12_api_test-bin-pkcs12.o", "test/helpers/pkcs12_format_test-bin-pkcs12.o", + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", "test/helpers/recordlentest-bin-ssltestlib.o", + "test/helpers/rpktest-bin-ssltestlib.o", "test/helpers/servername_test-bin-ssltestlib.o", + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/helpers/ssl_test-bin-handshake.o", "test/helpers/ssl_test-bin-handshake_srp.o", @@ -10357,7 +12117,8 @@ our %unified_info = ( "test/helpers/sslapitest-bin-ssltestlib.o", "test/helpers/sslbuffertest-bin-ssltestlib.o", "test/helpers/sslcorrupttest-bin-ssltestlib.o", - "test/helpers/tls13ccstest-bin-ssltestlib.o" + "test/helpers/tls13ccstest-bin-ssltestlib.o", + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" ], "products" => { "bin" => [ @@ -10375,16 +12136,37 @@ our %unified_info = ( "test/dtlstest", "test/endecode_test", "test/fatalerrtest", + "test/json_test", + "test/pkcs12_api_test", "test/pkcs12_format_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_radix_test", + "test/quic_srt_gen_test", + "test/quicapitest", + "test/quicfaultstest", "test/recordlentest", + "test/rpktest", "test/servername_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", "test/sslapitest", "test/sslbuffertest", "test/sslcorrupttest", - "test/tls13ccstest" + "test/tls13ccstest", + "test/tls13groupselection_test" + ] + } + }, + "test/radix" => { + "deps" => [ + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "products" => { + "bin" => [ + "test/quic_radix_test" ] } }, @@ -10396,6 +12178,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -10431,6 +12214,12 @@ our %unified_info = ( } }, "generate" => { + "OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], "apps/progs.c" => [ "apps/progs.pl", "\"-C\"", @@ -10441,6 +12230,19 @@ our %unified_info = ( "\"-H\"", "\$(APPS_OPENSSL)" ], + "builddata.pm" => [ + "util/mkinstallvars.pl", + "PREFIX=.", + "BINDIR=apps", + "APPLINKDIR=ms", + "LIBDIR=", + "INCLUDEDIR=include", + "\"INCLUDEDIR=\$(SRCDIR)/include\"", + "ENGINESDIR=engines", + "MODULESDIR=providers", + "\"VERSION=\$(VERSION)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"" + ], "crypto/aes/aes-586.S" => [ "crypto/aes/asm/aes-586.pl" ], @@ -10462,6 +12264,24 @@ our %unified_info = ( "crypto/aes/aes-ppc.s" => [ "crypto/aes/asm/aes-ppc.pl" ], + "crypto/aes/aes-riscv32-zkn.s" => [ + "crypto/aes/asm/aes-riscv32-zkn.pl" + ], + "crypto/aes/aes-riscv64-zkn.s" => [ + "crypto/aes/asm/aes-riscv64-zkn.pl" + ], + "crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvbb-zvkg-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkb-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkb-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkned.pl" + ], + "crypto/aes/aes-riscv64.s" => [ + "crypto/aes/asm/aes-riscv64.pl" + ], "crypto/aes/aes-s390x.S" => [ "crypto/aes/asm/aes-s390x.pl" ], @@ -10489,6 +12309,9 @@ our %unified_info = ( "crypto/aes/aesni-x86_64.s" => [ "crypto/aes/asm/aesni-x86_64.pl" ], + "crypto/aes/aesni-xts-avx512.s" => [ + "crypto/aes/asm/aesni-xts-avx512.pl" + ], "crypto/aes/aesp8-ppc.s" => [ "crypto/aes/asm/aesp8-ppc.pl" ], @@ -10501,12 +12324,18 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.S" => [ "crypto/aes/asm/bsaes-armv7.pl" ], + "crypto/aes/bsaes-armv8.S" => [ + "crypto/aes/asm/bsaes-armv8.pl" + ], "crypto/aes/bsaes-x86_64.s" => [ "crypto/aes/asm/bsaes-x86_64.pl" ], "crypto/aes/vpaes-armv8.S" => [ "crypto/aes/asm/vpaes-armv8.pl" ], + "crypto/aes/vpaes-loongarch64.S" => [ + "crypto/aes/asm/vpaes-loongarch64.pl" + ], "crypto/aes/vpaes-ppc.s" => [ "crypto/aes/asm/vpaes-ppc.pl" ], @@ -10567,15 +12396,33 @@ our %unified_info = ( "crypto/bn/ppc-mont.s" => [ "crypto/bn/asm/ppc-mont.pl" ], + "crypto/bn/ppc64-mont-fixed.s" => [ + "crypto/bn/asm/ppc64-mont-fixed.pl" + ], "crypto/bn/ppc64-mont.s" => [ "crypto/bn/asm/ppc64-mont.pl" ], + "crypto/bn/rsaz-2k-avx512.s" => [ + "crypto/bn/asm/rsaz-2k-avx512.pl" + ], + "crypto/bn/rsaz-2k-avxifma.s" => [ + "crypto/bn/asm/rsaz-2k-avxifma.pl" + ], + "crypto/bn/rsaz-3k-avx512.s" => [ + "crypto/bn/asm/rsaz-3k-avx512.pl" + ], + "crypto/bn/rsaz-3k-avxifma.s" => [ + "crypto/bn/asm/rsaz-3k-avxifma.pl" + ], + "crypto/bn/rsaz-4k-avx512.s" => [ + "crypto/bn/asm/rsaz-4k-avx512.pl" + ], + "crypto/bn/rsaz-4k-avxifma.s" => [ + "crypto/bn/asm/rsaz-4k-avxifma.pl" + ], "crypto/bn/rsaz-avx2.s" => [ "crypto/bn/asm/rsaz-avx2.pl" ], - "crypto/bn/rsaz-avx512.s" => [ - "crypto/bn/asm/rsaz-avx512.pl" - ], "crypto/bn/rsaz-x86_64.s" => [ "crypto/bn/asm/rsaz-x86_64.pl" ], @@ -10637,6 +12484,9 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.S" => [ "crypto/chacha/asm/chacha-armv4.pl" ], + "crypto/chacha/chacha-armv8-sve.S" => [ + "crypto/chacha/asm/chacha-armv8-sve.pl" + ], "crypto/chacha/chacha-armv8.S" => [ "crypto/chacha/asm/chacha-armv8.pl" ], @@ -10649,9 +12499,19 @@ our %unified_info = ( "crypto/chacha/chacha-ia64.s" => [ "crypto/chacha/chacha-ia64.S" ], + "crypto/chacha/chacha-loongarch64.S" => [ + "crypto/chacha/asm/chacha-loongarch64.pl" + ], "crypto/chacha/chacha-ppc.s" => [ "crypto/chacha/asm/chacha-ppc.pl" ], + "crypto/chacha/chacha-riscv64-v-zbb-zvkb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl", + "zvkb" + ], + "crypto/chacha/chacha-riscv64-v-zbb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl" + ], "crypto/chacha/chacha-s390x.S" => [ "crypto/chacha/asm/chacha-s390x.pl" ], @@ -10661,6 +12521,9 @@ our %unified_info = ( "crypto/chacha/chacha-x86_64.s" => [ "crypto/chacha/asm/chacha-x86_64.pl" ], + "crypto/chacha/chachap10-ppc.s" => [ + "crypto/chacha/asm/chachap10-ppc.pl" + ], "crypto/des/crypt586.S" => [ "crypto/des/asm/crypt586.pl" ], @@ -10673,6 +12536,9 @@ our %unified_info = ( "crypto/des/dest4-sparcv9.S" => [ "crypto/des/asm/dest4-sparcv9.pl" ], + "crypto/ec/ecp_nistp384-ppc64.s" => [ + "crypto/ec/asm/ecp_nistp384-ppc64.pl" + ], "crypto/ec/ecp_nistp521-ppc64.s" => [ "crypto/ec/asm/ecp_nistp521-ppc64.pl" ], @@ -10697,6 +12563,9 @@ our %unified_info = ( "crypto/ec/ecp_nistz256-x86_64.s" => [ "crypto/ec/asm/ecp_nistz256-x86_64.pl" ], + "crypto/ec/ecp_sm2p256-armv8.S" => [ + "crypto/ec/asm/ecp_sm2p256-armv8.pl" + ], "crypto/ec/x25519-ppc64.s" => [ "crypto/ec/asm/x25519-ppc64.pl" ], @@ -10706,18 +12575,39 @@ our %unified_info = ( "crypto/ia64cpuid.s" => [ "crypto/ia64cpuid.S" ], + "crypto/loongarch64cpuid.s" => [ + "crypto/loongarch64cpuid.pl" + ], "crypto/md5/md5-586.S" => [ "crypto/md5/asm/md5-586.pl" ], + "crypto/md5/md5-aarch64.S" => [ + "crypto/md5/asm/md5-aarch64.pl" + ], + "crypto/md5/md5-loongarch64.S" => [ + "crypto/md5/asm/md5-loongarch64.pl" + ], "crypto/md5/md5-sparcv9.S" => [ "crypto/md5/asm/md5-sparcv9.pl" ], "crypto/md5/md5-x86_64.s" => [ "crypto/md5/asm/md5-x86_64.pl" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.S" => [ + "crypto/modes/asm/aes-gcm-armv8-unroll8_64.pl" + ], "crypto/modes/aes-gcm-armv8_64.S" => [ "crypto/modes/asm/aes-gcm-armv8_64.pl" ], + "crypto/modes/aes-gcm-avx512.s" => [ + "crypto/modes/asm/aes-gcm-avx512.pl" + ], + "crypto/modes/aes-gcm-ppc.s" => [ + "crypto/modes/asm/aes-gcm-ppc.pl" + ], + "crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s" => [ + "crypto/modes/asm/aes-gcm-riscv64-zvkb-zvkg-zvkned.pl" + ], "crypto/modes/aesni-gcm-x86_64.s" => [ "crypto/modes/asm/aesni-gcm-x86_64.pl" ], @@ -10736,6 +12626,15 @@ our %unified_info = ( "crypto/modes/ghash-parisc.s" => [ "crypto/modes/asm/ghash-parisc.pl" ], + "crypto/modes/ghash-riscv64-zvkb-zvbc.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkb-zvbc.pl" + ], + "crypto/modes/ghash-riscv64-zvkg.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkg.pl" + ], + "crypto/modes/ghash-riscv64.s" => [ + "crypto/modes/asm/ghash-riscv64.pl" + ], "crypto/modes/ghash-s390x.S" => [ "crypto/modes/asm/ghash-s390x.pl" ], @@ -10754,6 +12653,9 @@ our %unified_info = ( "crypto/modes/ghashv8-armx.S" => [ "crypto/modes/asm/ghashv8-armx.pl" ], + "crypto/params_idx.c" => [ + "crypto/params_idx.c.in" + ], "crypto/pariscid.s" => [ "crypto/pariscid.pl" ], @@ -10814,6 +12716,12 @@ our %unified_info = ( "crypto/ripemd/rmd-586.S" => [ "crypto/ripemd/asm/rmd-586.pl" ], + "crypto/riscv32cpuid.s" => [ + "crypto/riscv32cpuid.pl" + ], + "crypto/riscv64cpuid.s" => [ + "crypto/riscv64cpuid.pl" + ], "crypto/s390xcpuid.S" => [ "crypto/s390xcpuid.pl" ], @@ -10922,6 +12830,9 @@ our %unified_info = ( "crypto/sha/sha256-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S" => [ + "crypto/sha/asm/sha256-riscv64-zvkb-zvknha_or_zvknhb.pl" + ], "crypto/sha/sha256-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -10958,6 +12869,9 @@ our %unified_info = ( "crypto/sha/sha512-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha512-riscv64-zvkb-zvknhb.S" => [ + "crypto/sha/asm/sha512-riscv64-zvkb-zvknhb.pl" + ], "crypto/sha/sha512-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -10970,6 +12884,24 @@ our %unified_info = ( "crypto/sha/sha512p8-ppc.s" => [ "crypto/sha/asm/sha512p8-ppc.pl" ], + "crypto/sm3/sm3-armv8.S" => [ + "crypto/sm3/asm/sm3-armv8.pl" + ], + "crypto/sm3/sm3-riscv64-zvksh.S" => [ + "crypto/sm3/asm/sm3-riscv64-zvksh.pl" + ], + "crypto/sm4/sm4-armv8.S" => [ + "crypto/sm4/asm/sm4-armv8.pl" + ], + "crypto/sm4/sm4-riscv64-zvksed.s" => [ + "crypto/sm4/asm/sm4-riscv64-zvksed.pl" + ], + "crypto/sm4/vpsm4-armv8.S" => [ + "crypto/sm4/asm/vpsm4-armv8.pl" + ], + "crypto/sm4/vpsm4_ex-armv8.S" => [ + "crypto/sm4/asm/vpsm4_ex-armv8.pl" + ], "crypto/uplink-ia64.s" => [ "ms/uplink-ia64.pl" ], @@ -11135,6 +13067,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -11276,6 +13211,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -11312,6 +13250,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -11327,6 +13268,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -11399,6 +13343,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -11465,6 +13412,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -11564,6 +13514,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -11702,6 +13658,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -11819,6 +13778,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -11906,6 +13871,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -11978,9 +13946,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -11996,12 +13970,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -12071,9 +14051,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -12083,12 +14072,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -12104,9 +14105,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -12131,6 +14138,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -12146,6 +14156,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -12182,6 +14195,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -12455,6 +14471,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -12494,6 +14513,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -12515,6 +14537,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -12629,6 +14654,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -12656,9 +14684,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -12674,6 +14714,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -12683,12 +14726,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -12707,12 +14756,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -12722,9 +14783,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -12737,9 +14804,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -12755,24 +14834,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -12785,6 +14885,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -12794,8 +14900,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -12815,6 +14921,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -12863,6 +14984,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -12929,6 +15053,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -13052,9 +15179,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -13070,6 +15203,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -13094,9 +15230,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -13130,6 +15275,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -13187,15 +15335,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -13205,6 +15365,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -13226,9 +15389,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -13244,6 +15413,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -13256,9 +15428,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -13289,9 +15458,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -13307,12 +15473,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -13367,6 +15587,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -13376,9 +15599,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -13526,6 +15746,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -13667,6 +15890,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -13703,6 +15929,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -13718,6 +15947,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -13790,6 +16022,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -13856,6 +16091,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -13955,6 +16193,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -14093,6 +16337,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -14210,6 +16457,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -14297,6 +16550,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -14369,9 +16625,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -14387,12 +16649,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -14462,9 +16730,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -14474,12 +16751,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -14495,9 +16784,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -14522,6 +16817,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -14537,6 +16835,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -14573,6 +16874,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -14846,6 +17150,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -14885,6 +17192,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -14906,6 +17216,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -15020,6 +17333,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -15047,9 +17363,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -15065,6 +17393,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -15074,12 +17405,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -15098,12 +17435,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -15113,9 +17462,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -15128,9 +17483,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -15146,24 +17513,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -15176,6 +17564,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -15185,8 +17579,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -15206,6 +17600,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -15254,6 +17663,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -15320,6 +17732,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -15443,9 +17858,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -15461,6 +17882,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -15485,9 +17909,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -15521,6 +17954,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -15578,15 +18014,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -15596,6 +18044,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -15617,9 +18068,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -15635,6 +18092,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -15647,9 +18107,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -15680,9 +18137,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -15698,12 +18152,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -15758,6 +18266,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -15767,9 +18278,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -15905,6 +18413,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc/man1/openssl-sess_id.pod.in" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in" ], @@ -15941,12 +18452,30 @@ our %unified_info = ( "engines/e_padlock-x86_64.s" => [ "engines/asm/e_padlock-x86_64.pl" ], + "exporters/OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], + "exporters/libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], + "exporters/libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "exporters/openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "include/crypto/bn_conf.h" => [ "include/crypto/bn_conf.h.in" ], "include/crypto/dso_conf.h" => [ "include/crypto/dso_conf.h.in" ], + "include/internal/param_names.h" => [ + "include/internal/param_names.h.in" + ], "include/openssl/asn1.h" => [ "include/openssl/asn1.h.in" ], @@ -15962,12 +18491,18 @@ our %unified_info = ( "include/openssl/cms.h" => [ "include/openssl/cms.h.in" ], + "include/openssl/comp.h" => [ + "include/openssl/comp.h.in" + ], "include/openssl/conf.h" => [ "include/openssl/conf.h.in" ], "include/openssl/configuration.h" => [ "include/openssl/configuration.h.in" ], + "include/openssl/core_names.h" => [ + "include/openssl/core_names.h.in" + ], "include/openssl/crmf.h" => [ "include/openssl/crmf.h.in" ], @@ -16016,20 +18551,47 @@ our %unified_info = ( "include/openssl/x509.h" => [ "include/openssl/x509.h.in" ], + "include/openssl/x509_acert.h" => [ + "include/openssl/x509_acert.h.in" + ], "include/openssl/x509_vfy.h" => [ "include/openssl/x509_vfy.h.in" ], "include/openssl/x509v3.h" => [ "include/openssl/x509v3.h.in" ], + "installdata.pm" => [ + "util/mkinstallvars.pl", + "\"PREFIX=\$(INSTALLTOP)\"", + "BINDIR=bin", + "\"LIBDIR=\$(LIBDIR)\"", + "\"libdir=\$(libdir)\"", + "INCLUDEDIR=include", + "APPLINKDIR=include/openssl", + "\"ENGINESDIR=\$(ENGINESDIR)\"", + "\"MODULESDIR=\$(MODULESDIR)\"", + "\"PKGCONFIGDIR=\$(PKGCONFIGDIR)\"", + "\"CMAKECONFIGDIR=\$(CMAKECONFIGDIR)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"", + "\"VERSION=\$(VERSION)\"" + ], "libcrypto.ld" => [ "util/libcrypto.num", "libcrypto" ], + "libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], "libssl.ld" => [ "util/libssl.num", "libssl" ], + "libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/der_digests_gen.c.in" ], @@ -16042,9 +18604,15 @@ our %unified_info = ( "providers/common/der/der_ecx_gen.c" => [ "providers/common/der/der_ecx_gen.c.in" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/der_ml_dsa_gen.c.in" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/der_rsa_gen.c.in" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/der_slh_dsa_gen.c.in" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/der_sm2_gen.c.in" ], @@ -16063,9 +18631,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/include/prov/der_ecx.h.in" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/include/prov/der_ml_dsa.h.in" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/include/prov/der_rsa.h.in" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/include/prov/der_slh_dsa.h.in" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/include/prov/der_sm2.h.in" ], @@ -16107,6 +18681,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "buffer" ], + "test/buildtest_byteorder.c" => [ + "test/generate_buildtest.pl", + "byteorder" + ], "test/buildtest_camellia.c" => [ "test/generate_buildtest.pl", "camellia" @@ -16139,10 +18717,6 @@ our %unified_info = ( "test/generate_buildtest.pl", "core_dispatch" ], - "test/buildtest_core_names.c" => [ - "test/generate_buildtest.pl", - "core_names" - ], "test/buildtest_core_object.c" => [ "test/generate_buildtest.pl", "core_object" @@ -16175,6 +18749,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "e_os2" ], + "test/buildtest_e_ostime.c" => [ + "test/generate_buildtest.pl", + "e_ostime" + ], "test/buildtest_ebcdic.c" => [ "test/generate_buildtest.pl", "ebcdic" @@ -16211,6 +18789,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "hmac" ], + "test/buildtest_hpke.c" => [ + "test/generate_buildtest.pl", + "hpke" + ], "test/buildtest_http.c" => [ "test/generate_buildtest.pl", "http" @@ -16219,6 +18801,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "idea" ], + "test/buildtest_indicator.c" => [ + "test/generate_buildtest.pl", + "indicator" + ], "test/buildtest_kdf.c" => [ "test/generate_buildtest.pl", "kdf" @@ -16239,6 +18825,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "mdc2" ], + "test/buildtest_ml_kem.c" => [ + "test/generate_buildtest.pl", + "ml_kem" + ], "test/buildtest_modes.c" => [ "test/generate_buildtest.pl", "modes" @@ -16279,6 +18869,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "provider" ], + "test/buildtest_quic.c" => [ + "test/generate_buildtest.pl", + "quic" + ], "test/buildtest_rand.c" => [ "test/generate_buildtest.pl", "rand" @@ -16335,6 +18929,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "symhacks" ], + "test/buildtest_thread.c" => [ + "test/generate_buildtest.pl", + "thread" + ], "test/buildtest_tls1.c" => [ "test/generate_buildtest.pl", "tls1" @@ -16415,6 +19013,7 @@ our %unified_info = ( "doc/html/man1/openssl-s_server.html", "doc/html/man1/openssl-s_time.html", "doc/html/man1/openssl-sess_id.html", + "doc/html/man1/openssl-skeyutl.html", "doc/html/man1/openssl-smime.html", "doc/html/man1/openssl-speed.html", "doc/html/man1/openssl-spkac.html", @@ -16464,6 +19063,7 @@ our %unified_info = ( "doc/html/man3/BIO_find_type.html", "doc/html/man3/BIO_get_data.html", "doc/html/man3/BIO_get_ex_new_index.html", + "doc/html/man3/BIO_get_rpoll_descriptor.html", "doc/html/man3/BIO_meth_new.html", "doc/html/man3/BIO_new.html", "doc/html/man3/BIO_new_CMS.html", @@ -16476,11 +19076,13 @@ our %unified_info = ( "doc/html/man3/BIO_s_connect.html", "doc/html/man3/BIO_s_core.html", "doc/html/man3/BIO_s_datagram.html", + "doc/html/man3/BIO_s_dgram_pair.html", "doc/html/man3/BIO_s_fd.html", "doc/html/man3/BIO_s_file.html", "doc/html/man3/BIO_s_mem.html", "doc/html/man3/BIO_s_null.html", "doc/html/man3/BIO_s_socket.html", + "doc/html/man3/BIO_sendmmsg.html", "doc/html/man3/BIO_set_callback.html", "doc/html/man3/BIO_should_retry.html", "doc/html/man3/BIO_socket_wait.html", @@ -16505,6 +19107,7 @@ our %unified_info = ( "doc/html/man3/BN_swap.html", "doc/html/man3/BN_zero.html", "doc/html/man3/BUF_MEM_new.html", + "doc/html/man3/CMAC_CTX.html", "doc/html/man3/CMS_EncryptedData_decrypt.html", "doc/html/man3/CMS_EncryptedData_encrypt.html", "doc/html/man3/CMS_EnvelopedData_create.html", @@ -16527,6 +19130,7 @@ our %unified_info = ( "doc/html/man3/CMS_uncompress.html", "doc/html/man3/CMS_verify.html", "doc/html/man3/CMS_verify_receipt.html", + "doc/html/man3/COMP_CTX_new.html", "doc/html/man3/CONF_modules_free.html", "doc/html/man3/CONF_modules_load_file.html", "doc/html/man3/CRYPTO_THREAD_run_once.html", @@ -16560,6 +19164,8 @@ our %unified_info = ( "doc/html/man3/DSA_size.html", "doc/html/man3/DTLS_get_data_mtu.html", "doc/html/man3/DTLS_set_timer_cb.html", + "doc/html/man3/DTLSv1_get_timeout.html", + "doc/html/man3/DTLSv1_handle_timeout.html", "doc/html/man3/DTLSv1_listen.html", "doc/html/man3/ECDSA_SIG_new.html", "doc/html/man3/ECDSA_sign.html", @@ -16606,6 +19212,7 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_ctrl.html", "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html", "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html", + "doc/html/man3/EVP_PKEY_CTX_get_algor.html", "doc/html/man3/EVP_PKEY_CTX_new.html", "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html", "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html", @@ -16645,6 +19252,8 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_verify_recover.html", "doc/html/man3/EVP_RAND.html", "doc/html/man3/EVP_SIGNATURE.html", + "doc/html/man3/EVP_SKEY.html", + "doc/html/man3/EVP_SKEYMGMT.html", "doc/html/man3/EVP_SealInit.html", "doc/html/man3/EVP_SignInit.html", "doc/html/man3/EVP_VerifyInit.html", @@ -16674,6 +19283,7 @@ our %unified_info = ( "doc/html/man3/EVP_sm3.html", "doc/html/man3/EVP_sm4_cbc.html", "doc/html/man3/EVP_whirlpool.html", + "doc/html/man3/GENERAL_NAME.html", "doc/html/man3/HMAC.html", "doc/html/man3/MD5.html", "doc/html/man3/MDC2_Init.html", @@ -16698,14 +19308,18 @@ our %unified_info = ( "doc/html/man3/OPENSSL_init_ssl.html", "doc/html/man3/OPENSSL_instrument_bus.html", "doc/html/man3/OPENSSL_load_builtin_modules.html", + "doc/html/man3/OPENSSL_load_u16_le.html", "doc/html/man3/OPENSSL_malloc.html", + "doc/html/man3/OPENSSL_riscvcap.html", "doc/html/man3/OPENSSL_s390xcap.html", "doc/html/man3/OPENSSL_secure_malloc.html", "doc/html/man3/OPENSSL_strcasecmp.html", "doc/html/man3/OSSL_ALGORITHM.html", "doc/html/man3/OSSL_CALLBACK.html", + "doc/html/man3/OSSL_CMP_ATAV_set0.html", "doc/html/man3/OSSL_CMP_CTX_new.html", "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html", + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html", "doc/html/man3/OSSL_CMP_ITAV_set0.html", "doc/html/man3/OSSL_CMP_MSG_get0_header.html", "doc/html/man3/OSSL_CMP_MSG_http_perform.html", @@ -16729,18 +19343,27 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_CTX.html", "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html", "doc/html/man3/OSSL_ENCODER_to_bio.html", + "doc/html/man3/OSSL_ERR_STATE_save.html", "doc/html/man3/OSSL_ESS_check_signing_certs.html", + "doc/html/man3/OSSL_GENERAL_NAMES_print.html", + "doc/html/man3/OSSL_HPKE_CTX_new.html", "doc/html/man3/OSSL_HTTP_REQ_CTX.html", "doc/html/man3/OSSL_HTTP_parse_url.html", "doc/html/man3/OSSL_HTTP_transfer.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html", + "doc/html/man3/OSSL_INDICATOR_set_callback.html", "doc/html/man3/OSSL_ITEM.html", "doc/html/man3/OSSL_LIB_CTX.html", + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html", "doc/html/man3/OSSL_PARAM.html", "doc/html/man3/OSSL_PARAM_BLD.html", "doc/html/man3/OSSL_PARAM_allocate_from_text.html", "doc/html/man3/OSSL_PARAM_dup.html", "doc/html/man3/OSSL_PARAM_int.html", + "doc/html/man3/OSSL_PARAM_print_to_bio.html", "doc/html/man3/OSSL_PROVIDER.html", + "doc/html/man3/OSSL_QUIC_client_method.html", "doc/html/man3/OSSL_SELF_TEST_new.html", "doc/html/man3/OSSL_SELF_TEST_set_callback.html", "doc/html/man3/OSSL_STORE_INFO.html", @@ -16749,11 +19372,13 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_attach.html", "doc/html/man3/OSSL_STORE_expect.html", "doc/html/man3/OSSL_STORE_open.html", + "doc/html/man3/OSSL_sleep.html", "doc/html/man3/OSSL_trace_enabled.html", "doc/html/man3/OSSL_trace_get_category_num.html", "doc/html/man3/OSSL_trace_set_channel.html", "doc/html/man3/OpenSSL_add_all_algorithms.html", "doc/html/man3/OpenSSL_version.html", + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html", "doc/html/man3/PEM_X509_INFO_read_bio_ex.html", "doc/html/man3/PEM_bytes_read_bio.html", "doc/html/man3/PEM_read.html", @@ -16766,6 +19391,7 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_create_cert.html", "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html", "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html", + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html", "doc/html/man3/PKCS12_add1_attr_by_NID.html", "doc/html/man3/PKCS12_add_CSPName_asc.html", "doc/html/man3/PKCS12_add_cert.html", @@ -16857,6 +19483,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_sess_set_get_cb.html", "doc/html/man3/SSL_CTX_sessions.html", "doc/html/man3/SSL_CTX_set0_CA_list.html", + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html", "doc/html/man3/SSL_CTX_set1_curves.html", "doc/html/man3/SSL_CTX_set1_sigalgs.html", "doc/html/man3/SSL_CTX_set1_verify_cert_store.html", @@ -16870,6 +19497,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_ct_validation_callback.html", "doc/html/man3/SSL_CTX_set_ctlog_list_file.html", "doc/html/man3/SSL_CTX_set_default_passwd_cb.html", + "doc/html/man3/SSL_CTX_set_domain_flags.html", "doc/html/man3/SSL_CTX_set_generate_session_id.html", "doc/html/man3/SSL_CTX_set_info_callback.html", "doc/html/man3/SSL_CTX_set_keylog_callback.html", @@ -16877,6 +19505,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_min_proto_version.html", "doc/html/man3/SSL_CTX_set_mode.html", "doc/html/man3/SSL_CTX_set_msg_callback.html", + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html", "doc/html/man3/SSL_CTX_set_num_tickets.html", "doc/html/man3/SSL_CTX_set_options.html", "doc/html/man3/SSL_CTX_set_psk_client_callback.html", @@ -16915,6 +19544,7 @@ our %unified_info = ( "doc/html/man3/SSL_SESSION_print.html", "doc/html/man3/SSL_SESSION_set1_id.html", "doc/html/man3/SSL_accept.html", + "doc/html/man3/SSL_accept_stream.html", "doc/html/man3/SSL_alert_type_string.html", "doc/html/man3/SSL_alloc_buffers.html", "doc/html/man3/SSL_check_chain.html", @@ -16924,59 +19554,90 @@ our %unified_info = ( "doc/html/man3/SSL_export_keying_material.html", "doc/html/man3/SSL_extension_supported.html", "doc/html/man3/SSL_free.html", + "doc/html/man3/SSL_get0_connection.html", + "doc/html/man3/SSL_get0_group_name.html", + "doc/html/man3/SSL_get0_peer_rpk.html", "doc/html/man3/SSL_get0_peer_scts.html", + "doc/html/man3/SSL_get1_builtin_sigalgs.html", "doc/html/man3/SSL_get_SSL_CTX.html", "doc/html/man3/SSL_get_all_async_fds.html", "doc/html/man3/SSL_get_certificate.html", "doc/html/man3/SSL_get_ciphers.html", "doc/html/man3/SSL_get_client_random.html", + "doc/html/man3/SSL_get_conn_close_info.html", "doc/html/man3/SSL_get_current_cipher.html", "doc/html/man3/SSL_get_default_timeout.html", "doc/html/man3/SSL_get_error.html", + "doc/html/man3/SSL_get_event_timeout.html", "doc/html/man3/SSL_get_extms_support.html", "doc/html/man3/SSL_get_fd.html", + "doc/html/man3/SSL_get_handshake_rtt.html", "doc/html/man3/SSL_get_peer_cert_chain.html", "doc/html/man3/SSL_get_peer_certificate.html", "doc/html/man3/SSL_get_peer_signature_nid.html", "doc/html/man3/SSL_get_peer_tmp_key.html", "doc/html/man3/SSL_get_psk_identity.html", "doc/html/man3/SSL_get_rbio.html", + "doc/html/man3/SSL_get_rpoll_descriptor.html", "doc/html/man3/SSL_get_session.html", "doc/html/man3/SSL_get_shared_sigalgs.html", + "doc/html/man3/SSL_get_stream_id.html", + "doc/html/man3/SSL_get_stream_read_state.html", + "doc/html/man3/SSL_get_value_uint.html", "doc/html/man3/SSL_get_verify_result.html", "doc/html/man3/SSL_get_version.html", "doc/html/man3/SSL_group_to_name.html", + "doc/html/man3/SSL_handle_events.html", "doc/html/man3/SSL_in_init.html", + "doc/html/man3/SSL_inject_net_dgram.html", "doc/html/man3/SSL_key_update.html", "doc/html/man3/SSL_library_init.html", "doc/html/man3/SSL_load_client_CA_file.html", "doc/html/man3/SSL_new.html", + "doc/html/man3/SSL_new_domain.html", + "doc/html/man3/SSL_new_listener.html", + "doc/html/man3/SSL_new_stream.html", "doc/html/man3/SSL_pending.html", + "doc/html/man3/SSL_poll.html", "doc/html/man3/SSL_read.html", "doc/html/man3/SSL_read_early_data.html", "doc/html/man3/SSL_rstate_string.html", "doc/html/man3/SSL_session_reused.html", "doc/html/man3/SSL_set1_host.html", + "doc/html/man3/SSL_set1_initial_peer_addr.html", + "doc/html/man3/SSL_set1_server_cert_type.html", "doc/html/man3/SSL_set_async_callback.html", "doc/html/man3/SSL_set_bio.html", + "doc/html/man3/SSL_set_blocking_mode.html", "doc/html/man3/SSL_set_connect_state.html", + "doc/html/man3/SSL_set_default_stream_mode.html", "doc/html/man3/SSL_set_fd.html", + "doc/html/man3/SSL_set_incoming_stream_policy.html", + "doc/html/man3/SSL_set_quic_tls_cbs.html", "doc/html/man3/SSL_set_retry_verify.html", "doc/html/man3/SSL_set_session.html", + "doc/html/man3/SSL_set_session_secret_cb.html", "doc/html/man3/SSL_set_shutdown.html", "doc/html/man3/SSL_set_verify_result.html", "doc/html/man3/SSL_shutdown.html", "doc/html/man3/SSL_state_string.html", + "doc/html/man3/SSL_stream_conclude.html", + "doc/html/man3/SSL_stream_reset.html", "doc/html/man3/SSL_want.html", "doc/html/man3/SSL_write.html", "doc/html/man3/TS_RESP_CTX_new.html", - "doc/html/man3/TS_VERIFY_CTX_set_certs.html", + "doc/html/man3/TS_VERIFY_CTX.html", "doc/html/man3/UI_STRING.html", "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", + "doc/html/man3/X509_ACERT_add1_attr.html", + "doc/html/man3/X509_ACERT_add_attr_nconf.html", + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html", + "doc/html/man3/X509_ACERT_get_attr.html", + "doc/html/man3/X509_ACERT_print_ex.html", "doc/html/man3/X509_ALGOR_dup.html", "doc/html/man3/X509_ATTRIBUTE.html", "doc/html/man3/X509_CRL_get0_by_serial.html", @@ -16993,6 +19654,7 @@ our %unified_info = ( "doc/html/man3/X509_REQ_get_attr.html", "doc/html/man3/X509_REQ_get_extensions.html", "doc/html/man3/X509_SIG_get0.html", + "doc/html/man3/X509_STORE_CTX_get_by_subject.html", "doc/html/man3/X509_STORE_CTX_get_error.html", "doc/html/man3/X509_STORE_CTX_new.html", "doc/html/man3/X509_STORE_CTX_set_verify_cb.html", @@ -17015,6 +19677,7 @@ our %unified_info = ( "doc/html/man3/X509_get0_notBefore.html", "doc/html/man3/X509_get0_signature.html", "doc/html/man3/X509_get0_uids.html", + "doc/html/man3/X509_get_default_cert_file.html", "doc/html/man3/X509_get_extension_flags.html", "doc/html/man3/X509_get_pubkey.html", "doc/html/man3/X509_get_serialNumber.html", @@ -17060,12 +19723,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-RC5.html", "doc/html/man7/EVP_CIPHER-SEED.html", "doc/html/man7/EVP_CIPHER-SM4.html", + "doc/html/man7/EVP_KDF-ARGON2.html", "doc/html/man7/EVP_KDF-HKDF.html", + "doc/html/man7/EVP_KDF-HMAC-DRBG.html", "doc/html/man7/EVP_KDF-KB.html", "doc/html/man7/EVP_KDF-KRB5KDF.html", "doc/html/man7/EVP_KDF-PBKDF1.html", "doc/html/man7/EVP_KDF-PBKDF2.html", "doc/html/man7/EVP_KDF-PKCS12KDF.html", + "doc/html/man7/EVP_KDF-PVKKDF.html", "doc/html/man7/EVP_KDF-SCRYPT.html", "doc/html/man7/EVP_KDF-SS.html", "doc/html/man7/EVP_KDF-SSHKDF.html", @@ -17074,7 +19740,10 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X942-ASN1.html", "doc/html/man7/EVP_KDF-X942-CONCAT.html", "doc/html/man7/EVP_KDF-X963.html", + "doc/html/man7/EVP_KEM-EC.html", + "doc/html/man7/EVP_KEM-ML-KEM.html", "doc/html/man7/EVP_KEM-RSA.html", + "doc/html/man7/EVP_KEM-X25519.html", "doc/html/man7/EVP_KEYEXCH-DH.html", "doc/html/man7/EVP_KEYEXCH-ECDH.html", "doc/html/man7/EVP_KEYEXCH-X25519.html", @@ -17086,6 +19755,7 @@ our %unified_info = ( "doc/html/man7/EVP_MAC-Poly1305.html", "doc/html/man7/EVP_MAC-Siphash.html", "doc/html/man7/EVP_MD-BLAKE2.html", + "doc/html/man7/EVP_MD-KECCAK.html", "doc/html/man7/EVP_MD-MD2.html", "doc/html/man7/EVP_MD-MD4.html", "doc/html/man7/EVP_MD-MD5-SHA1.html", @@ -17105,12 +19775,17 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-EC.html", "doc/html/man7/EVP_PKEY-FFC.html", "doc/html/man7/EVP_PKEY-HMAC.html", + "doc/html/man7/EVP_PKEY-ML-DSA.html", + "doc/html/man7/EVP_PKEY-ML-KEM.html", "doc/html/man7/EVP_PKEY-RSA.html", + "doc/html/man7/EVP_PKEY-SLH-DSA.html", "doc/html/man7/EVP_PKEY-SM2.html", "doc/html/man7/EVP_PKEY-X25519.html", + "doc/html/man7/EVP_RAND-CRNG-TEST.html", "doc/html/man7/EVP_RAND-CTR-DRBG.html", "doc/html/man7/EVP_RAND-HASH-DRBG.html", "doc/html/man7/EVP_RAND-HMAC-DRBG.html", + "doc/html/man7/EVP_RAND-JITTER.html", "doc/html/man7/EVP_RAND-SEED-SRC.html", "doc/html/man7/EVP_RAND-TEST-RAND.html", "doc/html/man7/EVP_RAND.html", @@ -17118,17 +19793,19 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-ECDSA.html", "doc/html/man7/EVP_SIGNATURE-ED25519.html", "doc/html/man7/EVP_SIGNATURE-HMAC.html", + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html", "doc/html/man7/EVP_SIGNATURE-RSA.html", + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html", "doc/html/man7/OSSL_PROVIDER-FIPS.html", "doc/html/man7/OSSL_PROVIDER-base.html", "doc/html/man7/OSSL_PROVIDER-default.html", "doc/html/man7/OSSL_PROVIDER-legacy.html", "doc/html/man7/OSSL_PROVIDER-null.html", + "doc/html/man7/OSSL_STORE-winstore.html", "doc/html/man7/RAND.html", "doc/html/man7/RSA-PSS.html", "doc/html/man7/X25519.html", "doc/html/man7/bio.html", - "doc/html/man7/crypto.html", "doc/html/man7/ct.html", "doc/html/man7/des_modes.html", "doc/html/man7/evp.html", @@ -17139,14 +19816,31 @@ our %unified_info = ( "doc/html/man7/life_cycle-mac.html", "doc/html/man7/life_cycle-pkey.html", "doc/html/man7/life_cycle-rand.html", - "doc/html/man7/migration_guide.html", "doc/html/man7/openssl-core.h.html", "doc/html/man7/openssl-core_dispatch.h.html", "doc/html/man7/openssl-core_names.h.html", "doc/html/man7/openssl-env.html", "doc/html/man7/openssl-glossary.html", + "doc/html/man7/openssl-qlog.html", + "doc/html/man7/openssl-quic-concurrency.html", + "doc/html/man7/openssl-quic.html", "doc/html/man7/openssl-threads.html", "doc/html/man7/openssl_user_macros.html", + "doc/html/man7/ossl-guide-introduction.html", + "doc/html/man7/ossl-guide-libcrypto-introduction.html", + "doc/html/man7/ossl-guide-libraries-introduction.html", + "doc/html/man7/ossl-guide-libssl-introduction.html", + "doc/html/man7/ossl-guide-migration.html", + "doc/html/man7/ossl-guide-quic-client-block.html", + "doc/html/man7/ossl-guide-quic-client-non-block.html", + "doc/html/man7/ossl-guide-quic-introduction.html", + "doc/html/man7/ossl-guide-quic-multi-stream.html", + "doc/html/man7/ossl-guide-quic-server-block.html", + "doc/html/man7/ossl-guide-quic-server-non-block.html", + "doc/html/man7/ossl-guide-tls-client-block.html", + "doc/html/man7/ossl-guide-tls-client-non-block.html", + "doc/html/man7/ossl-guide-tls-introduction.html", + "doc/html/man7/ossl-guide-tls-server-block.html", "doc/html/man7/ossl_store-file.html", "doc/html/man7/ossl_store.html", "doc/html/man7/passphrase-encoding.html", @@ -17165,10 +19859,10 @@ our %unified_info = ( "doc/html/man7/provider-object.html", "doc/html/man7/provider-rand.html", "doc/html/man7/provider-signature.html", + "doc/html/man7/provider-skeymgmt.html", "doc/html/man7/provider-storemgmt.html", "doc/html/man7/provider.html", "doc/html/man7/proxy-certificates.html", - "doc/html/man7/ssl.html", "doc/html/man7/x509.html" ] }, @@ -17183,12 +19877,21 @@ our %unified_info = ( ] }, "includes" => { + "OpenSSLConfig.cmake" => [ + "." + ], + "OpenSSLConfigVersion.cmake" => [ + "." + ], "apps/asn1parse.o" => [ "apps" ], "apps/ca.o" => [ "apps" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps" + ], "apps/ciphers.o" => [ "apps" ], @@ -17415,6 +20118,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps" + ], "apps/openssl-bin-smime.o" => [ "apps" ], @@ -17502,6 +20208,9 @@ our %unified_info = ( "apps/sess_id.o" => [ "apps" ], + "apps/skeyutl.o" => [ + "apps" + ], "apps/smime.o" => [ "apps" ], @@ -17553,6 +20262,12 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.o" => [ "crypto" ], + "crypto/aes/vpaes-armv8.o" => [ + "crypto" + ], + "crypto/aes/vpaes-loongarch64.o" => [ + "crypto" + ], "crypto/arm64cpuid.o" => [ "crypto" ], @@ -17604,9 +20319,15 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.o" => [ "crypto" ], + "crypto/chacha/chacha-armv8-sve.o" => [ + "crypto" + ], "crypto/chacha/chacha-armv8.o" => [ "crypto" ], + "crypto/chacha/chacha-loongarch64.o" => [ + "crypto" + ], "crypto/chacha/chacha-s390x.o" => [ "crypto" ], @@ -17631,15 +20352,27 @@ our %unified_info = ( "crypto/ec/ecp_s390x_nistp.o" => [ "crypto" ], + "crypto/ec/ecp_sm2p256-armv8.o" => [ + "crypto" + ], + "crypto/ec/ecx_key.o" => [ + "crypto" + ], "crypto/ec/ecx_meth.o" => [ "crypto" ], "crypto/ec/ecx_s390x.o" => [ "crypto" ], + "crypto/ec/libcrypto-lib-ecx_key.o" => [ + "crypto" + ], "crypto/ec/libcrypto-lib-ecx_meth.o" => [ "crypto" ], + "crypto/ec/libfips-lib-ecx_key.o" => [ + "crypto" + ], "crypto/evp/e_aes.o" => [ "crypto", "crypto/modes" @@ -17711,9 +20444,18 @@ our %unified_info = ( "crypto/libfips-lib-cpuid.o" => [ "." ], + "crypto/md5/md5-aarch64.o" => [ + "crypto" + ], + "crypto/md5/md5-loongarch64.o" => [ + "crypto" + ], "crypto/md5/md5-sparcv9.o" => [ "crypto" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.o" => [ + "crypto" + ], "crypto/modes/aes-gcm-armv8_64.o" => [ "crypto" ], @@ -17738,6 +20480,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-gcm128.o" => [ "crypto" ], + "crypto/params_idx.c" => [ + "util/perl" + ], "crypto/poly1305/poly1305-armv4.o" => [ "crypto" ], @@ -17759,6 +20504,9 @@ our %unified_info = ( "crypto/sha/keccak1600-armv4.o" => [ "crypto" ], + "crypto/sha/keccak1600-armv8.o" => [ + "crypto" + ], "crypto/sha/sha1-armv4-large.o" => [ "crypto" ], @@ -17804,6 +20552,18 @@ our %unified_info = ( "crypto/sha/sha512-sparcv9.o" => [ "crypto" ], + "crypto/sm3/sm3-armv8.o" => [ + "crypto" + ], + "crypto/sm4/sm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4_ex-armv8.o" => [ + "crypto" + ], "doc/man1/openssl-asn1parse.pod" => [ "doc" ], @@ -17936,6 +20696,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc" + ], "doc/man1/openssl-smime.pod" => [ "doc" ], @@ -17963,6 +20726,24 @@ our %unified_info = ( "doc/man1/openssl-x509.pod" => [ "doc" ], + "exporters/OpenSSLConfig.cmake" => [ + "." + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "." + ], + "exporters/libcrypto.pc" => [ + "." + ], + "exporters/libssl.pc" => [ + "." + ], + "exporters/openssl.pc" => [ + "." + ], + "fuzz/acert-test" => [ + "include" + ], "fuzz/asn1-test" => [ "include" ], @@ -17993,12 +20774,69 @@ our %unified_info = ( "fuzz/ct-test" => [ "include" ], + "fuzz/decoder-test" => [ + "include" + ], + "fuzz/dtlsclient-test" => [ + "include" + ], + "fuzz/dtlsserver-test" => [ + "include" + ], + "fuzz/hashtable-test" => [ + "include" + ], + "fuzz/ml-dsa-test" => [ + "include" + ], + "fuzz/ml-kem-test" => [ + "include" + ], + "fuzz/pem-test" => [ + "include" + ], + "fuzz/provider-test" => [ + "include" + ], + "fuzz/punycode-test" => [ + "include" + ], + "fuzz/quic-client-test" => [ + "include" + ], + "fuzz/quic-lcidm-test" => [ + "include" + ], + "fuzz/quic-rcidm-test" => [ + "include" + ], + "fuzz/quic-server-test" => [ + "include" + ], + "fuzz/quic-srtm-test" => [ + "include" + ], "fuzz/server-test" => [ "include" ], + "fuzz/slh-dsa-test" => [ + "include" + ], + "fuzz/smime-test" => [ + "include" + ], + "fuzz/v3name-test" => [ + "include" + ], "fuzz/x509-test" => [ "include" ], + "include/internal/param_names.h" => [ + "util/perl" + ], + "include/openssl/core_names.h" => [ + "util/perl" + ], "libcrypto" => [ ".", "include", @@ -18009,6 +20847,9 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libcrypto.pc" => [ + "." + ], "libssl" => [ ".", "include" @@ -18017,6 +20858,12 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libssl.pc" => [ + "." + ], + "openssl.pc" => [ + "." + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der" ], @@ -18056,6 +20903,15 @@ our %unified_info = ( "providers/common/der/der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der" ], @@ -18068,6 +20924,15 @@ our %unified_info = ( "providers/common/der/der_rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der" ], @@ -18113,12 +20978,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov" ], @@ -18149,9 +21026,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der" ], @@ -18194,9 +21077,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18209,12 +21098,24 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18227,28 +21128,39 @@ our %unified_info = ( "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libdefault.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libfips.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/liblegacy.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" + ], + "providers/libtemplate.a" => [ + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" ], "test/aborttest" => [ "include", @@ -18317,6 +21229,14 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_addr_test" => [ + "include", + "apps/include" + ], + "test/bio_base64_test" => [ + "include", + "apps/include" + ], "test/bio_callback_test" => [ "include", "apps/include" @@ -18325,11 +21245,20 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_dgram_test" => [ + "include", + "apps/include", + "." + ], "test/bio_enc_test" => [ "include", "apps/include" ], - "test/bio_memleak_test" => [ + "test/bio_memleak_test" => [ + "include", + "apps/include" + ], + "test/bio_meth_test" => [ "include", "apps/include" ], @@ -18346,6 +21275,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_tfo_test" => [ + "include", + "apps/include", + "." + ], "test/bioprinttest" => [ "include", "apps/include" @@ -18360,6 +21294,9 @@ our %unified_info = ( "include", "apps/include" ], + "test/build_wincrypt_test" => [ + "include" + ], "test/buildtest_c_aes" => [ "include" ], @@ -18375,6 +21312,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => [ "include" ], + "test/buildtest_c_byteorder" => [ + "include" + ], "test/buildtest_c_camellia" => [ "include" ], @@ -18399,9 +21339,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => [ "include" ], - "test/buildtest_c_core_names" => [ - "include" - ], "test/buildtest_c_core_object" => [ "include" ], @@ -18426,6 +21363,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => [ "include" ], + "test/buildtest_c_e_ostime" => [ + "include" + ], "test/buildtest_c_ebcdic" => [ "include" ], @@ -18453,12 +21393,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => [ "include" ], + "test/buildtest_c_hpke" => [ + "include" + ], "test/buildtest_c_http" => [ "include" ], "test/buildtest_c_idea" => [ "include" ], + "test/buildtest_c_indicator" => [ + "include" + ], "test/buildtest_c_kdf" => [ "include" ], @@ -18474,6 +21420,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => [ "include" ], + "test/buildtest_c_ml_kem" => [ + "include" + ], "test/buildtest_c_modes" => [ "include" ], @@ -18504,6 +21453,9 @@ our %unified_info = ( "test/buildtest_c_provider" => [ "include" ], + "test/buildtest_c_quic" => [ + "include" + ], "test/buildtest_c_rand" => [ "include" ], @@ -18546,6 +21498,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => [ "include" ], + "test/buildtest_c_thread" => [ + "include" + ], "test/buildtest_c_tls1" => [ "include" ], @@ -18561,10 +21516,24 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => [ "include" ], + "test/byteorder_test" => [ + "include", + "apps/include" + ], + "test/ca_internals_test" => [ + ".", + "include", + "apps/include" + ], "test/casttest" => [ "include", "apps/include" ], + "test/cert_comp_test" => [ + "include", + "apps/include", + "." + ], "test/chacha_internal_test" => [ ".", "include", @@ -18688,6 +21657,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/decoder_propq_test" => [ + ".", + "include", + "apps/include" + ], "test/defltfips_test" => [ "include", "apps/include" @@ -18703,7 +21677,8 @@ our %unified_info = ( "test/drbgtest" => [ "include", "apps/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "test/dsa_no_digest_size_test" => [ "include", @@ -18746,7 +21721,9 @@ our %unified_info = ( "test/endecode_test" => [ ".", "include", - "apps/include" + "apps/include", + "providers/common/include", + "providers/implementations/include" ], "test/endecoder_legacy_test" => [ ".", @@ -18791,6 +21768,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_pkey_dhkem_test" => [ + "include", + "apps/include" + ], "test/evp_pkey_dparams_test" => [ "include", "apps/include" @@ -18799,10 +21780,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_skey_test" => [ + "include", + "apps/include" + ], "test/evp_test" => [ "include", "apps/include" ], + "test/evp_xof_test" => [ + "include", + "apps/include" + ], "test/exdatatest" => [ "include", "apps/include" @@ -18903,22 +21892,62 @@ our %unified_info = ( ".", "include" ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/pkcs12.o" => [ ".", "include" ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + ".", + "include" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ ".", "include" ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/ssl_test-bin-handshake.o" => [ ".", "include" @@ -18952,6 +21981,10 @@ our %unified_info = ( ".", "include" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/hexstr_test" => [ ".", "include", @@ -18961,6 +21994,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/hpke_test" => [ + "include", + "apps/include" + ], "test/http_test" => [ "include", "apps/include" @@ -18973,6 +22010,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/json_test" => [ + "include", + "apps/include" + ], "test/keymgmt_internal_test" => [ ".", "include", @@ -18987,6 +22028,10 @@ our %unified_info = ( "apps/include", "." ], + "test/list_test" => [ + "include", + "apps/include" + ], "test/localetest" => [ "include", "apps/include" @@ -19000,10 +22045,27 @@ our %unified_info = ( "include", "apps/include" ], + "test/membio_test" => [ + "include", + "apps/include", + "." + ], "test/memleaktest" => [ "include", "apps/include" ], + "test/ml_dsa_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_evp_extra_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_internal_test" => [ + "include", + "apps/include" + ], "test/modes_internal_test" => [ ".", "include", @@ -19038,6 +22100,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pairwise_fail_test" => [ + "include", + "apps/include" + ], "test/param_build_test" => [ "include", "apps/include" @@ -19071,6 +22137,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pkcs12_api_test" => [ + "include", + "apps/include" + ], "test/pkcs12_format_test" => [ "include", "apps/include" @@ -19092,6 +22162,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/priority_queue_test" => [ + "include", + "apps/include" + ], "test/property_test" => [ ".", "include", @@ -19105,6 +22179,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/provider_default_search_path_test" => [ + "include", + "apps/include" + ], "test/provider_fallback_test" => [ "include", "apps/include" @@ -19131,6 +22209,97 @@ our %unified_info = ( "include", "apps/include" ], + "test/quic_ackm_test" => [ + "include", + "apps/include" + ], + "test/quic_cc_test" => [ + "include", + "apps/include" + ], + "test/quic_cfq_test" => [ + "include", + "apps/include" + ], + "test/quic_client_test" => [ + "include", + "apps/include" + ], + "test/quic_fc_test" => [ + "include", + "apps/include" + ], + "test/quic_fifd_test" => [ + "include", + "apps/include" + ], + "test/quic_lcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_multistream_test" => [ + "include", + "apps/include" + ], + "test/quic_newcid_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_qlog_test" => [ + "include", + "apps/include" + ], + "test/quic_radix_test" => [ + "include", + "apps/include" + ], + "test/quic_rcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_record_test" => [ + "include", + "apps/include" + ], + "test/quic_srt_gen_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_srtm_test" => [ + "include", + "apps/include" + ], + "test/quic_stream_test" => [ + "include", + "apps/include" + ], + "test/quic_tserver_test" => [ + "include", + "apps/include" + ], + "test/quic_txp_test" => [ + "include", + "apps/include" + ], + "test/quic_txpim_test" => [ + "include", + "apps/include" + ], + "test/quic_wire_test" => [ + "include", + "apps/include" + ], + "test/quicapitest" => [ + "include", + "apps/include" + ], + "test/quicfaultstest" => [ + "include", + "apps/include", + "." + ], "test/rand_status_test" => [ "include", "apps/include" @@ -19151,14 +22320,20 @@ our %unified_info = ( "include", "apps/include" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "include", - "apps/include" + "apps/include", + "crypto" ], "test/recordlentest" => [ "include", "apps/include" ], + "test/rpktest" => [ + "include", + "apps/include", + "." + ], "test/rsa_complex" => [ "include", "apps/include" @@ -19177,6 +22352,15 @@ our %unified_info = ( "include", "apps/include" ], + "test/rsa_x931_test" => [ + ".", + "include", + "apps/include" + ], + "test/safe_math_test" => [ + "include", + "apps/include" + ], "test/sanitytest" => [ "include", "apps/include" @@ -19198,6 +22382,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/slh_dsa_test" => [ + "include", + "apps/include" + ], "test/sm2_internal_test" => [ "include", "apps/include" @@ -19228,6 +22416,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/ssl_handshake_rtt_test" => [ + "include", + "apps/include", + "." + ], "test/ssl_old_test" => [ ".", "include", @@ -19244,6 +22437,7 @@ our %unified_info = ( "test/sslapitest" => [ "include", "apps/include", + "providers/common/include", "." ], "test/sslbuffertest" => [ @@ -19258,6 +22452,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/strtoultest" => [ + "include", + "apps/include" + ], "test/sysdefaulttest" => [ "include", "apps/include" @@ -19266,7 +22464,13 @@ our %unified_info = ( "include", "apps/include" ], + "test/threadpool_test" => [ + ".", + "include", + "apps/include" + ], "test/threadstest" => [ + ".", "include", "apps/include" ], @@ -19278,6 +22482,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/time_test" => [ + "include", + "apps/include" + ], "test/tls13ccstest" => [ "include", "apps/include" @@ -19287,6 +22495,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/tls13groupselection_test" => [ + "include", + "apps/include" + ], "test/trace_api_test" => [ ".", "include", @@ -19325,6 +22537,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_acert_test" => [ + "include", + "apps/include" + ], "test/x509_check_cert_pkey_test" => [ "include", "apps/include" @@ -19338,6 +22554,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_load_cert_file_test" => [ + "include", + "apps/include" + ], + "test/x509_req_test" => [ + "include", + "apps/include" + ], + "test/x509_test" => [ + "include", + "apps/include" + ], "test/x509_time_test" => [ "include", "apps/include" @@ -19359,6 +22587,7 @@ our %unified_info = ( "providers/libdefault.a", "providers/libfips.a", "providers/liblegacy.a", + "providers/libtemplate.a", "test/libtestutil.a" ], "mandocs" => { @@ -19411,6 +22640,7 @@ our %unified_info = ( "doc/man/man1/openssl-s_server.1", "doc/man/man1/openssl-s_time.1", "doc/man/man1/openssl-sess_id.1", + "doc/man/man1/openssl-skeyutl.1", "doc/man/man1/openssl-smime.1", "doc/man/man1/openssl-speed.1", "doc/man/man1/openssl-spkac.1", @@ -19460,6 +22690,7 @@ our %unified_info = ( "doc/man/man3/BIO_find_type.3", "doc/man/man3/BIO_get_data.3", "doc/man/man3/BIO_get_ex_new_index.3", + "doc/man/man3/BIO_get_rpoll_descriptor.3", "doc/man/man3/BIO_meth_new.3", "doc/man/man3/BIO_new.3", "doc/man/man3/BIO_new_CMS.3", @@ -19472,11 +22703,13 @@ our %unified_info = ( "doc/man/man3/BIO_s_connect.3", "doc/man/man3/BIO_s_core.3", "doc/man/man3/BIO_s_datagram.3", + "doc/man/man3/BIO_s_dgram_pair.3", "doc/man/man3/BIO_s_fd.3", "doc/man/man3/BIO_s_file.3", "doc/man/man3/BIO_s_mem.3", "doc/man/man3/BIO_s_null.3", "doc/man/man3/BIO_s_socket.3", + "doc/man/man3/BIO_sendmmsg.3", "doc/man/man3/BIO_set_callback.3", "doc/man/man3/BIO_should_retry.3", "doc/man/man3/BIO_socket_wait.3", @@ -19501,6 +22734,7 @@ our %unified_info = ( "doc/man/man3/BN_swap.3", "doc/man/man3/BN_zero.3", "doc/man/man3/BUF_MEM_new.3", + "doc/man/man3/CMAC_CTX.3", "doc/man/man3/CMS_EncryptedData_decrypt.3", "doc/man/man3/CMS_EncryptedData_encrypt.3", "doc/man/man3/CMS_EnvelopedData_create.3", @@ -19523,6 +22757,7 @@ our %unified_info = ( "doc/man/man3/CMS_uncompress.3", "doc/man/man3/CMS_verify.3", "doc/man/man3/CMS_verify_receipt.3", + "doc/man/man3/COMP_CTX_new.3", "doc/man/man3/CONF_modules_free.3", "doc/man/man3/CONF_modules_load_file.3", "doc/man/man3/CRYPTO_THREAD_run_once.3", @@ -19556,6 +22791,8 @@ our %unified_info = ( "doc/man/man3/DSA_size.3", "doc/man/man3/DTLS_get_data_mtu.3", "doc/man/man3/DTLS_set_timer_cb.3", + "doc/man/man3/DTLSv1_get_timeout.3", + "doc/man/man3/DTLSv1_handle_timeout.3", "doc/man/man3/DTLSv1_listen.3", "doc/man/man3/ECDSA_SIG_new.3", "doc/man/man3/ECDSA_sign.3", @@ -19602,6 +22839,7 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_ctrl.3", "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3", "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3", + "doc/man/man3/EVP_PKEY_CTX_get_algor.3", "doc/man/man3/EVP_PKEY_CTX_new.3", "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3", "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3", @@ -19641,6 +22879,8 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_verify_recover.3", "doc/man/man3/EVP_RAND.3", "doc/man/man3/EVP_SIGNATURE.3", + "doc/man/man3/EVP_SKEY.3", + "doc/man/man3/EVP_SKEYMGMT.3", "doc/man/man3/EVP_SealInit.3", "doc/man/man3/EVP_SignInit.3", "doc/man/man3/EVP_VerifyInit.3", @@ -19670,6 +22910,7 @@ our %unified_info = ( "doc/man/man3/EVP_sm3.3", "doc/man/man3/EVP_sm4_cbc.3", "doc/man/man3/EVP_whirlpool.3", + "doc/man/man3/GENERAL_NAME.3", "doc/man/man3/HMAC.3", "doc/man/man3/MD5.3", "doc/man/man3/MDC2_Init.3", @@ -19694,14 +22935,18 @@ our %unified_info = ( "doc/man/man3/OPENSSL_init_ssl.3", "doc/man/man3/OPENSSL_instrument_bus.3", "doc/man/man3/OPENSSL_load_builtin_modules.3", + "doc/man/man3/OPENSSL_load_u16_le.3", "doc/man/man3/OPENSSL_malloc.3", + "doc/man/man3/OPENSSL_riscvcap.3", "doc/man/man3/OPENSSL_s390xcap.3", "doc/man/man3/OPENSSL_secure_malloc.3", "doc/man/man3/OPENSSL_strcasecmp.3", "doc/man/man3/OSSL_ALGORITHM.3", "doc/man/man3/OSSL_CALLBACK.3", + "doc/man/man3/OSSL_CMP_ATAV_set0.3", "doc/man/man3/OSSL_CMP_CTX_new.3", "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3", + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3", "doc/man/man3/OSSL_CMP_ITAV_set0.3", "doc/man/man3/OSSL_CMP_MSG_get0_header.3", "doc/man/man3/OSSL_CMP_MSG_http_perform.3", @@ -19725,18 +22970,27 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_CTX.3", "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3", "doc/man/man3/OSSL_ENCODER_to_bio.3", + "doc/man/man3/OSSL_ERR_STATE_save.3", "doc/man/man3/OSSL_ESS_check_signing_certs.3", + "doc/man/man3/OSSL_GENERAL_NAMES_print.3", + "doc/man/man3/OSSL_HPKE_CTX_new.3", "doc/man/man3/OSSL_HTTP_REQ_CTX.3", "doc/man/man3/OSSL_HTTP_parse_url.3", "doc/man/man3/OSSL_HTTP_transfer.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3", + "doc/man/man3/OSSL_INDICATOR_set_callback.3", "doc/man/man3/OSSL_ITEM.3", "doc/man/man3/OSSL_LIB_CTX.3", + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3", "doc/man/man3/OSSL_PARAM.3", "doc/man/man3/OSSL_PARAM_BLD.3", "doc/man/man3/OSSL_PARAM_allocate_from_text.3", "doc/man/man3/OSSL_PARAM_dup.3", "doc/man/man3/OSSL_PARAM_int.3", + "doc/man/man3/OSSL_PARAM_print_to_bio.3", "doc/man/man3/OSSL_PROVIDER.3", + "doc/man/man3/OSSL_QUIC_client_method.3", "doc/man/man3/OSSL_SELF_TEST_new.3", "doc/man/man3/OSSL_SELF_TEST_set_callback.3", "doc/man/man3/OSSL_STORE_INFO.3", @@ -19745,11 +22999,13 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_attach.3", "doc/man/man3/OSSL_STORE_expect.3", "doc/man/man3/OSSL_STORE_open.3", + "doc/man/man3/OSSL_sleep.3", "doc/man/man3/OSSL_trace_enabled.3", "doc/man/man3/OSSL_trace_get_category_num.3", "doc/man/man3/OSSL_trace_set_channel.3", "doc/man/man3/OpenSSL_add_all_algorithms.3", "doc/man/man3/OpenSSL_version.3", + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3", "doc/man/man3/PEM_X509_INFO_read_bio_ex.3", "doc/man/man3/PEM_bytes_read_bio.3", "doc/man/man3/PEM_read.3", @@ -19762,6 +23018,7 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_create_cert.3", "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3", "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3", + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3", "doc/man/man3/PKCS12_add1_attr_by_NID.3", "doc/man/man3/PKCS12_add_CSPName_asc.3", "doc/man/man3/PKCS12_add_cert.3", @@ -19853,6 +23110,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_sess_set_get_cb.3", "doc/man/man3/SSL_CTX_sessions.3", "doc/man/man3/SSL_CTX_set0_CA_list.3", + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3", "doc/man/man3/SSL_CTX_set1_curves.3", "doc/man/man3/SSL_CTX_set1_sigalgs.3", "doc/man/man3/SSL_CTX_set1_verify_cert_store.3", @@ -19866,6 +23124,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_ct_validation_callback.3", "doc/man/man3/SSL_CTX_set_ctlog_list_file.3", "doc/man/man3/SSL_CTX_set_default_passwd_cb.3", + "doc/man/man3/SSL_CTX_set_domain_flags.3", "doc/man/man3/SSL_CTX_set_generate_session_id.3", "doc/man/man3/SSL_CTX_set_info_callback.3", "doc/man/man3/SSL_CTX_set_keylog_callback.3", @@ -19873,6 +23132,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_min_proto_version.3", "doc/man/man3/SSL_CTX_set_mode.3", "doc/man/man3/SSL_CTX_set_msg_callback.3", + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3", "doc/man/man3/SSL_CTX_set_num_tickets.3", "doc/man/man3/SSL_CTX_set_options.3", "doc/man/man3/SSL_CTX_set_psk_client_callback.3", @@ -19911,6 +23171,7 @@ our %unified_info = ( "doc/man/man3/SSL_SESSION_print.3", "doc/man/man3/SSL_SESSION_set1_id.3", "doc/man/man3/SSL_accept.3", + "doc/man/man3/SSL_accept_stream.3", "doc/man/man3/SSL_alert_type_string.3", "doc/man/man3/SSL_alloc_buffers.3", "doc/man/man3/SSL_check_chain.3", @@ -19920,59 +23181,90 @@ our %unified_info = ( "doc/man/man3/SSL_export_keying_material.3", "doc/man/man3/SSL_extension_supported.3", "doc/man/man3/SSL_free.3", + "doc/man/man3/SSL_get0_connection.3", + "doc/man/man3/SSL_get0_group_name.3", + "doc/man/man3/SSL_get0_peer_rpk.3", "doc/man/man3/SSL_get0_peer_scts.3", + "doc/man/man3/SSL_get1_builtin_sigalgs.3", "doc/man/man3/SSL_get_SSL_CTX.3", "doc/man/man3/SSL_get_all_async_fds.3", "doc/man/man3/SSL_get_certificate.3", "doc/man/man3/SSL_get_ciphers.3", "doc/man/man3/SSL_get_client_random.3", + "doc/man/man3/SSL_get_conn_close_info.3", "doc/man/man3/SSL_get_current_cipher.3", "doc/man/man3/SSL_get_default_timeout.3", "doc/man/man3/SSL_get_error.3", + "doc/man/man3/SSL_get_event_timeout.3", "doc/man/man3/SSL_get_extms_support.3", "doc/man/man3/SSL_get_fd.3", + "doc/man/man3/SSL_get_handshake_rtt.3", "doc/man/man3/SSL_get_peer_cert_chain.3", "doc/man/man3/SSL_get_peer_certificate.3", "doc/man/man3/SSL_get_peer_signature_nid.3", "doc/man/man3/SSL_get_peer_tmp_key.3", "doc/man/man3/SSL_get_psk_identity.3", "doc/man/man3/SSL_get_rbio.3", + "doc/man/man3/SSL_get_rpoll_descriptor.3", "doc/man/man3/SSL_get_session.3", "doc/man/man3/SSL_get_shared_sigalgs.3", + "doc/man/man3/SSL_get_stream_id.3", + "doc/man/man3/SSL_get_stream_read_state.3", + "doc/man/man3/SSL_get_value_uint.3", "doc/man/man3/SSL_get_verify_result.3", "doc/man/man3/SSL_get_version.3", "doc/man/man3/SSL_group_to_name.3", + "doc/man/man3/SSL_handle_events.3", "doc/man/man3/SSL_in_init.3", + "doc/man/man3/SSL_inject_net_dgram.3", "doc/man/man3/SSL_key_update.3", "doc/man/man3/SSL_library_init.3", "doc/man/man3/SSL_load_client_CA_file.3", "doc/man/man3/SSL_new.3", + "doc/man/man3/SSL_new_domain.3", + "doc/man/man3/SSL_new_listener.3", + "doc/man/man3/SSL_new_stream.3", "doc/man/man3/SSL_pending.3", + "doc/man/man3/SSL_poll.3", "doc/man/man3/SSL_read.3", "doc/man/man3/SSL_read_early_data.3", "doc/man/man3/SSL_rstate_string.3", "doc/man/man3/SSL_session_reused.3", "doc/man/man3/SSL_set1_host.3", + "doc/man/man3/SSL_set1_initial_peer_addr.3", + "doc/man/man3/SSL_set1_server_cert_type.3", "doc/man/man3/SSL_set_async_callback.3", "doc/man/man3/SSL_set_bio.3", + "doc/man/man3/SSL_set_blocking_mode.3", "doc/man/man3/SSL_set_connect_state.3", + "doc/man/man3/SSL_set_default_stream_mode.3", "doc/man/man3/SSL_set_fd.3", + "doc/man/man3/SSL_set_incoming_stream_policy.3", + "doc/man/man3/SSL_set_quic_tls_cbs.3", "doc/man/man3/SSL_set_retry_verify.3", "doc/man/man3/SSL_set_session.3", + "doc/man/man3/SSL_set_session_secret_cb.3", "doc/man/man3/SSL_set_shutdown.3", "doc/man/man3/SSL_set_verify_result.3", "doc/man/man3/SSL_shutdown.3", "doc/man/man3/SSL_state_string.3", + "doc/man/man3/SSL_stream_conclude.3", + "doc/man/man3/SSL_stream_reset.3", "doc/man/man3/SSL_want.3", "doc/man/man3/SSL_write.3", "doc/man/man3/TS_RESP_CTX_new.3", - "doc/man/man3/TS_VERIFY_CTX_set_certs.3", + "doc/man/man3/TS_VERIFY_CTX.3", "doc/man/man3/UI_STRING.3", "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", + "doc/man/man3/X509_ACERT_add1_attr.3", + "doc/man/man3/X509_ACERT_add_attr_nconf.3", + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3", + "doc/man/man3/X509_ACERT_get_attr.3", + "doc/man/man3/X509_ACERT_print_ex.3", "doc/man/man3/X509_ALGOR_dup.3", "doc/man/man3/X509_ATTRIBUTE.3", "doc/man/man3/X509_CRL_get0_by_serial.3", @@ -19989,6 +23281,7 @@ our %unified_info = ( "doc/man/man3/X509_REQ_get_attr.3", "doc/man/man3/X509_REQ_get_extensions.3", "doc/man/man3/X509_SIG_get0.3", + "doc/man/man3/X509_STORE_CTX_get_by_subject.3", "doc/man/man3/X509_STORE_CTX_get_error.3", "doc/man/man3/X509_STORE_CTX_new.3", "doc/man/man3/X509_STORE_CTX_set_verify_cb.3", @@ -20011,6 +23304,7 @@ our %unified_info = ( "doc/man/man3/X509_get0_notBefore.3", "doc/man/man3/X509_get0_signature.3", "doc/man/man3/X509_get0_uids.3", + "doc/man/man3/X509_get_default_cert_file.3", "doc/man/man3/X509_get_extension_flags.3", "doc/man/man3/X509_get_pubkey.3", "doc/man/man3/X509_get_serialNumber.3", @@ -20056,12 +23350,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-RC5.7", "doc/man/man7/EVP_CIPHER-SEED.7", "doc/man/man7/EVP_CIPHER-SM4.7", + "doc/man/man7/EVP_KDF-ARGON2.7", "doc/man/man7/EVP_KDF-HKDF.7", + "doc/man/man7/EVP_KDF-HMAC-DRBG.7", "doc/man/man7/EVP_KDF-KB.7", "doc/man/man7/EVP_KDF-KRB5KDF.7", "doc/man/man7/EVP_KDF-PBKDF1.7", "doc/man/man7/EVP_KDF-PBKDF2.7", "doc/man/man7/EVP_KDF-PKCS12KDF.7", + "doc/man/man7/EVP_KDF-PVKKDF.7", "doc/man/man7/EVP_KDF-SCRYPT.7", "doc/man/man7/EVP_KDF-SS.7", "doc/man/man7/EVP_KDF-SSHKDF.7", @@ -20070,7 +23367,10 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X942-ASN1.7", "doc/man/man7/EVP_KDF-X942-CONCAT.7", "doc/man/man7/EVP_KDF-X963.7", + "doc/man/man7/EVP_KEM-EC.7", + "doc/man/man7/EVP_KEM-ML-KEM.7", "doc/man/man7/EVP_KEM-RSA.7", + "doc/man/man7/EVP_KEM-X25519.7", "doc/man/man7/EVP_KEYEXCH-DH.7", "doc/man/man7/EVP_KEYEXCH-ECDH.7", "doc/man/man7/EVP_KEYEXCH-X25519.7", @@ -20082,6 +23382,7 @@ our %unified_info = ( "doc/man/man7/EVP_MAC-Poly1305.7", "doc/man/man7/EVP_MAC-Siphash.7", "doc/man/man7/EVP_MD-BLAKE2.7", + "doc/man/man7/EVP_MD-KECCAK.7", "doc/man/man7/EVP_MD-MD2.7", "doc/man/man7/EVP_MD-MD4.7", "doc/man/man7/EVP_MD-MD5-SHA1.7", @@ -20101,12 +23402,17 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-EC.7", "doc/man/man7/EVP_PKEY-FFC.7", "doc/man/man7/EVP_PKEY-HMAC.7", + "doc/man/man7/EVP_PKEY-ML-DSA.7", + "doc/man/man7/EVP_PKEY-ML-KEM.7", "doc/man/man7/EVP_PKEY-RSA.7", + "doc/man/man7/EVP_PKEY-SLH-DSA.7", "doc/man/man7/EVP_PKEY-SM2.7", "doc/man/man7/EVP_PKEY-X25519.7", + "doc/man/man7/EVP_RAND-CRNG-TEST.7", "doc/man/man7/EVP_RAND-CTR-DRBG.7", "doc/man/man7/EVP_RAND-HASH-DRBG.7", "doc/man/man7/EVP_RAND-HMAC-DRBG.7", + "doc/man/man7/EVP_RAND-JITTER.7", "doc/man/man7/EVP_RAND-SEED-SRC.7", "doc/man/man7/EVP_RAND-TEST-RAND.7", "doc/man/man7/EVP_RAND.7", @@ -20114,17 +23420,19 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-ECDSA.7", "doc/man/man7/EVP_SIGNATURE-ED25519.7", "doc/man/man7/EVP_SIGNATURE-HMAC.7", + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7", "doc/man/man7/EVP_SIGNATURE-RSA.7", + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7", "doc/man/man7/OSSL_PROVIDER-FIPS.7", "doc/man/man7/OSSL_PROVIDER-base.7", "doc/man/man7/OSSL_PROVIDER-default.7", "doc/man/man7/OSSL_PROVIDER-legacy.7", "doc/man/man7/OSSL_PROVIDER-null.7", + "doc/man/man7/OSSL_STORE-winstore.7", "doc/man/man7/RAND.7", "doc/man/man7/RSA-PSS.7", "doc/man/man7/X25519.7", "doc/man/man7/bio.7", - "doc/man/man7/crypto.7", "doc/man/man7/ct.7", "doc/man/man7/des_modes.7", "doc/man/man7/evp.7", @@ -20135,14 +23443,31 @@ our %unified_info = ( "doc/man/man7/life_cycle-mac.7", "doc/man/man7/life_cycle-pkey.7", "doc/man/man7/life_cycle-rand.7", - "doc/man/man7/migration_guide.7", "doc/man/man7/openssl-core.h.7", "doc/man/man7/openssl-core_dispatch.h.7", "doc/man/man7/openssl-core_names.h.7", "doc/man/man7/openssl-env.7", "doc/man/man7/openssl-glossary.7", + "doc/man/man7/openssl-qlog.7", + "doc/man/man7/openssl-quic-concurrency.7", + "doc/man/man7/openssl-quic.7", "doc/man/man7/openssl-threads.7", "doc/man/man7/openssl_user_macros.7", + "doc/man/man7/ossl-guide-introduction.7", + "doc/man/man7/ossl-guide-libcrypto-introduction.7", + "doc/man/man7/ossl-guide-libraries-introduction.7", + "doc/man/man7/ossl-guide-libssl-introduction.7", + "doc/man/man7/ossl-guide-migration.7", + "doc/man/man7/ossl-guide-quic-client-block.7", + "doc/man/man7/ossl-guide-quic-client-non-block.7", + "doc/man/man7/ossl-guide-quic-introduction.7", + "doc/man/man7/ossl-guide-quic-multi-stream.7", + "doc/man/man7/ossl-guide-quic-server-block.7", + "doc/man/man7/ossl-guide-quic-server-non-block.7", + "doc/man/man7/ossl-guide-tls-client-block.7", + "doc/man/man7/ossl-guide-tls-client-non-block.7", + "doc/man/man7/ossl-guide-tls-introduction.7", + "doc/man/man7/ossl-guide-tls-server-block.7", "doc/man/man7/ossl_store-file.7", "doc/man/man7/ossl_store.7", "doc/man/man7/passphrase-encoding.7", @@ -20161,10 +23486,10 @@ our %unified_info = ( "doc/man/man7/provider-object.7", "doc/man/man7/provider-rand.7", "doc/man/man7/provider-signature.7", + "doc/man/man7/provider-skeymgmt.7", "doc/man/man7/provider-storemgmt.7", "doc/man/man7/provider.7", "doc/man/man7/proxy-certificates.7", - "doc/man/man7/ssl.7", "doc/man/man7/x509.7" ] }, @@ -20176,6 +23501,7 @@ our %unified_info = ( ], "programs" => [ "apps/openssl", + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -20186,7 +23512,24 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test", "test/aborttest", "test/acvp_test", @@ -20204,21 +23547,28 @@ our %unified_info = ( "test/asynctest", "test/bad_dtls_test", "test/bftest", + "test/bio_addr_test", + "test/bio_base64_test", "test/bio_callback_test", "test/bio_core_test", + "test/bio_dgram_test", "test/bio_enc_test", "test/bio_memleak_test", + "test/bio_meth_test", "test/bio_prefix_text", "test/bio_pw_callback_test", "test/bio_readbuffer_test", + "test/bio_tfo_test", "test/bioprinttest", "test/bn_internal_test", "test/bntest", + "test/build_wincrypt_test", "test/buildtest_c_aes", "test/buildtest_c_async", "test/buildtest_c_blowfish", "test/buildtest_c_bn", "test/buildtest_c_buffer", + "test/buildtest_c_byteorder", "test/buildtest_c_camellia", "test/buildtest_c_cast", "test/buildtest_c_cmac", @@ -20227,7 +23577,6 @@ our %unified_info = ( "test/buildtest_c_conftypes", "test/buildtest_c_core", "test/buildtest_c_core_dispatch", - "test/buildtest_c_core_names", "test/buildtest_c_core_object", "test/buildtest_c_cryptoerr_legacy", "test/buildtest_c_decoder", @@ -20236,6 +23585,7 @@ our %unified_info = ( "test/buildtest_c_dsa", "test/buildtest_c_dtls1", "test/buildtest_c_e_os2", + "test/buildtest_c_e_ostime", "test/buildtest_c_ebcdic", "test/buildtest_c_ec", "test/buildtest_c_ecdh", @@ -20245,13 +23595,16 @@ our %unified_info = ( "test/buildtest_c_evp", "test/buildtest_c_fips_names", "test/buildtest_c_hmac", + "test/buildtest_c_hpke", "test/buildtest_c_http", "test/buildtest_c_idea", + "test/buildtest_c_indicator", "test/buildtest_c_kdf", "test/buildtest_c_macros", "test/buildtest_c_md4", "test/buildtest_c_md5", "test/buildtest_c_mdc2", + "test/buildtest_c_ml_kem", "test/buildtest_c_modes", "test/buildtest_c_obj_mac", "test/buildtest_c_objects", @@ -20262,6 +23615,7 @@ our %unified_info = ( "test/buildtest_c_pem2", "test/buildtest_c_prov_ssl", "test/buildtest_c_provider", + "test/buildtest_c_quic", "test/buildtest_c_rand", "test/buildtest_c_rc2", "test/buildtest_c_rc4", @@ -20276,11 +23630,14 @@ our %unified_info = ( "test/buildtest_c_stack", "test/buildtest_c_store", "test/buildtest_c_symhacks", + "test/buildtest_c_thread", "test/buildtest_c_tls1", "test/buildtest_c_ts", "test/buildtest_c_txt_db", "test/buildtest_c_types", "test/buildtest_c_whrlpool", + "test/byteorder_test", + "test/ca_internals_test", "test/casttest", "test/chacha_internal_test", "test/cipher_overhead_test", @@ -20309,6 +23666,7 @@ our %unified_info = ( "test/curve448_internal_test", "test/d2i_test", "test/danetest", + "test/decoder_propq_test", "test/defltfips_test", "test/destest", "test/dhtest", @@ -20333,9 +23691,12 @@ our %unified_info = ( "test/evp_kdf_test", "test/evp_libctx_test", "test/evp_pkey_ctx_new_from_name", + "test/evp_pkey_dhkem_test", "test/evp_pkey_dparams_test", "test/evp_pkey_provided_test", + "test/evp_skey_test", "test/evp_test", + "test/evp_xof_test", "test/exdatatest", "test/exptest", "test/ext_internal_test", @@ -20345,21 +23706,29 @@ our %unified_info = ( "test/gmdifftest", "test/hexstr_test", "test/hmactest", + "test/hpke_test", "test/http_test", "test/ideatest", "test/igetest", + "test/json_test", "test/keymgmt_internal_test", "test/lhash_test", + "test/list_test", "test/localetest", "test/mdc2_internal_test", "test/mdc2test", + "test/membio_test", "test/memleaktest", + "test/ml_dsa_test", + "test/ml_kem_evp_extra_test", + "test/ml_kem_internal_test", "test/modes_internal_test", "test/namemap_internal_test", "test/nodefltctxtest", "test/ocspapitest", "test/ossl_store_test", "test/packettest", + "test/pairwise_fail_test", "test/param_build_test", "test/params_api_test", "test/params_conversion_test", @@ -20368,36 +23737,65 @@ our %unified_info = ( "test/pbetest", "test/pem_read_depr_test", "test/pemtest", + "test/pkcs12_api_test", "test/pkcs12_format_test", "test/pkcs7_test", "test/pkey_meth_kdf_test", "test/pkey_meth_test", "test/poly1305_internal_test", + "test/priority_queue_test", "test/property_test", "test/prov_config_test", "test/provfetchtest", + "test/provider_default_search_path_test", "test/provider_fallback_test", "test/provider_internal_test", "test/provider_pkey_test", "test/provider_status_test", "test/provider_test", "test/punycode_test", + "test/quic_ackm_test", + "test/quic_cc_test", + "test/quic_cfq_test", + "test/quic_client_test", + "test/quic_fc_test", + "test/quic_fifd_test", + "test/quic_lcidm_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_qlog_test", + "test/quic_radix_test", + "test/quic_rcidm_test", + "test/quic_record_test", + "test/quic_srt_gen_test", + "test/quic_srtm_test", + "test/quic_stream_test", + "test/quic_tserver_test", + "test/quic_txp_test", + "test/quic_txpim_test", + "test/quic_wire_test", + "test/quicapitest", + "test/quicfaultstest", "test/rand_status_test", "test/rand_test", "test/rc2test", "test/rc4test", "test/rc5test", - "test/rdrand_sanitytest", + "test/rdcpu_sanitytest", "test/recordlentest", + "test/rpktest", "test/rsa_complex", "test/rsa_mp_test", "test/rsa_sp800_56b_test", "test/rsa_test", + "test/rsa_x931_test", + "test/safe_math_test", "test/sanitytest", "test/secmemtest", "test/servername_test", "test/sha_test", "test/siphash_internal_test", + "test/slh_dsa_test", "test/sm2_internal_test", "test/sm3_internal_test", "test/sm4_internal_test", @@ -20405,6 +23803,7 @@ our %unified_info = ( "test/srptest", "test/ssl_cert_table_internal_test", "test/ssl_ctx_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", @@ -20412,13 +23811,17 @@ our %unified_info = ( "test/sslbuffertest", "test/sslcorrupttest", "test/stack_test", + "test/strtoultest", "test/sysdefaulttest", "test/test_test", + "test/threadpool_test", "test/threadstest", "test/threadstest_fips", "test/time_offset_test", + "test/time_test", "test/tls13ccstest", "test/tls13encryptiontest", + "test/tls13groupselection_test", "test/trace_api_test", "test/uitest", "test/upcallstest", @@ -20428,9 +23831,13 @@ our %unified_info = ( "test/verify_extra_test", "test/versions", "test/wpackettest", + "test/x509_acert_test", "test/x509_check_cert_pkey_test", "test/x509_dup_cert_test", "test/x509_internal_test", + "test/x509_load_cert_file_test", + "test/x509_req_test", + "test/x509_test", "test/x509_time_test", "test/x509aux" ], @@ -20446,6 +23853,33 @@ our %unified_info = ( "apps/CA.pl" => [ "apps/CA.pl.in" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/ca.c" + ], + "apps/lib/ca_internals_test-bin-app_libctx.o" => [ + "apps/lib/app_libctx.c" + ], + "apps/lib/ca_internals_test-bin-app_provider.o" => [ + "apps/lib/app_provider.c" + ], + "apps/lib/ca_internals_test-bin-app_rand.o" => [ + "apps/lib/app_rand.c" + ], + "apps/lib/ca_internals_test-bin-app_x509.o" => [ + "apps/lib/app_x509.c" + ], + "apps/lib/ca_internals_test-bin-apps.o" => [ + "apps/lib/apps.c" + ], + "apps/lib/ca_internals_test-bin-apps_ui.o" => [ + "apps/lib/apps_ui.c" + ], + "apps/lib/ca_internals_test-bin-engine.o" => [ + "apps/lib/engine.c" + ], + "apps/lib/ca_internals_test-bin-fmt.o" => [ + "apps/lib/fmt.c" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/lib/cmp_mock_srv.c" ], @@ -20467,6 +23901,9 @@ our %unified_info = ( "apps/lib/libapps-lib-apps.o" => [ "apps/lib/apps.c" ], + "apps/lib/libapps-lib-apps_opt_printf.o" => [ + "apps/lib/apps_opt_printf.c" + ], "apps/lib/libapps-lib-apps_ui.o" => [ "apps/lib/apps_ui.c" ], @@ -20485,6 +23922,9 @@ our %unified_info = ( "apps/lib/libapps-lib-http_server.o" => [ "apps/lib/http_server.c" ], + "apps/lib/libapps-lib-log.o" => [ + "apps/lib/log.c" + ], "apps/lib/libapps-lib-names.o" => [ "apps/lib/names.c" ], @@ -20516,12 +23956,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -20575,6 +24017,7 @@ our %unified_info = ( "apps/openssl-bin-s_server.o", "apps/openssl-bin-s_time.o", "apps/openssl-bin-sess_id.o", + "apps/openssl-bin-skeyutl.o", "apps/openssl-bin-smime.o", "apps/openssl-bin-speed.o", "apps/openssl-bin-spkac.o", @@ -20720,6 +24163,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/sess_id.c" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/skeyutl.c" + ], "apps/openssl-bin-smime.o" => [ "apps/smime.c" ], @@ -20795,6 +24241,12 @@ our %unified_info = ( "crypto/aria/libcrypto-lib-aria.o" => [ "crypto/aria/aria.c" ], + "crypto/asn1/asn1_time_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], + "crypto/asn1/ca_internals_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], "crypto/asn1/libcrypto-lib-a_bitstr.o" => [ "crypto/asn1/a_bitstr.c" ], @@ -20987,6 +24439,9 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" => [ "crypto/asn1/x_val.c" ], + "crypto/asn1_time_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/async/arch/libcrypto-lib-async_null.o" => [ "crypto/async/arch/async_null.c" ], @@ -21080,6 +24535,9 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_dgram.o" => [ "crypto/bio/bss_dgram.c" ], + "crypto/bio/libcrypto-lib-bss_dgram_pair.o" => [ + "crypto/bio/bss_dgram_pair.c" + ], "crypto/bio/libcrypto-lib-bss_fd.o" => [ "crypto/bio/bss_fd.c" ], @@ -21311,6 +24769,9 @@ our %unified_info = ( "crypto/buffer/libfips-lib-buffer.o" => [ "crypto/buffer/buffer.c" ], + "crypto/ca_internals_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/camellia/libcrypto-lib-cmll-x86.o" => [ "crypto/camellia/cmll-x86.S" ], @@ -21362,6 +24823,9 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_err.o" => [ "crypto/cmp/cmp_err.c" ], + "crypto/cmp/libcrypto-lib-cmp_genm.o" => [ + "crypto/cmp/cmp_genm.c" + ], "crypto/cmp/libcrypto-lib-cmp_hdr.o" => [ "crypto/cmp/cmp_hdr.c" ], @@ -22049,9 +25513,15 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_blocks.o" => [ "crypto/err/err_blocks.c" ], + "crypto/err/libcrypto-lib-err_mark.o" => [ + "crypto/err/err_mark.c" + ], "crypto/err/libcrypto-lib-err_prn.o" => [ "crypto/err/err_prn.c" ], + "crypto/err/libcrypto-lib-err_save.o" => [ + "crypto/err/err_save.c" + ], "crypto/ess/libcrypto-lib-ess_asn1.o" => [ "crypto/ess/ess_asn1.c" ], @@ -22298,9 +25768,15 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libcrypto-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libcrypto-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libcrypto-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/evp/libfips-lib-asymcipher.o" => [ "crypto/evp/asymcipher.c" ], @@ -22346,9 +25822,6 @@ our %unified_info = ( "crypto/evp/libfips-lib-keymgmt_meth.o" => [ "crypto/evp/keymgmt_meth.c" ], - "crypto/evp/libfips-lib-m_sigver.o" => [ - "crypto/evp/m_sigver.c" - ], "crypto/evp/libfips-lib-mac_lib.o" => [ "crypto/evp/mac_lib.c" ], @@ -22367,9 +25840,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libfips-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libfips-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libfips-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/ffc/libcrypto-lib-ffc_backend.o" => [ "crypto/ffc/ffc_backend.c" ], @@ -22412,12 +25891,30 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params_validate.o" => [ "crypto/ffc/ffc_params_validate.c" ], + "crypto/hashtable/libcrypto-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libcrypto-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], + "crypto/hashtable/libfips-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libfips-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], "crypto/hmac/libcrypto-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], "crypto/hmac/libfips-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], + "crypto/hpke/libcrypto-lib-hpke.o" => [ + "crypto/hpke/hpke.c" + ], + "crypto/hpke/libcrypto-lib-hpke_util.o" => [ + "crypto/hpke/hpke_util.c" + ], "crypto/http/libcrypto-lib-http_client.o" => [ "crypto/http/http_client.c" ], @@ -22460,6 +25957,9 @@ our %unified_info = ( "crypto/libcrypto-lib-bsearch.o" => [ "crypto/bsearch.c" ], + "crypto/libcrypto-lib-comp_methods.o" => [ + "crypto/comp_methods.c" + ], "crypto/libcrypto-lib-context.o" => [ "crypto/context.c" ], @@ -22487,9 +25987,15 @@ our %unified_info = ( "crypto/libcrypto-lib-cversion.o" => [ "crypto/cversion.c" ], + "crypto/libcrypto-lib-defaults.o" => [ + "crypto/defaults.c" + ], "crypto/libcrypto-lib-der_writer.o" => [ "crypto/der_writer.c" ], + "crypto/libcrypto-lib-deterministic_nonce.o" => [ + "crypto/deterministic_nonce.c" + ], "crypto/libcrypto-lib-ebcdic.o" => [ "crypto/ebcdic.c" ], @@ -22499,6 +26005,9 @@ our %unified_info = ( "crypto/libcrypto-lib-getenv.o" => [ "crypto/getenv.c" ], + "crypto/libcrypto-lib-indicator_core.o" => [ + "crypto/indicator_core.c" + ], "crypto/libcrypto-lib-info.o" => [ "crypto/info.c" ], @@ -22547,6 +26056,9 @@ our %unified_info = ( "crypto/libcrypto-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libcrypto-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libcrypto-lib-passphrase.o" => [ "crypto/passphrase.c" ], @@ -22568,12 +26080,21 @@ our %unified_info = ( "crypto/libcrypto-lib-punycode.o" => [ "crypto/punycode.c" ], + "crypto/libcrypto-lib-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/libcrypto-lib-self_test_core.o" => [ "crypto/self_test_core.c" ], + "crypto/libcrypto-lib-sleep.o" => [ + "crypto/sleep.c" + ], "crypto/libcrypto-lib-sparse_array.o" => [ "crypto/sparse_array.c" ], + "crypto/libcrypto-lib-ssl_err.o" => [ + "crypto/ssl_err.c" + ], "crypto/libcrypto-lib-threads_lib.o" => [ "crypto/threads_lib.c" ], @@ -22586,6 +26107,9 @@ our %unified_info = ( "crypto/libcrypto-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libcrypto-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libcrypto-lib-trace.o" => [ "crypto/trace.c" ], @@ -22652,6 +26176,9 @@ our %unified_info = ( "crypto/libfips-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libfips-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libfips-lib-provider_core.o" => [ "crypto/provider_core.c" ], @@ -22676,6 +26203,9 @@ our %unified_info = ( "crypto/libfips-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libfips-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libfips-lib-x86cpuid.o" => [ "crypto/x86cpuid.S" ], @@ -22703,6 +26233,60 @@ our %unified_info = ( "crypto/mdc2/libcrypto-lib-mdc2dgst.o" => [ "crypto/mdc2/mdc2dgst.c" ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_kem/libcrypto-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], + "crypto/ml_kem/libfips-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], "crypto/modes/libcrypto-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22739,6 +26323,9 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libcrypto-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/modes/libfips-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22766,6 +26353,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libfips-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/objects/libcrypto-lib-o_names.o" => [ "crypto/objects/o_names.c" ], @@ -22811,6 +26401,9 @@ our %unified_info = ( "crypto/ocsp/libcrypto-lib-v3_ocsp.o" => [ "crypto/ocsp/v3_ocsp.c" ], + "crypto/packettest-bin-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/pem/libcrypto-lib-pem_all.o" => [ "crypto/pem/pem_all.c" ], @@ -22973,6 +26566,9 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_pool.o" => [ "crypto/rand/rand_pool.c" ], + "crypto/rand/libcrypto-lib-rand_uniform.o" => [ + "crypto/rand/rand_uniform.c" + ], "crypto/rand/libcrypto-lib-randfile.o" => [ "crypto/rand/randfile.c" ], @@ -23204,6 +26800,66 @@ our %unified_info = ( "crypto/siphash/libcrypto-lib-siphash.o" => [ "crypto/siphash/siphash.c" ], + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], + "crypto/slh_dsa/libfips-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libfips-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libfips-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libfips-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libfips-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], "crypto/sm2/libcrypto-lib-sm2_crypt.o" => [ "crypto/sm2/sm2_crypt.c" ], @@ -23258,6 +26914,42 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_strings.o" => [ "crypto/store/store_strings.c" ], + "crypto/thread/arch/libcrypto-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/arch/libfips-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libfips-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libfips-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/libcrypto-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libcrypto-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libcrypto-lib-internal.o" => [ + "crypto/thread/internal.c" + ], + "crypto/thread/libfips-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libfips-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libfips-lib-internal.o" => [ + "crypto/thread/internal.c" + ], "crypto/ts/libcrypto-lib-ts_asn1.o" => [ "crypto/ts/ts_asn1.c" ], @@ -23345,6 +27037,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_tree.o" => [ "crypto/x509/pcy_tree.c" ], + "crypto/x509/libcrypto-lib-t_acert.o" => [ + "crypto/x509/t_acert.c" + ], "crypto/x509/libcrypto-lib-t_crl.o" => [ "crypto/x509/t_crl.c" ], @@ -23354,6 +27049,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-t_x509.o" => [ "crypto/x509/t_x509.c" ], + "crypto/x509/libcrypto-lib-v3_aaa.o" => [ + "crypto/x509/v3_aaa.c" + ], + "crypto/x509/libcrypto-lib-v3_ac_tgt.o" => [ + "crypto/x509/v3_ac_tgt.c" + ], "crypto/x509/libcrypto-lib-v3_addr.o" => [ "crypto/x509/v3_addr.c" ], @@ -23369,6 +27070,21 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_asid.o" => [ "crypto/x509/v3_asid.c" ], + "crypto/x509/libcrypto-lib-v3_attrdesc.o" => [ + "crypto/x509/v3_attrdesc.c" + ], + "crypto/x509/libcrypto-lib-v3_attrmap.o" => [ + "crypto/x509/v3_attrmap.c" + ], + "crypto/x509/libcrypto-lib-v3_audit_id.o" => [ + "crypto/x509/v3_audit_id.c" + ], + "crypto/x509/libcrypto-lib-v3_authattid.o" => [ + "crypto/x509/v3_authattid.c" + ], + "crypto/x509/libcrypto-lib-v3_battcons.o" => [ + "crypto/x509/v3_battcons.c" + ], "crypto/x509/libcrypto-lib-v3_bcons.o" => [ "crypto/x509/v3_bcons.c" ], @@ -23393,15 +27109,24 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_genn.o" => [ "crypto/x509/v3_genn.c" ], + "crypto/x509/libcrypto-lib-v3_group_ac.o" => [ + "crypto/x509/v3_group_ac.c" + ], "crypto/x509/libcrypto-lib-v3_ia5.o" => [ "crypto/x509/v3_ia5.c" ], + "crypto/x509/libcrypto-lib-v3_ind_iss.o" => [ + "crypto/x509/v3_ind_iss.c" + ], "crypto/x509/libcrypto-lib-v3_info.o" => [ "crypto/x509/v3_info.c" ], "crypto/x509/libcrypto-lib-v3_int.o" => [ "crypto/x509/v3_int.c" ], + "crypto/x509/libcrypto-lib-v3_iobo.o" => [ + "crypto/x509/v3_iobo.c" + ], "crypto/x509/libcrypto-lib-v3_ist.o" => [ "crypto/x509/v3_ist.c" ], @@ -23411,6 +27136,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_ncons.o" => [ "crypto/x509/v3_ncons.c" ], + "crypto/x509/libcrypto-lib-v3_no_ass.o" => [ + "crypto/x509/v3_no_ass.c" + ], + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o" => [ + "crypto/x509/v3_no_rev_avail.c" + ], "crypto/x509/libcrypto-lib-v3_pci.o" => [ "crypto/x509/v3_pci.c" ], @@ -23432,18 +27163,36 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_purp.o" => [ "crypto/x509/v3_purp.c" ], + "crypto/x509/libcrypto-lib-v3_rolespec.o" => [ + "crypto/x509/v3_rolespec.c" + ], "crypto/x509/libcrypto-lib-v3_san.o" => [ "crypto/x509/v3_san.c" ], + "crypto/x509/libcrypto-lib-v3_sda.o" => [ + "crypto/x509/v3_sda.c" + ], + "crypto/x509/libcrypto-lib-v3_single_use.o" => [ + "crypto/x509/v3_single_use.c" + ], "crypto/x509/libcrypto-lib-v3_skid.o" => [ "crypto/x509/v3_skid.c" ], + "crypto/x509/libcrypto-lib-v3_soa_id.o" => [ + "crypto/x509/v3_soa_id.c" + ], "crypto/x509/libcrypto-lib-v3_sxnet.o" => [ "crypto/x509/v3_sxnet.c" ], + "crypto/x509/libcrypto-lib-v3_timespec.o" => [ + "crypto/x509/v3_timespec.c" + ], "crypto/x509/libcrypto-lib-v3_tlsf.o" => [ "crypto/x509/v3_tlsf.c" ], + "crypto/x509/libcrypto-lib-v3_usernotice.o" => [ + "crypto/x509/v3_usernotice.c" + ], "crypto/x509/libcrypto-lib-v3_utf8.o" => [ "crypto/x509/v3_utf8.c" ], @@ -23453,6 +27202,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3err.o" => [ "crypto/x509/v3err.c" ], + "crypto/x509/libcrypto-lib-x509_acert.o" => [ + "crypto/x509/x509_acert.c" + ], "crypto/x509/libcrypto-lib-x509_att.o" => [ "crypto/x509/x509_att.c" ], @@ -23504,6 +27256,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_vpm.o" => [ "crypto/x509/x509_vpm.c" ], + "crypto/x509/libcrypto-lib-x509aset.o" => [ + "crypto/x509/x509aset.c" + ], "crypto/x509/libcrypto-lib-x509cset.o" => [ "crypto/x509/x509cset.c" ], @@ -23531,6 +27286,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_exten.o" => [ "crypto/x509/x_exten.c" ], + "crypto/x509/libcrypto-lib-x_ietfatt.o" => [ + "crypto/x509/x_ietfatt.c" + ], "crypto/x509/libcrypto-lib-x_name.o" => [ "crypto/x509/x_name.c" ], @@ -23558,6 +27316,16 @@ our %unified_info = ( "engines/libcrypto-lib-e_padlock.o" => [ "engines/e_padlock.c" ], + "fuzz/acert-test" => [ + "fuzz/acert-test-bin-acert.o", + "fuzz/acert-test-bin-test-corpus.o" + ], + "fuzz/acert-test-bin-acert.o" => [ + "fuzz/acert.c" + ], + "fuzz/acert-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/asn1-test" => [ "fuzz/asn1-test-bin-asn1.o", "fuzz/asn1-test-bin-fuzz_rand.o", @@ -23670,6 +27438,190 @@ our %unified_info = ( "fuzz/ct-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/decoder-test" => [ + "fuzz/decoder-test-bin-decoder.o", + "fuzz/decoder-test-bin-fuzz_rand.o", + "fuzz/decoder-test-bin-test-corpus.o" + ], + "fuzz/decoder-test-bin-decoder.o" => [ + "fuzz/decoder.c" + ], + "fuzz/decoder-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/decoder-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsclient-test" => [ + "fuzz/dtlsclient-test-bin-dtlsclient.o", + "fuzz/dtlsclient-test-bin-fuzz_rand.o", + "fuzz/dtlsclient-test-bin-test-corpus.o" + ], + "fuzz/dtlsclient-test-bin-dtlsclient.o" => [ + "fuzz/dtlsclient.c" + ], + "fuzz/dtlsclient-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsclient-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsserver-test" => [ + "fuzz/dtlsserver-test-bin-dtlsserver.o", + "fuzz/dtlsserver-test-bin-fuzz_rand.o", + "fuzz/dtlsserver-test-bin-test-corpus.o" + ], + "fuzz/dtlsserver-test-bin-dtlsserver.o" => [ + "fuzz/dtlsserver.c" + ], + "fuzz/dtlsserver-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsserver-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/hashtable-test" => [ + "fuzz/hashtable-test-bin-fuzz_rand.o", + "fuzz/hashtable-test-bin-hashtable.o", + "fuzz/hashtable-test-bin-test-corpus.o" + ], + "fuzz/hashtable-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/hashtable-test-bin-hashtable.o" => [ + "fuzz/hashtable.c" + ], + "fuzz/hashtable-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-dsa-test" => [ + "fuzz/ml-dsa-test-bin-fuzz_rand.o", + "fuzz/ml-dsa-test-bin-ml-dsa.o", + "fuzz/ml-dsa-test-bin-test-corpus.o" + ], + "fuzz/ml-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-dsa-test-bin-ml-dsa.o" => [ + "fuzz/ml-dsa.c" + ], + "fuzz/ml-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-kem-test" => [ + "fuzz/ml-kem-test-bin-fuzz_rand.o", + "fuzz/ml-kem-test-bin-ml-kem.o", + "fuzz/ml-kem-test-bin-test-corpus.o" + ], + "fuzz/ml-kem-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-kem-test-bin-ml-kem.o" => [ + "fuzz/ml-kem.c" + ], + "fuzz/ml-kem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/pem-test" => [ + "fuzz/pem-test-bin-pem.o", + "fuzz/pem-test-bin-test-corpus.o" + ], + "fuzz/pem-test-bin-pem.o" => [ + "fuzz/pem.c" + ], + "fuzz/pem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/provider-test" => [ + "fuzz/provider-test-bin-provider.o", + "fuzz/provider-test-bin-test-corpus.o" + ], + "fuzz/provider-test-bin-provider.o" => [ + "fuzz/provider.c" + ], + "fuzz/provider-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/punycode-test" => [ + "fuzz/punycode-test-bin-punycode.o", + "fuzz/punycode-test-bin-test-corpus.o" + ], + "fuzz/punycode-test-bin-punycode.o" => [ + "fuzz/punycode.c" + ], + "fuzz/punycode-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-client-test" => [ + "fuzz/quic-client-test-bin-fuzz_rand.o", + "fuzz/quic-client-test-bin-quic-client.o", + "fuzz/quic-client-test-bin-test-corpus.o" + ], + "fuzz/quic-client-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-client-test-bin-quic-client.o" => [ + "fuzz/quic-client.c" + ], + "fuzz/quic-client-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-lcidm-test" => [ + "fuzz/quic-lcidm-test-bin-fuzz_rand.o", + "fuzz/quic-lcidm-test-bin-quic-lcidm.o", + "fuzz/quic-lcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-lcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-lcidm-test-bin-quic-lcidm.o" => [ + "fuzz/quic-lcidm.c" + ], + "fuzz/quic-lcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-rcidm-test" => [ + "fuzz/quic-rcidm-test-bin-fuzz_rand.o", + "fuzz/quic-rcidm-test-bin-quic-rcidm.o", + "fuzz/quic-rcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-rcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-rcidm-test-bin-quic-rcidm.o" => [ + "fuzz/quic-rcidm.c" + ], + "fuzz/quic-rcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-server-test" => [ + "fuzz/quic-server-test-bin-fuzz_rand.o", + "fuzz/quic-server-test-bin-quic-server.o", + "fuzz/quic-server-test-bin-test-corpus.o" + ], + "fuzz/quic-server-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-server-test-bin-quic-server.o" => [ + "fuzz/quic-server.c" + ], + "fuzz/quic-server-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-srtm-test" => [ + "fuzz/quic-srtm-test-bin-fuzz_rand.o", + "fuzz/quic-srtm-test-bin-quic-srtm.o", + "fuzz/quic-srtm-test-bin-test-corpus.o" + ], + "fuzz/quic-srtm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-srtm-test-bin-quic-srtm.o" => [ + "fuzz/quic-srtm.c" + ], + "fuzz/quic-srtm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/server-test" => [ "fuzz/server-test-bin-fuzz_rand.o", "fuzz/server-test-bin-server.o", @@ -23684,6 +27636,40 @@ our %unified_info = ( "fuzz/server-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/slh-dsa-test" => [ + "fuzz/slh-dsa-test-bin-fuzz_rand.o", + "fuzz/slh-dsa-test-bin-slh-dsa.o", + "fuzz/slh-dsa-test-bin-test-corpus.o" + ], + "fuzz/slh-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/slh-dsa-test-bin-slh-dsa.o" => [ + "fuzz/slh-dsa.c" + ], + "fuzz/slh-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/smime-test" => [ + "fuzz/smime-test-bin-smime.o", + "fuzz/smime-test-bin-test-corpus.o" + ], + "fuzz/smime-test-bin-smime.o" => [ + "fuzz/smime.c" + ], + "fuzz/smime-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test" => [ + "fuzz/v3name-test-bin-test-corpus.o", + "fuzz/v3name-test-bin-v3name.o" + ], + "fuzz/v3name-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test-bin-v3name.o" => [ + "fuzz/v3name.c" + ], "fuzz/x509-test" => [ "fuzz/x509-test-bin-fuzz_rand.o", "fuzz/x509-test-bin-test-corpus.o", @@ -23804,6 +27790,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -23865,6 +27852,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -24042,7 +28030,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", + "crypto/err/libcrypto-lib-err_mark.o", "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o", "crypto/ess/libcrypto-lib-ess_asn1.o", "crypto/ess/libcrypto-lib-ess_err.o", "crypto/ess/libcrypto-lib-ess_lib.o", @@ -24125,7 +28115,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/ffc/libcrypto-lib-ffc_backend.o", "crypto/ffc/libcrypto-lib-ffc_dh.o", "crypto/ffc/libcrypto-lib-ffc_key_generate.o", @@ -24133,7 +28125,11 @@ our %unified_info = ( "crypto/ffc/libcrypto-lib-ffc_params.o", "crypto/ffc/libcrypto-lib-ffc_params_generate.o", "crypto/ffc/libcrypto-lib-ffc_params_validate.o", + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", "crypto/hmac/libcrypto-lib-hmac.o", + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o", "crypto/http/libcrypto-lib-http_client.o", "crypto/http/libcrypto-lib-http_err.o", "crypto/http/libcrypto-lib-http_lib.o", @@ -24147,6 +28143,7 @@ our %unified_info = ( "crypto/lhash/libcrypto-lib-lhash.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -24156,10 +28153,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -24176,6 +28176,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -24183,12 +28184,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libcrypto-lib-x86cpuid.o", @@ -24200,6 +28205,15 @@ our %unified_info = ( "crypto/md5/libcrypto-lib-md5_sha1.o", "crypto/mdc2/libcrypto-lib-mdc2_one.o", "crypto/mdc2/libcrypto-lib-mdc2dgst.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_kem/libcrypto-lib-ml_kem.o", "crypto/modes/libcrypto-lib-cbc128.o", "crypto/modes/libcrypto-lib-ccm128.o", "crypto/modes/libcrypto-lib-cfb128.o", @@ -24212,6 +28226,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/objects/libcrypto-lib-o_names.o", "crypto/objects/libcrypto-lib-obj_dat.o", "crypto/objects/libcrypto-lib-obj_err.o", @@ -24276,6 +28291,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rc2/libcrypto-lib-rc2_cbc.o", "crypto/rc2/libcrypto-lib-rc2_ecb.o", @@ -24327,6 +28343,16 @@ our %unified_info = ( "crypto/sha/libcrypto-lib-sha512-586.o", "crypto/sha/libcrypto-lib-sha512.o", "crypto/siphash/libcrypto-lib-siphash.o", + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", "crypto/sm2/libcrypto-lib-sm2_crypt.o", "crypto/sm2/libcrypto-lib-sm2_err.o", "crypto/sm2/libcrypto-lib-sm2_key.o", @@ -24344,6 +28370,12 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_register.o", "crypto/store/libcrypto-lib-store_result.o", "crypto/store/libcrypto-lib-store_strings.o", + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", "crypto/ts/libcrypto-lib-ts_asn1.o", "crypto/ts/libcrypto-lib-ts_conf.o", "crypto/ts/libcrypto-lib-ts_err.o", @@ -24373,14 +28405,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -24389,12 +28429,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -24402,13 +28447,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -24426,6 +28478,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -24435,6 +28488,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -24457,14 +28511,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -24481,12 +28536,60 @@ our %unified_info = ( "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", "ssl/libssl-lib-tls_srp.o", - "ssl/record/libssl-lib-dtls1_bitmap.o", + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o", "ssl/record/libssl-lib-rec_layer_d1.o", "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o", "ssl/statem/libssl-lib-extensions.o", "ssl/statem/libssl-lib-extensions_clnt.o", "ssl/statem/libssl-lib-extensions_cust.o", @@ -24524,12 +28627,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/der/der_ecx_key.c" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/der/der_ml_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/der/der_ml_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/der/der_rsa_gen.c" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/der/der_rsa_key.c" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/der/der_slh_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/der/der_slh_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/der/der_wrap_gen.c" ], @@ -24596,6 +28711,9 @@ our %unified_info = ( "providers/common/libfips-lib-securitycheck_fips.o" => [ "providers/common/securitycheck_fips.c" ], + "providers/endecode_test-bin-legacyprov.o" => [ + "providers/legacyprov.c" + ], "providers/evp_extra_test-bin-legacyprov.o" => [ "providers/legacyprov.c" ], @@ -24606,6 +28724,9 @@ our %unified_info = ( "providers/fips/fips-dso-fips_entry.o" => [ "providers/fips/fips_entry.c" ], + "providers/fips/libfips-lib-fipsindicator.o" => [ + "providers/fips/fipsindicator.c" + ], "providers/fips/libfips-lib-fipsprov.o" => [ "providers/fips/fipsprov.c" ], @@ -24669,6 +28790,15 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o" => [ "providers/implementations/ciphers/cipher_aes_gcm_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o" => [ "providers/implementations/ciphers/cipher_aes_hw.c" ], @@ -24741,9 +28871,27 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o" => [ "providers/implementations/ciphers/cipher_sm4.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o" => [ "providers/implementations/ciphers/cipher_sm4_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o" => [ "providers/implementations/ciphers/cipher_tdes.c" ], @@ -24963,6 +29111,15 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" => [ "providers/implementations/encode_decode/endecoder_common.c" ], + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o" => [ + "providers/implementations/encode_decode/ml_common_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o" => [ + "providers/implementations/encode_decode/ml_dsa_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" => [ + "providers/implementations/encode_decode/ml_kem_codecs.c" + ], "providers/implementations/exchange/libdefault-lib-dh_exch.o" => [ "providers/implementations/exchange/dh_exch.c" ], @@ -24987,9 +29144,15 @@ our %unified_info = ( "providers/implementations/exchange/libfips-lib-kdf_exch.o" => [ "providers/implementations/exchange/kdf_exch.c" ], + "providers/implementations/kdfs/libdefault-lib-argon2.o" => [ + "providers/implementations/kdfs/argon2.c" + ], "providers/implementations/kdfs/libdefault-lib-hkdf.o" => [ "providers/implementations/kdfs/hkdf.c" ], + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o" => [ + "providers/implementations/kdfs/hmacdrbg_kdf.c" + ], "providers/implementations/kdfs/libdefault-lib-kbkdf.o" => [ "providers/implementations/kdfs/kbkdf.c" ], @@ -25047,12 +29210,39 @@ our %unified_info = ( "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" => [ "providers/implementations/kdfs/pbkdf1.c" ], + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" => [ + "providers/implementations/kdfs/pvkkdf.c" + ], + "providers/implementations/kem/libdefault-lib-ec_kem.o" => [ + "providers/implementations/kem/ec_kem.c" + ], + "providers/implementations/kem/libdefault-lib-ecx_kem.o" => [ + "providers/implementations/kem/ecx_kem.c" + ], + "providers/implementations/kem/libdefault-lib-kem_util.o" => [ + "providers/implementations/kem/kem_util.c" + ], + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libdefault-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libdefault-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libfips-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libfips-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libfips-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libtemplate-lib-template_kem.o" => [ + "providers/implementations/kem/template_kem.c" + ], "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25071,9 +29261,21 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25092,9 +29294,24 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" => [ + "providers/implementations/keymgmt/template_kmgmt.c" + ], "providers/implementations/macs/libdefault-lib-blake2b_mac.o" => [ "providers/implementations/macs/blake2b_mac.c" ], @@ -25131,9 +29348,6 @@ our %unified_info = ( "providers/implementations/macs/libfips-lib-kmac_prov.o" => [ "providers/implementations/macs/kmac_prov.c" ], - "providers/implementations/rands/libdefault-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libdefault-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25149,12 +29363,12 @@ our %unified_info = ( "providers/implementations/rands/libdefault-lib-seed_src.o" => [ "providers/implementations/rands/seed_src.c" ], + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o" => [ + "providers/implementations/rands/seed_src_jitter.c" + ], "providers/implementations/rands/libdefault-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], - "providers/implementations/rands/libfips-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libfips-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25167,6 +29381,9 @@ our %unified_info = ( "providers/implementations/rands/libfips-lib-drbg_hmac.o" => [ "providers/implementations/rands/drbg_hmac.c" ], + "providers/implementations/rands/libfips-lib-fips_crng_test.o" => [ + "providers/implementations/rands/fips_crng_test.c" + ], "providers/implementations/rands/libfips-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], @@ -25194,9 +29411,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/implementations/signature/sm2_sig.c" ], @@ -25212,9 +29435,27 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libfips-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], "providers/implementations/storemgmt/libdefault-lib-file_store.o" => [ "providers/implementations/storemgmt/file_store.c" ], @@ -25238,8 +29479,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/libcommon-lib-provider_ctx.o", "providers/common/libcommon-lib-provider_err.o", @@ -25251,7 +29496,7 @@ our %unified_info = ( "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", "providers/implementations/digests/libcommon-lib-digestcommon.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/methods/libcommon-lib-tls_pad.o" ], "providers/libcrypto-lib-baseprov.o" => [ "providers/baseprov.c" @@ -25287,6 +29532,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -25311,7 +29559,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -25340,11 +29594,16 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o", "providers/implementations/exchange/libdefault-lib-dh_exch.o", "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", "providers/implementations/exchange/libdefault-lib-ecx_exch.o", "providers/implementations/exchange/libdefault-lib-kdf_exch.o", + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -25355,6 +29614,11 @@ our %unified_info = ( "providers/implementations/kdfs/libdefault-lib-sskdf.o", "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", "providers/implementations/kdfs/libdefault-lib-x942kdf.o", + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", @@ -25362,7 +29626,11 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libdefault-lib-blake2b_mac.o", "providers/implementations/macs/libdefault-lib-blake2s_mac.o", "providers/implementations/macs/libdefault-lib-cmac_prov.o", @@ -25371,12 +29639,12 @@ our %unified_info = ( "providers/implementations/macs/libdefault-lib-kmac_prov.o", "providers/implementations/macs/libdefault-lib-poly1305_prov.o", "providers/implementations/macs/libdefault-lib-siphash_prov.o", - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", @@ -25386,11 +29654,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", "providers/implementations/storemgmt/libdefault-lib-file_store.o", "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", - "ssl/libdefault-lib-s3_cbc.o" + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" ], "providers/libfips.a" => [ "crypto/aes/libfips-lib-aes-586.o", @@ -25498,14 +29770,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", + "crypto/evp/libfips-lib-s_lib.o", "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o", "crypto/ffc/libfips-lib-ffc_backend.o", "crypto/ffc/libfips-lib-ffc_dh.o", "crypto/ffc/libfips-lib-ffc_key_generate.o", @@ -25513,6 +29786,8 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params.o", "crypto/ffc/libfips-lib-ffc_params_generate.o", "crypto/ffc/libfips-lib-ffc_params_validate.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o", "crypto/hmac/libfips-lib-hmac.o", "crypto/lhash/libfips-lib-lhash.o", "crypto/libfips-lib-asn1_dsa.o", @@ -25534,6 +29809,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -25542,7 +29818,17 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", "crypto/libfips-lib-x86cpuid.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o", + "crypto/ml_kem/libfips-lib-ml_kem.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -25552,6 +29838,7 @@ our %unified_info = ( "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o", "crypto/property/libfips-lib-defn_cache.o", "crypto/property/libfips-lib-property.o", "crypto/property/libfips-lib-property_parse.o", @@ -25583,7 +29870,23 @@ our %unified_info = ( "crypto/sha/libfips-lib-sha3.o", "crypto/sha/libfips-lib-sha512-586.o", "crypto/sha/libfips-lib-sha512.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o", "crypto/stack/libfips-lib-stack.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o", "providers/common/der/libfips-lib-der_rsa_sig.o", "providers/common/libfips-lib-bio_prov.o", "providers/common/libfips-lib-capabilities.o", @@ -25592,6 +29895,7 @@ our %unified_info = ( "providers/common/libfips-lib-provider_util.o", "providers/common/libfips-lib-securitycheck.o", "providers/common/libfips-lib-securitycheck_fips.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o", @@ -25629,6 +29933,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", "providers/implementations/kem/libfips-lib-rsa_kem.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", @@ -25636,24 +29942,32 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libfips-lib-cmac_prov.o", "providers/implementations/macs/libfips-lib-gmac_prov.o", "providers/implementations/macs/libfips-lib-hmac_prov.o", "providers/implementations/macs/libfips-lib-kmac_prov.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o", "providers/libcommon.a", - "ssl/libfips-lib-s3_cbc.o" + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "providers/liblegacy-lib-prov_running.o" => [ "providers/prov_running.c" @@ -25683,13 +29997,12 @@ our %unified_info = ( "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", "providers/implementations/digests/liblegacy-lib-wp_prov.o", "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o", "providers/liblegacy-lib-prov_running.o" ], - "ssl/libdefault-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" - ], - "ssl/libfips-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" + "providers/libtemplate.a" => [ + "providers/implementations/kem/libtemplate-lib-template_kem.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "ssl/libssl-lib-bio_ssl.o" => [ "ssl/bio_ssl.c" @@ -25709,6 +30022,9 @@ our %unified_info = ( "ssl/libssl-lib-pqueue.o" => [ "ssl/pqueue.c" ], + "ssl/libssl-lib-priority_queue.o" => [ + "ssl/priority_queue.c" + ], "ssl/libssl-lib-s3_enc.o" => [ "ssl/s3_enc.c" ], @@ -25724,15 +30040,15 @@ our %unified_info = ( "ssl/libssl-lib-ssl_cert.o" => [ "ssl/ssl_cert.c" ], + "ssl/libssl-lib-ssl_cert_comp.o" => [ + "ssl/ssl_cert_comp.c" + ], "ssl/libssl-lib-ssl_ciph.o" => [ "ssl/ssl_ciph.c" ], "ssl/libssl-lib-ssl_conf.o" => [ "ssl/ssl_conf.c" ], - "ssl/libssl-lib-ssl_err.o" => [ - "ssl/ssl_err.c" - ], "ssl/libssl-lib-ssl_err_legacy.o" => [ "ssl/ssl_err_legacy.c" ], @@ -25781,11 +30097,131 @@ our %unified_info = ( "ssl/libssl-lib-tls_srp.o" => [ "ssl/tls_srp.c" ], - "ssl/record/libcommon-lib-tls_pad.o" => [ - "ssl/record/tls_pad.c" + "ssl/quic/libssl-lib-cc_newreno.o" => [ + "ssl/quic/cc_newreno.c" + ], + "ssl/quic/libssl-lib-json_enc.o" => [ + "ssl/quic/json_enc.c" + ], + "ssl/quic/libssl-lib-qlog.o" => [ + "ssl/quic/qlog.c" + ], + "ssl/quic/libssl-lib-qlog_event_helpers.o" => [ + "ssl/quic/qlog_event_helpers.c" + ], + "ssl/quic/libssl-lib-quic_ackm.o" => [ + "ssl/quic/quic_ackm.c" + ], + "ssl/quic/libssl-lib-quic_cfq.o" => [ + "ssl/quic/quic_cfq.c" + ], + "ssl/quic/libssl-lib-quic_channel.o" => [ + "ssl/quic/quic_channel.c" + ], + "ssl/quic/libssl-lib-quic_demux.o" => [ + "ssl/quic/quic_demux.c" + ], + "ssl/quic/libssl-lib-quic_engine.o" => [ + "ssl/quic/quic_engine.c" + ], + "ssl/quic/libssl-lib-quic_fc.o" => [ + "ssl/quic/quic_fc.c" + ], + "ssl/quic/libssl-lib-quic_fifd.o" => [ + "ssl/quic/quic_fifd.c" + ], + "ssl/quic/libssl-lib-quic_impl.o" => [ + "ssl/quic/quic_impl.c" + ], + "ssl/quic/libssl-lib-quic_lcidm.o" => [ + "ssl/quic/quic_lcidm.c" + ], + "ssl/quic/libssl-lib-quic_method.o" => [ + "ssl/quic/quic_method.c" + ], + "ssl/quic/libssl-lib-quic_obj.o" => [ + "ssl/quic/quic_obj.c" + ], + "ssl/quic/libssl-lib-quic_port.o" => [ + "ssl/quic/quic_port.c" + ], + "ssl/quic/libssl-lib-quic_rcidm.o" => [ + "ssl/quic/quic_rcidm.c" + ], + "ssl/quic/libssl-lib-quic_reactor.o" => [ + "ssl/quic/quic_reactor.c" + ], + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o" => [ + "ssl/quic/quic_reactor_wait_ctx.c" + ], + "ssl/quic/libssl-lib-quic_record_rx.o" => [ + "ssl/quic/quic_record_rx.c" + ], + "ssl/quic/libssl-lib-quic_record_shared.o" => [ + "ssl/quic/quic_record_shared.c" + ], + "ssl/quic/libssl-lib-quic_record_tx.o" => [ + "ssl/quic/quic_record_tx.c" + ], + "ssl/quic/libssl-lib-quic_record_util.o" => [ + "ssl/quic/quic_record_util.c" + ], + "ssl/quic/libssl-lib-quic_rstream.o" => [ + "ssl/quic/quic_rstream.c" ], - "ssl/record/libssl-lib-dtls1_bitmap.o" => [ - "ssl/record/dtls1_bitmap.c" + "ssl/quic/libssl-lib-quic_rx_depack.o" => [ + "ssl/quic/quic_rx_depack.c" + ], + "ssl/quic/libssl-lib-quic_sf_list.o" => [ + "ssl/quic/quic_sf_list.c" + ], + "ssl/quic/libssl-lib-quic_srt_gen.o" => [ + "ssl/quic/quic_srt_gen.c" + ], + "ssl/quic/libssl-lib-quic_srtm.o" => [ + "ssl/quic/quic_srtm.c" + ], + "ssl/quic/libssl-lib-quic_sstream.o" => [ + "ssl/quic/quic_sstream.c" + ], + "ssl/quic/libssl-lib-quic_statm.o" => [ + "ssl/quic/quic_statm.c" + ], + "ssl/quic/libssl-lib-quic_stream_map.o" => [ + "ssl/quic/quic_stream_map.c" + ], + "ssl/quic/libssl-lib-quic_thread_assist.o" => [ + "ssl/quic/quic_thread_assist.c" + ], + "ssl/quic/libssl-lib-quic_tls.o" => [ + "ssl/quic/quic_tls.c" + ], + "ssl/quic/libssl-lib-quic_tls_api.o" => [ + "ssl/quic/quic_tls_api.c" + ], + "ssl/quic/libssl-lib-quic_trace.o" => [ + "ssl/quic/quic_trace.c" + ], + "ssl/quic/libssl-lib-quic_tserver.o" => [ + "ssl/quic/quic_tserver.c" + ], + "ssl/quic/libssl-lib-quic_txp.o" => [ + "ssl/quic/quic_txp.c" + ], + "ssl/quic/libssl-lib-quic_txpim.o" => [ + "ssl/quic/quic_txpim.c" + ], + "ssl/quic/libssl-lib-quic_types.o" => [ + "ssl/quic/quic_types.c" + ], + "ssl/quic/libssl-lib-quic_wire.o" => [ + "ssl/quic/quic_wire.c" + ], + "ssl/quic/libssl-lib-quic_wire_pkt.o" => [ + "ssl/quic/quic_wire_pkt.c" + ], + "ssl/quic/libssl-lib-uint_set.o" => [ + "ssl/quic/uint_set.c" ], "ssl/record/libssl-lib-rec_layer_d1.o" => [ "ssl/record/rec_layer_d1.c" @@ -25793,14 +30229,44 @@ our %unified_info = ( "ssl/record/libssl-lib-rec_layer_s3.o" => [ "ssl/record/rec_layer_s3.c" ], - "ssl/record/libssl-lib-ssl3_buffer.o" => [ - "ssl/record/ssl3_buffer.c" + "ssl/record/methods/libcommon-lib-tls_pad.o" => [ + "ssl/record/methods/tls_pad.c" + ], + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libfips-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libssl-lib-dtls_meth.o" => [ + "ssl/record/methods/dtls_meth.c" + ], + "ssl/record/methods/libssl-lib-ssl3_meth.o" => [ + "ssl/record/methods/ssl3_meth.c" + ], + "ssl/record/methods/libssl-lib-tls13_meth.o" => [ + "ssl/record/methods/tls13_meth.c" + ], + "ssl/record/methods/libssl-lib-tls1_meth.o" => [ + "ssl/record/methods/tls1_meth.c" + ], + "ssl/record/methods/libssl-lib-tls_common.o" => [ + "ssl/record/methods/tls_common.c" ], - "ssl/record/libssl-lib-ssl3_record.o" => [ - "ssl/record/ssl3_record.c" + "ssl/record/methods/libssl-lib-tls_multib.o" => [ + "ssl/record/methods/tls_multib.c" ], - "ssl/record/libssl-lib-ssl3_record_tls13.o" => [ - "ssl/record/ssl3_record_tls13.c" + "ssl/record/methods/libssl-lib-tlsany_meth.o" => [ + "ssl/record/methods/tlsany_meth.c" + ], + "ssl/rio/libssl-lib-poll_builder.o" => [ + "ssl/rio/poll_builder.c" + ], + "ssl/rio/libssl-lib-poll_immediate.o" => [ + "ssl/rio/poll_immediate.c" + ], + "ssl/rio/libssl-lib-rio_notifier.o" => [ + "ssl/rio/rio_notifier.c" ], "ssl/statem/libssl-lib-extensions.o" => [ "ssl/statem/extensions.c" @@ -25896,6 +30362,8 @@ our %unified_info = ( "test/asn1_string_table_test.c" ], "test/asn1_time_test" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1_time_test-bin-ctype.o", "test/asn1_time_test-bin-asn1_time_test.o" ], "test/asn1_time_test-bin-asn1_time_test.o" => [ @@ -25926,6 +30394,18 @@ our %unified_info = ( "test/bftest-bin-bftest.o" => [ "test/bftest.c" ], + "test/bio_addr_test" => [ + "test/bio_addr_test-bin-bio_addr_test.o" + ], + "test/bio_addr_test-bin-bio_addr_test.o" => [ + "test/bio_addr_test.c" + ], + "test/bio_base64_test" => [ + "test/bio_base64_test-bin-bio_base64_test.o" + ], + "test/bio_base64_test-bin-bio_base64_test.o" => [ + "test/bio_base64_test.c" + ], "test/bio_callback_test" => [ "test/bio_callback_test-bin-bio_callback_test.o" ], @@ -25938,6 +30418,12 @@ our %unified_info = ( "test/bio_core_test-bin-bio_core_test.o" => [ "test/bio_core_test.c" ], + "test/bio_dgram_test" => [ + "test/bio_dgram_test-bin-bio_dgram_test.o" + ], + "test/bio_dgram_test-bin-bio_dgram_test.o" => [ + "test/bio_dgram_test.c" + ], "test/bio_enc_test" => [ "test/bio_enc_test-bin-bio_enc_test.o" ], @@ -25950,6 +30436,12 @@ our %unified_info = ( "test/bio_memleak_test-bin-bio_memleak_test.o" => [ "test/bio_memleak_test.c" ], + "test/bio_meth_test" => [ + "test/bio_meth_test-bin-bio_meth_test.o" + ], + "test/bio_meth_test-bin-bio_meth_test.o" => [ + "test/bio_meth_test.c" + ], "test/bio_prefix_text" => [ "test/bio_prefix_text-bin-bio_prefix_text.o" ], @@ -25968,6 +30460,12 @@ our %unified_info = ( "test/bio_readbuffer_test-bin-bio_readbuffer_test.o" => [ "test/bio_readbuffer_test.c" ], + "test/bio_tfo_test" => [ + "test/bio_tfo_test-bin-bio_tfo_test.o" + ], + "test/bio_tfo_test-bin-bio_tfo_test.o" => [ + "test/bio_tfo_test.c" + ], "test/bioprinttest" => [ "test/bioprinttest-bin-bioprinttest.o" ], @@ -25986,6 +30484,12 @@ our %unified_info = ( "test/bntest-bin-bntest.o" => [ "test/bntest.c" ], + "test/build_wincrypt_test" => [ + "test/build_wincrypt_test-bin-build_wincrypt_test.o" + ], + "test/build_wincrypt_test-bin-build_wincrypt_test.o" => [ + "test/build_wincrypt_test.c" + ], "test/buildtest_c_aes" => [ "test/buildtest_c_aes-bin-buildtest_aes.o" ], @@ -26016,6 +30520,12 @@ our %unified_info = ( "test/buildtest_c_buffer-bin-buildtest_buffer.o" => [ "test/buildtest_buffer.c" ], + "test/buildtest_c_byteorder" => [ + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" + ], + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" => [ + "test/buildtest_byteorder.c" + ], "test/buildtest_c_camellia" => [ "test/buildtest_c_camellia-bin-buildtest_camellia.o" ], @@ -26064,12 +30574,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch-bin-buildtest_core_dispatch.o" => [ "test/buildtest_core_dispatch.c" ], - "test/buildtest_c_core_names" => [ - "test/buildtest_c_core_names-bin-buildtest_core_names.o" - ], - "test/buildtest_c_core_names-bin-buildtest_core_names.o" => [ - "test/buildtest_core_names.c" - ], "test/buildtest_c_core_object" => [ "test/buildtest_c_core_object-bin-buildtest_core_object.o" ], @@ -26118,6 +30622,12 @@ our %unified_info = ( "test/buildtest_c_e_os2-bin-buildtest_e_os2.o" => [ "test/buildtest_e_os2.c" ], + "test/buildtest_c_e_ostime" => [ + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" + ], + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" => [ + "test/buildtest_e_ostime.c" + ], "test/buildtest_c_ebcdic" => [ "test/buildtest_c_ebcdic-bin-buildtest_ebcdic.o" ], @@ -26172,6 +30682,12 @@ our %unified_info = ( "test/buildtest_c_hmac-bin-buildtest_hmac.o" => [ "test/buildtest_hmac.c" ], + "test/buildtest_c_hpke" => [ + "test/buildtest_c_hpke-bin-buildtest_hpke.o" + ], + "test/buildtest_c_hpke-bin-buildtest_hpke.o" => [ + "test/buildtest_hpke.c" + ], "test/buildtest_c_http" => [ "test/buildtest_c_http-bin-buildtest_http.o" ], @@ -26184,6 +30700,12 @@ our %unified_info = ( "test/buildtest_c_idea-bin-buildtest_idea.o" => [ "test/buildtest_idea.c" ], + "test/buildtest_c_indicator" => [ + "test/buildtest_c_indicator-bin-buildtest_indicator.o" + ], + "test/buildtest_c_indicator-bin-buildtest_indicator.o" => [ + "test/buildtest_indicator.c" + ], "test/buildtest_c_kdf" => [ "test/buildtest_c_kdf-bin-buildtest_kdf.o" ], @@ -26214,6 +30736,12 @@ our %unified_info = ( "test/buildtest_c_mdc2-bin-buildtest_mdc2.o" => [ "test/buildtest_mdc2.c" ], + "test/buildtest_c_ml_kem" => [ + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" + ], + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" => [ + "test/buildtest_ml_kem.c" + ], "test/buildtest_c_modes" => [ "test/buildtest_c_modes-bin-buildtest_modes.o" ], @@ -26274,6 +30802,12 @@ our %unified_info = ( "test/buildtest_c_provider-bin-buildtest_provider.o" => [ "test/buildtest_provider.c" ], + "test/buildtest_c_quic" => [ + "test/buildtest_c_quic-bin-buildtest_quic.o" + ], + "test/buildtest_c_quic-bin-buildtest_quic.o" => [ + "test/buildtest_quic.c" + ], "test/buildtest_c_rand" => [ "test/buildtest_c_rand-bin-buildtest_rand.o" ], @@ -26358,6 +30892,12 @@ our %unified_info = ( "test/buildtest_c_symhacks-bin-buildtest_symhacks.o" => [ "test/buildtest_symhacks.c" ], + "test/buildtest_c_thread" => [ + "test/buildtest_c_thread-bin-buildtest_thread.o" + ], + "test/buildtest_c_thread-bin-buildtest_thread.o" => [ + "test/buildtest_thread.c" + ], "test/buildtest_c_tls1" => [ "test/buildtest_c_tls1-bin-buildtest_tls1.o" ], @@ -26388,6 +30928,29 @@ our %unified_info = ( "test/buildtest_c_whrlpool-bin-buildtest_whrlpool.o" => [ "test/buildtest_whrlpool.c" ], + "test/byteorder_test" => [ + "test/byteorder_test-bin-byteorder_test.o" + ], + "test/byteorder_test-bin-byteorder_test.o" => [ + "test/byteorder_test.c" + ], + "test/ca_internals_test" => [ + "apps/ca_internals_test-bin-ca.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", + "crypto/ca_internals_test-bin-ctype.o", + "test/ca_internals_test-bin-ca_internals_test.o" + ], + "test/ca_internals_test-bin-ca_internals_test.o" => [ + "test/ca_internals_test.c" + ], "test/casttest" => [ "test/casttest-bin-casttest.o" ], @@ -26566,6 +31129,12 @@ our %unified_info = ( "test/danetest-bin-danetest.o" => [ "test/danetest.c" ], + "test/decoder_propq_test" => [ + "test/decoder_propq_test-bin-decoder_propq_test.o" + ], + "test/decoder_propq_test-bin-decoder_propq_test.o" => [ + "test/decoder_propq_test.c" + ], "test/defltfips_test" => [ "test/defltfips_test-bin-defltfips_test.o" ], @@ -26647,6 +31216,7 @@ our %unified_info = ( "test/ectest.c" ], "test/endecode_test" => [ + "providers/endecode_test-bin-legacyprov.o", "test/endecode_test-bin-endecode_test.o", "test/helpers/endecode_test-bin-predefined_dhparams.o" ], @@ -26679,17 +31249,29 @@ our %unified_info = ( ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", - "test/evp_extra_test-bin-evp_extra_test.o" + "test/evp_extra_test-bin-evp_extra_test.o", + "test/evp_extra_test-bin-fake_pipelineprov.o", + "test/evp_extra_test-bin-fake_rsaprov.o" ], "test/evp_extra_test-bin-evp_extra_test.o" => [ "test/evp_extra_test.c" ], + "test/evp_extra_test-bin-fake_pipelineprov.o" => [ + "test/fake_pipelineprov.c" + ], + "test/evp_extra_test-bin-fake_rsaprov.o" => [ + "test/fake_rsaprov.c" + ], "test/evp_extra_test2" => [ - "test/evp_extra_test2-bin-evp_extra_test2.o" + "test/evp_extra_test2-bin-evp_extra_test2.o", + "test/evp_extra_test2-bin-tls-provider.o" ], "test/evp_extra_test2-bin-evp_extra_test2.o" => [ "test/evp_extra_test2.c" ], + "test/evp_extra_test2-bin-tls-provider.o" => [ + "test/tls-provider.c" + ], "test/evp_fetch_prov_test" => [ "test/evp_fetch_prov_test-bin-evp_fetch_prov_test.o" ], @@ -26714,6 +31296,12 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name-bin-evp_pkey_ctx_new_from_name.o" => [ "test/evp_pkey_ctx_new_from_name.c" ], + "test/evp_pkey_dhkem_test" => [ + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" + ], + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" => [ + "test/evp_pkey_dhkem_test.c" + ], "test/evp_pkey_dparams_test" => [ "test/evp_pkey_dparams_test-bin-evp_pkey_dparams_test.o" ], @@ -26726,12 +31314,28 @@ our %unified_info = ( "test/evp_pkey_provided_test-bin-evp_pkey_provided_test.o" => [ "test/evp_pkey_provided_test.c" ], + "test/evp_skey_test" => [ + "test/evp_skey_test-bin-evp_skey_test.o", + "test/evp_skey_test-bin-fake_cipherprov.o" + ], + "test/evp_skey_test-bin-evp_skey_test.o" => [ + "test/evp_skey_test.c" + ], + "test/evp_skey_test-bin-fake_cipherprov.o" => [ + "test/fake_cipherprov.c" + ], "test/evp_test" => [ "test/evp_test-bin-evp_test.o" ], "test/evp_test-bin-evp_test.o" => [ "test/evp_test.c" ], + "test/evp_xof_test" => [ + "test/evp_xof_test-bin-evp_xof_test.o" + ], + "test/evp_xof_test-bin-evp_xof_test.o" => [ + "test/evp_xof_test.c" + ], "test/exdatatest" => [ "test/exdatatest-bin-exdatatest.o" ], @@ -26817,15 +31421,108 @@ our %unified_info = ( "test/helpers/fatalerrtest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/json_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/json_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/json_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + "test/helpers/pkcs12.c" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ "test/helpers/pkcs12.c" ], + "test/helpers/quic_multistream_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_multistream_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_multistream_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_newcid_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_newcid_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_newcid_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_radix_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_radix_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_radix_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_srt_gen_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicapitest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicapitest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicapitest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicfaultstest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicfaultstest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicfaultstest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/ssl_old_test-bin-predefined_dhparams.o" => [ "test/helpers/predefined_dhparams.c" ], @@ -26853,6 +31550,9 @@ our %unified_info = ( "test/helpers/tls13ccstest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/hexstr_test" => [ "test/hexstr_test-bin-hexstr_test.o" ], @@ -26865,6 +31565,12 @@ our %unified_info = ( "test/hmactest-bin-hmactest.o" => [ "test/hmactest.c" ], + "test/hpke_test" => [ + "test/hpke_test-bin-hpke_test.o" + ], + "test/hpke_test-bin-hpke_test.o" => [ + "test/hpke_test.c" + ], "test/http_test" => [ "test/http_test-bin-http_test.o" ], @@ -26883,6 +31589,16 @@ our %unified_info = ( "test/igetest-bin-igetest.o" => [ "test/igetest.c" ], + "test/json_test" => [ + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/json_test-bin-json_test.o" + ], + "test/json_test-bin-json_test.o" => [ + "test/json_test.c" + ], "test/keymgmt_internal_test" => [ "test/keymgmt_internal_test-bin-keymgmt_internal_test.o" ], @@ -26903,6 +31619,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -26915,6 +31632,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-tests.o", "test/testutil/libtestutil-lib-testutil_init.o" ], + "test/list_test" => [ + "test/list_test-bin-list_test.o" + ], + "test/list_test-bin-list_test.o" => [ + "test/list_test.c" + ], "test/localetest" => [ "test/localetest-bin-localetest.o" ], @@ -26933,12 +31656,36 @@ our %unified_info = ( "test/mdc2test-bin-mdc2test.o" => [ "test/mdc2test.c" ], + "test/membio_test" => [ + "test/membio_test-bin-membio_test.o" + ], + "test/membio_test-bin-membio_test.o" => [ + "test/membio_test.c" + ], "test/memleaktest" => [ "test/memleaktest-bin-memleaktest.o" ], "test/memleaktest-bin-memleaktest.o" => [ "test/memleaktest.c" ], + "test/ml_dsa_test" => [ + "test/ml_dsa_test-bin-ml_dsa_test.o" + ], + "test/ml_dsa_test-bin-ml_dsa_test.o" => [ + "test/ml_dsa_test.c" + ], + "test/ml_kem_evp_extra_test" => [ + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" + ], + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" => [ + "test/ml_kem_evp_extra_test.c" + ], + "test/ml_kem_internal_test" => [ + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" + ], + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" => [ + "test/ml_kem_internal_test.c" + ], "test/modes_internal_test" => [ "test/modes_internal_test-bin-modes_internal_test.o" ], @@ -26984,11 +31731,18 @@ our %unified_info = ( "test/p_test.c" ], "test/packettest" => [ + "crypto/packettest-bin-quic_vlint.o", "test/packettest-bin-packettest.o" ], "test/packettest-bin-packettest.o" => [ "test/packettest.c" ], + "test/pairwise_fail_test" => [ + "test/pairwise_fail_test-bin-pairwise_fail_test.o" + ], + "test/pairwise_fail_test-bin-pairwise_fail_test.o" => [ + "test/pairwise_fail_test.c" + ], "test/param_build_test" => [ "test/param_build_test-bin-param_build_test.o" ], @@ -27037,6 +31791,13 @@ our %unified_info = ( "test/pemtest-bin-pemtest.o" => [ "test/pemtest.c" ], + "test/pkcs12_api_test" => [ + "test/helpers/pkcs12_api_test-bin-pkcs12.o", + "test/pkcs12_api_test-bin-pkcs12_api_test.o" + ], + "test/pkcs12_api_test-bin-pkcs12_api_test.o" => [ + "test/pkcs12_api_test.c" + ], "test/pkcs12_format_test" => [ "test/helpers/pkcs12_format_test-bin-pkcs12.o", "test/pkcs12_format_test-bin-pkcs12_format_test.o" @@ -27068,6 +31829,12 @@ our %unified_info = ( "test/poly1305_internal_test-bin-poly1305_internal_test.o" => [ "test/poly1305_internal_test.c" ], + "test/priority_queue_test" => [ + "test/priority_queue_test-bin-priority_queue_test.o" + ], + "test/priority_queue_test-bin-priority_queue_test.o" => [ + "test/priority_queue_test.c" + ], "test/property_test" => [ "test/property_test-bin-property_test.o" ], @@ -27086,6 +31853,12 @@ our %unified_info = ( "test/provfetchtest-bin-provfetchtest.o" => [ "test/provfetchtest.c" ], + "test/provider_default_search_path_test" => [ + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" + ], + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" => [ + "test/provider_default_search_path_test.c" + ], "test/provider_fallback_test" => [ "test/provider_fallback_test-bin-provider_fallback_test.o" ], @@ -27134,6 +31907,174 @@ our %unified_info = ( "test/punycode_test-bin-punycode_test.o" => [ "test/punycode_test.c" ], + "test/quic_ackm_test" => [ + "test/quic_ackm_test-bin-cc_dummy.o", + "test/quic_ackm_test-bin-quic_ackm_test.o" + ], + "test/quic_ackm_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_ackm_test-bin-quic_ackm_test.o" => [ + "test/quic_ackm_test.c" + ], + "test/quic_cc_test" => [ + "test/quic_cc_test-bin-quic_cc_test.o" + ], + "test/quic_cc_test-bin-quic_cc_test.o" => [ + "test/quic_cc_test.c" + ], + "test/quic_cfq_test" => [ + "test/quic_cfq_test-bin-quic_cfq_test.o" + ], + "test/quic_cfq_test-bin-quic_cfq_test.o" => [ + "test/quic_cfq_test.c" + ], + "test/quic_client_test" => [ + "test/quic_client_test-bin-quic_client_test.o" + ], + "test/quic_client_test-bin-quic_client_test.o" => [ + "test/quic_client_test.c" + ], + "test/quic_fc_test" => [ + "test/quic_fc_test-bin-quic_fc_test.o" + ], + "test/quic_fc_test-bin-quic_fc_test.o" => [ + "test/quic_fc_test.c" + ], + "test/quic_fifd_test" => [ + "test/quic_fifd_test-bin-cc_dummy.o", + "test/quic_fifd_test-bin-quic_fifd_test.o" + ], + "test/quic_fifd_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_fifd_test-bin-quic_fifd_test.o" => [ + "test/quic_fifd_test.c" + ], + "test/quic_lcidm_test" => [ + "test/quic_lcidm_test-bin-quic_lcidm_test.o" + ], + "test/quic_lcidm_test-bin-quic_lcidm_test.o" => [ + "test/quic_lcidm_test.c" + ], + "test/quic_multistream_test" => [ + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/quic_multistream_test-bin-quic_multistream_test.o" + ], + "test/quic_multistream_test-bin-quic_multistream_test.o" => [ + "test/quic_multistream_test.c" + ], + "test/quic_newcid_test" => [ + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/quic_newcid_test-bin-quic_newcid_test.o" + ], + "test/quic_newcid_test-bin-quic_newcid_test.o" => [ + "test/quic_newcid_test.c" + ], + "test/quic_qlog_test" => [ + "test/quic_qlog_test-bin-quic_qlog_test.o" + ], + "test/quic_qlog_test-bin-quic_qlog_test.o" => [ + "test/quic_qlog_test.c" + ], + "test/quic_radix_test" => [ + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "test/quic_rcidm_test" => [ + "test/quic_rcidm_test-bin-quic_rcidm_test.o" + ], + "test/quic_rcidm_test-bin-quic_rcidm_test.o" => [ + "test/quic_rcidm_test.c" + ], + "test/quic_record_test" => [ + "test/quic_record_test-bin-quic_record_test.o" + ], + "test/quic_record_test-bin-quic_record_test.o" => [ + "test/quic_record_test.c" + ], + "test/quic_srt_gen_test" => [ + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" + ], + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" => [ + "test/quic_srt_gen_test.c" + ], + "test/quic_srtm_test" => [ + "test/quic_srtm_test-bin-quic_srtm_test.o" + ], + "test/quic_srtm_test-bin-quic_srtm_test.o" => [ + "test/quic_srtm_test.c" + ], + "test/quic_stream_test" => [ + "test/quic_stream_test-bin-quic_stream_test.o" + ], + "test/quic_stream_test-bin-quic_stream_test.o" => [ + "test/quic_stream_test.c" + ], + "test/quic_tserver_test" => [ + "test/quic_tserver_test-bin-quic_tserver_test.o" + ], + "test/quic_tserver_test-bin-quic_tserver_test.o" => [ + "test/quic_tserver_test.c" + ], + "test/quic_txp_test" => [ + "test/quic_txp_test-bin-cc_dummy.o", + "test/quic_txp_test-bin-quic_txp_test.o" + ], + "test/quic_txp_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_txp_test-bin-quic_txp_test.o" => [ + "test/quic_txp_test.c" + ], + "test/quic_txpim_test" => [ + "test/quic_txpim_test-bin-quic_txpim_test.o" + ], + "test/quic_txpim_test-bin-quic_txpim_test.o" => [ + "test/quic_txpim_test.c" + ], + "test/quic_wire_test" => [ + "test/quic_wire_test-bin-quic_wire_test.o" + ], + "test/quic_wire_test-bin-quic_wire_test.o" => [ + "test/quic_wire_test.c" + ], + "test/quicapitest" => [ + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/quicapitest-bin-quicapitest.o" + ], + "test/quicapitest-bin-quicapitest.o" => [ + "test/quicapitest.c" + ], + "test/quicfaultstest" => [ + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", + "test/quicfaultstest-bin-quicfaultstest.o" + ], + "test/quicfaultstest-bin-quicfaultstest.o" => [ + "test/quicfaultstest.c" + ], + "test/radix/quic_radix_test-bin-quic_radix.o" => [ + "test/radix/quic_radix.c" + ], "test/rand_status_test" => [ "test/rand_status_test-bin-rand_status_test.o" ], @@ -27164,11 +32105,11 @@ our %unified_info = ( "test/rc5test-bin-rc5test.o" => [ "test/rc5test.c" ], - "test/rdrand_sanitytest" => [ - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" + "test/rdcpu_sanitytest" => [ + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" ], - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" => [ - "test/rdrand_sanitytest.c" + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" => [ + "test/rdcpu_sanitytest.c" ], "test/recordlentest" => [ "test/helpers/recordlentest-bin-ssltestlib.o", @@ -27177,6 +32118,13 @@ our %unified_info = ( "test/recordlentest-bin-recordlentest.o" => [ "test/recordlentest.c" ], + "test/rpktest" => [ + "test/helpers/rpktest-bin-ssltestlib.o", + "test/rpktest-bin-rpktest.o" + ], + "test/rpktest-bin-rpktest.o" => [ + "test/rpktest.c" + ], "test/rsa_complex" => [ "test/rsa_complex-bin-rsa_complex.o" ], @@ -27201,6 +32149,18 @@ our %unified_info = ( "test/rsa_test-bin-rsa_test.o" => [ "test/rsa_test.c" ], + "test/rsa_x931_test" => [ + "test/rsa_x931_test-bin-rsa_x931_test.o" + ], + "test/rsa_x931_test-bin-rsa_x931_test.o" => [ + "test/rsa_x931_test.c" + ], + "test/safe_math_test" => [ + "test/safe_math_test-bin-safe_math_test.o" + ], + "test/safe_math_test-bin-safe_math_test.o" => [ + "test/safe_math_test.c" + ], "test/sanitytest" => [ "test/sanitytest-bin-sanitytest.o" ], @@ -27232,6 +32192,12 @@ our %unified_info = ( "test/siphash_internal_test-bin-siphash_internal_test.o" => [ "test/siphash_internal_test.c" ], + "test/slh_dsa_test" => [ + "test/slh_dsa_test-bin-slh_dsa_test.o" + ], + "test/slh_dsa_test-bin-slh_dsa_test.o" => [ + "test/slh_dsa_test.c" + ], "test/sm2_internal_test" => [ "test/sm2_internal_test-bin-sm2_internal_test.o" ], @@ -27274,6 +32240,13 @@ our %unified_info = ( "test/ssl_ctx_test-bin-ssl_ctx_test.o" => [ "test/ssl_ctx_test.c" ], + "test/ssl_handshake_rtt_test" => [ + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" + ], + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" => [ + "test/ssl_handshake_rtt_test.c" + ], "test/ssl_old_test" => [ "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/ssl_old_test-bin-ssl_old_test.o" @@ -27332,6 +32305,12 @@ our %unified_info = ( "test/stack_test-bin-stack_test.o" => [ "test/stack_test.c" ], + "test/strtoultest" => [ + "test/strtoultest-bin-strtoultest.o" + ], + "test/strtoultest-bin-strtoultest.o" => [ + "test/strtoultest.c" + ], "test/sysdefaulttest" => [ "test/sysdefaulttest-bin-sysdefaulttest.o" ], @@ -27362,6 +32341,9 @@ our %unified_info = ( "test/testutil/libtestutil-lib-format_output.o" => [ "test/testutil/format_output.c" ], + "test/testutil/libtestutil-lib-helper.o" => [ + "test/testutil/helper.c" + ], "test/testutil/libtestutil-lib-load.o" => [ "test/testutil/load.c" ], @@ -27395,6 +32377,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-testutil_init.o" => [ "test/testutil/testutil_init.c" ], + "test/threadpool_test" => [ + "test/threadpool_test-bin-threadpool_test.o" + ], + "test/threadpool_test-bin-threadpool_test.o" => [ + "test/threadpool_test.c" + ], "test/threadstest" => [ "test/threadstest-bin-threadstest.o" ], @@ -27413,6 +32401,12 @@ our %unified_info = ( "test/time_offset_test-bin-time_offset_test.o" => [ "test/time_offset_test.c" ], + "test/time_test" => [ + "test/time_test-bin-time_test.o" + ], + "test/time_test-bin-time_test.o" => [ + "test/time_test.c" + ], "test/tls13ccstest" => [ "test/helpers/tls13ccstest-bin-ssltestlib.o", "test/tls13ccstest-bin-tls13ccstest.o" @@ -27426,6 +32420,13 @@ our %unified_info = ( "test/tls13encryptiontest-bin-tls13encryptiontest.o" => [ "test/tls13encryptiontest.c" ], + "test/tls13groupselection_test" => [ + "test/helpers/tls13groupselection_test-bin-ssltestlib.o", + "test/tls13groupselection_test-bin-tls13groupselection_test.o" + ], + "test/tls13groupselection_test-bin-tls13groupselection_test.o" => [ + "test/tls13groupselection_test.c" + ], "test/trace_api_test" => [ "test/trace_api_test-bin-trace_api_test.o" ], @@ -27481,6 +32482,12 @@ our %unified_info = ( "test/wpackettest-bin-wpackettest.o" => [ "test/wpackettest.c" ], + "test/x509_acert_test" => [ + "test/x509_acert_test-bin-x509_acert_test.o" + ], + "test/x509_acert_test-bin-x509_acert_test.o" => [ + "test/x509_acert_test.c" + ], "test/x509_check_cert_pkey_test" => [ "test/x509_check_cert_pkey_test-bin-x509_check_cert_pkey_test.o" ], @@ -27499,6 +32506,24 @@ our %unified_info = ( "test/x509_internal_test-bin-x509_internal_test.o" => [ "test/x509_internal_test.c" ], + "test/x509_load_cert_file_test" => [ + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" + ], + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" => [ + "test/x509_load_cert_file_test.c" + ], + "test/x509_req_test" => [ + "test/x509_req_test-bin-x509_req_test.o" + ], + "test/x509_req_test-bin-x509_req_test.o" => [ + "test/x509_req_test.c" + ], + "test/x509_test" => [ + "test/x509_test-bin-x509_test.o" + ], + "test/x509_test-bin-x509_test.o" => [ + "test/x509_test.c" + ], "test/x509_time_test" => [ "test/x509_time_test-bin-x509_time_test.o" ], @@ -27562,6 +32587,7 @@ my @makevars = ( "LDLIBS", "MT", "MTFLAGS", + "OBJCOPY", "PERL", "RANLIB", "RC", @@ -27575,6 +32601,12 @@ my %disabled_info = ( "asan" => { "macro" => "OPENSSL_NO_ASAN" }, + "brotli" => { + "macro" => "OPENSSL_NO_BROTLI" + }, + "brotli-dynamic" => { + "macro" => "OPENSSL_NO_BROTLI_DYNAMIC" + }, "comp" => { "macro" => "OPENSSL_NO_COMP", "skipped" => [ @@ -27587,6 +32619,9 @@ my %disabled_info = ( "crypto-mdebug-backtrace" => { "macro" => "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE" }, + "demos" => { + "macro" => "OPENSSL_NO_DEMOS" + }, "ec_nistp_64_gcc_128" => { "macro" => "OPENSSL_NO_EC_NISTP_64_GCC_128" }, @@ -27596,12 +32631,24 @@ my %disabled_info = ( "external-tests" => { "macro" => "OPENSSL_NO_EXTERNAL_TESTS" }, + "fips-jitter" => { + "macro" => "OPENSSL_NO_FIPS_JITTER" + }, "fuzz-afl" => { "macro" => "OPENSSL_NO_FUZZ_AFL" }, "fuzz-libfuzzer" => { "macro" => "OPENSSL_NO_FUZZ_LIBFUZZER" }, + "h3demo" => { + "macro" => "OPENSSL_NO_H3DEMO" + }, + "hqinterop" => { + "macro" => "OPENSSL_NO_HQINTEROP" + }, + "jitter" => { + "macro" => "OPENSSL_NO_JITTER" + }, "ktls" => { "macro" => "OPENSSL_NO_KTLS" }, @@ -27617,6 +32664,9 @@ my %disabled_info = ( "msan" => { "macro" => "OPENSSL_NO_MSAN" }, + "pie" => { + "macro" => "OPENSSL_NO_PIE" + }, "rc5" => { "macro" => "OPENSSL_NO_RC5", "skipped" => [ @@ -27632,6 +32682,12 @@ my %disabled_info = ( "ssl3-method" => { "macro" => "OPENSSL_NO_SSL3_METHOD" }, + "sslkeylog" => { + "macro" => "OPENSSL_NO_SSLKEYLOG" + }, + "tfo" => { + "macro" => "OPENSSL_NO_TFO" + }, "trace" => { "macro" => "OPENSSL_NO_TRACE" }, @@ -27646,6 +32702,21 @@ my %disabled_info = ( }, "weak-ssl-ciphers" => { "macro" => "OPENSSL_NO_WEAK_SSL_CIPHERS" + }, + "winstore" => { + "macro" => "OPENSSL_NO_WINSTORE" + }, + "zlib" => { + "macro" => "OPENSSL_NO_ZLIB" + }, + "zlib-dynamic" => { + "macro" => "OPENSSL_NO_ZLIB_DYNAMIC" + }, + "zstd" => { + "macro" => "OPENSSL_NO_ZSTD" + }, + "zstd-dynamic" => { + "macro" => "OPENSSL_NO_ZSTD_DYNAMIC" } ); my @user_crossable = qw( AR AS CC CXX CPP LD MT RANLIB RC ); @@ -27659,15 +32730,15 @@ unless (caller) { use File::Copy; use Pod::Usage; - use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; - use OpenSSL::fallback '/home/runner/work/node/node/deps/openssl/openssl/external/perl/MODULES.txt'; + use lib '/node/deps/openssl/openssl/util/perl'; + use OpenSSL::fallback '/node/deps/openssl/openssl/external/perl/MODULES.txt'; my $here = dirname($0); if (scalar @ARGV == 0) { # With no arguments, re-create the build file # We do that in two steps, where the first step emits perl - # snipets. + # snippets. my $buildfile = $config{build_file}; my $buildfile_template = "$buildfile.in"; @@ -27687,7 +32758,7 @@ unless (caller) { ); use lib '.'; - use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; + use lib '/node/deps/openssl/openssl/Configurations'; use gentemplate; open my $buildfile_template_fh, ">$buildfile_template" @@ -27704,8 +32775,8 @@ unless (caller) { my $prepend = <<'_____'; use File::Spec::Functions; -use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; -use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; +use lib '/node/deps/openssl/openssl/util/perl'; +use lib '/node/deps/openssl/openssl/Configurations'; use lib '.'; use platform; _____ diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/aes/aes-586.S b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/aes/aes-586.S index 54ca918323b688..cca5b86b1a282d 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/aes/aes-586.S +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/aes/aes-586.S @@ -3275,4 +3275,4 @@ L056permute: .byte 65,69,83,32,102,111,114,32,120,56,54,44,32,67,82,89 .byte 80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114 .byte 111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 -.comm _OPENSSL_ia32cap_P,16 +.comm _OPENSSL_ia32cap_P,40 diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/aes/aesni-x86.S b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/aes/aesni-x86.S index 0dfd8d39f9fb45..33783dd53acdf2 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/aes/aesni-x86.S +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/aes/aesni-x86.S @@ -3323,4 +3323,4 @@ Lkey_const: .byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 .byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 .byte 115,108,46,111,114,103,62,0 -.comm _OPENSSL_ia32cap_P,16 +.comm _OPENSSL_ia32cap_P,40 diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/bn/bn-586.S b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/bn/bn-586.S index 74f325b80bf104..9b5d37a1fbdb71 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/bn/bn-586.S +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/bn/bn-586.S @@ -1557,4 +1557,4 @@ L032pw_end: popl %ebx popl %ebp ret -.comm _OPENSSL_ia32cap_P,16 +.comm _OPENSSL_ia32cap_P,40 diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/bn/x86-gf2m.S b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/bn/x86-gf2m.S index 67ddae47d13912..f3c0912cc8b3da 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/bn/x86-gf2m.S +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/bn/x86-gf2m.S @@ -355,4 +355,4 @@ L001ialu: .byte 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 .byte 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 .byte 62,0 -.comm _OPENSSL_ia32cap_P,16 +.comm _OPENSSL_ia32cap_P,40 diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/bn/x86-mont.S b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/bn/x86-mont.S index 958fd5ceb507e6..fe41c053fc8ac2 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/bn/x86-mont.S +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/bn/x86-mont.S @@ -477,4 +477,4 @@ L000just_leave: .byte 54,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 .byte 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 .byte 111,114,103,62,0 -.comm _OPENSSL_ia32cap_P,16 +.comm _OPENSSL_ia32cap_P,40 diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h index f8db7c7b0372fa..0ca22b342cc4bd 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: BSD-x86" -#define DATE "built on: Sun Jul 20 00:45:53 2025 UTC" +#define DATE "built on: Tue Aug 5 17:10:29 2025 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/chacha/chacha-x86.S b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/chacha/chacha-x86.S index 43fb04a04b222e..1c821b153dd8c5 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/chacha/chacha-x86.S +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/chacha/chacha-x86.S @@ -1455,4 +1455,4 @@ L019done: popl %ebx popl %ebp ret -.comm _OPENSSL_ia32cap_P,16 +.comm _OPENSSL_ia32cap_P,40 diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/ec/ecp_nistz256-x86.S b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/ec/ecp_nistz256-x86.S index 44d644b785db3c..2ebea569d7ab14 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/ec/ecp_nistz256-x86.S +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/ec/ecp_nistz256-x86.S @@ -5255,4 +5255,4 @@ L013pic: popl %ebx popl %ebp ret -.comm _OPENSSL_ia32cap_P,16 +.comm _OPENSSL_ia32cap_P,40 diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/params_idx.c b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/params_idx.c new file mode 100644 index 00000000000000..9d76ffededc24c --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/params_idx.c @@ -0,0 +1,3366 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from crypto/params_idx.c.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#include "internal/e_os.h" +#include "internal/param_names.h" +#include + +/* Machine generated TRIE -- generated by util/perl/OpenSSL/paramnames.pm */ +int ossl_param_find_pidx(const char *s) +{ + switch(s[0]) { + default: + break; + case 'a': + switch(s[1]) { + default: + break; + case 'c': + if (strcmp("vp-info", s + 2) == 0) + return PIDX_KDF_PARAM_X942_ACVPINFO; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'd': + if (strcmp("itional-random", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_ADD_RANDOM; + break; + case '\0': + return PIDX_KDF_PARAM_ARGON2_AD; + } + break; + case 'e': + if (strcmp("ad", s + 2) == 0) + return PIDX_CIPHER_PARAM_AEAD; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("id_param", s + 4) == 0) + return PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD; + break; + case 'i': + if (strcmp("d-absent", s + 4) == 0) + return PIDX_DIGEST_PARAM_ALGID_ABSENT; + break; + case 'o': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'h': + switch(s[8]) { + default: + break; + case 'm': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '-': + if (strcmp("params", s + 13) == 0) + return PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS; + break; + case '\0': + return PIDX_ALG_PARAM_ALGORITHM_ID; + } + } + } + } + } + } + } + } + } + } + break; + case 'i': + if (strcmp("as", s + 3) == 0) + return PIDX_STORE_PARAM_ALIAS; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_A; + } + break; + case 'b': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("sis-type", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_CHAR2_TYPE; + break; + case 'i': + if (strcmp("ts", s + 2) == 0) + return PIDX_PKEY_PARAM_BITS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("size", s + 6) == 0) + return PIDX_MAC_PARAM_BLOCK_SIZE; + break; + case '_': + if (strcmp("padding", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING; + break; + case 's': + if (strcmp("ize", s + 6) == 0) + return PIDX_DIGEST_PARAM_BLOCK_SIZE; + } + } + } + } + break; + case 'u': + if (strcmp("ildinfo", s + 2) == 0) + return PIDX_PROV_PARAM_BUILDINFO; + break; + case '\0': + return PIDX_PKEY_PARAM_EC_B; + } + break; + case 'c': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_C_ROUNDS; + break; + case 'e': + if (strcmp("kalg", s + 2) == 0) + return PIDX_KDF_PARAM_CEK_ALG; + break; + case 'i': + if (strcmp("pher", s + 2) == 0) + return PIDX_ALG_PARAM_CIPHER; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("actor", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_COFACTOR; + break; + case 'n': + switch(s[3]) { + default: + break; + case 's': + if (strcmp("tant", s + 4) == 0) + return PIDX_KDF_PARAM_CONSTANT; + break; + case 't': + if (strcmp("ext-string", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_CONTEXT_STRING; + } + } + break; + case 't': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("mode", s + 4) == 0) + return PIDX_CIPHER_PARAM_CTS_MODE; + break; + case '\0': + return PIDX_CIPHER_PARAM_CTS; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '-': + if (strcmp("iv", s + 7) == 0) + return PIDX_CIPHER_PARAM_CUSTOM_IV; + break; + case '\0': + return PIDX_MAC_PARAM_CUSTOM; + } + } + } + } + } + } + break; + case 'd': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_D_ROUNDS; + break; + case 'a': + switch(s[2]) { + default: + break; + case 't': + switch(s[3]) { + default: + break; + case 'a': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 's': + if (strcmp("tructure", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_STRUCTURE; + break; + case 't': + if (strcmp("ype", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_TYPE; + } + break; + case '\0': + return PIDX_OBJECT_PARAM_DATA; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + if (strcmp("ded-from-explicit", s + 4) == 0) + return PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS; + break; + case 'r': + if (strcmp("ypt-only", s + 4) == 0) + return PIDX_CIPHER_PARAM_DECRYPT_ONLY; + } + break; + case 'f': + if (strcmp("ault-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_DEFAULT_DIGEST; + break; + case 's': + if (strcmp("c", s + 3) == 0) + return PIDX_OBJECT_PARAM_DESC; + break; + case 't': + if (strcmp("erministic", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_DETERMINISTIC; + } + break; + case 'h': + if (strcmp("kem-ikm", s + 2) == 0) + return PIDX_PKEY_PARAM_DHKEM_IKM; + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("heck", s + 8) == 0) + return PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK; + break; + case 'n': + if (strcmp("oinit", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_NOINIT; + break; + case 'o': + if (strcmp("neshot", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_ONESHOT; + break; + case 'p': + if (strcmp("rops", s + 8) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS; + break; + case 's': + if (strcmp("ize", s + 8) == 0) + return PIDX_PKEY_PARAM_DIGEST_SIZE; + } + break; + case '\0': + return PIDX_STORE_PARAM_DIGEST; + } + } + } + } + break; + case 's': + if (strcmp("tid", s + 3) == 0) + return PIDX_PKEY_PARAM_DIST_ID; + } + break; + case 'r': + if (strcmp("bg-no-trunc-md", s + 2) == 0) + return PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST; + break; + case 's': + if (strcmp("a-sign-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_DSA_SIGN_DISABLED; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_D; + } + break; + case 'e': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("rly_clean", s + 2) == 0) + return PIDX_KDF_PARAM_EARLY_CLEAN; + break; + case 'c': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'h': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'a': + switch(s[9]) { + default: + break; + case 'c': + switch(s[10]) { + default: + break; + case 't': + switch(s[11]) { + default: + break; + case 'o': + switch(s[12]) { + default: + break; + case 'r': + switch(s[13]) { + default: + break; + case '-': + switch(s[14]) { + default: + break; + case 'c': + if (strcmp("heck", s + 15) == 0) + return PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK; + break; + case 'm': + if (strcmp("ode", s + 15) == 0) + return PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE; + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'm': + if (strcmp("s_check", s + 2) == 0) + return PIDX_KDF_PARAM_FIPS_EMS_CHECK; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("d-pub-key", s + 6) == 0) + return PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY; + break; + case 'i': + if (strcmp("ng", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_ENCODING; + } + } + break; + case 'r': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'c': + if (strcmp("heck", s + 9) == 0) + return PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK; + break; + case 'l': + if (strcmp("evel", s + 9) == 0) + return PIDX_ENCODER_PARAM_ENCRYPT_LEVEL; + } + } + } + } + } + } + break; + case 'g': + if (strcmp("ine", s + 3) == 0) + return PIDX_ALG_PARAM_ENGINE; + break; + case 't': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'y': + switch(s[7]) { + default: + break; + case '_': + if (strcmp("required", s + 8) == 0) + return PIDX_DRBG_PARAM_ENTROPY_REQUIRED; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_ENTROPY; + } + } + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_E; + break; + case 'x': + if (strcmp("pect", s + 2) == 0) + return PIDX_STORE_PARAM_EXPECT; + } + break; + case 'f': + switch(s[1]) { + default: + break; + case 'i': + switch(s[2]) { + default: + break; + case 'e': + if (strcmp("ld-type", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_FIELD_TYPE; + break; + case 'n': + if (strcmp("gerprint", s + 3) == 0) + return PIDX_STORE_PARAM_FINGERPRINT; + break; + case 'p': + if (strcmp("s-indicator", s + 3) == 0) + return PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR; + } + } + break; + case 'g': + switch(s[1]) { + default: + break; + case 'e': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_GENERATE; + } + break; + case 'o': + if (strcmp("r", s + 8) == 0) + return PIDX_PKEY_PARAM_EC_GENERATOR; + } + } + } + } + } + } + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_GINDEX; + break; + case 'r': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'u': + switch(s[4]) { + default: + break; + case 'p': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("check", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE; + break; + case '\0': + return PIDX_PKEY_PARAM_GROUP_NAME; + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_G; + } + break; + case 'h': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("s-randkey", s + 2) == 0) + return PIDX_CIPHER_PARAM_HAS_RAND_KEY; + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_H; + break; + case 'k': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'f': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_KEY_CHECK; + } + } + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_HMAC_KEY_CHECK; + break; + case 's': + if (strcmp("_padding", s + 2) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING; + } + break; + case 'i': + switch(s[1]) { + default: + break; + case 'd': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_PKCS12_ID; + } + break; + case 'k': + if (strcmp("me", s + 2) == 0) + return PIDX_KEM_PARAM_IKME; + break; + case 'm': + if (strcmp("plicit-rejection", s + 2) == 0) + return PIDX_PKEY_PARAM_IMPLICIT_REJECTION; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("lude-public", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC; + break; + case 'f': + if (strcmp("o", s + 3) == 0) + return PIDX_PASSPHRASE_PARAM_INFO; + break; + case 'p': + if (strcmp("ut-type", s + 3) == 0) + return PIDX_STORE_PARAM_INPUT_TYPE; + break; + case 's': + if (strcmp("tance", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_INSTANCE; + } + break; + case 't': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("tion", s + 5) == 0) + return PIDX_GEN_PARAM_ITERATION; + break; + case '\0': + return PIDX_KDF_PARAM_ITER; + } + } + } + break; + case 'v': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("generated", s + 3) == 0) + return PIDX_CIPHER_PARAM_AEAD_IV_GENERATED; + break; + case 'l': + if (strcmp("en", s + 3) == 0) + return PIDX_CIPHER_PARAM_IVLEN; + break; + case '\0': + return PIDX_MAC_PARAM_IV; + } + } + break; + case 'j': + switch(s[1]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_COFACTOR; + } + break; + case 'k': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K2; + } + break; + case '3': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K3; + } + break; + case 'a': + if (strcmp("t", s + 2) == 0) + return PIDX_SIGNATURE_PARAM_KAT; + break; + case 'b': + if (strcmp("kdf-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KBKDF_KEY_CHECK; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case 's': + switch(s[9]) { + default: + break; + case 't': + switch(s[10]) { + default: + break; + case '-': + if (strcmp("props", s + 11) == 0) + return PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_KDF_DIGEST; + } + } + } + } + } + } + break; + case 'o': + if (strcmp("utlen", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_OUTLEN; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_TYPE; + break; + case 'u': + if (strcmp("km", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_UKM; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'y': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("heck", s + 5) == 0) + return PIDX_PKEY_PARAM_FIPS_KEY_CHECK; + break; + case 'l': + if (strcmp("ength", s + 5) == 0) + return PIDX_SKEY_PARAM_KEY_LENGTH; + } + break; + case 'b': + if (strcmp("its", s + 4) == 0) + return PIDX_CIPHER_PARAM_RC2_KEYBITS; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_KEYLEN; + break; + case '\0': + return PIDX_MAC_PARAM_KEY; + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KMAC_KEY_CHECK; + } + break; + case 'l': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("el", s + 3) == 0) + return PIDX_KDF_PARAM_LABEL; + break; + case 'n': + if (strcmp("es", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_LANES; + } + } + break; + case 'm': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'k': + if (strcmp("ey", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_MAC_KEY; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_KDF_PARAM_MAC_SIZE; + break; + case '\0': + return PIDX_ALG_PARAM_MAC; + } + break; + case 'n': + if (strcmp("datory-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_MANDATORY_DIGEST; + break; + case 'x': + switch(s[3]) { + default: + break; + case '-': + if (strcmp("size", s + 4) == 0) + return PIDX_PKEY_PARAM_MAX_SIZE; + break; + case '_': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("dinlen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_ADINLEN; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("rly_data", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA; + break; + case 'n': + if (strcmp("tropylen", s + 6) == 0) + return PIDX_DRBG_PARAM_MAX_ENTROPYLEN; + } + break; + case 'f': + if (strcmp("rag_len", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_NONCELEN; + break; + case 'p': + if (strcmp("erslen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_PERSLEN; + break; + case 'r': + if (strcmp("equest", s + 5) == 0) + return PIDX_RAND_PARAM_MAX_REQUEST; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MAX_LENGTH; + break; + case 'm': + if (strcmp("em_bytes", s + 4) == 0) + return PIDX_KDF_PARAM_SCRYPT_MAXMEM; + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'm': + if (strcmp("cost", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_MEMCOST; + break; + case 's': + if (strcmp("sage-encoding", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING; + } + break; + case 'g': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_DIGEST; + break; + case 'p': + if (strcmp("roperties", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_PROPERTIES; + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_MASKGENFUNC; + } + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("alg", s + 3) == 0) + return PIDX_DIGEST_PARAM_MICALG; + break; + case 'n': + switch(s[3]) { + default: + break; + case '_': + switch(s[4]) { + default: + break; + case 'e': + if (strcmp("ntropylen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_ENTROPYLEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_NONCELEN; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MIN_LENGTH; + } + } + break; + case 'l': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + if (strcmp("nput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS; + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED; + } + } + } + } + break; + case 'k': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + switch(s[8]) { + default: + break; + case 'm': + if (strcmp("port_pct_type", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE; + break; + case 'n': + if (strcmp("put_formats", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS; + } + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED; + } + } + } + } + } + } + break; + case 'o': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case '\0': + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE; + } + break; + case 'u': + if (strcmp("le-filename", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_MODULE_FILENAME; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_SIGNATURE_PARAM_MU; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_M; + } + break; + case 'n': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("me", s + 2) == 0) + return PIDX_STORE_PARAM_ISSUER; + break; + case 'o': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("short-mac", s + 3) == 0) + return PIDX_PROV_PARAM_NO_SHORT_MAC; + break; + case 'n': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("type", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_NONCE_TYPE; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_NONCE; + } + } + } + } + break; + case 'u': + if (strcmp("m", s + 2) == 0) + return PIDX_CIPHER_PARAM_NUM; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_N; + } + break; + case 'o': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("ep-label", s + 2) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL; + break; + case 'p': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'n': + if (strcmp("ssl-version", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_VERSION; + break; + case 'r': + if (strcmp("ation", s + 4) == 0) + return PIDX_KEM_PARAM_OPERATION; + } + break; + case 't': + if (strcmp("ions", s + 3) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS; + } + break; + case 'r': + if (strcmp("der", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_ORDER; + } + break; + case 'p': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P2; + } + break; + case 'a': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'm': + if (strcmp("ode", s + 5) == 0) + return PIDX_PKEY_PARAM_PAD_MODE; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_DIGEST_PARAM_PAD_TYPE; + } + break; + case 'd': + if (strcmp("ing", s + 4) == 0) + return PIDX_CIPHER_PARAM_PADDING; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_PAD; + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'u': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYUINFO; + break; + case 'v': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYVINFO; + } + } + } + break; + case 's': + if (strcmp("s", s + 3) == 0) + return PIDX_KDF_PARAM_PASSWORD; + } + break; + case 'b': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("ts", s + 3) == 0) + return PIDX_PKEY_PARAM_FFC_PBITS; + break; + case 'k': + if (strcmp("df2-lower-bound-check", s + 3) == 0) + return PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK; + } + break; + case 'c': + if (strcmp("ounter", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_PCOUNTER; + break; + case 'i': + if (strcmp("peline-tag", s + 2) == 0) + return PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG; + break; + case 'k': + if (strcmp("cs5", s + 2) == 0) + return PIDX_KDF_PARAM_PKCS5; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("nt-format", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT; + break; + case 't': + if (strcmp("ential", s + 3) == 0) + return PIDX_GEN_PARAM_POTENTIAL; + } + break; + case 'r': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("iction_resistance", s + 4) == 0) + return PIDX_DRBG_PARAM_PREDICTION_RESISTANCE; + break; + case 'f': + if (strcmp("ix", s + 4) == 0) + return PIDX_KDF_PARAM_PREFIX; + } + break; + case 'i': + switch(s[3]) { + default: + break; + case 'm': + if (strcmp("es", s + 4) == 0) + return PIDX_PKEY_PARAM_RSA_PRIMES; + break; + case 'v': + switch(s[4]) { + default: + break; + case '_': + if (strcmp("len", s + 5) == 0) + return PIDX_PKEY_PARAM_DH_PRIV_LEN; + break; + case '\0': + return PIDX_PKEY_PARAM_PRIV_KEY; + } + } + break; + case 'o': + switch(s[3]) { + default: + break; + case 'p': + if (strcmp("erties", s + 4) == 0) + return PIDX_STORE_PARAM_PROPERTIES; + break; + case 'v': + if (strcmp("ider-name", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_PROV_NAME; + } + } + break; + case 'u': + if (strcmp("b", s + 2) == 0) + return PIDX_PKEY_PARAM_PUB_KEY; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_P; + } + break; + case 'q': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q2; + } + break; + case 'b': + if (strcmp("its", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_QBITS; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_Q; + break; + case 'x': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_X; + } + break; + case 'y': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_Y; + } + } + break; + case 'r': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'k': + if (strcmp("ey", s + 5) == 0) + return PIDX_CIPHER_PARAM_RANDOM_KEY; + break; + case 'o': + if (strcmp("m_data", s + 5) == 0) + return PIDX_DRBG_PARAM_RANDOM_DATA; + } + } + break; + case 'w': + if (strcmp("-bytes", s + 3) == 0) + return PIDX_SKEY_PARAM_RAW_BYTES; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case '_': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("head", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD; + break; + case 'b': + if (strcmp("uffer_len", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN; + } + } + } + break; + case 'f': + if (strcmp("erence", s + 3) == 0) + return PIDX_OBJECT_PARAM_REFERENCE; + break; + case 's': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case '_': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("ounter", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_COUNTER; + break; + case 'r': + if (strcmp("equests", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_REQUESTS; + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case 'm': + switch(s[10]) { + default: + break; + case 'e': + switch(s[11]) { + default: + break; + case '_': + if (strcmp("interval", s + 12) == 0) + return PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL; + break; + case '\0': + return PIDX_DRBG_PARAM_RESEED_TIME; + } + } + } + } + } + } + } + } + } + } + break; + case 'o': + if (strcmp("unds", s + 2) == 0) + return PIDX_CIPHER_PARAM_ROUNDS; + break; + case 's': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + switch(s[5]) { + default: + break; + case 'o': + switch(s[6]) { + default: + break; + case 'e': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case 'i': + switch(s[10]) { + default: + break; + case 'c': + switch(s[11]) { + default: + break; + case 'i': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'n': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case '1': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT1; + } + break; + case '2': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT2; + } + break; + case '3': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT3; + } + break; + case '4': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT4; + } + break; + case '5': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT5; + } + break; + case '6': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT6; + } + break; + case '7': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT7; + } + break; + case '8': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT8; + } + break; + case '9': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'd': + if (strcmp("erive-from-pq", s + 5) == 0) + return PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'x': + switch(s[6]) { + default: + break; + case 'p': + switch(s[7]) { + default: + break; + case 'o': + switch(s[8]) { + default: + break; + case 'n': + switch(s[9]) { + default: + break; + case 'e': + switch(s[10]) { + default: + break; + case 'n': + switch(s[11]) { + default: + break; + case 't': + switch(s[12]) { + default: + break; + case '1': + switch(s[13]) { + default: + break; + case '0': + switch(s[14]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT1; + } + break; + case '2': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT2; + } + break; + case '3': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT3; + } + break; + case '4': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT4; + } + break; + case '5': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT5; + } + break; + case '6': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT6; + } + break; + case '7': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT7; + } + break; + case '8': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT8; + } + break; + case '9': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT; + } + } + } + } + } + } + } + } + break; + case 'f': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'o': + switch(s[9]) { + default: + break; + case 'r': + switch(s[10]) { + default: + break; + case '1': + switch(s[11]) { + default: + break; + case '0': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR1; + } + break; + case '2': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR2; + } + break; + case '3': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR3; + } + break; + case '4': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR4; + } + break; + case '5': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR5; + } + break; + case '6': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR6; + } + break; + case '7': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR7; + } + break; + case '8': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR8; + } + break; + case '9': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR; + } + } + } + } + } + } + break; + case 'p': + switch(s[5]) { + default: + break; + case 'k': + if (strcmp("cs15-pad-disabled", s + 6) == 0) + return PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED; + break; + case 's': + if (strcmp("s-saltlen-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK; + } + break; + case 's': + if (strcmp("ign-x931-pad-disabled", s + 5) == 0) + return PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED; + } + } + } + break; + case '\0': + return PIDX_KDF_PARAM_SCRYPT_R; + } + break; + case 's': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("eprime-generator", s + 3) == 0) + return PIDX_PKEY_PARAM_DH_GENERATOR; + break; + case 'l': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'l': + if (strcmp("en", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_PSS_SALTLEN; + break; + case '\0': + return PIDX_MAC_PARAM_SALT; + } + } + break; + case 'v': + if (strcmp("e-parameters", s + 3) == 0) + return PIDX_ENCODER_PARAM_SAVE_PARAMETERS; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'r': + if (strcmp("et", s + 4) == 0) + return PIDX_KDF_PARAM_SECRET; + break; + case 'u': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'y': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'b': + if (strcmp("its", s + 10) == 0) + return PIDX_PKEY_PARAM_SECURITY_BITS; + break; + case 'c': + if (strcmp("hecks", s + 10) == 0) + return PIDX_PROV_PARAM_SECURITY_CHECKS; + } + } + } + } + } + } + } + break; + case 'e': + if (strcmp("d", s + 3) == 0) + return PIDX_PKEY_PARAM_SLH_DSA_SEED; + break; + case 'r': + if (strcmp("ial", s + 3) == 0) + return PIDX_STORE_PARAM_SERIAL; + break; + case 's': + if (strcmp("sion_id", s + 3) == 0) + return PIDX_KDF_PARAM_SSHKDF_SESSION_ID; + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'n': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + if (strcmp("heck", s + 6) == 0) + return PIDX_PKEY_PARAM_FIPS_SIGN_CHECK; + break; + case 'x': + if (strcmp("931-pad-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK; + } + break; + case 'a': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case 'u': + switch(s[7]) { + default: + break; + case 'r': + switch(s[8]) { + default: + break; + case 'e': + switch(s[9]) { + default: + break; + case '-': + if (strcmp("digest-check", s + 10) == 0) + return PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK; + break; + case '\0': + return PIDX_SIGNATURE_PARAM_SIGNATURE; + } + } + } + } + } + } + } + break; + case 'z': + if (strcmp("e", s + 3) == 0) + return PIDX_MAC_PARAM_SIZE; + } + break; + case 'p': + if (strcmp("eed", s + 2) == 0) + return PIDX_CIPHER_PARAM_SPEED; + break; + case 's': + switch(s[2]) { + default: + break; + case 'h': + switch(s[3]) { + default: + break; + case 'k': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'f': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_KEY_CHECK; + } + } + } + } + } + break; + case 'k': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'f': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_KEY_CHECK; + } + } + } + } + break; + case 'l': + if (strcmp("3-ms", s + 3) == 0) + return PIDX_DIGEST_PARAM_SSL3_MS; + } + break; + case 't': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("esc", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_DESC; + break; + case 'p': + if (strcmp("hase", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_PHASE; + break; + case 't': + if (strcmp("ype", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_TYPE; + } + break; + case 'a': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_STATE; + } + break; + case 'u': + if (strcmp("s", s + 5) == 0) + return PIDX_PROV_PARAM_STATUS; + } + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("m_mac", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC; + break; + case 'n': + if (strcmp("gth", s + 5) == 0) + return PIDX_RAND_PARAM_STRENGTH; + } + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("ject", s + 3) == 0) + return PIDX_STORE_PARAM_SUBJECT; + break; + case 'p': + switch(s[3]) { + default: + break; + case 'p': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + if (strcmp("ivinfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PRIVINFO; + break; + case 'u': + if (strcmp("binfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PUBINFO; + } + } + } + } + } + } + break; + case 't': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_TAGLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TAG; + } + } + break; + case 'd': + if (strcmp("es-encrypt-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED; + break; + case 'e': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case '-': + if (strcmp("entropy", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_TEST_ENTROPY; + break; + case '_': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("ntropy", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_ENTROPY; + break; + case 'n': + if (strcmp("once", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_NONCE; + } + } + } + } + break; + case 'h': + if (strcmp("reads", s + 2) == 0) + return PIDX_KDF_PARAM_THREADS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("lient-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION; + break; + case 'd': + if (strcmp("ata-size", s + 5) == 0) + return PIDX_MAC_PARAM_TLS_DATA_SIZE; + break; + case 'g': + switch(s[5]) { + default: + break; + case 'r': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'u': + switch(s[8]) { + default: + break; + case 'p': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'a': + if (strcmp("lg", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_ALG; + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_ID; + } + break; + case 's': + if (strcmp("-kem", s + 12) == 0) + return PIDX_CAPABILITY_TLS_GROUP_IS_KEM; + } + break; + case 'n': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'm': + switch(s[13]) { + default: + break; + case 'e': + switch(s[14]) { + default: + break; + case '-': + if (strcmp("internal", s + 15) == 0) + return PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL; + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_NAME; + } + } + } + } + break; + case 's': + if (strcmp("ec-bits", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case '-': + if (strcmp("size", s + 8) == 0) + return PIDX_CIPHER_PARAM_TLS_MAC_SIZE; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS_MAC; + } + break; + case 'x': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS; + } + } + } + break; + case 'i': + switch(s[6]) { + default: + break; + case 'n': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS; + } + } + } + break; + case 'u': + if (strcmp("lti", s + 6) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK; + } + break; + case 'n': + if (strcmp("egotiated-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION; + break; + case 's': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'a': + switch(s[8]) { + default: + break; + case 'l': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '-': + switch(s[11]) { + default: + break; + case 'c': + if (strcmp("ode-point", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT; + break; + case 'h': + switch(s[12]) { + default: + break; + case 'a': + switch(s[13]) { + default: + break; + case 's': + switch(s[14]) { + default: + break; + case 'h': + switch(s[15]) { + default: + break; + case '-': + switch(s[16]) { + default: + break; + case 'n': + if (strcmp("ame", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME; + break; + case 'o': + if (strcmp("id", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_OID; + } + } + } + } + } + break; + case 'i': + if (strcmp("ana-name", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME; + break; + case 'k': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'y': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case 'y': + switch(s[16]) { + default: + break; + case 'p': + switch(s[17]) { + default: + break; + case 'e': + switch(s[18]) { + default: + break; + case '-': + if (strcmp("oid", s + 19) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID; + break; + case '\0': + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE; + } + } + } + } + } + } + } + break; + case 'n': + if (strcmp("ame", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_NAME; + break; + case 'o': + if (strcmp("id", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_OID; + break; + case 's': + switch(s[12]) { + default: + break; + case 'e': + if (strcmp("c-bits", s + 13) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS; + break; + case 'i': + switch(s[13]) { + default: + break; + case 'g': + switch(s[14]) { + default: + break; + case '-': + switch(s[15]) { + default: + break; + case 'n': + if (strcmp("ame", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME; + break; + case 'o': + if (strcmp("id", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_OID; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'v': + if (strcmp("ersion", s + 5) == 0) + return PIDX_CIPHER_PARAM_TLS_VERSION; + } + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK; + break; + case 'e': + if (strcmp("ms-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK; + } + } + } + } + } + break; + case '3': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'k': + switch(s[7]) { + default: + break; + case 'd': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'u': + switch(s[6]) { + default: + break; + case 'l': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case '_': + switch(s[10]) { + default: + break; + case 'a': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'd': + switch(s[13]) { + default: + break; + case 'p': + if (strcmp("acklen", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD; + } + } + } + break; + case 'e': + switch(s[11]) { + default: + break; + case 'n': + switch(s[12]) { + default: + break; + case 'c': + switch(s[13]) { + default: + break; + case 'i': + if (strcmp("n", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN; + break; + case 'l': + if (strcmp("en", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC; + } + } + } + break; + case 'i': + if (strcmp("nterleave", s + 11) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE; + break; + case 'm': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'x': + switch(s[13]) { + default: + break; + case 'b': + if (strcmp("ufsz", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE; + break; + case 's': + if (strcmp("ndfrag", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT; + } + } + } + } + } + } + } + } + } + } + break; + case 'a': + switch(s[4]) { + default: + break; + case 'a': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'p': + if (strcmp("ad", s + 7) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD; + } + } + } + break; + case 'i': + switch(s[4]) { + default: + break; + case 'v': + switch(s[5]) { + default: + break; + case 'f': + if (strcmp("ixed", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED; + break; + case 'g': + if (strcmp("en", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN; + break; + case 'i': + if (strcmp("nv", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV; + } + } + break; + case 't': + if (strcmp("ree", s + 4) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS; + } + break; + case 'y': + if (strcmp("pe", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_TYPE; + } + break; + case 'u': + switch(s[1]) { + default: + break; + case 'k': + if (strcmp("m", s + 2) == 0) + return PIDX_KDF_PARAM_UKM; + break; + case 'p': + if (strcmp("dated-iv", s + 2) == 0) + return PIDX_CIPHER_PARAM_UPDATED_IV; + break; + case 's': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'b': + if (strcmp("its", s + 5) == 0) + return PIDX_CIPHER_PARAM_USE_BITS; + break; + case 'c': + if (strcmp("ofactor-flag", s + 5) == 0) + return PIDX_PKEY_PARAM_USE_COFACTOR_FLAG; + break; + case 'k': + if (strcmp("eybits", s + 5) == 0) + return PIDX_KDF_PARAM_X942_USE_KEYBITS; + break; + case 'l': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_KBKDF_USE_L; + } + break; + case 's': + if (strcmp("eparator", s + 5) == 0) + return PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR; + } + break; + case '_': + switch(s[4]) { + default: + break; + case 'd': + if (strcmp("erivation_function", s + 5) == 0) + return PIDX_DRBG_PARAM_USE_DF; + break; + case 'e': + if (strcmp("tm", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM; + } + } + } + } + break; + case 'v': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'l': + switch(s[3]) { + default: + break; + case 'i': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_VALIDATE_G; + } + break; + case 'l': + if (strcmp("egacy", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY; + break; + case 'p': + if (strcmp("q", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_PQ; + } + } + } + } + } + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'r': + switch(s[3]) { + default: + break; + case 'i': + if (strcmp("fy-message", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE; + break; + case 's': + if (strcmp("ion", s + 4) == 0) + return PIDX_PROV_PARAM_VERSION; + } + } + } + break; + case 'x': + switch(s[1]) { + default: + break; + case '9': + switch(s[2]) { + default: + break; + case '4': + if (strcmp("2kdf-key-check", s + 3) == 0) + return PIDX_PROV_PARAM_X942KDF_KEY_CHECK; + break; + case '6': + switch(s[3]) { + default: + break; + case '3': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'f': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_KEY_CHECK; + } + } + } + } + } + } + } + break; + case 'c': + if (strcmp("ghash", s + 2) == 0) + return PIDX_KDF_PARAM_SSHKDF_XCGHASH; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_DIGEST_PARAM_XOFLEN; + break; + case '\0': + return PIDX_MAC_PARAM_XOF; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP; + } + break; + case 'q': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ; + } + break; + case 't': + if (strcmp("s_standard", s + 2) == 0) + return PIDX_CIPHER_PARAM_XTS_STANDARD; + } + } + return -1; +} + +/* End of TRIE */ diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/poly1305/poly1305-x86.S b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/poly1305/poly1305-x86.S index 6fd5469a571356..2bf33f3c8977a0 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/poly1305/poly1305-x86.S +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/poly1305/poly1305-x86.S @@ -1940,4 +1940,4 @@ Lconst_sse2: .byte 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111 .byte 114,103,62,0 .align 2,0x90 -.comm _OPENSSL_ia32cap_P,16 +.comm _OPENSSL_ia32cap_P,40 diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/rc4/rc4-586.S b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/rc4/rc4-586.S index 55215f177a9f84..60042da2862cb1 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/rc4/rc4-586.S +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/rc4/rc4-586.S @@ -392,4 +392,4 @@ L019opts: .byte 80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114 .byte 111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 6,0x90 -.comm _OPENSSL_ia32cap_P,16 +.comm _OPENSSL_ia32cap_P,40 diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/sha/sha1-586.S b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/sha/sha1-586.S index 2e977b873bb848..2f16bd08c9e1f4 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/sha/sha1-586.S +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/sha/sha1-586.S @@ -3983,4 +3983,4 @@ LK_XX_XX: .byte 102,111,114,109,32,102,111,114,32,120,56,54,44,32,67,82 .byte 89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112 .byte 114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 -.comm _OPENSSL_ia32cap_P,16 +.comm _OPENSSL_ia32cap_P,40 diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/sha/sha256-586.S b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/sha/sha256-586.S index ab935deb824c0a..c5fe87bf89cd8e 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/sha/sha256-586.S +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/sha/sha256-586.S @@ -6784,4 +6784,4 @@ L018avx_bmi_00_47: popl %ebx popl %ebp ret -.comm _OPENSSL_ia32cap_P,16 +.comm _OPENSSL_ia32cap_P,40 diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/sha/sha512-586.S b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/sha/sha512-586.S index 0dea93b398287d..97a269ba66bcf9 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/sha/sha512-586.S +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/sha/sha512-586.S @@ -2830,4 +2830,4 @@ L001K512: .byte 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 .byte 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 .byte 62,0 -.comm _OPENSSL_ia32cap_P,16 +.comm _OPENSSL_ia32cap_P,40 diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/x86cpuid.S b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/x86cpuid.S index 39d138a7e345d6..9420cd0c4086d9 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/x86cpuid.S +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/x86cpuid.S @@ -122,6 +122,24 @@ L002generic: xorl %ecx,%ecx .byte 0x0f,0xa2 movl %ebx,8(%edi) + movl %ecx,12(%edi) + movl %edx,16(%edi) + cmpl $1,%eax + jb L005no_extended_info + movl $7,%eax + movl $1,%ecx + .byte 0x0f,0xa2 + movl %eax,20(%edi) + movl %edx,24(%edi) + movl %ebx,28(%edi) + movl %ecx,32(%edi) + andl $524288,%edx + cmpl $0,%edx + je L005no_extended_info + movl $36,%eax + movl $0,%ecx + .byte 0x0f,0xa2 + movl %ebx,36(%edi) L005no_extended_info: btl $27,%ebp jnc L006clear_avx @@ -137,6 +155,7 @@ L008clear_xmm: andl $4278190079,%esi L006clear_avx: andl $4026525695,%ebp + andl $4286578687,20(%edi) andl $4294967263,8(%edi) L007done: movl %esi,%eax @@ -583,7 +602,7 @@ L036done: popl %ebx popl %edi ret -.comm _OPENSSL_ia32cap_P,16 +.comm _OPENSSL_ia32cap_P,40 .text .type __GLOBAL_$I$_OPENSSL_cpuid_setup,@function .globl __GLOBAL_$I$_OPENSSL_cpuid_setup diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/internal/param_names.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/internal/param_names.h new file mode 100644 index 00000000000000..0a0404a57e82b9 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/internal/param_names.h @@ -0,0 +1,469 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/internal/param_names.h.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +int ossl_param_find_pidx(const char *s); + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +#define NUM_PIDX 346 + +#define PIDX_ALG_PARAM_ALGORITHM_ID 0 +#define PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS 1 +#define PIDX_ALG_PARAM_CIPHER 2 +#define PIDX_ALG_PARAM_DIGEST 3 +#define PIDX_ALG_PARAM_ENGINE 4 +#define PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR 5 +#define PIDX_ALG_PARAM_MAC 6 +#define PIDX_ALG_PARAM_PROPERTIES 7 +#define PIDX_ASYM_CIPHER_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_ENGINE PIDX_PKEY_PARAM_ENGINE +#define PIDX_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +#define PIDX_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS 9 +#define PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL 10 +#define PIDX_ASYM_CIPHER_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_ASYM_CIPHER_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION 11 +#define PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION 12 +#define PIDX_CAPABILITY_TLS_GROUP_ALG 13 +#define PIDX_CAPABILITY_TLS_GROUP_ID 14 +#define PIDX_CAPABILITY_TLS_GROUP_IS_KEM 15 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_GROUP_NAME 20 +#define PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL 21 +#define PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS 22 +#define PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT 23 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME 24 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_OID 25 +#define PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME 26 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE 27 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID 28 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_SIGALG_NAME 29 +#define PIDX_CAPABILITY_TLS_SIGALG_OID 30 +#define PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS 31 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME 32 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_OID 33 +#define PIDX_CIPHER_PARAM_AEAD 34 +#define PIDX_CIPHER_PARAM_AEAD_IVLEN PIDX_CIPHER_PARAM_IVLEN +#define PIDX_CIPHER_PARAM_AEAD_IV_GENERATED 35 +#define PIDX_CIPHER_PARAM_AEAD_MAC_KEY 36 +#define PIDX_CIPHER_PARAM_AEAD_TAG 37 +#define PIDX_CIPHER_PARAM_AEAD_TAGLEN 38 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD 39 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD 40 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN 41 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED 42 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV 43 +#define PIDX_CIPHER_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD 44 +#define PIDX_CIPHER_PARAM_BLOCK_SIZE 45 +#define PIDX_CIPHER_PARAM_CTS 46 +#define PIDX_CIPHER_PARAM_CTS_MODE 47 +#define PIDX_CIPHER_PARAM_CUSTOM_IV 48 +#define PIDX_CIPHER_PARAM_DECRYPT_ONLY 49 +#define PIDX_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK 50 +#define PIDX_CIPHER_PARAM_HAS_RAND_KEY 51 +#define PIDX_CIPHER_PARAM_IV 52 +#define PIDX_CIPHER_PARAM_IVLEN 53 +#define PIDX_CIPHER_PARAM_KEYLEN 54 +#define PIDX_CIPHER_PARAM_MODE 55 +#define PIDX_CIPHER_PARAM_NUM 56 +#define PIDX_CIPHER_PARAM_PADDING 57 +#define PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG 58 +#define PIDX_CIPHER_PARAM_RANDOM_KEY 59 +#define PIDX_CIPHER_PARAM_RC2_KEYBITS 60 +#define PIDX_CIPHER_PARAM_ROUNDS 61 +#define PIDX_CIPHER_PARAM_SPEED 62 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK 63 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD 64 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN 65 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC 66 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN 67 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN 68 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE 69 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE 70 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT 71 +#define PIDX_CIPHER_PARAM_TLS_MAC 72 +#define PIDX_CIPHER_PARAM_TLS_MAC_SIZE 73 +#define PIDX_CIPHER_PARAM_TLS_VERSION 74 +#define PIDX_CIPHER_PARAM_UPDATED_IV 75 +#define PIDX_CIPHER_PARAM_USE_BITS 76 +#define PIDX_CIPHER_PARAM_XTS_STANDARD 77 +#define PIDX_DECODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DIGEST_PARAM_ALGID_ABSENT 78 +#define PIDX_DIGEST_PARAM_BLOCK_SIZE 45 +#define PIDX_DIGEST_PARAM_MICALG 79 +#define PIDX_DIGEST_PARAM_PAD_TYPE 80 +#define PIDX_DIGEST_PARAM_SIZE 81 +#define PIDX_DIGEST_PARAM_SSL3_MS 82 +#define PIDX_DIGEST_PARAM_XOF 83 +#define PIDX_DIGEST_PARAM_XOFLEN 84 +#define PIDX_DRBG_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_DRBG_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_DRBG_PARAM_ENTROPY_REQUIRED 85 +#define PIDX_DRBG_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_DRBG_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_DRBG_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_DRBG_PARAM_MAX_ADINLEN 86 +#define PIDX_DRBG_PARAM_MAX_ENTROPYLEN 87 +#define PIDX_DRBG_PARAM_MAX_LENGTH 88 +#define PIDX_DRBG_PARAM_MAX_NONCELEN 89 +#define PIDX_DRBG_PARAM_MAX_PERSLEN 90 +#define PIDX_DRBG_PARAM_MIN_ENTROPYLEN 91 +#define PIDX_DRBG_PARAM_MIN_LENGTH 92 +#define PIDX_DRBG_PARAM_MIN_NONCELEN 93 +#define PIDX_DRBG_PARAM_PREDICTION_RESISTANCE 94 +#define PIDX_DRBG_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DRBG_PARAM_RANDOM_DATA 95 +#define PIDX_DRBG_PARAM_RESEED_COUNTER 96 +#define PIDX_DRBG_PARAM_RESEED_REQUESTS 97 +#define PIDX_DRBG_PARAM_RESEED_TIME 98 +#define PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL 99 +#define PIDX_DRBG_PARAM_SIZE 81 +#define PIDX_DRBG_PARAM_USE_DF 100 +#define PIDX_ENCODER_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_ENCODER_PARAM_ENCRYPT_LEVEL 101 +#define PIDX_ENCODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_ENCODER_PARAM_SAVE_PARAMETERS 102 +#define PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE 103 +#define PIDX_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_EXCHANGE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST 104 +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS 105 +#define PIDX_EXCHANGE_PARAM_KDF_OUTLEN 106 +#define PIDX_EXCHANGE_PARAM_KDF_TYPE 107 +#define PIDX_EXCHANGE_PARAM_KDF_UKM 108 +#define PIDX_EXCHANGE_PARAM_PAD 109 +#define PIDX_GEN_PARAM_ITERATION 110 +#define PIDX_GEN_PARAM_POTENTIAL 111 +#define PIDX_KDF_PARAM_ARGON2_AD 112 +#define PIDX_KDF_PARAM_ARGON2_LANES 113 +#define PIDX_KDF_PARAM_ARGON2_MEMCOST 114 +#define PIDX_KDF_PARAM_ARGON2_VERSION 115 +#define PIDX_KDF_PARAM_CEK_ALG 116 +#define PIDX_KDF_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_KDF_PARAM_CONSTANT 117 +#define PIDX_KDF_PARAM_DATA 118 +#define PIDX_KDF_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_KDF_PARAM_EARLY_CLEAN 119 +#define PIDX_KDF_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KDF_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_KDF_PARAM_FIPS_EMS_CHECK 120 +#define PIDX_KDF_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KDF_PARAM_HMACDRBG_ENTROPY 121 +#define PIDX_KDF_PARAM_HMACDRBG_NONCE 122 +#define PIDX_KDF_PARAM_INFO 123 +#define PIDX_KDF_PARAM_ITER 124 +#define PIDX_KDF_PARAM_KBKDF_R 125 +#define PIDX_KDF_PARAM_KBKDF_USE_L 126 +#define PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR 127 +#define PIDX_KDF_PARAM_KEY 128 +#define PIDX_KDF_PARAM_LABEL 129 +#define PIDX_KDF_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_KDF_PARAM_MAC_SIZE 130 +#define PIDX_KDF_PARAM_MODE 55 +#define PIDX_KDF_PARAM_PASSWORD 131 +#define PIDX_KDF_PARAM_PKCS12_ID 132 +#define PIDX_KDF_PARAM_PKCS5 133 +#define PIDX_KDF_PARAM_PREFIX 134 +#define PIDX_KDF_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_KDF_PARAM_SALT 135 +#define PIDX_KDF_PARAM_SCRYPT_MAXMEM 136 +#define PIDX_KDF_PARAM_SCRYPT_N 137 +#define PIDX_KDF_PARAM_SCRYPT_P 138 +#define PIDX_KDF_PARAM_SCRYPT_R 125 +#define PIDX_KDF_PARAM_SECRET 139 +#define PIDX_KDF_PARAM_SEED 140 +#define PIDX_KDF_PARAM_SIZE 81 +#define PIDX_KDF_PARAM_SSHKDF_SESSION_ID 141 +#define PIDX_KDF_PARAM_SSHKDF_TYPE 142 +#define PIDX_KDF_PARAM_SSHKDF_XCGHASH 143 +#define PIDX_KDF_PARAM_THREADS 144 +#define PIDX_KDF_PARAM_UKM 145 +#define PIDX_KDF_PARAM_X942_ACVPINFO 146 +#define PIDX_KDF_PARAM_X942_PARTYUINFO 147 +#define PIDX_KDF_PARAM_X942_PARTYVINFO 148 +#define PIDX_KDF_PARAM_X942_SUPP_PRIVINFO 149 +#define PIDX_KDF_PARAM_X942_SUPP_PUBINFO 150 +#define PIDX_KDF_PARAM_X942_USE_KEYBITS 151 +#define PIDX_KEM_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KEM_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KEM_PARAM_IKME 152 +#define PIDX_KEM_PARAM_OPERATION 153 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING 154 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING 155 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA 156 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN 157 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE 55 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS 158 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD 159 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC 160 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE 161 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM 162 +#define PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN 163 +#define PIDX_MAC_PARAM_BLOCK_SIZE 164 +#define PIDX_MAC_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_MAC_PARAM_CUSTOM 165 +#define PIDX_MAC_PARAM_C_ROUNDS 166 +#define PIDX_MAC_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_MAC_PARAM_DIGEST_NOINIT 167 +#define PIDX_MAC_PARAM_DIGEST_ONESHOT 168 +#define PIDX_MAC_PARAM_D_ROUNDS 169 +#define PIDX_MAC_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_MAC_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_MAC_PARAM_FIPS_NO_SHORT_MAC PIDX_PROV_PARAM_NO_SHORT_MAC +#define PIDX_MAC_PARAM_IV 52 +#define PIDX_MAC_PARAM_KEY 128 +#define PIDX_MAC_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_MAC_PARAM_SALT 135 +#define PIDX_MAC_PARAM_SIZE 81 +#define PIDX_MAC_PARAM_TLS_DATA_SIZE 170 +#define PIDX_MAC_PARAM_XOF 83 +#define PIDX_OBJECT_PARAM_DATA 118 +#define PIDX_OBJECT_PARAM_DATA_STRUCTURE 171 +#define PIDX_OBJECT_PARAM_DATA_TYPE 172 +#define PIDX_OBJECT_PARAM_DESC 173 +#define PIDX_OBJECT_PARAM_INPUT_TYPE 174 +#define PIDX_OBJECT_PARAM_REFERENCE 175 +#define PIDX_OBJECT_PARAM_TYPE 142 +#define PIDX_PASSPHRASE_PARAM_INFO 123 +#define PIDX_PKEY_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_PKEY_PARAM_BITS 176 +#define PIDX_PKEY_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_PKEY_PARAM_DEFAULT_DIGEST 177 +#define PIDX_PKEY_PARAM_DHKEM_IKM 178 +#define PIDX_PKEY_PARAM_DH_GENERATOR 179 +#define PIDX_PKEY_PARAM_DH_PRIV_LEN 180 +#define PIDX_PKEY_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_PKEY_PARAM_DIGEST_SIZE 181 +#define PIDX_PKEY_PARAM_DIST_ID 182 +#define PIDX_PKEY_PARAM_EC_A 183 +#define PIDX_PKEY_PARAM_EC_B 184 +#define PIDX_PKEY_PARAM_EC_CHAR2_M 185 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K1 186 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K2 187 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K3 188 +#define PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS 189 +#define PIDX_PKEY_PARAM_EC_CHAR2_TYPE 190 +#define PIDX_PKEY_PARAM_EC_COFACTOR 191 +#define PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS 192 +#define PIDX_PKEY_PARAM_EC_ENCODING 193 +#define PIDX_PKEY_PARAM_EC_FIELD_TYPE 194 +#define PIDX_PKEY_PARAM_EC_GENERATOR 195 +#define PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE 196 +#define PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC 197 +#define PIDX_PKEY_PARAM_EC_ORDER 198 +#define PIDX_PKEY_PARAM_EC_P 138 +#define PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT 199 +#define PIDX_PKEY_PARAM_EC_PUB_X 200 +#define PIDX_PKEY_PARAM_EC_PUB_Y 201 +#define PIDX_PKEY_PARAM_EC_SEED 140 +#define PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY 202 +#define PIDX_PKEY_PARAM_ENGINE PIDX_ALG_PARAM_ENGINE +#define PIDX_PKEY_PARAM_FFC_COFACTOR 203 +#define PIDX_PKEY_PARAM_FFC_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_FFC_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_FFC_G 204 +#define PIDX_PKEY_PARAM_FFC_GINDEX 205 +#define PIDX_PKEY_PARAM_FFC_H 206 +#define PIDX_PKEY_PARAM_FFC_P 138 +#define PIDX_PKEY_PARAM_FFC_PBITS 207 +#define PIDX_PKEY_PARAM_FFC_PCOUNTER 208 +#define PIDX_PKEY_PARAM_FFC_Q 209 +#define PIDX_PKEY_PARAM_FFC_QBITS 210 +#define PIDX_PKEY_PARAM_FFC_SEED 140 +#define PIDX_PKEY_PARAM_FFC_TYPE 142 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_G 211 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY 212 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_PQ 213 +#define PIDX_PKEY_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK 214 +#define PIDX_PKEY_PARAM_FIPS_KEY_CHECK 215 +#define PIDX_PKEY_PARAM_FIPS_SIGN_CHECK 216 +#define PIDX_PKEY_PARAM_GROUP_NAME 217 +#define PIDX_PKEY_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_PKEY_PARAM_MANDATORY_DIGEST 218 +#define PIDX_PKEY_PARAM_MASKGENFUNC 219 +#define PIDX_PKEY_PARAM_MAX_SIZE 220 +#define PIDX_PKEY_PARAM_MGF1_DIGEST 221 +#define PIDX_PKEY_PARAM_MGF1_PROPERTIES 222 +#define PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS 223 +#define PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS 224 +#define PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED 225 +#define PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED 226 +#define PIDX_PKEY_PARAM_ML_DSA_SEED 140 +#define PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE 227 +#define PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS 228 +#define PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS 229 +#define PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED 230 +#define PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED 231 +#define PIDX_PKEY_PARAM_ML_KEM_SEED 140 +#define PIDX_PKEY_PARAM_PAD_MODE 232 +#define PIDX_PKEY_PARAM_PRIV_KEY 233 +#define PIDX_PKEY_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_PUB_KEY 234 +#define PIDX_PKEY_PARAM_RSA_BITS PIDX_PKEY_PARAM_BITS +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT 235 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT1 236 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT2 237 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT3 238 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT4 239 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT5 240 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT6 241 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT7 242 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT8 243 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT9 244 +#define PIDX_PKEY_PARAM_RSA_D 245 +#define PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ 246 +#define PIDX_PKEY_PARAM_RSA_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_RSA_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_RSA_E 247 +#define PIDX_PKEY_PARAM_RSA_EXPONENT 248 +#define PIDX_PKEY_PARAM_RSA_EXPONENT1 249 +#define PIDX_PKEY_PARAM_RSA_EXPONENT10 250 +#define PIDX_PKEY_PARAM_RSA_EXPONENT2 251 +#define PIDX_PKEY_PARAM_RSA_EXPONENT3 252 +#define PIDX_PKEY_PARAM_RSA_EXPONENT4 253 +#define PIDX_PKEY_PARAM_RSA_EXPONENT5 254 +#define PIDX_PKEY_PARAM_RSA_EXPONENT6 255 +#define PIDX_PKEY_PARAM_RSA_EXPONENT7 256 +#define PIDX_PKEY_PARAM_RSA_EXPONENT8 257 +#define PIDX_PKEY_PARAM_RSA_EXPONENT9 258 +#define PIDX_PKEY_PARAM_RSA_FACTOR 259 +#define PIDX_PKEY_PARAM_RSA_FACTOR1 260 +#define PIDX_PKEY_PARAM_RSA_FACTOR10 261 +#define PIDX_PKEY_PARAM_RSA_FACTOR2 262 +#define PIDX_PKEY_PARAM_RSA_FACTOR3 263 +#define PIDX_PKEY_PARAM_RSA_FACTOR4 264 +#define PIDX_PKEY_PARAM_RSA_FACTOR5 265 +#define PIDX_PKEY_PARAM_RSA_FACTOR6 266 +#define PIDX_PKEY_PARAM_RSA_FACTOR7 267 +#define PIDX_PKEY_PARAM_RSA_FACTOR8 268 +#define PIDX_PKEY_PARAM_RSA_FACTOR9 269 +#define PIDX_PKEY_PARAM_RSA_MASKGENFUNC PIDX_PKEY_PARAM_MASKGENFUNC +#define PIDX_PKEY_PARAM_RSA_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_PKEY_PARAM_RSA_N 137 +#define PIDX_PKEY_PARAM_RSA_PRIMES 270 +#define PIDX_PKEY_PARAM_RSA_PSS_SALTLEN 271 +#define PIDX_PKEY_PARAM_RSA_TEST_P1 272 +#define PIDX_PKEY_PARAM_RSA_TEST_P2 273 +#define PIDX_PKEY_PARAM_RSA_TEST_Q1 274 +#define PIDX_PKEY_PARAM_RSA_TEST_Q2 275 +#define PIDX_PKEY_PARAM_RSA_TEST_XP 276 +#define PIDX_PKEY_PARAM_RSA_TEST_XP1 277 +#define PIDX_PKEY_PARAM_RSA_TEST_XP2 278 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ 279 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ1 280 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ2 281 +#define PIDX_PKEY_PARAM_SECURITY_BITS 282 +#define PIDX_PKEY_PARAM_SLH_DSA_SEED 140 +#define PIDX_PKEY_PARAM_USE_COFACTOR_ECDH PIDX_PKEY_PARAM_USE_COFACTOR_FLAG +#define PIDX_PKEY_PARAM_USE_COFACTOR_FLAG 283 +#define PIDX_PROV_PARAM_BUILDINFO 284 +#define PIDX_PROV_PARAM_CORE_MODULE_FILENAME 285 +#define PIDX_PROV_PARAM_CORE_PROV_NAME 286 +#define PIDX_PROV_PARAM_CORE_VERSION 287 +#define PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST 288 +#define PIDX_PROV_PARAM_DSA_SIGN_DISABLED 289 +#define PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK 290 +#define PIDX_PROV_PARAM_HKDF_DIGEST_CHECK 291 +#define PIDX_PROV_PARAM_HKDF_KEY_CHECK 292 +#define PIDX_PROV_PARAM_HMAC_KEY_CHECK 293 +#define PIDX_PROV_PARAM_KBKDF_KEY_CHECK 294 +#define PIDX_PROV_PARAM_KMAC_KEY_CHECK 295 +#define PIDX_PROV_PARAM_NAME 296 +#define PIDX_PROV_PARAM_NO_SHORT_MAC 297 +#define PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK 298 +#define PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED 299 +#define PIDX_PROV_PARAM_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED 301 +#define PIDX_PROV_PARAM_SECURITY_CHECKS 302 +#define PIDX_PROV_PARAM_SELF_TEST_DESC 303 +#define PIDX_PROV_PARAM_SELF_TEST_PHASE 304 +#define PIDX_PROV_PARAM_SELF_TEST_TYPE 305 +#define PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK 306 +#define PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK 307 +#define PIDX_PROV_PARAM_SSHKDF_KEY_CHECK 308 +#define PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK 309 +#define PIDX_PROV_PARAM_SSKDF_KEY_CHECK 310 +#define PIDX_PROV_PARAM_STATUS 311 +#define PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED 312 +#define PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK 313 +#define PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK 314 +#define PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK 315 +#define PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK 316 +#define PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK 317 +#define PIDX_PROV_PARAM_VERSION 115 +#define PIDX_PROV_PARAM_X942KDF_KEY_CHECK 318 +#define PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK 319 +#define PIDX_PROV_PARAM_X963KDF_KEY_CHECK 320 +#define PIDX_RAND_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_RAND_PARAM_GENERATE 321 +#define PIDX_RAND_PARAM_MAX_REQUEST 322 +#define PIDX_RAND_PARAM_STATE 323 +#define PIDX_RAND_PARAM_STRENGTH 324 +#define PIDX_RAND_PARAM_TEST_ENTROPY 325 +#define PIDX_RAND_PARAM_TEST_NONCE 326 +#define PIDX_SIGNATURE_PARAM_ADD_RANDOM 327 +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID PIDX_PKEY_PARAM_ALGORITHM_ID +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_SIGNATURE_PARAM_CONTEXT_STRING 328 +#define PIDX_SIGNATURE_PARAM_DETERMINISTIC 329 +#define PIDX_SIGNATURE_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_SIGNATURE_PARAM_DIGEST_SIZE PIDX_PKEY_PARAM_DIGEST_SIZE +#define PIDX_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_SIGNATURE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_CHECK PIDX_PKEY_PARAM_FIPS_SIGN_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK 330 +#define PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE 331 +#define PIDX_SIGNATURE_PARAM_INSTANCE 332 +#define PIDX_SIGNATURE_PARAM_KAT 333 +#define PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING 334 +#define PIDX_SIGNATURE_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_SIGNATURE_PARAM_MGF1_PROPERTIES PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_SIGNATURE_PARAM_MU 335 +#define PIDX_SIGNATURE_PARAM_NONCE_TYPE 336 +#define PIDX_SIGNATURE_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_SIGNATURE_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_SIGNATURE_PARAM_PSS_SALTLEN 271 +#define PIDX_SIGNATURE_PARAM_SIGNATURE 337 +#define PIDX_SIGNATURE_PARAM_TEST_ENTROPY 338 +#define PIDX_SKEY_PARAM_KEY_LENGTH 339 +#define PIDX_SKEY_PARAM_RAW_BYTES 340 +#define PIDX_STORE_PARAM_ALIAS 341 +#define PIDX_STORE_PARAM_DIGEST 3 +#define PIDX_STORE_PARAM_EXPECT 342 +#define PIDX_STORE_PARAM_FINGERPRINT 343 +#define PIDX_STORE_PARAM_INPUT_TYPE 174 +#define PIDX_STORE_PARAM_ISSUER 296 +#define PIDX_STORE_PARAM_PROPERTIES 7 +#define PIDX_STORE_PARAM_SERIAL 344 +#define PIDX_STORE_PARAM_SUBJECT 345 diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/asn1.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/asn1.h index 21ff58e3d803d4..15e9e44674b0f3 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/asn1.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/asn1.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/asn1.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -21,6 +21,9 @@ # define HEADER_ASN1_H # endif +# ifndef OPENSSL_NO_STDIO +# include +# endif # include # include # include @@ -50,14 +53,14 @@ extern "C" { # define V_ASN1_PRIMITIVE_TAG 0x1f # define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG -# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ -# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ -# define V_ASN1_ANY -4/* used in ASN1 template code */ +# define V_ASN1_APP_CHOOSE -2 /* let the recipient choose */ +# define V_ASN1_OTHER -3 /* used in ASN1_TYPE */ +# define V_ASN1_ANY -4 /* used in ASN1 template code */ # define V_ASN1_UNDEF -1 /* ASN.1 tag values */ # define V_ASN1_EOC 0 -# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_BOOLEAN 1 # define V_ASN1_INTEGER 2 # define V_ASN1_BIT_STRING 3 # define V_ASN1_OCTET_STRING 4 @@ -70,19 +73,19 @@ extern "C" { # define V_ASN1_UTF8STRING 12 # define V_ASN1_SEQUENCE 16 # define V_ASN1_SET 17 -# define V_ASN1_NUMERICSTRING 18 /**/ +# define V_ASN1_NUMERICSTRING 18 # define V_ASN1_PRINTABLESTRING 19 # define V_ASN1_T61STRING 20 -# define V_ASN1_TELETEXSTRING 20/* alias */ -# define V_ASN1_VIDEOTEXSTRING 21 /**/ +# define V_ASN1_TELETEXSTRING 20 /* alias */ +# define V_ASN1_VIDEOTEXSTRING 21 # define V_ASN1_IA5STRING 22 # define V_ASN1_UTCTIME 23 -# define V_ASN1_GENERALIZEDTIME 24 /**/ -# define V_ASN1_GRAPHICSTRING 25 /**/ -# define V_ASN1_ISO64STRING 26 /**/ -# define V_ASN1_VISIBLESTRING 26/* alias */ -# define V_ASN1_GENERALSTRING 27 /**/ -# define V_ASN1_UNIVERSALSTRING 28 /**/ +# define V_ASN1_GENERALIZEDTIME 24 +# define V_ASN1_GRAPHICSTRING 25 +# define V_ASN1_ISO64STRING 26 +# define V_ASN1_VISIBLESTRING 26 /* alias */ +# define V_ASN1_GENERALSTRING 27 +# define V_ASN1_UNIVERSALSTRING 28 # define V_ASN1_BMPSTRING 30 /* @@ -155,7 +158,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) -# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +# define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */ /* * This indicates that the ASN1_STRING is not a real value but just a place * holder for the location where indefinite length constructed data should be @@ -275,7 +278,7 @@ typedef struct ASN1_TLC_st ASN1_TLC; /* This is just an opaque pointer */ typedef struct ASN1_VALUE_st ASN1_VALUE; -/* Declare ASN1 functions: the implement macro in in asn1t.h */ +/* Declare ASN1 functions: the implement macro is in asn1t.h */ /* * The mysterious 'extern' that's passed to some macros is innocuous, @@ -368,6 +371,7 @@ typedef struct ASN1_VALUE_st ASN1_VALUE; typedef void *d2i_of_void(void **, const unsigned char **, long); typedef int i2d_of_void(const void *, unsigned char **); +typedef int OSSL_i2d_of_void_ctx(const void *, unsigned char **, void *vctx); /*- * The following macros and typedefs allow an ASN1_ITEM @@ -996,6 +1000,8 @@ int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, unsigned char *data, int max_len); void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/bio.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/bio.h index f9aa74731c833c..e02f867beb0ec0 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/bio.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/bio.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/bio.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -67,8 +67,13 @@ extern "C" { # define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) # endif # define BIO_TYPE_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_PAIR (26|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_MEM (27|BIO_TYPE_SOURCE_SINK) +/* Custom type starting index returned by BIO_get_new_index() */ #define BIO_TYPE_START 128 +/* Custom type maximum index that can be returned by BIO_get_new_index() */ +#define BIO_TYPE_MASK 0xFF /* * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. @@ -171,6 +176,31 @@ extern "C" { # define BIO_CTRL_SET_INDENT 80 # define BIO_CTRL_GET_INDENT 81 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +# define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +# define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +# define BIO_CTRL_DGRAM_GET_CAPS 86 +# define BIO_CTRL_DGRAM_SET_CAPS 87 +# define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +# define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +# define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +# define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +# define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 +# define BIO_CTRL_DGRAM_SET0_LOCAL_ADDR 94 + +# define BIO_DGRAM_CAP_NONE 0U +# define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +# define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +# define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +# define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + # ifndef OPENSSL_NO_KTLS # define BIO_get_ktls_send(b) \ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) @@ -208,7 +238,7 @@ extern "C" { # define BIO_FLAGS_NONCLEAR_RST 0x400 # define BIO_FLAGS_IN_EOF 0x800 -/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */ +/* the BIO FLAGS values 0x1000 to 0x8000 are reserved for internal KTLS flags */ typedef union bio_addr_st BIO_ADDR; typedef struct bio_addrinfo_st BIO_ADDRINFO; @@ -256,12 +286,14 @@ void BIO_clear_flags(BIO *b, int flags); # define BIO_RR_ACCEPT 0x03 /* These are passed by the BIO callback */ -# define BIO_CB_FREE 0x01 -# define BIO_CB_READ 0x02 -# define BIO_CB_WRITE 0x03 -# define BIO_CB_PUTS 0x04 -# define BIO_CB_GETS 0x05 -# define BIO_CB_CTRL 0x06 +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 +# define BIO_CB_RECVMMSG 0x07 +# define BIO_CB_SENDMMSG 0x08 /* * The callback is called before and after the underling operation, The @@ -362,6 +394,36 @@ struct bio_dgram_sctp_prinfo { }; # endif +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_TYPE_SSL 2 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + SSL *ssl; + } value; +} BIO_POLL_DESCRIPTOR; + /* * #define BIO_CONN_get_param_hostname BIO_ctrl */ @@ -428,10 +490,17 @@ struct bio_dgram_sctp_prinfo { # define BIO_C_SET_CONNECT_MODE 155 +# define BIO_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +# define BIO_C_SET_SOCK_TYPE 157 +# define BIO_C_GET_SOCK_TYPE 158 +# define BIO_C_GET_DGRAM_BIO 159 + # define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) # define BIO_get_app_data(s) BIO_get_ex_data(s,0) -# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_tfo(b,n) BIO_ctrl(b,BIO_C_SET_TFO,(n),NULL) # ifndef OPENSSL_NO_SOCK /* IP families we support, for BIO_s_connect() and BIO_s_accept() */ @@ -452,7 +521,11 @@ struct bio_dgram_sctp_prinfo { # define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) # define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) # define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_get_conn_mode(b) BIO_ctrl(b,BIO_C_GET_CONNECT,4,NULL) # define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) +# define BIO_set_sock_type(b,t) BIO_ctrl(b,BIO_C_SET_SOCK_TYPE,(t),NULL) +# define BIO_get_sock_type(b) BIO_ctrl(b,BIO_C_GET_SOCK_TYPE,0,NULL) +# define BIO_get0_dgram_bio(b, p) BIO_ctrl(b,BIO_C_GET_DGRAM_BIO,0,(void *)(BIO **)(p)) /* BIO_s_accept() */ # define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ @@ -469,6 +542,7 @@ struct bio_dgram_sctp_prinfo { (char *)(bio)) # define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) # define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) +# define BIO_set_tfo_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,5,(n)?(void *)"a":NULL) /* Aliases kept for backward compatibility */ # define BIO_BIND_NORMAL 0 @@ -596,8 +670,32 @@ int BIO_ctrl_reset_read_request(BIO *b); (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) # define BIO_dgram_set_peer(b,peer) \ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_detect_peer_addr(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) # define BIO_dgram_get_mtu_overhead(b) \ (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +# define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +# define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +# define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +# define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +# define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +# define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +# define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +# define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +# define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +# define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) +# define BIO_dgram_set0_local_addr(b, addr) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET0_LOCAL_ADDR, 0, (addr)) /* ctrl macros for BIO_f_prefix */ # define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) @@ -640,10 +738,18 @@ void BIO_vfree(BIO *a); int BIO_up_ref(BIO *a); int BIO_read(BIO *b, void *data, int dlen); int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); int BIO_gets(BIO *bp, char *buf, int size); int BIO_get_line(BIO *bio, char *buf, int size); int BIO_write(BIO *b, const void *data, int dlen); int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); int BIO_puts(BIO *bp, const char *buf); int BIO_indent(BIO *b, int indent, int max); long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); @@ -667,6 +773,9 @@ int BIO_nwrite0(BIO *bio, char **buf); int BIO_nwrite(BIO *bio, char **buf, int num); const BIO_METHOD *BIO_s_mem(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +# endif const BIO_METHOD *BIO_s_secmem(void); BIO *BIO_new_mem_buf(const void *buf, int len); # ifndef OPENSSL_NO_SOCK @@ -686,6 +795,7 @@ const BIO_METHOD *BIO_f_nbio_test(void); const BIO_METHOD *BIO_f_prefix(void); const BIO_METHOD *BIO_s_core(void); # ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_pair(void); const BIO_METHOD *BIO_s_datagram(void); int BIO_dgram_non_fatal_error(int error); BIO *BIO_new_dgram(int fd, int close_flag); @@ -704,6 +814,7 @@ int BIO_dgram_sctp_msg_waiting(BIO *b); # ifndef OPENSSL_NO_SOCK int BIO_sock_should_retry(int i); int BIO_sock_non_fatal_error(int error); +int BIO_err_is_non_fatal(unsigned int errcode); int BIO_socket_wait(int fd, int for_read, time_t max_time); # endif int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); @@ -726,6 +837,8 @@ int BIO_hex_string(BIO *out, int indent, int width, const void *data, # ifndef OPENSSL_NO_SOCK BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, const void *where, size_t wherelen, unsigned short port); void BIO_ADDR_free(BIO_ADDR *); @@ -788,6 +901,7 @@ int BIO_sock_info(int sock, # define BIO_SOCK_KEEPALIVE 0x04 # define BIO_SOCK_NONBLOCK 0x08 # define BIO_SOCK_NODELAY 0x10 +# define BIO_SOCK_TFO 0x20 int BIO_socket(int domain, int socktype, int protocol, int options); int BIO_connect(int sock, const BIO_ADDR *addr, int options); @@ -805,6 +919,11 @@ BIO *BIO_new_fd(int fd, int close_flag); int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, BIO **bio2, size_t writebuf2); +# ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +# endif + /* * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default @@ -849,38 +968,54 @@ ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); BIO_METHOD *BIO_meth_new(int type, const char *name); void BIO_meth_free(BIO_METHOD *biom); -int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int); -int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t, - size_t *); int BIO_meth_set_write(BIO_METHOD *biom, int (*write) (BIO *, const char *, int)); int BIO_meth_set_write_ex(BIO_METHOD *biom, int (*bwrite) (BIO *, const char *, size_t, size_t *)); -int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); -int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); +int BIO_meth_set_sendmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_read(BIO_METHOD *biom, int (*read) (BIO *, char *, int)); int BIO_meth_set_read_ex(BIO_METHOD *biom, int (*bread) (BIO *, char *, size_t, size_t *)); -int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +int BIO_meth_set_recvmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_puts(BIO_METHOD *biom, int (*puts) (BIO *, const char *)); -int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); int BIO_meth_set_gets(BIO_METHOD *biom, int (*ossl_gets) (BIO *, char *, int)); -long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); int BIO_meth_set_ctrl(BIO_METHOD *biom, long (*ctrl) (BIO *, int, long, void *)); -int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); -int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); -long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) - (BIO *, int, BIO_info_cb *); int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, long (*callback_ctrl) (BIO *, int, BIO_info_cb *)); - +# ifndef OPENSSL_NO_DEPRECATED_3_5 +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, + int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, + long, void *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) (BIO *, int, + BIO_info_cb *); +# endif # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/cmp.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/cmp.h index 49825570d8c303..05aed3029d594c 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/cmp.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -35,7 +35,9 @@ extern "C" { # endif -# define OSSL_CMP_PVNO 2 +# define OSSL_CMP_PVNO_2 2 +# define OSSL_CMP_PVNO_3 3 +# define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ /*- * PKIFailureInfo ::= BIT STRING { @@ -137,7 +139,6 @@ extern "C" { # if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX # error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int # endif - typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) @@ -203,8 +204,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_PKISTATUS_revocationWarning 4 # define OSSL_CMP_PKISTATUS_revocationNotification 5 # define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 - typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; + DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) # define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 @@ -274,6 +275,46 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) #define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) #define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) + +typedef struct ossl_cmp_crlstatus_st OSSL_CMP_CRLSTATUS; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS) +#define sk_OSSL_CMP_CRLSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_value(sk, idx) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CRLSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CRLSTATUS_new_null() ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CRLSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CRLSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CRLSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_delete(sk, i) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CRLSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_pop(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_shift(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CRLSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CRLSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CRLSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CRLSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CRLSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) + + +typedef OSSL_CRMF_ATTRIBUTETYPEANDVALUE OSSL_CMP_ATAV; +# define OSSL_CMP_ATAV_free OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free +typedef STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) OSSL_CMP_ATAVS; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_ATAVS) +# define stack_st_OSSL_CMP_ATAV stack_st_OSSL_CRMF_ATTRIBUTETYPEANDVALUE +# define sk_OSSL_CMP_ATAV_num sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num +# define sk_OSSL_CMP_ATAV_value sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value +# define sk_OSSL_CMP_ATAV_push sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push +# define sk_OSSL_CMP_ATAV_pop_free sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free + typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT; typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI; DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI) @@ -375,21 +416,75 @@ void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type, ASN1_TYPE *value); ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav); ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); -int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p, +int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **sk_p, OSSL_CMP_ITAV *itav); void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new0_certProfile(STACK_OF(ASN1_UTF8STRING) + *certProfile); +int OSSL_CMP_ITAV_get0_certProfile(const OSSL_CMP_ITAV *itav, + STACK_OF(ASN1_UTF8STRING) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_create(const X509_CRL *crl, + const X509 *cert, int only_DN); +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_new1(const DIST_POINT_NAME *dpn, + const GENERAL_NAMES *issuer, + const ASN1_TIME *thisUpdate); +int OSSL_CMP_CRLSTATUS_get0(const OSSL_CMP_CRLSTATUS *crlstatus, + DIST_POINT_NAME **dpn, GENERAL_NAMES **issuer, + ASN1_TIME **thisUpdate); +void OSSL_CMP_CRLSTATUS_free(OSSL_CMP_CRLSTATUS *crlstatus); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_crlStatusList(STACK_OF(OSSL_CMP_CRLSTATUS) *crlStatusList); +int OSSL_CMP_ITAV_get0_crlStatusList(const OSSL_CMP_ITAV *itav, + STACK_OF(OSSL_CMP_CRLSTATUS) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_crls(const X509_CRL *crls); +int OSSL_CMP_ITAV_get0_crls(const OSSL_CMP_ITAV *it, STACK_OF(X509_CRL) **out); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_certReqTemplate(OSSL_CRMF_CERTTEMPLATE *certTemplate, + OSSL_CMP_ATAVS *keySpec); +int OSSL_CMP_ITAV_get1_certReqTemplate(const OSSL_CMP_ITAV *itav, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +OSSL_CMP_ATAV *OSSL_CMP_ATAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ATAV_set0(OSSL_CMP_ATAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ATAV_get0_type(const OSSL_CMP_ATAV *itav); +ASN1_TYPE *OSSL_CMP_ATAV_get0_value(const OSSL_CMP_ATAV *itav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_algId(const X509_ALGOR *alg); +X509_ALGOR *OSSL_CMP_ATAV_get0_algId(const OSSL_CMP_ATAV *atav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_rsaKeyLen(int len); +int OSSL_CMP_ATAV_get_rsaKeyLen(const OSSL_CMP_ATAV *atav); +int OSSL_CMP_ATAV_push1(OSSL_CMP_ATAVS **sk_p, const OSSL_CMP_ATAV *atav); + void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); /* from cmp_ctx.c */ OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const OSSL_CMP_CTX *ctx); /* CMP general options: */ # define OSSL_CMP_OPT_LOG_VERBOSITY 0 /* CMP transfer options: */ -# define OSSL_CMP_OPT_KEEP_ALIVE 10 -# define OSSL_CMP_OPT_MSG_TIMEOUT 11 +# define OSSL_CMP_OPT_KEEP_ALIVE 10 +# define OSSL_CMP_OPT_MSG_TIMEOUT 11 # define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 +# define OSSL_CMP_OPT_USE_TLS 13 /* CMP request options: */ # define OSSL_CMP_OPT_VALIDITY_DAYS 20 # define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 @@ -407,6 +502,7 @@ int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); # define OSSL_CMP_OPT_DIGEST_ALGNID 34 # define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35 # define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36 +# define OSSL_CMP_OPT_NO_CACHE_EXTRACERTS 37 int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val); int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt); /* CMP-specific callback for logging and outputting the error queue: */ @@ -420,9 +516,11 @@ int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); +# ifndef OPENSSL_NO_HTTP int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); +# endif typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); @@ -432,7 +530,9 @@ void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); +# define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +# define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); /* client authentication: */ @@ -448,12 +548,15 @@ int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx, int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); int OSSL_CMP_CTX_reset_geninfo_ITAVs(OSSL_CMP_CTX *ctx); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_CTX_get0_geninfo_ITAVs(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, STACK_OF(X509) *extraCertsOut); /* certificate template: */ int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set1_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, const GENERAL_NAME *name); @@ -477,6 +580,7 @@ int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); # define OSSL_CMP_PKISI_BUFLEN 1024 +X509 *OSSL_CMP_CTX_get0_validatedSrvCert(const OSSL_CMP_CTX *ctx); X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); @@ -498,10 +602,13 @@ OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const OSSL_CMP_PKIHEADER *hdr); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_HDR_get0_geninfo_ITAVs(const OSSL_CMP_PKIHEADER *hdr); /* from cmp_msg.c */ OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg); +X509_PUBKEY *OSSL_CMP_MSG_get0_certreq_publickey(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_recipNonce(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid); @@ -517,8 +624,10 @@ int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, X509_STORE *trusted_store, X509 *cert); /* from cmp_http.c */ +# ifndef OPENSSL_NO_HTTP OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); +# endif /* from cmp_server.c */ typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; @@ -561,6 +670,13 @@ int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx, OSSL_CMP_SRV_error_cb_t process_error, OSSL_CMP_SRV_certConf_cb_t process_certConf, OSSL_CMP_SRV_pollReq_cb_t process_pollReq); +typedef int (*OSSL_CMP_SRV_delayed_delivery_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +typedef int (*OSSL_CMP_SRV_clean_transaction_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_SRV_CTX_init_trans(OSSL_CMP_SRV_CTX *srv_ctx, + OSSL_CMP_SRV_delayed_delivery_cb_t delay, + OSSL_CMP_SRV_clean_transaction_cb_t clean); OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx, @@ -577,6 +693,8 @@ X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type, # define OSSL_CMP_CR 2 # define OSSL_CMP_P10CR 4 # define OSSL_CMP_KUR 7 +# define OSSL_CMP_GENM 21 +# define OSSL_CMP_ERROR 23 # define OSSL_CMP_exec_IR_ses(ctx) \ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL) # define OSSL_CMP_exec_CR_ses(ctx) \ @@ -590,6 +708,18 @@ int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); +int OSSL_CMP_get1_crlUpdate(OSSL_CMP_CTX *ctx, const X509 *crlcert, + const X509_CRL *last_crl, + X509_CRL **crl); +int OSSL_CMP_get1_certReqTemplate(OSSL_CMP_CTX *ctx, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/cms.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/cms.h index 3b453e6a2187a2..63afab563557b0 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/cms.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/cms.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cms.h.in * - * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2008-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -31,8 +31,10 @@ extern "C" { # endif +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; typedef struct CMS_ContentInfo_st CMS_ContentInfo; typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; typedef struct CMS_CertificateChoices CMS_CertificateChoices; typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; @@ -147,10 +149,14 @@ SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, #define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) +DECLARE_ASN1_DUP_FUNCTION(CMS_EnvelopedData) + CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq); # define CMS_SIGNERINFO_ISSUER_SERIAL 0 @@ -190,6 +196,7 @@ CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq) # define CMS_ASCIICRLF 0x80000 # define CMS_CADES 0x100000 # define CMS_USE_ORIGINATOR_KEYID 0x200000 +# define CMS_NO_SIGNING_TIME 0x400000 const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms); @@ -217,13 +224,16 @@ int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, unsigned int flags); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, BIO *dcont, + unsigned int flags); CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, unsigned int flags); CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, @@ -233,27 +243,26 @@ CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, unsigned int flags); CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, const unsigned char *key, size_t keylen, BIO *dcont, BIO *out, unsigned int flags); - CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags); CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, @@ -272,7 +281,7 @@ CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags); CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, BIO *dcont, BIO *out, unsigned int flags); @@ -291,12 +300,16 @@ int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo * -CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx, +CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags); @@ -385,6 +398,11 @@ ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); int CMS_SignerInfo_sign(CMS_SignerInfo *si); int CMS_SignerInfo_verify(CMS_SignerInfo *si); int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, @@ -441,7 +459,7 @@ CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( unsigned char *id, int idlen, int allorfirst, STACK_OF(GENERAL_NAMES) *receiptList, STACK_OF(GENERAL_NAMES) *receiptsTo, - OSSL_LIB_CTX *ctx); + OSSL_LIB_CTX *libctx); int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/comp.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/comp.h new file mode 100644 index 00000000000000..90e39511fe8d28 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/comp.h @@ -0,0 +1,98 @@ +/* + * Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_COMP_H +# define OPENSSL_COMP_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_COMP_H +# endif + +# include + +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + + +# ifndef OPENSSL_NO_COMP + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX* comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); + +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); + +COMP_METHOD *COMP_zlib(void); +COMP_METHOD *COMP_zlib_oneshot(void); +COMP_METHOD *COMP_brotli(void); +COMP_METHOD *COMP_brotli_oneshot(void); +COMP_METHOD *COMP_zstd(void); +COMP_METHOD *COMP_zstd_oneshot(void); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define COMP_zlib_cleanup() while(0) continue +# endif + +# ifdef OPENSSL_BIO_H +const BIO_METHOD *BIO_f_zlib(void); +const BIO_METHOD *BIO_f_brotli(void); +const BIO_METHOD *BIO_f_zstd(void); +# endif + +# endif + +typedef struct ssl_comp_st SSL_COMP; + +SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) +#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) +#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) +#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) +#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) +#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) +#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) +#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) +#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) +#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) +#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) +#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) + + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/conf.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/conf.h index 44989929f6c84a..38576290bf641b 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/conf.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/conf.h @@ -27,6 +27,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -65,7 +68,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) #define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) #define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); -#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp))) +#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp)), lh_CONF_VALUE_hash_thunk, lh_CONF_VALUE_comp_thunk, lh_CONF_VALUE_doall_thunk, lh_CONF_VALUE_doall_arg_thunk)) #define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/configuration.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/configuration.h index 5ef293f853fae2..e81c58e297e557 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/configuration.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/configuration.h @@ -27,7 +27,7 @@ extern "C" { * OpenSSL was configured with the following options: */ -# define OPENSSL_CONFIGURED_API 30000 +# define OPENSSL_CONFIGURED_API 30500 # ifndef OPENSSL_RAND_SEED_OS # define OPENSSL_RAND_SEED_OS # endif @@ -40,6 +40,12 @@ extern "C" { # ifndef OPENSSL_NO_ASAN # define OPENSSL_NO_ASAN # endif +# ifndef OPENSSL_NO_BROTLI +# define OPENSSL_NO_BROTLI +# endif +# ifndef OPENSSL_NO_BROTLI_DYNAMIC +# define OPENSSL_NO_BROTLI_DYNAMIC +# endif # ifndef OPENSSL_NO_COMP # define OPENSSL_NO_COMP # endif @@ -49,6 +55,9 @@ extern "C" { # ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # endif +# ifndef OPENSSL_NO_DEMOS +# define OPENSSL_NO_DEMOS +# endif # ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 # define OPENSSL_NO_EC_NISTP_64_GCC_128 # endif @@ -58,12 +67,24 @@ extern "C" { # ifndef OPENSSL_NO_EXTERNAL_TESTS # define OPENSSL_NO_EXTERNAL_TESTS # endif +# ifndef OPENSSL_NO_FIPS_JITTER +# define OPENSSL_NO_FIPS_JITTER +# endif # ifndef OPENSSL_NO_FUZZ_AFL # define OPENSSL_NO_FUZZ_AFL # endif # ifndef OPENSSL_NO_FUZZ_LIBFUZZER # define OPENSSL_NO_FUZZ_LIBFUZZER # endif +# ifndef OPENSSL_NO_H3DEMO +# define OPENSSL_NO_H3DEMO +# endif +# ifndef OPENSSL_NO_HQINTEROP +# define OPENSSL_NO_HQINTEROP +# endif +# ifndef OPENSSL_NO_JITTER +# define OPENSSL_NO_JITTER +# endif # ifndef OPENSSL_NO_KTLS # define OPENSSL_NO_KTLS # endif @@ -76,6 +97,9 @@ extern "C" { # ifndef OPENSSL_NO_MSAN # define OPENSSL_NO_MSAN # endif +# ifndef OPENSSL_NO_PIE +# define OPENSSL_NO_PIE +# endif # ifndef OPENSSL_NO_RC5 # define OPENSSL_NO_RC5 # endif @@ -88,6 +112,12 @@ extern "C" { # ifndef OPENSSL_NO_SSL3_METHOD # define OPENSSL_NO_SSL3_METHOD # endif +# ifndef OPENSSL_NO_SSLKEYLOG +# define OPENSSL_NO_SSLKEYLOG +# endif +# ifndef OPENSSL_NO_TFO +# define OPENSSL_NO_TFO +# endif # ifndef OPENSSL_NO_TRACE # define OPENSSL_NO_TRACE # endif @@ -103,6 +133,21 @@ extern "C" { # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS # define OPENSSL_NO_WEAK_SSL_CIPHERS # endif +# ifndef OPENSSL_NO_WINSTORE +# define OPENSSL_NO_WINSTORE +# endif +# ifndef OPENSSL_NO_ZLIB +# define OPENSSL_NO_ZLIB +# endif +# ifndef OPENSSL_NO_ZLIB_DYNAMIC +# define OPENSSL_NO_ZLIB_DYNAMIC +# endif +# ifndef OPENSSL_NO_ZSTD +# define OPENSSL_NO_ZSTD +# endif +# ifndef OPENSSL_NO_ZSTD_DYNAMIC +# define OPENSSL_NO_ZSTD_DYNAMIC +# endif # ifndef OPENSSL_NO_DYNAMIC_ENGINE # define OPENSSL_NO_DYNAMIC_ENGINE # endif @@ -124,6 +169,12 @@ extern "C" { # define RC4_INT unsigned int +# if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +# define OPENSSL_NO_COMP_ALG +# else +# undef OPENSSL_NO_COMP_ALG +# endif + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/core_names.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/core_names.h new file mode 100644 index 00000000000000..e93e79a52bc910 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/core_names.h @@ -0,0 +1,575 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/core_names.h.in + * + * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#ifndef OPENSSL_CORE_NAMES_H +# define OPENSSL_CORE_NAMES_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +/* OSSL_CIPHER_PARAM_CTS_MODE Values */ +# define OSSL_CIPHER_CTS_MODE_CS1 "CS1" +# define OSSL_CIPHER_CTS_MODE_CS2 "CS2" +# define OSSL_CIPHER_CTS_MODE_CS3 "CS3" + +/* Known CIPHER names (not a complete list) */ +# define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" + +/* Known DIGEST names (not a complete list) */ +# define OSSL_DIGEST_NAME_MD5 "MD5" +# define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" +# define OSSL_DIGEST_NAME_SHA1 "SHA1" +# define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" +# define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" +# define OSSL_DIGEST_NAME_SHA2_256_192 "SHA2-256/192" +# define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" +# define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" +# define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" +# define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" +# define OSSL_DIGEST_NAME_MD2 "MD2" +# define OSSL_DIGEST_NAME_MD4 "MD4" +# define OSSL_DIGEST_NAME_MDC2 "MDC2" +# define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" +# define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" +# define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" +# define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" +# define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" +# define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" +# define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" +# define OSSL_DIGEST_NAME_SM3 "SM3" + +/* Known MAC names */ +# define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" +# define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" +# define OSSL_MAC_NAME_CMAC "CMAC" +# define OSSL_MAC_NAME_GMAC "GMAC" +# define OSSL_MAC_NAME_HMAC "HMAC" +# define OSSL_MAC_NAME_KMAC128 "KMAC128" +# define OSSL_MAC_NAME_KMAC256 "KMAC256" +# define OSSL_MAC_NAME_POLY1305 "POLY1305" +# define OSSL_MAC_NAME_SIPHASH "SIPHASH" + +/* Known KDF names */ +# define OSSL_KDF_NAME_HKDF "HKDF" +# define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" +# define OSSL_KDF_NAME_PBKDF1 "PBKDF1" +# define OSSL_KDF_NAME_PBKDF2 "PBKDF2" +# define OSSL_KDF_NAME_SCRYPT "SCRYPT" +# define OSSL_KDF_NAME_SSHKDF "SSHKDF" +# define OSSL_KDF_NAME_SSKDF "SSKDF" +# define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" +# define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" +# define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" +# define OSSL_KDF_NAME_X963KDF "X963KDF" +# define OSSL_KDF_NAME_KBKDF "KBKDF" +# define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" +# define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" + +/* RSA padding modes */ +# define OSSL_PKEY_RSA_PAD_MODE_NONE "none" +# define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" +# define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" +# define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" +# define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" + +/* RSA pss padding salt length */ +# define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" + +/* OSSL_PKEY_PARAM_EC_ENCODING values */ +# define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" +# define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" + +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" + +# define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" + +/* PROV_SKEY well known key types */ +# define OSSL_SKEY_TYPE_GENERIC "GENERIC-SECRET" +# define OSSL_SKEY_TYPE_AES "AES" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" + +/* Provider configuration variables */ +#define OSSL_PKEY_RETAIN_SEED "pkey_retain_seed" + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +# define OSSL_ALG_PARAM_ALGORITHM_ID "algorithm-id" +# define OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS "algorithm-id-params" +# define OSSL_ALG_PARAM_CIPHER "cipher" +# define OSSL_ALG_PARAM_DIGEST "digest" +# define OSSL_ALG_PARAM_ENGINE "engine" +# define OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR "fips-indicator" +# define OSSL_ALG_PARAM_MAC "mac" +# define OSSL_ALG_PARAM_PROPERTIES "properties" +# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +# define OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props" +# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" +# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name" +# define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal" +# define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name" +# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid" +# define OSSL_CIPHER_PARAM_AEAD "aead" +# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +# define OSSL_CIPHER_PARAM_AEAD_IV_GENERATED "iv-generated" +# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" +# define OSSL_CIPHER_PARAM_AEAD_TAG "tag" +# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" +# define OSSL_CIPHER_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD "alg_id_param" +# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_CIPHER_PARAM_CTS "cts" +# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" +# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" +# define OSSL_CIPHER_PARAM_DECRYPT_ONLY "decrypt-only" +# define OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK "encrypt-check" +# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" +# define OSSL_CIPHER_PARAM_IV "iv" +# define OSSL_CIPHER_PARAM_IVLEN "ivlen" +# define OSSL_CIPHER_PARAM_KEYLEN "keylen" +# define OSSL_CIPHER_PARAM_MODE "mode" +# define OSSL_CIPHER_PARAM_NUM "num" +# define OSSL_CIPHER_PARAM_PADDING "padding" +# define OSSL_CIPHER_PARAM_PIPELINE_AEAD_TAG "pipeline-tag" +# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" +# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" +# define OSSL_CIPHER_PARAM_ROUNDS "rounds" +# define OSSL_CIPHER_PARAM_SPEED "speed" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag" +# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" +# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" +# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" +# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" +# define OSSL_CIPHER_PARAM_USE_BITS "use-bits" +# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard" +# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" +# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_DIGEST_PARAM_MICALG "micalg" +# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" +# define OSSL_DIGEST_PARAM_SIZE "size" +# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" +# define OSSL_DIGEST_PARAM_XOF "xof" +# define OSSL_DIGEST_PARAM_XOFLEN "xoflen" +# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +# define OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +# define OSSL_DRBG_PARAM_SIZE "size" +# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" +# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" +# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" +# define OSSL_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_EXCHANGE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" +# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" +# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" +# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" +# define OSSL_EXCHANGE_PARAM_PAD "pad" +# define OSSL_GEN_PARAM_ITERATION "iteration" +# define OSSL_GEN_PARAM_POTENTIAL "potential" +# define OSSL_KDF_PARAM_ARGON2_AD "ad" +# define OSSL_KDF_PARAM_ARGON2_LANES "lanes" +# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost" +# define OSSL_KDF_PARAM_ARGON2_VERSION "version" +# define OSSL_KDF_PARAM_CEK_ALG "cekalg" +# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_KDF_PARAM_CONSTANT "constant" +# define OSSL_KDF_PARAM_DATA "data" +# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean" +# define OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KDF_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_KDF_PARAM_FIPS_EMS_CHECK "ems_check" +# define OSSL_KDF_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy" +# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce" +# define OSSL_KDF_PARAM_INFO "info" +# define OSSL_KDF_PARAM_ITER "iter" +# define OSSL_KDF_PARAM_KBKDF_R "r" +# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" +# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" +# define OSSL_KDF_PARAM_KEY "key" +# define OSSL_KDF_PARAM_LABEL "label" +# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_KDF_PARAM_MAC_SIZE "maclen" +# define OSSL_KDF_PARAM_MODE "mode" +# define OSSL_KDF_PARAM_PASSWORD "pass" +# define OSSL_KDF_PARAM_PKCS12_ID "id" +# define OSSL_KDF_PARAM_PKCS5 "pkcs5" +# define OSSL_KDF_PARAM_PREFIX "prefix" +# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_KDF_PARAM_SALT "salt" +# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" +# define OSSL_KDF_PARAM_SCRYPT_N "n" +# define OSSL_KDF_PARAM_SCRYPT_P "p" +# define OSSL_KDF_PARAM_SCRYPT_R "r" +# define OSSL_KDF_PARAM_SECRET "secret" +# define OSSL_KDF_PARAM_SEED "seed" +# define OSSL_KDF_PARAM_SIZE "size" +# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" +# define OSSL_KDF_PARAM_SSHKDF_TYPE "type" +# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" +# define OSSL_KDF_PARAM_THREADS "threads" +# define OSSL_KDF_PARAM_UKM "ukm" +# define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info" +# define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info" +# define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info" +# define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo" +# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_KEM_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KEM_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KEM_PARAM_IKME "ikme" +# define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING "hs_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm" +# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len" +# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" +# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_MAC_PARAM_CUSTOM "custom" +# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" +# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" +# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" +# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" +# define OSSL_MAC_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_MAC_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_MAC_PARAM_FIPS_NO_SHORT_MAC OSSL_PROV_PARAM_NO_SHORT_MAC +# define OSSL_MAC_PARAM_IV "iv" +# define OSSL_MAC_PARAM_KEY "key" +# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_MAC_PARAM_SALT "salt" +# define OSSL_MAC_PARAM_SIZE "size" +# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" +# define OSSL_MAC_PARAM_XOF "xof" +# define OSSL_OBJECT_PARAM_DATA "data" +# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" +# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" +# define OSSL_OBJECT_PARAM_DESC "desc" +# define OSSL_OBJECT_PARAM_INPUT_TYPE "input-type" +# define OSSL_OBJECT_PARAM_REFERENCE "reference" +# define OSSL_OBJECT_PARAM_TYPE "type" +# define OSSL_PASSPHRASE_PARAM_INFO "info" +# define OSSL_PKEY_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_PKEY_PARAM_BITS "bits" +# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" +# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm" +# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" +# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +# define OSSL_PKEY_PARAM_DIST_ID "distid" +# define OSSL_PKEY_PARAM_EC_A "a" +# define OSSL_PKEY_PARAM_EC_B "b" +# define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3" +# define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp" +# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" +# define OSSL_PKEY_PARAM_EC_ENCODING "encoding" +# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +# define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_PARAM_EC_ORDER "order" +# define OSSL_PKEY_PARAM_EC_P "p" +# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +# define OSSL_PKEY_PARAM_EC_PUB_X "qx" +# define OSSL_PKEY_PARAM_EC_PUB_Y "qy" +# define OSSL_PKEY_PARAM_EC_SEED "seed" +# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE +# define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +# define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_FFC_G "g" +# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +# define OSSL_PKEY_PARAM_FFC_H "hindex" +# define OSSL_PKEY_PARAM_FFC_P "p" +# define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +# define OSSL_PKEY_PARAM_FFC_Q "q" +# define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +# define OSSL_PKEY_PARAM_FFC_SEED "seed" +# define OSSL_PKEY_PARAM_FFC_TYPE "type" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +# define OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK "digest-check" +# define OSSL_PKEY_PARAM_FIPS_KEY_CHECK "key-check" +# define OSSL_PKEY_PARAM_FIPS_SIGN_CHECK "sign-check" +# define OSSL_PKEY_PARAM_GROUP_NAME "group" +# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" +# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +# define OSSL_PKEY_PARAM_MAX_SIZE "max-size" +# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +# define OSSL_PKEY_PARAM_ML_DSA_INPUT_FORMATS "ml-dsa.input_formats" +# define OSSL_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS "ml-dsa.output_formats" +# define OSSL_PKEY_PARAM_ML_DSA_PREFER_SEED "ml-dsa.prefer_seed" +# define OSSL_PKEY_PARAM_ML_DSA_RETAIN_SEED "ml-dsa.retain_seed" +# define OSSL_PKEY_PARAM_ML_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE "ml-kem.import_pct_type" +# define OSSL_PKEY_PARAM_ML_KEM_INPUT_FORMATS "ml-kem.input_formats" +# define OSSL_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS "ml-kem.output_formats" +# define OSSL_PKEY_PARAM_ML_KEM_PREFER_SEED "ml-kem.prefer_seed" +# define OSSL_PKEY_PARAM_ML_KEM_RETAIN_SEED "ml-kem.retain_seed" +# define OSSL_PKEY_PARAM_ML_KEM_SEED "seed" +# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +# define OSSL_PKEY_PARAM_PRIV_KEY "priv" +# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_PUB_KEY "pub" +# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9" +# define OSSL_PKEY_PARAM_RSA_D "d" +# define OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ "rsa-derive-from-pq" +# define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_RSA_E "e" +# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1" +# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10" +# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2" +# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3" +# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4" +# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5" +# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6" +# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7" +# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8" +# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9" +# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1" +# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10" +# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2" +# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3" +# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4" +# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5" +# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6" +# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7" +# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8" +# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9" +# define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC +# define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_PKEY_PARAM_RSA_N "n" +# define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" +# define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1" +# define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2" +# define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1" +# define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2" +# define OSSL_PKEY_PARAM_RSA_TEST_XP "xp" +# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" +# define OSSL_PKEY_PARAM_SLH_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG +# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +# define OSSL_PROV_PARAM_BUILDINFO "buildinfo" +# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" +# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" +# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" +# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" +# define OSSL_PROV_PARAM_DSA_SIGN_DISABLED "dsa-sign-disabled" +# define OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK "ecdh-cofactor-check" +# define OSSL_PROV_PARAM_HKDF_DIGEST_CHECK "hkdf-digest-check" +# define OSSL_PROV_PARAM_HKDF_KEY_CHECK "hkdf-key-check" +# define OSSL_PROV_PARAM_HMAC_KEY_CHECK "hmac-key-check" +# define OSSL_PROV_PARAM_KBKDF_KEY_CHECK "kbkdf-key-check" +# define OSSL_PROV_PARAM_KMAC_KEY_CHECK "kmac-key-check" +# define OSSL_PROV_PARAM_NAME "name" +# define OSSL_PROV_PARAM_NO_SHORT_MAC "no-short-mac" +# define OSSL_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK "pbkdf2-lower-bound-check" +# define OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED "rsa-pkcs15-pad-disabled" +# define OSSL_PROV_PARAM_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED "rsa-sign-x931-pad-disabled" +# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" +# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" +# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" +# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" +# define OSSL_PROV_PARAM_SIGNATURE_DIGEST_CHECK "signature-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_DIGEST_CHECK "sshkdf-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_KEY_CHECK "sshkdf-key-check" +# define OSSL_PROV_PARAM_SSKDF_DIGEST_CHECK "sskdf-digest-check" +# define OSSL_PROV_PARAM_SSKDF_KEY_CHECK "sskdf-key-check" +# define OSSL_PROV_PARAM_STATUS "status" +# define OSSL_PROV_PARAM_TDES_ENCRYPT_DISABLED "tdes-encrypt-disabled" +# define OSSL_PROV_PARAM_TLS13_KDF_DIGEST_CHECK "tls13-kdf-digest-check" +# define OSSL_PROV_PARAM_TLS13_KDF_KEY_CHECK "tls13-kdf-key-check" +# define OSSL_PROV_PARAM_TLS1_PRF_DIGEST_CHECK "tls1-prf-digest-check" +# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" +# define OSSL_PROV_PARAM_TLS1_PRF_KEY_CHECK "tls1-prf-key-check" +# define OSSL_PROV_PARAM_VERSION "version" +# define OSSL_PROV_PARAM_X942KDF_KEY_CHECK "x942kdf-key-check" +# define OSSL_PROV_PARAM_X963KDF_DIGEST_CHECK "x963kdf-digest-check" +# define OSSL_PROV_PARAM_X963KDF_KEY_CHECK "x963kdf-key-check" +# define OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_RAND_PARAM_GENERATE "generate" +# define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +# define OSSL_RAND_PARAM_STATE "state" +# define OSSL_RAND_PARAM_STRENGTH "strength" +# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" +# define OSSL_SIGNATURE_PARAM_ADD_RANDOM "additional-random" +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID OSSL_PKEY_PARAM_ALGORITHM_ID +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string" +# define OSSL_SIGNATURE_PARAM_DETERMINISTIC "deterministic" +# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE +# define OSSL_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_SIGNATURE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_CHECK OSSL_PKEY_PARAM_FIPS_SIGN_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK "sign-x931-pad-check" +# define OSSL_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE "verify-message" +# define OSSL_SIGNATURE_PARAM_INSTANCE "instance" +# define OSSL_SIGNATURE_PARAM_KAT "kat" +# define OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING "message-encoding" +# define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_SIGNATURE_PARAM_MU "mu" +# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type" +# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +# define OSSL_SIGNATURE_PARAM_SIGNATURE "signature" +# define OSSL_SIGNATURE_PARAM_TEST_ENTROPY "test-entropy" +# define OSSL_SKEY_PARAM_KEY_LENGTH "key-length" +# define OSSL_SKEY_PARAM_RAW_BYTES "raw-bytes" +# define OSSL_STORE_PARAM_ALIAS "alias" +# define OSSL_STORE_PARAM_DIGEST "digest" +# define OSSL_STORE_PARAM_EXPECT "expect" +# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" +# define OSSL_STORE_PARAM_INPUT_TYPE "input-type" +# define OSSL_STORE_PARAM_ISSUER "name" +# define OSSL_STORE_PARAM_PROPERTIES "properties" +# define OSSL_STORE_PARAM_SERIAL "serial" +# define OSSL_STORE_PARAM_SUBJECT "subject" + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/crmf.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/crmf.h index 71b747ed33d239..4bf550fd47daa9 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/crmf.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/crmf.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/crmf.h.in * - * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -26,6 +26,7 @@ # include # include # include /* for GENERAL_NAME etc. */ +# include /* explicit #includes not strictly needed since implied by the above: */ # include @@ -43,9 +44,12 @@ extern "C" { # define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 # define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 - typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) + +typedef struct ossl_crmf_encryptedkey_st OSSL_CRMF_ENCRYPTEDKEY; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDKEY) + typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) @@ -77,6 +81,36 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) #define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; +void OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(OSSL_CRMF_ATTRIBUTETYPEANDVALUE *v); +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value(sk, idx) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new(cmp) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_null() ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (n)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete(sk, i) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (i))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete_ptr(sk, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_shift(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk),ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), (idx)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set(sk, idx, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), pnum) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup(sk) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) + + typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER) typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY; @@ -118,6 +152,7 @@ typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO) typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTTEMPLATE) typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS) @@ -198,12 +233,14 @@ int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, int rid, int acceptRAVerified, OSSL_LIB_CTX *libctx, const char *propq); OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); -const ASN1_INTEGER -*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const ASN1_INTEGER +*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); X509_EXTENSIONS *OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME @@ -215,10 +252,24 @@ int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl, const X509_NAME *subject, const X509_NAME *issuer, const ASN1_INTEGER *serial); -X509 -*OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, - OSSL_LIB_CTX *libctx, const char *propq, - EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDKEY_get1_encCert(const OSSL_CRMF_ENCRYPTEDKEY *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, unsigned int flags); +unsigned char +*OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *enc, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, int *outlen); +EVP_PKEY *OSSL_CRMF_ENCRYPTEDKEY_get1_pkey(const OSSL_CRMF_ENCRYPTEDKEY *encryptedKey, + X509_STORE *ts, STACK_OF(X509) *extra, EVP_PKEY *pkey, + X509 *cert, ASN1_OCTET_STRING *secret, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSG_centralkeygen_requested(const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr); +# ifndef OPENSSL_NO_CMS +OSSL_CRMF_ENCRYPTEDKEY *OSSL_CRMF_ENCRYPTEDKEY_init_envdata(CMS_EnvelopedData *envdata); +# endif # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/crypto.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/crypto.h index 3f40be6d8c61d5..fd2cfd3e5a9ac4 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/crypto.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/crypto.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/crypto.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -85,9 +85,15 @@ int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock); void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock); int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_add64(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_and(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, CRYPTO_RWLOCK *lock); int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, CRYPTO_RWLOCK *lock); /* No longer needed, so this is a no-op */ #define OPENSSL_malloc_init() while(0) continue @@ -96,6 +102,9 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_zalloc(num) \ CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_aligned_alloc(num, alignment, freeptr) \ + CRYPTO_aligned_alloc(num, alignment, freeptr, \ + OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_realloc(addr, num) \ CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_clear_realloc(addr, old_num, num) \ @@ -124,6 +133,7 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); size_t OPENSSL_strnlen(const char *str, size_t maxlen); +int OPENSSL_strtoul(const char *str, char **endptr, int base, unsigned long *num); int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength, const unsigned char *buf, size_t buflen, const char sep); @@ -160,6 +170,7 @@ const char *OpenSSL_version(int type); # define OPENSSL_FULL_VERSION_STRING 7 # define OPENSSL_MODULES_DIR 8 # define OPENSSL_CPU_INFO 9 +# define OPENSSL_WINCTX 10 const char *OPENSSL_info(int type); /* @@ -174,6 +185,7 @@ const char *OPENSSL_info(int type); # define OPENSSL_INFO_LIST_SEPARATOR 1006 # define OPENSSL_INFO_SEED_SOURCE 1007 # define OPENSSL_INFO_CPU_SETTINGS 1008 +# define OPENSSL_INFO_WINDOWS_CONTEXT 1009 int OPENSSL_issetugid(void); @@ -341,11 +353,14 @@ void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn, CRYPTO_realloc_fn *realloc_fn, CRYPTO_free_fn *free_fn); -void *CRYPTO_malloc(size_t num, const char *file, int line); -void *CRYPTO_zalloc(size_t num, const char *file, int line); -void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); -char *CRYPTO_strdup(const char *str, const char *file, int line); -char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc(size_t num, size_t align, + void **freeptr, const char *file, + int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strdup(const char *str, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); void CRYPTO_free(void *ptr, const char *file, int line); void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line); void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); @@ -354,8 +369,8 @@ void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, int CRYPTO_secure_malloc_init(size_t sz, size_t minsize); int CRYPTO_secure_malloc_done(void); -void *CRYPTO_secure_malloc(size_t num, const char *file, int line); -void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); void CRYPTO_secure_free(void *ptr, const char *file, int line); void CRYPTO_secure_clear_free(void *ptr, size_t num, const char *file, int line); @@ -376,6 +391,9 @@ void OPENSSL_cleanse(void *ptr, size_t len); # define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */ # define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */ +/* max allowed length for value of OPENSSL_MALLOC_FAILURES env var. */ +# define CRYPTO_MEM_CHECK_MAX_FS 256 + void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); # ifndef OPENSSL_NO_DEPRECATED_3_0 # define OPENSSL_mem_debug_push(info) \ @@ -551,6 +569,13 @@ int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file); void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); +int OSSL_LIB_CTX_get_conf_diagnostics(OSSL_LIB_CTX *ctx); +void OSSL_LIB_CTX_set_conf_diagnostics(OSSL_LIB_CTX *ctx, int value); + +void OSSL_sleep(uint64_t millis); + + +void *OSSL_LIB_CTX_get_data(OSSL_LIB_CTX *ctx, int index); # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/ct.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/ct.h index b6dd8c3547710a..e6dd1192a4e0b3 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/ct.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/ct.h @@ -133,7 +133,7 @@ typedef enum { */ CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); - + /* * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library * context and property query string is used. diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/err.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/err.h index 2abf2483488181..daca18e7b757b0 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/err.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/err.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -372,7 +372,7 @@ typedef struct ERR_string_data_st { } ERR_STRING_DATA; DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); -#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp))) +#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp)), lh_ERR_STRING_DATA_hash_thunk, lh_ERR_STRING_DATA_comp_thunk, lh_ERR_STRING_DATA_doall_thunk, lh_ERR_STRING_DATA_doall_arg_thunk)) #define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) @@ -496,6 +496,14 @@ int ERR_get_next_error_library(void); int ERR_set_mark(void); int ERR_pop_to_mark(void); int ERR_clear_last_mark(void); +int ERR_count_to_mark(void); +int ERR_pop(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); #ifdef __cplusplus } diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/fipskey.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/fipskey.h index 42ba014b313ba8..929db18c678364 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/fipskey.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/fipskey.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/fipskey.h.in * - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -29,6 +29,11 @@ extern "C" { */ #define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" +/* + * The FIPS provider vendor name, as a string. + */ +#define FIPS_VENDOR "OpenSSL FIPS Provider" + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/lhash.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/lhash.h index 39dd6254acdeb6..62c55b20fd9716 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/lhash.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/lhash.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -24,6 +24,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -31,9 +34,13 @@ extern "C" { typedef struct lhash_node_st OPENSSL_LH_NODE; typedef int (*OPENSSL_LH_COMPFUNC) (const void *, const void *); +typedef int (*OPENSSL_LH_COMPFUNCTHUNK) (const void *, const void *, OPENSSL_LH_COMPFUNC cfn); typedef unsigned long (*OPENSSL_LH_HASHFUNC) (const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNCTHUNK) (const void *, OPENSSL_LH_HASHFUNC hfn); typedef void (*OPENSSL_LH_DOALL_FUNC) (void *); +typedef void (*OPENSSL_LH_DOALL_FUNC_THUNK) (void *, OPENSSL_LH_DOALL_FUNC doall); typedef void (*OPENSSL_LH_DOALL_FUNCARG) (void *, void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG_THUNK) (void *, void *, OPENSSL_LH_DOALL_FUNCARG doall); typedef struct lhash_st OPENSSL_LHASH; /* @@ -79,26 +86,40 @@ typedef struct lhash_st OPENSSL_LHASH; int OPENSSL_LH_error(OPENSSL_LHASH *lh); OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +OPENSSL_LHASH *OPENSSL_LH_set_thunks(OPENSSL_LHASH *lh, + OPENSSL_LH_HASHFUNCTHUNK hw, + OPENSSL_LH_COMPFUNCTHUNK cw, + OPENSSL_LH_DOALL_FUNC_THUNK daw, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw); void OPENSSL_LH_free(OPENSSL_LHASH *lh); void OPENSSL_LH_flush(OPENSSL_LHASH *lh); void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); -void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg_thunk(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw, + OPENSSL_LH_DOALL_FUNCARG fn, void *arg); + unsigned long OPENSSL_LH_strhash(const char *c); unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); # ifndef OPENSSL_NO_STDIO -void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# endif +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # endif -void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define _LHASH OPENSSL_LHASH @@ -129,110 +150,190 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); /* Helper macro for internal use */ # define DEFINE_LHASH_OF_INTERNAL(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ typedef void (*lh_##type##_doallfunc)(type *a); \ - static ossl_unused ossl_inline type *ossl_check_##type##_lh_plain_type(type *ptr) \ + static ossl_inline unsigned long lh_##type##_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static ossl_inline int lh_##type##_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_inline void lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_inline void lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline type *\ + ossl_check_##type##_lh_plain_type(type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const type *ossl_check_const_##type##_lh_plain_type(const type *ptr) \ + static ossl_unused ossl_inline const type * \ + ossl_check_const_##type##_lh_plain_type(const type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const OPENSSL_LHASH *ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline const OPENSSL_LHASH * \ + ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ { \ return (const OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LHASH *ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline OPENSSL_LHASH * \ + ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ { \ return (OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ + static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC \ + ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ { \ return (OPENSSL_LH_COMPFUNC)cmp; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ + static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC \ + ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ { \ return (OPENSSL_LH_HASHFUNC)hfn; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ + static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC \ + ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ { \ return (OPENSSL_LH_DOALL_FUNC)dfn; \ } \ LHASH_OF(type) -# define DEFINE_LHASH_OF(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ - static ossl_unused ossl_inline LHASH_OF(type) *lh_##type##_new(unsigned long (*hfn)(const type *), \ - int (*cfn)(const type *, const type *)) \ +# ifndef OPENSSL_NO_DEPRECATED_3_1 +# define DEFINE_LHASH_OF_DEPRECATED(type) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ - return (LHASH_OF(type) *) \ - OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ - static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } +# else +# define DEFINE_LHASH_OF_DEPRECATED(type) +# endif + +# define DEFINE_LHASH_OF_EX(type) \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ + static unsigned long \ + lh_##type##_hfn_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static int lh_##type##_cfn_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_free(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_flush(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_flush(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ { \ return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline int \ + lh_##type##_error(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_num_items(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_get_down_load(LHASH_OF(type) *lh) \ { \ - OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ { \ - OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ } \ - static ossl_unused ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ { \ - OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ { \ - return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ } \ - static ossl_unused ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall(LHASH_OF(type) *lh, void (*doall)(type *)) \ { \ - OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ - void (*doall)(type *)) \ + static ossl_unused ossl_inline LHASH_OF(type) * \ + lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ { \ - OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \ + lh_##type##_hfn_thunk, lh_##type##_cfn_thunk, \ + lh_##type##_doall_thunk, \ + lh_##type##_doall_arg_thunk); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall_arg(LHASH_OF(type) *lh, \ - void (*doallarg)(type *, void *), \ - void *arg) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg(LHASH_OF(type) *lh, \ + void (*doallarg)(type *, void *), void *arg) \ { \ OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ } \ LHASH_OF(type) +# define DEFINE_LHASH_OF(type) \ + DEFINE_LHASH_OF_EX(type); \ + DEFINE_LHASH_OF_DEPRECATED(type) \ + LHASH_OF(type) + #define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ int_implement_lhash_doall(type, argtype, const type) @@ -240,17 +341,26 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); int_implement_lhash_doall(type, argtype, type) #define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype##_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG fn) \ + { \ + void (*fn_conv)(cbargtype *, argtype *) = (void (*)(cbargtype *, argtype *))fn; \ + fn_conv((cbargtype *)node, (argtype *)arg); \ + } \ static ossl_unused ossl_inline void \ lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ void (*fn)(cbargtype *, argtype *), \ argtype *arg) \ { \ - OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNCARG)fn, (void *)arg); \ + OPENSSL_LH_doall_arg_thunk((OPENSSL_LHASH *)lh, \ + lh_##type##_doall_##argtype##_thunk, \ + (OPENSSL_LH_DOALL_FUNCARG)fn, \ + (void *)arg); \ } \ LHASH_OF(type) DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); -#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp)), lh_OPENSSL_STRING_hash_thunk, lh_OPENSSL_STRING_comp_thunk, lh_OPENSSL_STRING_doall_thunk, lh_OPENSSL_STRING_doall_arg_thunk)) #define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) @@ -265,7 +375,7 @@ DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); #define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) #define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); -#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp)), lh_OPENSSL_CSTRING_hash_thunk, lh_OPENSSL_CSTRING_comp_thunk, lh_OPENSSL_CSTRING_doall_thunk, lh_OPENSSL_CSTRING_doall_arg_thunk)) #define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/opensslv.h index 5fb5bc63056fe0..71a357701fd5e3 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/opensslv.h @@ -28,8 +28,8 @@ extern "C" { * These macros express version number MAJOR.MINOR.PATCH exactly */ # define OPENSSL_VERSION_MAJOR 3 -# define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 17 +# define OPENSSL_VERSION_MINOR 5 +# define OPENSSL_VERSION_PATCH 2 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.17" -# define OPENSSL_FULL_VERSION_STR "3.0.17" +# define OPENSSL_VERSION_STR "3.5.2" +# define OPENSSL_FULL_VERSION_STR "3.5.2" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "1 Jul 2025" +# define OPENSSL_RELEASE_DATE "5 Aug 2025" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.17 1 Jul 2025" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.2 5 Aug 2025" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/pkcs12.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/pkcs12.h index c5e0cab06491ec..0809645dad0bbf 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/pkcs12.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/pkcs12.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/pkcs12.h.in * - * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -41,6 +44,7 @@ extern "C" { # define PKCS12_MAC_KEY_LENGTH 20 +/* The macro is expected to be used only internally. Kept for backwards compatibility. */ # define PKCS12_SALT_LEN 8 /* It's not clear if these are actually needed... */ @@ -130,7 +134,9 @@ int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); const STACK_OF(PKCS12_SAFEBAG) * PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); @@ -218,6 +224,7 @@ ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); const STACK_OF(X509_ATTRIBUTE) * PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, const char *pass, int passlen, const unsigned char *in, int inlen, @@ -285,6 +292,9 @@ int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, unsigned char *salt, int saltlen, int iter, const EVP_MD *md_type); +int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type, const char *prf_md_name); int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, int saltlen, const EVP_MD *md_type); unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, @@ -305,6 +315,7 @@ DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) void PKCS12_PBE_add(void); int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype); @@ -312,6 +323,11 @@ PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype, OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/pkcs7.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/pkcs7.h index 0ce79bf4fa160e..fa68462aff973b 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/pkcs7.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/pkcs7.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/pkcs7.h.in * - * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -28,6 +28,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -131,8 +134,8 @@ SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INF typedef struct pkcs7_signed_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; struct pkcs7_st *contents; } PKCS7_SIGNED; @@ -158,8 +161,8 @@ typedef struct pkcs7_enveloped_st { typedef struct pkcs7_signedandenveloped_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; PKCS7_ENC_CONTENT *enc_data; STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; @@ -200,7 +203,7 @@ typedef struct pkcs7_st { /* NID_pkcs7_data */ ASN1_OCTET_STRING *data; /* NID_pkcs7_signed */ - PKCS7_SIGNED *sign; + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ /* NID_pkcs7_enveloped */ PKCS7_ENVELOPE *enveloped; /* NID_pkcs7_signedAndEnveloped */ @@ -341,13 +344,13 @@ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, const EVP_MD *dgst); int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); -int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); -int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); int PKCS7_content_new(PKCS7 *p7, int nid); int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, - X509 *x509); + X509 *signer); BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/ssl.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/ssl.h index 3df725c56d6c5e..7e3d89c7ef3dc9 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/ssl.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/ssl.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/ssl.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -24,6 +24,7 @@ # endif # include +# include # include # include # include @@ -42,6 +43,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -231,10 +235,8 @@ typedef struct ssl_cipher_st SSL_CIPHER; typedef struct ssl_session_st SSL_SESSION; typedef struct tls_sigalgs_st TLS_SIGALGS; typedef struct ssl_conf_ctx_st SSL_CONF_CTX; -typedef struct ssl_comp_st SSL_COMP; STACK_OF(SSL_CIPHER); -STACK_OF(SSL_COMP); /* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ typedef struct srtp_protection_profile_st { @@ -278,28 +280,31 @@ typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, /* Extension context codes */ /* This extension is only allowed in TLS */ -#define SSL_EXT_TLS_ONLY 0x0001 +#define SSL_EXT_TLS_ONLY 0x00001 /* This extension is only allowed in DTLS */ -#define SSL_EXT_DTLS_ONLY 0x0002 +#define SSL_EXT_DTLS_ONLY 0x00002 /* Some extensions may be allowed in DTLS but we don't implement them for it */ -#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 /* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ -#define SSL_EXT_SSL3_ALLOWED 0x0008 +#define SSL_EXT_SSL3_ALLOWED 0x00008 /* Extension is only defined for TLS1.2 and below */ -#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 /* Extension is only defined for TLS1.3 and above */ -#define SSL_EXT_TLS1_3_ONLY 0x0020 +#define SSL_EXT_TLS1_3_ONLY 0x00020 /* Ignore this extension during parsing if we are resuming */ -#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 -#define SSL_EXT_CLIENT_HELLO 0x0080 +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 /* Really means TLS1.2 or below */ -#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 -#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 -#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 -#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 -#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 -#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 -#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 /* Typedefs for handling custom extensions */ @@ -404,7 +409,7 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); */ # define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_BIT(22) /* - * If set, a server will allow a client to issue a SSLv3.0 version + * If set, a server will allow a client to issue an SSLv3.0 version * number as latest version supported in the premaster secret, even when * TLSv1.0 (version 3.1) was announced in the client hello. Normally * this is forbidden to prevent version rollback attacks. @@ -430,6 +435,19 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); * interoperability with CryptoPro CSP 3.x */ # define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +# define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +# define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) + /* Enable KTLS TX zerocopy on Linux */ +# define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) + +#define SSL_OP_PREFER_NO_DHE_KEX SSL_OP_BIT(35) /* * Option "collections." @@ -574,6 +592,8 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); # define CERT_PKEY_CERT_TYPE 0x400 /* Cert chain suitable to Suite B */ # define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +# define CERT_PKEY_RPK 0x1000 # define SSL_CONF_FLAG_CMDLINE 0x1 # define SSL_CONF_FLAG_FILE 0x2 @@ -965,6 +985,7 @@ uint32_t SSL_get_recv_max_early_data(const SSL *s); # include /* This is mostly sslv3 with a few tweaks */ # include /* Datagram TLS */ # include /* Support for the use_srtp extension */ +# include #ifdef __cplusplus extern "C" { @@ -1000,32 +1021,6 @@ SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) #define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) #define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) #define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) -SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) -#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) -#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) -#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) -#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) -#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) -#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) -#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) -#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) -#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) -#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) -#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) /* compatibility */ @@ -1066,6 +1061,7 @@ typedef enum { DTLS_ST_CR_HELLO_VERIFY_REQUEST, TLS_ST_CR_SRVR_HELLO, TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, TLS_ST_CR_CERT_STATUS, TLS_ST_CR_KEY_EXCH, TLS_ST_CR_CERT_REQ, @@ -1075,6 +1071,7 @@ typedef enum { TLS_ST_CR_FINISHED, TLS_ST_CW_CLNT_HELLO, TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, TLS_ST_CW_KEY_EXCH, TLS_ST_CW_CERT_VRFY, TLS_ST_CW_CHANGE, @@ -1085,10 +1082,12 @@ typedef enum { DTLS_ST_SW_HELLO_VERIFY_REQUEST, TLS_ST_SW_SRVR_HELLO, TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, TLS_ST_SW_KEY_EXCH, TLS_ST_SW_CERT_REQ, TLS_ST_SW_SRVR_DONE, TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, TLS_ST_SR_KEY_EXCH, TLS_ST_SR_CERT_VRFY, TLS_ST_SR_NEXT_PROTO, @@ -1380,9 +1379,13 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_CTRL_GET_SIGNATURE_NID 132 # define SSL_CTRL_GET_TMP_KEY 133 # define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +# define SSL_CTRL_GET_IANA_GROUPS 135 # define SSL_CTRL_SET_RETRY_VERIFY 136 # define SSL_CTRL_GET_VERIFY_CERT_STORE 137 # define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +# define SSL_CTRL_GET0_IMPLEMENTED_GROUPS 139 +# define SSL_CTRL_GET_SIGNATURE_NAME 140 +# define SSL_CTRL_GET_PEER_SIGNATURE_NAME 141 # define SSL_CERT_SET_FIRST 1 # define SSL_CERT_SET_NEXT 2 # define SSL_CERT_SET_SERVER 3 @@ -1485,10 +1488,15 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get1_groups(s, glist) \ SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_IANA_GROUPS,0,(uint16_t **)(plst)) # define SSL_CTX_set1_groups(ctx, glist, glistlen) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) # define SSL_CTX_set1_groups_list(ctx, s) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s)) +# define SSL_CTX_get0_implemented_groups(ctx, all, out) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET0_IMPLEMENTED_GROUPS, all, \ + (STACK_OF(OPENSSL_CSTRING) *)(out)) # define SSL_set1_groups(s, glist, glistlen) \ SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist)) # define SSL_set1_groups_list(s, str) \ @@ -1520,8 +1528,12 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) (char *)(clist)) # define SSL_set1_client_certificate_types(s, clist, clistlen) \ SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist)) +# define SSL_get0_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn) +# define SSL_get0_peer_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_peer_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) # define SSL_get_peer_tmp_key(s, pk) \ @@ -1549,6 +1561,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get_max_proto_version(s) \ SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +const char *SSL_get0_group_name(SSL *s); const char *SSL_group_to_name(SSL *s, int id); /* Backwards compatibility, original 1.1.0 names */ @@ -1613,7 +1626,11 @@ void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); __owur int SSL_want(const SSL *s); __owur int SSL_clear(SSL *s); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()") void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); +#endif +void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm); __owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); __owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); @@ -1725,13 +1742,21 @@ __owur const char *SSL_state_string(const SSL *s); __owur const char *SSL_rstate_string(const SSL *s); __owur const char *SSL_state_string_long(const SSL *s); __owur const char *SSL_rstate_string_long(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_get_time_ex()") __owur long SSL_SESSION_get_time(const SSL_SESSION *s); +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_set_time_ex()") __owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +#endif __owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); __owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); __owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); __owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); +__owur time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s); +__owur time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t); + __owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); __owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, @@ -1783,6 +1808,9 @@ __owur int SSL_has_matching_session_id(const SSL *s, unsigned int id_len); SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); # ifdef OPENSSL_X509_H __owur X509 *SSL_get0_peer_certificate(const SSL *s); @@ -1840,6 +1868,8 @@ __owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, SSL *SSL_new(SSL_CTX *ctx); int SSL_up_ref(SSL *s); int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); __owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, unsigned int sid_ctx_len); @@ -1848,8 +1878,8 @@ __owur int SSL_set_purpose(SSL *ssl, int purpose); __owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); __owur int SSL_set_trust(SSL *ssl, int trust); -__owur int SSL_set1_host(SSL *s, const char *hostname); -__owur int SSL_add1_host(SSL *s, const char *hostname); +__owur int SSL_set1_host(SSL *s, const char *host); +__owur int SSL_add1_host(SSL *s, const char *host); __owur const char *SSL_get0_peername(SSL *s); void SSL_set_hostflags(SSL *s, unsigned int flags); @@ -1924,6 +1954,11 @@ OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg); void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, void *arg); +typedef int (*SSL_new_pending_conn_cb_fn) (SSL_CTX *ctx, SSL *new_ssl, + void *arg); +void SSL_CTX_set_new_pending_conn_cb(SSL_CTX *c, SSL_new_pending_conn_cb_fn cb, + void *arg); + int SSL_client_hello_isv2(SSL *s); unsigned int SSL_client_hello_get0_legacy_version(SSL *s); size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); @@ -1932,6 +1967,8 @@ size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); size_t SSL_client_hello_get0_compression_methods(SSL *s, const unsigned char **out); int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); int SSL_client_hello_get0_ext(SSL *s, unsigned int type, const unsigned char **out, size_t *outlen); @@ -1978,6 +2015,12 @@ long SSL_callback_ctrl(SSL *, int, void (*)(void)); long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); +# define SSL_WRITE_FLAG_CONCLUDE (1U << 0) + +__owur int SSL_write_ex2(SSL *s, const void *buf, size_t num, + uint64_t flags, + size_t *written); + # define SSL_EARLY_DATA_NOT_SENT 0 # define SSL_EARLY_DATA_REJECTED 1 # define SSL_EARLY_DATA_ACCEPTED 2 @@ -1986,6 +2029,7 @@ __owur int SSL_get_early_data_status(const SSL *s); __owur int SSL_get_error(const SSL *s, int ret_code); __owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); /* This sets the 'default' SSL version that SSL_new() will create */ # ifndef OPENSSL_NO_DEPRECATED_3_0 @@ -2281,6 +2325,8 @@ void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); +int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size, + size_t hs_block_size); int SSL_set_record_padding_callback(SSL *ssl, size_t (*cb) (SSL *ssl, int type, @@ -2288,12 +2334,255 @@ int SSL_set_record_padding_callback(SSL *ssl, void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); void *SSL_get_record_padding_callback_arg(const SSL *ssl); int SSL_set_block_padding(SSL *ssl, size_t block_size); - +int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size, + size_t hs_block_size); int SSL_set_num_tickets(SSL *s, size_t num_tickets); size_t SSL_get_num_tickets(const SSL *s); int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +__owur int SSL_is_listener(SSL *ssl); +__owur SSL *SSL_get0_listener(SSL *s); +#define SSL_LISTENER_FLAG_NO_VALIDATE (1UL << 1) +__owur SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags); +__owur SSL *SSL_new_listener_from(SSL *ssl, uint64_t flags); +__owur SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags); +#define SSL_ACCEPT_CONNECTION_NO_BLOCK (1UL << 0) +__owur SSL *SSL_accept_connection(SSL *ssl, uint64_t flags); +__owur size_t SSL_get_accept_connection_queue_len(SSL *ssl); +__owur int SSL_listen(SSL *ssl); + +__owur int SSL_is_domain(SSL *s); +__owur SSL *SSL_get0_domain(SSL *s); +__owur SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags); + +#define SSL_DOMAIN_FLAG_SINGLE_THREAD (1U << 0) +#define SSL_DOMAIN_FLAG_MULTI_THREAD (1U << 1) +#define SSL_DOMAIN_FLAG_THREAD_ASSISTED (1U << 2) +#define SSL_DOMAIN_FLAG_BLOCKING (1U << 3) +#define SSL_DOMAIN_FLAG_LEGACY_BLOCKING (1U << 4) + +__owur int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t domain_flags); +__owur int SSL_CTX_get_domain_flags(const SSL_CTX *ctx, uint64_t *domain_flags); +__owur int SSL_get_domain_flags(const SSL *ssl, uint64_t *domain_flags); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +# ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +# endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + +# define SSL_VALUE_CLASS_GENERIC 0 +# define SSL_VALUE_CLASS_FEATURE_REQUEST 1 +# define SSL_VALUE_CLASS_FEATURE_PEER_REQUEST 2 +# define SSL_VALUE_CLASS_FEATURE_NEGOTIATED 3 + +# define SSL_VALUE_NONE 0 +# define SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL 1 +# define SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL 2 +# define SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL 3 +# define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL 4 +# define SSL_VALUE_QUIC_IDLE_TIMEOUT 5 +# define SSL_VALUE_EVENT_HANDLING_MODE 6 +# define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7 +# define SSL_VALUE_STREAM_WRITE_BUF_USED 8 +# define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9 + +# define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0 +# define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1 +# define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT 2 + +int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v); +int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v); + +# define SSL_get_generic_value_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_set_generic_value_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_get_feature_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_set_feature_request_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_get_feature_peer_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, (id), (v)) +# define SSL_get_feature_negotiated_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_NEGOTIATED, (id), (v)) + +# define SSL_get_quic_stream_bidi_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_bidi_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, \ + (value)) + +# define SSL_get_event_handling_mode(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) +# define SSL_set_event_handling_mode(ssl, value) \ + SSL_set_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) + +# define SSL_get_stream_write_buf_size(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_SIZE, \ + (value)) +# define SSL_get_stream_write_buf_used(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_USED, \ + (value)) +# define SSL_get_stream_write_buf_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_AVAIL, \ + (value)) + +# define SSL_POLL_EVENT_NONE 0 + +# define SSL_POLL_EVENT_F (1U << 0) /* F (Failure) */ +# define SSL_POLL_EVENT_EL (1U << 1) /* EL (Exception on Listener) */ +# define SSL_POLL_EVENT_EC (1U << 2) /* EC (Exception on Conn) */ +# define SSL_POLL_EVENT_ECD (1U << 3) /* ECD (Exception on Conn Drained) */ +# define SSL_POLL_EVENT_ER (1U << 4) /* ER (Exception on Read) */ +# define SSL_POLL_EVENT_EW (1U << 5) /* EW (Exception on Write) */ +# define SSL_POLL_EVENT_R (1U << 6) /* R (Readable) */ +# define SSL_POLL_EVENT_W (1U << 7) /* W (Writable) */ +# define SSL_POLL_EVENT_IC (1U << 8) /* IC (Incoming Connection) */ +# define SSL_POLL_EVENT_ISB (1U << 9) /* ISB (Incoming Stream: Bidi) */ +# define SSL_POLL_EVENT_ISU (1U << 10) /* ISU (Incoming Stream: Uni) */ +# define SSL_POLL_EVENT_OSB (1U << 11) /* OSB (Outgoing Stream: Bidi) */ +# define SSL_POLL_EVENT_OSU (1U << 12) /* OSU (Outgoing Stream: Uni) */ + +# define SSL_POLL_EVENT_RW (SSL_POLL_EVENT_R | SSL_POLL_EVENT_W) +# define SSL_POLL_EVENT_RE (SSL_POLL_EVENT_R | SSL_POLL_EVENT_ER) +# define SSL_POLL_EVENT_WE (SSL_POLL_EVENT_W | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_RWE (SSL_POLL_EVENT_RE | SSL_POLL_EVENT_WE) +# define SSL_POLL_EVENT_E (SSL_POLL_EVENT_EL | SSL_POLL_EVENT_EC \ + | SSL_POLL_EVENT_ER | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_IS (SSL_POLL_EVENT_ISB | SSL_POLL_EVENT_ISU) +# define SSL_POLL_EVENT_ISE (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_EC) +# define SSL_POLL_EVENT_I (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_IC) +# define SSL_POLL_EVENT_OS (SSL_POLL_EVENT_OSB | SSL_POLL_EVENT_OSU) +# define SSL_POLL_EVENT_OSE (SSL_POLL_EVENT_OS | SSL_POLL_EVENT_EC) + +typedef struct ssl_poll_item_st { + BIO_POLL_DESCRIPTOR desc; + uint64_t events, revents; +} SSL_POLL_ITEM; + +# define SSL_POLL_FLAG_NO_HANDLE_EVENTS (1U << 0) + +__owur int SSL_poll(SSL_POLL_ITEM *items, + size_t num_items, + size_t stride, + const struct timeval *timeout, + uint64_t flags, + size_t *result_count); + +static ossl_inline ossl_unused BIO_POLL_DESCRIPTOR +SSL_as_poll_descriptor(SSL *s) +{ + BIO_POLL_DESCRIPTOR d; + + d.type = BIO_POLL_DESCRIPTOR_TYPE_SSL; + d.value.ssl = s; + return d; +} + # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define SSL_cache_hit(s) SSL_session_reused(s) # endif @@ -2593,6 +2882,51 @@ void SSL_set_allow_early_data_cb(SSL *s, const char *OSSL_default_cipher_list(void); const char *OSSL_default_ciphersuites(void); +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + +/* + * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used. + */ +# define OSSL_RECORD_PROTECTION_LEVEL_NONE 0 +# define OSSL_RECORD_PROTECTION_LEVEL_EARLY 1 +# define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE 2 +# define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3 + +int SSL_set_quic_tls_cbs(SSL *s, const OSSL_DISPATCH *qtdis, void *arg); +int SSL_set_quic_tls_transport_params(SSL *s, + const unsigned char *params, + size_t params_len); + +int SSL_set_quic_tls_early_data_enabled(SSL *s, int enabled); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/x509.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/x509.h index 1f7755e5b69c75..d013458c226461 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/x509.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/x509.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -40,6 +40,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -162,16 +165,24 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) # define X509_FILETYPE_ASN1 2 # define X509_FILETYPE_DEFAULT 3 -# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 -# define X509v3_KU_NON_REPUDIATION 0x0040 -# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 -# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 -# define X509v3_KU_KEY_AGREEMENT 0x0008 -# define X509v3_KU_KEY_CERT_SIGN 0x0004 -# define X509v3_KU_CRL_SIGN 0x0002 -# define X509v3_KU_ENCIPHER_ONLY 0x0001 -# define X509v3_KU_DECIPHER_ONLY 0x8000 -# define X509v3_KU_UNDEF 0xffff +/*- + * : + * The KeyUsage BITSTRING is treated as a little-endian integer, hence bit `0` + * is 0x80, while bit `7` is 0x01 (the LSB of the integer value), bit `8` is + * then the MSB of the second octet, or 0x8000. + */ +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 /* (0) */ +# define X509v3_KU_NON_REPUDIATION 0x0040 /* (1) */ +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 /* (2) */ +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 /* (3) */ +# define X509v3_KU_KEY_AGREEMENT 0x0008 /* (4) */ +# define X509v3_KU_KEY_CERT_SIGN 0x0004 /* (5) */ +# define X509v3_KU_CRL_SIGN 0x0002 /* (6) */ +# define X509v3_KU_ENCIPHER_ONLY 0x0001 /* (7) */ +# define X509v3_KU_DECIPHER_ONLY 0x8000 /* (8) */ +# ifndef OPENSSL_NO_DEPRECATED_3_4 +# define X509v3_KU_UNDEF 0xffff /* vestigial, not used */ +# endif struct X509_algor_st { ASN1_OBJECT *algorithm; @@ -462,7 +473,12 @@ typedef struct PBKDF2PARAM_st { X509_ALGOR *prf; } PBKDF2PARAM; -#ifndef OPENSSL_NO_SCRYPT +typedef struct { + X509_ALGOR *keyDerivationFunc; + X509_ALGOR *messageAuthScheme; +} PBMAC1PARAM; + +# ifndef OPENSSL_NO_SCRYPT typedef struct SCRYPT_PARAMS_st { ASN1_OCTET_STRING *salt; ASN1_INTEGER *costParameter; @@ -470,7 +486,7 @@ typedef struct SCRYPT_PARAMS_st { ASN1_INTEGER *parallelizationParameter; ASN1_INTEGER *keyLength; } SCRYPT_PARAMS; -#endif +# endif #ifdef __cplusplus } @@ -603,6 +619,8 @@ EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); # endif @@ -651,6 +669,8 @@ EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); DECLARE_ASN1_DUP_FUNCTION(X509) @@ -884,12 +904,12 @@ int X509_REQ_get_signature_nid(const X509_REQ *req); int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); -EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); int X509_REQ_extension_nid(int nid); int *X509_REQ_get_extension_nids(void); void X509_REQ_set_extension_nids(int *nids); -STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(OSSL_FUTURE_CONST X509_REQ *req); int X509_REQ_add_extensions_nid(X509_REQ *req, const STACK_OF(X509_EXTENSION) *exts, int nid); int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); @@ -950,13 +970,14 @@ X509_REVOKED_get0_extensions(const X509_REVOKED *r); X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); -int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); -int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey); +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); int X509_chain_check_suiteb(int *perror_depth, X509 *x, STACK_OF(X509) *chain, unsigned long flags); int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); @@ -1077,6 +1098,8 @@ X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, X509_EXTENSION *ex, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_extensions(STACK_OF(X509_EXTENSION) **target, + const STACK_OF(X509_EXTENSION) *exts); int X509_get_ext_count(const X509 *x); int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); @@ -1198,9 +1221,10 @@ X509 *X509_find_by_subject(STACK_OF(X509) *sk, const X509_NAME *name); DECLARE_ASN1_FUNCTIONS(PBEPARAM) DECLARE_ASN1_FUNCTIONS(PBE2PARAM) DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) -#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(PBMAC1PARAM) +# ifndef OPENSSL_NO_SCRYPT DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) -#endif +# endif int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, const unsigned char *salt, int saltlen); @@ -1237,6 +1261,7 @@ X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, int prf_nid, int keylen, OSSL_LIB_CTX *libctx); +PBKDF2PARAM *PBMAC1_get1_pbkdf2_param(const X509_ALGOR *macalg); /* PKCS#8 utilities */ DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) @@ -1262,6 +1287,8 @@ int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len); +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, int ptype, void *pval, unsigned char *penc, int penclen); diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/x509_acert.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/x509_acert.h new file mode 100644 index 00000000000000..9dde625677f9a9 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/x509_acert.h @@ -0,0 +1,294 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/x509_acert.h.in + * + * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_X509_ACERT_H +# define OPENSSL_X509_ACERT_H +# pragma once + +# include +# include +# include + +typedef struct X509_acert_st X509_ACERT; +typedef struct X509_acert_info_st X509_ACERT_INFO; +typedef struct ossl_object_digest_info_st OSSL_OBJECT_DIGEST_INFO; +typedef struct ossl_issuer_serial_st OSSL_ISSUER_SERIAL; +typedef struct X509_acert_issuer_v2form_st X509_ACERT_ISSUER_V2FORM; + +DECLARE_ASN1_FUNCTIONS(X509_ACERT) +DECLARE_ASN1_DUP_FUNCTION(X509_ACERT) +DECLARE_ASN1_ITEM(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_OBJECT_DIGEST_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_ISSUER_SERIAL) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_ISSUER_V2FORM) + +# ifndef OPENSSL_NO_STDIO +X509_ACERT *d2i_X509_ACERT_fp(FILE *fp, X509_ACERT **acert); +int i2d_X509_ACERT_fp(FILE *fp, const X509_ACERT *acert); +# endif + +DECLARE_PEM_rw(X509_ACERT, X509_ACERT) + +X509_ACERT *d2i_X509_ACERT_bio(BIO *bp, X509_ACERT **acert); +int i2d_X509_ACERT_bio(BIO *bp, const X509_ACERT *acert); + +int X509_ACERT_sign(X509_ACERT *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_ACERT_sign_ctx(X509_ACERT *x, EVP_MD_CTX *ctx); +int X509_ACERT_verify(X509_ACERT *a, EVP_PKEY *r); + +# define X509_ACERT_VERSION_2 1 + +const GENERAL_NAMES *X509_ACERT_get0_holder_entityName(const X509_ACERT *x); +const OSSL_ISSUER_SERIAL *X509_ACERT_get0_holder_baseCertId(const X509_ACERT *x); +const OSSL_OBJECT_DIGEST_INFO * X509_ACERT_get0_holder_digest(const X509_ACERT *x); +const X509_NAME *X509_ACERT_get0_issuerName(const X509_ACERT *x); +long X509_ACERT_get_version(const X509_ACERT *x); +void X509_ACERT_get0_signature(const X509_ACERT *x, + const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_ACERT_get_signature_nid(const X509_ACERT *x); +const X509_ALGOR *X509_ACERT_get0_info_sigalg(const X509_ACERT *x); +const ASN1_INTEGER *X509_ACERT_get0_serialNumber(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notBefore(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notAfter(const X509_ACERT *x); +const ASN1_BIT_STRING *X509_ACERT_get0_issuerUID(const X509_ACERT *x); + +int X509_ACERT_print(BIO *bp, X509_ACERT *x); +int X509_ACERT_print_ex(BIO *bp, X509_ACERT *x, unsigned long nmflags, + unsigned long cflag); + +int X509_ACERT_get_attr_count(const X509_ACERT *x); +int X509_ACERT_get_attr_by_NID(const X509_ACERT *x, int nid, int lastpos); +int X509_ACERT_get_attr_by_OBJ(const X509_ACERT *x, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_ACERT_get_attr(const X509_ACERT *x, int loc); +X509_ATTRIBUTE *X509_ACERT_delete_attr(X509_ACERT *x, int loc); + +void *X509_ACERT_get_ext_d2i(const X509_ACERT *x, int nid, int *crit, int *idx); +int X509_ACERT_add1_ext_i2d(X509_ACERT *x, int nid, void *value, int crit, + unsigned long flags); +const STACK_OF(X509_EXTENSION) *X509_ACERT_get0_extensions(const X509_ACERT *x); + +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY 0 +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY_CERT 1 +# define OSSL_OBJECT_DIGEST_INFO_OTHER 2 /* must not be used in RFC 5755 profile */ +int X509_ACERT_set_version(X509_ACERT *x, long version); +void X509_ACERT_set0_holder_entityName(X509_ACERT *x, GENERAL_NAMES *name); +void X509_ACERT_set0_holder_baseCertId(X509_ACERT *x, OSSL_ISSUER_SERIAL *isss); +void X509_ACERT_set0_holder_digest(X509_ACERT *x, + OSSL_OBJECT_DIGEST_INFO *dinfo); + +int X509_ACERT_add1_attr(X509_ACERT *x, X509_ATTRIBUTE *attr); +int X509_ACERT_add1_attr_by_OBJ(X509_ACERT *x, const ASN1_OBJECT *obj, + int type, const void *bytes, int len); +int X509_ACERT_add1_attr_by_NID(X509_ACERT *x, int nid, int type, + const void *bytes, int len); +int X509_ACERT_add1_attr_by_txt(X509_ACERT *x, const char *attrname, int type, + const unsigned char *bytes, int len); +int X509_ACERT_add_attr_nconf(CONF *conf, const char *section, + X509_ACERT *acert); + +int X509_ACERT_set1_issuerName(X509_ACERT *x, const X509_NAME *name); +int X509_ACERT_set1_serialNumber(X509_ACERT *x, const ASN1_INTEGER *serial); +int X509_ACERT_set1_notBefore(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); +int X509_ACERT_set1_notAfter(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); + +void OSSL_OBJECT_DIGEST_INFO_get0_digest(const OSSL_OBJECT_DIGEST_INFO *o, + int *digestedObjectType, + const X509_ALGOR **digestAlgorithm, + const ASN1_BIT_STRING **digest); + +int OSSL_OBJECT_DIGEST_INFO_set1_digest(OSSL_OBJECT_DIGEST_INFO *o, + int digestedObjectType, + X509_ALGOR *digestAlgorithm, + ASN1_BIT_STRING *digest); + +const X509_NAME *OSSL_ISSUER_SERIAL_get0_issuer(const OSSL_ISSUER_SERIAL *isss); +const ASN1_INTEGER *OSSL_ISSUER_SERIAL_get0_serial(const OSSL_ISSUER_SERIAL *isss); +const ASN1_BIT_STRING *OSSL_ISSUER_SERIAL_get0_issuerUID(const OSSL_ISSUER_SERIAL *isss); + +int OSSL_ISSUER_SERIAL_set1_issuer(OSSL_ISSUER_SERIAL *isss, + const X509_NAME *issuer); +int OSSL_ISSUER_SERIAL_set1_serial(OSSL_ISSUER_SERIAL *isss, + const ASN1_INTEGER *serial); +int OSSL_ISSUER_SERIAL_set1_issuerUID(OSSL_ISSUER_SERIAL *isss, + const ASN1_BIT_STRING *uid); + +# define OSSL_IETFAS_OCTETS 0 +# define OSSL_IETFAS_OID 1 +# define OSSL_IETFAS_STRING 2 + +typedef struct OSSL_IETF_ATTR_SYNTAX_VALUE_st OSSL_IETF_ATTR_SYNTAX_VALUE; +typedef struct OSSL_IETF_ATTR_SYNTAX_st OSSL_IETF_ATTR_SYNTAX; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_value(sk, idx) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new(cmp) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_null() ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (n)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete(sk, i) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (i))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete_ptr(sk, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_pop(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_shift(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_shift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk),ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), (idx)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set(sk, idx, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_set(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), pnum) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_dup(sk) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_copyfunc_type(copyfunc), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set_cmp_func(sk, cmp) ((sk_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) + + +DECLARE_ASN1_ITEM(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX) + +const GENERAL_NAMES * +OSSL_IETF_ATTR_SYNTAX_get0_policyAuthority(const OSSL_IETF_ATTR_SYNTAX *a); +void OSSL_IETF_ATTR_SYNTAX_set0_policyAuthority(OSSL_IETF_ATTR_SYNTAX *a, + GENERAL_NAMES *names); + +int OSSL_IETF_ATTR_SYNTAX_get_value_num(const OSSL_IETF_ATTR_SYNTAX *a); +void *OSSL_IETF_ATTR_SYNTAX_get0_value(const OSSL_IETF_ATTR_SYNTAX *a, + int ind, int *type); +int OSSL_IETF_ATTR_SYNTAX_add1_value(OSSL_IETF_ATTR_SYNTAX *a, int type, + void *data); +int OSSL_IETF_ATTR_SYNTAX_print(BIO *bp, OSSL_IETF_ATTR_SYNTAX *a, int indent); + +struct TARGET_CERT_st { + OSSL_ISSUER_SERIAL *targetCertificate; + GENERAL_NAME *targetName; + OSSL_OBJECT_DIGEST_INFO *certDigestInfo; +}; + +typedef struct TARGET_CERT_st OSSL_TARGET_CERT; + +# define OSSL_TGT_TARGET_NAME 0 +# define OSSL_TGT_TARGET_GROUP 1 +# define OSSL_TGT_TARGET_CERT 2 + +typedef struct TARGET_st { + int type; + union { + GENERAL_NAME *targetName; + GENERAL_NAME *targetGroup; + OSSL_TARGET_CERT *targetCert; + } choice; +} OSSL_TARGET; + +typedef STACK_OF(OSSL_TARGET) OSSL_TARGETS; +typedef STACK_OF(OSSL_TARGETS) OSSL_TARGETING_INFORMATION; + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGET, OSSL_TARGET, OSSL_TARGET) +#define sk_OSSL_TARGET_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_value(sk, idx) ((OSSL_TARGET *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGET_sk_type(sk), (idx))) +#define sk_OSSL_TARGET_new(cmp) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new(ossl_check_OSSL_TARGET_compfunc_type(cmp))) +#define sk_OSSL_TARGET_new_null() ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGET_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGET_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGET_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGET_sk_type(sk), (n)) +#define sk_OSSL_TARGET_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_delete(sk, i) ((OSSL_TARGET *)OPENSSL_sk_delete(ossl_check_OSSL_TARGET_sk_type(sk), (i))) +#define sk_OSSL_TARGET_delete_ptr(sk, ptr) ((OSSL_TARGET *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_pop(sk) ((OSSL_TARGET *)OPENSSL_sk_pop(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_shift(sk) ((OSSL_TARGET *)OPENSSL_sk_shift(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGET_sk_type(sk),ossl_check_OSSL_TARGET_freefunc_type(freefunc)) +#define sk_OSSL_TARGET_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), (idx)) +#define sk_OSSL_TARGET_set(sk, idx, ptr) ((OSSL_TARGET *)OPENSSL_sk_set(ossl_check_OSSL_TARGET_sk_type(sk), (idx), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), pnum) +#define sk_OSSL_TARGET_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_dup(sk) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_copyfunc_type(copyfunc), ossl_check_OSSL_TARGET_freefunc_type(freefunc))) +#define sk_OSSL_TARGET_set_cmp_func(sk, cmp) ((sk_OSSL_TARGET_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGETS, OSSL_TARGETS, OSSL_TARGETS) +#define sk_OSSL_TARGETS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_value(sk, idx) ((OSSL_TARGETS *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGETS_sk_type(sk), (idx))) +#define sk_OSSL_TARGETS_new(cmp) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new(ossl_check_OSSL_TARGETS_compfunc_type(cmp))) +#define sk_OSSL_TARGETS_new_null() ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGETS_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGETS_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGETS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGETS_sk_type(sk), (n)) +#define sk_OSSL_TARGETS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_delete(sk, i) ((OSSL_TARGETS *)OPENSSL_sk_delete(ossl_check_OSSL_TARGETS_sk_type(sk), (i))) +#define sk_OSSL_TARGETS_delete_ptr(sk, ptr) ((OSSL_TARGETS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_pop(sk) ((OSSL_TARGETS *)OPENSSL_sk_pop(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_shift(sk) ((OSSL_TARGETS *)OPENSSL_sk_shift(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGETS_sk_type(sk),ossl_check_OSSL_TARGETS_freefunc_type(freefunc)) +#define sk_OSSL_TARGETS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), (idx)) +#define sk_OSSL_TARGETS_set(sk, idx, ptr) ((OSSL_TARGETS *)OPENSSL_sk_set(ossl_check_OSSL_TARGETS_sk_type(sk), (idx), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), pnum) +#define sk_OSSL_TARGETS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_dup(sk) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_copyfunc_type(copyfunc), ossl_check_OSSL_TARGETS_freefunc_type(freefunc))) +#define sk_OSSL_TARGETS_set_cmp_func(sk, cmp) ((sk_OSSL_TARGETS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_compfunc_type(cmp))) + + +DECLARE_ASN1_FUNCTIONS(OSSL_TARGET) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETS) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETING_INFORMATION) + +typedef STACK_OF(OSSL_ISSUER_SERIAL) OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL) +#define sk_OSSL_ISSUER_SERIAL_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_value(sk, idx) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_value(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), (idx))) +#define sk_OSSL_ISSUER_SERIAL_new(cmp) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) +#define sk_OSSL_ISSUER_SERIAL_new_null() ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ISSUER_SERIAL_new_reserve(cmp, n) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp), (n))) +#define sk_OSSL_ISSUER_SERIAL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (n)) +#define sk_OSSL_ISSUER_SERIAL_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_delete(sk, i) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (i))) +#define sk_OSSL_ISSUER_SERIAL_delete_ptr(sk, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_pop(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_pop(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_shift(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_shift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk),ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc)) +#define sk_OSSL_ISSUER_SERIAL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), (idx)) +#define sk_OSSL_ISSUER_SERIAL_set(sk, idx, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_set(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (idx), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), pnum) +#define sk_OSSL_ISSUER_SERIAL_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_dup(sk) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_copyfunc_type(copyfunc), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc))) +#define sk_OSSL_ISSUER_SERIAL_set_cmp_func(sk, cmp) ((sk_OSSL_ISSUER_SERIAL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) + + +#endif diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/x509_vfy.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/x509_vfy.h index 29b0e147adcab1..c9bdc3b39d685d 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/x509_vfy.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/x509_vfy.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509_vfy.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -411,6 +411,7 @@ X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ # define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 # define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 # define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +# define X509_V_ERR_RPK_UNTRUSTED 95 /* Certificate verify flags */ # ifndef OPENSSL_NO_DEPRECATED_1_1_0 @@ -491,71 +492,72 @@ int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); X509_STORE *X509_STORE_new(void); -void X509_STORE_free(X509_STORE *v); -int X509_STORE_lock(X509_STORE *ctx); -int X509_STORE_unlock(X509_STORE *ctx); -int X509_STORE_up_ref(X509_STORE *v); -STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *v); -STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *st); -STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get1_objects(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, const X509_NAME *nm); STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, const X509_NAME *nm); -int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); -int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); -int X509_STORE_set_trust(X509_STORE *ctx, int trust); -int X509_STORE_set1_param(X509_STORE *ctx, const X509_VERIFY_PARAM *pm); -X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *ctx); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); -void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); #define X509_STORE_set_verify_func(ctx, func) \ X509_STORE_set_verify((ctx),(func)) void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, X509_STORE_CTX_verify_fn verify); -X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *ctx); -void X509_STORE_set_verify_cb(X509_STORE *ctx, +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, X509_STORE_CTX_verify_cb verify_cb); # define X509_STORE_set_verify_cb_func(ctx,func) \ X509_STORE_set_verify_cb((ctx),(func)) -X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *ctx); -void X509_STORE_set_get_issuer(X509_STORE *ctx, +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, X509_STORE_CTX_get_issuer_fn get_issuer); -X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *ctx); -void X509_STORE_set_check_issued(X509_STORE *ctx, +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, X509_STORE_CTX_check_issued_fn check_issued); -X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *ctx); -void X509_STORE_set_check_revocation(X509_STORE *ctx, +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, X509_STORE_CTX_check_revocation_fn check_revocation); X509_STORE_CTX_check_revocation_fn - X509_STORE_get_check_revocation(const X509_STORE *ctx); -void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, X509_STORE_CTX_get_crl_fn get_crl); -X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *ctx); -void X509_STORE_set_check_crl(X509_STORE *ctx, +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, X509_STORE_CTX_check_crl_fn check_crl); -X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *ctx); -void X509_STORE_set_cert_crl(X509_STORE *ctx, +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, X509_STORE_CTX_cert_crl_fn cert_crl); -X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *ctx); -void X509_STORE_set_check_policy(X509_STORE *ctx, +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, X509_STORE_CTX_check_policy_fn check_policy); -X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *ctx); -void X509_STORE_set_lookup_certs(X509_STORE *ctx, +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, X509_STORE_CTX_lookup_certs_fn lookup_certs); -X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *ctx); -void X509_STORE_set_lookup_crls(X509_STORE *ctx, +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, X509_STORE_CTX_lookup_crls_fn lookup_crls); #define X509_STORE_set_lookup_crls_cb(ctx, func) \ X509_STORE_set_lookup_crls((ctx), (func)) -X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *ctx); -void X509_STORE_set_cleanup(X509_STORE *ctx, +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, X509_STORE_CTX_cleanup_fn cleanup); -X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); #define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) -int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); -void *X509_STORE_get_ex_data(const X509_STORE *ctx, int idx); +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); X509_STORE_CTX *X509_STORE_CTX_new(void); @@ -565,11 +567,14 @@ int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); void X509_STORE_CTX_free(X509_STORE_CTX *ctx); int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY* rpk); void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, @@ -579,6 +584,8 @@ X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); @@ -600,7 +607,7 @@ X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); # define X509_STORE_get1_crl X509_STORE_CTX_get1_crls #endif -X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); X509_LOOKUP_METHOD *X509_LOOKUP_file(void); X509_LOOKUP_METHOD *X509_LOOKUP_store(void); @@ -685,8 +692,8 @@ X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( const X509_LOOKUP_METHOD *method); -int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); -int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, @@ -730,23 +737,21 @@ void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); -int X509_STORE_load_file(X509_STORE *ctx, const char *file); -int X509_STORE_load_path(X509_STORE *ctx, const char *path); -int X509_STORE_load_store(X509_STORE *ctx, const char *store); -int X509_STORE_load_locations(X509_STORE *ctx, - const char *file, - const char *dir); -int X509_STORE_set_default_paths(X509_STORE *ctx); +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); -int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file, +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_store_ex(X509_STORE *ctx, const char *store, +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file, - const char *dir, OSSL_LIB_CTX *libctx, - const char *propq); -int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OSSL_LIB_CTX *libctx, - const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); #define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) @@ -764,6 +769,7 @@ X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); @@ -773,6 +779,8 @@ int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); @@ -804,6 +812,7 @@ int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, unsigned long flags); unsigned long X509_VERIFY_PARAM_get_flags(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_get_purpose(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/x509v3.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/x509v3.h index 20b67455f2061d..b8dabac35a4915 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/x509v3.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/x509v3.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509v3.h.in * - * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -146,6 +149,11 @@ typedef struct BASIC_CONSTRAINTS_st { ASN1_INTEGER *pathlen; } BASIC_CONSTRAINTS; +typedef struct OSSL_BASIC_ATTR_CONSTRAINTS_st { + int authority; + ASN1_INTEGER *pathlen; +} OSSL_BASIC_ATTR_CONSTRAINTS; + typedef struct PKEY_USAGE_PERIOD_st { ASN1_GENERALIZEDTIME *notBefore; ASN1_GENERALIZEDTIME *notAfter; @@ -198,6 +206,8 @@ typedef struct ACCESS_DESCRIPTION_st { GENERAL_NAME *location; } ACCESS_DESCRIPTION; +int GENERAL_NAME_set1_X509_NAME(GENERAL_NAME **tgt, const X509_NAME *src); + SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) #define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) #define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) @@ -294,6 +304,7 @@ typedef struct DIST_POINT_NAME_st { /* If relativename then this contains the full distribution point name */ X509_NAME *dpname; } DIST_POINT_NAME; +DECLARE_ASN1_DUP_FUNCTION(DIST_POINT_NAME) /* All existing reasons */ # define CRLDP_ALL_REASONS 0x807f @@ -659,15 +670,16 @@ struct ISSUING_DIST_POINT_st { # define EXFLAG_SAN_CRITICAL 0x80000 # define EXFLAG_NO_FINGERPRINT 0x100000 -# define KU_DIGITAL_SIGNATURE 0x0080 -# define KU_NON_REPUDIATION 0x0040 -# define KU_KEY_ENCIPHERMENT 0x0020 -# define KU_DATA_ENCIPHERMENT 0x0010 -# define KU_KEY_AGREEMENT 0x0008 -# define KU_KEY_CERT_SIGN 0x0004 -# define KU_CRL_SIGN 0x0002 -# define KU_ENCIPHER_ONLY 0x0001 -# define KU_DECIPHER_ONLY 0x8000 +/* https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3 */ +# define KU_DIGITAL_SIGNATURE X509v3_KU_DIGITAL_SIGNATURE +# define KU_NON_REPUDIATION X509v3_KU_NON_REPUDIATION +# define KU_KEY_ENCIPHERMENT X509v3_KU_KEY_ENCIPHERMENT +# define KU_DATA_ENCIPHERMENT X509v3_KU_DATA_ENCIPHERMENT +# define KU_KEY_AGREEMENT X509v3_KU_KEY_AGREEMENT +# define KU_KEY_CERT_SIGN X509v3_KU_KEY_CERT_SIGN +# define KU_CRL_SIGN X509v3_KU_CRL_SIGN +# define KU_ENCIPHER_ONLY X509v3_KU_ENCIPHER_ONLY +# define KU_DECIPHER_ONLY X509v3_KU_DECIPHER_ONLY # define NS_SSL_CLIENT 0x80 # define NS_SSL_SERVER 0x40 @@ -729,7 +741,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) #define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) - +# define X509_PURPOSE_DEFAULT_ANY 0 # define X509_PURPOSE_SSL_CLIENT 1 # define X509_PURPOSE_SSL_SERVER 2 # define X509_PURPOSE_NS_SSL_SERVER 3 @@ -739,9 +751,10 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509_PURPOSE_ANY 7 # define X509_PURPOSE_OCSP_HELPER 8 # define X509_PURPOSE_TIMESTAMP_SIGN 9 +# define X509_PURPOSE_CODE_SIGN 10 # define X509_PURPOSE_MIN 1 -# define X509_PURPOSE_MAX 9 +# define X509_PURPOSE_MAX 10 /* Flags for X509V3_EXT_print() */ @@ -767,6 +780,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509V3_ADD_SILENT 0x10 DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) +DECLARE_ASN1_FUNCTIONS(OSSL_BASIC_ATTR_CONSTRAINTS) DECLARE_ASN1_FUNCTIONS(SXNET) DECLARE_ASN1_FUNCTIONS(SXNETID) @@ -976,7 +990,6 @@ int X509V3_extensions_print(BIO *out, const char *title, int X509_check_ca(X509 *x); int X509_check_purpose(X509 *x, int id, int ca); int X509_supported_extension(X509_EXTENSION *ex); -int X509_PURPOSE_set(int *p, int purpose); int X509_check_issued(X509 *issuer, X509 *subject); int X509_check_akid(const X509 *issuer, const AUTHORITY_KEYID *akid); void X509_set_proxy_flag(X509 *x); @@ -992,22 +1005,26 @@ const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); int X509_PURPOSE_get_count(void); -X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_unused_id(OSSL_LIB_CTX *libctx); int X509_PURPOSE_get_by_sname(const char *sname); int X509_PURPOSE_get_by_id(int id); int X509_PURPOSE_add(int id, int trust, int flags, int (*ck) (const X509_PURPOSE *, const X509 *, int), const char *name, const char *sname, void *arg); +void X509_PURPOSE_cleanup(void); + +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_id(const X509_PURPOSE *); char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); -void X509_PURPOSE_cleanup(void); -int X509_PURPOSE_get_id(const X509_PURPOSE *); +int X509_PURPOSE_set(int *p, int purpose); STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); + /* Flags for X509_check_* functions */ /* @@ -1444,6 +1461,507 @@ const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( void PROFESSION_INFO_set0_registrationNumber( PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); +int OSSL_GENERAL_NAMES_print(BIO *out, GENERAL_NAMES *gens, int indent); + +typedef STACK_OF(X509_ATTRIBUTE) OSSL_ATTRIBUTES_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTES_SYNTAX) + +typedef STACK_OF(USERNOTICE) OSSL_USER_NOTICE_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_USER_NOTICE_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(USERNOTICE, USERNOTICE, USERNOTICE) +#define sk_USERNOTICE_num(sk) OPENSSL_sk_num(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_value(sk, idx) ((USERNOTICE *)OPENSSL_sk_value(ossl_check_const_USERNOTICE_sk_type(sk), (idx))) +#define sk_USERNOTICE_new(cmp) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new(ossl_check_USERNOTICE_compfunc_type(cmp))) +#define sk_USERNOTICE_new_null() ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_null()) +#define sk_USERNOTICE_new_reserve(cmp, n) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_reserve(ossl_check_USERNOTICE_compfunc_type(cmp), (n))) +#define sk_USERNOTICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_USERNOTICE_sk_type(sk), (n)) +#define sk_USERNOTICE_free(sk) OPENSSL_sk_free(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_zero(sk) OPENSSL_sk_zero(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_delete(sk, i) ((USERNOTICE *)OPENSSL_sk_delete(ossl_check_USERNOTICE_sk_type(sk), (i))) +#define sk_USERNOTICE_delete_ptr(sk, ptr) ((USERNOTICE *)OPENSSL_sk_delete_ptr(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_pop(sk) ((USERNOTICE *)OPENSSL_sk_pop(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_shift(sk) ((USERNOTICE *)OPENSSL_sk_shift(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_USERNOTICE_sk_type(sk),ossl_check_USERNOTICE_freefunc_type(freefunc)) +#define sk_USERNOTICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), (idx)) +#define sk_USERNOTICE_set(sk, idx, ptr) ((USERNOTICE *)OPENSSL_sk_set(ossl_check_USERNOTICE_sk_type(sk), (idx), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), pnum) +#define sk_USERNOTICE_sort(sk) OPENSSL_sk_sort(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_dup(sk) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_dup(ossl_check_const_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_deep_copy(ossl_check_const_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_copyfunc_type(copyfunc), ossl_check_USERNOTICE_freefunc_type(freefunc))) +#define sk_USERNOTICE_set_cmp_func(sk, cmp) ((sk_USERNOTICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_compfunc_type(cmp))) + + +typedef struct OSSL_ROLE_SPEC_CERT_ID_st { + GENERAL_NAME *roleName; + GENERAL_NAME *roleCertIssuer; + ASN1_INTEGER *roleCertSerialNumber; + GENERAL_NAMES *roleCertLocator; +} OSSL_ROLE_SPEC_CERT_ID; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID) +#define sk_OSSL_ROLE_SPEC_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_value(sk, idx) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_value(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new(cmp) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_null() ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_reserve(cmp, n) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp), (n))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (n)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete(sk, i) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (i))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete_ptr(sk, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_pop(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_shift(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_shift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk),ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), (idx)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set(sk, idx, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_set(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), pnum) +#define sk_OSSL_ROLE_SPEC_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_dup(sk) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_copyfunc_type(copyfunc), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set_cmp_func(sk, cmp) ((sk_OSSL_ROLE_SPEC_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) + + +typedef STACK_OF(OSSL_ROLE_SPEC_CERT_ID) OSSL_ROLE_SPEC_CERT_ID_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID_SYNTAX) +typedef struct OSSL_HASH_st { + X509_ALGOR *algorithmIdentifier; + ASN1_BIT_STRING *hashValue; +} OSSL_HASH; + +typedef struct OSSL_INFO_SYNTAX_POINTER_st { + GENERAL_NAMES *name; + OSSL_HASH *hash; +} OSSL_INFO_SYNTAX_POINTER; + +# define OSSL_INFO_SYNTAX_TYPE_CONTENT 0 +# define OSSL_INFO_SYNTAX_TYPE_POINTER 1 + +typedef struct OSSL_INFO_SYNTAX_st { + int type; + union { + ASN1_STRING *content; + OSSL_INFO_SYNTAX_POINTER *pointer; + } choice; +} OSSL_INFO_SYNTAX; + +typedef struct OSSL_PRIVILEGE_POLICY_ID_st { + ASN1_OBJECT *privilegePolicy; + OSSL_INFO_SYNTAX *privPolSyntax; +} OSSL_PRIVILEGE_POLICY_ID; + +typedef struct OSSL_ATTRIBUTE_DESCRIPTOR_st { + ASN1_OBJECT *identifier; + ASN1_STRING *attributeSyntax; + ASN1_UTF8STRING *name; + ASN1_UTF8STRING *description; + OSSL_PRIVILEGE_POLICY_ID *dominationRule; +} OSSL_ATTRIBUTE_DESCRIPTOR; + +DECLARE_ASN1_FUNCTIONS(OSSL_HASH) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX_POINTER) +DECLARE_ASN1_FUNCTIONS(OSSL_PRIVILEGE_POLICY_ID) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_DESCRIPTOR) + +typedef struct OSSL_TIME_SPEC_ABSOLUTE_st { + ASN1_GENERALIZEDTIME *startTime; + ASN1_GENERALIZEDTIME *endTime; +} OSSL_TIME_SPEC_ABSOLUTE; + +typedef struct OSSL_DAY_TIME_st { + ASN1_INTEGER *hour; + ASN1_INTEGER *minute; + ASN1_INTEGER *second; +} OSSL_DAY_TIME; + +typedef struct OSSL_DAY_TIME_BAND_st { + OSSL_DAY_TIME *startDayTime; + OSSL_DAY_TIME *endDayTime; +} OSSL_DAY_TIME_BAND; + +# define OSSL_NAMED_DAY_TYPE_INT 0 +# define OSSL_NAMED_DAY_TYPE_BIT 1 +# define OSSL_NAMED_DAY_INT_SUN 1 +# define OSSL_NAMED_DAY_INT_MON 2 +# define OSSL_NAMED_DAY_INT_TUE 3 +# define OSSL_NAMED_DAY_INT_WED 4 +# define OSSL_NAMED_DAY_INT_THU 5 +# define OSSL_NAMED_DAY_INT_FRI 6 +# define OSSL_NAMED_DAY_INT_SAT 7 +# define OSSL_NAMED_DAY_BIT_SUN 0 +# define OSSL_NAMED_DAY_BIT_MON 1 +# define OSSL_NAMED_DAY_BIT_TUE 2 +# define OSSL_NAMED_DAY_BIT_WED 3 +# define OSSL_NAMED_DAY_BIT_THU 4 +# define OSSL_NAMED_DAY_BIT_FRI 5 +# define OSSL_NAMED_DAY_BIT_SAT 6 + +typedef struct OSSL_NAMED_DAY_st { + int type; + union { + ASN1_INTEGER *intNamedDays; + ASN1_BIT_STRING *bitNamedDays; + } choice; +} OSSL_NAMED_DAY; + +# define OSSL_TIME_SPEC_X_DAY_OF_FIRST 0 +# define OSSL_TIME_SPEC_X_DAY_OF_SECOND 1 +# define OSSL_TIME_SPEC_X_DAY_OF_THIRD 2 +# define OSSL_TIME_SPEC_X_DAY_OF_FOURTH 3 +# define OSSL_TIME_SPEC_X_DAY_OF_FIFTH 4 + +typedef struct OSSL_TIME_SPEC_X_DAY_OF_st { + int type; + union { + OSSL_NAMED_DAY *first; + OSSL_NAMED_DAY *second; + OSSL_NAMED_DAY *third; + OSSL_NAMED_DAY *fourth; + OSSL_NAMED_DAY *fifth; + } choice; +} OSSL_TIME_SPEC_X_DAY_OF; + +# define OSSL_TIME_SPEC_DAY_TYPE_INT 0 +# define OSSL_TIME_SPEC_DAY_TYPE_BIT 1 +# define OSSL_TIME_SPEC_DAY_TYPE_DAY_OF 2 +# define OSSL_TIME_SPEC_DAY_BIT_SUN 0 +# define OSSL_TIME_SPEC_DAY_BIT_MON 1 +# define OSSL_TIME_SPEC_DAY_BIT_TUE 2 +# define OSSL_TIME_SPEC_DAY_BIT_WED 3 +# define OSSL_TIME_SPEC_DAY_BIT_THU 4 +# define OSSL_TIME_SPEC_DAY_BIT_FRI 5 +# define OSSL_TIME_SPEC_DAY_BIT_SAT 6 +# define OSSL_TIME_SPEC_DAY_INT_SUN 1 +# define OSSL_TIME_SPEC_DAY_INT_MON 2 +# define OSSL_TIME_SPEC_DAY_INT_TUE 3 +# define OSSL_TIME_SPEC_DAY_INT_WED 4 +# define OSSL_TIME_SPEC_DAY_INT_THU 5 +# define OSSL_TIME_SPEC_DAY_INT_FRI 6 +# define OSSL_TIME_SPEC_DAY_INT_SAT 7 + +typedef struct OSSL_TIME_SPEC_DAY_st { + int type; + union { + STACK_OF(ASN1_INTEGER) *intDay; + ASN1_BIT_STRING *bitDay; + OSSL_TIME_SPEC_X_DAY_OF *dayOf; + } choice; +} OSSL_TIME_SPEC_DAY; + +# define OSSL_TIME_SPEC_WEEKS_TYPE_ALL 0 +# define OSSL_TIME_SPEC_WEEKS_TYPE_INT 1 +# define OSSL_TIME_SPEC_WEEKS_TYPE_BIT 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_1 0 +# define OSSL_TIME_SPEC_BIT_WEEKS_2 1 +# define OSSL_TIME_SPEC_BIT_WEEKS_3 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_4 3 +# define OSSL_TIME_SPEC_BIT_WEEKS_5 4 + +typedef struct OSSL_TIME_SPEC_WEEKS_st { + int type; + union { + ASN1_NULL *allWeeks; + STACK_OF(ASN1_INTEGER) *intWeek; + ASN1_BIT_STRING *bitWeek; + } choice; +} OSSL_TIME_SPEC_WEEKS; + +# define OSSL_TIME_SPEC_MONTH_TYPE_ALL 0 +# define OSSL_TIME_SPEC_MONTH_TYPE_INT 1 +# define OSSL_TIME_SPEC_MONTH_TYPE_BIT 2 +# define OSSL_TIME_SPEC_INT_MONTH_JAN 1 +# define OSSL_TIME_SPEC_INT_MONTH_FEB 2 +# define OSSL_TIME_SPEC_INT_MONTH_MAR 3 +# define OSSL_TIME_SPEC_INT_MONTH_APR 4 +# define OSSL_TIME_SPEC_INT_MONTH_MAY 5 +# define OSSL_TIME_SPEC_INT_MONTH_JUN 6 +# define OSSL_TIME_SPEC_INT_MONTH_JUL 7 +# define OSSL_TIME_SPEC_INT_MONTH_AUG 8 +# define OSSL_TIME_SPEC_INT_MONTH_SEP 9 +# define OSSL_TIME_SPEC_INT_MONTH_OCT 10 +# define OSSL_TIME_SPEC_INT_MONTH_NOV 11 +# define OSSL_TIME_SPEC_INT_MONTH_DEC 12 +# define OSSL_TIME_SPEC_BIT_MONTH_JAN 0 +# define OSSL_TIME_SPEC_BIT_MONTH_FEB 1 +# define OSSL_TIME_SPEC_BIT_MONTH_MAR 2 +# define OSSL_TIME_SPEC_BIT_MONTH_APR 3 +# define OSSL_TIME_SPEC_BIT_MONTH_MAY 4 +# define OSSL_TIME_SPEC_BIT_MONTH_JUN 5 +# define OSSL_TIME_SPEC_BIT_MONTH_JUL 6 +# define OSSL_TIME_SPEC_BIT_MONTH_AUG 7 +# define OSSL_TIME_SPEC_BIT_MONTH_SEP 8 +# define OSSL_TIME_SPEC_BIT_MONTH_OCT 9 +# define OSSL_TIME_SPEC_BIT_MONTH_NOV 10 +# define OSSL_TIME_SPEC_BIT_MONTH_DEC 11 + +typedef struct OSSL_TIME_SPEC_MONTH_st { + int type; + union { + ASN1_NULL *allMonths; + STACK_OF(ASN1_INTEGER) *intMonth; + ASN1_BIT_STRING *bitMonth; + } choice; +} OSSL_TIME_SPEC_MONTH; + +typedef struct OSSL_TIME_PERIOD_st { + STACK_OF(OSSL_DAY_TIME_BAND) *timesOfDay; + OSSL_TIME_SPEC_DAY *days; + OSSL_TIME_SPEC_WEEKS *weeks; + OSSL_TIME_SPEC_MONTH *months; + STACK_OF(ASN1_INTEGER) *years; +} OSSL_TIME_PERIOD; + +# define OSSL_TIME_SPEC_TIME_TYPE_ABSOLUTE 0 +# define OSSL_TIME_SPEC_TIME_TYPE_PERIODIC 1 + +typedef struct OSSL_TIME_SPEC_TIME_st { + int type; + union { + OSSL_TIME_SPEC_ABSOLUTE *absolute; + STACK_OF(OSSL_TIME_PERIOD) *periodic; + } choice; +} OSSL_TIME_SPEC_TIME; + +typedef struct OSSL_TIME_SPEC_st { + OSSL_TIME_SPEC_TIME *time; + ASN1_BOOLEAN notThisTime; + ASN1_INTEGER *timeZone; +} OSSL_TIME_SPEC; + +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME_BAND) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_WEEKS) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_MONTH) +DECLARE_ASN1_FUNCTIONS(OSSL_NAMED_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_X_DAY_OF) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_ABSOLUTE) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_PERIOD) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TIME_PERIOD, OSSL_TIME_PERIOD, OSSL_TIME_PERIOD) +#define sk_OSSL_TIME_PERIOD_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_value(sk, idx) ((OSSL_TIME_PERIOD *)OPENSSL_sk_value(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), (idx))) +#define sk_OSSL_TIME_PERIOD_new(cmp) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) +#define sk_OSSL_TIME_PERIOD_new_null() ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TIME_PERIOD_new_reserve(cmp, n) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp), (n))) +#define sk_OSSL_TIME_PERIOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (n)) +#define sk_OSSL_TIME_PERIOD_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_delete(sk, i) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (i))) +#define sk_OSSL_TIME_PERIOD_delete_ptr(sk, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_pop(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_pop(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_shift(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_shift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk),ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc)) +#define sk_OSSL_TIME_PERIOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), (idx)) +#define sk_OSSL_TIME_PERIOD_set(sk, idx, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_set(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (idx), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), pnum) +#define sk_OSSL_TIME_PERIOD_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_dup(sk) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_copyfunc_type(copyfunc), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc))) +#define sk_OSSL_TIME_PERIOD_set_cmp_func(sk, cmp) ((sk_OSSL_TIME_PERIOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND) +#define sk_OSSL_DAY_TIME_BAND_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_value(sk, idx) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_value(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), (idx))) +#define sk_OSSL_DAY_TIME_BAND_new(cmp) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) +#define sk_OSSL_DAY_TIME_BAND_new_null() ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_null()) +#define sk_OSSL_DAY_TIME_BAND_new_reserve(cmp, n) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp), (n))) +#define sk_OSSL_DAY_TIME_BAND_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (n)) +#define sk_OSSL_DAY_TIME_BAND_free(sk) OPENSSL_sk_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_delete(sk, i) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (i))) +#define sk_OSSL_DAY_TIME_BAND_delete_ptr(sk, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_pop(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_pop(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_shift(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_shift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk),ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc)) +#define sk_OSSL_DAY_TIME_BAND_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), (idx)) +#define sk_OSSL_DAY_TIME_BAND_set(sk, idx, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_set(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (idx), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), pnum) +#define sk_OSSL_DAY_TIME_BAND_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_dup(sk) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_dup(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_copyfunc_type(copyfunc), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc))) +#define sk_OSSL_DAY_TIME_BAND_set_cmp_func(sk, cmp) ((sk_OSSL_DAY_TIME_BAND_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) + + +/* Attribute Type and Value */ +typedef struct atav_st { + ASN1_OBJECT *type; + ASN1_TYPE *value; +} OSSL_ATAV; + +typedef struct ATTRIBUTE_TYPE_MAPPING_st { + ASN1_OBJECT *local; + ASN1_OBJECT *remote; +} OSSL_ATTRIBUTE_TYPE_MAPPING; + +typedef struct ATTRIBUTE_VALUE_MAPPING_st { + OSSL_ATAV *local; + OSSL_ATAV *remote; +} OSSL_ATTRIBUTE_VALUE_MAPPING; + +# define OSSL_ATTR_MAP_TYPE 0 +# define OSSL_ATTR_MAP_VALUE 1 + +typedef struct ATTRIBUTE_MAPPING_st { + int type; + union { + OSSL_ATTRIBUTE_TYPE_MAPPING *typeMappings; + OSSL_ATTRIBUTE_VALUE_MAPPING *typeValueMappings; + } choice; +} OSSL_ATTRIBUTE_MAPPING; + +typedef STACK_OF(OSSL_ATTRIBUTE_MAPPING) OSSL_ATTRIBUTE_MAPPINGS; +DECLARE_ASN1_FUNCTIONS(OSSL_ATAV) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_TYPE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_VALUE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPINGS) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING) +#define sk_OSSL_ATTRIBUTE_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_value(sk, idx) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_value(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new(cmp) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_null() ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_reserve(cmp, n) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp), (n))) +#define sk_OSSL_ATTRIBUTE_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (n)) +#define sk_OSSL_ATTRIBUTE_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete(sk, i) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (i))) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete_ptr(sk, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_pop(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_shift(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_shift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk),ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc)) +#define sk_OSSL_ATTRIBUTE_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), (idx)) +#define sk_OSSL_ATTRIBUTE_MAPPING_set(sk, idx, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_set(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), pnum) +#define sk_OSSL_ATTRIBUTE_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_dup(sk) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_copyfunc_type(copyfunc), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc))) +#define sk_OSSL_ATTRIBUTE_MAPPING_set_cmp_func(sk, cmp) ((sk_OSSL_ATTRIBUTE_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) + + +# define OSSL_AAA_ATTRIBUTE_TYPE 0 +# define OSSL_AAA_ATTRIBUTE_VALUES 1 + +typedef struct ALLOWED_ATTRIBUTES_CHOICE_st { + int type; + union { + ASN1_OBJECT *attributeType; + X509_ATTRIBUTE *attributeTypeandValues; + } choice; +} OSSL_ALLOWED_ATTRIBUTES_CHOICE; + +typedef struct ALLOWED_ATTRIBUTES_ITEM_st { + STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *attributes; + GENERAL_NAME *holderDomain; +} OSSL_ALLOWED_ATTRIBUTES_ITEM; + +typedef STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) OSSL_ALLOWED_ATTRIBUTES_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_CHOICE) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_ITEM) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) + + +typedef struct AA_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + int dp_reasons; + ASN1_BOOLEAN indirectCRL; + ASN1_BOOLEAN containsUserAttributeCerts; + ASN1_BOOLEAN containsAACerts; + ASN1_BOOLEAN containsSOAPublicKeyCerts; +} OSSL_AA_DIST_POINT; + +DECLARE_ASN1_FUNCTIONS(OSSL_AA_DIST_POINT) + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/progs.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/progs.h index be55f61503d405..1b62ec37dec130 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/progs.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/progs.h @@ -56,6 +56,7 @@ extern int s_client_main(int argc, char *argv[]); extern int s_server_main(int argc, char *argv[]); extern int s_time_main(int argc, char *argv[]); extern int sess_id_main(int argc, char *argv[]); +extern int skeyutl_main(int argc, char *argv[]); extern int smime_main(int argc, char *argv[]); extern int speed_main(int argc, char *argv[]); extern int spkac_main(int argc, char *argv[]); @@ -110,6 +111,7 @@ extern const OPTIONS s_client_options[]; extern const OPTIONS s_server_options[]; extern const OPTIONS s_time_options[]; extern const OPTIONS sess_id_options[]; +extern const OPTIONS skeyutl_options[]; extern const OPTIONS smime_options[]; extern const OPTIONS speed_options[]; extern const OPTIONS spkac_options[]; diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/openssl-cl.gypi b/deps/openssl/config/archs/BSD-x86/asm_avx2/openssl-cl.gypi index dc324536e46ce0..064444ebf23c4c 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/openssl-cl.gypi +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/openssl-cl.gypi @@ -82,6 +82,7 @@ 'openssl/apps/s_server.c', 'openssl/apps/s_time.c', 'openssl/apps/sess_id.c', + 'openssl/apps/skeyutl.c', 'openssl/apps/smime.c', 'openssl/apps/speed.c', 'openssl/apps/spkac.c', @@ -97,12 +98,14 @@ 'openssl/apps/lib/app_rand.c', 'openssl/apps/lib/app_x509.c', 'openssl/apps/lib/apps.c', + 'openssl/apps/lib/apps_opt_printf.c', 'openssl/apps/lib/apps_ui.c', 'openssl/apps/lib/columns.c', 'openssl/apps/lib/engine.c', 'openssl/apps/lib/engine_loader.c', 'openssl/apps/lib/fmt.c', 'openssl/apps/lib/http_server.c', + 'openssl/apps/lib/log.c', 'openssl/apps/lib/names.c', 'openssl/apps/lib/opt.c', 'openssl/apps/lib/s_cb.c', diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/openssl-fips.gypi b/deps/openssl/config/archs/BSD-x86/asm_avx2/openssl-fips.gypi index f9448e07fd9d12..9a52eae7b62593 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/openssl-fips.gypi +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/openssl-fips.gypi @@ -96,14 +96,15 @@ 'openssl/crypto/evp/kem.c', 'openssl/crypto/evp/keymgmt_lib.c', 'openssl/crypto/evp/keymgmt_meth.c', - 'openssl/crypto/evp/m_sigver.c', 'openssl/crypto/evp/mac_lib.c', 'openssl/crypto/evp/mac_meth.c', 'openssl/crypto/evp/p_lib.c', 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -111,6 +112,8 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', @@ -140,6 +143,16 @@ 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -148,6 +161,7 @@ 'openssl/crypto/modes/ofb128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/property/defn_cache.c', 'openssl/crypto/property/property.c', 'openssl/crypto/property/property_parse.c', @@ -176,7 +190,23 @@ 'openssl/crypto/sha/sha256.c', 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/stack/stack.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/providers/common/der/der_rsa_sig.c', 'openssl/providers/common/bio_prov.c', 'openssl/providers/common/capabilities.c', @@ -185,6 +215,7 @@ 'openssl/providers/common/provider_util.c', 'openssl/providers/common/securitycheck.c', 'openssl/providers/common/securitycheck_fips.c', + 'openssl/providers/fips/fipsindicator.c', 'openssl/providers/fips/fipsprov.c', 'openssl/providers/fips/self_test.c', 'openssl/providers/fips/self_test_kats.c', @@ -222,6 +253,8 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -229,29 +262,39 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/cmac_prov.c', 'openssl/providers/implementations/macs/gmac_prov.c', 'openssl/providers/implementations/macs/hmac_prov.c', 'openssl/providers/implementations/macs/kmac_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', + 'openssl/providers/implementations/rands/fips_crng_test.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/signature/dsa_sig.c', 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -262,7 +305,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/fips/fips_entry.c', ], @@ -280,6 +323,7 @@ './config/archs/BSD-x86/asm_avx2/crypto/des/crypt586.S', './config/archs/BSD-x86/asm_avx2/crypto/des/des-586.S', './config/archs/BSD-x86/asm_avx2/crypto/ec/ecp_nistz256-x86.S', + './config/archs/BSD-x86/asm_avx2/crypto/params_idx.c', './config/archs/BSD-x86/asm_avx2/crypto/x86cpuid.S', './config/archs/BSD-x86/asm_avx2/crypto/md5/md5-586.S', './config/archs/BSD-x86/asm_avx2/crypto/modes/ghash-x86.S', @@ -296,7 +340,9 @@ './config/archs/BSD-x86/asm_avx2/providers/common/der/der_dsa_gen.c', './config/archs/BSD-x86/asm_avx2/providers/common/der/der_ec_gen.c', './config/archs/BSD-x86/asm_avx2/providers/common/der/der_ecx_gen.c', + './config/archs/BSD-x86/asm_avx2/providers/common/der/der_ml_dsa_gen.c', './config/archs/BSD-x86/asm_avx2/providers/common/der/der_rsa_gen.c', + './config/archs/BSD-x86/asm_avx2/providers/common/der/der_slh_dsa_gen.c', './config/archs/BSD-x86/asm_avx2/providers/common/der/der_wrap_gen.c', './config/archs/BSD-x86/asm_avx2/providers/legacy.ld', './config/archs/BSD-x86/asm_avx2/providers/fips.ld', diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/openssl.gypi b/deps/openssl/config/archs/BSD-x86/asm_avx2/openssl.gypi index 7d73b1d0fed35a..64ff3beaabdd72 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/openssl.gypi +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/openssl.gypi @@ -7,14 +7,15 @@ 'openssl/ssl/d1_srtp.c', 'openssl/ssl/methods.c', 'openssl/ssl/pqueue.c', + 'openssl/ssl/priority_queue.c', 'openssl/ssl/s3_enc.c', 'openssl/ssl/s3_lib.c', 'openssl/ssl/s3_msg.c', 'openssl/ssl/ssl_asn1.c', 'openssl/ssl/ssl_cert.c', + 'openssl/ssl/ssl_cert_comp.c', 'openssl/ssl/ssl_ciph.c', 'openssl/ssl/ssl_conf.c', - 'openssl/ssl/ssl_err.c', 'openssl/ssl/ssl_err_legacy.c', 'openssl/ssl/ssl_init.c', 'openssl/ssl/ssl_lib.c', @@ -31,12 +32,60 @@ 'openssl/ssl/tls13_enc.c', 'openssl/ssl/tls_depr.c', 'openssl/ssl/tls_srp.c', - 'openssl/ssl/record/dtls1_bitmap.c', + 'openssl/ssl/quic/cc_newreno.c', + 'openssl/ssl/quic/json_enc.c', + 'openssl/ssl/quic/qlog.c', + 'openssl/ssl/quic/qlog_event_helpers.c', + 'openssl/ssl/quic/quic_ackm.c', + 'openssl/ssl/quic/quic_cfq.c', + 'openssl/ssl/quic/quic_channel.c', + 'openssl/ssl/quic/quic_demux.c', + 'openssl/ssl/quic/quic_engine.c', + 'openssl/ssl/quic/quic_fc.c', + 'openssl/ssl/quic/quic_fifd.c', + 'openssl/ssl/quic/quic_impl.c', + 'openssl/ssl/quic/quic_lcidm.c', + 'openssl/ssl/quic/quic_method.c', + 'openssl/ssl/quic/quic_obj.c', + 'openssl/ssl/quic/quic_port.c', + 'openssl/ssl/quic/quic_rcidm.c', + 'openssl/ssl/quic/quic_reactor.c', + 'openssl/ssl/quic/quic_reactor_wait_ctx.c', + 'openssl/ssl/quic/quic_record_rx.c', + 'openssl/ssl/quic/quic_record_shared.c', + 'openssl/ssl/quic/quic_record_tx.c', + 'openssl/ssl/quic/quic_record_util.c', + 'openssl/ssl/quic/quic_rstream.c', + 'openssl/ssl/quic/quic_rx_depack.c', + 'openssl/ssl/quic/quic_sf_list.c', + 'openssl/ssl/quic/quic_srt_gen.c', + 'openssl/ssl/quic/quic_srtm.c', + 'openssl/ssl/quic/quic_sstream.c', + 'openssl/ssl/quic/quic_statm.c', + 'openssl/ssl/quic/quic_stream_map.c', + 'openssl/ssl/quic/quic_thread_assist.c', + 'openssl/ssl/quic/quic_tls.c', + 'openssl/ssl/quic/quic_tls_api.c', + 'openssl/ssl/quic/quic_trace.c', + 'openssl/ssl/quic/quic_tserver.c', + 'openssl/ssl/quic/quic_txp.c', + 'openssl/ssl/quic/quic_txpim.c', + 'openssl/ssl/quic/quic_types.c', + 'openssl/ssl/quic/quic_wire.c', + 'openssl/ssl/quic/quic_wire_pkt.c', + 'openssl/ssl/quic/uint_set.c', 'openssl/ssl/record/rec_layer_d1.c', 'openssl/ssl/record/rec_layer_s3.c', - 'openssl/ssl/record/ssl3_buffer.c', - 'openssl/ssl/record/ssl3_record.c', - 'openssl/ssl/record/ssl3_record_tls13.c', + 'openssl/ssl/record/methods/dtls_meth.c', + 'openssl/ssl/record/methods/ssl3_meth.c', + 'openssl/ssl/record/methods/tls13_meth.c', + 'openssl/ssl/record/methods/tls1_meth.c', + 'openssl/ssl/record/methods/tls_common.c', + 'openssl/ssl/record/methods/tls_multib.c', + 'openssl/ssl/record/methods/tlsany_meth.c', + 'openssl/ssl/rio/poll_builder.c', + 'openssl/ssl/rio/poll_immediate.c', + 'openssl/ssl/rio/rio_notifier.c', 'openssl/ssl/statem/extensions.c', 'openssl/ssl/statem/extensions_clnt.c', 'openssl/ssl/statem/extensions_cust.c', @@ -147,6 +196,7 @@ 'openssl/crypto/bio/bss_conn.c', 'openssl/crypto/bio/bss_core.c', 'openssl/crypto/bio/bss_dgram.c', + 'openssl/crypto/bio/bss_dgram_pair.c', 'openssl/crypto/bio/bss_fd.c', 'openssl/crypto/bio/bss_file.c', 'openssl/crypto/bio/bss_log.c', @@ -202,6 +252,7 @@ 'openssl/crypto/cmp/cmp_client.c', 'openssl/crypto/cmp/cmp_ctx.c', 'openssl/crypto/cmp/cmp_err.c', + 'openssl/crypto/cmp/cmp_genm.c', 'openssl/crypto/cmp/cmp_hdr.c', 'openssl/crypto/cmp/cmp_http.c', 'openssl/crypto/cmp/cmp_msg.c', @@ -376,7 +427,9 @@ 'openssl/crypto/err/err_all.c', 'openssl/crypto/err/err_all_legacy.c', 'openssl/crypto/err/err_blocks.c', + 'openssl/crypto/err/err_mark.c', 'openssl/crypto/err/err_prn.c', + 'openssl/crypto/err/err_save.c', 'openssl/crypto/ess/ess_asn1.c', 'openssl/crypto/ess/ess_err.c', 'openssl/crypto/ess/ess_lib.c', @@ -459,7 +512,9 @@ 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -467,7 +522,11 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', + 'openssl/crypto/hpke/hpke.c', + 'openssl/crypto/hpke/hpke_util.c', 'openssl/crypto/http/http_client.c', 'openssl/crypto/http/http_err.c', 'openssl/crypto/http/http_lib.c', @@ -481,6 +540,7 @@ 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', 'openssl/crypto/bsearch.c', + 'openssl/crypto/comp_methods.c', 'openssl/crypto/context.c', 'openssl/crypto/core_algorithm.c', 'openssl/crypto/core_fetch.c', @@ -490,10 +550,13 @@ 'openssl/crypto/cryptlib.c', 'openssl/crypto/ctype.c', 'openssl/crypto/cversion.c', + 'openssl/crypto/defaults.c', 'openssl/crypto/der_writer.c', + 'openssl/crypto/deterministic_nonce.c', 'openssl/crypto/ebcdic.c', 'openssl/crypto/ex_data.c', 'openssl/crypto/getenv.c', + 'openssl/crypto/indicator_core.c', 'openssl/crypto/info.c', 'openssl/crypto/init.c', 'openssl/crypto/initthread.c', @@ -517,12 +580,16 @@ 'openssl/crypto/provider_core.c', 'openssl/crypto/provider_predefined.c', 'openssl/crypto/punycode.c', + 'openssl/crypto/quic_vlint.c', 'openssl/crypto/self_test_core.c', + 'openssl/crypto/sleep.c', 'openssl/crypto/sparse_array.c', + 'openssl/crypto/ssl_err.c', 'openssl/crypto/threads_lib.c', 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', 'openssl/crypto/trace.c', 'openssl/crypto/uid.c', 'openssl/crypto/md4/md4_dgst.c', @@ -532,6 +599,15 @@ 'openssl/crypto/md5/md5_sha1.c', 'openssl/crypto/mdc2/mdc2_one.c', 'openssl/crypto/mdc2/mdc2dgst.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -543,6 +619,7 @@ 'openssl/crypto/modes/siv128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/objects/o_names.c', 'openssl/crypto/objects/obj_dat.c', 'openssl/crypto/objects/obj_err.c', @@ -606,6 +683,7 @@ 'openssl/crypto/rand/rand_lib.c', 'openssl/crypto/rand/rand_meth.c', 'openssl/crypto/rand/rand_pool.c', + 'openssl/crypto/rand/rand_uniform.c', 'openssl/crypto/rand/randfile.c', 'openssl/crypto/rc2/rc2_cbc.c', 'openssl/crypto/rc2/rc2_ecb.c', @@ -652,6 +730,16 @@ 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', 'openssl/crypto/siphash/siphash.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/sm2/sm2_crypt.c', 'openssl/crypto/sm2/sm2_err.c', 'openssl/crypto/sm2/sm2_key.c', @@ -669,6 +757,12 @@ 'openssl/crypto/store/store_register.c', 'openssl/crypto/store/store_result.c', 'openssl/crypto/store/store_strings.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/crypto/ts/ts_asn1.c', 'openssl/crypto/ts/ts_conf.c', 'openssl/crypto/ts/ts_err.c', @@ -697,14 +791,22 @@ 'openssl/crypto/x509/pcy_map.c', 'openssl/crypto/x509/pcy_node.c', 'openssl/crypto/x509/pcy_tree.c', + 'openssl/crypto/x509/t_acert.c', 'openssl/crypto/x509/t_crl.c', 'openssl/crypto/x509/t_req.c', 'openssl/crypto/x509/t_x509.c', + 'openssl/crypto/x509/v3_aaa.c', + 'openssl/crypto/x509/v3_ac_tgt.c', 'openssl/crypto/x509/v3_addr.c', 'openssl/crypto/x509/v3_admis.c', 'openssl/crypto/x509/v3_akeya.c', 'openssl/crypto/x509/v3_akid.c', 'openssl/crypto/x509/v3_asid.c', + 'openssl/crypto/x509/v3_attrdesc.c', + 'openssl/crypto/x509/v3_attrmap.c', + 'openssl/crypto/x509/v3_audit_id.c', + 'openssl/crypto/x509/v3_authattid.c', + 'openssl/crypto/x509/v3_battcons.c', 'openssl/crypto/x509/v3_bcons.c', 'openssl/crypto/x509/v3_bitst.c', 'openssl/crypto/x509/v3_conf.c', @@ -713,12 +815,17 @@ 'openssl/crypto/x509/v3_enum.c', 'openssl/crypto/x509/v3_extku.c', 'openssl/crypto/x509/v3_genn.c', + 'openssl/crypto/x509/v3_group_ac.c', 'openssl/crypto/x509/v3_ia5.c', + 'openssl/crypto/x509/v3_ind_iss.c', 'openssl/crypto/x509/v3_info.c', 'openssl/crypto/x509/v3_int.c', + 'openssl/crypto/x509/v3_iobo.c', 'openssl/crypto/x509/v3_ist.c', 'openssl/crypto/x509/v3_lib.c', 'openssl/crypto/x509/v3_ncons.c', + 'openssl/crypto/x509/v3_no_ass.c', + 'openssl/crypto/x509/v3_no_rev_avail.c', 'openssl/crypto/x509/v3_pci.c', 'openssl/crypto/x509/v3_pcia.c', 'openssl/crypto/x509/v3_pcons.c', @@ -726,13 +833,20 @@ 'openssl/crypto/x509/v3_pmaps.c', 'openssl/crypto/x509/v3_prn.c', 'openssl/crypto/x509/v3_purp.c', + 'openssl/crypto/x509/v3_rolespec.c', 'openssl/crypto/x509/v3_san.c', + 'openssl/crypto/x509/v3_sda.c', + 'openssl/crypto/x509/v3_single_use.c', 'openssl/crypto/x509/v3_skid.c', + 'openssl/crypto/x509/v3_soa_id.c', 'openssl/crypto/x509/v3_sxnet.c', + 'openssl/crypto/x509/v3_timespec.c', 'openssl/crypto/x509/v3_tlsf.c', + 'openssl/crypto/x509/v3_usernotice.c', 'openssl/crypto/x509/v3_utf8.c', 'openssl/crypto/x509/v3_utl.c', 'openssl/crypto/x509/v3err.c', + 'openssl/crypto/x509/x509_acert.c', 'openssl/crypto/x509/x509_att.c', 'openssl/crypto/x509/x509_cmp.c', 'openssl/crypto/x509/x509_d2.c', @@ -750,6 +864,7 @@ 'openssl/crypto/x509/x509_v3.c', 'openssl/crypto/x509/x509_vfy.c', 'openssl/crypto/x509/x509_vpm.c', + 'openssl/crypto/x509/x509aset.c', 'openssl/crypto/x509/x509cset.c', 'openssl/crypto/x509/x509name.c', 'openssl/crypto/x509/x509rset.c', @@ -759,6 +874,7 @@ 'openssl/crypto/x509/x_attrib.c', 'openssl/crypto/x509/x_crl.c', 'openssl/crypto/x509/x_exten.c', + 'openssl/crypto/x509/x_ietfatt.c', 'openssl/crypto/x509/x_name.c', 'openssl/crypto/x509/x_pubkey.c', 'openssl/crypto/x509/x_req.c', @@ -791,6 +907,9 @@ 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c', 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', @@ -815,7 +934,13 @@ 'openssl/providers/implementations/ciphers/cipher_cts.c', 'openssl/providers/implementations/ciphers/cipher_null.c', 'openssl/providers/implementations/ciphers/cipher_sm4.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm_hw.c', 'openssl/providers/implementations/ciphers/cipher_sm4_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts_hw.c', 'openssl/providers/implementations/ciphers/cipher_tdes.c', 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', 'openssl/providers/implementations/ciphers/cipher_tdes_default.c', @@ -844,11 +969,16 @@ 'openssl/providers/implementations/encode_decode/encode_key2ms.c', 'openssl/providers/implementations/encode_decode/encode_key2text.c', 'openssl/providers/implementations/encode_decode/endecoder_common.c', + 'openssl/providers/implementations/encode_decode/ml_common_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_dsa_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_kem_codecs.c', 'openssl/providers/implementations/exchange/dh_exch.c', 'openssl/providers/implementations/exchange/ecdh_exch.c', 'openssl/providers/implementations/exchange/ecx_exch.c', 'openssl/providers/implementations/exchange/kdf_exch.c', + 'openssl/providers/implementations/kdfs/argon2.c', 'openssl/providers/implementations/kdfs/hkdf.c', + 'openssl/providers/implementations/kdfs/hmacdrbg_kdf.c', 'openssl/providers/implementations/kdfs/kbkdf.c', 'openssl/providers/implementations/kdfs/krb5kdf.c', 'openssl/providers/implementations/kdfs/pbkdf2.c', @@ -859,6 +989,11 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ec_kem.c', + 'openssl/providers/implementations/kem/ecx_kem.c', + 'openssl/providers/implementations/kem/kem_util.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -866,7 +1001,11 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/blake2b_mac.c', 'openssl/providers/implementations/macs/blake2s_mac.c', 'openssl/providers/implementations/macs/cmac_prov.c', @@ -875,12 +1014,12 @@ 'openssl/providers/implementations/macs/kmac_prov.c', 'openssl/providers/implementations/macs/poly1305_prov.c', 'openssl/providers/implementations/macs/siphash_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', 'openssl/providers/implementations/rands/seed_src.c', + 'openssl/providers/implementations/rands/seed_src_jitter.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/rands/seeding/rand_cpu_x86.c', 'openssl/providers/implementations/rands/seeding/rand_tsc.c', @@ -890,17 +1029,23 @@ 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', 'openssl/providers/implementations/signature/sm2_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', 'openssl/providers/implementations/storemgmt/file_store.c', 'openssl/providers/implementations/storemgmt/file_store_any2obj.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -911,7 +1056,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/implementations/ciphers/cipher_blowfish.c', 'openssl/providers/implementations/ciphers/cipher_blowfish_hw.c', 'openssl/providers/implementations/ciphers/cipher_cast5.c', @@ -936,6 +1081,7 @@ 'openssl/providers/implementations/digests/ripemd_prov.c', 'openssl/providers/implementations/digests/wp_prov.c', 'openssl/providers/implementations/kdfs/pbkdf1.c', + 'openssl/providers/implementations/kdfs/pvkkdf.c', 'openssl/providers/prov_running.c', 'openssl/providers/legacyprov.c', ], @@ -953,6 +1099,7 @@ './config/archs/BSD-x86/asm_avx2/crypto/des/crypt586.S', './config/archs/BSD-x86/asm_avx2/crypto/des/des-586.S', './config/archs/BSD-x86/asm_avx2/crypto/ec/ecp_nistz256-x86.S', + './config/archs/BSD-x86/asm_avx2/crypto/params_idx.c', './config/archs/BSD-x86/asm_avx2/crypto/x86cpuid.S', './config/archs/BSD-x86/asm_avx2/crypto/md5/md5-586.S', './config/archs/BSD-x86/asm_avx2/crypto/modes/ghash-x86.S', @@ -969,7 +1116,9 @@ './config/archs/BSD-x86/asm_avx2/providers/common/der/der_dsa_gen.c', './config/archs/BSD-x86/asm_avx2/providers/common/der/der_ec_gen.c', './config/archs/BSD-x86/asm_avx2/providers/common/der/der_ecx_gen.c', + './config/archs/BSD-x86/asm_avx2/providers/common/der/der_ml_dsa_gen.c', './config/archs/BSD-x86/asm_avx2/providers/common/der/der_rsa_gen.c', + './config/archs/BSD-x86/asm_avx2/providers/common/der/der_slh_dsa_gen.c', './config/archs/BSD-x86/asm_avx2/providers/common/der/der_wrap_gen.c', './config/archs/BSD-x86/asm_avx2/providers/legacy.ld', './config/archs/BSD-x86/asm_avx2/providers/fips.ld', diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/providers/common/der/der_ml_dsa_gen.c b/deps/openssl/config/archs/BSD-x86/asm_avx2/providers/common/der/der_ml_dsa_gen.c new file mode 100644 index 00000000000000..4a8a113a268578 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/providers/common/der/der_ml_dsa_gen.c @@ -0,0 +1,37 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_ml_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44] = { + DER_OID_V_id_ml_dsa_44 +}; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65] = { + DER_OID_V_id_ml_dsa_65 +}; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87] = { + DER_OID_V_id_ml_dsa_87 +}; + diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/providers/common/der/der_slh_dsa_gen.c b/deps/openssl/config/archs/BSD-x86/asm_avx2/providers/common/der/der_slh_dsa_gen.c new file mode 100644 index 00000000000000..1419a9515097dd --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/providers/common/der/der_slh_dsa_gen.c @@ -0,0 +1,100 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_slh_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s] = { + DER_OID_V_id_slh_dsa_sha2_128s +}; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f] = { + DER_OID_V_id_slh_dsa_sha2_128f +}; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s] = { + DER_OID_V_id_slh_dsa_sha2_192s +}; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f] = { + DER_OID_V_id_slh_dsa_sha2_192f +}; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s] = { + DER_OID_V_id_slh_dsa_sha2_256s +}; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f] = { + DER_OID_V_id_slh_dsa_sha2_256f +}; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s] = { + DER_OID_V_id_slh_dsa_shake_128s +}; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f] = { + DER_OID_V_id_slh_dsa_shake_128f +}; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s] = { + DER_OID_V_id_slh_dsa_shake_192s +}; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f] = { + DER_OID_V_id_slh_dsa_shake_192f +}; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s] = { + DER_OID_V_id_slh_dsa_shake_256s +}; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f] = { + DER_OID_V_id_slh_dsa_shake_256f +}; + diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/providers/common/include/prov/der_ml_dsa.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/providers/common/include/prov/der_ml_dsa.h new file mode 100644 index 00000000000000..c55f780ab4527c --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/providers/common/include/prov/der_ml_dsa.h @@ -0,0 +1,40 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_ml_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +#define DER_OID_V_id_ml_dsa_44 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x11 +#define DER_OID_SZ_id_ml_dsa_44 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44]; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +#define DER_OID_V_id_ml_dsa_65 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x12 +#define DER_OID_SZ_id_ml_dsa_65 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65]; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +#define DER_OID_V_id_ml_dsa_87 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x13 +#define DER_OID_SZ_id_ml_dsa_87 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87]; + + +int ossl_DER_w_algorithmIdentifier_ML_DSA(WPACKET *pkt, int tag, ML_DSA_KEY *key); diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/providers/common/include/prov/der_slh_dsa.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/providers/common/include/prov/der_slh_dsa.h new file mode 100644 index 00000000000000..760f8e7699be72 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/providers/common/include/prov/der_slh_dsa.h @@ -0,0 +1,103 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_slh_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x14 +#define DER_OID_SZ_id_slh_dsa_sha2_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s]; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x15 +#define DER_OID_SZ_id_slh_dsa_sha2_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f]; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x16 +#define DER_OID_SZ_id_slh_dsa_sha2_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s]; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x17 +#define DER_OID_SZ_id_slh_dsa_sha2_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f]; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x18 +#define DER_OID_SZ_id_slh_dsa_sha2_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s]; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x19 +#define DER_OID_SZ_id_slh_dsa_sha2_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f]; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +#define DER_OID_V_id_slh_dsa_shake_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1A +#define DER_OID_SZ_id_slh_dsa_shake_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s]; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +#define DER_OID_V_id_slh_dsa_shake_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1B +#define DER_OID_SZ_id_slh_dsa_shake_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f]; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +#define DER_OID_V_id_slh_dsa_shake_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1C +#define DER_OID_SZ_id_slh_dsa_shake_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s]; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +#define DER_OID_V_id_slh_dsa_shake_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1D +#define DER_OID_SZ_id_slh_dsa_shake_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f]; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +#define DER_OID_V_id_slh_dsa_shake_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1E +#define DER_OID_SZ_id_slh_dsa_shake_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s]; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +#define DER_OID_V_id_slh_dsa_shake_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1F +#define DER_OID_SZ_id_slh_dsa_shake_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f]; + + +int ossl_DER_w_algorithmIdentifier_SLH_DSA(WPACKET *pkt, int tag, SLH_DSA_KEY *key); diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/apps/progs.c b/deps/openssl/config/archs/BSD-x86/no-asm/apps/progs.c index 43cef00799b86e..acc204a3e6e781 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/apps/progs.c +++ b/deps/openssl/config/archs/BSD-x86/no-asm/apps/progs.c @@ -89,6 +89,7 @@ FUNCTION functions[] = { {FT_general, "s_time", s_time_main, s_time_options, NULL, NULL}, #endif {FT_general, "sess_id", sess_id_main, sess_id_options, NULL, NULL}, + {FT_general, "skeyutl", skeyutl_main, skeyutl_options, NULL, NULL}, {FT_general, "smime", smime_main, smime_options, NULL, NULL}, {FT_general, "speed", speed_main, speed_options, NULL, NULL}, {FT_general, "spkac", spkac_main, spkac_options, NULL, NULL}, @@ -225,9 +226,15 @@ FUNCTION functions[] = { {FT_cipher, "camellia-256-ecb", enc_main, enc_options, NULL}, #endif {FT_cipher, "base64", enc_main, enc_options, NULL}, -#ifdef ZLIB +#ifndef OPENSSL_NO_ZLIB {FT_cipher, "zlib", enc_main, enc_options, NULL}, #endif +#ifndef OPENSSL_NO_BROTLI + {FT_cipher, "brotli", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ZSTD + {FT_cipher, "zstd", enc_main, enc_options, NULL}, +#endif #ifndef OPENSSL_NO_DES {FT_cipher, "des", enc_main, enc_options, NULL}, #endif diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm b/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm index 867ed934bdccc1..8095282e98bb40 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm +++ b/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm @@ -18,6 +18,7 @@ our %config = ( "ARFLAGS" => [ "qc" ], + "ASFLAGS" => [], "CC" => "cc", "CFLAGS" => [ "-Wall -O3 -fomit-frame-pointer" @@ -27,14 +28,16 @@ our %config = ( "CPPINCLUDES" => [], "CXXFLAGS" => [], "FIPSKEY" => "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813", + "FIPS_VENDOR" => "OpenSSL FIPS Provider", "HASHBANGPERL" => "/usr/bin/env perl", "LDFLAGS" => [], "LDLIBS" => [], + "OBJCOPY" => "objcopy", "PERL" => "/usr/bin/perl", "RANLIB" => "ranlib", "RC" => "windres", "RCFLAGS" => [], - "api" => "30000", + "api" => "30500", "b32" => "1", "b64" => "0", "b64l" => "0", @@ -56,11 +59,13 @@ our %config = ( "doc/build.info", "test/build.info", "engines/build.info", + "exporters/build.info", "crypto/objects/build.info", "crypto/buffer/build.info", "crypto/bio/build.info", "crypto/stack/build.info", "crypto/lhash/build.info", + "crypto/hashtable/build.info", "crypto/rand/build.info", "crypto/evp/build.info", "crypto/asn1/build.info", @@ -78,6 +83,7 @@ our %config = ( "crypto/md5/build.info", "crypto/sha/build.info", "crypto/mdc2/build.info", + "crypto/ml_kem/build.info", "crypto/hmac/build.info", "crypto/ripemd/build.info", "crypto/whrlpool/build.info", @@ -119,11 +125,19 @@ our %config = ( "crypto/cmp/build.info", "crypto/encode_decode/build.info", "crypto/ffc/build.info", + "crypto/hpke/build.info", + "crypto/thread/build.info", + "crypto/ml_dsa/build.info", + "crypto/slh_dsa/build.info", + "ssl/record/build.info", + "ssl/rio/build.info", + "ssl/quic/build.info", "apps/lib/build.info", "providers/common/build.info", "providers/implementations/build.info", "providers/fips/build.info", "doc/man1/build.info", + "ssl/record/methods/build.info", "providers/common/der/build.info", "providers/implementations/digests/build.info", "providers/implementations/ciphers/build.info", @@ -137,6 +151,7 @@ our %config = ( "providers/implementations/encode_decode/build.info", "providers/implementations/storemgmt/build.info", "providers/implementations/kem/build.info", + "providers/implementations/skeymgmt/build.info", "providers/implementations/rands/seeding/build.info" ], "build_metadata" => "", @@ -154,7 +169,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.17", + "full_version" => "3.5.2", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -163,9 +178,9 @@ our %config = ( "libdir" => "", "major" => "3", "makedep_scheme" => "gcc", - "minor" => "0", + "minor" => "5", "openssl_api_defines" => [ - "OPENSSL_CONFIGURED_API=30000" + "OPENSSL_CONFIGURED_API=30500" ], "openssl_feature_defines" => [ "OPENSSL_RAND_SEED_OS", @@ -173,27 +188,42 @@ our %config = ( "OPENSSL_NO_AFALGENG", "OPENSSL_NO_ASAN", "OPENSSL_NO_ASM", + "OPENSSL_NO_BROTLI", + "OPENSSL_NO_BROTLI_DYNAMIC", "OPENSSL_NO_COMP", "OPENSSL_NO_CRYPTO_MDEBUG", "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE", + "OPENSSL_NO_DEMOS", "OPENSSL_NO_EC_NISTP_64_GCC_128", "OPENSSL_NO_EGD", "OPENSSL_NO_EXTERNAL_TESTS", + "OPENSSL_NO_FIPS_JITTER", "OPENSSL_NO_FUZZ_AFL", "OPENSSL_NO_FUZZ_LIBFUZZER", + "OPENSSL_NO_H3DEMO", + "OPENSSL_NO_HQINTEROP", + "OPENSSL_NO_JITTER", "OPENSSL_NO_KTLS", "OPENSSL_NO_LOADERENG", "OPENSSL_NO_MD2", "OPENSSL_NO_MSAN", + "OPENSSL_NO_PIE", "OPENSSL_NO_RC5", "OPENSSL_NO_SCTP", "OPENSSL_NO_SSL3", "OPENSSL_NO_SSL3_METHOD", + "OPENSSL_NO_SSLKEYLOG", + "OPENSSL_NO_TFO", "OPENSSL_NO_TRACE", "OPENSSL_NO_UBSAN", "OPENSSL_NO_UNIT_TEST", "OPENSSL_NO_UPLINK", "OPENSSL_NO_WEAK_SSL_CIPHERS", + "OPENSSL_NO_WINSTORE", + "OPENSSL_NO_ZLIB", + "OPENSSL_NO_ZLIB_DYNAMIC", + "OPENSSL_NO_ZSTD", + "OPENSSL_NO_ZSTD_DYNAMIC", "OPENSSL_NO_DYNAMIC_ENGINE" ], "openssl_other_defines" => [ @@ -201,11 +231,11 @@ our %config = ( ], "openssl_sys_defines" => [], "openssldir" => "", - "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "17", + "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", + "patch" => "2", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", - "perl_version" => "5.38.2", + "perl_version" => "5.34.0", "perlargv" => [ "no-comp", "no-shared", @@ -236,6 +266,7 @@ our %config = ( "LDLIBS" => undef, "MT" => undef, "MTFLAGS" => undef, + "OBJCOPY" => undef, "OPENSSL_LOCAL_CONFIG_DIR" => undef, "PERL" => undef, "RANLIB" => undef, @@ -255,11 +286,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "1 Jul 2025", + "release_date" => "5 Aug 2025", "shlib_version" => "3", "sourcedir" => ".", "target" => "BSD-x86", - "version" => "3.0.17" + "version" => "3.5.2" ); our %target = ( "AR" => "ar", @@ -267,6 +298,7 @@ our %target = ( "CC" => "cc", "CFLAGS" => "-Wall -O3 -fomit-frame-pointer", "HASHBANGPERL" => "/usr/bin/env perl", + "OBJCOPY" => "objcopy", "RANLIB" => "ranlib", "RC" => "windres", "_conf_fname_int" => [ @@ -277,6 +309,8 @@ our %target = ( "Configurations/shared-info.pl" ], "asm_arch" => "x86", + "bin_cflags" => "", + "bin_lflags" => "", "bn_ops" => "BN_LLONG", "build_file" => "Makefile", "build_scheme" => [ @@ -320,6 +354,8 @@ our %target = ( our @disablables = ( "acvp-tests", "afalgeng", + "apps", + "argon2", "aria", "asan", "asm", @@ -330,11 +366,14 @@ our @disablables = ( "autoload-config", "bf", "blake2", + "brotli", + "brotli-dynamic", "buildtest-c++", "bulk", "cached-fetch", "camellia", "capieng", + "winstore", "cast", "chacha", "cmac", @@ -343,11 +382,16 @@ our @disablables = ( "comp", "crypto-mdebug", "ct", + "default-thread-pool", + "demos", + "h3demo", + "hqinterop", "deprecated", "des", "devcryptoeng", "dgram", "dh", + "docs", "dsa", "dso", "dtls", @@ -357,6 +401,7 @@ our @disablables = ( "ec_nistp_64_gcc_128", "ecdh", "ecdsa", + "ecx", "egd", "engine", "err", @@ -364,10 +409,15 @@ our @disablables = ( "filenames", "fips", "fips-securitychecks", + "fips-post", + "fips-jitter", "fuzz-afl", "fuzz-libfuzzer", "gost", + "http", "idea", + "integrity-only-ciphers", + "jitter", "ktls", "legacy", "loadereng", @@ -375,6 +425,8 @@ our @disablables = ( "md2", "md4", "mdc2", + "ml-dsa", + "ml-kem", "module", "msan", "multiblock", @@ -383,10 +435,13 @@ our @disablables = ( "ocsp", "padlockeng", "pic", + "pie", "pinshared", "poly1305", "posix-io", "psk", + "quic", + "unstable-qlog", "rc2", "rc4", "rc5", @@ -400,7 +455,9 @@ our @disablables = ( "shared", "siphash", "siv", + "slh-dsa", "sm2", + "sm2-precomp", "sm3", "sm4", "sock", @@ -411,9 +468,13 @@ our @disablables = ( "ssl-trace", "static-engine", "stdio", + "sslkeylog", "tests", + "tfo", + "thread-pool", "threads", "tls", + "tls-deprecated-ec", "trace", "ts", "ubsan", @@ -424,6 +485,8 @@ our @disablables = ( "whirlpool", "zlib", "zlib-dynamic", + "zstd", + "zstd-dynamic", "ssl3", "ssl3-method", "tls1", @@ -445,32 +508,45 @@ our %disabled = ( "afalgeng" => "option", "asan" => "default", "asm" => "option", + "brotli" => "default", + "brotli-dynamic" => "default", "buildtest-c++" => "default", "comp" => "option", "crypto-mdebug" => "default", "crypto-mdebug-backtrace" => "default", + "demos" => "default", "dynamic-engine" => "cascade", "ec_nistp_64_gcc_128" => "default", "egd" => "default", "external-tests" => "default", + "fips-jitter" => "default", "fuzz-afl" => "default", "fuzz-libfuzzer" => "default", + "h3demo" => "default", + "hqinterop" => "default", + "jitter" => "default", "ktls" => "default", "loadereng" => "cascade", "md2" => "default", "msan" => "default", + "pie" => "default", "rc5" => "default", "sctp" => "default", "shared" => "option", "ssl3" => "default", "ssl3-method" => "default", + "sslkeylog" => "default", + "tfo" => "default", "trace" => "default", "ubsan" => "default", "unit-test" => "default", "uplink" => "no uplink_arch", "weak-ssl-ciphers" => "default", + "winstore" => "not-windows", "zlib" => "default", - "zlib-dynamic" => "default" + "zlib-dynamic" => "default", + "zstd" => "default", + "zstd-dynamic" => "default" ); our %withargs = (); our %unified_info = ( @@ -696,6 +772,11 @@ our %unified_info = ( "pod" => "1" } }, + "doc/man1/openssl-skeyutl.pod" => { + "doc/man1/openssl-skeyutl.pod.in" => { + "pod" => "1" + } + }, "doc/man1/openssl-smime.pod" => { "doc/man1/openssl-smime.pod.in" => { "pod" => "1" @@ -753,6 +834,21 @@ our %unified_info = ( } }, "generate" => { + "exporters/OpenSSLConfig.cmake" => { + "exporter" => "cmake" + }, + "exporters/OpenSSLConfigVersion.cmake" => { + "exporter" => "cmake" + }, + "exporters/libcrypto.pc" => { + "exporter" => "pkg-config" + }, + "exporters/libssl.pc" => { + "exporter" => "pkg-config" + }, + "exporters/openssl.pc" => { + "exporter" => "pkg-config" + }, "include/openssl/configuration.h" => { "skip" => "1" } @@ -773,6 +869,9 @@ our %unified_info = ( "providers/liblegacy.a" => { "noinst" => "1" }, + "providers/libtemplate.a" => { + "noinst" => "1" + }, "test/libtestutil.a" => { "has_main" => "1", "noinst" => "1" @@ -790,6 +889,9 @@ our %unified_info = ( } }, "programs" => { + "fuzz/acert-test" => { + "noinst" => "1" + }, "fuzz/asn1-test" => { "noinst" => "1" }, @@ -820,9 +922,60 @@ our %unified_info = ( "fuzz/ct-test" => { "noinst" => "1" }, + "fuzz/decoder-test" => { + "noinst" => "1" + }, + "fuzz/dtlsclient-test" => { + "noinst" => "1" + }, + "fuzz/dtlsserver-test" => { + "noinst" => "1" + }, + "fuzz/hashtable-test" => { + "noinst" => "1" + }, + "fuzz/ml-dsa-test" => { + "noinst" => "1" + }, + "fuzz/ml-kem-test" => { + "noinst" => "1" + }, + "fuzz/pem-test" => { + "noinst" => "1" + }, + "fuzz/provider-test" => { + "noinst" => "1" + }, + "fuzz/punycode-test" => { + "noinst" => "1" + }, + "fuzz/quic-client-test" => { + "noinst" => "1" + }, + "fuzz/quic-lcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-rcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-server-test" => { + "noinst" => "1" + }, + "fuzz/quic-srtm-test" => { + "noinst" => "1" + }, "fuzz/server-test" => { "noinst" => "1" }, + "fuzz/slh-dsa-test" => { + "noinst" => "1" + }, + "fuzz/smime-test" => { + "noinst" => "1" + }, + "fuzz/v3name-test" => { + "noinst" => "1" + }, "fuzz/x509-test" => { "noinst" => "1" }, @@ -874,18 +1027,30 @@ our %unified_info = ( "test/bftest" => { "noinst" => "1" }, + "test/bio_addr_test" => { + "noinst" => "1" + }, + "test/bio_base64_test" => { + "noinst" => "1" + }, "test/bio_callback_test" => { "noinst" => "1" }, "test/bio_core_test" => { "noinst" => "1" }, + "test/bio_dgram_test" => { + "noinst" => "1" + }, "test/bio_enc_test" => { "noinst" => "1" }, "test/bio_memleak_test" => { "noinst" => "1" }, + "test/bio_meth_test" => { + "noinst" => "1" + }, "test/bio_prefix_text" => { "noinst" => "1" }, @@ -895,6 +1060,9 @@ our %unified_info = ( "test/bio_readbuffer_test" => { "noinst" => "1" }, + "test/bio_tfo_test" => { + "noinst" => "1" + }, "test/bioprinttest" => { "noinst" => "1" }, @@ -904,6 +1072,9 @@ our %unified_info = ( "test/bntest" => { "noinst" => "1" }, + "test/build_wincrypt_test" => { + "noinst" => "1" + }, "test/buildtest_c_aes" => { "noinst" => "1" }, @@ -919,6 +1090,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => { "noinst" => "1" }, + "test/buildtest_c_byteorder" => { + "noinst" => "1" + }, "test/buildtest_c_camellia" => { "noinst" => "1" }, @@ -943,9 +1117,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => { "noinst" => "1" }, - "test/buildtest_c_core_names" => { - "noinst" => "1" - }, "test/buildtest_c_core_object" => { "noinst" => "1" }, @@ -970,6 +1141,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => { "noinst" => "1" }, + "test/buildtest_c_e_ostime" => { + "noinst" => "1" + }, "test/buildtest_c_ebcdic" => { "noinst" => "1" }, @@ -997,12 +1171,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => { "noinst" => "1" }, + "test/buildtest_c_hpke" => { + "noinst" => "1" + }, "test/buildtest_c_http" => { "noinst" => "1" }, "test/buildtest_c_idea" => { "noinst" => "1" }, + "test/buildtest_c_indicator" => { + "noinst" => "1" + }, "test/buildtest_c_kdf" => { "noinst" => "1" }, @@ -1018,6 +1198,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => { "noinst" => "1" }, + "test/buildtest_c_ml_kem" => { + "noinst" => "1" + }, "test/buildtest_c_modes" => { "noinst" => "1" }, @@ -1048,6 +1231,9 @@ our %unified_info = ( "test/buildtest_c_provider" => { "noinst" => "1" }, + "test/buildtest_c_quic" => { + "noinst" => "1" + }, "test/buildtest_c_rand" => { "noinst" => "1" }, @@ -1090,6 +1276,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => { "noinst" => "1" }, + "test/buildtest_c_thread" => { + "noinst" => "1" + }, "test/buildtest_c_tls1" => { "noinst" => "1" }, @@ -1105,6 +1294,12 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => { "noinst" => "1" }, + "test/byteorder_test" => { + "noinst" => "1" + }, + "test/ca_internals_test" => { + "noinst" => "1" + }, "test/casttest" => { "noinst" => "1" }, @@ -1189,6 +1384,9 @@ our %unified_info = ( "test/danetest" => { "noinst" => "1" }, + "test/decoder_propq_test" => { + "noinst" => "1" + }, "test/defltfips_test" => { "noinst" => "1" }, @@ -1261,15 +1459,24 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => { "noinst" => "1" }, + "test/evp_pkey_dhkem_test" => { + "noinst" => "1" + }, "test/evp_pkey_dparams_test" => { "noinst" => "1" }, "test/evp_pkey_provided_test" => { "noinst" => "1" }, + "test/evp_skey_test" => { + "noinst" => "1" + }, "test/evp_test" => { "noinst" => "1" }, + "test/evp_xof_test" => { + "noinst" => "1" + }, "test/exdatatest" => { "noinst" => "1" }, @@ -1297,6 +1504,9 @@ our %unified_info = ( "test/hmactest" => { "noinst" => "1" }, + "test/hpke_test" => { + "noinst" => "1" + }, "test/http_test" => { "noinst" => "1" }, @@ -1306,12 +1516,18 @@ our %unified_info = ( "test/igetest" => { "noinst" => "1" }, + "test/json_test" => { + "noinst" => "1" + }, "test/keymgmt_internal_test" => { "noinst" => "1" }, "test/lhash_test" => { "noinst" => "1" }, + "test/list_test" => { + "noinst" => "1" + }, "test/localetest" => { "noinst" => "1" }, @@ -1321,9 +1537,21 @@ our %unified_info = ( "test/mdc2test" => { "noinst" => "1" }, + "test/membio_test" => { + "noinst" => "1" + }, "test/memleaktest" => { "noinst" => "1" }, + "test/ml_dsa_test" => { + "noinst" => "1" + }, + "test/ml_kem_evp_extra_test" => { + "noinst" => "1" + }, + "test/ml_kem_internal_test" => { + "noinst" => "1" + }, "test/modes_internal_test" => { "noinst" => "1" }, @@ -1342,6 +1570,9 @@ our %unified_info = ( "test/packettest" => { "noinst" => "1" }, + "test/pairwise_fail_test" => { + "noinst" => "1" + }, "test/param_build_test" => { "noinst" => "1" }, @@ -1366,6 +1597,9 @@ our %unified_info = ( "test/pemtest" => { "noinst" => "1" }, + "test/pkcs12_api_test" => { + "noinst" => "1" + }, "test/pkcs12_format_test" => { "noinst" => "1" }, @@ -1381,6 +1615,9 @@ our %unified_info = ( "test/poly1305_internal_test" => { "noinst" => "1" }, + "test/priority_queue_test" => { + "noinst" => "1" + }, "test/property_test" => { "noinst" => "1" }, @@ -1390,6 +1627,9 @@ our %unified_info = ( "test/provfetchtest" => { "noinst" => "1" }, + "test/provider_default_search_path_test" => { + "noinst" => "1" + }, "test/provider_fallback_test" => { "noinst" => "1" }, @@ -1408,6 +1648,72 @@ our %unified_info = ( "test/punycode_test" => { "noinst" => "1" }, + "test/quic_ackm_test" => { + "noinst" => "1" + }, + "test/quic_cc_test" => { + "noinst" => "1" + }, + "test/quic_cfq_test" => { + "noinst" => "1" + }, + "test/quic_client_test" => { + "noinst" => "1" + }, + "test/quic_fc_test" => { + "noinst" => "1" + }, + "test/quic_fifd_test" => { + "noinst" => "1" + }, + "test/quic_lcidm_test" => { + "noinst" => "1" + }, + "test/quic_multistream_test" => { + "noinst" => "1" + }, + "test/quic_newcid_test" => { + "noinst" => "1" + }, + "test/quic_qlog_test" => { + "noinst" => "1" + }, + "test/quic_radix_test" => { + "noinst" => "1" + }, + "test/quic_rcidm_test" => { + "noinst" => "1" + }, + "test/quic_record_test" => { + "noinst" => "1" + }, + "test/quic_srt_gen_test" => { + "noinst" => "1" + }, + "test/quic_srtm_test" => { + "noinst" => "1" + }, + "test/quic_stream_test" => { + "noinst" => "1" + }, + "test/quic_tserver_test" => { + "noinst" => "1" + }, + "test/quic_txp_test" => { + "noinst" => "1" + }, + "test/quic_txpim_test" => { + "noinst" => "1" + }, + "test/quic_wire_test" => { + "noinst" => "1" + }, + "test/quicapitest" => { + "noinst" => "1" + }, + "test/quicfaultstest" => { + "noinst" => "1" + }, "test/rand_status_test" => { "noinst" => "1" }, @@ -1423,12 +1729,15 @@ our %unified_info = ( "test/rc5test" => { "noinst" => "1" }, - "test/rdrand_sanitytest" => { + "test/rdcpu_sanitytest" => { "noinst" => "1" }, "test/recordlentest" => { "noinst" => "1" }, + "test/rpktest" => { + "noinst" => "1" + }, "test/rsa_complex" => { "noinst" => "1" }, @@ -1441,6 +1750,12 @@ our %unified_info = ( "test/rsa_test" => { "noinst" => "1" }, + "test/rsa_x931_test" => { + "noinst" => "1" + }, + "test/safe_math_test" => { + "noinst" => "1" + }, "test/sanitytest" => { "noinst" => "1" }, @@ -1456,6 +1771,9 @@ our %unified_info = ( "test/siphash_internal_test" => { "noinst" => "1" }, + "test/slh_dsa_test" => { + "noinst" => "1" + }, "test/sm2_internal_test" => { "noinst" => "1" }, @@ -1477,6 +1795,9 @@ our %unified_info = ( "test/ssl_ctx_test" => { "noinst" => "1" }, + "test/ssl_handshake_rtt_test" => { + "noinst" => "1" + }, "test/ssl_old_test" => { "noinst" => "1" }, @@ -1498,12 +1819,18 @@ our %unified_info = ( "test/stack_test" => { "noinst" => "1" }, + "test/strtoultest" => { + "noinst" => "1" + }, "test/sysdefaulttest" => { "noinst" => "1" }, "test/test_test" => { "noinst" => "1" }, + "test/threadpool_test" => { + "noinst" => "1" + }, "test/threadstest" => { "noinst" => "1" }, @@ -1513,12 +1840,18 @@ our %unified_info = ( "test/time_offset_test" => { "noinst" => "1" }, + "test/time_test" => { + "noinst" => "1" + }, "test/tls13ccstest" => { "noinst" => "1" }, "test/tls13encryptiontest" => { "noinst" => "1" }, + "test/tls13groupselection_test" => { + "noinst" => "1" + }, "test/trace_api_test" => { "noinst" => "1" }, @@ -1546,6 +1879,9 @@ our %unified_info = ( "test/wpackettest" => { "noinst" => "1" }, + "test/x509_acert_test" => { + "noinst" => "1" + }, "test/x509_check_cert_pkey_test" => { "noinst" => "1" }, @@ -1555,6 +1891,15 @@ our %unified_info = ( "test/x509_internal_test" => { "noinst" => "1" }, + "test/x509_load_cert_file_test" => { + "noinst" => "1" + }, + "test/x509_req_test" => { + "noinst" => "1" + }, + "test/x509_test" => { + "noinst" => "1" + }, "test/x509_time_test" => { "noinst" => "1" }, @@ -1598,6 +1943,9 @@ our %unified_info = ( "providers/libfips.a" => [ "FIPS_MODULE" ], + "test/endecode_test" => [ + "STATIC_LEGACY" + ], "test/evp_extra_test" => [ "STATIC_LEGACY" ], @@ -1610,14 +1958,21 @@ our %unified_info = ( }, "depends" => { "" => [ + "OpenSSLConfigVersion.cmake", + "crypto/params_idx.c", + "exporters/OpenSSLConfigVersion.cmake", + "exporters/openssl.pc", "include/crypto/bn_conf.h", "include/crypto/dso_conf.h", + "include/internal/param_names.h", "include/openssl/asn1.h", "include/openssl/asn1t.h", "include/openssl/bio.h", "include/openssl/cmp.h", "include/openssl/cms.h", + "include/openssl/comp.h", "include/openssl/conf.h", + "include/openssl/core_names.h", "include/openssl/crmf.h", "include/openssl/crypto.h", "include/openssl/ct.h", @@ -1634,10 +1989,22 @@ our %unified_info = ( "include/openssl/ssl.h", "include/openssl/ui.h", "include/openssl/x509.h", + "include/openssl/x509_acert.h", "include/openssl/x509_vfy.h", "include/openssl/x509v3.h", + "openssl.pc", "test/provider_internal_test.cnf" ], + "OpenSSLConfig.cmake" => [ + "builddata.pm" + ], + "OpenSSLConfigVersion.cmake" => [ + "OpenSSLConfig.cmake", + "builddata.pm" + ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/progs.h" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/progs.h" ], @@ -1783,6 +2150,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/progs.h" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/progs.h" + ], "apps/openssl-bin-smime.o" => [ "apps/progs.h" ], @@ -1871,6 +2241,9 @@ our %unified_info = ( "crypto/libcrypto-lib-info.o" => [ "crypto/buildinf.h" ], + "crypto/params_idx.c" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "crypto/rc4/rc4-586.S" => [ "crypto/perlasm/x86asm.pl" ], @@ -2036,6 +2409,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -2177,6 +2553,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -2213,6 +2592,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -2228,6 +2610,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -2300,6 +2685,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -2366,6 +2754,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -2465,6 +2856,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -2603,6 +3000,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -2720,6 +3120,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -2807,6 +3213,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -2879,9 +3288,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -2897,12 +3312,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -2972,9 +3393,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -2984,12 +3414,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -3005,9 +3447,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -3032,6 +3480,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -3047,6 +3498,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -3083,6 +3537,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -3356,6 +3813,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -3395,6 +3855,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -3416,6 +3879,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -3530,6 +3996,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -3557,9 +4026,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -3575,6 +4056,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -3584,12 +4068,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -3608,12 +4098,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -3623,9 +4125,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -3638,9 +4146,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -3656,24 +4176,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -3686,6 +4227,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -3695,8 +4242,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -3716,6 +4263,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -3764,6 +4326,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -3830,6 +4395,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -3953,9 +4521,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -3971,6 +4545,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -3995,9 +4572,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -4031,6 +4617,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -4088,15 +4677,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -4106,6 +4707,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -4127,9 +4731,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -4145,6 +4755,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -4157,9 +4770,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -4190,9 +4800,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -4208,12 +4815,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -4268,6 +4929,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -4277,9 +4941,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -4427,6 +5088,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -4568,6 +5232,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -4604,6 +5271,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -4619,6 +5289,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -4691,6 +5364,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -4757,6 +5433,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -4856,6 +5535,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -4994,6 +5679,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -5111,6 +5799,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -5198,6 +5892,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -5270,9 +5967,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -5288,12 +5991,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -5363,9 +6072,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -5375,12 +6093,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -5396,9 +6126,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -5423,6 +6159,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -5438,6 +6177,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -5474,6 +6216,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -5747,6 +6492,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -5786,6 +6534,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -5807,6 +6558,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -5921,6 +6675,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -5948,9 +6705,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -5966,6 +6735,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -5975,12 +6747,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -5999,12 +6777,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -6014,9 +6804,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -6029,9 +6825,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -6047,24 +6855,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -6077,6 +6906,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -6086,8 +6921,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -6107,6 +6942,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -6155,6 +7005,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -6221,6 +7074,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -6344,9 +7200,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -6362,6 +7224,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -6386,9 +7251,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -6422,6 +7296,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -6479,15 +7356,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -6497,6 +7386,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -6518,9 +7410,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -6536,6 +7434,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -6548,9 +7449,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -6581,9 +7479,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -6599,12 +7494,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -6659,6 +7608,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -6668,9 +7620,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -6850,6 +7799,10 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod.in", "doc/perlvars.pm" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in", + "doc/perlvars.pm" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in", "doc/perlvars.pm" @@ -6889,6 +7842,27 @@ our %unified_info = ( "doc/man7/openssl_user_macros.pod" => [ "doc/man7/openssl_user_macros.pod.in" ], + "exporters/OpenSSLConfig.cmake" => [ + "installdata.pm" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/OpenSSLConfig.cmake", + "installdata.pm" + ], + "exporters/libcrypto.pc" => [ + "installdata.pm" + ], + "exporters/libssl.pc" => [ + "installdata.pm" + ], + "exporters/openssl.pc" => [ + "exporters/libcrypto.pc", + "exporters/libssl.pc", + "installdata.pm" + ], + "fuzz/acert-test" => [ + "libcrypto" + ], "fuzz/asn1-test" => [ "libcrypto", "libssl" @@ -6921,17 +7895,85 @@ our %unified_info = ( "fuzz/ct-test" => [ "libcrypto" ], + "fuzz/decoder-test" => [ + "libcrypto" + ], + "fuzz/dtlsclient-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/dtlsserver-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/hashtable-test" => [ + "libcrypto.a" + ], + "fuzz/ml-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/ml-kem-test" => [ + "libcrypto.a" + ], + "fuzz/pem-test" => [ + "libcrypto.a" + ], + "fuzz/provider-test" => [ + "libcrypto" + ], + "fuzz/punycode-test" => [ + "libcrypto.a" + ], + "fuzz/quic-client-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-lcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-rcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-server-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-srtm-test" => [ + "libcrypto.a", + "libssl.a" + ], "fuzz/server-test" => [ "libcrypto", "libssl" ], + "fuzz/slh-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/smime-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/v3name-test" => [ + "libcrypto.a" + ], "fuzz/x509-test" => [ "libcrypto" ], + "include/internal/param_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], + "include/openssl/core_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "libcrypto.ld" => [ "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libcrypto.pc" => [ + "builddata.pm" + ], "libssl" => [ "libcrypto" ], @@ -6939,6 +7981,14 @@ our %unified_info = ( "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libssl.pc" => [ + "builddata.pm" + ], + "openssl.pc" => [ + "builddata.pm", + "libcrypto.pc", + "libssl.pc" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/DIGESTS.asn1", "providers/common/der/NIST.asn1", @@ -6956,11 +8006,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7000,6 +8058,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov/der_rsa.h" ], @@ -7007,6 +8071,12 @@ our %unified_info = ( "providers/common/include/prov/der_digests.h", "providers/common/include/prov/der_rsa.h" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov/der_wrap.h" ], @@ -7046,11 +8116,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7083,9 +8161,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov/der_sm2.h" ], @@ -7098,9 +8182,15 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/legacy" => [ "libcrypto", "providers/liblegacy.a" @@ -7178,6 +8268,14 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_addr_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/bio_base64_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_callback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7186,6 +8284,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_dgram_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_enc_test" => [ "libcrypto", "test/libtestutil.a" @@ -7194,6 +8296,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_meth_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_prefix_text" => [ "libcrypto", "test/libtestutil.a" @@ -7206,6 +8312,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_tfo_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bioprinttest" => [ "libcrypto", "test/libtestutil.a" @@ -7218,6 +8328,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/build_wincrypt_test" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_aes" => [ "libcrypto", "libssl" @@ -7238,6 +8352,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_byteorder" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_camellia" => [ "libcrypto", "libssl" @@ -7270,10 +8388,6 @@ our %unified_info = ( "libcrypto", "libssl" ], - "test/buildtest_c_core_names" => [ - "libcrypto", - "libssl" - ], "test/buildtest_c_core_object" => [ "libcrypto", "libssl" @@ -7306,6 +8420,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_e_ostime" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_ebcdic" => [ "libcrypto", "libssl" @@ -7342,6 +8460,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_hpke" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_http" => [ "libcrypto", "libssl" @@ -7350,6 +8472,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_indicator" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_kdf" => [ "libcrypto", "libssl" @@ -7370,6 +8496,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_ml_kem" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_modes" => [ "libcrypto", "libssl" @@ -7410,6 +8540,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_quic" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_rand" => [ "libcrypto", "libssl" @@ -7466,6 +8600,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_thread" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_tls1" => [ "libcrypto", "libssl" @@ -7486,10 +8624,23 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/byteorder_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ca_internals_test" => [ + "libssl", + "test/libtestutil.a" + ], "test/casttest" => [ "libcrypto", "test/libtestutil.a" ], + "test/cert_comp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/chacha_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7603,7 +8754,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], - "test/defltfips_test" => [ + "test/decoder_propq_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/defltfips_test" => [ "libcrypto", "test/libtestutil.a" ], @@ -7659,6 +8814,8 @@ our %unified_info = ( ], "test/endecode_test" => [ "libcrypto.a", + "providers/libcommon.a", + "providers/liblegacy.a", "test/libtestutil.a" ], "test/endecoder_legacy_test" => [ @@ -7702,6 +8859,10 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => [ "libcrypto" ], + "test/evp_pkey_dhkem_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/evp_pkey_dparams_test" => [ "libcrypto", "test/libtestutil.a" @@ -7710,10 +8871,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/evp_skey_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/evp_xof_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/exdatatest" => [ "libcrypto", "test/libtestutil.a" @@ -7752,6 +8921,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/hpke_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/http_test" => [ "libcrypto", "test/libtestutil.a" @@ -7764,17 +8937,25 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/json_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/keymgmt_internal_test" => [ "libcrypto.a", "test/libtestutil.a" ], "test/lhash_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/libtestutil.a" => [ "libcrypto" ], + "test/list_test" => [ + "test/libtestutil.a" + ], "test/localetest" => [ "libcrypto", "test/libtestutil.a" @@ -7787,10 +8968,26 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/membio_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/memleaktest" => [ "libcrypto", "test/libtestutil.a" ], + "test/ml_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_evp_extra_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_internal_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/modes_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7815,6 +9012,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pairwise_fail_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/param_build_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7847,6 +9048,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pkcs12_api_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/pkcs12_format_test" => [ "libcrypto", "test/libtestutil.a" @@ -7867,6 +9072,11 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/priority_queue_test" => [ + "libcrypto", + "libssl.a", + "test/libtestutil.a" + ], "test/property_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7879,6 +9089,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/provider_default_search_path_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/provider_fallback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7903,12 +9117,122 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/quic_ackm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cfq_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_client_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fifd_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_lcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_multistream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_newcid_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_qlog_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_radix_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_rcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_record_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srt_gen_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srtm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_stream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_tserver_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txpim_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_wire_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicapitest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicfaultstest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/rand_status_test" => [ "libcrypto", "test/libtestutil.a" ], "test/rand_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/rc2test" => [ @@ -7923,7 +9247,7 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "libcrypto.a", "test/libtestutil.a" ], @@ -7932,6 +9256,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/rpktest" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/rsa_mp_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7944,10 +9273,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/sanitytest" => [ + "test/rsa_x931_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/safe_math_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/sanitytest" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/secmemtest" => [ "libcrypto", "test/libtestutil.a" @@ -7965,6 +9302,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/slh_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/sm2_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7994,6 +9335,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/ssl_handshake_rtt_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/ssl_old_test" => [ "libcrypto.a", "libssl.a", @@ -8010,8 +9356,8 @@ our %unified_info = ( "test/libtestutil.a" ], "test/sslapitest" => [ - "libcrypto", - "libssl", + "libcrypto.a", + "libssl.a", "test/libtestutil.a" ], "test/sslbuffertest" => [ @@ -8028,6 +9374,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/strtoultest" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/sysdefaulttest" => [ "libcrypto", "libssl", @@ -8037,8 +9387,12 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/threadpool_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/threadstest" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/threadstest_fips" => [ @@ -8049,6 +9403,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/time_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/tls13ccstest" => [ "libcrypto", "libssl", @@ -8059,6 +9417,11 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/tls13groupselection_test" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/trace_api_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8096,6 +9459,10 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/x509_acert_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_check_cert_pkey_test" => [ "libcrypto", "test/libtestutil.a" @@ -8108,6 +9475,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/x509_load_cert_file_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_req_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_time_test" => [ "libcrypto", "test/libtestutil.a" @@ -8122,9 +9501,13 @@ our %unified_info = ( }, "dirinfo" => { "apps" => { + "deps" => [ + "apps/ca_internals_test-bin-ca.o" + ], "products" => { "bin" => [ - "apps/openssl" + "apps/openssl", + "test/ca_internals_test" ], "script" => [ "apps/CA.pl", @@ -8135,6 +9518,14 @@ our %unified_info = ( "apps/lib" => { "deps" => [ "apps/lib/openssl-bin-cmp_mock_srv.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", "apps/lib/cmp_client_test-bin-cmp_mock_srv.o", "apps/lib/uitest-bin-apps_ui.o", "apps/lib/libapps-lib-app_libctx.o", @@ -8143,12 +9534,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -8159,6 +9552,7 @@ our %unified_info = ( "products" => { "bin" => [ "apps/openssl", + "test/ca_internals_test", "test/cmp_client_test", "test/uitest" ], @@ -8170,8 +9564,12 @@ our %unified_info = ( }, "crypto" => { "deps" => [ + "crypto/asn1_time_test-bin-ctype.o", + "crypto/ca_internals_test-bin-ctype.o", + "crypto/packettest-bin-quic_vlint.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -8181,10 +9579,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -8202,6 +9603,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -8209,12 +9611,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libfips-lib-asn1_dsa.o", @@ -8237,6 +9643,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -8244,9 +9651,15 @@ our %unified_info = ( "crypto/libfips-lib-threads_lib.o", "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", - "crypto/libfips-lib-threads_win.o" + "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test", + "test/packettest" + ], "lib" => [ "libcrypto", "providers/libfips.a" @@ -8287,6 +9700,8 @@ our %unified_info = ( }, "crypto/asn1" => { "deps" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", "crypto/asn1/libcrypto-lib-a_bitstr.o", "crypto/asn1/libcrypto-lib-a_d2i_fp.o", "crypto/asn1/libcrypto-lib-a_digest.o", @@ -8353,6 +9768,10 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test" + ], "lib" => [ "libcrypto" ] @@ -8418,6 +9837,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -8574,6 +9994,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -8941,7 +10362,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", - "crypto/err/libcrypto-lib-err_prn.o" + "crypto/err/libcrypto-lib-err_mark.o", + "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o" ], "products" => { "lib" => [ @@ -9042,7 +10465,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/evp/libfips-lib-asymcipher.o", "crypto/evp/libfips-lib-dh_support.o", "crypto/evp/libfips-lib-digest.o", @@ -9058,14 +10483,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", - "crypto/evp/libfips-lib-signature.o" + "crypto/evp/libfips-lib-s_lib.o", + "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o" ], "products" => { "lib" => [ @@ -9098,6 +10524,20 @@ our %unified_info = ( ] } }, + "crypto/hashtable" => { + "deps" => [ + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/hmac" => { "deps" => [ "crypto/hmac/libcrypto-lib-hmac.o", @@ -9110,6 +10550,17 @@ our %unified_info = ( ] } }, + "crypto/hpke" => { + "deps" => [ + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, "crypto/http" => { "deps" => [ "crypto/http/libcrypto-lib-http_client.o", @@ -9193,6 +10644,44 @@ our %unified_info = ( ] } }, + "crypto/ml_dsa" => { + "deps" => [ + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ml_kem" => { + "deps" => [ + "crypto/ml_kem/libcrypto-lib-ml_kem.o", + "crypto/ml_kem/libfips-lib-ml_kem.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/modes" => { "deps" => [ "crypto/modes/libcrypto-lib-cbc128.o", @@ -9206,6 +10695,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -9213,7 +10703,8 @@ our %unified_info = ( "crypto/modes/libfips-lib-gcm128.o", "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", - "crypto/modes/libfips-lib-xts128.o" + "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o" ], "products" => { "lib" => [ @@ -9356,6 +10847,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rand/libfips-lib-rand_lib.o" ], @@ -9500,6 +10992,36 @@ our %unified_info = ( ] } }, + "crypto/slh_dsa" => { + "deps" => [ + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/sm2" => { "deps" => [ "crypto/sm2/libcrypto-lib-sm2_crypt.o", @@ -9573,6 +11095,38 @@ our %unified_info = ( ] } }, + "crypto/thread" => { + "deps" => [ + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/thread/arch" => { + "deps" => [ + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/ts" => { "deps" => [ "crypto/ts/libcrypto-lib-ts_asn1.o", @@ -9639,14 +11193,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -9655,12 +11217,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -9668,13 +11235,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -9692,6 +11266,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -9701,6 +11276,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -9728,6 +11304,7 @@ our %unified_info = ( "fuzz" => { "products" => { "bin" => [ + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -9738,13 +11315,31 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test" ] } }, "providers" => { "deps" => [ + "providers/endecode_test-bin-legacyprov.o", "providers/evp_extra_test-bin-legacyprov.o", "providers/libcrypto-lib-baseprov.o", "providers/libcrypto-lib-defltprov.o", @@ -9754,6 +11349,7 @@ our %unified_info = ( ], "products" => { "bin" => [ + "test/endecode_test", "test/evp_extra_test" ], "dso" => [ @@ -9805,8 +11401,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/der/libdefault-lib-der_rsa_sig.o", "providers/common/der/libdefault-lib-der_sm2_gen.o", @@ -9825,6 +11425,7 @@ our %unified_info = ( "providers/fips" => { "deps" => [ "providers/fips/fips-dso-fips_entry.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o" @@ -9868,6 +11469,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -9892,7 +11496,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -9989,7 +11599,10 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", - "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" + "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" ], "products" => { "lib" => [ @@ -10017,7 +11630,9 @@ our %unified_info = ( }, "providers/implementations/kdfs" => { "deps" => [ + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -10036,7 +11651,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", - "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" + "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" ], "products" => { "lib" => [ @@ -10048,13 +11664,22 @@ our %unified_info = ( }, "providers/implementations/kem" => { "deps" => [ + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", - "providers/implementations/kem/libfips-lib-rsa_kem.o" + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", + "providers/implementations/kem/libfips-lib-rsa_kem.o", + "providers/implementations/kem/libtemplate-lib-template_kem.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10066,19 +11691,29 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", - "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10106,18 +11741,18 @@ our %unified_info = ( }, "providers/implementations/rands" => { "deps" => [ - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o" ], "products" => { @@ -10146,13 +11781,31 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", - "providers/implementations/signature/libfips-lib-rsa_sig.o" + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", + "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/skeymgmt" => { + "deps" => [ + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o" ], "products" => { "lib" => [ @@ -10180,14 +11833,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -10203,32 +11857,107 @@ our %unified_info = ( "ssl/libssl-lib-t1_trce.o", "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", - "ssl/libssl-lib-tls_srp.o", - "ssl/libdefault-lib-s3_cbc.o", - "ssl/libfips-lib-s3_cbc.o" + "ssl/libssl-lib-tls_srp.o" ], "products" => { "lib" => [ - "libssl", - "providers/libdefault.a", - "providers/libfips.a" + "libssl" + ] + } + }, + "ssl/quic" => { + "deps" => [ + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, "ssl/record" => { "deps" => [ - "ssl/record/libssl-lib-dtls1_bitmap.o", "ssl/record/libssl-lib-rec_layer_d1.o", - "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/libssl-lib-rec_layer_s3.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "ssl/record/methods" => { + "deps" => [ + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/record/methods/libcommon-lib-tls_pad.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o", + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "products" => { "lib" => [ "libssl", - "providers/libcommon.a" + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "ssl/rio" => { + "deps" => [ + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, @@ -10266,9 +11995,40 @@ our %unified_info = ( "test/helpers/dtlstest-bin-ssltestlib.o", "test/helpers/endecode_test-bin-predefined_dhparams.o", "test/helpers/fatalerrtest-bin-ssltestlib.o", + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/helpers/pkcs12_api_test-bin-pkcs12.o", "test/helpers/pkcs12_format_test-bin-pkcs12.o", + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", "test/helpers/recordlentest-bin-ssltestlib.o", + "test/helpers/rpktest-bin-ssltestlib.o", "test/helpers/servername_test-bin-ssltestlib.o", + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/helpers/ssl_test-bin-handshake.o", "test/helpers/ssl_test-bin-handshake_srp.o", @@ -10277,7 +12037,8 @@ our %unified_info = ( "test/helpers/sslapitest-bin-ssltestlib.o", "test/helpers/sslbuffertest-bin-ssltestlib.o", "test/helpers/sslcorrupttest-bin-ssltestlib.o", - "test/helpers/tls13ccstest-bin-ssltestlib.o" + "test/helpers/tls13ccstest-bin-ssltestlib.o", + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" ], "products" => { "bin" => [ @@ -10295,16 +12056,37 @@ our %unified_info = ( "test/dtlstest", "test/endecode_test", "test/fatalerrtest", + "test/json_test", + "test/pkcs12_api_test", "test/pkcs12_format_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_radix_test", + "test/quic_srt_gen_test", + "test/quicapitest", + "test/quicfaultstest", "test/recordlentest", + "test/rpktest", "test/servername_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", "test/sslapitest", "test/sslbuffertest", "test/sslcorrupttest", - "test/tls13ccstest" + "test/tls13ccstest", + "test/tls13groupselection_test" + ] + } + }, + "test/radix" => { + "deps" => [ + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "products" => { + "bin" => [ + "test/quic_radix_test" ] } }, @@ -10316,6 +12098,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -10351,6 +12134,12 @@ our %unified_info = ( } }, "generate" => { + "OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], "apps/progs.c" => [ "apps/progs.pl", "\"-C\"", @@ -10361,6 +12150,19 @@ our %unified_info = ( "\"-H\"", "\$(APPS_OPENSSL)" ], + "builddata.pm" => [ + "util/mkinstallvars.pl", + "PREFIX=.", + "BINDIR=apps", + "APPLINKDIR=ms", + "LIBDIR=", + "INCLUDEDIR=include", + "\"INCLUDEDIR=\$(SRCDIR)/include\"", + "ENGINESDIR=engines", + "MODULESDIR=providers", + "\"VERSION=\$(VERSION)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"" + ], "crypto/aes/aes-586.S" => [ "crypto/aes/asm/aes-586.pl" ], @@ -10382,6 +12184,24 @@ our %unified_info = ( "crypto/aes/aes-ppc.s" => [ "crypto/aes/asm/aes-ppc.pl" ], + "crypto/aes/aes-riscv32-zkn.s" => [ + "crypto/aes/asm/aes-riscv32-zkn.pl" + ], + "crypto/aes/aes-riscv64-zkn.s" => [ + "crypto/aes/asm/aes-riscv64-zkn.pl" + ], + "crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvbb-zvkg-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkb-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkb-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkned.pl" + ], + "crypto/aes/aes-riscv64.s" => [ + "crypto/aes/asm/aes-riscv64.pl" + ], "crypto/aes/aes-s390x.S" => [ "crypto/aes/asm/aes-s390x.pl" ], @@ -10409,6 +12229,9 @@ our %unified_info = ( "crypto/aes/aesni-x86_64.s" => [ "crypto/aes/asm/aesni-x86_64.pl" ], + "crypto/aes/aesni-xts-avx512.s" => [ + "crypto/aes/asm/aesni-xts-avx512.pl" + ], "crypto/aes/aesp8-ppc.s" => [ "crypto/aes/asm/aesp8-ppc.pl" ], @@ -10421,12 +12244,18 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.S" => [ "crypto/aes/asm/bsaes-armv7.pl" ], + "crypto/aes/bsaes-armv8.S" => [ + "crypto/aes/asm/bsaes-armv8.pl" + ], "crypto/aes/bsaes-x86_64.s" => [ "crypto/aes/asm/bsaes-x86_64.pl" ], "crypto/aes/vpaes-armv8.S" => [ "crypto/aes/asm/vpaes-armv8.pl" ], + "crypto/aes/vpaes-loongarch64.S" => [ + "crypto/aes/asm/vpaes-loongarch64.pl" + ], "crypto/aes/vpaes-ppc.s" => [ "crypto/aes/asm/vpaes-ppc.pl" ], @@ -10487,15 +12316,33 @@ our %unified_info = ( "crypto/bn/ppc-mont.s" => [ "crypto/bn/asm/ppc-mont.pl" ], + "crypto/bn/ppc64-mont-fixed.s" => [ + "crypto/bn/asm/ppc64-mont-fixed.pl" + ], "crypto/bn/ppc64-mont.s" => [ "crypto/bn/asm/ppc64-mont.pl" ], + "crypto/bn/rsaz-2k-avx512.s" => [ + "crypto/bn/asm/rsaz-2k-avx512.pl" + ], + "crypto/bn/rsaz-2k-avxifma.s" => [ + "crypto/bn/asm/rsaz-2k-avxifma.pl" + ], + "crypto/bn/rsaz-3k-avx512.s" => [ + "crypto/bn/asm/rsaz-3k-avx512.pl" + ], + "crypto/bn/rsaz-3k-avxifma.s" => [ + "crypto/bn/asm/rsaz-3k-avxifma.pl" + ], + "crypto/bn/rsaz-4k-avx512.s" => [ + "crypto/bn/asm/rsaz-4k-avx512.pl" + ], + "crypto/bn/rsaz-4k-avxifma.s" => [ + "crypto/bn/asm/rsaz-4k-avxifma.pl" + ], "crypto/bn/rsaz-avx2.s" => [ "crypto/bn/asm/rsaz-avx2.pl" ], - "crypto/bn/rsaz-avx512.s" => [ - "crypto/bn/asm/rsaz-avx512.pl" - ], "crypto/bn/rsaz-x86_64.s" => [ "crypto/bn/asm/rsaz-x86_64.pl" ], @@ -10557,6 +12404,9 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.S" => [ "crypto/chacha/asm/chacha-armv4.pl" ], + "crypto/chacha/chacha-armv8-sve.S" => [ + "crypto/chacha/asm/chacha-armv8-sve.pl" + ], "crypto/chacha/chacha-armv8.S" => [ "crypto/chacha/asm/chacha-armv8.pl" ], @@ -10569,9 +12419,19 @@ our %unified_info = ( "crypto/chacha/chacha-ia64.s" => [ "crypto/chacha/chacha-ia64.S" ], + "crypto/chacha/chacha-loongarch64.S" => [ + "crypto/chacha/asm/chacha-loongarch64.pl" + ], "crypto/chacha/chacha-ppc.s" => [ "crypto/chacha/asm/chacha-ppc.pl" ], + "crypto/chacha/chacha-riscv64-v-zbb-zvkb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl", + "zvkb" + ], + "crypto/chacha/chacha-riscv64-v-zbb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl" + ], "crypto/chacha/chacha-s390x.S" => [ "crypto/chacha/asm/chacha-s390x.pl" ], @@ -10581,6 +12441,9 @@ our %unified_info = ( "crypto/chacha/chacha-x86_64.s" => [ "crypto/chacha/asm/chacha-x86_64.pl" ], + "crypto/chacha/chachap10-ppc.s" => [ + "crypto/chacha/asm/chachap10-ppc.pl" + ], "crypto/des/crypt586.S" => [ "crypto/des/asm/crypt586.pl" ], @@ -10593,6 +12456,9 @@ our %unified_info = ( "crypto/des/dest4-sparcv9.S" => [ "crypto/des/asm/dest4-sparcv9.pl" ], + "crypto/ec/ecp_nistp384-ppc64.s" => [ + "crypto/ec/asm/ecp_nistp384-ppc64.pl" + ], "crypto/ec/ecp_nistp521-ppc64.s" => [ "crypto/ec/asm/ecp_nistp521-ppc64.pl" ], @@ -10617,6 +12483,9 @@ our %unified_info = ( "crypto/ec/ecp_nistz256-x86_64.s" => [ "crypto/ec/asm/ecp_nistz256-x86_64.pl" ], + "crypto/ec/ecp_sm2p256-armv8.S" => [ + "crypto/ec/asm/ecp_sm2p256-armv8.pl" + ], "crypto/ec/x25519-ppc64.s" => [ "crypto/ec/asm/x25519-ppc64.pl" ], @@ -10626,18 +12495,39 @@ our %unified_info = ( "crypto/ia64cpuid.s" => [ "crypto/ia64cpuid.S" ], + "crypto/loongarch64cpuid.s" => [ + "crypto/loongarch64cpuid.pl" + ], "crypto/md5/md5-586.S" => [ "crypto/md5/asm/md5-586.pl" ], + "crypto/md5/md5-aarch64.S" => [ + "crypto/md5/asm/md5-aarch64.pl" + ], + "crypto/md5/md5-loongarch64.S" => [ + "crypto/md5/asm/md5-loongarch64.pl" + ], "crypto/md5/md5-sparcv9.S" => [ "crypto/md5/asm/md5-sparcv9.pl" ], "crypto/md5/md5-x86_64.s" => [ "crypto/md5/asm/md5-x86_64.pl" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.S" => [ + "crypto/modes/asm/aes-gcm-armv8-unroll8_64.pl" + ], "crypto/modes/aes-gcm-armv8_64.S" => [ "crypto/modes/asm/aes-gcm-armv8_64.pl" ], + "crypto/modes/aes-gcm-avx512.s" => [ + "crypto/modes/asm/aes-gcm-avx512.pl" + ], + "crypto/modes/aes-gcm-ppc.s" => [ + "crypto/modes/asm/aes-gcm-ppc.pl" + ], + "crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s" => [ + "crypto/modes/asm/aes-gcm-riscv64-zvkb-zvkg-zvkned.pl" + ], "crypto/modes/aesni-gcm-x86_64.s" => [ "crypto/modes/asm/aesni-gcm-x86_64.pl" ], @@ -10656,6 +12546,15 @@ our %unified_info = ( "crypto/modes/ghash-parisc.s" => [ "crypto/modes/asm/ghash-parisc.pl" ], + "crypto/modes/ghash-riscv64-zvkb-zvbc.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkb-zvbc.pl" + ], + "crypto/modes/ghash-riscv64-zvkg.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkg.pl" + ], + "crypto/modes/ghash-riscv64.s" => [ + "crypto/modes/asm/ghash-riscv64.pl" + ], "crypto/modes/ghash-s390x.S" => [ "crypto/modes/asm/ghash-s390x.pl" ], @@ -10674,6 +12573,9 @@ our %unified_info = ( "crypto/modes/ghashv8-armx.S" => [ "crypto/modes/asm/ghashv8-armx.pl" ], + "crypto/params_idx.c" => [ + "crypto/params_idx.c.in" + ], "crypto/pariscid.s" => [ "crypto/pariscid.pl" ], @@ -10734,6 +12636,12 @@ our %unified_info = ( "crypto/ripemd/rmd-586.S" => [ "crypto/ripemd/asm/rmd-586.pl" ], + "crypto/riscv32cpuid.s" => [ + "crypto/riscv32cpuid.pl" + ], + "crypto/riscv64cpuid.s" => [ + "crypto/riscv64cpuid.pl" + ], "crypto/s390xcpuid.S" => [ "crypto/s390xcpuid.pl" ], @@ -10842,6 +12750,9 @@ our %unified_info = ( "crypto/sha/sha256-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S" => [ + "crypto/sha/asm/sha256-riscv64-zvkb-zvknha_or_zvknhb.pl" + ], "crypto/sha/sha256-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -10878,6 +12789,9 @@ our %unified_info = ( "crypto/sha/sha512-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha512-riscv64-zvkb-zvknhb.S" => [ + "crypto/sha/asm/sha512-riscv64-zvkb-zvknhb.pl" + ], "crypto/sha/sha512-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -10890,6 +12804,24 @@ our %unified_info = ( "crypto/sha/sha512p8-ppc.s" => [ "crypto/sha/asm/sha512p8-ppc.pl" ], + "crypto/sm3/sm3-armv8.S" => [ + "crypto/sm3/asm/sm3-armv8.pl" + ], + "crypto/sm3/sm3-riscv64-zvksh.S" => [ + "crypto/sm3/asm/sm3-riscv64-zvksh.pl" + ], + "crypto/sm4/sm4-armv8.S" => [ + "crypto/sm4/asm/sm4-armv8.pl" + ], + "crypto/sm4/sm4-riscv64-zvksed.s" => [ + "crypto/sm4/asm/sm4-riscv64-zvksed.pl" + ], + "crypto/sm4/vpsm4-armv8.S" => [ + "crypto/sm4/asm/vpsm4-armv8.pl" + ], + "crypto/sm4/vpsm4_ex-armv8.S" => [ + "crypto/sm4/asm/vpsm4_ex-armv8.pl" + ], "crypto/uplink-ia64.s" => [ "ms/uplink-ia64.pl" ], @@ -11055,6 +12987,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -11196,6 +13131,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -11232,6 +13170,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -11247,6 +13188,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -11319,6 +13263,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -11385,6 +13332,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -11484,6 +13434,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -11622,6 +13578,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -11739,6 +13698,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -11826,6 +13791,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -11898,9 +13866,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -11916,12 +13890,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -11991,9 +13971,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -12003,12 +13992,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -12024,9 +14025,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -12051,6 +14058,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -12066,6 +14076,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -12102,6 +14115,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -12375,6 +14391,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -12414,6 +14433,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -12435,6 +14457,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -12549,6 +14574,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -12576,9 +14604,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -12594,6 +14634,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -12603,12 +14646,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -12627,12 +14676,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -12642,9 +14703,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -12657,9 +14724,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -12675,24 +14754,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -12705,6 +14805,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -12714,8 +14820,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -12735,6 +14841,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -12783,6 +14904,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -12849,6 +14973,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -12972,9 +15099,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -12990,6 +15123,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -13014,9 +15150,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -13050,6 +15195,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -13107,15 +15255,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -13125,6 +15285,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -13146,9 +15309,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -13164,6 +15333,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -13176,9 +15348,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -13209,9 +15378,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -13227,12 +15393,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -13287,6 +15507,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -13296,9 +15519,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -13446,6 +15666,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -13587,6 +15810,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -13623,6 +15849,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -13638,6 +15867,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -13710,6 +15942,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -13776,6 +16011,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -13875,6 +16113,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -14013,6 +16257,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -14130,6 +16377,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -14217,6 +16470,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -14289,9 +16545,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -14307,12 +16569,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -14382,9 +16650,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -14394,12 +16671,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -14415,9 +16704,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -14442,6 +16737,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -14457,6 +16755,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -14493,6 +16794,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -14766,6 +17070,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -14805,6 +17112,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -14826,6 +17136,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -14940,6 +17253,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -14967,9 +17283,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -14985,6 +17313,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -14994,12 +17325,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -15018,11 +17355,23 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], - "doc/man/man3/SSL_get_shared_sigalgs.3" => [ - "doc/man3/SSL_get_shared_sigalgs.pod" + "doc/man/man3/SSL_get_shared_sigalgs.3" => [ + "doc/man3/SSL_get_shared_sigalgs.pod" + ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" @@ -15033,9 +17382,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -15048,9 +17403,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -15066,24 +17433,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -15096,6 +17484,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -15105,8 +17499,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -15126,6 +17520,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -15174,6 +17583,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -15240,6 +17652,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -15363,9 +17778,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -15381,6 +17802,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -15405,9 +17829,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -15441,6 +17874,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -15498,15 +17934,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -15516,6 +17964,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -15537,9 +17988,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -15555,6 +18012,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -15567,9 +18027,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -15600,9 +18057,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -15618,12 +18072,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -15678,6 +18186,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -15687,9 +18198,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -15825,6 +18333,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc/man1/openssl-sess_id.pod.in" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in" ], @@ -15861,12 +18372,30 @@ our %unified_info = ( "engines/e_padlock-x86_64.s" => [ "engines/asm/e_padlock-x86_64.pl" ], + "exporters/OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], + "exporters/libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], + "exporters/libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "exporters/openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "include/crypto/bn_conf.h" => [ "include/crypto/bn_conf.h.in" ], "include/crypto/dso_conf.h" => [ "include/crypto/dso_conf.h.in" ], + "include/internal/param_names.h" => [ + "include/internal/param_names.h.in" + ], "include/openssl/asn1.h" => [ "include/openssl/asn1.h.in" ], @@ -15882,12 +18411,18 @@ our %unified_info = ( "include/openssl/cms.h" => [ "include/openssl/cms.h.in" ], + "include/openssl/comp.h" => [ + "include/openssl/comp.h.in" + ], "include/openssl/conf.h" => [ "include/openssl/conf.h.in" ], "include/openssl/configuration.h" => [ "include/openssl/configuration.h.in" ], + "include/openssl/core_names.h" => [ + "include/openssl/core_names.h.in" + ], "include/openssl/crmf.h" => [ "include/openssl/crmf.h.in" ], @@ -15936,20 +18471,47 @@ our %unified_info = ( "include/openssl/x509.h" => [ "include/openssl/x509.h.in" ], + "include/openssl/x509_acert.h" => [ + "include/openssl/x509_acert.h.in" + ], "include/openssl/x509_vfy.h" => [ "include/openssl/x509_vfy.h.in" ], "include/openssl/x509v3.h" => [ "include/openssl/x509v3.h.in" ], + "installdata.pm" => [ + "util/mkinstallvars.pl", + "\"PREFIX=\$(INSTALLTOP)\"", + "BINDIR=bin", + "\"LIBDIR=\$(LIBDIR)\"", + "\"libdir=\$(libdir)\"", + "INCLUDEDIR=include", + "APPLINKDIR=include/openssl", + "\"ENGINESDIR=\$(ENGINESDIR)\"", + "\"MODULESDIR=\$(MODULESDIR)\"", + "\"PKGCONFIGDIR=\$(PKGCONFIGDIR)\"", + "\"CMAKECONFIGDIR=\$(CMAKECONFIGDIR)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"", + "\"VERSION=\$(VERSION)\"" + ], "libcrypto.ld" => [ "util/libcrypto.num", "libcrypto" ], + "libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], "libssl.ld" => [ "util/libssl.num", "libssl" ], + "libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/der_digests_gen.c.in" ], @@ -15962,9 +18524,15 @@ our %unified_info = ( "providers/common/der/der_ecx_gen.c" => [ "providers/common/der/der_ecx_gen.c.in" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/der_ml_dsa_gen.c.in" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/der_rsa_gen.c.in" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/der_slh_dsa_gen.c.in" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/der_sm2_gen.c.in" ], @@ -15983,9 +18551,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/include/prov/der_ecx.h.in" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/include/prov/der_ml_dsa.h.in" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/include/prov/der_rsa.h.in" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/include/prov/der_slh_dsa.h.in" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/include/prov/der_sm2.h.in" ], @@ -16027,6 +18601,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "buffer" ], + "test/buildtest_byteorder.c" => [ + "test/generate_buildtest.pl", + "byteorder" + ], "test/buildtest_camellia.c" => [ "test/generate_buildtest.pl", "camellia" @@ -16059,10 +18637,6 @@ our %unified_info = ( "test/generate_buildtest.pl", "core_dispatch" ], - "test/buildtest_core_names.c" => [ - "test/generate_buildtest.pl", - "core_names" - ], "test/buildtest_core_object.c" => [ "test/generate_buildtest.pl", "core_object" @@ -16095,6 +18669,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "e_os2" ], + "test/buildtest_e_ostime.c" => [ + "test/generate_buildtest.pl", + "e_ostime" + ], "test/buildtest_ebcdic.c" => [ "test/generate_buildtest.pl", "ebcdic" @@ -16131,6 +18709,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "hmac" ], + "test/buildtest_hpke.c" => [ + "test/generate_buildtest.pl", + "hpke" + ], "test/buildtest_http.c" => [ "test/generate_buildtest.pl", "http" @@ -16139,6 +18721,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "idea" ], + "test/buildtest_indicator.c" => [ + "test/generate_buildtest.pl", + "indicator" + ], "test/buildtest_kdf.c" => [ "test/generate_buildtest.pl", "kdf" @@ -16159,6 +18745,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "mdc2" ], + "test/buildtest_ml_kem.c" => [ + "test/generate_buildtest.pl", + "ml_kem" + ], "test/buildtest_modes.c" => [ "test/generate_buildtest.pl", "modes" @@ -16199,6 +18789,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "provider" ], + "test/buildtest_quic.c" => [ + "test/generate_buildtest.pl", + "quic" + ], "test/buildtest_rand.c" => [ "test/generate_buildtest.pl", "rand" @@ -16255,6 +18849,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "symhacks" ], + "test/buildtest_thread.c" => [ + "test/generate_buildtest.pl", + "thread" + ], "test/buildtest_tls1.c" => [ "test/generate_buildtest.pl", "tls1" @@ -16335,6 +18933,7 @@ our %unified_info = ( "doc/html/man1/openssl-s_server.html", "doc/html/man1/openssl-s_time.html", "doc/html/man1/openssl-sess_id.html", + "doc/html/man1/openssl-skeyutl.html", "doc/html/man1/openssl-smime.html", "doc/html/man1/openssl-speed.html", "doc/html/man1/openssl-spkac.html", @@ -16384,6 +18983,7 @@ our %unified_info = ( "doc/html/man3/BIO_find_type.html", "doc/html/man3/BIO_get_data.html", "doc/html/man3/BIO_get_ex_new_index.html", + "doc/html/man3/BIO_get_rpoll_descriptor.html", "doc/html/man3/BIO_meth_new.html", "doc/html/man3/BIO_new.html", "doc/html/man3/BIO_new_CMS.html", @@ -16396,11 +18996,13 @@ our %unified_info = ( "doc/html/man3/BIO_s_connect.html", "doc/html/man3/BIO_s_core.html", "doc/html/man3/BIO_s_datagram.html", + "doc/html/man3/BIO_s_dgram_pair.html", "doc/html/man3/BIO_s_fd.html", "doc/html/man3/BIO_s_file.html", "doc/html/man3/BIO_s_mem.html", "doc/html/man3/BIO_s_null.html", "doc/html/man3/BIO_s_socket.html", + "doc/html/man3/BIO_sendmmsg.html", "doc/html/man3/BIO_set_callback.html", "doc/html/man3/BIO_should_retry.html", "doc/html/man3/BIO_socket_wait.html", @@ -16425,6 +19027,7 @@ our %unified_info = ( "doc/html/man3/BN_swap.html", "doc/html/man3/BN_zero.html", "doc/html/man3/BUF_MEM_new.html", + "doc/html/man3/CMAC_CTX.html", "doc/html/man3/CMS_EncryptedData_decrypt.html", "doc/html/man3/CMS_EncryptedData_encrypt.html", "doc/html/man3/CMS_EnvelopedData_create.html", @@ -16447,6 +19050,7 @@ our %unified_info = ( "doc/html/man3/CMS_uncompress.html", "doc/html/man3/CMS_verify.html", "doc/html/man3/CMS_verify_receipt.html", + "doc/html/man3/COMP_CTX_new.html", "doc/html/man3/CONF_modules_free.html", "doc/html/man3/CONF_modules_load_file.html", "doc/html/man3/CRYPTO_THREAD_run_once.html", @@ -16480,6 +19084,8 @@ our %unified_info = ( "doc/html/man3/DSA_size.html", "doc/html/man3/DTLS_get_data_mtu.html", "doc/html/man3/DTLS_set_timer_cb.html", + "doc/html/man3/DTLSv1_get_timeout.html", + "doc/html/man3/DTLSv1_handle_timeout.html", "doc/html/man3/DTLSv1_listen.html", "doc/html/man3/ECDSA_SIG_new.html", "doc/html/man3/ECDSA_sign.html", @@ -16526,6 +19132,7 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_ctrl.html", "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html", "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html", + "doc/html/man3/EVP_PKEY_CTX_get_algor.html", "doc/html/man3/EVP_PKEY_CTX_new.html", "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html", "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html", @@ -16565,6 +19172,8 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_verify_recover.html", "doc/html/man3/EVP_RAND.html", "doc/html/man3/EVP_SIGNATURE.html", + "doc/html/man3/EVP_SKEY.html", + "doc/html/man3/EVP_SKEYMGMT.html", "doc/html/man3/EVP_SealInit.html", "doc/html/man3/EVP_SignInit.html", "doc/html/man3/EVP_VerifyInit.html", @@ -16594,6 +19203,7 @@ our %unified_info = ( "doc/html/man3/EVP_sm3.html", "doc/html/man3/EVP_sm4_cbc.html", "doc/html/man3/EVP_whirlpool.html", + "doc/html/man3/GENERAL_NAME.html", "doc/html/man3/HMAC.html", "doc/html/man3/MD5.html", "doc/html/man3/MDC2_Init.html", @@ -16618,14 +19228,18 @@ our %unified_info = ( "doc/html/man3/OPENSSL_init_ssl.html", "doc/html/man3/OPENSSL_instrument_bus.html", "doc/html/man3/OPENSSL_load_builtin_modules.html", + "doc/html/man3/OPENSSL_load_u16_le.html", "doc/html/man3/OPENSSL_malloc.html", + "doc/html/man3/OPENSSL_riscvcap.html", "doc/html/man3/OPENSSL_s390xcap.html", "doc/html/man3/OPENSSL_secure_malloc.html", "doc/html/man3/OPENSSL_strcasecmp.html", "doc/html/man3/OSSL_ALGORITHM.html", "doc/html/man3/OSSL_CALLBACK.html", + "doc/html/man3/OSSL_CMP_ATAV_set0.html", "doc/html/man3/OSSL_CMP_CTX_new.html", "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html", + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html", "doc/html/man3/OSSL_CMP_ITAV_set0.html", "doc/html/man3/OSSL_CMP_MSG_get0_header.html", "doc/html/man3/OSSL_CMP_MSG_http_perform.html", @@ -16649,18 +19263,27 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_CTX.html", "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html", "doc/html/man3/OSSL_ENCODER_to_bio.html", + "doc/html/man3/OSSL_ERR_STATE_save.html", "doc/html/man3/OSSL_ESS_check_signing_certs.html", + "doc/html/man3/OSSL_GENERAL_NAMES_print.html", + "doc/html/man3/OSSL_HPKE_CTX_new.html", "doc/html/man3/OSSL_HTTP_REQ_CTX.html", "doc/html/man3/OSSL_HTTP_parse_url.html", "doc/html/man3/OSSL_HTTP_transfer.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html", + "doc/html/man3/OSSL_INDICATOR_set_callback.html", "doc/html/man3/OSSL_ITEM.html", "doc/html/man3/OSSL_LIB_CTX.html", + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html", "doc/html/man3/OSSL_PARAM.html", "doc/html/man3/OSSL_PARAM_BLD.html", "doc/html/man3/OSSL_PARAM_allocate_from_text.html", "doc/html/man3/OSSL_PARAM_dup.html", "doc/html/man3/OSSL_PARAM_int.html", + "doc/html/man3/OSSL_PARAM_print_to_bio.html", "doc/html/man3/OSSL_PROVIDER.html", + "doc/html/man3/OSSL_QUIC_client_method.html", "doc/html/man3/OSSL_SELF_TEST_new.html", "doc/html/man3/OSSL_SELF_TEST_set_callback.html", "doc/html/man3/OSSL_STORE_INFO.html", @@ -16669,11 +19292,13 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_attach.html", "doc/html/man3/OSSL_STORE_expect.html", "doc/html/man3/OSSL_STORE_open.html", + "doc/html/man3/OSSL_sleep.html", "doc/html/man3/OSSL_trace_enabled.html", "doc/html/man3/OSSL_trace_get_category_num.html", "doc/html/man3/OSSL_trace_set_channel.html", "doc/html/man3/OpenSSL_add_all_algorithms.html", "doc/html/man3/OpenSSL_version.html", + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html", "doc/html/man3/PEM_X509_INFO_read_bio_ex.html", "doc/html/man3/PEM_bytes_read_bio.html", "doc/html/man3/PEM_read.html", @@ -16686,6 +19311,7 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_create_cert.html", "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html", "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html", + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html", "doc/html/man3/PKCS12_add1_attr_by_NID.html", "doc/html/man3/PKCS12_add_CSPName_asc.html", "doc/html/man3/PKCS12_add_cert.html", @@ -16777,6 +19403,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_sess_set_get_cb.html", "doc/html/man3/SSL_CTX_sessions.html", "doc/html/man3/SSL_CTX_set0_CA_list.html", + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html", "doc/html/man3/SSL_CTX_set1_curves.html", "doc/html/man3/SSL_CTX_set1_sigalgs.html", "doc/html/man3/SSL_CTX_set1_verify_cert_store.html", @@ -16790,6 +19417,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_ct_validation_callback.html", "doc/html/man3/SSL_CTX_set_ctlog_list_file.html", "doc/html/man3/SSL_CTX_set_default_passwd_cb.html", + "doc/html/man3/SSL_CTX_set_domain_flags.html", "doc/html/man3/SSL_CTX_set_generate_session_id.html", "doc/html/man3/SSL_CTX_set_info_callback.html", "doc/html/man3/SSL_CTX_set_keylog_callback.html", @@ -16797,6 +19425,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_min_proto_version.html", "doc/html/man3/SSL_CTX_set_mode.html", "doc/html/man3/SSL_CTX_set_msg_callback.html", + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html", "doc/html/man3/SSL_CTX_set_num_tickets.html", "doc/html/man3/SSL_CTX_set_options.html", "doc/html/man3/SSL_CTX_set_psk_client_callback.html", @@ -16835,6 +19464,7 @@ our %unified_info = ( "doc/html/man3/SSL_SESSION_print.html", "doc/html/man3/SSL_SESSION_set1_id.html", "doc/html/man3/SSL_accept.html", + "doc/html/man3/SSL_accept_stream.html", "doc/html/man3/SSL_alert_type_string.html", "doc/html/man3/SSL_alloc_buffers.html", "doc/html/man3/SSL_check_chain.html", @@ -16844,59 +19474,90 @@ our %unified_info = ( "doc/html/man3/SSL_export_keying_material.html", "doc/html/man3/SSL_extension_supported.html", "doc/html/man3/SSL_free.html", + "doc/html/man3/SSL_get0_connection.html", + "doc/html/man3/SSL_get0_group_name.html", + "doc/html/man3/SSL_get0_peer_rpk.html", "doc/html/man3/SSL_get0_peer_scts.html", + "doc/html/man3/SSL_get1_builtin_sigalgs.html", "doc/html/man3/SSL_get_SSL_CTX.html", "doc/html/man3/SSL_get_all_async_fds.html", "doc/html/man3/SSL_get_certificate.html", "doc/html/man3/SSL_get_ciphers.html", "doc/html/man3/SSL_get_client_random.html", + "doc/html/man3/SSL_get_conn_close_info.html", "doc/html/man3/SSL_get_current_cipher.html", "doc/html/man3/SSL_get_default_timeout.html", "doc/html/man3/SSL_get_error.html", + "doc/html/man3/SSL_get_event_timeout.html", "doc/html/man3/SSL_get_extms_support.html", "doc/html/man3/SSL_get_fd.html", + "doc/html/man3/SSL_get_handshake_rtt.html", "doc/html/man3/SSL_get_peer_cert_chain.html", "doc/html/man3/SSL_get_peer_certificate.html", "doc/html/man3/SSL_get_peer_signature_nid.html", "doc/html/man3/SSL_get_peer_tmp_key.html", "doc/html/man3/SSL_get_psk_identity.html", "doc/html/man3/SSL_get_rbio.html", + "doc/html/man3/SSL_get_rpoll_descriptor.html", "doc/html/man3/SSL_get_session.html", "doc/html/man3/SSL_get_shared_sigalgs.html", + "doc/html/man3/SSL_get_stream_id.html", + "doc/html/man3/SSL_get_stream_read_state.html", + "doc/html/man3/SSL_get_value_uint.html", "doc/html/man3/SSL_get_verify_result.html", "doc/html/man3/SSL_get_version.html", "doc/html/man3/SSL_group_to_name.html", + "doc/html/man3/SSL_handle_events.html", "doc/html/man3/SSL_in_init.html", + "doc/html/man3/SSL_inject_net_dgram.html", "doc/html/man3/SSL_key_update.html", "doc/html/man3/SSL_library_init.html", "doc/html/man3/SSL_load_client_CA_file.html", "doc/html/man3/SSL_new.html", + "doc/html/man3/SSL_new_domain.html", + "doc/html/man3/SSL_new_listener.html", + "doc/html/man3/SSL_new_stream.html", "doc/html/man3/SSL_pending.html", + "doc/html/man3/SSL_poll.html", "doc/html/man3/SSL_read.html", "doc/html/man3/SSL_read_early_data.html", "doc/html/man3/SSL_rstate_string.html", "doc/html/man3/SSL_session_reused.html", "doc/html/man3/SSL_set1_host.html", + "doc/html/man3/SSL_set1_initial_peer_addr.html", + "doc/html/man3/SSL_set1_server_cert_type.html", "doc/html/man3/SSL_set_async_callback.html", "doc/html/man3/SSL_set_bio.html", + "doc/html/man3/SSL_set_blocking_mode.html", "doc/html/man3/SSL_set_connect_state.html", + "doc/html/man3/SSL_set_default_stream_mode.html", "doc/html/man3/SSL_set_fd.html", + "doc/html/man3/SSL_set_incoming_stream_policy.html", + "doc/html/man3/SSL_set_quic_tls_cbs.html", "doc/html/man3/SSL_set_retry_verify.html", "doc/html/man3/SSL_set_session.html", + "doc/html/man3/SSL_set_session_secret_cb.html", "doc/html/man3/SSL_set_shutdown.html", "doc/html/man3/SSL_set_verify_result.html", "doc/html/man3/SSL_shutdown.html", "doc/html/man3/SSL_state_string.html", + "doc/html/man3/SSL_stream_conclude.html", + "doc/html/man3/SSL_stream_reset.html", "doc/html/man3/SSL_want.html", "doc/html/man3/SSL_write.html", "doc/html/man3/TS_RESP_CTX_new.html", - "doc/html/man3/TS_VERIFY_CTX_set_certs.html", + "doc/html/man3/TS_VERIFY_CTX.html", "doc/html/man3/UI_STRING.html", "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", + "doc/html/man3/X509_ACERT_add1_attr.html", + "doc/html/man3/X509_ACERT_add_attr_nconf.html", + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html", + "doc/html/man3/X509_ACERT_get_attr.html", + "doc/html/man3/X509_ACERT_print_ex.html", "doc/html/man3/X509_ALGOR_dup.html", "doc/html/man3/X509_ATTRIBUTE.html", "doc/html/man3/X509_CRL_get0_by_serial.html", @@ -16913,6 +19574,7 @@ our %unified_info = ( "doc/html/man3/X509_REQ_get_attr.html", "doc/html/man3/X509_REQ_get_extensions.html", "doc/html/man3/X509_SIG_get0.html", + "doc/html/man3/X509_STORE_CTX_get_by_subject.html", "doc/html/man3/X509_STORE_CTX_get_error.html", "doc/html/man3/X509_STORE_CTX_new.html", "doc/html/man3/X509_STORE_CTX_set_verify_cb.html", @@ -16935,6 +19597,7 @@ our %unified_info = ( "doc/html/man3/X509_get0_notBefore.html", "doc/html/man3/X509_get0_signature.html", "doc/html/man3/X509_get0_uids.html", + "doc/html/man3/X509_get_default_cert_file.html", "doc/html/man3/X509_get_extension_flags.html", "doc/html/man3/X509_get_pubkey.html", "doc/html/man3/X509_get_serialNumber.html", @@ -16980,12 +19643,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-RC5.html", "doc/html/man7/EVP_CIPHER-SEED.html", "doc/html/man7/EVP_CIPHER-SM4.html", + "doc/html/man7/EVP_KDF-ARGON2.html", "doc/html/man7/EVP_KDF-HKDF.html", + "doc/html/man7/EVP_KDF-HMAC-DRBG.html", "doc/html/man7/EVP_KDF-KB.html", "doc/html/man7/EVP_KDF-KRB5KDF.html", "doc/html/man7/EVP_KDF-PBKDF1.html", "doc/html/man7/EVP_KDF-PBKDF2.html", "doc/html/man7/EVP_KDF-PKCS12KDF.html", + "doc/html/man7/EVP_KDF-PVKKDF.html", "doc/html/man7/EVP_KDF-SCRYPT.html", "doc/html/man7/EVP_KDF-SS.html", "doc/html/man7/EVP_KDF-SSHKDF.html", @@ -16994,7 +19660,10 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X942-ASN1.html", "doc/html/man7/EVP_KDF-X942-CONCAT.html", "doc/html/man7/EVP_KDF-X963.html", + "doc/html/man7/EVP_KEM-EC.html", + "doc/html/man7/EVP_KEM-ML-KEM.html", "doc/html/man7/EVP_KEM-RSA.html", + "doc/html/man7/EVP_KEM-X25519.html", "doc/html/man7/EVP_KEYEXCH-DH.html", "doc/html/man7/EVP_KEYEXCH-ECDH.html", "doc/html/man7/EVP_KEYEXCH-X25519.html", @@ -17006,6 +19675,7 @@ our %unified_info = ( "doc/html/man7/EVP_MAC-Poly1305.html", "doc/html/man7/EVP_MAC-Siphash.html", "doc/html/man7/EVP_MD-BLAKE2.html", + "doc/html/man7/EVP_MD-KECCAK.html", "doc/html/man7/EVP_MD-MD2.html", "doc/html/man7/EVP_MD-MD4.html", "doc/html/man7/EVP_MD-MD5-SHA1.html", @@ -17025,12 +19695,17 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-EC.html", "doc/html/man7/EVP_PKEY-FFC.html", "doc/html/man7/EVP_PKEY-HMAC.html", + "doc/html/man7/EVP_PKEY-ML-DSA.html", + "doc/html/man7/EVP_PKEY-ML-KEM.html", "doc/html/man7/EVP_PKEY-RSA.html", + "doc/html/man7/EVP_PKEY-SLH-DSA.html", "doc/html/man7/EVP_PKEY-SM2.html", "doc/html/man7/EVP_PKEY-X25519.html", + "doc/html/man7/EVP_RAND-CRNG-TEST.html", "doc/html/man7/EVP_RAND-CTR-DRBG.html", "doc/html/man7/EVP_RAND-HASH-DRBG.html", "doc/html/man7/EVP_RAND-HMAC-DRBG.html", + "doc/html/man7/EVP_RAND-JITTER.html", "doc/html/man7/EVP_RAND-SEED-SRC.html", "doc/html/man7/EVP_RAND-TEST-RAND.html", "doc/html/man7/EVP_RAND.html", @@ -17038,17 +19713,19 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-ECDSA.html", "doc/html/man7/EVP_SIGNATURE-ED25519.html", "doc/html/man7/EVP_SIGNATURE-HMAC.html", + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html", "doc/html/man7/EVP_SIGNATURE-RSA.html", + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html", "doc/html/man7/OSSL_PROVIDER-FIPS.html", "doc/html/man7/OSSL_PROVIDER-base.html", "doc/html/man7/OSSL_PROVIDER-default.html", "doc/html/man7/OSSL_PROVIDER-legacy.html", "doc/html/man7/OSSL_PROVIDER-null.html", + "doc/html/man7/OSSL_STORE-winstore.html", "doc/html/man7/RAND.html", "doc/html/man7/RSA-PSS.html", "doc/html/man7/X25519.html", "doc/html/man7/bio.html", - "doc/html/man7/crypto.html", "doc/html/man7/ct.html", "doc/html/man7/des_modes.html", "doc/html/man7/evp.html", @@ -17059,14 +19736,31 @@ our %unified_info = ( "doc/html/man7/life_cycle-mac.html", "doc/html/man7/life_cycle-pkey.html", "doc/html/man7/life_cycle-rand.html", - "doc/html/man7/migration_guide.html", "doc/html/man7/openssl-core.h.html", "doc/html/man7/openssl-core_dispatch.h.html", "doc/html/man7/openssl-core_names.h.html", "doc/html/man7/openssl-env.html", "doc/html/man7/openssl-glossary.html", + "doc/html/man7/openssl-qlog.html", + "doc/html/man7/openssl-quic-concurrency.html", + "doc/html/man7/openssl-quic.html", "doc/html/man7/openssl-threads.html", "doc/html/man7/openssl_user_macros.html", + "doc/html/man7/ossl-guide-introduction.html", + "doc/html/man7/ossl-guide-libcrypto-introduction.html", + "doc/html/man7/ossl-guide-libraries-introduction.html", + "doc/html/man7/ossl-guide-libssl-introduction.html", + "doc/html/man7/ossl-guide-migration.html", + "doc/html/man7/ossl-guide-quic-client-block.html", + "doc/html/man7/ossl-guide-quic-client-non-block.html", + "doc/html/man7/ossl-guide-quic-introduction.html", + "doc/html/man7/ossl-guide-quic-multi-stream.html", + "doc/html/man7/ossl-guide-quic-server-block.html", + "doc/html/man7/ossl-guide-quic-server-non-block.html", + "doc/html/man7/ossl-guide-tls-client-block.html", + "doc/html/man7/ossl-guide-tls-client-non-block.html", + "doc/html/man7/ossl-guide-tls-introduction.html", + "doc/html/man7/ossl-guide-tls-server-block.html", "doc/html/man7/ossl_store-file.html", "doc/html/man7/ossl_store.html", "doc/html/man7/passphrase-encoding.html", @@ -17085,10 +19779,10 @@ our %unified_info = ( "doc/html/man7/provider-object.html", "doc/html/man7/provider-rand.html", "doc/html/man7/provider-signature.html", + "doc/html/man7/provider-skeymgmt.html", "doc/html/man7/provider-storemgmt.html", "doc/html/man7/provider.html", "doc/html/man7/proxy-certificates.html", - "doc/html/man7/ssl.html", "doc/html/man7/x509.html" ] }, @@ -17103,12 +19797,21 @@ our %unified_info = ( ] }, "includes" => { + "OpenSSLConfig.cmake" => [ + "." + ], + "OpenSSLConfigVersion.cmake" => [ + "." + ], "apps/asn1parse.o" => [ "apps" ], "apps/ca.o" => [ "apps" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps" + ], "apps/ciphers.o" => [ "apps" ], @@ -17335,6 +20038,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps" + ], "apps/openssl-bin-smime.o" => [ "apps" ], @@ -17422,6 +20128,9 @@ our %unified_info = ( "apps/sess_id.o" => [ "apps" ], + "apps/skeyutl.o" => [ + "apps" + ], "apps/smime.o" => [ "apps" ], @@ -17473,6 +20182,12 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.o" => [ "crypto" ], + "crypto/aes/vpaes-armv8.o" => [ + "crypto" + ], + "crypto/aes/vpaes-loongarch64.o" => [ + "crypto" + ], "crypto/arm64cpuid.o" => [ "crypto" ], @@ -17524,9 +20239,15 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.o" => [ "crypto" ], + "crypto/chacha/chacha-armv8-sve.o" => [ + "crypto" + ], "crypto/chacha/chacha-armv8.o" => [ "crypto" ], + "crypto/chacha/chacha-loongarch64.o" => [ + "crypto" + ], "crypto/chacha/chacha-s390x.o" => [ "crypto" ], @@ -17551,15 +20272,24 @@ our %unified_info = ( "crypto/ec/ecp_s390x_nistp.o" => [ "crypto" ], + "crypto/ec/ecp_sm2p256-armv8.o" => [ + "crypto" + ], + "crypto/ec/ecx_key.o" => [ + "crypto" + ], "crypto/ec/ecx_meth.o" => [ "crypto" ], - "crypto/ec/ecx_s390x.o" => [ + "crypto/ec/libcrypto-lib-ecx_key.o" => [ "crypto" ], "crypto/ec/libcrypto-lib-ecx_meth.o" => [ "crypto" ], + "crypto/ec/libfips-lib-ecx_key.o" => [ + "crypto" + ], "crypto/evp/e_aes.o" => [ "crypto", "crypto/modes" @@ -17631,9 +20361,18 @@ our %unified_info = ( "crypto/libfips-lib-cpuid.o" => [ "." ], + "crypto/md5/md5-aarch64.o" => [ + "crypto" + ], + "crypto/md5/md5-loongarch64.o" => [ + "crypto" + ], "crypto/md5/md5-sparcv9.o" => [ "crypto" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.o" => [ + "crypto" + ], "crypto/modes/aes-gcm-armv8_64.o" => [ "crypto" ], @@ -17658,6 +20397,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-gcm128.o" => [ "crypto" ], + "crypto/params_idx.c" => [ + "util/perl" + ], "crypto/poly1305/poly1305-armv4.o" => [ "crypto" ], @@ -17679,6 +20421,9 @@ our %unified_info = ( "crypto/sha/keccak1600-armv4.o" => [ "crypto" ], + "crypto/sha/keccak1600-armv8.o" => [ + "crypto" + ], "crypto/sha/sha1-armv4-large.o" => [ "crypto" ], @@ -17724,6 +20469,18 @@ our %unified_info = ( "crypto/sha/sha512-sparcv9.o" => [ "crypto" ], + "crypto/sm3/sm3-armv8.o" => [ + "crypto" + ], + "crypto/sm4/sm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4_ex-armv8.o" => [ + "crypto" + ], "doc/man1/openssl-asn1parse.pod" => [ "doc" ], @@ -17856,6 +20613,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc" + ], "doc/man1/openssl-smime.pod" => [ "doc" ], @@ -17883,6 +20643,24 @@ our %unified_info = ( "doc/man1/openssl-x509.pod" => [ "doc" ], + "exporters/OpenSSLConfig.cmake" => [ + "." + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "." + ], + "exporters/libcrypto.pc" => [ + "." + ], + "exporters/libssl.pc" => [ + "." + ], + "exporters/openssl.pc" => [ + "." + ], + "fuzz/acert-test" => [ + "include" + ], "fuzz/asn1-test" => [ "include" ], @@ -17913,12 +20691,69 @@ our %unified_info = ( "fuzz/ct-test" => [ "include" ], + "fuzz/decoder-test" => [ + "include" + ], + "fuzz/dtlsclient-test" => [ + "include" + ], + "fuzz/dtlsserver-test" => [ + "include" + ], + "fuzz/hashtable-test" => [ + "include" + ], + "fuzz/ml-dsa-test" => [ + "include" + ], + "fuzz/ml-kem-test" => [ + "include" + ], + "fuzz/pem-test" => [ + "include" + ], + "fuzz/provider-test" => [ + "include" + ], + "fuzz/punycode-test" => [ + "include" + ], + "fuzz/quic-client-test" => [ + "include" + ], + "fuzz/quic-lcidm-test" => [ + "include" + ], + "fuzz/quic-rcidm-test" => [ + "include" + ], + "fuzz/quic-server-test" => [ + "include" + ], + "fuzz/quic-srtm-test" => [ + "include" + ], "fuzz/server-test" => [ "include" ], + "fuzz/slh-dsa-test" => [ + "include" + ], + "fuzz/smime-test" => [ + "include" + ], + "fuzz/v3name-test" => [ + "include" + ], "fuzz/x509-test" => [ "include" ], + "include/internal/param_names.h" => [ + "util/perl" + ], + "include/openssl/core_names.h" => [ + "util/perl" + ], "libcrypto" => [ ".", "include", @@ -17929,6 +20764,9 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libcrypto.pc" => [ + "." + ], "libssl" => [ ".", "include" @@ -17937,6 +20775,12 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libssl.pc" => [ + "." + ], + "openssl.pc" => [ + "." + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der" ], @@ -17976,6 +20820,15 @@ our %unified_info = ( "providers/common/der/der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der" ], @@ -17988,6 +20841,15 @@ our %unified_info = ( "providers/common/der/der_rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der" ], @@ -18033,12 +20895,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov" ], @@ -18069,9 +20943,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der" ], @@ -18114,9 +20994,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18129,12 +21015,24 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18147,28 +21045,39 @@ our %unified_info = ( "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libdefault.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libfips.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/liblegacy.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" + ], + "providers/libtemplate.a" => [ + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" ], "test/aborttest" => [ "include", @@ -18237,6 +21146,14 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_addr_test" => [ + "include", + "apps/include" + ], + "test/bio_base64_test" => [ + "include", + "apps/include" + ], "test/bio_callback_test" => [ "include", "apps/include" @@ -18245,11 +21162,20 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_dgram_test" => [ + "include", + "apps/include", + "." + ], "test/bio_enc_test" => [ "include", "apps/include" ], - "test/bio_memleak_test" => [ + "test/bio_memleak_test" => [ + "include", + "apps/include" + ], + "test/bio_meth_test" => [ "include", "apps/include" ], @@ -18266,6 +21192,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_tfo_test" => [ + "include", + "apps/include", + "." + ], "test/bioprinttest" => [ "include", "apps/include" @@ -18280,6 +21211,9 @@ our %unified_info = ( "include", "apps/include" ], + "test/build_wincrypt_test" => [ + "include" + ], "test/buildtest_c_aes" => [ "include" ], @@ -18295,6 +21229,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => [ "include" ], + "test/buildtest_c_byteorder" => [ + "include" + ], "test/buildtest_c_camellia" => [ "include" ], @@ -18319,9 +21256,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => [ "include" ], - "test/buildtest_c_core_names" => [ - "include" - ], "test/buildtest_c_core_object" => [ "include" ], @@ -18346,6 +21280,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => [ "include" ], + "test/buildtest_c_e_ostime" => [ + "include" + ], "test/buildtest_c_ebcdic" => [ "include" ], @@ -18373,12 +21310,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => [ "include" ], + "test/buildtest_c_hpke" => [ + "include" + ], "test/buildtest_c_http" => [ "include" ], "test/buildtest_c_idea" => [ "include" ], + "test/buildtest_c_indicator" => [ + "include" + ], "test/buildtest_c_kdf" => [ "include" ], @@ -18394,6 +21337,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => [ "include" ], + "test/buildtest_c_ml_kem" => [ + "include" + ], "test/buildtest_c_modes" => [ "include" ], @@ -18424,6 +21370,9 @@ our %unified_info = ( "test/buildtest_c_provider" => [ "include" ], + "test/buildtest_c_quic" => [ + "include" + ], "test/buildtest_c_rand" => [ "include" ], @@ -18466,6 +21415,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => [ "include" ], + "test/buildtest_c_thread" => [ + "include" + ], "test/buildtest_c_tls1" => [ "include" ], @@ -18481,10 +21433,24 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => [ "include" ], + "test/byteorder_test" => [ + "include", + "apps/include" + ], + "test/ca_internals_test" => [ + ".", + "include", + "apps/include" + ], "test/casttest" => [ "include", "apps/include" ], + "test/cert_comp_test" => [ + "include", + "apps/include", + "." + ], "test/chacha_internal_test" => [ ".", "include", @@ -18608,6 +21574,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/decoder_propq_test" => [ + ".", + "include", + "apps/include" + ], "test/defltfips_test" => [ "include", "apps/include" @@ -18623,7 +21594,8 @@ our %unified_info = ( "test/drbgtest" => [ "include", "apps/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "test/dsa_no_digest_size_test" => [ "include", @@ -18666,7 +21638,9 @@ our %unified_info = ( "test/endecode_test" => [ ".", "include", - "apps/include" + "apps/include", + "providers/common/include", + "providers/implementations/include" ], "test/endecoder_legacy_test" => [ ".", @@ -18711,6 +21685,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_pkey_dhkem_test" => [ + "include", + "apps/include" + ], "test/evp_pkey_dparams_test" => [ "include", "apps/include" @@ -18719,10 +21697,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_skey_test" => [ + "include", + "apps/include" + ], "test/evp_test" => [ "include", "apps/include" ], + "test/evp_xof_test" => [ + "include", + "apps/include" + ], "test/exdatatest" => [ "include", "apps/include" @@ -18823,22 +21809,62 @@ our %unified_info = ( ".", "include" ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/pkcs12.o" => [ ".", "include" ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + ".", + "include" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ ".", "include" ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/ssl_test-bin-handshake.o" => [ ".", "include" @@ -18872,6 +21898,10 @@ our %unified_info = ( ".", "include" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/hexstr_test" => [ ".", "include", @@ -18881,6 +21911,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/hpke_test" => [ + "include", + "apps/include" + ], "test/http_test" => [ "include", "apps/include" @@ -18893,6 +21927,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/json_test" => [ + "include", + "apps/include" + ], "test/keymgmt_internal_test" => [ ".", "include", @@ -18907,6 +21945,10 @@ our %unified_info = ( "apps/include", "." ], + "test/list_test" => [ + "include", + "apps/include" + ], "test/localetest" => [ "include", "apps/include" @@ -18920,10 +21962,27 @@ our %unified_info = ( "include", "apps/include" ], + "test/membio_test" => [ + "include", + "apps/include", + "." + ], "test/memleaktest" => [ "include", "apps/include" ], + "test/ml_dsa_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_evp_extra_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_internal_test" => [ + "include", + "apps/include" + ], "test/modes_internal_test" => [ ".", "include", @@ -18958,6 +22017,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pairwise_fail_test" => [ + "include", + "apps/include" + ], "test/param_build_test" => [ "include", "apps/include" @@ -18991,6 +22054,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pkcs12_api_test" => [ + "include", + "apps/include" + ], "test/pkcs12_format_test" => [ "include", "apps/include" @@ -19012,6 +22079,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/priority_queue_test" => [ + "include", + "apps/include" + ], "test/property_test" => [ ".", "include", @@ -19025,6 +22096,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/provider_default_search_path_test" => [ + "include", + "apps/include" + ], "test/provider_fallback_test" => [ "include", "apps/include" @@ -19051,6 +22126,97 @@ our %unified_info = ( "include", "apps/include" ], + "test/quic_ackm_test" => [ + "include", + "apps/include" + ], + "test/quic_cc_test" => [ + "include", + "apps/include" + ], + "test/quic_cfq_test" => [ + "include", + "apps/include" + ], + "test/quic_client_test" => [ + "include", + "apps/include" + ], + "test/quic_fc_test" => [ + "include", + "apps/include" + ], + "test/quic_fifd_test" => [ + "include", + "apps/include" + ], + "test/quic_lcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_multistream_test" => [ + "include", + "apps/include" + ], + "test/quic_newcid_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_qlog_test" => [ + "include", + "apps/include" + ], + "test/quic_radix_test" => [ + "include", + "apps/include" + ], + "test/quic_rcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_record_test" => [ + "include", + "apps/include" + ], + "test/quic_srt_gen_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_srtm_test" => [ + "include", + "apps/include" + ], + "test/quic_stream_test" => [ + "include", + "apps/include" + ], + "test/quic_tserver_test" => [ + "include", + "apps/include" + ], + "test/quic_txp_test" => [ + "include", + "apps/include" + ], + "test/quic_txpim_test" => [ + "include", + "apps/include" + ], + "test/quic_wire_test" => [ + "include", + "apps/include" + ], + "test/quicapitest" => [ + "include", + "apps/include" + ], + "test/quicfaultstest" => [ + "include", + "apps/include", + "." + ], "test/rand_status_test" => [ "include", "apps/include" @@ -19071,14 +22237,20 @@ our %unified_info = ( "include", "apps/include" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "include", - "apps/include" + "apps/include", + "crypto" ], "test/recordlentest" => [ "include", "apps/include" ], + "test/rpktest" => [ + "include", + "apps/include", + "." + ], "test/rsa_complex" => [ "include", "apps/include" @@ -19097,6 +22269,15 @@ our %unified_info = ( "include", "apps/include" ], + "test/rsa_x931_test" => [ + ".", + "include", + "apps/include" + ], + "test/safe_math_test" => [ + "include", + "apps/include" + ], "test/sanitytest" => [ "include", "apps/include" @@ -19118,6 +22299,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/slh_dsa_test" => [ + "include", + "apps/include" + ], "test/sm2_internal_test" => [ "include", "apps/include" @@ -19148,6 +22333,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/ssl_handshake_rtt_test" => [ + "include", + "apps/include", + "." + ], "test/ssl_old_test" => [ ".", "include", @@ -19164,6 +22354,7 @@ our %unified_info = ( "test/sslapitest" => [ "include", "apps/include", + "providers/common/include", "." ], "test/sslbuffertest" => [ @@ -19178,6 +22369,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/strtoultest" => [ + "include", + "apps/include" + ], "test/sysdefaulttest" => [ "include", "apps/include" @@ -19186,7 +22381,13 @@ our %unified_info = ( "include", "apps/include" ], + "test/threadpool_test" => [ + ".", + "include", + "apps/include" + ], "test/threadstest" => [ + ".", "include", "apps/include" ], @@ -19198,6 +22399,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/time_test" => [ + "include", + "apps/include" + ], "test/tls13ccstest" => [ "include", "apps/include" @@ -19207,6 +22412,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/tls13groupselection_test" => [ + "include", + "apps/include" + ], "test/trace_api_test" => [ ".", "include", @@ -19245,6 +22454,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_acert_test" => [ + "include", + "apps/include" + ], "test/x509_check_cert_pkey_test" => [ "include", "apps/include" @@ -19258,6 +22471,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_load_cert_file_test" => [ + "include", + "apps/include" + ], + "test/x509_req_test" => [ + "include", + "apps/include" + ], + "test/x509_test" => [ + "include", + "apps/include" + ], "test/x509_time_test" => [ "include", "apps/include" @@ -19279,6 +22504,7 @@ our %unified_info = ( "providers/libdefault.a", "providers/libfips.a", "providers/liblegacy.a", + "providers/libtemplate.a", "test/libtestutil.a" ], "mandocs" => { @@ -19331,6 +22557,7 @@ our %unified_info = ( "doc/man/man1/openssl-s_server.1", "doc/man/man1/openssl-s_time.1", "doc/man/man1/openssl-sess_id.1", + "doc/man/man1/openssl-skeyutl.1", "doc/man/man1/openssl-smime.1", "doc/man/man1/openssl-speed.1", "doc/man/man1/openssl-spkac.1", @@ -19380,6 +22607,7 @@ our %unified_info = ( "doc/man/man3/BIO_find_type.3", "doc/man/man3/BIO_get_data.3", "doc/man/man3/BIO_get_ex_new_index.3", + "doc/man/man3/BIO_get_rpoll_descriptor.3", "doc/man/man3/BIO_meth_new.3", "doc/man/man3/BIO_new.3", "doc/man/man3/BIO_new_CMS.3", @@ -19392,11 +22620,13 @@ our %unified_info = ( "doc/man/man3/BIO_s_connect.3", "doc/man/man3/BIO_s_core.3", "doc/man/man3/BIO_s_datagram.3", + "doc/man/man3/BIO_s_dgram_pair.3", "doc/man/man3/BIO_s_fd.3", "doc/man/man3/BIO_s_file.3", "doc/man/man3/BIO_s_mem.3", "doc/man/man3/BIO_s_null.3", "doc/man/man3/BIO_s_socket.3", + "doc/man/man3/BIO_sendmmsg.3", "doc/man/man3/BIO_set_callback.3", "doc/man/man3/BIO_should_retry.3", "doc/man/man3/BIO_socket_wait.3", @@ -19421,6 +22651,7 @@ our %unified_info = ( "doc/man/man3/BN_swap.3", "doc/man/man3/BN_zero.3", "doc/man/man3/BUF_MEM_new.3", + "doc/man/man3/CMAC_CTX.3", "doc/man/man3/CMS_EncryptedData_decrypt.3", "doc/man/man3/CMS_EncryptedData_encrypt.3", "doc/man/man3/CMS_EnvelopedData_create.3", @@ -19443,6 +22674,7 @@ our %unified_info = ( "doc/man/man3/CMS_uncompress.3", "doc/man/man3/CMS_verify.3", "doc/man/man3/CMS_verify_receipt.3", + "doc/man/man3/COMP_CTX_new.3", "doc/man/man3/CONF_modules_free.3", "doc/man/man3/CONF_modules_load_file.3", "doc/man/man3/CRYPTO_THREAD_run_once.3", @@ -19476,6 +22708,8 @@ our %unified_info = ( "doc/man/man3/DSA_size.3", "doc/man/man3/DTLS_get_data_mtu.3", "doc/man/man3/DTLS_set_timer_cb.3", + "doc/man/man3/DTLSv1_get_timeout.3", + "doc/man/man3/DTLSv1_handle_timeout.3", "doc/man/man3/DTLSv1_listen.3", "doc/man/man3/ECDSA_SIG_new.3", "doc/man/man3/ECDSA_sign.3", @@ -19522,6 +22756,7 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_ctrl.3", "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3", "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3", + "doc/man/man3/EVP_PKEY_CTX_get_algor.3", "doc/man/man3/EVP_PKEY_CTX_new.3", "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3", "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3", @@ -19561,6 +22796,8 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_verify_recover.3", "doc/man/man3/EVP_RAND.3", "doc/man/man3/EVP_SIGNATURE.3", + "doc/man/man3/EVP_SKEY.3", + "doc/man/man3/EVP_SKEYMGMT.3", "doc/man/man3/EVP_SealInit.3", "doc/man/man3/EVP_SignInit.3", "doc/man/man3/EVP_VerifyInit.3", @@ -19590,6 +22827,7 @@ our %unified_info = ( "doc/man/man3/EVP_sm3.3", "doc/man/man3/EVP_sm4_cbc.3", "doc/man/man3/EVP_whirlpool.3", + "doc/man/man3/GENERAL_NAME.3", "doc/man/man3/HMAC.3", "doc/man/man3/MD5.3", "doc/man/man3/MDC2_Init.3", @@ -19614,14 +22852,18 @@ our %unified_info = ( "doc/man/man3/OPENSSL_init_ssl.3", "doc/man/man3/OPENSSL_instrument_bus.3", "doc/man/man3/OPENSSL_load_builtin_modules.3", + "doc/man/man3/OPENSSL_load_u16_le.3", "doc/man/man3/OPENSSL_malloc.3", + "doc/man/man3/OPENSSL_riscvcap.3", "doc/man/man3/OPENSSL_s390xcap.3", "doc/man/man3/OPENSSL_secure_malloc.3", "doc/man/man3/OPENSSL_strcasecmp.3", "doc/man/man3/OSSL_ALGORITHM.3", "doc/man/man3/OSSL_CALLBACK.3", + "doc/man/man3/OSSL_CMP_ATAV_set0.3", "doc/man/man3/OSSL_CMP_CTX_new.3", "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3", + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3", "doc/man/man3/OSSL_CMP_ITAV_set0.3", "doc/man/man3/OSSL_CMP_MSG_get0_header.3", "doc/man/man3/OSSL_CMP_MSG_http_perform.3", @@ -19645,18 +22887,27 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_CTX.3", "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3", "doc/man/man3/OSSL_ENCODER_to_bio.3", + "doc/man/man3/OSSL_ERR_STATE_save.3", "doc/man/man3/OSSL_ESS_check_signing_certs.3", + "doc/man/man3/OSSL_GENERAL_NAMES_print.3", + "doc/man/man3/OSSL_HPKE_CTX_new.3", "doc/man/man3/OSSL_HTTP_REQ_CTX.3", "doc/man/man3/OSSL_HTTP_parse_url.3", "doc/man/man3/OSSL_HTTP_transfer.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3", + "doc/man/man3/OSSL_INDICATOR_set_callback.3", "doc/man/man3/OSSL_ITEM.3", "doc/man/man3/OSSL_LIB_CTX.3", + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3", "doc/man/man3/OSSL_PARAM.3", "doc/man/man3/OSSL_PARAM_BLD.3", "doc/man/man3/OSSL_PARAM_allocate_from_text.3", "doc/man/man3/OSSL_PARAM_dup.3", "doc/man/man3/OSSL_PARAM_int.3", + "doc/man/man3/OSSL_PARAM_print_to_bio.3", "doc/man/man3/OSSL_PROVIDER.3", + "doc/man/man3/OSSL_QUIC_client_method.3", "doc/man/man3/OSSL_SELF_TEST_new.3", "doc/man/man3/OSSL_SELF_TEST_set_callback.3", "doc/man/man3/OSSL_STORE_INFO.3", @@ -19665,11 +22916,13 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_attach.3", "doc/man/man3/OSSL_STORE_expect.3", "doc/man/man3/OSSL_STORE_open.3", + "doc/man/man3/OSSL_sleep.3", "doc/man/man3/OSSL_trace_enabled.3", "doc/man/man3/OSSL_trace_get_category_num.3", "doc/man/man3/OSSL_trace_set_channel.3", "doc/man/man3/OpenSSL_add_all_algorithms.3", "doc/man/man3/OpenSSL_version.3", + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3", "doc/man/man3/PEM_X509_INFO_read_bio_ex.3", "doc/man/man3/PEM_bytes_read_bio.3", "doc/man/man3/PEM_read.3", @@ -19682,6 +22935,7 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_create_cert.3", "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3", "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3", + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3", "doc/man/man3/PKCS12_add1_attr_by_NID.3", "doc/man/man3/PKCS12_add_CSPName_asc.3", "doc/man/man3/PKCS12_add_cert.3", @@ -19773,6 +23027,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_sess_set_get_cb.3", "doc/man/man3/SSL_CTX_sessions.3", "doc/man/man3/SSL_CTX_set0_CA_list.3", + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3", "doc/man/man3/SSL_CTX_set1_curves.3", "doc/man/man3/SSL_CTX_set1_sigalgs.3", "doc/man/man3/SSL_CTX_set1_verify_cert_store.3", @@ -19786,6 +23041,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_ct_validation_callback.3", "doc/man/man3/SSL_CTX_set_ctlog_list_file.3", "doc/man/man3/SSL_CTX_set_default_passwd_cb.3", + "doc/man/man3/SSL_CTX_set_domain_flags.3", "doc/man/man3/SSL_CTX_set_generate_session_id.3", "doc/man/man3/SSL_CTX_set_info_callback.3", "doc/man/man3/SSL_CTX_set_keylog_callback.3", @@ -19793,6 +23049,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_min_proto_version.3", "doc/man/man3/SSL_CTX_set_mode.3", "doc/man/man3/SSL_CTX_set_msg_callback.3", + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3", "doc/man/man3/SSL_CTX_set_num_tickets.3", "doc/man/man3/SSL_CTX_set_options.3", "doc/man/man3/SSL_CTX_set_psk_client_callback.3", @@ -19831,6 +23088,7 @@ our %unified_info = ( "doc/man/man3/SSL_SESSION_print.3", "doc/man/man3/SSL_SESSION_set1_id.3", "doc/man/man3/SSL_accept.3", + "doc/man/man3/SSL_accept_stream.3", "doc/man/man3/SSL_alert_type_string.3", "doc/man/man3/SSL_alloc_buffers.3", "doc/man/man3/SSL_check_chain.3", @@ -19840,59 +23098,90 @@ our %unified_info = ( "doc/man/man3/SSL_export_keying_material.3", "doc/man/man3/SSL_extension_supported.3", "doc/man/man3/SSL_free.3", + "doc/man/man3/SSL_get0_connection.3", + "doc/man/man3/SSL_get0_group_name.3", + "doc/man/man3/SSL_get0_peer_rpk.3", "doc/man/man3/SSL_get0_peer_scts.3", + "doc/man/man3/SSL_get1_builtin_sigalgs.3", "doc/man/man3/SSL_get_SSL_CTX.3", "doc/man/man3/SSL_get_all_async_fds.3", "doc/man/man3/SSL_get_certificate.3", "doc/man/man3/SSL_get_ciphers.3", "doc/man/man3/SSL_get_client_random.3", + "doc/man/man3/SSL_get_conn_close_info.3", "doc/man/man3/SSL_get_current_cipher.3", "doc/man/man3/SSL_get_default_timeout.3", "doc/man/man3/SSL_get_error.3", + "doc/man/man3/SSL_get_event_timeout.3", "doc/man/man3/SSL_get_extms_support.3", "doc/man/man3/SSL_get_fd.3", + "doc/man/man3/SSL_get_handshake_rtt.3", "doc/man/man3/SSL_get_peer_cert_chain.3", "doc/man/man3/SSL_get_peer_certificate.3", "doc/man/man3/SSL_get_peer_signature_nid.3", "doc/man/man3/SSL_get_peer_tmp_key.3", "doc/man/man3/SSL_get_psk_identity.3", "doc/man/man3/SSL_get_rbio.3", + "doc/man/man3/SSL_get_rpoll_descriptor.3", "doc/man/man3/SSL_get_session.3", "doc/man/man3/SSL_get_shared_sigalgs.3", + "doc/man/man3/SSL_get_stream_id.3", + "doc/man/man3/SSL_get_stream_read_state.3", + "doc/man/man3/SSL_get_value_uint.3", "doc/man/man3/SSL_get_verify_result.3", "doc/man/man3/SSL_get_version.3", "doc/man/man3/SSL_group_to_name.3", + "doc/man/man3/SSL_handle_events.3", "doc/man/man3/SSL_in_init.3", + "doc/man/man3/SSL_inject_net_dgram.3", "doc/man/man3/SSL_key_update.3", "doc/man/man3/SSL_library_init.3", "doc/man/man3/SSL_load_client_CA_file.3", "doc/man/man3/SSL_new.3", + "doc/man/man3/SSL_new_domain.3", + "doc/man/man3/SSL_new_listener.3", + "doc/man/man3/SSL_new_stream.3", "doc/man/man3/SSL_pending.3", + "doc/man/man3/SSL_poll.3", "doc/man/man3/SSL_read.3", "doc/man/man3/SSL_read_early_data.3", "doc/man/man3/SSL_rstate_string.3", "doc/man/man3/SSL_session_reused.3", "doc/man/man3/SSL_set1_host.3", + "doc/man/man3/SSL_set1_initial_peer_addr.3", + "doc/man/man3/SSL_set1_server_cert_type.3", "doc/man/man3/SSL_set_async_callback.3", "doc/man/man3/SSL_set_bio.3", + "doc/man/man3/SSL_set_blocking_mode.3", "doc/man/man3/SSL_set_connect_state.3", + "doc/man/man3/SSL_set_default_stream_mode.3", "doc/man/man3/SSL_set_fd.3", + "doc/man/man3/SSL_set_incoming_stream_policy.3", + "doc/man/man3/SSL_set_quic_tls_cbs.3", "doc/man/man3/SSL_set_retry_verify.3", "doc/man/man3/SSL_set_session.3", + "doc/man/man3/SSL_set_session_secret_cb.3", "doc/man/man3/SSL_set_shutdown.3", "doc/man/man3/SSL_set_verify_result.3", "doc/man/man3/SSL_shutdown.3", "doc/man/man3/SSL_state_string.3", + "doc/man/man3/SSL_stream_conclude.3", + "doc/man/man3/SSL_stream_reset.3", "doc/man/man3/SSL_want.3", "doc/man/man3/SSL_write.3", "doc/man/man3/TS_RESP_CTX_new.3", - "doc/man/man3/TS_VERIFY_CTX_set_certs.3", + "doc/man/man3/TS_VERIFY_CTX.3", "doc/man/man3/UI_STRING.3", "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", + "doc/man/man3/X509_ACERT_add1_attr.3", + "doc/man/man3/X509_ACERT_add_attr_nconf.3", + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3", + "doc/man/man3/X509_ACERT_get_attr.3", + "doc/man/man3/X509_ACERT_print_ex.3", "doc/man/man3/X509_ALGOR_dup.3", "doc/man/man3/X509_ATTRIBUTE.3", "doc/man/man3/X509_CRL_get0_by_serial.3", @@ -19909,6 +23198,7 @@ our %unified_info = ( "doc/man/man3/X509_REQ_get_attr.3", "doc/man/man3/X509_REQ_get_extensions.3", "doc/man/man3/X509_SIG_get0.3", + "doc/man/man3/X509_STORE_CTX_get_by_subject.3", "doc/man/man3/X509_STORE_CTX_get_error.3", "doc/man/man3/X509_STORE_CTX_new.3", "doc/man/man3/X509_STORE_CTX_set_verify_cb.3", @@ -19931,6 +23221,7 @@ our %unified_info = ( "doc/man/man3/X509_get0_notBefore.3", "doc/man/man3/X509_get0_signature.3", "doc/man/man3/X509_get0_uids.3", + "doc/man/man3/X509_get_default_cert_file.3", "doc/man/man3/X509_get_extension_flags.3", "doc/man/man3/X509_get_pubkey.3", "doc/man/man3/X509_get_serialNumber.3", @@ -19976,12 +23267,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-RC5.7", "doc/man/man7/EVP_CIPHER-SEED.7", "doc/man/man7/EVP_CIPHER-SM4.7", + "doc/man/man7/EVP_KDF-ARGON2.7", "doc/man/man7/EVP_KDF-HKDF.7", + "doc/man/man7/EVP_KDF-HMAC-DRBG.7", "doc/man/man7/EVP_KDF-KB.7", "doc/man/man7/EVP_KDF-KRB5KDF.7", "doc/man/man7/EVP_KDF-PBKDF1.7", "doc/man/man7/EVP_KDF-PBKDF2.7", "doc/man/man7/EVP_KDF-PKCS12KDF.7", + "doc/man/man7/EVP_KDF-PVKKDF.7", "doc/man/man7/EVP_KDF-SCRYPT.7", "doc/man/man7/EVP_KDF-SS.7", "doc/man/man7/EVP_KDF-SSHKDF.7", @@ -19990,7 +23284,10 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X942-ASN1.7", "doc/man/man7/EVP_KDF-X942-CONCAT.7", "doc/man/man7/EVP_KDF-X963.7", + "doc/man/man7/EVP_KEM-EC.7", + "doc/man/man7/EVP_KEM-ML-KEM.7", "doc/man/man7/EVP_KEM-RSA.7", + "doc/man/man7/EVP_KEM-X25519.7", "doc/man/man7/EVP_KEYEXCH-DH.7", "doc/man/man7/EVP_KEYEXCH-ECDH.7", "doc/man/man7/EVP_KEYEXCH-X25519.7", @@ -20002,6 +23299,7 @@ our %unified_info = ( "doc/man/man7/EVP_MAC-Poly1305.7", "doc/man/man7/EVP_MAC-Siphash.7", "doc/man/man7/EVP_MD-BLAKE2.7", + "doc/man/man7/EVP_MD-KECCAK.7", "doc/man/man7/EVP_MD-MD2.7", "doc/man/man7/EVP_MD-MD4.7", "doc/man/man7/EVP_MD-MD5-SHA1.7", @@ -20021,12 +23319,17 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-EC.7", "doc/man/man7/EVP_PKEY-FFC.7", "doc/man/man7/EVP_PKEY-HMAC.7", + "doc/man/man7/EVP_PKEY-ML-DSA.7", + "doc/man/man7/EVP_PKEY-ML-KEM.7", "doc/man/man7/EVP_PKEY-RSA.7", + "doc/man/man7/EVP_PKEY-SLH-DSA.7", "doc/man/man7/EVP_PKEY-SM2.7", "doc/man/man7/EVP_PKEY-X25519.7", + "doc/man/man7/EVP_RAND-CRNG-TEST.7", "doc/man/man7/EVP_RAND-CTR-DRBG.7", "doc/man/man7/EVP_RAND-HASH-DRBG.7", "doc/man/man7/EVP_RAND-HMAC-DRBG.7", + "doc/man/man7/EVP_RAND-JITTER.7", "doc/man/man7/EVP_RAND-SEED-SRC.7", "doc/man/man7/EVP_RAND-TEST-RAND.7", "doc/man/man7/EVP_RAND.7", @@ -20034,17 +23337,19 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-ECDSA.7", "doc/man/man7/EVP_SIGNATURE-ED25519.7", "doc/man/man7/EVP_SIGNATURE-HMAC.7", + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7", "doc/man/man7/EVP_SIGNATURE-RSA.7", + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7", "doc/man/man7/OSSL_PROVIDER-FIPS.7", "doc/man/man7/OSSL_PROVIDER-base.7", "doc/man/man7/OSSL_PROVIDER-default.7", "doc/man/man7/OSSL_PROVIDER-legacy.7", "doc/man/man7/OSSL_PROVIDER-null.7", + "doc/man/man7/OSSL_STORE-winstore.7", "doc/man/man7/RAND.7", "doc/man/man7/RSA-PSS.7", "doc/man/man7/X25519.7", "doc/man/man7/bio.7", - "doc/man/man7/crypto.7", "doc/man/man7/ct.7", "doc/man/man7/des_modes.7", "doc/man/man7/evp.7", @@ -20055,14 +23360,31 @@ our %unified_info = ( "doc/man/man7/life_cycle-mac.7", "doc/man/man7/life_cycle-pkey.7", "doc/man/man7/life_cycle-rand.7", - "doc/man/man7/migration_guide.7", "doc/man/man7/openssl-core.h.7", "doc/man/man7/openssl-core_dispatch.h.7", "doc/man/man7/openssl-core_names.h.7", "doc/man/man7/openssl-env.7", "doc/man/man7/openssl-glossary.7", + "doc/man/man7/openssl-qlog.7", + "doc/man/man7/openssl-quic-concurrency.7", + "doc/man/man7/openssl-quic.7", "doc/man/man7/openssl-threads.7", "doc/man/man7/openssl_user_macros.7", + "doc/man/man7/ossl-guide-introduction.7", + "doc/man/man7/ossl-guide-libcrypto-introduction.7", + "doc/man/man7/ossl-guide-libraries-introduction.7", + "doc/man/man7/ossl-guide-libssl-introduction.7", + "doc/man/man7/ossl-guide-migration.7", + "doc/man/man7/ossl-guide-quic-client-block.7", + "doc/man/man7/ossl-guide-quic-client-non-block.7", + "doc/man/man7/ossl-guide-quic-introduction.7", + "doc/man/man7/ossl-guide-quic-multi-stream.7", + "doc/man/man7/ossl-guide-quic-server-block.7", + "doc/man/man7/ossl-guide-quic-server-non-block.7", + "doc/man/man7/ossl-guide-tls-client-block.7", + "doc/man/man7/ossl-guide-tls-client-non-block.7", + "doc/man/man7/ossl-guide-tls-introduction.7", + "doc/man/man7/ossl-guide-tls-server-block.7", "doc/man/man7/ossl_store-file.7", "doc/man/man7/ossl_store.7", "doc/man/man7/passphrase-encoding.7", @@ -20081,10 +23403,10 @@ our %unified_info = ( "doc/man/man7/provider-object.7", "doc/man/man7/provider-rand.7", "doc/man/man7/provider-signature.7", + "doc/man/man7/provider-skeymgmt.7", "doc/man/man7/provider-storemgmt.7", "doc/man/man7/provider.7", "doc/man/man7/proxy-certificates.7", - "doc/man/man7/ssl.7", "doc/man/man7/x509.7" ] }, @@ -20096,6 +23418,7 @@ our %unified_info = ( ], "programs" => [ "apps/openssl", + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -20106,7 +23429,24 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test", "test/aborttest", "test/acvp_test", @@ -20124,21 +23464,28 @@ our %unified_info = ( "test/asynctest", "test/bad_dtls_test", "test/bftest", + "test/bio_addr_test", + "test/bio_base64_test", "test/bio_callback_test", "test/bio_core_test", + "test/bio_dgram_test", "test/bio_enc_test", "test/bio_memleak_test", + "test/bio_meth_test", "test/bio_prefix_text", "test/bio_pw_callback_test", "test/bio_readbuffer_test", + "test/bio_tfo_test", "test/bioprinttest", "test/bn_internal_test", "test/bntest", + "test/build_wincrypt_test", "test/buildtest_c_aes", "test/buildtest_c_async", "test/buildtest_c_blowfish", "test/buildtest_c_bn", "test/buildtest_c_buffer", + "test/buildtest_c_byteorder", "test/buildtest_c_camellia", "test/buildtest_c_cast", "test/buildtest_c_cmac", @@ -20147,7 +23494,6 @@ our %unified_info = ( "test/buildtest_c_conftypes", "test/buildtest_c_core", "test/buildtest_c_core_dispatch", - "test/buildtest_c_core_names", "test/buildtest_c_core_object", "test/buildtest_c_cryptoerr_legacy", "test/buildtest_c_decoder", @@ -20156,6 +23502,7 @@ our %unified_info = ( "test/buildtest_c_dsa", "test/buildtest_c_dtls1", "test/buildtest_c_e_os2", + "test/buildtest_c_e_ostime", "test/buildtest_c_ebcdic", "test/buildtest_c_ec", "test/buildtest_c_ecdh", @@ -20165,13 +23512,16 @@ our %unified_info = ( "test/buildtest_c_evp", "test/buildtest_c_fips_names", "test/buildtest_c_hmac", + "test/buildtest_c_hpke", "test/buildtest_c_http", "test/buildtest_c_idea", + "test/buildtest_c_indicator", "test/buildtest_c_kdf", "test/buildtest_c_macros", "test/buildtest_c_md4", "test/buildtest_c_md5", "test/buildtest_c_mdc2", + "test/buildtest_c_ml_kem", "test/buildtest_c_modes", "test/buildtest_c_obj_mac", "test/buildtest_c_objects", @@ -20182,6 +23532,7 @@ our %unified_info = ( "test/buildtest_c_pem2", "test/buildtest_c_prov_ssl", "test/buildtest_c_provider", + "test/buildtest_c_quic", "test/buildtest_c_rand", "test/buildtest_c_rc2", "test/buildtest_c_rc4", @@ -20196,11 +23547,14 @@ our %unified_info = ( "test/buildtest_c_stack", "test/buildtest_c_store", "test/buildtest_c_symhacks", + "test/buildtest_c_thread", "test/buildtest_c_tls1", "test/buildtest_c_ts", "test/buildtest_c_txt_db", "test/buildtest_c_types", "test/buildtest_c_whrlpool", + "test/byteorder_test", + "test/ca_internals_test", "test/casttest", "test/chacha_internal_test", "test/cipher_overhead_test", @@ -20229,6 +23583,7 @@ our %unified_info = ( "test/curve448_internal_test", "test/d2i_test", "test/danetest", + "test/decoder_propq_test", "test/defltfips_test", "test/destest", "test/dhtest", @@ -20253,9 +23608,12 @@ our %unified_info = ( "test/evp_kdf_test", "test/evp_libctx_test", "test/evp_pkey_ctx_new_from_name", + "test/evp_pkey_dhkem_test", "test/evp_pkey_dparams_test", "test/evp_pkey_provided_test", + "test/evp_skey_test", "test/evp_test", + "test/evp_xof_test", "test/exdatatest", "test/exptest", "test/ext_internal_test", @@ -20265,21 +23623,29 @@ our %unified_info = ( "test/gmdifftest", "test/hexstr_test", "test/hmactest", + "test/hpke_test", "test/http_test", "test/ideatest", "test/igetest", + "test/json_test", "test/keymgmt_internal_test", "test/lhash_test", + "test/list_test", "test/localetest", "test/mdc2_internal_test", "test/mdc2test", + "test/membio_test", "test/memleaktest", + "test/ml_dsa_test", + "test/ml_kem_evp_extra_test", + "test/ml_kem_internal_test", "test/modes_internal_test", "test/namemap_internal_test", "test/nodefltctxtest", "test/ocspapitest", "test/ossl_store_test", "test/packettest", + "test/pairwise_fail_test", "test/param_build_test", "test/params_api_test", "test/params_conversion_test", @@ -20288,36 +23654,65 @@ our %unified_info = ( "test/pbetest", "test/pem_read_depr_test", "test/pemtest", + "test/pkcs12_api_test", "test/pkcs12_format_test", "test/pkcs7_test", "test/pkey_meth_kdf_test", "test/pkey_meth_test", "test/poly1305_internal_test", + "test/priority_queue_test", "test/property_test", "test/prov_config_test", "test/provfetchtest", + "test/provider_default_search_path_test", "test/provider_fallback_test", "test/provider_internal_test", "test/provider_pkey_test", "test/provider_status_test", "test/provider_test", "test/punycode_test", + "test/quic_ackm_test", + "test/quic_cc_test", + "test/quic_cfq_test", + "test/quic_client_test", + "test/quic_fc_test", + "test/quic_fifd_test", + "test/quic_lcidm_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_qlog_test", + "test/quic_radix_test", + "test/quic_rcidm_test", + "test/quic_record_test", + "test/quic_srt_gen_test", + "test/quic_srtm_test", + "test/quic_stream_test", + "test/quic_tserver_test", + "test/quic_txp_test", + "test/quic_txpim_test", + "test/quic_wire_test", + "test/quicapitest", + "test/quicfaultstest", "test/rand_status_test", "test/rand_test", "test/rc2test", "test/rc4test", "test/rc5test", - "test/rdrand_sanitytest", + "test/rdcpu_sanitytest", "test/recordlentest", + "test/rpktest", "test/rsa_complex", "test/rsa_mp_test", "test/rsa_sp800_56b_test", "test/rsa_test", + "test/rsa_x931_test", + "test/safe_math_test", "test/sanitytest", "test/secmemtest", "test/servername_test", "test/sha_test", "test/siphash_internal_test", + "test/slh_dsa_test", "test/sm2_internal_test", "test/sm3_internal_test", "test/sm4_internal_test", @@ -20325,6 +23720,7 @@ our %unified_info = ( "test/srptest", "test/ssl_cert_table_internal_test", "test/ssl_ctx_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", @@ -20332,13 +23728,17 @@ our %unified_info = ( "test/sslbuffertest", "test/sslcorrupttest", "test/stack_test", + "test/strtoultest", "test/sysdefaulttest", "test/test_test", + "test/threadpool_test", "test/threadstest", "test/threadstest_fips", "test/time_offset_test", + "test/time_test", "test/tls13ccstest", "test/tls13encryptiontest", + "test/tls13groupselection_test", "test/trace_api_test", "test/uitest", "test/upcallstest", @@ -20348,9 +23748,13 @@ our %unified_info = ( "test/verify_extra_test", "test/versions", "test/wpackettest", + "test/x509_acert_test", "test/x509_check_cert_pkey_test", "test/x509_dup_cert_test", "test/x509_internal_test", + "test/x509_load_cert_file_test", + "test/x509_req_test", + "test/x509_test", "test/x509_time_test", "test/x509aux" ], @@ -20366,6 +23770,33 @@ our %unified_info = ( "apps/CA.pl" => [ "apps/CA.pl.in" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/ca.c" + ], + "apps/lib/ca_internals_test-bin-app_libctx.o" => [ + "apps/lib/app_libctx.c" + ], + "apps/lib/ca_internals_test-bin-app_provider.o" => [ + "apps/lib/app_provider.c" + ], + "apps/lib/ca_internals_test-bin-app_rand.o" => [ + "apps/lib/app_rand.c" + ], + "apps/lib/ca_internals_test-bin-app_x509.o" => [ + "apps/lib/app_x509.c" + ], + "apps/lib/ca_internals_test-bin-apps.o" => [ + "apps/lib/apps.c" + ], + "apps/lib/ca_internals_test-bin-apps_ui.o" => [ + "apps/lib/apps_ui.c" + ], + "apps/lib/ca_internals_test-bin-engine.o" => [ + "apps/lib/engine.c" + ], + "apps/lib/ca_internals_test-bin-fmt.o" => [ + "apps/lib/fmt.c" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/lib/cmp_mock_srv.c" ], @@ -20387,6 +23818,9 @@ our %unified_info = ( "apps/lib/libapps-lib-apps.o" => [ "apps/lib/apps.c" ], + "apps/lib/libapps-lib-apps_opt_printf.o" => [ + "apps/lib/apps_opt_printf.c" + ], "apps/lib/libapps-lib-apps_ui.o" => [ "apps/lib/apps_ui.c" ], @@ -20405,6 +23839,9 @@ our %unified_info = ( "apps/lib/libapps-lib-http_server.o" => [ "apps/lib/http_server.c" ], + "apps/lib/libapps-lib-log.o" => [ + "apps/lib/log.c" + ], "apps/lib/libapps-lib-names.o" => [ "apps/lib/names.c" ], @@ -20436,12 +23873,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -20495,6 +23934,7 @@ our %unified_info = ( "apps/openssl-bin-s_server.o", "apps/openssl-bin-s_time.o", "apps/openssl-bin-sess_id.o", + "apps/openssl-bin-skeyutl.o", "apps/openssl-bin-smime.o", "apps/openssl-bin-speed.o", "apps/openssl-bin-spkac.o", @@ -20640,6 +24080,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/sess_id.c" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/skeyutl.c" + ], "apps/openssl-bin-smime.o" => [ "apps/smime.c" ], @@ -20709,6 +24152,12 @@ our %unified_info = ( "crypto/aria/libcrypto-lib-aria.o" => [ "crypto/aria/aria.c" ], + "crypto/asn1/asn1_time_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], + "crypto/asn1/ca_internals_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], "crypto/asn1/libcrypto-lib-a_bitstr.o" => [ "crypto/asn1/a_bitstr.c" ], @@ -20901,6 +24350,9 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" => [ "crypto/asn1/x_val.c" ], + "crypto/asn1_time_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/async/arch/libcrypto-lib-async_null.o" => [ "crypto/async/arch/async_null.c" ], @@ -20994,6 +24446,9 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_dgram.o" => [ "crypto/bio/bss_dgram.c" ], + "crypto/bio/libcrypto-lib-bss_dgram_pair.o" => [ + "crypto/bio/bss_dgram_pair.c" + ], "crypto/bio/libcrypto-lib-bss_fd.o" => [ "crypto/bio/bss_fd.c" ], @@ -21207,6 +24662,9 @@ our %unified_info = ( "crypto/buffer/libfips-lib-buffer.o" => [ "crypto/buffer/buffer.c" ], + "crypto/ca_internals_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/camellia/libcrypto-lib-camellia.o" => [ "crypto/camellia/camellia.c" ], @@ -21264,6 +24722,9 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_err.o" => [ "crypto/cmp/cmp_err.c" ], + "crypto/cmp/libcrypto-lib-cmp_genm.o" => [ + "crypto/cmp/cmp_genm.c" + ], "crypto/cmp/libcrypto-lib-cmp_hdr.o" => [ "crypto/cmp/cmp_hdr.c" ], @@ -21939,9 +25400,15 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_blocks.o" => [ "crypto/err/err_blocks.c" ], + "crypto/err/libcrypto-lib-err_mark.o" => [ + "crypto/err/err_mark.c" + ], "crypto/err/libcrypto-lib-err_prn.o" => [ "crypto/err/err_prn.c" ], + "crypto/err/libcrypto-lib-err_save.o" => [ + "crypto/err/err_save.c" + ], "crypto/ess/libcrypto-lib-ess_asn1.o" => [ "crypto/ess/ess_asn1.c" ], @@ -22188,9 +25655,15 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libcrypto-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libcrypto-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libcrypto-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/evp/libfips-lib-asymcipher.o" => [ "crypto/evp/asymcipher.c" ], @@ -22236,9 +25709,6 @@ our %unified_info = ( "crypto/evp/libfips-lib-keymgmt_meth.o" => [ "crypto/evp/keymgmt_meth.c" ], - "crypto/evp/libfips-lib-m_sigver.o" => [ - "crypto/evp/m_sigver.c" - ], "crypto/evp/libfips-lib-mac_lib.o" => [ "crypto/evp/mac_lib.c" ], @@ -22257,9 +25727,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libfips-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libfips-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libfips-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/ffc/libcrypto-lib-ffc_backend.o" => [ "crypto/ffc/ffc_backend.c" ], @@ -22302,12 +25778,30 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params_validate.o" => [ "crypto/ffc/ffc_params_validate.c" ], + "crypto/hashtable/libcrypto-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libcrypto-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], + "crypto/hashtable/libfips-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libfips-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], "crypto/hmac/libcrypto-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], "crypto/hmac/libfips-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], + "crypto/hpke/libcrypto-lib-hpke.o" => [ + "crypto/hpke/hpke.c" + ], + "crypto/hpke/libcrypto-lib-hpke_util.o" => [ + "crypto/hpke/hpke_util.c" + ], "crypto/http/libcrypto-lib-http_client.o" => [ "crypto/http/http_client.c" ], @@ -22350,6 +25844,9 @@ our %unified_info = ( "crypto/libcrypto-lib-bsearch.o" => [ "crypto/bsearch.c" ], + "crypto/libcrypto-lib-comp_methods.o" => [ + "crypto/comp_methods.c" + ], "crypto/libcrypto-lib-context.o" => [ "crypto/context.c" ], @@ -22377,9 +25874,15 @@ our %unified_info = ( "crypto/libcrypto-lib-cversion.o" => [ "crypto/cversion.c" ], + "crypto/libcrypto-lib-defaults.o" => [ + "crypto/defaults.c" + ], "crypto/libcrypto-lib-der_writer.o" => [ "crypto/der_writer.c" ], + "crypto/libcrypto-lib-deterministic_nonce.o" => [ + "crypto/deterministic_nonce.c" + ], "crypto/libcrypto-lib-ebcdic.o" => [ "crypto/ebcdic.c" ], @@ -22389,6 +25892,9 @@ our %unified_info = ( "crypto/libcrypto-lib-getenv.o" => [ "crypto/getenv.c" ], + "crypto/libcrypto-lib-indicator_core.o" => [ + "crypto/indicator_core.c" + ], "crypto/libcrypto-lib-info.o" => [ "crypto/info.c" ], @@ -22440,6 +25946,9 @@ our %unified_info = ( "crypto/libcrypto-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libcrypto-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libcrypto-lib-passphrase.o" => [ "crypto/passphrase.c" ], @@ -22461,12 +25970,21 @@ our %unified_info = ( "crypto/libcrypto-lib-punycode.o" => [ "crypto/punycode.c" ], + "crypto/libcrypto-lib-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/libcrypto-lib-self_test_core.o" => [ "crypto/self_test_core.c" ], + "crypto/libcrypto-lib-sleep.o" => [ + "crypto/sleep.c" + ], "crypto/libcrypto-lib-sparse_array.o" => [ "crypto/sparse_array.c" ], + "crypto/libcrypto-lib-ssl_err.o" => [ + "crypto/ssl_err.c" + ], "crypto/libcrypto-lib-threads_lib.o" => [ "crypto/threads_lib.c" ], @@ -22479,6 +25997,9 @@ our %unified_info = ( "crypto/libcrypto-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libcrypto-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libcrypto-lib-trace.o" => [ "crypto/trace.c" ], @@ -22545,6 +26066,9 @@ our %unified_info = ( "crypto/libfips-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libfips-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libfips-lib-provider_core.o" => [ "crypto/provider_core.c" ], @@ -22569,6 +26093,9 @@ our %unified_info = ( "crypto/libfips-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libfips-lib-time.o" => [ + "crypto/time.c" + ], "crypto/md4/libcrypto-lib-md4_dgst.o" => [ "crypto/md4/md4_dgst.c" ], @@ -22590,6 +26117,60 @@ our %unified_info = ( "crypto/mdc2/libcrypto-lib-mdc2dgst.o" => [ "crypto/mdc2/mdc2dgst.c" ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_kem/libcrypto-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], + "crypto/ml_kem/libfips-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], "crypto/modes/libcrypto-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22623,6 +26204,9 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libcrypto-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/modes/libfips-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22647,6 +26231,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libfips-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/objects/libcrypto-lib-o_names.o" => [ "crypto/objects/o_names.c" ], @@ -22692,6 +26279,9 @@ our %unified_info = ( "crypto/ocsp/libcrypto-lib-v3_ocsp.o" => [ "crypto/ocsp/v3_ocsp.c" ], + "crypto/packettest-bin-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/pem/libcrypto-lib-pem_all.o" => [ "crypto/pem/pem_all.c" ], @@ -22851,6 +26441,9 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_pool.o" => [ "crypto/rand/rand_pool.c" ], + "crypto/rand/libcrypto-lib-rand_uniform.o" => [ + "crypto/rand/rand_uniform.c" + ], "crypto/rand/libcrypto-lib-randfile.o" => [ "crypto/rand/randfile.c" ], @@ -23064,6 +26657,66 @@ our %unified_info = ( "crypto/siphash/libcrypto-lib-siphash.o" => [ "crypto/siphash/siphash.c" ], + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], + "crypto/slh_dsa/libfips-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libfips-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libfips-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libfips-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libfips-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], "crypto/sm2/libcrypto-lib-sm2_crypt.o" => [ "crypto/sm2/sm2_crypt.c" ], @@ -23118,6 +26771,42 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_strings.o" => [ "crypto/store/store_strings.c" ], + "crypto/thread/arch/libcrypto-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/arch/libfips-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libfips-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libfips-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/libcrypto-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libcrypto-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libcrypto-lib-internal.o" => [ + "crypto/thread/internal.c" + ], + "crypto/thread/libfips-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libfips-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libfips-lib-internal.o" => [ + "crypto/thread/internal.c" + ], "crypto/ts/libcrypto-lib-ts_asn1.o" => [ "crypto/ts/ts_asn1.c" ], @@ -23202,6 +26891,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_tree.o" => [ "crypto/x509/pcy_tree.c" ], + "crypto/x509/libcrypto-lib-t_acert.o" => [ + "crypto/x509/t_acert.c" + ], "crypto/x509/libcrypto-lib-t_crl.o" => [ "crypto/x509/t_crl.c" ], @@ -23211,6 +26903,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-t_x509.o" => [ "crypto/x509/t_x509.c" ], + "crypto/x509/libcrypto-lib-v3_aaa.o" => [ + "crypto/x509/v3_aaa.c" + ], + "crypto/x509/libcrypto-lib-v3_ac_tgt.o" => [ + "crypto/x509/v3_ac_tgt.c" + ], "crypto/x509/libcrypto-lib-v3_addr.o" => [ "crypto/x509/v3_addr.c" ], @@ -23226,6 +26924,21 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_asid.o" => [ "crypto/x509/v3_asid.c" ], + "crypto/x509/libcrypto-lib-v3_attrdesc.o" => [ + "crypto/x509/v3_attrdesc.c" + ], + "crypto/x509/libcrypto-lib-v3_attrmap.o" => [ + "crypto/x509/v3_attrmap.c" + ], + "crypto/x509/libcrypto-lib-v3_audit_id.o" => [ + "crypto/x509/v3_audit_id.c" + ], + "crypto/x509/libcrypto-lib-v3_authattid.o" => [ + "crypto/x509/v3_authattid.c" + ], + "crypto/x509/libcrypto-lib-v3_battcons.o" => [ + "crypto/x509/v3_battcons.c" + ], "crypto/x509/libcrypto-lib-v3_bcons.o" => [ "crypto/x509/v3_bcons.c" ], @@ -23250,15 +26963,24 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_genn.o" => [ "crypto/x509/v3_genn.c" ], + "crypto/x509/libcrypto-lib-v3_group_ac.o" => [ + "crypto/x509/v3_group_ac.c" + ], "crypto/x509/libcrypto-lib-v3_ia5.o" => [ "crypto/x509/v3_ia5.c" ], + "crypto/x509/libcrypto-lib-v3_ind_iss.o" => [ + "crypto/x509/v3_ind_iss.c" + ], "crypto/x509/libcrypto-lib-v3_info.o" => [ "crypto/x509/v3_info.c" ], "crypto/x509/libcrypto-lib-v3_int.o" => [ "crypto/x509/v3_int.c" ], + "crypto/x509/libcrypto-lib-v3_iobo.o" => [ + "crypto/x509/v3_iobo.c" + ], "crypto/x509/libcrypto-lib-v3_ist.o" => [ "crypto/x509/v3_ist.c" ], @@ -23268,6 +26990,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_ncons.o" => [ "crypto/x509/v3_ncons.c" ], + "crypto/x509/libcrypto-lib-v3_no_ass.o" => [ + "crypto/x509/v3_no_ass.c" + ], + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o" => [ + "crypto/x509/v3_no_rev_avail.c" + ], "crypto/x509/libcrypto-lib-v3_pci.o" => [ "crypto/x509/v3_pci.c" ], @@ -23289,18 +27017,36 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_purp.o" => [ "crypto/x509/v3_purp.c" ], + "crypto/x509/libcrypto-lib-v3_rolespec.o" => [ + "crypto/x509/v3_rolespec.c" + ], "crypto/x509/libcrypto-lib-v3_san.o" => [ "crypto/x509/v3_san.c" ], + "crypto/x509/libcrypto-lib-v3_sda.o" => [ + "crypto/x509/v3_sda.c" + ], + "crypto/x509/libcrypto-lib-v3_single_use.o" => [ + "crypto/x509/v3_single_use.c" + ], "crypto/x509/libcrypto-lib-v3_skid.o" => [ "crypto/x509/v3_skid.c" ], + "crypto/x509/libcrypto-lib-v3_soa_id.o" => [ + "crypto/x509/v3_soa_id.c" + ], "crypto/x509/libcrypto-lib-v3_sxnet.o" => [ "crypto/x509/v3_sxnet.c" ], + "crypto/x509/libcrypto-lib-v3_timespec.o" => [ + "crypto/x509/v3_timespec.c" + ], "crypto/x509/libcrypto-lib-v3_tlsf.o" => [ "crypto/x509/v3_tlsf.c" ], + "crypto/x509/libcrypto-lib-v3_usernotice.o" => [ + "crypto/x509/v3_usernotice.c" + ], "crypto/x509/libcrypto-lib-v3_utf8.o" => [ "crypto/x509/v3_utf8.c" ], @@ -23310,6 +27056,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3err.o" => [ "crypto/x509/v3err.c" ], + "crypto/x509/libcrypto-lib-x509_acert.o" => [ + "crypto/x509/x509_acert.c" + ], "crypto/x509/libcrypto-lib-x509_att.o" => [ "crypto/x509/x509_att.c" ], @@ -23361,6 +27110,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_vpm.o" => [ "crypto/x509/x509_vpm.c" ], + "crypto/x509/libcrypto-lib-x509aset.o" => [ + "crypto/x509/x509aset.c" + ], "crypto/x509/libcrypto-lib-x509cset.o" => [ "crypto/x509/x509cset.c" ], @@ -23388,6 +27140,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_exten.o" => [ "crypto/x509/x_exten.c" ], + "crypto/x509/libcrypto-lib-x_ietfatt.o" => [ + "crypto/x509/x_ietfatt.c" + ], "crypto/x509/libcrypto-lib-x_name.o" => [ "crypto/x509/x_name.c" ], @@ -23412,6 +27167,16 @@ our %unified_info = ( "engines/libcrypto-lib-e_padlock.o" => [ "engines/e_padlock.c" ], + "fuzz/acert-test" => [ + "fuzz/acert-test-bin-acert.o", + "fuzz/acert-test-bin-test-corpus.o" + ], + "fuzz/acert-test-bin-acert.o" => [ + "fuzz/acert.c" + ], + "fuzz/acert-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/asn1-test" => [ "fuzz/asn1-test-bin-asn1.o", "fuzz/asn1-test-bin-fuzz_rand.o", @@ -23524,6 +27289,190 @@ our %unified_info = ( "fuzz/ct-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/decoder-test" => [ + "fuzz/decoder-test-bin-decoder.o", + "fuzz/decoder-test-bin-fuzz_rand.o", + "fuzz/decoder-test-bin-test-corpus.o" + ], + "fuzz/decoder-test-bin-decoder.o" => [ + "fuzz/decoder.c" + ], + "fuzz/decoder-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/decoder-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsclient-test" => [ + "fuzz/dtlsclient-test-bin-dtlsclient.o", + "fuzz/dtlsclient-test-bin-fuzz_rand.o", + "fuzz/dtlsclient-test-bin-test-corpus.o" + ], + "fuzz/dtlsclient-test-bin-dtlsclient.o" => [ + "fuzz/dtlsclient.c" + ], + "fuzz/dtlsclient-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsclient-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsserver-test" => [ + "fuzz/dtlsserver-test-bin-dtlsserver.o", + "fuzz/dtlsserver-test-bin-fuzz_rand.o", + "fuzz/dtlsserver-test-bin-test-corpus.o" + ], + "fuzz/dtlsserver-test-bin-dtlsserver.o" => [ + "fuzz/dtlsserver.c" + ], + "fuzz/dtlsserver-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsserver-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/hashtable-test" => [ + "fuzz/hashtable-test-bin-fuzz_rand.o", + "fuzz/hashtable-test-bin-hashtable.o", + "fuzz/hashtable-test-bin-test-corpus.o" + ], + "fuzz/hashtable-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/hashtable-test-bin-hashtable.o" => [ + "fuzz/hashtable.c" + ], + "fuzz/hashtable-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-dsa-test" => [ + "fuzz/ml-dsa-test-bin-fuzz_rand.o", + "fuzz/ml-dsa-test-bin-ml-dsa.o", + "fuzz/ml-dsa-test-bin-test-corpus.o" + ], + "fuzz/ml-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-dsa-test-bin-ml-dsa.o" => [ + "fuzz/ml-dsa.c" + ], + "fuzz/ml-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-kem-test" => [ + "fuzz/ml-kem-test-bin-fuzz_rand.o", + "fuzz/ml-kem-test-bin-ml-kem.o", + "fuzz/ml-kem-test-bin-test-corpus.o" + ], + "fuzz/ml-kem-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-kem-test-bin-ml-kem.o" => [ + "fuzz/ml-kem.c" + ], + "fuzz/ml-kem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/pem-test" => [ + "fuzz/pem-test-bin-pem.o", + "fuzz/pem-test-bin-test-corpus.o" + ], + "fuzz/pem-test-bin-pem.o" => [ + "fuzz/pem.c" + ], + "fuzz/pem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/provider-test" => [ + "fuzz/provider-test-bin-provider.o", + "fuzz/provider-test-bin-test-corpus.o" + ], + "fuzz/provider-test-bin-provider.o" => [ + "fuzz/provider.c" + ], + "fuzz/provider-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/punycode-test" => [ + "fuzz/punycode-test-bin-punycode.o", + "fuzz/punycode-test-bin-test-corpus.o" + ], + "fuzz/punycode-test-bin-punycode.o" => [ + "fuzz/punycode.c" + ], + "fuzz/punycode-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-client-test" => [ + "fuzz/quic-client-test-bin-fuzz_rand.o", + "fuzz/quic-client-test-bin-quic-client.o", + "fuzz/quic-client-test-bin-test-corpus.o" + ], + "fuzz/quic-client-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-client-test-bin-quic-client.o" => [ + "fuzz/quic-client.c" + ], + "fuzz/quic-client-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-lcidm-test" => [ + "fuzz/quic-lcidm-test-bin-fuzz_rand.o", + "fuzz/quic-lcidm-test-bin-quic-lcidm.o", + "fuzz/quic-lcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-lcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-lcidm-test-bin-quic-lcidm.o" => [ + "fuzz/quic-lcidm.c" + ], + "fuzz/quic-lcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-rcidm-test" => [ + "fuzz/quic-rcidm-test-bin-fuzz_rand.o", + "fuzz/quic-rcidm-test-bin-quic-rcidm.o", + "fuzz/quic-rcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-rcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-rcidm-test-bin-quic-rcidm.o" => [ + "fuzz/quic-rcidm.c" + ], + "fuzz/quic-rcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-server-test" => [ + "fuzz/quic-server-test-bin-fuzz_rand.o", + "fuzz/quic-server-test-bin-quic-server.o", + "fuzz/quic-server-test-bin-test-corpus.o" + ], + "fuzz/quic-server-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-server-test-bin-quic-server.o" => [ + "fuzz/quic-server.c" + ], + "fuzz/quic-server-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-srtm-test" => [ + "fuzz/quic-srtm-test-bin-fuzz_rand.o", + "fuzz/quic-srtm-test-bin-quic-srtm.o", + "fuzz/quic-srtm-test-bin-test-corpus.o" + ], + "fuzz/quic-srtm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-srtm-test-bin-quic-srtm.o" => [ + "fuzz/quic-srtm.c" + ], + "fuzz/quic-srtm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/server-test" => [ "fuzz/server-test-bin-fuzz_rand.o", "fuzz/server-test-bin-server.o", @@ -23538,6 +27487,40 @@ our %unified_info = ( "fuzz/server-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/slh-dsa-test" => [ + "fuzz/slh-dsa-test-bin-fuzz_rand.o", + "fuzz/slh-dsa-test-bin-slh-dsa.o", + "fuzz/slh-dsa-test-bin-test-corpus.o" + ], + "fuzz/slh-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/slh-dsa-test-bin-slh-dsa.o" => [ + "fuzz/slh-dsa.c" + ], + "fuzz/slh-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/smime-test" => [ + "fuzz/smime-test-bin-smime.o", + "fuzz/smime-test-bin-test-corpus.o" + ], + "fuzz/smime-test-bin-smime.o" => [ + "fuzz/smime.c" + ], + "fuzz/smime-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test" => [ + "fuzz/v3name-test-bin-test-corpus.o", + "fuzz/v3name-test-bin-v3name.o" + ], + "fuzz/v3name-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test-bin-v3name.o" => [ + "fuzz/v3name.c" + ], "fuzz/x509-test" => [ "fuzz/x509-test-bin-fuzz_rand.o", "fuzz/x509-test-bin-test-corpus.o", @@ -23657,6 +27640,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -23717,6 +27701,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -23892,7 +27877,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", + "crypto/err/libcrypto-lib-err_mark.o", "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o", "crypto/ess/libcrypto-lib-ess_asn1.o", "crypto/ess/libcrypto-lib-ess_err.o", "crypto/ess/libcrypto-lib-ess_lib.o", @@ -23975,7 +27962,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/ffc/libcrypto-lib-ffc_backend.o", "crypto/ffc/libcrypto-lib-ffc_dh.o", "crypto/ffc/libcrypto-lib-ffc_key_generate.o", @@ -23983,7 +27972,11 @@ our %unified_info = ( "crypto/ffc/libcrypto-lib-ffc_params.o", "crypto/ffc/libcrypto-lib-ffc_params_generate.o", "crypto/ffc/libcrypto-lib-ffc_params_validate.o", + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", "crypto/hmac/libcrypto-lib-hmac.o", + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o", "crypto/http/libcrypto-lib-http_client.o", "crypto/http/libcrypto-lib-http_err.o", "crypto/http/libcrypto-lib-http_lib.o", @@ -23997,6 +27990,7 @@ our %unified_info = ( "crypto/lhash/libcrypto-lib-lhash.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -24006,10 +28000,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -24027,6 +28024,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -24034,12 +28032,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/md4/libcrypto-lib-md4_dgst.o", @@ -24049,6 +28051,15 @@ our %unified_info = ( "crypto/md5/libcrypto-lib-md5_sha1.o", "crypto/mdc2/libcrypto-lib-mdc2_one.o", "crypto/mdc2/libcrypto-lib-mdc2dgst.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_kem/libcrypto-lib-ml_kem.o", "crypto/modes/libcrypto-lib-cbc128.o", "crypto/modes/libcrypto-lib-ccm128.o", "crypto/modes/libcrypto-lib-cfb128.o", @@ -24060,6 +28071,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/objects/libcrypto-lib-o_names.o", "crypto/objects/libcrypto-lib-obj_dat.o", "crypto/objects/libcrypto-lib-obj_err.o", @@ -24123,6 +28135,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rc2/libcrypto-lib-rc2_cbc.o", "crypto/rc2/libcrypto-lib-rc2_ecb.o", @@ -24171,6 +28184,16 @@ our %unified_info = ( "crypto/sha/libcrypto-lib-sha3.o", "crypto/sha/libcrypto-lib-sha512.o", "crypto/siphash/libcrypto-lib-siphash.o", + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", "crypto/sm2/libcrypto-lib-sm2_crypt.o", "crypto/sm2/libcrypto-lib-sm2_err.o", "crypto/sm2/libcrypto-lib-sm2_key.o", @@ -24188,6 +28211,12 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_register.o", "crypto/store/libcrypto-lib-store_result.o", "crypto/store/libcrypto-lib-store_strings.o", + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", "crypto/ts/libcrypto-lib-ts_asn1.o", "crypto/ts/libcrypto-lib-ts_conf.o", "crypto/ts/libcrypto-lib-ts_err.o", @@ -24216,14 +28245,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -24232,12 +28269,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -24245,13 +28287,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -24269,6 +28318,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -24278,6 +28328,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -24299,14 +28350,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -24323,12 +28375,60 @@ our %unified_info = ( "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", "ssl/libssl-lib-tls_srp.o", - "ssl/record/libssl-lib-dtls1_bitmap.o", + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o", "ssl/record/libssl-lib-rec_layer_d1.o", "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o", "ssl/statem/libssl-lib-extensions.o", "ssl/statem/libssl-lib-extensions_clnt.o", "ssl/statem/libssl-lib-extensions_cust.o", @@ -24366,12 +28466,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/der/der_ecx_key.c" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/der/der_ml_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/der/der_ml_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/der/der_rsa_gen.c" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/der/der_rsa_key.c" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/der/der_slh_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/der/der_slh_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/der/der_wrap_gen.c" ], @@ -24438,6 +28550,9 @@ our %unified_info = ( "providers/common/libfips-lib-securitycheck_fips.o" => [ "providers/common/securitycheck_fips.c" ], + "providers/endecode_test-bin-legacyprov.o" => [ + "providers/legacyprov.c" + ], "providers/evp_extra_test-bin-legacyprov.o" => [ "providers/legacyprov.c" ], @@ -24448,6 +28563,9 @@ our %unified_info = ( "providers/fips/fips-dso-fips_entry.o" => [ "providers/fips/fips_entry.c" ], + "providers/fips/libfips-lib-fipsindicator.o" => [ + "providers/fips/fipsindicator.c" + ], "providers/fips/libfips-lib-fipsprov.o" => [ "providers/fips/fipsprov.c" ], @@ -24511,6 +28629,15 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o" => [ "providers/implementations/ciphers/cipher_aes_gcm_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o" => [ "providers/implementations/ciphers/cipher_aes_hw.c" ], @@ -24583,9 +28710,27 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o" => [ "providers/implementations/ciphers/cipher_sm4.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o" => [ "providers/implementations/ciphers/cipher_sm4_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o" => [ "providers/implementations/ciphers/cipher_tdes.c" ], @@ -24805,6 +28950,15 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" => [ "providers/implementations/encode_decode/endecoder_common.c" ], + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o" => [ + "providers/implementations/encode_decode/ml_common_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o" => [ + "providers/implementations/encode_decode/ml_dsa_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" => [ + "providers/implementations/encode_decode/ml_kem_codecs.c" + ], "providers/implementations/exchange/libdefault-lib-dh_exch.o" => [ "providers/implementations/exchange/dh_exch.c" ], @@ -24829,9 +28983,15 @@ our %unified_info = ( "providers/implementations/exchange/libfips-lib-kdf_exch.o" => [ "providers/implementations/exchange/kdf_exch.c" ], + "providers/implementations/kdfs/libdefault-lib-argon2.o" => [ + "providers/implementations/kdfs/argon2.c" + ], "providers/implementations/kdfs/libdefault-lib-hkdf.o" => [ "providers/implementations/kdfs/hkdf.c" ], + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o" => [ + "providers/implementations/kdfs/hmacdrbg_kdf.c" + ], "providers/implementations/kdfs/libdefault-lib-kbkdf.o" => [ "providers/implementations/kdfs/kbkdf.c" ], @@ -24889,12 +29049,39 @@ our %unified_info = ( "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" => [ "providers/implementations/kdfs/pbkdf1.c" ], + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" => [ + "providers/implementations/kdfs/pvkkdf.c" + ], + "providers/implementations/kem/libdefault-lib-ec_kem.o" => [ + "providers/implementations/kem/ec_kem.c" + ], + "providers/implementations/kem/libdefault-lib-ecx_kem.o" => [ + "providers/implementations/kem/ecx_kem.c" + ], + "providers/implementations/kem/libdefault-lib-kem_util.o" => [ + "providers/implementations/kem/kem_util.c" + ], + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libdefault-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libdefault-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libfips-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libfips-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libfips-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libtemplate-lib-template_kem.o" => [ + "providers/implementations/kem/template_kem.c" + ], "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -24913,9 +29100,21 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -24934,9 +29133,24 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" => [ + "providers/implementations/keymgmt/template_kmgmt.c" + ], "providers/implementations/macs/libdefault-lib-blake2b_mac.o" => [ "providers/implementations/macs/blake2b_mac.c" ], @@ -24973,9 +29187,6 @@ our %unified_info = ( "providers/implementations/macs/libfips-lib-kmac_prov.o" => [ "providers/implementations/macs/kmac_prov.c" ], - "providers/implementations/rands/libdefault-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libdefault-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -24991,12 +29202,12 @@ our %unified_info = ( "providers/implementations/rands/libdefault-lib-seed_src.o" => [ "providers/implementations/rands/seed_src.c" ], + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o" => [ + "providers/implementations/rands/seed_src_jitter.c" + ], "providers/implementations/rands/libdefault-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], - "providers/implementations/rands/libfips-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libfips-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25009,6 +29220,9 @@ our %unified_info = ( "providers/implementations/rands/libfips-lib-drbg_hmac.o" => [ "providers/implementations/rands/drbg_hmac.c" ], + "providers/implementations/rands/libfips-lib-fips_crng_test.o" => [ + "providers/implementations/rands/fips_crng_test.c" + ], "providers/implementations/rands/libfips-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], @@ -25036,9 +29250,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/implementations/signature/sm2_sig.c" ], @@ -25054,9 +29274,27 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libfips-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], "providers/implementations/storemgmt/libdefault-lib-file_store.o" => [ "providers/implementations/storemgmt/file_store.c" ], @@ -25080,8 +29318,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/libcommon-lib-provider_ctx.o", "providers/common/libcommon-lib-provider_err.o", @@ -25093,7 +29335,7 @@ our %unified_info = ( "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", "providers/implementations/digests/libcommon-lib-digestcommon.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/methods/libcommon-lib-tls_pad.o" ], "providers/libcrypto-lib-baseprov.o" => [ "providers/baseprov.c" @@ -25129,6 +29371,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -25153,7 +29398,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -25182,11 +29433,16 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o", "providers/implementations/exchange/libdefault-lib-dh_exch.o", "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", "providers/implementations/exchange/libdefault-lib-ecx_exch.o", "providers/implementations/exchange/libdefault-lib-kdf_exch.o", + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -25197,6 +29453,11 @@ our %unified_info = ( "providers/implementations/kdfs/libdefault-lib-sskdf.o", "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", "providers/implementations/kdfs/libdefault-lib-x942kdf.o", + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", @@ -25204,7 +29465,11 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libdefault-lib-blake2b_mac.o", "providers/implementations/macs/libdefault-lib-blake2s_mac.o", "providers/implementations/macs/libdefault-lib-cmac_prov.o", @@ -25213,12 +29478,12 @@ our %unified_info = ( "providers/implementations/macs/libdefault-lib-kmac_prov.o", "providers/implementations/macs/libdefault-lib-poly1305_prov.o", "providers/implementations/macs/libdefault-lib-siphash_prov.o", - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", @@ -25228,11 +29493,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", "providers/implementations/storemgmt/libdefault-lib-file_store.o", "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", - "ssl/libdefault-lib-s3_cbc.o" + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" ], "providers/libfips.a" => [ "crypto/aes/libfips-lib-aes_cbc.o", @@ -25334,14 +29603,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", + "crypto/evp/libfips-lib-s_lib.o", "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o", "crypto/ffc/libfips-lib-ffc_backend.o", "crypto/ffc/libfips-lib-ffc_dh.o", "crypto/ffc/libfips-lib-ffc_key_generate.o", @@ -25349,6 +29619,8 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params.o", "crypto/ffc/libfips-lib-ffc_params_generate.o", "crypto/ffc/libfips-lib-ffc_params_validate.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o", "crypto/hmac/libfips-lib-hmac.o", "crypto/lhash/libfips-lib-lhash.o", "crypto/libfips-lib-asn1_dsa.o", @@ -25371,6 +29643,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -25379,6 +29652,16 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o", + "crypto/ml_kem/libfips-lib-ml_kem.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -25387,6 +29670,7 @@ our %unified_info = ( "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o", "crypto/property/libfips-lib-defn_cache.o", "crypto/property/libfips-lib-property.o", "crypto/property/libfips-lib-property_parse.o", @@ -25415,7 +29699,23 @@ our %unified_info = ( "crypto/sha/libfips-lib-sha256.o", "crypto/sha/libfips-lib-sha3.o", "crypto/sha/libfips-lib-sha512.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o", "crypto/stack/libfips-lib-stack.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o", "providers/common/der/libfips-lib-der_rsa_sig.o", "providers/common/libfips-lib-bio_prov.o", "providers/common/libfips-lib-capabilities.o", @@ -25424,6 +29724,7 @@ our %unified_info = ( "providers/common/libfips-lib-provider_util.o", "providers/common/libfips-lib-securitycheck.o", "providers/common/libfips-lib-securitycheck_fips.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o", @@ -25461,6 +29762,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", "providers/implementations/kem/libfips-lib-rsa_kem.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", @@ -25468,24 +29771,32 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libfips-lib-cmac_prov.o", "providers/implementations/macs/libfips-lib-gmac_prov.o", "providers/implementations/macs/libfips-lib-hmac_prov.o", "providers/implementations/macs/libfips-lib-kmac_prov.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o", "providers/libcommon.a", - "ssl/libfips-lib-s3_cbc.o" + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "providers/liblegacy-lib-prov_running.o" => [ "providers/prov_running.c" @@ -25515,13 +29826,12 @@ our %unified_info = ( "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", "providers/implementations/digests/liblegacy-lib-wp_prov.o", "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o", "providers/liblegacy-lib-prov_running.o" ], - "ssl/libdefault-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" - ], - "ssl/libfips-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" + "providers/libtemplate.a" => [ + "providers/implementations/kem/libtemplate-lib-template_kem.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "ssl/libssl-lib-bio_ssl.o" => [ "ssl/bio_ssl.c" @@ -25541,6 +29851,9 @@ our %unified_info = ( "ssl/libssl-lib-pqueue.o" => [ "ssl/pqueue.c" ], + "ssl/libssl-lib-priority_queue.o" => [ + "ssl/priority_queue.c" + ], "ssl/libssl-lib-s3_enc.o" => [ "ssl/s3_enc.c" ], @@ -25556,15 +29869,15 @@ our %unified_info = ( "ssl/libssl-lib-ssl_cert.o" => [ "ssl/ssl_cert.c" ], + "ssl/libssl-lib-ssl_cert_comp.o" => [ + "ssl/ssl_cert_comp.c" + ], "ssl/libssl-lib-ssl_ciph.o" => [ "ssl/ssl_ciph.c" ], "ssl/libssl-lib-ssl_conf.o" => [ "ssl/ssl_conf.c" ], - "ssl/libssl-lib-ssl_err.o" => [ - "ssl/ssl_err.c" - ], "ssl/libssl-lib-ssl_err_legacy.o" => [ "ssl/ssl_err_legacy.c" ], @@ -25613,11 +29926,131 @@ our %unified_info = ( "ssl/libssl-lib-tls_srp.o" => [ "ssl/tls_srp.c" ], - "ssl/record/libcommon-lib-tls_pad.o" => [ - "ssl/record/tls_pad.c" + "ssl/quic/libssl-lib-cc_newreno.o" => [ + "ssl/quic/cc_newreno.c" + ], + "ssl/quic/libssl-lib-json_enc.o" => [ + "ssl/quic/json_enc.c" + ], + "ssl/quic/libssl-lib-qlog.o" => [ + "ssl/quic/qlog.c" + ], + "ssl/quic/libssl-lib-qlog_event_helpers.o" => [ + "ssl/quic/qlog_event_helpers.c" + ], + "ssl/quic/libssl-lib-quic_ackm.o" => [ + "ssl/quic/quic_ackm.c" + ], + "ssl/quic/libssl-lib-quic_cfq.o" => [ + "ssl/quic/quic_cfq.c" + ], + "ssl/quic/libssl-lib-quic_channel.o" => [ + "ssl/quic/quic_channel.c" + ], + "ssl/quic/libssl-lib-quic_demux.o" => [ + "ssl/quic/quic_demux.c" + ], + "ssl/quic/libssl-lib-quic_engine.o" => [ + "ssl/quic/quic_engine.c" + ], + "ssl/quic/libssl-lib-quic_fc.o" => [ + "ssl/quic/quic_fc.c" + ], + "ssl/quic/libssl-lib-quic_fifd.o" => [ + "ssl/quic/quic_fifd.c" + ], + "ssl/quic/libssl-lib-quic_impl.o" => [ + "ssl/quic/quic_impl.c" + ], + "ssl/quic/libssl-lib-quic_lcidm.o" => [ + "ssl/quic/quic_lcidm.c" + ], + "ssl/quic/libssl-lib-quic_method.o" => [ + "ssl/quic/quic_method.c" + ], + "ssl/quic/libssl-lib-quic_obj.o" => [ + "ssl/quic/quic_obj.c" + ], + "ssl/quic/libssl-lib-quic_port.o" => [ + "ssl/quic/quic_port.c" + ], + "ssl/quic/libssl-lib-quic_rcidm.o" => [ + "ssl/quic/quic_rcidm.c" + ], + "ssl/quic/libssl-lib-quic_reactor.o" => [ + "ssl/quic/quic_reactor.c" + ], + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o" => [ + "ssl/quic/quic_reactor_wait_ctx.c" + ], + "ssl/quic/libssl-lib-quic_record_rx.o" => [ + "ssl/quic/quic_record_rx.c" + ], + "ssl/quic/libssl-lib-quic_record_shared.o" => [ + "ssl/quic/quic_record_shared.c" + ], + "ssl/quic/libssl-lib-quic_record_tx.o" => [ + "ssl/quic/quic_record_tx.c" + ], + "ssl/quic/libssl-lib-quic_record_util.o" => [ + "ssl/quic/quic_record_util.c" + ], + "ssl/quic/libssl-lib-quic_rstream.o" => [ + "ssl/quic/quic_rstream.c" ], - "ssl/record/libssl-lib-dtls1_bitmap.o" => [ - "ssl/record/dtls1_bitmap.c" + "ssl/quic/libssl-lib-quic_rx_depack.o" => [ + "ssl/quic/quic_rx_depack.c" + ], + "ssl/quic/libssl-lib-quic_sf_list.o" => [ + "ssl/quic/quic_sf_list.c" + ], + "ssl/quic/libssl-lib-quic_srt_gen.o" => [ + "ssl/quic/quic_srt_gen.c" + ], + "ssl/quic/libssl-lib-quic_srtm.o" => [ + "ssl/quic/quic_srtm.c" + ], + "ssl/quic/libssl-lib-quic_sstream.o" => [ + "ssl/quic/quic_sstream.c" + ], + "ssl/quic/libssl-lib-quic_statm.o" => [ + "ssl/quic/quic_statm.c" + ], + "ssl/quic/libssl-lib-quic_stream_map.o" => [ + "ssl/quic/quic_stream_map.c" + ], + "ssl/quic/libssl-lib-quic_thread_assist.o" => [ + "ssl/quic/quic_thread_assist.c" + ], + "ssl/quic/libssl-lib-quic_tls.o" => [ + "ssl/quic/quic_tls.c" + ], + "ssl/quic/libssl-lib-quic_tls_api.o" => [ + "ssl/quic/quic_tls_api.c" + ], + "ssl/quic/libssl-lib-quic_trace.o" => [ + "ssl/quic/quic_trace.c" + ], + "ssl/quic/libssl-lib-quic_tserver.o" => [ + "ssl/quic/quic_tserver.c" + ], + "ssl/quic/libssl-lib-quic_txp.o" => [ + "ssl/quic/quic_txp.c" + ], + "ssl/quic/libssl-lib-quic_txpim.o" => [ + "ssl/quic/quic_txpim.c" + ], + "ssl/quic/libssl-lib-quic_types.o" => [ + "ssl/quic/quic_types.c" + ], + "ssl/quic/libssl-lib-quic_wire.o" => [ + "ssl/quic/quic_wire.c" + ], + "ssl/quic/libssl-lib-quic_wire_pkt.o" => [ + "ssl/quic/quic_wire_pkt.c" + ], + "ssl/quic/libssl-lib-uint_set.o" => [ + "ssl/quic/uint_set.c" ], "ssl/record/libssl-lib-rec_layer_d1.o" => [ "ssl/record/rec_layer_d1.c" @@ -25625,14 +30058,44 @@ our %unified_info = ( "ssl/record/libssl-lib-rec_layer_s3.o" => [ "ssl/record/rec_layer_s3.c" ], - "ssl/record/libssl-lib-ssl3_buffer.o" => [ - "ssl/record/ssl3_buffer.c" + "ssl/record/methods/libcommon-lib-tls_pad.o" => [ + "ssl/record/methods/tls_pad.c" + ], + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libfips-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libssl-lib-dtls_meth.o" => [ + "ssl/record/methods/dtls_meth.c" + ], + "ssl/record/methods/libssl-lib-ssl3_meth.o" => [ + "ssl/record/methods/ssl3_meth.c" + ], + "ssl/record/methods/libssl-lib-tls13_meth.o" => [ + "ssl/record/methods/tls13_meth.c" + ], + "ssl/record/methods/libssl-lib-tls1_meth.o" => [ + "ssl/record/methods/tls1_meth.c" + ], + "ssl/record/methods/libssl-lib-tls_common.o" => [ + "ssl/record/methods/tls_common.c" ], - "ssl/record/libssl-lib-ssl3_record.o" => [ - "ssl/record/ssl3_record.c" + "ssl/record/methods/libssl-lib-tls_multib.o" => [ + "ssl/record/methods/tls_multib.c" ], - "ssl/record/libssl-lib-ssl3_record_tls13.o" => [ - "ssl/record/ssl3_record_tls13.c" + "ssl/record/methods/libssl-lib-tlsany_meth.o" => [ + "ssl/record/methods/tlsany_meth.c" + ], + "ssl/rio/libssl-lib-poll_builder.o" => [ + "ssl/rio/poll_builder.c" + ], + "ssl/rio/libssl-lib-poll_immediate.o" => [ + "ssl/rio/poll_immediate.c" + ], + "ssl/rio/libssl-lib-rio_notifier.o" => [ + "ssl/rio/rio_notifier.c" ], "ssl/statem/libssl-lib-extensions.o" => [ "ssl/statem/extensions.c" @@ -25728,6 +30191,8 @@ our %unified_info = ( "test/asn1_string_table_test.c" ], "test/asn1_time_test" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1_time_test-bin-ctype.o", "test/asn1_time_test-bin-asn1_time_test.o" ], "test/asn1_time_test-bin-asn1_time_test.o" => [ @@ -25758,6 +30223,18 @@ our %unified_info = ( "test/bftest-bin-bftest.o" => [ "test/bftest.c" ], + "test/bio_addr_test" => [ + "test/bio_addr_test-bin-bio_addr_test.o" + ], + "test/bio_addr_test-bin-bio_addr_test.o" => [ + "test/bio_addr_test.c" + ], + "test/bio_base64_test" => [ + "test/bio_base64_test-bin-bio_base64_test.o" + ], + "test/bio_base64_test-bin-bio_base64_test.o" => [ + "test/bio_base64_test.c" + ], "test/bio_callback_test" => [ "test/bio_callback_test-bin-bio_callback_test.o" ], @@ -25770,6 +30247,12 @@ our %unified_info = ( "test/bio_core_test-bin-bio_core_test.o" => [ "test/bio_core_test.c" ], + "test/bio_dgram_test" => [ + "test/bio_dgram_test-bin-bio_dgram_test.o" + ], + "test/bio_dgram_test-bin-bio_dgram_test.o" => [ + "test/bio_dgram_test.c" + ], "test/bio_enc_test" => [ "test/bio_enc_test-bin-bio_enc_test.o" ], @@ -25782,6 +30265,12 @@ our %unified_info = ( "test/bio_memleak_test-bin-bio_memleak_test.o" => [ "test/bio_memleak_test.c" ], + "test/bio_meth_test" => [ + "test/bio_meth_test-bin-bio_meth_test.o" + ], + "test/bio_meth_test-bin-bio_meth_test.o" => [ + "test/bio_meth_test.c" + ], "test/bio_prefix_text" => [ "test/bio_prefix_text-bin-bio_prefix_text.o" ], @@ -25800,6 +30289,12 @@ our %unified_info = ( "test/bio_readbuffer_test-bin-bio_readbuffer_test.o" => [ "test/bio_readbuffer_test.c" ], + "test/bio_tfo_test" => [ + "test/bio_tfo_test-bin-bio_tfo_test.o" + ], + "test/bio_tfo_test-bin-bio_tfo_test.o" => [ + "test/bio_tfo_test.c" + ], "test/bioprinttest" => [ "test/bioprinttest-bin-bioprinttest.o" ], @@ -25818,6 +30313,12 @@ our %unified_info = ( "test/bntest-bin-bntest.o" => [ "test/bntest.c" ], + "test/build_wincrypt_test" => [ + "test/build_wincrypt_test-bin-build_wincrypt_test.o" + ], + "test/build_wincrypt_test-bin-build_wincrypt_test.o" => [ + "test/build_wincrypt_test.c" + ], "test/buildtest_c_aes" => [ "test/buildtest_c_aes-bin-buildtest_aes.o" ], @@ -25848,6 +30349,12 @@ our %unified_info = ( "test/buildtest_c_buffer-bin-buildtest_buffer.o" => [ "test/buildtest_buffer.c" ], + "test/buildtest_c_byteorder" => [ + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" + ], + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" => [ + "test/buildtest_byteorder.c" + ], "test/buildtest_c_camellia" => [ "test/buildtest_c_camellia-bin-buildtest_camellia.o" ], @@ -25896,12 +30403,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch-bin-buildtest_core_dispatch.o" => [ "test/buildtest_core_dispatch.c" ], - "test/buildtest_c_core_names" => [ - "test/buildtest_c_core_names-bin-buildtest_core_names.o" - ], - "test/buildtest_c_core_names-bin-buildtest_core_names.o" => [ - "test/buildtest_core_names.c" - ], "test/buildtest_c_core_object" => [ "test/buildtest_c_core_object-bin-buildtest_core_object.o" ], @@ -25950,6 +30451,12 @@ our %unified_info = ( "test/buildtest_c_e_os2-bin-buildtest_e_os2.o" => [ "test/buildtest_e_os2.c" ], + "test/buildtest_c_e_ostime" => [ + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" + ], + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" => [ + "test/buildtest_e_ostime.c" + ], "test/buildtest_c_ebcdic" => [ "test/buildtest_c_ebcdic-bin-buildtest_ebcdic.o" ], @@ -26004,6 +30511,12 @@ our %unified_info = ( "test/buildtest_c_hmac-bin-buildtest_hmac.o" => [ "test/buildtest_hmac.c" ], + "test/buildtest_c_hpke" => [ + "test/buildtest_c_hpke-bin-buildtest_hpke.o" + ], + "test/buildtest_c_hpke-bin-buildtest_hpke.o" => [ + "test/buildtest_hpke.c" + ], "test/buildtest_c_http" => [ "test/buildtest_c_http-bin-buildtest_http.o" ], @@ -26016,6 +30529,12 @@ our %unified_info = ( "test/buildtest_c_idea-bin-buildtest_idea.o" => [ "test/buildtest_idea.c" ], + "test/buildtest_c_indicator" => [ + "test/buildtest_c_indicator-bin-buildtest_indicator.o" + ], + "test/buildtest_c_indicator-bin-buildtest_indicator.o" => [ + "test/buildtest_indicator.c" + ], "test/buildtest_c_kdf" => [ "test/buildtest_c_kdf-bin-buildtest_kdf.o" ], @@ -26046,6 +30565,12 @@ our %unified_info = ( "test/buildtest_c_mdc2-bin-buildtest_mdc2.o" => [ "test/buildtest_mdc2.c" ], + "test/buildtest_c_ml_kem" => [ + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" + ], + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" => [ + "test/buildtest_ml_kem.c" + ], "test/buildtest_c_modes" => [ "test/buildtest_c_modes-bin-buildtest_modes.o" ], @@ -26106,6 +30631,12 @@ our %unified_info = ( "test/buildtest_c_provider-bin-buildtest_provider.o" => [ "test/buildtest_provider.c" ], + "test/buildtest_c_quic" => [ + "test/buildtest_c_quic-bin-buildtest_quic.o" + ], + "test/buildtest_c_quic-bin-buildtest_quic.o" => [ + "test/buildtest_quic.c" + ], "test/buildtest_c_rand" => [ "test/buildtest_c_rand-bin-buildtest_rand.o" ], @@ -26190,6 +30721,12 @@ our %unified_info = ( "test/buildtest_c_symhacks-bin-buildtest_symhacks.o" => [ "test/buildtest_symhacks.c" ], + "test/buildtest_c_thread" => [ + "test/buildtest_c_thread-bin-buildtest_thread.o" + ], + "test/buildtest_c_thread-bin-buildtest_thread.o" => [ + "test/buildtest_thread.c" + ], "test/buildtest_c_tls1" => [ "test/buildtest_c_tls1-bin-buildtest_tls1.o" ], @@ -26220,6 +30757,29 @@ our %unified_info = ( "test/buildtest_c_whrlpool-bin-buildtest_whrlpool.o" => [ "test/buildtest_whrlpool.c" ], + "test/byteorder_test" => [ + "test/byteorder_test-bin-byteorder_test.o" + ], + "test/byteorder_test-bin-byteorder_test.o" => [ + "test/byteorder_test.c" + ], + "test/ca_internals_test" => [ + "apps/ca_internals_test-bin-ca.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", + "crypto/ca_internals_test-bin-ctype.o", + "test/ca_internals_test-bin-ca_internals_test.o" + ], + "test/ca_internals_test-bin-ca_internals_test.o" => [ + "test/ca_internals_test.c" + ], "test/casttest" => [ "test/casttest-bin-casttest.o" ], @@ -26398,6 +30958,12 @@ our %unified_info = ( "test/danetest-bin-danetest.o" => [ "test/danetest.c" ], + "test/decoder_propq_test" => [ + "test/decoder_propq_test-bin-decoder_propq_test.o" + ], + "test/decoder_propq_test-bin-decoder_propq_test.o" => [ + "test/decoder_propq_test.c" + ], "test/defltfips_test" => [ "test/defltfips_test-bin-defltfips_test.o" ], @@ -26479,6 +31045,7 @@ our %unified_info = ( "test/ectest.c" ], "test/endecode_test" => [ + "providers/endecode_test-bin-legacyprov.o", "test/endecode_test-bin-endecode_test.o", "test/helpers/endecode_test-bin-predefined_dhparams.o" ], @@ -26511,17 +31078,29 @@ our %unified_info = ( ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", - "test/evp_extra_test-bin-evp_extra_test.o" + "test/evp_extra_test-bin-evp_extra_test.o", + "test/evp_extra_test-bin-fake_pipelineprov.o", + "test/evp_extra_test-bin-fake_rsaprov.o" ], "test/evp_extra_test-bin-evp_extra_test.o" => [ "test/evp_extra_test.c" ], + "test/evp_extra_test-bin-fake_pipelineprov.o" => [ + "test/fake_pipelineprov.c" + ], + "test/evp_extra_test-bin-fake_rsaprov.o" => [ + "test/fake_rsaprov.c" + ], "test/evp_extra_test2" => [ - "test/evp_extra_test2-bin-evp_extra_test2.o" + "test/evp_extra_test2-bin-evp_extra_test2.o", + "test/evp_extra_test2-bin-tls-provider.o" ], "test/evp_extra_test2-bin-evp_extra_test2.o" => [ "test/evp_extra_test2.c" ], + "test/evp_extra_test2-bin-tls-provider.o" => [ + "test/tls-provider.c" + ], "test/evp_fetch_prov_test" => [ "test/evp_fetch_prov_test-bin-evp_fetch_prov_test.o" ], @@ -26546,6 +31125,12 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name-bin-evp_pkey_ctx_new_from_name.o" => [ "test/evp_pkey_ctx_new_from_name.c" ], + "test/evp_pkey_dhkem_test" => [ + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" + ], + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" => [ + "test/evp_pkey_dhkem_test.c" + ], "test/evp_pkey_dparams_test" => [ "test/evp_pkey_dparams_test-bin-evp_pkey_dparams_test.o" ], @@ -26558,12 +31143,28 @@ our %unified_info = ( "test/evp_pkey_provided_test-bin-evp_pkey_provided_test.o" => [ "test/evp_pkey_provided_test.c" ], + "test/evp_skey_test" => [ + "test/evp_skey_test-bin-evp_skey_test.o", + "test/evp_skey_test-bin-fake_cipherprov.o" + ], + "test/evp_skey_test-bin-evp_skey_test.o" => [ + "test/evp_skey_test.c" + ], + "test/evp_skey_test-bin-fake_cipherprov.o" => [ + "test/fake_cipherprov.c" + ], "test/evp_test" => [ "test/evp_test-bin-evp_test.o" ], "test/evp_test-bin-evp_test.o" => [ "test/evp_test.c" ], + "test/evp_xof_test" => [ + "test/evp_xof_test-bin-evp_xof_test.o" + ], + "test/evp_xof_test-bin-evp_xof_test.o" => [ + "test/evp_xof_test.c" + ], "test/exdatatest" => [ "test/exdatatest-bin-exdatatest.o" ], @@ -26649,15 +31250,108 @@ our %unified_info = ( "test/helpers/fatalerrtest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/json_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/json_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/json_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + "test/helpers/pkcs12.c" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ "test/helpers/pkcs12.c" ], + "test/helpers/quic_multistream_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_multistream_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_multistream_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_newcid_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_newcid_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_newcid_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_radix_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_radix_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_radix_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_srt_gen_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicapitest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicapitest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicapitest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicfaultstest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicfaultstest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicfaultstest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/ssl_old_test-bin-predefined_dhparams.o" => [ "test/helpers/predefined_dhparams.c" ], @@ -26685,6 +31379,9 @@ our %unified_info = ( "test/helpers/tls13ccstest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/hexstr_test" => [ "test/hexstr_test-bin-hexstr_test.o" ], @@ -26697,6 +31394,12 @@ our %unified_info = ( "test/hmactest-bin-hmactest.o" => [ "test/hmactest.c" ], + "test/hpke_test" => [ + "test/hpke_test-bin-hpke_test.o" + ], + "test/hpke_test-bin-hpke_test.o" => [ + "test/hpke_test.c" + ], "test/http_test" => [ "test/http_test-bin-http_test.o" ], @@ -26715,6 +31418,16 @@ our %unified_info = ( "test/igetest-bin-igetest.o" => [ "test/igetest.c" ], + "test/json_test" => [ + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/json_test-bin-json_test.o" + ], + "test/json_test-bin-json_test.o" => [ + "test/json_test.c" + ], "test/keymgmt_internal_test" => [ "test/keymgmt_internal_test-bin-keymgmt_internal_test.o" ], @@ -26735,6 +31448,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -26747,6 +31461,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-tests.o", "test/testutil/libtestutil-lib-testutil_init.o" ], + "test/list_test" => [ + "test/list_test-bin-list_test.o" + ], + "test/list_test-bin-list_test.o" => [ + "test/list_test.c" + ], "test/localetest" => [ "test/localetest-bin-localetest.o" ], @@ -26765,12 +31485,36 @@ our %unified_info = ( "test/mdc2test-bin-mdc2test.o" => [ "test/mdc2test.c" ], + "test/membio_test" => [ + "test/membio_test-bin-membio_test.o" + ], + "test/membio_test-bin-membio_test.o" => [ + "test/membio_test.c" + ], "test/memleaktest" => [ "test/memleaktest-bin-memleaktest.o" ], "test/memleaktest-bin-memleaktest.o" => [ "test/memleaktest.c" ], + "test/ml_dsa_test" => [ + "test/ml_dsa_test-bin-ml_dsa_test.o" + ], + "test/ml_dsa_test-bin-ml_dsa_test.o" => [ + "test/ml_dsa_test.c" + ], + "test/ml_kem_evp_extra_test" => [ + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" + ], + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" => [ + "test/ml_kem_evp_extra_test.c" + ], + "test/ml_kem_internal_test" => [ + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" + ], + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" => [ + "test/ml_kem_internal_test.c" + ], "test/modes_internal_test" => [ "test/modes_internal_test-bin-modes_internal_test.o" ], @@ -26816,11 +31560,18 @@ our %unified_info = ( "test/p_test.c" ], "test/packettest" => [ + "crypto/packettest-bin-quic_vlint.o", "test/packettest-bin-packettest.o" ], "test/packettest-bin-packettest.o" => [ "test/packettest.c" ], + "test/pairwise_fail_test" => [ + "test/pairwise_fail_test-bin-pairwise_fail_test.o" + ], + "test/pairwise_fail_test-bin-pairwise_fail_test.o" => [ + "test/pairwise_fail_test.c" + ], "test/param_build_test" => [ "test/param_build_test-bin-param_build_test.o" ], @@ -26869,6 +31620,13 @@ our %unified_info = ( "test/pemtest-bin-pemtest.o" => [ "test/pemtest.c" ], + "test/pkcs12_api_test" => [ + "test/helpers/pkcs12_api_test-bin-pkcs12.o", + "test/pkcs12_api_test-bin-pkcs12_api_test.o" + ], + "test/pkcs12_api_test-bin-pkcs12_api_test.o" => [ + "test/pkcs12_api_test.c" + ], "test/pkcs12_format_test" => [ "test/helpers/pkcs12_format_test-bin-pkcs12.o", "test/pkcs12_format_test-bin-pkcs12_format_test.o" @@ -26900,6 +31658,12 @@ our %unified_info = ( "test/poly1305_internal_test-bin-poly1305_internal_test.o" => [ "test/poly1305_internal_test.c" ], + "test/priority_queue_test" => [ + "test/priority_queue_test-bin-priority_queue_test.o" + ], + "test/priority_queue_test-bin-priority_queue_test.o" => [ + "test/priority_queue_test.c" + ], "test/property_test" => [ "test/property_test-bin-property_test.o" ], @@ -26918,6 +31682,12 @@ our %unified_info = ( "test/provfetchtest-bin-provfetchtest.o" => [ "test/provfetchtest.c" ], + "test/provider_default_search_path_test" => [ + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" + ], + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" => [ + "test/provider_default_search_path_test.c" + ], "test/provider_fallback_test" => [ "test/provider_fallback_test-bin-provider_fallback_test.o" ], @@ -26966,6 +31736,174 @@ our %unified_info = ( "test/punycode_test-bin-punycode_test.o" => [ "test/punycode_test.c" ], + "test/quic_ackm_test" => [ + "test/quic_ackm_test-bin-cc_dummy.o", + "test/quic_ackm_test-bin-quic_ackm_test.o" + ], + "test/quic_ackm_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_ackm_test-bin-quic_ackm_test.o" => [ + "test/quic_ackm_test.c" + ], + "test/quic_cc_test" => [ + "test/quic_cc_test-bin-quic_cc_test.o" + ], + "test/quic_cc_test-bin-quic_cc_test.o" => [ + "test/quic_cc_test.c" + ], + "test/quic_cfq_test" => [ + "test/quic_cfq_test-bin-quic_cfq_test.o" + ], + "test/quic_cfq_test-bin-quic_cfq_test.o" => [ + "test/quic_cfq_test.c" + ], + "test/quic_client_test" => [ + "test/quic_client_test-bin-quic_client_test.o" + ], + "test/quic_client_test-bin-quic_client_test.o" => [ + "test/quic_client_test.c" + ], + "test/quic_fc_test" => [ + "test/quic_fc_test-bin-quic_fc_test.o" + ], + "test/quic_fc_test-bin-quic_fc_test.o" => [ + "test/quic_fc_test.c" + ], + "test/quic_fifd_test" => [ + "test/quic_fifd_test-bin-cc_dummy.o", + "test/quic_fifd_test-bin-quic_fifd_test.o" + ], + "test/quic_fifd_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_fifd_test-bin-quic_fifd_test.o" => [ + "test/quic_fifd_test.c" + ], + "test/quic_lcidm_test" => [ + "test/quic_lcidm_test-bin-quic_lcidm_test.o" + ], + "test/quic_lcidm_test-bin-quic_lcidm_test.o" => [ + "test/quic_lcidm_test.c" + ], + "test/quic_multistream_test" => [ + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/quic_multistream_test-bin-quic_multistream_test.o" + ], + "test/quic_multistream_test-bin-quic_multistream_test.o" => [ + "test/quic_multistream_test.c" + ], + "test/quic_newcid_test" => [ + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/quic_newcid_test-bin-quic_newcid_test.o" + ], + "test/quic_newcid_test-bin-quic_newcid_test.o" => [ + "test/quic_newcid_test.c" + ], + "test/quic_qlog_test" => [ + "test/quic_qlog_test-bin-quic_qlog_test.o" + ], + "test/quic_qlog_test-bin-quic_qlog_test.o" => [ + "test/quic_qlog_test.c" + ], + "test/quic_radix_test" => [ + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "test/quic_rcidm_test" => [ + "test/quic_rcidm_test-bin-quic_rcidm_test.o" + ], + "test/quic_rcidm_test-bin-quic_rcidm_test.o" => [ + "test/quic_rcidm_test.c" + ], + "test/quic_record_test" => [ + "test/quic_record_test-bin-quic_record_test.o" + ], + "test/quic_record_test-bin-quic_record_test.o" => [ + "test/quic_record_test.c" + ], + "test/quic_srt_gen_test" => [ + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" + ], + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" => [ + "test/quic_srt_gen_test.c" + ], + "test/quic_srtm_test" => [ + "test/quic_srtm_test-bin-quic_srtm_test.o" + ], + "test/quic_srtm_test-bin-quic_srtm_test.o" => [ + "test/quic_srtm_test.c" + ], + "test/quic_stream_test" => [ + "test/quic_stream_test-bin-quic_stream_test.o" + ], + "test/quic_stream_test-bin-quic_stream_test.o" => [ + "test/quic_stream_test.c" + ], + "test/quic_tserver_test" => [ + "test/quic_tserver_test-bin-quic_tserver_test.o" + ], + "test/quic_tserver_test-bin-quic_tserver_test.o" => [ + "test/quic_tserver_test.c" + ], + "test/quic_txp_test" => [ + "test/quic_txp_test-bin-cc_dummy.o", + "test/quic_txp_test-bin-quic_txp_test.o" + ], + "test/quic_txp_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_txp_test-bin-quic_txp_test.o" => [ + "test/quic_txp_test.c" + ], + "test/quic_txpim_test" => [ + "test/quic_txpim_test-bin-quic_txpim_test.o" + ], + "test/quic_txpim_test-bin-quic_txpim_test.o" => [ + "test/quic_txpim_test.c" + ], + "test/quic_wire_test" => [ + "test/quic_wire_test-bin-quic_wire_test.o" + ], + "test/quic_wire_test-bin-quic_wire_test.o" => [ + "test/quic_wire_test.c" + ], + "test/quicapitest" => [ + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/quicapitest-bin-quicapitest.o" + ], + "test/quicapitest-bin-quicapitest.o" => [ + "test/quicapitest.c" + ], + "test/quicfaultstest" => [ + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", + "test/quicfaultstest-bin-quicfaultstest.o" + ], + "test/quicfaultstest-bin-quicfaultstest.o" => [ + "test/quicfaultstest.c" + ], + "test/radix/quic_radix_test-bin-quic_radix.o" => [ + "test/radix/quic_radix.c" + ], "test/rand_status_test" => [ "test/rand_status_test-bin-rand_status_test.o" ], @@ -26996,11 +31934,11 @@ our %unified_info = ( "test/rc5test-bin-rc5test.o" => [ "test/rc5test.c" ], - "test/rdrand_sanitytest" => [ - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" + "test/rdcpu_sanitytest" => [ + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" ], - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" => [ - "test/rdrand_sanitytest.c" + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" => [ + "test/rdcpu_sanitytest.c" ], "test/recordlentest" => [ "test/helpers/recordlentest-bin-ssltestlib.o", @@ -27009,6 +31947,13 @@ our %unified_info = ( "test/recordlentest-bin-recordlentest.o" => [ "test/recordlentest.c" ], + "test/rpktest" => [ + "test/helpers/rpktest-bin-ssltestlib.o", + "test/rpktest-bin-rpktest.o" + ], + "test/rpktest-bin-rpktest.o" => [ + "test/rpktest.c" + ], "test/rsa_complex" => [ "test/rsa_complex-bin-rsa_complex.o" ], @@ -27033,6 +31978,18 @@ our %unified_info = ( "test/rsa_test-bin-rsa_test.o" => [ "test/rsa_test.c" ], + "test/rsa_x931_test" => [ + "test/rsa_x931_test-bin-rsa_x931_test.o" + ], + "test/rsa_x931_test-bin-rsa_x931_test.o" => [ + "test/rsa_x931_test.c" + ], + "test/safe_math_test" => [ + "test/safe_math_test-bin-safe_math_test.o" + ], + "test/safe_math_test-bin-safe_math_test.o" => [ + "test/safe_math_test.c" + ], "test/sanitytest" => [ "test/sanitytest-bin-sanitytest.o" ], @@ -27064,6 +32021,12 @@ our %unified_info = ( "test/siphash_internal_test-bin-siphash_internal_test.o" => [ "test/siphash_internal_test.c" ], + "test/slh_dsa_test" => [ + "test/slh_dsa_test-bin-slh_dsa_test.o" + ], + "test/slh_dsa_test-bin-slh_dsa_test.o" => [ + "test/slh_dsa_test.c" + ], "test/sm2_internal_test" => [ "test/sm2_internal_test-bin-sm2_internal_test.o" ], @@ -27106,6 +32069,13 @@ our %unified_info = ( "test/ssl_ctx_test-bin-ssl_ctx_test.o" => [ "test/ssl_ctx_test.c" ], + "test/ssl_handshake_rtt_test" => [ + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" + ], + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" => [ + "test/ssl_handshake_rtt_test.c" + ], "test/ssl_old_test" => [ "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/ssl_old_test-bin-ssl_old_test.o" @@ -27164,6 +32134,12 @@ our %unified_info = ( "test/stack_test-bin-stack_test.o" => [ "test/stack_test.c" ], + "test/strtoultest" => [ + "test/strtoultest-bin-strtoultest.o" + ], + "test/strtoultest-bin-strtoultest.o" => [ + "test/strtoultest.c" + ], "test/sysdefaulttest" => [ "test/sysdefaulttest-bin-sysdefaulttest.o" ], @@ -27194,6 +32170,9 @@ our %unified_info = ( "test/testutil/libtestutil-lib-format_output.o" => [ "test/testutil/format_output.c" ], + "test/testutil/libtestutil-lib-helper.o" => [ + "test/testutil/helper.c" + ], "test/testutil/libtestutil-lib-load.o" => [ "test/testutil/load.c" ], @@ -27227,6 +32206,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-testutil_init.o" => [ "test/testutil/testutil_init.c" ], + "test/threadpool_test" => [ + "test/threadpool_test-bin-threadpool_test.o" + ], + "test/threadpool_test-bin-threadpool_test.o" => [ + "test/threadpool_test.c" + ], "test/threadstest" => [ "test/threadstest-bin-threadstest.o" ], @@ -27245,6 +32230,12 @@ our %unified_info = ( "test/time_offset_test-bin-time_offset_test.o" => [ "test/time_offset_test.c" ], + "test/time_test" => [ + "test/time_test-bin-time_test.o" + ], + "test/time_test-bin-time_test.o" => [ + "test/time_test.c" + ], "test/tls13ccstest" => [ "test/helpers/tls13ccstest-bin-ssltestlib.o", "test/tls13ccstest-bin-tls13ccstest.o" @@ -27258,6 +32249,13 @@ our %unified_info = ( "test/tls13encryptiontest-bin-tls13encryptiontest.o" => [ "test/tls13encryptiontest.c" ], + "test/tls13groupselection_test" => [ + "test/helpers/tls13groupselection_test-bin-ssltestlib.o", + "test/tls13groupselection_test-bin-tls13groupselection_test.o" + ], + "test/tls13groupselection_test-bin-tls13groupselection_test.o" => [ + "test/tls13groupselection_test.c" + ], "test/trace_api_test" => [ "test/trace_api_test-bin-trace_api_test.o" ], @@ -27313,6 +32311,12 @@ our %unified_info = ( "test/wpackettest-bin-wpackettest.o" => [ "test/wpackettest.c" ], + "test/x509_acert_test" => [ + "test/x509_acert_test-bin-x509_acert_test.o" + ], + "test/x509_acert_test-bin-x509_acert_test.o" => [ + "test/x509_acert_test.c" + ], "test/x509_check_cert_pkey_test" => [ "test/x509_check_cert_pkey_test-bin-x509_check_cert_pkey_test.o" ], @@ -27331,6 +32335,24 @@ our %unified_info = ( "test/x509_internal_test-bin-x509_internal_test.o" => [ "test/x509_internal_test.c" ], + "test/x509_load_cert_file_test" => [ + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" + ], + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" => [ + "test/x509_load_cert_file_test.c" + ], + "test/x509_req_test" => [ + "test/x509_req_test-bin-x509_req_test.o" + ], + "test/x509_req_test-bin-x509_req_test.o" => [ + "test/x509_req_test.c" + ], + "test/x509_test" => [ + "test/x509_test-bin-x509_test.o" + ], + "test/x509_test-bin-x509_test.o" => [ + "test/x509_test.c" + ], "test/x509_time_test" => [ "test/x509_time_test-bin-x509_time_test.o" ], @@ -27394,6 +32416,7 @@ my @makevars = ( "LDLIBS", "MT", "MTFLAGS", + "OBJCOPY", "PERL", "RANLIB", "RC", @@ -27410,6 +32433,12 @@ my %disabled_info = ( "asm" => { "macro" => "OPENSSL_NO_ASM" }, + "brotli" => { + "macro" => "OPENSSL_NO_BROTLI" + }, + "brotli-dynamic" => { + "macro" => "OPENSSL_NO_BROTLI_DYNAMIC" + }, "comp" => { "macro" => "OPENSSL_NO_COMP", "skipped" => [ @@ -27422,6 +32451,9 @@ my %disabled_info = ( "crypto-mdebug-backtrace" => { "macro" => "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE" }, + "demos" => { + "macro" => "OPENSSL_NO_DEMOS" + }, "ec_nistp_64_gcc_128" => { "macro" => "OPENSSL_NO_EC_NISTP_64_GCC_128" }, @@ -27431,12 +32463,24 @@ my %disabled_info = ( "external-tests" => { "macro" => "OPENSSL_NO_EXTERNAL_TESTS" }, + "fips-jitter" => { + "macro" => "OPENSSL_NO_FIPS_JITTER" + }, "fuzz-afl" => { "macro" => "OPENSSL_NO_FUZZ_AFL" }, "fuzz-libfuzzer" => { "macro" => "OPENSSL_NO_FUZZ_LIBFUZZER" }, + "h3demo" => { + "macro" => "OPENSSL_NO_H3DEMO" + }, + "hqinterop" => { + "macro" => "OPENSSL_NO_HQINTEROP" + }, + "jitter" => { + "macro" => "OPENSSL_NO_JITTER" + }, "ktls" => { "macro" => "OPENSSL_NO_KTLS" }, @@ -27452,6 +32496,9 @@ my %disabled_info = ( "msan" => { "macro" => "OPENSSL_NO_MSAN" }, + "pie" => { + "macro" => "OPENSSL_NO_PIE" + }, "rc5" => { "macro" => "OPENSSL_NO_RC5", "skipped" => [ @@ -27467,6 +32514,12 @@ my %disabled_info = ( "ssl3-method" => { "macro" => "OPENSSL_NO_SSL3_METHOD" }, + "sslkeylog" => { + "macro" => "OPENSSL_NO_SSLKEYLOG" + }, + "tfo" => { + "macro" => "OPENSSL_NO_TFO" + }, "trace" => { "macro" => "OPENSSL_NO_TRACE" }, @@ -27481,6 +32534,21 @@ my %disabled_info = ( }, "weak-ssl-ciphers" => { "macro" => "OPENSSL_NO_WEAK_SSL_CIPHERS" + }, + "winstore" => { + "macro" => "OPENSSL_NO_WINSTORE" + }, + "zlib" => { + "macro" => "OPENSSL_NO_ZLIB" + }, + "zlib-dynamic" => { + "macro" => "OPENSSL_NO_ZLIB_DYNAMIC" + }, + "zstd" => { + "macro" => "OPENSSL_NO_ZSTD" + }, + "zstd-dynamic" => { + "macro" => "OPENSSL_NO_ZSTD_DYNAMIC" } ); my @user_crossable = qw( AR AS CC CXX CPP LD MT RANLIB RC ); @@ -27494,15 +32562,15 @@ unless (caller) { use File::Copy; use Pod::Usage; - use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; - use OpenSSL::fallback '/home/runner/work/node/node/deps/openssl/openssl/external/perl/MODULES.txt'; + use lib '/node/deps/openssl/openssl/util/perl'; + use OpenSSL::fallback '/node/deps/openssl/openssl/external/perl/MODULES.txt'; my $here = dirname($0); if (scalar @ARGV == 0) { # With no arguments, re-create the build file # We do that in two steps, where the first step emits perl - # snipets. + # snippets. my $buildfile = $config{build_file}; my $buildfile_template = "$buildfile.in"; @@ -27522,7 +32590,7 @@ unless (caller) { ); use lib '.'; - use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; + use lib '/node/deps/openssl/openssl/Configurations'; use gentemplate; open my $buildfile_template_fh, ">$buildfile_template" @@ -27539,8 +32607,8 @@ unless (caller) { my $prepend = <<'_____'; use File::Spec::Functions; -use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; -use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; +use lib '/node/deps/openssl/openssl/util/perl'; +use lib '/node/deps/openssl/openssl/Configurations'; use lib '.'; use platform; _____ diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h index 9b11cde92c0301..59f3e49bdc4cd8 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: BSD-x86" -#define DATE "built on: Sun Jul 20 00:46:06 2025 UTC" +#define DATE "built on: Tue Aug 5 17:10:45 2025 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/crypto/params_idx.c b/deps/openssl/config/archs/BSD-x86/no-asm/crypto/params_idx.c new file mode 100644 index 00000000000000..9d76ffededc24c --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/no-asm/crypto/params_idx.c @@ -0,0 +1,3366 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from crypto/params_idx.c.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#include "internal/e_os.h" +#include "internal/param_names.h" +#include + +/* Machine generated TRIE -- generated by util/perl/OpenSSL/paramnames.pm */ +int ossl_param_find_pidx(const char *s) +{ + switch(s[0]) { + default: + break; + case 'a': + switch(s[1]) { + default: + break; + case 'c': + if (strcmp("vp-info", s + 2) == 0) + return PIDX_KDF_PARAM_X942_ACVPINFO; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'd': + if (strcmp("itional-random", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_ADD_RANDOM; + break; + case '\0': + return PIDX_KDF_PARAM_ARGON2_AD; + } + break; + case 'e': + if (strcmp("ad", s + 2) == 0) + return PIDX_CIPHER_PARAM_AEAD; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("id_param", s + 4) == 0) + return PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD; + break; + case 'i': + if (strcmp("d-absent", s + 4) == 0) + return PIDX_DIGEST_PARAM_ALGID_ABSENT; + break; + case 'o': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'h': + switch(s[8]) { + default: + break; + case 'm': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '-': + if (strcmp("params", s + 13) == 0) + return PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS; + break; + case '\0': + return PIDX_ALG_PARAM_ALGORITHM_ID; + } + } + } + } + } + } + } + } + } + } + break; + case 'i': + if (strcmp("as", s + 3) == 0) + return PIDX_STORE_PARAM_ALIAS; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_A; + } + break; + case 'b': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("sis-type", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_CHAR2_TYPE; + break; + case 'i': + if (strcmp("ts", s + 2) == 0) + return PIDX_PKEY_PARAM_BITS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("size", s + 6) == 0) + return PIDX_MAC_PARAM_BLOCK_SIZE; + break; + case '_': + if (strcmp("padding", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING; + break; + case 's': + if (strcmp("ize", s + 6) == 0) + return PIDX_DIGEST_PARAM_BLOCK_SIZE; + } + } + } + } + break; + case 'u': + if (strcmp("ildinfo", s + 2) == 0) + return PIDX_PROV_PARAM_BUILDINFO; + break; + case '\0': + return PIDX_PKEY_PARAM_EC_B; + } + break; + case 'c': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_C_ROUNDS; + break; + case 'e': + if (strcmp("kalg", s + 2) == 0) + return PIDX_KDF_PARAM_CEK_ALG; + break; + case 'i': + if (strcmp("pher", s + 2) == 0) + return PIDX_ALG_PARAM_CIPHER; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("actor", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_COFACTOR; + break; + case 'n': + switch(s[3]) { + default: + break; + case 's': + if (strcmp("tant", s + 4) == 0) + return PIDX_KDF_PARAM_CONSTANT; + break; + case 't': + if (strcmp("ext-string", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_CONTEXT_STRING; + } + } + break; + case 't': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("mode", s + 4) == 0) + return PIDX_CIPHER_PARAM_CTS_MODE; + break; + case '\0': + return PIDX_CIPHER_PARAM_CTS; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '-': + if (strcmp("iv", s + 7) == 0) + return PIDX_CIPHER_PARAM_CUSTOM_IV; + break; + case '\0': + return PIDX_MAC_PARAM_CUSTOM; + } + } + } + } + } + } + break; + case 'd': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_D_ROUNDS; + break; + case 'a': + switch(s[2]) { + default: + break; + case 't': + switch(s[3]) { + default: + break; + case 'a': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 's': + if (strcmp("tructure", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_STRUCTURE; + break; + case 't': + if (strcmp("ype", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_TYPE; + } + break; + case '\0': + return PIDX_OBJECT_PARAM_DATA; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + if (strcmp("ded-from-explicit", s + 4) == 0) + return PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS; + break; + case 'r': + if (strcmp("ypt-only", s + 4) == 0) + return PIDX_CIPHER_PARAM_DECRYPT_ONLY; + } + break; + case 'f': + if (strcmp("ault-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_DEFAULT_DIGEST; + break; + case 's': + if (strcmp("c", s + 3) == 0) + return PIDX_OBJECT_PARAM_DESC; + break; + case 't': + if (strcmp("erministic", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_DETERMINISTIC; + } + break; + case 'h': + if (strcmp("kem-ikm", s + 2) == 0) + return PIDX_PKEY_PARAM_DHKEM_IKM; + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("heck", s + 8) == 0) + return PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK; + break; + case 'n': + if (strcmp("oinit", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_NOINIT; + break; + case 'o': + if (strcmp("neshot", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_ONESHOT; + break; + case 'p': + if (strcmp("rops", s + 8) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS; + break; + case 's': + if (strcmp("ize", s + 8) == 0) + return PIDX_PKEY_PARAM_DIGEST_SIZE; + } + break; + case '\0': + return PIDX_STORE_PARAM_DIGEST; + } + } + } + } + break; + case 's': + if (strcmp("tid", s + 3) == 0) + return PIDX_PKEY_PARAM_DIST_ID; + } + break; + case 'r': + if (strcmp("bg-no-trunc-md", s + 2) == 0) + return PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST; + break; + case 's': + if (strcmp("a-sign-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_DSA_SIGN_DISABLED; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_D; + } + break; + case 'e': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("rly_clean", s + 2) == 0) + return PIDX_KDF_PARAM_EARLY_CLEAN; + break; + case 'c': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'h': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'a': + switch(s[9]) { + default: + break; + case 'c': + switch(s[10]) { + default: + break; + case 't': + switch(s[11]) { + default: + break; + case 'o': + switch(s[12]) { + default: + break; + case 'r': + switch(s[13]) { + default: + break; + case '-': + switch(s[14]) { + default: + break; + case 'c': + if (strcmp("heck", s + 15) == 0) + return PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK; + break; + case 'm': + if (strcmp("ode", s + 15) == 0) + return PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE; + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'm': + if (strcmp("s_check", s + 2) == 0) + return PIDX_KDF_PARAM_FIPS_EMS_CHECK; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("d-pub-key", s + 6) == 0) + return PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY; + break; + case 'i': + if (strcmp("ng", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_ENCODING; + } + } + break; + case 'r': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'c': + if (strcmp("heck", s + 9) == 0) + return PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK; + break; + case 'l': + if (strcmp("evel", s + 9) == 0) + return PIDX_ENCODER_PARAM_ENCRYPT_LEVEL; + } + } + } + } + } + } + break; + case 'g': + if (strcmp("ine", s + 3) == 0) + return PIDX_ALG_PARAM_ENGINE; + break; + case 't': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'y': + switch(s[7]) { + default: + break; + case '_': + if (strcmp("required", s + 8) == 0) + return PIDX_DRBG_PARAM_ENTROPY_REQUIRED; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_ENTROPY; + } + } + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_E; + break; + case 'x': + if (strcmp("pect", s + 2) == 0) + return PIDX_STORE_PARAM_EXPECT; + } + break; + case 'f': + switch(s[1]) { + default: + break; + case 'i': + switch(s[2]) { + default: + break; + case 'e': + if (strcmp("ld-type", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_FIELD_TYPE; + break; + case 'n': + if (strcmp("gerprint", s + 3) == 0) + return PIDX_STORE_PARAM_FINGERPRINT; + break; + case 'p': + if (strcmp("s-indicator", s + 3) == 0) + return PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR; + } + } + break; + case 'g': + switch(s[1]) { + default: + break; + case 'e': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_GENERATE; + } + break; + case 'o': + if (strcmp("r", s + 8) == 0) + return PIDX_PKEY_PARAM_EC_GENERATOR; + } + } + } + } + } + } + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_GINDEX; + break; + case 'r': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'u': + switch(s[4]) { + default: + break; + case 'p': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("check", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE; + break; + case '\0': + return PIDX_PKEY_PARAM_GROUP_NAME; + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_G; + } + break; + case 'h': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("s-randkey", s + 2) == 0) + return PIDX_CIPHER_PARAM_HAS_RAND_KEY; + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_H; + break; + case 'k': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'f': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_KEY_CHECK; + } + } + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_HMAC_KEY_CHECK; + break; + case 's': + if (strcmp("_padding", s + 2) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING; + } + break; + case 'i': + switch(s[1]) { + default: + break; + case 'd': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_PKCS12_ID; + } + break; + case 'k': + if (strcmp("me", s + 2) == 0) + return PIDX_KEM_PARAM_IKME; + break; + case 'm': + if (strcmp("plicit-rejection", s + 2) == 0) + return PIDX_PKEY_PARAM_IMPLICIT_REJECTION; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("lude-public", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC; + break; + case 'f': + if (strcmp("o", s + 3) == 0) + return PIDX_PASSPHRASE_PARAM_INFO; + break; + case 'p': + if (strcmp("ut-type", s + 3) == 0) + return PIDX_STORE_PARAM_INPUT_TYPE; + break; + case 's': + if (strcmp("tance", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_INSTANCE; + } + break; + case 't': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("tion", s + 5) == 0) + return PIDX_GEN_PARAM_ITERATION; + break; + case '\0': + return PIDX_KDF_PARAM_ITER; + } + } + } + break; + case 'v': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("generated", s + 3) == 0) + return PIDX_CIPHER_PARAM_AEAD_IV_GENERATED; + break; + case 'l': + if (strcmp("en", s + 3) == 0) + return PIDX_CIPHER_PARAM_IVLEN; + break; + case '\0': + return PIDX_MAC_PARAM_IV; + } + } + break; + case 'j': + switch(s[1]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_COFACTOR; + } + break; + case 'k': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K2; + } + break; + case '3': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K3; + } + break; + case 'a': + if (strcmp("t", s + 2) == 0) + return PIDX_SIGNATURE_PARAM_KAT; + break; + case 'b': + if (strcmp("kdf-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KBKDF_KEY_CHECK; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case 's': + switch(s[9]) { + default: + break; + case 't': + switch(s[10]) { + default: + break; + case '-': + if (strcmp("props", s + 11) == 0) + return PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_KDF_DIGEST; + } + } + } + } + } + } + break; + case 'o': + if (strcmp("utlen", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_OUTLEN; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_TYPE; + break; + case 'u': + if (strcmp("km", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_UKM; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'y': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("heck", s + 5) == 0) + return PIDX_PKEY_PARAM_FIPS_KEY_CHECK; + break; + case 'l': + if (strcmp("ength", s + 5) == 0) + return PIDX_SKEY_PARAM_KEY_LENGTH; + } + break; + case 'b': + if (strcmp("its", s + 4) == 0) + return PIDX_CIPHER_PARAM_RC2_KEYBITS; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_KEYLEN; + break; + case '\0': + return PIDX_MAC_PARAM_KEY; + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KMAC_KEY_CHECK; + } + break; + case 'l': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("el", s + 3) == 0) + return PIDX_KDF_PARAM_LABEL; + break; + case 'n': + if (strcmp("es", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_LANES; + } + } + break; + case 'm': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'k': + if (strcmp("ey", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_MAC_KEY; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_KDF_PARAM_MAC_SIZE; + break; + case '\0': + return PIDX_ALG_PARAM_MAC; + } + break; + case 'n': + if (strcmp("datory-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_MANDATORY_DIGEST; + break; + case 'x': + switch(s[3]) { + default: + break; + case '-': + if (strcmp("size", s + 4) == 0) + return PIDX_PKEY_PARAM_MAX_SIZE; + break; + case '_': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("dinlen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_ADINLEN; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("rly_data", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA; + break; + case 'n': + if (strcmp("tropylen", s + 6) == 0) + return PIDX_DRBG_PARAM_MAX_ENTROPYLEN; + } + break; + case 'f': + if (strcmp("rag_len", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_NONCELEN; + break; + case 'p': + if (strcmp("erslen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_PERSLEN; + break; + case 'r': + if (strcmp("equest", s + 5) == 0) + return PIDX_RAND_PARAM_MAX_REQUEST; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MAX_LENGTH; + break; + case 'm': + if (strcmp("em_bytes", s + 4) == 0) + return PIDX_KDF_PARAM_SCRYPT_MAXMEM; + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'm': + if (strcmp("cost", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_MEMCOST; + break; + case 's': + if (strcmp("sage-encoding", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING; + } + break; + case 'g': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_DIGEST; + break; + case 'p': + if (strcmp("roperties", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_PROPERTIES; + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_MASKGENFUNC; + } + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("alg", s + 3) == 0) + return PIDX_DIGEST_PARAM_MICALG; + break; + case 'n': + switch(s[3]) { + default: + break; + case '_': + switch(s[4]) { + default: + break; + case 'e': + if (strcmp("ntropylen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_ENTROPYLEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_NONCELEN; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MIN_LENGTH; + } + } + break; + case 'l': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + if (strcmp("nput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS; + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED; + } + } + } + } + break; + case 'k': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + switch(s[8]) { + default: + break; + case 'm': + if (strcmp("port_pct_type", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE; + break; + case 'n': + if (strcmp("put_formats", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS; + } + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED; + } + } + } + } + } + } + break; + case 'o': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case '\0': + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE; + } + break; + case 'u': + if (strcmp("le-filename", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_MODULE_FILENAME; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_SIGNATURE_PARAM_MU; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_M; + } + break; + case 'n': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("me", s + 2) == 0) + return PIDX_STORE_PARAM_ISSUER; + break; + case 'o': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("short-mac", s + 3) == 0) + return PIDX_PROV_PARAM_NO_SHORT_MAC; + break; + case 'n': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("type", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_NONCE_TYPE; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_NONCE; + } + } + } + } + break; + case 'u': + if (strcmp("m", s + 2) == 0) + return PIDX_CIPHER_PARAM_NUM; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_N; + } + break; + case 'o': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("ep-label", s + 2) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL; + break; + case 'p': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'n': + if (strcmp("ssl-version", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_VERSION; + break; + case 'r': + if (strcmp("ation", s + 4) == 0) + return PIDX_KEM_PARAM_OPERATION; + } + break; + case 't': + if (strcmp("ions", s + 3) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS; + } + break; + case 'r': + if (strcmp("der", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_ORDER; + } + break; + case 'p': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P2; + } + break; + case 'a': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'm': + if (strcmp("ode", s + 5) == 0) + return PIDX_PKEY_PARAM_PAD_MODE; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_DIGEST_PARAM_PAD_TYPE; + } + break; + case 'd': + if (strcmp("ing", s + 4) == 0) + return PIDX_CIPHER_PARAM_PADDING; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_PAD; + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'u': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYUINFO; + break; + case 'v': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYVINFO; + } + } + } + break; + case 's': + if (strcmp("s", s + 3) == 0) + return PIDX_KDF_PARAM_PASSWORD; + } + break; + case 'b': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("ts", s + 3) == 0) + return PIDX_PKEY_PARAM_FFC_PBITS; + break; + case 'k': + if (strcmp("df2-lower-bound-check", s + 3) == 0) + return PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK; + } + break; + case 'c': + if (strcmp("ounter", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_PCOUNTER; + break; + case 'i': + if (strcmp("peline-tag", s + 2) == 0) + return PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG; + break; + case 'k': + if (strcmp("cs5", s + 2) == 0) + return PIDX_KDF_PARAM_PKCS5; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("nt-format", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT; + break; + case 't': + if (strcmp("ential", s + 3) == 0) + return PIDX_GEN_PARAM_POTENTIAL; + } + break; + case 'r': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("iction_resistance", s + 4) == 0) + return PIDX_DRBG_PARAM_PREDICTION_RESISTANCE; + break; + case 'f': + if (strcmp("ix", s + 4) == 0) + return PIDX_KDF_PARAM_PREFIX; + } + break; + case 'i': + switch(s[3]) { + default: + break; + case 'm': + if (strcmp("es", s + 4) == 0) + return PIDX_PKEY_PARAM_RSA_PRIMES; + break; + case 'v': + switch(s[4]) { + default: + break; + case '_': + if (strcmp("len", s + 5) == 0) + return PIDX_PKEY_PARAM_DH_PRIV_LEN; + break; + case '\0': + return PIDX_PKEY_PARAM_PRIV_KEY; + } + } + break; + case 'o': + switch(s[3]) { + default: + break; + case 'p': + if (strcmp("erties", s + 4) == 0) + return PIDX_STORE_PARAM_PROPERTIES; + break; + case 'v': + if (strcmp("ider-name", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_PROV_NAME; + } + } + break; + case 'u': + if (strcmp("b", s + 2) == 0) + return PIDX_PKEY_PARAM_PUB_KEY; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_P; + } + break; + case 'q': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q2; + } + break; + case 'b': + if (strcmp("its", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_QBITS; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_Q; + break; + case 'x': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_X; + } + break; + case 'y': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_Y; + } + } + break; + case 'r': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'k': + if (strcmp("ey", s + 5) == 0) + return PIDX_CIPHER_PARAM_RANDOM_KEY; + break; + case 'o': + if (strcmp("m_data", s + 5) == 0) + return PIDX_DRBG_PARAM_RANDOM_DATA; + } + } + break; + case 'w': + if (strcmp("-bytes", s + 3) == 0) + return PIDX_SKEY_PARAM_RAW_BYTES; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case '_': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("head", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD; + break; + case 'b': + if (strcmp("uffer_len", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN; + } + } + } + break; + case 'f': + if (strcmp("erence", s + 3) == 0) + return PIDX_OBJECT_PARAM_REFERENCE; + break; + case 's': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case '_': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("ounter", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_COUNTER; + break; + case 'r': + if (strcmp("equests", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_REQUESTS; + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case 'm': + switch(s[10]) { + default: + break; + case 'e': + switch(s[11]) { + default: + break; + case '_': + if (strcmp("interval", s + 12) == 0) + return PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL; + break; + case '\0': + return PIDX_DRBG_PARAM_RESEED_TIME; + } + } + } + } + } + } + } + } + } + } + break; + case 'o': + if (strcmp("unds", s + 2) == 0) + return PIDX_CIPHER_PARAM_ROUNDS; + break; + case 's': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + switch(s[5]) { + default: + break; + case 'o': + switch(s[6]) { + default: + break; + case 'e': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case 'i': + switch(s[10]) { + default: + break; + case 'c': + switch(s[11]) { + default: + break; + case 'i': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'n': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case '1': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT1; + } + break; + case '2': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT2; + } + break; + case '3': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT3; + } + break; + case '4': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT4; + } + break; + case '5': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT5; + } + break; + case '6': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT6; + } + break; + case '7': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT7; + } + break; + case '8': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT8; + } + break; + case '9': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'd': + if (strcmp("erive-from-pq", s + 5) == 0) + return PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'x': + switch(s[6]) { + default: + break; + case 'p': + switch(s[7]) { + default: + break; + case 'o': + switch(s[8]) { + default: + break; + case 'n': + switch(s[9]) { + default: + break; + case 'e': + switch(s[10]) { + default: + break; + case 'n': + switch(s[11]) { + default: + break; + case 't': + switch(s[12]) { + default: + break; + case '1': + switch(s[13]) { + default: + break; + case '0': + switch(s[14]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT1; + } + break; + case '2': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT2; + } + break; + case '3': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT3; + } + break; + case '4': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT4; + } + break; + case '5': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT5; + } + break; + case '6': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT6; + } + break; + case '7': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT7; + } + break; + case '8': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT8; + } + break; + case '9': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT; + } + } + } + } + } + } + } + } + break; + case 'f': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'o': + switch(s[9]) { + default: + break; + case 'r': + switch(s[10]) { + default: + break; + case '1': + switch(s[11]) { + default: + break; + case '0': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR1; + } + break; + case '2': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR2; + } + break; + case '3': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR3; + } + break; + case '4': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR4; + } + break; + case '5': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR5; + } + break; + case '6': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR6; + } + break; + case '7': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR7; + } + break; + case '8': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR8; + } + break; + case '9': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR; + } + } + } + } + } + } + break; + case 'p': + switch(s[5]) { + default: + break; + case 'k': + if (strcmp("cs15-pad-disabled", s + 6) == 0) + return PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED; + break; + case 's': + if (strcmp("s-saltlen-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK; + } + break; + case 's': + if (strcmp("ign-x931-pad-disabled", s + 5) == 0) + return PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED; + } + } + } + break; + case '\0': + return PIDX_KDF_PARAM_SCRYPT_R; + } + break; + case 's': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("eprime-generator", s + 3) == 0) + return PIDX_PKEY_PARAM_DH_GENERATOR; + break; + case 'l': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'l': + if (strcmp("en", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_PSS_SALTLEN; + break; + case '\0': + return PIDX_MAC_PARAM_SALT; + } + } + break; + case 'v': + if (strcmp("e-parameters", s + 3) == 0) + return PIDX_ENCODER_PARAM_SAVE_PARAMETERS; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'r': + if (strcmp("et", s + 4) == 0) + return PIDX_KDF_PARAM_SECRET; + break; + case 'u': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'y': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'b': + if (strcmp("its", s + 10) == 0) + return PIDX_PKEY_PARAM_SECURITY_BITS; + break; + case 'c': + if (strcmp("hecks", s + 10) == 0) + return PIDX_PROV_PARAM_SECURITY_CHECKS; + } + } + } + } + } + } + } + break; + case 'e': + if (strcmp("d", s + 3) == 0) + return PIDX_PKEY_PARAM_SLH_DSA_SEED; + break; + case 'r': + if (strcmp("ial", s + 3) == 0) + return PIDX_STORE_PARAM_SERIAL; + break; + case 's': + if (strcmp("sion_id", s + 3) == 0) + return PIDX_KDF_PARAM_SSHKDF_SESSION_ID; + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'n': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + if (strcmp("heck", s + 6) == 0) + return PIDX_PKEY_PARAM_FIPS_SIGN_CHECK; + break; + case 'x': + if (strcmp("931-pad-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK; + } + break; + case 'a': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case 'u': + switch(s[7]) { + default: + break; + case 'r': + switch(s[8]) { + default: + break; + case 'e': + switch(s[9]) { + default: + break; + case '-': + if (strcmp("digest-check", s + 10) == 0) + return PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK; + break; + case '\0': + return PIDX_SIGNATURE_PARAM_SIGNATURE; + } + } + } + } + } + } + } + break; + case 'z': + if (strcmp("e", s + 3) == 0) + return PIDX_MAC_PARAM_SIZE; + } + break; + case 'p': + if (strcmp("eed", s + 2) == 0) + return PIDX_CIPHER_PARAM_SPEED; + break; + case 's': + switch(s[2]) { + default: + break; + case 'h': + switch(s[3]) { + default: + break; + case 'k': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'f': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_KEY_CHECK; + } + } + } + } + } + break; + case 'k': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'f': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_KEY_CHECK; + } + } + } + } + break; + case 'l': + if (strcmp("3-ms", s + 3) == 0) + return PIDX_DIGEST_PARAM_SSL3_MS; + } + break; + case 't': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("esc", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_DESC; + break; + case 'p': + if (strcmp("hase", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_PHASE; + break; + case 't': + if (strcmp("ype", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_TYPE; + } + break; + case 'a': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_STATE; + } + break; + case 'u': + if (strcmp("s", s + 5) == 0) + return PIDX_PROV_PARAM_STATUS; + } + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("m_mac", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC; + break; + case 'n': + if (strcmp("gth", s + 5) == 0) + return PIDX_RAND_PARAM_STRENGTH; + } + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("ject", s + 3) == 0) + return PIDX_STORE_PARAM_SUBJECT; + break; + case 'p': + switch(s[3]) { + default: + break; + case 'p': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + if (strcmp("ivinfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PRIVINFO; + break; + case 'u': + if (strcmp("binfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PUBINFO; + } + } + } + } + } + } + break; + case 't': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_TAGLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TAG; + } + } + break; + case 'd': + if (strcmp("es-encrypt-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED; + break; + case 'e': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case '-': + if (strcmp("entropy", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_TEST_ENTROPY; + break; + case '_': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("ntropy", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_ENTROPY; + break; + case 'n': + if (strcmp("once", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_NONCE; + } + } + } + } + break; + case 'h': + if (strcmp("reads", s + 2) == 0) + return PIDX_KDF_PARAM_THREADS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("lient-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION; + break; + case 'd': + if (strcmp("ata-size", s + 5) == 0) + return PIDX_MAC_PARAM_TLS_DATA_SIZE; + break; + case 'g': + switch(s[5]) { + default: + break; + case 'r': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'u': + switch(s[8]) { + default: + break; + case 'p': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'a': + if (strcmp("lg", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_ALG; + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_ID; + } + break; + case 's': + if (strcmp("-kem", s + 12) == 0) + return PIDX_CAPABILITY_TLS_GROUP_IS_KEM; + } + break; + case 'n': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'm': + switch(s[13]) { + default: + break; + case 'e': + switch(s[14]) { + default: + break; + case '-': + if (strcmp("internal", s + 15) == 0) + return PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL; + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_NAME; + } + } + } + } + break; + case 's': + if (strcmp("ec-bits", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case '-': + if (strcmp("size", s + 8) == 0) + return PIDX_CIPHER_PARAM_TLS_MAC_SIZE; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS_MAC; + } + break; + case 'x': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS; + } + } + } + break; + case 'i': + switch(s[6]) { + default: + break; + case 'n': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS; + } + } + } + break; + case 'u': + if (strcmp("lti", s + 6) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK; + } + break; + case 'n': + if (strcmp("egotiated-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION; + break; + case 's': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'a': + switch(s[8]) { + default: + break; + case 'l': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '-': + switch(s[11]) { + default: + break; + case 'c': + if (strcmp("ode-point", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT; + break; + case 'h': + switch(s[12]) { + default: + break; + case 'a': + switch(s[13]) { + default: + break; + case 's': + switch(s[14]) { + default: + break; + case 'h': + switch(s[15]) { + default: + break; + case '-': + switch(s[16]) { + default: + break; + case 'n': + if (strcmp("ame", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME; + break; + case 'o': + if (strcmp("id", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_OID; + } + } + } + } + } + break; + case 'i': + if (strcmp("ana-name", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME; + break; + case 'k': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'y': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case 'y': + switch(s[16]) { + default: + break; + case 'p': + switch(s[17]) { + default: + break; + case 'e': + switch(s[18]) { + default: + break; + case '-': + if (strcmp("oid", s + 19) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID; + break; + case '\0': + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE; + } + } + } + } + } + } + } + break; + case 'n': + if (strcmp("ame", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_NAME; + break; + case 'o': + if (strcmp("id", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_OID; + break; + case 's': + switch(s[12]) { + default: + break; + case 'e': + if (strcmp("c-bits", s + 13) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS; + break; + case 'i': + switch(s[13]) { + default: + break; + case 'g': + switch(s[14]) { + default: + break; + case '-': + switch(s[15]) { + default: + break; + case 'n': + if (strcmp("ame", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME; + break; + case 'o': + if (strcmp("id", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_OID; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'v': + if (strcmp("ersion", s + 5) == 0) + return PIDX_CIPHER_PARAM_TLS_VERSION; + } + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK; + break; + case 'e': + if (strcmp("ms-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK; + } + } + } + } + } + break; + case '3': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'k': + switch(s[7]) { + default: + break; + case 'd': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'u': + switch(s[6]) { + default: + break; + case 'l': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case '_': + switch(s[10]) { + default: + break; + case 'a': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'd': + switch(s[13]) { + default: + break; + case 'p': + if (strcmp("acklen", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD; + } + } + } + break; + case 'e': + switch(s[11]) { + default: + break; + case 'n': + switch(s[12]) { + default: + break; + case 'c': + switch(s[13]) { + default: + break; + case 'i': + if (strcmp("n", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN; + break; + case 'l': + if (strcmp("en", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC; + } + } + } + break; + case 'i': + if (strcmp("nterleave", s + 11) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE; + break; + case 'm': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'x': + switch(s[13]) { + default: + break; + case 'b': + if (strcmp("ufsz", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE; + break; + case 's': + if (strcmp("ndfrag", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT; + } + } + } + } + } + } + } + } + } + } + break; + case 'a': + switch(s[4]) { + default: + break; + case 'a': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'p': + if (strcmp("ad", s + 7) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD; + } + } + } + break; + case 'i': + switch(s[4]) { + default: + break; + case 'v': + switch(s[5]) { + default: + break; + case 'f': + if (strcmp("ixed", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED; + break; + case 'g': + if (strcmp("en", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN; + break; + case 'i': + if (strcmp("nv", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV; + } + } + break; + case 't': + if (strcmp("ree", s + 4) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS; + } + break; + case 'y': + if (strcmp("pe", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_TYPE; + } + break; + case 'u': + switch(s[1]) { + default: + break; + case 'k': + if (strcmp("m", s + 2) == 0) + return PIDX_KDF_PARAM_UKM; + break; + case 'p': + if (strcmp("dated-iv", s + 2) == 0) + return PIDX_CIPHER_PARAM_UPDATED_IV; + break; + case 's': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'b': + if (strcmp("its", s + 5) == 0) + return PIDX_CIPHER_PARAM_USE_BITS; + break; + case 'c': + if (strcmp("ofactor-flag", s + 5) == 0) + return PIDX_PKEY_PARAM_USE_COFACTOR_FLAG; + break; + case 'k': + if (strcmp("eybits", s + 5) == 0) + return PIDX_KDF_PARAM_X942_USE_KEYBITS; + break; + case 'l': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_KBKDF_USE_L; + } + break; + case 's': + if (strcmp("eparator", s + 5) == 0) + return PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR; + } + break; + case '_': + switch(s[4]) { + default: + break; + case 'd': + if (strcmp("erivation_function", s + 5) == 0) + return PIDX_DRBG_PARAM_USE_DF; + break; + case 'e': + if (strcmp("tm", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM; + } + } + } + } + break; + case 'v': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'l': + switch(s[3]) { + default: + break; + case 'i': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_VALIDATE_G; + } + break; + case 'l': + if (strcmp("egacy", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY; + break; + case 'p': + if (strcmp("q", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_PQ; + } + } + } + } + } + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'r': + switch(s[3]) { + default: + break; + case 'i': + if (strcmp("fy-message", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE; + break; + case 's': + if (strcmp("ion", s + 4) == 0) + return PIDX_PROV_PARAM_VERSION; + } + } + } + break; + case 'x': + switch(s[1]) { + default: + break; + case '9': + switch(s[2]) { + default: + break; + case '4': + if (strcmp("2kdf-key-check", s + 3) == 0) + return PIDX_PROV_PARAM_X942KDF_KEY_CHECK; + break; + case '6': + switch(s[3]) { + default: + break; + case '3': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'f': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_KEY_CHECK; + } + } + } + } + } + } + } + break; + case 'c': + if (strcmp("ghash", s + 2) == 0) + return PIDX_KDF_PARAM_SSHKDF_XCGHASH; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_DIGEST_PARAM_XOFLEN; + break; + case '\0': + return PIDX_MAC_PARAM_XOF; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP; + } + break; + case 'q': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ; + } + break; + case 't': + if (strcmp("s_standard", s + 2) == 0) + return PIDX_CIPHER_PARAM_XTS_STANDARD; + } + } + return -1; +} + +/* End of TRIE */ diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/internal/param_names.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/internal/param_names.h new file mode 100644 index 00000000000000..0a0404a57e82b9 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/internal/param_names.h @@ -0,0 +1,469 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/internal/param_names.h.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +int ossl_param_find_pidx(const char *s); + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +#define NUM_PIDX 346 + +#define PIDX_ALG_PARAM_ALGORITHM_ID 0 +#define PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS 1 +#define PIDX_ALG_PARAM_CIPHER 2 +#define PIDX_ALG_PARAM_DIGEST 3 +#define PIDX_ALG_PARAM_ENGINE 4 +#define PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR 5 +#define PIDX_ALG_PARAM_MAC 6 +#define PIDX_ALG_PARAM_PROPERTIES 7 +#define PIDX_ASYM_CIPHER_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_ENGINE PIDX_PKEY_PARAM_ENGINE +#define PIDX_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +#define PIDX_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS 9 +#define PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL 10 +#define PIDX_ASYM_CIPHER_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_ASYM_CIPHER_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION 11 +#define PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION 12 +#define PIDX_CAPABILITY_TLS_GROUP_ALG 13 +#define PIDX_CAPABILITY_TLS_GROUP_ID 14 +#define PIDX_CAPABILITY_TLS_GROUP_IS_KEM 15 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_GROUP_NAME 20 +#define PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL 21 +#define PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS 22 +#define PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT 23 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME 24 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_OID 25 +#define PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME 26 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE 27 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID 28 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_SIGALG_NAME 29 +#define PIDX_CAPABILITY_TLS_SIGALG_OID 30 +#define PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS 31 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME 32 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_OID 33 +#define PIDX_CIPHER_PARAM_AEAD 34 +#define PIDX_CIPHER_PARAM_AEAD_IVLEN PIDX_CIPHER_PARAM_IVLEN +#define PIDX_CIPHER_PARAM_AEAD_IV_GENERATED 35 +#define PIDX_CIPHER_PARAM_AEAD_MAC_KEY 36 +#define PIDX_CIPHER_PARAM_AEAD_TAG 37 +#define PIDX_CIPHER_PARAM_AEAD_TAGLEN 38 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD 39 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD 40 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN 41 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED 42 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV 43 +#define PIDX_CIPHER_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD 44 +#define PIDX_CIPHER_PARAM_BLOCK_SIZE 45 +#define PIDX_CIPHER_PARAM_CTS 46 +#define PIDX_CIPHER_PARAM_CTS_MODE 47 +#define PIDX_CIPHER_PARAM_CUSTOM_IV 48 +#define PIDX_CIPHER_PARAM_DECRYPT_ONLY 49 +#define PIDX_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK 50 +#define PIDX_CIPHER_PARAM_HAS_RAND_KEY 51 +#define PIDX_CIPHER_PARAM_IV 52 +#define PIDX_CIPHER_PARAM_IVLEN 53 +#define PIDX_CIPHER_PARAM_KEYLEN 54 +#define PIDX_CIPHER_PARAM_MODE 55 +#define PIDX_CIPHER_PARAM_NUM 56 +#define PIDX_CIPHER_PARAM_PADDING 57 +#define PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG 58 +#define PIDX_CIPHER_PARAM_RANDOM_KEY 59 +#define PIDX_CIPHER_PARAM_RC2_KEYBITS 60 +#define PIDX_CIPHER_PARAM_ROUNDS 61 +#define PIDX_CIPHER_PARAM_SPEED 62 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK 63 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD 64 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN 65 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC 66 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN 67 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN 68 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE 69 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE 70 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT 71 +#define PIDX_CIPHER_PARAM_TLS_MAC 72 +#define PIDX_CIPHER_PARAM_TLS_MAC_SIZE 73 +#define PIDX_CIPHER_PARAM_TLS_VERSION 74 +#define PIDX_CIPHER_PARAM_UPDATED_IV 75 +#define PIDX_CIPHER_PARAM_USE_BITS 76 +#define PIDX_CIPHER_PARAM_XTS_STANDARD 77 +#define PIDX_DECODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DIGEST_PARAM_ALGID_ABSENT 78 +#define PIDX_DIGEST_PARAM_BLOCK_SIZE 45 +#define PIDX_DIGEST_PARAM_MICALG 79 +#define PIDX_DIGEST_PARAM_PAD_TYPE 80 +#define PIDX_DIGEST_PARAM_SIZE 81 +#define PIDX_DIGEST_PARAM_SSL3_MS 82 +#define PIDX_DIGEST_PARAM_XOF 83 +#define PIDX_DIGEST_PARAM_XOFLEN 84 +#define PIDX_DRBG_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_DRBG_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_DRBG_PARAM_ENTROPY_REQUIRED 85 +#define PIDX_DRBG_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_DRBG_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_DRBG_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_DRBG_PARAM_MAX_ADINLEN 86 +#define PIDX_DRBG_PARAM_MAX_ENTROPYLEN 87 +#define PIDX_DRBG_PARAM_MAX_LENGTH 88 +#define PIDX_DRBG_PARAM_MAX_NONCELEN 89 +#define PIDX_DRBG_PARAM_MAX_PERSLEN 90 +#define PIDX_DRBG_PARAM_MIN_ENTROPYLEN 91 +#define PIDX_DRBG_PARAM_MIN_LENGTH 92 +#define PIDX_DRBG_PARAM_MIN_NONCELEN 93 +#define PIDX_DRBG_PARAM_PREDICTION_RESISTANCE 94 +#define PIDX_DRBG_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DRBG_PARAM_RANDOM_DATA 95 +#define PIDX_DRBG_PARAM_RESEED_COUNTER 96 +#define PIDX_DRBG_PARAM_RESEED_REQUESTS 97 +#define PIDX_DRBG_PARAM_RESEED_TIME 98 +#define PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL 99 +#define PIDX_DRBG_PARAM_SIZE 81 +#define PIDX_DRBG_PARAM_USE_DF 100 +#define PIDX_ENCODER_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_ENCODER_PARAM_ENCRYPT_LEVEL 101 +#define PIDX_ENCODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_ENCODER_PARAM_SAVE_PARAMETERS 102 +#define PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE 103 +#define PIDX_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_EXCHANGE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST 104 +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS 105 +#define PIDX_EXCHANGE_PARAM_KDF_OUTLEN 106 +#define PIDX_EXCHANGE_PARAM_KDF_TYPE 107 +#define PIDX_EXCHANGE_PARAM_KDF_UKM 108 +#define PIDX_EXCHANGE_PARAM_PAD 109 +#define PIDX_GEN_PARAM_ITERATION 110 +#define PIDX_GEN_PARAM_POTENTIAL 111 +#define PIDX_KDF_PARAM_ARGON2_AD 112 +#define PIDX_KDF_PARAM_ARGON2_LANES 113 +#define PIDX_KDF_PARAM_ARGON2_MEMCOST 114 +#define PIDX_KDF_PARAM_ARGON2_VERSION 115 +#define PIDX_KDF_PARAM_CEK_ALG 116 +#define PIDX_KDF_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_KDF_PARAM_CONSTANT 117 +#define PIDX_KDF_PARAM_DATA 118 +#define PIDX_KDF_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_KDF_PARAM_EARLY_CLEAN 119 +#define PIDX_KDF_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KDF_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_KDF_PARAM_FIPS_EMS_CHECK 120 +#define PIDX_KDF_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KDF_PARAM_HMACDRBG_ENTROPY 121 +#define PIDX_KDF_PARAM_HMACDRBG_NONCE 122 +#define PIDX_KDF_PARAM_INFO 123 +#define PIDX_KDF_PARAM_ITER 124 +#define PIDX_KDF_PARAM_KBKDF_R 125 +#define PIDX_KDF_PARAM_KBKDF_USE_L 126 +#define PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR 127 +#define PIDX_KDF_PARAM_KEY 128 +#define PIDX_KDF_PARAM_LABEL 129 +#define PIDX_KDF_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_KDF_PARAM_MAC_SIZE 130 +#define PIDX_KDF_PARAM_MODE 55 +#define PIDX_KDF_PARAM_PASSWORD 131 +#define PIDX_KDF_PARAM_PKCS12_ID 132 +#define PIDX_KDF_PARAM_PKCS5 133 +#define PIDX_KDF_PARAM_PREFIX 134 +#define PIDX_KDF_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_KDF_PARAM_SALT 135 +#define PIDX_KDF_PARAM_SCRYPT_MAXMEM 136 +#define PIDX_KDF_PARAM_SCRYPT_N 137 +#define PIDX_KDF_PARAM_SCRYPT_P 138 +#define PIDX_KDF_PARAM_SCRYPT_R 125 +#define PIDX_KDF_PARAM_SECRET 139 +#define PIDX_KDF_PARAM_SEED 140 +#define PIDX_KDF_PARAM_SIZE 81 +#define PIDX_KDF_PARAM_SSHKDF_SESSION_ID 141 +#define PIDX_KDF_PARAM_SSHKDF_TYPE 142 +#define PIDX_KDF_PARAM_SSHKDF_XCGHASH 143 +#define PIDX_KDF_PARAM_THREADS 144 +#define PIDX_KDF_PARAM_UKM 145 +#define PIDX_KDF_PARAM_X942_ACVPINFO 146 +#define PIDX_KDF_PARAM_X942_PARTYUINFO 147 +#define PIDX_KDF_PARAM_X942_PARTYVINFO 148 +#define PIDX_KDF_PARAM_X942_SUPP_PRIVINFO 149 +#define PIDX_KDF_PARAM_X942_SUPP_PUBINFO 150 +#define PIDX_KDF_PARAM_X942_USE_KEYBITS 151 +#define PIDX_KEM_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KEM_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KEM_PARAM_IKME 152 +#define PIDX_KEM_PARAM_OPERATION 153 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING 154 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING 155 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA 156 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN 157 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE 55 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS 158 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD 159 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC 160 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE 161 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM 162 +#define PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN 163 +#define PIDX_MAC_PARAM_BLOCK_SIZE 164 +#define PIDX_MAC_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_MAC_PARAM_CUSTOM 165 +#define PIDX_MAC_PARAM_C_ROUNDS 166 +#define PIDX_MAC_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_MAC_PARAM_DIGEST_NOINIT 167 +#define PIDX_MAC_PARAM_DIGEST_ONESHOT 168 +#define PIDX_MAC_PARAM_D_ROUNDS 169 +#define PIDX_MAC_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_MAC_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_MAC_PARAM_FIPS_NO_SHORT_MAC PIDX_PROV_PARAM_NO_SHORT_MAC +#define PIDX_MAC_PARAM_IV 52 +#define PIDX_MAC_PARAM_KEY 128 +#define PIDX_MAC_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_MAC_PARAM_SALT 135 +#define PIDX_MAC_PARAM_SIZE 81 +#define PIDX_MAC_PARAM_TLS_DATA_SIZE 170 +#define PIDX_MAC_PARAM_XOF 83 +#define PIDX_OBJECT_PARAM_DATA 118 +#define PIDX_OBJECT_PARAM_DATA_STRUCTURE 171 +#define PIDX_OBJECT_PARAM_DATA_TYPE 172 +#define PIDX_OBJECT_PARAM_DESC 173 +#define PIDX_OBJECT_PARAM_INPUT_TYPE 174 +#define PIDX_OBJECT_PARAM_REFERENCE 175 +#define PIDX_OBJECT_PARAM_TYPE 142 +#define PIDX_PASSPHRASE_PARAM_INFO 123 +#define PIDX_PKEY_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_PKEY_PARAM_BITS 176 +#define PIDX_PKEY_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_PKEY_PARAM_DEFAULT_DIGEST 177 +#define PIDX_PKEY_PARAM_DHKEM_IKM 178 +#define PIDX_PKEY_PARAM_DH_GENERATOR 179 +#define PIDX_PKEY_PARAM_DH_PRIV_LEN 180 +#define PIDX_PKEY_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_PKEY_PARAM_DIGEST_SIZE 181 +#define PIDX_PKEY_PARAM_DIST_ID 182 +#define PIDX_PKEY_PARAM_EC_A 183 +#define PIDX_PKEY_PARAM_EC_B 184 +#define PIDX_PKEY_PARAM_EC_CHAR2_M 185 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K1 186 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K2 187 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K3 188 +#define PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS 189 +#define PIDX_PKEY_PARAM_EC_CHAR2_TYPE 190 +#define PIDX_PKEY_PARAM_EC_COFACTOR 191 +#define PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS 192 +#define PIDX_PKEY_PARAM_EC_ENCODING 193 +#define PIDX_PKEY_PARAM_EC_FIELD_TYPE 194 +#define PIDX_PKEY_PARAM_EC_GENERATOR 195 +#define PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE 196 +#define PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC 197 +#define PIDX_PKEY_PARAM_EC_ORDER 198 +#define PIDX_PKEY_PARAM_EC_P 138 +#define PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT 199 +#define PIDX_PKEY_PARAM_EC_PUB_X 200 +#define PIDX_PKEY_PARAM_EC_PUB_Y 201 +#define PIDX_PKEY_PARAM_EC_SEED 140 +#define PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY 202 +#define PIDX_PKEY_PARAM_ENGINE PIDX_ALG_PARAM_ENGINE +#define PIDX_PKEY_PARAM_FFC_COFACTOR 203 +#define PIDX_PKEY_PARAM_FFC_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_FFC_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_FFC_G 204 +#define PIDX_PKEY_PARAM_FFC_GINDEX 205 +#define PIDX_PKEY_PARAM_FFC_H 206 +#define PIDX_PKEY_PARAM_FFC_P 138 +#define PIDX_PKEY_PARAM_FFC_PBITS 207 +#define PIDX_PKEY_PARAM_FFC_PCOUNTER 208 +#define PIDX_PKEY_PARAM_FFC_Q 209 +#define PIDX_PKEY_PARAM_FFC_QBITS 210 +#define PIDX_PKEY_PARAM_FFC_SEED 140 +#define PIDX_PKEY_PARAM_FFC_TYPE 142 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_G 211 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY 212 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_PQ 213 +#define PIDX_PKEY_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK 214 +#define PIDX_PKEY_PARAM_FIPS_KEY_CHECK 215 +#define PIDX_PKEY_PARAM_FIPS_SIGN_CHECK 216 +#define PIDX_PKEY_PARAM_GROUP_NAME 217 +#define PIDX_PKEY_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_PKEY_PARAM_MANDATORY_DIGEST 218 +#define PIDX_PKEY_PARAM_MASKGENFUNC 219 +#define PIDX_PKEY_PARAM_MAX_SIZE 220 +#define PIDX_PKEY_PARAM_MGF1_DIGEST 221 +#define PIDX_PKEY_PARAM_MGF1_PROPERTIES 222 +#define PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS 223 +#define PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS 224 +#define PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED 225 +#define PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED 226 +#define PIDX_PKEY_PARAM_ML_DSA_SEED 140 +#define PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE 227 +#define PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS 228 +#define PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS 229 +#define PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED 230 +#define PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED 231 +#define PIDX_PKEY_PARAM_ML_KEM_SEED 140 +#define PIDX_PKEY_PARAM_PAD_MODE 232 +#define PIDX_PKEY_PARAM_PRIV_KEY 233 +#define PIDX_PKEY_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_PUB_KEY 234 +#define PIDX_PKEY_PARAM_RSA_BITS PIDX_PKEY_PARAM_BITS +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT 235 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT1 236 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT2 237 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT3 238 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT4 239 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT5 240 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT6 241 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT7 242 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT8 243 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT9 244 +#define PIDX_PKEY_PARAM_RSA_D 245 +#define PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ 246 +#define PIDX_PKEY_PARAM_RSA_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_RSA_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_RSA_E 247 +#define PIDX_PKEY_PARAM_RSA_EXPONENT 248 +#define PIDX_PKEY_PARAM_RSA_EXPONENT1 249 +#define PIDX_PKEY_PARAM_RSA_EXPONENT10 250 +#define PIDX_PKEY_PARAM_RSA_EXPONENT2 251 +#define PIDX_PKEY_PARAM_RSA_EXPONENT3 252 +#define PIDX_PKEY_PARAM_RSA_EXPONENT4 253 +#define PIDX_PKEY_PARAM_RSA_EXPONENT5 254 +#define PIDX_PKEY_PARAM_RSA_EXPONENT6 255 +#define PIDX_PKEY_PARAM_RSA_EXPONENT7 256 +#define PIDX_PKEY_PARAM_RSA_EXPONENT8 257 +#define PIDX_PKEY_PARAM_RSA_EXPONENT9 258 +#define PIDX_PKEY_PARAM_RSA_FACTOR 259 +#define PIDX_PKEY_PARAM_RSA_FACTOR1 260 +#define PIDX_PKEY_PARAM_RSA_FACTOR10 261 +#define PIDX_PKEY_PARAM_RSA_FACTOR2 262 +#define PIDX_PKEY_PARAM_RSA_FACTOR3 263 +#define PIDX_PKEY_PARAM_RSA_FACTOR4 264 +#define PIDX_PKEY_PARAM_RSA_FACTOR5 265 +#define PIDX_PKEY_PARAM_RSA_FACTOR6 266 +#define PIDX_PKEY_PARAM_RSA_FACTOR7 267 +#define PIDX_PKEY_PARAM_RSA_FACTOR8 268 +#define PIDX_PKEY_PARAM_RSA_FACTOR9 269 +#define PIDX_PKEY_PARAM_RSA_MASKGENFUNC PIDX_PKEY_PARAM_MASKGENFUNC +#define PIDX_PKEY_PARAM_RSA_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_PKEY_PARAM_RSA_N 137 +#define PIDX_PKEY_PARAM_RSA_PRIMES 270 +#define PIDX_PKEY_PARAM_RSA_PSS_SALTLEN 271 +#define PIDX_PKEY_PARAM_RSA_TEST_P1 272 +#define PIDX_PKEY_PARAM_RSA_TEST_P2 273 +#define PIDX_PKEY_PARAM_RSA_TEST_Q1 274 +#define PIDX_PKEY_PARAM_RSA_TEST_Q2 275 +#define PIDX_PKEY_PARAM_RSA_TEST_XP 276 +#define PIDX_PKEY_PARAM_RSA_TEST_XP1 277 +#define PIDX_PKEY_PARAM_RSA_TEST_XP2 278 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ 279 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ1 280 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ2 281 +#define PIDX_PKEY_PARAM_SECURITY_BITS 282 +#define PIDX_PKEY_PARAM_SLH_DSA_SEED 140 +#define PIDX_PKEY_PARAM_USE_COFACTOR_ECDH PIDX_PKEY_PARAM_USE_COFACTOR_FLAG +#define PIDX_PKEY_PARAM_USE_COFACTOR_FLAG 283 +#define PIDX_PROV_PARAM_BUILDINFO 284 +#define PIDX_PROV_PARAM_CORE_MODULE_FILENAME 285 +#define PIDX_PROV_PARAM_CORE_PROV_NAME 286 +#define PIDX_PROV_PARAM_CORE_VERSION 287 +#define PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST 288 +#define PIDX_PROV_PARAM_DSA_SIGN_DISABLED 289 +#define PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK 290 +#define PIDX_PROV_PARAM_HKDF_DIGEST_CHECK 291 +#define PIDX_PROV_PARAM_HKDF_KEY_CHECK 292 +#define PIDX_PROV_PARAM_HMAC_KEY_CHECK 293 +#define PIDX_PROV_PARAM_KBKDF_KEY_CHECK 294 +#define PIDX_PROV_PARAM_KMAC_KEY_CHECK 295 +#define PIDX_PROV_PARAM_NAME 296 +#define PIDX_PROV_PARAM_NO_SHORT_MAC 297 +#define PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK 298 +#define PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED 299 +#define PIDX_PROV_PARAM_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED 301 +#define PIDX_PROV_PARAM_SECURITY_CHECKS 302 +#define PIDX_PROV_PARAM_SELF_TEST_DESC 303 +#define PIDX_PROV_PARAM_SELF_TEST_PHASE 304 +#define PIDX_PROV_PARAM_SELF_TEST_TYPE 305 +#define PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK 306 +#define PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK 307 +#define PIDX_PROV_PARAM_SSHKDF_KEY_CHECK 308 +#define PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK 309 +#define PIDX_PROV_PARAM_SSKDF_KEY_CHECK 310 +#define PIDX_PROV_PARAM_STATUS 311 +#define PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED 312 +#define PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK 313 +#define PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK 314 +#define PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK 315 +#define PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK 316 +#define PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK 317 +#define PIDX_PROV_PARAM_VERSION 115 +#define PIDX_PROV_PARAM_X942KDF_KEY_CHECK 318 +#define PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK 319 +#define PIDX_PROV_PARAM_X963KDF_KEY_CHECK 320 +#define PIDX_RAND_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_RAND_PARAM_GENERATE 321 +#define PIDX_RAND_PARAM_MAX_REQUEST 322 +#define PIDX_RAND_PARAM_STATE 323 +#define PIDX_RAND_PARAM_STRENGTH 324 +#define PIDX_RAND_PARAM_TEST_ENTROPY 325 +#define PIDX_RAND_PARAM_TEST_NONCE 326 +#define PIDX_SIGNATURE_PARAM_ADD_RANDOM 327 +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID PIDX_PKEY_PARAM_ALGORITHM_ID +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_SIGNATURE_PARAM_CONTEXT_STRING 328 +#define PIDX_SIGNATURE_PARAM_DETERMINISTIC 329 +#define PIDX_SIGNATURE_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_SIGNATURE_PARAM_DIGEST_SIZE PIDX_PKEY_PARAM_DIGEST_SIZE +#define PIDX_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_SIGNATURE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_CHECK PIDX_PKEY_PARAM_FIPS_SIGN_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK 330 +#define PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE 331 +#define PIDX_SIGNATURE_PARAM_INSTANCE 332 +#define PIDX_SIGNATURE_PARAM_KAT 333 +#define PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING 334 +#define PIDX_SIGNATURE_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_SIGNATURE_PARAM_MGF1_PROPERTIES PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_SIGNATURE_PARAM_MU 335 +#define PIDX_SIGNATURE_PARAM_NONCE_TYPE 336 +#define PIDX_SIGNATURE_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_SIGNATURE_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_SIGNATURE_PARAM_PSS_SALTLEN 271 +#define PIDX_SIGNATURE_PARAM_SIGNATURE 337 +#define PIDX_SIGNATURE_PARAM_TEST_ENTROPY 338 +#define PIDX_SKEY_PARAM_KEY_LENGTH 339 +#define PIDX_SKEY_PARAM_RAW_BYTES 340 +#define PIDX_STORE_PARAM_ALIAS 341 +#define PIDX_STORE_PARAM_DIGEST 3 +#define PIDX_STORE_PARAM_EXPECT 342 +#define PIDX_STORE_PARAM_FINGERPRINT 343 +#define PIDX_STORE_PARAM_INPUT_TYPE 174 +#define PIDX_STORE_PARAM_ISSUER 296 +#define PIDX_STORE_PARAM_PROPERTIES 7 +#define PIDX_STORE_PARAM_SERIAL 344 +#define PIDX_STORE_PARAM_SUBJECT 345 diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/asn1.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/asn1.h index 21ff58e3d803d4..15e9e44674b0f3 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/asn1.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/asn1.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/asn1.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -21,6 +21,9 @@ # define HEADER_ASN1_H # endif +# ifndef OPENSSL_NO_STDIO +# include +# endif # include # include # include @@ -50,14 +53,14 @@ extern "C" { # define V_ASN1_PRIMITIVE_TAG 0x1f # define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG -# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ -# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ -# define V_ASN1_ANY -4/* used in ASN1 template code */ +# define V_ASN1_APP_CHOOSE -2 /* let the recipient choose */ +# define V_ASN1_OTHER -3 /* used in ASN1_TYPE */ +# define V_ASN1_ANY -4 /* used in ASN1 template code */ # define V_ASN1_UNDEF -1 /* ASN.1 tag values */ # define V_ASN1_EOC 0 -# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_BOOLEAN 1 # define V_ASN1_INTEGER 2 # define V_ASN1_BIT_STRING 3 # define V_ASN1_OCTET_STRING 4 @@ -70,19 +73,19 @@ extern "C" { # define V_ASN1_UTF8STRING 12 # define V_ASN1_SEQUENCE 16 # define V_ASN1_SET 17 -# define V_ASN1_NUMERICSTRING 18 /**/ +# define V_ASN1_NUMERICSTRING 18 # define V_ASN1_PRINTABLESTRING 19 # define V_ASN1_T61STRING 20 -# define V_ASN1_TELETEXSTRING 20/* alias */ -# define V_ASN1_VIDEOTEXSTRING 21 /**/ +# define V_ASN1_TELETEXSTRING 20 /* alias */ +# define V_ASN1_VIDEOTEXSTRING 21 # define V_ASN1_IA5STRING 22 # define V_ASN1_UTCTIME 23 -# define V_ASN1_GENERALIZEDTIME 24 /**/ -# define V_ASN1_GRAPHICSTRING 25 /**/ -# define V_ASN1_ISO64STRING 26 /**/ -# define V_ASN1_VISIBLESTRING 26/* alias */ -# define V_ASN1_GENERALSTRING 27 /**/ -# define V_ASN1_UNIVERSALSTRING 28 /**/ +# define V_ASN1_GENERALIZEDTIME 24 +# define V_ASN1_GRAPHICSTRING 25 +# define V_ASN1_ISO64STRING 26 +# define V_ASN1_VISIBLESTRING 26 /* alias */ +# define V_ASN1_GENERALSTRING 27 +# define V_ASN1_UNIVERSALSTRING 28 # define V_ASN1_BMPSTRING 30 /* @@ -155,7 +158,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) -# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +# define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */ /* * This indicates that the ASN1_STRING is not a real value but just a place * holder for the location where indefinite length constructed data should be @@ -275,7 +278,7 @@ typedef struct ASN1_TLC_st ASN1_TLC; /* This is just an opaque pointer */ typedef struct ASN1_VALUE_st ASN1_VALUE; -/* Declare ASN1 functions: the implement macro in in asn1t.h */ +/* Declare ASN1 functions: the implement macro is in asn1t.h */ /* * The mysterious 'extern' that's passed to some macros is innocuous, @@ -368,6 +371,7 @@ typedef struct ASN1_VALUE_st ASN1_VALUE; typedef void *d2i_of_void(void **, const unsigned char **, long); typedef int i2d_of_void(const void *, unsigned char **); +typedef int OSSL_i2d_of_void_ctx(const void *, unsigned char **, void *vctx); /*- * The following macros and typedefs allow an ASN1_ITEM @@ -996,6 +1000,8 @@ int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, unsigned char *data, int max_len); void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/bio.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/bio.h index f9aa74731c833c..e02f867beb0ec0 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/bio.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/bio.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/bio.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -67,8 +67,13 @@ extern "C" { # define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) # endif # define BIO_TYPE_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_PAIR (26|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_MEM (27|BIO_TYPE_SOURCE_SINK) +/* Custom type starting index returned by BIO_get_new_index() */ #define BIO_TYPE_START 128 +/* Custom type maximum index that can be returned by BIO_get_new_index() */ +#define BIO_TYPE_MASK 0xFF /* * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. @@ -171,6 +176,31 @@ extern "C" { # define BIO_CTRL_SET_INDENT 80 # define BIO_CTRL_GET_INDENT 81 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +# define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +# define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +# define BIO_CTRL_DGRAM_GET_CAPS 86 +# define BIO_CTRL_DGRAM_SET_CAPS 87 +# define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +# define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +# define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +# define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +# define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 +# define BIO_CTRL_DGRAM_SET0_LOCAL_ADDR 94 + +# define BIO_DGRAM_CAP_NONE 0U +# define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +# define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +# define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +# define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + # ifndef OPENSSL_NO_KTLS # define BIO_get_ktls_send(b) \ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) @@ -208,7 +238,7 @@ extern "C" { # define BIO_FLAGS_NONCLEAR_RST 0x400 # define BIO_FLAGS_IN_EOF 0x800 -/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */ +/* the BIO FLAGS values 0x1000 to 0x8000 are reserved for internal KTLS flags */ typedef union bio_addr_st BIO_ADDR; typedef struct bio_addrinfo_st BIO_ADDRINFO; @@ -256,12 +286,14 @@ void BIO_clear_flags(BIO *b, int flags); # define BIO_RR_ACCEPT 0x03 /* These are passed by the BIO callback */ -# define BIO_CB_FREE 0x01 -# define BIO_CB_READ 0x02 -# define BIO_CB_WRITE 0x03 -# define BIO_CB_PUTS 0x04 -# define BIO_CB_GETS 0x05 -# define BIO_CB_CTRL 0x06 +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 +# define BIO_CB_RECVMMSG 0x07 +# define BIO_CB_SENDMMSG 0x08 /* * The callback is called before and after the underling operation, The @@ -362,6 +394,36 @@ struct bio_dgram_sctp_prinfo { }; # endif +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_TYPE_SSL 2 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + SSL *ssl; + } value; +} BIO_POLL_DESCRIPTOR; + /* * #define BIO_CONN_get_param_hostname BIO_ctrl */ @@ -428,10 +490,17 @@ struct bio_dgram_sctp_prinfo { # define BIO_C_SET_CONNECT_MODE 155 +# define BIO_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +# define BIO_C_SET_SOCK_TYPE 157 +# define BIO_C_GET_SOCK_TYPE 158 +# define BIO_C_GET_DGRAM_BIO 159 + # define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) # define BIO_get_app_data(s) BIO_get_ex_data(s,0) -# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_tfo(b,n) BIO_ctrl(b,BIO_C_SET_TFO,(n),NULL) # ifndef OPENSSL_NO_SOCK /* IP families we support, for BIO_s_connect() and BIO_s_accept() */ @@ -452,7 +521,11 @@ struct bio_dgram_sctp_prinfo { # define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) # define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) # define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_get_conn_mode(b) BIO_ctrl(b,BIO_C_GET_CONNECT,4,NULL) # define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) +# define BIO_set_sock_type(b,t) BIO_ctrl(b,BIO_C_SET_SOCK_TYPE,(t),NULL) +# define BIO_get_sock_type(b) BIO_ctrl(b,BIO_C_GET_SOCK_TYPE,0,NULL) +# define BIO_get0_dgram_bio(b, p) BIO_ctrl(b,BIO_C_GET_DGRAM_BIO,0,(void *)(BIO **)(p)) /* BIO_s_accept() */ # define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ @@ -469,6 +542,7 @@ struct bio_dgram_sctp_prinfo { (char *)(bio)) # define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) # define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) +# define BIO_set_tfo_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,5,(n)?(void *)"a":NULL) /* Aliases kept for backward compatibility */ # define BIO_BIND_NORMAL 0 @@ -596,8 +670,32 @@ int BIO_ctrl_reset_read_request(BIO *b); (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) # define BIO_dgram_set_peer(b,peer) \ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_detect_peer_addr(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) # define BIO_dgram_get_mtu_overhead(b) \ (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +# define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +# define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +# define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +# define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +# define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +# define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +# define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +# define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +# define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +# define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) +# define BIO_dgram_set0_local_addr(b, addr) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET0_LOCAL_ADDR, 0, (addr)) /* ctrl macros for BIO_f_prefix */ # define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) @@ -640,10 +738,18 @@ void BIO_vfree(BIO *a); int BIO_up_ref(BIO *a); int BIO_read(BIO *b, void *data, int dlen); int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); int BIO_gets(BIO *bp, char *buf, int size); int BIO_get_line(BIO *bio, char *buf, int size); int BIO_write(BIO *b, const void *data, int dlen); int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); int BIO_puts(BIO *bp, const char *buf); int BIO_indent(BIO *b, int indent, int max); long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); @@ -667,6 +773,9 @@ int BIO_nwrite0(BIO *bio, char **buf); int BIO_nwrite(BIO *bio, char **buf, int num); const BIO_METHOD *BIO_s_mem(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +# endif const BIO_METHOD *BIO_s_secmem(void); BIO *BIO_new_mem_buf(const void *buf, int len); # ifndef OPENSSL_NO_SOCK @@ -686,6 +795,7 @@ const BIO_METHOD *BIO_f_nbio_test(void); const BIO_METHOD *BIO_f_prefix(void); const BIO_METHOD *BIO_s_core(void); # ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_pair(void); const BIO_METHOD *BIO_s_datagram(void); int BIO_dgram_non_fatal_error(int error); BIO *BIO_new_dgram(int fd, int close_flag); @@ -704,6 +814,7 @@ int BIO_dgram_sctp_msg_waiting(BIO *b); # ifndef OPENSSL_NO_SOCK int BIO_sock_should_retry(int i); int BIO_sock_non_fatal_error(int error); +int BIO_err_is_non_fatal(unsigned int errcode); int BIO_socket_wait(int fd, int for_read, time_t max_time); # endif int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); @@ -726,6 +837,8 @@ int BIO_hex_string(BIO *out, int indent, int width, const void *data, # ifndef OPENSSL_NO_SOCK BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, const void *where, size_t wherelen, unsigned short port); void BIO_ADDR_free(BIO_ADDR *); @@ -788,6 +901,7 @@ int BIO_sock_info(int sock, # define BIO_SOCK_KEEPALIVE 0x04 # define BIO_SOCK_NONBLOCK 0x08 # define BIO_SOCK_NODELAY 0x10 +# define BIO_SOCK_TFO 0x20 int BIO_socket(int domain, int socktype, int protocol, int options); int BIO_connect(int sock, const BIO_ADDR *addr, int options); @@ -805,6 +919,11 @@ BIO *BIO_new_fd(int fd, int close_flag); int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, BIO **bio2, size_t writebuf2); +# ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +# endif + /* * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default @@ -849,38 +968,54 @@ ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); BIO_METHOD *BIO_meth_new(int type, const char *name); void BIO_meth_free(BIO_METHOD *biom); -int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int); -int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t, - size_t *); int BIO_meth_set_write(BIO_METHOD *biom, int (*write) (BIO *, const char *, int)); int BIO_meth_set_write_ex(BIO_METHOD *biom, int (*bwrite) (BIO *, const char *, size_t, size_t *)); -int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); -int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); +int BIO_meth_set_sendmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_read(BIO_METHOD *biom, int (*read) (BIO *, char *, int)); int BIO_meth_set_read_ex(BIO_METHOD *biom, int (*bread) (BIO *, char *, size_t, size_t *)); -int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +int BIO_meth_set_recvmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_puts(BIO_METHOD *biom, int (*puts) (BIO *, const char *)); -int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); int BIO_meth_set_gets(BIO_METHOD *biom, int (*ossl_gets) (BIO *, char *, int)); -long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); int BIO_meth_set_ctrl(BIO_METHOD *biom, long (*ctrl) (BIO *, int, long, void *)); -int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); -int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); -long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) - (BIO *, int, BIO_info_cb *); int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, long (*callback_ctrl) (BIO *, int, BIO_info_cb *)); - +# ifndef OPENSSL_NO_DEPRECATED_3_5 +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, + int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, + long, void *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) (BIO *, int, + BIO_info_cb *); +# endif # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/cmp.h index 49825570d8c303..05aed3029d594c 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -35,7 +35,9 @@ extern "C" { # endif -# define OSSL_CMP_PVNO 2 +# define OSSL_CMP_PVNO_2 2 +# define OSSL_CMP_PVNO_3 3 +# define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ /*- * PKIFailureInfo ::= BIT STRING { @@ -137,7 +139,6 @@ extern "C" { # if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX # error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int # endif - typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) @@ -203,8 +204,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_PKISTATUS_revocationWarning 4 # define OSSL_CMP_PKISTATUS_revocationNotification 5 # define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 - typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; + DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) # define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 @@ -274,6 +275,46 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) #define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) #define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) + +typedef struct ossl_cmp_crlstatus_st OSSL_CMP_CRLSTATUS; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS) +#define sk_OSSL_CMP_CRLSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_value(sk, idx) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CRLSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CRLSTATUS_new_null() ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CRLSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CRLSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CRLSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_delete(sk, i) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CRLSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_pop(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_shift(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CRLSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CRLSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CRLSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CRLSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CRLSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) + + +typedef OSSL_CRMF_ATTRIBUTETYPEANDVALUE OSSL_CMP_ATAV; +# define OSSL_CMP_ATAV_free OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free +typedef STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) OSSL_CMP_ATAVS; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_ATAVS) +# define stack_st_OSSL_CMP_ATAV stack_st_OSSL_CRMF_ATTRIBUTETYPEANDVALUE +# define sk_OSSL_CMP_ATAV_num sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num +# define sk_OSSL_CMP_ATAV_value sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value +# define sk_OSSL_CMP_ATAV_push sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push +# define sk_OSSL_CMP_ATAV_pop_free sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free + typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT; typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI; DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI) @@ -375,21 +416,75 @@ void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type, ASN1_TYPE *value); ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav); ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); -int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p, +int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **sk_p, OSSL_CMP_ITAV *itav); void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new0_certProfile(STACK_OF(ASN1_UTF8STRING) + *certProfile); +int OSSL_CMP_ITAV_get0_certProfile(const OSSL_CMP_ITAV *itav, + STACK_OF(ASN1_UTF8STRING) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_create(const X509_CRL *crl, + const X509 *cert, int only_DN); +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_new1(const DIST_POINT_NAME *dpn, + const GENERAL_NAMES *issuer, + const ASN1_TIME *thisUpdate); +int OSSL_CMP_CRLSTATUS_get0(const OSSL_CMP_CRLSTATUS *crlstatus, + DIST_POINT_NAME **dpn, GENERAL_NAMES **issuer, + ASN1_TIME **thisUpdate); +void OSSL_CMP_CRLSTATUS_free(OSSL_CMP_CRLSTATUS *crlstatus); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_crlStatusList(STACK_OF(OSSL_CMP_CRLSTATUS) *crlStatusList); +int OSSL_CMP_ITAV_get0_crlStatusList(const OSSL_CMP_ITAV *itav, + STACK_OF(OSSL_CMP_CRLSTATUS) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_crls(const X509_CRL *crls); +int OSSL_CMP_ITAV_get0_crls(const OSSL_CMP_ITAV *it, STACK_OF(X509_CRL) **out); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_certReqTemplate(OSSL_CRMF_CERTTEMPLATE *certTemplate, + OSSL_CMP_ATAVS *keySpec); +int OSSL_CMP_ITAV_get1_certReqTemplate(const OSSL_CMP_ITAV *itav, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +OSSL_CMP_ATAV *OSSL_CMP_ATAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ATAV_set0(OSSL_CMP_ATAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ATAV_get0_type(const OSSL_CMP_ATAV *itav); +ASN1_TYPE *OSSL_CMP_ATAV_get0_value(const OSSL_CMP_ATAV *itav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_algId(const X509_ALGOR *alg); +X509_ALGOR *OSSL_CMP_ATAV_get0_algId(const OSSL_CMP_ATAV *atav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_rsaKeyLen(int len); +int OSSL_CMP_ATAV_get_rsaKeyLen(const OSSL_CMP_ATAV *atav); +int OSSL_CMP_ATAV_push1(OSSL_CMP_ATAVS **sk_p, const OSSL_CMP_ATAV *atav); + void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); /* from cmp_ctx.c */ OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const OSSL_CMP_CTX *ctx); /* CMP general options: */ # define OSSL_CMP_OPT_LOG_VERBOSITY 0 /* CMP transfer options: */ -# define OSSL_CMP_OPT_KEEP_ALIVE 10 -# define OSSL_CMP_OPT_MSG_TIMEOUT 11 +# define OSSL_CMP_OPT_KEEP_ALIVE 10 +# define OSSL_CMP_OPT_MSG_TIMEOUT 11 # define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 +# define OSSL_CMP_OPT_USE_TLS 13 /* CMP request options: */ # define OSSL_CMP_OPT_VALIDITY_DAYS 20 # define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 @@ -407,6 +502,7 @@ int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); # define OSSL_CMP_OPT_DIGEST_ALGNID 34 # define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35 # define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36 +# define OSSL_CMP_OPT_NO_CACHE_EXTRACERTS 37 int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val); int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt); /* CMP-specific callback for logging and outputting the error queue: */ @@ -420,9 +516,11 @@ int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); +# ifndef OPENSSL_NO_HTTP int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); +# endif typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); @@ -432,7 +530,9 @@ void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); +# define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +# define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); /* client authentication: */ @@ -448,12 +548,15 @@ int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx, int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); int OSSL_CMP_CTX_reset_geninfo_ITAVs(OSSL_CMP_CTX *ctx); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_CTX_get0_geninfo_ITAVs(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, STACK_OF(X509) *extraCertsOut); /* certificate template: */ int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set1_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, const GENERAL_NAME *name); @@ -477,6 +580,7 @@ int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); # define OSSL_CMP_PKISI_BUFLEN 1024 +X509 *OSSL_CMP_CTX_get0_validatedSrvCert(const OSSL_CMP_CTX *ctx); X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); @@ -498,10 +602,13 @@ OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const OSSL_CMP_PKIHEADER *hdr); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_HDR_get0_geninfo_ITAVs(const OSSL_CMP_PKIHEADER *hdr); /* from cmp_msg.c */ OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg); +X509_PUBKEY *OSSL_CMP_MSG_get0_certreq_publickey(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_recipNonce(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid); @@ -517,8 +624,10 @@ int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, X509_STORE *trusted_store, X509 *cert); /* from cmp_http.c */ +# ifndef OPENSSL_NO_HTTP OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); +# endif /* from cmp_server.c */ typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; @@ -561,6 +670,13 @@ int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx, OSSL_CMP_SRV_error_cb_t process_error, OSSL_CMP_SRV_certConf_cb_t process_certConf, OSSL_CMP_SRV_pollReq_cb_t process_pollReq); +typedef int (*OSSL_CMP_SRV_delayed_delivery_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +typedef int (*OSSL_CMP_SRV_clean_transaction_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_SRV_CTX_init_trans(OSSL_CMP_SRV_CTX *srv_ctx, + OSSL_CMP_SRV_delayed_delivery_cb_t delay, + OSSL_CMP_SRV_clean_transaction_cb_t clean); OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx, @@ -577,6 +693,8 @@ X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type, # define OSSL_CMP_CR 2 # define OSSL_CMP_P10CR 4 # define OSSL_CMP_KUR 7 +# define OSSL_CMP_GENM 21 +# define OSSL_CMP_ERROR 23 # define OSSL_CMP_exec_IR_ses(ctx) \ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL) # define OSSL_CMP_exec_CR_ses(ctx) \ @@ -590,6 +708,18 @@ int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); +int OSSL_CMP_get1_crlUpdate(OSSL_CMP_CTX *ctx, const X509 *crlcert, + const X509_CRL *last_crl, + X509_CRL **crl); +int OSSL_CMP_get1_certReqTemplate(OSSL_CMP_CTX *ctx, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/cms.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/cms.h index 3b453e6a2187a2..63afab563557b0 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/cms.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/cms.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cms.h.in * - * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2008-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -31,8 +31,10 @@ extern "C" { # endif +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; typedef struct CMS_ContentInfo_st CMS_ContentInfo; typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; typedef struct CMS_CertificateChoices CMS_CertificateChoices; typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; @@ -147,10 +149,14 @@ SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, #define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) +DECLARE_ASN1_DUP_FUNCTION(CMS_EnvelopedData) + CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq); # define CMS_SIGNERINFO_ISSUER_SERIAL 0 @@ -190,6 +196,7 @@ CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq) # define CMS_ASCIICRLF 0x80000 # define CMS_CADES 0x100000 # define CMS_USE_ORIGINATOR_KEYID 0x200000 +# define CMS_NO_SIGNING_TIME 0x400000 const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms); @@ -217,13 +224,16 @@ int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, unsigned int flags); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, BIO *dcont, + unsigned int flags); CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, unsigned int flags); CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, @@ -233,27 +243,26 @@ CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, unsigned int flags); CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, const unsigned char *key, size_t keylen, BIO *dcont, BIO *out, unsigned int flags); - CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags); CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, @@ -272,7 +281,7 @@ CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags); CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, BIO *dcont, BIO *out, unsigned int flags); @@ -291,12 +300,16 @@ int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo * -CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx, +CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags); @@ -385,6 +398,11 @@ ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); int CMS_SignerInfo_sign(CMS_SignerInfo *si); int CMS_SignerInfo_verify(CMS_SignerInfo *si); int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, @@ -441,7 +459,7 @@ CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( unsigned char *id, int idlen, int allorfirst, STACK_OF(GENERAL_NAMES) *receiptList, STACK_OF(GENERAL_NAMES) *receiptsTo, - OSSL_LIB_CTX *ctx); + OSSL_LIB_CTX *libctx); int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/comp.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/comp.h new file mode 100644 index 00000000000000..90e39511fe8d28 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/comp.h @@ -0,0 +1,98 @@ +/* + * Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_COMP_H +# define OPENSSL_COMP_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_COMP_H +# endif + +# include + +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + + +# ifndef OPENSSL_NO_COMP + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX* comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); + +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); + +COMP_METHOD *COMP_zlib(void); +COMP_METHOD *COMP_zlib_oneshot(void); +COMP_METHOD *COMP_brotli(void); +COMP_METHOD *COMP_brotli_oneshot(void); +COMP_METHOD *COMP_zstd(void); +COMP_METHOD *COMP_zstd_oneshot(void); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define COMP_zlib_cleanup() while(0) continue +# endif + +# ifdef OPENSSL_BIO_H +const BIO_METHOD *BIO_f_zlib(void); +const BIO_METHOD *BIO_f_brotli(void); +const BIO_METHOD *BIO_f_zstd(void); +# endif + +# endif + +typedef struct ssl_comp_st SSL_COMP; + +SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) +#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) +#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) +#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) +#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) +#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) +#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) +#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) +#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) +#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) +#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) +#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) + + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/conf.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/conf.h index 44989929f6c84a..38576290bf641b 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/conf.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/conf.h @@ -27,6 +27,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -65,7 +68,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) #define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) #define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); -#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp))) +#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp)), lh_CONF_VALUE_hash_thunk, lh_CONF_VALUE_comp_thunk, lh_CONF_VALUE_doall_thunk, lh_CONF_VALUE_doall_arg_thunk)) #define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/configuration.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/configuration.h index 27388be81a8c4f..ed28fb46de87ea 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/configuration.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/configuration.h @@ -27,7 +27,7 @@ extern "C" { * OpenSSL was configured with the following options: */ -# define OPENSSL_CONFIGURED_API 30000 +# define OPENSSL_CONFIGURED_API 30500 # ifndef OPENSSL_RAND_SEED_OS # define OPENSSL_RAND_SEED_OS # endif @@ -43,6 +43,12 @@ extern "C" { # ifndef OPENSSL_NO_ASM # define OPENSSL_NO_ASM # endif +# ifndef OPENSSL_NO_BROTLI +# define OPENSSL_NO_BROTLI +# endif +# ifndef OPENSSL_NO_BROTLI_DYNAMIC +# define OPENSSL_NO_BROTLI_DYNAMIC +# endif # ifndef OPENSSL_NO_COMP # define OPENSSL_NO_COMP # endif @@ -52,6 +58,9 @@ extern "C" { # ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # endif +# ifndef OPENSSL_NO_DEMOS +# define OPENSSL_NO_DEMOS +# endif # ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 # define OPENSSL_NO_EC_NISTP_64_GCC_128 # endif @@ -61,12 +70,24 @@ extern "C" { # ifndef OPENSSL_NO_EXTERNAL_TESTS # define OPENSSL_NO_EXTERNAL_TESTS # endif +# ifndef OPENSSL_NO_FIPS_JITTER +# define OPENSSL_NO_FIPS_JITTER +# endif # ifndef OPENSSL_NO_FUZZ_AFL # define OPENSSL_NO_FUZZ_AFL # endif # ifndef OPENSSL_NO_FUZZ_LIBFUZZER # define OPENSSL_NO_FUZZ_LIBFUZZER # endif +# ifndef OPENSSL_NO_H3DEMO +# define OPENSSL_NO_H3DEMO +# endif +# ifndef OPENSSL_NO_HQINTEROP +# define OPENSSL_NO_HQINTEROP +# endif +# ifndef OPENSSL_NO_JITTER +# define OPENSSL_NO_JITTER +# endif # ifndef OPENSSL_NO_KTLS # define OPENSSL_NO_KTLS # endif @@ -79,6 +100,9 @@ extern "C" { # ifndef OPENSSL_NO_MSAN # define OPENSSL_NO_MSAN # endif +# ifndef OPENSSL_NO_PIE +# define OPENSSL_NO_PIE +# endif # ifndef OPENSSL_NO_RC5 # define OPENSSL_NO_RC5 # endif @@ -91,6 +115,12 @@ extern "C" { # ifndef OPENSSL_NO_SSL3_METHOD # define OPENSSL_NO_SSL3_METHOD # endif +# ifndef OPENSSL_NO_SSLKEYLOG +# define OPENSSL_NO_SSLKEYLOG +# endif +# ifndef OPENSSL_NO_TFO +# define OPENSSL_NO_TFO +# endif # ifndef OPENSSL_NO_TRACE # define OPENSSL_NO_TRACE # endif @@ -106,6 +136,21 @@ extern "C" { # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS # define OPENSSL_NO_WEAK_SSL_CIPHERS # endif +# ifndef OPENSSL_NO_WINSTORE +# define OPENSSL_NO_WINSTORE +# endif +# ifndef OPENSSL_NO_ZLIB +# define OPENSSL_NO_ZLIB +# endif +# ifndef OPENSSL_NO_ZLIB_DYNAMIC +# define OPENSSL_NO_ZLIB_DYNAMIC +# endif +# ifndef OPENSSL_NO_ZSTD +# define OPENSSL_NO_ZSTD +# endif +# ifndef OPENSSL_NO_ZSTD_DYNAMIC +# define OPENSSL_NO_ZSTD_DYNAMIC +# endif # ifndef OPENSSL_NO_DYNAMIC_ENGINE # define OPENSSL_NO_DYNAMIC_ENGINE # endif @@ -127,6 +172,12 @@ extern "C" { # define RC4_INT unsigned int +# if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +# define OPENSSL_NO_COMP_ALG +# else +# undef OPENSSL_NO_COMP_ALG +# endif + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/core_names.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/core_names.h new file mode 100644 index 00000000000000..e93e79a52bc910 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/core_names.h @@ -0,0 +1,575 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/core_names.h.in + * + * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#ifndef OPENSSL_CORE_NAMES_H +# define OPENSSL_CORE_NAMES_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +/* OSSL_CIPHER_PARAM_CTS_MODE Values */ +# define OSSL_CIPHER_CTS_MODE_CS1 "CS1" +# define OSSL_CIPHER_CTS_MODE_CS2 "CS2" +# define OSSL_CIPHER_CTS_MODE_CS3 "CS3" + +/* Known CIPHER names (not a complete list) */ +# define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" + +/* Known DIGEST names (not a complete list) */ +# define OSSL_DIGEST_NAME_MD5 "MD5" +# define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" +# define OSSL_DIGEST_NAME_SHA1 "SHA1" +# define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" +# define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" +# define OSSL_DIGEST_NAME_SHA2_256_192 "SHA2-256/192" +# define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" +# define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" +# define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" +# define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" +# define OSSL_DIGEST_NAME_MD2 "MD2" +# define OSSL_DIGEST_NAME_MD4 "MD4" +# define OSSL_DIGEST_NAME_MDC2 "MDC2" +# define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" +# define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" +# define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" +# define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" +# define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" +# define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" +# define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" +# define OSSL_DIGEST_NAME_SM3 "SM3" + +/* Known MAC names */ +# define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" +# define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" +# define OSSL_MAC_NAME_CMAC "CMAC" +# define OSSL_MAC_NAME_GMAC "GMAC" +# define OSSL_MAC_NAME_HMAC "HMAC" +# define OSSL_MAC_NAME_KMAC128 "KMAC128" +# define OSSL_MAC_NAME_KMAC256 "KMAC256" +# define OSSL_MAC_NAME_POLY1305 "POLY1305" +# define OSSL_MAC_NAME_SIPHASH "SIPHASH" + +/* Known KDF names */ +# define OSSL_KDF_NAME_HKDF "HKDF" +# define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" +# define OSSL_KDF_NAME_PBKDF1 "PBKDF1" +# define OSSL_KDF_NAME_PBKDF2 "PBKDF2" +# define OSSL_KDF_NAME_SCRYPT "SCRYPT" +# define OSSL_KDF_NAME_SSHKDF "SSHKDF" +# define OSSL_KDF_NAME_SSKDF "SSKDF" +# define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" +# define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" +# define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" +# define OSSL_KDF_NAME_X963KDF "X963KDF" +# define OSSL_KDF_NAME_KBKDF "KBKDF" +# define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" +# define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" + +/* RSA padding modes */ +# define OSSL_PKEY_RSA_PAD_MODE_NONE "none" +# define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" +# define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" +# define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" +# define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" + +/* RSA pss padding salt length */ +# define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" + +/* OSSL_PKEY_PARAM_EC_ENCODING values */ +# define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" +# define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" + +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" + +# define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" + +/* PROV_SKEY well known key types */ +# define OSSL_SKEY_TYPE_GENERIC "GENERIC-SECRET" +# define OSSL_SKEY_TYPE_AES "AES" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" + +/* Provider configuration variables */ +#define OSSL_PKEY_RETAIN_SEED "pkey_retain_seed" + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +# define OSSL_ALG_PARAM_ALGORITHM_ID "algorithm-id" +# define OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS "algorithm-id-params" +# define OSSL_ALG_PARAM_CIPHER "cipher" +# define OSSL_ALG_PARAM_DIGEST "digest" +# define OSSL_ALG_PARAM_ENGINE "engine" +# define OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR "fips-indicator" +# define OSSL_ALG_PARAM_MAC "mac" +# define OSSL_ALG_PARAM_PROPERTIES "properties" +# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +# define OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props" +# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" +# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name" +# define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal" +# define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name" +# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid" +# define OSSL_CIPHER_PARAM_AEAD "aead" +# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +# define OSSL_CIPHER_PARAM_AEAD_IV_GENERATED "iv-generated" +# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" +# define OSSL_CIPHER_PARAM_AEAD_TAG "tag" +# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" +# define OSSL_CIPHER_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD "alg_id_param" +# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_CIPHER_PARAM_CTS "cts" +# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" +# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" +# define OSSL_CIPHER_PARAM_DECRYPT_ONLY "decrypt-only" +# define OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK "encrypt-check" +# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" +# define OSSL_CIPHER_PARAM_IV "iv" +# define OSSL_CIPHER_PARAM_IVLEN "ivlen" +# define OSSL_CIPHER_PARAM_KEYLEN "keylen" +# define OSSL_CIPHER_PARAM_MODE "mode" +# define OSSL_CIPHER_PARAM_NUM "num" +# define OSSL_CIPHER_PARAM_PADDING "padding" +# define OSSL_CIPHER_PARAM_PIPELINE_AEAD_TAG "pipeline-tag" +# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" +# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" +# define OSSL_CIPHER_PARAM_ROUNDS "rounds" +# define OSSL_CIPHER_PARAM_SPEED "speed" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag" +# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" +# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" +# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" +# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" +# define OSSL_CIPHER_PARAM_USE_BITS "use-bits" +# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard" +# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" +# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_DIGEST_PARAM_MICALG "micalg" +# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" +# define OSSL_DIGEST_PARAM_SIZE "size" +# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" +# define OSSL_DIGEST_PARAM_XOF "xof" +# define OSSL_DIGEST_PARAM_XOFLEN "xoflen" +# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +# define OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +# define OSSL_DRBG_PARAM_SIZE "size" +# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" +# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" +# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" +# define OSSL_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_EXCHANGE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" +# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" +# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" +# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" +# define OSSL_EXCHANGE_PARAM_PAD "pad" +# define OSSL_GEN_PARAM_ITERATION "iteration" +# define OSSL_GEN_PARAM_POTENTIAL "potential" +# define OSSL_KDF_PARAM_ARGON2_AD "ad" +# define OSSL_KDF_PARAM_ARGON2_LANES "lanes" +# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost" +# define OSSL_KDF_PARAM_ARGON2_VERSION "version" +# define OSSL_KDF_PARAM_CEK_ALG "cekalg" +# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_KDF_PARAM_CONSTANT "constant" +# define OSSL_KDF_PARAM_DATA "data" +# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean" +# define OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KDF_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_KDF_PARAM_FIPS_EMS_CHECK "ems_check" +# define OSSL_KDF_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy" +# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce" +# define OSSL_KDF_PARAM_INFO "info" +# define OSSL_KDF_PARAM_ITER "iter" +# define OSSL_KDF_PARAM_KBKDF_R "r" +# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" +# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" +# define OSSL_KDF_PARAM_KEY "key" +# define OSSL_KDF_PARAM_LABEL "label" +# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_KDF_PARAM_MAC_SIZE "maclen" +# define OSSL_KDF_PARAM_MODE "mode" +# define OSSL_KDF_PARAM_PASSWORD "pass" +# define OSSL_KDF_PARAM_PKCS12_ID "id" +# define OSSL_KDF_PARAM_PKCS5 "pkcs5" +# define OSSL_KDF_PARAM_PREFIX "prefix" +# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_KDF_PARAM_SALT "salt" +# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" +# define OSSL_KDF_PARAM_SCRYPT_N "n" +# define OSSL_KDF_PARAM_SCRYPT_P "p" +# define OSSL_KDF_PARAM_SCRYPT_R "r" +# define OSSL_KDF_PARAM_SECRET "secret" +# define OSSL_KDF_PARAM_SEED "seed" +# define OSSL_KDF_PARAM_SIZE "size" +# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" +# define OSSL_KDF_PARAM_SSHKDF_TYPE "type" +# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" +# define OSSL_KDF_PARAM_THREADS "threads" +# define OSSL_KDF_PARAM_UKM "ukm" +# define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info" +# define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info" +# define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info" +# define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo" +# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_KEM_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KEM_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KEM_PARAM_IKME "ikme" +# define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING "hs_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm" +# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len" +# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" +# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_MAC_PARAM_CUSTOM "custom" +# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" +# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" +# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" +# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" +# define OSSL_MAC_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_MAC_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_MAC_PARAM_FIPS_NO_SHORT_MAC OSSL_PROV_PARAM_NO_SHORT_MAC +# define OSSL_MAC_PARAM_IV "iv" +# define OSSL_MAC_PARAM_KEY "key" +# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_MAC_PARAM_SALT "salt" +# define OSSL_MAC_PARAM_SIZE "size" +# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" +# define OSSL_MAC_PARAM_XOF "xof" +# define OSSL_OBJECT_PARAM_DATA "data" +# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" +# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" +# define OSSL_OBJECT_PARAM_DESC "desc" +# define OSSL_OBJECT_PARAM_INPUT_TYPE "input-type" +# define OSSL_OBJECT_PARAM_REFERENCE "reference" +# define OSSL_OBJECT_PARAM_TYPE "type" +# define OSSL_PASSPHRASE_PARAM_INFO "info" +# define OSSL_PKEY_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_PKEY_PARAM_BITS "bits" +# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" +# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm" +# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" +# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +# define OSSL_PKEY_PARAM_DIST_ID "distid" +# define OSSL_PKEY_PARAM_EC_A "a" +# define OSSL_PKEY_PARAM_EC_B "b" +# define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3" +# define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp" +# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" +# define OSSL_PKEY_PARAM_EC_ENCODING "encoding" +# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +# define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_PARAM_EC_ORDER "order" +# define OSSL_PKEY_PARAM_EC_P "p" +# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +# define OSSL_PKEY_PARAM_EC_PUB_X "qx" +# define OSSL_PKEY_PARAM_EC_PUB_Y "qy" +# define OSSL_PKEY_PARAM_EC_SEED "seed" +# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE +# define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +# define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_FFC_G "g" +# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +# define OSSL_PKEY_PARAM_FFC_H "hindex" +# define OSSL_PKEY_PARAM_FFC_P "p" +# define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +# define OSSL_PKEY_PARAM_FFC_Q "q" +# define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +# define OSSL_PKEY_PARAM_FFC_SEED "seed" +# define OSSL_PKEY_PARAM_FFC_TYPE "type" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +# define OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK "digest-check" +# define OSSL_PKEY_PARAM_FIPS_KEY_CHECK "key-check" +# define OSSL_PKEY_PARAM_FIPS_SIGN_CHECK "sign-check" +# define OSSL_PKEY_PARAM_GROUP_NAME "group" +# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" +# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +# define OSSL_PKEY_PARAM_MAX_SIZE "max-size" +# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +# define OSSL_PKEY_PARAM_ML_DSA_INPUT_FORMATS "ml-dsa.input_formats" +# define OSSL_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS "ml-dsa.output_formats" +# define OSSL_PKEY_PARAM_ML_DSA_PREFER_SEED "ml-dsa.prefer_seed" +# define OSSL_PKEY_PARAM_ML_DSA_RETAIN_SEED "ml-dsa.retain_seed" +# define OSSL_PKEY_PARAM_ML_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE "ml-kem.import_pct_type" +# define OSSL_PKEY_PARAM_ML_KEM_INPUT_FORMATS "ml-kem.input_formats" +# define OSSL_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS "ml-kem.output_formats" +# define OSSL_PKEY_PARAM_ML_KEM_PREFER_SEED "ml-kem.prefer_seed" +# define OSSL_PKEY_PARAM_ML_KEM_RETAIN_SEED "ml-kem.retain_seed" +# define OSSL_PKEY_PARAM_ML_KEM_SEED "seed" +# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +# define OSSL_PKEY_PARAM_PRIV_KEY "priv" +# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_PUB_KEY "pub" +# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9" +# define OSSL_PKEY_PARAM_RSA_D "d" +# define OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ "rsa-derive-from-pq" +# define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_RSA_E "e" +# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1" +# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10" +# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2" +# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3" +# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4" +# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5" +# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6" +# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7" +# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8" +# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9" +# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1" +# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10" +# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2" +# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3" +# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4" +# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5" +# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6" +# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7" +# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8" +# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9" +# define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC +# define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_PKEY_PARAM_RSA_N "n" +# define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" +# define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1" +# define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2" +# define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1" +# define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2" +# define OSSL_PKEY_PARAM_RSA_TEST_XP "xp" +# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" +# define OSSL_PKEY_PARAM_SLH_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG +# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +# define OSSL_PROV_PARAM_BUILDINFO "buildinfo" +# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" +# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" +# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" +# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" +# define OSSL_PROV_PARAM_DSA_SIGN_DISABLED "dsa-sign-disabled" +# define OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK "ecdh-cofactor-check" +# define OSSL_PROV_PARAM_HKDF_DIGEST_CHECK "hkdf-digest-check" +# define OSSL_PROV_PARAM_HKDF_KEY_CHECK "hkdf-key-check" +# define OSSL_PROV_PARAM_HMAC_KEY_CHECK "hmac-key-check" +# define OSSL_PROV_PARAM_KBKDF_KEY_CHECK "kbkdf-key-check" +# define OSSL_PROV_PARAM_KMAC_KEY_CHECK "kmac-key-check" +# define OSSL_PROV_PARAM_NAME "name" +# define OSSL_PROV_PARAM_NO_SHORT_MAC "no-short-mac" +# define OSSL_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK "pbkdf2-lower-bound-check" +# define OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED "rsa-pkcs15-pad-disabled" +# define OSSL_PROV_PARAM_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED "rsa-sign-x931-pad-disabled" +# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" +# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" +# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" +# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" +# define OSSL_PROV_PARAM_SIGNATURE_DIGEST_CHECK "signature-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_DIGEST_CHECK "sshkdf-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_KEY_CHECK "sshkdf-key-check" +# define OSSL_PROV_PARAM_SSKDF_DIGEST_CHECK "sskdf-digest-check" +# define OSSL_PROV_PARAM_SSKDF_KEY_CHECK "sskdf-key-check" +# define OSSL_PROV_PARAM_STATUS "status" +# define OSSL_PROV_PARAM_TDES_ENCRYPT_DISABLED "tdes-encrypt-disabled" +# define OSSL_PROV_PARAM_TLS13_KDF_DIGEST_CHECK "tls13-kdf-digest-check" +# define OSSL_PROV_PARAM_TLS13_KDF_KEY_CHECK "tls13-kdf-key-check" +# define OSSL_PROV_PARAM_TLS1_PRF_DIGEST_CHECK "tls1-prf-digest-check" +# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" +# define OSSL_PROV_PARAM_TLS1_PRF_KEY_CHECK "tls1-prf-key-check" +# define OSSL_PROV_PARAM_VERSION "version" +# define OSSL_PROV_PARAM_X942KDF_KEY_CHECK "x942kdf-key-check" +# define OSSL_PROV_PARAM_X963KDF_DIGEST_CHECK "x963kdf-digest-check" +# define OSSL_PROV_PARAM_X963KDF_KEY_CHECK "x963kdf-key-check" +# define OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_RAND_PARAM_GENERATE "generate" +# define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +# define OSSL_RAND_PARAM_STATE "state" +# define OSSL_RAND_PARAM_STRENGTH "strength" +# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" +# define OSSL_SIGNATURE_PARAM_ADD_RANDOM "additional-random" +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID OSSL_PKEY_PARAM_ALGORITHM_ID +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string" +# define OSSL_SIGNATURE_PARAM_DETERMINISTIC "deterministic" +# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE +# define OSSL_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_SIGNATURE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_CHECK OSSL_PKEY_PARAM_FIPS_SIGN_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK "sign-x931-pad-check" +# define OSSL_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE "verify-message" +# define OSSL_SIGNATURE_PARAM_INSTANCE "instance" +# define OSSL_SIGNATURE_PARAM_KAT "kat" +# define OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING "message-encoding" +# define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_SIGNATURE_PARAM_MU "mu" +# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type" +# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +# define OSSL_SIGNATURE_PARAM_SIGNATURE "signature" +# define OSSL_SIGNATURE_PARAM_TEST_ENTROPY "test-entropy" +# define OSSL_SKEY_PARAM_KEY_LENGTH "key-length" +# define OSSL_SKEY_PARAM_RAW_BYTES "raw-bytes" +# define OSSL_STORE_PARAM_ALIAS "alias" +# define OSSL_STORE_PARAM_DIGEST "digest" +# define OSSL_STORE_PARAM_EXPECT "expect" +# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" +# define OSSL_STORE_PARAM_INPUT_TYPE "input-type" +# define OSSL_STORE_PARAM_ISSUER "name" +# define OSSL_STORE_PARAM_PROPERTIES "properties" +# define OSSL_STORE_PARAM_SERIAL "serial" +# define OSSL_STORE_PARAM_SUBJECT "subject" + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/crmf.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/crmf.h index 71b747ed33d239..4bf550fd47daa9 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/crmf.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/crmf.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/crmf.h.in * - * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -26,6 +26,7 @@ # include # include # include /* for GENERAL_NAME etc. */ +# include /* explicit #includes not strictly needed since implied by the above: */ # include @@ -43,9 +44,12 @@ extern "C" { # define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 # define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 - typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) + +typedef struct ossl_crmf_encryptedkey_st OSSL_CRMF_ENCRYPTEDKEY; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDKEY) + typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) @@ -77,6 +81,36 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) #define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; +void OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(OSSL_CRMF_ATTRIBUTETYPEANDVALUE *v); +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value(sk, idx) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new(cmp) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_null() ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (n)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete(sk, i) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (i))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete_ptr(sk, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_shift(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk),ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), (idx)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set(sk, idx, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), pnum) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup(sk) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) + + typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER) typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY; @@ -118,6 +152,7 @@ typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO) typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTTEMPLATE) typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS) @@ -198,12 +233,14 @@ int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, int rid, int acceptRAVerified, OSSL_LIB_CTX *libctx, const char *propq); OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); -const ASN1_INTEGER -*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const ASN1_INTEGER +*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); X509_EXTENSIONS *OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME @@ -215,10 +252,24 @@ int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl, const X509_NAME *subject, const X509_NAME *issuer, const ASN1_INTEGER *serial); -X509 -*OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, - OSSL_LIB_CTX *libctx, const char *propq, - EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDKEY_get1_encCert(const OSSL_CRMF_ENCRYPTEDKEY *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, unsigned int flags); +unsigned char +*OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *enc, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, int *outlen); +EVP_PKEY *OSSL_CRMF_ENCRYPTEDKEY_get1_pkey(const OSSL_CRMF_ENCRYPTEDKEY *encryptedKey, + X509_STORE *ts, STACK_OF(X509) *extra, EVP_PKEY *pkey, + X509 *cert, ASN1_OCTET_STRING *secret, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSG_centralkeygen_requested(const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr); +# ifndef OPENSSL_NO_CMS +OSSL_CRMF_ENCRYPTEDKEY *OSSL_CRMF_ENCRYPTEDKEY_init_envdata(CMS_EnvelopedData *envdata); +# endif # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/crypto.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/crypto.h index 3f40be6d8c61d5..fd2cfd3e5a9ac4 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/crypto.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/crypto.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/crypto.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -85,9 +85,15 @@ int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock); void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock); int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_add64(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_and(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, CRYPTO_RWLOCK *lock); int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, CRYPTO_RWLOCK *lock); /* No longer needed, so this is a no-op */ #define OPENSSL_malloc_init() while(0) continue @@ -96,6 +102,9 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_zalloc(num) \ CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_aligned_alloc(num, alignment, freeptr) \ + CRYPTO_aligned_alloc(num, alignment, freeptr, \ + OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_realloc(addr, num) \ CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_clear_realloc(addr, old_num, num) \ @@ -124,6 +133,7 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); size_t OPENSSL_strnlen(const char *str, size_t maxlen); +int OPENSSL_strtoul(const char *str, char **endptr, int base, unsigned long *num); int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength, const unsigned char *buf, size_t buflen, const char sep); @@ -160,6 +170,7 @@ const char *OpenSSL_version(int type); # define OPENSSL_FULL_VERSION_STRING 7 # define OPENSSL_MODULES_DIR 8 # define OPENSSL_CPU_INFO 9 +# define OPENSSL_WINCTX 10 const char *OPENSSL_info(int type); /* @@ -174,6 +185,7 @@ const char *OPENSSL_info(int type); # define OPENSSL_INFO_LIST_SEPARATOR 1006 # define OPENSSL_INFO_SEED_SOURCE 1007 # define OPENSSL_INFO_CPU_SETTINGS 1008 +# define OPENSSL_INFO_WINDOWS_CONTEXT 1009 int OPENSSL_issetugid(void); @@ -341,11 +353,14 @@ void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn, CRYPTO_realloc_fn *realloc_fn, CRYPTO_free_fn *free_fn); -void *CRYPTO_malloc(size_t num, const char *file, int line); -void *CRYPTO_zalloc(size_t num, const char *file, int line); -void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); -char *CRYPTO_strdup(const char *str, const char *file, int line); -char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc(size_t num, size_t align, + void **freeptr, const char *file, + int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strdup(const char *str, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); void CRYPTO_free(void *ptr, const char *file, int line); void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line); void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); @@ -354,8 +369,8 @@ void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, int CRYPTO_secure_malloc_init(size_t sz, size_t minsize); int CRYPTO_secure_malloc_done(void); -void *CRYPTO_secure_malloc(size_t num, const char *file, int line); -void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); void CRYPTO_secure_free(void *ptr, const char *file, int line); void CRYPTO_secure_clear_free(void *ptr, size_t num, const char *file, int line); @@ -376,6 +391,9 @@ void OPENSSL_cleanse(void *ptr, size_t len); # define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */ # define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */ +/* max allowed length for value of OPENSSL_MALLOC_FAILURES env var. */ +# define CRYPTO_MEM_CHECK_MAX_FS 256 + void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); # ifndef OPENSSL_NO_DEPRECATED_3_0 # define OPENSSL_mem_debug_push(info) \ @@ -551,6 +569,13 @@ int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file); void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); +int OSSL_LIB_CTX_get_conf_diagnostics(OSSL_LIB_CTX *ctx); +void OSSL_LIB_CTX_set_conf_diagnostics(OSSL_LIB_CTX *ctx, int value); + +void OSSL_sleep(uint64_t millis); + + +void *OSSL_LIB_CTX_get_data(OSSL_LIB_CTX *ctx, int index); # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/ct.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/ct.h index b6dd8c3547710a..e6dd1192a4e0b3 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/ct.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/ct.h @@ -133,7 +133,7 @@ typedef enum { */ CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); - + /* * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library * context and property query string is used. diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/err.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/err.h index 2abf2483488181..daca18e7b757b0 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/err.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/err.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -372,7 +372,7 @@ typedef struct ERR_string_data_st { } ERR_STRING_DATA; DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); -#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp))) +#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp)), lh_ERR_STRING_DATA_hash_thunk, lh_ERR_STRING_DATA_comp_thunk, lh_ERR_STRING_DATA_doall_thunk, lh_ERR_STRING_DATA_doall_arg_thunk)) #define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) @@ -496,6 +496,14 @@ int ERR_get_next_error_library(void); int ERR_set_mark(void); int ERR_pop_to_mark(void); int ERR_clear_last_mark(void); +int ERR_count_to_mark(void); +int ERR_pop(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); #ifdef __cplusplus } diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/fipskey.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/fipskey.h index 42ba014b313ba8..929db18c678364 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/fipskey.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/fipskey.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/fipskey.h.in * - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -29,6 +29,11 @@ extern "C" { */ #define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" +/* + * The FIPS provider vendor name, as a string. + */ +#define FIPS_VENDOR "OpenSSL FIPS Provider" + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/lhash.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/lhash.h index 39dd6254acdeb6..62c55b20fd9716 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/lhash.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/lhash.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -24,6 +24,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -31,9 +34,13 @@ extern "C" { typedef struct lhash_node_st OPENSSL_LH_NODE; typedef int (*OPENSSL_LH_COMPFUNC) (const void *, const void *); +typedef int (*OPENSSL_LH_COMPFUNCTHUNK) (const void *, const void *, OPENSSL_LH_COMPFUNC cfn); typedef unsigned long (*OPENSSL_LH_HASHFUNC) (const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNCTHUNK) (const void *, OPENSSL_LH_HASHFUNC hfn); typedef void (*OPENSSL_LH_DOALL_FUNC) (void *); +typedef void (*OPENSSL_LH_DOALL_FUNC_THUNK) (void *, OPENSSL_LH_DOALL_FUNC doall); typedef void (*OPENSSL_LH_DOALL_FUNCARG) (void *, void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG_THUNK) (void *, void *, OPENSSL_LH_DOALL_FUNCARG doall); typedef struct lhash_st OPENSSL_LHASH; /* @@ -79,26 +86,40 @@ typedef struct lhash_st OPENSSL_LHASH; int OPENSSL_LH_error(OPENSSL_LHASH *lh); OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +OPENSSL_LHASH *OPENSSL_LH_set_thunks(OPENSSL_LHASH *lh, + OPENSSL_LH_HASHFUNCTHUNK hw, + OPENSSL_LH_COMPFUNCTHUNK cw, + OPENSSL_LH_DOALL_FUNC_THUNK daw, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw); void OPENSSL_LH_free(OPENSSL_LHASH *lh); void OPENSSL_LH_flush(OPENSSL_LHASH *lh); void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); -void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg_thunk(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw, + OPENSSL_LH_DOALL_FUNCARG fn, void *arg); + unsigned long OPENSSL_LH_strhash(const char *c); unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); # ifndef OPENSSL_NO_STDIO -void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# endif +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # endif -void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define _LHASH OPENSSL_LHASH @@ -129,110 +150,190 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); /* Helper macro for internal use */ # define DEFINE_LHASH_OF_INTERNAL(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ typedef void (*lh_##type##_doallfunc)(type *a); \ - static ossl_unused ossl_inline type *ossl_check_##type##_lh_plain_type(type *ptr) \ + static ossl_inline unsigned long lh_##type##_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static ossl_inline int lh_##type##_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_inline void lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_inline void lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline type *\ + ossl_check_##type##_lh_plain_type(type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const type *ossl_check_const_##type##_lh_plain_type(const type *ptr) \ + static ossl_unused ossl_inline const type * \ + ossl_check_const_##type##_lh_plain_type(const type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const OPENSSL_LHASH *ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline const OPENSSL_LHASH * \ + ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ { \ return (const OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LHASH *ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline OPENSSL_LHASH * \ + ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ { \ return (OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ + static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC \ + ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ { \ return (OPENSSL_LH_COMPFUNC)cmp; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ + static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC \ + ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ { \ return (OPENSSL_LH_HASHFUNC)hfn; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ + static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC \ + ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ { \ return (OPENSSL_LH_DOALL_FUNC)dfn; \ } \ LHASH_OF(type) -# define DEFINE_LHASH_OF(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ - static ossl_unused ossl_inline LHASH_OF(type) *lh_##type##_new(unsigned long (*hfn)(const type *), \ - int (*cfn)(const type *, const type *)) \ +# ifndef OPENSSL_NO_DEPRECATED_3_1 +# define DEFINE_LHASH_OF_DEPRECATED(type) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ - return (LHASH_OF(type) *) \ - OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ - static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } +# else +# define DEFINE_LHASH_OF_DEPRECATED(type) +# endif + +# define DEFINE_LHASH_OF_EX(type) \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ + static unsigned long \ + lh_##type##_hfn_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static int lh_##type##_cfn_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_free(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_flush(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_flush(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ { \ return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline int \ + lh_##type##_error(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_num_items(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_get_down_load(LHASH_OF(type) *lh) \ { \ - OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ { \ - OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ } \ - static ossl_unused ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ { \ - OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ { \ - return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ } \ - static ossl_unused ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall(LHASH_OF(type) *lh, void (*doall)(type *)) \ { \ - OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ - void (*doall)(type *)) \ + static ossl_unused ossl_inline LHASH_OF(type) * \ + lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ { \ - OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \ + lh_##type##_hfn_thunk, lh_##type##_cfn_thunk, \ + lh_##type##_doall_thunk, \ + lh_##type##_doall_arg_thunk); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall_arg(LHASH_OF(type) *lh, \ - void (*doallarg)(type *, void *), \ - void *arg) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg(LHASH_OF(type) *lh, \ + void (*doallarg)(type *, void *), void *arg) \ { \ OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ } \ LHASH_OF(type) +# define DEFINE_LHASH_OF(type) \ + DEFINE_LHASH_OF_EX(type); \ + DEFINE_LHASH_OF_DEPRECATED(type) \ + LHASH_OF(type) + #define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ int_implement_lhash_doall(type, argtype, const type) @@ -240,17 +341,26 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); int_implement_lhash_doall(type, argtype, type) #define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype##_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG fn) \ + { \ + void (*fn_conv)(cbargtype *, argtype *) = (void (*)(cbargtype *, argtype *))fn; \ + fn_conv((cbargtype *)node, (argtype *)arg); \ + } \ static ossl_unused ossl_inline void \ lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ void (*fn)(cbargtype *, argtype *), \ argtype *arg) \ { \ - OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNCARG)fn, (void *)arg); \ + OPENSSL_LH_doall_arg_thunk((OPENSSL_LHASH *)lh, \ + lh_##type##_doall_##argtype##_thunk, \ + (OPENSSL_LH_DOALL_FUNCARG)fn, \ + (void *)arg); \ } \ LHASH_OF(type) DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); -#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp)), lh_OPENSSL_STRING_hash_thunk, lh_OPENSSL_STRING_comp_thunk, lh_OPENSSL_STRING_doall_thunk, lh_OPENSSL_STRING_doall_arg_thunk)) #define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) @@ -265,7 +375,7 @@ DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); #define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) #define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); -#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp)), lh_OPENSSL_CSTRING_hash_thunk, lh_OPENSSL_CSTRING_comp_thunk, lh_OPENSSL_CSTRING_doall_thunk, lh_OPENSSL_CSTRING_doall_arg_thunk)) #define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/opensslv.h index 5fb5bc63056fe0..71a357701fd5e3 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/opensslv.h @@ -28,8 +28,8 @@ extern "C" { * These macros express version number MAJOR.MINOR.PATCH exactly */ # define OPENSSL_VERSION_MAJOR 3 -# define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 17 +# define OPENSSL_VERSION_MINOR 5 +# define OPENSSL_VERSION_PATCH 2 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.17" -# define OPENSSL_FULL_VERSION_STR "3.0.17" +# define OPENSSL_VERSION_STR "3.5.2" +# define OPENSSL_FULL_VERSION_STR "3.5.2" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "1 Jul 2025" +# define OPENSSL_RELEASE_DATE "5 Aug 2025" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.17 1 Jul 2025" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.2 5 Aug 2025" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/pkcs12.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/pkcs12.h index c5e0cab06491ec..0809645dad0bbf 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/pkcs12.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/pkcs12.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/pkcs12.h.in * - * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -41,6 +44,7 @@ extern "C" { # define PKCS12_MAC_KEY_LENGTH 20 +/* The macro is expected to be used only internally. Kept for backwards compatibility. */ # define PKCS12_SALT_LEN 8 /* It's not clear if these are actually needed... */ @@ -130,7 +134,9 @@ int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); const STACK_OF(PKCS12_SAFEBAG) * PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); @@ -218,6 +224,7 @@ ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); const STACK_OF(X509_ATTRIBUTE) * PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, const char *pass, int passlen, const unsigned char *in, int inlen, @@ -285,6 +292,9 @@ int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, unsigned char *salt, int saltlen, int iter, const EVP_MD *md_type); +int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type, const char *prf_md_name); int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, int saltlen, const EVP_MD *md_type); unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, @@ -305,6 +315,7 @@ DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) void PKCS12_PBE_add(void); int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype); @@ -312,6 +323,11 @@ PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype, OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/pkcs7.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/pkcs7.h index 0ce79bf4fa160e..fa68462aff973b 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/pkcs7.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/pkcs7.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/pkcs7.h.in * - * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -28,6 +28,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -131,8 +134,8 @@ SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INF typedef struct pkcs7_signed_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; struct pkcs7_st *contents; } PKCS7_SIGNED; @@ -158,8 +161,8 @@ typedef struct pkcs7_enveloped_st { typedef struct pkcs7_signedandenveloped_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; PKCS7_ENC_CONTENT *enc_data; STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; @@ -200,7 +203,7 @@ typedef struct pkcs7_st { /* NID_pkcs7_data */ ASN1_OCTET_STRING *data; /* NID_pkcs7_signed */ - PKCS7_SIGNED *sign; + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ /* NID_pkcs7_enveloped */ PKCS7_ENVELOPE *enveloped; /* NID_pkcs7_signedAndEnveloped */ @@ -341,13 +344,13 @@ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, const EVP_MD *dgst); int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); -int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); -int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); int PKCS7_content_new(PKCS7 *p7, int nid); int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, - X509 *x509); + X509 *signer); BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/ssl.h index 3df725c56d6c5e..7e3d89c7ef3dc9 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/ssl.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/ssl.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/ssl.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -24,6 +24,7 @@ # endif # include +# include # include # include # include @@ -42,6 +43,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -231,10 +235,8 @@ typedef struct ssl_cipher_st SSL_CIPHER; typedef struct ssl_session_st SSL_SESSION; typedef struct tls_sigalgs_st TLS_SIGALGS; typedef struct ssl_conf_ctx_st SSL_CONF_CTX; -typedef struct ssl_comp_st SSL_COMP; STACK_OF(SSL_CIPHER); -STACK_OF(SSL_COMP); /* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ typedef struct srtp_protection_profile_st { @@ -278,28 +280,31 @@ typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, /* Extension context codes */ /* This extension is only allowed in TLS */ -#define SSL_EXT_TLS_ONLY 0x0001 +#define SSL_EXT_TLS_ONLY 0x00001 /* This extension is only allowed in DTLS */ -#define SSL_EXT_DTLS_ONLY 0x0002 +#define SSL_EXT_DTLS_ONLY 0x00002 /* Some extensions may be allowed in DTLS but we don't implement them for it */ -#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 /* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ -#define SSL_EXT_SSL3_ALLOWED 0x0008 +#define SSL_EXT_SSL3_ALLOWED 0x00008 /* Extension is only defined for TLS1.2 and below */ -#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 /* Extension is only defined for TLS1.3 and above */ -#define SSL_EXT_TLS1_3_ONLY 0x0020 +#define SSL_EXT_TLS1_3_ONLY 0x00020 /* Ignore this extension during parsing if we are resuming */ -#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 -#define SSL_EXT_CLIENT_HELLO 0x0080 +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 /* Really means TLS1.2 or below */ -#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 -#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 -#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 -#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 -#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 -#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 -#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 /* Typedefs for handling custom extensions */ @@ -404,7 +409,7 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); */ # define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_BIT(22) /* - * If set, a server will allow a client to issue a SSLv3.0 version + * If set, a server will allow a client to issue an SSLv3.0 version * number as latest version supported in the premaster secret, even when * TLSv1.0 (version 3.1) was announced in the client hello. Normally * this is forbidden to prevent version rollback attacks. @@ -430,6 +435,19 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); * interoperability with CryptoPro CSP 3.x */ # define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +# define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +# define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) + /* Enable KTLS TX zerocopy on Linux */ +# define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) + +#define SSL_OP_PREFER_NO_DHE_KEX SSL_OP_BIT(35) /* * Option "collections." @@ -574,6 +592,8 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); # define CERT_PKEY_CERT_TYPE 0x400 /* Cert chain suitable to Suite B */ # define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +# define CERT_PKEY_RPK 0x1000 # define SSL_CONF_FLAG_CMDLINE 0x1 # define SSL_CONF_FLAG_FILE 0x2 @@ -965,6 +985,7 @@ uint32_t SSL_get_recv_max_early_data(const SSL *s); # include /* This is mostly sslv3 with a few tweaks */ # include /* Datagram TLS */ # include /* Support for the use_srtp extension */ +# include #ifdef __cplusplus extern "C" { @@ -1000,32 +1021,6 @@ SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) #define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) #define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) #define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) -SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) -#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) -#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) -#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) -#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) -#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) -#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) -#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) -#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) -#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) -#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) -#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) /* compatibility */ @@ -1066,6 +1061,7 @@ typedef enum { DTLS_ST_CR_HELLO_VERIFY_REQUEST, TLS_ST_CR_SRVR_HELLO, TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, TLS_ST_CR_CERT_STATUS, TLS_ST_CR_KEY_EXCH, TLS_ST_CR_CERT_REQ, @@ -1075,6 +1071,7 @@ typedef enum { TLS_ST_CR_FINISHED, TLS_ST_CW_CLNT_HELLO, TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, TLS_ST_CW_KEY_EXCH, TLS_ST_CW_CERT_VRFY, TLS_ST_CW_CHANGE, @@ -1085,10 +1082,12 @@ typedef enum { DTLS_ST_SW_HELLO_VERIFY_REQUEST, TLS_ST_SW_SRVR_HELLO, TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, TLS_ST_SW_KEY_EXCH, TLS_ST_SW_CERT_REQ, TLS_ST_SW_SRVR_DONE, TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, TLS_ST_SR_KEY_EXCH, TLS_ST_SR_CERT_VRFY, TLS_ST_SR_NEXT_PROTO, @@ -1380,9 +1379,13 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_CTRL_GET_SIGNATURE_NID 132 # define SSL_CTRL_GET_TMP_KEY 133 # define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +# define SSL_CTRL_GET_IANA_GROUPS 135 # define SSL_CTRL_SET_RETRY_VERIFY 136 # define SSL_CTRL_GET_VERIFY_CERT_STORE 137 # define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +# define SSL_CTRL_GET0_IMPLEMENTED_GROUPS 139 +# define SSL_CTRL_GET_SIGNATURE_NAME 140 +# define SSL_CTRL_GET_PEER_SIGNATURE_NAME 141 # define SSL_CERT_SET_FIRST 1 # define SSL_CERT_SET_NEXT 2 # define SSL_CERT_SET_SERVER 3 @@ -1485,10 +1488,15 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get1_groups(s, glist) \ SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_IANA_GROUPS,0,(uint16_t **)(plst)) # define SSL_CTX_set1_groups(ctx, glist, glistlen) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) # define SSL_CTX_set1_groups_list(ctx, s) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s)) +# define SSL_CTX_get0_implemented_groups(ctx, all, out) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET0_IMPLEMENTED_GROUPS, all, \ + (STACK_OF(OPENSSL_CSTRING) *)(out)) # define SSL_set1_groups(s, glist, glistlen) \ SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist)) # define SSL_set1_groups_list(s, str) \ @@ -1520,8 +1528,12 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) (char *)(clist)) # define SSL_set1_client_certificate_types(s, clist, clistlen) \ SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist)) +# define SSL_get0_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn) +# define SSL_get0_peer_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_peer_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) # define SSL_get_peer_tmp_key(s, pk) \ @@ -1549,6 +1561,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get_max_proto_version(s) \ SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +const char *SSL_get0_group_name(SSL *s); const char *SSL_group_to_name(SSL *s, int id); /* Backwards compatibility, original 1.1.0 names */ @@ -1613,7 +1626,11 @@ void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); __owur int SSL_want(const SSL *s); __owur int SSL_clear(SSL *s); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()") void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); +#endif +void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm); __owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); __owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); @@ -1725,13 +1742,21 @@ __owur const char *SSL_state_string(const SSL *s); __owur const char *SSL_rstate_string(const SSL *s); __owur const char *SSL_state_string_long(const SSL *s); __owur const char *SSL_rstate_string_long(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_get_time_ex()") __owur long SSL_SESSION_get_time(const SSL_SESSION *s); +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_set_time_ex()") __owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +#endif __owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); __owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); __owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); __owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); +__owur time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s); +__owur time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t); + __owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); __owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, @@ -1783,6 +1808,9 @@ __owur int SSL_has_matching_session_id(const SSL *s, unsigned int id_len); SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); # ifdef OPENSSL_X509_H __owur X509 *SSL_get0_peer_certificate(const SSL *s); @@ -1840,6 +1868,8 @@ __owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, SSL *SSL_new(SSL_CTX *ctx); int SSL_up_ref(SSL *s); int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); __owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, unsigned int sid_ctx_len); @@ -1848,8 +1878,8 @@ __owur int SSL_set_purpose(SSL *ssl, int purpose); __owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); __owur int SSL_set_trust(SSL *ssl, int trust); -__owur int SSL_set1_host(SSL *s, const char *hostname); -__owur int SSL_add1_host(SSL *s, const char *hostname); +__owur int SSL_set1_host(SSL *s, const char *host); +__owur int SSL_add1_host(SSL *s, const char *host); __owur const char *SSL_get0_peername(SSL *s); void SSL_set_hostflags(SSL *s, unsigned int flags); @@ -1924,6 +1954,11 @@ OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg); void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, void *arg); +typedef int (*SSL_new_pending_conn_cb_fn) (SSL_CTX *ctx, SSL *new_ssl, + void *arg); +void SSL_CTX_set_new_pending_conn_cb(SSL_CTX *c, SSL_new_pending_conn_cb_fn cb, + void *arg); + int SSL_client_hello_isv2(SSL *s); unsigned int SSL_client_hello_get0_legacy_version(SSL *s); size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); @@ -1932,6 +1967,8 @@ size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); size_t SSL_client_hello_get0_compression_methods(SSL *s, const unsigned char **out); int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); int SSL_client_hello_get0_ext(SSL *s, unsigned int type, const unsigned char **out, size_t *outlen); @@ -1978,6 +2015,12 @@ long SSL_callback_ctrl(SSL *, int, void (*)(void)); long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); +# define SSL_WRITE_FLAG_CONCLUDE (1U << 0) + +__owur int SSL_write_ex2(SSL *s, const void *buf, size_t num, + uint64_t flags, + size_t *written); + # define SSL_EARLY_DATA_NOT_SENT 0 # define SSL_EARLY_DATA_REJECTED 1 # define SSL_EARLY_DATA_ACCEPTED 2 @@ -1986,6 +2029,7 @@ __owur int SSL_get_early_data_status(const SSL *s); __owur int SSL_get_error(const SSL *s, int ret_code); __owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); /* This sets the 'default' SSL version that SSL_new() will create */ # ifndef OPENSSL_NO_DEPRECATED_3_0 @@ -2281,6 +2325,8 @@ void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); +int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size, + size_t hs_block_size); int SSL_set_record_padding_callback(SSL *ssl, size_t (*cb) (SSL *ssl, int type, @@ -2288,12 +2334,255 @@ int SSL_set_record_padding_callback(SSL *ssl, void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); void *SSL_get_record_padding_callback_arg(const SSL *ssl); int SSL_set_block_padding(SSL *ssl, size_t block_size); - +int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size, + size_t hs_block_size); int SSL_set_num_tickets(SSL *s, size_t num_tickets); size_t SSL_get_num_tickets(const SSL *s); int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +__owur int SSL_is_listener(SSL *ssl); +__owur SSL *SSL_get0_listener(SSL *s); +#define SSL_LISTENER_FLAG_NO_VALIDATE (1UL << 1) +__owur SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags); +__owur SSL *SSL_new_listener_from(SSL *ssl, uint64_t flags); +__owur SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags); +#define SSL_ACCEPT_CONNECTION_NO_BLOCK (1UL << 0) +__owur SSL *SSL_accept_connection(SSL *ssl, uint64_t flags); +__owur size_t SSL_get_accept_connection_queue_len(SSL *ssl); +__owur int SSL_listen(SSL *ssl); + +__owur int SSL_is_domain(SSL *s); +__owur SSL *SSL_get0_domain(SSL *s); +__owur SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags); + +#define SSL_DOMAIN_FLAG_SINGLE_THREAD (1U << 0) +#define SSL_DOMAIN_FLAG_MULTI_THREAD (1U << 1) +#define SSL_DOMAIN_FLAG_THREAD_ASSISTED (1U << 2) +#define SSL_DOMAIN_FLAG_BLOCKING (1U << 3) +#define SSL_DOMAIN_FLAG_LEGACY_BLOCKING (1U << 4) + +__owur int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t domain_flags); +__owur int SSL_CTX_get_domain_flags(const SSL_CTX *ctx, uint64_t *domain_flags); +__owur int SSL_get_domain_flags(const SSL *ssl, uint64_t *domain_flags); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +# ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +# endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + +# define SSL_VALUE_CLASS_GENERIC 0 +# define SSL_VALUE_CLASS_FEATURE_REQUEST 1 +# define SSL_VALUE_CLASS_FEATURE_PEER_REQUEST 2 +# define SSL_VALUE_CLASS_FEATURE_NEGOTIATED 3 + +# define SSL_VALUE_NONE 0 +# define SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL 1 +# define SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL 2 +# define SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL 3 +# define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL 4 +# define SSL_VALUE_QUIC_IDLE_TIMEOUT 5 +# define SSL_VALUE_EVENT_HANDLING_MODE 6 +# define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7 +# define SSL_VALUE_STREAM_WRITE_BUF_USED 8 +# define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9 + +# define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0 +# define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1 +# define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT 2 + +int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v); +int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v); + +# define SSL_get_generic_value_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_set_generic_value_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_get_feature_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_set_feature_request_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_get_feature_peer_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, (id), (v)) +# define SSL_get_feature_negotiated_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_NEGOTIATED, (id), (v)) + +# define SSL_get_quic_stream_bidi_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_bidi_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, \ + (value)) + +# define SSL_get_event_handling_mode(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) +# define SSL_set_event_handling_mode(ssl, value) \ + SSL_set_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) + +# define SSL_get_stream_write_buf_size(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_SIZE, \ + (value)) +# define SSL_get_stream_write_buf_used(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_USED, \ + (value)) +# define SSL_get_stream_write_buf_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_AVAIL, \ + (value)) + +# define SSL_POLL_EVENT_NONE 0 + +# define SSL_POLL_EVENT_F (1U << 0) /* F (Failure) */ +# define SSL_POLL_EVENT_EL (1U << 1) /* EL (Exception on Listener) */ +# define SSL_POLL_EVENT_EC (1U << 2) /* EC (Exception on Conn) */ +# define SSL_POLL_EVENT_ECD (1U << 3) /* ECD (Exception on Conn Drained) */ +# define SSL_POLL_EVENT_ER (1U << 4) /* ER (Exception on Read) */ +# define SSL_POLL_EVENT_EW (1U << 5) /* EW (Exception on Write) */ +# define SSL_POLL_EVENT_R (1U << 6) /* R (Readable) */ +# define SSL_POLL_EVENT_W (1U << 7) /* W (Writable) */ +# define SSL_POLL_EVENT_IC (1U << 8) /* IC (Incoming Connection) */ +# define SSL_POLL_EVENT_ISB (1U << 9) /* ISB (Incoming Stream: Bidi) */ +# define SSL_POLL_EVENT_ISU (1U << 10) /* ISU (Incoming Stream: Uni) */ +# define SSL_POLL_EVENT_OSB (1U << 11) /* OSB (Outgoing Stream: Bidi) */ +# define SSL_POLL_EVENT_OSU (1U << 12) /* OSU (Outgoing Stream: Uni) */ + +# define SSL_POLL_EVENT_RW (SSL_POLL_EVENT_R | SSL_POLL_EVENT_W) +# define SSL_POLL_EVENT_RE (SSL_POLL_EVENT_R | SSL_POLL_EVENT_ER) +# define SSL_POLL_EVENT_WE (SSL_POLL_EVENT_W | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_RWE (SSL_POLL_EVENT_RE | SSL_POLL_EVENT_WE) +# define SSL_POLL_EVENT_E (SSL_POLL_EVENT_EL | SSL_POLL_EVENT_EC \ + | SSL_POLL_EVENT_ER | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_IS (SSL_POLL_EVENT_ISB | SSL_POLL_EVENT_ISU) +# define SSL_POLL_EVENT_ISE (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_EC) +# define SSL_POLL_EVENT_I (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_IC) +# define SSL_POLL_EVENT_OS (SSL_POLL_EVENT_OSB | SSL_POLL_EVENT_OSU) +# define SSL_POLL_EVENT_OSE (SSL_POLL_EVENT_OS | SSL_POLL_EVENT_EC) + +typedef struct ssl_poll_item_st { + BIO_POLL_DESCRIPTOR desc; + uint64_t events, revents; +} SSL_POLL_ITEM; + +# define SSL_POLL_FLAG_NO_HANDLE_EVENTS (1U << 0) + +__owur int SSL_poll(SSL_POLL_ITEM *items, + size_t num_items, + size_t stride, + const struct timeval *timeout, + uint64_t flags, + size_t *result_count); + +static ossl_inline ossl_unused BIO_POLL_DESCRIPTOR +SSL_as_poll_descriptor(SSL *s) +{ + BIO_POLL_DESCRIPTOR d; + + d.type = BIO_POLL_DESCRIPTOR_TYPE_SSL; + d.value.ssl = s; + return d; +} + # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define SSL_cache_hit(s) SSL_session_reused(s) # endif @@ -2593,6 +2882,51 @@ void SSL_set_allow_early_data_cb(SSL *s, const char *OSSL_default_cipher_list(void); const char *OSSL_default_ciphersuites(void); +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + +/* + * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used. + */ +# define OSSL_RECORD_PROTECTION_LEVEL_NONE 0 +# define OSSL_RECORD_PROTECTION_LEVEL_EARLY 1 +# define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE 2 +# define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3 + +int SSL_set_quic_tls_cbs(SSL *s, const OSSL_DISPATCH *qtdis, void *arg); +int SSL_set_quic_tls_transport_params(SSL *s, + const unsigned char *params, + size_t params_len); + +int SSL_set_quic_tls_early_data_enabled(SSL *s, int enabled); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/x509.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/x509.h index 1f7755e5b69c75..d013458c226461 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/x509.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/x509.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -40,6 +40,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -162,16 +165,24 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) # define X509_FILETYPE_ASN1 2 # define X509_FILETYPE_DEFAULT 3 -# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 -# define X509v3_KU_NON_REPUDIATION 0x0040 -# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 -# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 -# define X509v3_KU_KEY_AGREEMENT 0x0008 -# define X509v3_KU_KEY_CERT_SIGN 0x0004 -# define X509v3_KU_CRL_SIGN 0x0002 -# define X509v3_KU_ENCIPHER_ONLY 0x0001 -# define X509v3_KU_DECIPHER_ONLY 0x8000 -# define X509v3_KU_UNDEF 0xffff +/*- + * : + * The KeyUsage BITSTRING is treated as a little-endian integer, hence bit `0` + * is 0x80, while bit `7` is 0x01 (the LSB of the integer value), bit `8` is + * then the MSB of the second octet, or 0x8000. + */ +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 /* (0) */ +# define X509v3_KU_NON_REPUDIATION 0x0040 /* (1) */ +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 /* (2) */ +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 /* (3) */ +# define X509v3_KU_KEY_AGREEMENT 0x0008 /* (4) */ +# define X509v3_KU_KEY_CERT_SIGN 0x0004 /* (5) */ +# define X509v3_KU_CRL_SIGN 0x0002 /* (6) */ +# define X509v3_KU_ENCIPHER_ONLY 0x0001 /* (7) */ +# define X509v3_KU_DECIPHER_ONLY 0x8000 /* (8) */ +# ifndef OPENSSL_NO_DEPRECATED_3_4 +# define X509v3_KU_UNDEF 0xffff /* vestigial, not used */ +# endif struct X509_algor_st { ASN1_OBJECT *algorithm; @@ -462,7 +473,12 @@ typedef struct PBKDF2PARAM_st { X509_ALGOR *prf; } PBKDF2PARAM; -#ifndef OPENSSL_NO_SCRYPT +typedef struct { + X509_ALGOR *keyDerivationFunc; + X509_ALGOR *messageAuthScheme; +} PBMAC1PARAM; + +# ifndef OPENSSL_NO_SCRYPT typedef struct SCRYPT_PARAMS_st { ASN1_OCTET_STRING *salt; ASN1_INTEGER *costParameter; @@ -470,7 +486,7 @@ typedef struct SCRYPT_PARAMS_st { ASN1_INTEGER *parallelizationParameter; ASN1_INTEGER *keyLength; } SCRYPT_PARAMS; -#endif +# endif #ifdef __cplusplus } @@ -603,6 +619,8 @@ EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); # endif @@ -651,6 +669,8 @@ EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); DECLARE_ASN1_DUP_FUNCTION(X509) @@ -884,12 +904,12 @@ int X509_REQ_get_signature_nid(const X509_REQ *req); int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); -EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); int X509_REQ_extension_nid(int nid); int *X509_REQ_get_extension_nids(void); void X509_REQ_set_extension_nids(int *nids); -STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(OSSL_FUTURE_CONST X509_REQ *req); int X509_REQ_add_extensions_nid(X509_REQ *req, const STACK_OF(X509_EXTENSION) *exts, int nid); int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); @@ -950,13 +970,14 @@ X509_REVOKED_get0_extensions(const X509_REVOKED *r); X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); -int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); -int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey); +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); int X509_chain_check_suiteb(int *perror_depth, X509 *x, STACK_OF(X509) *chain, unsigned long flags); int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); @@ -1077,6 +1098,8 @@ X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, X509_EXTENSION *ex, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_extensions(STACK_OF(X509_EXTENSION) **target, + const STACK_OF(X509_EXTENSION) *exts); int X509_get_ext_count(const X509 *x); int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); @@ -1198,9 +1221,10 @@ X509 *X509_find_by_subject(STACK_OF(X509) *sk, const X509_NAME *name); DECLARE_ASN1_FUNCTIONS(PBEPARAM) DECLARE_ASN1_FUNCTIONS(PBE2PARAM) DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) -#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(PBMAC1PARAM) +# ifndef OPENSSL_NO_SCRYPT DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) -#endif +# endif int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, const unsigned char *salt, int saltlen); @@ -1237,6 +1261,7 @@ X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, int prf_nid, int keylen, OSSL_LIB_CTX *libctx); +PBKDF2PARAM *PBMAC1_get1_pbkdf2_param(const X509_ALGOR *macalg); /* PKCS#8 utilities */ DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) @@ -1262,6 +1287,8 @@ int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len); +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, int ptype, void *pval, unsigned char *penc, int penclen); diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/x509_acert.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/x509_acert.h new file mode 100644 index 00000000000000..9dde625677f9a9 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/x509_acert.h @@ -0,0 +1,294 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/x509_acert.h.in + * + * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_X509_ACERT_H +# define OPENSSL_X509_ACERT_H +# pragma once + +# include +# include +# include + +typedef struct X509_acert_st X509_ACERT; +typedef struct X509_acert_info_st X509_ACERT_INFO; +typedef struct ossl_object_digest_info_st OSSL_OBJECT_DIGEST_INFO; +typedef struct ossl_issuer_serial_st OSSL_ISSUER_SERIAL; +typedef struct X509_acert_issuer_v2form_st X509_ACERT_ISSUER_V2FORM; + +DECLARE_ASN1_FUNCTIONS(X509_ACERT) +DECLARE_ASN1_DUP_FUNCTION(X509_ACERT) +DECLARE_ASN1_ITEM(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_OBJECT_DIGEST_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_ISSUER_SERIAL) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_ISSUER_V2FORM) + +# ifndef OPENSSL_NO_STDIO +X509_ACERT *d2i_X509_ACERT_fp(FILE *fp, X509_ACERT **acert); +int i2d_X509_ACERT_fp(FILE *fp, const X509_ACERT *acert); +# endif + +DECLARE_PEM_rw(X509_ACERT, X509_ACERT) + +X509_ACERT *d2i_X509_ACERT_bio(BIO *bp, X509_ACERT **acert); +int i2d_X509_ACERT_bio(BIO *bp, const X509_ACERT *acert); + +int X509_ACERT_sign(X509_ACERT *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_ACERT_sign_ctx(X509_ACERT *x, EVP_MD_CTX *ctx); +int X509_ACERT_verify(X509_ACERT *a, EVP_PKEY *r); + +# define X509_ACERT_VERSION_2 1 + +const GENERAL_NAMES *X509_ACERT_get0_holder_entityName(const X509_ACERT *x); +const OSSL_ISSUER_SERIAL *X509_ACERT_get0_holder_baseCertId(const X509_ACERT *x); +const OSSL_OBJECT_DIGEST_INFO * X509_ACERT_get0_holder_digest(const X509_ACERT *x); +const X509_NAME *X509_ACERT_get0_issuerName(const X509_ACERT *x); +long X509_ACERT_get_version(const X509_ACERT *x); +void X509_ACERT_get0_signature(const X509_ACERT *x, + const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_ACERT_get_signature_nid(const X509_ACERT *x); +const X509_ALGOR *X509_ACERT_get0_info_sigalg(const X509_ACERT *x); +const ASN1_INTEGER *X509_ACERT_get0_serialNumber(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notBefore(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notAfter(const X509_ACERT *x); +const ASN1_BIT_STRING *X509_ACERT_get0_issuerUID(const X509_ACERT *x); + +int X509_ACERT_print(BIO *bp, X509_ACERT *x); +int X509_ACERT_print_ex(BIO *bp, X509_ACERT *x, unsigned long nmflags, + unsigned long cflag); + +int X509_ACERT_get_attr_count(const X509_ACERT *x); +int X509_ACERT_get_attr_by_NID(const X509_ACERT *x, int nid, int lastpos); +int X509_ACERT_get_attr_by_OBJ(const X509_ACERT *x, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_ACERT_get_attr(const X509_ACERT *x, int loc); +X509_ATTRIBUTE *X509_ACERT_delete_attr(X509_ACERT *x, int loc); + +void *X509_ACERT_get_ext_d2i(const X509_ACERT *x, int nid, int *crit, int *idx); +int X509_ACERT_add1_ext_i2d(X509_ACERT *x, int nid, void *value, int crit, + unsigned long flags); +const STACK_OF(X509_EXTENSION) *X509_ACERT_get0_extensions(const X509_ACERT *x); + +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY 0 +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY_CERT 1 +# define OSSL_OBJECT_DIGEST_INFO_OTHER 2 /* must not be used in RFC 5755 profile */ +int X509_ACERT_set_version(X509_ACERT *x, long version); +void X509_ACERT_set0_holder_entityName(X509_ACERT *x, GENERAL_NAMES *name); +void X509_ACERT_set0_holder_baseCertId(X509_ACERT *x, OSSL_ISSUER_SERIAL *isss); +void X509_ACERT_set0_holder_digest(X509_ACERT *x, + OSSL_OBJECT_DIGEST_INFO *dinfo); + +int X509_ACERT_add1_attr(X509_ACERT *x, X509_ATTRIBUTE *attr); +int X509_ACERT_add1_attr_by_OBJ(X509_ACERT *x, const ASN1_OBJECT *obj, + int type, const void *bytes, int len); +int X509_ACERT_add1_attr_by_NID(X509_ACERT *x, int nid, int type, + const void *bytes, int len); +int X509_ACERT_add1_attr_by_txt(X509_ACERT *x, const char *attrname, int type, + const unsigned char *bytes, int len); +int X509_ACERT_add_attr_nconf(CONF *conf, const char *section, + X509_ACERT *acert); + +int X509_ACERT_set1_issuerName(X509_ACERT *x, const X509_NAME *name); +int X509_ACERT_set1_serialNumber(X509_ACERT *x, const ASN1_INTEGER *serial); +int X509_ACERT_set1_notBefore(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); +int X509_ACERT_set1_notAfter(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); + +void OSSL_OBJECT_DIGEST_INFO_get0_digest(const OSSL_OBJECT_DIGEST_INFO *o, + int *digestedObjectType, + const X509_ALGOR **digestAlgorithm, + const ASN1_BIT_STRING **digest); + +int OSSL_OBJECT_DIGEST_INFO_set1_digest(OSSL_OBJECT_DIGEST_INFO *o, + int digestedObjectType, + X509_ALGOR *digestAlgorithm, + ASN1_BIT_STRING *digest); + +const X509_NAME *OSSL_ISSUER_SERIAL_get0_issuer(const OSSL_ISSUER_SERIAL *isss); +const ASN1_INTEGER *OSSL_ISSUER_SERIAL_get0_serial(const OSSL_ISSUER_SERIAL *isss); +const ASN1_BIT_STRING *OSSL_ISSUER_SERIAL_get0_issuerUID(const OSSL_ISSUER_SERIAL *isss); + +int OSSL_ISSUER_SERIAL_set1_issuer(OSSL_ISSUER_SERIAL *isss, + const X509_NAME *issuer); +int OSSL_ISSUER_SERIAL_set1_serial(OSSL_ISSUER_SERIAL *isss, + const ASN1_INTEGER *serial); +int OSSL_ISSUER_SERIAL_set1_issuerUID(OSSL_ISSUER_SERIAL *isss, + const ASN1_BIT_STRING *uid); + +# define OSSL_IETFAS_OCTETS 0 +# define OSSL_IETFAS_OID 1 +# define OSSL_IETFAS_STRING 2 + +typedef struct OSSL_IETF_ATTR_SYNTAX_VALUE_st OSSL_IETF_ATTR_SYNTAX_VALUE; +typedef struct OSSL_IETF_ATTR_SYNTAX_st OSSL_IETF_ATTR_SYNTAX; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_value(sk, idx) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new(cmp) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_null() ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (n)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete(sk, i) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (i))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete_ptr(sk, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_pop(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_shift(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_shift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk),ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), (idx)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set(sk, idx, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_set(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), pnum) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_dup(sk) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_copyfunc_type(copyfunc), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set_cmp_func(sk, cmp) ((sk_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) + + +DECLARE_ASN1_ITEM(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX) + +const GENERAL_NAMES * +OSSL_IETF_ATTR_SYNTAX_get0_policyAuthority(const OSSL_IETF_ATTR_SYNTAX *a); +void OSSL_IETF_ATTR_SYNTAX_set0_policyAuthority(OSSL_IETF_ATTR_SYNTAX *a, + GENERAL_NAMES *names); + +int OSSL_IETF_ATTR_SYNTAX_get_value_num(const OSSL_IETF_ATTR_SYNTAX *a); +void *OSSL_IETF_ATTR_SYNTAX_get0_value(const OSSL_IETF_ATTR_SYNTAX *a, + int ind, int *type); +int OSSL_IETF_ATTR_SYNTAX_add1_value(OSSL_IETF_ATTR_SYNTAX *a, int type, + void *data); +int OSSL_IETF_ATTR_SYNTAX_print(BIO *bp, OSSL_IETF_ATTR_SYNTAX *a, int indent); + +struct TARGET_CERT_st { + OSSL_ISSUER_SERIAL *targetCertificate; + GENERAL_NAME *targetName; + OSSL_OBJECT_DIGEST_INFO *certDigestInfo; +}; + +typedef struct TARGET_CERT_st OSSL_TARGET_CERT; + +# define OSSL_TGT_TARGET_NAME 0 +# define OSSL_TGT_TARGET_GROUP 1 +# define OSSL_TGT_TARGET_CERT 2 + +typedef struct TARGET_st { + int type; + union { + GENERAL_NAME *targetName; + GENERAL_NAME *targetGroup; + OSSL_TARGET_CERT *targetCert; + } choice; +} OSSL_TARGET; + +typedef STACK_OF(OSSL_TARGET) OSSL_TARGETS; +typedef STACK_OF(OSSL_TARGETS) OSSL_TARGETING_INFORMATION; + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGET, OSSL_TARGET, OSSL_TARGET) +#define sk_OSSL_TARGET_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_value(sk, idx) ((OSSL_TARGET *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGET_sk_type(sk), (idx))) +#define sk_OSSL_TARGET_new(cmp) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new(ossl_check_OSSL_TARGET_compfunc_type(cmp))) +#define sk_OSSL_TARGET_new_null() ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGET_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGET_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGET_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGET_sk_type(sk), (n)) +#define sk_OSSL_TARGET_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_delete(sk, i) ((OSSL_TARGET *)OPENSSL_sk_delete(ossl_check_OSSL_TARGET_sk_type(sk), (i))) +#define sk_OSSL_TARGET_delete_ptr(sk, ptr) ((OSSL_TARGET *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_pop(sk) ((OSSL_TARGET *)OPENSSL_sk_pop(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_shift(sk) ((OSSL_TARGET *)OPENSSL_sk_shift(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGET_sk_type(sk),ossl_check_OSSL_TARGET_freefunc_type(freefunc)) +#define sk_OSSL_TARGET_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), (idx)) +#define sk_OSSL_TARGET_set(sk, idx, ptr) ((OSSL_TARGET *)OPENSSL_sk_set(ossl_check_OSSL_TARGET_sk_type(sk), (idx), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), pnum) +#define sk_OSSL_TARGET_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_dup(sk) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_copyfunc_type(copyfunc), ossl_check_OSSL_TARGET_freefunc_type(freefunc))) +#define sk_OSSL_TARGET_set_cmp_func(sk, cmp) ((sk_OSSL_TARGET_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGETS, OSSL_TARGETS, OSSL_TARGETS) +#define sk_OSSL_TARGETS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_value(sk, idx) ((OSSL_TARGETS *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGETS_sk_type(sk), (idx))) +#define sk_OSSL_TARGETS_new(cmp) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new(ossl_check_OSSL_TARGETS_compfunc_type(cmp))) +#define sk_OSSL_TARGETS_new_null() ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGETS_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGETS_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGETS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGETS_sk_type(sk), (n)) +#define sk_OSSL_TARGETS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_delete(sk, i) ((OSSL_TARGETS *)OPENSSL_sk_delete(ossl_check_OSSL_TARGETS_sk_type(sk), (i))) +#define sk_OSSL_TARGETS_delete_ptr(sk, ptr) ((OSSL_TARGETS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_pop(sk) ((OSSL_TARGETS *)OPENSSL_sk_pop(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_shift(sk) ((OSSL_TARGETS *)OPENSSL_sk_shift(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGETS_sk_type(sk),ossl_check_OSSL_TARGETS_freefunc_type(freefunc)) +#define sk_OSSL_TARGETS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), (idx)) +#define sk_OSSL_TARGETS_set(sk, idx, ptr) ((OSSL_TARGETS *)OPENSSL_sk_set(ossl_check_OSSL_TARGETS_sk_type(sk), (idx), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), pnum) +#define sk_OSSL_TARGETS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_dup(sk) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_copyfunc_type(copyfunc), ossl_check_OSSL_TARGETS_freefunc_type(freefunc))) +#define sk_OSSL_TARGETS_set_cmp_func(sk, cmp) ((sk_OSSL_TARGETS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_compfunc_type(cmp))) + + +DECLARE_ASN1_FUNCTIONS(OSSL_TARGET) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETS) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETING_INFORMATION) + +typedef STACK_OF(OSSL_ISSUER_SERIAL) OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL) +#define sk_OSSL_ISSUER_SERIAL_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_value(sk, idx) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_value(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), (idx))) +#define sk_OSSL_ISSUER_SERIAL_new(cmp) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) +#define sk_OSSL_ISSUER_SERIAL_new_null() ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ISSUER_SERIAL_new_reserve(cmp, n) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp), (n))) +#define sk_OSSL_ISSUER_SERIAL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (n)) +#define sk_OSSL_ISSUER_SERIAL_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_delete(sk, i) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (i))) +#define sk_OSSL_ISSUER_SERIAL_delete_ptr(sk, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_pop(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_pop(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_shift(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_shift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk),ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc)) +#define sk_OSSL_ISSUER_SERIAL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), (idx)) +#define sk_OSSL_ISSUER_SERIAL_set(sk, idx, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_set(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (idx), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), pnum) +#define sk_OSSL_ISSUER_SERIAL_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_dup(sk) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_copyfunc_type(copyfunc), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc))) +#define sk_OSSL_ISSUER_SERIAL_set_cmp_func(sk, cmp) ((sk_OSSL_ISSUER_SERIAL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) + + +#endif diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/x509_vfy.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/x509_vfy.h index 29b0e147adcab1..c9bdc3b39d685d 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/x509_vfy.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/x509_vfy.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509_vfy.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -411,6 +411,7 @@ X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ # define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 # define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 # define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +# define X509_V_ERR_RPK_UNTRUSTED 95 /* Certificate verify flags */ # ifndef OPENSSL_NO_DEPRECATED_1_1_0 @@ -491,71 +492,72 @@ int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); X509_STORE *X509_STORE_new(void); -void X509_STORE_free(X509_STORE *v); -int X509_STORE_lock(X509_STORE *ctx); -int X509_STORE_unlock(X509_STORE *ctx); -int X509_STORE_up_ref(X509_STORE *v); -STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *v); -STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *st); -STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get1_objects(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, const X509_NAME *nm); STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, const X509_NAME *nm); -int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); -int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); -int X509_STORE_set_trust(X509_STORE *ctx, int trust); -int X509_STORE_set1_param(X509_STORE *ctx, const X509_VERIFY_PARAM *pm); -X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *ctx); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); -void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); #define X509_STORE_set_verify_func(ctx, func) \ X509_STORE_set_verify((ctx),(func)) void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, X509_STORE_CTX_verify_fn verify); -X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *ctx); -void X509_STORE_set_verify_cb(X509_STORE *ctx, +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, X509_STORE_CTX_verify_cb verify_cb); # define X509_STORE_set_verify_cb_func(ctx,func) \ X509_STORE_set_verify_cb((ctx),(func)) -X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *ctx); -void X509_STORE_set_get_issuer(X509_STORE *ctx, +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, X509_STORE_CTX_get_issuer_fn get_issuer); -X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *ctx); -void X509_STORE_set_check_issued(X509_STORE *ctx, +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, X509_STORE_CTX_check_issued_fn check_issued); -X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *ctx); -void X509_STORE_set_check_revocation(X509_STORE *ctx, +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, X509_STORE_CTX_check_revocation_fn check_revocation); X509_STORE_CTX_check_revocation_fn - X509_STORE_get_check_revocation(const X509_STORE *ctx); -void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, X509_STORE_CTX_get_crl_fn get_crl); -X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *ctx); -void X509_STORE_set_check_crl(X509_STORE *ctx, +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, X509_STORE_CTX_check_crl_fn check_crl); -X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *ctx); -void X509_STORE_set_cert_crl(X509_STORE *ctx, +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, X509_STORE_CTX_cert_crl_fn cert_crl); -X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *ctx); -void X509_STORE_set_check_policy(X509_STORE *ctx, +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, X509_STORE_CTX_check_policy_fn check_policy); -X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *ctx); -void X509_STORE_set_lookup_certs(X509_STORE *ctx, +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, X509_STORE_CTX_lookup_certs_fn lookup_certs); -X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *ctx); -void X509_STORE_set_lookup_crls(X509_STORE *ctx, +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, X509_STORE_CTX_lookup_crls_fn lookup_crls); #define X509_STORE_set_lookup_crls_cb(ctx, func) \ X509_STORE_set_lookup_crls((ctx), (func)) -X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *ctx); -void X509_STORE_set_cleanup(X509_STORE *ctx, +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, X509_STORE_CTX_cleanup_fn cleanup); -X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); #define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) -int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); -void *X509_STORE_get_ex_data(const X509_STORE *ctx, int idx); +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); X509_STORE_CTX *X509_STORE_CTX_new(void); @@ -565,11 +567,14 @@ int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); void X509_STORE_CTX_free(X509_STORE_CTX *ctx); int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY* rpk); void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, @@ -579,6 +584,8 @@ X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); @@ -600,7 +607,7 @@ X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); # define X509_STORE_get1_crl X509_STORE_CTX_get1_crls #endif -X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); X509_LOOKUP_METHOD *X509_LOOKUP_file(void); X509_LOOKUP_METHOD *X509_LOOKUP_store(void); @@ -685,8 +692,8 @@ X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( const X509_LOOKUP_METHOD *method); -int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); -int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, @@ -730,23 +737,21 @@ void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); -int X509_STORE_load_file(X509_STORE *ctx, const char *file); -int X509_STORE_load_path(X509_STORE *ctx, const char *path); -int X509_STORE_load_store(X509_STORE *ctx, const char *store); -int X509_STORE_load_locations(X509_STORE *ctx, - const char *file, - const char *dir); -int X509_STORE_set_default_paths(X509_STORE *ctx); +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); -int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file, +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_store_ex(X509_STORE *ctx, const char *store, +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file, - const char *dir, OSSL_LIB_CTX *libctx, - const char *propq); -int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OSSL_LIB_CTX *libctx, - const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); #define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) @@ -764,6 +769,7 @@ X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); @@ -773,6 +779,8 @@ int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); @@ -804,6 +812,7 @@ int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, unsigned long flags); unsigned long X509_VERIFY_PARAM_get_flags(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_get_purpose(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/x509v3.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/x509v3.h index 20b67455f2061d..b8dabac35a4915 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/x509v3.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/x509v3.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509v3.h.in * - * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -146,6 +149,11 @@ typedef struct BASIC_CONSTRAINTS_st { ASN1_INTEGER *pathlen; } BASIC_CONSTRAINTS; +typedef struct OSSL_BASIC_ATTR_CONSTRAINTS_st { + int authority; + ASN1_INTEGER *pathlen; +} OSSL_BASIC_ATTR_CONSTRAINTS; + typedef struct PKEY_USAGE_PERIOD_st { ASN1_GENERALIZEDTIME *notBefore; ASN1_GENERALIZEDTIME *notAfter; @@ -198,6 +206,8 @@ typedef struct ACCESS_DESCRIPTION_st { GENERAL_NAME *location; } ACCESS_DESCRIPTION; +int GENERAL_NAME_set1_X509_NAME(GENERAL_NAME **tgt, const X509_NAME *src); + SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) #define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) #define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) @@ -294,6 +304,7 @@ typedef struct DIST_POINT_NAME_st { /* If relativename then this contains the full distribution point name */ X509_NAME *dpname; } DIST_POINT_NAME; +DECLARE_ASN1_DUP_FUNCTION(DIST_POINT_NAME) /* All existing reasons */ # define CRLDP_ALL_REASONS 0x807f @@ -659,15 +670,16 @@ struct ISSUING_DIST_POINT_st { # define EXFLAG_SAN_CRITICAL 0x80000 # define EXFLAG_NO_FINGERPRINT 0x100000 -# define KU_DIGITAL_SIGNATURE 0x0080 -# define KU_NON_REPUDIATION 0x0040 -# define KU_KEY_ENCIPHERMENT 0x0020 -# define KU_DATA_ENCIPHERMENT 0x0010 -# define KU_KEY_AGREEMENT 0x0008 -# define KU_KEY_CERT_SIGN 0x0004 -# define KU_CRL_SIGN 0x0002 -# define KU_ENCIPHER_ONLY 0x0001 -# define KU_DECIPHER_ONLY 0x8000 +/* https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3 */ +# define KU_DIGITAL_SIGNATURE X509v3_KU_DIGITAL_SIGNATURE +# define KU_NON_REPUDIATION X509v3_KU_NON_REPUDIATION +# define KU_KEY_ENCIPHERMENT X509v3_KU_KEY_ENCIPHERMENT +# define KU_DATA_ENCIPHERMENT X509v3_KU_DATA_ENCIPHERMENT +# define KU_KEY_AGREEMENT X509v3_KU_KEY_AGREEMENT +# define KU_KEY_CERT_SIGN X509v3_KU_KEY_CERT_SIGN +# define KU_CRL_SIGN X509v3_KU_CRL_SIGN +# define KU_ENCIPHER_ONLY X509v3_KU_ENCIPHER_ONLY +# define KU_DECIPHER_ONLY X509v3_KU_DECIPHER_ONLY # define NS_SSL_CLIENT 0x80 # define NS_SSL_SERVER 0x40 @@ -729,7 +741,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) #define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) - +# define X509_PURPOSE_DEFAULT_ANY 0 # define X509_PURPOSE_SSL_CLIENT 1 # define X509_PURPOSE_SSL_SERVER 2 # define X509_PURPOSE_NS_SSL_SERVER 3 @@ -739,9 +751,10 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509_PURPOSE_ANY 7 # define X509_PURPOSE_OCSP_HELPER 8 # define X509_PURPOSE_TIMESTAMP_SIGN 9 +# define X509_PURPOSE_CODE_SIGN 10 # define X509_PURPOSE_MIN 1 -# define X509_PURPOSE_MAX 9 +# define X509_PURPOSE_MAX 10 /* Flags for X509V3_EXT_print() */ @@ -767,6 +780,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509V3_ADD_SILENT 0x10 DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) +DECLARE_ASN1_FUNCTIONS(OSSL_BASIC_ATTR_CONSTRAINTS) DECLARE_ASN1_FUNCTIONS(SXNET) DECLARE_ASN1_FUNCTIONS(SXNETID) @@ -976,7 +990,6 @@ int X509V3_extensions_print(BIO *out, const char *title, int X509_check_ca(X509 *x); int X509_check_purpose(X509 *x, int id, int ca); int X509_supported_extension(X509_EXTENSION *ex); -int X509_PURPOSE_set(int *p, int purpose); int X509_check_issued(X509 *issuer, X509 *subject); int X509_check_akid(const X509 *issuer, const AUTHORITY_KEYID *akid); void X509_set_proxy_flag(X509 *x); @@ -992,22 +1005,26 @@ const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); int X509_PURPOSE_get_count(void); -X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_unused_id(OSSL_LIB_CTX *libctx); int X509_PURPOSE_get_by_sname(const char *sname); int X509_PURPOSE_get_by_id(int id); int X509_PURPOSE_add(int id, int trust, int flags, int (*ck) (const X509_PURPOSE *, const X509 *, int), const char *name, const char *sname, void *arg); +void X509_PURPOSE_cleanup(void); + +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_id(const X509_PURPOSE *); char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); -void X509_PURPOSE_cleanup(void); -int X509_PURPOSE_get_id(const X509_PURPOSE *); +int X509_PURPOSE_set(int *p, int purpose); STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); + /* Flags for X509_check_* functions */ /* @@ -1444,6 +1461,507 @@ const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( void PROFESSION_INFO_set0_registrationNumber( PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); +int OSSL_GENERAL_NAMES_print(BIO *out, GENERAL_NAMES *gens, int indent); + +typedef STACK_OF(X509_ATTRIBUTE) OSSL_ATTRIBUTES_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTES_SYNTAX) + +typedef STACK_OF(USERNOTICE) OSSL_USER_NOTICE_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_USER_NOTICE_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(USERNOTICE, USERNOTICE, USERNOTICE) +#define sk_USERNOTICE_num(sk) OPENSSL_sk_num(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_value(sk, idx) ((USERNOTICE *)OPENSSL_sk_value(ossl_check_const_USERNOTICE_sk_type(sk), (idx))) +#define sk_USERNOTICE_new(cmp) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new(ossl_check_USERNOTICE_compfunc_type(cmp))) +#define sk_USERNOTICE_new_null() ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_null()) +#define sk_USERNOTICE_new_reserve(cmp, n) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_reserve(ossl_check_USERNOTICE_compfunc_type(cmp), (n))) +#define sk_USERNOTICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_USERNOTICE_sk_type(sk), (n)) +#define sk_USERNOTICE_free(sk) OPENSSL_sk_free(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_zero(sk) OPENSSL_sk_zero(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_delete(sk, i) ((USERNOTICE *)OPENSSL_sk_delete(ossl_check_USERNOTICE_sk_type(sk), (i))) +#define sk_USERNOTICE_delete_ptr(sk, ptr) ((USERNOTICE *)OPENSSL_sk_delete_ptr(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_pop(sk) ((USERNOTICE *)OPENSSL_sk_pop(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_shift(sk) ((USERNOTICE *)OPENSSL_sk_shift(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_USERNOTICE_sk_type(sk),ossl_check_USERNOTICE_freefunc_type(freefunc)) +#define sk_USERNOTICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), (idx)) +#define sk_USERNOTICE_set(sk, idx, ptr) ((USERNOTICE *)OPENSSL_sk_set(ossl_check_USERNOTICE_sk_type(sk), (idx), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), pnum) +#define sk_USERNOTICE_sort(sk) OPENSSL_sk_sort(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_dup(sk) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_dup(ossl_check_const_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_deep_copy(ossl_check_const_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_copyfunc_type(copyfunc), ossl_check_USERNOTICE_freefunc_type(freefunc))) +#define sk_USERNOTICE_set_cmp_func(sk, cmp) ((sk_USERNOTICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_compfunc_type(cmp))) + + +typedef struct OSSL_ROLE_SPEC_CERT_ID_st { + GENERAL_NAME *roleName; + GENERAL_NAME *roleCertIssuer; + ASN1_INTEGER *roleCertSerialNumber; + GENERAL_NAMES *roleCertLocator; +} OSSL_ROLE_SPEC_CERT_ID; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID) +#define sk_OSSL_ROLE_SPEC_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_value(sk, idx) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_value(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new(cmp) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_null() ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_reserve(cmp, n) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp), (n))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (n)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete(sk, i) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (i))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete_ptr(sk, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_pop(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_shift(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_shift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk),ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), (idx)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set(sk, idx, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_set(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), pnum) +#define sk_OSSL_ROLE_SPEC_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_dup(sk) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_copyfunc_type(copyfunc), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set_cmp_func(sk, cmp) ((sk_OSSL_ROLE_SPEC_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) + + +typedef STACK_OF(OSSL_ROLE_SPEC_CERT_ID) OSSL_ROLE_SPEC_CERT_ID_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID_SYNTAX) +typedef struct OSSL_HASH_st { + X509_ALGOR *algorithmIdentifier; + ASN1_BIT_STRING *hashValue; +} OSSL_HASH; + +typedef struct OSSL_INFO_SYNTAX_POINTER_st { + GENERAL_NAMES *name; + OSSL_HASH *hash; +} OSSL_INFO_SYNTAX_POINTER; + +# define OSSL_INFO_SYNTAX_TYPE_CONTENT 0 +# define OSSL_INFO_SYNTAX_TYPE_POINTER 1 + +typedef struct OSSL_INFO_SYNTAX_st { + int type; + union { + ASN1_STRING *content; + OSSL_INFO_SYNTAX_POINTER *pointer; + } choice; +} OSSL_INFO_SYNTAX; + +typedef struct OSSL_PRIVILEGE_POLICY_ID_st { + ASN1_OBJECT *privilegePolicy; + OSSL_INFO_SYNTAX *privPolSyntax; +} OSSL_PRIVILEGE_POLICY_ID; + +typedef struct OSSL_ATTRIBUTE_DESCRIPTOR_st { + ASN1_OBJECT *identifier; + ASN1_STRING *attributeSyntax; + ASN1_UTF8STRING *name; + ASN1_UTF8STRING *description; + OSSL_PRIVILEGE_POLICY_ID *dominationRule; +} OSSL_ATTRIBUTE_DESCRIPTOR; + +DECLARE_ASN1_FUNCTIONS(OSSL_HASH) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX_POINTER) +DECLARE_ASN1_FUNCTIONS(OSSL_PRIVILEGE_POLICY_ID) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_DESCRIPTOR) + +typedef struct OSSL_TIME_SPEC_ABSOLUTE_st { + ASN1_GENERALIZEDTIME *startTime; + ASN1_GENERALIZEDTIME *endTime; +} OSSL_TIME_SPEC_ABSOLUTE; + +typedef struct OSSL_DAY_TIME_st { + ASN1_INTEGER *hour; + ASN1_INTEGER *minute; + ASN1_INTEGER *second; +} OSSL_DAY_TIME; + +typedef struct OSSL_DAY_TIME_BAND_st { + OSSL_DAY_TIME *startDayTime; + OSSL_DAY_TIME *endDayTime; +} OSSL_DAY_TIME_BAND; + +# define OSSL_NAMED_DAY_TYPE_INT 0 +# define OSSL_NAMED_DAY_TYPE_BIT 1 +# define OSSL_NAMED_DAY_INT_SUN 1 +# define OSSL_NAMED_DAY_INT_MON 2 +# define OSSL_NAMED_DAY_INT_TUE 3 +# define OSSL_NAMED_DAY_INT_WED 4 +# define OSSL_NAMED_DAY_INT_THU 5 +# define OSSL_NAMED_DAY_INT_FRI 6 +# define OSSL_NAMED_DAY_INT_SAT 7 +# define OSSL_NAMED_DAY_BIT_SUN 0 +# define OSSL_NAMED_DAY_BIT_MON 1 +# define OSSL_NAMED_DAY_BIT_TUE 2 +# define OSSL_NAMED_DAY_BIT_WED 3 +# define OSSL_NAMED_DAY_BIT_THU 4 +# define OSSL_NAMED_DAY_BIT_FRI 5 +# define OSSL_NAMED_DAY_BIT_SAT 6 + +typedef struct OSSL_NAMED_DAY_st { + int type; + union { + ASN1_INTEGER *intNamedDays; + ASN1_BIT_STRING *bitNamedDays; + } choice; +} OSSL_NAMED_DAY; + +# define OSSL_TIME_SPEC_X_DAY_OF_FIRST 0 +# define OSSL_TIME_SPEC_X_DAY_OF_SECOND 1 +# define OSSL_TIME_SPEC_X_DAY_OF_THIRD 2 +# define OSSL_TIME_SPEC_X_DAY_OF_FOURTH 3 +# define OSSL_TIME_SPEC_X_DAY_OF_FIFTH 4 + +typedef struct OSSL_TIME_SPEC_X_DAY_OF_st { + int type; + union { + OSSL_NAMED_DAY *first; + OSSL_NAMED_DAY *second; + OSSL_NAMED_DAY *third; + OSSL_NAMED_DAY *fourth; + OSSL_NAMED_DAY *fifth; + } choice; +} OSSL_TIME_SPEC_X_DAY_OF; + +# define OSSL_TIME_SPEC_DAY_TYPE_INT 0 +# define OSSL_TIME_SPEC_DAY_TYPE_BIT 1 +# define OSSL_TIME_SPEC_DAY_TYPE_DAY_OF 2 +# define OSSL_TIME_SPEC_DAY_BIT_SUN 0 +# define OSSL_TIME_SPEC_DAY_BIT_MON 1 +# define OSSL_TIME_SPEC_DAY_BIT_TUE 2 +# define OSSL_TIME_SPEC_DAY_BIT_WED 3 +# define OSSL_TIME_SPEC_DAY_BIT_THU 4 +# define OSSL_TIME_SPEC_DAY_BIT_FRI 5 +# define OSSL_TIME_SPEC_DAY_BIT_SAT 6 +# define OSSL_TIME_SPEC_DAY_INT_SUN 1 +# define OSSL_TIME_SPEC_DAY_INT_MON 2 +# define OSSL_TIME_SPEC_DAY_INT_TUE 3 +# define OSSL_TIME_SPEC_DAY_INT_WED 4 +# define OSSL_TIME_SPEC_DAY_INT_THU 5 +# define OSSL_TIME_SPEC_DAY_INT_FRI 6 +# define OSSL_TIME_SPEC_DAY_INT_SAT 7 + +typedef struct OSSL_TIME_SPEC_DAY_st { + int type; + union { + STACK_OF(ASN1_INTEGER) *intDay; + ASN1_BIT_STRING *bitDay; + OSSL_TIME_SPEC_X_DAY_OF *dayOf; + } choice; +} OSSL_TIME_SPEC_DAY; + +# define OSSL_TIME_SPEC_WEEKS_TYPE_ALL 0 +# define OSSL_TIME_SPEC_WEEKS_TYPE_INT 1 +# define OSSL_TIME_SPEC_WEEKS_TYPE_BIT 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_1 0 +# define OSSL_TIME_SPEC_BIT_WEEKS_2 1 +# define OSSL_TIME_SPEC_BIT_WEEKS_3 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_4 3 +# define OSSL_TIME_SPEC_BIT_WEEKS_5 4 + +typedef struct OSSL_TIME_SPEC_WEEKS_st { + int type; + union { + ASN1_NULL *allWeeks; + STACK_OF(ASN1_INTEGER) *intWeek; + ASN1_BIT_STRING *bitWeek; + } choice; +} OSSL_TIME_SPEC_WEEKS; + +# define OSSL_TIME_SPEC_MONTH_TYPE_ALL 0 +# define OSSL_TIME_SPEC_MONTH_TYPE_INT 1 +# define OSSL_TIME_SPEC_MONTH_TYPE_BIT 2 +# define OSSL_TIME_SPEC_INT_MONTH_JAN 1 +# define OSSL_TIME_SPEC_INT_MONTH_FEB 2 +# define OSSL_TIME_SPEC_INT_MONTH_MAR 3 +# define OSSL_TIME_SPEC_INT_MONTH_APR 4 +# define OSSL_TIME_SPEC_INT_MONTH_MAY 5 +# define OSSL_TIME_SPEC_INT_MONTH_JUN 6 +# define OSSL_TIME_SPEC_INT_MONTH_JUL 7 +# define OSSL_TIME_SPEC_INT_MONTH_AUG 8 +# define OSSL_TIME_SPEC_INT_MONTH_SEP 9 +# define OSSL_TIME_SPEC_INT_MONTH_OCT 10 +# define OSSL_TIME_SPEC_INT_MONTH_NOV 11 +# define OSSL_TIME_SPEC_INT_MONTH_DEC 12 +# define OSSL_TIME_SPEC_BIT_MONTH_JAN 0 +# define OSSL_TIME_SPEC_BIT_MONTH_FEB 1 +# define OSSL_TIME_SPEC_BIT_MONTH_MAR 2 +# define OSSL_TIME_SPEC_BIT_MONTH_APR 3 +# define OSSL_TIME_SPEC_BIT_MONTH_MAY 4 +# define OSSL_TIME_SPEC_BIT_MONTH_JUN 5 +# define OSSL_TIME_SPEC_BIT_MONTH_JUL 6 +# define OSSL_TIME_SPEC_BIT_MONTH_AUG 7 +# define OSSL_TIME_SPEC_BIT_MONTH_SEP 8 +# define OSSL_TIME_SPEC_BIT_MONTH_OCT 9 +# define OSSL_TIME_SPEC_BIT_MONTH_NOV 10 +# define OSSL_TIME_SPEC_BIT_MONTH_DEC 11 + +typedef struct OSSL_TIME_SPEC_MONTH_st { + int type; + union { + ASN1_NULL *allMonths; + STACK_OF(ASN1_INTEGER) *intMonth; + ASN1_BIT_STRING *bitMonth; + } choice; +} OSSL_TIME_SPEC_MONTH; + +typedef struct OSSL_TIME_PERIOD_st { + STACK_OF(OSSL_DAY_TIME_BAND) *timesOfDay; + OSSL_TIME_SPEC_DAY *days; + OSSL_TIME_SPEC_WEEKS *weeks; + OSSL_TIME_SPEC_MONTH *months; + STACK_OF(ASN1_INTEGER) *years; +} OSSL_TIME_PERIOD; + +# define OSSL_TIME_SPEC_TIME_TYPE_ABSOLUTE 0 +# define OSSL_TIME_SPEC_TIME_TYPE_PERIODIC 1 + +typedef struct OSSL_TIME_SPEC_TIME_st { + int type; + union { + OSSL_TIME_SPEC_ABSOLUTE *absolute; + STACK_OF(OSSL_TIME_PERIOD) *periodic; + } choice; +} OSSL_TIME_SPEC_TIME; + +typedef struct OSSL_TIME_SPEC_st { + OSSL_TIME_SPEC_TIME *time; + ASN1_BOOLEAN notThisTime; + ASN1_INTEGER *timeZone; +} OSSL_TIME_SPEC; + +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME_BAND) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_WEEKS) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_MONTH) +DECLARE_ASN1_FUNCTIONS(OSSL_NAMED_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_X_DAY_OF) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_ABSOLUTE) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_PERIOD) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TIME_PERIOD, OSSL_TIME_PERIOD, OSSL_TIME_PERIOD) +#define sk_OSSL_TIME_PERIOD_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_value(sk, idx) ((OSSL_TIME_PERIOD *)OPENSSL_sk_value(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), (idx))) +#define sk_OSSL_TIME_PERIOD_new(cmp) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) +#define sk_OSSL_TIME_PERIOD_new_null() ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TIME_PERIOD_new_reserve(cmp, n) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp), (n))) +#define sk_OSSL_TIME_PERIOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (n)) +#define sk_OSSL_TIME_PERIOD_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_delete(sk, i) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (i))) +#define sk_OSSL_TIME_PERIOD_delete_ptr(sk, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_pop(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_pop(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_shift(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_shift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk),ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc)) +#define sk_OSSL_TIME_PERIOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), (idx)) +#define sk_OSSL_TIME_PERIOD_set(sk, idx, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_set(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (idx), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), pnum) +#define sk_OSSL_TIME_PERIOD_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_dup(sk) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_copyfunc_type(copyfunc), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc))) +#define sk_OSSL_TIME_PERIOD_set_cmp_func(sk, cmp) ((sk_OSSL_TIME_PERIOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND) +#define sk_OSSL_DAY_TIME_BAND_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_value(sk, idx) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_value(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), (idx))) +#define sk_OSSL_DAY_TIME_BAND_new(cmp) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) +#define sk_OSSL_DAY_TIME_BAND_new_null() ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_null()) +#define sk_OSSL_DAY_TIME_BAND_new_reserve(cmp, n) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp), (n))) +#define sk_OSSL_DAY_TIME_BAND_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (n)) +#define sk_OSSL_DAY_TIME_BAND_free(sk) OPENSSL_sk_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_delete(sk, i) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (i))) +#define sk_OSSL_DAY_TIME_BAND_delete_ptr(sk, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_pop(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_pop(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_shift(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_shift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk),ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc)) +#define sk_OSSL_DAY_TIME_BAND_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), (idx)) +#define sk_OSSL_DAY_TIME_BAND_set(sk, idx, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_set(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (idx), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), pnum) +#define sk_OSSL_DAY_TIME_BAND_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_dup(sk) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_dup(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_copyfunc_type(copyfunc), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc))) +#define sk_OSSL_DAY_TIME_BAND_set_cmp_func(sk, cmp) ((sk_OSSL_DAY_TIME_BAND_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) + + +/* Attribute Type and Value */ +typedef struct atav_st { + ASN1_OBJECT *type; + ASN1_TYPE *value; +} OSSL_ATAV; + +typedef struct ATTRIBUTE_TYPE_MAPPING_st { + ASN1_OBJECT *local; + ASN1_OBJECT *remote; +} OSSL_ATTRIBUTE_TYPE_MAPPING; + +typedef struct ATTRIBUTE_VALUE_MAPPING_st { + OSSL_ATAV *local; + OSSL_ATAV *remote; +} OSSL_ATTRIBUTE_VALUE_MAPPING; + +# define OSSL_ATTR_MAP_TYPE 0 +# define OSSL_ATTR_MAP_VALUE 1 + +typedef struct ATTRIBUTE_MAPPING_st { + int type; + union { + OSSL_ATTRIBUTE_TYPE_MAPPING *typeMappings; + OSSL_ATTRIBUTE_VALUE_MAPPING *typeValueMappings; + } choice; +} OSSL_ATTRIBUTE_MAPPING; + +typedef STACK_OF(OSSL_ATTRIBUTE_MAPPING) OSSL_ATTRIBUTE_MAPPINGS; +DECLARE_ASN1_FUNCTIONS(OSSL_ATAV) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_TYPE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_VALUE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPINGS) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING) +#define sk_OSSL_ATTRIBUTE_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_value(sk, idx) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_value(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new(cmp) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_null() ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_reserve(cmp, n) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp), (n))) +#define sk_OSSL_ATTRIBUTE_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (n)) +#define sk_OSSL_ATTRIBUTE_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete(sk, i) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (i))) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete_ptr(sk, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_pop(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_shift(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_shift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk),ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc)) +#define sk_OSSL_ATTRIBUTE_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), (idx)) +#define sk_OSSL_ATTRIBUTE_MAPPING_set(sk, idx, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_set(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), pnum) +#define sk_OSSL_ATTRIBUTE_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_dup(sk) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_copyfunc_type(copyfunc), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc))) +#define sk_OSSL_ATTRIBUTE_MAPPING_set_cmp_func(sk, cmp) ((sk_OSSL_ATTRIBUTE_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) + + +# define OSSL_AAA_ATTRIBUTE_TYPE 0 +# define OSSL_AAA_ATTRIBUTE_VALUES 1 + +typedef struct ALLOWED_ATTRIBUTES_CHOICE_st { + int type; + union { + ASN1_OBJECT *attributeType; + X509_ATTRIBUTE *attributeTypeandValues; + } choice; +} OSSL_ALLOWED_ATTRIBUTES_CHOICE; + +typedef struct ALLOWED_ATTRIBUTES_ITEM_st { + STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *attributes; + GENERAL_NAME *holderDomain; +} OSSL_ALLOWED_ATTRIBUTES_ITEM; + +typedef STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) OSSL_ALLOWED_ATTRIBUTES_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_CHOICE) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_ITEM) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) + + +typedef struct AA_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + int dp_reasons; + ASN1_BOOLEAN indirectCRL; + ASN1_BOOLEAN containsUserAttributeCerts; + ASN1_BOOLEAN containsAACerts; + ASN1_BOOLEAN containsSOAPublicKeyCerts; +} OSSL_AA_DIST_POINT; + +DECLARE_ASN1_FUNCTIONS(OSSL_AA_DIST_POINT) + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/progs.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/progs.h index be55f61503d405..1b62ec37dec130 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/include/progs.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/progs.h @@ -56,6 +56,7 @@ extern int s_client_main(int argc, char *argv[]); extern int s_server_main(int argc, char *argv[]); extern int s_time_main(int argc, char *argv[]); extern int sess_id_main(int argc, char *argv[]); +extern int skeyutl_main(int argc, char *argv[]); extern int smime_main(int argc, char *argv[]); extern int speed_main(int argc, char *argv[]); extern int spkac_main(int argc, char *argv[]); @@ -110,6 +111,7 @@ extern const OPTIONS s_client_options[]; extern const OPTIONS s_server_options[]; extern const OPTIONS s_time_options[]; extern const OPTIONS sess_id_options[]; +extern const OPTIONS skeyutl_options[]; extern const OPTIONS smime_options[]; extern const OPTIONS speed_options[]; extern const OPTIONS spkac_options[]; diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/openssl-cl.gypi b/deps/openssl/config/archs/BSD-x86/no-asm/openssl-cl.gypi index 8fd73693174fd1..e7fb20b83987b3 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/openssl-cl.gypi +++ b/deps/openssl/config/archs/BSD-x86/no-asm/openssl-cl.gypi @@ -61,6 +61,7 @@ 'openssl/apps/s_server.c', 'openssl/apps/s_time.c', 'openssl/apps/sess_id.c', + 'openssl/apps/skeyutl.c', 'openssl/apps/smime.c', 'openssl/apps/speed.c', 'openssl/apps/spkac.c', @@ -76,12 +77,14 @@ 'openssl/apps/lib/app_rand.c', 'openssl/apps/lib/app_x509.c', 'openssl/apps/lib/apps.c', + 'openssl/apps/lib/apps_opt_printf.c', 'openssl/apps/lib/apps_ui.c', 'openssl/apps/lib/columns.c', 'openssl/apps/lib/engine.c', 'openssl/apps/lib/engine_loader.c', 'openssl/apps/lib/fmt.c', 'openssl/apps/lib/http_server.c', + 'openssl/apps/lib/log.c', 'openssl/apps/lib/names.c', 'openssl/apps/lib/opt.c', 'openssl/apps/lib/s_cb.c', diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/openssl-fips.gypi b/deps/openssl/config/archs/BSD-x86/no-asm/openssl-fips.gypi index 4d4d25a9e8f6dc..f79299fd5746f4 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/openssl-fips.gypi +++ b/deps/openssl/config/archs/BSD-x86/no-asm/openssl-fips.gypi @@ -100,14 +100,15 @@ 'openssl/crypto/evp/kem.c', 'openssl/crypto/evp/keymgmt_lib.c', 'openssl/crypto/evp/keymgmt_meth.c', - 'openssl/crypto/evp/m_sigver.c', 'openssl/crypto/evp/mac_lib.c', 'openssl/crypto/evp/mac_meth.c', 'openssl/crypto/evp/p_lib.c', 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -115,6 +116,8 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', @@ -145,6 +148,16 @@ 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -153,6 +166,7 @@ 'openssl/crypto/modes/ofb128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/property/defn_cache.c', 'openssl/crypto/property/property.c', 'openssl/crypto/property/property_parse.c', @@ -181,7 +195,23 @@ 'openssl/crypto/sha/sha256.c', 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/stack/stack.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/providers/common/der/der_rsa_sig.c', 'openssl/providers/common/bio_prov.c', 'openssl/providers/common/capabilities.c', @@ -190,6 +220,7 @@ 'openssl/providers/common/provider_util.c', 'openssl/providers/common/securitycheck.c', 'openssl/providers/common/securitycheck_fips.c', + 'openssl/providers/fips/fipsindicator.c', 'openssl/providers/fips/fipsprov.c', 'openssl/providers/fips/self_test.c', 'openssl/providers/fips/self_test_kats.c', @@ -227,6 +258,8 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -234,29 +267,39 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/cmac_prov.c', 'openssl/providers/implementations/macs/gmac_prov.c', 'openssl/providers/implementations/macs/hmac_prov.c', 'openssl/providers/implementations/macs/kmac_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', + 'openssl/providers/implementations/rands/fips_crng_test.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/signature/dsa_sig.c', 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -267,17 +310,20 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/fips/fips_entry.c', ], 'openssl_sources_BSD-x86': [ + './config/archs/BSD-x86/no-asm/crypto/params_idx.c', './config/archs/BSD-x86/no-asm/providers/common/der/der_sm2_gen.c', './config/archs/BSD-x86/no-asm/providers/common/der/der_digests_gen.c', './config/archs/BSD-x86/no-asm/providers/common/der/der_dsa_gen.c', './config/archs/BSD-x86/no-asm/providers/common/der/der_ec_gen.c', './config/archs/BSD-x86/no-asm/providers/common/der/der_ecx_gen.c', + './config/archs/BSD-x86/no-asm/providers/common/der/der_ml_dsa_gen.c', './config/archs/BSD-x86/no-asm/providers/common/der/der_rsa_gen.c', + './config/archs/BSD-x86/no-asm/providers/common/der/der_slh_dsa_gen.c', './config/archs/BSD-x86/no-asm/providers/common/der/der_wrap_gen.c', './config/archs/BSD-x86/no-asm/providers/legacy.ld', './config/archs/BSD-x86/no-asm/providers/fips.ld', diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/openssl.gypi b/deps/openssl/config/archs/BSD-x86/no-asm/openssl.gypi index 2031f41d6307b9..3f9be62516b43b 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/openssl.gypi +++ b/deps/openssl/config/archs/BSD-x86/no-asm/openssl.gypi @@ -7,14 +7,15 @@ 'openssl/ssl/d1_srtp.c', 'openssl/ssl/methods.c', 'openssl/ssl/pqueue.c', + 'openssl/ssl/priority_queue.c', 'openssl/ssl/s3_enc.c', 'openssl/ssl/s3_lib.c', 'openssl/ssl/s3_msg.c', 'openssl/ssl/ssl_asn1.c', 'openssl/ssl/ssl_cert.c', + 'openssl/ssl/ssl_cert_comp.c', 'openssl/ssl/ssl_ciph.c', 'openssl/ssl/ssl_conf.c', - 'openssl/ssl/ssl_err.c', 'openssl/ssl/ssl_err_legacy.c', 'openssl/ssl/ssl_init.c', 'openssl/ssl/ssl_lib.c', @@ -31,12 +32,60 @@ 'openssl/ssl/tls13_enc.c', 'openssl/ssl/tls_depr.c', 'openssl/ssl/tls_srp.c', - 'openssl/ssl/record/dtls1_bitmap.c', + 'openssl/ssl/quic/cc_newreno.c', + 'openssl/ssl/quic/json_enc.c', + 'openssl/ssl/quic/qlog.c', + 'openssl/ssl/quic/qlog_event_helpers.c', + 'openssl/ssl/quic/quic_ackm.c', + 'openssl/ssl/quic/quic_cfq.c', + 'openssl/ssl/quic/quic_channel.c', + 'openssl/ssl/quic/quic_demux.c', + 'openssl/ssl/quic/quic_engine.c', + 'openssl/ssl/quic/quic_fc.c', + 'openssl/ssl/quic/quic_fifd.c', + 'openssl/ssl/quic/quic_impl.c', + 'openssl/ssl/quic/quic_lcidm.c', + 'openssl/ssl/quic/quic_method.c', + 'openssl/ssl/quic/quic_obj.c', + 'openssl/ssl/quic/quic_port.c', + 'openssl/ssl/quic/quic_rcidm.c', + 'openssl/ssl/quic/quic_reactor.c', + 'openssl/ssl/quic/quic_reactor_wait_ctx.c', + 'openssl/ssl/quic/quic_record_rx.c', + 'openssl/ssl/quic/quic_record_shared.c', + 'openssl/ssl/quic/quic_record_tx.c', + 'openssl/ssl/quic/quic_record_util.c', + 'openssl/ssl/quic/quic_rstream.c', + 'openssl/ssl/quic/quic_rx_depack.c', + 'openssl/ssl/quic/quic_sf_list.c', + 'openssl/ssl/quic/quic_srt_gen.c', + 'openssl/ssl/quic/quic_srtm.c', + 'openssl/ssl/quic/quic_sstream.c', + 'openssl/ssl/quic/quic_statm.c', + 'openssl/ssl/quic/quic_stream_map.c', + 'openssl/ssl/quic/quic_thread_assist.c', + 'openssl/ssl/quic/quic_tls.c', + 'openssl/ssl/quic/quic_tls_api.c', + 'openssl/ssl/quic/quic_trace.c', + 'openssl/ssl/quic/quic_tserver.c', + 'openssl/ssl/quic/quic_txp.c', + 'openssl/ssl/quic/quic_txpim.c', + 'openssl/ssl/quic/quic_types.c', + 'openssl/ssl/quic/quic_wire.c', + 'openssl/ssl/quic/quic_wire_pkt.c', + 'openssl/ssl/quic/uint_set.c', 'openssl/ssl/record/rec_layer_d1.c', 'openssl/ssl/record/rec_layer_s3.c', - 'openssl/ssl/record/ssl3_buffer.c', - 'openssl/ssl/record/ssl3_record.c', - 'openssl/ssl/record/ssl3_record_tls13.c', + 'openssl/ssl/record/methods/dtls_meth.c', + 'openssl/ssl/record/methods/ssl3_meth.c', + 'openssl/ssl/record/methods/tls13_meth.c', + 'openssl/ssl/record/methods/tls1_meth.c', + 'openssl/ssl/record/methods/tls_common.c', + 'openssl/ssl/record/methods/tls_multib.c', + 'openssl/ssl/record/methods/tlsany_meth.c', + 'openssl/ssl/rio/poll_builder.c', + 'openssl/ssl/rio/poll_immediate.c', + 'openssl/ssl/rio/rio_notifier.c', 'openssl/ssl/statem/extensions.c', 'openssl/ssl/statem/extensions_clnt.c', 'openssl/ssl/statem/extensions_cust.c', @@ -150,6 +199,7 @@ 'openssl/crypto/bio/bss_conn.c', 'openssl/crypto/bio/bss_core.c', 'openssl/crypto/bio/bss_dgram.c', + 'openssl/crypto/bio/bss_dgram_pair.c', 'openssl/crypto/bio/bss_fd.c', 'openssl/crypto/bio/bss_file.c', 'openssl/crypto/bio/bss_log.c', @@ -210,6 +260,7 @@ 'openssl/crypto/cmp/cmp_client.c', 'openssl/crypto/cmp/cmp_ctx.c', 'openssl/crypto/cmp/cmp_err.c', + 'openssl/crypto/cmp/cmp_genm.c', 'openssl/crypto/cmp/cmp_hdr.c', 'openssl/crypto/cmp/cmp_http.c', 'openssl/crypto/cmp/cmp_msg.c', @@ -385,7 +436,9 @@ 'openssl/crypto/err/err_all.c', 'openssl/crypto/err/err_all_legacy.c', 'openssl/crypto/err/err_blocks.c', + 'openssl/crypto/err/err_mark.c', 'openssl/crypto/err/err_prn.c', + 'openssl/crypto/err/err_save.c', 'openssl/crypto/ess/ess_asn1.c', 'openssl/crypto/ess/ess_err.c', 'openssl/crypto/ess/ess_lib.c', @@ -468,7 +521,9 @@ 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -476,7 +531,11 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', + 'openssl/crypto/hpke/hpke.c', + 'openssl/crypto/hpke/hpke_util.c', 'openssl/crypto/http/http_client.c', 'openssl/crypto/http/http_err.c', 'openssl/crypto/http/http_lib.c', @@ -490,6 +549,7 @@ 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', 'openssl/crypto/bsearch.c', + 'openssl/crypto/comp_methods.c', 'openssl/crypto/context.c', 'openssl/crypto/core_algorithm.c', 'openssl/crypto/core_fetch.c', @@ -499,10 +559,13 @@ 'openssl/crypto/cryptlib.c', 'openssl/crypto/ctype.c', 'openssl/crypto/cversion.c', + 'openssl/crypto/defaults.c', 'openssl/crypto/der_writer.c', + 'openssl/crypto/deterministic_nonce.c', 'openssl/crypto/ebcdic.c', 'openssl/crypto/ex_data.c', 'openssl/crypto/getenv.c', + 'openssl/crypto/indicator_core.c', 'openssl/crypto/info.c', 'openssl/crypto/init.c', 'openssl/crypto/initthread.c', @@ -527,12 +590,16 @@ 'openssl/crypto/provider_core.c', 'openssl/crypto/provider_predefined.c', 'openssl/crypto/punycode.c', + 'openssl/crypto/quic_vlint.c', 'openssl/crypto/self_test_core.c', + 'openssl/crypto/sleep.c', 'openssl/crypto/sparse_array.c', + 'openssl/crypto/ssl_err.c', 'openssl/crypto/threads_lib.c', 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', 'openssl/crypto/trace.c', 'openssl/crypto/uid.c', 'openssl/crypto/md4/md4_dgst.c', @@ -542,6 +609,15 @@ 'openssl/crypto/md5/md5_sha1.c', 'openssl/crypto/mdc2/mdc2_one.c', 'openssl/crypto/mdc2/mdc2dgst.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -553,6 +629,7 @@ 'openssl/crypto/modes/siv128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/objects/o_names.c', 'openssl/crypto/objects/obj_dat.c', 'openssl/crypto/objects/obj_err.c', @@ -616,6 +693,7 @@ 'openssl/crypto/rand/rand_lib.c', 'openssl/crypto/rand/rand_meth.c', 'openssl/crypto/rand/rand_pool.c', + 'openssl/crypto/rand/rand_uniform.c', 'openssl/crypto/rand/randfile.c', 'openssl/crypto/rc2/rc2_cbc.c', 'openssl/crypto/rc2/rc2_ecb.c', @@ -664,6 +742,16 @@ 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', 'openssl/crypto/siphash/siphash.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/sm2/sm2_crypt.c', 'openssl/crypto/sm2/sm2_err.c', 'openssl/crypto/sm2/sm2_key.c', @@ -681,6 +769,12 @@ 'openssl/crypto/store/store_register.c', 'openssl/crypto/store/store_result.c', 'openssl/crypto/store/store_strings.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/crypto/ts/ts_asn1.c', 'openssl/crypto/ts/ts_conf.c', 'openssl/crypto/ts/ts_err.c', @@ -709,14 +803,22 @@ 'openssl/crypto/x509/pcy_map.c', 'openssl/crypto/x509/pcy_node.c', 'openssl/crypto/x509/pcy_tree.c', + 'openssl/crypto/x509/t_acert.c', 'openssl/crypto/x509/t_crl.c', 'openssl/crypto/x509/t_req.c', 'openssl/crypto/x509/t_x509.c', + 'openssl/crypto/x509/v3_aaa.c', + 'openssl/crypto/x509/v3_ac_tgt.c', 'openssl/crypto/x509/v3_addr.c', 'openssl/crypto/x509/v3_admis.c', 'openssl/crypto/x509/v3_akeya.c', 'openssl/crypto/x509/v3_akid.c', 'openssl/crypto/x509/v3_asid.c', + 'openssl/crypto/x509/v3_attrdesc.c', + 'openssl/crypto/x509/v3_attrmap.c', + 'openssl/crypto/x509/v3_audit_id.c', + 'openssl/crypto/x509/v3_authattid.c', + 'openssl/crypto/x509/v3_battcons.c', 'openssl/crypto/x509/v3_bcons.c', 'openssl/crypto/x509/v3_bitst.c', 'openssl/crypto/x509/v3_conf.c', @@ -725,12 +827,17 @@ 'openssl/crypto/x509/v3_enum.c', 'openssl/crypto/x509/v3_extku.c', 'openssl/crypto/x509/v3_genn.c', + 'openssl/crypto/x509/v3_group_ac.c', 'openssl/crypto/x509/v3_ia5.c', + 'openssl/crypto/x509/v3_ind_iss.c', 'openssl/crypto/x509/v3_info.c', 'openssl/crypto/x509/v3_int.c', + 'openssl/crypto/x509/v3_iobo.c', 'openssl/crypto/x509/v3_ist.c', 'openssl/crypto/x509/v3_lib.c', 'openssl/crypto/x509/v3_ncons.c', + 'openssl/crypto/x509/v3_no_ass.c', + 'openssl/crypto/x509/v3_no_rev_avail.c', 'openssl/crypto/x509/v3_pci.c', 'openssl/crypto/x509/v3_pcia.c', 'openssl/crypto/x509/v3_pcons.c', @@ -738,13 +845,20 @@ 'openssl/crypto/x509/v3_pmaps.c', 'openssl/crypto/x509/v3_prn.c', 'openssl/crypto/x509/v3_purp.c', + 'openssl/crypto/x509/v3_rolespec.c', 'openssl/crypto/x509/v3_san.c', + 'openssl/crypto/x509/v3_sda.c', + 'openssl/crypto/x509/v3_single_use.c', 'openssl/crypto/x509/v3_skid.c', + 'openssl/crypto/x509/v3_soa_id.c', 'openssl/crypto/x509/v3_sxnet.c', + 'openssl/crypto/x509/v3_timespec.c', 'openssl/crypto/x509/v3_tlsf.c', + 'openssl/crypto/x509/v3_usernotice.c', 'openssl/crypto/x509/v3_utf8.c', 'openssl/crypto/x509/v3_utl.c', 'openssl/crypto/x509/v3err.c', + 'openssl/crypto/x509/x509_acert.c', 'openssl/crypto/x509/x509_att.c', 'openssl/crypto/x509/x509_cmp.c', 'openssl/crypto/x509/x509_d2.c', @@ -762,6 +876,7 @@ 'openssl/crypto/x509/x509_v3.c', 'openssl/crypto/x509/x509_vfy.c', 'openssl/crypto/x509/x509_vpm.c', + 'openssl/crypto/x509/x509aset.c', 'openssl/crypto/x509/x509cset.c', 'openssl/crypto/x509/x509name.c', 'openssl/crypto/x509/x509rset.c', @@ -771,6 +886,7 @@ 'openssl/crypto/x509/x_attrib.c', 'openssl/crypto/x509/x_crl.c', 'openssl/crypto/x509/x_exten.c', + 'openssl/crypto/x509/x_ietfatt.c', 'openssl/crypto/x509/x_name.c', 'openssl/crypto/x509/x_pubkey.c', 'openssl/crypto/x509/x_req.c', @@ -803,6 +919,9 @@ 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c', 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', @@ -827,7 +946,13 @@ 'openssl/providers/implementations/ciphers/cipher_cts.c', 'openssl/providers/implementations/ciphers/cipher_null.c', 'openssl/providers/implementations/ciphers/cipher_sm4.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm_hw.c', 'openssl/providers/implementations/ciphers/cipher_sm4_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts_hw.c', 'openssl/providers/implementations/ciphers/cipher_tdes.c', 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', 'openssl/providers/implementations/ciphers/cipher_tdes_default.c', @@ -856,11 +981,16 @@ 'openssl/providers/implementations/encode_decode/encode_key2ms.c', 'openssl/providers/implementations/encode_decode/encode_key2text.c', 'openssl/providers/implementations/encode_decode/endecoder_common.c', + 'openssl/providers/implementations/encode_decode/ml_common_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_dsa_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_kem_codecs.c', 'openssl/providers/implementations/exchange/dh_exch.c', 'openssl/providers/implementations/exchange/ecdh_exch.c', 'openssl/providers/implementations/exchange/ecx_exch.c', 'openssl/providers/implementations/exchange/kdf_exch.c', + 'openssl/providers/implementations/kdfs/argon2.c', 'openssl/providers/implementations/kdfs/hkdf.c', + 'openssl/providers/implementations/kdfs/hmacdrbg_kdf.c', 'openssl/providers/implementations/kdfs/kbkdf.c', 'openssl/providers/implementations/kdfs/krb5kdf.c', 'openssl/providers/implementations/kdfs/pbkdf2.c', @@ -871,6 +1001,11 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ec_kem.c', + 'openssl/providers/implementations/kem/ecx_kem.c', + 'openssl/providers/implementations/kem/kem_util.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -878,7 +1013,11 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/blake2b_mac.c', 'openssl/providers/implementations/macs/blake2s_mac.c', 'openssl/providers/implementations/macs/cmac_prov.c', @@ -887,12 +1026,12 @@ 'openssl/providers/implementations/macs/kmac_prov.c', 'openssl/providers/implementations/macs/poly1305_prov.c', 'openssl/providers/implementations/macs/siphash_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', 'openssl/providers/implementations/rands/seed_src.c', + 'openssl/providers/implementations/rands/seed_src_jitter.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/rands/seeding/rand_cpu_x86.c', 'openssl/providers/implementations/rands/seeding/rand_tsc.c', @@ -902,17 +1041,23 @@ 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', 'openssl/providers/implementations/signature/sm2_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', 'openssl/providers/implementations/storemgmt/file_store.c', 'openssl/providers/implementations/storemgmt/file_store_any2obj.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -923,7 +1068,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/implementations/ciphers/cipher_blowfish.c', 'openssl/providers/implementations/ciphers/cipher_blowfish_hw.c', 'openssl/providers/implementations/ciphers/cipher_cast5.c', @@ -948,16 +1093,20 @@ 'openssl/providers/implementations/digests/ripemd_prov.c', 'openssl/providers/implementations/digests/wp_prov.c', 'openssl/providers/implementations/kdfs/pbkdf1.c', + 'openssl/providers/implementations/kdfs/pvkkdf.c', 'openssl/providers/prov_running.c', 'openssl/providers/legacyprov.c', ], 'openssl_sources_BSD-x86': [ + './config/archs/BSD-x86/no-asm/crypto/params_idx.c', './config/archs/BSD-x86/no-asm/providers/common/der/der_sm2_gen.c', './config/archs/BSD-x86/no-asm/providers/common/der/der_digests_gen.c', './config/archs/BSD-x86/no-asm/providers/common/der/der_dsa_gen.c', './config/archs/BSD-x86/no-asm/providers/common/der/der_ec_gen.c', './config/archs/BSD-x86/no-asm/providers/common/der/der_ecx_gen.c', + './config/archs/BSD-x86/no-asm/providers/common/der/der_ml_dsa_gen.c', './config/archs/BSD-x86/no-asm/providers/common/der/der_rsa_gen.c', + './config/archs/BSD-x86/no-asm/providers/common/der/der_slh_dsa_gen.c', './config/archs/BSD-x86/no-asm/providers/common/der/der_wrap_gen.c', './config/archs/BSD-x86/no-asm/providers/legacy.ld', './config/archs/BSD-x86/no-asm/providers/fips.ld', diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/providers/common/der/der_ml_dsa_gen.c b/deps/openssl/config/archs/BSD-x86/no-asm/providers/common/der/der_ml_dsa_gen.c new file mode 100644 index 00000000000000..4a8a113a268578 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/no-asm/providers/common/der/der_ml_dsa_gen.c @@ -0,0 +1,37 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_ml_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44] = { + DER_OID_V_id_ml_dsa_44 +}; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65] = { + DER_OID_V_id_ml_dsa_65 +}; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87] = { + DER_OID_V_id_ml_dsa_87 +}; + diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/providers/common/der/der_slh_dsa_gen.c b/deps/openssl/config/archs/BSD-x86/no-asm/providers/common/der/der_slh_dsa_gen.c new file mode 100644 index 00000000000000..1419a9515097dd --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/no-asm/providers/common/der/der_slh_dsa_gen.c @@ -0,0 +1,100 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_slh_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s] = { + DER_OID_V_id_slh_dsa_sha2_128s +}; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f] = { + DER_OID_V_id_slh_dsa_sha2_128f +}; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s] = { + DER_OID_V_id_slh_dsa_sha2_192s +}; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f] = { + DER_OID_V_id_slh_dsa_sha2_192f +}; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s] = { + DER_OID_V_id_slh_dsa_sha2_256s +}; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f] = { + DER_OID_V_id_slh_dsa_sha2_256f +}; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s] = { + DER_OID_V_id_slh_dsa_shake_128s +}; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f] = { + DER_OID_V_id_slh_dsa_shake_128f +}; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s] = { + DER_OID_V_id_slh_dsa_shake_192s +}; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f] = { + DER_OID_V_id_slh_dsa_shake_192f +}; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s] = { + DER_OID_V_id_slh_dsa_shake_256s +}; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f] = { + DER_OID_V_id_slh_dsa_shake_256f +}; + diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/providers/common/include/prov/der_ml_dsa.h b/deps/openssl/config/archs/BSD-x86/no-asm/providers/common/include/prov/der_ml_dsa.h new file mode 100644 index 00000000000000..c55f780ab4527c --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/no-asm/providers/common/include/prov/der_ml_dsa.h @@ -0,0 +1,40 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_ml_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +#define DER_OID_V_id_ml_dsa_44 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x11 +#define DER_OID_SZ_id_ml_dsa_44 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44]; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +#define DER_OID_V_id_ml_dsa_65 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x12 +#define DER_OID_SZ_id_ml_dsa_65 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65]; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +#define DER_OID_V_id_ml_dsa_87 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x13 +#define DER_OID_SZ_id_ml_dsa_87 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87]; + + +int ossl_DER_w_algorithmIdentifier_ML_DSA(WPACKET *pkt, int tag, ML_DSA_KEY *key); diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/providers/common/include/prov/der_slh_dsa.h b/deps/openssl/config/archs/BSD-x86/no-asm/providers/common/include/prov/der_slh_dsa.h new file mode 100644 index 00000000000000..760f8e7699be72 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86/no-asm/providers/common/include/prov/der_slh_dsa.h @@ -0,0 +1,103 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_slh_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x14 +#define DER_OID_SZ_id_slh_dsa_sha2_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s]; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x15 +#define DER_OID_SZ_id_slh_dsa_sha2_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f]; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x16 +#define DER_OID_SZ_id_slh_dsa_sha2_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s]; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x17 +#define DER_OID_SZ_id_slh_dsa_sha2_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f]; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x18 +#define DER_OID_SZ_id_slh_dsa_sha2_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s]; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x19 +#define DER_OID_SZ_id_slh_dsa_sha2_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f]; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +#define DER_OID_V_id_slh_dsa_shake_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1A +#define DER_OID_SZ_id_slh_dsa_shake_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s]; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +#define DER_OID_V_id_slh_dsa_shake_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1B +#define DER_OID_SZ_id_slh_dsa_shake_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f]; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +#define DER_OID_V_id_slh_dsa_shake_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1C +#define DER_OID_SZ_id_slh_dsa_shake_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s]; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +#define DER_OID_V_id_slh_dsa_shake_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1D +#define DER_OID_SZ_id_slh_dsa_shake_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f]; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +#define DER_OID_V_id_slh_dsa_shake_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1E +#define DER_OID_SZ_id_slh_dsa_shake_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s]; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +#define DER_OID_V_id_slh_dsa_shake_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1F +#define DER_OID_SZ_id_slh_dsa_shake_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f]; + + +int ossl_DER_w_algorithmIdentifier_SLH_DSA(WPACKET *pkt, int tag, SLH_DSA_KEY *key); diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/apps/progs.c b/deps/openssl/config/archs/BSD-x86_64/asm/apps/progs.c index 43cef00799b86e..acc204a3e6e781 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/apps/progs.c +++ b/deps/openssl/config/archs/BSD-x86_64/asm/apps/progs.c @@ -89,6 +89,7 @@ FUNCTION functions[] = { {FT_general, "s_time", s_time_main, s_time_options, NULL, NULL}, #endif {FT_general, "sess_id", sess_id_main, sess_id_options, NULL, NULL}, + {FT_general, "skeyutl", skeyutl_main, skeyutl_options, NULL, NULL}, {FT_general, "smime", smime_main, smime_options, NULL, NULL}, {FT_general, "speed", speed_main, speed_options, NULL, NULL}, {FT_general, "spkac", spkac_main, spkac_options, NULL, NULL}, @@ -225,9 +226,15 @@ FUNCTION functions[] = { {FT_cipher, "camellia-256-ecb", enc_main, enc_options, NULL}, #endif {FT_cipher, "base64", enc_main, enc_options, NULL}, -#ifdef ZLIB +#ifndef OPENSSL_NO_ZLIB {FT_cipher, "zlib", enc_main, enc_options, NULL}, #endif +#ifndef OPENSSL_NO_BROTLI + {FT_cipher, "brotli", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ZSTD + {FT_cipher, "zstd", enc_main, enc_options, NULL}, +#endif #ifndef OPENSSL_NO_DES {FT_cipher, "des", enc_main, enc_options, NULL}, #endif diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm b/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm index d2b569260f5e6c..8cc29549bf25ca 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm +++ b/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm @@ -18,6 +18,7 @@ our %config = ( "ARFLAGS" => [ "qc" ], + "ASFLAGS" => [], "CC" => "gcc", "CFLAGS" => [ "-Wall -O3" @@ -27,14 +28,16 @@ our %config = ( "CPPINCLUDES" => [], "CXXFLAGS" => [], "FIPSKEY" => "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813", + "FIPS_VENDOR" => "OpenSSL FIPS Provider", "HASHBANGPERL" => "/usr/bin/env perl", "LDFLAGS" => [], "LDLIBS" => [], + "OBJCOPY" => "objcopy", "PERL" => "/usr/bin/perl", "RANLIB" => "ranlib", "RC" => "windres", "RCFLAGS" => [], - "api" => "30000", + "api" => "30500", "b32" => "0", "b64" => "0", "b64l" => "1", @@ -56,11 +59,13 @@ our %config = ( "doc/build.info", "test/build.info", "engines/build.info", + "exporters/build.info", "crypto/objects/build.info", "crypto/buffer/build.info", "crypto/bio/build.info", "crypto/stack/build.info", "crypto/lhash/build.info", + "crypto/hashtable/build.info", "crypto/rand/build.info", "crypto/evp/build.info", "crypto/asn1/build.info", @@ -78,6 +83,7 @@ our %config = ( "crypto/md5/build.info", "crypto/sha/build.info", "crypto/mdc2/build.info", + "crypto/ml_kem/build.info", "crypto/hmac/build.info", "crypto/ripemd/build.info", "crypto/whrlpool/build.info", @@ -119,11 +125,19 @@ our %config = ( "crypto/cmp/build.info", "crypto/encode_decode/build.info", "crypto/ffc/build.info", + "crypto/hpke/build.info", + "crypto/thread/build.info", + "crypto/ml_dsa/build.info", + "crypto/slh_dsa/build.info", + "ssl/record/build.info", + "ssl/rio/build.info", + "ssl/quic/build.info", "apps/lib/build.info", "providers/common/build.info", "providers/implementations/build.info", "providers/fips/build.info", "doc/man1/build.info", + "ssl/record/methods/build.info", "providers/common/der/build.info", "providers/implementations/digests/build.info", "providers/implementations/ciphers/build.info", @@ -137,6 +151,7 @@ our %config = ( "providers/implementations/encode_decode/build.info", "providers/implementations/storemgmt/build.info", "providers/implementations/kem/build.info", + "providers/implementations/skeymgmt/build.info", "providers/implementations/rands/seeding/build.info" ], "build_metadata" => "", @@ -156,7 +171,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.17", + "full_version" => "3.5.2", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -165,36 +180,51 @@ our %config = ( "libdir" => "", "major" => "3", "makedep_scheme" => "gcc", - "minor" => "0", + "minor" => "5", "openssl_api_defines" => [ - "OPENSSL_CONFIGURED_API=30000" + "OPENSSL_CONFIGURED_API=30500" ], "openssl_feature_defines" => [ "OPENSSL_RAND_SEED_OS", "OPENSSL_THREADS", "OPENSSL_NO_AFALGENG", "OPENSSL_NO_ASAN", + "OPENSSL_NO_BROTLI", + "OPENSSL_NO_BROTLI_DYNAMIC", "OPENSSL_NO_COMP", "OPENSSL_NO_CRYPTO_MDEBUG", "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE", + "OPENSSL_NO_DEMOS", "OPENSSL_NO_EC_NISTP_64_GCC_128", "OPENSSL_NO_EGD", "OPENSSL_NO_EXTERNAL_TESTS", + "OPENSSL_NO_FIPS_JITTER", "OPENSSL_NO_FUZZ_AFL", "OPENSSL_NO_FUZZ_LIBFUZZER", + "OPENSSL_NO_H3DEMO", + "OPENSSL_NO_HQINTEROP", + "OPENSSL_NO_JITTER", "OPENSSL_NO_KTLS", "OPENSSL_NO_LOADERENG", "OPENSSL_NO_MD2", "OPENSSL_NO_MSAN", + "OPENSSL_NO_PIE", "OPENSSL_NO_RC5", "OPENSSL_NO_SCTP", "OPENSSL_NO_SSL3", "OPENSSL_NO_SSL3_METHOD", + "OPENSSL_NO_SSLKEYLOG", + "OPENSSL_NO_TFO", "OPENSSL_NO_TRACE", "OPENSSL_NO_UBSAN", "OPENSSL_NO_UNIT_TEST", "OPENSSL_NO_UPLINK", "OPENSSL_NO_WEAK_SSL_CIPHERS", + "OPENSSL_NO_WINSTORE", + "OPENSSL_NO_ZLIB", + "OPENSSL_NO_ZLIB_DYNAMIC", + "OPENSSL_NO_ZSTD", + "OPENSSL_NO_ZSTD_DYNAMIC", "OPENSSL_NO_DYNAMIC_ENGINE" ], "openssl_other_defines" => [ @@ -202,11 +232,11 @@ our %config = ( ], "openssl_sys_defines" => [], "openssldir" => "", - "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "17", + "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", + "patch" => "2", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", - "perl_version" => "5.38.2", + "perl_version" => "5.34.0", "perlargv" => [ "no-comp", "no-shared", @@ -236,6 +266,7 @@ our %config = ( "LDLIBS" => undef, "MT" => undef, "MTFLAGS" => undef, + "OBJCOPY" => undef, "OPENSSL_LOCAL_CONFIG_DIR" => undef, "PERL" => undef, "RANLIB" => undef, @@ -255,11 +286,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "1 Jul 2025", + "release_date" => "5 Aug 2025", "shlib_version" => "3", "sourcedir" => ".", "target" => "BSD-x86_64", - "version" => "3.0.17" + "version" => "3.5.2" ); our %target = ( "AR" => "ar", @@ -267,6 +298,7 @@ our %target = ( "CC" => "cc", "CFLAGS" => "-Wall -O3", "HASHBANGPERL" => "/usr/bin/env perl", + "OBJCOPY" => "objcopy", "RANLIB" => "ranlib", "RC" => "windres", "_conf_fname_int" => [ @@ -278,6 +310,8 @@ our %target = ( "Configurations/shared-info.pl" ], "asm_arch" => "x86_64", + "bin_cflags" => "", + "bin_lflags" => "", "bn_ops" => "SIXTY_FOUR_BIT_LONG", "build_file" => "Makefile", "build_scheme" => [ @@ -321,6 +355,8 @@ our %target = ( our @disablables = ( "acvp-tests", "afalgeng", + "apps", + "argon2", "aria", "asan", "asm", @@ -331,11 +367,14 @@ our @disablables = ( "autoload-config", "bf", "blake2", + "brotli", + "brotli-dynamic", "buildtest-c++", "bulk", "cached-fetch", "camellia", "capieng", + "winstore", "cast", "chacha", "cmac", @@ -344,11 +383,16 @@ our @disablables = ( "comp", "crypto-mdebug", "ct", + "default-thread-pool", + "demos", + "h3demo", + "hqinterop", "deprecated", "des", "devcryptoeng", "dgram", "dh", + "docs", "dsa", "dso", "dtls", @@ -358,6 +402,7 @@ our @disablables = ( "ec_nistp_64_gcc_128", "ecdh", "ecdsa", + "ecx", "egd", "engine", "err", @@ -365,10 +410,15 @@ our @disablables = ( "filenames", "fips", "fips-securitychecks", + "fips-post", + "fips-jitter", "fuzz-afl", "fuzz-libfuzzer", "gost", + "http", "idea", + "integrity-only-ciphers", + "jitter", "ktls", "legacy", "loadereng", @@ -376,6 +426,8 @@ our @disablables = ( "md2", "md4", "mdc2", + "ml-dsa", + "ml-kem", "module", "msan", "multiblock", @@ -384,10 +436,13 @@ our @disablables = ( "ocsp", "padlockeng", "pic", + "pie", "pinshared", "poly1305", "posix-io", "psk", + "quic", + "unstable-qlog", "rc2", "rc4", "rc5", @@ -401,7 +456,9 @@ our @disablables = ( "shared", "siphash", "siv", + "slh-dsa", "sm2", + "sm2-precomp", "sm3", "sm4", "sock", @@ -412,9 +469,13 @@ our @disablables = ( "ssl-trace", "static-engine", "stdio", + "sslkeylog", "tests", + "tfo", + "thread-pool", "threads", "tls", + "tls-deprecated-ec", "trace", "ts", "ubsan", @@ -425,6 +486,8 @@ our @disablables = ( "whirlpool", "zlib", "zlib-dynamic", + "zstd", + "zstd-dynamic", "ssl3", "ssl3-method", "tls1", @@ -445,32 +508,45 @@ our @disablables_int = ( our %disabled = ( "afalgeng" => "option", "asan" => "default", + "brotli" => "default", + "brotli-dynamic" => "default", "buildtest-c++" => "default", "comp" => "option", "crypto-mdebug" => "default", "crypto-mdebug-backtrace" => "default", + "demos" => "default", "dynamic-engine" => "cascade", "ec_nistp_64_gcc_128" => "default", "egd" => "default", "external-tests" => "default", + "fips-jitter" => "default", "fuzz-afl" => "default", "fuzz-libfuzzer" => "default", + "h3demo" => "default", + "hqinterop" => "default", + "jitter" => "default", "ktls" => "default", "loadereng" => "cascade", "md2" => "default", "msan" => "default", + "pie" => "default", "rc5" => "default", "sctp" => "default", "shared" => "option", "ssl3" => "default", "ssl3-method" => "default", + "sslkeylog" => "default", + "tfo" => "default", "trace" => "default", "ubsan" => "default", "unit-test" => "default", "uplink" => "no uplink_arch", "weak-ssl-ciphers" => "default", + "winstore" => "not-windows", "zlib" => "default", - "zlib-dynamic" => "default" + "zlib-dynamic" => "default", + "zstd" => "default", + "zstd-dynamic" => "default" ); our %withargs = (); our %unified_info = ( @@ -696,6 +772,11 @@ our %unified_info = ( "pod" => "1" } }, + "doc/man1/openssl-skeyutl.pod" => { + "doc/man1/openssl-skeyutl.pod.in" => { + "pod" => "1" + } + }, "doc/man1/openssl-smime.pod" => { "doc/man1/openssl-smime.pod.in" => { "pod" => "1" @@ -753,6 +834,21 @@ our %unified_info = ( } }, "generate" => { + "exporters/OpenSSLConfig.cmake" => { + "exporter" => "cmake" + }, + "exporters/OpenSSLConfigVersion.cmake" => { + "exporter" => "cmake" + }, + "exporters/libcrypto.pc" => { + "exporter" => "pkg-config" + }, + "exporters/libssl.pc" => { + "exporter" => "pkg-config" + }, + "exporters/openssl.pc" => { + "exporter" => "pkg-config" + }, "include/openssl/configuration.h" => { "skip" => "1" } @@ -773,6 +869,9 @@ our %unified_info = ( "providers/liblegacy.a" => { "noinst" => "1" }, + "providers/libtemplate.a" => { + "noinst" => "1" + }, "test/libtestutil.a" => { "has_main" => "1", "noinst" => "1" @@ -790,6 +889,9 @@ our %unified_info = ( } }, "programs" => { + "fuzz/acert-test" => { + "noinst" => "1" + }, "fuzz/asn1-test" => { "noinst" => "1" }, @@ -820,9 +922,60 @@ our %unified_info = ( "fuzz/ct-test" => { "noinst" => "1" }, + "fuzz/decoder-test" => { + "noinst" => "1" + }, + "fuzz/dtlsclient-test" => { + "noinst" => "1" + }, + "fuzz/dtlsserver-test" => { + "noinst" => "1" + }, + "fuzz/hashtable-test" => { + "noinst" => "1" + }, + "fuzz/ml-dsa-test" => { + "noinst" => "1" + }, + "fuzz/ml-kem-test" => { + "noinst" => "1" + }, + "fuzz/pem-test" => { + "noinst" => "1" + }, + "fuzz/provider-test" => { + "noinst" => "1" + }, + "fuzz/punycode-test" => { + "noinst" => "1" + }, + "fuzz/quic-client-test" => { + "noinst" => "1" + }, + "fuzz/quic-lcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-rcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-server-test" => { + "noinst" => "1" + }, + "fuzz/quic-srtm-test" => { + "noinst" => "1" + }, "fuzz/server-test" => { "noinst" => "1" }, + "fuzz/slh-dsa-test" => { + "noinst" => "1" + }, + "fuzz/smime-test" => { + "noinst" => "1" + }, + "fuzz/v3name-test" => { + "noinst" => "1" + }, "fuzz/x509-test" => { "noinst" => "1" }, @@ -874,18 +1027,30 @@ our %unified_info = ( "test/bftest" => { "noinst" => "1" }, + "test/bio_addr_test" => { + "noinst" => "1" + }, + "test/bio_base64_test" => { + "noinst" => "1" + }, "test/bio_callback_test" => { "noinst" => "1" }, "test/bio_core_test" => { "noinst" => "1" }, + "test/bio_dgram_test" => { + "noinst" => "1" + }, "test/bio_enc_test" => { "noinst" => "1" }, "test/bio_memleak_test" => { "noinst" => "1" }, + "test/bio_meth_test" => { + "noinst" => "1" + }, "test/bio_prefix_text" => { "noinst" => "1" }, @@ -895,6 +1060,9 @@ our %unified_info = ( "test/bio_readbuffer_test" => { "noinst" => "1" }, + "test/bio_tfo_test" => { + "noinst" => "1" + }, "test/bioprinttest" => { "noinst" => "1" }, @@ -904,6 +1072,9 @@ our %unified_info = ( "test/bntest" => { "noinst" => "1" }, + "test/build_wincrypt_test" => { + "noinst" => "1" + }, "test/buildtest_c_aes" => { "noinst" => "1" }, @@ -919,6 +1090,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => { "noinst" => "1" }, + "test/buildtest_c_byteorder" => { + "noinst" => "1" + }, "test/buildtest_c_camellia" => { "noinst" => "1" }, @@ -943,9 +1117,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => { "noinst" => "1" }, - "test/buildtest_c_core_names" => { - "noinst" => "1" - }, "test/buildtest_c_core_object" => { "noinst" => "1" }, @@ -970,6 +1141,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => { "noinst" => "1" }, + "test/buildtest_c_e_ostime" => { + "noinst" => "1" + }, "test/buildtest_c_ebcdic" => { "noinst" => "1" }, @@ -997,12 +1171,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => { "noinst" => "1" }, + "test/buildtest_c_hpke" => { + "noinst" => "1" + }, "test/buildtest_c_http" => { "noinst" => "1" }, "test/buildtest_c_idea" => { "noinst" => "1" }, + "test/buildtest_c_indicator" => { + "noinst" => "1" + }, "test/buildtest_c_kdf" => { "noinst" => "1" }, @@ -1018,6 +1198,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => { "noinst" => "1" }, + "test/buildtest_c_ml_kem" => { + "noinst" => "1" + }, "test/buildtest_c_modes" => { "noinst" => "1" }, @@ -1048,6 +1231,9 @@ our %unified_info = ( "test/buildtest_c_provider" => { "noinst" => "1" }, + "test/buildtest_c_quic" => { + "noinst" => "1" + }, "test/buildtest_c_rand" => { "noinst" => "1" }, @@ -1090,6 +1276,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => { "noinst" => "1" }, + "test/buildtest_c_thread" => { + "noinst" => "1" + }, "test/buildtest_c_tls1" => { "noinst" => "1" }, @@ -1105,6 +1294,12 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => { "noinst" => "1" }, + "test/byteorder_test" => { + "noinst" => "1" + }, + "test/ca_internals_test" => { + "noinst" => "1" + }, "test/casttest" => { "noinst" => "1" }, @@ -1189,6 +1384,9 @@ our %unified_info = ( "test/danetest" => { "noinst" => "1" }, + "test/decoder_propq_test" => { + "noinst" => "1" + }, "test/defltfips_test" => { "noinst" => "1" }, @@ -1261,15 +1459,24 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => { "noinst" => "1" }, + "test/evp_pkey_dhkem_test" => { + "noinst" => "1" + }, "test/evp_pkey_dparams_test" => { "noinst" => "1" }, "test/evp_pkey_provided_test" => { "noinst" => "1" }, + "test/evp_skey_test" => { + "noinst" => "1" + }, "test/evp_test" => { "noinst" => "1" }, + "test/evp_xof_test" => { + "noinst" => "1" + }, "test/exdatatest" => { "noinst" => "1" }, @@ -1297,6 +1504,9 @@ our %unified_info = ( "test/hmactest" => { "noinst" => "1" }, + "test/hpke_test" => { + "noinst" => "1" + }, "test/http_test" => { "noinst" => "1" }, @@ -1306,12 +1516,18 @@ our %unified_info = ( "test/igetest" => { "noinst" => "1" }, + "test/json_test" => { + "noinst" => "1" + }, "test/keymgmt_internal_test" => { "noinst" => "1" }, "test/lhash_test" => { "noinst" => "1" }, + "test/list_test" => { + "noinst" => "1" + }, "test/localetest" => { "noinst" => "1" }, @@ -1321,9 +1537,21 @@ our %unified_info = ( "test/mdc2test" => { "noinst" => "1" }, + "test/membio_test" => { + "noinst" => "1" + }, "test/memleaktest" => { "noinst" => "1" }, + "test/ml_dsa_test" => { + "noinst" => "1" + }, + "test/ml_kem_evp_extra_test" => { + "noinst" => "1" + }, + "test/ml_kem_internal_test" => { + "noinst" => "1" + }, "test/modes_internal_test" => { "noinst" => "1" }, @@ -1342,6 +1570,9 @@ our %unified_info = ( "test/packettest" => { "noinst" => "1" }, + "test/pairwise_fail_test" => { + "noinst" => "1" + }, "test/param_build_test" => { "noinst" => "1" }, @@ -1366,6 +1597,9 @@ our %unified_info = ( "test/pemtest" => { "noinst" => "1" }, + "test/pkcs12_api_test" => { + "noinst" => "1" + }, "test/pkcs12_format_test" => { "noinst" => "1" }, @@ -1381,6 +1615,9 @@ our %unified_info = ( "test/poly1305_internal_test" => { "noinst" => "1" }, + "test/priority_queue_test" => { + "noinst" => "1" + }, "test/property_test" => { "noinst" => "1" }, @@ -1390,6 +1627,9 @@ our %unified_info = ( "test/provfetchtest" => { "noinst" => "1" }, + "test/provider_default_search_path_test" => { + "noinst" => "1" + }, "test/provider_fallback_test" => { "noinst" => "1" }, @@ -1408,6 +1648,72 @@ our %unified_info = ( "test/punycode_test" => { "noinst" => "1" }, + "test/quic_ackm_test" => { + "noinst" => "1" + }, + "test/quic_cc_test" => { + "noinst" => "1" + }, + "test/quic_cfq_test" => { + "noinst" => "1" + }, + "test/quic_client_test" => { + "noinst" => "1" + }, + "test/quic_fc_test" => { + "noinst" => "1" + }, + "test/quic_fifd_test" => { + "noinst" => "1" + }, + "test/quic_lcidm_test" => { + "noinst" => "1" + }, + "test/quic_multistream_test" => { + "noinst" => "1" + }, + "test/quic_newcid_test" => { + "noinst" => "1" + }, + "test/quic_qlog_test" => { + "noinst" => "1" + }, + "test/quic_radix_test" => { + "noinst" => "1" + }, + "test/quic_rcidm_test" => { + "noinst" => "1" + }, + "test/quic_record_test" => { + "noinst" => "1" + }, + "test/quic_srt_gen_test" => { + "noinst" => "1" + }, + "test/quic_srtm_test" => { + "noinst" => "1" + }, + "test/quic_stream_test" => { + "noinst" => "1" + }, + "test/quic_tserver_test" => { + "noinst" => "1" + }, + "test/quic_txp_test" => { + "noinst" => "1" + }, + "test/quic_txpim_test" => { + "noinst" => "1" + }, + "test/quic_wire_test" => { + "noinst" => "1" + }, + "test/quicapitest" => { + "noinst" => "1" + }, + "test/quicfaultstest" => { + "noinst" => "1" + }, "test/rand_status_test" => { "noinst" => "1" }, @@ -1423,12 +1729,15 @@ our %unified_info = ( "test/rc5test" => { "noinst" => "1" }, - "test/rdrand_sanitytest" => { + "test/rdcpu_sanitytest" => { "noinst" => "1" }, "test/recordlentest" => { "noinst" => "1" }, + "test/rpktest" => { + "noinst" => "1" + }, "test/rsa_complex" => { "noinst" => "1" }, @@ -1441,6 +1750,12 @@ our %unified_info = ( "test/rsa_test" => { "noinst" => "1" }, + "test/rsa_x931_test" => { + "noinst" => "1" + }, + "test/safe_math_test" => { + "noinst" => "1" + }, "test/sanitytest" => { "noinst" => "1" }, @@ -1456,6 +1771,9 @@ our %unified_info = ( "test/siphash_internal_test" => { "noinst" => "1" }, + "test/slh_dsa_test" => { + "noinst" => "1" + }, "test/sm2_internal_test" => { "noinst" => "1" }, @@ -1477,6 +1795,9 @@ our %unified_info = ( "test/ssl_ctx_test" => { "noinst" => "1" }, + "test/ssl_handshake_rtt_test" => { + "noinst" => "1" + }, "test/ssl_old_test" => { "noinst" => "1" }, @@ -1498,12 +1819,18 @@ our %unified_info = ( "test/stack_test" => { "noinst" => "1" }, + "test/strtoultest" => { + "noinst" => "1" + }, "test/sysdefaulttest" => { "noinst" => "1" }, "test/test_test" => { "noinst" => "1" }, + "test/threadpool_test" => { + "noinst" => "1" + }, "test/threadstest" => { "noinst" => "1" }, @@ -1513,12 +1840,18 @@ our %unified_info = ( "test/time_offset_test" => { "noinst" => "1" }, + "test/time_test" => { + "noinst" => "1" + }, "test/tls13ccstest" => { "noinst" => "1" }, "test/tls13encryptiontest" => { "noinst" => "1" }, + "test/tls13groupselection_test" => { + "noinst" => "1" + }, "test/trace_api_test" => { "noinst" => "1" }, @@ -1546,6 +1879,9 @@ our %unified_info = ( "test/wpackettest" => { "noinst" => "1" }, + "test/x509_acert_test" => { + "noinst" => "1" + }, "test/x509_check_cert_pkey_test" => { "noinst" => "1" }, @@ -1555,6 +1891,15 @@ our %unified_info = ( "test/x509_internal_test" => { "noinst" => "1" }, + "test/x509_load_cert_file_test" => { + "noinst" => "1" + }, + "test/x509_req_test" => { + "noinst" => "1" + }, + "test/x509_test" => { + "noinst" => "1" + }, "test/x509_time_test" => { "noinst" => "1" }, @@ -1634,6 +1979,7 @@ our %unified_info = ( "ECP_NISTZ256_ASM", "KECCAK1600_ASM", "OPENSSL_CPUID_OBJ", + "OPENSSL_IA32_SSE2", "SHA1_ASM", "SHA256_ASM", "SHA512_ASM", @@ -1662,6 +2008,9 @@ our %unified_info = ( "MD5_ASM", "RC4_ASM" ], + "test/endecode_test" => [ + "STATIC_LEGACY" + ], "test/evp_extra_test" => [ "STATIC_LEGACY" ], @@ -1674,14 +2023,21 @@ our %unified_info = ( }, "depends" => { "" => [ + "OpenSSLConfigVersion.cmake", + "crypto/params_idx.c", + "exporters/OpenSSLConfigVersion.cmake", + "exporters/openssl.pc", "include/crypto/bn_conf.h", "include/crypto/dso_conf.h", + "include/internal/param_names.h", "include/openssl/asn1.h", "include/openssl/asn1t.h", "include/openssl/bio.h", "include/openssl/cmp.h", "include/openssl/cms.h", + "include/openssl/comp.h", "include/openssl/conf.h", + "include/openssl/core_names.h", "include/openssl/crmf.h", "include/openssl/crypto.h", "include/openssl/ct.h", @@ -1698,10 +2054,22 @@ our %unified_info = ( "include/openssl/ssl.h", "include/openssl/ui.h", "include/openssl/x509.h", + "include/openssl/x509_acert.h", "include/openssl/x509_vfy.h", "include/openssl/x509v3.h", + "openssl.pc", "test/provider_internal_test.cnf" ], + "OpenSSLConfig.cmake" => [ + "builddata.pm" + ], + "OpenSSLConfigVersion.cmake" => [ + "OpenSSLConfig.cmake", + "builddata.pm" + ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/progs.h" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/progs.h" ], @@ -1847,6 +2215,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/progs.h" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/progs.h" + ], "apps/openssl-bin-smime.o" => [ "apps/progs.h" ], @@ -1935,6 +2306,9 @@ our %unified_info = ( "crypto/libcrypto-lib-info.o" => [ "crypto/buildinf.h" ], + "crypto/params_idx.c" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "crypto/rc4/rc4-586.S" => [ "crypto/perlasm/x86asm.pl" ], @@ -2100,6 +2474,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -2241,6 +2618,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -2277,6 +2657,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -2292,6 +2675,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -2364,6 +2750,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -2430,6 +2819,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -2529,6 +2921,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -2667,6 +3065,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -2784,6 +3185,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -2871,6 +3278,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -2943,9 +3353,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -2961,12 +3377,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -3036,9 +3458,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -3048,12 +3479,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -3069,9 +3512,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -3096,6 +3545,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -3111,6 +3563,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -3147,6 +3602,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -3420,6 +3878,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -3459,6 +3920,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -3480,6 +3944,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -3594,6 +4061,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -3621,9 +4091,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -3639,6 +4121,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -3648,12 +4133,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -3672,12 +4163,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -3687,9 +4190,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -3702,9 +4211,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -3720,24 +4241,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -3750,6 +4292,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -3759,8 +4307,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -3780,6 +4328,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -3828,6 +4391,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -3894,6 +4460,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -4017,9 +4586,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -4035,6 +4610,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -4059,9 +4637,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -4095,6 +4682,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -4152,15 +4742,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -4170,6 +4772,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -4191,9 +4796,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -4209,6 +4820,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -4221,9 +4835,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -4254,9 +4865,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -4272,12 +4880,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -4332,6 +4994,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -4341,9 +5006,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -4491,6 +5153,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -4632,6 +5297,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -4668,6 +5336,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -4683,6 +5354,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -4755,6 +5429,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -4821,6 +5498,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -4920,6 +5600,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -5058,6 +5744,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -5175,6 +5864,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -5262,6 +5957,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -5334,9 +6032,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -5352,12 +6056,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -5427,9 +6137,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -5439,12 +6158,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -5460,9 +6191,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -5487,6 +6224,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -5502,6 +6242,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -5538,6 +6281,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -5811,6 +6557,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -5850,6 +6599,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -5871,6 +6623,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -5985,6 +6740,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -6012,9 +6770,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -6030,6 +6800,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -6039,12 +6812,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -6063,12 +6842,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -6078,9 +6869,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -6093,9 +6890,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -6111,24 +6920,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -6141,6 +6971,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -6150,8 +6986,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -6171,6 +7007,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -6219,6 +7070,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -6285,6 +7139,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -6408,9 +7265,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -6426,6 +7289,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -6450,9 +7316,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -6486,6 +7361,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -6543,15 +7421,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -6561,6 +7451,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -6582,9 +7475,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -6600,6 +7499,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -6612,9 +7514,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -6645,9 +7544,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -6663,12 +7559,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -6723,6 +7673,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -6732,9 +7685,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -6914,6 +7864,10 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod.in", "doc/perlvars.pm" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in", + "doc/perlvars.pm" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in", "doc/perlvars.pm" @@ -6953,6 +7907,27 @@ our %unified_info = ( "doc/man7/openssl_user_macros.pod" => [ "doc/man7/openssl_user_macros.pod.in" ], + "exporters/OpenSSLConfig.cmake" => [ + "installdata.pm" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/OpenSSLConfig.cmake", + "installdata.pm" + ], + "exporters/libcrypto.pc" => [ + "installdata.pm" + ], + "exporters/libssl.pc" => [ + "installdata.pm" + ], + "exporters/openssl.pc" => [ + "exporters/libcrypto.pc", + "exporters/libssl.pc", + "installdata.pm" + ], + "fuzz/acert-test" => [ + "libcrypto" + ], "fuzz/asn1-test" => [ "libcrypto", "libssl" @@ -6985,17 +7960,85 @@ our %unified_info = ( "fuzz/ct-test" => [ "libcrypto" ], + "fuzz/decoder-test" => [ + "libcrypto" + ], + "fuzz/dtlsclient-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/dtlsserver-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/hashtable-test" => [ + "libcrypto.a" + ], + "fuzz/ml-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/ml-kem-test" => [ + "libcrypto.a" + ], + "fuzz/pem-test" => [ + "libcrypto.a" + ], + "fuzz/provider-test" => [ + "libcrypto" + ], + "fuzz/punycode-test" => [ + "libcrypto.a" + ], + "fuzz/quic-client-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-lcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-rcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-server-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-srtm-test" => [ + "libcrypto.a", + "libssl.a" + ], "fuzz/server-test" => [ "libcrypto", "libssl" ], + "fuzz/slh-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/smime-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/v3name-test" => [ + "libcrypto.a" + ], "fuzz/x509-test" => [ "libcrypto" ], + "include/internal/param_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], + "include/openssl/core_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "libcrypto.ld" => [ "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libcrypto.pc" => [ + "builddata.pm" + ], "libssl" => [ "libcrypto" ], @@ -7003,6 +8046,14 @@ our %unified_info = ( "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libssl.pc" => [ + "builddata.pm" + ], + "openssl.pc" => [ + "builddata.pm", + "libcrypto.pc", + "libssl.pc" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/DIGESTS.asn1", "providers/common/der/NIST.asn1", @@ -7020,11 +8071,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7064,6 +8123,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov/der_rsa.h" ], @@ -7071,6 +8136,12 @@ our %unified_info = ( "providers/common/include/prov/der_digests.h", "providers/common/include/prov/der_rsa.h" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov/der_wrap.h" ], @@ -7110,11 +8181,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7147,9 +8226,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov/der_sm2.h" ], @@ -7162,9 +8247,15 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/legacy" => [ "libcrypto", "providers/liblegacy.a" @@ -7242,6 +8333,14 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_addr_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/bio_base64_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_callback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7250,6 +8349,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_dgram_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_enc_test" => [ "libcrypto", "test/libtestutil.a" @@ -7258,6 +8361,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_meth_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_prefix_text" => [ "libcrypto", "test/libtestutil.a" @@ -7270,6 +8377,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_tfo_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bioprinttest" => [ "libcrypto", "test/libtestutil.a" @@ -7282,6 +8393,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/build_wincrypt_test" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_aes" => [ "libcrypto", "libssl" @@ -7302,6 +8417,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_byteorder" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_camellia" => [ "libcrypto", "libssl" @@ -7334,10 +8453,6 @@ our %unified_info = ( "libcrypto", "libssl" ], - "test/buildtest_c_core_names" => [ - "libcrypto", - "libssl" - ], "test/buildtest_c_core_object" => [ "libcrypto", "libssl" @@ -7370,6 +8485,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_e_ostime" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_ebcdic" => [ "libcrypto", "libssl" @@ -7406,6 +8525,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_hpke" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_http" => [ "libcrypto", "libssl" @@ -7414,6 +8537,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_indicator" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_kdf" => [ "libcrypto", "libssl" @@ -7434,6 +8561,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_ml_kem" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_modes" => [ "libcrypto", "libssl" @@ -7474,6 +8605,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_quic" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_rand" => [ "libcrypto", "libssl" @@ -7530,6 +8665,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_thread" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_tls1" => [ "libcrypto", "libssl" @@ -7550,10 +8689,23 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/byteorder_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ca_internals_test" => [ + "libssl", + "test/libtestutil.a" + ], "test/casttest" => [ "libcrypto", "test/libtestutil.a" ], + "test/cert_comp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/chacha_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7667,6 +8819,10 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/decoder_propq_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/defltfips_test" => [ "libcrypto", "test/libtestutil.a" @@ -7723,6 +8879,8 @@ our %unified_info = ( ], "test/endecode_test" => [ "libcrypto.a", + "providers/libcommon.a", + "providers/liblegacy.a", "test/libtestutil.a" ], "test/endecoder_legacy_test" => [ @@ -7766,6 +8924,10 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => [ "libcrypto" ], + "test/evp_pkey_dhkem_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/evp_pkey_dparams_test" => [ "libcrypto", "test/libtestutil.a" @@ -7774,10 +8936,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/evp_skey_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/evp_xof_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/exdatatest" => [ "libcrypto", "test/libtestutil.a" @@ -7816,6 +8986,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/hpke_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/http_test" => [ "libcrypto", "test/libtestutil.a" @@ -7828,17 +9002,25 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/json_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/keymgmt_internal_test" => [ "libcrypto.a", "test/libtestutil.a" ], "test/lhash_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/libtestutil.a" => [ "libcrypto" ], + "test/list_test" => [ + "test/libtestutil.a" + ], "test/localetest" => [ "libcrypto", "test/libtestutil.a" @@ -7851,10 +9033,26 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/membio_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/memleaktest" => [ "libcrypto", "test/libtestutil.a" ], + "test/ml_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_evp_extra_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_internal_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/modes_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7879,6 +9077,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pairwise_fail_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/param_build_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7911,6 +9113,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pkcs12_api_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/pkcs12_format_test" => [ "libcrypto", "test/libtestutil.a" @@ -7931,6 +9137,11 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/priority_queue_test" => [ + "libcrypto", + "libssl.a", + "test/libtestutil.a" + ], "test/property_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7943,6 +9154,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/provider_default_search_path_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/provider_fallback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7967,12 +9182,122 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/quic_ackm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cfq_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_client_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fifd_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_lcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_multistream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_newcid_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_qlog_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_radix_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_rcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_record_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srt_gen_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srtm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_stream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_tserver_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txpim_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_wire_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicapitest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicfaultstest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/rand_status_test" => [ "libcrypto", "test/libtestutil.a" ], "test/rand_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/rc2test" => [ @@ -7987,7 +9312,7 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "libcrypto.a", "test/libtestutil.a" ], @@ -7996,6 +9321,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/rpktest" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/rsa_mp_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8008,10 +9338,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/sanitytest" => [ + "test/rsa_x931_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/safe_math_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/sanitytest" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/secmemtest" => [ "libcrypto", "test/libtestutil.a" @@ -8029,6 +9367,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/slh_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/sm2_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8058,6 +9400,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/ssl_handshake_rtt_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/ssl_old_test" => [ "libcrypto.a", "libssl.a", @@ -8074,8 +9421,8 @@ our %unified_info = ( "test/libtestutil.a" ], "test/sslapitest" => [ - "libcrypto", - "libssl", + "libcrypto.a", + "libssl.a", "test/libtestutil.a" ], "test/sslbuffertest" => [ @@ -8092,6 +9439,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/strtoultest" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/sysdefaulttest" => [ "libcrypto", "libssl", @@ -8101,8 +9452,12 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/threadpool_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/threadstest" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/threadstest_fips" => [ @@ -8113,6 +9468,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/time_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/tls13ccstest" => [ "libcrypto", "libssl", @@ -8123,6 +9482,11 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/tls13groupselection_test" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/trace_api_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8160,6 +9524,10 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/x509_acert_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_check_cert_pkey_test" => [ "libcrypto", "test/libtestutil.a" @@ -8172,6 +9540,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/x509_load_cert_file_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_req_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_time_test" => [ "libcrypto", "test/libtestutil.a" @@ -8186,9 +9566,13 @@ our %unified_info = ( }, "dirinfo" => { "apps" => { + "deps" => [ + "apps/ca_internals_test-bin-ca.o" + ], "products" => { "bin" => [ - "apps/openssl" + "apps/openssl", + "test/ca_internals_test" ], "script" => [ "apps/CA.pl", @@ -8199,6 +9583,14 @@ our %unified_info = ( "apps/lib" => { "deps" => [ "apps/lib/openssl-bin-cmp_mock_srv.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", "apps/lib/cmp_client_test-bin-cmp_mock_srv.o", "apps/lib/uitest-bin-apps_ui.o", "apps/lib/libapps-lib-app_libctx.o", @@ -8207,12 +9599,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -8223,6 +9617,7 @@ our %unified_info = ( "products" => { "bin" => [ "apps/openssl", + "test/ca_internals_test", "test/cmp_client_test", "test/uitest" ], @@ -8234,8 +9629,12 @@ our %unified_info = ( }, "crypto" => { "deps" => [ + "crypto/asn1_time_test-bin-ctype.o", + "crypto/ca_internals_test-bin-ctype.o", + "crypto/packettest-bin-quic_vlint.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -8245,10 +9644,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -8265,6 +9667,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -8272,12 +9675,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libcrypto-lib-x86_64cpuid.o", @@ -8300,6 +9707,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -8308,9 +9716,15 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", "crypto/libfips-lib-x86_64cpuid.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test", + "test/packettest" + ], "lib" => [ "libcrypto", "providers/libfips.a" @@ -8330,6 +9744,7 @@ our %unified_info = ( "crypto/aes/libcrypto-lib-aesni-sha1-x86_64.o", "crypto/aes/libcrypto-lib-aesni-sha256-x86_64.o", "crypto/aes/libcrypto-lib-aesni-x86_64.o", + "crypto/aes/libcrypto-lib-aesni-xts-avx512.o", "crypto/aes/libcrypto-lib-bsaes-x86_64.o", "crypto/aes/libcrypto-lib-vpaes-x86_64.o", "crypto/aes/libfips-lib-aes-x86_64.o", @@ -8339,6 +9754,7 @@ our %unified_info = ( "crypto/aes/libfips-lib-aesni-sha1-x86_64.o", "crypto/aes/libfips-lib-aesni-sha256-x86_64.o", "crypto/aes/libfips-lib-aesni-x86_64.o", + "crypto/aes/libfips-lib-aesni-xts-avx512.o", "crypto/aes/libfips-lib-bsaes-x86_64.o", "crypto/aes/libfips-lib-vpaes-x86_64.o" ], @@ -8361,6 +9777,8 @@ our %unified_info = ( }, "crypto/asn1" => { "deps" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", "crypto/asn1/libcrypto-lib-a_bitstr.o", "crypto/asn1/libcrypto-lib-a_d2i_fp.o", "crypto/asn1/libcrypto-lib-a_digest.o", @@ -8427,6 +9845,10 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test" + ], "lib" => [ "libcrypto" ] @@ -8492,6 +9914,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -8540,8 +9963,13 @@ our %unified_info = ( "crypto/bn/libcrypto-lib-bn_srp.o", "crypto/bn/libcrypto-lib-bn_word.o", "crypto/bn/libcrypto-lib-bn_x931p.o", + "crypto/bn/libcrypto-lib-rsaz-2k-avx512.o", + "crypto/bn/libcrypto-lib-rsaz-2k-avxifma.o", + "crypto/bn/libcrypto-lib-rsaz-3k-avx512.o", + "crypto/bn/libcrypto-lib-rsaz-3k-avxifma.o", + "crypto/bn/libcrypto-lib-rsaz-4k-avx512.o", + "crypto/bn/libcrypto-lib-rsaz-4k-avxifma.o", "crypto/bn/libcrypto-lib-rsaz-avx2.o", - "crypto/bn/libcrypto-lib-rsaz-avx512.o", "crypto/bn/libcrypto-lib-rsaz-x86_64.o", "crypto/bn/libcrypto-lib-rsaz_exp.o", "crypto/bn/libcrypto-lib-rsaz_exp_x2.o", @@ -8575,8 +10003,13 @@ our %unified_info = ( "crypto/bn/libfips-lib-bn_sqr.o", "crypto/bn/libfips-lib-bn_sqrt.o", "crypto/bn/libfips-lib-bn_word.o", + "crypto/bn/libfips-lib-rsaz-2k-avx512.o", + "crypto/bn/libfips-lib-rsaz-2k-avxifma.o", + "crypto/bn/libfips-lib-rsaz-3k-avx512.o", + "crypto/bn/libfips-lib-rsaz-3k-avxifma.o", + "crypto/bn/libfips-lib-rsaz-4k-avx512.o", + "crypto/bn/libfips-lib-rsaz-4k-avxifma.o", "crypto/bn/libfips-lib-rsaz-avx2.o", - "crypto/bn/libfips-lib-rsaz-avx512.o", "crypto/bn/libfips-lib-rsaz-x86_64.o", "crypto/bn/libfips-lib-rsaz_exp.o", "crypto/bn/libfips-lib-rsaz_exp_x2.o", @@ -8673,6 +10106,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -9046,7 +10480,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", - "crypto/err/libcrypto-lib-err_prn.o" + "crypto/err/libcrypto-lib-err_mark.o", + "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o" ], "products" => { "lib" => [ @@ -9147,7 +10583,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/evp/libfips-lib-asymcipher.o", "crypto/evp/libfips-lib-dh_support.o", "crypto/evp/libfips-lib-digest.o", @@ -9163,14 +10601,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", - "crypto/evp/libfips-lib-signature.o" + "crypto/evp/libfips-lib-s_lib.o", + "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o" ], "products" => { "lib" => [ @@ -9203,6 +10642,20 @@ our %unified_info = ( ] } }, + "crypto/hashtable" => { + "deps" => [ + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/hmac" => { "deps" => [ "crypto/hmac/libcrypto-lib-hmac.o", @@ -9215,6 +10668,17 @@ our %unified_info = ( ] } }, + "crypto/hpke" => { + "deps" => [ + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, "crypto/http" => { "deps" => [ "crypto/http/libcrypto-lib-http_client.o", @@ -9299,8 +10763,47 @@ our %unified_info = ( ] } }, + "crypto/ml_dsa" => { + "deps" => [ + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ml_kem" => { + "deps" => [ + "crypto/ml_kem/libcrypto-lib-ml_kem.o", + "crypto/ml_kem/libfips-lib-ml_kem.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/modes" => { "deps" => [ + "crypto/modes/libcrypto-lib-aes-gcm-avx512.o", "crypto/modes/libcrypto-lib-aesni-gcm-x86_64.o", "crypto/modes/libcrypto-lib-cbc128.o", "crypto/modes/libcrypto-lib-ccm128.o", @@ -9314,6 +10817,8 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", + "crypto/modes/libfips-lib-aes-gcm-avx512.o", "crypto/modes/libfips-lib-aesni-gcm-x86_64.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", @@ -9323,7 +10828,8 @@ our %unified_info = ( "crypto/modes/libfips-lib-ghash-x86_64.o", "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", - "crypto/modes/libfips-lib-xts128.o" + "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o" ], "products" => { "lib" => [ @@ -9467,6 +10973,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rand/libfips-lib-rand_lib.o" ], @@ -9621,6 +11128,36 @@ our %unified_info = ( ] } }, + "crypto/slh_dsa" => { + "deps" => [ + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/sm2" => { "deps" => [ "crypto/sm2/libcrypto-lib-sm2_crypt.o", @@ -9694,6 +11231,38 @@ our %unified_info = ( ] } }, + "crypto/thread" => { + "deps" => [ + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/thread/arch" => { + "deps" => [ + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/ts" => { "deps" => [ "crypto/ts/libcrypto-lib-ts_asn1.o", @@ -9760,14 +11329,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -9776,12 +11353,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -9789,13 +11371,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -9813,6 +11402,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -9822,6 +11412,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -9850,6 +11441,7 @@ our %unified_info = ( "fuzz" => { "products" => { "bin" => [ + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -9860,13 +11452,31 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test" ] } }, "providers" => { "deps" => [ + "providers/endecode_test-bin-legacyprov.o", "providers/evp_extra_test-bin-legacyprov.o", "providers/libcrypto-lib-baseprov.o", "providers/libcrypto-lib-defltprov.o", @@ -9876,6 +11486,7 @@ our %unified_info = ( ], "products" => { "bin" => [ + "test/endecode_test", "test/evp_extra_test" ], "dso" => [ @@ -9927,8 +11538,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/der/libdefault-lib-der_rsa_sig.o", "providers/common/der/libdefault-lib-der_sm2_gen.o", @@ -9947,6 +11562,7 @@ our %unified_info = ( "providers/fips" => { "deps" => [ "providers/fips/fips-dso-fips_entry.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o" @@ -9990,6 +11606,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -10014,7 +11633,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -10111,7 +11736,10 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", - "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" + "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" ], "products" => { "lib" => [ @@ -10139,7 +11767,9 @@ our %unified_info = ( }, "providers/implementations/kdfs" => { "deps" => [ + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -10158,7 +11788,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", - "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" + "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" ], "products" => { "lib" => [ @@ -10170,13 +11801,22 @@ our %unified_info = ( }, "providers/implementations/kem" => { "deps" => [ + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", - "providers/implementations/kem/libfips-lib-rsa_kem.o" + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", + "providers/implementations/kem/libfips-lib-rsa_kem.o", + "providers/implementations/kem/libtemplate-lib-template_kem.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10188,19 +11828,29 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", - "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10228,18 +11878,18 @@ our %unified_info = ( }, "providers/implementations/rands" => { "deps" => [ - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o" ], "products" => { @@ -10268,13 +11918,31 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", - "providers/implementations/signature/libfips-lib-rsa_sig.o" + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", + "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/skeymgmt" => { + "deps" => [ + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o" ], "products" => { "lib" => [ @@ -10302,14 +11970,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -10325,32 +11994,107 @@ our %unified_info = ( "ssl/libssl-lib-t1_trce.o", "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", - "ssl/libssl-lib-tls_srp.o", - "ssl/libdefault-lib-s3_cbc.o", - "ssl/libfips-lib-s3_cbc.o" + "ssl/libssl-lib-tls_srp.o" ], "products" => { "lib" => [ - "libssl", - "providers/libdefault.a", - "providers/libfips.a" + "libssl" + ] + } + }, + "ssl/quic" => { + "deps" => [ + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, "ssl/record" => { "deps" => [ - "ssl/record/libssl-lib-dtls1_bitmap.o", "ssl/record/libssl-lib-rec_layer_d1.o", - "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/libssl-lib-rec_layer_s3.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "ssl/record/methods" => { + "deps" => [ + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/record/methods/libcommon-lib-tls_pad.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o", + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "products" => { "lib" => [ "libssl", - "providers/libcommon.a" + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "ssl/rio" => { + "deps" => [ + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, @@ -10388,9 +12132,40 @@ our %unified_info = ( "test/helpers/dtlstest-bin-ssltestlib.o", "test/helpers/endecode_test-bin-predefined_dhparams.o", "test/helpers/fatalerrtest-bin-ssltestlib.o", + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/helpers/pkcs12_api_test-bin-pkcs12.o", "test/helpers/pkcs12_format_test-bin-pkcs12.o", + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", "test/helpers/recordlentest-bin-ssltestlib.o", + "test/helpers/rpktest-bin-ssltestlib.o", "test/helpers/servername_test-bin-ssltestlib.o", + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/helpers/ssl_test-bin-handshake.o", "test/helpers/ssl_test-bin-handshake_srp.o", @@ -10399,7 +12174,8 @@ our %unified_info = ( "test/helpers/sslapitest-bin-ssltestlib.o", "test/helpers/sslbuffertest-bin-ssltestlib.o", "test/helpers/sslcorrupttest-bin-ssltestlib.o", - "test/helpers/tls13ccstest-bin-ssltestlib.o" + "test/helpers/tls13ccstest-bin-ssltestlib.o", + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" ], "products" => { "bin" => [ @@ -10417,16 +12193,37 @@ our %unified_info = ( "test/dtlstest", "test/endecode_test", "test/fatalerrtest", + "test/json_test", + "test/pkcs12_api_test", "test/pkcs12_format_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_radix_test", + "test/quic_srt_gen_test", + "test/quicapitest", + "test/quicfaultstest", "test/recordlentest", + "test/rpktest", "test/servername_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", "test/sslapitest", "test/sslbuffertest", "test/sslcorrupttest", - "test/tls13ccstest" + "test/tls13ccstest", + "test/tls13groupselection_test" + ] + } + }, + "test/radix" => { + "deps" => [ + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "products" => { + "bin" => [ + "test/quic_radix_test" ] } }, @@ -10438,6 +12235,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -10473,6 +12271,12 @@ our %unified_info = ( } }, "generate" => { + "OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], "apps/progs.c" => [ "apps/progs.pl", "\"-C\"", @@ -10483,6 +12287,19 @@ our %unified_info = ( "\"-H\"", "\$(APPS_OPENSSL)" ], + "builddata.pm" => [ + "util/mkinstallvars.pl", + "PREFIX=.", + "BINDIR=apps", + "APPLINKDIR=ms", + "LIBDIR=", + "INCLUDEDIR=include", + "\"INCLUDEDIR=\$(SRCDIR)/include\"", + "ENGINESDIR=engines", + "MODULESDIR=providers", + "\"VERSION=\$(VERSION)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"" + ], "crypto/aes/aes-586.S" => [ "crypto/aes/asm/aes-586.pl" ], @@ -10504,6 +12321,24 @@ our %unified_info = ( "crypto/aes/aes-ppc.s" => [ "crypto/aes/asm/aes-ppc.pl" ], + "crypto/aes/aes-riscv32-zkn.s" => [ + "crypto/aes/asm/aes-riscv32-zkn.pl" + ], + "crypto/aes/aes-riscv64-zkn.s" => [ + "crypto/aes/asm/aes-riscv64-zkn.pl" + ], + "crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvbb-zvkg-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkb-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkb-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkned.pl" + ], + "crypto/aes/aes-riscv64.s" => [ + "crypto/aes/asm/aes-riscv64.pl" + ], "crypto/aes/aes-s390x.S" => [ "crypto/aes/asm/aes-s390x.pl" ], @@ -10531,6 +12366,9 @@ our %unified_info = ( "crypto/aes/aesni-x86_64.s" => [ "crypto/aes/asm/aesni-x86_64.pl" ], + "crypto/aes/aesni-xts-avx512.s" => [ + "crypto/aes/asm/aesni-xts-avx512.pl" + ], "crypto/aes/aesp8-ppc.s" => [ "crypto/aes/asm/aesp8-ppc.pl" ], @@ -10543,12 +12381,18 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.S" => [ "crypto/aes/asm/bsaes-armv7.pl" ], + "crypto/aes/bsaes-armv8.S" => [ + "crypto/aes/asm/bsaes-armv8.pl" + ], "crypto/aes/bsaes-x86_64.s" => [ "crypto/aes/asm/bsaes-x86_64.pl" ], "crypto/aes/vpaes-armv8.S" => [ "crypto/aes/asm/vpaes-armv8.pl" ], + "crypto/aes/vpaes-loongarch64.S" => [ + "crypto/aes/asm/vpaes-loongarch64.pl" + ], "crypto/aes/vpaes-ppc.s" => [ "crypto/aes/asm/vpaes-ppc.pl" ], @@ -10609,15 +12453,33 @@ our %unified_info = ( "crypto/bn/ppc-mont.s" => [ "crypto/bn/asm/ppc-mont.pl" ], + "crypto/bn/ppc64-mont-fixed.s" => [ + "crypto/bn/asm/ppc64-mont-fixed.pl" + ], "crypto/bn/ppc64-mont.s" => [ "crypto/bn/asm/ppc64-mont.pl" ], + "crypto/bn/rsaz-2k-avx512.s" => [ + "crypto/bn/asm/rsaz-2k-avx512.pl" + ], + "crypto/bn/rsaz-2k-avxifma.s" => [ + "crypto/bn/asm/rsaz-2k-avxifma.pl" + ], + "crypto/bn/rsaz-3k-avx512.s" => [ + "crypto/bn/asm/rsaz-3k-avx512.pl" + ], + "crypto/bn/rsaz-3k-avxifma.s" => [ + "crypto/bn/asm/rsaz-3k-avxifma.pl" + ], + "crypto/bn/rsaz-4k-avx512.s" => [ + "crypto/bn/asm/rsaz-4k-avx512.pl" + ], + "crypto/bn/rsaz-4k-avxifma.s" => [ + "crypto/bn/asm/rsaz-4k-avxifma.pl" + ], "crypto/bn/rsaz-avx2.s" => [ "crypto/bn/asm/rsaz-avx2.pl" ], - "crypto/bn/rsaz-avx512.s" => [ - "crypto/bn/asm/rsaz-avx512.pl" - ], "crypto/bn/rsaz-x86_64.s" => [ "crypto/bn/asm/rsaz-x86_64.pl" ], @@ -10679,6 +12541,9 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.S" => [ "crypto/chacha/asm/chacha-armv4.pl" ], + "crypto/chacha/chacha-armv8-sve.S" => [ + "crypto/chacha/asm/chacha-armv8-sve.pl" + ], "crypto/chacha/chacha-armv8.S" => [ "crypto/chacha/asm/chacha-armv8.pl" ], @@ -10691,9 +12556,19 @@ our %unified_info = ( "crypto/chacha/chacha-ia64.s" => [ "crypto/chacha/chacha-ia64.S" ], + "crypto/chacha/chacha-loongarch64.S" => [ + "crypto/chacha/asm/chacha-loongarch64.pl" + ], "crypto/chacha/chacha-ppc.s" => [ "crypto/chacha/asm/chacha-ppc.pl" ], + "crypto/chacha/chacha-riscv64-v-zbb-zvkb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl", + "zvkb" + ], + "crypto/chacha/chacha-riscv64-v-zbb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl" + ], "crypto/chacha/chacha-s390x.S" => [ "crypto/chacha/asm/chacha-s390x.pl" ], @@ -10703,6 +12578,9 @@ our %unified_info = ( "crypto/chacha/chacha-x86_64.s" => [ "crypto/chacha/asm/chacha-x86_64.pl" ], + "crypto/chacha/chachap10-ppc.s" => [ + "crypto/chacha/asm/chachap10-ppc.pl" + ], "crypto/des/crypt586.S" => [ "crypto/des/asm/crypt586.pl" ], @@ -10715,6 +12593,9 @@ our %unified_info = ( "crypto/des/dest4-sparcv9.S" => [ "crypto/des/asm/dest4-sparcv9.pl" ], + "crypto/ec/ecp_nistp384-ppc64.s" => [ + "crypto/ec/asm/ecp_nistp384-ppc64.pl" + ], "crypto/ec/ecp_nistp521-ppc64.s" => [ "crypto/ec/asm/ecp_nistp521-ppc64.pl" ], @@ -10739,6 +12620,9 @@ our %unified_info = ( "crypto/ec/ecp_nistz256-x86_64.s" => [ "crypto/ec/asm/ecp_nistz256-x86_64.pl" ], + "crypto/ec/ecp_sm2p256-armv8.S" => [ + "crypto/ec/asm/ecp_sm2p256-armv8.pl" + ], "crypto/ec/x25519-ppc64.s" => [ "crypto/ec/asm/x25519-ppc64.pl" ], @@ -10748,18 +12632,39 @@ our %unified_info = ( "crypto/ia64cpuid.s" => [ "crypto/ia64cpuid.S" ], + "crypto/loongarch64cpuid.s" => [ + "crypto/loongarch64cpuid.pl" + ], "crypto/md5/md5-586.S" => [ "crypto/md5/asm/md5-586.pl" ], + "crypto/md5/md5-aarch64.S" => [ + "crypto/md5/asm/md5-aarch64.pl" + ], + "crypto/md5/md5-loongarch64.S" => [ + "crypto/md5/asm/md5-loongarch64.pl" + ], "crypto/md5/md5-sparcv9.S" => [ "crypto/md5/asm/md5-sparcv9.pl" ], "crypto/md5/md5-x86_64.s" => [ "crypto/md5/asm/md5-x86_64.pl" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.S" => [ + "crypto/modes/asm/aes-gcm-armv8-unroll8_64.pl" + ], "crypto/modes/aes-gcm-armv8_64.S" => [ "crypto/modes/asm/aes-gcm-armv8_64.pl" ], + "crypto/modes/aes-gcm-avx512.s" => [ + "crypto/modes/asm/aes-gcm-avx512.pl" + ], + "crypto/modes/aes-gcm-ppc.s" => [ + "crypto/modes/asm/aes-gcm-ppc.pl" + ], + "crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s" => [ + "crypto/modes/asm/aes-gcm-riscv64-zvkb-zvkg-zvkned.pl" + ], "crypto/modes/aesni-gcm-x86_64.s" => [ "crypto/modes/asm/aesni-gcm-x86_64.pl" ], @@ -10778,6 +12683,15 @@ our %unified_info = ( "crypto/modes/ghash-parisc.s" => [ "crypto/modes/asm/ghash-parisc.pl" ], + "crypto/modes/ghash-riscv64-zvkb-zvbc.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkb-zvbc.pl" + ], + "crypto/modes/ghash-riscv64-zvkg.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkg.pl" + ], + "crypto/modes/ghash-riscv64.s" => [ + "crypto/modes/asm/ghash-riscv64.pl" + ], "crypto/modes/ghash-s390x.S" => [ "crypto/modes/asm/ghash-s390x.pl" ], @@ -10796,6 +12710,9 @@ our %unified_info = ( "crypto/modes/ghashv8-armx.S" => [ "crypto/modes/asm/ghashv8-armx.pl" ], + "crypto/params_idx.c" => [ + "crypto/params_idx.c.in" + ], "crypto/pariscid.s" => [ "crypto/pariscid.pl" ], @@ -10856,6 +12773,12 @@ our %unified_info = ( "crypto/ripemd/rmd-586.S" => [ "crypto/ripemd/asm/rmd-586.pl" ], + "crypto/riscv32cpuid.s" => [ + "crypto/riscv32cpuid.pl" + ], + "crypto/riscv64cpuid.s" => [ + "crypto/riscv64cpuid.pl" + ], "crypto/s390xcpuid.S" => [ "crypto/s390xcpuid.pl" ], @@ -10964,6 +12887,9 @@ our %unified_info = ( "crypto/sha/sha256-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S" => [ + "crypto/sha/asm/sha256-riscv64-zvkb-zvknha_or_zvknhb.pl" + ], "crypto/sha/sha256-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -11000,6 +12926,9 @@ our %unified_info = ( "crypto/sha/sha512-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha512-riscv64-zvkb-zvknhb.S" => [ + "crypto/sha/asm/sha512-riscv64-zvkb-zvknhb.pl" + ], "crypto/sha/sha512-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -11012,6 +12941,24 @@ our %unified_info = ( "crypto/sha/sha512p8-ppc.s" => [ "crypto/sha/asm/sha512p8-ppc.pl" ], + "crypto/sm3/sm3-armv8.S" => [ + "crypto/sm3/asm/sm3-armv8.pl" + ], + "crypto/sm3/sm3-riscv64-zvksh.S" => [ + "crypto/sm3/asm/sm3-riscv64-zvksh.pl" + ], + "crypto/sm4/sm4-armv8.S" => [ + "crypto/sm4/asm/sm4-armv8.pl" + ], + "crypto/sm4/sm4-riscv64-zvksed.s" => [ + "crypto/sm4/asm/sm4-riscv64-zvksed.pl" + ], + "crypto/sm4/vpsm4-armv8.S" => [ + "crypto/sm4/asm/vpsm4-armv8.pl" + ], + "crypto/sm4/vpsm4_ex-armv8.S" => [ + "crypto/sm4/asm/vpsm4_ex-armv8.pl" + ], "crypto/uplink-ia64.s" => [ "ms/uplink-ia64.pl" ], @@ -11177,6 +13124,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -11318,6 +13268,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -11354,6 +13307,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -11369,6 +13325,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -11441,6 +13400,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -11507,6 +13469,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -11606,6 +13571,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -11744,6 +13715,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -11861,6 +13835,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -11948,6 +13928,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -12020,9 +14003,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -12038,12 +14027,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -12113,9 +14108,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -12125,12 +14129,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -12146,9 +14162,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -12173,6 +14195,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -12188,6 +14213,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -12224,6 +14252,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -12497,6 +14528,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -12536,6 +14570,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -12557,6 +14594,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -12671,6 +14711,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -12698,9 +14741,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -12716,6 +14771,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -12725,12 +14783,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -12749,12 +14813,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -12764,9 +14840,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -12779,9 +14861,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -12797,24 +14891,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -12827,6 +14942,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -12836,8 +14957,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -12857,6 +14978,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -12905,6 +15041,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -12971,6 +15110,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -13094,9 +15236,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -13112,6 +15260,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -13136,9 +15287,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -13172,6 +15332,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -13229,15 +15392,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -13247,6 +15422,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -13268,9 +15446,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -13286,6 +15470,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -13298,9 +15485,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -13331,9 +15515,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -13349,12 +15530,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -13409,6 +15644,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -13418,9 +15656,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -13568,6 +15803,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -13709,6 +15947,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -13745,6 +15986,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -13760,6 +16004,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -13832,6 +16079,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -13898,6 +16148,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -13997,6 +16250,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -14135,6 +16394,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -14252,6 +16514,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -14339,6 +16607,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -14411,9 +16682,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -14429,12 +16706,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -14504,9 +16787,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -14516,12 +16808,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -14537,9 +16841,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -14564,6 +16874,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -14579,6 +16892,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -14615,6 +16931,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -14888,6 +17207,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -14927,6 +17249,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -14948,6 +17273,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -15062,6 +17390,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -15089,9 +17420,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -15107,6 +17450,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -15116,12 +17462,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -15140,12 +17492,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -15155,9 +17519,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -15170,9 +17540,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -15188,24 +17570,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -15218,6 +17621,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -15227,8 +17636,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -15242,11 +17651,26 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], - "doc/man/man3/X509V3_get_d2i.3" => [ - "doc/man3/X509V3_get_d2i.pod" + "doc/man/man3/X509V3_get_d2i.3" => [ + "doc/man3/X509V3_get_d2i.pod" + ], + "doc/man/man3/X509V3_set_ctx.3" => [ + "doc/man3/X509V3_set_ctx.pod" + ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" ], - "doc/man/man3/X509V3_set_ctx.3" => [ - "doc/man3/X509V3_set_ctx.pod" + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" @@ -15296,6 +17720,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -15362,6 +17789,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -15485,9 +17915,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -15503,6 +17939,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -15527,9 +17966,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -15563,6 +18011,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -15620,15 +18071,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -15638,6 +18101,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -15659,9 +18125,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -15677,6 +18149,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -15689,9 +18164,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -15722,9 +18194,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -15740,12 +18209,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -15800,6 +18323,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -15809,9 +18335,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -15947,6 +18470,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc/man1/openssl-sess_id.pod.in" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in" ], @@ -15983,12 +18509,30 @@ our %unified_info = ( "engines/e_padlock-x86_64.s" => [ "engines/asm/e_padlock-x86_64.pl" ], + "exporters/OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], + "exporters/libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], + "exporters/libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "exporters/openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "include/crypto/bn_conf.h" => [ "include/crypto/bn_conf.h.in" ], "include/crypto/dso_conf.h" => [ "include/crypto/dso_conf.h.in" ], + "include/internal/param_names.h" => [ + "include/internal/param_names.h.in" + ], "include/openssl/asn1.h" => [ "include/openssl/asn1.h.in" ], @@ -16004,12 +18548,18 @@ our %unified_info = ( "include/openssl/cms.h" => [ "include/openssl/cms.h.in" ], + "include/openssl/comp.h" => [ + "include/openssl/comp.h.in" + ], "include/openssl/conf.h" => [ "include/openssl/conf.h.in" ], "include/openssl/configuration.h" => [ "include/openssl/configuration.h.in" ], + "include/openssl/core_names.h" => [ + "include/openssl/core_names.h.in" + ], "include/openssl/crmf.h" => [ "include/openssl/crmf.h.in" ], @@ -16058,20 +18608,47 @@ our %unified_info = ( "include/openssl/x509.h" => [ "include/openssl/x509.h.in" ], + "include/openssl/x509_acert.h" => [ + "include/openssl/x509_acert.h.in" + ], "include/openssl/x509_vfy.h" => [ "include/openssl/x509_vfy.h.in" ], "include/openssl/x509v3.h" => [ "include/openssl/x509v3.h.in" ], + "installdata.pm" => [ + "util/mkinstallvars.pl", + "\"PREFIX=\$(INSTALLTOP)\"", + "BINDIR=bin", + "\"LIBDIR=\$(LIBDIR)\"", + "\"libdir=\$(libdir)\"", + "INCLUDEDIR=include", + "APPLINKDIR=include/openssl", + "\"ENGINESDIR=\$(ENGINESDIR)\"", + "\"MODULESDIR=\$(MODULESDIR)\"", + "\"PKGCONFIGDIR=\$(PKGCONFIGDIR)\"", + "\"CMAKECONFIGDIR=\$(CMAKECONFIGDIR)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"", + "\"VERSION=\$(VERSION)\"" + ], "libcrypto.ld" => [ "util/libcrypto.num", "libcrypto" ], + "libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], "libssl.ld" => [ "util/libssl.num", "libssl" ], + "libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/der_digests_gen.c.in" ], @@ -16084,9 +18661,15 @@ our %unified_info = ( "providers/common/der/der_ecx_gen.c" => [ "providers/common/der/der_ecx_gen.c.in" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/der_ml_dsa_gen.c.in" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/der_rsa_gen.c.in" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/der_slh_dsa_gen.c.in" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/der_sm2_gen.c.in" ], @@ -16105,9 +18688,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/include/prov/der_ecx.h.in" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/include/prov/der_ml_dsa.h.in" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/include/prov/der_rsa.h.in" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/include/prov/der_slh_dsa.h.in" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/include/prov/der_sm2.h.in" ], @@ -16149,6 +18738,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "buffer" ], + "test/buildtest_byteorder.c" => [ + "test/generate_buildtest.pl", + "byteorder" + ], "test/buildtest_camellia.c" => [ "test/generate_buildtest.pl", "camellia" @@ -16181,10 +18774,6 @@ our %unified_info = ( "test/generate_buildtest.pl", "core_dispatch" ], - "test/buildtest_core_names.c" => [ - "test/generate_buildtest.pl", - "core_names" - ], "test/buildtest_core_object.c" => [ "test/generate_buildtest.pl", "core_object" @@ -16217,6 +18806,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "e_os2" ], + "test/buildtest_e_ostime.c" => [ + "test/generate_buildtest.pl", + "e_ostime" + ], "test/buildtest_ebcdic.c" => [ "test/generate_buildtest.pl", "ebcdic" @@ -16253,6 +18846,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "hmac" ], + "test/buildtest_hpke.c" => [ + "test/generate_buildtest.pl", + "hpke" + ], "test/buildtest_http.c" => [ "test/generate_buildtest.pl", "http" @@ -16261,6 +18858,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "idea" ], + "test/buildtest_indicator.c" => [ + "test/generate_buildtest.pl", + "indicator" + ], "test/buildtest_kdf.c" => [ "test/generate_buildtest.pl", "kdf" @@ -16281,6 +18882,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "mdc2" ], + "test/buildtest_ml_kem.c" => [ + "test/generate_buildtest.pl", + "ml_kem" + ], "test/buildtest_modes.c" => [ "test/generate_buildtest.pl", "modes" @@ -16321,6 +18926,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "provider" ], + "test/buildtest_quic.c" => [ + "test/generate_buildtest.pl", + "quic" + ], "test/buildtest_rand.c" => [ "test/generate_buildtest.pl", "rand" @@ -16377,6 +18986,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "symhacks" ], + "test/buildtest_thread.c" => [ + "test/generate_buildtest.pl", + "thread" + ], "test/buildtest_tls1.c" => [ "test/generate_buildtest.pl", "tls1" @@ -16457,6 +19070,7 @@ our %unified_info = ( "doc/html/man1/openssl-s_server.html", "doc/html/man1/openssl-s_time.html", "doc/html/man1/openssl-sess_id.html", + "doc/html/man1/openssl-skeyutl.html", "doc/html/man1/openssl-smime.html", "doc/html/man1/openssl-speed.html", "doc/html/man1/openssl-spkac.html", @@ -16506,6 +19120,7 @@ our %unified_info = ( "doc/html/man3/BIO_find_type.html", "doc/html/man3/BIO_get_data.html", "doc/html/man3/BIO_get_ex_new_index.html", + "doc/html/man3/BIO_get_rpoll_descriptor.html", "doc/html/man3/BIO_meth_new.html", "doc/html/man3/BIO_new.html", "doc/html/man3/BIO_new_CMS.html", @@ -16518,11 +19133,13 @@ our %unified_info = ( "doc/html/man3/BIO_s_connect.html", "doc/html/man3/BIO_s_core.html", "doc/html/man3/BIO_s_datagram.html", + "doc/html/man3/BIO_s_dgram_pair.html", "doc/html/man3/BIO_s_fd.html", "doc/html/man3/BIO_s_file.html", "doc/html/man3/BIO_s_mem.html", "doc/html/man3/BIO_s_null.html", "doc/html/man3/BIO_s_socket.html", + "doc/html/man3/BIO_sendmmsg.html", "doc/html/man3/BIO_set_callback.html", "doc/html/man3/BIO_should_retry.html", "doc/html/man3/BIO_socket_wait.html", @@ -16547,6 +19164,7 @@ our %unified_info = ( "doc/html/man3/BN_swap.html", "doc/html/man3/BN_zero.html", "doc/html/man3/BUF_MEM_new.html", + "doc/html/man3/CMAC_CTX.html", "doc/html/man3/CMS_EncryptedData_decrypt.html", "doc/html/man3/CMS_EncryptedData_encrypt.html", "doc/html/man3/CMS_EnvelopedData_create.html", @@ -16569,6 +19187,7 @@ our %unified_info = ( "doc/html/man3/CMS_uncompress.html", "doc/html/man3/CMS_verify.html", "doc/html/man3/CMS_verify_receipt.html", + "doc/html/man3/COMP_CTX_new.html", "doc/html/man3/CONF_modules_free.html", "doc/html/man3/CONF_modules_load_file.html", "doc/html/man3/CRYPTO_THREAD_run_once.html", @@ -16602,6 +19221,8 @@ our %unified_info = ( "doc/html/man3/DSA_size.html", "doc/html/man3/DTLS_get_data_mtu.html", "doc/html/man3/DTLS_set_timer_cb.html", + "doc/html/man3/DTLSv1_get_timeout.html", + "doc/html/man3/DTLSv1_handle_timeout.html", "doc/html/man3/DTLSv1_listen.html", "doc/html/man3/ECDSA_SIG_new.html", "doc/html/man3/ECDSA_sign.html", @@ -16648,6 +19269,7 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_ctrl.html", "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html", "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html", + "doc/html/man3/EVP_PKEY_CTX_get_algor.html", "doc/html/man3/EVP_PKEY_CTX_new.html", "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html", "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html", @@ -16687,6 +19309,8 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_verify_recover.html", "doc/html/man3/EVP_RAND.html", "doc/html/man3/EVP_SIGNATURE.html", + "doc/html/man3/EVP_SKEY.html", + "doc/html/man3/EVP_SKEYMGMT.html", "doc/html/man3/EVP_SealInit.html", "doc/html/man3/EVP_SignInit.html", "doc/html/man3/EVP_VerifyInit.html", @@ -16716,6 +19340,7 @@ our %unified_info = ( "doc/html/man3/EVP_sm3.html", "doc/html/man3/EVP_sm4_cbc.html", "doc/html/man3/EVP_whirlpool.html", + "doc/html/man3/GENERAL_NAME.html", "doc/html/man3/HMAC.html", "doc/html/man3/MD5.html", "doc/html/man3/MDC2_Init.html", @@ -16740,14 +19365,18 @@ our %unified_info = ( "doc/html/man3/OPENSSL_init_ssl.html", "doc/html/man3/OPENSSL_instrument_bus.html", "doc/html/man3/OPENSSL_load_builtin_modules.html", + "doc/html/man3/OPENSSL_load_u16_le.html", "doc/html/man3/OPENSSL_malloc.html", + "doc/html/man3/OPENSSL_riscvcap.html", "doc/html/man3/OPENSSL_s390xcap.html", "doc/html/man3/OPENSSL_secure_malloc.html", "doc/html/man3/OPENSSL_strcasecmp.html", "doc/html/man3/OSSL_ALGORITHM.html", "doc/html/man3/OSSL_CALLBACK.html", + "doc/html/man3/OSSL_CMP_ATAV_set0.html", "doc/html/man3/OSSL_CMP_CTX_new.html", "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html", + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html", "doc/html/man3/OSSL_CMP_ITAV_set0.html", "doc/html/man3/OSSL_CMP_MSG_get0_header.html", "doc/html/man3/OSSL_CMP_MSG_http_perform.html", @@ -16771,18 +19400,27 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_CTX.html", "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html", "doc/html/man3/OSSL_ENCODER_to_bio.html", + "doc/html/man3/OSSL_ERR_STATE_save.html", "doc/html/man3/OSSL_ESS_check_signing_certs.html", + "doc/html/man3/OSSL_GENERAL_NAMES_print.html", + "doc/html/man3/OSSL_HPKE_CTX_new.html", "doc/html/man3/OSSL_HTTP_REQ_CTX.html", "doc/html/man3/OSSL_HTTP_parse_url.html", "doc/html/man3/OSSL_HTTP_transfer.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html", + "doc/html/man3/OSSL_INDICATOR_set_callback.html", "doc/html/man3/OSSL_ITEM.html", "doc/html/man3/OSSL_LIB_CTX.html", + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html", "doc/html/man3/OSSL_PARAM.html", "doc/html/man3/OSSL_PARAM_BLD.html", "doc/html/man3/OSSL_PARAM_allocate_from_text.html", "doc/html/man3/OSSL_PARAM_dup.html", "doc/html/man3/OSSL_PARAM_int.html", + "doc/html/man3/OSSL_PARAM_print_to_bio.html", "doc/html/man3/OSSL_PROVIDER.html", + "doc/html/man3/OSSL_QUIC_client_method.html", "doc/html/man3/OSSL_SELF_TEST_new.html", "doc/html/man3/OSSL_SELF_TEST_set_callback.html", "doc/html/man3/OSSL_STORE_INFO.html", @@ -16791,11 +19429,13 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_attach.html", "doc/html/man3/OSSL_STORE_expect.html", "doc/html/man3/OSSL_STORE_open.html", + "doc/html/man3/OSSL_sleep.html", "doc/html/man3/OSSL_trace_enabled.html", "doc/html/man3/OSSL_trace_get_category_num.html", "doc/html/man3/OSSL_trace_set_channel.html", "doc/html/man3/OpenSSL_add_all_algorithms.html", "doc/html/man3/OpenSSL_version.html", + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html", "doc/html/man3/PEM_X509_INFO_read_bio_ex.html", "doc/html/man3/PEM_bytes_read_bio.html", "doc/html/man3/PEM_read.html", @@ -16808,6 +19448,7 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_create_cert.html", "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html", "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html", + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html", "doc/html/man3/PKCS12_add1_attr_by_NID.html", "doc/html/man3/PKCS12_add_CSPName_asc.html", "doc/html/man3/PKCS12_add_cert.html", @@ -16899,6 +19540,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_sess_set_get_cb.html", "doc/html/man3/SSL_CTX_sessions.html", "doc/html/man3/SSL_CTX_set0_CA_list.html", + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html", "doc/html/man3/SSL_CTX_set1_curves.html", "doc/html/man3/SSL_CTX_set1_sigalgs.html", "doc/html/man3/SSL_CTX_set1_verify_cert_store.html", @@ -16912,6 +19554,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_ct_validation_callback.html", "doc/html/man3/SSL_CTX_set_ctlog_list_file.html", "doc/html/man3/SSL_CTX_set_default_passwd_cb.html", + "doc/html/man3/SSL_CTX_set_domain_flags.html", "doc/html/man3/SSL_CTX_set_generate_session_id.html", "doc/html/man3/SSL_CTX_set_info_callback.html", "doc/html/man3/SSL_CTX_set_keylog_callback.html", @@ -16919,6 +19562,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_min_proto_version.html", "doc/html/man3/SSL_CTX_set_mode.html", "doc/html/man3/SSL_CTX_set_msg_callback.html", + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html", "doc/html/man3/SSL_CTX_set_num_tickets.html", "doc/html/man3/SSL_CTX_set_options.html", "doc/html/man3/SSL_CTX_set_psk_client_callback.html", @@ -16957,6 +19601,7 @@ our %unified_info = ( "doc/html/man3/SSL_SESSION_print.html", "doc/html/man3/SSL_SESSION_set1_id.html", "doc/html/man3/SSL_accept.html", + "doc/html/man3/SSL_accept_stream.html", "doc/html/man3/SSL_alert_type_string.html", "doc/html/man3/SSL_alloc_buffers.html", "doc/html/man3/SSL_check_chain.html", @@ -16966,59 +19611,90 @@ our %unified_info = ( "doc/html/man3/SSL_export_keying_material.html", "doc/html/man3/SSL_extension_supported.html", "doc/html/man3/SSL_free.html", + "doc/html/man3/SSL_get0_connection.html", + "doc/html/man3/SSL_get0_group_name.html", + "doc/html/man3/SSL_get0_peer_rpk.html", "doc/html/man3/SSL_get0_peer_scts.html", + "doc/html/man3/SSL_get1_builtin_sigalgs.html", "doc/html/man3/SSL_get_SSL_CTX.html", "doc/html/man3/SSL_get_all_async_fds.html", "doc/html/man3/SSL_get_certificate.html", "doc/html/man3/SSL_get_ciphers.html", "doc/html/man3/SSL_get_client_random.html", + "doc/html/man3/SSL_get_conn_close_info.html", "doc/html/man3/SSL_get_current_cipher.html", "doc/html/man3/SSL_get_default_timeout.html", "doc/html/man3/SSL_get_error.html", + "doc/html/man3/SSL_get_event_timeout.html", "doc/html/man3/SSL_get_extms_support.html", "doc/html/man3/SSL_get_fd.html", + "doc/html/man3/SSL_get_handshake_rtt.html", "doc/html/man3/SSL_get_peer_cert_chain.html", "doc/html/man3/SSL_get_peer_certificate.html", "doc/html/man3/SSL_get_peer_signature_nid.html", "doc/html/man3/SSL_get_peer_tmp_key.html", "doc/html/man3/SSL_get_psk_identity.html", "doc/html/man3/SSL_get_rbio.html", + "doc/html/man3/SSL_get_rpoll_descriptor.html", "doc/html/man3/SSL_get_session.html", "doc/html/man3/SSL_get_shared_sigalgs.html", + "doc/html/man3/SSL_get_stream_id.html", + "doc/html/man3/SSL_get_stream_read_state.html", + "doc/html/man3/SSL_get_value_uint.html", "doc/html/man3/SSL_get_verify_result.html", "doc/html/man3/SSL_get_version.html", "doc/html/man3/SSL_group_to_name.html", + "doc/html/man3/SSL_handle_events.html", "doc/html/man3/SSL_in_init.html", + "doc/html/man3/SSL_inject_net_dgram.html", "doc/html/man3/SSL_key_update.html", "doc/html/man3/SSL_library_init.html", "doc/html/man3/SSL_load_client_CA_file.html", "doc/html/man3/SSL_new.html", + "doc/html/man3/SSL_new_domain.html", + "doc/html/man3/SSL_new_listener.html", + "doc/html/man3/SSL_new_stream.html", "doc/html/man3/SSL_pending.html", + "doc/html/man3/SSL_poll.html", "doc/html/man3/SSL_read.html", "doc/html/man3/SSL_read_early_data.html", "doc/html/man3/SSL_rstate_string.html", "doc/html/man3/SSL_session_reused.html", "doc/html/man3/SSL_set1_host.html", + "doc/html/man3/SSL_set1_initial_peer_addr.html", + "doc/html/man3/SSL_set1_server_cert_type.html", "doc/html/man3/SSL_set_async_callback.html", "doc/html/man3/SSL_set_bio.html", + "doc/html/man3/SSL_set_blocking_mode.html", "doc/html/man3/SSL_set_connect_state.html", + "doc/html/man3/SSL_set_default_stream_mode.html", "doc/html/man3/SSL_set_fd.html", + "doc/html/man3/SSL_set_incoming_stream_policy.html", + "doc/html/man3/SSL_set_quic_tls_cbs.html", "doc/html/man3/SSL_set_retry_verify.html", "doc/html/man3/SSL_set_session.html", + "doc/html/man3/SSL_set_session_secret_cb.html", "doc/html/man3/SSL_set_shutdown.html", "doc/html/man3/SSL_set_verify_result.html", "doc/html/man3/SSL_shutdown.html", "doc/html/man3/SSL_state_string.html", + "doc/html/man3/SSL_stream_conclude.html", + "doc/html/man3/SSL_stream_reset.html", "doc/html/man3/SSL_want.html", "doc/html/man3/SSL_write.html", "doc/html/man3/TS_RESP_CTX_new.html", - "doc/html/man3/TS_VERIFY_CTX_set_certs.html", + "doc/html/man3/TS_VERIFY_CTX.html", "doc/html/man3/UI_STRING.html", "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", + "doc/html/man3/X509_ACERT_add1_attr.html", + "doc/html/man3/X509_ACERT_add_attr_nconf.html", + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html", + "doc/html/man3/X509_ACERT_get_attr.html", + "doc/html/man3/X509_ACERT_print_ex.html", "doc/html/man3/X509_ALGOR_dup.html", "doc/html/man3/X509_ATTRIBUTE.html", "doc/html/man3/X509_CRL_get0_by_serial.html", @@ -17035,6 +19711,7 @@ our %unified_info = ( "doc/html/man3/X509_REQ_get_attr.html", "doc/html/man3/X509_REQ_get_extensions.html", "doc/html/man3/X509_SIG_get0.html", + "doc/html/man3/X509_STORE_CTX_get_by_subject.html", "doc/html/man3/X509_STORE_CTX_get_error.html", "doc/html/man3/X509_STORE_CTX_new.html", "doc/html/man3/X509_STORE_CTX_set_verify_cb.html", @@ -17057,6 +19734,7 @@ our %unified_info = ( "doc/html/man3/X509_get0_notBefore.html", "doc/html/man3/X509_get0_signature.html", "doc/html/man3/X509_get0_uids.html", + "doc/html/man3/X509_get_default_cert_file.html", "doc/html/man3/X509_get_extension_flags.html", "doc/html/man3/X509_get_pubkey.html", "doc/html/man3/X509_get_serialNumber.html", @@ -17102,12 +19780,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-RC5.html", "doc/html/man7/EVP_CIPHER-SEED.html", "doc/html/man7/EVP_CIPHER-SM4.html", + "doc/html/man7/EVP_KDF-ARGON2.html", "doc/html/man7/EVP_KDF-HKDF.html", + "doc/html/man7/EVP_KDF-HMAC-DRBG.html", "doc/html/man7/EVP_KDF-KB.html", "doc/html/man7/EVP_KDF-KRB5KDF.html", "doc/html/man7/EVP_KDF-PBKDF1.html", "doc/html/man7/EVP_KDF-PBKDF2.html", "doc/html/man7/EVP_KDF-PKCS12KDF.html", + "doc/html/man7/EVP_KDF-PVKKDF.html", "doc/html/man7/EVP_KDF-SCRYPT.html", "doc/html/man7/EVP_KDF-SS.html", "doc/html/man7/EVP_KDF-SSHKDF.html", @@ -17116,7 +19797,10 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X942-ASN1.html", "doc/html/man7/EVP_KDF-X942-CONCAT.html", "doc/html/man7/EVP_KDF-X963.html", + "doc/html/man7/EVP_KEM-EC.html", + "doc/html/man7/EVP_KEM-ML-KEM.html", "doc/html/man7/EVP_KEM-RSA.html", + "doc/html/man7/EVP_KEM-X25519.html", "doc/html/man7/EVP_KEYEXCH-DH.html", "doc/html/man7/EVP_KEYEXCH-ECDH.html", "doc/html/man7/EVP_KEYEXCH-X25519.html", @@ -17128,6 +19812,7 @@ our %unified_info = ( "doc/html/man7/EVP_MAC-Poly1305.html", "doc/html/man7/EVP_MAC-Siphash.html", "doc/html/man7/EVP_MD-BLAKE2.html", + "doc/html/man7/EVP_MD-KECCAK.html", "doc/html/man7/EVP_MD-MD2.html", "doc/html/man7/EVP_MD-MD4.html", "doc/html/man7/EVP_MD-MD5-SHA1.html", @@ -17147,12 +19832,17 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-EC.html", "doc/html/man7/EVP_PKEY-FFC.html", "doc/html/man7/EVP_PKEY-HMAC.html", + "doc/html/man7/EVP_PKEY-ML-DSA.html", + "doc/html/man7/EVP_PKEY-ML-KEM.html", "doc/html/man7/EVP_PKEY-RSA.html", + "doc/html/man7/EVP_PKEY-SLH-DSA.html", "doc/html/man7/EVP_PKEY-SM2.html", "doc/html/man7/EVP_PKEY-X25519.html", + "doc/html/man7/EVP_RAND-CRNG-TEST.html", "doc/html/man7/EVP_RAND-CTR-DRBG.html", "doc/html/man7/EVP_RAND-HASH-DRBG.html", "doc/html/man7/EVP_RAND-HMAC-DRBG.html", + "doc/html/man7/EVP_RAND-JITTER.html", "doc/html/man7/EVP_RAND-SEED-SRC.html", "doc/html/man7/EVP_RAND-TEST-RAND.html", "doc/html/man7/EVP_RAND.html", @@ -17160,17 +19850,19 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-ECDSA.html", "doc/html/man7/EVP_SIGNATURE-ED25519.html", "doc/html/man7/EVP_SIGNATURE-HMAC.html", + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html", "doc/html/man7/EVP_SIGNATURE-RSA.html", + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html", "doc/html/man7/OSSL_PROVIDER-FIPS.html", "doc/html/man7/OSSL_PROVIDER-base.html", "doc/html/man7/OSSL_PROVIDER-default.html", "doc/html/man7/OSSL_PROVIDER-legacy.html", "doc/html/man7/OSSL_PROVIDER-null.html", + "doc/html/man7/OSSL_STORE-winstore.html", "doc/html/man7/RAND.html", "doc/html/man7/RSA-PSS.html", "doc/html/man7/X25519.html", "doc/html/man7/bio.html", - "doc/html/man7/crypto.html", "doc/html/man7/ct.html", "doc/html/man7/des_modes.html", "doc/html/man7/evp.html", @@ -17181,14 +19873,31 @@ our %unified_info = ( "doc/html/man7/life_cycle-mac.html", "doc/html/man7/life_cycle-pkey.html", "doc/html/man7/life_cycle-rand.html", - "doc/html/man7/migration_guide.html", "doc/html/man7/openssl-core.h.html", "doc/html/man7/openssl-core_dispatch.h.html", "doc/html/man7/openssl-core_names.h.html", "doc/html/man7/openssl-env.html", "doc/html/man7/openssl-glossary.html", + "doc/html/man7/openssl-qlog.html", + "doc/html/man7/openssl-quic-concurrency.html", + "doc/html/man7/openssl-quic.html", "doc/html/man7/openssl-threads.html", "doc/html/man7/openssl_user_macros.html", + "doc/html/man7/ossl-guide-introduction.html", + "doc/html/man7/ossl-guide-libcrypto-introduction.html", + "doc/html/man7/ossl-guide-libraries-introduction.html", + "doc/html/man7/ossl-guide-libssl-introduction.html", + "doc/html/man7/ossl-guide-migration.html", + "doc/html/man7/ossl-guide-quic-client-block.html", + "doc/html/man7/ossl-guide-quic-client-non-block.html", + "doc/html/man7/ossl-guide-quic-introduction.html", + "doc/html/man7/ossl-guide-quic-multi-stream.html", + "doc/html/man7/ossl-guide-quic-server-block.html", + "doc/html/man7/ossl-guide-quic-server-non-block.html", + "doc/html/man7/ossl-guide-tls-client-block.html", + "doc/html/man7/ossl-guide-tls-client-non-block.html", + "doc/html/man7/ossl-guide-tls-introduction.html", + "doc/html/man7/ossl-guide-tls-server-block.html", "doc/html/man7/ossl_store-file.html", "doc/html/man7/ossl_store.html", "doc/html/man7/passphrase-encoding.html", @@ -17207,10 +19916,10 @@ our %unified_info = ( "doc/html/man7/provider-object.html", "doc/html/man7/provider-rand.html", "doc/html/man7/provider-signature.html", + "doc/html/man7/provider-skeymgmt.html", "doc/html/man7/provider-storemgmt.html", "doc/html/man7/provider.html", "doc/html/man7/proxy-certificates.html", - "doc/html/man7/ssl.html", "doc/html/man7/x509.html" ] }, @@ -17225,12 +19934,21 @@ our %unified_info = ( ] }, "includes" => { + "OpenSSLConfig.cmake" => [ + "." + ], + "OpenSSLConfigVersion.cmake" => [ + "." + ], "apps/asn1parse.o" => [ "apps" ], "apps/ca.o" => [ "apps" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps" + ], "apps/ciphers.o" => [ "apps" ], @@ -17457,6 +20175,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps" + ], "apps/openssl-bin-smime.o" => [ "apps" ], @@ -17544,6 +20265,9 @@ our %unified_info = ( "apps/sess_id.o" => [ "apps" ], + "apps/skeyutl.o" => [ + "apps" + ], "apps/smime.o" => [ "apps" ], @@ -17595,6 +20319,12 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.o" => [ "crypto" ], + "crypto/aes/vpaes-armv8.o" => [ + "crypto" + ], + "crypto/aes/vpaes-loongarch64.o" => [ + "crypto" + ], "crypto/arm64cpuid.o" => [ "crypto" ], @@ -17646,9 +20376,15 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.o" => [ "crypto" ], + "crypto/chacha/chacha-armv8-sve.o" => [ + "crypto" + ], "crypto/chacha/chacha-armv8.o" => [ "crypto" ], + "crypto/chacha/chacha-loongarch64.o" => [ + "crypto" + ], "crypto/chacha/chacha-s390x.o" => [ "crypto" ], @@ -17673,15 +20409,27 @@ our %unified_info = ( "crypto/ec/ecp_s390x_nistp.o" => [ "crypto" ], + "crypto/ec/ecp_sm2p256-armv8.o" => [ + "crypto" + ], + "crypto/ec/ecx_key.o" => [ + "crypto" + ], "crypto/ec/ecx_meth.o" => [ "crypto" ], "crypto/ec/ecx_s390x.o" => [ "crypto" ], + "crypto/ec/libcrypto-lib-ecx_key.o" => [ + "crypto" + ], "crypto/ec/libcrypto-lib-ecx_meth.o" => [ "crypto" ], + "crypto/ec/libfips-lib-ecx_key.o" => [ + "crypto" + ], "crypto/evp/e_aes.o" => [ "crypto", "crypto/modes" @@ -17753,9 +20501,18 @@ our %unified_info = ( "crypto/libfips-lib-cpuid.o" => [ "." ], + "crypto/md5/md5-aarch64.o" => [ + "crypto" + ], + "crypto/md5/md5-loongarch64.o" => [ + "crypto" + ], "crypto/md5/md5-sparcv9.o" => [ "crypto" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.o" => [ + "crypto" + ], "crypto/modes/aes-gcm-armv8_64.o" => [ "crypto" ], @@ -17780,6 +20537,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-gcm128.o" => [ "crypto" ], + "crypto/params_idx.c" => [ + "util/perl" + ], "crypto/poly1305/poly1305-armv4.o" => [ "crypto" ], @@ -17801,6 +20561,9 @@ our %unified_info = ( "crypto/sha/keccak1600-armv4.o" => [ "crypto" ], + "crypto/sha/keccak1600-armv8.o" => [ + "crypto" + ], "crypto/sha/sha1-armv4-large.o" => [ "crypto" ], @@ -17846,6 +20609,18 @@ our %unified_info = ( "crypto/sha/sha512-sparcv9.o" => [ "crypto" ], + "crypto/sm3/sm3-armv8.o" => [ + "crypto" + ], + "crypto/sm4/sm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4_ex-armv8.o" => [ + "crypto" + ], "doc/man1/openssl-asn1parse.pod" => [ "doc" ], @@ -17978,6 +20753,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc" + ], "doc/man1/openssl-smime.pod" => [ "doc" ], @@ -18005,6 +20783,24 @@ our %unified_info = ( "doc/man1/openssl-x509.pod" => [ "doc" ], + "exporters/OpenSSLConfig.cmake" => [ + "." + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "." + ], + "exporters/libcrypto.pc" => [ + "." + ], + "exporters/libssl.pc" => [ + "." + ], + "exporters/openssl.pc" => [ + "." + ], + "fuzz/acert-test" => [ + "include" + ], "fuzz/asn1-test" => [ "include" ], @@ -18035,12 +20831,69 @@ our %unified_info = ( "fuzz/ct-test" => [ "include" ], + "fuzz/decoder-test" => [ + "include" + ], + "fuzz/dtlsclient-test" => [ + "include" + ], + "fuzz/dtlsserver-test" => [ + "include" + ], + "fuzz/hashtable-test" => [ + "include" + ], + "fuzz/ml-dsa-test" => [ + "include" + ], + "fuzz/ml-kem-test" => [ + "include" + ], + "fuzz/pem-test" => [ + "include" + ], + "fuzz/provider-test" => [ + "include" + ], + "fuzz/punycode-test" => [ + "include" + ], + "fuzz/quic-client-test" => [ + "include" + ], + "fuzz/quic-lcidm-test" => [ + "include" + ], + "fuzz/quic-rcidm-test" => [ + "include" + ], + "fuzz/quic-server-test" => [ + "include" + ], + "fuzz/quic-srtm-test" => [ + "include" + ], "fuzz/server-test" => [ "include" ], + "fuzz/slh-dsa-test" => [ + "include" + ], + "fuzz/smime-test" => [ + "include" + ], + "fuzz/v3name-test" => [ + "include" + ], "fuzz/x509-test" => [ "include" ], + "include/internal/param_names.h" => [ + "util/perl" + ], + "include/openssl/core_names.h" => [ + "util/perl" + ], "libcrypto" => [ ".", "include", @@ -18051,6 +20904,9 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libcrypto.pc" => [ + "." + ], "libssl" => [ ".", "include" @@ -18059,6 +20915,12 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libssl.pc" => [ + "." + ], + "openssl.pc" => [ + "." + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der" ], @@ -18098,6 +20960,15 @@ our %unified_info = ( "providers/common/der/der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der" ], @@ -18110,6 +20981,15 @@ our %unified_info = ( "providers/common/der/der_rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der" ], @@ -18155,12 +21035,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov" ], @@ -18191,9 +21083,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der" ], @@ -18236,9 +21134,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18251,12 +21155,24 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18269,28 +21185,39 @@ our %unified_info = ( "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libdefault.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libfips.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/liblegacy.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" + ], + "providers/libtemplate.a" => [ + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" ], "test/aborttest" => [ "include", @@ -18359,6 +21286,14 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_addr_test" => [ + "include", + "apps/include" + ], + "test/bio_base64_test" => [ + "include", + "apps/include" + ], "test/bio_callback_test" => [ "include", "apps/include" @@ -18367,6 +21302,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_dgram_test" => [ + "include", + "apps/include", + "." + ], "test/bio_enc_test" => [ "include", "apps/include" @@ -18375,6 +21315,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_meth_test" => [ + "include", + "apps/include" + ], "test/bio_prefix_text" => [ ".", "include", @@ -18388,6 +21332,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_tfo_test" => [ + "include", + "apps/include", + "." + ], "test/bioprinttest" => [ "include", "apps/include" @@ -18402,6 +21351,9 @@ our %unified_info = ( "include", "apps/include" ], + "test/build_wincrypt_test" => [ + "include" + ], "test/buildtest_c_aes" => [ "include" ], @@ -18417,6 +21369,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => [ "include" ], + "test/buildtest_c_byteorder" => [ + "include" + ], "test/buildtest_c_camellia" => [ "include" ], @@ -18441,9 +21396,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => [ "include" ], - "test/buildtest_c_core_names" => [ - "include" - ], "test/buildtest_c_core_object" => [ "include" ], @@ -18468,6 +21420,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => [ "include" ], + "test/buildtest_c_e_ostime" => [ + "include" + ], "test/buildtest_c_ebcdic" => [ "include" ], @@ -18495,12 +21450,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => [ "include" ], + "test/buildtest_c_hpke" => [ + "include" + ], "test/buildtest_c_http" => [ "include" ], "test/buildtest_c_idea" => [ "include" ], + "test/buildtest_c_indicator" => [ + "include" + ], "test/buildtest_c_kdf" => [ "include" ], @@ -18516,6 +21477,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => [ "include" ], + "test/buildtest_c_ml_kem" => [ + "include" + ], "test/buildtest_c_modes" => [ "include" ], @@ -18546,6 +21510,9 @@ our %unified_info = ( "test/buildtest_c_provider" => [ "include" ], + "test/buildtest_c_quic" => [ + "include" + ], "test/buildtest_c_rand" => [ "include" ], @@ -18588,6 +21555,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => [ "include" ], + "test/buildtest_c_thread" => [ + "include" + ], "test/buildtest_c_tls1" => [ "include" ], @@ -18603,10 +21573,24 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => [ "include" ], + "test/byteorder_test" => [ + "include", + "apps/include" + ], + "test/ca_internals_test" => [ + ".", + "include", + "apps/include" + ], "test/casttest" => [ "include", "apps/include" ], + "test/cert_comp_test" => [ + "include", + "apps/include", + "." + ], "test/chacha_internal_test" => [ ".", "include", @@ -18730,6 +21714,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/decoder_propq_test" => [ + ".", + "include", + "apps/include" + ], "test/defltfips_test" => [ "include", "apps/include" @@ -18745,7 +21734,8 @@ our %unified_info = ( "test/drbgtest" => [ "include", "apps/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "test/dsa_no_digest_size_test" => [ "include", @@ -18788,7 +21778,9 @@ our %unified_info = ( "test/endecode_test" => [ ".", "include", - "apps/include" + "apps/include", + "providers/common/include", + "providers/implementations/include" ], "test/endecoder_legacy_test" => [ ".", @@ -18833,6 +21825,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_pkey_dhkem_test" => [ + "include", + "apps/include" + ], "test/evp_pkey_dparams_test" => [ "include", "apps/include" @@ -18841,10 +21837,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_skey_test" => [ + "include", + "apps/include" + ], "test/evp_test" => [ "include", "apps/include" ], + "test/evp_xof_test" => [ + "include", + "apps/include" + ], "test/exdatatest" => [ "include", "apps/include" @@ -18945,22 +21949,62 @@ our %unified_info = ( ".", "include" ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/pkcs12.o" => [ ".", "include" ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + ".", + "include" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ ".", "include" ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/ssl_test-bin-handshake.o" => [ ".", "include" @@ -18994,6 +22038,10 @@ our %unified_info = ( ".", "include" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/hexstr_test" => [ ".", "include", @@ -19003,6 +22051,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/hpke_test" => [ + "include", + "apps/include" + ], "test/http_test" => [ "include", "apps/include" @@ -19015,6 +22067,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/json_test" => [ + "include", + "apps/include" + ], "test/keymgmt_internal_test" => [ ".", "include", @@ -19029,6 +22085,10 @@ our %unified_info = ( "apps/include", "." ], + "test/list_test" => [ + "include", + "apps/include" + ], "test/localetest" => [ "include", "apps/include" @@ -19042,10 +22102,27 @@ our %unified_info = ( "include", "apps/include" ], + "test/membio_test" => [ + "include", + "apps/include", + "." + ], "test/memleaktest" => [ "include", "apps/include" ], + "test/ml_dsa_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_evp_extra_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_internal_test" => [ + "include", + "apps/include" + ], "test/modes_internal_test" => [ ".", "include", @@ -19080,6 +22157,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pairwise_fail_test" => [ + "include", + "apps/include" + ], "test/param_build_test" => [ "include", "apps/include" @@ -19113,6 +22194,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pkcs12_api_test" => [ + "include", + "apps/include" + ], "test/pkcs12_format_test" => [ "include", "apps/include" @@ -19134,6 +22219,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/priority_queue_test" => [ + "include", + "apps/include" + ], "test/property_test" => [ ".", "include", @@ -19147,6 +22236,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/provider_default_search_path_test" => [ + "include", + "apps/include" + ], "test/provider_fallback_test" => [ "include", "apps/include" @@ -19173,6 +22266,97 @@ our %unified_info = ( "include", "apps/include" ], + "test/quic_ackm_test" => [ + "include", + "apps/include" + ], + "test/quic_cc_test" => [ + "include", + "apps/include" + ], + "test/quic_cfq_test" => [ + "include", + "apps/include" + ], + "test/quic_client_test" => [ + "include", + "apps/include" + ], + "test/quic_fc_test" => [ + "include", + "apps/include" + ], + "test/quic_fifd_test" => [ + "include", + "apps/include" + ], + "test/quic_lcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_multistream_test" => [ + "include", + "apps/include" + ], + "test/quic_newcid_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_qlog_test" => [ + "include", + "apps/include" + ], + "test/quic_radix_test" => [ + "include", + "apps/include" + ], + "test/quic_rcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_record_test" => [ + "include", + "apps/include" + ], + "test/quic_srt_gen_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_srtm_test" => [ + "include", + "apps/include" + ], + "test/quic_stream_test" => [ + "include", + "apps/include" + ], + "test/quic_tserver_test" => [ + "include", + "apps/include" + ], + "test/quic_txp_test" => [ + "include", + "apps/include" + ], + "test/quic_txpim_test" => [ + "include", + "apps/include" + ], + "test/quic_wire_test" => [ + "include", + "apps/include" + ], + "test/quicapitest" => [ + "include", + "apps/include" + ], + "test/quicfaultstest" => [ + "include", + "apps/include", + "." + ], "test/rand_status_test" => [ "include", "apps/include" @@ -19193,14 +22377,20 @@ our %unified_info = ( "include", "apps/include" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "include", - "apps/include" + "apps/include", + "crypto" ], "test/recordlentest" => [ "include", "apps/include" ], + "test/rpktest" => [ + "include", + "apps/include", + "." + ], "test/rsa_complex" => [ "include", "apps/include" @@ -19219,6 +22409,15 @@ our %unified_info = ( "include", "apps/include" ], + "test/rsa_x931_test" => [ + ".", + "include", + "apps/include" + ], + "test/safe_math_test" => [ + "include", + "apps/include" + ], "test/sanitytest" => [ "include", "apps/include" @@ -19240,6 +22439,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/slh_dsa_test" => [ + "include", + "apps/include" + ], "test/sm2_internal_test" => [ "include", "apps/include" @@ -19270,6 +22473,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/ssl_handshake_rtt_test" => [ + "include", + "apps/include", + "." + ], "test/ssl_old_test" => [ ".", "include", @@ -19286,6 +22494,7 @@ our %unified_info = ( "test/sslapitest" => [ "include", "apps/include", + "providers/common/include", "." ], "test/sslbuffertest" => [ @@ -19300,6 +22509,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/strtoultest" => [ + "include", + "apps/include" + ], "test/sysdefaulttest" => [ "include", "apps/include" @@ -19308,7 +22521,13 @@ our %unified_info = ( "include", "apps/include" ], + "test/threadpool_test" => [ + ".", + "include", + "apps/include" + ], "test/threadstest" => [ + ".", "include", "apps/include" ], @@ -19320,6 +22539,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/time_test" => [ + "include", + "apps/include" + ], "test/tls13ccstest" => [ "include", "apps/include" @@ -19329,6 +22552,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/tls13groupselection_test" => [ + "include", + "apps/include" + ], "test/trace_api_test" => [ ".", "include", @@ -19367,6 +22594,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_acert_test" => [ + "include", + "apps/include" + ], "test/x509_check_cert_pkey_test" => [ "include", "apps/include" @@ -19380,6 +22611,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_load_cert_file_test" => [ + "include", + "apps/include" + ], + "test/x509_req_test" => [ + "include", + "apps/include" + ], + "test/x509_test" => [ + "include", + "apps/include" + ], "test/x509_time_test" => [ "include", "apps/include" @@ -19401,6 +22644,7 @@ our %unified_info = ( "providers/libdefault.a", "providers/libfips.a", "providers/liblegacy.a", + "providers/libtemplate.a", "test/libtestutil.a" ], "mandocs" => { @@ -19453,6 +22697,7 @@ our %unified_info = ( "doc/man/man1/openssl-s_server.1", "doc/man/man1/openssl-s_time.1", "doc/man/man1/openssl-sess_id.1", + "doc/man/man1/openssl-skeyutl.1", "doc/man/man1/openssl-smime.1", "doc/man/man1/openssl-speed.1", "doc/man/man1/openssl-spkac.1", @@ -19502,6 +22747,7 @@ our %unified_info = ( "doc/man/man3/BIO_find_type.3", "doc/man/man3/BIO_get_data.3", "doc/man/man3/BIO_get_ex_new_index.3", + "doc/man/man3/BIO_get_rpoll_descriptor.3", "doc/man/man3/BIO_meth_new.3", "doc/man/man3/BIO_new.3", "doc/man/man3/BIO_new_CMS.3", @@ -19514,11 +22760,13 @@ our %unified_info = ( "doc/man/man3/BIO_s_connect.3", "doc/man/man3/BIO_s_core.3", "doc/man/man3/BIO_s_datagram.3", + "doc/man/man3/BIO_s_dgram_pair.3", "doc/man/man3/BIO_s_fd.3", "doc/man/man3/BIO_s_file.3", "doc/man/man3/BIO_s_mem.3", "doc/man/man3/BIO_s_null.3", "doc/man/man3/BIO_s_socket.3", + "doc/man/man3/BIO_sendmmsg.3", "doc/man/man3/BIO_set_callback.3", "doc/man/man3/BIO_should_retry.3", "doc/man/man3/BIO_socket_wait.3", @@ -19543,6 +22791,7 @@ our %unified_info = ( "doc/man/man3/BN_swap.3", "doc/man/man3/BN_zero.3", "doc/man/man3/BUF_MEM_new.3", + "doc/man/man3/CMAC_CTX.3", "doc/man/man3/CMS_EncryptedData_decrypt.3", "doc/man/man3/CMS_EncryptedData_encrypt.3", "doc/man/man3/CMS_EnvelopedData_create.3", @@ -19565,6 +22814,7 @@ our %unified_info = ( "doc/man/man3/CMS_uncompress.3", "doc/man/man3/CMS_verify.3", "doc/man/man3/CMS_verify_receipt.3", + "doc/man/man3/COMP_CTX_new.3", "doc/man/man3/CONF_modules_free.3", "doc/man/man3/CONF_modules_load_file.3", "doc/man/man3/CRYPTO_THREAD_run_once.3", @@ -19598,6 +22848,8 @@ our %unified_info = ( "doc/man/man3/DSA_size.3", "doc/man/man3/DTLS_get_data_mtu.3", "doc/man/man3/DTLS_set_timer_cb.3", + "doc/man/man3/DTLSv1_get_timeout.3", + "doc/man/man3/DTLSv1_handle_timeout.3", "doc/man/man3/DTLSv1_listen.3", "doc/man/man3/ECDSA_SIG_new.3", "doc/man/man3/ECDSA_sign.3", @@ -19644,6 +22896,7 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_ctrl.3", "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3", "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3", + "doc/man/man3/EVP_PKEY_CTX_get_algor.3", "doc/man/man3/EVP_PKEY_CTX_new.3", "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3", "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3", @@ -19683,6 +22936,8 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_verify_recover.3", "doc/man/man3/EVP_RAND.3", "doc/man/man3/EVP_SIGNATURE.3", + "doc/man/man3/EVP_SKEY.3", + "doc/man/man3/EVP_SKEYMGMT.3", "doc/man/man3/EVP_SealInit.3", "doc/man/man3/EVP_SignInit.3", "doc/man/man3/EVP_VerifyInit.3", @@ -19712,6 +22967,7 @@ our %unified_info = ( "doc/man/man3/EVP_sm3.3", "doc/man/man3/EVP_sm4_cbc.3", "doc/man/man3/EVP_whirlpool.3", + "doc/man/man3/GENERAL_NAME.3", "doc/man/man3/HMAC.3", "doc/man/man3/MD5.3", "doc/man/man3/MDC2_Init.3", @@ -19736,14 +22992,18 @@ our %unified_info = ( "doc/man/man3/OPENSSL_init_ssl.3", "doc/man/man3/OPENSSL_instrument_bus.3", "doc/man/man3/OPENSSL_load_builtin_modules.3", + "doc/man/man3/OPENSSL_load_u16_le.3", "doc/man/man3/OPENSSL_malloc.3", + "doc/man/man3/OPENSSL_riscvcap.3", "doc/man/man3/OPENSSL_s390xcap.3", "doc/man/man3/OPENSSL_secure_malloc.3", "doc/man/man3/OPENSSL_strcasecmp.3", "doc/man/man3/OSSL_ALGORITHM.3", "doc/man/man3/OSSL_CALLBACK.3", + "doc/man/man3/OSSL_CMP_ATAV_set0.3", "doc/man/man3/OSSL_CMP_CTX_new.3", "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3", + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3", "doc/man/man3/OSSL_CMP_ITAV_set0.3", "doc/man/man3/OSSL_CMP_MSG_get0_header.3", "doc/man/man3/OSSL_CMP_MSG_http_perform.3", @@ -19767,18 +23027,27 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_CTX.3", "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3", "doc/man/man3/OSSL_ENCODER_to_bio.3", + "doc/man/man3/OSSL_ERR_STATE_save.3", "doc/man/man3/OSSL_ESS_check_signing_certs.3", + "doc/man/man3/OSSL_GENERAL_NAMES_print.3", + "doc/man/man3/OSSL_HPKE_CTX_new.3", "doc/man/man3/OSSL_HTTP_REQ_CTX.3", "doc/man/man3/OSSL_HTTP_parse_url.3", "doc/man/man3/OSSL_HTTP_transfer.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3", + "doc/man/man3/OSSL_INDICATOR_set_callback.3", "doc/man/man3/OSSL_ITEM.3", "doc/man/man3/OSSL_LIB_CTX.3", + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3", "doc/man/man3/OSSL_PARAM.3", "doc/man/man3/OSSL_PARAM_BLD.3", "doc/man/man3/OSSL_PARAM_allocate_from_text.3", "doc/man/man3/OSSL_PARAM_dup.3", "doc/man/man3/OSSL_PARAM_int.3", + "doc/man/man3/OSSL_PARAM_print_to_bio.3", "doc/man/man3/OSSL_PROVIDER.3", + "doc/man/man3/OSSL_QUIC_client_method.3", "doc/man/man3/OSSL_SELF_TEST_new.3", "doc/man/man3/OSSL_SELF_TEST_set_callback.3", "doc/man/man3/OSSL_STORE_INFO.3", @@ -19787,11 +23056,13 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_attach.3", "doc/man/man3/OSSL_STORE_expect.3", "doc/man/man3/OSSL_STORE_open.3", + "doc/man/man3/OSSL_sleep.3", "doc/man/man3/OSSL_trace_enabled.3", "doc/man/man3/OSSL_trace_get_category_num.3", "doc/man/man3/OSSL_trace_set_channel.3", "doc/man/man3/OpenSSL_add_all_algorithms.3", "doc/man/man3/OpenSSL_version.3", + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3", "doc/man/man3/PEM_X509_INFO_read_bio_ex.3", "doc/man/man3/PEM_bytes_read_bio.3", "doc/man/man3/PEM_read.3", @@ -19804,6 +23075,7 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_create_cert.3", "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3", "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3", + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3", "doc/man/man3/PKCS12_add1_attr_by_NID.3", "doc/man/man3/PKCS12_add_CSPName_asc.3", "doc/man/man3/PKCS12_add_cert.3", @@ -19895,6 +23167,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_sess_set_get_cb.3", "doc/man/man3/SSL_CTX_sessions.3", "doc/man/man3/SSL_CTX_set0_CA_list.3", + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3", "doc/man/man3/SSL_CTX_set1_curves.3", "doc/man/man3/SSL_CTX_set1_sigalgs.3", "doc/man/man3/SSL_CTX_set1_verify_cert_store.3", @@ -19908,6 +23181,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_ct_validation_callback.3", "doc/man/man3/SSL_CTX_set_ctlog_list_file.3", "doc/man/man3/SSL_CTX_set_default_passwd_cb.3", + "doc/man/man3/SSL_CTX_set_domain_flags.3", "doc/man/man3/SSL_CTX_set_generate_session_id.3", "doc/man/man3/SSL_CTX_set_info_callback.3", "doc/man/man3/SSL_CTX_set_keylog_callback.3", @@ -19915,6 +23189,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_min_proto_version.3", "doc/man/man3/SSL_CTX_set_mode.3", "doc/man/man3/SSL_CTX_set_msg_callback.3", + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3", "doc/man/man3/SSL_CTX_set_num_tickets.3", "doc/man/man3/SSL_CTX_set_options.3", "doc/man/man3/SSL_CTX_set_psk_client_callback.3", @@ -19953,6 +23228,7 @@ our %unified_info = ( "doc/man/man3/SSL_SESSION_print.3", "doc/man/man3/SSL_SESSION_set1_id.3", "doc/man/man3/SSL_accept.3", + "doc/man/man3/SSL_accept_stream.3", "doc/man/man3/SSL_alert_type_string.3", "doc/man/man3/SSL_alloc_buffers.3", "doc/man/man3/SSL_check_chain.3", @@ -19962,59 +23238,90 @@ our %unified_info = ( "doc/man/man3/SSL_export_keying_material.3", "doc/man/man3/SSL_extension_supported.3", "doc/man/man3/SSL_free.3", + "doc/man/man3/SSL_get0_connection.3", + "doc/man/man3/SSL_get0_group_name.3", + "doc/man/man3/SSL_get0_peer_rpk.3", "doc/man/man3/SSL_get0_peer_scts.3", + "doc/man/man3/SSL_get1_builtin_sigalgs.3", "doc/man/man3/SSL_get_SSL_CTX.3", "doc/man/man3/SSL_get_all_async_fds.3", "doc/man/man3/SSL_get_certificate.3", "doc/man/man3/SSL_get_ciphers.3", "doc/man/man3/SSL_get_client_random.3", + "doc/man/man3/SSL_get_conn_close_info.3", "doc/man/man3/SSL_get_current_cipher.3", "doc/man/man3/SSL_get_default_timeout.3", "doc/man/man3/SSL_get_error.3", + "doc/man/man3/SSL_get_event_timeout.3", "doc/man/man3/SSL_get_extms_support.3", "doc/man/man3/SSL_get_fd.3", + "doc/man/man3/SSL_get_handshake_rtt.3", "doc/man/man3/SSL_get_peer_cert_chain.3", "doc/man/man3/SSL_get_peer_certificate.3", "doc/man/man3/SSL_get_peer_signature_nid.3", "doc/man/man3/SSL_get_peer_tmp_key.3", "doc/man/man3/SSL_get_psk_identity.3", "doc/man/man3/SSL_get_rbio.3", + "doc/man/man3/SSL_get_rpoll_descriptor.3", "doc/man/man3/SSL_get_session.3", "doc/man/man3/SSL_get_shared_sigalgs.3", + "doc/man/man3/SSL_get_stream_id.3", + "doc/man/man3/SSL_get_stream_read_state.3", + "doc/man/man3/SSL_get_value_uint.3", "doc/man/man3/SSL_get_verify_result.3", "doc/man/man3/SSL_get_version.3", "doc/man/man3/SSL_group_to_name.3", + "doc/man/man3/SSL_handle_events.3", "doc/man/man3/SSL_in_init.3", + "doc/man/man3/SSL_inject_net_dgram.3", "doc/man/man3/SSL_key_update.3", "doc/man/man3/SSL_library_init.3", "doc/man/man3/SSL_load_client_CA_file.3", "doc/man/man3/SSL_new.3", + "doc/man/man3/SSL_new_domain.3", + "doc/man/man3/SSL_new_listener.3", + "doc/man/man3/SSL_new_stream.3", "doc/man/man3/SSL_pending.3", + "doc/man/man3/SSL_poll.3", "doc/man/man3/SSL_read.3", "doc/man/man3/SSL_read_early_data.3", "doc/man/man3/SSL_rstate_string.3", "doc/man/man3/SSL_session_reused.3", "doc/man/man3/SSL_set1_host.3", + "doc/man/man3/SSL_set1_initial_peer_addr.3", + "doc/man/man3/SSL_set1_server_cert_type.3", "doc/man/man3/SSL_set_async_callback.3", "doc/man/man3/SSL_set_bio.3", + "doc/man/man3/SSL_set_blocking_mode.3", "doc/man/man3/SSL_set_connect_state.3", + "doc/man/man3/SSL_set_default_stream_mode.3", "doc/man/man3/SSL_set_fd.3", + "doc/man/man3/SSL_set_incoming_stream_policy.3", + "doc/man/man3/SSL_set_quic_tls_cbs.3", "doc/man/man3/SSL_set_retry_verify.3", "doc/man/man3/SSL_set_session.3", + "doc/man/man3/SSL_set_session_secret_cb.3", "doc/man/man3/SSL_set_shutdown.3", "doc/man/man3/SSL_set_verify_result.3", "doc/man/man3/SSL_shutdown.3", "doc/man/man3/SSL_state_string.3", + "doc/man/man3/SSL_stream_conclude.3", + "doc/man/man3/SSL_stream_reset.3", "doc/man/man3/SSL_want.3", "doc/man/man3/SSL_write.3", "doc/man/man3/TS_RESP_CTX_new.3", - "doc/man/man3/TS_VERIFY_CTX_set_certs.3", + "doc/man/man3/TS_VERIFY_CTX.3", "doc/man/man3/UI_STRING.3", "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", + "doc/man/man3/X509_ACERT_add1_attr.3", + "doc/man/man3/X509_ACERT_add_attr_nconf.3", + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3", + "doc/man/man3/X509_ACERT_get_attr.3", + "doc/man/man3/X509_ACERT_print_ex.3", "doc/man/man3/X509_ALGOR_dup.3", "doc/man/man3/X509_ATTRIBUTE.3", "doc/man/man3/X509_CRL_get0_by_serial.3", @@ -20031,6 +23338,7 @@ our %unified_info = ( "doc/man/man3/X509_REQ_get_attr.3", "doc/man/man3/X509_REQ_get_extensions.3", "doc/man/man3/X509_SIG_get0.3", + "doc/man/man3/X509_STORE_CTX_get_by_subject.3", "doc/man/man3/X509_STORE_CTX_get_error.3", "doc/man/man3/X509_STORE_CTX_new.3", "doc/man/man3/X509_STORE_CTX_set_verify_cb.3", @@ -20053,6 +23361,7 @@ our %unified_info = ( "doc/man/man3/X509_get0_notBefore.3", "doc/man/man3/X509_get0_signature.3", "doc/man/man3/X509_get0_uids.3", + "doc/man/man3/X509_get_default_cert_file.3", "doc/man/man3/X509_get_extension_flags.3", "doc/man/man3/X509_get_pubkey.3", "doc/man/man3/X509_get_serialNumber.3", @@ -20098,12 +23407,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-RC5.7", "doc/man/man7/EVP_CIPHER-SEED.7", "doc/man/man7/EVP_CIPHER-SM4.7", + "doc/man/man7/EVP_KDF-ARGON2.7", "doc/man/man7/EVP_KDF-HKDF.7", + "doc/man/man7/EVP_KDF-HMAC-DRBG.7", "doc/man/man7/EVP_KDF-KB.7", "doc/man/man7/EVP_KDF-KRB5KDF.7", "doc/man/man7/EVP_KDF-PBKDF1.7", "doc/man/man7/EVP_KDF-PBKDF2.7", "doc/man/man7/EVP_KDF-PKCS12KDF.7", + "doc/man/man7/EVP_KDF-PVKKDF.7", "doc/man/man7/EVP_KDF-SCRYPT.7", "doc/man/man7/EVP_KDF-SS.7", "doc/man/man7/EVP_KDF-SSHKDF.7", @@ -20112,7 +23424,10 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X942-ASN1.7", "doc/man/man7/EVP_KDF-X942-CONCAT.7", "doc/man/man7/EVP_KDF-X963.7", + "doc/man/man7/EVP_KEM-EC.7", + "doc/man/man7/EVP_KEM-ML-KEM.7", "doc/man/man7/EVP_KEM-RSA.7", + "doc/man/man7/EVP_KEM-X25519.7", "doc/man/man7/EVP_KEYEXCH-DH.7", "doc/man/man7/EVP_KEYEXCH-ECDH.7", "doc/man/man7/EVP_KEYEXCH-X25519.7", @@ -20124,6 +23439,7 @@ our %unified_info = ( "doc/man/man7/EVP_MAC-Poly1305.7", "doc/man/man7/EVP_MAC-Siphash.7", "doc/man/man7/EVP_MD-BLAKE2.7", + "doc/man/man7/EVP_MD-KECCAK.7", "doc/man/man7/EVP_MD-MD2.7", "doc/man/man7/EVP_MD-MD4.7", "doc/man/man7/EVP_MD-MD5-SHA1.7", @@ -20143,12 +23459,17 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-EC.7", "doc/man/man7/EVP_PKEY-FFC.7", "doc/man/man7/EVP_PKEY-HMAC.7", + "doc/man/man7/EVP_PKEY-ML-DSA.7", + "doc/man/man7/EVP_PKEY-ML-KEM.7", "doc/man/man7/EVP_PKEY-RSA.7", + "doc/man/man7/EVP_PKEY-SLH-DSA.7", "doc/man/man7/EVP_PKEY-SM2.7", "doc/man/man7/EVP_PKEY-X25519.7", + "doc/man/man7/EVP_RAND-CRNG-TEST.7", "doc/man/man7/EVP_RAND-CTR-DRBG.7", "doc/man/man7/EVP_RAND-HASH-DRBG.7", "doc/man/man7/EVP_RAND-HMAC-DRBG.7", + "doc/man/man7/EVP_RAND-JITTER.7", "doc/man/man7/EVP_RAND-SEED-SRC.7", "doc/man/man7/EVP_RAND-TEST-RAND.7", "doc/man/man7/EVP_RAND.7", @@ -20156,17 +23477,19 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-ECDSA.7", "doc/man/man7/EVP_SIGNATURE-ED25519.7", "doc/man/man7/EVP_SIGNATURE-HMAC.7", + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7", "doc/man/man7/EVP_SIGNATURE-RSA.7", + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7", "doc/man/man7/OSSL_PROVIDER-FIPS.7", "doc/man/man7/OSSL_PROVIDER-base.7", "doc/man/man7/OSSL_PROVIDER-default.7", "doc/man/man7/OSSL_PROVIDER-legacy.7", "doc/man/man7/OSSL_PROVIDER-null.7", + "doc/man/man7/OSSL_STORE-winstore.7", "doc/man/man7/RAND.7", "doc/man/man7/RSA-PSS.7", "doc/man/man7/X25519.7", "doc/man/man7/bio.7", - "doc/man/man7/crypto.7", "doc/man/man7/ct.7", "doc/man/man7/des_modes.7", "doc/man/man7/evp.7", @@ -20177,14 +23500,31 @@ our %unified_info = ( "doc/man/man7/life_cycle-mac.7", "doc/man/man7/life_cycle-pkey.7", "doc/man/man7/life_cycle-rand.7", - "doc/man/man7/migration_guide.7", "doc/man/man7/openssl-core.h.7", "doc/man/man7/openssl-core_dispatch.h.7", "doc/man/man7/openssl-core_names.h.7", "doc/man/man7/openssl-env.7", "doc/man/man7/openssl-glossary.7", + "doc/man/man7/openssl-qlog.7", + "doc/man/man7/openssl-quic-concurrency.7", + "doc/man/man7/openssl-quic.7", "doc/man/man7/openssl-threads.7", "doc/man/man7/openssl_user_macros.7", + "doc/man/man7/ossl-guide-introduction.7", + "doc/man/man7/ossl-guide-libcrypto-introduction.7", + "doc/man/man7/ossl-guide-libraries-introduction.7", + "doc/man/man7/ossl-guide-libssl-introduction.7", + "doc/man/man7/ossl-guide-migration.7", + "doc/man/man7/ossl-guide-quic-client-block.7", + "doc/man/man7/ossl-guide-quic-client-non-block.7", + "doc/man/man7/ossl-guide-quic-introduction.7", + "doc/man/man7/ossl-guide-quic-multi-stream.7", + "doc/man/man7/ossl-guide-quic-server-block.7", + "doc/man/man7/ossl-guide-quic-server-non-block.7", + "doc/man/man7/ossl-guide-tls-client-block.7", + "doc/man/man7/ossl-guide-tls-client-non-block.7", + "doc/man/man7/ossl-guide-tls-introduction.7", + "doc/man/man7/ossl-guide-tls-server-block.7", "doc/man/man7/ossl_store-file.7", "doc/man/man7/ossl_store.7", "doc/man/man7/passphrase-encoding.7", @@ -20203,10 +23543,10 @@ our %unified_info = ( "doc/man/man7/provider-object.7", "doc/man/man7/provider-rand.7", "doc/man/man7/provider-signature.7", + "doc/man/man7/provider-skeymgmt.7", "doc/man/man7/provider-storemgmt.7", "doc/man/man7/provider.7", "doc/man/man7/proxy-certificates.7", - "doc/man/man7/ssl.7", "doc/man/man7/x509.7" ] }, @@ -20218,6 +23558,7 @@ our %unified_info = ( ], "programs" => [ "apps/openssl", + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -20228,7 +23569,24 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test", "test/aborttest", "test/acvp_test", @@ -20246,21 +23604,28 @@ our %unified_info = ( "test/asynctest", "test/bad_dtls_test", "test/bftest", + "test/bio_addr_test", + "test/bio_base64_test", "test/bio_callback_test", "test/bio_core_test", + "test/bio_dgram_test", "test/bio_enc_test", "test/bio_memleak_test", + "test/bio_meth_test", "test/bio_prefix_text", "test/bio_pw_callback_test", "test/bio_readbuffer_test", + "test/bio_tfo_test", "test/bioprinttest", "test/bn_internal_test", "test/bntest", + "test/build_wincrypt_test", "test/buildtest_c_aes", "test/buildtest_c_async", "test/buildtest_c_blowfish", "test/buildtest_c_bn", "test/buildtest_c_buffer", + "test/buildtest_c_byteorder", "test/buildtest_c_camellia", "test/buildtest_c_cast", "test/buildtest_c_cmac", @@ -20269,7 +23634,6 @@ our %unified_info = ( "test/buildtest_c_conftypes", "test/buildtest_c_core", "test/buildtest_c_core_dispatch", - "test/buildtest_c_core_names", "test/buildtest_c_core_object", "test/buildtest_c_cryptoerr_legacy", "test/buildtest_c_decoder", @@ -20278,6 +23642,7 @@ our %unified_info = ( "test/buildtest_c_dsa", "test/buildtest_c_dtls1", "test/buildtest_c_e_os2", + "test/buildtest_c_e_ostime", "test/buildtest_c_ebcdic", "test/buildtest_c_ec", "test/buildtest_c_ecdh", @@ -20287,13 +23652,16 @@ our %unified_info = ( "test/buildtest_c_evp", "test/buildtest_c_fips_names", "test/buildtest_c_hmac", + "test/buildtest_c_hpke", "test/buildtest_c_http", "test/buildtest_c_idea", + "test/buildtest_c_indicator", "test/buildtest_c_kdf", "test/buildtest_c_macros", "test/buildtest_c_md4", "test/buildtest_c_md5", "test/buildtest_c_mdc2", + "test/buildtest_c_ml_kem", "test/buildtest_c_modes", "test/buildtest_c_obj_mac", "test/buildtest_c_objects", @@ -20304,6 +23672,7 @@ our %unified_info = ( "test/buildtest_c_pem2", "test/buildtest_c_prov_ssl", "test/buildtest_c_provider", + "test/buildtest_c_quic", "test/buildtest_c_rand", "test/buildtest_c_rc2", "test/buildtest_c_rc4", @@ -20318,11 +23687,14 @@ our %unified_info = ( "test/buildtest_c_stack", "test/buildtest_c_store", "test/buildtest_c_symhacks", + "test/buildtest_c_thread", "test/buildtest_c_tls1", "test/buildtest_c_ts", "test/buildtest_c_txt_db", "test/buildtest_c_types", "test/buildtest_c_whrlpool", + "test/byteorder_test", + "test/ca_internals_test", "test/casttest", "test/chacha_internal_test", "test/cipher_overhead_test", @@ -20351,6 +23723,7 @@ our %unified_info = ( "test/curve448_internal_test", "test/d2i_test", "test/danetest", + "test/decoder_propq_test", "test/defltfips_test", "test/destest", "test/dhtest", @@ -20375,9 +23748,12 @@ our %unified_info = ( "test/evp_kdf_test", "test/evp_libctx_test", "test/evp_pkey_ctx_new_from_name", + "test/evp_pkey_dhkem_test", "test/evp_pkey_dparams_test", "test/evp_pkey_provided_test", + "test/evp_skey_test", "test/evp_test", + "test/evp_xof_test", "test/exdatatest", "test/exptest", "test/ext_internal_test", @@ -20387,21 +23763,29 @@ our %unified_info = ( "test/gmdifftest", "test/hexstr_test", "test/hmactest", + "test/hpke_test", "test/http_test", "test/ideatest", "test/igetest", + "test/json_test", "test/keymgmt_internal_test", "test/lhash_test", + "test/list_test", "test/localetest", "test/mdc2_internal_test", "test/mdc2test", + "test/membio_test", "test/memleaktest", + "test/ml_dsa_test", + "test/ml_kem_evp_extra_test", + "test/ml_kem_internal_test", "test/modes_internal_test", "test/namemap_internal_test", "test/nodefltctxtest", "test/ocspapitest", "test/ossl_store_test", "test/packettest", + "test/pairwise_fail_test", "test/param_build_test", "test/params_api_test", "test/params_conversion_test", @@ -20410,36 +23794,65 @@ our %unified_info = ( "test/pbetest", "test/pem_read_depr_test", "test/pemtest", + "test/pkcs12_api_test", "test/pkcs12_format_test", "test/pkcs7_test", "test/pkey_meth_kdf_test", "test/pkey_meth_test", "test/poly1305_internal_test", + "test/priority_queue_test", "test/property_test", "test/prov_config_test", "test/provfetchtest", + "test/provider_default_search_path_test", "test/provider_fallback_test", "test/provider_internal_test", "test/provider_pkey_test", "test/provider_status_test", "test/provider_test", "test/punycode_test", + "test/quic_ackm_test", + "test/quic_cc_test", + "test/quic_cfq_test", + "test/quic_client_test", + "test/quic_fc_test", + "test/quic_fifd_test", + "test/quic_lcidm_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_qlog_test", + "test/quic_radix_test", + "test/quic_rcidm_test", + "test/quic_record_test", + "test/quic_srt_gen_test", + "test/quic_srtm_test", + "test/quic_stream_test", + "test/quic_tserver_test", + "test/quic_txp_test", + "test/quic_txpim_test", + "test/quic_wire_test", + "test/quicapitest", + "test/quicfaultstest", "test/rand_status_test", "test/rand_test", "test/rc2test", "test/rc4test", "test/rc5test", - "test/rdrand_sanitytest", + "test/rdcpu_sanitytest", "test/recordlentest", + "test/rpktest", "test/rsa_complex", "test/rsa_mp_test", "test/rsa_sp800_56b_test", "test/rsa_test", + "test/rsa_x931_test", + "test/safe_math_test", "test/sanitytest", "test/secmemtest", "test/servername_test", "test/sha_test", "test/siphash_internal_test", + "test/slh_dsa_test", "test/sm2_internal_test", "test/sm3_internal_test", "test/sm4_internal_test", @@ -20447,6 +23860,7 @@ our %unified_info = ( "test/srptest", "test/ssl_cert_table_internal_test", "test/ssl_ctx_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", @@ -20454,13 +23868,17 @@ our %unified_info = ( "test/sslbuffertest", "test/sslcorrupttest", "test/stack_test", + "test/strtoultest", "test/sysdefaulttest", "test/test_test", + "test/threadpool_test", "test/threadstest", "test/threadstest_fips", "test/time_offset_test", + "test/time_test", "test/tls13ccstest", "test/tls13encryptiontest", + "test/tls13groupselection_test", "test/trace_api_test", "test/uitest", "test/upcallstest", @@ -20470,9 +23888,13 @@ our %unified_info = ( "test/verify_extra_test", "test/versions", "test/wpackettest", + "test/x509_acert_test", "test/x509_check_cert_pkey_test", "test/x509_dup_cert_test", "test/x509_internal_test", + "test/x509_load_cert_file_test", + "test/x509_req_test", + "test/x509_test", "test/x509_time_test", "test/x509aux" ], @@ -20488,6 +23910,33 @@ our %unified_info = ( "apps/CA.pl" => [ "apps/CA.pl.in" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/ca.c" + ], + "apps/lib/ca_internals_test-bin-app_libctx.o" => [ + "apps/lib/app_libctx.c" + ], + "apps/lib/ca_internals_test-bin-app_provider.o" => [ + "apps/lib/app_provider.c" + ], + "apps/lib/ca_internals_test-bin-app_rand.o" => [ + "apps/lib/app_rand.c" + ], + "apps/lib/ca_internals_test-bin-app_x509.o" => [ + "apps/lib/app_x509.c" + ], + "apps/lib/ca_internals_test-bin-apps.o" => [ + "apps/lib/apps.c" + ], + "apps/lib/ca_internals_test-bin-apps_ui.o" => [ + "apps/lib/apps_ui.c" + ], + "apps/lib/ca_internals_test-bin-engine.o" => [ + "apps/lib/engine.c" + ], + "apps/lib/ca_internals_test-bin-fmt.o" => [ + "apps/lib/fmt.c" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/lib/cmp_mock_srv.c" ], @@ -20509,6 +23958,9 @@ our %unified_info = ( "apps/lib/libapps-lib-apps.o" => [ "apps/lib/apps.c" ], + "apps/lib/libapps-lib-apps_opt_printf.o" => [ + "apps/lib/apps_opt_printf.c" + ], "apps/lib/libapps-lib-apps_ui.o" => [ "apps/lib/apps_ui.c" ], @@ -20527,6 +23979,9 @@ our %unified_info = ( "apps/lib/libapps-lib-http_server.o" => [ "apps/lib/http_server.c" ], + "apps/lib/libapps-lib-log.o" => [ + "apps/lib/log.c" + ], "apps/lib/libapps-lib-names.o" => [ "apps/lib/names.c" ], @@ -20558,12 +24013,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -20617,6 +24074,7 @@ our %unified_info = ( "apps/openssl-bin-s_server.o", "apps/openssl-bin-s_time.o", "apps/openssl-bin-sess_id.o", + "apps/openssl-bin-skeyutl.o", "apps/openssl-bin-smime.o", "apps/openssl-bin-speed.o", "apps/openssl-bin-spkac.o", @@ -20762,6 +24220,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/sess_id.c" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/skeyutl.c" + ], "apps/openssl-bin-smime.o" => [ "apps/smime.c" ], @@ -20825,6 +24286,9 @@ our %unified_info = ( "crypto/aes/libcrypto-lib-aesni-x86_64.o" => [ "crypto/aes/aesni-x86_64.s" ], + "crypto/aes/libcrypto-lib-aesni-xts-avx512.o" => [ + "crypto/aes/aesni-xts-avx512.s" + ], "crypto/aes/libcrypto-lib-bsaes-x86_64.o" => [ "crypto/aes/bsaes-x86_64.s" ], @@ -20852,6 +24316,9 @@ our %unified_info = ( "crypto/aes/libfips-lib-aesni-x86_64.o" => [ "crypto/aes/aesni-x86_64.s" ], + "crypto/aes/libfips-lib-aesni-xts-avx512.o" => [ + "crypto/aes/aesni-xts-avx512.s" + ], "crypto/aes/libfips-lib-bsaes-x86_64.o" => [ "crypto/aes/bsaes-x86_64.s" ], @@ -20861,6 +24328,12 @@ our %unified_info = ( "crypto/aria/libcrypto-lib-aria.o" => [ "crypto/aria/aria.c" ], + "crypto/asn1/asn1_time_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], + "crypto/asn1/ca_internals_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], "crypto/asn1/libcrypto-lib-a_bitstr.o" => [ "crypto/asn1/a_bitstr.c" ], @@ -21053,6 +24526,9 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" => [ "crypto/asn1/x_val.c" ], + "crypto/asn1_time_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/async/arch/libcrypto-lib-async_null.o" => [ "crypto/async/arch/async_null.c" ], @@ -21146,6 +24622,9 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_dgram.o" => [ "crypto/bio/bss_dgram.c" ], + "crypto/bio/libcrypto-lib-bss_dgram_pair.o" => [ + "crypto/bio/bss_dgram_pair.c" + ], "crypto/bio/libcrypto-lib-bss_fd.o" => [ "crypto/bio/bss_fd.c" ], @@ -21269,12 +24748,27 @@ our %unified_info = ( "crypto/bn/libcrypto-lib-bn_x931p.o" => [ "crypto/bn/bn_x931p.c" ], + "crypto/bn/libcrypto-lib-rsaz-2k-avx512.o" => [ + "crypto/bn/rsaz-2k-avx512.s" + ], + "crypto/bn/libcrypto-lib-rsaz-2k-avxifma.o" => [ + "crypto/bn/rsaz-2k-avxifma.s" + ], + "crypto/bn/libcrypto-lib-rsaz-3k-avx512.o" => [ + "crypto/bn/rsaz-3k-avx512.s" + ], + "crypto/bn/libcrypto-lib-rsaz-3k-avxifma.o" => [ + "crypto/bn/rsaz-3k-avxifma.s" + ], + "crypto/bn/libcrypto-lib-rsaz-4k-avx512.o" => [ + "crypto/bn/rsaz-4k-avx512.s" + ], + "crypto/bn/libcrypto-lib-rsaz-4k-avxifma.o" => [ + "crypto/bn/rsaz-4k-avxifma.s" + ], "crypto/bn/libcrypto-lib-rsaz-avx2.o" => [ "crypto/bn/rsaz-avx2.s" ], - "crypto/bn/libcrypto-lib-rsaz-avx512.o" => [ - "crypto/bn/rsaz-avx512.s" - ], "crypto/bn/libcrypto-lib-rsaz-x86_64.o" => [ "crypto/bn/rsaz-x86_64.s" ], @@ -21374,12 +24868,27 @@ our %unified_info = ( "crypto/bn/libfips-lib-bn_word.o" => [ "crypto/bn/bn_word.c" ], + "crypto/bn/libfips-lib-rsaz-2k-avx512.o" => [ + "crypto/bn/rsaz-2k-avx512.s" + ], + "crypto/bn/libfips-lib-rsaz-2k-avxifma.o" => [ + "crypto/bn/rsaz-2k-avxifma.s" + ], + "crypto/bn/libfips-lib-rsaz-3k-avx512.o" => [ + "crypto/bn/rsaz-3k-avx512.s" + ], + "crypto/bn/libfips-lib-rsaz-3k-avxifma.o" => [ + "crypto/bn/rsaz-3k-avxifma.s" + ], + "crypto/bn/libfips-lib-rsaz-4k-avx512.o" => [ + "crypto/bn/rsaz-4k-avx512.s" + ], + "crypto/bn/libfips-lib-rsaz-4k-avxifma.o" => [ + "crypto/bn/rsaz-4k-avxifma.s" + ], "crypto/bn/libfips-lib-rsaz-avx2.o" => [ "crypto/bn/rsaz-avx2.s" ], - "crypto/bn/libfips-lib-rsaz-avx512.o" => [ - "crypto/bn/rsaz-avx512.s" - ], "crypto/bn/libfips-lib-rsaz-x86_64.o" => [ "crypto/bn/rsaz-x86_64.s" ], @@ -21407,6 +24916,9 @@ our %unified_info = ( "crypto/buffer/libfips-lib-buffer.o" => [ "crypto/buffer/buffer.c" ], + "crypto/ca_internals_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/camellia/libcrypto-lib-cmll-x86_64.o" => [ "crypto/camellia/cmll-x86_64.s" ], @@ -21461,6 +24973,9 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_err.o" => [ "crypto/cmp/cmp_err.c" ], + "crypto/cmp/libcrypto-lib-cmp_genm.o" => [ + "crypto/cmp/cmp_genm.c" + ], "crypto/cmp/libcrypto-lib-cmp_hdr.o" => [ "crypto/cmp/cmp_hdr.c" ], @@ -22154,9 +25669,15 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_blocks.o" => [ "crypto/err/err_blocks.c" ], + "crypto/err/libcrypto-lib-err_mark.o" => [ + "crypto/err/err_mark.c" + ], "crypto/err/libcrypto-lib-err_prn.o" => [ "crypto/err/err_prn.c" ], + "crypto/err/libcrypto-lib-err_save.o" => [ + "crypto/err/err_save.c" + ], "crypto/ess/libcrypto-lib-ess_asn1.o" => [ "crypto/ess/ess_asn1.c" ], @@ -22403,9 +25924,15 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libcrypto-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libcrypto-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libcrypto-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/evp/libfips-lib-asymcipher.o" => [ "crypto/evp/asymcipher.c" ], @@ -22451,9 +25978,6 @@ our %unified_info = ( "crypto/evp/libfips-lib-keymgmt_meth.o" => [ "crypto/evp/keymgmt_meth.c" ], - "crypto/evp/libfips-lib-m_sigver.o" => [ - "crypto/evp/m_sigver.c" - ], "crypto/evp/libfips-lib-mac_lib.o" => [ "crypto/evp/mac_lib.c" ], @@ -22472,9 +25996,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libfips-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libfips-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libfips-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/ffc/libcrypto-lib-ffc_backend.o" => [ "crypto/ffc/ffc_backend.c" ], @@ -22517,12 +26047,30 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params_validate.o" => [ "crypto/ffc/ffc_params_validate.c" ], + "crypto/hashtable/libcrypto-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libcrypto-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], + "crypto/hashtable/libfips-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libfips-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], "crypto/hmac/libcrypto-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], "crypto/hmac/libfips-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], + "crypto/hpke/libcrypto-lib-hpke.o" => [ + "crypto/hpke/hpke.c" + ], + "crypto/hpke/libcrypto-lib-hpke_util.o" => [ + "crypto/hpke/hpke_util.c" + ], "crypto/http/libcrypto-lib-http_client.o" => [ "crypto/http/http_client.c" ], @@ -22565,6 +26113,9 @@ our %unified_info = ( "crypto/libcrypto-lib-bsearch.o" => [ "crypto/bsearch.c" ], + "crypto/libcrypto-lib-comp_methods.o" => [ + "crypto/comp_methods.c" + ], "crypto/libcrypto-lib-context.o" => [ "crypto/context.c" ], @@ -22592,9 +26143,15 @@ our %unified_info = ( "crypto/libcrypto-lib-cversion.o" => [ "crypto/cversion.c" ], + "crypto/libcrypto-lib-defaults.o" => [ + "crypto/defaults.c" + ], "crypto/libcrypto-lib-der_writer.o" => [ "crypto/der_writer.c" ], + "crypto/libcrypto-lib-deterministic_nonce.o" => [ + "crypto/deterministic_nonce.c" + ], "crypto/libcrypto-lib-ebcdic.o" => [ "crypto/ebcdic.c" ], @@ -22604,6 +26161,9 @@ our %unified_info = ( "crypto/libcrypto-lib-getenv.o" => [ "crypto/getenv.c" ], + "crypto/libcrypto-lib-indicator_core.o" => [ + "crypto/indicator_core.c" + ], "crypto/libcrypto-lib-info.o" => [ "crypto/info.c" ], @@ -22652,6 +26212,9 @@ our %unified_info = ( "crypto/libcrypto-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libcrypto-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libcrypto-lib-passphrase.o" => [ "crypto/passphrase.c" ], @@ -22673,12 +26236,21 @@ our %unified_info = ( "crypto/libcrypto-lib-punycode.o" => [ "crypto/punycode.c" ], + "crypto/libcrypto-lib-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/libcrypto-lib-self_test_core.o" => [ "crypto/self_test_core.c" ], + "crypto/libcrypto-lib-sleep.o" => [ + "crypto/sleep.c" + ], "crypto/libcrypto-lib-sparse_array.o" => [ "crypto/sparse_array.c" ], + "crypto/libcrypto-lib-ssl_err.o" => [ + "crypto/ssl_err.c" + ], "crypto/libcrypto-lib-threads_lib.o" => [ "crypto/threads_lib.c" ], @@ -22691,6 +26263,9 @@ our %unified_info = ( "crypto/libcrypto-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libcrypto-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libcrypto-lib-trace.o" => [ "crypto/trace.c" ], @@ -22757,6 +26332,9 @@ our %unified_info = ( "crypto/libfips-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libfips-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libfips-lib-provider_core.o" => [ "crypto/provider_core.c" ], @@ -22781,6 +26359,9 @@ our %unified_info = ( "crypto/libfips-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libfips-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libfips-lib-x86_64cpuid.o" => [ "crypto/x86_64cpuid.s" ], @@ -22808,6 +26389,63 @@ our %unified_info = ( "crypto/mdc2/libcrypto-lib-mdc2dgst.o" => [ "crypto/mdc2/mdc2dgst.c" ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_kem/libcrypto-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], + "crypto/ml_kem/libfips-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], + "crypto/modes/libcrypto-lib-aes-gcm-avx512.o" => [ + "crypto/modes/aes-gcm-avx512.s" + ], "crypto/modes/libcrypto-lib-aesni-gcm-x86_64.o" => [ "crypto/modes/aesni-gcm-x86_64.s" ], @@ -22847,6 +26485,12 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libcrypto-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], + "crypto/modes/libfips-lib-aes-gcm-avx512.o" => [ + "crypto/modes/aes-gcm-avx512.s" + ], "crypto/modes/libfips-lib-aesni-gcm-x86_64.o" => [ "crypto/modes/aesni-gcm-x86_64.s" ], @@ -22877,6 +26521,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libfips-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/objects/libcrypto-lib-o_names.o" => [ "crypto/objects/o_names.c" ], @@ -22922,6 +26569,9 @@ our %unified_info = ( "crypto/ocsp/libcrypto-lib-v3_ocsp.o" => [ "crypto/ocsp/v3_ocsp.c" ], + "crypto/packettest-bin-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/pem/libcrypto-lib-pem_all.o" => [ "crypto/pem/pem_all.c" ], @@ -23084,6 +26734,9 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_pool.o" => [ "crypto/rand/rand_pool.c" ], + "crypto/rand/libcrypto-lib-rand_uniform.o" => [ + "crypto/rand/rand_uniform.c" + ], "crypto/rand/libcrypto-lib-randfile.o" => [ "crypto/rand/randfile.c" ], @@ -23327,6 +26980,66 @@ our %unified_info = ( "crypto/siphash/libcrypto-lib-siphash.o" => [ "crypto/siphash/siphash.c" ], + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], + "crypto/slh_dsa/libfips-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libfips-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libfips-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libfips-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libfips-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], "crypto/sm2/libcrypto-lib-sm2_crypt.o" => [ "crypto/sm2/sm2_crypt.c" ], @@ -23381,6 +27094,42 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_strings.o" => [ "crypto/store/store_strings.c" ], + "crypto/thread/arch/libcrypto-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/arch/libfips-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libfips-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libfips-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/libcrypto-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libcrypto-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libcrypto-lib-internal.o" => [ + "crypto/thread/internal.c" + ], + "crypto/thread/libfips-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libfips-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libfips-lib-internal.o" => [ + "crypto/thread/internal.c" + ], "crypto/ts/libcrypto-lib-ts_asn1.o" => [ "crypto/ts/ts_asn1.c" ], @@ -23465,6 +27214,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_tree.o" => [ "crypto/x509/pcy_tree.c" ], + "crypto/x509/libcrypto-lib-t_acert.o" => [ + "crypto/x509/t_acert.c" + ], "crypto/x509/libcrypto-lib-t_crl.o" => [ "crypto/x509/t_crl.c" ], @@ -23474,6 +27226,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-t_x509.o" => [ "crypto/x509/t_x509.c" ], + "crypto/x509/libcrypto-lib-v3_aaa.o" => [ + "crypto/x509/v3_aaa.c" + ], + "crypto/x509/libcrypto-lib-v3_ac_tgt.o" => [ + "crypto/x509/v3_ac_tgt.c" + ], "crypto/x509/libcrypto-lib-v3_addr.o" => [ "crypto/x509/v3_addr.c" ], @@ -23489,6 +27247,21 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_asid.o" => [ "crypto/x509/v3_asid.c" ], + "crypto/x509/libcrypto-lib-v3_attrdesc.o" => [ + "crypto/x509/v3_attrdesc.c" + ], + "crypto/x509/libcrypto-lib-v3_attrmap.o" => [ + "crypto/x509/v3_attrmap.c" + ], + "crypto/x509/libcrypto-lib-v3_audit_id.o" => [ + "crypto/x509/v3_audit_id.c" + ], + "crypto/x509/libcrypto-lib-v3_authattid.o" => [ + "crypto/x509/v3_authattid.c" + ], + "crypto/x509/libcrypto-lib-v3_battcons.o" => [ + "crypto/x509/v3_battcons.c" + ], "crypto/x509/libcrypto-lib-v3_bcons.o" => [ "crypto/x509/v3_bcons.c" ], @@ -23513,15 +27286,24 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_genn.o" => [ "crypto/x509/v3_genn.c" ], + "crypto/x509/libcrypto-lib-v3_group_ac.o" => [ + "crypto/x509/v3_group_ac.c" + ], "crypto/x509/libcrypto-lib-v3_ia5.o" => [ "crypto/x509/v3_ia5.c" ], + "crypto/x509/libcrypto-lib-v3_ind_iss.o" => [ + "crypto/x509/v3_ind_iss.c" + ], "crypto/x509/libcrypto-lib-v3_info.o" => [ "crypto/x509/v3_info.c" ], "crypto/x509/libcrypto-lib-v3_int.o" => [ "crypto/x509/v3_int.c" ], + "crypto/x509/libcrypto-lib-v3_iobo.o" => [ + "crypto/x509/v3_iobo.c" + ], "crypto/x509/libcrypto-lib-v3_ist.o" => [ "crypto/x509/v3_ist.c" ], @@ -23531,6 +27313,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_ncons.o" => [ "crypto/x509/v3_ncons.c" ], + "crypto/x509/libcrypto-lib-v3_no_ass.o" => [ + "crypto/x509/v3_no_ass.c" + ], + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o" => [ + "crypto/x509/v3_no_rev_avail.c" + ], "crypto/x509/libcrypto-lib-v3_pci.o" => [ "crypto/x509/v3_pci.c" ], @@ -23552,18 +27340,36 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_purp.o" => [ "crypto/x509/v3_purp.c" ], + "crypto/x509/libcrypto-lib-v3_rolespec.o" => [ + "crypto/x509/v3_rolespec.c" + ], "crypto/x509/libcrypto-lib-v3_san.o" => [ "crypto/x509/v3_san.c" ], + "crypto/x509/libcrypto-lib-v3_sda.o" => [ + "crypto/x509/v3_sda.c" + ], + "crypto/x509/libcrypto-lib-v3_single_use.o" => [ + "crypto/x509/v3_single_use.c" + ], "crypto/x509/libcrypto-lib-v3_skid.o" => [ "crypto/x509/v3_skid.c" ], + "crypto/x509/libcrypto-lib-v3_soa_id.o" => [ + "crypto/x509/v3_soa_id.c" + ], "crypto/x509/libcrypto-lib-v3_sxnet.o" => [ "crypto/x509/v3_sxnet.c" ], + "crypto/x509/libcrypto-lib-v3_timespec.o" => [ + "crypto/x509/v3_timespec.c" + ], "crypto/x509/libcrypto-lib-v3_tlsf.o" => [ "crypto/x509/v3_tlsf.c" ], + "crypto/x509/libcrypto-lib-v3_usernotice.o" => [ + "crypto/x509/v3_usernotice.c" + ], "crypto/x509/libcrypto-lib-v3_utf8.o" => [ "crypto/x509/v3_utf8.c" ], @@ -23573,6 +27379,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3err.o" => [ "crypto/x509/v3err.c" ], + "crypto/x509/libcrypto-lib-x509_acert.o" => [ + "crypto/x509/x509_acert.c" + ], "crypto/x509/libcrypto-lib-x509_att.o" => [ "crypto/x509/x509_att.c" ], @@ -23624,6 +27433,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_vpm.o" => [ "crypto/x509/x509_vpm.c" ], + "crypto/x509/libcrypto-lib-x509aset.o" => [ + "crypto/x509/x509aset.c" + ], "crypto/x509/libcrypto-lib-x509cset.o" => [ "crypto/x509/x509cset.c" ], @@ -23651,6 +27463,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_exten.o" => [ "crypto/x509/x_exten.c" ], + "crypto/x509/libcrypto-lib-x_ietfatt.o" => [ + "crypto/x509/x_ietfatt.c" + ], "crypto/x509/libcrypto-lib-x_name.o" => [ "crypto/x509/x_name.c" ], @@ -23678,6 +27493,16 @@ our %unified_info = ( "engines/libcrypto-lib-e_padlock.o" => [ "engines/e_padlock.c" ], + "fuzz/acert-test" => [ + "fuzz/acert-test-bin-acert.o", + "fuzz/acert-test-bin-test-corpus.o" + ], + "fuzz/acert-test-bin-acert.o" => [ + "fuzz/acert.c" + ], + "fuzz/acert-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/asn1-test" => [ "fuzz/asn1-test-bin-asn1.o", "fuzz/asn1-test-bin-fuzz_rand.o", @@ -23790,6 +27615,190 @@ our %unified_info = ( "fuzz/ct-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/decoder-test" => [ + "fuzz/decoder-test-bin-decoder.o", + "fuzz/decoder-test-bin-fuzz_rand.o", + "fuzz/decoder-test-bin-test-corpus.o" + ], + "fuzz/decoder-test-bin-decoder.o" => [ + "fuzz/decoder.c" + ], + "fuzz/decoder-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/decoder-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsclient-test" => [ + "fuzz/dtlsclient-test-bin-dtlsclient.o", + "fuzz/dtlsclient-test-bin-fuzz_rand.o", + "fuzz/dtlsclient-test-bin-test-corpus.o" + ], + "fuzz/dtlsclient-test-bin-dtlsclient.o" => [ + "fuzz/dtlsclient.c" + ], + "fuzz/dtlsclient-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsclient-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsserver-test" => [ + "fuzz/dtlsserver-test-bin-dtlsserver.o", + "fuzz/dtlsserver-test-bin-fuzz_rand.o", + "fuzz/dtlsserver-test-bin-test-corpus.o" + ], + "fuzz/dtlsserver-test-bin-dtlsserver.o" => [ + "fuzz/dtlsserver.c" + ], + "fuzz/dtlsserver-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsserver-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/hashtable-test" => [ + "fuzz/hashtable-test-bin-fuzz_rand.o", + "fuzz/hashtable-test-bin-hashtable.o", + "fuzz/hashtable-test-bin-test-corpus.o" + ], + "fuzz/hashtable-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/hashtable-test-bin-hashtable.o" => [ + "fuzz/hashtable.c" + ], + "fuzz/hashtable-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-dsa-test" => [ + "fuzz/ml-dsa-test-bin-fuzz_rand.o", + "fuzz/ml-dsa-test-bin-ml-dsa.o", + "fuzz/ml-dsa-test-bin-test-corpus.o" + ], + "fuzz/ml-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-dsa-test-bin-ml-dsa.o" => [ + "fuzz/ml-dsa.c" + ], + "fuzz/ml-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-kem-test" => [ + "fuzz/ml-kem-test-bin-fuzz_rand.o", + "fuzz/ml-kem-test-bin-ml-kem.o", + "fuzz/ml-kem-test-bin-test-corpus.o" + ], + "fuzz/ml-kem-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-kem-test-bin-ml-kem.o" => [ + "fuzz/ml-kem.c" + ], + "fuzz/ml-kem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/pem-test" => [ + "fuzz/pem-test-bin-pem.o", + "fuzz/pem-test-bin-test-corpus.o" + ], + "fuzz/pem-test-bin-pem.o" => [ + "fuzz/pem.c" + ], + "fuzz/pem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/provider-test" => [ + "fuzz/provider-test-bin-provider.o", + "fuzz/provider-test-bin-test-corpus.o" + ], + "fuzz/provider-test-bin-provider.o" => [ + "fuzz/provider.c" + ], + "fuzz/provider-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/punycode-test" => [ + "fuzz/punycode-test-bin-punycode.o", + "fuzz/punycode-test-bin-test-corpus.o" + ], + "fuzz/punycode-test-bin-punycode.o" => [ + "fuzz/punycode.c" + ], + "fuzz/punycode-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-client-test" => [ + "fuzz/quic-client-test-bin-fuzz_rand.o", + "fuzz/quic-client-test-bin-quic-client.o", + "fuzz/quic-client-test-bin-test-corpus.o" + ], + "fuzz/quic-client-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-client-test-bin-quic-client.o" => [ + "fuzz/quic-client.c" + ], + "fuzz/quic-client-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-lcidm-test" => [ + "fuzz/quic-lcidm-test-bin-fuzz_rand.o", + "fuzz/quic-lcidm-test-bin-quic-lcidm.o", + "fuzz/quic-lcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-lcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-lcidm-test-bin-quic-lcidm.o" => [ + "fuzz/quic-lcidm.c" + ], + "fuzz/quic-lcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-rcidm-test" => [ + "fuzz/quic-rcidm-test-bin-fuzz_rand.o", + "fuzz/quic-rcidm-test-bin-quic-rcidm.o", + "fuzz/quic-rcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-rcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-rcidm-test-bin-quic-rcidm.o" => [ + "fuzz/quic-rcidm.c" + ], + "fuzz/quic-rcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-server-test" => [ + "fuzz/quic-server-test-bin-fuzz_rand.o", + "fuzz/quic-server-test-bin-quic-server.o", + "fuzz/quic-server-test-bin-test-corpus.o" + ], + "fuzz/quic-server-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-server-test-bin-quic-server.o" => [ + "fuzz/quic-server.c" + ], + "fuzz/quic-server-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-srtm-test" => [ + "fuzz/quic-srtm-test-bin-fuzz_rand.o", + "fuzz/quic-srtm-test-bin-quic-srtm.o", + "fuzz/quic-srtm-test-bin-test-corpus.o" + ], + "fuzz/quic-srtm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-srtm-test-bin-quic-srtm.o" => [ + "fuzz/quic-srtm.c" + ], + "fuzz/quic-srtm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/server-test" => [ "fuzz/server-test-bin-fuzz_rand.o", "fuzz/server-test-bin-server.o", @@ -23804,6 +27813,40 @@ our %unified_info = ( "fuzz/server-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/slh-dsa-test" => [ + "fuzz/slh-dsa-test-bin-fuzz_rand.o", + "fuzz/slh-dsa-test-bin-slh-dsa.o", + "fuzz/slh-dsa-test-bin-test-corpus.o" + ], + "fuzz/slh-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/slh-dsa-test-bin-slh-dsa.o" => [ + "fuzz/slh-dsa.c" + ], + "fuzz/slh-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/smime-test" => [ + "fuzz/smime-test-bin-smime.o", + "fuzz/smime-test-bin-test-corpus.o" + ], + "fuzz/smime-test-bin-smime.o" => [ + "fuzz/smime.c" + ], + "fuzz/smime-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test" => [ + "fuzz/v3name-test-bin-test-corpus.o", + "fuzz/v3name-test-bin-v3name.o" + ], + "fuzz/v3name-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test-bin-v3name.o" => [ + "fuzz/v3name.c" + ], "fuzz/x509-test" => [ "fuzz/x509-test-bin-fuzz_rand.o", "fuzz/x509-test-bin-test-corpus.o", @@ -23830,6 +27873,7 @@ our %unified_info = ( "crypto/aes/libcrypto-lib-aesni-sha1-x86_64.o", "crypto/aes/libcrypto-lib-aesni-sha256-x86_64.o", "crypto/aes/libcrypto-lib-aesni-x86_64.o", + "crypto/aes/libcrypto-lib-aesni-xts-avx512.o", "crypto/aes/libcrypto-lib-bsaes-x86_64.o", "crypto/aes/libcrypto-lib-vpaes-x86_64.o", "crypto/aria/libcrypto-lib-aria.o", @@ -23928,6 +27972,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -23968,8 +28013,13 @@ our %unified_info = ( "crypto/bn/libcrypto-lib-bn_srp.o", "crypto/bn/libcrypto-lib-bn_word.o", "crypto/bn/libcrypto-lib-bn_x931p.o", + "crypto/bn/libcrypto-lib-rsaz-2k-avx512.o", + "crypto/bn/libcrypto-lib-rsaz-2k-avxifma.o", + "crypto/bn/libcrypto-lib-rsaz-3k-avx512.o", + "crypto/bn/libcrypto-lib-rsaz-3k-avxifma.o", + "crypto/bn/libcrypto-lib-rsaz-4k-avx512.o", + "crypto/bn/libcrypto-lib-rsaz-4k-avxifma.o", "crypto/bn/libcrypto-lib-rsaz-avx2.o", - "crypto/bn/libcrypto-lib-rsaz-avx512.o", "crypto/bn/libcrypto-lib-rsaz-x86_64.o", "crypto/bn/libcrypto-lib-rsaz_exp.o", "crypto/bn/libcrypto-lib-rsaz_exp_x2.o", @@ -23995,6 +28045,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -24173,7 +28224,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", + "crypto/err/libcrypto-lib-err_mark.o", "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o", "crypto/ess/libcrypto-lib-ess_asn1.o", "crypto/ess/libcrypto-lib-ess_err.o", "crypto/ess/libcrypto-lib-ess_lib.o", @@ -24256,7 +28309,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/ffc/libcrypto-lib-ffc_backend.o", "crypto/ffc/libcrypto-lib-ffc_dh.o", "crypto/ffc/libcrypto-lib-ffc_key_generate.o", @@ -24264,7 +28319,11 @@ our %unified_info = ( "crypto/ffc/libcrypto-lib-ffc_params.o", "crypto/ffc/libcrypto-lib-ffc_params_generate.o", "crypto/ffc/libcrypto-lib-ffc_params_validate.o", + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", "crypto/hmac/libcrypto-lib-hmac.o", + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o", "crypto/http/libcrypto-lib-http_client.o", "crypto/http/libcrypto-lib-http_err.o", "crypto/http/libcrypto-lib-http_lib.o", @@ -24278,6 +28337,7 @@ our %unified_info = ( "crypto/lhash/libcrypto-lib-lhash.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -24287,10 +28347,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -24307,6 +28370,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -24314,12 +28378,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libcrypto-lib-x86_64cpuid.o", @@ -24331,6 +28399,16 @@ our %unified_info = ( "crypto/md5/libcrypto-lib-md5_sha1.o", "crypto/mdc2/libcrypto-lib-mdc2_one.o", "crypto/mdc2/libcrypto-lib-mdc2dgst.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_kem/libcrypto-lib-ml_kem.o", + "crypto/modes/libcrypto-lib-aes-gcm-avx512.o", "crypto/modes/libcrypto-lib-aesni-gcm-x86_64.o", "crypto/modes/libcrypto-lib-cbc128.o", "crypto/modes/libcrypto-lib-ccm128.o", @@ -24344,6 +28422,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/objects/libcrypto-lib-o_names.o", "crypto/objects/libcrypto-lib-obj_dat.o", "crypto/objects/libcrypto-lib-obj_err.o", @@ -24408,6 +28487,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rc2/libcrypto-lib-rc2_cbc.o", "crypto/rc2/libcrypto-lib-rc2_ecb.o", @@ -24461,6 +28541,16 @@ our %unified_info = ( "crypto/sha/libcrypto-lib-sha512-x86_64.o", "crypto/sha/libcrypto-lib-sha512.o", "crypto/siphash/libcrypto-lib-siphash.o", + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", "crypto/sm2/libcrypto-lib-sm2_crypt.o", "crypto/sm2/libcrypto-lib-sm2_err.o", "crypto/sm2/libcrypto-lib-sm2_key.o", @@ -24478,6 +28568,12 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_register.o", "crypto/store/libcrypto-lib-store_result.o", "crypto/store/libcrypto-lib-store_strings.o", + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", "crypto/ts/libcrypto-lib-ts_asn1.o", "crypto/ts/libcrypto-lib-ts_conf.o", "crypto/ts/libcrypto-lib-ts_err.o", @@ -24506,14 +28602,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -24522,12 +28626,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -24535,13 +28644,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -24559,6 +28675,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -24568,6 +28685,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -24590,14 +28708,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -24614,12 +28733,60 @@ our %unified_info = ( "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", "ssl/libssl-lib-tls_srp.o", - "ssl/record/libssl-lib-dtls1_bitmap.o", + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o", "ssl/record/libssl-lib-rec_layer_d1.o", "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o", "ssl/statem/libssl-lib-extensions.o", "ssl/statem/libssl-lib-extensions_clnt.o", "ssl/statem/libssl-lib-extensions_cust.o", @@ -24657,12 +28824,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/der/der_ecx_key.c" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/der/der_ml_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/der/der_ml_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/der/der_rsa_gen.c" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/der/der_rsa_key.c" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/der/der_slh_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/der/der_slh_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/der/der_wrap_gen.c" ], @@ -24729,6 +28908,9 @@ our %unified_info = ( "providers/common/libfips-lib-securitycheck_fips.o" => [ "providers/common/securitycheck_fips.c" ], + "providers/endecode_test-bin-legacyprov.o" => [ + "providers/legacyprov.c" + ], "providers/evp_extra_test-bin-legacyprov.o" => [ "providers/legacyprov.c" ], @@ -24739,6 +28921,9 @@ our %unified_info = ( "providers/fips/fips-dso-fips_entry.o" => [ "providers/fips/fips_entry.c" ], + "providers/fips/libfips-lib-fipsindicator.o" => [ + "providers/fips/fipsindicator.c" + ], "providers/fips/libfips-lib-fipsprov.o" => [ "providers/fips/fipsprov.c" ], @@ -24802,6 +28987,15 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o" => [ "providers/implementations/ciphers/cipher_aes_gcm_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o" => [ "providers/implementations/ciphers/cipher_aes_hw.c" ], @@ -24874,9 +29068,27 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o" => [ "providers/implementations/ciphers/cipher_sm4.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o" => [ "providers/implementations/ciphers/cipher_sm4_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o" => [ "providers/implementations/ciphers/cipher_tdes.c" ], @@ -25096,6 +29308,15 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" => [ "providers/implementations/encode_decode/endecoder_common.c" ], + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o" => [ + "providers/implementations/encode_decode/ml_common_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o" => [ + "providers/implementations/encode_decode/ml_dsa_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" => [ + "providers/implementations/encode_decode/ml_kem_codecs.c" + ], "providers/implementations/exchange/libdefault-lib-dh_exch.o" => [ "providers/implementations/exchange/dh_exch.c" ], @@ -25120,9 +29341,15 @@ our %unified_info = ( "providers/implementations/exchange/libfips-lib-kdf_exch.o" => [ "providers/implementations/exchange/kdf_exch.c" ], + "providers/implementations/kdfs/libdefault-lib-argon2.o" => [ + "providers/implementations/kdfs/argon2.c" + ], "providers/implementations/kdfs/libdefault-lib-hkdf.o" => [ "providers/implementations/kdfs/hkdf.c" ], + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o" => [ + "providers/implementations/kdfs/hmacdrbg_kdf.c" + ], "providers/implementations/kdfs/libdefault-lib-kbkdf.o" => [ "providers/implementations/kdfs/kbkdf.c" ], @@ -25180,12 +29407,39 @@ our %unified_info = ( "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" => [ "providers/implementations/kdfs/pbkdf1.c" ], + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" => [ + "providers/implementations/kdfs/pvkkdf.c" + ], + "providers/implementations/kem/libdefault-lib-ec_kem.o" => [ + "providers/implementations/kem/ec_kem.c" + ], + "providers/implementations/kem/libdefault-lib-ecx_kem.o" => [ + "providers/implementations/kem/ecx_kem.c" + ], + "providers/implementations/kem/libdefault-lib-kem_util.o" => [ + "providers/implementations/kem/kem_util.c" + ], + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libdefault-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libdefault-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libfips-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libfips-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libfips-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libtemplate-lib-template_kem.o" => [ + "providers/implementations/kem/template_kem.c" + ], "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25204,9 +29458,21 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25225,9 +29491,24 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" => [ + "providers/implementations/keymgmt/template_kmgmt.c" + ], "providers/implementations/macs/libdefault-lib-blake2b_mac.o" => [ "providers/implementations/macs/blake2b_mac.c" ], @@ -25264,9 +29545,6 @@ our %unified_info = ( "providers/implementations/macs/libfips-lib-kmac_prov.o" => [ "providers/implementations/macs/kmac_prov.c" ], - "providers/implementations/rands/libdefault-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libdefault-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25282,12 +29560,12 @@ our %unified_info = ( "providers/implementations/rands/libdefault-lib-seed_src.o" => [ "providers/implementations/rands/seed_src.c" ], + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o" => [ + "providers/implementations/rands/seed_src_jitter.c" + ], "providers/implementations/rands/libdefault-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], - "providers/implementations/rands/libfips-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libfips-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25300,6 +29578,9 @@ our %unified_info = ( "providers/implementations/rands/libfips-lib-drbg_hmac.o" => [ "providers/implementations/rands/drbg_hmac.c" ], + "providers/implementations/rands/libfips-lib-fips_crng_test.o" => [ + "providers/implementations/rands/fips_crng_test.c" + ], "providers/implementations/rands/libfips-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], @@ -25327,9 +29608,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/implementations/signature/sm2_sig.c" ], @@ -25345,9 +29632,27 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libfips-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], "providers/implementations/storemgmt/libdefault-lib-file_store.o" => [ "providers/implementations/storemgmt/file_store.c" ], @@ -25371,8 +29676,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/libcommon-lib-provider_ctx.o", "providers/common/libcommon-lib-provider_err.o", @@ -25384,7 +29693,7 @@ our %unified_info = ( "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", "providers/implementations/digests/libcommon-lib-digestcommon.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/methods/libcommon-lib-tls_pad.o" ], "providers/libcrypto-lib-baseprov.o" => [ "providers/baseprov.c" @@ -25420,6 +29729,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -25444,7 +29756,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -25473,11 +29791,16 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o", "providers/implementations/exchange/libdefault-lib-dh_exch.o", "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", "providers/implementations/exchange/libdefault-lib-ecx_exch.o", "providers/implementations/exchange/libdefault-lib-kdf_exch.o", + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -25488,6 +29811,11 @@ our %unified_info = ( "providers/implementations/kdfs/libdefault-lib-sskdf.o", "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", "providers/implementations/kdfs/libdefault-lib-x942kdf.o", + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", @@ -25495,7 +29823,11 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libdefault-lib-blake2b_mac.o", "providers/implementations/macs/libdefault-lib-blake2s_mac.o", "providers/implementations/macs/libdefault-lib-cmac_prov.o", @@ -25504,12 +29836,12 @@ our %unified_info = ( "providers/implementations/macs/libdefault-lib-kmac_prov.o", "providers/implementations/macs/libdefault-lib-poly1305_prov.o", "providers/implementations/macs/libdefault-lib-siphash_prov.o", - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", @@ -25519,11 +29851,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", "providers/implementations/storemgmt/libdefault-lib-file_store.o", "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", - "ssl/libdefault-lib-s3_cbc.o" + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" ], "providers/libfips.a" => [ "crypto/aes/libfips-lib-aes-x86_64.o", @@ -25533,6 +29869,7 @@ our %unified_info = ( "crypto/aes/libfips-lib-aesni-sha1-x86_64.o", "crypto/aes/libfips-lib-aesni-sha256-x86_64.o", "crypto/aes/libfips-lib-aesni-x86_64.o", + "crypto/aes/libfips-lib-aesni-xts-avx512.o", "crypto/aes/libfips-lib-bsaes-x86_64.o", "crypto/aes/libfips-lib-vpaes-x86_64.o", "crypto/bn/asm/libfips-lib-x86_64-gcc.o", @@ -25563,8 +29900,13 @@ our %unified_info = ( "crypto/bn/libfips-lib-bn_sqr.o", "crypto/bn/libfips-lib-bn_sqrt.o", "crypto/bn/libfips-lib-bn_word.o", + "crypto/bn/libfips-lib-rsaz-2k-avx512.o", + "crypto/bn/libfips-lib-rsaz-2k-avxifma.o", + "crypto/bn/libfips-lib-rsaz-3k-avx512.o", + "crypto/bn/libfips-lib-rsaz-3k-avxifma.o", + "crypto/bn/libfips-lib-rsaz-4k-avx512.o", + "crypto/bn/libfips-lib-rsaz-4k-avxifma.o", "crypto/bn/libfips-lib-rsaz-avx2.o", - "crypto/bn/libfips-lib-rsaz-avx512.o", "crypto/bn/libfips-lib-rsaz-x86_64.o", "crypto/bn/libfips-lib-rsaz_exp.o", "crypto/bn/libfips-lib-rsaz_exp_x2.o", @@ -25641,14 +29983,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", + "crypto/evp/libfips-lib-s_lib.o", "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o", "crypto/ffc/libfips-lib-ffc_backend.o", "crypto/ffc/libfips-lib-ffc_dh.o", "crypto/ffc/libfips-lib-ffc_key_generate.o", @@ -25656,6 +29999,8 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params.o", "crypto/ffc/libfips-lib-ffc_params_generate.o", "crypto/ffc/libfips-lib-ffc_params_validate.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o", "crypto/hmac/libfips-lib-hmac.o", "crypto/lhash/libfips-lib-lhash.o", "crypto/libfips-lib-asn1_dsa.o", @@ -25677,6 +30022,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -25685,7 +30031,18 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", "crypto/libfips-lib-x86_64cpuid.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o", + "crypto/ml_kem/libfips-lib-ml_kem.o", + "crypto/modes/libfips-lib-aes-gcm-avx512.o", "crypto/modes/libfips-lib-aesni-gcm-x86_64.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", @@ -25696,6 +30053,7 @@ our %unified_info = ( "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o", "crypto/property/libfips-lib-defn_cache.o", "crypto/property/libfips-lib-property.o", "crypto/property/libfips-lib-property_parse.o", @@ -25729,7 +30087,23 @@ our %unified_info = ( "crypto/sha/libfips-lib-sha3.o", "crypto/sha/libfips-lib-sha512-x86_64.o", "crypto/sha/libfips-lib-sha512.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o", "crypto/stack/libfips-lib-stack.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o", "providers/common/der/libfips-lib-der_rsa_sig.o", "providers/common/libfips-lib-bio_prov.o", "providers/common/libfips-lib-capabilities.o", @@ -25738,6 +30112,7 @@ our %unified_info = ( "providers/common/libfips-lib-provider_util.o", "providers/common/libfips-lib-securitycheck.o", "providers/common/libfips-lib-securitycheck_fips.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o", @@ -25775,6 +30150,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", "providers/implementations/kem/libfips-lib-rsa_kem.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", @@ -25782,24 +30159,32 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libfips-lib-cmac_prov.o", "providers/implementations/macs/libfips-lib-gmac_prov.o", "providers/implementations/macs/libfips-lib-hmac_prov.o", "providers/implementations/macs/libfips-lib-kmac_prov.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o", "providers/libcommon.a", - "ssl/libfips-lib-s3_cbc.o" + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "providers/liblegacy-lib-prov_running.o" => [ "providers/prov_running.c" @@ -25829,13 +30214,12 @@ our %unified_info = ( "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", "providers/implementations/digests/liblegacy-lib-wp_prov.o", "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o", "providers/liblegacy-lib-prov_running.o" ], - "ssl/libdefault-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" - ], - "ssl/libfips-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" + "providers/libtemplate.a" => [ + "providers/implementations/kem/libtemplate-lib-template_kem.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "ssl/libssl-lib-bio_ssl.o" => [ "ssl/bio_ssl.c" @@ -25855,6 +30239,9 @@ our %unified_info = ( "ssl/libssl-lib-pqueue.o" => [ "ssl/pqueue.c" ], + "ssl/libssl-lib-priority_queue.o" => [ + "ssl/priority_queue.c" + ], "ssl/libssl-lib-s3_enc.o" => [ "ssl/s3_enc.c" ], @@ -25870,15 +30257,15 @@ our %unified_info = ( "ssl/libssl-lib-ssl_cert.o" => [ "ssl/ssl_cert.c" ], + "ssl/libssl-lib-ssl_cert_comp.o" => [ + "ssl/ssl_cert_comp.c" + ], "ssl/libssl-lib-ssl_ciph.o" => [ "ssl/ssl_ciph.c" ], "ssl/libssl-lib-ssl_conf.o" => [ "ssl/ssl_conf.c" ], - "ssl/libssl-lib-ssl_err.o" => [ - "ssl/ssl_err.c" - ], "ssl/libssl-lib-ssl_err_legacy.o" => [ "ssl/ssl_err_legacy.c" ], @@ -25927,11 +30314,131 @@ our %unified_info = ( "ssl/libssl-lib-tls_srp.o" => [ "ssl/tls_srp.c" ], - "ssl/record/libcommon-lib-tls_pad.o" => [ - "ssl/record/tls_pad.c" + "ssl/quic/libssl-lib-cc_newreno.o" => [ + "ssl/quic/cc_newreno.c" + ], + "ssl/quic/libssl-lib-json_enc.o" => [ + "ssl/quic/json_enc.c" + ], + "ssl/quic/libssl-lib-qlog.o" => [ + "ssl/quic/qlog.c" + ], + "ssl/quic/libssl-lib-qlog_event_helpers.o" => [ + "ssl/quic/qlog_event_helpers.c" + ], + "ssl/quic/libssl-lib-quic_ackm.o" => [ + "ssl/quic/quic_ackm.c" + ], + "ssl/quic/libssl-lib-quic_cfq.o" => [ + "ssl/quic/quic_cfq.c" + ], + "ssl/quic/libssl-lib-quic_channel.o" => [ + "ssl/quic/quic_channel.c" + ], + "ssl/quic/libssl-lib-quic_demux.o" => [ + "ssl/quic/quic_demux.c" + ], + "ssl/quic/libssl-lib-quic_engine.o" => [ + "ssl/quic/quic_engine.c" + ], + "ssl/quic/libssl-lib-quic_fc.o" => [ + "ssl/quic/quic_fc.c" + ], + "ssl/quic/libssl-lib-quic_fifd.o" => [ + "ssl/quic/quic_fifd.c" + ], + "ssl/quic/libssl-lib-quic_impl.o" => [ + "ssl/quic/quic_impl.c" + ], + "ssl/quic/libssl-lib-quic_lcidm.o" => [ + "ssl/quic/quic_lcidm.c" + ], + "ssl/quic/libssl-lib-quic_method.o" => [ + "ssl/quic/quic_method.c" + ], + "ssl/quic/libssl-lib-quic_obj.o" => [ + "ssl/quic/quic_obj.c" + ], + "ssl/quic/libssl-lib-quic_port.o" => [ + "ssl/quic/quic_port.c" + ], + "ssl/quic/libssl-lib-quic_rcidm.o" => [ + "ssl/quic/quic_rcidm.c" + ], + "ssl/quic/libssl-lib-quic_reactor.o" => [ + "ssl/quic/quic_reactor.c" + ], + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o" => [ + "ssl/quic/quic_reactor_wait_ctx.c" + ], + "ssl/quic/libssl-lib-quic_record_rx.o" => [ + "ssl/quic/quic_record_rx.c" + ], + "ssl/quic/libssl-lib-quic_record_shared.o" => [ + "ssl/quic/quic_record_shared.c" + ], + "ssl/quic/libssl-lib-quic_record_tx.o" => [ + "ssl/quic/quic_record_tx.c" + ], + "ssl/quic/libssl-lib-quic_record_util.o" => [ + "ssl/quic/quic_record_util.c" + ], + "ssl/quic/libssl-lib-quic_rstream.o" => [ + "ssl/quic/quic_rstream.c" ], - "ssl/record/libssl-lib-dtls1_bitmap.o" => [ - "ssl/record/dtls1_bitmap.c" + "ssl/quic/libssl-lib-quic_rx_depack.o" => [ + "ssl/quic/quic_rx_depack.c" + ], + "ssl/quic/libssl-lib-quic_sf_list.o" => [ + "ssl/quic/quic_sf_list.c" + ], + "ssl/quic/libssl-lib-quic_srt_gen.o" => [ + "ssl/quic/quic_srt_gen.c" + ], + "ssl/quic/libssl-lib-quic_srtm.o" => [ + "ssl/quic/quic_srtm.c" + ], + "ssl/quic/libssl-lib-quic_sstream.o" => [ + "ssl/quic/quic_sstream.c" + ], + "ssl/quic/libssl-lib-quic_statm.o" => [ + "ssl/quic/quic_statm.c" + ], + "ssl/quic/libssl-lib-quic_stream_map.o" => [ + "ssl/quic/quic_stream_map.c" + ], + "ssl/quic/libssl-lib-quic_thread_assist.o" => [ + "ssl/quic/quic_thread_assist.c" + ], + "ssl/quic/libssl-lib-quic_tls.o" => [ + "ssl/quic/quic_tls.c" + ], + "ssl/quic/libssl-lib-quic_tls_api.o" => [ + "ssl/quic/quic_tls_api.c" + ], + "ssl/quic/libssl-lib-quic_trace.o" => [ + "ssl/quic/quic_trace.c" + ], + "ssl/quic/libssl-lib-quic_tserver.o" => [ + "ssl/quic/quic_tserver.c" + ], + "ssl/quic/libssl-lib-quic_txp.o" => [ + "ssl/quic/quic_txp.c" + ], + "ssl/quic/libssl-lib-quic_txpim.o" => [ + "ssl/quic/quic_txpim.c" + ], + "ssl/quic/libssl-lib-quic_types.o" => [ + "ssl/quic/quic_types.c" + ], + "ssl/quic/libssl-lib-quic_wire.o" => [ + "ssl/quic/quic_wire.c" + ], + "ssl/quic/libssl-lib-quic_wire_pkt.o" => [ + "ssl/quic/quic_wire_pkt.c" + ], + "ssl/quic/libssl-lib-uint_set.o" => [ + "ssl/quic/uint_set.c" ], "ssl/record/libssl-lib-rec_layer_d1.o" => [ "ssl/record/rec_layer_d1.c" @@ -25939,14 +30446,44 @@ our %unified_info = ( "ssl/record/libssl-lib-rec_layer_s3.o" => [ "ssl/record/rec_layer_s3.c" ], - "ssl/record/libssl-lib-ssl3_buffer.o" => [ - "ssl/record/ssl3_buffer.c" + "ssl/record/methods/libcommon-lib-tls_pad.o" => [ + "ssl/record/methods/tls_pad.c" + ], + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libfips-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libssl-lib-dtls_meth.o" => [ + "ssl/record/methods/dtls_meth.c" + ], + "ssl/record/methods/libssl-lib-ssl3_meth.o" => [ + "ssl/record/methods/ssl3_meth.c" + ], + "ssl/record/methods/libssl-lib-tls13_meth.o" => [ + "ssl/record/methods/tls13_meth.c" + ], + "ssl/record/methods/libssl-lib-tls1_meth.o" => [ + "ssl/record/methods/tls1_meth.c" + ], + "ssl/record/methods/libssl-lib-tls_common.o" => [ + "ssl/record/methods/tls_common.c" ], - "ssl/record/libssl-lib-ssl3_record.o" => [ - "ssl/record/ssl3_record.c" + "ssl/record/methods/libssl-lib-tls_multib.o" => [ + "ssl/record/methods/tls_multib.c" ], - "ssl/record/libssl-lib-ssl3_record_tls13.o" => [ - "ssl/record/ssl3_record_tls13.c" + "ssl/record/methods/libssl-lib-tlsany_meth.o" => [ + "ssl/record/methods/tlsany_meth.c" + ], + "ssl/rio/libssl-lib-poll_builder.o" => [ + "ssl/rio/poll_builder.c" + ], + "ssl/rio/libssl-lib-poll_immediate.o" => [ + "ssl/rio/poll_immediate.c" + ], + "ssl/rio/libssl-lib-rio_notifier.o" => [ + "ssl/rio/rio_notifier.c" ], "ssl/statem/libssl-lib-extensions.o" => [ "ssl/statem/extensions.c" @@ -26042,6 +30579,8 @@ our %unified_info = ( "test/asn1_string_table_test.c" ], "test/asn1_time_test" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1_time_test-bin-ctype.o", "test/asn1_time_test-bin-asn1_time_test.o" ], "test/asn1_time_test-bin-asn1_time_test.o" => [ @@ -26072,6 +30611,18 @@ our %unified_info = ( "test/bftest-bin-bftest.o" => [ "test/bftest.c" ], + "test/bio_addr_test" => [ + "test/bio_addr_test-bin-bio_addr_test.o" + ], + "test/bio_addr_test-bin-bio_addr_test.o" => [ + "test/bio_addr_test.c" + ], + "test/bio_base64_test" => [ + "test/bio_base64_test-bin-bio_base64_test.o" + ], + "test/bio_base64_test-bin-bio_base64_test.o" => [ + "test/bio_base64_test.c" + ], "test/bio_callback_test" => [ "test/bio_callback_test-bin-bio_callback_test.o" ], @@ -26084,6 +30635,12 @@ our %unified_info = ( "test/bio_core_test-bin-bio_core_test.o" => [ "test/bio_core_test.c" ], + "test/bio_dgram_test" => [ + "test/bio_dgram_test-bin-bio_dgram_test.o" + ], + "test/bio_dgram_test-bin-bio_dgram_test.o" => [ + "test/bio_dgram_test.c" + ], "test/bio_enc_test" => [ "test/bio_enc_test-bin-bio_enc_test.o" ], @@ -26096,6 +30653,12 @@ our %unified_info = ( "test/bio_memleak_test-bin-bio_memleak_test.o" => [ "test/bio_memleak_test.c" ], + "test/bio_meth_test" => [ + "test/bio_meth_test-bin-bio_meth_test.o" + ], + "test/bio_meth_test-bin-bio_meth_test.o" => [ + "test/bio_meth_test.c" + ], "test/bio_prefix_text" => [ "test/bio_prefix_text-bin-bio_prefix_text.o" ], @@ -26114,6 +30677,12 @@ our %unified_info = ( "test/bio_readbuffer_test-bin-bio_readbuffer_test.o" => [ "test/bio_readbuffer_test.c" ], + "test/bio_tfo_test" => [ + "test/bio_tfo_test-bin-bio_tfo_test.o" + ], + "test/bio_tfo_test-bin-bio_tfo_test.o" => [ + "test/bio_tfo_test.c" + ], "test/bioprinttest" => [ "test/bioprinttest-bin-bioprinttest.o" ], @@ -26132,6 +30701,12 @@ our %unified_info = ( "test/bntest-bin-bntest.o" => [ "test/bntest.c" ], + "test/build_wincrypt_test" => [ + "test/build_wincrypt_test-bin-build_wincrypt_test.o" + ], + "test/build_wincrypt_test-bin-build_wincrypt_test.o" => [ + "test/build_wincrypt_test.c" + ], "test/buildtest_c_aes" => [ "test/buildtest_c_aes-bin-buildtest_aes.o" ], @@ -26162,6 +30737,12 @@ our %unified_info = ( "test/buildtest_c_buffer-bin-buildtest_buffer.o" => [ "test/buildtest_buffer.c" ], + "test/buildtest_c_byteorder" => [ + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" + ], + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" => [ + "test/buildtest_byteorder.c" + ], "test/buildtest_c_camellia" => [ "test/buildtest_c_camellia-bin-buildtest_camellia.o" ], @@ -26210,12 +30791,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch-bin-buildtest_core_dispatch.o" => [ "test/buildtest_core_dispatch.c" ], - "test/buildtest_c_core_names" => [ - "test/buildtest_c_core_names-bin-buildtest_core_names.o" - ], - "test/buildtest_c_core_names-bin-buildtest_core_names.o" => [ - "test/buildtest_core_names.c" - ], "test/buildtest_c_core_object" => [ "test/buildtest_c_core_object-bin-buildtest_core_object.o" ], @@ -26264,6 +30839,12 @@ our %unified_info = ( "test/buildtest_c_e_os2-bin-buildtest_e_os2.o" => [ "test/buildtest_e_os2.c" ], + "test/buildtest_c_e_ostime" => [ + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" + ], + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" => [ + "test/buildtest_e_ostime.c" + ], "test/buildtest_c_ebcdic" => [ "test/buildtest_c_ebcdic-bin-buildtest_ebcdic.o" ], @@ -26318,6 +30899,12 @@ our %unified_info = ( "test/buildtest_c_hmac-bin-buildtest_hmac.o" => [ "test/buildtest_hmac.c" ], + "test/buildtest_c_hpke" => [ + "test/buildtest_c_hpke-bin-buildtest_hpke.o" + ], + "test/buildtest_c_hpke-bin-buildtest_hpke.o" => [ + "test/buildtest_hpke.c" + ], "test/buildtest_c_http" => [ "test/buildtest_c_http-bin-buildtest_http.o" ], @@ -26330,6 +30917,12 @@ our %unified_info = ( "test/buildtest_c_idea-bin-buildtest_idea.o" => [ "test/buildtest_idea.c" ], + "test/buildtest_c_indicator" => [ + "test/buildtest_c_indicator-bin-buildtest_indicator.o" + ], + "test/buildtest_c_indicator-bin-buildtest_indicator.o" => [ + "test/buildtest_indicator.c" + ], "test/buildtest_c_kdf" => [ "test/buildtest_c_kdf-bin-buildtest_kdf.o" ], @@ -26360,6 +30953,12 @@ our %unified_info = ( "test/buildtest_c_mdc2-bin-buildtest_mdc2.o" => [ "test/buildtest_mdc2.c" ], + "test/buildtest_c_ml_kem" => [ + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" + ], + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" => [ + "test/buildtest_ml_kem.c" + ], "test/buildtest_c_modes" => [ "test/buildtest_c_modes-bin-buildtest_modes.o" ], @@ -26420,6 +31019,12 @@ our %unified_info = ( "test/buildtest_c_provider-bin-buildtest_provider.o" => [ "test/buildtest_provider.c" ], + "test/buildtest_c_quic" => [ + "test/buildtest_c_quic-bin-buildtest_quic.o" + ], + "test/buildtest_c_quic-bin-buildtest_quic.o" => [ + "test/buildtest_quic.c" + ], "test/buildtest_c_rand" => [ "test/buildtest_c_rand-bin-buildtest_rand.o" ], @@ -26504,6 +31109,12 @@ our %unified_info = ( "test/buildtest_c_symhacks-bin-buildtest_symhacks.o" => [ "test/buildtest_symhacks.c" ], + "test/buildtest_c_thread" => [ + "test/buildtest_c_thread-bin-buildtest_thread.o" + ], + "test/buildtest_c_thread-bin-buildtest_thread.o" => [ + "test/buildtest_thread.c" + ], "test/buildtest_c_tls1" => [ "test/buildtest_c_tls1-bin-buildtest_tls1.o" ], @@ -26534,6 +31145,29 @@ our %unified_info = ( "test/buildtest_c_whrlpool-bin-buildtest_whrlpool.o" => [ "test/buildtest_whrlpool.c" ], + "test/byteorder_test" => [ + "test/byteorder_test-bin-byteorder_test.o" + ], + "test/byteorder_test-bin-byteorder_test.o" => [ + "test/byteorder_test.c" + ], + "test/ca_internals_test" => [ + "apps/ca_internals_test-bin-ca.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", + "crypto/ca_internals_test-bin-ctype.o", + "test/ca_internals_test-bin-ca_internals_test.o" + ], + "test/ca_internals_test-bin-ca_internals_test.o" => [ + "test/ca_internals_test.c" + ], "test/casttest" => [ "test/casttest-bin-casttest.o" ], @@ -26712,6 +31346,12 @@ our %unified_info = ( "test/danetest-bin-danetest.o" => [ "test/danetest.c" ], + "test/decoder_propq_test" => [ + "test/decoder_propq_test-bin-decoder_propq_test.o" + ], + "test/decoder_propq_test-bin-decoder_propq_test.o" => [ + "test/decoder_propq_test.c" + ], "test/defltfips_test" => [ "test/defltfips_test-bin-defltfips_test.o" ], @@ -26793,6 +31433,7 @@ our %unified_info = ( "test/ectest.c" ], "test/endecode_test" => [ + "providers/endecode_test-bin-legacyprov.o", "test/endecode_test-bin-endecode_test.o", "test/helpers/endecode_test-bin-predefined_dhparams.o" ], @@ -26825,17 +31466,29 @@ our %unified_info = ( ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", - "test/evp_extra_test-bin-evp_extra_test.o" + "test/evp_extra_test-bin-evp_extra_test.o", + "test/evp_extra_test-bin-fake_pipelineprov.o", + "test/evp_extra_test-bin-fake_rsaprov.o" ], "test/evp_extra_test-bin-evp_extra_test.o" => [ "test/evp_extra_test.c" ], + "test/evp_extra_test-bin-fake_pipelineprov.o" => [ + "test/fake_pipelineprov.c" + ], + "test/evp_extra_test-bin-fake_rsaprov.o" => [ + "test/fake_rsaprov.c" + ], "test/evp_extra_test2" => [ - "test/evp_extra_test2-bin-evp_extra_test2.o" + "test/evp_extra_test2-bin-evp_extra_test2.o", + "test/evp_extra_test2-bin-tls-provider.o" ], "test/evp_extra_test2-bin-evp_extra_test2.o" => [ "test/evp_extra_test2.c" ], + "test/evp_extra_test2-bin-tls-provider.o" => [ + "test/tls-provider.c" + ], "test/evp_fetch_prov_test" => [ "test/evp_fetch_prov_test-bin-evp_fetch_prov_test.o" ], @@ -26860,6 +31513,12 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name-bin-evp_pkey_ctx_new_from_name.o" => [ "test/evp_pkey_ctx_new_from_name.c" ], + "test/evp_pkey_dhkem_test" => [ + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" + ], + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" => [ + "test/evp_pkey_dhkem_test.c" + ], "test/evp_pkey_dparams_test" => [ "test/evp_pkey_dparams_test-bin-evp_pkey_dparams_test.o" ], @@ -26872,12 +31531,28 @@ our %unified_info = ( "test/evp_pkey_provided_test-bin-evp_pkey_provided_test.o" => [ "test/evp_pkey_provided_test.c" ], + "test/evp_skey_test" => [ + "test/evp_skey_test-bin-evp_skey_test.o", + "test/evp_skey_test-bin-fake_cipherprov.o" + ], + "test/evp_skey_test-bin-evp_skey_test.o" => [ + "test/evp_skey_test.c" + ], + "test/evp_skey_test-bin-fake_cipherprov.o" => [ + "test/fake_cipherprov.c" + ], "test/evp_test" => [ "test/evp_test-bin-evp_test.o" ], "test/evp_test-bin-evp_test.o" => [ "test/evp_test.c" ], + "test/evp_xof_test" => [ + "test/evp_xof_test-bin-evp_xof_test.o" + ], + "test/evp_xof_test-bin-evp_xof_test.o" => [ + "test/evp_xof_test.c" + ], "test/exdatatest" => [ "test/exdatatest-bin-exdatatest.o" ], @@ -26963,15 +31638,108 @@ our %unified_info = ( "test/helpers/fatalerrtest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/json_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/json_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/json_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + "test/helpers/pkcs12.c" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ "test/helpers/pkcs12.c" ], + "test/helpers/quic_multistream_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_multistream_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_multistream_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_newcid_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_newcid_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_newcid_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_radix_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_radix_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_radix_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_srt_gen_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicapitest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicapitest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicapitest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicfaultstest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicfaultstest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicfaultstest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/ssl_old_test-bin-predefined_dhparams.o" => [ "test/helpers/predefined_dhparams.c" ], @@ -26999,6 +31767,9 @@ our %unified_info = ( "test/helpers/tls13ccstest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/hexstr_test" => [ "test/hexstr_test-bin-hexstr_test.o" ], @@ -27011,6 +31782,12 @@ our %unified_info = ( "test/hmactest-bin-hmactest.o" => [ "test/hmactest.c" ], + "test/hpke_test" => [ + "test/hpke_test-bin-hpke_test.o" + ], + "test/hpke_test-bin-hpke_test.o" => [ + "test/hpke_test.c" + ], "test/http_test" => [ "test/http_test-bin-http_test.o" ], @@ -27029,6 +31806,16 @@ our %unified_info = ( "test/igetest-bin-igetest.o" => [ "test/igetest.c" ], + "test/json_test" => [ + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/json_test-bin-json_test.o" + ], + "test/json_test-bin-json_test.o" => [ + "test/json_test.c" + ], "test/keymgmt_internal_test" => [ "test/keymgmt_internal_test-bin-keymgmt_internal_test.o" ], @@ -27049,6 +31836,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -27061,6 +31849,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-tests.o", "test/testutil/libtestutil-lib-testutil_init.o" ], + "test/list_test" => [ + "test/list_test-bin-list_test.o" + ], + "test/list_test-bin-list_test.o" => [ + "test/list_test.c" + ], "test/localetest" => [ "test/localetest-bin-localetest.o" ], @@ -27079,12 +31873,36 @@ our %unified_info = ( "test/mdc2test-bin-mdc2test.o" => [ "test/mdc2test.c" ], + "test/membio_test" => [ + "test/membio_test-bin-membio_test.o" + ], + "test/membio_test-bin-membio_test.o" => [ + "test/membio_test.c" + ], "test/memleaktest" => [ "test/memleaktest-bin-memleaktest.o" ], "test/memleaktest-bin-memleaktest.o" => [ "test/memleaktest.c" ], + "test/ml_dsa_test" => [ + "test/ml_dsa_test-bin-ml_dsa_test.o" + ], + "test/ml_dsa_test-bin-ml_dsa_test.o" => [ + "test/ml_dsa_test.c" + ], + "test/ml_kem_evp_extra_test" => [ + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" + ], + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" => [ + "test/ml_kem_evp_extra_test.c" + ], + "test/ml_kem_internal_test" => [ + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" + ], + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" => [ + "test/ml_kem_internal_test.c" + ], "test/modes_internal_test" => [ "test/modes_internal_test-bin-modes_internal_test.o" ], @@ -27130,11 +31948,18 @@ our %unified_info = ( "test/p_test.c" ], "test/packettest" => [ + "crypto/packettest-bin-quic_vlint.o", "test/packettest-bin-packettest.o" ], "test/packettest-bin-packettest.o" => [ "test/packettest.c" ], + "test/pairwise_fail_test" => [ + "test/pairwise_fail_test-bin-pairwise_fail_test.o" + ], + "test/pairwise_fail_test-bin-pairwise_fail_test.o" => [ + "test/pairwise_fail_test.c" + ], "test/param_build_test" => [ "test/param_build_test-bin-param_build_test.o" ], @@ -27183,6 +32008,13 @@ our %unified_info = ( "test/pemtest-bin-pemtest.o" => [ "test/pemtest.c" ], + "test/pkcs12_api_test" => [ + "test/helpers/pkcs12_api_test-bin-pkcs12.o", + "test/pkcs12_api_test-bin-pkcs12_api_test.o" + ], + "test/pkcs12_api_test-bin-pkcs12_api_test.o" => [ + "test/pkcs12_api_test.c" + ], "test/pkcs12_format_test" => [ "test/helpers/pkcs12_format_test-bin-pkcs12.o", "test/pkcs12_format_test-bin-pkcs12_format_test.o" @@ -27214,6 +32046,12 @@ our %unified_info = ( "test/poly1305_internal_test-bin-poly1305_internal_test.o" => [ "test/poly1305_internal_test.c" ], + "test/priority_queue_test" => [ + "test/priority_queue_test-bin-priority_queue_test.o" + ], + "test/priority_queue_test-bin-priority_queue_test.o" => [ + "test/priority_queue_test.c" + ], "test/property_test" => [ "test/property_test-bin-property_test.o" ], @@ -27232,6 +32070,12 @@ our %unified_info = ( "test/provfetchtest-bin-provfetchtest.o" => [ "test/provfetchtest.c" ], + "test/provider_default_search_path_test" => [ + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" + ], + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" => [ + "test/provider_default_search_path_test.c" + ], "test/provider_fallback_test" => [ "test/provider_fallback_test-bin-provider_fallback_test.o" ], @@ -27280,6 +32124,174 @@ our %unified_info = ( "test/punycode_test-bin-punycode_test.o" => [ "test/punycode_test.c" ], + "test/quic_ackm_test" => [ + "test/quic_ackm_test-bin-cc_dummy.o", + "test/quic_ackm_test-bin-quic_ackm_test.o" + ], + "test/quic_ackm_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_ackm_test-bin-quic_ackm_test.o" => [ + "test/quic_ackm_test.c" + ], + "test/quic_cc_test" => [ + "test/quic_cc_test-bin-quic_cc_test.o" + ], + "test/quic_cc_test-bin-quic_cc_test.o" => [ + "test/quic_cc_test.c" + ], + "test/quic_cfq_test" => [ + "test/quic_cfq_test-bin-quic_cfq_test.o" + ], + "test/quic_cfq_test-bin-quic_cfq_test.o" => [ + "test/quic_cfq_test.c" + ], + "test/quic_client_test" => [ + "test/quic_client_test-bin-quic_client_test.o" + ], + "test/quic_client_test-bin-quic_client_test.o" => [ + "test/quic_client_test.c" + ], + "test/quic_fc_test" => [ + "test/quic_fc_test-bin-quic_fc_test.o" + ], + "test/quic_fc_test-bin-quic_fc_test.o" => [ + "test/quic_fc_test.c" + ], + "test/quic_fifd_test" => [ + "test/quic_fifd_test-bin-cc_dummy.o", + "test/quic_fifd_test-bin-quic_fifd_test.o" + ], + "test/quic_fifd_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_fifd_test-bin-quic_fifd_test.o" => [ + "test/quic_fifd_test.c" + ], + "test/quic_lcidm_test" => [ + "test/quic_lcidm_test-bin-quic_lcidm_test.o" + ], + "test/quic_lcidm_test-bin-quic_lcidm_test.o" => [ + "test/quic_lcidm_test.c" + ], + "test/quic_multistream_test" => [ + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/quic_multistream_test-bin-quic_multistream_test.o" + ], + "test/quic_multistream_test-bin-quic_multistream_test.o" => [ + "test/quic_multistream_test.c" + ], + "test/quic_newcid_test" => [ + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/quic_newcid_test-bin-quic_newcid_test.o" + ], + "test/quic_newcid_test-bin-quic_newcid_test.o" => [ + "test/quic_newcid_test.c" + ], + "test/quic_qlog_test" => [ + "test/quic_qlog_test-bin-quic_qlog_test.o" + ], + "test/quic_qlog_test-bin-quic_qlog_test.o" => [ + "test/quic_qlog_test.c" + ], + "test/quic_radix_test" => [ + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "test/quic_rcidm_test" => [ + "test/quic_rcidm_test-bin-quic_rcidm_test.o" + ], + "test/quic_rcidm_test-bin-quic_rcidm_test.o" => [ + "test/quic_rcidm_test.c" + ], + "test/quic_record_test" => [ + "test/quic_record_test-bin-quic_record_test.o" + ], + "test/quic_record_test-bin-quic_record_test.o" => [ + "test/quic_record_test.c" + ], + "test/quic_srt_gen_test" => [ + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" + ], + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" => [ + "test/quic_srt_gen_test.c" + ], + "test/quic_srtm_test" => [ + "test/quic_srtm_test-bin-quic_srtm_test.o" + ], + "test/quic_srtm_test-bin-quic_srtm_test.o" => [ + "test/quic_srtm_test.c" + ], + "test/quic_stream_test" => [ + "test/quic_stream_test-bin-quic_stream_test.o" + ], + "test/quic_stream_test-bin-quic_stream_test.o" => [ + "test/quic_stream_test.c" + ], + "test/quic_tserver_test" => [ + "test/quic_tserver_test-bin-quic_tserver_test.o" + ], + "test/quic_tserver_test-bin-quic_tserver_test.o" => [ + "test/quic_tserver_test.c" + ], + "test/quic_txp_test" => [ + "test/quic_txp_test-bin-cc_dummy.o", + "test/quic_txp_test-bin-quic_txp_test.o" + ], + "test/quic_txp_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_txp_test-bin-quic_txp_test.o" => [ + "test/quic_txp_test.c" + ], + "test/quic_txpim_test" => [ + "test/quic_txpim_test-bin-quic_txpim_test.o" + ], + "test/quic_txpim_test-bin-quic_txpim_test.o" => [ + "test/quic_txpim_test.c" + ], + "test/quic_wire_test" => [ + "test/quic_wire_test-bin-quic_wire_test.o" + ], + "test/quic_wire_test-bin-quic_wire_test.o" => [ + "test/quic_wire_test.c" + ], + "test/quicapitest" => [ + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/quicapitest-bin-quicapitest.o" + ], + "test/quicapitest-bin-quicapitest.o" => [ + "test/quicapitest.c" + ], + "test/quicfaultstest" => [ + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", + "test/quicfaultstest-bin-quicfaultstest.o" + ], + "test/quicfaultstest-bin-quicfaultstest.o" => [ + "test/quicfaultstest.c" + ], + "test/radix/quic_radix_test-bin-quic_radix.o" => [ + "test/radix/quic_radix.c" + ], "test/rand_status_test" => [ "test/rand_status_test-bin-rand_status_test.o" ], @@ -27310,11 +32322,11 @@ our %unified_info = ( "test/rc5test-bin-rc5test.o" => [ "test/rc5test.c" ], - "test/rdrand_sanitytest" => [ - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" + "test/rdcpu_sanitytest" => [ + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" ], - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" => [ - "test/rdrand_sanitytest.c" + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" => [ + "test/rdcpu_sanitytest.c" ], "test/recordlentest" => [ "test/helpers/recordlentest-bin-ssltestlib.o", @@ -27323,6 +32335,13 @@ our %unified_info = ( "test/recordlentest-bin-recordlentest.o" => [ "test/recordlentest.c" ], + "test/rpktest" => [ + "test/helpers/rpktest-bin-ssltestlib.o", + "test/rpktest-bin-rpktest.o" + ], + "test/rpktest-bin-rpktest.o" => [ + "test/rpktest.c" + ], "test/rsa_complex" => [ "test/rsa_complex-bin-rsa_complex.o" ], @@ -27347,6 +32366,18 @@ our %unified_info = ( "test/rsa_test-bin-rsa_test.o" => [ "test/rsa_test.c" ], + "test/rsa_x931_test" => [ + "test/rsa_x931_test-bin-rsa_x931_test.o" + ], + "test/rsa_x931_test-bin-rsa_x931_test.o" => [ + "test/rsa_x931_test.c" + ], + "test/safe_math_test" => [ + "test/safe_math_test-bin-safe_math_test.o" + ], + "test/safe_math_test-bin-safe_math_test.o" => [ + "test/safe_math_test.c" + ], "test/sanitytest" => [ "test/sanitytest-bin-sanitytest.o" ], @@ -27378,6 +32409,12 @@ our %unified_info = ( "test/siphash_internal_test-bin-siphash_internal_test.o" => [ "test/siphash_internal_test.c" ], + "test/slh_dsa_test" => [ + "test/slh_dsa_test-bin-slh_dsa_test.o" + ], + "test/slh_dsa_test-bin-slh_dsa_test.o" => [ + "test/slh_dsa_test.c" + ], "test/sm2_internal_test" => [ "test/sm2_internal_test-bin-sm2_internal_test.o" ], @@ -27420,6 +32457,13 @@ our %unified_info = ( "test/ssl_ctx_test-bin-ssl_ctx_test.o" => [ "test/ssl_ctx_test.c" ], + "test/ssl_handshake_rtt_test" => [ + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" + ], + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" => [ + "test/ssl_handshake_rtt_test.c" + ], "test/ssl_old_test" => [ "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/ssl_old_test-bin-ssl_old_test.o" @@ -27478,6 +32522,12 @@ our %unified_info = ( "test/stack_test-bin-stack_test.o" => [ "test/stack_test.c" ], + "test/strtoultest" => [ + "test/strtoultest-bin-strtoultest.o" + ], + "test/strtoultest-bin-strtoultest.o" => [ + "test/strtoultest.c" + ], "test/sysdefaulttest" => [ "test/sysdefaulttest-bin-sysdefaulttest.o" ], @@ -27508,6 +32558,9 @@ our %unified_info = ( "test/testutil/libtestutil-lib-format_output.o" => [ "test/testutil/format_output.c" ], + "test/testutil/libtestutil-lib-helper.o" => [ + "test/testutil/helper.c" + ], "test/testutil/libtestutil-lib-load.o" => [ "test/testutil/load.c" ], @@ -27541,6 +32594,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-testutil_init.o" => [ "test/testutil/testutil_init.c" ], + "test/threadpool_test" => [ + "test/threadpool_test-bin-threadpool_test.o" + ], + "test/threadpool_test-bin-threadpool_test.o" => [ + "test/threadpool_test.c" + ], "test/threadstest" => [ "test/threadstest-bin-threadstest.o" ], @@ -27559,6 +32618,12 @@ our %unified_info = ( "test/time_offset_test-bin-time_offset_test.o" => [ "test/time_offset_test.c" ], + "test/time_test" => [ + "test/time_test-bin-time_test.o" + ], + "test/time_test-bin-time_test.o" => [ + "test/time_test.c" + ], "test/tls13ccstest" => [ "test/helpers/tls13ccstest-bin-ssltestlib.o", "test/tls13ccstest-bin-tls13ccstest.o" @@ -27572,6 +32637,13 @@ our %unified_info = ( "test/tls13encryptiontest-bin-tls13encryptiontest.o" => [ "test/tls13encryptiontest.c" ], + "test/tls13groupselection_test" => [ + "test/helpers/tls13groupselection_test-bin-ssltestlib.o", + "test/tls13groupselection_test-bin-tls13groupselection_test.o" + ], + "test/tls13groupselection_test-bin-tls13groupselection_test.o" => [ + "test/tls13groupselection_test.c" + ], "test/trace_api_test" => [ "test/trace_api_test-bin-trace_api_test.o" ], @@ -27627,6 +32699,12 @@ our %unified_info = ( "test/wpackettest-bin-wpackettest.o" => [ "test/wpackettest.c" ], + "test/x509_acert_test" => [ + "test/x509_acert_test-bin-x509_acert_test.o" + ], + "test/x509_acert_test-bin-x509_acert_test.o" => [ + "test/x509_acert_test.c" + ], "test/x509_check_cert_pkey_test" => [ "test/x509_check_cert_pkey_test-bin-x509_check_cert_pkey_test.o" ], @@ -27645,6 +32723,24 @@ our %unified_info = ( "test/x509_internal_test-bin-x509_internal_test.o" => [ "test/x509_internal_test.c" ], + "test/x509_load_cert_file_test" => [ + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" + ], + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" => [ + "test/x509_load_cert_file_test.c" + ], + "test/x509_req_test" => [ + "test/x509_req_test-bin-x509_req_test.o" + ], + "test/x509_req_test-bin-x509_req_test.o" => [ + "test/x509_req_test.c" + ], + "test/x509_test" => [ + "test/x509_test-bin-x509_test.o" + ], + "test/x509_test-bin-x509_test.o" => [ + "test/x509_test.c" + ], "test/x509_time_test" => [ "test/x509_time_test-bin-x509_time_test.o" ], @@ -27708,6 +32804,7 @@ my @makevars = ( "LDLIBS", "MT", "MTFLAGS", + "OBJCOPY", "PERL", "RANLIB", "RC", @@ -27721,6 +32818,12 @@ my %disabled_info = ( "asan" => { "macro" => "OPENSSL_NO_ASAN" }, + "brotli" => { + "macro" => "OPENSSL_NO_BROTLI" + }, + "brotli-dynamic" => { + "macro" => "OPENSSL_NO_BROTLI_DYNAMIC" + }, "comp" => { "macro" => "OPENSSL_NO_COMP", "skipped" => [ @@ -27733,6 +32836,9 @@ my %disabled_info = ( "crypto-mdebug-backtrace" => { "macro" => "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE" }, + "demos" => { + "macro" => "OPENSSL_NO_DEMOS" + }, "ec_nistp_64_gcc_128" => { "macro" => "OPENSSL_NO_EC_NISTP_64_GCC_128" }, @@ -27742,12 +32848,24 @@ my %disabled_info = ( "external-tests" => { "macro" => "OPENSSL_NO_EXTERNAL_TESTS" }, + "fips-jitter" => { + "macro" => "OPENSSL_NO_FIPS_JITTER" + }, "fuzz-afl" => { "macro" => "OPENSSL_NO_FUZZ_AFL" }, "fuzz-libfuzzer" => { "macro" => "OPENSSL_NO_FUZZ_LIBFUZZER" }, + "h3demo" => { + "macro" => "OPENSSL_NO_H3DEMO" + }, + "hqinterop" => { + "macro" => "OPENSSL_NO_HQINTEROP" + }, + "jitter" => { + "macro" => "OPENSSL_NO_JITTER" + }, "ktls" => { "macro" => "OPENSSL_NO_KTLS" }, @@ -27763,6 +32881,9 @@ my %disabled_info = ( "msan" => { "macro" => "OPENSSL_NO_MSAN" }, + "pie" => { + "macro" => "OPENSSL_NO_PIE" + }, "rc5" => { "macro" => "OPENSSL_NO_RC5", "skipped" => [ @@ -27778,6 +32899,12 @@ my %disabled_info = ( "ssl3-method" => { "macro" => "OPENSSL_NO_SSL3_METHOD" }, + "sslkeylog" => { + "macro" => "OPENSSL_NO_SSLKEYLOG" + }, + "tfo" => { + "macro" => "OPENSSL_NO_TFO" + }, "trace" => { "macro" => "OPENSSL_NO_TRACE" }, @@ -27792,6 +32919,21 @@ my %disabled_info = ( }, "weak-ssl-ciphers" => { "macro" => "OPENSSL_NO_WEAK_SSL_CIPHERS" + }, + "winstore" => { + "macro" => "OPENSSL_NO_WINSTORE" + }, + "zlib" => { + "macro" => "OPENSSL_NO_ZLIB" + }, + "zlib-dynamic" => { + "macro" => "OPENSSL_NO_ZLIB_DYNAMIC" + }, + "zstd" => { + "macro" => "OPENSSL_NO_ZSTD" + }, + "zstd-dynamic" => { + "macro" => "OPENSSL_NO_ZSTD_DYNAMIC" } ); my @user_crossable = qw( AR AS CC CXX CPP LD MT RANLIB RC ); @@ -27805,15 +32947,15 @@ unless (caller) { use File::Copy; use Pod::Usage; - use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; - use OpenSSL::fallback '/home/runner/work/node/node/deps/openssl/openssl/external/perl/MODULES.txt'; + use lib '/node/deps/openssl/openssl/util/perl'; + use OpenSSL::fallback '/node/deps/openssl/openssl/external/perl/MODULES.txt'; my $here = dirname($0); if (scalar @ARGV == 0) { # With no arguments, re-create the build file # We do that in two steps, where the first step emits perl - # snipets. + # snippets. my $buildfile = $config{build_file}; my $buildfile_template = "$buildfile.in"; @@ -27833,7 +32975,7 @@ unless (caller) { ); use lib '.'; - use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; + use lib '/node/deps/openssl/openssl/Configurations'; use gentemplate; open my $buildfile_template_fh, ">$buildfile_template" @@ -27850,8 +32992,8 @@ unless (caller) { my $prepend = <<'_____'; use File::Spec::Functions; -use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; -use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; +use lib '/node/deps/openssl/openssl/util/perl'; +use lib '/node/deps/openssl/openssl/Configurations'; use lib '.'; use platform; _____ diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/aes-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/aes-x86_64.s index 1e85beafbe4086..aeaa4d197b6101 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/aes-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/aes-x86_64.s @@ -1870,6 +1870,7 @@ AES_cbc_encrypt: .byte 0xf3,0xc3 .cfi_endproc .size AES_cbc_encrypt,.-AES_cbc_encrypt +.section .rodata .align 64 .LAES_Te: .long 0xa56363c6,0xa56363c6 @@ -2656,6 +2657,7 @@ AES_cbc_encrypt: .long 0x1b1b1b1b, 0x1b1b1b1b, 0, 0 .byte 65,69,83,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 64 +.previous .section ".note.gnu.property", "a" .p2align 3 .long 1f - 0f diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/aesni-sha1-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/aesni-sha1-x86_64.s index 2078fe2ab37874..aeafc094a08991 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/aesni-sha1-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/aesni-sha1-x86_64.s @@ -2718,6 +2718,7 @@ aesni_cbc_sha1_enc_avx: .byte 0xf3,0xc3 .cfi_endproc .size aesni_cbc_sha1_enc_avx,.-aesni_cbc_sha1_enc_avx +.section .rodata .align 64 K_XX_XX: .long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 @@ -2729,6 +2730,7 @@ K_XX_XX: .byte 65,69,83,78,73,45,67,66,67,43,83,72,65,49,32,115,116,105,116,99,104,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 64 +.previous .type aesni_cbc_sha1_enc_shaext,@function .align 32 aesni_cbc_sha1_enc_shaext: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/aesni-sha256-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/aesni-sha256-x86_64.s index c938e50b990bcd..f26bcd4772a4e7 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/aesni-sha256-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/aesni-sha256-x86_64.s @@ -34,6 +34,7 @@ aesni_cbc_sha256_enc: .cfi_endproc .size aesni_cbc_sha256_enc,.-aesni_cbc_sha256_enc +.section .rodata .align 64 .type K256,@object K256: @@ -76,6 +77,7 @@ K256: .long 0,0,0,0, 0,0,0,0 .byte 65,69,83,78,73,45,67,66,67,43,83,72,65,50,53,54,32,115,116,105,116,99,104,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 64 +.previous .type aesni_cbc_sha256_enc_xop,@function .align 64 aesni_cbc_sha256_enc_xop: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/aesni-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/aesni-x86_64.s index 4e35b2b1d379c0..7970fdf0d4558f 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/aesni-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/aesni-x86_64.s @@ -4461,6 +4461,7 @@ __aesni_set_encrypt_key: .cfi_endproc .size aesni_set_encrypt_key,.-aesni_set_encrypt_key .size __aesni_set_encrypt_key,.-__aesni_set_encrypt_key +.section .rodata .align 64 .Lbswap_mask: .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 @@ -4483,6 +4484,7 @@ __aesni_set_encrypt_key: .byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69,83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 64 +.previous .section ".note.gnu.property", "a" .p2align 3 .long 1f - 0f diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/aesni-xts-avx512.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/aesni-xts-avx512.s new file mode 100644 index 00000000000000..a6769b1b53b167 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/aesni-xts-avx512.s @@ -0,0 +1,8145 @@ +.text + +.globl aesni_xts_avx512_eligible +.type aesni_xts_avx512_eligible,@function +.align 32 +aesni_xts_avx512_eligible: + movl OPENSSL_ia32cap_P+8(%rip),%ecx + xorl %eax,%eax + + andl $0xc0030000,%ecx + cmpl $0xc0030000,%ecx + jne .L_done + movl OPENSSL_ia32cap_P+12(%rip),%ecx + + andl $0x640,%ecx + cmpl $0x640,%ecx + cmovel %ecx,%eax +.L_done: + .byte 0xf3,0xc3 +.size aesni_xts_avx512_eligible, .-aesni_xts_avx512_eligible +.globl aesni_xts_128_encrypt_avx512 +.hidden aesni_xts_128_encrypt_avx512 +.type aesni_xts_128_encrypt_avx512,@function +.align 32 +aesni_xts_128_encrypt_avx512: +.cfi_startproc +.byte 243,15,30,250 + pushq %rbp + movq %rsp,%rbp + subq $136,%rsp + andq $0xffffffffffffffc0,%rsp + movq %rbx,128(%rsp) + movq $0x87,%r10 + vmovdqu (%r9),%xmm1 + vpxor (%r8),%xmm1,%xmm1 + vaesenc 16(%r8),%xmm1,%xmm1 + vaesenc 32(%r8),%xmm1,%xmm1 + vaesenc 48(%r8),%xmm1,%xmm1 + vaesenc 64(%r8),%xmm1,%xmm1 + vaesenc 80(%r8),%xmm1,%xmm1 + vaesenc 96(%r8),%xmm1,%xmm1 + vaesenc 112(%r8),%xmm1,%xmm1 + vaesenc 128(%r8),%xmm1,%xmm1 + vaesenc 144(%r8),%xmm1,%xmm1 + vaesenclast 160(%r8),%xmm1,%xmm1 + vmovdqa %xmm1,(%rsp) + + cmpq $0x80,%rdx + jl .L_less_than_128_bytes_hEgxyDlCngwrfFe + vpbroadcastq %r10,%zmm25 + cmpq $0x100,%rdx + jge .L_start_by16_hEgxyDlCngwrfFe + cmpq $0x80,%rdx + jge .L_start_by8_hEgxyDlCngwrfFe + +.L_do_n_blocks_hEgxyDlCngwrfFe: + cmpq $0x0,%rdx + je .L_ret_hEgxyDlCngwrfFe + cmpq $0x70,%rdx + jge .L_remaining_num_blocks_is_7_hEgxyDlCngwrfFe + cmpq $0x60,%rdx + jge .L_remaining_num_blocks_is_6_hEgxyDlCngwrfFe + cmpq $0x50,%rdx + jge .L_remaining_num_blocks_is_5_hEgxyDlCngwrfFe + cmpq $0x40,%rdx + jge .L_remaining_num_blocks_is_4_hEgxyDlCngwrfFe + cmpq $0x30,%rdx + jge .L_remaining_num_blocks_is_3_hEgxyDlCngwrfFe + cmpq $0x20,%rdx + jge .L_remaining_num_blocks_is_2_hEgxyDlCngwrfFe + cmpq $0x10,%rdx + jge .L_remaining_num_blocks_is_1_hEgxyDlCngwrfFe + vmovdqa %xmm0,%xmm8 + vmovdqa %xmm9,%xmm0 + jmp .L_steal_cipher_hEgxyDlCngwrfFe + +.L_remaining_num_blocks_is_7_hEgxyDlCngwrfFe: + movq $0x0000ffffffffffff,%r8 + kmovq %r8,%k1 + vmovdqu8 (%rdi),%zmm1 + vmovdqu8 64(%rdi),%zmm2{%k1} + addq $0x70,%rdi + vbroadcasti32x4 (%rcx),%zmm0 + vpternlogq $0x96,%zmm0,%zmm9,%zmm1 + vpternlogq $0x96,%zmm0,%zmm10,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesenclast %zmm0,%zmm1,%zmm1 + vaesenclast %zmm0,%zmm2,%zmm2 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + vmovdqu8 %zmm1,(%rsi) + vmovdqu8 %zmm2,64(%rsi){%k1} + addq $0x70,%rsi + vextracti32x4 $0x2,%zmm2,%xmm8 + vextracti32x4 $0x3,%zmm10,%xmm0 + andq $0xf,%rdx + je .L_ret_hEgxyDlCngwrfFe + jmp .L_steal_cipher_hEgxyDlCngwrfFe + +.L_remaining_num_blocks_is_6_hEgxyDlCngwrfFe: + vmovdqu8 (%rdi),%zmm1 + vmovdqu8 64(%rdi),%ymm2 + addq $0x60,%rdi + vbroadcasti32x4 (%rcx),%zmm0 + vpternlogq $0x96,%zmm0,%zmm9,%zmm1 + vpternlogq $0x96,%zmm0,%zmm10,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesenclast %zmm0,%zmm1,%zmm1 + vaesenclast %zmm0,%zmm2,%zmm2 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + vmovdqu8 %zmm1,(%rsi) + vmovdqu8 %ymm2,64(%rsi) + addq $0x60,%rsi + vextracti32x4 $0x1,%zmm2,%xmm8 + vextracti32x4 $0x2,%zmm10,%xmm0 + andq $0xf,%rdx + je .L_ret_hEgxyDlCngwrfFe + jmp .L_steal_cipher_hEgxyDlCngwrfFe + +.L_remaining_num_blocks_is_5_hEgxyDlCngwrfFe: + vmovdqu8 (%rdi),%zmm1 + vmovdqu 64(%rdi),%xmm2 + addq $0x50,%rdi + vbroadcasti32x4 (%rcx),%zmm0 + vpternlogq $0x96,%zmm0,%zmm9,%zmm1 + vpternlogq $0x96,%zmm0,%zmm10,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesenclast %zmm0,%zmm1,%zmm1 + vaesenclast %zmm0,%zmm2,%zmm2 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + vmovdqu8 %zmm1,(%rsi) + vmovdqu %xmm2,64(%rsi) + addq $0x50,%rsi + vmovdqa %xmm2,%xmm8 + vextracti32x4 $0x1,%zmm10,%xmm0 + andq $0xf,%rdx + je .L_ret_hEgxyDlCngwrfFe + jmp .L_steal_cipher_hEgxyDlCngwrfFe + +.L_remaining_num_blocks_is_4_hEgxyDlCngwrfFe: + vmovdqu8 (%rdi),%zmm1 + addq $0x40,%rdi + vbroadcasti32x4 (%rcx),%zmm0 + vpternlogq $0x96,%zmm0,%zmm9,%zmm1 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 32(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 48(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 64(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 80(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 96(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 112(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 128(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 144(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 160(%rcx),%zmm0 + vaesenclast %zmm0,%zmm1,%zmm1 + vpxorq %zmm9,%zmm1,%zmm1 + vmovdqu8 %zmm1,(%rsi) + addq $0x40,%rsi + vextracti32x4 $0x3,%zmm1,%xmm8 + vmovdqa64 %xmm10,%xmm0 + andq $0xf,%rdx + je .L_ret_hEgxyDlCngwrfFe + jmp .L_steal_cipher_hEgxyDlCngwrfFe +.L_remaining_num_blocks_is_3_hEgxyDlCngwrfFe: + movq $-1,%r8 + shrq $0x10,%r8 + kmovq %r8,%k1 + vmovdqu8 (%rdi),%zmm1{%k1} + addq $0x30,%rdi + vbroadcasti32x4 (%rcx),%zmm0 + vpternlogq $0x96,%zmm0,%zmm9,%zmm1 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 32(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 48(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 64(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 80(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 96(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 112(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 128(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 144(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 160(%rcx),%zmm0 + vaesenclast %zmm0,%zmm1,%zmm1 + vpxorq %zmm9,%zmm1,%zmm1 + vmovdqu8 %zmm1,(%rsi){%k1} + addq $0x30,%rsi + vextracti32x4 $0x2,%zmm1,%xmm8 + vextracti32x4 $0x3,%zmm9,%xmm0 + andq $0xf,%rdx + je .L_ret_hEgxyDlCngwrfFe + jmp .L_steal_cipher_hEgxyDlCngwrfFe +.L_remaining_num_blocks_is_2_hEgxyDlCngwrfFe: + vmovdqu8 (%rdi),%ymm1 + addq $0x20,%rdi + vbroadcasti32x4 (%rcx),%ymm0 + vpternlogq $0x96,%ymm0,%ymm9,%ymm1 + vbroadcasti32x4 16(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 32(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 48(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 64(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 80(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 96(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 112(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 128(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 144(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 160(%rcx),%ymm0 + vaesenclast %ymm0,%ymm1,%ymm1 + vpxorq %ymm9,%ymm1,%ymm1 + vmovdqu %ymm1,(%rsi) + addq $0x20,%rsi + vextracti32x4 $0x1,%zmm1,%xmm8 + vextracti32x4 $0x2,%zmm9,%xmm0 + andq $0xf,%rdx + je .L_ret_hEgxyDlCngwrfFe + jmp .L_steal_cipher_hEgxyDlCngwrfFe +.L_remaining_num_blocks_is_1_hEgxyDlCngwrfFe: + vmovdqu (%rdi),%xmm1 + addq $0x10,%rdi + vpxor %xmm9,%xmm1,%xmm1 + vpxor (%rcx),%xmm1,%xmm1 + vaesenc 16(%rcx),%xmm1,%xmm1 + vaesenc 32(%rcx),%xmm1,%xmm1 + vaesenc 48(%rcx),%xmm1,%xmm1 + vaesenc 64(%rcx),%xmm1,%xmm1 + vaesenc 80(%rcx),%xmm1,%xmm1 + vaesenc 96(%rcx),%xmm1,%xmm1 + vaesenc 112(%rcx),%xmm1,%xmm1 + vaesenc 128(%rcx),%xmm1,%xmm1 + vaesenc 144(%rcx),%xmm1,%xmm1 + vaesenclast 160(%rcx),%xmm1,%xmm1 + vpxor %xmm9,%xmm1,%xmm1 + vmovdqu %xmm1,(%rsi) + addq $0x10,%rsi + vmovdqa %xmm1,%xmm8 + vextracti32x4 $0x1,%zmm9,%xmm0 + andq $0xf,%rdx + je .L_ret_hEgxyDlCngwrfFe + jmp .L_steal_cipher_hEgxyDlCngwrfFe + + +.L_start_by16_hEgxyDlCngwrfFe: + vbroadcasti32x4 (%rsp),%zmm0 + vbroadcasti32x4 shufb_15_7(%rip),%zmm8 + movq $0xaa,%r8 + kmovq %r8,%k2 + vpshufb %zmm8,%zmm0,%zmm1 + vpsllvq const_dq3210(%rip),%zmm0,%zmm4 + vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 + vpclmulqdq $0x0,%zmm25,%zmm2,%zmm3 + vpxorq %zmm2,%zmm4,%zmm4{%k2} + vpxord %zmm4,%zmm3,%zmm9 + vpsllvq const_dq7654(%rip),%zmm0,%zmm5 + vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 + vpclmulqdq $0x0,%zmm25,%zmm6,%zmm7 + vpxorq %zmm6,%zmm5,%zmm5{%k2} + vpxord %zmm5,%zmm7,%zmm10 + vpsrldq $0xf,%zmm9,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm9,%zmm11 + vpxord %zmm14,%zmm11,%zmm11 + vpsrldq $0xf,%zmm10,%zmm15 + vpclmulqdq $0x0,%zmm25,%zmm15,%zmm16 + vpslldq $0x1,%zmm10,%zmm12 + vpxord %zmm16,%zmm12,%zmm12 + +.L_main_loop_run_16_hEgxyDlCngwrfFe: + vmovdqu8 (%rdi),%zmm1 + vmovdqu8 64(%rdi),%zmm2 + vmovdqu8 128(%rdi),%zmm3 + vmovdqu8 192(%rdi),%zmm4 + addq $0x100,%rdi + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + vpxorq %zmm11,%zmm3,%zmm3 + vpxorq %zmm12,%zmm4,%zmm4 + vbroadcasti32x4 (%rcx),%zmm0 + vpxorq %zmm0,%zmm1,%zmm1 + vpxorq %zmm0,%zmm2,%zmm2 + vpxorq %zmm0,%zmm3,%zmm3 + vpxorq %zmm0,%zmm4,%zmm4 + vpsrldq $0xf,%zmm11,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm11,%zmm15 + vpxord %zmm14,%zmm15,%zmm15 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + vaesenc %zmm0,%zmm3,%zmm3 + vaesenc %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 32(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + vaesenc %zmm0,%zmm3,%zmm3 + vaesenc %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 48(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + vaesenc %zmm0,%zmm3,%zmm3 + vaesenc %zmm0,%zmm4,%zmm4 + vpsrldq $0xf,%zmm12,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm12,%zmm16 + vpxord %zmm14,%zmm16,%zmm16 + vbroadcasti32x4 64(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + vaesenc %zmm0,%zmm3,%zmm3 + vaesenc %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 80(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + vaesenc %zmm0,%zmm3,%zmm3 + vaesenc %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 96(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + vaesenc %zmm0,%zmm3,%zmm3 + vaesenc %zmm0,%zmm4,%zmm4 + vpsrldq $0xf,%zmm15,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm15,%zmm17 + vpxord %zmm14,%zmm17,%zmm17 + vbroadcasti32x4 112(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + vaesenc %zmm0,%zmm3,%zmm3 + vaesenc %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 128(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + vaesenc %zmm0,%zmm3,%zmm3 + vaesenc %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 144(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + vaesenc %zmm0,%zmm3,%zmm3 + vaesenc %zmm0,%zmm4,%zmm4 + vpsrldq $0xf,%zmm16,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm16,%zmm18 + vpxord %zmm14,%zmm18,%zmm18 + vbroadcasti32x4 160(%rcx),%zmm0 + vaesenclast %zmm0,%zmm1,%zmm1 + vaesenclast %zmm0,%zmm2,%zmm2 + vaesenclast %zmm0,%zmm3,%zmm3 + vaesenclast %zmm0,%zmm4,%zmm4 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + vpxorq %zmm11,%zmm3,%zmm3 + vpxorq %zmm12,%zmm4,%zmm4 + + vmovdqa32 %zmm15,%zmm9 + vmovdqa32 %zmm16,%zmm10 + vmovdqa32 %zmm17,%zmm11 + vmovdqa32 %zmm18,%zmm12 + vmovdqu8 %zmm1,(%rsi) + vmovdqu8 %zmm2,64(%rsi) + vmovdqu8 %zmm3,128(%rsi) + vmovdqu8 %zmm4,192(%rsi) + addq $0x100,%rsi + subq $0x100,%rdx + cmpq $0x100,%rdx + jae .L_main_loop_run_16_hEgxyDlCngwrfFe + cmpq $0x80,%rdx + jae .L_main_loop_run_8_hEgxyDlCngwrfFe + vextracti32x4 $0x3,%zmm4,%xmm0 + jmp .L_do_n_blocks_hEgxyDlCngwrfFe + +.L_start_by8_hEgxyDlCngwrfFe: + vbroadcasti32x4 (%rsp),%zmm0 + vbroadcasti32x4 shufb_15_7(%rip),%zmm8 + movq $0xaa,%r8 + kmovq %r8,%k2 + vpshufb %zmm8,%zmm0,%zmm1 + vpsllvq const_dq3210(%rip),%zmm0,%zmm4 + vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 + vpclmulqdq $0x0,%zmm25,%zmm2,%zmm3 + vpxorq %zmm2,%zmm4,%zmm4{%k2} + vpxord %zmm4,%zmm3,%zmm9 + vpsllvq const_dq7654(%rip),%zmm0,%zmm5 + vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 + vpclmulqdq $0x0,%zmm25,%zmm6,%zmm7 + vpxorq %zmm6,%zmm5,%zmm5{%k2} + vpxord %zmm5,%zmm7,%zmm10 + +.L_main_loop_run_8_hEgxyDlCngwrfFe: + vmovdqu8 (%rdi),%zmm1 + vmovdqu8 64(%rdi),%zmm2 + addq $0x80,%rdi + vbroadcasti32x4 (%rcx),%zmm0 + vpternlogq $0x96,%zmm0,%zmm9,%zmm1 + vpternlogq $0x96,%zmm0,%zmm10,%zmm2 + vpsrldq $0xf,%zmm9,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm9,%zmm15 + vpxord %zmm14,%zmm15,%zmm15 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + vpsrldq $0xf,%zmm10,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm10,%zmm16 + vpxord %zmm14,%zmm16,%zmm16 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesenclast %zmm0,%zmm1,%zmm1 + vaesenclast %zmm0,%zmm2,%zmm2 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + vmovdqa32 %zmm15,%zmm9 + vmovdqa32 %zmm16,%zmm10 + vmovdqu8 %zmm1,(%rsi) + vmovdqu8 %zmm2,64(%rsi) + addq $0x80,%rsi + subq $0x80,%rdx + cmpq $0x80,%rdx + jae .L_main_loop_run_8_hEgxyDlCngwrfFe + vextracti32x4 $0x3,%zmm2,%xmm0 + jmp .L_do_n_blocks_hEgxyDlCngwrfFe + +.L_steal_cipher_hEgxyDlCngwrfFe: + vmovdqa %xmm8,%xmm2 + leaq vpshufb_shf_table(%rip),%rax + vmovdqu (%rax,%rdx,1),%xmm10 + vpshufb %xmm10,%xmm8,%xmm8 + vmovdqu -16(%rdi,%rdx,1),%xmm3 + vmovdqu %xmm8,-16(%rsi,%rdx,1) + leaq vpshufb_shf_table(%rip),%rax + addq $16,%rax + subq %rdx,%rax + vmovdqu (%rax),%xmm10 + vpxor mask1(%rip),%xmm10,%xmm10 + vpshufb %xmm10,%xmm3,%xmm3 + vpblendvb %xmm10,%xmm2,%xmm3,%xmm3 + vpxor %xmm0,%xmm3,%xmm8 + vpxor (%rcx),%xmm8,%xmm8 + vaesenc 16(%rcx),%xmm8,%xmm8 + vaesenc 32(%rcx),%xmm8,%xmm8 + vaesenc 48(%rcx),%xmm8,%xmm8 + vaesenc 64(%rcx),%xmm8,%xmm8 + vaesenc 80(%rcx),%xmm8,%xmm8 + vaesenc 96(%rcx),%xmm8,%xmm8 + vaesenc 112(%rcx),%xmm8,%xmm8 + vaesenc 128(%rcx),%xmm8,%xmm8 + vaesenc 144(%rcx),%xmm8,%xmm8 + vaesenclast 160(%rcx),%xmm8,%xmm8 + vpxor %xmm0,%xmm8,%xmm8 + vmovdqu %xmm8,-16(%rsi) +.L_ret_hEgxyDlCngwrfFe: + movq 128(%rsp),%rbx + xorq %r8,%r8 + movq %r8,128(%rsp) + + vpxorq %zmm0,%zmm0,%zmm0 + movq %rbp,%rsp + popq %rbp + vzeroupper + .byte 0xf3,0xc3 + +.L_less_than_128_bytes_hEgxyDlCngwrfFe: + vpbroadcastq %r10,%zmm25 + cmpq $0x10,%rdx + jb .L_ret_hEgxyDlCngwrfFe + vbroadcasti32x4 (%rsp),%zmm0 + vbroadcasti32x4 shufb_15_7(%rip),%zmm8 + movl $0xaa,%r8d + kmovq %r8,%k2 + movq %rdx,%r8 + andq $0x70,%r8 + cmpq $0x60,%r8 + je .L_num_blocks_is_6_hEgxyDlCngwrfFe + cmpq $0x50,%r8 + je .L_num_blocks_is_5_hEgxyDlCngwrfFe + cmpq $0x40,%r8 + je .L_num_blocks_is_4_hEgxyDlCngwrfFe + cmpq $0x30,%r8 + je .L_num_blocks_is_3_hEgxyDlCngwrfFe + cmpq $0x20,%r8 + je .L_num_blocks_is_2_hEgxyDlCngwrfFe + cmpq $0x10,%r8 + je .L_num_blocks_is_1_hEgxyDlCngwrfFe + +.L_num_blocks_is_7_hEgxyDlCngwrfFe: + vpshufb %zmm8,%zmm0,%zmm1 + vpsllvq const_dq3210(%rip),%zmm0,%zmm4 + vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 + vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 + vpxorq %zmm2,%zmm4,%zmm4{%k2} + vpxord %zmm4,%zmm3,%zmm9 + vpsllvq const_dq7654(%rip),%zmm0,%zmm5 + vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 + vpclmulqdq $0x00,%zmm25,%zmm6,%zmm7 + vpxorq %zmm6,%zmm5,%zmm5{%k2} + vpxord %zmm5,%zmm7,%zmm10 + movq $0x0000ffffffffffff,%r8 + kmovq %r8,%k1 + vmovdqu8 0(%rdi),%zmm1 + vmovdqu8 64(%rdi),%zmm2{%k1} + + addq $0x70,%rdi + vbroadcasti32x4 (%rcx),%zmm0 + vpternlogq $0x96,%zmm0,%zmm9,%zmm1 + vpternlogq $0x96,%zmm0,%zmm10,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesenclast %zmm0,%zmm1,%zmm1 + vaesenclast %zmm0,%zmm2,%zmm2 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + vmovdqu8 %zmm1,0(%rsi) + vmovdqu8 %zmm2,64(%rsi){%k1} + addq $0x70,%rsi + vextracti32x4 $0x2,%zmm2,%xmm8 + vextracti32x4 $0x3,%zmm10,%xmm0 + andq $0xf,%rdx + je .L_ret_hEgxyDlCngwrfFe + jmp .L_steal_cipher_hEgxyDlCngwrfFe +.L_num_blocks_is_6_hEgxyDlCngwrfFe: + vpshufb %zmm8,%zmm0,%zmm1 + vpsllvq const_dq3210(%rip),%zmm0,%zmm4 + vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 + vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 + vpxorq %zmm2,%zmm4,%zmm4{%k2} + vpxord %zmm4,%zmm3,%zmm9 + vpsllvq const_dq7654(%rip),%zmm0,%zmm5 + vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 + vpclmulqdq $0x00,%zmm25,%zmm6,%zmm7 + vpxorq %zmm6,%zmm5,%zmm5{%k2} + vpxord %zmm5,%zmm7,%zmm10 + vmovdqu8 0(%rdi),%zmm1 + vmovdqu8 64(%rdi),%ymm2 + addq $96,%rdi + vbroadcasti32x4 (%rcx),%zmm0 + vpternlogq $0x96,%zmm0,%zmm9,%zmm1 + vpternlogq $0x96,%zmm0,%zmm10,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesenclast %zmm0,%zmm1,%zmm1 + vaesenclast %zmm0,%zmm2,%zmm2 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + vmovdqu8 %zmm1,0(%rsi) + vmovdqu8 %ymm2,64(%rsi) + addq $96,%rsi + + vextracti32x4 $0x1,%ymm2,%xmm8 + vextracti32x4 $0x2,%zmm10,%xmm0 + andq $0xf,%rdx + je .L_ret_hEgxyDlCngwrfFe + jmp .L_steal_cipher_hEgxyDlCngwrfFe +.L_num_blocks_is_5_hEgxyDlCngwrfFe: + vpshufb %zmm8,%zmm0,%zmm1 + vpsllvq const_dq3210(%rip),%zmm0,%zmm4 + vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 + vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 + vpxorq %zmm2,%zmm4,%zmm4{%k2} + vpxord %zmm4,%zmm3,%zmm9 + vpsllvq const_dq7654(%rip),%zmm0,%zmm5 + vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 + vpclmulqdq $0x00,%zmm25,%zmm6,%zmm7 + vpxorq %zmm6,%zmm5,%zmm5{%k2} + vpxord %zmm5,%zmm7,%zmm10 + vmovdqu8 0(%rdi),%zmm1 + vmovdqu8 64(%rdi),%xmm2 + addq $80,%rdi + vbroadcasti32x4 (%rcx),%zmm0 + vpternlogq $0x96,%zmm0,%zmm9,%zmm1 + vpternlogq $0x96,%zmm0,%zmm10,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesenclast %zmm0,%zmm1,%zmm1 + vaesenclast %zmm0,%zmm2,%zmm2 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + vmovdqu8 %zmm1,0(%rsi) + vmovdqu8 %xmm2,64(%rsi) + addq $80,%rsi + + vmovdqa %xmm2,%xmm8 + vextracti32x4 $0x1,%zmm10,%xmm0 + andq $0xf,%rdx + je .L_ret_hEgxyDlCngwrfFe + jmp .L_steal_cipher_hEgxyDlCngwrfFe +.L_num_blocks_is_4_hEgxyDlCngwrfFe: + vpshufb %zmm8,%zmm0,%zmm1 + vpsllvq const_dq3210(%rip),%zmm0,%zmm4 + vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 + vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 + vpxorq %zmm2,%zmm4,%zmm4{%k2} + vpxord %zmm4,%zmm3,%zmm9 + vpsllvq const_dq7654(%rip),%zmm0,%zmm5 + vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 + vpclmulqdq $0x00,%zmm25,%zmm6,%zmm7 + vpxorq %zmm6,%zmm5,%zmm5{%k2} + vpxord %zmm5,%zmm7,%zmm10 + vmovdqu8 0(%rdi),%zmm1 + addq $64,%rdi + vbroadcasti32x4 (%rcx),%zmm0 + vpternlogq $0x96,%zmm0,%zmm9,%zmm1 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 32(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 48(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 64(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 80(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 96(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 112(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 128(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 144(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 160(%rcx),%zmm0 + vaesenclast %zmm0,%zmm1,%zmm1 + vpxorq %zmm9,%zmm1,%zmm1 + vmovdqu8 %zmm1,0(%rsi) + addq $64,%rsi + vextracti32x4 $0x3,%zmm1,%xmm8 + vmovdqa %xmm10,%xmm0 + andq $0xf,%rdx + je .L_ret_hEgxyDlCngwrfFe + jmp .L_steal_cipher_hEgxyDlCngwrfFe +.L_num_blocks_is_3_hEgxyDlCngwrfFe: + vpshufb %zmm8,%zmm0,%zmm1 + vpsllvq const_dq3210(%rip),%zmm0,%zmm4 + vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 + vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 + vpxorq %zmm2,%zmm4,%zmm4{%k2} + vpxord %zmm4,%zmm3,%zmm9 + movq $0x0000ffffffffffff,%r8 + kmovq %r8,%k1 + vmovdqu8 0(%rdi),%zmm1{%k1} + addq $48,%rdi + vbroadcasti32x4 (%rcx),%zmm0 + vpternlogq $0x96,%zmm0,%zmm9,%zmm1 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 32(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 48(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 64(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 80(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 96(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 112(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 128(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 144(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 160(%rcx),%zmm0 + vaesenclast %zmm0,%zmm1,%zmm1 + vpxorq %zmm9,%zmm1,%zmm1 + vmovdqu8 %zmm1,0(%rsi){%k1} + addq $48,%rsi + vextracti32x4 $2,%zmm1,%xmm8 + vextracti32x4 $3,%zmm9,%xmm0 + andq $0xf,%rdx + je .L_ret_hEgxyDlCngwrfFe + jmp .L_steal_cipher_hEgxyDlCngwrfFe +.L_num_blocks_is_2_hEgxyDlCngwrfFe: + vpshufb %zmm8,%zmm0,%zmm1 + vpsllvq const_dq3210(%rip),%zmm0,%zmm4 + vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 + vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 + vpxorq %zmm2,%zmm4,%zmm4{%k2} + vpxord %zmm4,%zmm3,%zmm9 + + vmovdqu8 0(%rdi),%ymm1 + addq $32,%rdi + vbroadcasti32x4 (%rcx),%ymm0 + vpternlogq $0x96,%ymm0,%ymm9,%ymm1 + vbroadcasti32x4 16(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 32(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 48(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 64(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 80(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 96(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 112(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 128(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 144(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 160(%rcx),%ymm0 + vaesenclast %ymm0,%ymm1,%ymm1 + vpxorq %ymm9,%ymm1,%ymm1 + vmovdqu8 %ymm1,0(%rsi) + addq $32,%rsi + + vextracti32x4 $1,%ymm1,%xmm8 + vextracti32x4 $2,%zmm9,%xmm0 + andq $0xf,%rdx + je .L_ret_hEgxyDlCngwrfFe + jmp .L_steal_cipher_hEgxyDlCngwrfFe +.L_num_blocks_is_1_hEgxyDlCngwrfFe: + vpshufb %zmm8,%zmm0,%zmm1 + vpsllvq const_dq3210(%rip),%zmm0,%zmm4 + vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 + vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 + vpxorq %zmm2,%zmm4,%zmm4{%k2} + vpxord %zmm4,%zmm3,%zmm9 + + vmovdqu8 0(%rdi),%xmm1 + addq $16,%rdi + vbroadcasti32x4 (%rcx),%ymm0 + vpternlogq $0x96,%ymm0,%ymm9,%ymm1 + vbroadcasti32x4 16(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 32(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 48(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 64(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 80(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 96(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 112(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 128(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 144(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 160(%rcx),%ymm0 + vaesenclast %ymm0,%ymm1,%ymm1 + vpxorq %ymm9,%ymm1,%ymm1 + vmovdqu8 %xmm1,0(%rsi) + addq $16,%rsi + + vmovdqa %xmm1,%xmm8 + vextracti32x4 $1,%zmm9,%xmm0 + andq $0xf,%rdx + je .L_ret_hEgxyDlCngwrfFe + jmp .L_steal_cipher_hEgxyDlCngwrfFe +.cfi_endproc +.globl aesni_xts_128_decrypt_avx512 +.hidden aesni_xts_128_decrypt_avx512 +.type aesni_xts_128_decrypt_avx512,@function +.align 32 +aesni_xts_128_decrypt_avx512: +.cfi_startproc +.byte 243,15,30,250 + pushq %rbp + movq %rsp,%rbp + subq $136,%rsp + andq $0xffffffffffffffc0,%rsp + movq %rbx,128(%rsp) + movq $0x87,%r10 + vmovdqu (%r9),%xmm1 + vpxor (%r8),%xmm1,%xmm1 + vaesenc 16(%r8),%xmm1,%xmm1 + vaesenc 32(%r8),%xmm1,%xmm1 + vaesenc 48(%r8),%xmm1,%xmm1 + vaesenc 64(%r8),%xmm1,%xmm1 + vaesenc 80(%r8),%xmm1,%xmm1 + vaesenc 96(%r8),%xmm1,%xmm1 + vaesenc 112(%r8),%xmm1,%xmm1 + vaesenc 128(%r8),%xmm1,%xmm1 + vaesenc 144(%r8),%xmm1,%xmm1 + vaesenclast 160(%r8),%xmm1,%xmm1 + vmovdqa %xmm1,(%rsp) + + cmpq $0x80,%rdx + jb .L_less_than_128_bytes_amivrujEyduiFoi + vpbroadcastq %r10,%zmm25 + cmpq $0x100,%rdx + jge .L_start_by16_amivrujEyduiFoi + jmp .L_start_by8_amivrujEyduiFoi + +.L_do_n_blocks_amivrujEyduiFoi: + cmpq $0x0,%rdx + je .L_ret_amivrujEyduiFoi + cmpq $0x70,%rdx + jge .L_remaining_num_blocks_is_7_amivrujEyduiFoi + cmpq $0x60,%rdx + jge .L_remaining_num_blocks_is_6_amivrujEyduiFoi + cmpq $0x50,%rdx + jge .L_remaining_num_blocks_is_5_amivrujEyduiFoi + cmpq $0x40,%rdx + jge .L_remaining_num_blocks_is_4_amivrujEyduiFoi + cmpq $0x30,%rdx + jge .L_remaining_num_blocks_is_3_amivrujEyduiFoi + cmpq $0x20,%rdx + jge .L_remaining_num_blocks_is_2_amivrujEyduiFoi + cmpq $0x10,%rdx + jge .L_remaining_num_blocks_is_1_amivrujEyduiFoi + + + vmovdqu %xmm5,%xmm1 + + vpxor %xmm9,%xmm1,%xmm1 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 160(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vpxor %xmm9,%xmm1,%xmm1 + vmovdqu %xmm1,-16(%rsi) + vmovdqa %xmm1,%xmm8 + + + movq $0x1,%r8 + kmovq %r8,%k1 + vpsllq $0x3f,%xmm9,%xmm13 + vpsraq $0x3f,%xmm13,%xmm14 + vpandq %xmm25,%xmm14,%xmm5 + vpxorq %xmm5,%xmm9,%xmm9{%k1} + vpsrldq $0x8,%xmm9,%xmm10 +.byte 98, 211, 181, 8, 115, 194, 1 + vpslldq $0x8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm0,%xmm0 + jmp .L_steal_cipher_amivrujEyduiFoi + +.L_remaining_num_blocks_is_7_amivrujEyduiFoi: + movq $0xffffffffffffffff,%r8 + shrq $0x10,%r8 + kmovq %r8,%k1 + vmovdqu8 (%rdi),%zmm1 + vmovdqu8 64(%rdi),%zmm2{%k1} + addq $0x70,%rdi + andq $0xf,%rdx + je .L_done_7_remain_amivrujEyduiFoi + vextracti32x4 $0x2,%zmm10,%xmm12 + vextracti32x4 $0x3,%zmm10,%xmm13 + vinserti32x4 $0x2,%xmm13,%zmm10,%zmm10 + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vbroadcasti32x4 (%rcx),%zmm0 + vpxorq %zmm0,%zmm1,%zmm1 + vpxorq %zmm0,%zmm2,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesdeclast %zmm0,%zmm1,%zmm1 + vaesdeclast %zmm0,%zmm2,%zmm2 + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vmovdqa32 %zmm15,%zmm9 + vmovdqa32 %zmm16,%zmm10 + vmovdqu8 %zmm1,(%rsi) + vmovdqu8 %zmm2,64(%rsi){%k1} + addq $0x70,%rsi + vextracti32x4 $0x2,%zmm2,%xmm8 + vmovdqa %xmm12,%xmm0 + jmp .L_steal_cipher_amivrujEyduiFoi + +.L_done_7_remain_amivrujEyduiFoi: + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vbroadcasti32x4 (%rcx),%zmm0 + vpxorq %zmm0,%zmm1,%zmm1 + vpxorq %zmm0,%zmm2,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesdeclast %zmm0,%zmm1,%zmm1 + vaesdeclast %zmm0,%zmm2,%zmm2 + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vmovdqa32 %zmm15,%zmm9 + vmovdqa32 %zmm16,%zmm10 + vmovdqu8 %zmm1,(%rsi) + vmovdqu8 %zmm2,64(%rsi){%k1} + jmp .L_ret_amivrujEyduiFoi + +.L_remaining_num_blocks_is_6_amivrujEyduiFoi: + vmovdqu8 (%rdi),%zmm1 + vmovdqu8 64(%rdi),%ymm2 + addq $0x60,%rdi + andq $0xf,%rdx + je .L_done_6_remain_amivrujEyduiFoi + vextracti32x4 $0x1,%zmm10,%xmm12 + vextracti32x4 $0x2,%zmm10,%xmm13 + vinserti32x4 $0x1,%xmm13,%zmm10,%zmm10 + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vbroadcasti32x4 (%rcx),%zmm0 + vpxorq %zmm0,%zmm1,%zmm1 + vpxorq %zmm0,%zmm2,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesdeclast %zmm0,%zmm1,%zmm1 + vaesdeclast %zmm0,%zmm2,%zmm2 + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vmovdqa32 %zmm15,%zmm9 + vmovdqa32 %zmm16,%zmm10 + vmovdqu8 %zmm1,(%rsi) + vmovdqu8 %ymm2,64(%rsi) + addq $0x60,%rsi + vextracti32x4 $0x1,%zmm2,%xmm8 + vmovdqa %xmm12,%xmm0 + jmp .L_steal_cipher_amivrujEyduiFoi + +.L_done_6_remain_amivrujEyduiFoi: + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vbroadcasti32x4 (%rcx),%zmm0 + vpxorq %zmm0,%zmm1,%zmm1 + vpxorq %zmm0,%zmm2,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesdeclast %zmm0,%zmm1,%zmm1 + vaesdeclast %zmm0,%zmm2,%zmm2 + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vmovdqa32 %zmm15,%zmm9 + vmovdqa32 %zmm16,%zmm10 + vmovdqu8 %zmm1,(%rsi) + vmovdqu8 %ymm2,64(%rsi) + jmp .L_ret_amivrujEyduiFoi + +.L_remaining_num_blocks_is_5_amivrujEyduiFoi: + vmovdqu8 (%rdi),%zmm1 + vmovdqu 64(%rdi),%xmm2 + addq $0x50,%rdi + andq $0xf,%rdx + je .L_done_5_remain_amivrujEyduiFoi + vmovdqa %xmm10,%xmm12 + vextracti32x4 $0x1,%zmm10,%xmm10 + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vbroadcasti32x4 (%rcx),%zmm0 + vpxorq %zmm0,%zmm1,%zmm1 + vpxorq %zmm0,%zmm2,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesdeclast %zmm0,%zmm1,%zmm1 + vaesdeclast %zmm0,%zmm2,%zmm2 + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vmovdqa32 %zmm15,%zmm9 + vmovdqa32 %zmm16,%zmm10 + vmovdqu8 %zmm1,(%rsi) + vmovdqu %xmm2,64(%rsi) + addq $0x50,%rsi + vmovdqa %xmm2,%xmm8 + vmovdqa %xmm12,%xmm0 + jmp .L_steal_cipher_amivrujEyduiFoi + +.L_done_5_remain_amivrujEyduiFoi: + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vbroadcasti32x4 (%rcx),%zmm0 + vpxorq %zmm0,%zmm1,%zmm1 + vpxorq %zmm0,%zmm2,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesdeclast %zmm0,%zmm1,%zmm1 + vaesdeclast %zmm0,%zmm2,%zmm2 + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vmovdqa32 %zmm15,%zmm9 + vmovdqa32 %zmm16,%zmm10 + vmovdqu8 %zmm1,(%rsi) + vmovdqu8 %xmm2,64(%rsi) + jmp .L_ret_amivrujEyduiFoi + +.L_remaining_num_blocks_is_4_amivrujEyduiFoi: + vmovdqu8 (%rdi),%zmm1 + addq $0x40,%rdi + andq $0xf,%rdx + je .L_done_4_remain_amivrujEyduiFoi + vextracti32x4 $0x3,%zmm9,%xmm12 + vinserti32x4 $0x3,%xmm10,%zmm9,%zmm9 + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vbroadcasti32x4 (%rcx),%zmm0 + vpxorq %zmm0,%zmm1,%zmm1 + vpxorq %zmm0,%zmm2,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesdeclast %zmm0,%zmm1,%zmm1 + vaesdeclast %zmm0,%zmm2,%zmm2 + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vmovdqa32 %zmm15,%zmm9 + vmovdqa32 %zmm16,%zmm10 + vmovdqu8 %zmm1,(%rsi) + addq $0x40,%rsi + vextracti32x4 $0x3,%zmm1,%xmm8 + vmovdqa %xmm12,%xmm0 + jmp .L_steal_cipher_amivrujEyduiFoi + +.L_done_4_remain_amivrujEyduiFoi: + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vbroadcasti32x4 (%rcx),%zmm0 + vpxorq %zmm0,%zmm1,%zmm1 + vpxorq %zmm0,%zmm2,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesdeclast %zmm0,%zmm1,%zmm1 + vaesdeclast %zmm0,%zmm2,%zmm2 + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vmovdqa32 %zmm15,%zmm9 + vmovdqa32 %zmm16,%zmm10 + vmovdqu8 %zmm1,(%rsi) + jmp .L_ret_amivrujEyduiFoi + +.L_remaining_num_blocks_is_3_amivrujEyduiFoi: + vmovdqu (%rdi),%xmm1 + vmovdqu 16(%rdi),%xmm2 + vmovdqu 32(%rdi),%xmm3 + addq $0x30,%rdi + andq $0xf,%rdx + je .L_done_3_remain_amivrujEyduiFoi + vextracti32x4 $0x2,%zmm9,%xmm13 + vextracti32x4 $0x1,%zmm9,%xmm10 + vextracti32x4 $0x3,%zmm9,%xmm11 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 160(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vaesdeclast %xmm0,%xmm3,%xmm3 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + vmovdqu %xmm3,32(%rsi) + addq $0x30,%rsi + vmovdqa %xmm3,%xmm8 + vmovdqa %xmm13,%xmm0 + jmp .L_steal_cipher_amivrujEyduiFoi + +.L_done_3_remain_amivrujEyduiFoi: + vextracti32x4 $0x1,%zmm9,%xmm10 + vextracti32x4 $0x2,%zmm9,%xmm11 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 160(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vaesdeclast %xmm0,%xmm3,%xmm3 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + vmovdqu %xmm3,32(%rsi) + jmp .L_ret_amivrujEyduiFoi + +.L_remaining_num_blocks_is_2_amivrujEyduiFoi: + vmovdqu (%rdi),%xmm1 + vmovdqu 16(%rdi),%xmm2 + addq $0x20,%rdi + andq $0xf,%rdx + je .L_done_2_remain_amivrujEyduiFoi + vextracti32x4 $0x2,%zmm9,%xmm10 + vextracti32x4 $0x1,%zmm9,%xmm12 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 160(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + addq $0x20,%rsi + vmovdqa %xmm2,%xmm8 + vmovdqa %xmm12,%xmm0 + jmp .L_steal_cipher_amivrujEyduiFoi + +.L_done_2_remain_amivrujEyduiFoi: + vextracti32x4 $0x1,%zmm9,%xmm10 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 160(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + jmp .L_ret_amivrujEyduiFoi + +.L_remaining_num_blocks_is_1_amivrujEyduiFoi: + vmovdqu (%rdi),%xmm1 + addq $0x10,%rdi + andq $0xf,%rdx + je .L_done_1_remain_amivrujEyduiFoi + vextracti32x4 $0x1,%zmm9,%xmm11 + vpxor %xmm11,%xmm1,%xmm1 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 160(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vpxor %xmm11,%xmm1,%xmm1 + vmovdqu %xmm1,(%rsi) + addq $0x10,%rsi + vmovdqa %xmm1,%xmm8 + vmovdqa %xmm9,%xmm0 + jmp .L_steal_cipher_amivrujEyduiFoi + +.L_done_1_remain_amivrujEyduiFoi: + vpxor %xmm9,%xmm1,%xmm1 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 160(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vpxor %xmm9,%xmm1,%xmm1 + vmovdqu %xmm1,(%rsi) + jmp .L_ret_amivrujEyduiFoi + +.L_start_by16_amivrujEyduiFoi: + vbroadcasti32x4 (%rsp),%zmm0 + vbroadcasti32x4 shufb_15_7(%rip),%zmm8 + movq $0xaa,%r8 + kmovq %r8,%k2 + + + vpshufb %zmm8,%zmm0,%zmm1 + vpsllvq const_dq3210(%rip),%zmm0,%zmm4 + vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 + vpclmulqdq $0x0,%zmm25,%zmm2,%zmm3 + vpxorq %zmm2,%zmm4,%zmm4{%k2} + vpxord %zmm4,%zmm3,%zmm9 + + + vpsllvq const_dq7654(%rip),%zmm0,%zmm5 + vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 + vpclmulqdq $0x0,%zmm25,%zmm6,%zmm7 + vpxorq %zmm6,%zmm5,%zmm5{%k2} + vpxord %zmm5,%zmm7,%zmm10 + + + vpsrldq $0xf,%zmm9,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm9,%zmm11 + vpxord %zmm14,%zmm11,%zmm11 + + vpsrldq $0xf,%zmm10,%zmm15 + vpclmulqdq $0x0,%zmm25,%zmm15,%zmm16 + vpslldq $0x1,%zmm10,%zmm12 + vpxord %zmm16,%zmm12,%zmm12 + +.L_main_loop_run_16_amivrujEyduiFoi: + vmovdqu8 (%rdi),%zmm1 + vmovdqu8 64(%rdi),%zmm2 + vmovdqu8 128(%rdi),%zmm3 + vmovdqu8 192(%rdi),%zmm4 + vmovdqu8 240(%rdi),%xmm5 + addq $0x100,%rdi + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + vpxorq %zmm11,%zmm3,%zmm3 + vpxorq %zmm12,%zmm4,%zmm4 + vbroadcasti32x4 (%rcx),%zmm0 + vpxorq %zmm0,%zmm1,%zmm1 + vpxorq %zmm0,%zmm2,%zmm2 + vpxorq %zmm0,%zmm3,%zmm3 + vpxorq %zmm0,%zmm4,%zmm4 + vpsrldq $0xf,%zmm11,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm11,%zmm15 + vpxord %zmm14,%zmm15,%zmm15 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + vaesdec %zmm0,%zmm3,%zmm3 + vaesdec %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 32(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + vaesdec %zmm0,%zmm3,%zmm3 + vaesdec %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 48(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + vaesdec %zmm0,%zmm3,%zmm3 + vaesdec %zmm0,%zmm4,%zmm4 + vpsrldq $0xf,%zmm12,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm12,%zmm16 + vpxord %zmm14,%zmm16,%zmm16 + vbroadcasti32x4 64(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + vaesdec %zmm0,%zmm3,%zmm3 + vaesdec %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 80(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + vaesdec %zmm0,%zmm3,%zmm3 + vaesdec %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 96(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + vaesdec %zmm0,%zmm3,%zmm3 + vaesdec %zmm0,%zmm4,%zmm4 + vpsrldq $0xf,%zmm15,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm15,%zmm17 + vpxord %zmm14,%zmm17,%zmm17 + vbroadcasti32x4 112(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + vaesdec %zmm0,%zmm3,%zmm3 + vaesdec %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 128(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + vaesdec %zmm0,%zmm3,%zmm3 + vaesdec %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 144(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + vaesdec %zmm0,%zmm3,%zmm3 + vaesdec %zmm0,%zmm4,%zmm4 + vpsrldq $0xf,%zmm16,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm16,%zmm18 + vpxord %zmm14,%zmm18,%zmm18 + vbroadcasti32x4 160(%rcx),%zmm0 + vaesdeclast %zmm0,%zmm1,%zmm1 + vaesdeclast %zmm0,%zmm2,%zmm2 + vaesdeclast %zmm0,%zmm3,%zmm3 + vaesdeclast %zmm0,%zmm4,%zmm4 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + vpxorq %zmm11,%zmm3,%zmm3 + vpxorq %zmm12,%zmm4,%zmm4 + + vmovdqa32 %zmm15,%zmm9 + vmovdqa32 %zmm16,%zmm10 + vmovdqa32 %zmm17,%zmm11 + vmovdqa32 %zmm18,%zmm12 + vmovdqu8 %zmm1,(%rsi) + vmovdqu8 %zmm2,64(%rsi) + vmovdqu8 %zmm3,128(%rsi) + vmovdqu8 %zmm4,192(%rsi) + addq $0x100,%rsi + subq $0x100,%rdx + cmpq $0x100,%rdx + jge .L_main_loop_run_16_amivrujEyduiFoi + + cmpq $0x80,%rdx + jge .L_main_loop_run_8_amivrujEyduiFoi + jmp .L_do_n_blocks_amivrujEyduiFoi + +.L_start_by8_amivrujEyduiFoi: + + vbroadcasti32x4 (%rsp),%zmm0 + vbroadcasti32x4 shufb_15_7(%rip),%zmm8 + movq $0xaa,%r8 + kmovq %r8,%k2 + + + vpshufb %zmm8,%zmm0,%zmm1 + vpsllvq const_dq3210(%rip),%zmm0,%zmm4 + vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 + vpclmulqdq $0x0,%zmm25,%zmm2,%zmm3 + vpxorq %zmm2,%zmm4,%zmm4{%k2} + vpxord %zmm4,%zmm3,%zmm9 + + + vpsllvq const_dq7654(%rip),%zmm0,%zmm5 + vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 + vpclmulqdq $0x0,%zmm25,%zmm6,%zmm7 + vpxorq %zmm6,%zmm5,%zmm5{%k2} + vpxord %zmm5,%zmm7,%zmm10 + +.L_main_loop_run_8_amivrujEyduiFoi: + vmovdqu8 (%rdi),%zmm1 + vmovdqu8 64(%rdi),%zmm2 + vmovdqu8 112(%rdi),%xmm5 + addq $0x80,%rdi + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vbroadcasti32x4 (%rcx),%zmm0 + vpxorq %zmm0,%zmm1,%zmm1 + vpxorq %zmm0,%zmm2,%zmm2 + vpsrldq $0xf,%zmm9,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm9,%zmm15 + vpxord %zmm14,%zmm15,%zmm15 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + vpsrldq $0xf,%zmm10,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm10,%zmm16 + vpxord %zmm14,%zmm16,%zmm16 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesdeclast %zmm0,%zmm1,%zmm1 + vaesdeclast %zmm0,%zmm2,%zmm2 + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vmovdqa32 %zmm15,%zmm9 + vmovdqa32 %zmm16,%zmm10 + vmovdqu8 %zmm1,(%rsi) + vmovdqu8 %zmm2,64(%rsi) + addq $0x80,%rsi + subq $0x80,%rdx + cmpq $0x80,%rdx + jge .L_main_loop_run_8_amivrujEyduiFoi + jmp .L_do_n_blocks_amivrujEyduiFoi + +.L_steal_cipher_amivrujEyduiFoi: + + vmovdqa %xmm8,%xmm2 + + + leaq vpshufb_shf_table(%rip),%rax + vmovdqu (%rax,%rdx,1),%xmm10 + vpshufb %xmm10,%xmm8,%xmm8 + + + vmovdqu -16(%rdi,%rdx,1),%xmm3 + vmovdqu %xmm8,-16(%rsi,%rdx,1) + + + leaq vpshufb_shf_table(%rip),%rax + addq $16,%rax + subq %rdx,%rax + vmovdqu (%rax),%xmm10 + vpxor mask1(%rip),%xmm10,%xmm10 + vpshufb %xmm10,%xmm3,%xmm3 + + vpblendvb %xmm10,%xmm2,%xmm3,%xmm3 + + + vpxor %xmm0,%xmm3,%xmm8 + + + vpxor (%rcx),%xmm8,%xmm8 + vaesdec 16(%rcx),%xmm8,%xmm8 + vaesdec 32(%rcx),%xmm8,%xmm8 + vaesdec 48(%rcx),%xmm8,%xmm8 + vaesdec 64(%rcx),%xmm8,%xmm8 + vaesdec 80(%rcx),%xmm8,%xmm8 + vaesdec 96(%rcx),%xmm8,%xmm8 + vaesdec 112(%rcx),%xmm8,%xmm8 + vaesdec 128(%rcx),%xmm8,%xmm8 + vaesdec 144(%rcx),%xmm8,%xmm8 + vaesdeclast 160(%rcx),%xmm8,%xmm8 + + vpxor %xmm0,%xmm8,%xmm8 + +.L_done_amivrujEyduiFoi: + + vmovdqu %xmm8,-16(%rsi) +.L_ret_amivrujEyduiFoi: + movq 128(%rsp),%rbx + xorq %r8,%r8 + movq %r8,128(%rsp) + + vpxorq %zmm0,%zmm0,%zmm0 + movq %rbp,%rsp + popq %rbp + vzeroupper + .byte 0xf3,0xc3 + +.L_less_than_128_bytes_amivrujEyduiFoi: + cmpq $0x10,%rdx + jb .L_ret_amivrujEyduiFoi + + movq %rdx,%r8 + andq $0x70,%r8 + cmpq $0x60,%r8 + je .L_num_blocks_is_6_amivrujEyduiFoi + cmpq $0x50,%r8 + je .L_num_blocks_is_5_amivrujEyduiFoi + cmpq $0x40,%r8 + je .L_num_blocks_is_4_amivrujEyduiFoi + cmpq $0x30,%r8 + je .L_num_blocks_is_3_amivrujEyduiFoi + cmpq $0x20,%r8 + je .L_num_blocks_is_2_amivrujEyduiFoi + cmpq $0x10,%r8 + je .L_num_blocks_is_1_amivrujEyduiFoi + +.L_num_blocks_is_7_amivrujEyduiFoi: + vmovdqa 0(%rsp),%xmm9 + movq 0(%rsp),%rax + movq 8(%rsp),%rbx + vmovdqu 0(%rdi),%xmm1 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,16(%rsp) + movq %rbx,16 + 8(%rsp) + vmovdqa 16(%rsp),%xmm10 + vmovdqu 16(%rdi),%xmm2 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,32(%rsp) + movq %rbx,32 + 8(%rsp) + vmovdqa 32(%rsp),%xmm11 + vmovdqu 32(%rdi),%xmm3 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,48(%rsp) + movq %rbx,48 + 8(%rsp) + vmovdqa 48(%rsp),%xmm12 + vmovdqu 48(%rdi),%xmm4 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,64(%rsp) + movq %rbx,64 + 8(%rsp) + vmovdqa 64(%rsp),%xmm13 + vmovdqu 64(%rdi),%xmm5 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,80(%rsp) + movq %rbx,80 + 8(%rsp) + vmovdqa 80(%rsp),%xmm14 + vmovdqu 80(%rdi),%xmm6 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,96(%rsp) + movq %rbx,96 + 8(%rsp) + vmovdqa 96(%rsp),%xmm15 + vmovdqu 96(%rdi),%xmm7 + addq $0x70,%rdi + andq $0xf,%rdx + je .L_done_7_amivrujEyduiFoi + +.L_steal_cipher_7_amivrujEyduiFoi: + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,16(%rsp) + movq %rbx,24(%rsp) + vmovdqa64 %xmm15,%xmm16 + vmovdqa 16(%rsp),%xmm15 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vpxor %xmm13,%xmm5,%xmm5 + vpxor %xmm14,%xmm6,%xmm6 + vpxor %xmm15,%xmm7,%xmm7 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vpxor %xmm0,%xmm3,%xmm3 + vpxor %xmm0,%xmm4,%xmm4 + vpxor %xmm0,%xmm5,%xmm5 + vpxor %xmm0,%xmm6,%xmm6 + vpxor %xmm0,%xmm7,%xmm7 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 160(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vaesdeclast %xmm0,%xmm3,%xmm3 + vaesdeclast %xmm0,%xmm4,%xmm4 + vaesdeclast %xmm0,%xmm5,%xmm5 + vaesdeclast %xmm0,%xmm6,%xmm6 + vaesdeclast %xmm0,%xmm7,%xmm7 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vpxor %xmm13,%xmm5,%xmm5 + vpxor %xmm14,%xmm6,%xmm6 + vpxor %xmm15,%xmm7,%xmm7 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + vmovdqu %xmm3,32(%rsi) + vmovdqu %xmm4,48(%rsi) + vmovdqu %xmm5,64(%rsi) + vmovdqu %xmm6,80(%rsi) + addq $0x70,%rsi + vmovdqa64 %xmm16,%xmm0 + vmovdqa %xmm7,%xmm8 + jmp .L_steal_cipher_amivrujEyduiFoi + +.L_done_7_amivrujEyduiFoi: + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vpxor %xmm13,%xmm5,%xmm5 + vpxor %xmm14,%xmm6,%xmm6 + vpxor %xmm15,%xmm7,%xmm7 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vpxor %xmm0,%xmm3,%xmm3 + vpxor %xmm0,%xmm4,%xmm4 + vpxor %xmm0,%xmm5,%xmm5 + vpxor %xmm0,%xmm6,%xmm6 + vpxor %xmm0,%xmm7,%xmm7 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 160(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vaesdeclast %xmm0,%xmm3,%xmm3 + vaesdeclast %xmm0,%xmm4,%xmm4 + vaesdeclast %xmm0,%xmm5,%xmm5 + vaesdeclast %xmm0,%xmm6,%xmm6 + vaesdeclast %xmm0,%xmm7,%xmm7 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vpxor %xmm13,%xmm5,%xmm5 + vpxor %xmm14,%xmm6,%xmm6 + vpxor %xmm15,%xmm7,%xmm7 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + vmovdqu %xmm3,32(%rsi) + vmovdqu %xmm4,48(%rsi) + vmovdqu %xmm5,64(%rsi) + vmovdqu %xmm6,80(%rsi) + addq $0x70,%rsi + vmovdqa %xmm7,%xmm8 + jmp .L_done_amivrujEyduiFoi + +.L_num_blocks_is_6_amivrujEyduiFoi: + vmovdqa 0(%rsp),%xmm9 + movq 0(%rsp),%rax + movq 8(%rsp),%rbx + vmovdqu 0(%rdi),%xmm1 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,16(%rsp) + movq %rbx,16 + 8(%rsp) + vmovdqa 16(%rsp),%xmm10 + vmovdqu 16(%rdi),%xmm2 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,32(%rsp) + movq %rbx,32 + 8(%rsp) + vmovdqa 32(%rsp),%xmm11 + vmovdqu 32(%rdi),%xmm3 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,48(%rsp) + movq %rbx,48 + 8(%rsp) + vmovdqa 48(%rsp),%xmm12 + vmovdqu 48(%rdi),%xmm4 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,64(%rsp) + movq %rbx,64 + 8(%rsp) + vmovdqa 64(%rsp),%xmm13 + vmovdqu 64(%rdi),%xmm5 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,80(%rsp) + movq %rbx,80 + 8(%rsp) + vmovdqa 80(%rsp),%xmm14 + vmovdqu 80(%rdi),%xmm6 + addq $0x60,%rdi + andq $0xf,%rdx + je .L_done_6_amivrujEyduiFoi + +.L_steal_cipher_6_amivrujEyduiFoi: + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,16(%rsp) + movq %rbx,24(%rsp) + vmovdqa64 %xmm14,%xmm15 + vmovdqa 16(%rsp),%xmm14 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vpxor %xmm13,%xmm5,%xmm5 + vpxor %xmm14,%xmm6,%xmm6 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vpxor %xmm0,%xmm3,%xmm3 + vpxor %xmm0,%xmm4,%xmm4 + vpxor %xmm0,%xmm5,%xmm5 + vpxor %xmm0,%xmm6,%xmm6 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 160(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vaesdeclast %xmm0,%xmm3,%xmm3 + vaesdeclast %xmm0,%xmm4,%xmm4 + vaesdeclast %xmm0,%xmm5,%xmm5 + vaesdeclast %xmm0,%xmm6,%xmm6 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vpxor %xmm13,%xmm5,%xmm5 + vpxor %xmm14,%xmm6,%xmm6 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + vmovdqu %xmm3,32(%rsi) + vmovdqu %xmm4,48(%rsi) + vmovdqu %xmm5,64(%rsi) + addq $0x60,%rsi + vmovdqa %xmm15,%xmm0 + vmovdqa %xmm6,%xmm8 + jmp .L_steal_cipher_amivrujEyduiFoi + +.L_done_6_amivrujEyduiFoi: + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vpxor %xmm13,%xmm5,%xmm5 + vpxor %xmm14,%xmm6,%xmm6 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vpxor %xmm0,%xmm3,%xmm3 + vpxor %xmm0,%xmm4,%xmm4 + vpxor %xmm0,%xmm5,%xmm5 + vpxor %xmm0,%xmm6,%xmm6 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 160(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vaesdeclast %xmm0,%xmm3,%xmm3 + vaesdeclast %xmm0,%xmm4,%xmm4 + vaesdeclast %xmm0,%xmm5,%xmm5 + vaesdeclast %xmm0,%xmm6,%xmm6 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vpxor %xmm13,%xmm5,%xmm5 + vpxor %xmm14,%xmm6,%xmm6 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + vmovdqu %xmm3,32(%rsi) + vmovdqu %xmm4,48(%rsi) + vmovdqu %xmm5,64(%rsi) + addq $0x60,%rsi + vmovdqa %xmm6,%xmm8 + jmp .L_done_amivrujEyduiFoi + +.L_num_blocks_is_5_amivrujEyduiFoi: + vmovdqa 0(%rsp),%xmm9 + movq 0(%rsp),%rax + movq 8(%rsp),%rbx + vmovdqu 0(%rdi),%xmm1 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,16(%rsp) + movq %rbx,16 + 8(%rsp) + vmovdqa 16(%rsp),%xmm10 + vmovdqu 16(%rdi),%xmm2 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,32(%rsp) + movq %rbx,32 + 8(%rsp) + vmovdqa 32(%rsp),%xmm11 + vmovdqu 32(%rdi),%xmm3 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,48(%rsp) + movq %rbx,48 + 8(%rsp) + vmovdqa 48(%rsp),%xmm12 + vmovdqu 48(%rdi),%xmm4 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,64(%rsp) + movq %rbx,64 + 8(%rsp) + vmovdqa 64(%rsp),%xmm13 + vmovdqu 64(%rdi),%xmm5 + addq $0x50,%rdi + andq $0xf,%rdx + je .L_done_5_amivrujEyduiFoi + +.L_steal_cipher_5_amivrujEyduiFoi: + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,16(%rsp) + movq %rbx,24(%rsp) + vmovdqa64 %xmm13,%xmm14 + vmovdqa 16(%rsp),%xmm13 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vpxor %xmm13,%xmm5,%xmm5 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vpxor %xmm0,%xmm3,%xmm3 + vpxor %xmm0,%xmm4,%xmm4 + vpxor %xmm0,%xmm5,%xmm5 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 160(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vaesdeclast %xmm0,%xmm3,%xmm3 + vaesdeclast %xmm0,%xmm4,%xmm4 + vaesdeclast %xmm0,%xmm5,%xmm5 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vpxor %xmm13,%xmm5,%xmm5 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + vmovdqu %xmm3,32(%rsi) + vmovdqu %xmm4,48(%rsi) + addq $0x50,%rsi + vmovdqa %xmm14,%xmm0 + vmovdqa %xmm5,%xmm8 + jmp .L_steal_cipher_amivrujEyduiFoi + +.L_done_5_amivrujEyduiFoi: + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vpxor %xmm13,%xmm5,%xmm5 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vpxor %xmm0,%xmm3,%xmm3 + vpxor %xmm0,%xmm4,%xmm4 + vpxor %xmm0,%xmm5,%xmm5 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 160(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vaesdeclast %xmm0,%xmm3,%xmm3 + vaesdeclast %xmm0,%xmm4,%xmm4 + vaesdeclast %xmm0,%xmm5,%xmm5 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vpxor %xmm13,%xmm5,%xmm5 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + vmovdqu %xmm3,32(%rsi) + vmovdqu %xmm4,48(%rsi) + addq $0x50,%rsi + vmovdqa %xmm5,%xmm8 + jmp .L_done_amivrujEyduiFoi + +.L_num_blocks_is_4_amivrujEyduiFoi: + vmovdqa 0(%rsp),%xmm9 + movq 0(%rsp),%rax + movq 8(%rsp),%rbx + vmovdqu 0(%rdi),%xmm1 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,16(%rsp) + movq %rbx,16 + 8(%rsp) + vmovdqa 16(%rsp),%xmm10 + vmovdqu 16(%rdi),%xmm2 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,32(%rsp) + movq %rbx,32 + 8(%rsp) + vmovdqa 32(%rsp),%xmm11 + vmovdqu 32(%rdi),%xmm3 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,48(%rsp) + movq %rbx,48 + 8(%rsp) + vmovdqa 48(%rsp),%xmm12 + vmovdqu 48(%rdi),%xmm4 + addq $0x40,%rdi + andq $0xf,%rdx + je .L_done_4_amivrujEyduiFoi + +.L_steal_cipher_4_amivrujEyduiFoi: + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,16(%rsp) + movq %rbx,24(%rsp) + vmovdqa64 %xmm12,%xmm13 + vmovdqa 16(%rsp),%xmm12 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vpxor %xmm0,%xmm3,%xmm3 + vpxor %xmm0,%xmm4,%xmm4 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 160(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vaesdeclast %xmm0,%xmm3,%xmm3 + vaesdeclast %xmm0,%xmm4,%xmm4 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + vmovdqu %xmm3,32(%rsi) + addq $0x40,%rsi + vmovdqa %xmm13,%xmm0 + vmovdqa %xmm4,%xmm8 + jmp .L_steal_cipher_amivrujEyduiFoi + +.L_done_4_amivrujEyduiFoi: + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vpxor %xmm0,%xmm3,%xmm3 + vpxor %xmm0,%xmm4,%xmm4 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 160(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vaesdeclast %xmm0,%xmm3,%xmm3 + vaesdeclast %xmm0,%xmm4,%xmm4 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + vmovdqu %xmm3,32(%rsi) + addq $0x40,%rsi + vmovdqa %xmm4,%xmm8 + jmp .L_done_amivrujEyduiFoi + +.L_num_blocks_is_3_amivrujEyduiFoi: + vmovdqa 0(%rsp),%xmm9 + movq 0(%rsp),%rax + movq 8(%rsp),%rbx + vmovdqu 0(%rdi),%xmm1 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,16(%rsp) + movq %rbx,16 + 8(%rsp) + vmovdqa 16(%rsp),%xmm10 + vmovdqu 16(%rdi),%xmm2 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,32(%rsp) + movq %rbx,32 + 8(%rsp) + vmovdqa 32(%rsp),%xmm11 + vmovdqu 32(%rdi),%xmm3 + addq $0x30,%rdi + andq $0xf,%rdx + je .L_done_3_amivrujEyduiFoi + +.L_steal_cipher_3_amivrujEyduiFoi: + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,16(%rsp) + movq %rbx,24(%rsp) + vmovdqa64 %xmm11,%xmm12 + vmovdqa 16(%rsp),%xmm11 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 160(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vaesdeclast %xmm0,%xmm3,%xmm3 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + addq $0x30,%rsi + vmovdqa %xmm12,%xmm0 + vmovdqa %xmm3,%xmm8 + jmp .L_steal_cipher_amivrujEyduiFoi + +.L_done_3_amivrujEyduiFoi: + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 160(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vaesdeclast %xmm0,%xmm3,%xmm3 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + addq $0x30,%rsi + vmovdqa %xmm3,%xmm8 + jmp .L_done_amivrujEyduiFoi + +.L_num_blocks_is_2_amivrujEyduiFoi: + vmovdqa 0(%rsp),%xmm9 + movq 0(%rsp),%rax + movq 8(%rsp),%rbx + vmovdqu 0(%rdi),%xmm1 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,16(%rsp) + movq %rbx,16 + 8(%rsp) + vmovdqa 16(%rsp),%xmm10 + vmovdqu 16(%rdi),%xmm2 + addq $0x20,%rdi + andq $0xf,%rdx + je .L_done_2_amivrujEyduiFoi + +.L_steal_cipher_2_amivrujEyduiFoi: + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,16(%rsp) + movq %rbx,24(%rsp) + vmovdqa64 %xmm10,%xmm11 + vmovdqa 16(%rsp),%xmm10 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 160(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vmovdqu %xmm1,(%rsi) + addq $0x20,%rsi + vmovdqa %xmm11,%xmm0 + vmovdqa %xmm2,%xmm8 + jmp .L_steal_cipher_amivrujEyduiFoi + +.L_done_2_amivrujEyduiFoi: + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 160(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vmovdqu %xmm1,(%rsi) + addq $0x20,%rsi + vmovdqa %xmm2,%xmm8 + jmp .L_done_amivrujEyduiFoi + +.L_num_blocks_is_1_amivrujEyduiFoi: + vmovdqa 0(%rsp),%xmm9 + movq 0(%rsp),%rax + movq 8(%rsp),%rbx + vmovdqu 0(%rdi),%xmm1 + addq $0x10,%rdi + andq $0xf,%rdx + je .L_done_1_amivrujEyduiFoi + +.L_steal_cipher_1_amivrujEyduiFoi: + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,16(%rsp) + movq %rbx,24(%rsp) + vmovdqa64 %xmm9,%xmm10 + vmovdqa 16(%rsp),%xmm9 + vpxor %xmm9,%xmm1,%xmm1 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 160(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vpxor %xmm9,%xmm1,%xmm1 + addq $0x10,%rsi + vmovdqa %xmm10,%xmm0 + vmovdqa %xmm1,%xmm8 + jmp .L_steal_cipher_amivrujEyduiFoi + +.L_done_1_amivrujEyduiFoi: + vpxor %xmm9,%xmm1,%xmm1 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 160(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vpxor %xmm9,%xmm1,%xmm1 + addq $0x10,%rsi + vmovdqa %xmm1,%xmm8 + jmp .L_done_amivrujEyduiFoi +.cfi_endproc +.globl aesni_xts_256_encrypt_avx512 +.hidden aesni_xts_256_encrypt_avx512 +.type aesni_xts_256_encrypt_avx512,@function +.align 32 +aesni_xts_256_encrypt_avx512: +.cfi_startproc +.byte 243,15,30,250 + pushq %rbp + movq %rsp,%rbp + subq $136,%rsp + andq $0xffffffffffffffc0,%rsp + movq %rbx,128(%rsp) + movq $0x87,%r10 + vmovdqu (%r9),%xmm1 + vpxor (%r8),%xmm1,%xmm1 + vaesenc 16(%r8),%xmm1,%xmm1 + vaesenc 32(%r8),%xmm1,%xmm1 + vaesenc 48(%r8),%xmm1,%xmm1 + vaesenc 64(%r8),%xmm1,%xmm1 + vaesenc 80(%r8),%xmm1,%xmm1 + vaesenc 96(%r8),%xmm1,%xmm1 + vaesenc 112(%r8),%xmm1,%xmm1 + vaesenc 128(%r8),%xmm1,%xmm1 + vaesenc 144(%r8),%xmm1,%xmm1 + vaesenc 160(%r8),%xmm1,%xmm1 + vaesenc 176(%r8),%xmm1,%xmm1 + vaesenc 192(%r8),%xmm1,%xmm1 + vaesenc 208(%r8),%xmm1,%xmm1 + vaesenclast 224(%r8),%xmm1,%xmm1 + vmovdqa %xmm1,(%rsp) + + cmpq $0x80,%rdx + jl .L_less_than_128_bytes_wcpqaDvsGlbjGoe + vpbroadcastq %r10,%zmm25 + cmpq $0x100,%rdx + jge .L_start_by16_wcpqaDvsGlbjGoe + cmpq $0x80,%rdx + jge .L_start_by8_wcpqaDvsGlbjGoe + +.L_do_n_blocks_wcpqaDvsGlbjGoe: + cmpq $0x0,%rdx + je .L_ret_wcpqaDvsGlbjGoe + cmpq $0x70,%rdx + jge .L_remaining_num_blocks_is_7_wcpqaDvsGlbjGoe + cmpq $0x60,%rdx + jge .L_remaining_num_blocks_is_6_wcpqaDvsGlbjGoe + cmpq $0x50,%rdx + jge .L_remaining_num_blocks_is_5_wcpqaDvsGlbjGoe + cmpq $0x40,%rdx + jge .L_remaining_num_blocks_is_4_wcpqaDvsGlbjGoe + cmpq $0x30,%rdx + jge .L_remaining_num_blocks_is_3_wcpqaDvsGlbjGoe + cmpq $0x20,%rdx + jge .L_remaining_num_blocks_is_2_wcpqaDvsGlbjGoe + cmpq $0x10,%rdx + jge .L_remaining_num_blocks_is_1_wcpqaDvsGlbjGoe + vmovdqa %xmm0,%xmm8 + vmovdqa %xmm9,%xmm0 + jmp .L_steal_cipher_wcpqaDvsGlbjGoe + +.L_remaining_num_blocks_is_7_wcpqaDvsGlbjGoe: + movq $0x0000ffffffffffff,%r8 + kmovq %r8,%k1 + vmovdqu8 (%rdi),%zmm1 + vmovdqu8 64(%rdi),%zmm2{%k1} + addq $0x70,%rdi + vbroadcasti32x4 (%rcx),%zmm0 + vpternlogq $0x96,%zmm0,%zmm9,%zmm1 + vpternlogq $0x96,%zmm0,%zmm10,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 176(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 192(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 208(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 224(%rcx),%zmm0 + vaesenclast %zmm0,%zmm1,%zmm1 + vaesenclast %zmm0,%zmm2,%zmm2 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + vmovdqu8 %zmm1,(%rsi) + vmovdqu8 %zmm2,64(%rsi){%k1} + addq $0x70,%rsi + vextracti32x4 $0x2,%zmm2,%xmm8 + vextracti32x4 $0x3,%zmm10,%xmm0 + andq $0xf,%rdx + je .L_ret_wcpqaDvsGlbjGoe + jmp .L_steal_cipher_wcpqaDvsGlbjGoe + +.L_remaining_num_blocks_is_6_wcpqaDvsGlbjGoe: + vmovdqu8 (%rdi),%zmm1 + vmovdqu8 64(%rdi),%ymm2 + addq $0x60,%rdi + vbroadcasti32x4 (%rcx),%zmm0 + vpternlogq $0x96,%zmm0,%zmm9,%zmm1 + vpternlogq $0x96,%zmm0,%zmm10,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 176(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 192(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 208(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 224(%rcx),%zmm0 + vaesenclast %zmm0,%zmm1,%zmm1 + vaesenclast %zmm0,%zmm2,%zmm2 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + vmovdqu8 %zmm1,(%rsi) + vmovdqu8 %ymm2,64(%rsi) + addq $0x60,%rsi + vextracti32x4 $0x1,%zmm2,%xmm8 + vextracti32x4 $0x2,%zmm10,%xmm0 + andq $0xf,%rdx + je .L_ret_wcpqaDvsGlbjGoe + jmp .L_steal_cipher_wcpqaDvsGlbjGoe + +.L_remaining_num_blocks_is_5_wcpqaDvsGlbjGoe: + vmovdqu8 (%rdi),%zmm1 + vmovdqu 64(%rdi),%xmm2 + addq $0x50,%rdi + vbroadcasti32x4 (%rcx),%zmm0 + vpternlogq $0x96,%zmm0,%zmm9,%zmm1 + vpternlogq $0x96,%zmm0,%zmm10,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 176(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 192(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 208(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 224(%rcx),%zmm0 + vaesenclast %zmm0,%zmm1,%zmm1 + vaesenclast %zmm0,%zmm2,%zmm2 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + vmovdqu8 %zmm1,(%rsi) + vmovdqu %xmm2,64(%rsi) + addq $0x50,%rsi + vmovdqa %xmm2,%xmm8 + vextracti32x4 $0x1,%zmm10,%xmm0 + andq $0xf,%rdx + je .L_ret_wcpqaDvsGlbjGoe + jmp .L_steal_cipher_wcpqaDvsGlbjGoe + +.L_remaining_num_blocks_is_4_wcpqaDvsGlbjGoe: + vmovdqu8 (%rdi),%zmm1 + addq $0x40,%rdi + vbroadcasti32x4 (%rcx),%zmm0 + vpternlogq $0x96,%zmm0,%zmm9,%zmm1 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 32(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 48(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 64(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 80(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 96(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 112(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 128(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 144(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 160(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 176(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 192(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 208(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 224(%rcx),%zmm0 + vaesenclast %zmm0,%zmm1,%zmm1 + vpxorq %zmm9,%zmm1,%zmm1 + vmovdqu8 %zmm1,(%rsi) + addq $0x40,%rsi + vextracti32x4 $0x3,%zmm1,%xmm8 + vmovdqa64 %xmm10,%xmm0 + andq $0xf,%rdx + je .L_ret_wcpqaDvsGlbjGoe + jmp .L_steal_cipher_wcpqaDvsGlbjGoe +.L_remaining_num_blocks_is_3_wcpqaDvsGlbjGoe: + movq $-1,%r8 + shrq $0x10,%r8 + kmovq %r8,%k1 + vmovdqu8 (%rdi),%zmm1{%k1} + addq $0x30,%rdi + vbroadcasti32x4 (%rcx),%zmm0 + vpternlogq $0x96,%zmm0,%zmm9,%zmm1 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 32(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 48(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 64(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 80(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 96(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 112(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 128(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 144(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 160(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 176(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 192(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 208(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 224(%rcx),%zmm0 + vaesenclast %zmm0,%zmm1,%zmm1 + vpxorq %zmm9,%zmm1,%zmm1 + vmovdqu8 %zmm1,(%rsi){%k1} + addq $0x30,%rsi + vextracti32x4 $0x2,%zmm1,%xmm8 + vextracti32x4 $0x3,%zmm9,%xmm0 + andq $0xf,%rdx + je .L_ret_wcpqaDvsGlbjGoe + jmp .L_steal_cipher_wcpqaDvsGlbjGoe +.L_remaining_num_blocks_is_2_wcpqaDvsGlbjGoe: + vmovdqu8 (%rdi),%ymm1 + addq $0x20,%rdi + vbroadcasti32x4 (%rcx),%ymm0 + vpternlogq $0x96,%ymm0,%ymm9,%ymm1 + vbroadcasti32x4 16(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 32(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 48(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 64(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 80(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 96(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 112(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 128(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 144(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 160(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 176(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 192(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 208(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 224(%rcx),%ymm0 + vaesenclast %ymm0,%ymm1,%ymm1 + vpxorq %ymm9,%ymm1,%ymm1 + vmovdqu %ymm1,(%rsi) + addq $0x20,%rsi + vextracti32x4 $0x1,%zmm1,%xmm8 + vextracti32x4 $0x2,%zmm9,%xmm0 + andq $0xf,%rdx + je .L_ret_wcpqaDvsGlbjGoe + jmp .L_steal_cipher_wcpqaDvsGlbjGoe +.L_remaining_num_blocks_is_1_wcpqaDvsGlbjGoe: + vmovdqu (%rdi),%xmm1 + addq $0x10,%rdi + vpxor %xmm9,%xmm1,%xmm1 + vpxor (%rcx),%xmm1,%xmm1 + vaesenc 16(%rcx),%xmm1,%xmm1 + vaesenc 32(%rcx),%xmm1,%xmm1 + vaesenc 48(%rcx),%xmm1,%xmm1 + vaesenc 64(%rcx),%xmm1,%xmm1 + vaesenc 80(%rcx),%xmm1,%xmm1 + vaesenc 96(%rcx),%xmm1,%xmm1 + vaesenc 112(%rcx),%xmm1,%xmm1 + vaesenc 128(%rcx),%xmm1,%xmm1 + vaesenc 144(%rcx),%xmm1,%xmm1 + vaesenc 160(%rcx),%xmm1,%xmm1 + vaesenc 176(%rcx),%xmm1,%xmm1 + vaesenc 192(%rcx),%xmm1,%xmm1 + vaesenc 208(%rcx),%xmm1,%xmm1 + vaesenclast 224(%rcx),%xmm1,%xmm1 + vpxor %xmm9,%xmm1,%xmm1 + vmovdqu %xmm1,(%rsi) + addq $0x10,%rsi + vmovdqa %xmm1,%xmm8 + vextracti32x4 $0x1,%zmm9,%xmm0 + andq $0xf,%rdx + je .L_ret_wcpqaDvsGlbjGoe + jmp .L_steal_cipher_wcpqaDvsGlbjGoe + + +.L_start_by16_wcpqaDvsGlbjGoe: + vbroadcasti32x4 (%rsp),%zmm0 + vbroadcasti32x4 shufb_15_7(%rip),%zmm8 + movq $0xaa,%r8 + kmovq %r8,%k2 + vpshufb %zmm8,%zmm0,%zmm1 + vpsllvq const_dq3210(%rip),%zmm0,%zmm4 + vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 + vpclmulqdq $0x0,%zmm25,%zmm2,%zmm3 + vpxorq %zmm2,%zmm4,%zmm4{%k2} + vpxord %zmm4,%zmm3,%zmm9 + vpsllvq const_dq7654(%rip),%zmm0,%zmm5 + vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 + vpclmulqdq $0x0,%zmm25,%zmm6,%zmm7 + vpxorq %zmm6,%zmm5,%zmm5{%k2} + vpxord %zmm5,%zmm7,%zmm10 + vpsrldq $0xf,%zmm9,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm9,%zmm11 + vpxord %zmm14,%zmm11,%zmm11 + vpsrldq $0xf,%zmm10,%zmm15 + vpclmulqdq $0x0,%zmm25,%zmm15,%zmm16 + vpslldq $0x1,%zmm10,%zmm12 + vpxord %zmm16,%zmm12,%zmm12 + +.L_main_loop_run_16_wcpqaDvsGlbjGoe: + vmovdqu8 (%rdi),%zmm1 + vmovdqu8 64(%rdi),%zmm2 + vmovdqu8 128(%rdi),%zmm3 + vmovdqu8 192(%rdi),%zmm4 + addq $0x100,%rdi + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + vpxorq %zmm11,%zmm3,%zmm3 + vpxorq %zmm12,%zmm4,%zmm4 + vbroadcasti32x4 (%rcx),%zmm0 + vpxorq %zmm0,%zmm1,%zmm1 + vpxorq %zmm0,%zmm2,%zmm2 + vpxorq %zmm0,%zmm3,%zmm3 + vpxorq %zmm0,%zmm4,%zmm4 + vpsrldq $0xf,%zmm11,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm11,%zmm15 + vpxord %zmm14,%zmm15,%zmm15 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + vaesenc %zmm0,%zmm3,%zmm3 + vaesenc %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 32(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + vaesenc %zmm0,%zmm3,%zmm3 + vaesenc %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 48(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + vaesenc %zmm0,%zmm3,%zmm3 + vaesenc %zmm0,%zmm4,%zmm4 + vpsrldq $0xf,%zmm12,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm12,%zmm16 + vpxord %zmm14,%zmm16,%zmm16 + vbroadcasti32x4 64(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + vaesenc %zmm0,%zmm3,%zmm3 + vaesenc %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 80(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + vaesenc %zmm0,%zmm3,%zmm3 + vaesenc %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 96(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + vaesenc %zmm0,%zmm3,%zmm3 + vaesenc %zmm0,%zmm4,%zmm4 + vpsrldq $0xf,%zmm15,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm15,%zmm17 + vpxord %zmm14,%zmm17,%zmm17 + vbroadcasti32x4 112(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + vaesenc %zmm0,%zmm3,%zmm3 + vaesenc %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 128(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + vaesenc %zmm0,%zmm3,%zmm3 + vaesenc %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 144(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + vaesenc %zmm0,%zmm3,%zmm3 + vaesenc %zmm0,%zmm4,%zmm4 + vpsrldq $0xf,%zmm16,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm16,%zmm18 + vpxord %zmm14,%zmm18,%zmm18 + vbroadcasti32x4 160(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + vaesenc %zmm0,%zmm3,%zmm3 + vaesenc %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 176(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + vaesenc %zmm0,%zmm3,%zmm3 + vaesenc %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 192(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + vaesenc %zmm0,%zmm3,%zmm3 + vaesenc %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 208(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + vaesenc %zmm0,%zmm3,%zmm3 + vaesenc %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 224(%rcx),%zmm0 + vaesenclast %zmm0,%zmm1,%zmm1 + vaesenclast %zmm0,%zmm2,%zmm2 + vaesenclast %zmm0,%zmm3,%zmm3 + vaesenclast %zmm0,%zmm4,%zmm4 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + vpxorq %zmm11,%zmm3,%zmm3 + vpxorq %zmm12,%zmm4,%zmm4 + + vmovdqa32 %zmm15,%zmm9 + vmovdqa32 %zmm16,%zmm10 + vmovdqa32 %zmm17,%zmm11 + vmovdqa32 %zmm18,%zmm12 + vmovdqu8 %zmm1,(%rsi) + vmovdqu8 %zmm2,64(%rsi) + vmovdqu8 %zmm3,128(%rsi) + vmovdqu8 %zmm4,192(%rsi) + addq $0x100,%rsi + subq $0x100,%rdx + cmpq $0x100,%rdx + jae .L_main_loop_run_16_wcpqaDvsGlbjGoe + cmpq $0x80,%rdx + jae .L_main_loop_run_8_wcpqaDvsGlbjGoe + vextracti32x4 $0x3,%zmm4,%xmm0 + jmp .L_do_n_blocks_wcpqaDvsGlbjGoe + +.L_start_by8_wcpqaDvsGlbjGoe: + vbroadcasti32x4 (%rsp),%zmm0 + vbroadcasti32x4 shufb_15_7(%rip),%zmm8 + movq $0xaa,%r8 + kmovq %r8,%k2 + vpshufb %zmm8,%zmm0,%zmm1 + vpsllvq const_dq3210(%rip),%zmm0,%zmm4 + vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 + vpclmulqdq $0x0,%zmm25,%zmm2,%zmm3 + vpxorq %zmm2,%zmm4,%zmm4{%k2} + vpxord %zmm4,%zmm3,%zmm9 + vpsllvq const_dq7654(%rip),%zmm0,%zmm5 + vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 + vpclmulqdq $0x0,%zmm25,%zmm6,%zmm7 + vpxorq %zmm6,%zmm5,%zmm5{%k2} + vpxord %zmm5,%zmm7,%zmm10 + +.L_main_loop_run_8_wcpqaDvsGlbjGoe: + vmovdqu8 (%rdi),%zmm1 + vmovdqu8 64(%rdi),%zmm2 + addq $0x80,%rdi + vbroadcasti32x4 (%rcx),%zmm0 + vpternlogq $0x96,%zmm0,%zmm9,%zmm1 + vpternlogq $0x96,%zmm0,%zmm10,%zmm2 + vpsrldq $0xf,%zmm9,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm9,%zmm15 + vpxord %zmm14,%zmm15,%zmm15 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + vpsrldq $0xf,%zmm10,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm10,%zmm16 + vpxord %zmm14,%zmm16,%zmm16 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 176(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 192(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 208(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 224(%rcx),%zmm0 + vaesenclast %zmm0,%zmm1,%zmm1 + vaesenclast %zmm0,%zmm2,%zmm2 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + vmovdqa32 %zmm15,%zmm9 + vmovdqa32 %zmm16,%zmm10 + vmovdqu8 %zmm1,(%rsi) + vmovdqu8 %zmm2,64(%rsi) + addq $0x80,%rsi + subq $0x80,%rdx + cmpq $0x80,%rdx + jae .L_main_loop_run_8_wcpqaDvsGlbjGoe + vextracti32x4 $0x3,%zmm2,%xmm0 + jmp .L_do_n_blocks_wcpqaDvsGlbjGoe + +.L_steal_cipher_wcpqaDvsGlbjGoe: + vmovdqa %xmm8,%xmm2 + leaq vpshufb_shf_table(%rip),%rax + vmovdqu (%rax,%rdx,1),%xmm10 + vpshufb %xmm10,%xmm8,%xmm8 + vmovdqu -16(%rdi,%rdx,1),%xmm3 + vmovdqu %xmm8,-16(%rsi,%rdx,1) + leaq vpshufb_shf_table(%rip),%rax + addq $16,%rax + subq %rdx,%rax + vmovdqu (%rax),%xmm10 + vpxor mask1(%rip),%xmm10,%xmm10 + vpshufb %xmm10,%xmm3,%xmm3 + vpblendvb %xmm10,%xmm2,%xmm3,%xmm3 + vpxor %xmm0,%xmm3,%xmm8 + vpxor (%rcx),%xmm8,%xmm8 + vaesenc 16(%rcx),%xmm8,%xmm8 + vaesenc 32(%rcx),%xmm8,%xmm8 + vaesenc 48(%rcx),%xmm8,%xmm8 + vaesenc 64(%rcx),%xmm8,%xmm8 + vaesenc 80(%rcx),%xmm8,%xmm8 + vaesenc 96(%rcx),%xmm8,%xmm8 + vaesenc 112(%rcx),%xmm8,%xmm8 + vaesenc 128(%rcx),%xmm8,%xmm8 + vaesenc 144(%rcx),%xmm8,%xmm8 + vaesenc 160(%rcx),%xmm8,%xmm8 + vaesenc 176(%rcx),%xmm8,%xmm8 + vaesenc 192(%rcx),%xmm8,%xmm8 + vaesenc 208(%rcx),%xmm8,%xmm8 + vaesenclast 224(%rcx),%xmm8,%xmm8 + vpxor %xmm0,%xmm8,%xmm8 + vmovdqu %xmm8,-16(%rsi) +.L_ret_wcpqaDvsGlbjGoe: + movq 128(%rsp),%rbx + xorq %r8,%r8 + movq %r8,128(%rsp) + + vpxorq %zmm0,%zmm0,%zmm0 + movq %rbp,%rsp + popq %rbp + vzeroupper + .byte 0xf3,0xc3 + +.L_less_than_128_bytes_wcpqaDvsGlbjGoe: + vpbroadcastq %r10,%zmm25 + cmpq $0x10,%rdx + jb .L_ret_wcpqaDvsGlbjGoe + vbroadcasti32x4 (%rsp),%zmm0 + vbroadcasti32x4 shufb_15_7(%rip),%zmm8 + movl $0xaa,%r8d + kmovq %r8,%k2 + movq %rdx,%r8 + andq $0x70,%r8 + cmpq $0x60,%r8 + je .L_num_blocks_is_6_wcpqaDvsGlbjGoe + cmpq $0x50,%r8 + je .L_num_blocks_is_5_wcpqaDvsGlbjGoe + cmpq $0x40,%r8 + je .L_num_blocks_is_4_wcpqaDvsGlbjGoe + cmpq $0x30,%r8 + je .L_num_blocks_is_3_wcpqaDvsGlbjGoe + cmpq $0x20,%r8 + je .L_num_blocks_is_2_wcpqaDvsGlbjGoe + cmpq $0x10,%r8 + je .L_num_blocks_is_1_wcpqaDvsGlbjGoe + +.L_num_blocks_is_7_wcpqaDvsGlbjGoe: + vpshufb %zmm8,%zmm0,%zmm1 + vpsllvq const_dq3210(%rip),%zmm0,%zmm4 + vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 + vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 + vpxorq %zmm2,%zmm4,%zmm4{%k2} + vpxord %zmm4,%zmm3,%zmm9 + vpsllvq const_dq7654(%rip),%zmm0,%zmm5 + vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 + vpclmulqdq $0x00,%zmm25,%zmm6,%zmm7 + vpxorq %zmm6,%zmm5,%zmm5{%k2} + vpxord %zmm5,%zmm7,%zmm10 + movq $0x0000ffffffffffff,%r8 + kmovq %r8,%k1 + vmovdqu8 0(%rdi),%zmm1 + vmovdqu8 64(%rdi),%zmm2{%k1} + + addq $0x70,%rdi + vbroadcasti32x4 (%rcx),%zmm0 + vpternlogq $0x96,%zmm0,%zmm9,%zmm1 + vpternlogq $0x96,%zmm0,%zmm10,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 176(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 192(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 208(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 224(%rcx),%zmm0 + vaesenclast %zmm0,%zmm1,%zmm1 + vaesenclast %zmm0,%zmm2,%zmm2 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + vmovdqu8 %zmm1,0(%rsi) + vmovdqu8 %zmm2,64(%rsi){%k1} + addq $0x70,%rsi + vextracti32x4 $0x2,%zmm2,%xmm8 + vextracti32x4 $0x3,%zmm10,%xmm0 + andq $0xf,%rdx + je .L_ret_wcpqaDvsGlbjGoe + jmp .L_steal_cipher_wcpqaDvsGlbjGoe +.L_num_blocks_is_6_wcpqaDvsGlbjGoe: + vpshufb %zmm8,%zmm0,%zmm1 + vpsllvq const_dq3210(%rip),%zmm0,%zmm4 + vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 + vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 + vpxorq %zmm2,%zmm4,%zmm4{%k2} + vpxord %zmm4,%zmm3,%zmm9 + vpsllvq const_dq7654(%rip),%zmm0,%zmm5 + vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 + vpclmulqdq $0x00,%zmm25,%zmm6,%zmm7 + vpxorq %zmm6,%zmm5,%zmm5{%k2} + vpxord %zmm5,%zmm7,%zmm10 + vmovdqu8 0(%rdi),%zmm1 + vmovdqu8 64(%rdi),%ymm2 + addq $96,%rdi + vbroadcasti32x4 (%rcx),%zmm0 + vpternlogq $0x96,%zmm0,%zmm9,%zmm1 + vpternlogq $0x96,%zmm0,%zmm10,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 176(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 192(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 208(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 224(%rcx),%zmm0 + vaesenclast %zmm0,%zmm1,%zmm1 + vaesenclast %zmm0,%zmm2,%zmm2 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + vmovdqu8 %zmm1,0(%rsi) + vmovdqu8 %ymm2,64(%rsi) + addq $96,%rsi + + vextracti32x4 $0x1,%ymm2,%xmm8 + vextracti32x4 $0x2,%zmm10,%xmm0 + andq $0xf,%rdx + je .L_ret_wcpqaDvsGlbjGoe + jmp .L_steal_cipher_wcpqaDvsGlbjGoe +.L_num_blocks_is_5_wcpqaDvsGlbjGoe: + vpshufb %zmm8,%zmm0,%zmm1 + vpsllvq const_dq3210(%rip),%zmm0,%zmm4 + vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 + vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 + vpxorq %zmm2,%zmm4,%zmm4{%k2} + vpxord %zmm4,%zmm3,%zmm9 + vpsllvq const_dq7654(%rip),%zmm0,%zmm5 + vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 + vpclmulqdq $0x00,%zmm25,%zmm6,%zmm7 + vpxorq %zmm6,%zmm5,%zmm5{%k2} + vpxord %zmm5,%zmm7,%zmm10 + vmovdqu8 0(%rdi),%zmm1 + vmovdqu8 64(%rdi),%xmm2 + addq $80,%rdi + vbroadcasti32x4 (%rcx),%zmm0 + vpternlogq $0x96,%zmm0,%zmm9,%zmm1 + vpternlogq $0x96,%zmm0,%zmm10,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 176(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 192(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 208(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vaesenc %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 224(%rcx),%zmm0 + vaesenclast %zmm0,%zmm1,%zmm1 + vaesenclast %zmm0,%zmm2,%zmm2 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + vmovdqu8 %zmm1,0(%rsi) + vmovdqu8 %xmm2,64(%rsi) + addq $80,%rsi + + vmovdqa %xmm2,%xmm8 + vextracti32x4 $0x1,%zmm10,%xmm0 + andq $0xf,%rdx + je .L_ret_wcpqaDvsGlbjGoe + jmp .L_steal_cipher_wcpqaDvsGlbjGoe +.L_num_blocks_is_4_wcpqaDvsGlbjGoe: + vpshufb %zmm8,%zmm0,%zmm1 + vpsllvq const_dq3210(%rip),%zmm0,%zmm4 + vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 + vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 + vpxorq %zmm2,%zmm4,%zmm4{%k2} + vpxord %zmm4,%zmm3,%zmm9 + vpsllvq const_dq7654(%rip),%zmm0,%zmm5 + vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 + vpclmulqdq $0x00,%zmm25,%zmm6,%zmm7 + vpxorq %zmm6,%zmm5,%zmm5{%k2} + vpxord %zmm5,%zmm7,%zmm10 + vmovdqu8 0(%rdi),%zmm1 + addq $64,%rdi + vbroadcasti32x4 (%rcx),%zmm0 + vpternlogq $0x96,%zmm0,%zmm9,%zmm1 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 32(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 48(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 64(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 80(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 96(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 112(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 128(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 144(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 160(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 176(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 192(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 208(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 224(%rcx),%zmm0 + vaesenclast %zmm0,%zmm1,%zmm1 + vpxorq %zmm9,%zmm1,%zmm1 + vmovdqu8 %zmm1,0(%rsi) + addq $64,%rsi + vextracti32x4 $0x3,%zmm1,%xmm8 + vmovdqa %xmm10,%xmm0 + andq $0xf,%rdx + je .L_ret_wcpqaDvsGlbjGoe + jmp .L_steal_cipher_wcpqaDvsGlbjGoe +.L_num_blocks_is_3_wcpqaDvsGlbjGoe: + vpshufb %zmm8,%zmm0,%zmm1 + vpsllvq const_dq3210(%rip),%zmm0,%zmm4 + vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 + vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 + vpxorq %zmm2,%zmm4,%zmm4{%k2} + vpxord %zmm4,%zmm3,%zmm9 + movq $0x0000ffffffffffff,%r8 + kmovq %r8,%k1 + vmovdqu8 0(%rdi),%zmm1{%k1} + addq $48,%rdi + vbroadcasti32x4 (%rcx),%zmm0 + vpternlogq $0x96,%zmm0,%zmm9,%zmm1 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 32(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 48(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 64(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 80(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 96(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 112(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 128(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 144(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 160(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 176(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 192(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 208(%rcx),%zmm0 + vaesenc %zmm0,%zmm1,%zmm1 + vbroadcasti32x4 224(%rcx),%zmm0 + vaesenclast %zmm0,%zmm1,%zmm1 + vpxorq %zmm9,%zmm1,%zmm1 + vmovdqu8 %zmm1,0(%rsi){%k1} + addq $48,%rsi + vextracti32x4 $2,%zmm1,%xmm8 + vextracti32x4 $3,%zmm9,%xmm0 + andq $0xf,%rdx + je .L_ret_wcpqaDvsGlbjGoe + jmp .L_steal_cipher_wcpqaDvsGlbjGoe +.L_num_blocks_is_2_wcpqaDvsGlbjGoe: + vpshufb %zmm8,%zmm0,%zmm1 + vpsllvq const_dq3210(%rip),%zmm0,%zmm4 + vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 + vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 + vpxorq %zmm2,%zmm4,%zmm4{%k2} + vpxord %zmm4,%zmm3,%zmm9 + + vmovdqu8 0(%rdi),%ymm1 + addq $32,%rdi + vbroadcasti32x4 (%rcx),%ymm0 + vpternlogq $0x96,%ymm0,%ymm9,%ymm1 + vbroadcasti32x4 16(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 32(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 48(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 64(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 80(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 96(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 112(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 128(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 144(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 160(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 176(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 192(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 208(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 224(%rcx),%ymm0 + vaesenclast %ymm0,%ymm1,%ymm1 + vpxorq %ymm9,%ymm1,%ymm1 + vmovdqu8 %ymm1,0(%rsi) + addq $32,%rsi + + vextracti32x4 $1,%ymm1,%xmm8 + vextracti32x4 $2,%zmm9,%xmm0 + andq $0xf,%rdx + je .L_ret_wcpqaDvsGlbjGoe + jmp .L_steal_cipher_wcpqaDvsGlbjGoe +.L_num_blocks_is_1_wcpqaDvsGlbjGoe: + vpshufb %zmm8,%zmm0,%zmm1 + vpsllvq const_dq3210(%rip),%zmm0,%zmm4 + vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 + vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 + vpxorq %zmm2,%zmm4,%zmm4{%k2} + vpxord %zmm4,%zmm3,%zmm9 + + vmovdqu8 0(%rdi),%xmm1 + addq $16,%rdi + vbroadcasti32x4 (%rcx),%ymm0 + vpternlogq $0x96,%ymm0,%ymm9,%ymm1 + vbroadcasti32x4 16(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 32(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 48(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 64(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 80(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 96(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 112(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 128(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 144(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 160(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 176(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 192(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 208(%rcx),%ymm0 + vaesenc %ymm0,%ymm1,%ymm1 + vbroadcasti32x4 224(%rcx),%ymm0 + vaesenclast %ymm0,%ymm1,%ymm1 + vpxorq %ymm9,%ymm1,%ymm1 + vmovdqu8 %xmm1,0(%rsi) + addq $16,%rsi + + vmovdqa %xmm1,%xmm8 + vextracti32x4 $1,%zmm9,%xmm0 + andq $0xf,%rdx + je .L_ret_wcpqaDvsGlbjGoe + jmp .L_steal_cipher_wcpqaDvsGlbjGoe +.cfi_endproc +.globl aesni_xts_256_decrypt_avx512 +.hidden aesni_xts_256_decrypt_avx512 +.type aesni_xts_256_decrypt_avx512,@function +.align 32 +aesni_xts_256_decrypt_avx512: +.cfi_startproc +.byte 243,15,30,250 + pushq %rbp + movq %rsp,%rbp + subq $136,%rsp + andq $0xffffffffffffffc0,%rsp + movq %rbx,128(%rsp) + movq $0x87,%r10 + vmovdqu (%r9),%xmm1 + vpxor (%r8),%xmm1,%xmm1 + vaesenc 16(%r8),%xmm1,%xmm1 + vaesenc 32(%r8),%xmm1,%xmm1 + vaesenc 48(%r8),%xmm1,%xmm1 + vaesenc 64(%r8),%xmm1,%xmm1 + vaesenc 80(%r8),%xmm1,%xmm1 + vaesenc 96(%r8),%xmm1,%xmm1 + vaesenc 112(%r8),%xmm1,%xmm1 + vaesenc 128(%r8),%xmm1,%xmm1 + vaesenc 144(%r8),%xmm1,%xmm1 + vaesenc 160(%r8),%xmm1,%xmm1 + vaesenc 176(%r8),%xmm1,%xmm1 + vaesenc 192(%r8),%xmm1,%xmm1 + vaesenc 208(%r8),%xmm1,%xmm1 + vaesenclast 224(%r8),%xmm1,%xmm1 + vmovdqa %xmm1,(%rsp) + + cmpq $0x80,%rdx + jb .L_less_than_128_bytes_EmbgEptodyewbFa + vpbroadcastq %r10,%zmm25 + cmpq $0x100,%rdx + jge .L_start_by16_EmbgEptodyewbFa + jmp .L_start_by8_EmbgEptodyewbFa + +.L_do_n_blocks_EmbgEptodyewbFa: + cmpq $0x0,%rdx + je .L_ret_EmbgEptodyewbFa + cmpq $0x70,%rdx + jge .L_remaining_num_blocks_is_7_EmbgEptodyewbFa + cmpq $0x60,%rdx + jge .L_remaining_num_blocks_is_6_EmbgEptodyewbFa + cmpq $0x50,%rdx + jge .L_remaining_num_blocks_is_5_EmbgEptodyewbFa + cmpq $0x40,%rdx + jge .L_remaining_num_blocks_is_4_EmbgEptodyewbFa + cmpq $0x30,%rdx + jge .L_remaining_num_blocks_is_3_EmbgEptodyewbFa + cmpq $0x20,%rdx + jge .L_remaining_num_blocks_is_2_EmbgEptodyewbFa + cmpq $0x10,%rdx + jge .L_remaining_num_blocks_is_1_EmbgEptodyewbFa + + + vmovdqu %xmm5,%xmm1 + + vpxor %xmm9,%xmm1,%xmm1 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 160(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 176(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 192(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 208(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 224(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vpxor %xmm9,%xmm1,%xmm1 + vmovdqu %xmm1,-16(%rsi) + vmovdqa %xmm1,%xmm8 + + + movq $0x1,%r8 + kmovq %r8,%k1 + vpsllq $0x3f,%xmm9,%xmm13 + vpsraq $0x3f,%xmm13,%xmm14 + vpandq %xmm25,%xmm14,%xmm5 + vpxorq %xmm5,%xmm9,%xmm9{%k1} + vpsrldq $0x8,%xmm9,%xmm10 +.byte 98, 211, 181, 8, 115, 194, 1 + vpslldq $0x8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm0,%xmm0 + jmp .L_steal_cipher_EmbgEptodyewbFa + +.L_remaining_num_blocks_is_7_EmbgEptodyewbFa: + movq $0xffffffffffffffff,%r8 + shrq $0x10,%r8 + kmovq %r8,%k1 + vmovdqu8 (%rdi),%zmm1 + vmovdqu8 64(%rdi),%zmm2{%k1} + addq $0x70,%rdi + andq $0xf,%rdx + je .L_done_7_remain_EmbgEptodyewbFa + vextracti32x4 $0x2,%zmm10,%xmm12 + vextracti32x4 $0x3,%zmm10,%xmm13 + vinserti32x4 $0x2,%xmm13,%zmm10,%zmm10 + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vbroadcasti32x4 (%rcx),%zmm0 + vpxorq %zmm0,%zmm1,%zmm1 + vpxorq %zmm0,%zmm2,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 176(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 192(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 208(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 224(%rcx),%zmm0 + vaesdeclast %zmm0,%zmm1,%zmm1 + vaesdeclast %zmm0,%zmm2,%zmm2 + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vmovdqa32 %zmm15,%zmm9 + vmovdqa32 %zmm16,%zmm10 + vmovdqu8 %zmm1,(%rsi) + vmovdqu8 %zmm2,64(%rsi){%k1} + addq $0x70,%rsi + vextracti32x4 $0x2,%zmm2,%xmm8 + vmovdqa %xmm12,%xmm0 + jmp .L_steal_cipher_EmbgEptodyewbFa + +.L_done_7_remain_EmbgEptodyewbFa: + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vbroadcasti32x4 (%rcx),%zmm0 + vpxorq %zmm0,%zmm1,%zmm1 + vpxorq %zmm0,%zmm2,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 176(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 192(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 208(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 224(%rcx),%zmm0 + vaesdeclast %zmm0,%zmm1,%zmm1 + vaesdeclast %zmm0,%zmm2,%zmm2 + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vmovdqa32 %zmm15,%zmm9 + vmovdqa32 %zmm16,%zmm10 + vmovdqu8 %zmm1,(%rsi) + vmovdqu8 %zmm2,64(%rsi){%k1} + jmp .L_ret_EmbgEptodyewbFa + +.L_remaining_num_blocks_is_6_EmbgEptodyewbFa: + vmovdqu8 (%rdi),%zmm1 + vmovdqu8 64(%rdi),%ymm2 + addq $0x60,%rdi + andq $0xf,%rdx + je .L_done_6_remain_EmbgEptodyewbFa + vextracti32x4 $0x1,%zmm10,%xmm12 + vextracti32x4 $0x2,%zmm10,%xmm13 + vinserti32x4 $0x1,%xmm13,%zmm10,%zmm10 + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vbroadcasti32x4 (%rcx),%zmm0 + vpxorq %zmm0,%zmm1,%zmm1 + vpxorq %zmm0,%zmm2,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 176(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 192(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 208(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 224(%rcx),%zmm0 + vaesdeclast %zmm0,%zmm1,%zmm1 + vaesdeclast %zmm0,%zmm2,%zmm2 + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vmovdqa32 %zmm15,%zmm9 + vmovdqa32 %zmm16,%zmm10 + vmovdqu8 %zmm1,(%rsi) + vmovdqu8 %ymm2,64(%rsi) + addq $0x60,%rsi + vextracti32x4 $0x1,%zmm2,%xmm8 + vmovdqa %xmm12,%xmm0 + jmp .L_steal_cipher_EmbgEptodyewbFa + +.L_done_6_remain_EmbgEptodyewbFa: + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vbroadcasti32x4 (%rcx),%zmm0 + vpxorq %zmm0,%zmm1,%zmm1 + vpxorq %zmm0,%zmm2,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 176(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 192(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 208(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 224(%rcx),%zmm0 + vaesdeclast %zmm0,%zmm1,%zmm1 + vaesdeclast %zmm0,%zmm2,%zmm2 + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vmovdqa32 %zmm15,%zmm9 + vmovdqa32 %zmm16,%zmm10 + vmovdqu8 %zmm1,(%rsi) + vmovdqu8 %ymm2,64(%rsi) + jmp .L_ret_EmbgEptodyewbFa + +.L_remaining_num_blocks_is_5_EmbgEptodyewbFa: + vmovdqu8 (%rdi),%zmm1 + vmovdqu 64(%rdi),%xmm2 + addq $0x50,%rdi + andq $0xf,%rdx + je .L_done_5_remain_EmbgEptodyewbFa + vmovdqa %xmm10,%xmm12 + vextracti32x4 $0x1,%zmm10,%xmm10 + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vbroadcasti32x4 (%rcx),%zmm0 + vpxorq %zmm0,%zmm1,%zmm1 + vpxorq %zmm0,%zmm2,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 176(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 192(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 208(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 224(%rcx),%zmm0 + vaesdeclast %zmm0,%zmm1,%zmm1 + vaesdeclast %zmm0,%zmm2,%zmm2 + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vmovdqa32 %zmm15,%zmm9 + vmovdqa32 %zmm16,%zmm10 + vmovdqu8 %zmm1,(%rsi) + vmovdqu %xmm2,64(%rsi) + addq $0x50,%rsi + vmovdqa %xmm2,%xmm8 + vmovdqa %xmm12,%xmm0 + jmp .L_steal_cipher_EmbgEptodyewbFa + +.L_done_5_remain_EmbgEptodyewbFa: + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vbroadcasti32x4 (%rcx),%zmm0 + vpxorq %zmm0,%zmm1,%zmm1 + vpxorq %zmm0,%zmm2,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 176(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 192(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 208(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 224(%rcx),%zmm0 + vaesdeclast %zmm0,%zmm1,%zmm1 + vaesdeclast %zmm0,%zmm2,%zmm2 + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vmovdqa32 %zmm15,%zmm9 + vmovdqa32 %zmm16,%zmm10 + vmovdqu8 %zmm1,(%rsi) + vmovdqu8 %xmm2,64(%rsi) + jmp .L_ret_EmbgEptodyewbFa + +.L_remaining_num_blocks_is_4_EmbgEptodyewbFa: + vmovdqu8 (%rdi),%zmm1 + addq $0x40,%rdi + andq $0xf,%rdx + je .L_done_4_remain_EmbgEptodyewbFa + vextracti32x4 $0x3,%zmm9,%xmm12 + vinserti32x4 $0x3,%xmm10,%zmm9,%zmm9 + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vbroadcasti32x4 (%rcx),%zmm0 + vpxorq %zmm0,%zmm1,%zmm1 + vpxorq %zmm0,%zmm2,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 176(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 192(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 208(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 224(%rcx),%zmm0 + vaesdeclast %zmm0,%zmm1,%zmm1 + vaesdeclast %zmm0,%zmm2,%zmm2 + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vmovdqa32 %zmm15,%zmm9 + vmovdqa32 %zmm16,%zmm10 + vmovdqu8 %zmm1,(%rsi) + addq $0x40,%rsi + vextracti32x4 $0x3,%zmm1,%xmm8 + vmovdqa %xmm12,%xmm0 + jmp .L_steal_cipher_EmbgEptodyewbFa + +.L_done_4_remain_EmbgEptodyewbFa: + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vbroadcasti32x4 (%rcx),%zmm0 + vpxorq %zmm0,%zmm1,%zmm1 + vpxorq %zmm0,%zmm2,%zmm2 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 176(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 192(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 208(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 224(%rcx),%zmm0 + vaesdeclast %zmm0,%zmm1,%zmm1 + vaesdeclast %zmm0,%zmm2,%zmm2 + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vmovdqa32 %zmm15,%zmm9 + vmovdqa32 %zmm16,%zmm10 + vmovdqu8 %zmm1,(%rsi) + jmp .L_ret_EmbgEptodyewbFa + +.L_remaining_num_blocks_is_3_EmbgEptodyewbFa: + vmovdqu (%rdi),%xmm1 + vmovdqu 16(%rdi),%xmm2 + vmovdqu 32(%rdi),%xmm3 + addq $0x30,%rdi + andq $0xf,%rdx + je .L_done_3_remain_EmbgEptodyewbFa + vextracti32x4 $0x2,%zmm9,%xmm13 + vextracti32x4 $0x1,%zmm9,%xmm10 + vextracti32x4 $0x3,%zmm9,%xmm11 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 160(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 176(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 192(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 208(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 224(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vaesdeclast %xmm0,%xmm3,%xmm3 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + vmovdqu %xmm3,32(%rsi) + addq $0x30,%rsi + vmovdqa %xmm3,%xmm8 + vmovdqa %xmm13,%xmm0 + jmp .L_steal_cipher_EmbgEptodyewbFa + +.L_done_3_remain_EmbgEptodyewbFa: + vextracti32x4 $0x1,%zmm9,%xmm10 + vextracti32x4 $0x2,%zmm9,%xmm11 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 160(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 176(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 192(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 208(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 224(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vaesdeclast %xmm0,%xmm3,%xmm3 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + vmovdqu %xmm3,32(%rsi) + jmp .L_ret_EmbgEptodyewbFa + +.L_remaining_num_blocks_is_2_EmbgEptodyewbFa: + vmovdqu (%rdi),%xmm1 + vmovdqu 16(%rdi),%xmm2 + addq $0x20,%rdi + andq $0xf,%rdx + je .L_done_2_remain_EmbgEptodyewbFa + vextracti32x4 $0x2,%zmm9,%xmm10 + vextracti32x4 $0x1,%zmm9,%xmm12 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 160(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 176(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 192(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 208(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 224(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + addq $0x20,%rsi + vmovdqa %xmm2,%xmm8 + vmovdqa %xmm12,%xmm0 + jmp .L_steal_cipher_EmbgEptodyewbFa + +.L_done_2_remain_EmbgEptodyewbFa: + vextracti32x4 $0x1,%zmm9,%xmm10 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 160(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 176(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 192(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 208(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 224(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + jmp .L_ret_EmbgEptodyewbFa + +.L_remaining_num_blocks_is_1_EmbgEptodyewbFa: + vmovdqu (%rdi),%xmm1 + addq $0x10,%rdi + andq $0xf,%rdx + je .L_done_1_remain_EmbgEptodyewbFa + vextracti32x4 $0x1,%zmm9,%xmm11 + vpxor %xmm11,%xmm1,%xmm1 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 160(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 176(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 192(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 208(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 224(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vpxor %xmm11,%xmm1,%xmm1 + vmovdqu %xmm1,(%rsi) + addq $0x10,%rsi + vmovdqa %xmm1,%xmm8 + vmovdqa %xmm9,%xmm0 + jmp .L_steal_cipher_EmbgEptodyewbFa + +.L_done_1_remain_EmbgEptodyewbFa: + vpxor %xmm9,%xmm1,%xmm1 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 160(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 176(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 192(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 208(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 224(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vpxor %xmm9,%xmm1,%xmm1 + vmovdqu %xmm1,(%rsi) + jmp .L_ret_EmbgEptodyewbFa + +.L_start_by16_EmbgEptodyewbFa: + vbroadcasti32x4 (%rsp),%zmm0 + vbroadcasti32x4 shufb_15_7(%rip),%zmm8 + movq $0xaa,%r8 + kmovq %r8,%k2 + + + vpshufb %zmm8,%zmm0,%zmm1 + vpsllvq const_dq3210(%rip),%zmm0,%zmm4 + vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 + vpclmulqdq $0x0,%zmm25,%zmm2,%zmm3 + vpxorq %zmm2,%zmm4,%zmm4{%k2} + vpxord %zmm4,%zmm3,%zmm9 + + + vpsllvq const_dq7654(%rip),%zmm0,%zmm5 + vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 + vpclmulqdq $0x0,%zmm25,%zmm6,%zmm7 + vpxorq %zmm6,%zmm5,%zmm5{%k2} + vpxord %zmm5,%zmm7,%zmm10 + + + vpsrldq $0xf,%zmm9,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm9,%zmm11 + vpxord %zmm14,%zmm11,%zmm11 + + vpsrldq $0xf,%zmm10,%zmm15 + vpclmulqdq $0x0,%zmm25,%zmm15,%zmm16 + vpslldq $0x1,%zmm10,%zmm12 + vpxord %zmm16,%zmm12,%zmm12 + +.L_main_loop_run_16_EmbgEptodyewbFa: + vmovdqu8 (%rdi),%zmm1 + vmovdqu8 64(%rdi),%zmm2 + vmovdqu8 128(%rdi),%zmm3 + vmovdqu8 192(%rdi),%zmm4 + vmovdqu8 240(%rdi),%xmm5 + addq $0x100,%rdi + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + vpxorq %zmm11,%zmm3,%zmm3 + vpxorq %zmm12,%zmm4,%zmm4 + vbroadcasti32x4 (%rcx),%zmm0 + vpxorq %zmm0,%zmm1,%zmm1 + vpxorq %zmm0,%zmm2,%zmm2 + vpxorq %zmm0,%zmm3,%zmm3 + vpxorq %zmm0,%zmm4,%zmm4 + vpsrldq $0xf,%zmm11,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm11,%zmm15 + vpxord %zmm14,%zmm15,%zmm15 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + vaesdec %zmm0,%zmm3,%zmm3 + vaesdec %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 32(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + vaesdec %zmm0,%zmm3,%zmm3 + vaesdec %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 48(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + vaesdec %zmm0,%zmm3,%zmm3 + vaesdec %zmm0,%zmm4,%zmm4 + vpsrldq $0xf,%zmm12,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm12,%zmm16 + vpxord %zmm14,%zmm16,%zmm16 + vbroadcasti32x4 64(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + vaesdec %zmm0,%zmm3,%zmm3 + vaesdec %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 80(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + vaesdec %zmm0,%zmm3,%zmm3 + vaesdec %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 96(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + vaesdec %zmm0,%zmm3,%zmm3 + vaesdec %zmm0,%zmm4,%zmm4 + vpsrldq $0xf,%zmm15,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm15,%zmm17 + vpxord %zmm14,%zmm17,%zmm17 + vbroadcasti32x4 112(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + vaesdec %zmm0,%zmm3,%zmm3 + vaesdec %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 128(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + vaesdec %zmm0,%zmm3,%zmm3 + vaesdec %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 144(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + vaesdec %zmm0,%zmm3,%zmm3 + vaesdec %zmm0,%zmm4,%zmm4 + vpsrldq $0xf,%zmm16,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm16,%zmm18 + vpxord %zmm14,%zmm18,%zmm18 + vbroadcasti32x4 160(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + vaesdec %zmm0,%zmm3,%zmm3 + vaesdec %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 176(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + vaesdec %zmm0,%zmm3,%zmm3 + vaesdec %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 192(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + vaesdec %zmm0,%zmm3,%zmm3 + vaesdec %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 208(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + vaesdec %zmm0,%zmm3,%zmm3 + vaesdec %zmm0,%zmm4,%zmm4 + vbroadcasti32x4 224(%rcx),%zmm0 + vaesdeclast %zmm0,%zmm1,%zmm1 + vaesdeclast %zmm0,%zmm2,%zmm2 + vaesdeclast %zmm0,%zmm3,%zmm3 + vaesdeclast %zmm0,%zmm4,%zmm4 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + vpxorq %zmm11,%zmm3,%zmm3 + vpxorq %zmm12,%zmm4,%zmm4 + + vmovdqa32 %zmm15,%zmm9 + vmovdqa32 %zmm16,%zmm10 + vmovdqa32 %zmm17,%zmm11 + vmovdqa32 %zmm18,%zmm12 + vmovdqu8 %zmm1,(%rsi) + vmovdqu8 %zmm2,64(%rsi) + vmovdqu8 %zmm3,128(%rsi) + vmovdqu8 %zmm4,192(%rsi) + addq $0x100,%rsi + subq $0x100,%rdx + cmpq $0x100,%rdx + jge .L_main_loop_run_16_EmbgEptodyewbFa + + cmpq $0x80,%rdx + jge .L_main_loop_run_8_EmbgEptodyewbFa + jmp .L_do_n_blocks_EmbgEptodyewbFa + +.L_start_by8_EmbgEptodyewbFa: + + vbroadcasti32x4 (%rsp),%zmm0 + vbroadcasti32x4 shufb_15_7(%rip),%zmm8 + movq $0xaa,%r8 + kmovq %r8,%k2 + + + vpshufb %zmm8,%zmm0,%zmm1 + vpsllvq const_dq3210(%rip),%zmm0,%zmm4 + vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 + vpclmulqdq $0x0,%zmm25,%zmm2,%zmm3 + vpxorq %zmm2,%zmm4,%zmm4{%k2} + vpxord %zmm4,%zmm3,%zmm9 + + + vpsllvq const_dq7654(%rip),%zmm0,%zmm5 + vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 + vpclmulqdq $0x0,%zmm25,%zmm6,%zmm7 + vpxorq %zmm6,%zmm5,%zmm5{%k2} + vpxord %zmm5,%zmm7,%zmm10 + +.L_main_loop_run_8_EmbgEptodyewbFa: + vmovdqu8 (%rdi),%zmm1 + vmovdqu8 64(%rdi),%zmm2 + vmovdqu8 112(%rdi),%xmm5 + addq $0x80,%rdi + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vbroadcasti32x4 (%rcx),%zmm0 + vpxorq %zmm0,%zmm1,%zmm1 + vpxorq %zmm0,%zmm2,%zmm2 + vpsrldq $0xf,%zmm9,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm9,%zmm15 + vpxord %zmm14,%zmm15,%zmm15 + vbroadcasti32x4 16(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 32(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 48(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + vpsrldq $0xf,%zmm10,%zmm13 + vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 + vpslldq $0x1,%zmm10,%zmm16 + vpxord %zmm14,%zmm16,%zmm16 + + vbroadcasti32x4 64(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 80(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 96(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 112(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 128(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 144(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 160(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 176(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 192(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 208(%rcx),%zmm0 + vaesdec %zmm0,%zmm1,%zmm1 + vaesdec %zmm0,%zmm2,%zmm2 + + + vbroadcasti32x4 224(%rcx),%zmm0 + vaesdeclast %zmm0,%zmm1,%zmm1 + vaesdeclast %zmm0,%zmm2,%zmm2 + + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm2,%zmm2 + + + vmovdqa32 %zmm15,%zmm9 + vmovdqa32 %zmm16,%zmm10 + vmovdqu8 %zmm1,(%rsi) + vmovdqu8 %zmm2,64(%rsi) + addq $0x80,%rsi + subq $0x80,%rdx + cmpq $0x80,%rdx + jge .L_main_loop_run_8_EmbgEptodyewbFa + jmp .L_do_n_blocks_EmbgEptodyewbFa + +.L_steal_cipher_EmbgEptodyewbFa: + + vmovdqa %xmm8,%xmm2 + + + leaq vpshufb_shf_table(%rip),%rax + vmovdqu (%rax,%rdx,1),%xmm10 + vpshufb %xmm10,%xmm8,%xmm8 + + + vmovdqu -16(%rdi,%rdx,1),%xmm3 + vmovdqu %xmm8,-16(%rsi,%rdx,1) + + + leaq vpshufb_shf_table(%rip),%rax + addq $16,%rax + subq %rdx,%rax + vmovdqu (%rax),%xmm10 + vpxor mask1(%rip),%xmm10,%xmm10 + vpshufb %xmm10,%xmm3,%xmm3 + + vpblendvb %xmm10,%xmm2,%xmm3,%xmm3 + + + vpxor %xmm0,%xmm3,%xmm8 + + + vpxor (%rcx),%xmm8,%xmm8 + vaesdec 16(%rcx),%xmm8,%xmm8 + vaesdec 32(%rcx),%xmm8,%xmm8 + vaesdec 48(%rcx),%xmm8,%xmm8 + vaesdec 64(%rcx),%xmm8,%xmm8 + vaesdec 80(%rcx),%xmm8,%xmm8 + vaesdec 96(%rcx),%xmm8,%xmm8 + vaesdec 112(%rcx),%xmm8,%xmm8 + vaesdec 128(%rcx),%xmm8,%xmm8 + vaesdec 144(%rcx),%xmm8,%xmm8 + vaesdec 160(%rcx),%xmm8,%xmm8 + vaesdec 176(%rcx),%xmm8,%xmm8 + vaesdec 192(%rcx),%xmm8,%xmm8 + vaesdec 208(%rcx),%xmm8,%xmm8 + vaesdeclast 224(%rcx),%xmm8,%xmm8 + + vpxor %xmm0,%xmm8,%xmm8 + +.L_done_EmbgEptodyewbFa: + + vmovdqu %xmm8,-16(%rsi) +.L_ret_EmbgEptodyewbFa: + movq 128(%rsp),%rbx + xorq %r8,%r8 + movq %r8,128(%rsp) + + vpxorq %zmm0,%zmm0,%zmm0 + movq %rbp,%rsp + popq %rbp + vzeroupper + .byte 0xf3,0xc3 + +.L_less_than_128_bytes_EmbgEptodyewbFa: + cmpq $0x10,%rdx + jb .L_ret_EmbgEptodyewbFa + + movq %rdx,%r8 + andq $0x70,%r8 + cmpq $0x60,%r8 + je .L_num_blocks_is_6_EmbgEptodyewbFa + cmpq $0x50,%r8 + je .L_num_blocks_is_5_EmbgEptodyewbFa + cmpq $0x40,%r8 + je .L_num_blocks_is_4_EmbgEptodyewbFa + cmpq $0x30,%r8 + je .L_num_blocks_is_3_EmbgEptodyewbFa + cmpq $0x20,%r8 + je .L_num_blocks_is_2_EmbgEptodyewbFa + cmpq $0x10,%r8 + je .L_num_blocks_is_1_EmbgEptodyewbFa + +.L_num_blocks_is_7_EmbgEptodyewbFa: + vmovdqa 0(%rsp),%xmm9 + movq 0(%rsp),%rax + movq 8(%rsp),%rbx + vmovdqu 0(%rdi),%xmm1 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,16(%rsp) + movq %rbx,16 + 8(%rsp) + vmovdqa 16(%rsp),%xmm10 + vmovdqu 16(%rdi),%xmm2 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,32(%rsp) + movq %rbx,32 + 8(%rsp) + vmovdqa 32(%rsp),%xmm11 + vmovdqu 32(%rdi),%xmm3 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,48(%rsp) + movq %rbx,48 + 8(%rsp) + vmovdqa 48(%rsp),%xmm12 + vmovdqu 48(%rdi),%xmm4 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,64(%rsp) + movq %rbx,64 + 8(%rsp) + vmovdqa 64(%rsp),%xmm13 + vmovdqu 64(%rdi),%xmm5 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,80(%rsp) + movq %rbx,80 + 8(%rsp) + vmovdqa 80(%rsp),%xmm14 + vmovdqu 80(%rdi),%xmm6 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,96(%rsp) + movq %rbx,96 + 8(%rsp) + vmovdqa 96(%rsp),%xmm15 + vmovdqu 96(%rdi),%xmm7 + addq $0x70,%rdi + andq $0xf,%rdx + je .L_done_7_EmbgEptodyewbFa + +.L_steal_cipher_7_EmbgEptodyewbFa: + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,16(%rsp) + movq %rbx,24(%rsp) + vmovdqa64 %xmm15,%xmm16 + vmovdqa 16(%rsp),%xmm15 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vpxor %xmm13,%xmm5,%xmm5 + vpxor %xmm14,%xmm6,%xmm6 + vpxor %xmm15,%xmm7,%xmm7 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vpxor %xmm0,%xmm3,%xmm3 + vpxor %xmm0,%xmm4,%xmm4 + vpxor %xmm0,%xmm5,%xmm5 + vpxor %xmm0,%xmm6,%xmm6 + vpxor %xmm0,%xmm7,%xmm7 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 160(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 176(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 192(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 208(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 224(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vaesdeclast %xmm0,%xmm3,%xmm3 + vaesdeclast %xmm0,%xmm4,%xmm4 + vaesdeclast %xmm0,%xmm5,%xmm5 + vaesdeclast %xmm0,%xmm6,%xmm6 + vaesdeclast %xmm0,%xmm7,%xmm7 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vpxor %xmm13,%xmm5,%xmm5 + vpxor %xmm14,%xmm6,%xmm6 + vpxor %xmm15,%xmm7,%xmm7 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + vmovdqu %xmm3,32(%rsi) + vmovdqu %xmm4,48(%rsi) + vmovdqu %xmm5,64(%rsi) + vmovdqu %xmm6,80(%rsi) + addq $0x70,%rsi + vmovdqa64 %xmm16,%xmm0 + vmovdqa %xmm7,%xmm8 + jmp .L_steal_cipher_EmbgEptodyewbFa + +.L_done_7_EmbgEptodyewbFa: + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vpxor %xmm13,%xmm5,%xmm5 + vpxor %xmm14,%xmm6,%xmm6 + vpxor %xmm15,%xmm7,%xmm7 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vpxor %xmm0,%xmm3,%xmm3 + vpxor %xmm0,%xmm4,%xmm4 + vpxor %xmm0,%xmm5,%xmm5 + vpxor %xmm0,%xmm6,%xmm6 + vpxor %xmm0,%xmm7,%xmm7 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 160(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 176(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 192(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 208(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vmovdqu 224(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vaesdeclast %xmm0,%xmm3,%xmm3 + vaesdeclast %xmm0,%xmm4,%xmm4 + vaesdeclast %xmm0,%xmm5,%xmm5 + vaesdeclast %xmm0,%xmm6,%xmm6 + vaesdeclast %xmm0,%xmm7,%xmm7 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vpxor %xmm13,%xmm5,%xmm5 + vpxor %xmm14,%xmm6,%xmm6 + vpxor %xmm15,%xmm7,%xmm7 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + vmovdqu %xmm3,32(%rsi) + vmovdqu %xmm4,48(%rsi) + vmovdqu %xmm5,64(%rsi) + vmovdqu %xmm6,80(%rsi) + addq $0x70,%rsi + vmovdqa %xmm7,%xmm8 + jmp .L_done_EmbgEptodyewbFa + +.L_num_blocks_is_6_EmbgEptodyewbFa: + vmovdqa 0(%rsp),%xmm9 + movq 0(%rsp),%rax + movq 8(%rsp),%rbx + vmovdqu 0(%rdi),%xmm1 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,16(%rsp) + movq %rbx,16 + 8(%rsp) + vmovdqa 16(%rsp),%xmm10 + vmovdqu 16(%rdi),%xmm2 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,32(%rsp) + movq %rbx,32 + 8(%rsp) + vmovdqa 32(%rsp),%xmm11 + vmovdqu 32(%rdi),%xmm3 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,48(%rsp) + movq %rbx,48 + 8(%rsp) + vmovdqa 48(%rsp),%xmm12 + vmovdqu 48(%rdi),%xmm4 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,64(%rsp) + movq %rbx,64 + 8(%rsp) + vmovdqa 64(%rsp),%xmm13 + vmovdqu 64(%rdi),%xmm5 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,80(%rsp) + movq %rbx,80 + 8(%rsp) + vmovdqa 80(%rsp),%xmm14 + vmovdqu 80(%rdi),%xmm6 + addq $0x60,%rdi + andq $0xf,%rdx + je .L_done_6_EmbgEptodyewbFa + +.L_steal_cipher_6_EmbgEptodyewbFa: + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,16(%rsp) + movq %rbx,24(%rsp) + vmovdqa64 %xmm14,%xmm15 + vmovdqa 16(%rsp),%xmm14 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vpxor %xmm13,%xmm5,%xmm5 + vpxor %xmm14,%xmm6,%xmm6 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vpxor %xmm0,%xmm3,%xmm3 + vpxor %xmm0,%xmm4,%xmm4 + vpxor %xmm0,%xmm5,%xmm5 + vpxor %xmm0,%xmm6,%xmm6 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 160(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 176(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 192(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 208(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 224(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vaesdeclast %xmm0,%xmm3,%xmm3 + vaesdeclast %xmm0,%xmm4,%xmm4 + vaesdeclast %xmm0,%xmm5,%xmm5 + vaesdeclast %xmm0,%xmm6,%xmm6 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vpxor %xmm13,%xmm5,%xmm5 + vpxor %xmm14,%xmm6,%xmm6 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + vmovdqu %xmm3,32(%rsi) + vmovdqu %xmm4,48(%rsi) + vmovdqu %xmm5,64(%rsi) + addq $0x60,%rsi + vmovdqa %xmm15,%xmm0 + vmovdqa %xmm6,%xmm8 + jmp .L_steal_cipher_EmbgEptodyewbFa + +.L_done_6_EmbgEptodyewbFa: + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vpxor %xmm13,%xmm5,%xmm5 + vpxor %xmm14,%xmm6,%xmm6 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vpxor %xmm0,%xmm3,%xmm3 + vpxor %xmm0,%xmm4,%xmm4 + vpxor %xmm0,%xmm5,%xmm5 + vpxor %xmm0,%xmm6,%xmm6 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 160(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 176(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 192(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 208(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vmovdqu 224(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vaesdeclast %xmm0,%xmm3,%xmm3 + vaesdeclast %xmm0,%xmm4,%xmm4 + vaesdeclast %xmm0,%xmm5,%xmm5 + vaesdeclast %xmm0,%xmm6,%xmm6 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vpxor %xmm13,%xmm5,%xmm5 + vpxor %xmm14,%xmm6,%xmm6 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + vmovdqu %xmm3,32(%rsi) + vmovdqu %xmm4,48(%rsi) + vmovdqu %xmm5,64(%rsi) + addq $0x60,%rsi + vmovdqa %xmm6,%xmm8 + jmp .L_done_EmbgEptodyewbFa + +.L_num_blocks_is_5_EmbgEptodyewbFa: + vmovdqa 0(%rsp),%xmm9 + movq 0(%rsp),%rax + movq 8(%rsp),%rbx + vmovdqu 0(%rdi),%xmm1 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,16(%rsp) + movq %rbx,16 + 8(%rsp) + vmovdqa 16(%rsp),%xmm10 + vmovdqu 16(%rdi),%xmm2 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,32(%rsp) + movq %rbx,32 + 8(%rsp) + vmovdqa 32(%rsp),%xmm11 + vmovdqu 32(%rdi),%xmm3 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,48(%rsp) + movq %rbx,48 + 8(%rsp) + vmovdqa 48(%rsp),%xmm12 + vmovdqu 48(%rdi),%xmm4 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,64(%rsp) + movq %rbx,64 + 8(%rsp) + vmovdqa 64(%rsp),%xmm13 + vmovdqu 64(%rdi),%xmm5 + addq $0x50,%rdi + andq $0xf,%rdx + je .L_done_5_EmbgEptodyewbFa + +.L_steal_cipher_5_EmbgEptodyewbFa: + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,16(%rsp) + movq %rbx,24(%rsp) + vmovdqa64 %xmm13,%xmm14 + vmovdqa 16(%rsp),%xmm13 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vpxor %xmm13,%xmm5,%xmm5 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vpxor %xmm0,%xmm3,%xmm3 + vpxor %xmm0,%xmm4,%xmm4 + vpxor %xmm0,%xmm5,%xmm5 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 160(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 176(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 192(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 208(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 224(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vaesdeclast %xmm0,%xmm3,%xmm3 + vaesdeclast %xmm0,%xmm4,%xmm4 + vaesdeclast %xmm0,%xmm5,%xmm5 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vpxor %xmm13,%xmm5,%xmm5 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + vmovdqu %xmm3,32(%rsi) + vmovdqu %xmm4,48(%rsi) + addq $0x50,%rsi + vmovdqa %xmm14,%xmm0 + vmovdqa %xmm5,%xmm8 + jmp .L_steal_cipher_EmbgEptodyewbFa + +.L_done_5_EmbgEptodyewbFa: + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vpxor %xmm13,%xmm5,%xmm5 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vpxor %xmm0,%xmm3,%xmm3 + vpxor %xmm0,%xmm4,%xmm4 + vpxor %xmm0,%xmm5,%xmm5 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 160(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 176(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 192(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 208(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vmovdqu 224(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vaesdeclast %xmm0,%xmm3,%xmm3 + vaesdeclast %xmm0,%xmm4,%xmm4 + vaesdeclast %xmm0,%xmm5,%xmm5 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vpxor %xmm13,%xmm5,%xmm5 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + vmovdqu %xmm3,32(%rsi) + vmovdqu %xmm4,48(%rsi) + addq $0x50,%rsi + vmovdqa %xmm5,%xmm8 + jmp .L_done_EmbgEptodyewbFa + +.L_num_blocks_is_4_EmbgEptodyewbFa: + vmovdqa 0(%rsp),%xmm9 + movq 0(%rsp),%rax + movq 8(%rsp),%rbx + vmovdqu 0(%rdi),%xmm1 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,16(%rsp) + movq %rbx,16 + 8(%rsp) + vmovdqa 16(%rsp),%xmm10 + vmovdqu 16(%rdi),%xmm2 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,32(%rsp) + movq %rbx,32 + 8(%rsp) + vmovdqa 32(%rsp),%xmm11 + vmovdqu 32(%rdi),%xmm3 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,48(%rsp) + movq %rbx,48 + 8(%rsp) + vmovdqa 48(%rsp),%xmm12 + vmovdqu 48(%rdi),%xmm4 + addq $0x40,%rdi + andq $0xf,%rdx + je .L_done_4_EmbgEptodyewbFa + +.L_steal_cipher_4_EmbgEptodyewbFa: + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,16(%rsp) + movq %rbx,24(%rsp) + vmovdqa64 %xmm12,%xmm13 + vmovdqa 16(%rsp),%xmm12 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vpxor %xmm0,%xmm3,%xmm3 + vpxor %xmm0,%xmm4,%xmm4 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 160(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 176(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 192(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 208(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 224(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vaesdeclast %xmm0,%xmm3,%xmm3 + vaesdeclast %xmm0,%xmm4,%xmm4 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + vmovdqu %xmm3,32(%rsi) + addq $0x40,%rsi + vmovdqa %xmm13,%xmm0 + vmovdqa %xmm4,%xmm8 + jmp .L_steal_cipher_EmbgEptodyewbFa + +.L_done_4_EmbgEptodyewbFa: + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vpxor %xmm0,%xmm3,%xmm3 + vpxor %xmm0,%xmm4,%xmm4 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 160(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 176(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 192(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 208(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vmovdqu 224(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vaesdeclast %xmm0,%xmm3,%xmm3 + vaesdeclast %xmm0,%xmm4,%xmm4 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vpxor %xmm12,%xmm4,%xmm4 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + vmovdqu %xmm3,32(%rsi) + addq $0x40,%rsi + vmovdqa %xmm4,%xmm8 + jmp .L_done_EmbgEptodyewbFa + +.L_num_blocks_is_3_EmbgEptodyewbFa: + vmovdqa 0(%rsp),%xmm9 + movq 0(%rsp),%rax + movq 8(%rsp),%rbx + vmovdqu 0(%rdi),%xmm1 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,16(%rsp) + movq %rbx,16 + 8(%rsp) + vmovdqa 16(%rsp),%xmm10 + vmovdqu 16(%rdi),%xmm2 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,32(%rsp) + movq %rbx,32 + 8(%rsp) + vmovdqa 32(%rsp),%xmm11 + vmovdqu 32(%rdi),%xmm3 + addq $0x30,%rdi + andq $0xf,%rdx + je .L_done_3_EmbgEptodyewbFa + +.L_steal_cipher_3_EmbgEptodyewbFa: + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,16(%rsp) + movq %rbx,24(%rsp) + vmovdqa64 %xmm11,%xmm12 + vmovdqa 16(%rsp),%xmm11 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 160(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 176(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 192(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 208(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 224(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vaesdeclast %xmm0,%xmm3,%xmm3 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + addq $0x30,%rsi + vmovdqa %xmm12,%xmm0 + vmovdqa %xmm3,%xmm8 + jmp .L_steal_cipher_EmbgEptodyewbFa + +.L_done_3_EmbgEptodyewbFa: + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 160(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 176(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 192(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 208(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vmovdqu 224(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vaesdeclast %xmm0,%xmm3,%xmm3 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vpxor %xmm11,%xmm3,%xmm3 + vmovdqu %xmm1,(%rsi) + vmovdqu %xmm2,16(%rsi) + addq $0x30,%rsi + vmovdqa %xmm3,%xmm8 + jmp .L_done_EmbgEptodyewbFa + +.L_num_blocks_is_2_EmbgEptodyewbFa: + vmovdqa 0(%rsp),%xmm9 + movq 0(%rsp),%rax + movq 8(%rsp),%rbx + vmovdqu 0(%rdi),%xmm1 + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,16(%rsp) + movq %rbx,16 + 8(%rsp) + vmovdqa 16(%rsp),%xmm10 + vmovdqu 16(%rdi),%xmm2 + addq $0x20,%rdi + andq $0xf,%rdx + je .L_done_2_EmbgEptodyewbFa + +.L_steal_cipher_2_EmbgEptodyewbFa: + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,16(%rsp) + movq %rbx,24(%rsp) + vmovdqa64 %xmm10,%xmm11 + vmovdqa 16(%rsp),%xmm10 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 160(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 176(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 192(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 208(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 224(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vmovdqu %xmm1,(%rsi) + addq $0x20,%rsi + vmovdqa %xmm11,%xmm0 + vmovdqa %xmm2,%xmm8 + jmp .L_steal_cipher_EmbgEptodyewbFa + +.L_done_2_EmbgEptodyewbFa: + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm0,%xmm2,%xmm2 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 160(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 176(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 192(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 208(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vaesdec %xmm0,%xmm2,%xmm2 + vmovdqu 224(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vaesdeclast %xmm0,%xmm2,%xmm2 + vpxor %xmm9,%xmm1,%xmm1 + vpxor %xmm10,%xmm2,%xmm2 + vmovdqu %xmm1,(%rsi) + addq $0x20,%rsi + vmovdqa %xmm2,%xmm8 + jmp .L_done_EmbgEptodyewbFa + +.L_num_blocks_is_1_EmbgEptodyewbFa: + vmovdqa 0(%rsp),%xmm9 + movq 0(%rsp),%rax + movq 8(%rsp),%rbx + vmovdqu 0(%rdi),%xmm1 + addq $0x10,%rdi + andq $0xf,%rdx + je .L_done_1_EmbgEptodyewbFa + +.L_steal_cipher_1_EmbgEptodyewbFa: + xorq %r11,%r11 + shlq $1,%rax + adcq %rbx,%rbx + cmovcq %r10,%r11 + xorq %r11,%rax + movq %rax,16(%rsp) + movq %rbx,24(%rsp) + vmovdqa64 %xmm9,%xmm10 + vmovdqa 16(%rsp),%xmm9 + vpxor %xmm9,%xmm1,%xmm1 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 160(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 176(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 192(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 208(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 224(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vpxor %xmm9,%xmm1,%xmm1 + addq $0x10,%rsi + vmovdqa %xmm10,%xmm0 + vmovdqa %xmm1,%xmm8 + jmp .L_steal_cipher_EmbgEptodyewbFa + +.L_done_1_EmbgEptodyewbFa: + vpxor %xmm9,%xmm1,%xmm1 + vmovdqu (%rcx),%xmm0 + vpxor %xmm0,%xmm1,%xmm1 + vmovdqu 16(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 32(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 48(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 64(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 80(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 96(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 112(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 128(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 144(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 160(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 176(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 192(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 208(%rcx),%xmm0 + vaesdec %xmm0,%xmm1,%xmm1 + vmovdqu 224(%rcx),%xmm0 + vaesdeclast %xmm0,%xmm1,%xmm1 + vpxor %xmm9,%xmm1,%xmm1 + addq $0x10,%rsi + vmovdqa %xmm1,%xmm8 + jmp .L_done_EmbgEptodyewbFa +.cfi_endproc +.section .rodata +.align 16 + +vpshufb_shf_table: +.quad 0x8786858483828100, 0x8f8e8d8c8b8a8988 +.quad 0x0706050403020100, 0x000e0d0c0b0a0908 + +mask1: +.quad 0x8080808080808080, 0x8080808080808080 + +const_dq3210: +.quad 0, 0, 1, 1, 2, 2, 3, 3 +const_dq5678: +.quad 8, 8, 7, 7, 6, 6, 5, 5 +const_dq7654: +.quad 4, 4, 5, 5, 6, 6, 7, 7 +const_dq1234: +.quad 4, 4, 3, 3, 2, 2, 1, 1 + +shufb_15_7: +.byte 15, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7, 0xff, 0xff +.byte 0xff, 0xff, 0xff, 0xff, 0xff + +.text + .section ".note.gnu.property", "a" + .p2align 3 + .long 1f - 0f + .long 4f - 1f + .long 5 +0: + # "GNU" encoded with .byte, since .asciz isn't supported + # on Solaris. + .byte 0x47 + .byte 0x4e + .byte 0x55 + .byte 0 +1: + .p2align 3 + .long 0xc0000002 + .long 3f - 2f +2: + .long 3 +3: + .p2align 3 +4: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/bsaes-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/bsaes-x86_64.s index ff533b2df32c40..9705994c043782 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/bsaes-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/bsaes-x86_64.s @@ -1571,6 +1571,7 @@ ossl_bsaes_ctr32_encrypt_blocks: .align 16 ossl_bsaes_xts_encrypt: .cfi_startproc +.byte 243,15,30,250 movq %rsp,%rax .Lxts_enc_prologue: pushq %rbp @@ -2046,6 +2047,7 @@ ossl_bsaes_xts_encrypt: .align 16 ossl_bsaes_xts_decrypt: .cfi_startproc +.byte 243,15,30,250 movq %rsp,%rax .Lxts_dec_prologue: pushq %rbp @@ -2541,6 +2543,7 @@ ossl_bsaes_xts_decrypt: .cfi_endproc .size ossl_bsaes_xts_decrypt,.-ossl_bsaes_xts_decrypt .type _bsaes_const,@object +.section .rodata .align 64 _bsaes_const: .LM0ISR: @@ -2592,9 +2595,9 @@ _bsaes_const: .quad 0x02060a0e03070b0f, 0x0004080c0105090d .L63: .quad 0x6363636363636363, 0x6363636363636363 -.byte 66,105,116,45,115,108,105,99,101,100,32,65,69,83,32,102,111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44,32,69,109,105,108,105,97,32,75,195,164,115,112,101,114,44,32,80,101,116,101,114,32,83,99,104,119,97,98,101,44,32,65,110,100,121,32,80,111,108,121,97,107,111,118,0 .align 64 .size _bsaes_const,.-_bsaes_const +.byte 66,105,116,45,115,108,105,99,101,100,32,65,69,83,32,102,111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44,32,69,109,105,108,105,97,32,75,195,164,115,112,101,114,44,32,80,101,116,101,114,32,83,99,104,119,97,98,101,44,32,65,110,100,121,32,80,111,108,121,97,107,111,118,0 .section ".note.gnu.property", "a" .p2align 3 .long 1f - 0f diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/vpaes-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/vpaes-x86_64.s index 7783c6a659f952..1c7816840a1fd4 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/vpaes-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/aes/vpaes-x86_64.s @@ -758,6 +758,7 @@ _vpaes_preheat: .type _vpaes_consts,@object +.section .rodata .align 64 _vpaes_consts: .Lk_inv: @@ -853,9 +854,9 @@ _vpaes_consts: .Lk_dsbo: .quad 0x1387EA537EF94000, 0xC7AA6DB9D4943E2D .quad 0x12D7560F93441D00, 0xCA4B8159D8C58E9C -.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105,111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105,118,101,114,115,105,116,121,41,0 .align 64 .size _vpaes_consts,.-_vpaes_consts +.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105,111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105,118,101,114,115,105,116,121,41,0 .section ".note.gnu.property", "a" .p2align 3 .long 1f - 0f diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-2k-avx512.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-2k-avx512.s new file mode 100644 index 00000000000000..5b3611aadb4a9c --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-2k-avx512.s @@ -0,0 +1,916 @@ + +.globl ossl_rsaz_avx512ifma_eligible +.type ossl_rsaz_avx512ifma_eligible,@function +.align 32 +ossl_rsaz_avx512ifma_eligible: + movl OPENSSL_ia32cap_P+8(%rip),%ecx + xorl %eax,%eax + andl $2149777408,%ecx + cmpl $2149777408,%ecx + cmovel %ecx,%eax + .byte 0xf3,0xc3 +.size ossl_rsaz_avx512ifma_eligible, .-ossl_rsaz_avx512ifma_eligible +.text + +.globl ossl_rsaz_amm52x20_x1_ifma256 +.type ossl_rsaz_amm52x20_x1_ifma256,@function +.align 32 +ossl_rsaz_amm52x20_x1_ifma256: +.cfi_startproc +.byte 243,15,30,250 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 +.Lossl_rsaz_amm52x20_x1_ifma256_body: + + + vpxord %ymm0,%ymm0,%ymm0 + vmovdqa64 %ymm0,%ymm3 + vmovdqa64 %ymm0,%ymm16 + vmovdqa64 %ymm0,%ymm17 + vmovdqa64 %ymm0,%ymm18 + vmovdqa64 %ymm0,%ymm19 + + xorl %r9d,%r9d + + movq %rdx,%r11 + movq $0xfffffffffffff,%rax + + + movl $5,%ebx + +.align 32 +.Lloop5: + movq 0(%r11),%r13 + + vpbroadcastq %r13,%ymm1 + movq 0(%rsi),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + movq %r12,%r10 + adcq $0,%r10 + + movq %r8,%r13 + imulq %r9,%r13 + andq %rax,%r13 + + vpbroadcastq %r13,%ymm2 + movq 0(%rcx),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + adcq %r12,%r10 + + shrq $52,%r9 + salq $12,%r10 + orq %r10,%r9 + + vpmadd52luq 0(%rsi),%ymm1,%ymm3 + vpmadd52luq 32(%rsi),%ymm1,%ymm16 + vpmadd52luq 64(%rsi),%ymm1,%ymm17 + vpmadd52luq 96(%rsi),%ymm1,%ymm18 + vpmadd52luq 128(%rsi),%ymm1,%ymm19 + + vpmadd52luq 0(%rcx),%ymm2,%ymm3 + vpmadd52luq 32(%rcx),%ymm2,%ymm16 + vpmadd52luq 64(%rcx),%ymm2,%ymm17 + vpmadd52luq 96(%rcx),%ymm2,%ymm18 + vpmadd52luq 128(%rcx),%ymm2,%ymm19 + + + valignq $1,%ymm3,%ymm16,%ymm3 + valignq $1,%ymm16,%ymm17,%ymm16 + valignq $1,%ymm17,%ymm18,%ymm17 + valignq $1,%ymm18,%ymm19,%ymm18 + valignq $1,%ymm19,%ymm0,%ymm19 + + vmovq %xmm3,%r13 + addq %r13,%r9 + + vpmadd52huq 0(%rsi),%ymm1,%ymm3 + vpmadd52huq 32(%rsi),%ymm1,%ymm16 + vpmadd52huq 64(%rsi),%ymm1,%ymm17 + vpmadd52huq 96(%rsi),%ymm1,%ymm18 + vpmadd52huq 128(%rsi),%ymm1,%ymm19 + + vpmadd52huq 0(%rcx),%ymm2,%ymm3 + vpmadd52huq 32(%rcx),%ymm2,%ymm16 + vpmadd52huq 64(%rcx),%ymm2,%ymm17 + vpmadd52huq 96(%rcx),%ymm2,%ymm18 + vpmadd52huq 128(%rcx),%ymm2,%ymm19 + movq 8(%r11),%r13 + + vpbroadcastq %r13,%ymm1 + movq 0(%rsi),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + movq %r12,%r10 + adcq $0,%r10 + + movq %r8,%r13 + imulq %r9,%r13 + andq %rax,%r13 + + vpbroadcastq %r13,%ymm2 + movq 0(%rcx),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + adcq %r12,%r10 + + shrq $52,%r9 + salq $12,%r10 + orq %r10,%r9 + + vpmadd52luq 0(%rsi),%ymm1,%ymm3 + vpmadd52luq 32(%rsi),%ymm1,%ymm16 + vpmadd52luq 64(%rsi),%ymm1,%ymm17 + vpmadd52luq 96(%rsi),%ymm1,%ymm18 + vpmadd52luq 128(%rsi),%ymm1,%ymm19 + + vpmadd52luq 0(%rcx),%ymm2,%ymm3 + vpmadd52luq 32(%rcx),%ymm2,%ymm16 + vpmadd52luq 64(%rcx),%ymm2,%ymm17 + vpmadd52luq 96(%rcx),%ymm2,%ymm18 + vpmadd52luq 128(%rcx),%ymm2,%ymm19 + + + valignq $1,%ymm3,%ymm16,%ymm3 + valignq $1,%ymm16,%ymm17,%ymm16 + valignq $1,%ymm17,%ymm18,%ymm17 + valignq $1,%ymm18,%ymm19,%ymm18 + valignq $1,%ymm19,%ymm0,%ymm19 + + vmovq %xmm3,%r13 + addq %r13,%r9 + + vpmadd52huq 0(%rsi),%ymm1,%ymm3 + vpmadd52huq 32(%rsi),%ymm1,%ymm16 + vpmadd52huq 64(%rsi),%ymm1,%ymm17 + vpmadd52huq 96(%rsi),%ymm1,%ymm18 + vpmadd52huq 128(%rsi),%ymm1,%ymm19 + + vpmadd52huq 0(%rcx),%ymm2,%ymm3 + vpmadd52huq 32(%rcx),%ymm2,%ymm16 + vpmadd52huq 64(%rcx),%ymm2,%ymm17 + vpmadd52huq 96(%rcx),%ymm2,%ymm18 + vpmadd52huq 128(%rcx),%ymm2,%ymm19 + movq 16(%r11),%r13 + + vpbroadcastq %r13,%ymm1 + movq 0(%rsi),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + movq %r12,%r10 + adcq $0,%r10 + + movq %r8,%r13 + imulq %r9,%r13 + andq %rax,%r13 + + vpbroadcastq %r13,%ymm2 + movq 0(%rcx),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + adcq %r12,%r10 + + shrq $52,%r9 + salq $12,%r10 + orq %r10,%r9 + + vpmadd52luq 0(%rsi),%ymm1,%ymm3 + vpmadd52luq 32(%rsi),%ymm1,%ymm16 + vpmadd52luq 64(%rsi),%ymm1,%ymm17 + vpmadd52luq 96(%rsi),%ymm1,%ymm18 + vpmadd52luq 128(%rsi),%ymm1,%ymm19 + + vpmadd52luq 0(%rcx),%ymm2,%ymm3 + vpmadd52luq 32(%rcx),%ymm2,%ymm16 + vpmadd52luq 64(%rcx),%ymm2,%ymm17 + vpmadd52luq 96(%rcx),%ymm2,%ymm18 + vpmadd52luq 128(%rcx),%ymm2,%ymm19 + + + valignq $1,%ymm3,%ymm16,%ymm3 + valignq $1,%ymm16,%ymm17,%ymm16 + valignq $1,%ymm17,%ymm18,%ymm17 + valignq $1,%ymm18,%ymm19,%ymm18 + valignq $1,%ymm19,%ymm0,%ymm19 + + vmovq %xmm3,%r13 + addq %r13,%r9 + + vpmadd52huq 0(%rsi),%ymm1,%ymm3 + vpmadd52huq 32(%rsi),%ymm1,%ymm16 + vpmadd52huq 64(%rsi),%ymm1,%ymm17 + vpmadd52huq 96(%rsi),%ymm1,%ymm18 + vpmadd52huq 128(%rsi),%ymm1,%ymm19 + + vpmadd52huq 0(%rcx),%ymm2,%ymm3 + vpmadd52huq 32(%rcx),%ymm2,%ymm16 + vpmadd52huq 64(%rcx),%ymm2,%ymm17 + vpmadd52huq 96(%rcx),%ymm2,%ymm18 + vpmadd52huq 128(%rcx),%ymm2,%ymm19 + movq 24(%r11),%r13 + + vpbroadcastq %r13,%ymm1 + movq 0(%rsi),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + movq %r12,%r10 + adcq $0,%r10 + + movq %r8,%r13 + imulq %r9,%r13 + andq %rax,%r13 + + vpbroadcastq %r13,%ymm2 + movq 0(%rcx),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + adcq %r12,%r10 + + shrq $52,%r9 + salq $12,%r10 + orq %r10,%r9 + + vpmadd52luq 0(%rsi),%ymm1,%ymm3 + vpmadd52luq 32(%rsi),%ymm1,%ymm16 + vpmadd52luq 64(%rsi),%ymm1,%ymm17 + vpmadd52luq 96(%rsi),%ymm1,%ymm18 + vpmadd52luq 128(%rsi),%ymm1,%ymm19 + + vpmadd52luq 0(%rcx),%ymm2,%ymm3 + vpmadd52luq 32(%rcx),%ymm2,%ymm16 + vpmadd52luq 64(%rcx),%ymm2,%ymm17 + vpmadd52luq 96(%rcx),%ymm2,%ymm18 + vpmadd52luq 128(%rcx),%ymm2,%ymm19 + + + valignq $1,%ymm3,%ymm16,%ymm3 + valignq $1,%ymm16,%ymm17,%ymm16 + valignq $1,%ymm17,%ymm18,%ymm17 + valignq $1,%ymm18,%ymm19,%ymm18 + valignq $1,%ymm19,%ymm0,%ymm19 + + vmovq %xmm3,%r13 + addq %r13,%r9 + + vpmadd52huq 0(%rsi),%ymm1,%ymm3 + vpmadd52huq 32(%rsi),%ymm1,%ymm16 + vpmadd52huq 64(%rsi),%ymm1,%ymm17 + vpmadd52huq 96(%rsi),%ymm1,%ymm18 + vpmadd52huq 128(%rsi),%ymm1,%ymm19 + + vpmadd52huq 0(%rcx),%ymm2,%ymm3 + vpmadd52huq 32(%rcx),%ymm2,%ymm16 + vpmadd52huq 64(%rcx),%ymm2,%ymm17 + vpmadd52huq 96(%rcx),%ymm2,%ymm18 + vpmadd52huq 128(%rcx),%ymm2,%ymm19 + leaq 32(%r11),%r11 + decl %ebx + jne .Lloop5 + + vpbroadcastq %r9,%ymm0 + vpblendd $3,%ymm0,%ymm3,%ymm3 + + + + vpsrlq $52,%ymm3,%ymm0 + vpsrlq $52,%ymm16,%ymm1 + vpsrlq $52,%ymm17,%ymm2 + vpsrlq $52,%ymm18,%ymm25 + vpsrlq $52,%ymm19,%ymm26 + + + valignq $3,%ymm25,%ymm26,%ymm26 + valignq $3,%ymm2,%ymm25,%ymm25 + valignq $3,%ymm1,%ymm2,%ymm2 + valignq $3,%ymm0,%ymm1,%ymm1 + valignq $3,.Lzeros(%rip),%ymm0,%ymm0 + + + vpandq .Lmask52x4(%rip),%ymm3,%ymm3 + vpandq .Lmask52x4(%rip),%ymm16,%ymm16 + vpandq .Lmask52x4(%rip),%ymm17,%ymm17 + vpandq .Lmask52x4(%rip),%ymm18,%ymm18 + vpandq .Lmask52x4(%rip),%ymm19,%ymm19 + + + vpaddq %ymm0,%ymm3,%ymm3 + vpaddq %ymm1,%ymm16,%ymm16 + vpaddq %ymm2,%ymm17,%ymm17 + vpaddq %ymm25,%ymm18,%ymm18 + vpaddq %ymm26,%ymm19,%ymm19 + + + + vpcmpuq $6,.Lmask52x4(%rip),%ymm3,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm16,%k2 + vpcmpuq $6,.Lmask52x4(%rip),%ymm17,%k3 + vpcmpuq $6,.Lmask52x4(%rip),%ymm18,%k4 + vpcmpuq $6,.Lmask52x4(%rip),%ymm19,%k5 + kmovb %k1,%r14d + kmovb %k2,%r13d + kmovb %k3,%r12d + kmovb %k4,%r11d + kmovb %k5,%r10d + + + vpcmpuq $0,.Lmask52x4(%rip),%ymm3,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm16,%k2 + vpcmpuq $0,.Lmask52x4(%rip),%ymm17,%k3 + vpcmpuq $0,.Lmask52x4(%rip),%ymm18,%k4 + vpcmpuq $0,.Lmask52x4(%rip),%ymm19,%k5 + kmovb %k1,%r9d + kmovb %k2,%r8d + kmovb %k3,%ebx + kmovb %k4,%ecx + kmovb %k5,%edx + + + + shlb $4,%r13b + orb %r13b,%r14b + shlb $4,%r11b + orb %r11b,%r12b + + addb %r14b,%r14b + adcb %r12b,%r12b + adcb %r10b,%r10b + + shlb $4,%r8b + orb %r8b,%r9b + shlb $4,%cl + orb %cl,%bl + + addb %r9b,%r14b + adcb %bl,%r12b + adcb %dl,%r10b + + xorb %r9b,%r14b + xorb %bl,%r12b + xorb %dl,%r10b + + kmovb %r14d,%k1 + shrb $4,%r14b + kmovb %r14d,%k2 + kmovb %r12d,%k3 + shrb $4,%r12b + kmovb %r12d,%k4 + kmovb %r10d,%k5 + + + vpsubq .Lmask52x4(%rip),%ymm3,%ymm3{%k1} + vpsubq .Lmask52x4(%rip),%ymm16,%ymm16{%k2} + vpsubq .Lmask52x4(%rip),%ymm17,%ymm17{%k3} + vpsubq .Lmask52x4(%rip),%ymm18,%ymm18{%k4} + vpsubq .Lmask52x4(%rip),%ymm19,%ymm19{%k5} + + vpandq .Lmask52x4(%rip),%ymm3,%ymm3 + vpandq .Lmask52x4(%rip),%ymm16,%ymm16 + vpandq .Lmask52x4(%rip),%ymm17,%ymm17 + vpandq .Lmask52x4(%rip),%ymm18,%ymm18 + vpandq .Lmask52x4(%rip),%ymm19,%ymm19 + + vmovdqu64 %ymm3,0(%rdi) + vmovdqu64 %ymm16,32(%rdi) + vmovdqu64 %ymm17,64(%rdi) + vmovdqu64 %ymm18,96(%rdi) + vmovdqu64 %ymm19,128(%rdi) + + vzeroupper + movq 0(%rsp),%r15 +.cfi_restore %r15 + movq 8(%rsp),%r14 +.cfi_restore %r14 + movq 16(%rsp),%r13 +.cfi_restore %r13 + movq 24(%rsp),%r12 +.cfi_restore %r12 + movq 32(%rsp),%rbp +.cfi_restore %rbp + movq 40(%rsp),%rbx +.cfi_restore %rbx + leaq 48(%rsp),%rsp +.cfi_adjust_cfa_offset -48 +.Lossl_rsaz_amm52x20_x1_ifma256_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ossl_rsaz_amm52x20_x1_ifma256, .-ossl_rsaz_amm52x20_x1_ifma256 +.section .rodata +.align 32 +.Lmask52x4: +.quad 0xfffffffffffff +.quad 0xfffffffffffff +.quad 0xfffffffffffff +.quad 0xfffffffffffff +.text + +.globl ossl_rsaz_amm52x20_x2_ifma256 +.type ossl_rsaz_amm52x20_x2_ifma256,@function +.align 32 +ossl_rsaz_amm52x20_x2_ifma256: +.cfi_startproc +.byte 243,15,30,250 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 +.Lossl_rsaz_amm52x20_x2_ifma256_body: + + + vpxord %ymm0,%ymm0,%ymm0 + vmovdqa64 %ymm0,%ymm3 + vmovdqa64 %ymm0,%ymm16 + vmovdqa64 %ymm0,%ymm17 + vmovdqa64 %ymm0,%ymm18 + vmovdqa64 %ymm0,%ymm19 + vmovdqa64 %ymm0,%ymm4 + vmovdqa64 %ymm0,%ymm20 + vmovdqa64 %ymm0,%ymm21 + vmovdqa64 %ymm0,%ymm22 + vmovdqa64 %ymm0,%ymm23 + + xorl %r9d,%r9d + xorl %r15d,%r15d + + movq %rdx,%r11 + movq $0xfffffffffffff,%rax + + movl $20,%ebx + +.align 32 +.Lloop20: + movq 0(%r11),%r13 + + vpbroadcastq %r13,%ymm1 + movq 0(%rsi),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + movq %r12,%r10 + adcq $0,%r10 + + movq (%r8),%r13 + imulq %r9,%r13 + andq %rax,%r13 + + vpbroadcastq %r13,%ymm2 + movq 0(%rcx),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + adcq %r12,%r10 + + shrq $52,%r9 + salq $12,%r10 + orq %r10,%r9 + + vpmadd52luq 0(%rsi),%ymm1,%ymm3 + vpmadd52luq 32(%rsi),%ymm1,%ymm16 + vpmadd52luq 64(%rsi),%ymm1,%ymm17 + vpmadd52luq 96(%rsi),%ymm1,%ymm18 + vpmadd52luq 128(%rsi),%ymm1,%ymm19 + + vpmadd52luq 0(%rcx),%ymm2,%ymm3 + vpmadd52luq 32(%rcx),%ymm2,%ymm16 + vpmadd52luq 64(%rcx),%ymm2,%ymm17 + vpmadd52luq 96(%rcx),%ymm2,%ymm18 + vpmadd52luq 128(%rcx),%ymm2,%ymm19 + + + valignq $1,%ymm3,%ymm16,%ymm3 + valignq $1,%ymm16,%ymm17,%ymm16 + valignq $1,%ymm17,%ymm18,%ymm17 + valignq $1,%ymm18,%ymm19,%ymm18 + valignq $1,%ymm19,%ymm0,%ymm19 + + vmovq %xmm3,%r13 + addq %r13,%r9 + + vpmadd52huq 0(%rsi),%ymm1,%ymm3 + vpmadd52huq 32(%rsi),%ymm1,%ymm16 + vpmadd52huq 64(%rsi),%ymm1,%ymm17 + vpmadd52huq 96(%rsi),%ymm1,%ymm18 + vpmadd52huq 128(%rsi),%ymm1,%ymm19 + + vpmadd52huq 0(%rcx),%ymm2,%ymm3 + vpmadd52huq 32(%rcx),%ymm2,%ymm16 + vpmadd52huq 64(%rcx),%ymm2,%ymm17 + vpmadd52huq 96(%rcx),%ymm2,%ymm18 + vpmadd52huq 128(%rcx),%ymm2,%ymm19 + movq 160(%r11),%r13 + + vpbroadcastq %r13,%ymm1 + movq 160(%rsi),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r15 + movq %r12,%r10 + adcq $0,%r10 + + movq 8(%r8),%r13 + imulq %r15,%r13 + andq %rax,%r13 + + vpbroadcastq %r13,%ymm2 + movq 160(%rcx),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r15 + adcq %r12,%r10 + + shrq $52,%r15 + salq $12,%r10 + orq %r10,%r15 + + vpmadd52luq 160(%rsi),%ymm1,%ymm4 + vpmadd52luq 192(%rsi),%ymm1,%ymm20 + vpmadd52luq 224(%rsi),%ymm1,%ymm21 + vpmadd52luq 256(%rsi),%ymm1,%ymm22 + vpmadd52luq 288(%rsi),%ymm1,%ymm23 + + vpmadd52luq 160(%rcx),%ymm2,%ymm4 + vpmadd52luq 192(%rcx),%ymm2,%ymm20 + vpmadd52luq 224(%rcx),%ymm2,%ymm21 + vpmadd52luq 256(%rcx),%ymm2,%ymm22 + vpmadd52luq 288(%rcx),%ymm2,%ymm23 + + + valignq $1,%ymm4,%ymm20,%ymm4 + valignq $1,%ymm20,%ymm21,%ymm20 + valignq $1,%ymm21,%ymm22,%ymm21 + valignq $1,%ymm22,%ymm23,%ymm22 + valignq $1,%ymm23,%ymm0,%ymm23 + + vmovq %xmm4,%r13 + addq %r13,%r15 + + vpmadd52huq 160(%rsi),%ymm1,%ymm4 + vpmadd52huq 192(%rsi),%ymm1,%ymm20 + vpmadd52huq 224(%rsi),%ymm1,%ymm21 + vpmadd52huq 256(%rsi),%ymm1,%ymm22 + vpmadd52huq 288(%rsi),%ymm1,%ymm23 + + vpmadd52huq 160(%rcx),%ymm2,%ymm4 + vpmadd52huq 192(%rcx),%ymm2,%ymm20 + vpmadd52huq 224(%rcx),%ymm2,%ymm21 + vpmadd52huq 256(%rcx),%ymm2,%ymm22 + vpmadd52huq 288(%rcx),%ymm2,%ymm23 + leaq 8(%r11),%r11 + decl %ebx + jne .Lloop20 + + vpbroadcastq %r9,%ymm0 + vpblendd $3,%ymm0,%ymm3,%ymm3 + + + + vpsrlq $52,%ymm3,%ymm0 + vpsrlq $52,%ymm16,%ymm1 + vpsrlq $52,%ymm17,%ymm2 + vpsrlq $52,%ymm18,%ymm25 + vpsrlq $52,%ymm19,%ymm26 + + + valignq $3,%ymm25,%ymm26,%ymm26 + valignq $3,%ymm2,%ymm25,%ymm25 + valignq $3,%ymm1,%ymm2,%ymm2 + valignq $3,%ymm0,%ymm1,%ymm1 + valignq $3,.Lzeros(%rip),%ymm0,%ymm0 + + + vpandq .Lmask52x4(%rip),%ymm3,%ymm3 + vpandq .Lmask52x4(%rip),%ymm16,%ymm16 + vpandq .Lmask52x4(%rip),%ymm17,%ymm17 + vpandq .Lmask52x4(%rip),%ymm18,%ymm18 + vpandq .Lmask52x4(%rip),%ymm19,%ymm19 + + + vpaddq %ymm0,%ymm3,%ymm3 + vpaddq %ymm1,%ymm16,%ymm16 + vpaddq %ymm2,%ymm17,%ymm17 + vpaddq %ymm25,%ymm18,%ymm18 + vpaddq %ymm26,%ymm19,%ymm19 + + + + vpcmpuq $6,.Lmask52x4(%rip),%ymm3,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm16,%k2 + vpcmpuq $6,.Lmask52x4(%rip),%ymm17,%k3 + vpcmpuq $6,.Lmask52x4(%rip),%ymm18,%k4 + vpcmpuq $6,.Lmask52x4(%rip),%ymm19,%k5 + kmovb %k1,%r14d + kmovb %k2,%r13d + kmovb %k3,%r12d + kmovb %k4,%r11d + kmovb %k5,%r10d + + + vpcmpuq $0,.Lmask52x4(%rip),%ymm3,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm16,%k2 + vpcmpuq $0,.Lmask52x4(%rip),%ymm17,%k3 + vpcmpuq $0,.Lmask52x4(%rip),%ymm18,%k4 + vpcmpuq $0,.Lmask52x4(%rip),%ymm19,%k5 + kmovb %k1,%r9d + kmovb %k2,%r8d + kmovb %k3,%ebx + kmovb %k4,%ecx + kmovb %k5,%edx + + + + shlb $4,%r13b + orb %r13b,%r14b + shlb $4,%r11b + orb %r11b,%r12b + + addb %r14b,%r14b + adcb %r12b,%r12b + adcb %r10b,%r10b + + shlb $4,%r8b + orb %r8b,%r9b + shlb $4,%cl + orb %cl,%bl + + addb %r9b,%r14b + adcb %bl,%r12b + adcb %dl,%r10b + + xorb %r9b,%r14b + xorb %bl,%r12b + xorb %dl,%r10b + + kmovb %r14d,%k1 + shrb $4,%r14b + kmovb %r14d,%k2 + kmovb %r12d,%k3 + shrb $4,%r12b + kmovb %r12d,%k4 + kmovb %r10d,%k5 + + + vpsubq .Lmask52x4(%rip),%ymm3,%ymm3{%k1} + vpsubq .Lmask52x4(%rip),%ymm16,%ymm16{%k2} + vpsubq .Lmask52x4(%rip),%ymm17,%ymm17{%k3} + vpsubq .Lmask52x4(%rip),%ymm18,%ymm18{%k4} + vpsubq .Lmask52x4(%rip),%ymm19,%ymm19{%k5} + + vpandq .Lmask52x4(%rip),%ymm3,%ymm3 + vpandq .Lmask52x4(%rip),%ymm16,%ymm16 + vpandq .Lmask52x4(%rip),%ymm17,%ymm17 + vpandq .Lmask52x4(%rip),%ymm18,%ymm18 + vpandq .Lmask52x4(%rip),%ymm19,%ymm19 + + vpbroadcastq %r15,%ymm0 + vpblendd $3,%ymm0,%ymm4,%ymm4 + + + + vpsrlq $52,%ymm4,%ymm0 + vpsrlq $52,%ymm20,%ymm1 + vpsrlq $52,%ymm21,%ymm2 + vpsrlq $52,%ymm22,%ymm25 + vpsrlq $52,%ymm23,%ymm26 + + + valignq $3,%ymm25,%ymm26,%ymm26 + valignq $3,%ymm2,%ymm25,%ymm25 + valignq $3,%ymm1,%ymm2,%ymm2 + valignq $3,%ymm0,%ymm1,%ymm1 + valignq $3,.Lzeros(%rip),%ymm0,%ymm0 + + + vpandq .Lmask52x4(%rip),%ymm4,%ymm4 + vpandq .Lmask52x4(%rip),%ymm20,%ymm20 + vpandq .Lmask52x4(%rip),%ymm21,%ymm21 + vpandq .Lmask52x4(%rip),%ymm22,%ymm22 + vpandq .Lmask52x4(%rip),%ymm23,%ymm23 + + + vpaddq %ymm0,%ymm4,%ymm4 + vpaddq %ymm1,%ymm20,%ymm20 + vpaddq %ymm2,%ymm21,%ymm21 + vpaddq %ymm25,%ymm22,%ymm22 + vpaddq %ymm26,%ymm23,%ymm23 + + + + vpcmpuq $6,.Lmask52x4(%rip),%ymm4,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm20,%k2 + vpcmpuq $6,.Lmask52x4(%rip),%ymm21,%k3 + vpcmpuq $6,.Lmask52x4(%rip),%ymm22,%k4 + vpcmpuq $6,.Lmask52x4(%rip),%ymm23,%k5 + kmovb %k1,%r14d + kmovb %k2,%r13d + kmovb %k3,%r12d + kmovb %k4,%r11d + kmovb %k5,%r10d + + + vpcmpuq $0,.Lmask52x4(%rip),%ymm4,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm20,%k2 + vpcmpuq $0,.Lmask52x4(%rip),%ymm21,%k3 + vpcmpuq $0,.Lmask52x4(%rip),%ymm22,%k4 + vpcmpuq $0,.Lmask52x4(%rip),%ymm23,%k5 + kmovb %k1,%r9d + kmovb %k2,%r8d + kmovb %k3,%ebx + kmovb %k4,%ecx + kmovb %k5,%edx + + + + shlb $4,%r13b + orb %r13b,%r14b + shlb $4,%r11b + orb %r11b,%r12b + + addb %r14b,%r14b + adcb %r12b,%r12b + adcb %r10b,%r10b + + shlb $4,%r8b + orb %r8b,%r9b + shlb $4,%cl + orb %cl,%bl + + addb %r9b,%r14b + adcb %bl,%r12b + adcb %dl,%r10b + + xorb %r9b,%r14b + xorb %bl,%r12b + xorb %dl,%r10b + + kmovb %r14d,%k1 + shrb $4,%r14b + kmovb %r14d,%k2 + kmovb %r12d,%k3 + shrb $4,%r12b + kmovb %r12d,%k4 + kmovb %r10d,%k5 + + + vpsubq .Lmask52x4(%rip),%ymm4,%ymm4{%k1} + vpsubq .Lmask52x4(%rip),%ymm20,%ymm20{%k2} + vpsubq .Lmask52x4(%rip),%ymm21,%ymm21{%k3} + vpsubq .Lmask52x4(%rip),%ymm22,%ymm22{%k4} + vpsubq .Lmask52x4(%rip),%ymm23,%ymm23{%k5} + + vpandq .Lmask52x4(%rip),%ymm4,%ymm4 + vpandq .Lmask52x4(%rip),%ymm20,%ymm20 + vpandq .Lmask52x4(%rip),%ymm21,%ymm21 + vpandq .Lmask52x4(%rip),%ymm22,%ymm22 + vpandq .Lmask52x4(%rip),%ymm23,%ymm23 + + vmovdqu64 %ymm3,0(%rdi) + vmovdqu64 %ymm16,32(%rdi) + vmovdqu64 %ymm17,64(%rdi) + vmovdqu64 %ymm18,96(%rdi) + vmovdqu64 %ymm19,128(%rdi) + + vmovdqu64 %ymm4,160(%rdi) + vmovdqu64 %ymm20,192(%rdi) + vmovdqu64 %ymm21,224(%rdi) + vmovdqu64 %ymm22,256(%rdi) + vmovdqu64 %ymm23,288(%rdi) + + vzeroupper + movq 0(%rsp),%r15 +.cfi_restore %r15 + movq 8(%rsp),%r14 +.cfi_restore %r14 + movq 16(%rsp),%r13 +.cfi_restore %r13 + movq 24(%rsp),%r12 +.cfi_restore %r12 + movq 32(%rsp),%rbp +.cfi_restore %rbp + movq 40(%rsp),%rbx +.cfi_restore %rbx + leaq 48(%rsp),%rsp +.cfi_adjust_cfa_offset -48 +.Lossl_rsaz_amm52x20_x2_ifma256_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ossl_rsaz_amm52x20_x2_ifma256, .-ossl_rsaz_amm52x20_x2_ifma256 +.text + +.align 32 +.globl ossl_extract_multiplier_2x20_win5 +.type ossl_extract_multiplier_2x20_win5,@function +ossl_extract_multiplier_2x20_win5: +.cfi_startproc +.byte 243,15,30,250 + vmovdqa64 .Lones(%rip),%ymm24 + vpbroadcastq %rdx,%ymm22 + vpbroadcastq %rcx,%ymm23 + leaq 10240(%rsi),%rax + + + vpxor %xmm0,%xmm0,%xmm0 + vmovdqa64 %ymm0,%ymm21 + vmovdqa64 %ymm0,%ymm1 + vmovdqa64 %ymm0,%ymm2 + vmovdqa64 %ymm0,%ymm3 + vmovdqa64 %ymm0,%ymm4 + vmovdqa64 %ymm0,%ymm5 + vmovdqa64 %ymm0,%ymm16 + vmovdqa64 %ymm0,%ymm17 + vmovdqa64 %ymm0,%ymm18 + vmovdqa64 %ymm0,%ymm19 + +.align 32 +.Lloop: + vpcmpq $0,%ymm21,%ymm22,%k1 + vpcmpq $0,%ymm21,%ymm23,%k2 + vmovdqu64 0(%rsi),%ymm20 + vpblendmq %ymm20,%ymm0,%ymm0{%k1} + vmovdqu64 32(%rsi),%ymm20 + vpblendmq %ymm20,%ymm1,%ymm1{%k1} + vmovdqu64 64(%rsi),%ymm20 + vpblendmq %ymm20,%ymm2,%ymm2{%k1} + vmovdqu64 96(%rsi),%ymm20 + vpblendmq %ymm20,%ymm3,%ymm3{%k1} + vmovdqu64 128(%rsi),%ymm20 + vpblendmq %ymm20,%ymm4,%ymm4{%k1} + vmovdqu64 160(%rsi),%ymm20 + vpblendmq %ymm20,%ymm5,%ymm5{%k2} + vmovdqu64 192(%rsi),%ymm20 + vpblendmq %ymm20,%ymm16,%ymm16{%k2} + vmovdqu64 224(%rsi),%ymm20 + vpblendmq %ymm20,%ymm17,%ymm17{%k2} + vmovdqu64 256(%rsi),%ymm20 + vpblendmq %ymm20,%ymm18,%ymm18{%k2} + vmovdqu64 288(%rsi),%ymm20 + vpblendmq %ymm20,%ymm19,%ymm19{%k2} + vpaddq %ymm24,%ymm21,%ymm21 + addq $320,%rsi + cmpq %rsi,%rax + jne .Lloop + vmovdqu64 %ymm0,0(%rdi) + vmovdqu64 %ymm1,32(%rdi) + vmovdqu64 %ymm2,64(%rdi) + vmovdqu64 %ymm3,96(%rdi) + vmovdqu64 %ymm4,128(%rdi) + vmovdqu64 %ymm5,160(%rdi) + vmovdqu64 %ymm16,192(%rdi) + vmovdqu64 %ymm17,224(%rdi) + vmovdqu64 %ymm18,256(%rdi) + vmovdqu64 %ymm19,288(%rdi) + .byte 0xf3,0xc3 +.cfi_endproc +.size ossl_extract_multiplier_2x20_win5, .-ossl_extract_multiplier_2x20_win5 +.section .rodata +.align 32 +.Lones: +.quad 1,1,1,1 +.Lzeros: +.quad 0,0,0,0 + .section ".note.gnu.property", "a" + .p2align 3 + .long 1f - 0f + .long 4f - 1f + .long 5 +0: + # "GNU" encoded with .byte, since .asciz isn't supported + # on Solaris. + .byte 0x47 + .byte 0x4e + .byte 0x55 + .byte 0 +1: + .p2align 3 + .long 0xc0000002 + .long 3f - 2f +2: + .long 3 +3: + .p2align 3 +4: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-2k-avxifma.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-2k-avxifma.s new file mode 100644 index 00000000000000..4d776af5095e35 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-2k-avxifma.s @@ -0,0 +1,40 @@ +.text + +.globl ossl_rsaz_avxifma_eligible +.type ossl_rsaz_avxifma_eligible,@function +ossl_rsaz_avxifma_eligible: + xorl %eax,%eax + .byte 0xf3,0xc3 +.size ossl_rsaz_avxifma_eligible, .-ossl_rsaz_avxifma_eligible + +.globl ossl_rsaz_amm52x20_x1_avxifma256 +.globl ossl_rsaz_amm52x20_x2_avxifma256 +.globl ossl_extract_multiplier_2x20_win5_avx +.type ossl_rsaz_amm52x20_x1_avxifma256,@function +ossl_rsaz_amm52x20_x1_avxifma256: +ossl_rsaz_amm52x20_x2_avxifma256: +ossl_extract_multiplier_2x20_win5_avx: +.byte 0x0f,0x0b + .byte 0xf3,0xc3 +.size ossl_rsaz_amm52x20_x1_avxifma256, .-ossl_rsaz_amm52x20_x1_avxifma256 + .section ".note.gnu.property", "a" + .p2align 3 + .long 1f - 0f + .long 4f - 1f + .long 5 +0: + # "GNU" encoded with .byte, since .asciz isn't supported + # on Solaris. + .byte 0x47 + .byte 0x4e + .byte 0x55 + .byte 0 +1: + .p2align 3 + .long 0xc0000002 + .long 3f - 2f +2: + .long 3 +3: + .p2align 3 +4: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-3k-avx512.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-3k-avx512.s new file mode 100644 index 00000000000000..022574148e8f23 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-3k-avx512.s @@ -0,0 +1,1331 @@ +.text + +.globl ossl_rsaz_amm52x30_x1_ifma256 +.type ossl_rsaz_amm52x30_x1_ifma256,@function +.align 32 +ossl_rsaz_amm52x30_x1_ifma256: +.cfi_startproc +.byte 243,15,30,250 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + + vpxord %ymm0,%ymm0,%ymm0 + vmovdqa64 %ymm0,%ymm3 + vmovdqa64 %ymm0,%ymm4 + vmovdqa64 %ymm0,%ymm5 + vmovdqa64 %ymm0,%ymm6 + vmovdqa64 %ymm0,%ymm7 + vmovdqa64 %ymm0,%ymm8 + vmovdqa64 %ymm0,%ymm9 + vmovdqa64 %ymm0,%ymm10 + + xorl %r9d,%r9d + + movq %rdx,%r11 + movq $0xfffffffffffff,%rax + + + movl $7,%ebx + +.align 32 +.Lloop7: + movq 0(%r11),%r13 + + vpbroadcastq %r13,%ymm1 + movq 0(%rsi),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + movq %r12,%r10 + adcq $0,%r10 + + movq %r8,%r13 + imulq %r9,%r13 + andq %rax,%r13 + + vpbroadcastq %r13,%ymm2 + movq 0(%rcx),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + adcq %r12,%r10 + + shrq $52,%r9 + salq $12,%r10 + orq %r10,%r9 + + vpmadd52luq 0(%rsi),%ymm1,%ymm3 + vpmadd52luq 32(%rsi),%ymm1,%ymm4 + vpmadd52luq 64(%rsi),%ymm1,%ymm5 + vpmadd52luq 96(%rsi),%ymm1,%ymm6 + vpmadd52luq 128(%rsi),%ymm1,%ymm7 + vpmadd52luq 160(%rsi),%ymm1,%ymm8 + vpmadd52luq 192(%rsi),%ymm1,%ymm9 + vpmadd52luq 224(%rsi),%ymm1,%ymm10 + + vpmadd52luq 0(%rcx),%ymm2,%ymm3 + vpmadd52luq 32(%rcx),%ymm2,%ymm4 + vpmadd52luq 64(%rcx),%ymm2,%ymm5 + vpmadd52luq 96(%rcx),%ymm2,%ymm6 + vpmadd52luq 128(%rcx),%ymm2,%ymm7 + vpmadd52luq 160(%rcx),%ymm2,%ymm8 + vpmadd52luq 192(%rcx),%ymm2,%ymm9 + vpmadd52luq 224(%rcx),%ymm2,%ymm10 + + + valignq $1,%ymm3,%ymm4,%ymm3 + valignq $1,%ymm4,%ymm5,%ymm4 + valignq $1,%ymm5,%ymm6,%ymm5 + valignq $1,%ymm6,%ymm7,%ymm6 + valignq $1,%ymm7,%ymm8,%ymm7 + valignq $1,%ymm8,%ymm9,%ymm8 + valignq $1,%ymm9,%ymm10,%ymm9 + valignq $1,%ymm10,%ymm0,%ymm10 + + vmovq %xmm3,%r13 + addq %r13,%r9 + + vpmadd52huq 0(%rsi),%ymm1,%ymm3 + vpmadd52huq 32(%rsi),%ymm1,%ymm4 + vpmadd52huq 64(%rsi),%ymm1,%ymm5 + vpmadd52huq 96(%rsi),%ymm1,%ymm6 + vpmadd52huq 128(%rsi),%ymm1,%ymm7 + vpmadd52huq 160(%rsi),%ymm1,%ymm8 + vpmadd52huq 192(%rsi),%ymm1,%ymm9 + vpmadd52huq 224(%rsi),%ymm1,%ymm10 + + vpmadd52huq 0(%rcx),%ymm2,%ymm3 + vpmadd52huq 32(%rcx),%ymm2,%ymm4 + vpmadd52huq 64(%rcx),%ymm2,%ymm5 + vpmadd52huq 96(%rcx),%ymm2,%ymm6 + vpmadd52huq 128(%rcx),%ymm2,%ymm7 + vpmadd52huq 160(%rcx),%ymm2,%ymm8 + vpmadd52huq 192(%rcx),%ymm2,%ymm9 + vpmadd52huq 224(%rcx),%ymm2,%ymm10 + movq 8(%r11),%r13 + + vpbroadcastq %r13,%ymm1 + movq 0(%rsi),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + movq %r12,%r10 + adcq $0,%r10 + + movq %r8,%r13 + imulq %r9,%r13 + andq %rax,%r13 + + vpbroadcastq %r13,%ymm2 + movq 0(%rcx),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + adcq %r12,%r10 + + shrq $52,%r9 + salq $12,%r10 + orq %r10,%r9 + + vpmadd52luq 0(%rsi),%ymm1,%ymm3 + vpmadd52luq 32(%rsi),%ymm1,%ymm4 + vpmadd52luq 64(%rsi),%ymm1,%ymm5 + vpmadd52luq 96(%rsi),%ymm1,%ymm6 + vpmadd52luq 128(%rsi),%ymm1,%ymm7 + vpmadd52luq 160(%rsi),%ymm1,%ymm8 + vpmadd52luq 192(%rsi),%ymm1,%ymm9 + vpmadd52luq 224(%rsi),%ymm1,%ymm10 + + vpmadd52luq 0(%rcx),%ymm2,%ymm3 + vpmadd52luq 32(%rcx),%ymm2,%ymm4 + vpmadd52luq 64(%rcx),%ymm2,%ymm5 + vpmadd52luq 96(%rcx),%ymm2,%ymm6 + vpmadd52luq 128(%rcx),%ymm2,%ymm7 + vpmadd52luq 160(%rcx),%ymm2,%ymm8 + vpmadd52luq 192(%rcx),%ymm2,%ymm9 + vpmadd52luq 224(%rcx),%ymm2,%ymm10 + + + valignq $1,%ymm3,%ymm4,%ymm3 + valignq $1,%ymm4,%ymm5,%ymm4 + valignq $1,%ymm5,%ymm6,%ymm5 + valignq $1,%ymm6,%ymm7,%ymm6 + valignq $1,%ymm7,%ymm8,%ymm7 + valignq $1,%ymm8,%ymm9,%ymm8 + valignq $1,%ymm9,%ymm10,%ymm9 + valignq $1,%ymm10,%ymm0,%ymm10 + + vmovq %xmm3,%r13 + addq %r13,%r9 + + vpmadd52huq 0(%rsi),%ymm1,%ymm3 + vpmadd52huq 32(%rsi),%ymm1,%ymm4 + vpmadd52huq 64(%rsi),%ymm1,%ymm5 + vpmadd52huq 96(%rsi),%ymm1,%ymm6 + vpmadd52huq 128(%rsi),%ymm1,%ymm7 + vpmadd52huq 160(%rsi),%ymm1,%ymm8 + vpmadd52huq 192(%rsi),%ymm1,%ymm9 + vpmadd52huq 224(%rsi),%ymm1,%ymm10 + + vpmadd52huq 0(%rcx),%ymm2,%ymm3 + vpmadd52huq 32(%rcx),%ymm2,%ymm4 + vpmadd52huq 64(%rcx),%ymm2,%ymm5 + vpmadd52huq 96(%rcx),%ymm2,%ymm6 + vpmadd52huq 128(%rcx),%ymm2,%ymm7 + vpmadd52huq 160(%rcx),%ymm2,%ymm8 + vpmadd52huq 192(%rcx),%ymm2,%ymm9 + vpmadd52huq 224(%rcx),%ymm2,%ymm10 + movq 16(%r11),%r13 + + vpbroadcastq %r13,%ymm1 + movq 0(%rsi),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + movq %r12,%r10 + adcq $0,%r10 + + movq %r8,%r13 + imulq %r9,%r13 + andq %rax,%r13 + + vpbroadcastq %r13,%ymm2 + movq 0(%rcx),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + adcq %r12,%r10 + + shrq $52,%r9 + salq $12,%r10 + orq %r10,%r9 + + vpmadd52luq 0(%rsi),%ymm1,%ymm3 + vpmadd52luq 32(%rsi),%ymm1,%ymm4 + vpmadd52luq 64(%rsi),%ymm1,%ymm5 + vpmadd52luq 96(%rsi),%ymm1,%ymm6 + vpmadd52luq 128(%rsi),%ymm1,%ymm7 + vpmadd52luq 160(%rsi),%ymm1,%ymm8 + vpmadd52luq 192(%rsi),%ymm1,%ymm9 + vpmadd52luq 224(%rsi),%ymm1,%ymm10 + + vpmadd52luq 0(%rcx),%ymm2,%ymm3 + vpmadd52luq 32(%rcx),%ymm2,%ymm4 + vpmadd52luq 64(%rcx),%ymm2,%ymm5 + vpmadd52luq 96(%rcx),%ymm2,%ymm6 + vpmadd52luq 128(%rcx),%ymm2,%ymm7 + vpmadd52luq 160(%rcx),%ymm2,%ymm8 + vpmadd52luq 192(%rcx),%ymm2,%ymm9 + vpmadd52luq 224(%rcx),%ymm2,%ymm10 + + + valignq $1,%ymm3,%ymm4,%ymm3 + valignq $1,%ymm4,%ymm5,%ymm4 + valignq $1,%ymm5,%ymm6,%ymm5 + valignq $1,%ymm6,%ymm7,%ymm6 + valignq $1,%ymm7,%ymm8,%ymm7 + valignq $1,%ymm8,%ymm9,%ymm8 + valignq $1,%ymm9,%ymm10,%ymm9 + valignq $1,%ymm10,%ymm0,%ymm10 + + vmovq %xmm3,%r13 + addq %r13,%r9 + + vpmadd52huq 0(%rsi),%ymm1,%ymm3 + vpmadd52huq 32(%rsi),%ymm1,%ymm4 + vpmadd52huq 64(%rsi),%ymm1,%ymm5 + vpmadd52huq 96(%rsi),%ymm1,%ymm6 + vpmadd52huq 128(%rsi),%ymm1,%ymm7 + vpmadd52huq 160(%rsi),%ymm1,%ymm8 + vpmadd52huq 192(%rsi),%ymm1,%ymm9 + vpmadd52huq 224(%rsi),%ymm1,%ymm10 + + vpmadd52huq 0(%rcx),%ymm2,%ymm3 + vpmadd52huq 32(%rcx),%ymm2,%ymm4 + vpmadd52huq 64(%rcx),%ymm2,%ymm5 + vpmadd52huq 96(%rcx),%ymm2,%ymm6 + vpmadd52huq 128(%rcx),%ymm2,%ymm7 + vpmadd52huq 160(%rcx),%ymm2,%ymm8 + vpmadd52huq 192(%rcx),%ymm2,%ymm9 + vpmadd52huq 224(%rcx),%ymm2,%ymm10 + movq 24(%r11),%r13 + + vpbroadcastq %r13,%ymm1 + movq 0(%rsi),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + movq %r12,%r10 + adcq $0,%r10 + + movq %r8,%r13 + imulq %r9,%r13 + andq %rax,%r13 + + vpbroadcastq %r13,%ymm2 + movq 0(%rcx),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + adcq %r12,%r10 + + shrq $52,%r9 + salq $12,%r10 + orq %r10,%r9 + + vpmadd52luq 0(%rsi),%ymm1,%ymm3 + vpmadd52luq 32(%rsi),%ymm1,%ymm4 + vpmadd52luq 64(%rsi),%ymm1,%ymm5 + vpmadd52luq 96(%rsi),%ymm1,%ymm6 + vpmadd52luq 128(%rsi),%ymm1,%ymm7 + vpmadd52luq 160(%rsi),%ymm1,%ymm8 + vpmadd52luq 192(%rsi),%ymm1,%ymm9 + vpmadd52luq 224(%rsi),%ymm1,%ymm10 + + vpmadd52luq 0(%rcx),%ymm2,%ymm3 + vpmadd52luq 32(%rcx),%ymm2,%ymm4 + vpmadd52luq 64(%rcx),%ymm2,%ymm5 + vpmadd52luq 96(%rcx),%ymm2,%ymm6 + vpmadd52luq 128(%rcx),%ymm2,%ymm7 + vpmadd52luq 160(%rcx),%ymm2,%ymm8 + vpmadd52luq 192(%rcx),%ymm2,%ymm9 + vpmadd52luq 224(%rcx),%ymm2,%ymm10 + + + valignq $1,%ymm3,%ymm4,%ymm3 + valignq $1,%ymm4,%ymm5,%ymm4 + valignq $1,%ymm5,%ymm6,%ymm5 + valignq $1,%ymm6,%ymm7,%ymm6 + valignq $1,%ymm7,%ymm8,%ymm7 + valignq $1,%ymm8,%ymm9,%ymm8 + valignq $1,%ymm9,%ymm10,%ymm9 + valignq $1,%ymm10,%ymm0,%ymm10 + + vmovq %xmm3,%r13 + addq %r13,%r9 + + vpmadd52huq 0(%rsi),%ymm1,%ymm3 + vpmadd52huq 32(%rsi),%ymm1,%ymm4 + vpmadd52huq 64(%rsi),%ymm1,%ymm5 + vpmadd52huq 96(%rsi),%ymm1,%ymm6 + vpmadd52huq 128(%rsi),%ymm1,%ymm7 + vpmadd52huq 160(%rsi),%ymm1,%ymm8 + vpmadd52huq 192(%rsi),%ymm1,%ymm9 + vpmadd52huq 224(%rsi),%ymm1,%ymm10 + + vpmadd52huq 0(%rcx),%ymm2,%ymm3 + vpmadd52huq 32(%rcx),%ymm2,%ymm4 + vpmadd52huq 64(%rcx),%ymm2,%ymm5 + vpmadd52huq 96(%rcx),%ymm2,%ymm6 + vpmadd52huq 128(%rcx),%ymm2,%ymm7 + vpmadd52huq 160(%rcx),%ymm2,%ymm8 + vpmadd52huq 192(%rcx),%ymm2,%ymm9 + vpmadd52huq 224(%rcx),%ymm2,%ymm10 + leaq 32(%r11),%r11 + decl %ebx + jne .Lloop7 + movq 0(%r11),%r13 + + vpbroadcastq %r13,%ymm1 + movq 0(%rsi),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + movq %r12,%r10 + adcq $0,%r10 + + movq %r8,%r13 + imulq %r9,%r13 + andq %rax,%r13 + + vpbroadcastq %r13,%ymm2 + movq 0(%rcx),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + adcq %r12,%r10 + + shrq $52,%r9 + salq $12,%r10 + orq %r10,%r9 + + vpmadd52luq 0(%rsi),%ymm1,%ymm3 + vpmadd52luq 32(%rsi),%ymm1,%ymm4 + vpmadd52luq 64(%rsi),%ymm1,%ymm5 + vpmadd52luq 96(%rsi),%ymm1,%ymm6 + vpmadd52luq 128(%rsi),%ymm1,%ymm7 + vpmadd52luq 160(%rsi),%ymm1,%ymm8 + vpmadd52luq 192(%rsi),%ymm1,%ymm9 + vpmadd52luq 224(%rsi),%ymm1,%ymm10 + + vpmadd52luq 0(%rcx),%ymm2,%ymm3 + vpmadd52luq 32(%rcx),%ymm2,%ymm4 + vpmadd52luq 64(%rcx),%ymm2,%ymm5 + vpmadd52luq 96(%rcx),%ymm2,%ymm6 + vpmadd52luq 128(%rcx),%ymm2,%ymm7 + vpmadd52luq 160(%rcx),%ymm2,%ymm8 + vpmadd52luq 192(%rcx),%ymm2,%ymm9 + vpmadd52luq 224(%rcx),%ymm2,%ymm10 + + + valignq $1,%ymm3,%ymm4,%ymm3 + valignq $1,%ymm4,%ymm5,%ymm4 + valignq $1,%ymm5,%ymm6,%ymm5 + valignq $1,%ymm6,%ymm7,%ymm6 + valignq $1,%ymm7,%ymm8,%ymm7 + valignq $1,%ymm8,%ymm9,%ymm8 + valignq $1,%ymm9,%ymm10,%ymm9 + valignq $1,%ymm10,%ymm0,%ymm10 + + vmovq %xmm3,%r13 + addq %r13,%r9 + + vpmadd52huq 0(%rsi),%ymm1,%ymm3 + vpmadd52huq 32(%rsi),%ymm1,%ymm4 + vpmadd52huq 64(%rsi),%ymm1,%ymm5 + vpmadd52huq 96(%rsi),%ymm1,%ymm6 + vpmadd52huq 128(%rsi),%ymm1,%ymm7 + vpmadd52huq 160(%rsi),%ymm1,%ymm8 + vpmadd52huq 192(%rsi),%ymm1,%ymm9 + vpmadd52huq 224(%rsi),%ymm1,%ymm10 + + vpmadd52huq 0(%rcx),%ymm2,%ymm3 + vpmadd52huq 32(%rcx),%ymm2,%ymm4 + vpmadd52huq 64(%rcx),%ymm2,%ymm5 + vpmadd52huq 96(%rcx),%ymm2,%ymm6 + vpmadd52huq 128(%rcx),%ymm2,%ymm7 + vpmadd52huq 160(%rcx),%ymm2,%ymm8 + vpmadd52huq 192(%rcx),%ymm2,%ymm9 + vpmadd52huq 224(%rcx),%ymm2,%ymm10 + movq 8(%r11),%r13 + + vpbroadcastq %r13,%ymm1 + movq 0(%rsi),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + movq %r12,%r10 + adcq $0,%r10 + + movq %r8,%r13 + imulq %r9,%r13 + andq %rax,%r13 + + vpbroadcastq %r13,%ymm2 + movq 0(%rcx),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + adcq %r12,%r10 + + shrq $52,%r9 + salq $12,%r10 + orq %r10,%r9 + + vpmadd52luq 0(%rsi),%ymm1,%ymm3 + vpmadd52luq 32(%rsi),%ymm1,%ymm4 + vpmadd52luq 64(%rsi),%ymm1,%ymm5 + vpmadd52luq 96(%rsi),%ymm1,%ymm6 + vpmadd52luq 128(%rsi),%ymm1,%ymm7 + vpmadd52luq 160(%rsi),%ymm1,%ymm8 + vpmadd52luq 192(%rsi),%ymm1,%ymm9 + vpmadd52luq 224(%rsi),%ymm1,%ymm10 + + vpmadd52luq 0(%rcx),%ymm2,%ymm3 + vpmadd52luq 32(%rcx),%ymm2,%ymm4 + vpmadd52luq 64(%rcx),%ymm2,%ymm5 + vpmadd52luq 96(%rcx),%ymm2,%ymm6 + vpmadd52luq 128(%rcx),%ymm2,%ymm7 + vpmadd52luq 160(%rcx),%ymm2,%ymm8 + vpmadd52luq 192(%rcx),%ymm2,%ymm9 + vpmadd52luq 224(%rcx),%ymm2,%ymm10 + + + valignq $1,%ymm3,%ymm4,%ymm3 + valignq $1,%ymm4,%ymm5,%ymm4 + valignq $1,%ymm5,%ymm6,%ymm5 + valignq $1,%ymm6,%ymm7,%ymm6 + valignq $1,%ymm7,%ymm8,%ymm7 + valignq $1,%ymm8,%ymm9,%ymm8 + valignq $1,%ymm9,%ymm10,%ymm9 + valignq $1,%ymm10,%ymm0,%ymm10 + + vmovq %xmm3,%r13 + addq %r13,%r9 + + vpmadd52huq 0(%rsi),%ymm1,%ymm3 + vpmadd52huq 32(%rsi),%ymm1,%ymm4 + vpmadd52huq 64(%rsi),%ymm1,%ymm5 + vpmadd52huq 96(%rsi),%ymm1,%ymm6 + vpmadd52huq 128(%rsi),%ymm1,%ymm7 + vpmadd52huq 160(%rsi),%ymm1,%ymm8 + vpmadd52huq 192(%rsi),%ymm1,%ymm9 + vpmadd52huq 224(%rsi),%ymm1,%ymm10 + + vpmadd52huq 0(%rcx),%ymm2,%ymm3 + vpmadd52huq 32(%rcx),%ymm2,%ymm4 + vpmadd52huq 64(%rcx),%ymm2,%ymm5 + vpmadd52huq 96(%rcx),%ymm2,%ymm6 + vpmadd52huq 128(%rcx),%ymm2,%ymm7 + vpmadd52huq 160(%rcx),%ymm2,%ymm8 + vpmadd52huq 192(%rcx),%ymm2,%ymm9 + vpmadd52huq 224(%rcx),%ymm2,%ymm10 + + vpbroadcastq %r9,%ymm0 + vpblendd $3,%ymm0,%ymm3,%ymm3 + + + + vpsrlq $52,%ymm3,%ymm0 + vpsrlq $52,%ymm4,%ymm1 + vpsrlq $52,%ymm5,%ymm2 + vpsrlq $52,%ymm6,%ymm19 + vpsrlq $52,%ymm7,%ymm20 + vpsrlq $52,%ymm8,%ymm21 + vpsrlq $52,%ymm9,%ymm22 + vpsrlq $52,%ymm10,%ymm23 + + + valignq $3,%ymm22,%ymm23,%ymm23 + valignq $3,%ymm21,%ymm22,%ymm22 + valignq $3,%ymm20,%ymm21,%ymm21 + valignq $3,%ymm19,%ymm20,%ymm20 + valignq $3,%ymm2,%ymm19,%ymm19 + valignq $3,%ymm1,%ymm2,%ymm2 + valignq $3,%ymm0,%ymm1,%ymm1 + valignq $3,.Lzeros(%rip),%ymm0,%ymm0 + + + vpandq .Lmask52x4(%rip),%ymm3,%ymm3 + vpandq .Lmask52x4(%rip),%ymm4,%ymm4 + vpandq .Lmask52x4(%rip),%ymm5,%ymm5 + vpandq .Lmask52x4(%rip),%ymm6,%ymm6 + vpandq .Lmask52x4(%rip),%ymm7,%ymm7 + vpandq .Lmask52x4(%rip),%ymm8,%ymm8 + vpandq .Lmask52x4(%rip),%ymm9,%ymm9 + vpandq .Lmask52x4(%rip),%ymm10,%ymm10 + + + vpaddq %ymm0,%ymm3,%ymm3 + vpaddq %ymm1,%ymm4,%ymm4 + vpaddq %ymm2,%ymm5,%ymm5 + vpaddq %ymm19,%ymm6,%ymm6 + vpaddq %ymm20,%ymm7,%ymm7 + vpaddq %ymm21,%ymm8,%ymm8 + vpaddq %ymm22,%ymm9,%ymm9 + vpaddq %ymm23,%ymm10,%ymm10 + + + + vpcmpuq $6,.Lmask52x4(%rip),%ymm3,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm4,%k2 + kmovb %k1,%r14d + kmovb %k2,%r13d + shlb $4,%r13b + orb %r13b,%r14b + + vpcmpuq $6,.Lmask52x4(%rip),%ymm5,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm6,%k2 + kmovb %k1,%r13d + kmovb %k2,%r12d + shlb $4,%r12b + orb %r12b,%r13b + + vpcmpuq $6,.Lmask52x4(%rip),%ymm7,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm8,%k2 + kmovb %k1,%r12d + kmovb %k2,%r11d + shlb $4,%r11b + orb %r11b,%r12b + + vpcmpuq $6,.Lmask52x4(%rip),%ymm9,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm10,%k2 + kmovb %k1,%r11d + kmovb %k2,%r10d + shlb $4,%r10b + orb %r10b,%r11b + + addb %r14b,%r14b + adcb %r13b,%r13b + adcb %r12b,%r12b + adcb %r11b,%r11b + + + vpcmpuq $0,.Lmask52x4(%rip),%ymm3,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm4,%k2 + kmovb %k1,%r9d + kmovb %k2,%r8d + shlb $4,%r8b + orb %r8b,%r9b + + vpcmpuq $0,.Lmask52x4(%rip),%ymm5,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm6,%k2 + kmovb %k1,%r8d + kmovb %k2,%edx + shlb $4,%dl + orb %dl,%r8b + + vpcmpuq $0,.Lmask52x4(%rip),%ymm7,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm8,%k2 + kmovb %k1,%edx + kmovb %k2,%ecx + shlb $4,%cl + orb %cl,%dl + + vpcmpuq $0,.Lmask52x4(%rip),%ymm9,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm10,%k2 + kmovb %k1,%ecx + kmovb %k2,%ebx + shlb $4,%bl + orb %bl,%cl + + addb %r9b,%r14b + adcb %r8b,%r13b + adcb %dl,%r12b + adcb %cl,%r11b + + xorb %r9b,%r14b + xorb %r8b,%r13b + xorb %dl,%r12b + xorb %cl,%r11b + + kmovb %r14d,%k1 + shrb $4,%r14b + kmovb %r14d,%k2 + kmovb %r13d,%k3 + shrb $4,%r13b + kmovb %r13d,%k4 + kmovb %r12d,%k5 + shrb $4,%r12b + kmovb %r12d,%k6 + kmovb %r11d,%k7 + + vpsubq .Lmask52x4(%rip),%ymm3,%ymm3{%k1} + vpsubq .Lmask52x4(%rip),%ymm4,%ymm4{%k2} + vpsubq .Lmask52x4(%rip),%ymm5,%ymm5{%k3} + vpsubq .Lmask52x4(%rip),%ymm6,%ymm6{%k4} + vpsubq .Lmask52x4(%rip),%ymm7,%ymm7{%k5} + vpsubq .Lmask52x4(%rip),%ymm8,%ymm8{%k6} + vpsubq .Lmask52x4(%rip),%ymm9,%ymm9{%k7} + + vpandq .Lmask52x4(%rip),%ymm3,%ymm3 + vpandq .Lmask52x4(%rip),%ymm4,%ymm4 + vpandq .Lmask52x4(%rip),%ymm5,%ymm5 + vpandq .Lmask52x4(%rip),%ymm6,%ymm6 + vpandq .Lmask52x4(%rip),%ymm7,%ymm7 + vpandq .Lmask52x4(%rip),%ymm8,%ymm8 + vpandq .Lmask52x4(%rip),%ymm9,%ymm9 + + shrb $4,%r11b + kmovb %r11d,%k1 + + vpsubq .Lmask52x4(%rip),%ymm10,%ymm10{%k1} + + vpandq .Lmask52x4(%rip),%ymm10,%ymm10 + + vmovdqu64 %ymm3,0(%rdi) + vmovdqu64 %ymm4,32(%rdi) + vmovdqu64 %ymm5,64(%rdi) + vmovdqu64 %ymm6,96(%rdi) + vmovdqu64 %ymm7,128(%rdi) + vmovdqu64 %ymm8,160(%rdi) + vmovdqu64 %ymm9,192(%rdi) + vmovdqu64 %ymm10,224(%rdi) + + vzeroupper + leaq (%rsp),%rax +.cfi_def_cfa_register %rax + movq 0(%rax),%r15 +.cfi_restore %r15 + movq 8(%rax),%r14 +.cfi_restore %r14 + movq 16(%rax),%r13 +.cfi_restore %r13 + movq 24(%rax),%r12 +.cfi_restore %r12 + movq 32(%rax),%rbp +.cfi_restore %rbp + movq 40(%rax),%rbx +.cfi_restore %rbx + leaq 48(%rax),%rsp +.cfi_def_cfa %rsp,8 +.Lossl_rsaz_amm52x30_x1_ifma256_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ossl_rsaz_amm52x30_x1_ifma256, .-ossl_rsaz_amm52x30_x1_ifma256 +.section .rodata +.align 32 +.Lmask52x4: +.quad 0xfffffffffffff +.quad 0xfffffffffffff +.quad 0xfffffffffffff +.quad 0xfffffffffffff +.text + +.globl ossl_rsaz_amm52x30_x2_ifma256 +.type ossl_rsaz_amm52x30_x2_ifma256,@function +.align 32 +ossl_rsaz_amm52x30_x2_ifma256: +.cfi_startproc +.byte 243,15,30,250 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + + vpxord %ymm0,%ymm0,%ymm0 + vmovdqa64 %ymm0,%ymm3 + vmovdqa64 %ymm0,%ymm4 + vmovdqa64 %ymm0,%ymm5 + vmovdqa64 %ymm0,%ymm6 + vmovdqa64 %ymm0,%ymm7 + vmovdqa64 %ymm0,%ymm8 + vmovdqa64 %ymm0,%ymm9 + vmovdqa64 %ymm0,%ymm10 + + vmovdqa64 %ymm0,%ymm11 + vmovdqa64 %ymm0,%ymm12 + vmovdqa64 %ymm0,%ymm13 + vmovdqa64 %ymm0,%ymm14 + vmovdqa64 %ymm0,%ymm15 + vmovdqa64 %ymm0,%ymm16 + vmovdqa64 %ymm0,%ymm17 + vmovdqa64 %ymm0,%ymm18 + + + xorl %r9d,%r9d + xorl %r15d,%r15d + + movq %rdx,%r11 + movq $0xfffffffffffff,%rax + + movl $30,%ebx + +.align 32 +.Lloop30: + movq 0(%r11),%r13 + + vpbroadcastq %r13,%ymm1 + movq 0(%rsi),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + movq %r12,%r10 + adcq $0,%r10 + + movq (%r8),%r13 + imulq %r9,%r13 + andq %rax,%r13 + + vpbroadcastq %r13,%ymm2 + movq 0(%rcx),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + adcq %r12,%r10 + + shrq $52,%r9 + salq $12,%r10 + orq %r10,%r9 + + vpmadd52luq 0(%rsi),%ymm1,%ymm3 + vpmadd52luq 32(%rsi),%ymm1,%ymm4 + vpmadd52luq 64(%rsi),%ymm1,%ymm5 + vpmadd52luq 96(%rsi),%ymm1,%ymm6 + vpmadd52luq 128(%rsi),%ymm1,%ymm7 + vpmadd52luq 160(%rsi),%ymm1,%ymm8 + vpmadd52luq 192(%rsi),%ymm1,%ymm9 + vpmadd52luq 224(%rsi),%ymm1,%ymm10 + + vpmadd52luq 0(%rcx),%ymm2,%ymm3 + vpmadd52luq 32(%rcx),%ymm2,%ymm4 + vpmadd52luq 64(%rcx),%ymm2,%ymm5 + vpmadd52luq 96(%rcx),%ymm2,%ymm6 + vpmadd52luq 128(%rcx),%ymm2,%ymm7 + vpmadd52luq 160(%rcx),%ymm2,%ymm8 + vpmadd52luq 192(%rcx),%ymm2,%ymm9 + vpmadd52luq 224(%rcx),%ymm2,%ymm10 + + + valignq $1,%ymm3,%ymm4,%ymm3 + valignq $1,%ymm4,%ymm5,%ymm4 + valignq $1,%ymm5,%ymm6,%ymm5 + valignq $1,%ymm6,%ymm7,%ymm6 + valignq $1,%ymm7,%ymm8,%ymm7 + valignq $1,%ymm8,%ymm9,%ymm8 + valignq $1,%ymm9,%ymm10,%ymm9 + valignq $1,%ymm10,%ymm0,%ymm10 + + vmovq %xmm3,%r13 + addq %r13,%r9 + + vpmadd52huq 0(%rsi),%ymm1,%ymm3 + vpmadd52huq 32(%rsi),%ymm1,%ymm4 + vpmadd52huq 64(%rsi),%ymm1,%ymm5 + vpmadd52huq 96(%rsi),%ymm1,%ymm6 + vpmadd52huq 128(%rsi),%ymm1,%ymm7 + vpmadd52huq 160(%rsi),%ymm1,%ymm8 + vpmadd52huq 192(%rsi),%ymm1,%ymm9 + vpmadd52huq 224(%rsi),%ymm1,%ymm10 + + vpmadd52huq 0(%rcx),%ymm2,%ymm3 + vpmadd52huq 32(%rcx),%ymm2,%ymm4 + vpmadd52huq 64(%rcx),%ymm2,%ymm5 + vpmadd52huq 96(%rcx),%ymm2,%ymm6 + vpmadd52huq 128(%rcx),%ymm2,%ymm7 + vpmadd52huq 160(%rcx),%ymm2,%ymm8 + vpmadd52huq 192(%rcx),%ymm2,%ymm9 + vpmadd52huq 224(%rcx),%ymm2,%ymm10 + movq 256(%r11),%r13 + + vpbroadcastq %r13,%ymm1 + movq 256(%rsi),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r15 + movq %r12,%r10 + adcq $0,%r10 + + movq 8(%r8),%r13 + imulq %r15,%r13 + andq %rax,%r13 + + vpbroadcastq %r13,%ymm2 + movq 256(%rcx),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r15 + adcq %r12,%r10 + + shrq $52,%r15 + salq $12,%r10 + orq %r10,%r15 + + vpmadd52luq 256(%rsi),%ymm1,%ymm11 + vpmadd52luq 288(%rsi),%ymm1,%ymm12 + vpmadd52luq 320(%rsi),%ymm1,%ymm13 + vpmadd52luq 352(%rsi),%ymm1,%ymm14 + vpmadd52luq 384(%rsi),%ymm1,%ymm15 + vpmadd52luq 416(%rsi),%ymm1,%ymm16 + vpmadd52luq 448(%rsi),%ymm1,%ymm17 + vpmadd52luq 480(%rsi),%ymm1,%ymm18 + + vpmadd52luq 256(%rcx),%ymm2,%ymm11 + vpmadd52luq 288(%rcx),%ymm2,%ymm12 + vpmadd52luq 320(%rcx),%ymm2,%ymm13 + vpmadd52luq 352(%rcx),%ymm2,%ymm14 + vpmadd52luq 384(%rcx),%ymm2,%ymm15 + vpmadd52luq 416(%rcx),%ymm2,%ymm16 + vpmadd52luq 448(%rcx),%ymm2,%ymm17 + vpmadd52luq 480(%rcx),%ymm2,%ymm18 + + + valignq $1,%ymm11,%ymm12,%ymm11 + valignq $1,%ymm12,%ymm13,%ymm12 + valignq $1,%ymm13,%ymm14,%ymm13 + valignq $1,%ymm14,%ymm15,%ymm14 + valignq $1,%ymm15,%ymm16,%ymm15 + valignq $1,%ymm16,%ymm17,%ymm16 + valignq $1,%ymm17,%ymm18,%ymm17 + valignq $1,%ymm18,%ymm0,%ymm18 + + vmovq %xmm11,%r13 + addq %r13,%r15 + + vpmadd52huq 256(%rsi),%ymm1,%ymm11 + vpmadd52huq 288(%rsi),%ymm1,%ymm12 + vpmadd52huq 320(%rsi),%ymm1,%ymm13 + vpmadd52huq 352(%rsi),%ymm1,%ymm14 + vpmadd52huq 384(%rsi),%ymm1,%ymm15 + vpmadd52huq 416(%rsi),%ymm1,%ymm16 + vpmadd52huq 448(%rsi),%ymm1,%ymm17 + vpmadd52huq 480(%rsi),%ymm1,%ymm18 + + vpmadd52huq 256(%rcx),%ymm2,%ymm11 + vpmadd52huq 288(%rcx),%ymm2,%ymm12 + vpmadd52huq 320(%rcx),%ymm2,%ymm13 + vpmadd52huq 352(%rcx),%ymm2,%ymm14 + vpmadd52huq 384(%rcx),%ymm2,%ymm15 + vpmadd52huq 416(%rcx),%ymm2,%ymm16 + vpmadd52huq 448(%rcx),%ymm2,%ymm17 + vpmadd52huq 480(%rcx),%ymm2,%ymm18 + leaq 8(%r11),%r11 + decl %ebx + jne .Lloop30 + + vpbroadcastq %r9,%ymm0 + vpblendd $3,%ymm0,%ymm3,%ymm3 + + + + vpsrlq $52,%ymm3,%ymm0 + vpsrlq $52,%ymm4,%ymm1 + vpsrlq $52,%ymm5,%ymm2 + vpsrlq $52,%ymm6,%ymm19 + vpsrlq $52,%ymm7,%ymm20 + vpsrlq $52,%ymm8,%ymm21 + vpsrlq $52,%ymm9,%ymm22 + vpsrlq $52,%ymm10,%ymm23 + + + valignq $3,%ymm22,%ymm23,%ymm23 + valignq $3,%ymm21,%ymm22,%ymm22 + valignq $3,%ymm20,%ymm21,%ymm21 + valignq $3,%ymm19,%ymm20,%ymm20 + valignq $3,%ymm2,%ymm19,%ymm19 + valignq $3,%ymm1,%ymm2,%ymm2 + valignq $3,%ymm0,%ymm1,%ymm1 + valignq $3,.Lzeros(%rip),%ymm0,%ymm0 + + + vpandq .Lmask52x4(%rip),%ymm3,%ymm3 + vpandq .Lmask52x4(%rip),%ymm4,%ymm4 + vpandq .Lmask52x4(%rip),%ymm5,%ymm5 + vpandq .Lmask52x4(%rip),%ymm6,%ymm6 + vpandq .Lmask52x4(%rip),%ymm7,%ymm7 + vpandq .Lmask52x4(%rip),%ymm8,%ymm8 + vpandq .Lmask52x4(%rip),%ymm9,%ymm9 + vpandq .Lmask52x4(%rip),%ymm10,%ymm10 + + + vpaddq %ymm0,%ymm3,%ymm3 + vpaddq %ymm1,%ymm4,%ymm4 + vpaddq %ymm2,%ymm5,%ymm5 + vpaddq %ymm19,%ymm6,%ymm6 + vpaddq %ymm20,%ymm7,%ymm7 + vpaddq %ymm21,%ymm8,%ymm8 + vpaddq %ymm22,%ymm9,%ymm9 + vpaddq %ymm23,%ymm10,%ymm10 + + + + vpcmpuq $6,.Lmask52x4(%rip),%ymm3,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm4,%k2 + kmovb %k1,%r14d + kmovb %k2,%r13d + shlb $4,%r13b + orb %r13b,%r14b + + vpcmpuq $6,.Lmask52x4(%rip),%ymm5,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm6,%k2 + kmovb %k1,%r13d + kmovb %k2,%r12d + shlb $4,%r12b + orb %r12b,%r13b + + vpcmpuq $6,.Lmask52x4(%rip),%ymm7,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm8,%k2 + kmovb %k1,%r12d + kmovb %k2,%r11d + shlb $4,%r11b + orb %r11b,%r12b + + vpcmpuq $6,.Lmask52x4(%rip),%ymm9,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm10,%k2 + kmovb %k1,%r11d + kmovb %k2,%r10d + shlb $4,%r10b + orb %r10b,%r11b + + addb %r14b,%r14b + adcb %r13b,%r13b + adcb %r12b,%r12b + adcb %r11b,%r11b + + + vpcmpuq $0,.Lmask52x4(%rip),%ymm3,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm4,%k2 + kmovb %k1,%r9d + kmovb %k2,%r8d + shlb $4,%r8b + orb %r8b,%r9b + + vpcmpuq $0,.Lmask52x4(%rip),%ymm5,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm6,%k2 + kmovb %k1,%r8d + kmovb %k2,%edx + shlb $4,%dl + orb %dl,%r8b + + vpcmpuq $0,.Lmask52x4(%rip),%ymm7,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm8,%k2 + kmovb %k1,%edx + kmovb %k2,%ecx + shlb $4,%cl + orb %cl,%dl + + vpcmpuq $0,.Lmask52x4(%rip),%ymm9,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm10,%k2 + kmovb %k1,%ecx + kmovb %k2,%ebx + shlb $4,%bl + orb %bl,%cl + + addb %r9b,%r14b + adcb %r8b,%r13b + adcb %dl,%r12b + adcb %cl,%r11b + + xorb %r9b,%r14b + xorb %r8b,%r13b + xorb %dl,%r12b + xorb %cl,%r11b + + kmovb %r14d,%k1 + shrb $4,%r14b + kmovb %r14d,%k2 + kmovb %r13d,%k3 + shrb $4,%r13b + kmovb %r13d,%k4 + kmovb %r12d,%k5 + shrb $4,%r12b + kmovb %r12d,%k6 + kmovb %r11d,%k7 + + vpsubq .Lmask52x4(%rip),%ymm3,%ymm3{%k1} + vpsubq .Lmask52x4(%rip),%ymm4,%ymm4{%k2} + vpsubq .Lmask52x4(%rip),%ymm5,%ymm5{%k3} + vpsubq .Lmask52x4(%rip),%ymm6,%ymm6{%k4} + vpsubq .Lmask52x4(%rip),%ymm7,%ymm7{%k5} + vpsubq .Lmask52x4(%rip),%ymm8,%ymm8{%k6} + vpsubq .Lmask52x4(%rip),%ymm9,%ymm9{%k7} + + vpandq .Lmask52x4(%rip),%ymm3,%ymm3 + vpandq .Lmask52x4(%rip),%ymm4,%ymm4 + vpandq .Lmask52x4(%rip),%ymm5,%ymm5 + vpandq .Lmask52x4(%rip),%ymm6,%ymm6 + vpandq .Lmask52x4(%rip),%ymm7,%ymm7 + vpandq .Lmask52x4(%rip),%ymm8,%ymm8 + vpandq .Lmask52x4(%rip),%ymm9,%ymm9 + + shrb $4,%r11b + kmovb %r11d,%k1 + + vpsubq .Lmask52x4(%rip),%ymm10,%ymm10{%k1} + + vpandq .Lmask52x4(%rip),%ymm10,%ymm10 + + vpbroadcastq %r15,%ymm0 + vpblendd $3,%ymm0,%ymm11,%ymm11 + + + + vpsrlq $52,%ymm11,%ymm0 + vpsrlq $52,%ymm12,%ymm1 + vpsrlq $52,%ymm13,%ymm2 + vpsrlq $52,%ymm14,%ymm19 + vpsrlq $52,%ymm15,%ymm20 + vpsrlq $52,%ymm16,%ymm21 + vpsrlq $52,%ymm17,%ymm22 + vpsrlq $52,%ymm18,%ymm23 + + + valignq $3,%ymm22,%ymm23,%ymm23 + valignq $3,%ymm21,%ymm22,%ymm22 + valignq $3,%ymm20,%ymm21,%ymm21 + valignq $3,%ymm19,%ymm20,%ymm20 + valignq $3,%ymm2,%ymm19,%ymm19 + valignq $3,%ymm1,%ymm2,%ymm2 + valignq $3,%ymm0,%ymm1,%ymm1 + valignq $3,.Lzeros(%rip),%ymm0,%ymm0 + + + vpandq .Lmask52x4(%rip),%ymm11,%ymm11 + vpandq .Lmask52x4(%rip),%ymm12,%ymm12 + vpandq .Lmask52x4(%rip),%ymm13,%ymm13 + vpandq .Lmask52x4(%rip),%ymm14,%ymm14 + vpandq .Lmask52x4(%rip),%ymm15,%ymm15 + vpandq .Lmask52x4(%rip),%ymm16,%ymm16 + vpandq .Lmask52x4(%rip),%ymm17,%ymm17 + vpandq .Lmask52x4(%rip),%ymm18,%ymm18 + + + vpaddq %ymm0,%ymm11,%ymm11 + vpaddq %ymm1,%ymm12,%ymm12 + vpaddq %ymm2,%ymm13,%ymm13 + vpaddq %ymm19,%ymm14,%ymm14 + vpaddq %ymm20,%ymm15,%ymm15 + vpaddq %ymm21,%ymm16,%ymm16 + vpaddq %ymm22,%ymm17,%ymm17 + vpaddq %ymm23,%ymm18,%ymm18 + + + + vpcmpuq $6,.Lmask52x4(%rip),%ymm11,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm12,%k2 + kmovb %k1,%r14d + kmovb %k2,%r13d + shlb $4,%r13b + orb %r13b,%r14b + + vpcmpuq $6,.Lmask52x4(%rip),%ymm13,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm14,%k2 + kmovb %k1,%r13d + kmovb %k2,%r12d + shlb $4,%r12b + orb %r12b,%r13b + + vpcmpuq $6,.Lmask52x4(%rip),%ymm15,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm16,%k2 + kmovb %k1,%r12d + kmovb %k2,%r11d + shlb $4,%r11b + orb %r11b,%r12b + + vpcmpuq $6,.Lmask52x4(%rip),%ymm17,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm18,%k2 + kmovb %k1,%r11d + kmovb %k2,%r10d + shlb $4,%r10b + orb %r10b,%r11b + + addb %r14b,%r14b + adcb %r13b,%r13b + adcb %r12b,%r12b + adcb %r11b,%r11b + + + vpcmpuq $0,.Lmask52x4(%rip),%ymm11,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm12,%k2 + kmovb %k1,%r9d + kmovb %k2,%r8d + shlb $4,%r8b + orb %r8b,%r9b + + vpcmpuq $0,.Lmask52x4(%rip),%ymm13,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm14,%k2 + kmovb %k1,%r8d + kmovb %k2,%edx + shlb $4,%dl + orb %dl,%r8b + + vpcmpuq $0,.Lmask52x4(%rip),%ymm15,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm16,%k2 + kmovb %k1,%edx + kmovb %k2,%ecx + shlb $4,%cl + orb %cl,%dl + + vpcmpuq $0,.Lmask52x4(%rip),%ymm17,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm18,%k2 + kmovb %k1,%ecx + kmovb %k2,%ebx + shlb $4,%bl + orb %bl,%cl + + addb %r9b,%r14b + adcb %r8b,%r13b + adcb %dl,%r12b + adcb %cl,%r11b + + xorb %r9b,%r14b + xorb %r8b,%r13b + xorb %dl,%r12b + xorb %cl,%r11b + + kmovb %r14d,%k1 + shrb $4,%r14b + kmovb %r14d,%k2 + kmovb %r13d,%k3 + shrb $4,%r13b + kmovb %r13d,%k4 + kmovb %r12d,%k5 + shrb $4,%r12b + kmovb %r12d,%k6 + kmovb %r11d,%k7 + + vpsubq .Lmask52x4(%rip),%ymm11,%ymm11{%k1} + vpsubq .Lmask52x4(%rip),%ymm12,%ymm12{%k2} + vpsubq .Lmask52x4(%rip),%ymm13,%ymm13{%k3} + vpsubq .Lmask52x4(%rip),%ymm14,%ymm14{%k4} + vpsubq .Lmask52x4(%rip),%ymm15,%ymm15{%k5} + vpsubq .Lmask52x4(%rip),%ymm16,%ymm16{%k6} + vpsubq .Lmask52x4(%rip),%ymm17,%ymm17{%k7} + + vpandq .Lmask52x4(%rip),%ymm11,%ymm11 + vpandq .Lmask52x4(%rip),%ymm12,%ymm12 + vpandq .Lmask52x4(%rip),%ymm13,%ymm13 + vpandq .Lmask52x4(%rip),%ymm14,%ymm14 + vpandq .Lmask52x4(%rip),%ymm15,%ymm15 + vpandq .Lmask52x4(%rip),%ymm16,%ymm16 + vpandq .Lmask52x4(%rip),%ymm17,%ymm17 + + shrb $4,%r11b + kmovb %r11d,%k1 + + vpsubq .Lmask52x4(%rip),%ymm18,%ymm18{%k1} + + vpandq .Lmask52x4(%rip),%ymm18,%ymm18 + + vmovdqu64 %ymm3,0(%rdi) + vmovdqu64 %ymm4,32(%rdi) + vmovdqu64 %ymm5,64(%rdi) + vmovdqu64 %ymm6,96(%rdi) + vmovdqu64 %ymm7,128(%rdi) + vmovdqu64 %ymm8,160(%rdi) + vmovdqu64 %ymm9,192(%rdi) + vmovdqu64 %ymm10,224(%rdi) + + vmovdqu64 %ymm11,256(%rdi) + vmovdqu64 %ymm12,288(%rdi) + vmovdqu64 %ymm13,320(%rdi) + vmovdqu64 %ymm14,352(%rdi) + vmovdqu64 %ymm15,384(%rdi) + vmovdqu64 %ymm16,416(%rdi) + vmovdqu64 %ymm17,448(%rdi) + vmovdqu64 %ymm18,480(%rdi) + + vzeroupper + leaq (%rsp),%rax +.cfi_def_cfa_register %rax + movq 0(%rax),%r15 +.cfi_restore %r15 + movq 8(%rax),%r14 +.cfi_restore %r14 + movq 16(%rax),%r13 +.cfi_restore %r13 + movq 24(%rax),%r12 +.cfi_restore %r12 + movq 32(%rax),%rbp +.cfi_restore %rbp + movq 40(%rax),%rbx +.cfi_restore %rbx + leaq 48(%rax),%rsp +.cfi_def_cfa %rsp,8 +.Lossl_rsaz_amm52x30_x2_ifma256_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ossl_rsaz_amm52x30_x2_ifma256, .-ossl_rsaz_amm52x30_x2_ifma256 +.text + +.align 32 +.globl ossl_extract_multiplier_2x30_win5 +.type ossl_extract_multiplier_2x30_win5,@function +ossl_extract_multiplier_2x30_win5: +.cfi_startproc +.byte 243,15,30,250 + vmovdqa64 .Lones(%rip),%ymm30 + vpbroadcastq %rdx,%ymm28 + vpbroadcastq %rcx,%ymm29 + leaq 16384(%rsi),%rax + + + vpxor %xmm0,%xmm0,%xmm0 + vmovdqa64 %ymm0,%ymm27 + vmovdqa64 %ymm0,%ymm1 + vmovdqa64 %ymm0,%ymm2 + vmovdqa64 %ymm0,%ymm3 + vmovdqa64 %ymm0,%ymm4 + vmovdqa64 %ymm0,%ymm5 + vmovdqa64 %ymm0,%ymm16 + vmovdqa64 %ymm0,%ymm17 + vmovdqa64 %ymm0,%ymm18 + vmovdqa64 %ymm0,%ymm19 + vmovdqa64 %ymm0,%ymm20 + vmovdqa64 %ymm0,%ymm21 + vmovdqa64 %ymm0,%ymm22 + vmovdqa64 %ymm0,%ymm23 + vmovdqa64 %ymm0,%ymm24 + vmovdqa64 %ymm0,%ymm25 + +.align 32 +.Lloop: + vpcmpq $0,%ymm27,%ymm28,%k1 + vpcmpq $0,%ymm27,%ymm29,%k2 + vmovdqu64 0(%rsi),%ymm26 + vpblendmq %ymm26,%ymm0,%ymm0{%k1} + vmovdqu64 32(%rsi),%ymm26 + vpblendmq %ymm26,%ymm1,%ymm1{%k1} + vmovdqu64 64(%rsi),%ymm26 + vpblendmq %ymm26,%ymm2,%ymm2{%k1} + vmovdqu64 96(%rsi),%ymm26 + vpblendmq %ymm26,%ymm3,%ymm3{%k1} + vmovdqu64 128(%rsi),%ymm26 + vpblendmq %ymm26,%ymm4,%ymm4{%k1} + vmovdqu64 160(%rsi),%ymm26 + vpblendmq %ymm26,%ymm5,%ymm5{%k1} + vmovdqu64 192(%rsi),%ymm26 + vpblendmq %ymm26,%ymm16,%ymm16{%k1} + vmovdqu64 224(%rsi),%ymm26 + vpblendmq %ymm26,%ymm17,%ymm17{%k1} + vmovdqu64 256(%rsi),%ymm26 + vpblendmq %ymm26,%ymm18,%ymm18{%k2} + vmovdqu64 288(%rsi),%ymm26 + vpblendmq %ymm26,%ymm19,%ymm19{%k2} + vmovdqu64 320(%rsi),%ymm26 + vpblendmq %ymm26,%ymm20,%ymm20{%k2} + vmovdqu64 352(%rsi),%ymm26 + vpblendmq %ymm26,%ymm21,%ymm21{%k2} + vmovdqu64 384(%rsi),%ymm26 + vpblendmq %ymm26,%ymm22,%ymm22{%k2} + vmovdqu64 416(%rsi),%ymm26 + vpblendmq %ymm26,%ymm23,%ymm23{%k2} + vmovdqu64 448(%rsi),%ymm26 + vpblendmq %ymm26,%ymm24,%ymm24{%k2} + vmovdqu64 480(%rsi),%ymm26 + vpblendmq %ymm26,%ymm25,%ymm25{%k2} + vpaddq %ymm30,%ymm27,%ymm27 + addq $512,%rsi + cmpq %rsi,%rax + jne .Lloop + vmovdqu64 %ymm0,0(%rdi) + vmovdqu64 %ymm1,32(%rdi) + vmovdqu64 %ymm2,64(%rdi) + vmovdqu64 %ymm3,96(%rdi) + vmovdqu64 %ymm4,128(%rdi) + vmovdqu64 %ymm5,160(%rdi) + vmovdqu64 %ymm16,192(%rdi) + vmovdqu64 %ymm17,224(%rdi) + vmovdqu64 %ymm18,256(%rdi) + vmovdqu64 %ymm19,288(%rdi) + vmovdqu64 %ymm20,320(%rdi) + vmovdqu64 %ymm21,352(%rdi) + vmovdqu64 %ymm22,384(%rdi) + vmovdqu64 %ymm23,416(%rdi) + vmovdqu64 %ymm24,448(%rdi) + vmovdqu64 %ymm25,480(%rdi) + + .byte 0xf3,0xc3 +.cfi_endproc +.size ossl_extract_multiplier_2x30_win5, .-ossl_extract_multiplier_2x30_win5 +.section .rodata +.align 32 +.Lones: +.quad 1,1,1,1 +.Lzeros: +.quad 0,0,0,0 + .section ".note.gnu.property", "a" + .p2align 3 + .long 1f - 0f + .long 4f - 1f + .long 5 +0: + # "GNU" encoded with .byte, since .asciz isn't supported + # on Solaris. + .byte 0x47 + .byte 0x4e + .byte 0x55 + .byte 0 +1: + .p2align 3 + .long 0xc0000002 + .long 3f - 2f +2: + .long 3 +3: + .p2align 3 +4: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-3k-avxifma.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-3k-avxifma.s new file mode 100644 index 00000000000000..e27748b02804e2 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-3k-avxifma.s @@ -0,0 +1,33 @@ +.text + +.globl ossl_rsaz_amm52x30_x1_avxifma256 +.globl ossl_rsaz_amm52x30_x2_avxifma256 +.globl ossl_extract_multiplier_2x30_win5_avx +.type ossl_rsaz_amm52x30_x1_avxifma256,@function +ossl_rsaz_amm52x30_x1_avxifma256: +ossl_rsaz_amm52x30_x2_avxifma256: +ossl_extract_multiplier_2x30_win5_avx: +.byte 0x0f,0x0b + .byte 0xf3,0xc3 +.size ossl_rsaz_amm52x30_x1_avxifma256, .-ossl_rsaz_amm52x30_x1_avxifma256 + .section ".note.gnu.property", "a" + .p2align 3 + .long 1f - 0f + .long 4f - 1f + .long 5 +0: + # "GNU" encoded with .byte, since .asciz isn't supported + # on Solaris. + .byte 0x47 + .byte 0x4e + .byte 0x55 + .byte 0 +1: + .p2align 3 + .long 0xc0000002 + .long 3f - 2f +2: + .long 3 +3: + .p2align 3 +4: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-4k-avx512.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-4k-avx512.s new file mode 100644 index 00000000000000..1dcb0db7c58117 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-4k-avx512.s @@ -0,0 +1,1374 @@ +.text + +.globl ossl_rsaz_amm52x40_x1_ifma256 +.type ossl_rsaz_amm52x40_x1_ifma256,@function +.align 32 +ossl_rsaz_amm52x40_x1_ifma256: +.cfi_startproc +.byte 243,15,30,250 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + + vpxord %ymm0,%ymm0,%ymm0 + vmovdqa64 %ymm0,%ymm3 + vmovdqa64 %ymm0,%ymm4 + vmovdqa64 %ymm0,%ymm5 + vmovdqa64 %ymm0,%ymm6 + vmovdqa64 %ymm0,%ymm7 + vmovdqa64 %ymm0,%ymm8 + vmovdqa64 %ymm0,%ymm9 + vmovdqa64 %ymm0,%ymm10 + vmovdqa64 %ymm0,%ymm11 + vmovdqa64 %ymm0,%ymm12 + + xorl %r9d,%r9d + + movq %rdx,%r11 + movq $0xfffffffffffff,%rax + + + movl $10,%ebx + +.align 32 +.Lloop10: + movq 0(%r11),%r13 + + vpbroadcastq %r13,%ymm1 + movq 0(%rsi),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + movq %r12,%r10 + adcq $0,%r10 + + movq %r8,%r13 + imulq %r9,%r13 + andq %rax,%r13 + + vpbroadcastq %r13,%ymm2 + movq 0(%rcx),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + adcq %r12,%r10 + + shrq $52,%r9 + salq $12,%r10 + orq %r10,%r9 + + vpmadd52luq 0(%rsi),%ymm1,%ymm3 + vpmadd52luq 32(%rsi),%ymm1,%ymm4 + vpmadd52luq 64(%rsi),%ymm1,%ymm5 + vpmadd52luq 96(%rsi),%ymm1,%ymm6 + vpmadd52luq 128(%rsi),%ymm1,%ymm7 + vpmadd52luq 160(%rsi),%ymm1,%ymm8 + vpmadd52luq 192(%rsi),%ymm1,%ymm9 + vpmadd52luq 224(%rsi),%ymm1,%ymm10 + vpmadd52luq 256(%rsi),%ymm1,%ymm11 + vpmadd52luq 288(%rsi),%ymm1,%ymm12 + + vpmadd52luq 0(%rcx),%ymm2,%ymm3 + vpmadd52luq 32(%rcx),%ymm2,%ymm4 + vpmadd52luq 64(%rcx),%ymm2,%ymm5 + vpmadd52luq 96(%rcx),%ymm2,%ymm6 + vpmadd52luq 128(%rcx),%ymm2,%ymm7 + vpmadd52luq 160(%rcx),%ymm2,%ymm8 + vpmadd52luq 192(%rcx),%ymm2,%ymm9 + vpmadd52luq 224(%rcx),%ymm2,%ymm10 + vpmadd52luq 256(%rcx),%ymm2,%ymm11 + vpmadd52luq 288(%rcx),%ymm2,%ymm12 + + + valignq $1,%ymm3,%ymm4,%ymm3 + valignq $1,%ymm4,%ymm5,%ymm4 + valignq $1,%ymm5,%ymm6,%ymm5 + valignq $1,%ymm6,%ymm7,%ymm6 + valignq $1,%ymm7,%ymm8,%ymm7 + valignq $1,%ymm8,%ymm9,%ymm8 + valignq $1,%ymm9,%ymm10,%ymm9 + valignq $1,%ymm10,%ymm11,%ymm10 + valignq $1,%ymm11,%ymm12,%ymm11 + valignq $1,%ymm12,%ymm0,%ymm12 + + vmovq %xmm3,%r13 + addq %r13,%r9 + + vpmadd52huq 0(%rsi),%ymm1,%ymm3 + vpmadd52huq 32(%rsi),%ymm1,%ymm4 + vpmadd52huq 64(%rsi),%ymm1,%ymm5 + vpmadd52huq 96(%rsi),%ymm1,%ymm6 + vpmadd52huq 128(%rsi),%ymm1,%ymm7 + vpmadd52huq 160(%rsi),%ymm1,%ymm8 + vpmadd52huq 192(%rsi),%ymm1,%ymm9 + vpmadd52huq 224(%rsi),%ymm1,%ymm10 + vpmadd52huq 256(%rsi),%ymm1,%ymm11 + vpmadd52huq 288(%rsi),%ymm1,%ymm12 + + vpmadd52huq 0(%rcx),%ymm2,%ymm3 + vpmadd52huq 32(%rcx),%ymm2,%ymm4 + vpmadd52huq 64(%rcx),%ymm2,%ymm5 + vpmadd52huq 96(%rcx),%ymm2,%ymm6 + vpmadd52huq 128(%rcx),%ymm2,%ymm7 + vpmadd52huq 160(%rcx),%ymm2,%ymm8 + vpmadd52huq 192(%rcx),%ymm2,%ymm9 + vpmadd52huq 224(%rcx),%ymm2,%ymm10 + vpmadd52huq 256(%rcx),%ymm2,%ymm11 + vpmadd52huq 288(%rcx),%ymm2,%ymm12 + movq 8(%r11),%r13 + + vpbroadcastq %r13,%ymm1 + movq 0(%rsi),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + movq %r12,%r10 + adcq $0,%r10 + + movq %r8,%r13 + imulq %r9,%r13 + andq %rax,%r13 + + vpbroadcastq %r13,%ymm2 + movq 0(%rcx),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + adcq %r12,%r10 + + shrq $52,%r9 + salq $12,%r10 + orq %r10,%r9 + + vpmadd52luq 0(%rsi),%ymm1,%ymm3 + vpmadd52luq 32(%rsi),%ymm1,%ymm4 + vpmadd52luq 64(%rsi),%ymm1,%ymm5 + vpmadd52luq 96(%rsi),%ymm1,%ymm6 + vpmadd52luq 128(%rsi),%ymm1,%ymm7 + vpmadd52luq 160(%rsi),%ymm1,%ymm8 + vpmadd52luq 192(%rsi),%ymm1,%ymm9 + vpmadd52luq 224(%rsi),%ymm1,%ymm10 + vpmadd52luq 256(%rsi),%ymm1,%ymm11 + vpmadd52luq 288(%rsi),%ymm1,%ymm12 + + vpmadd52luq 0(%rcx),%ymm2,%ymm3 + vpmadd52luq 32(%rcx),%ymm2,%ymm4 + vpmadd52luq 64(%rcx),%ymm2,%ymm5 + vpmadd52luq 96(%rcx),%ymm2,%ymm6 + vpmadd52luq 128(%rcx),%ymm2,%ymm7 + vpmadd52luq 160(%rcx),%ymm2,%ymm8 + vpmadd52luq 192(%rcx),%ymm2,%ymm9 + vpmadd52luq 224(%rcx),%ymm2,%ymm10 + vpmadd52luq 256(%rcx),%ymm2,%ymm11 + vpmadd52luq 288(%rcx),%ymm2,%ymm12 + + + valignq $1,%ymm3,%ymm4,%ymm3 + valignq $1,%ymm4,%ymm5,%ymm4 + valignq $1,%ymm5,%ymm6,%ymm5 + valignq $1,%ymm6,%ymm7,%ymm6 + valignq $1,%ymm7,%ymm8,%ymm7 + valignq $1,%ymm8,%ymm9,%ymm8 + valignq $1,%ymm9,%ymm10,%ymm9 + valignq $1,%ymm10,%ymm11,%ymm10 + valignq $1,%ymm11,%ymm12,%ymm11 + valignq $1,%ymm12,%ymm0,%ymm12 + + vmovq %xmm3,%r13 + addq %r13,%r9 + + vpmadd52huq 0(%rsi),%ymm1,%ymm3 + vpmadd52huq 32(%rsi),%ymm1,%ymm4 + vpmadd52huq 64(%rsi),%ymm1,%ymm5 + vpmadd52huq 96(%rsi),%ymm1,%ymm6 + vpmadd52huq 128(%rsi),%ymm1,%ymm7 + vpmadd52huq 160(%rsi),%ymm1,%ymm8 + vpmadd52huq 192(%rsi),%ymm1,%ymm9 + vpmadd52huq 224(%rsi),%ymm1,%ymm10 + vpmadd52huq 256(%rsi),%ymm1,%ymm11 + vpmadd52huq 288(%rsi),%ymm1,%ymm12 + + vpmadd52huq 0(%rcx),%ymm2,%ymm3 + vpmadd52huq 32(%rcx),%ymm2,%ymm4 + vpmadd52huq 64(%rcx),%ymm2,%ymm5 + vpmadd52huq 96(%rcx),%ymm2,%ymm6 + vpmadd52huq 128(%rcx),%ymm2,%ymm7 + vpmadd52huq 160(%rcx),%ymm2,%ymm8 + vpmadd52huq 192(%rcx),%ymm2,%ymm9 + vpmadd52huq 224(%rcx),%ymm2,%ymm10 + vpmadd52huq 256(%rcx),%ymm2,%ymm11 + vpmadd52huq 288(%rcx),%ymm2,%ymm12 + movq 16(%r11),%r13 + + vpbroadcastq %r13,%ymm1 + movq 0(%rsi),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + movq %r12,%r10 + adcq $0,%r10 + + movq %r8,%r13 + imulq %r9,%r13 + andq %rax,%r13 + + vpbroadcastq %r13,%ymm2 + movq 0(%rcx),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + adcq %r12,%r10 + + shrq $52,%r9 + salq $12,%r10 + orq %r10,%r9 + + vpmadd52luq 0(%rsi),%ymm1,%ymm3 + vpmadd52luq 32(%rsi),%ymm1,%ymm4 + vpmadd52luq 64(%rsi),%ymm1,%ymm5 + vpmadd52luq 96(%rsi),%ymm1,%ymm6 + vpmadd52luq 128(%rsi),%ymm1,%ymm7 + vpmadd52luq 160(%rsi),%ymm1,%ymm8 + vpmadd52luq 192(%rsi),%ymm1,%ymm9 + vpmadd52luq 224(%rsi),%ymm1,%ymm10 + vpmadd52luq 256(%rsi),%ymm1,%ymm11 + vpmadd52luq 288(%rsi),%ymm1,%ymm12 + + vpmadd52luq 0(%rcx),%ymm2,%ymm3 + vpmadd52luq 32(%rcx),%ymm2,%ymm4 + vpmadd52luq 64(%rcx),%ymm2,%ymm5 + vpmadd52luq 96(%rcx),%ymm2,%ymm6 + vpmadd52luq 128(%rcx),%ymm2,%ymm7 + vpmadd52luq 160(%rcx),%ymm2,%ymm8 + vpmadd52luq 192(%rcx),%ymm2,%ymm9 + vpmadd52luq 224(%rcx),%ymm2,%ymm10 + vpmadd52luq 256(%rcx),%ymm2,%ymm11 + vpmadd52luq 288(%rcx),%ymm2,%ymm12 + + + valignq $1,%ymm3,%ymm4,%ymm3 + valignq $1,%ymm4,%ymm5,%ymm4 + valignq $1,%ymm5,%ymm6,%ymm5 + valignq $1,%ymm6,%ymm7,%ymm6 + valignq $1,%ymm7,%ymm8,%ymm7 + valignq $1,%ymm8,%ymm9,%ymm8 + valignq $1,%ymm9,%ymm10,%ymm9 + valignq $1,%ymm10,%ymm11,%ymm10 + valignq $1,%ymm11,%ymm12,%ymm11 + valignq $1,%ymm12,%ymm0,%ymm12 + + vmovq %xmm3,%r13 + addq %r13,%r9 + + vpmadd52huq 0(%rsi),%ymm1,%ymm3 + vpmadd52huq 32(%rsi),%ymm1,%ymm4 + vpmadd52huq 64(%rsi),%ymm1,%ymm5 + vpmadd52huq 96(%rsi),%ymm1,%ymm6 + vpmadd52huq 128(%rsi),%ymm1,%ymm7 + vpmadd52huq 160(%rsi),%ymm1,%ymm8 + vpmadd52huq 192(%rsi),%ymm1,%ymm9 + vpmadd52huq 224(%rsi),%ymm1,%ymm10 + vpmadd52huq 256(%rsi),%ymm1,%ymm11 + vpmadd52huq 288(%rsi),%ymm1,%ymm12 + + vpmadd52huq 0(%rcx),%ymm2,%ymm3 + vpmadd52huq 32(%rcx),%ymm2,%ymm4 + vpmadd52huq 64(%rcx),%ymm2,%ymm5 + vpmadd52huq 96(%rcx),%ymm2,%ymm6 + vpmadd52huq 128(%rcx),%ymm2,%ymm7 + vpmadd52huq 160(%rcx),%ymm2,%ymm8 + vpmadd52huq 192(%rcx),%ymm2,%ymm9 + vpmadd52huq 224(%rcx),%ymm2,%ymm10 + vpmadd52huq 256(%rcx),%ymm2,%ymm11 + vpmadd52huq 288(%rcx),%ymm2,%ymm12 + movq 24(%r11),%r13 + + vpbroadcastq %r13,%ymm1 + movq 0(%rsi),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + movq %r12,%r10 + adcq $0,%r10 + + movq %r8,%r13 + imulq %r9,%r13 + andq %rax,%r13 + + vpbroadcastq %r13,%ymm2 + movq 0(%rcx),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + adcq %r12,%r10 + + shrq $52,%r9 + salq $12,%r10 + orq %r10,%r9 + + vpmadd52luq 0(%rsi),%ymm1,%ymm3 + vpmadd52luq 32(%rsi),%ymm1,%ymm4 + vpmadd52luq 64(%rsi),%ymm1,%ymm5 + vpmadd52luq 96(%rsi),%ymm1,%ymm6 + vpmadd52luq 128(%rsi),%ymm1,%ymm7 + vpmadd52luq 160(%rsi),%ymm1,%ymm8 + vpmadd52luq 192(%rsi),%ymm1,%ymm9 + vpmadd52luq 224(%rsi),%ymm1,%ymm10 + vpmadd52luq 256(%rsi),%ymm1,%ymm11 + vpmadd52luq 288(%rsi),%ymm1,%ymm12 + + vpmadd52luq 0(%rcx),%ymm2,%ymm3 + vpmadd52luq 32(%rcx),%ymm2,%ymm4 + vpmadd52luq 64(%rcx),%ymm2,%ymm5 + vpmadd52luq 96(%rcx),%ymm2,%ymm6 + vpmadd52luq 128(%rcx),%ymm2,%ymm7 + vpmadd52luq 160(%rcx),%ymm2,%ymm8 + vpmadd52luq 192(%rcx),%ymm2,%ymm9 + vpmadd52luq 224(%rcx),%ymm2,%ymm10 + vpmadd52luq 256(%rcx),%ymm2,%ymm11 + vpmadd52luq 288(%rcx),%ymm2,%ymm12 + + + valignq $1,%ymm3,%ymm4,%ymm3 + valignq $1,%ymm4,%ymm5,%ymm4 + valignq $1,%ymm5,%ymm6,%ymm5 + valignq $1,%ymm6,%ymm7,%ymm6 + valignq $1,%ymm7,%ymm8,%ymm7 + valignq $1,%ymm8,%ymm9,%ymm8 + valignq $1,%ymm9,%ymm10,%ymm9 + valignq $1,%ymm10,%ymm11,%ymm10 + valignq $1,%ymm11,%ymm12,%ymm11 + valignq $1,%ymm12,%ymm0,%ymm12 + + vmovq %xmm3,%r13 + addq %r13,%r9 + + vpmadd52huq 0(%rsi),%ymm1,%ymm3 + vpmadd52huq 32(%rsi),%ymm1,%ymm4 + vpmadd52huq 64(%rsi),%ymm1,%ymm5 + vpmadd52huq 96(%rsi),%ymm1,%ymm6 + vpmadd52huq 128(%rsi),%ymm1,%ymm7 + vpmadd52huq 160(%rsi),%ymm1,%ymm8 + vpmadd52huq 192(%rsi),%ymm1,%ymm9 + vpmadd52huq 224(%rsi),%ymm1,%ymm10 + vpmadd52huq 256(%rsi),%ymm1,%ymm11 + vpmadd52huq 288(%rsi),%ymm1,%ymm12 + + vpmadd52huq 0(%rcx),%ymm2,%ymm3 + vpmadd52huq 32(%rcx),%ymm2,%ymm4 + vpmadd52huq 64(%rcx),%ymm2,%ymm5 + vpmadd52huq 96(%rcx),%ymm2,%ymm6 + vpmadd52huq 128(%rcx),%ymm2,%ymm7 + vpmadd52huq 160(%rcx),%ymm2,%ymm8 + vpmadd52huq 192(%rcx),%ymm2,%ymm9 + vpmadd52huq 224(%rcx),%ymm2,%ymm10 + vpmadd52huq 256(%rcx),%ymm2,%ymm11 + vpmadd52huq 288(%rcx),%ymm2,%ymm12 + leaq 32(%r11),%r11 + decl %ebx + jne .Lloop10 + + vpbroadcastq %r9,%ymm0 + vpblendd $3,%ymm0,%ymm3,%ymm3 + + + + vpsrlq $52,%ymm3,%ymm0 + vpsrlq $52,%ymm4,%ymm1 + vpsrlq $52,%ymm5,%ymm2 + vpsrlq $52,%ymm6,%ymm23 + vpsrlq $52,%ymm7,%ymm24 + vpsrlq $52,%ymm8,%ymm25 + vpsrlq $52,%ymm9,%ymm26 + vpsrlq $52,%ymm10,%ymm27 + vpsrlq $52,%ymm11,%ymm28 + vpsrlq $52,%ymm12,%ymm29 + + + valignq $3,%ymm28,%ymm29,%ymm29 + valignq $3,%ymm27,%ymm28,%ymm28 + valignq $3,%ymm26,%ymm27,%ymm27 + valignq $3,%ymm25,%ymm26,%ymm26 + valignq $3,%ymm24,%ymm25,%ymm25 + valignq $3,%ymm23,%ymm24,%ymm24 + valignq $3,%ymm2,%ymm23,%ymm23 + valignq $3,%ymm1,%ymm2,%ymm2 + valignq $3,%ymm0,%ymm1,%ymm1 + valignq $3,.Lzeros(%rip),%ymm0,%ymm0 + + + vpandq .Lmask52x4(%rip),%ymm3,%ymm3 + vpandq .Lmask52x4(%rip),%ymm4,%ymm4 + vpandq .Lmask52x4(%rip),%ymm5,%ymm5 + vpandq .Lmask52x4(%rip),%ymm6,%ymm6 + vpandq .Lmask52x4(%rip),%ymm7,%ymm7 + vpandq .Lmask52x4(%rip),%ymm8,%ymm8 + vpandq .Lmask52x4(%rip),%ymm9,%ymm9 + vpandq .Lmask52x4(%rip),%ymm10,%ymm10 + vpandq .Lmask52x4(%rip),%ymm11,%ymm11 + vpandq .Lmask52x4(%rip),%ymm12,%ymm12 + + + vpaddq %ymm0,%ymm3,%ymm3 + vpaddq %ymm1,%ymm4,%ymm4 + vpaddq %ymm2,%ymm5,%ymm5 + vpaddq %ymm23,%ymm6,%ymm6 + vpaddq %ymm24,%ymm7,%ymm7 + vpaddq %ymm25,%ymm8,%ymm8 + vpaddq %ymm26,%ymm9,%ymm9 + vpaddq %ymm27,%ymm10,%ymm10 + vpaddq %ymm28,%ymm11,%ymm11 + vpaddq %ymm29,%ymm12,%ymm12 + + + + vpcmpuq $6,.Lmask52x4(%rip),%ymm3,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm4,%k2 + kmovb %k1,%r14d + kmovb %k2,%r13d + shlb $4,%r13b + orb %r13b,%r14b + + vpcmpuq $6,.Lmask52x4(%rip),%ymm5,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm6,%k2 + kmovb %k1,%r13d + kmovb %k2,%r12d + shlb $4,%r12b + orb %r12b,%r13b + + vpcmpuq $6,.Lmask52x4(%rip),%ymm7,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm8,%k2 + kmovb %k1,%r12d + kmovb %k2,%r11d + shlb $4,%r11b + orb %r11b,%r12b + + vpcmpuq $6,.Lmask52x4(%rip),%ymm9,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm10,%k2 + kmovb %k1,%r11d + kmovb %k2,%r10d + shlb $4,%r10b + orb %r10b,%r11b + + vpcmpuq $6,.Lmask52x4(%rip),%ymm11,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm12,%k2 + kmovb %k1,%r10d + kmovb %k2,%r9d + shlb $4,%r9b + orb %r9b,%r10b + + addb %r14b,%r14b + adcb %r13b,%r13b + adcb %r12b,%r12b + adcb %r11b,%r11b + adcb %r10b,%r10b + + + vpcmpuq $0,.Lmask52x4(%rip),%ymm3,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm4,%k2 + kmovb %k1,%r9d + kmovb %k2,%r8d + shlb $4,%r8b + orb %r8b,%r9b + + vpcmpuq $0,.Lmask52x4(%rip),%ymm5,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm6,%k2 + kmovb %k1,%r8d + kmovb %k2,%edx + shlb $4,%dl + orb %dl,%r8b + + vpcmpuq $0,.Lmask52x4(%rip),%ymm7,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm8,%k2 + kmovb %k1,%edx + kmovb %k2,%ecx + shlb $4,%cl + orb %cl,%dl + + vpcmpuq $0,.Lmask52x4(%rip),%ymm9,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm10,%k2 + kmovb %k1,%ecx + kmovb %k2,%ebx + shlb $4,%bl + orb %bl,%cl + + vpcmpuq $0,.Lmask52x4(%rip),%ymm11,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm12,%k2 + kmovb %k1,%ebx + kmovb %k2,%eax + shlb $4,%al + orb %al,%bl + + addb %r9b,%r14b + adcb %r8b,%r13b + adcb %dl,%r12b + adcb %cl,%r11b + adcb %bl,%r10b + + xorb %r9b,%r14b + xorb %r8b,%r13b + xorb %dl,%r12b + xorb %cl,%r11b + xorb %bl,%r10b + + kmovb %r14d,%k1 + shrb $4,%r14b + kmovb %r14d,%k2 + kmovb %r13d,%k3 + shrb $4,%r13b + kmovb %r13d,%k4 + kmovb %r12d,%k5 + shrb $4,%r12b + kmovb %r12d,%k6 + kmovb %r11d,%k7 + + vpsubq .Lmask52x4(%rip),%ymm3,%ymm3{%k1} + vpsubq .Lmask52x4(%rip),%ymm4,%ymm4{%k2} + vpsubq .Lmask52x4(%rip),%ymm5,%ymm5{%k3} + vpsubq .Lmask52x4(%rip),%ymm6,%ymm6{%k4} + vpsubq .Lmask52x4(%rip),%ymm7,%ymm7{%k5} + vpsubq .Lmask52x4(%rip),%ymm8,%ymm8{%k6} + vpsubq .Lmask52x4(%rip),%ymm9,%ymm9{%k7} + + vpandq .Lmask52x4(%rip),%ymm3,%ymm3 + vpandq .Lmask52x4(%rip),%ymm4,%ymm4 + vpandq .Lmask52x4(%rip),%ymm5,%ymm5 + vpandq .Lmask52x4(%rip),%ymm6,%ymm6 + vpandq .Lmask52x4(%rip),%ymm7,%ymm7 + vpandq .Lmask52x4(%rip),%ymm8,%ymm8 + vpandq .Lmask52x4(%rip),%ymm9,%ymm9 + + shrb $4,%r11b + kmovb %r11d,%k1 + kmovb %r10d,%k2 + shrb $4,%r10b + kmovb %r10d,%k3 + + vpsubq .Lmask52x4(%rip),%ymm10,%ymm10{%k1} + vpsubq .Lmask52x4(%rip),%ymm11,%ymm11{%k2} + vpsubq .Lmask52x4(%rip),%ymm12,%ymm12{%k3} + + vpandq .Lmask52x4(%rip),%ymm10,%ymm10 + vpandq .Lmask52x4(%rip),%ymm11,%ymm11 + vpandq .Lmask52x4(%rip),%ymm12,%ymm12 + + vmovdqu64 %ymm3,0(%rdi) + vmovdqu64 %ymm4,32(%rdi) + vmovdqu64 %ymm5,64(%rdi) + vmovdqu64 %ymm6,96(%rdi) + vmovdqu64 %ymm7,128(%rdi) + vmovdqu64 %ymm8,160(%rdi) + vmovdqu64 %ymm9,192(%rdi) + vmovdqu64 %ymm10,224(%rdi) + vmovdqu64 %ymm11,256(%rdi) + vmovdqu64 %ymm12,288(%rdi) + + vzeroupper + leaq (%rsp),%rax +.cfi_def_cfa_register %rax + movq 0(%rax),%r15 +.cfi_restore %r15 + movq 8(%rax),%r14 +.cfi_restore %r14 + movq 16(%rax),%r13 +.cfi_restore %r13 + movq 24(%rax),%r12 +.cfi_restore %r12 + movq 32(%rax),%rbp +.cfi_restore %rbp + movq 40(%rax),%rbx +.cfi_restore %rbx + leaq 48(%rax),%rsp +.cfi_def_cfa %rsp,8 +.Lossl_rsaz_amm52x40_x1_ifma256_epilogue: + + .byte 0xf3,0xc3 +.cfi_endproc +.size ossl_rsaz_amm52x40_x1_ifma256, .-ossl_rsaz_amm52x40_x1_ifma256 +.section .rodata +.align 32 +.Lmask52x4: +.quad 0xfffffffffffff +.quad 0xfffffffffffff +.quad 0xfffffffffffff +.quad 0xfffffffffffff +.text + +.globl ossl_rsaz_amm52x40_x2_ifma256 +.type ossl_rsaz_amm52x40_x2_ifma256,@function +.align 32 +ossl_rsaz_amm52x40_x2_ifma256: +.cfi_startproc +.byte 243,15,30,250 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + + vpxord %ymm0,%ymm0,%ymm0 + vmovdqa64 %ymm0,%ymm3 + vmovdqa64 %ymm0,%ymm4 + vmovdqa64 %ymm0,%ymm5 + vmovdqa64 %ymm0,%ymm6 + vmovdqa64 %ymm0,%ymm7 + vmovdqa64 %ymm0,%ymm8 + vmovdqa64 %ymm0,%ymm9 + vmovdqa64 %ymm0,%ymm10 + vmovdqa64 %ymm0,%ymm11 + vmovdqa64 %ymm0,%ymm12 + + vmovdqa64 %ymm0,%ymm13 + vmovdqa64 %ymm0,%ymm14 + vmovdqa64 %ymm0,%ymm15 + vmovdqa64 %ymm0,%ymm16 + vmovdqa64 %ymm0,%ymm17 + vmovdqa64 %ymm0,%ymm18 + vmovdqa64 %ymm0,%ymm19 + vmovdqa64 %ymm0,%ymm20 + vmovdqa64 %ymm0,%ymm21 + vmovdqa64 %ymm0,%ymm22 + + + xorl %r9d,%r9d + xorl %r15d,%r15d + + movq %rdx,%r11 + movq $0xfffffffffffff,%rax + + movl $40,%ebx + +.align 32 +.Lloop40: + movq 0(%r11),%r13 + + vpbroadcastq %r13,%ymm1 + movq 0(%rsi),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + movq %r12,%r10 + adcq $0,%r10 + + movq (%r8),%r13 + imulq %r9,%r13 + andq %rax,%r13 + + vpbroadcastq %r13,%ymm2 + movq 0(%rcx),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r9 + adcq %r12,%r10 + + shrq $52,%r9 + salq $12,%r10 + orq %r10,%r9 + + vpmadd52luq 0(%rsi),%ymm1,%ymm3 + vpmadd52luq 32(%rsi),%ymm1,%ymm4 + vpmadd52luq 64(%rsi),%ymm1,%ymm5 + vpmadd52luq 96(%rsi),%ymm1,%ymm6 + vpmadd52luq 128(%rsi),%ymm1,%ymm7 + vpmadd52luq 160(%rsi),%ymm1,%ymm8 + vpmadd52luq 192(%rsi),%ymm1,%ymm9 + vpmadd52luq 224(%rsi),%ymm1,%ymm10 + vpmadd52luq 256(%rsi),%ymm1,%ymm11 + vpmadd52luq 288(%rsi),%ymm1,%ymm12 + + vpmadd52luq 0(%rcx),%ymm2,%ymm3 + vpmadd52luq 32(%rcx),%ymm2,%ymm4 + vpmadd52luq 64(%rcx),%ymm2,%ymm5 + vpmadd52luq 96(%rcx),%ymm2,%ymm6 + vpmadd52luq 128(%rcx),%ymm2,%ymm7 + vpmadd52luq 160(%rcx),%ymm2,%ymm8 + vpmadd52luq 192(%rcx),%ymm2,%ymm9 + vpmadd52luq 224(%rcx),%ymm2,%ymm10 + vpmadd52luq 256(%rcx),%ymm2,%ymm11 + vpmadd52luq 288(%rcx),%ymm2,%ymm12 + + + valignq $1,%ymm3,%ymm4,%ymm3 + valignq $1,%ymm4,%ymm5,%ymm4 + valignq $1,%ymm5,%ymm6,%ymm5 + valignq $1,%ymm6,%ymm7,%ymm6 + valignq $1,%ymm7,%ymm8,%ymm7 + valignq $1,%ymm8,%ymm9,%ymm8 + valignq $1,%ymm9,%ymm10,%ymm9 + valignq $1,%ymm10,%ymm11,%ymm10 + valignq $1,%ymm11,%ymm12,%ymm11 + valignq $1,%ymm12,%ymm0,%ymm12 + + vmovq %xmm3,%r13 + addq %r13,%r9 + + vpmadd52huq 0(%rsi),%ymm1,%ymm3 + vpmadd52huq 32(%rsi),%ymm1,%ymm4 + vpmadd52huq 64(%rsi),%ymm1,%ymm5 + vpmadd52huq 96(%rsi),%ymm1,%ymm6 + vpmadd52huq 128(%rsi),%ymm1,%ymm7 + vpmadd52huq 160(%rsi),%ymm1,%ymm8 + vpmadd52huq 192(%rsi),%ymm1,%ymm9 + vpmadd52huq 224(%rsi),%ymm1,%ymm10 + vpmadd52huq 256(%rsi),%ymm1,%ymm11 + vpmadd52huq 288(%rsi),%ymm1,%ymm12 + + vpmadd52huq 0(%rcx),%ymm2,%ymm3 + vpmadd52huq 32(%rcx),%ymm2,%ymm4 + vpmadd52huq 64(%rcx),%ymm2,%ymm5 + vpmadd52huq 96(%rcx),%ymm2,%ymm6 + vpmadd52huq 128(%rcx),%ymm2,%ymm7 + vpmadd52huq 160(%rcx),%ymm2,%ymm8 + vpmadd52huq 192(%rcx),%ymm2,%ymm9 + vpmadd52huq 224(%rcx),%ymm2,%ymm10 + vpmadd52huq 256(%rcx),%ymm2,%ymm11 + vpmadd52huq 288(%rcx),%ymm2,%ymm12 + movq 320(%r11),%r13 + + vpbroadcastq %r13,%ymm1 + movq 320(%rsi),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r15 + movq %r12,%r10 + adcq $0,%r10 + + movq 8(%r8),%r13 + imulq %r15,%r13 + andq %rax,%r13 + + vpbroadcastq %r13,%ymm2 + movq 320(%rcx),%rdx + mulxq %r13,%r13,%r12 + addq %r13,%r15 + adcq %r12,%r10 + + shrq $52,%r15 + salq $12,%r10 + orq %r10,%r15 + + vpmadd52luq 320(%rsi),%ymm1,%ymm13 + vpmadd52luq 352(%rsi),%ymm1,%ymm14 + vpmadd52luq 384(%rsi),%ymm1,%ymm15 + vpmadd52luq 416(%rsi),%ymm1,%ymm16 + vpmadd52luq 448(%rsi),%ymm1,%ymm17 + vpmadd52luq 480(%rsi),%ymm1,%ymm18 + vpmadd52luq 512(%rsi),%ymm1,%ymm19 + vpmadd52luq 544(%rsi),%ymm1,%ymm20 + vpmadd52luq 576(%rsi),%ymm1,%ymm21 + vpmadd52luq 608(%rsi),%ymm1,%ymm22 + + vpmadd52luq 320(%rcx),%ymm2,%ymm13 + vpmadd52luq 352(%rcx),%ymm2,%ymm14 + vpmadd52luq 384(%rcx),%ymm2,%ymm15 + vpmadd52luq 416(%rcx),%ymm2,%ymm16 + vpmadd52luq 448(%rcx),%ymm2,%ymm17 + vpmadd52luq 480(%rcx),%ymm2,%ymm18 + vpmadd52luq 512(%rcx),%ymm2,%ymm19 + vpmadd52luq 544(%rcx),%ymm2,%ymm20 + vpmadd52luq 576(%rcx),%ymm2,%ymm21 + vpmadd52luq 608(%rcx),%ymm2,%ymm22 + + + valignq $1,%ymm13,%ymm14,%ymm13 + valignq $1,%ymm14,%ymm15,%ymm14 + valignq $1,%ymm15,%ymm16,%ymm15 + valignq $1,%ymm16,%ymm17,%ymm16 + valignq $1,%ymm17,%ymm18,%ymm17 + valignq $1,%ymm18,%ymm19,%ymm18 + valignq $1,%ymm19,%ymm20,%ymm19 + valignq $1,%ymm20,%ymm21,%ymm20 + valignq $1,%ymm21,%ymm22,%ymm21 + valignq $1,%ymm22,%ymm0,%ymm22 + + vmovq %xmm13,%r13 + addq %r13,%r15 + + vpmadd52huq 320(%rsi),%ymm1,%ymm13 + vpmadd52huq 352(%rsi),%ymm1,%ymm14 + vpmadd52huq 384(%rsi),%ymm1,%ymm15 + vpmadd52huq 416(%rsi),%ymm1,%ymm16 + vpmadd52huq 448(%rsi),%ymm1,%ymm17 + vpmadd52huq 480(%rsi),%ymm1,%ymm18 + vpmadd52huq 512(%rsi),%ymm1,%ymm19 + vpmadd52huq 544(%rsi),%ymm1,%ymm20 + vpmadd52huq 576(%rsi),%ymm1,%ymm21 + vpmadd52huq 608(%rsi),%ymm1,%ymm22 + + vpmadd52huq 320(%rcx),%ymm2,%ymm13 + vpmadd52huq 352(%rcx),%ymm2,%ymm14 + vpmadd52huq 384(%rcx),%ymm2,%ymm15 + vpmadd52huq 416(%rcx),%ymm2,%ymm16 + vpmadd52huq 448(%rcx),%ymm2,%ymm17 + vpmadd52huq 480(%rcx),%ymm2,%ymm18 + vpmadd52huq 512(%rcx),%ymm2,%ymm19 + vpmadd52huq 544(%rcx),%ymm2,%ymm20 + vpmadd52huq 576(%rcx),%ymm2,%ymm21 + vpmadd52huq 608(%rcx),%ymm2,%ymm22 + leaq 8(%r11),%r11 + decl %ebx + jne .Lloop40 + + vpbroadcastq %r9,%ymm0 + vpblendd $3,%ymm0,%ymm3,%ymm3 + + + + vpsrlq $52,%ymm3,%ymm0 + vpsrlq $52,%ymm4,%ymm1 + vpsrlq $52,%ymm5,%ymm2 + vpsrlq $52,%ymm6,%ymm23 + vpsrlq $52,%ymm7,%ymm24 + vpsrlq $52,%ymm8,%ymm25 + vpsrlq $52,%ymm9,%ymm26 + vpsrlq $52,%ymm10,%ymm27 + vpsrlq $52,%ymm11,%ymm28 + vpsrlq $52,%ymm12,%ymm29 + + + valignq $3,%ymm28,%ymm29,%ymm29 + valignq $3,%ymm27,%ymm28,%ymm28 + valignq $3,%ymm26,%ymm27,%ymm27 + valignq $3,%ymm25,%ymm26,%ymm26 + valignq $3,%ymm24,%ymm25,%ymm25 + valignq $3,%ymm23,%ymm24,%ymm24 + valignq $3,%ymm2,%ymm23,%ymm23 + valignq $3,%ymm1,%ymm2,%ymm2 + valignq $3,%ymm0,%ymm1,%ymm1 + valignq $3,.Lzeros(%rip),%ymm0,%ymm0 + + + vpandq .Lmask52x4(%rip),%ymm3,%ymm3 + vpandq .Lmask52x4(%rip),%ymm4,%ymm4 + vpandq .Lmask52x4(%rip),%ymm5,%ymm5 + vpandq .Lmask52x4(%rip),%ymm6,%ymm6 + vpandq .Lmask52x4(%rip),%ymm7,%ymm7 + vpandq .Lmask52x4(%rip),%ymm8,%ymm8 + vpandq .Lmask52x4(%rip),%ymm9,%ymm9 + vpandq .Lmask52x4(%rip),%ymm10,%ymm10 + vpandq .Lmask52x4(%rip),%ymm11,%ymm11 + vpandq .Lmask52x4(%rip),%ymm12,%ymm12 + + + vpaddq %ymm0,%ymm3,%ymm3 + vpaddq %ymm1,%ymm4,%ymm4 + vpaddq %ymm2,%ymm5,%ymm5 + vpaddq %ymm23,%ymm6,%ymm6 + vpaddq %ymm24,%ymm7,%ymm7 + vpaddq %ymm25,%ymm8,%ymm8 + vpaddq %ymm26,%ymm9,%ymm9 + vpaddq %ymm27,%ymm10,%ymm10 + vpaddq %ymm28,%ymm11,%ymm11 + vpaddq %ymm29,%ymm12,%ymm12 + + + + vpcmpuq $6,.Lmask52x4(%rip),%ymm3,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm4,%k2 + kmovb %k1,%r14d + kmovb %k2,%r13d + shlb $4,%r13b + orb %r13b,%r14b + + vpcmpuq $6,.Lmask52x4(%rip),%ymm5,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm6,%k2 + kmovb %k1,%r13d + kmovb %k2,%r12d + shlb $4,%r12b + orb %r12b,%r13b + + vpcmpuq $6,.Lmask52x4(%rip),%ymm7,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm8,%k2 + kmovb %k1,%r12d + kmovb %k2,%r11d + shlb $4,%r11b + orb %r11b,%r12b + + vpcmpuq $6,.Lmask52x4(%rip),%ymm9,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm10,%k2 + kmovb %k1,%r11d + kmovb %k2,%r10d + shlb $4,%r10b + orb %r10b,%r11b + + vpcmpuq $6,.Lmask52x4(%rip),%ymm11,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm12,%k2 + kmovb %k1,%r10d + kmovb %k2,%r9d + shlb $4,%r9b + orb %r9b,%r10b + + addb %r14b,%r14b + adcb %r13b,%r13b + adcb %r12b,%r12b + adcb %r11b,%r11b + adcb %r10b,%r10b + + + vpcmpuq $0,.Lmask52x4(%rip),%ymm3,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm4,%k2 + kmovb %k1,%r9d + kmovb %k2,%r8d + shlb $4,%r8b + orb %r8b,%r9b + + vpcmpuq $0,.Lmask52x4(%rip),%ymm5,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm6,%k2 + kmovb %k1,%r8d + kmovb %k2,%edx + shlb $4,%dl + orb %dl,%r8b + + vpcmpuq $0,.Lmask52x4(%rip),%ymm7,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm8,%k2 + kmovb %k1,%edx + kmovb %k2,%ecx + shlb $4,%cl + orb %cl,%dl + + vpcmpuq $0,.Lmask52x4(%rip),%ymm9,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm10,%k2 + kmovb %k1,%ecx + kmovb %k2,%ebx + shlb $4,%bl + orb %bl,%cl + + vpcmpuq $0,.Lmask52x4(%rip),%ymm11,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm12,%k2 + kmovb %k1,%ebx + kmovb %k2,%eax + shlb $4,%al + orb %al,%bl + + addb %r9b,%r14b + adcb %r8b,%r13b + adcb %dl,%r12b + adcb %cl,%r11b + adcb %bl,%r10b + + xorb %r9b,%r14b + xorb %r8b,%r13b + xorb %dl,%r12b + xorb %cl,%r11b + xorb %bl,%r10b + + kmovb %r14d,%k1 + shrb $4,%r14b + kmovb %r14d,%k2 + kmovb %r13d,%k3 + shrb $4,%r13b + kmovb %r13d,%k4 + kmovb %r12d,%k5 + shrb $4,%r12b + kmovb %r12d,%k6 + kmovb %r11d,%k7 + + vpsubq .Lmask52x4(%rip),%ymm3,%ymm3{%k1} + vpsubq .Lmask52x4(%rip),%ymm4,%ymm4{%k2} + vpsubq .Lmask52x4(%rip),%ymm5,%ymm5{%k3} + vpsubq .Lmask52x4(%rip),%ymm6,%ymm6{%k4} + vpsubq .Lmask52x4(%rip),%ymm7,%ymm7{%k5} + vpsubq .Lmask52x4(%rip),%ymm8,%ymm8{%k6} + vpsubq .Lmask52x4(%rip),%ymm9,%ymm9{%k7} + + vpandq .Lmask52x4(%rip),%ymm3,%ymm3 + vpandq .Lmask52x4(%rip),%ymm4,%ymm4 + vpandq .Lmask52x4(%rip),%ymm5,%ymm5 + vpandq .Lmask52x4(%rip),%ymm6,%ymm6 + vpandq .Lmask52x4(%rip),%ymm7,%ymm7 + vpandq .Lmask52x4(%rip),%ymm8,%ymm8 + vpandq .Lmask52x4(%rip),%ymm9,%ymm9 + + shrb $4,%r11b + kmovb %r11d,%k1 + kmovb %r10d,%k2 + shrb $4,%r10b + kmovb %r10d,%k3 + + vpsubq .Lmask52x4(%rip),%ymm10,%ymm10{%k1} + vpsubq .Lmask52x4(%rip),%ymm11,%ymm11{%k2} + vpsubq .Lmask52x4(%rip),%ymm12,%ymm12{%k3} + + vpandq .Lmask52x4(%rip),%ymm10,%ymm10 + vpandq .Lmask52x4(%rip),%ymm11,%ymm11 + vpandq .Lmask52x4(%rip),%ymm12,%ymm12 + + vpbroadcastq %r15,%ymm0 + vpblendd $3,%ymm0,%ymm13,%ymm13 + + + + vpsrlq $52,%ymm13,%ymm0 + vpsrlq $52,%ymm14,%ymm1 + vpsrlq $52,%ymm15,%ymm2 + vpsrlq $52,%ymm16,%ymm23 + vpsrlq $52,%ymm17,%ymm24 + vpsrlq $52,%ymm18,%ymm25 + vpsrlq $52,%ymm19,%ymm26 + vpsrlq $52,%ymm20,%ymm27 + vpsrlq $52,%ymm21,%ymm28 + vpsrlq $52,%ymm22,%ymm29 + + + valignq $3,%ymm28,%ymm29,%ymm29 + valignq $3,%ymm27,%ymm28,%ymm28 + valignq $3,%ymm26,%ymm27,%ymm27 + valignq $3,%ymm25,%ymm26,%ymm26 + valignq $3,%ymm24,%ymm25,%ymm25 + valignq $3,%ymm23,%ymm24,%ymm24 + valignq $3,%ymm2,%ymm23,%ymm23 + valignq $3,%ymm1,%ymm2,%ymm2 + valignq $3,%ymm0,%ymm1,%ymm1 + valignq $3,.Lzeros(%rip),%ymm0,%ymm0 + + + vpandq .Lmask52x4(%rip),%ymm13,%ymm13 + vpandq .Lmask52x4(%rip),%ymm14,%ymm14 + vpandq .Lmask52x4(%rip),%ymm15,%ymm15 + vpandq .Lmask52x4(%rip),%ymm16,%ymm16 + vpandq .Lmask52x4(%rip),%ymm17,%ymm17 + vpandq .Lmask52x4(%rip),%ymm18,%ymm18 + vpandq .Lmask52x4(%rip),%ymm19,%ymm19 + vpandq .Lmask52x4(%rip),%ymm20,%ymm20 + vpandq .Lmask52x4(%rip),%ymm21,%ymm21 + vpandq .Lmask52x4(%rip),%ymm22,%ymm22 + + + vpaddq %ymm0,%ymm13,%ymm13 + vpaddq %ymm1,%ymm14,%ymm14 + vpaddq %ymm2,%ymm15,%ymm15 + vpaddq %ymm23,%ymm16,%ymm16 + vpaddq %ymm24,%ymm17,%ymm17 + vpaddq %ymm25,%ymm18,%ymm18 + vpaddq %ymm26,%ymm19,%ymm19 + vpaddq %ymm27,%ymm20,%ymm20 + vpaddq %ymm28,%ymm21,%ymm21 + vpaddq %ymm29,%ymm22,%ymm22 + + + + vpcmpuq $6,.Lmask52x4(%rip),%ymm13,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm14,%k2 + kmovb %k1,%r14d + kmovb %k2,%r13d + shlb $4,%r13b + orb %r13b,%r14b + + vpcmpuq $6,.Lmask52x4(%rip),%ymm15,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm16,%k2 + kmovb %k1,%r13d + kmovb %k2,%r12d + shlb $4,%r12b + orb %r12b,%r13b + + vpcmpuq $6,.Lmask52x4(%rip),%ymm17,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm18,%k2 + kmovb %k1,%r12d + kmovb %k2,%r11d + shlb $4,%r11b + orb %r11b,%r12b + + vpcmpuq $6,.Lmask52x4(%rip),%ymm19,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm20,%k2 + kmovb %k1,%r11d + kmovb %k2,%r10d + shlb $4,%r10b + orb %r10b,%r11b + + vpcmpuq $6,.Lmask52x4(%rip),%ymm21,%k1 + vpcmpuq $6,.Lmask52x4(%rip),%ymm22,%k2 + kmovb %k1,%r10d + kmovb %k2,%r9d + shlb $4,%r9b + orb %r9b,%r10b + + addb %r14b,%r14b + adcb %r13b,%r13b + adcb %r12b,%r12b + adcb %r11b,%r11b + adcb %r10b,%r10b + + + vpcmpuq $0,.Lmask52x4(%rip),%ymm13,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm14,%k2 + kmovb %k1,%r9d + kmovb %k2,%r8d + shlb $4,%r8b + orb %r8b,%r9b + + vpcmpuq $0,.Lmask52x4(%rip),%ymm15,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm16,%k2 + kmovb %k1,%r8d + kmovb %k2,%edx + shlb $4,%dl + orb %dl,%r8b + + vpcmpuq $0,.Lmask52x4(%rip),%ymm17,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm18,%k2 + kmovb %k1,%edx + kmovb %k2,%ecx + shlb $4,%cl + orb %cl,%dl + + vpcmpuq $0,.Lmask52x4(%rip),%ymm19,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm20,%k2 + kmovb %k1,%ecx + kmovb %k2,%ebx + shlb $4,%bl + orb %bl,%cl + + vpcmpuq $0,.Lmask52x4(%rip),%ymm21,%k1 + vpcmpuq $0,.Lmask52x4(%rip),%ymm22,%k2 + kmovb %k1,%ebx + kmovb %k2,%eax + shlb $4,%al + orb %al,%bl + + addb %r9b,%r14b + adcb %r8b,%r13b + adcb %dl,%r12b + adcb %cl,%r11b + adcb %bl,%r10b + + xorb %r9b,%r14b + xorb %r8b,%r13b + xorb %dl,%r12b + xorb %cl,%r11b + xorb %bl,%r10b + + kmovb %r14d,%k1 + shrb $4,%r14b + kmovb %r14d,%k2 + kmovb %r13d,%k3 + shrb $4,%r13b + kmovb %r13d,%k4 + kmovb %r12d,%k5 + shrb $4,%r12b + kmovb %r12d,%k6 + kmovb %r11d,%k7 + + vpsubq .Lmask52x4(%rip),%ymm13,%ymm13{%k1} + vpsubq .Lmask52x4(%rip),%ymm14,%ymm14{%k2} + vpsubq .Lmask52x4(%rip),%ymm15,%ymm15{%k3} + vpsubq .Lmask52x4(%rip),%ymm16,%ymm16{%k4} + vpsubq .Lmask52x4(%rip),%ymm17,%ymm17{%k5} + vpsubq .Lmask52x4(%rip),%ymm18,%ymm18{%k6} + vpsubq .Lmask52x4(%rip),%ymm19,%ymm19{%k7} + + vpandq .Lmask52x4(%rip),%ymm13,%ymm13 + vpandq .Lmask52x4(%rip),%ymm14,%ymm14 + vpandq .Lmask52x4(%rip),%ymm15,%ymm15 + vpandq .Lmask52x4(%rip),%ymm16,%ymm16 + vpandq .Lmask52x4(%rip),%ymm17,%ymm17 + vpandq .Lmask52x4(%rip),%ymm18,%ymm18 + vpandq .Lmask52x4(%rip),%ymm19,%ymm19 + + shrb $4,%r11b + kmovb %r11d,%k1 + kmovb %r10d,%k2 + shrb $4,%r10b + kmovb %r10d,%k3 + + vpsubq .Lmask52x4(%rip),%ymm20,%ymm20{%k1} + vpsubq .Lmask52x4(%rip),%ymm21,%ymm21{%k2} + vpsubq .Lmask52x4(%rip),%ymm22,%ymm22{%k3} + + vpandq .Lmask52x4(%rip),%ymm20,%ymm20 + vpandq .Lmask52x4(%rip),%ymm21,%ymm21 + vpandq .Lmask52x4(%rip),%ymm22,%ymm22 + + vmovdqu64 %ymm3,0(%rdi) + vmovdqu64 %ymm4,32(%rdi) + vmovdqu64 %ymm5,64(%rdi) + vmovdqu64 %ymm6,96(%rdi) + vmovdqu64 %ymm7,128(%rdi) + vmovdqu64 %ymm8,160(%rdi) + vmovdqu64 %ymm9,192(%rdi) + vmovdqu64 %ymm10,224(%rdi) + vmovdqu64 %ymm11,256(%rdi) + vmovdqu64 %ymm12,288(%rdi) + + vmovdqu64 %ymm13,320(%rdi) + vmovdqu64 %ymm14,352(%rdi) + vmovdqu64 %ymm15,384(%rdi) + vmovdqu64 %ymm16,416(%rdi) + vmovdqu64 %ymm17,448(%rdi) + vmovdqu64 %ymm18,480(%rdi) + vmovdqu64 %ymm19,512(%rdi) + vmovdqu64 %ymm20,544(%rdi) + vmovdqu64 %ymm21,576(%rdi) + vmovdqu64 %ymm22,608(%rdi) + + vzeroupper + leaq (%rsp),%rax +.cfi_def_cfa_register %rax + movq 0(%rax),%r15 +.cfi_restore %r15 + movq 8(%rax),%r14 +.cfi_restore %r14 + movq 16(%rax),%r13 +.cfi_restore %r13 + movq 24(%rax),%r12 +.cfi_restore %r12 + movq 32(%rax),%rbp +.cfi_restore %rbp + movq 40(%rax),%rbx +.cfi_restore %rbx + leaq 48(%rax),%rsp +.cfi_def_cfa %rsp,8 +.Lossl_rsaz_amm52x40_x2_ifma256_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ossl_rsaz_amm52x40_x2_ifma256, .-ossl_rsaz_amm52x40_x2_ifma256 +.text + +.align 32 +.globl ossl_extract_multiplier_2x40_win5 +.type ossl_extract_multiplier_2x40_win5,@function +ossl_extract_multiplier_2x40_win5: +.cfi_startproc +.byte 243,15,30,250 + vmovdqa64 .Lones(%rip),%ymm24 + vpbroadcastq %rdx,%ymm22 + vpbroadcastq %rcx,%ymm23 + leaq 20480(%rsi),%rax + + + movq %rsi,%r10 + + + vpxor %xmm0,%xmm0,%xmm0 + vmovdqa64 %ymm0,%ymm1 + vmovdqa64 %ymm0,%ymm2 + vmovdqa64 %ymm0,%ymm3 + vmovdqa64 %ymm0,%ymm4 + vmovdqa64 %ymm0,%ymm5 + vmovdqa64 %ymm0,%ymm16 + vmovdqa64 %ymm0,%ymm17 + vmovdqa64 %ymm0,%ymm18 + vmovdqa64 %ymm0,%ymm19 + vpxorq %ymm21,%ymm21,%ymm21 +.align 32 +.Lloop_0: + vpcmpq $0,%ymm21,%ymm22,%k1 + vmovdqu64 0(%rsi),%ymm20 + vpblendmq %ymm20,%ymm0,%ymm0{%k1} + vmovdqu64 32(%rsi),%ymm20 + vpblendmq %ymm20,%ymm1,%ymm1{%k1} + vmovdqu64 64(%rsi),%ymm20 + vpblendmq %ymm20,%ymm2,%ymm2{%k1} + vmovdqu64 96(%rsi),%ymm20 + vpblendmq %ymm20,%ymm3,%ymm3{%k1} + vmovdqu64 128(%rsi),%ymm20 + vpblendmq %ymm20,%ymm4,%ymm4{%k1} + vmovdqu64 160(%rsi),%ymm20 + vpblendmq %ymm20,%ymm5,%ymm5{%k1} + vmovdqu64 192(%rsi),%ymm20 + vpblendmq %ymm20,%ymm16,%ymm16{%k1} + vmovdqu64 224(%rsi),%ymm20 + vpblendmq %ymm20,%ymm17,%ymm17{%k1} + vmovdqu64 256(%rsi),%ymm20 + vpblendmq %ymm20,%ymm18,%ymm18{%k1} + vmovdqu64 288(%rsi),%ymm20 + vpblendmq %ymm20,%ymm19,%ymm19{%k1} + vpaddq %ymm24,%ymm21,%ymm21 + addq $640,%rsi + cmpq %rsi,%rax + jne .Lloop_0 + vmovdqu64 %ymm0,0(%rdi) + vmovdqu64 %ymm1,32(%rdi) + vmovdqu64 %ymm2,64(%rdi) + vmovdqu64 %ymm3,96(%rdi) + vmovdqu64 %ymm4,128(%rdi) + vmovdqu64 %ymm5,160(%rdi) + vmovdqu64 %ymm16,192(%rdi) + vmovdqu64 %ymm17,224(%rdi) + vmovdqu64 %ymm18,256(%rdi) + vmovdqu64 %ymm19,288(%rdi) + movq %r10,%rsi + vpxorq %ymm21,%ymm21,%ymm21 +.align 32 +.Lloop_320: + vpcmpq $0,%ymm21,%ymm23,%k1 + vmovdqu64 320(%rsi),%ymm20 + vpblendmq %ymm20,%ymm0,%ymm0{%k1} + vmovdqu64 352(%rsi),%ymm20 + vpblendmq %ymm20,%ymm1,%ymm1{%k1} + vmovdqu64 384(%rsi),%ymm20 + vpblendmq %ymm20,%ymm2,%ymm2{%k1} + vmovdqu64 416(%rsi),%ymm20 + vpblendmq %ymm20,%ymm3,%ymm3{%k1} + vmovdqu64 448(%rsi),%ymm20 + vpblendmq %ymm20,%ymm4,%ymm4{%k1} + vmovdqu64 480(%rsi),%ymm20 + vpblendmq %ymm20,%ymm5,%ymm5{%k1} + vmovdqu64 512(%rsi),%ymm20 + vpblendmq %ymm20,%ymm16,%ymm16{%k1} + vmovdqu64 544(%rsi),%ymm20 + vpblendmq %ymm20,%ymm17,%ymm17{%k1} + vmovdqu64 576(%rsi),%ymm20 + vpblendmq %ymm20,%ymm18,%ymm18{%k1} + vmovdqu64 608(%rsi),%ymm20 + vpblendmq %ymm20,%ymm19,%ymm19{%k1} + vpaddq %ymm24,%ymm21,%ymm21 + addq $640,%rsi + cmpq %rsi,%rax + jne .Lloop_320 + vmovdqu64 %ymm0,320(%rdi) + vmovdqu64 %ymm1,352(%rdi) + vmovdqu64 %ymm2,384(%rdi) + vmovdqu64 %ymm3,416(%rdi) + vmovdqu64 %ymm4,448(%rdi) + vmovdqu64 %ymm5,480(%rdi) + vmovdqu64 %ymm16,512(%rdi) + vmovdqu64 %ymm17,544(%rdi) + vmovdqu64 %ymm18,576(%rdi) + vmovdqu64 %ymm19,608(%rdi) + + .byte 0xf3,0xc3 +.cfi_endproc +.size ossl_extract_multiplier_2x40_win5, .-ossl_extract_multiplier_2x40_win5 +.section .rodata +.align 32 +.Lones: +.quad 1,1,1,1 +.Lzeros: +.quad 0,0,0,0 + .section ".note.gnu.property", "a" + .p2align 3 + .long 1f - 0f + .long 4f - 1f + .long 5 +0: + # "GNU" encoded with .byte, since .asciz isn't supported + # on Solaris. + .byte 0x47 + .byte 0x4e + .byte 0x55 + .byte 0 +1: + .p2align 3 + .long 0xc0000002 + .long 3f - 2f +2: + .long 3 +3: + .p2align 3 +4: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-4k-avxifma.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-4k-avxifma.s new file mode 100644 index 00000000000000..57a577a61e58ce --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-4k-avxifma.s @@ -0,0 +1,33 @@ +.text + +.globl ossl_rsaz_amm52x40_x1_avxifma256 +.globl ossl_rsaz_amm52x40_x2_avxifma256 +.globl ossl_extract_multiplier_2x40_win5_avx +.type ossl_rsaz_amm52x40_x1_avxifma256,@function +ossl_rsaz_amm52x40_x1_avxifma256: +ossl_rsaz_amm52x40_x2_avxifma256: +ossl_extract_multiplier_2x40_win5_avx: +.byte 0x0f,0x0b + .byte 0xf3,0xc3 +.size ossl_rsaz_amm52x40_x1_avxifma256, .-ossl_rsaz_amm52x40_x1_avxifma256 + .section ".note.gnu.property", "a" + .p2align 3 + .long 1f - 0f + .long 4f - 1f + .long 5 +0: + # "GNU" encoded with .byte, since .asciz isn't supported + # on Solaris. + .byte 0x47 + .byte 0x4e + .byte 0x55 + .byte 0 +1: + .p2align 3 + .long 0xc0000002 + .long 3f - 2f +2: + .long 3 +3: + .p2align 3 +4: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-avx2.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-avx2.s index 80d6c817664518..f58e783167f07b 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-avx2.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-avx2.s @@ -1730,6 +1730,7 @@ rsaz_avx2_eligible: .byte 0xf3,0xc3 .size rsaz_avx2_eligible,.-rsaz_avx2_eligible +.section .rodata .align 64 .Land_mask: .quad 0x1fffffff,0x1fffffff,0x1fffffff,0x1fffffff @@ -1741,6 +1742,7 @@ rsaz_avx2_eligible: .long 0,0,0,0, 1,1,1,1 .long 2,2,2,2, 3,3,3,3 .long 4,4,4,4, 4,4,4,4 +.previous .align 64 .section ".note.gnu.property", "a" .p2align 3 diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-avx512.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-avx512.s deleted file mode 100644 index 9bbe8ebf7d9862..00000000000000 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-avx512.s +++ /dev/null @@ -1,901 +0,0 @@ - -.globl ossl_rsaz_avx512ifma_eligible -.type ossl_rsaz_avx512ifma_eligible,@function -.align 32 -ossl_rsaz_avx512ifma_eligible: - movl OPENSSL_ia32cap_P+8(%rip),%ecx - xorl %eax,%eax - andl $2149777408,%ecx - cmpl $2149777408,%ecx - cmovel %ecx,%eax - .byte 0xf3,0xc3 -.size ossl_rsaz_avx512ifma_eligible, .-ossl_rsaz_avx512ifma_eligible -.text - -.globl ossl_rsaz_amm52x20_x1_256 -.type ossl_rsaz_amm52x20_x1_256,@function -.align 32 -ossl_rsaz_amm52x20_x1_256: -.cfi_startproc -.byte 243,15,30,250 - pushq %rbx -.cfi_adjust_cfa_offset 8 -.cfi_offset %rbx,-16 - pushq %rbp -.cfi_adjust_cfa_offset 8 -.cfi_offset %rbp,-24 - pushq %r12 -.cfi_adjust_cfa_offset 8 -.cfi_offset %r12,-32 - pushq %r13 -.cfi_adjust_cfa_offset 8 -.cfi_offset %r13,-40 - pushq %r14 -.cfi_adjust_cfa_offset 8 -.cfi_offset %r14,-48 - pushq %r15 -.cfi_adjust_cfa_offset 8 -.cfi_offset %r15,-56 -.Lrsaz_amm52x20_x1_256_body: - - - vpxord %ymm0,%ymm0,%ymm0 - vmovdqa64 %ymm0,%ymm1 - vmovdqa64 %ymm0,%ymm16 - vmovdqa64 %ymm0,%ymm17 - vmovdqa64 %ymm0,%ymm18 - vmovdqa64 %ymm0,%ymm19 - - xorl %r9d,%r9d - - movq %rdx,%r11 - movq $0xfffffffffffff,%rax - - - movl $5,%ebx - -.align 32 -.Lloop5: - movq 0(%r11),%r13 - - vpbroadcastq %r13,%ymm3 - movq 0(%rsi),%rdx - mulxq %r13,%r13,%r12 - addq %r13,%r9 - movq %r12,%r10 - adcq $0,%r10 - - movq %r8,%r13 - imulq %r9,%r13 - andq %rax,%r13 - - vpbroadcastq %r13,%ymm4 - movq 0(%rcx),%rdx - mulxq %r13,%r13,%r12 - addq %r13,%r9 - adcq %r12,%r10 - - shrq $52,%r9 - salq $12,%r10 - orq %r10,%r9 - - vpmadd52luq 0(%rsi),%ymm3,%ymm1 - vpmadd52luq 32(%rsi),%ymm3,%ymm16 - vpmadd52luq 64(%rsi),%ymm3,%ymm17 - vpmadd52luq 96(%rsi),%ymm3,%ymm18 - vpmadd52luq 128(%rsi),%ymm3,%ymm19 - - vpmadd52luq 0(%rcx),%ymm4,%ymm1 - vpmadd52luq 32(%rcx),%ymm4,%ymm16 - vpmadd52luq 64(%rcx),%ymm4,%ymm17 - vpmadd52luq 96(%rcx),%ymm4,%ymm18 - vpmadd52luq 128(%rcx),%ymm4,%ymm19 - - - valignq $1,%ymm1,%ymm16,%ymm1 - valignq $1,%ymm16,%ymm17,%ymm16 - valignq $1,%ymm17,%ymm18,%ymm17 - valignq $1,%ymm18,%ymm19,%ymm18 - valignq $1,%ymm19,%ymm0,%ymm19 - - vmovq %xmm1,%r13 - addq %r13,%r9 - - vpmadd52huq 0(%rsi),%ymm3,%ymm1 - vpmadd52huq 32(%rsi),%ymm3,%ymm16 - vpmadd52huq 64(%rsi),%ymm3,%ymm17 - vpmadd52huq 96(%rsi),%ymm3,%ymm18 - vpmadd52huq 128(%rsi),%ymm3,%ymm19 - - vpmadd52huq 0(%rcx),%ymm4,%ymm1 - vpmadd52huq 32(%rcx),%ymm4,%ymm16 - vpmadd52huq 64(%rcx),%ymm4,%ymm17 - vpmadd52huq 96(%rcx),%ymm4,%ymm18 - vpmadd52huq 128(%rcx),%ymm4,%ymm19 - movq 8(%r11),%r13 - - vpbroadcastq %r13,%ymm3 - movq 0(%rsi),%rdx - mulxq %r13,%r13,%r12 - addq %r13,%r9 - movq %r12,%r10 - adcq $0,%r10 - - movq %r8,%r13 - imulq %r9,%r13 - andq %rax,%r13 - - vpbroadcastq %r13,%ymm4 - movq 0(%rcx),%rdx - mulxq %r13,%r13,%r12 - addq %r13,%r9 - adcq %r12,%r10 - - shrq $52,%r9 - salq $12,%r10 - orq %r10,%r9 - - vpmadd52luq 0(%rsi),%ymm3,%ymm1 - vpmadd52luq 32(%rsi),%ymm3,%ymm16 - vpmadd52luq 64(%rsi),%ymm3,%ymm17 - vpmadd52luq 96(%rsi),%ymm3,%ymm18 - vpmadd52luq 128(%rsi),%ymm3,%ymm19 - - vpmadd52luq 0(%rcx),%ymm4,%ymm1 - vpmadd52luq 32(%rcx),%ymm4,%ymm16 - vpmadd52luq 64(%rcx),%ymm4,%ymm17 - vpmadd52luq 96(%rcx),%ymm4,%ymm18 - vpmadd52luq 128(%rcx),%ymm4,%ymm19 - - - valignq $1,%ymm1,%ymm16,%ymm1 - valignq $1,%ymm16,%ymm17,%ymm16 - valignq $1,%ymm17,%ymm18,%ymm17 - valignq $1,%ymm18,%ymm19,%ymm18 - valignq $1,%ymm19,%ymm0,%ymm19 - - vmovq %xmm1,%r13 - addq %r13,%r9 - - vpmadd52huq 0(%rsi),%ymm3,%ymm1 - vpmadd52huq 32(%rsi),%ymm3,%ymm16 - vpmadd52huq 64(%rsi),%ymm3,%ymm17 - vpmadd52huq 96(%rsi),%ymm3,%ymm18 - vpmadd52huq 128(%rsi),%ymm3,%ymm19 - - vpmadd52huq 0(%rcx),%ymm4,%ymm1 - vpmadd52huq 32(%rcx),%ymm4,%ymm16 - vpmadd52huq 64(%rcx),%ymm4,%ymm17 - vpmadd52huq 96(%rcx),%ymm4,%ymm18 - vpmadd52huq 128(%rcx),%ymm4,%ymm19 - movq 16(%r11),%r13 - - vpbroadcastq %r13,%ymm3 - movq 0(%rsi),%rdx - mulxq %r13,%r13,%r12 - addq %r13,%r9 - movq %r12,%r10 - adcq $0,%r10 - - movq %r8,%r13 - imulq %r9,%r13 - andq %rax,%r13 - - vpbroadcastq %r13,%ymm4 - movq 0(%rcx),%rdx - mulxq %r13,%r13,%r12 - addq %r13,%r9 - adcq %r12,%r10 - - shrq $52,%r9 - salq $12,%r10 - orq %r10,%r9 - - vpmadd52luq 0(%rsi),%ymm3,%ymm1 - vpmadd52luq 32(%rsi),%ymm3,%ymm16 - vpmadd52luq 64(%rsi),%ymm3,%ymm17 - vpmadd52luq 96(%rsi),%ymm3,%ymm18 - vpmadd52luq 128(%rsi),%ymm3,%ymm19 - - vpmadd52luq 0(%rcx),%ymm4,%ymm1 - vpmadd52luq 32(%rcx),%ymm4,%ymm16 - vpmadd52luq 64(%rcx),%ymm4,%ymm17 - vpmadd52luq 96(%rcx),%ymm4,%ymm18 - vpmadd52luq 128(%rcx),%ymm4,%ymm19 - - - valignq $1,%ymm1,%ymm16,%ymm1 - valignq $1,%ymm16,%ymm17,%ymm16 - valignq $1,%ymm17,%ymm18,%ymm17 - valignq $1,%ymm18,%ymm19,%ymm18 - valignq $1,%ymm19,%ymm0,%ymm19 - - vmovq %xmm1,%r13 - addq %r13,%r9 - - vpmadd52huq 0(%rsi),%ymm3,%ymm1 - vpmadd52huq 32(%rsi),%ymm3,%ymm16 - vpmadd52huq 64(%rsi),%ymm3,%ymm17 - vpmadd52huq 96(%rsi),%ymm3,%ymm18 - vpmadd52huq 128(%rsi),%ymm3,%ymm19 - - vpmadd52huq 0(%rcx),%ymm4,%ymm1 - vpmadd52huq 32(%rcx),%ymm4,%ymm16 - vpmadd52huq 64(%rcx),%ymm4,%ymm17 - vpmadd52huq 96(%rcx),%ymm4,%ymm18 - vpmadd52huq 128(%rcx),%ymm4,%ymm19 - movq 24(%r11),%r13 - - vpbroadcastq %r13,%ymm3 - movq 0(%rsi),%rdx - mulxq %r13,%r13,%r12 - addq %r13,%r9 - movq %r12,%r10 - adcq $0,%r10 - - movq %r8,%r13 - imulq %r9,%r13 - andq %rax,%r13 - - vpbroadcastq %r13,%ymm4 - movq 0(%rcx),%rdx - mulxq %r13,%r13,%r12 - addq %r13,%r9 - adcq %r12,%r10 - - shrq $52,%r9 - salq $12,%r10 - orq %r10,%r9 - - vpmadd52luq 0(%rsi),%ymm3,%ymm1 - vpmadd52luq 32(%rsi),%ymm3,%ymm16 - vpmadd52luq 64(%rsi),%ymm3,%ymm17 - vpmadd52luq 96(%rsi),%ymm3,%ymm18 - vpmadd52luq 128(%rsi),%ymm3,%ymm19 - - vpmadd52luq 0(%rcx),%ymm4,%ymm1 - vpmadd52luq 32(%rcx),%ymm4,%ymm16 - vpmadd52luq 64(%rcx),%ymm4,%ymm17 - vpmadd52luq 96(%rcx),%ymm4,%ymm18 - vpmadd52luq 128(%rcx),%ymm4,%ymm19 - - - valignq $1,%ymm1,%ymm16,%ymm1 - valignq $1,%ymm16,%ymm17,%ymm16 - valignq $1,%ymm17,%ymm18,%ymm17 - valignq $1,%ymm18,%ymm19,%ymm18 - valignq $1,%ymm19,%ymm0,%ymm19 - - vmovq %xmm1,%r13 - addq %r13,%r9 - - vpmadd52huq 0(%rsi),%ymm3,%ymm1 - vpmadd52huq 32(%rsi),%ymm3,%ymm16 - vpmadd52huq 64(%rsi),%ymm3,%ymm17 - vpmadd52huq 96(%rsi),%ymm3,%ymm18 - vpmadd52huq 128(%rsi),%ymm3,%ymm19 - - vpmadd52huq 0(%rcx),%ymm4,%ymm1 - vpmadd52huq 32(%rcx),%ymm4,%ymm16 - vpmadd52huq 64(%rcx),%ymm4,%ymm17 - vpmadd52huq 96(%rcx),%ymm4,%ymm18 - vpmadd52huq 128(%rcx),%ymm4,%ymm19 - leaq 32(%r11),%r11 - decl %ebx - jne .Lloop5 - - vmovdqa64 .Lmask52x4(%rip),%ymm4 - - vpbroadcastq %r9,%ymm3 - vpblendd $3,%ymm3,%ymm1,%ymm1 - - - - vpsrlq $52,%ymm1,%ymm24 - vpsrlq $52,%ymm16,%ymm25 - vpsrlq $52,%ymm17,%ymm26 - vpsrlq $52,%ymm18,%ymm27 - vpsrlq $52,%ymm19,%ymm28 - - - valignq $3,%ymm27,%ymm28,%ymm28 - valignq $3,%ymm26,%ymm27,%ymm27 - valignq $3,%ymm25,%ymm26,%ymm26 - valignq $3,%ymm24,%ymm25,%ymm25 - valignq $3,%ymm0,%ymm24,%ymm24 - - - vpandq %ymm4,%ymm1,%ymm1 - vpandq %ymm4,%ymm16,%ymm16 - vpandq %ymm4,%ymm17,%ymm17 - vpandq %ymm4,%ymm18,%ymm18 - vpandq %ymm4,%ymm19,%ymm19 - - - vpaddq %ymm24,%ymm1,%ymm1 - vpaddq %ymm25,%ymm16,%ymm16 - vpaddq %ymm26,%ymm17,%ymm17 - vpaddq %ymm27,%ymm18,%ymm18 - vpaddq %ymm28,%ymm19,%ymm19 - - - - vpcmpuq $1,%ymm1,%ymm4,%k1 - vpcmpuq $1,%ymm16,%ymm4,%k2 - vpcmpuq $1,%ymm17,%ymm4,%k3 - vpcmpuq $1,%ymm18,%ymm4,%k4 - vpcmpuq $1,%ymm19,%ymm4,%k5 - kmovb %k1,%r14d - kmovb %k2,%r13d - kmovb %k3,%r12d - kmovb %k4,%r11d - kmovb %k5,%r10d - - - vpcmpuq $0,%ymm1,%ymm4,%k1 - vpcmpuq $0,%ymm16,%ymm4,%k2 - vpcmpuq $0,%ymm17,%ymm4,%k3 - vpcmpuq $0,%ymm18,%ymm4,%k4 - vpcmpuq $0,%ymm19,%ymm4,%k5 - kmovb %k1,%r9d - kmovb %k2,%r8d - kmovb %k3,%ebx - kmovb %k4,%ecx - kmovb %k5,%edx - - - - shlb $4,%r13b - orb %r13b,%r14b - shlb $4,%r11b - orb %r11b,%r12b - - addb %r14b,%r14b - adcb %r12b,%r12b - adcb %r10b,%r10b - - shlb $4,%r8b - orb %r8b,%r9b - shlb $4,%cl - orb %cl,%bl - - addb %r9b,%r14b - adcb %bl,%r12b - adcb %dl,%r10b - - xorb %r9b,%r14b - xorb %bl,%r12b - xorb %dl,%r10b - - kmovb %r14d,%k1 - shrb $4,%r14b - kmovb %r14d,%k2 - kmovb %r12d,%k3 - shrb $4,%r12b - kmovb %r12d,%k4 - kmovb %r10d,%k5 - - - vpsubq %ymm4,%ymm1,%ymm1{%k1} - vpsubq %ymm4,%ymm16,%ymm16{%k2} - vpsubq %ymm4,%ymm17,%ymm17{%k3} - vpsubq %ymm4,%ymm18,%ymm18{%k4} - vpsubq %ymm4,%ymm19,%ymm19{%k5} - - vpandq %ymm4,%ymm1,%ymm1 - vpandq %ymm4,%ymm16,%ymm16 - vpandq %ymm4,%ymm17,%ymm17 - vpandq %ymm4,%ymm18,%ymm18 - vpandq %ymm4,%ymm19,%ymm19 - - vmovdqu64 %ymm1,(%rdi) - vmovdqu64 %ymm16,32(%rdi) - vmovdqu64 %ymm17,64(%rdi) - vmovdqu64 %ymm18,96(%rdi) - vmovdqu64 %ymm19,128(%rdi) - - vzeroupper - movq 0(%rsp),%r15 -.cfi_restore %r15 - movq 8(%rsp),%r14 -.cfi_restore %r14 - movq 16(%rsp),%r13 -.cfi_restore %r13 - movq 24(%rsp),%r12 -.cfi_restore %r12 - movq 32(%rsp),%rbp -.cfi_restore %rbp - movq 40(%rsp),%rbx -.cfi_restore %rbx - leaq 48(%rsp),%rsp -.cfi_adjust_cfa_offset -48 -.Lrsaz_amm52x20_x1_256_epilogue: - .byte 0xf3,0xc3 -.cfi_endproc -.size ossl_rsaz_amm52x20_x1_256, .-ossl_rsaz_amm52x20_x1_256 -.data -.align 32 -.Lmask52x4: -.quad 0xfffffffffffff -.quad 0xfffffffffffff -.quad 0xfffffffffffff -.quad 0xfffffffffffff -.text - -.globl ossl_rsaz_amm52x20_x2_256 -.type ossl_rsaz_amm52x20_x2_256,@function -.align 32 -ossl_rsaz_amm52x20_x2_256: -.cfi_startproc -.byte 243,15,30,250 - pushq %rbx -.cfi_adjust_cfa_offset 8 -.cfi_offset %rbx,-16 - pushq %rbp -.cfi_adjust_cfa_offset 8 -.cfi_offset %rbp,-24 - pushq %r12 -.cfi_adjust_cfa_offset 8 -.cfi_offset %r12,-32 - pushq %r13 -.cfi_adjust_cfa_offset 8 -.cfi_offset %r13,-40 - pushq %r14 -.cfi_adjust_cfa_offset 8 -.cfi_offset %r14,-48 - pushq %r15 -.cfi_adjust_cfa_offset 8 -.cfi_offset %r15,-56 -.Lrsaz_amm52x20_x2_256_body: - - - vpxord %ymm0,%ymm0,%ymm0 - vmovdqa64 %ymm0,%ymm1 - vmovdqa64 %ymm0,%ymm16 - vmovdqa64 %ymm0,%ymm17 - vmovdqa64 %ymm0,%ymm18 - vmovdqa64 %ymm0,%ymm19 - vmovdqa64 %ymm0,%ymm2 - vmovdqa64 %ymm0,%ymm20 - vmovdqa64 %ymm0,%ymm21 - vmovdqa64 %ymm0,%ymm22 - vmovdqa64 %ymm0,%ymm23 - - xorl %r9d,%r9d - xorl %r15d,%r15d - - movq %rdx,%r11 - movq $0xfffffffffffff,%rax - - movl $20,%ebx - -.align 32 -.Lloop20: - movq 0(%r11),%r13 - - vpbroadcastq %r13,%ymm3 - movq 0(%rsi),%rdx - mulxq %r13,%r13,%r12 - addq %r13,%r9 - movq %r12,%r10 - adcq $0,%r10 - - movq (%r8),%r13 - imulq %r9,%r13 - andq %rax,%r13 - - vpbroadcastq %r13,%ymm4 - movq 0(%rcx),%rdx - mulxq %r13,%r13,%r12 - addq %r13,%r9 - adcq %r12,%r10 - - shrq $52,%r9 - salq $12,%r10 - orq %r10,%r9 - - vpmadd52luq 0(%rsi),%ymm3,%ymm1 - vpmadd52luq 32(%rsi),%ymm3,%ymm16 - vpmadd52luq 64(%rsi),%ymm3,%ymm17 - vpmadd52luq 96(%rsi),%ymm3,%ymm18 - vpmadd52luq 128(%rsi),%ymm3,%ymm19 - - vpmadd52luq 0(%rcx),%ymm4,%ymm1 - vpmadd52luq 32(%rcx),%ymm4,%ymm16 - vpmadd52luq 64(%rcx),%ymm4,%ymm17 - vpmadd52luq 96(%rcx),%ymm4,%ymm18 - vpmadd52luq 128(%rcx),%ymm4,%ymm19 - - - valignq $1,%ymm1,%ymm16,%ymm1 - valignq $1,%ymm16,%ymm17,%ymm16 - valignq $1,%ymm17,%ymm18,%ymm17 - valignq $1,%ymm18,%ymm19,%ymm18 - valignq $1,%ymm19,%ymm0,%ymm19 - - vmovq %xmm1,%r13 - addq %r13,%r9 - - vpmadd52huq 0(%rsi),%ymm3,%ymm1 - vpmadd52huq 32(%rsi),%ymm3,%ymm16 - vpmadd52huq 64(%rsi),%ymm3,%ymm17 - vpmadd52huq 96(%rsi),%ymm3,%ymm18 - vpmadd52huq 128(%rsi),%ymm3,%ymm19 - - vpmadd52huq 0(%rcx),%ymm4,%ymm1 - vpmadd52huq 32(%rcx),%ymm4,%ymm16 - vpmadd52huq 64(%rcx),%ymm4,%ymm17 - vpmadd52huq 96(%rcx),%ymm4,%ymm18 - vpmadd52huq 128(%rcx),%ymm4,%ymm19 - movq 160(%r11),%r13 - - vpbroadcastq %r13,%ymm3 - movq 160(%rsi),%rdx - mulxq %r13,%r13,%r12 - addq %r13,%r15 - movq %r12,%r10 - adcq $0,%r10 - - movq 8(%r8),%r13 - imulq %r15,%r13 - andq %rax,%r13 - - vpbroadcastq %r13,%ymm4 - movq 160(%rcx),%rdx - mulxq %r13,%r13,%r12 - addq %r13,%r15 - adcq %r12,%r10 - - shrq $52,%r15 - salq $12,%r10 - orq %r10,%r15 - - vpmadd52luq 160(%rsi),%ymm3,%ymm2 - vpmadd52luq 192(%rsi),%ymm3,%ymm20 - vpmadd52luq 224(%rsi),%ymm3,%ymm21 - vpmadd52luq 256(%rsi),%ymm3,%ymm22 - vpmadd52luq 288(%rsi),%ymm3,%ymm23 - - vpmadd52luq 160(%rcx),%ymm4,%ymm2 - vpmadd52luq 192(%rcx),%ymm4,%ymm20 - vpmadd52luq 224(%rcx),%ymm4,%ymm21 - vpmadd52luq 256(%rcx),%ymm4,%ymm22 - vpmadd52luq 288(%rcx),%ymm4,%ymm23 - - - valignq $1,%ymm2,%ymm20,%ymm2 - valignq $1,%ymm20,%ymm21,%ymm20 - valignq $1,%ymm21,%ymm22,%ymm21 - valignq $1,%ymm22,%ymm23,%ymm22 - valignq $1,%ymm23,%ymm0,%ymm23 - - vmovq %xmm2,%r13 - addq %r13,%r15 - - vpmadd52huq 160(%rsi),%ymm3,%ymm2 - vpmadd52huq 192(%rsi),%ymm3,%ymm20 - vpmadd52huq 224(%rsi),%ymm3,%ymm21 - vpmadd52huq 256(%rsi),%ymm3,%ymm22 - vpmadd52huq 288(%rsi),%ymm3,%ymm23 - - vpmadd52huq 160(%rcx),%ymm4,%ymm2 - vpmadd52huq 192(%rcx),%ymm4,%ymm20 - vpmadd52huq 224(%rcx),%ymm4,%ymm21 - vpmadd52huq 256(%rcx),%ymm4,%ymm22 - vpmadd52huq 288(%rcx),%ymm4,%ymm23 - leaq 8(%r11),%r11 - decl %ebx - jne .Lloop20 - - vmovdqa64 .Lmask52x4(%rip),%ymm4 - - vpbroadcastq %r9,%ymm3 - vpblendd $3,%ymm3,%ymm1,%ymm1 - - - - vpsrlq $52,%ymm1,%ymm24 - vpsrlq $52,%ymm16,%ymm25 - vpsrlq $52,%ymm17,%ymm26 - vpsrlq $52,%ymm18,%ymm27 - vpsrlq $52,%ymm19,%ymm28 - - - valignq $3,%ymm27,%ymm28,%ymm28 - valignq $3,%ymm26,%ymm27,%ymm27 - valignq $3,%ymm25,%ymm26,%ymm26 - valignq $3,%ymm24,%ymm25,%ymm25 - valignq $3,%ymm0,%ymm24,%ymm24 - - - vpandq %ymm4,%ymm1,%ymm1 - vpandq %ymm4,%ymm16,%ymm16 - vpandq %ymm4,%ymm17,%ymm17 - vpandq %ymm4,%ymm18,%ymm18 - vpandq %ymm4,%ymm19,%ymm19 - - - vpaddq %ymm24,%ymm1,%ymm1 - vpaddq %ymm25,%ymm16,%ymm16 - vpaddq %ymm26,%ymm17,%ymm17 - vpaddq %ymm27,%ymm18,%ymm18 - vpaddq %ymm28,%ymm19,%ymm19 - - - - vpcmpuq $1,%ymm1,%ymm4,%k1 - vpcmpuq $1,%ymm16,%ymm4,%k2 - vpcmpuq $1,%ymm17,%ymm4,%k3 - vpcmpuq $1,%ymm18,%ymm4,%k4 - vpcmpuq $1,%ymm19,%ymm4,%k5 - kmovb %k1,%r14d - kmovb %k2,%r13d - kmovb %k3,%r12d - kmovb %k4,%r11d - kmovb %k5,%r10d - - - vpcmpuq $0,%ymm1,%ymm4,%k1 - vpcmpuq $0,%ymm16,%ymm4,%k2 - vpcmpuq $0,%ymm17,%ymm4,%k3 - vpcmpuq $0,%ymm18,%ymm4,%k4 - vpcmpuq $0,%ymm19,%ymm4,%k5 - kmovb %k1,%r9d - kmovb %k2,%r8d - kmovb %k3,%ebx - kmovb %k4,%ecx - kmovb %k5,%edx - - - - shlb $4,%r13b - orb %r13b,%r14b - shlb $4,%r11b - orb %r11b,%r12b - - addb %r14b,%r14b - adcb %r12b,%r12b - adcb %r10b,%r10b - - shlb $4,%r8b - orb %r8b,%r9b - shlb $4,%cl - orb %cl,%bl - - addb %r9b,%r14b - adcb %bl,%r12b - adcb %dl,%r10b - - xorb %r9b,%r14b - xorb %bl,%r12b - xorb %dl,%r10b - - kmovb %r14d,%k1 - shrb $4,%r14b - kmovb %r14d,%k2 - kmovb %r12d,%k3 - shrb $4,%r12b - kmovb %r12d,%k4 - kmovb %r10d,%k5 - - - vpsubq %ymm4,%ymm1,%ymm1{%k1} - vpsubq %ymm4,%ymm16,%ymm16{%k2} - vpsubq %ymm4,%ymm17,%ymm17{%k3} - vpsubq %ymm4,%ymm18,%ymm18{%k4} - vpsubq %ymm4,%ymm19,%ymm19{%k5} - - vpandq %ymm4,%ymm1,%ymm1 - vpandq %ymm4,%ymm16,%ymm16 - vpandq %ymm4,%ymm17,%ymm17 - vpandq %ymm4,%ymm18,%ymm18 - vpandq %ymm4,%ymm19,%ymm19 - - vpbroadcastq %r15,%ymm3 - vpblendd $3,%ymm3,%ymm2,%ymm2 - - - - vpsrlq $52,%ymm2,%ymm24 - vpsrlq $52,%ymm20,%ymm25 - vpsrlq $52,%ymm21,%ymm26 - vpsrlq $52,%ymm22,%ymm27 - vpsrlq $52,%ymm23,%ymm28 - - - valignq $3,%ymm27,%ymm28,%ymm28 - valignq $3,%ymm26,%ymm27,%ymm27 - valignq $3,%ymm25,%ymm26,%ymm26 - valignq $3,%ymm24,%ymm25,%ymm25 - valignq $3,%ymm0,%ymm24,%ymm24 - - - vpandq %ymm4,%ymm2,%ymm2 - vpandq %ymm4,%ymm20,%ymm20 - vpandq %ymm4,%ymm21,%ymm21 - vpandq %ymm4,%ymm22,%ymm22 - vpandq %ymm4,%ymm23,%ymm23 - - - vpaddq %ymm24,%ymm2,%ymm2 - vpaddq %ymm25,%ymm20,%ymm20 - vpaddq %ymm26,%ymm21,%ymm21 - vpaddq %ymm27,%ymm22,%ymm22 - vpaddq %ymm28,%ymm23,%ymm23 - - - - vpcmpuq $1,%ymm2,%ymm4,%k1 - vpcmpuq $1,%ymm20,%ymm4,%k2 - vpcmpuq $1,%ymm21,%ymm4,%k3 - vpcmpuq $1,%ymm22,%ymm4,%k4 - vpcmpuq $1,%ymm23,%ymm4,%k5 - kmovb %k1,%r14d - kmovb %k2,%r13d - kmovb %k3,%r12d - kmovb %k4,%r11d - kmovb %k5,%r10d - - - vpcmpuq $0,%ymm2,%ymm4,%k1 - vpcmpuq $0,%ymm20,%ymm4,%k2 - vpcmpuq $0,%ymm21,%ymm4,%k3 - vpcmpuq $0,%ymm22,%ymm4,%k4 - vpcmpuq $0,%ymm23,%ymm4,%k5 - kmovb %k1,%r9d - kmovb %k2,%r8d - kmovb %k3,%ebx - kmovb %k4,%ecx - kmovb %k5,%edx - - - - shlb $4,%r13b - orb %r13b,%r14b - shlb $4,%r11b - orb %r11b,%r12b - - addb %r14b,%r14b - adcb %r12b,%r12b - adcb %r10b,%r10b - - shlb $4,%r8b - orb %r8b,%r9b - shlb $4,%cl - orb %cl,%bl - - addb %r9b,%r14b - adcb %bl,%r12b - adcb %dl,%r10b - - xorb %r9b,%r14b - xorb %bl,%r12b - xorb %dl,%r10b - - kmovb %r14d,%k1 - shrb $4,%r14b - kmovb %r14d,%k2 - kmovb %r12d,%k3 - shrb $4,%r12b - kmovb %r12d,%k4 - kmovb %r10d,%k5 - - - vpsubq %ymm4,%ymm2,%ymm2{%k1} - vpsubq %ymm4,%ymm20,%ymm20{%k2} - vpsubq %ymm4,%ymm21,%ymm21{%k3} - vpsubq %ymm4,%ymm22,%ymm22{%k4} - vpsubq %ymm4,%ymm23,%ymm23{%k5} - - vpandq %ymm4,%ymm2,%ymm2 - vpandq %ymm4,%ymm20,%ymm20 - vpandq %ymm4,%ymm21,%ymm21 - vpandq %ymm4,%ymm22,%ymm22 - vpandq %ymm4,%ymm23,%ymm23 - - vmovdqu64 %ymm1,(%rdi) - vmovdqu64 %ymm16,32(%rdi) - vmovdqu64 %ymm17,64(%rdi) - vmovdqu64 %ymm18,96(%rdi) - vmovdqu64 %ymm19,128(%rdi) - - vmovdqu64 %ymm2,160(%rdi) - vmovdqu64 %ymm20,192(%rdi) - vmovdqu64 %ymm21,224(%rdi) - vmovdqu64 %ymm22,256(%rdi) - vmovdqu64 %ymm23,288(%rdi) - - vzeroupper - movq 0(%rsp),%r15 -.cfi_restore %r15 - movq 8(%rsp),%r14 -.cfi_restore %r14 - movq 16(%rsp),%r13 -.cfi_restore %r13 - movq 24(%rsp),%r12 -.cfi_restore %r12 - movq 32(%rsp),%rbp -.cfi_restore %rbp - movq 40(%rsp),%rbx -.cfi_restore %rbx - leaq 48(%rsp),%rsp -.cfi_adjust_cfa_offset -48 -.Lrsaz_amm52x20_x2_256_epilogue: - .byte 0xf3,0xc3 -.cfi_endproc -.size ossl_rsaz_amm52x20_x2_256, .-ossl_rsaz_amm52x20_x2_256 -.text - -.align 32 -.globl ossl_extract_multiplier_2x20_win5 -.type ossl_extract_multiplier_2x20_win5,@function -ossl_extract_multiplier_2x20_win5: -.cfi_startproc -.byte 243,15,30,250 - leaq (%rcx,%rcx,4),%rax - salq $5,%rax - addq %rax,%rsi - - vmovdqa64 .Lones(%rip),%ymm23 - vpbroadcastq %rdx,%ymm22 - leaq 10240(%rsi),%rax - - vpxor %xmm4,%xmm4,%xmm4 - vmovdqa64 %ymm4,%ymm3 - vmovdqa64 %ymm4,%ymm2 - vmovdqa64 %ymm4,%ymm1 - vmovdqa64 %ymm4,%ymm0 - vmovdqa64 %ymm4,%ymm21 - -.align 32 -.Lloop: - vpcmpq $0,%ymm21,%ymm22,%k1 - addq $320,%rsi - vpaddq %ymm23,%ymm21,%ymm21 - vmovdqu64 -320(%rsi),%ymm16 - vmovdqu64 -288(%rsi),%ymm17 - vmovdqu64 -256(%rsi),%ymm18 - vmovdqu64 -224(%rsi),%ymm19 - vmovdqu64 -192(%rsi),%ymm20 - vpblendmq %ymm16,%ymm0,%ymm0{%k1} - vpblendmq %ymm17,%ymm1,%ymm1{%k1} - vpblendmq %ymm18,%ymm2,%ymm2{%k1} - vpblendmq %ymm19,%ymm3,%ymm3{%k1} - vpblendmq %ymm20,%ymm4,%ymm4{%k1} - cmpq %rsi,%rax - jne .Lloop - - vmovdqu64 %ymm0,(%rdi) - vmovdqu64 %ymm1,32(%rdi) - vmovdqu64 %ymm2,64(%rdi) - vmovdqu64 %ymm3,96(%rdi) - vmovdqu64 %ymm4,128(%rdi) - - .byte 0xf3,0xc3 -.cfi_endproc -.size ossl_extract_multiplier_2x20_win5, .-ossl_extract_multiplier_2x20_win5 -.data -.align 32 -.Lones: -.quad 1,1,1,1 - .section ".note.gnu.property", "a" - .p2align 3 - .long 1f - 0f - .long 4f - 1f - .long 5 -0: - # "GNU" encoded with .byte, since .asciz isn't supported - # on Solaris. - .byte 0x47 - .byte 0x4e - .byte 0x55 - .byte 0 -1: - .p2align 3 - .long 0xc0000002 - .long 3f - 2f -2: - .long 3 -3: - .p2align 3 -4: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-x86_64.s index 0b2513c819db21..ca03617e929446 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/rsaz-x86_64.s @@ -2009,10 +2009,12 @@ rsaz_512_gather4: .cfi_endproc .size rsaz_512_gather4,.-rsaz_512_gather4 +.section .rodata .align 64 .Linc: .long 0,0, 1,1 .long 2,2, 2,2 +.previous .section ".note.gnu.property", "a" .p2align 3 .long 1f - 0f diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/x86_64-mont5.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/x86_64-mont5.s index 0eb8b6c8b5c75b..1b7e7b922915f2 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/x86_64-mont5.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/x86_64-mont5.s @@ -3596,11 +3596,13 @@ bn_gather5: .LSEH_end_bn_gather5: .cfi_endproc .size bn_gather5,.-bn_gather5 +.section .rodata .align 64 .Linc: .long 0,0, 1,1 .long 2,2, 2,2 .byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,119,105,116,104,32,115,99,97,116,116,101,114,47,103,97,116,104,101,114,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.previous .section ".note.gnu.property", "a" .p2align 3 .long 1f - 0f diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h index 8b75c2e7cdad2a..4ae7a06068e541 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: BSD-x86_64" -#define DATE "built on: Sun Jul 20 00:46:18 2025 UTC" +#define DATE "built on: Tue Aug 5 17:11:01 2025 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/camellia/cmll-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/camellia/cmll-x86_64.s index 605c25d74be399..c1a9846b51cb0c 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/camellia/cmll-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/camellia/cmll-x86_64.s @@ -1144,6 +1144,7 @@ Camellia_Ekeygen: .byte 0xf3,0xc3 .cfi_endproc .size Camellia_Ekeygen,.-Camellia_Ekeygen +.section .rodata .align 64 .LCamellia_SIGMA: .long 0x3bcc908b, 0xa09e667f, 0x4caa73b2, 0xb67ae858 @@ -1663,6 +1664,7 @@ Camellia_Ekeygen: .long 0x008f8f8f,0xe300e3e3 .long 0x00010101,0x40004040 .long 0x003d3d3d,0x4f004f4f +.text .globl Camellia_cbc_encrypt .type Camellia_cbc_encrypt,@function .align 16 diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/chacha/chacha-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/chacha/chacha-x86_64.s index f8dea020745f9a..30425eb494c710 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/chacha/chacha-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/chacha/chacha-x86_64.s @@ -2,6 +2,7 @@ +.section .rodata .align 64 .Lzero: .long 0,0,0,0 @@ -33,6 +34,7 @@ .Lsigma: .byte 101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107,0 .byte 67,104,97,67,104,97,50,48,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.previous .globl ChaCha20_ctr32 .type ChaCha20_ctr32,@function .align 64 diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/ec/ecp_nistz256-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/ec/ecp_nistz256-x86_64.s index 284c11748946b8..0cf1f47a7e67f9 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/ec/ecp_nistz256-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/ec/ecp_nistz256-x86_64.s @@ -1,4 +1,4 @@ -.text +.section .rodata .globl ecp_nistz256_precomputed .type ecp_nistz256_precomputed,@object .align 4096 @@ -2376,6 +2376,7 @@ ecp_nistz256_precomputed: +.section .rodata .align 64 .Lpoly: .quad 0xffffffffffffffff, 0x00000000ffffffff, 0x0000000000000000, 0xffffffff00000001 @@ -2398,6 +2399,7 @@ ecp_nistz256_precomputed: .quad 0xf3b9cac2fc632551, 0xbce6faada7179e84, 0xffffffffffffffff, 0xffffffff00000000 .LordK: .quad 0xccd1c8aaee00bc4f +.previous .globl ecp_nistz256_mul_by_2 .type ecp_nistz256_mul_by_2,@function diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/md5/md5-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/md5/md5-x86_64.s index 85e1d0ca259271..6119335cb2e396 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/md5/md5-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/md5/md5-x86_64.s @@ -201,7 +201,7 @@ ossl_md5_block_asm_data_order: leal -165796510(%rax,%r10,1),%eax andl %ecx,%r11d movl 24(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%eax movl %ecx,%r11d addl %r12d,%eax movl %ecx,%r12d @@ -212,7 +212,7 @@ ossl_md5_block_asm_data_order: leal -1069501632(%rdx,%r10,1),%edx andl %ebx,%r11d movl 44(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%edx movl %ebx,%r11d addl %r12d,%edx movl %ebx,%r12d @@ -223,7 +223,7 @@ ossl_md5_block_asm_data_order: leal 643717713(%rcx,%r10,1),%ecx andl %eax,%r11d movl 0(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%ecx movl %eax,%r11d addl %r12d,%ecx movl %eax,%r12d @@ -234,7 +234,7 @@ ossl_md5_block_asm_data_order: leal -373897302(%rbx,%r10,1),%ebx andl %edx,%r11d movl 20(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%ebx movl %edx,%r11d addl %r12d,%ebx movl %edx,%r12d @@ -245,7 +245,7 @@ ossl_md5_block_asm_data_order: leal -701558691(%rax,%r10,1),%eax andl %ecx,%r11d movl 40(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%eax movl %ecx,%r11d addl %r12d,%eax movl %ecx,%r12d @@ -256,7 +256,7 @@ ossl_md5_block_asm_data_order: leal 38016083(%rdx,%r10,1),%edx andl %ebx,%r11d movl 60(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%edx movl %ebx,%r11d addl %r12d,%edx movl %ebx,%r12d @@ -267,7 +267,7 @@ ossl_md5_block_asm_data_order: leal -660478335(%rcx,%r10,1),%ecx andl %eax,%r11d movl 16(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%ecx movl %eax,%r11d addl %r12d,%ecx movl %eax,%r12d @@ -278,7 +278,7 @@ ossl_md5_block_asm_data_order: leal -405537848(%rbx,%r10,1),%ebx andl %edx,%r11d movl 36(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%ebx movl %edx,%r11d addl %r12d,%ebx movl %edx,%r12d @@ -289,7 +289,7 @@ ossl_md5_block_asm_data_order: leal 568446438(%rax,%r10,1),%eax andl %ecx,%r11d movl 56(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%eax movl %ecx,%r11d addl %r12d,%eax movl %ecx,%r12d @@ -300,7 +300,7 @@ ossl_md5_block_asm_data_order: leal -1019803690(%rdx,%r10,1),%edx andl %ebx,%r11d movl 12(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%edx movl %ebx,%r11d addl %r12d,%edx movl %ebx,%r12d @@ -311,7 +311,7 @@ ossl_md5_block_asm_data_order: leal -187363961(%rcx,%r10,1),%ecx andl %eax,%r11d movl 32(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%ecx movl %eax,%r11d addl %r12d,%ecx movl %eax,%r12d @@ -322,7 +322,7 @@ ossl_md5_block_asm_data_order: leal 1163531501(%rbx,%r10,1),%ebx andl %edx,%r11d movl 52(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%ebx movl %edx,%r11d addl %r12d,%ebx movl %edx,%r12d @@ -333,7 +333,7 @@ ossl_md5_block_asm_data_order: leal -1444681467(%rax,%r10,1),%eax andl %ecx,%r11d movl 8(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%eax movl %ecx,%r11d addl %r12d,%eax movl %ecx,%r12d @@ -344,7 +344,7 @@ ossl_md5_block_asm_data_order: leal -51403784(%rdx,%r10,1),%edx andl %ebx,%r11d movl 28(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%edx movl %ebx,%r11d addl %r12d,%edx movl %ebx,%r12d @@ -355,7 +355,7 @@ ossl_md5_block_asm_data_order: leal 1735328473(%rcx,%r10,1),%ecx andl %eax,%r11d movl 48(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%ecx movl %eax,%r11d addl %r12d,%ecx movl %eax,%r12d @@ -366,7 +366,7 @@ ossl_md5_block_asm_data_order: leal -1926607734(%rbx,%r10,1),%ebx andl %edx,%r11d movl 20(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%ebx movl %edx,%r11d addl %r12d,%ebx movl %edx,%r12d diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/modes/aes-gcm-avx512.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/modes/aes-gcm-avx512.s new file mode 100644 index 00000000000000..0d97b3fa41d869 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/modes/aes-gcm-avx512.s @@ -0,0 +1,136131 @@ + +.globl ossl_vaes_vpclmulqdq_capable +.type ossl_vaes_vpclmulqdq_capable,@function +.align 32 +ossl_vaes_vpclmulqdq_capable: + movq OPENSSL_ia32cap_P+8(%rip),%rcx + + movq $6600291188736,%rdx + xorl %eax,%eax + andq %rdx,%rcx + cmpq %rdx,%rcx + cmoveq %rcx,%rax + .byte 0xf3,0xc3 +.size ossl_vaes_vpclmulqdq_capable, .-ossl_vaes_vpclmulqdq_capable +.text +.globl ossl_aes_gcm_init_avx512 +.type ossl_aes_gcm_init_avx512,@function +.align 32 +ossl_aes_gcm_init_avx512: +.cfi_startproc +.byte 243,15,30,250 + vpxorq %xmm16,%xmm16,%xmm16 + + + movl 240(%rdi),%eax + cmpl $9,%eax + je .Laes_128_0 + cmpl $11,%eax + je .Laes_192_0 + cmpl $13,%eax + je .Laes_256_0 + jmp .Lexit_aes_0 +.align 32 +.Laes_128_0: + vpxorq 0(%rdi),%xmm16,%xmm16 + + vaesenc 16(%rdi),%xmm16,%xmm16 + + vaesenc 32(%rdi),%xmm16,%xmm16 + + vaesenc 48(%rdi),%xmm16,%xmm16 + + vaesenc 64(%rdi),%xmm16,%xmm16 + + vaesenc 80(%rdi),%xmm16,%xmm16 + + vaesenc 96(%rdi),%xmm16,%xmm16 + + vaesenc 112(%rdi),%xmm16,%xmm16 + + vaesenc 128(%rdi),%xmm16,%xmm16 + + vaesenc 144(%rdi),%xmm16,%xmm16 + + vaesenclast 160(%rdi),%xmm16,%xmm16 + jmp .Lexit_aes_0 +.align 32 +.Laes_192_0: + vpxorq 0(%rdi),%xmm16,%xmm16 + + vaesenc 16(%rdi),%xmm16,%xmm16 + + vaesenc 32(%rdi),%xmm16,%xmm16 + + vaesenc 48(%rdi),%xmm16,%xmm16 + + vaesenc 64(%rdi),%xmm16,%xmm16 + + vaesenc 80(%rdi),%xmm16,%xmm16 + + vaesenc 96(%rdi),%xmm16,%xmm16 + + vaesenc 112(%rdi),%xmm16,%xmm16 + + vaesenc 128(%rdi),%xmm16,%xmm16 + + vaesenc 144(%rdi),%xmm16,%xmm16 + + vaesenc 160(%rdi),%xmm16,%xmm16 + + vaesenc 176(%rdi),%xmm16,%xmm16 + + vaesenclast 192(%rdi),%xmm16,%xmm16 + jmp .Lexit_aes_0 +.align 32 +.Laes_256_0: + vpxorq 0(%rdi),%xmm16,%xmm16 + + vaesenc 16(%rdi),%xmm16,%xmm16 + + vaesenc 32(%rdi),%xmm16,%xmm16 + + vaesenc 48(%rdi),%xmm16,%xmm16 + + vaesenc 64(%rdi),%xmm16,%xmm16 + + vaesenc 80(%rdi),%xmm16,%xmm16 + + vaesenc 96(%rdi),%xmm16,%xmm16 + + vaesenc 112(%rdi),%xmm16,%xmm16 + + vaesenc 128(%rdi),%xmm16,%xmm16 + + vaesenc 144(%rdi),%xmm16,%xmm16 + + vaesenc 160(%rdi),%xmm16,%xmm16 + + vaesenc 176(%rdi),%xmm16,%xmm16 + + vaesenc 192(%rdi),%xmm16,%xmm16 + + vaesenc 208(%rdi),%xmm16,%xmm16 + + vaesenclast 224(%rdi),%xmm16,%xmm16 + jmp .Lexit_aes_0 +.Lexit_aes_0: + + vpshufb SHUF_MASK(%rip),%xmm16,%xmm16 + + vmovdqa64 %xmm16,%xmm2 + vpsllq $1,%xmm16,%xmm16 + vpsrlq $63,%xmm2,%xmm2 + vmovdqa %xmm2,%xmm1 + vpslldq $8,%xmm2,%xmm2 + vpsrldq $8,%xmm1,%xmm1 + vporq %xmm2,%xmm16,%xmm16 + + vpshufd $36,%xmm1,%xmm2 + vpcmpeqd TWOONE(%rip),%xmm2,%xmm2 + vpand POLY(%rip),%xmm2,%xmm2 + vpxorq %xmm2,%xmm16,%xmm16 + + vmovdqu64 %xmm16,336(%rsi) + vshufi32x4 $0x00,%ymm16,%ymm16,%ymm4 + vmovdqa %ymm4,%ymm3 + + vpclmulqdq $0x11,%ymm4,%ymm3,%ymm0 + vpclmulqdq $0x00,%ymm4,%ymm3,%ymm1 + vpclmulqdq $0x01,%ymm4,%ymm3,%ymm2 + vpclmulqdq $0x10,%ymm4,%ymm3,%ymm3 + vpxorq %ymm2,%ymm3,%ymm3 + + vpsrldq $8,%ymm3,%ymm2 + vpslldq $8,%ymm3,%ymm3 + vpxorq %ymm2,%ymm0,%ymm0 + vpxorq %ymm1,%ymm3,%ymm3 + + + + vmovdqu64 POLY2(%rip),%ymm2 + + vpclmulqdq $0x01,%ymm3,%ymm2,%ymm1 + vpslldq $8,%ymm1,%ymm1 + vpxorq %ymm1,%ymm3,%ymm3 + + + + vpclmulqdq $0x00,%ymm3,%ymm2,%ymm1 + vpsrldq $4,%ymm1,%ymm1 + vpclmulqdq $0x10,%ymm3,%ymm2,%ymm3 + vpslldq $4,%ymm3,%ymm3 + + vpternlogq $0x96,%ymm1,%ymm0,%ymm3 + + vmovdqu64 %xmm3,320(%rsi) + vinserti64x2 $1,%xmm16,%ymm3,%ymm4 + vmovdqa64 %ymm4,%ymm5 + + vpclmulqdq $0x11,%ymm3,%ymm4,%ymm0 + vpclmulqdq $0x00,%ymm3,%ymm4,%ymm1 + vpclmulqdq $0x01,%ymm3,%ymm4,%ymm2 + vpclmulqdq $0x10,%ymm3,%ymm4,%ymm4 + vpxorq %ymm2,%ymm4,%ymm4 + + vpsrldq $8,%ymm4,%ymm2 + vpslldq $8,%ymm4,%ymm4 + vpxorq %ymm2,%ymm0,%ymm0 + vpxorq %ymm1,%ymm4,%ymm4 + + + + vmovdqu64 POLY2(%rip),%ymm2 + + vpclmulqdq $0x01,%ymm4,%ymm2,%ymm1 + vpslldq $8,%ymm1,%ymm1 + vpxorq %ymm1,%ymm4,%ymm4 + + + + vpclmulqdq $0x00,%ymm4,%ymm2,%ymm1 + vpsrldq $4,%ymm1,%ymm1 + vpclmulqdq $0x10,%ymm4,%ymm2,%ymm4 + vpslldq $4,%ymm4,%ymm4 + + vpternlogq $0x96,%ymm1,%ymm0,%ymm4 + + vmovdqu64 %ymm4,288(%rsi) + + vinserti64x4 $1,%ymm5,%zmm4,%zmm4 + + + vshufi64x2 $0x00,%zmm4,%zmm4,%zmm3 + vmovdqa64 %zmm4,%zmm5 + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm0 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm1 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm2 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm2,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm2 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm2,%zmm0,%zmm0 + vpxorq %zmm1,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm2 + + vpclmulqdq $0x01,%zmm4,%zmm2,%zmm1 + vpslldq $8,%zmm1,%zmm1 + vpxorq %zmm1,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm2,%zmm1 + vpsrldq $4,%zmm1,%zmm1 + vpclmulqdq $0x10,%zmm4,%zmm2,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm1,%zmm0,%zmm4 + + vmovdqu64 %zmm4,224(%rsi) + vshufi64x2 $0x00,%zmm4,%zmm4,%zmm3 + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm0 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm1 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm2 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm2,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm2 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm2,%zmm0,%zmm0 + vpxorq %zmm1,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm2 + + vpclmulqdq $0x01,%zmm5,%zmm2,%zmm1 + vpslldq $8,%zmm1,%zmm1 + vpxorq %zmm1,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm2,%zmm1 + vpsrldq $4,%zmm1,%zmm1 + vpclmulqdq $0x10,%zmm5,%zmm2,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm1,%zmm0,%zmm5 + + vmovdqu64 %zmm5,160(%rsi) + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm0 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm1 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm2 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm2,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm2 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm2,%zmm0,%zmm0 + vpxorq %zmm1,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm2 + + vpclmulqdq $0x01,%zmm4,%zmm2,%zmm1 + vpslldq $8,%zmm1,%zmm1 + vpxorq %zmm1,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm2,%zmm1 + vpsrldq $4,%zmm1,%zmm1 + vpclmulqdq $0x10,%zmm4,%zmm2,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm1,%zmm0,%zmm4 + + vmovdqu64 %zmm4,96(%rsi) + vzeroupper +.Labort_init: + .byte 0xf3,0xc3 +.cfi_endproc +.size ossl_aes_gcm_init_avx512, .-ossl_aes_gcm_init_avx512 +.globl ossl_aes_gcm_setiv_avx512 +.type ossl_aes_gcm_setiv_avx512,@function +.align 32 +ossl_aes_gcm_setiv_avx512: +.cfi_startproc +.Lsetiv_seh_begin: +.byte 243,15,30,250 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 +.Lsetiv_seh_push_rbx: + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 +.Lsetiv_seh_push_rbp: + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 +.Lsetiv_seh_push_r12: + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 +.Lsetiv_seh_push_r13: + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 +.Lsetiv_seh_push_r14: + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 +.Lsetiv_seh_push_r15: + + + + + + + + + + + leaq 0(%rsp),%rbp +.cfi_def_cfa_register %rbp +.Lsetiv_seh_setfp: + +.Lsetiv_seh_prolog_end: + subq $820,%rsp + andq $(-64),%rsp + cmpq $12,%rcx + je iv_len_12_init_IV + vpxor %xmm2,%xmm2,%xmm2 + movq %rdx,%r10 + movq %rcx,%r11 + orq %r11,%r11 + jz .L_CALC_AAD_done_1 + + xorq %rbx,%rbx + vmovdqa64 SHUF_MASK(%rip),%zmm16 + +.L_get_AAD_loop48x16_1: + cmpq $768,%r11 + jl .L_exit_AAD_loop48x16_1 + vmovdqu64 0(%r10),%zmm11 + vmovdqu64 64(%r10),%zmm3 + vmovdqu64 128(%r10),%zmm4 + vmovdqu64 192(%r10),%zmm5 + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %zmm16,%zmm4,%zmm4 + vpshufb %zmm16,%zmm5,%zmm5 + testq %rbx,%rbx + jnz .L_skip_hkeys_precomputation_2 + + vmovdqu64 288(%rsi),%zmm1 + vmovdqu64 %zmm1,704(%rsp) + + vmovdqu64 224(%rsi),%zmm9 + vmovdqu64 %zmm9,640(%rsp) + + + vshufi64x2 $0x00,%zmm9,%zmm9,%zmm9 + + vmovdqu64 160(%rsi),%zmm10 + vmovdqu64 %zmm10,576(%rsp) + + vmovdqu64 96(%rsi),%zmm12 + vmovdqu64 %zmm12,512(%rsp) + + vpclmulqdq $0x11,%zmm9,%zmm10,%zmm13 + vpclmulqdq $0x00,%zmm9,%zmm10,%zmm15 + vpclmulqdq $0x01,%zmm9,%zmm10,%zmm17 + vpclmulqdq $0x10,%zmm9,%zmm10,%zmm10 + vpxorq %zmm17,%zmm10,%zmm10 + + vpsrldq $8,%zmm10,%zmm17 + vpslldq $8,%zmm10,%zmm10 + vpxorq %zmm17,%zmm13,%zmm13 + vpxorq %zmm15,%zmm10,%zmm10 + + + + vmovdqu64 POLY2(%rip),%zmm17 + + vpclmulqdq $0x01,%zmm10,%zmm17,%zmm15 + vpslldq $8,%zmm15,%zmm15 + vpxorq %zmm15,%zmm10,%zmm10 + + + + vpclmulqdq $0x00,%zmm10,%zmm17,%zmm15 + vpsrldq $4,%zmm15,%zmm15 + vpclmulqdq $0x10,%zmm10,%zmm17,%zmm10 + vpslldq $4,%zmm10,%zmm10 + + vpternlogq $0x96,%zmm15,%zmm13,%zmm10 + + vmovdqu64 %zmm10,448(%rsp) + + vpclmulqdq $0x11,%zmm9,%zmm12,%zmm13 + vpclmulqdq $0x00,%zmm9,%zmm12,%zmm15 + vpclmulqdq $0x01,%zmm9,%zmm12,%zmm17 + vpclmulqdq $0x10,%zmm9,%zmm12,%zmm12 + vpxorq %zmm17,%zmm12,%zmm12 + + vpsrldq $8,%zmm12,%zmm17 + vpslldq $8,%zmm12,%zmm12 + vpxorq %zmm17,%zmm13,%zmm13 + vpxorq %zmm15,%zmm12,%zmm12 + + + + vmovdqu64 POLY2(%rip),%zmm17 + + vpclmulqdq $0x01,%zmm12,%zmm17,%zmm15 + vpslldq $8,%zmm15,%zmm15 + vpxorq %zmm15,%zmm12,%zmm12 + + + + vpclmulqdq $0x00,%zmm12,%zmm17,%zmm15 + vpsrldq $4,%zmm15,%zmm15 + vpclmulqdq $0x10,%zmm12,%zmm17,%zmm12 + vpslldq $4,%zmm12,%zmm12 + + vpternlogq $0x96,%zmm15,%zmm13,%zmm12 + + vmovdqu64 %zmm12,384(%rsp) + + vpclmulqdq $0x11,%zmm9,%zmm10,%zmm13 + vpclmulqdq $0x00,%zmm9,%zmm10,%zmm15 + vpclmulqdq $0x01,%zmm9,%zmm10,%zmm17 + vpclmulqdq $0x10,%zmm9,%zmm10,%zmm10 + vpxorq %zmm17,%zmm10,%zmm10 + + vpsrldq $8,%zmm10,%zmm17 + vpslldq $8,%zmm10,%zmm10 + vpxorq %zmm17,%zmm13,%zmm13 + vpxorq %zmm15,%zmm10,%zmm10 + + + + vmovdqu64 POLY2(%rip),%zmm17 + + vpclmulqdq $0x01,%zmm10,%zmm17,%zmm15 + vpslldq $8,%zmm15,%zmm15 + vpxorq %zmm15,%zmm10,%zmm10 + + + + vpclmulqdq $0x00,%zmm10,%zmm17,%zmm15 + vpsrldq $4,%zmm15,%zmm15 + vpclmulqdq $0x10,%zmm10,%zmm17,%zmm10 + vpslldq $4,%zmm10,%zmm10 + + vpternlogq $0x96,%zmm15,%zmm13,%zmm10 + + vmovdqu64 %zmm10,320(%rsp) + + vpclmulqdq $0x11,%zmm9,%zmm12,%zmm13 + vpclmulqdq $0x00,%zmm9,%zmm12,%zmm15 + vpclmulqdq $0x01,%zmm9,%zmm12,%zmm17 + vpclmulqdq $0x10,%zmm9,%zmm12,%zmm12 + vpxorq %zmm17,%zmm12,%zmm12 + + vpsrldq $8,%zmm12,%zmm17 + vpslldq $8,%zmm12,%zmm12 + vpxorq %zmm17,%zmm13,%zmm13 + vpxorq %zmm15,%zmm12,%zmm12 + + + + vmovdqu64 POLY2(%rip),%zmm17 + + vpclmulqdq $0x01,%zmm12,%zmm17,%zmm15 + vpslldq $8,%zmm15,%zmm15 + vpxorq %zmm15,%zmm12,%zmm12 + + + + vpclmulqdq $0x00,%zmm12,%zmm17,%zmm15 + vpsrldq $4,%zmm15,%zmm15 + vpclmulqdq $0x10,%zmm12,%zmm17,%zmm12 + vpslldq $4,%zmm12,%zmm12 + + vpternlogq $0x96,%zmm15,%zmm13,%zmm12 + + vmovdqu64 %zmm12,256(%rsp) + + vpclmulqdq $0x11,%zmm9,%zmm10,%zmm13 + vpclmulqdq $0x00,%zmm9,%zmm10,%zmm15 + vpclmulqdq $0x01,%zmm9,%zmm10,%zmm17 + vpclmulqdq $0x10,%zmm9,%zmm10,%zmm10 + vpxorq %zmm17,%zmm10,%zmm10 + + vpsrldq $8,%zmm10,%zmm17 + vpslldq $8,%zmm10,%zmm10 + vpxorq %zmm17,%zmm13,%zmm13 + vpxorq %zmm15,%zmm10,%zmm10 + + + + vmovdqu64 POLY2(%rip),%zmm17 + + vpclmulqdq $0x01,%zmm10,%zmm17,%zmm15 + vpslldq $8,%zmm15,%zmm15 + vpxorq %zmm15,%zmm10,%zmm10 + + + + vpclmulqdq $0x00,%zmm10,%zmm17,%zmm15 + vpsrldq $4,%zmm15,%zmm15 + vpclmulqdq $0x10,%zmm10,%zmm17,%zmm10 + vpslldq $4,%zmm10,%zmm10 + + vpternlogq $0x96,%zmm15,%zmm13,%zmm10 + + vmovdqu64 %zmm10,192(%rsp) + + vpclmulqdq $0x11,%zmm9,%zmm12,%zmm13 + vpclmulqdq $0x00,%zmm9,%zmm12,%zmm15 + vpclmulqdq $0x01,%zmm9,%zmm12,%zmm17 + vpclmulqdq $0x10,%zmm9,%zmm12,%zmm12 + vpxorq %zmm17,%zmm12,%zmm12 + + vpsrldq $8,%zmm12,%zmm17 + vpslldq $8,%zmm12,%zmm12 + vpxorq %zmm17,%zmm13,%zmm13 + vpxorq %zmm15,%zmm12,%zmm12 + + + + vmovdqu64 POLY2(%rip),%zmm17 + + vpclmulqdq $0x01,%zmm12,%zmm17,%zmm15 + vpslldq $8,%zmm15,%zmm15 + vpxorq %zmm15,%zmm12,%zmm12 + + + + vpclmulqdq $0x00,%zmm12,%zmm17,%zmm15 + vpsrldq $4,%zmm15,%zmm15 + vpclmulqdq $0x10,%zmm12,%zmm17,%zmm12 + vpslldq $4,%zmm12,%zmm12 + + vpternlogq $0x96,%zmm15,%zmm13,%zmm12 + + vmovdqu64 %zmm12,128(%rsp) + + vpclmulqdq $0x11,%zmm9,%zmm10,%zmm13 + vpclmulqdq $0x00,%zmm9,%zmm10,%zmm15 + vpclmulqdq $0x01,%zmm9,%zmm10,%zmm17 + vpclmulqdq $0x10,%zmm9,%zmm10,%zmm10 + vpxorq %zmm17,%zmm10,%zmm10 + + vpsrldq $8,%zmm10,%zmm17 + vpslldq $8,%zmm10,%zmm10 + vpxorq %zmm17,%zmm13,%zmm13 + vpxorq %zmm15,%zmm10,%zmm10 + + + + vmovdqu64 POLY2(%rip),%zmm17 + + vpclmulqdq $0x01,%zmm10,%zmm17,%zmm15 + vpslldq $8,%zmm15,%zmm15 + vpxorq %zmm15,%zmm10,%zmm10 + + + + vpclmulqdq $0x00,%zmm10,%zmm17,%zmm15 + vpsrldq $4,%zmm15,%zmm15 + vpclmulqdq $0x10,%zmm10,%zmm17,%zmm10 + vpslldq $4,%zmm10,%zmm10 + + vpternlogq $0x96,%zmm15,%zmm13,%zmm10 + + vmovdqu64 %zmm10,64(%rsp) + + vpclmulqdq $0x11,%zmm9,%zmm12,%zmm13 + vpclmulqdq $0x00,%zmm9,%zmm12,%zmm15 + vpclmulqdq $0x01,%zmm9,%zmm12,%zmm17 + vpclmulqdq $0x10,%zmm9,%zmm12,%zmm12 + vpxorq %zmm17,%zmm12,%zmm12 + + vpsrldq $8,%zmm12,%zmm17 + vpslldq $8,%zmm12,%zmm12 + vpxorq %zmm17,%zmm13,%zmm13 + vpxorq %zmm15,%zmm12,%zmm12 + + + + vmovdqu64 POLY2(%rip),%zmm17 + + vpclmulqdq $0x01,%zmm12,%zmm17,%zmm15 + vpslldq $8,%zmm15,%zmm15 + vpxorq %zmm15,%zmm12,%zmm12 + + + + vpclmulqdq $0x00,%zmm12,%zmm17,%zmm15 + vpsrldq $4,%zmm15,%zmm15 + vpclmulqdq $0x10,%zmm12,%zmm17,%zmm12 + vpslldq $4,%zmm12,%zmm12 + + vpternlogq $0x96,%zmm15,%zmm13,%zmm12 + + vmovdqu64 %zmm12,0(%rsp) +.L_skip_hkeys_precomputation_2: + movq $1,%rbx + vpxorq %zmm2,%zmm11,%zmm11 + vmovdqu64 0(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm19,%zmm11,%zmm9 + vpclmulqdq $0x01,%zmm19,%zmm11,%zmm10 + vpclmulqdq $0x10,%zmm19,%zmm11,%zmm12 + vmovdqu64 64(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm3,%zmm13 + vpclmulqdq $0x00,%zmm19,%zmm3,%zmm15 + vpclmulqdq $0x01,%zmm19,%zmm3,%zmm17 + vpclmulqdq $0x10,%zmm19,%zmm3,%zmm18 + vpxorq %zmm17,%zmm10,%zmm7 + vpxorq %zmm13,%zmm1,%zmm6 + vpxorq %zmm15,%zmm9,%zmm8 + vpternlogq $0x96,%zmm18,%zmm12,%zmm7 + vmovdqu64 128(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm4,%zmm1 + vpclmulqdq $0x00,%zmm19,%zmm4,%zmm9 + vpclmulqdq $0x01,%zmm19,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm19,%zmm4,%zmm12 + vmovdqu64 192(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm5,%zmm13 + vpclmulqdq $0x00,%zmm19,%zmm5,%zmm15 + vpclmulqdq $0x01,%zmm19,%zmm5,%zmm17 + vpclmulqdq $0x10,%zmm19,%zmm5,%zmm18 + + vpternlogq $0x96,%zmm17,%zmm10,%zmm7 + vpternlogq $0x96,%zmm13,%zmm1,%zmm6 + vpternlogq $0x96,%zmm15,%zmm9,%zmm8 + vpternlogq $0x96,%zmm18,%zmm12,%zmm7 + vmovdqu64 256(%r10),%zmm11 + vmovdqu64 320(%r10),%zmm3 + vmovdqu64 384(%r10),%zmm4 + vmovdqu64 448(%r10),%zmm5 + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %zmm16,%zmm4,%zmm4 + vpshufb %zmm16,%zmm5,%zmm5 + vmovdqu64 256(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm19,%zmm11,%zmm9 + vpclmulqdq $0x01,%zmm19,%zmm11,%zmm10 + vpclmulqdq $0x10,%zmm19,%zmm11,%zmm12 + vmovdqu64 320(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm3,%zmm13 + vpclmulqdq $0x00,%zmm19,%zmm3,%zmm15 + vpclmulqdq $0x01,%zmm19,%zmm3,%zmm17 + vpclmulqdq $0x10,%zmm19,%zmm3,%zmm18 + vpternlogq $0x96,%zmm17,%zmm10,%zmm7 + vpternlogq $0x96,%zmm13,%zmm1,%zmm6 + vpternlogq $0x96,%zmm15,%zmm9,%zmm8 + vpternlogq $0x96,%zmm18,%zmm12,%zmm7 + vmovdqu64 384(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm4,%zmm1 + vpclmulqdq $0x00,%zmm19,%zmm4,%zmm9 + vpclmulqdq $0x01,%zmm19,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm19,%zmm4,%zmm12 + vmovdqu64 448(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm5,%zmm13 + vpclmulqdq $0x00,%zmm19,%zmm5,%zmm15 + vpclmulqdq $0x01,%zmm19,%zmm5,%zmm17 + vpclmulqdq $0x10,%zmm19,%zmm5,%zmm18 + + vpternlogq $0x96,%zmm17,%zmm10,%zmm7 + vpternlogq $0x96,%zmm13,%zmm1,%zmm6 + vpternlogq $0x96,%zmm15,%zmm9,%zmm8 + vpternlogq $0x96,%zmm18,%zmm12,%zmm7 + vmovdqu64 512(%r10),%zmm11 + vmovdqu64 576(%r10),%zmm3 + vmovdqu64 640(%r10),%zmm4 + vmovdqu64 704(%r10),%zmm5 + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %zmm16,%zmm4,%zmm4 + vpshufb %zmm16,%zmm5,%zmm5 + vmovdqu64 512(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm19,%zmm11,%zmm9 + vpclmulqdq $0x01,%zmm19,%zmm11,%zmm10 + vpclmulqdq $0x10,%zmm19,%zmm11,%zmm12 + vmovdqu64 576(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm3,%zmm13 + vpclmulqdq $0x00,%zmm19,%zmm3,%zmm15 + vpclmulqdq $0x01,%zmm19,%zmm3,%zmm17 + vpclmulqdq $0x10,%zmm19,%zmm3,%zmm18 + vpternlogq $0x96,%zmm17,%zmm10,%zmm7 + vpternlogq $0x96,%zmm13,%zmm1,%zmm6 + vpternlogq $0x96,%zmm15,%zmm9,%zmm8 + vpternlogq $0x96,%zmm18,%zmm12,%zmm7 + vmovdqu64 640(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm4,%zmm1 + vpclmulqdq $0x00,%zmm19,%zmm4,%zmm9 + vpclmulqdq $0x01,%zmm19,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm19,%zmm4,%zmm12 + vmovdqu64 704(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm5,%zmm13 + vpclmulqdq $0x00,%zmm19,%zmm5,%zmm15 + vpclmulqdq $0x01,%zmm19,%zmm5,%zmm17 + vpclmulqdq $0x10,%zmm19,%zmm5,%zmm18 + + vpternlogq $0x96,%zmm17,%zmm10,%zmm7 + vpternlogq $0x96,%zmm13,%zmm1,%zmm6 + vpternlogq $0x96,%zmm15,%zmm9,%zmm8 + vpternlogq $0x96,%zmm18,%zmm12,%zmm7 + + vpsrldq $8,%zmm7,%zmm1 + vpslldq $8,%zmm7,%zmm9 + vpxorq %zmm1,%zmm6,%zmm6 + vpxorq %zmm9,%zmm8,%zmm8 + vextracti64x4 $1,%zmm6,%ymm1 + vpxorq %ymm1,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm1 + vpxorq %xmm1,%xmm6,%xmm6 + vextracti64x4 $1,%zmm8,%ymm9 + vpxorq %ymm9,%ymm8,%ymm8 + vextracti32x4 $1,%ymm8,%xmm9 + vpxorq %xmm9,%xmm8,%xmm8 + vmovdqa64 POLY2(%rip),%xmm10 + + + vpclmulqdq $0x01,%xmm8,%xmm10,%xmm1 + vpslldq $8,%xmm1,%xmm1 + vpxorq %xmm1,%xmm8,%xmm1 + + + vpclmulqdq $0x00,%xmm1,%xmm10,%xmm9 + vpsrldq $4,%xmm9,%xmm9 + vpclmulqdq $0x10,%xmm1,%xmm10,%xmm2 + vpslldq $4,%xmm2,%xmm2 + vpternlogq $0x96,%xmm6,%xmm9,%xmm2 + + subq $768,%r11 + je .L_CALC_AAD_done_1 + + addq $768,%r10 + jmp .L_get_AAD_loop48x16_1 + +.L_exit_AAD_loop48x16_1: + + cmpq $512,%r11 + jl .L_less_than_32x16_1 + + vmovdqu64 0(%r10),%zmm11 + vmovdqu64 64(%r10),%zmm3 + vmovdqu64 128(%r10),%zmm4 + vmovdqu64 192(%r10),%zmm5 + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %zmm16,%zmm4,%zmm4 + vpshufb %zmm16,%zmm5,%zmm5 + testq %rbx,%rbx + jnz .L_skip_hkeys_precomputation_3 + + vmovdqu64 288(%rsi),%zmm1 + vmovdqu64 %zmm1,704(%rsp) + + vmovdqu64 224(%rsi),%zmm9 + vmovdqu64 %zmm9,640(%rsp) + + + vshufi64x2 $0x00,%zmm9,%zmm9,%zmm9 + + vmovdqu64 160(%rsi),%zmm10 + vmovdqu64 %zmm10,576(%rsp) + + vmovdqu64 96(%rsi),%zmm12 + vmovdqu64 %zmm12,512(%rsp) + + vpclmulqdq $0x11,%zmm9,%zmm10,%zmm13 + vpclmulqdq $0x00,%zmm9,%zmm10,%zmm15 + vpclmulqdq $0x01,%zmm9,%zmm10,%zmm17 + vpclmulqdq $0x10,%zmm9,%zmm10,%zmm10 + vpxorq %zmm17,%zmm10,%zmm10 + + vpsrldq $8,%zmm10,%zmm17 + vpslldq $8,%zmm10,%zmm10 + vpxorq %zmm17,%zmm13,%zmm13 + vpxorq %zmm15,%zmm10,%zmm10 + + + + vmovdqu64 POLY2(%rip),%zmm17 + + vpclmulqdq $0x01,%zmm10,%zmm17,%zmm15 + vpslldq $8,%zmm15,%zmm15 + vpxorq %zmm15,%zmm10,%zmm10 + + + + vpclmulqdq $0x00,%zmm10,%zmm17,%zmm15 + vpsrldq $4,%zmm15,%zmm15 + vpclmulqdq $0x10,%zmm10,%zmm17,%zmm10 + vpslldq $4,%zmm10,%zmm10 + + vpternlogq $0x96,%zmm15,%zmm13,%zmm10 + + vmovdqu64 %zmm10,448(%rsp) + + vpclmulqdq $0x11,%zmm9,%zmm12,%zmm13 + vpclmulqdq $0x00,%zmm9,%zmm12,%zmm15 + vpclmulqdq $0x01,%zmm9,%zmm12,%zmm17 + vpclmulqdq $0x10,%zmm9,%zmm12,%zmm12 + vpxorq %zmm17,%zmm12,%zmm12 + + vpsrldq $8,%zmm12,%zmm17 + vpslldq $8,%zmm12,%zmm12 + vpxorq %zmm17,%zmm13,%zmm13 + vpxorq %zmm15,%zmm12,%zmm12 + + + + vmovdqu64 POLY2(%rip),%zmm17 + + vpclmulqdq $0x01,%zmm12,%zmm17,%zmm15 + vpslldq $8,%zmm15,%zmm15 + vpxorq %zmm15,%zmm12,%zmm12 + + + + vpclmulqdq $0x00,%zmm12,%zmm17,%zmm15 + vpsrldq $4,%zmm15,%zmm15 + vpclmulqdq $0x10,%zmm12,%zmm17,%zmm12 + vpslldq $4,%zmm12,%zmm12 + + vpternlogq $0x96,%zmm15,%zmm13,%zmm12 + + vmovdqu64 %zmm12,384(%rsp) + + vpclmulqdq $0x11,%zmm9,%zmm10,%zmm13 + vpclmulqdq $0x00,%zmm9,%zmm10,%zmm15 + vpclmulqdq $0x01,%zmm9,%zmm10,%zmm17 + vpclmulqdq $0x10,%zmm9,%zmm10,%zmm10 + vpxorq %zmm17,%zmm10,%zmm10 + + vpsrldq $8,%zmm10,%zmm17 + vpslldq $8,%zmm10,%zmm10 + vpxorq %zmm17,%zmm13,%zmm13 + vpxorq %zmm15,%zmm10,%zmm10 + + + + vmovdqu64 POLY2(%rip),%zmm17 + + vpclmulqdq $0x01,%zmm10,%zmm17,%zmm15 + vpslldq $8,%zmm15,%zmm15 + vpxorq %zmm15,%zmm10,%zmm10 + + + + vpclmulqdq $0x00,%zmm10,%zmm17,%zmm15 + vpsrldq $4,%zmm15,%zmm15 + vpclmulqdq $0x10,%zmm10,%zmm17,%zmm10 + vpslldq $4,%zmm10,%zmm10 + + vpternlogq $0x96,%zmm15,%zmm13,%zmm10 + + vmovdqu64 %zmm10,320(%rsp) + + vpclmulqdq $0x11,%zmm9,%zmm12,%zmm13 + vpclmulqdq $0x00,%zmm9,%zmm12,%zmm15 + vpclmulqdq $0x01,%zmm9,%zmm12,%zmm17 + vpclmulqdq $0x10,%zmm9,%zmm12,%zmm12 + vpxorq %zmm17,%zmm12,%zmm12 + + vpsrldq $8,%zmm12,%zmm17 + vpslldq $8,%zmm12,%zmm12 + vpxorq %zmm17,%zmm13,%zmm13 + vpxorq %zmm15,%zmm12,%zmm12 + + + + vmovdqu64 POLY2(%rip),%zmm17 + + vpclmulqdq $0x01,%zmm12,%zmm17,%zmm15 + vpslldq $8,%zmm15,%zmm15 + vpxorq %zmm15,%zmm12,%zmm12 + + + + vpclmulqdq $0x00,%zmm12,%zmm17,%zmm15 + vpsrldq $4,%zmm15,%zmm15 + vpclmulqdq $0x10,%zmm12,%zmm17,%zmm12 + vpslldq $4,%zmm12,%zmm12 + + vpternlogq $0x96,%zmm15,%zmm13,%zmm12 + + vmovdqu64 %zmm12,256(%rsp) +.L_skip_hkeys_precomputation_3: + movq $1,%rbx + vpxorq %zmm2,%zmm11,%zmm11 + vmovdqu64 256(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm19,%zmm11,%zmm9 + vpclmulqdq $0x01,%zmm19,%zmm11,%zmm10 + vpclmulqdq $0x10,%zmm19,%zmm11,%zmm12 + vmovdqu64 320(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm3,%zmm13 + vpclmulqdq $0x00,%zmm19,%zmm3,%zmm15 + vpclmulqdq $0x01,%zmm19,%zmm3,%zmm17 + vpclmulqdq $0x10,%zmm19,%zmm3,%zmm18 + vpxorq %zmm17,%zmm10,%zmm7 + vpxorq %zmm13,%zmm1,%zmm6 + vpxorq %zmm15,%zmm9,%zmm8 + vpternlogq $0x96,%zmm18,%zmm12,%zmm7 + vmovdqu64 384(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm4,%zmm1 + vpclmulqdq $0x00,%zmm19,%zmm4,%zmm9 + vpclmulqdq $0x01,%zmm19,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm19,%zmm4,%zmm12 + vmovdqu64 448(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm5,%zmm13 + vpclmulqdq $0x00,%zmm19,%zmm5,%zmm15 + vpclmulqdq $0x01,%zmm19,%zmm5,%zmm17 + vpclmulqdq $0x10,%zmm19,%zmm5,%zmm18 + + vpternlogq $0x96,%zmm17,%zmm10,%zmm7 + vpternlogq $0x96,%zmm13,%zmm1,%zmm6 + vpternlogq $0x96,%zmm15,%zmm9,%zmm8 + vpternlogq $0x96,%zmm18,%zmm12,%zmm7 + vmovdqu64 256(%r10),%zmm11 + vmovdqu64 320(%r10),%zmm3 + vmovdqu64 384(%r10),%zmm4 + vmovdqu64 448(%r10),%zmm5 + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %zmm16,%zmm4,%zmm4 + vpshufb %zmm16,%zmm5,%zmm5 + vmovdqu64 512(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm19,%zmm11,%zmm9 + vpclmulqdq $0x01,%zmm19,%zmm11,%zmm10 + vpclmulqdq $0x10,%zmm19,%zmm11,%zmm12 + vmovdqu64 576(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm3,%zmm13 + vpclmulqdq $0x00,%zmm19,%zmm3,%zmm15 + vpclmulqdq $0x01,%zmm19,%zmm3,%zmm17 + vpclmulqdq $0x10,%zmm19,%zmm3,%zmm18 + vpternlogq $0x96,%zmm17,%zmm10,%zmm7 + vpternlogq $0x96,%zmm13,%zmm1,%zmm6 + vpternlogq $0x96,%zmm15,%zmm9,%zmm8 + vpternlogq $0x96,%zmm18,%zmm12,%zmm7 + vmovdqu64 640(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm4,%zmm1 + vpclmulqdq $0x00,%zmm19,%zmm4,%zmm9 + vpclmulqdq $0x01,%zmm19,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm19,%zmm4,%zmm12 + vmovdqu64 704(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm5,%zmm13 + vpclmulqdq $0x00,%zmm19,%zmm5,%zmm15 + vpclmulqdq $0x01,%zmm19,%zmm5,%zmm17 + vpclmulqdq $0x10,%zmm19,%zmm5,%zmm18 + + vpternlogq $0x96,%zmm17,%zmm10,%zmm7 + vpternlogq $0x96,%zmm13,%zmm1,%zmm6 + vpternlogq $0x96,%zmm15,%zmm9,%zmm8 + vpternlogq $0x96,%zmm18,%zmm12,%zmm7 + + vpsrldq $8,%zmm7,%zmm1 + vpslldq $8,%zmm7,%zmm9 + vpxorq %zmm1,%zmm6,%zmm6 + vpxorq %zmm9,%zmm8,%zmm8 + vextracti64x4 $1,%zmm6,%ymm1 + vpxorq %ymm1,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm1 + vpxorq %xmm1,%xmm6,%xmm6 + vextracti64x4 $1,%zmm8,%ymm9 + vpxorq %ymm9,%ymm8,%ymm8 + vextracti32x4 $1,%ymm8,%xmm9 + vpxorq %xmm9,%xmm8,%xmm8 + vmovdqa64 POLY2(%rip),%xmm10 + + + vpclmulqdq $0x01,%xmm8,%xmm10,%xmm1 + vpslldq $8,%xmm1,%xmm1 + vpxorq %xmm1,%xmm8,%xmm1 + + + vpclmulqdq $0x00,%xmm1,%xmm10,%xmm9 + vpsrldq $4,%xmm9,%xmm9 + vpclmulqdq $0x10,%xmm1,%xmm10,%xmm2 + vpslldq $4,%xmm2,%xmm2 + vpternlogq $0x96,%xmm6,%xmm9,%xmm2 + + subq $512,%r11 + je .L_CALC_AAD_done_1 + + addq $512,%r10 + jmp .L_less_than_16x16_1 + +.L_less_than_32x16_1: + cmpq $256,%r11 + jl .L_less_than_16x16_1 + + vmovdqu64 0(%r10),%zmm11 + vmovdqu64 64(%r10),%zmm3 + vmovdqu64 128(%r10),%zmm4 + vmovdqu64 192(%r10),%zmm5 + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %zmm16,%zmm4,%zmm4 + vpshufb %zmm16,%zmm5,%zmm5 + vpxorq %zmm2,%zmm11,%zmm11 + vmovdqu64 96(%rsi),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm19,%zmm11,%zmm9 + vpclmulqdq $0x01,%zmm19,%zmm11,%zmm10 + vpclmulqdq $0x10,%zmm19,%zmm11,%zmm12 + vmovdqu64 160(%rsi),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm3,%zmm13 + vpclmulqdq $0x00,%zmm19,%zmm3,%zmm15 + vpclmulqdq $0x01,%zmm19,%zmm3,%zmm17 + vpclmulqdq $0x10,%zmm19,%zmm3,%zmm18 + vpxorq %zmm17,%zmm10,%zmm7 + vpxorq %zmm13,%zmm1,%zmm6 + vpxorq %zmm15,%zmm9,%zmm8 + vpternlogq $0x96,%zmm18,%zmm12,%zmm7 + vmovdqu64 224(%rsi),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm4,%zmm1 + vpclmulqdq $0x00,%zmm19,%zmm4,%zmm9 + vpclmulqdq $0x01,%zmm19,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm19,%zmm4,%zmm12 + vmovdqu64 288(%rsi),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm5,%zmm13 + vpclmulqdq $0x00,%zmm19,%zmm5,%zmm15 + vpclmulqdq $0x01,%zmm19,%zmm5,%zmm17 + vpclmulqdq $0x10,%zmm19,%zmm5,%zmm18 + + vpternlogq $0x96,%zmm17,%zmm10,%zmm7 + vpternlogq $0x96,%zmm13,%zmm1,%zmm6 + vpternlogq $0x96,%zmm15,%zmm9,%zmm8 + vpternlogq $0x96,%zmm18,%zmm12,%zmm7 + + vpsrldq $8,%zmm7,%zmm1 + vpslldq $8,%zmm7,%zmm9 + vpxorq %zmm1,%zmm6,%zmm6 + vpxorq %zmm9,%zmm8,%zmm8 + vextracti64x4 $1,%zmm6,%ymm1 + vpxorq %ymm1,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm1 + vpxorq %xmm1,%xmm6,%xmm6 + vextracti64x4 $1,%zmm8,%ymm9 + vpxorq %ymm9,%ymm8,%ymm8 + vextracti32x4 $1,%ymm8,%xmm9 + vpxorq %xmm9,%xmm8,%xmm8 + vmovdqa64 POLY2(%rip),%xmm10 + + + vpclmulqdq $0x01,%xmm8,%xmm10,%xmm1 + vpslldq $8,%xmm1,%xmm1 + vpxorq %xmm1,%xmm8,%xmm1 + + + vpclmulqdq $0x00,%xmm1,%xmm10,%xmm9 + vpsrldq $4,%xmm9,%xmm9 + vpclmulqdq $0x10,%xmm1,%xmm10,%xmm2 + vpslldq $4,%xmm2,%xmm2 + vpternlogq $0x96,%xmm6,%xmm9,%xmm2 + + subq $256,%r11 + je .L_CALC_AAD_done_1 + + addq $256,%r10 + +.L_less_than_16x16_1: + + leaq byte64_len_to_mask_table(%rip),%r12 + leaq (%r12,%r11,8),%r12 + + + addl $15,%r11d + shrl $4,%r11d + cmpl $2,%r11d + jb .L_AAD_blocks_1_1 + je .L_AAD_blocks_2_1 + cmpl $4,%r11d + jb .L_AAD_blocks_3_1 + je .L_AAD_blocks_4_1 + cmpl $6,%r11d + jb .L_AAD_blocks_5_1 + je .L_AAD_blocks_6_1 + cmpl $8,%r11d + jb .L_AAD_blocks_7_1 + je .L_AAD_blocks_8_1 + cmpl $10,%r11d + jb .L_AAD_blocks_9_1 + je .L_AAD_blocks_10_1 + cmpl $12,%r11d + jb .L_AAD_blocks_11_1 + je .L_AAD_blocks_12_1 + cmpl $14,%r11d + jb .L_AAD_blocks_13_1 + je .L_AAD_blocks_14_1 + cmpl $15,%r11d + je .L_AAD_blocks_15_1 +.L_AAD_blocks_16_1: + subq $1536,%r12 + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11 + vmovdqu8 64(%r10),%zmm3 + vmovdqu8 128(%r10),%zmm4 + vmovdqu8 192(%r10),%zmm5{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %zmm16,%zmm4,%zmm4 + vpshufb %zmm16,%zmm5,%zmm5 + vpxorq %zmm2,%zmm11,%zmm11 + vmovdqu64 96(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm6 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm7 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm8 + vmovdqu64 160(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm3,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm3,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm3,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm3,%zmm13 + vmovdqu64 224(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm4,%zmm11 + vpclmulqdq $0x00,%zmm15,%zmm4,%zmm3 + vpternlogq $0x96,%zmm9,%zmm11,%zmm1 + vpternlogq $0x96,%zmm10,%zmm3,%zmm6 + vpclmulqdq $0x01,%zmm15,%zmm4,%zmm11 + vpclmulqdq $0x10,%zmm15,%zmm4,%zmm3 + vpternlogq $0x96,%zmm12,%zmm11,%zmm7 + vpternlogq $0x96,%zmm13,%zmm3,%zmm8 + vmovdqu64 288(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm5,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm5,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm5,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm5,%zmm13 + vpxorq %zmm9,%zmm1,%zmm9 + vpxorq %zmm10,%zmm6,%zmm10 + vpxorq %zmm12,%zmm7,%zmm12 + vpxorq %zmm13,%zmm8,%zmm13 + + vpxorq %zmm13,%zmm12,%zmm12 + vpsrldq $8,%zmm12,%zmm7 + vpslldq $8,%zmm12,%zmm8 + vpxorq %zmm7,%zmm9,%zmm1 + vpxorq %zmm8,%zmm10,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm2 + vpslldq $4,%xmm2,%xmm2 + vpternlogq $0x96,%xmm1,%xmm8,%xmm2 + + jmp .L_CALC_AAD_done_1 +.L_AAD_blocks_15_1: + subq $1536,%r12 + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11 + vmovdqu8 64(%r10),%zmm3 + vmovdqu8 128(%r10),%zmm4 + vmovdqu8 192(%r10),%zmm5{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %zmm16,%zmm4,%zmm4 + vpshufb %zmm16,%zmm5,%zmm5 + vpxorq %zmm2,%zmm11,%zmm11 + vmovdqu64 112(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm6 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm7 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm8 + vmovdqu64 176(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm3,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm3,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm3,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm3,%zmm13 + vmovdqu64 240(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm4,%zmm11 + vpclmulqdq $0x00,%zmm15,%zmm4,%zmm3 + vpternlogq $0x96,%zmm1,%zmm11,%zmm9 + vpternlogq $0x96,%zmm6,%zmm3,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm4,%zmm11 + vpclmulqdq $0x10,%zmm15,%zmm4,%zmm3 + vpternlogq $0x96,%zmm7,%zmm11,%zmm12 + vpternlogq $0x96,%zmm8,%zmm3,%zmm13 + vmovdqu64 304(%rsi),%ymm15 + vinserti64x2 $2,336(%rsi),%zmm15,%zmm15 + vpclmulqdq $0x01,%zmm15,%zmm5,%zmm7 + vpclmulqdq $0x10,%zmm15,%zmm5,%zmm8 + vpclmulqdq $0x11,%zmm15,%zmm5,%zmm1 + vpclmulqdq $0x00,%zmm15,%zmm5,%zmm6 + + vpxorq %zmm12,%zmm7,%zmm7 + vpxorq %zmm13,%zmm8,%zmm8 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm6,%zmm6 + + vpxorq %zmm8,%zmm7,%zmm7 + vpsrldq $8,%zmm7,%zmm12 + vpslldq $8,%zmm7,%zmm13 + vpxorq %zmm12,%zmm1,%zmm1 + vpxorq %zmm13,%zmm6,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm2 + vpslldq $4,%xmm2,%xmm2 + vpternlogq $0x96,%xmm1,%xmm8,%xmm2 + + jmp .L_CALC_AAD_done_1 +.L_AAD_blocks_14_1: + subq $1536,%r12 + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11 + vmovdqu8 64(%r10),%zmm3 + vmovdqu8 128(%r10),%zmm4 + vmovdqu8 192(%r10),%ymm5{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %zmm16,%zmm4,%zmm4 + vpshufb %ymm16,%ymm5,%ymm5 + vpxorq %zmm2,%zmm11,%zmm11 + vmovdqu64 128(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm6 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm7 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm8 + vmovdqu64 192(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm3,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm3,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm3,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm3,%zmm13 + vmovdqu64 256(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm4,%zmm11 + vpclmulqdq $0x00,%zmm15,%zmm4,%zmm3 + vpternlogq $0x96,%zmm1,%zmm11,%zmm9 + vpternlogq $0x96,%zmm6,%zmm3,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm4,%zmm11 + vpclmulqdq $0x10,%zmm15,%zmm4,%zmm3 + vpternlogq $0x96,%zmm7,%zmm11,%zmm12 + vpternlogq $0x96,%zmm8,%zmm3,%zmm13 + vmovdqu64 320(%rsi),%ymm15 + vpclmulqdq $0x01,%ymm15,%ymm5,%ymm7 + vpclmulqdq $0x10,%ymm15,%ymm5,%ymm8 + vpclmulqdq $0x11,%ymm15,%ymm5,%ymm1 + vpclmulqdq $0x00,%ymm15,%ymm5,%ymm6 + + vpxorq %zmm12,%zmm7,%zmm7 + vpxorq %zmm13,%zmm8,%zmm8 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm6,%zmm6 + + vpxorq %zmm8,%zmm7,%zmm7 + vpsrldq $8,%zmm7,%zmm12 + vpslldq $8,%zmm7,%zmm13 + vpxorq %zmm12,%zmm1,%zmm1 + vpxorq %zmm13,%zmm6,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm2 + vpslldq $4,%xmm2,%xmm2 + vpternlogq $0x96,%xmm1,%xmm8,%xmm2 + + jmp .L_CALC_AAD_done_1 +.L_AAD_blocks_13_1: + subq $1536,%r12 + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11 + vmovdqu8 64(%r10),%zmm3 + vmovdqu8 128(%r10),%zmm4 + vmovdqu8 192(%r10),%xmm5{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %zmm16,%zmm4,%zmm4 + vpshufb %xmm16,%xmm5,%xmm5 + vpxorq %zmm2,%zmm11,%zmm11 + vmovdqu64 144(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm6 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm7 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm8 + vmovdqu64 208(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm3,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm3,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm3,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm3,%zmm13 + vmovdqu64 272(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm4,%zmm11 + vpclmulqdq $0x00,%zmm15,%zmm4,%zmm3 + vpternlogq $0x96,%zmm1,%zmm11,%zmm9 + vpternlogq $0x96,%zmm6,%zmm3,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm4,%zmm11 + vpclmulqdq $0x10,%zmm15,%zmm4,%zmm3 + vpternlogq $0x96,%zmm7,%zmm11,%zmm12 + vpternlogq $0x96,%zmm8,%zmm3,%zmm13 + vmovdqu64 336(%rsi),%xmm15 + vpclmulqdq $0x01,%xmm15,%xmm5,%xmm7 + vpclmulqdq $0x10,%xmm15,%xmm5,%xmm8 + vpclmulqdq $0x11,%xmm15,%xmm5,%xmm1 + vpclmulqdq $0x00,%xmm15,%xmm5,%xmm6 + + vpxorq %zmm12,%zmm7,%zmm7 + vpxorq %zmm13,%zmm8,%zmm8 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm6,%zmm6 + + vpxorq %zmm8,%zmm7,%zmm7 + vpsrldq $8,%zmm7,%zmm12 + vpslldq $8,%zmm7,%zmm13 + vpxorq %zmm12,%zmm1,%zmm1 + vpxorq %zmm13,%zmm6,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm2 + vpslldq $4,%xmm2,%xmm2 + vpternlogq $0x96,%xmm1,%xmm8,%xmm2 + + jmp .L_CALC_AAD_done_1 +.L_AAD_blocks_12_1: + subq $1024,%r12 + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11 + vmovdqu8 64(%r10),%zmm3 + vmovdqu8 128(%r10),%zmm4{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %zmm16,%zmm4,%zmm4 + vpxorq %zmm2,%zmm11,%zmm11 + vmovdqu64 160(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm6 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm7 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm8 + vmovdqu64 224(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm3,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm3,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm3,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm3,%zmm13 + vmovdqu64 288(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm4,%zmm11 + vpclmulqdq $0x00,%zmm15,%zmm4,%zmm3 + vpternlogq $0x96,%zmm1,%zmm11,%zmm9 + vpternlogq $0x96,%zmm6,%zmm3,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm4,%zmm11 + vpclmulqdq $0x10,%zmm15,%zmm4,%zmm3 + vpternlogq $0x96,%zmm7,%zmm11,%zmm12 + vpternlogq $0x96,%zmm8,%zmm3,%zmm13 + + vpxorq %zmm13,%zmm12,%zmm12 + vpsrldq $8,%zmm12,%zmm7 + vpslldq $8,%zmm12,%zmm8 + vpxorq %zmm7,%zmm9,%zmm1 + vpxorq %zmm8,%zmm10,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm2 + vpslldq $4,%xmm2,%xmm2 + vpternlogq $0x96,%xmm1,%xmm8,%xmm2 + + jmp .L_CALC_AAD_done_1 +.L_AAD_blocks_11_1: + subq $1024,%r12 + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11 + vmovdqu8 64(%r10),%zmm3 + vmovdqu8 128(%r10),%zmm4{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %zmm16,%zmm4,%zmm4 + vpxorq %zmm2,%zmm11,%zmm11 + vmovdqu64 176(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm6 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm7 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm8 + vmovdqu64 240(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm3,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm3,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm3,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm3,%zmm13 + vpxorq %zmm9,%zmm1,%zmm9 + vpxorq %zmm10,%zmm6,%zmm10 + vpxorq %zmm12,%zmm7,%zmm12 + vpxorq %zmm13,%zmm8,%zmm13 + vmovdqu64 304(%rsi),%ymm15 + vinserti64x2 $2,336(%rsi),%zmm15,%zmm15 + vpclmulqdq $0x01,%zmm15,%zmm4,%zmm7 + vpclmulqdq $0x10,%zmm15,%zmm4,%zmm8 + vpclmulqdq $0x11,%zmm15,%zmm4,%zmm1 + vpclmulqdq $0x00,%zmm15,%zmm4,%zmm6 + + vpxorq %zmm12,%zmm7,%zmm7 + vpxorq %zmm13,%zmm8,%zmm8 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm6,%zmm6 + + vpxorq %zmm8,%zmm7,%zmm7 + vpsrldq $8,%zmm7,%zmm12 + vpslldq $8,%zmm7,%zmm13 + vpxorq %zmm12,%zmm1,%zmm1 + vpxorq %zmm13,%zmm6,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm2 + vpslldq $4,%xmm2,%xmm2 + vpternlogq $0x96,%xmm1,%xmm8,%xmm2 + + jmp .L_CALC_AAD_done_1 +.L_AAD_blocks_10_1: + subq $1024,%r12 + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11 + vmovdqu8 64(%r10),%zmm3 + vmovdqu8 128(%r10),%ymm4{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %ymm16,%ymm4,%ymm4 + vpxorq %zmm2,%zmm11,%zmm11 + vmovdqu64 192(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm6 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm7 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm8 + vmovdqu64 256(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm3,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm3,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm3,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm3,%zmm13 + vpxorq %zmm9,%zmm1,%zmm9 + vpxorq %zmm10,%zmm6,%zmm10 + vpxorq %zmm12,%zmm7,%zmm12 + vpxorq %zmm13,%zmm8,%zmm13 + vmovdqu64 320(%rsi),%ymm15 + vpclmulqdq $0x01,%ymm15,%ymm4,%ymm7 + vpclmulqdq $0x10,%ymm15,%ymm4,%ymm8 + vpclmulqdq $0x11,%ymm15,%ymm4,%ymm1 + vpclmulqdq $0x00,%ymm15,%ymm4,%ymm6 + + vpxorq %zmm12,%zmm7,%zmm7 + vpxorq %zmm13,%zmm8,%zmm8 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm6,%zmm6 + + vpxorq %zmm8,%zmm7,%zmm7 + vpsrldq $8,%zmm7,%zmm12 + vpslldq $8,%zmm7,%zmm13 + vpxorq %zmm12,%zmm1,%zmm1 + vpxorq %zmm13,%zmm6,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm2 + vpslldq $4,%xmm2,%xmm2 + vpternlogq $0x96,%xmm1,%xmm8,%xmm2 + + jmp .L_CALC_AAD_done_1 +.L_AAD_blocks_9_1: + subq $1024,%r12 + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11 + vmovdqu8 64(%r10),%zmm3 + vmovdqu8 128(%r10),%xmm4{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %xmm16,%xmm4,%xmm4 + vpxorq %zmm2,%zmm11,%zmm11 + vmovdqu64 208(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm6 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm7 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm8 + vmovdqu64 272(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm3,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm3,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm3,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm3,%zmm13 + vpxorq %zmm9,%zmm1,%zmm9 + vpxorq %zmm10,%zmm6,%zmm10 + vpxorq %zmm12,%zmm7,%zmm12 + vpxorq %zmm13,%zmm8,%zmm13 + vmovdqu64 336(%rsi),%xmm15 + vpclmulqdq $0x01,%xmm15,%xmm4,%xmm7 + vpclmulqdq $0x10,%xmm15,%xmm4,%xmm8 + vpclmulqdq $0x11,%xmm15,%xmm4,%xmm1 + vpclmulqdq $0x00,%xmm15,%xmm4,%xmm6 + + vpxorq %zmm12,%zmm7,%zmm7 + vpxorq %zmm13,%zmm8,%zmm8 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm6,%zmm6 + + vpxorq %zmm8,%zmm7,%zmm7 + vpsrldq $8,%zmm7,%zmm12 + vpslldq $8,%zmm7,%zmm13 + vpxorq %zmm12,%zmm1,%zmm1 + vpxorq %zmm13,%zmm6,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm2 + vpslldq $4,%xmm2,%xmm2 + vpternlogq $0x96,%xmm1,%xmm8,%xmm2 + + jmp .L_CALC_AAD_done_1 +.L_AAD_blocks_8_1: + subq $512,%r12 + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11 + vmovdqu8 64(%r10),%zmm3{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpxorq %zmm2,%zmm11,%zmm11 + vmovdqu64 224(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm6 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm7 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm8 + vmovdqu64 288(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm3,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm3,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm3,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm3,%zmm13 + vpxorq %zmm9,%zmm1,%zmm9 + vpxorq %zmm10,%zmm6,%zmm10 + vpxorq %zmm12,%zmm7,%zmm12 + vpxorq %zmm13,%zmm8,%zmm13 + + vpxorq %zmm13,%zmm12,%zmm12 + vpsrldq $8,%zmm12,%zmm7 + vpslldq $8,%zmm12,%zmm8 + vpxorq %zmm7,%zmm9,%zmm1 + vpxorq %zmm8,%zmm10,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm2 + vpslldq $4,%xmm2,%xmm2 + vpternlogq $0x96,%xmm1,%xmm8,%xmm2 + + jmp .L_CALC_AAD_done_1 +.L_AAD_blocks_7_1: + subq $512,%r12 + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11 + vmovdqu8 64(%r10),%zmm3{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpxorq %zmm2,%zmm11,%zmm11 + vmovdqu64 240(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm13 + vmovdqu64 304(%rsi),%ymm15 + vinserti64x2 $2,336(%rsi),%zmm15,%zmm15 + vpclmulqdq $0x01,%zmm15,%zmm3,%zmm7 + vpclmulqdq $0x10,%zmm15,%zmm3,%zmm8 + vpclmulqdq $0x11,%zmm15,%zmm3,%zmm1 + vpclmulqdq $0x00,%zmm15,%zmm3,%zmm6 + + vpxorq %zmm12,%zmm7,%zmm7 + vpxorq %zmm13,%zmm8,%zmm8 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm6,%zmm6 + + vpxorq %zmm8,%zmm7,%zmm7 + vpsrldq $8,%zmm7,%zmm12 + vpslldq $8,%zmm7,%zmm13 + vpxorq %zmm12,%zmm1,%zmm1 + vpxorq %zmm13,%zmm6,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm2 + vpslldq $4,%xmm2,%xmm2 + vpternlogq $0x96,%xmm1,%xmm8,%xmm2 + + jmp .L_CALC_AAD_done_1 +.L_AAD_blocks_6_1: + subq $512,%r12 + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11 + vmovdqu8 64(%r10),%ymm3{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %ymm16,%ymm3,%ymm3 + vpxorq %zmm2,%zmm11,%zmm11 + vmovdqu64 256(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm13 + vmovdqu64 320(%rsi),%ymm15 + vpclmulqdq $0x01,%ymm15,%ymm3,%ymm7 + vpclmulqdq $0x10,%ymm15,%ymm3,%ymm8 + vpclmulqdq $0x11,%ymm15,%ymm3,%ymm1 + vpclmulqdq $0x00,%ymm15,%ymm3,%ymm6 + + vpxorq %zmm12,%zmm7,%zmm7 + vpxorq %zmm13,%zmm8,%zmm8 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm6,%zmm6 + + vpxorq %zmm8,%zmm7,%zmm7 + vpsrldq $8,%zmm7,%zmm12 + vpslldq $8,%zmm7,%zmm13 + vpxorq %zmm12,%zmm1,%zmm1 + vpxorq %zmm13,%zmm6,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm2 + vpslldq $4,%xmm2,%xmm2 + vpternlogq $0x96,%xmm1,%xmm8,%xmm2 + + jmp .L_CALC_AAD_done_1 +.L_AAD_blocks_5_1: + subq $512,%r12 + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11 + vmovdqu8 64(%r10),%xmm3{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %xmm16,%xmm3,%xmm3 + vpxorq %zmm2,%zmm11,%zmm11 + vmovdqu64 272(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm13 + vmovdqu64 336(%rsi),%xmm15 + vpclmulqdq $0x01,%xmm15,%xmm3,%xmm7 + vpclmulqdq $0x10,%xmm15,%xmm3,%xmm8 + vpclmulqdq $0x11,%xmm15,%xmm3,%xmm1 + vpclmulqdq $0x00,%xmm15,%xmm3,%xmm6 + + vpxorq %zmm12,%zmm7,%zmm7 + vpxorq %zmm13,%zmm8,%zmm8 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm6,%zmm6 + + vpxorq %zmm8,%zmm7,%zmm7 + vpsrldq $8,%zmm7,%zmm12 + vpslldq $8,%zmm7,%zmm13 + vpxorq %zmm12,%zmm1,%zmm1 + vpxorq %zmm13,%zmm6,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm2 + vpslldq $4,%xmm2,%xmm2 + vpternlogq $0x96,%xmm1,%xmm8,%xmm2 + + jmp .L_CALC_AAD_done_1 +.L_AAD_blocks_4_1: + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpxorq %zmm2,%zmm11,%zmm11 + vmovdqu64 288(%rsi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm13 + + vpxorq %zmm13,%zmm12,%zmm12 + vpsrldq $8,%zmm12,%zmm7 + vpslldq $8,%zmm12,%zmm8 + vpxorq %zmm7,%zmm9,%zmm1 + vpxorq %zmm8,%zmm10,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm2 + vpslldq $4,%xmm2,%xmm2 + vpternlogq $0x96,%xmm1,%xmm8,%xmm2 + + jmp .L_CALC_AAD_done_1 +.L_AAD_blocks_3_1: + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpxorq %zmm2,%zmm11,%zmm11 + vmovdqu64 304(%rsi),%ymm15 + vinserti64x2 $2,336(%rsi),%zmm15,%zmm15 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm7 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm8 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm6 + + vpxorq %zmm8,%zmm7,%zmm7 + vpsrldq $8,%zmm7,%zmm12 + vpslldq $8,%zmm7,%zmm13 + vpxorq %zmm12,%zmm1,%zmm1 + vpxorq %zmm13,%zmm6,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm2 + vpslldq $4,%xmm2,%xmm2 + vpternlogq $0x96,%xmm1,%xmm8,%xmm2 + + jmp .L_CALC_AAD_done_1 +.L_AAD_blocks_2_1: + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%ymm11{%k1}{z} + vpshufb %ymm16,%ymm11,%ymm11 + vpxorq %zmm2,%zmm11,%zmm11 + vmovdqu64 320(%rsi),%ymm15 + vpclmulqdq $0x01,%ymm15,%ymm11,%ymm7 + vpclmulqdq $0x10,%ymm15,%ymm11,%ymm8 + vpclmulqdq $0x11,%ymm15,%ymm11,%ymm1 + vpclmulqdq $0x00,%ymm15,%ymm11,%ymm6 + + vpxorq %zmm8,%zmm7,%zmm7 + vpsrldq $8,%zmm7,%zmm12 + vpslldq $8,%zmm7,%zmm13 + vpxorq %zmm12,%zmm1,%zmm1 + vpxorq %zmm13,%zmm6,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm2 + vpslldq $4,%xmm2,%xmm2 + vpternlogq $0x96,%xmm1,%xmm8,%xmm2 + + jmp .L_CALC_AAD_done_1 +.L_AAD_blocks_1_1: + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%xmm11{%k1}{z} + vpshufb %xmm16,%xmm11,%xmm11 + vpxorq %zmm2,%zmm11,%zmm11 + vmovdqu64 336(%rsi),%xmm15 + vpclmulqdq $0x01,%xmm15,%xmm11,%xmm7 + vpclmulqdq $0x10,%xmm15,%xmm11,%xmm8 + vpclmulqdq $0x11,%xmm15,%xmm11,%xmm1 + vpclmulqdq $0x00,%xmm15,%xmm11,%xmm6 + + vpxorq %zmm8,%zmm7,%zmm7 + vpsrldq $8,%zmm7,%zmm12 + vpslldq $8,%zmm7,%zmm13 + vpxorq %zmm12,%zmm1,%zmm1 + vpxorq %zmm13,%zmm6,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm2 + vpslldq $4,%xmm2,%xmm2 + vpternlogq $0x96,%xmm1,%xmm8,%xmm2 + +.L_CALC_AAD_done_1: + movq %rcx,%r10 + shlq $3,%r10 + vmovq %r10,%xmm3 + + + vpxorq %xmm2,%xmm3,%xmm2 + + vmovdqu64 336(%rsi),%xmm1 + + vpclmulqdq $0x11,%xmm1,%xmm2,%xmm11 + vpclmulqdq $0x00,%xmm1,%xmm2,%xmm3 + vpclmulqdq $0x01,%xmm1,%xmm2,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm2,%xmm2 + vpxorq %xmm4,%xmm2,%xmm2 + + vpsrldq $8,%xmm2,%xmm4 + vpslldq $8,%xmm2,%xmm2 + vpxorq %xmm4,%xmm11,%xmm11 + vpxorq %xmm3,%xmm2,%xmm2 + + + + vmovdqu64 POLY2(%rip),%xmm4 + + vpclmulqdq $0x01,%xmm2,%xmm4,%xmm3 + vpslldq $8,%xmm3,%xmm3 + vpxorq %xmm3,%xmm2,%xmm2 + + + + vpclmulqdq $0x00,%xmm2,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm2,%xmm4,%xmm2 + vpslldq $4,%xmm2,%xmm2 + + vpternlogq $0x96,%xmm3,%xmm11,%xmm2 + + vpshufb SHUF_MASK(%rip),%xmm2,%xmm2 + jmp skip_iv_len_12_init_IV +iv_len_12_init_IV: + + vmovdqu8 ONEf(%rip),%xmm2 + movq %rdx,%r11 + movl $0x0000000000000fff,%r10d + kmovq %r10,%k1 + vmovdqu8 (%r11),%xmm2{%k1} +skip_iv_len_12_init_IV: + vmovdqu %xmm2,%xmm1 + + + movl 240(%rdi),%r10d + cmpl $9,%r10d + je .Laes_128_4 + cmpl $11,%r10d + je .Laes_192_4 + cmpl $13,%r10d + je .Laes_256_4 + jmp .Lexit_aes_4 +.align 32 +.Laes_128_4: + vpxorq 0(%rdi),%xmm1,%xmm1 + + vaesenc 16(%rdi),%xmm1,%xmm1 + + vaesenc 32(%rdi),%xmm1,%xmm1 + + vaesenc 48(%rdi),%xmm1,%xmm1 + + vaesenc 64(%rdi),%xmm1,%xmm1 + + vaesenc 80(%rdi),%xmm1,%xmm1 + + vaesenc 96(%rdi),%xmm1,%xmm1 + + vaesenc 112(%rdi),%xmm1,%xmm1 + + vaesenc 128(%rdi),%xmm1,%xmm1 + + vaesenc 144(%rdi),%xmm1,%xmm1 + + vaesenclast 160(%rdi),%xmm1,%xmm1 + jmp .Lexit_aes_4 +.align 32 +.Laes_192_4: + vpxorq 0(%rdi),%xmm1,%xmm1 + + vaesenc 16(%rdi),%xmm1,%xmm1 + + vaesenc 32(%rdi),%xmm1,%xmm1 + + vaesenc 48(%rdi),%xmm1,%xmm1 + + vaesenc 64(%rdi),%xmm1,%xmm1 + + vaesenc 80(%rdi),%xmm1,%xmm1 + + vaesenc 96(%rdi),%xmm1,%xmm1 + + vaesenc 112(%rdi),%xmm1,%xmm1 + + vaesenc 128(%rdi),%xmm1,%xmm1 + + vaesenc 144(%rdi),%xmm1,%xmm1 + + vaesenc 160(%rdi),%xmm1,%xmm1 + + vaesenc 176(%rdi),%xmm1,%xmm1 + + vaesenclast 192(%rdi),%xmm1,%xmm1 + jmp .Lexit_aes_4 +.align 32 +.Laes_256_4: + vpxorq 0(%rdi),%xmm1,%xmm1 + + vaesenc 16(%rdi),%xmm1,%xmm1 + + vaesenc 32(%rdi),%xmm1,%xmm1 + + vaesenc 48(%rdi),%xmm1,%xmm1 + + vaesenc 64(%rdi),%xmm1,%xmm1 + + vaesenc 80(%rdi),%xmm1,%xmm1 + + vaesenc 96(%rdi),%xmm1,%xmm1 + + vaesenc 112(%rdi),%xmm1,%xmm1 + + vaesenc 128(%rdi),%xmm1,%xmm1 + + vaesenc 144(%rdi),%xmm1,%xmm1 + + vaesenc 160(%rdi),%xmm1,%xmm1 + + vaesenc 176(%rdi),%xmm1,%xmm1 + + vaesenc 192(%rdi),%xmm1,%xmm1 + + vaesenc 208(%rdi),%xmm1,%xmm1 + + vaesenclast 224(%rdi),%xmm1,%xmm1 + jmp .Lexit_aes_4 +.Lexit_aes_4: + + vmovdqu %xmm1,32(%rsi) + + + vpshufb SHUF_MASK(%rip),%xmm2,%xmm2 + vmovdqu %xmm2,0(%rsi) + cmpq $256,%rcx + jbe .Lskip_hkeys_cleanup_5 + vpxor %xmm0,%xmm0,%xmm0 + vmovdqa64 %zmm0,0(%rsp) + vmovdqa64 %zmm0,64(%rsp) + vmovdqa64 %zmm0,128(%rsp) + vmovdqa64 %zmm0,192(%rsp) + vmovdqa64 %zmm0,256(%rsp) + vmovdqa64 %zmm0,320(%rsp) + vmovdqa64 %zmm0,384(%rsp) + vmovdqa64 %zmm0,448(%rsp) + vmovdqa64 %zmm0,512(%rsp) + vmovdqa64 %zmm0,576(%rsp) + vmovdqa64 %zmm0,640(%rsp) + vmovdqa64 %zmm0,704(%rsp) +.Lskip_hkeys_cleanup_5: + vzeroupper + leaq (%rbp),%rsp +.cfi_def_cfa_register %rsp + popq %r15 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r15 + popq %r14 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r14 + popq %r13 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r13 + popq %r12 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r12 + popq %rbp +.cfi_adjust_cfa_offset -8 +.cfi_restore %rbp + popq %rbx +.cfi_adjust_cfa_offset -8 +.cfi_restore %rbx +.Labort_setiv: + .byte 0xf3,0xc3 +.Lsetiv_seh_end: +.cfi_endproc +.size ossl_aes_gcm_setiv_avx512, .-ossl_aes_gcm_setiv_avx512 +.globl ossl_aes_gcm_update_aad_avx512 +.type ossl_aes_gcm_update_aad_avx512,@function +.align 32 +ossl_aes_gcm_update_aad_avx512: +.cfi_startproc +.Lghash_seh_begin: +.byte 243,15,30,250 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 +.Lghash_seh_push_rbx: + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 +.Lghash_seh_push_rbp: + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 +.Lghash_seh_push_r12: + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 +.Lghash_seh_push_r13: + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 +.Lghash_seh_push_r14: + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 +.Lghash_seh_push_r15: + + + + + + + + + + + leaq 0(%rsp),%rbp +.cfi_def_cfa_register %rbp +.Lghash_seh_setfp: + +.Lghash_seh_prolog_end: + subq $820,%rsp + andq $(-64),%rsp + vmovdqu64 64(%rdi),%xmm14 + movq %rsi,%r10 + movq %rdx,%r11 + orq %r11,%r11 + jz .L_CALC_AAD_done_6 + + xorq %rbx,%rbx + vmovdqa64 SHUF_MASK(%rip),%zmm16 + +.L_get_AAD_loop48x16_6: + cmpq $768,%r11 + jl .L_exit_AAD_loop48x16_6 + vmovdqu64 0(%r10),%zmm11 + vmovdqu64 64(%r10),%zmm3 + vmovdqu64 128(%r10),%zmm4 + vmovdqu64 192(%r10),%zmm5 + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %zmm16,%zmm4,%zmm4 + vpshufb %zmm16,%zmm5,%zmm5 + testq %rbx,%rbx + jnz .L_skip_hkeys_precomputation_7 + + vmovdqu64 288(%rdi),%zmm1 + vmovdqu64 %zmm1,704(%rsp) + + vmovdqu64 224(%rdi),%zmm9 + vmovdqu64 %zmm9,640(%rsp) + + + vshufi64x2 $0x00,%zmm9,%zmm9,%zmm9 + + vmovdqu64 160(%rdi),%zmm10 + vmovdqu64 %zmm10,576(%rsp) + + vmovdqu64 96(%rdi),%zmm12 + vmovdqu64 %zmm12,512(%rsp) + + vpclmulqdq $0x11,%zmm9,%zmm10,%zmm13 + vpclmulqdq $0x00,%zmm9,%zmm10,%zmm15 + vpclmulqdq $0x01,%zmm9,%zmm10,%zmm17 + vpclmulqdq $0x10,%zmm9,%zmm10,%zmm10 + vpxorq %zmm17,%zmm10,%zmm10 + + vpsrldq $8,%zmm10,%zmm17 + vpslldq $8,%zmm10,%zmm10 + vpxorq %zmm17,%zmm13,%zmm13 + vpxorq %zmm15,%zmm10,%zmm10 + + + + vmovdqu64 POLY2(%rip),%zmm17 + + vpclmulqdq $0x01,%zmm10,%zmm17,%zmm15 + vpslldq $8,%zmm15,%zmm15 + vpxorq %zmm15,%zmm10,%zmm10 + + + + vpclmulqdq $0x00,%zmm10,%zmm17,%zmm15 + vpsrldq $4,%zmm15,%zmm15 + vpclmulqdq $0x10,%zmm10,%zmm17,%zmm10 + vpslldq $4,%zmm10,%zmm10 + + vpternlogq $0x96,%zmm15,%zmm13,%zmm10 + + vmovdqu64 %zmm10,448(%rsp) + + vpclmulqdq $0x11,%zmm9,%zmm12,%zmm13 + vpclmulqdq $0x00,%zmm9,%zmm12,%zmm15 + vpclmulqdq $0x01,%zmm9,%zmm12,%zmm17 + vpclmulqdq $0x10,%zmm9,%zmm12,%zmm12 + vpxorq %zmm17,%zmm12,%zmm12 + + vpsrldq $8,%zmm12,%zmm17 + vpslldq $8,%zmm12,%zmm12 + vpxorq %zmm17,%zmm13,%zmm13 + vpxorq %zmm15,%zmm12,%zmm12 + + + + vmovdqu64 POLY2(%rip),%zmm17 + + vpclmulqdq $0x01,%zmm12,%zmm17,%zmm15 + vpslldq $8,%zmm15,%zmm15 + vpxorq %zmm15,%zmm12,%zmm12 + + + + vpclmulqdq $0x00,%zmm12,%zmm17,%zmm15 + vpsrldq $4,%zmm15,%zmm15 + vpclmulqdq $0x10,%zmm12,%zmm17,%zmm12 + vpslldq $4,%zmm12,%zmm12 + + vpternlogq $0x96,%zmm15,%zmm13,%zmm12 + + vmovdqu64 %zmm12,384(%rsp) + + vpclmulqdq $0x11,%zmm9,%zmm10,%zmm13 + vpclmulqdq $0x00,%zmm9,%zmm10,%zmm15 + vpclmulqdq $0x01,%zmm9,%zmm10,%zmm17 + vpclmulqdq $0x10,%zmm9,%zmm10,%zmm10 + vpxorq %zmm17,%zmm10,%zmm10 + + vpsrldq $8,%zmm10,%zmm17 + vpslldq $8,%zmm10,%zmm10 + vpxorq %zmm17,%zmm13,%zmm13 + vpxorq %zmm15,%zmm10,%zmm10 + + + + vmovdqu64 POLY2(%rip),%zmm17 + + vpclmulqdq $0x01,%zmm10,%zmm17,%zmm15 + vpslldq $8,%zmm15,%zmm15 + vpxorq %zmm15,%zmm10,%zmm10 + + + + vpclmulqdq $0x00,%zmm10,%zmm17,%zmm15 + vpsrldq $4,%zmm15,%zmm15 + vpclmulqdq $0x10,%zmm10,%zmm17,%zmm10 + vpslldq $4,%zmm10,%zmm10 + + vpternlogq $0x96,%zmm15,%zmm13,%zmm10 + + vmovdqu64 %zmm10,320(%rsp) + + vpclmulqdq $0x11,%zmm9,%zmm12,%zmm13 + vpclmulqdq $0x00,%zmm9,%zmm12,%zmm15 + vpclmulqdq $0x01,%zmm9,%zmm12,%zmm17 + vpclmulqdq $0x10,%zmm9,%zmm12,%zmm12 + vpxorq %zmm17,%zmm12,%zmm12 + + vpsrldq $8,%zmm12,%zmm17 + vpslldq $8,%zmm12,%zmm12 + vpxorq %zmm17,%zmm13,%zmm13 + vpxorq %zmm15,%zmm12,%zmm12 + + + + vmovdqu64 POLY2(%rip),%zmm17 + + vpclmulqdq $0x01,%zmm12,%zmm17,%zmm15 + vpslldq $8,%zmm15,%zmm15 + vpxorq %zmm15,%zmm12,%zmm12 + + + + vpclmulqdq $0x00,%zmm12,%zmm17,%zmm15 + vpsrldq $4,%zmm15,%zmm15 + vpclmulqdq $0x10,%zmm12,%zmm17,%zmm12 + vpslldq $4,%zmm12,%zmm12 + + vpternlogq $0x96,%zmm15,%zmm13,%zmm12 + + vmovdqu64 %zmm12,256(%rsp) + + vpclmulqdq $0x11,%zmm9,%zmm10,%zmm13 + vpclmulqdq $0x00,%zmm9,%zmm10,%zmm15 + vpclmulqdq $0x01,%zmm9,%zmm10,%zmm17 + vpclmulqdq $0x10,%zmm9,%zmm10,%zmm10 + vpxorq %zmm17,%zmm10,%zmm10 + + vpsrldq $8,%zmm10,%zmm17 + vpslldq $8,%zmm10,%zmm10 + vpxorq %zmm17,%zmm13,%zmm13 + vpxorq %zmm15,%zmm10,%zmm10 + + + + vmovdqu64 POLY2(%rip),%zmm17 + + vpclmulqdq $0x01,%zmm10,%zmm17,%zmm15 + vpslldq $8,%zmm15,%zmm15 + vpxorq %zmm15,%zmm10,%zmm10 + + + + vpclmulqdq $0x00,%zmm10,%zmm17,%zmm15 + vpsrldq $4,%zmm15,%zmm15 + vpclmulqdq $0x10,%zmm10,%zmm17,%zmm10 + vpslldq $4,%zmm10,%zmm10 + + vpternlogq $0x96,%zmm15,%zmm13,%zmm10 + + vmovdqu64 %zmm10,192(%rsp) + + vpclmulqdq $0x11,%zmm9,%zmm12,%zmm13 + vpclmulqdq $0x00,%zmm9,%zmm12,%zmm15 + vpclmulqdq $0x01,%zmm9,%zmm12,%zmm17 + vpclmulqdq $0x10,%zmm9,%zmm12,%zmm12 + vpxorq %zmm17,%zmm12,%zmm12 + + vpsrldq $8,%zmm12,%zmm17 + vpslldq $8,%zmm12,%zmm12 + vpxorq %zmm17,%zmm13,%zmm13 + vpxorq %zmm15,%zmm12,%zmm12 + + + + vmovdqu64 POLY2(%rip),%zmm17 + + vpclmulqdq $0x01,%zmm12,%zmm17,%zmm15 + vpslldq $8,%zmm15,%zmm15 + vpxorq %zmm15,%zmm12,%zmm12 + + + + vpclmulqdq $0x00,%zmm12,%zmm17,%zmm15 + vpsrldq $4,%zmm15,%zmm15 + vpclmulqdq $0x10,%zmm12,%zmm17,%zmm12 + vpslldq $4,%zmm12,%zmm12 + + vpternlogq $0x96,%zmm15,%zmm13,%zmm12 + + vmovdqu64 %zmm12,128(%rsp) + + vpclmulqdq $0x11,%zmm9,%zmm10,%zmm13 + vpclmulqdq $0x00,%zmm9,%zmm10,%zmm15 + vpclmulqdq $0x01,%zmm9,%zmm10,%zmm17 + vpclmulqdq $0x10,%zmm9,%zmm10,%zmm10 + vpxorq %zmm17,%zmm10,%zmm10 + + vpsrldq $8,%zmm10,%zmm17 + vpslldq $8,%zmm10,%zmm10 + vpxorq %zmm17,%zmm13,%zmm13 + vpxorq %zmm15,%zmm10,%zmm10 + + + + vmovdqu64 POLY2(%rip),%zmm17 + + vpclmulqdq $0x01,%zmm10,%zmm17,%zmm15 + vpslldq $8,%zmm15,%zmm15 + vpxorq %zmm15,%zmm10,%zmm10 + + + + vpclmulqdq $0x00,%zmm10,%zmm17,%zmm15 + vpsrldq $4,%zmm15,%zmm15 + vpclmulqdq $0x10,%zmm10,%zmm17,%zmm10 + vpslldq $4,%zmm10,%zmm10 + + vpternlogq $0x96,%zmm15,%zmm13,%zmm10 + + vmovdqu64 %zmm10,64(%rsp) + + vpclmulqdq $0x11,%zmm9,%zmm12,%zmm13 + vpclmulqdq $0x00,%zmm9,%zmm12,%zmm15 + vpclmulqdq $0x01,%zmm9,%zmm12,%zmm17 + vpclmulqdq $0x10,%zmm9,%zmm12,%zmm12 + vpxorq %zmm17,%zmm12,%zmm12 + + vpsrldq $8,%zmm12,%zmm17 + vpslldq $8,%zmm12,%zmm12 + vpxorq %zmm17,%zmm13,%zmm13 + vpxorq %zmm15,%zmm12,%zmm12 + + + + vmovdqu64 POLY2(%rip),%zmm17 + + vpclmulqdq $0x01,%zmm12,%zmm17,%zmm15 + vpslldq $8,%zmm15,%zmm15 + vpxorq %zmm15,%zmm12,%zmm12 + + + + vpclmulqdq $0x00,%zmm12,%zmm17,%zmm15 + vpsrldq $4,%zmm15,%zmm15 + vpclmulqdq $0x10,%zmm12,%zmm17,%zmm12 + vpslldq $4,%zmm12,%zmm12 + + vpternlogq $0x96,%zmm15,%zmm13,%zmm12 + + vmovdqu64 %zmm12,0(%rsp) +.L_skip_hkeys_precomputation_7: + movq $1,%rbx + vpxorq %zmm14,%zmm11,%zmm11 + vmovdqu64 0(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm19,%zmm11,%zmm9 + vpclmulqdq $0x01,%zmm19,%zmm11,%zmm10 + vpclmulqdq $0x10,%zmm19,%zmm11,%zmm12 + vmovdqu64 64(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm3,%zmm13 + vpclmulqdq $0x00,%zmm19,%zmm3,%zmm15 + vpclmulqdq $0x01,%zmm19,%zmm3,%zmm17 + vpclmulqdq $0x10,%zmm19,%zmm3,%zmm18 + vpxorq %zmm17,%zmm10,%zmm7 + vpxorq %zmm13,%zmm1,%zmm6 + vpxorq %zmm15,%zmm9,%zmm8 + vpternlogq $0x96,%zmm18,%zmm12,%zmm7 + vmovdqu64 128(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm4,%zmm1 + vpclmulqdq $0x00,%zmm19,%zmm4,%zmm9 + vpclmulqdq $0x01,%zmm19,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm19,%zmm4,%zmm12 + vmovdqu64 192(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm5,%zmm13 + vpclmulqdq $0x00,%zmm19,%zmm5,%zmm15 + vpclmulqdq $0x01,%zmm19,%zmm5,%zmm17 + vpclmulqdq $0x10,%zmm19,%zmm5,%zmm18 + + vpternlogq $0x96,%zmm17,%zmm10,%zmm7 + vpternlogq $0x96,%zmm13,%zmm1,%zmm6 + vpternlogq $0x96,%zmm15,%zmm9,%zmm8 + vpternlogq $0x96,%zmm18,%zmm12,%zmm7 + vmovdqu64 256(%r10),%zmm11 + vmovdqu64 320(%r10),%zmm3 + vmovdqu64 384(%r10),%zmm4 + vmovdqu64 448(%r10),%zmm5 + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %zmm16,%zmm4,%zmm4 + vpshufb %zmm16,%zmm5,%zmm5 + vmovdqu64 256(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm19,%zmm11,%zmm9 + vpclmulqdq $0x01,%zmm19,%zmm11,%zmm10 + vpclmulqdq $0x10,%zmm19,%zmm11,%zmm12 + vmovdqu64 320(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm3,%zmm13 + vpclmulqdq $0x00,%zmm19,%zmm3,%zmm15 + vpclmulqdq $0x01,%zmm19,%zmm3,%zmm17 + vpclmulqdq $0x10,%zmm19,%zmm3,%zmm18 + vpternlogq $0x96,%zmm17,%zmm10,%zmm7 + vpternlogq $0x96,%zmm13,%zmm1,%zmm6 + vpternlogq $0x96,%zmm15,%zmm9,%zmm8 + vpternlogq $0x96,%zmm18,%zmm12,%zmm7 + vmovdqu64 384(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm4,%zmm1 + vpclmulqdq $0x00,%zmm19,%zmm4,%zmm9 + vpclmulqdq $0x01,%zmm19,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm19,%zmm4,%zmm12 + vmovdqu64 448(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm5,%zmm13 + vpclmulqdq $0x00,%zmm19,%zmm5,%zmm15 + vpclmulqdq $0x01,%zmm19,%zmm5,%zmm17 + vpclmulqdq $0x10,%zmm19,%zmm5,%zmm18 + + vpternlogq $0x96,%zmm17,%zmm10,%zmm7 + vpternlogq $0x96,%zmm13,%zmm1,%zmm6 + vpternlogq $0x96,%zmm15,%zmm9,%zmm8 + vpternlogq $0x96,%zmm18,%zmm12,%zmm7 + vmovdqu64 512(%r10),%zmm11 + vmovdqu64 576(%r10),%zmm3 + vmovdqu64 640(%r10),%zmm4 + vmovdqu64 704(%r10),%zmm5 + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %zmm16,%zmm4,%zmm4 + vpshufb %zmm16,%zmm5,%zmm5 + vmovdqu64 512(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm19,%zmm11,%zmm9 + vpclmulqdq $0x01,%zmm19,%zmm11,%zmm10 + vpclmulqdq $0x10,%zmm19,%zmm11,%zmm12 + vmovdqu64 576(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm3,%zmm13 + vpclmulqdq $0x00,%zmm19,%zmm3,%zmm15 + vpclmulqdq $0x01,%zmm19,%zmm3,%zmm17 + vpclmulqdq $0x10,%zmm19,%zmm3,%zmm18 + vpternlogq $0x96,%zmm17,%zmm10,%zmm7 + vpternlogq $0x96,%zmm13,%zmm1,%zmm6 + vpternlogq $0x96,%zmm15,%zmm9,%zmm8 + vpternlogq $0x96,%zmm18,%zmm12,%zmm7 + vmovdqu64 640(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm4,%zmm1 + vpclmulqdq $0x00,%zmm19,%zmm4,%zmm9 + vpclmulqdq $0x01,%zmm19,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm19,%zmm4,%zmm12 + vmovdqu64 704(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm5,%zmm13 + vpclmulqdq $0x00,%zmm19,%zmm5,%zmm15 + vpclmulqdq $0x01,%zmm19,%zmm5,%zmm17 + vpclmulqdq $0x10,%zmm19,%zmm5,%zmm18 + + vpternlogq $0x96,%zmm17,%zmm10,%zmm7 + vpternlogq $0x96,%zmm13,%zmm1,%zmm6 + vpternlogq $0x96,%zmm15,%zmm9,%zmm8 + vpternlogq $0x96,%zmm18,%zmm12,%zmm7 + + vpsrldq $8,%zmm7,%zmm1 + vpslldq $8,%zmm7,%zmm9 + vpxorq %zmm1,%zmm6,%zmm6 + vpxorq %zmm9,%zmm8,%zmm8 + vextracti64x4 $1,%zmm6,%ymm1 + vpxorq %ymm1,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm1 + vpxorq %xmm1,%xmm6,%xmm6 + vextracti64x4 $1,%zmm8,%ymm9 + vpxorq %ymm9,%ymm8,%ymm8 + vextracti32x4 $1,%ymm8,%xmm9 + vpxorq %xmm9,%xmm8,%xmm8 + vmovdqa64 POLY2(%rip),%xmm10 + + + vpclmulqdq $0x01,%xmm8,%xmm10,%xmm1 + vpslldq $8,%xmm1,%xmm1 + vpxorq %xmm1,%xmm8,%xmm1 + + + vpclmulqdq $0x00,%xmm1,%xmm10,%xmm9 + vpsrldq $4,%xmm9,%xmm9 + vpclmulqdq $0x10,%xmm1,%xmm10,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm6,%xmm9,%xmm14 + + subq $768,%r11 + je .L_CALC_AAD_done_6 + + addq $768,%r10 + jmp .L_get_AAD_loop48x16_6 + +.L_exit_AAD_loop48x16_6: + + cmpq $512,%r11 + jl .L_less_than_32x16_6 + + vmovdqu64 0(%r10),%zmm11 + vmovdqu64 64(%r10),%zmm3 + vmovdqu64 128(%r10),%zmm4 + vmovdqu64 192(%r10),%zmm5 + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %zmm16,%zmm4,%zmm4 + vpshufb %zmm16,%zmm5,%zmm5 + testq %rbx,%rbx + jnz .L_skip_hkeys_precomputation_8 + + vmovdqu64 288(%rdi),%zmm1 + vmovdqu64 %zmm1,704(%rsp) + + vmovdqu64 224(%rdi),%zmm9 + vmovdqu64 %zmm9,640(%rsp) + + + vshufi64x2 $0x00,%zmm9,%zmm9,%zmm9 + + vmovdqu64 160(%rdi),%zmm10 + vmovdqu64 %zmm10,576(%rsp) + + vmovdqu64 96(%rdi),%zmm12 + vmovdqu64 %zmm12,512(%rsp) + + vpclmulqdq $0x11,%zmm9,%zmm10,%zmm13 + vpclmulqdq $0x00,%zmm9,%zmm10,%zmm15 + vpclmulqdq $0x01,%zmm9,%zmm10,%zmm17 + vpclmulqdq $0x10,%zmm9,%zmm10,%zmm10 + vpxorq %zmm17,%zmm10,%zmm10 + + vpsrldq $8,%zmm10,%zmm17 + vpslldq $8,%zmm10,%zmm10 + vpxorq %zmm17,%zmm13,%zmm13 + vpxorq %zmm15,%zmm10,%zmm10 + + + + vmovdqu64 POLY2(%rip),%zmm17 + + vpclmulqdq $0x01,%zmm10,%zmm17,%zmm15 + vpslldq $8,%zmm15,%zmm15 + vpxorq %zmm15,%zmm10,%zmm10 + + + + vpclmulqdq $0x00,%zmm10,%zmm17,%zmm15 + vpsrldq $4,%zmm15,%zmm15 + vpclmulqdq $0x10,%zmm10,%zmm17,%zmm10 + vpslldq $4,%zmm10,%zmm10 + + vpternlogq $0x96,%zmm15,%zmm13,%zmm10 + + vmovdqu64 %zmm10,448(%rsp) + + vpclmulqdq $0x11,%zmm9,%zmm12,%zmm13 + vpclmulqdq $0x00,%zmm9,%zmm12,%zmm15 + vpclmulqdq $0x01,%zmm9,%zmm12,%zmm17 + vpclmulqdq $0x10,%zmm9,%zmm12,%zmm12 + vpxorq %zmm17,%zmm12,%zmm12 + + vpsrldq $8,%zmm12,%zmm17 + vpslldq $8,%zmm12,%zmm12 + vpxorq %zmm17,%zmm13,%zmm13 + vpxorq %zmm15,%zmm12,%zmm12 + + + + vmovdqu64 POLY2(%rip),%zmm17 + + vpclmulqdq $0x01,%zmm12,%zmm17,%zmm15 + vpslldq $8,%zmm15,%zmm15 + vpxorq %zmm15,%zmm12,%zmm12 + + + + vpclmulqdq $0x00,%zmm12,%zmm17,%zmm15 + vpsrldq $4,%zmm15,%zmm15 + vpclmulqdq $0x10,%zmm12,%zmm17,%zmm12 + vpslldq $4,%zmm12,%zmm12 + + vpternlogq $0x96,%zmm15,%zmm13,%zmm12 + + vmovdqu64 %zmm12,384(%rsp) + + vpclmulqdq $0x11,%zmm9,%zmm10,%zmm13 + vpclmulqdq $0x00,%zmm9,%zmm10,%zmm15 + vpclmulqdq $0x01,%zmm9,%zmm10,%zmm17 + vpclmulqdq $0x10,%zmm9,%zmm10,%zmm10 + vpxorq %zmm17,%zmm10,%zmm10 + + vpsrldq $8,%zmm10,%zmm17 + vpslldq $8,%zmm10,%zmm10 + vpxorq %zmm17,%zmm13,%zmm13 + vpxorq %zmm15,%zmm10,%zmm10 + + + + vmovdqu64 POLY2(%rip),%zmm17 + + vpclmulqdq $0x01,%zmm10,%zmm17,%zmm15 + vpslldq $8,%zmm15,%zmm15 + vpxorq %zmm15,%zmm10,%zmm10 + + + + vpclmulqdq $0x00,%zmm10,%zmm17,%zmm15 + vpsrldq $4,%zmm15,%zmm15 + vpclmulqdq $0x10,%zmm10,%zmm17,%zmm10 + vpslldq $4,%zmm10,%zmm10 + + vpternlogq $0x96,%zmm15,%zmm13,%zmm10 + + vmovdqu64 %zmm10,320(%rsp) + + vpclmulqdq $0x11,%zmm9,%zmm12,%zmm13 + vpclmulqdq $0x00,%zmm9,%zmm12,%zmm15 + vpclmulqdq $0x01,%zmm9,%zmm12,%zmm17 + vpclmulqdq $0x10,%zmm9,%zmm12,%zmm12 + vpxorq %zmm17,%zmm12,%zmm12 + + vpsrldq $8,%zmm12,%zmm17 + vpslldq $8,%zmm12,%zmm12 + vpxorq %zmm17,%zmm13,%zmm13 + vpxorq %zmm15,%zmm12,%zmm12 + + + + vmovdqu64 POLY2(%rip),%zmm17 + + vpclmulqdq $0x01,%zmm12,%zmm17,%zmm15 + vpslldq $8,%zmm15,%zmm15 + vpxorq %zmm15,%zmm12,%zmm12 + + + + vpclmulqdq $0x00,%zmm12,%zmm17,%zmm15 + vpsrldq $4,%zmm15,%zmm15 + vpclmulqdq $0x10,%zmm12,%zmm17,%zmm12 + vpslldq $4,%zmm12,%zmm12 + + vpternlogq $0x96,%zmm15,%zmm13,%zmm12 + + vmovdqu64 %zmm12,256(%rsp) +.L_skip_hkeys_precomputation_8: + movq $1,%rbx + vpxorq %zmm14,%zmm11,%zmm11 + vmovdqu64 256(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm19,%zmm11,%zmm9 + vpclmulqdq $0x01,%zmm19,%zmm11,%zmm10 + vpclmulqdq $0x10,%zmm19,%zmm11,%zmm12 + vmovdqu64 320(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm3,%zmm13 + vpclmulqdq $0x00,%zmm19,%zmm3,%zmm15 + vpclmulqdq $0x01,%zmm19,%zmm3,%zmm17 + vpclmulqdq $0x10,%zmm19,%zmm3,%zmm18 + vpxorq %zmm17,%zmm10,%zmm7 + vpxorq %zmm13,%zmm1,%zmm6 + vpxorq %zmm15,%zmm9,%zmm8 + vpternlogq $0x96,%zmm18,%zmm12,%zmm7 + vmovdqu64 384(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm4,%zmm1 + vpclmulqdq $0x00,%zmm19,%zmm4,%zmm9 + vpclmulqdq $0x01,%zmm19,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm19,%zmm4,%zmm12 + vmovdqu64 448(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm5,%zmm13 + vpclmulqdq $0x00,%zmm19,%zmm5,%zmm15 + vpclmulqdq $0x01,%zmm19,%zmm5,%zmm17 + vpclmulqdq $0x10,%zmm19,%zmm5,%zmm18 + + vpternlogq $0x96,%zmm17,%zmm10,%zmm7 + vpternlogq $0x96,%zmm13,%zmm1,%zmm6 + vpternlogq $0x96,%zmm15,%zmm9,%zmm8 + vpternlogq $0x96,%zmm18,%zmm12,%zmm7 + vmovdqu64 256(%r10),%zmm11 + vmovdqu64 320(%r10),%zmm3 + vmovdqu64 384(%r10),%zmm4 + vmovdqu64 448(%r10),%zmm5 + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %zmm16,%zmm4,%zmm4 + vpshufb %zmm16,%zmm5,%zmm5 + vmovdqu64 512(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm19,%zmm11,%zmm9 + vpclmulqdq $0x01,%zmm19,%zmm11,%zmm10 + vpclmulqdq $0x10,%zmm19,%zmm11,%zmm12 + vmovdqu64 576(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm3,%zmm13 + vpclmulqdq $0x00,%zmm19,%zmm3,%zmm15 + vpclmulqdq $0x01,%zmm19,%zmm3,%zmm17 + vpclmulqdq $0x10,%zmm19,%zmm3,%zmm18 + vpternlogq $0x96,%zmm17,%zmm10,%zmm7 + vpternlogq $0x96,%zmm13,%zmm1,%zmm6 + vpternlogq $0x96,%zmm15,%zmm9,%zmm8 + vpternlogq $0x96,%zmm18,%zmm12,%zmm7 + vmovdqu64 640(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm4,%zmm1 + vpclmulqdq $0x00,%zmm19,%zmm4,%zmm9 + vpclmulqdq $0x01,%zmm19,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm19,%zmm4,%zmm12 + vmovdqu64 704(%rsp),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm5,%zmm13 + vpclmulqdq $0x00,%zmm19,%zmm5,%zmm15 + vpclmulqdq $0x01,%zmm19,%zmm5,%zmm17 + vpclmulqdq $0x10,%zmm19,%zmm5,%zmm18 + + vpternlogq $0x96,%zmm17,%zmm10,%zmm7 + vpternlogq $0x96,%zmm13,%zmm1,%zmm6 + vpternlogq $0x96,%zmm15,%zmm9,%zmm8 + vpternlogq $0x96,%zmm18,%zmm12,%zmm7 + + vpsrldq $8,%zmm7,%zmm1 + vpslldq $8,%zmm7,%zmm9 + vpxorq %zmm1,%zmm6,%zmm6 + vpxorq %zmm9,%zmm8,%zmm8 + vextracti64x4 $1,%zmm6,%ymm1 + vpxorq %ymm1,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm1 + vpxorq %xmm1,%xmm6,%xmm6 + vextracti64x4 $1,%zmm8,%ymm9 + vpxorq %ymm9,%ymm8,%ymm8 + vextracti32x4 $1,%ymm8,%xmm9 + vpxorq %xmm9,%xmm8,%xmm8 + vmovdqa64 POLY2(%rip),%xmm10 + + + vpclmulqdq $0x01,%xmm8,%xmm10,%xmm1 + vpslldq $8,%xmm1,%xmm1 + vpxorq %xmm1,%xmm8,%xmm1 + + + vpclmulqdq $0x00,%xmm1,%xmm10,%xmm9 + vpsrldq $4,%xmm9,%xmm9 + vpclmulqdq $0x10,%xmm1,%xmm10,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm6,%xmm9,%xmm14 + + subq $512,%r11 + je .L_CALC_AAD_done_6 + + addq $512,%r10 + jmp .L_less_than_16x16_6 + +.L_less_than_32x16_6: + cmpq $256,%r11 + jl .L_less_than_16x16_6 + + vmovdqu64 0(%r10),%zmm11 + vmovdqu64 64(%r10),%zmm3 + vmovdqu64 128(%r10),%zmm4 + vmovdqu64 192(%r10),%zmm5 + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %zmm16,%zmm4,%zmm4 + vpshufb %zmm16,%zmm5,%zmm5 + vpxorq %zmm14,%zmm11,%zmm11 + vmovdqu64 96(%rdi),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm19,%zmm11,%zmm9 + vpclmulqdq $0x01,%zmm19,%zmm11,%zmm10 + vpclmulqdq $0x10,%zmm19,%zmm11,%zmm12 + vmovdqu64 160(%rdi),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm3,%zmm13 + vpclmulqdq $0x00,%zmm19,%zmm3,%zmm15 + vpclmulqdq $0x01,%zmm19,%zmm3,%zmm17 + vpclmulqdq $0x10,%zmm19,%zmm3,%zmm18 + vpxorq %zmm17,%zmm10,%zmm7 + vpxorq %zmm13,%zmm1,%zmm6 + vpxorq %zmm15,%zmm9,%zmm8 + vpternlogq $0x96,%zmm18,%zmm12,%zmm7 + vmovdqu64 224(%rdi),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm4,%zmm1 + vpclmulqdq $0x00,%zmm19,%zmm4,%zmm9 + vpclmulqdq $0x01,%zmm19,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm19,%zmm4,%zmm12 + vmovdqu64 288(%rdi),%zmm19 + vpclmulqdq $0x11,%zmm19,%zmm5,%zmm13 + vpclmulqdq $0x00,%zmm19,%zmm5,%zmm15 + vpclmulqdq $0x01,%zmm19,%zmm5,%zmm17 + vpclmulqdq $0x10,%zmm19,%zmm5,%zmm18 + + vpternlogq $0x96,%zmm17,%zmm10,%zmm7 + vpternlogq $0x96,%zmm13,%zmm1,%zmm6 + vpternlogq $0x96,%zmm15,%zmm9,%zmm8 + vpternlogq $0x96,%zmm18,%zmm12,%zmm7 + + vpsrldq $8,%zmm7,%zmm1 + vpslldq $8,%zmm7,%zmm9 + vpxorq %zmm1,%zmm6,%zmm6 + vpxorq %zmm9,%zmm8,%zmm8 + vextracti64x4 $1,%zmm6,%ymm1 + vpxorq %ymm1,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm1 + vpxorq %xmm1,%xmm6,%xmm6 + vextracti64x4 $1,%zmm8,%ymm9 + vpxorq %ymm9,%ymm8,%ymm8 + vextracti32x4 $1,%ymm8,%xmm9 + vpxorq %xmm9,%xmm8,%xmm8 + vmovdqa64 POLY2(%rip),%xmm10 + + + vpclmulqdq $0x01,%xmm8,%xmm10,%xmm1 + vpslldq $8,%xmm1,%xmm1 + vpxorq %xmm1,%xmm8,%xmm1 + + + vpclmulqdq $0x00,%xmm1,%xmm10,%xmm9 + vpsrldq $4,%xmm9,%xmm9 + vpclmulqdq $0x10,%xmm1,%xmm10,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm6,%xmm9,%xmm14 + + subq $256,%r11 + je .L_CALC_AAD_done_6 + + addq $256,%r10 + +.L_less_than_16x16_6: + + leaq byte64_len_to_mask_table(%rip),%r12 + leaq (%r12,%r11,8),%r12 + + + addl $15,%r11d + shrl $4,%r11d + cmpl $2,%r11d + jb .L_AAD_blocks_1_6 + je .L_AAD_blocks_2_6 + cmpl $4,%r11d + jb .L_AAD_blocks_3_6 + je .L_AAD_blocks_4_6 + cmpl $6,%r11d + jb .L_AAD_blocks_5_6 + je .L_AAD_blocks_6_6 + cmpl $8,%r11d + jb .L_AAD_blocks_7_6 + je .L_AAD_blocks_8_6 + cmpl $10,%r11d + jb .L_AAD_blocks_9_6 + je .L_AAD_blocks_10_6 + cmpl $12,%r11d + jb .L_AAD_blocks_11_6 + je .L_AAD_blocks_12_6 + cmpl $14,%r11d + jb .L_AAD_blocks_13_6 + je .L_AAD_blocks_14_6 + cmpl $15,%r11d + je .L_AAD_blocks_15_6 +.L_AAD_blocks_16_6: + subq $1536,%r12 + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11 + vmovdqu8 64(%r10),%zmm3 + vmovdqu8 128(%r10),%zmm4 + vmovdqu8 192(%r10),%zmm5{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %zmm16,%zmm4,%zmm4 + vpshufb %zmm16,%zmm5,%zmm5 + vpxorq %zmm14,%zmm11,%zmm11 + vmovdqu64 96(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm6 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm7 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm8 + vmovdqu64 160(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm3,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm3,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm3,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm3,%zmm13 + vmovdqu64 224(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm4,%zmm11 + vpclmulqdq $0x00,%zmm15,%zmm4,%zmm3 + vpternlogq $0x96,%zmm9,%zmm11,%zmm1 + vpternlogq $0x96,%zmm10,%zmm3,%zmm6 + vpclmulqdq $0x01,%zmm15,%zmm4,%zmm11 + vpclmulqdq $0x10,%zmm15,%zmm4,%zmm3 + vpternlogq $0x96,%zmm12,%zmm11,%zmm7 + vpternlogq $0x96,%zmm13,%zmm3,%zmm8 + vmovdqu64 288(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm5,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm5,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm5,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm5,%zmm13 + vpxorq %zmm9,%zmm1,%zmm9 + vpxorq %zmm10,%zmm6,%zmm10 + vpxorq %zmm12,%zmm7,%zmm12 + vpxorq %zmm13,%zmm8,%zmm13 + + vpxorq %zmm13,%zmm12,%zmm12 + vpsrldq $8,%zmm12,%zmm7 + vpslldq $8,%zmm12,%zmm8 + vpxorq %zmm7,%zmm9,%zmm1 + vpxorq %zmm8,%zmm10,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm1,%xmm8,%xmm14 + + jmp .L_CALC_AAD_done_6 +.L_AAD_blocks_15_6: + subq $1536,%r12 + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11 + vmovdqu8 64(%r10),%zmm3 + vmovdqu8 128(%r10),%zmm4 + vmovdqu8 192(%r10),%zmm5{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %zmm16,%zmm4,%zmm4 + vpshufb %zmm16,%zmm5,%zmm5 + vpxorq %zmm14,%zmm11,%zmm11 + vmovdqu64 112(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm6 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm7 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm8 + vmovdqu64 176(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm3,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm3,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm3,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm3,%zmm13 + vmovdqu64 240(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm4,%zmm11 + vpclmulqdq $0x00,%zmm15,%zmm4,%zmm3 + vpternlogq $0x96,%zmm1,%zmm11,%zmm9 + vpternlogq $0x96,%zmm6,%zmm3,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm4,%zmm11 + vpclmulqdq $0x10,%zmm15,%zmm4,%zmm3 + vpternlogq $0x96,%zmm7,%zmm11,%zmm12 + vpternlogq $0x96,%zmm8,%zmm3,%zmm13 + vmovdqu64 304(%rdi),%ymm15 + vinserti64x2 $2,336(%rdi),%zmm15,%zmm15 + vpclmulqdq $0x01,%zmm15,%zmm5,%zmm7 + vpclmulqdq $0x10,%zmm15,%zmm5,%zmm8 + vpclmulqdq $0x11,%zmm15,%zmm5,%zmm1 + vpclmulqdq $0x00,%zmm15,%zmm5,%zmm6 + + vpxorq %zmm12,%zmm7,%zmm7 + vpxorq %zmm13,%zmm8,%zmm8 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm6,%zmm6 + + vpxorq %zmm8,%zmm7,%zmm7 + vpsrldq $8,%zmm7,%zmm12 + vpslldq $8,%zmm7,%zmm13 + vpxorq %zmm12,%zmm1,%zmm1 + vpxorq %zmm13,%zmm6,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm1,%xmm8,%xmm14 + + jmp .L_CALC_AAD_done_6 +.L_AAD_blocks_14_6: + subq $1536,%r12 + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11 + vmovdqu8 64(%r10),%zmm3 + vmovdqu8 128(%r10),%zmm4 + vmovdqu8 192(%r10),%ymm5{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %zmm16,%zmm4,%zmm4 + vpshufb %ymm16,%ymm5,%ymm5 + vpxorq %zmm14,%zmm11,%zmm11 + vmovdqu64 128(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm6 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm7 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm8 + vmovdqu64 192(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm3,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm3,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm3,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm3,%zmm13 + vmovdqu64 256(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm4,%zmm11 + vpclmulqdq $0x00,%zmm15,%zmm4,%zmm3 + vpternlogq $0x96,%zmm1,%zmm11,%zmm9 + vpternlogq $0x96,%zmm6,%zmm3,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm4,%zmm11 + vpclmulqdq $0x10,%zmm15,%zmm4,%zmm3 + vpternlogq $0x96,%zmm7,%zmm11,%zmm12 + vpternlogq $0x96,%zmm8,%zmm3,%zmm13 + vmovdqu64 320(%rdi),%ymm15 + vpclmulqdq $0x01,%ymm15,%ymm5,%ymm7 + vpclmulqdq $0x10,%ymm15,%ymm5,%ymm8 + vpclmulqdq $0x11,%ymm15,%ymm5,%ymm1 + vpclmulqdq $0x00,%ymm15,%ymm5,%ymm6 + + vpxorq %zmm12,%zmm7,%zmm7 + vpxorq %zmm13,%zmm8,%zmm8 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm6,%zmm6 + + vpxorq %zmm8,%zmm7,%zmm7 + vpsrldq $8,%zmm7,%zmm12 + vpslldq $8,%zmm7,%zmm13 + vpxorq %zmm12,%zmm1,%zmm1 + vpxorq %zmm13,%zmm6,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm1,%xmm8,%xmm14 + + jmp .L_CALC_AAD_done_6 +.L_AAD_blocks_13_6: + subq $1536,%r12 + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11 + vmovdqu8 64(%r10),%zmm3 + vmovdqu8 128(%r10),%zmm4 + vmovdqu8 192(%r10),%xmm5{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %zmm16,%zmm4,%zmm4 + vpshufb %xmm16,%xmm5,%xmm5 + vpxorq %zmm14,%zmm11,%zmm11 + vmovdqu64 144(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm6 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm7 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm8 + vmovdqu64 208(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm3,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm3,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm3,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm3,%zmm13 + vmovdqu64 272(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm4,%zmm11 + vpclmulqdq $0x00,%zmm15,%zmm4,%zmm3 + vpternlogq $0x96,%zmm1,%zmm11,%zmm9 + vpternlogq $0x96,%zmm6,%zmm3,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm4,%zmm11 + vpclmulqdq $0x10,%zmm15,%zmm4,%zmm3 + vpternlogq $0x96,%zmm7,%zmm11,%zmm12 + vpternlogq $0x96,%zmm8,%zmm3,%zmm13 + vmovdqu64 336(%rdi),%xmm15 + vpclmulqdq $0x01,%xmm15,%xmm5,%xmm7 + vpclmulqdq $0x10,%xmm15,%xmm5,%xmm8 + vpclmulqdq $0x11,%xmm15,%xmm5,%xmm1 + vpclmulqdq $0x00,%xmm15,%xmm5,%xmm6 + + vpxorq %zmm12,%zmm7,%zmm7 + vpxorq %zmm13,%zmm8,%zmm8 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm6,%zmm6 + + vpxorq %zmm8,%zmm7,%zmm7 + vpsrldq $8,%zmm7,%zmm12 + vpslldq $8,%zmm7,%zmm13 + vpxorq %zmm12,%zmm1,%zmm1 + vpxorq %zmm13,%zmm6,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm1,%xmm8,%xmm14 + + jmp .L_CALC_AAD_done_6 +.L_AAD_blocks_12_6: + subq $1024,%r12 + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11 + vmovdqu8 64(%r10),%zmm3 + vmovdqu8 128(%r10),%zmm4{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %zmm16,%zmm4,%zmm4 + vpxorq %zmm14,%zmm11,%zmm11 + vmovdqu64 160(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm6 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm7 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm8 + vmovdqu64 224(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm3,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm3,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm3,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm3,%zmm13 + vmovdqu64 288(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm4,%zmm11 + vpclmulqdq $0x00,%zmm15,%zmm4,%zmm3 + vpternlogq $0x96,%zmm1,%zmm11,%zmm9 + vpternlogq $0x96,%zmm6,%zmm3,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm4,%zmm11 + vpclmulqdq $0x10,%zmm15,%zmm4,%zmm3 + vpternlogq $0x96,%zmm7,%zmm11,%zmm12 + vpternlogq $0x96,%zmm8,%zmm3,%zmm13 + + vpxorq %zmm13,%zmm12,%zmm12 + vpsrldq $8,%zmm12,%zmm7 + vpslldq $8,%zmm12,%zmm8 + vpxorq %zmm7,%zmm9,%zmm1 + vpxorq %zmm8,%zmm10,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm1,%xmm8,%xmm14 + + jmp .L_CALC_AAD_done_6 +.L_AAD_blocks_11_6: + subq $1024,%r12 + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11 + vmovdqu8 64(%r10),%zmm3 + vmovdqu8 128(%r10),%zmm4{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %zmm16,%zmm4,%zmm4 + vpxorq %zmm14,%zmm11,%zmm11 + vmovdqu64 176(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm6 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm7 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm8 + vmovdqu64 240(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm3,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm3,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm3,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm3,%zmm13 + vpxorq %zmm9,%zmm1,%zmm9 + vpxorq %zmm10,%zmm6,%zmm10 + vpxorq %zmm12,%zmm7,%zmm12 + vpxorq %zmm13,%zmm8,%zmm13 + vmovdqu64 304(%rdi),%ymm15 + vinserti64x2 $2,336(%rdi),%zmm15,%zmm15 + vpclmulqdq $0x01,%zmm15,%zmm4,%zmm7 + vpclmulqdq $0x10,%zmm15,%zmm4,%zmm8 + vpclmulqdq $0x11,%zmm15,%zmm4,%zmm1 + vpclmulqdq $0x00,%zmm15,%zmm4,%zmm6 + + vpxorq %zmm12,%zmm7,%zmm7 + vpxorq %zmm13,%zmm8,%zmm8 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm6,%zmm6 + + vpxorq %zmm8,%zmm7,%zmm7 + vpsrldq $8,%zmm7,%zmm12 + vpslldq $8,%zmm7,%zmm13 + vpxorq %zmm12,%zmm1,%zmm1 + vpxorq %zmm13,%zmm6,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm1,%xmm8,%xmm14 + + jmp .L_CALC_AAD_done_6 +.L_AAD_blocks_10_6: + subq $1024,%r12 + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11 + vmovdqu8 64(%r10),%zmm3 + vmovdqu8 128(%r10),%ymm4{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %ymm16,%ymm4,%ymm4 + vpxorq %zmm14,%zmm11,%zmm11 + vmovdqu64 192(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm6 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm7 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm8 + vmovdqu64 256(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm3,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm3,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm3,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm3,%zmm13 + vpxorq %zmm9,%zmm1,%zmm9 + vpxorq %zmm10,%zmm6,%zmm10 + vpxorq %zmm12,%zmm7,%zmm12 + vpxorq %zmm13,%zmm8,%zmm13 + vmovdqu64 320(%rdi),%ymm15 + vpclmulqdq $0x01,%ymm15,%ymm4,%ymm7 + vpclmulqdq $0x10,%ymm15,%ymm4,%ymm8 + vpclmulqdq $0x11,%ymm15,%ymm4,%ymm1 + vpclmulqdq $0x00,%ymm15,%ymm4,%ymm6 + + vpxorq %zmm12,%zmm7,%zmm7 + vpxorq %zmm13,%zmm8,%zmm8 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm6,%zmm6 + + vpxorq %zmm8,%zmm7,%zmm7 + vpsrldq $8,%zmm7,%zmm12 + vpslldq $8,%zmm7,%zmm13 + vpxorq %zmm12,%zmm1,%zmm1 + vpxorq %zmm13,%zmm6,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm1,%xmm8,%xmm14 + + jmp .L_CALC_AAD_done_6 +.L_AAD_blocks_9_6: + subq $1024,%r12 + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11 + vmovdqu8 64(%r10),%zmm3 + vmovdqu8 128(%r10),%xmm4{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpshufb %xmm16,%xmm4,%xmm4 + vpxorq %zmm14,%zmm11,%zmm11 + vmovdqu64 208(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm6 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm7 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm8 + vmovdqu64 272(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm3,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm3,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm3,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm3,%zmm13 + vpxorq %zmm9,%zmm1,%zmm9 + vpxorq %zmm10,%zmm6,%zmm10 + vpxorq %zmm12,%zmm7,%zmm12 + vpxorq %zmm13,%zmm8,%zmm13 + vmovdqu64 336(%rdi),%xmm15 + vpclmulqdq $0x01,%xmm15,%xmm4,%xmm7 + vpclmulqdq $0x10,%xmm15,%xmm4,%xmm8 + vpclmulqdq $0x11,%xmm15,%xmm4,%xmm1 + vpclmulqdq $0x00,%xmm15,%xmm4,%xmm6 + + vpxorq %zmm12,%zmm7,%zmm7 + vpxorq %zmm13,%zmm8,%zmm8 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm6,%zmm6 + + vpxorq %zmm8,%zmm7,%zmm7 + vpsrldq $8,%zmm7,%zmm12 + vpslldq $8,%zmm7,%zmm13 + vpxorq %zmm12,%zmm1,%zmm1 + vpxorq %zmm13,%zmm6,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm1,%xmm8,%xmm14 + + jmp .L_CALC_AAD_done_6 +.L_AAD_blocks_8_6: + subq $512,%r12 + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11 + vmovdqu8 64(%r10),%zmm3{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpxorq %zmm14,%zmm11,%zmm11 + vmovdqu64 224(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm6 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm7 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm8 + vmovdqu64 288(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm3,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm3,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm3,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm3,%zmm13 + vpxorq %zmm9,%zmm1,%zmm9 + vpxorq %zmm10,%zmm6,%zmm10 + vpxorq %zmm12,%zmm7,%zmm12 + vpxorq %zmm13,%zmm8,%zmm13 + + vpxorq %zmm13,%zmm12,%zmm12 + vpsrldq $8,%zmm12,%zmm7 + vpslldq $8,%zmm12,%zmm8 + vpxorq %zmm7,%zmm9,%zmm1 + vpxorq %zmm8,%zmm10,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm1,%xmm8,%xmm14 + + jmp .L_CALC_AAD_done_6 +.L_AAD_blocks_7_6: + subq $512,%r12 + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11 + vmovdqu8 64(%r10),%zmm3{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %zmm16,%zmm3,%zmm3 + vpxorq %zmm14,%zmm11,%zmm11 + vmovdqu64 240(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm13 + vmovdqu64 304(%rdi),%ymm15 + vinserti64x2 $2,336(%rdi),%zmm15,%zmm15 + vpclmulqdq $0x01,%zmm15,%zmm3,%zmm7 + vpclmulqdq $0x10,%zmm15,%zmm3,%zmm8 + vpclmulqdq $0x11,%zmm15,%zmm3,%zmm1 + vpclmulqdq $0x00,%zmm15,%zmm3,%zmm6 + + vpxorq %zmm12,%zmm7,%zmm7 + vpxorq %zmm13,%zmm8,%zmm8 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm6,%zmm6 + + vpxorq %zmm8,%zmm7,%zmm7 + vpsrldq $8,%zmm7,%zmm12 + vpslldq $8,%zmm7,%zmm13 + vpxorq %zmm12,%zmm1,%zmm1 + vpxorq %zmm13,%zmm6,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm1,%xmm8,%xmm14 + + jmp .L_CALC_AAD_done_6 +.L_AAD_blocks_6_6: + subq $512,%r12 + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11 + vmovdqu8 64(%r10),%ymm3{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %ymm16,%ymm3,%ymm3 + vpxorq %zmm14,%zmm11,%zmm11 + vmovdqu64 256(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm13 + vmovdqu64 320(%rdi),%ymm15 + vpclmulqdq $0x01,%ymm15,%ymm3,%ymm7 + vpclmulqdq $0x10,%ymm15,%ymm3,%ymm8 + vpclmulqdq $0x11,%ymm15,%ymm3,%ymm1 + vpclmulqdq $0x00,%ymm15,%ymm3,%ymm6 + + vpxorq %zmm12,%zmm7,%zmm7 + vpxorq %zmm13,%zmm8,%zmm8 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm6,%zmm6 + + vpxorq %zmm8,%zmm7,%zmm7 + vpsrldq $8,%zmm7,%zmm12 + vpslldq $8,%zmm7,%zmm13 + vpxorq %zmm12,%zmm1,%zmm1 + vpxorq %zmm13,%zmm6,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm1,%xmm8,%xmm14 + + jmp .L_CALC_AAD_done_6 +.L_AAD_blocks_5_6: + subq $512,%r12 + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11 + vmovdqu8 64(%r10),%xmm3{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpshufb %xmm16,%xmm3,%xmm3 + vpxorq %zmm14,%zmm11,%zmm11 + vmovdqu64 272(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm13 + vmovdqu64 336(%rdi),%xmm15 + vpclmulqdq $0x01,%xmm15,%xmm3,%xmm7 + vpclmulqdq $0x10,%xmm15,%xmm3,%xmm8 + vpclmulqdq $0x11,%xmm15,%xmm3,%xmm1 + vpclmulqdq $0x00,%xmm15,%xmm3,%xmm6 + + vpxorq %zmm12,%zmm7,%zmm7 + vpxorq %zmm13,%zmm8,%zmm8 + vpxorq %zmm9,%zmm1,%zmm1 + vpxorq %zmm10,%zmm6,%zmm6 + + vpxorq %zmm8,%zmm7,%zmm7 + vpsrldq $8,%zmm7,%zmm12 + vpslldq $8,%zmm7,%zmm13 + vpxorq %zmm12,%zmm1,%zmm1 + vpxorq %zmm13,%zmm6,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm1,%xmm8,%xmm14 + + jmp .L_CALC_AAD_done_6 +.L_AAD_blocks_4_6: + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpxorq %zmm14,%zmm11,%zmm11 + vmovdqu64 288(%rdi),%zmm15 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm9 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm10 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm12 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm13 + + vpxorq %zmm13,%zmm12,%zmm12 + vpsrldq $8,%zmm12,%zmm7 + vpslldq $8,%zmm12,%zmm8 + vpxorq %zmm7,%zmm9,%zmm1 + vpxorq %zmm8,%zmm10,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm1,%xmm8,%xmm14 + + jmp .L_CALC_AAD_done_6 +.L_AAD_blocks_3_6: + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%zmm11{%k1}{z} + vpshufb %zmm16,%zmm11,%zmm11 + vpxorq %zmm14,%zmm11,%zmm11 + vmovdqu64 304(%rdi),%ymm15 + vinserti64x2 $2,336(%rdi),%zmm15,%zmm15 + vpclmulqdq $0x01,%zmm15,%zmm11,%zmm7 + vpclmulqdq $0x10,%zmm15,%zmm11,%zmm8 + vpclmulqdq $0x11,%zmm15,%zmm11,%zmm1 + vpclmulqdq $0x00,%zmm15,%zmm11,%zmm6 + + vpxorq %zmm8,%zmm7,%zmm7 + vpsrldq $8,%zmm7,%zmm12 + vpslldq $8,%zmm7,%zmm13 + vpxorq %zmm12,%zmm1,%zmm1 + vpxorq %zmm13,%zmm6,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm1,%xmm8,%xmm14 + + jmp .L_CALC_AAD_done_6 +.L_AAD_blocks_2_6: + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%ymm11{%k1}{z} + vpshufb %ymm16,%ymm11,%ymm11 + vpxorq %zmm14,%zmm11,%zmm11 + vmovdqu64 320(%rdi),%ymm15 + vpclmulqdq $0x01,%ymm15,%ymm11,%ymm7 + vpclmulqdq $0x10,%ymm15,%ymm11,%ymm8 + vpclmulqdq $0x11,%ymm15,%ymm11,%ymm1 + vpclmulqdq $0x00,%ymm15,%ymm11,%ymm6 + + vpxorq %zmm8,%zmm7,%zmm7 + vpsrldq $8,%zmm7,%zmm12 + vpslldq $8,%zmm7,%zmm13 + vpxorq %zmm12,%zmm1,%zmm1 + vpxorq %zmm13,%zmm6,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm1,%xmm8,%xmm14 + + jmp .L_CALC_AAD_done_6 +.L_AAD_blocks_1_6: + kmovq (%r12),%k1 + vmovdqu8 0(%r10),%xmm11{%k1}{z} + vpshufb %xmm16,%xmm11,%xmm11 + vpxorq %zmm14,%zmm11,%zmm11 + vmovdqu64 336(%rdi),%xmm15 + vpclmulqdq $0x01,%xmm15,%xmm11,%xmm7 + vpclmulqdq $0x10,%xmm15,%xmm11,%xmm8 + vpclmulqdq $0x11,%xmm15,%xmm11,%xmm1 + vpclmulqdq $0x00,%xmm15,%xmm11,%xmm6 + + vpxorq %zmm8,%zmm7,%zmm7 + vpsrldq $8,%zmm7,%zmm12 + vpslldq $8,%zmm7,%zmm13 + vpxorq %zmm12,%zmm1,%zmm1 + vpxorq %zmm13,%zmm6,%zmm6 + vextracti64x4 $1,%zmm1,%ymm12 + vpxorq %ymm12,%ymm1,%ymm1 + vextracti32x4 $1,%ymm1,%xmm12 + vpxorq %xmm12,%xmm1,%xmm1 + vextracti64x4 $1,%zmm6,%ymm13 + vpxorq %ymm13,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm13 + vpxorq %xmm13,%xmm6,%xmm6 + vmovdqa64 POLY2(%rip),%xmm15 + + + vpclmulqdq $0x01,%xmm6,%xmm15,%xmm7 + vpslldq $8,%xmm7,%xmm7 + vpxorq %xmm7,%xmm6,%xmm7 + + + vpclmulqdq $0x00,%xmm7,%xmm15,%xmm8 + vpsrldq $4,%xmm8,%xmm8 + vpclmulqdq $0x10,%xmm7,%xmm15,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm1,%xmm8,%xmm14 + +.L_CALC_AAD_done_6: + vmovdqu64 %xmm14,64(%rdi) + cmpq $256,%rdx + jbe .Lskip_hkeys_cleanup_9 + vpxor %xmm0,%xmm0,%xmm0 + vmovdqa64 %zmm0,0(%rsp) + vmovdqa64 %zmm0,64(%rsp) + vmovdqa64 %zmm0,128(%rsp) + vmovdqa64 %zmm0,192(%rsp) + vmovdqa64 %zmm0,256(%rsp) + vmovdqa64 %zmm0,320(%rsp) + vmovdqa64 %zmm0,384(%rsp) + vmovdqa64 %zmm0,448(%rsp) + vmovdqa64 %zmm0,512(%rsp) + vmovdqa64 %zmm0,576(%rsp) + vmovdqa64 %zmm0,640(%rsp) + vmovdqa64 %zmm0,704(%rsp) +.Lskip_hkeys_cleanup_9: + vzeroupper + leaq (%rbp),%rsp +.cfi_def_cfa_register %rsp + popq %r15 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r15 + popq %r14 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r14 + popq %r13 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r13 + popq %r12 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r12 + popq %rbp +.cfi_adjust_cfa_offset -8 +.cfi_restore %rbp + popq %rbx +.cfi_adjust_cfa_offset -8 +.cfi_restore %rbx +.Lexit_update_aad: + .byte 0xf3,0xc3 +.Lghash_seh_end: +.cfi_endproc +.size ossl_aes_gcm_update_aad_avx512, .-ossl_aes_gcm_update_aad_avx512 +.globl ossl_aes_gcm_encrypt_avx512 +.type ossl_aes_gcm_encrypt_avx512,@function +.align 32 +ossl_aes_gcm_encrypt_avx512: +.cfi_startproc +.Lencrypt_seh_begin: +.byte 243,15,30,250 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 +.Lencrypt_seh_push_rbx: + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 +.Lencrypt_seh_push_rbp: + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 +.Lencrypt_seh_push_r12: + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 +.Lencrypt_seh_push_r13: + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 +.Lencrypt_seh_push_r14: + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 +.Lencrypt_seh_push_r15: + + + + + + + + + + + leaq 0(%rsp),%rbp +.cfi_def_cfa_register %rbp +.Lencrypt_seh_setfp: + +.Lencrypt_seh_prolog_end: + subq $1588,%rsp + andq $(-64),%rsp + + + movl 240(%rdi),%eax + cmpl $9,%eax + je .Laes_gcm_encrypt_128_avx512 + cmpl $11,%eax + je .Laes_gcm_encrypt_192_avx512 + cmpl $13,%eax + je .Laes_gcm_encrypt_256_avx512 + xorl %eax,%eax + jmp .Lexit_gcm_encrypt +.align 32 +.Laes_gcm_encrypt_128_avx512: + orq %r8,%r8 + je .L_enc_dec_done_10 + xorq %r14,%r14 + vmovdqu64 64(%rsi),%xmm14 + + movq (%rdx),%r11 + orq %r11,%r11 + je .L_partial_block_done_11 + movl $16,%r10d + leaq byte_len_to_mask_table(%rip),%r12 + cmpq %r10,%r8 + cmovcq %r8,%r10 + kmovw (%r12,%r10,2),%k1 + vmovdqu8 (%rcx),%xmm0{%k1}{z} + + vmovdqu64 16(%rsi),%xmm3 + vmovdqu64 336(%rsi),%xmm4 + + + + leaq SHIFT_MASK(%rip),%r12 + addq %r11,%r12 + vmovdqu64 (%r12),%xmm5 + vpshufb %xmm5,%xmm3,%xmm3 + vpxorq %xmm0,%xmm3,%xmm3 + + + leaq (%r8,%r11,1),%r13 + subq $16,%r13 + jge .L_no_extra_mask_11 + subq %r13,%r12 +.L_no_extra_mask_11: + + + + vmovdqu64 16(%r12),%xmm0 + vpand %xmm0,%xmm3,%xmm3 + vpshufb SHUF_MASK(%rip),%xmm3,%xmm3 + vpshufb %xmm5,%xmm3,%xmm3 + vpxorq %xmm3,%xmm14,%xmm14 + cmpq $0,%r13 + jl .L_partial_incomplete_11 + + vpclmulqdq $0x11,%xmm4,%xmm14,%xmm7 + vpclmulqdq $0x00,%xmm4,%xmm14,%xmm10 + vpclmulqdq $0x01,%xmm4,%xmm14,%xmm11 + vpclmulqdq $0x10,%xmm4,%xmm14,%xmm14 + vpxorq %xmm11,%xmm14,%xmm14 + + vpsrldq $8,%xmm14,%xmm11 + vpslldq $8,%xmm14,%xmm14 + vpxorq %xmm11,%xmm7,%xmm7 + vpxorq %xmm10,%xmm14,%xmm14 + + + + vmovdqu64 POLY2(%rip),%xmm11 + + vpclmulqdq $0x01,%xmm14,%xmm11,%xmm10 + vpslldq $8,%xmm10,%xmm10 + vpxorq %xmm10,%xmm14,%xmm14 + + + + vpclmulqdq $0x00,%xmm14,%xmm11,%xmm10 + vpsrldq $4,%xmm10,%xmm10 + vpclmulqdq $0x10,%xmm14,%xmm11,%xmm14 + vpslldq $4,%xmm14,%xmm14 + + vpternlogq $0x96,%xmm10,%xmm7,%xmm14 + + movq $0,(%rdx) + + movq %r11,%r12 + movq $16,%r11 + subq %r12,%r11 + jmp .L_enc_dec_done_11 + +.L_partial_incomplete_11: + addq %r8,(%rdx) + movq %r8,%r11 + +.L_enc_dec_done_11: + + + leaq byte_len_to_mask_table(%rip),%r12 + kmovw (%r12,%r11,2),%k1 + vmovdqu64 %xmm14,64(%rsi) + + vpshufb SHUF_MASK(%rip),%xmm3,%xmm3 + vpshufb %xmm5,%xmm3,%xmm3 + movq %r9,%r12 + vmovdqu8 %xmm3,(%r12){%k1} +.L_partial_block_done_11: + vmovdqu64 0(%rsi),%xmm2 + subq %r11,%r8 + je .L_enc_dec_done_10 + cmpq $256,%r8 + jbe .L_message_below_equal_16_blocks_10 + + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vmovdqa64 ddq_addbe_4444(%rip),%zmm27 + vmovdqa64 ddq_addbe_1234(%rip),%zmm28 + + + + + + + vmovd %xmm2,%r15d + andl $255,%r15d + + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpshufb %zmm29,%zmm2,%zmm2 + + + + cmpb $240,%r15b + jae .L_next_16_overflow_12 + vpaddd %zmm28,%zmm2,%zmm7 + vpaddd %zmm27,%zmm7,%zmm10 + vpaddd %zmm27,%zmm10,%zmm11 + vpaddd %zmm27,%zmm11,%zmm12 + jmp .L_next_16_ok_12 +.L_next_16_overflow_12: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm12 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm7 + vpaddd %zmm12,%zmm7,%zmm10 + vpaddd %zmm12,%zmm10,%zmm11 + vpaddd %zmm12,%zmm11,%zmm12 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %zmm29,%zmm11,%zmm11 + vpshufb %zmm29,%zmm12,%zmm12 +.L_next_16_ok_12: + vshufi64x2 $255,%zmm12,%zmm12,%zmm2 + addb $16,%r15b + + vmovdqu8 0(%rcx,%r11,1),%zmm0 + vmovdqu8 64(%rcx,%r11,1),%zmm3 + vmovdqu8 128(%rcx,%r11,1),%zmm4 + vmovdqu8 192(%rcx,%r11,1),%zmm5 + + + vbroadcastf64x2 0(%rdi),%zmm6 + vpxorq %zmm6,%zmm7,%zmm7 + vpxorq %zmm6,%zmm10,%zmm10 + vpxorq %zmm6,%zmm11,%zmm11 + vpxorq %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 16(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 32(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 48(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 64(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 80(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 96(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 112(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 128(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 144(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 160(%rdi),%zmm6 + vaesenclast %zmm6,%zmm7,%zmm7 + vaesenclast %zmm6,%zmm10,%zmm10 + vaesenclast %zmm6,%zmm11,%zmm11 + vaesenclast %zmm6,%zmm12,%zmm12 + + + vpxorq %zmm0,%zmm7,%zmm7 + vpxorq %zmm3,%zmm10,%zmm10 + vpxorq %zmm4,%zmm11,%zmm11 + vpxorq %zmm5,%zmm12,%zmm12 + + + movq %r9,%r10 + vmovdqu8 %zmm7,0(%r10,%r11,1) + vmovdqu8 %zmm10,64(%r10,%r11,1) + vmovdqu8 %zmm11,128(%r10,%r11,1) + vmovdqu8 %zmm12,192(%r10,%r11,1) + + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %zmm29,%zmm11,%zmm11 + vpshufb %zmm29,%zmm12,%zmm12 + vmovdqa64 %zmm7,768(%rsp) + vmovdqa64 %zmm10,832(%rsp) + vmovdqa64 %zmm11,896(%rsp) + vmovdqa64 %zmm12,960(%rsp) + testq %r14,%r14 + jnz .L_skip_hkeys_precomputation_13 + + vmovdqu64 288(%rsi),%zmm0 + vmovdqu64 %zmm0,704(%rsp) + + vmovdqu64 224(%rsi),%zmm3 + vmovdqu64 %zmm3,640(%rsp) + + + vshufi64x2 $0x00,%zmm3,%zmm3,%zmm3 + + vmovdqu64 160(%rsi),%zmm4 + vmovdqu64 %zmm4,576(%rsp) + + vmovdqu64 96(%rsi),%zmm5 + vmovdqu64 %zmm5,512(%rsp) +.L_skip_hkeys_precomputation_13: + cmpq $512,%r8 + jb .L_message_below_32_blocks_10 + + + + cmpb $240,%r15b + jae .L_next_16_overflow_14 + vpaddd %zmm28,%zmm2,%zmm7 + vpaddd %zmm27,%zmm7,%zmm10 + vpaddd %zmm27,%zmm10,%zmm11 + vpaddd %zmm27,%zmm11,%zmm12 + jmp .L_next_16_ok_14 +.L_next_16_overflow_14: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm12 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm7 + vpaddd %zmm12,%zmm7,%zmm10 + vpaddd %zmm12,%zmm10,%zmm11 + vpaddd %zmm12,%zmm11,%zmm12 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %zmm29,%zmm11,%zmm11 + vpshufb %zmm29,%zmm12,%zmm12 +.L_next_16_ok_14: + vshufi64x2 $255,%zmm12,%zmm12,%zmm2 + addb $16,%r15b + + vmovdqu8 256(%rcx,%r11,1),%zmm0 + vmovdqu8 320(%rcx,%r11,1),%zmm3 + vmovdqu8 384(%rcx,%r11,1),%zmm4 + vmovdqu8 448(%rcx,%r11,1),%zmm5 + + + vbroadcastf64x2 0(%rdi),%zmm6 + vpxorq %zmm6,%zmm7,%zmm7 + vpxorq %zmm6,%zmm10,%zmm10 + vpxorq %zmm6,%zmm11,%zmm11 + vpxorq %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 16(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 32(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 48(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 64(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 80(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 96(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 112(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 128(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 144(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 160(%rdi),%zmm6 + vaesenclast %zmm6,%zmm7,%zmm7 + vaesenclast %zmm6,%zmm10,%zmm10 + vaesenclast %zmm6,%zmm11,%zmm11 + vaesenclast %zmm6,%zmm12,%zmm12 + + + vpxorq %zmm0,%zmm7,%zmm7 + vpxorq %zmm3,%zmm10,%zmm10 + vpxorq %zmm4,%zmm11,%zmm11 + vpxorq %zmm5,%zmm12,%zmm12 + + + movq %r9,%r10 + vmovdqu8 %zmm7,256(%r10,%r11,1) + vmovdqu8 %zmm10,320(%r10,%r11,1) + vmovdqu8 %zmm11,384(%r10,%r11,1) + vmovdqu8 %zmm12,448(%r10,%r11,1) + + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %zmm29,%zmm11,%zmm11 + vpshufb %zmm29,%zmm12,%zmm12 + vmovdqa64 %zmm7,1024(%rsp) + vmovdqa64 %zmm10,1088(%rsp) + vmovdqa64 %zmm11,1152(%rsp) + vmovdqa64 %zmm12,1216(%rsp) + testq %r14,%r14 + jnz .L_skip_hkeys_precomputation_15 + vmovdqu64 640(%rsp),%zmm3 + + + vshufi64x2 $0x00,%zmm3,%zmm3,%zmm3 + + vmovdqu64 576(%rsp),%zmm4 + vmovdqu64 512(%rsp),%zmm5 + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,448(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,384(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,320(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,256(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,192(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,128(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,64(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,0(%rsp) +.L_skip_hkeys_precomputation_15: + movq $1,%r14 + addq $512,%r11 + subq $512,%r8 + + cmpq $768,%r8 + jb .L_no_more_big_nblocks_10 +.L_encrypt_big_nblocks_10: + cmpb $240,%r15b + jae .L_16_blocks_overflow_16 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_16 +.L_16_blocks_overflow_16: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_16: + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm15,%zmm10,%zmm26 + vpxorq %zmm12,%zmm6,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1) + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqa64 %zmm0,1280(%rsp) + vmovdqa64 %zmm3,1344(%rsp) + vmovdqa64 %zmm4,1408(%rsp) + vmovdqa64 %zmm5,1472(%rsp) + cmpb $240,%r15b + jae .L_16_blocks_overflow_17 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_17 +.L_16_blocks_overflow_17: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_17: + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 256(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 320(%rsp),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 384(%rsp),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 448(%rsp),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 256(%rcx,%r11,1),%zmm17 + vmovdqu8 320(%rcx,%r11,1),%zmm19 + vmovdqu8 384(%rcx,%r11,1),%zmm20 + vmovdqu8 448(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vpternlogq $0x96,%zmm12,%zmm6,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,256(%r10,%r11,1) + vmovdqu8 %zmm3,320(%r10,%r11,1) + vmovdqu8 %zmm4,384(%r10,%r11,1) + vmovdqu8 %zmm5,448(%r10,%r11,1) + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqa64 %zmm0,768(%rsp) + vmovdqa64 %zmm3,832(%rsp) + vmovdqa64 %zmm4,896(%rsp) + vmovdqa64 %zmm5,960(%rsp) + cmpb $240,%r15b + jae .L_16_blocks_overflow_18 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_18 +.L_16_blocks_overflow_18: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_18: + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 512(%rcx,%r11,1),%zmm17 + vmovdqu8 576(%rcx,%r11,1),%zmm19 + vmovdqu8 640(%rcx,%r11,1),%zmm20 + vmovdqu8 704(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + + + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpternlogq $0x96,%zmm15,%zmm12,%zmm6 + vpxorq %zmm24,%zmm6,%zmm6 + vpternlogq $0x96,%zmm10,%zmm13,%zmm7 + vpxorq %zmm25,%zmm7,%zmm7 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vextracti64x4 $1,%zmm6,%ymm12 + vpxorq %ymm12,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm12 + vpxorq %xmm12,%xmm6,%xmm6 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm6 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,512(%r10,%r11,1) + vmovdqu8 %zmm3,576(%r10,%r11,1) + vmovdqu8 %zmm4,640(%r10,%r11,1) + vmovdqu8 %zmm5,704(%r10,%r11,1) + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqa64 %zmm0,1024(%rsp) + vmovdqa64 %zmm3,1088(%rsp) + vmovdqa64 %zmm4,1152(%rsp) + vmovdqa64 %zmm5,1216(%rsp) + vmovdqa64 %zmm6,%zmm14 + + addq $768,%r11 + subq $768,%r8 + cmpq $768,%r8 + jae .L_encrypt_big_nblocks_10 + +.L_no_more_big_nblocks_10: + + cmpq $512,%r8 + jae .L_encrypt_32_blocks_10 + + cmpq $256,%r8 + jae .L_encrypt_16_blocks_10 +.L_encrypt_0_blocks_ghash_32_10: + movl %r8d,%r10d + andl $~15,%r10d + movl $256,%ebx + subl %r10d,%ebx + vmovdqa64 768(%rsp),%zmm13 + vpxorq %zmm14,%zmm13,%zmm13 + vmovdqu64 0(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 832(%rsp),%zmm13 + vmovdqu64 64(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpxorq %zmm10,%zmm4,%zmm26 + vpxorq %zmm6,%zmm0,%zmm24 + vpxorq %zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 896(%rsp),%zmm13 + vmovdqu64 128(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 960(%rsp),%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + addl $256,%ebx + movl %r8d,%r10d + addl $15,%r10d + shrl $4,%r10d + je .L_last_num_blocks_is_0_19 + + cmpl $8,%r10d + je .L_last_num_blocks_is_8_19 + jb .L_last_num_blocks_is_7_1_19 + + + cmpl $12,%r10d + je .L_last_num_blocks_is_12_19 + jb .L_last_num_blocks_is_11_9_19 + + + cmpl $15,%r10d + je .L_last_num_blocks_is_15_19 + ja .L_last_num_blocks_is_16_19 + cmpl $14,%r10d + je .L_last_num_blocks_is_14_19 + jmp .L_last_num_blocks_is_13_19 + +.L_last_num_blocks_is_11_9_19: + + cmpl $10,%r10d + je .L_last_num_blocks_is_10_19 + ja .L_last_num_blocks_is_11_19 + jmp .L_last_num_blocks_is_9_19 + +.L_last_num_blocks_is_7_1_19: + cmpl $4,%r10d + je .L_last_num_blocks_is_4_19 + jb .L_last_num_blocks_is_3_1_19 + + cmpl $6,%r10d + ja .L_last_num_blocks_is_7_19 + je .L_last_num_blocks_is_6_19 + jmp .L_last_num_blocks_is_5_19 + +.L_last_num_blocks_is_3_1_19: + + cmpl $2,%r10d + ja .L_last_num_blocks_is_3_19 + je .L_last_num_blocks_is_2_19 +.L_last_num_blocks_is_1_19: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $255,%r15d + jae .L_16_blocks_overflow_20 + vpaddd %xmm28,%xmm2,%xmm0 + jmp .L_16_blocks_ok_20 + +.L_16_blocks_overflow_20: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %xmm29,%xmm0,%xmm0 +.L_16_blocks_ok_20: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%xmm17{%k1}{z} + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vaesenclast %xmm30,%xmm0,%xmm0 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %xmm29,%xmm0,%xmm17 + vextracti32x4 $0,%zmm17,%xmm7 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_21 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_21 +.L_small_initial_partial_block_21: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm0 + + + vpclmulqdq $0x01,%xmm25,%xmm0,%xmm3 + vpslldq $8,%xmm3,%xmm3 + vpxorq %xmm3,%xmm25,%xmm3 + + + vpclmulqdq $0x00,%xmm3,%xmm0,%xmm4 + vpsrldq $4,%xmm4,%xmm4 + vpclmulqdq $0x10,%xmm3,%xmm0,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm4,%xmm14 + + + + + + + + + + + + + vpxorq %xmm7,%xmm14,%xmm14 + + jmp .L_after_reduction_21 +.L_small_initial_compute_done_21: +.L_after_reduction_21: + jmp .L_last_blocks_done_19 +.L_last_num_blocks_is_2_19: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $254,%r15d + jae .L_16_blocks_overflow_22 + vpaddd %ymm28,%ymm2,%ymm0 + jmp .L_16_blocks_ok_22 + +.L_16_blocks_overflow_22: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %ymm29,%ymm0,%ymm0 +.L_16_blocks_ok_22: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%ymm17{%k1}{z} + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vaesenclast %ymm30,%ymm0,%ymm0 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %ymm29,%ymm0,%ymm17 + vextracti32x4 $1,%zmm17,%xmm7 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_23 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_23 +.L_small_initial_partial_block_23: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_23: + + orq %r8,%r8 + je .L_after_reduction_23 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_23: + jmp .L_last_blocks_done_19 +.L_last_num_blocks_is_3_19: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $253,%r15d + jae .L_16_blocks_overflow_24 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_24 + +.L_16_blocks_overflow_24: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_24: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vextracti32x4 $2,%zmm17,%xmm7 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_25 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_25 +.L_small_initial_partial_block_25: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_25: + + orq %r8,%r8 + je .L_after_reduction_25 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_25: + jmp .L_last_blocks_done_19 +.L_last_num_blocks_is_4_19: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $252,%r15d + jae .L_16_blocks_overflow_26 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_26 + +.L_16_blocks_overflow_26: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_26: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vextracti32x4 $3,%zmm17,%xmm7 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_27 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_27 +.L_small_initial_partial_block_27: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_27: + + orq %r8,%r8 + je .L_after_reduction_27 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_27: + jmp .L_last_blocks_done_19 +.L_last_num_blocks_is_5_19: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $251,%r15d + jae .L_16_blocks_overflow_28 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %xmm27,%xmm0,%xmm3 + jmp .L_16_blocks_ok_28 + +.L_16_blocks_overflow_28: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 +.L_16_blocks_ok_28: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%xmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %xmm30,%xmm3,%xmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %xmm19,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %xmm29,%xmm3,%xmm19 + vextracti32x4 $0,%zmm19,%xmm7 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_29 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_29 +.L_small_initial_partial_block_29: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_29: + + orq %r8,%r8 + je .L_after_reduction_29 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_29: + jmp .L_last_blocks_done_19 +.L_last_num_blocks_is_6_19: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $250,%r15d + jae .L_16_blocks_overflow_30 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %ymm27,%ymm0,%ymm3 + jmp .L_16_blocks_ok_30 + +.L_16_blocks_overflow_30: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 +.L_16_blocks_ok_30: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%ymm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %ymm30,%ymm3,%ymm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %ymm29,%ymm3,%ymm19 + vextracti32x4 $1,%zmm19,%xmm7 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_31 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_31 +.L_small_initial_partial_block_31: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_31: + + orq %r8,%r8 + je .L_after_reduction_31 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_31: + jmp .L_last_blocks_done_19 +.L_last_num_blocks_is_7_19: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $249,%r15d + jae .L_16_blocks_overflow_32 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_32 + +.L_16_blocks_overflow_32: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_32: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vextracti32x4 $2,%zmm19,%xmm7 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_33 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_33 +.L_small_initial_partial_block_33: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_33: + + orq %r8,%r8 + je .L_after_reduction_33 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_33: + jmp .L_last_blocks_done_19 +.L_last_num_blocks_is_8_19: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $248,%r15d + jae .L_16_blocks_overflow_34 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_34 + +.L_16_blocks_overflow_34: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_34: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vextracti32x4 $3,%zmm19,%xmm7 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_35 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_35 +.L_small_initial_partial_block_35: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_35: + + orq %r8,%r8 + je .L_after_reduction_35 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_35: + jmp .L_last_blocks_done_19 +.L_last_num_blocks_is_9_19: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $247,%r15d + jae .L_16_blocks_overflow_36 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %xmm27,%xmm3,%xmm4 + jmp .L_16_blocks_ok_36 + +.L_16_blocks_overflow_36: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 +.L_16_blocks_ok_36: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%xmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %xmm30,%xmm4,%xmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %xmm20,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %xmm29,%xmm4,%xmm20 + vextracti32x4 $0,%zmm20,%xmm7 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_37 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_37 +.L_small_initial_partial_block_37: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_37: + + orq %r8,%r8 + je .L_after_reduction_37 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_37: + jmp .L_last_blocks_done_19 +.L_last_num_blocks_is_10_19: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $246,%r15d + jae .L_16_blocks_overflow_38 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %ymm27,%ymm3,%ymm4 + jmp .L_16_blocks_ok_38 + +.L_16_blocks_overflow_38: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 +.L_16_blocks_ok_38: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%ymm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %ymm30,%ymm4,%ymm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %ymm20,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %ymm29,%ymm4,%ymm20 + vextracti32x4 $1,%zmm20,%xmm7 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_39 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_39 +.L_small_initial_partial_block_39: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_39: + + orq %r8,%r8 + je .L_after_reduction_39 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_39: + jmp .L_last_blocks_done_19 +.L_last_num_blocks_is_11_19: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $245,%r15d + jae .L_16_blocks_overflow_40 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_40 + +.L_16_blocks_overflow_40: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_40: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vextracti32x4 $2,%zmm20,%xmm7 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_41 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_41 +.L_small_initial_partial_block_41: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_41: + + orq %r8,%r8 + je .L_after_reduction_41 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_41: + jmp .L_last_blocks_done_19 +.L_last_num_blocks_is_12_19: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $244,%r15d + jae .L_16_blocks_overflow_42 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_42 + +.L_16_blocks_overflow_42: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_42: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vextracti32x4 $3,%zmm20,%xmm7 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_43 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_43 +.L_small_initial_partial_block_43: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_43: + + orq %r8,%r8 + je .L_after_reduction_43 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_43: + jmp .L_last_blocks_done_19 +.L_last_num_blocks_is_13_19: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $243,%r15d + jae .L_16_blocks_overflow_44 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %xmm27,%xmm4,%xmm5 + jmp .L_16_blocks_ok_44 + +.L_16_blocks_overflow_44: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 +.L_16_blocks_ok_44: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%xmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %xmm30,%xmm5,%xmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %xmm21,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %xmm29,%xmm5,%xmm21 + vextracti32x4 $0,%zmm21,%xmm7 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_45 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_45 +.L_small_initial_partial_block_45: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_45: + + orq %r8,%r8 + je .L_after_reduction_45 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_45: + jmp .L_last_blocks_done_19 +.L_last_num_blocks_is_14_19: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $242,%r15d + jae .L_16_blocks_overflow_46 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %ymm27,%ymm4,%ymm5 + jmp .L_16_blocks_ok_46 + +.L_16_blocks_overflow_46: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 +.L_16_blocks_ok_46: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%ymm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %ymm30,%ymm5,%ymm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %ymm21,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %ymm29,%ymm5,%ymm21 + vextracti32x4 $1,%zmm21,%xmm7 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_47 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_47 +.L_small_initial_partial_block_47: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_47: + + orq %r8,%r8 + je .L_after_reduction_47 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_47: + jmp .L_last_blocks_done_19 +.L_last_num_blocks_is_15_19: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $241,%r15d + jae .L_16_blocks_overflow_48 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_48 + +.L_16_blocks_overflow_48: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_48: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %zmm29,%zmm5,%zmm21 + vextracti32x4 $2,%zmm21,%xmm7 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_49 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_49 +.L_small_initial_partial_block_49: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_49: + + orq %r8,%r8 + je .L_after_reduction_49 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_49: + jmp .L_last_blocks_done_19 +.L_last_num_blocks_is_16_19: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $240,%r15d + jae .L_16_blocks_overflow_50 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_50 + +.L_16_blocks_overflow_50: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_50: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %zmm29,%zmm5,%zmm21 + vextracti32x4 $3,%zmm21,%xmm7 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_51: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_51: + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_51: + jmp .L_last_blocks_done_19 +.L_last_num_blocks_is_0_19: + vmovdqa64 1024(%rsp),%zmm13 + vmovdqu64 0(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1088(%rsp),%zmm13 + vmovdqu64 64(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 1152(%rsp),%zmm13 + vmovdqu64 128(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1216(%rsp),%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + +.L_last_blocks_done_19: + vpshufb %xmm29,%xmm2,%xmm2 + jmp .L_ghash_done_10 +.L_encrypt_32_blocks_10: + cmpb $240,%r15b + jae .L_16_blocks_overflow_52 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_52 +.L_16_blocks_overflow_52: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_52: + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm15,%zmm10,%zmm26 + vpxorq %zmm12,%zmm6,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1) + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqa64 %zmm0,1280(%rsp) + vmovdqa64 %zmm3,1344(%rsp) + vmovdqa64 %zmm4,1408(%rsp) + vmovdqa64 %zmm5,1472(%rsp) + cmpb $240,%r15b + jae .L_16_blocks_overflow_53 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_53 +.L_16_blocks_overflow_53: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_53: + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 256(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 320(%rsp),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 384(%rsp),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 448(%rsp),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 256(%rcx,%r11,1),%zmm17 + vmovdqu8 320(%rcx,%r11,1),%zmm19 + vmovdqu8 384(%rcx,%r11,1),%zmm20 + vmovdqu8 448(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vpternlogq $0x96,%zmm12,%zmm6,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,256(%r10,%r11,1) + vmovdqu8 %zmm3,320(%r10,%r11,1) + vmovdqu8 %zmm4,384(%r10,%r11,1) + vmovdqu8 %zmm5,448(%r10,%r11,1) + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqa64 %zmm0,768(%rsp) + vmovdqa64 %zmm3,832(%rsp) + vmovdqa64 %zmm4,896(%rsp) + vmovdqa64 %zmm5,960(%rsp) + vmovdqa64 1280(%rsp),%zmm13 + vmovdqu64 512(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1344(%rsp),%zmm13 + vmovdqu64 576(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 1408(%rsp),%zmm13 + vmovdqu64 640(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1472(%rsp),%zmm13 + vmovdqu64 704(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + + subq $512,%r8 + addq $512,%r11 + movl %r8d,%r10d + andl $~15,%r10d + movl $512,%ebx + subl %r10d,%ebx + movl %r8d,%r10d + addl $15,%r10d + shrl $4,%r10d + je .L_last_num_blocks_is_0_54 + + cmpl $8,%r10d + je .L_last_num_blocks_is_8_54 + jb .L_last_num_blocks_is_7_1_54 + + + cmpl $12,%r10d + je .L_last_num_blocks_is_12_54 + jb .L_last_num_blocks_is_11_9_54 + + + cmpl $15,%r10d + je .L_last_num_blocks_is_15_54 + ja .L_last_num_blocks_is_16_54 + cmpl $14,%r10d + je .L_last_num_blocks_is_14_54 + jmp .L_last_num_blocks_is_13_54 + +.L_last_num_blocks_is_11_9_54: + + cmpl $10,%r10d + je .L_last_num_blocks_is_10_54 + ja .L_last_num_blocks_is_11_54 + jmp .L_last_num_blocks_is_9_54 + +.L_last_num_blocks_is_7_1_54: + cmpl $4,%r10d + je .L_last_num_blocks_is_4_54 + jb .L_last_num_blocks_is_3_1_54 + + cmpl $6,%r10d + ja .L_last_num_blocks_is_7_54 + je .L_last_num_blocks_is_6_54 + jmp .L_last_num_blocks_is_5_54 + +.L_last_num_blocks_is_3_1_54: + + cmpl $2,%r10d + ja .L_last_num_blocks_is_3_54 + je .L_last_num_blocks_is_2_54 +.L_last_num_blocks_is_1_54: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $255,%r15d + jae .L_16_blocks_overflow_55 + vpaddd %xmm28,%xmm2,%xmm0 + jmp .L_16_blocks_ok_55 + +.L_16_blocks_overflow_55: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %xmm29,%xmm0,%xmm0 +.L_16_blocks_ok_55: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%xmm17{%k1}{z} + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vaesenclast %xmm30,%xmm0,%xmm0 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %xmm29,%xmm0,%xmm17 + vextracti32x4 $0,%zmm17,%xmm7 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_56 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_56 +.L_small_initial_partial_block_56: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm0 + + + vpclmulqdq $0x01,%xmm25,%xmm0,%xmm3 + vpslldq $8,%xmm3,%xmm3 + vpxorq %xmm3,%xmm25,%xmm3 + + + vpclmulqdq $0x00,%xmm3,%xmm0,%xmm4 + vpsrldq $4,%xmm4,%xmm4 + vpclmulqdq $0x10,%xmm3,%xmm0,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm4,%xmm14 + + + + + + + + + + + + + vpxorq %xmm7,%xmm14,%xmm14 + + jmp .L_after_reduction_56 +.L_small_initial_compute_done_56: +.L_after_reduction_56: + jmp .L_last_blocks_done_54 +.L_last_num_blocks_is_2_54: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $254,%r15d + jae .L_16_blocks_overflow_57 + vpaddd %ymm28,%ymm2,%ymm0 + jmp .L_16_blocks_ok_57 + +.L_16_blocks_overflow_57: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %ymm29,%ymm0,%ymm0 +.L_16_blocks_ok_57: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%ymm17{%k1}{z} + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vaesenclast %ymm30,%ymm0,%ymm0 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %ymm29,%ymm0,%ymm17 + vextracti32x4 $1,%zmm17,%xmm7 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_58 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_58 +.L_small_initial_partial_block_58: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_58: + + orq %r8,%r8 + je .L_after_reduction_58 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_58: + jmp .L_last_blocks_done_54 +.L_last_num_blocks_is_3_54: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $253,%r15d + jae .L_16_blocks_overflow_59 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_59 + +.L_16_blocks_overflow_59: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_59: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vextracti32x4 $2,%zmm17,%xmm7 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_60 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_60 +.L_small_initial_partial_block_60: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_60: + + orq %r8,%r8 + je .L_after_reduction_60 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_60: + jmp .L_last_blocks_done_54 +.L_last_num_blocks_is_4_54: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $252,%r15d + jae .L_16_blocks_overflow_61 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_61 + +.L_16_blocks_overflow_61: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_61: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vextracti32x4 $3,%zmm17,%xmm7 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_62 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_62 +.L_small_initial_partial_block_62: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_62: + + orq %r8,%r8 + je .L_after_reduction_62 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_62: + jmp .L_last_blocks_done_54 +.L_last_num_blocks_is_5_54: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $251,%r15d + jae .L_16_blocks_overflow_63 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %xmm27,%xmm0,%xmm3 + jmp .L_16_blocks_ok_63 + +.L_16_blocks_overflow_63: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 +.L_16_blocks_ok_63: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%xmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %xmm30,%xmm3,%xmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %xmm19,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %xmm29,%xmm3,%xmm19 + vextracti32x4 $0,%zmm19,%xmm7 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_64 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_64 +.L_small_initial_partial_block_64: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_64: + + orq %r8,%r8 + je .L_after_reduction_64 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_64: + jmp .L_last_blocks_done_54 +.L_last_num_blocks_is_6_54: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $250,%r15d + jae .L_16_blocks_overflow_65 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %ymm27,%ymm0,%ymm3 + jmp .L_16_blocks_ok_65 + +.L_16_blocks_overflow_65: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 +.L_16_blocks_ok_65: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%ymm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %ymm30,%ymm3,%ymm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %ymm29,%ymm3,%ymm19 + vextracti32x4 $1,%zmm19,%xmm7 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_66 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_66 +.L_small_initial_partial_block_66: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_66: + + orq %r8,%r8 + je .L_after_reduction_66 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_66: + jmp .L_last_blocks_done_54 +.L_last_num_blocks_is_7_54: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $249,%r15d + jae .L_16_blocks_overflow_67 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_67 + +.L_16_blocks_overflow_67: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_67: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vextracti32x4 $2,%zmm19,%xmm7 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_68 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_68 +.L_small_initial_partial_block_68: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_68: + + orq %r8,%r8 + je .L_after_reduction_68 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_68: + jmp .L_last_blocks_done_54 +.L_last_num_blocks_is_8_54: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $248,%r15d + jae .L_16_blocks_overflow_69 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_69 + +.L_16_blocks_overflow_69: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_69: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vextracti32x4 $3,%zmm19,%xmm7 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_70 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_70 +.L_small_initial_partial_block_70: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_70: + + orq %r8,%r8 + je .L_after_reduction_70 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_70: + jmp .L_last_blocks_done_54 +.L_last_num_blocks_is_9_54: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $247,%r15d + jae .L_16_blocks_overflow_71 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %xmm27,%xmm3,%xmm4 + jmp .L_16_blocks_ok_71 + +.L_16_blocks_overflow_71: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 +.L_16_blocks_ok_71: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%xmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %xmm30,%xmm4,%xmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %xmm20,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %xmm29,%xmm4,%xmm20 + vextracti32x4 $0,%zmm20,%xmm7 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_72 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_72 +.L_small_initial_partial_block_72: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_72: + + orq %r8,%r8 + je .L_after_reduction_72 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_72: + jmp .L_last_blocks_done_54 +.L_last_num_blocks_is_10_54: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $246,%r15d + jae .L_16_blocks_overflow_73 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %ymm27,%ymm3,%ymm4 + jmp .L_16_blocks_ok_73 + +.L_16_blocks_overflow_73: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 +.L_16_blocks_ok_73: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%ymm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %ymm30,%ymm4,%ymm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %ymm20,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %ymm29,%ymm4,%ymm20 + vextracti32x4 $1,%zmm20,%xmm7 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_74 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_74 +.L_small_initial_partial_block_74: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_74: + + orq %r8,%r8 + je .L_after_reduction_74 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_74: + jmp .L_last_blocks_done_54 +.L_last_num_blocks_is_11_54: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $245,%r15d + jae .L_16_blocks_overflow_75 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_75 + +.L_16_blocks_overflow_75: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_75: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vextracti32x4 $2,%zmm20,%xmm7 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_76 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_76 +.L_small_initial_partial_block_76: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_76: + + orq %r8,%r8 + je .L_after_reduction_76 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_76: + jmp .L_last_blocks_done_54 +.L_last_num_blocks_is_12_54: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $244,%r15d + jae .L_16_blocks_overflow_77 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_77 + +.L_16_blocks_overflow_77: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_77: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vextracti32x4 $3,%zmm20,%xmm7 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_78 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_78 +.L_small_initial_partial_block_78: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_78: + + orq %r8,%r8 + je .L_after_reduction_78 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_78: + jmp .L_last_blocks_done_54 +.L_last_num_blocks_is_13_54: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $243,%r15d + jae .L_16_blocks_overflow_79 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %xmm27,%xmm4,%xmm5 + jmp .L_16_blocks_ok_79 + +.L_16_blocks_overflow_79: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 +.L_16_blocks_ok_79: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%xmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %xmm30,%xmm5,%xmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %xmm21,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %xmm29,%xmm5,%xmm21 + vextracti32x4 $0,%zmm21,%xmm7 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_80 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_80 +.L_small_initial_partial_block_80: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_80: + + orq %r8,%r8 + je .L_after_reduction_80 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_80: + jmp .L_last_blocks_done_54 +.L_last_num_blocks_is_14_54: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $242,%r15d + jae .L_16_blocks_overflow_81 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %ymm27,%ymm4,%ymm5 + jmp .L_16_blocks_ok_81 + +.L_16_blocks_overflow_81: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 +.L_16_blocks_ok_81: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%ymm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %ymm30,%ymm5,%ymm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %ymm21,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %ymm29,%ymm5,%ymm21 + vextracti32x4 $1,%zmm21,%xmm7 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_82 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_82 +.L_small_initial_partial_block_82: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_82: + + orq %r8,%r8 + je .L_after_reduction_82 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_82: + jmp .L_last_blocks_done_54 +.L_last_num_blocks_is_15_54: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $241,%r15d + jae .L_16_blocks_overflow_83 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_83 + +.L_16_blocks_overflow_83: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_83: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %zmm29,%zmm5,%zmm21 + vextracti32x4 $2,%zmm21,%xmm7 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_84 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_84 +.L_small_initial_partial_block_84: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_84: + + orq %r8,%r8 + je .L_after_reduction_84 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_84: + jmp .L_last_blocks_done_54 +.L_last_num_blocks_is_16_54: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $240,%r15d + jae .L_16_blocks_overflow_85 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_85 + +.L_16_blocks_overflow_85: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_85: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %zmm29,%zmm5,%zmm21 + vextracti32x4 $3,%zmm21,%xmm7 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_86: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_86: + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_86: + jmp .L_last_blocks_done_54 +.L_last_num_blocks_is_0_54: + vmovdqa64 768(%rsp),%zmm13 + vpxorq %zmm14,%zmm13,%zmm13 + vmovdqu64 0(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 832(%rsp),%zmm13 + vmovdqu64 64(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpxorq %zmm10,%zmm4,%zmm26 + vpxorq %zmm6,%zmm0,%zmm24 + vpxorq %zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 896(%rsp),%zmm13 + vmovdqu64 128(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 960(%rsp),%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + +.L_last_blocks_done_54: + vpshufb %xmm29,%xmm2,%xmm2 + jmp .L_ghash_done_10 +.L_encrypt_16_blocks_10: + cmpb $240,%r15b + jae .L_16_blocks_overflow_87 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_87 +.L_16_blocks_overflow_87: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_87: + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm15,%zmm10,%zmm26 + vpxorq %zmm12,%zmm6,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1) + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqa64 %zmm0,1280(%rsp) + vmovdqa64 %zmm3,1344(%rsp) + vmovdqa64 %zmm4,1408(%rsp) + vmovdqa64 %zmm5,1472(%rsp) + vmovdqa64 1024(%rsp),%zmm13 + vmovdqu64 256(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1088(%rsp),%zmm13 + vmovdqu64 320(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 1152(%rsp),%zmm13 + vmovdqu64 384(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1216(%rsp),%zmm13 + vmovdqu64 448(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + subq $256,%r8 + addq $256,%r11 + movl %r8d,%r10d + addl $15,%r10d + shrl $4,%r10d + je .L_last_num_blocks_is_0_88 + + cmpl $8,%r10d + je .L_last_num_blocks_is_8_88 + jb .L_last_num_blocks_is_7_1_88 + + + cmpl $12,%r10d + je .L_last_num_blocks_is_12_88 + jb .L_last_num_blocks_is_11_9_88 + + + cmpl $15,%r10d + je .L_last_num_blocks_is_15_88 + ja .L_last_num_blocks_is_16_88 + cmpl $14,%r10d + je .L_last_num_blocks_is_14_88 + jmp .L_last_num_blocks_is_13_88 + +.L_last_num_blocks_is_11_9_88: + + cmpl $10,%r10d + je .L_last_num_blocks_is_10_88 + ja .L_last_num_blocks_is_11_88 + jmp .L_last_num_blocks_is_9_88 + +.L_last_num_blocks_is_7_1_88: + cmpl $4,%r10d + je .L_last_num_blocks_is_4_88 + jb .L_last_num_blocks_is_3_1_88 + + cmpl $6,%r10d + ja .L_last_num_blocks_is_7_88 + je .L_last_num_blocks_is_6_88 + jmp .L_last_num_blocks_is_5_88 + +.L_last_num_blocks_is_3_1_88: + + cmpl $2,%r10d + ja .L_last_num_blocks_is_3_88 + je .L_last_num_blocks_is_2_88 +.L_last_num_blocks_is_1_88: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $255,%r15d + jae .L_16_blocks_overflow_89 + vpaddd %xmm28,%xmm2,%xmm0 + jmp .L_16_blocks_ok_89 + +.L_16_blocks_overflow_89: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %xmm29,%xmm0,%xmm0 +.L_16_blocks_ok_89: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $0,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%xmm17{%k1}{z} + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %xmm31,%xmm0,%xmm0 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %xmm30,%xmm0,%xmm0 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %xmm29,%xmm0,%xmm17 + vextracti32x4 $0,%zmm17,%xmm7 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_90 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_90 +.L_small_initial_partial_block_90: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + + + + + + + + + + + + vpxorq %xmm7,%xmm14,%xmm14 + + jmp .L_after_reduction_90 +.L_small_initial_compute_done_90: +.L_after_reduction_90: + jmp .L_last_blocks_done_88 +.L_last_num_blocks_is_2_88: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $254,%r15d + jae .L_16_blocks_overflow_91 + vpaddd %ymm28,%ymm2,%ymm0 + jmp .L_16_blocks_ok_91 + +.L_16_blocks_overflow_91: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %ymm29,%ymm0,%ymm0 +.L_16_blocks_ok_91: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $1,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%ymm17{%k1}{z} + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %ymm31,%ymm0,%ymm0 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %ymm30,%ymm0,%ymm0 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %ymm29,%ymm0,%ymm17 + vextracti32x4 $1,%zmm17,%xmm7 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_92 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_92 +.L_small_initial_partial_block_92: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_92: + + orq %r8,%r8 + je .L_after_reduction_92 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_92: + jmp .L_last_blocks_done_88 +.L_last_num_blocks_is_3_88: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $253,%r15d + jae .L_16_blocks_overflow_93 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_93 + +.L_16_blocks_overflow_93: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_93: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $2,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vextracti32x4 $2,%zmm17,%xmm7 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_94 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_94 +.L_small_initial_partial_block_94: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_94: + + orq %r8,%r8 + je .L_after_reduction_94 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_94: + jmp .L_last_blocks_done_88 +.L_last_num_blocks_is_4_88: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $252,%r15d + jae .L_16_blocks_overflow_95 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_95 + +.L_16_blocks_overflow_95: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_95: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $3,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vextracti32x4 $3,%zmm17,%xmm7 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_96 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_96 +.L_small_initial_partial_block_96: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_96: + + orq %r8,%r8 + je .L_after_reduction_96 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_96: + jmp .L_last_blocks_done_88 +.L_last_num_blocks_is_5_88: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $251,%r15d + jae .L_16_blocks_overflow_97 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %xmm27,%xmm0,%xmm3 + jmp .L_16_blocks_ok_97 + +.L_16_blocks_overflow_97: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 +.L_16_blocks_ok_97: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $0,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%xmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %xmm30,%xmm3,%xmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %xmm19,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %xmm29,%xmm3,%xmm19 + vextracti32x4 $0,%zmm19,%xmm7 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_98 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_98 +.L_small_initial_partial_block_98: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_98: + + orq %r8,%r8 + je .L_after_reduction_98 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_98: + jmp .L_last_blocks_done_88 +.L_last_num_blocks_is_6_88: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $250,%r15d + jae .L_16_blocks_overflow_99 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %ymm27,%ymm0,%ymm3 + jmp .L_16_blocks_ok_99 + +.L_16_blocks_overflow_99: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 +.L_16_blocks_ok_99: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $1,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%ymm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %ymm30,%ymm3,%ymm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %ymm29,%ymm3,%ymm19 + vextracti32x4 $1,%zmm19,%xmm7 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_100 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_100 +.L_small_initial_partial_block_100: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_100: + + orq %r8,%r8 + je .L_after_reduction_100 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_100: + jmp .L_last_blocks_done_88 +.L_last_num_blocks_is_7_88: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $249,%r15d + jae .L_16_blocks_overflow_101 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_101 + +.L_16_blocks_overflow_101: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_101: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $2,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vextracti32x4 $2,%zmm19,%xmm7 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_102 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_102 +.L_small_initial_partial_block_102: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_102: + + orq %r8,%r8 + je .L_after_reduction_102 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_102: + jmp .L_last_blocks_done_88 +.L_last_num_blocks_is_8_88: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $248,%r15d + jae .L_16_blocks_overflow_103 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_103 + +.L_16_blocks_overflow_103: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_103: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $3,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vextracti32x4 $3,%zmm19,%xmm7 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_104 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_104 +.L_small_initial_partial_block_104: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_104: + + orq %r8,%r8 + je .L_after_reduction_104 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_104: + jmp .L_last_blocks_done_88 +.L_last_num_blocks_is_9_88: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $247,%r15d + jae .L_16_blocks_overflow_105 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %xmm27,%xmm3,%xmm4 + jmp .L_16_blocks_ok_105 + +.L_16_blocks_overflow_105: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 +.L_16_blocks_ok_105: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $0,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%xmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %xmm30,%xmm4,%xmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %xmm20,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %xmm29,%xmm4,%xmm20 + vextracti32x4 $0,%zmm20,%xmm7 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_106 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_106 +.L_small_initial_partial_block_106: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_106: + + orq %r8,%r8 + je .L_after_reduction_106 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_106: + jmp .L_last_blocks_done_88 +.L_last_num_blocks_is_10_88: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $246,%r15d + jae .L_16_blocks_overflow_107 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %ymm27,%ymm3,%ymm4 + jmp .L_16_blocks_ok_107 + +.L_16_blocks_overflow_107: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 +.L_16_blocks_ok_107: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $1,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%ymm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %ymm30,%ymm4,%ymm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %ymm20,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %ymm29,%ymm4,%ymm20 + vextracti32x4 $1,%zmm20,%xmm7 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_108 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_108 +.L_small_initial_partial_block_108: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_108: + + orq %r8,%r8 + je .L_after_reduction_108 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_108: + jmp .L_last_blocks_done_88 +.L_last_num_blocks_is_11_88: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $245,%r15d + jae .L_16_blocks_overflow_109 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_109 + +.L_16_blocks_overflow_109: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_109: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $2,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vextracti32x4 $2,%zmm20,%xmm7 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_110 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_110 +.L_small_initial_partial_block_110: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_110: + + orq %r8,%r8 + je .L_after_reduction_110 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_110: + jmp .L_last_blocks_done_88 +.L_last_num_blocks_is_12_88: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $244,%r15d + jae .L_16_blocks_overflow_111 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_111 + +.L_16_blocks_overflow_111: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_111: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $3,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vextracti32x4 $3,%zmm20,%xmm7 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_112 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_112 +.L_small_initial_partial_block_112: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_112: + + orq %r8,%r8 + je .L_after_reduction_112 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_112: + jmp .L_last_blocks_done_88 +.L_last_num_blocks_is_13_88: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $243,%r15d + jae .L_16_blocks_overflow_113 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %xmm27,%xmm4,%xmm5 + jmp .L_16_blocks_ok_113 + +.L_16_blocks_overflow_113: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 +.L_16_blocks_ok_113: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $0,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%xmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %xmm30,%xmm5,%xmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %xmm21,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %xmm29,%xmm5,%xmm21 + vextracti32x4 $0,%zmm21,%xmm7 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_114 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_114 +.L_small_initial_partial_block_114: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_114: + + orq %r8,%r8 + je .L_after_reduction_114 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_114: + jmp .L_last_blocks_done_88 +.L_last_num_blocks_is_14_88: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $242,%r15d + jae .L_16_blocks_overflow_115 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %ymm27,%ymm4,%ymm5 + jmp .L_16_blocks_ok_115 + +.L_16_blocks_overflow_115: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 +.L_16_blocks_ok_115: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $1,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%ymm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %ymm30,%ymm5,%ymm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %ymm21,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %ymm29,%ymm5,%ymm21 + vextracti32x4 $1,%zmm21,%xmm7 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_116 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_116 +.L_small_initial_partial_block_116: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_116: + + orq %r8,%r8 + je .L_after_reduction_116 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_116: + jmp .L_last_blocks_done_88 +.L_last_num_blocks_is_15_88: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $241,%r15d + jae .L_16_blocks_overflow_117 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_117 + +.L_16_blocks_overflow_117: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_117: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $2,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %zmm29,%zmm5,%zmm21 + vextracti32x4 $2,%zmm21,%xmm7 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_118 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_118 +.L_small_initial_partial_block_118: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_118: + + orq %r8,%r8 + je .L_after_reduction_118 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_118: + jmp .L_last_blocks_done_88 +.L_last_num_blocks_is_16_88: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $240,%r15d + jae .L_16_blocks_overflow_119 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_119 + +.L_16_blocks_overflow_119: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_119: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $3,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %zmm29,%zmm5,%zmm21 + vextracti32x4 $3,%zmm21,%xmm7 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_120: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_120: + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_120: + jmp .L_last_blocks_done_88 +.L_last_num_blocks_is_0_88: + vmovdqa64 1280(%rsp),%zmm13 + vmovdqu64 512(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1344(%rsp),%zmm13 + vmovdqu64 576(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 1408(%rsp),%zmm13 + vmovdqu64 640(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1472(%rsp),%zmm13 + vmovdqu64 704(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + +.L_last_blocks_done_88: + vpshufb %xmm29,%xmm2,%xmm2 + jmp .L_ghash_done_10 + +.L_message_below_32_blocks_10: + + + subq $256,%r8 + addq $256,%r11 + movl %r8d,%r10d + testq %r14,%r14 + jnz .L_skip_hkeys_precomputation_121 + vmovdqu64 640(%rsp),%zmm3 + + + vshufi64x2 $0x00,%zmm3,%zmm3,%zmm3 + + vmovdqu64 576(%rsp),%zmm4 + vmovdqu64 512(%rsp),%zmm5 + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,448(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,384(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,320(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,256(%rsp) +.L_skip_hkeys_precomputation_121: + movq $1,%r14 + andl $~15,%r10d + movl $512,%ebx + subl %r10d,%ebx + movl %r8d,%r10d + addl $15,%r10d + shrl $4,%r10d + je .L_last_num_blocks_is_0_122 + + cmpl $8,%r10d + je .L_last_num_blocks_is_8_122 + jb .L_last_num_blocks_is_7_1_122 + + + cmpl $12,%r10d + je .L_last_num_blocks_is_12_122 + jb .L_last_num_blocks_is_11_9_122 + + + cmpl $15,%r10d + je .L_last_num_blocks_is_15_122 + ja .L_last_num_blocks_is_16_122 + cmpl $14,%r10d + je .L_last_num_blocks_is_14_122 + jmp .L_last_num_blocks_is_13_122 + +.L_last_num_blocks_is_11_9_122: + + cmpl $10,%r10d + je .L_last_num_blocks_is_10_122 + ja .L_last_num_blocks_is_11_122 + jmp .L_last_num_blocks_is_9_122 + +.L_last_num_blocks_is_7_1_122: + cmpl $4,%r10d + je .L_last_num_blocks_is_4_122 + jb .L_last_num_blocks_is_3_1_122 + + cmpl $6,%r10d + ja .L_last_num_blocks_is_7_122 + je .L_last_num_blocks_is_6_122 + jmp .L_last_num_blocks_is_5_122 + +.L_last_num_blocks_is_3_1_122: + + cmpl $2,%r10d + ja .L_last_num_blocks_is_3_122 + je .L_last_num_blocks_is_2_122 +.L_last_num_blocks_is_1_122: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $255,%r15d + jae .L_16_blocks_overflow_123 + vpaddd %xmm28,%xmm2,%xmm0 + jmp .L_16_blocks_ok_123 + +.L_16_blocks_overflow_123: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %xmm29,%xmm0,%xmm0 +.L_16_blocks_ok_123: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%xmm17{%k1}{z} + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vaesenclast %xmm30,%xmm0,%xmm0 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %xmm29,%xmm0,%xmm17 + vextracti32x4 $0,%zmm17,%xmm7 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_124 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_124 +.L_small_initial_partial_block_124: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm0 + + + vpclmulqdq $0x01,%xmm25,%xmm0,%xmm3 + vpslldq $8,%xmm3,%xmm3 + vpxorq %xmm3,%xmm25,%xmm3 + + + vpclmulqdq $0x00,%xmm3,%xmm0,%xmm4 + vpsrldq $4,%xmm4,%xmm4 + vpclmulqdq $0x10,%xmm3,%xmm0,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm4,%xmm14 + + + + + + + + + + + + + vpxorq %xmm7,%xmm14,%xmm14 + + jmp .L_after_reduction_124 +.L_small_initial_compute_done_124: +.L_after_reduction_124: + jmp .L_last_blocks_done_122 +.L_last_num_blocks_is_2_122: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $254,%r15d + jae .L_16_blocks_overflow_125 + vpaddd %ymm28,%ymm2,%ymm0 + jmp .L_16_blocks_ok_125 + +.L_16_blocks_overflow_125: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %ymm29,%ymm0,%ymm0 +.L_16_blocks_ok_125: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%ymm17{%k1}{z} + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vaesenclast %ymm30,%ymm0,%ymm0 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %ymm29,%ymm0,%ymm17 + vextracti32x4 $1,%zmm17,%xmm7 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_126 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_126 +.L_small_initial_partial_block_126: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_126: + + orq %r8,%r8 + je .L_after_reduction_126 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_126: + jmp .L_last_blocks_done_122 +.L_last_num_blocks_is_3_122: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $253,%r15d + jae .L_16_blocks_overflow_127 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_127 + +.L_16_blocks_overflow_127: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_127: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vextracti32x4 $2,%zmm17,%xmm7 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_128 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_128 +.L_small_initial_partial_block_128: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_128: + + orq %r8,%r8 + je .L_after_reduction_128 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_128: + jmp .L_last_blocks_done_122 +.L_last_num_blocks_is_4_122: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $252,%r15d + jae .L_16_blocks_overflow_129 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_129 + +.L_16_blocks_overflow_129: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_129: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vextracti32x4 $3,%zmm17,%xmm7 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_130 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_130 +.L_small_initial_partial_block_130: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_130: + + orq %r8,%r8 + je .L_after_reduction_130 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_130: + jmp .L_last_blocks_done_122 +.L_last_num_blocks_is_5_122: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $251,%r15d + jae .L_16_blocks_overflow_131 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %xmm27,%xmm0,%xmm3 + jmp .L_16_blocks_ok_131 + +.L_16_blocks_overflow_131: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 +.L_16_blocks_ok_131: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%xmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %xmm30,%xmm3,%xmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %xmm19,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %xmm29,%xmm3,%xmm19 + vextracti32x4 $0,%zmm19,%xmm7 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_132 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_132 +.L_small_initial_partial_block_132: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_132: + + orq %r8,%r8 + je .L_after_reduction_132 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_132: + jmp .L_last_blocks_done_122 +.L_last_num_blocks_is_6_122: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $250,%r15d + jae .L_16_blocks_overflow_133 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %ymm27,%ymm0,%ymm3 + jmp .L_16_blocks_ok_133 + +.L_16_blocks_overflow_133: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 +.L_16_blocks_ok_133: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%ymm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %ymm30,%ymm3,%ymm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %ymm29,%ymm3,%ymm19 + vextracti32x4 $1,%zmm19,%xmm7 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_134 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_134 +.L_small_initial_partial_block_134: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_134: + + orq %r8,%r8 + je .L_after_reduction_134 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_134: + jmp .L_last_blocks_done_122 +.L_last_num_blocks_is_7_122: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $249,%r15d + jae .L_16_blocks_overflow_135 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_135 + +.L_16_blocks_overflow_135: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_135: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vextracti32x4 $2,%zmm19,%xmm7 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_136 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_136 +.L_small_initial_partial_block_136: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_136: + + orq %r8,%r8 + je .L_after_reduction_136 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_136: + jmp .L_last_blocks_done_122 +.L_last_num_blocks_is_8_122: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $248,%r15d + jae .L_16_blocks_overflow_137 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_137 + +.L_16_blocks_overflow_137: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_137: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vextracti32x4 $3,%zmm19,%xmm7 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_138 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_138 +.L_small_initial_partial_block_138: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_138: + + orq %r8,%r8 + je .L_after_reduction_138 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_138: + jmp .L_last_blocks_done_122 +.L_last_num_blocks_is_9_122: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $247,%r15d + jae .L_16_blocks_overflow_139 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %xmm27,%xmm3,%xmm4 + jmp .L_16_blocks_ok_139 + +.L_16_blocks_overflow_139: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 +.L_16_blocks_ok_139: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%xmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %xmm30,%xmm4,%xmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %xmm20,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %xmm29,%xmm4,%xmm20 + vextracti32x4 $0,%zmm20,%xmm7 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_140 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_140 +.L_small_initial_partial_block_140: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_140: + + orq %r8,%r8 + je .L_after_reduction_140 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_140: + jmp .L_last_blocks_done_122 +.L_last_num_blocks_is_10_122: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $246,%r15d + jae .L_16_blocks_overflow_141 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %ymm27,%ymm3,%ymm4 + jmp .L_16_blocks_ok_141 + +.L_16_blocks_overflow_141: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 +.L_16_blocks_ok_141: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%ymm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %ymm30,%ymm4,%ymm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %ymm20,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %ymm29,%ymm4,%ymm20 + vextracti32x4 $1,%zmm20,%xmm7 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_142 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_142 +.L_small_initial_partial_block_142: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_142: + + orq %r8,%r8 + je .L_after_reduction_142 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_142: + jmp .L_last_blocks_done_122 +.L_last_num_blocks_is_11_122: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $245,%r15d + jae .L_16_blocks_overflow_143 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_143 + +.L_16_blocks_overflow_143: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_143: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vextracti32x4 $2,%zmm20,%xmm7 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_144 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_144 +.L_small_initial_partial_block_144: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_144: + + orq %r8,%r8 + je .L_after_reduction_144 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_144: + jmp .L_last_blocks_done_122 +.L_last_num_blocks_is_12_122: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $244,%r15d + jae .L_16_blocks_overflow_145 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_145 + +.L_16_blocks_overflow_145: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_145: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vextracti32x4 $3,%zmm20,%xmm7 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_146 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_146 +.L_small_initial_partial_block_146: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_146: + + orq %r8,%r8 + je .L_after_reduction_146 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_146: + jmp .L_last_blocks_done_122 +.L_last_num_blocks_is_13_122: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $243,%r15d + jae .L_16_blocks_overflow_147 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %xmm27,%xmm4,%xmm5 + jmp .L_16_blocks_ok_147 + +.L_16_blocks_overflow_147: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 +.L_16_blocks_ok_147: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%xmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %xmm30,%xmm5,%xmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %xmm21,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %xmm29,%xmm5,%xmm21 + vextracti32x4 $0,%zmm21,%xmm7 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_148 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_148 +.L_small_initial_partial_block_148: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_148: + + orq %r8,%r8 + je .L_after_reduction_148 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_148: + jmp .L_last_blocks_done_122 +.L_last_num_blocks_is_14_122: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $242,%r15d + jae .L_16_blocks_overflow_149 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %ymm27,%ymm4,%ymm5 + jmp .L_16_blocks_ok_149 + +.L_16_blocks_overflow_149: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 +.L_16_blocks_ok_149: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%ymm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %ymm30,%ymm5,%ymm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %ymm21,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %ymm29,%ymm5,%ymm21 + vextracti32x4 $1,%zmm21,%xmm7 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_150 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_150 +.L_small_initial_partial_block_150: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_150: + + orq %r8,%r8 + je .L_after_reduction_150 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_150: + jmp .L_last_blocks_done_122 +.L_last_num_blocks_is_15_122: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $241,%r15d + jae .L_16_blocks_overflow_151 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_151 + +.L_16_blocks_overflow_151: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_151: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %zmm29,%zmm5,%zmm21 + vextracti32x4 $2,%zmm21,%xmm7 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_152 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_152 +.L_small_initial_partial_block_152: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_152: + + orq %r8,%r8 + je .L_after_reduction_152 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_152: + jmp .L_last_blocks_done_122 +.L_last_num_blocks_is_16_122: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $240,%r15d + jae .L_16_blocks_overflow_153 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_153 + +.L_16_blocks_overflow_153: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_153: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %zmm29,%zmm5,%zmm21 + vextracti32x4 $3,%zmm21,%xmm7 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_154: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_154: + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_154: + jmp .L_last_blocks_done_122 +.L_last_num_blocks_is_0_122: + vmovdqa64 768(%rsp),%zmm13 + vpxorq %zmm14,%zmm13,%zmm13 + vmovdqu64 0(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 832(%rsp),%zmm13 + vmovdqu64 64(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpxorq %zmm10,%zmm4,%zmm26 + vpxorq %zmm6,%zmm0,%zmm24 + vpxorq %zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 896(%rsp),%zmm13 + vmovdqu64 128(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 960(%rsp),%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + +.L_last_blocks_done_122: + vpshufb %xmm29,%xmm2,%xmm2 + jmp .L_ghash_done_10 + +.L_message_below_equal_16_blocks_10: + + + movl %r8d,%r12d + addl $15,%r12d + shrl $4,%r12d + cmpq $8,%r12 + je .L_small_initial_num_blocks_is_8_155 + jl .L_small_initial_num_blocks_is_7_1_155 + + + cmpq $12,%r12 + je .L_small_initial_num_blocks_is_12_155 + jl .L_small_initial_num_blocks_is_11_9_155 + + + cmpq $16,%r12 + je .L_small_initial_num_blocks_is_16_155 + cmpq $15,%r12 + je .L_small_initial_num_blocks_is_15_155 + cmpq $14,%r12 + je .L_small_initial_num_blocks_is_14_155 + jmp .L_small_initial_num_blocks_is_13_155 + +.L_small_initial_num_blocks_is_11_9_155: + + cmpq $11,%r12 + je .L_small_initial_num_blocks_is_11_155 + cmpq $10,%r12 + je .L_small_initial_num_blocks_is_10_155 + jmp .L_small_initial_num_blocks_is_9_155 + +.L_small_initial_num_blocks_is_7_1_155: + cmpq $4,%r12 + je .L_small_initial_num_blocks_is_4_155 + jl .L_small_initial_num_blocks_is_3_1_155 + + cmpq $7,%r12 + je .L_small_initial_num_blocks_is_7_155 + cmpq $6,%r12 + je .L_small_initial_num_blocks_is_6_155 + jmp .L_small_initial_num_blocks_is_5_155 + +.L_small_initial_num_blocks_is_3_1_155: + + cmpq $3,%r12 + je .L_small_initial_num_blocks_is_3_155 + cmpq $2,%r12 + je .L_small_initial_num_blocks_is_2_155 + + + + + +.L_small_initial_num_blocks_is_1_155: + vmovdqa64 SHUF_MASK(%rip),%xmm29 + vpaddd ONE(%rip),%xmm2,%xmm0 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $0,%zmm0,%xmm2 + vpshufb %xmm29,%xmm0,%xmm0 + vmovdqu8 0(%rcx,%r11,1),%xmm6{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %xmm15,%xmm0,%xmm0 + vpxorq %xmm6,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm12 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %xmm29,%xmm0,%xmm6 + vextracti32x4 $0,%zmm6,%xmm13 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_156 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm6,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm6,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm6,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm6,%xmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_156 +.L_small_initial_partial_block_156: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + + + + + + + + + + + + vpxorq %xmm13,%xmm14,%xmm14 + + jmp .L_after_reduction_156 +.L_small_initial_compute_done_156: +.L_after_reduction_156: + jmp .L_small_initial_blocks_encrypted_155 +.L_small_initial_num_blocks_is_2_155: + vmovdqa64 SHUF_MASK(%rip),%ymm29 + vshufi64x2 $0,%ymm2,%ymm2,%ymm0 + vpaddd ddq_add_1234(%rip),%ymm0,%ymm0 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $1,%zmm0,%xmm2 + vpshufb %ymm29,%ymm0,%ymm0 + vmovdqu8 0(%rcx,%r11,1),%ymm6{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %ymm15,%ymm0,%ymm0 + vpxorq %ymm6,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm12 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %ymm29,%ymm0,%ymm6 + vextracti32x4 $1,%zmm6,%xmm13 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_157 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm6,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm6,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm6,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm6,%ymm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_157 +.L_small_initial_partial_block_157: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm6,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm6,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm6,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm6,%xmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_157: + + orq %r8,%r8 + je .L_after_reduction_157 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_157: + jmp .L_small_initial_blocks_encrypted_155 +.L_small_initial_num_blocks_is_3_155: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $2,%zmm0,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vmovdqu8 0(%rcx,%r11,1),%zmm6{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vpxorq %zmm6,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vextracti32x4 $2,%zmm6,%xmm13 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_158 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_158 +.L_small_initial_partial_block_158: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm6,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm6,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm6,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm6,%ymm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_158: + + orq %r8,%r8 + je .L_after_reduction_158 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_158: + jmp .L_small_initial_blocks_encrypted_155 +.L_small_initial_num_blocks_is_4_155: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $3,%zmm0,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vmovdqu8 0(%rcx,%r11,1),%zmm6{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vpxorq %zmm6,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vextracti32x4 $3,%zmm6,%xmm13 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_159 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_159 +.L_small_initial_partial_block_159: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_159: + + orq %r8,%r8 + je .L_after_reduction_159 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_159: + jmp .L_small_initial_blocks_encrypted_155 +.L_small_initial_num_blocks_is_5_155: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $64,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $0,%zmm3,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%xmm7{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %xmm15,%xmm3,%xmm3 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %xmm7,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %xmm29,%xmm3,%xmm7 + vextracti32x4 $0,%zmm7,%xmm13 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_160 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm7,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm7,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm7,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm7,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_160 +.L_small_initial_partial_block_160: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_160: + + orq %r8,%r8 + je .L_after_reduction_160 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_160: + jmp .L_small_initial_blocks_encrypted_155 +.L_small_initial_num_blocks_is_6_155: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $64,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $1,%zmm3,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%ymm7{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %ymm15,%ymm3,%ymm3 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %ymm7,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %ymm29,%ymm3,%ymm7 + vextracti32x4 $1,%zmm7,%xmm13 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_161 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm7,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm7,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm7,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm7,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_161 +.L_small_initial_partial_block_161: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm7,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm7,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm7,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm7,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_161: + + orq %r8,%r8 + je .L_after_reduction_161 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_161: + jmp .L_small_initial_blocks_encrypted_155 +.L_small_initial_num_blocks_is_7_155: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $64,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $2,%zmm3,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vextracti32x4 $2,%zmm7,%xmm13 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_162 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_162 +.L_small_initial_partial_block_162: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm7,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm7,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm7,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm7,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_162: + + orq %r8,%r8 + je .L_after_reduction_162 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_162: + jmp .L_small_initial_blocks_encrypted_155 +.L_small_initial_num_blocks_is_8_155: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $64,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $3,%zmm3,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vextracti32x4 $3,%zmm7,%xmm13 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_163 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 224(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_163 +.L_small_initial_partial_block_163: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_163: + + orq %r8,%r8 + je .L_after_reduction_163 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_163: + jmp .L_small_initial_blocks_encrypted_155 +.L_small_initial_num_blocks_is_9_155: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $128,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $0,%zmm4,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%xmm10{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %xmm15,%xmm4,%xmm4 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %xmm10,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vpshufb %xmm29,%xmm4,%xmm10 + vextracti32x4 $0,%zmm10,%xmm13 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_164 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 208(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm10,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm10,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm10,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm10,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_164 +.L_small_initial_partial_block_164: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 224(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_164: + + orq %r8,%r8 + je .L_after_reduction_164 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_164: + jmp .L_small_initial_blocks_encrypted_155 +.L_small_initial_num_blocks_is_10_155: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $128,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $1,%zmm4,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%ymm10{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %ymm15,%ymm4,%ymm4 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %ymm10,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vpshufb %ymm29,%ymm4,%ymm10 + vextracti32x4 $1,%zmm10,%xmm13 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_165 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 192(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm10,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm10,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm10,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm10,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_165 +.L_small_initial_partial_block_165: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 208(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm10,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm10,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm10,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm10,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_165: + + orq %r8,%r8 + je .L_after_reduction_165 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_165: + jmp .L_small_initial_blocks_encrypted_155 +.L_small_initial_num_blocks_is_11_155: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $128,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $2,%zmm4,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vpshufb %zmm29,%zmm4,%zmm10 + vextracti32x4 $2,%zmm10,%xmm13 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_166 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 176(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_166 +.L_small_initial_partial_block_166: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 192(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm10,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm10,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm10,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm10,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_166: + + orq %r8,%r8 + je .L_after_reduction_166 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_166: + jmp .L_small_initial_blocks_encrypted_155 +.L_small_initial_num_blocks_is_12_155: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $128,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $3,%zmm4,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vpshufb %zmm29,%zmm4,%zmm10 + vextracti32x4 $3,%zmm10,%xmm13 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_167 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 160(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 224(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_167 +.L_small_initial_partial_block_167: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 176(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_167: + + orq %r8,%r8 + je .L_after_reduction_167 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_167: + jmp .L_small_initial_blocks_encrypted_155 +.L_small_initial_num_blocks_is_13_155: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + vpaddd ddq_add_8888(%rip),%zmm3,%zmm5 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $192,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $0,%zmm5,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10 + vmovdqu8 192(%rcx,%r11,1),%xmm11{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vpxorq %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vaesenclast %xmm15,%xmm5,%xmm5 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vpxorq %xmm11,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vpshufb %zmm29,%zmm4,%zmm10 + vpshufb %xmm29,%xmm5,%xmm11 + vextracti32x4 $0,%zmm11,%xmm13 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_168 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 144(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 208(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm11,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm11,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm11,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm11,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_168 +.L_small_initial_partial_block_168: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 160(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 224(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_168: + + orq %r8,%r8 + je .L_after_reduction_168 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_168: + jmp .L_small_initial_blocks_encrypted_155 +.L_small_initial_num_blocks_is_14_155: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + vpaddd ddq_add_8888(%rip),%zmm3,%zmm5 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $192,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $1,%zmm5,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10 + vmovdqu8 192(%rcx,%r11,1),%ymm11{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vpxorq %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vaesenclast %ymm15,%ymm5,%ymm5 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vpxorq %ymm11,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vpshufb %zmm29,%zmm4,%zmm10 + vpshufb %ymm29,%ymm5,%ymm11 + vextracti32x4 $1,%zmm11,%xmm13 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_169 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 128(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 192(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm11,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm11,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm11,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm11,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_169 +.L_small_initial_partial_block_169: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 144(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 208(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm11,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm11,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm11,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm11,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_169: + + orq %r8,%r8 + je .L_after_reduction_169 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_169: + jmp .L_small_initial_blocks_encrypted_155 +.L_small_initial_num_blocks_is_15_155: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + vpaddd ddq_add_8888(%rip),%zmm3,%zmm5 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $192,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $2,%zmm5,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10 + vmovdqu8 192(%rcx,%r11,1),%zmm11{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vpxorq %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vaesenclast %zmm15,%zmm5,%zmm5 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vpxorq %zmm11,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vpshufb %zmm29,%zmm4,%zmm10 + vpshufb %zmm29,%zmm5,%zmm11 + vextracti32x4 $2,%zmm11,%xmm13 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_170 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 112(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 176(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm11,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm11,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm11,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm11,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_170 +.L_small_initial_partial_block_170: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 128(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 192(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm11,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm11,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm11,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm11,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_170: + + orq %r8,%r8 + je .L_after_reduction_170 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_170: + jmp .L_small_initial_blocks_encrypted_155 +.L_small_initial_num_blocks_is_16_155: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + vpaddd ddq_add_8888(%rip),%zmm3,%zmm5 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $192,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $3,%zmm5,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10 + vmovdqu8 192(%rcx,%r11,1),%zmm11{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vpxorq %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vaesenclast %zmm15,%zmm5,%zmm5 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vpxorq %zmm11,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vpshufb %zmm29,%zmm4,%zmm10 + vpshufb %zmm29,%zmm5,%zmm11 + vextracti32x4 $3,%zmm11,%xmm13 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_171: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 112(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 176(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm11,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm11,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm11,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm11,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_171: + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_171: +.L_small_initial_blocks_encrypted_155: +.L_ghash_done_10: + vmovdqu64 %xmm2,0(%rsi) + vmovdqu64 %xmm14,64(%rsi) +.L_enc_dec_done_10: + jmp .Lexit_gcm_encrypt +.align 32 +.Laes_gcm_encrypt_192_avx512: + orq %r8,%r8 + je .L_enc_dec_done_172 + xorq %r14,%r14 + vmovdqu64 64(%rsi),%xmm14 + + movq (%rdx),%r11 + orq %r11,%r11 + je .L_partial_block_done_173 + movl $16,%r10d + leaq byte_len_to_mask_table(%rip),%r12 + cmpq %r10,%r8 + cmovcq %r8,%r10 + kmovw (%r12,%r10,2),%k1 + vmovdqu8 (%rcx),%xmm0{%k1}{z} + + vmovdqu64 16(%rsi),%xmm3 + vmovdqu64 336(%rsi),%xmm4 + + + + leaq SHIFT_MASK(%rip),%r12 + addq %r11,%r12 + vmovdqu64 (%r12),%xmm5 + vpshufb %xmm5,%xmm3,%xmm3 + vpxorq %xmm0,%xmm3,%xmm3 + + + leaq (%r8,%r11,1),%r13 + subq $16,%r13 + jge .L_no_extra_mask_173 + subq %r13,%r12 +.L_no_extra_mask_173: + + + + vmovdqu64 16(%r12),%xmm0 + vpand %xmm0,%xmm3,%xmm3 + vpshufb SHUF_MASK(%rip),%xmm3,%xmm3 + vpshufb %xmm5,%xmm3,%xmm3 + vpxorq %xmm3,%xmm14,%xmm14 + cmpq $0,%r13 + jl .L_partial_incomplete_173 + + vpclmulqdq $0x11,%xmm4,%xmm14,%xmm7 + vpclmulqdq $0x00,%xmm4,%xmm14,%xmm10 + vpclmulqdq $0x01,%xmm4,%xmm14,%xmm11 + vpclmulqdq $0x10,%xmm4,%xmm14,%xmm14 + vpxorq %xmm11,%xmm14,%xmm14 + + vpsrldq $8,%xmm14,%xmm11 + vpslldq $8,%xmm14,%xmm14 + vpxorq %xmm11,%xmm7,%xmm7 + vpxorq %xmm10,%xmm14,%xmm14 + + + + vmovdqu64 POLY2(%rip),%xmm11 + + vpclmulqdq $0x01,%xmm14,%xmm11,%xmm10 + vpslldq $8,%xmm10,%xmm10 + vpxorq %xmm10,%xmm14,%xmm14 + + + + vpclmulqdq $0x00,%xmm14,%xmm11,%xmm10 + vpsrldq $4,%xmm10,%xmm10 + vpclmulqdq $0x10,%xmm14,%xmm11,%xmm14 + vpslldq $4,%xmm14,%xmm14 + + vpternlogq $0x96,%xmm10,%xmm7,%xmm14 + + movq $0,(%rdx) + + movq %r11,%r12 + movq $16,%r11 + subq %r12,%r11 + jmp .L_enc_dec_done_173 + +.L_partial_incomplete_173: + addq %r8,(%rdx) + movq %r8,%r11 + +.L_enc_dec_done_173: + + + leaq byte_len_to_mask_table(%rip),%r12 + kmovw (%r12,%r11,2),%k1 + vmovdqu64 %xmm14,64(%rsi) + + vpshufb SHUF_MASK(%rip),%xmm3,%xmm3 + vpshufb %xmm5,%xmm3,%xmm3 + movq %r9,%r12 + vmovdqu8 %xmm3,(%r12){%k1} +.L_partial_block_done_173: + vmovdqu64 0(%rsi),%xmm2 + subq %r11,%r8 + je .L_enc_dec_done_172 + cmpq $256,%r8 + jbe .L_message_below_equal_16_blocks_172 + + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vmovdqa64 ddq_addbe_4444(%rip),%zmm27 + vmovdqa64 ddq_addbe_1234(%rip),%zmm28 + + + + + + + vmovd %xmm2,%r15d + andl $255,%r15d + + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpshufb %zmm29,%zmm2,%zmm2 + + + + cmpb $240,%r15b + jae .L_next_16_overflow_174 + vpaddd %zmm28,%zmm2,%zmm7 + vpaddd %zmm27,%zmm7,%zmm10 + vpaddd %zmm27,%zmm10,%zmm11 + vpaddd %zmm27,%zmm11,%zmm12 + jmp .L_next_16_ok_174 +.L_next_16_overflow_174: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm12 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm7 + vpaddd %zmm12,%zmm7,%zmm10 + vpaddd %zmm12,%zmm10,%zmm11 + vpaddd %zmm12,%zmm11,%zmm12 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %zmm29,%zmm11,%zmm11 + vpshufb %zmm29,%zmm12,%zmm12 +.L_next_16_ok_174: + vshufi64x2 $255,%zmm12,%zmm12,%zmm2 + addb $16,%r15b + + vmovdqu8 0(%rcx,%r11,1),%zmm0 + vmovdqu8 64(%rcx,%r11,1),%zmm3 + vmovdqu8 128(%rcx,%r11,1),%zmm4 + vmovdqu8 192(%rcx,%r11,1),%zmm5 + + + vbroadcastf64x2 0(%rdi),%zmm6 + vpxorq %zmm6,%zmm7,%zmm7 + vpxorq %zmm6,%zmm10,%zmm10 + vpxorq %zmm6,%zmm11,%zmm11 + vpxorq %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 16(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 32(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 48(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 64(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 80(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 96(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 112(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 128(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 144(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 160(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 176(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 192(%rdi),%zmm6 + vaesenclast %zmm6,%zmm7,%zmm7 + vaesenclast %zmm6,%zmm10,%zmm10 + vaesenclast %zmm6,%zmm11,%zmm11 + vaesenclast %zmm6,%zmm12,%zmm12 + + + vpxorq %zmm0,%zmm7,%zmm7 + vpxorq %zmm3,%zmm10,%zmm10 + vpxorq %zmm4,%zmm11,%zmm11 + vpxorq %zmm5,%zmm12,%zmm12 + + + movq %r9,%r10 + vmovdqu8 %zmm7,0(%r10,%r11,1) + vmovdqu8 %zmm10,64(%r10,%r11,1) + vmovdqu8 %zmm11,128(%r10,%r11,1) + vmovdqu8 %zmm12,192(%r10,%r11,1) + + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %zmm29,%zmm11,%zmm11 + vpshufb %zmm29,%zmm12,%zmm12 + vmovdqa64 %zmm7,768(%rsp) + vmovdqa64 %zmm10,832(%rsp) + vmovdqa64 %zmm11,896(%rsp) + vmovdqa64 %zmm12,960(%rsp) + testq %r14,%r14 + jnz .L_skip_hkeys_precomputation_175 + + vmovdqu64 288(%rsi),%zmm0 + vmovdqu64 %zmm0,704(%rsp) + + vmovdqu64 224(%rsi),%zmm3 + vmovdqu64 %zmm3,640(%rsp) + + + vshufi64x2 $0x00,%zmm3,%zmm3,%zmm3 + + vmovdqu64 160(%rsi),%zmm4 + vmovdqu64 %zmm4,576(%rsp) + + vmovdqu64 96(%rsi),%zmm5 + vmovdqu64 %zmm5,512(%rsp) +.L_skip_hkeys_precomputation_175: + cmpq $512,%r8 + jb .L_message_below_32_blocks_172 + + + + cmpb $240,%r15b + jae .L_next_16_overflow_176 + vpaddd %zmm28,%zmm2,%zmm7 + vpaddd %zmm27,%zmm7,%zmm10 + vpaddd %zmm27,%zmm10,%zmm11 + vpaddd %zmm27,%zmm11,%zmm12 + jmp .L_next_16_ok_176 +.L_next_16_overflow_176: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm12 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm7 + vpaddd %zmm12,%zmm7,%zmm10 + vpaddd %zmm12,%zmm10,%zmm11 + vpaddd %zmm12,%zmm11,%zmm12 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %zmm29,%zmm11,%zmm11 + vpshufb %zmm29,%zmm12,%zmm12 +.L_next_16_ok_176: + vshufi64x2 $255,%zmm12,%zmm12,%zmm2 + addb $16,%r15b + + vmovdqu8 256(%rcx,%r11,1),%zmm0 + vmovdqu8 320(%rcx,%r11,1),%zmm3 + vmovdqu8 384(%rcx,%r11,1),%zmm4 + vmovdqu8 448(%rcx,%r11,1),%zmm5 + + + vbroadcastf64x2 0(%rdi),%zmm6 + vpxorq %zmm6,%zmm7,%zmm7 + vpxorq %zmm6,%zmm10,%zmm10 + vpxorq %zmm6,%zmm11,%zmm11 + vpxorq %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 16(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 32(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 48(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 64(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 80(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 96(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 112(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 128(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 144(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 160(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 176(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 192(%rdi),%zmm6 + vaesenclast %zmm6,%zmm7,%zmm7 + vaesenclast %zmm6,%zmm10,%zmm10 + vaesenclast %zmm6,%zmm11,%zmm11 + vaesenclast %zmm6,%zmm12,%zmm12 + + + vpxorq %zmm0,%zmm7,%zmm7 + vpxorq %zmm3,%zmm10,%zmm10 + vpxorq %zmm4,%zmm11,%zmm11 + vpxorq %zmm5,%zmm12,%zmm12 + + + movq %r9,%r10 + vmovdqu8 %zmm7,256(%r10,%r11,1) + vmovdqu8 %zmm10,320(%r10,%r11,1) + vmovdqu8 %zmm11,384(%r10,%r11,1) + vmovdqu8 %zmm12,448(%r10,%r11,1) + + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %zmm29,%zmm11,%zmm11 + vpshufb %zmm29,%zmm12,%zmm12 + vmovdqa64 %zmm7,1024(%rsp) + vmovdqa64 %zmm10,1088(%rsp) + vmovdqa64 %zmm11,1152(%rsp) + vmovdqa64 %zmm12,1216(%rsp) + testq %r14,%r14 + jnz .L_skip_hkeys_precomputation_177 + vmovdqu64 640(%rsp),%zmm3 + + + vshufi64x2 $0x00,%zmm3,%zmm3,%zmm3 + + vmovdqu64 576(%rsp),%zmm4 + vmovdqu64 512(%rsp),%zmm5 + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,448(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,384(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,320(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,256(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,192(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,128(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,64(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,0(%rsp) +.L_skip_hkeys_precomputation_177: + movq $1,%r14 + addq $512,%r11 + subq $512,%r8 + + cmpq $768,%r8 + jb .L_no_more_big_nblocks_172 +.L_encrypt_big_nblocks_172: + cmpb $240,%r15b + jae .L_16_blocks_overflow_178 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_178 +.L_16_blocks_overflow_178: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_178: + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm15,%zmm10,%zmm26 + vpxorq %zmm12,%zmm6,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1) + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqa64 %zmm0,1280(%rsp) + vmovdqa64 %zmm3,1344(%rsp) + vmovdqa64 %zmm4,1408(%rsp) + vmovdqa64 %zmm5,1472(%rsp) + cmpb $240,%r15b + jae .L_16_blocks_overflow_179 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_179 +.L_16_blocks_overflow_179: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_179: + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 256(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 320(%rsp),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 384(%rsp),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 448(%rsp),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 256(%rcx,%r11,1),%zmm17 + vmovdqu8 320(%rcx,%r11,1),%zmm19 + vmovdqu8 384(%rcx,%r11,1),%zmm20 + vmovdqu8 448(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vpternlogq $0x96,%zmm12,%zmm6,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,256(%r10,%r11,1) + vmovdqu8 %zmm3,320(%r10,%r11,1) + vmovdqu8 %zmm4,384(%r10,%r11,1) + vmovdqu8 %zmm5,448(%r10,%r11,1) + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqa64 %zmm0,768(%rsp) + vmovdqa64 %zmm3,832(%rsp) + vmovdqa64 %zmm4,896(%rsp) + vmovdqa64 %zmm5,960(%rsp) + cmpb $240,%r15b + jae .L_16_blocks_overflow_180 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_180 +.L_16_blocks_overflow_180: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_180: + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 512(%rcx,%r11,1),%zmm17 + vmovdqu8 576(%rcx,%r11,1),%zmm19 + vmovdqu8 640(%rcx,%r11,1),%zmm20 + vmovdqu8 704(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + + + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpternlogq $0x96,%zmm15,%zmm12,%zmm6 + vpxorq %zmm24,%zmm6,%zmm6 + vpternlogq $0x96,%zmm10,%zmm13,%zmm7 + vpxorq %zmm25,%zmm7,%zmm7 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vextracti64x4 $1,%zmm6,%ymm12 + vpxorq %ymm12,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm12 + vpxorq %xmm12,%xmm6,%xmm6 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm6 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,512(%r10,%r11,1) + vmovdqu8 %zmm3,576(%r10,%r11,1) + vmovdqu8 %zmm4,640(%r10,%r11,1) + vmovdqu8 %zmm5,704(%r10,%r11,1) + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqa64 %zmm0,1024(%rsp) + vmovdqa64 %zmm3,1088(%rsp) + vmovdqa64 %zmm4,1152(%rsp) + vmovdqa64 %zmm5,1216(%rsp) + vmovdqa64 %zmm6,%zmm14 + + addq $768,%r11 + subq $768,%r8 + cmpq $768,%r8 + jae .L_encrypt_big_nblocks_172 + +.L_no_more_big_nblocks_172: + + cmpq $512,%r8 + jae .L_encrypt_32_blocks_172 + + cmpq $256,%r8 + jae .L_encrypt_16_blocks_172 +.L_encrypt_0_blocks_ghash_32_172: + movl %r8d,%r10d + andl $~15,%r10d + movl $256,%ebx + subl %r10d,%ebx + vmovdqa64 768(%rsp),%zmm13 + vpxorq %zmm14,%zmm13,%zmm13 + vmovdqu64 0(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 832(%rsp),%zmm13 + vmovdqu64 64(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpxorq %zmm10,%zmm4,%zmm26 + vpxorq %zmm6,%zmm0,%zmm24 + vpxorq %zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 896(%rsp),%zmm13 + vmovdqu64 128(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 960(%rsp),%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + addl $256,%ebx + movl %r8d,%r10d + addl $15,%r10d + shrl $4,%r10d + je .L_last_num_blocks_is_0_181 + + cmpl $8,%r10d + je .L_last_num_blocks_is_8_181 + jb .L_last_num_blocks_is_7_1_181 + + + cmpl $12,%r10d + je .L_last_num_blocks_is_12_181 + jb .L_last_num_blocks_is_11_9_181 + + + cmpl $15,%r10d + je .L_last_num_blocks_is_15_181 + ja .L_last_num_blocks_is_16_181 + cmpl $14,%r10d + je .L_last_num_blocks_is_14_181 + jmp .L_last_num_blocks_is_13_181 + +.L_last_num_blocks_is_11_9_181: + + cmpl $10,%r10d + je .L_last_num_blocks_is_10_181 + ja .L_last_num_blocks_is_11_181 + jmp .L_last_num_blocks_is_9_181 + +.L_last_num_blocks_is_7_1_181: + cmpl $4,%r10d + je .L_last_num_blocks_is_4_181 + jb .L_last_num_blocks_is_3_1_181 + + cmpl $6,%r10d + ja .L_last_num_blocks_is_7_181 + je .L_last_num_blocks_is_6_181 + jmp .L_last_num_blocks_is_5_181 + +.L_last_num_blocks_is_3_1_181: + + cmpl $2,%r10d + ja .L_last_num_blocks_is_3_181 + je .L_last_num_blocks_is_2_181 +.L_last_num_blocks_is_1_181: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $255,%r15d + jae .L_16_blocks_overflow_182 + vpaddd %xmm28,%xmm2,%xmm0 + jmp .L_16_blocks_ok_182 + +.L_16_blocks_overflow_182: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %xmm29,%xmm0,%xmm0 +.L_16_blocks_ok_182: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%xmm17{%k1}{z} + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vaesenclast %xmm30,%xmm0,%xmm0 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %xmm29,%xmm0,%xmm17 + vextracti32x4 $0,%zmm17,%xmm7 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_183 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_183 +.L_small_initial_partial_block_183: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm0 + + + vpclmulqdq $0x01,%xmm25,%xmm0,%xmm3 + vpslldq $8,%xmm3,%xmm3 + vpxorq %xmm3,%xmm25,%xmm3 + + + vpclmulqdq $0x00,%xmm3,%xmm0,%xmm4 + vpsrldq $4,%xmm4,%xmm4 + vpclmulqdq $0x10,%xmm3,%xmm0,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm4,%xmm14 + + + + + + + + + + + + + vpxorq %xmm7,%xmm14,%xmm14 + + jmp .L_after_reduction_183 +.L_small_initial_compute_done_183: +.L_after_reduction_183: + jmp .L_last_blocks_done_181 +.L_last_num_blocks_is_2_181: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $254,%r15d + jae .L_16_blocks_overflow_184 + vpaddd %ymm28,%ymm2,%ymm0 + jmp .L_16_blocks_ok_184 + +.L_16_blocks_overflow_184: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %ymm29,%ymm0,%ymm0 +.L_16_blocks_ok_184: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%ymm17{%k1}{z} + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vaesenclast %ymm30,%ymm0,%ymm0 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %ymm29,%ymm0,%ymm17 + vextracti32x4 $1,%zmm17,%xmm7 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_185 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_185 +.L_small_initial_partial_block_185: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_185: + + orq %r8,%r8 + je .L_after_reduction_185 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_185: + jmp .L_last_blocks_done_181 +.L_last_num_blocks_is_3_181: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $253,%r15d + jae .L_16_blocks_overflow_186 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_186 + +.L_16_blocks_overflow_186: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_186: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vextracti32x4 $2,%zmm17,%xmm7 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_187 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_187 +.L_small_initial_partial_block_187: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_187: + + orq %r8,%r8 + je .L_after_reduction_187 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_187: + jmp .L_last_blocks_done_181 +.L_last_num_blocks_is_4_181: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $252,%r15d + jae .L_16_blocks_overflow_188 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_188 + +.L_16_blocks_overflow_188: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_188: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vextracti32x4 $3,%zmm17,%xmm7 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_189 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_189 +.L_small_initial_partial_block_189: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_189: + + orq %r8,%r8 + je .L_after_reduction_189 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_189: + jmp .L_last_blocks_done_181 +.L_last_num_blocks_is_5_181: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $251,%r15d + jae .L_16_blocks_overflow_190 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %xmm27,%xmm0,%xmm3 + jmp .L_16_blocks_ok_190 + +.L_16_blocks_overflow_190: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 +.L_16_blocks_ok_190: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%xmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %xmm30,%xmm3,%xmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %xmm19,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %xmm29,%xmm3,%xmm19 + vextracti32x4 $0,%zmm19,%xmm7 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_191 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_191 +.L_small_initial_partial_block_191: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_191: + + orq %r8,%r8 + je .L_after_reduction_191 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_191: + jmp .L_last_blocks_done_181 +.L_last_num_blocks_is_6_181: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $250,%r15d + jae .L_16_blocks_overflow_192 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %ymm27,%ymm0,%ymm3 + jmp .L_16_blocks_ok_192 + +.L_16_blocks_overflow_192: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 +.L_16_blocks_ok_192: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%ymm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %ymm30,%ymm3,%ymm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %ymm29,%ymm3,%ymm19 + vextracti32x4 $1,%zmm19,%xmm7 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_193 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_193 +.L_small_initial_partial_block_193: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_193: + + orq %r8,%r8 + je .L_after_reduction_193 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_193: + jmp .L_last_blocks_done_181 +.L_last_num_blocks_is_7_181: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $249,%r15d + jae .L_16_blocks_overflow_194 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_194 + +.L_16_blocks_overflow_194: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_194: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vextracti32x4 $2,%zmm19,%xmm7 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_195 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_195 +.L_small_initial_partial_block_195: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_195: + + orq %r8,%r8 + je .L_after_reduction_195 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_195: + jmp .L_last_blocks_done_181 +.L_last_num_blocks_is_8_181: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $248,%r15d + jae .L_16_blocks_overflow_196 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_196 + +.L_16_blocks_overflow_196: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_196: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vextracti32x4 $3,%zmm19,%xmm7 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_197 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_197 +.L_small_initial_partial_block_197: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_197: + + orq %r8,%r8 + je .L_after_reduction_197 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_197: + jmp .L_last_blocks_done_181 +.L_last_num_blocks_is_9_181: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $247,%r15d + jae .L_16_blocks_overflow_198 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %xmm27,%xmm3,%xmm4 + jmp .L_16_blocks_ok_198 + +.L_16_blocks_overflow_198: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 +.L_16_blocks_ok_198: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%xmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %xmm30,%xmm4,%xmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %xmm20,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %xmm29,%xmm4,%xmm20 + vextracti32x4 $0,%zmm20,%xmm7 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_199 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_199 +.L_small_initial_partial_block_199: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_199: + + orq %r8,%r8 + je .L_after_reduction_199 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_199: + jmp .L_last_blocks_done_181 +.L_last_num_blocks_is_10_181: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $246,%r15d + jae .L_16_blocks_overflow_200 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %ymm27,%ymm3,%ymm4 + jmp .L_16_blocks_ok_200 + +.L_16_blocks_overflow_200: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 +.L_16_blocks_ok_200: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%ymm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %ymm30,%ymm4,%ymm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %ymm20,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %ymm29,%ymm4,%ymm20 + vextracti32x4 $1,%zmm20,%xmm7 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_201 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_201 +.L_small_initial_partial_block_201: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_201: + + orq %r8,%r8 + je .L_after_reduction_201 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_201: + jmp .L_last_blocks_done_181 +.L_last_num_blocks_is_11_181: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $245,%r15d + jae .L_16_blocks_overflow_202 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_202 + +.L_16_blocks_overflow_202: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_202: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vextracti32x4 $2,%zmm20,%xmm7 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_203 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_203 +.L_small_initial_partial_block_203: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_203: + + orq %r8,%r8 + je .L_after_reduction_203 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_203: + jmp .L_last_blocks_done_181 +.L_last_num_blocks_is_12_181: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $244,%r15d + jae .L_16_blocks_overflow_204 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_204 + +.L_16_blocks_overflow_204: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_204: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vextracti32x4 $3,%zmm20,%xmm7 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_205 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_205 +.L_small_initial_partial_block_205: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_205: + + orq %r8,%r8 + je .L_after_reduction_205 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_205: + jmp .L_last_blocks_done_181 +.L_last_num_blocks_is_13_181: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $243,%r15d + jae .L_16_blocks_overflow_206 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %xmm27,%xmm4,%xmm5 + jmp .L_16_blocks_ok_206 + +.L_16_blocks_overflow_206: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 +.L_16_blocks_ok_206: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%xmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %xmm30,%xmm5,%xmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %xmm21,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %xmm29,%xmm5,%xmm21 + vextracti32x4 $0,%zmm21,%xmm7 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_207 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_207 +.L_small_initial_partial_block_207: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_207: + + orq %r8,%r8 + je .L_after_reduction_207 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_207: + jmp .L_last_blocks_done_181 +.L_last_num_blocks_is_14_181: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $242,%r15d + jae .L_16_blocks_overflow_208 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %ymm27,%ymm4,%ymm5 + jmp .L_16_blocks_ok_208 + +.L_16_blocks_overflow_208: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 +.L_16_blocks_ok_208: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%ymm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %ymm30,%ymm5,%ymm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %ymm21,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %ymm29,%ymm5,%ymm21 + vextracti32x4 $1,%zmm21,%xmm7 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_209 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_209 +.L_small_initial_partial_block_209: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_209: + + orq %r8,%r8 + je .L_after_reduction_209 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_209: + jmp .L_last_blocks_done_181 +.L_last_num_blocks_is_15_181: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $241,%r15d + jae .L_16_blocks_overflow_210 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_210 + +.L_16_blocks_overflow_210: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_210: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %zmm29,%zmm5,%zmm21 + vextracti32x4 $2,%zmm21,%xmm7 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_211 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_211 +.L_small_initial_partial_block_211: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_211: + + orq %r8,%r8 + je .L_after_reduction_211 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_211: + jmp .L_last_blocks_done_181 +.L_last_num_blocks_is_16_181: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $240,%r15d + jae .L_16_blocks_overflow_212 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_212 + +.L_16_blocks_overflow_212: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_212: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %zmm29,%zmm5,%zmm21 + vextracti32x4 $3,%zmm21,%xmm7 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_213: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_213: + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_213: + jmp .L_last_blocks_done_181 +.L_last_num_blocks_is_0_181: + vmovdqa64 1024(%rsp),%zmm13 + vmovdqu64 0(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1088(%rsp),%zmm13 + vmovdqu64 64(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 1152(%rsp),%zmm13 + vmovdqu64 128(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1216(%rsp),%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + +.L_last_blocks_done_181: + vpshufb %xmm29,%xmm2,%xmm2 + jmp .L_ghash_done_172 +.L_encrypt_32_blocks_172: + cmpb $240,%r15b + jae .L_16_blocks_overflow_214 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_214 +.L_16_blocks_overflow_214: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_214: + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm15,%zmm10,%zmm26 + vpxorq %zmm12,%zmm6,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1) + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqa64 %zmm0,1280(%rsp) + vmovdqa64 %zmm3,1344(%rsp) + vmovdqa64 %zmm4,1408(%rsp) + vmovdqa64 %zmm5,1472(%rsp) + cmpb $240,%r15b + jae .L_16_blocks_overflow_215 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_215 +.L_16_blocks_overflow_215: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_215: + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 256(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 320(%rsp),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 384(%rsp),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 448(%rsp),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 256(%rcx,%r11,1),%zmm17 + vmovdqu8 320(%rcx,%r11,1),%zmm19 + vmovdqu8 384(%rcx,%r11,1),%zmm20 + vmovdqu8 448(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vpternlogq $0x96,%zmm12,%zmm6,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,256(%r10,%r11,1) + vmovdqu8 %zmm3,320(%r10,%r11,1) + vmovdqu8 %zmm4,384(%r10,%r11,1) + vmovdqu8 %zmm5,448(%r10,%r11,1) + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqa64 %zmm0,768(%rsp) + vmovdqa64 %zmm3,832(%rsp) + vmovdqa64 %zmm4,896(%rsp) + vmovdqa64 %zmm5,960(%rsp) + vmovdqa64 1280(%rsp),%zmm13 + vmovdqu64 512(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1344(%rsp),%zmm13 + vmovdqu64 576(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 1408(%rsp),%zmm13 + vmovdqu64 640(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1472(%rsp),%zmm13 + vmovdqu64 704(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + + subq $512,%r8 + addq $512,%r11 + movl %r8d,%r10d + andl $~15,%r10d + movl $512,%ebx + subl %r10d,%ebx + movl %r8d,%r10d + addl $15,%r10d + shrl $4,%r10d + je .L_last_num_blocks_is_0_216 + + cmpl $8,%r10d + je .L_last_num_blocks_is_8_216 + jb .L_last_num_blocks_is_7_1_216 + + + cmpl $12,%r10d + je .L_last_num_blocks_is_12_216 + jb .L_last_num_blocks_is_11_9_216 + + + cmpl $15,%r10d + je .L_last_num_blocks_is_15_216 + ja .L_last_num_blocks_is_16_216 + cmpl $14,%r10d + je .L_last_num_blocks_is_14_216 + jmp .L_last_num_blocks_is_13_216 + +.L_last_num_blocks_is_11_9_216: + + cmpl $10,%r10d + je .L_last_num_blocks_is_10_216 + ja .L_last_num_blocks_is_11_216 + jmp .L_last_num_blocks_is_9_216 + +.L_last_num_blocks_is_7_1_216: + cmpl $4,%r10d + je .L_last_num_blocks_is_4_216 + jb .L_last_num_blocks_is_3_1_216 + + cmpl $6,%r10d + ja .L_last_num_blocks_is_7_216 + je .L_last_num_blocks_is_6_216 + jmp .L_last_num_blocks_is_5_216 + +.L_last_num_blocks_is_3_1_216: + + cmpl $2,%r10d + ja .L_last_num_blocks_is_3_216 + je .L_last_num_blocks_is_2_216 +.L_last_num_blocks_is_1_216: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $255,%r15d + jae .L_16_blocks_overflow_217 + vpaddd %xmm28,%xmm2,%xmm0 + jmp .L_16_blocks_ok_217 + +.L_16_blocks_overflow_217: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %xmm29,%xmm0,%xmm0 +.L_16_blocks_ok_217: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%xmm17{%k1}{z} + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vaesenclast %xmm30,%xmm0,%xmm0 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %xmm29,%xmm0,%xmm17 + vextracti32x4 $0,%zmm17,%xmm7 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_218 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_218 +.L_small_initial_partial_block_218: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm0 + + + vpclmulqdq $0x01,%xmm25,%xmm0,%xmm3 + vpslldq $8,%xmm3,%xmm3 + vpxorq %xmm3,%xmm25,%xmm3 + + + vpclmulqdq $0x00,%xmm3,%xmm0,%xmm4 + vpsrldq $4,%xmm4,%xmm4 + vpclmulqdq $0x10,%xmm3,%xmm0,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm4,%xmm14 + + + + + + + + + + + + + vpxorq %xmm7,%xmm14,%xmm14 + + jmp .L_after_reduction_218 +.L_small_initial_compute_done_218: +.L_after_reduction_218: + jmp .L_last_blocks_done_216 +.L_last_num_blocks_is_2_216: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $254,%r15d + jae .L_16_blocks_overflow_219 + vpaddd %ymm28,%ymm2,%ymm0 + jmp .L_16_blocks_ok_219 + +.L_16_blocks_overflow_219: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %ymm29,%ymm0,%ymm0 +.L_16_blocks_ok_219: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%ymm17{%k1}{z} + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vaesenclast %ymm30,%ymm0,%ymm0 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %ymm29,%ymm0,%ymm17 + vextracti32x4 $1,%zmm17,%xmm7 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_220 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_220 +.L_small_initial_partial_block_220: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_220: + + orq %r8,%r8 + je .L_after_reduction_220 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_220: + jmp .L_last_blocks_done_216 +.L_last_num_blocks_is_3_216: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $253,%r15d + jae .L_16_blocks_overflow_221 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_221 + +.L_16_blocks_overflow_221: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_221: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vextracti32x4 $2,%zmm17,%xmm7 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_222 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_222 +.L_small_initial_partial_block_222: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_222: + + orq %r8,%r8 + je .L_after_reduction_222 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_222: + jmp .L_last_blocks_done_216 +.L_last_num_blocks_is_4_216: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $252,%r15d + jae .L_16_blocks_overflow_223 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_223 + +.L_16_blocks_overflow_223: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_223: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vextracti32x4 $3,%zmm17,%xmm7 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_224 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_224 +.L_small_initial_partial_block_224: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_224: + + orq %r8,%r8 + je .L_after_reduction_224 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_224: + jmp .L_last_blocks_done_216 +.L_last_num_blocks_is_5_216: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $251,%r15d + jae .L_16_blocks_overflow_225 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %xmm27,%xmm0,%xmm3 + jmp .L_16_blocks_ok_225 + +.L_16_blocks_overflow_225: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 +.L_16_blocks_ok_225: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%xmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %xmm30,%xmm3,%xmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %xmm19,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %xmm29,%xmm3,%xmm19 + vextracti32x4 $0,%zmm19,%xmm7 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_226 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_226 +.L_small_initial_partial_block_226: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_226: + + orq %r8,%r8 + je .L_after_reduction_226 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_226: + jmp .L_last_blocks_done_216 +.L_last_num_blocks_is_6_216: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $250,%r15d + jae .L_16_blocks_overflow_227 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %ymm27,%ymm0,%ymm3 + jmp .L_16_blocks_ok_227 + +.L_16_blocks_overflow_227: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 +.L_16_blocks_ok_227: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%ymm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %ymm30,%ymm3,%ymm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %ymm29,%ymm3,%ymm19 + vextracti32x4 $1,%zmm19,%xmm7 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_228 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_228 +.L_small_initial_partial_block_228: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_228: + + orq %r8,%r8 + je .L_after_reduction_228 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_228: + jmp .L_last_blocks_done_216 +.L_last_num_blocks_is_7_216: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $249,%r15d + jae .L_16_blocks_overflow_229 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_229 + +.L_16_blocks_overflow_229: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_229: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vextracti32x4 $2,%zmm19,%xmm7 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_230 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_230 +.L_small_initial_partial_block_230: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_230: + + orq %r8,%r8 + je .L_after_reduction_230 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_230: + jmp .L_last_blocks_done_216 +.L_last_num_blocks_is_8_216: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $248,%r15d + jae .L_16_blocks_overflow_231 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_231 + +.L_16_blocks_overflow_231: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_231: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vextracti32x4 $3,%zmm19,%xmm7 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_232 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_232 +.L_small_initial_partial_block_232: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_232: + + orq %r8,%r8 + je .L_after_reduction_232 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_232: + jmp .L_last_blocks_done_216 +.L_last_num_blocks_is_9_216: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $247,%r15d + jae .L_16_blocks_overflow_233 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %xmm27,%xmm3,%xmm4 + jmp .L_16_blocks_ok_233 + +.L_16_blocks_overflow_233: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 +.L_16_blocks_ok_233: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%xmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %xmm30,%xmm4,%xmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %xmm20,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %xmm29,%xmm4,%xmm20 + vextracti32x4 $0,%zmm20,%xmm7 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_234 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_234 +.L_small_initial_partial_block_234: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_234: + + orq %r8,%r8 + je .L_after_reduction_234 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_234: + jmp .L_last_blocks_done_216 +.L_last_num_blocks_is_10_216: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $246,%r15d + jae .L_16_blocks_overflow_235 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %ymm27,%ymm3,%ymm4 + jmp .L_16_blocks_ok_235 + +.L_16_blocks_overflow_235: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 +.L_16_blocks_ok_235: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%ymm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %ymm30,%ymm4,%ymm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %ymm20,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %ymm29,%ymm4,%ymm20 + vextracti32x4 $1,%zmm20,%xmm7 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_236 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_236 +.L_small_initial_partial_block_236: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_236: + + orq %r8,%r8 + je .L_after_reduction_236 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_236: + jmp .L_last_blocks_done_216 +.L_last_num_blocks_is_11_216: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $245,%r15d + jae .L_16_blocks_overflow_237 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_237 + +.L_16_blocks_overflow_237: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_237: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vextracti32x4 $2,%zmm20,%xmm7 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_238 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_238 +.L_small_initial_partial_block_238: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_238: + + orq %r8,%r8 + je .L_after_reduction_238 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_238: + jmp .L_last_blocks_done_216 +.L_last_num_blocks_is_12_216: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $244,%r15d + jae .L_16_blocks_overflow_239 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_239 + +.L_16_blocks_overflow_239: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_239: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vextracti32x4 $3,%zmm20,%xmm7 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_240 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_240 +.L_small_initial_partial_block_240: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_240: + + orq %r8,%r8 + je .L_after_reduction_240 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_240: + jmp .L_last_blocks_done_216 +.L_last_num_blocks_is_13_216: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $243,%r15d + jae .L_16_blocks_overflow_241 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %xmm27,%xmm4,%xmm5 + jmp .L_16_blocks_ok_241 + +.L_16_blocks_overflow_241: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 +.L_16_blocks_ok_241: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%xmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %xmm30,%xmm5,%xmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %xmm21,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %xmm29,%xmm5,%xmm21 + vextracti32x4 $0,%zmm21,%xmm7 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_242 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_242 +.L_small_initial_partial_block_242: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_242: + + orq %r8,%r8 + je .L_after_reduction_242 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_242: + jmp .L_last_blocks_done_216 +.L_last_num_blocks_is_14_216: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $242,%r15d + jae .L_16_blocks_overflow_243 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %ymm27,%ymm4,%ymm5 + jmp .L_16_blocks_ok_243 + +.L_16_blocks_overflow_243: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 +.L_16_blocks_ok_243: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%ymm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %ymm30,%ymm5,%ymm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %ymm21,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %ymm29,%ymm5,%ymm21 + vextracti32x4 $1,%zmm21,%xmm7 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_244 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_244 +.L_small_initial_partial_block_244: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_244: + + orq %r8,%r8 + je .L_after_reduction_244 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_244: + jmp .L_last_blocks_done_216 +.L_last_num_blocks_is_15_216: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $241,%r15d + jae .L_16_blocks_overflow_245 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_245 + +.L_16_blocks_overflow_245: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_245: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %zmm29,%zmm5,%zmm21 + vextracti32x4 $2,%zmm21,%xmm7 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_246 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_246 +.L_small_initial_partial_block_246: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_246: + + orq %r8,%r8 + je .L_after_reduction_246 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_246: + jmp .L_last_blocks_done_216 +.L_last_num_blocks_is_16_216: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $240,%r15d + jae .L_16_blocks_overflow_247 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_247 + +.L_16_blocks_overflow_247: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_247: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %zmm29,%zmm5,%zmm21 + vextracti32x4 $3,%zmm21,%xmm7 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_248: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_248: + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_248: + jmp .L_last_blocks_done_216 +.L_last_num_blocks_is_0_216: + vmovdqa64 768(%rsp),%zmm13 + vpxorq %zmm14,%zmm13,%zmm13 + vmovdqu64 0(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 832(%rsp),%zmm13 + vmovdqu64 64(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpxorq %zmm10,%zmm4,%zmm26 + vpxorq %zmm6,%zmm0,%zmm24 + vpxorq %zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 896(%rsp),%zmm13 + vmovdqu64 128(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 960(%rsp),%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + +.L_last_blocks_done_216: + vpshufb %xmm29,%xmm2,%xmm2 + jmp .L_ghash_done_172 +.L_encrypt_16_blocks_172: + cmpb $240,%r15b + jae .L_16_blocks_overflow_249 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_249 +.L_16_blocks_overflow_249: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_249: + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm15,%zmm10,%zmm26 + vpxorq %zmm12,%zmm6,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1) + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqa64 %zmm0,1280(%rsp) + vmovdqa64 %zmm3,1344(%rsp) + vmovdqa64 %zmm4,1408(%rsp) + vmovdqa64 %zmm5,1472(%rsp) + vmovdqa64 1024(%rsp),%zmm13 + vmovdqu64 256(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1088(%rsp),%zmm13 + vmovdqu64 320(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 1152(%rsp),%zmm13 + vmovdqu64 384(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1216(%rsp),%zmm13 + vmovdqu64 448(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + subq $256,%r8 + addq $256,%r11 + movl %r8d,%r10d + addl $15,%r10d + shrl $4,%r10d + je .L_last_num_blocks_is_0_250 + + cmpl $8,%r10d + je .L_last_num_blocks_is_8_250 + jb .L_last_num_blocks_is_7_1_250 + + + cmpl $12,%r10d + je .L_last_num_blocks_is_12_250 + jb .L_last_num_blocks_is_11_9_250 + + + cmpl $15,%r10d + je .L_last_num_blocks_is_15_250 + ja .L_last_num_blocks_is_16_250 + cmpl $14,%r10d + je .L_last_num_blocks_is_14_250 + jmp .L_last_num_blocks_is_13_250 + +.L_last_num_blocks_is_11_9_250: + + cmpl $10,%r10d + je .L_last_num_blocks_is_10_250 + ja .L_last_num_blocks_is_11_250 + jmp .L_last_num_blocks_is_9_250 + +.L_last_num_blocks_is_7_1_250: + cmpl $4,%r10d + je .L_last_num_blocks_is_4_250 + jb .L_last_num_blocks_is_3_1_250 + + cmpl $6,%r10d + ja .L_last_num_blocks_is_7_250 + je .L_last_num_blocks_is_6_250 + jmp .L_last_num_blocks_is_5_250 + +.L_last_num_blocks_is_3_1_250: + + cmpl $2,%r10d + ja .L_last_num_blocks_is_3_250 + je .L_last_num_blocks_is_2_250 +.L_last_num_blocks_is_1_250: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $255,%r15d + jae .L_16_blocks_overflow_251 + vpaddd %xmm28,%xmm2,%xmm0 + jmp .L_16_blocks_ok_251 + +.L_16_blocks_overflow_251: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %xmm29,%xmm0,%xmm0 +.L_16_blocks_ok_251: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $0,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%xmm17{%k1}{z} + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %xmm31,%xmm0,%xmm0 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %xmm30,%xmm0,%xmm0 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %xmm29,%xmm0,%xmm17 + vextracti32x4 $0,%zmm17,%xmm7 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_252 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_252 +.L_small_initial_partial_block_252: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + + + + + + + + + + + + vpxorq %xmm7,%xmm14,%xmm14 + + jmp .L_after_reduction_252 +.L_small_initial_compute_done_252: +.L_after_reduction_252: + jmp .L_last_blocks_done_250 +.L_last_num_blocks_is_2_250: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $254,%r15d + jae .L_16_blocks_overflow_253 + vpaddd %ymm28,%ymm2,%ymm0 + jmp .L_16_blocks_ok_253 + +.L_16_blocks_overflow_253: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %ymm29,%ymm0,%ymm0 +.L_16_blocks_ok_253: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $1,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%ymm17{%k1}{z} + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %ymm31,%ymm0,%ymm0 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %ymm30,%ymm0,%ymm0 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %ymm29,%ymm0,%ymm17 + vextracti32x4 $1,%zmm17,%xmm7 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_254 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_254 +.L_small_initial_partial_block_254: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_254: + + orq %r8,%r8 + je .L_after_reduction_254 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_254: + jmp .L_last_blocks_done_250 +.L_last_num_blocks_is_3_250: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $253,%r15d + jae .L_16_blocks_overflow_255 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_255 + +.L_16_blocks_overflow_255: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_255: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $2,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vextracti32x4 $2,%zmm17,%xmm7 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_256 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_256 +.L_small_initial_partial_block_256: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_256: + + orq %r8,%r8 + je .L_after_reduction_256 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_256: + jmp .L_last_blocks_done_250 +.L_last_num_blocks_is_4_250: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $252,%r15d + jae .L_16_blocks_overflow_257 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_257 + +.L_16_blocks_overflow_257: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_257: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $3,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vextracti32x4 $3,%zmm17,%xmm7 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_258 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_258 +.L_small_initial_partial_block_258: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_258: + + orq %r8,%r8 + je .L_after_reduction_258 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_258: + jmp .L_last_blocks_done_250 +.L_last_num_blocks_is_5_250: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $251,%r15d + jae .L_16_blocks_overflow_259 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %xmm27,%xmm0,%xmm3 + jmp .L_16_blocks_ok_259 + +.L_16_blocks_overflow_259: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 +.L_16_blocks_ok_259: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $0,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%xmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %xmm30,%xmm3,%xmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %xmm19,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %xmm29,%xmm3,%xmm19 + vextracti32x4 $0,%zmm19,%xmm7 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_260 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_260 +.L_small_initial_partial_block_260: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_260: + + orq %r8,%r8 + je .L_after_reduction_260 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_260: + jmp .L_last_blocks_done_250 +.L_last_num_blocks_is_6_250: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $250,%r15d + jae .L_16_blocks_overflow_261 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %ymm27,%ymm0,%ymm3 + jmp .L_16_blocks_ok_261 + +.L_16_blocks_overflow_261: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 +.L_16_blocks_ok_261: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $1,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%ymm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %ymm30,%ymm3,%ymm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %ymm29,%ymm3,%ymm19 + vextracti32x4 $1,%zmm19,%xmm7 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_262 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_262 +.L_small_initial_partial_block_262: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_262: + + orq %r8,%r8 + je .L_after_reduction_262 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_262: + jmp .L_last_blocks_done_250 +.L_last_num_blocks_is_7_250: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $249,%r15d + jae .L_16_blocks_overflow_263 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_263 + +.L_16_blocks_overflow_263: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_263: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $2,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vextracti32x4 $2,%zmm19,%xmm7 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_264 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_264 +.L_small_initial_partial_block_264: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_264: + + orq %r8,%r8 + je .L_after_reduction_264 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_264: + jmp .L_last_blocks_done_250 +.L_last_num_blocks_is_8_250: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $248,%r15d + jae .L_16_blocks_overflow_265 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_265 + +.L_16_blocks_overflow_265: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_265: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $3,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vextracti32x4 $3,%zmm19,%xmm7 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_266 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_266 +.L_small_initial_partial_block_266: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_266: + + orq %r8,%r8 + je .L_after_reduction_266 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_266: + jmp .L_last_blocks_done_250 +.L_last_num_blocks_is_9_250: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $247,%r15d + jae .L_16_blocks_overflow_267 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %xmm27,%xmm3,%xmm4 + jmp .L_16_blocks_ok_267 + +.L_16_blocks_overflow_267: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 +.L_16_blocks_ok_267: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $0,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%xmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %xmm30,%xmm4,%xmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %xmm20,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %xmm29,%xmm4,%xmm20 + vextracti32x4 $0,%zmm20,%xmm7 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_268 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_268 +.L_small_initial_partial_block_268: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_268: + + orq %r8,%r8 + je .L_after_reduction_268 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_268: + jmp .L_last_blocks_done_250 +.L_last_num_blocks_is_10_250: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $246,%r15d + jae .L_16_blocks_overflow_269 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %ymm27,%ymm3,%ymm4 + jmp .L_16_blocks_ok_269 + +.L_16_blocks_overflow_269: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 +.L_16_blocks_ok_269: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $1,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%ymm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %ymm30,%ymm4,%ymm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %ymm20,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %ymm29,%ymm4,%ymm20 + vextracti32x4 $1,%zmm20,%xmm7 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_270 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_270 +.L_small_initial_partial_block_270: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_270: + + orq %r8,%r8 + je .L_after_reduction_270 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_270: + jmp .L_last_blocks_done_250 +.L_last_num_blocks_is_11_250: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $245,%r15d + jae .L_16_blocks_overflow_271 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_271 + +.L_16_blocks_overflow_271: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_271: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $2,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vextracti32x4 $2,%zmm20,%xmm7 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_272 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_272 +.L_small_initial_partial_block_272: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_272: + + orq %r8,%r8 + je .L_after_reduction_272 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_272: + jmp .L_last_blocks_done_250 +.L_last_num_blocks_is_12_250: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $244,%r15d + jae .L_16_blocks_overflow_273 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_273 + +.L_16_blocks_overflow_273: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_273: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $3,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vextracti32x4 $3,%zmm20,%xmm7 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_274 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_274 +.L_small_initial_partial_block_274: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_274: + + orq %r8,%r8 + je .L_after_reduction_274 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_274: + jmp .L_last_blocks_done_250 +.L_last_num_blocks_is_13_250: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $243,%r15d + jae .L_16_blocks_overflow_275 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %xmm27,%xmm4,%xmm5 + jmp .L_16_blocks_ok_275 + +.L_16_blocks_overflow_275: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 +.L_16_blocks_ok_275: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $0,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%xmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %xmm30,%xmm5,%xmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %xmm21,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %xmm29,%xmm5,%xmm21 + vextracti32x4 $0,%zmm21,%xmm7 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_276 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_276 +.L_small_initial_partial_block_276: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_276: + + orq %r8,%r8 + je .L_after_reduction_276 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_276: + jmp .L_last_blocks_done_250 +.L_last_num_blocks_is_14_250: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $242,%r15d + jae .L_16_blocks_overflow_277 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %ymm27,%ymm4,%ymm5 + jmp .L_16_blocks_ok_277 + +.L_16_blocks_overflow_277: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 +.L_16_blocks_ok_277: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $1,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%ymm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %ymm30,%ymm5,%ymm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %ymm21,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %ymm29,%ymm5,%ymm21 + vextracti32x4 $1,%zmm21,%xmm7 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_278 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_278 +.L_small_initial_partial_block_278: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_278: + + orq %r8,%r8 + je .L_after_reduction_278 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_278: + jmp .L_last_blocks_done_250 +.L_last_num_blocks_is_15_250: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $241,%r15d + jae .L_16_blocks_overflow_279 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_279 + +.L_16_blocks_overflow_279: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_279: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $2,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %zmm29,%zmm5,%zmm21 + vextracti32x4 $2,%zmm21,%xmm7 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_280 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_280 +.L_small_initial_partial_block_280: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_280: + + orq %r8,%r8 + je .L_after_reduction_280 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_280: + jmp .L_last_blocks_done_250 +.L_last_num_blocks_is_16_250: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $240,%r15d + jae .L_16_blocks_overflow_281 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_281 + +.L_16_blocks_overflow_281: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_281: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $3,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %zmm29,%zmm5,%zmm21 + vextracti32x4 $3,%zmm21,%xmm7 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_282: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_282: + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_282: + jmp .L_last_blocks_done_250 +.L_last_num_blocks_is_0_250: + vmovdqa64 1280(%rsp),%zmm13 + vmovdqu64 512(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1344(%rsp),%zmm13 + vmovdqu64 576(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 1408(%rsp),%zmm13 + vmovdqu64 640(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1472(%rsp),%zmm13 + vmovdqu64 704(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + +.L_last_blocks_done_250: + vpshufb %xmm29,%xmm2,%xmm2 + jmp .L_ghash_done_172 + +.L_message_below_32_blocks_172: + + + subq $256,%r8 + addq $256,%r11 + movl %r8d,%r10d + testq %r14,%r14 + jnz .L_skip_hkeys_precomputation_283 + vmovdqu64 640(%rsp),%zmm3 + + + vshufi64x2 $0x00,%zmm3,%zmm3,%zmm3 + + vmovdqu64 576(%rsp),%zmm4 + vmovdqu64 512(%rsp),%zmm5 + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,448(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,384(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,320(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,256(%rsp) +.L_skip_hkeys_precomputation_283: + movq $1,%r14 + andl $~15,%r10d + movl $512,%ebx + subl %r10d,%ebx + movl %r8d,%r10d + addl $15,%r10d + shrl $4,%r10d + je .L_last_num_blocks_is_0_284 + + cmpl $8,%r10d + je .L_last_num_blocks_is_8_284 + jb .L_last_num_blocks_is_7_1_284 + + + cmpl $12,%r10d + je .L_last_num_blocks_is_12_284 + jb .L_last_num_blocks_is_11_9_284 + + + cmpl $15,%r10d + je .L_last_num_blocks_is_15_284 + ja .L_last_num_blocks_is_16_284 + cmpl $14,%r10d + je .L_last_num_blocks_is_14_284 + jmp .L_last_num_blocks_is_13_284 + +.L_last_num_blocks_is_11_9_284: + + cmpl $10,%r10d + je .L_last_num_blocks_is_10_284 + ja .L_last_num_blocks_is_11_284 + jmp .L_last_num_blocks_is_9_284 + +.L_last_num_blocks_is_7_1_284: + cmpl $4,%r10d + je .L_last_num_blocks_is_4_284 + jb .L_last_num_blocks_is_3_1_284 + + cmpl $6,%r10d + ja .L_last_num_blocks_is_7_284 + je .L_last_num_blocks_is_6_284 + jmp .L_last_num_blocks_is_5_284 + +.L_last_num_blocks_is_3_1_284: + + cmpl $2,%r10d + ja .L_last_num_blocks_is_3_284 + je .L_last_num_blocks_is_2_284 +.L_last_num_blocks_is_1_284: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $255,%r15d + jae .L_16_blocks_overflow_285 + vpaddd %xmm28,%xmm2,%xmm0 + jmp .L_16_blocks_ok_285 + +.L_16_blocks_overflow_285: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %xmm29,%xmm0,%xmm0 +.L_16_blocks_ok_285: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%xmm17{%k1}{z} + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vaesenclast %xmm30,%xmm0,%xmm0 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %xmm29,%xmm0,%xmm17 + vextracti32x4 $0,%zmm17,%xmm7 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_286 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_286 +.L_small_initial_partial_block_286: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm0 + + + vpclmulqdq $0x01,%xmm25,%xmm0,%xmm3 + vpslldq $8,%xmm3,%xmm3 + vpxorq %xmm3,%xmm25,%xmm3 + + + vpclmulqdq $0x00,%xmm3,%xmm0,%xmm4 + vpsrldq $4,%xmm4,%xmm4 + vpclmulqdq $0x10,%xmm3,%xmm0,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm4,%xmm14 + + + + + + + + + + + + + vpxorq %xmm7,%xmm14,%xmm14 + + jmp .L_after_reduction_286 +.L_small_initial_compute_done_286: +.L_after_reduction_286: + jmp .L_last_blocks_done_284 +.L_last_num_blocks_is_2_284: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $254,%r15d + jae .L_16_blocks_overflow_287 + vpaddd %ymm28,%ymm2,%ymm0 + jmp .L_16_blocks_ok_287 + +.L_16_blocks_overflow_287: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %ymm29,%ymm0,%ymm0 +.L_16_blocks_ok_287: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%ymm17{%k1}{z} + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vaesenclast %ymm30,%ymm0,%ymm0 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %ymm29,%ymm0,%ymm17 + vextracti32x4 $1,%zmm17,%xmm7 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_288 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_288 +.L_small_initial_partial_block_288: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_288: + + orq %r8,%r8 + je .L_after_reduction_288 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_288: + jmp .L_last_blocks_done_284 +.L_last_num_blocks_is_3_284: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $253,%r15d + jae .L_16_blocks_overflow_289 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_289 + +.L_16_blocks_overflow_289: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_289: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vextracti32x4 $2,%zmm17,%xmm7 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_290 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_290 +.L_small_initial_partial_block_290: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_290: + + orq %r8,%r8 + je .L_after_reduction_290 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_290: + jmp .L_last_blocks_done_284 +.L_last_num_blocks_is_4_284: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $252,%r15d + jae .L_16_blocks_overflow_291 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_291 + +.L_16_blocks_overflow_291: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_291: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vextracti32x4 $3,%zmm17,%xmm7 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_292 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_292 +.L_small_initial_partial_block_292: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_292: + + orq %r8,%r8 + je .L_after_reduction_292 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_292: + jmp .L_last_blocks_done_284 +.L_last_num_blocks_is_5_284: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $251,%r15d + jae .L_16_blocks_overflow_293 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %xmm27,%xmm0,%xmm3 + jmp .L_16_blocks_ok_293 + +.L_16_blocks_overflow_293: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 +.L_16_blocks_ok_293: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%xmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %xmm30,%xmm3,%xmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %xmm19,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %xmm29,%xmm3,%xmm19 + vextracti32x4 $0,%zmm19,%xmm7 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_294 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_294 +.L_small_initial_partial_block_294: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_294: + + orq %r8,%r8 + je .L_after_reduction_294 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_294: + jmp .L_last_blocks_done_284 +.L_last_num_blocks_is_6_284: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $250,%r15d + jae .L_16_blocks_overflow_295 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %ymm27,%ymm0,%ymm3 + jmp .L_16_blocks_ok_295 + +.L_16_blocks_overflow_295: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 +.L_16_blocks_ok_295: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%ymm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %ymm30,%ymm3,%ymm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %ymm29,%ymm3,%ymm19 + vextracti32x4 $1,%zmm19,%xmm7 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_296 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_296 +.L_small_initial_partial_block_296: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_296: + + orq %r8,%r8 + je .L_after_reduction_296 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_296: + jmp .L_last_blocks_done_284 +.L_last_num_blocks_is_7_284: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $249,%r15d + jae .L_16_blocks_overflow_297 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_297 + +.L_16_blocks_overflow_297: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_297: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vextracti32x4 $2,%zmm19,%xmm7 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_298 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_298 +.L_small_initial_partial_block_298: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_298: + + orq %r8,%r8 + je .L_after_reduction_298 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_298: + jmp .L_last_blocks_done_284 +.L_last_num_blocks_is_8_284: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $248,%r15d + jae .L_16_blocks_overflow_299 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_299 + +.L_16_blocks_overflow_299: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_299: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vextracti32x4 $3,%zmm19,%xmm7 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_300 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_300 +.L_small_initial_partial_block_300: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_300: + + orq %r8,%r8 + je .L_after_reduction_300 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_300: + jmp .L_last_blocks_done_284 +.L_last_num_blocks_is_9_284: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $247,%r15d + jae .L_16_blocks_overflow_301 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %xmm27,%xmm3,%xmm4 + jmp .L_16_blocks_ok_301 + +.L_16_blocks_overflow_301: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 +.L_16_blocks_ok_301: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%xmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %xmm30,%xmm4,%xmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %xmm20,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %xmm29,%xmm4,%xmm20 + vextracti32x4 $0,%zmm20,%xmm7 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_302 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_302 +.L_small_initial_partial_block_302: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_302: + + orq %r8,%r8 + je .L_after_reduction_302 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_302: + jmp .L_last_blocks_done_284 +.L_last_num_blocks_is_10_284: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $246,%r15d + jae .L_16_blocks_overflow_303 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %ymm27,%ymm3,%ymm4 + jmp .L_16_blocks_ok_303 + +.L_16_blocks_overflow_303: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 +.L_16_blocks_ok_303: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%ymm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %ymm30,%ymm4,%ymm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %ymm20,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %ymm29,%ymm4,%ymm20 + vextracti32x4 $1,%zmm20,%xmm7 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_304 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_304 +.L_small_initial_partial_block_304: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_304: + + orq %r8,%r8 + je .L_after_reduction_304 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_304: + jmp .L_last_blocks_done_284 +.L_last_num_blocks_is_11_284: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $245,%r15d + jae .L_16_blocks_overflow_305 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_305 + +.L_16_blocks_overflow_305: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_305: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vextracti32x4 $2,%zmm20,%xmm7 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_306 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_306 +.L_small_initial_partial_block_306: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_306: + + orq %r8,%r8 + je .L_after_reduction_306 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_306: + jmp .L_last_blocks_done_284 +.L_last_num_blocks_is_12_284: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $244,%r15d + jae .L_16_blocks_overflow_307 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_307 + +.L_16_blocks_overflow_307: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_307: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vextracti32x4 $3,%zmm20,%xmm7 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_308 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_308 +.L_small_initial_partial_block_308: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_308: + + orq %r8,%r8 + je .L_after_reduction_308 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_308: + jmp .L_last_blocks_done_284 +.L_last_num_blocks_is_13_284: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $243,%r15d + jae .L_16_blocks_overflow_309 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %xmm27,%xmm4,%xmm5 + jmp .L_16_blocks_ok_309 + +.L_16_blocks_overflow_309: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 +.L_16_blocks_ok_309: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%xmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %xmm30,%xmm5,%xmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %xmm21,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %xmm29,%xmm5,%xmm21 + vextracti32x4 $0,%zmm21,%xmm7 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_310 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_310 +.L_small_initial_partial_block_310: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_310: + + orq %r8,%r8 + je .L_after_reduction_310 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_310: + jmp .L_last_blocks_done_284 +.L_last_num_blocks_is_14_284: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $242,%r15d + jae .L_16_blocks_overflow_311 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %ymm27,%ymm4,%ymm5 + jmp .L_16_blocks_ok_311 + +.L_16_blocks_overflow_311: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 +.L_16_blocks_ok_311: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%ymm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %ymm30,%ymm5,%ymm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %ymm21,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %ymm29,%ymm5,%ymm21 + vextracti32x4 $1,%zmm21,%xmm7 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_312 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_312 +.L_small_initial_partial_block_312: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_312: + + orq %r8,%r8 + je .L_after_reduction_312 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_312: + jmp .L_last_blocks_done_284 +.L_last_num_blocks_is_15_284: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $241,%r15d + jae .L_16_blocks_overflow_313 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_313 + +.L_16_blocks_overflow_313: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_313: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %zmm29,%zmm5,%zmm21 + vextracti32x4 $2,%zmm21,%xmm7 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_314 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_314 +.L_small_initial_partial_block_314: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_314: + + orq %r8,%r8 + je .L_after_reduction_314 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_314: + jmp .L_last_blocks_done_284 +.L_last_num_blocks_is_16_284: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $240,%r15d + jae .L_16_blocks_overflow_315 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_315 + +.L_16_blocks_overflow_315: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_315: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %zmm29,%zmm5,%zmm21 + vextracti32x4 $3,%zmm21,%xmm7 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_316: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_316: + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_316: + jmp .L_last_blocks_done_284 +.L_last_num_blocks_is_0_284: + vmovdqa64 768(%rsp),%zmm13 + vpxorq %zmm14,%zmm13,%zmm13 + vmovdqu64 0(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 832(%rsp),%zmm13 + vmovdqu64 64(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpxorq %zmm10,%zmm4,%zmm26 + vpxorq %zmm6,%zmm0,%zmm24 + vpxorq %zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 896(%rsp),%zmm13 + vmovdqu64 128(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 960(%rsp),%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + +.L_last_blocks_done_284: + vpshufb %xmm29,%xmm2,%xmm2 + jmp .L_ghash_done_172 + +.L_message_below_equal_16_blocks_172: + + + movl %r8d,%r12d + addl $15,%r12d + shrl $4,%r12d + cmpq $8,%r12 + je .L_small_initial_num_blocks_is_8_317 + jl .L_small_initial_num_blocks_is_7_1_317 + + + cmpq $12,%r12 + je .L_small_initial_num_blocks_is_12_317 + jl .L_small_initial_num_blocks_is_11_9_317 + + + cmpq $16,%r12 + je .L_small_initial_num_blocks_is_16_317 + cmpq $15,%r12 + je .L_small_initial_num_blocks_is_15_317 + cmpq $14,%r12 + je .L_small_initial_num_blocks_is_14_317 + jmp .L_small_initial_num_blocks_is_13_317 + +.L_small_initial_num_blocks_is_11_9_317: + + cmpq $11,%r12 + je .L_small_initial_num_blocks_is_11_317 + cmpq $10,%r12 + je .L_small_initial_num_blocks_is_10_317 + jmp .L_small_initial_num_blocks_is_9_317 + +.L_small_initial_num_blocks_is_7_1_317: + cmpq $4,%r12 + je .L_small_initial_num_blocks_is_4_317 + jl .L_small_initial_num_blocks_is_3_1_317 + + cmpq $7,%r12 + je .L_small_initial_num_blocks_is_7_317 + cmpq $6,%r12 + je .L_small_initial_num_blocks_is_6_317 + jmp .L_small_initial_num_blocks_is_5_317 + +.L_small_initial_num_blocks_is_3_1_317: + + cmpq $3,%r12 + je .L_small_initial_num_blocks_is_3_317 + cmpq $2,%r12 + je .L_small_initial_num_blocks_is_2_317 + + + + + +.L_small_initial_num_blocks_is_1_317: + vmovdqa64 SHUF_MASK(%rip),%xmm29 + vpaddd ONE(%rip),%xmm2,%xmm0 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $0,%zmm0,%xmm2 + vpshufb %xmm29,%xmm0,%xmm0 + vmovdqu8 0(%rcx,%r11,1),%xmm6{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %xmm15,%xmm0,%xmm0 + vpxorq %xmm6,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm12 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %xmm29,%xmm0,%xmm6 + vextracti32x4 $0,%zmm6,%xmm13 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_318 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm6,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm6,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm6,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm6,%xmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_318 +.L_small_initial_partial_block_318: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + + + + + + + + + + + + vpxorq %xmm13,%xmm14,%xmm14 + + jmp .L_after_reduction_318 +.L_small_initial_compute_done_318: +.L_after_reduction_318: + jmp .L_small_initial_blocks_encrypted_317 +.L_small_initial_num_blocks_is_2_317: + vmovdqa64 SHUF_MASK(%rip),%ymm29 + vshufi64x2 $0,%ymm2,%ymm2,%ymm0 + vpaddd ddq_add_1234(%rip),%ymm0,%ymm0 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $1,%zmm0,%xmm2 + vpshufb %ymm29,%ymm0,%ymm0 + vmovdqu8 0(%rcx,%r11,1),%ymm6{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %ymm15,%ymm0,%ymm0 + vpxorq %ymm6,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm12 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %ymm29,%ymm0,%ymm6 + vextracti32x4 $1,%zmm6,%xmm13 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_319 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm6,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm6,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm6,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm6,%ymm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_319 +.L_small_initial_partial_block_319: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm6,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm6,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm6,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm6,%xmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_319: + + orq %r8,%r8 + je .L_after_reduction_319 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_319: + jmp .L_small_initial_blocks_encrypted_317 +.L_small_initial_num_blocks_is_3_317: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $2,%zmm0,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vmovdqu8 0(%rcx,%r11,1),%zmm6{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vpxorq %zmm6,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vextracti32x4 $2,%zmm6,%xmm13 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_320 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_320 +.L_small_initial_partial_block_320: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm6,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm6,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm6,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm6,%ymm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_320: + + orq %r8,%r8 + je .L_after_reduction_320 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_320: + jmp .L_small_initial_blocks_encrypted_317 +.L_small_initial_num_blocks_is_4_317: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $3,%zmm0,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vmovdqu8 0(%rcx,%r11,1),%zmm6{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vpxorq %zmm6,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vextracti32x4 $3,%zmm6,%xmm13 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_321 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_321 +.L_small_initial_partial_block_321: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_321: + + orq %r8,%r8 + je .L_after_reduction_321 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_321: + jmp .L_small_initial_blocks_encrypted_317 +.L_small_initial_num_blocks_is_5_317: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $64,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $0,%zmm3,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%xmm7{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %xmm15,%xmm3,%xmm3 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %xmm7,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %xmm29,%xmm3,%xmm7 + vextracti32x4 $0,%zmm7,%xmm13 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_322 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm7,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm7,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm7,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm7,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_322 +.L_small_initial_partial_block_322: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_322: + + orq %r8,%r8 + je .L_after_reduction_322 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_322: + jmp .L_small_initial_blocks_encrypted_317 +.L_small_initial_num_blocks_is_6_317: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $64,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $1,%zmm3,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%ymm7{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %ymm15,%ymm3,%ymm3 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %ymm7,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %ymm29,%ymm3,%ymm7 + vextracti32x4 $1,%zmm7,%xmm13 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_323 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm7,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm7,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm7,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm7,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_323 +.L_small_initial_partial_block_323: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm7,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm7,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm7,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm7,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_323: + + orq %r8,%r8 + je .L_after_reduction_323 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_323: + jmp .L_small_initial_blocks_encrypted_317 +.L_small_initial_num_blocks_is_7_317: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $64,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $2,%zmm3,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vextracti32x4 $2,%zmm7,%xmm13 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_324 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_324 +.L_small_initial_partial_block_324: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm7,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm7,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm7,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm7,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_324: + + orq %r8,%r8 + je .L_after_reduction_324 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_324: + jmp .L_small_initial_blocks_encrypted_317 +.L_small_initial_num_blocks_is_8_317: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $64,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $3,%zmm3,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vextracti32x4 $3,%zmm7,%xmm13 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_325 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 224(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_325 +.L_small_initial_partial_block_325: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_325: + + orq %r8,%r8 + je .L_after_reduction_325 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_325: + jmp .L_small_initial_blocks_encrypted_317 +.L_small_initial_num_blocks_is_9_317: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $128,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $0,%zmm4,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%xmm10{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %xmm15,%xmm4,%xmm4 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %xmm10,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vpshufb %xmm29,%xmm4,%xmm10 + vextracti32x4 $0,%zmm10,%xmm13 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_326 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 208(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm10,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm10,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm10,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm10,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_326 +.L_small_initial_partial_block_326: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 224(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_326: + + orq %r8,%r8 + je .L_after_reduction_326 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_326: + jmp .L_small_initial_blocks_encrypted_317 +.L_small_initial_num_blocks_is_10_317: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $128,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $1,%zmm4,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%ymm10{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %ymm15,%ymm4,%ymm4 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %ymm10,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vpshufb %ymm29,%ymm4,%ymm10 + vextracti32x4 $1,%zmm10,%xmm13 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_327 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 192(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm10,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm10,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm10,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm10,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_327 +.L_small_initial_partial_block_327: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 208(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm10,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm10,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm10,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm10,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_327: + + orq %r8,%r8 + je .L_after_reduction_327 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_327: + jmp .L_small_initial_blocks_encrypted_317 +.L_small_initial_num_blocks_is_11_317: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $128,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $2,%zmm4,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vpshufb %zmm29,%zmm4,%zmm10 + vextracti32x4 $2,%zmm10,%xmm13 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_328 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 176(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_328 +.L_small_initial_partial_block_328: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 192(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm10,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm10,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm10,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm10,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_328: + + orq %r8,%r8 + je .L_after_reduction_328 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_328: + jmp .L_small_initial_blocks_encrypted_317 +.L_small_initial_num_blocks_is_12_317: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $128,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $3,%zmm4,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vpshufb %zmm29,%zmm4,%zmm10 + vextracti32x4 $3,%zmm10,%xmm13 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_329 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 160(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 224(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_329 +.L_small_initial_partial_block_329: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 176(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_329: + + orq %r8,%r8 + je .L_after_reduction_329 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_329: + jmp .L_small_initial_blocks_encrypted_317 +.L_small_initial_num_blocks_is_13_317: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + vpaddd ddq_add_8888(%rip),%zmm3,%zmm5 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $192,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $0,%zmm5,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10 + vmovdqu8 192(%rcx,%r11,1),%xmm11{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vpxorq %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vaesenclast %xmm15,%xmm5,%xmm5 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vpxorq %xmm11,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vpshufb %zmm29,%zmm4,%zmm10 + vpshufb %xmm29,%xmm5,%xmm11 + vextracti32x4 $0,%zmm11,%xmm13 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_330 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 144(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 208(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm11,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm11,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm11,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm11,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_330 +.L_small_initial_partial_block_330: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 160(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 224(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_330: + + orq %r8,%r8 + je .L_after_reduction_330 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_330: + jmp .L_small_initial_blocks_encrypted_317 +.L_small_initial_num_blocks_is_14_317: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + vpaddd ddq_add_8888(%rip),%zmm3,%zmm5 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $192,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $1,%zmm5,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10 + vmovdqu8 192(%rcx,%r11,1),%ymm11{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vpxorq %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vaesenclast %ymm15,%ymm5,%ymm5 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vpxorq %ymm11,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vpshufb %zmm29,%zmm4,%zmm10 + vpshufb %ymm29,%ymm5,%ymm11 + vextracti32x4 $1,%zmm11,%xmm13 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_331 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 128(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 192(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm11,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm11,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm11,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm11,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_331 +.L_small_initial_partial_block_331: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 144(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 208(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm11,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm11,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm11,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm11,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_331: + + orq %r8,%r8 + je .L_after_reduction_331 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_331: + jmp .L_small_initial_blocks_encrypted_317 +.L_small_initial_num_blocks_is_15_317: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + vpaddd ddq_add_8888(%rip),%zmm3,%zmm5 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $192,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $2,%zmm5,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10 + vmovdqu8 192(%rcx,%r11,1),%zmm11{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vpxorq %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vaesenclast %zmm15,%zmm5,%zmm5 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vpxorq %zmm11,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vpshufb %zmm29,%zmm4,%zmm10 + vpshufb %zmm29,%zmm5,%zmm11 + vextracti32x4 $2,%zmm11,%xmm13 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_332 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 112(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 176(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm11,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm11,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm11,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm11,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_332 +.L_small_initial_partial_block_332: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 128(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 192(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm11,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm11,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm11,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm11,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_332: + + orq %r8,%r8 + je .L_after_reduction_332 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_332: + jmp .L_small_initial_blocks_encrypted_317 +.L_small_initial_num_blocks_is_16_317: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + vpaddd ddq_add_8888(%rip),%zmm3,%zmm5 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $192,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $3,%zmm5,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10 + vmovdqu8 192(%rcx,%r11,1),%zmm11{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vpxorq %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vaesenclast %zmm15,%zmm5,%zmm5 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vpxorq %zmm11,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vpshufb %zmm29,%zmm4,%zmm10 + vpshufb %zmm29,%zmm5,%zmm11 + vextracti32x4 $3,%zmm11,%xmm13 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_333: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 112(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 176(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm11,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm11,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm11,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm11,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_333: + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_333: +.L_small_initial_blocks_encrypted_317: +.L_ghash_done_172: + vmovdqu64 %xmm2,0(%rsi) + vmovdqu64 %xmm14,64(%rsi) +.L_enc_dec_done_172: + jmp .Lexit_gcm_encrypt +.align 32 +.Laes_gcm_encrypt_256_avx512: + orq %r8,%r8 + je .L_enc_dec_done_334 + xorq %r14,%r14 + vmovdqu64 64(%rsi),%xmm14 + + movq (%rdx),%r11 + orq %r11,%r11 + je .L_partial_block_done_335 + movl $16,%r10d + leaq byte_len_to_mask_table(%rip),%r12 + cmpq %r10,%r8 + cmovcq %r8,%r10 + kmovw (%r12,%r10,2),%k1 + vmovdqu8 (%rcx),%xmm0{%k1}{z} + + vmovdqu64 16(%rsi),%xmm3 + vmovdqu64 336(%rsi),%xmm4 + + + + leaq SHIFT_MASK(%rip),%r12 + addq %r11,%r12 + vmovdqu64 (%r12),%xmm5 + vpshufb %xmm5,%xmm3,%xmm3 + vpxorq %xmm0,%xmm3,%xmm3 + + + leaq (%r8,%r11,1),%r13 + subq $16,%r13 + jge .L_no_extra_mask_335 + subq %r13,%r12 +.L_no_extra_mask_335: + + + + vmovdqu64 16(%r12),%xmm0 + vpand %xmm0,%xmm3,%xmm3 + vpshufb SHUF_MASK(%rip),%xmm3,%xmm3 + vpshufb %xmm5,%xmm3,%xmm3 + vpxorq %xmm3,%xmm14,%xmm14 + cmpq $0,%r13 + jl .L_partial_incomplete_335 + + vpclmulqdq $0x11,%xmm4,%xmm14,%xmm7 + vpclmulqdq $0x00,%xmm4,%xmm14,%xmm10 + vpclmulqdq $0x01,%xmm4,%xmm14,%xmm11 + vpclmulqdq $0x10,%xmm4,%xmm14,%xmm14 + vpxorq %xmm11,%xmm14,%xmm14 + + vpsrldq $8,%xmm14,%xmm11 + vpslldq $8,%xmm14,%xmm14 + vpxorq %xmm11,%xmm7,%xmm7 + vpxorq %xmm10,%xmm14,%xmm14 + + + + vmovdqu64 POLY2(%rip),%xmm11 + + vpclmulqdq $0x01,%xmm14,%xmm11,%xmm10 + vpslldq $8,%xmm10,%xmm10 + vpxorq %xmm10,%xmm14,%xmm14 + + + + vpclmulqdq $0x00,%xmm14,%xmm11,%xmm10 + vpsrldq $4,%xmm10,%xmm10 + vpclmulqdq $0x10,%xmm14,%xmm11,%xmm14 + vpslldq $4,%xmm14,%xmm14 + + vpternlogq $0x96,%xmm10,%xmm7,%xmm14 + + movq $0,(%rdx) + + movq %r11,%r12 + movq $16,%r11 + subq %r12,%r11 + jmp .L_enc_dec_done_335 + +.L_partial_incomplete_335: + addq %r8,(%rdx) + movq %r8,%r11 + +.L_enc_dec_done_335: + + + leaq byte_len_to_mask_table(%rip),%r12 + kmovw (%r12,%r11,2),%k1 + vmovdqu64 %xmm14,64(%rsi) + + vpshufb SHUF_MASK(%rip),%xmm3,%xmm3 + vpshufb %xmm5,%xmm3,%xmm3 + movq %r9,%r12 + vmovdqu8 %xmm3,(%r12){%k1} +.L_partial_block_done_335: + vmovdqu64 0(%rsi),%xmm2 + subq %r11,%r8 + je .L_enc_dec_done_334 + cmpq $256,%r8 + jbe .L_message_below_equal_16_blocks_334 + + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vmovdqa64 ddq_addbe_4444(%rip),%zmm27 + vmovdqa64 ddq_addbe_1234(%rip),%zmm28 + + + + + + + vmovd %xmm2,%r15d + andl $255,%r15d + + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpshufb %zmm29,%zmm2,%zmm2 + + + + cmpb $240,%r15b + jae .L_next_16_overflow_336 + vpaddd %zmm28,%zmm2,%zmm7 + vpaddd %zmm27,%zmm7,%zmm10 + vpaddd %zmm27,%zmm10,%zmm11 + vpaddd %zmm27,%zmm11,%zmm12 + jmp .L_next_16_ok_336 +.L_next_16_overflow_336: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm12 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm7 + vpaddd %zmm12,%zmm7,%zmm10 + vpaddd %zmm12,%zmm10,%zmm11 + vpaddd %zmm12,%zmm11,%zmm12 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %zmm29,%zmm11,%zmm11 + vpshufb %zmm29,%zmm12,%zmm12 +.L_next_16_ok_336: + vshufi64x2 $255,%zmm12,%zmm12,%zmm2 + addb $16,%r15b + + vmovdqu8 0(%rcx,%r11,1),%zmm0 + vmovdqu8 64(%rcx,%r11,1),%zmm3 + vmovdqu8 128(%rcx,%r11,1),%zmm4 + vmovdqu8 192(%rcx,%r11,1),%zmm5 + + + vbroadcastf64x2 0(%rdi),%zmm6 + vpxorq %zmm6,%zmm7,%zmm7 + vpxorq %zmm6,%zmm10,%zmm10 + vpxorq %zmm6,%zmm11,%zmm11 + vpxorq %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 16(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 32(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 48(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 64(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 80(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 96(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 112(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 128(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 144(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 160(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 176(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 192(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 208(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 224(%rdi),%zmm6 + vaesenclast %zmm6,%zmm7,%zmm7 + vaesenclast %zmm6,%zmm10,%zmm10 + vaesenclast %zmm6,%zmm11,%zmm11 + vaesenclast %zmm6,%zmm12,%zmm12 + + + vpxorq %zmm0,%zmm7,%zmm7 + vpxorq %zmm3,%zmm10,%zmm10 + vpxorq %zmm4,%zmm11,%zmm11 + vpxorq %zmm5,%zmm12,%zmm12 + + + movq %r9,%r10 + vmovdqu8 %zmm7,0(%r10,%r11,1) + vmovdqu8 %zmm10,64(%r10,%r11,1) + vmovdqu8 %zmm11,128(%r10,%r11,1) + vmovdqu8 %zmm12,192(%r10,%r11,1) + + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %zmm29,%zmm11,%zmm11 + vpshufb %zmm29,%zmm12,%zmm12 + vmovdqa64 %zmm7,768(%rsp) + vmovdqa64 %zmm10,832(%rsp) + vmovdqa64 %zmm11,896(%rsp) + vmovdqa64 %zmm12,960(%rsp) + testq %r14,%r14 + jnz .L_skip_hkeys_precomputation_337 + + vmovdqu64 288(%rsi),%zmm0 + vmovdqu64 %zmm0,704(%rsp) + + vmovdqu64 224(%rsi),%zmm3 + vmovdqu64 %zmm3,640(%rsp) + + + vshufi64x2 $0x00,%zmm3,%zmm3,%zmm3 + + vmovdqu64 160(%rsi),%zmm4 + vmovdqu64 %zmm4,576(%rsp) + + vmovdqu64 96(%rsi),%zmm5 + vmovdqu64 %zmm5,512(%rsp) +.L_skip_hkeys_precomputation_337: + cmpq $512,%r8 + jb .L_message_below_32_blocks_334 + + + + cmpb $240,%r15b + jae .L_next_16_overflow_338 + vpaddd %zmm28,%zmm2,%zmm7 + vpaddd %zmm27,%zmm7,%zmm10 + vpaddd %zmm27,%zmm10,%zmm11 + vpaddd %zmm27,%zmm11,%zmm12 + jmp .L_next_16_ok_338 +.L_next_16_overflow_338: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm12 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm7 + vpaddd %zmm12,%zmm7,%zmm10 + vpaddd %zmm12,%zmm10,%zmm11 + vpaddd %zmm12,%zmm11,%zmm12 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %zmm29,%zmm11,%zmm11 + vpshufb %zmm29,%zmm12,%zmm12 +.L_next_16_ok_338: + vshufi64x2 $255,%zmm12,%zmm12,%zmm2 + addb $16,%r15b + + vmovdqu8 256(%rcx,%r11,1),%zmm0 + vmovdqu8 320(%rcx,%r11,1),%zmm3 + vmovdqu8 384(%rcx,%r11,1),%zmm4 + vmovdqu8 448(%rcx,%r11,1),%zmm5 + + + vbroadcastf64x2 0(%rdi),%zmm6 + vpxorq %zmm6,%zmm7,%zmm7 + vpxorq %zmm6,%zmm10,%zmm10 + vpxorq %zmm6,%zmm11,%zmm11 + vpxorq %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 16(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 32(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 48(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 64(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 80(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 96(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 112(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 128(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 144(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 160(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 176(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 192(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 208(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 224(%rdi),%zmm6 + vaesenclast %zmm6,%zmm7,%zmm7 + vaesenclast %zmm6,%zmm10,%zmm10 + vaesenclast %zmm6,%zmm11,%zmm11 + vaesenclast %zmm6,%zmm12,%zmm12 + + + vpxorq %zmm0,%zmm7,%zmm7 + vpxorq %zmm3,%zmm10,%zmm10 + vpxorq %zmm4,%zmm11,%zmm11 + vpxorq %zmm5,%zmm12,%zmm12 + + + movq %r9,%r10 + vmovdqu8 %zmm7,256(%r10,%r11,1) + vmovdqu8 %zmm10,320(%r10,%r11,1) + vmovdqu8 %zmm11,384(%r10,%r11,1) + vmovdqu8 %zmm12,448(%r10,%r11,1) + + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %zmm29,%zmm11,%zmm11 + vpshufb %zmm29,%zmm12,%zmm12 + vmovdqa64 %zmm7,1024(%rsp) + vmovdqa64 %zmm10,1088(%rsp) + vmovdqa64 %zmm11,1152(%rsp) + vmovdqa64 %zmm12,1216(%rsp) + testq %r14,%r14 + jnz .L_skip_hkeys_precomputation_339 + vmovdqu64 640(%rsp),%zmm3 + + + vshufi64x2 $0x00,%zmm3,%zmm3,%zmm3 + + vmovdqu64 576(%rsp),%zmm4 + vmovdqu64 512(%rsp),%zmm5 + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,448(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,384(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,320(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,256(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,192(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,128(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,64(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,0(%rsp) +.L_skip_hkeys_precomputation_339: + movq $1,%r14 + addq $512,%r11 + subq $512,%r8 + + cmpq $768,%r8 + jb .L_no_more_big_nblocks_334 +.L_encrypt_big_nblocks_334: + cmpb $240,%r15b + jae .L_16_blocks_overflow_340 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_340 +.L_16_blocks_overflow_340: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_340: + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm15,%zmm10,%zmm26 + vpxorq %zmm12,%zmm6,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1) + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqa64 %zmm0,1280(%rsp) + vmovdqa64 %zmm3,1344(%rsp) + vmovdqa64 %zmm4,1408(%rsp) + vmovdqa64 %zmm5,1472(%rsp) + cmpb $240,%r15b + jae .L_16_blocks_overflow_341 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_341 +.L_16_blocks_overflow_341: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_341: + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 256(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 320(%rsp),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 384(%rsp),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 448(%rsp),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 256(%rcx,%r11,1),%zmm17 + vmovdqu8 320(%rcx,%r11,1),%zmm19 + vmovdqu8 384(%rcx,%r11,1),%zmm20 + vmovdqu8 448(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vpternlogq $0x96,%zmm12,%zmm6,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,256(%r10,%r11,1) + vmovdqu8 %zmm3,320(%r10,%r11,1) + vmovdqu8 %zmm4,384(%r10,%r11,1) + vmovdqu8 %zmm5,448(%r10,%r11,1) + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqa64 %zmm0,768(%rsp) + vmovdqa64 %zmm3,832(%rsp) + vmovdqa64 %zmm4,896(%rsp) + vmovdqa64 %zmm5,960(%rsp) + cmpb $240,%r15b + jae .L_16_blocks_overflow_342 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_342 +.L_16_blocks_overflow_342: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_342: + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 512(%rcx,%r11,1),%zmm17 + vmovdqu8 576(%rcx,%r11,1),%zmm19 + vmovdqu8 640(%rcx,%r11,1),%zmm20 + vmovdqu8 704(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + + + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpternlogq $0x96,%zmm15,%zmm12,%zmm6 + vpxorq %zmm24,%zmm6,%zmm6 + vpternlogq $0x96,%zmm10,%zmm13,%zmm7 + vpxorq %zmm25,%zmm7,%zmm7 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vextracti64x4 $1,%zmm6,%ymm12 + vpxorq %ymm12,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm12 + vpxorq %xmm12,%xmm6,%xmm6 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm6 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,512(%r10,%r11,1) + vmovdqu8 %zmm3,576(%r10,%r11,1) + vmovdqu8 %zmm4,640(%r10,%r11,1) + vmovdqu8 %zmm5,704(%r10,%r11,1) + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqa64 %zmm0,1024(%rsp) + vmovdqa64 %zmm3,1088(%rsp) + vmovdqa64 %zmm4,1152(%rsp) + vmovdqa64 %zmm5,1216(%rsp) + vmovdqa64 %zmm6,%zmm14 + + addq $768,%r11 + subq $768,%r8 + cmpq $768,%r8 + jae .L_encrypt_big_nblocks_334 + +.L_no_more_big_nblocks_334: + + cmpq $512,%r8 + jae .L_encrypt_32_blocks_334 + + cmpq $256,%r8 + jae .L_encrypt_16_blocks_334 +.L_encrypt_0_blocks_ghash_32_334: + movl %r8d,%r10d + andl $~15,%r10d + movl $256,%ebx + subl %r10d,%ebx + vmovdqa64 768(%rsp),%zmm13 + vpxorq %zmm14,%zmm13,%zmm13 + vmovdqu64 0(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 832(%rsp),%zmm13 + vmovdqu64 64(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpxorq %zmm10,%zmm4,%zmm26 + vpxorq %zmm6,%zmm0,%zmm24 + vpxorq %zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 896(%rsp),%zmm13 + vmovdqu64 128(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 960(%rsp),%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + addl $256,%ebx + movl %r8d,%r10d + addl $15,%r10d + shrl $4,%r10d + je .L_last_num_blocks_is_0_343 + + cmpl $8,%r10d + je .L_last_num_blocks_is_8_343 + jb .L_last_num_blocks_is_7_1_343 + + + cmpl $12,%r10d + je .L_last_num_blocks_is_12_343 + jb .L_last_num_blocks_is_11_9_343 + + + cmpl $15,%r10d + je .L_last_num_blocks_is_15_343 + ja .L_last_num_blocks_is_16_343 + cmpl $14,%r10d + je .L_last_num_blocks_is_14_343 + jmp .L_last_num_blocks_is_13_343 + +.L_last_num_blocks_is_11_9_343: + + cmpl $10,%r10d + je .L_last_num_blocks_is_10_343 + ja .L_last_num_blocks_is_11_343 + jmp .L_last_num_blocks_is_9_343 + +.L_last_num_blocks_is_7_1_343: + cmpl $4,%r10d + je .L_last_num_blocks_is_4_343 + jb .L_last_num_blocks_is_3_1_343 + + cmpl $6,%r10d + ja .L_last_num_blocks_is_7_343 + je .L_last_num_blocks_is_6_343 + jmp .L_last_num_blocks_is_5_343 + +.L_last_num_blocks_is_3_1_343: + + cmpl $2,%r10d + ja .L_last_num_blocks_is_3_343 + je .L_last_num_blocks_is_2_343 +.L_last_num_blocks_is_1_343: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $255,%r15d + jae .L_16_blocks_overflow_344 + vpaddd %xmm28,%xmm2,%xmm0 + jmp .L_16_blocks_ok_344 + +.L_16_blocks_overflow_344: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %xmm29,%xmm0,%xmm0 +.L_16_blocks_ok_344: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%xmm17{%k1}{z} + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vaesenclast %xmm30,%xmm0,%xmm0 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %xmm29,%xmm0,%xmm17 + vextracti32x4 $0,%zmm17,%xmm7 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_345 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_345 +.L_small_initial_partial_block_345: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm0 + + + vpclmulqdq $0x01,%xmm25,%xmm0,%xmm3 + vpslldq $8,%xmm3,%xmm3 + vpxorq %xmm3,%xmm25,%xmm3 + + + vpclmulqdq $0x00,%xmm3,%xmm0,%xmm4 + vpsrldq $4,%xmm4,%xmm4 + vpclmulqdq $0x10,%xmm3,%xmm0,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm4,%xmm14 + + + + + + + + + + + + + vpxorq %xmm7,%xmm14,%xmm14 + + jmp .L_after_reduction_345 +.L_small_initial_compute_done_345: +.L_after_reduction_345: + jmp .L_last_blocks_done_343 +.L_last_num_blocks_is_2_343: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $254,%r15d + jae .L_16_blocks_overflow_346 + vpaddd %ymm28,%ymm2,%ymm0 + jmp .L_16_blocks_ok_346 + +.L_16_blocks_overflow_346: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %ymm29,%ymm0,%ymm0 +.L_16_blocks_ok_346: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%ymm17{%k1}{z} + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vaesenclast %ymm30,%ymm0,%ymm0 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %ymm29,%ymm0,%ymm17 + vextracti32x4 $1,%zmm17,%xmm7 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_347 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_347 +.L_small_initial_partial_block_347: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_347: + + orq %r8,%r8 + je .L_after_reduction_347 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_347: + jmp .L_last_blocks_done_343 +.L_last_num_blocks_is_3_343: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $253,%r15d + jae .L_16_blocks_overflow_348 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_348 + +.L_16_blocks_overflow_348: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_348: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vextracti32x4 $2,%zmm17,%xmm7 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_349 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_349 +.L_small_initial_partial_block_349: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_349: + + orq %r8,%r8 + je .L_after_reduction_349 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_349: + jmp .L_last_blocks_done_343 +.L_last_num_blocks_is_4_343: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $252,%r15d + jae .L_16_blocks_overflow_350 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_350 + +.L_16_blocks_overflow_350: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_350: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vextracti32x4 $3,%zmm17,%xmm7 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_351 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_351 +.L_small_initial_partial_block_351: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_351: + + orq %r8,%r8 + je .L_after_reduction_351 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_351: + jmp .L_last_blocks_done_343 +.L_last_num_blocks_is_5_343: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $251,%r15d + jae .L_16_blocks_overflow_352 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %xmm27,%xmm0,%xmm3 + jmp .L_16_blocks_ok_352 + +.L_16_blocks_overflow_352: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 +.L_16_blocks_ok_352: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%xmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %xmm30,%xmm3,%xmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %xmm19,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %xmm29,%xmm3,%xmm19 + vextracti32x4 $0,%zmm19,%xmm7 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_353 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_353 +.L_small_initial_partial_block_353: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_353: + + orq %r8,%r8 + je .L_after_reduction_353 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_353: + jmp .L_last_blocks_done_343 +.L_last_num_blocks_is_6_343: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $250,%r15d + jae .L_16_blocks_overflow_354 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %ymm27,%ymm0,%ymm3 + jmp .L_16_blocks_ok_354 + +.L_16_blocks_overflow_354: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 +.L_16_blocks_ok_354: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%ymm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %ymm30,%ymm3,%ymm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %ymm29,%ymm3,%ymm19 + vextracti32x4 $1,%zmm19,%xmm7 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_355 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_355 +.L_small_initial_partial_block_355: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_355: + + orq %r8,%r8 + je .L_after_reduction_355 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_355: + jmp .L_last_blocks_done_343 +.L_last_num_blocks_is_7_343: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $249,%r15d + jae .L_16_blocks_overflow_356 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_356 + +.L_16_blocks_overflow_356: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_356: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vextracti32x4 $2,%zmm19,%xmm7 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_357 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_357 +.L_small_initial_partial_block_357: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_357: + + orq %r8,%r8 + je .L_after_reduction_357 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_357: + jmp .L_last_blocks_done_343 +.L_last_num_blocks_is_8_343: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $248,%r15d + jae .L_16_blocks_overflow_358 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_358 + +.L_16_blocks_overflow_358: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_358: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vextracti32x4 $3,%zmm19,%xmm7 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_359 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_359 +.L_small_initial_partial_block_359: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_359: + + orq %r8,%r8 + je .L_after_reduction_359 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_359: + jmp .L_last_blocks_done_343 +.L_last_num_blocks_is_9_343: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $247,%r15d + jae .L_16_blocks_overflow_360 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %xmm27,%xmm3,%xmm4 + jmp .L_16_blocks_ok_360 + +.L_16_blocks_overflow_360: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 +.L_16_blocks_ok_360: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%xmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %xmm30,%xmm4,%xmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %xmm20,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %xmm29,%xmm4,%xmm20 + vextracti32x4 $0,%zmm20,%xmm7 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_361 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_361 +.L_small_initial_partial_block_361: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_361: + + orq %r8,%r8 + je .L_after_reduction_361 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_361: + jmp .L_last_blocks_done_343 +.L_last_num_blocks_is_10_343: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $246,%r15d + jae .L_16_blocks_overflow_362 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %ymm27,%ymm3,%ymm4 + jmp .L_16_blocks_ok_362 + +.L_16_blocks_overflow_362: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 +.L_16_blocks_ok_362: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%ymm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %ymm30,%ymm4,%ymm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %ymm20,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %ymm29,%ymm4,%ymm20 + vextracti32x4 $1,%zmm20,%xmm7 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_363 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_363 +.L_small_initial_partial_block_363: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_363: + + orq %r8,%r8 + je .L_after_reduction_363 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_363: + jmp .L_last_blocks_done_343 +.L_last_num_blocks_is_11_343: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $245,%r15d + jae .L_16_blocks_overflow_364 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_364 + +.L_16_blocks_overflow_364: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_364: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vextracti32x4 $2,%zmm20,%xmm7 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_365 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_365 +.L_small_initial_partial_block_365: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_365: + + orq %r8,%r8 + je .L_after_reduction_365 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_365: + jmp .L_last_blocks_done_343 +.L_last_num_blocks_is_12_343: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $244,%r15d + jae .L_16_blocks_overflow_366 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_366 + +.L_16_blocks_overflow_366: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_366: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vextracti32x4 $3,%zmm20,%xmm7 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_367 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_367 +.L_small_initial_partial_block_367: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_367: + + orq %r8,%r8 + je .L_after_reduction_367 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_367: + jmp .L_last_blocks_done_343 +.L_last_num_blocks_is_13_343: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $243,%r15d + jae .L_16_blocks_overflow_368 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %xmm27,%xmm4,%xmm5 + jmp .L_16_blocks_ok_368 + +.L_16_blocks_overflow_368: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 +.L_16_blocks_ok_368: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%xmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %xmm30,%xmm5,%xmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %xmm21,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %xmm29,%xmm5,%xmm21 + vextracti32x4 $0,%zmm21,%xmm7 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_369 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_369 +.L_small_initial_partial_block_369: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_369: + + orq %r8,%r8 + je .L_after_reduction_369 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_369: + jmp .L_last_blocks_done_343 +.L_last_num_blocks_is_14_343: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $242,%r15d + jae .L_16_blocks_overflow_370 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %ymm27,%ymm4,%ymm5 + jmp .L_16_blocks_ok_370 + +.L_16_blocks_overflow_370: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 +.L_16_blocks_ok_370: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%ymm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %ymm30,%ymm5,%ymm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %ymm21,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %ymm29,%ymm5,%ymm21 + vextracti32x4 $1,%zmm21,%xmm7 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_371 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_371 +.L_small_initial_partial_block_371: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_371: + + orq %r8,%r8 + je .L_after_reduction_371 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_371: + jmp .L_last_blocks_done_343 +.L_last_num_blocks_is_15_343: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $241,%r15d + jae .L_16_blocks_overflow_372 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_372 + +.L_16_blocks_overflow_372: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_372: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %zmm29,%zmm5,%zmm21 + vextracti32x4 $2,%zmm21,%xmm7 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_373 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_373 +.L_small_initial_partial_block_373: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_373: + + orq %r8,%r8 + je .L_after_reduction_373 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_373: + jmp .L_last_blocks_done_343 +.L_last_num_blocks_is_16_343: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $240,%r15d + jae .L_16_blocks_overflow_374 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_374 + +.L_16_blocks_overflow_374: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_374: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %zmm29,%zmm5,%zmm21 + vextracti32x4 $3,%zmm21,%xmm7 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_375: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_375: + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_375: + jmp .L_last_blocks_done_343 +.L_last_num_blocks_is_0_343: + vmovdqa64 1024(%rsp),%zmm13 + vmovdqu64 0(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1088(%rsp),%zmm13 + vmovdqu64 64(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 1152(%rsp),%zmm13 + vmovdqu64 128(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1216(%rsp),%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + +.L_last_blocks_done_343: + vpshufb %xmm29,%xmm2,%xmm2 + jmp .L_ghash_done_334 +.L_encrypt_32_blocks_334: + cmpb $240,%r15b + jae .L_16_blocks_overflow_376 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_376 +.L_16_blocks_overflow_376: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_376: + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm15,%zmm10,%zmm26 + vpxorq %zmm12,%zmm6,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1) + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqa64 %zmm0,1280(%rsp) + vmovdqa64 %zmm3,1344(%rsp) + vmovdqa64 %zmm4,1408(%rsp) + vmovdqa64 %zmm5,1472(%rsp) + cmpb $240,%r15b + jae .L_16_blocks_overflow_377 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_377 +.L_16_blocks_overflow_377: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_377: + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 256(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 320(%rsp),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 384(%rsp),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 448(%rsp),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 256(%rcx,%r11,1),%zmm17 + vmovdqu8 320(%rcx,%r11,1),%zmm19 + vmovdqu8 384(%rcx,%r11,1),%zmm20 + vmovdqu8 448(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vpternlogq $0x96,%zmm12,%zmm6,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,256(%r10,%r11,1) + vmovdqu8 %zmm3,320(%r10,%r11,1) + vmovdqu8 %zmm4,384(%r10,%r11,1) + vmovdqu8 %zmm5,448(%r10,%r11,1) + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqa64 %zmm0,768(%rsp) + vmovdqa64 %zmm3,832(%rsp) + vmovdqa64 %zmm4,896(%rsp) + vmovdqa64 %zmm5,960(%rsp) + vmovdqa64 1280(%rsp),%zmm13 + vmovdqu64 512(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1344(%rsp),%zmm13 + vmovdqu64 576(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 1408(%rsp),%zmm13 + vmovdqu64 640(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1472(%rsp),%zmm13 + vmovdqu64 704(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + + subq $512,%r8 + addq $512,%r11 + movl %r8d,%r10d + andl $~15,%r10d + movl $512,%ebx + subl %r10d,%ebx + movl %r8d,%r10d + addl $15,%r10d + shrl $4,%r10d + je .L_last_num_blocks_is_0_378 + + cmpl $8,%r10d + je .L_last_num_blocks_is_8_378 + jb .L_last_num_blocks_is_7_1_378 + + + cmpl $12,%r10d + je .L_last_num_blocks_is_12_378 + jb .L_last_num_blocks_is_11_9_378 + + + cmpl $15,%r10d + je .L_last_num_blocks_is_15_378 + ja .L_last_num_blocks_is_16_378 + cmpl $14,%r10d + je .L_last_num_blocks_is_14_378 + jmp .L_last_num_blocks_is_13_378 + +.L_last_num_blocks_is_11_9_378: + + cmpl $10,%r10d + je .L_last_num_blocks_is_10_378 + ja .L_last_num_blocks_is_11_378 + jmp .L_last_num_blocks_is_9_378 + +.L_last_num_blocks_is_7_1_378: + cmpl $4,%r10d + je .L_last_num_blocks_is_4_378 + jb .L_last_num_blocks_is_3_1_378 + + cmpl $6,%r10d + ja .L_last_num_blocks_is_7_378 + je .L_last_num_blocks_is_6_378 + jmp .L_last_num_blocks_is_5_378 + +.L_last_num_blocks_is_3_1_378: + + cmpl $2,%r10d + ja .L_last_num_blocks_is_3_378 + je .L_last_num_blocks_is_2_378 +.L_last_num_blocks_is_1_378: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $255,%r15d + jae .L_16_blocks_overflow_379 + vpaddd %xmm28,%xmm2,%xmm0 + jmp .L_16_blocks_ok_379 + +.L_16_blocks_overflow_379: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %xmm29,%xmm0,%xmm0 +.L_16_blocks_ok_379: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%xmm17{%k1}{z} + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vaesenclast %xmm30,%xmm0,%xmm0 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %xmm29,%xmm0,%xmm17 + vextracti32x4 $0,%zmm17,%xmm7 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_380 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_380 +.L_small_initial_partial_block_380: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm0 + + + vpclmulqdq $0x01,%xmm25,%xmm0,%xmm3 + vpslldq $8,%xmm3,%xmm3 + vpxorq %xmm3,%xmm25,%xmm3 + + + vpclmulqdq $0x00,%xmm3,%xmm0,%xmm4 + vpsrldq $4,%xmm4,%xmm4 + vpclmulqdq $0x10,%xmm3,%xmm0,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm4,%xmm14 + + + + + + + + + + + + + vpxorq %xmm7,%xmm14,%xmm14 + + jmp .L_after_reduction_380 +.L_small_initial_compute_done_380: +.L_after_reduction_380: + jmp .L_last_blocks_done_378 +.L_last_num_blocks_is_2_378: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $254,%r15d + jae .L_16_blocks_overflow_381 + vpaddd %ymm28,%ymm2,%ymm0 + jmp .L_16_blocks_ok_381 + +.L_16_blocks_overflow_381: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %ymm29,%ymm0,%ymm0 +.L_16_blocks_ok_381: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%ymm17{%k1}{z} + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vaesenclast %ymm30,%ymm0,%ymm0 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %ymm29,%ymm0,%ymm17 + vextracti32x4 $1,%zmm17,%xmm7 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_382 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_382 +.L_small_initial_partial_block_382: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_382: + + orq %r8,%r8 + je .L_after_reduction_382 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_382: + jmp .L_last_blocks_done_378 +.L_last_num_blocks_is_3_378: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $253,%r15d + jae .L_16_blocks_overflow_383 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_383 + +.L_16_blocks_overflow_383: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_383: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vextracti32x4 $2,%zmm17,%xmm7 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_384 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_384 +.L_small_initial_partial_block_384: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_384: + + orq %r8,%r8 + je .L_after_reduction_384 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_384: + jmp .L_last_blocks_done_378 +.L_last_num_blocks_is_4_378: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $252,%r15d + jae .L_16_blocks_overflow_385 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_385 + +.L_16_blocks_overflow_385: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_385: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vextracti32x4 $3,%zmm17,%xmm7 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_386 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_386 +.L_small_initial_partial_block_386: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_386: + + orq %r8,%r8 + je .L_after_reduction_386 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_386: + jmp .L_last_blocks_done_378 +.L_last_num_blocks_is_5_378: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $251,%r15d + jae .L_16_blocks_overflow_387 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %xmm27,%xmm0,%xmm3 + jmp .L_16_blocks_ok_387 + +.L_16_blocks_overflow_387: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 +.L_16_blocks_ok_387: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%xmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %xmm30,%xmm3,%xmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %xmm19,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %xmm29,%xmm3,%xmm19 + vextracti32x4 $0,%zmm19,%xmm7 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_388 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_388 +.L_small_initial_partial_block_388: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_388: + + orq %r8,%r8 + je .L_after_reduction_388 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_388: + jmp .L_last_blocks_done_378 +.L_last_num_blocks_is_6_378: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $250,%r15d + jae .L_16_blocks_overflow_389 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %ymm27,%ymm0,%ymm3 + jmp .L_16_blocks_ok_389 + +.L_16_blocks_overflow_389: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 +.L_16_blocks_ok_389: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%ymm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %ymm30,%ymm3,%ymm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %ymm29,%ymm3,%ymm19 + vextracti32x4 $1,%zmm19,%xmm7 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_390 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_390 +.L_small_initial_partial_block_390: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_390: + + orq %r8,%r8 + je .L_after_reduction_390 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_390: + jmp .L_last_blocks_done_378 +.L_last_num_blocks_is_7_378: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $249,%r15d + jae .L_16_blocks_overflow_391 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_391 + +.L_16_blocks_overflow_391: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_391: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vextracti32x4 $2,%zmm19,%xmm7 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_392 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_392 +.L_small_initial_partial_block_392: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_392: + + orq %r8,%r8 + je .L_after_reduction_392 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_392: + jmp .L_last_blocks_done_378 +.L_last_num_blocks_is_8_378: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $248,%r15d + jae .L_16_blocks_overflow_393 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_393 + +.L_16_blocks_overflow_393: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_393: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vextracti32x4 $3,%zmm19,%xmm7 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_394 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_394 +.L_small_initial_partial_block_394: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_394: + + orq %r8,%r8 + je .L_after_reduction_394 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_394: + jmp .L_last_blocks_done_378 +.L_last_num_blocks_is_9_378: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $247,%r15d + jae .L_16_blocks_overflow_395 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %xmm27,%xmm3,%xmm4 + jmp .L_16_blocks_ok_395 + +.L_16_blocks_overflow_395: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 +.L_16_blocks_ok_395: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%xmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %xmm30,%xmm4,%xmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %xmm20,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %xmm29,%xmm4,%xmm20 + vextracti32x4 $0,%zmm20,%xmm7 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_396 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_396 +.L_small_initial_partial_block_396: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_396: + + orq %r8,%r8 + je .L_after_reduction_396 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_396: + jmp .L_last_blocks_done_378 +.L_last_num_blocks_is_10_378: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $246,%r15d + jae .L_16_blocks_overflow_397 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %ymm27,%ymm3,%ymm4 + jmp .L_16_blocks_ok_397 + +.L_16_blocks_overflow_397: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 +.L_16_blocks_ok_397: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%ymm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %ymm30,%ymm4,%ymm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %ymm20,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %ymm29,%ymm4,%ymm20 + vextracti32x4 $1,%zmm20,%xmm7 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_398 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_398 +.L_small_initial_partial_block_398: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_398: + + orq %r8,%r8 + je .L_after_reduction_398 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_398: + jmp .L_last_blocks_done_378 +.L_last_num_blocks_is_11_378: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $245,%r15d + jae .L_16_blocks_overflow_399 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_399 + +.L_16_blocks_overflow_399: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_399: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vextracti32x4 $2,%zmm20,%xmm7 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_400 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_400 +.L_small_initial_partial_block_400: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_400: + + orq %r8,%r8 + je .L_after_reduction_400 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_400: + jmp .L_last_blocks_done_378 +.L_last_num_blocks_is_12_378: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $244,%r15d + jae .L_16_blocks_overflow_401 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_401 + +.L_16_blocks_overflow_401: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_401: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vextracti32x4 $3,%zmm20,%xmm7 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_402 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_402 +.L_small_initial_partial_block_402: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_402: + + orq %r8,%r8 + je .L_after_reduction_402 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_402: + jmp .L_last_blocks_done_378 +.L_last_num_blocks_is_13_378: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $243,%r15d + jae .L_16_blocks_overflow_403 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %xmm27,%xmm4,%xmm5 + jmp .L_16_blocks_ok_403 + +.L_16_blocks_overflow_403: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 +.L_16_blocks_ok_403: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%xmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %xmm30,%xmm5,%xmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %xmm21,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %xmm29,%xmm5,%xmm21 + vextracti32x4 $0,%zmm21,%xmm7 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_404 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_404 +.L_small_initial_partial_block_404: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_404: + + orq %r8,%r8 + je .L_after_reduction_404 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_404: + jmp .L_last_blocks_done_378 +.L_last_num_blocks_is_14_378: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $242,%r15d + jae .L_16_blocks_overflow_405 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %ymm27,%ymm4,%ymm5 + jmp .L_16_blocks_ok_405 + +.L_16_blocks_overflow_405: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 +.L_16_blocks_ok_405: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%ymm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %ymm30,%ymm5,%ymm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %ymm21,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %ymm29,%ymm5,%ymm21 + vextracti32x4 $1,%zmm21,%xmm7 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_406 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_406 +.L_small_initial_partial_block_406: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_406: + + orq %r8,%r8 + je .L_after_reduction_406 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_406: + jmp .L_last_blocks_done_378 +.L_last_num_blocks_is_15_378: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $241,%r15d + jae .L_16_blocks_overflow_407 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_407 + +.L_16_blocks_overflow_407: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_407: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %zmm29,%zmm5,%zmm21 + vextracti32x4 $2,%zmm21,%xmm7 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_408 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_408 +.L_small_initial_partial_block_408: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_408: + + orq %r8,%r8 + je .L_after_reduction_408 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_408: + jmp .L_last_blocks_done_378 +.L_last_num_blocks_is_16_378: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $240,%r15d + jae .L_16_blocks_overflow_409 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_409 + +.L_16_blocks_overflow_409: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_409: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %zmm29,%zmm5,%zmm21 + vextracti32x4 $3,%zmm21,%xmm7 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_410: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_410: + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_410: + jmp .L_last_blocks_done_378 +.L_last_num_blocks_is_0_378: + vmovdqa64 768(%rsp),%zmm13 + vpxorq %zmm14,%zmm13,%zmm13 + vmovdqu64 0(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 832(%rsp),%zmm13 + vmovdqu64 64(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpxorq %zmm10,%zmm4,%zmm26 + vpxorq %zmm6,%zmm0,%zmm24 + vpxorq %zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 896(%rsp),%zmm13 + vmovdqu64 128(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 960(%rsp),%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + +.L_last_blocks_done_378: + vpshufb %xmm29,%xmm2,%xmm2 + jmp .L_ghash_done_334 +.L_encrypt_16_blocks_334: + cmpb $240,%r15b + jae .L_16_blocks_overflow_411 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_411 +.L_16_blocks_overflow_411: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_411: + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm15,%zmm10,%zmm26 + vpxorq %zmm12,%zmm6,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1) + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqa64 %zmm0,1280(%rsp) + vmovdqa64 %zmm3,1344(%rsp) + vmovdqa64 %zmm4,1408(%rsp) + vmovdqa64 %zmm5,1472(%rsp) + vmovdqa64 1024(%rsp),%zmm13 + vmovdqu64 256(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1088(%rsp),%zmm13 + vmovdqu64 320(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 1152(%rsp),%zmm13 + vmovdqu64 384(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1216(%rsp),%zmm13 + vmovdqu64 448(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + subq $256,%r8 + addq $256,%r11 + movl %r8d,%r10d + addl $15,%r10d + shrl $4,%r10d + je .L_last_num_blocks_is_0_412 + + cmpl $8,%r10d + je .L_last_num_blocks_is_8_412 + jb .L_last_num_blocks_is_7_1_412 + + + cmpl $12,%r10d + je .L_last_num_blocks_is_12_412 + jb .L_last_num_blocks_is_11_9_412 + + + cmpl $15,%r10d + je .L_last_num_blocks_is_15_412 + ja .L_last_num_blocks_is_16_412 + cmpl $14,%r10d + je .L_last_num_blocks_is_14_412 + jmp .L_last_num_blocks_is_13_412 + +.L_last_num_blocks_is_11_9_412: + + cmpl $10,%r10d + je .L_last_num_blocks_is_10_412 + ja .L_last_num_blocks_is_11_412 + jmp .L_last_num_blocks_is_9_412 + +.L_last_num_blocks_is_7_1_412: + cmpl $4,%r10d + je .L_last_num_blocks_is_4_412 + jb .L_last_num_blocks_is_3_1_412 + + cmpl $6,%r10d + ja .L_last_num_blocks_is_7_412 + je .L_last_num_blocks_is_6_412 + jmp .L_last_num_blocks_is_5_412 + +.L_last_num_blocks_is_3_1_412: + + cmpl $2,%r10d + ja .L_last_num_blocks_is_3_412 + je .L_last_num_blocks_is_2_412 +.L_last_num_blocks_is_1_412: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $255,%r15d + jae .L_16_blocks_overflow_413 + vpaddd %xmm28,%xmm2,%xmm0 + jmp .L_16_blocks_ok_413 + +.L_16_blocks_overflow_413: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %xmm29,%xmm0,%xmm0 +.L_16_blocks_ok_413: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $0,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%xmm17{%k1}{z} + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %xmm31,%xmm0,%xmm0 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %xmm30,%xmm0,%xmm0 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %xmm29,%xmm0,%xmm17 + vextracti32x4 $0,%zmm17,%xmm7 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_414 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_414 +.L_small_initial_partial_block_414: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + + + + + + + + + + + + vpxorq %xmm7,%xmm14,%xmm14 + + jmp .L_after_reduction_414 +.L_small_initial_compute_done_414: +.L_after_reduction_414: + jmp .L_last_blocks_done_412 +.L_last_num_blocks_is_2_412: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $254,%r15d + jae .L_16_blocks_overflow_415 + vpaddd %ymm28,%ymm2,%ymm0 + jmp .L_16_blocks_ok_415 + +.L_16_blocks_overflow_415: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %ymm29,%ymm0,%ymm0 +.L_16_blocks_ok_415: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $1,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%ymm17{%k1}{z} + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %ymm31,%ymm0,%ymm0 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %ymm30,%ymm0,%ymm0 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %ymm29,%ymm0,%ymm17 + vextracti32x4 $1,%zmm17,%xmm7 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_416 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_416 +.L_small_initial_partial_block_416: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_416: + + orq %r8,%r8 + je .L_after_reduction_416 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_416: + jmp .L_last_blocks_done_412 +.L_last_num_blocks_is_3_412: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $253,%r15d + jae .L_16_blocks_overflow_417 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_417 + +.L_16_blocks_overflow_417: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_417: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $2,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vextracti32x4 $2,%zmm17,%xmm7 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_418 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_418 +.L_small_initial_partial_block_418: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_418: + + orq %r8,%r8 + je .L_after_reduction_418 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_418: + jmp .L_last_blocks_done_412 +.L_last_num_blocks_is_4_412: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $252,%r15d + jae .L_16_blocks_overflow_419 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_419 + +.L_16_blocks_overflow_419: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_419: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $3,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vextracti32x4 $3,%zmm17,%xmm7 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_420 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_420 +.L_small_initial_partial_block_420: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_420: + + orq %r8,%r8 + je .L_after_reduction_420 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_420: + jmp .L_last_blocks_done_412 +.L_last_num_blocks_is_5_412: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $251,%r15d + jae .L_16_blocks_overflow_421 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %xmm27,%xmm0,%xmm3 + jmp .L_16_blocks_ok_421 + +.L_16_blocks_overflow_421: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 +.L_16_blocks_ok_421: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $0,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%xmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %xmm30,%xmm3,%xmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %xmm19,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %xmm29,%xmm3,%xmm19 + vextracti32x4 $0,%zmm19,%xmm7 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_422 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_422 +.L_small_initial_partial_block_422: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_422: + + orq %r8,%r8 + je .L_after_reduction_422 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_422: + jmp .L_last_blocks_done_412 +.L_last_num_blocks_is_6_412: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $250,%r15d + jae .L_16_blocks_overflow_423 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %ymm27,%ymm0,%ymm3 + jmp .L_16_blocks_ok_423 + +.L_16_blocks_overflow_423: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 +.L_16_blocks_ok_423: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $1,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%ymm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %ymm30,%ymm3,%ymm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %ymm29,%ymm3,%ymm19 + vextracti32x4 $1,%zmm19,%xmm7 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_424 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_424 +.L_small_initial_partial_block_424: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_424: + + orq %r8,%r8 + je .L_after_reduction_424 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_424: + jmp .L_last_blocks_done_412 +.L_last_num_blocks_is_7_412: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $249,%r15d + jae .L_16_blocks_overflow_425 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_425 + +.L_16_blocks_overflow_425: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_425: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $2,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vextracti32x4 $2,%zmm19,%xmm7 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_426 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_426 +.L_small_initial_partial_block_426: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_426: + + orq %r8,%r8 + je .L_after_reduction_426 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_426: + jmp .L_last_blocks_done_412 +.L_last_num_blocks_is_8_412: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $248,%r15d + jae .L_16_blocks_overflow_427 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_427 + +.L_16_blocks_overflow_427: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_427: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $3,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vextracti32x4 $3,%zmm19,%xmm7 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_428 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_428 +.L_small_initial_partial_block_428: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_428: + + orq %r8,%r8 + je .L_after_reduction_428 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_428: + jmp .L_last_blocks_done_412 +.L_last_num_blocks_is_9_412: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $247,%r15d + jae .L_16_blocks_overflow_429 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %xmm27,%xmm3,%xmm4 + jmp .L_16_blocks_ok_429 + +.L_16_blocks_overflow_429: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 +.L_16_blocks_ok_429: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $0,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%xmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %xmm30,%xmm4,%xmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %xmm20,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %xmm29,%xmm4,%xmm20 + vextracti32x4 $0,%zmm20,%xmm7 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_430 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_430 +.L_small_initial_partial_block_430: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_430: + + orq %r8,%r8 + je .L_after_reduction_430 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_430: + jmp .L_last_blocks_done_412 +.L_last_num_blocks_is_10_412: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $246,%r15d + jae .L_16_blocks_overflow_431 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %ymm27,%ymm3,%ymm4 + jmp .L_16_blocks_ok_431 + +.L_16_blocks_overflow_431: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 +.L_16_blocks_ok_431: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $1,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%ymm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %ymm30,%ymm4,%ymm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %ymm20,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %ymm29,%ymm4,%ymm20 + vextracti32x4 $1,%zmm20,%xmm7 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_432 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_432 +.L_small_initial_partial_block_432: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_432: + + orq %r8,%r8 + je .L_after_reduction_432 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_432: + jmp .L_last_blocks_done_412 +.L_last_num_blocks_is_11_412: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $245,%r15d + jae .L_16_blocks_overflow_433 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_433 + +.L_16_blocks_overflow_433: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_433: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $2,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vextracti32x4 $2,%zmm20,%xmm7 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_434 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_434 +.L_small_initial_partial_block_434: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_434: + + orq %r8,%r8 + je .L_after_reduction_434 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_434: + jmp .L_last_blocks_done_412 +.L_last_num_blocks_is_12_412: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $244,%r15d + jae .L_16_blocks_overflow_435 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_435 + +.L_16_blocks_overflow_435: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_435: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $3,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vextracti32x4 $3,%zmm20,%xmm7 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_436 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_436 +.L_small_initial_partial_block_436: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_436: + + orq %r8,%r8 + je .L_after_reduction_436 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_436: + jmp .L_last_blocks_done_412 +.L_last_num_blocks_is_13_412: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $243,%r15d + jae .L_16_blocks_overflow_437 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %xmm27,%xmm4,%xmm5 + jmp .L_16_blocks_ok_437 + +.L_16_blocks_overflow_437: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 +.L_16_blocks_ok_437: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $0,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%xmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %xmm30,%xmm5,%xmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %xmm21,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %xmm29,%xmm5,%xmm21 + vextracti32x4 $0,%zmm21,%xmm7 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_438 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_438 +.L_small_initial_partial_block_438: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_438: + + orq %r8,%r8 + je .L_after_reduction_438 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_438: + jmp .L_last_blocks_done_412 +.L_last_num_blocks_is_14_412: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $242,%r15d + jae .L_16_blocks_overflow_439 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %ymm27,%ymm4,%ymm5 + jmp .L_16_blocks_ok_439 + +.L_16_blocks_overflow_439: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 +.L_16_blocks_ok_439: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $1,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%ymm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %ymm30,%ymm5,%ymm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %ymm21,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %ymm29,%ymm5,%ymm21 + vextracti32x4 $1,%zmm21,%xmm7 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_440 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_440 +.L_small_initial_partial_block_440: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_440: + + orq %r8,%r8 + je .L_after_reduction_440 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_440: + jmp .L_last_blocks_done_412 +.L_last_num_blocks_is_15_412: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $241,%r15d + jae .L_16_blocks_overflow_441 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_441 + +.L_16_blocks_overflow_441: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_441: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $2,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %zmm29,%zmm5,%zmm21 + vextracti32x4 $2,%zmm21,%xmm7 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_442 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_442 +.L_small_initial_partial_block_442: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_442: + + orq %r8,%r8 + je .L_after_reduction_442 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_442: + jmp .L_last_blocks_done_412 +.L_last_num_blocks_is_16_412: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $240,%r15d + jae .L_16_blocks_overflow_443 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_443 + +.L_16_blocks_overflow_443: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_443: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $3,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %zmm29,%zmm5,%zmm21 + vextracti32x4 $3,%zmm21,%xmm7 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_444: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_444: + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_444: + jmp .L_last_blocks_done_412 +.L_last_num_blocks_is_0_412: + vmovdqa64 1280(%rsp),%zmm13 + vmovdqu64 512(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1344(%rsp),%zmm13 + vmovdqu64 576(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 1408(%rsp),%zmm13 + vmovdqu64 640(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1472(%rsp),%zmm13 + vmovdqu64 704(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + +.L_last_blocks_done_412: + vpshufb %xmm29,%xmm2,%xmm2 + jmp .L_ghash_done_334 + +.L_message_below_32_blocks_334: + + + subq $256,%r8 + addq $256,%r11 + movl %r8d,%r10d + testq %r14,%r14 + jnz .L_skip_hkeys_precomputation_445 + vmovdqu64 640(%rsp),%zmm3 + + + vshufi64x2 $0x00,%zmm3,%zmm3,%zmm3 + + vmovdqu64 576(%rsp),%zmm4 + vmovdqu64 512(%rsp),%zmm5 + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,448(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,384(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,320(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,256(%rsp) +.L_skip_hkeys_precomputation_445: + movq $1,%r14 + andl $~15,%r10d + movl $512,%ebx + subl %r10d,%ebx + movl %r8d,%r10d + addl $15,%r10d + shrl $4,%r10d + je .L_last_num_blocks_is_0_446 + + cmpl $8,%r10d + je .L_last_num_blocks_is_8_446 + jb .L_last_num_blocks_is_7_1_446 + + + cmpl $12,%r10d + je .L_last_num_blocks_is_12_446 + jb .L_last_num_blocks_is_11_9_446 + + + cmpl $15,%r10d + je .L_last_num_blocks_is_15_446 + ja .L_last_num_blocks_is_16_446 + cmpl $14,%r10d + je .L_last_num_blocks_is_14_446 + jmp .L_last_num_blocks_is_13_446 + +.L_last_num_blocks_is_11_9_446: + + cmpl $10,%r10d + je .L_last_num_blocks_is_10_446 + ja .L_last_num_blocks_is_11_446 + jmp .L_last_num_blocks_is_9_446 + +.L_last_num_blocks_is_7_1_446: + cmpl $4,%r10d + je .L_last_num_blocks_is_4_446 + jb .L_last_num_blocks_is_3_1_446 + + cmpl $6,%r10d + ja .L_last_num_blocks_is_7_446 + je .L_last_num_blocks_is_6_446 + jmp .L_last_num_blocks_is_5_446 + +.L_last_num_blocks_is_3_1_446: + + cmpl $2,%r10d + ja .L_last_num_blocks_is_3_446 + je .L_last_num_blocks_is_2_446 +.L_last_num_blocks_is_1_446: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $255,%r15d + jae .L_16_blocks_overflow_447 + vpaddd %xmm28,%xmm2,%xmm0 + jmp .L_16_blocks_ok_447 + +.L_16_blocks_overflow_447: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %xmm29,%xmm0,%xmm0 +.L_16_blocks_ok_447: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%xmm17{%k1}{z} + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vaesenclast %xmm30,%xmm0,%xmm0 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %xmm29,%xmm0,%xmm17 + vextracti32x4 $0,%zmm17,%xmm7 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_448 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_448 +.L_small_initial_partial_block_448: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm0 + + + vpclmulqdq $0x01,%xmm25,%xmm0,%xmm3 + vpslldq $8,%xmm3,%xmm3 + vpxorq %xmm3,%xmm25,%xmm3 + + + vpclmulqdq $0x00,%xmm3,%xmm0,%xmm4 + vpsrldq $4,%xmm4,%xmm4 + vpclmulqdq $0x10,%xmm3,%xmm0,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm4,%xmm14 + + + + + + + + + + + + + vpxorq %xmm7,%xmm14,%xmm14 + + jmp .L_after_reduction_448 +.L_small_initial_compute_done_448: +.L_after_reduction_448: + jmp .L_last_blocks_done_446 +.L_last_num_blocks_is_2_446: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $254,%r15d + jae .L_16_blocks_overflow_449 + vpaddd %ymm28,%ymm2,%ymm0 + jmp .L_16_blocks_ok_449 + +.L_16_blocks_overflow_449: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %ymm29,%ymm0,%ymm0 +.L_16_blocks_ok_449: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%ymm17{%k1}{z} + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vaesenclast %ymm30,%ymm0,%ymm0 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %ymm29,%ymm0,%ymm17 + vextracti32x4 $1,%zmm17,%xmm7 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_450 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_450 +.L_small_initial_partial_block_450: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_450: + + orq %r8,%r8 + je .L_after_reduction_450 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_450: + jmp .L_last_blocks_done_446 +.L_last_num_blocks_is_3_446: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $253,%r15d + jae .L_16_blocks_overflow_451 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_451 + +.L_16_blocks_overflow_451: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_451: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vextracti32x4 $2,%zmm17,%xmm7 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_452 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_452 +.L_small_initial_partial_block_452: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_452: + + orq %r8,%r8 + je .L_after_reduction_452 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_452: + jmp .L_last_blocks_done_446 +.L_last_num_blocks_is_4_446: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $252,%r15d + jae .L_16_blocks_overflow_453 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_453 + +.L_16_blocks_overflow_453: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_453: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vextracti32x4 $3,%zmm17,%xmm7 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_454 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_454 +.L_small_initial_partial_block_454: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_454: + + orq %r8,%r8 + je .L_after_reduction_454 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_454: + jmp .L_last_blocks_done_446 +.L_last_num_blocks_is_5_446: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $251,%r15d + jae .L_16_blocks_overflow_455 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %xmm27,%xmm0,%xmm3 + jmp .L_16_blocks_ok_455 + +.L_16_blocks_overflow_455: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 +.L_16_blocks_ok_455: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%xmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %xmm30,%xmm3,%xmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %xmm19,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %xmm29,%xmm3,%xmm19 + vextracti32x4 $0,%zmm19,%xmm7 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_456 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_456 +.L_small_initial_partial_block_456: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_456: + + orq %r8,%r8 + je .L_after_reduction_456 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_456: + jmp .L_last_blocks_done_446 +.L_last_num_blocks_is_6_446: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $250,%r15d + jae .L_16_blocks_overflow_457 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %ymm27,%ymm0,%ymm3 + jmp .L_16_blocks_ok_457 + +.L_16_blocks_overflow_457: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 +.L_16_blocks_ok_457: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%ymm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %ymm30,%ymm3,%ymm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %ymm29,%ymm3,%ymm19 + vextracti32x4 $1,%zmm19,%xmm7 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_458 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_458 +.L_small_initial_partial_block_458: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_458: + + orq %r8,%r8 + je .L_after_reduction_458 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_458: + jmp .L_last_blocks_done_446 +.L_last_num_blocks_is_7_446: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $249,%r15d + jae .L_16_blocks_overflow_459 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_459 + +.L_16_blocks_overflow_459: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_459: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vextracti32x4 $2,%zmm19,%xmm7 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_460 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_460 +.L_small_initial_partial_block_460: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_460: + + orq %r8,%r8 + je .L_after_reduction_460 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_460: + jmp .L_last_blocks_done_446 +.L_last_num_blocks_is_8_446: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $248,%r15d + jae .L_16_blocks_overflow_461 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_461 + +.L_16_blocks_overflow_461: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_461: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vextracti32x4 $3,%zmm19,%xmm7 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_462 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_462 +.L_small_initial_partial_block_462: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_462: + + orq %r8,%r8 + je .L_after_reduction_462 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_462: + jmp .L_last_blocks_done_446 +.L_last_num_blocks_is_9_446: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $247,%r15d + jae .L_16_blocks_overflow_463 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %xmm27,%xmm3,%xmm4 + jmp .L_16_blocks_ok_463 + +.L_16_blocks_overflow_463: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 +.L_16_blocks_ok_463: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%xmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %xmm30,%xmm4,%xmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %xmm20,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %xmm29,%xmm4,%xmm20 + vextracti32x4 $0,%zmm20,%xmm7 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_464 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_464 +.L_small_initial_partial_block_464: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_464: + + orq %r8,%r8 + je .L_after_reduction_464 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_464: + jmp .L_last_blocks_done_446 +.L_last_num_blocks_is_10_446: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $246,%r15d + jae .L_16_blocks_overflow_465 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %ymm27,%ymm3,%ymm4 + jmp .L_16_blocks_ok_465 + +.L_16_blocks_overflow_465: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 +.L_16_blocks_ok_465: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%ymm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %ymm30,%ymm4,%ymm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %ymm20,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %ymm29,%ymm4,%ymm20 + vextracti32x4 $1,%zmm20,%xmm7 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_466 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_466 +.L_small_initial_partial_block_466: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_466: + + orq %r8,%r8 + je .L_after_reduction_466 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_466: + jmp .L_last_blocks_done_446 +.L_last_num_blocks_is_11_446: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $245,%r15d + jae .L_16_blocks_overflow_467 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_467 + +.L_16_blocks_overflow_467: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_467: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vextracti32x4 $2,%zmm20,%xmm7 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_468 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_468 +.L_small_initial_partial_block_468: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_468: + + orq %r8,%r8 + je .L_after_reduction_468 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_468: + jmp .L_last_blocks_done_446 +.L_last_num_blocks_is_12_446: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $244,%r15d + jae .L_16_blocks_overflow_469 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_469 + +.L_16_blocks_overflow_469: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_469: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vextracti32x4 $3,%zmm20,%xmm7 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_470 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_470 +.L_small_initial_partial_block_470: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_470: + + orq %r8,%r8 + je .L_after_reduction_470 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_470: + jmp .L_last_blocks_done_446 +.L_last_num_blocks_is_13_446: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $243,%r15d + jae .L_16_blocks_overflow_471 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %xmm27,%xmm4,%xmm5 + jmp .L_16_blocks_ok_471 + +.L_16_blocks_overflow_471: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 +.L_16_blocks_ok_471: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%xmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %xmm30,%xmm5,%xmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %xmm21,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %xmm29,%xmm5,%xmm21 + vextracti32x4 $0,%zmm21,%xmm7 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_472 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_472 +.L_small_initial_partial_block_472: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_472: + + orq %r8,%r8 + je .L_after_reduction_472 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_472: + jmp .L_last_blocks_done_446 +.L_last_num_blocks_is_14_446: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $242,%r15d + jae .L_16_blocks_overflow_473 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %ymm27,%ymm4,%ymm5 + jmp .L_16_blocks_ok_473 + +.L_16_blocks_overflow_473: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 +.L_16_blocks_ok_473: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%ymm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %ymm30,%ymm5,%ymm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %ymm21,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %ymm29,%ymm5,%ymm21 + vextracti32x4 $1,%zmm21,%xmm7 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_474 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_474 +.L_small_initial_partial_block_474: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_474: + + orq %r8,%r8 + je .L_after_reduction_474 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_474: + jmp .L_last_blocks_done_446 +.L_last_num_blocks_is_15_446: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $241,%r15d + jae .L_16_blocks_overflow_475 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_475 + +.L_16_blocks_overflow_475: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_475: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %zmm29,%zmm5,%zmm21 + vextracti32x4 $2,%zmm21,%xmm7 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_476 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_476 +.L_small_initial_partial_block_476: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_476: + + orq %r8,%r8 + je .L_after_reduction_476 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_476: + jmp .L_last_blocks_done_446 +.L_last_num_blocks_is_16_446: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $240,%r15d + jae .L_16_blocks_overflow_477 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_477 + +.L_16_blocks_overflow_477: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_477: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm17 + vpshufb %zmm29,%zmm3,%zmm19 + vpshufb %zmm29,%zmm4,%zmm20 + vpshufb %zmm29,%zmm5,%zmm21 + vextracti32x4 $3,%zmm21,%xmm7 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_478: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_478: + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_478: + jmp .L_last_blocks_done_446 +.L_last_num_blocks_is_0_446: + vmovdqa64 768(%rsp),%zmm13 + vpxorq %zmm14,%zmm13,%zmm13 + vmovdqu64 0(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 832(%rsp),%zmm13 + vmovdqu64 64(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpxorq %zmm10,%zmm4,%zmm26 + vpxorq %zmm6,%zmm0,%zmm24 + vpxorq %zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 896(%rsp),%zmm13 + vmovdqu64 128(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 960(%rsp),%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + +.L_last_blocks_done_446: + vpshufb %xmm29,%xmm2,%xmm2 + jmp .L_ghash_done_334 + +.L_message_below_equal_16_blocks_334: + + + movl %r8d,%r12d + addl $15,%r12d + shrl $4,%r12d + cmpq $8,%r12 + je .L_small_initial_num_blocks_is_8_479 + jl .L_small_initial_num_blocks_is_7_1_479 + + + cmpq $12,%r12 + je .L_small_initial_num_blocks_is_12_479 + jl .L_small_initial_num_blocks_is_11_9_479 + + + cmpq $16,%r12 + je .L_small_initial_num_blocks_is_16_479 + cmpq $15,%r12 + je .L_small_initial_num_blocks_is_15_479 + cmpq $14,%r12 + je .L_small_initial_num_blocks_is_14_479 + jmp .L_small_initial_num_blocks_is_13_479 + +.L_small_initial_num_blocks_is_11_9_479: + + cmpq $11,%r12 + je .L_small_initial_num_blocks_is_11_479 + cmpq $10,%r12 + je .L_small_initial_num_blocks_is_10_479 + jmp .L_small_initial_num_blocks_is_9_479 + +.L_small_initial_num_blocks_is_7_1_479: + cmpq $4,%r12 + je .L_small_initial_num_blocks_is_4_479 + jl .L_small_initial_num_blocks_is_3_1_479 + + cmpq $7,%r12 + je .L_small_initial_num_blocks_is_7_479 + cmpq $6,%r12 + je .L_small_initial_num_blocks_is_6_479 + jmp .L_small_initial_num_blocks_is_5_479 + +.L_small_initial_num_blocks_is_3_1_479: + + cmpq $3,%r12 + je .L_small_initial_num_blocks_is_3_479 + cmpq $2,%r12 + je .L_small_initial_num_blocks_is_2_479 + + + + + +.L_small_initial_num_blocks_is_1_479: + vmovdqa64 SHUF_MASK(%rip),%xmm29 + vpaddd ONE(%rip),%xmm2,%xmm0 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $0,%zmm0,%xmm2 + vpshufb %xmm29,%xmm0,%xmm0 + vmovdqu8 0(%rcx,%r11,1),%xmm6{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %xmm15,%xmm0,%xmm0 + vpxorq %xmm6,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm12 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %xmm29,%xmm0,%xmm6 + vextracti32x4 $0,%zmm6,%xmm13 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_480 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm6,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm6,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm6,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm6,%xmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_480 +.L_small_initial_partial_block_480: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + + + + + + + + + + + + vpxorq %xmm13,%xmm14,%xmm14 + + jmp .L_after_reduction_480 +.L_small_initial_compute_done_480: +.L_after_reduction_480: + jmp .L_small_initial_blocks_encrypted_479 +.L_small_initial_num_blocks_is_2_479: + vmovdqa64 SHUF_MASK(%rip),%ymm29 + vshufi64x2 $0,%ymm2,%ymm2,%ymm0 + vpaddd ddq_add_1234(%rip),%ymm0,%ymm0 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $1,%zmm0,%xmm2 + vpshufb %ymm29,%ymm0,%ymm0 + vmovdqu8 0(%rcx,%r11,1),%ymm6{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %ymm15,%ymm0,%ymm0 + vpxorq %ymm6,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm12 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %ymm29,%ymm0,%ymm6 + vextracti32x4 $1,%zmm6,%xmm13 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_481 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm6,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm6,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm6,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm6,%ymm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_481 +.L_small_initial_partial_block_481: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm6,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm6,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm6,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm6,%xmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_481: + + orq %r8,%r8 + je .L_after_reduction_481 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_481: + jmp .L_small_initial_blocks_encrypted_479 +.L_small_initial_num_blocks_is_3_479: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $2,%zmm0,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vmovdqu8 0(%rcx,%r11,1),%zmm6{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vpxorq %zmm6,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vextracti32x4 $2,%zmm6,%xmm13 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_482 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_482 +.L_small_initial_partial_block_482: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm6,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm6,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm6,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm6,%ymm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_482: + + orq %r8,%r8 + je .L_after_reduction_482 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_482: + jmp .L_small_initial_blocks_encrypted_479 +.L_small_initial_num_blocks_is_4_479: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $3,%zmm0,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vmovdqu8 0(%rcx,%r11,1),%zmm6{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vpxorq %zmm6,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vextracti32x4 $3,%zmm6,%xmm13 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_483 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_483 +.L_small_initial_partial_block_483: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_483: + + orq %r8,%r8 + je .L_after_reduction_483 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_483: + jmp .L_small_initial_blocks_encrypted_479 +.L_small_initial_num_blocks_is_5_479: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $64,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $0,%zmm3,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%xmm7{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %xmm15,%xmm3,%xmm3 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %xmm7,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %xmm29,%xmm3,%xmm7 + vextracti32x4 $0,%zmm7,%xmm13 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_484 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm7,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm7,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm7,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm7,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_484 +.L_small_initial_partial_block_484: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_484: + + orq %r8,%r8 + je .L_after_reduction_484 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_484: + jmp .L_small_initial_blocks_encrypted_479 +.L_small_initial_num_blocks_is_6_479: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $64,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $1,%zmm3,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%ymm7{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %ymm15,%ymm3,%ymm3 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %ymm7,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %ymm29,%ymm3,%ymm7 + vextracti32x4 $1,%zmm7,%xmm13 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_485 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm7,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm7,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm7,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm7,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_485 +.L_small_initial_partial_block_485: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm7,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm7,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm7,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm7,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_485: + + orq %r8,%r8 + je .L_after_reduction_485 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_485: + jmp .L_small_initial_blocks_encrypted_479 +.L_small_initial_num_blocks_is_7_479: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $64,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $2,%zmm3,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vextracti32x4 $2,%zmm7,%xmm13 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_486 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_486 +.L_small_initial_partial_block_486: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm7,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm7,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm7,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm7,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_486: + + orq %r8,%r8 + je .L_after_reduction_486 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_486: + jmp .L_small_initial_blocks_encrypted_479 +.L_small_initial_num_blocks_is_8_479: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $64,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $3,%zmm3,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vextracti32x4 $3,%zmm7,%xmm13 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_487 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 224(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_487 +.L_small_initial_partial_block_487: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_487: + + orq %r8,%r8 + je .L_after_reduction_487 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_487: + jmp .L_small_initial_blocks_encrypted_479 +.L_small_initial_num_blocks_is_9_479: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $128,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $0,%zmm4,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%xmm10{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %xmm15,%xmm4,%xmm4 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %xmm10,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vpshufb %xmm29,%xmm4,%xmm10 + vextracti32x4 $0,%zmm10,%xmm13 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_488 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 208(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm10,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm10,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm10,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm10,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_488 +.L_small_initial_partial_block_488: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 224(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_488: + + orq %r8,%r8 + je .L_after_reduction_488 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_488: + jmp .L_small_initial_blocks_encrypted_479 +.L_small_initial_num_blocks_is_10_479: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $128,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $1,%zmm4,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%ymm10{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %ymm15,%ymm4,%ymm4 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %ymm10,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vpshufb %ymm29,%ymm4,%ymm10 + vextracti32x4 $1,%zmm10,%xmm13 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_489 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 192(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm10,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm10,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm10,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm10,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_489 +.L_small_initial_partial_block_489: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 208(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm10,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm10,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm10,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm10,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_489: + + orq %r8,%r8 + je .L_after_reduction_489 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_489: + jmp .L_small_initial_blocks_encrypted_479 +.L_small_initial_num_blocks_is_11_479: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $128,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $2,%zmm4,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vpshufb %zmm29,%zmm4,%zmm10 + vextracti32x4 $2,%zmm10,%xmm13 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_490 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 176(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_490 +.L_small_initial_partial_block_490: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 192(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm10,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm10,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm10,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm10,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_490: + + orq %r8,%r8 + je .L_after_reduction_490 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_490: + jmp .L_small_initial_blocks_encrypted_479 +.L_small_initial_num_blocks_is_12_479: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $128,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $3,%zmm4,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vpshufb %zmm29,%zmm4,%zmm10 + vextracti32x4 $3,%zmm10,%xmm13 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_491 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 160(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 224(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_491 +.L_small_initial_partial_block_491: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 176(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_491: + + orq %r8,%r8 + je .L_after_reduction_491 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_491: + jmp .L_small_initial_blocks_encrypted_479 +.L_small_initial_num_blocks_is_13_479: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + vpaddd ddq_add_8888(%rip),%zmm3,%zmm5 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $192,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $0,%zmm5,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10 + vmovdqu8 192(%rcx,%r11,1),%xmm11{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vpxorq %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vaesenclast %xmm15,%xmm5,%xmm5 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vpxorq %xmm11,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vpshufb %zmm29,%zmm4,%zmm10 + vpshufb %xmm29,%xmm5,%xmm11 + vextracti32x4 $0,%zmm11,%xmm13 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_492 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 144(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 208(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm11,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm11,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm11,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm11,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_492 +.L_small_initial_partial_block_492: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 160(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 224(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_492: + + orq %r8,%r8 + je .L_after_reduction_492 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_492: + jmp .L_small_initial_blocks_encrypted_479 +.L_small_initial_num_blocks_is_14_479: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + vpaddd ddq_add_8888(%rip),%zmm3,%zmm5 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $192,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $1,%zmm5,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10 + vmovdqu8 192(%rcx,%r11,1),%ymm11{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vpxorq %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vaesenclast %ymm15,%ymm5,%ymm5 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vpxorq %ymm11,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vpshufb %zmm29,%zmm4,%zmm10 + vpshufb %ymm29,%ymm5,%ymm11 + vextracti32x4 $1,%zmm11,%xmm13 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_493 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 128(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 192(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm11,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm11,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm11,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm11,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_493 +.L_small_initial_partial_block_493: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 144(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 208(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm11,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm11,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm11,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm11,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_493: + + orq %r8,%r8 + je .L_after_reduction_493 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_493: + jmp .L_small_initial_blocks_encrypted_479 +.L_small_initial_num_blocks_is_15_479: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + vpaddd ddq_add_8888(%rip),%zmm3,%zmm5 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $192,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $2,%zmm5,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10 + vmovdqu8 192(%rcx,%r11,1),%zmm11{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vpxorq %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vaesenclast %zmm15,%zmm5,%zmm5 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vpxorq %zmm11,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vpshufb %zmm29,%zmm4,%zmm10 + vpshufb %zmm29,%zmm5,%zmm11 + vextracti32x4 $2,%zmm11,%xmm13 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_494 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 112(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 176(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm11,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm11,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm11,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm11,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_494 +.L_small_initial_partial_block_494: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 128(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 192(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm11,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm11,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm11,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm11,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_494: + + orq %r8,%r8 + je .L_after_reduction_494 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_494: + jmp .L_small_initial_blocks_encrypted_479 +.L_small_initial_num_blocks_is_16_479: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + vpaddd ddq_add_8888(%rip),%zmm3,%zmm5 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $192,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $3,%zmm5,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10 + vmovdqu8 192(%rcx,%r11,1),%zmm11{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vpxorq %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vaesenclast %zmm15,%zmm5,%zmm5 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vpxorq %zmm11,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm0,%zmm6 + vpshufb %zmm29,%zmm3,%zmm7 + vpshufb %zmm29,%zmm4,%zmm10 + vpshufb %zmm29,%zmm5,%zmm11 + vextracti32x4 $3,%zmm11,%xmm13 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_495: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 112(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 176(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm11,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm11,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm11,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm11,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_495: + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_495: +.L_small_initial_blocks_encrypted_479: +.L_ghash_done_334: + vmovdqu64 %xmm2,0(%rsi) + vmovdqu64 %xmm14,64(%rsi) +.L_enc_dec_done_334: + jmp .Lexit_gcm_encrypt +.Lexit_gcm_encrypt: + cmpq $256,%r8 + jbe .Lskip_hkeys_cleanup_496 + vpxor %xmm0,%xmm0,%xmm0 + vmovdqa64 %zmm0,0(%rsp) + vmovdqa64 %zmm0,64(%rsp) + vmovdqa64 %zmm0,128(%rsp) + vmovdqa64 %zmm0,192(%rsp) + vmovdqa64 %zmm0,256(%rsp) + vmovdqa64 %zmm0,320(%rsp) + vmovdqa64 %zmm0,384(%rsp) + vmovdqa64 %zmm0,448(%rsp) + vmovdqa64 %zmm0,512(%rsp) + vmovdqa64 %zmm0,576(%rsp) + vmovdqa64 %zmm0,640(%rsp) + vmovdqa64 %zmm0,704(%rsp) +.Lskip_hkeys_cleanup_496: + vzeroupper + leaq (%rbp),%rsp +.cfi_def_cfa_register %rsp + popq %r15 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r15 + popq %r14 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r14 + popq %r13 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r13 + popq %r12 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r12 + popq %rbp +.cfi_adjust_cfa_offset -8 +.cfi_restore %rbp + popq %rbx +.cfi_adjust_cfa_offset -8 +.cfi_restore %rbx + .byte 0xf3,0xc3 +.Lencrypt_seh_end: +.cfi_endproc +.size ossl_aes_gcm_encrypt_avx512, .-ossl_aes_gcm_encrypt_avx512 +.globl ossl_aes_gcm_decrypt_avx512 +.type ossl_aes_gcm_decrypt_avx512,@function +.align 32 +ossl_aes_gcm_decrypt_avx512: +.cfi_startproc +.Ldecrypt_seh_begin: +.byte 243,15,30,250 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 +.Ldecrypt_seh_push_rbx: + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 +.Ldecrypt_seh_push_rbp: + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 +.Ldecrypt_seh_push_r12: + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 +.Ldecrypt_seh_push_r13: + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 +.Ldecrypt_seh_push_r14: + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 +.Ldecrypt_seh_push_r15: + + + + + + + + + + + leaq 0(%rsp),%rbp +.cfi_def_cfa_register %rbp +.Ldecrypt_seh_setfp: + +.Ldecrypt_seh_prolog_end: + subq $1588,%rsp + andq $(-64),%rsp + + + movl 240(%rdi),%eax + cmpl $9,%eax + je .Laes_gcm_decrypt_128_avx512 + cmpl $11,%eax + je .Laes_gcm_decrypt_192_avx512 + cmpl $13,%eax + je .Laes_gcm_decrypt_256_avx512 + xorl %eax,%eax + jmp .Lexit_gcm_decrypt +.align 32 +.Laes_gcm_decrypt_128_avx512: + orq %r8,%r8 + je .L_enc_dec_done_497 + xorq %r14,%r14 + vmovdqu64 64(%rsi),%xmm14 + + movq (%rdx),%r11 + orq %r11,%r11 + je .L_partial_block_done_498 + movl $16,%r10d + leaq byte_len_to_mask_table(%rip),%r12 + cmpq %r10,%r8 + cmovcq %r8,%r10 + kmovw (%r12,%r10,2),%k1 + vmovdqu8 (%rcx),%xmm0{%k1}{z} + + vmovdqu64 16(%rsi),%xmm3 + vmovdqu64 336(%rsi),%xmm4 + + + + leaq SHIFT_MASK(%rip),%r12 + addq %r11,%r12 + vmovdqu64 (%r12),%xmm5 + vpshufb %xmm5,%xmm3,%xmm3 + + vmovdqa64 %xmm0,%xmm6 + vpxorq %xmm0,%xmm3,%xmm3 + + + leaq (%r8,%r11,1),%r13 + subq $16,%r13 + jge .L_no_extra_mask_498 + subq %r13,%r12 +.L_no_extra_mask_498: + + + + vmovdqu64 16(%r12),%xmm0 + vpand %xmm0,%xmm3,%xmm3 + vpand %xmm0,%xmm6,%xmm6 + vpshufb SHUF_MASK(%rip),%xmm6,%xmm6 + vpshufb %xmm5,%xmm6,%xmm6 + vpxorq %xmm6,%xmm14,%xmm14 + cmpq $0,%r13 + jl .L_partial_incomplete_498 + + vpclmulqdq $0x11,%xmm4,%xmm14,%xmm7 + vpclmulqdq $0x00,%xmm4,%xmm14,%xmm10 + vpclmulqdq $0x01,%xmm4,%xmm14,%xmm11 + vpclmulqdq $0x10,%xmm4,%xmm14,%xmm14 + vpxorq %xmm11,%xmm14,%xmm14 + + vpsrldq $8,%xmm14,%xmm11 + vpslldq $8,%xmm14,%xmm14 + vpxorq %xmm11,%xmm7,%xmm7 + vpxorq %xmm10,%xmm14,%xmm14 + + + + vmovdqu64 POLY2(%rip),%xmm11 + + vpclmulqdq $0x01,%xmm14,%xmm11,%xmm10 + vpslldq $8,%xmm10,%xmm10 + vpxorq %xmm10,%xmm14,%xmm14 + + + + vpclmulqdq $0x00,%xmm14,%xmm11,%xmm10 + vpsrldq $4,%xmm10,%xmm10 + vpclmulqdq $0x10,%xmm14,%xmm11,%xmm14 + vpslldq $4,%xmm14,%xmm14 + + vpternlogq $0x96,%xmm10,%xmm7,%xmm14 + + movq $0,(%rdx) + + movq %r11,%r12 + movq $16,%r11 + subq %r12,%r11 + jmp .L_enc_dec_done_498 + +.L_partial_incomplete_498: + addq %r8,(%rdx) + movq %r8,%r11 + +.L_enc_dec_done_498: + + + leaq byte_len_to_mask_table(%rip),%r12 + kmovw (%r12,%r11,2),%k1 + vmovdqu64 %xmm14,64(%rsi) + movq %r9,%r12 + vmovdqu8 %xmm3,(%r12){%k1} +.L_partial_block_done_498: + vmovdqu64 0(%rsi),%xmm2 + subq %r11,%r8 + je .L_enc_dec_done_497 + cmpq $256,%r8 + jbe .L_message_below_equal_16_blocks_497 + + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vmovdqa64 ddq_addbe_4444(%rip),%zmm27 + vmovdqa64 ddq_addbe_1234(%rip),%zmm28 + + + + + + + vmovd %xmm2,%r15d + andl $255,%r15d + + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpshufb %zmm29,%zmm2,%zmm2 + + + + cmpb $240,%r15b + jae .L_next_16_overflow_499 + vpaddd %zmm28,%zmm2,%zmm7 + vpaddd %zmm27,%zmm7,%zmm10 + vpaddd %zmm27,%zmm10,%zmm11 + vpaddd %zmm27,%zmm11,%zmm12 + jmp .L_next_16_ok_499 +.L_next_16_overflow_499: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm12 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm7 + vpaddd %zmm12,%zmm7,%zmm10 + vpaddd %zmm12,%zmm10,%zmm11 + vpaddd %zmm12,%zmm11,%zmm12 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %zmm29,%zmm11,%zmm11 + vpshufb %zmm29,%zmm12,%zmm12 +.L_next_16_ok_499: + vshufi64x2 $255,%zmm12,%zmm12,%zmm2 + addb $16,%r15b + + vmovdqu8 0(%rcx,%r11,1),%zmm0 + vmovdqu8 64(%rcx,%r11,1),%zmm3 + vmovdqu8 128(%rcx,%r11,1),%zmm4 + vmovdqu8 192(%rcx,%r11,1),%zmm5 + + + vbroadcastf64x2 0(%rdi),%zmm6 + vpxorq %zmm6,%zmm7,%zmm7 + vpxorq %zmm6,%zmm10,%zmm10 + vpxorq %zmm6,%zmm11,%zmm11 + vpxorq %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 16(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 32(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 48(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 64(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 80(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 96(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 112(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 128(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 144(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 160(%rdi),%zmm6 + vaesenclast %zmm6,%zmm7,%zmm7 + vaesenclast %zmm6,%zmm10,%zmm10 + vaesenclast %zmm6,%zmm11,%zmm11 + vaesenclast %zmm6,%zmm12,%zmm12 + + + vpxorq %zmm0,%zmm7,%zmm7 + vpxorq %zmm3,%zmm10,%zmm10 + vpxorq %zmm4,%zmm11,%zmm11 + vpxorq %zmm5,%zmm12,%zmm12 + + + movq %r9,%r10 + vmovdqu8 %zmm7,0(%r10,%r11,1) + vmovdqu8 %zmm10,64(%r10,%r11,1) + vmovdqu8 %zmm11,128(%r10,%r11,1) + vmovdqu8 %zmm12,192(%r10,%r11,1) + + vpshufb %zmm29,%zmm0,%zmm7 + vpshufb %zmm29,%zmm3,%zmm10 + vpshufb %zmm29,%zmm4,%zmm11 + vpshufb %zmm29,%zmm5,%zmm12 + vmovdqa64 %zmm7,768(%rsp) + vmovdqa64 %zmm10,832(%rsp) + vmovdqa64 %zmm11,896(%rsp) + vmovdqa64 %zmm12,960(%rsp) + testq %r14,%r14 + jnz .L_skip_hkeys_precomputation_500 + + vmovdqu64 288(%rsi),%zmm0 + vmovdqu64 %zmm0,704(%rsp) + + vmovdqu64 224(%rsi),%zmm3 + vmovdqu64 %zmm3,640(%rsp) + + + vshufi64x2 $0x00,%zmm3,%zmm3,%zmm3 + + vmovdqu64 160(%rsi),%zmm4 + vmovdqu64 %zmm4,576(%rsp) + + vmovdqu64 96(%rsi),%zmm5 + vmovdqu64 %zmm5,512(%rsp) +.L_skip_hkeys_precomputation_500: + cmpq $512,%r8 + jb .L_message_below_32_blocks_497 + + + + cmpb $240,%r15b + jae .L_next_16_overflow_501 + vpaddd %zmm28,%zmm2,%zmm7 + vpaddd %zmm27,%zmm7,%zmm10 + vpaddd %zmm27,%zmm10,%zmm11 + vpaddd %zmm27,%zmm11,%zmm12 + jmp .L_next_16_ok_501 +.L_next_16_overflow_501: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm12 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm7 + vpaddd %zmm12,%zmm7,%zmm10 + vpaddd %zmm12,%zmm10,%zmm11 + vpaddd %zmm12,%zmm11,%zmm12 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %zmm29,%zmm11,%zmm11 + vpshufb %zmm29,%zmm12,%zmm12 +.L_next_16_ok_501: + vshufi64x2 $255,%zmm12,%zmm12,%zmm2 + addb $16,%r15b + + vmovdqu8 256(%rcx,%r11,1),%zmm0 + vmovdqu8 320(%rcx,%r11,1),%zmm3 + vmovdqu8 384(%rcx,%r11,1),%zmm4 + vmovdqu8 448(%rcx,%r11,1),%zmm5 + + + vbroadcastf64x2 0(%rdi),%zmm6 + vpxorq %zmm6,%zmm7,%zmm7 + vpxorq %zmm6,%zmm10,%zmm10 + vpxorq %zmm6,%zmm11,%zmm11 + vpxorq %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 16(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 32(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 48(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 64(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 80(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 96(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 112(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 128(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 144(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 160(%rdi),%zmm6 + vaesenclast %zmm6,%zmm7,%zmm7 + vaesenclast %zmm6,%zmm10,%zmm10 + vaesenclast %zmm6,%zmm11,%zmm11 + vaesenclast %zmm6,%zmm12,%zmm12 + + + vpxorq %zmm0,%zmm7,%zmm7 + vpxorq %zmm3,%zmm10,%zmm10 + vpxorq %zmm4,%zmm11,%zmm11 + vpxorq %zmm5,%zmm12,%zmm12 + + + movq %r9,%r10 + vmovdqu8 %zmm7,256(%r10,%r11,1) + vmovdqu8 %zmm10,320(%r10,%r11,1) + vmovdqu8 %zmm11,384(%r10,%r11,1) + vmovdqu8 %zmm12,448(%r10,%r11,1) + + vpshufb %zmm29,%zmm0,%zmm7 + vpshufb %zmm29,%zmm3,%zmm10 + vpshufb %zmm29,%zmm4,%zmm11 + vpshufb %zmm29,%zmm5,%zmm12 + vmovdqa64 %zmm7,1024(%rsp) + vmovdqa64 %zmm10,1088(%rsp) + vmovdqa64 %zmm11,1152(%rsp) + vmovdqa64 %zmm12,1216(%rsp) + testq %r14,%r14 + jnz .L_skip_hkeys_precomputation_502 + vmovdqu64 640(%rsp),%zmm3 + + + vshufi64x2 $0x00,%zmm3,%zmm3,%zmm3 + + vmovdqu64 576(%rsp),%zmm4 + vmovdqu64 512(%rsp),%zmm5 + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,448(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,384(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,320(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,256(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,192(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,128(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,64(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,0(%rsp) +.L_skip_hkeys_precomputation_502: + movq $1,%r14 + addq $512,%r11 + subq $512,%r8 + + cmpq $768,%r8 + jb .L_no_more_big_nblocks_497 +.L_encrypt_big_nblocks_497: + cmpb $240,%r15b + jae .L_16_blocks_overflow_503 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_503 +.L_16_blocks_overflow_503: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_503: + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm15,%zmm10,%zmm26 + vpxorq %zmm12,%zmm6,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1) + vpshufb %zmm29,%zmm17,%zmm0 + vpshufb %zmm29,%zmm19,%zmm3 + vpshufb %zmm29,%zmm20,%zmm4 + vpshufb %zmm29,%zmm21,%zmm5 + vmovdqa64 %zmm0,1280(%rsp) + vmovdqa64 %zmm3,1344(%rsp) + vmovdqa64 %zmm4,1408(%rsp) + vmovdqa64 %zmm5,1472(%rsp) + cmpb $240,%r15b + jae .L_16_blocks_overflow_504 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_504 +.L_16_blocks_overflow_504: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_504: + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 256(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 320(%rsp),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 384(%rsp),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 448(%rsp),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 256(%rcx,%r11,1),%zmm17 + vmovdqu8 320(%rcx,%r11,1),%zmm19 + vmovdqu8 384(%rcx,%r11,1),%zmm20 + vmovdqu8 448(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vpternlogq $0x96,%zmm12,%zmm6,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,256(%r10,%r11,1) + vmovdqu8 %zmm3,320(%r10,%r11,1) + vmovdqu8 %zmm4,384(%r10,%r11,1) + vmovdqu8 %zmm5,448(%r10,%r11,1) + vpshufb %zmm29,%zmm17,%zmm0 + vpshufb %zmm29,%zmm19,%zmm3 + vpshufb %zmm29,%zmm20,%zmm4 + vpshufb %zmm29,%zmm21,%zmm5 + vmovdqa64 %zmm0,768(%rsp) + vmovdqa64 %zmm3,832(%rsp) + vmovdqa64 %zmm4,896(%rsp) + vmovdqa64 %zmm5,960(%rsp) + cmpb $240,%r15b + jae .L_16_blocks_overflow_505 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_505 +.L_16_blocks_overflow_505: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_505: + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 512(%rcx,%r11,1),%zmm17 + vmovdqu8 576(%rcx,%r11,1),%zmm19 + vmovdqu8 640(%rcx,%r11,1),%zmm20 + vmovdqu8 704(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + + + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpternlogq $0x96,%zmm15,%zmm12,%zmm6 + vpxorq %zmm24,%zmm6,%zmm6 + vpternlogq $0x96,%zmm10,%zmm13,%zmm7 + vpxorq %zmm25,%zmm7,%zmm7 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vextracti64x4 $1,%zmm6,%ymm12 + vpxorq %ymm12,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm12 + vpxorq %xmm12,%xmm6,%xmm6 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm6 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,512(%r10,%r11,1) + vmovdqu8 %zmm3,576(%r10,%r11,1) + vmovdqu8 %zmm4,640(%r10,%r11,1) + vmovdqu8 %zmm5,704(%r10,%r11,1) + vpshufb %zmm29,%zmm17,%zmm0 + vpshufb %zmm29,%zmm19,%zmm3 + vpshufb %zmm29,%zmm20,%zmm4 + vpshufb %zmm29,%zmm21,%zmm5 + vmovdqa64 %zmm0,1024(%rsp) + vmovdqa64 %zmm3,1088(%rsp) + vmovdqa64 %zmm4,1152(%rsp) + vmovdqa64 %zmm5,1216(%rsp) + vmovdqa64 %zmm6,%zmm14 + + addq $768,%r11 + subq $768,%r8 + cmpq $768,%r8 + jae .L_encrypt_big_nblocks_497 + +.L_no_more_big_nblocks_497: + + cmpq $512,%r8 + jae .L_encrypt_32_blocks_497 + + cmpq $256,%r8 + jae .L_encrypt_16_blocks_497 +.L_encrypt_0_blocks_ghash_32_497: + movl %r8d,%r10d + andl $~15,%r10d + movl $256,%ebx + subl %r10d,%ebx + vmovdqa64 768(%rsp),%zmm13 + vpxorq %zmm14,%zmm13,%zmm13 + vmovdqu64 0(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 832(%rsp),%zmm13 + vmovdqu64 64(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpxorq %zmm10,%zmm4,%zmm26 + vpxorq %zmm6,%zmm0,%zmm24 + vpxorq %zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 896(%rsp),%zmm13 + vmovdqu64 128(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 960(%rsp),%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + addl $256,%ebx + movl %r8d,%r10d + addl $15,%r10d + shrl $4,%r10d + je .L_last_num_blocks_is_0_506 + + cmpl $8,%r10d + je .L_last_num_blocks_is_8_506 + jb .L_last_num_blocks_is_7_1_506 + + + cmpl $12,%r10d + je .L_last_num_blocks_is_12_506 + jb .L_last_num_blocks_is_11_9_506 + + + cmpl $15,%r10d + je .L_last_num_blocks_is_15_506 + ja .L_last_num_blocks_is_16_506 + cmpl $14,%r10d + je .L_last_num_blocks_is_14_506 + jmp .L_last_num_blocks_is_13_506 + +.L_last_num_blocks_is_11_9_506: + + cmpl $10,%r10d + je .L_last_num_blocks_is_10_506 + ja .L_last_num_blocks_is_11_506 + jmp .L_last_num_blocks_is_9_506 + +.L_last_num_blocks_is_7_1_506: + cmpl $4,%r10d + je .L_last_num_blocks_is_4_506 + jb .L_last_num_blocks_is_3_1_506 + + cmpl $6,%r10d + ja .L_last_num_blocks_is_7_506 + je .L_last_num_blocks_is_6_506 + jmp .L_last_num_blocks_is_5_506 + +.L_last_num_blocks_is_3_1_506: + + cmpl $2,%r10d + ja .L_last_num_blocks_is_3_506 + je .L_last_num_blocks_is_2_506 +.L_last_num_blocks_is_1_506: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $255,%r15d + jae .L_16_blocks_overflow_507 + vpaddd %xmm28,%xmm2,%xmm0 + jmp .L_16_blocks_ok_507 + +.L_16_blocks_overflow_507: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %xmm29,%xmm0,%xmm0 +.L_16_blocks_ok_507: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%xmm17{%k1}{z} + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vaesenclast %xmm30,%xmm0,%xmm0 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %xmm29,%xmm17,%xmm17 + vextracti32x4 $0,%zmm17,%xmm7 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_508 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_508 +.L_small_initial_partial_block_508: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm0 + + + vpclmulqdq $0x01,%xmm25,%xmm0,%xmm3 + vpslldq $8,%xmm3,%xmm3 + vpxorq %xmm3,%xmm25,%xmm3 + + + vpclmulqdq $0x00,%xmm3,%xmm0,%xmm4 + vpsrldq $4,%xmm4,%xmm4 + vpclmulqdq $0x10,%xmm3,%xmm0,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm4,%xmm14 + + + + + + + + + + + + + vpxorq %xmm7,%xmm14,%xmm14 + + jmp .L_after_reduction_508 +.L_small_initial_compute_done_508: +.L_after_reduction_508: + jmp .L_last_blocks_done_506 +.L_last_num_blocks_is_2_506: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $254,%r15d + jae .L_16_blocks_overflow_509 + vpaddd %ymm28,%ymm2,%ymm0 + jmp .L_16_blocks_ok_509 + +.L_16_blocks_overflow_509: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %ymm29,%ymm0,%ymm0 +.L_16_blocks_ok_509: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%ymm17{%k1}{z} + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vaesenclast %ymm30,%ymm0,%ymm0 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %ymm29,%ymm17,%ymm17 + vextracti32x4 $1,%zmm17,%xmm7 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_510 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_510 +.L_small_initial_partial_block_510: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_510: + + orq %r8,%r8 + je .L_after_reduction_510 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_510: + jmp .L_last_blocks_done_506 +.L_last_num_blocks_is_3_506: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $253,%r15d + jae .L_16_blocks_overflow_511 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_511 + +.L_16_blocks_overflow_511: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_511: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vextracti32x4 $2,%zmm17,%xmm7 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_512 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_512 +.L_small_initial_partial_block_512: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_512: + + orq %r8,%r8 + je .L_after_reduction_512 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_512: + jmp .L_last_blocks_done_506 +.L_last_num_blocks_is_4_506: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $252,%r15d + jae .L_16_blocks_overflow_513 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_513 + +.L_16_blocks_overflow_513: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_513: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vextracti32x4 $3,%zmm17,%xmm7 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_514 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_514 +.L_small_initial_partial_block_514: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_514: + + orq %r8,%r8 + je .L_after_reduction_514 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_514: + jmp .L_last_blocks_done_506 +.L_last_num_blocks_is_5_506: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $251,%r15d + jae .L_16_blocks_overflow_515 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %xmm27,%xmm0,%xmm3 + jmp .L_16_blocks_ok_515 + +.L_16_blocks_overflow_515: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 +.L_16_blocks_ok_515: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%xmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %xmm30,%xmm3,%xmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %xmm19,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %xmm29,%xmm19,%xmm19 + vextracti32x4 $0,%zmm19,%xmm7 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_516 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_516 +.L_small_initial_partial_block_516: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_516: + + orq %r8,%r8 + je .L_after_reduction_516 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_516: + jmp .L_last_blocks_done_506 +.L_last_num_blocks_is_6_506: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $250,%r15d + jae .L_16_blocks_overflow_517 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %ymm27,%ymm0,%ymm3 + jmp .L_16_blocks_ok_517 + +.L_16_blocks_overflow_517: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 +.L_16_blocks_ok_517: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%ymm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %ymm30,%ymm3,%ymm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %ymm29,%ymm19,%ymm19 + vextracti32x4 $1,%zmm19,%xmm7 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_518 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_518 +.L_small_initial_partial_block_518: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_518: + + orq %r8,%r8 + je .L_after_reduction_518 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_518: + jmp .L_last_blocks_done_506 +.L_last_num_blocks_is_7_506: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $249,%r15d + jae .L_16_blocks_overflow_519 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_519 + +.L_16_blocks_overflow_519: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_519: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vextracti32x4 $2,%zmm19,%xmm7 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_520 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_520 +.L_small_initial_partial_block_520: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_520: + + orq %r8,%r8 + je .L_after_reduction_520 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_520: + jmp .L_last_blocks_done_506 +.L_last_num_blocks_is_8_506: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $248,%r15d + jae .L_16_blocks_overflow_521 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_521 + +.L_16_blocks_overflow_521: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_521: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vextracti32x4 $3,%zmm19,%xmm7 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_522 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_522 +.L_small_initial_partial_block_522: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_522: + + orq %r8,%r8 + je .L_after_reduction_522 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_522: + jmp .L_last_blocks_done_506 +.L_last_num_blocks_is_9_506: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $247,%r15d + jae .L_16_blocks_overflow_523 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %xmm27,%xmm3,%xmm4 + jmp .L_16_blocks_ok_523 + +.L_16_blocks_overflow_523: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 +.L_16_blocks_ok_523: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%xmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %xmm30,%xmm4,%xmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %xmm20,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %xmm29,%xmm20,%xmm20 + vextracti32x4 $0,%zmm20,%xmm7 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_524 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_524 +.L_small_initial_partial_block_524: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_524: + + orq %r8,%r8 + je .L_after_reduction_524 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_524: + jmp .L_last_blocks_done_506 +.L_last_num_blocks_is_10_506: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $246,%r15d + jae .L_16_blocks_overflow_525 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %ymm27,%ymm3,%ymm4 + jmp .L_16_blocks_ok_525 + +.L_16_blocks_overflow_525: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 +.L_16_blocks_ok_525: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%ymm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %ymm30,%ymm4,%ymm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %ymm20,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %ymm29,%ymm20,%ymm20 + vextracti32x4 $1,%zmm20,%xmm7 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_526 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_526 +.L_small_initial_partial_block_526: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_526: + + orq %r8,%r8 + je .L_after_reduction_526 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_526: + jmp .L_last_blocks_done_506 +.L_last_num_blocks_is_11_506: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $245,%r15d + jae .L_16_blocks_overflow_527 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_527 + +.L_16_blocks_overflow_527: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_527: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vextracti32x4 $2,%zmm20,%xmm7 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_528 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_528 +.L_small_initial_partial_block_528: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_528: + + orq %r8,%r8 + je .L_after_reduction_528 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_528: + jmp .L_last_blocks_done_506 +.L_last_num_blocks_is_12_506: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $244,%r15d + jae .L_16_blocks_overflow_529 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_529 + +.L_16_blocks_overflow_529: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_529: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vextracti32x4 $3,%zmm20,%xmm7 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_530 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_530 +.L_small_initial_partial_block_530: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_530: + + orq %r8,%r8 + je .L_after_reduction_530 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_530: + jmp .L_last_blocks_done_506 +.L_last_num_blocks_is_13_506: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $243,%r15d + jae .L_16_blocks_overflow_531 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %xmm27,%xmm4,%xmm5 + jmp .L_16_blocks_ok_531 + +.L_16_blocks_overflow_531: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 +.L_16_blocks_ok_531: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%xmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %xmm30,%xmm5,%xmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %xmm21,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %xmm29,%xmm21,%xmm21 + vextracti32x4 $0,%zmm21,%xmm7 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_532 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_532 +.L_small_initial_partial_block_532: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_532: + + orq %r8,%r8 + je .L_after_reduction_532 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_532: + jmp .L_last_blocks_done_506 +.L_last_num_blocks_is_14_506: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $242,%r15d + jae .L_16_blocks_overflow_533 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %ymm27,%ymm4,%ymm5 + jmp .L_16_blocks_ok_533 + +.L_16_blocks_overflow_533: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 +.L_16_blocks_ok_533: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%ymm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %ymm30,%ymm5,%ymm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %ymm21,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %ymm29,%ymm21,%ymm21 + vextracti32x4 $1,%zmm21,%xmm7 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_534 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_534 +.L_small_initial_partial_block_534: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_534: + + orq %r8,%r8 + je .L_after_reduction_534 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_534: + jmp .L_last_blocks_done_506 +.L_last_num_blocks_is_15_506: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $241,%r15d + jae .L_16_blocks_overflow_535 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_535 + +.L_16_blocks_overflow_535: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_535: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %zmm29,%zmm21,%zmm21 + vextracti32x4 $2,%zmm21,%xmm7 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_536 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_536 +.L_small_initial_partial_block_536: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_536: + + orq %r8,%r8 + je .L_after_reduction_536 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_536: + jmp .L_last_blocks_done_506 +.L_last_num_blocks_is_16_506: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $240,%r15d + jae .L_16_blocks_overflow_537 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_537 + +.L_16_blocks_overflow_537: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_537: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %zmm29,%zmm21,%zmm21 + vextracti32x4 $3,%zmm21,%xmm7 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_538: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_538: + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_538: + jmp .L_last_blocks_done_506 +.L_last_num_blocks_is_0_506: + vmovdqa64 1024(%rsp),%zmm13 + vmovdqu64 0(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1088(%rsp),%zmm13 + vmovdqu64 64(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 1152(%rsp),%zmm13 + vmovdqu64 128(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1216(%rsp),%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + +.L_last_blocks_done_506: + vpshufb %xmm29,%xmm2,%xmm2 + jmp .L_ghash_done_497 +.L_encrypt_32_blocks_497: + cmpb $240,%r15b + jae .L_16_blocks_overflow_539 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_539 +.L_16_blocks_overflow_539: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_539: + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm15,%zmm10,%zmm26 + vpxorq %zmm12,%zmm6,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1) + vpshufb %zmm29,%zmm17,%zmm0 + vpshufb %zmm29,%zmm19,%zmm3 + vpshufb %zmm29,%zmm20,%zmm4 + vpshufb %zmm29,%zmm21,%zmm5 + vmovdqa64 %zmm0,1280(%rsp) + vmovdqa64 %zmm3,1344(%rsp) + vmovdqa64 %zmm4,1408(%rsp) + vmovdqa64 %zmm5,1472(%rsp) + cmpb $240,%r15b + jae .L_16_blocks_overflow_540 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_540 +.L_16_blocks_overflow_540: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_540: + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 256(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 320(%rsp),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 384(%rsp),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 448(%rsp),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 256(%rcx,%r11,1),%zmm17 + vmovdqu8 320(%rcx,%r11,1),%zmm19 + vmovdqu8 384(%rcx,%r11,1),%zmm20 + vmovdqu8 448(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vpternlogq $0x96,%zmm12,%zmm6,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,256(%r10,%r11,1) + vmovdqu8 %zmm3,320(%r10,%r11,1) + vmovdqu8 %zmm4,384(%r10,%r11,1) + vmovdqu8 %zmm5,448(%r10,%r11,1) + vpshufb %zmm29,%zmm17,%zmm0 + vpshufb %zmm29,%zmm19,%zmm3 + vpshufb %zmm29,%zmm20,%zmm4 + vpshufb %zmm29,%zmm21,%zmm5 + vmovdqa64 %zmm0,768(%rsp) + vmovdqa64 %zmm3,832(%rsp) + vmovdqa64 %zmm4,896(%rsp) + vmovdqa64 %zmm5,960(%rsp) + vmovdqa64 1280(%rsp),%zmm13 + vmovdqu64 512(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1344(%rsp),%zmm13 + vmovdqu64 576(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 1408(%rsp),%zmm13 + vmovdqu64 640(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1472(%rsp),%zmm13 + vmovdqu64 704(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + + subq $512,%r8 + addq $512,%r11 + movl %r8d,%r10d + andl $~15,%r10d + movl $512,%ebx + subl %r10d,%ebx + movl %r8d,%r10d + addl $15,%r10d + shrl $4,%r10d + je .L_last_num_blocks_is_0_541 + + cmpl $8,%r10d + je .L_last_num_blocks_is_8_541 + jb .L_last_num_blocks_is_7_1_541 + + + cmpl $12,%r10d + je .L_last_num_blocks_is_12_541 + jb .L_last_num_blocks_is_11_9_541 + + + cmpl $15,%r10d + je .L_last_num_blocks_is_15_541 + ja .L_last_num_blocks_is_16_541 + cmpl $14,%r10d + je .L_last_num_blocks_is_14_541 + jmp .L_last_num_blocks_is_13_541 + +.L_last_num_blocks_is_11_9_541: + + cmpl $10,%r10d + je .L_last_num_blocks_is_10_541 + ja .L_last_num_blocks_is_11_541 + jmp .L_last_num_blocks_is_9_541 + +.L_last_num_blocks_is_7_1_541: + cmpl $4,%r10d + je .L_last_num_blocks_is_4_541 + jb .L_last_num_blocks_is_3_1_541 + + cmpl $6,%r10d + ja .L_last_num_blocks_is_7_541 + je .L_last_num_blocks_is_6_541 + jmp .L_last_num_blocks_is_5_541 + +.L_last_num_blocks_is_3_1_541: + + cmpl $2,%r10d + ja .L_last_num_blocks_is_3_541 + je .L_last_num_blocks_is_2_541 +.L_last_num_blocks_is_1_541: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $255,%r15d + jae .L_16_blocks_overflow_542 + vpaddd %xmm28,%xmm2,%xmm0 + jmp .L_16_blocks_ok_542 + +.L_16_blocks_overflow_542: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %xmm29,%xmm0,%xmm0 +.L_16_blocks_ok_542: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%xmm17{%k1}{z} + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vaesenclast %xmm30,%xmm0,%xmm0 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %xmm29,%xmm17,%xmm17 + vextracti32x4 $0,%zmm17,%xmm7 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_543 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_543 +.L_small_initial_partial_block_543: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm0 + + + vpclmulqdq $0x01,%xmm25,%xmm0,%xmm3 + vpslldq $8,%xmm3,%xmm3 + vpxorq %xmm3,%xmm25,%xmm3 + + + vpclmulqdq $0x00,%xmm3,%xmm0,%xmm4 + vpsrldq $4,%xmm4,%xmm4 + vpclmulqdq $0x10,%xmm3,%xmm0,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm4,%xmm14 + + + + + + + + + + + + + vpxorq %xmm7,%xmm14,%xmm14 + + jmp .L_after_reduction_543 +.L_small_initial_compute_done_543: +.L_after_reduction_543: + jmp .L_last_blocks_done_541 +.L_last_num_blocks_is_2_541: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $254,%r15d + jae .L_16_blocks_overflow_544 + vpaddd %ymm28,%ymm2,%ymm0 + jmp .L_16_blocks_ok_544 + +.L_16_blocks_overflow_544: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %ymm29,%ymm0,%ymm0 +.L_16_blocks_ok_544: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%ymm17{%k1}{z} + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vaesenclast %ymm30,%ymm0,%ymm0 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %ymm29,%ymm17,%ymm17 + vextracti32x4 $1,%zmm17,%xmm7 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_545 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_545 +.L_small_initial_partial_block_545: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_545: + + orq %r8,%r8 + je .L_after_reduction_545 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_545: + jmp .L_last_blocks_done_541 +.L_last_num_blocks_is_3_541: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $253,%r15d + jae .L_16_blocks_overflow_546 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_546 + +.L_16_blocks_overflow_546: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_546: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vextracti32x4 $2,%zmm17,%xmm7 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_547 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_547 +.L_small_initial_partial_block_547: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_547: + + orq %r8,%r8 + je .L_after_reduction_547 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_547: + jmp .L_last_blocks_done_541 +.L_last_num_blocks_is_4_541: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $252,%r15d + jae .L_16_blocks_overflow_548 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_548 + +.L_16_blocks_overflow_548: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_548: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vextracti32x4 $3,%zmm17,%xmm7 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_549 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_549 +.L_small_initial_partial_block_549: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_549: + + orq %r8,%r8 + je .L_after_reduction_549 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_549: + jmp .L_last_blocks_done_541 +.L_last_num_blocks_is_5_541: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $251,%r15d + jae .L_16_blocks_overflow_550 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %xmm27,%xmm0,%xmm3 + jmp .L_16_blocks_ok_550 + +.L_16_blocks_overflow_550: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 +.L_16_blocks_ok_550: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%xmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %xmm30,%xmm3,%xmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %xmm19,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %xmm29,%xmm19,%xmm19 + vextracti32x4 $0,%zmm19,%xmm7 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_551 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_551 +.L_small_initial_partial_block_551: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_551: + + orq %r8,%r8 + je .L_after_reduction_551 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_551: + jmp .L_last_blocks_done_541 +.L_last_num_blocks_is_6_541: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $250,%r15d + jae .L_16_blocks_overflow_552 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %ymm27,%ymm0,%ymm3 + jmp .L_16_blocks_ok_552 + +.L_16_blocks_overflow_552: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 +.L_16_blocks_ok_552: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%ymm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %ymm30,%ymm3,%ymm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %ymm29,%ymm19,%ymm19 + vextracti32x4 $1,%zmm19,%xmm7 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_553 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_553 +.L_small_initial_partial_block_553: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_553: + + orq %r8,%r8 + je .L_after_reduction_553 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_553: + jmp .L_last_blocks_done_541 +.L_last_num_blocks_is_7_541: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $249,%r15d + jae .L_16_blocks_overflow_554 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_554 + +.L_16_blocks_overflow_554: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_554: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vextracti32x4 $2,%zmm19,%xmm7 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_555 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_555 +.L_small_initial_partial_block_555: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_555: + + orq %r8,%r8 + je .L_after_reduction_555 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_555: + jmp .L_last_blocks_done_541 +.L_last_num_blocks_is_8_541: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $248,%r15d + jae .L_16_blocks_overflow_556 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_556 + +.L_16_blocks_overflow_556: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_556: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vextracti32x4 $3,%zmm19,%xmm7 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_557 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_557 +.L_small_initial_partial_block_557: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_557: + + orq %r8,%r8 + je .L_after_reduction_557 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_557: + jmp .L_last_blocks_done_541 +.L_last_num_blocks_is_9_541: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $247,%r15d + jae .L_16_blocks_overflow_558 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %xmm27,%xmm3,%xmm4 + jmp .L_16_blocks_ok_558 + +.L_16_blocks_overflow_558: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 +.L_16_blocks_ok_558: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%xmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %xmm30,%xmm4,%xmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %xmm20,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %xmm29,%xmm20,%xmm20 + vextracti32x4 $0,%zmm20,%xmm7 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_559 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_559 +.L_small_initial_partial_block_559: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_559: + + orq %r8,%r8 + je .L_after_reduction_559 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_559: + jmp .L_last_blocks_done_541 +.L_last_num_blocks_is_10_541: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $246,%r15d + jae .L_16_blocks_overflow_560 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %ymm27,%ymm3,%ymm4 + jmp .L_16_blocks_ok_560 + +.L_16_blocks_overflow_560: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 +.L_16_blocks_ok_560: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%ymm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %ymm30,%ymm4,%ymm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %ymm20,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %ymm29,%ymm20,%ymm20 + vextracti32x4 $1,%zmm20,%xmm7 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_561 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_561 +.L_small_initial_partial_block_561: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_561: + + orq %r8,%r8 + je .L_after_reduction_561 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_561: + jmp .L_last_blocks_done_541 +.L_last_num_blocks_is_11_541: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $245,%r15d + jae .L_16_blocks_overflow_562 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_562 + +.L_16_blocks_overflow_562: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_562: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vextracti32x4 $2,%zmm20,%xmm7 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_563 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_563 +.L_small_initial_partial_block_563: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_563: + + orq %r8,%r8 + je .L_after_reduction_563 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_563: + jmp .L_last_blocks_done_541 +.L_last_num_blocks_is_12_541: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $244,%r15d + jae .L_16_blocks_overflow_564 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_564 + +.L_16_blocks_overflow_564: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_564: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vextracti32x4 $3,%zmm20,%xmm7 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_565 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_565 +.L_small_initial_partial_block_565: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_565: + + orq %r8,%r8 + je .L_after_reduction_565 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_565: + jmp .L_last_blocks_done_541 +.L_last_num_blocks_is_13_541: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $243,%r15d + jae .L_16_blocks_overflow_566 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %xmm27,%xmm4,%xmm5 + jmp .L_16_blocks_ok_566 + +.L_16_blocks_overflow_566: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 +.L_16_blocks_ok_566: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%xmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %xmm30,%xmm5,%xmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %xmm21,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %xmm29,%xmm21,%xmm21 + vextracti32x4 $0,%zmm21,%xmm7 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_567 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_567 +.L_small_initial_partial_block_567: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_567: + + orq %r8,%r8 + je .L_after_reduction_567 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_567: + jmp .L_last_blocks_done_541 +.L_last_num_blocks_is_14_541: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $242,%r15d + jae .L_16_blocks_overflow_568 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %ymm27,%ymm4,%ymm5 + jmp .L_16_blocks_ok_568 + +.L_16_blocks_overflow_568: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 +.L_16_blocks_ok_568: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%ymm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %ymm30,%ymm5,%ymm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %ymm21,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %ymm29,%ymm21,%ymm21 + vextracti32x4 $1,%zmm21,%xmm7 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_569 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_569 +.L_small_initial_partial_block_569: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_569: + + orq %r8,%r8 + je .L_after_reduction_569 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_569: + jmp .L_last_blocks_done_541 +.L_last_num_blocks_is_15_541: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $241,%r15d + jae .L_16_blocks_overflow_570 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_570 + +.L_16_blocks_overflow_570: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_570: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %zmm29,%zmm21,%zmm21 + vextracti32x4 $2,%zmm21,%xmm7 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_571 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_571 +.L_small_initial_partial_block_571: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_571: + + orq %r8,%r8 + je .L_after_reduction_571 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_571: + jmp .L_last_blocks_done_541 +.L_last_num_blocks_is_16_541: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $240,%r15d + jae .L_16_blocks_overflow_572 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_572 + +.L_16_blocks_overflow_572: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_572: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %zmm29,%zmm21,%zmm21 + vextracti32x4 $3,%zmm21,%xmm7 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_573: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_573: + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_573: + jmp .L_last_blocks_done_541 +.L_last_num_blocks_is_0_541: + vmovdqa64 768(%rsp),%zmm13 + vpxorq %zmm14,%zmm13,%zmm13 + vmovdqu64 0(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 832(%rsp),%zmm13 + vmovdqu64 64(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpxorq %zmm10,%zmm4,%zmm26 + vpxorq %zmm6,%zmm0,%zmm24 + vpxorq %zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 896(%rsp),%zmm13 + vmovdqu64 128(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 960(%rsp),%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + +.L_last_blocks_done_541: + vpshufb %xmm29,%xmm2,%xmm2 + jmp .L_ghash_done_497 +.L_encrypt_16_blocks_497: + cmpb $240,%r15b + jae .L_16_blocks_overflow_574 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_574 +.L_16_blocks_overflow_574: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_574: + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm15,%zmm10,%zmm26 + vpxorq %zmm12,%zmm6,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1) + vpshufb %zmm29,%zmm17,%zmm0 + vpshufb %zmm29,%zmm19,%zmm3 + vpshufb %zmm29,%zmm20,%zmm4 + vpshufb %zmm29,%zmm21,%zmm5 + vmovdqa64 %zmm0,1280(%rsp) + vmovdqa64 %zmm3,1344(%rsp) + vmovdqa64 %zmm4,1408(%rsp) + vmovdqa64 %zmm5,1472(%rsp) + vmovdqa64 1024(%rsp),%zmm13 + vmovdqu64 256(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1088(%rsp),%zmm13 + vmovdqu64 320(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 1152(%rsp),%zmm13 + vmovdqu64 384(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1216(%rsp),%zmm13 + vmovdqu64 448(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + subq $256,%r8 + addq $256,%r11 + movl %r8d,%r10d + addl $15,%r10d + shrl $4,%r10d + je .L_last_num_blocks_is_0_575 + + cmpl $8,%r10d + je .L_last_num_blocks_is_8_575 + jb .L_last_num_blocks_is_7_1_575 + + + cmpl $12,%r10d + je .L_last_num_blocks_is_12_575 + jb .L_last_num_blocks_is_11_9_575 + + + cmpl $15,%r10d + je .L_last_num_blocks_is_15_575 + ja .L_last_num_blocks_is_16_575 + cmpl $14,%r10d + je .L_last_num_blocks_is_14_575 + jmp .L_last_num_blocks_is_13_575 + +.L_last_num_blocks_is_11_9_575: + + cmpl $10,%r10d + je .L_last_num_blocks_is_10_575 + ja .L_last_num_blocks_is_11_575 + jmp .L_last_num_blocks_is_9_575 + +.L_last_num_blocks_is_7_1_575: + cmpl $4,%r10d + je .L_last_num_blocks_is_4_575 + jb .L_last_num_blocks_is_3_1_575 + + cmpl $6,%r10d + ja .L_last_num_blocks_is_7_575 + je .L_last_num_blocks_is_6_575 + jmp .L_last_num_blocks_is_5_575 + +.L_last_num_blocks_is_3_1_575: + + cmpl $2,%r10d + ja .L_last_num_blocks_is_3_575 + je .L_last_num_blocks_is_2_575 +.L_last_num_blocks_is_1_575: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $255,%r15d + jae .L_16_blocks_overflow_576 + vpaddd %xmm28,%xmm2,%xmm0 + jmp .L_16_blocks_ok_576 + +.L_16_blocks_overflow_576: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %xmm29,%xmm0,%xmm0 +.L_16_blocks_ok_576: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $0,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%xmm17{%k1}{z} + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %xmm31,%xmm0,%xmm0 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %xmm30,%xmm0,%xmm0 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %xmm29,%xmm17,%xmm17 + vextracti32x4 $0,%zmm17,%xmm7 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_577 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_577 +.L_small_initial_partial_block_577: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + + + + + + + + + + + + vpxorq %xmm7,%xmm14,%xmm14 + + jmp .L_after_reduction_577 +.L_small_initial_compute_done_577: +.L_after_reduction_577: + jmp .L_last_blocks_done_575 +.L_last_num_blocks_is_2_575: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $254,%r15d + jae .L_16_blocks_overflow_578 + vpaddd %ymm28,%ymm2,%ymm0 + jmp .L_16_blocks_ok_578 + +.L_16_blocks_overflow_578: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %ymm29,%ymm0,%ymm0 +.L_16_blocks_ok_578: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $1,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%ymm17{%k1}{z} + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %ymm31,%ymm0,%ymm0 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %ymm30,%ymm0,%ymm0 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %ymm29,%ymm17,%ymm17 + vextracti32x4 $1,%zmm17,%xmm7 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_579 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_579 +.L_small_initial_partial_block_579: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_579: + + orq %r8,%r8 + je .L_after_reduction_579 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_579: + jmp .L_last_blocks_done_575 +.L_last_num_blocks_is_3_575: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $253,%r15d + jae .L_16_blocks_overflow_580 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_580 + +.L_16_blocks_overflow_580: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_580: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $2,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vextracti32x4 $2,%zmm17,%xmm7 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_581 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_581 +.L_small_initial_partial_block_581: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_581: + + orq %r8,%r8 + je .L_after_reduction_581 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_581: + jmp .L_last_blocks_done_575 +.L_last_num_blocks_is_4_575: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $252,%r15d + jae .L_16_blocks_overflow_582 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_582 + +.L_16_blocks_overflow_582: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_582: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $3,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vextracti32x4 $3,%zmm17,%xmm7 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_583 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_583 +.L_small_initial_partial_block_583: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_583: + + orq %r8,%r8 + je .L_after_reduction_583 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_583: + jmp .L_last_blocks_done_575 +.L_last_num_blocks_is_5_575: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $251,%r15d + jae .L_16_blocks_overflow_584 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %xmm27,%xmm0,%xmm3 + jmp .L_16_blocks_ok_584 + +.L_16_blocks_overflow_584: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 +.L_16_blocks_ok_584: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $0,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%xmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %xmm30,%xmm3,%xmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %xmm19,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %xmm29,%xmm19,%xmm19 + vextracti32x4 $0,%zmm19,%xmm7 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_585 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_585 +.L_small_initial_partial_block_585: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_585: + + orq %r8,%r8 + je .L_after_reduction_585 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_585: + jmp .L_last_blocks_done_575 +.L_last_num_blocks_is_6_575: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $250,%r15d + jae .L_16_blocks_overflow_586 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %ymm27,%ymm0,%ymm3 + jmp .L_16_blocks_ok_586 + +.L_16_blocks_overflow_586: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 +.L_16_blocks_ok_586: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $1,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%ymm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %ymm30,%ymm3,%ymm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %ymm29,%ymm19,%ymm19 + vextracti32x4 $1,%zmm19,%xmm7 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_587 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_587 +.L_small_initial_partial_block_587: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_587: + + orq %r8,%r8 + je .L_after_reduction_587 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_587: + jmp .L_last_blocks_done_575 +.L_last_num_blocks_is_7_575: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $249,%r15d + jae .L_16_blocks_overflow_588 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_588 + +.L_16_blocks_overflow_588: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_588: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $2,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vextracti32x4 $2,%zmm19,%xmm7 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_589 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_589 +.L_small_initial_partial_block_589: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_589: + + orq %r8,%r8 + je .L_after_reduction_589 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_589: + jmp .L_last_blocks_done_575 +.L_last_num_blocks_is_8_575: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $248,%r15d + jae .L_16_blocks_overflow_590 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_590 + +.L_16_blocks_overflow_590: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_590: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $3,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vextracti32x4 $3,%zmm19,%xmm7 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_591 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_591 +.L_small_initial_partial_block_591: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_591: + + orq %r8,%r8 + je .L_after_reduction_591 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_591: + jmp .L_last_blocks_done_575 +.L_last_num_blocks_is_9_575: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $247,%r15d + jae .L_16_blocks_overflow_592 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %xmm27,%xmm3,%xmm4 + jmp .L_16_blocks_ok_592 + +.L_16_blocks_overflow_592: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 +.L_16_blocks_ok_592: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $0,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%xmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %xmm30,%xmm4,%xmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %xmm20,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %xmm29,%xmm20,%xmm20 + vextracti32x4 $0,%zmm20,%xmm7 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_593 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_593 +.L_small_initial_partial_block_593: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_593: + + orq %r8,%r8 + je .L_after_reduction_593 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_593: + jmp .L_last_blocks_done_575 +.L_last_num_blocks_is_10_575: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $246,%r15d + jae .L_16_blocks_overflow_594 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %ymm27,%ymm3,%ymm4 + jmp .L_16_blocks_ok_594 + +.L_16_blocks_overflow_594: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 +.L_16_blocks_ok_594: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $1,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%ymm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %ymm30,%ymm4,%ymm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %ymm20,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %ymm29,%ymm20,%ymm20 + vextracti32x4 $1,%zmm20,%xmm7 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_595 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_595 +.L_small_initial_partial_block_595: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_595: + + orq %r8,%r8 + je .L_after_reduction_595 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_595: + jmp .L_last_blocks_done_575 +.L_last_num_blocks_is_11_575: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $245,%r15d + jae .L_16_blocks_overflow_596 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_596 + +.L_16_blocks_overflow_596: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_596: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $2,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vextracti32x4 $2,%zmm20,%xmm7 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_597 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_597 +.L_small_initial_partial_block_597: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_597: + + orq %r8,%r8 + je .L_after_reduction_597 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_597: + jmp .L_last_blocks_done_575 +.L_last_num_blocks_is_12_575: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $244,%r15d + jae .L_16_blocks_overflow_598 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_598 + +.L_16_blocks_overflow_598: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_598: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $3,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vextracti32x4 $3,%zmm20,%xmm7 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_599 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_599 +.L_small_initial_partial_block_599: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_599: + + orq %r8,%r8 + je .L_after_reduction_599 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_599: + jmp .L_last_blocks_done_575 +.L_last_num_blocks_is_13_575: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $243,%r15d + jae .L_16_blocks_overflow_600 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %xmm27,%xmm4,%xmm5 + jmp .L_16_blocks_ok_600 + +.L_16_blocks_overflow_600: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 +.L_16_blocks_ok_600: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $0,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%xmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %xmm30,%xmm5,%xmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %xmm21,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %xmm29,%xmm21,%xmm21 + vextracti32x4 $0,%zmm21,%xmm7 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_601 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_601 +.L_small_initial_partial_block_601: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_601: + + orq %r8,%r8 + je .L_after_reduction_601 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_601: + jmp .L_last_blocks_done_575 +.L_last_num_blocks_is_14_575: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $242,%r15d + jae .L_16_blocks_overflow_602 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %ymm27,%ymm4,%ymm5 + jmp .L_16_blocks_ok_602 + +.L_16_blocks_overflow_602: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 +.L_16_blocks_ok_602: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $1,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%ymm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %ymm30,%ymm5,%ymm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %ymm21,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %ymm29,%ymm21,%ymm21 + vextracti32x4 $1,%zmm21,%xmm7 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_603 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_603 +.L_small_initial_partial_block_603: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_603: + + orq %r8,%r8 + je .L_after_reduction_603 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_603: + jmp .L_last_blocks_done_575 +.L_last_num_blocks_is_15_575: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $241,%r15d + jae .L_16_blocks_overflow_604 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_604 + +.L_16_blocks_overflow_604: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_604: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $2,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %zmm29,%zmm21,%zmm21 + vextracti32x4 $2,%zmm21,%xmm7 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_605 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_605 +.L_small_initial_partial_block_605: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_605: + + orq %r8,%r8 + je .L_after_reduction_605 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_605: + jmp .L_last_blocks_done_575 +.L_last_num_blocks_is_16_575: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $240,%r15d + jae .L_16_blocks_overflow_606 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_606 + +.L_16_blocks_overflow_606: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_606: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $3,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %zmm29,%zmm21,%zmm21 + vextracti32x4 $3,%zmm21,%xmm7 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_607: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_607: + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_607: + jmp .L_last_blocks_done_575 +.L_last_num_blocks_is_0_575: + vmovdqa64 1280(%rsp),%zmm13 + vmovdqu64 512(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1344(%rsp),%zmm13 + vmovdqu64 576(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 1408(%rsp),%zmm13 + vmovdqu64 640(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1472(%rsp),%zmm13 + vmovdqu64 704(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + +.L_last_blocks_done_575: + vpshufb %xmm29,%xmm2,%xmm2 + jmp .L_ghash_done_497 + +.L_message_below_32_blocks_497: + + + subq $256,%r8 + addq $256,%r11 + movl %r8d,%r10d + testq %r14,%r14 + jnz .L_skip_hkeys_precomputation_608 + vmovdqu64 640(%rsp),%zmm3 + + + vshufi64x2 $0x00,%zmm3,%zmm3,%zmm3 + + vmovdqu64 576(%rsp),%zmm4 + vmovdqu64 512(%rsp),%zmm5 + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,448(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,384(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,320(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,256(%rsp) +.L_skip_hkeys_precomputation_608: + movq $1,%r14 + andl $~15,%r10d + movl $512,%ebx + subl %r10d,%ebx + movl %r8d,%r10d + addl $15,%r10d + shrl $4,%r10d + je .L_last_num_blocks_is_0_609 + + cmpl $8,%r10d + je .L_last_num_blocks_is_8_609 + jb .L_last_num_blocks_is_7_1_609 + + + cmpl $12,%r10d + je .L_last_num_blocks_is_12_609 + jb .L_last_num_blocks_is_11_9_609 + + + cmpl $15,%r10d + je .L_last_num_blocks_is_15_609 + ja .L_last_num_blocks_is_16_609 + cmpl $14,%r10d + je .L_last_num_blocks_is_14_609 + jmp .L_last_num_blocks_is_13_609 + +.L_last_num_blocks_is_11_9_609: + + cmpl $10,%r10d + je .L_last_num_blocks_is_10_609 + ja .L_last_num_blocks_is_11_609 + jmp .L_last_num_blocks_is_9_609 + +.L_last_num_blocks_is_7_1_609: + cmpl $4,%r10d + je .L_last_num_blocks_is_4_609 + jb .L_last_num_blocks_is_3_1_609 + + cmpl $6,%r10d + ja .L_last_num_blocks_is_7_609 + je .L_last_num_blocks_is_6_609 + jmp .L_last_num_blocks_is_5_609 + +.L_last_num_blocks_is_3_1_609: + + cmpl $2,%r10d + ja .L_last_num_blocks_is_3_609 + je .L_last_num_blocks_is_2_609 +.L_last_num_blocks_is_1_609: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $255,%r15d + jae .L_16_blocks_overflow_610 + vpaddd %xmm28,%xmm2,%xmm0 + jmp .L_16_blocks_ok_610 + +.L_16_blocks_overflow_610: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %xmm29,%xmm0,%xmm0 +.L_16_blocks_ok_610: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%xmm17{%k1}{z} + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vaesenclast %xmm30,%xmm0,%xmm0 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %xmm29,%xmm17,%xmm17 + vextracti32x4 $0,%zmm17,%xmm7 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_611 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_611 +.L_small_initial_partial_block_611: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm0 + + + vpclmulqdq $0x01,%xmm25,%xmm0,%xmm3 + vpslldq $8,%xmm3,%xmm3 + vpxorq %xmm3,%xmm25,%xmm3 + + + vpclmulqdq $0x00,%xmm3,%xmm0,%xmm4 + vpsrldq $4,%xmm4,%xmm4 + vpclmulqdq $0x10,%xmm3,%xmm0,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm4,%xmm14 + + + + + + + + + + + + + vpxorq %xmm7,%xmm14,%xmm14 + + jmp .L_after_reduction_611 +.L_small_initial_compute_done_611: +.L_after_reduction_611: + jmp .L_last_blocks_done_609 +.L_last_num_blocks_is_2_609: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $254,%r15d + jae .L_16_blocks_overflow_612 + vpaddd %ymm28,%ymm2,%ymm0 + jmp .L_16_blocks_ok_612 + +.L_16_blocks_overflow_612: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %ymm29,%ymm0,%ymm0 +.L_16_blocks_ok_612: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%ymm17{%k1}{z} + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vaesenclast %ymm30,%ymm0,%ymm0 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %ymm29,%ymm17,%ymm17 + vextracti32x4 $1,%zmm17,%xmm7 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_613 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_613 +.L_small_initial_partial_block_613: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_613: + + orq %r8,%r8 + je .L_after_reduction_613 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_613: + jmp .L_last_blocks_done_609 +.L_last_num_blocks_is_3_609: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $253,%r15d + jae .L_16_blocks_overflow_614 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_614 + +.L_16_blocks_overflow_614: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_614: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vextracti32x4 $2,%zmm17,%xmm7 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_615 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_615 +.L_small_initial_partial_block_615: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_615: + + orq %r8,%r8 + je .L_after_reduction_615 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_615: + jmp .L_last_blocks_done_609 +.L_last_num_blocks_is_4_609: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $252,%r15d + jae .L_16_blocks_overflow_616 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_616 + +.L_16_blocks_overflow_616: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_616: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vextracti32x4 $3,%zmm17,%xmm7 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_617 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_617 +.L_small_initial_partial_block_617: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_617: + + orq %r8,%r8 + je .L_after_reduction_617 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_617: + jmp .L_last_blocks_done_609 +.L_last_num_blocks_is_5_609: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $251,%r15d + jae .L_16_blocks_overflow_618 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %xmm27,%xmm0,%xmm3 + jmp .L_16_blocks_ok_618 + +.L_16_blocks_overflow_618: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 +.L_16_blocks_ok_618: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%xmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %xmm30,%xmm3,%xmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %xmm19,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %xmm29,%xmm19,%xmm19 + vextracti32x4 $0,%zmm19,%xmm7 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_619 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_619 +.L_small_initial_partial_block_619: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_619: + + orq %r8,%r8 + je .L_after_reduction_619 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_619: + jmp .L_last_blocks_done_609 +.L_last_num_blocks_is_6_609: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $250,%r15d + jae .L_16_blocks_overflow_620 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %ymm27,%ymm0,%ymm3 + jmp .L_16_blocks_ok_620 + +.L_16_blocks_overflow_620: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 +.L_16_blocks_ok_620: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%ymm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %ymm30,%ymm3,%ymm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %ymm29,%ymm19,%ymm19 + vextracti32x4 $1,%zmm19,%xmm7 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_621 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_621 +.L_small_initial_partial_block_621: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_621: + + orq %r8,%r8 + je .L_after_reduction_621 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_621: + jmp .L_last_blocks_done_609 +.L_last_num_blocks_is_7_609: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $249,%r15d + jae .L_16_blocks_overflow_622 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_622 + +.L_16_blocks_overflow_622: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_622: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vextracti32x4 $2,%zmm19,%xmm7 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_623 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_623 +.L_small_initial_partial_block_623: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_623: + + orq %r8,%r8 + je .L_after_reduction_623 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_623: + jmp .L_last_blocks_done_609 +.L_last_num_blocks_is_8_609: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $248,%r15d + jae .L_16_blocks_overflow_624 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_624 + +.L_16_blocks_overflow_624: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_624: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vextracti32x4 $3,%zmm19,%xmm7 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_625 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_625 +.L_small_initial_partial_block_625: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_625: + + orq %r8,%r8 + je .L_after_reduction_625 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_625: + jmp .L_last_blocks_done_609 +.L_last_num_blocks_is_9_609: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $247,%r15d + jae .L_16_blocks_overflow_626 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %xmm27,%xmm3,%xmm4 + jmp .L_16_blocks_ok_626 + +.L_16_blocks_overflow_626: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 +.L_16_blocks_ok_626: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%xmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %xmm30,%xmm4,%xmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %xmm20,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %xmm29,%xmm20,%xmm20 + vextracti32x4 $0,%zmm20,%xmm7 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_627 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_627 +.L_small_initial_partial_block_627: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_627: + + orq %r8,%r8 + je .L_after_reduction_627 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_627: + jmp .L_last_blocks_done_609 +.L_last_num_blocks_is_10_609: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $246,%r15d + jae .L_16_blocks_overflow_628 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %ymm27,%ymm3,%ymm4 + jmp .L_16_blocks_ok_628 + +.L_16_blocks_overflow_628: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 +.L_16_blocks_ok_628: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%ymm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %ymm30,%ymm4,%ymm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %ymm20,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %ymm29,%ymm20,%ymm20 + vextracti32x4 $1,%zmm20,%xmm7 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_629 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_629 +.L_small_initial_partial_block_629: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_629: + + orq %r8,%r8 + je .L_after_reduction_629 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_629: + jmp .L_last_blocks_done_609 +.L_last_num_blocks_is_11_609: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $245,%r15d + jae .L_16_blocks_overflow_630 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_630 + +.L_16_blocks_overflow_630: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_630: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vextracti32x4 $2,%zmm20,%xmm7 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_631 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_631 +.L_small_initial_partial_block_631: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_631: + + orq %r8,%r8 + je .L_after_reduction_631 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_631: + jmp .L_last_blocks_done_609 +.L_last_num_blocks_is_12_609: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $244,%r15d + jae .L_16_blocks_overflow_632 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_632 + +.L_16_blocks_overflow_632: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_632: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vextracti32x4 $3,%zmm20,%xmm7 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_633 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_633 +.L_small_initial_partial_block_633: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_633: + + orq %r8,%r8 + je .L_after_reduction_633 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_633: + jmp .L_last_blocks_done_609 +.L_last_num_blocks_is_13_609: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $243,%r15d + jae .L_16_blocks_overflow_634 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %xmm27,%xmm4,%xmm5 + jmp .L_16_blocks_ok_634 + +.L_16_blocks_overflow_634: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 +.L_16_blocks_ok_634: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%xmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %xmm30,%xmm5,%xmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %xmm21,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %xmm29,%xmm21,%xmm21 + vextracti32x4 $0,%zmm21,%xmm7 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_635 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_635 +.L_small_initial_partial_block_635: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_635: + + orq %r8,%r8 + je .L_after_reduction_635 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_635: + jmp .L_last_blocks_done_609 +.L_last_num_blocks_is_14_609: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $242,%r15d + jae .L_16_blocks_overflow_636 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %ymm27,%ymm4,%ymm5 + jmp .L_16_blocks_ok_636 + +.L_16_blocks_overflow_636: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 +.L_16_blocks_ok_636: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%ymm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %ymm30,%ymm5,%ymm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %ymm21,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %ymm29,%ymm21,%ymm21 + vextracti32x4 $1,%zmm21,%xmm7 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_637 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_637 +.L_small_initial_partial_block_637: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_637: + + orq %r8,%r8 + je .L_after_reduction_637 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_637: + jmp .L_last_blocks_done_609 +.L_last_num_blocks_is_15_609: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $241,%r15d + jae .L_16_blocks_overflow_638 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_638 + +.L_16_blocks_overflow_638: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_638: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %zmm29,%zmm21,%zmm21 + vextracti32x4 $2,%zmm21,%xmm7 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_639 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_639 +.L_small_initial_partial_block_639: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_639: + + orq %r8,%r8 + je .L_after_reduction_639 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_639: + jmp .L_last_blocks_done_609 +.L_last_num_blocks_is_16_609: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $240,%r15d + jae .L_16_blocks_overflow_640 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_640 + +.L_16_blocks_overflow_640: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_640: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %zmm29,%zmm21,%zmm21 + vextracti32x4 $3,%zmm21,%xmm7 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_641: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_641: + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_641: + jmp .L_last_blocks_done_609 +.L_last_num_blocks_is_0_609: + vmovdqa64 768(%rsp),%zmm13 + vpxorq %zmm14,%zmm13,%zmm13 + vmovdqu64 0(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 832(%rsp),%zmm13 + vmovdqu64 64(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpxorq %zmm10,%zmm4,%zmm26 + vpxorq %zmm6,%zmm0,%zmm24 + vpxorq %zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 896(%rsp),%zmm13 + vmovdqu64 128(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 960(%rsp),%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + +.L_last_blocks_done_609: + vpshufb %xmm29,%xmm2,%xmm2 + jmp .L_ghash_done_497 + +.L_message_below_equal_16_blocks_497: + + + movl %r8d,%r12d + addl $15,%r12d + shrl $4,%r12d + cmpq $8,%r12 + je .L_small_initial_num_blocks_is_8_642 + jl .L_small_initial_num_blocks_is_7_1_642 + + + cmpq $12,%r12 + je .L_small_initial_num_blocks_is_12_642 + jl .L_small_initial_num_blocks_is_11_9_642 + + + cmpq $16,%r12 + je .L_small_initial_num_blocks_is_16_642 + cmpq $15,%r12 + je .L_small_initial_num_blocks_is_15_642 + cmpq $14,%r12 + je .L_small_initial_num_blocks_is_14_642 + jmp .L_small_initial_num_blocks_is_13_642 + +.L_small_initial_num_blocks_is_11_9_642: + + cmpq $11,%r12 + je .L_small_initial_num_blocks_is_11_642 + cmpq $10,%r12 + je .L_small_initial_num_blocks_is_10_642 + jmp .L_small_initial_num_blocks_is_9_642 + +.L_small_initial_num_blocks_is_7_1_642: + cmpq $4,%r12 + je .L_small_initial_num_blocks_is_4_642 + jl .L_small_initial_num_blocks_is_3_1_642 + + cmpq $7,%r12 + je .L_small_initial_num_blocks_is_7_642 + cmpq $6,%r12 + je .L_small_initial_num_blocks_is_6_642 + jmp .L_small_initial_num_blocks_is_5_642 + +.L_small_initial_num_blocks_is_3_1_642: + + cmpq $3,%r12 + je .L_small_initial_num_blocks_is_3_642 + cmpq $2,%r12 + je .L_small_initial_num_blocks_is_2_642 + + + + + +.L_small_initial_num_blocks_is_1_642: + vmovdqa64 SHUF_MASK(%rip),%xmm29 + vpaddd ONE(%rip),%xmm2,%xmm0 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $0,%zmm0,%xmm2 + vpshufb %xmm29,%xmm0,%xmm0 + vmovdqu8 0(%rcx,%r11,1),%xmm6{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %xmm15,%xmm0,%xmm0 + vpxorq %xmm6,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm12 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %xmm29,%xmm6,%xmm6 + vextracti32x4 $0,%zmm6,%xmm13 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_643 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm6,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm6,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm6,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm6,%xmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_643 +.L_small_initial_partial_block_643: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + + + + + + + + + + + + vpxorq %xmm13,%xmm14,%xmm14 + + jmp .L_after_reduction_643 +.L_small_initial_compute_done_643: +.L_after_reduction_643: + jmp .L_small_initial_blocks_encrypted_642 +.L_small_initial_num_blocks_is_2_642: + vmovdqa64 SHUF_MASK(%rip),%ymm29 + vshufi64x2 $0,%ymm2,%ymm2,%ymm0 + vpaddd ddq_add_1234(%rip),%ymm0,%ymm0 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $1,%zmm0,%xmm2 + vpshufb %ymm29,%ymm0,%ymm0 + vmovdqu8 0(%rcx,%r11,1),%ymm6{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %ymm15,%ymm0,%ymm0 + vpxorq %ymm6,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm12 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %ymm29,%ymm6,%ymm6 + vextracti32x4 $1,%zmm6,%xmm13 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_644 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm6,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm6,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm6,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm6,%ymm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_644 +.L_small_initial_partial_block_644: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm6,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm6,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm6,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm6,%xmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_644: + + orq %r8,%r8 + je .L_after_reduction_644 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_644: + jmp .L_small_initial_blocks_encrypted_642 +.L_small_initial_num_blocks_is_3_642: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $2,%zmm0,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vmovdqu8 0(%rcx,%r11,1),%zmm6{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vpxorq %zmm6,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vextracti32x4 $2,%zmm6,%xmm13 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_645 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_645 +.L_small_initial_partial_block_645: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm6,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm6,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm6,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm6,%ymm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_645: + + orq %r8,%r8 + je .L_after_reduction_645 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_645: + jmp .L_small_initial_blocks_encrypted_642 +.L_small_initial_num_blocks_is_4_642: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $3,%zmm0,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vmovdqu8 0(%rcx,%r11,1),%zmm6{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vpxorq %zmm6,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vextracti32x4 $3,%zmm6,%xmm13 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_646 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_646 +.L_small_initial_partial_block_646: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_646: + + orq %r8,%r8 + je .L_after_reduction_646 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_646: + jmp .L_small_initial_blocks_encrypted_642 +.L_small_initial_num_blocks_is_5_642: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $64,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $0,%zmm3,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%xmm7{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %xmm15,%xmm3,%xmm3 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %xmm7,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %xmm29,%xmm7,%xmm7 + vextracti32x4 $0,%zmm7,%xmm13 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_647 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm7,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm7,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm7,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm7,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_647 +.L_small_initial_partial_block_647: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_647: + + orq %r8,%r8 + je .L_after_reduction_647 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_647: + jmp .L_small_initial_blocks_encrypted_642 +.L_small_initial_num_blocks_is_6_642: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $64,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $1,%zmm3,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%ymm7{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %ymm15,%ymm3,%ymm3 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %ymm7,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %ymm29,%ymm7,%ymm7 + vextracti32x4 $1,%zmm7,%xmm13 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_648 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm7,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm7,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm7,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm7,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_648 +.L_small_initial_partial_block_648: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm7,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm7,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm7,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm7,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_648: + + orq %r8,%r8 + je .L_after_reduction_648 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_648: + jmp .L_small_initial_blocks_encrypted_642 +.L_small_initial_num_blocks_is_7_642: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $64,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $2,%zmm3,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vextracti32x4 $2,%zmm7,%xmm13 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_649 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_649 +.L_small_initial_partial_block_649: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm7,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm7,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm7,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm7,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_649: + + orq %r8,%r8 + je .L_after_reduction_649 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_649: + jmp .L_small_initial_blocks_encrypted_642 +.L_small_initial_num_blocks_is_8_642: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $64,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $3,%zmm3,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vextracti32x4 $3,%zmm7,%xmm13 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_650 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 224(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_650 +.L_small_initial_partial_block_650: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_650: + + orq %r8,%r8 + je .L_after_reduction_650 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_650: + jmp .L_small_initial_blocks_encrypted_642 +.L_small_initial_num_blocks_is_9_642: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $128,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $0,%zmm4,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%xmm10{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %xmm15,%xmm4,%xmm4 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %xmm10,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %xmm29,%xmm10,%xmm10 + vextracti32x4 $0,%zmm10,%xmm13 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_651 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 208(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm10,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm10,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm10,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm10,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_651 +.L_small_initial_partial_block_651: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 224(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_651: + + orq %r8,%r8 + je .L_after_reduction_651 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_651: + jmp .L_small_initial_blocks_encrypted_642 +.L_small_initial_num_blocks_is_10_642: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $128,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $1,%zmm4,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%ymm10{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %ymm15,%ymm4,%ymm4 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %ymm10,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %ymm29,%ymm10,%ymm10 + vextracti32x4 $1,%zmm10,%xmm13 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_652 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 192(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm10,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm10,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm10,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm10,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_652 +.L_small_initial_partial_block_652: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 208(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm10,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm10,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm10,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm10,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_652: + + orq %r8,%r8 + je .L_after_reduction_652 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_652: + jmp .L_small_initial_blocks_encrypted_642 +.L_small_initial_num_blocks_is_11_642: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $128,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $2,%zmm4,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vextracti32x4 $2,%zmm10,%xmm13 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_653 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 176(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_653 +.L_small_initial_partial_block_653: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 192(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm10,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm10,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm10,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm10,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_653: + + orq %r8,%r8 + je .L_after_reduction_653 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_653: + jmp .L_small_initial_blocks_encrypted_642 +.L_small_initial_num_blocks_is_12_642: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $128,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $3,%zmm4,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vextracti32x4 $3,%zmm10,%xmm13 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_654 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 160(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 224(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_654 +.L_small_initial_partial_block_654: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 176(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_654: + + orq %r8,%r8 + je .L_after_reduction_654 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_654: + jmp .L_small_initial_blocks_encrypted_642 +.L_small_initial_num_blocks_is_13_642: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + vpaddd ddq_add_8888(%rip),%zmm3,%zmm5 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $192,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $0,%zmm5,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10 + vmovdqu8 192(%rcx,%r11,1),%xmm11{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vpxorq %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vaesenclast %xmm15,%xmm5,%xmm5 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vpxorq %xmm11,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %xmm29,%xmm11,%xmm11 + vextracti32x4 $0,%zmm11,%xmm13 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_655 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 144(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 208(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm11,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm11,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm11,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm11,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_655 +.L_small_initial_partial_block_655: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 160(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 224(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_655: + + orq %r8,%r8 + je .L_after_reduction_655 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_655: + jmp .L_small_initial_blocks_encrypted_642 +.L_small_initial_num_blocks_is_14_642: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + vpaddd ddq_add_8888(%rip),%zmm3,%zmm5 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $192,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $1,%zmm5,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10 + vmovdqu8 192(%rcx,%r11,1),%ymm11{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vpxorq %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vaesenclast %ymm15,%ymm5,%ymm5 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vpxorq %ymm11,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %ymm29,%ymm11,%ymm11 + vextracti32x4 $1,%zmm11,%xmm13 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_656 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 128(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 192(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm11,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm11,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm11,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm11,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_656 +.L_small_initial_partial_block_656: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 144(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 208(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm11,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm11,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm11,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm11,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_656: + + orq %r8,%r8 + je .L_after_reduction_656 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_656: + jmp .L_small_initial_blocks_encrypted_642 +.L_small_initial_num_blocks_is_15_642: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + vpaddd ddq_add_8888(%rip),%zmm3,%zmm5 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $192,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $2,%zmm5,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10 + vmovdqu8 192(%rcx,%r11,1),%zmm11{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vpxorq %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vaesenclast %zmm15,%zmm5,%zmm5 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vpxorq %zmm11,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %zmm29,%zmm11,%zmm11 + vextracti32x4 $2,%zmm11,%xmm13 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_657 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 112(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 176(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm11,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm11,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm11,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm11,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_657 +.L_small_initial_partial_block_657: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 128(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 192(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm11,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm11,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm11,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm11,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_657: + + orq %r8,%r8 + je .L_after_reduction_657 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_657: + jmp .L_small_initial_blocks_encrypted_642 +.L_small_initial_num_blocks_is_16_642: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + vpaddd ddq_add_8888(%rip),%zmm3,%zmm5 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $192,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $3,%zmm5,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10 + vmovdqu8 192(%rcx,%r11,1),%zmm11{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vpxorq %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vaesenclast %zmm15,%zmm5,%zmm5 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vpxorq %zmm11,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %zmm29,%zmm11,%zmm11 + vextracti32x4 $3,%zmm11,%xmm13 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_658: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 112(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 176(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm11,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm11,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm11,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm11,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_658: + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_658: +.L_small_initial_blocks_encrypted_642: +.L_ghash_done_497: + vmovdqu64 %xmm2,0(%rsi) + vmovdqu64 %xmm14,64(%rsi) +.L_enc_dec_done_497: + jmp .Lexit_gcm_decrypt +.align 32 +.Laes_gcm_decrypt_192_avx512: + orq %r8,%r8 + je .L_enc_dec_done_659 + xorq %r14,%r14 + vmovdqu64 64(%rsi),%xmm14 + + movq (%rdx),%r11 + orq %r11,%r11 + je .L_partial_block_done_660 + movl $16,%r10d + leaq byte_len_to_mask_table(%rip),%r12 + cmpq %r10,%r8 + cmovcq %r8,%r10 + kmovw (%r12,%r10,2),%k1 + vmovdqu8 (%rcx),%xmm0{%k1}{z} + + vmovdqu64 16(%rsi),%xmm3 + vmovdqu64 336(%rsi),%xmm4 + + + + leaq SHIFT_MASK(%rip),%r12 + addq %r11,%r12 + vmovdqu64 (%r12),%xmm5 + vpshufb %xmm5,%xmm3,%xmm3 + + vmovdqa64 %xmm0,%xmm6 + vpxorq %xmm0,%xmm3,%xmm3 + + + leaq (%r8,%r11,1),%r13 + subq $16,%r13 + jge .L_no_extra_mask_660 + subq %r13,%r12 +.L_no_extra_mask_660: + + + + vmovdqu64 16(%r12),%xmm0 + vpand %xmm0,%xmm3,%xmm3 + vpand %xmm0,%xmm6,%xmm6 + vpshufb SHUF_MASK(%rip),%xmm6,%xmm6 + vpshufb %xmm5,%xmm6,%xmm6 + vpxorq %xmm6,%xmm14,%xmm14 + cmpq $0,%r13 + jl .L_partial_incomplete_660 + + vpclmulqdq $0x11,%xmm4,%xmm14,%xmm7 + vpclmulqdq $0x00,%xmm4,%xmm14,%xmm10 + vpclmulqdq $0x01,%xmm4,%xmm14,%xmm11 + vpclmulqdq $0x10,%xmm4,%xmm14,%xmm14 + vpxorq %xmm11,%xmm14,%xmm14 + + vpsrldq $8,%xmm14,%xmm11 + vpslldq $8,%xmm14,%xmm14 + vpxorq %xmm11,%xmm7,%xmm7 + vpxorq %xmm10,%xmm14,%xmm14 + + + + vmovdqu64 POLY2(%rip),%xmm11 + + vpclmulqdq $0x01,%xmm14,%xmm11,%xmm10 + vpslldq $8,%xmm10,%xmm10 + vpxorq %xmm10,%xmm14,%xmm14 + + + + vpclmulqdq $0x00,%xmm14,%xmm11,%xmm10 + vpsrldq $4,%xmm10,%xmm10 + vpclmulqdq $0x10,%xmm14,%xmm11,%xmm14 + vpslldq $4,%xmm14,%xmm14 + + vpternlogq $0x96,%xmm10,%xmm7,%xmm14 + + movq $0,(%rdx) + + movq %r11,%r12 + movq $16,%r11 + subq %r12,%r11 + jmp .L_enc_dec_done_660 + +.L_partial_incomplete_660: + addq %r8,(%rdx) + movq %r8,%r11 + +.L_enc_dec_done_660: + + + leaq byte_len_to_mask_table(%rip),%r12 + kmovw (%r12,%r11,2),%k1 + vmovdqu64 %xmm14,64(%rsi) + movq %r9,%r12 + vmovdqu8 %xmm3,(%r12){%k1} +.L_partial_block_done_660: + vmovdqu64 0(%rsi),%xmm2 + subq %r11,%r8 + je .L_enc_dec_done_659 + cmpq $256,%r8 + jbe .L_message_below_equal_16_blocks_659 + + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vmovdqa64 ddq_addbe_4444(%rip),%zmm27 + vmovdqa64 ddq_addbe_1234(%rip),%zmm28 + + + + + + + vmovd %xmm2,%r15d + andl $255,%r15d + + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpshufb %zmm29,%zmm2,%zmm2 + + + + cmpb $240,%r15b + jae .L_next_16_overflow_661 + vpaddd %zmm28,%zmm2,%zmm7 + vpaddd %zmm27,%zmm7,%zmm10 + vpaddd %zmm27,%zmm10,%zmm11 + vpaddd %zmm27,%zmm11,%zmm12 + jmp .L_next_16_ok_661 +.L_next_16_overflow_661: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm12 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm7 + vpaddd %zmm12,%zmm7,%zmm10 + vpaddd %zmm12,%zmm10,%zmm11 + vpaddd %zmm12,%zmm11,%zmm12 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %zmm29,%zmm11,%zmm11 + vpshufb %zmm29,%zmm12,%zmm12 +.L_next_16_ok_661: + vshufi64x2 $255,%zmm12,%zmm12,%zmm2 + addb $16,%r15b + + vmovdqu8 0(%rcx,%r11,1),%zmm0 + vmovdqu8 64(%rcx,%r11,1),%zmm3 + vmovdqu8 128(%rcx,%r11,1),%zmm4 + vmovdqu8 192(%rcx,%r11,1),%zmm5 + + + vbroadcastf64x2 0(%rdi),%zmm6 + vpxorq %zmm6,%zmm7,%zmm7 + vpxorq %zmm6,%zmm10,%zmm10 + vpxorq %zmm6,%zmm11,%zmm11 + vpxorq %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 16(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 32(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 48(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 64(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 80(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 96(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 112(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 128(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 144(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 160(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 176(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 192(%rdi),%zmm6 + vaesenclast %zmm6,%zmm7,%zmm7 + vaesenclast %zmm6,%zmm10,%zmm10 + vaesenclast %zmm6,%zmm11,%zmm11 + vaesenclast %zmm6,%zmm12,%zmm12 + + + vpxorq %zmm0,%zmm7,%zmm7 + vpxorq %zmm3,%zmm10,%zmm10 + vpxorq %zmm4,%zmm11,%zmm11 + vpxorq %zmm5,%zmm12,%zmm12 + + + movq %r9,%r10 + vmovdqu8 %zmm7,0(%r10,%r11,1) + vmovdqu8 %zmm10,64(%r10,%r11,1) + vmovdqu8 %zmm11,128(%r10,%r11,1) + vmovdqu8 %zmm12,192(%r10,%r11,1) + + vpshufb %zmm29,%zmm0,%zmm7 + vpshufb %zmm29,%zmm3,%zmm10 + vpshufb %zmm29,%zmm4,%zmm11 + vpshufb %zmm29,%zmm5,%zmm12 + vmovdqa64 %zmm7,768(%rsp) + vmovdqa64 %zmm10,832(%rsp) + vmovdqa64 %zmm11,896(%rsp) + vmovdqa64 %zmm12,960(%rsp) + testq %r14,%r14 + jnz .L_skip_hkeys_precomputation_662 + + vmovdqu64 288(%rsi),%zmm0 + vmovdqu64 %zmm0,704(%rsp) + + vmovdqu64 224(%rsi),%zmm3 + vmovdqu64 %zmm3,640(%rsp) + + + vshufi64x2 $0x00,%zmm3,%zmm3,%zmm3 + + vmovdqu64 160(%rsi),%zmm4 + vmovdqu64 %zmm4,576(%rsp) + + vmovdqu64 96(%rsi),%zmm5 + vmovdqu64 %zmm5,512(%rsp) +.L_skip_hkeys_precomputation_662: + cmpq $512,%r8 + jb .L_message_below_32_blocks_659 + + + + cmpb $240,%r15b + jae .L_next_16_overflow_663 + vpaddd %zmm28,%zmm2,%zmm7 + vpaddd %zmm27,%zmm7,%zmm10 + vpaddd %zmm27,%zmm10,%zmm11 + vpaddd %zmm27,%zmm11,%zmm12 + jmp .L_next_16_ok_663 +.L_next_16_overflow_663: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm12 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm7 + vpaddd %zmm12,%zmm7,%zmm10 + vpaddd %zmm12,%zmm10,%zmm11 + vpaddd %zmm12,%zmm11,%zmm12 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %zmm29,%zmm11,%zmm11 + vpshufb %zmm29,%zmm12,%zmm12 +.L_next_16_ok_663: + vshufi64x2 $255,%zmm12,%zmm12,%zmm2 + addb $16,%r15b + + vmovdqu8 256(%rcx,%r11,1),%zmm0 + vmovdqu8 320(%rcx,%r11,1),%zmm3 + vmovdqu8 384(%rcx,%r11,1),%zmm4 + vmovdqu8 448(%rcx,%r11,1),%zmm5 + + + vbroadcastf64x2 0(%rdi),%zmm6 + vpxorq %zmm6,%zmm7,%zmm7 + vpxorq %zmm6,%zmm10,%zmm10 + vpxorq %zmm6,%zmm11,%zmm11 + vpxorq %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 16(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 32(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 48(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 64(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 80(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 96(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 112(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 128(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 144(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 160(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 176(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 192(%rdi),%zmm6 + vaesenclast %zmm6,%zmm7,%zmm7 + vaesenclast %zmm6,%zmm10,%zmm10 + vaesenclast %zmm6,%zmm11,%zmm11 + vaesenclast %zmm6,%zmm12,%zmm12 + + + vpxorq %zmm0,%zmm7,%zmm7 + vpxorq %zmm3,%zmm10,%zmm10 + vpxorq %zmm4,%zmm11,%zmm11 + vpxorq %zmm5,%zmm12,%zmm12 + + + movq %r9,%r10 + vmovdqu8 %zmm7,256(%r10,%r11,1) + vmovdqu8 %zmm10,320(%r10,%r11,1) + vmovdqu8 %zmm11,384(%r10,%r11,1) + vmovdqu8 %zmm12,448(%r10,%r11,1) + + vpshufb %zmm29,%zmm0,%zmm7 + vpshufb %zmm29,%zmm3,%zmm10 + vpshufb %zmm29,%zmm4,%zmm11 + vpshufb %zmm29,%zmm5,%zmm12 + vmovdqa64 %zmm7,1024(%rsp) + vmovdqa64 %zmm10,1088(%rsp) + vmovdqa64 %zmm11,1152(%rsp) + vmovdqa64 %zmm12,1216(%rsp) + testq %r14,%r14 + jnz .L_skip_hkeys_precomputation_664 + vmovdqu64 640(%rsp),%zmm3 + + + vshufi64x2 $0x00,%zmm3,%zmm3,%zmm3 + + vmovdqu64 576(%rsp),%zmm4 + vmovdqu64 512(%rsp),%zmm5 + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,448(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,384(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,320(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,256(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,192(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,128(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,64(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,0(%rsp) +.L_skip_hkeys_precomputation_664: + movq $1,%r14 + addq $512,%r11 + subq $512,%r8 + + cmpq $768,%r8 + jb .L_no_more_big_nblocks_659 +.L_encrypt_big_nblocks_659: + cmpb $240,%r15b + jae .L_16_blocks_overflow_665 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_665 +.L_16_blocks_overflow_665: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_665: + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm15,%zmm10,%zmm26 + vpxorq %zmm12,%zmm6,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1) + vpshufb %zmm29,%zmm17,%zmm0 + vpshufb %zmm29,%zmm19,%zmm3 + vpshufb %zmm29,%zmm20,%zmm4 + vpshufb %zmm29,%zmm21,%zmm5 + vmovdqa64 %zmm0,1280(%rsp) + vmovdqa64 %zmm3,1344(%rsp) + vmovdqa64 %zmm4,1408(%rsp) + vmovdqa64 %zmm5,1472(%rsp) + cmpb $240,%r15b + jae .L_16_blocks_overflow_666 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_666 +.L_16_blocks_overflow_666: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_666: + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 256(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 320(%rsp),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 384(%rsp),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 448(%rsp),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 256(%rcx,%r11,1),%zmm17 + vmovdqu8 320(%rcx,%r11,1),%zmm19 + vmovdqu8 384(%rcx,%r11,1),%zmm20 + vmovdqu8 448(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vpternlogq $0x96,%zmm12,%zmm6,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,256(%r10,%r11,1) + vmovdqu8 %zmm3,320(%r10,%r11,1) + vmovdqu8 %zmm4,384(%r10,%r11,1) + vmovdqu8 %zmm5,448(%r10,%r11,1) + vpshufb %zmm29,%zmm17,%zmm0 + vpshufb %zmm29,%zmm19,%zmm3 + vpshufb %zmm29,%zmm20,%zmm4 + vpshufb %zmm29,%zmm21,%zmm5 + vmovdqa64 %zmm0,768(%rsp) + vmovdqa64 %zmm3,832(%rsp) + vmovdqa64 %zmm4,896(%rsp) + vmovdqa64 %zmm5,960(%rsp) + cmpb $240,%r15b + jae .L_16_blocks_overflow_667 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_667 +.L_16_blocks_overflow_667: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_667: + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 512(%rcx,%r11,1),%zmm17 + vmovdqu8 576(%rcx,%r11,1),%zmm19 + vmovdqu8 640(%rcx,%r11,1),%zmm20 + vmovdqu8 704(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + + + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpternlogq $0x96,%zmm15,%zmm12,%zmm6 + vpxorq %zmm24,%zmm6,%zmm6 + vpternlogq $0x96,%zmm10,%zmm13,%zmm7 + vpxorq %zmm25,%zmm7,%zmm7 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vextracti64x4 $1,%zmm6,%ymm12 + vpxorq %ymm12,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm12 + vpxorq %xmm12,%xmm6,%xmm6 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm6 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,512(%r10,%r11,1) + vmovdqu8 %zmm3,576(%r10,%r11,1) + vmovdqu8 %zmm4,640(%r10,%r11,1) + vmovdqu8 %zmm5,704(%r10,%r11,1) + vpshufb %zmm29,%zmm17,%zmm0 + vpshufb %zmm29,%zmm19,%zmm3 + vpshufb %zmm29,%zmm20,%zmm4 + vpshufb %zmm29,%zmm21,%zmm5 + vmovdqa64 %zmm0,1024(%rsp) + vmovdqa64 %zmm3,1088(%rsp) + vmovdqa64 %zmm4,1152(%rsp) + vmovdqa64 %zmm5,1216(%rsp) + vmovdqa64 %zmm6,%zmm14 + + addq $768,%r11 + subq $768,%r8 + cmpq $768,%r8 + jae .L_encrypt_big_nblocks_659 + +.L_no_more_big_nblocks_659: + + cmpq $512,%r8 + jae .L_encrypt_32_blocks_659 + + cmpq $256,%r8 + jae .L_encrypt_16_blocks_659 +.L_encrypt_0_blocks_ghash_32_659: + movl %r8d,%r10d + andl $~15,%r10d + movl $256,%ebx + subl %r10d,%ebx + vmovdqa64 768(%rsp),%zmm13 + vpxorq %zmm14,%zmm13,%zmm13 + vmovdqu64 0(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 832(%rsp),%zmm13 + vmovdqu64 64(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpxorq %zmm10,%zmm4,%zmm26 + vpxorq %zmm6,%zmm0,%zmm24 + vpxorq %zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 896(%rsp),%zmm13 + vmovdqu64 128(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 960(%rsp),%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + addl $256,%ebx + movl %r8d,%r10d + addl $15,%r10d + shrl $4,%r10d + je .L_last_num_blocks_is_0_668 + + cmpl $8,%r10d + je .L_last_num_blocks_is_8_668 + jb .L_last_num_blocks_is_7_1_668 + + + cmpl $12,%r10d + je .L_last_num_blocks_is_12_668 + jb .L_last_num_blocks_is_11_9_668 + + + cmpl $15,%r10d + je .L_last_num_blocks_is_15_668 + ja .L_last_num_blocks_is_16_668 + cmpl $14,%r10d + je .L_last_num_blocks_is_14_668 + jmp .L_last_num_blocks_is_13_668 + +.L_last_num_blocks_is_11_9_668: + + cmpl $10,%r10d + je .L_last_num_blocks_is_10_668 + ja .L_last_num_blocks_is_11_668 + jmp .L_last_num_blocks_is_9_668 + +.L_last_num_blocks_is_7_1_668: + cmpl $4,%r10d + je .L_last_num_blocks_is_4_668 + jb .L_last_num_blocks_is_3_1_668 + + cmpl $6,%r10d + ja .L_last_num_blocks_is_7_668 + je .L_last_num_blocks_is_6_668 + jmp .L_last_num_blocks_is_5_668 + +.L_last_num_blocks_is_3_1_668: + + cmpl $2,%r10d + ja .L_last_num_blocks_is_3_668 + je .L_last_num_blocks_is_2_668 +.L_last_num_blocks_is_1_668: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $255,%r15d + jae .L_16_blocks_overflow_669 + vpaddd %xmm28,%xmm2,%xmm0 + jmp .L_16_blocks_ok_669 + +.L_16_blocks_overflow_669: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %xmm29,%xmm0,%xmm0 +.L_16_blocks_ok_669: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%xmm17{%k1}{z} + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vaesenclast %xmm30,%xmm0,%xmm0 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %xmm29,%xmm17,%xmm17 + vextracti32x4 $0,%zmm17,%xmm7 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_670 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_670 +.L_small_initial_partial_block_670: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm0 + + + vpclmulqdq $0x01,%xmm25,%xmm0,%xmm3 + vpslldq $8,%xmm3,%xmm3 + vpxorq %xmm3,%xmm25,%xmm3 + + + vpclmulqdq $0x00,%xmm3,%xmm0,%xmm4 + vpsrldq $4,%xmm4,%xmm4 + vpclmulqdq $0x10,%xmm3,%xmm0,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm4,%xmm14 + + + + + + + + + + + + + vpxorq %xmm7,%xmm14,%xmm14 + + jmp .L_after_reduction_670 +.L_small_initial_compute_done_670: +.L_after_reduction_670: + jmp .L_last_blocks_done_668 +.L_last_num_blocks_is_2_668: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $254,%r15d + jae .L_16_blocks_overflow_671 + vpaddd %ymm28,%ymm2,%ymm0 + jmp .L_16_blocks_ok_671 + +.L_16_blocks_overflow_671: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %ymm29,%ymm0,%ymm0 +.L_16_blocks_ok_671: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%ymm17{%k1}{z} + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vaesenclast %ymm30,%ymm0,%ymm0 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %ymm29,%ymm17,%ymm17 + vextracti32x4 $1,%zmm17,%xmm7 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_672 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_672 +.L_small_initial_partial_block_672: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_672: + + orq %r8,%r8 + je .L_after_reduction_672 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_672: + jmp .L_last_blocks_done_668 +.L_last_num_blocks_is_3_668: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $253,%r15d + jae .L_16_blocks_overflow_673 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_673 + +.L_16_blocks_overflow_673: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_673: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vextracti32x4 $2,%zmm17,%xmm7 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_674 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_674 +.L_small_initial_partial_block_674: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_674: + + orq %r8,%r8 + je .L_after_reduction_674 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_674: + jmp .L_last_blocks_done_668 +.L_last_num_blocks_is_4_668: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $252,%r15d + jae .L_16_blocks_overflow_675 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_675 + +.L_16_blocks_overflow_675: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_675: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vextracti32x4 $3,%zmm17,%xmm7 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_676 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_676 +.L_small_initial_partial_block_676: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_676: + + orq %r8,%r8 + je .L_after_reduction_676 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_676: + jmp .L_last_blocks_done_668 +.L_last_num_blocks_is_5_668: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $251,%r15d + jae .L_16_blocks_overflow_677 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %xmm27,%xmm0,%xmm3 + jmp .L_16_blocks_ok_677 + +.L_16_blocks_overflow_677: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 +.L_16_blocks_ok_677: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%xmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %xmm30,%xmm3,%xmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %xmm19,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %xmm29,%xmm19,%xmm19 + vextracti32x4 $0,%zmm19,%xmm7 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_678 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_678 +.L_small_initial_partial_block_678: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_678: + + orq %r8,%r8 + je .L_after_reduction_678 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_678: + jmp .L_last_blocks_done_668 +.L_last_num_blocks_is_6_668: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $250,%r15d + jae .L_16_blocks_overflow_679 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %ymm27,%ymm0,%ymm3 + jmp .L_16_blocks_ok_679 + +.L_16_blocks_overflow_679: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 +.L_16_blocks_ok_679: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%ymm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %ymm30,%ymm3,%ymm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %ymm29,%ymm19,%ymm19 + vextracti32x4 $1,%zmm19,%xmm7 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_680 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_680 +.L_small_initial_partial_block_680: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_680: + + orq %r8,%r8 + je .L_after_reduction_680 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_680: + jmp .L_last_blocks_done_668 +.L_last_num_blocks_is_7_668: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $249,%r15d + jae .L_16_blocks_overflow_681 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_681 + +.L_16_blocks_overflow_681: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_681: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vextracti32x4 $2,%zmm19,%xmm7 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_682 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_682 +.L_small_initial_partial_block_682: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_682: + + orq %r8,%r8 + je .L_after_reduction_682 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_682: + jmp .L_last_blocks_done_668 +.L_last_num_blocks_is_8_668: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $248,%r15d + jae .L_16_blocks_overflow_683 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_683 + +.L_16_blocks_overflow_683: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_683: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vextracti32x4 $3,%zmm19,%xmm7 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_684 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_684 +.L_small_initial_partial_block_684: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_684: + + orq %r8,%r8 + je .L_after_reduction_684 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_684: + jmp .L_last_blocks_done_668 +.L_last_num_blocks_is_9_668: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $247,%r15d + jae .L_16_blocks_overflow_685 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %xmm27,%xmm3,%xmm4 + jmp .L_16_blocks_ok_685 + +.L_16_blocks_overflow_685: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 +.L_16_blocks_ok_685: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%xmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %xmm30,%xmm4,%xmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %xmm20,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %xmm29,%xmm20,%xmm20 + vextracti32x4 $0,%zmm20,%xmm7 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_686 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_686 +.L_small_initial_partial_block_686: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_686: + + orq %r8,%r8 + je .L_after_reduction_686 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_686: + jmp .L_last_blocks_done_668 +.L_last_num_blocks_is_10_668: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $246,%r15d + jae .L_16_blocks_overflow_687 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %ymm27,%ymm3,%ymm4 + jmp .L_16_blocks_ok_687 + +.L_16_blocks_overflow_687: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 +.L_16_blocks_ok_687: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%ymm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %ymm30,%ymm4,%ymm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %ymm20,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %ymm29,%ymm20,%ymm20 + vextracti32x4 $1,%zmm20,%xmm7 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_688 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_688 +.L_small_initial_partial_block_688: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_688: + + orq %r8,%r8 + je .L_after_reduction_688 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_688: + jmp .L_last_blocks_done_668 +.L_last_num_blocks_is_11_668: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $245,%r15d + jae .L_16_blocks_overflow_689 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_689 + +.L_16_blocks_overflow_689: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_689: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vextracti32x4 $2,%zmm20,%xmm7 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_690 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_690 +.L_small_initial_partial_block_690: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_690: + + orq %r8,%r8 + je .L_after_reduction_690 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_690: + jmp .L_last_blocks_done_668 +.L_last_num_blocks_is_12_668: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $244,%r15d + jae .L_16_blocks_overflow_691 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_691 + +.L_16_blocks_overflow_691: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_691: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vextracti32x4 $3,%zmm20,%xmm7 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_692 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_692 +.L_small_initial_partial_block_692: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_692: + + orq %r8,%r8 + je .L_after_reduction_692 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_692: + jmp .L_last_blocks_done_668 +.L_last_num_blocks_is_13_668: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $243,%r15d + jae .L_16_blocks_overflow_693 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %xmm27,%xmm4,%xmm5 + jmp .L_16_blocks_ok_693 + +.L_16_blocks_overflow_693: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 +.L_16_blocks_ok_693: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%xmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %xmm30,%xmm5,%xmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %xmm21,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %xmm29,%xmm21,%xmm21 + vextracti32x4 $0,%zmm21,%xmm7 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_694 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_694 +.L_small_initial_partial_block_694: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_694: + + orq %r8,%r8 + je .L_after_reduction_694 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_694: + jmp .L_last_blocks_done_668 +.L_last_num_blocks_is_14_668: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $242,%r15d + jae .L_16_blocks_overflow_695 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %ymm27,%ymm4,%ymm5 + jmp .L_16_blocks_ok_695 + +.L_16_blocks_overflow_695: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 +.L_16_blocks_ok_695: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%ymm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %ymm30,%ymm5,%ymm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %ymm21,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %ymm29,%ymm21,%ymm21 + vextracti32x4 $1,%zmm21,%xmm7 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_696 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_696 +.L_small_initial_partial_block_696: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_696: + + orq %r8,%r8 + je .L_after_reduction_696 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_696: + jmp .L_last_blocks_done_668 +.L_last_num_blocks_is_15_668: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $241,%r15d + jae .L_16_blocks_overflow_697 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_697 + +.L_16_blocks_overflow_697: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_697: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %zmm29,%zmm21,%zmm21 + vextracti32x4 $2,%zmm21,%xmm7 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_698 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_698 +.L_small_initial_partial_block_698: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_698: + + orq %r8,%r8 + je .L_after_reduction_698 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_698: + jmp .L_last_blocks_done_668 +.L_last_num_blocks_is_16_668: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $240,%r15d + jae .L_16_blocks_overflow_699 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_699 + +.L_16_blocks_overflow_699: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_699: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %zmm29,%zmm21,%zmm21 + vextracti32x4 $3,%zmm21,%xmm7 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_700: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_700: + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_700: + jmp .L_last_blocks_done_668 +.L_last_num_blocks_is_0_668: + vmovdqa64 1024(%rsp),%zmm13 + vmovdqu64 0(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1088(%rsp),%zmm13 + vmovdqu64 64(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 1152(%rsp),%zmm13 + vmovdqu64 128(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1216(%rsp),%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + +.L_last_blocks_done_668: + vpshufb %xmm29,%xmm2,%xmm2 + jmp .L_ghash_done_659 +.L_encrypt_32_blocks_659: + cmpb $240,%r15b + jae .L_16_blocks_overflow_701 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_701 +.L_16_blocks_overflow_701: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_701: + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm15,%zmm10,%zmm26 + vpxorq %zmm12,%zmm6,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1) + vpshufb %zmm29,%zmm17,%zmm0 + vpshufb %zmm29,%zmm19,%zmm3 + vpshufb %zmm29,%zmm20,%zmm4 + vpshufb %zmm29,%zmm21,%zmm5 + vmovdqa64 %zmm0,1280(%rsp) + vmovdqa64 %zmm3,1344(%rsp) + vmovdqa64 %zmm4,1408(%rsp) + vmovdqa64 %zmm5,1472(%rsp) + cmpb $240,%r15b + jae .L_16_blocks_overflow_702 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_702 +.L_16_blocks_overflow_702: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_702: + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 256(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 320(%rsp),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 384(%rsp),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 448(%rsp),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 256(%rcx,%r11,1),%zmm17 + vmovdqu8 320(%rcx,%r11,1),%zmm19 + vmovdqu8 384(%rcx,%r11,1),%zmm20 + vmovdqu8 448(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vpternlogq $0x96,%zmm12,%zmm6,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,256(%r10,%r11,1) + vmovdqu8 %zmm3,320(%r10,%r11,1) + vmovdqu8 %zmm4,384(%r10,%r11,1) + vmovdqu8 %zmm5,448(%r10,%r11,1) + vpshufb %zmm29,%zmm17,%zmm0 + vpshufb %zmm29,%zmm19,%zmm3 + vpshufb %zmm29,%zmm20,%zmm4 + vpshufb %zmm29,%zmm21,%zmm5 + vmovdqa64 %zmm0,768(%rsp) + vmovdqa64 %zmm3,832(%rsp) + vmovdqa64 %zmm4,896(%rsp) + vmovdqa64 %zmm5,960(%rsp) + vmovdqa64 1280(%rsp),%zmm13 + vmovdqu64 512(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1344(%rsp),%zmm13 + vmovdqu64 576(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 1408(%rsp),%zmm13 + vmovdqu64 640(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1472(%rsp),%zmm13 + vmovdqu64 704(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + + subq $512,%r8 + addq $512,%r11 + movl %r8d,%r10d + andl $~15,%r10d + movl $512,%ebx + subl %r10d,%ebx + movl %r8d,%r10d + addl $15,%r10d + shrl $4,%r10d + je .L_last_num_blocks_is_0_703 + + cmpl $8,%r10d + je .L_last_num_blocks_is_8_703 + jb .L_last_num_blocks_is_7_1_703 + + + cmpl $12,%r10d + je .L_last_num_blocks_is_12_703 + jb .L_last_num_blocks_is_11_9_703 + + + cmpl $15,%r10d + je .L_last_num_blocks_is_15_703 + ja .L_last_num_blocks_is_16_703 + cmpl $14,%r10d + je .L_last_num_blocks_is_14_703 + jmp .L_last_num_blocks_is_13_703 + +.L_last_num_blocks_is_11_9_703: + + cmpl $10,%r10d + je .L_last_num_blocks_is_10_703 + ja .L_last_num_blocks_is_11_703 + jmp .L_last_num_blocks_is_9_703 + +.L_last_num_blocks_is_7_1_703: + cmpl $4,%r10d + je .L_last_num_blocks_is_4_703 + jb .L_last_num_blocks_is_3_1_703 + + cmpl $6,%r10d + ja .L_last_num_blocks_is_7_703 + je .L_last_num_blocks_is_6_703 + jmp .L_last_num_blocks_is_5_703 + +.L_last_num_blocks_is_3_1_703: + + cmpl $2,%r10d + ja .L_last_num_blocks_is_3_703 + je .L_last_num_blocks_is_2_703 +.L_last_num_blocks_is_1_703: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $255,%r15d + jae .L_16_blocks_overflow_704 + vpaddd %xmm28,%xmm2,%xmm0 + jmp .L_16_blocks_ok_704 + +.L_16_blocks_overflow_704: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %xmm29,%xmm0,%xmm0 +.L_16_blocks_ok_704: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%xmm17{%k1}{z} + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vaesenclast %xmm30,%xmm0,%xmm0 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %xmm29,%xmm17,%xmm17 + vextracti32x4 $0,%zmm17,%xmm7 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_705 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_705 +.L_small_initial_partial_block_705: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm0 + + + vpclmulqdq $0x01,%xmm25,%xmm0,%xmm3 + vpslldq $8,%xmm3,%xmm3 + vpxorq %xmm3,%xmm25,%xmm3 + + + vpclmulqdq $0x00,%xmm3,%xmm0,%xmm4 + vpsrldq $4,%xmm4,%xmm4 + vpclmulqdq $0x10,%xmm3,%xmm0,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm4,%xmm14 + + + + + + + + + + + + + vpxorq %xmm7,%xmm14,%xmm14 + + jmp .L_after_reduction_705 +.L_small_initial_compute_done_705: +.L_after_reduction_705: + jmp .L_last_blocks_done_703 +.L_last_num_blocks_is_2_703: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $254,%r15d + jae .L_16_blocks_overflow_706 + vpaddd %ymm28,%ymm2,%ymm0 + jmp .L_16_blocks_ok_706 + +.L_16_blocks_overflow_706: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %ymm29,%ymm0,%ymm0 +.L_16_blocks_ok_706: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%ymm17{%k1}{z} + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vaesenclast %ymm30,%ymm0,%ymm0 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %ymm29,%ymm17,%ymm17 + vextracti32x4 $1,%zmm17,%xmm7 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_707 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_707 +.L_small_initial_partial_block_707: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_707: + + orq %r8,%r8 + je .L_after_reduction_707 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_707: + jmp .L_last_blocks_done_703 +.L_last_num_blocks_is_3_703: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $253,%r15d + jae .L_16_blocks_overflow_708 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_708 + +.L_16_blocks_overflow_708: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_708: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vextracti32x4 $2,%zmm17,%xmm7 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_709 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_709 +.L_small_initial_partial_block_709: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_709: + + orq %r8,%r8 + je .L_after_reduction_709 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_709: + jmp .L_last_blocks_done_703 +.L_last_num_blocks_is_4_703: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $252,%r15d + jae .L_16_blocks_overflow_710 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_710 + +.L_16_blocks_overflow_710: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_710: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vextracti32x4 $3,%zmm17,%xmm7 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_711 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_711 +.L_small_initial_partial_block_711: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_711: + + orq %r8,%r8 + je .L_after_reduction_711 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_711: + jmp .L_last_blocks_done_703 +.L_last_num_blocks_is_5_703: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $251,%r15d + jae .L_16_blocks_overflow_712 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %xmm27,%xmm0,%xmm3 + jmp .L_16_blocks_ok_712 + +.L_16_blocks_overflow_712: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 +.L_16_blocks_ok_712: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%xmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %xmm30,%xmm3,%xmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %xmm19,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %xmm29,%xmm19,%xmm19 + vextracti32x4 $0,%zmm19,%xmm7 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_713 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_713 +.L_small_initial_partial_block_713: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_713: + + orq %r8,%r8 + je .L_after_reduction_713 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_713: + jmp .L_last_blocks_done_703 +.L_last_num_blocks_is_6_703: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $250,%r15d + jae .L_16_blocks_overflow_714 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %ymm27,%ymm0,%ymm3 + jmp .L_16_blocks_ok_714 + +.L_16_blocks_overflow_714: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 +.L_16_blocks_ok_714: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%ymm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %ymm30,%ymm3,%ymm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %ymm29,%ymm19,%ymm19 + vextracti32x4 $1,%zmm19,%xmm7 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_715 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_715 +.L_small_initial_partial_block_715: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_715: + + orq %r8,%r8 + je .L_after_reduction_715 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_715: + jmp .L_last_blocks_done_703 +.L_last_num_blocks_is_7_703: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $249,%r15d + jae .L_16_blocks_overflow_716 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_716 + +.L_16_blocks_overflow_716: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_716: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vextracti32x4 $2,%zmm19,%xmm7 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_717 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_717 +.L_small_initial_partial_block_717: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_717: + + orq %r8,%r8 + je .L_after_reduction_717 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_717: + jmp .L_last_blocks_done_703 +.L_last_num_blocks_is_8_703: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $248,%r15d + jae .L_16_blocks_overflow_718 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_718 + +.L_16_blocks_overflow_718: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_718: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vextracti32x4 $3,%zmm19,%xmm7 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_719 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_719 +.L_small_initial_partial_block_719: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_719: + + orq %r8,%r8 + je .L_after_reduction_719 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_719: + jmp .L_last_blocks_done_703 +.L_last_num_blocks_is_9_703: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $247,%r15d + jae .L_16_blocks_overflow_720 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %xmm27,%xmm3,%xmm4 + jmp .L_16_blocks_ok_720 + +.L_16_blocks_overflow_720: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 +.L_16_blocks_ok_720: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%xmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %xmm30,%xmm4,%xmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %xmm20,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %xmm29,%xmm20,%xmm20 + vextracti32x4 $0,%zmm20,%xmm7 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_721 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_721 +.L_small_initial_partial_block_721: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_721: + + orq %r8,%r8 + je .L_after_reduction_721 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_721: + jmp .L_last_blocks_done_703 +.L_last_num_blocks_is_10_703: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $246,%r15d + jae .L_16_blocks_overflow_722 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %ymm27,%ymm3,%ymm4 + jmp .L_16_blocks_ok_722 + +.L_16_blocks_overflow_722: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 +.L_16_blocks_ok_722: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%ymm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %ymm30,%ymm4,%ymm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %ymm20,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %ymm29,%ymm20,%ymm20 + vextracti32x4 $1,%zmm20,%xmm7 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_723 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_723 +.L_small_initial_partial_block_723: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_723: + + orq %r8,%r8 + je .L_after_reduction_723 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_723: + jmp .L_last_blocks_done_703 +.L_last_num_blocks_is_11_703: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $245,%r15d + jae .L_16_blocks_overflow_724 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_724 + +.L_16_blocks_overflow_724: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_724: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vextracti32x4 $2,%zmm20,%xmm7 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_725 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_725 +.L_small_initial_partial_block_725: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_725: + + orq %r8,%r8 + je .L_after_reduction_725 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_725: + jmp .L_last_blocks_done_703 +.L_last_num_blocks_is_12_703: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $244,%r15d + jae .L_16_blocks_overflow_726 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_726 + +.L_16_blocks_overflow_726: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_726: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vextracti32x4 $3,%zmm20,%xmm7 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_727 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_727 +.L_small_initial_partial_block_727: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_727: + + orq %r8,%r8 + je .L_after_reduction_727 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_727: + jmp .L_last_blocks_done_703 +.L_last_num_blocks_is_13_703: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $243,%r15d + jae .L_16_blocks_overflow_728 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %xmm27,%xmm4,%xmm5 + jmp .L_16_blocks_ok_728 + +.L_16_blocks_overflow_728: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 +.L_16_blocks_ok_728: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%xmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %xmm30,%xmm5,%xmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %xmm21,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %xmm29,%xmm21,%xmm21 + vextracti32x4 $0,%zmm21,%xmm7 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_729 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_729 +.L_small_initial_partial_block_729: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_729: + + orq %r8,%r8 + je .L_after_reduction_729 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_729: + jmp .L_last_blocks_done_703 +.L_last_num_blocks_is_14_703: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $242,%r15d + jae .L_16_blocks_overflow_730 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %ymm27,%ymm4,%ymm5 + jmp .L_16_blocks_ok_730 + +.L_16_blocks_overflow_730: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 +.L_16_blocks_ok_730: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%ymm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %ymm30,%ymm5,%ymm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %ymm21,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %ymm29,%ymm21,%ymm21 + vextracti32x4 $1,%zmm21,%xmm7 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_731 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_731 +.L_small_initial_partial_block_731: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_731: + + orq %r8,%r8 + je .L_after_reduction_731 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_731: + jmp .L_last_blocks_done_703 +.L_last_num_blocks_is_15_703: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $241,%r15d + jae .L_16_blocks_overflow_732 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_732 + +.L_16_blocks_overflow_732: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_732: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %zmm29,%zmm21,%zmm21 + vextracti32x4 $2,%zmm21,%xmm7 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_733 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_733 +.L_small_initial_partial_block_733: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_733: + + orq %r8,%r8 + je .L_after_reduction_733 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_733: + jmp .L_last_blocks_done_703 +.L_last_num_blocks_is_16_703: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $240,%r15d + jae .L_16_blocks_overflow_734 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_734 + +.L_16_blocks_overflow_734: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_734: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %zmm29,%zmm21,%zmm21 + vextracti32x4 $3,%zmm21,%xmm7 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_735: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_735: + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_735: + jmp .L_last_blocks_done_703 +.L_last_num_blocks_is_0_703: + vmovdqa64 768(%rsp),%zmm13 + vpxorq %zmm14,%zmm13,%zmm13 + vmovdqu64 0(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 832(%rsp),%zmm13 + vmovdqu64 64(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpxorq %zmm10,%zmm4,%zmm26 + vpxorq %zmm6,%zmm0,%zmm24 + vpxorq %zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 896(%rsp),%zmm13 + vmovdqu64 128(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 960(%rsp),%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + +.L_last_blocks_done_703: + vpshufb %xmm29,%xmm2,%xmm2 + jmp .L_ghash_done_659 +.L_encrypt_16_blocks_659: + cmpb $240,%r15b + jae .L_16_blocks_overflow_736 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_736 +.L_16_blocks_overflow_736: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_736: + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm15,%zmm10,%zmm26 + vpxorq %zmm12,%zmm6,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1) + vpshufb %zmm29,%zmm17,%zmm0 + vpshufb %zmm29,%zmm19,%zmm3 + vpshufb %zmm29,%zmm20,%zmm4 + vpshufb %zmm29,%zmm21,%zmm5 + vmovdqa64 %zmm0,1280(%rsp) + vmovdqa64 %zmm3,1344(%rsp) + vmovdqa64 %zmm4,1408(%rsp) + vmovdqa64 %zmm5,1472(%rsp) + vmovdqa64 1024(%rsp),%zmm13 + vmovdqu64 256(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1088(%rsp),%zmm13 + vmovdqu64 320(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 1152(%rsp),%zmm13 + vmovdqu64 384(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1216(%rsp),%zmm13 + vmovdqu64 448(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + subq $256,%r8 + addq $256,%r11 + movl %r8d,%r10d + addl $15,%r10d + shrl $4,%r10d + je .L_last_num_blocks_is_0_737 + + cmpl $8,%r10d + je .L_last_num_blocks_is_8_737 + jb .L_last_num_blocks_is_7_1_737 + + + cmpl $12,%r10d + je .L_last_num_blocks_is_12_737 + jb .L_last_num_blocks_is_11_9_737 + + + cmpl $15,%r10d + je .L_last_num_blocks_is_15_737 + ja .L_last_num_blocks_is_16_737 + cmpl $14,%r10d + je .L_last_num_blocks_is_14_737 + jmp .L_last_num_blocks_is_13_737 + +.L_last_num_blocks_is_11_9_737: + + cmpl $10,%r10d + je .L_last_num_blocks_is_10_737 + ja .L_last_num_blocks_is_11_737 + jmp .L_last_num_blocks_is_9_737 + +.L_last_num_blocks_is_7_1_737: + cmpl $4,%r10d + je .L_last_num_blocks_is_4_737 + jb .L_last_num_blocks_is_3_1_737 + + cmpl $6,%r10d + ja .L_last_num_blocks_is_7_737 + je .L_last_num_blocks_is_6_737 + jmp .L_last_num_blocks_is_5_737 + +.L_last_num_blocks_is_3_1_737: + + cmpl $2,%r10d + ja .L_last_num_blocks_is_3_737 + je .L_last_num_blocks_is_2_737 +.L_last_num_blocks_is_1_737: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $255,%r15d + jae .L_16_blocks_overflow_738 + vpaddd %xmm28,%xmm2,%xmm0 + jmp .L_16_blocks_ok_738 + +.L_16_blocks_overflow_738: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %xmm29,%xmm0,%xmm0 +.L_16_blocks_ok_738: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $0,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%xmm17{%k1}{z} + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %xmm31,%xmm0,%xmm0 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %xmm30,%xmm0,%xmm0 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %xmm29,%xmm17,%xmm17 + vextracti32x4 $0,%zmm17,%xmm7 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_739 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_739 +.L_small_initial_partial_block_739: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + + + + + + + + + + + + vpxorq %xmm7,%xmm14,%xmm14 + + jmp .L_after_reduction_739 +.L_small_initial_compute_done_739: +.L_after_reduction_739: + jmp .L_last_blocks_done_737 +.L_last_num_blocks_is_2_737: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $254,%r15d + jae .L_16_blocks_overflow_740 + vpaddd %ymm28,%ymm2,%ymm0 + jmp .L_16_blocks_ok_740 + +.L_16_blocks_overflow_740: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %ymm29,%ymm0,%ymm0 +.L_16_blocks_ok_740: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $1,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%ymm17{%k1}{z} + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %ymm31,%ymm0,%ymm0 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %ymm30,%ymm0,%ymm0 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %ymm29,%ymm17,%ymm17 + vextracti32x4 $1,%zmm17,%xmm7 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_741 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_741 +.L_small_initial_partial_block_741: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_741: + + orq %r8,%r8 + je .L_after_reduction_741 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_741: + jmp .L_last_blocks_done_737 +.L_last_num_blocks_is_3_737: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $253,%r15d + jae .L_16_blocks_overflow_742 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_742 + +.L_16_blocks_overflow_742: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_742: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $2,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vextracti32x4 $2,%zmm17,%xmm7 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_743 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_743 +.L_small_initial_partial_block_743: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_743: + + orq %r8,%r8 + je .L_after_reduction_743 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_743: + jmp .L_last_blocks_done_737 +.L_last_num_blocks_is_4_737: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $252,%r15d + jae .L_16_blocks_overflow_744 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_744 + +.L_16_blocks_overflow_744: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_744: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $3,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vextracti32x4 $3,%zmm17,%xmm7 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_745 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_745 +.L_small_initial_partial_block_745: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_745: + + orq %r8,%r8 + je .L_after_reduction_745 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_745: + jmp .L_last_blocks_done_737 +.L_last_num_blocks_is_5_737: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $251,%r15d + jae .L_16_blocks_overflow_746 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %xmm27,%xmm0,%xmm3 + jmp .L_16_blocks_ok_746 + +.L_16_blocks_overflow_746: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 +.L_16_blocks_ok_746: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $0,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%xmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %xmm30,%xmm3,%xmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %xmm19,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %xmm29,%xmm19,%xmm19 + vextracti32x4 $0,%zmm19,%xmm7 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_747 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_747 +.L_small_initial_partial_block_747: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_747: + + orq %r8,%r8 + je .L_after_reduction_747 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_747: + jmp .L_last_blocks_done_737 +.L_last_num_blocks_is_6_737: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $250,%r15d + jae .L_16_blocks_overflow_748 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %ymm27,%ymm0,%ymm3 + jmp .L_16_blocks_ok_748 + +.L_16_blocks_overflow_748: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 +.L_16_blocks_ok_748: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $1,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%ymm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %ymm30,%ymm3,%ymm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %ymm29,%ymm19,%ymm19 + vextracti32x4 $1,%zmm19,%xmm7 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_749 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_749 +.L_small_initial_partial_block_749: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_749: + + orq %r8,%r8 + je .L_after_reduction_749 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_749: + jmp .L_last_blocks_done_737 +.L_last_num_blocks_is_7_737: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $249,%r15d + jae .L_16_blocks_overflow_750 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_750 + +.L_16_blocks_overflow_750: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_750: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $2,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vextracti32x4 $2,%zmm19,%xmm7 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_751 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_751 +.L_small_initial_partial_block_751: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_751: + + orq %r8,%r8 + je .L_after_reduction_751 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_751: + jmp .L_last_blocks_done_737 +.L_last_num_blocks_is_8_737: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $248,%r15d + jae .L_16_blocks_overflow_752 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_752 + +.L_16_blocks_overflow_752: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_752: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $3,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vextracti32x4 $3,%zmm19,%xmm7 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_753 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_753 +.L_small_initial_partial_block_753: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_753: + + orq %r8,%r8 + je .L_after_reduction_753 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_753: + jmp .L_last_blocks_done_737 +.L_last_num_blocks_is_9_737: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $247,%r15d + jae .L_16_blocks_overflow_754 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %xmm27,%xmm3,%xmm4 + jmp .L_16_blocks_ok_754 + +.L_16_blocks_overflow_754: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 +.L_16_blocks_ok_754: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $0,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%xmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %xmm30,%xmm4,%xmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %xmm20,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %xmm29,%xmm20,%xmm20 + vextracti32x4 $0,%zmm20,%xmm7 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_755 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_755 +.L_small_initial_partial_block_755: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_755: + + orq %r8,%r8 + je .L_after_reduction_755 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_755: + jmp .L_last_blocks_done_737 +.L_last_num_blocks_is_10_737: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $246,%r15d + jae .L_16_blocks_overflow_756 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %ymm27,%ymm3,%ymm4 + jmp .L_16_blocks_ok_756 + +.L_16_blocks_overflow_756: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 +.L_16_blocks_ok_756: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $1,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%ymm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %ymm30,%ymm4,%ymm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %ymm20,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %ymm29,%ymm20,%ymm20 + vextracti32x4 $1,%zmm20,%xmm7 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_757 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_757 +.L_small_initial_partial_block_757: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_757: + + orq %r8,%r8 + je .L_after_reduction_757 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_757: + jmp .L_last_blocks_done_737 +.L_last_num_blocks_is_11_737: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $245,%r15d + jae .L_16_blocks_overflow_758 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_758 + +.L_16_blocks_overflow_758: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_758: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $2,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vextracti32x4 $2,%zmm20,%xmm7 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_759 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_759 +.L_small_initial_partial_block_759: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_759: + + orq %r8,%r8 + je .L_after_reduction_759 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_759: + jmp .L_last_blocks_done_737 +.L_last_num_blocks_is_12_737: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $244,%r15d + jae .L_16_blocks_overflow_760 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_760 + +.L_16_blocks_overflow_760: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_760: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $3,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vextracti32x4 $3,%zmm20,%xmm7 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_761 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_761 +.L_small_initial_partial_block_761: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_761: + + orq %r8,%r8 + je .L_after_reduction_761 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_761: + jmp .L_last_blocks_done_737 +.L_last_num_blocks_is_13_737: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $243,%r15d + jae .L_16_blocks_overflow_762 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %xmm27,%xmm4,%xmm5 + jmp .L_16_blocks_ok_762 + +.L_16_blocks_overflow_762: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 +.L_16_blocks_ok_762: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $0,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%xmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %xmm30,%xmm5,%xmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %xmm21,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %xmm29,%xmm21,%xmm21 + vextracti32x4 $0,%zmm21,%xmm7 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_763 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_763 +.L_small_initial_partial_block_763: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_763: + + orq %r8,%r8 + je .L_after_reduction_763 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_763: + jmp .L_last_blocks_done_737 +.L_last_num_blocks_is_14_737: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $242,%r15d + jae .L_16_blocks_overflow_764 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %ymm27,%ymm4,%ymm5 + jmp .L_16_blocks_ok_764 + +.L_16_blocks_overflow_764: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 +.L_16_blocks_ok_764: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $1,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%ymm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %ymm30,%ymm5,%ymm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %ymm21,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %ymm29,%ymm21,%ymm21 + vextracti32x4 $1,%zmm21,%xmm7 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_765 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_765 +.L_small_initial_partial_block_765: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_765: + + orq %r8,%r8 + je .L_after_reduction_765 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_765: + jmp .L_last_blocks_done_737 +.L_last_num_blocks_is_15_737: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $241,%r15d + jae .L_16_blocks_overflow_766 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_766 + +.L_16_blocks_overflow_766: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_766: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $2,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %zmm29,%zmm21,%zmm21 + vextracti32x4 $2,%zmm21,%xmm7 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_767 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_767 +.L_small_initial_partial_block_767: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_767: + + orq %r8,%r8 + je .L_after_reduction_767 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_767: + jmp .L_last_blocks_done_737 +.L_last_num_blocks_is_16_737: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $240,%r15d + jae .L_16_blocks_overflow_768 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_768 + +.L_16_blocks_overflow_768: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_768: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $3,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %zmm29,%zmm21,%zmm21 + vextracti32x4 $3,%zmm21,%xmm7 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_769: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_769: + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_769: + jmp .L_last_blocks_done_737 +.L_last_num_blocks_is_0_737: + vmovdqa64 1280(%rsp),%zmm13 + vmovdqu64 512(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1344(%rsp),%zmm13 + vmovdqu64 576(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 1408(%rsp),%zmm13 + vmovdqu64 640(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1472(%rsp),%zmm13 + vmovdqu64 704(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + +.L_last_blocks_done_737: + vpshufb %xmm29,%xmm2,%xmm2 + jmp .L_ghash_done_659 + +.L_message_below_32_blocks_659: + + + subq $256,%r8 + addq $256,%r11 + movl %r8d,%r10d + testq %r14,%r14 + jnz .L_skip_hkeys_precomputation_770 + vmovdqu64 640(%rsp),%zmm3 + + + vshufi64x2 $0x00,%zmm3,%zmm3,%zmm3 + + vmovdqu64 576(%rsp),%zmm4 + vmovdqu64 512(%rsp),%zmm5 + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,448(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,384(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,320(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,256(%rsp) +.L_skip_hkeys_precomputation_770: + movq $1,%r14 + andl $~15,%r10d + movl $512,%ebx + subl %r10d,%ebx + movl %r8d,%r10d + addl $15,%r10d + shrl $4,%r10d + je .L_last_num_blocks_is_0_771 + + cmpl $8,%r10d + je .L_last_num_blocks_is_8_771 + jb .L_last_num_blocks_is_7_1_771 + + + cmpl $12,%r10d + je .L_last_num_blocks_is_12_771 + jb .L_last_num_blocks_is_11_9_771 + + + cmpl $15,%r10d + je .L_last_num_blocks_is_15_771 + ja .L_last_num_blocks_is_16_771 + cmpl $14,%r10d + je .L_last_num_blocks_is_14_771 + jmp .L_last_num_blocks_is_13_771 + +.L_last_num_blocks_is_11_9_771: + + cmpl $10,%r10d + je .L_last_num_blocks_is_10_771 + ja .L_last_num_blocks_is_11_771 + jmp .L_last_num_blocks_is_9_771 + +.L_last_num_blocks_is_7_1_771: + cmpl $4,%r10d + je .L_last_num_blocks_is_4_771 + jb .L_last_num_blocks_is_3_1_771 + + cmpl $6,%r10d + ja .L_last_num_blocks_is_7_771 + je .L_last_num_blocks_is_6_771 + jmp .L_last_num_blocks_is_5_771 + +.L_last_num_blocks_is_3_1_771: + + cmpl $2,%r10d + ja .L_last_num_blocks_is_3_771 + je .L_last_num_blocks_is_2_771 +.L_last_num_blocks_is_1_771: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $255,%r15d + jae .L_16_blocks_overflow_772 + vpaddd %xmm28,%xmm2,%xmm0 + jmp .L_16_blocks_ok_772 + +.L_16_blocks_overflow_772: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %xmm29,%xmm0,%xmm0 +.L_16_blocks_ok_772: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%xmm17{%k1}{z} + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vaesenclast %xmm30,%xmm0,%xmm0 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %xmm29,%xmm17,%xmm17 + vextracti32x4 $0,%zmm17,%xmm7 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_773 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_773 +.L_small_initial_partial_block_773: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm0 + + + vpclmulqdq $0x01,%xmm25,%xmm0,%xmm3 + vpslldq $8,%xmm3,%xmm3 + vpxorq %xmm3,%xmm25,%xmm3 + + + vpclmulqdq $0x00,%xmm3,%xmm0,%xmm4 + vpsrldq $4,%xmm4,%xmm4 + vpclmulqdq $0x10,%xmm3,%xmm0,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm4,%xmm14 + + + + + + + + + + + + + vpxorq %xmm7,%xmm14,%xmm14 + + jmp .L_after_reduction_773 +.L_small_initial_compute_done_773: +.L_after_reduction_773: + jmp .L_last_blocks_done_771 +.L_last_num_blocks_is_2_771: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $254,%r15d + jae .L_16_blocks_overflow_774 + vpaddd %ymm28,%ymm2,%ymm0 + jmp .L_16_blocks_ok_774 + +.L_16_blocks_overflow_774: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %ymm29,%ymm0,%ymm0 +.L_16_blocks_ok_774: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%ymm17{%k1}{z} + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vaesenclast %ymm30,%ymm0,%ymm0 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %ymm29,%ymm17,%ymm17 + vextracti32x4 $1,%zmm17,%xmm7 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_775 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_775 +.L_small_initial_partial_block_775: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_775: + + orq %r8,%r8 + je .L_after_reduction_775 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_775: + jmp .L_last_blocks_done_771 +.L_last_num_blocks_is_3_771: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $253,%r15d + jae .L_16_blocks_overflow_776 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_776 + +.L_16_blocks_overflow_776: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_776: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vextracti32x4 $2,%zmm17,%xmm7 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_777 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_777 +.L_small_initial_partial_block_777: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_777: + + orq %r8,%r8 + je .L_after_reduction_777 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_777: + jmp .L_last_blocks_done_771 +.L_last_num_blocks_is_4_771: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $252,%r15d + jae .L_16_blocks_overflow_778 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_778 + +.L_16_blocks_overflow_778: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_778: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vextracti32x4 $3,%zmm17,%xmm7 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_779 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_779 +.L_small_initial_partial_block_779: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_779: + + orq %r8,%r8 + je .L_after_reduction_779 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_779: + jmp .L_last_blocks_done_771 +.L_last_num_blocks_is_5_771: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $251,%r15d + jae .L_16_blocks_overflow_780 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %xmm27,%xmm0,%xmm3 + jmp .L_16_blocks_ok_780 + +.L_16_blocks_overflow_780: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 +.L_16_blocks_ok_780: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%xmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %xmm30,%xmm3,%xmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %xmm19,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %xmm29,%xmm19,%xmm19 + vextracti32x4 $0,%zmm19,%xmm7 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_781 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_781 +.L_small_initial_partial_block_781: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_781: + + orq %r8,%r8 + je .L_after_reduction_781 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_781: + jmp .L_last_blocks_done_771 +.L_last_num_blocks_is_6_771: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $250,%r15d + jae .L_16_blocks_overflow_782 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %ymm27,%ymm0,%ymm3 + jmp .L_16_blocks_ok_782 + +.L_16_blocks_overflow_782: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 +.L_16_blocks_ok_782: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%ymm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %ymm30,%ymm3,%ymm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %ymm29,%ymm19,%ymm19 + vextracti32x4 $1,%zmm19,%xmm7 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_783 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_783 +.L_small_initial_partial_block_783: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_783: + + orq %r8,%r8 + je .L_after_reduction_783 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_783: + jmp .L_last_blocks_done_771 +.L_last_num_blocks_is_7_771: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $249,%r15d + jae .L_16_blocks_overflow_784 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_784 + +.L_16_blocks_overflow_784: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_784: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vextracti32x4 $2,%zmm19,%xmm7 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_785 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_785 +.L_small_initial_partial_block_785: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_785: + + orq %r8,%r8 + je .L_after_reduction_785 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_785: + jmp .L_last_blocks_done_771 +.L_last_num_blocks_is_8_771: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $248,%r15d + jae .L_16_blocks_overflow_786 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_786 + +.L_16_blocks_overflow_786: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_786: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vextracti32x4 $3,%zmm19,%xmm7 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_787 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_787 +.L_small_initial_partial_block_787: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_787: + + orq %r8,%r8 + je .L_after_reduction_787 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_787: + jmp .L_last_blocks_done_771 +.L_last_num_blocks_is_9_771: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $247,%r15d + jae .L_16_blocks_overflow_788 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %xmm27,%xmm3,%xmm4 + jmp .L_16_blocks_ok_788 + +.L_16_blocks_overflow_788: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 +.L_16_blocks_ok_788: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%xmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %xmm30,%xmm4,%xmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %xmm20,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %xmm29,%xmm20,%xmm20 + vextracti32x4 $0,%zmm20,%xmm7 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_789 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_789 +.L_small_initial_partial_block_789: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_789: + + orq %r8,%r8 + je .L_after_reduction_789 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_789: + jmp .L_last_blocks_done_771 +.L_last_num_blocks_is_10_771: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $246,%r15d + jae .L_16_blocks_overflow_790 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %ymm27,%ymm3,%ymm4 + jmp .L_16_blocks_ok_790 + +.L_16_blocks_overflow_790: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 +.L_16_blocks_ok_790: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%ymm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %ymm30,%ymm4,%ymm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %ymm20,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %ymm29,%ymm20,%ymm20 + vextracti32x4 $1,%zmm20,%xmm7 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_791 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_791 +.L_small_initial_partial_block_791: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_791: + + orq %r8,%r8 + je .L_after_reduction_791 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_791: + jmp .L_last_blocks_done_771 +.L_last_num_blocks_is_11_771: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $245,%r15d + jae .L_16_blocks_overflow_792 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_792 + +.L_16_blocks_overflow_792: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_792: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vextracti32x4 $2,%zmm20,%xmm7 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_793 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_793 +.L_small_initial_partial_block_793: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_793: + + orq %r8,%r8 + je .L_after_reduction_793 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_793: + jmp .L_last_blocks_done_771 +.L_last_num_blocks_is_12_771: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $244,%r15d + jae .L_16_blocks_overflow_794 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_794 + +.L_16_blocks_overflow_794: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_794: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vextracti32x4 $3,%zmm20,%xmm7 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_795 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_795 +.L_small_initial_partial_block_795: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_795: + + orq %r8,%r8 + je .L_after_reduction_795 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_795: + jmp .L_last_blocks_done_771 +.L_last_num_blocks_is_13_771: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $243,%r15d + jae .L_16_blocks_overflow_796 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %xmm27,%xmm4,%xmm5 + jmp .L_16_blocks_ok_796 + +.L_16_blocks_overflow_796: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 +.L_16_blocks_ok_796: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%xmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %xmm30,%xmm5,%xmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %xmm21,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %xmm29,%xmm21,%xmm21 + vextracti32x4 $0,%zmm21,%xmm7 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_797 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_797 +.L_small_initial_partial_block_797: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_797: + + orq %r8,%r8 + je .L_after_reduction_797 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_797: + jmp .L_last_blocks_done_771 +.L_last_num_blocks_is_14_771: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $242,%r15d + jae .L_16_blocks_overflow_798 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %ymm27,%ymm4,%ymm5 + jmp .L_16_blocks_ok_798 + +.L_16_blocks_overflow_798: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 +.L_16_blocks_ok_798: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%ymm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %ymm30,%ymm5,%ymm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %ymm21,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %ymm29,%ymm21,%ymm21 + vextracti32x4 $1,%zmm21,%xmm7 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_799 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_799 +.L_small_initial_partial_block_799: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_799: + + orq %r8,%r8 + je .L_after_reduction_799 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_799: + jmp .L_last_blocks_done_771 +.L_last_num_blocks_is_15_771: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $241,%r15d + jae .L_16_blocks_overflow_800 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_800 + +.L_16_blocks_overflow_800: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_800: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %zmm29,%zmm21,%zmm21 + vextracti32x4 $2,%zmm21,%xmm7 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_801 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_801 +.L_small_initial_partial_block_801: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_801: + + orq %r8,%r8 + je .L_after_reduction_801 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_801: + jmp .L_last_blocks_done_771 +.L_last_num_blocks_is_16_771: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $240,%r15d + jae .L_16_blocks_overflow_802 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_802 + +.L_16_blocks_overflow_802: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_802: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %zmm29,%zmm21,%zmm21 + vextracti32x4 $3,%zmm21,%xmm7 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_803: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_803: + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_803: + jmp .L_last_blocks_done_771 +.L_last_num_blocks_is_0_771: + vmovdqa64 768(%rsp),%zmm13 + vpxorq %zmm14,%zmm13,%zmm13 + vmovdqu64 0(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 832(%rsp),%zmm13 + vmovdqu64 64(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpxorq %zmm10,%zmm4,%zmm26 + vpxorq %zmm6,%zmm0,%zmm24 + vpxorq %zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 896(%rsp),%zmm13 + vmovdqu64 128(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 960(%rsp),%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + +.L_last_blocks_done_771: + vpshufb %xmm29,%xmm2,%xmm2 + jmp .L_ghash_done_659 + +.L_message_below_equal_16_blocks_659: + + + movl %r8d,%r12d + addl $15,%r12d + shrl $4,%r12d + cmpq $8,%r12 + je .L_small_initial_num_blocks_is_8_804 + jl .L_small_initial_num_blocks_is_7_1_804 + + + cmpq $12,%r12 + je .L_small_initial_num_blocks_is_12_804 + jl .L_small_initial_num_blocks_is_11_9_804 + + + cmpq $16,%r12 + je .L_small_initial_num_blocks_is_16_804 + cmpq $15,%r12 + je .L_small_initial_num_blocks_is_15_804 + cmpq $14,%r12 + je .L_small_initial_num_blocks_is_14_804 + jmp .L_small_initial_num_blocks_is_13_804 + +.L_small_initial_num_blocks_is_11_9_804: + + cmpq $11,%r12 + je .L_small_initial_num_blocks_is_11_804 + cmpq $10,%r12 + je .L_small_initial_num_blocks_is_10_804 + jmp .L_small_initial_num_blocks_is_9_804 + +.L_small_initial_num_blocks_is_7_1_804: + cmpq $4,%r12 + je .L_small_initial_num_blocks_is_4_804 + jl .L_small_initial_num_blocks_is_3_1_804 + + cmpq $7,%r12 + je .L_small_initial_num_blocks_is_7_804 + cmpq $6,%r12 + je .L_small_initial_num_blocks_is_6_804 + jmp .L_small_initial_num_blocks_is_5_804 + +.L_small_initial_num_blocks_is_3_1_804: + + cmpq $3,%r12 + je .L_small_initial_num_blocks_is_3_804 + cmpq $2,%r12 + je .L_small_initial_num_blocks_is_2_804 + + + + + +.L_small_initial_num_blocks_is_1_804: + vmovdqa64 SHUF_MASK(%rip),%xmm29 + vpaddd ONE(%rip),%xmm2,%xmm0 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $0,%zmm0,%xmm2 + vpshufb %xmm29,%xmm0,%xmm0 + vmovdqu8 0(%rcx,%r11,1),%xmm6{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %xmm15,%xmm0,%xmm0 + vpxorq %xmm6,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm12 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %xmm29,%xmm6,%xmm6 + vextracti32x4 $0,%zmm6,%xmm13 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_805 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm6,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm6,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm6,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm6,%xmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_805 +.L_small_initial_partial_block_805: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + + + + + + + + + + + + vpxorq %xmm13,%xmm14,%xmm14 + + jmp .L_after_reduction_805 +.L_small_initial_compute_done_805: +.L_after_reduction_805: + jmp .L_small_initial_blocks_encrypted_804 +.L_small_initial_num_blocks_is_2_804: + vmovdqa64 SHUF_MASK(%rip),%ymm29 + vshufi64x2 $0,%ymm2,%ymm2,%ymm0 + vpaddd ddq_add_1234(%rip),%ymm0,%ymm0 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $1,%zmm0,%xmm2 + vpshufb %ymm29,%ymm0,%ymm0 + vmovdqu8 0(%rcx,%r11,1),%ymm6{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %ymm15,%ymm0,%ymm0 + vpxorq %ymm6,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm12 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %ymm29,%ymm6,%ymm6 + vextracti32x4 $1,%zmm6,%xmm13 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_806 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm6,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm6,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm6,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm6,%ymm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_806 +.L_small_initial_partial_block_806: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm6,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm6,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm6,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm6,%xmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_806: + + orq %r8,%r8 + je .L_after_reduction_806 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_806: + jmp .L_small_initial_blocks_encrypted_804 +.L_small_initial_num_blocks_is_3_804: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $2,%zmm0,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vmovdqu8 0(%rcx,%r11,1),%zmm6{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vpxorq %zmm6,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vextracti32x4 $2,%zmm6,%xmm13 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_807 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_807 +.L_small_initial_partial_block_807: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm6,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm6,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm6,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm6,%ymm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_807: + + orq %r8,%r8 + je .L_after_reduction_807 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_807: + jmp .L_small_initial_blocks_encrypted_804 +.L_small_initial_num_blocks_is_4_804: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $3,%zmm0,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vmovdqu8 0(%rcx,%r11,1),%zmm6{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vpxorq %zmm6,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vextracti32x4 $3,%zmm6,%xmm13 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_808 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_808 +.L_small_initial_partial_block_808: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_808: + + orq %r8,%r8 + je .L_after_reduction_808 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_808: + jmp .L_small_initial_blocks_encrypted_804 +.L_small_initial_num_blocks_is_5_804: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $64,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $0,%zmm3,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%xmm7{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %xmm15,%xmm3,%xmm3 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %xmm7,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %xmm29,%xmm7,%xmm7 + vextracti32x4 $0,%zmm7,%xmm13 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_809 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm7,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm7,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm7,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm7,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_809 +.L_small_initial_partial_block_809: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_809: + + orq %r8,%r8 + je .L_after_reduction_809 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_809: + jmp .L_small_initial_blocks_encrypted_804 +.L_small_initial_num_blocks_is_6_804: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $64,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $1,%zmm3,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%ymm7{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %ymm15,%ymm3,%ymm3 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %ymm7,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %ymm29,%ymm7,%ymm7 + vextracti32x4 $1,%zmm7,%xmm13 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_810 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm7,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm7,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm7,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm7,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_810 +.L_small_initial_partial_block_810: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm7,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm7,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm7,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm7,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_810: + + orq %r8,%r8 + je .L_after_reduction_810 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_810: + jmp .L_small_initial_blocks_encrypted_804 +.L_small_initial_num_blocks_is_7_804: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $64,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $2,%zmm3,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vextracti32x4 $2,%zmm7,%xmm13 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_811 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_811 +.L_small_initial_partial_block_811: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm7,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm7,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm7,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm7,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_811: + + orq %r8,%r8 + je .L_after_reduction_811 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_811: + jmp .L_small_initial_blocks_encrypted_804 +.L_small_initial_num_blocks_is_8_804: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $64,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $3,%zmm3,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vextracti32x4 $3,%zmm7,%xmm13 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_812 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 224(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_812 +.L_small_initial_partial_block_812: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_812: + + orq %r8,%r8 + je .L_after_reduction_812 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_812: + jmp .L_small_initial_blocks_encrypted_804 +.L_small_initial_num_blocks_is_9_804: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $128,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $0,%zmm4,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%xmm10{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %xmm15,%xmm4,%xmm4 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %xmm10,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %xmm29,%xmm10,%xmm10 + vextracti32x4 $0,%zmm10,%xmm13 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_813 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 208(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm10,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm10,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm10,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm10,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_813 +.L_small_initial_partial_block_813: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 224(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_813: + + orq %r8,%r8 + je .L_after_reduction_813 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_813: + jmp .L_small_initial_blocks_encrypted_804 +.L_small_initial_num_blocks_is_10_804: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $128,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $1,%zmm4,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%ymm10{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %ymm15,%ymm4,%ymm4 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %ymm10,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %ymm29,%ymm10,%ymm10 + vextracti32x4 $1,%zmm10,%xmm13 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_814 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 192(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm10,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm10,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm10,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm10,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_814 +.L_small_initial_partial_block_814: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 208(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm10,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm10,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm10,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm10,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_814: + + orq %r8,%r8 + je .L_after_reduction_814 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_814: + jmp .L_small_initial_blocks_encrypted_804 +.L_small_initial_num_blocks_is_11_804: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $128,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $2,%zmm4,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vextracti32x4 $2,%zmm10,%xmm13 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_815 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 176(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_815 +.L_small_initial_partial_block_815: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 192(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm10,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm10,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm10,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm10,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_815: + + orq %r8,%r8 + je .L_after_reduction_815 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_815: + jmp .L_small_initial_blocks_encrypted_804 +.L_small_initial_num_blocks_is_12_804: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $128,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $3,%zmm4,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vextracti32x4 $3,%zmm10,%xmm13 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_816 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 160(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 224(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_816 +.L_small_initial_partial_block_816: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 176(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_816: + + orq %r8,%r8 + je .L_after_reduction_816 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_816: + jmp .L_small_initial_blocks_encrypted_804 +.L_small_initial_num_blocks_is_13_804: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + vpaddd ddq_add_8888(%rip),%zmm3,%zmm5 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $192,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $0,%zmm5,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10 + vmovdqu8 192(%rcx,%r11,1),%xmm11{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vpxorq %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vaesenclast %xmm15,%xmm5,%xmm5 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vpxorq %xmm11,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %xmm29,%xmm11,%xmm11 + vextracti32x4 $0,%zmm11,%xmm13 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_817 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 144(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 208(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm11,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm11,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm11,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm11,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_817 +.L_small_initial_partial_block_817: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 160(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 224(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_817: + + orq %r8,%r8 + je .L_after_reduction_817 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_817: + jmp .L_small_initial_blocks_encrypted_804 +.L_small_initial_num_blocks_is_14_804: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + vpaddd ddq_add_8888(%rip),%zmm3,%zmm5 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $192,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $1,%zmm5,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10 + vmovdqu8 192(%rcx,%r11,1),%ymm11{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vpxorq %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vaesenclast %ymm15,%ymm5,%ymm5 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vpxorq %ymm11,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %ymm29,%ymm11,%ymm11 + vextracti32x4 $1,%zmm11,%xmm13 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_818 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 128(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 192(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm11,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm11,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm11,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm11,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_818 +.L_small_initial_partial_block_818: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 144(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 208(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm11,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm11,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm11,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm11,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_818: + + orq %r8,%r8 + je .L_after_reduction_818 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_818: + jmp .L_small_initial_blocks_encrypted_804 +.L_small_initial_num_blocks_is_15_804: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + vpaddd ddq_add_8888(%rip),%zmm3,%zmm5 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $192,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $2,%zmm5,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10 + vmovdqu8 192(%rcx,%r11,1),%zmm11{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vpxorq %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vaesenclast %zmm15,%zmm5,%zmm5 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vpxorq %zmm11,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %zmm29,%zmm11,%zmm11 + vextracti32x4 $2,%zmm11,%xmm13 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_819 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 112(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 176(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm11,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm11,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm11,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm11,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_819 +.L_small_initial_partial_block_819: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 128(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 192(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm11,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm11,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm11,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm11,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_819: + + orq %r8,%r8 + je .L_after_reduction_819 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_819: + jmp .L_small_initial_blocks_encrypted_804 +.L_small_initial_num_blocks_is_16_804: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + vpaddd ddq_add_8888(%rip),%zmm3,%zmm5 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $192,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $3,%zmm5,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10 + vmovdqu8 192(%rcx,%r11,1),%zmm11{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vpxorq %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vaesenclast %zmm15,%zmm5,%zmm5 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vpxorq %zmm11,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %zmm29,%zmm11,%zmm11 + vextracti32x4 $3,%zmm11,%xmm13 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_820: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 112(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 176(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm11,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm11,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm11,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm11,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_820: + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_820: +.L_small_initial_blocks_encrypted_804: +.L_ghash_done_659: + vmovdqu64 %xmm2,0(%rsi) + vmovdqu64 %xmm14,64(%rsi) +.L_enc_dec_done_659: + jmp .Lexit_gcm_decrypt +.align 32 +.Laes_gcm_decrypt_256_avx512: + orq %r8,%r8 + je .L_enc_dec_done_821 + xorq %r14,%r14 + vmovdqu64 64(%rsi),%xmm14 + + movq (%rdx),%r11 + orq %r11,%r11 + je .L_partial_block_done_822 + movl $16,%r10d + leaq byte_len_to_mask_table(%rip),%r12 + cmpq %r10,%r8 + cmovcq %r8,%r10 + kmovw (%r12,%r10,2),%k1 + vmovdqu8 (%rcx),%xmm0{%k1}{z} + + vmovdqu64 16(%rsi),%xmm3 + vmovdqu64 336(%rsi),%xmm4 + + + + leaq SHIFT_MASK(%rip),%r12 + addq %r11,%r12 + vmovdqu64 (%r12),%xmm5 + vpshufb %xmm5,%xmm3,%xmm3 + + vmovdqa64 %xmm0,%xmm6 + vpxorq %xmm0,%xmm3,%xmm3 + + + leaq (%r8,%r11,1),%r13 + subq $16,%r13 + jge .L_no_extra_mask_822 + subq %r13,%r12 +.L_no_extra_mask_822: + + + + vmovdqu64 16(%r12),%xmm0 + vpand %xmm0,%xmm3,%xmm3 + vpand %xmm0,%xmm6,%xmm6 + vpshufb SHUF_MASK(%rip),%xmm6,%xmm6 + vpshufb %xmm5,%xmm6,%xmm6 + vpxorq %xmm6,%xmm14,%xmm14 + cmpq $0,%r13 + jl .L_partial_incomplete_822 + + vpclmulqdq $0x11,%xmm4,%xmm14,%xmm7 + vpclmulqdq $0x00,%xmm4,%xmm14,%xmm10 + vpclmulqdq $0x01,%xmm4,%xmm14,%xmm11 + vpclmulqdq $0x10,%xmm4,%xmm14,%xmm14 + vpxorq %xmm11,%xmm14,%xmm14 + + vpsrldq $8,%xmm14,%xmm11 + vpslldq $8,%xmm14,%xmm14 + vpxorq %xmm11,%xmm7,%xmm7 + vpxorq %xmm10,%xmm14,%xmm14 + + + + vmovdqu64 POLY2(%rip),%xmm11 + + vpclmulqdq $0x01,%xmm14,%xmm11,%xmm10 + vpslldq $8,%xmm10,%xmm10 + vpxorq %xmm10,%xmm14,%xmm14 + + + + vpclmulqdq $0x00,%xmm14,%xmm11,%xmm10 + vpsrldq $4,%xmm10,%xmm10 + vpclmulqdq $0x10,%xmm14,%xmm11,%xmm14 + vpslldq $4,%xmm14,%xmm14 + + vpternlogq $0x96,%xmm10,%xmm7,%xmm14 + + movq $0,(%rdx) + + movq %r11,%r12 + movq $16,%r11 + subq %r12,%r11 + jmp .L_enc_dec_done_822 + +.L_partial_incomplete_822: + addq %r8,(%rdx) + movq %r8,%r11 + +.L_enc_dec_done_822: + + + leaq byte_len_to_mask_table(%rip),%r12 + kmovw (%r12,%r11,2),%k1 + vmovdqu64 %xmm14,64(%rsi) + movq %r9,%r12 + vmovdqu8 %xmm3,(%r12){%k1} +.L_partial_block_done_822: + vmovdqu64 0(%rsi),%xmm2 + subq %r11,%r8 + je .L_enc_dec_done_821 + cmpq $256,%r8 + jbe .L_message_below_equal_16_blocks_821 + + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vmovdqa64 ddq_addbe_4444(%rip),%zmm27 + vmovdqa64 ddq_addbe_1234(%rip),%zmm28 + + + + + + + vmovd %xmm2,%r15d + andl $255,%r15d + + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpshufb %zmm29,%zmm2,%zmm2 + + + + cmpb $240,%r15b + jae .L_next_16_overflow_823 + vpaddd %zmm28,%zmm2,%zmm7 + vpaddd %zmm27,%zmm7,%zmm10 + vpaddd %zmm27,%zmm10,%zmm11 + vpaddd %zmm27,%zmm11,%zmm12 + jmp .L_next_16_ok_823 +.L_next_16_overflow_823: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm12 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm7 + vpaddd %zmm12,%zmm7,%zmm10 + vpaddd %zmm12,%zmm10,%zmm11 + vpaddd %zmm12,%zmm11,%zmm12 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %zmm29,%zmm11,%zmm11 + vpshufb %zmm29,%zmm12,%zmm12 +.L_next_16_ok_823: + vshufi64x2 $255,%zmm12,%zmm12,%zmm2 + addb $16,%r15b + + vmovdqu8 0(%rcx,%r11,1),%zmm0 + vmovdqu8 64(%rcx,%r11,1),%zmm3 + vmovdqu8 128(%rcx,%r11,1),%zmm4 + vmovdqu8 192(%rcx,%r11,1),%zmm5 + + + vbroadcastf64x2 0(%rdi),%zmm6 + vpxorq %zmm6,%zmm7,%zmm7 + vpxorq %zmm6,%zmm10,%zmm10 + vpxorq %zmm6,%zmm11,%zmm11 + vpxorq %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 16(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 32(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 48(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 64(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 80(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 96(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 112(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 128(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 144(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 160(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 176(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 192(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 208(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 224(%rdi),%zmm6 + vaesenclast %zmm6,%zmm7,%zmm7 + vaesenclast %zmm6,%zmm10,%zmm10 + vaesenclast %zmm6,%zmm11,%zmm11 + vaesenclast %zmm6,%zmm12,%zmm12 + + + vpxorq %zmm0,%zmm7,%zmm7 + vpxorq %zmm3,%zmm10,%zmm10 + vpxorq %zmm4,%zmm11,%zmm11 + vpxorq %zmm5,%zmm12,%zmm12 + + + movq %r9,%r10 + vmovdqu8 %zmm7,0(%r10,%r11,1) + vmovdqu8 %zmm10,64(%r10,%r11,1) + vmovdqu8 %zmm11,128(%r10,%r11,1) + vmovdqu8 %zmm12,192(%r10,%r11,1) + + vpshufb %zmm29,%zmm0,%zmm7 + vpshufb %zmm29,%zmm3,%zmm10 + vpshufb %zmm29,%zmm4,%zmm11 + vpshufb %zmm29,%zmm5,%zmm12 + vmovdqa64 %zmm7,768(%rsp) + vmovdqa64 %zmm10,832(%rsp) + vmovdqa64 %zmm11,896(%rsp) + vmovdqa64 %zmm12,960(%rsp) + testq %r14,%r14 + jnz .L_skip_hkeys_precomputation_824 + + vmovdqu64 288(%rsi),%zmm0 + vmovdqu64 %zmm0,704(%rsp) + + vmovdqu64 224(%rsi),%zmm3 + vmovdqu64 %zmm3,640(%rsp) + + + vshufi64x2 $0x00,%zmm3,%zmm3,%zmm3 + + vmovdqu64 160(%rsi),%zmm4 + vmovdqu64 %zmm4,576(%rsp) + + vmovdqu64 96(%rsi),%zmm5 + vmovdqu64 %zmm5,512(%rsp) +.L_skip_hkeys_precomputation_824: + cmpq $512,%r8 + jb .L_message_below_32_blocks_821 + + + + cmpb $240,%r15b + jae .L_next_16_overflow_825 + vpaddd %zmm28,%zmm2,%zmm7 + vpaddd %zmm27,%zmm7,%zmm10 + vpaddd %zmm27,%zmm10,%zmm11 + vpaddd %zmm27,%zmm11,%zmm12 + jmp .L_next_16_ok_825 +.L_next_16_overflow_825: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm12 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm7 + vpaddd %zmm12,%zmm7,%zmm10 + vpaddd %zmm12,%zmm10,%zmm11 + vpaddd %zmm12,%zmm11,%zmm12 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %zmm29,%zmm11,%zmm11 + vpshufb %zmm29,%zmm12,%zmm12 +.L_next_16_ok_825: + vshufi64x2 $255,%zmm12,%zmm12,%zmm2 + addb $16,%r15b + + vmovdqu8 256(%rcx,%r11,1),%zmm0 + vmovdqu8 320(%rcx,%r11,1),%zmm3 + vmovdqu8 384(%rcx,%r11,1),%zmm4 + vmovdqu8 448(%rcx,%r11,1),%zmm5 + + + vbroadcastf64x2 0(%rdi),%zmm6 + vpxorq %zmm6,%zmm7,%zmm7 + vpxorq %zmm6,%zmm10,%zmm10 + vpxorq %zmm6,%zmm11,%zmm11 + vpxorq %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 16(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 32(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 48(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 64(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 80(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 96(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 112(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 128(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 144(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 160(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 176(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 192(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 208(%rdi),%zmm6 + vaesenc %zmm6,%zmm7,%zmm7 + vaesenc %zmm6,%zmm10,%zmm10 + vaesenc %zmm6,%zmm11,%zmm11 + vaesenc %zmm6,%zmm12,%zmm12 + vbroadcastf64x2 224(%rdi),%zmm6 + vaesenclast %zmm6,%zmm7,%zmm7 + vaesenclast %zmm6,%zmm10,%zmm10 + vaesenclast %zmm6,%zmm11,%zmm11 + vaesenclast %zmm6,%zmm12,%zmm12 + + + vpxorq %zmm0,%zmm7,%zmm7 + vpxorq %zmm3,%zmm10,%zmm10 + vpxorq %zmm4,%zmm11,%zmm11 + vpxorq %zmm5,%zmm12,%zmm12 + + + movq %r9,%r10 + vmovdqu8 %zmm7,256(%r10,%r11,1) + vmovdqu8 %zmm10,320(%r10,%r11,1) + vmovdqu8 %zmm11,384(%r10,%r11,1) + vmovdqu8 %zmm12,448(%r10,%r11,1) + + vpshufb %zmm29,%zmm0,%zmm7 + vpshufb %zmm29,%zmm3,%zmm10 + vpshufb %zmm29,%zmm4,%zmm11 + vpshufb %zmm29,%zmm5,%zmm12 + vmovdqa64 %zmm7,1024(%rsp) + vmovdqa64 %zmm10,1088(%rsp) + vmovdqa64 %zmm11,1152(%rsp) + vmovdqa64 %zmm12,1216(%rsp) + testq %r14,%r14 + jnz .L_skip_hkeys_precomputation_826 + vmovdqu64 640(%rsp),%zmm3 + + + vshufi64x2 $0x00,%zmm3,%zmm3,%zmm3 + + vmovdqu64 576(%rsp),%zmm4 + vmovdqu64 512(%rsp),%zmm5 + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,448(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,384(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,320(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,256(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,192(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,128(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,64(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,0(%rsp) +.L_skip_hkeys_precomputation_826: + movq $1,%r14 + addq $512,%r11 + subq $512,%r8 + + cmpq $768,%r8 + jb .L_no_more_big_nblocks_821 +.L_encrypt_big_nblocks_821: + cmpb $240,%r15b + jae .L_16_blocks_overflow_827 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_827 +.L_16_blocks_overflow_827: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_827: + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm15,%zmm10,%zmm26 + vpxorq %zmm12,%zmm6,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1) + vpshufb %zmm29,%zmm17,%zmm0 + vpshufb %zmm29,%zmm19,%zmm3 + vpshufb %zmm29,%zmm20,%zmm4 + vpshufb %zmm29,%zmm21,%zmm5 + vmovdqa64 %zmm0,1280(%rsp) + vmovdqa64 %zmm3,1344(%rsp) + vmovdqa64 %zmm4,1408(%rsp) + vmovdqa64 %zmm5,1472(%rsp) + cmpb $240,%r15b + jae .L_16_blocks_overflow_828 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_828 +.L_16_blocks_overflow_828: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_828: + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 256(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 320(%rsp),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 384(%rsp),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 448(%rsp),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 256(%rcx,%r11,1),%zmm17 + vmovdqu8 320(%rcx,%r11,1),%zmm19 + vmovdqu8 384(%rcx,%r11,1),%zmm20 + vmovdqu8 448(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vpternlogq $0x96,%zmm12,%zmm6,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,256(%r10,%r11,1) + vmovdqu8 %zmm3,320(%r10,%r11,1) + vmovdqu8 %zmm4,384(%r10,%r11,1) + vmovdqu8 %zmm5,448(%r10,%r11,1) + vpshufb %zmm29,%zmm17,%zmm0 + vpshufb %zmm29,%zmm19,%zmm3 + vpshufb %zmm29,%zmm20,%zmm4 + vpshufb %zmm29,%zmm21,%zmm5 + vmovdqa64 %zmm0,768(%rsp) + vmovdqa64 %zmm3,832(%rsp) + vmovdqa64 %zmm4,896(%rsp) + vmovdqa64 %zmm5,960(%rsp) + cmpb $240,%r15b + jae .L_16_blocks_overflow_829 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_829 +.L_16_blocks_overflow_829: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_829: + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 512(%rcx,%r11,1),%zmm17 + vmovdqu8 576(%rcx,%r11,1),%zmm19 + vmovdqu8 640(%rcx,%r11,1),%zmm20 + vmovdqu8 704(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + + + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpternlogq $0x96,%zmm15,%zmm12,%zmm6 + vpxorq %zmm24,%zmm6,%zmm6 + vpternlogq $0x96,%zmm10,%zmm13,%zmm7 + vpxorq %zmm25,%zmm7,%zmm7 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vextracti64x4 $1,%zmm6,%ymm12 + vpxorq %ymm12,%ymm6,%ymm6 + vextracti32x4 $1,%ymm6,%xmm12 + vpxorq %xmm12,%xmm6,%xmm6 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm6 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,512(%r10,%r11,1) + vmovdqu8 %zmm3,576(%r10,%r11,1) + vmovdqu8 %zmm4,640(%r10,%r11,1) + vmovdqu8 %zmm5,704(%r10,%r11,1) + vpshufb %zmm29,%zmm17,%zmm0 + vpshufb %zmm29,%zmm19,%zmm3 + vpshufb %zmm29,%zmm20,%zmm4 + vpshufb %zmm29,%zmm21,%zmm5 + vmovdqa64 %zmm0,1024(%rsp) + vmovdqa64 %zmm3,1088(%rsp) + vmovdqa64 %zmm4,1152(%rsp) + vmovdqa64 %zmm5,1216(%rsp) + vmovdqa64 %zmm6,%zmm14 + + addq $768,%r11 + subq $768,%r8 + cmpq $768,%r8 + jae .L_encrypt_big_nblocks_821 + +.L_no_more_big_nblocks_821: + + cmpq $512,%r8 + jae .L_encrypt_32_blocks_821 + + cmpq $256,%r8 + jae .L_encrypt_16_blocks_821 +.L_encrypt_0_blocks_ghash_32_821: + movl %r8d,%r10d + andl $~15,%r10d + movl $256,%ebx + subl %r10d,%ebx + vmovdqa64 768(%rsp),%zmm13 + vpxorq %zmm14,%zmm13,%zmm13 + vmovdqu64 0(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 832(%rsp),%zmm13 + vmovdqu64 64(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpxorq %zmm10,%zmm4,%zmm26 + vpxorq %zmm6,%zmm0,%zmm24 + vpxorq %zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 896(%rsp),%zmm13 + vmovdqu64 128(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 960(%rsp),%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + addl $256,%ebx + movl %r8d,%r10d + addl $15,%r10d + shrl $4,%r10d + je .L_last_num_blocks_is_0_830 + + cmpl $8,%r10d + je .L_last_num_blocks_is_8_830 + jb .L_last_num_blocks_is_7_1_830 + + + cmpl $12,%r10d + je .L_last_num_blocks_is_12_830 + jb .L_last_num_blocks_is_11_9_830 + + + cmpl $15,%r10d + je .L_last_num_blocks_is_15_830 + ja .L_last_num_blocks_is_16_830 + cmpl $14,%r10d + je .L_last_num_blocks_is_14_830 + jmp .L_last_num_blocks_is_13_830 + +.L_last_num_blocks_is_11_9_830: + + cmpl $10,%r10d + je .L_last_num_blocks_is_10_830 + ja .L_last_num_blocks_is_11_830 + jmp .L_last_num_blocks_is_9_830 + +.L_last_num_blocks_is_7_1_830: + cmpl $4,%r10d + je .L_last_num_blocks_is_4_830 + jb .L_last_num_blocks_is_3_1_830 + + cmpl $6,%r10d + ja .L_last_num_blocks_is_7_830 + je .L_last_num_blocks_is_6_830 + jmp .L_last_num_blocks_is_5_830 + +.L_last_num_blocks_is_3_1_830: + + cmpl $2,%r10d + ja .L_last_num_blocks_is_3_830 + je .L_last_num_blocks_is_2_830 +.L_last_num_blocks_is_1_830: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $255,%r15d + jae .L_16_blocks_overflow_831 + vpaddd %xmm28,%xmm2,%xmm0 + jmp .L_16_blocks_ok_831 + +.L_16_blocks_overflow_831: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %xmm29,%xmm0,%xmm0 +.L_16_blocks_ok_831: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%xmm17{%k1}{z} + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vaesenclast %xmm30,%xmm0,%xmm0 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %xmm29,%xmm17,%xmm17 + vextracti32x4 $0,%zmm17,%xmm7 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_832 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_832 +.L_small_initial_partial_block_832: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm0 + + + vpclmulqdq $0x01,%xmm25,%xmm0,%xmm3 + vpslldq $8,%xmm3,%xmm3 + vpxorq %xmm3,%xmm25,%xmm3 + + + vpclmulqdq $0x00,%xmm3,%xmm0,%xmm4 + vpsrldq $4,%xmm4,%xmm4 + vpclmulqdq $0x10,%xmm3,%xmm0,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm4,%xmm14 + + + + + + + + + + + + + vpxorq %xmm7,%xmm14,%xmm14 + + jmp .L_after_reduction_832 +.L_small_initial_compute_done_832: +.L_after_reduction_832: + jmp .L_last_blocks_done_830 +.L_last_num_blocks_is_2_830: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $254,%r15d + jae .L_16_blocks_overflow_833 + vpaddd %ymm28,%ymm2,%ymm0 + jmp .L_16_blocks_ok_833 + +.L_16_blocks_overflow_833: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %ymm29,%ymm0,%ymm0 +.L_16_blocks_ok_833: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%ymm17{%k1}{z} + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vaesenclast %ymm30,%ymm0,%ymm0 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %ymm29,%ymm17,%ymm17 + vextracti32x4 $1,%zmm17,%xmm7 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_834 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_834 +.L_small_initial_partial_block_834: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_834: + + orq %r8,%r8 + je .L_after_reduction_834 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_834: + jmp .L_last_blocks_done_830 +.L_last_num_blocks_is_3_830: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $253,%r15d + jae .L_16_blocks_overflow_835 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_835 + +.L_16_blocks_overflow_835: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_835: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vextracti32x4 $2,%zmm17,%xmm7 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_836 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_836 +.L_small_initial_partial_block_836: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_836: + + orq %r8,%r8 + je .L_after_reduction_836 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_836: + jmp .L_last_blocks_done_830 +.L_last_num_blocks_is_4_830: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $252,%r15d + jae .L_16_blocks_overflow_837 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_837 + +.L_16_blocks_overflow_837: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_837: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vextracti32x4 $3,%zmm17,%xmm7 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_838 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_838 +.L_small_initial_partial_block_838: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_838: + + orq %r8,%r8 + je .L_after_reduction_838 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_838: + jmp .L_last_blocks_done_830 +.L_last_num_blocks_is_5_830: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $251,%r15d + jae .L_16_blocks_overflow_839 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %xmm27,%xmm0,%xmm3 + jmp .L_16_blocks_ok_839 + +.L_16_blocks_overflow_839: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 +.L_16_blocks_ok_839: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%xmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %xmm30,%xmm3,%xmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %xmm19,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %xmm29,%xmm19,%xmm19 + vextracti32x4 $0,%zmm19,%xmm7 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_840 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_840 +.L_small_initial_partial_block_840: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_840: + + orq %r8,%r8 + je .L_after_reduction_840 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_840: + jmp .L_last_blocks_done_830 +.L_last_num_blocks_is_6_830: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $250,%r15d + jae .L_16_blocks_overflow_841 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %ymm27,%ymm0,%ymm3 + jmp .L_16_blocks_ok_841 + +.L_16_blocks_overflow_841: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 +.L_16_blocks_ok_841: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%ymm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %ymm30,%ymm3,%ymm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %ymm29,%ymm19,%ymm19 + vextracti32x4 $1,%zmm19,%xmm7 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_842 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_842 +.L_small_initial_partial_block_842: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_842: + + orq %r8,%r8 + je .L_after_reduction_842 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_842: + jmp .L_last_blocks_done_830 +.L_last_num_blocks_is_7_830: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $249,%r15d + jae .L_16_blocks_overflow_843 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_843 + +.L_16_blocks_overflow_843: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_843: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vextracti32x4 $2,%zmm19,%xmm7 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_844 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_844 +.L_small_initial_partial_block_844: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_844: + + orq %r8,%r8 + je .L_after_reduction_844 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_844: + jmp .L_last_blocks_done_830 +.L_last_num_blocks_is_8_830: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $248,%r15d + jae .L_16_blocks_overflow_845 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_845 + +.L_16_blocks_overflow_845: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_845: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vextracti32x4 $3,%zmm19,%xmm7 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_846 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_846 +.L_small_initial_partial_block_846: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_846: + + orq %r8,%r8 + je .L_after_reduction_846 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_846: + jmp .L_last_blocks_done_830 +.L_last_num_blocks_is_9_830: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $247,%r15d + jae .L_16_blocks_overflow_847 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %xmm27,%xmm3,%xmm4 + jmp .L_16_blocks_ok_847 + +.L_16_blocks_overflow_847: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 +.L_16_blocks_ok_847: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%xmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %xmm30,%xmm4,%xmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %xmm20,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %xmm29,%xmm20,%xmm20 + vextracti32x4 $0,%zmm20,%xmm7 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_848 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_848 +.L_small_initial_partial_block_848: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_848: + + orq %r8,%r8 + je .L_after_reduction_848 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_848: + jmp .L_last_blocks_done_830 +.L_last_num_blocks_is_10_830: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $246,%r15d + jae .L_16_blocks_overflow_849 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %ymm27,%ymm3,%ymm4 + jmp .L_16_blocks_ok_849 + +.L_16_blocks_overflow_849: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 +.L_16_blocks_ok_849: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%ymm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %ymm30,%ymm4,%ymm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %ymm20,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %ymm29,%ymm20,%ymm20 + vextracti32x4 $1,%zmm20,%xmm7 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_850 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_850 +.L_small_initial_partial_block_850: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_850: + + orq %r8,%r8 + je .L_after_reduction_850 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_850: + jmp .L_last_blocks_done_830 +.L_last_num_blocks_is_11_830: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $245,%r15d + jae .L_16_blocks_overflow_851 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_851 + +.L_16_blocks_overflow_851: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_851: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vextracti32x4 $2,%zmm20,%xmm7 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_852 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_852 +.L_small_initial_partial_block_852: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_852: + + orq %r8,%r8 + je .L_after_reduction_852 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_852: + jmp .L_last_blocks_done_830 +.L_last_num_blocks_is_12_830: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $244,%r15d + jae .L_16_blocks_overflow_853 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_853 + +.L_16_blocks_overflow_853: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_853: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vextracti32x4 $3,%zmm20,%xmm7 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_854 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_854 +.L_small_initial_partial_block_854: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_854: + + orq %r8,%r8 + je .L_after_reduction_854 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_854: + jmp .L_last_blocks_done_830 +.L_last_num_blocks_is_13_830: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $243,%r15d + jae .L_16_blocks_overflow_855 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %xmm27,%xmm4,%xmm5 + jmp .L_16_blocks_ok_855 + +.L_16_blocks_overflow_855: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 +.L_16_blocks_ok_855: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%xmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %xmm30,%xmm5,%xmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %xmm21,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %xmm29,%xmm21,%xmm21 + vextracti32x4 $0,%zmm21,%xmm7 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_856 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_856 +.L_small_initial_partial_block_856: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_856: + + orq %r8,%r8 + je .L_after_reduction_856 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_856: + jmp .L_last_blocks_done_830 +.L_last_num_blocks_is_14_830: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $242,%r15d + jae .L_16_blocks_overflow_857 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %ymm27,%ymm4,%ymm5 + jmp .L_16_blocks_ok_857 + +.L_16_blocks_overflow_857: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 +.L_16_blocks_ok_857: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%ymm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %ymm30,%ymm5,%ymm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %ymm21,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %ymm29,%ymm21,%ymm21 + vextracti32x4 $1,%zmm21,%xmm7 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_858 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_858 +.L_small_initial_partial_block_858: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_858: + + orq %r8,%r8 + je .L_after_reduction_858 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_858: + jmp .L_last_blocks_done_830 +.L_last_num_blocks_is_15_830: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $241,%r15d + jae .L_16_blocks_overflow_859 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_859 + +.L_16_blocks_overflow_859: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_859: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %zmm29,%zmm21,%zmm21 + vextracti32x4 $2,%zmm21,%xmm7 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_860 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_860 +.L_small_initial_partial_block_860: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_860: + + orq %r8,%r8 + je .L_after_reduction_860 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_860: + jmp .L_last_blocks_done_830 +.L_last_num_blocks_is_16_830: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $240,%r15d + jae .L_16_blocks_overflow_861 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_861 + +.L_16_blocks_overflow_861: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_861: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm14,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %zmm29,%zmm21,%zmm21 + vextracti32x4 $3,%zmm21,%xmm7 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_862: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_862: + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_862: + jmp .L_last_blocks_done_830 +.L_last_num_blocks_is_0_830: + vmovdqa64 1024(%rsp),%zmm13 + vmovdqu64 0(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1088(%rsp),%zmm13 + vmovdqu64 64(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 1152(%rsp),%zmm13 + vmovdqu64 128(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1216(%rsp),%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + +.L_last_blocks_done_830: + vpshufb %xmm29,%xmm2,%xmm2 + jmp .L_ghash_done_821 +.L_encrypt_32_blocks_821: + cmpb $240,%r15b + jae .L_16_blocks_overflow_863 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_863 +.L_16_blocks_overflow_863: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_863: + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm15,%zmm10,%zmm26 + vpxorq %zmm12,%zmm6,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1) + vpshufb %zmm29,%zmm17,%zmm0 + vpshufb %zmm29,%zmm19,%zmm3 + vpshufb %zmm29,%zmm20,%zmm4 + vpshufb %zmm29,%zmm21,%zmm5 + vmovdqa64 %zmm0,1280(%rsp) + vmovdqa64 %zmm3,1344(%rsp) + vmovdqa64 %zmm4,1408(%rsp) + vmovdqa64 %zmm5,1472(%rsp) + cmpb $240,%r15b + jae .L_16_blocks_overflow_864 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_864 +.L_16_blocks_overflow_864: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_864: + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1024(%rsp),%zmm8 + vmovdqu64 256(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 320(%rsp),%zmm18 + vmovdqa64 1088(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 384(%rsp),%zmm1 + vmovdqa64 1152(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 448(%rsp),%zmm18 + vmovdqa64 1216(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 256(%rcx,%r11,1),%zmm17 + vmovdqu8 320(%rcx,%r11,1),%zmm19 + vmovdqu8 384(%rcx,%r11,1),%zmm20 + vmovdqu8 448(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm15,%zmm10,%zmm26 + vpternlogq $0x96,%zmm12,%zmm6,%zmm24 + vpternlogq $0x96,%zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,256(%r10,%r11,1) + vmovdqu8 %zmm3,320(%r10,%r11,1) + vmovdqu8 %zmm4,384(%r10,%r11,1) + vmovdqu8 %zmm5,448(%r10,%r11,1) + vpshufb %zmm29,%zmm17,%zmm0 + vpshufb %zmm29,%zmm19,%zmm3 + vpshufb %zmm29,%zmm20,%zmm4 + vpshufb %zmm29,%zmm21,%zmm5 + vmovdqa64 %zmm0,768(%rsp) + vmovdqa64 %zmm3,832(%rsp) + vmovdqa64 %zmm4,896(%rsp) + vmovdqa64 %zmm5,960(%rsp) + vmovdqa64 1280(%rsp),%zmm13 + vmovdqu64 512(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1344(%rsp),%zmm13 + vmovdqu64 576(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 1408(%rsp),%zmm13 + vmovdqu64 640(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1472(%rsp),%zmm13 + vmovdqu64 704(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + + subq $512,%r8 + addq $512,%r11 + movl %r8d,%r10d + andl $~15,%r10d + movl $512,%ebx + subl %r10d,%ebx + movl %r8d,%r10d + addl $15,%r10d + shrl $4,%r10d + je .L_last_num_blocks_is_0_865 + + cmpl $8,%r10d + je .L_last_num_blocks_is_8_865 + jb .L_last_num_blocks_is_7_1_865 + + + cmpl $12,%r10d + je .L_last_num_blocks_is_12_865 + jb .L_last_num_blocks_is_11_9_865 + + + cmpl $15,%r10d + je .L_last_num_blocks_is_15_865 + ja .L_last_num_blocks_is_16_865 + cmpl $14,%r10d + je .L_last_num_blocks_is_14_865 + jmp .L_last_num_blocks_is_13_865 + +.L_last_num_blocks_is_11_9_865: + + cmpl $10,%r10d + je .L_last_num_blocks_is_10_865 + ja .L_last_num_blocks_is_11_865 + jmp .L_last_num_blocks_is_9_865 + +.L_last_num_blocks_is_7_1_865: + cmpl $4,%r10d + je .L_last_num_blocks_is_4_865 + jb .L_last_num_blocks_is_3_1_865 + + cmpl $6,%r10d + ja .L_last_num_blocks_is_7_865 + je .L_last_num_blocks_is_6_865 + jmp .L_last_num_blocks_is_5_865 + +.L_last_num_blocks_is_3_1_865: + + cmpl $2,%r10d + ja .L_last_num_blocks_is_3_865 + je .L_last_num_blocks_is_2_865 +.L_last_num_blocks_is_1_865: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $255,%r15d + jae .L_16_blocks_overflow_866 + vpaddd %xmm28,%xmm2,%xmm0 + jmp .L_16_blocks_ok_866 + +.L_16_blocks_overflow_866: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %xmm29,%xmm0,%xmm0 +.L_16_blocks_ok_866: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%xmm17{%k1}{z} + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vaesenclast %xmm30,%xmm0,%xmm0 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %xmm29,%xmm17,%xmm17 + vextracti32x4 $0,%zmm17,%xmm7 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_867 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_867 +.L_small_initial_partial_block_867: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm0 + + + vpclmulqdq $0x01,%xmm25,%xmm0,%xmm3 + vpslldq $8,%xmm3,%xmm3 + vpxorq %xmm3,%xmm25,%xmm3 + + + vpclmulqdq $0x00,%xmm3,%xmm0,%xmm4 + vpsrldq $4,%xmm4,%xmm4 + vpclmulqdq $0x10,%xmm3,%xmm0,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm4,%xmm14 + + + + + + + + + + + + + vpxorq %xmm7,%xmm14,%xmm14 + + jmp .L_after_reduction_867 +.L_small_initial_compute_done_867: +.L_after_reduction_867: + jmp .L_last_blocks_done_865 +.L_last_num_blocks_is_2_865: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $254,%r15d + jae .L_16_blocks_overflow_868 + vpaddd %ymm28,%ymm2,%ymm0 + jmp .L_16_blocks_ok_868 + +.L_16_blocks_overflow_868: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %ymm29,%ymm0,%ymm0 +.L_16_blocks_ok_868: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%ymm17{%k1}{z} + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vaesenclast %ymm30,%ymm0,%ymm0 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %ymm29,%ymm17,%ymm17 + vextracti32x4 $1,%zmm17,%xmm7 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_869 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_869 +.L_small_initial_partial_block_869: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_869: + + orq %r8,%r8 + je .L_after_reduction_869 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_869: + jmp .L_last_blocks_done_865 +.L_last_num_blocks_is_3_865: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $253,%r15d + jae .L_16_blocks_overflow_870 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_870 + +.L_16_blocks_overflow_870: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_870: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vextracti32x4 $2,%zmm17,%xmm7 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_871 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_871 +.L_small_initial_partial_block_871: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_871: + + orq %r8,%r8 + je .L_after_reduction_871 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_871: + jmp .L_last_blocks_done_865 +.L_last_num_blocks_is_4_865: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $252,%r15d + jae .L_16_blocks_overflow_872 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_872 + +.L_16_blocks_overflow_872: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_872: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vextracti32x4 $3,%zmm17,%xmm7 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_873 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_873 +.L_small_initial_partial_block_873: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_873: + + orq %r8,%r8 + je .L_after_reduction_873 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_873: + jmp .L_last_blocks_done_865 +.L_last_num_blocks_is_5_865: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $251,%r15d + jae .L_16_blocks_overflow_874 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %xmm27,%xmm0,%xmm3 + jmp .L_16_blocks_ok_874 + +.L_16_blocks_overflow_874: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 +.L_16_blocks_ok_874: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%xmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %xmm30,%xmm3,%xmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %xmm19,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %xmm29,%xmm19,%xmm19 + vextracti32x4 $0,%zmm19,%xmm7 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_875 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_875 +.L_small_initial_partial_block_875: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_875: + + orq %r8,%r8 + je .L_after_reduction_875 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_875: + jmp .L_last_blocks_done_865 +.L_last_num_blocks_is_6_865: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $250,%r15d + jae .L_16_blocks_overflow_876 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %ymm27,%ymm0,%ymm3 + jmp .L_16_blocks_ok_876 + +.L_16_blocks_overflow_876: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 +.L_16_blocks_ok_876: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%ymm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %ymm30,%ymm3,%ymm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %ymm29,%ymm19,%ymm19 + vextracti32x4 $1,%zmm19,%xmm7 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_877 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_877 +.L_small_initial_partial_block_877: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_877: + + orq %r8,%r8 + je .L_after_reduction_877 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_877: + jmp .L_last_blocks_done_865 +.L_last_num_blocks_is_7_865: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $249,%r15d + jae .L_16_blocks_overflow_878 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_878 + +.L_16_blocks_overflow_878: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_878: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vextracti32x4 $2,%zmm19,%xmm7 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_879 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_879 +.L_small_initial_partial_block_879: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_879: + + orq %r8,%r8 + je .L_after_reduction_879 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_879: + jmp .L_last_blocks_done_865 +.L_last_num_blocks_is_8_865: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $248,%r15d + jae .L_16_blocks_overflow_880 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_880 + +.L_16_blocks_overflow_880: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_880: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vextracti32x4 $3,%zmm19,%xmm7 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_881 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_881 +.L_small_initial_partial_block_881: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_881: + + orq %r8,%r8 + je .L_after_reduction_881 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_881: + jmp .L_last_blocks_done_865 +.L_last_num_blocks_is_9_865: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $247,%r15d + jae .L_16_blocks_overflow_882 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %xmm27,%xmm3,%xmm4 + jmp .L_16_blocks_ok_882 + +.L_16_blocks_overflow_882: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 +.L_16_blocks_ok_882: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%xmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %xmm30,%xmm4,%xmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %xmm20,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %xmm29,%xmm20,%xmm20 + vextracti32x4 $0,%zmm20,%xmm7 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_883 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_883 +.L_small_initial_partial_block_883: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_883: + + orq %r8,%r8 + je .L_after_reduction_883 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_883: + jmp .L_last_blocks_done_865 +.L_last_num_blocks_is_10_865: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $246,%r15d + jae .L_16_blocks_overflow_884 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %ymm27,%ymm3,%ymm4 + jmp .L_16_blocks_ok_884 + +.L_16_blocks_overflow_884: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 +.L_16_blocks_ok_884: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%ymm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %ymm30,%ymm4,%ymm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %ymm20,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %ymm29,%ymm20,%ymm20 + vextracti32x4 $1,%zmm20,%xmm7 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_885 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_885 +.L_small_initial_partial_block_885: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_885: + + orq %r8,%r8 + je .L_after_reduction_885 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_885: + jmp .L_last_blocks_done_865 +.L_last_num_blocks_is_11_865: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $245,%r15d + jae .L_16_blocks_overflow_886 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_886 + +.L_16_blocks_overflow_886: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_886: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vextracti32x4 $2,%zmm20,%xmm7 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_887 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_887 +.L_small_initial_partial_block_887: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_887: + + orq %r8,%r8 + je .L_after_reduction_887 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_887: + jmp .L_last_blocks_done_865 +.L_last_num_blocks_is_12_865: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $244,%r15d + jae .L_16_blocks_overflow_888 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_888 + +.L_16_blocks_overflow_888: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_888: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vextracti32x4 $3,%zmm20,%xmm7 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_889 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_889 +.L_small_initial_partial_block_889: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_889: + + orq %r8,%r8 + je .L_after_reduction_889 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_889: + jmp .L_last_blocks_done_865 +.L_last_num_blocks_is_13_865: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $243,%r15d + jae .L_16_blocks_overflow_890 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %xmm27,%xmm4,%xmm5 + jmp .L_16_blocks_ok_890 + +.L_16_blocks_overflow_890: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 +.L_16_blocks_ok_890: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%xmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %xmm30,%xmm5,%xmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %xmm21,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %xmm29,%xmm21,%xmm21 + vextracti32x4 $0,%zmm21,%xmm7 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_891 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_891 +.L_small_initial_partial_block_891: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_891: + + orq %r8,%r8 + je .L_after_reduction_891 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_891: + jmp .L_last_blocks_done_865 +.L_last_num_blocks_is_14_865: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $242,%r15d + jae .L_16_blocks_overflow_892 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %ymm27,%ymm4,%ymm5 + jmp .L_16_blocks_ok_892 + +.L_16_blocks_overflow_892: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 +.L_16_blocks_ok_892: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%ymm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %ymm30,%ymm5,%ymm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %ymm21,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %ymm29,%ymm21,%ymm21 + vextracti32x4 $1,%zmm21,%xmm7 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_893 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_893 +.L_small_initial_partial_block_893: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_893: + + orq %r8,%r8 + je .L_after_reduction_893 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_893: + jmp .L_last_blocks_done_865 +.L_last_num_blocks_is_15_865: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $241,%r15d + jae .L_16_blocks_overflow_894 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_894 + +.L_16_blocks_overflow_894: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_894: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %zmm29,%zmm21,%zmm21 + vextracti32x4 $2,%zmm21,%xmm7 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_895 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_895 +.L_small_initial_partial_block_895: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_895: + + orq %r8,%r8 + je .L_after_reduction_895 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_895: + jmp .L_last_blocks_done_865 +.L_last_num_blocks_is_16_865: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $240,%r15d + jae .L_16_blocks_overflow_896 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_896 + +.L_16_blocks_overflow_896: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_896: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %zmm29,%zmm21,%zmm21 + vextracti32x4 $3,%zmm21,%xmm7 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_897: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_897: + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_897: + jmp .L_last_blocks_done_865 +.L_last_num_blocks_is_0_865: + vmovdqa64 768(%rsp),%zmm13 + vpxorq %zmm14,%zmm13,%zmm13 + vmovdqu64 0(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 832(%rsp),%zmm13 + vmovdqu64 64(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpxorq %zmm10,%zmm4,%zmm26 + vpxorq %zmm6,%zmm0,%zmm24 + vpxorq %zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 896(%rsp),%zmm13 + vmovdqu64 128(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 960(%rsp),%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + +.L_last_blocks_done_865: + vpshufb %xmm29,%xmm2,%xmm2 + jmp .L_ghash_done_821 +.L_encrypt_16_blocks_821: + cmpb $240,%r15b + jae .L_16_blocks_overflow_898 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_898 +.L_16_blocks_overflow_898: + vpshufb %zmm29,%zmm2,%zmm2 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_898: + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp),%zmm1 + + + + + vshufi64x2 $255,%zmm5,%zmm5,%zmm2 + addb $16,%r15b + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + + + + + + + + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm6 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm6 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + + + + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21 + + + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm15,%zmm10,%zmm26 + vpxorq %zmm12,%zmm6,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + + + + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + + + + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1) + vpshufb %zmm29,%zmm17,%zmm0 + vpshufb %zmm29,%zmm19,%zmm3 + vpshufb %zmm29,%zmm20,%zmm4 + vpshufb %zmm29,%zmm21,%zmm5 + vmovdqa64 %zmm0,1280(%rsp) + vmovdqa64 %zmm3,1344(%rsp) + vmovdqa64 %zmm4,1408(%rsp) + vmovdqa64 %zmm5,1472(%rsp) + vmovdqa64 1024(%rsp),%zmm13 + vmovdqu64 256(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1088(%rsp),%zmm13 + vmovdqu64 320(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 1152(%rsp),%zmm13 + vmovdqu64 384(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1216(%rsp),%zmm13 + vmovdqu64 448(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + subq $256,%r8 + addq $256,%r11 + movl %r8d,%r10d + addl $15,%r10d + shrl $4,%r10d + je .L_last_num_blocks_is_0_899 + + cmpl $8,%r10d + je .L_last_num_blocks_is_8_899 + jb .L_last_num_blocks_is_7_1_899 + + + cmpl $12,%r10d + je .L_last_num_blocks_is_12_899 + jb .L_last_num_blocks_is_11_9_899 + + + cmpl $15,%r10d + je .L_last_num_blocks_is_15_899 + ja .L_last_num_blocks_is_16_899 + cmpl $14,%r10d + je .L_last_num_blocks_is_14_899 + jmp .L_last_num_blocks_is_13_899 + +.L_last_num_blocks_is_11_9_899: + + cmpl $10,%r10d + je .L_last_num_blocks_is_10_899 + ja .L_last_num_blocks_is_11_899 + jmp .L_last_num_blocks_is_9_899 + +.L_last_num_blocks_is_7_1_899: + cmpl $4,%r10d + je .L_last_num_blocks_is_4_899 + jb .L_last_num_blocks_is_3_1_899 + + cmpl $6,%r10d + ja .L_last_num_blocks_is_7_899 + je .L_last_num_blocks_is_6_899 + jmp .L_last_num_blocks_is_5_899 + +.L_last_num_blocks_is_3_1_899: + + cmpl $2,%r10d + ja .L_last_num_blocks_is_3_899 + je .L_last_num_blocks_is_2_899 +.L_last_num_blocks_is_1_899: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $255,%r15d + jae .L_16_blocks_overflow_900 + vpaddd %xmm28,%xmm2,%xmm0 + jmp .L_16_blocks_ok_900 + +.L_16_blocks_overflow_900: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %xmm29,%xmm0,%xmm0 +.L_16_blocks_ok_900: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $0,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%xmm17{%k1}{z} + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %xmm31,%xmm0,%xmm0 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %xmm30,%xmm0,%xmm0 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %xmm29,%xmm17,%xmm17 + vextracti32x4 $0,%zmm17,%xmm7 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_901 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_901 +.L_small_initial_partial_block_901: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + + + + + + + + + + + + vpxorq %xmm7,%xmm14,%xmm14 + + jmp .L_after_reduction_901 +.L_small_initial_compute_done_901: +.L_after_reduction_901: + jmp .L_last_blocks_done_899 +.L_last_num_blocks_is_2_899: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $254,%r15d + jae .L_16_blocks_overflow_902 + vpaddd %ymm28,%ymm2,%ymm0 + jmp .L_16_blocks_ok_902 + +.L_16_blocks_overflow_902: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %ymm29,%ymm0,%ymm0 +.L_16_blocks_ok_902: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $1,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%ymm17{%k1}{z} + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %ymm31,%ymm0,%ymm0 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %ymm30,%ymm0,%ymm0 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %ymm29,%ymm17,%ymm17 + vextracti32x4 $1,%zmm17,%xmm7 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_903 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_903 +.L_small_initial_partial_block_903: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_903: + + orq %r8,%r8 + je .L_after_reduction_903 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_903: + jmp .L_last_blocks_done_899 +.L_last_num_blocks_is_3_899: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $253,%r15d + jae .L_16_blocks_overflow_904 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_904 + +.L_16_blocks_overflow_904: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_904: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $2,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vextracti32x4 $2,%zmm17,%xmm7 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_905 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_905 +.L_small_initial_partial_block_905: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_905: + + orq %r8,%r8 + je .L_after_reduction_905 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_905: + jmp .L_last_blocks_done_899 +.L_last_num_blocks_is_4_899: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $252,%r15d + jae .L_16_blocks_overflow_906 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_906 + +.L_16_blocks_overflow_906: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_906: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $3,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vextracti32x4 $3,%zmm17,%xmm7 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_907 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_907 +.L_small_initial_partial_block_907: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_907: + + orq %r8,%r8 + je .L_after_reduction_907 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_907: + jmp .L_last_blocks_done_899 +.L_last_num_blocks_is_5_899: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $251,%r15d + jae .L_16_blocks_overflow_908 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %xmm27,%xmm0,%xmm3 + jmp .L_16_blocks_ok_908 + +.L_16_blocks_overflow_908: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 +.L_16_blocks_ok_908: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $0,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%xmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %xmm30,%xmm3,%xmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %xmm19,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %xmm29,%xmm19,%xmm19 + vextracti32x4 $0,%zmm19,%xmm7 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_909 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_909 +.L_small_initial_partial_block_909: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_909: + + orq %r8,%r8 + je .L_after_reduction_909 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_909: + jmp .L_last_blocks_done_899 +.L_last_num_blocks_is_6_899: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $250,%r15d + jae .L_16_blocks_overflow_910 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %ymm27,%ymm0,%ymm3 + jmp .L_16_blocks_ok_910 + +.L_16_blocks_overflow_910: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 +.L_16_blocks_ok_910: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $1,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%ymm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %ymm30,%ymm3,%ymm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %ymm29,%ymm19,%ymm19 + vextracti32x4 $1,%zmm19,%xmm7 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_911 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_911 +.L_small_initial_partial_block_911: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_911: + + orq %r8,%r8 + je .L_after_reduction_911 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_911: + jmp .L_last_blocks_done_899 +.L_last_num_blocks_is_7_899: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $249,%r15d + jae .L_16_blocks_overflow_912 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_912 + +.L_16_blocks_overflow_912: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_912: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $2,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vextracti32x4 $2,%zmm19,%xmm7 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_913 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_913 +.L_small_initial_partial_block_913: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_913: + + orq %r8,%r8 + je .L_after_reduction_913 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_913: + jmp .L_last_blocks_done_899 +.L_last_num_blocks_is_8_899: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $248,%r15d + jae .L_16_blocks_overflow_914 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_914 + +.L_16_blocks_overflow_914: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_914: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $3,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vextracti32x4 $3,%zmm19,%xmm7 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_915 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_915 +.L_small_initial_partial_block_915: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_915: + + orq %r8,%r8 + je .L_after_reduction_915 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_915: + jmp .L_last_blocks_done_899 +.L_last_num_blocks_is_9_899: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $247,%r15d + jae .L_16_blocks_overflow_916 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %xmm27,%xmm3,%xmm4 + jmp .L_16_blocks_ok_916 + +.L_16_blocks_overflow_916: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 +.L_16_blocks_ok_916: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $0,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%xmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %xmm30,%xmm4,%xmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %xmm20,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %xmm29,%xmm20,%xmm20 + vextracti32x4 $0,%zmm20,%xmm7 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_917 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_917 +.L_small_initial_partial_block_917: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_917: + + orq %r8,%r8 + je .L_after_reduction_917 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_917: + jmp .L_last_blocks_done_899 +.L_last_num_blocks_is_10_899: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $246,%r15d + jae .L_16_blocks_overflow_918 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %ymm27,%ymm3,%ymm4 + jmp .L_16_blocks_ok_918 + +.L_16_blocks_overflow_918: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 +.L_16_blocks_ok_918: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $1,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%ymm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %ymm30,%ymm4,%ymm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %ymm20,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %ymm29,%ymm20,%ymm20 + vextracti32x4 $1,%zmm20,%xmm7 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_919 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_919 +.L_small_initial_partial_block_919: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_919: + + orq %r8,%r8 + je .L_after_reduction_919 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_919: + jmp .L_last_blocks_done_899 +.L_last_num_blocks_is_11_899: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $245,%r15d + jae .L_16_blocks_overflow_920 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_920 + +.L_16_blocks_overflow_920: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_920: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $2,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vextracti32x4 $2,%zmm20,%xmm7 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_921 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_921 +.L_small_initial_partial_block_921: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_921: + + orq %r8,%r8 + je .L_after_reduction_921 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_921: + jmp .L_last_blocks_done_899 +.L_last_num_blocks_is_12_899: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $244,%r15d + jae .L_16_blocks_overflow_922 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_922 + +.L_16_blocks_overflow_922: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_922: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $3,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vextracti32x4 $3,%zmm20,%xmm7 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_923 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_923 +.L_small_initial_partial_block_923: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_923: + + orq %r8,%r8 + je .L_after_reduction_923 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_923: + jmp .L_last_blocks_done_899 +.L_last_num_blocks_is_13_899: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $243,%r15d + jae .L_16_blocks_overflow_924 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %xmm27,%xmm4,%xmm5 + jmp .L_16_blocks_ok_924 + +.L_16_blocks_overflow_924: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 +.L_16_blocks_ok_924: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $0,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%xmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %xmm30,%xmm5,%xmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %xmm21,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %xmm29,%xmm21,%xmm21 + vextracti32x4 $0,%zmm21,%xmm7 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_925 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_925 +.L_small_initial_partial_block_925: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_925: + + orq %r8,%r8 + je .L_after_reduction_925 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_925: + jmp .L_last_blocks_done_899 +.L_last_num_blocks_is_14_899: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $242,%r15d + jae .L_16_blocks_overflow_926 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %ymm27,%ymm4,%ymm5 + jmp .L_16_blocks_ok_926 + +.L_16_blocks_overflow_926: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 +.L_16_blocks_ok_926: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $1,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%ymm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %ymm30,%ymm5,%ymm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %ymm21,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %ymm29,%ymm21,%ymm21 + vextracti32x4 $1,%zmm21,%xmm7 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_927 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_927 +.L_small_initial_partial_block_927: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_927: + + orq %r8,%r8 + je .L_after_reduction_927 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_927: + jmp .L_last_blocks_done_899 +.L_last_num_blocks_is_15_899: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $241,%r15d + jae .L_16_blocks_overflow_928 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_928 + +.L_16_blocks_overflow_928: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_928: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $2,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %zmm29,%zmm21,%zmm21 + vextracti32x4 $2,%zmm21,%xmm7 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_929 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_929 +.L_small_initial_partial_block_929: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_929: + + orq %r8,%r8 + je .L_after_reduction_929 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_929: + jmp .L_last_blocks_done_899 +.L_last_num_blocks_is_16_899: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $240,%r15d + jae .L_16_blocks_overflow_930 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_930 + +.L_16_blocks_overflow_930: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_930: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vmovdqa64 1280(%rsp),%zmm8 + vmovdqu64 512(%rsp),%zmm1 + vextracti32x4 $3,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 576(%rsp),%zmm18 + vmovdqa64 1344(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 640(%rsp),%zmm1 + vmovdqa64 1408(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 704(%rsp),%zmm18 + vmovdqa64 1472(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpternlogq $0x96,%zmm12,%zmm24,%zmm14 + vpternlogq $0x96,%zmm13,%zmm25,%zmm7 + vpternlogq $0x96,%zmm15,%zmm26,%zmm10 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vpsrldq $8,%zmm10,%zmm15 + vpslldq $8,%zmm10,%zmm10 + + vmovdqa64 POLY2(%rip),%xmm16 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vpxorq %zmm15,%zmm14,%zmm14 + vpxorq %zmm10,%zmm7,%zmm7 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vextracti64x4 $1,%zmm14,%ymm12 + vpxorq %ymm12,%ymm14,%ymm14 + vextracti32x4 $1,%ymm14,%xmm12 + vpxorq %xmm12,%xmm14,%xmm14 + vextracti64x4 $1,%zmm7,%ymm13 + vpxorq %ymm13,%ymm7,%ymm7 + vextracti32x4 $1,%ymm7,%xmm13 + vpxorq %xmm13,%xmm7,%xmm7 + vbroadcastf64x2 176(%rdi),%zmm31 + vpclmulqdq $0x01,%xmm7,%xmm16,%xmm13 + vpslldq $8,%xmm13,%xmm13 + vpxorq %xmm13,%xmm7,%xmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vpclmulqdq $0x00,%xmm13,%xmm16,%xmm12 + vpsrldq $4,%xmm12,%xmm12 + vpclmulqdq $0x10,%xmm13,%xmm16,%xmm15 + vpslldq $4,%xmm15,%xmm15 + + vpternlogq $0x96,%xmm12,%xmm15,%xmm14 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %zmm29,%zmm21,%zmm21 + vextracti32x4 $3,%zmm21,%xmm7 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_931: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vpxorq %zmm14,%zmm17,%zmm17 + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm31,%zmm5,%zmm5 + vpxorq %zmm8,%zmm0,%zmm0 + vpxorq %zmm22,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_931: + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_931: + jmp .L_last_blocks_done_899 +.L_last_num_blocks_is_0_899: + vmovdqa64 1280(%rsp),%zmm13 + vmovdqu64 512(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1344(%rsp),%zmm13 + vmovdqu64 576(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 1408(%rsp),%zmm13 + vmovdqu64 640(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 1472(%rsp),%zmm13 + vmovdqu64 704(%rsp),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + +.L_last_blocks_done_899: + vpshufb %xmm29,%xmm2,%xmm2 + jmp .L_ghash_done_821 + +.L_message_below_32_blocks_821: + + + subq $256,%r8 + addq $256,%r11 + movl %r8d,%r10d + testq %r14,%r14 + jnz .L_skip_hkeys_precomputation_932 + vmovdqu64 640(%rsp),%zmm3 + + + vshufi64x2 $0x00,%zmm3,%zmm3,%zmm3 + + vmovdqu64 576(%rsp),%zmm4 + vmovdqu64 512(%rsp),%zmm5 + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,448(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,384(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm4,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm4,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm4,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm4,%zmm4 + vpxorq %zmm10,%zmm4,%zmm4 + + vpsrldq $8,%zmm4,%zmm10 + vpslldq $8,%zmm4,%zmm4 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm4,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm4,%zmm4 + + + + vpclmulqdq $0x00,%zmm4,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm4,%zmm10,%zmm4 + vpslldq $4,%zmm4,%zmm4 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm4 + + vmovdqu64 %zmm4,320(%rsp) + + vpclmulqdq $0x11,%zmm3,%zmm5,%zmm6 + vpclmulqdq $0x00,%zmm3,%zmm5,%zmm7 + vpclmulqdq $0x01,%zmm3,%zmm5,%zmm10 + vpclmulqdq $0x10,%zmm3,%zmm5,%zmm5 + vpxorq %zmm10,%zmm5,%zmm5 + + vpsrldq $8,%zmm5,%zmm10 + vpslldq $8,%zmm5,%zmm5 + vpxorq %zmm10,%zmm6,%zmm6 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vmovdqu64 POLY2(%rip),%zmm10 + + vpclmulqdq $0x01,%zmm5,%zmm10,%zmm7 + vpslldq $8,%zmm7,%zmm7 + vpxorq %zmm7,%zmm5,%zmm5 + + + + vpclmulqdq $0x00,%zmm5,%zmm10,%zmm7 + vpsrldq $4,%zmm7,%zmm7 + vpclmulqdq $0x10,%zmm5,%zmm10,%zmm5 + vpslldq $4,%zmm5,%zmm5 + + vpternlogq $0x96,%zmm7,%zmm6,%zmm5 + + vmovdqu64 %zmm5,256(%rsp) +.L_skip_hkeys_precomputation_932: + movq $1,%r14 + andl $~15,%r10d + movl $512,%ebx + subl %r10d,%ebx + movl %r8d,%r10d + addl $15,%r10d + shrl $4,%r10d + je .L_last_num_blocks_is_0_933 + + cmpl $8,%r10d + je .L_last_num_blocks_is_8_933 + jb .L_last_num_blocks_is_7_1_933 + + + cmpl $12,%r10d + je .L_last_num_blocks_is_12_933 + jb .L_last_num_blocks_is_11_9_933 + + + cmpl $15,%r10d + je .L_last_num_blocks_is_15_933 + ja .L_last_num_blocks_is_16_933 + cmpl $14,%r10d + je .L_last_num_blocks_is_14_933 + jmp .L_last_num_blocks_is_13_933 + +.L_last_num_blocks_is_11_9_933: + + cmpl $10,%r10d + je .L_last_num_blocks_is_10_933 + ja .L_last_num_blocks_is_11_933 + jmp .L_last_num_blocks_is_9_933 + +.L_last_num_blocks_is_7_1_933: + cmpl $4,%r10d + je .L_last_num_blocks_is_4_933 + jb .L_last_num_blocks_is_3_1_933 + + cmpl $6,%r10d + ja .L_last_num_blocks_is_7_933 + je .L_last_num_blocks_is_6_933 + jmp .L_last_num_blocks_is_5_933 + +.L_last_num_blocks_is_3_1_933: + + cmpl $2,%r10d + ja .L_last_num_blocks_is_3_933 + je .L_last_num_blocks_is_2_933 +.L_last_num_blocks_is_1_933: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $255,%r15d + jae .L_16_blocks_overflow_934 + vpaddd %xmm28,%xmm2,%xmm0 + jmp .L_16_blocks_ok_934 + +.L_16_blocks_overflow_934: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %xmm29,%xmm0,%xmm0 +.L_16_blocks_ok_934: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%xmm17{%k1}{z} + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %xmm30,%xmm0,%xmm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %xmm31,%xmm0,%xmm0 + vaesenclast %xmm30,%xmm0,%xmm0 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %xmm29,%xmm17,%xmm17 + vextracti32x4 $0,%zmm17,%xmm7 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_935 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_935 +.L_small_initial_partial_block_935: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm0 + + + vpclmulqdq $0x01,%xmm25,%xmm0,%xmm3 + vpslldq $8,%xmm3,%xmm3 + vpxorq %xmm3,%xmm25,%xmm3 + + + vpclmulqdq $0x00,%xmm3,%xmm0,%xmm4 + vpsrldq $4,%xmm4,%xmm4 + vpclmulqdq $0x10,%xmm3,%xmm0,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm4,%xmm14 + + + + + + + + + + + + + vpxorq %xmm7,%xmm14,%xmm14 + + jmp .L_after_reduction_935 +.L_small_initial_compute_done_935: +.L_after_reduction_935: + jmp .L_last_blocks_done_933 +.L_last_num_blocks_is_2_933: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $254,%r15d + jae .L_16_blocks_overflow_936 + vpaddd %ymm28,%ymm2,%ymm0 + jmp .L_16_blocks_ok_936 + +.L_16_blocks_overflow_936: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %ymm29,%ymm0,%ymm0 +.L_16_blocks_ok_936: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%ymm17{%k1}{z} + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %ymm30,%ymm0,%ymm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %ymm31,%ymm0,%ymm0 + vaesenclast %ymm30,%ymm0,%ymm0 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %ymm29,%ymm17,%ymm17 + vextracti32x4 $1,%zmm17,%xmm7 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_937 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_937 +.L_small_initial_partial_block_937: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm17,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm17,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm17,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm17,%xmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_937: + + orq %r8,%r8 + je .L_after_reduction_937 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_937: + jmp .L_last_blocks_done_933 +.L_last_num_blocks_is_3_933: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $253,%r15d + jae .L_16_blocks_overflow_938 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_938 + +.L_16_blocks_overflow_938: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_938: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vextracti32x4 $2,%zmm17,%xmm7 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_939 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_939 +.L_small_initial_partial_block_939: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm17,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm17,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm17,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm17,%ymm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_939: + + orq %r8,%r8 + je .L_after_reduction_939 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_939: + jmp .L_last_blocks_done_933 +.L_last_num_blocks_is_4_933: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $252,%r15d + jae .L_16_blocks_overflow_940 + vpaddd %zmm28,%zmm2,%zmm0 + jmp .L_16_blocks_ok_940 + +.L_16_blocks_overflow_940: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpshufb %zmm29,%zmm0,%zmm0 +.L_16_blocks_ok_940: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm0,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm0,%zmm0 + vpxorq %zmm17,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm17,%zmm17{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vextracti32x4 $3,%zmm17,%xmm7 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_941 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_941 +.L_small_initial_partial_block_941: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpxorq %zmm26,%zmm4,%zmm4 + vpxorq %zmm24,%zmm0,%zmm0 + vpxorq %zmm25,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_941: + + orq %r8,%r8 + je .L_after_reduction_941 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_941: + jmp .L_last_blocks_done_933 +.L_last_num_blocks_is_5_933: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $251,%r15d + jae .L_16_blocks_overflow_942 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %xmm27,%xmm0,%xmm3 + jmp .L_16_blocks_ok_942 + +.L_16_blocks_overflow_942: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 +.L_16_blocks_ok_942: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%xmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %xmm30,%xmm3,%xmm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %xmm31,%xmm3,%xmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %xmm30,%xmm3,%xmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %xmm19,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %xmm29,%xmm19,%xmm19 + vextracti32x4 $0,%zmm19,%xmm7 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_943 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_943 +.L_small_initial_partial_block_943: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_943: + + orq %r8,%r8 + je .L_after_reduction_943 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_943: + jmp .L_last_blocks_done_933 +.L_last_num_blocks_is_6_933: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $250,%r15d + jae .L_16_blocks_overflow_944 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %ymm27,%ymm0,%ymm3 + jmp .L_16_blocks_ok_944 + +.L_16_blocks_overflow_944: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 +.L_16_blocks_ok_944: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%ymm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %ymm30,%ymm3,%ymm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %ymm31,%ymm3,%ymm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %ymm30,%ymm3,%ymm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %ymm29,%ymm19,%ymm19 + vextracti32x4 $1,%zmm19,%xmm7 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_945 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_945 +.L_small_initial_partial_block_945: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm19,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm19,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm19,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm19,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_945: + + orq %r8,%r8 + je .L_after_reduction_945 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_945: + jmp .L_last_blocks_done_933 +.L_last_num_blocks_is_7_933: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $249,%r15d + jae .L_16_blocks_overflow_946 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_946 + +.L_16_blocks_overflow_946: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_946: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vextracti32x4 $2,%zmm19,%xmm7 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_947 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_947 +.L_small_initial_partial_block_947: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm19,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm19,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm19,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm19,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_947: + + orq %r8,%r8 + je .L_after_reduction_947 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_947: + jmp .L_last_blocks_done_933 +.L_last_num_blocks_is_8_933: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $64,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $248,%r15d + jae .L_16_blocks_overflow_948 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + jmp .L_16_blocks_ok_948 + +.L_16_blocks_overflow_948: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 +.L_16_blocks_ok_948: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm3,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm19,%zmm19{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vextracti32x4 $3,%zmm19,%xmm7 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_949 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_949 +.L_small_initial_partial_block_949: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_949: + + orq %r8,%r8 + je .L_after_reduction_949 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_949: + jmp .L_last_blocks_done_933 +.L_last_num_blocks_is_9_933: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $247,%r15d + jae .L_16_blocks_overflow_950 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %xmm27,%xmm3,%xmm4 + jmp .L_16_blocks_ok_950 + +.L_16_blocks_overflow_950: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 +.L_16_blocks_ok_950: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%xmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %xmm30,%xmm4,%xmm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %xmm31,%xmm4,%xmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %xmm30,%xmm4,%xmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %xmm20,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %xmm29,%xmm20,%xmm20 + vextracti32x4 $0,%zmm20,%xmm7 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_951 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_951 +.L_small_initial_partial_block_951: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_951: + + orq %r8,%r8 + je .L_after_reduction_951 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_951: + jmp .L_last_blocks_done_933 +.L_last_num_blocks_is_10_933: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $246,%r15d + jae .L_16_blocks_overflow_952 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %ymm27,%ymm3,%ymm4 + jmp .L_16_blocks_ok_952 + +.L_16_blocks_overflow_952: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 +.L_16_blocks_ok_952: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%ymm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %ymm30,%ymm4,%ymm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %ymm31,%ymm4,%ymm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %ymm30,%ymm4,%ymm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %ymm20,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %ymm29,%ymm20,%ymm20 + vextracti32x4 $1,%zmm20,%xmm7 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_953 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_953 +.L_small_initial_partial_block_953: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm20,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm20,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm20,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm20,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_953: + + orq %r8,%r8 + je .L_after_reduction_953 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_953: + jmp .L_last_blocks_done_933 +.L_last_num_blocks_is_11_933: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $245,%r15d + jae .L_16_blocks_overflow_954 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_954 + +.L_16_blocks_overflow_954: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_954: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vextracti32x4 $2,%zmm20,%xmm7 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_955 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_955 +.L_small_initial_partial_block_955: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm20,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm20,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm20,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm20,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_955: + + orq %r8,%r8 + je .L_after_reduction_955 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_955: + jmp .L_last_blocks_done_933 +.L_last_num_blocks_is_12_933: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $128,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $244,%r15d + jae .L_16_blocks_overflow_956 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + jmp .L_16_blocks_ok_956 + +.L_16_blocks_overflow_956: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 +.L_16_blocks_ok_956: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm4,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm20,%zmm20{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vextracti32x4 $3,%zmm20,%xmm7 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_957 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_957 +.L_small_initial_partial_block_957: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vpxorq %zmm8,%zmm0,%zmm8 + vpxorq %zmm22,%zmm3,%zmm22 + vpxorq %zmm30,%zmm4,%zmm30 + vpxorq %zmm31,%zmm5,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_957: + + orq %r8,%r8 + je .L_after_reduction_957 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_957: + jmp .L_last_blocks_done_933 +.L_last_num_blocks_is_13_933: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $243,%r15d + jae .L_16_blocks_overflow_958 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %xmm27,%xmm4,%xmm5 + jmp .L_16_blocks_ok_958 + +.L_16_blocks_overflow_958: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 +.L_16_blocks_ok_958: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $0,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%xmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %xmm30,%xmm5,%xmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %xmm31,%xmm5,%xmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %xmm30,%xmm5,%xmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %xmm21,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %xmm29,%xmm21,%xmm21 + vextracti32x4 $0,%zmm21,%xmm7 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_959 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_959 +.L_small_initial_partial_block_959: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 160(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 224(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 288(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + + vpxorq %zmm26,%zmm30,%zmm30 + vpxorq %zmm24,%zmm8,%zmm8 + vpxorq %zmm25,%zmm22,%zmm22 + + vpxorq %zmm31,%zmm30,%zmm30 + vpsrldq $8,%zmm30,%zmm4 + vpslldq $8,%zmm30,%zmm5 + vpxorq %zmm4,%zmm8,%zmm0 + vpxorq %zmm5,%zmm22,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_959: + + orq %r8,%r8 + je .L_after_reduction_959 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_959: + jmp .L_last_blocks_done_933 +.L_last_num_blocks_is_14_933: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $242,%r15d + jae .L_16_blocks_overflow_960 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %ymm27,%ymm4,%ymm5 + jmp .L_16_blocks_ok_960 + +.L_16_blocks_overflow_960: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 +.L_16_blocks_ok_960: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $1,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%ymm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %ymm30,%ymm5,%ymm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %ymm31,%ymm5,%ymm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %ymm30,%ymm5,%ymm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %ymm21,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %ymm29,%ymm21,%ymm21 + vextracti32x4 $1,%zmm21,%xmm7 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_961 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_961 +.L_small_initial_partial_block_961: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 144(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 208(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 272(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 336(%rsi),%xmm1 + vpclmulqdq $0x01,%xmm1,%xmm21,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm21,%xmm5 + vpclmulqdq $0x11,%xmm1,%xmm21,%xmm0 + vpclmulqdq $0x00,%xmm1,%xmm21,%xmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_961: + + orq %r8,%r8 + je .L_after_reduction_961 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_961: + jmp .L_last_blocks_done_933 +.L_last_num_blocks_is_15_933: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $241,%r15d + jae .L_16_blocks_overflow_962 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_962 + +.L_16_blocks_overflow_962: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_962: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $2,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %zmm29,%zmm21,%zmm21 + vextracti32x4 $2,%zmm21,%xmm7 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_963 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_963 +.L_small_initial_partial_block_963: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 128(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 192(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 256(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 320(%rsi),%ymm1 + vpclmulqdq $0x01,%ymm1,%ymm21,%ymm4 + vpclmulqdq $0x10,%ymm1,%ymm21,%ymm5 + vpclmulqdq $0x11,%ymm1,%ymm21,%ymm0 + vpclmulqdq $0x00,%ymm1,%ymm21,%ymm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_963: + + orq %r8,%r8 + je .L_after_reduction_963 + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_963: + jmp .L_last_blocks_done_933 +.L_last_num_blocks_is_16_933: + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%rax + subq $192,%rax + kmovq (%r10,%rax,8),%k1 + cmpl $240,%r15d + jae .L_16_blocks_overflow_964 + vpaddd %zmm28,%zmm2,%zmm0 + vpaddd %zmm27,%zmm0,%zmm3 + vpaddd %zmm27,%zmm3,%zmm4 + vpaddd %zmm27,%zmm4,%zmm5 + jmp .L_16_blocks_ok_964 + +.L_16_blocks_overflow_964: + vpshufb %zmm29,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vmovdqa64 ddq_add_4444(%rip),%zmm5 + vpaddd %zmm5,%zmm0,%zmm3 + vpaddd %zmm5,%zmm3,%zmm4 + vpaddd %zmm5,%zmm4,%zmm5 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 +.L_16_blocks_ok_964: + + + + + vbroadcastf64x2 0(%rdi),%zmm30 + vpxorq 768(%rsp),%zmm14,%zmm8 + vmovdqu64 0(%rsp,%rbx,1),%zmm1 + vextracti32x4 $3,%zmm5,%xmm2 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + + + vbroadcastf64x2 16(%rdi),%zmm31 + vmovdqu64 64(%rsp,%rbx,1),%zmm18 + vmovdqa64 832(%rsp),%zmm22 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm30,%zmm3,%zmm3 + vpxorq %zmm30,%zmm4,%zmm4 + vpxorq %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm30 + + + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm14 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm7 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm10 + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm11 + vmovdqu64 128(%rsp,%rbx,1),%zmm1 + vmovdqa64 896(%rsp),%zmm8 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm18 + vmovdqa64 960(%rsp),%zmm22 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm30 + + + vpclmulqdq $0x10,%zmm1,%zmm8,%zmm20 + vpclmulqdq $0x01,%zmm1,%zmm8,%zmm21 + vpclmulqdq $0x11,%zmm1,%zmm8,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm8,%zmm19 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm31 + + + vpternlogq $0x96,%zmm17,%zmm12,%zmm14 + vpternlogq $0x96,%zmm19,%zmm13,%zmm7 + vpternlogq $0x96,%zmm21,%zmm16,%zmm11 + vpternlogq $0x96,%zmm20,%zmm15,%zmm10 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm30 + vmovdqu8 0(%rcx,%r11,1),%zmm17 + vmovdqu8 64(%rcx,%r11,1),%zmm19 + vmovdqu8 128(%rcx,%r11,1),%zmm20 + vmovdqu8 192(%rcx,%r11,1),%zmm21{%k1}{z} + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm31 + + + vpclmulqdq $0x10,%zmm18,%zmm22,%zmm15 + vpclmulqdq $0x01,%zmm18,%zmm22,%zmm16 + vpclmulqdq $0x11,%zmm18,%zmm22,%zmm12 + vpclmulqdq $0x00,%zmm18,%zmm22,%zmm13 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm30 + vpternlogq $0x96,%zmm16,%zmm11,%zmm10 + vpxorq %zmm12,%zmm14,%zmm24 + vpxorq %zmm13,%zmm7,%zmm25 + vpxorq %zmm15,%zmm10,%zmm26 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm31 + vaesenc %zmm30,%zmm0,%zmm0 + vaesenc %zmm30,%zmm3,%zmm3 + vaesenc %zmm30,%zmm4,%zmm4 + vaesenc %zmm30,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm30 + vaesenc %zmm31,%zmm0,%zmm0 + vaesenc %zmm31,%zmm3,%zmm3 + vaesenc %zmm31,%zmm4,%zmm4 + vaesenc %zmm31,%zmm5,%zmm5 + vaesenclast %zmm30,%zmm0,%zmm0 + vaesenclast %zmm30,%zmm3,%zmm3 + vaesenclast %zmm30,%zmm4,%zmm4 + vaesenclast %zmm30,%zmm5,%zmm5 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vpxorq %zmm20,%zmm4,%zmm4 + vpxorq %zmm21,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm11 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm21,%zmm21{%k1}{z} + vpshufb %zmm29,%zmm17,%zmm17 + vpshufb %zmm29,%zmm19,%zmm19 + vpshufb %zmm29,%zmm20,%zmm20 + vpshufb %zmm29,%zmm21,%zmm21 + vextracti32x4 $3,%zmm21,%xmm7 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_965: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm11,16(%rsi) + vmovdqu64 112(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm17,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm17,%zmm3 + vpclmulqdq $0x01,%zmm1,%zmm17,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm17,%zmm5 + vmovdqu64 176(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm19,%zmm8 + vpclmulqdq $0x00,%zmm1,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm19,%zmm30 + vpclmulqdq $0x10,%zmm1,%zmm19,%zmm31 + vmovdqu64 240(%rsi),%zmm1 + vpclmulqdq $0x11,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x00,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm0,%zmm17,%zmm8 + vpternlogq $0x96,%zmm3,%zmm19,%zmm22 + vpclmulqdq $0x01,%zmm1,%zmm20,%zmm17 + vpclmulqdq $0x10,%zmm1,%zmm20,%zmm19 + vpternlogq $0x96,%zmm4,%zmm17,%zmm30 + vpternlogq $0x96,%zmm5,%zmm19,%zmm31 + vmovdqu64 304(%rsi),%ymm1 + vinserti64x2 $2,336(%rsi),%zmm1,%zmm1 + vpclmulqdq $0x01,%zmm1,%zmm21,%zmm4 + vpclmulqdq $0x10,%zmm1,%zmm21,%zmm5 + vpclmulqdq $0x11,%zmm1,%zmm21,%zmm0 + vpclmulqdq $0x00,%zmm1,%zmm21,%zmm3 + + vpxorq %zmm30,%zmm4,%zmm4 + vpternlogq $0x96,%zmm31,%zmm26,%zmm5 + vpternlogq $0x96,%zmm8,%zmm24,%zmm0 + vpternlogq $0x96,%zmm22,%zmm25,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm30 + vpslldq $8,%zmm4,%zmm31 + vpxorq %zmm30,%zmm0,%zmm0 + vpxorq %zmm31,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm30 + vpxorq %ymm30,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm30 + vpxorq %xmm30,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm31 + vpxorq %ymm31,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm31 + vpxorq %xmm31,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm1 + + + vpclmulqdq $0x01,%xmm3,%xmm1,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm1,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm1,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_965: + vpxorq %xmm7,%xmm14,%xmm14 +.L_after_reduction_965: + jmp .L_last_blocks_done_933 +.L_last_num_blocks_is_0_933: + vmovdqa64 768(%rsp),%zmm13 + vpxorq %zmm14,%zmm13,%zmm13 + vmovdqu64 0(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 832(%rsp),%zmm13 + vmovdqu64 64(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + vpxorq %zmm10,%zmm4,%zmm26 + vpxorq %zmm6,%zmm0,%zmm24 + vpxorq %zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + vmovdqa64 896(%rsp),%zmm13 + vmovdqu64 128(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm0 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm3 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm4 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm5 + vmovdqa64 960(%rsp),%zmm13 + vmovdqu64 192(%rsp,%rbx,1),%zmm12 + vpclmulqdq $0x11,%zmm12,%zmm13,%zmm6 + vpclmulqdq $0x00,%zmm12,%zmm13,%zmm7 + vpclmulqdq $0x01,%zmm12,%zmm13,%zmm10 + vpclmulqdq $0x10,%zmm12,%zmm13,%zmm11 + + vpternlogq $0x96,%zmm10,%zmm4,%zmm26 + vpternlogq $0x96,%zmm6,%zmm0,%zmm24 + vpternlogq $0x96,%zmm7,%zmm3,%zmm25 + vpternlogq $0x96,%zmm11,%zmm5,%zmm26 + + vpsrldq $8,%zmm26,%zmm0 + vpslldq $8,%zmm26,%zmm3 + vpxorq %zmm0,%zmm24,%zmm24 + vpxorq %zmm3,%zmm25,%zmm25 + vextracti64x4 $1,%zmm24,%ymm0 + vpxorq %ymm0,%ymm24,%ymm24 + vextracti32x4 $1,%ymm24,%xmm0 + vpxorq %xmm0,%xmm24,%xmm24 + vextracti64x4 $1,%zmm25,%ymm3 + vpxorq %ymm3,%ymm25,%ymm25 + vextracti32x4 $1,%ymm25,%xmm3 + vpxorq %xmm3,%xmm25,%xmm25 + vmovdqa64 POLY2(%rip),%xmm4 + + + vpclmulqdq $0x01,%xmm25,%xmm4,%xmm0 + vpslldq $8,%xmm0,%xmm0 + vpxorq %xmm0,%xmm25,%xmm0 + + + vpclmulqdq $0x00,%xmm0,%xmm4,%xmm3 + vpsrldq $4,%xmm3,%xmm3 + vpclmulqdq $0x10,%xmm0,%xmm4,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm24,%xmm3,%xmm14 + +.L_last_blocks_done_933: + vpshufb %xmm29,%xmm2,%xmm2 + jmp .L_ghash_done_821 + +.L_message_below_equal_16_blocks_821: + + + movl %r8d,%r12d + addl $15,%r12d + shrl $4,%r12d + cmpq $8,%r12 + je .L_small_initial_num_blocks_is_8_966 + jl .L_small_initial_num_blocks_is_7_1_966 + + + cmpq $12,%r12 + je .L_small_initial_num_blocks_is_12_966 + jl .L_small_initial_num_blocks_is_11_9_966 + + + cmpq $16,%r12 + je .L_small_initial_num_blocks_is_16_966 + cmpq $15,%r12 + je .L_small_initial_num_blocks_is_15_966 + cmpq $14,%r12 + je .L_small_initial_num_blocks_is_14_966 + jmp .L_small_initial_num_blocks_is_13_966 + +.L_small_initial_num_blocks_is_11_9_966: + + cmpq $11,%r12 + je .L_small_initial_num_blocks_is_11_966 + cmpq $10,%r12 + je .L_small_initial_num_blocks_is_10_966 + jmp .L_small_initial_num_blocks_is_9_966 + +.L_small_initial_num_blocks_is_7_1_966: + cmpq $4,%r12 + je .L_small_initial_num_blocks_is_4_966 + jl .L_small_initial_num_blocks_is_3_1_966 + + cmpq $7,%r12 + je .L_small_initial_num_blocks_is_7_966 + cmpq $6,%r12 + je .L_small_initial_num_blocks_is_6_966 + jmp .L_small_initial_num_blocks_is_5_966 + +.L_small_initial_num_blocks_is_3_1_966: + + cmpq $3,%r12 + je .L_small_initial_num_blocks_is_3_966 + cmpq $2,%r12 + je .L_small_initial_num_blocks_is_2_966 + + + + + +.L_small_initial_num_blocks_is_1_966: + vmovdqa64 SHUF_MASK(%rip),%xmm29 + vpaddd ONE(%rip),%xmm2,%xmm0 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $0,%zmm0,%xmm2 + vpshufb %xmm29,%xmm0,%xmm0 + vmovdqu8 0(%rcx,%r11,1),%xmm6{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %xmm15,%xmm0,%xmm0 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %xmm15,%xmm0,%xmm0 + vpxorq %xmm6,%xmm0,%xmm0 + vextracti32x4 $0,%zmm0,%xmm12 + movq %r9,%r10 + vmovdqu8 %xmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %xmm29,%xmm6,%xmm6 + vextracti32x4 $0,%zmm6,%xmm13 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_967 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm6,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm6,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm6,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm6,%xmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_967 +.L_small_initial_partial_block_967: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + + + + + + + + + + + + vpxorq %xmm13,%xmm14,%xmm14 + + jmp .L_after_reduction_967 +.L_small_initial_compute_done_967: +.L_after_reduction_967: + jmp .L_small_initial_blocks_encrypted_966 +.L_small_initial_num_blocks_is_2_966: + vmovdqa64 SHUF_MASK(%rip),%ymm29 + vshufi64x2 $0,%ymm2,%ymm2,%ymm0 + vpaddd ddq_add_1234(%rip),%ymm0,%ymm0 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $1,%zmm0,%xmm2 + vpshufb %ymm29,%ymm0,%ymm0 + vmovdqu8 0(%rcx,%r11,1),%ymm6{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %ymm15,%ymm0,%ymm0 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %ymm15,%ymm0,%ymm0 + vpxorq %ymm6,%ymm0,%ymm0 + vextracti32x4 $1,%zmm0,%xmm12 + movq %r9,%r10 + vmovdqu8 %ymm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %ymm29,%ymm6,%ymm6 + vextracti32x4 $1,%zmm6,%xmm13 + subq $16 * (2 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_968 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm6,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm6,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm6,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm6,%ymm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_968 +.L_small_initial_partial_block_968: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm6,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm6,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm6,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm6,%xmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_968: + + orq %r8,%r8 + je .L_after_reduction_968 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_968: + jmp .L_small_initial_blocks_encrypted_966 +.L_small_initial_num_blocks_is_3_966: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $2,%zmm0,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vmovdqu8 0(%rcx,%r11,1),%zmm6{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vpxorq %zmm6,%zmm0,%zmm0 + vextracti32x4 $2,%zmm0,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vextracti32x4 $2,%zmm6,%xmm13 + subq $16 * (3 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_969 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_969 +.L_small_initial_partial_block_969: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm6,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm6,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm6,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm6,%ymm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_969: + + orq %r8,%r8 + je .L_after_reduction_969 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_969: + jmp .L_small_initial_blocks_encrypted_966 +.L_small_initial_num_blocks_is_4_966: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $3,%zmm0,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vmovdqu8 0(%rcx,%r11,1),%zmm6{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vpxorq %zmm6,%zmm0,%zmm0 + vextracti32x4 $3,%zmm0,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1){%k1} + vmovdqu8 %zmm0,%zmm0{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vextracti32x4 $3,%zmm6,%xmm13 + subq $16 * (4 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_970 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_970 +.L_small_initial_partial_block_970: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_970: + + orq %r8,%r8 + je .L_after_reduction_970 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_970: + jmp .L_small_initial_blocks_encrypted_966 +.L_small_initial_num_blocks_is_5_966: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $64,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $0,%zmm3,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %xmm29,%xmm3,%xmm3 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%xmm7{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %xmm15,%xmm3,%xmm3 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %xmm15,%xmm3,%xmm3 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %xmm7,%xmm3,%xmm3 + vextracti32x4 $0,%zmm3,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %xmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %xmm29,%xmm7,%xmm7 + vextracti32x4 $0,%zmm7,%xmm13 + subq $16 * (5 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_971 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm7,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm7,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm7,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm7,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_971 +.L_small_initial_partial_block_971: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_971: + + orq %r8,%r8 + je .L_after_reduction_971 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_971: + jmp .L_small_initial_blocks_encrypted_966 +.L_small_initial_num_blocks_is_6_966: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $64,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $1,%zmm3,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %ymm29,%ymm3,%ymm3 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%ymm7{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %ymm15,%ymm3,%ymm3 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %ymm15,%ymm3,%ymm3 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %ymm7,%ymm3,%ymm3 + vextracti32x4 $1,%zmm3,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %ymm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %ymm29,%ymm7,%ymm7 + vextracti32x4 $1,%zmm7,%xmm13 + subq $16 * (6 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_972 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm7,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm7,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm7,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm7,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_972 +.L_small_initial_partial_block_972: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm7,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm7,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm7,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm7,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_972: + + orq %r8,%r8 + je .L_after_reduction_972 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_972: + jmp .L_small_initial_blocks_encrypted_966 +.L_small_initial_num_blocks_is_7_966: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $64,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $2,%zmm3,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vextracti32x4 $2,%zmm3,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vextracti32x4 $2,%zmm7,%xmm13 + subq $16 * (7 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_973 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_973 +.L_small_initial_partial_block_973: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm7,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm7,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm7,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm7,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_973: + + orq %r8,%r8 + je .L_after_reduction_973 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_973: + jmp .L_small_initial_blocks_encrypted_966 +.L_small_initial_num_blocks_is_8_966: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $64,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $3,%zmm3,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vextracti32x4 $3,%zmm3,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1){%k1} + vmovdqu8 %zmm3,%zmm3{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vextracti32x4 $3,%zmm7,%xmm13 + subq $16 * (8 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_974 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 224(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_974 +.L_small_initial_partial_block_974: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_974: + + orq %r8,%r8 + je .L_after_reduction_974 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_974: + jmp .L_small_initial_blocks_encrypted_966 +.L_small_initial_num_blocks_is_9_966: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $128,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $0,%zmm4,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %xmm29,%xmm4,%xmm4 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%xmm10{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %xmm15,%xmm4,%xmm4 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %xmm15,%xmm4,%xmm4 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %xmm10,%xmm4,%xmm4 + vextracti32x4 $0,%zmm4,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %xmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %xmm29,%xmm10,%xmm10 + vextracti32x4 $0,%zmm10,%xmm13 + subq $16 * (9 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_975 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 208(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm10,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm10,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm10,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm10,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_975 +.L_small_initial_partial_block_975: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 224(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_975: + + orq %r8,%r8 + je .L_after_reduction_975 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_975: + jmp .L_small_initial_blocks_encrypted_966 +.L_small_initial_num_blocks_is_10_966: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $128,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $1,%zmm4,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %ymm29,%ymm4,%ymm4 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%ymm10{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %ymm15,%ymm4,%ymm4 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %ymm15,%ymm4,%ymm4 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %ymm10,%ymm4,%ymm4 + vextracti32x4 $1,%zmm4,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %ymm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %ymm29,%ymm10,%ymm10 + vextracti32x4 $1,%zmm10,%xmm13 + subq $16 * (10 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_976 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 192(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm10,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm10,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm10,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm10,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_976 +.L_small_initial_partial_block_976: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 208(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm10,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm10,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm10,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm10,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_976: + + orq %r8,%r8 + je .L_after_reduction_976 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_976: + jmp .L_small_initial_blocks_encrypted_966 +.L_small_initial_num_blocks_is_11_966: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $128,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $2,%zmm4,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vextracti32x4 $2,%zmm4,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vextracti32x4 $2,%zmm10,%xmm13 + subq $16 * (11 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_977 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 176(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_977 +.L_small_initial_partial_block_977: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 192(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm10,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm10,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm10,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm10,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_977: + + orq %r8,%r8 + je .L_after_reduction_977 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_977: + jmp .L_small_initial_blocks_encrypted_966 +.L_small_initial_num_blocks_is_12_966: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $128,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $3,%zmm4,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vextracti32x4 $3,%zmm4,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1){%k1} + vmovdqu8 %zmm4,%zmm4{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vextracti32x4 $3,%zmm10,%xmm13 + subq $16 * (12 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_978 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 160(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 224(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_978 +.L_small_initial_partial_block_978: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 176(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vpxorq %zmm15,%zmm0,%zmm15 + vpxorq %zmm16,%zmm3,%zmm16 + vpxorq %zmm17,%zmm4,%zmm17 + vpxorq %zmm19,%zmm5,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_978: + + orq %r8,%r8 + je .L_after_reduction_978 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_978: + jmp .L_small_initial_blocks_encrypted_966 +.L_small_initial_num_blocks_is_13_966: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + vpaddd ddq_add_8888(%rip),%zmm3,%zmm5 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $192,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $0,%zmm5,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %xmm29,%xmm5,%xmm5 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10 + vmovdqu8 192(%rcx,%r11,1),%xmm11{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vpxorq %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %xmm15,%xmm5,%xmm5 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vaesenclast %xmm15,%xmm5,%xmm5 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vpxorq %xmm11,%xmm5,%xmm5 + vextracti32x4 $0,%zmm5,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %xmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %xmm29,%xmm11,%xmm11 + vextracti32x4 $0,%zmm11,%xmm13 + subq $16 * (13 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_979 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 144(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 208(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm11,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm11,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm11,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm11,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_979 +.L_small_initial_partial_block_979: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 160(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 224(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 288(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + + vpxorq %zmm19,%zmm17,%zmm17 + vpsrldq $8,%zmm17,%zmm4 + vpslldq $8,%zmm17,%zmm5 + vpxorq %zmm4,%zmm15,%zmm0 + vpxorq %zmm5,%zmm16,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_979: + + orq %r8,%r8 + je .L_after_reduction_979 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_979: + jmp .L_small_initial_blocks_encrypted_966 +.L_small_initial_num_blocks_is_14_966: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + vpaddd ddq_add_8888(%rip),%zmm3,%zmm5 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $192,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $1,%zmm5,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %ymm29,%ymm5,%ymm5 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10 + vmovdqu8 192(%rcx,%r11,1),%ymm11{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vpxorq %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %ymm15,%ymm5,%ymm5 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vaesenclast %ymm15,%ymm5,%ymm5 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vpxorq %ymm11,%ymm5,%ymm5 + vextracti32x4 $1,%zmm5,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %ymm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %ymm29,%ymm11,%ymm11 + vextracti32x4 $1,%zmm11,%xmm13 + subq $16 * (14 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_980 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 128(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 192(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm11,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm11,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm11,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm11,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_980 +.L_small_initial_partial_block_980: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 144(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 208(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 272(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 336(%rsi),%xmm20 + vpclmulqdq $0x01,%xmm20,%xmm11,%xmm4 + vpclmulqdq $0x10,%xmm20,%xmm11,%xmm5 + vpclmulqdq $0x11,%xmm20,%xmm11,%xmm0 + vpclmulqdq $0x00,%xmm20,%xmm11,%xmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_980: + + orq %r8,%r8 + je .L_after_reduction_980 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_980: + jmp .L_small_initial_blocks_encrypted_966 +.L_small_initial_num_blocks_is_15_966: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + vpaddd ddq_add_8888(%rip),%zmm3,%zmm5 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $192,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $2,%zmm5,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10 + vmovdqu8 192(%rcx,%r11,1),%zmm11{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vpxorq %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vaesenclast %zmm15,%zmm5,%zmm5 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vpxorq %zmm11,%zmm5,%zmm5 + vextracti32x4 $2,%zmm5,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %zmm29,%zmm11,%zmm11 + vextracti32x4 $2,%zmm11,%xmm13 + subq $16 * (15 - 1),%r8 + + + cmpq $16,%r8 + jl .L_small_initial_partial_block_981 + + + + + + subq $16,%r8 + movq $0,(%rdx) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 112(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 176(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm11,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm11,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm11,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm11,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + + jmp .L_small_initial_compute_done_981 +.L_small_initial_partial_block_981: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 128(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 192(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 256(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 320(%rsi),%ymm20 + vpclmulqdq $0x01,%ymm20,%ymm11,%ymm4 + vpclmulqdq $0x10,%ymm20,%ymm11,%ymm5 + vpclmulqdq $0x11,%ymm20,%ymm11,%ymm0 + vpclmulqdq $0x00,%ymm20,%ymm11,%ymm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_981: + + orq %r8,%r8 + je .L_after_reduction_981 + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_981: + jmp .L_small_initial_blocks_encrypted_966 +.L_small_initial_num_blocks_is_16_966: + vmovdqa64 SHUF_MASK(%rip),%zmm29 + vshufi64x2 $0,%zmm2,%zmm2,%zmm2 + vpaddd ddq_add_1234(%rip),%zmm2,%zmm0 + vpaddd ddq_add_5678(%rip),%zmm2,%zmm3 + vpaddd ddq_add_8888(%rip),%zmm0,%zmm4 + vpaddd ddq_add_8888(%rip),%zmm3,%zmm5 + leaq byte64_len_to_mask_table(%rip),%r10 + movq %r8,%r15 + subq $192,%r15 + kmovq (%r10,%r15,8),%k1 + vextracti32x4 $3,%zmm5,%xmm2 + vpshufb %zmm29,%zmm0,%zmm0 + vpshufb %zmm29,%zmm3,%zmm3 + vpshufb %zmm29,%zmm4,%zmm4 + vpshufb %zmm29,%zmm5,%zmm5 + vmovdqu8 0(%rcx,%r11,1),%zmm6 + vmovdqu8 64(%rcx,%r11,1),%zmm7 + vmovdqu8 128(%rcx,%r11,1),%zmm10 + vmovdqu8 192(%rcx,%r11,1),%zmm11{%k1}{z} + vbroadcastf64x2 0(%rdi),%zmm15 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm15,%zmm3,%zmm3 + vpxorq %zmm15,%zmm4,%zmm4 + vpxorq %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 16(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 32(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 48(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 64(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 80(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 96(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 112(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 128(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 144(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 160(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 176(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 192(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 208(%rdi),%zmm15 + vaesenc %zmm15,%zmm0,%zmm0 + vaesenc %zmm15,%zmm3,%zmm3 + vaesenc %zmm15,%zmm4,%zmm4 + vaesenc %zmm15,%zmm5,%zmm5 + vbroadcastf64x2 224(%rdi),%zmm15 + vaesenclast %zmm15,%zmm0,%zmm0 + vaesenclast %zmm15,%zmm3,%zmm3 + vaesenclast %zmm15,%zmm4,%zmm4 + vaesenclast %zmm15,%zmm5,%zmm5 + vpxorq %zmm6,%zmm0,%zmm0 + vpxorq %zmm7,%zmm3,%zmm3 + vpxorq %zmm10,%zmm4,%zmm4 + vpxorq %zmm11,%zmm5,%zmm5 + vextracti32x4 $3,%zmm5,%xmm12 + movq %r9,%r10 + vmovdqu8 %zmm0,0(%r10,%r11,1) + vmovdqu8 %zmm3,64(%r10,%r11,1) + vmovdqu8 %zmm4,128(%r10,%r11,1) + vmovdqu8 %zmm5,192(%r10,%r11,1){%k1} + vmovdqu8 %zmm5,%zmm5{%k1}{z} + vpshufb %zmm29,%zmm6,%zmm6 + vpshufb %zmm29,%zmm7,%zmm7 + vpshufb %zmm29,%zmm10,%zmm10 + vpshufb %zmm29,%zmm11,%zmm11 + vextracti32x4 $3,%zmm11,%xmm13 + subq $16 * (16 - 1),%r8 +.L_small_initial_partial_block_982: + + + + + + + + + movq %r8,(%rdx) + vmovdqu64 %xmm12,16(%rsi) + vpxorq %zmm14,%zmm6,%zmm6 + vmovdqu64 112(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm6,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm6,%zmm3 + vpclmulqdq $0x01,%zmm20,%zmm6,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm6,%zmm5 + vmovdqu64 176(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm7,%zmm15 + vpclmulqdq $0x00,%zmm20,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm7,%zmm17 + vpclmulqdq $0x10,%zmm20,%zmm7,%zmm19 + vmovdqu64 240(%rsi),%zmm20 + vpclmulqdq $0x11,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x00,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm0,%zmm6,%zmm15 + vpternlogq $0x96,%zmm3,%zmm7,%zmm16 + vpclmulqdq $0x01,%zmm20,%zmm10,%zmm6 + vpclmulqdq $0x10,%zmm20,%zmm10,%zmm7 + vpternlogq $0x96,%zmm4,%zmm6,%zmm17 + vpternlogq $0x96,%zmm5,%zmm7,%zmm19 + vmovdqu64 304(%rsi),%ymm20 + vinserti64x2 $2,336(%rsi),%zmm20,%zmm20 + vpclmulqdq $0x01,%zmm20,%zmm11,%zmm4 + vpclmulqdq $0x10,%zmm20,%zmm11,%zmm5 + vpclmulqdq $0x11,%zmm20,%zmm11,%zmm0 + vpclmulqdq $0x00,%zmm20,%zmm11,%zmm3 + + vpxorq %zmm17,%zmm4,%zmm4 + vpxorq %zmm19,%zmm5,%zmm5 + vpxorq %zmm15,%zmm0,%zmm0 + vpxorq %zmm16,%zmm3,%zmm3 + + vpxorq %zmm5,%zmm4,%zmm4 + vpsrldq $8,%zmm4,%zmm17 + vpslldq $8,%zmm4,%zmm19 + vpxorq %zmm17,%zmm0,%zmm0 + vpxorq %zmm19,%zmm3,%zmm3 + vextracti64x4 $1,%zmm0,%ymm17 + vpxorq %ymm17,%ymm0,%ymm0 + vextracti32x4 $1,%ymm0,%xmm17 + vpxorq %xmm17,%xmm0,%xmm0 + vextracti64x4 $1,%zmm3,%ymm19 + vpxorq %ymm19,%ymm3,%ymm3 + vextracti32x4 $1,%ymm3,%xmm19 + vpxorq %xmm19,%xmm3,%xmm3 + vmovdqa64 POLY2(%rip),%xmm20 + + + vpclmulqdq $0x01,%xmm3,%xmm20,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm3,%xmm4 + + + vpclmulqdq $0x00,%xmm4,%xmm20,%xmm5 + vpsrldq $4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm4,%xmm20,%xmm14 + vpslldq $4,%xmm14,%xmm14 + vpternlogq $0x96,%xmm0,%xmm5,%xmm14 + +.L_small_initial_compute_done_982: + vpxorq %xmm13,%xmm14,%xmm14 +.L_after_reduction_982: +.L_small_initial_blocks_encrypted_966: +.L_ghash_done_821: + vmovdqu64 %xmm2,0(%rsi) + vmovdqu64 %xmm14,64(%rsi) +.L_enc_dec_done_821: + jmp .Lexit_gcm_decrypt +.Lexit_gcm_decrypt: + cmpq $256,%r8 + jbe .Lskip_hkeys_cleanup_983 + vpxor %xmm0,%xmm0,%xmm0 + vmovdqa64 %zmm0,0(%rsp) + vmovdqa64 %zmm0,64(%rsp) + vmovdqa64 %zmm0,128(%rsp) + vmovdqa64 %zmm0,192(%rsp) + vmovdqa64 %zmm0,256(%rsp) + vmovdqa64 %zmm0,320(%rsp) + vmovdqa64 %zmm0,384(%rsp) + vmovdqa64 %zmm0,448(%rsp) + vmovdqa64 %zmm0,512(%rsp) + vmovdqa64 %zmm0,576(%rsp) + vmovdqa64 %zmm0,640(%rsp) + vmovdqa64 %zmm0,704(%rsp) +.Lskip_hkeys_cleanup_983: + vzeroupper + leaq (%rbp),%rsp +.cfi_def_cfa_register %rsp + popq %r15 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r15 + popq %r14 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r14 + popq %r13 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r13 + popq %r12 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r12 + popq %rbp +.cfi_adjust_cfa_offset -8 +.cfi_restore %rbp + popq %rbx +.cfi_adjust_cfa_offset -8 +.cfi_restore %rbx + .byte 0xf3,0xc3 +.Ldecrypt_seh_end: +.cfi_endproc +.size ossl_aes_gcm_decrypt_avx512, .-ossl_aes_gcm_decrypt_avx512 +.globl ossl_aes_gcm_finalize_avx512 +.type ossl_aes_gcm_finalize_avx512,@function +.align 32 +ossl_aes_gcm_finalize_avx512: +.cfi_startproc +.byte 243,15,30,250 + vmovdqu 336(%rdi),%xmm2 + vmovdqu 32(%rdi),%xmm3 + vmovdqu 64(%rdi),%xmm4 + + + cmpq $0,%rsi + je .L_partial_done_984 + + vpclmulqdq $0x11,%xmm2,%xmm4,%xmm0 + vpclmulqdq $0x00,%xmm2,%xmm4,%xmm16 + vpclmulqdq $0x01,%xmm2,%xmm4,%xmm17 + vpclmulqdq $0x10,%xmm2,%xmm4,%xmm4 + vpxorq %xmm17,%xmm4,%xmm4 + + vpsrldq $8,%xmm4,%xmm17 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm17,%xmm0,%xmm0 + vpxorq %xmm16,%xmm4,%xmm4 + + + + vmovdqu64 POLY2(%rip),%xmm17 + + vpclmulqdq $0x01,%xmm4,%xmm17,%xmm16 + vpslldq $8,%xmm16,%xmm16 + vpxorq %xmm16,%xmm4,%xmm4 + + + + vpclmulqdq $0x00,%xmm4,%xmm17,%xmm16 + vpsrldq $4,%xmm16,%xmm16 + vpclmulqdq $0x10,%xmm4,%xmm17,%xmm4 + vpslldq $4,%xmm4,%xmm4 + + vpternlogq $0x96,%xmm16,%xmm0,%xmm4 + +.L_partial_done_984: + vmovq 56(%rdi),%xmm5 + vpinsrq $1,48(%rdi),%xmm5,%xmm5 + vpsllq $3,%xmm5,%xmm5 + + vpxor %xmm5,%xmm4,%xmm4 + + vpclmulqdq $0x11,%xmm2,%xmm4,%xmm0 + vpclmulqdq $0x00,%xmm2,%xmm4,%xmm16 + vpclmulqdq $0x01,%xmm2,%xmm4,%xmm17 + vpclmulqdq $0x10,%xmm2,%xmm4,%xmm4 + vpxorq %xmm17,%xmm4,%xmm4 + + vpsrldq $8,%xmm4,%xmm17 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm17,%xmm0,%xmm0 + vpxorq %xmm16,%xmm4,%xmm4 + + + + vmovdqu64 POLY2(%rip),%xmm17 + + vpclmulqdq $0x01,%xmm4,%xmm17,%xmm16 + vpslldq $8,%xmm16,%xmm16 + vpxorq %xmm16,%xmm4,%xmm4 + + + + vpclmulqdq $0x00,%xmm4,%xmm17,%xmm16 + vpsrldq $4,%xmm16,%xmm16 + vpclmulqdq $0x10,%xmm4,%xmm17,%xmm4 + vpslldq $4,%xmm4,%xmm4 + + vpternlogq $0x96,%xmm16,%xmm0,%xmm4 + + vpshufb SHUF_MASK(%rip),%xmm4,%xmm4 + vpxor %xmm4,%xmm3,%xmm3 + +.L_return_T_984: + vmovdqu %xmm3,64(%rdi) +.Labort_finalize: + .byte 0xf3,0xc3 +.cfi_endproc +.size ossl_aes_gcm_finalize_avx512, .-ossl_aes_gcm_finalize_avx512 +.globl ossl_gcm_gmult_avx512 +.hidden ossl_gcm_gmult_avx512 +.type ossl_gcm_gmult_avx512,@function +.align 32 +ossl_gcm_gmult_avx512: +.cfi_startproc +.byte 243,15,30,250 + vmovdqu64 (%rdi),%xmm1 + vmovdqu64 336(%rsi),%xmm2 + + vpclmulqdq $0x11,%xmm2,%xmm1,%xmm3 + vpclmulqdq $0x00,%xmm2,%xmm1,%xmm4 + vpclmulqdq $0x01,%xmm2,%xmm1,%xmm5 + vpclmulqdq $0x10,%xmm2,%xmm1,%xmm1 + vpxorq %xmm5,%xmm1,%xmm1 + + vpsrldq $8,%xmm1,%xmm5 + vpslldq $8,%xmm1,%xmm1 + vpxorq %xmm5,%xmm3,%xmm3 + vpxorq %xmm4,%xmm1,%xmm1 + + + + vmovdqu64 POLY2(%rip),%xmm5 + + vpclmulqdq $0x01,%xmm1,%xmm5,%xmm4 + vpslldq $8,%xmm4,%xmm4 + vpxorq %xmm4,%xmm1,%xmm1 + + + + vpclmulqdq $0x00,%xmm1,%xmm5,%xmm4 + vpsrldq $4,%xmm4,%xmm4 + vpclmulqdq $0x10,%xmm1,%xmm5,%xmm1 + vpslldq $4,%xmm1,%xmm1 + + vpternlogq $0x96,%xmm4,%xmm3,%xmm1 + + vmovdqu64 %xmm1,(%rdi) + vzeroupper +.Labort_gmult: + .byte 0xf3,0xc3 +.cfi_endproc +.size ossl_gcm_gmult_avx512, .-ossl_gcm_gmult_avx512 +.section .rodata +.align 16 +POLY:.quad 0x0000000000000001, 0xC200000000000000 + +.align 64 +POLY2: +.quad 0x00000001C2000000, 0xC200000000000000 +.quad 0x00000001C2000000, 0xC200000000000000 +.quad 0x00000001C2000000, 0xC200000000000000 +.quad 0x00000001C2000000, 0xC200000000000000 + +.align 16 +TWOONE:.quad 0x0000000000000001, 0x0000000100000000 + + + +.align 64 +SHUF_MASK: +.quad 0x08090A0B0C0D0E0F, 0x0001020304050607 +.quad 0x08090A0B0C0D0E0F, 0x0001020304050607 +.quad 0x08090A0B0C0D0E0F, 0x0001020304050607 +.quad 0x08090A0B0C0D0E0F, 0x0001020304050607 + +.align 16 +SHIFT_MASK: +.quad 0x0706050403020100, 0x0f0e0d0c0b0a0908 + +ALL_F: +.quad 0xffffffffffffffff, 0xffffffffffffffff + +ZERO: +.quad 0x0000000000000000, 0x0000000000000000 + +.align 16 +ONE: +.quad 0x0000000000000001, 0x0000000000000000 + +.align 16 +ONEf: +.quad 0x0000000000000000, 0x0100000000000000 + +.align 64 +ddq_add_1234: +.quad 0x0000000000000001, 0x0000000000000000 +.quad 0x0000000000000002, 0x0000000000000000 +.quad 0x0000000000000003, 0x0000000000000000 +.quad 0x0000000000000004, 0x0000000000000000 + +.align 64 +ddq_add_5678: +.quad 0x0000000000000005, 0x0000000000000000 +.quad 0x0000000000000006, 0x0000000000000000 +.quad 0x0000000000000007, 0x0000000000000000 +.quad 0x0000000000000008, 0x0000000000000000 + +.align 64 +ddq_add_4444: +.quad 0x0000000000000004, 0x0000000000000000 +.quad 0x0000000000000004, 0x0000000000000000 +.quad 0x0000000000000004, 0x0000000000000000 +.quad 0x0000000000000004, 0x0000000000000000 + +.align 64 +ddq_add_8888: +.quad 0x0000000000000008, 0x0000000000000000 +.quad 0x0000000000000008, 0x0000000000000000 +.quad 0x0000000000000008, 0x0000000000000000 +.quad 0x0000000000000008, 0x0000000000000000 + +.align 64 +ddq_addbe_1234: +.quad 0x0000000000000000, 0x0100000000000000 +.quad 0x0000000000000000, 0x0200000000000000 +.quad 0x0000000000000000, 0x0300000000000000 +.quad 0x0000000000000000, 0x0400000000000000 + +.align 64 +ddq_addbe_4444: +.quad 0x0000000000000000, 0x0400000000000000 +.quad 0x0000000000000000, 0x0400000000000000 +.quad 0x0000000000000000, 0x0400000000000000 +.quad 0x0000000000000000, 0x0400000000000000 + +.align 64 +byte_len_to_mask_table: +.value 0x0000, 0x0001, 0x0003, 0x0007 +.value 0x000f, 0x001f, 0x003f, 0x007f +.value 0x00ff, 0x01ff, 0x03ff, 0x07ff +.value 0x0fff, 0x1fff, 0x3fff, 0x7fff +.value 0xffff + +.align 64 +byte64_len_to_mask_table: +.quad 0x0000000000000000, 0x0000000000000001 +.quad 0x0000000000000003, 0x0000000000000007 +.quad 0x000000000000000f, 0x000000000000001f +.quad 0x000000000000003f, 0x000000000000007f +.quad 0x00000000000000ff, 0x00000000000001ff +.quad 0x00000000000003ff, 0x00000000000007ff +.quad 0x0000000000000fff, 0x0000000000001fff +.quad 0x0000000000003fff, 0x0000000000007fff +.quad 0x000000000000ffff, 0x000000000001ffff +.quad 0x000000000003ffff, 0x000000000007ffff +.quad 0x00000000000fffff, 0x00000000001fffff +.quad 0x00000000003fffff, 0x00000000007fffff +.quad 0x0000000000ffffff, 0x0000000001ffffff +.quad 0x0000000003ffffff, 0x0000000007ffffff +.quad 0x000000000fffffff, 0x000000001fffffff +.quad 0x000000003fffffff, 0x000000007fffffff +.quad 0x00000000ffffffff, 0x00000001ffffffff +.quad 0x00000003ffffffff, 0x00000007ffffffff +.quad 0x0000000fffffffff, 0x0000001fffffffff +.quad 0x0000003fffffffff, 0x0000007fffffffff +.quad 0x000000ffffffffff, 0x000001ffffffffff +.quad 0x000003ffffffffff, 0x000007ffffffffff +.quad 0x00000fffffffffff, 0x00001fffffffffff +.quad 0x00003fffffffffff, 0x00007fffffffffff +.quad 0x0000ffffffffffff, 0x0001ffffffffffff +.quad 0x0003ffffffffffff, 0x0007ffffffffffff +.quad 0x000fffffffffffff, 0x001fffffffffffff +.quad 0x003fffffffffffff, 0x007fffffffffffff +.quad 0x00ffffffffffffff, 0x01ffffffffffffff +.quad 0x03ffffffffffffff, 0x07ffffffffffffff +.quad 0x0fffffffffffffff, 0x1fffffffffffffff +.quad 0x3fffffffffffffff, 0x7fffffffffffffff +.quad 0xffffffffffffffff + .section ".note.gnu.property", "a" + .p2align 3 + .long 1f - 0f + .long 4f - 1f + .long 5 +0: + # "GNU" encoded with .byte, since .asciz isn't supported + # on Solaris. + .byte 0x47 + .byte 0x4e + .byte 0x55 + .byte 0 +1: + .p2align 3 + .long 0xc0000002 + .long 3f - 2f +2: + .long 3 +3: + .p2align 3 +4: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/modes/aesni-gcm-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/modes/aesni-gcm-x86_64.s index e3813bf7cea0eb..4a7eca0125f321 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/modes/aesni-gcm-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/modes/aesni-gcm-x86_64.s @@ -774,6 +774,7 @@ aesni_gcm_encrypt: .byte 0xf3,0xc3 .cfi_endproc .size aesni_gcm_encrypt,.-aesni_gcm_encrypt +.section .rodata .align 64 .Lbswap_mask: .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 @@ -786,6 +787,7 @@ aesni_gcm_encrypt: .Lone_lsb: .byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .byte 65,69,83,45,78,73,32,71,67,77,32,109,111,100,117,108,101,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.previous .align 64 .section ".note.gnu.property", "a" .p2align 3 diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/modes/ghash-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/modes/ghash-x86_64.s index 29dd9b13e956c6..894f152b263a52 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/modes/ghash-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/modes/ghash-x86_64.s @@ -708,6 +708,7 @@ gcm_ghash_4bit: .align 16 gcm_init_clmul: .cfi_startproc +.byte 243,15,30,250 .L_init_clmul: movdqu (%rsi),%xmm2 pshufd $78,%xmm2,%xmm2 @@ -1306,6 +1307,7 @@ gcm_ghash_clmul: .align 32 gcm_init_avx: .cfi_startproc +.byte 243,15,30,250 vzeroupper vmovdqu (%rsi),%xmm2 @@ -1798,6 +1800,7 @@ gcm_ghash_avx: .byte 0xf3,0xc3 .cfi_endproc .size gcm_ghash_avx,.-gcm_ghash_avx +.section .rodata .align 64 .Lbswap_mask: .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 @@ -1851,6 +1854,7 @@ gcm_ghash_avx: .byte 71,72,65,83,72,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 64 +.previous .section ".note.gnu.property", "a" .p2align 3 .long 1f - 0f diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/params_idx.c b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/params_idx.c new file mode 100644 index 00000000000000..9d76ffededc24c --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/params_idx.c @@ -0,0 +1,3366 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from crypto/params_idx.c.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#include "internal/e_os.h" +#include "internal/param_names.h" +#include + +/* Machine generated TRIE -- generated by util/perl/OpenSSL/paramnames.pm */ +int ossl_param_find_pidx(const char *s) +{ + switch(s[0]) { + default: + break; + case 'a': + switch(s[1]) { + default: + break; + case 'c': + if (strcmp("vp-info", s + 2) == 0) + return PIDX_KDF_PARAM_X942_ACVPINFO; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'd': + if (strcmp("itional-random", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_ADD_RANDOM; + break; + case '\0': + return PIDX_KDF_PARAM_ARGON2_AD; + } + break; + case 'e': + if (strcmp("ad", s + 2) == 0) + return PIDX_CIPHER_PARAM_AEAD; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("id_param", s + 4) == 0) + return PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD; + break; + case 'i': + if (strcmp("d-absent", s + 4) == 0) + return PIDX_DIGEST_PARAM_ALGID_ABSENT; + break; + case 'o': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'h': + switch(s[8]) { + default: + break; + case 'm': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '-': + if (strcmp("params", s + 13) == 0) + return PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS; + break; + case '\0': + return PIDX_ALG_PARAM_ALGORITHM_ID; + } + } + } + } + } + } + } + } + } + } + break; + case 'i': + if (strcmp("as", s + 3) == 0) + return PIDX_STORE_PARAM_ALIAS; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_A; + } + break; + case 'b': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("sis-type", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_CHAR2_TYPE; + break; + case 'i': + if (strcmp("ts", s + 2) == 0) + return PIDX_PKEY_PARAM_BITS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("size", s + 6) == 0) + return PIDX_MAC_PARAM_BLOCK_SIZE; + break; + case '_': + if (strcmp("padding", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING; + break; + case 's': + if (strcmp("ize", s + 6) == 0) + return PIDX_DIGEST_PARAM_BLOCK_SIZE; + } + } + } + } + break; + case 'u': + if (strcmp("ildinfo", s + 2) == 0) + return PIDX_PROV_PARAM_BUILDINFO; + break; + case '\0': + return PIDX_PKEY_PARAM_EC_B; + } + break; + case 'c': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_C_ROUNDS; + break; + case 'e': + if (strcmp("kalg", s + 2) == 0) + return PIDX_KDF_PARAM_CEK_ALG; + break; + case 'i': + if (strcmp("pher", s + 2) == 0) + return PIDX_ALG_PARAM_CIPHER; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("actor", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_COFACTOR; + break; + case 'n': + switch(s[3]) { + default: + break; + case 's': + if (strcmp("tant", s + 4) == 0) + return PIDX_KDF_PARAM_CONSTANT; + break; + case 't': + if (strcmp("ext-string", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_CONTEXT_STRING; + } + } + break; + case 't': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("mode", s + 4) == 0) + return PIDX_CIPHER_PARAM_CTS_MODE; + break; + case '\0': + return PIDX_CIPHER_PARAM_CTS; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '-': + if (strcmp("iv", s + 7) == 0) + return PIDX_CIPHER_PARAM_CUSTOM_IV; + break; + case '\0': + return PIDX_MAC_PARAM_CUSTOM; + } + } + } + } + } + } + break; + case 'd': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_D_ROUNDS; + break; + case 'a': + switch(s[2]) { + default: + break; + case 't': + switch(s[3]) { + default: + break; + case 'a': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 's': + if (strcmp("tructure", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_STRUCTURE; + break; + case 't': + if (strcmp("ype", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_TYPE; + } + break; + case '\0': + return PIDX_OBJECT_PARAM_DATA; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + if (strcmp("ded-from-explicit", s + 4) == 0) + return PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS; + break; + case 'r': + if (strcmp("ypt-only", s + 4) == 0) + return PIDX_CIPHER_PARAM_DECRYPT_ONLY; + } + break; + case 'f': + if (strcmp("ault-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_DEFAULT_DIGEST; + break; + case 's': + if (strcmp("c", s + 3) == 0) + return PIDX_OBJECT_PARAM_DESC; + break; + case 't': + if (strcmp("erministic", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_DETERMINISTIC; + } + break; + case 'h': + if (strcmp("kem-ikm", s + 2) == 0) + return PIDX_PKEY_PARAM_DHKEM_IKM; + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("heck", s + 8) == 0) + return PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK; + break; + case 'n': + if (strcmp("oinit", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_NOINIT; + break; + case 'o': + if (strcmp("neshot", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_ONESHOT; + break; + case 'p': + if (strcmp("rops", s + 8) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS; + break; + case 's': + if (strcmp("ize", s + 8) == 0) + return PIDX_PKEY_PARAM_DIGEST_SIZE; + } + break; + case '\0': + return PIDX_STORE_PARAM_DIGEST; + } + } + } + } + break; + case 's': + if (strcmp("tid", s + 3) == 0) + return PIDX_PKEY_PARAM_DIST_ID; + } + break; + case 'r': + if (strcmp("bg-no-trunc-md", s + 2) == 0) + return PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST; + break; + case 's': + if (strcmp("a-sign-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_DSA_SIGN_DISABLED; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_D; + } + break; + case 'e': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("rly_clean", s + 2) == 0) + return PIDX_KDF_PARAM_EARLY_CLEAN; + break; + case 'c': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'h': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'a': + switch(s[9]) { + default: + break; + case 'c': + switch(s[10]) { + default: + break; + case 't': + switch(s[11]) { + default: + break; + case 'o': + switch(s[12]) { + default: + break; + case 'r': + switch(s[13]) { + default: + break; + case '-': + switch(s[14]) { + default: + break; + case 'c': + if (strcmp("heck", s + 15) == 0) + return PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK; + break; + case 'm': + if (strcmp("ode", s + 15) == 0) + return PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE; + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'm': + if (strcmp("s_check", s + 2) == 0) + return PIDX_KDF_PARAM_FIPS_EMS_CHECK; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("d-pub-key", s + 6) == 0) + return PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY; + break; + case 'i': + if (strcmp("ng", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_ENCODING; + } + } + break; + case 'r': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'c': + if (strcmp("heck", s + 9) == 0) + return PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK; + break; + case 'l': + if (strcmp("evel", s + 9) == 0) + return PIDX_ENCODER_PARAM_ENCRYPT_LEVEL; + } + } + } + } + } + } + break; + case 'g': + if (strcmp("ine", s + 3) == 0) + return PIDX_ALG_PARAM_ENGINE; + break; + case 't': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'y': + switch(s[7]) { + default: + break; + case '_': + if (strcmp("required", s + 8) == 0) + return PIDX_DRBG_PARAM_ENTROPY_REQUIRED; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_ENTROPY; + } + } + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_E; + break; + case 'x': + if (strcmp("pect", s + 2) == 0) + return PIDX_STORE_PARAM_EXPECT; + } + break; + case 'f': + switch(s[1]) { + default: + break; + case 'i': + switch(s[2]) { + default: + break; + case 'e': + if (strcmp("ld-type", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_FIELD_TYPE; + break; + case 'n': + if (strcmp("gerprint", s + 3) == 0) + return PIDX_STORE_PARAM_FINGERPRINT; + break; + case 'p': + if (strcmp("s-indicator", s + 3) == 0) + return PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR; + } + } + break; + case 'g': + switch(s[1]) { + default: + break; + case 'e': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_GENERATE; + } + break; + case 'o': + if (strcmp("r", s + 8) == 0) + return PIDX_PKEY_PARAM_EC_GENERATOR; + } + } + } + } + } + } + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_GINDEX; + break; + case 'r': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'u': + switch(s[4]) { + default: + break; + case 'p': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("check", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE; + break; + case '\0': + return PIDX_PKEY_PARAM_GROUP_NAME; + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_G; + } + break; + case 'h': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("s-randkey", s + 2) == 0) + return PIDX_CIPHER_PARAM_HAS_RAND_KEY; + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_H; + break; + case 'k': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'f': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_KEY_CHECK; + } + } + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_HMAC_KEY_CHECK; + break; + case 's': + if (strcmp("_padding", s + 2) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING; + } + break; + case 'i': + switch(s[1]) { + default: + break; + case 'd': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_PKCS12_ID; + } + break; + case 'k': + if (strcmp("me", s + 2) == 0) + return PIDX_KEM_PARAM_IKME; + break; + case 'm': + if (strcmp("plicit-rejection", s + 2) == 0) + return PIDX_PKEY_PARAM_IMPLICIT_REJECTION; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("lude-public", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC; + break; + case 'f': + if (strcmp("o", s + 3) == 0) + return PIDX_PASSPHRASE_PARAM_INFO; + break; + case 'p': + if (strcmp("ut-type", s + 3) == 0) + return PIDX_STORE_PARAM_INPUT_TYPE; + break; + case 's': + if (strcmp("tance", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_INSTANCE; + } + break; + case 't': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("tion", s + 5) == 0) + return PIDX_GEN_PARAM_ITERATION; + break; + case '\0': + return PIDX_KDF_PARAM_ITER; + } + } + } + break; + case 'v': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("generated", s + 3) == 0) + return PIDX_CIPHER_PARAM_AEAD_IV_GENERATED; + break; + case 'l': + if (strcmp("en", s + 3) == 0) + return PIDX_CIPHER_PARAM_IVLEN; + break; + case '\0': + return PIDX_MAC_PARAM_IV; + } + } + break; + case 'j': + switch(s[1]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_COFACTOR; + } + break; + case 'k': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K2; + } + break; + case '3': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K3; + } + break; + case 'a': + if (strcmp("t", s + 2) == 0) + return PIDX_SIGNATURE_PARAM_KAT; + break; + case 'b': + if (strcmp("kdf-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KBKDF_KEY_CHECK; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case 's': + switch(s[9]) { + default: + break; + case 't': + switch(s[10]) { + default: + break; + case '-': + if (strcmp("props", s + 11) == 0) + return PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_KDF_DIGEST; + } + } + } + } + } + } + break; + case 'o': + if (strcmp("utlen", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_OUTLEN; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_TYPE; + break; + case 'u': + if (strcmp("km", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_UKM; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'y': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("heck", s + 5) == 0) + return PIDX_PKEY_PARAM_FIPS_KEY_CHECK; + break; + case 'l': + if (strcmp("ength", s + 5) == 0) + return PIDX_SKEY_PARAM_KEY_LENGTH; + } + break; + case 'b': + if (strcmp("its", s + 4) == 0) + return PIDX_CIPHER_PARAM_RC2_KEYBITS; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_KEYLEN; + break; + case '\0': + return PIDX_MAC_PARAM_KEY; + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KMAC_KEY_CHECK; + } + break; + case 'l': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("el", s + 3) == 0) + return PIDX_KDF_PARAM_LABEL; + break; + case 'n': + if (strcmp("es", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_LANES; + } + } + break; + case 'm': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'k': + if (strcmp("ey", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_MAC_KEY; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_KDF_PARAM_MAC_SIZE; + break; + case '\0': + return PIDX_ALG_PARAM_MAC; + } + break; + case 'n': + if (strcmp("datory-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_MANDATORY_DIGEST; + break; + case 'x': + switch(s[3]) { + default: + break; + case '-': + if (strcmp("size", s + 4) == 0) + return PIDX_PKEY_PARAM_MAX_SIZE; + break; + case '_': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("dinlen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_ADINLEN; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("rly_data", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA; + break; + case 'n': + if (strcmp("tropylen", s + 6) == 0) + return PIDX_DRBG_PARAM_MAX_ENTROPYLEN; + } + break; + case 'f': + if (strcmp("rag_len", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_NONCELEN; + break; + case 'p': + if (strcmp("erslen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_PERSLEN; + break; + case 'r': + if (strcmp("equest", s + 5) == 0) + return PIDX_RAND_PARAM_MAX_REQUEST; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MAX_LENGTH; + break; + case 'm': + if (strcmp("em_bytes", s + 4) == 0) + return PIDX_KDF_PARAM_SCRYPT_MAXMEM; + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'm': + if (strcmp("cost", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_MEMCOST; + break; + case 's': + if (strcmp("sage-encoding", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING; + } + break; + case 'g': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_DIGEST; + break; + case 'p': + if (strcmp("roperties", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_PROPERTIES; + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_MASKGENFUNC; + } + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("alg", s + 3) == 0) + return PIDX_DIGEST_PARAM_MICALG; + break; + case 'n': + switch(s[3]) { + default: + break; + case '_': + switch(s[4]) { + default: + break; + case 'e': + if (strcmp("ntropylen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_ENTROPYLEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_NONCELEN; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MIN_LENGTH; + } + } + break; + case 'l': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + if (strcmp("nput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS; + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED; + } + } + } + } + break; + case 'k': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + switch(s[8]) { + default: + break; + case 'm': + if (strcmp("port_pct_type", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE; + break; + case 'n': + if (strcmp("put_formats", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS; + } + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED; + } + } + } + } + } + } + break; + case 'o': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case '\0': + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE; + } + break; + case 'u': + if (strcmp("le-filename", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_MODULE_FILENAME; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_SIGNATURE_PARAM_MU; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_M; + } + break; + case 'n': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("me", s + 2) == 0) + return PIDX_STORE_PARAM_ISSUER; + break; + case 'o': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("short-mac", s + 3) == 0) + return PIDX_PROV_PARAM_NO_SHORT_MAC; + break; + case 'n': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("type", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_NONCE_TYPE; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_NONCE; + } + } + } + } + break; + case 'u': + if (strcmp("m", s + 2) == 0) + return PIDX_CIPHER_PARAM_NUM; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_N; + } + break; + case 'o': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("ep-label", s + 2) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL; + break; + case 'p': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'n': + if (strcmp("ssl-version", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_VERSION; + break; + case 'r': + if (strcmp("ation", s + 4) == 0) + return PIDX_KEM_PARAM_OPERATION; + } + break; + case 't': + if (strcmp("ions", s + 3) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS; + } + break; + case 'r': + if (strcmp("der", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_ORDER; + } + break; + case 'p': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P2; + } + break; + case 'a': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'm': + if (strcmp("ode", s + 5) == 0) + return PIDX_PKEY_PARAM_PAD_MODE; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_DIGEST_PARAM_PAD_TYPE; + } + break; + case 'd': + if (strcmp("ing", s + 4) == 0) + return PIDX_CIPHER_PARAM_PADDING; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_PAD; + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'u': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYUINFO; + break; + case 'v': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYVINFO; + } + } + } + break; + case 's': + if (strcmp("s", s + 3) == 0) + return PIDX_KDF_PARAM_PASSWORD; + } + break; + case 'b': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("ts", s + 3) == 0) + return PIDX_PKEY_PARAM_FFC_PBITS; + break; + case 'k': + if (strcmp("df2-lower-bound-check", s + 3) == 0) + return PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK; + } + break; + case 'c': + if (strcmp("ounter", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_PCOUNTER; + break; + case 'i': + if (strcmp("peline-tag", s + 2) == 0) + return PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG; + break; + case 'k': + if (strcmp("cs5", s + 2) == 0) + return PIDX_KDF_PARAM_PKCS5; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("nt-format", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT; + break; + case 't': + if (strcmp("ential", s + 3) == 0) + return PIDX_GEN_PARAM_POTENTIAL; + } + break; + case 'r': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("iction_resistance", s + 4) == 0) + return PIDX_DRBG_PARAM_PREDICTION_RESISTANCE; + break; + case 'f': + if (strcmp("ix", s + 4) == 0) + return PIDX_KDF_PARAM_PREFIX; + } + break; + case 'i': + switch(s[3]) { + default: + break; + case 'm': + if (strcmp("es", s + 4) == 0) + return PIDX_PKEY_PARAM_RSA_PRIMES; + break; + case 'v': + switch(s[4]) { + default: + break; + case '_': + if (strcmp("len", s + 5) == 0) + return PIDX_PKEY_PARAM_DH_PRIV_LEN; + break; + case '\0': + return PIDX_PKEY_PARAM_PRIV_KEY; + } + } + break; + case 'o': + switch(s[3]) { + default: + break; + case 'p': + if (strcmp("erties", s + 4) == 0) + return PIDX_STORE_PARAM_PROPERTIES; + break; + case 'v': + if (strcmp("ider-name", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_PROV_NAME; + } + } + break; + case 'u': + if (strcmp("b", s + 2) == 0) + return PIDX_PKEY_PARAM_PUB_KEY; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_P; + } + break; + case 'q': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q2; + } + break; + case 'b': + if (strcmp("its", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_QBITS; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_Q; + break; + case 'x': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_X; + } + break; + case 'y': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_Y; + } + } + break; + case 'r': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'k': + if (strcmp("ey", s + 5) == 0) + return PIDX_CIPHER_PARAM_RANDOM_KEY; + break; + case 'o': + if (strcmp("m_data", s + 5) == 0) + return PIDX_DRBG_PARAM_RANDOM_DATA; + } + } + break; + case 'w': + if (strcmp("-bytes", s + 3) == 0) + return PIDX_SKEY_PARAM_RAW_BYTES; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case '_': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("head", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD; + break; + case 'b': + if (strcmp("uffer_len", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN; + } + } + } + break; + case 'f': + if (strcmp("erence", s + 3) == 0) + return PIDX_OBJECT_PARAM_REFERENCE; + break; + case 's': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case '_': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("ounter", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_COUNTER; + break; + case 'r': + if (strcmp("equests", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_REQUESTS; + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case 'm': + switch(s[10]) { + default: + break; + case 'e': + switch(s[11]) { + default: + break; + case '_': + if (strcmp("interval", s + 12) == 0) + return PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL; + break; + case '\0': + return PIDX_DRBG_PARAM_RESEED_TIME; + } + } + } + } + } + } + } + } + } + } + break; + case 'o': + if (strcmp("unds", s + 2) == 0) + return PIDX_CIPHER_PARAM_ROUNDS; + break; + case 's': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + switch(s[5]) { + default: + break; + case 'o': + switch(s[6]) { + default: + break; + case 'e': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case 'i': + switch(s[10]) { + default: + break; + case 'c': + switch(s[11]) { + default: + break; + case 'i': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'n': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case '1': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT1; + } + break; + case '2': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT2; + } + break; + case '3': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT3; + } + break; + case '4': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT4; + } + break; + case '5': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT5; + } + break; + case '6': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT6; + } + break; + case '7': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT7; + } + break; + case '8': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT8; + } + break; + case '9': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'd': + if (strcmp("erive-from-pq", s + 5) == 0) + return PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'x': + switch(s[6]) { + default: + break; + case 'p': + switch(s[7]) { + default: + break; + case 'o': + switch(s[8]) { + default: + break; + case 'n': + switch(s[9]) { + default: + break; + case 'e': + switch(s[10]) { + default: + break; + case 'n': + switch(s[11]) { + default: + break; + case 't': + switch(s[12]) { + default: + break; + case '1': + switch(s[13]) { + default: + break; + case '0': + switch(s[14]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT1; + } + break; + case '2': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT2; + } + break; + case '3': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT3; + } + break; + case '4': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT4; + } + break; + case '5': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT5; + } + break; + case '6': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT6; + } + break; + case '7': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT7; + } + break; + case '8': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT8; + } + break; + case '9': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT; + } + } + } + } + } + } + } + } + break; + case 'f': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'o': + switch(s[9]) { + default: + break; + case 'r': + switch(s[10]) { + default: + break; + case '1': + switch(s[11]) { + default: + break; + case '0': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR1; + } + break; + case '2': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR2; + } + break; + case '3': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR3; + } + break; + case '4': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR4; + } + break; + case '5': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR5; + } + break; + case '6': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR6; + } + break; + case '7': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR7; + } + break; + case '8': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR8; + } + break; + case '9': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR; + } + } + } + } + } + } + break; + case 'p': + switch(s[5]) { + default: + break; + case 'k': + if (strcmp("cs15-pad-disabled", s + 6) == 0) + return PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED; + break; + case 's': + if (strcmp("s-saltlen-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK; + } + break; + case 's': + if (strcmp("ign-x931-pad-disabled", s + 5) == 0) + return PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED; + } + } + } + break; + case '\0': + return PIDX_KDF_PARAM_SCRYPT_R; + } + break; + case 's': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("eprime-generator", s + 3) == 0) + return PIDX_PKEY_PARAM_DH_GENERATOR; + break; + case 'l': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'l': + if (strcmp("en", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_PSS_SALTLEN; + break; + case '\0': + return PIDX_MAC_PARAM_SALT; + } + } + break; + case 'v': + if (strcmp("e-parameters", s + 3) == 0) + return PIDX_ENCODER_PARAM_SAVE_PARAMETERS; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'r': + if (strcmp("et", s + 4) == 0) + return PIDX_KDF_PARAM_SECRET; + break; + case 'u': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'y': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'b': + if (strcmp("its", s + 10) == 0) + return PIDX_PKEY_PARAM_SECURITY_BITS; + break; + case 'c': + if (strcmp("hecks", s + 10) == 0) + return PIDX_PROV_PARAM_SECURITY_CHECKS; + } + } + } + } + } + } + } + break; + case 'e': + if (strcmp("d", s + 3) == 0) + return PIDX_PKEY_PARAM_SLH_DSA_SEED; + break; + case 'r': + if (strcmp("ial", s + 3) == 0) + return PIDX_STORE_PARAM_SERIAL; + break; + case 's': + if (strcmp("sion_id", s + 3) == 0) + return PIDX_KDF_PARAM_SSHKDF_SESSION_ID; + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'n': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + if (strcmp("heck", s + 6) == 0) + return PIDX_PKEY_PARAM_FIPS_SIGN_CHECK; + break; + case 'x': + if (strcmp("931-pad-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK; + } + break; + case 'a': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case 'u': + switch(s[7]) { + default: + break; + case 'r': + switch(s[8]) { + default: + break; + case 'e': + switch(s[9]) { + default: + break; + case '-': + if (strcmp("digest-check", s + 10) == 0) + return PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK; + break; + case '\0': + return PIDX_SIGNATURE_PARAM_SIGNATURE; + } + } + } + } + } + } + } + break; + case 'z': + if (strcmp("e", s + 3) == 0) + return PIDX_MAC_PARAM_SIZE; + } + break; + case 'p': + if (strcmp("eed", s + 2) == 0) + return PIDX_CIPHER_PARAM_SPEED; + break; + case 's': + switch(s[2]) { + default: + break; + case 'h': + switch(s[3]) { + default: + break; + case 'k': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'f': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_KEY_CHECK; + } + } + } + } + } + break; + case 'k': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'f': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_KEY_CHECK; + } + } + } + } + break; + case 'l': + if (strcmp("3-ms", s + 3) == 0) + return PIDX_DIGEST_PARAM_SSL3_MS; + } + break; + case 't': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("esc", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_DESC; + break; + case 'p': + if (strcmp("hase", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_PHASE; + break; + case 't': + if (strcmp("ype", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_TYPE; + } + break; + case 'a': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_STATE; + } + break; + case 'u': + if (strcmp("s", s + 5) == 0) + return PIDX_PROV_PARAM_STATUS; + } + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("m_mac", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC; + break; + case 'n': + if (strcmp("gth", s + 5) == 0) + return PIDX_RAND_PARAM_STRENGTH; + } + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("ject", s + 3) == 0) + return PIDX_STORE_PARAM_SUBJECT; + break; + case 'p': + switch(s[3]) { + default: + break; + case 'p': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + if (strcmp("ivinfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PRIVINFO; + break; + case 'u': + if (strcmp("binfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PUBINFO; + } + } + } + } + } + } + break; + case 't': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_TAGLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TAG; + } + } + break; + case 'd': + if (strcmp("es-encrypt-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED; + break; + case 'e': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case '-': + if (strcmp("entropy", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_TEST_ENTROPY; + break; + case '_': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("ntropy", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_ENTROPY; + break; + case 'n': + if (strcmp("once", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_NONCE; + } + } + } + } + break; + case 'h': + if (strcmp("reads", s + 2) == 0) + return PIDX_KDF_PARAM_THREADS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("lient-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION; + break; + case 'd': + if (strcmp("ata-size", s + 5) == 0) + return PIDX_MAC_PARAM_TLS_DATA_SIZE; + break; + case 'g': + switch(s[5]) { + default: + break; + case 'r': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'u': + switch(s[8]) { + default: + break; + case 'p': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'a': + if (strcmp("lg", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_ALG; + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_ID; + } + break; + case 's': + if (strcmp("-kem", s + 12) == 0) + return PIDX_CAPABILITY_TLS_GROUP_IS_KEM; + } + break; + case 'n': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'm': + switch(s[13]) { + default: + break; + case 'e': + switch(s[14]) { + default: + break; + case '-': + if (strcmp("internal", s + 15) == 0) + return PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL; + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_NAME; + } + } + } + } + break; + case 's': + if (strcmp("ec-bits", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case '-': + if (strcmp("size", s + 8) == 0) + return PIDX_CIPHER_PARAM_TLS_MAC_SIZE; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS_MAC; + } + break; + case 'x': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS; + } + } + } + break; + case 'i': + switch(s[6]) { + default: + break; + case 'n': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS; + } + } + } + break; + case 'u': + if (strcmp("lti", s + 6) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK; + } + break; + case 'n': + if (strcmp("egotiated-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION; + break; + case 's': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'a': + switch(s[8]) { + default: + break; + case 'l': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '-': + switch(s[11]) { + default: + break; + case 'c': + if (strcmp("ode-point", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT; + break; + case 'h': + switch(s[12]) { + default: + break; + case 'a': + switch(s[13]) { + default: + break; + case 's': + switch(s[14]) { + default: + break; + case 'h': + switch(s[15]) { + default: + break; + case '-': + switch(s[16]) { + default: + break; + case 'n': + if (strcmp("ame", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME; + break; + case 'o': + if (strcmp("id", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_OID; + } + } + } + } + } + break; + case 'i': + if (strcmp("ana-name", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME; + break; + case 'k': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'y': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case 'y': + switch(s[16]) { + default: + break; + case 'p': + switch(s[17]) { + default: + break; + case 'e': + switch(s[18]) { + default: + break; + case '-': + if (strcmp("oid", s + 19) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID; + break; + case '\0': + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE; + } + } + } + } + } + } + } + break; + case 'n': + if (strcmp("ame", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_NAME; + break; + case 'o': + if (strcmp("id", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_OID; + break; + case 's': + switch(s[12]) { + default: + break; + case 'e': + if (strcmp("c-bits", s + 13) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS; + break; + case 'i': + switch(s[13]) { + default: + break; + case 'g': + switch(s[14]) { + default: + break; + case '-': + switch(s[15]) { + default: + break; + case 'n': + if (strcmp("ame", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME; + break; + case 'o': + if (strcmp("id", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_OID; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'v': + if (strcmp("ersion", s + 5) == 0) + return PIDX_CIPHER_PARAM_TLS_VERSION; + } + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK; + break; + case 'e': + if (strcmp("ms-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK; + } + } + } + } + } + break; + case '3': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'k': + switch(s[7]) { + default: + break; + case 'd': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'u': + switch(s[6]) { + default: + break; + case 'l': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case '_': + switch(s[10]) { + default: + break; + case 'a': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'd': + switch(s[13]) { + default: + break; + case 'p': + if (strcmp("acklen", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD; + } + } + } + break; + case 'e': + switch(s[11]) { + default: + break; + case 'n': + switch(s[12]) { + default: + break; + case 'c': + switch(s[13]) { + default: + break; + case 'i': + if (strcmp("n", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN; + break; + case 'l': + if (strcmp("en", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC; + } + } + } + break; + case 'i': + if (strcmp("nterleave", s + 11) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE; + break; + case 'm': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'x': + switch(s[13]) { + default: + break; + case 'b': + if (strcmp("ufsz", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE; + break; + case 's': + if (strcmp("ndfrag", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT; + } + } + } + } + } + } + } + } + } + } + break; + case 'a': + switch(s[4]) { + default: + break; + case 'a': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'p': + if (strcmp("ad", s + 7) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD; + } + } + } + break; + case 'i': + switch(s[4]) { + default: + break; + case 'v': + switch(s[5]) { + default: + break; + case 'f': + if (strcmp("ixed", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED; + break; + case 'g': + if (strcmp("en", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN; + break; + case 'i': + if (strcmp("nv", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV; + } + } + break; + case 't': + if (strcmp("ree", s + 4) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS; + } + break; + case 'y': + if (strcmp("pe", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_TYPE; + } + break; + case 'u': + switch(s[1]) { + default: + break; + case 'k': + if (strcmp("m", s + 2) == 0) + return PIDX_KDF_PARAM_UKM; + break; + case 'p': + if (strcmp("dated-iv", s + 2) == 0) + return PIDX_CIPHER_PARAM_UPDATED_IV; + break; + case 's': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'b': + if (strcmp("its", s + 5) == 0) + return PIDX_CIPHER_PARAM_USE_BITS; + break; + case 'c': + if (strcmp("ofactor-flag", s + 5) == 0) + return PIDX_PKEY_PARAM_USE_COFACTOR_FLAG; + break; + case 'k': + if (strcmp("eybits", s + 5) == 0) + return PIDX_KDF_PARAM_X942_USE_KEYBITS; + break; + case 'l': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_KBKDF_USE_L; + } + break; + case 's': + if (strcmp("eparator", s + 5) == 0) + return PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR; + } + break; + case '_': + switch(s[4]) { + default: + break; + case 'd': + if (strcmp("erivation_function", s + 5) == 0) + return PIDX_DRBG_PARAM_USE_DF; + break; + case 'e': + if (strcmp("tm", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM; + } + } + } + } + break; + case 'v': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'l': + switch(s[3]) { + default: + break; + case 'i': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_VALIDATE_G; + } + break; + case 'l': + if (strcmp("egacy", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY; + break; + case 'p': + if (strcmp("q", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_PQ; + } + } + } + } + } + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'r': + switch(s[3]) { + default: + break; + case 'i': + if (strcmp("fy-message", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE; + break; + case 's': + if (strcmp("ion", s + 4) == 0) + return PIDX_PROV_PARAM_VERSION; + } + } + } + break; + case 'x': + switch(s[1]) { + default: + break; + case '9': + switch(s[2]) { + default: + break; + case '4': + if (strcmp("2kdf-key-check", s + 3) == 0) + return PIDX_PROV_PARAM_X942KDF_KEY_CHECK; + break; + case '6': + switch(s[3]) { + default: + break; + case '3': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'f': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_KEY_CHECK; + } + } + } + } + } + } + } + break; + case 'c': + if (strcmp("ghash", s + 2) == 0) + return PIDX_KDF_PARAM_SSHKDF_XCGHASH; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_DIGEST_PARAM_XOFLEN; + break; + case '\0': + return PIDX_MAC_PARAM_XOF; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP; + } + break; + case 'q': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ; + } + break; + case 't': + if (strcmp("s_standard", s + 2) == 0) + return PIDX_CIPHER_PARAM_XTS_STANDARD; + } + } + return -1; +} + +/* End of TRIE */ diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/poly1305/poly1305-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/poly1305/poly1305-x86_64.s index 205b2e2eb02f5e..dbed1239d3c419 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/poly1305/poly1305-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/poly1305/poly1305-x86_64.s @@ -55,6 +55,7 @@ poly1305_init: .align 32 poly1305_blocks: .cfi_startproc +.byte 243,15,30,250 .Lblocks: shrq $4,%rdx jz .Lno_data @@ -170,6 +171,7 @@ poly1305_blocks: .align 32 poly1305_emit: .cfi_startproc +.byte 243,15,30,250 .Lemit: movq 0(%rdi),%r8 movq 8(%rdi),%r9 @@ -406,6 +408,7 @@ __poly1305_init_avx: .align 32 poly1305_blocks_avx: .cfi_startproc +.byte 243,15,30,250 movl 20(%rdi),%r8d cmpq $128,%rdx jae .Lblocks_avx @@ -1241,6 +1244,7 @@ poly1305_blocks_avx: .align 32 poly1305_emit_avx: .cfi_startproc +.byte 243,15,30,250 cmpl $0,20(%rdi) je .Lemit @@ -1297,6 +1301,7 @@ poly1305_emit_avx: .align 32 poly1305_blocks_avx2: .cfi_startproc +.byte 243,15,30,250 movl 20(%rdi),%r8d cmpq $128,%rdx jae .Lblocks_avx2 @@ -1947,6 +1952,7 @@ poly1305_blocks_avx2: .align 32 poly1305_blocks_avx512: .cfi_startproc +.byte 243,15,30,250 .Lblocks_avx512: movl $15,%eax kmovw %eax,%k2 @@ -3450,6 +3456,7 @@ poly1305_emit_base2_44: .byte 0xf3,0xc3 .cfi_endproc .size poly1305_emit_base2_44,.-poly1305_emit_base2_44 +.section .rodata .align 64 .Lconst: .Lmask24: @@ -3481,6 +3488,7 @@ poly1305_emit_base2_44: .Lx_mask42: .quad 0x3ffffffffff,0x3ffffffffff,0x3ffffffffff,0x3ffffffffff .quad 0x3ffffffffff,0x3ffffffffff,0x3ffffffffff,0x3ffffffffff +.previous .byte 80,111,108,121,49,51,48,53,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 16 .globl xor128_encrypt_n_pad diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/sha/keccak1600-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/sha/keccak1600-x86_64.s index bb5222b73bc00a..021d34601ffc07 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/sha/keccak1600-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/sha/keccak1600-x86_64.s @@ -447,10 +447,12 @@ SHA3_squeeze: .cfi_offset %r14,-32 shrq $3,%rcx - movq %rdi,%r8 + movq %rdi,%r9 movq %rsi,%r12 movq %rdx,%r13 movq %rcx,%r14 + btl $0,%r8d + jc .Lnext_block jmp .Loop_squeeze .align 32 @@ -458,8 +460,8 @@ SHA3_squeeze: cmpq $8,%r13 jb .Ltail_squeeze - movq (%r8),%rax - leaq 8(%r8),%r8 + movq (%r9),%rax + leaq 8(%r9),%r9 movq %rax,(%r12) leaq 8(%r12),%r12 subq $8,%r13 @@ -467,14 +469,14 @@ SHA3_squeeze: subq $1,%rcx jnz .Loop_squeeze - +.Lnext_block: call KeccakF1600 - movq %rdi,%r8 + movq %rdi,%r9 movq %r14,%rcx jmp .Loop_squeeze .Ltail_squeeze: - movq %r8,%rsi + movq %r9,%rsi movq %r12,%rdi movq %r13,%rcx .byte 0xf3,0xa4 @@ -492,6 +494,7 @@ SHA3_squeeze: .byte 0xf3,0xc3 .cfi_endproc .size SHA3_squeeze,.-SHA3_squeeze +.section .rodata .align 256 .quad 0,0,0,0,0,0,0,0 .type iotas,@object diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/sha/sha1-mb-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/sha/sha1-mb-x86_64.s index b835e0b6c95953..012a5094ac38d8 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/sha/sha1-mb-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/sha/sha1-mb-x86_64.s @@ -7286,7 +7286,7 @@ _avx2_shortcut: .byte 0xf3,0xc3 .cfi_endproc .size sha1_multi_block_avx2,.-sha1_multi_block_avx2 - +.section .rodata .align 256 .long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 .long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 @@ -7301,6 +7301,7 @@ K_XX_XX: .long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f .byte 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0 .byte 83,72,65,49,32,109,117,108,116,105,45,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.previous .section ".note.gnu.property", "a" .p2align 3 .long 1f - 0f diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/sha/sha1-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/sha/sha1-x86_64.s index 85e9a2909f8aff..234e625cfe8ad5 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/sha/sha1-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/sha/sha1-x86_64.s @@ -5433,6 +5433,7 @@ _avx2_shortcut: .byte 0xf3,0xc3 .cfi_endproc .size sha1_block_data_order_avx2,.-sha1_block_data_order_avx2 +.section .rodata .align 64 K_XX_XX: .long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 @@ -5446,6 +5447,7 @@ K_XX_XX: .long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f .long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f .byte 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0 +.previous .byte 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 64 .section ".note.gnu.property", "a" diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/sha/sha256-mb-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/sha/sha256-mb-x86_64.s index 8ac342f9ceb6c8..aabed290b1c350 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/sha/sha256-mb-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/sha/sha256-mb-x86_64.s @@ -7831,6 +7831,7 @@ _avx2_shortcut: .byte 0xf3,0xc3 .cfi_endproc .size sha256_multi_block_avx2,.-sha256_multi_block_avx2 +.section .rodata .align 256 K256: .long 1116352408,1116352408,1116352408,1116352408 @@ -7982,6 +7983,7 @@ K256_shaext: .long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 .long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 .byte 83,72,65,50,53,54,32,109,117,108,116,105,45,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.previous .section ".note.gnu.property", "a" .p2align 3 .long 1f - 0f diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/sha/sha256-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/sha/sha256-x86_64.s index e82bbec164f843..cb42c58633d88e 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/sha/sha256-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/sha/sha256-x86_64.s @@ -1728,6 +1728,7 @@ sha256_block_data_order: .byte 0xf3,0xc3 .cfi_endproc .size sha256_block_data_order,.-sha256_block_data_order +.section .rodata .align 64 .type K256,@object K256: @@ -1771,6 +1772,7 @@ K256: .long 0xffffffff,0xffffffff,0x03020100,0x0b0a0908 .long 0xffffffff,0xffffffff,0x03020100,0x0b0a0908 .byte 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.previous .type sha256_block_data_order_shaext,@function .align 64 sha256_block_data_order_shaext: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/sha/sha512-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/sha/sha512-x86_64.s index a76d017ba764b7..880b3fdbac34be 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/sha/sha512-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/sha/sha512-x86_64.s @@ -1726,6 +1726,7 @@ sha512_block_data_order: .byte 0xf3,0xc3 .cfi_endproc .size sha512_block_data_order,.-sha512_block_data_order +.section .rodata .align 64 .type K512,@object K512: @@ -1813,6 +1814,7 @@ K512: .quad 0x0001020304050607,0x08090a0b0c0d0e0f .quad 0x0001020304050607,0x08090a0b0c0d0e0f .byte 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.previous .type sha512_block_data_order_xop,@function .align 64 sha512_block_data_order_xop: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/whrlpool/wp-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/whrlpool/wp-x86_64.s index 5e236f9481856c..172459c6403d7b 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/whrlpool/wp-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/whrlpool/wp-x86_64.s @@ -608,6 +608,7 @@ whirlpool_block: .cfi_endproc .size whirlpool_block,.-whirlpool_block +.section .rodata .align 64 .type .Ltable,@object .Ltable: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/x86_64cpuid.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/x86_64cpuid.s index 6a5180311ccca8..a4e5a58e1a3af2 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/x86_64cpuid.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/x86_64cpuid.s @@ -1,11 +1,11 @@ + .hidden OPENSSL_cpuid_setup .section .init call OPENSSL_cpuid_setup .hidden OPENSSL_ia32cap_P -.comm OPENSSL_ia32cap_P,16,4 - +.comm OPENSSL_ia32cap_P,40,4 .text .globl OPENSSL_atomic_add @@ -163,6 +163,7 @@ OPENSSL_ia32_cpuid: movl $7,%eax xorl %ecx,%ecx cpuid + movd %eax,%xmm1 btl $26,%r9d jc .Lnotknights andl $0xfff7ffff,%ebx @@ -173,9 +174,31 @@ OPENSSL_ia32_cpuid: jne .Lnotskylakex andl $0xfffeffff,%ebx + .Lnotskylakex: movl %ebx,8(%rdi) movl %ecx,12(%rdi) + movl %edx,16(%rdi) + + movd %xmm1,%eax + cmpl $0x1,%eax + jb .Lno_extended_info + movl $0x7,%eax + movl $0x1,%ecx + cpuid + movl %eax,20(%rdi) + movl %edx,24(%rdi) + movl %ebx,28(%rdi) + movl %ecx,32(%rdi) + + andl $0x80000,%edx + cmpl $0x0,%edx + je .Lno_extended_info + movl $0x24,%eax + movl $0x0,%ecx + cpuid + movl %ebx,36(%rdi) + .Lno_extended_info: btl $27,%r9d @@ -194,6 +217,9 @@ OPENSSL_ia32_cpuid: cmpl $6,%eax je .Ldone .Lclear_avx: + andl $0xff7fffff,20(%rdi) + + movl $0xefffe7ff,%eax andl %eax,%r9d movl $0x3fdeffdf,%eax diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/internal/param_names.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/internal/param_names.h new file mode 100644 index 00000000000000..0a0404a57e82b9 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/internal/param_names.h @@ -0,0 +1,469 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/internal/param_names.h.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +int ossl_param_find_pidx(const char *s); + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +#define NUM_PIDX 346 + +#define PIDX_ALG_PARAM_ALGORITHM_ID 0 +#define PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS 1 +#define PIDX_ALG_PARAM_CIPHER 2 +#define PIDX_ALG_PARAM_DIGEST 3 +#define PIDX_ALG_PARAM_ENGINE 4 +#define PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR 5 +#define PIDX_ALG_PARAM_MAC 6 +#define PIDX_ALG_PARAM_PROPERTIES 7 +#define PIDX_ASYM_CIPHER_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_ENGINE PIDX_PKEY_PARAM_ENGINE +#define PIDX_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +#define PIDX_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS 9 +#define PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL 10 +#define PIDX_ASYM_CIPHER_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_ASYM_CIPHER_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION 11 +#define PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION 12 +#define PIDX_CAPABILITY_TLS_GROUP_ALG 13 +#define PIDX_CAPABILITY_TLS_GROUP_ID 14 +#define PIDX_CAPABILITY_TLS_GROUP_IS_KEM 15 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_GROUP_NAME 20 +#define PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL 21 +#define PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS 22 +#define PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT 23 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME 24 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_OID 25 +#define PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME 26 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE 27 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID 28 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_SIGALG_NAME 29 +#define PIDX_CAPABILITY_TLS_SIGALG_OID 30 +#define PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS 31 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME 32 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_OID 33 +#define PIDX_CIPHER_PARAM_AEAD 34 +#define PIDX_CIPHER_PARAM_AEAD_IVLEN PIDX_CIPHER_PARAM_IVLEN +#define PIDX_CIPHER_PARAM_AEAD_IV_GENERATED 35 +#define PIDX_CIPHER_PARAM_AEAD_MAC_KEY 36 +#define PIDX_CIPHER_PARAM_AEAD_TAG 37 +#define PIDX_CIPHER_PARAM_AEAD_TAGLEN 38 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD 39 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD 40 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN 41 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED 42 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV 43 +#define PIDX_CIPHER_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD 44 +#define PIDX_CIPHER_PARAM_BLOCK_SIZE 45 +#define PIDX_CIPHER_PARAM_CTS 46 +#define PIDX_CIPHER_PARAM_CTS_MODE 47 +#define PIDX_CIPHER_PARAM_CUSTOM_IV 48 +#define PIDX_CIPHER_PARAM_DECRYPT_ONLY 49 +#define PIDX_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK 50 +#define PIDX_CIPHER_PARAM_HAS_RAND_KEY 51 +#define PIDX_CIPHER_PARAM_IV 52 +#define PIDX_CIPHER_PARAM_IVLEN 53 +#define PIDX_CIPHER_PARAM_KEYLEN 54 +#define PIDX_CIPHER_PARAM_MODE 55 +#define PIDX_CIPHER_PARAM_NUM 56 +#define PIDX_CIPHER_PARAM_PADDING 57 +#define PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG 58 +#define PIDX_CIPHER_PARAM_RANDOM_KEY 59 +#define PIDX_CIPHER_PARAM_RC2_KEYBITS 60 +#define PIDX_CIPHER_PARAM_ROUNDS 61 +#define PIDX_CIPHER_PARAM_SPEED 62 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK 63 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD 64 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN 65 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC 66 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN 67 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN 68 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE 69 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE 70 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT 71 +#define PIDX_CIPHER_PARAM_TLS_MAC 72 +#define PIDX_CIPHER_PARAM_TLS_MAC_SIZE 73 +#define PIDX_CIPHER_PARAM_TLS_VERSION 74 +#define PIDX_CIPHER_PARAM_UPDATED_IV 75 +#define PIDX_CIPHER_PARAM_USE_BITS 76 +#define PIDX_CIPHER_PARAM_XTS_STANDARD 77 +#define PIDX_DECODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DIGEST_PARAM_ALGID_ABSENT 78 +#define PIDX_DIGEST_PARAM_BLOCK_SIZE 45 +#define PIDX_DIGEST_PARAM_MICALG 79 +#define PIDX_DIGEST_PARAM_PAD_TYPE 80 +#define PIDX_DIGEST_PARAM_SIZE 81 +#define PIDX_DIGEST_PARAM_SSL3_MS 82 +#define PIDX_DIGEST_PARAM_XOF 83 +#define PIDX_DIGEST_PARAM_XOFLEN 84 +#define PIDX_DRBG_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_DRBG_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_DRBG_PARAM_ENTROPY_REQUIRED 85 +#define PIDX_DRBG_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_DRBG_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_DRBG_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_DRBG_PARAM_MAX_ADINLEN 86 +#define PIDX_DRBG_PARAM_MAX_ENTROPYLEN 87 +#define PIDX_DRBG_PARAM_MAX_LENGTH 88 +#define PIDX_DRBG_PARAM_MAX_NONCELEN 89 +#define PIDX_DRBG_PARAM_MAX_PERSLEN 90 +#define PIDX_DRBG_PARAM_MIN_ENTROPYLEN 91 +#define PIDX_DRBG_PARAM_MIN_LENGTH 92 +#define PIDX_DRBG_PARAM_MIN_NONCELEN 93 +#define PIDX_DRBG_PARAM_PREDICTION_RESISTANCE 94 +#define PIDX_DRBG_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DRBG_PARAM_RANDOM_DATA 95 +#define PIDX_DRBG_PARAM_RESEED_COUNTER 96 +#define PIDX_DRBG_PARAM_RESEED_REQUESTS 97 +#define PIDX_DRBG_PARAM_RESEED_TIME 98 +#define PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL 99 +#define PIDX_DRBG_PARAM_SIZE 81 +#define PIDX_DRBG_PARAM_USE_DF 100 +#define PIDX_ENCODER_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_ENCODER_PARAM_ENCRYPT_LEVEL 101 +#define PIDX_ENCODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_ENCODER_PARAM_SAVE_PARAMETERS 102 +#define PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE 103 +#define PIDX_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_EXCHANGE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST 104 +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS 105 +#define PIDX_EXCHANGE_PARAM_KDF_OUTLEN 106 +#define PIDX_EXCHANGE_PARAM_KDF_TYPE 107 +#define PIDX_EXCHANGE_PARAM_KDF_UKM 108 +#define PIDX_EXCHANGE_PARAM_PAD 109 +#define PIDX_GEN_PARAM_ITERATION 110 +#define PIDX_GEN_PARAM_POTENTIAL 111 +#define PIDX_KDF_PARAM_ARGON2_AD 112 +#define PIDX_KDF_PARAM_ARGON2_LANES 113 +#define PIDX_KDF_PARAM_ARGON2_MEMCOST 114 +#define PIDX_KDF_PARAM_ARGON2_VERSION 115 +#define PIDX_KDF_PARAM_CEK_ALG 116 +#define PIDX_KDF_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_KDF_PARAM_CONSTANT 117 +#define PIDX_KDF_PARAM_DATA 118 +#define PIDX_KDF_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_KDF_PARAM_EARLY_CLEAN 119 +#define PIDX_KDF_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KDF_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_KDF_PARAM_FIPS_EMS_CHECK 120 +#define PIDX_KDF_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KDF_PARAM_HMACDRBG_ENTROPY 121 +#define PIDX_KDF_PARAM_HMACDRBG_NONCE 122 +#define PIDX_KDF_PARAM_INFO 123 +#define PIDX_KDF_PARAM_ITER 124 +#define PIDX_KDF_PARAM_KBKDF_R 125 +#define PIDX_KDF_PARAM_KBKDF_USE_L 126 +#define PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR 127 +#define PIDX_KDF_PARAM_KEY 128 +#define PIDX_KDF_PARAM_LABEL 129 +#define PIDX_KDF_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_KDF_PARAM_MAC_SIZE 130 +#define PIDX_KDF_PARAM_MODE 55 +#define PIDX_KDF_PARAM_PASSWORD 131 +#define PIDX_KDF_PARAM_PKCS12_ID 132 +#define PIDX_KDF_PARAM_PKCS5 133 +#define PIDX_KDF_PARAM_PREFIX 134 +#define PIDX_KDF_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_KDF_PARAM_SALT 135 +#define PIDX_KDF_PARAM_SCRYPT_MAXMEM 136 +#define PIDX_KDF_PARAM_SCRYPT_N 137 +#define PIDX_KDF_PARAM_SCRYPT_P 138 +#define PIDX_KDF_PARAM_SCRYPT_R 125 +#define PIDX_KDF_PARAM_SECRET 139 +#define PIDX_KDF_PARAM_SEED 140 +#define PIDX_KDF_PARAM_SIZE 81 +#define PIDX_KDF_PARAM_SSHKDF_SESSION_ID 141 +#define PIDX_KDF_PARAM_SSHKDF_TYPE 142 +#define PIDX_KDF_PARAM_SSHKDF_XCGHASH 143 +#define PIDX_KDF_PARAM_THREADS 144 +#define PIDX_KDF_PARAM_UKM 145 +#define PIDX_KDF_PARAM_X942_ACVPINFO 146 +#define PIDX_KDF_PARAM_X942_PARTYUINFO 147 +#define PIDX_KDF_PARAM_X942_PARTYVINFO 148 +#define PIDX_KDF_PARAM_X942_SUPP_PRIVINFO 149 +#define PIDX_KDF_PARAM_X942_SUPP_PUBINFO 150 +#define PIDX_KDF_PARAM_X942_USE_KEYBITS 151 +#define PIDX_KEM_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KEM_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KEM_PARAM_IKME 152 +#define PIDX_KEM_PARAM_OPERATION 153 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING 154 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING 155 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA 156 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN 157 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE 55 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS 158 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD 159 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC 160 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE 161 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM 162 +#define PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN 163 +#define PIDX_MAC_PARAM_BLOCK_SIZE 164 +#define PIDX_MAC_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_MAC_PARAM_CUSTOM 165 +#define PIDX_MAC_PARAM_C_ROUNDS 166 +#define PIDX_MAC_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_MAC_PARAM_DIGEST_NOINIT 167 +#define PIDX_MAC_PARAM_DIGEST_ONESHOT 168 +#define PIDX_MAC_PARAM_D_ROUNDS 169 +#define PIDX_MAC_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_MAC_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_MAC_PARAM_FIPS_NO_SHORT_MAC PIDX_PROV_PARAM_NO_SHORT_MAC +#define PIDX_MAC_PARAM_IV 52 +#define PIDX_MAC_PARAM_KEY 128 +#define PIDX_MAC_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_MAC_PARAM_SALT 135 +#define PIDX_MAC_PARAM_SIZE 81 +#define PIDX_MAC_PARAM_TLS_DATA_SIZE 170 +#define PIDX_MAC_PARAM_XOF 83 +#define PIDX_OBJECT_PARAM_DATA 118 +#define PIDX_OBJECT_PARAM_DATA_STRUCTURE 171 +#define PIDX_OBJECT_PARAM_DATA_TYPE 172 +#define PIDX_OBJECT_PARAM_DESC 173 +#define PIDX_OBJECT_PARAM_INPUT_TYPE 174 +#define PIDX_OBJECT_PARAM_REFERENCE 175 +#define PIDX_OBJECT_PARAM_TYPE 142 +#define PIDX_PASSPHRASE_PARAM_INFO 123 +#define PIDX_PKEY_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_PKEY_PARAM_BITS 176 +#define PIDX_PKEY_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_PKEY_PARAM_DEFAULT_DIGEST 177 +#define PIDX_PKEY_PARAM_DHKEM_IKM 178 +#define PIDX_PKEY_PARAM_DH_GENERATOR 179 +#define PIDX_PKEY_PARAM_DH_PRIV_LEN 180 +#define PIDX_PKEY_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_PKEY_PARAM_DIGEST_SIZE 181 +#define PIDX_PKEY_PARAM_DIST_ID 182 +#define PIDX_PKEY_PARAM_EC_A 183 +#define PIDX_PKEY_PARAM_EC_B 184 +#define PIDX_PKEY_PARAM_EC_CHAR2_M 185 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K1 186 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K2 187 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K3 188 +#define PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS 189 +#define PIDX_PKEY_PARAM_EC_CHAR2_TYPE 190 +#define PIDX_PKEY_PARAM_EC_COFACTOR 191 +#define PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS 192 +#define PIDX_PKEY_PARAM_EC_ENCODING 193 +#define PIDX_PKEY_PARAM_EC_FIELD_TYPE 194 +#define PIDX_PKEY_PARAM_EC_GENERATOR 195 +#define PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE 196 +#define PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC 197 +#define PIDX_PKEY_PARAM_EC_ORDER 198 +#define PIDX_PKEY_PARAM_EC_P 138 +#define PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT 199 +#define PIDX_PKEY_PARAM_EC_PUB_X 200 +#define PIDX_PKEY_PARAM_EC_PUB_Y 201 +#define PIDX_PKEY_PARAM_EC_SEED 140 +#define PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY 202 +#define PIDX_PKEY_PARAM_ENGINE PIDX_ALG_PARAM_ENGINE +#define PIDX_PKEY_PARAM_FFC_COFACTOR 203 +#define PIDX_PKEY_PARAM_FFC_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_FFC_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_FFC_G 204 +#define PIDX_PKEY_PARAM_FFC_GINDEX 205 +#define PIDX_PKEY_PARAM_FFC_H 206 +#define PIDX_PKEY_PARAM_FFC_P 138 +#define PIDX_PKEY_PARAM_FFC_PBITS 207 +#define PIDX_PKEY_PARAM_FFC_PCOUNTER 208 +#define PIDX_PKEY_PARAM_FFC_Q 209 +#define PIDX_PKEY_PARAM_FFC_QBITS 210 +#define PIDX_PKEY_PARAM_FFC_SEED 140 +#define PIDX_PKEY_PARAM_FFC_TYPE 142 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_G 211 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY 212 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_PQ 213 +#define PIDX_PKEY_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK 214 +#define PIDX_PKEY_PARAM_FIPS_KEY_CHECK 215 +#define PIDX_PKEY_PARAM_FIPS_SIGN_CHECK 216 +#define PIDX_PKEY_PARAM_GROUP_NAME 217 +#define PIDX_PKEY_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_PKEY_PARAM_MANDATORY_DIGEST 218 +#define PIDX_PKEY_PARAM_MASKGENFUNC 219 +#define PIDX_PKEY_PARAM_MAX_SIZE 220 +#define PIDX_PKEY_PARAM_MGF1_DIGEST 221 +#define PIDX_PKEY_PARAM_MGF1_PROPERTIES 222 +#define PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS 223 +#define PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS 224 +#define PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED 225 +#define PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED 226 +#define PIDX_PKEY_PARAM_ML_DSA_SEED 140 +#define PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE 227 +#define PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS 228 +#define PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS 229 +#define PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED 230 +#define PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED 231 +#define PIDX_PKEY_PARAM_ML_KEM_SEED 140 +#define PIDX_PKEY_PARAM_PAD_MODE 232 +#define PIDX_PKEY_PARAM_PRIV_KEY 233 +#define PIDX_PKEY_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_PUB_KEY 234 +#define PIDX_PKEY_PARAM_RSA_BITS PIDX_PKEY_PARAM_BITS +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT 235 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT1 236 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT2 237 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT3 238 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT4 239 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT5 240 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT6 241 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT7 242 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT8 243 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT9 244 +#define PIDX_PKEY_PARAM_RSA_D 245 +#define PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ 246 +#define PIDX_PKEY_PARAM_RSA_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_RSA_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_RSA_E 247 +#define PIDX_PKEY_PARAM_RSA_EXPONENT 248 +#define PIDX_PKEY_PARAM_RSA_EXPONENT1 249 +#define PIDX_PKEY_PARAM_RSA_EXPONENT10 250 +#define PIDX_PKEY_PARAM_RSA_EXPONENT2 251 +#define PIDX_PKEY_PARAM_RSA_EXPONENT3 252 +#define PIDX_PKEY_PARAM_RSA_EXPONENT4 253 +#define PIDX_PKEY_PARAM_RSA_EXPONENT5 254 +#define PIDX_PKEY_PARAM_RSA_EXPONENT6 255 +#define PIDX_PKEY_PARAM_RSA_EXPONENT7 256 +#define PIDX_PKEY_PARAM_RSA_EXPONENT8 257 +#define PIDX_PKEY_PARAM_RSA_EXPONENT9 258 +#define PIDX_PKEY_PARAM_RSA_FACTOR 259 +#define PIDX_PKEY_PARAM_RSA_FACTOR1 260 +#define PIDX_PKEY_PARAM_RSA_FACTOR10 261 +#define PIDX_PKEY_PARAM_RSA_FACTOR2 262 +#define PIDX_PKEY_PARAM_RSA_FACTOR3 263 +#define PIDX_PKEY_PARAM_RSA_FACTOR4 264 +#define PIDX_PKEY_PARAM_RSA_FACTOR5 265 +#define PIDX_PKEY_PARAM_RSA_FACTOR6 266 +#define PIDX_PKEY_PARAM_RSA_FACTOR7 267 +#define PIDX_PKEY_PARAM_RSA_FACTOR8 268 +#define PIDX_PKEY_PARAM_RSA_FACTOR9 269 +#define PIDX_PKEY_PARAM_RSA_MASKGENFUNC PIDX_PKEY_PARAM_MASKGENFUNC +#define PIDX_PKEY_PARAM_RSA_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_PKEY_PARAM_RSA_N 137 +#define PIDX_PKEY_PARAM_RSA_PRIMES 270 +#define PIDX_PKEY_PARAM_RSA_PSS_SALTLEN 271 +#define PIDX_PKEY_PARAM_RSA_TEST_P1 272 +#define PIDX_PKEY_PARAM_RSA_TEST_P2 273 +#define PIDX_PKEY_PARAM_RSA_TEST_Q1 274 +#define PIDX_PKEY_PARAM_RSA_TEST_Q2 275 +#define PIDX_PKEY_PARAM_RSA_TEST_XP 276 +#define PIDX_PKEY_PARAM_RSA_TEST_XP1 277 +#define PIDX_PKEY_PARAM_RSA_TEST_XP2 278 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ 279 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ1 280 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ2 281 +#define PIDX_PKEY_PARAM_SECURITY_BITS 282 +#define PIDX_PKEY_PARAM_SLH_DSA_SEED 140 +#define PIDX_PKEY_PARAM_USE_COFACTOR_ECDH PIDX_PKEY_PARAM_USE_COFACTOR_FLAG +#define PIDX_PKEY_PARAM_USE_COFACTOR_FLAG 283 +#define PIDX_PROV_PARAM_BUILDINFO 284 +#define PIDX_PROV_PARAM_CORE_MODULE_FILENAME 285 +#define PIDX_PROV_PARAM_CORE_PROV_NAME 286 +#define PIDX_PROV_PARAM_CORE_VERSION 287 +#define PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST 288 +#define PIDX_PROV_PARAM_DSA_SIGN_DISABLED 289 +#define PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK 290 +#define PIDX_PROV_PARAM_HKDF_DIGEST_CHECK 291 +#define PIDX_PROV_PARAM_HKDF_KEY_CHECK 292 +#define PIDX_PROV_PARAM_HMAC_KEY_CHECK 293 +#define PIDX_PROV_PARAM_KBKDF_KEY_CHECK 294 +#define PIDX_PROV_PARAM_KMAC_KEY_CHECK 295 +#define PIDX_PROV_PARAM_NAME 296 +#define PIDX_PROV_PARAM_NO_SHORT_MAC 297 +#define PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK 298 +#define PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED 299 +#define PIDX_PROV_PARAM_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED 301 +#define PIDX_PROV_PARAM_SECURITY_CHECKS 302 +#define PIDX_PROV_PARAM_SELF_TEST_DESC 303 +#define PIDX_PROV_PARAM_SELF_TEST_PHASE 304 +#define PIDX_PROV_PARAM_SELF_TEST_TYPE 305 +#define PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK 306 +#define PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK 307 +#define PIDX_PROV_PARAM_SSHKDF_KEY_CHECK 308 +#define PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK 309 +#define PIDX_PROV_PARAM_SSKDF_KEY_CHECK 310 +#define PIDX_PROV_PARAM_STATUS 311 +#define PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED 312 +#define PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK 313 +#define PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK 314 +#define PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK 315 +#define PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK 316 +#define PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK 317 +#define PIDX_PROV_PARAM_VERSION 115 +#define PIDX_PROV_PARAM_X942KDF_KEY_CHECK 318 +#define PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK 319 +#define PIDX_PROV_PARAM_X963KDF_KEY_CHECK 320 +#define PIDX_RAND_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_RAND_PARAM_GENERATE 321 +#define PIDX_RAND_PARAM_MAX_REQUEST 322 +#define PIDX_RAND_PARAM_STATE 323 +#define PIDX_RAND_PARAM_STRENGTH 324 +#define PIDX_RAND_PARAM_TEST_ENTROPY 325 +#define PIDX_RAND_PARAM_TEST_NONCE 326 +#define PIDX_SIGNATURE_PARAM_ADD_RANDOM 327 +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID PIDX_PKEY_PARAM_ALGORITHM_ID +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_SIGNATURE_PARAM_CONTEXT_STRING 328 +#define PIDX_SIGNATURE_PARAM_DETERMINISTIC 329 +#define PIDX_SIGNATURE_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_SIGNATURE_PARAM_DIGEST_SIZE PIDX_PKEY_PARAM_DIGEST_SIZE +#define PIDX_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_SIGNATURE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_CHECK PIDX_PKEY_PARAM_FIPS_SIGN_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK 330 +#define PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE 331 +#define PIDX_SIGNATURE_PARAM_INSTANCE 332 +#define PIDX_SIGNATURE_PARAM_KAT 333 +#define PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING 334 +#define PIDX_SIGNATURE_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_SIGNATURE_PARAM_MGF1_PROPERTIES PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_SIGNATURE_PARAM_MU 335 +#define PIDX_SIGNATURE_PARAM_NONCE_TYPE 336 +#define PIDX_SIGNATURE_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_SIGNATURE_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_SIGNATURE_PARAM_PSS_SALTLEN 271 +#define PIDX_SIGNATURE_PARAM_SIGNATURE 337 +#define PIDX_SIGNATURE_PARAM_TEST_ENTROPY 338 +#define PIDX_SKEY_PARAM_KEY_LENGTH 339 +#define PIDX_SKEY_PARAM_RAW_BYTES 340 +#define PIDX_STORE_PARAM_ALIAS 341 +#define PIDX_STORE_PARAM_DIGEST 3 +#define PIDX_STORE_PARAM_EXPECT 342 +#define PIDX_STORE_PARAM_FINGERPRINT 343 +#define PIDX_STORE_PARAM_INPUT_TYPE 174 +#define PIDX_STORE_PARAM_ISSUER 296 +#define PIDX_STORE_PARAM_PROPERTIES 7 +#define PIDX_STORE_PARAM_SERIAL 344 +#define PIDX_STORE_PARAM_SUBJECT 345 diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/asn1.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/asn1.h index 21ff58e3d803d4..15e9e44674b0f3 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/asn1.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/asn1.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/asn1.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -21,6 +21,9 @@ # define HEADER_ASN1_H # endif +# ifndef OPENSSL_NO_STDIO +# include +# endif # include # include # include @@ -50,14 +53,14 @@ extern "C" { # define V_ASN1_PRIMITIVE_TAG 0x1f # define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG -# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ -# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ -# define V_ASN1_ANY -4/* used in ASN1 template code */ +# define V_ASN1_APP_CHOOSE -2 /* let the recipient choose */ +# define V_ASN1_OTHER -3 /* used in ASN1_TYPE */ +# define V_ASN1_ANY -4 /* used in ASN1 template code */ # define V_ASN1_UNDEF -1 /* ASN.1 tag values */ # define V_ASN1_EOC 0 -# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_BOOLEAN 1 # define V_ASN1_INTEGER 2 # define V_ASN1_BIT_STRING 3 # define V_ASN1_OCTET_STRING 4 @@ -70,19 +73,19 @@ extern "C" { # define V_ASN1_UTF8STRING 12 # define V_ASN1_SEQUENCE 16 # define V_ASN1_SET 17 -# define V_ASN1_NUMERICSTRING 18 /**/ +# define V_ASN1_NUMERICSTRING 18 # define V_ASN1_PRINTABLESTRING 19 # define V_ASN1_T61STRING 20 -# define V_ASN1_TELETEXSTRING 20/* alias */ -# define V_ASN1_VIDEOTEXSTRING 21 /**/ +# define V_ASN1_TELETEXSTRING 20 /* alias */ +# define V_ASN1_VIDEOTEXSTRING 21 # define V_ASN1_IA5STRING 22 # define V_ASN1_UTCTIME 23 -# define V_ASN1_GENERALIZEDTIME 24 /**/ -# define V_ASN1_GRAPHICSTRING 25 /**/ -# define V_ASN1_ISO64STRING 26 /**/ -# define V_ASN1_VISIBLESTRING 26/* alias */ -# define V_ASN1_GENERALSTRING 27 /**/ -# define V_ASN1_UNIVERSALSTRING 28 /**/ +# define V_ASN1_GENERALIZEDTIME 24 +# define V_ASN1_GRAPHICSTRING 25 +# define V_ASN1_ISO64STRING 26 +# define V_ASN1_VISIBLESTRING 26 /* alias */ +# define V_ASN1_GENERALSTRING 27 +# define V_ASN1_UNIVERSALSTRING 28 # define V_ASN1_BMPSTRING 30 /* @@ -155,7 +158,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) -# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +# define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */ /* * This indicates that the ASN1_STRING is not a real value but just a place * holder for the location where indefinite length constructed data should be @@ -275,7 +278,7 @@ typedef struct ASN1_TLC_st ASN1_TLC; /* This is just an opaque pointer */ typedef struct ASN1_VALUE_st ASN1_VALUE; -/* Declare ASN1 functions: the implement macro in in asn1t.h */ +/* Declare ASN1 functions: the implement macro is in asn1t.h */ /* * The mysterious 'extern' that's passed to some macros is innocuous, @@ -368,6 +371,7 @@ typedef struct ASN1_VALUE_st ASN1_VALUE; typedef void *d2i_of_void(void **, const unsigned char **, long); typedef int i2d_of_void(const void *, unsigned char **); +typedef int OSSL_i2d_of_void_ctx(const void *, unsigned char **, void *vctx); /*- * The following macros and typedefs allow an ASN1_ITEM @@ -996,6 +1000,8 @@ int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, unsigned char *data, int max_len); void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/bio.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/bio.h index f9aa74731c833c..e02f867beb0ec0 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/bio.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/bio.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/bio.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -67,8 +67,13 @@ extern "C" { # define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) # endif # define BIO_TYPE_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_PAIR (26|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_MEM (27|BIO_TYPE_SOURCE_SINK) +/* Custom type starting index returned by BIO_get_new_index() */ #define BIO_TYPE_START 128 +/* Custom type maximum index that can be returned by BIO_get_new_index() */ +#define BIO_TYPE_MASK 0xFF /* * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. @@ -171,6 +176,31 @@ extern "C" { # define BIO_CTRL_SET_INDENT 80 # define BIO_CTRL_GET_INDENT 81 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +# define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +# define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +# define BIO_CTRL_DGRAM_GET_CAPS 86 +# define BIO_CTRL_DGRAM_SET_CAPS 87 +# define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +# define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +# define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +# define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +# define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 +# define BIO_CTRL_DGRAM_SET0_LOCAL_ADDR 94 + +# define BIO_DGRAM_CAP_NONE 0U +# define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +# define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +# define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +# define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + # ifndef OPENSSL_NO_KTLS # define BIO_get_ktls_send(b) \ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) @@ -208,7 +238,7 @@ extern "C" { # define BIO_FLAGS_NONCLEAR_RST 0x400 # define BIO_FLAGS_IN_EOF 0x800 -/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */ +/* the BIO FLAGS values 0x1000 to 0x8000 are reserved for internal KTLS flags */ typedef union bio_addr_st BIO_ADDR; typedef struct bio_addrinfo_st BIO_ADDRINFO; @@ -256,12 +286,14 @@ void BIO_clear_flags(BIO *b, int flags); # define BIO_RR_ACCEPT 0x03 /* These are passed by the BIO callback */ -# define BIO_CB_FREE 0x01 -# define BIO_CB_READ 0x02 -# define BIO_CB_WRITE 0x03 -# define BIO_CB_PUTS 0x04 -# define BIO_CB_GETS 0x05 -# define BIO_CB_CTRL 0x06 +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 +# define BIO_CB_RECVMMSG 0x07 +# define BIO_CB_SENDMMSG 0x08 /* * The callback is called before and after the underling operation, The @@ -362,6 +394,36 @@ struct bio_dgram_sctp_prinfo { }; # endif +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_TYPE_SSL 2 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + SSL *ssl; + } value; +} BIO_POLL_DESCRIPTOR; + /* * #define BIO_CONN_get_param_hostname BIO_ctrl */ @@ -428,10 +490,17 @@ struct bio_dgram_sctp_prinfo { # define BIO_C_SET_CONNECT_MODE 155 +# define BIO_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +# define BIO_C_SET_SOCK_TYPE 157 +# define BIO_C_GET_SOCK_TYPE 158 +# define BIO_C_GET_DGRAM_BIO 159 + # define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) # define BIO_get_app_data(s) BIO_get_ex_data(s,0) -# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_tfo(b,n) BIO_ctrl(b,BIO_C_SET_TFO,(n),NULL) # ifndef OPENSSL_NO_SOCK /* IP families we support, for BIO_s_connect() and BIO_s_accept() */ @@ -452,7 +521,11 @@ struct bio_dgram_sctp_prinfo { # define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) # define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) # define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_get_conn_mode(b) BIO_ctrl(b,BIO_C_GET_CONNECT,4,NULL) # define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) +# define BIO_set_sock_type(b,t) BIO_ctrl(b,BIO_C_SET_SOCK_TYPE,(t),NULL) +# define BIO_get_sock_type(b) BIO_ctrl(b,BIO_C_GET_SOCK_TYPE,0,NULL) +# define BIO_get0_dgram_bio(b, p) BIO_ctrl(b,BIO_C_GET_DGRAM_BIO,0,(void *)(BIO **)(p)) /* BIO_s_accept() */ # define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ @@ -469,6 +542,7 @@ struct bio_dgram_sctp_prinfo { (char *)(bio)) # define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) # define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) +# define BIO_set_tfo_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,5,(n)?(void *)"a":NULL) /* Aliases kept for backward compatibility */ # define BIO_BIND_NORMAL 0 @@ -596,8 +670,32 @@ int BIO_ctrl_reset_read_request(BIO *b); (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) # define BIO_dgram_set_peer(b,peer) \ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_detect_peer_addr(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) # define BIO_dgram_get_mtu_overhead(b) \ (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +# define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +# define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +# define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +# define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +# define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +# define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +# define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +# define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +# define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +# define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) +# define BIO_dgram_set0_local_addr(b, addr) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET0_LOCAL_ADDR, 0, (addr)) /* ctrl macros for BIO_f_prefix */ # define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) @@ -640,10 +738,18 @@ void BIO_vfree(BIO *a); int BIO_up_ref(BIO *a); int BIO_read(BIO *b, void *data, int dlen); int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); int BIO_gets(BIO *bp, char *buf, int size); int BIO_get_line(BIO *bio, char *buf, int size); int BIO_write(BIO *b, const void *data, int dlen); int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); int BIO_puts(BIO *bp, const char *buf); int BIO_indent(BIO *b, int indent, int max); long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); @@ -667,6 +773,9 @@ int BIO_nwrite0(BIO *bio, char **buf); int BIO_nwrite(BIO *bio, char **buf, int num); const BIO_METHOD *BIO_s_mem(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +# endif const BIO_METHOD *BIO_s_secmem(void); BIO *BIO_new_mem_buf(const void *buf, int len); # ifndef OPENSSL_NO_SOCK @@ -686,6 +795,7 @@ const BIO_METHOD *BIO_f_nbio_test(void); const BIO_METHOD *BIO_f_prefix(void); const BIO_METHOD *BIO_s_core(void); # ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_pair(void); const BIO_METHOD *BIO_s_datagram(void); int BIO_dgram_non_fatal_error(int error); BIO *BIO_new_dgram(int fd, int close_flag); @@ -704,6 +814,7 @@ int BIO_dgram_sctp_msg_waiting(BIO *b); # ifndef OPENSSL_NO_SOCK int BIO_sock_should_retry(int i); int BIO_sock_non_fatal_error(int error); +int BIO_err_is_non_fatal(unsigned int errcode); int BIO_socket_wait(int fd, int for_read, time_t max_time); # endif int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); @@ -726,6 +837,8 @@ int BIO_hex_string(BIO *out, int indent, int width, const void *data, # ifndef OPENSSL_NO_SOCK BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, const void *where, size_t wherelen, unsigned short port); void BIO_ADDR_free(BIO_ADDR *); @@ -788,6 +901,7 @@ int BIO_sock_info(int sock, # define BIO_SOCK_KEEPALIVE 0x04 # define BIO_SOCK_NONBLOCK 0x08 # define BIO_SOCK_NODELAY 0x10 +# define BIO_SOCK_TFO 0x20 int BIO_socket(int domain, int socktype, int protocol, int options); int BIO_connect(int sock, const BIO_ADDR *addr, int options); @@ -805,6 +919,11 @@ BIO *BIO_new_fd(int fd, int close_flag); int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, BIO **bio2, size_t writebuf2); +# ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +# endif + /* * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default @@ -849,38 +968,54 @@ ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); BIO_METHOD *BIO_meth_new(int type, const char *name); void BIO_meth_free(BIO_METHOD *biom); -int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int); -int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t, - size_t *); int BIO_meth_set_write(BIO_METHOD *biom, int (*write) (BIO *, const char *, int)); int BIO_meth_set_write_ex(BIO_METHOD *biom, int (*bwrite) (BIO *, const char *, size_t, size_t *)); -int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); -int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); +int BIO_meth_set_sendmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_read(BIO_METHOD *biom, int (*read) (BIO *, char *, int)); int BIO_meth_set_read_ex(BIO_METHOD *biom, int (*bread) (BIO *, char *, size_t, size_t *)); -int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +int BIO_meth_set_recvmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_puts(BIO_METHOD *biom, int (*puts) (BIO *, const char *)); -int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); int BIO_meth_set_gets(BIO_METHOD *biom, int (*ossl_gets) (BIO *, char *, int)); -long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); int BIO_meth_set_ctrl(BIO_METHOD *biom, long (*ctrl) (BIO *, int, long, void *)); -int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); -int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); -long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) - (BIO *, int, BIO_info_cb *); int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, long (*callback_ctrl) (BIO *, int, BIO_info_cb *)); - +# ifndef OPENSSL_NO_DEPRECATED_3_5 +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, + int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, + long, void *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) (BIO *, int, + BIO_info_cb *); +# endif # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/cmp.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/cmp.h index 49825570d8c303..05aed3029d594c 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -35,7 +35,9 @@ extern "C" { # endif -# define OSSL_CMP_PVNO 2 +# define OSSL_CMP_PVNO_2 2 +# define OSSL_CMP_PVNO_3 3 +# define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ /*- * PKIFailureInfo ::= BIT STRING { @@ -137,7 +139,6 @@ extern "C" { # if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX # error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int # endif - typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) @@ -203,8 +204,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_PKISTATUS_revocationWarning 4 # define OSSL_CMP_PKISTATUS_revocationNotification 5 # define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 - typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; + DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) # define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 @@ -274,6 +275,46 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) #define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) #define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) + +typedef struct ossl_cmp_crlstatus_st OSSL_CMP_CRLSTATUS; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS) +#define sk_OSSL_CMP_CRLSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_value(sk, idx) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CRLSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CRLSTATUS_new_null() ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CRLSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CRLSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CRLSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_delete(sk, i) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CRLSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_pop(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_shift(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CRLSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CRLSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CRLSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CRLSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CRLSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) + + +typedef OSSL_CRMF_ATTRIBUTETYPEANDVALUE OSSL_CMP_ATAV; +# define OSSL_CMP_ATAV_free OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free +typedef STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) OSSL_CMP_ATAVS; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_ATAVS) +# define stack_st_OSSL_CMP_ATAV stack_st_OSSL_CRMF_ATTRIBUTETYPEANDVALUE +# define sk_OSSL_CMP_ATAV_num sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num +# define sk_OSSL_CMP_ATAV_value sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value +# define sk_OSSL_CMP_ATAV_push sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push +# define sk_OSSL_CMP_ATAV_pop_free sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free + typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT; typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI; DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI) @@ -375,21 +416,75 @@ void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type, ASN1_TYPE *value); ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav); ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); -int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p, +int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **sk_p, OSSL_CMP_ITAV *itav); void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new0_certProfile(STACK_OF(ASN1_UTF8STRING) + *certProfile); +int OSSL_CMP_ITAV_get0_certProfile(const OSSL_CMP_ITAV *itav, + STACK_OF(ASN1_UTF8STRING) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_create(const X509_CRL *crl, + const X509 *cert, int only_DN); +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_new1(const DIST_POINT_NAME *dpn, + const GENERAL_NAMES *issuer, + const ASN1_TIME *thisUpdate); +int OSSL_CMP_CRLSTATUS_get0(const OSSL_CMP_CRLSTATUS *crlstatus, + DIST_POINT_NAME **dpn, GENERAL_NAMES **issuer, + ASN1_TIME **thisUpdate); +void OSSL_CMP_CRLSTATUS_free(OSSL_CMP_CRLSTATUS *crlstatus); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_crlStatusList(STACK_OF(OSSL_CMP_CRLSTATUS) *crlStatusList); +int OSSL_CMP_ITAV_get0_crlStatusList(const OSSL_CMP_ITAV *itav, + STACK_OF(OSSL_CMP_CRLSTATUS) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_crls(const X509_CRL *crls); +int OSSL_CMP_ITAV_get0_crls(const OSSL_CMP_ITAV *it, STACK_OF(X509_CRL) **out); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_certReqTemplate(OSSL_CRMF_CERTTEMPLATE *certTemplate, + OSSL_CMP_ATAVS *keySpec); +int OSSL_CMP_ITAV_get1_certReqTemplate(const OSSL_CMP_ITAV *itav, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +OSSL_CMP_ATAV *OSSL_CMP_ATAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ATAV_set0(OSSL_CMP_ATAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ATAV_get0_type(const OSSL_CMP_ATAV *itav); +ASN1_TYPE *OSSL_CMP_ATAV_get0_value(const OSSL_CMP_ATAV *itav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_algId(const X509_ALGOR *alg); +X509_ALGOR *OSSL_CMP_ATAV_get0_algId(const OSSL_CMP_ATAV *atav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_rsaKeyLen(int len); +int OSSL_CMP_ATAV_get_rsaKeyLen(const OSSL_CMP_ATAV *atav); +int OSSL_CMP_ATAV_push1(OSSL_CMP_ATAVS **sk_p, const OSSL_CMP_ATAV *atav); + void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); /* from cmp_ctx.c */ OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const OSSL_CMP_CTX *ctx); /* CMP general options: */ # define OSSL_CMP_OPT_LOG_VERBOSITY 0 /* CMP transfer options: */ -# define OSSL_CMP_OPT_KEEP_ALIVE 10 -# define OSSL_CMP_OPT_MSG_TIMEOUT 11 +# define OSSL_CMP_OPT_KEEP_ALIVE 10 +# define OSSL_CMP_OPT_MSG_TIMEOUT 11 # define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 +# define OSSL_CMP_OPT_USE_TLS 13 /* CMP request options: */ # define OSSL_CMP_OPT_VALIDITY_DAYS 20 # define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 @@ -407,6 +502,7 @@ int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); # define OSSL_CMP_OPT_DIGEST_ALGNID 34 # define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35 # define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36 +# define OSSL_CMP_OPT_NO_CACHE_EXTRACERTS 37 int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val); int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt); /* CMP-specific callback for logging and outputting the error queue: */ @@ -420,9 +516,11 @@ int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); +# ifndef OPENSSL_NO_HTTP int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); +# endif typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); @@ -432,7 +530,9 @@ void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); +# define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +# define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); /* client authentication: */ @@ -448,12 +548,15 @@ int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx, int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); int OSSL_CMP_CTX_reset_geninfo_ITAVs(OSSL_CMP_CTX *ctx); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_CTX_get0_geninfo_ITAVs(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, STACK_OF(X509) *extraCertsOut); /* certificate template: */ int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set1_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, const GENERAL_NAME *name); @@ -477,6 +580,7 @@ int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); # define OSSL_CMP_PKISI_BUFLEN 1024 +X509 *OSSL_CMP_CTX_get0_validatedSrvCert(const OSSL_CMP_CTX *ctx); X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); @@ -498,10 +602,13 @@ OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const OSSL_CMP_PKIHEADER *hdr); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_HDR_get0_geninfo_ITAVs(const OSSL_CMP_PKIHEADER *hdr); /* from cmp_msg.c */ OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg); +X509_PUBKEY *OSSL_CMP_MSG_get0_certreq_publickey(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_recipNonce(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid); @@ -517,8 +624,10 @@ int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, X509_STORE *trusted_store, X509 *cert); /* from cmp_http.c */ +# ifndef OPENSSL_NO_HTTP OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); +# endif /* from cmp_server.c */ typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; @@ -561,6 +670,13 @@ int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx, OSSL_CMP_SRV_error_cb_t process_error, OSSL_CMP_SRV_certConf_cb_t process_certConf, OSSL_CMP_SRV_pollReq_cb_t process_pollReq); +typedef int (*OSSL_CMP_SRV_delayed_delivery_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +typedef int (*OSSL_CMP_SRV_clean_transaction_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_SRV_CTX_init_trans(OSSL_CMP_SRV_CTX *srv_ctx, + OSSL_CMP_SRV_delayed_delivery_cb_t delay, + OSSL_CMP_SRV_clean_transaction_cb_t clean); OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx, @@ -577,6 +693,8 @@ X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type, # define OSSL_CMP_CR 2 # define OSSL_CMP_P10CR 4 # define OSSL_CMP_KUR 7 +# define OSSL_CMP_GENM 21 +# define OSSL_CMP_ERROR 23 # define OSSL_CMP_exec_IR_ses(ctx) \ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL) # define OSSL_CMP_exec_CR_ses(ctx) \ @@ -590,6 +708,18 @@ int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); +int OSSL_CMP_get1_crlUpdate(OSSL_CMP_CTX *ctx, const X509 *crlcert, + const X509_CRL *last_crl, + X509_CRL **crl); +int OSSL_CMP_get1_certReqTemplate(OSSL_CMP_CTX *ctx, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/cms.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/cms.h index 3b453e6a2187a2..63afab563557b0 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/cms.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/cms.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cms.h.in * - * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2008-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -31,8 +31,10 @@ extern "C" { # endif +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; typedef struct CMS_ContentInfo_st CMS_ContentInfo; typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; typedef struct CMS_CertificateChoices CMS_CertificateChoices; typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; @@ -147,10 +149,14 @@ SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, #define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) +DECLARE_ASN1_DUP_FUNCTION(CMS_EnvelopedData) + CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq); # define CMS_SIGNERINFO_ISSUER_SERIAL 0 @@ -190,6 +196,7 @@ CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq) # define CMS_ASCIICRLF 0x80000 # define CMS_CADES 0x100000 # define CMS_USE_ORIGINATOR_KEYID 0x200000 +# define CMS_NO_SIGNING_TIME 0x400000 const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms); @@ -217,13 +224,16 @@ int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, unsigned int flags); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, BIO *dcont, + unsigned int flags); CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, unsigned int flags); CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, @@ -233,27 +243,26 @@ CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, unsigned int flags); CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, const unsigned char *key, size_t keylen, BIO *dcont, BIO *out, unsigned int flags); - CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags); CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, @@ -272,7 +281,7 @@ CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags); CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, BIO *dcont, BIO *out, unsigned int flags); @@ -291,12 +300,16 @@ int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo * -CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx, +CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags); @@ -385,6 +398,11 @@ ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); int CMS_SignerInfo_sign(CMS_SignerInfo *si); int CMS_SignerInfo_verify(CMS_SignerInfo *si); int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, @@ -441,7 +459,7 @@ CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( unsigned char *id, int idlen, int allorfirst, STACK_OF(GENERAL_NAMES) *receiptList, STACK_OF(GENERAL_NAMES) *receiptsTo, - OSSL_LIB_CTX *ctx); + OSSL_LIB_CTX *libctx); int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/comp.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/comp.h new file mode 100644 index 00000000000000..90e39511fe8d28 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/comp.h @@ -0,0 +1,98 @@ +/* + * Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_COMP_H +# define OPENSSL_COMP_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_COMP_H +# endif + +# include + +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + + +# ifndef OPENSSL_NO_COMP + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX* comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); + +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); + +COMP_METHOD *COMP_zlib(void); +COMP_METHOD *COMP_zlib_oneshot(void); +COMP_METHOD *COMP_brotli(void); +COMP_METHOD *COMP_brotli_oneshot(void); +COMP_METHOD *COMP_zstd(void); +COMP_METHOD *COMP_zstd_oneshot(void); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define COMP_zlib_cleanup() while(0) continue +# endif + +# ifdef OPENSSL_BIO_H +const BIO_METHOD *BIO_f_zlib(void); +const BIO_METHOD *BIO_f_brotli(void); +const BIO_METHOD *BIO_f_zstd(void); +# endif + +# endif + +typedef struct ssl_comp_st SSL_COMP; + +SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) +#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) +#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) +#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) +#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) +#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) +#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) +#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) +#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) +#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) +#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) +#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) + + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/conf.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/conf.h index 44989929f6c84a..38576290bf641b 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/conf.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/conf.h @@ -27,6 +27,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -65,7 +68,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) #define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) #define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); -#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp))) +#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp)), lh_CONF_VALUE_hash_thunk, lh_CONF_VALUE_comp_thunk, lh_CONF_VALUE_doall_thunk, lh_CONF_VALUE_doall_arg_thunk)) #define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/configuration.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/configuration.h index e18969acd408c4..494098a6937b85 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/configuration.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/configuration.h @@ -27,7 +27,7 @@ extern "C" { * OpenSSL was configured with the following options: */ -# define OPENSSL_CONFIGURED_API 30000 +# define OPENSSL_CONFIGURED_API 30500 # ifndef OPENSSL_RAND_SEED_OS # define OPENSSL_RAND_SEED_OS # endif @@ -40,6 +40,12 @@ extern "C" { # ifndef OPENSSL_NO_ASAN # define OPENSSL_NO_ASAN # endif +# ifndef OPENSSL_NO_BROTLI +# define OPENSSL_NO_BROTLI +# endif +# ifndef OPENSSL_NO_BROTLI_DYNAMIC +# define OPENSSL_NO_BROTLI_DYNAMIC +# endif # ifndef OPENSSL_NO_COMP # define OPENSSL_NO_COMP # endif @@ -49,6 +55,9 @@ extern "C" { # ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # endif +# ifndef OPENSSL_NO_DEMOS +# define OPENSSL_NO_DEMOS +# endif # ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 # define OPENSSL_NO_EC_NISTP_64_GCC_128 # endif @@ -58,12 +67,24 @@ extern "C" { # ifndef OPENSSL_NO_EXTERNAL_TESTS # define OPENSSL_NO_EXTERNAL_TESTS # endif +# ifndef OPENSSL_NO_FIPS_JITTER +# define OPENSSL_NO_FIPS_JITTER +# endif # ifndef OPENSSL_NO_FUZZ_AFL # define OPENSSL_NO_FUZZ_AFL # endif # ifndef OPENSSL_NO_FUZZ_LIBFUZZER # define OPENSSL_NO_FUZZ_LIBFUZZER # endif +# ifndef OPENSSL_NO_H3DEMO +# define OPENSSL_NO_H3DEMO +# endif +# ifndef OPENSSL_NO_HQINTEROP +# define OPENSSL_NO_HQINTEROP +# endif +# ifndef OPENSSL_NO_JITTER +# define OPENSSL_NO_JITTER +# endif # ifndef OPENSSL_NO_KTLS # define OPENSSL_NO_KTLS # endif @@ -76,6 +97,9 @@ extern "C" { # ifndef OPENSSL_NO_MSAN # define OPENSSL_NO_MSAN # endif +# ifndef OPENSSL_NO_PIE +# define OPENSSL_NO_PIE +# endif # ifndef OPENSSL_NO_RC5 # define OPENSSL_NO_RC5 # endif @@ -88,6 +112,12 @@ extern "C" { # ifndef OPENSSL_NO_SSL3_METHOD # define OPENSSL_NO_SSL3_METHOD # endif +# ifndef OPENSSL_NO_SSLKEYLOG +# define OPENSSL_NO_SSLKEYLOG +# endif +# ifndef OPENSSL_NO_TFO +# define OPENSSL_NO_TFO +# endif # ifndef OPENSSL_NO_TRACE # define OPENSSL_NO_TRACE # endif @@ -103,6 +133,21 @@ extern "C" { # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS # define OPENSSL_NO_WEAK_SSL_CIPHERS # endif +# ifndef OPENSSL_NO_WINSTORE +# define OPENSSL_NO_WINSTORE +# endif +# ifndef OPENSSL_NO_ZLIB +# define OPENSSL_NO_ZLIB +# endif +# ifndef OPENSSL_NO_ZLIB_DYNAMIC +# define OPENSSL_NO_ZLIB_DYNAMIC +# endif +# ifndef OPENSSL_NO_ZSTD +# define OPENSSL_NO_ZSTD +# endif +# ifndef OPENSSL_NO_ZSTD_DYNAMIC +# define OPENSSL_NO_ZSTD_DYNAMIC +# endif # ifndef OPENSSL_NO_DYNAMIC_ENGINE # define OPENSSL_NO_DYNAMIC_ENGINE # endif @@ -124,6 +169,12 @@ extern "C" { # define RC4_INT unsigned int +# if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +# define OPENSSL_NO_COMP_ALG +# else +# undef OPENSSL_NO_COMP_ALG +# endif + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/core_names.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/core_names.h new file mode 100644 index 00000000000000..e93e79a52bc910 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/core_names.h @@ -0,0 +1,575 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/core_names.h.in + * + * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#ifndef OPENSSL_CORE_NAMES_H +# define OPENSSL_CORE_NAMES_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +/* OSSL_CIPHER_PARAM_CTS_MODE Values */ +# define OSSL_CIPHER_CTS_MODE_CS1 "CS1" +# define OSSL_CIPHER_CTS_MODE_CS2 "CS2" +# define OSSL_CIPHER_CTS_MODE_CS3 "CS3" + +/* Known CIPHER names (not a complete list) */ +# define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" + +/* Known DIGEST names (not a complete list) */ +# define OSSL_DIGEST_NAME_MD5 "MD5" +# define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" +# define OSSL_DIGEST_NAME_SHA1 "SHA1" +# define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" +# define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" +# define OSSL_DIGEST_NAME_SHA2_256_192 "SHA2-256/192" +# define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" +# define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" +# define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" +# define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" +# define OSSL_DIGEST_NAME_MD2 "MD2" +# define OSSL_DIGEST_NAME_MD4 "MD4" +# define OSSL_DIGEST_NAME_MDC2 "MDC2" +# define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" +# define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" +# define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" +# define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" +# define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" +# define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" +# define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" +# define OSSL_DIGEST_NAME_SM3 "SM3" + +/* Known MAC names */ +# define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" +# define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" +# define OSSL_MAC_NAME_CMAC "CMAC" +# define OSSL_MAC_NAME_GMAC "GMAC" +# define OSSL_MAC_NAME_HMAC "HMAC" +# define OSSL_MAC_NAME_KMAC128 "KMAC128" +# define OSSL_MAC_NAME_KMAC256 "KMAC256" +# define OSSL_MAC_NAME_POLY1305 "POLY1305" +# define OSSL_MAC_NAME_SIPHASH "SIPHASH" + +/* Known KDF names */ +# define OSSL_KDF_NAME_HKDF "HKDF" +# define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" +# define OSSL_KDF_NAME_PBKDF1 "PBKDF1" +# define OSSL_KDF_NAME_PBKDF2 "PBKDF2" +# define OSSL_KDF_NAME_SCRYPT "SCRYPT" +# define OSSL_KDF_NAME_SSHKDF "SSHKDF" +# define OSSL_KDF_NAME_SSKDF "SSKDF" +# define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" +# define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" +# define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" +# define OSSL_KDF_NAME_X963KDF "X963KDF" +# define OSSL_KDF_NAME_KBKDF "KBKDF" +# define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" +# define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" + +/* RSA padding modes */ +# define OSSL_PKEY_RSA_PAD_MODE_NONE "none" +# define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" +# define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" +# define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" +# define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" + +/* RSA pss padding salt length */ +# define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" + +/* OSSL_PKEY_PARAM_EC_ENCODING values */ +# define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" +# define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" + +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" + +# define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" + +/* PROV_SKEY well known key types */ +# define OSSL_SKEY_TYPE_GENERIC "GENERIC-SECRET" +# define OSSL_SKEY_TYPE_AES "AES" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" + +/* Provider configuration variables */ +#define OSSL_PKEY_RETAIN_SEED "pkey_retain_seed" + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +# define OSSL_ALG_PARAM_ALGORITHM_ID "algorithm-id" +# define OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS "algorithm-id-params" +# define OSSL_ALG_PARAM_CIPHER "cipher" +# define OSSL_ALG_PARAM_DIGEST "digest" +# define OSSL_ALG_PARAM_ENGINE "engine" +# define OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR "fips-indicator" +# define OSSL_ALG_PARAM_MAC "mac" +# define OSSL_ALG_PARAM_PROPERTIES "properties" +# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +# define OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props" +# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" +# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name" +# define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal" +# define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name" +# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid" +# define OSSL_CIPHER_PARAM_AEAD "aead" +# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +# define OSSL_CIPHER_PARAM_AEAD_IV_GENERATED "iv-generated" +# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" +# define OSSL_CIPHER_PARAM_AEAD_TAG "tag" +# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" +# define OSSL_CIPHER_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD "alg_id_param" +# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_CIPHER_PARAM_CTS "cts" +# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" +# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" +# define OSSL_CIPHER_PARAM_DECRYPT_ONLY "decrypt-only" +# define OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK "encrypt-check" +# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" +# define OSSL_CIPHER_PARAM_IV "iv" +# define OSSL_CIPHER_PARAM_IVLEN "ivlen" +# define OSSL_CIPHER_PARAM_KEYLEN "keylen" +# define OSSL_CIPHER_PARAM_MODE "mode" +# define OSSL_CIPHER_PARAM_NUM "num" +# define OSSL_CIPHER_PARAM_PADDING "padding" +# define OSSL_CIPHER_PARAM_PIPELINE_AEAD_TAG "pipeline-tag" +# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" +# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" +# define OSSL_CIPHER_PARAM_ROUNDS "rounds" +# define OSSL_CIPHER_PARAM_SPEED "speed" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag" +# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" +# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" +# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" +# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" +# define OSSL_CIPHER_PARAM_USE_BITS "use-bits" +# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard" +# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" +# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_DIGEST_PARAM_MICALG "micalg" +# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" +# define OSSL_DIGEST_PARAM_SIZE "size" +# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" +# define OSSL_DIGEST_PARAM_XOF "xof" +# define OSSL_DIGEST_PARAM_XOFLEN "xoflen" +# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +# define OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +# define OSSL_DRBG_PARAM_SIZE "size" +# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" +# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" +# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" +# define OSSL_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_EXCHANGE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" +# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" +# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" +# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" +# define OSSL_EXCHANGE_PARAM_PAD "pad" +# define OSSL_GEN_PARAM_ITERATION "iteration" +# define OSSL_GEN_PARAM_POTENTIAL "potential" +# define OSSL_KDF_PARAM_ARGON2_AD "ad" +# define OSSL_KDF_PARAM_ARGON2_LANES "lanes" +# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost" +# define OSSL_KDF_PARAM_ARGON2_VERSION "version" +# define OSSL_KDF_PARAM_CEK_ALG "cekalg" +# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_KDF_PARAM_CONSTANT "constant" +# define OSSL_KDF_PARAM_DATA "data" +# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean" +# define OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KDF_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_KDF_PARAM_FIPS_EMS_CHECK "ems_check" +# define OSSL_KDF_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy" +# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce" +# define OSSL_KDF_PARAM_INFO "info" +# define OSSL_KDF_PARAM_ITER "iter" +# define OSSL_KDF_PARAM_KBKDF_R "r" +# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" +# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" +# define OSSL_KDF_PARAM_KEY "key" +# define OSSL_KDF_PARAM_LABEL "label" +# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_KDF_PARAM_MAC_SIZE "maclen" +# define OSSL_KDF_PARAM_MODE "mode" +# define OSSL_KDF_PARAM_PASSWORD "pass" +# define OSSL_KDF_PARAM_PKCS12_ID "id" +# define OSSL_KDF_PARAM_PKCS5 "pkcs5" +# define OSSL_KDF_PARAM_PREFIX "prefix" +# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_KDF_PARAM_SALT "salt" +# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" +# define OSSL_KDF_PARAM_SCRYPT_N "n" +# define OSSL_KDF_PARAM_SCRYPT_P "p" +# define OSSL_KDF_PARAM_SCRYPT_R "r" +# define OSSL_KDF_PARAM_SECRET "secret" +# define OSSL_KDF_PARAM_SEED "seed" +# define OSSL_KDF_PARAM_SIZE "size" +# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" +# define OSSL_KDF_PARAM_SSHKDF_TYPE "type" +# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" +# define OSSL_KDF_PARAM_THREADS "threads" +# define OSSL_KDF_PARAM_UKM "ukm" +# define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info" +# define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info" +# define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info" +# define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo" +# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_KEM_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KEM_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KEM_PARAM_IKME "ikme" +# define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING "hs_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm" +# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len" +# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" +# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_MAC_PARAM_CUSTOM "custom" +# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" +# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" +# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" +# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" +# define OSSL_MAC_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_MAC_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_MAC_PARAM_FIPS_NO_SHORT_MAC OSSL_PROV_PARAM_NO_SHORT_MAC +# define OSSL_MAC_PARAM_IV "iv" +# define OSSL_MAC_PARAM_KEY "key" +# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_MAC_PARAM_SALT "salt" +# define OSSL_MAC_PARAM_SIZE "size" +# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" +# define OSSL_MAC_PARAM_XOF "xof" +# define OSSL_OBJECT_PARAM_DATA "data" +# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" +# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" +# define OSSL_OBJECT_PARAM_DESC "desc" +# define OSSL_OBJECT_PARAM_INPUT_TYPE "input-type" +# define OSSL_OBJECT_PARAM_REFERENCE "reference" +# define OSSL_OBJECT_PARAM_TYPE "type" +# define OSSL_PASSPHRASE_PARAM_INFO "info" +# define OSSL_PKEY_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_PKEY_PARAM_BITS "bits" +# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" +# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm" +# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" +# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +# define OSSL_PKEY_PARAM_DIST_ID "distid" +# define OSSL_PKEY_PARAM_EC_A "a" +# define OSSL_PKEY_PARAM_EC_B "b" +# define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3" +# define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp" +# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" +# define OSSL_PKEY_PARAM_EC_ENCODING "encoding" +# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +# define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_PARAM_EC_ORDER "order" +# define OSSL_PKEY_PARAM_EC_P "p" +# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +# define OSSL_PKEY_PARAM_EC_PUB_X "qx" +# define OSSL_PKEY_PARAM_EC_PUB_Y "qy" +# define OSSL_PKEY_PARAM_EC_SEED "seed" +# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE +# define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +# define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_FFC_G "g" +# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +# define OSSL_PKEY_PARAM_FFC_H "hindex" +# define OSSL_PKEY_PARAM_FFC_P "p" +# define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +# define OSSL_PKEY_PARAM_FFC_Q "q" +# define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +# define OSSL_PKEY_PARAM_FFC_SEED "seed" +# define OSSL_PKEY_PARAM_FFC_TYPE "type" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +# define OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK "digest-check" +# define OSSL_PKEY_PARAM_FIPS_KEY_CHECK "key-check" +# define OSSL_PKEY_PARAM_FIPS_SIGN_CHECK "sign-check" +# define OSSL_PKEY_PARAM_GROUP_NAME "group" +# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" +# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +# define OSSL_PKEY_PARAM_MAX_SIZE "max-size" +# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +# define OSSL_PKEY_PARAM_ML_DSA_INPUT_FORMATS "ml-dsa.input_formats" +# define OSSL_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS "ml-dsa.output_formats" +# define OSSL_PKEY_PARAM_ML_DSA_PREFER_SEED "ml-dsa.prefer_seed" +# define OSSL_PKEY_PARAM_ML_DSA_RETAIN_SEED "ml-dsa.retain_seed" +# define OSSL_PKEY_PARAM_ML_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE "ml-kem.import_pct_type" +# define OSSL_PKEY_PARAM_ML_KEM_INPUT_FORMATS "ml-kem.input_formats" +# define OSSL_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS "ml-kem.output_formats" +# define OSSL_PKEY_PARAM_ML_KEM_PREFER_SEED "ml-kem.prefer_seed" +# define OSSL_PKEY_PARAM_ML_KEM_RETAIN_SEED "ml-kem.retain_seed" +# define OSSL_PKEY_PARAM_ML_KEM_SEED "seed" +# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +# define OSSL_PKEY_PARAM_PRIV_KEY "priv" +# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_PUB_KEY "pub" +# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9" +# define OSSL_PKEY_PARAM_RSA_D "d" +# define OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ "rsa-derive-from-pq" +# define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_RSA_E "e" +# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1" +# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10" +# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2" +# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3" +# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4" +# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5" +# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6" +# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7" +# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8" +# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9" +# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1" +# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10" +# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2" +# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3" +# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4" +# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5" +# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6" +# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7" +# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8" +# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9" +# define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC +# define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_PKEY_PARAM_RSA_N "n" +# define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" +# define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1" +# define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2" +# define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1" +# define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2" +# define OSSL_PKEY_PARAM_RSA_TEST_XP "xp" +# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" +# define OSSL_PKEY_PARAM_SLH_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG +# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +# define OSSL_PROV_PARAM_BUILDINFO "buildinfo" +# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" +# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" +# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" +# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" +# define OSSL_PROV_PARAM_DSA_SIGN_DISABLED "dsa-sign-disabled" +# define OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK "ecdh-cofactor-check" +# define OSSL_PROV_PARAM_HKDF_DIGEST_CHECK "hkdf-digest-check" +# define OSSL_PROV_PARAM_HKDF_KEY_CHECK "hkdf-key-check" +# define OSSL_PROV_PARAM_HMAC_KEY_CHECK "hmac-key-check" +# define OSSL_PROV_PARAM_KBKDF_KEY_CHECK "kbkdf-key-check" +# define OSSL_PROV_PARAM_KMAC_KEY_CHECK "kmac-key-check" +# define OSSL_PROV_PARAM_NAME "name" +# define OSSL_PROV_PARAM_NO_SHORT_MAC "no-short-mac" +# define OSSL_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK "pbkdf2-lower-bound-check" +# define OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED "rsa-pkcs15-pad-disabled" +# define OSSL_PROV_PARAM_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED "rsa-sign-x931-pad-disabled" +# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" +# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" +# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" +# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" +# define OSSL_PROV_PARAM_SIGNATURE_DIGEST_CHECK "signature-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_DIGEST_CHECK "sshkdf-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_KEY_CHECK "sshkdf-key-check" +# define OSSL_PROV_PARAM_SSKDF_DIGEST_CHECK "sskdf-digest-check" +# define OSSL_PROV_PARAM_SSKDF_KEY_CHECK "sskdf-key-check" +# define OSSL_PROV_PARAM_STATUS "status" +# define OSSL_PROV_PARAM_TDES_ENCRYPT_DISABLED "tdes-encrypt-disabled" +# define OSSL_PROV_PARAM_TLS13_KDF_DIGEST_CHECK "tls13-kdf-digest-check" +# define OSSL_PROV_PARAM_TLS13_KDF_KEY_CHECK "tls13-kdf-key-check" +# define OSSL_PROV_PARAM_TLS1_PRF_DIGEST_CHECK "tls1-prf-digest-check" +# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" +# define OSSL_PROV_PARAM_TLS1_PRF_KEY_CHECK "tls1-prf-key-check" +# define OSSL_PROV_PARAM_VERSION "version" +# define OSSL_PROV_PARAM_X942KDF_KEY_CHECK "x942kdf-key-check" +# define OSSL_PROV_PARAM_X963KDF_DIGEST_CHECK "x963kdf-digest-check" +# define OSSL_PROV_PARAM_X963KDF_KEY_CHECK "x963kdf-key-check" +# define OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_RAND_PARAM_GENERATE "generate" +# define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +# define OSSL_RAND_PARAM_STATE "state" +# define OSSL_RAND_PARAM_STRENGTH "strength" +# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" +# define OSSL_SIGNATURE_PARAM_ADD_RANDOM "additional-random" +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID OSSL_PKEY_PARAM_ALGORITHM_ID +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string" +# define OSSL_SIGNATURE_PARAM_DETERMINISTIC "deterministic" +# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE +# define OSSL_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_SIGNATURE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_CHECK OSSL_PKEY_PARAM_FIPS_SIGN_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK "sign-x931-pad-check" +# define OSSL_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE "verify-message" +# define OSSL_SIGNATURE_PARAM_INSTANCE "instance" +# define OSSL_SIGNATURE_PARAM_KAT "kat" +# define OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING "message-encoding" +# define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_SIGNATURE_PARAM_MU "mu" +# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type" +# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +# define OSSL_SIGNATURE_PARAM_SIGNATURE "signature" +# define OSSL_SIGNATURE_PARAM_TEST_ENTROPY "test-entropy" +# define OSSL_SKEY_PARAM_KEY_LENGTH "key-length" +# define OSSL_SKEY_PARAM_RAW_BYTES "raw-bytes" +# define OSSL_STORE_PARAM_ALIAS "alias" +# define OSSL_STORE_PARAM_DIGEST "digest" +# define OSSL_STORE_PARAM_EXPECT "expect" +# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" +# define OSSL_STORE_PARAM_INPUT_TYPE "input-type" +# define OSSL_STORE_PARAM_ISSUER "name" +# define OSSL_STORE_PARAM_PROPERTIES "properties" +# define OSSL_STORE_PARAM_SERIAL "serial" +# define OSSL_STORE_PARAM_SUBJECT "subject" + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/crmf.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/crmf.h index 71b747ed33d239..4bf550fd47daa9 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/crmf.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/crmf.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/crmf.h.in * - * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -26,6 +26,7 @@ # include # include # include /* for GENERAL_NAME etc. */ +# include /* explicit #includes not strictly needed since implied by the above: */ # include @@ -43,9 +44,12 @@ extern "C" { # define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 # define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 - typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) + +typedef struct ossl_crmf_encryptedkey_st OSSL_CRMF_ENCRYPTEDKEY; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDKEY) + typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) @@ -77,6 +81,36 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) #define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; +void OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(OSSL_CRMF_ATTRIBUTETYPEANDVALUE *v); +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value(sk, idx) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new(cmp) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_null() ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (n)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete(sk, i) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (i))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete_ptr(sk, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_shift(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk),ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), (idx)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set(sk, idx, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), pnum) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup(sk) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) + + typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER) typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY; @@ -118,6 +152,7 @@ typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO) typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTTEMPLATE) typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS) @@ -198,12 +233,14 @@ int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, int rid, int acceptRAVerified, OSSL_LIB_CTX *libctx, const char *propq); OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); -const ASN1_INTEGER -*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const ASN1_INTEGER +*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); X509_EXTENSIONS *OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME @@ -215,10 +252,24 @@ int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl, const X509_NAME *subject, const X509_NAME *issuer, const ASN1_INTEGER *serial); -X509 -*OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, - OSSL_LIB_CTX *libctx, const char *propq, - EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDKEY_get1_encCert(const OSSL_CRMF_ENCRYPTEDKEY *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, unsigned int flags); +unsigned char +*OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *enc, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, int *outlen); +EVP_PKEY *OSSL_CRMF_ENCRYPTEDKEY_get1_pkey(const OSSL_CRMF_ENCRYPTEDKEY *encryptedKey, + X509_STORE *ts, STACK_OF(X509) *extra, EVP_PKEY *pkey, + X509 *cert, ASN1_OCTET_STRING *secret, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSG_centralkeygen_requested(const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr); +# ifndef OPENSSL_NO_CMS +OSSL_CRMF_ENCRYPTEDKEY *OSSL_CRMF_ENCRYPTEDKEY_init_envdata(CMS_EnvelopedData *envdata); +# endif # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/crypto.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/crypto.h index 3f40be6d8c61d5..fd2cfd3e5a9ac4 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/crypto.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/crypto.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/crypto.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -85,9 +85,15 @@ int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock); void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock); int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_add64(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_and(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, CRYPTO_RWLOCK *lock); int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, CRYPTO_RWLOCK *lock); /* No longer needed, so this is a no-op */ #define OPENSSL_malloc_init() while(0) continue @@ -96,6 +102,9 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_zalloc(num) \ CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_aligned_alloc(num, alignment, freeptr) \ + CRYPTO_aligned_alloc(num, alignment, freeptr, \ + OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_realloc(addr, num) \ CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_clear_realloc(addr, old_num, num) \ @@ -124,6 +133,7 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); size_t OPENSSL_strnlen(const char *str, size_t maxlen); +int OPENSSL_strtoul(const char *str, char **endptr, int base, unsigned long *num); int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength, const unsigned char *buf, size_t buflen, const char sep); @@ -160,6 +170,7 @@ const char *OpenSSL_version(int type); # define OPENSSL_FULL_VERSION_STRING 7 # define OPENSSL_MODULES_DIR 8 # define OPENSSL_CPU_INFO 9 +# define OPENSSL_WINCTX 10 const char *OPENSSL_info(int type); /* @@ -174,6 +185,7 @@ const char *OPENSSL_info(int type); # define OPENSSL_INFO_LIST_SEPARATOR 1006 # define OPENSSL_INFO_SEED_SOURCE 1007 # define OPENSSL_INFO_CPU_SETTINGS 1008 +# define OPENSSL_INFO_WINDOWS_CONTEXT 1009 int OPENSSL_issetugid(void); @@ -341,11 +353,14 @@ void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn, CRYPTO_realloc_fn *realloc_fn, CRYPTO_free_fn *free_fn); -void *CRYPTO_malloc(size_t num, const char *file, int line); -void *CRYPTO_zalloc(size_t num, const char *file, int line); -void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); -char *CRYPTO_strdup(const char *str, const char *file, int line); -char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc(size_t num, size_t align, + void **freeptr, const char *file, + int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strdup(const char *str, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); void CRYPTO_free(void *ptr, const char *file, int line); void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line); void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); @@ -354,8 +369,8 @@ void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, int CRYPTO_secure_malloc_init(size_t sz, size_t minsize); int CRYPTO_secure_malloc_done(void); -void *CRYPTO_secure_malloc(size_t num, const char *file, int line); -void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); void CRYPTO_secure_free(void *ptr, const char *file, int line); void CRYPTO_secure_clear_free(void *ptr, size_t num, const char *file, int line); @@ -376,6 +391,9 @@ void OPENSSL_cleanse(void *ptr, size_t len); # define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */ # define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */ +/* max allowed length for value of OPENSSL_MALLOC_FAILURES env var. */ +# define CRYPTO_MEM_CHECK_MAX_FS 256 + void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); # ifndef OPENSSL_NO_DEPRECATED_3_0 # define OPENSSL_mem_debug_push(info) \ @@ -551,6 +569,13 @@ int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file); void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); +int OSSL_LIB_CTX_get_conf_diagnostics(OSSL_LIB_CTX *ctx); +void OSSL_LIB_CTX_set_conf_diagnostics(OSSL_LIB_CTX *ctx, int value); + +void OSSL_sleep(uint64_t millis); + + +void *OSSL_LIB_CTX_get_data(OSSL_LIB_CTX *ctx, int index); # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/ct.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/ct.h index b6dd8c3547710a..e6dd1192a4e0b3 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/ct.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/ct.h @@ -133,7 +133,7 @@ typedef enum { */ CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); - + /* * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library * context and property query string is used. diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/err.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/err.h index 2abf2483488181..daca18e7b757b0 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/err.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/err.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -372,7 +372,7 @@ typedef struct ERR_string_data_st { } ERR_STRING_DATA; DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); -#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp))) +#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp)), lh_ERR_STRING_DATA_hash_thunk, lh_ERR_STRING_DATA_comp_thunk, lh_ERR_STRING_DATA_doall_thunk, lh_ERR_STRING_DATA_doall_arg_thunk)) #define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) @@ -496,6 +496,14 @@ int ERR_get_next_error_library(void); int ERR_set_mark(void); int ERR_pop_to_mark(void); int ERR_clear_last_mark(void); +int ERR_count_to_mark(void); +int ERR_pop(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); #ifdef __cplusplus } diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/fipskey.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/fipskey.h index 42ba014b313ba8..929db18c678364 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/fipskey.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/fipskey.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/fipskey.h.in * - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -29,6 +29,11 @@ extern "C" { */ #define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" +/* + * The FIPS provider vendor name, as a string. + */ +#define FIPS_VENDOR "OpenSSL FIPS Provider" + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/lhash.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/lhash.h index 39dd6254acdeb6..62c55b20fd9716 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/lhash.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/lhash.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -24,6 +24,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -31,9 +34,13 @@ extern "C" { typedef struct lhash_node_st OPENSSL_LH_NODE; typedef int (*OPENSSL_LH_COMPFUNC) (const void *, const void *); +typedef int (*OPENSSL_LH_COMPFUNCTHUNK) (const void *, const void *, OPENSSL_LH_COMPFUNC cfn); typedef unsigned long (*OPENSSL_LH_HASHFUNC) (const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNCTHUNK) (const void *, OPENSSL_LH_HASHFUNC hfn); typedef void (*OPENSSL_LH_DOALL_FUNC) (void *); +typedef void (*OPENSSL_LH_DOALL_FUNC_THUNK) (void *, OPENSSL_LH_DOALL_FUNC doall); typedef void (*OPENSSL_LH_DOALL_FUNCARG) (void *, void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG_THUNK) (void *, void *, OPENSSL_LH_DOALL_FUNCARG doall); typedef struct lhash_st OPENSSL_LHASH; /* @@ -79,26 +86,40 @@ typedef struct lhash_st OPENSSL_LHASH; int OPENSSL_LH_error(OPENSSL_LHASH *lh); OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +OPENSSL_LHASH *OPENSSL_LH_set_thunks(OPENSSL_LHASH *lh, + OPENSSL_LH_HASHFUNCTHUNK hw, + OPENSSL_LH_COMPFUNCTHUNK cw, + OPENSSL_LH_DOALL_FUNC_THUNK daw, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw); void OPENSSL_LH_free(OPENSSL_LHASH *lh); void OPENSSL_LH_flush(OPENSSL_LHASH *lh); void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); -void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg_thunk(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw, + OPENSSL_LH_DOALL_FUNCARG fn, void *arg); + unsigned long OPENSSL_LH_strhash(const char *c); unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); # ifndef OPENSSL_NO_STDIO -void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# endif +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # endif -void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define _LHASH OPENSSL_LHASH @@ -129,110 +150,190 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); /* Helper macro for internal use */ # define DEFINE_LHASH_OF_INTERNAL(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ typedef void (*lh_##type##_doallfunc)(type *a); \ - static ossl_unused ossl_inline type *ossl_check_##type##_lh_plain_type(type *ptr) \ + static ossl_inline unsigned long lh_##type##_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static ossl_inline int lh_##type##_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_inline void lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_inline void lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline type *\ + ossl_check_##type##_lh_plain_type(type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const type *ossl_check_const_##type##_lh_plain_type(const type *ptr) \ + static ossl_unused ossl_inline const type * \ + ossl_check_const_##type##_lh_plain_type(const type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const OPENSSL_LHASH *ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline const OPENSSL_LHASH * \ + ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ { \ return (const OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LHASH *ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline OPENSSL_LHASH * \ + ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ { \ return (OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ + static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC \ + ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ { \ return (OPENSSL_LH_COMPFUNC)cmp; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ + static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC \ + ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ { \ return (OPENSSL_LH_HASHFUNC)hfn; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ + static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC \ + ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ { \ return (OPENSSL_LH_DOALL_FUNC)dfn; \ } \ LHASH_OF(type) -# define DEFINE_LHASH_OF(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ - static ossl_unused ossl_inline LHASH_OF(type) *lh_##type##_new(unsigned long (*hfn)(const type *), \ - int (*cfn)(const type *, const type *)) \ +# ifndef OPENSSL_NO_DEPRECATED_3_1 +# define DEFINE_LHASH_OF_DEPRECATED(type) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ - return (LHASH_OF(type) *) \ - OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ - static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } +# else +# define DEFINE_LHASH_OF_DEPRECATED(type) +# endif + +# define DEFINE_LHASH_OF_EX(type) \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ + static unsigned long \ + lh_##type##_hfn_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static int lh_##type##_cfn_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_free(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_flush(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_flush(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ { \ return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline int \ + lh_##type##_error(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_num_items(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_get_down_load(LHASH_OF(type) *lh) \ { \ - OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ { \ - OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ } \ - static ossl_unused ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ { \ - OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ { \ - return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ } \ - static ossl_unused ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall(LHASH_OF(type) *lh, void (*doall)(type *)) \ { \ - OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ - void (*doall)(type *)) \ + static ossl_unused ossl_inline LHASH_OF(type) * \ + lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ { \ - OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \ + lh_##type##_hfn_thunk, lh_##type##_cfn_thunk, \ + lh_##type##_doall_thunk, \ + lh_##type##_doall_arg_thunk); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall_arg(LHASH_OF(type) *lh, \ - void (*doallarg)(type *, void *), \ - void *arg) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg(LHASH_OF(type) *lh, \ + void (*doallarg)(type *, void *), void *arg) \ { \ OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ } \ LHASH_OF(type) +# define DEFINE_LHASH_OF(type) \ + DEFINE_LHASH_OF_EX(type); \ + DEFINE_LHASH_OF_DEPRECATED(type) \ + LHASH_OF(type) + #define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ int_implement_lhash_doall(type, argtype, const type) @@ -240,17 +341,26 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); int_implement_lhash_doall(type, argtype, type) #define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype##_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG fn) \ + { \ + void (*fn_conv)(cbargtype *, argtype *) = (void (*)(cbargtype *, argtype *))fn; \ + fn_conv((cbargtype *)node, (argtype *)arg); \ + } \ static ossl_unused ossl_inline void \ lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ void (*fn)(cbargtype *, argtype *), \ argtype *arg) \ { \ - OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNCARG)fn, (void *)arg); \ + OPENSSL_LH_doall_arg_thunk((OPENSSL_LHASH *)lh, \ + lh_##type##_doall_##argtype##_thunk, \ + (OPENSSL_LH_DOALL_FUNCARG)fn, \ + (void *)arg); \ } \ LHASH_OF(type) DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); -#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp)), lh_OPENSSL_STRING_hash_thunk, lh_OPENSSL_STRING_comp_thunk, lh_OPENSSL_STRING_doall_thunk, lh_OPENSSL_STRING_doall_arg_thunk)) #define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) @@ -265,7 +375,7 @@ DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); #define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) #define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); -#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp)), lh_OPENSSL_CSTRING_hash_thunk, lh_OPENSSL_CSTRING_comp_thunk, lh_OPENSSL_CSTRING_doall_thunk, lh_OPENSSL_CSTRING_doall_arg_thunk)) #define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/opensslv.h index 5fb5bc63056fe0..71a357701fd5e3 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/opensslv.h @@ -28,8 +28,8 @@ extern "C" { * These macros express version number MAJOR.MINOR.PATCH exactly */ # define OPENSSL_VERSION_MAJOR 3 -# define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 17 +# define OPENSSL_VERSION_MINOR 5 +# define OPENSSL_VERSION_PATCH 2 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.17" -# define OPENSSL_FULL_VERSION_STR "3.0.17" +# define OPENSSL_VERSION_STR "3.5.2" +# define OPENSSL_FULL_VERSION_STR "3.5.2" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "1 Jul 2025" +# define OPENSSL_RELEASE_DATE "5 Aug 2025" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.17 1 Jul 2025" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.2 5 Aug 2025" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/pkcs12.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/pkcs12.h index c5e0cab06491ec..0809645dad0bbf 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/pkcs12.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/pkcs12.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/pkcs12.h.in * - * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -41,6 +44,7 @@ extern "C" { # define PKCS12_MAC_KEY_LENGTH 20 +/* The macro is expected to be used only internally. Kept for backwards compatibility. */ # define PKCS12_SALT_LEN 8 /* It's not clear if these are actually needed... */ @@ -130,7 +134,9 @@ int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); const STACK_OF(PKCS12_SAFEBAG) * PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); @@ -218,6 +224,7 @@ ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); const STACK_OF(X509_ATTRIBUTE) * PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, const char *pass, int passlen, const unsigned char *in, int inlen, @@ -285,6 +292,9 @@ int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, unsigned char *salt, int saltlen, int iter, const EVP_MD *md_type); +int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type, const char *prf_md_name); int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, int saltlen, const EVP_MD *md_type); unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, @@ -305,6 +315,7 @@ DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) void PKCS12_PBE_add(void); int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype); @@ -312,6 +323,11 @@ PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype, OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/pkcs7.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/pkcs7.h index 0ce79bf4fa160e..fa68462aff973b 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/pkcs7.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/pkcs7.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/pkcs7.h.in * - * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -28,6 +28,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -131,8 +134,8 @@ SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INF typedef struct pkcs7_signed_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; struct pkcs7_st *contents; } PKCS7_SIGNED; @@ -158,8 +161,8 @@ typedef struct pkcs7_enveloped_st { typedef struct pkcs7_signedandenveloped_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; PKCS7_ENC_CONTENT *enc_data; STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; @@ -200,7 +203,7 @@ typedef struct pkcs7_st { /* NID_pkcs7_data */ ASN1_OCTET_STRING *data; /* NID_pkcs7_signed */ - PKCS7_SIGNED *sign; + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ /* NID_pkcs7_enveloped */ PKCS7_ENVELOPE *enveloped; /* NID_pkcs7_signedAndEnveloped */ @@ -341,13 +344,13 @@ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, const EVP_MD *dgst); int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); -int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); -int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); int PKCS7_content_new(PKCS7 *p7, int nid); int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, - X509 *x509); + X509 *signer); BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/ssl.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/ssl.h index 3df725c56d6c5e..7e3d89c7ef3dc9 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/ssl.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/ssl.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/ssl.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -24,6 +24,7 @@ # endif # include +# include # include # include # include @@ -42,6 +43,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -231,10 +235,8 @@ typedef struct ssl_cipher_st SSL_CIPHER; typedef struct ssl_session_st SSL_SESSION; typedef struct tls_sigalgs_st TLS_SIGALGS; typedef struct ssl_conf_ctx_st SSL_CONF_CTX; -typedef struct ssl_comp_st SSL_COMP; STACK_OF(SSL_CIPHER); -STACK_OF(SSL_COMP); /* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ typedef struct srtp_protection_profile_st { @@ -278,28 +280,31 @@ typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, /* Extension context codes */ /* This extension is only allowed in TLS */ -#define SSL_EXT_TLS_ONLY 0x0001 +#define SSL_EXT_TLS_ONLY 0x00001 /* This extension is only allowed in DTLS */ -#define SSL_EXT_DTLS_ONLY 0x0002 +#define SSL_EXT_DTLS_ONLY 0x00002 /* Some extensions may be allowed in DTLS but we don't implement them for it */ -#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 /* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ -#define SSL_EXT_SSL3_ALLOWED 0x0008 +#define SSL_EXT_SSL3_ALLOWED 0x00008 /* Extension is only defined for TLS1.2 and below */ -#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 /* Extension is only defined for TLS1.3 and above */ -#define SSL_EXT_TLS1_3_ONLY 0x0020 +#define SSL_EXT_TLS1_3_ONLY 0x00020 /* Ignore this extension during parsing if we are resuming */ -#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 -#define SSL_EXT_CLIENT_HELLO 0x0080 +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 /* Really means TLS1.2 or below */ -#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 -#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 -#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 -#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 -#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 -#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 -#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 /* Typedefs for handling custom extensions */ @@ -404,7 +409,7 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); */ # define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_BIT(22) /* - * If set, a server will allow a client to issue a SSLv3.0 version + * If set, a server will allow a client to issue an SSLv3.0 version * number as latest version supported in the premaster secret, even when * TLSv1.0 (version 3.1) was announced in the client hello. Normally * this is forbidden to prevent version rollback attacks. @@ -430,6 +435,19 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); * interoperability with CryptoPro CSP 3.x */ # define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +# define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +# define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) + /* Enable KTLS TX zerocopy on Linux */ +# define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) + +#define SSL_OP_PREFER_NO_DHE_KEX SSL_OP_BIT(35) /* * Option "collections." @@ -574,6 +592,8 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); # define CERT_PKEY_CERT_TYPE 0x400 /* Cert chain suitable to Suite B */ # define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +# define CERT_PKEY_RPK 0x1000 # define SSL_CONF_FLAG_CMDLINE 0x1 # define SSL_CONF_FLAG_FILE 0x2 @@ -965,6 +985,7 @@ uint32_t SSL_get_recv_max_early_data(const SSL *s); # include /* This is mostly sslv3 with a few tweaks */ # include /* Datagram TLS */ # include /* Support for the use_srtp extension */ +# include #ifdef __cplusplus extern "C" { @@ -1000,32 +1021,6 @@ SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) #define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) #define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) #define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) -SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) -#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) -#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) -#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) -#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) -#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) -#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) -#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) -#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) -#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) -#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) -#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) /* compatibility */ @@ -1066,6 +1061,7 @@ typedef enum { DTLS_ST_CR_HELLO_VERIFY_REQUEST, TLS_ST_CR_SRVR_HELLO, TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, TLS_ST_CR_CERT_STATUS, TLS_ST_CR_KEY_EXCH, TLS_ST_CR_CERT_REQ, @@ -1075,6 +1071,7 @@ typedef enum { TLS_ST_CR_FINISHED, TLS_ST_CW_CLNT_HELLO, TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, TLS_ST_CW_KEY_EXCH, TLS_ST_CW_CERT_VRFY, TLS_ST_CW_CHANGE, @@ -1085,10 +1082,12 @@ typedef enum { DTLS_ST_SW_HELLO_VERIFY_REQUEST, TLS_ST_SW_SRVR_HELLO, TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, TLS_ST_SW_KEY_EXCH, TLS_ST_SW_CERT_REQ, TLS_ST_SW_SRVR_DONE, TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, TLS_ST_SR_KEY_EXCH, TLS_ST_SR_CERT_VRFY, TLS_ST_SR_NEXT_PROTO, @@ -1380,9 +1379,13 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_CTRL_GET_SIGNATURE_NID 132 # define SSL_CTRL_GET_TMP_KEY 133 # define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +# define SSL_CTRL_GET_IANA_GROUPS 135 # define SSL_CTRL_SET_RETRY_VERIFY 136 # define SSL_CTRL_GET_VERIFY_CERT_STORE 137 # define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +# define SSL_CTRL_GET0_IMPLEMENTED_GROUPS 139 +# define SSL_CTRL_GET_SIGNATURE_NAME 140 +# define SSL_CTRL_GET_PEER_SIGNATURE_NAME 141 # define SSL_CERT_SET_FIRST 1 # define SSL_CERT_SET_NEXT 2 # define SSL_CERT_SET_SERVER 3 @@ -1485,10 +1488,15 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get1_groups(s, glist) \ SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_IANA_GROUPS,0,(uint16_t **)(plst)) # define SSL_CTX_set1_groups(ctx, glist, glistlen) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) # define SSL_CTX_set1_groups_list(ctx, s) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s)) +# define SSL_CTX_get0_implemented_groups(ctx, all, out) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET0_IMPLEMENTED_GROUPS, all, \ + (STACK_OF(OPENSSL_CSTRING) *)(out)) # define SSL_set1_groups(s, glist, glistlen) \ SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist)) # define SSL_set1_groups_list(s, str) \ @@ -1520,8 +1528,12 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) (char *)(clist)) # define SSL_set1_client_certificate_types(s, clist, clistlen) \ SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist)) +# define SSL_get0_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn) +# define SSL_get0_peer_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_peer_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) # define SSL_get_peer_tmp_key(s, pk) \ @@ -1549,6 +1561,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get_max_proto_version(s) \ SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +const char *SSL_get0_group_name(SSL *s); const char *SSL_group_to_name(SSL *s, int id); /* Backwards compatibility, original 1.1.0 names */ @@ -1613,7 +1626,11 @@ void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); __owur int SSL_want(const SSL *s); __owur int SSL_clear(SSL *s); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()") void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); +#endif +void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm); __owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); __owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); @@ -1725,13 +1742,21 @@ __owur const char *SSL_state_string(const SSL *s); __owur const char *SSL_rstate_string(const SSL *s); __owur const char *SSL_state_string_long(const SSL *s); __owur const char *SSL_rstate_string_long(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_get_time_ex()") __owur long SSL_SESSION_get_time(const SSL_SESSION *s); +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_set_time_ex()") __owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +#endif __owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); __owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); __owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); __owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); +__owur time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s); +__owur time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t); + __owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); __owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, @@ -1783,6 +1808,9 @@ __owur int SSL_has_matching_session_id(const SSL *s, unsigned int id_len); SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); # ifdef OPENSSL_X509_H __owur X509 *SSL_get0_peer_certificate(const SSL *s); @@ -1840,6 +1868,8 @@ __owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, SSL *SSL_new(SSL_CTX *ctx); int SSL_up_ref(SSL *s); int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); __owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, unsigned int sid_ctx_len); @@ -1848,8 +1878,8 @@ __owur int SSL_set_purpose(SSL *ssl, int purpose); __owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); __owur int SSL_set_trust(SSL *ssl, int trust); -__owur int SSL_set1_host(SSL *s, const char *hostname); -__owur int SSL_add1_host(SSL *s, const char *hostname); +__owur int SSL_set1_host(SSL *s, const char *host); +__owur int SSL_add1_host(SSL *s, const char *host); __owur const char *SSL_get0_peername(SSL *s); void SSL_set_hostflags(SSL *s, unsigned int flags); @@ -1924,6 +1954,11 @@ OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg); void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, void *arg); +typedef int (*SSL_new_pending_conn_cb_fn) (SSL_CTX *ctx, SSL *new_ssl, + void *arg); +void SSL_CTX_set_new_pending_conn_cb(SSL_CTX *c, SSL_new_pending_conn_cb_fn cb, + void *arg); + int SSL_client_hello_isv2(SSL *s); unsigned int SSL_client_hello_get0_legacy_version(SSL *s); size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); @@ -1932,6 +1967,8 @@ size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); size_t SSL_client_hello_get0_compression_methods(SSL *s, const unsigned char **out); int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); int SSL_client_hello_get0_ext(SSL *s, unsigned int type, const unsigned char **out, size_t *outlen); @@ -1978,6 +2015,12 @@ long SSL_callback_ctrl(SSL *, int, void (*)(void)); long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); +# define SSL_WRITE_FLAG_CONCLUDE (1U << 0) + +__owur int SSL_write_ex2(SSL *s, const void *buf, size_t num, + uint64_t flags, + size_t *written); + # define SSL_EARLY_DATA_NOT_SENT 0 # define SSL_EARLY_DATA_REJECTED 1 # define SSL_EARLY_DATA_ACCEPTED 2 @@ -1986,6 +2029,7 @@ __owur int SSL_get_early_data_status(const SSL *s); __owur int SSL_get_error(const SSL *s, int ret_code); __owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); /* This sets the 'default' SSL version that SSL_new() will create */ # ifndef OPENSSL_NO_DEPRECATED_3_0 @@ -2281,6 +2325,8 @@ void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); +int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size, + size_t hs_block_size); int SSL_set_record_padding_callback(SSL *ssl, size_t (*cb) (SSL *ssl, int type, @@ -2288,12 +2334,255 @@ int SSL_set_record_padding_callback(SSL *ssl, void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); void *SSL_get_record_padding_callback_arg(const SSL *ssl); int SSL_set_block_padding(SSL *ssl, size_t block_size); - +int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size, + size_t hs_block_size); int SSL_set_num_tickets(SSL *s, size_t num_tickets); size_t SSL_get_num_tickets(const SSL *s); int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +__owur int SSL_is_listener(SSL *ssl); +__owur SSL *SSL_get0_listener(SSL *s); +#define SSL_LISTENER_FLAG_NO_VALIDATE (1UL << 1) +__owur SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags); +__owur SSL *SSL_new_listener_from(SSL *ssl, uint64_t flags); +__owur SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags); +#define SSL_ACCEPT_CONNECTION_NO_BLOCK (1UL << 0) +__owur SSL *SSL_accept_connection(SSL *ssl, uint64_t flags); +__owur size_t SSL_get_accept_connection_queue_len(SSL *ssl); +__owur int SSL_listen(SSL *ssl); + +__owur int SSL_is_domain(SSL *s); +__owur SSL *SSL_get0_domain(SSL *s); +__owur SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags); + +#define SSL_DOMAIN_FLAG_SINGLE_THREAD (1U << 0) +#define SSL_DOMAIN_FLAG_MULTI_THREAD (1U << 1) +#define SSL_DOMAIN_FLAG_THREAD_ASSISTED (1U << 2) +#define SSL_DOMAIN_FLAG_BLOCKING (1U << 3) +#define SSL_DOMAIN_FLAG_LEGACY_BLOCKING (1U << 4) + +__owur int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t domain_flags); +__owur int SSL_CTX_get_domain_flags(const SSL_CTX *ctx, uint64_t *domain_flags); +__owur int SSL_get_domain_flags(const SSL *ssl, uint64_t *domain_flags); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +# ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +# endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + +# define SSL_VALUE_CLASS_GENERIC 0 +# define SSL_VALUE_CLASS_FEATURE_REQUEST 1 +# define SSL_VALUE_CLASS_FEATURE_PEER_REQUEST 2 +# define SSL_VALUE_CLASS_FEATURE_NEGOTIATED 3 + +# define SSL_VALUE_NONE 0 +# define SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL 1 +# define SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL 2 +# define SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL 3 +# define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL 4 +# define SSL_VALUE_QUIC_IDLE_TIMEOUT 5 +# define SSL_VALUE_EVENT_HANDLING_MODE 6 +# define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7 +# define SSL_VALUE_STREAM_WRITE_BUF_USED 8 +# define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9 + +# define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0 +# define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1 +# define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT 2 + +int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v); +int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v); + +# define SSL_get_generic_value_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_set_generic_value_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_get_feature_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_set_feature_request_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_get_feature_peer_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, (id), (v)) +# define SSL_get_feature_negotiated_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_NEGOTIATED, (id), (v)) + +# define SSL_get_quic_stream_bidi_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_bidi_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, \ + (value)) + +# define SSL_get_event_handling_mode(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) +# define SSL_set_event_handling_mode(ssl, value) \ + SSL_set_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) + +# define SSL_get_stream_write_buf_size(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_SIZE, \ + (value)) +# define SSL_get_stream_write_buf_used(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_USED, \ + (value)) +# define SSL_get_stream_write_buf_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_AVAIL, \ + (value)) + +# define SSL_POLL_EVENT_NONE 0 + +# define SSL_POLL_EVENT_F (1U << 0) /* F (Failure) */ +# define SSL_POLL_EVENT_EL (1U << 1) /* EL (Exception on Listener) */ +# define SSL_POLL_EVENT_EC (1U << 2) /* EC (Exception on Conn) */ +# define SSL_POLL_EVENT_ECD (1U << 3) /* ECD (Exception on Conn Drained) */ +# define SSL_POLL_EVENT_ER (1U << 4) /* ER (Exception on Read) */ +# define SSL_POLL_EVENT_EW (1U << 5) /* EW (Exception on Write) */ +# define SSL_POLL_EVENT_R (1U << 6) /* R (Readable) */ +# define SSL_POLL_EVENT_W (1U << 7) /* W (Writable) */ +# define SSL_POLL_EVENT_IC (1U << 8) /* IC (Incoming Connection) */ +# define SSL_POLL_EVENT_ISB (1U << 9) /* ISB (Incoming Stream: Bidi) */ +# define SSL_POLL_EVENT_ISU (1U << 10) /* ISU (Incoming Stream: Uni) */ +# define SSL_POLL_EVENT_OSB (1U << 11) /* OSB (Outgoing Stream: Bidi) */ +# define SSL_POLL_EVENT_OSU (1U << 12) /* OSU (Outgoing Stream: Uni) */ + +# define SSL_POLL_EVENT_RW (SSL_POLL_EVENT_R | SSL_POLL_EVENT_W) +# define SSL_POLL_EVENT_RE (SSL_POLL_EVENT_R | SSL_POLL_EVENT_ER) +# define SSL_POLL_EVENT_WE (SSL_POLL_EVENT_W | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_RWE (SSL_POLL_EVENT_RE | SSL_POLL_EVENT_WE) +# define SSL_POLL_EVENT_E (SSL_POLL_EVENT_EL | SSL_POLL_EVENT_EC \ + | SSL_POLL_EVENT_ER | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_IS (SSL_POLL_EVENT_ISB | SSL_POLL_EVENT_ISU) +# define SSL_POLL_EVENT_ISE (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_EC) +# define SSL_POLL_EVENT_I (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_IC) +# define SSL_POLL_EVENT_OS (SSL_POLL_EVENT_OSB | SSL_POLL_EVENT_OSU) +# define SSL_POLL_EVENT_OSE (SSL_POLL_EVENT_OS | SSL_POLL_EVENT_EC) + +typedef struct ssl_poll_item_st { + BIO_POLL_DESCRIPTOR desc; + uint64_t events, revents; +} SSL_POLL_ITEM; + +# define SSL_POLL_FLAG_NO_HANDLE_EVENTS (1U << 0) + +__owur int SSL_poll(SSL_POLL_ITEM *items, + size_t num_items, + size_t stride, + const struct timeval *timeout, + uint64_t flags, + size_t *result_count); + +static ossl_inline ossl_unused BIO_POLL_DESCRIPTOR +SSL_as_poll_descriptor(SSL *s) +{ + BIO_POLL_DESCRIPTOR d; + + d.type = BIO_POLL_DESCRIPTOR_TYPE_SSL; + d.value.ssl = s; + return d; +} + # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define SSL_cache_hit(s) SSL_session_reused(s) # endif @@ -2593,6 +2882,51 @@ void SSL_set_allow_early_data_cb(SSL *s, const char *OSSL_default_cipher_list(void); const char *OSSL_default_ciphersuites(void); +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + +/* + * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used. + */ +# define OSSL_RECORD_PROTECTION_LEVEL_NONE 0 +# define OSSL_RECORD_PROTECTION_LEVEL_EARLY 1 +# define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE 2 +# define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3 + +int SSL_set_quic_tls_cbs(SSL *s, const OSSL_DISPATCH *qtdis, void *arg); +int SSL_set_quic_tls_transport_params(SSL *s, + const unsigned char *params, + size_t params_len); + +int SSL_set_quic_tls_early_data_enabled(SSL *s, int enabled); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/x509.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/x509.h index 1f7755e5b69c75..d013458c226461 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/x509.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/x509.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -40,6 +40,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -162,16 +165,24 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) # define X509_FILETYPE_ASN1 2 # define X509_FILETYPE_DEFAULT 3 -# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 -# define X509v3_KU_NON_REPUDIATION 0x0040 -# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 -# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 -# define X509v3_KU_KEY_AGREEMENT 0x0008 -# define X509v3_KU_KEY_CERT_SIGN 0x0004 -# define X509v3_KU_CRL_SIGN 0x0002 -# define X509v3_KU_ENCIPHER_ONLY 0x0001 -# define X509v3_KU_DECIPHER_ONLY 0x8000 -# define X509v3_KU_UNDEF 0xffff +/*- + * : + * The KeyUsage BITSTRING is treated as a little-endian integer, hence bit `0` + * is 0x80, while bit `7` is 0x01 (the LSB of the integer value), bit `8` is + * then the MSB of the second octet, or 0x8000. + */ +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 /* (0) */ +# define X509v3_KU_NON_REPUDIATION 0x0040 /* (1) */ +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 /* (2) */ +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 /* (3) */ +# define X509v3_KU_KEY_AGREEMENT 0x0008 /* (4) */ +# define X509v3_KU_KEY_CERT_SIGN 0x0004 /* (5) */ +# define X509v3_KU_CRL_SIGN 0x0002 /* (6) */ +# define X509v3_KU_ENCIPHER_ONLY 0x0001 /* (7) */ +# define X509v3_KU_DECIPHER_ONLY 0x8000 /* (8) */ +# ifndef OPENSSL_NO_DEPRECATED_3_4 +# define X509v3_KU_UNDEF 0xffff /* vestigial, not used */ +# endif struct X509_algor_st { ASN1_OBJECT *algorithm; @@ -462,7 +473,12 @@ typedef struct PBKDF2PARAM_st { X509_ALGOR *prf; } PBKDF2PARAM; -#ifndef OPENSSL_NO_SCRYPT +typedef struct { + X509_ALGOR *keyDerivationFunc; + X509_ALGOR *messageAuthScheme; +} PBMAC1PARAM; + +# ifndef OPENSSL_NO_SCRYPT typedef struct SCRYPT_PARAMS_st { ASN1_OCTET_STRING *salt; ASN1_INTEGER *costParameter; @@ -470,7 +486,7 @@ typedef struct SCRYPT_PARAMS_st { ASN1_INTEGER *parallelizationParameter; ASN1_INTEGER *keyLength; } SCRYPT_PARAMS; -#endif +# endif #ifdef __cplusplus } @@ -603,6 +619,8 @@ EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); # endif @@ -651,6 +669,8 @@ EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); DECLARE_ASN1_DUP_FUNCTION(X509) @@ -884,12 +904,12 @@ int X509_REQ_get_signature_nid(const X509_REQ *req); int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); -EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); int X509_REQ_extension_nid(int nid); int *X509_REQ_get_extension_nids(void); void X509_REQ_set_extension_nids(int *nids); -STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(OSSL_FUTURE_CONST X509_REQ *req); int X509_REQ_add_extensions_nid(X509_REQ *req, const STACK_OF(X509_EXTENSION) *exts, int nid); int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); @@ -950,13 +970,14 @@ X509_REVOKED_get0_extensions(const X509_REVOKED *r); X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); -int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); -int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey); +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); int X509_chain_check_suiteb(int *perror_depth, X509 *x, STACK_OF(X509) *chain, unsigned long flags); int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); @@ -1077,6 +1098,8 @@ X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, X509_EXTENSION *ex, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_extensions(STACK_OF(X509_EXTENSION) **target, + const STACK_OF(X509_EXTENSION) *exts); int X509_get_ext_count(const X509 *x); int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); @@ -1198,9 +1221,10 @@ X509 *X509_find_by_subject(STACK_OF(X509) *sk, const X509_NAME *name); DECLARE_ASN1_FUNCTIONS(PBEPARAM) DECLARE_ASN1_FUNCTIONS(PBE2PARAM) DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) -#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(PBMAC1PARAM) +# ifndef OPENSSL_NO_SCRYPT DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) -#endif +# endif int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, const unsigned char *salt, int saltlen); @@ -1237,6 +1261,7 @@ X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, int prf_nid, int keylen, OSSL_LIB_CTX *libctx); +PBKDF2PARAM *PBMAC1_get1_pbkdf2_param(const X509_ALGOR *macalg); /* PKCS#8 utilities */ DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) @@ -1262,6 +1287,8 @@ int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len); +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, int ptype, void *pval, unsigned char *penc, int penclen); diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/x509_acert.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/x509_acert.h new file mode 100644 index 00000000000000..9dde625677f9a9 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/x509_acert.h @@ -0,0 +1,294 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/x509_acert.h.in + * + * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_X509_ACERT_H +# define OPENSSL_X509_ACERT_H +# pragma once + +# include +# include +# include + +typedef struct X509_acert_st X509_ACERT; +typedef struct X509_acert_info_st X509_ACERT_INFO; +typedef struct ossl_object_digest_info_st OSSL_OBJECT_DIGEST_INFO; +typedef struct ossl_issuer_serial_st OSSL_ISSUER_SERIAL; +typedef struct X509_acert_issuer_v2form_st X509_ACERT_ISSUER_V2FORM; + +DECLARE_ASN1_FUNCTIONS(X509_ACERT) +DECLARE_ASN1_DUP_FUNCTION(X509_ACERT) +DECLARE_ASN1_ITEM(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_OBJECT_DIGEST_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_ISSUER_SERIAL) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_ISSUER_V2FORM) + +# ifndef OPENSSL_NO_STDIO +X509_ACERT *d2i_X509_ACERT_fp(FILE *fp, X509_ACERT **acert); +int i2d_X509_ACERT_fp(FILE *fp, const X509_ACERT *acert); +# endif + +DECLARE_PEM_rw(X509_ACERT, X509_ACERT) + +X509_ACERT *d2i_X509_ACERT_bio(BIO *bp, X509_ACERT **acert); +int i2d_X509_ACERT_bio(BIO *bp, const X509_ACERT *acert); + +int X509_ACERT_sign(X509_ACERT *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_ACERT_sign_ctx(X509_ACERT *x, EVP_MD_CTX *ctx); +int X509_ACERT_verify(X509_ACERT *a, EVP_PKEY *r); + +# define X509_ACERT_VERSION_2 1 + +const GENERAL_NAMES *X509_ACERT_get0_holder_entityName(const X509_ACERT *x); +const OSSL_ISSUER_SERIAL *X509_ACERT_get0_holder_baseCertId(const X509_ACERT *x); +const OSSL_OBJECT_DIGEST_INFO * X509_ACERT_get0_holder_digest(const X509_ACERT *x); +const X509_NAME *X509_ACERT_get0_issuerName(const X509_ACERT *x); +long X509_ACERT_get_version(const X509_ACERT *x); +void X509_ACERT_get0_signature(const X509_ACERT *x, + const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_ACERT_get_signature_nid(const X509_ACERT *x); +const X509_ALGOR *X509_ACERT_get0_info_sigalg(const X509_ACERT *x); +const ASN1_INTEGER *X509_ACERT_get0_serialNumber(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notBefore(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notAfter(const X509_ACERT *x); +const ASN1_BIT_STRING *X509_ACERT_get0_issuerUID(const X509_ACERT *x); + +int X509_ACERT_print(BIO *bp, X509_ACERT *x); +int X509_ACERT_print_ex(BIO *bp, X509_ACERT *x, unsigned long nmflags, + unsigned long cflag); + +int X509_ACERT_get_attr_count(const X509_ACERT *x); +int X509_ACERT_get_attr_by_NID(const X509_ACERT *x, int nid, int lastpos); +int X509_ACERT_get_attr_by_OBJ(const X509_ACERT *x, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_ACERT_get_attr(const X509_ACERT *x, int loc); +X509_ATTRIBUTE *X509_ACERT_delete_attr(X509_ACERT *x, int loc); + +void *X509_ACERT_get_ext_d2i(const X509_ACERT *x, int nid, int *crit, int *idx); +int X509_ACERT_add1_ext_i2d(X509_ACERT *x, int nid, void *value, int crit, + unsigned long flags); +const STACK_OF(X509_EXTENSION) *X509_ACERT_get0_extensions(const X509_ACERT *x); + +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY 0 +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY_CERT 1 +# define OSSL_OBJECT_DIGEST_INFO_OTHER 2 /* must not be used in RFC 5755 profile */ +int X509_ACERT_set_version(X509_ACERT *x, long version); +void X509_ACERT_set0_holder_entityName(X509_ACERT *x, GENERAL_NAMES *name); +void X509_ACERT_set0_holder_baseCertId(X509_ACERT *x, OSSL_ISSUER_SERIAL *isss); +void X509_ACERT_set0_holder_digest(X509_ACERT *x, + OSSL_OBJECT_DIGEST_INFO *dinfo); + +int X509_ACERT_add1_attr(X509_ACERT *x, X509_ATTRIBUTE *attr); +int X509_ACERT_add1_attr_by_OBJ(X509_ACERT *x, const ASN1_OBJECT *obj, + int type, const void *bytes, int len); +int X509_ACERT_add1_attr_by_NID(X509_ACERT *x, int nid, int type, + const void *bytes, int len); +int X509_ACERT_add1_attr_by_txt(X509_ACERT *x, const char *attrname, int type, + const unsigned char *bytes, int len); +int X509_ACERT_add_attr_nconf(CONF *conf, const char *section, + X509_ACERT *acert); + +int X509_ACERT_set1_issuerName(X509_ACERT *x, const X509_NAME *name); +int X509_ACERT_set1_serialNumber(X509_ACERT *x, const ASN1_INTEGER *serial); +int X509_ACERT_set1_notBefore(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); +int X509_ACERT_set1_notAfter(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); + +void OSSL_OBJECT_DIGEST_INFO_get0_digest(const OSSL_OBJECT_DIGEST_INFO *o, + int *digestedObjectType, + const X509_ALGOR **digestAlgorithm, + const ASN1_BIT_STRING **digest); + +int OSSL_OBJECT_DIGEST_INFO_set1_digest(OSSL_OBJECT_DIGEST_INFO *o, + int digestedObjectType, + X509_ALGOR *digestAlgorithm, + ASN1_BIT_STRING *digest); + +const X509_NAME *OSSL_ISSUER_SERIAL_get0_issuer(const OSSL_ISSUER_SERIAL *isss); +const ASN1_INTEGER *OSSL_ISSUER_SERIAL_get0_serial(const OSSL_ISSUER_SERIAL *isss); +const ASN1_BIT_STRING *OSSL_ISSUER_SERIAL_get0_issuerUID(const OSSL_ISSUER_SERIAL *isss); + +int OSSL_ISSUER_SERIAL_set1_issuer(OSSL_ISSUER_SERIAL *isss, + const X509_NAME *issuer); +int OSSL_ISSUER_SERIAL_set1_serial(OSSL_ISSUER_SERIAL *isss, + const ASN1_INTEGER *serial); +int OSSL_ISSUER_SERIAL_set1_issuerUID(OSSL_ISSUER_SERIAL *isss, + const ASN1_BIT_STRING *uid); + +# define OSSL_IETFAS_OCTETS 0 +# define OSSL_IETFAS_OID 1 +# define OSSL_IETFAS_STRING 2 + +typedef struct OSSL_IETF_ATTR_SYNTAX_VALUE_st OSSL_IETF_ATTR_SYNTAX_VALUE; +typedef struct OSSL_IETF_ATTR_SYNTAX_st OSSL_IETF_ATTR_SYNTAX; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_value(sk, idx) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new(cmp) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_null() ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (n)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete(sk, i) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (i))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete_ptr(sk, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_pop(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_shift(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_shift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk),ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), (idx)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set(sk, idx, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_set(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), pnum) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_dup(sk) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_copyfunc_type(copyfunc), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set_cmp_func(sk, cmp) ((sk_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) + + +DECLARE_ASN1_ITEM(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX) + +const GENERAL_NAMES * +OSSL_IETF_ATTR_SYNTAX_get0_policyAuthority(const OSSL_IETF_ATTR_SYNTAX *a); +void OSSL_IETF_ATTR_SYNTAX_set0_policyAuthority(OSSL_IETF_ATTR_SYNTAX *a, + GENERAL_NAMES *names); + +int OSSL_IETF_ATTR_SYNTAX_get_value_num(const OSSL_IETF_ATTR_SYNTAX *a); +void *OSSL_IETF_ATTR_SYNTAX_get0_value(const OSSL_IETF_ATTR_SYNTAX *a, + int ind, int *type); +int OSSL_IETF_ATTR_SYNTAX_add1_value(OSSL_IETF_ATTR_SYNTAX *a, int type, + void *data); +int OSSL_IETF_ATTR_SYNTAX_print(BIO *bp, OSSL_IETF_ATTR_SYNTAX *a, int indent); + +struct TARGET_CERT_st { + OSSL_ISSUER_SERIAL *targetCertificate; + GENERAL_NAME *targetName; + OSSL_OBJECT_DIGEST_INFO *certDigestInfo; +}; + +typedef struct TARGET_CERT_st OSSL_TARGET_CERT; + +# define OSSL_TGT_TARGET_NAME 0 +# define OSSL_TGT_TARGET_GROUP 1 +# define OSSL_TGT_TARGET_CERT 2 + +typedef struct TARGET_st { + int type; + union { + GENERAL_NAME *targetName; + GENERAL_NAME *targetGroup; + OSSL_TARGET_CERT *targetCert; + } choice; +} OSSL_TARGET; + +typedef STACK_OF(OSSL_TARGET) OSSL_TARGETS; +typedef STACK_OF(OSSL_TARGETS) OSSL_TARGETING_INFORMATION; + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGET, OSSL_TARGET, OSSL_TARGET) +#define sk_OSSL_TARGET_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_value(sk, idx) ((OSSL_TARGET *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGET_sk_type(sk), (idx))) +#define sk_OSSL_TARGET_new(cmp) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new(ossl_check_OSSL_TARGET_compfunc_type(cmp))) +#define sk_OSSL_TARGET_new_null() ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGET_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGET_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGET_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGET_sk_type(sk), (n)) +#define sk_OSSL_TARGET_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_delete(sk, i) ((OSSL_TARGET *)OPENSSL_sk_delete(ossl_check_OSSL_TARGET_sk_type(sk), (i))) +#define sk_OSSL_TARGET_delete_ptr(sk, ptr) ((OSSL_TARGET *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_pop(sk) ((OSSL_TARGET *)OPENSSL_sk_pop(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_shift(sk) ((OSSL_TARGET *)OPENSSL_sk_shift(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGET_sk_type(sk),ossl_check_OSSL_TARGET_freefunc_type(freefunc)) +#define sk_OSSL_TARGET_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), (idx)) +#define sk_OSSL_TARGET_set(sk, idx, ptr) ((OSSL_TARGET *)OPENSSL_sk_set(ossl_check_OSSL_TARGET_sk_type(sk), (idx), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), pnum) +#define sk_OSSL_TARGET_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_dup(sk) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_copyfunc_type(copyfunc), ossl_check_OSSL_TARGET_freefunc_type(freefunc))) +#define sk_OSSL_TARGET_set_cmp_func(sk, cmp) ((sk_OSSL_TARGET_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGETS, OSSL_TARGETS, OSSL_TARGETS) +#define sk_OSSL_TARGETS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_value(sk, idx) ((OSSL_TARGETS *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGETS_sk_type(sk), (idx))) +#define sk_OSSL_TARGETS_new(cmp) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new(ossl_check_OSSL_TARGETS_compfunc_type(cmp))) +#define sk_OSSL_TARGETS_new_null() ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGETS_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGETS_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGETS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGETS_sk_type(sk), (n)) +#define sk_OSSL_TARGETS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_delete(sk, i) ((OSSL_TARGETS *)OPENSSL_sk_delete(ossl_check_OSSL_TARGETS_sk_type(sk), (i))) +#define sk_OSSL_TARGETS_delete_ptr(sk, ptr) ((OSSL_TARGETS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_pop(sk) ((OSSL_TARGETS *)OPENSSL_sk_pop(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_shift(sk) ((OSSL_TARGETS *)OPENSSL_sk_shift(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGETS_sk_type(sk),ossl_check_OSSL_TARGETS_freefunc_type(freefunc)) +#define sk_OSSL_TARGETS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), (idx)) +#define sk_OSSL_TARGETS_set(sk, idx, ptr) ((OSSL_TARGETS *)OPENSSL_sk_set(ossl_check_OSSL_TARGETS_sk_type(sk), (idx), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), pnum) +#define sk_OSSL_TARGETS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_dup(sk) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_copyfunc_type(copyfunc), ossl_check_OSSL_TARGETS_freefunc_type(freefunc))) +#define sk_OSSL_TARGETS_set_cmp_func(sk, cmp) ((sk_OSSL_TARGETS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_compfunc_type(cmp))) + + +DECLARE_ASN1_FUNCTIONS(OSSL_TARGET) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETS) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETING_INFORMATION) + +typedef STACK_OF(OSSL_ISSUER_SERIAL) OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL) +#define sk_OSSL_ISSUER_SERIAL_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_value(sk, idx) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_value(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), (idx))) +#define sk_OSSL_ISSUER_SERIAL_new(cmp) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) +#define sk_OSSL_ISSUER_SERIAL_new_null() ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ISSUER_SERIAL_new_reserve(cmp, n) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp), (n))) +#define sk_OSSL_ISSUER_SERIAL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (n)) +#define sk_OSSL_ISSUER_SERIAL_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_delete(sk, i) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (i))) +#define sk_OSSL_ISSUER_SERIAL_delete_ptr(sk, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_pop(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_pop(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_shift(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_shift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk),ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc)) +#define sk_OSSL_ISSUER_SERIAL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), (idx)) +#define sk_OSSL_ISSUER_SERIAL_set(sk, idx, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_set(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (idx), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), pnum) +#define sk_OSSL_ISSUER_SERIAL_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_dup(sk) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_copyfunc_type(copyfunc), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc))) +#define sk_OSSL_ISSUER_SERIAL_set_cmp_func(sk, cmp) ((sk_OSSL_ISSUER_SERIAL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) + + +#endif diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/x509_vfy.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/x509_vfy.h index 29b0e147adcab1..c9bdc3b39d685d 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/x509_vfy.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/x509_vfy.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509_vfy.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -411,6 +411,7 @@ X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ # define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 # define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 # define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +# define X509_V_ERR_RPK_UNTRUSTED 95 /* Certificate verify flags */ # ifndef OPENSSL_NO_DEPRECATED_1_1_0 @@ -491,71 +492,72 @@ int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); X509_STORE *X509_STORE_new(void); -void X509_STORE_free(X509_STORE *v); -int X509_STORE_lock(X509_STORE *ctx); -int X509_STORE_unlock(X509_STORE *ctx); -int X509_STORE_up_ref(X509_STORE *v); -STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *v); -STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *st); -STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get1_objects(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, const X509_NAME *nm); STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, const X509_NAME *nm); -int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); -int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); -int X509_STORE_set_trust(X509_STORE *ctx, int trust); -int X509_STORE_set1_param(X509_STORE *ctx, const X509_VERIFY_PARAM *pm); -X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *ctx); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); -void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); #define X509_STORE_set_verify_func(ctx, func) \ X509_STORE_set_verify((ctx),(func)) void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, X509_STORE_CTX_verify_fn verify); -X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *ctx); -void X509_STORE_set_verify_cb(X509_STORE *ctx, +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, X509_STORE_CTX_verify_cb verify_cb); # define X509_STORE_set_verify_cb_func(ctx,func) \ X509_STORE_set_verify_cb((ctx),(func)) -X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *ctx); -void X509_STORE_set_get_issuer(X509_STORE *ctx, +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, X509_STORE_CTX_get_issuer_fn get_issuer); -X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *ctx); -void X509_STORE_set_check_issued(X509_STORE *ctx, +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, X509_STORE_CTX_check_issued_fn check_issued); -X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *ctx); -void X509_STORE_set_check_revocation(X509_STORE *ctx, +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, X509_STORE_CTX_check_revocation_fn check_revocation); X509_STORE_CTX_check_revocation_fn - X509_STORE_get_check_revocation(const X509_STORE *ctx); -void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, X509_STORE_CTX_get_crl_fn get_crl); -X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *ctx); -void X509_STORE_set_check_crl(X509_STORE *ctx, +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, X509_STORE_CTX_check_crl_fn check_crl); -X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *ctx); -void X509_STORE_set_cert_crl(X509_STORE *ctx, +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, X509_STORE_CTX_cert_crl_fn cert_crl); -X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *ctx); -void X509_STORE_set_check_policy(X509_STORE *ctx, +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, X509_STORE_CTX_check_policy_fn check_policy); -X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *ctx); -void X509_STORE_set_lookup_certs(X509_STORE *ctx, +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, X509_STORE_CTX_lookup_certs_fn lookup_certs); -X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *ctx); -void X509_STORE_set_lookup_crls(X509_STORE *ctx, +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, X509_STORE_CTX_lookup_crls_fn lookup_crls); #define X509_STORE_set_lookup_crls_cb(ctx, func) \ X509_STORE_set_lookup_crls((ctx), (func)) -X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *ctx); -void X509_STORE_set_cleanup(X509_STORE *ctx, +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, X509_STORE_CTX_cleanup_fn cleanup); -X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); #define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) -int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); -void *X509_STORE_get_ex_data(const X509_STORE *ctx, int idx); +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); X509_STORE_CTX *X509_STORE_CTX_new(void); @@ -565,11 +567,14 @@ int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); void X509_STORE_CTX_free(X509_STORE_CTX *ctx); int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY* rpk); void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, @@ -579,6 +584,8 @@ X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); @@ -600,7 +607,7 @@ X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); # define X509_STORE_get1_crl X509_STORE_CTX_get1_crls #endif -X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); X509_LOOKUP_METHOD *X509_LOOKUP_file(void); X509_LOOKUP_METHOD *X509_LOOKUP_store(void); @@ -685,8 +692,8 @@ X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( const X509_LOOKUP_METHOD *method); -int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); -int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, @@ -730,23 +737,21 @@ void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); -int X509_STORE_load_file(X509_STORE *ctx, const char *file); -int X509_STORE_load_path(X509_STORE *ctx, const char *path); -int X509_STORE_load_store(X509_STORE *ctx, const char *store); -int X509_STORE_load_locations(X509_STORE *ctx, - const char *file, - const char *dir); -int X509_STORE_set_default_paths(X509_STORE *ctx); +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); -int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file, +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_store_ex(X509_STORE *ctx, const char *store, +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file, - const char *dir, OSSL_LIB_CTX *libctx, - const char *propq); -int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OSSL_LIB_CTX *libctx, - const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); #define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) @@ -764,6 +769,7 @@ X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); @@ -773,6 +779,8 @@ int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); @@ -804,6 +812,7 @@ int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, unsigned long flags); unsigned long X509_VERIFY_PARAM_get_flags(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_get_purpose(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/x509v3.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/x509v3.h index 20b67455f2061d..b8dabac35a4915 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/x509v3.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/x509v3.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509v3.h.in * - * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -146,6 +149,11 @@ typedef struct BASIC_CONSTRAINTS_st { ASN1_INTEGER *pathlen; } BASIC_CONSTRAINTS; +typedef struct OSSL_BASIC_ATTR_CONSTRAINTS_st { + int authority; + ASN1_INTEGER *pathlen; +} OSSL_BASIC_ATTR_CONSTRAINTS; + typedef struct PKEY_USAGE_PERIOD_st { ASN1_GENERALIZEDTIME *notBefore; ASN1_GENERALIZEDTIME *notAfter; @@ -198,6 +206,8 @@ typedef struct ACCESS_DESCRIPTION_st { GENERAL_NAME *location; } ACCESS_DESCRIPTION; +int GENERAL_NAME_set1_X509_NAME(GENERAL_NAME **tgt, const X509_NAME *src); + SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) #define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) #define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) @@ -294,6 +304,7 @@ typedef struct DIST_POINT_NAME_st { /* If relativename then this contains the full distribution point name */ X509_NAME *dpname; } DIST_POINT_NAME; +DECLARE_ASN1_DUP_FUNCTION(DIST_POINT_NAME) /* All existing reasons */ # define CRLDP_ALL_REASONS 0x807f @@ -659,15 +670,16 @@ struct ISSUING_DIST_POINT_st { # define EXFLAG_SAN_CRITICAL 0x80000 # define EXFLAG_NO_FINGERPRINT 0x100000 -# define KU_DIGITAL_SIGNATURE 0x0080 -# define KU_NON_REPUDIATION 0x0040 -# define KU_KEY_ENCIPHERMENT 0x0020 -# define KU_DATA_ENCIPHERMENT 0x0010 -# define KU_KEY_AGREEMENT 0x0008 -# define KU_KEY_CERT_SIGN 0x0004 -# define KU_CRL_SIGN 0x0002 -# define KU_ENCIPHER_ONLY 0x0001 -# define KU_DECIPHER_ONLY 0x8000 +/* https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3 */ +# define KU_DIGITAL_SIGNATURE X509v3_KU_DIGITAL_SIGNATURE +# define KU_NON_REPUDIATION X509v3_KU_NON_REPUDIATION +# define KU_KEY_ENCIPHERMENT X509v3_KU_KEY_ENCIPHERMENT +# define KU_DATA_ENCIPHERMENT X509v3_KU_DATA_ENCIPHERMENT +# define KU_KEY_AGREEMENT X509v3_KU_KEY_AGREEMENT +# define KU_KEY_CERT_SIGN X509v3_KU_KEY_CERT_SIGN +# define KU_CRL_SIGN X509v3_KU_CRL_SIGN +# define KU_ENCIPHER_ONLY X509v3_KU_ENCIPHER_ONLY +# define KU_DECIPHER_ONLY X509v3_KU_DECIPHER_ONLY # define NS_SSL_CLIENT 0x80 # define NS_SSL_SERVER 0x40 @@ -729,7 +741,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) #define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) - +# define X509_PURPOSE_DEFAULT_ANY 0 # define X509_PURPOSE_SSL_CLIENT 1 # define X509_PURPOSE_SSL_SERVER 2 # define X509_PURPOSE_NS_SSL_SERVER 3 @@ -739,9 +751,10 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509_PURPOSE_ANY 7 # define X509_PURPOSE_OCSP_HELPER 8 # define X509_PURPOSE_TIMESTAMP_SIGN 9 +# define X509_PURPOSE_CODE_SIGN 10 # define X509_PURPOSE_MIN 1 -# define X509_PURPOSE_MAX 9 +# define X509_PURPOSE_MAX 10 /* Flags for X509V3_EXT_print() */ @@ -767,6 +780,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509V3_ADD_SILENT 0x10 DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) +DECLARE_ASN1_FUNCTIONS(OSSL_BASIC_ATTR_CONSTRAINTS) DECLARE_ASN1_FUNCTIONS(SXNET) DECLARE_ASN1_FUNCTIONS(SXNETID) @@ -976,7 +990,6 @@ int X509V3_extensions_print(BIO *out, const char *title, int X509_check_ca(X509 *x); int X509_check_purpose(X509 *x, int id, int ca); int X509_supported_extension(X509_EXTENSION *ex); -int X509_PURPOSE_set(int *p, int purpose); int X509_check_issued(X509 *issuer, X509 *subject); int X509_check_akid(const X509 *issuer, const AUTHORITY_KEYID *akid); void X509_set_proxy_flag(X509 *x); @@ -992,22 +1005,26 @@ const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); int X509_PURPOSE_get_count(void); -X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_unused_id(OSSL_LIB_CTX *libctx); int X509_PURPOSE_get_by_sname(const char *sname); int X509_PURPOSE_get_by_id(int id); int X509_PURPOSE_add(int id, int trust, int flags, int (*ck) (const X509_PURPOSE *, const X509 *, int), const char *name, const char *sname, void *arg); +void X509_PURPOSE_cleanup(void); + +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_id(const X509_PURPOSE *); char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); -void X509_PURPOSE_cleanup(void); -int X509_PURPOSE_get_id(const X509_PURPOSE *); +int X509_PURPOSE_set(int *p, int purpose); STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); + /* Flags for X509_check_* functions */ /* @@ -1444,6 +1461,507 @@ const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( void PROFESSION_INFO_set0_registrationNumber( PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); +int OSSL_GENERAL_NAMES_print(BIO *out, GENERAL_NAMES *gens, int indent); + +typedef STACK_OF(X509_ATTRIBUTE) OSSL_ATTRIBUTES_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTES_SYNTAX) + +typedef STACK_OF(USERNOTICE) OSSL_USER_NOTICE_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_USER_NOTICE_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(USERNOTICE, USERNOTICE, USERNOTICE) +#define sk_USERNOTICE_num(sk) OPENSSL_sk_num(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_value(sk, idx) ((USERNOTICE *)OPENSSL_sk_value(ossl_check_const_USERNOTICE_sk_type(sk), (idx))) +#define sk_USERNOTICE_new(cmp) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new(ossl_check_USERNOTICE_compfunc_type(cmp))) +#define sk_USERNOTICE_new_null() ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_null()) +#define sk_USERNOTICE_new_reserve(cmp, n) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_reserve(ossl_check_USERNOTICE_compfunc_type(cmp), (n))) +#define sk_USERNOTICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_USERNOTICE_sk_type(sk), (n)) +#define sk_USERNOTICE_free(sk) OPENSSL_sk_free(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_zero(sk) OPENSSL_sk_zero(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_delete(sk, i) ((USERNOTICE *)OPENSSL_sk_delete(ossl_check_USERNOTICE_sk_type(sk), (i))) +#define sk_USERNOTICE_delete_ptr(sk, ptr) ((USERNOTICE *)OPENSSL_sk_delete_ptr(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_pop(sk) ((USERNOTICE *)OPENSSL_sk_pop(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_shift(sk) ((USERNOTICE *)OPENSSL_sk_shift(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_USERNOTICE_sk_type(sk),ossl_check_USERNOTICE_freefunc_type(freefunc)) +#define sk_USERNOTICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), (idx)) +#define sk_USERNOTICE_set(sk, idx, ptr) ((USERNOTICE *)OPENSSL_sk_set(ossl_check_USERNOTICE_sk_type(sk), (idx), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), pnum) +#define sk_USERNOTICE_sort(sk) OPENSSL_sk_sort(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_dup(sk) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_dup(ossl_check_const_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_deep_copy(ossl_check_const_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_copyfunc_type(copyfunc), ossl_check_USERNOTICE_freefunc_type(freefunc))) +#define sk_USERNOTICE_set_cmp_func(sk, cmp) ((sk_USERNOTICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_compfunc_type(cmp))) + + +typedef struct OSSL_ROLE_SPEC_CERT_ID_st { + GENERAL_NAME *roleName; + GENERAL_NAME *roleCertIssuer; + ASN1_INTEGER *roleCertSerialNumber; + GENERAL_NAMES *roleCertLocator; +} OSSL_ROLE_SPEC_CERT_ID; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID) +#define sk_OSSL_ROLE_SPEC_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_value(sk, idx) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_value(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new(cmp) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_null() ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_reserve(cmp, n) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp), (n))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (n)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete(sk, i) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (i))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete_ptr(sk, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_pop(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_shift(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_shift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk),ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), (idx)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set(sk, idx, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_set(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), pnum) +#define sk_OSSL_ROLE_SPEC_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_dup(sk) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_copyfunc_type(copyfunc), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set_cmp_func(sk, cmp) ((sk_OSSL_ROLE_SPEC_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) + + +typedef STACK_OF(OSSL_ROLE_SPEC_CERT_ID) OSSL_ROLE_SPEC_CERT_ID_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID_SYNTAX) +typedef struct OSSL_HASH_st { + X509_ALGOR *algorithmIdentifier; + ASN1_BIT_STRING *hashValue; +} OSSL_HASH; + +typedef struct OSSL_INFO_SYNTAX_POINTER_st { + GENERAL_NAMES *name; + OSSL_HASH *hash; +} OSSL_INFO_SYNTAX_POINTER; + +# define OSSL_INFO_SYNTAX_TYPE_CONTENT 0 +# define OSSL_INFO_SYNTAX_TYPE_POINTER 1 + +typedef struct OSSL_INFO_SYNTAX_st { + int type; + union { + ASN1_STRING *content; + OSSL_INFO_SYNTAX_POINTER *pointer; + } choice; +} OSSL_INFO_SYNTAX; + +typedef struct OSSL_PRIVILEGE_POLICY_ID_st { + ASN1_OBJECT *privilegePolicy; + OSSL_INFO_SYNTAX *privPolSyntax; +} OSSL_PRIVILEGE_POLICY_ID; + +typedef struct OSSL_ATTRIBUTE_DESCRIPTOR_st { + ASN1_OBJECT *identifier; + ASN1_STRING *attributeSyntax; + ASN1_UTF8STRING *name; + ASN1_UTF8STRING *description; + OSSL_PRIVILEGE_POLICY_ID *dominationRule; +} OSSL_ATTRIBUTE_DESCRIPTOR; + +DECLARE_ASN1_FUNCTIONS(OSSL_HASH) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX_POINTER) +DECLARE_ASN1_FUNCTIONS(OSSL_PRIVILEGE_POLICY_ID) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_DESCRIPTOR) + +typedef struct OSSL_TIME_SPEC_ABSOLUTE_st { + ASN1_GENERALIZEDTIME *startTime; + ASN1_GENERALIZEDTIME *endTime; +} OSSL_TIME_SPEC_ABSOLUTE; + +typedef struct OSSL_DAY_TIME_st { + ASN1_INTEGER *hour; + ASN1_INTEGER *minute; + ASN1_INTEGER *second; +} OSSL_DAY_TIME; + +typedef struct OSSL_DAY_TIME_BAND_st { + OSSL_DAY_TIME *startDayTime; + OSSL_DAY_TIME *endDayTime; +} OSSL_DAY_TIME_BAND; + +# define OSSL_NAMED_DAY_TYPE_INT 0 +# define OSSL_NAMED_DAY_TYPE_BIT 1 +# define OSSL_NAMED_DAY_INT_SUN 1 +# define OSSL_NAMED_DAY_INT_MON 2 +# define OSSL_NAMED_DAY_INT_TUE 3 +# define OSSL_NAMED_DAY_INT_WED 4 +# define OSSL_NAMED_DAY_INT_THU 5 +# define OSSL_NAMED_DAY_INT_FRI 6 +# define OSSL_NAMED_DAY_INT_SAT 7 +# define OSSL_NAMED_DAY_BIT_SUN 0 +# define OSSL_NAMED_DAY_BIT_MON 1 +# define OSSL_NAMED_DAY_BIT_TUE 2 +# define OSSL_NAMED_DAY_BIT_WED 3 +# define OSSL_NAMED_DAY_BIT_THU 4 +# define OSSL_NAMED_DAY_BIT_FRI 5 +# define OSSL_NAMED_DAY_BIT_SAT 6 + +typedef struct OSSL_NAMED_DAY_st { + int type; + union { + ASN1_INTEGER *intNamedDays; + ASN1_BIT_STRING *bitNamedDays; + } choice; +} OSSL_NAMED_DAY; + +# define OSSL_TIME_SPEC_X_DAY_OF_FIRST 0 +# define OSSL_TIME_SPEC_X_DAY_OF_SECOND 1 +# define OSSL_TIME_SPEC_X_DAY_OF_THIRD 2 +# define OSSL_TIME_SPEC_X_DAY_OF_FOURTH 3 +# define OSSL_TIME_SPEC_X_DAY_OF_FIFTH 4 + +typedef struct OSSL_TIME_SPEC_X_DAY_OF_st { + int type; + union { + OSSL_NAMED_DAY *first; + OSSL_NAMED_DAY *second; + OSSL_NAMED_DAY *third; + OSSL_NAMED_DAY *fourth; + OSSL_NAMED_DAY *fifth; + } choice; +} OSSL_TIME_SPEC_X_DAY_OF; + +# define OSSL_TIME_SPEC_DAY_TYPE_INT 0 +# define OSSL_TIME_SPEC_DAY_TYPE_BIT 1 +# define OSSL_TIME_SPEC_DAY_TYPE_DAY_OF 2 +# define OSSL_TIME_SPEC_DAY_BIT_SUN 0 +# define OSSL_TIME_SPEC_DAY_BIT_MON 1 +# define OSSL_TIME_SPEC_DAY_BIT_TUE 2 +# define OSSL_TIME_SPEC_DAY_BIT_WED 3 +# define OSSL_TIME_SPEC_DAY_BIT_THU 4 +# define OSSL_TIME_SPEC_DAY_BIT_FRI 5 +# define OSSL_TIME_SPEC_DAY_BIT_SAT 6 +# define OSSL_TIME_SPEC_DAY_INT_SUN 1 +# define OSSL_TIME_SPEC_DAY_INT_MON 2 +# define OSSL_TIME_SPEC_DAY_INT_TUE 3 +# define OSSL_TIME_SPEC_DAY_INT_WED 4 +# define OSSL_TIME_SPEC_DAY_INT_THU 5 +# define OSSL_TIME_SPEC_DAY_INT_FRI 6 +# define OSSL_TIME_SPEC_DAY_INT_SAT 7 + +typedef struct OSSL_TIME_SPEC_DAY_st { + int type; + union { + STACK_OF(ASN1_INTEGER) *intDay; + ASN1_BIT_STRING *bitDay; + OSSL_TIME_SPEC_X_DAY_OF *dayOf; + } choice; +} OSSL_TIME_SPEC_DAY; + +# define OSSL_TIME_SPEC_WEEKS_TYPE_ALL 0 +# define OSSL_TIME_SPEC_WEEKS_TYPE_INT 1 +# define OSSL_TIME_SPEC_WEEKS_TYPE_BIT 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_1 0 +# define OSSL_TIME_SPEC_BIT_WEEKS_2 1 +# define OSSL_TIME_SPEC_BIT_WEEKS_3 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_4 3 +# define OSSL_TIME_SPEC_BIT_WEEKS_5 4 + +typedef struct OSSL_TIME_SPEC_WEEKS_st { + int type; + union { + ASN1_NULL *allWeeks; + STACK_OF(ASN1_INTEGER) *intWeek; + ASN1_BIT_STRING *bitWeek; + } choice; +} OSSL_TIME_SPEC_WEEKS; + +# define OSSL_TIME_SPEC_MONTH_TYPE_ALL 0 +# define OSSL_TIME_SPEC_MONTH_TYPE_INT 1 +# define OSSL_TIME_SPEC_MONTH_TYPE_BIT 2 +# define OSSL_TIME_SPEC_INT_MONTH_JAN 1 +# define OSSL_TIME_SPEC_INT_MONTH_FEB 2 +# define OSSL_TIME_SPEC_INT_MONTH_MAR 3 +# define OSSL_TIME_SPEC_INT_MONTH_APR 4 +# define OSSL_TIME_SPEC_INT_MONTH_MAY 5 +# define OSSL_TIME_SPEC_INT_MONTH_JUN 6 +# define OSSL_TIME_SPEC_INT_MONTH_JUL 7 +# define OSSL_TIME_SPEC_INT_MONTH_AUG 8 +# define OSSL_TIME_SPEC_INT_MONTH_SEP 9 +# define OSSL_TIME_SPEC_INT_MONTH_OCT 10 +# define OSSL_TIME_SPEC_INT_MONTH_NOV 11 +# define OSSL_TIME_SPEC_INT_MONTH_DEC 12 +# define OSSL_TIME_SPEC_BIT_MONTH_JAN 0 +# define OSSL_TIME_SPEC_BIT_MONTH_FEB 1 +# define OSSL_TIME_SPEC_BIT_MONTH_MAR 2 +# define OSSL_TIME_SPEC_BIT_MONTH_APR 3 +# define OSSL_TIME_SPEC_BIT_MONTH_MAY 4 +# define OSSL_TIME_SPEC_BIT_MONTH_JUN 5 +# define OSSL_TIME_SPEC_BIT_MONTH_JUL 6 +# define OSSL_TIME_SPEC_BIT_MONTH_AUG 7 +# define OSSL_TIME_SPEC_BIT_MONTH_SEP 8 +# define OSSL_TIME_SPEC_BIT_MONTH_OCT 9 +# define OSSL_TIME_SPEC_BIT_MONTH_NOV 10 +# define OSSL_TIME_SPEC_BIT_MONTH_DEC 11 + +typedef struct OSSL_TIME_SPEC_MONTH_st { + int type; + union { + ASN1_NULL *allMonths; + STACK_OF(ASN1_INTEGER) *intMonth; + ASN1_BIT_STRING *bitMonth; + } choice; +} OSSL_TIME_SPEC_MONTH; + +typedef struct OSSL_TIME_PERIOD_st { + STACK_OF(OSSL_DAY_TIME_BAND) *timesOfDay; + OSSL_TIME_SPEC_DAY *days; + OSSL_TIME_SPEC_WEEKS *weeks; + OSSL_TIME_SPEC_MONTH *months; + STACK_OF(ASN1_INTEGER) *years; +} OSSL_TIME_PERIOD; + +# define OSSL_TIME_SPEC_TIME_TYPE_ABSOLUTE 0 +# define OSSL_TIME_SPEC_TIME_TYPE_PERIODIC 1 + +typedef struct OSSL_TIME_SPEC_TIME_st { + int type; + union { + OSSL_TIME_SPEC_ABSOLUTE *absolute; + STACK_OF(OSSL_TIME_PERIOD) *periodic; + } choice; +} OSSL_TIME_SPEC_TIME; + +typedef struct OSSL_TIME_SPEC_st { + OSSL_TIME_SPEC_TIME *time; + ASN1_BOOLEAN notThisTime; + ASN1_INTEGER *timeZone; +} OSSL_TIME_SPEC; + +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME_BAND) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_WEEKS) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_MONTH) +DECLARE_ASN1_FUNCTIONS(OSSL_NAMED_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_X_DAY_OF) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_ABSOLUTE) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_PERIOD) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TIME_PERIOD, OSSL_TIME_PERIOD, OSSL_TIME_PERIOD) +#define sk_OSSL_TIME_PERIOD_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_value(sk, idx) ((OSSL_TIME_PERIOD *)OPENSSL_sk_value(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), (idx))) +#define sk_OSSL_TIME_PERIOD_new(cmp) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) +#define sk_OSSL_TIME_PERIOD_new_null() ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TIME_PERIOD_new_reserve(cmp, n) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp), (n))) +#define sk_OSSL_TIME_PERIOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (n)) +#define sk_OSSL_TIME_PERIOD_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_delete(sk, i) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (i))) +#define sk_OSSL_TIME_PERIOD_delete_ptr(sk, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_pop(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_pop(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_shift(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_shift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk),ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc)) +#define sk_OSSL_TIME_PERIOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), (idx)) +#define sk_OSSL_TIME_PERIOD_set(sk, idx, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_set(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (idx), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), pnum) +#define sk_OSSL_TIME_PERIOD_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_dup(sk) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_copyfunc_type(copyfunc), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc))) +#define sk_OSSL_TIME_PERIOD_set_cmp_func(sk, cmp) ((sk_OSSL_TIME_PERIOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND) +#define sk_OSSL_DAY_TIME_BAND_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_value(sk, idx) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_value(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), (idx))) +#define sk_OSSL_DAY_TIME_BAND_new(cmp) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) +#define sk_OSSL_DAY_TIME_BAND_new_null() ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_null()) +#define sk_OSSL_DAY_TIME_BAND_new_reserve(cmp, n) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp), (n))) +#define sk_OSSL_DAY_TIME_BAND_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (n)) +#define sk_OSSL_DAY_TIME_BAND_free(sk) OPENSSL_sk_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_delete(sk, i) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (i))) +#define sk_OSSL_DAY_TIME_BAND_delete_ptr(sk, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_pop(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_pop(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_shift(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_shift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk),ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc)) +#define sk_OSSL_DAY_TIME_BAND_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), (idx)) +#define sk_OSSL_DAY_TIME_BAND_set(sk, idx, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_set(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (idx), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), pnum) +#define sk_OSSL_DAY_TIME_BAND_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_dup(sk) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_dup(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_copyfunc_type(copyfunc), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc))) +#define sk_OSSL_DAY_TIME_BAND_set_cmp_func(sk, cmp) ((sk_OSSL_DAY_TIME_BAND_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) + + +/* Attribute Type and Value */ +typedef struct atav_st { + ASN1_OBJECT *type; + ASN1_TYPE *value; +} OSSL_ATAV; + +typedef struct ATTRIBUTE_TYPE_MAPPING_st { + ASN1_OBJECT *local; + ASN1_OBJECT *remote; +} OSSL_ATTRIBUTE_TYPE_MAPPING; + +typedef struct ATTRIBUTE_VALUE_MAPPING_st { + OSSL_ATAV *local; + OSSL_ATAV *remote; +} OSSL_ATTRIBUTE_VALUE_MAPPING; + +# define OSSL_ATTR_MAP_TYPE 0 +# define OSSL_ATTR_MAP_VALUE 1 + +typedef struct ATTRIBUTE_MAPPING_st { + int type; + union { + OSSL_ATTRIBUTE_TYPE_MAPPING *typeMappings; + OSSL_ATTRIBUTE_VALUE_MAPPING *typeValueMappings; + } choice; +} OSSL_ATTRIBUTE_MAPPING; + +typedef STACK_OF(OSSL_ATTRIBUTE_MAPPING) OSSL_ATTRIBUTE_MAPPINGS; +DECLARE_ASN1_FUNCTIONS(OSSL_ATAV) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_TYPE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_VALUE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPINGS) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING) +#define sk_OSSL_ATTRIBUTE_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_value(sk, idx) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_value(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new(cmp) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_null() ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_reserve(cmp, n) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp), (n))) +#define sk_OSSL_ATTRIBUTE_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (n)) +#define sk_OSSL_ATTRIBUTE_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete(sk, i) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (i))) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete_ptr(sk, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_pop(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_shift(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_shift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk),ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc)) +#define sk_OSSL_ATTRIBUTE_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), (idx)) +#define sk_OSSL_ATTRIBUTE_MAPPING_set(sk, idx, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_set(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), pnum) +#define sk_OSSL_ATTRIBUTE_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_dup(sk) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_copyfunc_type(copyfunc), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc))) +#define sk_OSSL_ATTRIBUTE_MAPPING_set_cmp_func(sk, cmp) ((sk_OSSL_ATTRIBUTE_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) + + +# define OSSL_AAA_ATTRIBUTE_TYPE 0 +# define OSSL_AAA_ATTRIBUTE_VALUES 1 + +typedef struct ALLOWED_ATTRIBUTES_CHOICE_st { + int type; + union { + ASN1_OBJECT *attributeType; + X509_ATTRIBUTE *attributeTypeandValues; + } choice; +} OSSL_ALLOWED_ATTRIBUTES_CHOICE; + +typedef struct ALLOWED_ATTRIBUTES_ITEM_st { + STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *attributes; + GENERAL_NAME *holderDomain; +} OSSL_ALLOWED_ATTRIBUTES_ITEM; + +typedef STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) OSSL_ALLOWED_ATTRIBUTES_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_CHOICE) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_ITEM) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) + + +typedef struct AA_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + int dp_reasons; + ASN1_BOOLEAN indirectCRL; + ASN1_BOOLEAN containsUserAttributeCerts; + ASN1_BOOLEAN containsAACerts; + ASN1_BOOLEAN containsSOAPublicKeyCerts; +} OSSL_AA_DIST_POINT; + +DECLARE_ASN1_FUNCTIONS(OSSL_AA_DIST_POINT) + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/progs.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/progs.h index be55f61503d405..1b62ec37dec130 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/include/progs.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/progs.h @@ -56,6 +56,7 @@ extern int s_client_main(int argc, char *argv[]); extern int s_server_main(int argc, char *argv[]); extern int s_time_main(int argc, char *argv[]); extern int sess_id_main(int argc, char *argv[]); +extern int skeyutl_main(int argc, char *argv[]); extern int smime_main(int argc, char *argv[]); extern int speed_main(int argc, char *argv[]); extern int spkac_main(int argc, char *argv[]); @@ -110,6 +111,7 @@ extern const OPTIONS s_client_options[]; extern const OPTIONS s_server_options[]; extern const OPTIONS s_time_options[]; extern const OPTIONS sess_id_options[]; +extern const OPTIONS skeyutl_options[]; extern const OPTIONS smime_options[]; extern const OPTIONS speed_options[]; extern const OPTIONS spkac_options[]; diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/openssl-cl.gypi b/deps/openssl/config/archs/BSD-x86_64/asm/openssl-cl.gypi index bfe296a44f604b..5bba9b3227268a 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/openssl-cl.gypi +++ b/deps/openssl/config/archs/BSD-x86_64/asm/openssl-cl.gypi @@ -83,6 +83,7 @@ 'openssl/apps/s_server.c', 'openssl/apps/s_time.c', 'openssl/apps/sess_id.c', + 'openssl/apps/skeyutl.c', 'openssl/apps/smime.c', 'openssl/apps/speed.c', 'openssl/apps/spkac.c', @@ -98,12 +99,14 @@ 'openssl/apps/lib/app_rand.c', 'openssl/apps/lib/app_x509.c', 'openssl/apps/lib/apps.c', + 'openssl/apps/lib/apps_opt_printf.c', 'openssl/apps/lib/apps_ui.c', 'openssl/apps/lib/columns.c', 'openssl/apps/lib/engine.c', 'openssl/apps/lib/engine_loader.c', 'openssl/apps/lib/fmt.c', 'openssl/apps/lib/http_server.c', + 'openssl/apps/lib/log.c', 'openssl/apps/lib/names.c', 'openssl/apps/lib/opt.c', 'openssl/apps/lib/s_cb.c', diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/openssl-fips.gypi b/deps/openssl/config/archs/BSD-x86_64/asm/openssl-fips.gypi index e98affa3c77d90..cfcc959545aff6 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/openssl-fips.gypi +++ b/deps/openssl/config/archs/BSD-x86_64/asm/openssl-fips.gypi @@ -101,14 +101,15 @@ 'openssl/crypto/evp/kem.c', 'openssl/crypto/evp/keymgmt_lib.c', 'openssl/crypto/evp/keymgmt_meth.c', - 'openssl/crypto/evp/m_sigver.c', 'openssl/crypto/evp/mac_lib.c', 'openssl/crypto/evp/mac_meth.c', 'openssl/crypto/evp/p_lib.c', 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -116,6 +117,8 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', @@ -145,6 +148,16 @@ 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -153,6 +166,7 @@ 'openssl/crypto/modes/ofb128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/property/defn_cache.c', 'openssl/crypto/property/property.c', 'openssl/crypto/property/property_parse.c', @@ -180,7 +194,23 @@ 'openssl/crypto/sha/sha256.c', 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/stack/stack.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/providers/common/der/der_rsa_sig.c', 'openssl/providers/common/bio_prov.c', 'openssl/providers/common/capabilities.c', @@ -189,6 +219,7 @@ 'openssl/providers/common/provider_util.c', 'openssl/providers/common/securitycheck.c', 'openssl/providers/common/securitycheck_fips.c', + 'openssl/providers/fips/fipsindicator.c', 'openssl/providers/fips/fipsprov.c', 'openssl/providers/fips/self_test.c', 'openssl/providers/fips/self_test_kats.c', @@ -226,6 +257,8 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -233,29 +266,39 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/cmac_prov.c', 'openssl/providers/implementations/macs/gmac_prov.c', 'openssl/providers/implementations/macs/hmac_prov.c', 'openssl/providers/implementations/macs/kmac_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', + 'openssl/providers/implementations/rands/fips_crng_test.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/signature/dsa_sig.c', 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -266,7 +309,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/fips/fips_entry.c', ], @@ -276,10 +319,16 @@ './config/archs/BSD-x86_64/asm/crypto/aes/aesni-sha1-x86_64.s', './config/archs/BSD-x86_64/asm/crypto/aes/aesni-sha256-x86_64.s', './config/archs/BSD-x86_64/asm/crypto/aes/aesni-x86_64.s', + './config/archs/BSD-x86_64/asm/crypto/aes/aesni-xts-avx512.s', './config/archs/BSD-x86_64/asm/crypto/aes/bsaes-x86_64.s', './config/archs/BSD-x86_64/asm/crypto/aes/vpaes-x86_64.s', + './config/archs/BSD-x86_64/asm/crypto/bn/rsaz-2k-avx512.s', + './config/archs/BSD-x86_64/asm/crypto/bn/rsaz-2k-avxifma.s', + './config/archs/BSD-x86_64/asm/crypto/bn/rsaz-3k-avx512.s', + './config/archs/BSD-x86_64/asm/crypto/bn/rsaz-3k-avxifma.s', + './config/archs/BSD-x86_64/asm/crypto/bn/rsaz-4k-avx512.s', + './config/archs/BSD-x86_64/asm/crypto/bn/rsaz-4k-avxifma.s', './config/archs/BSD-x86_64/asm/crypto/bn/rsaz-avx2.s', - './config/archs/BSD-x86_64/asm/crypto/bn/rsaz-avx512.s', './config/archs/BSD-x86_64/asm/crypto/bn/rsaz-x86_64.s', './config/archs/BSD-x86_64/asm/crypto/bn/x86_64-gf2m.s', './config/archs/BSD-x86_64/asm/crypto/bn/x86_64-mont.s', @@ -288,8 +337,10 @@ './config/archs/BSD-x86_64/asm/crypto/chacha/chacha-x86_64.s', './config/archs/BSD-x86_64/asm/crypto/ec/ecp_nistz256-x86_64.s', './config/archs/BSD-x86_64/asm/crypto/ec/x25519-x86_64.s', + './config/archs/BSD-x86_64/asm/crypto/params_idx.c', './config/archs/BSD-x86_64/asm/crypto/x86_64cpuid.s', './config/archs/BSD-x86_64/asm/crypto/md5/md5-x86_64.s', + './config/archs/BSD-x86_64/asm/crypto/modes/aes-gcm-avx512.s', './config/archs/BSD-x86_64/asm/crypto/modes/aesni-gcm-x86_64.s', './config/archs/BSD-x86_64/asm/crypto/modes/ghash-x86_64.s', './config/archs/BSD-x86_64/asm/crypto/poly1305/poly1305-x86_64.s', @@ -308,7 +359,9 @@ './config/archs/BSD-x86_64/asm/providers/common/der/der_dsa_gen.c', './config/archs/BSD-x86_64/asm/providers/common/der/der_ec_gen.c', './config/archs/BSD-x86_64/asm/providers/common/der/der_ecx_gen.c', + './config/archs/BSD-x86_64/asm/providers/common/der/der_ml_dsa_gen.c', './config/archs/BSD-x86_64/asm/providers/common/der/der_rsa_gen.c', + './config/archs/BSD-x86_64/asm/providers/common/der/der_slh_dsa_gen.c', './config/archs/BSD-x86_64/asm/providers/common/der/der_wrap_gen.c', './config/archs/BSD-x86_64/asm/providers/legacy.ld', './config/archs/BSD-x86_64/asm/providers/fips.ld', diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/openssl.gypi b/deps/openssl/config/archs/BSD-x86_64/asm/openssl.gypi index f64b1e5b3bf451..6e425bd629a60d 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/openssl.gypi +++ b/deps/openssl/config/archs/BSD-x86_64/asm/openssl.gypi @@ -7,14 +7,15 @@ 'openssl/ssl/d1_srtp.c', 'openssl/ssl/methods.c', 'openssl/ssl/pqueue.c', + 'openssl/ssl/priority_queue.c', 'openssl/ssl/s3_enc.c', 'openssl/ssl/s3_lib.c', 'openssl/ssl/s3_msg.c', 'openssl/ssl/ssl_asn1.c', 'openssl/ssl/ssl_cert.c', + 'openssl/ssl/ssl_cert_comp.c', 'openssl/ssl/ssl_ciph.c', 'openssl/ssl/ssl_conf.c', - 'openssl/ssl/ssl_err.c', 'openssl/ssl/ssl_err_legacy.c', 'openssl/ssl/ssl_init.c', 'openssl/ssl/ssl_lib.c', @@ -31,12 +32,60 @@ 'openssl/ssl/tls13_enc.c', 'openssl/ssl/tls_depr.c', 'openssl/ssl/tls_srp.c', - 'openssl/ssl/record/dtls1_bitmap.c', + 'openssl/ssl/quic/cc_newreno.c', + 'openssl/ssl/quic/json_enc.c', + 'openssl/ssl/quic/qlog.c', + 'openssl/ssl/quic/qlog_event_helpers.c', + 'openssl/ssl/quic/quic_ackm.c', + 'openssl/ssl/quic/quic_cfq.c', + 'openssl/ssl/quic/quic_channel.c', + 'openssl/ssl/quic/quic_demux.c', + 'openssl/ssl/quic/quic_engine.c', + 'openssl/ssl/quic/quic_fc.c', + 'openssl/ssl/quic/quic_fifd.c', + 'openssl/ssl/quic/quic_impl.c', + 'openssl/ssl/quic/quic_lcidm.c', + 'openssl/ssl/quic/quic_method.c', + 'openssl/ssl/quic/quic_obj.c', + 'openssl/ssl/quic/quic_port.c', + 'openssl/ssl/quic/quic_rcidm.c', + 'openssl/ssl/quic/quic_reactor.c', + 'openssl/ssl/quic/quic_reactor_wait_ctx.c', + 'openssl/ssl/quic/quic_record_rx.c', + 'openssl/ssl/quic/quic_record_shared.c', + 'openssl/ssl/quic/quic_record_tx.c', + 'openssl/ssl/quic/quic_record_util.c', + 'openssl/ssl/quic/quic_rstream.c', + 'openssl/ssl/quic/quic_rx_depack.c', + 'openssl/ssl/quic/quic_sf_list.c', + 'openssl/ssl/quic/quic_srt_gen.c', + 'openssl/ssl/quic/quic_srtm.c', + 'openssl/ssl/quic/quic_sstream.c', + 'openssl/ssl/quic/quic_statm.c', + 'openssl/ssl/quic/quic_stream_map.c', + 'openssl/ssl/quic/quic_thread_assist.c', + 'openssl/ssl/quic/quic_tls.c', + 'openssl/ssl/quic/quic_tls_api.c', + 'openssl/ssl/quic/quic_trace.c', + 'openssl/ssl/quic/quic_tserver.c', + 'openssl/ssl/quic/quic_txp.c', + 'openssl/ssl/quic/quic_txpim.c', + 'openssl/ssl/quic/quic_types.c', + 'openssl/ssl/quic/quic_wire.c', + 'openssl/ssl/quic/quic_wire_pkt.c', + 'openssl/ssl/quic/uint_set.c', 'openssl/ssl/record/rec_layer_d1.c', 'openssl/ssl/record/rec_layer_s3.c', - 'openssl/ssl/record/ssl3_buffer.c', - 'openssl/ssl/record/ssl3_record.c', - 'openssl/ssl/record/ssl3_record_tls13.c', + 'openssl/ssl/record/methods/dtls_meth.c', + 'openssl/ssl/record/methods/ssl3_meth.c', + 'openssl/ssl/record/methods/tls13_meth.c', + 'openssl/ssl/record/methods/tls1_meth.c', + 'openssl/ssl/record/methods/tls_common.c', + 'openssl/ssl/record/methods/tls_multib.c', + 'openssl/ssl/record/methods/tlsany_meth.c', + 'openssl/ssl/rio/poll_builder.c', + 'openssl/ssl/rio/poll_immediate.c', + 'openssl/ssl/rio/rio_notifier.c', 'openssl/ssl/statem/extensions.c', 'openssl/ssl/statem/extensions_clnt.c', 'openssl/ssl/statem/extensions_cust.c', @@ -148,6 +197,7 @@ 'openssl/crypto/bio/bss_conn.c', 'openssl/crypto/bio/bss_core.c', 'openssl/crypto/bio/bss_dgram.c', + 'openssl/crypto/bio/bss_dgram_pair.c', 'openssl/crypto/bio/bss_fd.c', 'openssl/crypto/bio/bss_file.c', 'openssl/crypto/bio/bss_log.c', @@ -207,6 +257,7 @@ 'openssl/crypto/cmp/cmp_client.c', 'openssl/crypto/cmp/cmp_ctx.c', 'openssl/crypto/cmp/cmp_err.c', + 'openssl/crypto/cmp/cmp_genm.c', 'openssl/crypto/cmp/cmp_hdr.c', 'openssl/crypto/cmp/cmp_http.c', 'openssl/crypto/cmp/cmp_msg.c', @@ -383,7 +434,9 @@ 'openssl/crypto/err/err_all.c', 'openssl/crypto/err/err_all_legacy.c', 'openssl/crypto/err/err_blocks.c', + 'openssl/crypto/err/err_mark.c', 'openssl/crypto/err/err_prn.c', + 'openssl/crypto/err/err_save.c', 'openssl/crypto/ess/ess_asn1.c', 'openssl/crypto/ess/ess_err.c', 'openssl/crypto/ess/ess_lib.c', @@ -466,7 +519,9 @@ 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -474,7 +529,11 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', + 'openssl/crypto/hpke/hpke.c', + 'openssl/crypto/hpke/hpke_util.c', 'openssl/crypto/http/http_client.c', 'openssl/crypto/http/http_err.c', 'openssl/crypto/http/http_lib.c', @@ -488,6 +547,7 @@ 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', 'openssl/crypto/bsearch.c', + 'openssl/crypto/comp_methods.c', 'openssl/crypto/context.c', 'openssl/crypto/core_algorithm.c', 'openssl/crypto/core_fetch.c', @@ -497,10 +557,13 @@ 'openssl/crypto/cryptlib.c', 'openssl/crypto/ctype.c', 'openssl/crypto/cversion.c', + 'openssl/crypto/defaults.c', 'openssl/crypto/der_writer.c', + 'openssl/crypto/deterministic_nonce.c', 'openssl/crypto/ebcdic.c', 'openssl/crypto/ex_data.c', 'openssl/crypto/getenv.c', + 'openssl/crypto/indicator_core.c', 'openssl/crypto/info.c', 'openssl/crypto/init.c', 'openssl/crypto/initthread.c', @@ -524,12 +587,16 @@ 'openssl/crypto/provider_core.c', 'openssl/crypto/provider_predefined.c', 'openssl/crypto/punycode.c', + 'openssl/crypto/quic_vlint.c', 'openssl/crypto/self_test_core.c', + 'openssl/crypto/sleep.c', 'openssl/crypto/sparse_array.c', + 'openssl/crypto/ssl_err.c', 'openssl/crypto/threads_lib.c', 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', 'openssl/crypto/trace.c', 'openssl/crypto/uid.c', 'openssl/crypto/md4/md4_dgst.c', @@ -539,6 +606,15 @@ 'openssl/crypto/md5/md5_sha1.c', 'openssl/crypto/mdc2/mdc2_one.c', 'openssl/crypto/mdc2/mdc2dgst.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -550,6 +626,7 @@ 'openssl/crypto/modes/siv128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/objects/o_names.c', 'openssl/crypto/objects/obj_dat.c', 'openssl/crypto/objects/obj_err.c', @@ -613,6 +690,7 @@ 'openssl/crypto/rand/rand_lib.c', 'openssl/crypto/rand/rand_meth.c', 'openssl/crypto/rand/rand_pool.c', + 'openssl/crypto/rand/rand_uniform.c', 'openssl/crypto/rand/randfile.c', 'openssl/crypto/rc2/rc2_cbc.c', 'openssl/crypto/rc2/rc2_ecb.c', @@ -658,6 +736,16 @@ 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', 'openssl/crypto/siphash/siphash.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/sm2/sm2_crypt.c', 'openssl/crypto/sm2/sm2_err.c', 'openssl/crypto/sm2/sm2_key.c', @@ -675,6 +763,12 @@ 'openssl/crypto/store/store_register.c', 'openssl/crypto/store/store_result.c', 'openssl/crypto/store/store_strings.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/crypto/ts/ts_asn1.c', 'openssl/crypto/ts/ts_conf.c', 'openssl/crypto/ts/ts_err.c', @@ -702,14 +796,22 @@ 'openssl/crypto/x509/pcy_map.c', 'openssl/crypto/x509/pcy_node.c', 'openssl/crypto/x509/pcy_tree.c', + 'openssl/crypto/x509/t_acert.c', 'openssl/crypto/x509/t_crl.c', 'openssl/crypto/x509/t_req.c', 'openssl/crypto/x509/t_x509.c', + 'openssl/crypto/x509/v3_aaa.c', + 'openssl/crypto/x509/v3_ac_tgt.c', 'openssl/crypto/x509/v3_addr.c', 'openssl/crypto/x509/v3_admis.c', 'openssl/crypto/x509/v3_akeya.c', 'openssl/crypto/x509/v3_akid.c', 'openssl/crypto/x509/v3_asid.c', + 'openssl/crypto/x509/v3_attrdesc.c', + 'openssl/crypto/x509/v3_attrmap.c', + 'openssl/crypto/x509/v3_audit_id.c', + 'openssl/crypto/x509/v3_authattid.c', + 'openssl/crypto/x509/v3_battcons.c', 'openssl/crypto/x509/v3_bcons.c', 'openssl/crypto/x509/v3_bitst.c', 'openssl/crypto/x509/v3_conf.c', @@ -718,12 +820,17 @@ 'openssl/crypto/x509/v3_enum.c', 'openssl/crypto/x509/v3_extku.c', 'openssl/crypto/x509/v3_genn.c', + 'openssl/crypto/x509/v3_group_ac.c', 'openssl/crypto/x509/v3_ia5.c', + 'openssl/crypto/x509/v3_ind_iss.c', 'openssl/crypto/x509/v3_info.c', 'openssl/crypto/x509/v3_int.c', + 'openssl/crypto/x509/v3_iobo.c', 'openssl/crypto/x509/v3_ist.c', 'openssl/crypto/x509/v3_lib.c', 'openssl/crypto/x509/v3_ncons.c', + 'openssl/crypto/x509/v3_no_ass.c', + 'openssl/crypto/x509/v3_no_rev_avail.c', 'openssl/crypto/x509/v3_pci.c', 'openssl/crypto/x509/v3_pcia.c', 'openssl/crypto/x509/v3_pcons.c', @@ -731,13 +838,20 @@ 'openssl/crypto/x509/v3_pmaps.c', 'openssl/crypto/x509/v3_prn.c', 'openssl/crypto/x509/v3_purp.c', + 'openssl/crypto/x509/v3_rolespec.c', 'openssl/crypto/x509/v3_san.c', + 'openssl/crypto/x509/v3_sda.c', + 'openssl/crypto/x509/v3_single_use.c', 'openssl/crypto/x509/v3_skid.c', + 'openssl/crypto/x509/v3_soa_id.c', 'openssl/crypto/x509/v3_sxnet.c', + 'openssl/crypto/x509/v3_timespec.c', 'openssl/crypto/x509/v3_tlsf.c', + 'openssl/crypto/x509/v3_usernotice.c', 'openssl/crypto/x509/v3_utf8.c', 'openssl/crypto/x509/v3_utl.c', 'openssl/crypto/x509/v3err.c', + 'openssl/crypto/x509/x509_acert.c', 'openssl/crypto/x509/x509_att.c', 'openssl/crypto/x509/x509_cmp.c', 'openssl/crypto/x509/x509_d2.c', @@ -755,6 +869,7 @@ 'openssl/crypto/x509/x509_v3.c', 'openssl/crypto/x509/x509_vfy.c', 'openssl/crypto/x509/x509_vpm.c', + 'openssl/crypto/x509/x509aset.c', 'openssl/crypto/x509/x509cset.c', 'openssl/crypto/x509/x509name.c', 'openssl/crypto/x509/x509rset.c', @@ -764,6 +879,7 @@ 'openssl/crypto/x509/x_attrib.c', 'openssl/crypto/x509/x_crl.c', 'openssl/crypto/x509/x_exten.c', + 'openssl/crypto/x509/x_ietfatt.c', 'openssl/crypto/x509/x_name.c', 'openssl/crypto/x509/x_pubkey.c', 'openssl/crypto/x509/x_req.c', @@ -796,6 +912,9 @@ 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c', 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', @@ -820,7 +939,13 @@ 'openssl/providers/implementations/ciphers/cipher_cts.c', 'openssl/providers/implementations/ciphers/cipher_null.c', 'openssl/providers/implementations/ciphers/cipher_sm4.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm_hw.c', 'openssl/providers/implementations/ciphers/cipher_sm4_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts_hw.c', 'openssl/providers/implementations/ciphers/cipher_tdes.c', 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', 'openssl/providers/implementations/ciphers/cipher_tdes_default.c', @@ -849,11 +974,16 @@ 'openssl/providers/implementations/encode_decode/encode_key2ms.c', 'openssl/providers/implementations/encode_decode/encode_key2text.c', 'openssl/providers/implementations/encode_decode/endecoder_common.c', + 'openssl/providers/implementations/encode_decode/ml_common_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_dsa_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_kem_codecs.c', 'openssl/providers/implementations/exchange/dh_exch.c', 'openssl/providers/implementations/exchange/ecdh_exch.c', 'openssl/providers/implementations/exchange/ecx_exch.c', 'openssl/providers/implementations/exchange/kdf_exch.c', + 'openssl/providers/implementations/kdfs/argon2.c', 'openssl/providers/implementations/kdfs/hkdf.c', + 'openssl/providers/implementations/kdfs/hmacdrbg_kdf.c', 'openssl/providers/implementations/kdfs/kbkdf.c', 'openssl/providers/implementations/kdfs/krb5kdf.c', 'openssl/providers/implementations/kdfs/pbkdf2.c', @@ -864,6 +994,11 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ec_kem.c', + 'openssl/providers/implementations/kem/ecx_kem.c', + 'openssl/providers/implementations/kem/kem_util.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -871,7 +1006,11 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/blake2b_mac.c', 'openssl/providers/implementations/macs/blake2s_mac.c', 'openssl/providers/implementations/macs/cmac_prov.c', @@ -880,12 +1019,12 @@ 'openssl/providers/implementations/macs/kmac_prov.c', 'openssl/providers/implementations/macs/poly1305_prov.c', 'openssl/providers/implementations/macs/siphash_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', 'openssl/providers/implementations/rands/seed_src.c', + 'openssl/providers/implementations/rands/seed_src_jitter.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/rands/seeding/rand_cpu_x86.c', 'openssl/providers/implementations/rands/seeding/rand_tsc.c', @@ -895,17 +1034,23 @@ 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', 'openssl/providers/implementations/signature/sm2_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', 'openssl/providers/implementations/storemgmt/file_store.c', 'openssl/providers/implementations/storemgmt/file_store_any2obj.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -916,7 +1061,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/implementations/ciphers/cipher_blowfish.c', 'openssl/providers/implementations/ciphers/cipher_blowfish_hw.c', 'openssl/providers/implementations/ciphers/cipher_cast5.c', @@ -941,6 +1086,7 @@ 'openssl/providers/implementations/digests/ripemd_prov.c', 'openssl/providers/implementations/digests/wp_prov.c', 'openssl/providers/implementations/kdfs/pbkdf1.c', + 'openssl/providers/implementations/kdfs/pvkkdf.c', 'openssl/providers/prov_running.c', 'openssl/providers/legacyprov.c', ], @@ -950,10 +1096,16 @@ './config/archs/BSD-x86_64/asm/crypto/aes/aesni-sha1-x86_64.s', './config/archs/BSD-x86_64/asm/crypto/aes/aesni-sha256-x86_64.s', './config/archs/BSD-x86_64/asm/crypto/aes/aesni-x86_64.s', + './config/archs/BSD-x86_64/asm/crypto/aes/aesni-xts-avx512.s', './config/archs/BSD-x86_64/asm/crypto/aes/bsaes-x86_64.s', './config/archs/BSD-x86_64/asm/crypto/aes/vpaes-x86_64.s', + './config/archs/BSD-x86_64/asm/crypto/bn/rsaz-2k-avx512.s', + './config/archs/BSD-x86_64/asm/crypto/bn/rsaz-2k-avxifma.s', + './config/archs/BSD-x86_64/asm/crypto/bn/rsaz-3k-avx512.s', + './config/archs/BSD-x86_64/asm/crypto/bn/rsaz-3k-avxifma.s', + './config/archs/BSD-x86_64/asm/crypto/bn/rsaz-4k-avx512.s', + './config/archs/BSD-x86_64/asm/crypto/bn/rsaz-4k-avxifma.s', './config/archs/BSD-x86_64/asm/crypto/bn/rsaz-avx2.s', - './config/archs/BSD-x86_64/asm/crypto/bn/rsaz-avx512.s', './config/archs/BSD-x86_64/asm/crypto/bn/rsaz-x86_64.s', './config/archs/BSD-x86_64/asm/crypto/bn/x86_64-gf2m.s', './config/archs/BSD-x86_64/asm/crypto/bn/x86_64-mont.s', @@ -962,8 +1114,10 @@ './config/archs/BSD-x86_64/asm/crypto/chacha/chacha-x86_64.s', './config/archs/BSD-x86_64/asm/crypto/ec/ecp_nistz256-x86_64.s', './config/archs/BSD-x86_64/asm/crypto/ec/x25519-x86_64.s', + './config/archs/BSD-x86_64/asm/crypto/params_idx.c', './config/archs/BSD-x86_64/asm/crypto/x86_64cpuid.s', './config/archs/BSD-x86_64/asm/crypto/md5/md5-x86_64.s', + './config/archs/BSD-x86_64/asm/crypto/modes/aes-gcm-avx512.s', './config/archs/BSD-x86_64/asm/crypto/modes/aesni-gcm-x86_64.s', './config/archs/BSD-x86_64/asm/crypto/modes/ghash-x86_64.s', './config/archs/BSD-x86_64/asm/crypto/poly1305/poly1305-x86_64.s', @@ -982,7 +1136,9 @@ './config/archs/BSD-x86_64/asm/providers/common/der/der_dsa_gen.c', './config/archs/BSD-x86_64/asm/providers/common/der/der_ec_gen.c', './config/archs/BSD-x86_64/asm/providers/common/der/der_ecx_gen.c', + './config/archs/BSD-x86_64/asm/providers/common/der/der_ml_dsa_gen.c', './config/archs/BSD-x86_64/asm/providers/common/der/der_rsa_gen.c', + './config/archs/BSD-x86_64/asm/providers/common/der/der_slh_dsa_gen.c', './config/archs/BSD-x86_64/asm/providers/common/der/der_wrap_gen.c', './config/archs/BSD-x86_64/asm/providers/legacy.ld', './config/archs/BSD-x86_64/asm/providers/fips.ld', diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/providers/common/der/der_ml_dsa_gen.c b/deps/openssl/config/archs/BSD-x86_64/asm/providers/common/der/der_ml_dsa_gen.c new file mode 100644 index 00000000000000..4a8a113a268578 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm/providers/common/der/der_ml_dsa_gen.c @@ -0,0 +1,37 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_ml_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44] = { + DER_OID_V_id_ml_dsa_44 +}; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65] = { + DER_OID_V_id_ml_dsa_65 +}; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87] = { + DER_OID_V_id_ml_dsa_87 +}; + diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/providers/common/der/der_slh_dsa_gen.c b/deps/openssl/config/archs/BSD-x86_64/asm/providers/common/der/der_slh_dsa_gen.c new file mode 100644 index 00000000000000..1419a9515097dd --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm/providers/common/der/der_slh_dsa_gen.c @@ -0,0 +1,100 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_slh_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s] = { + DER_OID_V_id_slh_dsa_sha2_128s +}; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f] = { + DER_OID_V_id_slh_dsa_sha2_128f +}; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s] = { + DER_OID_V_id_slh_dsa_sha2_192s +}; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f] = { + DER_OID_V_id_slh_dsa_sha2_192f +}; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s] = { + DER_OID_V_id_slh_dsa_sha2_256s +}; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f] = { + DER_OID_V_id_slh_dsa_sha2_256f +}; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s] = { + DER_OID_V_id_slh_dsa_shake_128s +}; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f] = { + DER_OID_V_id_slh_dsa_shake_128f +}; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s] = { + DER_OID_V_id_slh_dsa_shake_192s +}; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f] = { + DER_OID_V_id_slh_dsa_shake_192f +}; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s] = { + DER_OID_V_id_slh_dsa_shake_256s +}; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f] = { + DER_OID_V_id_slh_dsa_shake_256f +}; + diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/providers/common/include/prov/der_ml_dsa.h b/deps/openssl/config/archs/BSD-x86_64/asm/providers/common/include/prov/der_ml_dsa.h new file mode 100644 index 00000000000000..c55f780ab4527c --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm/providers/common/include/prov/der_ml_dsa.h @@ -0,0 +1,40 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_ml_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +#define DER_OID_V_id_ml_dsa_44 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x11 +#define DER_OID_SZ_id_ml_dsa_44 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44]; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +#define DER_OID_V_id_ml_dsa_65 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x12 +#define DER_OID_SZ_id_ml_dsa_65 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65]; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +#define DER_OID_V_id_ml_dsa_87 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x13 +#define DER_OID_SZ_id_ml_dsa_87 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87]; + + +int ossl_DER_w_algorithmIdentifier_ML_DSA(WPACKET *pkt, int tag, ML_DSA_KEY *key); diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/providers/common/include/prov/der_slh_dsa.h b/deps/openssl/config/archs/BSD-x86_64/asm/providers/common/include/prov/der_slh_dsa.h new file mode 100644 index 00000000000000..760f8e7699be72 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm/providers/common/include/prov/der_slh_dsa.h @@ -0,0 +1,103 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_slh_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x14 +#define DER_OID_SZ_id_slh_dsa_sha2_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s]; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x15 +#define DER_OID_SZ_id_slh_dsa_sha2_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f]; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x16 +#define DER_OID_SZ_id_slh_dsa_sha2_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s]; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x17 +#define DER_OID_SZ_id_slh_dsa_sha2_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f]; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x18 +#define DER_OID_SZ_id_slh_dsa_sha2_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s]; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x19 +#define DER_OID_SZ_id_slh_dsa_sha2_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f]; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +#define DER_OID_V_id_slh_dsa_shake_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1A +#define DER_OID_SZ_id_slh_dsa_shake_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s]; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +#define DER_OID_V_id_slh_dsa_shake_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1B +#define DER_OID_SZ_id_slh_dsa_shake_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f]; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +#define DER_OID_V_id_slh_dsa_shake_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1C +#define DER_OID_SZ_id_slh_dsa_shake_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s]; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +#define DER_OID_V_id_slh_dsa_shake_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1D +#define DER_OID_SZ_id_slh_dsa_shake_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f]; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +#define DER_OID_V_id_slh_dsa_shake_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1E +#define DER_OID_SZ_id_slh_dsa_shake_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s]; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +#define DER_OID_V_id_slh_dsa_shake_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1F +#define DER_OID_SZ_id_slh_dsa_shake_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f]; + + +int ossl_DER_w_algorithmIdentifier_SLH_DSA(WPACKET *pkt, int tag, SLH_DSA_KEY *key); diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/apps/progs.c b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/apps/progs.c index 43cef00799b86e..acc204a3e6e781 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/apps/progs.c +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/apps/progs.c @@ -89,6 +89,7 @@ FUNCTION functions[] = { {FT_general, "s_time", s_time_main, s_time_options, NULL, NULL}, #endif {FT_general, "sess_id", sess_id_main, sess_id_options, NULL, NULL}, + {FT_general, "skeyutl", skeyutl_main, skeyutl_options, NULL, NULL}, {FT_general, "smime", smime_main, smime_options, NULL, NULL}, {FT_general, "speed", speed_main, speed_options, NULL, NULL}, {FT_general, "spkac", spkac_main, spkac_options, NULL, NULL}, @@ -225,9 +226,15 @@ FUNCTION functions[] = { {FT_cipher, "camellia-256-ecb", enc_main, enc_options, NULL}, #endif {FT_cipher, "base64", enc_main, enc_options, NULL}, -#ifdef ZLIB +#ifndef OPENSSL_NO_ZLIB {FT_cipher, "zlib", enc_main, enc_options, NULL}, #endif +#ifndef OPENSSL_NO_BROTLI + {FT_cipher, "brotli", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ZSTD + {FT_cipher, "zstd", enc_main, enc_options, NULL}, +#endif #ifndef OPENSSL_NO_DES {FT_cipher, "des", enc_main, enc_options, NULL}, #endif diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm index ca218619df1f17..b38b2d3d4a4fdc 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm @@ -18,6 +18,7 @@ our %config = ( "ARFLAGS" => [ "qc" ], + "ASFLAGS" => [], "CC" => "../config/fake_gcc.pl", "CFLAGS" => [ "-Wall -O3" @@ -27,14 +28,16 @@ our %config = ( "CPPINCLUDES" => [], "CXXFLAGS" => [], "FIPSKEY" => "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813", + "FIPS_VENDOR" => "OpenSSL FIPS Provider", "HASHBANGPERL" => "/usr/bin/env perl", "LDFLAGS" => [], "LDLIBS" => [], + "OBJCOPY" => "objcopy", "PERL" => "/usr/bin/perl", "RANLIB" => "ranlib", "RC" => "windres", "RCFLAGS" => [], - "api" => "30000", + "api" => "30500", "b32" => "0", "b64" => "0", "b64l" => "1", @@ -56,11 +59,13 @@ our %config = ( "doc/build.info", "test/build.info", "engines/build.info", + "exporters/build.info", "crypto/objects/build.info", "crypto/buffer/build.info", "crypto/bio/build.info", "crypto/stack/build.info", "crypto/lhash/build.info", + "crypto/hashtable/build.info", "crypto/rand/build.info", "crypto/evp/build.info", "crypto/asn1/build.info", @@ -78,6 +83,7 @@ our %config = ( "crypto/md5/build.info", "crypto/sha/build.info", "crypto/mdc2/build.info", + "crypto/ml_kem/build.info", "crypto/hmac/build.info", "crypto/ripemd/build.info", "crypto/whrlpool/build.info", @@ -119,11 +125,19 @@ our %config = ( "crypto/cmp/build.info", "crypto/encode_decode/build.info", "crypto/ffc/build.info", + "crypto/hpke/build.info", + "crypto/thread/build.info", + "crypto/ml_dsa/build.info", + "crypto/slh_dsa/build.info", + "ssl/record/build.info", + "ssl/rio/build.info", + "ssl/quic/build.info", "apps/lib/build.info", "providers/common/build.info", "providers/implementations/build.info", "providers/fips/build.info", "doc/man1/build.info", + "ssl/record/methods/build.info", "providers/common/der/build.info", "providers/implementations/digests/build.info", "providers/implementations/ciphers/build.info", @@ -137,6 +151,7 @@ our %config = ( "providers/implementations/encode_decode/build.info", "providers/implementations/storemgmt/build.info", "providers/implementations/kem/build.info", + "providers/implementations/skeymgmt/build.info", "providers/implementations/rands/seeding/build.info" ], "build_metadata" => "", @@ -156,7 +171,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.17", + "full_version" => "3.5.2", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -165,36 +180,51 @@ our %config = ( "libdir" => "", "major" => "3", "makedep_scheme" => "gcc", - "minor" => "0", + "minor" => "5", "openssl_api_defines" => [ - "OPENSSL_CONFIGURED_API=30000" + "OPENSSL_CONFIGURED_API=30500" ], "openssl_feature_defines" => [ "OPENSSL_RAND_SEED_OS", "OPENSSL_THREADS", "OPENSSL_NO_AFALGENG", "OPENSSL_NO_ASAN", + "OPENSSL_NO_BROTLI", + "OPENSSL_NO_BROTLI_DYNAMIC", "OPENSSL_NO_COMP", "OPENSSL_NO_CRYPTO_MDEBUG", "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE", + "OPENSSL_NO_DEMOS", "OPENSSL_NO_EC_NISTP_64_GCC_128", "OPENSSL_NO_EGD", "OPENSSL_NO_EXTERNAL_TESTS", + "OPENSSL_NO_FIPS_JITTER", "OPENSSL_NO_FUZZ_AFL", "OPENSSL_NO_FUZZ_LIBFUZZER", + "OPENSSL_NO_H3DEMO", + "OPENSSL_NO_HQINTEROP", + "OPENSSL_NO_JITTER", "OPENSSL_NO_KTLS", "OPENSSL_NO_LOADERENG", "OPENSSL_NO_MD2", "OPENSSL_NO_MSAN", + "OPENSSL_NO_PIE", "OPENSSL_NO_RC5", "OPENSSL_NO_SCTP", "OPENSSL_NO_SSL3", "OPENSSL_NO_SSL3_METHOD", + "OPENSSL_NO_SSLKEYLOG", + "OPENSSL_NO_TFO", "OPENSSL_NO_TRACE", "OPENSSL_NO_UBSAN", "OPENSSL_NO_UNIT_TEST", "OPENSSL_NO_UPLINK", "OPENSSL_NO_WEAK_SSL_CIPHERS", + "OPENSSL_NO_WINSTORE", + "OPENSSL_NO_ZLIB", + "OPENSSL_NO_ZLIB_DYNAMIC", + "OPENSSL_NO_ZSTD", + "OPENSSL_NO_ZSTD_DYNAMIC", "OPENSSL_NO_DYNAMIC_ENGINE" ], "openssl_other_defines" => [ @@ -202,11 +232,11 @@ our %config = ( ], "openssl_sys_defines" => [], "openssldir" => "", - "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "17", + "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", + "patch" => "2", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", - "perl_version" => "5.38.2", + "perl_version" => "5.34.0", "perlargv" => [ "no-comp", "no-shared", @@ -236,6 +266,7 @@ our %config = ( "LDLIBS" => undef, "MT" => undef, "MTFLAGS" => undef, + "OBJCOPY" => undef, "OPENSSL_LOCAL_CONFIG_DIR" => undef, "PERL" => undef, "RANLIB" => undef, @@ -255,11 +286,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "1 Jul 2025", + "release_date" => "5 Aug 2025", "shlib_version" => "3", "sourcedir" => ".", "target" => "BSD-x86_64", - "version" => "3.0.17" + "version" => "3.5.2" ); our %target = ( "AR" => "ar", @@ -267,6 +298,7 @@ our %target = ( "CC" => "cc", "CFLAGS" => "-Wall -O3", "HASHBANGPERL" => "/usr/bin/env perl", + "OBJCOPY" => "objcopy", "RANLIB" => "ranlib", "RC" => "windres", "_conf_fname_int" => [ @@ -278,6 +310,8 @@ our %target = ( "Configurations/shared-info.pl" ], "asm_arch" => "x86_64", + "bin_cflags" => "", + "bin_lflags" => "", "bn_ops" => "SIXTY_FOUR_BIT_LONG", "build_file" => "Makefile", "build_scheme" => [ @@ -321,6 +355,8 @@ our %target = ( our @disablables = ( "acvp-tests", "afalgeng", + "apps", + "argon2", "aria", "asan", "asm", @@ -331,11 +367,14 @@ our @disablables = ( "autoload-config", "bf", "blake2", + "brotli", + "brotli-dynamic", "buildtest-c++", "bulk", "cached-fetch", "camellia", "capieng", + "winstore", "cast", "chacha", "cmac", @@ -344,11 +383,16 @@ our @disablables = ( "comp", "crypto-mdebug", "ct", + "default-thread-pool", + "demos", + "h3demo", + "hqinterop", "deprecated", "des", "devcryptoeng", "dgram", "dh", + "docs", "dsa", "dso", "dtls", @@ -358,6 +402,7 @@ our @disablables = ( "ec_nistp_64_gcc_128", "ecdh", "ecdsa", + "ecx", "egd", "engine", "err", @@ -365,10 +410,15 @@ our @disablables = ( "filenames", "fips", "fips-securitychecks", + "fips-post", + "fips-jitter", "fuzz-afl", "fuzz-libfuzzer", "gost", + "http", "idea", + "integrity-only-ciphers", + "jitter", "ktls", "legacy", "loadereng", @@ -376,6 +426,8 @@ our @disablables = ( "md2", "md4", "mdc2", + "ml-dsa", + "ml-kem", "module", "msan", "multiblock", @@ -384,10 +436,13 @@ our @disablables = ( "ocsp", "padlockeng", "pic", + "pie", "pinshared", "poly1305", "posix-io", "psk", + "quic", + "unstable-qlog", "rc2", "rc4", "rc5", @@ -401,7 +456,9 @@ our @disablables = ( "shared", "siphash", "siv", + "slh-dsa", "sm2", + "sm2-precomp", "sm3", "sm4", "sock", @@ -412,9 +469,13 @@ our @disablables = ( "ssl-trace", "static-engine", "stdio", + "sslkeylog", "tests", + "tfo", + "thread-pool", "threads", "tls", + "tls-deprecated-ec", "trace", "ts", "ubsan", @@ -425,6 +486,8 @@ our @disablables = ( "whirlpool", "zlib", "zlib-dynamic", + "zstd", + "zstd-dynamic", "ssl3", "ssl3-method", "tls1", @@ -445,32 +508,45 @@ our @disablables_int = ( our %disabled = ( "afalgeng" => "option", "asan" => "default", + "brotli" => "default", + "brotli-dynamic" => "default", "buildtest-c++" => "default", "comp" => "option", "crypto-mdebug" => "default", "crypto-mdebug-backtrace" => "default", + "demos" => "default", "dynamic-engine" => "cascade", "ec_nistp_64_gcc_128" => "default", "egd" => "default", "external-tests" => "default", + "fips-jitter" => "default", "fuzz-afl" => "default", "fuzz-libfuzzer" => "default", + "h3demo" => "default", + "hqinterop" => "default", + "jitter" => "default", "ktls" => "default", "loadereng" => "cascade", "md2" => "default", "msan" => "default", + "pie" => "default", "rc5" => "default", "sctp" => "default", "shared" => "option", "ssl3" => "default", "ssl3-method" => "default", + "sslkeylog" => "default", + "tfo" => "default", "trace" => "default", "ubsan" => "default", "unit-test" => "default", "uplink" => "no uplink_arch", "weak-ssl-ciphers" => "default", + "winstore" => "not-windows", "zlib" => "default", - "zlib-dynamic" => "default" + "zlib-dynamic" => "default", + "zstd" => "default", + "zstd-dynamic" => "default" ); our %withargs = (); our %unified_info = ( @@ -696,6 +772,11 @@ our %unified_info = ( "pod" => "1" } }, + "doc/man1/openssl-skeyutl.pod" => { + "doc/man1/openssl-skeyutl.pod.in" => { + "pod" => "1" + } + }, "doc/man1/openssl-smime.pod" => { "doc/man1/openssl-smime.pod.in" => { "pod" => "1" @@ -753,6 +834,21 @@ our %unified_info = ( } }, "generate" => { + "exporters/OpenSSLConfig.cmake" => { + "exporter" => "cmake" + }, + "exporters/OpenSSLConfigVersion.cmake" => { + "exporter" => "cmake" + }, + "exporters/libcrypto.pc" => { + "exporter" => "pkg-config" + }, + "exporters/libssl.pc" => { + "exporter" => "pkg-config" + }, + "exporters/openssl.pc" => { + "exporter" => "pkg-config" + }, "include/openssl/configuration.h" => { "skip" => "1" } @@ -773,6 +869,9 @@ our %unified_info = ( "providers/liblegacy.a" => { "noinst" => "1" }, + "providers/libtemplate.a" => { + "noinst" => "1" + }, "test/libtestutil.a" => { "has_main" => "1", "noinst" => "1" @@ -790,6 +889,9 @@ our %unified_info = ( } }, "programs" => { + "fuzz/acert-test" => { + "noinst" => "1" + }, "fuzz/asn1-test" => { "noinst" => "1" }, @@ -820,9 +922,60 @@ our %unified_info = ( "fuzz/ct-test" => { "noinst" => "1" }, + "fuzz/decoder-test" => { + "noinst" => "1" + }, + "fuzz/dtlsclient-test" => { + "noinst" => "1" + }, + "fuzz/dtlsserver-test" => { + "noinst" => "1" + }, + "fuzz/hashtable-test" => { + "noinst" => "1" + }, + "fuzz/ml-dsa-test" => { + "noinst" => "1" + }, + "fuzz/ml-kem-test" => { + "noinst" => "1" + }, + "fuzz/pem-test" => { + "noinst" => "1" + }, + "fuzz/provider-test" => { + "noinst" => "1" + }, + "fuzz/punycode-test" => { + "noinst" => "1" + }, + "fuzz/quic-client-test" => { + "noinst" => "1" + }, + "fuzz/quic-lcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-rcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-server-test" => { + "noinst" => "1" + }, + "fuzz/quic-srtm-test" => { + "noinst" => "1" + }, "fuzz/server-test" => { "noinst" => "1" }, + "fuzz/slh-dsa-test" => { + "noinst" => "1" + }, + "fuzz/smime-test" => { + "noinst" => "1" + }, + "fuzz/v3name-test" => { + "noinst" => "1" + }, "fuzz/x509-test" => { "noinst" => "1" }, @@ -874,18 +1027,30 @@ our %unified_info = ( "test/bftest" => { "noinst" => "1" }, + "test/bio_addr_test" => { + "noinst" => "1" + }, + "test/bio_base64_test" => { + "noinst" => "1" + }, "test/bio_callback_test" => { "noinst" => "1" }, "test/bio_core_test" => { "noinst" => "1" }, + "test/bio_dgram_test" => { + "noinst" => "1" + }, "test/bio_enc_test" => { "noinst" => "1" }, "test/bio_memleak_test" => { "noinst" => "1" }, + "test/bio_meth_test" => { + "noinst" => "1" + }, "test/bio_prefix_text" => { "noinst" => "1" }, @@ -895,6 +1060,9 @@ our %unified_info = ( "test/bio_readbuffer_test" => { "noinst" => "1" }, + "test/bio_tfo_test" => { + "noinst" => "1" + }, "test/bioprinttest" => { "noinst" => "1" }, @@ -904,6 +1072,9 @@ our %unified_info = ( "test/bntest" => { "noinst" => "1" }, + "test/build_wincrypt_test" => { + "noinst" => "1" + }, "test/buildtest_c_aes" => { "noinst" => "1" }, @@ -919,6 +1090,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => { "noinst" => "1" }, + "test/buildtest_c_byteorder" => { + "noinst" => "1" + }, "test/buildtest_c_camellia" => { "noinst" => "1" }, @@ -943,9 +1117,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => { "noinst" => "1" }, - "test/buildtest_c_core_names" => { - "noinst" => "1" - }, "test/buildtest_c_core_object" => { "noinst" => "1" }, @@ -970,6 +1141,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => { "noinst" => "1" }, + "test/buildtest_c_e_ostime" => { + "noinst" => "1" + }, "test/buildtest_c_ebcdic" => { "noinst" => "1" }, @@ -997,12 +1171,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => { "noinst" => "1" }, + "test/buildtest_c_hpke" => { + "noinst" => "1" + }, "test/buildtest_c_http" => { "noinst" => "1" }, "test/buildtest_c_idea" => { "noinst" => "1" }, + "test/buildtest_c_indicator" => { + "noinst" => "1" + }, "test/buildtest_c_kdf" => { "noinst" => "1" }, @@ -1018,6 +1198,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => { "noinst" => "1" }, + "test/buildtest_c_ml_kem" => { + "noinst" => "1" + }, "test/buildtest_c_modes" => { "noinst" => "1" }, @@ -1048,6 +1231,9 @@ our %unified_info = ( "test/buildtest_c_provider" => { "noinst" => "1" }, + "test/buildtest_c_quic" => { + "noinst" => "1" + }, "test/buildtest_c_rand" => { "noinst" => "1" }, @@ -1090,6 +1276,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => { "noinst" => "1" }, + "test/buildtest_c_thread" => { + "noinst" => "1" + }, "test/buildtest_c_tls1" => { "noinst" => "1" }, @@ -1105,6 +1294,12 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => { "noinst" => "1" }, + "test/byteorder_test" => { + "noinst" => "1" + }, + "test/ca_internals_test" => { + "noinst" => "1" + }, "test/casttest" => { "noinst" => "1" }, @@ -1189,6 +1384,9 @@ our %unified_info = ( "test/danetest" => { "noinst" => "1" }, + "test/decoder_propq_test" => { + "noinst" => "1" + }, "test/defltfips_test" => { "noinst" => "1" }, @@ -1261,15 +1459,24 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => { "noinst" => "1" }, + "test/evp_pkey_dhkem_test" => { + "noinst" => "1" + }, "test/evp_pkey_dparams_test" => { "noinst" => "1" }, "test/evp_pkey_provided_test" => { "noinst" => "1" }, + "test/evp_skey_test" => { + "noinst" => "1" + }, "test/evp_test" => { "noinst" => "1" }, + "test/evp_xof_test" => { + "noinst" => "1" + }, "test/exdatatest" => { "noinst" => "1" }, @@ -1297,6 +1504,9 @@ our %unified_info = ( "test/hmactest" => { "noinst" => "1" }, + "test/hpke_test" => { + "noinst" => "1" + }, "test/http_test" => { "noinst" => "1" }, @@ -1306,12 +1516,18 @@ our %unified_info = ( "test/igetest" => { "noinst" => "1" }, + "test/json_test" => { + "noinst" => "1" + }, "test/keymgmt_internal_test" => { "noinst" => "1" }, "test/lhash_test" => { "noinst" => "1" }, + "test/list_test" => { + "noinst" => "1" + }, "test/localetest" => { "noinst" => "1" }, @@ -1321,9 +1537,21 @@ our %unified_info = ( "test/mdc2test" => { "noinst" => "1" }, + "test/membio_test" => { + "noinst" => "1" + }, "test/memleaktest" => { "noinst" => "1" }, + "test/ml_dsa_test" => { + "noinst" => "1" + }, + "test/ml_kem_evp_extra_test" => { + "noinst" => "1" + }, + "test/ml_kem_internal_test" => { + "noinst" => "1" + }, "test/modes_internal_test" => { "noinst" => "1" }, @@ -1342,6 +1570,9 @@ our %unified_info = ( "test/packettest" => { "noinst" => "1" }, + "test/pairwise_fail_test" => { + "noinst" => "1" + }, "test/param_build_test" => { "noinst" => "1" }, @@ -1366,6 +1597,9 @@ our %unified_info = ( "test/pemtest" => { "noinst" => "1" }, + "test/pkcs12_api_test" => { + "noinst" => "1" + }, "test/pkcs12_format_test" => { "noinst" => "1" }, @@ -1381,6 +1615,9 @@ our %unified_info = ( "test/poly1305_internal_test" => { "noinst" => "1" }, + "test/priority_queue_test" => { + "noinst" => "1" + }, "test/property_test" => { "noinst" => "1" }, @@ -1390,6 +1627,9 @@ our %unified_info = ( "test/provfetchtest" => { "noinst" => "1" }, + "test/provider_default_search_path_test" => { + "noinst" => "1" + }, "test/provider_fallback_test" => { "noinst" => "1" }, @@ -1408,6 +1648,72 @@ our %unified_info = ( "test/punycode_test" => { "noinst" => "1" }, + "test/quic_ackm_test" => { + "noinst" => "1" + }, + "test/quic_cc_test" => { + "noinst" => "1" + }, + "test/quic_cfq_test" => { + "noinst" => "1" + }, + "test/quic_client_test" => { + "noinst" => "1" + }, + "test/quic_fc_test" => { + "noinst" => "1" + }, + "test/quic_fifd_test" => { + "noinst" => "1" + }, + "test/quic_lcidm_test" => { + "noinst" => "1" + }, + "test/quic_multistream_test" => { + "noinst" => "1" + }, + "test/quic_newcid_test" => { + "noinst" => "1" + }, + "test/quic_qlog_test" => { + "noinst" => "1" + }, + "test/quic_radix_test" => { + "noinst" => "1" + }, + "test/quic_rcidm_test" => { + "noinst" => "1" + }, + "test/quic_record_test" => { + "noinst" => "1" + }, + "test/quic_srt_gen_test" => { + "noinst" => "1" + }, + "test/quic_srtm_test" => { + "noinst" => "1" + }, + "test/quic_stream_test" => { + "noinst" => "1" + }, + "test/quic_tserver_test" => { + "noinst" => "1" + }, + "test/quic_txp_test" => { + "noinst" => "1" + }, + "test/quic_txpim_test" => { + "noinst" => "1" + }, + "test/quic_wire_test" => { + "noinst" => "1" + }, + "test/quicapitest" => { + "noinst" => "1" + }, + "test/quicfaultstest" => { + "noinst" => "1" + }, "test/rand_status_test" => { "noinst" => "1" }, @@ -1423,12 +1729,15 @@ our %unified_info = ( "test/rc5test" => { "noinst" => "1" }, - "test/rdrand_sanitytest" => { + "test/rdcpu_sanitytest" => { "noinst" => "1" }, "test/recordlentest" => { "noinst" => "1" }, + "test/rpktest" => { + "noinst" => "1" + }, "test/rsa_complex" => { "noinst" => "1" }, @@ -1441,6 +1750,12 @@ our %unified_info = ( "test/rsa_test" => { "noinst" => "1" }, + "test/rsa_x931_test" => { + "noinst" => "1" + }, + "test/safe_math_test" => { + "noinst" => "1" + }, "test/sanitytest" => { "noinst" => "1" }, @@ -1456,6 +1771,9 @@ our %unified_info = ( "test/siphash_internal_test" => { "noinst" => "1" }, + "test/slh_dsa_test" => { + "noinst" => "1" + }, "test/sm2_internal_test" => { "noinst" => "1" }, @@ -1477,6 +1795,9 @@ our %unified_info = ( "test/ssl_ctx_test" => { "noinst" => "1" }, + "test/ssl_handshake_rtt_test" => { + "noinst" => "1" + }, "test/ssl_old_test" => { "noinst" => "1" }, @@ -1498,12 +1819,18 @@ our %unified_info = ( "test/stack_test" => { "noinst" => "1" }, + "test/strtoultest" => { + "noinst" => "1" + }, "test/sysdefaulttest" => { "noinst" => "1" }, "test/test_test" => { "noinst" => "1" }, + "test/threadpool_test" => { + "noinst" => "1" + }, "test/threadstest" => { "noinst" => "1" }, @@ -1513,12 +1840,18 @@ our %unified_info = ( "test/time_offset_test" => { "noinst" => "1" }, + "test/time_test" => { + "noinst" => "1" + }, "test/tls13ccstest" => { "noinst" => "1" }, "test/tls13encryptiontest" => { "noinst" => "1" }, + "test/tls13groupselection_test" => { + "noinst" => "1" + }, "test/trace_api_test" => { "noinst" => "1" }, @@ -1546,6 +1879,9 @@ our %unified_info = ( "test/wpackettest" => { "noinst" => "1" }, + "test/x509_acert_test" => { + "noinst" => "1" + }, "test/x509_check_cert_pkey_test" => { "noinst" => "1" }, @@ -1555,6 +1891,15 @@ our %unified_info = ( "test/x509_internal_test" => { "noinst" => "1" }, + "test/x509_load_cert_file_test" => { + "noinst" => "1" + }, + "test/x509_req_test" => { + "noinst" => "1" + }, + "test/x509_test" => { + "noinst" => "1" + }, "test/x509_time_test" => { "noinst" => "1" }, @@ -1634,6 +1979,7 @@ our %unified_info = ( "ECP_NISTZ256_ASM", "KECCAK1600_ASM", "OPENSSL_CPUID_OBJ", + "OPENSSL_IA32_SSE2", "SHA1_ASM", "SHA256_ASM", "SHA512_ASM", @@ -1662,6 +2008,9 @@ our %unified_info = ( "MD5_ASM", "RC4_ASM" ], + "test/endecode_test" => [ + "STATIC_LEGACY" + ], "test/evp_extra_test" => [ "STATIC_LEGACY" ], @@ -1674,14 +2023,21 @@ our %unified_info = ( }, "depends" => { "" => [ + "OpenSSLConfigVersion.cmake", + "crypto/params_idx.c", + "exporters/OpenSSLConfigVersion.cmake", + "exporters/openssl.pc", "include/crypto/bn_conf.h", "include/crypto/dso_conf.h", + "include/internal/param_names.h", "include/openssl/asn1.h", "include/openssl/asn1t.h", "include/openssl/bio.h", "include/openssl/cmp.h", "include/openssl/cms.h", + "include/openssl/comp.h", "include/openssl/conf.h", + "include/openssl/core_names.h", "include/openssl/crmf.h", "include/openssl/crypto.h", "include/openssl/ct.h", @@ -1698,10 +2054,22 @@ our %unified_info = ( "include/openssl/ssl.h", "include/openssl/ui.h", "include/openssl/x509.h", + "include/openssl/x509_acert.h", "include/openssl/x509_vfy.h", "include/openssl/x509v3.h", + "openssl.pc", "test/provider_internal_test.cnf" ], + "OpenSSLConfig.cmake" => [ + "builddata.pm" + ], + "OpenSSLConfigVersion.cmake" => [ + "OpenSSLConfig.cmake", + "builddata.pm" + ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/progs.h" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/progs.h" ], @@ -1847,6 +2215,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/progs.h" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/progs.h" + ], "apps/openssl-bin-smime.o" => [ "apps/progs.h" ], @@ -1935,6 +2306,9 @@ our %unified_info = ( "crypto/libcrypto-lib-info.o" => [ "crypto/buildinf.h" ], + "crypto/params_idx.c" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "crypto/rc4/rc4-586.S" => [ "crypto/perlasm/x86asm.pl" ], @@ -2100,6 +2474,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -2241,6 +2618,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -2277,6 +2657,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -2292,6 +2675,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -2364,6 +2750,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -2430,6 +2819,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -2529,6 +2921,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -2667,6 +3065,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -2784,6 +3185,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -2871,6 +3278,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -2943,9 +3353,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -2961,12 +3377,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -3036,9 +3458,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -3048,12 +3479,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -3069,9 +3512,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -3096,6 +3545,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -3111,6 +3563,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -3147,6 +3602,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -3420,6 +3878,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -3459,6 +3920,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -3480,6 +3944,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -3594,6 +4061,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -3621,9 +4091,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -3639,6 +4121,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -3648,12 +4133,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -3672,12 +4163,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -3687,9 +4190,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -3702,9 +4211,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -3720,24 +4241,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -3750,6 +4292,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -3759,8 +4307,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -3780,6 +4328,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -3828,6 +4391,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -3894,6 +4460,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -4017,9 +4586,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -4035,6 +4610,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -4059,9 +4637,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -4095,6 +4682,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -4152,15 +4742,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -4170,6 +4772,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -4191,9 +4796,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -4209,6 +4820,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -4221,9 +4835,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -4254,9 +4865,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -4272,12 +4880,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -4332,6 +4994,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -4341,9 +5006,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -4491,6 +5153,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -4632,6 +5297,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -4668,6 +5336,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -4683,6 +5354,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -4755,6 +5429,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -4821,6 +5498,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -4920,6 +5600,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -5058,6 +5744,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -5175,6 +5864,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -5262,6 +5957,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -5334,9 +6032,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -5352,12 +6056,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -5427,9 +6137,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -5439,12 +6158,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -5460,9 +6191,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -5487,6 +6224,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -5502,6 +6242,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -5538,6 +6281,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -5811,6 +6557,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -5850,6 +6599,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -5871,6 +6623,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -5985,6 +6740,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -6012,9 +6770,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -6030,6 +6800,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -6039,12 +6812,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -6063,12 +6842,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -6078,9 +6869,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -6093,9 +6890,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -6111,24 +6920,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -6141,6 +6971,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -6150,8 +6986,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -6171,6 +7007,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -6219,6 +7070,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -6285,6 +7139,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -6408,9 +7265,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -6426,6 +7289,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -6450,9 +7316,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -6486,6 +7361,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -6543,15 +7421,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -6561,6 +7451,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -6582,9 +7475,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -6600,6 +7499,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -6612,9 +7514,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -6645,9 +7544,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -6663,12 +7559,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -6723,6 +7673,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -6732,9 +7685,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -6914,6 +7864,10 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod.in", "doc/perlvars.pm" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in", + "doc/perlvars.pm" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in", "doc/perlvars.pm" @@ -6953,6 +7907,27 @@ our %unified_info = ( "doc/man7/openssl_user_macros.pod" => [ "doc/man7/openssl_user_macros.pod.in" ], + "exporters/OpenSSLConfig.cmake" => [ + "installdata.pm" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/OpenSSLConfig.cmake", + "installdata.pm" + ], + "exporters/libcrypto.pc" => [ + "installdata.pm" + ], + "exporters/libssl.pc" => [ + "installdata.pm" + ], + "exporters/openssl.pc" => [ + "exporters/libcrypto.pc", + "exporters/libssl.pc", + "installdata.pm" + ], + "fuzz/acert-test" => [ + "libcrypto" + ], "fuzz/asn1-test" => [ "libcrypto", "libssl" @@ -6985,17 +7960,85 @@ our %unified_info = ( "fuzz/ct-test" => [ "libcrypto" ], + "fuzz/decoder-test" => [ + "libcrypto" + ], + "fuzz/dtlsclient-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/dtlsserver-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/hashtable-test" => [ + "libcrypto.a" + ], + "fuzz/ml-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/ml-kem-test" => [ + "libcrypto.a" + ], + "fuzz/pem-test" => [ + "libcrypto.a" + ], + "fuzz/provider-test" => [ + "libcrypto" + ], + "fuzz/punycode-test" => [ + "libcrypto.a" + ], + "fuzz/quic-client-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-lcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-rcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-server-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-srtm-test" => [ + "libcrypto.a", + "libssl.a" + ], "fuzz/server-test" => [ "libcrypto", "libssl" ], + "fuzz/slh-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/smime-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/v3name-test" => [ + "libcrypto.a" + ], "fuzz/x509-test" => [ "libcrypto" ], + "include/internal/param_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], + "include/openssl/core_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "libcrypto.ld" => [ "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libcrypto.pc" => [ + "builddata.pm" + ], "libssl" => [ "libcrypto" ], @@ -7003,6 +8046,14 @@ our %unified_info = ( "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libssl.pc" => [ + "builddata.pm" + ], + "openssl.pc" => [ + "builddata.pm", + "libcrypto.pc", + "libssl.pc" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/DIGESTS.asn1", "providers/common/der/NIST.asn1", @@ -7020,11 +8071,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7064,6 +8123,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov/der_rsa.h" ], @@ -7071,6 +8136,12 @@ our %unified_info = ( "providers/common/include/prov/der_digests.h", "providers/common/include/prov/der_rsa.h" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov/der_wrap.h" ], @@ -7110,11 +8181,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7147,9 +8226,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov/der_sm2.h" ], @@ -7162,9 +8247,15 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/legacy" => [ "libcrypto", "providers/liblegacy.a" @@ -7242,6 +8333,14 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_addr_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/bio_base64_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_callback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7250,6 +8349,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_dgram_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_enc_test" => [ "libcrypto", "test/libtestutil.a" @@ -7258,6 +8361,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_meth_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_prefix_text" => [ "libcrypto", "test/libtestutil.a" @@ -7270,6 +8377,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_tfo_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bioprinttest" => [ "libcrypto", "test/libtestutil.a" @@ -7282,6 +8393,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/build_wincrypt_test" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_aes" => [ "libcrypto", "libssl" @@ -7302,6 +8417,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_byteorder" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_camellia" => [ "libcrypto", "libssl" @@ -7334,10 +8453,6 @@ our %unified_info = ( "libcrypto", "libssl" ], - "test/buildtest_c_core_names" => [ - "libcrypto", - "libssl" - ], "test/buildtest_c_core_object" => [ "libcrypto", "libssl" @@ -7370,6 +8485,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_e_ostime" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_ebcdic" => [ "libcrypto", "libssl" @@ -7406,6 +8525,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_hpke" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_http" => [ "libcrypto", "libssl" @@ -7414,6 +8537,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_indicator" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_kdf" => [ "libcrypto", "libssl" @@ -7434,6 +8561,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_ml_kem" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_modes" => [ "libcrypto", "libssl" @@ -7474,6 +8605,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_quic" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_rand" => [ "libcrypto", "libssl" @@ -7530,6 +8665,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_thread" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_tls1" => [ "libcrypto", "libssl" @@ -7550,10 +8689,23 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/byteorder_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ca_internals_test" => [ + "libssl", + "test/libtestutil.a" + ], "test/casttest" => [ "libcrypto", "test/libtestutil.a" ], + "test/cert_comp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/chacha_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7667,6 +8819,10 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/decoder_propq_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/defltfips_test" => [ "libcrypto", "test/libtestutil.a" @@ -7723,6 +8879,8 @@ our %unified_info = ( ], "test/endecode_test" => [ "libcrypto.a", + "providers/libcommon.a", + "providers/liblegacy.a", "test/libtestutil.a" ], "test/endecoder_legacy_test" => [ @@ -7766,6 +8924,10 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => [ "libcrypto" ], + "test/evp_pkey_dhkem_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/evp_pkey_dparams_test" => [ "libcrypto", "test/libtestutil.a" @@ -7774,10 +8936,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/evp_skey_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/evp_xof_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/exdatatest" => [ "libcrypto", "test/libtestutil.a" @@ -7816,6 +8986,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/hpke_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/http_test" => [ "libcrypto", "test/libtestutil.a" @@ -7828,17 +9002,25 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/json_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/keymgmt_internal_test" => [ "libcrypto.a", "test/libtestutil.a" ], "test/lhash_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/libtestutil.a" => [ "libcrypto" ], + "test/list_test" => [ + "test/libtestutil.a" + ], "test/localetest" => [ "libcrypto", "test/libtestutil.a" @@ -7851,10 +9033,26 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/membio_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/memleaktest" => [ "libcrypto", "test/libtestutil.a" ], + "test/ml_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_evp_extra_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_internal_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/modes_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7879,6 +9077,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pairwise_fail_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/param_build_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7911,6 +9113,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pkcs12_api_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/pkcs12_format_test" => [ "libcrypto", "test/libtestutil.a" @@ -7931,6 +9137,11 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/priority_queue_test" => [ + "libcrypto", + "libssl.a", + "test/libtestutil.a" + ], "test/property_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7943,6 +9154,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/provider_default_search_path_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/provider_fallback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7967,12 +9182,122 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/quic_ackm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cfq_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_client_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fifd_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_lcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_multistream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_newcid_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_qlog_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_radix_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_rcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_record_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srt_gen_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srtm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_stream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_tserver_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txpim_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_wire_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicapitest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicfaultstest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/rand_status_test" => [ "libcrypto", "test/libtestutil.a" ], "test/rand_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/rc2test" => [ @@ -7987,7 +9312,7 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "libcrypto.a", "test/libtestutil.a" ], @@ -7996,6 +9321,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/rpktest" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/rsa_mp_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8008,10 +9338,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/sanitytest" => [ + "test/rsa_x931_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/safe_math_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/sanitytest" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/secmemtest" => [ "libcrypto", "test/libtestutil.a" @@ -8029,6 +9367,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/slh_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/sm2_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8058,6 +9400,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/ssl_handshake_rtt_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/ssl_old_test" => [ "libcrypto.a", "libssl.a", @@ -8074,8 +9421,8 @@ our %unified_info = ( "test/libtestutil.a" ], "test/sslapitest" => [ - "libcrypto", - "libssl", + "libcrypto.a", + "libssl.a", "test/libtestutil.a" ], "test/sslbuffertest" => [ @@ -8092,6 +9439,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/strtoultest" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/sysdefaulttest" => [ "libcrypto", "libssl", @@ -8101,8 +9452,12 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/threadpool_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/threadstest" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/threadstest_fips" => [ @@ -8113,6 +9468,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/time_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/tls13ccstest" => [ "libcrypto", "libssl", @@ -8123,6 +9482,11 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/tls13groupselection_test" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/trace_api_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8160,6 +9524,10 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/x509_acert_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_check_cert_pkey_test" => [ "libcrypto", "test/libtestutil.a" @@ -8172,6 +9540,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/x509_load_cert_file_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_req_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_time_test" => [ "libcrypto", "test/libtestutil.a" @@ -8186,9 +9566,13 @@ our %unified_info = ( }, "dirinfo" => { "apps" => { + "deps" => [ + "apps/ca_internals_test-bin-ca.o" + ], "products" => { "bin" => [ - "apps/openssl" + "apps/openssl", + "test/ca_internals_test" ], "script" => [ "apps/CA.pl", @@ -8199,6 +9583,14 @@ our %unified_info = ( "apps/lib" => { "deps" => [ "apps/lib/openssl-bin-cmp_mock_srv.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", "apps/lib/cmp_client_test-bin-cmp_mock_srv.o", "apps/lib/uitest-bin-apps_ui.o", "apps/lib/libapps-lib-app_libctx.o", @@ -8207,12 +9599,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -8223,6 +9617,7 @@ our %unified_info = ( "products" => { "bin" => [ "apps/openssl", + "test/ca_internals_test", "test/cmp_client_test", "test/uitest" ], @@ -8234,8 +9629,12 @@ our %unified_info = ( }, "crypto" => { "deps" => [ + "crypto/asn1_time_test-bin-ctype.o", + "crypto/ca_internals_test-bin-ctype.o", + "crypto/packettest-bin-quic_vlint.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -8245,10 +9644,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -8265,6 +9667,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -8272,12 +9675,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libcrypto-lib-x86_64cpuid.o", @@ -8300,6 +9707,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -8308,9 +9716,15 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", "crypto/libfips-lib-x86_64cpuid.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test", + "test/packettest" + ], "lib" => [ "libcrypto", "providers/libfips.a" @@ -8330,6 +9744,7 @@ our %unified_info = ( "crypto/aes/libcrypto-lib-aesni-sha1-x86_64.o", "crypto/aes/libcrypto-lib-aesni-sha256-x86_64.o", "crypto/aes/libcrypto-lib-aesni-x86_64.o", + "crypto/aes/libcrypto-lib-aesni-xts-avx512.o", "crypto/aes/libcrypto-lib-bsaes-x86_64.o", "crypto/aes/libcrypto-lib-vpaes-x86_64.o", "crypto/aes/libfips-lib-aes-x86_64.o", @@ -8339,6 +9754,7 @@ our %unified_info = ( "crypto/aes/libfips-lib-aesni-sha1-x86_64.o", "crypto/aes/libfips-lib-aesni-sha256-x86_64.o", "crypto/aes/libfips-lib-aesni-x86_64.o", + "crypto/aes/libfips-lib-aesni-xts-avx512.o", "crypto/aes/libfips-lib-bsaes-x86_64.o", "crypto/aes/libfips-lib-vpaes-x86_64.o" ], @@ -8361,6 +9777,8 @@ our %unified_info = ( }, "crypto/asn1" => { "deps" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", "crypto/asn1/libcrypto-lib-a_bitstr.o", "crypto/asn1/libcrypto-lib-a_d2i_fp.o", "crypto/asn1/libcrypto-lib-a_digest.o", @@ -8427,6 +9845,10 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test" + ], "lib" => [ "libcrypto" ] @@ -8492,6 +9914,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -8540,8 +9963,13 @@ our %unified_info = ( "crypto/bn/libcrypto-lib-bn_srp.o", "crypto/bn/libcrypto-lib-bn_word.o", "crypto/bn/libcrypto-lib-bn_x931p.o", + "crypto/bn/libcrypto-lib-rsaz-2k-avx512.o", + "crypto/bn/libcrypto-lib-rsaz-2k-avxifma.o", + "crypto/bn/libcrypto-lib-rsaz-3k-avx512.o", + "crypto/bn/libcrypto-lib-rsaz-3k-avxifma.o", + "crypto/bn/libcrypto-lib-rsaz-4k-avx512.o", + "crypto/bn/libcrypto-lib-rsaz-4k-avxifma.o", "crypto/bn/libcrypto-lib-rsaz-avx2.o", - "crypto/bn/libcrypto-lib-rsaz-avx512.o", "crypto/bn/libcrypto-lib-rsaz-x86_64.o", "crypto/bn/libcrypto-lib-rsaz_exp.o", "crypto/bn/libcrypto-lib-rsaz_exp_x2.o", @@ -8575,8 +10003,13 @@ our %unified_info = ( "crypto/bn/libfips-lib-bn_sqr.o", "crypto/bn/libfips-lib-bn_sqrt.o", "crypto/bn/libfips-lib-bn_word.o", + "crypto/bn/libfips-lib-rsaz-2k-avx512.o", + "crypto/bn/libfips-lib-rsaz-2k-avxifma.o", + "crypto/bn/libfips-lib-rsaz-3k-avx512.o", + "crypto/bn/libfips-lib-rsaz-3k-avxifma.o", + "crypto/bn/libfips-lib-rsaz-4k-avx512.o", + "crypto/bn/libfips-lib-rsaz-4k-avxifma.o", "crypto/bn/libfips-lib-rsaz-avx2.o", - "crypto/bn/libfips-lib-rsaz-avx512.o", "crypto/bn/libfips-lib-rsaz-x86_64.o", "crypto/bn/libfips-lib-rsaz_exp.o", "crypto/bn/libfips-lib-rsaz_exp_x2.o", @@ -8673,6 +10106,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -9046,7 +10480,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", - "crypto/err/libcrypto-lib-err_prn.o" + "crypto/err/libcrypto-lib-err_mark.o", + "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o" ], "products" => { "lib" => [ @@ -9147,7 +10583,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/evp/libfips-lib-asymcipher.o", "crypto/evp/libfips-lib-dh_support.o", "crypto/evp/libfips-lib-digest.o", @@ -9163,14 +10601,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", - "crypto/evp/libfips-lib-signature.o" + "crypto/evp/libfips-lib-s_lib.o", + "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o" ], "products" => { "lib" => [ @@ -9203,6 +10642,20 @@ our %unified_info = ( ] } }, + "crypto/hashtable" => { + "deps" => [ + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/hmac" => { "deps" => [ "crypto/hmac/libcrypto-lib-hmac.o", @@ -9215,6 +10668,17 @@ our %unified_info = ( ] } }, + "crypto/hpke" => { + "deps" => [ + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, "crypto/http" => { "deps" => [ "crypto/http/libcrypto-lib-http_client.o", @@ -9299,8 +10763,47 @@ our %unified_info = ( ] } }, + "crypto/ml_dsa" => { + "deps" => [ + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ml_kem" => { + "deps" => [ + "crypto/ml_kem/libcrypto-lib-ml_kem.o", + "crypto/ml_kem/libfips-lib-ml_kem.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/modes" => { "deps" => [ + "crypto/modes/libcrypto-lib-aes-gcm-avx512.o", "crypto/modes/libcrypto-lib-aesni-gcm-x86_64.o", "crypto/modes/libcrypto-lib-cbc128.o", "crypto/modes/libcrypto-lib-ccm128.o", @@ -9314,6 +10817,8 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", + "crypto/modes/libfips-lib-aes-gcm-avx512.o", "crypto/modes/libfips-lib-aesni-gcm-x86_64.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", @@ -9323,7 +10828,8 @@ our %unified_info = ( "crypto/modes/libfips-lib-ghash-x86_64.o", "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", - "crypto/modes/libfips-lib-xts128.o" + "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o" ], "products" => { "lib" => [ @@ -9467,6 +10973,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rand/libfips-lib-rand_lib.o" ], @@ -9621,6 +11128,36 @@ our %unified_info = ( ] } }, + "crypto/slh_dsa" => { + "deps" => [ + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/sm2" => { "deps" => [ "crypto/sm2/libcrypto-lib-sm2_crypt.o", @@ -9694,6 +11231,38 @@ our %unified_info = ( ] } }, + "crypto/thread" => { + "deps" => [ + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/thread/arch" => { + "deps" => [ + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/ts" => { "deps" => [ "crypto/ts/libcrypto-lib-ts_asn1.o", @@ -9760,14 +11329,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -9776,12 +11353,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -9789,13 +11371,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -9813,6 +11402,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -9822,6 +11412,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -9850,6 +11441,7 @@ our %unified_info = ( "fuzz" => { "products" => { "bin" => [ + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -9860,13 +11452,31 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test" ] } }, "providers" => { "deps" => [ + "providers/endecode_test-bin-legacyprov.o", "providers/evp_extra_test-bin-legacyprov.o", "providers/libcrypto-lib-baseprov.o", "providers/libcrypto-lib-defltprov.o", @@ -9876,6 +11486,7 @@ our %unified_info = ( ], "products" => { "bin" => [ + "test/endecode_test", "test/evp_extra_test" ], "dso" => [ @@ -9927,8 +11538,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/der/libdefault-lib-der_rsa_sig.o", "providers/common/der/libdefault-lib-der_sm2_gen.o", @@ -9947,6 +11562,7 @@ our %unified_info = ( "providers/fips" => { "deps" => [ "providers/fips/fips-dso-fips_entry.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o" @@ -9990,6 +11606,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -10014,7 +11633,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -10111,7 +11736,10 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", - "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" + "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" ], "products" => { "lib" => [ @@ -10139,7 +11767,9 @@ our %unified_info = ( }, "providers/implementations/kdfs" => { "deps" => [ + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -10158,7 +11788,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", - "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" + "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" ], "products" => { "lib" => [ @@ -10170,13 +11801,22 @@ our %unified_info = ( }, "providers/implementations/kem" => { "deps" => [ + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", - "providers/implementations/kem/libfips-lib-rsa_kem.o" + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", + "providers/implementations/kem/libfips-lib-rsa_kem.o", + "providers/implementations/kem/libtemplate-lib-template_kem.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10188,19 +11828,29 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", - "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10228,18 +11878,18 @@ our %unified_info = ( }, "providers/implementations/rands" => { "deps" => [ - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o" ], "products" => { @@ -10268,13 +11918,31 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", - "providers/implementations/signature/libfips-lib-rsa_sig.o" + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", + "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/skeymgmt" => { + "deps" => [ + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o" ], "products" => { "lib" => [ @@ -10302,14 +11970,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -10325,32 +11994,107 @@ our %unified_info = ( "ssl/libssl-lib-t1_trce.o", "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", - "ssl/libssl-lib-tls_srp.o", - "ssl/libdefault-lib-s3_cbc.o", - "ssl/libfips-lib-s3_cbc.o" + "ssl/libssl-lib-tls_srp.o" ], "products" => { "lib" => [ - "libssl", - "providers/libdefault.a", - "providers/libfips.a" + "libssl" + ] + } + }, + "ssl/quic" => { + "deps" => [ + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, "ssl/record" => { "deps" => [ - "ssl/record/libssl-lib-dtls1_bitmap.o", "ssl/record/libssl-lib-rec_layer_d1.o", - "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/libssl-lib-rec_layer_s3.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "ssl/record/methods" => { + "deps" => [ + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/record/methods/libcommon-lib-tls_pad.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o", + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "products" => { "lib" => [ "libssl", - "providers/libcommon.a" + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "ssl/rio" => { + "deps" => [ + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, @@ -10388,9 +12132,40 @@ our %unified_info = ( "test/helpers/dtlstest-bin-ssltestlib.o", "test/helpers/endecode_test-bin-predefined_dhparams.o", "test/helpers/fatalerrtest-bin-ssltestlib.o", + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/helpers/pkcs12_api_test-bin-pkcs12.o", "test/helpers/pkcs12_format_test-bin-pkcs12.o", + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", "test/helpers/recordlentest-bin-ssltestlib.o", + "test/helpers/rpktest-bin-ssltestlib.o", "test/helpers/servername_test-bin-ssltestlib.o", + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/helpers/ssl_test-bin-handshake.o", "test/helpers/ssl_test-bin-handshake_srp.o", @@ -10399,7 +12174,8 @@ our %unified_info = ( "test/helpers/sslapitest-bin-ssltestlib.o", "test/helpers/sslbuffertest-bin-ssltestlib.o", "test/helpers/sslcorrupttest-bin-ssltestlib.o", - "test/helpers/tls13ccstest-bin-ssltestlib.o" + "test/helpers/tls13ccstest-bin-ssltestlib.o", + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" ], "products" => { "bin" => [ @@ -10417,16 +12193,37 @@ our %unified_info = ( "test/dtlstest", "test/endecode_test", "test/fatalerrtest", + "test/json_test", + "test/pkcs12_api_test", "test/pkcs12_format_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_radix_test", + "test/quic_srt_gen_test", + "test/quicapitest", + "test/quicfaultstest", "test/recordlentest", + "test/rpktest", "test/servername_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", "test/sslapitest", "test/sslbuffertest", "test/sslcorrupttest", - "test/tls13ccstest" + "test/tls13ccstest", + "test/tls13groupselection_test" + ] + } + }, + "test/radix" => { + "deps" => [ + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "products" => { + "bin" => [ + "test/quic_radix_test" ] } }, @@ -10438,6 +12235,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -10473,6 +12271,12 @@ our %unified_info = ( } }, "generate" => { + "OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], "apps/progs.c" => [ "apps/progs.pl", "\"-C\"", @@ -10483,6 +12287,19 @@ our %unified_info = ( "\"-H\"", "\$(APPS_OPENSSL)" ], + "builddata.pm" => [ + "util/mkinstallvars.pl", + "PREFIX=.", + "BINDIR=apps", + "APPLINKDIR=ms", + "LIBDIR=", + "INCLUDEDIR=include", + "\"INCLUDEDIR=\$(SRCDIR)/include\"", + "ENGINESDIR=engines", + "MODULESDIR=providers", + "\"VERSION=\$(VERSION)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"" + ], "crypto/aes/aes-586.S" => [ "crypto/aes/asm/aes-586.pl" ], @@ -10504,6 +12321,24 @@ our %unified_info = ( "crypto/aes/aes-ppc.s" => [ "crypto/aes/asm/aes-ppc.pl" ], + "crypto/aes/aes-riscv32-zkn.s" => [ + "crypto/aes/asm/aes-riscv32-zkn.pl" + ], + "crypto/aes/aes-riscv64-zkn.s" => [ + "crypto/aes/asm/aes-riscv64-zkn.pl" + ], + "crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvbb-zvkg-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkb-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkb-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkned.pl" + ], + "crypto/aes/aes-riscv64.s" => [ + "crypto/aes/asm/aes-riscv64.pl" + ], "crypto/aes/aes-s390x.S" => [ "crypto/aes/asm/aes-s390x.pl" ], @@ -10531,6 +12366,9 @@ our %unified_info = ( "crypto/aes/aesni-x86_64.s" => [ "crypto/aes/asm/aesni-x86_64.pl" ], + "crypto/aes/aesni-xts-avx512.s" => [ + "crypto/aes/asm/aesni-xts-avx512.pl" + ], "crypto/aes/aesp8-ppc.s" => [ "crypto/aes/asm/aesp8-ppc.pl" ], @@ -10543,12 +12381,18 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.S" => [ "crypto/aes/asm/bsaes-armv7.pl" ], + "crypto/aes/bsaes-armv8.S" => [ + "crypto/aes/asm/bsaes-armv8.pl" + ], "crypto/aes/bsaes-x86_64.s" => [ "crypto/aes/asm/bsaes-x86_64.pl" ], "crypto/aes/vpaes-armv8.S" => [ "crypto/aes/asm/vpaes-armv8.pl" ], + "crypto/aes/vpaes-loongarch64.S" => [ + "crypto/aes/asm/vpaes-loongarch64.pl" + ], "crypto/aes/vpaes-ppc.s" => [ "crypto/aes/asm/vpaes-ppc.pl" ], @@ -10609,15 +12453,33 @@ our %unified_info = ( "crypto/bn/ppc-mont.s" => [ "crypto/bn/asm/ppc-mont.pl" ], + "crypto/bn/ppc64-mont-fixed.s" => [ + "crypto/bn/asm/ppc64-mont-fixed.pl" + ], "crypto/bn/ppc64-mont.s" => [ "crypto/bn/asm/ppc64-mont.pl" ], + "crypto/bn/rsaz-2k-avx512.s" => [ + "crypto/bn/asm/rsaz-2k-avx512.pl" + ], + "crypto/bn/rsaz-2k-avxifma.s" => [ + "crypto/bn/asm/rsaz-2k-avxifma.pl" + ], + "crypto/bn/rsaz-3k-avx512.s" => [ + "crypto/bn/asm/rsaz-3k-avx512.pl" + ], + "crypto/bn/rsaz-3k-avxifma.s" => [ + "crypto/bn/asm/rsaz-3k-avxifma.pl" + ], + "crypto/bn/rsaz-4k-avx512.s" => [ + "crypto/bn/asm/rsaz-4k-avx512.pl" + ], + "crypto/bn/rsaz-4k-avxifma.s" => [ + "crypto/bn/asm/rsaz-4k-avxifma.pl" + ], "crypto/bn/rsaz-avx2.s" => [ "crypto/bn/asm/rsaz-avx2.pl" ], - "crypto/bn/rsaz-avx512.s" => [ - "crypto/bn/asm/rsaz-avx512.pl" - ], "crypto/bn/rsaz-x86_64.s" => [ "crypto/bn/asm/rsaz-x86_64.pl" ], @@ -10679,6 +12541,9 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.S" => [ "crypto/chacha/asm/chacha-armv4.pl" ], + "crypto/chacha/chacha-armv8-sve.S" => [ + "crypto/chacha/asm/chacha-armv8-sve.pl" + ], "crypto/chacha/chacha-armv8.S" => [ "crypto/chacha/asm/chacha-armv8.pl" ], @@ -10691,9 +12556,19 @@ our %unified_info = ( "crypto/chacha/chacha-ia64.s" => [ "crypto/chacha/chacha-ia64.S" ], + "crypto/chacha/chacha-loongarch64.S" => [ + "crypto/chacha/asm/chacha-loongarch64.pl" + ], "crypto/chacha/chacha-ppc.s" => [ "crypto/chacha/asm/chacha-ppc.pl" ], + "crypto/chacha/chacha-riscv64-v-zbb-zvkb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl", + "zvkb" + ], + "crypto/chacha/chacha-riscv64-v-zbb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl" + ], "crypto/chacha/chacha-s390x.S" => [ "crypto/chacha/asm/chacha-s390x.pl" ], @@ -10703,6 +12578,9 @@ our %unified_info = ( "crypto/chacha/chacha-x86_64.s" => [ "crypto/chacha/asm/chacha-x86_64.pl" ], + "crypto/chacha/chachap10-ppc.s" => [ + "crypto/chacha/asm/chachap10-ppc.pl" + ], "crypto/des/crypt586.S" => [ "crypto/des/asm/crypt586.pl" ], @@ -10715,6 +12593,9 @@ our %unified_info = ( "crypto/des/dest4-sparcv9.S" => [ "crypto/des/asm/dest4-sparcv9.pl" ], + "crypto/ec/ecp_nistp384-ppc64.s" => [ + "crypto/ec/asm/ecp_nistp384-ppc64.pl" + ], "crypto/ec/ecp_nistp521-ppc64.s" => [ "crypto/ec/asm/ecp_nistp521-ppc64.pl" ], @@ -10739,6 +12620,9 @@ our %unified_info = ( "crypto/ec/ecp_nistz256-x86_64.s" => [ "crypto/ec/asm/ecp_nistz256-x86_64.pl" ], + "crypto/ec/ecp_sm2p256-armv8.S" => [ + "crypto/ec/asm/ecp_sm2p256-armv8.pl" + ], "crypto/ec/x25519-ppc64.s" => [ "crypto/ec/asm/x25519-ppc64.pl" ], @@ -10748,18 +12632,39 @@ our %unified_info = ( "crypto/ia64cpuid.s" => [ "crypto/ia64cpuid.S" ], + "crypto/loongarch64cpuid.s" => [ + "crypto/loongarch64cpuid.pl" + ], "crypto/md5/md5-586.S" => [ "crypto/md5/asm/md5-586.pl" ], + "crypto/md5/md5-aarch64.S" => [ + "crypto/md5/asm/md5-aarch64.pl" + ], + "crypto/md5/md5-loongarch64.S" => [ + "crypto/md5/asm/md5-loongarch64.pl" + ], "crypto/md5/md5-sparcv9.S" => [ "crypto/md5/asm/md5-sparcv9.pl" ], "crypto/md5/md5-x86_64.s" => [ "crypto/md5/asm/md5-x86_64.pl" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.S" => [ + "crypto/modes/asm/aes-gcm-armv8-unroll8_64.pl" + ], "crypto/modes/aes-gcm-armv8_64.S" => [ "crypto/modes/asm/aes-gcm-armv8_64.pl" ], + "crypto/modes/aes-gcm-avx512.s" => [ + "crypto/modes/asm/aes-gcm-avx512.pl" + ], + "crypto/modes/aes-gcm-ppc.s" => [ + "crypto/modes/asm/aes-gcm-ppc.pl" + ], + "crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s" => [ + "crypto/modes/asm/aes-gcm-riscv64-zvkb-zvkg-zvkned.pl" + ], "crypto/modes/aesni-gcm-x86_64.s" => [ "crypto/modes/asm/aesni-gcm-x86_64.pl" ], @@ -10778,6 +12683,15 @@ our %unified_info = ( "crypto/modes/ghash-parisc.s" => [ "crypto/modes/asm/ghash-parisc.pl" ], + "crypto/modes/ghash-riscv64-zvkb-zvbc.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkb-zvbc.pl" + ], + "crypto/modes/ghash-riscv64-zvkg.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkg.pl" + ], + "crypto/modes/ghash-riscv64.s" => [ + "crypto/modes/asm/ghash-riscv64.pl" + ], "crypto/modes/ghash-s390x.S" => [ "crypto/modes/asm/ghash-s390x.pl" ], @@ -10796,6 +12710,9 @@ our %unified_info = ( "crypto/modes/ghashv8-armx.S" => [ "crypto/modes/asm/ghashv8-armx.pl" ], + "crypto/params_idx.c" => [ + "crypto/params_idx.c.in" + ], "crypto/pariscid.s" => [ "crypto/pariscid.pl" ], @@ -10856,6 +12773,12 @@ our %unified_info = ( "crypto/ripemd/rmd-586.S" => [ "crypto/ripemd/asm/rmd-586.pl" ], + "crypto/riscv32cpuid.s" => [ + "crypto/riscv32cpuid.pl" + ], + "crypto/riscv64cpuid.s" => [ + "crypto/riscv64cpuid.pl" + ], "crypto/s390xcpuid.S" => [ "crypto/s390xcpuid.pl" ], @@ -10964,6 +12887,9 @@ our %unified_info = ( "crypto/sha/sha256-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S" => [ + "crypto/sha/asm/sha256-riscv64-zvkb-zvknha_or_zvknhb.pl" + ], "crypto/sha/sha256-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -11000,6 +12926,9 @@ our %unified_info = ( "crypto/sha/sha512-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha512-riscv64-zvkb-zvknhb.S" => [ + "crypto/sha/asm/sha512-riscv64-zvkb-zvknhb.pl" + ], "crypto/sha/sha512-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -11012,6 +12941,24 @@ our %unified_info = ( "crypto/sha/sha512p8-ppc.s" => [ "crypto/sha/asm/sha512p8-ppc.pl" ], + "crypto/sm3/sm3-armv8.S" => [ + "crypto/sm3/asm/sm3-armv8.pl" + ], + "crypto/sm3/sm3-riscv64-zvksh.S" => [ + "crypto/sm3/asm/sm3-riscv64-zvksh.pl" + ], + "crypto/sm4/sm4-armv8.S" => [ + "crypto/sm4/asm/sm4-armv8.pl" + ], + "crypto/sm4/sm4-riscv64-zvksed.s" => [ + "crypto/sm4/asm/sm4-riscv64-zvksed.pl" + ], + "crypto/sm4/vpsm4-armv8.S" => [ + "crypto/sm4/asm/vpsm4-armv8.pl" + ], + "crypto/sm4/vpsm4_ex-armv8.S" => [ + "crypto/sm4/asm/vpsm4_ex-armv8.pl" + ], "crypto/uplink-ia64.s" => [ "ms/uplink-ia64.pl" ], @@ -11177,6 +13124,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -11318,6 +13268,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -11354,6 +13307,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -11369,6 +13325,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -11441,6 +13400,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -11507,6 +13469,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -11606,6 +13571,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -11744,6 +13715,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -11861,6 +13835,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -11948,6 +13928,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -12020,9 +14003,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -12038,12 +14027,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -12113,9 +14108,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -12125,12 +14129,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -12146,9 +14162,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -12173,6 +14195,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -12188,6 +14213,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -12224,6 +14252,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -12497,6 +14528,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -12536,6 +14570,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -12557,6 +14594,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -12671,6 +14711,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -12698,9 +14741,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -12716,6 +14771,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -12725,12 +14783,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -12749,12 +14813,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -12764,9 +14840,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -12779,9 +14861,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -12797,24 +14891,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -12827,6 +14942,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -12836,8 +14957,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -12857,6 +14978,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -12905,6 +15041,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -12971,6 +15110,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -13094,9 +15236,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -13112,6 +15260,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -13136,9 +15287,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -13172,6 +15332,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -13229,15 +15392,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -13247,6 +15422,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -13268,9 +15446,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -13286,6 +15470,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -13298,9 +15485,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -13331,9 +15515,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -13349,12 +15530,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -13409,6 +15644,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -13418,9 +15656,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -13568,6 +15803,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -13709,6 +15947,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -13745,6 +15986,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -13760,6 +16004,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -13832,6 +16079,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -13898,6 +16148,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -13997,6 +16250,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -14135,6 +16394,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -14252,6 +16514,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -14339,6 +16607,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -14411,9 +16682,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -14429,12 +16706,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -14504,9 +16787,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -14516,12 +16808,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -14537,9 +16841,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -14564,6 +16874,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -14579,6 +16892,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -14615,6 +16931,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -14888,6 +17207,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -14927,6 +17249,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -14948,6 +17273,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -15062,6 +17390,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -15089,9 +17420,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -15107,6 +17450,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -15116,12 +17462,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -15140,12 +17492,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -15155,9 +17519,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -15170,9 +17540,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -15188,24 +17570,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -15218,6 +17621,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -15227,8 +17636,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -15242,11 +17651,26 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], - "doc/man/man3/X509V3_get_d2i.3" => [ - "doc/man3/X509V3_get_d2i.pod" + "doc/man/man3/X509V3_get_d2i.3" => [ + "doc/man3/X509V3_get_d2i.pod" + ], + "doc/man/man3/X509V3_set_ctx.3" => [ + "doc/man3/X509V3_set_ctx.pod" + ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" ], - "doc/man/man3/X509V3_set_ctx.3" => [ - "doc/man3/X509V3_set_ctx.pod" + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" @@ -15296,6 +17720,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -15362,6 +17789,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -15485,9 +17915,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -15503,6 +17939,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -15527,9 +17966,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -15563,6 +18011,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -15620,15 +18071,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -15638,6 +18101,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -15659,9 +18125,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -15677,6 +18149,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -15689,9 +18164,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -15722,9 +18194,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -15740,12 +18209,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -15800,6 +18323,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -15809,9 +18335,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -15947,6 +18470,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc/man1/openssl-sess_id.pod.in" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in" ], @@ -15983,12 +18509,30 @@ our %unified_info = ( "engines/e_padlock-x86_64.s" => [ "engines/asm/e_padlock-x86_64.pl" ], + "exporters/OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], + "exporters/libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], + "exporters/libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "exporters/openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "include/crypto/bn_conf.h" => [ "include/crypto/bn_conf.h.in" ], "include/crypto/dso_conf.h" => [ "include/crypto/dso_conf.h.in" ], + "include/internal/param_names.h" => [ + "include/internal/param_names.h.in" + ], "include/openssl/asn1.h" => [ "include/openssl/asn1.h.in" ], @@ -16004,12 +18548,18 @@ our %unified_info = ( "include/openssl/cms.h" => [ "include/openssl/cms.h.in" ], + "include/openssl/comp.h" => [ + "include/openssl/comp.h.in" + ], "include/openssl/conf.h" => [ "include/openssl/conf.h.in" ], "include/openssl/configuration.h" => [ "include/openssl/configuration.h.in" ], + "include/openssl/core_names.h" => [ + "include/openssl/core_names.h.in" + ], "include/openssl/crmf.h" => [ "include/openssl/crmf.h.in" ], @@ -16058,20 +18608,47 @@ our %unified_info = ( "include/openssl/x509.h" => [ "include/openssl/x509.h.in" ], + "include/openssl/x509_acert.h" => [ + "include/openssl/x509_acert.h.in" + ], "include/openssl/x509_vfy.h" => [ "include/openssl/x509_vfy.h.in" ], "include/openssl/x509v3.h" => [ "include/openssl/x509v3.h.in" ], + "installdata.pm" => [ + "util/mkinstallvars.pl", + "\"PREFIX=\$(INSTALLTOP)\"", + "BINDIR=bin", + "\"LIBDIR=\$(LIBDIR)\"", + "\"libdir=\$(libdir)\"", + "INCLUDEDIR=include", + "APPLINKDIR=include/openssl", + "\"ENGINESDIR=\$(ENGINESDIR)\"", + "\"MODULESDIR=\$(MODULESDIR)\"", + "\"PKGCONFIGDIR=\$(PKGCONFIGDIR)\"", + "\"CMAKECONFIGDIR=\$(CMAKECONFIGDIR)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"", + "\"VERSION=\$(VERSION)\"" + ], "libcrypto.ld" => [ "util/libcrypto.num", "libcrypto" ], + "libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], "libssl.ld" => [ "util/libssl.num", "libssl" ], + "libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/der_digests_gen.c.in" ], @@ -16084,9 +18661,15 @@ our %unified_info = ( "providers/common/der/der_ecx_gen.c" => [ "providers/common/der/der_ecx_gen.c.in" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/der_ml_dsa_gen.c.in" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/der_rsa_gen.c.in" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/der_slh_dsa_gen.c.in" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/der_sm2_gen.c.in" ], @@ -16105,9 +18688,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/include/prov/der_ecx.h.in" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/include/prov/der_ml_dsa.h.in" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/include/prov/der_rsa.h.in" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/include/prov/der_slh_dsa.h.in" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/include/prov/der_sm2.h.in" ], @@ -16149,6 +18738,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "buffer" ], + "test/buildtest_byteorder.c" => [ + "test/generate_buildtest.pl", + "byteorder" + ], "test/buildtest_camellia.c" => [ "test/generate_buildtest.pl", "camellia" @@ -16181,10 +18774,6 @@ our %unified_info = ( "test/generate_buildtest.pl", "core_dispatch" ], - "test/buildtest_core_names.c" => [ - "test/generate_buildtest.pl", - "core_names" - ], "test/buildtest_core_object.c" => [ "test/generate_buildtest.pl", "core_object" @@ -16217,6 +18806,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "e_os2" ], + "test/buildtest_e_ostime.c" => [ + "test/generate_buildtest.pl", + "e_ostime" + ], "test/buildtest_ebcdic.c" => [ "test/generate_buildtest.pl", "ebcdic" @@ -16253,6 +18846,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "hmac" ], + "test/buildtest_hpke.c" => [ + "test/generate_buildtest.pl", + "hpke" + ], "test/buildtest_http.c" => [ "test/generate_buildtest.pl", "http" @@ -16261,6 +18858,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "idea" ], + "test/buildtest_indicator.c" => [ + "test/generate_buildtest.pl", + "indicator" + ], "test/buildtest_kdf.c" => [ "test/generate_buildtest.pl", "kdf" @@ -16281,6 +18882,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "mdc2" ], + "test/buildtest_ml_kem.c" => [ + "test/generate_buildtest.pl", + "ml_kem" + ], "test/buildtest_modes.c" => [ "test/generate_buildtest.pl", "modes" @@ -16321,6 +18926,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "provider" ], + "test/buildtest_quic.c" => [ + "test/generate_buildtest.pl", + "quic" + ], "test/buildtest_rand.c" => [ "test/generate_buildtest.pl", "rand" @@ -16377,6 +18986,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "symhacks" ], + "test/buildtest_thread.c" => [ + "test/generate_buildtest.pl", + "thread" + ], "test/buildtest_tls1.c" => [ "test/generate_buildtest.pl", "tls1" @@ -16457,6 +19070,7 @@ our %unified_info = ( "doc/html/man1/openssl-s_server.html", "doc/html/man1/openssl-s_time.html", "doc/html/man1/openssl-sess_id.html", + "doc/html/man1/openssl-skeyutl.html", "doc/html/man1/openssl-smime.html", "doc/html/man1/openssl-speed.html", "doc/html/man1/openssl-spkac.html", @@ -16506,6 +19120,7 @@ our %unified_info = ( "doc/html/man3/BIO_find_type.html", "doc/html/man3/BIO_get_data.html", "doc/html/man3/BIO_get_ex_new_index.html", + "doc/html/man3/BIO_get_rpoll_descriptor.html", "doc/html/man3/BIO_meth_new.html", "doc/html/man3/BIO_new.html", "doc/html/man3/BIO_new_CMS.html", @@ -16518,11 +19133,13 @@ our %unified_info = ( "doc/html/man3/BIO_s_connect.html", "doc/html/man3/BIO_s_core.html", "doc/html/man3/BIO_s_datagram.html", + "doc/html/man3/BIO_s_dgram_pair.html", "doc/html/man3/BIO_s_fd.html", "doc/html/man3/BIO_s_file.html", "doc/html/man3/BIO_s_mem.html", "doc/html/man3/BIO_s_null.html", "doc/html/man3/BIO_s_socket.html", + "doc/html/man3/BIO_sendmmsg.html", "doc/html/man3/BIO_set_callback.html", "doc/html/man3/BIO_should_retry.html", "doc/html/man3/BIO_socket_wait.html", @@ -16547,6 +19164,7 @@ our %unified_info = ( "doc/html/man3/BN_swap.html", "doc/html/man3/BN_zero.html", "doc/html/man3/BUF_MEM_new.html", + "doc/html/man3/CMAC_CTX.html", "doc/html/man3/CMS_EncryptedData_decrypt.html", "doc/html/man3/CMS_EncryptedData_encrypt.html", "doc/html/man3/CMS_EnvelopedData_create.html", @@ -16569,6 +19187,7 @@ our %unified_info = ( "doc/html/man3/CMS_uncompress.html", "doc/html/man3/CMS_verify.html", "doc/html/man3/CMS_verify_receipt.html", + "doc/html/man3/COMP_CTX_new.html", "doc/html/man3/CONF_modules_free.html", "doc/html/man3/CONF_modules_load_file.html", "doc/html/man3/CRYPTO_THREAD_run_once.html", @@ -16602,6 +19221,8 @@ our %unified_info = ( "doc/html/man3/DSA_size.html", "doc/html/man3/DTLS_get_data_mtu.html", "doc/html/man3/DTLS_set_timer_cb.html", + "doc/html/man3/DTLSv1_get_timeout.html", + "doc/html/man3/DTLSv1_handle_timeout.html", "doc/html/man3/DTLSv1_listen.html", "doc/html/man3/ECDSA_SIG_new.html", "doc/html/man3/ECDSA_sign.html", @@ -16648,6 +19269,7 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_ctrl.html", "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html", "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html", + "doc/html/man3/EVP_PKEY_CTX_get_algor.html", "doc/html/man3/EVP_PKEY_CTX_new.html", "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html", "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html", @@ -16687,6 +19309,8 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_verify_recover.html", "doc/html/man3/EVP_RAND.html", "doc/html/man3/EVP_SIGNATURE.html", + "doc/html/man3/EVP_SKEY.html", + "doc/html/man3/EVP_SKEYMGMT.html", "doc/html/man3/EVP_SealInit.html", "doc/html/man3/EVP_SignInit.html", "doc/html/man3/EVP_VerifyInit.html", @@ -16716,6 +19340,7 @@ our %unified_info = ( "doc/html/man3/EVP_sm3.html", "doc/html/man3/EVP_sm4_cbc.html", "doc/html/man3/EVP_whirlpool.html", + "doc/html/man3/GENERAL_NAME.html", "doc/html/man3/HMAC.html", "doc/html/man3/MD5.html", "doc/html/man3/MDC2_Init.html", @@ -16740,14 +19365,18 @@ our %unified_info = ( "doc/html/man3/OPENSSL_init_ssl.html", "doc/html/man3/OPENSSL_instrument_bus.html", "doc/html/man3/OPENSSL_load_builtin_modules.html", + "doc/html/man3/OPENSSL_load_u16_le.html", "doc/html/man3/OPENSSL_malloc.html", + "doc/html/man3/OPENSSL_riscvcap.html", "doc/html/man3/OPENSSL_s390xcap.html", "doc/html/man3/OPENSSL_secure_malloc.html", "doc/html/man3/OPENSSL_strcasecmp.html", "doc/html/man3/OSSL_ALGORITHM.html", "doc/html/man3/OSSL_CALLBACK.html", + "doc/html/man3/OSSL_CMP_ATAV_set0.html", "doc/html/man3/OSSL_CMP_CTX_new.html", "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html", + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html", "doc/html/man3/OSSL_CMP_ITAV_set0.html", "doc/html/man3/OSSL_CMP_MSG_get0_header.html", "doc/html/man3/OSSL_CMP_MSG_http_perform.html", @@ -16771,18 +19400,27 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_CTX.html", "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html", "doc/html/man3/OSSL_ENCODER_to_bio.html", + "doc/html/man3/OSSL_ERR_STATE_save.html", "doc/html/man3/OSSL_ESS_check_signing_certs.html", + "doc/html/man3/OSSL_GENERAL_NAMES_print.html", + "doc/html/man3/OSSL_HPKE_CTX_new.html", "doc/html/man3/OSSL_HTTP_REQ_CTX.html", "doc/html/man3/OSSL_HTTP_parse_url.html", "doc/html/man3/OSSL_HTTP_transfer.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html", + "doc/html/man3/OSSL_INDICATOR_set_callback.html", "doc/html/man3/OSSL_ITEM.html", "doc/html/man3/OSSL_LIB_CTX.html", + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html", "doc/html/man3/OSSL_PARAM.html", "doc/html/man3/OSSL_PARAM_BLD.html", "doc/html/man3/OSSL_PARAM_allocate_from_text.html", "doc/html/man3/OSSL_PARAM_dup.html", "doc/html/man3/OSSL_PARAM_int.html", + "doc/html/man3/OSSL_PARAM_print_to_bio.html", "doc/html/man3/OSSL_PROVIDER.html", + "doc/html/man3/OSSL_QUIC_client_method.html", "doc/html/man3/OSSL_SELF_TEST_new.html", "doc/html/man3/OSSL_SELF_TEST_set_callback.html", "doc/html/man3/OSSL_STORE_INFO.html", @@ -16791,11 +19429,13 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_attach.html", "doc/html/man3/OSSL_STORE_expect.html", "doc/html/man3/OSSL_STORE_open.html", + "doc/html/man3/OSSL_sleep.html", "doc/html/man3/OSSL_trace_enabled.html", "doc/html/man3/OSSL_trace_get_category_num.html", "doc/html/man3/OSSL_trace_set_channel.html", "doc/html/man3/OpenSSL_add_all_algorithms.html", "doc/html/man3/OpenSSL_version.html", + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html", "doc/html/man3/PEM_X509_INFO_read_bio_ex.html", "doc/html/man3/PEM_bytes_read_bio.html", "doc/html/man3/PEM_read.html", @@ -16808,6 +19448,7 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_create_cert.html", "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html", "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html", + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html", "doc/html/man3/PKCS12_add1_attr_by_NID.html", "doc/html/man3/PKCS12_add_CSPName_asc.html", "doc/html/man3/PKCS12_add_cert.html", @@ -16899,6 +19540,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_sess_set_get_cb.html", "doc/html/man3/SSL_CTX_sessions.html", "doc/html/man3/SSL_CTX_set0_CA_list.html", + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html", "doc/html/man3/SSL_CTX_set1_curves.html", "doc/html/man3/SSL_CTX_set1_sigalgs.html", "doc/html/man3/SSL_CTX_set1_verify_cert_store.html", @@ -16912,6 +19554,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_ct_validation_callback.html", "doc/html/man3/SSL_CTX_set_ctlog_list_file.html", "doc/html/man3/SSL_CTX_set_default_passwd_cb.html", + "doc/html/man3/SSL_CTX_set_domain_flags.html", "doc/html/man3/SSL_CTX_set_generate_session_id.html", "doc/html/man3/SSL_CTX_set_info_callback.html", "doc/html/man3/SSL_CTX_set_keylog_callback.html", @@ -16919,6 +19562,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_min_proto_version.html", "doc/html/man3/SSL_CTX_set_mode.html", "doc/html/man3/SSL_CTX_set_msg_callback.html", + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html", "doc/html/man3/SSL_CTX_set_num_tickets.html", "doc/html/man3/SSL_CTX_set_options.html", "doc/html/man3/SSL_CTX_set_psk_client_callback.html", @@ -16957,6 +19601,7 @@ our %unified_info = ( "doc/html/man3/SSL_SESSION_print.html", "doc/html/man3/SSL_SESSION_set1_id.html", "doc/html/man3/SSL_accept.html", + "doc/html/man3/SSL_accept_stream.html", "doc/html/man3/SSL_alert_type_string.html", "doc/html/man3/SSL_alloc_buffers.html", "doc/html/man3/SSL_check_chain.html", @@ -16966,59 +19611,90 @@ our %unified_info = ( "doc/html/man3/SSL_export_keying_material.html", "doc/html/man3/SSL_extension_supported.html", "doc/html/man3/SSL_free.html", + "doc/html/man3/SSL_get0_connection.html", + "doc/html/man3/SSL_get0_group_name.html", + "doc/html/man3/SSL_get0_peer_rpk.html", "doc/html/man3/SSL_get0_peer_scts.html", + "doc/html/man3/SSL_get1_builtin_sigalgs.html", "doc/html/man3/SSL_get_SSL_CTX.html", "doc/html/man3/SSL_get_all_async_fds.html", "doc/html/man3/SSL_get_certificate.html", "doc/html/man3/SSL_get_ciphers.html", "doc/html/man3/SSL_get_client_random.html", + "doc/html/man3/SSL_get_conn_close_info.html", "doc/html/man3/SSL_get_current_cipher.html", "doc/html/man3/SSL_get_default_timeout.html", "doc/html/man3/SSL_get_error.html", + "doc/html/man3/SSL_get_event_timeout.html", "doc/html/man3/SSL_get_extms_support.html", "doc/html/man3/SSL_get_fd.html", + "doc/html/man3/SSL_get_handshake_rtt.html", "doc/html/man3/SSL_get_peer_cert_chain.html", "doc/html/man3/SSL_get_peer_certificate.html", "doc/html/man3/SSL_get_peer_signature_nid.html", "doc/html/man3/SSL_get_peer_tmp_key.html", "doc/html/man3/SSL_get_psk_identity.html", "doc/html/man3/SSL_get_rbio.html", + "doc/html/man3/SSL_get_rpoll_descriptor.html", "doc/html/man3/SSL_get_session.html", "doc/html/man3/SSL_get_shared_sigalgs.html", + "doc/html/man3/SSL_get_stream_id.html", + "doc/html/man3/SSL_get_stream_read_state.html", + "doc/html/man3/SSL_get_value_uint.html", "doc/html/man3/SSL_get_verify_result.html", "doc/html/man3/SSL_get_version.html", "doc/html/man3/SSL_group_to_name.html", + "doc/html/man3/SSL_handle_events.html", "doc/html/man3/SSL_in_init.html", + "doc/html/man3/SSL_inject_net_dgram.html", "doc/html/man3/SSL_key_update.html", "doc/html/man3/SSL_library_init.html", "doc/html/man3/SSL_load_client_CA_file.html", "doc/html/man3/SSL_new.html", + "doc/html/man3/SSL_new_domain.html", + "doc/html/man3/SSL_new_listener.html", + "doc/html/man3/SSL_new_stream.html", "doc/html/man3/SSL_pending.html", + "doc/html/man3/SSL_poll.html", "doc/html/man3/SSL_read.html", "doc/html/man3/SSL_read_early_data.html", "doc/html/man3/SSL_rstate_string.html", "doc/html/man3/SSL_session_reused.html", "doc/html/man3/SSL_set1_host.html", + "doc/html/man3/SSL_set1_initial_peer_addr.html", + "doc/html/man3/SSL_set1_server_cert_type.html", "doc/html/man3/SSL_set_async_callback.html", "doc/html/man3/SSL_set_bio.html", + "doc/html/man3/SSL_set_blocking_mode.html", "doc/html/man3/SSL_set_connect_state.html", + "doc/html/man3/SSL_set_default_stream_mode.html", "doc/html/man3/SSL_set_fd.html", + "doc/html/man3/SSL_set_incoming_stream_policy.html", + "doc/html/man3/SSL_set_quic_tls_cbs.html", "doc/html/man3/SSL_set_retry_verify.html", "doc/html/man3/SSL_set_session.html", + "doc/html/man3/SSL_set_session_secret_cb.html", "doc/html/man3/SSL_set_shutdown.html", "doc/html/man3/SSL_set_verify_result.html", "doc/html/man3/SSL_shutdown.html", "doc/html/man3/SSL_state_string.html", + "doc/html/man3/SSL_stream_conclude.html", + "doc/html/man3/SSL_stream_reset.html", "doc/html/man3/SSL_want.html", "doc/html/man3/SSL_write.html", "doc/html/man3/TS_RESP_CTX_new.html", - "doc/html/man3/TS_VERIFY_CTX_set_certs.html", + "doc/html/man3/TS_VERIFY_CTX.html", "doc/html/man3/UI_STRING.html", "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", + "doc/html/man3/X509_ACERT_add1_attr.html", + "doc/html/man3/X509_ACERT_add_attr_nconf.html", + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html", + "doc/html/man3/X509_ACERT_get_attr.html", + "doc/html/man3/X509_ACERT_print_ex.html", "doc/html/man3/X509_ALGOR_dup.html", "doc/html/man3/X509_ATTRIBUTE.html", "doc/html/man3/X509_CRL_get0_by_serial.html", @@ -17035,6 +19711,7 @@ our %unified_info = ( "doc/html/man3/X509_REQ_get_attr.html", "doc/html/man3/X509_REQ_get_extensions.html", "doc/html/man3/X509_SIG_get0.html", + "doc/html/man3/X509_STORE_CTX_get_by_subject.html", "doc/html/man3/X509_STORE_CTX_get_error.html", "doc/html/man3/X509_STORE_CTX_new.html", "doc/html/man3/X509_STORE_CTX_set_verify_cb.html", @@ -17057,6 +19734,7 @@ our %unified_info = ( "doc/html/man3/X509_get0_notBefore.html", "doc/html/man3/X509_get0_signature.html", "doc/html/man3/X509_get0_uids.html", + "doc/html/man3/X509_get_default_cert_file.html", "doc/html/man3/X509_get_extension_flags.html", "doc/html/man3/X509_get_pubkey.html", "doc/html/man3/X509_get_serialNumber.html", @@ -17102,12 +19780,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-RC5.html", "doc/html/man7/EVP_CIPHER-SEED.html", "doc/html/man7/EVP_CIPHER-SM4.html", + "doc/html/man7/EVP_KDF-ARGON2.html", "doc/html/man7/EVP_KDF-HKDF.html", + "doc/html/man7/EVP_KDF-HMAC-DRBG.html", "doc/html/man7/EVP_KDF-KB.html", "doc/html/man7/EVP_KDF-KRB5KDF.html", "doc/html/man7/EVP_KDF-PBKDF1.html", "doc/html/man7/EVP_KDF-PBKDF2.html", "doc/html/man7/EVP_KDF-PKCS12KDF.html", + "doc/html/man7/EVP_KDF-PVKKDF.html", "doc/html/man7/EVP_KDF-SCRYPT.html", "doc/html/man7/EVP_KDF-SS.html", "doc/html/man7/EVP_KDF-SSHKDF.html", @@ -17116,7 +19797,10 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X942-ASN1.html", "doc/html/man7/EVP_KDF-X942-CONCAT.html", "doc/html/man7/EVP_KDF-X963.html", + "doc/html/man7/EVP_KEM-EC.html", + "doc/html/man7/EVP_KEM-ML-KEM.html", "doc/html/man7/EVP_KEM-RSA.html", + "doc/html/man7/EVP_KEM-X25519.html", "doc/html/man7/EVP_KEYEXCH-DH.html", "doc/html/man7/EVP_KEYEXCH-ECDH.html", "doc/html/man7/EVP_KEYEXCH-X25519.html", @@ -17128,6 +19812,7 @@ our %unified_info = ( "doc/html/man7/EVP_MAC-Poly1305.html", "doc/html/man7/EVP_MAC-Siphash.html", "doc/html/man7/EVP_MD-BLAKE2.html", + "doc/html/man7/EVP_MD-KECCAK.html", "doc/html/man7/EVP_MD-MD2.html", "doc/html/man7/EVP_MD-MD4.html", "doc/html/man7/EVP_MD-MD5-SHA1.html", @@ -17147,12 +19832,17 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-EC.html", "doc/html/man7/EVP_PKEY-FFC.html", "doc/html/man7/EVP_PKEY-HMAC.html", + "doc/html/man7/EVP_PKEY-ML-DSA.html", + "doc/html/man7/EVP_PKEY-ML-KEM.html", "doc/html/man7/EVP_PKEY-RSA.html", + "doc/html/man7/EVP_PKEY-SLH-DSA.html", "doc/html/man7/EVP_PKEY-SM2.html", "doc/html/man7/EVP_PKEY-X25519.html", + "doc/html/man7/EVP_RAND-CRNG-TEST.html", "doc/html/man7/EVP_RAND-CTR-DRBG.html", "doc/html/man7/EVP_RAND-HASH-DRBG.html", "doc/html/man7/EVP_RAND-HMAC-DRBG.html", + "doc/html/man7/EVP_RAND-JITTER.html", "doc/html/man7/EVP_RAND-SEED-SRC.html", "doc/html/man7/EVP_RAND-TEST-RAND.html", "doc/html/man7/EVP_RAND.html", @@ -17160,17 +19850,19 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-ECDSA.html", "doc/html/man7/EVP_SIGNATURE-ED25519.html", "doc/html/man7/EVP_SIGNATURE-HMAC.html", + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html", "doc/html/man7/EVP_SIGNATURE-RSA.html", + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html", "doc/html/man7/OSSL_PROVIDER-FIPS.html", "doc/html/man7/OSSL_PROVIDER-base.html", "doc/html/man7/OSSL_PROVIDER-default.html", "doc/html/man7/OSSL_PROVIDER-legacy.html", "doc/html/man7/OSSL_PROVIDER-null.html", + "doc/html/man7/OSSL_STORE-winstore.html", "doc/html/man7/RAND.html", "doc/html/man7/RSA-PSS.html", "doc/html/man7/X25519.html", "doc/html/man7/bio.html", - "doc/html/man7/crypto.html", "doc/html/man7/ct.html", "doc/html/man7/des_modes.html", "doc/html/man7/evp.html", @@ -17181,14 +19873,31 @@ our %unified_info = ( "doc/html/man7/life_cycle-mac.html", "doc/html/man7/life_cycle-pkey.html", "doc/html/man7/life_cycle-rand.html", - "doc/html/man7/migration_guide.html", "doc/html/man7/openssl-core.h.html", "doc/html/man7/openssl-core_dispatch.h.html", "doc/html/man7/openssl-core_names.h.html", "doc/html/man7/openssl-env.html", "doc/html/man7/openssl-glossary.html", + "doc/html/man7/openssl-qlog.html", + "doc/html/man7/openssl-quic-concurrency.html", + "doc/html/man7/openssl-quic.html", "doc/html/man7/openssl-threads.html", "doc/html/man7/openssl_user_macros.html", + "doc/html/man7/ossl-guide-introduction.html", + "doc/html/man7/ossl-guide-libcrypto-introduction.html", + "doc/html/man7/ossl-guide-libraries-introduction.html", + "doc/html/man7/ossl-guide-libssl-introduction.html", + "doc/html/man7/ossl-guide-migration.html", + "doc/html/man7/ossl-guide-quic-client-block.html", + "doc/html/man7/ossl-guide-quic-client-non-block.html", + "doc/html/man7/ossl-guide-quic-introduction.html", + "doc/html/man7/ossl-guide-quic-multi-stream.html", + "doc/html/man7/ossl-guide-quic-server-block.html", + "doc/html/man7/ossl-guide-quic-server-non-block.html", + "doc/html/man7/ossl-guide-tls-client-block.html", + "doc/html/man7/ossl-guide-tls-client-non-block.html", + "doc/html/man7/ossl-guide-tls-introduction.html", + "doc/html/man7/ossl-guide-tls-server-block.html", "doc/html/man7/ossl_store-file.html", "doc/html/man7/ossl_store.html", "doc/html/man7/passphrase-encoding.html", @@ -17207,10 +19916,10 @@ our %unified_info = ( "doc/html/man7/provider-object.html", "doc/html/man7/provider-rand.html", "doc/html/man7/provider-signature.html", + "doc/html/man7/provider-skeymgmt.html", "doc/html/man7/provider-storemgmt.html", "doc/html/man7/provider.html", "doc/html/man7/proxy-certificates.html", - "doc/html/man7/ssl.html", "doc/html/man7/x509.html" ] }, @@ -17225,12 +19934,21 @@ our %unified_info = ( ] }, "includes" => { + "OpenSSLConfig.cmake" => [ + "." + ], + "OpenSSLConfigVersion.cmake" => [ + "." + ], "apps/asn1parse.o" => [ "apps" ], "apps/ca.o" => [ "apps" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps" + ], "apps/ciphers.o" => [ "apps" ], @@ -17457,6 +20175,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps" + ], "apps/openssl-bin-smime.o" => [ "apps" ], @@ -17544,6 +20265,9 @@ our %unified_info = ( "apps/sess_id.o" => [ "apps" ], + "apps/skeyutl.o" => [ + "apps" + ], "apps/smime.o" => [ "apps" ], @@ -17595,6 +20319,12 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.o" => [ "crypto" ], + "crypto/aes/vpaes-armv8.o" => [ + "crypto" + ], + "crypto/aes/vpaes-loongarch64.o" => [ + "crypto" + ], "crypto/arm64cpuid.o" => [ "crypto" ], @@ -17646,9 +20376,15 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.o" => [ "crypto" ], + "crypto/chacha/chacha-armv8-sve.o" => [ + "crypto" + ], "crypto/chacha/chacha-armv8.o" => [ "crypto" ], + "crypto/chacha/chacha-loongarch64.o" => [ + "crypto" + ], "crypto/chacha/chacha-s390x.o" => [ "crypto" ], @@ -17673,15 +20409,27 @@ our %unified_info = ( "crypto/ec/ecp_s390x_nistp.o" => [ "crypto" ], + "crypto/ec/ecp_sm2p256-armv8.o" => [ + "crypto" + ], + "crypto/ec/ecx_key.o" => [ + "crypto" + ], "crypto/ec/ecx_meth.o" => [ "crypto" ], "crypto/ec/ecx_s390x.o" => [ "crypto" ], + "crypto/ec/libcrypto-lib-ecx_key.o" => [ + "crypto" + ], "crypto/ec/libcrypto-lib-ecx_meth.o" => [ "crypto" ], + "crypto/ec/libfips-lib-ecx_key.o" => [ + "crypto" + ], "crypto/evp/e_aes.o" => [ "crypto", "crypto/modes" @@ -17753,9 +20501,18 @@ our %unified_info = ( "crypto/libfips-lib-cpuid.o" => [ "." ], + "crypto/md5/md5-aarch64.o" => [ + "crypto" + ], + "crypto/md5/md5-loongarch64.o" => [ + "crypto" + ], "crypto/md5/md5-sparcv9.o" => [ "crypto" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.o" => [ + "crypto" + ], "crypto/modes/aes-gcm-armv8_64.o" => [ "crypto" ], @@ -17780,6 +20537,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-gcm128.o" => [ "crypto" ], + "crypto/params_idx.c" => [ + "util/perl" + ], "crypto/poly1305/poly1305-armv4.o" => [ "crypto" ], @@ -17801,6 +20561,9 @@ our %unified_info = ( "crypto/sha/keccak1600-armv4.o" => [ "crypto" ], + "crypto/sha/keccak1600-armv8.o" => [ + "crypto" + ], "crypto/sha/sha1-armv4-large.o" => [ "crypto" ], @@ -17846,6 +20609,18 @@ our %unified_info = ( "crypto/sha/sha512-sparcv9.o" => [ "crypto" ], + "crypto/sm3/sm3-armv8.o" => [ + "crypto" + ], + "crypto/sm4/sm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4_ex-armv8.o" => [ + "crypto" + ], "doc/man1/openssl-asn1parse.pod" => [ "doc" ], @@ -17978,6 +20753,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc" + ], "doc/man1/openssl-smime.pod" => [ "doc" ], @@ -18005,6 +20783,24 @@ our %unified_info = ( "doc/man1/openssl-x509.pod" => [ "doc" ], + "exporters/OpenSSLConfig.cmake" => [ + "." + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "." + ], + "exporters/libcrypto.pc" => [ + "." + ], + "exporters/libssl.pc" => [ + "." + ], + "exporters/openssl.pc" => [ + "." + ], + "fuzz/acert-test" => [ + "include" + ], "fuzz/asn1-test" => [ "include" ], @@ -18035,12 +20831,69 @@ our %unified_info = ( "fuzz/ct-test" => [ "include" ], + "fuzz/decoder-test" => [ + "include" + ], + "fuzz/dtlsclient-test" => [ + "include" + ], + "fuzz/dtlsserver-test" => [ + "include" + ], + "fuzz/hashtable-test" => [ + "include" + ], + "fuzz/ml-dsa-test" => [ + "include" + ], + "fuzz/ml-kem-test" => [ + "include" + ], + "fuzz/pem-test" => [ + "include" + ], + "fuzz/provider-test" => [ + "include" + ], + "fuzz/punycode-test" => [ + "include" + ], + "fuzz/quic-client-test" => [ + "include" + ], + "fuzz/quic-lcidm-test" => [ + "include" + ], + "fuzz/quic-rcidm-test" => [ + "include" + ], + "fuzz/quic-server-test" => [ + "include" + ], + "fuzz/quic-srtm-test" => [ + "include" + ], "fuzz/server-test" => [ "include" ], + "fuzz/slh-dsa-test" => [ + "include" + ], + "fuzz/smime-test" => [ + "include" + ], + "fuzz/v3name-test" => [ + "include" + ], "fuzz/x509-test" => [ "include" ], + "include/internal/param_names.h" => [ + "util/perl" + ], + "include/openssl/core_names.h" => [ + "util/perl" + ], "libcrypto" => [ ".", "include", @@ -18051,6 +20904,9 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libcrypto.pc" => [ + "." + ], "libssl" => [ ".", "include" @@ -18059,6 +20915,12 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libssl.pc" => [ + "." + ], + "openssl.pc" => [ + "." + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der" ], @@ -18098,6 +20960,15 @@ our %unified_info = ( "providers/common/der/der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der" ], @@ -18110,6 +20981,15 @@ our %unified_info = ( "providers/common/der/der_rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der" ], @@ -18155,12 +21035,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov" ], @@ -18191,9 +21083,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der" ], @@ -18236,9 +21134,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18251,12 +21155,24 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18269,28 +21185,39 @@ our %unified_info = ( "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libdefault.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libfips.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/liblegacy.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" + ], + "providers/libtemplate.a" => [ + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" ], "test/aborttest" => [ "include", @@ -18359,6 +21286,14 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_addr_test" => [ + "include", + "apps/include" + ], + "test/bio_base64_test" => [ + "include", + "apps/include" + ], "test/bio_callback_test" => [ "include", "apps/include" @@ -18367,6 +21302,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_dgram_test" => [ + "include", + "apps/include", + "." + ], "test/bio_enc_test" => [ "include", "apps/include" @@ -18375,6 +21315,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_meth_test" => [ + "include", + "apps/include" + ], "test/bio_prefix_text" => [ ".", "include", @@ -18388,6 +21332,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_tfo_test" => [ + "include", + "apps/include", + "." + ], "test/bioprinttest" => [ "include", "apps/include" @@ -18402,6 +21351,9 @@ our %unified_info = ( "include", "apps/include" ], + "test/build_wincrypt_test" => [ + "include" + ], "test/buildtest_c_aes" => [ "include" ], @@ -18417,6 +21369,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => [ "include" ], + "test/buildtest_c_byteorder" => [ + "include" + ], "test/buildtest_c_camellia" => [ "include" ], @@ -18441,9 +21396,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => [ "include" ], - "test/buildtest_c_core_names" => [ - "include" - ], "test/buildtest_c_core_object" => [ "include" ], @@ -18468,6 +21420,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => [ "include" ], + "test/buildtest_c_e_ostime" => [ + "include" + ], "test/buildtest_c_ebcdic" => [ "include" ], @@ -18495,12 +21450,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => [ "include" ], + "test/buildtest_c_hpke" => [ + "include" + ], "test/buildtest_c_http" => [ "include" ], "test/buildtest_c_idea" => [ "include" ], + "test/buildtest_c_indicator" => [ + "include" + ], "test/buildtest_c_kdf" => [ "include" ], @@ -18516,6 +21477,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => [ "include" ], + "test/buildtest_c_ml_kem" => [ + "include" + ], "test/buildtest_c_modes" => [ "include" ], @@ -18546,6 +21510,9 @@ our %unified_info = ( "test/buildtest_c_provider" => [ "include" ], + "test/buildtest_c_quic" => [ + "include" + ], "test/buildtest_c_rand" => [ "include" ], @@ -18588,6 +21555,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => [ "include" ], + "test/buildtest_c_thread" => [ + "include" + ], "test/buildtest_c_tls1" => [ "include" ], @@ -18603,10 +21573,24 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => [ "include" ], + "test/byteorder_test" => [ + "include", + "apps/include" + ], + "test/ca_internals_test" => [ + ".", + "include", + "apps/include" + ], "test/casttest" => [ "include", "apps/include" ], + "test/cert_comp_test" => [ + "include", + "apps/include", + "." + ], "test/chacha_internal_test" => [ ".", "include", @@ -18730,6 +21714,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/decoder_propq_test" => [ + ".", + "include", + "apps/include" + ], "test/defltfips_test" => [ "include", "apps/include" @@ -18745,7 +21734,8 @@ our %unified_info = ( "test/drbgtest" => [ "include", "apps/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "test/dsa_no_digest_size_test" => [ "include", @@ -18788,7 +21778,9 @@ our %unified_info = ( "test/endecode_test" => [ ".", "include", - "apps/include" + "apps/include", + "providers/common/include", + "providers/implementations/include" ], "test/endecoder_legacy_test" => [ ".", @@ -18833,6 +21825,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_pkey_dhkem_test" => [ + "include", + "apps/include" + ], "test/evp_pkey_dparams_test" => [ "include", "apps/include" @@ -18841,10 +21837,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_skey_test" => [ + "include", + "apps/include" + ], "test/evp_test" => [ "include", "apps/include" ], + "test/evp_xof_test" => [ + "include", + "apps/include" + ], "test/exdatatest" => [ "include", "apps/include" @@ -18945,22 +21949,62 @@ our %unified_info = ( ".", "include" ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/pkcs12.o" => [ ".", "include" ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + ".", + "include" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ ".", "include" ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/ssl_test-bin-handshake.o" => [ ".", "include" @@ -18994,6 +22038,10 @@ our %unified_info = ( ".", "include" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/hexstr_test" => [ ".", "include", @@ -19003,6 +22051,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/hpke_test" => [ + "include", + "apps/include" + ], "test/http_test" => [ "include", "apps/include" @@ -19015,6 +22067,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/json_test" => [ + "include", + "apps/include" + ], "test/keymgmt_internal_test" => [ ".", "include", @@ -19029,6 +22085,10 @@ our %unified_info = ( "apps/include", "." ], + "test/list_test" => [ + "include", + "apps/include" + ], "test/localetest" => [ "include", "apps/include" @@ -19042,10 +22102,27 @@ our %unified_info = ( "include", "apps/include" ], + "test/membio_test" => [ + "include", + "apps/include", + "." + ], "test/memleaktest" => [ "include", "apps/include" ], + "test/ml_dsa_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_evp_extra_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_internal_test" => [ + "include", + "apps/include" + ], "test/modes_internal_test" => [ ".", "include", @@ -19080,6 +22157,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pairwise_fail_test" => [ + "include", + "apps/include" + ], "test/param_build_test" => [ "include", "apps/include" @@ -19113,6 +22194,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pkcs12_api_test" => [ + "include", + "apps/include" + ], "test/pkcs12_format_test" => [ "include", "apps/include" @@ -19134,6 +22219,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/priority_queue_test" => [ + "include", + "apps/include" + ], "test/property_test" => [ ".", "include", @@ -19147,6 +22236,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/provider_default_search_path_test" => [ + "include", + "apps/include" + ], "test/provider_fallback_test" => [ "include", "apps/include" @@ -19173,6 +22266,97 @@ our %unified_info = ( "include", "apps/include" ], + "test/quic_ackm_test" => [ + "include", + "apps/include" + ], + "test/quic_cc_test" => [ + "include", + "apps/include" + ], + "test/quic_cfq_test" => [ + "include", + "apps/include" + ], + "test/quic_client_test" => [ + "include", + "apps/include" + ], + "test/quic_fc_test" => [ + "include", + "apps/include" + ], + "test/quic_fifd_test" => [ + "include", + "apps/include" + ], + "test/quic_lcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_multistream_test" => [ + "include", + "apps/include" + ], + "test/quic_newcid_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_qlog_test" => [ + "include", + "apps/include" + ], + "test/quic_radix_test" => [ + "include", + "apps/include" + ], + "test/quic_rcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_record_test" => [ + "include", + "apps/include" + ], + "test/quic_srt_gen_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_srtm_test" => [ + "include", + "apps/include" + ], + "test/quic_stream_test" => [ + "include", + "apps/include" + ], + "test/quic_tserver_test" => [ + "include", + "apps/include" + ], + "test/quic_txp_test" => [ + "include", + "apps/include" + ], + "test/quic_txpim_test" => [ + "include", + "apps/include" + ], + "test/quic_wire_test" => [ + "include", + "apps/include" + ], + "test/quicapitest" => [ + "include", + "apps/include" + ], + "test/quicfaultstest" => [ + "include", + "apps/include", + "." + ], "test/rand_status_test" => [ "include", "apps/include" @@ -19193,14 +22377,20 @@ our %unified_info = ( "include", "apps/include" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "include", - "apps/include" + "apps/include", + "crypto" ], "test/recordlentest" => [ "include", "apps/include" ], + "test/rpktest" => [ + "include", + "apps/include", + "." + ], "test/rsa_complex" => [ "include", "apps/include" @@ -19219,6 +22409,15 @@ our %unified_info = ( "include", "apps/include" ], + "test/rsa_x931_test" => [ + ".", + "include", + "apps/include" + ], + "test/safe_math_test" => [ + "include", + "apps/include" + ], "test/sanitytest" => [ "include", "apps/include" @@ -19240,6 +22439,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/slh_dsa_test" => [ + "include", + "apps/include" + ], "test/sm2_internal_test" => [ "include", "apps/include" @@ -19270,6 +22473,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/ssl_handshake_rtt_test" => [ + "include", + "apps/include", + "." + ], "test/ssl_old_test" => [ ".", "include", @@ -19286,6 +22494,7 @@ our %unified_info = ( "test/sslapitest" => [ "include", "apps/include", + "providers/common/include", "." ], "test/sslbuffertest" => [ @@ -19300,6 +22509,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/strtoultest" => [ + "include", + "apps/include" + ], "test/sysdefaulttest" => [ "include", "apps/include" @@ -19308,7 +22521,13 @@ our %unified_info = ( "include", "apps/include" ], + "test/threadpool_test" => [ + ".", + "include", + "apps/include" + ], "test/threadstest" => [ + ".", "include", "apps/include" ], @@ -19320,6 +22539,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/time_test" => [ + "include", + "apps/include" + ], "test/tls13ccstest" => [ "include", "apps/include" @@ -19329,6 +22552,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/tls13groupselection_test" => [ + "include", + "apps/include" + ], "test/trace_api_test" => [ ".", "include", @@ -19367,6 +22594,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_acert_test" => [ + "include", + "apps/include" + ], "test/x509_check_cert_pkey_test" => [ "include", "apps/include" @@ -19380,6 +22611,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_load_cert_file_test" => [ + "include", + "apps/include" + ], + "test/x509_req_test" => [ + "include", + "apps/include" + ], + "test/x509_test" => [ + "include", + "apps/include" + ], "test/x509_time_test" => [ "include", "apps/include" @@ -19401,6 +22644,7 @@ our %unified_info = ( "providers/libdefault.a", "providers/libfips.a", "providers/liblegacy.a", + "providers/libtemplate.a", "test/libtestutil.a" ], "mandocs" => { @@ -19453,6 +22697,7 @@ our %unified_info = ( "doc/man/man1/openssl-s_server.1", "doc/man/man1/openssl-s_time.1", "doc/man/man1/openssl-sess_id.1", + "doc/man/man1/openssl-skeyutl.1", "doc/man/man1/openssl-smime.1", "doc/man/man1/openssl-speed.1", "doc/man/man1/openssl-spkac.1", @@ -19502,6 +22747,7 @@ our %unified_info = ( "doc/man/man3/BIO_find_type.3", "doc/man/man3/BIO_get_data.3", "doc/man/man3/BIO_get_ex_new_index.3", + "doc/man/man3/BIO_get_rpoll_descriptor.3", "doc/man/man3/BIO_meth_new.3", "doc/man/man3/BIO_new.3", "doc/man/man3/BIO_new_CMS.3", @@ -19514,11 +22760,13 @@ our %unified_info = ( "doc/man/man3/BIO_s_connect.3", "doc/man/man3/BIO_s_core.3", "doc/man/man3/BIO_s_datagram.3", + "doc/man/man3/BIO_s_dgram_pair.3", "doc/man/man3/BIO_s_fd.3", "doc/man/man3/BIO_s_file.3", "doc/man/man3/BIO_s_mem.3", "doc/man/man3/BIO_s_null.3", "doc/man/man3/BIO_s_socket.3", + "doc/man/man3/BIO_sendmmsg.3", "doc/man/man3/BIO_set_callback.3", "doc/man/man3/BIO_should_retry.3", "doc/man/man3/BIO_socket_wait.3", @@ -19543,6 +22791,7 @@ our %unified_info = ( "doc/man/man3/BN_swap.3", "doc/man/man3/BN_zero.3", "doc/man/man3/BUF_MEM_new.3", + "doc/man/man3/CMAC_CTX.3", "doc/man/man3/CMS_EncryptedData_decrypt.3", "doc/man/man3/CMS_EncryptedData_encrypt.3", "doc/man/man3/CMS_EnvelopedData_create.3", @@ -19565,6 +22814,7 @@ our %unified_info = ( "doc/man/man3/CMS_uncompress.3", "doc/man/man3/CMS_verify.3", "doc/man/man3/CMS_verify_receipt.3", + "doc/man/man3/COMP_CTX_new.3", "doc/man/man3/CONF_modules_free.3", "doc/man/man3/CONF_modules_load_file.3", "doc/man/man3/CRYPTO_THREAD_run_once.3", @@ -19598,6 +22848,8 @@ our %unified_info = ( "doc/man/man3/DSA_size.3", "doc/man/man3/DTLS_get_data_mtu.3", "doc/man/man3/DTLS_set_timer_cb.3", + "doc/man/man3/DTLSv1_get_timeout.3", + "doc/man/man3/DTLSv1_handle_timeout.3", "doc/man/man3/DTLSv1_listen.3", "doc/man/man3/ECDSA_SIG_new.3", "doc/man/man3/ECDSA_sign.3", @@ -19644,6 +22896,7 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_ctrl.3", "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3", "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3", + "doc/man/man3/EVP_PKEY_CTX_get_algor.3", "doc/man/man3/EVP_PKEY_CTX_new.3", "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3", "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3", @@ -19683,6 +22936,8 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_verify_recover.3", "doc/man/man3/EVP_RAND.3", "doc/man/man3/EVP_SIGNATURE.3", + "doc/man/man3/EVP_SKEY.3", + "doc/man/man3/EVP_SKEYMGMT.3", "doc/man/man3/EVP_SealInit.3", "doc/man/man3/EVP_SignInit.3", "doc/man/man3/EVP_VerifyInit.3", @@ -19712,6 +22967,7 @@ our %unified_info = ( "doc/man/man3/EVP_sm3.3", "doc/man/man3/EVP_sm4_cbc.3", "doc/man/man3/EVP_whirlpool.3", + "doc/man/man3/GENERAL_NAME.3", "doc/man/man3/HMAC.3", "doc/man/man3/MD5.3", "doc/man/man3/MDC2_Init.3", @@ -19736,14 +22992,18 @@ our %unified_info = ( "doc/man/man3/OPENSSL_init_ssl.3", "doc/man/man3/OPENSSL_instrument_bus.3", "doc/man/man3/OPENSSL_load_builtin_modules.3", + "doc/man/man3/OPENSSL_load_u16_le.3", "doc/man/man3/OPENSSL_malloc.3", + "doc/man/man3/OPENSSL_riscvcap.3", "doc/man/man3/OPENSSL_s390xcap.3", "doc/man/man3/OPENSSL_secure_malloc.3", "doc/man/man3/OPENSSL_strcasecmp.3", "doc/man/man3/OSSL_ALGORITHM.3", "doc/man/man3/OSSL_CALLBACK.3", + "doc/man/man3/OSSL_CMP_ATAV_set0.3", "doc/man/man3/OSSL_CMP_CTX_new.3", "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3", + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3", "doc/man/man3/OSSL_CMP_ITAV_set0.3", "doc/man/man3/OSSL_CMP_MSG_get0_header.3", "doc/man/man3/OSSL_CMP_MSG_http_perform.3", @@ -19767,18 +23027,27 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_CTX.3", "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3", "doc/man/man3/OSSL_ENCODER_to_bio.3", + "doc/man/man3/OSSL_ERR_STATE_save.3", "doc/man/man3/OSSL_ESS_check_signing_certs.3", + "doc/man/man3/OSSL_GENERAL_NAMES_print.3", + "doc/man/man3/OSSL_HPKE_CTX_new.3", "doc/man/man3/OSSL_HTTP_REQ_CTX.3", "doc/man/man3/OSSL_HTTP_parse_url.3", "doc/man/man3/OSSL_HTTP_transfer.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3", + "doc/man/man3/OSSL_INDICATOR_set_callback.3", "doc/man/man3/OSSL_ITEM.3", "doc/man/man3/OSSL_LIB_CTX.3", + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3", "doc/man/man3/OSSL_PARAM.3", "doc/man/man3/OSSL_PARAM_BLD.3", "doc/man/man3/OSSL_PARAM_allocate_from_text.3", "doc/man/man3/OSSL_PARAM_dup.3", "doc/man/man3/OSSL_PARAM_int.3", + "doc/man/man3/OSSL_PARAM_print_to_bio.3", "doc/man/man3/OSSL_PROVIDER.3", + "doc/man/man3/OSSL_QUIC_client_method.3", "doc/man/man3/OSSL_SELF_TEST_new.3", "doc/man/man3/OSSL_SELF_TEST_set_callback.3", "doc/man/man3/OSSL_STORE_INFO.3", @@ -19787,11 +23056,13 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_attach.3", "doc/man/man3/OSSL_STORE_expect.3", "doc/man/man3/OSSL_STORE_open.3", + "doc/man/man3/OSSL_sleep.3", "doc/man/man3/OSSL_trace_enabled.3", "doc/man/man3/OSSL_trace_get_category_num.3", "doc/man/man3/OSSL_trace_set_channel.3", "doc/man/man3/OpenSSL_add_all_algorithms.3", "doc/man/man3/OpenSSL_version.3", + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3", "doc/man/man3/PEM_X509_INFO_read_bio_ex.3", "doc/man/man3/PEM_bytes_read_bio.3", "doc/man/man3/PEM_read.3", @@ -19804,6 +23075,7 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_create_cert.3", "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3", "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3", + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3", "doc/man/man3/PKCS12_add1_attr_by_NID.3", "doc/man/man3/PKCS12_add_CSPName_asc.3", "doc/man/man3/PKCS12_add_cert.3", @@ -19895,6 +23167,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_sess_set_get_cb.3", "doc/man/man3/SSL_CTX_sessions.3", "doc/man/man3/SSL_CTX_set0_CA_list.3", + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3", "doc/man/man3/SSL_CTX_set1_curves.3", "doc/man/man3/SSL_CTX_set1_sigalgs.3", "doc/man/man3/SSL_CTX_set1_verify_cert_store.3", @@ -19908,6 +23181,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_ct_validation_callback.3", "doc/man/man3/SSL_CTX_set_ctlog_list_file.3", "doc/man/man3/SSL_CTX_set_default_passwd_cb.3", + "doc/man/man3/SSL_CTX_set_domain_flags.3", "doc/man/man3/SSL_CTX_set_generate_session_id.3", "doc/man/man3/SSL_CTX_set_info_callback.3", "doc/man/man3/SSL_CTX_set_keylog_callback.3", @@ -19915,6 +23189,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_min_proto_version.3", "doc/man/man3/SSL_CTX_set_mode.3", "doc/man/man3/SSL_CTX_set_msg_callback.3", + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3", "doc/man/man3/SSL_CTX_set_num_tickets.3", "doc/man/man3/SSL_CTX_set_options.3", "doc/man/man3/SSL_CTX_set_psk_client_callback.3", @@ -19953,6 +23228,7 @@ our %unified_info = ( "doc/man/man3/SSL_SESSION_print.3", "doc/man/man3/SSL_SESSION_set1_id.3", "doc/man/man3/SSL_accept.3", + "doc/man/man3/SSL_accept_stream.3", "doc/man/man3/SSL_alert_type_string.3", "doc/man/man3/SSL_alloc_buffers.3", "doc/man/man3/SSL_check_chain.3", @@ -19962,59 +23238,90 @@ our %unified_info = ( "doc/man/man3/SSL_export_keying_material.3", "doc/man/man3/SSL_extension_supported.3", "doc/man/man3/SSL_free.3", + "doc/man/man3/SSL_get0_connection.3", + "doc/man/man3/SSL_get0_group_name.3", + "doc/man/man3/SSL_get0_peer_rpk.3", "doc/man/man3/SSL_get0_peer_scts.3", + "doc/man/man3/SSL_get1_builtin_sigalgs.3", "doc/man/man3/SSL_get_SSL_CTX.3", "doc/man/man3/SSL_get_all_async_fds.3", "doc/man/man3/SSL_get_certificate.3", "doc/man/man3/SSL_get_ciphers.3", "doc/man/man3/SSL_get_client_random.3", + "doc/man/man3/SSL_get_conn_close_info.3", "doc/man/man3/SSL_get_current_cipher.3", "doc/man/man3/SSL_get_default_timeout.3", "doc/man/man3/SSL_get_error.3", + "doc/man/man3/SSL_get_event_timeout.3", "doc/man/man3/SSL_get_extms_support.3", "doc/man/man3/SSL_get_fd.3", + "doc/man/man3/SSL_get_handshake_rtt.3", "doc/man/man3/SSL_get_peer_cert_chain.3", "doc/man/man3/SSL_get_peer_certificate.3", "doc/man/man3/SSL_get_peer_signature_nid.3", "doc/man/man3/SSL_get_peer_tmp_key.3", "doc/man/man3/SSL_get_psk_identity.3", "doc/man/man3/SSL_get_rbio.3", + "doc/man/man3/SSL_get_rpoll_descriptor.3", "doc/man/man3/SSL_get_session.3", "doc/man/man3/SSL_get_shared_sigalgs.3", + "doc/man/man3/SSL_get_stream_id.3", + "doc/man/man3/SSL_get_stream_read_state.3", + "doc/man/man3/SSL_get_value_uint.3", "doc/man/man3/SSL_get_verify_result.3", "doc/man/man3/SSL_get_version.3", "doc/man/man3/SSL_group_to_name.3", + "doc/man/man3/SSL_handle_events.3", "doc/man/man3/SSL_in_init.3", + "doc/man/man3/SSL_inject_net_dgram.3", "doc/man/man3/SSL_key_update.3", "doc/man/man3/SSL_library_init.3", "doc/man/man3/SSL_load_client_CA_file.3", "doc/man/man3/SSL_new.3", + "doc/man/man3/SSL_new_domain.3", + "doc/man/man3/SSL_new_listener.3", + "doc/man/man3/SSL_new_stream.3", "doc/man/man3/SSL_pending.3", + "doc/man/man3/SSL_poll.3", "doc/man/man3/SSL_read.3", "doc/man/man3/SSL_read_early_data.3", "doc/man/man3/SSL_rstate_string.3", "doc/man/man3/SSL_session_reused.3", "doc/man/man3/SSL_set1_host.3", + "doc/man/man3/SSL_set1_initial_peer_addr.3", + "doc/man/man3/SSL_set1_server_cert_type.3", "doc/man/man3/SSL_set_async_callback.3", "doc/man/man3/SSL_set_bio.3", + "doc/man/man3/SSL_set_blocking_mode.3", "doc/man/man3/SSL_set_connect_state.3", + "doc/man/man3/SSL_set_default_stream_mode.3", "doc/man/man3/SSL_set_fd.3", + "doc/man/man3/SSL_set_incoming_stream_policy.3", + "doc/man/man3/SSL_set_quic_tls_cbs.3", "doc/man/man3/SSL_set_retry_verify.3", "doc/man/man3/SSL_set_session.3", + "doc/man/man3/SSL_set_session_secret_cb.3", "doc/man/man3/SSL_set_shutdown.3", "doc/man/man3/SSL_set_verify_result.3", "doc/man/man3/SSL_shutdown.3", "doc/man/man3/SSL_state_string.3", + "doc/man/man3/SSL_stream_conclude.3", + "doc/man/man3/SSL_stream_reset.3", "doc/man/man3/SSL_want.3", "doc/man/man3/SSL_write.3", "doc/man/man3/TS_RESP_CTX_new.3", - "doc/man/man3/TS_VERIFY_CTX_set_certs.3", + "doc/man/man3/TS_VERIFY_CTX.3", "doc/man/man3/UI_STRING.3", "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", + "doc/man/man3/X509_ACERT_add1_attr.3", + "doc/man/man3/X509_ACERT_add_attr_nconf.3", + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3", + "doc/man/man3/X509_ACERT_get_attr.3", + "doc/man/man3/X509_ACERT_print_ex.3", "doc/man/man3/X509_ALGOR_dup.3", "doc/man/man3/X509_ATTRIBUTE.3", "doc/man/man3/X509_CRL_get0_by_serial.3", @@ -20031,6 +23338,7 @@ our %unified_info = ( "doc/man/man3/X509_REQ_get_attr.3", "doc/man/man3/X509_REQ_get_extensions.3", "doc/man/man3/X509_SIG_get0.3", + "doc/man/man3/X509_STORE_CTX_get_by_subject.3", "doc/man/man3/X509_STORE_CTX_get_error.3", "doc/man/man3/X509_STORE_CTX_new.3", "doc/man/man3/X509_STORE_CTX_set_verify_cb.3", @@ -20053,6 +23361,7 @@ our %unified_info = ( "doc/man/man3/X509_get0_notBefore.3", "doc/man/man3/X509_get0_signature.3", "doc/man/man3/X509_get0_uids.3", + "doc/man/man3/X509_get_default_cert_file.3", "doc/man/man3/X509_get_extension_flags.3", "doc/man/man3/X509_get_pubkey.3", "doc/man/man3/X509_get_serialNumber.3", @@ -20098,12 +23407,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-RC5.7", "doc/man/man7/EVP_CIPHER-SEED.7", "doc/man/man7/EVP_CIPHER-SM4.7", + "doc/man/man7/EVP_KDF-ARGON2.7", "doc/man/man7/EVP_KDF-HKDF.7", + "doc/man/man7/EVP_KDF-HMAC-DRBG.7", "doc/man/man7/EVP_KDF-KB.7", "doc/man/man7/EVP_KDF-KRB5KDF.7", "doc/man/man7/EVP_KDF-PBKDF1.7", "doc/man/man7/EVP_KDF-PBKDF2.7", "doc/man/man7/EVP_KDF-PKCS12KDF.7", + "doc/man/man7/EVP_KDF-PVKKDF.7", "doc/man/man7/EVP_KDF-SCRYPT.7", "doc/man/man7/EVP_KDF-SS.7", "doc/man/man7/EVP_KDF-SSHKDF.7", @@ -20112,7 +23424,10 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X942-ASN1.7", "doc/man/man7/EVP_KDF-X942-CONCAT.7", "doc/man/man7/EVP_KDF-X963.7", + "doc/man/man7/EVP_KEM-EC.7", + "doc/man/man7/EVP_KEM-ML-KEM.7", "doc/man/man7/EVP_KEM-RSA.7", + "doc/man/man7/EVP_KEM-X25519.7", "doc/man/man7/EVP_KEYEXCH-DH.7", "doc/man/man7/EVP_KEYEXCH-ECDH.7", "doc/man/man7/EVP_KEYEXCH-X25519.7", @@ -20124,6 +23439,7 @@ our %unified_info = ( "doc/man/man7/EVP_MAC-Poly1305.7", "doc/man/man7/EVP_MAC-Siphash.7", "doc/man/man7/EVP_MD-BLAKE2.7", + "doc/man/man7/EVP_MD-KECCAK.7", "doc/man/man7/EVP_MD-MD2.7", "doc/man/man7/EVP_MD-MD4.7", "doc/man/man7/EVP_MD-MD5-SHA1.7", @@ -20143,12 +23459,17 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-EC.7", "doc/man/man7/EVP_PKEY-FFC.7", "doc/man/man7/EVP_PKEY-HMAC.7", + "doc/man/man7/EVP_PKEY-ML-DSA.7", + "doc/man/man7/EVP_PKEY-ML-KEM.7", "doc/man/man7/EVP_PKEY-RSA.7", + "doc/man/man7/EVP_PKEY-SLH-DSA.7", "doc/man/man7/EVP_PKEY-SM2.7", "doc/man/man7/EVP_PKEY-X25519.7", + "doc/man/man7/EVP_RAND-CRNG-TEST.7", "doc/man/man7/EVP_RAND-CTR-DRBG.7", "doc/man/man7/EVP_RAND-HASH-DRBG.7", "doc/man/man7/EVP_RAND-HMAC-DRBG.7", + "doc/man/man7/EVP_RAND-JITTER.7", "doc/man/man7/EVP_RAND-SEED-SRC.7", "doc/man/man7/EVP_RAND-TEST-RAND.7", "doc/man/man7/EVP_RAND.7", @@ -20156,17 +23477,19 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-ECDSA.7", "doc/man/man7/EVP_SIGNATURE-ED25519.7", "doc/man/man7/EVP_SIGNATURE-HMAC.7", + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7", "doc/man/man7/EVP_SIGNATURE-RSA.7", + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7", "doc/man/man7/OSSL_PROVIDER-FIPS.7", "doc/man/man7/OSSL_PROVIDER-base.7", "doc/man/man7/OSSL_PROVIDER-default.7", "doc/man/man7/OSSL_PROVIDER-legacy.7", "doc/man/man7/OSSL_PROVIDER-null.7", + "doc/man/man7/OSSL_STORE-winstore.7", "doc/man/man7/RAND.7", "doc/man/man7/RSA-PSS.7", "doc/man/man7/X25519.7", "doc/man/man7/bio.7", - "doc/man/man7/crypto.7", "doc/man/man7/ct.7", "doc/man/man7/des_modes.7", "doc/man/man7/evp.7", @@ -20177,14 +23500,31 @@ our %unified_info = ( "doc/man/man7/life_cycle-mac.7", "doc/man/man7/life_cycle-pkey.7", "doc/man/man7/life_cycle-rand.7", - "doc/man/man7/migration_guide.7", "doc/man/man7/openssl-core.h.7", "doc/man/man7/openssl-core_dispatch.h.7", "doc/man/man7/openssl-core_names.h.7", "doc/man/man7/openssl-env.7", "doc/man/man7/openssl-glossary.7", + "doc/man/man7/openssl-qlog.7", + "doc/man/man7/openssl-quic-concurrency.7", + "doc/man/man7/openssl-quic.7", "doc/man/man7/openssl-threads.7", "doc/man/man7/openssl_user_macros.7", + "doc/man/man7/ossl-guide-introduction.7", + "doc/man/man7/ossl-guide-libcrypto-introduction.7", + "doc/man/man7/ossl-guide-libraries-introduction.7", + "doc/man/man7/ossl-guide-libssl-introduction.7", + "doc/man/man7/ossl-guide-migration.7", + "doc/man/man7/ossl-guide-quic-client-block.7", + "doc/man/man7/ossl-guide-quic-client-non-block.7", + "doc/man/man7/ossl-guide-quic-introduction.7", + "doc/man/man7/ossl-guide-quic-multi-stream.7", + "doc/man/man7/ossl-guide-quic-server-block.7", + "doc/man/man7/ossl-guide-quic-server-non-block.7", + "doc/man/man7/ossl-guide-tls-client-block.7", + "doc/man/man7/ossl-guide-tls-client-non-block.7", + "doc/man/man7/ossl-guide-tls-introduction.7", + "doc/man/man7/ossl-guide-tls-server-block.7", "doc/man/man7/ossl_store-file.7", "doc/man/man7/ossl_store.7", "doc/man/man7/passphrase-encoding.7", @@ -20203,10 +23543,10 @@ our %unified_info = ( "doc/man/man7/provider-object.7", "doc/man/man7/provider-rand.7", "doc/man/man7/provider-signature.7", + "doc/man/man7/provider-skeymgmt.7", "doc/man/man7/provider-storemgmt.7", "doc/man/man7/provider.7", "doc/man/man7/proxy-certificates.7", - "doc/man/man7/ssl.7", "doc/man/man7/x509.7" ] }, @@ -20218,6 +23558,7 @@ our %unified_info = ( ], "programs" => [ "apps/openssl", + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -20228,7 +23569,24 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test", "test/aborttest", "test/acvp_test", @@ -20246,21 +23604,28 @@ our %unified_info = ( "test/asynctest", "test/bad_dtls_test", "test/bftest", + "test/bio_addr_test", + "test/bio_base64_test", "test/bio_callback_test", "test/bio_core_test", + "test/bio_dgram_test", "test/bio_enc_test", "test/bio_memleak_test", + "test/bio_meth_test", "test/bio_prefix_text", "test/bio_pw_callback_test", "test/bio_readbuffer_test", + "test/bio_tfo_test", "test/bioprinttest", "test/bn_internal_test", "test/bntest", + "test/build_wincrypt_test", "test/buildtest_c_aes", "test/buildtest_c_async", "test/buildtest_c_blowfish", "test/buildtest_c_bn", "test/buildtest_c_buffer", + "test/buildtest_c_byteorder", "test/buildtest_c_camellia", "test/buildtest_c_cast", "test/buildtest_c_cmac", @@ -20269,7 +23634,6 @@ our %unified_info = ( "test/buildtest_c_conftypes", "test/buildtest_c_core", "test/buildtest_c_core_dispatch", - "test/buildtest_c_core_names", "test/buildtest_c_core_object", "test/buildtest_c_cryptoerr_legacy", "test/buildtest_c_decoder", @@ -20278,6 +23642,7 @@ our %unified_info = ( "test/buildtest_c_dsa", "test/buildtest_c_dtls1", "test/buildtest_c_e_os2", + "test/buildtest_c_e_ostime", "test/buildtest_c_ebcdic", "test/buildtest_c_ec", "test/buildtest_c_ecdh", @@ -20287,13 +23652,16 @@ our %unified_info = ( "test/buildtest_c_evp", "test/buildtest_c_fips_names", "test/buildtest_c_hmac", + "test/buildtest_c_hpke", "test/buildtest_c_http", "test/buildtest_c_idea", + "test/buildtest_c_indicator", "test/buildtest_c_kdf", "test/buildtest_c_macros", "test/buildtest_c_md4", "test/buildtest_c_md5", "test/buildtest_c_mdc2", + "test/buildtest_c_ml_kem", "test/buildtest_c_modes", "test/buildtest_c_obj_mac", "test/buildtest_c_objects", @@ -20304,6 +23672,7 @@ our %unified_info = ( "test/buildtest_c_pem2", "test/buildtest_c_prov_ssl", "test/buildtest_c_provider", + "test/buildtest_c_quic", "test/buildtest_c_rand", "test/buildtest_c_rc2", "test/buildtest_c_rc4", @@ -20318,11 +23687,14 @@ our %unified_info = ( "test/buildtest_c_stack", "test/buildtest_c_store", "test/buildtest_c_symhacks", + "test/buildtest_c_thread", "test/buildtest_c_tls1", "test/buildtest_c_ts", "test/buildtest_c_txt_db", "test/buildtest_c_types", "test/buildtest_c_whrlpool", + "test/byteorder_test", + "test/ca_internals_test", "test/casttest", "test/chacha_internal_test", "test/cipher_overhead_test", @@ -20351,6 +23723,7 @@ our %unified_info = ( "test/curve448_internal_test", "test/d2i_test", "test/danetest", + "test/decoder_propq_test", "test/defltfips_test", "test/destest", "test/dhtest", @@ -20375,9 +23748,12 @@ our %unified_info = ( "test/evp_kdf_test", "test/evp_libctx_test", "test/evp_pkey_ctx_new_from_name", + "test/evp_pkey_dhkem_test", "test/evp_pkey_dparams_test", "test/evp_pkey_provided_test", + "test/evp_skey_test", "test/evp_test", + "test/evp_xof_test", "test/exdatatest", "test/exptest", "test/ext_internal_test", @@ -20387,21 +23763,29 @@ our %unified_info = ( "test/gmdifftest", "test/hexstr_test", "test/hmactest", + "test/hpke_test", "test/http_test", "test/ideatest", "test/igetest", + "test/json_test", "test/keymgmt_internal_test", "test/lhash_test", + "test/list_test", "test/localetest", "test/mdc2_internal_test", "test/mdc2test", + "test/membio_test", "test/memleaktest", + "test/ml_dsa_test", + "test/ml_kem_evp_extra_test", + "test/ml_kem_internal_test", "test/modes_internal_test", "test/namemap_internal_test", "test/nodefltctxtest", "test/ocspapitest", "test/ossl_store_test", "test/packettest", + "test/pairwise_fail_test", "test/param_build_test", "test/params_api_test", "test/params_conversion_test", @@ -20410,36 +23794,65 @@ our %unified_info = ( "test/pbetest", "test/pem_read_depr_test", "test/pemtest", + "test/pkcs12_api_test", "test/pkcs12_format_test", "test/pkcs7_test", "test/pkey_meth_kdf_test", "test/pkey_meth_test", "test/poly1305_internal_test", + "test/priority_queue_test", "test/property_test", "test/prov_config_test", "test/provfetchtest", + "test/provider_default_search_path_test", "test/provider_fallback_test", "test/provider_internal_test", "test/provider_pkey_test", "test/provider_status_test", "test/provider_test", "test/punycode_test", + "test/quic_ackm_test", + "test/quic_cc_test", + "test/quic_cfq_test", + "test/quic_client_test", + "test/quic_fc_test", + "test/quic_fifd_test", + "test/quic_lcidm_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_qlog_test", + "test/quic_radix_test", + "test/quic_rcidm_test", + "test/quic_record_test", + "test/quic_srt_gen_test", + "test/quic_srtm_test", + "test/quic_stream_test", + "test/quic_tserver_test", + "test/quic_txp_test", + "test/quic_txpim_test", + "test/quic_wire_test", + "test/quicapitest", + "test/quicfaultstest", "test/rand_status_test", "test/rand_test", "test/rc2test", "test/rc4test", "test/rc5test", - "test/rdrand_sanitytest", + "test/rdcpu_sanitytest", "test/recordlentest", + "test/rpktest", "test/rsa_complex", "test/rsa_mp_test", "test/rsa_sp800_56b_test", "test/rsa_test", + "test/rsa_x931_test", + "test/safe_math_test", "test/sanitytest", "test/secmemtest", "test/servername_test", "test/sha_test", "test/siphash_internal_test", + "test/slh_dsa_test", "test/sm2_internal_test", "test/sm3_internal_test", "test/sm4_internal_test", @@ -20447,6 +23860,7 @@ our %unified_info = ( "test/srptest", "test/ssl_cert_table_internal_test", "test/ssl_ctx_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", @@ -20454,13 +23868,17 @@ our %unified_info = ( "test/sslbuffertest", "test/sslcorrupttest", "test/stack_test", + "test/strtoultest", "test/sysdefaulttest", "test/test_test", + "test/threadpool_test", "test/threadstest", "test/threadstest_fips", "test/time_offset_test", + "test/time_test", "test/tls13ccstest", "test/tls13encryptiontest", + "test/tls13groupselection_test", "test/trace_api_test", "test/uitest", "test/upcallstest", @@ -20470,9 +23888,13 @@ our %unified_info = ( "test/verify_extra_test", "test/versions", "test/wpackettest", + "test/x509_acert_test", "test/x509_check_cert_pkey_test", "test/x509_dup_cert_test", "test/x509_internal_test", + "test/x509_load_cert_file_test", + "test/x509_req_test", + "test/x509_test", "test/x509_time_test", "test/x509aux" ], @@ -20488,6 +23910,33 @@ our %unified_info = ( "apps/CA.pl" => [ "apps/CA.pl.in" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/ca.c" + ], + "apps/lib/ca_internals_test-bin-app_libctx.o" => [ + "apps/lib/app_libctx.c" + ], + "apps/lib/ca_internals_test-bin-app_provider.o" => [ + "apps/lib/app_provider.c" + ], + "apps/lib/ca_internals_test-bin-app_rand.o" => [ + "apps/lib/app_rand.c" + ], + "apps/lib/ca_internals_test-bin-app_x509.o" => [ + "apps/lib/app_x509.c" + ], + "apps/lib/ca_internals_test-bin-apps.o" => [ + "apps/lib/apps.c" + ], + "apps/lib/ca_internals_test-bin-apps_ui.o" => [ + "apps/lib/apps_ui.c" + ], + "apps/lib/ca_internals_test-bin-engine.o" => [ + "apps/lib/engine.c" + ], + "apps/lib/ca_internals_test-bin-fmt.o" => [ + "apps/lib/fmt.c" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/lib/cmp_mock_srv.c" ], @@ -20509,6 +23958,9 @@ our %unified_info = ( "apps/lib/libapps-lib-apps.o" => [ "apps/lib/apps.c" ], + "apps/lib/libapps-lib-apps_opt_printf.o" => [ + "apps/lib/apps_opt_printf.c" + ], "apps/lib/libapps-lib-apps_ui.o" => [ "apps/lib/apps_ui.c" ], @@ -20527,6 +23979,9 @@ our %unified_info = ( "apps/lib/libapps-lib-http_server.o" => [ "apps/lib/http_server.c" ], + "apps/lib/libapps-lib-log.o" => [ + "apps/lib/log.c" + ], "apps/lib/libapps-lib-names.o" => [ "apps/lib/names.c" ], @@ -20558,12 +24013,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -20617,6 +24074,7 @@ our %unified_info = ( "apps/openssl-bin-s_server.o", "apps/openssl-bin-s_time.o", "apps/openssl-bin-sess_id.o", + "apps/openssl-bin-skeyutl.o", "apps/openssl-bin-smime.o", "apps/openssl-bin-speed.o", "apps/openssl-bin-spkac.o", @@ -20762,6 +24220,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/sess_id.c" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/skeyutl.c" + ], "apps/openssl-bin-smime.o" => [ "apps/smime.c" ], @@ -20825,6 +24286,9 @@ our %unified_info = ( "crypto/aes/libcrypto-lib-aesni-x86_64.o" => [ "crypto/aes/aesni-x86_64.s" ], + "crypto/aes/libcrypto-lib-aesni-xts-avx512.o" => [ + "crypto/aes/aesni-xts-avx512.s" + ], "crypto/aes/libcrypto-lib-bsaes-x86_64.o" => [ "crypto/aes/bsaes-x86_64.s" ], @@ -20852,6 +24316,9 @@ our %unified_info = ( "crypto/aes/libfips-lib-aesni-x86_64.o" => [ "crypto/aes/aesni-x86_64.s" ], + "crypto/aes/libfips-lib-aesni-xts-avx512.o" => [ + "crypto/aes/aesni-xts-avx512.s" + ], "crypto/aes/libfips-lib-bsaes-x86_64.o" => [ "crypto/aes/bsaes-x86_64.s" ], @@ -20861,6 +24328,12 @@ our %unified_info = ( "crypto/aria/libcrypto-lib-aria.o" => [ "crypto/aria/aria.c" ], + "crypto/asn1/asn1_time_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], + "crypto/asn1/ca_internals_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], "crypto/asn1/libcrypto-lib-a_bitstr.o" => [ "crypto/asn1/a_bitstr.c" ], @@ -21053,6 +24526,9 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" => [ "crypto/asn1/x_val.c" ], + "crypto/asn1_time_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/async/arch/libcrypto-lib-async_null.o" => [ "crypto/async/arch/async_null.c" ], @@ -21146,6 +24622,9 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_dgram.o" => [ "crypto/bio/bss_dgram.c" ], + "crypto/bio/libcrypto-lib-bss_dgram_pair.o" => [ + "crypto/bio/bss_dgram_pair.c" + ], "crypto/bio/libcrypto-lib-bss_fd.o" => [ "crypto/bio/bss_fd.c" ], @@ -21269,12 +24748,27 @@ our %unified_info = ( "crypto/bn/libcrypto-lib-bn_x931p.o" => [ "crypto/bn/bn_x931p.c" ], + "crypto/bn/libcrypto-lib-rsaz-2k-avx512.o" => [ + "crypto/bn/rsaz-2k-avx512.s" + ], + "crypto/bn/libcrypto-lib-rsaz-2k-avxifma.o" => [ + "crypto/bn/rsaz-2k-avxifma.s" + ], + "crypto/bn/libcrypto-lib-rsaz-3k-avx512.o" => [ + "crypto/bn/rsaz-3k-avx512.s" + ], + "crypto/bn/libcrypto-lib-rsaz-3k-avxifma.o" => [ + "crypto/bn/rsaz-3k-avxifma.s" + ], + "crypto/bn/libcrypto-lib-rsaz-4k-avx512.o" => [ + "crypto/bn/rsaz-4k-avx512.s" + ], + "crypto/bn/libcrypto-lib-rsaz-4k-avxifma.o" => [ + "crypto/bn/rsaz-4k-avxifma.s" + ], "crypto/bn/libcrypto-lib-rsaz-avx2.o" => [ "crypto/bn/rsaz-avx2.s" ], - "crypto/bn/libcrypto-lib-rsaz-avx512.o" => [ - "crypto/bn/rsaz-avx512.s" - ], "crypto/bn/libcrypto-lib-rsaz-x86_64.o" => [ "crypto/bn/rsaz-x86_64.s" ], @@ -21374,12 +24868,27 @@ our %unified_info = ( "crypto/bn/libfips-lib-bn_word.o" => [ "crypto/bn/bn_word.c" ], + "crypto/bn/libfips-lib-rsaz-2k-avx512.o" => [ + "crypto/bn/rsaz-2k-avx512.s" + ], + "crypto/bn/libfips-lib-rsaz-2k-avxifma.o" => [ + "crypto/bn/rsaz-2k-avxifma.s" + ], + "crypto/bn/libfips-lib-rsaz-3k-avx512.o" => [ + "crypto/bn/rsaz-3k-avx512.s" + ], + "crypto/bn/libfips-lib-rsaz-3k-avxifma.o" => [ + "crypto/bn/rsaz-3k-avxifma.s" + ], + "crypto/bn/libfips-lib-rsaz-4k-avx512.o" => [ + "crypto/bn/rsaz-4k-avx512.s" + ], + "crypto/bn/libfips-lib-rsaz-4k-avxifma.o" => [ + "crypto/bn/rsaz-4k-avxifma.s" + ], "crypto/bn/libfips-lib-rsaz-avx2.o" => [ "crypto/bn/rsaz-avx2.s" ], - "crypto/bn/libfips-lib-rsaz-avx512.o" => [ - "crypto/bn/rsaz-avx512.s" - ], "crypto/bn/libfips-lib-rsaz-x86_64.o" => [ "crypto/bn/rsaz-x86_64.s" ], @@ -21407,6 +24916,9 @@ our %unified_info = ( "crypto/buffer/libfips-lib-buffer.o" => [ "crypto/buffer/buffer.c" ], + "crypto/ca_internals_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/camellia/libcrypto-lib-cmll-x86_64.o" => [ "crypto/camellia/cmll-x86_64.s" ], @@ -21461,6 +24973,9 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_err.o" => [ "crypto/cmp/cmp_err.c" ], + "crypto/cmp/libcrypto-lib-cmp_genm.o" => [ + "crypto/cmp/cmp_genm.c" + ], "crypto/cmp/libcrypto-lib-cmp_hdr.o" => [ "crypto/cmp/cmp_hdr.c" ], @@ -22154,9 +25669,15 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_blocks.o" => [ "crypto/err/err_blocks.c" ], + "crypto/err/libcrypto-lib-err_mark.o" => [ + "crypto/err/err_mark.c" + ], "crypto/err/libcrypto-lib-err_prn.o" => [ "crypto/err/err_prn.c" ], + "crypto/err/libcrypto-lib-err_save.o" => [ + "crypto/err/err_save.c" + ], "crypto/ess/libcrypto-lib-ess_asn1.o" => [ "crypto/ess/ess_asn1.c" ], @@ -22403,9 +25924,15 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libcrypto-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libcrypto-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libcrypto-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/evp/libfips-lib-asymcipher.o" => [ "crypto/evp/asymcipher.c" ], @@ -22451,9 +25978,6 @@ our %unified_info = ( "crypto/evp/libfips-lib-keymgmt_meth.o" => [ "crypto/evp/keymgmt_meth.c" ], - "crypto/evp/libfips-lib-m_sigver.o" => [ - "crypto/evp/m_sigver.c" - ], "crypto/evp/libfips-lib-mac_lib.o" => [ "crypto/evp/mac_lib.c" ], @@ -22472,9 +25996,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libfips-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libfips-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libfips-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/ffc/libcrypto-lib-ffc_backend.o" => [ "crypto/ffc/ffc_backend.c" ], @@ -22517,12 +26047,30 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params_validate.o" => [ "crypto/ffc/ffc_params_validate.c" ], + "crypto/hashtable/libcrypto-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libcrypto-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], + "crypto/hashtable/libfips-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libfips-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], "crypto/hmac/libcrypto-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], "crypto/hmac/libfips-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], + "crypto/hpke/libcrypto-lib-hpke.o" => [ + "crypto/hpke/hpke.c" + ], + "crypto/hpke/libcrypto-lib-hpke_util.o" => [ + "crypto/hpke/hpke_util.c" + ], "crypto/http/libcrypto-lib-http_client.o" => [ "crypto/http/http_client.c" ], @@ -22565,6 +26113,9 @@ our %unified_info = ( "crypto/libcrypto-lib-bsearch.o" => [ "crypto/bsearch.c" ], + "crypto/libcrypto-lib-comp_methods.o" => [ + "crypto/comp_methods.c" + ], "crypto/libcrypto-lib-context.o" => [ "crypto/context.c" ], @@ -22592,9 +26143,15 @@ our %unified_info = ( "crypto/libcrypto-lib-cversion.o" => [ "crypto/cversion.c" ], + "crypto/libcrypto-lib-defaults.o" => [ + "crypto/defaults.c" + ], "crypto/libcrypto-lib-der_writer.o" => [ "crypto/der_writer.c" ], + "crypto/libcrypto-lib-deterministic_nonce.o" => [ + "crypto/deterministic_nonce.c" + ], "crypto/libcrypto-lib-ebcdic.o" => [ "crypto/ebcdic.c" ], @@ -22604,6 +26161,9 @@ our %unified_info = ( "crypto/libcrypto-lib-getenv.o" => [ "crypto/getenv.c" ], + "crypto/libcrypto-lib-indicator_core.o" => [ + "crypto/indicator_core.c" + ], "crypto/libcrypto-lib-info.o" => [ "crypto/info.c" ], @@ -22652,6 +26212,9 @@ our %unified_info = ( "crypto/libcrypto-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libcrypto-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libcrypto-lib-passphrase.o" => [ "crypto/passphrase.c" ], @@ -22673,12 +26236,21 @@ our %unified_info = ( "crypto/libcrypto-lib-punycode.o" => [ "crypto/punycode.c" ], + "crypto/libcrypto-lib-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/libcrypto-lib-self_test_core.o" => [ "crypto/self_test_core.c" ], + "crypto/libcrypto-lib-sleep.o" => [ + "crypto/sleep.c" + ], "crypto/libcrypto-lib-sparse_array.o" => [ "crypto/sparse_array.c" ], + "crypto/libcrypto-lib-ssl_err.o" => [ + "crypto/ssl_err.c" + ], "crypto/libcrypto-lib-threads_lib.o" => [ "crypto/threads_lib.c" ], @@ -22691,6 +26263,9 @@ our %unified_info = ( "crypto/libcrypto-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libcrypto-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libcrypto-lib-trace.o" => [ "crypto/trace.c" ], @@ -22757,6 +26332,9 @@ our %unified_info = ( "crypto/libfips-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libfips-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libfips-lib-provider_core.o" => [ "crypto/provider_core.c" ], @@ -22781,6 +26359,9 @@ our %unified_info = ( "crypto/libfips-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libfips-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libfips-lib-x86_64cpuid.o" => [ "crypto/x86_64cpuid.s" ], @@ -22808,6 +26389,63 @@ our %unified_info = ( "crypto/mdc2/libcrypto-lib-mdc2dgst.o" => [ "crypto/mdc2/mdc2dgst.c" ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_kem/libcrypto-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], + "crypto/ml_kem/libfips-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], + "crypto/modes/libcrypto-lib-aes-gcm-avx512.o" => [ + "crypto/modes/aes-gcm-avx512.s" + ], "crypto/modes/libcrypto-lib-aesni-gcm-x86_64.o" => [ "crypto/modes/aesni-gcm-x86_64.s" ], @@ -22847,6 +26485,12 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libcrypto-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], + "crypto/modes/libfips-lib-aes-gcm-avx512.o" => [ + "crypto/modes/aes-gcm-avx512.s" + ], "crypto/modes/libfips-lib-aesni-gcm-x86_64.o" => [ "crypto/modes/aesni-gcm-x86_64.s" ], @@ -22877,6 +26521,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libfips-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/objects/libcrypto-lib-o_names.o" => [ "crypto/objects/o_names.c" ], @@ -22922,6 +26569,9 @@ our %unified_info = ( "crypto/ocsp/libcrypto-lib-v3_ocsp.o" => [ "crypto/ocsp/v3_ocsp.c" ], + "crypto/packettest-bin-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/pem/libcrypto-lib-pem_all.o" => [ "crypto/pem/pem_all.c" ], @@ -23084,6 +26734,9 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_pool.o" => [ "crypto/rand/rand_pool.c" ], + "crypto/rand/libcrypto-lib-rand_uniform.o" => [ + "crypto/rand/rand_uniform.c" + ], "crypto/rand/libcrypto-lib-randfile.o" => [ "crypto/rand/randfile.c" ], @@ -23327,6 +26980,66 @@ our %unified_info = ( "crypto/siphash/libcrypto-lib-siphash.o" => [ "crypto/siphash/siphash.c" ], + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], + "crypto/slh_dsa/libfips-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libfips-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libfips-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libfips-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libfips-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], "crypto/sm2/libcrypto-lib-sm2_crypt.o" => [ "crypto/sm2/sm2_crypt.c" ], @@ -23381,6 +27094,42 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_strings.o" => [ "crypto/store/store_strings.c" ], + "crypto/thread/arch/libcrypto-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/arch/libfips-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libfips-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libfips-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/libcrypto-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libcrypto-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libcrypto-lib-internal.o" => [ + "crypto/thread/internal.c" + ], + "crypto/thread/libfips-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libfips-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libfips-lib-internal.o" => [ + "crypto/thread/internal.c" + ], "crypto/ts/libcrypto-lib-ts_asn1.o" => [ "crypto/ts/ts_asn1.c" ], @@ -23465,6 +27214,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_tree.o" => [ "crypto/x509/pcy_tree.c" ], + "crypto/x509/libcrypto-lib-t_acert.o" => [ + "crypto/x509/t_acert.c" + ], "crypto/x509/libcrypto-lib-t_crl.o" => [ "crypto/x509/t_crl.c" ], @@ -23474,6 +27226,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-t_x509.o" => [ "crypto/x509/t_x509.c" ], + "crypto/x509/libcrypto-lib-v3_aaa.o" => [ + "crypto/x509/v3_aaa.c" + ], + "crypto/x509/libcrypto-lib-v3_ac_tgt.o" => [ + "crypto/x509/v3_ac_tgt.c" + ], "crypto/x509/libcrypto-lib-v3_addr.o" => [ "crypto/x509/v3_addr.c" ], @@ -23489,6 +27247,21 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_asid.o" => [ "crypto/x509/v3_asid.c" ], + "crypto/x509/libcrypto-lib-v3_attrdesc.o" => [ + "crypto/x509/v3_attrdesc.c" + ], + "crypto/x509/libcrypto-lib-v3_attrmap.o" => [ + "crypto/x509/v3_attrmap.c" + ], + "crypto/x509/libcrypto-lib-v3_audit_id.o" => [ + "crypto/x509/v3_audit_id.c" + ], + "crypto/x509/libcrypto-lib-v3_authattid.o" => [ + "crypto/x509/v3_authattid.c" + ], + "crypto/x509/libcrypto-lib-v3_battcons.o" => [ + "crypto/x509/v3_battcons.c" + ], "crypto/x509/libcrypto-lib-v3_bcons.o" => [ "crypto/x509/v3_bcons.c" ], @@ -23513,15 +27286,24 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_genn.o" => [ "crypto/x509/v3_genn.c" ], + "crypto/x509/libcrypto-lib-v3_group_ac.o" => [ + "crypto/x509/v3_group_ac.c" + ], "crypto/x509/libcrypto-lib-v3_ia5.o" => [ "crypto/x509/v3_ia5.c" ], + "crypto/x509/libcrypto-lib-v3_ind_iss.o" => [ + "crypto/x509/v3_ind_iss.c" + ], "crypto/x509/libcrypto-lib-v3_info.o" => [ "crypto/x509/v3_info.c" ], "crypto/x509/libcrypto-lib-v3_int.o" => [ "crypto/x509/v3_int.c" ], + "crypto/x509/libcrypto-lib-v3_iobo.o" => [ + "crypto/x509/v3_iobo.c" + ], "crypto/x509/libcrypto-lib-v3_ist.o" => [ "crypto/x509/v3_ist.c" ], @@ -23531,6 +27313,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_ncons.o" => [ "crypto/x509/v3_ncons.c" ], + "crypto/x509/libcrypto-lib-v3_no_ass.o" => [ + "crypto/x509/v3_no_ass.c" + ], + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o" => [ + "crypto/x509/v3_no_rev_avail.c" + ], "crypto/x509/libcrypto-lib-v3_pci.o" => [ "crypto/x509/v3_pci.c" ], @@ -23552,18 +27340,36 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_purp.o" => [ "crypto/x509/v3_purp.c" ], + "crypto/x509/libcrypto-lib-v3_rolespec.o" => [ + "crypto/x509/v3_rolespec.c" + ], "crypto/x509/libcrypto-lib-v3_san.o" => [ "crypto/x509/v3_san.c" ], + "crypto/x509/libcrypto-lib-v3_sda.o" => [ + "crypto/x509/v3_sda.c" + ], + "crypto/x509/libcrypto-lib-v3_single_use.o" => [ + "crypto/x509/v3_single_use.c" + ], "crypto/x509/libcrypto-lib-v3_skid.o" => [ "crypto/x509/v3_skid.c" ], + "crypto/x509/libcrypto-lib-v3_soa_id.o" => [ + "crypto/x509/v3_soa_id.c" + ], "crypto/x509/libcrypto-lib-v3_sxnet.o" => [ "crypto/x509/v3_sxnet.c" ], + "crypto/x509/libcrypto-lib-v3_timespec.o" => [ + "crypto/x509/v3_timespec.c" + ], "crypto/x509/libcrypto-lib-v3_tlsf.o" => [ "crypto/x509/v3_tlsf.c" ], + "crypto/x509/libcrypto-lib-v3_usernotice.o" => [ + "crypto/x509/v3_usernotice.c" + ], "crypto/x509/libcrypto-lib-v3_utf8.o" => [ "crypto/x509/v3_utf8.c" ], @@ -23573,6 +27379,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3err.o" => [ "crypto/x509/v3err.c" ], + "crypto/x509/libcrypto-lib-x509_acert.o" => [ + "crypto/x509/x509_acert.c" + ], "crypto/x509/libcrypto-lib-x509_att.o" => [ "crypto/x509/x509_att.c" ], @@ -23624,6 +27433,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_vpm.o" => [ "crypto/x509/x509_vpm.c" ], + "crypto/x509/libcrypto-lib-x509aset.o" => [ + "crypto/x509/x509aset.c" + ], "crypto/x509/libcrypto-lib-x509cset.o" => [ "crypto/x509/x509cset.c" ], @@ -23651,6 +27463,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_exten.o" => [ "crypto/x509/x_exten.c" ], + "crypto/x509/libcrypto-lib-x_ietfatt.o" => [ + "crypto/x509/x_ietfatt.c" + ], "crypto/x509/libcrypto-lib-x_name.o" => [ "crypto/x509/x_name.c" ], @@ -23678,6 +27493,16 @@ our %unified_info = ( "engines/libcrypto-lib-e_padlock.o" => [ "engines/e_padlock.c" ], + "fuzz/acert-test" => [ + "fuzz/acert-test-bin-acert.o", + "fuzz/acert-test-bin-test-corpus.o" + ], + "fuzz/acert-test-bin-acert.o" => [ + "fuzz/acert.c" + ], + "fuzz/acert-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/asn1-test" => [ "fuzz/asn1-test-bin-asn1.o", "fuzz/asn1-test-bin-fuzz_rand.o", @@ -23790,6 +27615,190 @@ our %unified_info = ( "fuzz/ct-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/decoder-test" => [ + "fuzz/decoder-test-bin-decoder.o", + "fuzz/decoder-test-bin-fuzz_rand.o", + "fuzz/decoder-test-bin-test-corpus.o" + ], + "fuzz/decoder-test-bin-decoder.o" => [ + "fuzz/decoder.c" + ], + "fuzz/decoder-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/decoder-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsclient-test" => [ + "fuzz/dtlsclient-test-bin-dtlsclient.o", + "fuzz/dtlsclient-test-bin-fuzz_rand.o", + "fuzz/dtlsclient-test-bin-test-corpus.o" + ], + "fuzz/dtlsclient-test-bin-dtlsclient.o" => [ + "fuzz/dtlsclient.c" + ], + "fuzz/dtlsclient-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsclient-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsserver-test" => [ + "fuzz/dtlsserver-test-bin-dtlsserver.o", + "fuzz/dtlsserver-test-bin-fuzz_rand.o", + "fuzz/dtlsserver-test-bin-test-corpus.o" + ], + "fuzz/dtlsserver-test-bin-dtlsserver.o" => [ + "fuzz/dtlsserver.c" + ], + "fuzz/dtlsserver-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsserver-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/hashtable-test" => [ + "fuzz/hashtable-test-bin-fuzz_rand.o", + "fuzz/hashtable-test-bin-hashtable.o", + "fuzz/hashtable-test-bin-test-corpus.o" + ], + "fuzz/hashtable-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/hashtable-test-bin-hashtable.o" => [ + "fuzz/hashtable.c" + ], + "fuzz/hashtable-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-dsa-test" => [ + "fuzz/ml-dsa-test-bin-fuzz_rand.o", + "fuzz/ml-dsa-test-bin-ml-dsa.o", + "fuzz/ml-dsa-test-bin-test-corpus.o" + ], + "fuzz/ml-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-dsa-test-bin-ml-dsa.o" => [ + "fuzz/ml-dsa.c" + ], + "fuzz/ml-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-kem-test" => [ + "fuzz/ml-kem-test-bin-fuzz_rand.o", + "fuzz/ml-kem-test-bin-ml-kem.o", + "fuzz/ml-kem-test-bin-test-corpus.o" + ], + "fuzz/ml-kem-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-kem-test-bin-ml-kem.o" => [ + "fuzz/ml-kem.c" + ], + "fuzz/ml-kem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/pem-test" => [ + "fuzz/pem-test-bin-pem.o", + "fuzz/pem-test-bin-test-corpus.o" + ], + "fuzz/pem-test-bin-pem.o" => [ + "fuzz/pem.c" + ], + "fuzz/pem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/provider-test" => [ + "fuzz/provider-test-bin-provider.o", + "fuzz/provider-test-bin-test-corpus.o" + ], + "fuzz/provider-test-bin-provider.o" => [ + "fuzz/provider.c" + ], + "fuzz/provider-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/punycode-test" => [ + "fuzz/punycode-test-bin-punycode.o", + "fuzz/punycode-test-bin-test-corpus.o" + ], + "fuzz/punycode-test-bin-punycode.o" => [ + "fuzz/punycode.c" + ], + "fuzz/punycode-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-client-test" => [ + "fuzz/quic-client-test-bin-fuzz_rand.o", + "fuzz/quic-client-test-bin-quic-client.o", + "fuzz/quic-client-test-bin-test-corpus.o" + ], + "fuzz/quic-client-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-client-test-bin-quic-client.o" => [ + "fuzz/quic-client.c" + ], + "fuzz/quic-client-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-lcidm-test" => [ + "fuzz/quic-lcidm-test-bin-fuzz_rand.o", + "fuzz/quic-lcidm-test-bin-quic-lcidm.o", + "fuzz/quic-lcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-lcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-lcidm-test-bin-quic-lcidm.o" => [ + "fuzz/quic-lcidm.c" + ], + "fuzz/quic-lcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-rcidm-test" => [ + "fuzz/quic-rcidm-test-bin-fuzz_rand.o", + "fuzz/quic-rcidm-test-bin-quic-rcidm.o", + "fuzz/quic-rcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-rcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-rcidm-test-bin-quic-rcidm.o" => [ + "fuzz/quic-rcidm.c" + ], + "fuzz/quic-rcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-server-test" => [ + "fuzz/quic-server-test-bin-fuzz_rand.o", + "fuzz/quic-server-test-bin-quic-server.o", + "fuzz/quic-server-test-bin-test-corpus.o" + ], + "fuzz/quic-server-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-server-test-bin-quic-server.o" => [ + "fuzz/quic-server.c" + ], + "fuzz/quic-server-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-srtm-test" => [ + "fuzz/quic-srtm-test-bin-fuzz_rand.o", + "fuzz/quic-srtm-test-bin-quic-srtm.o", + "fuzz/quic-srtm-test-bin-test-corpus.o" + ], + "fuzz/quic-srtm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-srtm-test-bin-quic-srtm.o" => [ + "fuzz/quic-srtm.c" + ], + "fuzz/quic-srtm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/server-test" => [ "fuzz/server-test-bin-fuzz_rand.o", "fuzz/server-test-bin-server.o", @@ -23804,6 +27813,40 @@ our %unified_info = ( "fuzz/server-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/slh-dsa-test" => [ + "fuzz/slh-dsa-test-bin-fuzz_rand.o", + "fuzz/slh-dsa-test-bin-slh-dsa.o", + "fuzz/slh-dsa-test-bin-test-corpus.o" + ], + "fuzz/slh-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/slh-dsa-test-bin-slh-dsa.o" => [ + "fuzz/slh-dsa.c" + ], + "fuzz/slh-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/smime-test" => [ + "fuzz/smime-test-bin-smime.o", + "fuzz/smime-test-bin-test-corpus.o" + ], + "fuzz/smime-test-bin-smime.o" => [ + "fuzz/smime.c" + ], + "fuzz/smime-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test" => [ + "fuzz/v3name-test-bin-test-corpus.o", + "fuzz/v3name-test-bin-v3name.o" + ], + "fuzz/v3name-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test-bin-v3name.o" => [ + "fuzz/v3name.c" + ], "fuzz/x509-test" => [ "fuzz/x509-test-bin-fuzz_rand.o", "fuzz/x509-test-bin-test-corpus.o", @@ -23830,6 +27873,7 @@ our %unified_info = ( "crypto/aes/libcrypto-lib-aesni-sha1-x86_64.o", "crypto/aes/libcrypto-lib-aesni-sha256-x86_64.o", "crypto/aes/libcrypto-lib-aesni-x86_64.o", + "crypto/aes/libcrypto-lib-aesni-xts-avx512.o", "crypto/aes/libcrypto-lib-bsaes-x86_64.o", "crypto/aes/libcrypto-lib-vpaes-x86_64.o", "crypto/aria/libcrypto-lib-aria.o", @@ -23928,6 +27972,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -23968,8 +28013,13 @@ our %unified_info = ( "crypto/bn/libcrypto-lib-bn_srp.o", "crypto/bn/libcrypto-lib-bn_word.o", "crypto/bn/libcrypto-lib-bn_x931p.o", + "crypto/bn/libcrypto-lib-rsaz-2k-avx512.o", + "crypto/bn/libcrypto-lib-rsaz-2k-avxifma.o", + "crypto/bn/libcrypto-lib-rsaz-3k-avx512.o", + "crypto/bn/libcrypto-lib-rsaz-3k-avxifma.o", + "crypto/bn/libcrypto-lib-rsaz-4k-avx512.o", + "crypto/bn/libcrypto-lib-rsaz-4k-avxifma.o", "crypto/bn/libcrypto-lib-rsaz-avx2.o", - "crypto/bn/libcrypto-lib-rsaz-avx512.o", "crypto/bn/libcrypto-lib-rsaz-x86_64.o", "crypto/bn/libcrypto-lib-rsaz_exp.o", "crypto/bn/libcrypto-lib-rsaz_exp_x2.o", @@ -23995,6 +28045,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -24173,7 +28224,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", + "crypto/err/libcrypto-lib-err_mark.o", "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o", "crypto/ess/libcrypto-lib-ess_asn1.o", "crypto/ess/libcrypto-lib-ess_err.o", "crypto/ess/libcrypto-lib-ess_lib.o", @@ -24256,7 +28309,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/ffc/libcrypto-lib-ffc_backend.o", "crypto/ffc/libcrypto-lib-ffc_dh.o", "crypto/ffc/libcrypto-lib-ffc_key_generate.o", @@ -24264,7 +28319,11 @@ our %unified_info = ( "crypto/ffc/libcrypto-lib-ffc_params.o", "crypto/ffc/libcrypto-lib-ffc_params_generate.o", "crypto/ffc/libcrypto-lib-ffc_params_validate.o", + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", "crypto/hmac/libcrypto-lib-hmac.o", + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o", "crypto/http/libcrypto-lib-http_client.o", "crypto/http/libcrypto-lib-http_err.o", "crypto/http/libcrypto-lib-http_lib.o", @@ -24278,6 +28337,7 @@ our %unified_info = ( "crypto/lhash/libcrypto-lib-lhash.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -24287,10 +28347,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -24307,6 +28370,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -24314,12 +28378,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libcrypto-lib-x86_64cpuid.o", @@ -24331,6 +28399,16 @@ our %unified_info = ( "crypto/md5/libcrypto-lib-md5_sha1.o", "crypto/mdc2/libcrypto-lib-mdc2_one.o", "crypto/mdc2/libcrypto-lib-mdc2dgst.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_kem/libcrypto-lib-ml_kem.o", + "crypto/modes/libcrypto-lib-aes-gcm-avx512.o", "crypto/modes/libcrypto-lib-aesni-gcm-x86_64.o", "crypto/modes/libcrypto-lib-cbc128.o", "crypto/modes/libcrypto-lib-ccm128.o", @@ -24344,6 +28422,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/objects/libcrypto-lib-o_names.o", "crypto/objects/libcrypto-lib-obj_dat.o", "crypto/objects/libcrypto-lib-obj_err.o", @@ -24408,6 +28487,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rc2/libcrypto-lib-rc2_cbc.o", "crypto/rc2/libcrypto-lib-rc2_ecb.o", @@ -24461,6 +28541,16 @@ our %unified_info = ( "crypto/sha/libcrypto-lib-sha512-x86_64.o", "crypto/sha/libcrypto-lib-sha512.o", "crypto/siphash/libcrypto-lib-siphash.o", + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", "crypto/sm2/libcrypto-lib-sm2_crypt.o", "crypto/sm2/libcrypto-lib-sm2_err.o", "crypto/sm2/libcrypto-lib-sm2_key.o", @@ -24478,6 +28568,12 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_register.o", "crypto/store/libcrypto-lib-store_result.o", "crypto/store/libcrypto-lib-store_strings.o", + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", "crypto/ts/libcrypto-lib-ts_asn1.o", "crypto/ts/libcrypto-lib-ts_conf.o", "crypto/ts/libcrypto-lib-ts_err.o", @@ -24506,14 +28602,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -24522,12 +28626,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -24535,13 +28644,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -24559,6 +28675,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -24568,6 +28685,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -24590,14 +28708,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -24614,12 +28733,60 @@ our %unified_info = ( "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", "ssl/libssl-lib-tls_srp.o", - "ssl/record/libssl-lib-dtls1_bitmap.o", + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o", "ssl/record/libssl-lib-rec_layer_d1.o", "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o", "ssl/statem/libssl-lib-extensions.o", "ssl/statem/libssl-lib-extensions_clnt.o", "ssl/statem/libssl-lib-extensions_cust.o", @@ -24657,12 +28824,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/der/der_ecx_key.c" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/der/der_ml_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/der/der_ml_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/der/der_rsa_gen.c" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/der/der_rsa_key.c" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/der/der_slh_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/der/der_slh_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/der/der_wrap_gen.c" ], @@ -24729,6 +28908,9 @@ our %unified_info = ( "providers/common/libfips-lib-securitycheck_fips.o" => [ "providers/common/securitycheck_fips.c" ], + "providers/endecode_test-bin-legacyprov.o" => [ + "providers/legacyprov.c" + ], "providers/evp_extra_test-bin-legacyprov.o" => [ "providers/legacyprov.c" ], @@ -24739,6 +28921,9 @@ our %unified_info = ( "providers/fips/fips-dso-fips_entry.o" => [ "providers/fips/fips_entry.c" ], + "providers/fips/libfips-lib-fipsindicator.o" => [ + "providers/fips/fipsindicator.c" + ], "providers/fips/libfips-lib-fipsprov.o" => [ "providers/fips/fipsprov.c" ], @@ -24802,6 +28987,15 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o" => [ "providers/implementations/ciphers/cipher_aes_gcm_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o" => [ "providers/implementations/ciphers/cipher_aes_hw.c" ], @@ -24874,9 +29068,27 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o" => [ "providers/implementations/ciphers/cipher_sm4.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o" => [ "providers/implementations/ciphers/cipher_sm4_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o" => [ "providers/implementations/ciphers/cipher_tdes.c" ], @@ -25096,6 +29308,15 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" => [ "providers/implementations/encode_decode/endecoder_common.c" ], + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o" => [ + "providers/implementations/encode_decode/ml_common_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o" => [ + "providers/implementations/encode_decode/ml_dsa_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" => [ + "providers/implementations/encode_decode/ml_kem_codecs.c" + ], "providers/implementations/exchange/libdefault-lib-dh_exch.o" => [ "providers/implementations/exchange/dh_exch.c" ], @@ -25120,9 +29341,15 @@ our %unified_info = ( "providers/implementations/exchange/libfips-lib-kdf_exch.o" => [ "providers/implementations/exchange/kdf_exch.c" ], + "providers/implementations/kdfs/libdefault-lib-argon2.o" => [ + "providers/implementations/kdfs/argon2.c" + ], "providers/implementations/kdfs/libdefault-lib-hkdf.o" => [ "providers/implementations/kdfs/hkdf.c" ], + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o" => [ + "providers/implementations/kdfs/hmacdrbg_kdf.c" + ], "providers/implementations/kdfs/libdefault-lib-kbkdf.o" => [ "providers/implementations/kdfs/kbkdf.c" ], @@ -25180,12 +29407,39 @@ our %unified_info = ( "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" => [ "providers/implementations/kdfs/pbkdf1.c" ], + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" => [ + "providers/implementations/kdfs/pvkkdf.c" + ], + "providers/implementations/kem/libdefault-lib-ec_kem.o" => [ + "providers/implementations/kem/ec_kem.c" + ], + "providers/implementations/kem/libdefault-lib-ecx_kem.o" => [ + "providers/implementations/kem/ecx_kem.c" + ], + "providers/implementations/kem/libdefault-lib-kem_util.o" => [ + "providers/implementations/kem/kem_util.c" + ], + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libdefault-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libdefault-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libfips-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libfips-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libfips-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libtemplate-lib-template_kem.o" => [ + "providers/implementations/kem/template_kem.c" + ], "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25204,9 +29458,21 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25225,9 +29491,24 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" => [ + "providers/implementations/keymgmt/template_kmgmt.c" + ], "providers/implementations/macs/libdefault-lib-blake2b_mac.o" => [ "providers/implementations/macs/blake2b_mac.c" ], @@ -25264,9 +29545,6 @@ our %unified_info = ( "providers/implementations/macs/libfips-lib-kmac_prov.o" => [ "providers/implementations/macs/kmac_prov.c" ], - "providers/implementations/rands/libdefault-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libdefault-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25282,12 +29560,12 @@ our %unified_info = ( "providers/implementations/rands/libdefault-lib-seed_src.o" => [ "providers/implementations/rands/seed_src.c" ], + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o" => [ + "providers/implementations/rands/seed_src_jitter.c" + ], "providers/implementations/rands/libdefault-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], - "providers/implementations/rands/libfips-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libfips-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25300,6 +29578,9 @@ our %unified_info = ( "providers/implementations/rands/libfips-lib-drbg_hmac.o" => [ "providers/implementations/rands/drbg_hmac.c" ], + "providers/implementations/rands/libfips-lib-fips_crng_test.o" => [ + "providers/implementations/rands/fips_crng_test.c" + ], "providers/implementations/rands/libfips-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], @@ -25327,9 +29608,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/implementations/signature/sm2_sig.c" ], @@ -25345,9 +29632,27 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libfips-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], "providers/implementations/storemgmt/libdefault-lib-file_store.o" => [ "providers/implementations/storemgmt/file_store.c" ], @@ -25371,8 +29676,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/libcommon-lib-provider_ctx.o", "providers/common/libcommon-lib-provider_err.o", @@ -25384,7 +29693,7 @@ our %unified_info = ( "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", "providers/implementations/digests/libcommon-lib-digestcommon.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/methods/libcommon-lib-tls_pad.o" ], "providers/libcrypto-lib-baseprov.o" => [ "providers/baseprov.c" @@ -25420,6 +29729,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -25444,7 +29756,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -25473,11 +29791,16 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o", "providers/implementations/exchange/libdefault-lib-dh_exch.o", "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", "providers/implementations/exchange/libdefault-lib-ecx_exch.o", "providers/implementations/exchange/libdefault-lib-kdf_exch.o", + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -25488,6 +29811,11 @@ our %unified_info = ( "providers/implementations/kdfs/libdefault-lib-sskdf.o", "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", "providers/implementations/kdfs/libdefault-lib-x942kdf.o", + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", @@ -25495,7 +29823,11 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libdefault-lib-blake2b_mac.o", "providers/implementations/macs/libdefault-lib-blake2s_mac.o", "providers/implementations/macs/libdefault-lib-cmac_prov.o", @@ -25504,12 +29836,12 @@ our %unified_info = ( "providers/implementations/macs/libdefault-lib-kmac_prov.o", "providers/implementations/macs/libdefault-lib-poly1305_prov.o", "providers/implementations/macs/libdefault-lib-siphash_prov.o", - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", @@ -25519,11 +29851,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", "providers/implementations/storemgmt/libdefault-lib-file_store.o", "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", - "ssl/libdefault-lib-s3_cbc.o" + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" ], "providers/libfips.a" => [ "crypto/aes/libfips-lib-aes-x86_64.o", @@ -25533,6 +29869,7 @@ our %unified_info = ( "crypto/aes/libfips-lib-aesni-sha1-x86_64.o", "crypto/aes/libfips-lib-aesni-sha256-x86_64.o", "crypto/aes/libfips-lib-aesni-x86_64.o", + "crypto/aes/libfips-lib-aesni-xts-avx512.o", "crypto/aes/libfips-lib-bsaes-x86_64.o", "crypto/aes/libfips-lib-vpaes-x86_64.o", "crypto/bn/asm/libfips-lib-x86_64-gcc.o", @@ -25563,8 +29900,13 @@ our %unified_info = ( "crypto/bn/libfips-lib-bn_sqr.o", "crypto/bn/libfips-lib-bn_sqrt.o", "crypto/bn/libfips-lib-bn_word.o", + "crypto/bn/libfips-lib-rsaz-2k-avx512.o", + "crypto/bn/libfips-lib-rsaz-2k-avxifma.o", + "crypto/bn/libfips-lib-rsaz-3k-avx512.o", + "crypto/bn/libfips-lib-rsaz-3k-avxifma.o", + "crypto/bn/libfips-lib-rsaz-4k-avx512.o", + "crypto/bn/libfips-lib-rsaz-4k-avxifma.o", "crypto/bn/libfips-lib-rsaz-avx2.o", - "crypto/bn/libfips-lib-rsaz-avx512.o", "crypto/bn/libfips-lib-rsaz-x86_64.o", "crypto/bn/libfips-lib-rsaz_exp.o", "crypto/bn/libfips-lib-rsaz_exp_x2.o", @@ -25641,14 +29983,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", + "crypto/evp/libfips-lib-s_lib.o", "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o", "crypto/ffc/libfips-lib-ffc_backend.o", "crypto/ffc/libfips-lib-ffc_dh.o", "crypto/ffc/libfips-lib-ffc_key_generate.o", @@ -25656,6 +29999,8 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params.o", "crypto/ffc/libfips-lib-ffc_params_generate.o", "crypto/ffc/libfips-lib-ffc_params_validate.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o", "crypto/hmac/libfips-lib-hmac.o", "crypto/lhash/libfips-lib-lhash.o", "crypto/libfips-lib-asn1_dsa.o", @@ -25677,6 +30022,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -25685,7 +30031,18 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", "crypto/libfips-lib-x86_64cpuid.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o", + "crypto/ml_kem/libfips-lib-ml_kem.o", + "crypto/modes/libfips-lib-aes-gcm-avx512.o", "crypto/modes/libfips-lib-aesni-gcm-x86_64.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", @@ -25696,6 +30053,7 @@ our %unified_info = ( "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o", "crypto/property/libfips-lib-defn_cache.o", "crypto/property/libfips-lib-property.o", "crypto/property/libfips-lib-property_parse.o", @@ -25729,7 +30087,23 @@ our %unified_info = ( "crypto/sha/libfips-lib-sha3.o", "crypto/sha/libfips-lib-sha512-x86_64.o", "crypto/sha/libfips-lib-sha512.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o", "crypto/stack/libfips-lib-stack.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o", "providers/common/der/libfips-lib-der_rsa_sig.o", "providers/common/libfips-lib-bio_prov.o", "providers/common/libfips-lib-capabilities.o", @@ -25738,6 +30112,7 @@ our %unified_info = ( "providers/common/libfips-lib-provider_util.o", "providers/common/libfips-lib-securitycheck.o", "providers/common/libfips-lib-securitycheck_fips.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o", @@ -25775,6 +30150,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", "providers/implementations/kem/libfips-lib-rsa_kem.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", @@ -25782,24 +30159,32 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libfips-lib-cmac_prov.o", "providers/implementations/macs/libfips-lib-gmac_prov.o", "providers/implementations/macs/libfips-lib-hmac_prov.o", "providers/implementations/macs/libfips-lib-kmac_prov.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o", "providers/libcommon.a", - "ssl/libfips-lib-s3_cbc.o" + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "providers/liblegacy-lib-prov_running.o" => [ "providers/prov_running.c" @@ -25829,13 +30214,12 @@ our %unified_info = ( "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", "providers/implementations/digests/liblegacy-lib-wp_prov.o", "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o", "providers/liblegacy-lib-prov_running.o" ], - "ssl/libdefault-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" - ], - "ssl/libfips-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" + "providers/libtemplate.a" => [ + "providers/implementations/kem/libtemplate-lib-template_kem.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "ssl/libssl-lib-bio_ssl.o" => [ "ssl/bio_ssl.c" @@ -25855,6 +30239,9 @@ our %unified_info = ( "ssl/libssl-lib-pqueue.o" => [ "ssl/pqueue.c" ], + "ssl/libssl-lib-priority_queue.o" => [ + "ssl/priority_queue.c" + ], "ssl/libssl-lib-s3_enc.o" => [ "ssl/s3_enc.c" ], @@ -25870,15 +30257,15 @@ our %unified_info = ( "ssl/libssl-lib-ssl_cert.o" => [ "ssl/ssl_cert.c" ], + "ssl/libssl-lib-ssl_cert_comp.o" => [ + "ssl/ssl_cert_comp.c" + ], "ssl/libssl-lib-ssl_ciph.o" => [ "ssl/ssl_ciph.c" ], "ssl/libssl-lib-ssl_conf.o" => [ "ssl/ssl_conf.c" ], - "ssl/libssl-lib-ssl_err.o" => [ - "ssl/ssl_err.c" - ], "ssl/libssl-lib-ssl_err_legacy.o" => [ "ssl/ssl_err_legacy.c" ], @@ -25927,11 +30314,131 @@ our %unified_info = ( "ssl/libssl-lib-tls_srp.o" => [ "ssl/tls_srp.c" ], - "ssl/record/libcommon-lib-tls_pad.o" => [ - "ssl/record/tls_pad.c" + "ssl/quic/libssl-lib-cc_newreno.o" => [ + "ssl/quic/cc_newreno.c" + ], + "ssl/quic/libssl-lib-json_enc.o" => [ + "ssl/quic/json_enc.c" + ], + "ssl/quic/libssl-lib-qlog.o" => [ + "ssl/quic/qlog.c" + ], + "ssl/quic/libssl-lib-qlog_event_helpers.o" => [ + "ssl/quic/qlog_event_helpers.c" + ], + "ssl/quic/libssl-lib-quic_ackm.o" => [ + "ssl/quic/quic_ackm.c" + ], + "ssl/quic/libssl-lib-quic_cfq.o" => [ + "ssl/quic/quic_cfq.c" + ], + "ssl/quic/libssl-lib-quic_channel.o" => [ + "ssl/quic/quic_channel.c" + ], + "ssl/quic/libssl-lib-quic_demux.o" => [ + "ssl/quic/quic_demux.c" + ], + "ssl/quic/libssl-lib-quic_engine.o" => [ + "ssl/quic/quic_engine.c" + ], + "ssl/quic/libssl-lib-quic_fc.o" => [ + "ssl/quic/quic_fc.c" + ], + "ssl/quic/libssl-lib-quic_fifd.o" => [ + "ssl/quic/quic_fifd.c" + ], + "ssl/quic/libssl-lib-quic_impl.o" => [ + "ssl/quic/quic_impl.c" + ], + "ssl/quic/libssl-lib-quic_lcidm.o" => [ + "ssl/quic/quic_lcidm.c" + ], + "ssl/quic/libssl-lib-quic_method.o" => [ + "ssl/quic/quic_method.c" + ], + "ssl/quic/libssl-lib-quic_obj.o" => [ + "ssl/quic/quic_obj.c" + ], + "ssl/quic/libssl-lib-quic_port.o" => [ + "ssl/quic/quic_port.c" + ], + "ssl/quic/libssl-lib-quic_rcidm.o" => [ + "ssl/quic/quic_rcidm.c" + ], + "ssl/quic/libssl-lib-quic_reactor.o" => [ + "ssl/quic/quic_reactor.c" + ], + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o" => [ + "ssl/quic/quic_reactor_wait_ctx.c" + ], + "ssl/quic/libssl-lib-quic_record_rx.o" => [ + "ssl/quic/quic_record_rx.c" + ], + "ssl/quic/libssl-lib-quic_record_shared.o" => [ + "ssl/quic/quic_record_shared.c" + ], + "ssl/quic/libssl-lib-quic_record_tx.o" => [ + "ssl/quic/quic_record_tx.c" + ], + "ssl/quic/libssl-lib-quic_record_util.o" => [ + "ssl/quic/quic_record_util.c" + ], + "ssl/quic/libssl-lib-quic_rstream.o" => [ + "ssl/quic/quic_rstream.c" ], - "ssl/record/libssl-lib-dtls1_bitmap.o" => [ - "ssl/record/dtls1_bitmap.c" + "ssl/quic/libssl-lib-quic_rx_depack.o" => [ + "ssl/quic/quic_rx_depack.c" + ], + "ssl/quic/libssl-lib-quic_sf_list.o" => [ + "ssl/quic/quic_sf_list.c" + ], + "ssl/quic/libssl-lib-quic_srt_gen.o" => [ + "ssl/quic/quic_srt_gen.c" + ], + "ssl/quic/libssl-lib-quic_srtm.o" => [ + "ssl/quic/quic_srtm.c" + ], + "ssl/quic/libssl-lib-quic_sstream.o" => [ + "ssl/quic/quic_sstream.c" + ], + "ssl/quic/libssl-lib-quic_statm.o" => [ + "ssl/quic/quic_statm.c" + ], + "ssl/quic/libssl-lib-quic_stream_map.o" => [ + "ssl/quic/quic_stream_map.c" + ], + "ssl/quic/libssl-lib-quic_thread_assist.o" => [ + "ssl/quic/quic_thread_assist.c" + ], + "ssl/quic/libssl-lib-quic_tls.o" => [ + "ssl/quic/quic_tls.c" + ], + "ssl/quic/libssl-lib-quic_tls_api.o" => [ + "ssl/quic/quic_tls_api.c" + ], + "ssl/quic/libssl-lib-quic_trace.o" => [ + "ssl/quic/quic_trace.c" + ], + "ssl/quic/libssl-lib-quic_tserver.o" => [ + "ssl/quic/quic_tserver.c" + ], + "ssl/quic/libssl-lib-quic_txp.o" => [ + "ssl/quic/quic_txp.c" + ], + "ssl/quic/libssl-lib-quic_txpim.o" => [ + "ssl/quic/quic_txpim.c" + ], + "ssl/quic/libssl-lib-quic_types.o" => [ + "ssl/quic/quic_types.c" + ], + "ssl/quic/libssl-lib-quic_wire.o" => [ + "ssl/quic/quic_wire.c" + ], + "ssl/quic/libssl-lib-quic_wire_pkt.o" => [ + "ssl/quic/quic_wire_pkt.c" + ], + "ssl/quic/libssl-lib-uint_set.o" => [ + "ssl/quic/uint_set.c" ], "ssl/record/libssl-lib-rec_layer_d1.o" => [ "ssl/record/rec_layer_d1.c" @@ -25939,14 +30446,44 @@ our %unified_info = ( "ssl/record/libssl-lib-rec_layer_s3.o" => [ "ssl/record/rec_layer_s3.c" ], - "ssl/record/libssl-lib-ssl3_buffer.o" => [ - "ssl/record/ssl3_buffer.c" + "ssl/record/methods/libcommon-lib-tls_pad.o" => [ + "ssl/record/methods/tls_pad.c" + ], + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libfips-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libssl-lib-dtls_meth.o" => [ + "ssl/record/methods/dtls_meth.c" + ], + "ssl/record/methods/libssl-lib-ssl3_meth.o" => [ + "ssl/record/methods/ssl3_meth.c" + ], + "ssl/record/methods/libssl-lib-tls13_meth.o" => [ + "ssl/record/methods/tls13_meth.c" + ], + "ssl/record/methods/libssl-lib-tls1_meth.o" => [ + "ssl/record/methods/tls1_meth.c" + ], + "ssl/record/methods/libssl-lib-tls_common.o" => [ + "ssl/record/methods/tls_common.c" ], - "ssl/record/libssl-lib-ssl3_record.o" => [ - "ssl/record/ssl3_record.c" + "ssl/record/methods/libssl-lib-tls_multib.o" => [ + "ssl/record/methods/tls_multib.c" ], - "ssl/record/libssl-lib-ssl3_record_tls13.o" => [ - "ssl/record/ssl3_record_tls13.c" + "ssl/record/methods/libssl-lib-tlsany_meth.o" => [ + "ssl/record/methods/tlsany_meth.c" + ], + "ssl/rio/libssl-lib-poll_builder.o" => [ + "ssl/rio/poll_builder.c" + ], + "ssl/rio/libssl-lib-poll_immediate.o" => [ + "ssl/rio/poll_immediate.c" + ], + "ssl/rio/libssl-lib-rio_notifier.o" => [ + "ssl/rio/rio_notifier.c" ], "ssl/statem/libssl-lib-extensions.o" => [ "ssl/statem/extensions.c" @@ -26042,6 +30579,8 @@ our %unified_info = ( "test/asn1_string_table_test.c" ], "test/asn1_time_test" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1_time_test-bin-ctype.o", "test/asn1_time_test-bin-asn1_time_test.o" ], "test/asn1_time_test-bin-asn1_time_test.o" => [ @@ -26072,6 +30611,18 @@ our %unified_info = ( "test/bftest-bin-bftest.o" => [ "test/bftest.c" ], + "test/bio_addr_test" => [ + "test/bio_addr_test-bin-bio_addr_test.o" + ], + "test/bio_addr_test-bin-bio_addr_test.o" => [ + "test/bio_addr_test.c" + ], + "test/bio_base64_test" => [ + "test/bio_base64_test-bin-bio_base64_test.o" + ], + "test/bio_base64_test-bin-bio_base64_test.o" => [ + "test/bio_base64_test.c" + ], "test/bio_callback_test" => [ "test/bio_callback_test-bin-bio_callback_test.o" ], @@ -26084,6 +30635,12 @@ our %unified_info = ( "test/bio_core_test-bin-bio_core_test.o" => [ "test/bio_core_test.c" ], + "test/bio_dgram_test" => [ + "test/bio_dgram_test-bin-bio_dgram_test.o" + ], + "test/bio_dgram_test-bin-bio_dgram_test.o" => [ + "test/bio_dgram_test.c" + ], "test/bio_enc_test" => [ "test/bio_enc_test-bin-bio_enc_test.o" ], @@ -26096,6 +30653,12 @@ our %unified_info = ( "test/bio_memleak_test-bin-bio_memleak_test.o" => [ "test/bio_memleak_test.c" ], + "test/bio_meth_test" => [ + "test/bio_meth_test-bin-bio_meth_test.o" + ], + "test/bio_meth_test-bin-bio_meth_test.o" => [ + "test/bio_meth_test.c" + ], "test/bio_prefix_text" => [ "test/bio_prefix_text-bin-bio_prefix_text.o" ], @@ -26114,6 +30677,12 @@ our %unified_info = ( "test/bio_readbuffer_test-bin-bio_readbuffer_test.o" => [ "test/bio_readbuffer_test.c" ], + "test/bio_tfo_test" => [ + "test/bio_tfo_test-bin-bio_tfo_test.o" + ], + "test/bio_tfo_test-bin-bio_tfo_test.o" => [ + "test/bio_tfo_test.c" + ], "test/bioprinttest" => [ "test/bioprinttest-bin-bioprinttest.o" ], @@ -26132,6 +30701,12 @@ our %unified_info = ( "test/bntest-bin-bntest.o" => [ "test/bntest.c" ], + "test/build_wincrypt_test" => [ + "test/build_wincrypt_test-bin-build_wincrypt_test.o" + ], + "test/build_wincrypt_test-bin-build_wincrypt_test.o" => [ + "test/build_wincrypt_test.c" + ], "test/buildtest_c_aes" => [ "test/buildtest_c_aes-bin-buildtest_aes.o" ], @@ -26162,6 +30737,12 @@ our %unified_info = ( "test/buildtest_c_buffer-bin-buildtest_buffer.o" => [ "test/buildtest_buffer.c" ], + "test/buildtest_c_byteorder" => [ + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" + ], + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" => [ + "test/buildtest_byteorder.c" + ], "test/buildtest_c_camellia" => [ "test/buildtest_c_camellia-bin-buildtest_camellia.o" ], @@ -26210,12 +30791,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch-bin-buildtest_core_dispatch.o" => [ "test/buildtest_core_dispatch.c" ], - "test/buildtest_c_core_names" => [ - "test/buildtest_c_core_names-bin-buildtest_core_names.o" - ], - "test/buildtest_c_core_names-bin-buildtest_core_names.o" => [ - "test/buildtest_core_names.c" - ], "test/buildtest_c_core_object" => [ "test/buildtest_c_core_object-bin-buildtest_core_object.o" ], @@ -26264,6 +30839,12 @@ our %unified_info = ( "test/buildtest_c_e_os2-bin-buildtest_e_os2.o" => [ "test/buildtest_e_os2.c" ], + "test/buildtest_c_e_ostime" => [ + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" + ], + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" => [ + "test/buildtest_e_ostime.c" + ], "test/buildtest_c_ebcdic" => [ "test/buildtest_c_ebcdic-bin-buildtest_ebcdic.o" ], @@ -26318,6 +30899,12 @@ our %unified_info = ( "test/buildtest_c_hmac-bin-buildtest_hmac.o" => [ "test/buildtest_hmac.c" ], + "test/buildtest_c_hpke" => [ + "test/buildtest_c_hpke-bin-buildtest_hpke.o" + ], + "test/buildtest_c_hpke-bin-buildtest_hpke.o" => [ + "test/buildtest_hpke.c" + ], "test/buildtest_c_http" => [ "test/buildtest_c_http-bin-buildtest_http.o" ], @@ -26330,6 +30917,12 @@ our %unified_info = ( "test/buildtest_c_idea-bin-buildtest_idea.o" => [ "test/buildtest_idea.c" ], + "test/buildtest_c_indicator" => [ + "test/buildtest_c_indicator-bin-buildtest_indicator.o" + ], + "test/buildtest_c_indicator-bin-buildtest_indicator.o" => [ + "test/buildtest_indicator.c" + ], "test/buildtest_c_kdf" => [ "test/buildtest_c_kdf-bin-buildtest_kdf.o" ], @@ -26360,6 +30953,12 @@ our %unified_info = ( "test/buildtest_c_mdc2-bin-buildtest_mdc2.o" => [ "test/buildtest_mdc2.c" ], + "test/buildtest_c_ml_kem" => [ + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" + ], + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" => [ + "test/buildtest_ml_kem.c" + ], "test/buildtest_c_modes" => [ "test/buildtest_c_modes-bin-buildtest_modes.o" ], @@ -26420,6 +31019,12 @@ our %unified_info = ( "test/buildtest_c_provider-bin-buildtest_provider.o" => [ "test/buildtest_provider.c" ], + "test/buildtest_c_quic" => [ + "test/buildtest_c_quic-bin-buildtest_quic.o" + ], + "test/buildtest_c_quic-bin-buildtest_quic.o" => [ + "test/buildtest_quic.c" + ], "test/buildtest_c_rand" => [ "test/buildtest_c_rand-bin-buildtest_rand.o" ], @@ -26504,6 +31109,12 @@ our %unified_info = ( "test/buildtest_c_symhacks-bin-buildtest_symhacks.o" => [ "test/buildtest_symhacks.c" ], + "test/buildtest_c_thread" => [ + "test/buildtest_c_thread-bin-buildtest_thread.o" + ], + "test/buildtest_c_thread-bin-buildtest_thread.o" => [ + "test/buildtest_thread.c" + ], "test/buildtest_c_tls1" => [ "test/buildtest_c_tls1-bin-buildtest_tls1.o" ], @@ -26534,6 +31145,29 @@ our %unified_info = ( "test/buildtest_c_whrlpool-bin-buildtest_whrlpool.o" => [ "test/buildtest_whrlpool.c" ], + "test/byteorder_test" => [ + "test/byteorder_test-bin-byteorder_test.o" + ], + "test/byteorder_test-bin-byteorder_test.o" => [ + "test/byteorder_test.c" + ], + "test/ca_internals_test" => [ + "apps/ca_internals_test-bin-ca.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", + "crypto/ca_internals_test-bin-ctype.o", + "test/ca_internals_test-bin-ca_internals_test.o" + ], + "test/ca_internals_test-bin-ca_internals_test.o" => [ + "test/ca_internals_test.c" + ], "test/casttest" => [ "test/casttest-bin-casttest.o" ], @@ -26712,6 +31346,12 @@ our %unified_info = ( "test/danetest-bin-danetest.o" => [ "test/danetest.c" ], + "test/decoder_propq_test" => [ + "test/decoder_propq_test-bin-decoder_propq_test.o" + ], + "test/decoder_propq_test-bin-decoder_propq_test.o" => [ + "test/decoder_propq_test.c" + ], "test/defltfips_test" => [ "test/defltfips_test-bin-defltfips_test.o" ], @@ -26793,6 +31433,7 @@ our %unified_info = ( "test/ectest.c" ], "test/endecode_test" => [ + "providers/endecode_test-bin-legacyprov.o", "test/endecode_test-bin-endecode_test.o", "test/helpers/endecode_test-bin-predefined_dhparams.o" ], @@ -26825,17 +31466,29 @@ our %unified_info = ( ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", - "test/evp_extra_test-bin-evp_extra_test.o" + "test/evp_extra_test-bin-evp_extra_test.o", + "test/evp_extra_test-bin-fake_pipelineprov.o", + "test/evp_extra_test-bin-fake_rsaprov.o" ], "test/evp_extra_test-bin-evp_extra_test.o" => [ "test/evp_extra_test.c" ], + "test/evp_extra_test-bin-fake_pipelineprov.o" => [ + "test/fake_pipelineprov.c" + ], + "test/evp_extra_test-bin-fake_rsaprov.o" => [ + "test/fake_rsaprov.c" + ], "test/evp_extra_test2" => [ - "test/evp_extra_test2-bin-evp_extra_test2.o" + "test/evp_extra_test2-bin-evp_extra_test2.o", + "test/evp_extra_test2-bin-tls-provider.o" ], "test/evp_extra_test2-bin-evp_extra_test2.o" => [ "test/evp_extra_test2.c" ], + "test/evp_extra_test2-bin-tls-provider.o" => [ + "test/tls-provider.c" + ], "test/evp_fetch_prov_test" => [ "test/evp_fetch_prov_test-bin-evp_fetch_prov_test.o" ], @@ -26860,6 +31513,12 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name-bin-evp_pkey_ctx_new_from_name.o" => [ "test/evp_pkey_ctx_new_from_name.c" ], + "test/evp_pkey_dhkem_test" => [ + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" + ], + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" => [ + "test/evp_pkey_dhkem_test.c" + ], "test/evp_pkey_dparams_test" => [ "test/evp_pkey_dparams_test-bin-evp_pkey_dparams_test.o" ], @@ -26872,12 +31531,28 @@ our %unified_info = ( "test/evp_pkey_provided_test-bin-evp_pkey_provided_test.o" => [ "test/evp_pkey_provided_test.c" ], + "test/evp_skey_test" => [ + "test/evp_skey_test-bin-evp_skey_test.o", + "test/evp_skey_test-bin-fake_cipherprov.o" + ], + "test/evp_skey_test-bin-evp_skey_test.o" => [ + "test/evp_skey_test.c" + ], + "test/evp_skey_test-bin-fake_cipherprov.o" => [ + "test/fake_cipherprov.c" + ], "test/evp_test" => [ "test/evp_test-bin-evp_test.o" ], "test/evp_test-bin-evp_test.o" => [ "test/evp_test.c" ], + "test/evp_xof_test" => [ + "test/evp_xof_test-bin-evp_xof_test.o" + ], + "test/evp_xof_test-bin-evp_xof_test.o" => [ + "test/evp_xof_test.c" + ], "test/exdatatest" => [ "test/exdatatest-bin-exdatatest.o" ], @@ -26963,15 +31638,108 @@ our %unified_info = ( "test/helpers/fatalerrtest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/json_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/json_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/json_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + "test/helpers/pkcs12.c" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ "test/helpers/pkcs12.c" ], + "test/helpers/quic_multistream_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_multistream_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_multistream_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_newcid_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_newcid_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_newcid_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_radix_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_radix_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_radix_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_srt_gen_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicapitest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicapitest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicapitest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicfaultstest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicfaultstest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicfaultstest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/ssl_old_test-bin-predefined_dhparams.o" => [ "test/helpers/predefined_dhparams.c" ], @@ -26999,6 +31767,9 @@ our %unified_info = ( "test/helpers/tls13ccstest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/hexstr_test" => [ "test/hexstr_test-bin-hexstr_test.o" ], @@ -27011,6 +31782,12 @@ our %unified_info = ( "test/hmactest-bin-hmactest.o" => [ "test/hmactest.c" ], + "test/hpke_test" => [ + "test/hpke_test-bin-hpke_test.o" + ], + "test/hpke_test-bin-hpke_test.o" => [ + "test/hpke_test.c" + ], "test/http_test" => [ "test/http_test-bin-http_test.o" ], @@ -27029,6 +31806,16 @@ our %unified_info = ( "test/igetest-bin-igetest.o" => [ "test/igetest.c" ], + "test/json_test" => [ + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/json_test-bin-json_test.o" + ], + "test/json_test-bin-json_test.o" => [ + "test/json_test.c" + ], "test/keymgmt_internal_test" => [ "test/keymgmt_internal_test-bin-keymgmt_internal_test.o" ], @@ -27049,6 +31836,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -27061,6 +31849,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-tests.o", "test/testutil/libtestutil-lib-testutil_init.o" ], + "test/list_test" => [ + "test/list_test-bin-list_test.o" + ], + "test/list_test-bin-list_test.o" => [ + "test/list_test.c" + ], "test/localetest" => [ "test/localetest-bin-localetest.o" ], @@ -27079,12 +31873,36 @@ our %unified_info = ( "test/mdc2test-bin-mdc2test.o" => [ "test/mdc2test.c" ], + "test/membio_test" => [ + "test/membio_test-bin-membio_test.o" + ], + "test/membio_test-bin-membio_test.o" => [ + "test/membio_test.c" + ], "test/memleaktest" => [ "test/memleaktest-bin-memleaktest.o" ], "test/memleaktest-bin-memleaktest.o" => [ "test/memleaktest.c" ], + "test/ml_dsa_test" => [ + "test/ml_dsa_test-bin-ml_dsa_test.o" + ], + "test/ml_dsa_test-bin-ml_dsa_test.o" => [ + "test/ml_dsa_test.c" + ], + "test/ml_kem_evp_extra_test" => [ + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" + ], + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" => [ + "test/ml_kem_evp_extra_test.c" + ], + "test/ml_kem_internal_test" => [ + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" + ], + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" => [ + "test/ml_kem_internal_test.c" + ], "test/modes_internal_test" => [ "test/modes_internal_test-bin-modes_internal_test.o" ], @@ -27130,11 +31948,18 @@ our %unified_info = ( "test/p_test.c" ], "test/packettest" => [ + "crypto/packettest-bin-quic_vlint.o", "test/packettest-bin-packettest.o" ], "test/packettest-bin-packettest.o" => [ "test/packettest.c" ], + "test/pairwise_fail_test" => [ + "test/pairwise_fail_test-bin-pairwise_fail_test.o" + ], + "test/pairwise_fail_test-bin-pairwise_fail_test.o" => [ + "test/pairwise_fail_test.c" + ], "test/param_build_test" => [ "test/param_build_test-bin-param_build_test.o" ], @@ -27183,6 +32008,13 @@ our %unified_info = ( "test/pemtest-bin-pemtest.o" => [ "test/pemtest.c" ], + "test/pkcs12_api_test" => [ + "test/helpers/pkcs12_api_test-bin-pkcs12.o", + "test/pkcs12_api_test-bin-pkcs12_api_test.o" + ], + "test/pkcs12_api_test-bin-pkcs12_api_test.o" => [ + "test/pkcs12_api_test.c" + ], "test/pkcs12_format_test" => [ "test/helpers/pkcs12_format_test-bin-pkcs12.o", "test/pkcs12_format_test-bin-pkcs12_format_test.o" @@ -27214,6 +32046,12 @@ our %unified_info = ( "test/poly1305_internal_test-bin-poly1305_internal_test.o" => [ "test/poly1305_internal_test.c" ], + "test/priority_queue_test" => [ + "test/priority_queue_test-bin-priority_queue_test.o" + ], + "test/priority_queue_test-bin-priority_queue_test.o" => [ + "test/priority_queue_test.c" + ], "test/property_test" => [ "test/property_test-bin-property_test.o" ], @@ -27232,6 +32070,12 @@ our %unified_info = ( "test/provfetchtest-bin-provfetchtest.o" => [ "test/provfetchtest.c" ], + "test/provider_default_search_path_test" => [ + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" + ], + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" => [ + "test/provider_default_search_path_test.c" + ], "test/provider_fallback_test" => [ "test/provider_fallback_test-bin-provider_fallback_test.o" ], @@ -27280,6 +32124,174 @@ our %unified_info = ( "test/punycode_test-bin-punycode_test.o" => [ "test/punycode_test.c" ], + "test/quic_ackm_test" => [ + "test/quic_ackm_test-bin-cc_dummy.o", + "test/quic_ackm_test-bin-quic_ackm_test.o" + ], + "test/quic_ackm_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_ackm_test-bin-quic_ackm_test.o" => [ + "test/quic_ackm_test.c" + ], + "test/quic_cc_test" => [ + "test/quic_cc_test-bin-quic_cc_test.o" + ], + "test/quic_cc_test-bin-quic_cc_test.o" => [ + "test/quic_cc_test.c" + ], + "test/quic_cfq_test" => [ + "test/quic_cfq_test-bin-quic_cfq_test.o" + ], + "test/quic_cfq_test-bin-quic_cfq_test.o" => [ + "test/quic_cfq_test.c" + ], + "test/quic_client_test" => [ + "test/quic_client_test-bin-quic_client_test.o" + ], + "test/quic_client_test-bin-quic_client_test.o" => [ + "test/quic_client_test.c" + ], + "test/quic_fc_test" => [ + "test/quic_fc_test-bin-quic_fc_test.o" + ], + "test/quic_fc_test-bin-quic_fc_test.o" => [ + "test/quic_fc_test.c" + ], + "test/quic_fifd_test" => [ + "test/quic_fifd_test-bin-cc_dummy.o", + "test/quic_fifd_test-bin-quic_fifd_test.o" + ], + "test/quic_fifd_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_fifd_test-bin-quic_fifd_test.o" => [ + "test/quic_fifd_test.c" + ], + "test/quic_lcidm_test" => [ + "test/quic_lcidm_test-bin-quic_lcidm_test.o" + ], + "test/quic_lcidm_test-bin-quic_lcidm_test.o" => [ + "test/quic_lcidm_test.c" + ], + "test/quic_multistream_test" => [ + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/quic_multistream_test-bin-quic_multistream_test.o" + ], + "test/quic_multistream_test-bin-quic_multistream_test.o" => [ + "test/quic_multistream_test.c" + ], + "test/quic_newcid_test" => [ + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/quic_newcid_test-bin-quic_newcid_test.o" + ], + "test/quic_newcid_test-bin-quic_newcid_test.o" => [ + "test/quic_newcid_test.c" + ], + "test/quic_qlog_test" => [ + "test/quic_qlog_test-bin-quic_qlog_test.o" + ], + "test/quic_qlog_test-bin-quic_qlog_test.o" => [ + "test/quic_qlog_test.c" + ], + "test/quic_radix_test" => [ + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "test/quic_rcidm_test" => [ + "test/quic_rcidm_test-bin-quic_rcidm_test.o" + ], + "test/quic_rcidm_test-bin-quic_rcidm_test.o" => [ + "test/quic_rcidm_test.c" + ], + "test/quic_record_test" => [ + "test/quic_record_test-bin-quic_record_test.o" + ], + "test/quic_record_test-bin-quic_record_test.o" => [ + "test/quic_record_test.c" + ], + "test/quic_srt_gen_test" => [ + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" + ], + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" => [ + "test/quic_srt_gen_test.c" + ], + "test/quic_srtm_test" => [ + "test/quic_srtm_test-bin-quic_srtm_test.o" + ], + "test/quic_srtm_test-bin-quic_srtm_test.o" => [ + "test/quic_srtm_test.c" + ], + "test/quic_stream_test" => [ + "test/quic_stream_test-bin-quic_stream_test.o" + ], + "test/quic_stream_test-bin-quic_stream_test.o" => [ + "test/quic_stream_test.c" + ], + "test/quic_tserver_test" => [ + "test/quic_tserver_test-bin-quic_tserver_test.o" + ], + "test/quic_tserver_test-bin-quic_tserver_test.o" => [ + "test/quic_tserver_test.c" + ], + "test/quic_txp_test" => [ + "test/quic_txp_test-bin-cc_dummy.o", + "test/quic_txp_test-bin-quic_txp_test.o" + ], + "test/quic_txp_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_txp_test-bin-quic_txp_test.o" => [ + "test/quic_txp_test.c" + ], + "test/quic_txpim_test" => [ + "test/quic_txpim_test-bin-quic_txpim_test.o" + ], + "test/quic_txpim_test-bin-quic_txpim_test.o" => [ + "test/quic_txpim_test.c" + ], + "test/quic_wire_test" => [ + "test/quic_wire_test-bin-quic_wire_test.o" + ], + "test/quic_wire_test-bin-quic_wire_test.o" => [ + "test/quic_wire_test.c" + ], + "test/quicapitest" => [ + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/quicapitest-bin-quicapitest.o" + ], + "test/quicapitest-bin-quicapitest.o" => [ + "test/quicapitest.c" + ], + "test/quicfaultstest" => [ + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", + "test/quicfaultstest-bin-quicfaultstest.o" + ], + "test/quicfaultstest-bin-quicfaultstest.o" => [ + "test/quicfaultstest.c" + ], + "test/radix/quic_radix_test-bin-quic_radix.o" => [ + "test/radix/quic_radix.c" + ], "test/rand_status_test" => [ "test/rand_status_test-bin-rand_status_test.o" ], @@ -27310,11 +32322,11 @@ our %unified_info = ( "test/rc5test-bin-rc5test.o" => [ "test/rc5test.c" ], - "test/rdrand_sanitytest" => [ - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" + "test/rdcpu_sanitytest" => [ + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" ], - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" => [ - "test/rdrand_sanitytest.c" + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" => [ + "test/rdcpu_sanitytest.c" ], "test/recordlentest" => [ "test/helpers/recordlentest-bin-ssltestlib.o", @@ -27323,6 +32335,13 @@ our %unified_info = ( "test/recordlentest-bin-recordlentest.o" => [ "test/recordlentest.c" ], + "test/rpktest" => [ + "test/helpers/rpktest-bin-ssltestlib.o", + "test/rpktest-bin-rpktest.o" + ], + "test/rpktest-bin-rpktest.o" => [ + "test/rpktest.c" + ], "test/rsa_complex" => [ "test/rsa_complex-bin-rsa_complex.o" ], @@ -27347,6 +32366,18 @@ our %unified_info = ( "test/rsa_test-bin-rsa_test.o" => [ "test/rsa_test.c" ], + "test/rsa_x931_test" => [ + "test/rsa_x931_test-bin-rsa_x931_test.o" + ], + "test/rsa_x931_test-bin-rsa_x931_test.o" => [ + "test/rsa_x931_test.c" + ], + "test/safe_math_test" => [ + "test/safe_math_test-bin-safe_math_test.o" + ], + "test/safe_math_test-bin-safe_math_test.o" => [ + "test/safe_math_test.c" + ], "test/sanitytest" => [ "test/sanitytest-bin-sanitytest.o" ], @@ -27378,6 +32409,12 @@ our %unified_info = ( "test/siphash_internal_test-bin-siphash_internal_test.o" => [ "test/siphash_internal_test.c" ], + "test/slh_dsa_test" => [ + "test/slh_dsa_test-bin-slh_dsa_test.o" + ], + "test/slh_dsa_test-bin-slh_dsa_test.o" => [ + "test/slh_dsa_test.c" + ], "test/sm2_internal_test" => [ "test/sm2_internal_test-bin-sm2_internal_test.o" ], @@ -27420,6 +32457,13 @@ our %unified_info = ( "test/ssl_ctx_test-bin-ssl_ctx_test.o" => [ "test/ssl_ctx_test.c" ], + "test/ssl_handshake_rtt_test" => [ + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" + ], + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" => [ + "test/ssl_handshake_rtt_test.c" + ], "test/ssl_old_test" => [ "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/ssl_old_test-bin-ssl_old_test.o" @@ -27478,6 +32522,12 @@ our %unified_info = ( "test/stack_test-bin-stack_test.o" => [ "test/stack_test.c" ], + "test/strtoultest" => [ + "test/strtoultest-bin-strtoultest.o" + ], + "test/strtoultest-bin-strtoultest.o" => [ + "test/strtoultest.c" + ], "test/sysdefaulttest" => [ "test/sysdefaulttest-bin-sysdefaulttest.o" ], @@ -27508,6 +32558,9 @@ our %unified_info = ( "test/testutil/libtestutil-lib-format_output.o" => [ "test/testutil/format_output.c" ], + "test/testutil/libtestutil-lib-helper.o" => [ + "test/testutil/helper.c" + ], "test/testutil/libtestutil-lib-load.o" => [ "test/testutil/load.c" ], @@ -27541,6 +32594,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-testutil_init.o" => [ "test/testutil/testutil_init.c" ], + "test/threadpool_test" => [ + "test/threadpool_test-bin-threadpool_test.o" + ], + "test/threadpool_test-bin-threadpool_test.o" => [ + "test/threadpool_test.c" + ], "test/threadstest" => [ "test/threadstest-bin-threadstest.o" ], @@ -27559,6 +32618,12 @@ our %unified_info = ( "test/time_offset_test-bin-time_offset_test.o" => [ "test/time_offset_test.c" ], + "test/time_test" => [ + "test/time_test-bin-time_test.o" + ], + "test/time_test-bin-time_test.o" => [ + "test/time_test.c" + ], "test/tls13ccstest" => [ "test/helpers/tls13ccstest-bin-ssltestlib.o", "test/tls13ccstest-bin-tls13ccstest.o" @@ -27572,6 +32637,13 @@ our %unified_info = ( "test/tls13encryptiontest-bin-tls13encryptiontest.o" => [ "test/tls13encryptiontest.c" ], + "test/tls13groupselection_test" => [ + "test/helpers/tls13groupselection_test-bin-ssltestlib.o", + "test/tls13groupselection_test-bin-tls13groupselection_test.o" + ], + "test/tls13groupselection_test-bin-tls13groupselection_test.o" => [ + "test/tls13groupselection_test.c" + ], "test/trace_api_test" => [ "test/trace_api_test-bin-trace_api_test.o" ], @@ -27627,6 +32699,12 @@ our %unified_info = ( "test/wpackettest-bin-wpackettest.o" => [ "test/wpackettest.c" ], + "test/x509_acert_test" => [ + "test/x509_acert_test-bin-x509_acert_test.o" + ], + "test/x509_acert_test-bin-x509_acert_test.o" => [ + "test/x509_acert_test.c" + ], "test/x509_check_cert_pkey_test" => [ "test/x509_check_cert_pkey_test-bin-x509_check_cert_pkey_test.o" ], @@ -27645,6 +32723,24 @@ our %unified_info = ( "test/x509_internal_test-bin-x509_internal_test.o" => [ "test/x509_internal_test.c" ], + "test/x509_load_cert_file_test" => [ + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" + ], + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" => [ + "test/x509_load_cert_file_test.c" + ], + "test/x509_req_test" => [ + "test/x509_req_test-bin-x509_req_test.o" + ], + "test/x509_req_test-bin-x509_req_test.o" => [ + "test/x509_req_test.c" + ], + "test/x509_test" => [ + "test/x509_test-bin-x509_test.o" + ], + "test/x509_test-bin-x509_test.o" => [ + "test/x509_test.c" + ], "test/x509_time_test" => [ "test/x509_time_test-bin-x509_time_test.o" ], @@ -27708,6 +32804,7 @@ my @makevars = ( "LDLIBS", "MT", "MTFLAGS", + "OBJCOPY", "PERL", "RANLIB", "RC", @@ -27721,6 +32818,12 @@ my %disabled_info = ( "asan" => { "macro" => "OPENSSL_NO_ASAN" }, + "brotli" => { + "macro" => "OPENSSL_NO_BROTLI" + }, + "brotli-dynamic" => { + "macro" => "OPENSSL_NO_BROTLI_DYNAMIC" + }, "comp" => { "macro" => "OPENSSL_NO_COMP", "skipped" => [ @@ -27733,6 +32836,9 @@ my %disabled_info = ( "crypto-mdebug-backtrace" => { "macro" => "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE" }, + "demos" => { + "macro" => "OPENSSL_NO_DEMOS" + }, "ec_nistp_64_gcc_128" => { "macro" => "OPENSSL_NO_EC_NISTP_64_GCC_128" }, @@ -27742,12 +32848,24 @@ my %disabled_info = ( "external-tests" => { "macro" => "OPENSSL_NO_EXTERNAL_TESTS" }, + "fips-jitter" => { + "macro" => "OPENSSL_NO_FIPS_JITTER" + }, "fuzz-afl" => { "macro" => "OPENSSL_NO_FUZZ_AFL" }, "fuzz-libfuzzer" => { "macro" => "OPENSSL_NO_FUZZ_LIBFUZZER" }, + "h3demo" => { + "macro" => "OPENSSL_NO_H3DEMO" + }, + "hqinterop" => { + "macro" => "OPENSSL_NO_HQINTEROP" + }, + "jitter" => { + "macro" => "OPENSSL_NO_JITTER" + }, "ktls" => { "macro" => "OPENSSL_NO_KTLS" }, @@ -27763,6 +32881,9 @@ my %disabled_info = ( "msan" => { "macro" => "OPENSSL_NO_MSAN" }, + "pie" => { + "macro" => "OPENSSL_NO_PIE" + }, "rc5" => { "macro" => "OPENSSL_NO_RC5", "skipped" => [ @@ -27778,6 +32899,12 @@ my %disabled_info = ( "ssl3-method" => { "macro" => "OPENSSL_NO_SSL3_METHOD" }, + "sslkeylog" => { + "macro" => "OPENSSL_NO_SSLKEYLOG" + }, + "tfo" => { + "macro" => "OPENSSL_NO_TFO" + }, "trace" => { "macro" => "OPENSSL_NO_TRACE" }, @@ -27792,6 +32919,21 @@ my %disabled_info = ( }, "weak-ssl-ciphers" => { "macro" => "OPENSSL_NO_WEAK_SSL_CIPHERS" + }, + "winstore" => { + "macro" => "OPENSSL_NO_WINSTORE" + }, + "zlib" => { + "macro" => "OPENSSL_NO_ZLIB" + }, + "zlib-dynamic" => { + "macro" => "OPENSSL_NO_ZLIB_DYNAMIC" + }, + "zstd" => { + "macro" => "OPENSSL_NO_ZSTD" + }, + "zstd-dynamic" => { + "macro" => "OPENSSL_NO_ZSTD_DYNAMIC" } ); my @user_crossable = qw( AR AS CC CXX CPP LD MT RANLIB RC ); @@ -27805,15 +32947,15 @@ unless (caller) { use File::Copy; use Pod::Usage; - use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; - use OpenSSL::fallback '/home/runner/work/node/node/deps/openssl/openssl/external/perl/MODULES.txt'; + use lib '/node/deps/openssl/openssl/util/perl'; + use OpenSSL::fallback '/node/deps/openssl/openssl/external/perl/MODULES.txt'; my $here = dirname($0); if (scalar @ARGV == 0) { # With no arguments, re-create the build file # We do that in two steps, where the first step emits perl - # snipets. + # snippets. my $buildfile = $config{build_file}; my $buildfile_template = "$buildfile.in"; @@ -27833,7 +32975,7 @@ unless (caller) { ); use lib '.'; - use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; + use lib '/node/deps/openssl/openssl/Configurations'; use gentemplate; open my $buildfile_template_fh, ">$buildfile_template" @@ -27850,8 +32992,8 @@ unless (caller) { my $prepend = <<'_____'; use File::Spec::Functions; -use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; -use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; +use lib '/node/deps/openssl/openssl/util/perl'; +use lib '/node/deps/openssl/openssl/Configurations'; use lib '.'; use platform; _____ diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/aes-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/aes-x86_64.s index 1e85beafbe4086..aeaa4d197b6101 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/aes-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/aes-x86_64.s @@ -1870,6 +1870,7 @@ AES_cbc_encrypt: .byte 0xf3,0xc3 .cfi_endproc .size AES_cbc_encrypt,.-AES_cbc_encrypt +.section .rodata .align 64 .LAES_Te: .long 0xa56363c6,0xa56363c6 @@ -2656,6 +2657,7 @@ AES_cbc_encrypt: .long 0x1b1b1b1b, 0x1b1b1b1b, 0, 0 .byte 65,69,83,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 64 +.previous .section ".note.gnu.property", "a" .p2align 3 .long 1f - 0f diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/aesni-sha1-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/aesni-sha1-x86_64.s index 2078fe2ab37874..aeafc094a08991 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/aesni-sha1-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/aesni-sha1-x86_64.s @@ -2718,6 +2718,7 @@ aesni_cbc_sha1_enc_avx: .byte 0xf3,0xc3 .cfi_endproc .size aesni_cbc_sha1_enc_avx,.-aesni_cbc_sha1_enc_avx +.section .rodata .align 64 K_XX_XX: .long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 @@ -2729,6 +2730,7 @@ K_XX_XX: .byte 65,69,83,78,73,45,67,66,67,43,83,72,65,49,32,115,116,105,116,99,104,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 64 +.previous .type aesni_cbc_sha1_enc_shaext,@function .align 32 aesni_cbc_sha1_enc_shaext: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/aesni-sha256-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/aesni-sha256-x86_64.s index c938e50b990bcd..f26bcd4772a4e7 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/aesni-sha256-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/aesni-sha256-x86_64.s @@ -34,6 +34,7 @@ aesni_cbc_sha256_enc: .cfi_endproc .size aesni_cbc_sha256_enc,.-aesni_cbc_sha256_enc +.section .rodata .align 64 .type K256,@object K256: @@ -76,6 +77,7 @@ K256: .long 0,0,0,0, 0,0,0,0 .byte 65,69,83,78,73,45,67,66,67,43,83,72,65,50,53,54,32,115,116,105,116,99,104,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 64 +.previous .type aesni_cbc_sha256_enc_xop,@function .align 64 aesni_cbc_sha256_enc_xop: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/aesni-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/aesni-x86_64.s index 4e35b2b1d379c0..7970fdf0d4558f 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/aesni-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/aesni-x86_64.s @@ -4461,6 +4461,7 @@ __aesni_set_encrypt_key: .cfi_endproc .size aesni_set_encrypt_key,.-aesni_set_encrypt_key .size __aesni_set_encrypt_key,.-__aesni_set_encrypt_key +.section .rodata .align 64 .Lbswap_mask: .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 @@ -4483,6 +4484,7 @@ __aesni_set_encrypt_key: .byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69,83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 64 +.previous .section ".note.gnu.property", "a" .p2align 3 .long 1f - 0f diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/aesni-xts-avx512.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/aesni-xts-avx512.s new file mode 100644 index 00000000000000..4f2be52d04e1d4 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/aesni-xts-avx512.s @@ -0,0 +1,45 @@ +.text +.globl aesni_xts_128_encrypt_avx512 +.globl aesni_xts_128_decrypt_avx512 + +aesni_xts_128_encrypt_avx512: +aesni_xts_128_decrypt_avx512: +.byte 0x0f,0x0b + .byte 0xf3,0xc3 + +.globl aesni_xts_256_encrypt_avx512 +.globl aesni_xts_256_decrypt_avx512 + +aesni_xts_256_encrypt_avx512: +aesni_xts_256_decrypt_avx512: +.byte 0x0f,0x0b + .byte 0xf3,0xc3 + +.globl aesni_xts_avx512_eligible +.type aesni_xts_avx512_eligible,@function +aesni_xts_avx512_eligible: + xorl %eax,%eax + .byte 0xf3,0xc3 +.size aesni_xts_avx512_eligible, .-aesni_xts_avx512_eligible + + .section ".note.gnu.property", "a" + .p2align 3 + .long 1f - 0f + .long 4f - 1f + .long 5 +0: + # "GNU" encoded with .byte, since .asciz isn't supported + # on Solaris. + .byte 0x47 + .byte 0x4e + .byte 0x55 + .byte 0 +1: + .p2align 3 + .long 0xc0000002 + .long 3f - 2f +2: + .long 3 +3: + .p2align 3 +4: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/bsaes-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/bsaes-x86_64.s index ff533b2df32c40..9705994c043782 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/bsaes-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/bsaes-x86_64.s @@ -1571,6 +1571,7 @@ ossl_bsaes_ctr32_encrypt_blocks: .align 16 ossl_bsaes_xts_encrypt: .cfi_startproc +.byte 243,15,30,250 movq %rsp,%rax .Lxts_enc_prologue: pushq %rbp @@ -2046,6 +2047,7 @@ ossl_bsaes_xts_encrypt: .align 16 ossl_bsaes_xts_decrypt: .cfi_startproc +.byte 243,15,30,250 movq %rsp,%rax .Lxts_dec_prologue: pushq %rbp @@ -2541,6 +2543,7 @@ ossl_bsaes_xts_decrypt: .cfi_endproc .size ossl_bsaes_xts_decrypt,.-ossl_bsaes_xts_decrypt .type _bsaes_const,@object +.section .rodata .align 64 _bsaes_const: .LM0ISR: @@ -2592,9 +2595,9 @@ _bsaes_const: .quad 0x02060a0e03070b0f, 0x0004080c0105090d .L63: .quad 0x6363636363636363, 0x6363636363636363 -.byte 66,105,116,45,115,108,105,99,101,100,32,65,69,83,32,102,111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44,32,69,109,105,108,105,97,32,75,195,164,115,112,101,114,44,32,80,101,116,101,114,32,83,99,104,119,97,98,101,44,32,65,110,100,121,32,80,111,108,121,97,107,111,118,0 .align 64 .size _bsaes_const,.-_bsaes_const +.byte 66,105,116,45,115,108,105,99,101,100,32,65,69,83,32,102,111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44,32,69,109,105,108,105,97,32,75,195,164,115,112,101,114,44,32,80,101,116,101,114,32,83,99,104,119,97,98,101,44,32,65,110,100,121,32,80,111,108,121,97,107,111,118,0 .section ".note.gnu.property", "a" .p2align 3 .long 1f - 0f diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/vpaes-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/vpaes-x86_64.s index 7783c6a659f952..1c7816840a1fd4 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/vpaes-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/aes/vpaes-x86_64.s @@ -758,6 +758,7 @@ _vpaes_preheat: .type _vpaes_consts,@object +.section .rodata .align 64 _vpaes_consts: .Lk_inv: @@ -853,9 +854,9 @@ _vpaes_consts: .Lk_dsbo: .quad 0x1387EA537EF94000, 0xC7AA6DB9D4943E2D .quad 0x12D7560F93441D00, 0xCA4B8159D8C58E9C -.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105,111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105,118,101,114,115,105,116,121,41,0 .align 64 .size _vpaes_consts,.-_vpaes_consts +.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105,111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105,118,101,114,115,105,116,121,41,0 .section ".note.gnu.property", "a" .p2align 3 .long 1f - 0f diff --git a/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/bn/rsaz-avx512.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-2k-avx512.s similarity index 71% rename from deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/bn/rsaz-avx512.s rename to deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-2k-avx512.s index 08af694c2fd799..309f4fe9c30fe7 100644 --- a/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/bn/rsaz-avx512.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-2k-avx512.s @@ -7,16 +7,16 @@ ossl_rsaz_avx512ifma_eligible: .byte 0xf3,0xc3 .size ossl_rsaz_avx512ifma_eligible, .-ossl_rsaz_avx512ifma_eligible -.globl ossl_rsaz_amm52x20_x1_256 -.globl ossl_rsaz_amm52x20_x2_256 +.globl ossl_rsaz_amm52x20_x1_ifma256 +.globl ossl_rsaz_amm52x20_x2_ifma256 .globl ossl_extract_multiplier_2x20_win5 -.type ossl_rsaz_amm52x20_x1_256,@function -ossl_rsaz_amm52x20_x1_256: -ossl_rsaz_amm52x20_x2_256: +.type ossl_rsaz_amm52x20_x1_ifma256,@function +ossl_rsaz_amm52x20_x1_ifma256: +ossl_rsaz_amm52x20_x2_ifma256: ossl_extract_multiplier_2x20_win5: .byte 0x0f,0x0b .byte 0xf3,0xc3 -.size ossl_rsaz_amm52x20_x1_256, .-ossl_rsaz_amm52x20_x1_256 +.size ossl_rsaz_amm52x20_x1_ifma256, .-ossl_rsaz_amm52x20_x1_ifma256 .section ".note.gnu.property", "a" .p2align 3 .long 1f - 0f diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-2k-avxifma.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-2k-avxifma.s new file mode 100644 index 00000000000000..4d776af5095e35 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-2k-avxifma.s @@ -0,0 +1,40 @@ +.text + +.globl ossl_rsaz_avxifma_eligible +.type ossl_rsaz_avxifma_eligible,@function +ossl_rsaz_avxifma_eligible: + xorl %eax,%eax + .byte 0xf3,0xc3 +.size ossl_rsaz_avxifma_eligible, .-ossl_rsaz_avxifma_eligible + +.globl ossl_rsaz_amm52x20_x1_avxifma256 +.globl ossl_rsaz_amm52x20_x2_avxifma256 +.globl ossl_extract_multiplier_2x20_win5_avx +.type ossl_rsaz_amm52x20_x1_avxifma256,@function +ossl_rsaz_amm52x20_x1_avxifma256: +ossl_rsaz_amm52x20_x2_avxifma256: +ossl_extract_multiplier_2x20_win5_avx: +.byte 0x0f,0x0b + .byte 0xf3,0xc3 +.size ossl_rsaz_amm52x20_x1_avxifma256, .-ossl_rsaz_amm52x20_x1_avxifma256 + .section ".note.gnu.property", "a" + .p2align 3 + .long 1f - 0f + .long 4f - 1f + .long 5 +0: + # "GNU" encoded with .byte, since .asciz isn't supported + # on Solaris. + .byte 0x47 + .byte 0x4e + .byte 0x55 + .byte 0 +1: + .p2align 3 + .long 0xc0000002 + .long 3f - 2f +2: + .long 3 +3: + .p2align 3 +4: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-3k-avx512.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-3k-avx512.s new file mode 100644 index 00000000000000..a0a8b550a50517 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-3k-avx512.s @@ -0,0 +1,33 @@ +.text + +.globl ossl_rsaz_amm52x30_x1_ifma256 +.globl ossl_rsaz_amm52x30_x2_ifma256 +.globl ossl_extract_multiplier_2x30_win5 +.type ossl_rsaz_amm52x30_x1_ifma256,@function +ossl_rsaz_amm52x30_x1_ifma256: +ossl_rsaz_amm52x30_x2_ifma256: +ossl_extract_multiplier_2x30_win5: +.byte 0x0f,0x0b + .byte 0xf3,0xc3 +.size ossl_rsaz_amm52x30_x1_ifma256, .-ossl_rsaz_amm52x30_x1_ifma256 + .section ".note.gnu.property", "a" + .p2align 3 + .long 1f - 0f + .long 4f - 1f + .long 5 +0: + # "GNU" encoded with .byte, since .asciz isn't supported + # on Solaris. + .byte 0x47 + .byte 0x4e + .byte 0x55 + .byte 0 +1: + .p2align 3 + .long 0xc0000002 + .long 3f - 2f +2: + .long 3 +3: + .p2align 3 +4: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-3k-avxifma.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-3k-avxifma.s new file mode 100644 index 00000000000000..e27748b02804e2 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-3k-avxifma.s @@ -0,0 +1,33 @@ +.text + +.globl ossl_rsaz_amm52x30_x1_avxifma256 +.globl ossl_rsaz_amm52x30_x2_avxifma256 +.globl ossl_extract_multiplier_2x30_win5_avx +.type ossl_rsaz_amm52x30_x1_avxifma256,@function +ossl_rsaz_amm52x30_x1_avxifma256: +ossl_rsaz_amm52x30_x2_avxifma256: +ossl_extract_multiplier_2x30_win5_avx: +.byte 0x0f,0x0b + .byte 0xf3,0xc3 +.size ossl_rsaz_amm52x30_x1_avxifma256, .-ossl_rsaz_amm52x30_x1_avxifma256 + .section ".note.gnu.property", "a" + .p2align 3 + .long 1f - 0f + .long 4f - 1f + .long 5 +0: + # "GNU" encoded with .byte, since .asciz isn't supported + # on Solaris. + .byte 0x47 + .byte 0x4e + .byte 0x55 + .byte 0 +1: + .p2align 3 + .long 0xc0000002 + .long 3f - 2f +2: + .long 3 +3: + .p2align 3 +4: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-4k-avx512.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-4k-avx512.s new file mode 100644 index 00000000000000..5ee17c91b158b8 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-4k-avx512.s @@ -0,0 +1,33 @@ +.text + +.globl ossl_rsaz_amm52x40_x1_ifma256 +.globl ossl_rsaz_amm52x40_x2_ifma256 +.globl ossl_extract_multiplier_2x40_win5 +.type ossl_rsaz_amm52x40_x1_ifma256,@function +ossl_rsaz_amm52x40_x1_ifma256: +ossl_rsaz_amm52x40_x2_ifma256: +ossl_extract_multiplier_2x40_win5: +.byte 0x0f,0x0b + .byte 0xf3,0xc3 +.size ossl_rsaz_amm52x40_x1_ifma256, .-ossl_rsaz_amm52x40_x1_ifma256 + .section ".note.gnu.property", "a" + .p2align 3 + .long 1f - 0f + .long 4f - 1f + .long 5 +0: + # "GNU" encoded with .byte, since .asciz isn't supported + # on Solaris. + .byte 0x47 + .byte 0x4e + .byte 0x55 + .byte 0 +1: + .p2align 3 + .long 0xc0000002 + .long 3f - 2f +2: + .long 3 +3: + .p2align 3 +4: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-4k-avxifma.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-4k-avxifma.s new file mode 100644 index 00000000000000..57a577a61e58ce --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-4k-avxifma.s @@ -0,0 +1,33 @@ +.text + +.globl ossl_rsaz_amm52x40_x1_avxifma256 +.globl ossl_rsaz_amm52x40_x2_avxifma256 +.globl ossl_extract_multiplier_2x40_win5_avx +.type ossl_rsaz_amm52x40_x1_avxifma256,@function +ossl_rsaz_amm52x40_x1_avxifma256: +ossl_rsaz_amm52x40_x2_avxifma256: +ossl_extract_multiplier_2x40_win5_avx: +.byte 0x0f,0x0b + .byte 0xf3,0xc3 +.size ossl_rsaz_amm52x40_x1_avxifma256, .-ossl_rsaz_amm52x40_x1_avxifma256 + .section ".note.gnu.property", "a" + .p2align 3 + .long 1f - 0f + .long 4f - 1f + .long 5 +0: + # "GNU" encoded with .byte, since .asciz isn't supported + # on Solaris. + .byte 0x47 + .byte 0x4e + .byte 0x55 + .byte 0 +1: + .p2align 3 + .long 0xc0000002 + .long 3f - 2f +2: + .long 3 +3: + .p2align 3 +4: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-avx2.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-avx2.s index 80d6c817664518..f58e783167f07b 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-avx2.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-avx2.s @@ -1730,6 +1730,7 @@ rsaz_avx2_eligible: .byte 0xf3,0xc3 .size rsaz_avx2_eligible,.-rsaz_avx2_eligible +.section .rodata .align 64 .Land_mask: .quad 0x1fffffff,0x1fffffff,0x1fffffff,0x1fffffff @@ -1741,6 +1742,7 @@ rsaz_avx2_eligible: .long 0,0,0,0, 1,1,1,1 .long 2,2,2,2, 3,3,3,3 .long 4,4,4,4, 4,4,4,4 +.previous .align 64 .section ".note.gnu.property", "a" .p2align 3 diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-x86_64.s index 0b2513c819db21..ca03617e929446 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-x86_64.s @@ -2009,10 +2009,12 @@ rsaz_512_gather4: .cfi_endproc .size rsaz_512_gather4,.-rsaz_512_gather4 +.section .rodata .align 64 .Linc: .long 0,0, 1,1 .long 2,2, 2,2 +.previous .section ".note.gnu.property", "a" .p2align 3 .long 1f - 0f diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/x86_64-mont5.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/x86_64-mont5.s index 0eb8b6c8b5c75b..1b7e7b922915f2 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/x86_64-mont5.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/x86_64-mont5.s @@ -3596,11 +3596,13 @@ bn_gather5: .LSEH_end_bn_gather5: .cfi_endproc .size bn_gather5,.-bn_gather5 +.section .rodata .align 64 .Linc: .long 0,0, 1,1 .long 2,2, 2,2 .byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,119,105,116,104,32,115,99,97,116,116,101,114,47,103,97,116,104,101,114,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.previous .section ".note.gnu.property", "a" .p2align 3 .long 1f - 0f diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h index a2efc4655115f8..57bc2b60b47000 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: BSD-x86_64" -#define DATE "built on: Sun Jul 20 00:46:33 2025 UTC" +#define DATE "built on: Tue Aug 5 17:11:25 2025 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/camellia/cmll-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/camellia/cmll-x86_64.s index 605c25d74be399..c1a9846b51cb0c 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/camellia/cmll-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/camellia/cmll-x86_64.s @@ -1144,6 +1144,7 @@ Camellia_Ekeygen: .byte 0xf3,0xc3 .cfi_endproc .size Camellia_Ekeygen,.-Camellia_Ekeygen +.section .rodata .align 64 .LCamellia_SIGMA: .long 0x3bcc908b, 0xa09e667f, 0x4caa73b2, 0xb67ae858 @@ -1663,6 +1664,7 @@ Camellia_Ekeygen: .long 0x008f8f8f,0xe300e3e3 .long 0x00010101,0x40004040 .long 0x003d3d3d,0x4f004f4f +.text .globl Camellia_cbc_encrypt .type Camellia_cbc_encrypt,@function .align 16 diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/chacha/chacha-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/chacha/chacha-x86_64.s index ec5251a82f42a4..bcdb0a922d6678 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/chacha/chacha-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/chacha/chacha-x86_64.s @@ -2,6 +2,7 @@ +.section .rodata .align 64 .Lzero: .long 0,0,0,0 @@ -33,6 +34,7 @@ .Lsigma: .byte 101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107,0 .byte 67,104,97,67,104,97,50,48,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.previous .globl ChaCha20_ctr32 .type ChaCha20_ctr32,@function .align 64 diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/ec/ecp_nistz256-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/ec/ecp_nistz256-x86_64.s index 284c11748946b8..0cf1f47a7e67f9 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/ec/ecp_nistz256-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/ec/ecp_nistz256-x86_64.s @@ -1,4 +1,4 @@ -.text +.section .rodata .globl ecp_nistz256_precomputed .type ecp_nistz256_precomputed,@object .align 4096 @@ -2376,6 +2376,7 @@ ecp_nistz256_precomputed: +.section .rodata .align 64 .Lpoly: .quad 0xffffffffffffffff, 0x00000000ffffffff, 0x0000000000000000, 0xffffffff00000001 @@ -2398,6 +2399,7 @@ ecp_nistz256_precomputed: .quad 0xf3b9cac2fc632551, 0xbce6faada7179e84, 0xffffffffffffffff, 0xffffffff00000000 .LordK: .quad 0xccd1c8aaee00bc4f +.previous .globl ecp_nistz256_mul_by_2 .type ecp_nistz256_mul_by_2,@function diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/md5/md5-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/md5/md5-x86_64.s index 85e1d0ca259271..6119335cb2e396 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/md5/md5-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/md5/md5-x86_64.s @@ -201,7 +201,7 @@ ossl_md5_block_asm_data_order: leal -165796510(%rax,%r10,1),%eax andl %ecx,%r11d movl 24(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%eax movl %ecx,%r11d addl %r12d,%eax movl %ecx,%r12d @@ -212,7 +212,7 @@ ossl_md5_block_asm_data_order: leal -1069501632(%rdx,%r10,1),%edx andl %ebx,%r11d movl 44(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%edx movl %ebx,%r11d addl %r12d,%edx movl %ebx,%r12d @@ -223,7 +223,7 @@ ossl_md5_block_asm_data_order: leal 643717713(%rcx,%r10,1),%ecx andl %eax,%r11d movl 0(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%ecx movl %eax,%r11d addl %r12d,%ecx movl %eax,%r12d @@ -234,7 +234,7 @@ ossl_md5_block_asm_data_order: leal -373897302(%rbx,%r10,1),%ebx andl %edx,%r11d movl 20(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%ebx movl %edx,%r11d addl %r12d,%ebx movl %edx,%r12d @@ -245,7 +245,7 @@ ossl_md5_block_asm_data_order: leal -701558691(%rax,%r10,1),%eax andl %ecx,%r11d movl 40(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%eax movl %ecx,%r11d addl %r12d,%eax movl %ecx,%r12d @@ -256,7 +256,7 @@ ossl_md5_block_asm_data_order: leal 38016083(%rdx,%r10,1),%edx andl %ebx,%r11d movl 60(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%edx movl %ebx,%r11d addl %r12d,%edx movl %ebx,%r12d @@ -267,7 +267,7 @@ ossl_md5_block_asm_data_order: leal -660478335(%rcx,%r10,1),%ecx andl %eax,%r11d movl 16(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%ecx movl %eax,%r11d addl %r12d,%ecx movl %eax,%r12d @@ -278,7 +278,7 @@ ossl_md5_block_asm_data_order: leal -405537848(%rbx,%r10,1),%ebx andl %edx,%r11d movl 36(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%ebx movl %edx,%r11d addl %r12d,%ebx movl %edx,%r12d @@ -289,7 +289,7 @@ ossl_md5_block_asm_data_order: leal 568446438(%rax,%r10,1),%eax andl %ecx,%r11d movl 56(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%eax movl %ecx,%r11d addl %r12d,%eax movl %ecx,%r12d @@ -300,7 +300,7 @@ ossl_md5_block_asm_data_order: leal -1019803690(%rdx,%r10,1),%edx andl %ebx,%r11d movl 12(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%edx movl %ebx,%r11d addl %r12d,%edx movl %ebx,%r12d @@ -311,7 +311,7 @@ ossl_md5_block_asm_data_order: leal -187363961(%rcx,%r10,1),%ecx andl %eax,%r11d movl 32(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%ecx movl %eax,%r11d addl %r12d,%ecx movl %eax,%r12d @@ -322,7 +322,7 @@ ossl_md5_block_asm_data_order: leal 1163531501(%rbx,%r10,1),%ebx andl %edx,%r11d movl 52(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%ebx movl %edx,%r11d addl %r12d,%ebx movl %edx,%r12d @@ -333,7 +333,7 @@ ossl_md5_block_asm_data_order: leal -1444681467(%rax,%r10,1),%eax andl %ecx,%r11d movl 8(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%eax movl %ecx,%r11d addl %r12d,%eax movl %ecx,%r12d @@ -344,7 +344,7 @@ ossl_md5_block_asm_data_order: leal -51403784(%rdx,%r10,1),%edx andl %ebx,%r11d movl 28(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%edx movl %ebx,%r11d addl %r12d,%edx movl %ebx,%r12d @@ -355,7 +355,7 @@ ossl_md5_block_asm_data_order: leal 1735328473(%rcx,%r10,1),%ecx andl %eax,%r11d movl 48(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%ecx movl %eax,%r11d addl %r12d,%ecx movl %eax,%r12d @@ -366,7 +366,7 @@ ossl_md5_block_asm_data_order: leal -1926607734(%rbx,%r10,1),%ebx andl %edx,%r11d movl 20(%rsi),%r10d - orl %r11d,%r12d + addl %r11d,%ebx movl %edx,%r11d addl %r12d,%ebx movl %edx,%r12d diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/modes/aes-gcm-avx512.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/modes/aes-gcm-avx512.s new file mode 100644 index 00000000000000..8b2c754f8d2336 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/modes/aes-gcm-avx512.s @@ -0,0 +1,48 @@ +.text +.globl ossl_vaes_vpclmulqdq_capable +.type ossl_vaes_vpclmulqdq_capable,@function +ossl_vaes_vpclmulqdq_capable: + xorl %eax,%eax + .byte 0xf3,0xc3 +.size ossl_vaes_vpclmulqdq_capable, .-ossl_vaes_vpclmulqdq_capable + +.globl ossl_aes_gcm_init_avx512 +.globl ossl_aes_gcm_setiv_avx512 +.globl ossl_aes_gcm_update_aad_avx512 +.globl ossl_aes_gcm_encrypt_avx512 +.globl ossl_aes_gcm_decrypt_avx512 +.globl ossl_aes_gcm_finalize_avx512 +.globl ossl_gcm_gmult_avx512 + +.type ossl_aes_gcm_init_avx512,@function +ossl_aes_gcm_init_avx512: +ossl_aes_gcm_setiv_avx512: +ossl_aes_gcm_update_aad_avx512: +ossl_aes_gcm_encrypt_avx512: +ossl_aes_gcm_decrypt_avx512: +ossl_aes_gcm_finalize_avx512: +ossl_gcm_gmult_avx512: +.byte 0x0f,0x0b + .byte 0xf3,0xc3 +.size ossl_aes_gcm_init_avx512, .-ossl_aes_gcm_init_avx512 + .section ".note.gnu.property", "a" + .p2align 3 + .long 1f - 0f + .long 4f - 1f + .long 5 +0: + # "GNU" encoded with .byte, since .asciz isn't supported + # on Solaris. + .byte 0x47 + .byte 0x4e + .byte 0x55 + .byte 0 +1: + .p2align 3 + .long 0xc0000002 + .long 3f - 2f +2: + .long 3 +3: + .p2align 3 +4: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/modes/aesni-gcm-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/modes/aesni-gcm-x86_64.s index e3813bf7cea0eb..4a7eca0125f321 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/modes/aesni-gcm-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/modes/aesni-gcm-x86_64.s @@ -774,6 +774,7 @@ aesni_gcm_encrypt: .byte 0xf3,0xc3 .cfi_endproc .size aesni_gcm_encrypt,.-aesni_gcm_encrypt +.section .rodata .align 64 .Lbswap_mask: .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 @@ -786,6 +787,7 @@ aesni_gcm_encrypt: .Lone_lsb: .byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .byte 65,69,83,45,78,73,32,71,67,77,32,109,111,100,117,108,101,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.previous .align 64 .section ".note.gnu.property", "a" .p2align 3 diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/modes/ghash-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/modes/ghash-x86_64.s index 29dd9b13e956c6..894f152b263a52 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/modes/ghash-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/modes/ghash-x86_64.s @@ -708,6 +708,7 @@ gcm_ghash_4bit: .align 16 gcm_init_clmul: .cfi_startproc +.byte 243,15,30,250 .L_init_clmul: movdqu (%rsi),%xmm2 pshufd $78,%xmm2,%xmm2 @@ -1306,6 +1307,7 @@ gcm_ghash_clmul: .align 32 gcm_init_avx: .cfi_startproc +.byte 243,15,30,250 vzeroupper vmovdqu (%rsi),%xmm2 @@ -1798,6 +1800,7 @@ gcm_ghash_avx: .byte 0xf3,0xc3 .cfi_endproc .size gcm_ghash_avx,.-gcm_ghash_avx +.section .rodata .align 64 .Lbswap_mask: .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 @@ -1851,6 +1854,7 @@ gcm_ghash_avx: .byte 71,72,65,83,72,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 64 +.previous .section ".note.gnu.property", "a" .p2align 3 .long 1f - 0f diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/params_idx.c b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/params_idx.c new file mode 100644 index 00000000000000..9d76ffededc24c --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/params_idx.c @@ -0,0 +1,3366 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from crypto/params_idx.c.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#include "internal/e_os.h" +#include "internal/param_names.h" +#include + +/* Machine generated TRIE -- generated by util/perl/OpenSSL/paramnames.pm */ +int ossl_param_find_pidx(const char *s) +{ + switch(s[0]) { + default: + break; + case 'a': + switch(s[1]) { + default: + break; + case 'c': + if (strcmp("vp-info", s + 2) == 0) + return PIDX_KDF_PARAM_X942_ACVPINFO; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'd': + if (strcmp("itional-random", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_ADD_RANDOM; + break; + case '\0': + return PIDX_KDF_PARAM_ARGON2_AD; + } + break; + case 'e': + if (strcmp("ad", s + 2) == 0) + return PIDX_CIPHER_PARAM_AEAD; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("id_param", s + 4) == 0) + return PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD; + break; + case 'i': + if (strcmp("d-absent", s + 4) == 0) + return PIDX_DIGEST_PARAM_ALGID_ABSENT; + break; + case 'o': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'h': + switch(s[8]) { + default: + break; + case 'm': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '-': + if (strcmp("params", s + 13) == 0) + return PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS; + break; + case '\0': + return PIDX_ALG_PARAM_ALGORITHM_ID; + } + } + } + } + } + } + } + } + } + } + break; + case 'i': + if (strcmp("as", s + 3) == 0) + return PIDX_STORE_PARAM_ALIAS; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_A; + } + break; + case 'b': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("sis-type", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_CHAR2_TYPE; + break; + case 'i': + if (strcmp("ts", s + 2) == 0) + return PIDX_PKEY_PARAM_BITS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("size", s + 6) == 0) + return PIDX_MAC_PARAM_BLOCK_SIZE; + break; + case '_': + if (strcmp("padding", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING; + break; + case 's': + if (strcmp("ize", s + 6) == 0) + return PIDX_DIGEST_PARAM_BLOCK_SIZE; + } + } + } + } + break; + case 'u': + if (strcmp("ildinfo", s + 2) == 0) + return PIDX_PROV_PARAM_BUILDINFO; + break; + case '\0': + return PIDX_PKEY_PARAM_EC_B; + } + break; + case 'c': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_C_ROUNDS; + break; + case 'e': + if (strcmp("kalg", s + 2) == 0) + return PIDX_KDF_PARAM_CEK_ALG; + break; + case 'i': + if (strcmp("pher", s + 2) == 0) + return PIDX_ALG_PARAM_CIPHER; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("actor", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_COFACTOR; + break; + case 'n': + switch(s[3]) { + default: + break; + case 's': + if (strcmp("tant", s + 4) == 0) + return PIDX_KDF_PARAM_CONSTANT; + break; + case 't': + if (strcmp("ext-string", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_CONTEXT_STRING; + } + } + break; + case 't': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("mode", s + 4) == 0) + return PIDX_CIPHER_PARAM_CTS_MODE; + break; + case '\0': + return PIDX_CIPHER_PARAM_CTS; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '-': + if (strcmp("iv", s + 7) == 0) + return PIDX_CIPHER_PARAM_CUSTOM_IV; + break; + case '\0': + return PIDX_MAC_PARAM_CUSTOM; + } + } + } + } + } + } + break; + case 'd': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_D_ROUNDS; + break; + case 'a': + switch(s[2]) { + default: + break; + case 't': + switch(s[3]) { + default: + break; + case 'a': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 's': + if (strcmp("tructure", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_STRUCTURE; + break; + case 't': + if (strcmp("ype", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_TYPE; + } + break; + case '\0': + return PIDX_OBJECT_PARAM_DATA; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + if (strcmp("ded-from-explicit", s + 4) == 0) + return PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS; + break; + case 'r': + if (strcmp("ypt-only", s + 4) == 0) + return PIDX_CIPHER_PARAM_DECRYPT_ONLY; + } + break; + case 'f': + if (strcmp("ault-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_DEFAULT_DIGEST; + break; + case 's': + if (strcmp("c", s + 3) == 0) + return PIDX_OBJECT_PARAM_DESC; + break; + case 't': + if (strcmp("erministic", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_DETERMINISTIC; + } + break; + case 'h': + if (strcmp("kem-ikm", s + 2) == 0) + return PIDX_PKEY_PARAM_DHKEM_IKM; + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("heck", s + 8) == 0) + return PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK; + break; + case 'n': + if (strcmp("oinit", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_NOINIT; + break; + case 'o': + if (strcmp("neshot", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_ONESHOT; + break; + case 'p': + if (strcmp("rops", s + 8) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS; + break; + case 's': + if (strcmp("ize", s + 8) == 0) + return PIDX_PKEY_PARAM_DIGEST_SIZE; + } + break; + case '\0': + return PIDX_STORE_PARAM_DIGEST; + } + } + } + } + break; + case 's': + if (strcmp("tid", s + 3) == 0) + return PIDX_PKEY_PARAM_DIST_ID; + } + break; + case 'r': + if (strcmp("bg-no-trunc-md", s + 2) == 0) + return PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST; + break; + case 's': + if (strcmp("a-sign-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_DSA_SIGN_DISABLED; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_D; + } + break; + case 'e': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("rly_clean", s + 2) == 0) + return PIDX_KDF_PARAM_EARLY_CLEAN; + break; + case 'c': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'h': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'a': + switch(s[9]) { + default: + break; + case 'c': + switch(s[10]) { + default: + break; + case 't': + switch(s[11]) { + default: + break; + case 'o': + switch(s[12]) { + default: + break; + case 'r': + switch(s[13]) { + default: + break; + case '-': + switch(s[14]) { + default: + break; + case 'c': + if (strcmp("heck", s + 15) == 0) + return PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK; + break; + case 'm': + if (strcmp("ode", s + 15) == 0) + return PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE; + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'm': + if (strcmp("s_check", s + 2) == 0) + return PIDX_KDF_PARAM_FIPS_EMS_CHECK; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("d-pub-key", s + 6) == 0) + return PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY; + break; + case 'i': + if (strcmp("ng", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_ENCODING; + } + } + break; + case 'r': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'c': + if (strcmp("heck", s + 9) == 0) + return PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK; + break; + case 'l': + if (strcmp("evel", s + 9) == 0) + return PIDX_ENCODER_PARAM_ENCRYPT_LEVEL; + } + } + } + } + } + } + break; + case 'g': + if (strcmp("ine", s + 3) == 0) + return PIDX_ALG_PARAM_ENGINE; + break; + case 't': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'y': + switch(s[7]) { + default: + break; + case '_': + if (strcmp("required", s + 8) == 0) + return PIDX_DRBG_PARAM_ENTROPY_REQUIRED; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_ENTROPY; + } + } + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_E; + break; + case 'x': + if (strcmp("pect", s + 2) == 0) + return PIDX_STORE_PARAM_EXPECT; + } + break; + case 'f': + switch(s[1]) { + default: + break; + case 'i': + switch(s[2]) { + default: + break; + case 'e': + if (strcmp("ld-type", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_FIELD_TYPE; + break; + case 'n': + if (strcmp("gerprint", s + 3) == 0) + return PIDX_STORE_PARAM_FINGERPRINT; + break; + case 'p': + if (strcmp("s-indicator", s + 3) == 0) + return PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR; + } + } + break; + case 'g': + switch(s[1]) { + default: + break; + case 'e': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_GENERATE; + } + break; + case 'o': + if (strcmp("r", s + 8) == 0) + return PIDX_PKEY_PARAM_EC_GENERATOR; + } + } + } + } + } + } + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_GINDEX; + break; + case 'r': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'u': + switch(s[4]) { + default: + break; + case 'p': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("check", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE; + break; + case '\0': + return PIDX_PKEY_PARAM_GROUP_NAME; + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_G; + } + break; + case 'h': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("s-randkey", s + 2) == 0) + return PIDX_CIPHER_PARAM_HAS_RAND_KEY; + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_H; + break; + case 'k': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'f': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_KEY_CHECK; + } + } + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_HMAC_KEY_CHECK; + break; + case 's': + if (strcmp("_padding", s + 2) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING; + } + break; + case 'i': + switch(s[1]) { + default: + break; + case 'd': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_PKCS12_ID; + } + break; + case 'k': + if (strcmp("me", s + 2) == 0) + return PIDX_KEM_PARAM_IKME; + break; + case 'm': + if (strcmp("plicit-rejection", s + 2) == 0) + return PIDX_PKEY_PARAM_IMPLICIT_REJECTION; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("lude-public", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC; + break; + case 'f': + if (strcmp("o", s + 3) == 0) + return PIDX_PASSPHRASE_PARAM_INFO; + break; + case 'p': + if (strcmp("ut-type", s + 3) == 0) + return PIDX_STORE_PARAM_INPUT_TYPE; + break; + case 's': + if (strcmp("tance", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_INSTANCE; + } + break; + case 't': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("tion", s + 5) == 0) + return PIDX_GEN_PARAM_ITERATION; + break; + case '\0': + return PIDX_KDF_PARAM_ITER; + } + } + } + break; + case 'v': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("generated", s + 3) == 0) + return PIDX_CIPHER_PARAM_AEAD_IV_GENERATED; + break; + case 'l': + if (strcmp("en", s + 3) == 0) + return PIDX_CIPHER_PARAM_IVLEN; + break; + case '\0': + return PIDX_MAC_PARAM_IV; + } + } + break; + case 'j': + switch(s[1]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_COFACTOR; + } + break; + case 'k': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K2; + } + break; + case '3': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K3; + } + break; + case 'a': + if (strcmp("t", s + 2) == 0) + return PIDX_SIGNATURE_PARAM_KAT; + break; + case 'b': + if (strcmp("kdf-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KBKDF_KEY_CHECK; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case 's': + switch(s[9]) { + default: + break; + case 't': + switch(s[10]) { + default: + break; + case '-': + if (strcmp("props", s + 11) == 0) + return PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_KDF_DIGEST; + } + } + } + } + } + } + break; + case 'o': + if (strcmp("utlen", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_OUTLEN; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_TYPE; + break; + case 'u': + if (strcmp("km", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_UKM; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'y': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("heck", s + 5) == 0) + return PIDX_PKEY_PARAM_FIPS_KEY_CHECK; + break; + case 'l': + if (strcmp("ength", s + 5) == 0) + return PIDX_SKEY_PARAM_KEY_LENGTH; + } + break; + case 'b': + if (strcmp("its", s + 4) == 0) + return PIDX_CIPHER_PARAM_RC2_KEYBITS; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_KEYLEN; + break; + case '\0': + return PIDX_MAC_PARAM_KEY; + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KMAC_KEY_CHECK; + } + break; + case 'l': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("el", s + 3) == 0) + return PIDX_KDF_PARAM_LABEL; + break; + case 'n': + if (strcmp("es", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_LANES; + } + } + break; + case 'm': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'k': + if (strcmp("ey", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_MAC_KEY; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_KDF_PARAM_MAC_SIZE; + break; + case '\0': + return PIDX_ALG_PARAM_MAC; + } + break; + case 'n': + if (strcmp("datory-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_MANDATORY_DIGEST; + break; + case 'x': + switch(s[3]) { + default: + break; + case '-': + if (strcmp("size", s + 4) == 0) + return PIDX_PKEY_PARAM_MAX_SIZE; + break; + case '_': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("dinlen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_ADINLEN; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("rly_data", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA; + break; + case 'n': + if (strcmp("tropylen", s + 6) == 0) + return PIDX_DRBG_PARAM_MAX_ENTROPYLEN; + } + break; + case 'f': + if (strcmp("rag_len", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_NONCELEN; + break; + case 'p': + if (strcmp("erslen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_PERSLEN; + break; + case 'r': + if (strcmp("equest", s + 5) == 0) + return PIDX_RAND_PARAM_MAX_REQUEST; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MAX_LENGTH; + break; + case 'm': + if (strcmp("em_bytes", s + 4) == 0) + return PIDX_KDF_PARAM_SCRYPT_MAXMEM; + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'm': + if (strcmp("cost", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_MEMCOST; + break; + case 's': + if (strcmp("sage-encoding", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING; + } + break; + case 'g': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_DIGEST; + break; + case 'p': + if (strcmp("roperties", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_PROPERTIES; + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_MASKGENFUNC; + } + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("alg", s + 3) == 0) + return PIDX_DIGEST_PARAM_MICALG; + break; + case 'n': + switch(s[3]) { + default: + break; + case '_': + switch(s[4]) { + default: + break; + case 'e': + if (strcmp("ntropylen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_ENTROPYLEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_NONCELEN; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MIN_LENGTH; + } + } + break; + case 'l': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + if (strcmp("nput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS; + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED; + } + } + } + } + break; + case 'k': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + switch(s[8]) { + default: + break; + case 'm': + if (strcmp("port_pct_type", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE; + break; + case 'n': + if (strcmp("put_formats", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS; + } + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED; + } + } + } + } + } + } + break; + case 'o': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case '\0': + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE; + } + break; + case 'u': + if (strcmp("le-filename", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_MODULE_FILENAME; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_SIGNATURE_PARAM_MU; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_M; + } + break; + case 'n': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("me", s + 2) == 0) + return PIDX_STORE_PARAM_ISSUER; + break; + case 'o': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("short-mac", s + 3) == 0) + return PIDX_PROV_PARAM_NO_SHORT_MAC; + break; + case 'n': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("type", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_NONCE_TYPE; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_NONCE; + } + } + } + } + break; + case 'u': + if (strcmp("m", s + 2) == 0) + return PIDX_CIPHER_PARAM_NUM; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_N; + } + break; + case 'o': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("ep-label", s + 2) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL; + break; + case 'p': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'n': + if (strcmp("ssl-version", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_VERSION; + break; + case 'r': + if (strcmp("ation", s + 4) == 0) + return PIDX_KEM_PARAM_OPERATION; + } + break; + case 't': + if (strcmp("ions", s + 3) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS; + } + break; + case 'r': + if (strcmp("der", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_ORDER; + } + break; + case 'p': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P2; + } + break; + case 'a': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'm': + if (strcmp("ode", s + 5) == 0) + return PIDX_PKEY_PARAM_PAD_MODE; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_DIGEST_PARAM_PAD_TYPE; + } + break; + case 'd': + if (strcmp("ing", s + 4) == 0) + return PIDX_CIPHER_PARAM_PADDING; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_PAD; + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'u': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYUINFO; + break; + case 'v': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYVINFO; + } + } + } + break; + case 's': + if (strcmp("s", s + 3) == 0) + return PIDX_KDF_PARAM_PASSWORD; + } + break; + case 'b': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("ts", s + 3) == 0) + return PIDX_PKEY_PARAM_FFC_PBITS; + break; + case 'k': + if (strcmp("df2-lower-bound-check", s + 3) == 0) + return PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK; + } + break; + case 'c': + if (strcmp("ounter", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_PCOUNTER; + break; + case 'i': + if (strcmp("peline-tag", s + 2) == 0) + return PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG; + break; + case 'k': + if (strcmp("cs5", s + 2) == 0) + return PIDX_KDF_PARAM_PKCS5; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("nt-format", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT; + break; + case 't': + if (strcmp("ential", s + 3) == 0) + return PIDX_GEN_PARAM_POTENTIAL; + } + break; + case 'r': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("iction_resistance", s + 4) == 0) + return PIDX_DRBG_PARAM_PREDICTION_RESISTANCE; + break; + case 'f': + if (strcmp("ix", s + 4) == 0) + return PIDX_KDF_PARAM_PREFIX; + } + break; + case 'i': + switch(s[3]) { + default: + break; + case 'm': + if (strcmp("es", s + 4) == 0) + return PIDX_PKEY_PARAM_RSA_PRIMES; + break; + case 'v': + switch(s[4]) { + default: + break; + case '_': + if (strcmp("len", s + 5) == 0) + return PIDX_PKEY_PARAM_DH_PRIV_LEN; + break; + case '\0': + return PIDX_PKEY_PARAM_PRIV_KEY; + } + } + break; + case 'o': + switch(s[3]) { + default: + break; + case 'p': + if (strcmp("erties", s + 4) == 0) + return PIDX_STORE_PARAM_PROPERTIES; + break; + case 'v': + if (strcmp("ider-name", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_PROV_NAME; + } + } + break; + case 'u': + if (strcmp("b", s + 2) == 0) + return PIDX_PKEY_PARAM_PUB_KEY; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_P; + } + break; + case 'q': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q2; + } + break; + case 'b': + if (strcmp("its", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_QBITS; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_Q; + break; + case 'x': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_X; + } + break; + case 'y': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_Y; + } + } + break; + case 'r': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'k': + if (strcmp("ey", s + 5) == 0) + return PIDX_CIPHER_PARAM_RANDOM_KEY; + break; + case 'o': + if (strcmp("m_data", s + 5) == 0) + return PIDX_DRBG_PARAM_RANDOM_DATA; + } + } + break; + case 'w': + if (strcmp("-bytes", s + 3) == 0) + return PIDX_SKEY_PARAM_RAW_BYTES; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case '_': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("head", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD; + break; + case 'b': + if (strcmp("uffer_len", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN; + } + } + } + break; + case 'f': + if (strcmp("erence", s + 3) == 0) + return PIDX_OBJECT_PARAM_REFERENCE; + break; + case 's': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case '_': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("ounter", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_COUNTER; + break; + case 'r': + if (strcmp("equests", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_REQUESTS; + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case 'm': + switch(s[10]) { + default: + break; + case 'e': + switch(s[11]) { + default: + break; + case '_': + if (strcmp("interval", s + 12) == 0) + return PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL; + break; + case '\0': + return PIDX_DRBG_PARAM_RESEED_TIME; + } + } + } + } + } + } + } + } + } + } + break; + case 'o': + if (strcmp("unds", s + 2) == 0) + return PIDX_CIPHER_PARAM_ROUNDS; + break; + case 's': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + switch(s[5]) { + default: + break; + case 'o': + switch(s[6]) { + default: + break; + case 'e': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case 'i': + switch(s[10]) { + default: + break; + case 'c': + switch(s[11]) { + default: + break; + case 'i': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'n': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case '1': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT1; + } + break; + case '2': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT2; + } + break; + case '3': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT3; + } + break; + case '4': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT4; + } + break; + case '5': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT5; + } + break; + case '6': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT6; + } + break; + case '7': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT7; + } + break; + case '8': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT8; + } + break; + case '9': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'd': + if (strcmp("erive-from-pq", s + 5) == 0) + return PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'x': + switch(s[6]) { + default: + break; + case 'p': + switch(s[7]) { + default: + break; + case 'o': + switch(s[8]) { + default: + break; + case 'n': + switch(s[9]) { + default: + break; + case 'e': + switch(s[10]) { + default: + break; + case 'n': + switch(s[11]) { + default: + break; + case 't': + switch(s[12]) { + default: + break; + case '1': + switch(s[13]) { + default: + break; + case '0': + switch(s[14]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT1; + } + break; + case '2': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT2; + } + break; + case '3': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT3; + } + break; + case '4': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT4; + } + break; + case '5': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT5; + } + break; + case '6': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT6; + } + break; + case '7': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT7; + } + break; + case '8': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT8; + } + break; + case '9': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT; + } + } + } + } + } + } + } + } + break; + case 'f': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'o': + switch(s[9]) { + default: + break; + case 'r': + switch(s[10]) { + default: + break; + case '1': + switch(s[11]) { + default: + break; + case '0': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR1; + } + break; + case '2': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR2; + } + break; + case '3': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR3; + } + break; + case '4': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR4; + } + break; + case '5': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR5; + } + break; + case '6': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR6; + } + break; + case '7': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR7; + } + break; + case '8': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR8; + } + break; + case '9': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR; + } + } + } + } + } + } + break; + case 'p': + switch(s[5]) { + default: + break; + case 'k': + if (strcmp("cs15-pad-disabled", s + 6) == 0) + return PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED; + break; + case 's': + if (strcmp("s-saltlen-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK; + } + break; + case 's': + if (strcmp("ign-x931-pad-disabled", s + 5) == 0) + return PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED; + } + } + } + break; + case '\0': + return PIDX_KDF_PARAM_SCRYPT_R; + } + break; + case 's': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("eprime-generator", s + 3) == 0) + return PIDX_PKEY_PARAM_DH_GENERATOR; + break; + case 'l': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'l': + if (strcmp("en", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_PSS_SALTLEN; + break; + case '\0': + return PIDX_MAC_PARAM_SALT; + } + } + break; + case 'v': + if (strcmp("e-parameters", s + 3) == 0) + return PIDX_ENCODER_PARAM_SAVE_PARAMETERS; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'r': + if (strcmp("et", s + 4) == 0) + return PIDX_KDF_PARAM_SECRET; + break; + case 'u': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'y': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'b': + if (strcmp("its", s + 10) == 0) + return PIDX_PKEY_PARAM_SECURITY_BITS; + break; + case 'c': + if (strcmp("hecks", s + 10) == 0) + return PIDX_PROV_PARAM_SECURITY_CHECKS; + } + } + } + } + } + } + } + break; + case 'e': + if (strcmp("d", s + 3) == 0) + return PIDX_PKEY_PARAM_SLH_DSA_SEED; + break; + case 'r': + if (strcmp("ial", s + 3) == 0) + return PIDX_STORE_PARAM_SERIAL; + break; + case 's': + if (strcmp("sion_id", s + 3) == 0) + return PIDX_KDF_PARAM_SSHKDF_SESSION_ID; + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'n': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + if (strcmp("heck", s + 6) == 0) + return PIDX_PKEY_PARAM_FIPS_SIGN_CHECK; + break; + case 'x': + if (strcmp("931-pad-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK; + } + break; + case 'a': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case 'u': + switch(s[7]) { + default: + break; + case 'r': + switch(s[8]) { + default: + break; + case 'e': + switch(s[9]) { + default: + break; + case '-': + if (strcmp("digest-check", s + 10) == 0) + return PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK; + break; + case '\0': + return PIDX_SIGNATURE_PARAM_SIGNATURE; + } + } + } + } + } + } + } + break; + case 'z': + if (strcmp("e", s + 3) == 0) + return PIDX_MAC_PARAM_SIZE; + } + break; + case 'p': + if (strcmp("eed", s + 2) == 0) + return PIDX_CIPHER_PARAM_SPEED; + break; + case 's': + switch(s[2]) { + default: + break; + case 'h': + switch(s[3]) { + default: + break; + case 'k': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'f': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_KEY_CHECK; + } + } + } + } + } + break; + case 'k': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'f': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_KEY_CHECK; + } + } + } + } + break; + case 'l': + if (strcmp("3-ms", s + 3) == 0) + return PIDX_DIGEST_PARAM_SSL3_MS; + } + break; + case 't': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("esc", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_DESC; + break; + case 'p': + if (strcmp("hase", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_PHASE; + break; + case 't': + if (strcmp("ype", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_TYPE; + } + break; + case 'a': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_STATE; + } + break; + case 'u': + if (strcmp("s", s + 5) == 0) + return PIDX_PROV_PARAM_STATUS; + } + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("m_mac", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC; + break; + case 'n': + if (strcmp("gth", s + 5) == 0) + return PIDX_RAND_PARAM_STRENGTH; + } + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("ject", s + 3) == 0) + return PIDX_STORE_PARAM_SUBJECT; + break; + case 'p': + switch(s[3]) { + default: + break; + case 'p': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + if (strcmp("ivinfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PRIVINFO; + break; + case 'u': + if (strcmp("binfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PUBINFO; + } + } + } + } + } + } + break; + case 't': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_TAGLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TAG; + } + } + break; + case 'd': + if (strcmp("es-encrypt-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED; + break; + case 'e': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case '-': + if (strcmp("entropy", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_TEST_ENTROPY; + break; + case '_': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("ntropy", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_ENTROPY; + break; + case 'n': + if (strcmp("once", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_NONCE; + } + } + } + } + break; + case 'h': + if (strcmp("reads", s + 2) == 0) + return PIDX_KDF_PARAM_THREADS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("lient-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION; + break; + case 'd': + if (strcmp("ata-size", s + 5) == 0) + return PIDX_MAC_PARAM_TLS_DATA_SIZE; + break; + case 'g': + switch(s[5]) { + default: + break; + case 'r': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'u': + switch(s[8]) { + default: + break; + case 'p': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'a': + if (strcmp("lg", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_ALG; + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_ID; + } + break; + case 's': + if (strcmp("-kem", s + 12) == 0) + return PIDX_CAPABILITY_TLS_GROUP_IS_KEM; + } + break; + case 'n': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'm': + switch(s[13]) { + default: + break; + case 'e': + switch(s[14]) { + default: + break; + case '-': + if (strcmp("internal", s + 15) == 0) + return PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL; + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_NAME; + } + } + } + } + break; + case 's': + if (strcmp("ec-bits", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case '-': + if (strcmp("size", s + 8) == 0) + return PIDX_CIPHER_PARAM_TLS_MAC_SIZE; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS_MAC; + } + break; + case 'x': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS; + } + } + } + break; + case 'i': + switch(s[6]) { + default: + break; + case 'n': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS; + } + } + } + break; + case 'u': + if (strcmp("lti", s + 6) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK; + } + break; + case 'n': + if (strcmp("egotiated-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION; + break; + case 's': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'a': + switch(s[8]) { + default: + break; + case 'l': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '-': + switch(s[11]) { + default: + break; + case 'c': + if (strcmp("ode-point", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT; + break; + case 'h': + switch(s[12]) { + default: + break; + case 'a': + switch(s[13]) { + default: + break; + case 's': + switch(s[14]) { + default: + break; + case 'h': + switch(s[15]) { + default: + break; + case '-': + switch(s[16]) { + default: + break; + case 'n': + if (strcmp("ame", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME; + break; + case 'o': + if (strcmp("id", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_OID; + } + } + } + } + } + break; + case 'i': + if (strcmp("ana-name", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME; + break; + case 'k': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'y': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case 'y': + switch(s[16]) { + default: + break; + case 'p': + switch(s[17]) { + default: + break; + case 'e': + switch(s[18]) { + default: + break; + case '-': + if (strcmp("oid", s + 19) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID; + break; + case '\0': + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE; + } + } + } + } + } + } + } + break; + case 'n': + if (strcmp("ame", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_NAME; + break; + case 'o': + if (strcmp("id", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_OID; + break; + case 's': + switch(s[12]) { + default: + break; + case 'e': + if (strcmp("c-bits", s + 13) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS; + break; + case 'i': + switch(s[13]) { + default: + break; + case 'g': + switch(s[14]) { + default: + break; + case '-': + switch(s[15]) { + default: + break; + case 'n': + if (strcmp("ame", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME; + break; + case 'o': + if (strcmp("id", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_OID; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'v': + if (strcmp("ersion", s + 5) == 0) + return PIDX_CIPHER_PARAM_TLS_VERSION; + } + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK; + break; + case 'e': + if (strcmp("ms-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK; + } + } + } + } + } + break; + case '3': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'k': + switch(s[7]) { + default: + break; + case 'd': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'u': + switch(s[6]) { + default: + break; + case 'l': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case '_': + switch(s[10]) { + default: + break; + case 'a': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'd': + switch(s[13]) { + default: + break; + case 'p': + if (strcmp("acklen", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD; + } + } + } + break; + case 'e': + switch(s[11]) { + default: + break; + case 'n': + switch(s[12]) { + default: + break; + case 'c': + switch(s[13]) { + default: + break; + case 'i': + if (strcmp("n", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN; + break; + case 'l': + if (strcmp("en", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC; + } + } + } + break; + case 'i': + if (strcmp("nterleave", s + 11) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE; + break; + case 'm': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'x': + switch(s[13]) { + default: + break; + case 'b': + if (strcmp("ufsz", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE; + break; + case 's': + if (strcmp("ndfrag", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT; + } + } + } + } + } + } + } + } + } + } + break; + case 'a': + switch(s[4]) { + default: + break; + case 'a': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'p': + if (strcmp("ad", s + 7) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD; + } + } + } + break; + case 'i': + switch(s[4]) { + default: + break; + case 'v': + switch(s[5]) { + default: + break; + case 'f': + if (strcmp("ixed", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED; + break; + case 'g': + if (strcmp("en", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN; + break; + case 'i': + if (strcmp("nv", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV; + } + } + break; + case 't': + if (strcmp("ree", s + 4) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS; + } + break; + case 'y': + if (strcmp("pe", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_TYPE; + } + break; + case 'u': + switch(s[1]) { + default: + break; + case 'k': + if (strcmp("m", s + 2) == 0) + return PIDX_KDF_PARAM_UKM; + break; + case 'p': + if (strcmp("dated-iv", s + 2) == 0) + return PIDX_CIPHER_PARAM_UPDATED_IV; + break; + case 's': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'b': + if (strcmp("its", s + 5) == 0) + return PIDX_CIPHER_PARAM_USE_BITS; + break; + case 'c': + if (strcmp("ofactor-flag", s + 5) == 0) + return PIDX_PKEY_PARAM_USE_COFACTOR_FLAG; + break; + case 'k': + if (strcmp("eybits", s + 5) == 0) + return PIDX_KDF_PARAM_X942_USE_KEYBITS; + break; + case 'l': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_KBKDF_USE_L; + } + break; + case 's': + if (strcmp("eparator", s + 5) == 0) + return PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR; + } + break; + case '_': + switch(s[4]) { + default: + break; + case 'd': + if (strcmp("erivation_function", s + 5) == 0) + return PIDX_DRBG_PARAM_USE_DF; + break; + case 'e': + if (strcmp("tm", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM; + } + } + } + } + break; + case 'v': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'l': + switch(s[3]) { + default: + break; + case 'i': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_VALIDATE_G; + } + break; + case 'l': + if (strcmp("egacy", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY; + break; + case 'p': + if (strcmp("q", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_PQ; + } + } + } + } + } + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'r': + switch(s[3]) { + default: + break; + case 'i': + if (strcmp("fy-message", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE; + break; + case 's': + if (strcmp("ion", s + 4) == 0) + return PIDX_PROV_PARAM_VERSION; + } + } + } + break; + case 'x': + switch(s[1]) { + default: + break; + case '9': + switch(s[2]) { + default: + break; + case '4': + if (strcmp("2kdf-key-check", s + 3) == 0) + return PIDX_PROV_PARAM_X942KDF_KEY_CHECK; + break; + case '6': + switch(s[3]) { + default: + break; + case '3': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'f': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_KEY_CHECK; + } + } + } + } + } + } + } + break; + case 'c': + if (strcmp("ghash", s + 2) == 0) + return PIDX_KDF_PARAM_SSHKDF_XCGHASH; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_DIGEST_PARAM_XOFLEN; + break; + case '\0': + return PIDX_MAC_PARAM_XOF; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP; + } + break; + case 'q': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ; + } + break; + case 't': + if (strcmp("s_standard", s + 2) == 0) + return PIDX_CIPHER_PARAM_XTS_STANDARD; + } + } + return -1; +} + +/* End of TRIE */ diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/poly1305/poly1305-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/poly1305/poly1305-x86_64.s index 9f9df19a3707b3..140884bb25c3c8 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/poly1305/poly1305-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/poly1305/poly1305-x86_64.s @@ -50,6 +50,7 @@ poly1305_init: .align 32 poly1305_blocks: .cfi_startproc +.byte 243,15,30,250 .Lblocks: shrq $4,%rdx jz .Lno_data @@ -165,6 +166,7 @@ poly1305_blocks: .align 32 poly1305_emit: .cfi_startproc +.byte 243,15,30,250 .Lemit: movq 0(%rdi),%r8 movq 8(%rdi),%r9 @@ -401,6 +403,7 @@ __poly1305_init_avx: .align 32 poly1305_blocks_avx: .cfi_startproc +.byte 243,15,30,250 movl 20(%rdi),%r8d cmpq $128,%rdx jae .Lblocks_avx @@ -1236,6 +1239,7 @@ poly1305_blocks_avx: .align 32 poly1305_emit_avx: .cfi_startproc +.byte 243,15,30,250 cmpl $0,20(%rdi) je .Lemit @@ -1292,6 +1296,7 @@ poly1305_emit_avx: .align 32 poly1305_blocks_avx2: .cfi_startproc +.byte 243,15,30,250 movl 20(%rdi),%r8d cmpq $128,%rdx jae .Lblocks_avx2 @@ -1932,6 +1937,7 @@ poly1305_blocks_avx2: .byte 0xf3,0xc3 .cfi_endproc .size poly1305_blocks_avx2,.-poly1305_blocks_avx2 +.section .rodata .align 64 .Lconst: .Lmask24: @@ -1963,6 +1969,7 @@ poly1305_blocks_avx2: .Lx_mask42: .quad 0x3ffffffffff,0x3ffffffffff,0x3ffffffffff,0x3ffffffffff .quad 0x3ffffffffff,0x3ffffffffff,0x3ffffffffff,0x3ffffffffff +.previous .byte 80,111,108,121,49,51,48,53,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 16 .globl xor128_encrypt_n_pad diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/sha/keccak1600-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/sha/keccak1600-x86_64.s index bb5222b73bc00a..021d34601ffc07 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/sha/keccak1600-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/sha/keccak1600-x86_64.s @@ -447,10 +447,12 @@ SHA3_squeeze: .cfi_offset %r14,-32 shrq $3,%rcx - movq %rdi,%r8 + movq %rdi,%r9 movq %rsi,%r12 movq %rdx,%r13 movq %rcx,%r14 + btl $0,%r8d + jc .Lnext_block jmp .Loop_squeeze .align 32 @@ -458,8 +460,8 @@ SHA3_squeeze: cmpq $8,%r13 jb .Ltail_squeeze - movq (%r8),%rax - leaq 8(%r8),%r8 + movq (%r9),%rax + leaq 8(%r9),%r9 movq %rax,(%r12) leaq 8(%r12),%r12 subq $8,%r13 @@ -467,14 +469,14 @@ SHA3_squeeze: subq $1,%rcx jnz .Loop_squeeze - +.Lnext_block: call KeccakF1600 - movq %rdi,%r8 + movq %rdi,%r9 movq %r14,%rcx jmp .Loop_squeeze .Ltail_squeeze: - movq %r8,%rsi + movq %r9,%rsi movq %r12,%rdi movq %r13,%rcx .byte 0xf3,0xa4 @@ -492,6 +494,7 @@ SHA3_squeeze: .byte 0xf3,0xc3 .cfi_endproc .size SHA3_squeeze,.-SHA3_squeeze +.section .rodata .align 256 .quad 0,0,0,0,0,0,0,0 .type iotas,@object diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/sha/sha1-mb-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/sha/sha1-mb-x86_64.s index b835e0b6c95953..012a5094ac38d8 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/sha/sha1-mb-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/sha/sha1-mb-x86_64.s @@ -7286,7 +7286,7 @@ _avx2_shortcut: .byte 0xf3,0xc3 .cfi_endproc .size sha1_multi_block_avx2,.-sha1_multi_block_avx2 - +.section .rodata .align 256 .long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 .long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 @@ -7301,6 +7301,7 @@ K_XX_XX: .long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f .byte 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0 .byte 83,72,65,49,32,109,117,108,116,105,45,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.previous .section ".note.gnu.property", "a" .p2align 3 .long 1f - 0f diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/sha/sha1-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/sha/sha1-x86_64.s index 85e9a2909f8aff..234e625cfe8ad5 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/sha/sha1-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/sha/sha1-x86_64.s @@ -5433,6 +5433,7 @@ _avx2_shortcut: .byte 0xf3,0xc3 .cfi_endproc .size sha1_block_data_order_avx2,.-sha1_block_data_order_avx2 +.section .rodata .align 64 K_XX_XX: .long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 @@ -5446,6 +5447,7 @@ K_XX_XX: .long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f .long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f .byte 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0 +.previous .byte 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 64 .section ".note.gnu.property", "a" diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/sha/sha256-mb-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/sha/sha256-mb-x86_64.s index 8ac342f9ceb6c8..aabed290b1c350 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/sha/sha256-mb-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/sha/sha256-mb-x86_64.s @@ -7831,6 +7831,7 @@ _avx2_shortcut: .byte 0xf3,0xc3 .cfi_endproc .size sha256_multi_block_avx2,.-sha256_multi_block_avx2 +.section .rodata .align 256 K256: .long 1116352408,1116352408,1116352408,1116352408 @@ -7982,6 +7983,7 @@ K256_shaext: .long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 .long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 .byte 83,72,65,50,53,54,32,109,117,108,116,105,45,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.previous .section ".note.gnu.property", "a" .p2align 3 .long 1f - 0f diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/sha/sha256-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/sha/sha256-x86_64.s index e82bbec164f843..cb42c58633d88e 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/sha/sha256-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/sha/sha256-x86_64.s @@ -1728,6 +1728,7 @@ sha256_block_data_order: .byte 0xf3,0xc3 .cfi_endproc .size sha256_block_data_order,.-sha256_block_data_order +.section .rodata .align 64 .type K256,@object K256: @@ -1771,6 +1772,7 @@ K256: .long 0xffffffff,0xffffffff,0x03020100,0x0b0a0908 .long 0xffffffff,0xffffffff,0x03020100,0x0b0a0908 .byte 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.previous .type sha256_block_data_order_shaext,@function .align 64 sha256_block_data_order_shaext: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/sha/sha512-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/sha/sha512-x86_64.s index a76d017ba764b7..880b3fdbac34be 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/sha/sha512-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/sha/sha512-x86_64.s @@ -1726,6 +1726,7 @@ sha512_block_data_order: .byte 0xf3,0xc3 .cfi_endproc .size sha512_block_data_order,.-sha512_block_data_order +.section .rodata .align 64 .type K512,@object K512: @@ -1813,6 +1814,7 @@ K512: .quad 0x0001020304050607,0x08090a0b0c0d0e0f .quad 0x0001020304050607,0x08090a0b0c0d0e0f .byte 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.previous .type sha512_block_data_order_xop,@function .align 64 sha512_block_data_order_xop: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/whrlpool/wp-x86_64.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/whrlpool/wp-x86_64.s index 5e236f9481856c..172459c6403d7b 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/whrlpool/wp-x86_64.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/whrlpool/wp-x86_64.s @@ -608,6 +608,7 @@ whirlpool_block: .cfi_endproc .size whirlpool_block,.-whirlpool_block +.section .rodata .align 64 .type .Ltable,@object .Ltable: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/x86_64cpuid.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/x86_64cpuid.s index 6a5180311ccca8..a4e5a58e1a3af2 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/x86_64cpuid.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/x86_64cpuid.s @@ -1,11 +1,11 @@ + .hidden OPENSSL_cpuid_setup .section .init call OPENSSL_cpuid_setup .hidden OPENSSL_ia32cap_P -.comm OPENSSL_ia32cap_P,16,4 - +.comm OPENSSL_ia32cap_P,40,4 .text .globl OPENSSL_atomic_add @@ -163,6 +163,7 @@ OPENSSL_ia32_cpuid: movl $7,%eax xorl %ecx,%ecx cpuid + movd %eax,%xmm1 btl $26,%r9d jc .Lnotknights andl $0xfff7ffff,%ebx @@ -173,9 +174,31 @@ OPENSSL_ia32_cpuid: jne .Lnotskylakex andl $0xfffeffff,%ebx + .Lnotskylakex: movl %ebx,8(%rdi) movl %ecx,12(%rdi) + movl %edx,16(%rdi) + + movd %xmm1,%eax + cmpl $0x1,%eax + jb .Lno_extended_info + movl $0x7,%eax + movl $0x1,%ecx + cpuid + movl %eax,20(%rdi) + movl %edx,24(%rdi) + movl %ebx,28(%rdi) + movl %ecx,32(%rdi) + + andl $0x80000,%edx + cmpl $0x0,%edx + je .Lno_extended_info + movl $0x24,%eax + movl $0x0,%ecx + cpuid + movl %ebx,36(%rdi) + .Lno_extended_info: btl $27,%r9d @@ -194,6 +217,9 @@ OPENSSL_ia32_cpuid: cmpl $6,%eax je .Ldone .Lclear_avx: + andl $0xff7fffff,20(%rdi) + + movl $0xefffe7ff,%eax andl %eax,%r9d movl $0x3fdeffdf,%eax diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/internal/param_names.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/internal/param_names.h new file mode 100644 index 00000000000000..0a0404a57e82b9 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/internal/param_names.h @@ -0,0 +1,469 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/internal/param_names.h.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +int ossl_param_find_pidx(const char *s); + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +#define NUM_PIDX 346 + +#define PIDX_ALG_PARAM_ALGORITHM_ID 0 +#define PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS 1 +#define PIDX_ALG_PARAM_CIPHER 2 +#define PIDX_ALG_PARAM_DIGEST 3 +#define PIDX_ALG_PARAM_ENGINE 4 +#define PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR 5 +#define PIDX_ALG_PARAM_MAC 6 +#define PIDX_ALG_PARAM_PROPERTIES 7 +#define PIDX_ASYM_CIPHER_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_ENGINE PIDX_PKEY_PARAM_ENGINE +#define PIDX_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +#define PIDX_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS 9 +#define PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL 10 +#define PIDX_ASYM_CIPHER_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_ASYM_CIPHER_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION 11 +#define PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION 12 +#define PIDX_CAPABILITY_TLS_GROUP_ALG 13 +#define PIDX_CAPABILITY_TLS_GROUP_ID 14 +#define PIDX_CAPABILITY_TLS_GROUP_IS_KEM 15 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_GROUP_NAME 20 +#define PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL 21 +#define PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS 22 +#define PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT 23 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME 24 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_OID 25 +#define PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME 26 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE 27 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID 28 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_SIGALG_NAME 29 +#define PIDX_CAPABILITY_TLS_SIGALG_OID 30 +#define PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS 31 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME 32 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_OID 33 +#define PIDX_CIPHER_PARAM_AEAD 34 +#define PIDX_CIPHER_PARAM_AEAD_IVLEN PIDX_CIPHER_PARAM_IVLEN +#define PIDX_CIPHER_PARAM_AEAD_IV_GENERATED 35 +#define PIDX_CIPHER_PARAM_AEAD_MAC_KEY 36 +#define PIDX_CIPHER_PARAM_AEAD_TAG 37 +#define PIDX_CIPHER_PARAM_AEAD_TAGLEN 38 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD 39 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD 40 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN 41 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED 42 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV 43 +#define PIDX_CIPHER_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD 44 +#define PIDX_CIPHER_PARAM_BLOCK_SIZE 45 +#define PIDX_CIPHER_PARAM_CTS 46 +#define PIDX_CIPHER_PARAM_CTS_MODE 47 +#define PIDX_CIPHER_PARAM_CUSTOM_IV 48 +#define PIDX_CIPHER_PARAM_DECRYPT_ONLY 49 +#define PIDX_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK 50 +#define PIDX_CIPHER_PARAM_HAS_RAND_KEY 51 +#define PIDX_CIPHER_PARAM_IV 52 +#define PIDX_CIPHER_PARAM_IVLEN 53 +#define PIDX_CIPHER_PARAM_KEYLEN 54 +#define PIDX_CIPHER_PARAM_MODE 55 +#define PIDX_CIPHER_PARAM_NUM 56 +#define PIDX_CIPHER_PARAM_PADDING 57 +#define PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG 58 +#define PIDX_CIPHER_PARAM_RANDOM_KEY 59 +#define PIDX_CIPHER_PARAM_RC2_KEYBITS 60 +#define PIDX_CIPHER_PARAM_ROUNDS 61 +#define PIDX_CIPHER_PARAM_SPEED 62 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK 63 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD 64 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN 65 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC 66 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN 67 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN 68 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE 69 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE 70 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT 71 +#define PIDX_CIPHER_PARAM_TLS_MAC 72 +#define PIDX_CIPHER_PARAM_TLS_MAC_SIZE 73 +#define PIDX_CIPHER_PARAM_TLS_VERSION 74 +#define PIDX_CIPHER_PARAM_UPDATED_IV 75 +#define PIDX_CIPHER_PARAM_USE_BITS 76 +#define PIDX_CIPHER_PARAM_XTS_STANDARD 77 +#define PIDX_DECODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DIGEST_PARAM_ALGID_ABSENT 78 +#define PIDX_DIGEST_PARAM_BLOCK_SIZE 45 +#define PIDX_DIGEST_PARAM_MICALG 79 +#define PIDX_DIGEST_PARAM_PAD_TYPE 80 +#define PIDX_DIGEST_PARAM_SIZE 81 +#define PIDX_DIGEST_PARAM_SSL3_MS 82 +#define PIDX_DIGEST_PARAM_XOF 83 +#define PIDX_DIGEST_PARAM_XOFLEN 84 +#define PIDX_DRBG_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_DRBG_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_DRBG_PARAM_ENTROPY_REQUIRED 85 +#define PIDX_DRBG_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_DRBG_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_DRBG_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_DRBG_PARAM_MAX_ADINLEN 86 +#define PIDX_DRBG_PARAM_MAX_ENTROPYLEN 87 +#define PIDX_DRBG_PARAM_MAX_LENGTH 88 +#define PIDX_DRBG_PARAM_MAX_NONCELEN 89 +#define PIDX_DRBG_PARAM_MAX_PERSLEN 90 +#define PIDX_DRBG_PARAM_MIN_ENTROPYLEN 91 +#define PIDX_DRBG_PARAM_MIN_LENGTH 92 +#define PIDX_DRBG_PARAM_MIN_NONCELEN 93 +#define PIDX_DRBG_PARAM_PREDICTION_RESISTANCE 94 +#define PIDX_DRBG_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DRBG_PARAM_RANDOM_DATA 95 +#define PIDX_DRBG_PARAM_RESEED_COUNTER 96 +#define PIDX_DRBG_PARAM_RESEED_REQUESTS 97 +#define PIDX_DRBG_PARAM_RESEED_TIME 98 +#define PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL 99 +#define PIDX_DRBG_PARAM_SIZE 81 +#define PIDX_DRBG_PARAM_USE_DF 100 +#define PIDX_ENCODER_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_ENCODER_PARAM_ENCRYPT_LEVEL 101 +#define PIDX_ENCODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_ENCODER_PARAM_SAVE_PARAMETERS 102 +#define PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE 103 +#define PIDX_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_EXCHANGE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST 104 +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS 105 +#define PIDX_EXCHANGE_PARAM_KDF_OUTLEN 106 +#define PIDX_EXCHANGE_PARAM_KDF_TYPE 107 +#define PIDX_EXCHANGE_PARAM_KDF_UKM 108 +#define PIDX_EXCHANGE_PARAM_PAD 109 +#define PIDX_GEN_PARAM_ITERATION 110 +#define PIDX_GEN_PARAM_POTENTIAL 111 +#define PIDX_KDF_PARAM_ARGON2_AD 112 +#define PIDX_KDF_PARAM_ARGON2_LANES 113 +#define PIDX_KDF_PARAM_ARGON2_MEMCOST 114 +#define PIDX_KDF_PARAM_ARGON2_VERSION 115 +#define PIDX_KDF_PARAM_CEK_ALG 116 +#define PIDX_KDF_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_KDF_PARAM_CONSTANT 117 +#define PIDX_KDF_PARAM_DATA 118 +#define PIDX_KDF_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_KDF_PARAM_EARLY_CLEAN 119 +#define PIDX_KDF_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KDF_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_KDF_PARAM_FIPS_EMS_CHECK 120 +#define PIDX_KDF_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KDF_PARAM_HMACDRBG_ENTROPY 121 +#define PIDX_KDF_PARAM_HMACDRBG_NONCE 122 +#define PIDX_KDF_PARAM_INFO 123 +#define PIDX_KDF_PARAM_ITER 124 +#define PIDX_KDF_PARAM_KBKDF_R 125 +#define PIDX_KDF_PARAM_KBKDF_USE_L 126 +#define PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR 127 +#define PIDX_KDF_PARAM_KEY 128 +#define PIDX_KDF_PARAM_LABEL 129 +#define PIDX_KDF_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_KDF_PARAM_MAC_SIZE 130 +#define PIDX_KDF_PARAM_MODE 55 +#define PIDX_KDF_PARAM_PASSWORD 131 +#define PIDX_KDF_PARAM_PKCS12_ID 132 +#define PIDX_KDF_PARAM_PKCS5 133 +#define PIDX_KDF_PARAM_PREFIX 134 +#define PIDX_KDF_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_KDF_PARAM_SALT 135 +#define PIDX_KDF_PARAM_SCRYPT_MAXMEM 136 +#define PIDX_KDF_PARAM_SCRYPT_N 137 +#define PIDX_KDF_PARAM_SCRYPT_P 138 +#define PIDX_KDF_PARAM_SCRYPT_R 125 +#define PIDX_KDF_PARAM_SECRET 139 +#define PIDX_KDF_PARAM_SEED 140 +#define PIDX_KDF_PARAM_SIZE 81 +#define PIDX_KDF_PARAM_SSHKDF_SESSION_ID 141 +#define PIDX_KDF_PARAM_SSHKDF_TYPE 142 +#define PIDX_KDF_PARAM_SSHKDF_XCGHASH 143 +#define PIDX_KDF_PARAM_THREADS 144 +#define PIDX_KDF_PARAM_UKM 145 +#define PIDX_KDF_PARAM_X942_ACVPINFO 146 +#define PIDX_KDF_PARAM_X942_PARTYUINFO 147 +#define PIDX_KDF_PARAM_X942_PARTYVINFO 148 +#define PIDX_KDF_PARAM_X942_SUPP_PRIVINFO 149 +#define PIDX_KDF_PARAM_X942_SUPP_PUBINFO 150 +#define PIDX_KDF_PARAM_X942_USE_KEYBITS 151 +#define PIDX_KEM_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KEM_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KEM_PARAM_IKME 152 +#define PIDX_KEM_PARAM_OPERATION 153 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING 154 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING 155 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA 156 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN 157 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE 55 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS 158 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD 159 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC 160 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE 161 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM 162 +#define PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN 163 +#define PIDX_MAC_PARAM_BLOCK_SIZE 164 +#define PIDX_MAC_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_MAC_PARAM_CUSTOM 165 +#define PIDX_MAC_PARAM_C_ROUNDS 166 +#define PIDX_MAC_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_MAC_PARAM_DIGEST_NOINIT 167 +#define PIDX_MAC_PARAM_DIGEST_ONESHOT 168 +#define PIDX_MAC_PARAM_D_ROUNDS 169 +#define PIDX_MAC_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_MAC_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_MAC_PARAM_FIPS_NO_SHORT_MAC PIDX_PROV_PARAM_NO_SHORT_MAC +#define PIDX_MAC_PARAM_IV 52 +#define PIDX_MAC_PARAM_KEY 128 +#define PIDX_MAC_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_MAC_PARAM_SALT 135 +#define PIDX_MAC_PARAM_SIZE 81 +#define PIDX_MAC_PARAM_TLS_DATA_SIZE 170 +#define PIDX_MAC_PARAM_XOF 83 +#define PIDX_OBJECT_PARAM_DATA 118 +#define PIDX_OBJECT_PARAM_DATA_STRUCTURE 171 +#define PIDX_OBJECT_PARAM_DATA_TYPE 172 +#define PIDX_OBJECT_PARAM_DESC 173 +#define PIDX_OBJECT_PARAM_INPUT_TYPE 174 +#define PIDX_OBJECT_PARAM_REFERENCE 175 +#define PIDX_OBJECT_PARAM_TYPE 142 +#define PIDX_PASSPHRASE_PARAM_INFO 123 +#define PIDX_PKEY_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_PKEY_PARAM_BITS 176 +#define PIDX_PKEY_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_PKEY_PARAM_DEFAULT_DIGEST 177 +#define PIDX_PKEY_PARAM_DHKEM_IKM 178 +#define PIDX_PKEY_PARAM_DH_GENERATOR 179 +#define PIDX_PKEY_PARAM_DH_PRIV_LEN 180 +#define PIDX_PKEY_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_PKEY_PARAM_DIGEST_SIZE 181 +#define PIDX_PKEY_PARAM_DIST_ID 182 +#define PIDX_PKEY_PARAM_EC_A 183 +#define PIDX_PKEY_PARAM_EC_B 184 +#define PIDX_PKEY_PARAM_EC_CHAR2_M 185 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K1 186 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K2 187 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K3 188 +#define PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS 189 +#define PIDX_PKEY_PARAM_EC_CHAR2_TYPE 190 +#define PIDX_PKEY_PARAM_EC_COFACTOR 191 +#define PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS 192 +#define PIDX_PKEY_PARAM_EC_ENCODING 193 +#define PIDX_PKEY_PARAM_EC_FIELD_TYPE 194 +#define PIDX_PKEY_PARAM_EC_GENERATOR 195 +#define PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE 196 +#define PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC 197 +#define PIDX_PKEY_PARAM_EC_ORDER 198 +#define PIDX_PKEY_PARAM_EC_P 138 +#define PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT 199 +#define PIDX_PKEY_PARAM_EC_PUB_X 200 +#define PIDX_PKEY_PARAM_EC_PUB_Y 201 +#define PIDX_PKEY_PARAM_EC_SEED 140 +#define PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY 202 +#define PIDX_PKEY_PARAM_ENGINE PIDX_ALG_PARAM_ENGINE +#define PIDX_PKEY_PARAM_FFC_COFACTOR 203 +#define PIDX_PKEY_PARAM_FFC_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_FFC_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_FFC_G 204 +#define PIDX_PKEY_PARAM_FFC_GINDEX 205 +#define PIDX_PKEY_PARAM_FFC_H 206 +#define PIDX_PKEY_PARAM_FFC_P 138 +#define PIDX_PKEY_PARAM_FFC_PBITS 207 +#define PIDX_PKEY_PARAM_FFC_PCOUNTER 208 +#define PIDX_PKEY_PARAM_FFC_Q 209 +#define PIDX_PKEY_PARAM_FFC_QBITS 210 +#define PIDX_PKEY_PARAM_FFC_SEED 140 +#define PIDX_PKEY_PARAM_FFC_TYPE 142 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_G 211 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY 212 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_PQ 213 +#define PIDX_PKEY_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK 214 +#define PIDX_PKEY_PARAM_FIPS_KEY_CHECK 215 +#define PIDX_PKEY_PARAM_FIPS_SIGN_CHECK 216 +#define PIDX_PKEY_PARAM_GROUP_NAME 217 +#define PIDX_PKEY_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_PKEY_PARAM_MANDATORY_DIGEST 218 +#define PIDX_PKEY_PARAM_MASKGENFUNC 219 +#define PIDX_PKEY_PARAM_MAX_SIZE 220 +#define PIDX_PKEY_PARAM_MGF1_DIGEST 221 +#define PIDX_PKEY_PARAM_MGF1_PROPERTIES 222 +#define PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS 223 +#define PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS 224 +#define PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED 225 +#define PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED 226 +#define PIDX_PKEY_PARAM_ML_DSA_SEED 140 +#define PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE 227 +#define PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS 228 +#define PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS 229 +#define PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED 230 +#define PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED 231 +#define PIDX_PKEY_PARAM_ML_KEM_SEED 140 +#define PIDX_PKEY_PARAM_PAD_MODE 232 +#define PIDX_PKEY_PARAM_PRIV_KEY 233 +#define PIDX_PKEY_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_PUB_KEY 234 +#define PIDX_PKEY_PARAM_RSA_BITS PIDX_PKEY_PARAM_BITS +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT 235 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT1 236 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT2 237 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT3 238 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT4 239 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT5 240 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT6 241 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT7 242 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT8 243 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT9 244 +#define PIDX_PKEY_PARAM_RSA_D 245 +#define PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ 246 +#define PIDX_PKEY_PARAM_RSA_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_RSA_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_RSA_E 247 +#define PIDX_PKEY_PARAM_RSA_EXPONENT 248 +#define PIDX_PKEY_PARAM_RSA_EXPONENT1 249 +#define PIDX_PKEY_PARAM_RSA_EXPONENT10 250 +#define PIDX_PKEY_PARAM_RSA_EXPONENT2 251 +#define PIDX_PKEY_PARAM_RSA_EXPONENT3 252 +#define PIDX_PKEY_PARAM_RSA_EXPONENT4 253 +#define PIDX_PKEY_PARAM_RSA_EXPONENT5 254 +#define PIDX_PKEY_PARAM_RSA_EXPONENT6 255 +#define PIDX_PKEY_PARAM_RSA_EXPONENT7 256 +#define PIDX_PKEY_PARAM_RSA_EXPONENT8 257 +#define PIDX_PKEY_PARAM_RSA_EXPONENT9 258 +#define PIDX_PKEY_PARAM_RSA_FACTOR 259 +#define PIDX_PKEY_PARAM_RSA_FACTOR1 260 +#define PIDX_PKEY_PARAM_RSA_FACTOR10 261 +#define PIDX_PKEY_PARAM_RSA_FACTOR2 262 +#define PIDX_PKEY_PARAM_RSA_FACTOR3 263 +#define PIDX_PKEY_PARAM_RSA_FACTOR4 264 +#define PIDX_PKEY_PARAM_RSA_FACTOR5 265 +#define PIDX_PKEY_PARAM_RSA_FACTOR6 266 +#define PIDX_PKEY_PARAM_RSA_FACTOR7 267 +#define PIDX_PKEY_PARAM_RSA_FACTOR8 268 +#define PIDX_PKEY_PARAM_RSA_FACTOR9 269 +#define PIDX_PKEY_PARAM_RSA_MASKGENFUNC PIDX_PKEY_PARAM_MASKGENFUNC +#define PIDX_PKEY_PARAM_RSA_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_PKEY_PARAM_RSA_N 137 +#define PIDX_PKEY_PARAM_RSA_PRIMES 270 +#define PIDX_PKEY_PARAM_RSA_PSS_SALTLEN 271 +#define PIDX_PKEY_PARAM_RSA_TEST_P1 272 +#define PIDX_PKEY_PARAM_RSA_TEST_P2 273 +#define PIDX_PKEY_PARAM_RSA_TEST_Q1 274 +#define PIDX_PKEY_PARAM_RSA_TEST_Q2 275 +#define PIDX_PKEY_PARAM_RSA_TEST_XP 276 +#define PIDX_PKEY_PARAM_RSA_TEST_XP1 277 +#define PIDX_PKEY_PARAM_RSA_TEST_XP2 278 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ 279 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ1 280 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ2 281 +#define PIDX_PKEY_PARAM_SECURITY_BITS 282 +#define PIDX_PKEY_PARAM_SLH_DSA_SEED 140 +#define PIDX_PKEY_PARAM_USE_COFACTOR_ECDH PIDX_PKEY_PARAM_USE_COFACTOR_FLAG +#define PIDX_PKEY_PARAM_USE_COFACTOR_FLAG 283 +#define PIDX_PROV_PARAM_BUILDINFO 284 +#define PIDX_PROV_PARAM_CORE_MODULE_FILENAME 285 +#define PIDX_PROV_PARAM_CORE_PROV_NAME 286 +#define PIDX_PROV_PARAM_CORE_VERSION 287 +#define PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST 288 +#define PIDX_PROV_PARAM_DSA_SIGN_DISABLED 289 +#define PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK 290 +#define PIDX_PROV_PARAM_HKDF_DIGEST_CHECK 291 +#define PIDX_PROV_PARAM_HKDF_KEY_CHECK 292 +#define PIDX_PROV_PARAM_HMAC_KEY_CHECK 293 +#define PIDX_PROV_PARAM_KBKDF_KEY_CHECK 294 +#define PIDX_PROV_PARAM_KMAC_KEY_CHECK 295 +#define PIDX_PROV_PARAM_NAME 296 +#define PIDX_PROV_PARAM_NO_SHORT_MAC 297 +#define PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK 298 +#define PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED 299 +#define PIDX_PROV_PARAM_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED 301 +#define PIDX_PROV_PARAM_SECURITY_CHECKS 302 +#define PIDX_PROV_PARAM_SELF_TEST_DESC 303 +#define PIDX_PROV_PARAM_SELF_TEST_PHASE 304 +#define PIDX_PROV_PARAM_SELF_TEST_TYPE 305 +#define PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK 306 +#define PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK 307 +#define PIDX_PROV_PARAM_SSHKDF_KEY_CHECK 308 +#define PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK 309 +#define PIDX_PROV_PARAM_SSKDF_KEY_CHECK 310 +#define PIDX_PROV_PARAM_STATUS 311 +#define PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED 312 +#define PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK 313 +#define PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK 314 +#define PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK 315 +#define PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK 316 +#define PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK 317 +#define PIDX_PROV_PARAM_VERSION 115 +#define PIDX_PROV_PARAM_X942KDF_KEY_CHECK 318 +#define PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK 319 +#define PIDX_PROV_PARAM_X963KDF_KEY_CHECK 320 +#define PIDX_RAND_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_RAND_PARAM_GENERATE 321 +#define PIDX_RAND_PARAM_MAX_REQUEST 322 +#define PIDX_RAND_PARAM_STATE 323 +#define PIDX_RAND_PARAM_STRENGTH 324 +#define PIDX_RAND_PARAM_TEST_ENTROPY 325 +#define PIDX_RAND_PARAM_TEST_NONCE 326 +#define PIDX_SIGNATURE_PARAM_ADD_RANDOM 327 +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID PIDX_PKEY_PARAM_ALGORITHM_ID +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_SIGNATURE_PARAM_CONTEXT_STRING 328 +#define PIDX_SIGNATURE_PARAM_DETERMINISTIC 329 +#define PIDX_SIGNATURE_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_SIGNATURE_PARAM_DIGEST_SIZE PIDX_PKEY_PARAM_DIGEST_SIZE +#define PIDX_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_SIGNATURE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_CHECK PIDX_PKEY_PARAM_FIPS_SIGN_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK 330 +#define PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE 331 +#define PIDX_SIGNATURE_PARAM_INSTANCE 332 +#define PIDX_SIGNATURE_PARAM_KAT 333 +#define PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING 334 +#define PIDX_SIGNATURE_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_SIGNATURE_PARAM_MGF1_PROPERTIES PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_SIGNATURE_PARAM_MU 335 +#define PIDX_SIGNATURE_PARAM_NONCE_TYPE 336 +#define PIDX_SIGNATURE_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_SIGNATURE_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_SIGNATURE_PARAM_PSS_SALTLEN 271 +#define PIDX_SIGNATURE_PARAM_SIGNATURE 337 +#define PIDX_SIGNATURE_PARAM_TEST_ENTROPY 338 +#define PIDX_SKEY_PARAM_KEY_LENGTH 339 +#define PIDX_SKEY_PARAM_RAW_BYTES 340 +#define PIDX_STORE_PARAM_ALIAS 341 +#define PIDX_STORE_PARAM_DIGEST 3 +#define PIDX_STORE_PARAM_EXPECT 342 +#define PIDX_STORE_PARAM_FINGERPRINT 343 +#define PIDX_STORE_PARAM_INPUT_TYPE 174 +#define PIDX_STORE_PARAM_ISSUER 296 +#define PIDX_STORE_PARAM_PROPERTIES 7 +#define PIDX_STORE_PARAM_SERIAL 344 +#define PIDX_STORE_PARAM_SUBJECT 345 diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/asn1.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/asn1.h index 21ff58e3d803d4..15e9e44674b0f3 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/asn1.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/asn1.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/asn1.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -21,6 +21,9 @@ # define HEADER_ASN1_H # endif +# ifndef OPENSSL_NO_STDIO +# include +# endif # include # include # include @@ -50,14 +53,14 @@ extern "C" { # define V_ASN1_PRIMITIVE_TAG 0x1f # define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG -# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ -# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ -# define V_ASN1_ANY -4/* used in ASN1 template code */ +# define V_ASN1_APP_CHOOSE -2 /* let the recipient choose */ +# define V_ASN1_OTHER -3 /* used in ASN1_TYPE */ +# define V_ASN1_ANY -4 /* used in ASN1 template code */ # define V_ASN1_UNDEF -1 /* ASN.1 tag values */ # define V_ASN1_EOC 0 -# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_BOOLEAN 1 # define V_ASN1_INTEGER 2 # define V_ASN1_BIT_STRING 3 # define V_ASN1_OCTET_STRING 4 @@ -70,19 +73,19 @@ extern "C" { # define V_ASN1_UTF8STRING 12 # define V_ASN1_SEQUENCE 16 # define V_ASN1_SET 17 -# define V_ASN1_NUMERICSTRING 18 /**/ +# define V_ASN1_NUMERICSTRING 18 # define V_ASN1_PRINTABLESTRING 19 # define V_ASN1_T61STRING 20 -# define V_ASN1_TELETEXSTRING 20/* alias */ -# define V_ASN1_VIDEOTEXSTRING 21 /**/ +# define V_ASN1_TELETEXSTRING 20 /* alias */ +# define V_ASN1_VIDEOTEXSTRING 21 # define V_ASN1_IA5STRING 22 # define V_ASN1_UTCTIME 23 -# define V_ASN1_GENERALIZEDTIME 24 /**/ -# define V_ASN1_GRAPHICSTRING 25 /**/ -# define V_ASN1_ISO64STRING 26 /**/ -# define V_ASN1_VISIBLESTRING 26/* alias */ -# define V_ASN1_GENERALSTRING 27 /**/ -# define V_ASN1_UNIVERSALSTRING 28 /**/ +# define V_ASN1_GENERALIZEDTIME 24 +# define V_ASN1_GRAPHICSTRING 25 +# define V_ASN1_ISO64STRING 26 +# define V_ASN1_VISIBLESTRING 26 /* alias */ +# define V_ASN1_GENERALSTRING 27 +# define V_ASN1_UNIVERSALSTRING 28 # define V_ASN1_BMPSTRING 30 /* @@ -155,7 +158,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) -# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +# define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */ /* * This indicates that the ASN1_STRING is not a real value but just a place * holder for the location where indefinite length constructed data should be @@ -275,7 +278,7 @@ typedef struct ASN1_TLC_st ASN1_TLC; /* This is just an opaque pointer */ typedef struct ASN1_VALUE_st ASN1_VALUE; -/* Declare ASN1 functions: the implement macro in in asn1t.h */ +/* Declare ASN1 functions: the implement macro is in asn1t.h */ /* * The mysterious 'extern' that's passed to some macros is innocuous, @@ -368,6 +371,7 @@ typedef struct ASN1_VALUE_st ASN1_VALUE; typedef void *d2i_of_void(void **, const unsigned char **, long); typedef int i2d_of_void(const void *, unsigned char **); +typedef int OSSL_i2d_of_void_ctx(const void *, unsigned char **, void *vctx); /*- * The following macros and typedefs allow an ASN1_ITEM @@ -996,6 +1000,8 @@ int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, unsigned char *data, int max_len); void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/bio.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/bio.h index f9aa74731c833c..e02f867beb0ec0 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/bio.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/bio.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/bio.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -67,8 +67,13 @@ extern "C" { # define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) # endif # define BIO_TYPE_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_PAIR (26|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_MEM (27|BIO_TYPE_SOURCE_SINK) +/* Custom type starting index returned by BIO_get_new_index() */ #define BIO_TYPE_START 128 +/* Custom type maximum index that can be returned by BIO_get_new_index() */ +#define BIO_TYPE_MASK 0xFF /* * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. @@ -171,6 +176,31 @@ extern "C" { # define BIO_CTRL_SET_INDENT 80 # define BIO_CTRL_GET_INDENT 81 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +# define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +# define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +# define BIO_CTRL_DGRAM_GET_CAPS 86 +# define BIO_CTRL_DGRAM_SET_CAPS 87 +# define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +# define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +# define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +# define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +# define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 +# define BIO_CTRL_DGRAM_SET0_LOCAL_ADDR 94 + +# define BIO_DGRAM_CAP_NONE 0U +# define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +# define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +# define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +# define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + # ifndef OPENSSL_NO_KTLS # define BIO_get_ktls_send(b) \ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) @@ -208,7 +238,7 @@ extern "C" { # define BIO_FLAGS_NONCLEAR_RST 0x400 # define BIO_FLAGS_IN_EOF 0x800 -/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */ +/* the BIO FLAGS values 0x1000 to 0x8000 are reserved for internal KTLS flags */ typedef union bio_addr_st BIO_ADDR; typedef struct bio_addrinfo_st BIO_ADDRINFO; @@ -256,12 +286,14 @@ void BIO_clear_flags(BIO *b, int flags); # define BIO_RR_ACCEPT 0x03 /* These are passed by the BIO callback */ -# define BIO_CB_FREE 0x01 -# define BIO_CB_READ 0x02 -# define BIO_CB_WRITE 0x03 -# define BIO_CB_PUTS 0x04 -# define BIO_CB_GETS 0x05 -# define BIO_CB_CTRL 0x06 +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 +# define BIO_CB_RECVMMSG 0x07 +# define BIO_CB_SENDMMSG 0x08 /* * The callback is called before and after the underling operation, The @@ -362,6 +394,36 @@ struct bio_dgram_sctp_prinfo { }; # endif +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_TYPE_SSL 2 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + SSL *ssl; + } value; +} BIO_POLL_DESCRIPTOR; + /* * #define BIO_CONN_get_param_hostname BIO_ctrl */ @@ -428,10 +490,17 @@ struct bio_dgram_sctp_prinfo { # define BIO_C_SET_CONNECT_MODE 155 +# define BIO_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +# define BIO_C_SET_SOCK_TYPE 157 +# define BIO_C_GET_SOCK_TYPE 158 +# define BIO_C_GET_DGRAM_BIO 159 + # define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) # define BIO_get_app_data(s) BIO_get_ex_data(s,0) -# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_tfo(b,n) BIO_ctrl(b,BIO_C_SET_TFO,(n),NULL) # ifndef OPENSSL_NO_SOCK /* IP families we support, for BIO_s_connect() and BIO_s_accept() */ @@ -452,7 +521,11 @@ struct bio_dgram_sctp_prinfo { # define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) # define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) # define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_get_conn_mode(b) BIO_ctrl(b,BIO_C_GET_CONNECT,4,NULL) # define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) +# define BIO_set_sock_type(b,t) BIO_ctrl(b,BIO_C_SET_SOCK_TYPE,(t),NULL) +# define BIO_get_sock_type(b) BIO_ctrl(b,BIO_C_GET_SOCK_TYPE,0,NULL) +# define BIO_get0_dgram_bio(b, p) BIO_ctrl(b,BIO_C_GET_DGRAM_BIO,0,(void *)(BIO **)(p)) /* BIO_s_accept() */ # define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ @@ -469,6 +542,7 @@ struct bio_dgram_sctp_prinfo { (char *)(bio)) # define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) # define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) +# define BIO_set_tfo_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,5,(n)?(void *)"a":NULL) /* Aliases kept for backward compatibility */ # define BIO_BIND_NORMAL 0 @@ -596,8 +670,32 @@ int BIO_ctrl_reset_read_request(BIO *b); (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) # define BIO_dgram_set_peer(b,peer) \ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_detect_peer_addr(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) # define BIO_dgram_get_mtu_overhead(b) \ (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +# define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +# define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +# define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +# define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +# define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +# define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +# define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +# define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +# define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +# define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) +# define BIO_dgram_set0_local_addr(b, addr) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET0_LOCAL_ADDR, 0, (addr)) /* ctrl macros for BIO_f_prefix */ # define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) @@ -640,10 +738,18 @@ void BIO_vfree(BIO *a); int BIO_up_ref(BIO *a); int BIO_read(BIO *b, void *data, int dlen); int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); int BIO_gets(BIO *bp, char *buf, int size); int BIO_get_line(BIO *bio, char *buf, int size); int BIO_write(BIO *b, const void *data, int dlen); int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); int BIO_puts(BIO *bp, const char *buf); int BIO_indent(BIO *b, int indent, int max); long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); @@ -667,6 +773,9 @@ int BIO_nwrite0(BIO *bio, char **buf); int BIO_nwrite(BIO *bio, char **buf, int num); const BIO_METHOD *BIO_s_mem(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +# endif const BIO_METHOD *BIO_s_secmem(void); BIO *BIO_new_mem_buf(const void *buf, int len); # ifndef OPENSSL_NO_SOCK @@ -686,6 +795,7 @@ const BIO_METHOD *BIO_f_nbio_test(void); const BIO_METHOD *BIO_f_prefix(void); const BIO_METHOD *BIO_s_core(void); # ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_pair(void); const BIO_METHOD *BIO_s_datagram(void); int BIO_dgram_non_fatal_error(int error); BIO *BIO_new_dgram(int fd, int close_flag); @@ -704,6 +814,7 @@ int BIO_dgram_sctp_msg_waiting(BIO *b); # ifndef OPENSSL_NO_SOCK int BIO_sock_should_retry(int i); int BIO_sock_non_fatal_error(int error); +int BIO_err_is_non_fatal(unsigned int errcode); int BIO_socket_wait(int fd, int for_read, time_t max_time); # endif int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); @@ -726,6 +837,8 @@ int BIO_hex_string(BIO *out, int indent, int width, const void *data, # ifndef OPENSSL_NO_SOCK BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, const void *where, size_t wherelen, unsigned short port); void BIO_ADDR_free(BIO_ADDR *); @@ -788,6 +901,7 @@ int BIO_sock_info(int sock, # define BIO_SOCK_KEEPALIVE 0x04 # define BIO_SOCK_NONBLOCK 0x08 # define BIO_SOCK_NODELAY 0x10 +# define BIO_SOCK_TFO 0x20 int BIO_socket(int domain, int socktype, int protocol, int options); int BIO_connect(int sock, const BIO_ADDR *addr, int options); @@ -805,6 +919,11 @@ BIO *BIO_new_fd(int fd, int close_flag); int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, BIO **bio2, size_t writebuf2); +# ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +# endif + /* * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default @@ -849,38 +968,54 @@ ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); BIO_METHOD *BIO_meth_new(int type, const char *name); void BIO_meth_free(BIO_METHOD *biom); -int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int); -int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t, - size_t *); int BIO_meth_set_write(BIO_METHOD *biom, int (*write) (BIO *, const char *, int)); int BIO_meth_set_write_ex(BIO_METHOD *biom, int (*bwrite) (BIO *, const char *, size_t, size_t *)); -int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); -int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); +int BIO_meth_set_sendmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_read(BIO_METHOD *biom, int (*read) (BIO *, char *, int)); int BIO_meth_set_read_ex(BIO_METHOD *biom, int (*bread) (BIO *, char *, size_t, size_t *)); -int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +int BIO_meth_set_recvmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_puts(BIO_METHOD *biom, int (*puts) (BIO *, const char *)); -int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); int BIO_meth_set_gets(BIO_METHOD *biom, int (*ossl_gets) (BIO *, char *, int)); -long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); int BIO_meth_set_ctrl(BIO_METHOD *biom, long (*ctrl) (BIO *, int, long, void *)); -int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); -int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); -long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) - (BIO *, int, BIO_info_cb *); int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, long (*callback_ctrl) (BIO *, int, BIO_info_cb *)); - +# ifndef OPENSSL_NO_DEPRECATED_3_5 +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, + int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, + long, void *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) (BIO *, int, + BIO_info_cb *); +# endif # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/cmp.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/cmp.h index 49825570d8c303..05aed3029d594c 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/cmp.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -35,7 +35,9 @@ extern "C" { # endif -# define OSSL_CMP_PVNO 2 +# define OSSL_CMP_PVNO_2 2 +# define OSSL_CMP_PVNO_3 3 +# define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ /*- * PKIFailureInfo ::= BIT STRING { @@ -137,7 +139,6 @@ extern "C" { # if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX # error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int # endif - typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) @@ -203,8 +204,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_PKISTATUS_revocationWarning 4 # define OSSL_CMP_PKISTATUS_revocationNotification 5 # define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 - typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; + DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) # define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 @@ -274,6 +275,46 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) #define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) #define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) + +typedef struct ossl_cmp_crlstatus_st OSSL_CMP_CRLSTATUS; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS) +#define sk_OSSL_CMP_CRLSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_value(sk, idx) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CRLSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CRLSTATUS_new_null() ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CRLSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CRLSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CRLSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_delete(sk, i) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CRLSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_pop(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_shift(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CRLSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CRLSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CRLSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CRLSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CRLSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) + + +typedef OSSL_CRMF_ATTRIBUTETYPEANDVALUE OSSL_CMP_ATAV; +# define OSSL_CMP_ATAV_free OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free +typedef STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) OSSL_CMP_ATAVS; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_ATAVS) +# define stack_st_OSSL_CMP_ATAV stack_st_OSSL_CRMF_ATTRIBUTETYPEANDVALUE +# define sk_OSSL_CMP_ATAV_num sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num +# define sk_OSSL_CMP_ATAV_value sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value +# define sk_OSSL_CMP_ATAV_push sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push +# define sk_OSSL_CMP_ATAV_pop_free sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free + typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT; typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI; DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI) @@ -375,21 +416,75 @@ void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type, ASN1_TYPE *value); ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav); ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); -int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p, +int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **sk_p, OSSL_CMP_ITAV *itav); void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new0_certProfile(STACK_OF(ASN1_UTF8STRING) + *certProfile); +int OSSL_CMP_ITAV_get0_certProfile(const OSSL_CMP_ITAV *itav, + STACK_OF(ASN1_UTF8STRING) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_create(const X509_CRL *crl, + const X509 *cert, int only_DN); +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_new1(const DIST_POINT_NAME *dpn, + const GENERAL_NAMES *issuer, + const ASN1_TIME *thisUpdate); +int OSSL_CMP_CRLSTATUS_get0(const OSSL_CMP_CRLSTATUS *crlstatus, + DIST_POINT_NAME **dpn, GENERAL_NAMES **issuer, + ASN1_TIME **thisUpdate); +void OSSL_CMP_CRLSTATUS_free(OSSL_CMP_CRLSTATUS *crlstatus); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_crlStatusList(STACK_OF(OSSL_CMP_CRLSTATUS) *crlStatusList); +int OSSL_CMP_ITAV_get0_crlStatusList(const OSSL_CMP_ITAV *itav, + STACK_OF(OSSL_CMP_CRLSTATUS) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_crls(const X509_CRL *crls); +int OSSL_CMP_ITAV_get0_crls(const OSSL_CMP_ITAV *it, STACK_OF(X509_CRL) **out); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_certReqTemplate(OSSL_CRMF_CERTTEMPLATE *certTemplate, + OSSL_CMP_ATAVS *keySpec); +int OSSL_CMP_ITAV_get1_certReqTemplate(const OSSL_CMP_ITAV *itav, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +OSSL_CMP_ATAV *OSSL_CMP_ATAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ATAV_set0(OSSL_CMP_ATAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ATAV_get0_type(const OSSL_CMP_ATAV *itav); +ASN1_TYPE *OSSL_CMP_ATAV_get0_value(const OSSL_CMP_ATAV *itav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_algId(const X509_ALGOR *alg); +X509_ALGOR *OSSL_CMP_ATAV_get0_algId(const OSSL_CMP_ATAV *atav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_rsaKeyLen(int len); +int OSSL_CMP_ATAV_get_rsaKeyLen(const OSSL_CMP_ATAV *atav); +int OSSL_CMP_ATAV_push1(OSSL_CMP_ATAVS **sk_p, const OSSL_CMP_ATAV *atav); + void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); /* from cmp_ctx.c */ OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const OSSL_CMP_CTX *ctx); /* CMP general options: */ # define OSSL_CMP_OPT_LOG_VERBOSITY 0 /* CMP transfer options: */ -# define OSSL_CMP_OPT_KEEP_ALIVE 10 -# define OSSL_CMP_OPT_MSG_TIMEOUT 11 +# define OSSL_CMP_OPT_KEEP_ALIVE 10 +# define OSSL_CMP_OPT_MSG_TIMEOUT 11 # define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 +# define OSSL_CMP_OPT_USE_TLS 13 /* CMP request options: */ # define OSSL_CMP_OPT_VALIDITY_DAYS 20 # define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 @@ -407,6 +502,7 @@ int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); # define OSSL_CMP_OPT_DIGEST_ALGNID 34 # define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35 # define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36 +# define OSSL_CMP_OPT_NO_CACHE_EXTRACERTS 37 int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val); int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt); /* CMP-specific callback for logging and outputting the error queue: */ @@ -420,9 +516,11 @@ int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); +# ifndef OPENSSL_NO_HTTP int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); +# endif typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); @@ -432,7 +530,9 @@ void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); +# define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +# define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); /* client authentication: */ @@ -448,12 +548,15 @@ int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx, int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); int OSSL_CMP_CTX_reset_geninfo_ITAVs(OSSL_CMP_CTX *ctx); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_CTX_get0_geninfo_ITAVs(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, STACK_OF(X509) *extraCertsOut); /* certificate template: */ int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set1_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, const GENERAL_NAME *name); @@ -477,6 +580,7 @@ int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); # define OSSL_CMP_PKISI_BUFLEN 1024 +X509 *OSSL_CMP_CTX_get0_validatedSrvCert(const OSSL_CMP_CTX *ctx); X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); @@ -498,10 +602,13 @@ OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const OSSL_CMP_PKIHEADER *hdr); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_HDR_get0_geninfo_ITAVs(const OSSL_CMP_PKIHEADER *hdr); /* from cmp_msg.c */ OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg); +X509_PUBKEY *OSSL_CMP_MSG_get0_certreq_publickey(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_recipNonce(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid); @@ -517,8 +624,10 @@ int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, X509_STORE *trusted_store, X509 *cert); /* from cmp_http.c */ +# ifndef OPENSSL_NO_HTTP OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); +# endif /* from cmp_server.c */ typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; @@ -561,6 +670,13 @@ int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx, OSSL_CMP_SRV_error_cb_t process_error, OSSL_CMP_SRV_certConf_cb_t process_certConf, OSSL_CMP_SRV_pollReq_cb_t process_pollReq); +typedef int (*OSSL_CMP_SRV_delayed_delivery_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +typedef int (*OSSL_CMP_SRV_clean_transaction_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_SRV_CTX_init_trans(OSSL_CMP_SRV_CTX *srv_ctx, + OSSL_CMP_SRV_delayed_delivery_cb_t delay, + OSSL_CMP_SRV_clean_transaction_cb_t clean); OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx, @@ -577,6 +693,8 @@ X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type, # define OSSL_CMP_CR 2 # define OSSL_CMP_P10CR 4 # define OSSL_CMP_KUR 7 +# define OSSL_CMP_GENM 21 +# define OSSL_CMP_ERROR 23 # define OSSL_CMP_exec_IR_ses(ctx) \ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL) # define OSSL_CMP_exec_CR_ses(ctx) \ @@ -590,6 +708,18 @@ int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); +int OSSL_CMP_get1_crlUpdate(OSSL_CMP_CTX *ctx, const X509 *crlcert, + const X509_CRL *last_crl, + X509_CRL **crl); +int OSSL_CMP_get1_certReqTemplate(OSSL_CMP_CTX *ctx, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/cms.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/cms.h index 3b453e6a2187a2..63afab563557b0 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/cms.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/cms.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cms.h.in * - * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2008-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -31,8 +31,10 @@ extern "C" { # endif +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; typedef struct CMS_ContentInfo_st CMS_ContentInfo; typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; typedef struct CMS_CertificateChoices CMS_CertificateChoices; typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; @@ -147,10 +149,14 @@ SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, #define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) +DECLARE_ASN1_DUP_FUNCTION(CMS_EnvelopedData) + CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq); # define CMS_SIGNERINFO_ISSUER_SERIAL 0 @@ -190,6 +196,7 @@ CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq) # define CMS_ASCIICRLF 0x80000 # define CMS_CADES 0x100000 # define CMS_USE_ORIGINATOR_KEYID 0x200000 +# define CMS_NO_SIGNING_TIME 0x400000 const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms); @@ -217,13 +224,16 @@ int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, unsigned int flags); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, BIO *dcont, + unsigned int flags); CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, unsigned int flags); CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, @@ -233,27 +243,26 @@ CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, unsigned int flags); CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, const unsigned char *key, size_t keylen, BIO *dcont, BIO *out, unsigned int flags); - CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags); CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, @@ -272,7 +281,7 @@ CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags); CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, BIO *dcont, BIO *out, unsigned int flags); @@ -291,12 +300,16 @@ int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo * -CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx, +CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags); @@ -385,6 +398,11 @@ ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); int CMS_SignerInfo_sign(CMS_SignerInfo *si); int CMS_SignerInfo_verify(CMS_SignerInfo *si); int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, @@ -441,7 +459,7 @@ CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( unsigned char *id, int idlen, int allorfirst, STACK_OF(GENERAL_NAMES) *receiptList, STACK_OF(GENERAL_NAMES) *receiptsTo, - OSSL_LIB_CTX *ctx); + OSSL_LIB_CTX *libctx); int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/comp.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/comp.h new file mode 100644 index 00000000000000..90e39511fe8d28 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/comp.h @@ -0,0 +1,98 @@ +/* + * Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_COMP_H +# define OPENSSL_COMP_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_COMP_H +# endif + +# include + +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + + +# ifndef OPENSSL_NO_COMP + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX* comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); + +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); + +COMP_METHOD *COMP_zlib(void); +COMP_METHOD *COMP_zlib_oneshot(void); +COMP_METHOD *COMP_brotli(void); +COMP_METHOD *COMP_brotli_oneshot(void); +COMP_METHOD *COMP_zstd(void); +COMP_METHOD *COMP_zstd_oneshot(void); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define COMP_zlib_cleanup() while(0) continue +# endif + +# ifdef OPENSSL_BIO_H +const BIO_METHOD *BIO_f_zlib(void); +const BIO_METHOD *BIO_f_brotli(void); +const BIO_METHOD *BIO_f_zstd(void); +# endif + +# endif + +typedef struct ssl_comp_st SSL_COMP; + +SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) +#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) +#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) +#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) +#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) +#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) +#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) +#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) +#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) +#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) +#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) +#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) + + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/conf.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/conf.h index 44989929f6c84a..38576290bf641b 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/conf.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/conf.h @@ -27,6 +27,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -65,7 +68,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) #define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) #define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); -#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp))) +#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp)), lh_CONF_VALUE_hash_thunk, lh_CONF_VALUE_comp_thunk, lh_CONF_VALUE_doall_thunk, lh_CONF_VALUE_doall_arg_thunk)) #define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/configuration.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/configuration.h index e18969acd408c4..494098a6937b85 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/configuration.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/configuration.h @@ -27,7 +27,7 @@ extern "C" { * OpenSSL was configured with the following options: */ -# define OPENSSL_CONFIGURED_API 30000 +# define OPENSSL_CONFIGURED_API 30500 # ifndef OPENSSL_RAND_SEED_OS # define OPENSSL_RAND_SEED_OS # endif @@ -40,6 +40,12 @@ extern "C" { # ifndef OPENSSL_NO_ASAN # define OPENSSL_NO_ASAN # endif +# ifndef OPENSSL_NO_BROTLI +# define OPENSSL_NO_BROTLI +# endif +# ifndef OPENSSL_NO_BROTLI_DYNAMIC +# define OPENSSL_NO_BROTLI_DYNAMIC +# endif # ifndef OPENSSL_NO_COMP # define OPENSSL_NO_COMP # endif @@ -49,6 +55,9 @@ extern "C" { # ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # endif +# ifndef OPENSSL_NO_DEMOS +# define OPENSSL_NO_DEMOS +# endif # ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 # define OPENSSL_NO_EC_NISTP_64_GCC_128 # endif @@ -58,12 +67,24 @@ extern "C" { # ifndef OPENSSL_NO_EXTERNAL_TESTS # define OPENSSL_NO_EXTERNAL_TESTS # endif +# ifndef OPENSSL_NO_FIPS_JITTER +# define OPENSSL_NO_FIPS_JITTER +# endif # ifndef OPENSSL_NO_FUZZ_AFL # define OPENSSL_NO_FUZZ_AFL # endif # ifndef OPENSSL_NO_FUZZ_LIBFUZZER # define OPENSSL_NO_FUZZ_LIBFUZZER # endif +# ifndef OPENSSL_NO_H3DEMO +# define OPENSSL_NO_H3DEMO +# endif +# ifndef OPENSSL_NO_HQINTEROP +# define OPENSSL_NO_HQINTEROP +# endif +# ifndef OPENSSL_NO_JITTER +# define OPENSSL_NO_JITTER +# endif # ifndef OPENSSL_NO_KTLS # define OPENSSL_NO_KTLS # endif @@ -76,6 +97,9 @@ extern "C" { # ifndef OPENSSL_NO_MSAN # define OPENSSL_NO_MSAN # endif +# ifndef OPENSSL_NO_PIE +# define OPENSSL_NO_PIE +# endif # ifndef OPENSSL_NO_RC5 # define OPENSSL_NO_RC5 # endif @@ -88,6 +112,12 @@ extern "C" { # ifndef OPENSSL_NO_SSL3_METHOD # define OPENSSL_NO_SSL3_METHOD # endif +# ifndef OPENSSL_NO_SSLKEYLOG +# define OPENSSL_NO_SSLKEYLOG +# endif +# ifndef OPENSSL_NO_TFO +# define OPENSSL_NO_TFO +# endif # ifndef OPENSSL_NO_TRACE # define OPENSSL_NO_TRACE # endif @@ -103,6 +133,21 @@ extern "C" { # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS # define OPENSSL_NO_WEAK_SSL_CIPHERS # endif +# ifndef OPENSSL_NO_WINSTORE +# define OPENSSL_NO_WINSTORE +# endif +# ifndef OPENSSL_NO_ZLIB +# define OPENSSL_NO_ZLIB +# endif +# ifndef OPENSSL_NO_ZLIB_DYNAMIC +# define OPENSSL_NO_ZLIB_DYNAMIC +# endif +# ifndef OPENSSL_NO_ZSTD +# define OPENSSL_NO_ZSTD +# endif +# ifndef OPENSSL_NO_ZSTD_DYNAMIC +# define OPENSSL_NO_ZSTD_DYNAMIC +# endif # ifndef OPENSSL_NO_DYNAMIC_ENGINE # define OPENSSL_NO_DYNAMIC_ENGINE # endif @@ -124,6 +169,12 @@ extern "C" { # define RC4_INT unsigned int +# if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +# define OPENSSL_NO_COMP_ALG +# else +# undef OPENSSL_NO_COMP_ALG +# endif + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/core_names.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/core_names.h new file mode 100644 index 00000000000000..e93e79a52bc910 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/core_names.h @@ -0,0 +1,575 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/core_names.h.in + * + * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#ifndef OPENSSL_CORE_NAMES_H +# define OPENSSL_CORE_NAMES_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +/* OSSL_CIPHER_PARAM_CTS_MODE Values */ +# define OSSL_CIPHER_CTS_MODE_CS1 "CS1" +# define OSSL_CIPHER_CTS_MODE_CS2 "CS2" +# define OSSL_CIPHER_CTS_MODE_CS3 "CS3" + +/* Known CIPHER names (not a complete list) */ +# define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" + +/* Known DIGEST names (not a complete list) */ +# define OSSL_DIGEST_NAME_MD5 "MD5" +# define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" +# define OSSL_DIGEST_NAME_SHA1 "SHA1" +# define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" +# define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" +# define OSSL_DIGEST_NAME_SHA2_256_192 "SHA2-256/192" +# define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" +# define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" +# define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" +# define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" +# define OSSL_DIGEST_NAME_MD2 "MD2" +# define OSSL_DIGEST_NAME_MD4 "MD4" +# define OSSL_DIGEST_NAME_MDC2 "MDC2" +# define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" +# define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" +# define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" +# define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" +# define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" +# define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" +# define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" +# define OSSL_DIGEST_NAME_SM3 "SM3" + +/* Known MAC names */ +# define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" +# define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" +# define OSSL_MAC_NAME_CMAC "CMAC" +# define OSSL_MAC_NAME_GMAC "GMAC" +# define OSSL_MAC_NAME_HMAC "HMAC" +# define OSSL_MAC_NAME_KMAC128 "KMAC128" +# define OSSL_MAC_NAME_KMAC256 "KMAC256" +# define OSSL_MAC_NAME_POLY1305 "POLY1305" +# define OSSL_MAC_NAME_SIPHASH "SIPHASH" + +/* Known KDF names */ +# define OSSL_KDF_NAME_HKDF "HKDF" +# define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" +# define OSSL_KDF_NAME_PBKDF1 "PBKDF1" +# define OSSL_KDF_NAME_PBKDF2 "PBKDF2" +# define OSSL_KDF_NAME_SCRYPT "SCRYPT" +# define OSSL_KDF_NAME_SSHKDF "SSHKDF" +# define OSSL_KDF_NAME_SSKDF "SSKDF" +# define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" +# define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" +# define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" +# define OSSL_KDF_NAME_X963KDF "X963KDF" +# define OSSL_KDF_NAME_KBKDF "KBKDF" +# define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" +# define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" + +/* RSA padding modes */ +# define OSSL_PKEY_RSA_PAD_MODE_NONE "none" +# define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" +# define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" +# define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" +# define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" + +/* RSA pss padding salt length */ +# define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" + +/* OSSL_PKEY_PARAM_EC_ENCODING values */ +# define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" +# define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" + +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" + +# define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" + +/* PROV_SKEY well known key types */ +# define OSSL_SKEY_TYPE_GENERIC "GENERIC-SECRET" +# define OSSL_SKEY_TYPE_AES "AES" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" + +/* Provider configuration variables */ +#define OSSL_PKEY_RETAIN_SEED "pkey_retain_seed" + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +# define OSSL_ALG_PARAM_ALGORITHM_ID "algorithm-id" +# define OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS "algorithm-id-params" +# define OSSL_ALG_PARAM_CIPHER "cipher" +# define OSSL_ALG_PARAM_DIGEST "digest" +# define OSSL_ALG_PARAM_ENGINE "engine" +# define OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR "fips-indicator" +# define OSSL_ALG_PARAM_MAC "mac" +# define OSSL_ALG_PARAM_PROPERTIES "properties" +# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +# define OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props" +# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" +# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name" +# define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal" +# define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name" +# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid" +# define OSSL_CIPHER_PARAM_AEAD "aead" +# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +# define OSSL_CIPHER_PARAM_AEAD_IV_GENERATED "iv-generated" +# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" +# define OSSL_CIPHER_PARAM_AEAD_TAG "tag" +# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" +# define OSSL_CIPHER_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD "alg_id_param" +# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_CIPHER_PARAM_CTS "cts" +# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" +# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" +# define OSSL_CIPHER_PARAM_DECRYPT_ONLY "decrypt-only" +# define OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK "encrypt-check" +# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" +# define OSSL_CIPHER_PARAM_IV "iv" +# define OSSL_CIPHER_PARAM_IVLEN "ivlen" +# define OSSL_CIPHER_PARAM_KEYLEN "keylen" +# define OSSL_CIPHER_PARAM_MODE "mode" +# define OSSL_CIPHER_PARAM_NUM "num" +# define OSSL_CIPHER_PARAM_PADDING "padding" +# define OSSL_CIPHER_PARAM_PIPELINE_AEAD_TAG "pipeline-tag" +# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" +# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" +# define OSSL_CIPHER_PARAM_ROUNDS "rounds" +# define OSSL_CIPHER_PARAM_SPEED "speed" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag" +# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" +# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" +# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" +# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" +# define OSSL_CIPHER_PARAM_USE_BITS "use-bits" +# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard" +# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" +# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_DIGEST_PARAM_MICALG "micalg" +# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" +# define OSSL_DIGEST_PARAM_SIZE "size" +# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" +# define OSSL_DIGEST_PARAM_XOF "xof" +# define OSSL_DIGEST_PARAM_XOFLEN "xoflen" +# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +# define OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +# define OSSL_DRBG_PARAM_SIZE "size" +# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" +# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" +# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" +# define OSSL_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_EXCHANGE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" +# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" +# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" +# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" +# define OSSL_EXCHANGE_PARAM_PAD "pad" +# define OSSL_GEN_PARAM_ITERATION "iteration" +# define OSSL_GEN_PARAM_POTENTIAL "potential" +# define OSSL_KDF_PARAM_ARGON2_AD "ad" +# define OSSL_KDF_PARAM_ARGON2_LANES "lanes" +# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost" +# define OSSL_KDF_PARAM_ARGON2_VERSION "version" +# define OSSL_KDF_PARAM_CEK_ALG "cekalg" +# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_KDF_PARAM_CONSTANT "constant" +# define OSSL_KDF_PARAM_DATA "data" +# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean" +# define OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KDF_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_KDF_PARAM_FIPS_EMS_CHECK "ems_check" +# define OSSL_KDF_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy" +# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce" +# define OSSL_KDF_PARAM_INFO "info" +# define OSSL_KDF_PARAM_ITER "iter" +# define OSSL_KDF_PARAM_KBKDF_R "r" +# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" +# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" +# define OSSL_KDF_PARAM_KEY "key" +# define OSSL_KDF_PARAM_LABEL "label" +# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_KDF_PARAM_MAC_SIZE "maclen" +# define OSSL_KDF_PARAM_MODE "mode" +# define OSSL_KDF_PARAM_PASSWORD "pass" +# define OSSL_KDF_PARAM_PKCS12_ID "id" +# define OSSL_KDF_PARAM_PKCS5 "pkcs5" +# define OSSL_KDF_PARAM_PREFIX "prefix" +# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_KDF_PARAM_SALT "salt" +# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" +# define OSSL_KDF_PARAM_SCRYPT_N "n" +# define OSSL_KDF_PARAM_SCRYPT_P "p" +# define OSSL_KDF_PARAM_SCRYPT_R "r" +# define OSSL_KDF_PARAM_SECRET "secret" +# define OSSL_KDF_PARAM_SEED "seed" +# define OSSL_KDF_PARAM_SIZE "size" +# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" +# define OSSL_KDF_PARAM_SSHKDF_TYPE "type" +# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" +# define OSSL_KDF_PARAM_THREADS "threads" +# define OSSL_KDF_PARAM_UKM "ukm" +# define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info" +# define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info" +# define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info" +# define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo" +# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_KEM_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KEM_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KEM_PARAM_IKME "ikme" +# define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING "hs_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm" +# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len" +# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" +# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_MAC_PARAM_CUSTOM "custom" +# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" +# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" +# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" +# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" +# define OSSL_MAC_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_MAC_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_MAC_PARAM_FIPS_NO_SHORT_MAC OSSL_PROV_PARAM_NO_SHORT_MAC +# define OSSL_MAC_PARAM_IV "iv" +# define OSSL_MAC_PARAM_KEY "key" +# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_MAC_PARAM_SALT "salt" +# define OSSL_MAC_PARAM_SIZE "size" +# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" +# define OSSL_MAC_PARAM_XOF "xof" +# define OSSL_OBJECT_PARAM_DATA "data" +# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" +# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" +# define OSSL_OBJECT_PARAM_DESC "desc" +# define OSSL_OBJECT_PARAM_INPUT_TYPE "input-type" +# define OSSL_OBJECT_PARAM_REFERENCE "reference" +# define OSSL_OBJECT_PARAM_TYPE "type" +# define OSSL_PASSPHRASE_PARAM_INFO "info" +# define OSSL_PKEY_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_PKEY_PARAM_BITS "bits" +# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" +# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm" +# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" +# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +# define OSSL_PKEY_PARAM_DIST_ID "distid" +# define OSSL_PKEY_PARAM_EC_A "a" +# define OSSL_PKEY_PARAM_EC_B "b" +# define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3" +# define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp" +# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" +# define OSSL_PKEY_PARAM_EC_ENCODING "encoding" +# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +# define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_PARAM_EC_ORDER "order" +# define OSSL_PKEY_PARAM_EC_P "p" +# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +# define OSSL_PKEY_PARAM_EC_PUB_X "qx" +# define OSSL_PKEY_PARAM_EC_PUB_Y "qy" +# define OSSL_PKEY_PARAM_EC_SEED "seed" +# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE +# define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +# define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_FFC_G "g" +# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +# define OSSL_PKEY_PARAM_FFC_H "hindex" +# define OSSL_PKEY_PARAM_FFC_P "p" +# define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +# define OSSL_PKEY_PARAM_FFC_Q "q" +# define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +# define OSSL_PKEY_PARAM_FFC_SEED "seed" +# define OSSL_PKEY_PARAM_FFC_TYPE "type" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +# define OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK "digest-check" +# define OSSL_PKEY_PARAM_FIPS_KEY_CHECK "key-check" +# define OSSL_PKEY_PARAM_FIPS_SIGN_CHECK "sign-check" +# define OSSL_PKEY_PARAM_GROUP_NAME "group" +# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" +# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +# define OSSL_PKEY_PARAM_MAX_SIZE "max-size" +# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +# define OSSL_PKEY_PARAM_ML_DSA_INPUT_FORMATS "ml-dsa.input_formats" +# define OSSL_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS "ml-dsa.output_formats" +# define OSSL_PKEY_PARAM_ML_DSA_PREFER_SEED "ml-dsa.prefer_seed" +# define OSSL_PKEY_PARAM_ML_DSA_RETAIN_SEED "ml-dsa.retain_seed" +# define OSSL_PKEY_PARAM_ML_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE "ml-kem.import_pct_type" +# define OSSL_PKEY_PARAM_ML_KEM_INPUT_FORMATS "ml-kem.input_formats" +# define OSSL_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS "ml-kem.output_formats" +# define OSSL_PKEY_PARAM_ML_KEM_PREFER_SEED "ml-kem.prefer_seed" +# define OSSL_PKEY_PARAM_ML_KEM_RETAIN_SEED "ml-kem.retain_seed" +# define OSSL_PKEY_PARAM_ML_KEM_SEED "seed" +# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +# define OSSL_PKEY_PARAM_PRIV_KEY "priv" +# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_PUB_KEY "pub" +# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9" +# define OSSL_PKEY_PARAM_RSA_D "d" +# define OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ "rsa-derive-from-pq" +# define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_RSA_E "e" +# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1" +# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10" +# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2" +# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3" +# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4" +# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5" +# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6" +# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7" +# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8" +# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9" +# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1" +# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10" +# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2" +# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3" +# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4" +# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5" +# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6" +# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7" +# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8" +# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9" +# define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC +# define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_PKEY_PARAM_RSA_N "n" +# define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" +# define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1" +# define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2" +# define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1" +# define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2" +# define OSSL_PKEY_PARAM_RSA_TEST_XP "xp" +# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" +# define OSSL_PKEY_PARAM_SLH_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG +# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +# define OSSL_PROV_PARAM_BUILDINFO "buildinfo" +# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" +# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" +# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" +# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" +# define OSSL_PROV_PARAM_DSA_SIGN_DISABLED "dsa-sign-disabled" +# define OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK "ecdh-cofactor-check" +# define OSSL_PROV_PARAM_HKDF_DIGEST_CHECK "hkdf-digest-check" +# define OSSL_PROV_PARAM_HKDF_KEY_CHECK "hkdf-key-check" +# define OSSL_PROV_PARAM_HMAC_KEY_CHECK "hmac-key-check" +# define OSSL_PROV_PARAM_KBKDF_KEY_CHECK "kbkdf-key-check" +# define OSSL_PROV_PARAM_KMAC_KEY_CHECK "kmac-key-check" +# define OSSL_PROV_PARAM_NAME "name" +# define OSSL_PROV_PARAM_NO_SHORT_MAC "no-short-mac" +# define OSSL_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK "pbkdf2-lower-bound-check" +# define OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED "rsa-pkcs15-pad-disabled" +# define OSSL_PROV_PARAM_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED "rsa-sign-x931-pad-disabled" +# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" +# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" +# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" +# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" +# define OSSL_PROV_PARAM_SIGNATURE_DIGEST_CHECK "signature-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_DIGEST_CHECK "sshkdf-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_KEY_CHECK "sshkdf-key-check" +# define OSSL_PROV_PARAM_SSKDF_DIGEST_CHECK "sskdf-digest-check" +# define OSSL_PROV_PARAM_SSKDF_KEY_CHECK "sskdf-key-check" +# define OSSL_PROV_PARAM_STATUS "status" +# define OSSL_PROV_PARAM_TDES_ENCRYPT_DISABLED "tdes-encrypt-disabled" +# define OSSL_PROV_PARAM_TLS13_KDF_DIGEST_CHECK "tls13-kdf-digest-check" +# define OSSL_PROV_PARAM_TLS13_KDF_KEY_CHECK "tls13-kdf-key-check" +# define OSSL_PROV_PARAM_TLS1_PRF_DIGEST_CHECK "tls1-prf-digest-check" +# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" +# define OSSL_PROV_PARAM_TLS1_PRF_KEY_CHECK "tls1-prf-key-check" +# define OSSL_PROV_PARAM_VERSION "version" +# define OSSL_PROV_PARAM_X942KDF_KEY_CHECK "x942kdf-key-check" +# define OSSL_PROV_PARAM_X963KDF_DIGEST_CHECK "x963kdf-digest-check" +# define OSSL_PROV_PARAM_X963KDF_KEY_CHECK "x963kdf-key-check" +# define OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_RAND_PARAM_GENERATE "generate" +# define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +# define OSSL_RAND_PARAM_STATE "state" +# define OSSL_RAND_PARAM_STRENGTH "strength" +# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" +# define OSSL_SIGNATURE_PARAM_ADD_RANDOM "additional-random" +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID OSSL_PKEY_PARAM_ALGORITHM_ID +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string" +# define OSSL_SIGNATURE_PARAM_DETERMINISTIC "deterministic" +# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE +# define OSSL_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_SIGNATURE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_CHECK OSSL_PKEY_PARAM_FIPS_SIGN_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK "sign-x931-pad-check" +# define OSSL_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE "verify-message" +# define OSSL_SIGNATURE_PARAM_INSTANCE "instance" +# define OSSL_SIGNATURE_PARAM_KAT "kat" +# define OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING "message-encoding" +# define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_SIGNATURE_PARAM_MU "mu" +# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type" +# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +# define OSSL_SIGNATURE_PARAM_SIGNATURE "signature" +# define OSSL_SIGNATURE_PARAM_TEST_ENTROPY "test-entropy" +# define OSSL_SKEY_PARAM_KEY_LENGTH "key-length" +# define OSSL_SKEY_PARAM_RAW_BYTES "raw-bytes" +# define OSSL_STORE_PARAM_ALIAS "alias" +# define OSSL_STORE_PARAM_DIGEST "digest" +# define OSSL_STORE_PARAM_EXPECT "expect" +# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" +# define OSSL_STORE_PARAM_INPUT_TYPE "input-type" +# define OSSL_STORE_PARAM_ISSUER "name" +# define OSSL_STORE_PARAM_PROPERTIES "properties" +# define OSSL_STORE_PARAM_SERIAL "serial" +# define OSSL_STORE_PARAM_SUBJECT "subject" + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/crmf.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/crmf.h index 71b747ed33d239..4bf550fd47daa9 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/crmf.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/crmf.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/crmf.h.in * - * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -26,6 +26,7 @@ # include # include # include /* for GENERAL_NAME etc. */ +# include /* explicit #includes not strictly needed since implied by the above: */ # include @@ -43,9 +44,12 @@ extern "C" { # define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 # define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 - typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) + +typedef struct ossl_crmf_encryptedkey_st OSSL_CRMF_ENCRYPTEDKEY; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDKEY) + typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) @@ -77,6 +81,36 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) #define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; +void OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(OSSL_CRMF_ATTRIBUTETYPEANDVALUE *v); +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value(sk, idx) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new(cmp) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_null() ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (n)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete(sk, i) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (i))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete_ptr(sk, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_shift(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk),ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), (idx)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set(sk, idx, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), pnum) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup(sk) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) + + typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER) typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY; @@ -118,6 +152,7 @@ typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO) typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTTEMPLATE) typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS) @@ -198,12 +233,14 @@ int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, int rid, int acceptRAVerified, OSSL_LIB_CTX *libctx, const char *propq); OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); -const ASN1_INTEGER -*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const ASN1_INTEGER +*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); X509_EXTENSIONS *OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME @@ -215,10 +252,24 @@ int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl, const X509_NAME *subject, const X509_NAME *issuer, const ASN1_INTEGER *serial); -X509 -*OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, - OSSL_LIB_CTX *libctx, const char *propq, - EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDKEY_get1_encCert(const OSSL_CRMF_ENCRYPTEDKEY *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, unsigned int flags); +unsigned char +*OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *enc, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, int *outlen); +EVP_PKEY *OSSL_CRMF_ENCRYPTEDKEY_get1_pkey(const OSSL_CRMF_ENCRYPTEDKEY *encryptedKey, + X509_STORE *ts, STACK_OF(X509) *extra, EVP_PKEY *pkey, + X509 *cert, ASN1_OCTET_STRING *secret, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSG_centralkeygen_requested(const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr); +# ifndef OPENSSL_NO_CMS +OSSL_CRMF_ENCRYPTEDKEY *OSSL_CRMF_ENCRYPTEDKEY_init_envdata(CMS_EnvelopedData *envdata); +# endif # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/crypto.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/crypto.h index 3f40be6d8c61d5..fd2cfd3e5a9ac4 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/crypto.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/crypto.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/crypto.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -85,9 +85,15 @@ int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock); void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock); int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_add64(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_and(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, CRYPTO_RWLOCK *lock); int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, CRYPTO_RWLOCK *lock); /* No longer needed, so this is a no-op */ #define OPENSSL_malloc_init() while(0) continue @@ -96,6 +102,9 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_zalloc(num) \ CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_aligned_alloc(num, alignment, freeptr) \ + CRYPTO_aligned_alloc(num, alignment, freeptr, \ + OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_realloc(addr, num) \ CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_clear_realloc(addr, old_num, num) \ @@ -124,6 +133,7 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); size_t OPENSSL_strnlen(const char *str, size_t maxlen); +int OPENSSL_strtoul(const char *str, char **endptr, int base, unsigned long *num); int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength, const unsigned char *buf, size_t buflen, const char sep); @@ -160,6 +170,7 @@ const char *OpenSSL_version(int type); # define OPENSSL_FULL_VERSION_STRING 7 # define OPENSSL_MODULES_DIR 8 # define OPENSSL_CPU_INFO 9 +# define OPENSSL_WINCTX 10 const char *OPENSSL_info(int type); /* @@ -174,6 +185,7 @@ const char *OPENSSL_info(int type); # define OPENSSL_INFO_LIST_SEPARATOR 1006 # define OPENSSL_INFO_SEED_SOURCE 1007 # define OPENSSL_INFO_CPU_SETTINGS 1008 +# define OPENSSL_INFO_WINDOWS_CONTEXT 1009 int OPENSSL_issetugid(void); @@ -341,11 +353,14 @@ void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn, CRYPTO_realloc_fn *realloc_fn, CRYPTO_free_fn *free_fn); -void *CRYPTO_malloc(size_t num, const char *file, int line); -void *CRYPTO_zalloc(size_t num, const char *file, int line); -void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); -char *CRYPTO_strdup(const char *str, const char *file, int line); -char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc(size_t num, size_t align, + void **freeptr, const char *file, + int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strdup(const char *str, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); void CRYPTO_free(void *ptr, const char *file, int line); void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line); void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); @@ -354,8 +369,8 @@ void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, int CRYPTO_secure_malloc_init(size_t sz, size_t minsize); int CRYPTO_secure_malloc_done(void); -void *CRYPTO_secure_malloc(size_t num, const char *file, int line); -void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); void CRYPTO_secure_free(void *ptr, const char *file, int line); void CRYPTO_secure_clear_free(void *ptr, size_t num, const char *file, int line); @@ -376,6 +391,9 @@ void OPENSSL_cleanse(void *ptr, size_t len); # define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */ # define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */ +/* max allowed length for value of OPENSSL_MALLOC_FAILURES env var. */ +# define CRYPTO_MEM_CHECK_MAX_FS 256 + void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); # ifndef OPENSSL_NO_DEPRECATED_3_0 # define OPENSSL_mem_debug_push(info) \ @@ -551,6 +569,13 @@ int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file); void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); +int OSSL_LIB_CTX_get_conf_diagnostics(OSSL_LIB_CTX *ctx); +void OSSL_LIB_CTX_set_conf_diagnostics(OSSL_LIB_CTX *ctx, int value); + +void OSSL_sleep(uint64_t millis); + + +void *OSSL_LIB_CTX_get_data(OSSL_LIB_CTX *ctx, int index); # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/ct.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/ct.h index b6dd8c3547710a..e6dd1192a4e0b3 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/ct.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/ct.h @@ -133,7 +133,7 @@ typedef enum { */ CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); - + /* * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library * context and property query string is used. diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/err.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/err.h index 2abf2483488181..daca18e7b757b0 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/err.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/err.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -372,7 +372,7 @@ typedef struct ERR_string_data_st { } ERR_STRING_DATA; DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); -#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp))) +#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp)), lh_ERR_STRING_DATA_hash_thunk, lh_ERR_STRING_DATA_comp_thunk, lh_ERR_STRING_DATA_doall_thunk, lh_ERR_STRING_DATA_doall_arg_thunk)) #define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) @@ -496,6 +496,14 @@ int ERR_get_next_error_library(void); int ERR_set_mark(void); int ERR_pop_to_mark(void); int ERR_clear_last_mark(void); +int ERR_count_to_mark(void); +int ERR_pop(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); #ifdef __cplusplus } diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/fipskey.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/fipskey.h index 42ba014b313ba8..929db18c678364 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/fipskey.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/fipskey.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/fipskey.h.in * - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -29,6 +29,11 @@ extern "C" { */ #define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" +/* + * The FIPS provider vendor name, as a string. + */ +#define FIPS_VENDOR "OpenSSL FIPS Provider" + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/lhash.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/lhash.h index 39dd6254acdeb6..62c55b20fd9716 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/lhash.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/lhash.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -24,6 +24,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -31,9 +34,13 @@ extern "C" { typedef struct lhash_node_st OPENSSL_LH_NODE; typedef int (*OPENSSL_LH_COMPFUNC) (const void *, const void *); +typedef int (*OPENSSL_LH_COMPFUNCTHUNK) (const void *, const void *, OPENSSL_LH_COMPFUNC cfn); typedef unsigned long (*OPENSSL_LH_HASHFUNC) (const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNCTHUNK) (const void *, OPENSSL_LH_HASHFUNC hfn); typedef void (*OPENSSL_LH_DOALL_FUNC) (void *); +typedef void (*OPENSSL_LH_DOALL_FUNC_THUNK) (void *, OPENSSL_LH_DOALL_FUNC doall); typedef void (*OPENSSL_LH_DOALL_FUNCARG) (void *, void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG_THUNK) (void *, void *, OPENSSL_LH_DOALL_FUNCARG doall); typedef struct lhash_st OPENSSL_LHASH; /* @@ -79,26 +86,40 @@ typedef struct lhash_st OPENSSL_LHASH; int OPENSSL_LH_error(OPENSSL_LHASH *lh); OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +OPENSSL_LHASH *OPENSSL_LH_set_thunks(OPENSSL_LHASH *lh, + OPENSSL_LH_HASHFUNCTHUNK hw, + OPENSSL_LH_COMPFUNCTHUNK cw, + OPENSSL_LH_DOALL_FUNC_THUNK daw, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw); void OPENSSL_LH_free(OPENSSL_LHASH *lh); void OPENSSL_LH_flush(OPENSSL_LHASH *lh); void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); -void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg_thunk(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw, + OPENSSL_LH_DOALL_FUNCARG fn, void *arg); + unsigned long OPENSSL_LH_strhash(const char *c); unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); # ifndef OPENSSL_NO_STDIO -void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# endif +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # endif -void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define _LHASH OPENSSL_LHASH @@ -129,110 +150,190 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); /* Helper macro for internal use */ # define DEFINE_LHASH_OF_INTERNAL(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ typedef void (*lh_##type##_doallfunc)(type *a); \ - static ossl_unused ossl_inline type *ossl_check_##type##_lh_plain_type(type *ptr) \ + static ossl_inline unsigned long lh_##type##_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static ossl_inline int lh_##type##_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_inline void lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_inline void lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline type *\ + ossl_check_##type##_lh_plain_type(type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const type *ossl_check_const_##type##_lh_plain_type(const type *ptr) \ + static ossl_unused ossl_inline const type * \ + ossl_check_const_##type##_lh_plain_type(const type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const OPENSSL_LHASH *ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline const OPENSSL_LHASH * \ + ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ { \ return (const OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LHASH *ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline OPENSSL_LHASH * \ + ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ { \ return (OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ + static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC \ + ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ { \ return (OPENSSL_LH_COMPFUNC)cmp; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ + static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC \ + ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ { \ return (OPENSSL_LH_HASHFUNC)hfn; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ + static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC \ + ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ { \ return (OPENSSL_LH_DOALL_FUNC)dfn; \ } \ LHASH_OF(type) -# define DEFINE_LHASH_OF(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ - static ossl_unused ossl_inline LHASH_OF(type) *lh_##type##_new(unsigned long (*hfn)(const type *), \ - int (*cfn)(const type *, const type *)) \ +# ifndef OPENSSL_NO_DEPRECATED_3_1 +# define DEFINE_LHASH_OF_DEPRECATED(type) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ - return (LHASH_OF(type) *) \ - OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ - static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } +# else +# define DEFINE_LHASH_OF_DEPRECATED(type) +# endif + +# define DEFINE_LHASH_OF_EX(type) \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ + static unsigned long \ + lh_##type##_hfn_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static int lh_##type##_cfn_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_free(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_flush(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_flush(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ { \ return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline int \ + lh_##type##_error(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_num_items(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_get_down_load(LHASH_OF(type) *lh) \ { \ - OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ { \ - OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ } \ - static ossl_unused ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ { \ - OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ { \ - return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ } \ - static ossl_unused ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall(LHASH_OF(type) *lh, void (*doall)(type *)) \ { \ - OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ - void (*doall)(type *)) \ + static ossl_unused ossl_inline LHASH_OF(type) * \ + lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ { \ - OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \ + lh_##type##_hfn_thunk, lh_##type##_cfn_thunk, \ + lh_##type##_doall_thunk, \ + lh_##type##_doall_arg_thunk); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall_arg(LHASH_OF(type) *lh, \ - void (*doallarg)(type *, void *), \ - void *arg) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg(LHASH_OF(type) *lh, \ + void (*doallarg)(type *, void *), void *arg) \ { \ OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ } \ LHASH_OF(type) +# define DEFINE_LHASH_OF(type) \ + DEFINE_LHASH_OF_EX(type); \ + DEFINE_LHASH_OF_DEPRECATED(type) \ + LHASH_OF(type) + #define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ int_implement_lhash_doall(type, argtype, const type) @@ -240,17 +341,26 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); int_implement_lhash_doall(type, argtype, type) #define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype##_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG fn) \ + { \ + void (*fn_conv)(cbargtype *, argtype *) = (void (*)(cbargtype *, argtype *))fn; \ + fn_conv((cbargtype *)node, (argtype *)arg); \ + } \ static ossl_unused ossl_inline void \ lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ void (*fn)(cbargtype *, argtype *), \ argtype *arg) \ { \ - OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNCARG)fn, (void *)arg); \ + OPENSSL_LH_doall_arg_thunk((OPENSSL_LHASH *)lh, \ + lh_##type##_doall_##argtype##_thunk, \ + (OPENSSL_LH_DOALL_FUNCARG)fn, \ + (void *)arg); \ } \ LHASH_OF(type) DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); -#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp)), lh_OPENSSL_STRING_hash_thunk, lh_OPENSSL_STRING_comp_thunk, lh_OPENSSL_STRING_doall_thunk, lh_OPENSSL_STRING_doall_arg_thunk)) #define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) @@ -265,7 +375,7 @@ DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); #define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) #define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); -#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp)), lh_OPENSSL_CSTRING_hash_thunk, lh_OPENSSL_CSTRING_comp_thunk, lh_OPENSSL_CSTRING_doall_thunk, lh_OPENSSL_CSTRING_doall_arg_thunk)) #define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/opensslv.h index 5fb5bc63056fe0..71a357701fd5e3 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/opensslv.h @@ -28,8 +28,8 @@ extern "C" { * These macros express version number MAJOR.MINOR.PATCH exactly */ # define OPENSSL_VERSION_MAJOR 3 -# define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 17 +# define OPENSSL_VERSION_MINOR 5 +# define OPENSSL_VERSION_PATCH 2 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.17" -# define OPENSSL_FULL_VERSION_STR "3.0.17" +# define OPENSSL_VERSION_STR "3.5.2" +# define OPENSSL_FULL_VERSION_STR "3.5.2" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "1 Jul 2025" +# define OPENSSL_RELEASE_DATE "5 Aug 2025" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.17 1 Jul 2025" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.2 5 Aug 2025" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/pkcs12.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/pkcs12.h index c5e0cab06491ec..0809645dad0bbf 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/pkcs12.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/pkcs12.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/pkcs12.h.in * - * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -41,6 +44,7 @@ extern "C" { # define PKCS12_MAC_KEY_LENGTH 20 +/* The macro is expected to be used only internally. Kept for backwards compatibility. */ # define PKCS12_SALT_LEN 8 /* It's not clear if these are actually needed... */ @@ -130,7 +134,9 @@ int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); const STACK_OF(PKCS12_SAFEBAG) * PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); @@ -218,6 +224,7 @@ ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); const STACK_OF(X509_ATTRIBUTE) * PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, const char *pass, int passlen, const unsigned char *in, int inlen, @@ -285,6 +292,9 @@ int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, unsigned char *salt, int saltlen, int iter, const EVP_MD *md_type); +int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type, const char *prf_md_name); int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, int saltlen, const EVP_MD *md_type); unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, @@ -305,6 +315,7 @@ DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) void PKCS12_PBE_add(void); int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype); @@ -312,6 +323,11 @@ PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype, OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/pkcs7.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/pkcs7.h index 0ce79bf4fa160e..fa68462aff973b 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/pkcs7.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/pkcs7.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/pkcs7.h.in * - * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -28,6 +28,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -131,8 +134,8 @@ SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INF typedef struct pkcs7_signed_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; struct pkcs7_st *contents; } PKCS7_SIGNED; @@ -158,8 +161,8 @@ typedef struct pkcs7_enveloped_st { typedef struct pkcs7_signedandenveloped_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; PKCS7_ENC_CONTENT *enc_data; STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; @@ -200,7 +203,7 @@ typedef struct pkcs7_st { /* NID_pkcs7_data */ ASN1_OCTET_STRING *data; /* NID_pkcs7_signed */ - PKCS7_SIGNED *sign; + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ /* NID_pkcs7_enveloped */ PKCS7_ENVELOPE *enveloped; /* NID_pkcs7_signedAndEnveloped */ @@ -341,13 +344,13 @@ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, const EVP_MD *dgst); int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); -int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); -int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); int PKCS7_content_new(PKCS7 *p7, int nid); int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, - X509 *x509); + X509 *signer); BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/ssl.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/ssl.h index 3df725c56d6c5e..7e3d89c7ef3dc9 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/ssl.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/ssl.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/ssl.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -24,6 +24,7 @@ # endif # include +# include # include # include # include @@ -42,6 +43,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -231,10 +235,8 @@ typedef struct ssl_cipher_st SSL_CIPHER; typedef struct ssl_session_st SSL_SESSION; typedef struct tls_sigalgs_st TLS_SIGALGS; typedef struct ssl_conf_ctx_st SSL_CONF_CTX; -typedef struct ssl_comp_st SSL_COMP; STACK_OF(SSL_CIPHER); -STACK_OF(SSL_COMP); /* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ typedef struct srtp_protection_profile_st { @@ -278,28 +280,31 @@ typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, /* Extension context codes */ /* This extension is only allowed in TLS */ -#define SSL_EXT_TLS_ONLY 0x0001 +#define SSL_EXT_TLS_ONLY 0x00001 /* This extension is only allowed in DTLS */ -#define SSL_EXT_DTLS_ONLY 0x0002 +#define SSL_EXT_DTLS_ONLY 0x00002 /* Some extensions may be allowed in DTLS but we don't implement them for it */ -#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 /* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ -#define SSL_EXT_SSL3_ALLOWED 0x0008 +#define SSL_EXT_SSL3_ALLOWED 0x00008 /* Extension is only defined for TLS1.2 and below */ -#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 /* Extension is only defined for TLS1.3 and above */ -#define SSL_EXT_TLS1_3_ONLY 0x0020 +#define SSL_EXT_TLS1_3_ONLY 0x00020 /* Ignore this extension during parsing if we are resuming */ -#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 -#define SSL_EXT_CLIENT_HELLO 0x0080 +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 /* Really means TLS1.2 or below */ -#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 -#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 -#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 -#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 -#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 -#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 -#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 /* Typedefs for handling custom extensions */ @@ -404,7 +409,7 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); */ # define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_BIT(22) /* - * If set, a server will allow a client to issue a SSLv3.0 version + * If set, a server will allow a client to issue an SSLv3.0 version * number as latest version supported in the premaster secret, even when * TLSv1.0 (version 3.1) was announced in the client hello. Normally * this is forbidden to prevent version rollback attacks. @@ -430,6 +435,19 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); * interoperability with CryptoPro CSP 3.x */ # define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +# define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +# define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) + /* Enable KTLS TX zerocopy on Linux */ +# define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) + +#define SSL_OP_PREFER_NO_DHE_KEX SSL_OP_BIT(35) /* * Option "collections." @@ -574,6 +592,8 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); # define CERT_PKEY_CERT_TYPE 0x400 /* Cert chain suitable to Suite B */ # define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +# define CERT_PKEY_RPK 0x1000 # define SSL_CONF_FLAG_CMDLINE 0x1 # define SSL_CONF_FLAG_FILE 0x2 @@ -965,6 +985,7 @@ uint32_t SSL_get_recv_max_early_data(const SSL *s); # include /* This is mostly sslv3 with a few tweaks */ # include /* Datagram TLS */ # include /* Support for the use_srtp extension */ +# include #ifdef __cplusplus extern "C" { @@ -1000,32 +1021,6 @@ SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) #define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) #define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) #define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) -SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) -#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) -#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) -#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) -#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) -#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) -#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) -#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) -#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) -#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) -#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) -#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) /* compatibility */ @@ -1066,6 +1061,7 @@ typedef enum { DTLS_ST_CR_HELLO_VERIFY_REQUEST, TLS_ST_CR_SRVR_HELLO, TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, TLS_ST_CR_CERT_STATUS, TLS_ST_CR_KEY_EXCH, TLS_ST_CR_CERT_REQ, @@ -1075,6 +1071,7 @@ typedef enum { TLS_ST_CR_FINISHED, TLS_ST_CW_CLNT_HELLO, TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, TLS_ST_CW_KEY_EXCH, TLS_ST_CW_CERT_VRFY, TLS_ST_CW_CHANGE, @@ -1085,10 +1082,12 @@ typedef enum { DTLS_ST_SW_HELLO_VERIFY_REQUEST, TLS_ST_SW_SRVR_HELLO, TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, TLS_ST_SW_KEY_EXCH, TLS_ST_SW_CERT_REQ, TLS_ST_SW_SRVR_DONE, TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, TLS_ST_SR_KEY_EXCH, TLS_ST_SR_CERT_VRFY, TLS_ST_SR_NEXT_PROTO, @@ -1380,9 +1379,13 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_CTRL_GET_SIGNATURE_NID 132 # define SSL_CTRL_GET_TMP_KEY 133 # define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +# define SSL_CTRL_GET_IANA_GROUPS 135 # define SSL_CTRL_SET_RETRY_VERIFY 136 # define SSL_CTRL_GET_VERIFY_CERT_STORE 137 # define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +# define SSL_CTRL_GET0_IMPLEMENTED_GROUPS 139 +# define SSL_CTRL_GET_SIGNATURE_NAME 140 +# define SSL_CTRL_GET_PEER_SIGNATURE_NAME 141 # define SSL_CERT_SET_FIRST 1 # define SSL_CERT_SET_NEXT 2 # define SSL_CERT_SET_SERVER 3 @@ -1485,10 +1488,15 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get1_groups(s, glist) \ SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_IANA_GROUPS,0,(uint16_t **)(plst)) # define SSL_CTX_set1_groups(ctx, glist, glistlen) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) # define SSL_CTX_set1_groups_list(ctx, s) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s)) +# define SSL_CTX_get0_implemented_groups(ctx, all, out) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET0_IMPLEMENTED_GROUPS, all, \ + (STACK_OF(OPENSSL_CSTRING) *)(out)) # define SSL_set1_groups(s, glist, glistlen) \ SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist)) # define SSL_set1_groups_list(s, str) \ @@ -1520,8 +1528,12 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) (char *)(clist)) # define SSL_set1_client_certificate_types(s, clist, clistlen) \ SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist)) +# define SSL_get0_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn) +# define SSL_get0_peer_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_peer_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) # define SSL_get_peer_tmp_key(s, pk) \ @@ -1549,6 +1561,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get_max_proto_version(s) \ SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +const char *SSL_get0_group_name(SSL *s); const char *SSL_group_to_name(SSL *s, int id); /* Backwards compatibility, original 1.1.0 names */ @@ -1613,7 +1626,11 @@ void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); __owur int SSL_want(const SSL *s); __owur int SSL_clear(SSL *s); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()") void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); +#endif +void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm); __owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); __owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); @@ -1725,13 +1742,21 @@ __owur const char *SSL_state_string(const SSL *s); __owur const char *SSL_rstate_string(const SSL *s); __owur const char *SSL_state_string_long(const SSL *s); __owur const char *SSL_rstate_string_long(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_get_time_ex()") __owur long SSL_SESSION_get_time(const SSL_SESSION *s); +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_set_time_ex()") __owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +#endif __owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); __owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); __owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); __owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); +__owur time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s); +__owur time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t); + __owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); __owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, @@ -1783,6 +1808,9 @@ __owur int SSL_has_matching_session_id(const SSL *s, unsigned int id_len); SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); # ifdef OPENSSL_X509_H __owur X509 *SSL_get0_peer_certificate(const SSL *s); @@ -1840,6 +1868,8 @@ __owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, SSL *SSL_new(SSL_CTX *ctx); int SSL_up_ref(SSL *s); int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); __owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, unsigned int sid_ctx_len); @@ -1848,8 +1878,8 @@ __owur int SSL_set_purpose(SSL *ssl, int purpose); __owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); __owur int SSL_set_trust(SSL *ssl, int trust); -__owur int SSL_set1_host(SSL *s, const char *hostname); -__owur int SSL_add1_host(SSL *s, const char *hostname); +__owur int SSL_set1_host(SSL *s, const char *host); +__owur int SSL_add1_host(SSL *s, const char *host); __owur const char *SSL_get0_peername(SSL *s); void SSL_set_hostflags(SSL *s, unsigned int flags); @@ -1924,6 +1954,11 @@ OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg); void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, void *arg); +typedef int (*SSL_new_pending_conn_cb_fn) (SSL_CTX *ctx, SSL *new_ssl, + void *arg); +void SSL_CTX_set_new_pending_conn_cb(SSL_CTX *c, SSL_new_pending_conn_cb_fn cb, + void *arg); + int SSL_client_hello_isv2(SSL *s); unsigned int SSL_client_hello_get0_legacy_version(SSL *s); size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); @@ -1932,6 +1967,8 @@ size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); size_t SSL_client_hello_get0_compression_methods(SSL *s, const unsigned char **out); int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); int SSL_client_hello_get0_ext(SSL *s, unsigned int type, const unsigned char **out, size_t *outlen); @@ -1978,6 +2015,12 @@ long SSL_callback_ctrl(SSL *, int, void (*)(void)); long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); +# define SSL_WRITE_FLAG_CONCLUDE (1U << 0) + +__owur int SSL_write_ex2(SSL *s, const void *buf, size_t num, + uint64_t flags, + size_t *written); + # define SSL_EARLY_DATA_NOT_SENT 0 # define SSL_EARLY_DATA_REJECTED 1 # define SSL_EARLY_DATA_ACCEPTED 2 @@ -1986,6 +2029,7 @@ __owur int SSL_get_early_data_status(const SSL *s); __owur int SSL_get_error(const SSL *s, int ret_code); __owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); /* This sets the 'default' SSL version that SSL_new() will create */ # ifndef OPENSSL_NO_DEPRECATED_3_0 @@ -2281,6 +2325,8 @@ void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); +int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size, + size_t hs_block_size); int SSL_set_record_padding_callback(SSL *ssl, size_t (*cb) (SSL *ssl, int type, @@ -2288,12 +2334,255 @@ int SSL_set_record_padding_callback(SSL *ssl, void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); void *SSL_get_record_padding_callback_arg(const SSL *ssl); int SSL_set_block_padding(SSL *ssl, size_t block_size); - +int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size, + size_t hs_block_size); int SSL_set_num_tickets(SSL *s, size_t num_tickets); size_t SSL_get_num_tickets(const SSL *s); int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +__owur int SSL_is_listener(SSL *ssl); +__owur SSL *SSL_get0_listener(SSL *s); +#define SSL_LISTENER_FLAG_NO_VALIDATE (1UL << 1) +__owur SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags); +__owur SSL *SSL_new_listener_from(SSL *ssl, uint64_t flags); +__owur SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags); +#define SSL_ACCEPT_CONNECTION_NO_BLOCK (1UL << 0) +__owur SSL *SSL_accept_connection(SSL *ssl, uint64_t flags); +__owur size_t SSL_get_accept_connection_queue_len(SSL *ssl); +__owur int SSL_listen(SSL *ssl); + +__owur int SSL_is_domain(SSL *s); +__owur SSL *SSL_get0_domain(SSL *s); +__owur SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags); + +#define SSL_DOMAIN_FLAG_SINGLE_THREAD (1U << 0) +#define SSL_DOMAIN_FLAG_MULTI_THREAD (1U << 1) +#define SSL_DOMAIN_FLAG_THREAD_ASSISTED (1U << 2) +#define SSL_DOMAIN_FLAG_BLOCKING (1U << 3) +#define SSL_DOMAIN_FLAG_LEGACY_BLOCKING (1U << 4) + +__owur int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t domain_flags); +__owur int SSL_CTX_get_domain_flags(const SSL_CTX *ctx, uint64_t *domain_flags); +__owur int SSL_get_domain_flags(const SSL *ssl, uint64_t *domain_flags); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +# ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +# endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + +# define SSL_VALUE_CLASS_GENERIC 0 +# define SSL_VALUE_CLASS_FEATURE_REQUEST 1 +# define SSL_VALUE_CLASS_FEATURE_PEER_REQUEST 2 +# define SSL_VALUE_CLASS_FEATURE_NEGOTIATED 3 + +# define SSL_VALUE_NONE 0 +# define SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL 1 +# define SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL 2 +# define SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL 3 +# define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL 4 +# define SSL_VALUE_QUIC_IDLE_TIMEOUT 5 +# define SSL_VALUE_EVENT_HANDLING_MODE 6 +# define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7 +# define SSL_VALUE_STREAM_WRITE_BUF_USED 8 +# define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9 + +# define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0 +# define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1 +# define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT 2 + +int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v); +int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v); + +# define SSL_get_generic_value_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_set_generic_value_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_get_feature_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_set_feature_request_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_get_feature_peer_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, (id), (v)) +# define SSL_get_feature_negotiated_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_NEGOTIATED, (id), (v)) + +# define SSL_get_quic_stream_bidi_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_bidi_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, \ + (value)) + +# define SSL_get_event_handling_mode(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) +# define SSL_set_event_handling_mode(ssl, value) \ + SSL_set_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) + +# define SSL_get_stream_write_buf_size(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_SIZE, \ + (value)) +# define SSL_get_stream_write_buf_used(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_USED, \ + (value)) +# define SSL_get_stream_write_buf_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_AVAIL, \ + (value)) + +# define SSL_POLL_EVENT_NONE 0 + +# define SSL_POLL_EVENT_F (1U << 0) /* F (Failure) */ +# define SSL_POLL_EVENT_EL (1U << 1) /* EL (Exception on Listener) */ +# define SSL_POLL_EVENT_EC (1U << 2) /* EC (Exception on Conn) */ +# define SSL_POLL_EVENT_ECD (1U << 3) /* ECD (Exception on Conn Drained) */ +# define SSL_POLL_EVENT_ER (1U << 4) /* ER (Exception on Read) */ +# define SSL_POLL_EVENT_EW (1U << 5) /* EW (Exception on Write) */ +# define SSL_POLL_EVENT_R (1U << 6) /* R (Readable) */ +# define SSL_POLL_EVENT_W (1U << 7) /* W (Writable) */ +# define SSL_POLL_EVENT_IC (1U << 8) /* IC (Incoming Connection) */ +# define SSL_POLL_EVENT_ISB (1U << 9) /* ISB (Incoming Stream: Bidi) */ +# define SSL_POLL_EVENT_ISU (1U << 10) /* ISU (Incoming Stream: Uni) */ +# define SSL_POLL_EVENT_OSB (1U << 11) /* OSB (Outgoing Stream: Bidi) */ +# define SSL_POLL_EVENT_OSU (1U << 12) /* OSU (Outgoing Stream: Uni) */ + +# define SSL_POLL_EVENT_RW (SSL_POLL_EVENT_R | SSL_POLL_EVENT_W) +# define SSL_POLL_EVENT_RE (SSL_POLL_EVENT_R | SSL_POLL_EVENT_ER) +# define SSL_POLL_EVENT_WE (SSL_POLL_EVENT_W | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_RWE (SSL_POLL_EVENT_RE | SSL_POLL_EVENT_WE) +# define SSL_POLL_EVENT_E (SSL_POLL_EVENT_EL | SSL_POLL_EVENT_EC \ + | SSL_POLL_EVENT_ER | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_IS (SSL_POLL_EVENT_ISB | SSL_POLL_EVENT_ISU) +# define SSL_POLL_EVENT_ISE (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_EC) +# define SSL_POLL_EVENT_I (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_IC) +# define SSL_POLL_EVENT_OS (SSL_POLL_EVENT_OSB | SSL_POLL_EVENT_OSU) +# define SSL_POLL_EVENT_OSE (SSL_POLL_EVENT_OS | SSL_POLL_EVENT_EC) + +typedef struct ssl_poll_item_st { + BIO_POLL_DESCRIPTOR desc; + uint64_t events, revents; +} SSL_POLL_ITEM; + +# define SSL_POLL_FLAG_NO_HANDLE_EVENTS (1U << 0) + +__owur int SSL_poll(SSL_POLL_ITEM *items, + size_t num_items, + size_t stride, + const struct timeval *timeout, + uint64_t flags, + size_t *result_count); + +static ossl_inline ossl_unused BIO_POLL_DESCRIPTOR +SSL_as_poll_descriptor(SSL *s) +{ + BIO_POLL_DESCRIPTOR d; + + d.type = BIO_POLL_DESCRIPTOR_TYPE_SSL; + d.value.ssl = s; + return d; +} + # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define SSL_cache_hit(s) SSL_session_reused(s) # endif @@ -2593,6 +2882,51 @@ void SSL_set_allow_early_data_cb(SSL *s, const char *OSSL_default_cipher_list(void); const char *OSSL_default_ciphersuites(void); +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + +/* + * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used. + */ +# define OSSL_RECORD_PROTECTION_LEVEL_NONE 0 +# define OSSL_RECORD_PROTECTION_LEVEL_EARLY 1 +# define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE 2 +# define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3 + +int SSL_set_quic_tls_cbs(SSL *s, const OSSL_DISPATCH *qtdis, void *arg); +int SSL_set_quic_tls_transport_params(SSL *s, + const unsigned char *params, + size_t params_len); + +int SSL_set_quic_tls_early_data_enabled(SSL *s, int enabled); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/x509.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/x509.h index 1f7755e5b69c75..d013458c226461 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/x509.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/x509.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -40,6 +40,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -162,16 +165,24 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) # define X509_FILETYPE_ASN1 2 # define X509_FILETYPE_DEFAULT 3 -# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 -# define X509v3_KU_NON_REPUDIATION 0x0040 -# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 -# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 -# define X509v3_KU_KEY_AGREEMENT 0x0008 -# define X509v3_KU_KEY_CERT_SIGN 0x0004 -# define X509v3_KU_CRL_SIGN 0x0002 -# define X509v3_KU_ENCIPHER_ONLY 0x0001 -# define X509v3_KU_DECIPHER_ONLY 0x8000 -# define X509v3_KU_UNDEF 0xffff +/*- + * : + * The KeyUsage BITSTRING is treated as a little-endian integer, hence bit `0` + * is 0x80, while bit `7` is 0x01 (the LSB of the integer value), bit `8` is + * then the MSB of the second octet, or 0x8000. + */ +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 /* (0) */ +# define X509v3_KU_NON_REPUDIATION 0x0040 /* (1) */ +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 /* (2) */ +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 /* (3) */ +# define X509v3_KU_KEY_AGREEMENT 0x0008 /* (4) */ +# define X509v3_KU_KEY_CERT_SIGN 0x0004 /* (5) */ +# define X509v3_KU_CRL_SIGN 0x0002 /* (6) */ +# define X509v3_KU_ENCIPHER_ONLY 0x0001 /* (7) */ +# define X509v3_KU_DECIPHER_ONLY 0x8000 /* (8) */ +# ifndef OPENSSL_NO_DEPRECATED_3_4 +# define X509v3_KU_UNDEF 0xffff /* vestigial, not used */ +# endif struct X509_algor_st { ASN1_OBJECT *algorithm; @@ -462,7 +473,12 @@ typedef struct PBKDF2PARAM_st { X509_ALGOR *prf; } PBKDF2PARAM; -#ifndef OPENSSL_NO_SCRYPT +typedef struct { + X509_ALGOR *keyDerivationFunc; + X509_ALGOR *messageAuthScheme; +} PBMAC1PARAM; + +# ifndef OPENSSL_NO_SCRYPT typedef struct SCRYPT_PARAMS_st { ASN1_OCTET_STRING *salt; ASN1_INTEGER *costParameter; @@ -470,7 +486,7 @@ typedef struct SCRYPT_PARAMS_st { ASN1_INTEGER *parallelizationParameter; ASN1_INTEGER *keyLength; } SCRYPT_PARAMS; -#endif +# endif #ifdef __cplusplus } @@ -603,6 +619,8 @@ EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); # endif @@ -651,6 +669,8 @@ EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); DECLARE_ASN1_DUP_FUNCTION(X509) @@ -884,12 +904,12 @@ int X509_REQ_get_signature_nid(const X509_REQ *req); int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); -EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); int X509_REQ_extension_nid(int nid); int *X509_REQ_get_extension_nids(void); void X509_REQ_set_extension_nids(int *nids); -STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(OSSL_FUTURE_CONST X509_REQ *req); int X509_REQ_add_extensions_nid(X509_REQ *req, const STACK_OF(X509_EXTENSION) *exts, int nid); int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); @@ -950,13 +970,14 @@ X509_REVOKED_get0_extensions(const X509_REVOKED *r); X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); -int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); -int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey); +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); int X509_chain_check_suiteb(int *perror_depth, X509 *x, STACK_OF(X509) *chain, unsigned long flags); int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); @@ -1077,6 +1098,8 @@ X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, X509_EXTENSION *ex, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_extensions(STACK_OF(X509_EXTENSION) **target, + const STACK_OF(X509_EXTENSION) *exts); int X509_get_ext_count(const X509 *x); int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); @@ -1198,9 +1221,10 @@ X509 *X509_find_by_subject(STACK_OF(X509) *sk, const X509_NAME *name); DECLARE_ASN1_FUNCTIONS(PBEPARAM) DECLARE_ASN1_FUNCTIONS(PBE2PARAM) DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) -#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(PBMAC1PARAM) +# ifndef OPENSSL_NO_SCRYPT DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) -#endif +# endif int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, const unsigned char *salt, int saltlen); @@ -1237,6 +1261,7 @@ X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, int prf_nid, int keylen, OSSL_LIB_CTX *libctx); +PBKDF2PARAM *PBMAC1_get1_pbkdf2_param(const X509_ALGOR *macalg); /* PKCS#8 utilities */ DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) @@ -1262,6 +1287,8 @@ int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len); +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, int ptype, void *pval, unsigned char *penc, int penclen); diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/x509_acert.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/x509_acert.h new file mode 100644 index 00000000000000..9dde625677f9a9 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/x509_acert.h @@ -0,0 +1,294 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/x509_acert.h.in + * + * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_X509_ACERT_H +# define OPENSSL_X509_ACERT_H +# pragma once + +# include +# include +# include + +typedef struct X509_acert_st X509_ACERT; +typedef struct X509_acert_info_st X509_ACERT_INFO; +typedef struct ossl_object_digest_info_st OSSL_OBJECT_DIGEST_INFO; +typedef struct ossl_issuer_serial_st OSSL_ISSUER_SERIAL; +typedef struct X509_acert_issuer_v2form_st X509_ACERT_ISSUER_V2FORM; + +DECLARE_ASN1_FUNCTIONS(X509_ACERT) +DECLARE_ASN1_DUP_FUNCTION(X509_ACERT) +DECLARE_ASN1_ITEM(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_OBJECT_DIGEST_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_ISSUER_SERIAL) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_ISSUER_V2FORM) + +# ifndef OPENSSL_NO_STDIO +X509_ACERT *d2i_X509_ACERT_fp(FILE *fp, X509_ACERT **acert); +int i2d_X509_ACERT_fp(FILE *fp, const X509_ACERT *acert); +# endif + +DECLARE_PEM_rw(X509_ACERT, X509_ACERT) + +X509_ACERT *d2i_X509_ACERT_bio(BIO *bp, X509_ACERT **acert); +int i2d_X509_ACERT_bio(BIO *bp, const X509_ACERT *acert); + +int X509_ACERT_sign(X509_ACERT *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_ACERT_sign_ctx(X509_ACERT *x, EVP_MD_CTX *ctx); +int X509_ACERT_verify(X509_ACERT *a, EVP_PKEY *r); + +# define X509_ACERT_VERSION_2 1 + +const GENERAL_NAMES *X509_ACERT_get0_holder_entityName(const X509_ACERT *x); +const OSSL_ISSUER_SERIAL *X509_ACERT_get0_holder_baseCertId(const X509_ACERT *x); +const OSSL_OBJECT_DIGEST_INFO * X509_ACERT_get0_holder_digest(const X509_ACERT *x); +const X509_NAME *X509_ACERT_get0_issuerName(const X509_ACERT *x); +long X509_ACERT_get_version(const X509_ACERT *x); +void X509_ACERT_get0_signature(const X509_ACERT *x, + const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_ACERT_get_signature_nid(const X509_ACERT *x); +const X509_ALGOR *X509_ACERT_get0_info_sigalg(const X509_ACERT *x); +const ASN1_INTEGER *X509_ACERT_get0_serialNumber(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notBefore(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notAfter(const X509_ACERT *x); +const ASN1_BIT_STRING *X509_ACERT_get0_issuerUID(const X509_ACERT *x); + +int X509_ACERT_print(BIO *bp, X509_ACERT *x); +int X509_ACERT_print_ex(BIO *bp, X509_ACERT *x, unsigned long nmflags, + unsigned long cflag); + +int X509_ACERT_get_attr_count(const X509_ACERT *x); +int X509_ACERT_get_attr_by_NID(const X509_ACERT *x, int nid, int lastpos); +int X509_ACERT_get_attr_by_OBJ(const X509_ACERT *x, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_ACERT_get_attr(const X509_ACERT *x, int loc); +X509_ATTRIBUTE *X509_ACERT_delete_attr(X509_ACERT *x, int loc); + +void *X509_ACERT_get_ext_d2i(const X509_ACERT *x, int nid, int *crit, int *idx); +int X509_ACERT_add1_ext_i2d(X509_ACERT *x, int nid, void *value, int crit, + unsigned long flags); +const STACK_OF(X509_EXTENSION) *X509_ACERT_get0_extensions(const X509_ACERT *x); + +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY 0 +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY_CERT 1 +# define OSSL_OBJECT_DIGEST_INFO_OTHER 2 /* must not be used in RFC 5755 profile */ +int X509_ACERT_set_version(X509_ACERT *x, long version); +void X509_ACERT_set0_holder_entityName(X509_ACERT *x, GENERAL_NAMES *name); +void X509_ACERT_set0_holder_baseCertId(X509_ACERT *x, OSSL_ISSUER_SERIAL *isss); +void X509_ACERT_set0_holder_digest(X509_ACERT *x, + OSSL_OBJECT_DIGEST_INFO *dinfo); + +int X509_ACERT_add1_attr(X509_ACERT *x, X509_ATTRIBUTE *attr); +int X509_ACERT_add1_attr_by_OBJ(X509_ACERT *x, const ASN1_OBJECT *obj, + int type, const void *bytes, int len); +int X509_ACERT_add1_attr_by_NID(X509_ACERT *x, int nid, int type, + const void *bytes, int len); +int X509_ACERT_add1_attr_by_txt(X509_ACERT *x, const char *attrname, int type, + const unsigned char *bytes, int len); +int X509_ACERT_add_attr_nconf(CONF *conf, const char *section, + X509_ACERT *acert); + +int X509_ACERT_set1_issuerName(X509_ACERT *x, const X509_NAME *name); +int X509_ACERT_set1_serialNumber(X509_ACERT *x, const ASN1_INTEGER *serial); +int X509_ACERT_set1_notBefore(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); +int X509_ACERT_set1_notAfter(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); + +void OSSL_OBJECT_DIGEST_INFO_get0_digest(const OSSL_OBJECT_DIGEST_INFO *o, + int *digestedObjectType, + const X509_ALGOR **digestAlgorithm, + const ASN1_BIT_STRING **digest); + +int OSSL_OBJECT_DIGEST_INFO_set1_digest(OSSL_OBJECT_DIGEST_INFO *o, + int digestedObjectType, + X509_ALGOR *digestAlgorithm, + ASN1_BIT_STRING *digest); + +const X509_NAME *OSSL_ISSUER_SERIAL_get0_issuer(const OSSL_ISSUER_SERIAL *isss); +const ASN1_INTEGER *OSSL_ISSUER_SERIAL_get0_serial(const OSSL_ISSUER_SERIAL *isss); +const ASN1_BIT_STRING *OSSL_ISSUER_SERIAL_get0_issuerUID(const OSSL_ISSUER_SERIAL *isss); + +int OSSL_ISSUER_SERIAL_set1_issuer(OSSL_ISSUER_SERIAL *isss, + const X509_NAME *issuer); +int OSSL_ISSUER_SERIAL_set1_serial(OSSL_ISSUER_SERIAL *isss, + const ASN1_INTEGER *serial); +int OSSL_ISSUER_SERIAL_set1_issuerUID(OSSL_ISSUER_SERIAL *isss, + const ASN1_BIT_STRING *uid); + +# define OSSL_IETFAS_OCTETS 0 +# define OSSL_IETFAS_OID 1 +# define OSSL_IETFAS_STRING 2 + +typedef struct OSSL_IETF_ATTR_SYNTAX_VALUE_st OSSL_IETF_ATTR_SYNTAX_VALUE; +typedef struct OSSL_IETF_ATTR_SYNTAX_st OSSL_IETF_ATTR_SYNTAX; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_value(sk, idx) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new(cmp) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_null() ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (n)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete(sk, i) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (i))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete_ptr(sk, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_pop(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_shift(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_shift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk),ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), (idx)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set(sk, idx, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_set(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), pnum) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_dup(sk) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_copyfunc_type(copyfunc), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set_cmp_func(sk, cmp) ((sk_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) + + +DECLARE_ASN1_ITEM(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX) + +const GENERAL_NAMES * +OSSL_IETF_ATTR_SYNTAX_get0_policyAuthority(const OSSL_IETF_ATTR_SYNTAX *a); +void OSSL_IETF_ATTR_SYNTAX_set0_policyAuthority(OSSL_IETF_ATTR_SYNTAX *a, + GENERAL_NAMES *names); + +int OSSL_IETF_ATTR_SYNTAX_get_value_num(const OSSL_IETF_ATTR_SYNTAX *a); +void *OSSL_IETF_ATTR_SYNTAX_get0_value(const OSSL_IETF_ATTR_SYNTAX *a, + int ind, int *type); +int OSSL_IETF_ATTR_SYNTAX_add1_value(OSSL_IETF_ATTR_SYNTAX *a, int type, + void *data); +int OSSL_IETF_ATTR_SYNTAX_print(BIO *bp, OSSL_IETF_ATTR_SYNTAX *a, int indent); + +struct TARGET_CERT_st { + OSSL_ISSUER_SERIAL *targetCertificate; + GENERAL_NAME *targetName; + OSSL_OBJECT_DIGEST_INFO *certDigestInfo; +}; + +typedef struct TARGET_CERT_st OSSL_TARGET_CERT; + +# define OSSL_TGT_TARGET_NAME 0 +# define OSSL_TGT_TARGET_GROUP 1 +# define OSSL_TGT_TARGET_CERT 2 + +typedef struct TARGET_st { + int type; + union { + GENERAL_NAME *targetName; + GENERAL_NAME *targetGroup; + OSSL_TARGET_CERT *targetCert; + } choice; +} OSSL_TARGET; + +typedef STACK_OF(OSSL_TARGET) OSSL_TARGETS; +typedef STACK_OF(OSSL_TARGETS) OSSL_TARGETING_INFORMATION; + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGET, OSSL_TARGET, OSSL_TARGET) +#define sk_OSSL_TARGET_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_value(sk, idx) ((OSSL_TARGET *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGET_sk_type(sk), (idx))) +#define sk_OSSL_TARGET_new(cmp) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new(ossl_check_OSSL_TARGET_compfunc_type(cmp))) +#define sk_OSSL_TARGET_new_null() ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGET_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGET_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGET_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGET_sk_type(sk), (n)) +#define sk_OSSL_TARGET_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_delete(sk, i) ((OSSL_TARGET *)OPENSSL_sk_delete(ossl_check_OSSL_TARGET_sk_type(sk), (i))) +#define sk_OSSL_TARGET_delete_ptr(sk, ptr) ((OSSL_TARGET *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_pop(sk) ((OSSL_TARGET *)OPENSSL_sk_pop(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_shift(sk) ((OSSL_TARGET *)OPENSSL_sk_shift(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGET_sk_type(sk),ossl_check_OSSL_TARGET_freefunc_type(freefunc)) +#define sk_OSSL_TARGET_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), (idx)) +#define sk_OSSL_TARGET_set(sk, idx, ptr) ((OSSL_TARGET *)OPENSSL_sk_set(ossl_check_OSSL_TARGET_sk_type(sk), (idx), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), pnum) +#define sk_OSSL_TARGET_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_dup(sk) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_copyfunc_type(copyfunc), ossl_check_OSSL_TARGET_freefunc_type(freefunc))) +#define sk_OSSL_TARGET_set_cmp_func(sk, cmp) ((sk_OSSL_TARGET_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGETS, OSSL_TARGETS, OSSL_TARGETS) +#define sk_OSSL_TARGETS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_value(sk, idx) ((OSSL_TARGETS *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGETS_sk_type(sk), (idx))) +#define sk_OSSL_TARGETS_new(cmp) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new(ossl_check_OSSL_TARGETS_compfunc_type(cmp))) +#define sk_OSSL_TARGETS_new_null() ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGETS_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGETS_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGETS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGETS_sk_type(sk), (n)) +#define sk_OSSL_TARGETS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_delete(sk, i) ((OSSL_TARGETS *)OPENSSL_sk_delete(ossl_check_OSSL_TARGETS_sk_type(sk), (i))) +#define sk_OSSL_TARGETS_delete_ptr(sk, ptr) ((OSSL_TARGETS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_pop(sk) ((OSSL_TARGETS *)OPENSSL_sk_pop(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_shift(sk) ((OSSL_TARGETS *)OPENSSL_sk_shift(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGETS_sk_type(sk),ossl_check_OSSL_TARGETS_freefunc_type(freefunc)) +#define sk_OSSL_TARGETS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), (idx)) +#define sk_OSSL_TARGETS_set(sk, idx, ptr) ((OSSL_TARGETS *)OPENSSL_sk_set(ossl_check_OSSL_TARGETS_sk_type(sk), (idx), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), pnum) +#define sk_OSSL_TARGETS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_dup(sk) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_copyfunc_type(copyfunc), ossl_check_OSSL_TARGETS_freefunc_type(freefunc))) +#define sk_OSSL_TARGETS_set_cmp_func(sk, cmp) ((sk_OSSL_TARGETS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_compfunc_type(cmp))) + + +DECLARE_ASN1_FUNCTIONS(OSSL_TARGET) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETS) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETING_INFORMATION) + +typedef STACK_OF(OSSL_ISSUER_SERIAL) OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL) +#define sk_OSSL_ISSUER_SERIAL_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_value(sk, idx) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_value(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), (idx))) +#define sk_OSSL_ISSUER_SERIAL_new(cmp) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) +#define sk_OSSL_ISSUER_SERIAL_new_null() ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ISSUER_SERIAL_new_reserve(cmp, n) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp), (n))) +#define sk_OSSL_ISSUER_SERIAL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (n)) +#define sk_OSSL_ISSUER_SERIAL_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_delete(sk, i) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (i))) +#define sk_OSSL_ISSUER_SERIAL_delete_ptr(sk, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_pop(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_pop(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_shift(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_shift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk),ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc)) +#define sk_OSSL_ISSUER_SERIAL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), (idx)) +#define sk_OSSL_ISSUER_SERIAL_set(sk, idx, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_set(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (idx), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), pnum) +#define sk_OSSL_ISSUER_SERIAL_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_dup(sk) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_copyfunc_type(copyfunc), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc))) +#define sk_OSSL_ISSUER_SERIAL_set_cmp_func(sk, cmp) ((sk_OSSL_ISSUER_SERIAL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) + + +#endif diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/x509_vfy.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/x509_vfy.h index 29b0e147adcab1..c9bdc3b39d685d 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/x509_vfy.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/x509_vfy.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509_vfy.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -411,6 +411,7 @@ X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ # define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 # define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 # define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +# define X509_V_ERR_RPK_UNTRUSTED 95 /* Certificate verify flags */ # ifndef OPENSSL_NO_DEPRECATED_1_1_0 @@ -491,71 +492,72 @@ int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); X509_STORE *X509_STORE_new(void); -void X509_STORE_free(X509_STORE *v); -int X509_STORE_lock(X509_STORE *ctx); -int X509_STORE_unlock(X509_STORE *ctx); -int X509_STORE_up_ref(X509_STORE *v); -STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *v); -STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *st); -STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get1_objects(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, const X509_NAME *nm); STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, const X509_NAME *nm); -int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); -int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); -int X509_STORE_set_trust(X509_STORE *ctx, int trust); -int X509_STORE_set1_param(X509_STORE *ctx, const X509_VERIFY_PARAM *pm); -X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *ctx); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); -void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); #define X509_STORE_set_verify_func(ctx, func) \ X509_STORE_set_verify((ctx),(func)) void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, X509_STORE_CTX_verify_fn verify); -X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *ctx); -void X509_STORE_set_verify_cb(X509_STORE *ctx, +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, X509_STORE_CTX_verify_cb verify_cb); # define X509_STORE_set_verify_cb_func(ctx,func) \ X509_STORE_set_verify_cb((ctx),(func)) -X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *ctx); -void X509_STORE_set_get_issuer(X509_STORE *ctx, +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, X509_STORE_CTX_get_issuer_fn get_issuer); -X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *ctx); -void X509_STORE_set_check_issued(X509_STORE *ctx, +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, X509_STORE_CTX_check_issued_fn check_issued); -X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *ctx); -void X509_STORE_set_check_revocation(X509_STORE *ctx, +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, X509_STORE_CTX_check_revocation_fn check_revocation); X509_STORE_CTX_check_revocation_fn - X509_STORE_get_check_revocation(const X509_STORE *ctx); -void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, X509_STORE_CTX_get_crl_fn get_crl); -X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *ctx); -void X509_STORE_set_check_crl(X509_STORE *ctx, +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, X509_STORE_CTX_check_crl_fn check_crl); -X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *ctx); -void X509_STORE_set_cert_crl(X509_STORE *ctx, +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, X509_STORE_CTX_cert_crl_fn cert_crl); -X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *ctx); -void X509_STORE_set_check_policy(X509_STORE *ctx, +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, X509_STORE_CTX_check_policy_fn check_policy); -X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *ctx); -void X509_STORE_set_lookup_certs(X509_STORE *ctx, +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, X509_STORE_CTX_lookup_certs_fn lookup_certs); -X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *ctx); -void X509_STORE_set_lookup_crls(X509_STORE *ctx, +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, X509_STORE_CTX_lookup_crls_fn lookup_crls); #define X509_STORE_set_lookup_crls_cb(ctx, func) \ X509_STORE_set_lookup_crls((ctx), (func)) -X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *ctx); -void X509_STORE_set_cleanup(X509_STORE *ctx, +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, X509_STORE_CTX_cleanup_fn cleanup); -X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); #define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) -int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); -void *X509_STORE_get_ex_data(const X509_STORE *ctx, int idx); +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); X509_STORE_CTX *X509_STORE_CTX_new(void); @@ -565,11 +567,14 @@ int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); void X509_STORE_CTX_free(X509_STORE_CTX *ctx); int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY* rpk); void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, @@ -579,6 +584,8 @@ X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); @@ -600,7 +607,7 @@ X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); # define X509_STORE_get1_crl X509_STORE_CTX_get1_crls #endif -X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); X509_LOOKUP_METHOD *X509_LOOKUP_file(void); X509_LOOKUP_METHOD *X509_LOOKUP_store(void); @@ -685,8 +692,8 @@ X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( const X509_LOOKUP_METHOD *method); -int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); -int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, @@ -730,23 +737,21 @@ void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); -int X509_STORE_load_file(X509_STORE *ctx, const char *file); -int X509_STORE_load_path(X509_STORE *ctx, const char *path); -int X509_STORE_load_store(X509_STORE *ctx, const char *store); -int X509_STORE_load_locations(X509_STORE *ctx, - const char *file, - const char *dir); -int X509_STORE_set_default_paths(X509_STORE *ctx); +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); -int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file, +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_store_ex(X509_STORE *ctx, const char *store, +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file, - const char *dir, OSSL_LIB_CTX *libctx, - const char *propq); -int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OSSL_LIB_CTX *libctx, - const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); #define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) @@ -764,6 +769,7 @@ X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); @@ -773,6 +779,8 @@ int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); @@ -804,6 +812,7 @@ int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, unsigned long flags); unsigned long X509_VERIFY_PARAM_get_flags(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_get_purpose(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/x509v3.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/x509v3.h index 20b67455f2061d..b8dabac35a4915 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/x509v3.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/x509v3.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509v3.h.in * - * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -146,6 +149,11 @@ typedef struct BASIC_CONSTRAINTS_st { ASN1_INTEGER *pathlen; } BASIC_CONSTRAINTS; +typedef struct OSSL_BASIC_ATTR_CONSTRAINTS_st { + int authority; + ASN1_INTEGER *pathlen; +} OSSL_BASIC_ATTR_CONSTRAINTS; + typedef struct PKEY_USAGE_PERIOD_st { ASN1_GENERALIZEDTIME *notBefore; ASN1_GENERALIZEDTIME *notAfter; @@ -198,6 +206,8 @@ typedef struct ACCESS_DESCRIPTION_st { GENERAL_NAME *location; } ACCESS_DESCRIPTION; +int GENERAL_NAME_set1_X509_NAME(GENERAL_NAME **tgt, const X509_NAME *src); + SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) #define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) #define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) @@ -294,6 +304,7 @@ typedef struct DIST_POINT_NAME_st { /* If relativename then this contains the full distribution point name */ X509_NAME *dpname; } DIST_POINT_NAME; +DECLARE_ASN1_DUP_FUNCTION(DIST_POINT_NAME) /* All existing reasons */ # define CRLDP_ALL_REASONS 0x807f @@ -659,15 +670,16 @@ struct ISSUING_DIST_POINT_st { # define EXFLAG_SAN_CRITICAL 0x80000 # define EXFLAG_NO_FINGERPRINT 0x100000 -# define KU_DIGITAL_SIGNATURE 0x0080 -# define KU_NON_REPUDIATION 0x0040 -# define KU_KEY_ENCIPHERMENT 0x0020 -# define KU_DATA_ENCIPHERMENT 0x0010 -# define KU_KEY_AGREEMENT 0x0008 -# define KU_KEY_CERT_SIGN 0x0004 -# define KU_CRL_SIGN 0x0002 -# define KU_ENCIPHER_ONLY 0x0001 -# define KU_DECIPHER_ONLY 0x8000 +/* https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3 */ +# define KU_DIGITAL_SIGNATURE X509v3_KU_DIGITAL_SIGNATURE +# define KU_NON_REPUDIATION X509v3_KU_NON_REPUDIATION +# define KU_KEY_ENCIPHERMENT X509v3_KU_KEY_ENCIPHERMENT +# define KU_DATA_ENCIPHERMENT X509v3_KU_DATA_ENCIPHERMENT +# define KU_KEY_AGREEMENT X509v3_KU_KEY_AGREEMENT +# define KU_KEY_CERT_SIGN X509v3_KU_KEY_CERT_SIGN +# define KU_CRL_SIGN X509v3_KU_CRL_SIGN +# define KU_ENCIPHER_ONLY X509v3_KU_ENCIPHER_ONLY +# define KU_DECIPHER_ONLY X509v3_KU_DECIPHER_ONLY # define NS_SSL_CLIENT 0x80 # define NS_SSL_SERVER 0x40 @@ -729,7 +741,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) #define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) - +# define X509_PURPOSE_DEFAULT_ANY 0 # define X509_PURPOSE_SSL_CLIENT 1 # define X509_PURPOSE_SSL_SERVER 2 # define X509_PURPOSE_NS_SSL_SERVER 3 @@ -739,9 +751,10 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509_PURPOSE_ANY 7 # define X509_PURPOSE_OCSP_HELPER 8 # define X509_PURPOSE_TIMESTAMP_SIGN 9 +# define X509_PURPOSE_CODE_SIGN 10 # define X509_PURPOSE_MIN 1 -# define X509_PURPOSE_MAX 9 +# define X509_PURPOSE_MAX 10 /* Flags for X509V3_EXT_print() */ @@ -767,6 +780,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509V3_ADD_SILENT 0x10 DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) +DECLARE_ASN1_FUNCTIONS(OSSL_BASIC_ATTR_CONSTRAINTS) DECLARE_ASN1_FUNCTIONS(SXNET) DECLARE_ASN1_FUNCTIONS(SXNETID) @@ -976,7 +990,6 @@ int X509V3_extensions_print(BIO *out, const char *title, int X509_check_ca(X509 *x); int X509_check_purpose(X509 *x, int id, int ca); int X509_supported_extension(X509_EXTENSION *ex); -int X509_PURPOSE_set(int *p, int purpose); int X509_check_issued(X509 *issuer, X509 *subject); int X509_check_akid(const X509 *issuer, const AUTHORITY_KEYID *akid); void X509_set_proxy_flag(X509 *x); @@ -992,22 +1005,26 @@ const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); int X509_PURPOSE_get_count(void); -X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_unused_id(OSSL_LIB_CTX *libctx); int X509_PURPOSE_get_by_sname(const char *sname); int X509_PURPOSE_get_by_id(int id); int X509_PURPOSE_add(int id, int trust, int flags, int (*ck) (const X509_PURPOSE *, const X509 *, int), const char *name, const char *sname, void *arg); +void X509_PURPOSE_cleanup(void); + +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_id(const X509_PURPOSE *); char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); -void X509_PURPOSE_cleanup(void); -int X509_PURPOSE_get_id(const X509_PURPOSE *); +int X509_PURPOSE_set(int *p, int purpose); STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); + /* Flags for X509_check_* functions */ /* @@ -1444,6 +1461,507 @@ const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( void PROFESSION_INFO_set0_registrationNumber( PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); +int OSSL_GENERAL_NAMES_print(BIO *out, GENERAL_NAMES *gens, int indent); + +typedef STACK_OF(X509_ATTRIBUTE) OSSL_ATTRIBUTES_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTES_SYNTAX) + +typedef STACK_OF(USERNOTICE) OSSL_USER_NOTICE_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_USER_NOTICE_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(USERNOTICE, USERNOTICE, USERNOTICE) +#define sk_USERNOTICE_num(sk) OPENSSL_sk_num(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_value(sk, idx) ((USERNOTICE *)OPENSSL_sk_value(ossl_check_const_USERNOTICE_sk_type(sk), (idx))) +#define sk_USERNOTICE_new(cmp) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new(ossl_check_USERNOTICE_compfunc_type(cmp))) +#define sk_USERNOTICE_new_null() ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_null()) +#define sk_USERNOTICE_new_reserve(cmp, n) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_reserve(ossl_check_USERNOTICE_compfunc_type(cmp), (n))) +#define sk_USERNOTICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_USERNOTICE_sk_type(sk), (n)) +#define sk_USERNOTICE_free(sk) OPENSSL_sk_free(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_zero(sk) OPENSSL_sk_zero(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_delete(sk, i) ((USERNOTICE *)OPENSSL_sk_delete(ossl_check_USERNOTICE_sk_type(sk), (i))) +#define sk_USERNOTICE_delete_ptr(sk, ptr) ((USERNOTICE *)OPENSSL_sk_delete_ptr(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_pop(sk) ((USERNOTICE *)OPENSSL_sk_pop(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_shift(sk) ((USERNOTICE *)OPENSSL_sk_shift(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_USERNOTICE_sk_type(sk),ossl_check_USERNOTICE_freefunc_type(freefunc)) +#define sk_USERNOTICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), (idx)) +#define sk_USERNOTICE_set(sk, idx, ptr) ((USERNOTICE *)OPENSSL_sk_set(ossl_check_USERNOTICE_sk_type(sk), (idx), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), pnum) +#define sk_USERNOTICE_sort(sk) OPENSSL_sk_sort(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_dup(sk) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_dup(ossl_check_const_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_deep_copy(ossl_check_const_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_copyfunc_type(copyfunc), ossl_check_USERNOTICE_freefunc_type(freefunc))) +#define sk_USERNOTICE_set_cmp_func(sk, cmp) ((sk_USERNOTICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_compfunc_type(cmp))) + + +typedef struct OSSL_ROLE_SPEC_CERT_ID_st { + GENERAL_NAME *roleName; + GENERAL_NAME *roleCertIssuer; + ASN1_INTEGER *roleCertSerialNumber; + GENERAL_NAMES *roleCertLocator; +} OSSL_ROLE_SPEC_CERT_ID; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID) +#define sk_OSSL_ROLE_SPEC_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_value(sk, idx) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_value(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new(cmp) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_null() ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_reserve(cmp, n) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp), (n))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (n)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete(sk, i) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (i))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete_ptr(sk, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_pop(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_shift(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_shift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk),ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), (idx)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set(sk, idx, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_set(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), pnum) +#define sk_OSSL_ROLE_SPEC_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_dup(sk) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_copyfunc_type(copyfunc), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set_cmp_func(sk, cmp) ((sk_OSSL_ROLE_SPEC_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) + + +typedef STACK_OF(OSSL_ROLE_SPEC_CERT_ID) OSSL_ROLE_SPEC_CERT_ID_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID_SYNTAX) +typedef struct OSSL_HASH_st { + X509_ALGOR *algorithmIdentifier; + ASN1_BIT_STRING *hashValue; +} OSSL_HASH; + +typedef struct OSSL_INFO_SYNTAX_POINTER_st { + GENERAL_NAMES *name; + OSSL_HASH *hash; +} OSSL_INFO_SYNTAX_POINTER; + +# define OSSL_INFO_SYNTAX_TYPE_CONTENT 0 +# define OSSL_INFO_SYNTAX_TYPE_POINTER 1 + +typedef struct OSSL_INFO_SYNTAX_st { + int type; + union { + ASN1_STRING *content; + OSSL_INFO_SYNTAX_POINTER *pointer; + } choice; +} OSSL_INFO_SYNTAX; + +typedef struct OSSL_PRIVILEGE_POLICY_ID_st { + ASN1_OBJECT *privilegePolicy; + OSSL_INFO_SYNTAX *privPolSyntax; +} OSSL_PRIVILEGE_POLICY_ID; + +typedef struct OSSL_ATTRIBUTE_DESCRIPTOR_st { + ASN1_OBJECT *identifier; + ASN1_STRING *attributeSyntax; + ASN1_UTF8STRING *name; + ASN1_UTF8STRING *description; + OSSL_PRIVILEGE_POLICY_ID *dominationRule; +} OSSL_ATTRIBUTE_DESCRIPTOR; + +DECLARE_ASN1_FUNCTIONS(OSSL_HASH) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX_POINTER) +DECLARE_ASN1_FUNCTIONS(OSSL_PRIVILEGE_POLICY_ID) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_DESCRIPTOR) + +typedef struct OSSL_TIME_SPEC_ABSOLUTE_st { + ASN1_GENERALIZEDTIME *startTime; + ASN1_GENERALIZEDTIME *endTime; +} OSSL_TIME_SPEC_ABSOLUTE; + +typedef struct OSSL_DAY_TIME_st { + ASN1_INTEGER *hour; + ASN1_INTEGER *minute; + ASN1_INTEGER *second; +} OSSL_DAY_TIME; + +typedef struct OSSL_DAY_TIME_BAND_st { + OSSL_DAY_TIME *startDayTime; + OSSL_DAY_TIME *endDayTime; +} OSSL_DAY_TIME_BAND; + +# define OSSL_NAMED_DAY_TYPE_INT 0 +# define OSSL_NAMED_DAY_TYPE_BIT 1 +# define OSSL_NAMED_DAY_INT_SUN 1 +# define OSSL_NAMED_DAY_INT_MON 2 +# define OSSL_NAMED_DAY_INT_TUE 3 +# define OSSL_NAMED_DAY_INT_WED 4 +# define OSSL_NAMED_DAY_INT_THU 5 +# define OSSL_NAMED_DAY_INT_FRI 6 +# define OSSL_NAMED_DAY_INT_SAT 7 +# define OSSL_NAMED_DAY_BIT_SUN 0 +# define OSSL_NAMED_DAY_BIT_MON 1 +# define OSSL_NAMED_DAY_BIT_TUE 2 +# define OSSL_NAMED_DAY_BIT_WED 3 +# define OSSL_NAMED_DAY_BIT_THU 4 +# define OSSL_NAMED_DAY_BIT_FRI 5 +# define OSSL_NAMED_DAY_BIT_SAT 6 + +typedef struct OSSL_NAMED_DAY_st { + int type; + union { + ASN1_INTEGER *intNamedDays; + ASN1_BIT_STRING *bitNamedDays; + } choice; +} OSSL_NAMED_DAY; + +# define OSSL_TIME_SPEC_X_DAY_OF_FIRST 0 +# define OSSL_TIME_SPEC_X_DAY_OF_SECOND 1 +# define OSSL_TIME_SPEC_X_DAY_OF_THIRD 2 +# define OSSL_TIME_SPEC_X_DAY_OF_FOURTH 3 +# define OSSL_TIME_SPEC_X_DAY_OF_FIFTH 4 + +typedef struct OSSL_TIME_SPEC_X_DAY_OF_st { + int type; + union { + OSSL_NAMED_DAY *first; + OSSL_NAMED_DAY *second; + OSSL_NAMED_DAY *third; + OSSL_NAMED_DAY *fourth; + OSSL_NAMED_DAY *fifth; + } choice; +} OSSL_TIME_SPEC_X_DAY_OF; + +# define OSSL_TIME_SPEC_DAY_TYPE_INT 0 +# define OSSL_TIME_SPEC_DAY_TYPE_BIT 1 +# define OSSL_TIME_SPEC_DAY_TYPE_DAY_OF 2 +# define OSSL_TIME_SPEC_DAY_BIT_SUN 0 +# define OSSL_TIME_SPEC_DAY_BIT_MON 1 +# define OSSL_TIME_SPEC_DAY_BIT_TUE 2 +# define OSSL_TIME_SPEC_DAY_BIT_WED 3 +# define OSSL_TIME_SPEC_DAY_BIT_THU 4 +# define OSSL_TIME_SPEC_DAY_BIT_FRI 5 +# define OSSL_TIME_SPEC_DAY_BIT_SAT 6 +# define OSSL_TIME_SPEC_DAY_INT_SUN 1 +# define OSSL_TIME_SPEC_DAY_INT_MON 2 +# define OSSL_TIME_SPEC_DAY_INT_TUE 3 +# define OSSL_TIME_SPEC_DAY_INT_WED 4 +# define OSSL_TIME_SPEC_DAY_INT_THU 5 +# define OSSL_TIME_SPEC_DAY_INT_FRI 6 +# define OSSL_TIME_SPEC_DAY_INT_SAT 7 + +typedef struct OSSL_TIME_SPEC_DAY_st { + int type; + union { + STACK_OF(ASN1_INTEGER) *intDay; + ASN1_BIT_STRING *bitDay; + OSSL_TIME_SPEC_X_DAY_OF *dayOf; + } choice; +} OSSL_TIME_SPEC_DAY; + +# define OSSL_TIME_SPEC_WEEKS_TYPE_ALL 0 +# define OSSL_TIME_SPEC_WEEKS_TYPE_INT 1 +# define OSSL_TIME_SPEC_WEEKS_TYPE_BIT 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_1 0 +# define OSSL_TIME_SPEC_BIT_WEEKS_2 1 +# define OSSL_TIME_SPEC_BIT_WEEKS_3 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_4 3 +# define OSSL_TIME_SPEC_BIT_WEEKS_5 4 + +typedef struct OSSL_TIME_SPEC_WEEKS_st { + int type; + union { + ASN1_NULL *allWeeks; + STACK_OF(ASN1_INTEGER) *intWeek; + ASN1_BIT_STRING *bitWeek; + } choice; +} OSSL_TIME_SPEC_WEEKS; + +# define OSSL_TIME_SPEC_MONTH_TYPE_ALL 0 +# define OSSL_TIME_SPEC_MONTH_TYPE_INT 1 +# define OSSL_TIME_SPEC_MONTH_TYPE_BIT 2 +# define OSSL_TIME_SPEC_INT_MONTH_JAN 1 +# define OSSL_TIME_SPEC_INT_MONTH_FEB 2 +# define OSSL_TIME_SPEC_INT_MONTH_MAR 3 +# define OSSL_TIME_SPEC_INT_MONTH_APR 4 +# define OSSL_TIME_SPEC_INT_MONTH_MAY 5 +# define OSSL_TIME_SPEC_INT_MONTH_JUN 6 +# define OSSL_TIME_SPEC_INT_MONTH_JUL 7 +# define OSSL_TIME_SPEC_INT_MONTH_AUG 8 +# define OSSL_TIME_SPEC_INT_MONTH_SEP 9 +# define OSSL_TIME_SPEC_INT_MONTH_OCT 10 +# define OSSL_TIME_SPEC_INT_MONTH_NOV 11 +# define OSSL_TIME_SPEC_INT_MONTH_DEC 12 +# define OSSL_TIME_SPEC_BIT_MONTH_JAN 0 +# define OSSL_TIME_SPEC_BIT_MONTH_FEB 1 +# define OSSL_TIME_SPEC_BIT_MONTH_MAR 2 +# define OSSL_TIME_SPEC_BIT_MONTH_APR 3 +# define OSSL_TIME_SPEC_BIT_MONTH_MAY 4 +# define OSSL_TIME_SPEC_BIT_MONTH_JUN 5 +# define OSSL_TIME_SPEC_BIT_MONTH_JUL 6 +# define OSSL_TIME_SPEC_BIT_MONTH_AUG 7 +# define OSSL_TIME_SPEC_BIT_MONTH_SEP 8 +# define OSSL_TIME_SPEC_BIT_MONTH_OCT 9 +# define OSSL_TIME_SPEC_BIT_MONTH_NOV 10 +# define OSSL_TIME_SPEC_BIT_MONTH_DEC 11 + +typedef struct OSSL_TIME_SPEC_MONTH_st { + int type; + union { + ASN1_NULL *allMonths; + STACK_OF(ASN1_INTEGER) *intMonth; + ASN1_BIT_STRING *bitMonth; + } choice; +} OSSL_TIME_SPEC_MONTH; + +typedef struct OSSL_TIME_PERIOD_st { + STACK_OF(OSSL_DAY_TIME_BAND) *timesOfDay; + OSSL_TIME_SPEC_DAY *days; + OSSL_TIME_SPEC_WEEKS *weeks; + OSSL_TIME_SPEC_MONTH *months; + STACK_OF(ASN1_INTEGER) *years; +} OSSL_TIME_PERIOD; + +# define OSSL_TIME_SPEC_TIME_TYPE_ABSOLUTE 0 +# define OSSL_TIME_SPEC_TIME_TYPE_PERIODIC 1 + +typedef struct OSSL_TIME_SPEC_TIME_st { + int type; + union { + OSSL_TIME_SPEC_ABSOLUTE *absolute; + STACK_OF(OSSL_TIME_PERIOD) *periodic; + } choice; +} OSSL_TIME_SPEC_TIME; + +typedef struct OSSL_TIME_SPEC_st { + OSSL_TIME_SPEC_TIME *time; + ASN1_BOOLEAN notThisTime; + ASN1_INTEGER *timeZone; +} OSSL_TIME_SPEC; + +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME_BAND) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_WEEKS) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_MONTH) +DECLARE_ASN1_FUNCTIONS(OSSL_NAMED_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_X_DAY_OF) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_ABSOLUTE) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_PERIOD) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TIME_PERIOD, OSSL_TIME_PERIOD, OSSL_TIME_PERIOD) +#define sk_OSSL_TIME_PERIOD_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_value(sk, idx) ((OSSL_TIME_PERIOD *)OPENSSL_sk_value(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), (idx))) +#define sk_OSSL_TIME_PERIOD_new(cmp) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) +#define sk_OSSL_TIME_PERIOD_new_null() ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TIME_PERIOD_new_reserve(cmp, n) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp), (n))) +#define sk_OSSL_TIME_PERIOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (n)) +#define sk_OSSL_TIME_PERIOD_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_delete(sk, i) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (i))) +#define sk_OSSL_TIME_PERIOD_delete_ptr(sk, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_pop(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_pop(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_shift(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_shift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk),ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc)) +#define sk_OSSL_TIME_PERIOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), (idx)) +#define sk_OSSL_TIME_PERIOD_set(sk, idx, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_set(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (idx), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), pnum) +#define sk_OSSL_TIME_PERIOD_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_dup(sk) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_copyfunc_type(copyfunc), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc))) +#define sk_OSSL_TIME_PERIOD_set_cmp_func(sk, cmp) ((sk_OSSL_TIME_PERIOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND) +#define sk_OSSL_DAY_TIME_BAND_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_value(sk, idx) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_value(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), (idx))) +#define sk_OSSL_DAY_TIME_BAND_new(cmp) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) +#define sk_OSSL_DAY_TIME_BAND_new_null() ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_null()) +#define sk_OSSL_DAY_TIME_BAND_new_reserve(cmp, n) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp), (n))) +#define sk_OSSL_DAY_TIME_BAND_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (n)) +#define sk_OSSL_DAY_TIME_BAND_free(sk) OPENSSL_sk_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_delete(sk, i) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (i))) +#define sk_OSSL_DAY_TIME_BAND_delete_ptr(sk, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_pop(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_pop(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_shift(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_shift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk),ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc)) +#define sk_OSSL_DAY_TIME_BAND_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), (idx)) +#define sk_OSSL_DAY_TIME_BAND_set(sk, idx, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_set(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (idx), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), pnum) +#define sk_OSSL_DAY_TIME_BAND_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_dup(sk) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_dup(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_copyfunc_type(copyfunc), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc))) +#define sk_OSSL_DAY_TIME_BAND_set_cmp_func(sk, cmp) ((sk_OSSL_DAY_TIME_BAND_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) + + +/* Attribute Type and Value */ +typedef struct atav_st { + ASN1_OBJECT *type; + ASN1_TYPE *value; +} OSSL_ATAV; + +typedef struct ATTRIBUTE_TYPE_MAPPING_st { + ASN1_OBJECT *local; + ASN1_OBJECT *remote; +} OSSL_ATTRIBUTE_TYPE_MAPPING; + +typedef struct ATTRIBUTE_VALUE_MAPPING_st { + OSSL_ATAV *local; + OSSL_ATAV *remote; +} OSSL_ATTRIBUTE_VALUE_MAPPING; + +# define OSSL_ATTR_MAP_TYPE 0 +# define OSSL_ATTR_MAP_VALUE 1 + +typedef struct ATTRIBUTE_MAPPING_st { + int type; + union { + OSSL_ATTRIBUTE_TYPE_MAPPING *typeMappings; + OSSL_ATTRIBUTE_VALUE_MAPPING *typeValueMappings; + } choice; +} OSSL_ATTRIBUTE_MAPPING; + +typedef STACK_OF(OSSL_ATTRIBUTE_MAPPING) OSSL_ATTRIBUTE_MAPPINGS; +DECLARE_ASN1_FUNCTIONS(OSSL_ATAV) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_TYPE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_VALUE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPINGS) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING) +#define sk_OSSL_ATTRIBUTE_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_value(sk, idx) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_value(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new(cmp) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_null() ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_reserve(cmp, n) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp), (n))) +#define sk_OSSL_ATTRIBUTE_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (n)) +#define sk_OSSL_ATTRIBUTE_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete(sk, i) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (i))) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete_ptr(sk, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_pop(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_shift(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_shift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk),ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc)) +#define sk_OSSL_ATTRIBUTE_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), (idx)) +#define sk_OSSL_ATTRIBUTE_MAPPING_set(sk, idx, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_set(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), pnum) +#define sk_OSSL_ATTRIBUTE_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_dup(sk) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_copyfunc_type(copyfunc), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc))) +#define sk_OSSL_ATTRIBUTE_MAPPING_set_cmp_func(sk, cmp) ((sk_OSSL_ATTRIBUTE_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) + + +# define OSSL_AAA_ATTRIBUTE_TYPE 0 +# define OSSL_AAA_ATTRIBUTE_VALUES 1 + +typedef struct ALLOWED_ATTRIBUTES_CHOICE_st { + int type; + union { + ASN1_OBJECT *attributeType; + X509_ATTRIBUTE *attributeTypeandValues; + } choice; +} OSSL_ALLOWED_ATTRIBUTES_CHOICE; + +typedef struct ALLOWED_ATTRIBUTES_ITEM_st { + STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *attributes; + GENERAL_NAME *holderDomain; +} OSSL_ALLOWED_ATTRIBUTES_ITEM; + +typedef STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) OSSL_ALLOWED_ATTRIBUTES_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_CHOICE) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_ITEM) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) + + +typedef struct AA_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + int dp_reasons; + ASN1_BOOLEAN indirectCRL; + ASN1_BOOLEAN containsUserAttributeCerts; + ASN1_BOOLEAN containsAACerts; + ASN1_BOOLEAN containsSOAPublicKeyCerts; +} OSSL_AA_DIST_POINT; + +DECLARE_ASN1_FUNCTIONS(OSSL_AA_DIST_POINT) + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/progs.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/progs.h index be55f61503d405..1b62ec37dec130 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/progs.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/progs.h @@ -56,6 +56,7 @@ extern int s_client_main(int argc, char *argv[]); extern int s_server_main(int argc, char *argv[]); extern int s_time_main(int argc, char *argv[]); extern int sess_id_main(int argc, char *argv[]); +extern int skeyutl_main(int argc, char *argv[]); extern int smime_main(int argc, char *argv[]); extern int speed_main(int argc, char *argv[]); extern int spkac_main(int argc, char *argv[]); @@ -110,6 +111,7 @@ extern const OPTIONS s_client_options[]; extern const OPTIONS s_server_options[]; extern const OPTIONS s_time_options[]; extern const OPTIONS sess_id_options[]; +extern const OPTIONS skeyutl_options[]; extern const OPTIONS smime_options[]; extern const OPTIONS speed_options[]; extern const OPTIONS spkac_options[]; diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/openssl-cl.gypi b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/openssl-cl.gypi index 108012655aa24f..a4db7389987bbe 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/openssl-cl.gypi +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/openssl-cl.gypi @@ -83,6 +83,7 @@ 'openssl/apps/s_server.c', 'openssl/apps/s_time.c', 'openssl/apps/sess_id.c', + 'openssl/apps/skeyutl.c', 'openssl/apps/smime.c', 'openssl/apps/speed.c', 'openssl/apps/spkac.c', @@ -98,12 +99,14 @@ 'openssl/apps/lib/app_rand.c', 'openssl/apps/lib/app_x509.c', 'openssl/apps/lib/apps.c', + 'openssl/apps/lib/apps_opt_printf.c', 'openssl/apps/lib/apps_ui.c', 'openssl/apps/lib/columns.c', 'openssl/apps/lib/engine.c', 'openssl/apps/lib/engine_loader.c', 'openssl/apps/lib/fmt.c', 'openssl/apps/lib/http_server.c', + 'openssl/apps/lib/log.c', 'openssl/apps/lib/names.c', 'openssl/apps/lib/opt.c', 'openssl/apps/lib/s_cb.c', diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/openssl-fips.gypi b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/openssl-fips.gypi index 2831a837c2afd2..4d73c4c1f2df43 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/openssl-fips.gypi +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/openssl-fips.gypi @@ -101,14 +101,15 @@ 'openssl/crypto/evp/kem.c', 'openssl/crypto/evp/keymgmt_lib.c', 'openssl/crypto/evp/keymgmt_meth.c', - 'openssl/crypto/evp/m_sigver.c', 'openssl/crypto/evp/mac_lib.c', 'openssl/crypto/evp/mac_meth.c', 'openssl/crypto/evp/p_lib.c', 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -116,6 +117,8 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', @@ -145,6 +148,16 @@ 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -153,6 +166,7 @@ 'openssl/crypto/modes/ofb128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/property/defn_cache.c', 'openssl/crypto/property/property.c', 'openssl/crypto/property/property_parse.c', @@ -180,7 +194,23 @@ 'openssl/crypto/sha/sha256.c', 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/stack/stack.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/providers/common/der/der_rsa_sig.c', 'openssl/providers/common/bio_prov.c', 'openssl/providers/common/capabilities.c', @@ -189,6 +219,7 @@ 'openssl/providers/common/provider_util.c', 'openssl/providers/common/securitycheck.c', 'openssl/providers/common/securitycheck_fips.c', + 'openssl/providers/fips/fipsindicator.c', 'openssl/providers/fips/fipsprov.c', 'openssl/providers/fips/self_test.c', 'openssl/providers/fips/self_test_kats.c', @@ -226,6 +257,8 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -233,29 +266,39 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/cmac_prov.c', 'openssl/providers/implementations/macs/gmac_prov.c', 'openssl/providers/implementations/macs/hmac_prov.c', 'openssl/providers/implementations/macs/kmac_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', + 'openssl/providers/implementations/rands/fips_crng_test.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/signature/dsa_sig.c', 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -266,7 +309,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/fips/fips_entry.c', ], @@ -276,10 +319,16 @@ './config/archs/BSD-x86_64/asm_avx2/crypto/aes/aesni-sha1-x86_64.s', './config/archs/BSD-x86_64/asm_avx2/crypto/aes/aesni-sha256-x86_64.s', './config/archs/BSD-x86_64/asm_avx2/crypto/aes/aesni-x86_64.s', + './config/archs/BSD-x86_64/asm_avx2/crypto/aes/aesni-xts-avx512.s', './config/archs/BSD-x86_64/asm_avx2/crypto/aes/bsaes-x86_64.s', './config/archs/BSD-x86_64/asm_avx2/crypto/aes/vpaes-x86_64.s', + './config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-2k-avx512.s', + './config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-2k-avxifma.s', + './config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-3k-avx512.s', + './config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-3k-avxifma.s', + './config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-4k-avx512.s', + './config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-4k-avxifma.s', './config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-avx2.s', - './config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-avx512.s', './config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-x86_64.s', './config/archs/BSD-x86_64/asm_avx2/crypto/bn/x86_64-gf2m.s', './config/archs/BSD-x86_64/asm_avx2/crypto/bn/x86_64-mont.s', @@ -288,8 +337,10 @@ './config/archs/BSD-x86_64/asm_avx2/crypto/chacha/chacha-x86_64.s', './config/archs/BSD-x86_64/asm_avx2/crypto/ec/ecp_nistz256-x86_64.s', './config/archs/BSD-x86_64/asm_avx2/crypto/ec/x25519-x86_64.s', + './config/archs/BSD-x86_64/asm_avx2/crypto/params_idx.c', './config/archs/BSD-x86_64/asm_avx2/crypto/x86_64cpuid.s', './config/archs/BSD-x86_64/asm_avx2/crypto/md5/md5-x86_64.s', + './config/archs/BSD-x86_64/asm_avx2/crypto/modes/aes-gcm-avx512.s', './config/archs/BSD-x86_64/asm_avx2/crypto/modes/aesni-gcm-x86_64.s', './config/archs/BSD-x86_64/asm_avx2/crypto/modes/ghash-x86_64.s', './config/archs/BSD-x86_64/asm_avx2/crypto/poly1305/poly1305-x86_64.s', @@ -308,7 +359,9 @@ './config/archs/BSD-x86_64/asm_avx2/providers/common/der/der_dsa_gen.c', './config/archs/BSD-x86_64/asm_avx2/providers/common/der/der_ec_gen.c', './config/archs/BSD-x86_64/asm_avx2/providers/common/der/der_ecx_gen.c', + './config/archs/BSD-x86_64/asm_avx2/providers/common/der/der_ml_dsa_gen.c', './config/archs/BSD-x86_64/asm_avx2/providers/common/der/der_rsa_gen.c', + './config/archs/BSD-x86_64/asm_avx2/providers/common/der/der_slh_dsa_gen.c', './config/archs/BSD-x86_64/asm_avx2/providers/common/der/der_wrap_gen.c', './config/archs/BSD-x86_64/asm_avx2/providers/legacy.ld', './config/archs/BSD-x86_64/asm_avx2/providers/fips.ld', diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/openssl.gypi b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/openssl.gypi index 9dc83c8bbb123d..a79f37a6eef887 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/openssl.gypi +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/openssl.gypi @@ -7,14 +7,15 @@ 'openssl/ssl/d1_srtp.c', 'openssl/ssl/methods.c', 'openssl/ssl/pqueue.c', + 'openssl/ssl/priority_queue.c', 'openssl/ssl/s3_enc.c', 'openssl/ssl/s3_lib.c', 'openssl/ssl/s3_msg.c', 'openssl/ssl/ssl_asn1.c', 'openssl/ssl/ssl_cert.c', + 'openssl/ssl/ssl_cert_comp.c', 'openssl/ssl/ssl_ciph.c', 'openssl/ssl/ssl_conf.c', - 'openssl/ssl/ssl_err.c', 'openssl/ssl/ssl_err_legacy.c', 'openssl/ssl/ssl_init.c', 'openssl/ssl/ssl_lib.c', @@ -31,12 +32,60 @@ 'openssl/ssl/tls13_enc.c', 'openssl/ssl/tls_depr.c', 'openssl/ssl/tls_srp.c', - 'openssl/ssl/record/dtls1_bitmap.c', + 'openssl/ssl/quic/cc_newreno.c', + 'openssl/ssl/quic/json_enc.c', + 'openssl/ssl/quic/qlog.c', + 'openssl/ssl/quic/qlog_event_helpers.c', + 'openssl/ssl/quic/quic_ackm.c', + 'openssl/ssl/quic/quic_cfq.c', + 'openssl/ssl/quic/quic_channel.c', + 'openssl/ssl/quic/quic_demux.c', + 'openssl/ssl/quic/quic_engine.c', + 'openssl/ssl/quic/quic_fc.c', + 'openssl/ssl/quic/quic_fifd.c', + 'openssl/ssl/quic/quic_impl.c', + 'openssl/ssl/quic/quic_lcidm.c', + 'openssl/ssl/quic/quic_method.c', + 'openssl/ssl/quic/quic_obj.c', + 'openssl/ssl/quic/quic_port.c', + 'openssl/ssl/quic/quic_rcidm.c', + 'openssl/ssl/quic/quic_reactor.c', + 'openssl/ssl/quic/quic_reactor_wait_ctx.c', + 'openssl/ssl/quic/quic_record_rx.c', + 'openssl/ssl/quic/quic_record_shared.c', + 'openssl/ssl/quic/quic_record_tx.c', + 'openssl/ssl/quic/quic_record_util.c', + 'openssl/ssl/quic/quic_rstream.c', + 'openssl/ssl/quic/quic_rx_depack.c', + 'openssl/ssl/quic/quic_sf_list.c', + 'openssl/ssl/quic/quic_srt_gen.c', + 'openssl/ssl/quic/quic_srtm.c', + 'openssl/ssl/quic/quic_sstream.c', + 'openssl/ssl/quic/quic_statm.c', + 'openssl/ssl/quic/quic_stream_map.c', + 'openssl/ssl/quic/quic_thread_assist.c', + 'openssl/ssl/quic/quic_tls.c', + 'openssl/ssl/quic/quic_tls_api.c', + 'openssl/ssl/quic/quic_trace.c', + 'openssl/ssl/quic/quic_tserver.c', + 'openssl/ssl/quic/quic_txp.c', + 'openssl/ssl/quic/quic_txpim.c', + 'openssl/ssl/quic/quic_types.c', + 'openssl/ssl/quic/quic_wire.c', + 'openssl/ssl/quic/quic_wire_pkt.c', + 'openssl/ssl/quic/uint_set.c', 'openssl/ssl/record/rec_layer_d1.c', 'openssl/ssl/record/rec_layer_s3.c', - 'openssl/ssl/record/ssl3_buffer.c', - 'openssl/ssl/record/ssl3_record.c', - 'openssl/ssl/record/ssl3_record_tls13.c', + 'openssl/ssl/record/methods/dtls_meth.c', + 'openssl/ssl/record/methods/ssl3_meth.c', + 'openssl/ssl/record/methods/tls13_meth.c', + 'openssl/ssl/record/methods/tls1_meth.c', + 'openssl/ssl/record/methods/tls_common.c', + 'openssl/ssl/record/methods/tls_multib.c', + 'openssl/ssl/record/methods/tlsany_meth.c', + 'openssl/ssl/rio/poll_builder.c', + 'openssl/ssl/rio/poll_immediate.c', + 'openssl/ssl/rio/rio_notifier.c', 'openssl/ssl/statem/extensions.c', 'openssl/ssl/statem/extensions_clnt.c', 'openssl/ssl/statem/extensions_cust.c', @@ -148,6 +197,7 @@ 'openssl/crypto/bio/bss_conn.c', 'openssl/crypto/bio/bss_core.c', 'openssl/crypto/bio/bss_dgram.c', + 'openssl/crypto/bio/bss_dgram_pair.c', 'openssl/crypto/bio/bss_fd.c', 'openssl/crypto/bio/bss_file.c', 'openssl/crypto/bio/bss_log.c', @@ -207,6 +257,7 @@ 'openssl/crypto/cmp/cmp_client.c', 'openssl/crypto/cmp/cmp_ctx.c', 'openssl/crypto/cmp/cmp_err.c', + 'openssl/crypto/cmp/cmp_genm.c', 'openssl/crypto/cmp/cmp_hdr.c', 'openssl/crypto/cmp/cmp_http.c', 'openssl/crypto/cmp/cmp_msg.c', @@ -383,7 +434,9 @@ 'openssl/crypto/err/err_all.c', 'openssl/crypto/err/err_all_legacy.c', 'openssl/crypto/err/err_blocks.c', + 'openssl/crypto/err/err_mark.c', 'openssl/crypto/err/err_prn.c', + 'openssl/crypto/err/err_save.c', 'openssl/crypto/ess/ess_asn1.c', 'openssl/crypto/ess/ess_err.c', 'openssl/crypto/ess/ess_lib.c', @@ -466,7 +519,9 @@ 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -474,7 +529,11 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', + 'openssl/crypto/hpke/hpke.c', + 'openssl/crypto/hpke/hpke_util.c', 'openssl/crypto/http/http_client.c', 'openssl/crypto/http/http_err.c', 'openssl/crypto/http/http_lib.c', @@ -488,6 +547,7 @@ 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', 'openssl/crypto/bsearch.c', + 'openssl/crypto/comp_methods.c', 'openssl/crypto/context.c', 'openssl/crypto/core_algorithm.c', 'openssl/crypto/core_fetch.c', @@ -497,10 +557,13 @@ 'openssl/crypto/cryptlib.c', 'openssl/crypto/ctype.c', 'openssl/crypto/cversion.c', + 'openssl/crypto/defaults.c', 'openssl/crypto/der_writer.c', + 'openssl/crypto/deterministic_nonce.c', 'openssl/crypto/ebcdic.c', 'openssl/crypto/ex_data.c', 'openssl/crypto/getenv.c', + 'openssl/crypto/indicator_core.c', 'openssl/crypto/info.c', 'openssl/crypto/init.c', 'openssl/crypto/initthread.c', @@ -524,12 +587,16 @@ 'openssl/crypto/provider_core.c', 'openssl/crypto/provider_predefined.c', 'openssl/crypto/punycode.c', + 'openssl/crypto/quic_vlint.c', 'openssl/crypto/self_test_core.c', + 'openssl/crypto/sleep.c', 'openssl/crypto/sparse_array.c', + 'openssl/crypto/ssl_err.c', 'openssl/crypto/threads_lib.c', 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', 'openssl/crypto/trace.c', 'openssl/crypto/uid.c', 'openssl/crypto/md4/md4_dgst.c', @@ -539,6 +606,15 @@ 'openssl/crypto/md5/md5_sha1.c', 'openssl/crypto/mdc2/mdc2_one.c', 'openssl/crypto/mdc2/mdc2dgst.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -550,6 +626,7 @@ 'openssl/crypto/modes/siv128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/objects/o_names.c', 'openssl/crypto/objects/obj_dat.c', 'openssl/crypto/objects/obj_err.c', @@ -613,6 +690,7 @@ 'openssl/crypto/rand/rand_lib.c', 'openssl/crypto/rand/rand_meth.c', 'openssl/crypto/rand/rand_pool.c', + 'openssl/crypto/rand/rand_uniform.c', 'openssl/crypto/rand/randfile.c', 'openssl/crypto/rc2/rc2_cbc.c', 'openssl/crypto/rc2/rc2_ecb.c', @@ -658,6 +736,16 @@ 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', 'openssl/crypto/siphash/siphash.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/sm2/sm2_crypt.c', 'openssl/crypto/sm2/sm2_err.c', 'openssl/crypto/sm2/sm2_key.c', @@ -675,6 +763,12 @@ 'openssl/crypto/store/store_register.c', 'openssl/crypto/store/store_result.c', 'openssl/crypto/store/store_strings.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/crypto/ts/ts_asn1.c', 'openssl/crypto/ts/ts_conf.c', 'openssl/crypto/ts/ts_err.c', @@ -702,14 +796,22 @@ 'openssl/crypto/x509/pcy_map.c', 'openssl/crypto/x509/pcy_node.c', 'openssl/crypto/x509/pcy_tree.c', + 'openssl/crypto/x509/t_acert.c', 'openssl/crypto/x509/t_crl.c', 'openssl/crypto/x509/t_req.c', 'openssl/crypto/x509/t_x509.c', + 'openssl/crypto/x509/v3_aaa.c', + 'openssl/crypto/x509/v3_ac_tgt.c', 'openssl/crypto/x509/v3_addr.c', 'openssl/crypto/x509/v3_admis.c', 'openssl/crypto/x509/v3_akeya.c', 'openssl/crypto/x509/v3_akid.c', 'openssl/crypto/x509/v3_asid.c', + 'openssl/crypto/x509/v3_attrdesc.c', + 'openssl/crypto/x509/v3_attrmap.c', + 'openssl/crypto/x509/v3_audit_id.c', + 'openssl/crypto/x509/v3_authattid.c', + 'openssl/crypto/x509/v3_battcons.c', 'openssl/crypto/x509/v3_bcons.c', 'openssl/crypto/x509/v3_bitst.c', 'openssl/crypto/x509/v3_conf.c', @@ -718,12 +820,17 @@ 'openssl/crypto/x509/v3_enum.c', 'openssl/crypto/x509/v3_extku.c', 'openssl/crypto/x509/v3_genn.c', + 'openssl/crypto/x509/v3_group_ac.c', 'openssl/crypto/x509/v3_ia5.c', + 'openssl/crypto/x509/v3_ind_iss.c', 'openssl/crypto/x509/v3_info.c', 'openssl/crypto/x509/v3_int.c', + 'openssl/crypto/x509/v3_iobo.c', 'openssl/crypto/x509/v3_ist.c', 'openssl/crypto/x509/v3_lib.c', 'openssl/crypto/x509/v3_ncons.c', + 'openssl/crypto/x509/v3_no_ass.c', + 'openssl/crypto/x509/v3_no_rev_avail.c', 'openssl/crypto/x509/v3_pci.c', 'openssl/crypto/x509/v3_pcia.c', 'openssl/crypto/x509/v3_pcons.c', @@ -731,13 +838,20 @@ 'openssl/crypto/x509/v3_pmaps.c', 'openssl/crypto/x509/v3_prn.c', 'openssl/crypto/x509/v3_purp.c', + 'openssl/crypto/x509/v3_rolespec.c', 'openssl/crypto/x509/v3_san.c', + 'openssl/crypto/x509/v3_sda.c', + 'openssl/crypto/x509/v3_single_use.c', 'openssl/crypto/x509/v3_skid.c', + 'openssl/crypto/x509/v3_soa_id.c', 'openssl/crypto/x509/v3_sxnet.c', + 'openssl/crypto/x509/v3_timespec.c', 'openssl/crypto/x509/v3_tlsf.c', + 'openssl/crypto/x509/v3_usernotice.c', 'openssl/crypto/x509/v3_utf8.c', 'openssl/crypto/x509/v3_utl.c', 'openssl/crypto/x509/v3err.c', + 'openssl/crypto/x509/x509_acert.c', 'openssl/crypto/x509/x509_att.c', 'openssl/crypto/x509/x509_cmp.c', 'openssl/crypto/x509/x509_d2.c', @@ -755,6 +869,7 @@ 'openssl/crypto/x509/x509_v3.c', 'openssl/crypto/x509/x509_vfy.c', 'openssl/crypto/x509/x509_vpm.c', + 'openssl/crypto/x509/x509aset.c', 'openssl/crypto/x509/x509cset.c', 'openssl/crypto/x509/x509name.c', 'openssl/crypto/x509/x509rset.c', @@ -764,6 +879,7 @@ 'openssl/crypto/x509/x_attrib.c', 'openssl/crypto/x509/x_crl.c', 'openssl/crypto/x509/x_exten.c', + 'openssl/crypto/x509/x_ietfatt.c', 'openssl/crypto/x509/x_name.c', 'openssl/crypto/x509/x_pubkey.c', 'openssl/crypto/x509/x_req.c', @@ -796,6 +912,9 @@ 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c', 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', @@ -820,7 +939,13 @@ 'openssl/providers/implementations/ciphers/cipher_cts.c', 'openssl/providers/implementations/ciphers/cipher_null.c', 'openssl/providers/implementations/ciphers/cipher_sm4.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm_hw.c', 'openssl/providers/implementations/ciphers/cipher_sm4_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts_hw.c', 'openssl/providers/implementations/ciphers/cipher_tdes.c', 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', 'openssl/providers/implementations/ciphers/cipher_tdes_default.c', @@ -849,11 +974,16 @@ 'openssl/providers/implementations/encode_decode/encode_key2ms.c', 'openssl/providers/implementations/encode_decode/encode_key2text.c', 'openssl/providers/implementations/encode_decode/endecoder_common.c', + 'openssl/providers/implementations/encode_decode/ml_common_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_dsa_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_kem_codecs.c', 'openssl/providers/implementations/exchange/dh_exch.c', 'openssl/providers/implementations/exchange/ecdh_exch.c', 'openssl/providers/implementations/exchange/ecx_exch.c', 'openssl/providers/implementations/exchange/kdf_exch.c', + 'openssl/providers/implementations/kdfs/argon2.c', 'openssl/providers/implementations/kdfs/hkdf.c', + 'openssl/providers/implementations/kdfs/hmacdrbg_kdf.c', 'openssl/providers/implementations/kdfs/kbkdf.c', 'openssl/providers/implementations/kdfs/krb5kdf.c', 'openssl/providers/implementations/kdfs/pbkdf2.c', @@ -864,6 +994,11 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ec_kem.c', + 'openssl/providers/implementations/kem/ecx_kem.c', + 'openssl/providers/implementations/kem/kem_util.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -871,7 +1006,11 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/blake2b_mac.c', 'openssl/providers/implementations/macs/blake2s_mac.c', 'openssl/providers/implementations/macs/cmac_prov.c', @@ -880,12 +1019,12 @@ 'openssl/providers/implementations/macs/kmac_prov.c', 'openssl/providers/implementations/macs/poly1305_prov.c', 'openssl/providers/implementations/macs/siphash_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', 'openssl/providers/implementations/rands/seed_src.c', + 'openssl/providers/implementations/rands/seed_src_jitter.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/rands/seeding/rand_cpu_x86.c', 'openssl/providers/implementations/rands/seeding/rand_tsc.c', @@ -895,17 +1034,23 @@ 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', 'openssl/providers/implementations/signature/sm2_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', 'openssl/providers/implementations/storemgmt/file_store.c', 'openssl/providers/implementations/storemgmt/file_store_any2obj.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -916,7 +1061,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/implementations/ciphers/cipher_blowfish.c', 'openssl/providers/implementations/ciphers/cipher_blowfish_hw.c', 'openssl/providers/implementations/ciphers/cipher_cast5.c', @@ -941,6 +1086,7 @@ 'openssl/providers/implementations/digests/ripemd_prov.c', 'openssl/providers/implementations/digests/wp_prov.c', 'openssl/providers/implementations/kdfs/pbkdf1.c', + 'openssl/providers/implementations/kdfs/pvkkdf.c', 'openssl/providers/prov_running.c', 'openssl/providers/legacyprov.c', ], @@ -950,10 +1096,16 @@ './config/archs/BSD-x86_64/asm_avx2/crypto/aes/aesni-sha1-x86_64.s', './config/archs/BSD-x86_64/asm_avx2/crypto/aes/aesni-sha256-x86_64.s', './config/archs/BSD-x86_64/asm_avx2/crypto/aes/aesni-x86_64.s', + './config/archs/BSD-x86_64/asm_avx2/crypto/aes/aesni-xts-avx512.s', './config/archs/BSD-x86_64/asm_avx2/crypto/aes/bsaes-x86_64.s', './config/archs/BSD-x86_64/asm_avx2/crypto/aes/vpaes-x86_64.s', + './config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-2k-avx512.s', + './config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-2k-avxifma.s', + './config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-3k-avx512.s', + './config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-3k-avxifma.s', + './config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-4k-avx512.s', + './config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-4k-avxifma.s', './config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-avx2.s', - './config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-avx512.s', './config/archs/BSD-x86_64/asm_avx2/crypto/bn/rsaz-x86_64.s', './config/archs/BSD-x86_64/asm_avx2/crypto/bn/x86_64-gf2m.s', './config/archs/BSD-x86_64/asm_avx2/crypto/bn/x86_64-mont.s', @@ -962,8 +1114,10 @@ './config/archs/BSD-x86_64/asm_avx2/crypto/chacha/chacha-x86_64.s', './config/archs/BSD-x86_64/asm_avx2/crypto/ec/ecp_nistz256-x86_64.s', './config/archs/BSD-x86_64/asm_avx2/crypto/ec/x25519-x86_64.s', + './config/archs/BSD-x86_64/asm_avx2/crypto/params_idx.c', './config/archs/BSD-x86_64/asm_avx2/crypto/x86_64cpuid.s', './config/archs/BSD-x86_64/asm_avx2/crypto/md5/md5-x86_64.s', + './config/archs/BSD-x86_64/asm_avx2/crypto/modes/aes-gcm-avx512.s', './config/archs/BSD-x86_64/asm_avx2/crypto/modes/aesni-gcm-x86_64.s', './config/archs/BSD-x86_64/asm_avx2/crypto/modes/ghash-x86_64.s', './config/archs/BSD-x86_64/asm_avx2/crypto/poly1305/poly1305-x86_64.s', @@ -982,7 +1136,9 @@ './config/archs/BSD-x86_64/asm_avx2/providers/common/der/der_dsa_gen.c', './config/archs/BSD-x86_64/asm_avx2/providers/common/der/der_ec_gen.c', './config/archs/BSD-x86_64/asm_avx2/providers/common/der/der_ecx_gen.c', + './config/archs/BSD-x86_64/asm_avx2/providers/common/der/der_ml_dsa_gen.c', './config/archs/BSD-x86_64/asm_avx2/providers/common/der/der_rsa_gen.c', + './config/archs/BSD-x86_64/asm_avx2/providers/common/der/der_slh_dsa_gen.c', './config/archs/BSD-x86_64/asm_avx2/providers/common/der/der_wrap_gen.c', './config/archs/BSD-x86_64/asm_avx2/providers/legacy.ld', './config/archs/BSD-x86_64/asm_avx2/providers/fips.ld', diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/providers/common/der/der_ml_dsa_gen.c b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/providers/common/der/der_ml_dsa_gen.c new file mode 100644 index 00000000000000..4a8a113a268578 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/providers/common/der/der_ml_dsa_gen.c @@ -0,0 +1,37 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_ml_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44] = { + DER_OID_V_id_ml_dsa_44 +}; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65] = { + DER_OID_V_id_ml_dsa_65 +}; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87] = { + DER_OID_V_id_ml_dsa_87 +}; + diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/providers/common/der/der_slh_dsa_gen.c b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/providers/common/der/der_slh_dsa_gen.c new file mode 100644 index 00000000000000..1419a9515097dd --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/providers/common/der/der_slh_dsa_gen.c @@ -0,0 +1,100 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_slh_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s] = { + DER_OID_V_id_slh_dsa_sha2_128s +}; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f] = { + DER_OID_V_id_slh_dsa_sha2_128f +}; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s] = { + DER_OID_V_id_slh_dsa_sha2_192s +}; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f] = { + DER_OID_V_id_slh_dsa_sha2_192f +}; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s] = { + DER_OID_V_id_slh_dsa_sha2_256s +}; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f] = { + DER_OID_V_id_slh_dsa_sha2_256f +}; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s] = { + DER_OID_V_id_slh_dsa_shake_128s +}; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f] = { + DER_OID_V_id_slh_dsa_shake_128f +}; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s] = { + DER_OID_V_id_slh_dsa_shake_192s +}; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f] = { + DER_OID_V_id_slh_dsa_shake_192f +}; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s] = { + DER_OID_V_id_slh_dsa_shake_256s +}; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f] = { + DER_OID_V_id_slh_dsa_shake_256f +}; + diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/providers/common/include/prov/der_ml_dsa.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/providers/common/include/prov/der_ml_dsa.h new file mode 100644 index 00000000000000..c55f780ab4527c --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/providers/common/include/prov/der_ml_dsa.h @@ -0,0 +1,40 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_ml_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +#define DER_OID_V_id_ml_dsa_44 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x11 +#define DER_OID_SZ_id_ml_dsa_44 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44]; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +#define DER_OID_V_id_ml_dsa_65 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x12 +#define DER_OID_SZ_id_ml_dsa_65 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65]; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +#define DER_OID_V_id_ml_dsa_87 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x13 +#define DER_OID_SZ_id_ml_dsa_87 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87]; + + +int ossl_DER_w_algorithmIdentifier_ML_DSA(WPACKET *pkt, int tag, ML_DSA_KEY *key); diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/providers/common/include/prov/der_slh_dsa.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/providers/common/include/prov/der_slh_dsa.h new file mode 100644 index 00000000000000..760f8e7699be72 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/providers/common/include/prov/der_slh_dsa.h @@ -0,0 +1,103 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_slh_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x14 +#define DER_OID_SZ_id_slh_dsa_sha2_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s]; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x15 +#define DER_OID_SZ_id_slh_dsa_sha2_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f]; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x16 +#define DER_OID_SZ_id_slh_dsa_sha2_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s]; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x17 +#define DER_OID_SZ_id_slh_dsa_sha2_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f]; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x18 +#define DER_OID_SZ_id_slh_dsa_sha2_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s]; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x19 +#define DER_OID_SZ_id_slh_dsa_sha2_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f]; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +#define DER_OID_V_id_slh_dsa_shake_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1A +#define DER_OID_SZ_id_slh_dsa_shake_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s]; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +#define DER_OID_V_id_slh_dsa_shake_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1B +#define DER_OID_SZ_id_slh_dsa_shake_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f]; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +#define DER_OID_V_id_slh_dsa_shake_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1C +#define DER_OID_SZ_id_slh_dsa_shake_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s]; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +#define DER_OID_V_id_slh_dsa_shake_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1D +#define DER_OID_SZ_id_slh_dsa_shake_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f]; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +#define DER_OID_V_id_slh_dsa_shake_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1E +#define DER_OID_SZ_id_slh_dsa_shake_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s]; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +#define DER_OID_V_id_slh_dsa_shake_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1F +#define DER_OID_SZ_id_slh_dsa_shake_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f]; + + +int ossl_DER_w_algorithmIdentifier_SLH_DSA(WPACKET *pkt, int tag, SLH_DSA_KEY *key); diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/apps/progs.c b/deps/openssl/config/archs/BSD-x86_64/no-asm/apps/progs.c index 43cef00799b86e..acc204a3e6e781 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/apps/progs.c +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/apps/progs.c @@ -89,6 +89,7 @@ FUNCTION functions[] = { {FT_general, "s_time", s_time_main, s_time_options, NULL, NULL}, #endif {FT_general, "sess_id", sess_id_main, sess_id_options, NULL, NULL}, + {FT_general, "skeyutl", skeyutl_main, skeyutl_options, NULL, NULL}, {FT_general, "smime", smime_main, smime_options, NULL, NULL}, {FT_general, "speed", speed_main, speed_options, NULL, NULL}, {FT_general, "spkac", spkac_main, spkac_options, NULL, NULL}, @@ -225,9 +226,15 @@ FUNCTION functions[] = { {FT_cipher, "camellia-256-ecb", enc_main, enc_options, NULL}, #endif {FT_cipher, "base64", enc_main, enc_options, NULL}, -#ifdef ZLIB +#ifndef OPENSSL_NO_ZLIB {FT_cipher, "zlib", enc_main, enc_options, NULL}, #endif +#ifndef OPENSSL_NO_BROTLI + {FT_cipher, "brotli", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ZSTD + {FT_cipher, "zstd", enc_main, enc_options, NULL}, +#endif #ifndef OPENSSL_NO_DES {FT_cipher, "des", enc_main, enc_options, NULL}, #endif diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm b/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm index 11790411015e3e..8569950cf04e6e 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm @@ -18,6 +18,7 @@ our %config = ( "ARFLAGS" => [ "qc" ], + "ASFLAGS" => [], "CC" => "cc", "CFLAGS" => [ "-Wall -O3" @@ -27,14 +28,16 @@ our %config = ( "CPPINCLUDES" => [], "CXXFLAGS" => [], "FIPSKEY" => "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813", + "FIPS_VENDOR" => "OpenSSL FIPS Provider", "HASHBANGPERL" => "/usr/bin/env perl", "LDFLAGS" => [], "LDLIBS" => [], + "OBJCOPY" => "objcopy", "PERL" => "/usr/bin/perl", "RANLIB" => "ranlib", "RC" => "windres", "RCFLAGS" => [], - "api" => "30000", + "api" => "30500", "b32" => "0", "b64" => "0", "b64l" => "1", @@ -56,11 +59,13 @@ our %config = ( "doc/build.info", "test/build.info", "engines/build.info", + "exporters/build.info", "crypto/objects/build.info", "crypto/buffer/build.info", "crypto/bio/build.info", "crypto/stack/build.info", "crypto/lhash/build.info", + "crypto/hashtable/build.info", "crypto/rand/build.info", "crypto/evp/build.info", "crypto/asn1/build.info", @@ -78,6 +83,7 @@ our %config = ( "crypto/md5/build.info", "crypto/sha/build.info", "crypto/mdc2/build.info", + "crypto/ml_kem/build.info", "crypto/hmac/build.info", "crypto/ripemd/build.info", "crypto/whrlpool/build.info", @@ -119,11 +125,19 @@ our %config = ( "crypto/cmp/build.info", "crypto/encode_decode/build.info", "crypto/ffc/build.info", + "crypto/hpke/build.info", + "crypto/thread/build.info", + "crypto/ml_dsa/build.info", + "crypto/slh_dsa/build.info", + "ssl/record/build.info", + "ssl/rio/build.info", + "ssl/quic/build.info", "apps/lib/build.info", "providers/common/build.info", "providers/implementations/build.info", "providers/fips/build.info", "doc/man1/build.info", + "ssl/record/methods/build.info", "providers/common/der/build.info", "providers/implementations/digests/build.info", "providers/implementations/ciphers/build.info", @@ -137,6 +151,7 @@ our %config = ( "providers/implementations/encode_decode/build.info", "providers/implementations/storemgmt/build.info", "providers/implementations/kem/build.info", + "providers/implementations/skeymgmt/build.info", "providers/implementations/rands/seeding/build.info" ], "build_metadata" => "", @@ -154,7 +169,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.17", + "full_version" => "3.5.2", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -163,9 +178,9 @@ our %config = ( "libdir" => "", "major" => "3", "makedep_scheme" => "gcc", - "minor" => "0", + "minor" => "5", "openssl_api_defines" => [ - "OPENSSL_CONFIGURED_API=30000" + "OPENSSL_CONFIGURED_API=30500" ], "openssl_feature_defines" => [ "OPENSSL_RAND_SEED_OS", @@ -173,27 +188,42 @@ our %config = ( "OPENSSL_NO_AFALGENG", "OPENSSL_NO_ASAN", "OPENSSL_NO_ASM", + "OPENSSL_NO_BROTLI", + "OPENSSL_NO_BROTLI_DYNAMIC", "OPENSSL_NO_COMP", "OPENSSL_NO_CRYPTO_MDEBUG", "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE", + "OPENSSL_NO_DEMOS", "OPENSSL_NO_EC_NISTP_64_GCC_128", "OPENSSL_NO_EGD", "OPENSSL_NO_EXTERNAL_TESTS", + "OPENSSL_NO_FIPS_JITTER", "OPENSSL_NO_FUZZ_AFL", "OPENSSL_NO_FUZZ_LIBFUZZER", + "OPENSSL_NO_H3DEMO", + "OPENSSL_NO_HQINTEROP", + "OPENSSL_NO_JITTER", "OPENSSL_NO_KTLS", "OPENSSL_NO_LOADERENG", "OPENSSL_NO_MD2", "OPENSSL_NO_MSAN", + "OPENSSL_NO_PIE", "OPENSSL_NO_RC5", "OPENSSL_NO_SCTP", "OPENSSL_NO_SSL3", "OPENSSL_NO_SSL3_METHOD", + "OPENSSL_NO_SSLKEYLOG", + "OPENSSL_NO_TFO", "OPENSSL_NO_TRACE", "OPENSSL_NO_UBSAN", "OPENSSL_NO_UNIT_TEST", "OPENSSL_NO_UPLINK", "OPENSSL_NO_WEAK_SSL_CIPHERS", + "OPENSSL_NO_WINSTORE", + "OPENSSL_NO_ZLIB", + "OPENSSL_NO_ZLIB_DYNAMIC", + "OPENSSL_NO_ZSTD", + "OPENSSL_NO_ZSTD_DYNAMIC", "OPENSSL_NO_DYNAMIC_ENGINE" ], "openssl_other_defines" => [ @@ -201,11 +231,11 @@ our %config = ( ], "openssl_sys_defines" => [], "openssldir" => "", - "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "17", + "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", + "patch" => "2", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", - "perl_version" => "5.38.2", + "perl_version" => "5.34.0", "perlargv" => [ "no-comp", "no-shared", @@ -236,6 +266,7 @@ our %config = ( "LDLIBS" => undef, "MT" => undef, "MTFLAGS" => undef, + "OBJCOPY" => undef, "OPENSSL_LOCAL_CONFIG_DIR" => undef, "PERL" => undef, "RANLIB" => undef, @@ -255,11 +286,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "1 Jul 2025", + "release_date" => "5 Aug 2025", "shlib_version" => "3", "sourcedir" => ".", "target" => "BSD-x86_64", - "version" => "3.0.17" + "version" => "3.5.2" ); our %target = ( "AR" => "ar", @@ -267,6 +298,7 @@ our %target = ( "CC" => "cc", "CFLAGS" => "-Wall -O3", "HASHBANGPERL" => "/usr/bin/env perl", + "OBJCOPY" => "objcopy", "RANLIB" => "ranlib", "RC" => "windres", "_conf_fname_int" => [ @@ -278,6 +310,8 @@ our %target = ( "Configurations/shared-info.pl" ], "asm_arch" => "x86_64", + "bin_cflags" => "", + "bin_lflags" => "", "bn_ops" => "SIXTY_FOUR_BIT_LONG", "build_file" => "Makefile", "build_scheme" => [ @@ -321,6 +355,8 @@ our %target = ( our @disablables = ( "acvp-tests", "afalgeng", + "apps", + "argon2", "aria", "asan", "asm", @@ -331,11 +367,14 @@ our @disablables = ( "autoload-config", "bf", "blake2", + "brotli", + "brotli-dynamic", "buildtest-c++", "bulk", "cached-fetch", "camellia", "capieng", + "winstore", "cast", "chacha", "cmac", @@ -344,11 +383,16 @@ our @disablables = ( "comp", "crypto-mdebug", "ct", + "default-thread-pool", + "demos", + "h3demo", + "hqinterop", "deprecated", "des", "devcryptoeng", "dgram", "dh", + "docs", "dsa", "dso", "dtls", @@ -358,6 +402,7 @@ our @disablables = ( "ec_nistp_64_gcc_128", "ecdh", "ecdsa", + "ecx", "egd", "engine", "err", @@ -365,10 +410,15 @@ our @disablables = ( "filenames", "fips", "fips-securitychecks", + "fips-post", + "fips-jitter", "fuzz-afl", "fuzz-libfuzzer", "gost", + "http", "idea", + "integrity-only-ciphers", + "jitter", "ktls", "legacy", "loadereng", @@ -376,6 +426,8 @@ our @disablables = ( "md2", "md4", "mdc2", + "ml-dsa", + "ml-kem", "module", "msan", "multiblock", @@ -384,10 +436,13 @@ our @disablables = ( "ocsp", "padlockeng", "pic", + "pie", "pinshared", "poly1305", "posix-io", "psk", + "quic", + "unstable-qlog", "rc2", "rc4", "rc5", @@ -401,7 +456,9 @@ our @disablables = ( "shared", "siphash", "siv", + "slh-dsa", "sm2", + "sm2-precomp", "sm3", "sm4", "sock", @@ -412,9 +469,13 @@ our @disablables = ( "ssl-trace", "static-engine", "stdio", + "sslkeylog", "tests", + "tfo", + "thread-pool", "threads", "tls", + "tls-deprecated-ec", "trace", "ts", "ubsan", @@ -425,6 +486,8 @@ our @disablables = ( "whirlpool", "zlib", "zlib-dynamic", + "zstd", + "zstd-dynamic", "ssl3", "ssl3-method", "tls1", @@ -446,32 +509,45 @@ our %disabled = ( "afalgeng" => "option", "asan" => "default", "asm" => "option", + "brotli" => "default", + "brotli-dynamic" => "default", "buildtest-c++" => "default", "comp" => "option", "crypto-mdebug" => "default", "crypto-mdebug-backtrace" => "default", + "demos" => "default", "dynamic-engine" => "cascade", "ec_nistp_64_gcc_128" => "default", "egd" => "default", "external-tests" => "default", + "fips-jitter" => "default", "fuzz-afl" => "default", "fuzz-libfuzzer" => "default", + "h3demo" => "default", + "hqinterop" => "default", + "jitter" => "default", "ktls" => "default", "loadereng" => "cascade", "md2" => "default", "msan" => "default", + "pie" => "default", "rc5" => "default", "sctp" => "default", "shared" => "option", "ssl3" => "default", "ssl3-method" => "default", + "sslkeylog" => "default", + "tfo" => "default", "trace" => "default", "ubsan" => "default", "unit-test" => "default", "uplink" => "no uplink_arch", "weak-ssl-ciphers" => "default", + "winstore" => "not-windows", "zlib" => "default", - "zlib-dynamic" => "default" + "zlib-dynamic" => "default", + "zstd" => "default", + "zstd-dynamic" => "default" ); our %withargs = (); our %unified_info = ( @@ -697,6 +773,11 @@ our %unified_info = ( "pod" => "1" } }, + "doc/man1/openssl-skeyutl.pod" => { + "doc/man1/openssl-skeyutl.pod.in" => { + "pod" => "1" + } + }, "doc/man1/openssl-smime.pod" => { "doc/man1/openssl-smime.pod.in" => { "pod" => "1" @@ -754,6 +835,21 @@ our %unified_info = ( } }, "generate" => { + "exporters/OpenSSLConfig.cmake" => { + "exporter" => "cmake" + }, + "exporters/OpenSSLConfigVersion.cmake" => { + "exporter" => "cmake" + }, + "exporters/libcrypto.pc" => { + "exporter" => "pkg-config" + }, + "exporters/libssl.pc" => { + "exporter" => "pkg-config" + }, + "exporters/openssl.pc" => { + "exporter" => "pkg-config" + }, "include/openssl/configuration.h" => { "skip" => "1" } @@ -774,6 +870,9 @@ our %unified_info = ( "providers/liblegacy.a" => { "noinst" => "1" }, + "providers/libtemplate.a" => { + "noinst" => "1" + }, "test/libtestutil.a" => { "has_main" => "1", "noinst" => "1" @@ -791,6 +890,9 @@ our %unified_info = ( } }, "programs" => { + "fuzz/acert-test" => { + "noinst" => "1" + }, "fuzz/asn1-test" => { "noinst" => "1" }, @@ -821,9 +923,60 @@ our %unified_info = ( "fuzz/ct-test" => { "noinst" => "1" }, + "fuzz/decoder-test" => { + "noinst" => "1" + }, + "fuzz/dtlsclient-test" => { + "noinst" => "1" + }, + "fuzz/dtlsserver-test" => { + "noinst" => "1" + }, + "fuzz/hashtable-test" => { + "noinst" => "1" + }, + "fuzz/ml-dsa-test" => { + "noinst" => "1" + }, + "fuzz/ml-kem-test" => { + "noinst" => "1" + }, + "fuzz/pem-test" => { + "noinst" => "1" + }, + "fuzz/provider-test" => { + "noinst" => "1" + }, + "fuzz/punycode-test" => { + "noinst" => "1" + }, + "fuzz/quic-client-test" => { + "noinst" => "1" + }, + "fuzz/quic-lcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-rcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-server-test" => { + "noinst" => "1" + }, + "fuzz/quic-srtm-test" => { + "noinst" => "1" + }, "fuzz/server-test" => { "noinst" => "1" }, + "fuzz/slh-dsa-test" => { + "noinst" => "1" + }, + "fuzz/smime-test" => { + "noinst" => "1" + }, + "fuzz/v3name-test" => { + "noinst" => "1" + }, "fuzz/x509-test" => { "noinst" => "1" }, @@ -875,18 +1028,30 @@ our %unified_info = ( "test/bftest" => { "noinst" => "1" }, + "test/bio_addr_test" => { + "noinst" => "1" + }, + "test/bio_base64_test" => { + "noinst" => "1" + }, "test/bio_callback_test" => { "noinst" => "1" }, "test/bio_core_test" => { "noinst" => "1" }, + "test/bio_dgram_test" => { + "noinst" => "1" + }, "test/bio_enc_test" => { "noinst" => "1" }, "test/bio_memleak_test" => { "noinst" => "1" }, + "test/bio_meth_test" => { + "noinst" => "1" + }, "test/bio_prefix_text" => { "noinst" => "1" }, @@ -896,6 +1061,9 @@ our %unified_info = ( "test/bio_readbuffer_test" => { "noinst" => "1" }, + "test/bio_tfo_test" => { + "noinst" => "1" + }, "test/bioprinttest" => { "noinst" => "1" }, @@ -905,6 +1073,9 @@ our %unified_info = ( "test/bntest" => { "noinst" => "1" }, + "test/build_wincrypt_test" => { + "noinst" => "1" + }, "test/buildtest_c_aes" => { "noinst" => "1" }, @@ -920,6 +1091,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => { "noinst" => "1" }, + "test/buildtest_c_byteorder" => { + "noinst" => "1" + }, "test/buildtest_c_camellia" => { "noinst" => "1" }, @@ -944,9 +1118,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => { "noinst" => "1" }, - "test/buildtest_c_core_names" => { - "noinst" => "1" - }, "test/buildtest_c_core_object" => { "noinst" => "1" }, @@ -971,6 +1142,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => { "noinst" => "1" }, + "test/buildtest_c_e_ostime" => { + "noinst" => "1" + }, "test/buildtest_c_ebcdic" => { "noinst" => "1" }, @@ -998,12 +1172,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => { "noinst" => "1" }, + "test/buildtest_c_hpke" => { + "noinst" => "1" + }, "test/buildtest_c_http" => { "noinst" => "1" }, "test/buildtest_c_idea" => { "noinst" => "1" }, + "test/buildtest_c_indicator" => { + "noinst" => "1" + }, "test/buildtest_c_kdf" => { "noinst" => "1" }, @@ -1019,6 +1199,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => { "noinst" => "1" }, + "test/buildtest_c_ml_kem" => { + "noinst" => "1" + }, "test/buildtest_c_modes" => { "noinst" => "1" }, @@ -1049,6 +1232,9 @@ our %unified_info = ( "test/buildtest_c_provider" => { "noinst" => "1" }, + "test/buildtest_c_quic" => { + "noinst" => "1" + }, "test/buildtest_c_rand" => { "noinst" => "1" }, @@ -1091,6 +1277,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => { "noinst" => "1" }, + "test/buildtest_c_thread" => { + "noinst" => "1" + }, "test/buildtest_c_tls1" => { "noinst" => "1" }, @@ -1106,6 +1295,12 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => { "noinst" => "1" }, + "test/byteorder_test" => { + "noinst" => "1" + }, + "test/ca_internals_test" => { + "noinst" => "1" + }, "test/casttest" => { "noinst" => "1" }, @@ -1190,6 +1385,9 @@ our %unified_info = ( "test/danetest" => { "noinst" => "1" }, + "test/decoder_propq_test" => { + "noinst" => "1" + }, "test/defltfips_test" => { "noinst" => "1" }, @@ -1262,15 +1460,24 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => { "noinst" => "1" }, + "test/evp_pkey_dhkem_test" => { + "noinst" => "1" + }, "test/evp_pkey_dparams_test" => { "noinst" => "1" }, "test/evp_pkey_provided_test" => { "noinst" => "1" }, + "test/evp_skey_test" => { + "noinst" => "1" + }, "test/evp_test" => { "noinst" => "1" }, + "test/evp_xof_test" => { + "noinst" => "1" + }, "test/exdatatest" => { "noinst" => "1" }, @@ -1298,6 +1505,9 @@ our %unified_info = ( "test/hmactest" => { "noinst" => "1" }, + "test/hpke_test" => { + "noinst" => "1" + }, "test/http_test" => { "noinst" => "1" }, @@ -1307,12 +1517,18 @@ our %unified_info = ( "test/igetest" => { "noinst" => "1" }, + "test/json_test" => { + "noinst" => "1" + }, "test/keymgmt_internal_test" => { "noinst" => "1" }, "test/lhash_test" => { "noinst" => "1" }, + "test/list_test" => { + "noinst" => "1" + }, "test/localetest" => { "noinst" => "1" }, @@ -1322,9 +1538,21 @@ our %unified_info = ( "test/mdc2test" => { "noinst" => "1" }, + "test/membio_test" => { + "noinst" => "1" + }, "test/memleaktest" => { "noinst" => "1" }, + "test/ml_dsa_test" => { + "noinst" => "1" + }, + "test/ml_kem_evp_extra_test" => { + "noinst" => "1" + }, + "test/ml_kem_internal_test" => { + "noinst" => "1" + }, "test/modes_internal_test" => { "noinst" => "1" }, @@ -1343,6 +1571,9 @@ our %unified_info = ( "test/packettest" => { "noinst" => "1" }, + "test/pairwise_fail_test" => { + "noinst" => "1" + }, "test/param_build_test" => { "noinst" => "1" }, @@ -1367,6 +1598,9 @@ our %unified_info = ( "test/pemtest" => { "noinst" => "1" }, + "test/pkcs12_api_test" => { + "noinst" => "1" + }, "test/pkcs12_format_test" => { "noinst" => "1" }, @@ -1382,6 +1616,9 @@ our %unified_info = ( "test/poly1305_internal_test" => { "noinst" => "1" }, + "test/priority_queue_test" => { + "noinst" => "1" + }, "test/property_test" => { "noinst" => "1" }, @@ -1391,6 +1628,9 @@ our %unified_info = ( "test/provfetchtest" => { "noinst" => "1" }, + "test/provider_default_search_path_test" => { + "noinst" => "1" + }, "test/provider_fallback_test" => { "noinst" => "1" }, @@ -1409,6 +1649,72 @@ our %unified_info = ( "test/punycode_test" => { "noinst" => "1" }, + "test/quic_ackm_test" => { + "noinst" => "1" + }, + "test/quic_cc_test" => { + "noinst" => "1" + }, + "test/quic_cfq_test" => { + "noinst" => "1" + }, + "test/quic_client_test" => { + "noinst" => "1" + }, + "test/quic_fc_test" => { + "noinst" => "1" + }, + "test/quic_fifd_test" => { + "noinst" => "1" + }, + "test/quic_lcidm_test" => { + "noinst" => "1" + }, + "test/quic_multistream_test" => { + "noinst" => "1" + }, + "test/quic_newcid_test" => { + "noinst" => "1" + }, + "test/quic_qlog_test" => { + "noinst" => "1" + }, + "test/quic_radix_test" => { + "noinst" => "1" + }, + "test/quic_rcidm_test" => { + "noinst" => "1" + }, + "test/quic_record_test" => { + "noinst" => "1" + }, + "test/quic_srt_gen_test" => { + "noinst" => "1" + }, + "test/quic_srtm_test" => { + "noinst" => "1" + }, + "test/quic_stream_test" => { + "noinst" => "1" + }, + "test/quic_tserver_test" => { + "noinst" => "1" + }, + "test/quic_txp_test" => { + "noinst" => "1" + }, + "test/quic_txpim_test" => { + "noinst" => "1" + }, + "test/quic_wire_test" => { + "noinst" => "1" + }, + "test/quicapitest" => { + "noinst" => "1" + }, + "test/quicfaultstest" => { + "noinst" => "1" + }, "test/rand_status_test" => { "noinst" => "1" }, @@ -1424,12 +1730,15 @@ our %unified_info = ( "test/rc5test" => { "noinst" => "1" }, - "test/rdrand_sanitytest" => { + "test/rdcpu_sanitytest" => { "noinst" => "1" }, "test/recordlentest" => { "noinst" => "1" }, + "test/rpktest" => { + "noinst" => "1" + }, "test/rsa_complex" => { "noinst" => "1" }, @@ -1442,6 +1751,12 @@ our %unified_info = ( "test/rsa_test" => { "noinst" => "1" }, + "test/rsa_x931_test" => { + "noinst" => "1" + }, + "test/safe_math_test" => { + "noinst" => "1" + }, "test/sanitytest" => { "noinst" => "1" }, @@ -1457,6 +1772,9 @@ our %unified_info = ( "test/siphash_internal_test" => { "noinst" => "1" }, + "test/slh_dsa_test" => { + "noinst" => "1" + }, "test/sm2_internal_test" => { "noinst" => "1" }, @@ -1478,6 +1796,9 @@ our %unified_info = ( "test/ssl_ctx_test" => { "noinst" => "1" }, + "test/ssl_handshake_rtt_test" => { + "noinst" => "1" + }, "test/ssl_old_test" => { "noinst" => "1" }, @@ -1499,12 +1820,18 @@ our %unified_info = ( "test/stack_test" => { "noinst" => "1" }, + "test/strtoultest" => { + "noinst" => "1" + }, "test/sysdefaulttest" => { "noinst" => "1" }, "test/test_test" => { "noinst" => "1" }, + "test/threadpool_test" => { + "noinst" => "1" + }, "test/threadstest" => { "noinst" => "1" }, @@ -1514,12 +1841,18 @@ our %unified_info = ( "test/time_offset_test" => { "noinst" => "1" }, + "test/time_test" => { + "noinst" => "1" + }, "test/tls13ccstest" => { "noinst" => "1" }, "test/tls13encryptiontest" => { "noinst" => "1" }, + "test/tls13groupselection_test" => { + "noinst" => "1" + }, "test/trace_api_test" => { "noinst" => "1" }, @@ -1547,6 +1880,9 @@ our %unified_info = ( "test/wpackettest" => { "noinst" => "1" }, + "test/x509_acert_test" => { + "noinst" => "1" + }, "test/x509_check_cert_pkey_test" => { "noinst" => "1" }, @@ -1556,6 +1892,15 @@ our %unified_info = ( "test/x509_internal_test" => { "noinst" => "1" }, + "test/x509_load_cert_file_test" => { + "noinst" => "1" + }, + "test/x509_req_test" => { + "noinst" => "1" + }, + "test/x509_test" => { + "noinst" => "1" + }, "test/x509_time_test" => { "noinst" => "1" }, @@ -1599,6 +1944,9 @@ our %unified_info = ( "providers/libfips.a" => [ "FIPS_MODULE" ], + "test/endecode_test" => [ + "STATIC_LEGACY" + ], "test/evp_extra_test" => [ "STATIC_LEGACY" ], @@ -1611,14 +1959,21 @@ our %unified_info = ( }, "depends" => { "" => [ + "OpenSSLConfigVersion.cmake", + "crypto/params_idx.c", + "exporters/OpenSSLConfigVersion.cmake", + "exporters/openssl.pc", "include/crypto/bn_conf.h", "include/crypto/dso_conf.h", + "include/internal/param_names.h", "include/openssl/asn1.h", "include/openssl/asn1t.h", "include/openssl/bio.h", "include/openssl/cmp.h", "include/openssl/cms.h", + "include/openssl/comp.h", "include/openssl/conf.h", + "include/openssl/core_names.h", "include/openssl/crmf.h", "include/openssl/crypto.h", "include/openssl/ct.h", @@ -1635,10 +1990,22 @@ our %unified_info = ( "include/openssl/ssl.h", "include/openssl/ui.h", "include/openssl/x509.h", + "include/openssl/x509_acert.h", "include/openssl/x509_vfy.h", "include/openssl/x509v3.h", + "openssl.pc", "test/provider_internal_test.cnf" ], + "OpenSSLConfig.cmake" => [ + "builddata.pm" + ], + "OpenSSLConfigVersion.cmake" => [ + "OpenSSLConfig.cmake", + "builddata.pm" + ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/progs.h" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/progs.h" ], @@ -1784,6 +2151,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/progs.h" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/progs.h" + ], "apps/openssl-bin-smime.o" => [ "apps/progs.h" ], @@ -1872,6 +2242,9 @@ our %unified_info = ( "crypto/libcrypto-lib-info.o" => [ "crypto/buildinf.h" ], + "crypto/params_idx.c" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "crypto/rc4/rc4-586.S" => [ "crypto/perlasm/x86asm.pl" ], @@ -2037,6 +2410,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -2178,6 +2554,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -2214,6 +2593,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -2229,6 +2611,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -2301,6 +2686,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -2367,6 +2755,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -2466,6 +2857,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -2604,6 +3001,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -2721,6 +3121,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -2808,6 +3214,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -2880,9 +3289,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -2898,12 +3313,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -2973,9 +3394,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -2985,12 +3415,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -3006,9 +3448,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -3033,6 +3481,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -3048,6 +3499,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -3084,6 +3538,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -3357,6 +3814,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -3396,6 +3856,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -3417,6 +3880,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -3531,6 +3997,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -3558,9 +4027,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -3576,6 +4057,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -3585,12 +4069,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -3609,12 +4099,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -3624,9 +4126,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -3639,9 +4147,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -3657,24 +4177,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -3687,6 +4228,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -3696,8 +4243,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -3717,6 +4264,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -3765,6 +4327,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -3831,6 +4396,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -3954,9 +4522,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -3972,6 +4546,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -3996,9 +4573,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -4032,6 +4618,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -4089,15 +4678,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -4107,6 +4708,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -4128,9 +4732,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -4146,6 +4756,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -4158,9 +4771,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -4191,9 +4801,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -4209,12 +4816,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -4269,6 +4930,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -4278,9 +4942,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -4428,6 +5089,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -4569,6 +5233,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -4605,6 +5272,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -4620,6 +5290,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -4692,6 +5365,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -4758,6 +5434,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -4857,6 +5536,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -4995,6 +5680,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -5112,6 +5800,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -5199,6 +5893,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -5271,9 +5968,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -5289,12 +5992,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -5364,9 +6073,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -5376,12 +6094,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -5397,9 +6127,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -5424,6 +6160,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -5439,6 +6178,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -5475,6 +6217,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -5748,6 +6493,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -5787,6 +6535,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -5808,6 +6559,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -5922,6 +6676,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -5949,9 +6706,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -5967,6 +6736,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -5976,12 +6748,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -6000,12 +6778,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -6015,9 +6805,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -6030,9 +6826,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -6048,24 +6856,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -6078,6 +6907,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -6087,8 +6922,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -6108,6 +6943,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -6156,6 +7006,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -6222,6 +7075,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -6345,9 +7201,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -6363,6 +7225,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -6387,9 +7252,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -6423,6 +7297,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -6480,15 +7357,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -6498,6 +7387,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -6519,9 +7411,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -6537,6 +7435,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -6549,9 +7450,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -6582,9 +7480,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -6600,12 +7495,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -6660,6 +7609,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -6669,9 +7621,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -6851,6 +7800,10 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod.in", "doc/perlvars.pm" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in", + "doc/perlvars.pm" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in", "doc/perlvars.pm" @@ -6890,6 +7843,27 @@ our %unified_info = ( "doc/man7/openssl_user_macros.pod" => [ "doc/man7/openssl_user_macros.pod.in" ], + "exporters/OpenSSLConfig.cmake" => [ + "installdata.pm" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/OpenSSLConfig.cmake", + "installdata.pm" + ], + "exporters/libcrypto.pc" => [ + "installdata.pm" + ], + "exporters/libssl.pc" => [ + "installdata.pm" + ], + "exporters/openssl.pc" => [ + "exporters/libcrypto.pc", + "exporters/libssl.pc", + "installdata.pm" + ], + "fuzz/acert-test" => [ + "libcrypto" + ], "fuzz/asn1-test" => [ "libcrypto", "libssl" @@ -6922,17 +7896,85 @@ our %unified_info = ( "fuzz/ct-test" => [ "libcrypto" ], + "fuzz/decoder-test" => [ + "libcrypto" + ], + "fuzz/dtlsclient-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/dtlsserver-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/hashtable-test" => [ + "libcrypto.a" + ], + "fuzz/ml-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/ml-kem-test" => [ + "libcrypto.a" + ], + "fuzz/pem-test" => [ + "libcrypto.a" + ], + "fuzz/provider-test" => [ + "libcrypto" + ], + "fuzz/punycode-test" => [ + "libcrypto.a" + ], + "fuzz/quic-client-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-lcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-rcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-server-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-srtm-test" => [ + "libcrypto.a", + "libssl.a" + ], "fuzz/server-test" => [ "libcrypto", "libssl" ], + "fuzz/slh-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/smime-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/v3name-test" => [ + "libcrypto.a" + ], "fuzz/x509-test" => [ "libcrypto" ], + "include/internal/param_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], + "include/openssl/core_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "libcrypto.ld" => [ "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libcrypto.pc" => [ + "builddata.pm" + ], "libssl" => [ "libcrypto" ], @@ -6940,6 +7982,14 @@ our %unified_info = ( "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libssl.pc" => [ + "builddata.pm" + ], + "openssl.pc" => [ + "builddata.pm", + "libcrypto.pc", + "libssl.pc" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/DIGESTS.asn1", "providers/common/der/NIST.asn1", @@ -6957,11 +8007,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7001,6 +8059,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov/der_rsa.h" ], @@ -7008,6 +8072,12 @@ our %unified_info = ( "providers/common/include/prov/der_digests.h", "providers/common/include/prov/der_rsa.h" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov/der_wrap.h" ], @@ -7047,11 +8117,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7084,9 +8162,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov/der_sm2.h" ], @@ -7099,9 +8183,15 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/legacy" => [ "libcrypto", "providers/liblegacy.a" @@ -7179,6 +8269,14 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_addr_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/bio_base64_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_callback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7187,6 +8285,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_dgram_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_enc_test" => [ "libcrypto", "test/libtestutil.a" @@ -7195,6 +8297,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_meth_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_prefix_text" => [ "libcrypto", "test/libtestutil.a" @@ -7207,6 +8313,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_tfo_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bioprinttest" => [ "libcrypto", "test/libtestutil.a" @@ -7219,6 +8329,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/build_wincrypt_test" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_aes" => [ "libcrypto", "libssl" @@ -7239,6 +8353,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_byteorder" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_camellia" => [ "libcrypto", "libssl" @@ -7271,10 +8389,6 @@ our %unified_info = ( "libcrypto", "libssl" ], - "test/buildtest_c_core_names" => [ - "libcrypto", - "libssl" - ], "test/buildtest_c_core_object" => [ "libcrypto", "libssl" @@ -7307,6 +8421,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_e_ostime" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_ebcdic" => [ "libcrypto", "libssl" @@ -7343,6 +8461,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_hpke" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_http" => [ "libcrypto", "libssl" @@ -7351,6 +8473,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_indicator" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_kdf" => [ "libcrypto", "libssl" @@ -7371,6 +8497,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_ml_kem" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_modes" => [ "libcrypto", "libssl" @@ -7411,6 +8541,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_quic" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_rand" => [ "libcrypto", "libssl" @@ -7467,6 +8601,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_thread" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_tls1" => [ "libcrypto", "libssl" @@ -7487,10 +8625,23 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/byteorder_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ca_internals_test" => [ + "libssl", + "test/libtestutil.a" + ], "test/casttest" => [ "libcrypto", "test/libtestutil.a" ], + "test/cert_comp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/chacha_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7604,7 +8755,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], - "test/defltfips_test" => [ + "test/decoder_propq_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/defltfips_test" => [ "libcrypto", "test/libtestutil.a" ], @@ -7660,6 +8815,8 @@ our %unified_info = ( ], "test/endecode_test" => [ "libcrypto.a", + "providers/libcommon.a", + "providers/liblegacy.a", "test/libtestutil.a" ], "test/endecoder_legacy_test" => [ @@ -7703,6 +8860,10 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => [ "libcrypto" ], + "test/evp_pkey_dhkem_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/evp_pkey_dparams_test" => [ "libcrypto", "test/libtestutil.a" @@ -7711,10 +8872,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/evp_skey_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/evp_xof_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/exdatatest" => [ "libcrypto", "test/libtestutil.a" @@ -7753,6 +8922,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/hpke_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/http_test" => [ "libcrypto", "test/libtestutil.a" @@ -7765,17 +8938,25 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/json_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/keymgmt_internal_test" => [ "libcrypto.a", "test/libtestutil.a" ], "test/lhash_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/libtestutil.a" => [ "libcrypto" ], + "test/list_test" => [ + "test/libtestutil.a" + ], "test/localetest" => [ "libcrypto", "test/libtestutil.a" @@ -7788,10 +8969,26 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/membio_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/memleaktest" => [ "libcrypto", "test/libtestutil.a" ], + "test/ml_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_evp_extra_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_internal_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/modes_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7816,6 +9013,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pairwise_fail_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/param_build_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7848,6 +9049,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pkcs12_api_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/pkcs12_format_test" => [ "libcrypto", "test/libtestutil.a" @@ -7868,6 +9073,11 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/priority_queue_test" => [ + "libcrypto", + "libssl.a", + "test/libtestutil.a" + ], "test/property_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7880,6 +9090,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/provider_default_search_path_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/provider_fallback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7904,12 +9118,122 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/quic_ackm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cfq_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_client_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fifd_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_lcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_multistream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_newcid_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_qlog_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_radix_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_rcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_record_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srt_gen_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srtm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_stream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_tserver_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txpim_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_wire_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicapitest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicfaultstest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/rand_status_test" => [ "libcrypto", "test/libtestutil.a" ], "test/rand_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/rc2test" => [ @@ -7924,7 +9248,7 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "libcrypto.a", "test/libtestutil.a" ], @@ -7933,6 +9257,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/rpktest" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/rsa_mp_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7945,10 +9274,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/sanitytest" => [ + "test/rsa_x931_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/safe_math_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/sanitytest" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/secmemtest" => [ "libcrypto", "test/libtestutil.a" @@ -7966,6 +9303,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/slh_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/sm2_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7995,6 +9336,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/ssl_handshake_rtt_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/ssl_old_test" => [ "libcrypto.a", "libssl.a", @@ -8011,8 +9357,8 @@ our %unified_info = ( "test/libtestutil.a" ], "test/sslapitest" => [ - "libcrypto", - "libssl", + "libcrypto.a", + "libssl.a", "test/libtestutil.a" ], "test/sslbuffertest" => [ @@ -8029,6 +9375,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/strtoultest" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/sysdefaulttest" => [ "libcrypto", "libssl", @@ -8038,8 +9388,12 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/threadpool_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/threadstest" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/threadstest_fips" => [ @@ -8050,6 +9404,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/time_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/tls13ccstest" => [ "libcrypto", "libssl", @@ -8060,6 +9418,11 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/tls13groupselection_test" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/trace_api_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8097,6 +9460,10 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/x509_acert_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_check_cert_pkey_test" => [ "libcrypto", "test/libtestutil.a" @@ -8109,6 +9476,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/x509_load_cert_file_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_req_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_time_test" => [ "libcrypto", "test/libtestutil.a" @@ -8123,9 +9502,13 @@ our %unified_info = ( }, "dirinfo" => { "apps" => { + "deps" => [ + "apps/ca_internals_test-bin-ca.o" + ], "products" => { "bin" => [ - "apps/openssl" + "apps/openssl", + "test/ca_internals_test" ], "script" => [ "apps/CA.pl", @@ -8136,6 +9519,14 @@ our %unified_info = ( "apps/lib" => { "deps" => [ "apps/lib/openssl-bin-cmp_mock_srv.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", "apps/lib/cmp_client_test-bin-cmp_mock_srv.o", "apps/lib/uitest-bin-apps_ui.o", "apps/lib/libapps-lib-app_libctx.o", @@ -8144,12 +9535,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -8160,6 +9553,7 @@ our %unified_info = ( "products" => { "bin" => [ "apps/openssl", + "test/ca_internals_test", "test/cmp_client_test", "test/uitest" ], @@ -8171,8 +9565,12 @@ our %unified_info = ( }, "crypto" => { "deps" => [ + "crypto/asn1_time_test-bin-ctype.o", + "crypto/ca_internals_test-bin-ctype.o", + "crypto/packettest-bin-quic_vlint.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -8182,10 +9580,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -8203,6 +9604,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -8210,12 +9612,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libfips-lib-asn1_dsa.o", @@ -8238,6 +9644,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -8245,9 +9652,15 @@ our %unified_info = ( "crypto/libfips-lib-threads_lib.o", "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", - "crypto/libfips-lib-threads_win.o" + "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test", + "test/packettest" + ], "lib" => [ "libcrypto", "providers/libfips.a" @@ -8288,6 +9701,8 @@ our %unified_info = ( }, "crypto/asn1" => { "deps" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", "crypto/asn1/libcrypto-lib-a_bitstr.o", "crypto/asn1/libcrypto-lib-a_d2i_fp.o", "crypto/asn1/libcrypto-lib-a_digest.o", @@ -8354,6 +9769,10 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test" + ], "lib" => [ "libcrypto" ] @@ -8419,6 +9838,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -8575,6 +9995,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -8942,7 +10363,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", - "crypto/err/libcrypto-lib-err_prn.o" + "crypto/err/libcrypto-lib-err_mark.o", + "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o" ], "products" => { "lib" => [ @@ -9043,7 +10466,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/evp/libfips-lib-asymcipher.o", "crypto/evp/libfips-lib-dh_support.o", "crypto/evp/libfips-lib-digest.o", @@ -9059,14 +10484,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", - "crypto/evp/libfips-lib-signature.o" + "crypto/evp/libfips-lib-s_lib.o", + "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o" ], "products" => { "lib" => [ @@ -9099,6 +10525,20 @@ our %unified_info = ( ] } }, + "crypto/hashtable" => { + "deps" => [ + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/hmac" => { "deps" => [ "crypto/hmac/libcrypto-lib-hmac.o", @@ -9111,6 +10551,17 @@ our %unified_info = ( ] } }, + "crypto/hpke" => { + "deps" => [ + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, "crypto/http" => { "deps" => [ "crypto/http/libcrypto-lib-http_client.o", @@ -9194,6 +10645,44 @@ our %unified_info = ( ] } }, + "crypto/ml_dsa" => { + "deps" => [ + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ml_kem" => { + "deps" => [ + "crypto/ml_kem/libcrypto-lib-ml_kem.o", + "crypto/ml_kem/libfips-lib-ml_kem.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/modes" => { "deps" => [ "crypto/modes/libcrypto-lib-cbc128.o", @@ -9207,6 +10696,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -9214,7 +10704,8 @@ our %unified_info = ( "crypto/modes/libfips-lib-gcm128.o", "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", - "crypto/modes/libfips-lib-xts128.o" + "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o" ], "products" => { "lib" => [ @@ -9357,6 +10848,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rand/libfips-lib-rand_lib.o" ], @@ -9501,6 +10993,36 @@ our %unified_info = ( ] } }, + "crypto/slh_dsa" => { + "deps" => [ + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/sm2" => { "deps" => [ "crypto/sm2/libcrypto-lib-sm2_crypt.o", @@ -9574,6 +11096,38 @@ our %unified_info = ( ] } }, + "crypto/thread" => { + "deps" => [ + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/thread/arch" => { + "deps" => [ + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/ts" => { "deps" => [ "crypto/ts/libcrypto-lib-ts_asn1.o", @@ -9640,14 +11194,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -9656,12 +11218,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -9669,13 +11236,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -9693,6 +11267,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -9702,6 +11277,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -9729,6 +11305,7 @@ our %unified_info = ( "fuzz" => { "products" => { "bin" => [ + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -9739,13 +11316,31 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test" ] } }, "providers" => { "deps" => [ + "providers/endecode_test-bin-legacyprov.o", "providers/evp_extra_test-bin-legacyprov.o", "providers/libcrypto-lib-baseprov.o", "providers/libcrypto-lib-defltprov.o", @@ -9755,6 +11350,7 @@ our %unified_info = ( ], "products" => { "bin" => [ + "test/endecode_test", "test/evp_extra_test" ], "dso" => [ @@ -9806,8 +11402,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/der/libdefault-lib-der_rsa_sig.o", "providers/common/der/libdefault-lib-der_sm2_gen.o", @@ -9826,6 +11426,7 @@ our %unified_info = ( "providers/fips" => { "deps" => [ "providers/fips/fips-dso-fips_entry.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o" @@ -9869,6 +11470,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -9893,7 +11497,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -9990,7 +11600,10 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", - "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" + "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" ], "products" => { "lib" => [ @@ -10018,7 +11631,9 @@ our %unified_info = ( }, "providers/implementations/kdfs" => { "deps" => [ + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -10037,7 +11652,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", - "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" + "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" ], "products" => { "lib" => [ @@ -10049,13 +11665,22 @@ our %unified_info = ( }, "providers/implementations/kem" => { "deps" => [ + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", - "providers/implementations/kem/libfips-lib-rsa_kem.o" + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", + "providers/implementations/kem/libfips-lib-rsa_kem.o", + "providers/implementations/kem/libtemplate-lib-template_kem.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10067,19 +11692,29 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", - "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10107,18 +11742,18 @@ our %unified_info = ( }, "providers/implementations/rands" => { "deps" => [ - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o" ], "products" => { @@ -10147,13 +11782,31 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", - "providers/implementations/signature/libfips-lib-rsa_sig.o" + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", + "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/skeymgmt" => { + "deps" => [ + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o" ], "products" => { "lib" => [ @@ -10181,14 +11834,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -10204,32 +11858,107 @@ our %unified_info = ( "ssl/libssl-lib-t1_trce.o", "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", - "ssl/libssl-lib-tls_srp.o", - "ssl/libdefault-lib-s3_cbc.o", - "ssl/libfips-lib-s3_cbc.o" + "ssl/libssl-lib-tls_srp.o" ], "products" => { "lib" => [ - "libssl", - "providers/libdefault.a", - "providers/libfips.a" + "libssl" + ] + } + }, + "ssl/quic" => { + "deps" => [ + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, "ssl/record" => { "deps" => [ - "ssl/record/libssl-lib-dtls1_bitmap.o", "ssl/record/libssl-lib-rec_layer_d1.o", - "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/libssl-lib-rec_layer_s3.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "ssl/record/methods" => { + "deps" => [ + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/record/methods/libcommon-lib-tls_pad.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o", + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "products" => { "lib" => [ "libssl", - "providers/libcommon.a" + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "ssl/rio" => { + "deps" => [ + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, @@ -10267,9 +11996,40 @@ our %unified_info = ( "test/helpers/dtlstest-bin-ssltestlib.o", "test/helpers/endecode_test-bin-predefined_dhparams.o", "test/helpers/fatalerrtest-bin-ssltestlib.o", + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/helpers/pkcs12_api_test-bin-pkcs12.o", "test/helpers/pkcs12_format_test-bin-pkcs12.o", + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", "test/helpers/recordlentest-bin-ssltestlib.o", + "test/helpers/rpktest-bin-ssltestlib.o", "test/helpers/servername_test-bin-ssltestlib.o", + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/helpers/ssl_test-bin-handshake.o", "test/helpers/ssl_test-bin-handshake_srp.o", @@ -10278,7 +12038,8 @@ our %unified_info = ( "test/helpers/sslapitest-bin-ssltestlib.o", "test/helpers/sslbuffertest-bin-ssltestlib.o", "test/helpers/sslcorrupttest-bin-ssltestlib.o", - "test/helpers/tls13ccstest-bin-ssltestlib.o" + "test/helpers/tls13ccstest-bin-ssltestlib.o", + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" ], "products" => { "bin" => [ @@ -10296,16 +12057,37 @@ our %unified_info = ( "test/dtlstest", "test/endecode_test", "test/fatalerrtest", + "test/json_test", + "test/pkcs12_api_test", "test/pkcs12_format_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_radix_test", + "test/quic_srt_gen_test", + "test/quicapitest", + "test/quicfaultstest", "test/recordlentest", + "test/rpktest", "test/servername_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", "test/sslapitest", "test/sslbuffertest", "test/sslcorrupttest", - "test/tls13ccstest" + "test/tls13ccstest", + "test/tls13groupselection_test" + ] + } + }, + "test/radix" => { + "deps" => [ + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "products" => { + "bin" => [ + "test/quic_radix_test" ] } }, @@ -10317,6 +12099,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -10352,6 +12135,12 @@ our %unified_info = ( } }, "generate" => { + "OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], "apps/progs.c" => [ "apps/progs.pl", "\"-C\"", @@ -10362,6 +12151,19 @@ our %unified_info = ( "\"-H\"", "\$(APPS_OPENSSL)" ], + "builddata.pm" => [ + "util/mkinstallvars.pl", + "PREFIX=.", + "BINDIR=apps", + "APPLINKDIR=ms", + "LIBDIR=", + "INCLUDEDIR=include", + "\"INCLUDEDIR=\$(SRCDIR)/include\"", + "ENGINESDIR=engines", + "MODULESDIR=providers", + "\"VERSION=\$(VERSION)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"" + ], "crypto/aes/aes-586.S" => [ "crypto/aes/asm/aes-586.pl" ], @@ -10383,6 +12185,24 @@ our %unified_info = ( "crypto/aes/aes-ppc.s" => [ "crypto/aes/asm/aes-ppc.pl" ], + "crypto/aes/aes-riscv32-zkn.s" => [ + "crypto/aes/asm/aes-riscv32-zkn.pl" + ], + "crypto/aes/aes-riscv64-zkn.s" => [ + "crypto/aes/asm/aes-riscv64-zkn.pl" + ], + "crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvbb-zvkg-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkb-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkb-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkned.pl" + ], + "crypto/aes/aes-riscv64.s" => [ + "crypto/aes/asm/aes-riscv64.pl" + ], "crypto/aes/aes-s390x.S" => [ "crypto/aes/asm/aes-s390x.pl" ], @@ -10410,6 +12230,9 @@ our %unified_info = ( "crypto/aes/aesni-x86_64.s" => [ "crypto/aes/asm/aesni-x86_64.pl" ], + "crypto/aes/aesni-xts-avx512.s" => [ + "crypto/aes/asm/aesni-xts-avx512.pl" + ], "crypto/aes/aesp8-ppc.s" => [ "crypto/aes/asm/aesp8-ppc.pl" ], @@ -10422,12 +12245,18 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.S" => [ "crypto/aes/asm/bsaes-armv7.pl" ], + "crypto/aes/bsaes-armv8.S" => [ + "crypto/aes/asm/bsaes-armv8.pl" + ], "crypto/aes/bsaes-x86_64.s" => [ "crypto/aes/asm/bsaes-x86_64.pl" ], "crypto/aes/vpaes-armv8.S" => [ "crypto/aes/asm/vpaes-armv8.pl" ], + "crypto/aes/vpaes-loongarch64.S" => [ + "crypto/aes/asm/vpaes-loongarch64.pl" + ], "crypto/aes/vpaes-ppc.s" => [ "crypto/aes/asm/vpaes-ppc.pl" ], @@ -10488,15 +12317,33 @@ our %unified_info = ( "crypto/bn/ppc-mont.s" => [ "crypto/bn/asm/ppc-mont.pl" ], + "crypto/bn/ppc64-mont-fixed.s" => [ + "crypto/bn/asm/ppc64-mont-fixed.pl" + ], "crypto/bn/ppc64-mont.s" => [ "crypto/bn/asm/ppc64-mont.pl" ], + "crypto/bn/rsaz-2k-avx512.s" => [ + "crypto/bn/asm/rsaz-2k-avx512.pl" + ], + "crypto/bn/rsaz-2k-avxifma.s" => [ + "crypto/bn/asm/rsaz-2k-avxifma.pl" + ], + "crypto/bn/rsaz-3k-avx512.s" => [ + "crypto/bn/asm/rsaz-3k-avx512.pl" + ], + "crypto/bn/rsaz-3k-avxifma.s" => [ + "crypto/bn/asm/rsaz-3k-avxifma.pl" + ], + "crypto/bn/rsaz-4k-avx512.s" => [ + "crypto/bn/asm/rsaz-4k-avx512.pl" + ], + "crypto/bn/rsaz-4k-avxifma.s" => [ + "crypto/bn/asm/rsaz-4k-avxifma.pl" + ], "crypto/bn/rsaz-avx2.s" => [ "crypto/bn/asm/rsaz-avx2.pl" ], - "crypto/bn/rsaz-avx512.s" => [ - "crypto/bn/asm/rsaz-avx512.pl" - ], "crypto/bn/rsaz-x86_64.s" => [ "crypto/bn/asm/rsaz-x86_64.pl" ], @@ -10558,6 +12405,9 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.S" => [ "crypto/chacha/asm/chacha-armv4.pl" ], + "crypto/chacha/chacha-armv8-sve.S" => [ + "crypto/chacha/asm/chacha-armv8-sve.pl" + ], "crypto/chacha/chacha-armv8.S" => [ "crypto/chacha/asm/chacha-armv8.pl" ], @@ -10570,9 +12420,19 @@ our %unified_info = ( "crypto/chacha/chacha-ia64.s" => [ "crypto/chacha/chacha-ia64.S" ], + "crypto/chacha/chacha-loongarch64.S" => [ + "crypto/chacha/asm/chacha-loongarch64.pl" + ], "crypto/chacha/chacha-ppc.s" => [ "crypto/chacha/asm/chacha-ppc.pl" ], + "crypto/chacha/chacha-riscv64-v-zbb-zvkb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl", + "zvkb" + ], + "crypto/chacha/chacha-riscv64-v-zbb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl" + ], "crypto/chacha/chacha-s390x.S" => [ "crypto/chacha/asm/chacha-s390x.pl" ], @@ -10582,6 +12442,9 @@ our %unified_info = ( "crypto/chacha/chacha-x86_64.s" => [ "crypto/chacha/asm/chacha-x86_64.pl" ], + "crypto/chacha/chachap10-ppc.s" => [ + "crypto/chacha/asm/chachap10-ppc.pl" + ], "crypto/des/crypt586.S" => [ "crypto/des/asm/crypt586.pl" ], @@ -10594,6 +12457,9 @@ our %unified_info = ( "crypto/des/dest4-sparcv9.S" => [ "crypto/des/asm/dest4-sparcv9.pl" ], + "crypto/ec/ecp_nistp384-ppc64.s" => [ + "crypto/ec/asm/ecp_nistp384-ppc64.pl" + ], "crypto/ec/ecp_nistp521-ppc64.s" => [ "crypto/ec/asm/ecp_nistp521-ppc64.pl" ], @@ -10618,6 +12484,9 @@ our %unified_info = ( "crypto/ec/ecp_nistz256-x86_64.s" => [ "crypto/ec/asm/ecp_nistz256-x86_64.pl" ], + "crypto/ec/ecp_sm2p256-armv8.S" => [ + "crypto/ec/asm/ecp_sm2p256-armv8.pl" + ], "crypto/ec/x25519-ppc64.s" => [ "crypto/ec/asm/x25519-ppc64.pl" ], @@ -10627,18 +12496,39 @@ our %unified_info = ( "crypto/ia64cpuid.s" => [ "crypto/ia64cpuid.S" ], + "crypto/loongarch64cpuid.s" => [ + "crypto/loongarch64cpuid.pl" + ], "crypto/md5/md5-586.S" => [ "crypto/md5/asm/md5-586.pl" ], + "crypto/md5/md5-aarch64.S" => [ + "crypto/md5/asm/md5-aarch64.pl" + ], + "crypto/md5/md5-loongarch64.S" => [ + "crypto/md5/asm/md5-loongarch64.pl" + ], "crypto/md5/md5-sparcv9.S" => [ "crypto/md5/asm/md5-sparcv9.pl" ], "crypto/md5/md5-x86_64.s" => [ "crypto/md5/asm/md5-x86_64.pl" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.S" => [ + "crypto/modes/asm/aes-gcm-armv8-unroll8_64.pl" + ], "crypto/modes/aes-gcm-armv8_64.S" => [ "crypto/modes/asm/aes-gcm-armv8_64.pl" ], + "crypto/modes/aes-gcm-avx512.s" => [ + "crypto/modes/asm/aes-gcm-avx512.pl" + ], + "crypto/modes/aes-gcm-ppc.s" => [ + "crypto/modes/asm/aes-gcm-ppc.pl" + ], + "crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s" => [ + "crypto/modes/asm/aes-gcm-riscv64-zvkb-zvkg-zvkned.pl" + ], "crypto/modes/aesni-gcm-x86_64.s" => [ "crypto/modes/asm/aesni-gcm-x86_64.pl" ], @@ -10657,6 +12547,15 @@ our %unified_info = ( "crypto/modes/ghash-parisc.s" => [ "crypto/modes/asm/ghash-parisc.pl" ], + "crypto/modes/ghash-riscv64-zvkb-zvbc.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkb-zvbc.pl" + ], + "crypto/modes/ghash-riscv64-zvkg.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkg.pl" + ], + "crypto/modes/ghash-riscv64.s" => [ + "crypto/modes/asm/ghash-riscv64.pl" + ], "crypto/modes/ghash-s390x.S" => [ "crypto/modes/asm/ghash-s390x.pl" ], @@ -10675,6 +12574,9 @@ our %unified_info = ( "crypto/modes/ghashv8-armx.S" => [ "crypto/modes/asm/ghashv8-armx.pl" ], + "crypto/params_idx.c" => [ + "crypto/params_idx.c.in" + ], "crypto/pariscid.s" => [ "crypto/pariscid.pl" ], @@ -10735,6 +12637,12 @@ our %unified_info = ( "crypto/ripemd/rmd-586.S" => [ "crypto/ripemd/asm/rmd-586.pl" ], + "crypto/riscv32cpuid.s" => [ + "crypto/riscv32cpuid.pl" + ], + "crypto/riscv64cpuid.s" => [ + "crypto/riscv64cpuid.pl" + ], "crypto/s390xcpuid.S" => [ "crypto/s390xcpuid.pl" ], @@ -10843,6 +12751,9 @@ our %unified_info = ( "crypto/sha/sha256-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S" => [ + "crypto/sha/asm/sha256-riscv64-zvkb-zvknha_or_zvknhb.pl" + ], "crypto/sha/sha256-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -10879,6 +12790,9 @@ our %unified_info = ( "crypto/sha/sha512-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha512-riscv64-zvkb-zvknhb.S" => [ + "crypto/sha/asm/sha512-riscv64-zvkb-zvknhb.pl" + ], "crypto/sha/sha512-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -10891,6 +12805,24 @@ our %unified_info = ( "crypto/sha/sha512p8-ppc.s" => [ "crypto/sha/asm/sha512p8-ppc.pl" ], + "crypto/sm3/sm3-armv8.S" => [ + "crypto/sm3/asm/sm3-armv8.pl" + ], + "crypto/sm3/sm3-riscv64-zvksh.S" => [ + "crypto/sm3/asm/sm3-riscv64-zvksh.pl" + ], + "crypto/sm4/sm4-armv8.S" => [ + "crypto/sm4/asm/sm4-armv8.pl" + ], + "crypto/sm4/sm4-riscv64-zvksed.s" => [ + "crypto/sm4/asm/sm4-riscv64-zvksed.pl" + ], + "crypto/sm4/vpsm4-armv8.S" => [ + "crypto/sm4/asm/vpsm4-armv8.pl" + ], + "crypto/sm4/vpsm4_ex-armv8.S" => [ + "crypto/sm4/asm/vpsm4_ex-armv8.pl" + ], "crypto/uplink-ia64.s" => [ "ms/uplink-ia64.pl" ], @@ -11056,6 +12988,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -11197,6 +13132,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -11233,6 +13171,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -11248,6 +13189,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -11320,6 +13264,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -11386,6 +13333,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -11485,6 +13435,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -11623,6 +13579,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -11740,6 +13699,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -11827,6 +13792,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -11899,9 +13867,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -11917,12 +13891,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -11992,9 +13972,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -12004,12 +13993,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -12025,9 +14026,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -12052,6 +14059,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -12067,6 +14077,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -12103,6 +14116,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -12376,6 +14392,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -12415,6 +14434,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -12436,6 +14458,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -12550,6 +14575,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -12577,9 +14605,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -12595,6 +14635,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -12604,12 +14647,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -12628,12 +14677,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -12643,9 +14704,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -12658,9 +14725,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -12676,24 +14755,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -12706,6 +14806,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -12715,8 +14821,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -12736,6 +14842,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -12784,6 +14905,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -12850,6 +14974,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -12973,9 +15100,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -12991,6 +15124,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -13015,9 +15151,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -13051,6 +15196,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -13108,15 +15256,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -13126,6 +15286,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -13147,9 +15310,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -13165,6 +15334,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -13177,9 +15349,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -13210,9 +15379,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -13228,12 +15394,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -13288,6 +15508,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -13297,9 +15520,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -13447,6 +15667,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -13588,6 +15811,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -13624,6 +15850,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -13639,6 +15868,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -13711,6 +15943,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -13777,6 +16012,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -13876,6 +16114,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -14014,6 +16258,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -14131,6 +16378,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -14218,6 +16471,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -14290,9 +16546,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -14308,12 +16570,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -14383,9 +16651,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -14395,12 +16672,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -14416,9 +16705,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -14443,6 +16738,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -14458,6 +16756,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -14494,6 +16795,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -14767,6 +17071,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -14806,6 +17113,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -14827,6 +17137,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -14941,6 +17254,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -14968,9 +17284,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -14986,6 +17314,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -14995,12 +17326,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -15019,11 +17356,23 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], - "doc/man/man3/SSL_get_shared_sigalgs.3" => [ - "doc/man3/SSL_get_shared_sigalgs.pod" + "doc/man/man3/SSL_get_shared_sigalgs.3" => [ + "doc/man3/SSL_get_shared_sigalgs.pod" + ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" @@ -15034,9 +17383,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -15049,9 +17404,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -15067,24 +17434,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -15097,6 +17485,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -15106,8 +17500,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -15127,6 +17521,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -15175,6 +17584,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -15241,6 +17653,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -15364,9 +17779,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -15382,6 +17803,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -15406,9 +17830,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -15442,6 +17875,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -15499,15 +17935,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -15517,6 +17965,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -15538,9 +17989,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -15556,6 +18013,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -15568,9 +18028,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -15601,9 +18058,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -15619,12 +18073,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -15679,6 +18187,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -15688,9 +18199,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -15826,6 +18334,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc/man1/openssl-sess_id.pod.in" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in" ], @@ -15862,12 +18373,30 @@ our %unified_info = ( "engines/e_padlock-x86_64.s" => [ "engines/asm/e_padlock-x86_64.pl" ], + "exporters/OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], + "exporters/libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], + "exporters/libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "exporters/openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "include/crypto/bn_conf.h" => [ "include/crypto/bn_conf.h.in" ], "include/crypto/dso_conf.h" => [ "include/crypto/dso_conf.h.in" ], + "include/internal/param_names.h" => [ + "include/internal/param_names.h.in" + ], "include/openssl/asn1.h" => [ "include/openssl/asn1.h.in" ], @@ -15883,12 +18412,18 @@ our %unified_info = ( "include/openssl/cms.h" => [ "include/openssl/cms.h.in" ], + "include/openssl/comp.h" => [ + "include/openssl/comp.h.in" + ], "include/openssl/conf.h" => [ "include/openssl/conf.h.in" ], "include/openssl/configuration.h" => [ "include/openssl/configuration.h.in" ], + "include/openssl/core_names.h" => [ + "include/openssl/core_names.h.in" + ], "include/openssl/crmf.h" => [ "include/openssl/crmf.h.in" ], @@ -15937,20 +18472,47 @@ our %unified_info = ( "include/openssl/x509.h" => [ "include/openssl/x509.h.in" ], + "include/openssl/x509_acert.h" => [ + "include/openssl/x509_acert.h.in" + ], "include/openssl/x509_vfy.h" => [ "include/openssl/x509_vfy.h.in" ], "include/openssl/x509v3.h" => [ "include/openssl/x509v3.h.in" ], + "installdata.pm" => [ + "util/mkinstallvars.pl", + "\"PREFIX=\$(INSTALLTOP)\"", + "BINDIR=bin", + "\"LIBDIR=\$(LIBDIR)\"", + "\"libdir=\$(libdir)\"", + "INCLUDEDIR=include", + "APPLINKDIR=include/openssl", + "\"ENGINESDIR=\$(ENGINESDIR)\"", + "\"MODULESDIR=\$(MODULESDIR)\"", + "\"PKGCONFIGDIR=\$(PKGCONFIGDIR)\"", + "\"CMAKECONFIGDIR=\$(CMAKECONFIGDIR)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"", + "\"VERSION=\$(VERSION)\"" + ], "libcrypto.ld" => [ "util/libcrypto.num", "libcrypto" ], + "libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], "libssl.ld" => [ "util/libssl.num", "libssl" ], + "libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/der_digests_gen.c.in" ], @@ -15963,9 +18525,15 @@ our %unified_info = ( "providers/common/der/der_ecx_gen.c" => [ "providers/common/der/der_ecx_gen.c.in" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/der_ml_dsa_gen.c.in" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/der_rsa_gen.c.in" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/der_slh_dsa_gen.c.in" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/der_sm2_gen.c.in" ], @@ -15984,9 +18552,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/include/prov/der_ecx.h.in" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/include/prov/der_ml_dsa.h.in" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/include/prov/der_rsa.h.in" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/include/prov/der_slh_dsa.h.in" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/include/prov/der_sm2.h.in" ], @@ -16028,6 +18602,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "buffer" ], + "test/buildtest_byteorder.c" => [ + "test/generate_buildtest.pl", + "byteorder" + ], "test/buildtest_camellia.c" => [ "test/generate_buildtest.pl", "camellia" @@ -16060,10 +18638,6 @@ our %unified_info = ( "test/generate_buildtest.pl", "core_dispatch" ], - "test/buildtest_core_names.c" => [ - "test/generate_buildtest.pl", - "core_names" - ], "test/buildtest_core_object.c" => [ "test/generate_buildtest.pl", "core_object" @@ -16096,6 +18670,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "e_os2" ], + "test/buildtest_e_ostime.c" => [ + "test/generate_buildtest.pl", + "e_ostime" + ], "test/buildtest_ebcdic.c" => [ "test/generate_buildtest.pl", "ebcdic" @@ -16132,6 +18710,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "hmac" ], + "test/buildtest_hpke.c" => [ + "test/generate_buildtest.pl", + "hpke" + ], "test/buildtest_http.c" => [ "test/generate_buildtest.pl", "http" @@ -16140,6 +18722,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "idea" ], + "test/buildtest_indicator.c" => [ + "test/generate_buildtest.pl", + "indicator" + ], "test/buildtest_kdf.c" => [ "test/generate_buildtest.pl", "kdf" @@ -16160,6 +18746,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "mdc2" ], + "test/buildtest_ml_kem.c" => [ + "test/generate_buildtest.pl", + "ml_kem" + ], "test/buildtest_modes.c" => [ "test/generate_buildtest.pl", "modes" @@ -16200,6 +18790,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "provider" ], + "test/buildtest_quic.c" => [ + "test/generate_buildtest.pl", + "quic" + ], "test/buildtest_rand.c" => [ "test/generate_buildtest.pl", "rand" @@ -16256,6 +18850,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "symhacks" ], + "test/buildtest_thread.c" => [ + "test/generate_buildtest.pl", + "thread" + ], "test/buildtest_tls1.c" => [ "test/generate_buildtest.pl", "tls1" @@ -16336,6 +18934,7 @@ our %unified_info = ( "doc/html/man1/openssl-s_server.html", "doc/html/man1/openssl-s_time.html", "doc/html/man1/openssl-sess_id.html", + "doc/html/man1/openssl-skeyutl.html", "doc/html/man1/openssl-smime.html", "doc/html/man1/openssl-speed.html", "doc/html/man1/openssl-spkac.html", @@ -16385,6 +18984,7 @@ our %unified_info = ( "doc/html/man3/BIO_find_type.html", "doc/html/man3/BIO_get_data.html", "doc/html/man3/BIO_get_ex_new_index.html", + "doc/html/man3/BIO_get_rpoll_descriptor.html", "doc/html/man3/BIO_meth_new.html", "doc/html/man3/BIO_new.html", "doc/html/man3/BIO_new_CMS.html", @@ -16397,11 +18997,13 @@ our %unified_info = ( "doc/html/man3/BIO_s_connect.html", "doc/html/man3/BIO_s_core.html", "doc/html/man3/BIO_s_datagram.html", + "doc/html/man3/BIO_s_dgram_pair.html", "doc/html/man3/BIO_s_fd.html", "doc/html/man3/BIO_s_file.html", "doc/html/man3/BIO_s_mem.html", "doc/html/man3/BIO_s_null.html", "doc/html/man3/BIO_s_socket.html", + "doc/html/man3/BIO_sendmmsg.html", "doc/html/man3/BIO_set_callback.html", "doc/html/man3/BIO_should_retry.html", "doc/html/man3/BIO_socket_wait.html", @@ -16426,6 +19028,7 @@ our %unified_info = ( "doc/html/man3/BN_swap.html", "doc/html/man3/BN_zero.html", "doc/html/man3/BUF_MEM_new.html", + "doc/html/man3/CMAC_CTX.html", "doc/html/man3/CMS_EncryptedData_decrypt.html", "doc/html/man3/CMS_EncryptedData_encrypt.html", "doc/html/man3/CMS_EnvelopedData_create.html", @@ -16448,6 +19051,7 @@ our %unified_info = ( "doc/html/man3/CMS_uncompress.html", "doc/html/man3/CMS_verify.html", "doc/html/man3/CMS_verify_receipt.html", + "doc/html/man3/COMP_CTX_new.html", "doc/html/man3/CONF_modules_free.html", "doc/html/man3/CONF_modules_load_file.html", "doc/html/man3/CRYPTO_THREAD_run_once.html", @@ -16481,6 +19085,8 @@ our %unified_info = ( "doc/html/man3/DSA_size.html", "doc/html/man3/DTLS_get_data_mtu.html", "doc/html/man3/DTLS_set_timer_cb.html", + "doc/html/man3/DTLSv1_get_timeout.html", + "doc/html/man3/DTLSv1_handle_timeout.html", "doc/html/man3/DTLSv1_listen.html", "doc/html/man3/ECDSA_SIG_new.html", "doc/html/man3/ECDSA_sign.html", @@ -16527,6 +19133,7 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_ctrl.html", "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html", "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html", + "doc/html/man3/EVP_PKEY_CTX_get_algor.html", "doc/html/man3/EVP_PKEY_CTX_new.html", "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html", "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html", @@ -16566,6 +19173,8 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_verify_recover.html", "doc/html/man3/EVP_RAND.html", "doc/html/man3/EVP_SIGNATURE.html", + "doc/html/man3/EVP_SKEY.html", + "doc/html/man3/EVP_SKEYMGMT.html", "doc/html/man3/EVP_SealInit.html", "doc/html/man3/EVP_SignInit.html", "doc/html/man3/EVP_VerifyInit.html", @@ -16595,6 +19204,7 @@ our %unified_info = ( "doc/html/man3/EVP_sm3.html", "doc/html/man3/EVP_sm4_cbc.html", "doc/html/man3/EVP_whirlpool.html", + "doc/html/man3/GENERAL_NAME.html", "doc/html/man3/HMAC.html", "doc/html/man3/MD5.html", "doc/html/man3/MDC2_Init.html", @@ -16619,14 +19229,18 @@ our %unified_info = ( "doc/html/man3/OPENSSL_init_ssl.html", "doc/html/man3/OPENSSL_instrument_bus.html", "doc/html/man3/OPENSSL_load_builtin_modules.html", + "doc/html/man3/OPENSSL_load_u16_le.html", "doc/html/man3/OPENSSL_malloc.html", + "doc/html/man3/OPENSSL_riscvcap.html", "doc/html/man3/OPENSSL_s390xcap.html", "doc/html/man3/OPENSSL_secure_malloc.html", "doc/html/man3/OPENSSL_strcasecmp.html", "doc/html/man3/OSSL_ALGORITHM.html", "doc/html/man3/OSSL_CALLBACK.html", + "doc/html/man3/OSSL_CMP_ATAV_set0.html", "doc/html/man3/OSSL_CMP_CTX_new.html", "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html", + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html", "doc/html/man3/OSSL_CMP_ITAV_set0.html", "doc/html/man3/OSSL_CMP_MSG_get0_header.html", "doc/html/man3/OSSL_CMP_MSG_http_perform.html", @@ -16650,18 +19264,27 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_CTX.html", "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html", "doc/html/man3/OSSL_ENCODER_to_bio.html", + "doc/html/man3/OSSL_ERR_STATE_save.html", "doc/html/man3/OSSL_ESS_check_signing_certs.html", + "doc/html/man3/OSSL_GENERAL_NAMES_print.html", + "doc/html/man3/OSSL_HPKE_CTX_new.html", "doc/html/man3/OSSL_HTTP_REQ_CTX.html", "doc/html/man3/OSSL_HTTP_parse_url.html", "doc/html/man3/OSSL_HTTP_transfer.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html", + "doc/html/man3/OSSL_INDICATOR_set_callback.html", "doc/html/man3/OSSL_ITEM.html", "doc/html/man3/OSSL_LIB_CTX.html", + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html", "doc/html/man3/OSSL_PARAM.html", "doc/html/man3/OSSL_PARAM_BLD.html", "doc/html/man3/OSSL_PARAM_allocate_from_text.html", "doc/html/man3/OSSL_PARAM_dup.html", "doc/html/man3/OSSL_PARAM_int.html", + "doc/html/man3/OSSL_PARAM_print_to_bio.html", "doc/html/man3/OSSL_PROVIDER.html", + "doc/html/man3/OSSL_QUIC_client_method.html", "doc/html/man3/OSSL_SELF_TEST_new.html", "doc/html/man3/OSSL_SELF_TEST_set_callback.html", "doc/html/man3/OSSL_STORE_INFO.html", @@ -16670,11 +19293,13 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_attach.html", "doc/html/man3/OSSL_STORE_expect.html", "doc/html/man3/OSSL_STORE_open.html", + "doc/html/man3/OSSL_sleep.html", "doc/html/man3/OSSL_trace_enabled.html", "doc/html/man3/OSSL_trace_get_category_num.html", "doc/html/man3/OSSL_trace_set_channel.html", "doc/html/man3/OpenSSL_add_all_algorithms.html", "doc/html/man3/OpenSSL_version.html", + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html", "doc/html/man3/PEM_X509_INFO_read_bio_ex.html", "doc/html/man3/PEM_bytes_read_bio.html", "doc/html/man3/PEM_read.html", @@ -16687,6 +19312,7 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_create_cert.html", "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html", "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html", + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html", "doc/html/man3/PKCS12_add1_attr_by_NID.html", "doc/html/man3/PKCS12_add_CSPName_asc.html", "doc/html/man3/PKCS12_add_cert.html", @@ -16778,6 +19404,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_sess_set_get_cb.html", "doc/html/man3/SSL_CTX_sessions.html", "doc/html/man3/SSL_CTX_set0_CA_list.html", + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html", "doc/html/man3/SSL_CTX_set1_curves.html", "doc/html/man3/SSL_CTX_set1_sigalgs.html", "doc/html/man3/SSL_CTX_set1_verify_cert_store.html", @@ -16791,6 +19418,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_ct_validation_callback.html", "doc/html/man3/SSL_CTX_set_ctlog_list_file.html", "doc/html/man3/SSL_CTX_set_default_passwd_cb.html", + "doc/html/man3/SSL_CTX_set_domain_flags.html", "doc/html/man3/SSL_CTX_set_generate_session_id.html", "doc/html/man3/SSL_CTX_set_info_callback.html", "doc/html/man3/SSL_CTX_set_keylog_callback.html", @@ -16798,6 +19426,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_min_proto_version.html", "doc/html/man3/SSL_CTX_set_mode.html", "doc/html/man3/SSL_CTX_set_msg_callback.html", + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html", "doc/html/man3/SSL_CTX_set_num_tickets.html", "doc/html/man3/SSL_CTX_set_options.html", "doc/html/man3/SSL_CTX_set_psk_client_callback.html", @@ -16836,6 +19465,7 @@ our %unified_info = ( "doc/html/man3/SSL_SESSION_print.html", "doc/html/man3/SSL_SESSION_set1_id.html", "doc/html/man3/SSL_accept.html", + "doc/html/man3/SSL_accept_stream.html", "doc/html/man3/SSL_alert_type_string.html", "doc/html/man3/SSL_alloc_buffers.html", "doc/html/man3/SSL_check_chain.html", @@ -16845,59 +19475,90 @@ our %unified_info = ( "doc/html/man3/SSL_export_keying_material.html", "doc/html/man3/SSL_extension_supported.html", "doc/html/man3/SSL_free.html", + "doc/html/man3/SSL_get0_connection.html", + "doc/html/man3/SSL_get0_group_name.html", + "doc/html/man3/SSL_get0_peer_rpk.html", "doc/html/man3/SSL_get0_peer_scts.html", + "doc/html/man3/SSL_get1_builtin_sigalgs.html", "doc/html/man3/SSL_get_SSL_CTX.html", "doc/html/man3/SSL_get_all_async_fds.html", "doc/html/man3/SSL_get_certificate.html", "doc/html/man3/SSL_get_ciphers.html", "doc/html/man3/SSL_get_client_random.html", + "doc/html/man3/SSL_get_conn_close_info.html", "doc/html/man3/SSL_get_current_cipher.html", "doc/html/man3/SSL_get_default_timeout.html", "doc/html/man3/SSL_get_error.html", + "doc/html/man3/SSL_get_event_timeout.html", "doc/html/man3/SSL_get_extms_support.html", "doc/html/man3/SSL_get_fd.html", + "doc/html/man3/SSL_get_handshake_rtt.html", "doc/html/man3/SSL_get_peer_cert_chain.html", "doc/html/man3/SSL_get_peer_certificate.html", "doc/html/man3/SSL_get_peer_signature_nid.html", "doc/html/man3/SSL_get_peer_tmp_key.html", "doc/html/man3/SSL_get_psk_identity.html", "doc/html/man3/SSL_get_rbio.html", + "doc/html/man3/SSL_get_rpoll_descriptor.html", "doc/html/man3/SSL_get_session.html", "doc/html/man3/SSL_get_shared_sigalgs.html", + "doc/html/man3/SSL_get_stream_id.html", + "doc/html/man3/SSL_get_stream_read_state.html", + "doc/html/man3/SSL_get_value_uint.html", "doc/html/man3/SSL_get_verify_result.html", "doc/html/man3/SSL_get_version.html", "doc/html/man3/SSL_group_to_name.html", + "doc/html/man3/SSL_handle_events.html", "doc/html/man3/SSL_in_init.html", + "doc/html/man3/SSL_inject_net_dgram.html", "doc/html/man3/SSL_key_update.html", "doc/html/man3/SSL_library_init.html", "doc/html/man3/SSL_load_client_CA_file.html", "doc/html/man3/SSL_new.html", + "doc/html/man3/SSL_new_domain.html", + "doc/html/man3/SSL_new_listener.html", + "doc/html/man3/SSL_new_stream.html", "doc/html/man3/SSL_pending.html", + "doc/html/man3/SSL_poll.html", "doc/html/man3/SSL_read.html", "doc/html/man3/SSL_read_early_data.html", "doc/html/man3/SSL_rstate_string.html", "doc/html/man3/SSL_session_reused.html", "doc/html/man3/SSL_set1_host.html", + "doc/html/man3/SSL_set1_initial_peer_addr.html", + "doc/html/man3/SSL_set1_server_cert_type.html", "doc/html/man3/SSL_set_async_callback.html", "doc/html/man3/SSL_set_bio.html", + "doc/html/man3/SSL_set_blocking_mode.html", "doc/html/man3/SSL_set_connect_state.html", + "doc/html/man3/SSL_set_default_stream_mode.html", "doc/html/man3/SSL_set_fd.html", + "doc/html/man3/SSL_set_incoming_stream_policy.html", + "doc/html/man3/SSL_set_quic_tls_cbs.html", "doc/html/man3/SSL_set_retry_verify.html", "doc/html/man3/SSL_set_session.html", + "doc/html/man3/SSL_set_session_secret_cb.html", "doc/html/man3/SSL_set_shutdown.html", "doc/html/man3/SSL_set_verify_result.html", "doc/html/man3/SSL_shutdown.html", "doc/html/man3/SSL_state_string.html", + "doc/html/man3/SSL_stream_conclude.html", + "doc/html/man3/SSL_stream_reset.html", "doc/html/man3/SSL_want.html", "doc/html/man3/SSL_write.html", "doc/html/man3/TS_RESP_CTX_new.html", - "doc/html/man3/TS_VERIFY_CTX_set_certs.html", + "doc/html/man3/TS_VERIFY_CTX.html", "doc/html/man3/UI_STRING.html", "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", + "doc/html/man3/X509_ACERT_add1_attr.html", + "doc/html/man3/X509_ACERT_add_attr_nconf.html", + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html", + "doc/html/man3/X509_ACERT_get_attr.html", + "doc/html/man3/X509_ACERT_print_ex.html", "doc/html/man3/X509_ALGOR_dup.html", "doc/html/man3/X509_ATTRIBUTE.html", "doc/html/man3/X509_CRL_get0_by_serial.html", @@ -16914,6 +19575,7 @@ our %unified_info = ( "doc/html/man3/X509_REQ_get_attr.html", "doc/html/man3/X509_REQ_get_extensions.html", "doc/html/man3/X509_SIG_get0.html", + "doc/html/man3/X509_STORE_CTX_get_by_subject.html", "doc/html/man3/X509_STORE_CTX_get_error.html", "doc/html/man3/X509_STORE_CTX_new.html", "doc/html/man3/X509_STORE_CTX_set_verify_cb.html", @@ -16936,6 +19598,7 @@ our %unified_info = ( "doc/html/man3/X509_get0_notBefore.html", "doc/html/man3/X509_get0_signature.html", "doc/html/man3/X509_get0_uids.html", + "doc/html/man3/X509_get_default_cert_file.html", "doc/html/man3/X509_get_extension_flags.html", "doc/html/man3/X509_get_pubkey.html", "doc/html/man3/X509_get_serialNumber.html", @@ -16981,12 +19644,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-RC5.html", "doc/html/man7/EVP_CIPHER-SEED.html", "doc/html/man7/EVP_CIPHER-SM4.html", + "doc/html/man7/EVP_KDF-ARGON2.html", "doc/html/man7/EVP_KDF-HKDF.html", + "doc/html/man7/EVP_KDF-HMAC-DRBG.html", "doc/html/man7/EVP_KDF-KB.html", "doc/html/man7/EVP_KDF-KRB5KDF.html", "doc/html/man7/EVP_KDF-PBKDF1.html", "doc/html/man7/EVP_KDF-PBKDF2.html", "doc/html/man7/EVP_KDF-PKCS12KDF.html", + "doc/html/man7/EVP_KDF-PVKKDF.html", "doc/html/man7/EVP_KDF-SCRYPT.html", "doc/html/man7/EVP_KDF-SS.html", "doc/html/man7/EVP_KDF-SSHKDF.html", @@ -16995,7 +19661,10 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X942-ASN1.html", "doc/html/man7/EVP_KDF-X942-CONCAT.html", "doc/html/man7/EVP_KDF-X963.html", + "doc/html/man7/EVP_KEM-EC.html", + "doc/html/man7/EVP_KEM-ML-KEM.html", "doc/html/man7/EVP_KEM-RSA.html", + "doc/html/man7/EVP_KEM-X25519.html", "doc/html/man7/EVP_KEYEXCH-DH.html", "doc/html/man7/EVP_KEYEXCH-ECDH.html", "doc/html/man7/EVP_KEYEXCH-X25519.html", @@ -17007,6 +19676,7 @@ our %unified_info = ( "doc/html/man7/EVP_MAC-Poly1305.html", "doc/html/man7/EVP_MAC-Siphash.html", "doc/html/man7/EVP_MD-BLAKE2.html", + "doc/html/man7/EVP_MD-KECCAK.html", "doc/html/man7/EVP_MD-MD2.html", "doc/html/man7/EVP_MD-MD4.html", "doc/html/man7/EVP_MD-MD5-SHA1.html", @@ -17026,12 +19696,17 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-EC.html", "doc/html/man7/EVP_PKEY-FFC.html", "doc/html/man7/EVP_PKEY-HMAC.html", + "doc/html/man7/EVP_PKEY-ML-DSA.html", + "doc/html/man7/EVP_PKEY-ML-KEM.html", "doc/html/man7/EVP_PKEY-RSA.html", + "doc/html/man7/EVP_PKEY-SLH-DSA.html", "doc/html/man7/EVP_PKEY-SM2.html", "doc/html/man7/EVP_PKEY-X25519.html", + "doc/html/man7/EVP_RAND-CRNG-TEST.html", "doc/html/man7/EVP_RAND-CTR-DRBG.html", "doc/html/man7/EVP_RAND-HASH-DRBG.html", "doc/html/man7/EVP_RAND-HMAC-DRBG.html", + "doc/html/man7/EVP_RAND-JITTER.html", "doc/html/man7/EVP_RAND-SEED-SRC.html", "doc/html/man7/EVP_RAND-TEST-RAND.html", "doc/html/man7/EVP_RAND.html", @@ -17039,17 +19714,19 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-ECDSA.html", "doc/html/man7/EVP_SIGNATURE-ED25519.html", "doc/html/man7/EVP_SIGNATURE-HMAC.html", + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html", "doc/html/man7/EVP_SIGNATURE-RSA.html", + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html", "doc/html/man7/OSSL_PROVIDER-FIPS.html", "doc/html/man7/OSSL_PROVIDER-base.html", "doc/html/man7/OSSL_PROVIDER-default.html", "doc/html/man7/OSSL_PROVIDER-legacy.html", "doc/html/man7/OSSL_PROVIDER-null.html", + "doc/html/man7/OSSL_STORE-winstore.html", "doc/html/man7/RAND.html", "doc/html/man7/RSA-PSS.html", "doc/html/man7/X25519.html", "doc/html/man7/bio.html", - "doc/html/man7/crypto.html", "doc/html/man7/ct.html", "doc/html/man7/des_modes.html", "doc/html/man7/evp.html", @@ -17060,14 +19737,31 @@ our %unified_info = ( "doc/html/man7/life_cycle-mac.html", "doc/html/man7/life_cycle-pkey.html", "doc/html/man7/life_cycle-rand.html", - "doc/html/man7/migration_guide.html", "doc/html/man7/openssl-core.h.html", "doc/html/man7/openssl-core_dispatch.h.html", "doc/html/man7/openssl-core_names.h.html", "doc/html/man7/openssl-env.html", "doc/html/man7/openssl-glossary.html", + "doc/html/man7/openssl-qlog.html", + "doc/html/man7/openssl-quic-concurrency.html", + "doc/html/man7/openssl-quic.html", "doc/html/man7/openssl-threads.html", "doc/html/man7/openssl_user_macros.html", + "doc/html/man7/ossl-guide-introduction.html", + "doc/html/man7/ossl-guide-libcrypto-introduction.html", + "doc/html/man7/ossl-guide-libraries-introduction.html", + "doc/html/man7/ossl-guide-libssl-introduction.html", + "doc/html/man7/ossl-guide-migration.html", + "doc/html/man7/ossl-guide-quic-client-block.html", + "doc/html/man7/ossl-guide-quic-client-non-block.html", + "doc/html/man7/ossl-guide-quic-introduction.html", + "doc/html/man7/ossl-guide-quic-multi-stream.html", + "doc/html/man7/ossl-guide-quic-server-block.html", + "doc/html/man7/ossl-guide-quic-server-non-block.html", + "doc/html/man7/ossl-guide-tls-client-block.html", + "doc/html/man7/ossl-guide-tls-client-non-block.html", + "doc/html/man7/ossl-guide-tls-introduction.html", + "doc/html/man7/ossl-guide-tls-server-block.html", "doc/html/man7/ossl_store-file.html", "doc/html/man7/ossl_store.html", "doc/html/man7/passphrase-encoding.html", @@ -17086,10 +19780,10 @@ our %unified_info = ( "doc/html/man7/provider-object.html", "doc/html/man7/provider-rand.html", "doc/html/man7/provider-signature.html", + "doc/html/man7/provider-skeymgmt.html", "doc/html/man7/provider-storemgmt.html", "doc/html/man7/provider.html", "doc/html/man7/proxy-certificates.html", - "doc/html/man7/ssl.html", "doc/html/man7/x509.html" ] }, @@ -17104,12 +19798,21 @@ our %unified_info = ( ] }, "includes" => { + "OpenSSLConfig.cmake" => [ + "." + ], + "OpenSSLConfigVersion.cmake" => [ + "." + ], "apps/asn1parse.o" => [ "apps" ], "apps/ca.o" => [ "apps" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps" + ], "apps/ciphers.o" => [ "apps" ], @@ -17336,6 +20039,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps" + ], "apps/openssl-bin-smime.o" => [ "apps" ], @@ -17423,6 +20129,9 @@ our %unified_info = ( "apps/sess_id.o" => [ "apps" ], + "apps/skeyutl.o" => [ + "apps" + ], "apps/smime.o" => [ "apps" ], @@ -17474,6 +20183,12 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.o" => [ "crypto" ], + "crypto/aes/vpaes-armv8.o" => [ + "crypto" + ], + "crypto/aes/vpaes-loongarch64.o" => [ + "crypto" + ], "crypto/arm64cpuid.o" => [ "crypto" ], @@ -17525,9 +20240,15 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.o" => [ "crypto" ], + "crypto/chacha/chacha-armv8-sve.o" => [ + "crypto" + ], "crypto/chacha/chacha-armv8.o" => [ "crypto" ], + "crypto/chacha/chacha-loongarch64.o" => [ + "crypto" + ], "crypto/chacha/chacha-s390x.o" => [ "crypto" ], @@ -17552,15 +20273,24 @@ our %unified_info = ( "crypto/ec/ecp_s390x_nistp.o" => [ "crypto" ], + "crypto/ec/ecp_sm2p256-armv8.o" => [ + "crypto" + ], + "crypto/ec/ecx_key.o" => [ + "crypto" + ], "crypto/ec/ecx_meth.o" => [ "crypto" ], - "crypto/ec/ecx_s390x.o" => [ + "crypto/ec/libcrypto-lib-ecx_key.o" => [ "crypto" ], "crypto/ec/libcrypto-lib-ecx_meth.o" => [ "crypto" ], + "crypto/ec/libfips-lib-ecx_key.o" => [ + "crypto" + ], "crypto/evp/e_aes.o" => [ "crypto", "crypto/modes" @@ -17632,9 +20362,18 @@ our %unified_info = ( "crypto/libfips-lib-cpuid.o" => [ "." ], + "crypto/md5/md5-aarch64.o" => [ + "crypto" + ], + "crypto/md5/md5-loongarch64.o" => [ + "crypto" + ], "crypto/md5/md5-sparcv9.o" => [ "crypto" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.o" => [ + "crypto" + ], "crypto/modes/aes-gcm-armv8_64.o" => [ "crypto" ], @@ -17659,6 +20398,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-gcm128.o" => [ "crypto" ], + "crypto/params_idx.c" => [ + "util/perl" + ], "crypto/poly1305/poly1305-armv4.o" => [ "crypto" ], @@ -17680,6 +20422,9 @@ our %unified_info = ( "crypto/sha/keccak1600-armv4.o" => [ "crypto" ], + "crypto/sha/keccak1600-armv8.o" => [ + "crypto" + ], "crypto/sha/sha1-armv4-large.o" => [ "crypto" ], @@ -17725,6 +20470,18 @@ our %unified_info = ( "crypto/sha/sha512-sparcv9.o" => [ "crypto" ], + "crypto/sm3/sm3-armv8.o" => [ + "crypto" + ], + "crypto/sm4/sm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4_ex-armv8.o" => [ + "crypto" + ], "doc/man1/openssl-asn1parse.pod" => [ "doc" ], @@ -17857,6 +20614,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc" + ], "doc/man1/openssl-smime.pod" => [ "doc" ], @@ -17884,6 +20644,24 @@ our %unified_info = ( "doc/man1/openssl-x509.pod" => [ "doc" ], + "exporters/OpenSSLConfig.cmake" => [ + "." + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "." + ], + "exporters/libcrypto.pc" => [ + "." + ], + "exporters/libssl.pc" => [ + "." + ], + "exporters/openssl.pc" => [ + "." + ], + "fuzz/acert-test" => [ + "include" + ], "fuzz/asn1-test" => [ "include" ], @@ -17914,12 +20692,69 @@ our %unified_info = ( "fuzz/ct-test" => [ "include" ], + "fuzz/decoder-test" => [ + "include" + ], + "fuzz/dtlsclient-test" => [ + "include" + ], + "fuzz/dtlsserver-test" => [ + "include" + ], + "fuzz/hashtable-test" => [ + "include" + ], + "fuzz/ml-dsa-test" => [ + "include" + ], + "fuzz/ml-kem-test" => [ + "include" + ], + "fuzz/pem-test" => [ + "include" + ], + "fuzz/provider-test" => [ + "include" + ], + "fuzz/punycode-test" => [ + "include" + ], + "fuzz/quic-client-test" => [ + "include" + ], + "fuzz/quic-lcidm-test" => [ + "include" + ], + "fuzz/quic-rcidm-test" => [ + "include" + ], + "fuzz/quic-server-test" => [ + "include" + ], + "fuzz/quic-srtm-test" => [ + "include" + ], "fuzz/server-test" => [ "include" ], + "fuzz/slh-dsa-test" => [ + "include" + ], + "fuzz/smime-test" => [ + "include" + ], + "fuzz/v3name-test" => [ + "include" + ], "fuzz/x509-test" => [ "include" ], + "include/internal/param_names.h" => [ + "util/perl" + ], + "include/openssl/core_names.h" => [ + "util/perl" + ], "libcrypto" => [ ".", "include", @@ -17930,6 +20765,9 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libcrypto.pc" => [ + "." + ], "libssl" => [ ".", "include" @@ -17938,6 +20776,12 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libssl.pc" => [ + "." + ], + "openssl.pc" => [ + "." + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der" ], @@ -17977,6 +20821,15 @@ our %unified_info = ( "providers/common/der/der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der" ], @@ -17989,6 +20842,15 @@ our %unified_info = ( "providers/common/der/der_rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der" ], @@ -18034,12 +20896,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov" ], @@ -18070,9 +20944,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der" ], @@ -18115,9 +20995,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18130,12 +21016,24 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18148,28 +21046,39 @@ our %unified_info = ( "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libdefault.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libfips.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/liblegacy.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" + ], + "providers/libtemplate.a" => [ + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" ], "test/aborttest" => [ "include", @@ -18238,6 +21147,14 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_addr_test" => [ + "include", + "apps/include" + ], + "test/bio_base64_test" => [ + "include", + "apps/include" + ], "test/bio_callback_test" => [ "include", "apps/include" @@ -18246,11 +21163,20 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_dgram_test" => [ + "include", + "apps/include", + "." + ], "test/bio_enc_test" => [ "include", "apps/include" ], - "test/bio_memleak_test" => [ + "test/bio_memleak_test" => [ + "include", + "apps/include" + ], + "test/bio_meth_test" => [ "include", "apps/include" ], @@ -18267,6 +21193,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_tfo_test" => [ + "include", + "apps/include", + "." + ], "test/bioprinttest" => [ "include", "apps/include" @@ -18281,6 +21212,9 @@ our %unified_info = ( "include", "apps/include" ], + "test/build_wincrypt_test" => [ + "include" + ], "test/buildtest_c_aes" => [ "include" ], @@ -18296,6 +21230,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => [ "include" ], + "test/buildtest_c_byteorder" => [ + "include" + ], "test/buildtest_c_camellia" => [ "include" ], @@ -18320,9 +21257,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => [ "include" ], - "test/buildtest_c_core_names" => [ - "include" - ], "test/buildtest_c_core_object" => [ "include" ], @@ -18347,6 +21281,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => [ "include" ], + "test/buildtest_c_e_ostime" => [ + "include" + ], "test/buildtest_c_ebcdic" => [ "include" ], @@ -18374,12 +21311,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => [ "include" ], + "test/buildtest_c_hpke" => [ + "include" + ], "test/buildtest_c_http" => [ "include" ], "test/buildtest_c_idea" => [ "include" ], + "test/buildtest_c_indicator" => [ + "include" + ], "test/buildtest_c_kdf" => [ "include" ], @@ -18395,6 +21338,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => [ "include" ], + "test/buildtest_c_ml_kem" => [ + "include" + ], "test/buildtest_c_modes" => [ "include" ], @@ -18425,6 +21371,9 @@ our %unified_info = ( "test/buildtest_c_provider" => [ "include" ], + "test/buildtest_c_quic" => [ + "include" + ], "test/buildtest_c_rand" => [ "include" ], @@ -18467,6 +21416,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => [ "include" ], + "test/buildtest_c_thread" => [ + "include" + ], "test/buildtest_c_tls1" => [ "include" ], @@ -18482,10 +21434,24 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => [ "include" ], + "test/byteorder_test" => [ + "include", + "apps/include" + ], + "test/ca_internals_test" => [ + ".", + "include", + "apps/include" + ], "test/casttest" => [ "include", "apps/include" ], + "test/cert_comp_test" => [ + "include", + "apps/include", + "." + ], "test/chacha_internal_test" => [ ".", "include", @@ -18609,6 +21575,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/decoder_propq_test" => [ + ".", + "include", + "apps/include" + ], "test/defltfips_test" => [ "include", "apps/include" @@ -18624,7 +21595,8 @@ our %unified_info = ( "test/drbgtest" => [ "include", "apps/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "test/dsa_no_digest_size_test" => [ "include", @@ -18667,7 +21639,9 @@ our %unified_info = ( "test/endecode_test" => [ ".", "include", - "apps/include" + "apps/include", + "providers/common/include", + "providers/implementations/include" ], "test/endecoder_legacy_test" => [ ".", @@ -18712,6 +21686,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_pkey_dhkem_test" => [ + "include", + "apps/include" + ], "test/evp_pkey_dparams_test" => [ "include", "apps/include" @@ -18720,10 +21698,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_skey_test" => [ + "include", + "apps/include" + ], "test/evp_test" => [ "include", "apps/include" ], + "test/evp_xof_test" => [ + "include", + "apps/include" + ], "test/exdatatest" => [ "include", "apps/include" @@ -18824,22 +21810,62 @@ our %unified_info = ( ".", "include" ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/pkcs12.o" => [ ".", "include" ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + ".", + "include" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ ".", "include" ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/ssl_test-bin-handshake.o" => [ ".", "include" @@ -18873,6 +21899,10 @@ our %unified_info = ( ".", "include" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/hexstr_test" => [ ".", "include", @@ -18882,6 +21912,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/hpke_test" => [ + "include", + "apps/include" + ], "test/http_test" => [ "include", "apps/include" @@ -18894,6 +21928,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/json_test" => [ + "include", + "apps/include" + ], "test/keymgmt_internal_test" => [ ".", "include", @@ -18908,6 +21946,10 @@ our %unified_info = ( "apps/include", "." ], + "test/list_test" => [ + "include", + "apps/include" + ], "test/localetest" => [ "include", "apps/include" @@ -18921,10 +21963,27 @@ our %unified_info = ( "include", "apps/include" ], + "test/membio_test" => [ + "include", + "apps/include", + "." + ], "test/memleaktest" => [ "include", "apps/include" ], + "test/ml_dsa_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_evp_extra_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_internal_test" => [ + "include", + "apps/include" + ], "test/modes_internal_test" => [ ".", "include", @@ -18959,6 +22018,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pairwise_fail_test" => [ + "include", + "apps/include" + ], "test/param_build_test" => [ "include", "apps/include" @@ -18992,6 +22055,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pkcs12_api_test" => [ + "include", + "apps/include" + ], "test/pkcs12_format_test" => [ "include", "apps/include" @@ -19013,6 +22080,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/priority_queue_test" => [ + "include", + "apps/include" + ], "test/property_test" => [ ".", "include", @@ -19026,6 +22097,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/provider_default_search_path_test" => [ + "include", + "apps/include" + ], "test/provider_fallback_test" => [ "include", "apps/include" @@ -19052,6 +22127,97 @@ our %unified_info = ( "include", "apps/include" ], + "test/quic_ackm_test" => [ + "include", + "apps/include" + ], + "test/quic_cc_test" => [ + "include", + "apps/include" + ], + "test/quic_cfq_test" => [ + "include", + "apps/include" + ], + "test/quic_client_test" => [ + "include", + "apps/include" + ], + "test/quic_fc_test" => [ + "include", + "apps/include" + ], + "test/quic_fifd_test" => [ + "include", + "apps/include" + ], + "test/quic_lcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_multistream_test" => [ + "include", + "apps/include" + ], + "test/quic_newcid_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_qlog_test" => [ + "include", + "apps/include" + ], + "test/quic_radix_test" => [ + "include", + "apps/include" + ], + "test/quic_rcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_record_test" => [ + "include", + "apps/include" + ], + "test/quic_srt_gen_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_srtm_test" => [ + "include", + "apps/include" + ], + "test/quic_stream_test" => [ + "include", + "apps/include" + ], + "test/quic_tserver_test" => [ + "include", + "apps/include" + ], + "test/quic_txp_test" => [ + "include", + "apps/include" + ], + "test/quic_txpim_test" => [ + "include", + "apps/include" + ], + "test/quic_wire_test" => [ + "include", + "apps/include" + ], + "test/quicapitest" => [ + "include", + "apps/include" + ], + "test/quicfaultstest" => [ + "include", + "apps/include", + "." + ], "test/rand_status_test" => [ "include", "apps/include" @@ -19072,14 +22238,20 @@ our %unified_info = ( "include", "apps/include" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "include", - "apps/include" + "apps/include", + "crypto" ], "test/recordlentest" => [ "include", "apps/include" ], + "test/rpktest" => [ + "include", + "apps/include", + "." + ], "test/rsa_complex" => [ "include", "apps/include" @@ -19098,6 +22270,15 @@ our %unified_info = ( "include", "apps/include" ], + "test/rsa_x931_test" => [ + ".", + "include", + "apps/include" + ], + "test/safe_math_test" => [ + "include", + "apps/include" + ], "test/sanitytest" => [ "include", "apps/include" @@ -19119,6 +22300,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/slh_dsa_test" => [ + "include", + "apps/include" + ], "test/sm2_internal_test" => [ "include", "apps/include" @@ -19149,6 +22334,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/ssl_handshake_rtt_test" => [ + "include", + "apps/include", + "." + ], "test/ssl_old_test" => [ ".", "include", @@ -19165,6 +22355,7 @@ our %unified_info = ( "test/sslapitest" => [ "include", "apps/include", + "providers/common/include", "." ], "test/sslbuffertest" => [ @@ -19179,6 +22370,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/strtoultest" => [ + "include", + "apps/include" + ], "test/sysdefaulttest" => [ "include", "apps/include" @@ -19187,7 +22382,13 @@ our %unified_info = ( "include", "apps/include" ], + "test/threadpool_test" => [ + ".", + "include", + "apps/include" + ], "test/threadstest" => [ + ".", "include", "apps/include" ], @@ -19199,6 +22400,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/time_test" => [ + "include", + "apps/include" + ], "test/tls13ccstest" => [ "include", "apps/include" @@ -19208,6 +22413,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/tls13groupselection_test" => [ + "include", + "apps/include" + ], "test/trace_api_test" => [ ".", "include", @@ -19246,6 +22455,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_acert_test" => [ + "include", + "apps/include" + ], "test/x509_check_cert_pkey_test" => [ "include", "apps/include" @@ -19259,6 +22472,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_load_cert_file_test" => [ + "include", + "apps/include" + ], + "test/x509_req_test" => [ + "include", + "apps/include" + ], + "test/x509_test" => [ + "include", + "apps/include" + ], "test/x509_time_test" => [ "include", "apps/include" @@ -19280,6 +22505,7 @@ our %unified_info = ( "providers/libdefault.a", "providers/libfips.a", "providers/liblegacy.a", + "providers/libtemplate.a", "test/libtestutil.a" ], "mandocs" => { @@ -19332,6 +22558,7 @@ our %unified_info = ( "doc/man/man1/openssl-s_server.1", "doc/man/man1/openssl-s_time.1", "doc/man/man1/openssl-sess_id.1", + "doc/man/man1/openssl-skeyutl.1", "doc/man/man1/openssl-smime.1", "doc/man/man1/openssl-speed.1", "doc/man/man1/openssl-spkac.1", @@ -19381,6 +22608,7 @@ our %unified_info = ( "doc/man/man3/BIO_find_type.3", "doc/man/man3/BIO_get_data.3", "doc/man/man3/BIO_get_ex_new_index.3", + "doc/man/man3/BIO_get_rpoll_descriptor.3", "doc/man/man3/BIO_meth_new.3", "doc/man/man3/BIO_new.3", "doc/man/man3/BIO_new_CMS.3", @@ -19393,11 +22621,13 @@ our %unified_info = ( "doc/man/man3/BIO_s_connect.3", "doc/man/man3/BIO_s_core.3", "doc/man/man3/BIO_s_datagram.3", + "doc/man/man3/BIO_s_dgram_pair.3", "doc/man/man3/BIO_s_fd.3", "doc/man/man3/BIO_s_file.3", "doc/man/man3/BIO_s_mem.3", "doc/man/man3/BIO_s_null.3", "doc/man/man3/BIO_s_socket.3", + "doc/man/man3/BIO_sendmmsg.3", "doc/man/man3/BIO_set_callback.3", "doc/man/man3/BIO_should_retry.3", "doc/man/man3/BIO_socket_wait.3", @@ -19422,6 +22652,7 @@ our %unified_info = ( "doc/man/man3/BN_swap.3", "doc/man/man3/BN_zero.3", "doc/man/man3/BUF_MEM_new.3", + "doc/man/man3/CMAC_CTX.3", "doc/man/man3/CMS_EncryptedData_decrypt.3", "doc/man/man3/CMS_EncryptedData_encrypt.3", "doc/man/man3/CMS_EnvelopedData_create.3", @@ -19444,6 +22675,7 @@ our %unified_info = ( "doc/man/man3/CMS_uncompress.3", "doc/man/man3/CMS_verify.3", "doc/man/man3/CMS_verify_receipt.3", + "doc/man/man3/COMP_CTX_new.3", "doc/man/man3/CONF_modules_free.3", "doc/man/man3/CONF_modules_load_file.3", "doc/man/man3/CRYPTO_THREAD_run_once.3", @@ -19477,6 +22709,8 @@ our %unified_info = ( "doc/man/man3/DSA_size.3", "doc/man/man3/DTLS_get_data_mtu.3", "doc/man/man3/DTLS_set_timer_cb.3", + "doc/man/man3/DTLSv1_get_timeout.3", + "doc/man/man3/DTLSv1_handle_timeout.3", "doc/man/man3/DTLSv1_listen.3", "doc/man/man3/ECDSA_SIG_new.3", "doc/man/man3/ECDSA_sign.3", @@ -19523,6 +22757,7 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_ctrl.3", "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3", "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3", + "doc/man/man3/EVP_PKEY_CTX_get_algor.3", "doc/man/man3/EVP_PKEY_CTX_new.3", "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3", "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3", @@ -19562,6 +22797,8 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_verify_recover.3", "doc/man/man3/EVP_RAND.3", "doc/man/man3/EVP_SIGNATURE.3", + "doc/man/man3/EVP_SKEY.3", + "doc/man/man3/EVP_SKEYMGMT.3", "doc/man/man3/EVP_SealInit.3", "doc/man/man3/EVP_SignInit.3", "doc/man/man3/EVP_VerifyInit.3", @@ -19591,6 +22828,7 @@ our %unified_info = ( "doc/man/man3/EVP_sm3.3", "doc/man/man3/EVP_sm4_cbc.3", "doc/man/man3/EVP_whirlpool.3", + "doc/man/man3/GENERAL_NAME.3", "doc/man/man3/HMAC.3", "doc/man/man3/MD5.3", "doc/man/man3/MDC2_Init.3", @@ -19615,14 +22853,18 @@ our %unified_info = ( "doc/man/man3/OPENSSL_init_ssl.3", "doc/man/man3/OPENSSL_instrument_bus.3", "doc/man/man3/OPENSSL_load_builtin_modules.3", + "doc/man/man3/OPENSSL_load_u16_le.3", "doc/man/man3/OPENSSL_malloc.3", + "doc/man/man3/OPENSSL_riscvcap.3", "doc/man/man3/OPENSSL_s390xcap.3", "doc/man/man3/OPENSSL_secure_malloc.3", "doc/man/man3/OPENSSL_strcasecmp.3", "doc/man/man3/OSSL_ALGORITHM.3", "doc/man/man3/OSSL_CALLBACK.3", + "doc/man/man3/OSSL_CMP_ATAV_set0.3", "doc/man/man3/OSSL_CMP_CTX_new.3", "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3", + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3", "doc/man/man3/OSSL_CMP_ITAV_set0.3", "doc/man/man3/OSSL_CMP_MSG_get0_header.3", "doc/man/man3/OSSL_CMP_MSG_http_perform.3", @@ -19646,18 +22888,27 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_CTX.3", "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3", "doc/man/man3/OSSL_ENCODER_to_bio.3", + "doc/man/man3/OSSL_ERR_STATE_save.3", "doc/man/man3/OSSL_ESS_check_signing_certs.3", + "doc/man/man3/OSSL_GENERAL_NAMES_print.3", + "doc/man/man3/OSSL_HPKE_CTX_new.3", "doc/man/man3/OSSL_HTTP_REQ_CTX.3", "doc/man/man3/OSSL_HTTP_parse_url.3", "doc/man/man3/OSSL_HTTP_transfer.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3", + "doc/man/man3/OSSL_INDICATOR_set_callback.3", "doc/man/man3/OSSL_ITEM.3", "doc/man/man3/OSSL_LIB_CTX.3", + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3", "doc/man/man3/OSSL_PARAM.3", "doc/man/man3/OSSL_PARAM_BLD.3", "doc/man/man3/OSSL_PARAM_allocate_from_text.3", "doc/man/man3/OSSL_PARAM_dup.3", "doc/man/man3/OSSL_PARAM_int.3", + "doc/man/man3/OSSL_PARAM_print_to_bio.3", "doc/man/man3/OSSL_PROVIDER.3", + "doc/man/man3/OSSL_QUIC_client_method.3", "doc/man/man3/OSSL_SELF_TEST_new.3", "doc/man/man3/OSSL_SELF_TEST_set_callback.3", "doc/man/man3/OSSL_STORE_INFO.3", @@ -19666,11 +22917,13 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_attach.3", "doc/man/man3/OSSL_STORE_expect.3", "doc/man/man3/OSSL_STORE_open.3", + "doc/man/man3/OSSL_sleep.3", "doc/man/man3/OSSL_trace_enabled.3", "doc/man/man3/OSSL_trace_get_category_num.3", "doc/man/man3/OSSL_trace_set_channel.3", "doc/man/man3/OpenSSL_add_all_algorithms.3", "doc/man/man3/OpenSSL_version.3", + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3", "doc/man/man3/PEM_X509_INFO_read_bio_ex.3", "doc/man/man3/PEM_bytes_read_bio.3", "doc/man/man3/PEM_read.3", @@ -19683,6 +22936,7 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_create_cert.3", "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3", "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3", + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3", "doc/man/man3/PKCS12_add1_attr_by_NID.3", "doc/man/man3/PKCS12_add_CSPName_asc.3", "doc/man/man3/PKCS12_add_cert.3", @@ -19774,6 +23028,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_sess_set_get_cb.3", "doc/man/man3/SSL_CTX_sessions.3", "doc/man/man3/SSL_CTX_set0_CA_list.3", + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3", "doc/man/man3/SSL_CTX_set1_curves.3", "doc/man/man3/SSL_CTX_set1_sigalgs.3", "doc/man/man3/SSL_CTX_set1_verify_cert_store.3", @@ -19787,6 +23042,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_ct_validation_callback.3", "doc/man/man3/SSL_CTX_set_ctlog_list_file.3", "doc/man/man3/SSL_CTX_set_default_passwd_cb.3", + "doc/man/man3/SSL_CTX_set_domain_flags.3", "doc/man/man3/SSL_CTX_set_generate_session_id.3", "doc/man/man3/SSL_CTX_set_info_callback.3", "doc/man/man3/SSL_CTX_set_keylog_callback.3", @@ -19794,6 +23050,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_min_proto_version.3", "doc/man/man3/SSL_CTX_set_mode.3", "doc/man/man3/SSL_CTX_set_msg_callback.3", + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3", "doc/man/man3/SSL_CTX_set_num_tickets.3", "doc/man/man3/SSL_CTX_set_options.3", "doc/man/man3/SSL_CTX_set_psk_client_callback.3", @@ -19832,6 +23089,7 @@ our %unified_info = ( "doc/man/man3/SSL_SESSION_print.3", "doc/man/man3/SSL_SESSION_set1_id.3", "doc/man/man3/SSL_accept.3", + "doc/man/man3/SSL_accept_stream.3", "doc/man/man3/SSL_alert_type_string.3", "doc/man/man3/SSL_alloc_buffers.3", "doc/man/man3/SSL_check_chain.3", @@ -19841,59 +23099,90 @@ our %unified_info = ( "doc/man/man3/SSL_export_keying_material.3", "doc/man/man3/SSL_extension_supported.3", "doc/man/man3/SSL_free.3", + "doc/man/man3/SSL_get0_connection.3", + "doc/man/man3/SSL_get0_group_name.3", + "doc/man/man3/SSL_get0_peer_rpk.3", "doc/man/man3/SSL_get0_peer_scts.3", + "doc/man/man3/SSL_get1_builtin_sigalgs.3", "doc/man/man3/SSL_get_SSL_CTX.3", "doc/man/man3/SSL_get_all_async_fds.3", "doc/man/man3/SSL_get_certificate.3", "doc/man/man3/SSL_get_ciphers.3", "doc/man/man3/SSL_get_client_random.3", + "doc/man/man3/SSL_get_conn_close_info.3", "doc/man/man3/SSL_get_current_cipher.3", "doc/man/man3/SSL_get_default_timeout.3", "doc/man/man3/SSL_get_error.3", + "doc/man/man3/SSL_get_event_timeout.3", "doc/man/man3/SSL_get_extms_support.3", "doc/man/man3/SSL_get_fd.3", + "doc/man/man3/SSL_get_handshake_rtt.3", "doc/man/man3/SSL_get_peer_cert_chain.3", "doc/man/man3/SSL_get_peer_certificate.3", "doc/man/man3/SSL_get_peer_signature_nid.3", "doc/man/man3/SSL_get_peer_tmp_key.3", "doc/man/man3/SSL_get_psk_identity.3", "doc/man/man3/SSL_get_rbio.3", + "doc/man/man3/SSL_get_rpoll_descriptor.3", "doc/man/man3/SSL_get_session.3", "doc/man/man3/SSL_get_shared_sigalgs.3", + "doc/man/man3/SSL_get_stream_id.3", + "doc/man/man3/SSL_get_stream_read_state.3", + "doc/man/man3/SSL_get_value_uint.3", "doc/man/man3/SSL_get_verify_result.3", "doc/man/man3/SSL_get_version.3", "doc/man/man3/SSL_group_to_name.3", + "doc/man/man3/SSL_handle_events.3", "doc/man/man3/SSL_in_init.3", + "doc/man/man3/SSL_inject_net_dgram.3", "doc/man/man3/SSL_key_update.3", "doc/man/man3/SSL_library_init.3", "doc/man/man3/SSL_load_client_CA_file.3", "doc/man/man3/SSL_new.3", + "doc/man/man3/SSL_new_domain.3", + "doc/man/man3/SSL_new_listener.3", + "doc/man/man3/SSL_new_stream.3", "doc/man/man3/SSL_pending.3", + "doc/man/man3/SSL_poll.3", "doc/man/man3/SSL_read.3", "doc/man/man3/SSL_read_early_data.3", "doc/man/man3/SSL_rstate_string.3", "doc/man/man3/SSL_session_reused.3", "doc/man/man3/SSL_set1_host.3", + "doc/man/man3/SSL_set1_initial_peer_addr.3", + "doc/man/man3/SSL_set1_server_cert_type.3", "doc/man/man3/SSL_set_async_callback.3", "doc/man/man3/SSL_set_bio.3", + "doc/man/man3/SSL_set_blocking_mode.3", "doc/man/man3/SSL_set_connect_state.3", + "doc/man/man3/SSL_set_default_stream_mode.3", "doc/man/man3/SSL_set_fd.3", + "doc/man/man3/SSL_set_incoming_stream_policy.3", + "doc/man/man3/SSL_set_quic_tls_cbs.3", "doc/man/man3/SSL_set_retry_verify.3", "doc/man/man3/SSL_set_session.3", + "doc/man/man3/SSL_set_session_secret_cb.3", "doc/man/man3/SSL_set_shutdown.3", "doc/man/man3/SSL_set_verify_result.3", "doc/man/man3/SSL_shutdown.3", "doc/man/man3/SSL_state_string.3", + "doc/man/man3/SSL_stream_conclude.3", + "doc/man/man3/SSL_stream_reset.3", "doc/man/man3/SSL_want.3", "doc/man/man3/SSL_write.3", "doc/man/man3/TS_RESP_CTX_new.3", - "doc/man/man3/TS_VERIFY_CTX_set_certs.3", + "doc/man/man3/TS_VERIFY_CTX.3", "doc/man/man3/UI_STRING.3", "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", + "doc/man/man3/X509_ACERT_add1_attr.3", + "doc/man/man3/X509_ACERT_add_attr_nconf.3", + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3", + "doc/man/man3/X509_ACERT_get_attr.3", + "doc/man/man3/X509_ACERT_print_ex.3", "doc/man/man3/X509_ALGOR_dup.3", "doc/man/man3/X509_ATTRIBUTE.3", "doc/man/man3/X509_CRL_get0_by_serial.3", @@ -19910,6 +23199,7 @@ our %unified_info = ( "doc/man/man3/X509_REQ_get_attr.3", "doc/man/man3/X509_REQ_get_extensions.3", "doc/man/man3/X509_SIG_get0.3", + "doc/man/man3/X509_STORE_CTX_get_by_subject.3", "doc/man/man3/X509_STORE_CTX_get_error.3", "doc/man/man3/X509_STORE_CTX_new.3", "doc/man/man3/X509_STORE_CTX_set_verify_cb.3", @@ -19932,6 +23222,7 @@ our %unified_info = ( "doc/man/man3/X509_get0_notBefore.3", "doc/man/man3/X509_get0_signature.3", "doc/man/man3/X509_get0_uids.3", + "doc/man/man3/X509_get_default_cert_file.3", "doc/man/man3/X509_get_extension_flags.3", "doc/man/man3/X509_get_pubkey.3", "doc/man/man3/X509_get_serialNumber.3", @@ -19977,12 +23268,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-RC5.7", "doc/man/man7/EVP_CIPHER-SEED.7", "doc/man/man7/EVP_CIPHER-SM4.7", + "doc/man/man7/EVP_KDF-ARGON2.7", "doc/man/man7/EVP_KDF-HKDF.7", + "doc/man/man7/EVP_KDF-HMAC-DRBG.7", "doc/man/man7/EVP_KDF-KB.7", "doc/man/man7/EVP_KDF-KRB5KDF.7", "doc/man/man7/EVP_KDF-PBKDF1.7", "doc/man/man7/EVP_KDF-PBKDF2.7", "doc/man/man7/EVP_KDF-PKCS12KDF.7", + "doc/man/man7/EVP_KDF-PVKKDF.7", "doc/man/man7/EVP_KDF-SCRYPT.7", "doc/man/man7/EVP_KDF-SS.7", "doc/man/man7/EVP_KDF-SSHKDF.7", @@ -19991,7 +23285,10 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X942-ASN1.7", "doc/man/man7/EVP_KDF-X942-CONCAT.7", "doc/man/man7/EVP_KDF-X963.7", + "doc/man/man7/EVP_KEM-EC.7", + "doc/man/man7/EVP_KEM-ML-KEM.7", "doc/man/man7/EVP_KEM-RSA.7", + "doc/man/man7/EVP_KEM-X25519.7", "doc/man/man7/EVP_KEYEXCH-DH.7", "doc/man/man7/EVP_KEYEXCH-ECDH.7", "doc/man/man7/EVP_KEYEXCH-X25519.7", @@ -20003,6 +23300,7 @@ our %unified_info = ( "doc/man/man7/EVP_MAC-Poly1305.7", "doc/man/man7/EVP_MAC-Siphash.7", "doc/man/man7/EVP_MD-BLAKE2.7", + "doc/man/man7/EVP_MD-KECCAK.7", "doc/man/man7/EVP_MD-MD2.7", "doc/man/man7/EVP_MD-MD4.7", "doc/man/man7/EVP_MD-MD5-SHA1.7", @@ -20022,12 +23320,17 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-EC.7", "doc/man/man7/EVP_PKEY-FFC.7", "doc/man/man7/EVP_PKEY-HMAC.7", + "doc/man/man7/EVP_PKEY-ML-DSA.7", + "doc/man/man7/EVP_PKEY-ML-KEM.7", "doc/man/man7/EVP_PKEY-RSA.7", + "doc/man/man7/EVP_PKEY-SLH-DSA.7", "doc/man/man7/EVP_PKEY-SM2.7", "doc/man/man7/EVP_PKEY-X25519.7", + "doc/man/man7/EVP_RAND-CRNG-TEST.7", "doc/man/man7/EVP_RAND-CTR-DRBG.7", "doc/man/man7/EVP_RAND-HASH-DRBG.7", "doc/man/man7/EVP_RAND-HMAC-DRBG.7", + "doc/man/man7/EVP_RAND-JITTER.7", "doc/man/man7/EVP_RAND-SEED-SRC.7", "doc/man/man7/EVP_RAND-TEST-RAND.7", "doc/man/man7/EVP_RAND.7", @@ -20035,17 +23338,19 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-ECDSA.7", "doc/man/man7/EVP_SIGNATURE-ED25519.7", "doc/man/man7/EVP_SIGNATURE-HMAC.7", + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7", "doc/man/man7/EVP_SIGNATURE-RSA.7", + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7", "doc/man/man7/OSSL_PROVIDER-FIPS.7", "doc/man/man7/OSSL_PROVIDER-base.7", "doc/man/man7/OSSL_PROVIDER-default.7", "doc/man/man7/OSSL_PROVIDER-legacy.7", "doc/man/man7/OSSL_PROVIDER-null.7", + "doc/man/man7/OSSL_STORE-winstore.7", "doc/man/man7/RAND.7", "doc/man/man7/RSA-PSS.7", "doc/man/man7/X25519.7", "doc/man/man7/bio.7", - "doc/man/man7/crypto.7", "doc/man/man7/ct.7", "doc/man/man7/des_modes.7", "doc/man/man7/evp.7", @@ -20056,14 +23361,31 @@ our %unified_info = ( "doc/man/man7/life_cycle-mac.7", "doc/man/man7/life_cycle-pkey.7", "doc/man/man7/life_cycle-rand.7", - "doc/man/man7/migration_guide.7", "doc/man/man7/openssl-core.h.7", "doc/man/man7/openssl-core_dispatch.h.7", "doc/man/man7/openssl-core_names.h.7", "doc/man/man7/openssl-env.7", "doc/man/man7/openssl-glossary.7", + "doc/man/man7/openssl-qlog.7", + "doc/man/man7/openssl-quic-concurrency.7", + "doc/man/man7/openssl-quic.7", "doc/man/man7/openssl-threads.7", "doc/man/man7/openssl_user_macros.7", + "doc/man/man7/ossl-guide-introduction.7", + "doc/man/man7/ossl-guide-libcrypto-introduction.7", + "doc/man/man7/ossl-guide-libraries-introduction.7", + "doc/man/man7/ossl-guide-libssl-introduction.7", + "doc/man/man7/ossl-guide-migration.7", + "doc/man/man7/ossl-guide-quic-client-block.7", + "doc/man/man7/ossl-guide-quic-client-non-block.7", + "doc/man/man7/ossl-guide-quic-introduction.7", + "doc/man/man7/ossl-guide-quic-multi-stream.7", + "doc/man/man7/ossl-guide-quic-server-block.7", + "doc/man/man7/ossl-guide-quic-server-non-block.7", + "doc/man/man7/ossl-guide-tls-client-block.7", + "doc/man/man7/ossl-guide-tls-client-non-block.7", + "doc/man/man7/ossl-guide-tls-introduction.7", + "doc/man/man7/ossl-guide-tls-server-block.7", "doc/man/man7/ossl_store-file.7", "doc/man/man7/ossl_store.7", "doc/man/man7/passphrase-encoding.7", @@ -20082,10 +23404,10 @@ our %unified_info = ( "doc/man/man7/provider-object.7", "doc/man/man7/provider-rand.7", "doc/man/man7/provider-signature.7", + "doc/man/man7/provider-skeymgmt.7", "doc/man/man7/provider-storemgmt.7", "doc/man/man7/provider.7", "doc/man/man7/proxy-certificates.7", - "doc/man/man7/ssl.7", "doc/man/man7/x509.7" ] }, @@ -20097,6 +23419,7 @@ our %unified_info = ( ], "programs" => [ "apps/openssl", + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -20107,7 +23430,24 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test", "test/aborttest", "test/acvp_test", @@ -20125,21 +23465,28 @@ our %unified_info = ( "test/asynctest", "test/bad_dtls_test", "test/bftest", + "test/bio_addr_test", + "test/bio_base64_test", "test/bio_callback_test", "test/bio_core_test", + "test/bio_dgram_test", "test/bio_enc_test", "test/bio_memleak_test", + "test/bio_meth_test", "test/bio_prefix_text", "test/bio_pw_callback_test", "test/bio_readbuffer_test", + "test/bio_tfo_test", "test/bioprinttest", "test/bn_internal_test", "test/bntest", + "test/build_wincrypt_test", "test/buildtest_c_aes", "test/buildtest_c_async", "test/buildtest_c_blowfish", "test/buildtest_c_bn", "test/buildtest_c_buffer", + "test/buildtest_c_byteorder", "test/buildtest_c_camellia", "test/buildtest_c_cast", "test/buildtest_c_cmac", @@ -20148,7 +23495,6 @@ our %unified_info = ( "test/buildtest_c_conftypes", "test/buildtest_c_core", "test/buildtest_c_core_dispatch", - "test/buildtest_c_core_names", "test/buildtest_c_core_object", "test/buildtest_c_cryptoerr_legacy", "test/buildtest_c_decoder", @@ -20157,6 +23503,7 @@ our %unified_info = ( "test/buildtest_c_dsa", "test/buildtest_c_dtls1", "test/buildtest_c_e_os2", + "test/buildtest_c_e_ostime", "test/buildtest_c_ebcdic", "test/buildtest_c_ec", "test/buildtest_c_ecdh", @@ -20166,13 +23513,16 @@ our %unified_info = ( "test/buildtest_c_evp", "test/buildtest_c_fips_names", "test/buildtest_c_hmac", + "test/buildtest_c_hpke", "test/buildtest_c_http", "test/buildtest_c_idea", + "test/buildtest_c_indicator", "test/buildtest_c_kdf", "test/buildtest_c_macros", "test/buildtest_c_md4", "test/buildtest_c_md5", "test/buildtest_c_mdc2", + "test/buildtest_c_ml_kem", "test/buildtest_c_modes", "test/buildtest_c_obj_mac", "test/buildtest_c_objects", @@ -20183,6 +23533,7 @@ our %unified_info = ( "test/buildtest_c_pem2", "test/buildtest_c_prov_ssl", "test/buildtest_c_provider", + "test/buildtest_c_quic", "test/buildtest_c_rand", "test/buildtest_c_rc2", "test/buildtest_c_rc4", @@ -20197,11 +23548,14 @@ our %unified_info = ( "test/buildtest_c_stack", "test/buildtest_c_store", "test/buildtest_c_symhacks", + "test/buildtest_c_thread", "test/buildtest_c_tls1", "test/buildtest_c_ts", "test/buildtest_c_txt_db", "test/buildtest_c_types", "test/buildtest_c_whrlpool", + "test/byteorder_test", + "test/ca_internals_test", "test/casttest", "test/chacha_internal_test", "test/cipher_overhead_test", @@ -20230,6 +23584,7 @@ our %unified_info = ( "test/curve448_internal_test", "test/d2i_test", "test/danetest", + "test/decoder_propq_test", "test/defltfips_test", "test/destest", "test/dhtest", @@ -20254,9 +23609,12 @@ our %unified_info = ( "test/evp_kdf_test", "test/evp_libctx_test", "test/evp_pkey_ctx_new_from_name", + "test/evp_pkey_dhkem_test", "test/evp_pkey_dparams_test", "test/evp_pkey_provided_test", + "test/evp_skey_test", "test/evp_test", + "test/evp_xof_test", "test/exdatatest", "test/exptest", "test/ext_internal_test", @@ -20266,21 +23624,29 @@ our %unified_info = ( "test/gmdifftest", "test/hexstr_test", "test/hmactest", + "test/hpke_test", "test/http_test", "test/ideatest", "test/igetest", + "test/json_test", "test/keymgmt_internal_test", "test/lhash_test", + "test/list_test", "test/localetest", "test/mdc2_internal_test", "test/mdc2test", + "test/membio_test", "test/memleaktest", + "test/ml_dsa_test", + "test/ml_kem_evp_extra_test", + "test/ml_kem_internal_test", "test/modes_internal_test", "test/namemap_internal_test", "test/nodefltctxtest", "test/ocspapitest", "test/ossl_store_test", "test/packettest", + "test/pairwise_fail_test", "test/param_build_test", "test/params_api_test", "test/params_conversion_test", @@ -20289,36 +23655,65 @@ our %unified_info = ( "test/pbetest", "test/pem_read_depr_test", "test/pemtest", + "test/pkcs12_api_test", "test/pkcs12_format_test", "test/pkcs7_test", "test/pkey_meth_kdf_test", "test/pkey_meth_test", "test/poly1305_internal_test", + "test/priority_queue_test", "test/property_test", "test/prov_config_test", "test/provfetchtest", + "test/provider_default_search_path_test", "test/provider_fallback_test", "test/provider_internal_test", "test/provider_pkey_test", "test/provider_status_test", "test/provider_test", "test/punycode_test", + "test/quic_ackm_test", + "test/quic_cc_test", + "test/quic_cfq_test", + "test/quic_client_test", + "test/quic_fc_test", + "test/quic_fifd_test", + "test/quic_lcidm_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_qlog_test", + "test/quic_radix_test", + "test/quic_rcidm_test", + "test/quic_record_test", + "test/quic_srt_gen_test", + "test/quic_srtm_test", + "test/quic_stream_test", + "test/quic_tserver_test", + "test/quic_txp_test", + "test/quic_txpim_test", + "test/quic_wire_test", + "test/quicapitest", + "test/quicfaultstest", "test/rand_status_test", "test/rand_test", "test/rc2test", "test/rc4test", "test/rc5test", - "test/rdrand_sanitytest", + "test/rdcpu_sanitytest", "test/recordlentest", + "test/rpktest", "test/rsa_complex", "test/rsa_mp_test", "test/rsa_sp800_56b_test", "test/rsa_test", + "test/rsa_x931_test", + "test/safe_math_test", "test/sanitytest", "test/secmemtest", "test/servername_test", "test/sha_test", "test/siphash_internal_test", + "test/slh_dsa_test", "test/sm2_internal_test", "test/sm3_internal_test", "test/sm4_internal_test", @@ -20326,6 +23721,7 @@ our %unified_info = ( "test/srptest", "test/ssl_cert_table_internal_test", "test/ssl_ctx_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", @@ -20333,13 +23729,17 @@ our %unified_info = ( "test/sslbuffertest", "test/sslcorrupttest", "test/stack_test", + "test/strtoultest", "test/sysdefaulttest", "test/test_test", + "test/threadpool_test", "test/threadstest", "test/threadstest_fips", "test/time_offset_test", + "test/time_test", "test/tls13ccstest", "test/tls13encryptiontest", + "test/tls13groupselection_test", "test/trace_api_test", "test/uitest", "test/upcallstest", @@ -20349,9 +23749,13 @@ our %unified_info = ( "test/verify_extra_test", "test/versions", "test/wpackettest", + "test/x509_acert_test", "test/x509_check_cert_pkey_test", "test/x509_dup_cert_test", "test/x509_internal_test", + "test/x509_load_cert_file_test", + "test/x509_req_test", + "test/x509_test", "test/x509_time_test", "test/x509aux" ], @@ -20367,6 +23771,33 @@ our %unified_info = ( "apps/CA.pl" => [ "apps/CA.pl.in" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/ca.c" + ], + "apps/lib/ca_internals_test-bin-app_libctx.o" => [ + "apps/lib/app_libctx.c" + ], + "apps/lib/ca_internals_test-bin-app_provider.o" => [ + "apps/lib/app_provider.c" + ], + "apps/lib/ca_internals_test-bin-app_rand.o" => [ + "apps/lib/app_rand.c" + ], + "apps/lib/ca_internals_test-bin-app_x509.o" => [ + "apps/lib/app_x509.c" + ], + "apps/lib/ca_internals_test-bin-apps.o" => [ + "apps/lib/apps.c" + ], + "apps/lib/ca_internals_test-bin-apps_ui.o" => [ + "apps/lib/apps_ui.c" + ], + "apps/lib/ca_internals_test-bin-engine.o" => [ + "apps/lib/engine.c" + ], + "apps/lib/ca_internals_test-bin-fmt.o" => [ + "apps/lib/fmt.c" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/lib/cmp_mock_srv.c" ], @@ -20388,6 +23819,9 @@ our %unified_info = ( "apps/lib/libapps-lib-apps.o" => [ "apps/lib/apps.c" ], + "apps/lib/libapps-lib-apps_opt_printf.o" => [ + "apps/lib/apps_opt_printf.c" + ], "apps/lib/libapps-lib-apps_ui.o" => [ "apps/lib/apps_ui.c" ], @@ -20406,6 +23840,9 @@ our %unified_info = ( "apps/lib/libapps-lib-http_server.o" => [ "apps/lib/http_server.c" ], + "apps/lib/libapps-lib-log.o" => [ + "apps/lib/log.c" + ], "apps/lib/libapps-lib-names.o" => [ "apps/lib/names.c" ], @@ -20437,12 +23874,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -20496,6 +23935,7 @@ our %unified_info = ( "apps/openssl-bin-s_server.o", "apps/openssl-bin-s_time.o", "apps/openssl-bin-sess_id.o", + "apps/openssl-bin-skeyutl.o", "apps/openssl-bin-smime.o", "apps/openssl-bin-speed.o", "apps/openssl-bin-spkac.o", @@ -20641,6 +24081,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/sess_id.c" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/skeyutl.c" + ], "apps/openssl-bin-smime.o" => [ "apps/smime.c" ], @@ -20710,6 +24153,12 @@ our %unified_info = ( "crypto/aria/libcrypto-lib-aria.o" => [ "crypto/aria/aria.c" ], + "crypto/asn1/asn1_time_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], + "crypto/asn1/ca_internals_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], "crypto/asn1/libcrypto-lib-a_bitstr.o" => [ "crypto/asn1/a_bitstr.c" ], @@ -20902,6 +24351,9 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" => [ "crypto/asn1/x_val.c" ], + "crypto/asn1_time_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/async/arch/libcrypto-lib-async_null.o" => [ "crypto/async/arch/async_null.c" ], @@ -20995,6 +24447,9 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_dgram.o" => [ "crypto/bio/bss_dgram.c" ], + "crypto/bio/libcrypto-lib-bss_dgram_pair.o" => [ + "crypto/bio/bss_dgram_pair.c" + ], "crypto/bio/libcrypto-lib-bss_fd.o" => [ "crypto/bio/bss_fd.c" ], @@ -21208,6 +24663,9 @@ our %unified_info = ( "crypto/buffer/libfips-lib-buffer.o" => [ "crypto/buffer/buffer.c" ], + "crypto/ca_internals_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/camellia/libcrypto-lib-camellia.o" => [ "crypto/camellia/camellia.c" ], @@ -21265,6 +24723,9 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_err.o" => [ "crypto/cmp/cmp_err.c" ], + "crypto/cmp/libcrypto-lib-cmp_genm.o" => [ + "crypto/cmp/cmp_genm.c" + ], "crypto/cmp/libcrypto-lib-cmp_hdr.o" => [ "crypto/cmp/cmp_hdr.c" ], @@ -21940,9 +25401,15 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_blocks.o" => [ "crypto/err/err_blocks.c" ], + "crypto/err/libcrypto-lib-err_mark.o" => [ + "crypto/err/err_mark.c" + ], "crypto/err/libcrypto-lib-err_prn.o" => [ "crypto/err/err_prn.c" ], + "crypto/err/libcrypto-lib-err_save.o" => [ + "crypto/err/err_save.c" + ], "crypto/ess/libcrypto-lib-ess_asn1.o" => [ "crypto/ess/ess_asn1.c" ], @@ -22189,9 +25656,15 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libcrypto-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libcrypto-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libcrypto-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/evp/libfips-lib-asymcipher.o" => [ "crypto/evp/asymcipher.c" ], @@ -22237,9 +25710,6 @@ our %unified_info = ( "crypto/evp/libfips-lib-keymgmt_meth.o" => [ "crypto/evp/keymgmt_meth.c" ], - "crypto/evp/libfips-lib-m_sigver.o" => [ - "crypto/evp/m_sigver.c" - ], "crypto/evp/libfips-lib-mac_lib.o" => [ "crypto/evp/mac_lib.c" ], @@ -22258,9 +25728,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libfips-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libfips-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libfips-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/ffc/libcrypto-lib-ffc_backend.o" => [ "crypto/ffc/ffc_backend.c" ], @@ -22303,12 +25779,30 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params_validate.o" => [ "crypto/ffc/ffc_params_validate.c" ], + "crypto/hashtable/libcrypto-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libcrypto-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], + "crypto/hashtable/libfips-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libfips-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], "crypto/hmac/libcrypto-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], "crypto/hmac/libfips-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], + "crypto/hpke/libcrypto-lib-hpke.o" => [ + "crypto/hpke/hpke.c" + ], + "crypto/hpke/libcrypto-lib-hpke_util.o" => [ + "crypto/hpke/hpke_util.c" + ], "crypto/http/libcrypto-lib-http_client.o" => [ "crypto/http/http_client.c" ], @@ -22351,6 +25845,9 @@ our %unified_info = ( "crypto/libcrypto-lib-bsearch.o" => [ "crypto/bsearch.c" ], + "crypto/libcrypto-lib-comp_methods.o" => [ + "crypto/comp_methods.c" + ], "crypto/libcrypto-lib-context.o" => [ "crypto/context.c" ], @@ -22378,9 +25875,15 @@ our %unified_info = ( "crypto/libcrypto-lib-cversion.o" => [ "crypto/cversion.c" ], + "crypto/libcrypto-lib-defaults.o" => [ + "crypto/defaults.c" + ], "crypto/libcrypto-lib-der_writer.o" => [ "crypto/der_writer.c" ], + "crypto/libcrypto-lib-deterministic_nonce.o" => [ + "crypto/deterministic_nonce.c" + ], "crypto/libcrypto-lib-ebcdic.o" => [ "crypto/ebcdic.c" ], @@ -22390,6 +25893,9 @@ our %unified_info = ( "crypto/libcrypto-lib-getenv.o" => [ "crypto/getenv.c" ], + "crypto/libcrypto-lib-indicator_core.o" => [ + "crypto/indicator_core.c" + ], "crypto/libcrypto-lib-info.o" => [ "crypto/info.c" ], @@ -22441,6 +25947,9 @@ our %unified_info = ( "crypto/libcrypto-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libcrypto-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libcrypto-lib-passphrase.o" => [ "crypto/passphrase.c" ], @@ -22462,12 +25971,21 @@ our %unified_info = ( "crypto/libcrypto-lib-punycode.o" => [ "crypto/punycode.c" ], + "crypto/libcrypto-lib-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/libcrypto-lib-self_test_core.o" => [ "crypto/self_test_core.c" ], + "crypto/libcrypto-lib-sleep.o" => [ + "crypto/sleep.c" + ], "crypto/libcrypto-lib-sparse_array.o" => [ "crypto/sparse_array.c" ], + "crypto/libcrypto-lib-ssl_err.o" => [ + "crypto/ssl_err.c" + ], "crypto/libcrypto-lib-threads_lib.o" => [ "crypto/threads_lib.c" ], @@ -22480,6 +25998,9 @@ our %unified_info = ( "crypto/libcrypto-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libcrypto-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libcrypto-lib-trace.o" => [ "crypto/trace.c" ], @@ -22546,6 +26067,9 @@ our %unified_info = ( "crypto/libfips-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libfips-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libfips-lib-provider_core.o" => [ "crypto/provider_core.c" ], @@ -22570,6 +26094,9 @@ our %unified_info = ( "crypto/libfips-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libfips-lib-time.o" => [ + "crypto/time.c" + ], "crypto/md4/libcrypto-lib-md4_dgst.o" => [ "crypto/md4/md4_dgst.c" ], @@ -22591,6 +26118,60 @@ our %unified_info = ( "crypto/mdc2/libcrypto-lib-mdc2dgst.o" => [ "crypto/mdc2/mdc2dgst.c" ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_kem/libcrypto-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], + "crypto/ml_kem/libfips-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], "crypto/modes/libcrypto-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22624,6 +26205,9 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libcrypto-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/modes/libfips-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22648,6 +26232,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libfips-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/objects/libcrypto-lib-o_names.o" => [ "crypto/objects/o_names.c" ], @@ -22693,6 +26280,9 @@ our %unified_info = ( "crypto/ocsp/libcrypto-lib-v3_ocsp.o" => [ "crypto/ocsp/v3_ocsp.c" ], + "crypto/packettest-bin-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/pem/libcrypto-lib-pem_all.o" => [ "crypto/pem/pem_all.c" ], @@ -22852,6 +26442,9 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_pool.o" => [ "crypto/rand/rand_pool.c" ], + "crypto/rand/libcrypto-lib-rand_uniform.o" => [ + "crypto/rand/rand_uniform.c" + ], "crypto/rand/libcrypto-lib-randfile.o" => [ "crypto/rand/randfile.c" ], @@ -23065,6 +26658,66 @@ our %unified_info = ( "crypto/siphash/libcrypto-lib-siphash.o" => [ "crypto/siphash/siphash.c" ], + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], + "crypto/slh_dsa/libfips-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libfips-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libfips-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libfips-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libfips-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], "crypto/sm2/libcrypto-lib-sm2_crypt.o" => [ "crypto/sm2/sm2_crypt.c" ], @@ -23119,6 +26772,42 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_strings.o" => [ "crypto/store/store_strings.c" ], + "crypto/thread/arch/libcrypto-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/arch/libfips-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libfips-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libfips-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/libcrypto-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libcrypto-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libcrypto-lib-internal.o" => [ + "crypto/thread/internal.c" + ], + "crypto/thread/libfips-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libfips-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libfips-lib-internal.o" => [ + "crypto/thread/internal.c" + ], "crypto/ts/libcrypto-lib-ts_asn1.o" => [ "crypto/ts/ts_asn1.c" ], @@ -23203,6 +26892,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_tree.o" => [ "crypto/x509/pcy_tree.c" ], + "crypto/x509/libcrypto-lib-t_acert.o" => [ + "crypto/x509/t_acert.c" + ], "crypto/x509/libcrypto-lib-t_crl.o" => [ "crypto/x509/t_crl.c" ], @@ -23212,6 +26904,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-t_x509.o" => [ "crypto/x509/t_x509.c" ], + "crypto/x509/libcrypto-lib-v3_aaa.o" => [ + "crypto/x509/v3_aaa.c" + ], + "crypto/x509/libcrypto-lib-v3_ac_tgt.o" => [ + "crypto/x509/v3_ac_tgt.c" + ], "crypto/x509/libcrypto-lib-v3_addr.o" => [ "crypto/x509/v3_addr.c" ], @@ -23227,6 +26925,21 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_asid.o" => [ "crypto/x509/v3_asid.c" ], + "crypto/x509/libcrypto-lib-v3_attrdesc.o" => [ + "crypto/x509/v3_attrdesc.c" + ], + "crypto/x509/libcrypto-lib-v3_attrmap.o" => [ + "crypto/x509/v3_attrmap.c" + ], + "crypto/x509/libcrypto-lib-v3_audit_id.o" => [ + "crypto/x509/v3_audit_id.c" + ], + "crypto/x509/libcrypto-lib-v3_authattid.o" => [ + "crypto/x509/v3_authattid.c" + ], + "crypto/x509/libcrypto-lib-v3_battcons.o" => [ + "crypto/x509/v3_battcons.c" + ], "crypto/x509/libcrypto-lib-v3_bcons.o" => [ "crypto/x509/v3_bcons.c" ], @@ -23251,15 +26964,24 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_genn.o" => [ "crypto/x509/v3_genn.c" ], + "crypto/x509/libcrypto-lib-v3_group_ac.o" => [ + "crypto/x509/v3_group_ac.c" + ], "crypto/x509/libcrypto-lib-v3_ia5.o" => [ "crypto/x509/v3_ia5.c" ], + "crypto/x509/libcrypto-lib-v3_ind_iss.o" => [ + "crypto/x509/v3_ind_iss.c" + ], "crypto/x509/libcrypto-lib-v3_info.o" => [ "crypto/x509/v3_info.c" ], "crypto/x509/libcrypto-lib-v3_int.o" => [ "crypto/x509/v3_int.c" ], + "crypto/x509/libcrypto-lib-v3_iobo.o" => [ + "crypto/x509/v3_iobo.c" + ], "crypto/x509/libcrypto-lib-v3_ist.o" => [ "crypto/x509/v3_ist.c" ], @@ -23269,6 +26991,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_ncons.o" => [ "crypto/x509/v3_ncons.c" ], + "crypto/x509/libcrypto-lib-v3_no_ass.o" => [ + "crypto/x509/v3_no_ass.c" + ], + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o" => [ + "crypto/x509/v3_no_rev_avail.c" + ], "crypto/x509/libcrypto-lib-v3_pci.o" => [ "crypto/x509/v3_pci.c" ], @@ -23290,18 +27018,36 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_purp.o" => [ "crypto/x509/v3_purp.c" ], + "crypto/x509/libcrypto-lib-v3_rolespec.o" => [ + "crypto/x509/v3_rolespec.c" + ], "crypto/x509/libcrypto-lib-v3_san.o" => [ "crypto/x509/v3_san.c" ], + "crypto/x509/libcrypto-lib-v3_sda.o" => [ + "crypto/x509/v3_sda.c" + ], + "crypto/x509/libcrypto-lib-v3_single_use.o" => [ + "crypto/x509/v3_single_use.c" + ], "crypto/x509/libcrypto-lib-v3_skid.o" => [ "crypto/x509/v3_skid.c" ], + "crypto/x509/libcrypto-lib-v3_soa_id.o" => [ + "crypto/x509/v3_soa_id.c" + ], "crypto/x509/libcrypto-lib-v3_sxnet.o" => [ "crypto/x509/v3_sxnet.c" ], + "crypto/x509/libcrypto-lib-v3_timespec.o" => [ + "crypto/x509/v3_timespec.c" + ], "crypto/x509/libcrypto-lib-v3_tlsf.o" => [ "crypto/x509/v3_tlsf.c" ], + "crypto/x509/libcrypto-lib-v3_usernotice.o" => [ + "crypto/x509/v3_usernotice.c" + ], "crypto/x509/libcrypto-lib-v3_utf8.o" => [ "crypto/x509/v3_utf8.c" ], @@ -23311,6 +27057,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3err.o" => [ "crypto/x509/v3err.c" ], + "crypto/x509/libcrypto-lib-x509_acert.o" => [ + "crypto/x509/x509_acert.c" + ], "crypto/x509/libcrypto-lib-x509_att.o" => [ "crypto/x509/x509_att.c" ], @@ -23362,6 +27111,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_vpm.o" => [ "crypto/x509/x509_vpm.c" ], + "crypto/x509/libcrypto-lib-x509aset.o" => [ + "crypto/x509/x509aset.c" + ], "crypto/x509/libcrypto-lib-x509cset.o" => [ "crypto/x509/x509cset.c" ], @@ -23389,6 +27141,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_exten.o" => [ "crypto/x509/x_exten.c" ], + "crypto/x509/libcrypto-lib-x_ietfatt.o" => [ + "crypto/x509/x_ietfatt.c" + ], "crypto/x509/libcrypto-lib-x_name.o" => [ "crypto/x509/x_name.c" ], @@ -23413,6 +27168,16 @@ our %unified_info = ( "engines/libcrypto-lib-e_padlock.o" => [ "engines/e_padlock.c" ], + "fuzz/acert-test" => [ + "fuzz/acert-test-bin-acert.o", + "fuzz/acert-test-bin-test-corpus.o" + ], + "fuzz/acert-test-bin-acert.o" => [ + "fuzz/acert.c" + ], + "fuzz/acert-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/asn1-test" => [ "fuzz/asn1-test-bin-asn1.o", "fuzz/asn1-test-bin-fuzz_rand.o", @@ -23525,6 +27290,190 @@ our %unified_info = ( "fuzz/ct-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/decoder-test" => [ + "fuzz/decoder-test-bin-decoder.o", + "fuzz/decoder-test-bin-fuzz_rand.o", + "fuzz/decoder-test-bin-test-corpus.o" + ], + "fuzz/decoder-test-bin-decoder.o" => [ + "fuzz/decoder.c" + ], + "fuzz/decoder-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/decoder-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsclient-test" => [ + "fuzz/dtlsclient-test-bin-dtlsclient.o", + "fuzz/dtlsclient-test-bin-fuzz_rand.o", + "fuzz/dtlsclient-test-bin-test-corpus.o" + ], + "fuzz/dtlsclient-test-bin-dtlsclient.o" => [ + "fuzz/dtlsclient.c" + ], + "fuzz/dtlsclient-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsclient-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsserver-test" => [ + "fuzz/dtlsserver-test-bin-dtlsserver.o", + "fuzz/dtlsserver-test-bin-fuzz_rand.o", + "fuzz/dtlsserver-test-bin-test-corpus.o" + ], + "fuzz/dtlsserver-test-bin-dtlsserver.o" => [ + "fuzz/dtlsserver.c" + ], + "fuzz/dtlsserver-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsserver-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/hashtable-test" => [ + "fuzz/hashtable-test-bin-fuzz_rand.o", + "fuzz/hashtable-test-bin-hashtable.o", + "fuzz/hashtable-test-bin-test-corpus.o" + ], + "fuzz/hashtable-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/hashtable-test-bin-hashtable.o" => [ + "fuzz/hashtable.c" + ], + "fuzz/hashtable-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-dsa-test" => [ + "fuzz/ml-dsa-test-bin-fuzz_rand.o", + "fuzz/ml-dsa-test-bin-ml-dsa.o", + "fuzz/ml-dsa-test-bin-test-corpus.o" + ], + "fuzz/ml-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-dsa-test-bin-ml-dsa.o" => [ + "fuzz/ml-dsa.c" + ], + "fuzz/ml-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-kem-test" => [ + "fuzz/ml-kem-test-bin-fuzz_rand.o", + "fuzz/ml-kem-test-bin-ml-kem.o", + "fuzz/ml-kem-test-bin-test-corpus.o" + ], + "fuzz/ml-kem-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-kem-test-bin-ml-kem.o" => [ + "fuzz/ml-kem.c" + ], + "fuzz/ml-kem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/pem-test" => [ + "fuzz/pem-test-bin-pem.o", + "fuzz/pem-test-bin-test-corpus.o" + ], + "fuzz/pem-test-bin-pem.o" => [ + "fuzz/pem.c" + ], + "fuzz/pem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/provider-test" => [ + "fuzz/provider-test-bin-provider.o", + "fuzz/provider-test-bin-test-corpus.o" + ], + "fuzz/provider-test-bin-provider.o" => [ + "fuzz/provider.c" + ], + "fuzz/provider-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/punycode-test" => [ + "fuzz/punycode-test-bin-punycode.o", + "fuzz/punycode-test-bin-test-corpus.o" + ], + "fuzz/punycode-test-bin-punycode.o" => [ + "fuzz/punycode.c" + ], + "fuzz/punycode-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-client-test" => [ + "fuzz/quic-client-test-bin-fuzz_rand.o", + "fuzz/quic-client-test-bin-quic-client.o", + "fuzz/quic-client-test-bin-test-corpus.o" + ], + "fuzz/quic-client-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-client-test-bin-quic-client.o" => [ + "fuzz/quic-client.c" + ], + "fuzz/quic-client-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-lcidm-test" => [ + "fuzz/quic-lcidm-test-bin-fuzz_rand.o", + "fuzz/quic-lcidm-test-bin-quic-lcidm.o", + "fuzz/quic-lcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-lcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-lcidm-test-bin-quic-lcidm.o" => [ + "fuzz/quic-lcidm.c" + ], + "fuzz/quic-lcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-rcidm-test" => [ + "fuzz/quic-rcidm-test-bin-fuzz_rand.o", + "fuzz/quic-rcidm-test-bin-quic-rcidm.o", + "fuzz/quic-rcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-rcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-rcidm-test-bin-quic-rcidm.o" => [ + "fuzz/quic-rcidm.c" + ], + "fuzz/quic-rcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-server-test" => [ + "fuzz/quic-server-test-bin-fuzz_rand.o", + "fuzz/quic-server-test-bin-quic-server.o", + "fuzz/quic-server-test-bin-test-corpus.o" + ], + "fuzz/quic-server-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-server-test-bin-quic-server.o" => [ + "fuzz/quic-server.c" + ], + "fuzz/quic-server-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-srtm-test" => [ + "fuzz/quic-srtm-test-bin-fuzz_rand.o", + "fuzz/quic-srtm-test-bin-quic-srtm.o", + "fuzz/quic-srtm-test-bin-test-corpus.o" + ], + "fuzz/quic-srtm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-srtm-test-bin-quic-srtm.o" => [ + "fuzz/quic-srtm.c" + ], + "fuzz/quic-srtm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/server-test" => [ "fuzz/server-test-bin-fuzz_rand.o", "fuzz/server-test-bin-server.o", @@ -23539,6 +27488,40 @@ our %unified_info = ( "fuzz/server-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/slh-dsa-test" => [ + "fuzz/slh-dsa-test-bin-fuzz_rand.o", + "fuzz/slh-dsa-test-bin-slh-dsa.o", + "fuzz/slh-dsa-test-bin-test-corpus.o" + ], + "fuzz/slh-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/slh-dsa-test-bin-slh-dsa.o" => [ + "fuzz/slh-dsa.c" + ], + "fuzz/slh-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/smime-test" => [ + "fuzz/smime-test-bin-smime.o", + "fuzz/smime-test-bin-test-corpus.o" + ], + "fuzz/smime-test-bin-smime.o" => [ + "fuzz/smime.c" + ], + "fuzz/smime-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test" => [ + "fuzz/v3name-test-bin-test-corpus.o", + "fuzz/v3name-test-bin-v3name.o" + ], + "fuzz/v3name-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test-bin-v3name.o" => [ + "fuzz/v3name.c" + ], "fuzz/x509-test" => [ "fuzz/x509-test-bin-fuzz_rand.o", "fuzz/x509-test-bin-test-corpus.o", @@ -23658,6 +27641,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -23718,6 +27702,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -23893,7 +27878,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", + "crypto/err/libcrypto-lib-err_mark.o", "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o", "crypto/ess/libcrypto-lib-ess_asn1.o", "crypto/ess/libcrypto-lib-ess_err.o", "crypto/ess/libcrypto-lib-ess_lib.o", @@ -23976,7 +27963,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/ffc/libcrypto-lib-ffc_backend.o", "crypto/ffc/libcrypto-lib-ffc_dh.o", "crypto/ffc/libcrypto-lib-ffc_key_generate.o", @@ -23984,7 +27973,11 @@ our %unified_info = ( "crypto/ffc/libcrypto-lib-ffc_params.o", "crypto/ffc/libcrypto-lib-ffc_params_generate.o", "crypto/ffc/libcrypto-lib-ffc_params_validate.o", + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", "crypto/hmac/libcrypto-lib-hmac.o", + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o", "crypto/http/libcrypto-lib-http_client.o", "crypto/http/libcrypto-lib-http_err.o", "crypto/http/libcrypto-lib-http_lib.o", @@ -23998,6 +27991,7 @@ our %unified_info = ( "crypto/lhash/libcrypto-lib-lhash.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -24007,10 +28001,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -24028,6 +28025,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -24035,12 +28033,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/md4/libcrypto-lib-md4_dgst.o", @@ -24050,6 +28052,15 @@ our %unified_info = ( "crypto/md5/libcrypto-lib-md5_sha1.o", "crypto/mdc2/libcrypto-lib-mdc2_one.o", "crypto/mdc2/libcrypto-lib-mdc2dgst.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_kem/libcrypto-lib-ml_kem.o", "crypto/modes/libcrypto-lib-cbc128.o", "crypto/modes/libcrypto-lib-ccm128.o", "crypto/modes/libcrypto-lib-cfb128.o", @@ -24061,6 +28072,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/objects/libcrypto-lib-o_names.o", "crypto/objects/libcrypto-lib-obj_dat.o", "crypto/objects/libcrypto-lib-obj_err.o", @@ -24124,6 +28136,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rc2/libcrypto-lib-rc2_cbc.o", "crypto/rc2/libcrypto-lib-rc2_ecb.o", @@ -24172,6 +28185,16 @@ our %unified_info = ( "crypto/sha/libcrypto-lib-sha3.o", "crypto/sha/libcrypto-lib-sha512.o", "crypto/siphash/libcrypto-lib-siphash.o", + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", "crypto/sm2/libcrypto-lib-sm2_crypt.o", "crypto/sm2/libcrypto-lib-sm2_err.o", "crypto/sm2/libcrypto-lib-sm2_key.o", @@ -24189,6 +28212,12 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_register.o", "crypto/store/libcrypto-lib-store_result.o", "crypto/store/libcrypto-lib-store_strings.o", + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", "crypto/ts/libcrypto-lib-ts_asn1.o", "crypto/ts/libcrypto-lib-ts_conf.o", "crypto/ts/libcrypto-lib-ts_err.o", @@ -24217,14 +28246,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -24233,12 +28270,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -24246,13 +28288,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -24270,6 +28319,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -24279,6 +28329,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -24300,14 +28351,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -24324,12 +28376,60 @@ our %unified_info = ( "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", "ssl/libssl-lib-tls_srp.o", - "ssl/record/libssl-lib-dtls1_bitmap.o", + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o", "ssl/record/libssl-lib-rec_layer_d1.o", "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o", "ssl/statem/libssl-lib-extensions.o", "ssl/statem/libssl-lib-extensions_clnt.o", "ssl/statem/libssl-lib-extensions_cust.o", @@ -24367,12 +28467,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/der/der_ecx_key.c" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/der/der_ml_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/der/der_ml_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/der/der_rsa_gen.c" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/der/der_rsa_key.c" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/der/der_slh_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/der/der_slh_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/der/der_wrap_gen.c" ], @@ -24439,6 +28551,9 @@ our %unified_info = ( "providers/common/libfips-lib-securitycheck_fips.o" => [ "providers/common/securitycheck_fips.c" ], + "providers/endecode_test-bin-legacyprov.o" => [ + "providers/legacyprov.c" + ], "providers/evp_extra_test-bin-legacyprov.o" => [ "providers/legacyprov.c" ], @@ -24449,6 +28564,9 @@ our %unified_info = ( "providers/fips/fips-dso-fips_entry.o" => [ "providers/fips/fips_entry.c" ], + "providers/fips/libfips-lib-fipsindicator.o" => [ + "providers/fips/fipsindicator.c" + ], "providers/fips/libfips-lib-fipsprov.o" => [ "providers/fips/fipsprov.c" ], @@ -24512,6 +28630,15 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o" => [ "providers/implementations/ciphers/cipher_aes_gcm_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o" => [ "providers/implementations/ciphers/cipher_aes_hw.c" ], @@ -24584,9 +28711,27 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o" => [ "providers/implementations/ciphers/cipher_sm4.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o" => [ "providers/implementations/ciphers/cipher_sm4_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o" => [ "providers/implementations/ciphers/cipher_tdes.c" ], @@ -24806,6 +28951,15 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" => [ "providers/implementations/encode_decode/endecoder_common.c" ], + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o" => [ + "providers/implementations/encode_decode/ml_common_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o" => [ + "providers/implementations/encode_decode/ml_dsa_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" => [ + "providers/implementations/encode_decode/ml_kem_codecs.c" + ], "providers/implementations/exchange/libdefault-lib-dh_exch.o" => [ "providers/implementations/exchange/dh_exch.c" ], @@ -24830,9 +28984,15 @@ our %unified_info = ( "providers/implementations/exchange/libfips-lib-kdf_exch.o" => [ "providers/implementations/exchange/kdf_exch.c" ], + "providers/implementations/kdfs/libdefault-lib-argon2.o" => [ + "providers/implementations/kdfs/argon2.c" + ], "providers/implementations/kdfs/libdefault-lib-hkdf.o" => [ "providers/implementations/kdfs/hkdf.c" ], + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o" => [ + "providers/implementations/kdfs/hmacdrbg_kdf.c" + ], "providers/implementations/kdfs/libdefault-lib-kbkdf.o" => [ "providers/implementations/kdfs/kbkdf.c" ], @@ -24890,12 +29050,39 @@ our %unified_info = ( "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" => [ "providers/implementations/kdfs/pbkdf1.c" ], + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" => [ + "providers/implementations/kdfs/pvkkdf.c" + ], + "providers/implementations/kem/libdefault-lib-ec_kem.o" => [ + "providers/implementations/kem/ec_kem.c" + ], + "providers/implementations/kem/libdefault-lib-ecx_kem.o" => [ + "providers/implementations/kem/ecx_kem.c" + ], + "providers/implementations/kem/libdefault-lib-kem_util.o" => [ + "providers/implementations/kem/kem_util.c" + ], + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libdefault-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libdefault-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libfips-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libfips-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libfips-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libtemplate-lib-template_kem.o" => [ + "providers/implementations/kem/template_kem.c" + ], "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -24914,9 +29101,21 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -24935,9 +29134,24 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" => [ + "providers/implementations/keymgmt/template_kmgmt.c" + ], "providers/implementations/macs/libdefault-lib-blake2b_mac.o" => [ "providers/implementations/macs/blake2b_mac.c" ], @@ -24974,9 +29188,6 @@ our %unified_info = ( "providers/implementations/macs/libfips-lib-kmac_prov.o" => [ "providers/implementations/macs/kmac_prov.c" ], - "providers/implementations/rands/libdefault-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libdefault-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -24992,12 +29203,12 @@ our %unified_info = ( "providers/implementations/rands/libdefault-lib-seed_src.o" => [ "providers/implementations/rands/seed_src.c" ], + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o" => [ + "providers/implementations/rands/seed_src_jitter.c" + ], "providers/implementations/rands/libdefault-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], - "providers/implementations/rands/libfips-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libfips-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25010,6 +29221,9 @@ our %unified_info = ( "providers/implementations/rands/libfips-lib-drbg_hmac.o" => [ "providers/implementations/rands/drbg_hmac.c" ], + "providers/implementations/rands/libfips-lib-fips_crng_test.o" => [ + "providers/implementations/rands/fips_crng_test.c" + ], "providers/implementations/rands/libfips-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], @@ -25037,9 +29251,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/implementations/signature/sm2_sig.c" ], @@ -25055,9 +29275,27 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libfips-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], "providers/implementations/storemgmt/libdefault-lib-file_store.o" => [ "providers/implementations/storemgmt/file_store.c" ], @@ -25081,8 +29319,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/libcommon-lib-provider_ctx.o", "providers/common/libcommon-lib-provider_err.o", @@ -25094,7 +29336,7 @@ our %unified_info = ( "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", "providers/implementations/digests/libcommon-lib-digestcommon.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/methods/libcommon-lib-tls_pad.o" ], "providers/libcrypto-lib-baseprov.o" => [ "providers/baseprov.c" @@ -25130,6 +29372,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -25154,7 +29399,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -25183,11 +29434,16 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o", "providers/implementations/exchange/libdefault-lib-dh_exch.o", "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", "providers/implementations/exchange/libdefault-lib-ecx_exch.o", "providers/implementations/exchange/libdefault-lib-kdf_exch.o", + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -25198,6 +29454,11 @@ our %unified_info = ( "providers/implementations/kdfs/libdefault-lib-sskdf.o", "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", "providers/implementations/kdfs/libdefault-lib-x942kdf.o", + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", @@ -25205,7 +29466,11 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libdefault-lib-blake2b_mac.o", "providers/implementations/macs/libdefault-lib-blake2s_mac.o", "providers/implementations/macs/libdefault-lib-cmac_prov.o", @@ -25214,12 +29479,12 @@ our %unified_info = ( "providers/implementations/macs/libdefault-lib-kmac_prov.o", "providers/implementations/macs/libdefault-lib-poly1305_prov.o", "providers/implementations/macs/libdefault-lib-siphash_prov.o", - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", @@ -25229,11 +29494,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", "providers/implementations/storemgmt/libdefault-lib-file_store.o", "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", - "ssl/libdefault-lib-s3_cbc.o" + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" ], "providers/libfips.a" => [ "crypto/aes/libfips-lib-aes_cbc.o", @@ -25335,14 +29604,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", + "crypto/evp/libfips-lib-s_lib.o", "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o", "crypto/ffc/libfips-lib-ffc_backend.o", "crypto/ffc/libfips-lib-ffc_dh.o", "crypto/ffc/libfips-lib-ffc_key_generate.o", @@ -25350,6 +29620,8 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params.o", "crypto/ffc/libfips-lib-ffc_params_generate.o", "crypto/ffc/libfips-lib-ffc_params_validate.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o", "crypto/hmac/libfips-lib-hmac.o", "crypto/lhash/libfips-lib-lhash.o", "crypto/libfips-lib-asn1_dsa.o", @@ -25372,6 +29644,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -25380,6 +29653,16 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o", + "crypto/ml_kem/libfips-lib-ml_kem.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -25388,6 +29671,7 @@ our %unified_info = ( "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o", "crypto/property/libfips-lib-defn_cache.o", "crypto/property/libfips-lib-property.o", "crypto/property/libfips-lib-property_parse.o", @@ -25416,7 +29700,23 @@ our %unified_info = ( "crypto/sha/libfips-lib-sha256.o", "crypto/sha/libfips-lib-sha3.o", "crypto/sha/libfips-lib-sha512.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o", "crypto/stack/libfips-lib-stack.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o", "providers/common/der/libfips-lib-der_rsa_sig.o", "providers/common/libfips-lib-bio_prov.o", "providers/common/libfips-lib-capabilities.o", @@ -25425,6 +29725,7 @@ our %unified_info = ( "providers/common/libfips-lib-provider_util.o", "providers/common/libfips-lib-securitycheck.o", "providers/common/libfips-lib-securitycheck_fips.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o", @@ -25462,6 +29763,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", "providers/implementations/kem/libfips-lib-rsa_kem.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", @@ -25469,24 +29772,32 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libfips-lib-cmac_prov.o", "providers/implementations/macs/libfips-lib-gmac_prov.o", "providers/implementations/macs/libfips-lib-hmac_prov.o", "providers/implementations/macs/libfips-lib-kmac_prov.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o", "providers/libcommon.a", - "ssl/libfips-lib-s3_cbc.o" + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "providers/liblegacy-lib-prov_running.o" => [ "providers/prov_running.c" @@ -25516,13 +29827,12 @@ our %unified_info = ( "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", "providers/implementations/digests/liblegacy-lib-wp_prov.o", "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o", "providers/liblegacy-lib-prov_running.o" ], - "ssl/libdefault-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" - ], - "ssl/libfips-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" + "providers/libtemplate.a" => [ + "providers/implementations/kem/libtemplate-lib-template_kem.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "ssl/libssl-lib-bio_ssl.o" => [ "ssl/bio_ssl.c" @@ -25542,6 +29852,9 @@ our %unified_info = ( "ssl/libssl-lib-pqueue.o" => [ "ssl/pqueue.c" ], + "ssl/libssl-lib-priority_queue.o" => [ + "ssl/priority_queue.c" + ], "ssl/libssl-lib-s3_enc.o" => [ "ssl/s3_enc.c" ], @@ -25557,15 +29870,15 @@ our %unified_info = ( "ssl/libssl-lib-ssl_cert.o" => [ "ssl/ssl_cert.c" ], + "ssl/libssl-lib-ssl_cert_comp.o" => [ + "ssl/ssl_cert_comp.c" + ], "ssl/libssl-lib-ssl_ciph.o" => [ "ssl/ssl_ciph.c" ], "ssl/libssl-lib-ssl_conf.o" => [ "ssl/ssl_conf.c" ], - "ssl/libssl-lib-ssl_err.o" => [ - "ssl/ssl_err.c" - ], "ssl/libssl-lib-ssl_err_legacy.o" => [ "ssl/ssl_err_legacy.c" ], @@ -25614,11 +29927,131 @@ our %unified_info = ( "ssl/libssl-lib-tls_srp.o" => [ "ssl/tls_srp.c" ], - "ssl/record/libcommon-lib-tls_pad.o" => [ - "ssl/record/tls_pad.c" + "ssl/quic/libssl-lib-cc_newreno.o" => [ + "ssl/quic/cc_newreno.c" + ], + "ssl/quic/libssl-lib-json_enc.o" => [ + "ssl/quic/json_enc.c" + ], + "ssl/quic/libssl-lib-qlog.o" => [ + "ssl/quic/qlog.c" + ], + "ssl/quic/libssl-lib-qlog_event_helpers.o" => [ + "ssl/quic/qlog_event_helpers.c" + ], + "ssl/quic/libssl-lib-quic_ackm.o" => [ + "ssl/quic/quic_ackm.c" + ], + "ssl/quic/libssl-lib-quic_cfq.o" => [ + "ssl/quic/quic_cfq.c" + ], + "ssl/quic/libssl-lib-quic_channel.o" => [ + "ssl/quic/quic_channel.c" + ], + "ssl/quic/libssl-lib-quic_demux.o" => [ + "ssl/quic/quic_demux.c" + ], + "ssl/quic/libssl-lib-quic_engine.o" => [ + "ssl/quic/quic_engine.c" + ], + "ssl/quic/libssl-lib-quic_fc.o" => [ + "ssl/quic/quic_fc.c" + ], + "ssl/quic/libssl-lib-quic_fifd.o" => [ + "ssl/quic/quic_fifd.c" + ], + "ssl/quic/libssl-lib-quic_impl.o" => [ + "ssl/quic/quic_impl.c" + ], + "ssl/quic/libssl-lib-quic_lcidm.o" => [ + "ssl/quic/quic_lcidm.c" + ], + "ssl/quic/libssl-lib-quic_method.o" => [ + "ssl/quic/quic_method.c" + ], + "ssl/quic/libssl-lib-quic_obj.o" => [ + "ssl/quic/quic_obj.c" + ], + "ssl/quic/libssl-lib-quic_port.o" => [ + "ssl/quic/quic_port.c" + ], + "ssl/quic/libssl-lib-quic_rcidm.o" => [ + "ssl/quic/quic_rcidm.c" + ], + "ssl/quic/libssl-lib-quic_reactor.o" => [ + "ssl/quic/quic_reactor.c" + ], + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o" => [ + "ssl/quic/quic_reactor_wait_ctx.c" + ], + "ssl/quic/libssl-lib-quic_record_rx.o" => [ + "ssl/quic/quic_record_rx.c" + ], + "ssl/quic/libssl-lib-quic_record_shared.o" => [ + "ssl/quic/quic_record_shared.c" + ], + "ssl/quic/libssl-lib-quic_record_tx.o" => [ + "ssl/quic/quic_record_tx.c" + ], + "ssl/quic/libssl-lib-quic_record_util.o" => [ + "ssl/quic/quic_record_util.c" + ], + "ssl/quic/libssl-lib-quic_rstream.o" => [ + "ssl/quic/quic_rstream.c" ], - "ssl/record/libssl-lib-dtls1_bitmap.o" => [ - "ssl/record/dtls1_bitmap.c" + "ssl/quic/libssl-lib-quic_rx_depack.o" => [ + "ssl/quic/quic_rx_depack.c" + ], + "ssl/quic/libssl-lib-quic_sf_list.o" => [ + "ssl/quic/quic_sf_list.c" + ], + "ssl/quic/libssl-lib-quic_srt_gen.o" => [ + "ssl/quic/quic_srt_gen.c" + ], + "ssl/quic/libssl-lib-quic_srtm.o" => [ + "ssl/quic/quic_srtm.c" + ], + "ssl/quic/libssl-lib-quic_sstream.o" => [ + "ssl/quic/quic_sstream.c" + ], + "ssl/quic/libssl-lib-quic_statm.o" => [ + "ssl/quic/quic_statm.c" + ], + "ssl/quic/libssl-lib-quic_stream_map.o" => [ + "ssl/quic/quic_stream_map.c" + ], + "ssl/quic/libssl-lib-quic_thread_assist.o" => [ + "ssl/quic/quic_thread_assist.c" + ], + "ssl/quic/libssl-lib-quic_tls.o" => [ + "ssl/quic/quic_tls.c" + ], + "ssl/quic/libssl-lib-quic_tls_api.o" => [ + "ssl/quic/quic_tls_api.c" + ], + "ssl/quic/libssl-lib-quic_trace.o" => [ + "ssl/quic/quic_trace.c" + ], + "ssl/quic/libssl-lib-quic_tserver.o" => [ + "ssl/quic/quic_tserver.c" + ], + "ssl/quic/libssl-lib-quic_txp.o" => [ + "ssl/quic/quic_txp.c" + ], + "ssl/quic/libssl-lib-quic_txpim.o" => [ + "ssl/quic/quic_txpim.c" + ], + "ssl/quic/libssl-lib-quic_types.o" => [ + "ssl/quic/quic_types.c" + ], + "ssl/quic/libssl-lib-quic_wire.o" => [ + "ssl/quic/quic_wire.c" + ], + "ssl/quic/libssl-lib-quic_wire_pkt.o" => [ + "ssl/quic/quic_wire_pkt.c" + ], + "ssl/quic/libssl-lib-uint_set.o" => [ + "ssl/quic/uint_set.c" ], "ssl/record/libssl-lib-rec_layer_d1.o" => [ "ssl/record/rec_layer_d1.c" @@ -25626,14 +30059,44 @@ our %unified_info = ( "ssl/record/libssl-lib-rec_layer_s3.o" => [ "ssl/record/rec_layer_s3.c" ], - "ssl/record/libssl-lib-ssl3_buffer.o" => [ - "ssl/record/ssl3_buffer.c" + "ssl/record/methods/libcommon-lib-tls_pad.o" => [ + "ssl/record/methods/tls_pad.c" + ], + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libfips-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libssl-lib-dtls_meth.o" => [ + "ssl/record/methods/dtls_meth.c" + ], + "ssl/record/methods/libssl-lib-ssl3_meth.o" => [ + "ssl/record/methods/ssl3_meth.c" + ], + "ssl/record/methods/libssl-lib-tls13_meth.o" => [ + "ssl/record/methods/tls13_meth.c" + ], + "ssl/record/methods/libssl-lib-tls1_meth.o" => [ + "ssl/record/methods/tls1_meth.c" + ], + "ssl/record/methods/libssl-lib-tls_common.o" => [ + "ssl/record/methods/tls_common.c" ], - "ssl/record/libssl-lib-ssl3_record.o" => [ - "ssl/record/ssl3_record.c" + "ssl/record/methods/libssl-lib-tls_multib.o" => [ + "ssl/record/methods/tls_multib.c" ], - "ssl/record/libssl-lib-ssl3_record_tls13.o" => [ - "ssl/record/ssl3_record_tls13.c" + "ssl/record/methods/libssl-lib-tlsany_meth.o" => [ + "ssl/record/methods/tlsany_meth.c" + ], + "ssl/rio/libssl-lib-poll_builder.o" => [ + "ssl/rio/poll_builder.c" + ], + "ssl/rio/libssl-lib-poll_immediate.o" => [ + "ssl/rio/poll_immediate.c" + ], + "ssl/rio/libssl-lib-rio_notifier.o" => [ + "ssl/rio/rio_notifier.c" ], "ssl/statem/libssl-lib-extensions.o" => [ "ssl/statem/extensions.c" @@ -25729,6 +30192,8 @@ our %unified_info = ( "test/asn1_string_table_test.c" ], "test/asn1_time_test" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1_time_test-bin-ctype.o", "test/asn1_time_test-bin-asn1_time_test.o" ], "test/asn1_time_test-bin-asn1_time_test.o" => [ @@ -25759,6 +30224,18 @@ our %unified_info = ( "test/bftest-bin-bftest.o" => [ "test/bftest.c" ], + "test/bio_addr_test" => [ + "test/bio_addr_test-bin-bio_addr_test.o" + ], + "test/bio_addr_test-bin-bio_addr_test.o" => [ + "test/bio_addr_test.c" + ], + "test/bio_base64_test" => [ + "test/bio_base64_test-bin-bio_base64_test.o" + ], + "test/bio_base64_test-bin-bio_base64_test.o" => [ + "test/bio_base64_test.c" + ], "test/bio_callback_test" => [ "test/bio_callback_test-bin-bio_callback_test.o" ], @@ -25771,6 +30248,12 @@ our %unified_info = ( "test/bio_core_test-bin-bio_core_test.o" => [ "test/bio_core_test.c" ], + "test/bio_dgram_test" => [ + "test/bio_dgram_test-bin-bio_dgram_test.o" + ], + "test/bio_dgram_test-bin-bio_dgram_test.o" => [ + "test/bio_dgram_test.c" + ], "test/bio_enc_test" => [ "test/bio_enc_test-bin-bio_enc_test.o" ], @@ -25783,6 +30266,12 @@ our %unified_info = ( "test/bio_memleak_test-bin-bio_memleak_test.o" => [ "test/bio_memleak_test.c" ], + "test/bio_meth_test" => [ + "test/bio_meth_test-bin-bio_meth_test.o" + ], + "test/bio_meth_test-bin-bio_meth_test.o" => [ + "test/bio_meth_test.c" + ], "test/bio_prefix_text" => [ "test/bio_prefix_text-bin-bio_prefix_text.o" ], @@ -25801,6 +30290,12 @@ our %unified_info = ( "test/bio_readbuffer_test-bin-bio_readbuffer_test.o" => [ "test/bio_readbuffer_test.c" ], + "test/bio_tfo_test" => [ + "test/bio_tfo_test-bin-bio_tfo_test.o" + ], + "test/bio_tfo_test-bin-bio_tfo_test.o" => [ + "test/bio_tfo_test.c" + ], "test/bioprinttest" => [ "test/bioprinttest-bin-bioprinttest.o" ], @@ -25819,6 +30314,12 @@ our %unified_info = ( "test/bntest-bin-bntest.o" => [ "test/bntest.c" ], + "test/build_wincrypt_test" => [ + "test/build_wincrypt_test-bin-build_wincrypt_test.o" + ], + "test/build_wincrypt_test-bin-build_wincrypt_test.o" => [ + "test/build_wincrypt_test.c" + ], "test/buildtest_c_aes" => [ "test/buildtest_c_aes-bin-buildtest_aes.o" ], @@ -25849,6 +30350,12 @@ our %unified_info = ( "test/buildtest_c_buffer-bin-buildtest_buffer.o" => [ "test/buildtest_buffer.c" ], + "test/buildtest_c_byteorder" => [ + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" + ], + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" => [ + "test/buildtest_byteorder.c" + ], "test/buildtest_c_camellia" => [ "test/buildtest_c_camellia-bin-buildtest_camellia.o" ], @@ -25897,12 +30404,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch-bin-buildtest_core_dispatch.o" => [ "test/buildtest_core_dispatch.c" ], - "test/buildtest_c_core_names" => [ - "test/buildtest_c_core_names-bin-buildtest_core_names.o" - ], - "test/buildtest_c_core_names-bin-buildtest_core_names.o" => [ - "test/buildtest_core_names.c" - ], "test/buildtest_c_core_object" => [ "test/buildtest_c_core_object-bin-buildtest_core_object.o" ], @@ -25951,6 +30452,12 @@ our %unified_info = ( "test/buildtest_c_e_os2-bin-buildtest_e_os2.o" => [ "test/buildtest_e_os2.c" ], + "test/buildtest_c_e_ostime" => [ + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" + ], + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" => [ + "test/buildtest_e_ostime.c" + ], "test/buildtest_c_ebcdic" => [ "test/buildtest_c_ebcdic-bin-buildtest_ebcdic.o" ], @@ -26005,6 +30512,12 @@ our %unified_info = ( "test/buildtest_c_hmac-bin-buildtest_hmac.o" => [ "test/buildtest_hmac.c" ], + "test/buildtest_c_hpke" => [ + "test/buildtest_c_hpke-bin-buildtest_hpke.o" + ], + "test/buildtest_c_hpke-bin-buildtest_hpke.o" => [ + "test/buildtest_hpke.c" + ], "test/buildtest_c_http" => [ "test/buildtest_c_http-bin-buildtest_http.o" ], @@ -26017,6 +30530,12 @@ our %unified_info = ( "test/buildtest_c_idea-bin-buildtest_idea.o" => [ "test/buildtest_idea.c" ], + "test/buildtest_c_indicator" => [ + "test/buildtest_c_indicator-bin-buildtest_indicator.o" + ], + "test/buildtest_c_indicator-bin-buildtest_indicator.o" => [ + "test/buildtest_indicator.c" + ], "test/buildtest_c_kdf" => [ "test/buildtest_c_kdf-bin-buildtest_kdf.o" ], @@ -26047,6 +30566,12 @@ our %unified_info = ( "test/buildtest_c_mdc2-bin-buildtest_mdc2.o" => [ "test/buildtest_mdc2.c" ], + "test/buildtest_c_ml_kem" => [ + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" + ], + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" => [ + "test/buildtest_ml_kem.c" + ], "test/buildtest_c_modes" => [ "test/buildtest_c_modes-bin-buildtest_modes.o" ], @@ -26107,6 +30632,12 @@ our %unified_info = ( "test/buildtest_c_provider-bin-buildtest_provider.o" => [ "test/buildtest_provider.c" ], + "test/buildtest_c_quic" => [ + "test/buildtest_c_quic-bin-buildtest_quic.o" + ], + "test/buildtest_c_quic-bin-buildtest_quic.o" => [ + "test/buildtest_quic.c" + ], "test/buildtest_c_rand" => [ "test/buildtest_c_rand-bin-buildtest_rand.o" ], @@ -26191,6 +30722,12 @@ our %unified_info = ( "test/buildtest_c_symhacks-bin-buildtest_symhacks.o" => [ "test/buildtest_symhacks.c" ], + "test/buildtest_c_thread" => [ + "test/buildtest_c_thread-bin-buildtest_thread.o" + ], + "test/buildtest_c_thread-bin-buildtest_thread.o" => [ + "test/buildtest_thread.c" + ], "test/buildtest_c_tls1" => [ "test/buildtest_c_tls1-bin-buildtest_tls1.o" ], @@ -26221,6 +30758,29 @@ our %unified_info = ( "test/buildtest_c_whrlpool-bin-buildtest_whrlpool.o" => [ "test/buildtest_whrlpool.c" ], + "test/byteorder_test" => [ + "test/byteorder_test-bin-byteorder_test.o" + ], + "test/byteorder_test-bin-byteorder_test.o" => [ + "test/byteorder_test.c" + ], + "test/ca_internals_test" => [ + "apps/ca_internals_test-bin-ca.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", + "crypto/ca_internals_test-bin-ctype.o", + "test/ca_internals_test-bin-ca_internals_test.o" + ], + "test/ca_internals_test-bin-ca_internals_test.o" => [ + "test/ca_internals_test.c" + ], "test/casttest" => [ "test/casttest-bin-casttest.o" ], @@ -26399,6 +30959,12 @@ our %unified_info = ( "test/danetest-bin-danetest.o" => [ "test/danetest.c" ], + "test/decoder_propq_test" => [ + "test/decoder_propq_test-bin-decoder_propq_test.o" + ], + "test/decoder_propq_test-bin-decoder_propq_test.o" => [ + "test/decoder_propq_test.c" + ], "test/defltfips_test" => [ "test/defltfips_test-bin-defltfips_test.o" ], @@ -26480,6 +31046,7 @@ our %unified_info = ( "test/ectest.c" ], "test/endecode_test" => [ + "providers/endecode_test-bin-legacyprov.o", "test/endecode_test-bin-endecode_test.o", "test/helpers/endecode_test-bin-predefined_dhparams.o" ], @@ -26512,17 +31079,29 @@ our %unified_info = ( ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", - "test/evp_extra_test-bin-evp_extra_test.o" + "test/evp_extra_test-bin-evp_extra_test.o", + "test/evp_extra_test-bin-fake_pipelineprov.o", + "test/evp_extra_test-bin-fake_rsaprov.o" ], "test/evp_extra_test-bin-evp_extra_test.o" => [ "test/evp_extra_test.c" ], + "test/evp_extra_test-bin-fake_pipelineprov.o" => [ + "test/fake_pipelineprov.c" + ], + "test/evp_extra_test-bin-fake_rsaprov.o" => [ + "test/fake_rsaprov.c" + ], "test/evp_extra_test2" => [ - "test/evp_extra_test2-bin-evp_extra_test2.o" + "test/evp_extra_test2-bin-evp_extra_test2.o", + "test/evp_extra_test2-bin-tls-provider.o" ], "test/evp_extra_test2-bin-evp_extra_test2.o" => [ "test/evp_extra_test2.c" ], + "test/evp_extra_test2-bin-tls-provider.o" => [ + "test/tls-provider.c" + ], "test/evp_fetch_prov_test" => [ "test/evp_fetch_prov_test-bin-evp_fetch_prov_test.o" ], @@ -26547,6 +31126,12 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name-bin-evp_pkey_ctx_new_from_name.o" => [ "test/evp_pkey_ctx_new_from_name.c" ], + "test/evp_pkey_dhkem_test" => [ + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" + ], + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" => [ + "test/evp_pkey_dhkem_test.c" + ], "test/evp_pkey_dparams_test" => [ "test/evp_pkey_dparams_test-bin-evp_pkey_dparams_test.o" ], @@ -26559,12 +31144,28 @@ our %unified_info = ( "test/evp_pkey_provided_test-bin-evp_pkey_provided_test.o" => [ "test/evp_pkey_provided_test.c" ], + "test/evp_skey_test" => [ + "test/evp_skey_test-bin-evp_skey_test.o", + "test/evp_skey_test-bin-fake_cipherprov.o" + ], + "test/evp_skey_test-bin-evp_skey_test.o" => [ + "test/evp_skey_test.c" + ], + "test/evp_skey_test-bin-fake_cipherprov.o" => [ + "test/fake_cipherprov.c" + ], "test/evp_test" => [ "test/evp_test-bin-evp_test.o" ], "test/evp_test-bin-evp_test.o" => [ "test/evp_test.c" ], + "test/evp_xof_test" => [ + "test/evp_xof_test-bin-evp_xof_test.o" + ], + "test/evp_xof_test-bin-evp_xof_test.o" => [ + "test/evp_xof_test.c" + ], "test/exdatatest" => [ "test/exdatatest-bin-exdatatest.o" ], @@ -26650,15 +31251,108 @@ our %unified_info = ( "test/helpers/fatalerrtest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/json_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/json_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/json_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + "test/helpers/pkcs12.c" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ "test/helpers/pkcs12.c" ], + "test/helpers/quic_multistream_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_multistream_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_multistream_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_newcid_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_newcid_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_newcid_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_radix_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_radix_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_radix_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_srt_gen_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicapitest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicapitest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicapitest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicfaultstest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicfaultstest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicfaultstest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/ssl_old_test-bin-predefined_dhparams.o" => [ "test/helpers/predefined_dhparams.c" ], @@ -26686,6 +31380,9 @@ our %unified_info = ( "test/helpers/tls13ccstest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/hexstr_test" => [ "test/hexstr_test-bin-hexstr_test.o" ], @@ -26698,6 +31395,12 @@ our %unified_info = ( "test/hmactest-bin-hmactest.o" => [ "test/hmactest.c" ], + "test/hpke_test" => [ + "test/hpke_test-bin-hpke_test.o" + ], + "test/hpke_test-bin-hpke_test.o" => [ + "test/hpke_test.c" + ], "test/http_test" => [ "test/http_test-bin-http_test.o" ], @@ -26716,6 +31419,16 @@ our %unified_info = ( "test/igetest-bin-igetest.o" => [ "test/igetest.c" ], + "test/json_test" => [ + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/json_test-bin-json_test.o" + ], + "test/json_test-bin-json_test.o" => [ + "test/json_test.c" + ], "test/keymgmt_internal_test" => [ "test/keymgmt_internal_test-bin-keymgmt_internal_test.o" ], @@ -26736,6 +31449,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -26748,6 +31462,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-tests.o", "test/testutil/libtestutil-lib-testutil_init.o" ], + "test/list_test" => [ + "test/list_test-bin-list_test.o" + ], + "test/list_test-bin-list_test.o" => [ + "test/list_test.c" + ], "test/localetest" => [ "test/localetest-bin-localetest.o" ], @@ -26766,12 +31486,36 @@ our %unified_info = ( "test/mdc2test-bin-mdc2test.o" => [ "test/mdc2test.c" ], + "test/membio_test" => [ + "test/membio_test-bin-membio_test.o" + ], + "test/membio_test-bin-membio_test.o" => [ + "test/membio_test.c" + ], "test/memleaktest" => [ "test/memleaktest-bin-memleaktest.o" ], "test/memleaktest-bin-memleaktest.o" => [ "test/memleaktest.c" ], + "test/ml_dsa_test" => [ + "test/ml_dsa_test-bin-ml_dsa_test.o" + ], + "test/ml_dsa_test-bin-ml_dsa_test.o" => [ + "test/ml_dsa_test.c" + ], + "test/ml_kem_evp_extra_test" => [ + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" + ], + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" => [ + "test/ml_kem_evp_extra_test.c" + ], + "test/ml_kem_internal_test" => [ + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" + ], + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" => [ + "test/ml_kem_internal_test.c" + ], "test/modes_internal_test" => [ "test/modes_internal_test-bin-modes_internal_test.o" ], @@ -26817,11 +31561,18 @@ our %unified_info = ( "test/p_test.c" ], "test/packettest" => [ + "crypto/packettest-bin-quic_vlint.o", "test/packettest-bin-packettest.o" ], "test/packettest-bin-packettest.o" => [ "test/packettest.c" ], + "test/pairwise_fail_test" => [ + "test/pairwise_fail_test-bin-pairwise_fail_test.o" + ], + "test/pairwise_fail_test-bin-pairwise_fail_test.o" => [ + "test/pairwise_fail_test.c" + ], "test/param_build_test" => [ "test/param_build_test-bin-param_build_test.o" ], @@ -26870,6 +31621,13 @@ our %unified_info = ( "test/pemtest-bin-pemtest.o" => [ "test/pemtest.c" ], + "test/pkcs12_api_test" => [ + "test/helpers/pkcs12_api_test-bin-pkcs12.o", + "test/pkcs12_api_test-bin-pkcs12_api_test.o" + ], + "test/pkcs12_api_test-bin-pkcs12_api_test.o" => [ + "test/pkcs12_api_test.c" + ], "test/pkcs12_format_test" => [ "test/helpers/pkcs12_format_test-bin-pkcs12.o", "test/pkcs12_format_test-bin-pkcs12_format_test.o" @@ -26901,6 +31659,12 @@ our %unified_info = ( "test/poly1305_internal_test-bin-poly1305_internal_test.o" => [ "test/poly1305_internal_test.c" ], + "test/priority_queue_test" => [ + "test/priority_queue_test-bin-priority_queue_test.o" + ], + "test/priority_queue_test-bin-priority_queue_test.o" => [ + "test/priority_queue_test.c" + ], "test/property_test" => [ "test/property_test-bin-property_test.o" ], @@ -26919,6 +31683,12 @@ our %unified_info = ( "test/provfetchtest-bin-provfetchtest.o" => [ "test/provfetchtest.c" ], + "test/provider_default_search_path_test" => [ + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" + ], + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" => [ + "test/provider_default_search_path_test.c" + ], "test/provider_fallback_test" => [ "test/provider_fallback_test-bin-provider_fallback_test.o" ], @@ -26967,6 +31737,174 @@ our %unified_info = ( "test/punycode_test-bin-punycode_test.o" => [ "test/punycode_test.c" ], + "test/quic_ackm_test" => [ + "test/quic_ackm_test-bin-cc_dummy.o", + "test/quic_ackm_test-bin-quic_ackm_test.o" + ], + "test/quic_ackm_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_ackm_test-bin-quic_ackm_test.o" => [ + "test/quic_ackm_test.c" + ], + "test/quic_cc_test" => [ + "test/quic_cc_test-bin-quic_cc_test.o" + ], + "test/quic_cc_test-bin-quic_cc_test.o" => [ + "test/quic_cc_test.c" + ], + "test/quic_cfq_test" => [ + "test/quic_cfq_test-bin-quic_cfq_test.o" + ], + "test/quic_cfq_test-bin-quic_cfq_test.o" => [ + "test/quic_cfq_test.c" + ], + "test/quic_client_test" => [ + "test/quic_client_test-bin-quic_client_test.o" + ], + "test/quic_client_test-bin-quic_client_test.o" => [ + "test/quic_client_test.c" + ], + "test/quic_fc_test" => [ + "test/quic_fc_test-bin-quic_fc_test.o" + ], + "test/quic_fc_test-bin-quic_fc_test.o" => [ + "test/quic_fc_test.c" + ], + "test/quic_fifd_test" => [ + "test/quic_fifd_test-bin-cc_dummy.o", + "test/quic_fifd_test-bin-quic_fifd_test.o" + ], + "test/quic_fifd_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_fifd_test-bin-quic_fifd_test.o" => [ + "test/quic_fifd_test.c" + ], + "test/quic_lcidm_test" => [ + "test/quic_lcidm_test-bin-quic_lcidm_test.o" + ], + "test/quic_lcidm_test-bin-quic_lcidm_test.o" => [ + "test/quic_lcidm_test.c" + ], + "test/quic_multistream_test" => [ + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/quic_multistream_test-bin-quic_multistream_test.o" + ], + "test/quic_multistream_test-bin-quic_multistream_test.o" => [ + "test/quic_multistream_test.c" + ], + "test/quic_newcid_test" => [ + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/quic_newcid_test-bin-quic_newcid_test.o" + ], + "test/quic_newcid_test-bin-quic_newcid_test.o" => [ + "test/quic_newcid_test.c" + ], + "test/quic_qlog_test" => [ + "test/quic_qlog_test-bin-quic_qlog_test.o" + ], + "test/quic_qlog_test-bin-quic_qlog_test.o" => [ + "test/quic_qlog_test.c" + ], + "test/quic_radix_test" => [ + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "test/quic_rcidm_test" => [ + "test/quic_rcidm_test-bin-quic_rcidm_test.o" + ], + "test/quic_rcidm_test-bin-quic_rcidm_test.o" => [ + "test/quic_rcidm_test.c" + ], + "test/quic_record_test" => [ + "test/quic_record_test-bin-quic_record_test.o" + ], + "test/quic_record_test-bin-quic_record_test.o" => [ + "test/quic_record_test.c" + ], + "test/quic_srt_gen_test" => [ + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" + ], + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" => [ + "test/quic_srt_gen_test.c" + ], + "test/quic_srtm_test" => [ + "test/quic_srtm_test-bin-quic_srtm_test.o" + ], + "test/quic_srtm_test-bin-quic_srtm_test.o" => [ + "test/quic_srtm_test.c" + ], + "test/quic_stream_test" => [ + "test/quic_stream_test-bin-quic_stream_test.o" + ], + "test/quic_stream_test-bin-quic_stream_test.o" => [ + "test/quic_stream_test.c" + ], + "test/quic_tserver_test" => [ + "test/quic_tserver_test-bin-quic_tserver_test.o" + ], + "test/quic_tserver_test-bin-quic_tserver_test.o" => [ + "test/quic_tserver_test.c" + ], + "test/quic_txp_test" => [ + "test/quic_txp_test-bin-cc_dummy.o", + "test/quic_txp_test-bin-quic_txp_test.o" + ], + "test/quic_txp_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_txp_test-bin-quic_txp_test.o" => [ + "test/quic_txp_test.c" + ], + "test/quic_txpim_test" => [ + "test/quic_txpim_test-bin-quic_txpim_test.o" + ], + "test/quic_txpim_test-bin-quic_txpim_test.o" => [ + "test/quic_txpim_test.c" + ], + "test/quic_wire_test" => [ + "test/quic_wire_test-bin-quic_wire_test.o" + ], + "test/quic_wire_test-bin-quic_wire_test.o" => [ + "test/quic_wire_test.c" + ], + "test/quicapitest" => [ + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/quicapitest-bin-quicapitest.o" + ], + "test/quicapitest-bin-quicapitest.o" => [ + "test/quicapitest.c" + ], + "test/quicfaultstest" => [ + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", + "test/quicfaultstest-bin-quicfaultstest.o" + ], + "test/quicfaultstest-bin-quicfaultstest.o" => [ + "test/quicfaultstest.c" + ], + "test/radix/quic_radix_test-bin-quic_radix.o" => [ + "test/radix/quic_radix.c" + ], "test/rand_status_test" => [ "test/rand_status_test-bin-rand_status_test.o" ], @@ -26997,11 +31935,11 @@ our %unified_info = ( "test/rc5test-bin-rc5test.o" => [ "test/rc5test.c" ], - "test/rdrand_sanitytest" => [ - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" + "test/rdcpu_sanitytest" => [ + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" ], - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" => [ - "test/rdrand_sanitytest.c" + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" => [ + "test/rdcpu_sanitytest.c" ], "test/recordlentest" => [ "test/helpers/recordlentest-bin-ssltestlib.o", @@ -27010,6 +31948,13 @@ our %unified_info = ( "test/recordlentest-bin-recordlentest.o" => [ "test/recordlentest.c" ], + "test/rpktest" => [ + "test/helpers/rpktest-bin-ssltestlib.o", + "test/rpktest-bin-rpktest.o" + ], + "test/rpktest-bin-rpktest.o" => [ + "test/rpktest.c" + ], "test/rsa_complex" => [ "test/rsa_complex-bin-rsa_complex.o" ], @@ -27034,6 +31979,18 @@ our %unified_info = ( "test/rsa_test-bin-rsa_test.o" => [ "test/rsa_test.c" ], + "test/rsa_x931_test" => [ + "test/rsa_x931_test-bin-rsa_x931_test.o" + ], + "test/rsa_x931_test-bin-rsa_x931_test.o" => [ + "test/rsa_x931_test.c" + ], + "test/safe_math_test" => [ + "test/safe_math_test-bin-safe_math_test.o" + ], + "test/safe_math_test-bin-safe_math_test.o" => [ + "test/safe_math_test.c" + ], "test/sanitytest" => [ "test/sanitytest-bin-sanitytest.o" ], @@ -27065,6 +32022,12 @@ our %unified_info = ( "test/siphash_internal_test-bin-siphash_internal_test.o" => [ "test/siphash_internal_test.c" ], + "test/slh_dsa_test" => [ + "test/slh_dsa_test-bin-slh_dsa_test.o" + ], + "test/slh_dsa_test-bin-slh_dsa_test.o" => [ + "test/slh_dsa_test.c" + ], "test/sm2_internal_test" => [ "test/sm2_internal_test-bin-sm2_internal_test.o" ], @@ -27107,6 +32070,13 @@ our %unified_info = ( "test/ssl_ctx_test-bin-ssl_ctx_test.o" => [ "test/ssl_ctx_test.c" ], + "test/ssl_handshake_rtt_test" => [ + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" + ], + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" => [ + "test/ssl_handshake_rtt_test.c" + ], "test/ssl_old_test" => [ "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/ssl_old_test-bin-ssl_old_test.o" @@ -27165,6 +32135,12 @@ our %unified_info = ( "test/stack_test-bin-stack_test.o" => [ "test/stack_test.c" ], + "test/strtoultest" => [ + "test/strtoultest-bin-strtoultest.o" + ], + "test/strtoultest-bin-strtoultest.o" => [ + "test/strtoultest.c" + ], "test/sysdefaulttest" => [ "test/sysdefaulttest-bin-sysdefaulttest.o" ], @@ -27195,6 +32171,9 @@ our %unified_info = ( "test/testutil/libtestutil-lib-format_output.o" => [ "test/testutil/format_output.c" ], + "test/testutil/libtestutil-lib-helper.o" => [ + "test/testutil/helper.c" + ], "test/testutil/libtestutil-lib-load.o" => [ "test/testutil/load.c" ], @@ -27228,6 +32207,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-testutil_init.o" => [ "test/testutil/testutil_init.c" ], + "test/threadpool_test" => [ + "test/threadpool_test-bin-threadpool_test.o" + ], + "test/threadpool_test-bin-threadpool_test.o" => [ + "test/threadpool_test.c" + ], "test/threadstest" => [ "test/threadstest-bin-threadstest.o" ], @@ -27246,6 +32231,12 @@ our %unified_info = ( "test/time_offset_test-bin-time_offset_test.o" => [ "test/time_offset_test.c" ], + "test/time_test" => [ + "test/time_test-bin-time_test.o" + ], + "test/time_test-bin-time_test.o" => [ + "test/time_test.c" + ], "test/tls13ccstest" => [ "test/helpers/tls13ccstest-bin-ssltestlib.o", "test/tls13ccstest-bin-tls13ccstest.o" @@ -27259,6 +32250,13 @@ our %unified_info = ( "test/tls13encryptiontest-bin-tls13encryptiontest.o" => [ "test/tls13encryptiontest.c" ], + "test/tls13groupselection_test" => [ + "test/helpers/tls13groupselection_test-bin-ssltestlib.o", + "test/tls13groupselection_test-bin-tls13groupselection_test.o" + ], + "test/tls13groupselection_test-bin-tls13groupselection_test.o" => [ + "test/tls13groupselection_test.c" + ], "test/trace_api_test" => [ "test/trace_api_test-bin-trace_api_test.o" ], @@ -27314,6 +32312,12 @@ our %unified_info = ( "test/wpackettest-bin-wpackettest.o" => [ "test/wpackettest.c" ], + "test/x509_acert_test" => [ + "test/x509_acert_test-bin-x509_acert_test.o" + ], + "test/x509_acert_test-bin-x509_acert_test.o" => [ + "test/x509_acert_test.c" + ], "test/x509_check_cert_pkey_test" => [ "test/x509_check_cert_pkey_test-bin-x509_check_cert_pkey_test.o" ], @@ -27332,6 +32336,24 @@ our %unified_info = ( "test/x509_internal_test-bin-x509_internal_test.o" => [ "test/x509_internal_test.c" ], + "test/x509_load_cert_file_test" => [ + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" + ], + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" => [ + "test/x509_load_cert_file_test.c" + ], + "test/x509_req_test" => [ + "test/x509_req_test-bin-x509_req_test.o" + ], + "test/x509_req_test-bin-x509_req_test.o" => [ + "test/x509_req_test.c" + ], + "test/x509_test" => [ + "test/x509_test-bin-x509_test.o" + ], + "test/x509_test-bin-x509_test.o" => [ + "test/x509_test.c" + ], "test/x509_time_test" => [ "test/x509_time_test-bin-x509_time_test.o" ], @@ -27395,6 +32417,7 @@ my @makevars = ( "LDLIBS", "MT", "MTFLAGS", + "OBJCOPY", "PERL", "RANLIB", "RC", @@ -27411,6 +32434,12 @@ my %disabled_info = ( "asm" => { "macro" => "OPENSSL_NO_ASM" }, + "brotli" => { + "macro" => "OPENSSL_NO_BROTLI" + }, + "brotli-dynamic" => { + "macro" => "OPENSSL_NO_BROTLI_DYNAMIC" + }, "comp" => { "macro" => "OPENSSL_NO_COMP", "skipped" => [ @@ -27423,6 +32452,9 @@ my %disabled_info = ( "crypto-mdebug-backtrace" => { "macro" => "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE" }, + "demos" => { + "macro" => "OPENSSL_NO_DEMOS" + }, "ec_nistp_64_gcc_128" => { "macro" => "OPENSSL_NO_EC_NISTP_64_GCC_128" }, @@ -27432,12 +32464,24 @@ my %disabled_info = ( "external-tests" => { "macro" => "OPENSSL_NO_EXTERNAL_TESTS" }, + "fips-jitter" => { + "macro" => "OPENSSL_NO_FIPS_JITTER" + }, "fuzz-afl" => { "macro" => "OPENSSL_NO_FUZZ_AFL" }, "fuzz-libfuzzer" => { "macro" => "OPENSSL_NO_FUZZ_LIBFUZZER" }, + "h3demo" => { + "macro" => "OPENSSL_NO_H3DEMO" + }, + "hqinterop" => { + "macro" => "OPENSSL_NO_HQINTEROP" + }, + "jitter" => { + "macro" => "OPENSSL_NO_JITTER" + }, "ktls" => { "macro" => "OPENSSL_NO_KTLS" }, @@ -27453,6 +32497,9 @@ my %disabled_info = ( "msan" => { "macro" => "OPENSSL_NO_MSAN" }, + "pie" => { + "macro" => "OPENSSL_NO_PIE" + }, "rc5" => { "macro" => "OPENSSL_NO_RC5", "skipped" => [ @@ -27468,6 +32515,12 @@ my %disabled_info = ( "ssl3-method" => { "macro" => "OPENSSL_NO_SSL3_METHOD" }, + "sslkeylog" => { + "macro" => "OPENSSL_NO_SSLKEYLOG" + }, + "tfo" => { + "macro" => "OPENSSL_NO_TFO" + }, "trace" => { "macro" => "OPENSSL_NO_TRACE" }, @@ -27482,6 +32535,21 @@ my %disabled_info = ( }, "weak-ssl-ciphers" => { "macro" => "OPENSSL_NO_WEAK_SSL_CIPHERS" + }, + "winstore" => { + "macro" => "OPENSSL_NO_WINSTORE" + }, + "zlib" => { + "macro" => "OPENSSL_NO_ZLIB" + }, + "zlib-dynamic" => { + "macro" => "OPENSSL_NO_ZLIB_DYNAMIC" + }, + "zstd" => { + "macro" => "OPENSSL_NO_ZSTD" + }, + "zstd-dynamic" => { + "macro" => "OPENSSL_NO_ZSTD_DYNAMIC" } ); my @user_crossable = qw( AR AS CC CXX CPP LD MT RANLIB RC ); @@ -27495,15 +32563,15 @@ unless (caller) { use File::Copy; use Pod::Usage; - use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; - use OpenSSL::fallback '/home/runner/work/node/node/deps/openssl/openssl/external/perl/MODULES.txt'; + use lib '/node/deps/openssl/openssl/util/perl'; + use OpenSSL::fallback '/node/deps/openssl/openssl/external/perl/MODULES.txt'; my $here = dirname($0); if (scalar @ARGV == 0) { # With no arguments, re-create the build file # We do that in two steps, where the first step emits perl - # snipets. + # snippets. my $buildfile = $config{build_file}; my $buildfile_template = "$buildfile.in"; @@ -27523,7 +32591,7 @@ unless (caller) { ); use lib '.'; - use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; + use lib '/node/deps/openssl/openssl/Configurations'; use gentemplate; open my $buildfile_template_fh, ">$buildfile_template" @@ -27540,8 +32608,8 @@ unless (caller) { my $prepend = <<'_____'; use File::Spec::Functions; -use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; -use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; +use lib '/node/deps/openssl/openssl/util/perl'; +use lib '/node/deps/openssl/openssl/Configurations'; use lib '.'; use platform; _____ diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h index e2ff6c7729ef02..9b634a8f3f102a 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: BSD-x86_64" -#define DATE "built on: Sun Jul 20 00:46:48 2025 UTC" +#define DATE "built on: Tue Aug 5 17:11:44 2025 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/params_idx.c b/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/params_idx.c new file mode 100644 index 00000000000000..9d76ffededc24c --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/params_idx.c @@ -0,0 +1,3366 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from crypto/params_idx.c.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#include "internal/e_os.h" +#include "internal/param_names.h" +#include + +/* Machine generated TRIE -- generated by util/perl/OpenSSL/paramnames.pm */ +int ossl_param_find_pidx(const char *s) +{ + switch(s[0]) { + default: + break; + case 'a': + switch(s[1]) { + default: + break; + case 'c': + if (strcmp("vp-info", s + 2) == 0) + return PIDX_KDF_PARAM_X942_ACVPINFO; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'd': + if (strcmp("itional-random", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_ADD_RANDOM; + break; + case '\0': + return PIDX_KDF_PARAM_ARGON2_AD; + } + break; + case 'e': + if (strcmp("ad", s + 2) == 0) + return PIDX_CIPHER_PARAM_AEAD; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("id_param", s + 4) == 0) + return PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD; + break; + case 'i': + if (strcmp("d-absent", s + 4) == 0) + return PIDX_DIGEST_PARAM_ALGID_ABSENT; + break; + case 'o': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'h': + switch(s[8]) { + default: + break; + case 'm': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '-': + if (strcmp("params", s + 13) == 0) + return PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS; + break; + case '\0': + return PIDX_ALG_PARAM_ALGORITHM_ID; + } + } + } + } + } + } + } + } + } + } + break; + case 'i': + if (strcmp("as", s + 3) == 0) + return PIDX_STORE_PARAM_ALIAS; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_A; + } + break; + case 'b': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("sis-type", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_CHAR2_TYPE; + break; + case 'i': + if (strcmp("ts", s + 2) == 0) + return PIDX_PKEY_PARAM_BITS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("size", s + 6) == 0) + return PIDX_MAC_PARAM_BLOCK_SIZE; + break; + case '_': + if (strcmp("padding", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING; + break; + case 's': + if (strcmp("ize", s + 6) == 0) + return PIDX_DIGEST_PARAM_BLOCK_SIZE; + } + } + } + } + break; + case 'u': + if (strcmp("ildinfo", s + 2) == 0) + return PIDX_PROV_PARAM_BUILDINFO; + break; + case '\0': + return PIDX_PKEY_PARAM_EC_B; + } + break; + case 'c': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_C_ROUNDS; + break; + case 'e': + if (strcmp("kalg", s + 2) == 0) + return PIDX_KDF_PARAM_CEK_ALG; + break; + case 'i': + if (strcmp("pher", s + 2) == 0) + return PIDX_ALG_PARAM_CIPHER; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("actor", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_COFACTOR; + break; + case 'n': + switch(s[3]) { + default: + break; + case 's': + if (strcmp("tant", s + 4) == 0) + return PIDX_KDF_PARAM_CONSTANT; + break; + case 't': + if (strcmp("ext-string", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_CONTEXT_STRING; + } + } + break; + case 't': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("mode", s + 4) == 0) + return PIDX_CIPHER_PARAM_CTS_MODE; + break; + case '\0': + return PIDX_CIPHER_PARAM_CTS; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '-': + if (strcmp("iv", s + 7) == 0) + return PIDX_CIPHER_PARAM_CUSTOM_IV; + break; + case '\0': + return PIDX_MAC_PARAM_CUSTOM; + } + } + } + } + } + } + break; + case 'd': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_D_ROUNDS; + break; + case 'a': + switch(s[2]) { + default: + break; + case 't': + switch(s[3]) { + default: + break; + case 'a': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 's': + if (strcmp("tructure", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_STRUCTURE; + break; + case 't': + if (strcmp("ype", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_TYPE; + } + break; + case '\0': + return PIDX_OBJECT_PARAM_DATA; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + if (strcmp("ded-from-explicit", s + 4) == 0) + return PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS; + break; + case 'r': + if (strcmp("ypt-only", s + 4) == 0) + return PIDX_CIPHER_PARAM_DECRYPT_ONLY; + } + break; + case 'f': + if (strcmp("ault-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_DEFAULT_DIGEST; + break; + case 's': + if (strcmp("c", s + 3) == 0) + return PIDX_OBJECT_PARAM_DESC; + break; + case 't': + if (strcmp("erministic", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_DETERMINISTIC; + } + break; + case 'h': + if (strcmp("kem-ikm", s + 2) == 0) + return PIDX_PKEY_PARAM_DHKEM_IKM; + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("heck", s + 8) == 0) + return PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK; + break; + case 'n': + if (strcmp("oinit", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_NOINIT; + break; + case 'o': + if (strcmp("neshot", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_ONESHOT; + break; + case 'p': + if (strcmp("rops", s + 8) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS; + break; + case 's': + if (strcmp("ize", s + 8) == 0) + return PIDX_PKEY_PARAM_DIGEST_SIZE; + } + break; + case '\0': + return PIDX_STORE_PARAM_DIGEST; + } + } + } + } + break; + case 's': + if (strcmp("tid", s + 3) == 0) + return PIDX_PKEY_PARAM_DIST_ID; + } + break; + case 'r': + if (strcmp("bg-no-trunc-md", s + 2) == 0) + return PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST; + break; + case 's': + if (strcmp("a-sign-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_DSA_SIGN_DISABLED; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_D; + } + break; + case 'e': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("rly_clean", s + 2) == 0) + return PIDX_KDF_PARAM_EARLY_CLEAN; + break; + case 'c': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'h': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'a': + switch(s[9]) { + default: + break; + case 'c': + switch(s[10]) { + default: + break; + case 't': + switch(s[11]) { + default: + break; + case 'o': + switch(s[12]) { + default: + break; + case 'r': + switch(s[13]) { + default: + break; + case '-': + switch(s[14]) { + default: + break; + case 'c': + if (strcmp("heck", s + 15) == 0) + return PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK; + break; + case 'm': + if (strcmp("ode", s + 15) == 0) + return PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE; + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'm': + if (strcmp("s_check", s + 2) == 0) + return PIDX_KDF_PARAM_FIPS_EMS_CHECK; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("d-pub-key", s + 6) == 0) + return PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY; + break; + case 'i': + if (strcmp("ng", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_ENCODING; + } + } + break; + case 'r': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'c': + if (strcmp("heck", s + 9) == 0) + return PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK; + break; + case 'l': + if (strcmp("evel", s + 9) == 0) + return PIDX_ENCODER_PARAM_ENCRYPT_LEVEL; + } + } + } + } + } + } + break; + case 'g': + if (strcmp("ine", s + 3) == 0) + return PIDX_ALG_PARAM_ENGINE; + break; + case 't': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'y': + switch(s[7]) { + default: + break; + case '_': + if (strcmp("required", s + 8) == 0) + return PIDX_DRBG_PARAM_ENTROPY_REQUIRED; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_ENTROPY; + } + } + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_E; + break; + case 'x': + if (strcmp("pect", s + 2) == 0) + return PIDX_STORE_PARAM_EXPECT; + } + break; + case 'f': + switch(s[1]) { + default: + break; + case 'i': + switch(s[2]) { + default: + break; + case 'e': + if (strcmp("ld-type", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_FIELD_TYPE; + break; + case 'n': + if (strcmp("gerprint", s + 3) == 0) + return PIDX_STORE_PARAM_FINGERPRINT; + break; + case 'p': + if (strcmp("s-indicator", s + 3) == 0) + return PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR; + } + } + break; + case 'g': + switch(s[1]) { + default: + break; + case 'e': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_GENERATE; + } + break; + case 'o': + if (strcmp("r", s + 8) == 0) + return PIDX_PKEY_PARAM_EC_GENERATOR; + } + } + } + } + } + } + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_GINDEX; + break; + case 'r': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'u': + switch(s[4]) { + default: + break; + case 'p': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("check", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE; + break; + case '\0': + return PIDX_PKEY_PARAM_GROUP_NAME; + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_G; + } + break; + case 'h': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("s-randkey", s + 2) == 0) + return PIDX_CIPHER_PARAM_HAS_RAND_KEY; + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_H; + break; + case 'k': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'f': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_KEY_CHECK; + } + } + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_HMAC_KEY_CHECK; + break; + case 's': + if (strcmp("_padding", s + 2) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING; + } + break; + case 'i': + switch(s[1]) { + default: + break; + case 'd': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_PKCS12_ID; + } + break; + case 'k': + if (strcmp("me", s + 2) == 0) + return PIDX_KEM_PARAM_IKME; + break; + case 'm': + if (strcmp("plicit-rejection", s + 2) == 0) + return PIDX_PKEY_PARAM_IMPLICIT_REJECTION; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("lude-public", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC; + break; + case 'f': + if (strcmp("o", s + 3) == 0) + return PIDX_PASSPHRASE_PARAM_INFO; + break; + case 'p': + if (strcmp("ut-type", s + 3) == 0) + return PIDX_STORE_PARAM_INPUT_TYPE; + break; + case 's': + if (strcmp("tance", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_INSTANCE; + } + break; + case 't': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("tion", s + 5) == 0) + return PIDX_GEN_PARAM_ITERATION; + break; + case '\0': + return PIDX_KDF_PARAM_ITER; + } + } + } + break; + case 'v': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("generated", s + 3) == 0) + return PIDX_CIPHER_PARAM_AEAD_IV_GENERATED; + break; + case 'l': + if (strcmp("en", s + 3) == 0) + return PIDX_CIPHER_PARAM_IVLEN; + break; + case '\0': + return PIDX_MAC_PARAM_IV; + } + } + break; + case 'j': + switch(s[1]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_COFACTOR; + } + break; + case 'k': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K2; + } + break; + case '3': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K3; + } + break; + case 'a': + if (strcmp("t", s + 2) == 0) + return PIDX_SIGNATURE_PARAM_KAT; + break; + case 'b': + if (strcmp("kdf-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KBKDF_KEY_CHECK; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case 's': + switch(s[9]) { + default: + break; + case 't': + switch(s[10]) { + default: + break; + case '-': + if (strcmp("props", s + 11) == 0) + return PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_KDF_DIGEST; + } + } + } + } + } + } + break; + case 'o': + if (strcmp("utlen", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_OUTLEN; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_TYPE; + break; + case 'u': + if (strcmp("km", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_UKM; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'y': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("heck", s + 5) == 0) + return PIDX_PKEY_PARAM_FIPS_KEY_CHECK; + break; + case 'l': + if (strcmp("ength", s + 5) == 0) + return PIDX_SKEY_PARAM_KEY_LENGTH; + } + break; + case 'b': + if (strcmp("its", s + 4) == 0) + return PIDX_CIPHER_PARAM_RC2_KEYBITS; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_KEYLEN; + break; + case '\0': + return PIDX_MAC_PARAM_KEY; + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KMAC_KEY_CHECK; + } + break; + case 'l': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("el", s + 3) == 0) + return PIDX_KDF_PARAM_LABEL; + break; + case 'n': + if (strcmp("es", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_LANES; + } + } + break; + case 'm': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'k': + if (strcmp("ey", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_MAC_KEY; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_KDF_PARAM_MAC_SIZE; + break; + case '\0': + return PIDX_ALG_PARAM_MAC; + } + break; + case 'n': + if (strcmp("datory-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_MANDATORY_DIGEST; + break; + case 'x': + switch(s[3]) { + default: + break; + case '-': + if (strcmp("size", s + 4) == 0) + return PIDX_PKEY_PARAM_MAX_SIZE; + break; + case '_': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("dinlen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_ADINLEN; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("rly_data", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA; + break; + case 'n': + if (strcmp("tropylen", s + 6) == 0) + return PIDX_DRBG_PARAM_MAX_ENTROPYLEN; + } + break; + case 'f': + if (strcmp("rag_len", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_NONCELEN; + break; + case 'p': + if (strcmp("erslen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_PERSLEN; + break; + case 'r': + if (strcmp("equest", s + 5) == 0) + return PIDX_RAND_PARAM_MAX_REQUEST; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MAX_LENGTH; + break; + case 'm': + if (strcmp("em_bytes", s + 4) == 0) + return PIDX_KDF_PARAM_SCRYPT_MAXMEM; + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'm': + if (strcmp("cost", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_MEMCOST; + break; + case 's': + if (strcmp("sage-encoding", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING; + } + break; + case 'g': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_DIGEST; + break; + case 'p': + if (strcmp("roperties", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_PROPERTIES; + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_MASKGENFUNC; + } + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("alg", s + 3) == 0) + return PIDX_DIGEST_PARAM_MICALG; + break; + case 'n': + switch(s[3]) { + default: + break; + case '_': + switch(s[4]) { + default: + break; + case 'e': + if (strcmp("ntropylen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_ENTROPYLEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_NONCELEN; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MIN_LENGTH; + } + } + break; + case 'l': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + if (strcmp("nput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS; + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED; + } + } + } + } + break; + case 'k': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + switch(s[8]) { + default: + break; + case 'm': + if (strcmp("port_pct_type", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE; + break; + case 'n': + if (strcmp("put_formats", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS; + } + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED; + } + } + } + } + } + } + break; + case 'o': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case '\0': + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE; + } + break; + case 'u': + if (strcmp("le-filename", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_MODULE_FILENAME; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_SIGNATURE_PARAM_MU; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_M; + } + break; + case 'n': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("me", s + 2) == 0) + return PIDX_STORE_PARAM_ISSUER; + break; + case 'o': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("short-mac", s + 3) == 0) + return PIDX_PROV_PARAM_NO_SHORT_MAC; + break; + case 'n': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("type", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_NONCE_TYPE; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_NONCE; + } + } + } + } + break; + case 'u': + if (strcmp("m", s + 2) == 0) + return PIDX_CIPHER_PARAM_NUM; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_N; + } + break; + case 'o': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("ep-label", s + 2) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL; + break; + case 'p': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'n': + if (strcmp("ssl-version", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_VERSION; + break; + case 'r': + if (strcmp("ation", s + 4) == 0) + return PIDX_KEM_PARAM_OPERATION; + } + break; + case 't': + if (strcmp("ions", s + 3) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS; + } + break; + case 'r': + if (strcmp("der", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_ORDER; + } + break; + case 'p': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P2; + } + break; + case 'a': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'm': + if (strcmp("ode", s + 5) == 0) + return PIDX_PKEY_PARAM_PAD_MODE; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_DIGEST_PARAM_PAD_TYPE; + } + break; + case 'd': + if (strcmp("ing", s + 4) == 0) + return PIDX_CIPHER_PARAM_PADDING; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_PAD; + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'u': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYUINFO; + break; + case 'v': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYVINFO; + } + } + } + break; + case 's': + if (strcmp("s", s + 3) == 0) + return PIDX_KDF_PARAM_PASSWORD; + } + break; + case 'b': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("ts", s + 3) == 0) + return PIDX_PKEY_PARAM_FFC_PBITS; + break; + case 'k': + if (strcmp("df2-lower-bound-check", s + 3) == 0) + return PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK; + } + break; + case 'c': + if (strcmp("ounter", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_PCOUNTER; + break; + case 'i': + if (strcmp("peline-tag", s + 2) == 0) + return PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG; + break; + case 'k': + if (strcmp("cs5", s + 2) == 0) + return PIDX_KDF_PARAM_PKCS5; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("nt-format", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT; + break; + case 't': + if (strcmp("ential", s + 3) == 0) + return PIDX_GEN_PARAM_POTENTIAL; + } + break; + case 'r': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("iction_resistance", s + 4) == 0) + return PIDX_DRBG_PARAM_PREDICTION_RESISTANCE; + break; + case 'f': + if (strcmp("ix", s + 4) == 0) + return PIDX_KDF_PARAM_PREFIX; + } + break; + case 'i': + switch(s[3]) { + default: + break; + case 'm': + if (strcmp("es", s + 4) == 0) + return PIDX_PKEY_PARAM_RSA_PRIMES; + break; + case 'v': + switch(s[4]) { + default: + break; + case '_': + if (strcmp("len", s + 5) == 0) + return PIDX_PKEY_PARAM_DH_PRIV_LEN; + break; + case '\0': + return PIDX_PKEY_PARAM_PRIV_KEY; + } + } + break; + case 'o': + switch(s[3]) { + default: + break; + case 'p': + if (strcmp("erties", s + 4) == 0) + return PIDX_STORE_PARAM_PROPERTIES; + break; + case 'v': + if (strcmp("ider-name", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_PROV_NAME; + } + } + break; + case 'u': + if (strcmp("b", s + 2) == 0) + return PIDX_PKEY_PARAM_PUB_KEY; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_P; + } + break; + case 'q': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q2; + } + break; + case 'b': + if (strcmp("its", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_QBITS; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_Q; + break; + case 'x': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_X; + } + break; + case 'y': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_Y; + } + } + break; + case 'r': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'k': + if (strcmp("ey", s + 5) == 0) + return PIDX_CIPHER_PARAM_RANDOM_KEY; + break; + case 'o': + if (strcmp("m_data", s + 5) == 0) + return PIDX_DRBG_PARAM_RANDOM_DATA; + } + } + break; + case 'w': + if (strcmp("-bytes", s + 3) == 0) + return PIDX_SKEY_PARAM_RAW_BYTES; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case '_': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("head", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD; + break; + case 'b': + if (strcmp("uffer_len", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN; + } + } + } + break; + case 'f': + if (strcmp("erence", s + 3) == 0) + return PIDX_OBJECT_PARAM_REFERENCE; + break; + case 's': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case '_': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("ounter", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_COUNTER; + break; + case 'r': + if (strcmp("equests", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_REQUESTS; + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case 'm': + switch(s[10]) { + default: + break; + case 'e': + switch(s[11]) { + default: + break; + case '_': + if (strcmp("interval", s + 12) == 0) + return PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL; + break; + case '\0': + return PIDX_DRBG_PARAM_RESEED_TIME; + } + } + } + } + } + } + } + } + } + } + break; + case 'o': + if (strcmp("unds", s + 2) == 0) + return PIDX_CIPHER_PARAM_ROUNDS; + break; + case 's': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + switch(s[5]) { + default: + break; + case 'o': + switch(s[6]) { + default: + break; + case 'e': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case 'i': + switch(s[10]) { + default: + break; + case 'c': + switch(s[11]) { + default: + break; + case 'i': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'n': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case '1': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT1; + } + break; + case '2': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT2; + } + break; + case '3': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT3; + } + break; + case '4': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT4; + } + break; + case '5': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT5; + } + break; + case '6': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT6; + } + break; + case '7': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT7; + } + break; + case '8': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT8; + } + break; + case '9': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'd': + if (strcmp("erive-from-pq", s + 5) == 0) + return PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'x': + switch(s[6]) { + default: + break; + case 'p': + switch(s[7]) { + default: + break; + case 'o': + switch(s[8]) { + default: + break; + case 'n': + switch(s[9]) { + default: + break; + case 'e': + switch(s[10]) { + default: + break; + case 'n': + switch(s[11]) { + default: + break; + case 't': + switch(s[12]) { + default: + break; + case '1': + switch(s[13]) { + default: + break; + case '0': + switch(s[14]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT1; + } + break; + case '2': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT2; + } + break; + case '3': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT3; + } + break; + case '4': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT4; + } + break; + case '5': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT5; + } + break; + case '6': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT6; + } + break; + case '7': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT7; + } + break; + case '8': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT8; + } + break; + case '9': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT; + } + } + } + } + } + } + } + } + break; + case 'f': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'o': + switch(s[9]) { + default: + break; + case 'r': + switch(s[10]) { + default: + break; + case '1': + switch(s[11]) { + default: + break; + case '0': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR1; + } + break; + case '2': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR2; + } + break; + case '3': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR3; + } + break; + case '4': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR4; + } + break; + case '5': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR5; + } + break; + case '6': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR6; + } + break; + case '7': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR7; + } + break; + case '8': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR8; + } + break; + case '9': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR; + } + } + } + } + } + } + break; + case 'p': + switch(s[5]) { + default: + break; + case 'k': + if (strcmp("cs15-pad-disabled", s + 6) == 0) + return PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED; + break; + case 's': + if (strcmp("s-saltlen-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK; + } + break; + case 's': + if (strcmp("ign-x931-pad-disabled", s + 5) == 0) + return PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED; + } + } + } + break; + case '\0': + return PIDX_KDF_PARAM_SCRYPT_R; + } + break; + case 's': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("eprime-generator", s + 3) == 0) + return PIDX_PKEY_PARAM_DH_GENERATOR; + break; + case 'l': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'l': + if (strcmp("en", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_PSS_SALTLEN; + break; + case '\0': + return PIDX_MAC_PARAM_SALT; + } + } + break; + case 'v': + if (strcmp("e-parameters", s + 3) == 0) + return PIDX_ENCODER_PARAM_SAVE_PARAMETERS; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'r': + if (strcmp("et", s + 4) == 0) + return PIDX_KDF_PARAM_SECRET; + break; + case 'u': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'y': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'b': + if (strcmp("its", s + 10) == 0) + return PIDX_PKEY_PARAM_SECURITY_BITS; + break; + case 'c': + if (strcmp("hecks", s + 10) == 0) + return PIDX_PROV_PARAM_SECURITY_CHECKS; + } + } + } + } + } + } + } + break; + case 'e': + if (strcmp("d", s + 3) == 0) + return PIDX_PKEY_PARAM_SLH_DSA_SEED; + break; + case 'r': + if (strcmp("ial", s + 3) == 0) + return PIDX_STORE_PARAM_SERIAL; + break; + case 's': + if (strcmp("sion_id", s + 3) == 0) + return PIDX_KDF_PARAM_SSHKDF_SESSION_ID; + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'n': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + if (strcmp("heck", s + 6) == 0) + return PIDX_PKEY_PARAM_FIPS_SIGN_CHECK; + break; + case 'x': + if (strcmp("931-pad-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK; + } + break; + case 'a': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case 'u': + switch(s[7]) { + default: + break; + case 'r': + switch(s[8]) { + default: + break; + case 'e': + switch(s[9]) { + default: + break; + case '-': + if (strcmp("digest-check", s + 10) == 0) + return PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK; + break; + case '\0': + return PIDX_SIGNATURE_PARAM_SIGNATURE; + } + } + } + } + } + } + } + break; + case 'z': + if (strcmp("e", s + 3) == 0) + return PIDX_MAC_PARAM_SIZE; + } + break; + case 'p': + if (strcmp("eed", s + 2) == 0) + return PIDX_CIPHER_PARAM_SPEED; + break; + case 's': + switch(s[2]) { + default: + break; + case 'h': + switch(s[3]) { + default: + break; + case 'k': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'f': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_KEY_CHECK; + } + } + } + } + } + break; + case 'k': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'f': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_KEY_CHECK; + } + } + } + } + break; + case 'l': + if (strcmp("3-ms", s + 3) == 0) + return PIDX_DIGEST_PARAM_SSL3_MS; + } + break; + case 't': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("esc", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_DESC; + break; + case 'p': + if (strcmp("hase", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_PHASE; + break; + case 't': + if (strcmp("ype", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_TYPE; + } + break; + case 'a': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_STATE; + } + break; + case 'u': + if (strcmp("s", s + 5) == 0) + return PIDX_PROV_PARAM_STATUS; + } + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("m_mac", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC; + break; + case 'n': + if (strcmp("gth", s + 5) == 0) + return PIDX_RAND_PARAM_STRENGTH; + } + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("ject", s + 3) == 0) + return PIDX_STORE_PARAM_SUBJECT; + break; + case 'p': + switch(s[3]) { + default: + break; + case 'p': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + if (strcmp("ivinfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PRIVINFO; + break; + case 'u': + if (strcmp("binfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PUBINFO; + } + } + } + } + } + } + break; + case 't': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_TAGLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TAG; + } + } + break; + case 'd': + if (strcmp("es-encrypt-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED; + break; + case 'e': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case '-': + if (strcmp("entropy", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_TEST_ENTROPY; + break; + case '_': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("ntropy", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_ENTROPY; + break; + case 'n': + if (strcmp("once", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_NONCE; + } + } + } + } + break; + case 'h': + if (strcmp("reads", s + 2) == 0) + return PIDX_KDF_PARAM_THREADS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("lient-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION; + break; + case 'd': + if (strcmp("ata-size", s + 5) == 0) + return PIDX_MAC_PARAM_TLS_DATA_SIZE; + break; + case 'g': + switch(s[5]) { + default: + break; + case 'r': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'u': + switch(s[8]) { + default: + break; + case 'p': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'a': + if (strcmp("lg", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_ALG; + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_ID; + } + break; + case 's': + if (strcmp("-kem", s + 12) == 0) + return PIDX_CAPABILITY_TLS_GROUP_IS_KEM; + } + break; + case 'n': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'm': + switch(s[13]) { + default: + break; + case 'e': + switch(s[14]) { + default: + break; + case '-': + if (strcmp("internal", s + 15) == 0) + return PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL; + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_NAME; + } + } + } + } + break; + case 's': + if (strcmp("ec-bits", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case '-': + if (strcmp("size", s + 8) == 0) + return PIDX_CIPHER_PARAM_TLS_MAC_SIZE; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS_MAC; + } + break; + case 'x': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS; + } + } + } + break; + case 'i': + switch(s[6]) { + default: + break; + case 'n': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS; + } + } + } + break; + case 'u': + if (strcmp("lti", s + 6) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK; + } + break; + case 'n': + if (strcmp("egotiated-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION; + break; + case 's': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'a': + switch(s[8]) { + default: + break; + case 'l': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '-': + switch(s[11]) { + default: + break; + case 'c': + if (strcmp("ode-point", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT; + break; + case 'h': + switch(s[12]) { + default: + break; + case 'a': + switch(s[13]) { + default: + break; + case 's': + switch(s[14]) { + default: + break; + case 'h': + switch(s[15]) { + default: + break; + case '-': + switch(s[16]) { + default: + break; + case 'n': + if (strcmp("ame", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME; + break; + case 'o': + if (strcmp("id", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_OID; + } + } + } + } + } + break; + case 'i': + if (strcmp("ana-name", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME; + break; + case 'k': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'y': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case 'y': + switch(s[16]) { + default: + break; + case 'p': + switch(s[17]) { + default: + break; + case 'e': + switch(s[18]) { + default: + break; + case '-': + if (strcmp("oid", s + 19) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID; + break; + case '\0': + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE; + } + } + } + } + } + } + } + break; + case 'n': + if (strcmp("ame", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_NAME; + break; + case 'o': + if (strcmp("id", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_OID; + break; + case 's': + switch(s[12]) { + default: + break; + case 'e': + if (strcmp("c-bits", s + 13) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS; + break; + case 'i': + switch(s[13]) { + default: + break; + case 'g': + switch(s[14]) { + default: + break; + case '-': + switch(s[15]) { + default: + break; + case 'n': + if (strcmp("ame", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME; + break; + case 'o': + if (strcmp("id", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_OID; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'v': + if (strcmp("ersion", s + 5) == 0) + return PIDX_CIPHER_PARAM_TLS_VERSION; + } + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK; + break; + case 'e': + if (strcmp("ms-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK; + } + } + } + } + } + break; + case '3': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'k': + switch(s[7]) { + default: + break; + case 'd': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'u': + switch(s[6]) { + default: + break; + case 'l': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case '_': + switch(s[10]) { + default: + break; + case 'a': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'd': + switch(s[13]) { + default: + break; + case 'p': + if (strcmp("acklen", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD; + } + } + } + break; + case 'e': + switch(s[11]) { + default: + break; + case 'n': + switch(s[12]) { + default: + break; + case 'c': + switch(s[13]) { + default: + break; + case 'i': + if (strcmp("n", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN; + break; + case 'l': + if (strcmp("en", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC; + } + } + } + break; + case 'i': + if (strcmp("nterleave", s + 11) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE; + break; + case 'm': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'x': + switch(s[13]) { + default: + break; + case 'b': + if (strcmp("ufsz", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE; + break; + case 's': + if (strcmp("ndfrag", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT; + } + } + } + } + } + } + } + } + } + } + break; + case 'a': + switch(s[4]) { + default: + break; + case 'a': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'p': + if (strcmp("ad", s + 7) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD; + } + } + } + break; + case 'i': + switch(s[4]) { + default: + break; + case 'v': + switch(s[5]) { + default: + break; + case 'f': + if (strcmp("ixed", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED; + break; + case 'g': + if (strcmp("en", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN; + break; + case 'i': + if (strcmp("nv", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV; + } + } + break; + case 't': + if (strcmp("ree", s + 4) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS; + } + break; + case 'y': + if (strcmp("pe", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_TYPE; + } + break; + case 'u': + switch(s[1]) { + default: + break; + case 'k': + if (strcmp("m", s + 2) == 0) + return PIDX_KDF_PARAM_UKM; + break; + case 'p': + if (strcmp("dated-iv", s + 2) == 0) + return PIDX_CIPHER_PARAM_UPDATED_IV; + break; + case 's': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'b': + if (strcmp("its", s + 5) == 0) + return PIDX_CIPHER_PARAM_USE_BITS; + break; + case 'c': + if (strcmp("ofactor-flag", s + 5) == 0) + return PIDX_PKEY_PARAM_USE_COFACTOR_FLAG; + break; + case 'k': + if (strcmp("eybits", s + 5) == 0) + return PIDX_KDF_PARAM_X942_USE_KEYBITS; + break; + case 'l': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_KBKDF_USE_L; + } + break; + case 's': + if (strcmp("eparator", s + 5) == 0) + return PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR; + } + break; + case '_': + switch(s[4]) { + default: + break; + case 'd': + if (strcmp("erivation_function", s + 5) == 0) + return PIDX_DRBG_PARAM_USE_DF; + break; + case 'e': + if (strcmp("tm", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM; + } + } + } + } + break; + case 'v': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'l': + switch(s[3]) { + default: + break; + case 'i': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_VALIDATE_G; + } + break; + case 'l': + if (strcmp("egacy", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY; + break; + case 'p': + if (strcmp("q", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_PQ; + } + } + } + } + } + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'r': + switch(s[3]) { + default: + break; + case 'i': + if (strcmp("fy-message", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE; + break; + case 's': + if (strcmp("ion", s + 4) == 0) + return PIDX_PROV_PARAM_VERSION; + } + } + } + break; + case 'x': + switch(s[1]) { + default: + break; + case '9': + switch(s[2]) { + default: + break; + case '4': + if (strcmp("2kdf-key-check", s + 3) == 0) + return PIDX_PROV_PARAM_X942KDF_KEY_CHECK; + break; + case '6': + switch(s[3]) { + default: + break; + case '3': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'f': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_KEY_CHECK; + } + } + } + } + } + } + } + break; + case 'c': + if (strcmp("ghash", s + 2) == 0) + return PIDX_KDF_PARAM_SSHKDF_XCGHASH; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_DIGEST_PARAM_XOFLEN; + break; + case '\0': + return PIDX_MAC_PARAM_XOF; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP; + } + break; + case 'q': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ; + } + break; + case 't': + if (strcmp("s_standard", s + 2) == 0) + return PIDX_CIPHER_PARAM_XTS_STANDARD; + } + } + return -1; +} + +/* End of TRIE */ diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/internal/param_names.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/internal/param_names.h new file mode 100644 index 00000000000000..0a0404a57e82b9 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/internal/param_names.h @@ -0,0 +1,469 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/internal/param_names.h.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +int ossl_param_find_pidx(const char *s); + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +#define NUM_PIDX 346 + +#define PIDX_ALG_PARAM_ALGORITHM_ID 0 +#define PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS 1 +#define PIDX_ALG_PARAM_CIPHER 2 +#define PIDX_ALG_PARAM_DIGEST 3 +#define PIDX_ALG_PARAM_ENGINE 4 +#define PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR 5 +#define PIDX_ALG_PARAM_MAC 6 +#define PIDX_ALG_PARAM_PROPERTIES 7 +#define PIDX_ASYM_CIPHER_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_ENGINE PIDX_PKEY_PARAM_ENGINE +#define PIDX_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +#define PIDX_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS 9 +#define PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL 10 +#define PIDX_ASYM_CIPHER_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_ASYM_CIPHER_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION 11 +#define PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION 12 +#define PIDX_CAPABILITY_TLS_GROUP_ALG 13 +#define PIDX_CAPABILITY_TLS_GROUP_ID 14 +#define PIDX_CAPABILITY_TLS_GROUP_IS_KEM 15 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_GROUP_NAME 20 +#define PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL 21 +#define PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS 22 +#define PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT 23 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME 24 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_OID 25 +#define PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME 26 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE 27 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID 28 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_SIGALG_NAME 29 +#define PIDX_CAPABILITY_TLS_SIGALG_OID 30 +#define PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS 31 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME 32 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_OID 33 +#define PIDX_CIPHER_PARAM_AEAD 34 +#define PIDX_CIPHER_PARAM_AEAD_IVLEN PIDX_CIPHER_PARAM_IVLEN +#define PIDX_CIPHER_PARAM_AEAD_IV_GENERATED 35 +#define PIDX_CIPHER_PARAM_AEAD_MAC_KEY 36 +#define PIDX_CIPHER_PARAM_AEAD_TAG 37 +#define PIDX_CIPHER_PARAM_AEAD_TAGLEN 38 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD 39 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD 40 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN 41 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED 42 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV 43 +#define PIDX_CIPHER_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD 44 +#define PIDX_CIPHER_PARAM_BLOCK_SIZE 45 +#define PIDX_CIPHER_PARAM_CTS 46 +#define PIDX_CIPHER_PARAM_CTS_MODE 47 +#define PIDX_CIPHER_PARAM_CUSTOM_IV 48 +#define PIDX_CIPHER_PARAM_DECRYPT_ONLY 49 +#define PIDX_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK 50 +#define PIDX_CIPHER_PARAM_HAS_RAND_KEY 51 +#define PIDX_CIPHER_PARAM_IV 52 +#define PIDX_CIPHER_PARAM_IVLEN 53 +#define PIDX_CIPHER_PARAM_KEYLEN 54 +#define PIDX_CIPHER_PARAM_MODE 55 +#define PIDX_CIPHER_PARAM_NUM 56 +#define PIDX_CIPHER_PARAM_PADDING 57 +#define PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG 58 +#define PIDX_CIPHER_PARAM_RANDOM_KEY 59 +#define PIDX_CIPHER_PARAM_RC2_KEYBITS 60 +#define PIDX_CIPHER_PARAM_ROUNDS 61 +#define PIDX_CIPHER_PARAM_SPEED 62 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK 63 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD 64 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN 65 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC 66 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN 67 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN 68 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE 69 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE 70 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT 71 +#define PIDX_CIPHER_PARAM_TLS_MAC 72 +#define PIDX_CIPHER_PARAM_TLS_MAC_SIZE 73 +#define PIDX_CIPHER_PARAM_TLS_VERSION 74 +#define PIDX_CIPHER_PARAM_UPDATED_IV 75 +#define PIDX_CIPHER_PARAM_USE_BITS 76 +#define PIDX_CIPHER_PARAM_XTS_STANDARD 77 +#define PIDX_DECODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DIGEST_PARAM_ALGID_ABSENT 78 +#define PIDX_DIGEST_PARAM_BLOCK_SIZE 45 +#define PIDX_DIGEST_PARAM_MICALG 79 +#define PIDX_DIGEST_PARAM_PAD_TYPE 80 +#define PIDX_DIGEST_PARAM_SIZE 81 +#define PIDX_DIGEST_PARAM_SSL3_MS 82 +#define PIDX_DIGEST_PARAM_XOF 83 +#define PIDX_DIGEST_PARAM_XOFLEN 84 +#define PIDX_DRBG_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_DRBG_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_DRBG_PARAM_ENTROPY_REQUIRED 85 +#define PIDX_DRBG_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_DRBG_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_DRBG_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_DRBG_PARAM_MAX_ADINLEN 86 +#define PIDX_DRBG_PARAM_MAX_ENTROPYLEN 87 +#define PIDX_DRBG_PARAM_MAX_LENGTH 88 +#define PIDX_DRBG_PARAM_MAX_NONCELEN 89 +#define PIDX_DRBG_PARAM_MAX_PERSLEN 90 +#define PIDX_DRBG_PARAM_MIN_ENTROPYLEN 91 +#define PIDX_DRBG_PARAM_MIN_LENGTH 92 +#define PIDX_DRBG_PARAM_MIN_NONCELEN 93 +#define PIDX_DRBG_PARAM_PREDICTION_RESISTANCE 94 +#define PIDX_DRBG_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DRBG_PARAM_RANDOM_DATA 95 +#define PIDX_DRBG_PARAM_RESEED_COUNTER 96 +#define PIDX_DRBG_PARAM_RESEED_REQUESTS 97 +#define PIDX_DRBG_PARAM_RESEED_TIME 98 +#define PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL 99 +#define PIDX_DRBG_PARAM_SIZE 81 +#define PIDX_DRBG_PARAM_USE_DF 100 +#define PIDX_ENCODER_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_ENCODER_PARAM_ENCRYPT_LEVEL 101 +#define PIDX_ENCODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_ENCODER_PARAM_SAVE_PARAMETERS 102 +#define PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE 103 +#define PIDX_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_EXCHANGE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST 104 +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS 105 +#define PIDX_EXCHANGE_PARAM_KDF_OUTLEN 106 +#define PIDX_EXCHANGE_PARAM_KDF_TYPE 107 +#define PIDX_EXCHANGE_PARAM_KDF_UKM 108 +#define PIDX_EXCHANGE_PARAM_PAD 109 +#define PIDX_GEN_PARAM_ITERATION 110 +#define PIDX_GEN_PARAM_POTENTIAL 111 +#define PIDX_KDF_PARAM_ARGON2_AD 112 +#define PIDX_KDF_PARAM_ARGON2_LANES 113 +#define PIDX_KDF_PARAM_ARGON2_MEMCOST 114 +#define PIDX_KDF_PARAM_ARGON2_VERSION 115 +#define PIDX_KDF_PARAM_CEK_ALG 116 +#define PIDX_KDF_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_KDF_PARAM_CONSTANT 117 +#define PIDX_KDF_PARAM_DATA 118 +#define PIDX_KDF_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_KDF_PARAM_EARLY_CLEAN 119 +#define PIDX_KDF_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KDF_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_KDF_PARAM_FIPS_EMS_CHECK 120 +#define PIDX_KDF_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KDF_PARAM_HMACDRBG_ENTROPY 121 +#define PIDX_KDF_PARAM_HMACDRBG_NONCE 122 +#define PIDX_KDF_PARAM_INFO 123 +#define PIDX_KDF_PARAM_ITER 124 +#define PIDX_KDF_PARAM_KBKDF_R 125 +#define PIDX_KDF_PARAM_KBKDF_USE_L 126 +#define PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR 127 +#define PIDX_KDF_PARAM_KEY 128 +#define PIDX_KDF_PARAM_LABEL 129 +#define PIDX_KDF_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_KDF_PARAM_MAC_SIZE 130 +#define PIDX_KDF_PARAM_MODE 55 +#define PIDX_KDF_PARAM_PASSWORD 131 +#define PIDX_KDF_PARAM_PKCS12_ID 132 +#define PIDX_KDF_PARAM_PKCS5 133 +#define PIDX_KDF_PARAM_PREFIX 134 +#define PIDX_KDF_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_KDF_PARAM_SALT 135 +#define PIDX_KDF_PARAM_SCRYPT_MAXMEM 136 +#define PIDX_KDF_PARAM_SCRYPT_N 137 +#define PIDX_KDF_PARAM_SCRYPT_P 138 +#define PIDX_KDF_PARAM_SCRYPT_R 125 +#define PIDX_KDF_PARAM_SECRET 139 +#define PIDX_KDF_PARAM_SEED 140 +#define PIDX_KDF_PARAM_SIZE 81 +#define PIDX_KDF_PARAM_SSHKDF_SESSION_ID 141 +#define PIDX_KDF_PARAM_SSHKDF_TYPE 142 +#define PIDX_KDF_PARAM_SSHKDF_XCGHASH 143 +#define PIDX_KDF_PARAM_THREADS 144 +#define PIDX_KDF_PARAM_UKM 145 +#define PIDX_KDF_PARAM_X942_ACVPINFO 146 +#define PIDX_KDF_PARAM_X942_PARTYUINFO 147 +#define PIDX_KDF_PARAM_X942_PARTYVINFO 148 +#define PIDX_KDF_PARAM_X942_SUPP_PRIVINFO 149 +#define PIDX_KDF_PARAM_X942_SUPP_PUBINFO 150 +#define PIDX_KDF_PARAM_X942_USE_KEYBITS 151 +#define PIDX_KEM_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KEM_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KEM_PARAM_IKME 152 +#define PIDX_KEM_PARAM_OPERATION 153 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING 154 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING 155 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA 156 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN 157 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE 55 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS 158 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD 159 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC 160 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE 161 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM 162 +#define PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN 163 +#define PIDX_MAC_PARAM_BLOCK_SIZE 164 +#define PIDX_MAC_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_MAC_PARAM_CUSTOM 165 +#define PIDX_MAC_PARAM_C_ROUNDS 166 +#define PIDX_MAC_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_MAC_PARAM_DIGEST_NOINIT 167 +#define PIDX_MAC_PARAM_DIGEST_ONESHOT 168 +#define PIDX_MAC_PARAM_D_ROUNDS 169 +#define PIDX_MAC_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_MAC_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_MAC_PARAM_FIPS_NO_SHORT_MAC PIDX_PROV_PARAM_NO_SHORT_MAC +#define PIDX_MAC_PARAM_IV 52 +#define PIDX_MAC_PARAM_KEY 128 +#define PIDX_MAC_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_MAC_PARAM_SALT 135 +#define PIDX_MAC_PARAM_SIZE 81 +#define PIDX_MAC_PARAM_TLS_DATA_SIZE 170 +#define PIDX_MAC_PARAM_XOF 83 +#define PIDX_OBJECT_PARAM_DATA 118 +#define PIDX_OBJECT_PARAM_DATA_STRUCTURE 171 +#define PIDX_OBJECT_PARAM_DATA_TYPE 172 +#define PIDX_OBJECT_PARAM_DESC 173 +#define PIDX_OBJECT_PARAM_INPUT_TYPE 174 +#define PIDX_OBJECT_PARAM_REFERENCE 175 +#define PIDX_OBJECT_PARAM_TYPE 142 +#define PIDX_PASSPHRASE_PARAM_INFO 123 +#define PIDX_PKEY_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_PKEY_PARAM_BITS 176 +#define PIDX_PKEY_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_PKEY_PARAM_DEFAULT_DIGEST 177 +#define PIDX_PKEY_PARAM_DHKEM_IKM 178 +#define PIDX_PKEY_PARAM_DH_GENERATOR 179 +#define PIDX_PKEY_PARAM_DH_PRIV_LEN 180 +#define PIDX_PKEY_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_PKEY_PARAM_DIGEST_SIZE 181 +#define PIDX_PKEY_PARAM_DIST_ID 182 +#define PIDX_PKEY_PARAM_EC_A 183 +#define PIDX_PKEY_PARAM_EC_B 184 +#define PIDX_PKEY_PARAM_EC_CHAR2_M 185 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K1 186 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K2 187 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K3 188 +#define PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS 189 +#define PIDX_PKEY_PARAM_EC_CHAR2_TYPE 190 +#define PIDX_PKEY_PARAM_EC_COFACTOR 191 +#define PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS 192 +#define PIDX_PKEY_PARAM_EC_ENCODING 193 +#define PIDX_PKEY_PARAM_EC_FIELD_TYPE 194 +#define PIDX_PKEY_PARAM_EC_GENERATOR 195 +#define PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE 196 +#define PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC 197 +#define PIDX_PKEY_PARAM_EC_ORDER 198 +#define PIDX_PKEY_PARAM_EC_P 138 +#define PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT 199 +#define PIDX_PKEY_PARAM_EC_PUB_X 200 +#define PIDX_PKEY_PARAM_EC_PUB_Y 201 +#define PIDX_PKEY_PARAM_EC_SEED 140 +#define PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY 202 +#define PIDX_PKEY_PARAM_ENGINE PIDX_ALG_PARAM_ENGINE +#define PIDX_PKEY_PARAM_FFC_COFACTOR 203 +#define PIDX_PKEY_PARAM_FFC_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_FFC_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_FFC_G 204 +#define PIDX_PKEY_PARAM_FFC_GINDEX 205 +#define PIDX_PKEY_PARAM_FFC_H 206 +#define PIDX_PKEY_PARAM_FFC_P 138 +#define PIDX_PKEY_PARAM_FFC_PBITS 207 +#define PIDX_PKEY_PARAM_FFC_PCOUNTER 208 +#define PIDX_PKEY_PARAM_FFC_Q 209 +#define PIDX_PKEY_PARAM_FFC_QBITS 210 +#define PIDX_PKEY_PARAM_FFC_SEED 140 +#define PIDX_PKEY_PARAM_FFC_TYPE 142 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_G 211 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY 212 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_PQ 213 +#define PIDX_PKEY_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK 214 +#define PIDX_PKEY_PARAM_FIPS_KEY_CHECK 215 +#define PIDX_PKEY_PARAM_FIPS_SIGN_CHECK 216 +#define PIDX_PKEY_PARAM_GROUP_NAME 217 +#define PIDX_PKEY_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_PKEY_PARAM_MANDATORY_DIGEST 218 +#define PIDX_PKEY_PARAM_MASKGENFUNC 219 +#define PIDX_PKEY_PARAM_MAX_SIZE 220 +#define PIDX_PKEY_PARAM_MGF1_DIGEST 221 +#define PIDX_PKEY_PARAM_MGF1_PROPERTIES 222 +#define PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS 223 +#define PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS 224 +#define PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED 225 +#define PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED 226 +#define PIDX_PKEY_PARAM_ML_DSA_SEED 140 +#define PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE 227 +#define PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS 228 +#define PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS 229 +#define PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED 230 +#define PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED 231 +#define PIDX_PKEY_PARAM_ML_KEM_SEED 140 +#define PIDX_PKEY_PARAM_PAD_MODE 232 +#define PIDX_PKEY_PARAM_PRIV_KEY 233 +#define PIDX_PKEY_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_PUB_KEY 234 +#define PIDX_PKEY_PARAM_RSA_BITS PIDX_PKEY_PARAM_BITS +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT 235 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT1 236 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT2 237 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT3 238 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT4 239 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT5 240 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT6 241 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT7 242 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT8 243 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT9 244 +#define PIDX_PKEY_PARAM_RSA_D 245 +#define PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ 246 +#define PIDX_PKEY_PARAM_RSA_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_RSA_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_RSA_E 247 +#define PIDX_PKEY_PARAM_RSA_EXPONENT 248 +#define PIDX_PKEY_PARAM_RSA_EXPONENT1 249 +#define PIDX_PKEY_PARAM_RSA_EXPONENT10 250 +#define PIDX_PKEY_PARAM_RSA_EXPONENT2 251 +#define PIDX_PKEY_PARAM_RSA_EXPONENT3 252 +#define PIDX_PKEY_PARAM_RSA_EXPONENT4 253 +#define PIDX_PKEY_PARAM_RSA_EXPONENT5 254 +#define PIDX_PKEY_PARAM_RSA_EXPONENT6 255 +#define PIDX_PKEY_PARAM_RSA_EXPONENT7 256 +#define PIDX_PKEY_PARAM_RSA_EXPONENT8 257 +#define PIDX_PKEY_PARAM_RSA_EXPONENT9 258 +#define PIDX_PKEY_PARAM_RSA_FACTOR 259 +#define PIDX_PKEY_PARAM_RSA_FACTOR1 260 +#define PIDX_PKEY_PARAM_RSA_FACTOR10 261 +#define PIDX_PKEY_PARAM_RSA_FACTOR2 262 +#define PIDX_PKEY_PARAM_RSA_FACTOR3 263 +#define PIDX_PKEY_PARAM_RSA_FACTOR4 264 +#define PIDX_PKEY_PARAM_RSA_FACTOR5 265 +#define PIDX_PKEY_PARAM_RSA_FACTOR6 266 +#define PIDX_PKEY_PARAM_RSA_FACTOR7 267 +#define PIDX_PKEY_PARAM_RSA_FACTOR8 268 +#define PIDX_PKEY_PARAM_RSA_FACTOR9 269 +#define PIDX_PKEY_PARAM_RSA_MASKGENFUNC PIDX_PKEY_PARAM_MASKGENFUNC +#define PIDX_PKEY_PARAM_RSA_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_PKEY_PARAM_RSA_N 137 +#define PIDX_PKEY_PARAM_RSA_PRIMES 270 +#define PIDX_PKEY_PARAM_RSA_PSS_SALTLEN 271 +#define PIDX_PKEY_PARAM_RSA_TEST_P1 272 +#define PIDX_PKEY_PARAM_RSA_TEST_P2 273 +#define PIDX_PKEY_PARAM_RSA_TEST_Q1 274 +#define PIDX_PKEY_PARAM_RSA_TEST_Q2 275 +#define PIDX_PKEY_PARAM_RSA_TEST_XP 276 +#define PIDX_PKEY_PARAM_RSA_TEST_XP1 277 +#define PIDX_PKEY_PARAM_RSA_TEST_XP2 278 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ 279 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ1 280 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ2 281 +#define PIDX_PKEY_PARAM_SECURITY_BITS 282 +#define PIDX_PKEY_PARAM_SLH_DSA_SEED 140 +#define PIDX_PKEY_PARAM_USE_COFACTOR_ECDH PIDX_PKEY_PARAM_USE_COFACTOR_FLAG +#define PIDX_PKEY_PARAM_USE_COFACTOR_FLAG 283 +#define PIDX_PROV_PARAM_BUILDINFO 284 +#define PIDX_PROV_PARAM_CORE_MODULE_FILENAME 285 +#define PIDX_PROV_PARAM_CORE_PROV_NAME 286 +#define PIDX_PROV_PARAM_CORE_VERSION 287 +#define PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST 288 +#define PIDX_PROV_PARAM_DSA_SIGN_DISABLED 289 +#define PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK 290 +#define PIDX_PROV_PARAM_HKDF_DIGEST_CHECK 291 +#define PIDX_PROV_PARAM_HKDF_KEY_CHECK 292 +#define PIDX_PROV_PARAM_HMAC_KEY_CHECK 293 +#define PIDX_PROV_PARAM_KBKDF_KEY_CHECK 294 +#define PIDX_PROV_PARAM_KMAC_KEY_CHECK 295 +#define PIDX_PROV_PARAM_NAME 296 +#define PIDX_PROV_PARAM_NO_SHORT_MAC 297 +#define PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK 298 +#define PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED 299 +#define PIDX_PROV_PARAM_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED 301 +#define PIDX_PROV_PARAM_SECURITY_CHECKS 302 +#define PIDX_PROV_PARAM_SELF_TEST_DESC 303 +#define PIDX_PROV_PARAM_SELF_TEST_PHASE 304 +#define PIDX_PROV_PARAM_SELF_TEST_TYPE 305 +#define PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK 306 +#define PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK 307 +#define PIDX_PROV_PARAM_SSHKDF_KEY_CHECK 308 +#define PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK 309 +#define PIDX_PROV_PARAM_SSKDF_KEY_CHECK 310 +#define PIDX_PROV_PARAM_STATUS 311 +#define PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED 312 +#define PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK 313 +#define PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK 314 +#define PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK 315 +#define PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK 316 +#define PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK 317 +#define PIDX_PROV_PARAM_VERSION 115 +#define PIDX_PROV_PARAM_X942KDF_KEY_CHECK 318 +#define PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK 319 +#define PIDX_PROV_PARAM_X963KDF_KEY_CHECK 320 +#define PIDX_RAND_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_RAND_PARAM_GENERATE 321 +#define PIDX_RAND_PARAM_MAX_REQUEST 322 +#define PIDX_RAND_PARAM_STATE 323 +#define PIDX_RAND_PARAM_STRENGTH 324 +#define PIDX_RAND_PARAM_TEST_ENTROPY 325 +#define PIDX_RAND_PARAM_TEST_NONCE 326 +#define PIDX_SIGNATURE_PARAM_ADD_RANDOM 327 +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID PIDX_PKEY_PARAM_ALGORITHM_ID +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_SIGNATURE_PARAM_CONTEXT_STRING 328 +#define PIDX_SIGNATURE_PARAM_DETERMINISTIC 329 +#define PIDX_SIGNATURE_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_SIGNATURE_PARAM_DIGEST_SIZE PIDX_PKEY_PARAM_DIGEST_SIZE +#define PIDX_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_SIGNATURE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_CHECK PIDX_PKEY_PARAM_FIPS_SIGN_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK 330 +#define PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE 331 +#define PIDX_SIGNATURE_PARAM_INSTANCE 332 +#define PIDX_SIGNATURE_PARAM_KAT 333 +#define PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING 334 +#define PIDX_SIGNATURE_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_SIGNATURE_PARAM_MGF1_PROPERTIES PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_SIGNATURE_PARAM_MU 335 +#define PIDX_SIGNATURE_PARAM_NONCE_TYPE 336 +#define PIDX_SIGNATURE_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_SIGNATURE_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_SIGNATURE_PARAM_PSS_SALTLEN 271 +#define PIDX_SIGNATURE_PARAM_SIGNATURE 337 +#define PIDX_SIGNATURE_PARAM_TEST_ENTROPY 338 +#define PIDX_SKEY_PARAM_KEY_LENGTH 339 +#define PIDX_SKEY_PARAM_RAW_BYTES 340 +#define PIDX_STORE_PARAM_ALIAS 341 +#define PIDX_STORE_PARAM_DIGEST 3 +#define PIDX_STORE_PARAM_EXPECT 342 +#define PIDX_STORE_PARAM_FINGERPRINT 343 +#define PIDX_STORE_PARAM_INPUT_TYPE 174 +#define PIDX_STORE_PARAM_ISSUER 296 +#define PIDX_STORE_PARAM_PROPERTIES 7 +#define PIDX_STORE_PARAM_SERIAL 344 +#define PIDX_STORE_PARAM_SUBJECT 345 diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/asn1.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/asn1.h index 21ff58e3d803d4..15e9e44674b0f3 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/asn1.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/asn1.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/asn1.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -21,6 +21,9 @@ # define HEADER_ASN1_H # endif +# ifndef OPENSSL_NO_STDIO +# include +# endif # include # include # include @@ -50,14 +53,14 @@ extern "C" { # define V_ASN1_PRIMITIVE_TAG 0x1f # define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG -# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ -# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ -# define V_ASN1_ANY -4/* used in ASN1 template code */ +# define V_ASN1_APP_CHOOSE -2 /* let the recipient choose */ +# define V_ASN1_OTHER -3 /* used in ASN1_TYPE */ +# define V_ASN1_ANY -4 /* used in ASN1 template code */ # define V_ASN1_UNDEF -1 /* ASN.1 tag values */ # define V_ASN1_EOC 0 -# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_BOOLEAN 1 # define V_ASN1_INTEGER 2 # define V_ASN1_BIT_STRING 3 # define V_ASN1_OCTET_STRING 4 @@ -70,19 +73,19 @@ extern "C" { # define V_ASN1_UTF8STRING 12 # define V_ASN1_SEQUENCE 16 # define V_ASN1_SET 17 -# define V_ASN1_NUMERICSTRING 18 /**/ +# define V_ASN1_NUMERICSTRING 18 # define V_ASN1_PRINTABLESTRING 19 # define V_ASN1_T61STRING 20 -# define V_ASN1_TELETEXSTRING 20/* alias */ -# define V_ASN1_VIDEOTEXSTRING 21 /**/ +# define V_ASN1_TELETEXSTRING 20 /* alias */ +# define V_ASN1_VIDEOTEXSTRING 21 # define V_ASN1_IA5STRING 22 # define V_ASN1_UTCTIME 23 -# define V_ASN1_GENERALIZEDTIME 24 /**/ -# define V_ASN1_GRAPHICSTRING 25 /**/ -# define V_ASN1_ISO64STRING 26 /**/ -# define V_ASN1_VISIBLESTRING 26/* alias */ -# define V_ASN1_GENERALSTRING 27 /**/ -# define V_ASN1_UNIVERSALSTRING 28 /**/ +# define V_ASN1_GENERALIZEDTIME 24 +# define V_ASN1_GRAPHICSTRING 25 +# define V_ASN1_ISO64STRING 26 +# define V_ASN1_VISIBLESTRING 26 /* alias */ +# define V_ASN1_GENERALSTRING 27 +# define V_ASN1_UNIVERSALSTRING 28 # define V_ASN1_BMPSTRING 30 /* @@ -155,7 +158,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) -# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +# define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */ /* * This indicates that the ASN1_STRING is not a real value but just a place * holder for the location where indefinite length constructed data should be @@ -275,7 +278,7 @@ typedef struct ASN1_TLC_st ASN1_TLC; /* This is just an opaque pointer */ typedef struct ASN1_VALUE_st ASN1_VALUE; -/* Declare ASN1 functions: the implement macro in in asn1t.h */ +/* Declare ASN1 functions: the implement macro is in asn1t.h */ /* * The mysterious 'extern' that's passed to some macros is innocuous, @@ -368,6 +371,7 @@ typedef struct ASN1_VALUE_st ASN1_VALUE; typedef void *d2i_of_void(void **, const unsigned char **, long); typedef int i2d_of_void(const void *, unsigned char **); +typedef int OSSL_i2d_of_void_ctx(const void *, unsigned char **, void *vctx); /*- * The following macros and typedefs allow an ASN1_ITEM @@ -996,6 +1000,8 @@ int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, unsigned char *data, int max_len); void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/bio.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/bio.h index f9aa74731c833c..e02f867beb0ec0 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/bio.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/bio.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/bio.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -67,8 +67,13 @@ extern "C" { # define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) # endif # define BIO_TYPE_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_PAIR (26|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_MEM (27|BIO_TYPE_SOURCE_SINK) +/* Custom type starting index returned by BIO_get_new_index() */ #define BIO_TYPE_START 128 +/* Custom type maximum index that can be returned by BIO_get_new_index() */ +#define BIO_TYPE_MASK 0xFF /* * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. @@ -171,6 +176,31 @@ extern "C" { # define BIO_CTRL_SET_INDENT 80 # define BIO_CTRL_GET_INDENT 81 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +# define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +# define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +# define BIO_CTRL_DGRAM_GET_CAPS 86 +# define BIO_CTRL_DGRAM_SET_CAPS 87 +# define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +# define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +# define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +# define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +# define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 +# define BIO_CTRL_DGRAM_SET0_LOCAL_ADDR 94 + +# define BIO_DGRAM_CAP_NONE 0U +# define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +# define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +# define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +# define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + # ifndef OPENSSL_NO_KTLS # define BIO_get_ktls_send(b) \ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) @@ -208,7 +238,7 @@ extern "C" { # define BIO_FLAGS_NONCLEAR_RST 0x400 # define BIO_FLAGS_IN_EOF 0x800 -/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */ +/* the BIO FLAGS values 0x1000 to 0x8000 are reserved for internal KTLS flags */ typedef union bio_addr_st BIO_ADDR; typedef struct bio_addrinfo_st BIO_ADDRINFO; @@ -256,12 +286,14 @@ void BIO_clear_flags(BIO *b, int flags); # define BIO_RR_ACCEPT 0x03 /* These are passed by the BIO callback */ -# define BIO_CB_FREE 0x01 -# define BIO_CB_READ 0x02 -# define BIO_CB_WRITE 0x03 -# define BIO_CB_PUTS 0x04 -# define BIO_CB_GETS 0x05 -# define BIO_CB_CTRL 0x06 +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 +# define BIO_CB_RECVMMSG 0x07 +# define BIO_CB_SENDMMSG 0x08 /* * The callback is called before and after the underling operation, The @@ -362,6 +394,36 @@ struct bio_dgram_sctp_prinfo { }; # endif +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_TYPE_SSL 2 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + SSL *ssl; + } value; +} BIO_POLL_DESCRIPTOR; + /* * #define BIO_CONN_get_param_hostname BIO_ctrl */ @@ -428,10 +490,17 @@ struct bio_dgram_sctp_prinfo { # define BIO_C_SET_CONNECT_MODE 155 +# define BIO_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +# define BIO_C_SET_SOCK_TYPE 157 +# define BIO_C_GET_SOCK_TYPE 158 +# define BIO_C_GET_DGRAM_BIO 159 + # define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) # define BIO_get_app_data(s) BIO_get_ex_data(s,0) -# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_tfo(b,n) BIO_ctrl(b,BIO_C_SET_TFO,(n),NULL) # ifndef OPENSSL_NO_SOCK /* IP families we support, for BIO_s_connect() and BIO_s_accept() */ @@ -452,7 +521,11 @@ struct bio_dgram_sctp_prinfo { # define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) # define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) # define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_get_conn_mode(b) BIO_ctrl(b,BIO_C_GET_CONNECT,4,NULL) # define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) +# define BIO_set_sock_type(b,t) BIO_ctrl(b,BIO_C_SET_SOCK_TYPE,(t),NULL) +# define BIO_get_sock_type(b) BIO_ctrl(b,BIO_C_GET_SOCK_TYPE,0,NULL) +# define BIO_get0_dgram_bio(b, p) BIO_ctrl(b,BIO_C_GET_DGRAM_BIO,0,(void *)(BIO **)(p)) /* BIO_s_accept() */ # define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ @@ -469,6 +542,7 @@ struct bio_dgram_sctp_prinfo { (char *)(bio)) # define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) # define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) +# define BIO_set_tfo_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,5,(n)?(void *)"a":NULL) /* Aliases kept for backward compatibility */ # define BIO_BIND_NORMAL 0 @@ -596,8 +670,32 @@ int BIO_ctrl_reset_read_request(BIO *b); (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) # define BIO_dgram_set_peer(b,peer) \ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_detect_peer_addr(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) # define BIO_dgram_get_mtu_overhead(b) \ (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +# define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +# define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +# define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +# define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +# define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +# define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +# define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +# define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +# define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +# define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) +# define BIO_dgram_set0_local_addr(b, addr) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET0_LOCAL_ADDR, 0, (addr)) /* ctrl macros for BIO_f_prefix */ # define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) @@ -640,10 +738,18 @@ void BIO_vfree(BIO *a); int BIO_up_ref(BIO *a); int BIO_read(BIO *b, void *data, int dlen); int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); int BIO_gets(BIO *bp, char *buf, int size); int BIO_get_line(BIO *bio, char *buf, int size); int BIO_write(BIO *b, const void *data, int dlen); int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); int BIO_puts(BIO *bp, const char *buf); int BIO_indent(BIO *b, int indent, int max); long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); @@ -667,6 +773,9 @@ int BIO_nwrite0(BIO *bio, char **buf); int BIO_nwrite(BIO *bio, char **buf, int num); const BIO_METHOD *BIO_s_mem(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +# endif const BIO_METHOD *BIO_s_secmem(void); BIO *BIO_new_mem_buf(const void *buf, int len); # ifndef OPENSSL_NO_SOCK @@ -686,6 +795,7 @@ const BIO_METHOD *BIO_f_nbio_test(void); const BIO_METHOD *BIO_f_prefix(void); const BIO_METHOD *BIO_s_core(void); # ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_pair(void); const BIO_METHOD *BIO_s_datagram(void); int BIO_dgram_non_fatal_error(int error); BIO *BIO_new_dgram(int fd, int close_flag); @@ -704,6 +814,7 @@ int BIO_dgram_sctp_msg_waiting(BIO *b); # ifndef OPENSSL_NO_SOCK int BIO_sock_should_retry(int i); int BIO_sock_non_fatal_error(int error); +int BIO_err_is_non_fatal(unsigned int errcode); int BIO_socket_wait(int fd, int for_read, time_t max_time); # endif int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); @@ -726,6 +837,8 @@ int BIO_hex_string(BIO *out, int indent, int width, const void *data, # ifndef OPENSSL_NO_SOCK BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, const void *where, size_t wherelen, unsigned short port); void BIO_ADDR_free(BIO_ADDR *); @@ -788,6 +901,7 @@ int BIO_sock_info(int sock, # define BIO_SOCK_KEEPALIVE 0x04 # define BIO_SOCK_NONBLOCK 0x08 # define BIO_SOCK_NODELAY 0x10 +# define BIO_SOCK_TFO 0x20 int BIO_socket(int domain, int socktype, int protocol, int options); int BIO_connect(int sock, const BIO_ADDR *addr, int options); @@ -805,6 +919,11 @@ BIO *BIO_new_fd(int fd, int close_flag); int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, BIO **bio2, size_t writebuf2); +# ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +# endif + /* * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default @@ -849,38 +968,54 @@ ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); BIO_METHOD *BIO_meth_new(int type, const char *name); void BIO_meth_free(BIO_METHOD *biom); -int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int); -int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t, - size_t *); int BIO_meth_set_write(BIO_METHOD *biom, int (*write) (BIO *, const char *, int)); int BIO_meth_set_write_ex(BIO_METHOD *biom, int (*bwrite) (BIO *, const char *, size_t, size_t *)); -int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); -int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); +int BIO_meth_set_sendmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_read(BIO_METHOD *biom, int (*read) (BIO *, char *, int)); int BIO_meth_set_read_ex(BIO_METHOD *biom, int (*bread) (BIO *, char *, size_t, size_t *)); -int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +int BIO_meth_set_recvmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_puts(BIO_METHOD *biom, int (*puts) (BIO *, const char *)); -int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); int BIO_meth_set_gets(BIO_METHOD *biom, int (*ossl_gets) (BIO *, char *, int)); -long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); int BIO_meth_set_ctrl(BIO_METHOD *biom, long (*ctrl) (BIO *, int, long, void *)); -int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); -int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); -long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) - (BIO *, int, BIO_info_cb *); int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, long (*callback_ctrl) (BIO *, int, BIO_info_cb *)); - +# ifndef OPENSSL_NO_DEPRECATED_3_5 +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, + int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, + long, void *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) (BIO *, int, + BIO_info_cb *); +# endif # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/cmp.h index 49825570d8c303..05aed3029d594c 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -35,7 +35,9 @@ extern "C" { # endif -# define OSSL_CMP_PVNO 2 +# define OSSL_CMP_PVNO_2 2 +# define OSSL_CMP_PVNO_3 3 +# define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ /*- * PKIFailureInfo ::= BIT STRING { @@ -137,7 +139,6 @@ extern "C" { # if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX # error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int # endif - typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) @@ -203,8 +204,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_PKISTATUS_revocationWarning 4 # define OSSL_CMP_PKISTATUS_revocationNotification 5 # define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 - typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; + DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) # define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 @@ -274,6 +275,46 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) #define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) #define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) + +typedef struct ossl_cmp_crlstatus_st OSSL_CMP_CRLSTATUS; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS) +#define sk_OSSL_CMP_CRLSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_value(sk, idx) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CRLSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CRLSTATUS_new_null() ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CRLSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CRLSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CRLSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_delete(sk, i) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CRLSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_pop(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_shift(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CRLSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CRLSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CRLSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CRLSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CRLSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) + + +typedef OSSL_CRMF_ATTRIBUTETYPEANDVALUE OSSL_CMP_ATAV; +# define OSSL_CMP_ATAV_free OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free +typedef STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) OSSL_CMP_ATAVS; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_ATAVS) +# define stack_st_OSSL_CMP_ATAV stack_st_OSSL_CRMF_ATTRIBUTETYPEANDVALUE +# define sk_OSSL_CMP_ATAV_num sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num +# define sk_OSSL_CMP_ATAV_value sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value +# define sk_OSSL_CMP_ATAV_push sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push +# define sk_OSSL_CMP_ATAV_pop_free sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free + typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT; typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI; DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI) @@ -375,21 +416,75 @@ void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type, ASN1_TYPE *value); ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav); ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); -int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p, +int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **sk_p, OSSL_CMP_ITAV *itav); void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new0_certProfile(STACK_OF(ASN1_UTF8STRING) + *certProfile); +int OSSL_CMP_ITAV_get0_certProfile(const OSSL_CMP_ITAV *itav, + STACK_OF(ASN1_UTF8STRING) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_create(const X509_CRL *crl, + const X509 *cert, int only_DN); +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_new1(const DIST_POINT_NAME *dpn, + const GENERAL_NAMES *issuer, + const ASN1_TIME *thisUpdate); +int OSSL_CMP_CRLSTATUS_get0(const OSSL_CMP_CRLSTATUS *crlstatus, + DIST_POINT_NAME **dpn, GENERAL_NAMES **issuer, + ASN1_TIME **thisUpdate); +void OSSL_CMP_CRLSTATUS_free(OSSL_CMP_CRLSTATUS *crlstatus); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_crlStatusList(STACK_OF(OSSL_CMP_CRLSTATUS) *crlStatusList); +int OSSL_CMP_ITAV_get0_crlStatusList(const OSSL_CMP_ITAV *itav, + STACK_OF(OSSL_CMP_CRLSTATUS) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_crls(const X509_CRL *crls); +int OSSL_CMP_ITAV_get0_crls(const OSSL_CMP_ITAV *it, STACK_OF(X509_CRL) **out); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_certReqTemplate(OSSL_CRMF_CERTTEMPLATE *certTemplate, + OSSL_CMP_ATAVS *keySpec); +int OSSL_CMP_ITAV_get1_certReqTemplate(const OSSL_CMP_ITAV *itav, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +OSSL_CMP_ATAV *OSSL_CMP_ATAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ATAV_set0(OSSL_CMP_ATAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ATAV_get0_type(const OSSL_CMP_ATAV *itav); +ASN1_TYPE *OSSL_CMP_ATAV_get0_value(const OSSL_CMP_ATAV *itav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_algId(const X509_ALGOR *alg); +X509_ALGOR *OSSL_CMP_ATAV_get0_algId(const OSSL_CMP_ATAV *atav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_rsaKeyLen(int len); +int OSSL_CMP_ATAV_get_rsaKeyLen(const OSSL_CMP_ATAV *atav); +int OSSL_CMP_ATAV_push1(OSSL_CMP_ATAVS **sk_p, const OSSL_CMP_ATAV *atav); + void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); /* from cmp_ctx.c */ OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const OSSL_CMP_CTX *ctx); /* CMP general options: */ # define OSSL_CMP_OPT_LOG_VERBOSITY 0 /* CMP transfer options: */ -# define OSSL_CMP_OPT_KEEP_ALIVE 10 -# define OSSL_CMP_OPT_MSG_TIMEOUT 11 +# define OSSL_CMP_OPT_KEEP_ALIVE 10 +# define OSSL_CMP_OPT_MSG_TIMEOUT 11 # define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 +# define OSSL_CMP_OPT_USE_TLS 13 /* CMP request options: */ # define OSSL_CMP_OPT_VALIDITY_DAYS 20 # define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 @@ -407,6 +502,7 @@ int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); # define OSSL_CMP_OPT_DIGEST_ALGNID 34 # define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35 # define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36 +# define OSSL_CMP_OPT_NO_CACHE_EXTRACERTS 37 int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val); int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt); /* CMP-specific callback for logging and outputting the error queue: */ @@ -420,9 +516,11 @@ int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); +# ifndef OPENSSL_NO_HTTP int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); +# endif typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); @@ -432,7 +530,9 @@ void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); +# define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +# define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); /* client authentication: */ @@ -448,12 +548,15 @@ int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx, int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); int OSSL_CMP_CTX_reset_geninfo_ITAVs(OSSL_CMP_CTX *ctx); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_CTX_get0_geninfo_ITAVs(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, STACK_OF(X509) *extraCertsOut); /* certificate template: */ int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set1_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, const GENERAL_NAME *name); @@ -477,6 +580,7 @@ int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); # define OSSL_CMP_PKISI_BUFLEN 1024 +X509 *OSSL_CMP_CTX_get0_validatedSrvCert(const OSSL_CMP_CTX *ctx); X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); @@ -498,10 +602,13 @@ OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const OSSL_CMP_PKIHEADER *hdr); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_HDR_get0_geninfo_ITAVs(const OSSL_CMP_PKIHEADER *hdr); /* from cmp_msg.c */ OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg); +X509_PUBKEY *OSSL_CMP_MSG_get0_certreq_publickey(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_recipNonce(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid); @@ -517,8 +624,10 @@ int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, X509_STORE *trusted_store, X509 *cert); /* from cmp_http.c */ +# ifndef OPENSSL_NO_HTTP OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); +# endif /* from cmp_server.c */ typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; @@ -561,6 +670,13 @@ int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx, OSSL_CMP_SRV_error_cb_t process_error, OSSL_CMP_SRV_certConf_cb_t process_certConf, OSSL_CMP_SRV_pollReq_cb_t process_pollReq); +typedef int (*OSSL_CMP_SRV_delayed_delivery_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +typedef int (*OSSL_CMP_SRV_clean_transaction_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_SRV_CTX_init_trans(OSSL_CMP_SRV_CTX *srv_ctx, + OSSL_CMP_SRV_delayed_delivery_cb_t delay, + OSSL_CMP_SRV_clean_transaction_cb_t clean); OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx, @@ -577,6 +693,8 @@ X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type, # define OSSL_CMP_CR 2 # define OSSL_CMP_P10CR 4 # define OSSL_CMP_KUR 7 +# define OSSL_CMP_GENM 21 +# define OSSL_CMP_ERROR 23 # define OSSL_CMP_exec_IR_ses(ctx) \ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL) # define OSSL_CMP_exec_CR_ses(ctx) \ @@ -590,6 +708,18 @@ int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); +int OSSL_CMP_get1_crlUpdate(OSSL_CMP_CTX *ctx, const X509 *crlcert, + const X509_CRL *last_crl, + X509_CRL **crl); +int OSSL_CMP_get1_certReqTemplate(OSSL_CMP_CTX *ctx, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/cms.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/cms.h index 3b453e6a2187a2..63afab563557b0 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/cms.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/cms.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cms.h.in * - * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2008-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -31,8 +31,10 @@ extern "C" { # endif +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; typedef struct CMS_ContentInfo_st CMS_ContentInfo; typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; typedef struct CMS_CertificateChoices CMS_CertificateChoices; typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; @@ -147,10 +149,14 @@ SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, #define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) +DECLARE_ASN1_DUP_FUNCTION(CMS_EnvelopedData) + CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq); # define CMS_SIGNERINFO_ISSUER_SERIAL 0 @@ -190,6 +196,7 @@ CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq) # define CMS_ASCIICRLF 0x80000 # define CMS_CADES 0x100000 # define CMS_USE_ORIGINATOR_KEYID 0x200000 +# define CMS_NO_SIGNING_TIME 0x400000 const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms); @@ -217,13 +224,16 @@ int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, unsigned int flags); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, BIO *dcont, + unsigned int flags); CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, unsigned int flags); CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, @@ -233,27 +243,26 @@ CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, unsigned int flags); CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, const unsigned char *key, size_t keylen, BIO *dcont, BIO *out, unsigned int flags); - CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags); CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, @@ -272,7 +281,7 @@ CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags); CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, BIO *dcont, BIO *out, unsigned int flags); @@ -291,12 +300,16 @@ int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo * -CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx, +CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags); @@ -385,6 +398,11 @@ ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); int CMS_SignerInfo_sign(CMS_SignerInfo *si); int CMS_SignerInfo_verify(CMS_SignerInfo *si); int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, @@ -441,7 +459,7 @@ CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( unsigned char *id, int idlen, int allorfirst, STACK_OF(GENERAL_NAMES) *receiptList, STACK_OF(GENERAL_NAMES) *receiptsTo, - OSSL_LIB_CTX *ctx); + OSSL_LIB_CTX *libctx); int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/comp.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/comp.h new file mode 100644 index 00000000000000..90e39511fe8d28 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/comp.h @@ -0,0 +1,98 @@ +/* + * Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_COMP_H +# define OPENSSL_COMP_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_COMP_H +# endif + +# include + +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + + +# ifndef OPENSSL_NO_COMP + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX* comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); + +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); + +COMP_METHOD *COMP_zlib(void); +COMP_METHOD *COMP_zlib_oneshot(void); +COMP_METHOD *COMP_brotli(void); +COMP_METHOD *COMP_brotli_oneshot(void); +COMP_METHOD *COMP_zstd(void); +COMP_METHOD *COMP_zstd_oneshot(void); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define COMP_zlib_cleanup() while(0) continue +# endif + +# ifdef OPENSSL_BIO_H +const BIO_METHOD *BIO_f_zlib(void); +const BIO_METHOD *BIO_f_brotli(void); +const BIO_METHOD *BIO_f_zstd(void); +# endif + +# endif + +typedef struct ssl_comp_st SSL_COMP; + +SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) +#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) +#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) +#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) +#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) +#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) +#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) +#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) +#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) +#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) +#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) +#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) + + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/conf.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/conf.h index 44989929f6c84a..38576290bf641b 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/conf.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/conf.h @@ -27,6 +27,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -65,7 +68,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) #define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) #define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); -#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp))) +#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp)), lh_CONF_VALUE_hash_thunk, lh_CONF_VALUE_comp_thunk, lh_CONF_VALUE_doall_thunk, lh_CONF_VALUE_doall_arg_thunk)) #define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/configuration.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/configuration.h index a3124fd78744c1..2decc8cc46a65c 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/configuration.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/configuration.h @@ -27,7 +27,7 @@ extern "C" { * OpenSSL was configured with the following options: */ -# define OPENSSL_CONFIGURED_API 30000 +# define OPENSSL_CONFIGURED_API 30500 # ifndef OPENSSL_RAND_SEED_OS # define OPENSSL_RAND_SEED_OS # endif @@ -43,6 +43,12 @@ extern "C" { # ifndef OPENSSL_NO_ASM # define OPENSSL_NO_ASM # endif +# ifndef OPENSSL_NO_BROTLI +# define OPENSSL_NO_BROTLI +# endif +# ifndef OPENSSL_NO_BROTLI_DYNAMIC +# define OPENSSL_NO_BROTLI_DYNAMIC +# endif # ifndef OPENSSL_NO_COMP # define OPENSSL_NO_COMP # endif @@ -52,6 +58,9 @@ extern "C" { # ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # endif +# ifndef OPENSSL_NO_DEMOS +# define OPENSSL_NO_DEMOS +# endif # ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 # define OPENSSL_NO_EC_NISTP_64_GCC_128 # endif @@ -61,12 +70,24 @@ extern "C" { # ifndef OPENSSL_NO_EXTERNAL_TESTS # define OPENSSL_NO_EXTERNAL_TESTS # endif +# ifndef OPENSSL_NO_FIPS_JITTER +# define OPENSSL_NO_FIPS_JITTER +# endif # ifndef OPENSSL_NO_FUZZ_AFL # define OPENSSL_NO_FUZZ_AFL # endif # ifndef OPENSSL_NO_FUZZ_LIBFUZZER # define OPENSSL_NO_FUZZ_LIBFUZZER # endif +# ifndef OPENSSL_NO_H3DEMO +# define OPENSSL_NO_H3DEMO +# endif +# ifndef OPENSSL_NO_HQINTEROP +# define OPENSSL_NO_HQINTEROP +# endif +# ifndef OPENSSL_NO_JITTER +# define OPENSSL_NO_JITTER +# endif # ifndef OPENSSL_NO_KTLS # define OPENSSL_NO_KTLS # endif @@ -79,6 +100,9 @@ extern "C" { # ifndef OPENSSL_NO_MSAN # define OPENSSL_NO_MSAN # endif +# ifndef OPENSSL_NO_PIE +# define OPENSSL_NO_PIE +# endif # ifndef OPENSSL_NO_RC5 # define OPENSSL_NO_RC5 # endif @@ -91,6 +115,12 @@ extern "C" { # ifndef OPENSSL_NO_SSL3_METHOD # define OPENSSL_NO_SSL3_METHOD # endif +# ifndef OPENSSL_NO_SSLKEYLOG +# define OPENSSL_NO_SSLKEYLOG +# endif +# ifndef OPENSSL_NO_TFO +# define OPENSSL_NO_TFO +# endif # ifndef OPENSSL_NO_TRACE # define OPENSSL_NO_TRACE # endif @@ -106,6 +136,21 @@ extern "C" { # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS # define OPENSSL_NO_WEAK_SSL_CIPHERS # endif +# ifndef OPENSSL_NO_WINSTORE +# define OPENSSL_NO_WINSTORE +# endif +# ifndef OPENSSL_NO_ZLIB +# define OPENSSL_NO_ZLIB +# endif +# ifndef OPENSSL_NO_ZLIB_DYNAMIC +# define OPENSSL_NO_ZLIB_DYNAMIC +# endif +# ifndef OPENSSL_NO_ZSTD +# define OPENSSL_NO_ZSTD +# endif +# ifndef OPENSSL_NO_ZSTD_DYNAMIC +# define OPENSSL_NO_ZSTD_DYNAMIC +# endif # ifndef OPENSSL_NO_DYNAMIC_ENGINE # define OPENSSL_NO_DYNAMIC_ENGINE # endif @@ -127,6 +172,12 @@ extern "C" { # define RC4_INT unsigned int +# if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +# define OPENSSL_NO_COMP_ALG +# else +# undef OPENSSL_NO_COMP_ALG +# endif + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/core_names.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/core_names.h new file mode 100644 index 00000000000000..e93e79a52bc910 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/core_names.h @@ -0,0 +1,575 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/core_names.h.in + * + * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#ifndef OPENSSL_CORE_NAMES_H +# define OPENSSL_CORE_NAMES_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +/* OSSL_CIPHER_PARAM_CTS_MODE Values */ +# define OSSL_CIPHER_CTS_MODE_CS1 "CS1" +# define OSSL_CIPHER_CTS_MODE_CS2 "CS2" +# define OSSL_CIPHER_CTS_MODE_CS3 "CS3" + +/* Known CIPHER names (not a complete list) */ +# define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" + +/* Known DIGEST names (not a complete list) */ +# define OSSL_DIGEST_NAME_MD5 "MD5" +# define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" +# define OSSL_DIGEST_NAME_SHA1 "SHA1" +# define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" +# define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" +# define OSSL_DIGEST_NAME_SHA2_256_192 "SHA2-256/192" +# define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" +# define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" +# define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" +# define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" +# define OSSL_DIGEST_NAME_MD2 "MD2" +# define OSSL_DIGEST_NAME_MD4 "MD4" +# define OSSL_DIGEST_NAME_MDC2 "MDC2" +# define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" +# define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" +# define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" +# define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" +# define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" +# define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" +# define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" +# define OSSL_DIGEST_NAME_SM3 "SM3" + +/* Known MAC names */ +# define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" +# define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" +# define OSSL_MAC_NAME_CMAC "CMAC" +# define OSSL_MAC_NAME_GMAC "GMAC" +# define OSSL_MAC_NAME_HMAC "HMAC" +# define OSSL_MAC_NAME_KMAC128 "KMAC128" +# define OSSL_MAC_NAME_KMAC256 "KMAC256" +# define OSSL_MAC_NAME_POLY1305 "POLY1305" +# define OSSL_MAC_NAME_SIPHASH "SIPHASH" + +/* Known KDF names */ +# define OSSL_KDF_NAME_HKDF "HKDF" +# define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" +# define OSSL_KDF_NAME_PBKDF1 "PBKDF1" +# define OSSL_KDF_NAME_PBKDF2 "PBKDF2" +# define OSSL_KDF_NAME_SCRYPT "SCRYPT" +# define OSSL_KDF_NAME_SSHKDF "SSHKDF" +# define OSSL_KDF_NAME_SSKDF "SSKDF" +# define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" +# define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" +# define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" +# define OSSL_KDF_NAME_X963KDF "X963KDF" +# define OSSL_KDF_NAME_KBKDF "KBKDF" +# define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" +# define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" + +/* RSA padding modes */ +# define OSSL_PKEY_RSA_PAD_MODE_NONE "none" +# define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" +# define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" +# define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" +# define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" + +/* RSA pss padding salt length */ +# define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" + +/* OSSL_PKEY_PARAM_EC_ENCODING values */ +# define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" +# define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" + +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" + +# define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" + +/* PROV_SKEY well known key types */ +# define OSSL_SKEY_TYPE_GENERIC "GENERIC-SECRET" +# define OSSL_SKEY_TYPE_AES "AES" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" + +/* Provider configuration variables */ +#define OSSL_PKEY_RETAIN_SEED "pkey_retain_seed" + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +# define OSSL_ALG_PARAM_ALGORITHM_ID "algorithm-id" +# define OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS "algorithm-id-params" +# define OSSL_ALG_PARAM_CIPHER "cipher" +# define OSSL_ALG_PARAM_DIGEST "digest" +# define OSSL_ALG_PARAM_ENGINE "engine" +# define OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR "fips-indicator" +# define OSSL_ALG_PARAM_MAC "mac" +# define OSSL_ALG_PARAM_PROPERTIES "properties" +# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +# define OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props" +# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" +# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name" +# define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal" +# define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name" +# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid" +# define OSSL_CIPHER_PARAM_AEAD "aead" +# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +# define OSSL_CIPHER_PARAM_AEAD_IV_GENERATED "iv-generated" +# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" +# define OSSL_CIPHER_PARAM_AEAD_TAG "tag" +# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" +# define OSSL_CIPHER_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD "alg_id_param" +# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_CIPHER_PARAM_CTS "cts" +# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" +# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" +# define OSSL_CIPHER_PARAM_DECRYPT_ONLY "decrypt-only" +# define OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK "encrypt-check" +# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" +# define OSSL_CIPHER_PARAM_IV "iv" +# define OSSL_CIPHER_PARAM_IVLEN "ivlen" +# define OSSL_CIPHER_PARAM_KEYLEN "keylen" +# define OSSL_CIPHER_PARAM_MODE "mode" +# define OSSL_CIPHER_PARAM_NUM "num" +# define OSSL_CIPHER_PARAM_PADDING "padding" +# define OSSL_CIPHER_PARAM_PIPELINE_AEAD_TAG "pipeline-tag" +# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" +# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" +# define OSSL_CIPHER_PARAM_ROUNDS "rounds" +# define OSSL_CIPHER_PARAM_SPEED "speed" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag" +# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" +# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" +# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" +# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" +# define OSSL_CIPHER_PARAM_USE_BITS "use-bits" +# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard" +# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" +# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_DIGEST_PARAM_MICALG "micalg" +# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" +# define OSSL_DIGEST_PARAM_SIZE "size" +# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" +# define OSSL_DIGEST_PARAM_XOF "xof" +# define OSSL_DIGEST_PARAM_XOFLEN "xoflen" +# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +# define OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +# define OSSL_DRBG_PARAM_SIZE "size" +# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" +# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" +# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" +# define OSSL_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_EXCHANGE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" +# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" +# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" +# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" +# define OSSL_EXCHANGE_PARAM_PAD "pad" +# define OSSL_GEN_PARAM_ITERATION "iteration" +# define OSSL_GEN_PARAM_POTENTIAL "potential" +# define OSSL_KDF_PARAM_ARGON2_AD "ad" +# define OSSL_KDF_PARAM_ARGON2_LANES "lanes" +# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost" +# define OSSL_KDF_PARAM_ARGON2_VERSION "version" +# define OSSL_KDF_PARAM_CEK_ALG "cekalg" +# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_KDF_PARAM_CONSTANT "constant" +# define OSSL_KDF_PARAM_DATA "data" +# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean" +# define OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KDF_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_KDF_PARAM_FIPS_EMS_CHECK "ems_check" +# define OSSL_KDF_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy" +# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce" +# define OSSL_KDF_PARAM_INFO "info" +# define OSSL_KDF_PARAM_ITER "iter" +# define OSSL_KDF_PARAM_KBKDF_R "r" +# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" +# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" +# define OSSL_KDF_PARAM_KEY "key" +# define OSSL_KDF_PARAM_LABEL "label" +# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_KDF_PARAM_MAC_SIZE "maclen" +# define OSSL_KDF_PARAM_MODE "mode" +# define OSSL_KDF_PARAM_PASSWORD "pass" +# define OSSL_KDF_PARAM_PKCS12_ID "id" +# define OSSL_KDF_PARAM_PKCS5 "pkcs5" +# define OSSL_KDF_PARAM_PREFIX "prefix" +# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_KDF_PARAM_SALT "salt" +# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" +# define OSSL_KDF_PARAM_SCRYPT_N "n" +# define OSSL_KDF_PARAM_SCRYPT_P "p" +# define OSSL_KDF_PARAM_SCRYPT_R "r" +# define OSSL_KDF_PARAM_SECRET "secret" +# define OSSL_KDF_PARAM_SEED "seed" +# define OSSL_KDF_PARAM_SIZE "size" +# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" +# define OSSL_KDF_PARAM_SSHKDF_TYPE "type" +# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" +# define OSSL_KDF_PARAM_THREADS "threads" +# define OSSL_KDF_PARAM_UKM "ukm" +# define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info" +# define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info" +# define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info" +# define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo" +# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_KEM_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KEM_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KEM_PARAM_IKME "ikme" +# define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING "hs_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm" +# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len" +# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" +# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_MAC_PARAM_CUSTOM "custom" +# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" +# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" +# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" +# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" +# define OSSL_MAC_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_MAC_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_MAC_PARAM_FIPS_NO_SHORT_MAC OSSL_PROV_PARAM_NO_SHORT_MAC +# define OSSL_MAC_PARAM_IV "iv" +# define OSSL_MAC_PARAM_KEY "key" +# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_MAC_PARAM_SALT "salt" +# define OSSL_MAC_PARAM_SIZE "size" +# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" +# define OSSL_MAC_PARAM_XOF "xof" +# define OSSL_OBJECT_PARAM_DATA "data" +# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" +# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" +# define OSSL_OBJECT_PARAM_DESC "desc" +# define OSSL_OBJECT_PARAM_INPUT_TYPE "input-type" +# define OSSL_OBJECT_PARAM_REFERENCE "reference" +# define OSSL_OBJECT_PARAM_TYPE "type" +# define OSSL_PASSPHRASE_PARAM_INFO "info" +# define OSSL_PKEY_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_PKEY_PARAM_BITS "bits" +# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" +# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm" +# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" +# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +# define OSSL_PKEY_PARAM_DIST_ID "distid" +# define OSSL_PKEY_PARAM_EC_A "a" +# define OSSL_PKEY_PARAM_EC_B "b" +# define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3" +# define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp" +# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" +# define OSSL_PKEY_PARAM_EC_ENCODING "encoding" +# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +# define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_PARAM_EC_ORDER "order" +# define OSSL_PKEY_PARAM_EC_P "p" +# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +# define OSSL_PKEY_PARAM_EC_PUB_X "qx" +# define OSSL_PKEY_PARAM_EC_PUB_Y "qy" +# define OSSL_PKEY_PARAM_EC_SEED "seed" +# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE +# define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +# define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_FFC_G "g" +# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +# define OSSL_PKEY_PARAM_FFC_H "hindex" +# define OSSL_PKEY_PARAM_FFC_P "p" +# define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +# define OSSL_PKEY_PARAM_FFC_Q "q" +# define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +# define OSSL_PKEY_PARAM_FFC_SEED "seed" +# define OSSL_PKEY_PARAM_FFC_TYPE "type" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +# define OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK "digest-check" +# define OSSL_PKEY_PARAM_FIPS_KEY_CHECK "key-check" +# define OSSL_PKEY_PARAM_FIPS_SIGN_CHECK "sign-check" +# define OSSL_PKEY_PARAM_GROUP_NAME "group" +# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" +# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +# define OSSL_PKEY_PARAM_MAX_SIZE "max-size" +# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +# define OSSL_PKEY_PARAM_ML_DSA_INPUT_FORMATS "ml-dsa.input_formats" +# define OSSL_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS "ml-dsa.output_formats" +# define OSSL_PKEY_PARAM_ML_DSA_PREFER_SEED "ml-dsa.prefer_seed" +# define OSSL_PKEY_PARAM_ML_DSA_RETAIN_SEED "ml-dsa.retain_seed" +# define OSSL_PKEY_PARAM_ML_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE "ml-kem.import_pct_type" +# define OSSL_PKEY_PARAM_ML_KEM_INPUT_FORMATS "ml-kem.input_formats" +# define OSSL_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS "ml-kem.output_formats" +# define OSSL_PKEY_PARAM_ML_KEM_PREFER_SEED "ml-kem.prefer_seed" +# define OSSL_PKEY_PARAM_ML_KEM_RETAIN_SEED "ml-kem.retain_seed" +# define OSSL_PKEY_PARAM_ML_KEM_SEED "seed" +# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +# define OSSL_PKEY_PARAM_PRIV_KEY "priv" +# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_PUB_KEY "pub" +# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9" +# define OSSL_PKEY_PARAM_RSA_D "d" +# define OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ "rsa-derive-from-pq" +# define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_RSA_E "e" +# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1" +# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10" +# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2" +# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3" +# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4" +# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5" +# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6" +# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7" +# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8" +# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9" +# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1" +# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10" +# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2" +# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3" +# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4" +# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5" +# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6" +# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7" +# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8" +# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9" +# define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC +# define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_PKEY_PARAM_RSA_N "n" +# define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" +# define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1" +# define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2" +# define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1" +# define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2" +# define OSSL_PKEY_PARAM_RSA_TEST_XP "xp" +# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" +# define OSSL_PKEY_PARAM_SLH_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG +# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +# define OSSL_PROV_PARAM_BUILDINFO "buildinfo" +# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" +# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" +# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" +# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" +# define OSSL_PROV_PARAM_DSA_SIGN_DISABLED "dsa-sign-disabled" +# define OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK "ecdh-cofactor-check" +# define OSSL_PROV_PARAM_HKDF_DIGEST_CHECK "hkdf-digest-check" +# define OSSL_PROV_PARAM_HKDF_KEY_CHECK "hkdf-key-check" +# define OSSL_PROV_PARAM_HMAC_KEY_CHECK "hmac-key-check" +# define OSSL_PROV_PARAM_KBKDF_KEY_CHECK "kbkdf-key-check" +# define OSSL_PROV_PARAM_KMAC_KEY_CHECK "kmac-key-check" +# define OSSL_PROV_PARAM_NAME "name" +# define OSSL_PROV_PARAM_NO_SHORT_MAC "no-short-mac" +# define OSSL_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK "pbkdf2-lower-bound-check" +# define OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED "rsa-pkcs15-pad-disabled" +# define OSSL_PROV_PARAM_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED "rsa-sign-x931-pad-disabled" +# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" +# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" +# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" +# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" +# define OSSL_PROV_PARAM_SIGNATURE_DIGEST_CHECK "signature-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_DIGEST_CHECK "sshkdf-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_KEY_CHECK "sshkdf-key-check" +# define OSSL_PROV_PARAM_SSKDF_DIGEST_CHECK "sskdf-digest-check" +# define OSSL_PROV_PARAM_SSKDF_KEY_CHECK "sskdf-key-check" +# define OSSL_PROV_PARAM_STATUS "status" +# define OSSL_PROV_PARAM_TDES_ENCRYPT_DISABLED "tdes-encrypt-disabled" +# define OSSL_PROV_PARAM_TLS13_KDF_DIGEST_CHECK "tls13-kdf-digest-check" +# define OSSL_PROV_PARAM_TLS13_KDF_KEY_CHECK "tls13-kdf-key-check" +# define OSSL_PROV_PARAM_TLS1_PRF_DIGEST_CHECK "tls1-prf-digest-check" +# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" +# define OSSL_PROV_PARAM_TLS1_PRF_KEY_CHECK "tls1-prf-key-check" +# define OSSL_PROV_PARAM_VERSION "version" +# define OSSL_PROV_PARAM_X942KDF_KEY_CHECK "x942kdf-key-check" +# define OSSL_PROV_PARAM_X963KDF_DIGEST_CHECK "x963kdf-digest-check" +# define OSSL_PROV_PARAM_X963KDF_KEY_CHECK "x963kdf-key-check" +# define OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_RAND_PARAM_GENERATE "generate" +# define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +# define OSSL_RAND_PARAM_STATE "state" +# define OSSL_RAND_PARAM_STRENGTH "strength" +# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" +# define OSSL_SIGNATURE_PARAM_ADD_RANDOM "additional-random" +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID OSSL_PKEY_PARAM_ALGORITHM_ID +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string" +# define OSSL_SIGNATURE_PARAM_DETERMINISTIC "deterministic" +# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE +# define OSSL_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_SIGNATURE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_CHECK OSSL_PKEY_PARAM_FIPS_SIGN_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK "sign-x931-pad-check" +# define OSSL_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE "verify-message" +# define OSSL_SIGNATURE_PARAM_INSTANCE "instance" +# define OSSL_SIGNATURE_PARAM_KAT "kat" +# define OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING "message-encoding" +# define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_SIGNATURE_PARAM_MU "mu" +# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type" +# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +# define OSSL_SIGNATURE_PARAM_SIGNATURE "signature" +# define OSSL_SIGNATURE_PARAM_TEST_ENTROPY "test-entropy" +# define OSSL_SKEY_PARAM_KEY_LENGTH "key-length" +# define OSSL_SKEY_PARAM_RAW_BYTES "raw-bytes" +# define OSSL_STORE_PARAM_ALIAS "alias" +# define OSSL_STORE_PARAM_DIGEST "digest" +# define OSSL_STORE_PARAM_EXPECT "expect" +# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" +# define OSSL_STORE_PARAM_INPUT_TYPE "input-type" +# define OSSL_STORE_PARAM_ISSUER "name" +# define OSSL_STORE_PARAM_PROPERTIES "properties" +# define OSSL_STORE_PARAM_SERIAL "serial" +# define OSSL_STORE_PARAM_SUBJECT "subject" + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/crmf.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/crmf.h index 71b747ed33d239..4bf550fd47daa9 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/crmf.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/crmf.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/crmf.h.in * - * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -26,6 +26,7 @@ # include # include # include /* for GENERAL_NAME etc. */ +# include /* explicit #includes not strictly needed since implied by the above: */ # include @@ -43,9 +44,12 @@ extern "C" { # define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 # define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 - typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) + +typedef struct ossl_crmf_encryptedkey_st OSSL_CRMF_ENCRYPTEDKEY; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDKEY) + typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) @@ -77,6 +81,36 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) #define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; +void OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(OSSL_CRMF_ATTRIBUTETYPEANDVALUE *v); +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value(sk, idx) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new(cmp) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_null() ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (n)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete(sk, i) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (i))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete_ptr(sk, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_shift(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk),ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), (idx)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set(sk, idx, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), pnum) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup(sk) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) + + typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER) typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY; @@ -118,6 +152,7 @@ typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO) typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTTEMPLATE) typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS) @@ -198,12 +233,14 @@ int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, int rid, int acceptRAVerified, OSSL_LIB_CTX *libctx, const char *propq); OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); -const ASN1_INTEGER -*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const ASN1_INTEGER +*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); X509_EXTENSIONS *OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME @@ -215,10 +252,24 @@ int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl, const X509_NAME *subject, const X509_NAME *issuer, const ASN1_INTEGER *serial); -X509 -*OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, - OSSL_LIB_CTX *libctx, const char *propq, - EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDKEY_get1_encCert(const OSSL_CRMF_ENCRYPTEDKEY *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, unsigned int flags); +unsigned char +*OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *enc, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, int *outlen); +EVP_PKEY *OSSL_CRMF_ENCRYPTEDKEY_get1_pkey(const OSSL_CRMF_ENCRYPTEDKEY *encryptedKey, + X509_STORE *ts, STACK_OF(X509) *extra, EVP_PKEY *pkey, + X509 *cert, ASN1_OCTET_STRING *secret, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSG_centralkeygen_requested(const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr); +# ifndef OPENSSL_NO_CMS +OSSL_CRMF_ENCRYPTEDKEY *OSSL_CRMF_ENCRYPTEDKEY_init_envdata(CMS_EnvelopedData *envdata); +# endif # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/crypto.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/crypto.h index 3f40be6d8c61d5..fd2cfd3e5a9ac4 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/crypto.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/crypto.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/crypto.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -85,9 +85,15 @@ int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock); void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock); int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_add64(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_and(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, CRYPTO_RWLOCK *lock); int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, CRYPTO_RWLOCK *lock); /* No longer needed, so this is a no-op */ #define OPENSSL_malloc_init() while(0) continue @@ -96,6 +102,9 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_zalloc(num) \ CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_aligned_alloc(num, alignment, freeptr) \ + CRYPTO_aligned_alloc(num, alignment, freeptr, \ + OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_realloc(addr, num) \ CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_clear_realloc(addr, old_num, num) \ @@ -124,6 +133,7 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); size_t OPENSSL_strnlen(const char *str, size_t maxlen); +int OPENSSL_strtoul(const char *str, char **endptr, int base, unsigned long *num); int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength, const unsigned char *buf, size_t buflen, const char sep); @@ -160,6 +170,7 @@ const char *OpenSSL_version(int type); # define OPENSSL_FULL_VERSION_STRING 7 # define OPENSSL_MODULES_DIR 8 # define OPENSSL_CPU_INFO 9 +# define OPENSSL_WINCTX 10 const char *OPENSSL_info(int type); /* @@ -174,6 +185,7 @@ const char *OPENSSL_info(int type); # define OPENSSL_INFO_LIST_SEPARATOR 1006 # define OPENSSL_INFO_SEED_SOURCE 1007 # define OPENSSL_INFO_CPU_SETTINGS 1008 +# define OPENSSL_INFO_WINDOWS_CONTEXT 1009 int OPENSSL_issetugid(void); @@ -341,11 +353,14 @@ void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn, CRYPTO_realloc_fn *realloc_fn, CRYPTO_free_fn *free_fn); -void *CRYPTO_malloc(size_t num, const char *file, int line); -void *CRYPTO_zalloc(size_t num, const char *file, int line); -void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); -char *CRYPTO_strdup(const char *str, const char *file, int line); -char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc(size_t num, size_t align, + void **freeptr, const char *file, + int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strdup(const char *str, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); void CRYPTO_free(void *ptr, const char *file, int line); void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line); void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); @@ -354,8 +369,8 @@ void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, int CRYPTO_secure_malloc_init(size_t sz, size_t minsize); int CRYPTO_secure_malloc_done(void); -void *CRYPTO_secure_malloc(size_t num, const char *file, int line); -void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); void CRYPTO_secure_free(void *ptr, const char *file, int line); void CRYPTO_secure_clear_free(void *ptr, size_t num, const char *file, int line); @@ -376,6 +391,9 @@ void OPENSSL_cleanse(void *ptr, size_t len); # define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */ # define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */ +/* max allowed length for value of OPENSSL_MALLOC_FAILURES env var. */ +# define CRYPTO_MEM_CHECK_MAX_FS 256 + void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); # ifndef OPENSSL_NO_DEPRECATED_3_0 # define OPENSSL_mem_debug_push(info) \ @@ -551,6 +569,13 @@ int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file); void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); +int OSSL_LIB_CTX_get_conf_diagnostics(OSSL_LIB_CTX *ctx); +void OSSL_LIB_CTX_set_conf_diagnostics(OSSL_LIB_CTX *ctx, int value); + +void OSSL_sleep(uint64_t millis); + + +void *OSSL_LIB_CTX_get_data(OSSL_LIB_CTX *ctx, int index); # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/ct.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/ct.h index b6dd8c3547710a..e6dd1192a4e0b3 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/ct.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/ct.h @@ -133,7 +133,7 @@ typedef enum { */ CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); - + /* * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library * context and property query string is used. diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/err.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/err.h index 2abf2483488181..daca18e7b757b0 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/err.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/err.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -372,7 +372,7 @@ typedef struct ERR_string_data_st { } ERR_STRING_DATA; DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); -#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp))) +#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp)), lh_ERR_STRING_DATA_hash_thunk, lh_ERR_STRING_DATA_comp_thunk, lh_ERR_STRING_DATA_doall_thunk, lh_ERR_STRING_DATA_doall_arg_thunk)) #define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) @@ -496,6 +496,14 @@ int ERR_get_next_error_library(void); int ERR_set_mark(void); int ERR_pop_to_mark(void); int ERR_clear_last_mark(void); +int ERR_count_to_mark(void); +int ERR_pop(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); #ifdef __cplusplus } diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/fipskey.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/fipskey.h index 42ba014b313ba8..929db18c678364 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/fipskey.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/fipskey.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/fipskey.h.in * - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -29,6 +29,11 @@ extern "C" { */ #define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" +/* + * The FIPS provider vendor name, as a string. + */ +#define FIPS_VENDOR "OpenSSL FIPS Provider" + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/lhash.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/lhash.h index 39dd6254acdeb6..62c55b20fd9716 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/lhash.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/lhash.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -24,6 +24,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -31,9 +34,13 @@ extern "C" { typedef struct lhash_node_st OPENSSL_LH_NODE; typedef int (*OPENSSL_LH_COMPFUNC) (const void *, const void *); +typedef int (*OPENSSL_LH_COMPFUNCTHUNK) (const void *, const void *, OPENSSL_LH_COMPFUNC cfn); typedef unsigned long (*OPENSSL_LH_HASHFUNC) (const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNCTHUNK) (const void *, OPENSSL_LH_HASHFUNC hfn); typedef void (*OPENSSL_LH_DOALL_FUNC) (void *); +typedef void (*OPENSSL_LH_DOALL_FUNC_THUNK) (void *, OPENSSL_LH_DOALL_FUNC doall); typedef void (*OPENSSL_LH_DOALL_FUNCARG) (void *, void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG_THUNK) (void *, void *, OPENSSL_LH_DOALL_FUNCARG doall); typedef struct lhash_st OPENSSL_LHASH; /* @@ -79,26 +86,40 @@ typedef struct lhash_st OPENSSL_LHASH; int OPENSSL_LH_error(OPENSSL_LHASH *lh); OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +OPENSSL_LHASH *OPENSSL_LH_set_thunks(OPENSSL_LHASH *lh, + OPENSSL_LH_HASHFUNCTHUNK hw, + OPENSSL_LH_COMPFUNCTHUNK cw, + OPENSSL_LH_DOALL_FUNC_THUNK daw, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw); void OPENSSL_LH_free(OPENSSL_LHASH *lh); void OPENSSL_LH_flush(OPENSSL_LHASH *lh); void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); -void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg_thunk(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw, + OPENSSL_LH_DOALL_FUNCARG fn, void *arg); + unsigned long OPENSSL_LH_strhash(const char *c); unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); # ifndef OPENSSL_NO_STDIO -void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# endif +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # endif -void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define _LHASH OPENSSL_LHASH @@ -129,110 +150,190 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); /* Helper macro for internal use */ # define DEFINE_LHASH_OF_INTERNAL(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ typedef void (*lh_##type##_doallfunc)(type *a); \ - static ossl_unused ossl_inline type *ossl_check_##type##_lh_plain_type(type *ptr) \ + static ossl_inline unsigned long lh_##type##_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static ossl_inline int lh_##type##_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_inline void lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_inline void lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline type *\ + ossl_check_##type##_lh_plain_type(type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const type *ossl_check_const_##type##_lh_plain_type(const type *ptr) \ + static ossl_unused ossl_inline const type * \ + ossl_check_const_##type##_lh_plain_type(const type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const OPENSSL_LHASH *ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline const OPENSSL_LHASH * \ + ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ { \ return (const OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LHASH *ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline OPENSSL_LHASH * \ + ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ { \ return (OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ + static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC \ + ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ { \ return (OPENSSL_LH_COMPFUNC)cmp; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ + static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC \ + ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ { \ return (OPENSSL_LH_HASHFUNC)hfn; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ + static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC \ + ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ { \ return (OPENSSL_LH_DOALL_FUNC)dfn; \ } \ LHASH_OF(type) -# define DEFINE_LHASH_OF(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ - static ossl_unused ossl_inline LHASH_OF(type) *lh_##type##_new(unsigned long (*hfn)(const type *), \ - int (*cfn)(const type *, const type *)) \ +# ifndef OPENSSL_NO_DEPRECATED_3_1 +# define DEFINE_LHASH_OF_DEPRECATED(type) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ - return (LHASH_OF(type) *) \ - OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ - static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } +# else +# define DEFINE_LHASH_OF_DEPRECATED(type) +# endif + +# define DEFINE_LHASH_OF_EX(type) \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ + static unsigned long \ + lh_##type##_hfn_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static int lh_##type##_cfn_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_free(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_flush(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_flush(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ { \ return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline int \ + lh_##type##_error(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_num_items(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_get_down_load(LHASH_OF(type) *lh) \ { \ - OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ { \ - OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ } \ - static ossl_unused ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ { \ - OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ { \ - return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ } \ - static ossl_unused ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall(LHASH_OF(type) *lh, void (*doall)(type *)) \ { \ - OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ - void (*doall)(type *)) \ + static ossl_unused ossl_inline LHASH_OF(type) * \ + lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ { \ - OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \ + lh_##type##_hfn_thunk, lh_##type##_cfn_thunk, \ + lh_##type##_doall_thunk, \ + lh_##type##_doall_arg_thunk); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall_arg(LHASH_OF(type) *lh, \ - void (*doallarg)(type *, void *), \ - void *arg) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg(LHASH_OF(type) *lh, \ + void (*doallarg)(type *, void *), void *arg) \ { \ OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ } \ LHASH_OF(type) +# define DEFINE_LHASH_OF(type) \ + DEFINE_LHASH_OF_EX(type); \ + DEFINE_LHASH_OF_DEPRECATED(type) \ + LHASH_OF(type) + #define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ int_implement_lhash_doall(type, argtype, const type) @@ -240,17 +341,26 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); int_implement_lhash_doall(type, argtype, type) #define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype##_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG fn) \ + { \ + void (*fn_conv)(cbargtype *, argtype *) = (void (*)(cbargtype *, argtype *))fn; \ + fn_conv((cbargtype *)node, (argtype *)arg); \ + } \ static ossl_unused ossl_inline void \ lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ void (*fn)(cbargtype *, argtype *), \ argtype *arg) \ { \ - OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNCARG)fn, (void *)arg); \ + OPENSSL_LH_doall_arg_thunk((OPENSSL_LHASH *)lh, \ + lh_##type##_doall_##argtype##_thunk, \ + (OPENSSL_LH_DOALL_FUNCARG)fn, \ + (void *)arg); \ } \ LHASH_OF(type) DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); -#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp)), lh_OPENSSL_STRING_hash_thunk, lh_OPENSSL_STRING_comp_thunk, lh_OPENSSL_STRING_doall_thunk, lh_OPENSSL_STRING_doall_arg_thunk)) #define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) @@ -265,7 +375,7 @@ DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); #define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) #define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); -#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp)), lh_OPENSSL_CSTRING_hash_thunk, lh_OPENSSL_CSTRING_comp_thunk, lh_OPENSSL_CSTRING_doall_thunk, lh_OPENSSL_CSTRING_doall_arg_thunk)) #define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/opensslv.h index 5fb5bc63056fe0..71a357701fd5e3 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/opensslv.h @@ -28,8 +28,8 @@ extern "C" { * These macros express version number MAJOR.MINOR.PATCH exactly */ # define OPENSSL_VERSION_MAJOR 3 -# define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 17 +# define OPENSSL_VERSION_MINOR 5 +# define OPENSSL_VERSION_PATCH 2 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.17" -# define OPENSSL_FULL_VERSION_STR "3.0.17" +# define OPENSSL_VERSION_STR "3.5.2" +# define OPENSSL_FULL_VERSION_STR "3.5.2" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "1 Jul 2025" +# define OPENSSL_RELEASE_DATE "5 Aug 2025" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.17 1 Jul 2025" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.2 5 Aug 2025" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/pkcs12.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/pkcs12.h index c5e0cab06491ec..0809645dad0bbf 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/pkcs12.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/pkcs12.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/pkcs12.h.in * - * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -41,6 +44,7 @@ extern "C" { # define PKCS12_MAC_KEY_LENGTH 20 +/* The macro is expected to be used only internally. Kept for backwards compatibility. */ # define PKCS12_SALT_LEN 8 /* It's not clear if these are actually needed... */ @@ -130,7 +134,9 @@ int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); const STACK_OF(PKCS12_SAFEBAG) * PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); @@ -218,6 +224,7 @@ ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); const STACK_OF(X509_ATTRIBUTE) * PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, const char *pass, int passlen, const unsigned char *in, int inlen, @@ -285,6 +292,9 @@ int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, unsigned char *salt, int saltlen, int iter, const EVP_MD *md_type); +int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type, const char *prf_md_name); int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, int saltlen, const EVP_MD *md_type); unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, @@ -305,6 +315,7 @@ DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) void PKCS12_PBE_add(void); int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype); @@ -312,6 +323,11 @@ PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype, OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/pkcs7.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/pkcs7.h index 0ce79bf4fa160e..fa68462aff973b 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/pkcs7.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/pkcs7.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/pkcs7.h.in * - * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -28,6 +28,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -131,8 +134,8 @@ SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INF typedef struct pkcs7_signed_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; struct pkcs7_st *contents; } PKCS7_SIGNED; @@ -158,8 +161,8 @@ typedef struct pkcs7_enveloped_st { typedef struct pkcs7_signedandenveloped_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; PKCS7_ENC_CONTENT *enc_data; STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; @@ -200,7 +203,7 @@ typedef struct pkcs7_st { /* NID_pkcs7_data */ ASN1_OCTET_STRING *data; /* NID_pkcs7_signed */ - PKCS7_SIGNED *sign; + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ /* NID_pkcs7_enveloped */ PKCS7_ENVELOPE *enveloped; /* NID_pkcs7_signedAndEnveloped */ @@ -341,13 +344,13 @@ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, const EVP_MD *dgst); int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); -int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); -int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); int PKCS7_content_new(PKCS7 *p7, int nid); int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, - X509 *x509); + X509 *signer); BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/ssl.h index 3df725c56d6c5e..7e3d89c7ef3dc9 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/ssl.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/ssl.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/ssl.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -24,6 +24,7 @@ # endif # include +# include # include # include # include @@ -42,6 +43,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -231,10 +235,8 @@ typedef struct ssl_cipher_st SSL_CIPHER; typedef struct ssl_session_st SSL_SESSION; typedef struct tls_sigalgs_st TLS_SIGALGS; typedef struct ssl_conf_ctx_st SSL_CONF_CTX; -typedef struct ssl_comp_st SSL_COMP; STACK_OF(SSL_CIPHER); -STACK_OF(SSL_COMP); /* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ typedef struct srtp_protection_profile_st { @@ -278,28 +280,31 @@ typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, /* Extension context codes */ /* This extension is only allowed in TLS */ -#define SSL_EXT_TLS_ONLY 0x0001 +#define SSL_EXT_TLS_ONLY 0x00001 /* This extension is only allowed in DTLS */ -#define SSL_EXT_DTLS_ONLY 0x0002 +#define SSL_EXT_DTLS_ONLY 0x00002 /* Some extensions may be allowed in DTLS but we don't implement them for it */ -#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 /* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ -#define SSL_EXT_SSL3_ALLOWED 0x0008 +#define SSL_EXT_SSL3_ALLOWED 0x00008 /* Extension is only defined for TLS1.2 and below */ -#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 /* Extension is only defined for TLS1.3 and above */ -#define SSL_EXT_TLS1_3_ONLY 0x0020 +#define SSL_EXT_TLS1_3_ONLY 0x00020 /* Ignore this extension during parsing if we are resuming */ -#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 -#define SSL_EXT_CLIENT_HELLO 0x0080 +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 /* Really means TLS1.2 or below */ -#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 -#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 -#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 -#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 -#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 -#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 -#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 /* Typedefs for handling custom extensions */ @@ -404,7 +409,7 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); */ # define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_BIT(22) /* - * If set, a server will allow a client to issue a SSLv3.0 version + * If set, a server will allow a client to issue an SSLv3.0 version * number as latest version supported in the premaster secret, even when * TLSv1.0 (version 3.1) was announced in the client hello. Normally * this is forbidden to prevent version rollback attacks. @@ -430,6 +435,19 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); * interoperability with CryptoPro CSP 3.x */ # define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +# define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +# define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) + /* Enable KTLS TX zerocopy on Linux */ +# define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) + +#define SSL_OP_PREFER_NO_DHE_KEX SSL_OP_BIT(35) /* * Option "collections." @@ -574,6 +592,8 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); # define CERT_PKEY_CERT_TYPE 0x400 /* Cert chain suitable to Suite B */ # define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +# define CERT_PKEY_RPK 0x1000 # define SSL_CONF_FLAG_CMDLINE 0x1 # define SSL_CONF_FLAG_FILE 0x2 @@ -965,6 +985,7 @@ uint32_t SSL_get_recv_max_early_data(const SSL *s); # include /* This is mostly sslv3 with a few tweaks */ # include /* Datagram TLS */ # include /* Support for the use_srtp extension */ +# include #ifdef __cplusplus extern "C" { @@ -1000,32 +1021,6 @@ SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) #define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) #define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) #define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) -SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) -#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) -#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) -#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) -#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) -#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) -#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) -#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) -#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) -#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) -#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) -#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) /* compatibility */ @@ -1066,6 +1061,7 @@ typedef enum { DTLS_ST_CR_HELLO_VERIFY_REQUEST, TLS_ST_CR_SRVR_HELLO, TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, TLS_ST_CR_CERT_STATUS, TLS_ST_CR_KEY_EXCH, TLS_ST_CR_CERT_REQ, @@ -1075,6 +1071,7 @@ typedef enum { TLS_ST_CR_FINISHED, TLS_ST_CW_CLNT_HELLO, TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, TLS_ST_CW_KEY_EXCH, TLS_ST_CW_CERT_VRFY, TLS_ST_CW_CHANGE, @@ -1085,10 +1082,12 @@ typedef enum { DTLS_ST_SW_HELLO_VERIFY_REQUEST, TLS_ST_SW_SRVR_HELLO, TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, TLS_ST_SW_KEY_EXCH, TLS_ST_SW_CERT_REQ, TLS_ST_SW_SRVR_DONE, TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, TLS_ST_SR_KEY_EXCH, TLS_ST_SR_CERT_VRFY, TLS_ST_SR_NEXT_PROTO, @@ -1380,9 +1379,13 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_CTRL_GET_SIGNATURE_NID 132 # define SSL_CTRL_GET_TMP_KEY 133 # define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +# define SSL_CTRL_GET_IANA_GROUPS 135 # define SSL_CTRL_SET_RETRY_VERIFY 136 # define SSL_CTRL_GET_VERIFY_CERT_STORE 137 # define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +# define SSL_CTRL_GET0_IMPLEMENTED_GROUPS 139 +# define SSL_CTRL_GET_SIGNATURE_NAME 140 +# define SSL_CTRL_GET_PEER_SIGNATURE_NAME 141 # define SSL_CERT_SET_FIRST 1 # define SSL_CERT_SET_NEXT 2 # define SSL_CERT_SET_SERVER 3 @@ -1485,10 +1488,15 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get1_groups(s, glist) \ SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_IANA_GROUPS,0,(uint16_t **)(plst)) # define SSL_CTX_set1_groups(ctx, glist, glistlen) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) # define SSL_CTX_set1_groups_list(ctx, s) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s)) +# define SSL_CTX_get0_implemented_groups(ctx, all, out) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET0_IMPLEMENTED_GROUPS, all, \ + (STACK_OF(OPENSSL_CSTRING) *)(out)) # define SSL_set1_groups(s, glist, glistlen) \ SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist)) # define SSL_set1_groups_list(s, str) \ @@ -1520,8 +1528,12 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) (char *)(clist)) # define SSL_set1_client_certificate_types(s, clist, clistlen) \ SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist)) +# define SSL_get0_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn) +# define SSL_get0_peer_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_peer_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) # define SSL_get_peer_tmp_key(s, pk) \ @@ -1549,6 +1561,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get_max_proto_version(s) \ SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +const char *SSL_get0_group_name(SSL *s); const char *SSL_group_to_name(SSL *s, int id); /* Backwards compatibility, original 1.1.0 names */ @@ -1613,7 +1626,11 @@ void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); __owur int SSL_want(const SSL *s); __owur int SSL_clear(SSL *s); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()") void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); +#endif +void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm); __owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); __owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); @@ -1725,13 +1742,21 @@ __owur const char *SSL_state_string(const SSL *s); __owur const char *SSL_rstate_string(const SSL *s); __owur const char *SSL_state_string_long(const SSL *s); __owur const char *SSL_rstate_string_long(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_get_time_ex()") __owur long SSL_SESSION_get_time(const SSL_SESSION *s); +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_set_time_ex()") __owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +#endif __owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); __owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); __owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); __owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); +__owur time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s); +__owur time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t); + __owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); __owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, @@ -1783,6 +1808,9 @@ __owur int SSL_has_matching_session_id(const SSL *s, unsigned int id_len); SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); # ifdef OPENSSL_X509_H __owur X509 *SSL_get0_peer_certificate(const SSL *s); @@ -1840,6 +1868,8 @@ __owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, SSL *SSL_new(SSL_CTX *ctx); int SSL_up_ref(SSL *s); int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); __owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, unsigned int sid_ctx_len); @@ -1848,8 +1878,8 @@ __owur int SSL_set_purpose(SSL *ssl, int purpose); __owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); __owur int SSL_set_trust(SSL *ssl, int trust); -__owur int SSL_set1_host(SSL *s, const char *hostname); -__owur int SSL_add1_host(SSL *s, const char *hostname); +__owur int SSL_set1_host(SSL *s, const char *host); +__owur int SSL_add1_host(SSL *s, const char *host); __owur const char *SSL_get0_peername(SSL *s); void SSL_set_hostflags(SSL *s, unsigned int flags); @@ -1924,6 +1954,11 @@ OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg); void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, void *arg); +typedef int (*SSL_new_pending_conn_cb_fn) (SSL_CTX *ctx, SSL *new_ssl, + void *arg); +void SSL_CTX_set_new_pending_conn_cb(SSL_CTX *c, SSL_new_pending_conn_cb_fn cb, + void *arg); + int SSL_client_hello_isv2(SSL *s); unsigned int SSL_client_hello_get0_legacy_version(SSL *s); size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); @@ -1932,6 +1967,8 @@ size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); size_t SSL_client_hello_get0_compression_methods(SSL *s, const unsigned char **out); int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); int SSL_client_hello_get0_ext(SSL *s, unsigned int type, const unsigned char **out, size_t *outlen); @@ -1978,6 +2015,12 @@ long SSL_callback_ctrl(SSL *, int, void (*)(void)); long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); +# define SSL_WRITE_FLAG_CONCLUDE (1U << 0) + +__owur int SSL_write_ex2(SSL *s, const void *buf, size_t num, + uint64_t flags, + size_t *written); + # define SSL_EARLY_DATA_NOT_SENT 0 # define SSL_EARLY_DATA_REJECTED 1 # define SSL_EARLY_DATA_ACCEPTED 2 @@ -1986,6 +2029,7 @@ __owur int SSL_get_early_data_status(const SSL *s); __owur int SSL_get_error(const SSL *s, int ret_code); __owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); /* This sets the 'default' SSL version that SSL_new() will create */ # ifndef OPENSSL_NO_DEPRECATED_3_0 @@ -2281,6 +2325,8 @@ void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); +int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size, + size_t hs_block_size); int SSL_set_record_padding_callback(SSL *ssl, size_t (*cb) (SSL *ssl, int type, @@ -2288,12 +2334,255 @@ int SSL_set_record_padding_callback(SSL *ssl, void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); void *SSL_get_record_padding_callback_arg(const SSL *ssl); int SSL_set_block_padding(SSL *ssl, size_t block_size); - +int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size, + size_t hs_block_size); int SSL_set_num_tickets(SSL *s, size_t num_tickets); size_t SSL_get_num_tickets(const SSL *s); int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +__owur int SSL_is_listener(SSL *ssl); +__owur SSL *SSL_get0_listener(SSL *s); +#define SSL_LISTENER_FLAG_NO_VALIDATE (1UL << 1) +__owur SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags); +__owur SSL *SSL_new_listener_from(SSL *ssl, uint64_t flags); +__owur SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags); +#define SSL_ACCEPT_CONNECTION_NO_BLOCK (1UL << 0) +__owur SSL *SSL_accept_connection(SSL *ssl, uint64_t flags); +__owur size_t SSL_get_accept_connection_queue_len(SSL *ssl); +__owur int SSL_listen(SSL *ssl); + +__owur int SSL_is_domain(SSL *s); +__owur SSL *SSL_get0_domain(SSL *s); +__owur SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags); + +#define SSL_DOMAIN_FLAG_SINGLE_THREAD (1U << 0) +#define SSL_DOMAIN_FLAG_MULTI_THREAD (1U << 1) +#define SSL_DOMAIN_FLAG_THREAD_ASSISTED (1U << 2) +#define SSL_DOMAIN_FLAG_BLOCKING (1U << 3) +#define SSL_DOMAIN_FLAG_LEGACY_BLOCKING (1U << 4) + +__owur int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t domain_flags); +__owur int SSL_CTX_get_domain_flags(const SSL_CTX *ctx, uint64_t *domain_flags); +__owur int SSL_get_domain_flags(const SSL *ssl, uint64_t *domain_flags); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +# ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +# endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + +# define SSL_VALUE_CLASS_GENERIC 0 +# define SSL_VALUE_CLASS_FEATURE_REQUEST 1 +# define SSL_VALUE_CLASS_FEATURE_PEER_REQUEST 2 +# define SSL_VALUE_CLASS_FEATURE_NEGOTIATED 3 + +# define SSL_VALUE_NONE 0 +# define SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL 1 +# define SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL 2 +# define SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL 3 +# define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL 4 +# define SSL_VALUE_QUIC_IDLE_TIMEOUT 5 +# define SSL_VALUE_EVENT_HANDLING_MODE 6 +# define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7 +# define SSL_VALUE_STREAM_WRITE_BUF_USED 8 +# define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9 + +# define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0 +# define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1 +# define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT 2 + +int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v); +int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v); + +# define SSL_get_generic_value_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_set_generic_value_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_get_feature_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_set_feature_request_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_get_feature_peer_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, (id), (v)) +# define SSL_get_feature_negotiated_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_NEGOTIATED, (id), (v)) + +# define SSL_get_quic_stream_bidi_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_bidi_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, \ + (value)) + +# define SSL_get_event_handling_mode(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) +# define SSL_set_event_handling_mode(ssl, value) \ + SSL_set_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) + +# define SSL_get_stream_write_buf_size(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_SIZE, \ + (value)) +# define SSL_get_stream_write_buf_used(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_USED, \ + (value)) +# define SSL_get_stream_write_buf_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_AVAIL, \ + (value)) + +# define SSL_POLL_EVENT_NONE 0 + +# define SSL_POLL_EVENT_F (1U << 0) /* F (Failure) */ +# define SSL_POLL_EVENT_EL (1U << 1) /* EL (Exception on Listener) */ +# define SSL_POLL_EVENT_EC (1U << 2) /* EC (Exception on Conn) */ +# define SSL_POLL_EVENT_ECD (1U << 3) /* ECD (Exception on Conn Drained) */ +# define SSL_POLL_EVENT_ER (1U << 4) /* ER (Exception on Read) */ +# define SSL_POLL_EVENT_EW (1U << 5) /* EW (Exception on Write) */ +# define SSL_POLL_EVENT_R (1U << 6) /* R (Readable) */ +# define SSL_POLL_EVENT_W (1U << 7) /* W (Writable) */ +# define SSL_POLL_EVENT_IC (1U << 8) /* IC (Incoming Connection) */ +# define SSL_POLL_EVENT_ISB (1U << 9) /* ISB (Incoming Stream: Bidi) */ +# define SSL_POLL_EVENT_ISU (1U << 10) /* ISU (Incoming Stream: Uni) */ +# define SSL_POLL_EVENT_OSB (1U << 11) /* OSB (Outgoing Stream: Bidi) */ +# define SSL_POLL_EVENT_OSU (1U << 12) /* OSU (Outgoing Stream: Uni) */ + +# define SSL_POLL_EVENT_RW (SSL_POLL_EVENT_R | SSL_POLL_EVENT_W) +# define SSL_POLL_EVENT_RE (SSL_POLL_EVENT_R | SSL_POLL_EVENT_ER) +# define SSL_POLL_EVENT_WE (SSL_POLL_EVENT_W | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_RWE (SSL_POLL_EVENT_RE | SSL_POLL_EVENT_WE) +# define SSL_POLL_EVENT_E (SSL_POLL_EVENT_EL | SSL_POLL_EVENT_EC \ + | SSL_POLL_EVENT_ER | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_IS (SSL_POLL_EVENT_ISB | SSL_POLL_EVENT_ISU) +# define SSL_POLL_EVENT_ISE (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_EC) +# define SSL_POLL_EVENT_I (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_IC) +# define SSL_POLL_EVENT_OS (SSL_POLL_EVENT_OSB | SSL_POLL_EVENT_OSU) +# define SSL_POLL_EVENT_OSE (SSL_POLL_EVENT_OS | SSL_POLL_EVENT_EC) + +typedef struct ssl_poll_item_st { + BIO_POLL_DESCRIPTOR desc; + uint64_t events, revents; +} SSL_POLL_ITEM; + +# define SSL_POLL_FLAG_NO_HANDLE_EVENTS (1U << 0) + +__owur int SSL_poll(SSL_POLL_ITEM *items, + size_t num_items, + size_t stride, + const struct timeval *timeout, + uint64_t flags, + size_t *result_count); + +static ossl_inline ossl_unused BIO_POLL_DESCRIPTOR +SSL_as_poll_descriptor(SSL *s) +{ + BIO_POLL_DESCRIPTOR d; + + d.type = BIO_POLL_DESCRIPTOR_TYPE_SSL; + d.value.ssl = s; + return d; +} + # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define SSL_cache_hit(s) SSL_session_reused(s) # endif @@ -2593,6 +2882,51 @@ void SSL_set_allow_early_data_cb(SSL *s, const char *OSSL_default_cipher_list(void); const char *OSSL_default_ciphersuites(void); +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + +/* + * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used. + */ +# define OSSL_RECORD_PROTECTION_LEVEL_NONE 0 +# define OSSL_RECORD_PROTECTION_LEVEL_EARLY 1 +# define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE 2 +# define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3 + +int SSL_set_quic_tls_cbs(SSL *s, const OSSL_DISPATCH *qtdis, void *arg); +int SSL_set_quic_tls_transport_params(SSL *s, + const unsigned char *params, + size_t params_len); + +int SSL_set_quic_tls_early_data_enabled(SSL *s, int enabled); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/x509.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/x509.h index 1f7755e5b69c75..d013458c226461 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/x509.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/x509.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -40,6 +40,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -162,16 +165,24 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) # define X509_FILETYPE_ASN1 2 # define X509_FILETYPE_DEFAULT 3 -# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 -# define X509v3_KU_NON_REPUDIATION 0x0040 -# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 -# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 -# define X509v3_KU_KEY_AGREEMENT 0x0008 -# define X509v3_KU_KEY_CERT_SIGN 0x0004 -# define X509v3_KU_CRL_SIGN 0x0002 -# define X509v3_KU_ENCIPHER_ONLY 0x0001 -# define X509v3_KU_DECIPHER_ONLY 0x8000 -# define X509v3_KU_UNDEF 0xffff +/*- + * : + * The KeyUsage BITSTRING is treated as a little-endian integer, hence bit `0` + * is 0x80, while bit `7` is 0x01 (the LSB of the integer value), bit `8` is + * then the MSB of the second octet, or 0x8000. + */ +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 /* (0) */ +# define X509v3_KU_NON_REPUDIATION 0x0040 /* (1) */ +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 /* (2) */ +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 /* (3) */ +# define X509v3_KU_KEY_AGREEMENT 0x0008 /* (4) */ +# define X509v3_KU_KEY_CERT_SIGN 0x0004 /* (5) */ +# define X509v3_KU_CRL_SIGN 0x0002 /* (6) */ +# define X509v3_KU_ENCIPHER_ONLY 0x0001 /* (7) */ +# define X509v3_KU_DECIPHER_ONLY 0x8000 /* (8) */ +# ifndef OPENSSL_NO_DEPRECATED_3_4 +# define X509v3_KU_UNDEF 0xffff /* vestigial, not used */ +# endif struct X509_algor_st { ASN1_OBJECT *algorithm; @@ -462,7 +473,12 @@ typedef struct PBKDF2PARAM_st { X509_ALGOR *prf; } PBKDF2PARAM; -#ifndef OPENSSL_NO_SCRYPT +typedef struct { + X509_ALGOR *keyDerivationFunc; + X509_ALGOR *messageAuthScheme; +} PBMAC1PARAM; + +# ifndef OPENSSL_NO_SCRYPT typedef struct SCRYPT_PARAMS_st { ASN1_OCTET_STRING *salt; ASN1_INTEGER *costParameter; @@ -470,7 +486,7 @@ typedef struct SCRYPT_PARAMS_st { ASN1_INTEGER *parallelizationParameter; ASN1_INTEGER *keyLength; } SCRYPT_PARAMS; -#endif +# endif #ifdef __cplusplus } @@ -603,6 +619,8 @@ EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); # endif @@ -651,6 +669,8 @@ EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); DECLARE_ASN1_DUP_FUNCTION(X509) @@ -884,12 +904,12 @@ int X509_REQ_get_signature_nid(const X509_REQ *req); int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); -EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); int X509_REQ_extension_nid(int nid); int *X509_REQ_get_extension_nids(void); void X509_REQ_set_extension_nids(int *nids); -STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(OSSL_FUTURE_CONST X509_REQ *req); int X509_REQ_add_extensions_nid(X509_REQ *req, const STACK_OF(X509_EXTENSION) *exts, int nid); int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); @@ -950,13 +970,14 @@ X509_REVOKED_get0_extensions(const X509_REVOKED *r); X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); -int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); -int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey); +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); int X509_chain_check_suiteb(int *perror_depth, X509 *x, STACK_OF(X509) *chain, unsigned long flags); int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); @@ -1077,6 +1098,8 @@ X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, X509_EXTENSION *ex, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_extensions(STACK_OF(X509_EXTENSION) **target, + const STACK_OF(X509_EXTENSION) *exts); int X509_get_ext_count(const X509 *x); int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); @@ -1198,9 +1221,10 @@ X509 *X509_find_by_subject(STACK_OF(X509) *sk, const X509_NAME *name); DECLARE_ASN1_FUNCTIONS(PBEPARAM) DECLARE_ASN1_FUNCTIONS(PBE2PARAM) DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) -#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(PBMAC1PARAM) +# ifndef OPENSSL_NO_SCRYPT DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) -#endif +# endif int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, const unsigned char *salt, int saltlen); @@ -1237,6 +1261,7 @@ X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, int prf_nid, int keylen, OSSL_LIB_CTX *libctx); +PBKDF2PARAM *PBMAC1_get1_pbkdf2_param(const X509_ALGOR *macalg); /* PKCS#8 utilities */ DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) @@ -1262,6 +1287,8 @@ int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len); +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, int ptype, void *pval, unsigned char *penc, int penclen); diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/x509_acert.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/x509_acert.h new file mode 100644 index 00000000000000..9dde625677f9a9 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/x509_acert.h @@ -0,0 +1,294 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/x509_acert.h.in + * + * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_X509_ACERT_H +# define OPENSSL_X509_ACERT_H +# pragma once + +# include +# include +# include + +typedef struct X509_acert_st X509_ACERT; +typedef struct X509_acert_info_st X509_ACERT_INFO; +typedef struct ossl_object_digest_info_st OSSL_OBJECT_DIGEST_INFO; +typedef struct ossl_issuer_serial_st OSSL_ISSUER_SERIAL; +typedef struct X509_acert_issuer_v2form_st X509_ACERT_ISSUER_V2FORM; + +DECLARE_ASN1_FUNCTIONS(X509_ACERT) +DECLARE_ASN1_DUP_FUNCTION(X509_ACERT) +DECLARE_ASN1_ITEM(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_OBJECT_DIGEST_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_ISSUER_SERIAL) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_ISSUER_V2FORM) + +# ifndef OPENSSL_NO_STDIO +X509_ACERT *d2i_X509_ACERT_fp(FILE *fp, X509_ACERT **acert); +int i2d_X509_ACERT_fp(FILE *fp, const X509_ACERT *acert); +# endif + +DECLARE_PEM_rw(X509_ACERT, X509_ACERT) + +X509_ACERT *d2i_X509_ACERT_bio(BIO *bp, X509_ACERT **acert); +int i2d_X509_ACERT_bio(BIO *bp, const X509_ACERT *acert); + +int X509_ACERT_sign(X509_ACERT *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_ACERT_sign_ctx(X509_ACERT *x, EVP_MD_CTX *ctx); +int X509_ACERT_verify(X509_ACERT *a, EVP_PKEY *r); + +# define X509_ACERT_VERSION_2 1 + +const GENERAL_NAMES *X509_ACERT_get0_holder_entityName(const X509_ACERT *x); +const OSSL_ISSUER_SERIAL *X509_ACERT_get0_holder_baseCertId(const X509_ACERT *x); +const OSSL_OBJECT_DIGEST_INFO * X509_ACERT_get0_holder_digest(const X509_ACERT *x); +const X509_NAME *X509_ACERT_get0_issuerName(const X509_ACERT *x); +long X509_ACERT_get_version(const X509_ACERT *x); +void X509_ACERT_get0_signature(const X509_ACERT *x, + const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_ACERT_get_signature_nid(const X509_ACERT *x); +const X509_ALGOR *X509_ACERT_get0_info_sigalg(const X509_ACERT *x); +const ASN1_INTEGER *X509_ACERT_get0_serialNumber(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notBefore(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notAfter(const X509_ACERT *x); +const ASN1_BIT_STRING *X509_ACERT_get0_issuerUID(const X509_ACERT *x); + +int X509_ACERT_print(BIO *bp, X509_ACERT *x); +int X509_ACERT_print_ex(BIO *bp, X509_ACERT *x, unsigned long nmflags, + unsigned long cflag); + +int X509_ACERT_get_attr_count(const X509_ACERT *x); +int X509_ACERT_get_attr_by_NID(const X509_ACERT *x, int nid, int lastpos); +int X509_ACERT_get_attr_by_OBJ(const X509_ACERT *x, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_ACERT_get_attr(const X509_ACERT *x, int loc); +X509_ATTRIBUTE *X509_ACERT_delete_attr(X509_ACERT *x, int loc); + +void *X509_ACERT_get_ext_d2i(const X509_ACERT *x, int nid, int *crit, int *idx); +int X509_ACERT_add1_ext_i2d(X509_ACERT *x, int nid, void *value, int crit, + unsigned long flags); +const STACK_OF(X509_EXTENSION) *X509_ACERT_get0_extensions(const X509_ACERT *x); + +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY 0 +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY_CERT 1 +# define OSSL_OBJECT_DIGEST_INFO_OTHER 2 /* must not be used in RFC 5755 profile */ +int X509_ACERT_set_version(X509_ACERT *x, long version); +void X509_ACERT_set0_holder_entityName(X509_ACERT *x, GENERAL_NAMES *name); +void X509_ACERT_set0_holder_baseCertId(X509_ACERT *x, OSSL_ISSUER_SERIAL *isss); +void X509_ACERT_set0_holder_digest(X509_ACERT *x, + OSSL_OBJECT_DIGEST_INFO *dinfo); + +int X509_ACERT_add1_attr(X509_ACERT *x, X509_ATTRIBUTE *attr); +int X509_ACERT_add1_attr_by_OBJ(X509_ACERT *x, const ASN1_OBJECT *obj, + int type, const void *bytes, int len); +int X509_ACERT_add1_attr_by_NID(X509_ACERT *x, int nid, int type, + const void *bytes, int len); +int X509_ACERT_add1_attr_by_txt(X509_ACERT *x, const char *attrname, int type, + const unsigned char *bytes, int len); +int X509_ACERT_add_attr_nconf(CONF *conf, const char *section, + X509_ACERT *acert); + +int X509_ACERT_set1_issuerName(X509_ACERT *x, const X509_NAME *name); +int X509_ACERT_set1_serialNumber(X509_ACERT *x, const ASN1_INTEGER *serial); +int X509_ACERT_set1_notBefore(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); +int X509_ACERT_set1_notAfter(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); + +void OSSL_OBJECT_DIGEST_INFO_get0_digest(const OSSL_OBJECT_DIGEST_INFO *o, + int *digestedObjectType, + const X509_ALGOR **digestAlgorithm, + const ASN1_BIT_STRING **digest); + +int OSSL_OBJECT_DIGEST_INFO_set1_digest(OSSL_OBJECT_DIGEST_INFO *o, + int digestedObjectType, + X509_ALGOR *digestAlgorithm, + ASN1_BIT_STRING *digest); + +const X509_NAME *OSSL_ISSUER_SERIAL_get0_issuer(const OSSL_ISSUER_SERIAL *isss); +const ASN1_INTEGER *OSSL_ISSUER_SERIAL_get0_serial(const OSSL_ISSUER_SERIAL *isss); +const ASN1_BIT_STRING *OSSL_ISSUER_SERIAL_get0_issuerUID(const OSSL_ISSUER_SERIAL *isss); + +int OSSL_ISSUER_SERIAL_set1_issuer(OSSL_ISSUER_SERIAL *isss, + const X509_NAME *issuer); +int OSSL_ISSUER_SERIAL_set1_serial(OSSL_ISSUER_SERIAL *isss, + const ASN1_INTEGER *serial); +int OSSL_ISSUER_SERIAL_set1_issuerUID(OSSL_ISSUER_SERIAL *isss, + const ASN1_BIT_STRING *uid); + +# define OSSL_IETFAS_OCTETS 0 +# define OSSL_IETFAS_OID 1 +# define OSSL_IETFAS_STRING 2 + +typedef struct OSSL_IETF_ATTR_SYNTAX_VALUE_st OSSL_IETF_ATTR_SYNTAX_VALUE; +typedef struct OSSL_IETF_ATTR_SYNTAX_st OSSL_IETF_ATTR_SYNTAX; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_value(sk, idx) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new(cmp) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_null() ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (n)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete(sk, i) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (i))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete_ptr(sk, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_pop(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_shift(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_shift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk),ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), (idx)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set(sk, idx, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_set(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), pnum) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_dup(sk) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_copyfunc_type(copyfunc), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set_cmp_func(sk, cmp) ((sk_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) + + +DECLARE_ASN1_ITEM(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX) + +const GENERAL_NAMES * +OSSL_IETF_ATTR_SYNTAX_get0_policyAuthority(const OSSL_IETF_ATTR_SYNTAX *a); +void OSSL_IETF_ATTR_SYNTAX_set0_policyAuthority(OSSL_IETF_ATTR_SYNTAX *a, + GENERAL_NAMES *names); + +int OSSL_IETF_ATTR_SYNTAX_get_value_num(const OSSL_IETF_ATTR_SYNTAX *a); +void *OSSL_IETF_ATTR_SYNTAX_get0_value(const OSSL_IETF_ATTR_SYNTAX *a, + int ind, int *type); +int OSSL_IETF_ATTR_SYNTAX_add1_value(OSSL_IETF_ATTR_SYNTAX *a, int type, + void *data); +int OSSL_IETF_ATTR_SYNTAX_print(BIO *bp, OSSL_IETF_ATTR_SYNTAX *a, int indent); + +struct TARGET_CERT_st { + OSSL_ISSUER_SERIAL *targetCertificate; + GENERAL_NAME *targetName; + OSSL_OBJECT_DIGEST_INFO *certDigestInfo; +}; + +typedef struct TARGET_CERT_st OSSL_TARGET_CERT; + +# define OSSL_TGT_TARGET_NAME 0 +# define OSSL_TGT_TARGET_GROUP 1 +# define OSSL_TGT_TARGET_CERT 2 + +typedef struct TARGET_st { + int type; + union { + GENERAL_NAME *targetName; + GENERAL_NAME *targetGroup; + OSSL_TARGET_CERT *targetCert; + } choice; +} OSSL_TARGET; + +typedef STACK_OF(OSSL_TARGET) OSSL_TARGETS; +typedef STACK_OF(OSSL_TARGETS) OSSL_TARGETING_INFORMATION; + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGET, OSSL_TARGET, OSSL_TARGET) +#define sk_OSSL_TARGET_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_value(sk, idx) ((OSSL_TARGET *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGET_sk_type(sk), (idx))) +#define sk_OSSL_TARGET_new(cmp) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new(ossl_check_OSSL_TARGET_compfunc_type(cmp))) +#define sk_OSSL_TARGET_new_null() ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGET_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGET_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGET_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGET_sk_type(sk), (n)) +#define sk_OSSL_TARGET_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_delete(sk, i) ((OSSL_TARGET *)OPENSSL_sk_delete(ossl_check_OSSL_TARGET_sk_type(sk), (i))) +#define sk_OSSL_TARGET_delete_ptr(sk, ptr) ((OSSL_TARGET *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_pop(sk) ((OSSL_TARGET *)OPENSSL_sk_pop(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_shift(sk) ((OSSL_TARGET *)OPENSSL_sk_shift(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGET_sk_type(sk),ossl_check_OSSL_TARGET_freefunc_type(freefunc)) +#define sk_OSSL_TARGET_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), (idx)) +#define sk_OSSL_TARGET_set(sk, idx, ptr) ((OSSL_TARGET *)OPENSSL_sk_set(ossl_check_OSSL_TARGET_sk_type(sk), (idx), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), pnum) +#define sk_OSSL_TARGET_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_dup(sk) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_copyfunc_type(copyfunc), ossl_check_OSSL_TARGET_freefunc_type(freefunc))) +#define sk_OSSL_TARGET_set_cmp_func(sk, cmp) ((sk_OSSL_TARGET_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGETS, OSSL_TARGETS, OSSL_TARGETS) +#define sk_OSSL_TARGETS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_value(sk, idx) ((OSSL_TARGETS *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGETS_sk_type(sk), (idx))) +#define sk_OSSL_TARGETS_new(cmp) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new(ossl_check_OSSL_TARGETS_compfunc_type(cmp))) +#define sk_OSSL_TARGETS_new_null() ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGETS_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGETS_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGETS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGETS_sk_type(sk), (n)) +#define sk_OSSL_TARGETS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_delete(sk, i) ((OSSL_TARGETS *)OPENSSL_sk_delete(ossl_check_OSSL_TARGETS_sk_type(sk), (i))) +#define sk_OSSL_TARGETS_delete_ptr(sk, ptr) ((OSSL_TARGETS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_pop(sk) ((OSSL_TARGETS *)OPENSSL_sk_pop(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_shift(sk) ((OSSL_TARGETS *)OPENSSL_sk_shift(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGETS_sk_type(sk),ossl_check_OSSL_TARGETS_freefunc_type(freefunc)) +#define sk_OSSL_TARGETS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), (idx)) +#define sk_OSSL_TARGETS_set(sk, idx, ptr) ((OSSL_TARGETS *)OPENSSL_sk_set(ossl_check_OSSL_TARGETS_sk_type(sk), (idx), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), pnum) +#define sk_OSSL_TARGETS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_dup(sk) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_copyfunc_type(copyfunc), ossl_check_OSSL_TARGETS_freefunc_type(freefunc))) +#define sk_OSSL_TARGETS_set_cmp_func(sk, cmp) ((sk_OSSL_TARGETS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_compfunc_type(cmp))) + + +DECLARE_ASN1_FUNCTIONS(OSSL_TARGET) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETS) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETING_INFORMATION) + +typedef STACK_OF(OSSL_ISSUER_SERIAL) OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL) +#define sk_OSSL_ISSUER_SERIAL_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_value(sk, idx) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_value(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), (idx))) +#define sk_OSSL_ISSUER_SERIAL_new(cmp) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) +#define sk_OSSL_ISSUER_SERIAL_new_null() ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ISSUER_SERIAL_new_reserve(cmp, n) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp), (n))) +#define sk_OSSL_ISSUER_SERIAL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (n)) +#define sk_OSSL_ISSUER_SERIAL_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_delete(sk, i) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (i))) +#define sk_OSSL_ISSUER_SERIAL_delete_ptr(sk, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_pop(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_pop(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_shift(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_shift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk),ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc)) +#define sk_OSSL_ISSUER_SERIAL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), (idx)) +#define sk_OSSL_ISSUER_SERIAL_set(sk, idx, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_set(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (idx), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), pnum) +#define sk_OSSL_ISSUER_SERIAL_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_dup(sk) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_copyfunc_type(copyfunc), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc))) +#define sk_OSSL_ISSUER_SERIAL_set_cmp_func(sk, cmp) ((sk_OSSL_ISSUER_SERIAL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) + + +#endif diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/x509_vfy.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/x509_vfy.h index 29b0e147adcab1..c9bdc3b39d685d 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/x509_vfy.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/x509_vfy.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509_vfy.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -411,6 +411,7 @@ X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ # define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 # define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 # define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +# define X509_V_ERR_RPK_UNTRUSTED 95 /* Certificate verify flags */ # ifndef OPENSSL_NO_DEPRECATED_1_1_0 @@ -491,71 +492,72 @@ int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); X509_STORE *X509_STORE_new(void); -void X509_STORE_free(X509_STORE *v); -int X509_STORE_lock(X509_STORE *ctx); -int X509_STORE_unlock(X509_STORE *ctx); -int X509_STORE_up_ref(X509_STORE *v); -STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *v); -STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *st); -STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get1_objects(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, const X509_NAME *nm); STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, const X509_NAME *nm); -int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); -int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); -int X509_STORE_set_trust(X509_STORE *ctx, int trust); -int X509_STORE_set1_param(X509_STORE *ctx, const X509_VERIFY_PARAM *pm); -X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *ctx); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); -void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); #define X509_STORE_set_verify_func(ctx, func) \ X509_STORE_set_verify((ctx),(func)) void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, X509_STORE_CTX_verify_fn verify); -X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *ctx); -void X509_STORE_set_verify_cb(X509_STORE *ctx, +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, X509_STORE_CTX_verify_cb verify_cb); # define X509_STORE_set_verify_cb_func(ctx,func) \ X509_STORE_set_verify_cb((ctx),(func)) -X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *ctx); -void X509_STORE_set_get_issuer(X509_STORE *ctx, +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, X509_STORE_CTX_get_issuer_fn get_issuer); -X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *ctx); -void X509_STORE_set_check_issued(X509_STORE *ctx, +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, X509_STORE_CTX_check_issued_fn check_issued); -X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *ctx); -void X509_STORE_set_check_revocation(X509_STORE *ctx, +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, X509_STORE_CTX_check_revocation_fn check_revocation); X509_STORE_CTX_check_revocation_fn - X509_STORE_get_check_revocation(const X509_STORE *ctx); -void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, X509_STORE_CTX_get_crl_fn get_crl); -X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *ctx); -void X509_STORE_set_check_crl(X509_STORE *ctx, +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, X509_STORE_CTX_check_crl_fn check_crl); -X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *ctx); -void X509_STORE_set_cert_crl(X509_STORE *ctx, +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, X509_STORE_CTX_cert_crl_fn cert_crl); -X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *ctx); -void X509_STORE_set_check_policy(X509_STORE *ctx, +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, X509_STORE_CTX_check_policy_fn check_policy); -X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *ctx); -void X509_STORE_set_lookup_certs(X509_STORE *ctx, +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, X509_STORE_CTX_lookup_certs_fn lookup_certs); -X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *ctx); -void X509_STORE_set_lookup_crls(X509_STORE *ctx, +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, X509_STORE_CTX_lookup_crls_fn lookup_crls); #define X509_STORE_set_lookup_crls_cb(ctx, func) \ X509_STORE_set_lookup_crls((ctx), (func)) -X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *ctx); -void X509_STORE_set_cleanup(X509_STORE *ctx, +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, X509_STORE_CTX_cleanup_fn cleanup); -X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); #define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) -int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); -void *X509_STORE_get_ex_data(const X509_STORE *ctx, int idx); +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); X509_STORE_CTX *X509_STORE_CTX_new(void); @@ -565,11 +567,14 @@ int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); void X509_STORE_CTX_free(X509_STORE_CTX *ctx); int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY* rpk); void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, @@ -579,6 +584,8 @@ X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); @@ -600,7 +607,7 @@ X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); # define X509_STORE_get1_crl X509_STORE_CTX_get1_crls #endif -X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); X509_LOOKUP_METHOD *X509_LOOKUP_file(void); X509_LOOKUP_METHOD *X509_LOOKUP_store(void); @@ -685,8 +692,8 @@ X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( const X509_LOOKUP_METHOD *method); -int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); -int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, @@ -730,23 +737,21 @@ void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); -int X509_STORE_load_file(X509_STORE *ctx, const char *file); -int X509_STORE_load_path(X509_STORE *ctx, const char *path); -int X509_STORE_load_store(X509_STORE *ctx, const char *store); -int X509_STORE_load_locations(X509_STORE *ctx, - const char *file, - const char *dir); -int X509_STORE_set_default_paths(X509_STORE *ctx); +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); -int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file, +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_store_ex(X509_STORE *ctx, const char *store, +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file, - const char *dir, OSSL_LIB_CTX *libctx, - const char *propq); -int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OSSL_LIB_CTX *libctx, - const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); #define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) @@ -764,6 +769,7 @@ X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); @@ -773,6 +779,8 @@ int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); @@ -804,6 +812,7 @@ int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, unsigned long flags); unsigned long X509_VERIFY_PARAM_get_flags(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_get_purpose(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/x509v3.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/x509v3.h index 20b67455f2061d..b8dabac35a4915 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/x509v3.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/x509v3.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509v3.h.in * - * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -146,6 +149,11 @@ typedef struct BASIC_CONSTRAINTS_st { ASN1_INTEGER *pathlen; } BASIC_CONSTRAINTS; +typedef struct OSSL_BASIC_ATTR_CONSTRAINTS_st { + int authority; + ASN1_INTEGER *pathlen; +} OSSL_BASIC_ATTR_CONSTRAINTS; + typedef struct PKEY_USAGE_PERIOD_st { ASN1_GENERALIZEDTIME *notBefore; ASN1_GENERALIZEDTIME *notAfter; @@ -198,6 +206,8 @@ typedef struct ACCESS_DESCRIPTION_st { GENERAL_NAME *location; } ACCESS_DESCRIPTION; +int GENERAL_NAME_set1_X509_NAME(GENERAL_NAME **tgt, const X509_NAME *src); + SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) #define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) #define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) @@ -294,6 +304,7 @@ typedef struct DIST_POINT_NAME_st { /* If relativename then this contains the full distribution point name */ X509_NAME *dpname; } DIST_POINT_NAME; +DECLARE_ASN1_DUP_FUNCTION(DIST_POINT_NAME) /* All existing reasons */ # define CRLDP_ALL_REASONS 0x807f @@ -659,15 +670,16 @@ struct ISSUING_DIST_POINT_st { # define EXFLAG_SAN_CRITICAL 0x80000 # define EXFLAG_NO_FINGERPRINT 0x100000 -# define KU_DIGITAL_SIGNATURE 0x0080 -# define KU_NON_REPUDIATION 0x0040 -# define KU_KEY_ENCIPHERMENT 0x0020 -# define KU_DATA_ENCIPHERMENT 0x0010 -# define KU_KEY_AGREEMENT 0x0008 -# define KU_KEY_CERT_SIGN 0x0004 -# define KU_CRL_SIGN 0x0002 -# define KU_ENCIPHER_ONLY 0x0001 -# define KU_DECIPHER_ONLY 0x8000 +/* https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3 */ +# define KU_DIGITAL_SIGNATURE X509v3_KU_DIGITAL_SIGNATURE +# define KU_NON_REPUDIATION X509v3_KU_NON_REPUDIATION +# define KU_KEY_ENCIPHERMENT X509v3_KU_KEY_ENCIPHERMENT +# define KU_DATA_ENCIPHERMENT X509v3_KU_DATA_ENCIPHERMENT +# define KU_KEY_AGREEMENT X509v3_KU_KEY_AGREEMENT +# define KU_KEY_CERT_SIGN X509v3_KU_KEY_CERT_SIGN +# define KU_CRL_SIGN X509v3_KU_CRL_SIGN +# define KU_ENCIPHER_ONLY X509v3_KU_ENCIPHER_ONLY +# define KU_DECIPHER_ONLY X509v3_KU_DECIPHER_ONLY # define NS_SSL_CLIENT 0x80 # define NS_SSL_SERVER 0x40 @@ -729,7 +741,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) #define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) - +# define X509_PURPOSE_DEFAULT_ANY 0 # define X509_PURPOSE_SSL_CLIENT 1 # define X509_PURPOSE_SSL_SERVER 2 # define X509_PURPOSE_NS_SSL_SERVER 3 @@ -739,9 +751,10 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509_PURPOSE_ANY 7 # define X509_PURPOSE_OCSP_HELPER 8 # define X509_PURPOSE_TIMESTAMP_SIGN 9 +# define X509_PURPOSE_CODE_SIGN 10 # define X509_PURPOSE_MIN 1 -# define X509_PURPOSE_MAX 9 +# define X509_PURPOSE_MAX 10 /* Flags for X509V3_EXT_print() */ @@ -767,6 +780,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509V3_ADD_SILENT 0x10 DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) +DECLARE_ASN1_FUNCTIONS(OSSL_BASIC_ATTR_CONSTRAINTS) DECLARE_ASN1_FUNCTIONS(SXNET) DECLARE_ASN1_FUNCTIONS(SXNETID) @@ -976,7 +990,6 @@ int X509V3_extensions_print(BIO *out, const char *title, int X509_check_ca(X509 *x); int X509_check_purpose(X509 *x, int id, int ca); int X509_supported_extension(X509_EXTENSION *ex); -int X509_PURPOSE_set(int *p, int purpose); int X509_check_issued(X509 *issuer, X509 *subject); int X509_check_akid(const X509 *issuer, const AUTHORITY_KEYID *akid); void X509_set_proxy_flag(X509 *x); @@ -992,22 +1005,26 @@ const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); int X509_PURPOSE_get_count(void); -X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_unused_id(OSSL_LIB_CTX *libctx); int X509_PURPOSE_get_by_sname(const char *sname); int X509_PURPOSE_get_by_id(int id); int X509_PURPOSE_add(int id, int trust, int flags, int (*ck) (const X509_PURPOSE *, const X509 *, int), const char *name, const char *sname, void *arg); +void X509_PURPOSE_cleanup(void); + +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_id(const X509_PURPOSE *); char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); -void X509_PURPOSE_cleanup(void); -int X509_PURPOSE_get_id(const X509_PURPOSE *); +int X509_PURPOSE_set(int *p, int purpose); STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); + /* Flags for X509_check_* functions */ /* @@ -1444,6 +1461,507 @@ const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( void PROFESSION_INFO_set0_registrationNumber( PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); +int OSSL_GENERAL_NAMES_print(BIO *out, GENERAL_NAMES *gens, int indent); + +typedef STACK_OF(X509_ATTRIBUTE) OSSL_ATTRIBUTES_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTES_SYNTAX) + +typedef STACK_OF(USERNOTICE) OSSL_USER_NOTICE_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_USER_NOTICE_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(USERNOTICE, USERNOTICE, USERNOTICE) +#define sk_USERNOTICE_num(sk) OPENSSL_sk_num(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_value(sk, idx) ((USERNOTICE *)OPENSSL_sk_value(ossl_check_const_USERNOTICE_sk_type(sk), (idx))) +#define sk_USERNOTICE_new(cmp) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new(ossl_check_USERNOTICE_compfunc_type(cmp))) +#define sk_USERNOTICE_new_null() ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_null()) +#define sk_USERNOTICE_new_reserve(cmp, n) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_reserve(ossl_check_USERNOTICE_compfunc_type(cmp), (n))) +#define sk_USERNOTICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_USERNOTICE_sk_type(sk), (n)) +#define sk_USERNOTICE_free(sk) OPENSSL_sk_free(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_zero(sk) OPENSSL_sk_zero(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_delete(sk, i) ((USERNOTICE *)OPENSSL_sk_delete(ossl_check_USERNOTICE_sk_type(sk), (i))) +#define sk_USERNOTICE_delete_ptr(sk, ptr) ((USERNOTICE *)OPENSSL_sk_delete_ptr(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_pop(sk) ((USERNOTICE *)OPENSSL_sk_pop(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_shift(sk) ((USERNOTICE *)OPENSSL_sk_shift(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_USERNOTICE_sk_type(sk),ossl_check_USERNOTICE_freefunc_type(freefunc)) +#define sk_USERNOTICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), (idx)) +#define sk_USERNOTICE_set(sk, idx, ptr) ((USERNOTICE *)OPENSSL_sk_set(ossl_check_USERNOTICE_sk_type(sk), (idx), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), pnum) +#define sk_USERNOTICE_sort(sk) OPENSSL_sk_sort(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_dup(sk) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_dup(ossl_check_const_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_deep_copy(ossl_check_const_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_copyfunc_type(copyfunc), ossl_check_USERNOTICE_freefunc_type(freefunc))) +#define sk_USERNOTICE_set_cmp_func(sk, cmp) ((sk_USERNOTICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_compfunc_type(cmp))) + + +typedef struct OSSL_ROLE_SPEC_CERT_ID_st { + GENERAL_NAME *roleName; + GENERAL_NAME *roleCertIssuer; + ASN1_INTEGER *roleCertSerialNumber; + GENERAL_NAMES *roleCertLocator; +} OSSL_ROLE_SPEC_CERT_ID; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID) +#define sk_OSSL_ROLE_SPEC_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_value(sk, idx) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_value(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new(cmp) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_null() ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_reserve(cmp, n) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp), (n))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (n)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete(sk, i) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (i))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete_ptr(sk, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_pop(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_shift(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_shift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk),ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), (idx)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set(sk, idx, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_set(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), pnum) +#define sk_OSSL_ROLE_SPEC_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_dup(sk) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_copyfunc_type(copyfunc), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set_cmp_func(sk, cmp) ((sk_OSSL_ROLE_SPEC_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) + + +typedef STACK_OF(OSSL_ROLE_SPEC_CERT_ID) OSSL_ROLE_SPEC_CERT_ID_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID_SYNTAX) +typedef struct OSSL_HASH_st { + X509_ALGOR *algorithmIdentifier; + ASN1_BIT_STRING *hashValue; +} OSSL_HASH; + +typedef struct OSSL_INFO_SYNTAX_POINTER_st { + GENERAL_NAMES *name; + OSSL_HASH *hash; +} OSSL_INFO_SYNTAX_POINTER; + +# define OSSL_INFO_SYNTAX_TYPE_CONTENT 0 +# define OSSL_INFO_SYNTAX_TYPE_POINTER 1 + +typedef struct OSSL_INFO_SYNTAX_st { + int type; + union { + ASN1_STRING *content; + OSSL_INFO_SYNTAX_POINTER *pointer; + } choice; +} OSSL_INFO_SYNTAX; + +typedef struct OSSL_PRIVILEGE_POLICY_ID_st { + ASN1_OBJECT *privilegePolicy; + OSSL_INFO_SYNTAX *privPolSyntax; +} OSSL_PRIVILEGE_POLICY_ID; + +typedef struct OSSL_ATTRIBUTE_DESCRIPTOR_st { + ASN1_OBJECT *identifier; + ASN1_STRING *attributeSyntax; + ASN1_UTF8STRING *name; + ASN1_UTF8STRING *description; + OSSL_PRIVILEGE_POLICY_ID *dominationRule; +} OSSL_ATTRIBUTE_DESCRIPTOR; + +DECLARE_ASN1_FUNCTIONS(OSSL_HASH) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX_POINTER) +DECLARE_ASN1_FUNCTIONS(OSSL_PRIVILEGE_POLICY_ID) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_DESCRIPTOR) + +typedef struct OSSL_TIME_SPEC_ABSOLUTE_st { + ASN1_GENERALIZEDTIME *startTime; + ASN1_GENERALIZEDTIME *endTime; +} OSSL_TIME_SPEC_ABSOLUTE; + +typedef struct OSSL_DAY_TIME_st { + ASN1_INTEGER *hour; + ASN1_INTEGER *minute; + ASN1_INTEGER *second; +} OSSL_DAY_TIME; + +typedef struct OSSL_DAY_TIME_BAND_st { + OSSL_DAY_TIME *startDayTime; + OSSL_DAY_TIME *endDayTime; +} OSSL_DAY_TIME_BAND; + +# define OSSL_NAMED_DAY_TYPE_INT 0 +# define OSSL_NAMED_DAY_TYPE_BIT 1 +# define OSSL_NAMED_DAY_INT_SUN 1 +# define OSSL_NAMED_DAY_INT_MON 2 +# define OSSL_NAMED_DAY_INT_TUE 3 +# define OSSL_NAMED_DAY_INT_WED 4 +# define OSSL_NAMED_DAY_INT_THU 5 +# define OSSL_NAMED_DAY_INT_FRI 6 +# define OSSL_NAMED_DAY_INT_SAT 7 +# define OSSL_NAMED_DAY_BIT_SUN 0 +# define OSSL_NAMED_DAY_BIT_MON 1 +# define OSSL_NAMED_DAY_BIT_TUE 2 +# define OSSL_NAMED_DAY_BIT_WED 3 +# define OSSL_NAMED_DAY_BIT_THU 4 +# define OSSL_NAMED_DAY_BIT_FRI 5 +# define OSSL_NAMED_DAY_BIT_SAT 6 + +typedef struct OSSL_NAMED_DAY_st { + int type; + union { + ASN1_INTEGER *intNamedDays; + ASN1_BIT_STRING *bitNamedDays; + } choice; +} OSSL_NAMED_DAY; + +# define OSSL_TIME_SPEC_X_DAY_OF_FIRST 0 +# define OSSL_TIME_SPEC_X_DAY_OF_SECOND 1 +# define OSSL_TIME_SPEC_X_DAY_OF_THIRD 2 +# define OSSL_TIME_SPEC_X_DAY_OF_FOURTH 3 +# define OSSL_TIME_SPEC_X_DAY_OF_FIFTH 4 + +typedef struct OSSL_TIME_SPEC_X_DAY_OF_st { + int type; + union { + OSSL_NAMED_DAY *first; + OSSL_NAMED_DAY *second; + OSSL_NAMED_DAY *third; + OSSL_NAMED_DAY *fourth; + OSSL_NAMED_DAY *fifth; + } choice; +} OSSL_TIME_SPEC_X_DAY_OF; + +# define OSSL_TIME_SPEC_DAY_TYPE_INT 0 +# define OSSL_TIME_SPEC_DAY_TYPE_BIT 1 +# define OSSL_TIME_SPEC_DAY_TYPE_DAY_OF 2 +# define OSSL_TIME_SPEC_DAY_BIT_SUN 0 +# define OSSL_TIME_SPEC_DAY_BIT_MON 1 +# define OSSL_TIME_SPEC_DAY_BIT_TUE 2 +# define OSSL_TIME_SPEC_DAY_BIT_WED 3 +# define OSSL_TIME_SPEC_DAY_BIT_THU 4 +# define OSSL_TIME_SPEC_DAY_BIT_FRI 5 +# define OSSL_TIME_SPEC_DAY_BIT_SAT 6 +# define OSSL_TIME_SPEC_DAY_INT_SUN 1 +# define OSSL_TIME_SPEC_DAY_INT_MON 2 +# define OSSL_TIME_SPEC_DAY_INT_TUE 3 +# define OSSL_TIME_SPEC_DAY_INT_WED 4 +# define OSSL_TIME_SPEC_DAY_INT_THU 5 +# define OSSL_TIME_SPEC_DAY_INT_FRI 6 +# define OSSL_TIME_SPEC_DAY_INT_SAT 7 + +typedef struct OSSL_TIME_SPEC_DAY_st { + int type; + union { + STACK_OF(ASN1_INTEGER) *intDay; + ASN1_BIT_STRING *bitDay; + OSSL_TIME_SPEC_X_DAY_OF *dayOf; + } choice; +} OSSL_TIME_SPEC_DAY; + +# define OSSL_TIME_SPEC_WEEKS_TYPE_ALL 0 +# define OSSL_TIME_SPEC_WEEKS_TYPE_INT 1 +# define OSSL_TIME_SPEC_WEEKS_TYPE_BIT 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_1 0 +# define OSSL_TIME_SPEC_BIT_WEEKS_2 1 +# define OSSL_TIME_SPEC_BIT_WEEKS_3 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_4 3 +# define OSSL_TIME_SPEC_BIT_WEEKS_5 4 + +typedef struct OSSL_TIME_SPEC_WEEKS_st { + int type; + union { + ASN1_NULL *allWeeks; + STACK_OF(ASN1_INTEGER) *intWeek; + ASN1_BIT_STRING *bitWeek; + } choice; +} OSSL_TIME_SPEC_WEEKS; + +# define OSSL_TIME_SPEC_MONTH_TYPE_ALL 0 +# define OSSL_TIME_SPEC_MONTH_TYPE_INT 1 +# define OSSL_TIME_SPEC_MONTH_TYPE_BIT 2 +# define OSSL_TIME_SPEC_INT_MONTH_JAN 1 +# define OSSL_TIME_SPEC_INT_MONTH_FEB 2 +# define OSSL_TIME_SPEC_INT_MONTH_MAR 3 +# define OSSL_TIME_SPEC_INT_MONTH_APR 4 +# define OSSL_TIME_SPEC_INT_MONTH_MAY 5 +# define OSSL_TIME_SPEC_INT_MONTH_JUN 6 +# define OSSL_TIME_SPEC_INT_MONTH_JUL 7 +# define OSSL_TIME_SPEC_INT_MONTH_AUG 8 +# define OSSL_TIME_SPEC_INT_MONTH_SEP 9 +# define OSSL_TIME_SPEC_INT_MONTH_OCT 10 +# define OSSL_TIME_SPEC_INT_MONTH_NOV 11 +# define OSSL_TIME_SPEC_INT_MONTH_DEC 12 +# define OSSL_TIME_SPEC_BIT_MONTH_JAN 0 +# define OSSL_TIME_SPEC_BIT_MONTH_FEB 1 +# define OSSL_TIME_SPEC_BIT_MONTH_MAR 2 +# define OSSL_TIME_SPEC_BIT_MONTH_APR 3 +# define OSSL_TIME_SPEC_BIT_MONTH_MAY 4 +# define OSSL_TIME_SPEC_BIT_MONTH_JUN 5 +# define OSSL_TIME_SPEC_BIT_MONTH_JUL 6 +# define OSSL_TIME_SPEC_BIT_MONTH_AUG 7 +# define OSSL_TIME_SPEC_BIT_MONTH_SEP 8 +# define OSSL_TIME_SPEC_BIT_MONTH_OCT 9 +# define OSSL_TIME_SPEC_BIT_MONTH_NOV 10 +# define OSSL_TIME_SPEC_BIT_MONTH_DEC 11 + +typedef struct OSSL_TIME_SPEC_MONTH_st { + int type; + union { + ASN1_NULL *allMonths; + STACK_OF(ASN1_INTEGER) *intMonth; + ASN1_BIT_STRING *bitMonth; + } choice; +} OSSL_TIME_SPEC_MONTH; + +typedef struct OSSL_TIME_PERIOD_st { + STACK_OF(OSSL_DAY_TIME_BAND) *timesOfDay; + OSSL_TIME_SPEC_DAY *days; + OSSL_TIME_SPEC_WEEKS *weeks; + OSSL_TIME_SPEC_MONTH *months; + STACK_OF(ASN1_INTEGER) *years; +} OSSL_TIME_PERIOD; + +# define OSSL_TIME_SPEC_TIME_TYPE_ABSOLUTE 0 +# define OSSL_TIME_SPEC_TIME_TYPE_PERIODIC 1 + +typedef struct OSSL_TIME_SPEC_TIME_st { + int type; + union { + OSSL_TIME_SPEC_ABSOLUTE *absolute; + STACK_OF(OSSL_TIME_PERIOD) *periodic; + } choice; +} OSSL_TIME_SPEC_TIME; + +typedef struct OSSL_TIME_SPEC_st { + OSSL_TIME_SPEC_TIME *time; + ASN1_BOOLEAN notThisTime; + ASN1_INTEGER *timeZone; +} OSSL_TIME_SPEC; + +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME_BAND) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_WEEKS) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_MONTH) +DECLARE_ASN1_FUNCTIONS(OSSL_NAMED_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_X_DAY_OF) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_ABSOLUTE) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_PERIOD) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TIME_PERIOD, OSSL_TIME_PERIOD, OSSL_TIME_PERIOD) +#define sk_OSSL_TIME_PERIOD_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_value(sk, idx) ((OSSL_TIME_PERIOD *)OPENSSL_sk_value(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), (idx))) +#define sk_OSSL_TIME_PERIOD_new(cmp) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) +#define sk_OSSL_TIME_PERIOD_new_null() ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TIME_PERIOD_new_reserve(cmp, n) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp), (n))) +#define sk_OSSL_TIME_PERIOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (n)) +#define sk_OSSL_TIME_PERIOD_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_delete(sk, i) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (i))) +#define sk_OSSL_TIME_PERIOD_delete_ptr(sk, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_pop(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_pop(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_shift(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_shift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk),ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc)) +#define sk_OSSL_TIME_PERIOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), (idx)) +#define sk_OSSL_TIME_PERIOD_set(sk, idx, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_set(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (idx), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), pnum) +#define sk_OSSL_TIME_PERIOD_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_dup(sk) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_copyfunc_type(copyfunc), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc))) +#define sk_OSSL_TIME_PERIOD_set_cmp_func(sk, cmp) ((sk_OSSL_TIME_PERIOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND) +#define sk_OSSL_DAY_TIME_BAND_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_value(sk, idx) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_value(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), (idx))) +#define sk_OSSL_DAY_TIME_BAND_new(cmp) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) +#define sk_OSSL_DAY_TIME_BAND_new_null() ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_null()) +#define sk_OSSL_DAY_TIME_BAND_new_reserve(cmp, n) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp), (n))) +#define sk_OSSL_DAY_TIME_BAND_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (n)) +#define sk_OSSL_DAY_TIME_BAND_free(sk) OPENSSL_sk_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_delete(sk, i) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (i))) +#define sk_OSSL_DAY_TIME_BAND_delete_ptr(sk, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_pop(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_pop(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_shift(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_shift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk),ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc)) +#define sk_OSSL_DAY_TIME_BAND_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), (idx)) +#define sk_OSSL_DAY_TIME_BAND_set(sk, idx, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_set(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (idx), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), pnum) +#define sk_OSSL_DAY_TIME_BAND_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_dup(sk) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_dup(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_copyfunc_type(copyfunc), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc))) +#define sk_OSSL_DAY_TIME_BAND_set_cmp_func(sk, cmp) ((sk_OSSL_DAY_TIME_BAND_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) + + +/* Attribute Type and Value */ +typedef struct atav_st { + ASN1_OBJECT *type; + ASN1_TYPE *value; +} OSSL_ATAV; + +typedef struct ATTRIBUTE_TYPE_MAPPING_st { + ASN1_OBJECT *local; + ASN1_OBJECT *remote; +} OSSL_ATTRIBUTE_TYPE_MAPPING; + +typedef struct ATTRIBUTE_VALUE_MAPPING_st { + OSSL_ATAV *local; + OSSL_ATAV *remote; +} OSSL_ATTRIBUTE_VALUE_MAPPING; + +# define OSSL_ATTR_MAP_TYPE 0 +# define OSSL_ATTR_MAP_VALUE 1 + +typedef struct ATTRIBUTE_MAPPING_st { + int type; + union { + OSSL_ATTRIBUTE_TYPE_MAPPING *typeMappings; + OSSL_ATTRIBUTE_VALUE_MAPPING *typeValueMappings; + } choice; +} OSSL_ATTRIBUTE_MAPPING; + +typedef STACK_OF(OSSL_ATTRIBUTE_MAPPING) OSSL_ATTRIBUTE_MAPPINGS; +DECLARE_ASN1_FUNCTIONS(OSSL_ATAV) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_TYPE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_VALUE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPINGS) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING) +#define sk_OSSL_ATTRIBUTE_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_value(sk, idx) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_value(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new(cmp) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_null() ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_reserve(cmp, n) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp), (n))) +#define sk_OSSL_ATTRIBUTE_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (n)) +#define sk_OSSL_ATTRIBUTE_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete(sk, i) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (i))) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete_ptr(sk, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_pop(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_shift(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_shift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk),ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc)) +#define sk_OSSL_ATTRIBUTE_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), (idx)) +#define sk_OSSL_ATTRIBUTE_MAPPING_set(sk, idx, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_set(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), pnum) +#define sk_OSSL_ATTRIBUTE_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_dup(sk) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_copyfunc_type(copyfunc), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc))) +#define sk_OSSL_ATTRIBUTE_MAPPING_set_cmp_func(sk, cmp) ((sk_OSSL_ATTRIBUTE_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) + + +# define OSSL_AAA_ATTRIBUTE_TYPE 0 +# define OSSL_AAA_ATTRIBUTE_VALUES 1 + +typedef struct ALLOWED_ATTRIBUTES_CHOICE_st { + int type; + union { + ASN1_OBJECT *attributeType; + X509_ATTRIBUTE *attributeTypeandValues; + } choice; +} OSSL_ALLOWED_ATTRIBUTES_CHOICE; + +typedef struct ALLOWED_ATTRIBUTES_ITEM_st { + STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *attributes; + GENERAL_NAME *holderDomain; +} OSSL_ALLOWED_ATTRIBUTES_ITEM; + +typedef STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) OSSL_ALLOWED_ATTRIBUTES_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_CHOICE) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_ITEM) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) + + +typedef struct AA_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + int dp_reasons; + ASN1_BOOLEAN indirectCRL; + ASN1_BOOLEAN containsUserAttributeCerts; + ASN1_BOOLEAN containsAACerts; + ASN1_BOOLEAN containsSOAPublicKeyCerts; +} OSSL_AA_DIST_POINT; + +DECLARE_ASN1_FUNCTIONS(OSSL_AA_DIST_POINT) + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/progs.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/progs.h index be55f61503d405..1b62ec37dec130 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/progs.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/progs.h @@ -56,6 +56,7 @@ extern int s_client_main(int argc, char *argv[]); extern int s_server_main(int argc, char *argv[]); extern int s_time_main(int argc, char *argv[]); extern int sess_id_main(int argc, char *argv[]); +extern int skeyutl_main(int argc, char *argv[]); extern int smime_main(int argc, char *argv[]); extern int speed_main(int argc, char *argv[]); extern int spkac_main(int argc, char *argv[]); @@ -110,6 +111,7 @@ extern const OPTIONS s_client_options[]; extern const OPTIONS s_server_options[]; extern const OPTIONS s_time_options[]; extern const OPTIONS sess_id_options[]; +extern const OPTIONS skeyutl_options[]; extern const OPTIONS smime_options[]; extern const OPTIONS speed_options[]; extern const OPTIONS spkac_options[]; diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/openssl-cl.gypi b/deps/openssl/config/archs/BSD-x86_64/no-asm/openssl-cl.gypi index b26fb2a5e1c46c..70fe127607efac 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/openssl-cl.gypi +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/openssl-cl.gypi @@ -61,6 +61,7 @@ 'openssl/apps/s_server.c', 'openssl/apps/s_time.c', 'openssl/apps/sess_id.c', + 'openssl/apps/skeyutl.c', 'openssl/apps/smime.c', 'openssl/apps/speed.c', 'openssl/apps/spkac.c', @@ -76,12 +77,14 @@ 'openssl/apps/lib/app_rand.c', 'openssl/apps/lib/app_x509.c', 'openssl/apps/lib/apps.c', + 'openssl/apps/lib/apps_opt_printf.c', 'openssl/apps/lib/apps_ui.c', 'openssl/apps/lib/columns.c', 'openssl/apps/lib/engine.c', 'openssl/apps/lib/engine_loader.c', 'openssl/apps/lib/fmt.c', 'openssl/apps/lib/http_server.c', + 'openssl/apps/lib/log.c', 'openssl/apps/lib/names.c', 'openssl/apps/lib/opt.c', 'openssl/apps/lib/s_cb.c', diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/openssl-fips.gypi b/deps/openssl/config/archs/BSD-x86_64/no-asm/openssl-fips.gypi index e1b0a3a63deac0..62e879b962df45 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/openssl-fips.gypi +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/openssl-fips.gypi @@ -100,14 +100,15 @@ 'openssl/crypto/evp/kem.c', 'openssl/crypto/evp/keymgmt_lib.c', 'openssl/crypto/evp/keymgmt_meth.c', - 'openssl/crypto/evp/m_sigver.c', 'openssl/crypto/evp/mac_lib.c', 'openssl/crypto/evp/mac_meth.c', 'openssl/crypto/evp/p_lib.c', 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -115,6 +116,8 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', @@ -145,6 +148,16 @@ 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -153,6 +166,7 @@ 'openssl/crypto/modes/ofb128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/property/defn_cache.c', 'openssl/crypto/property/property.c', 'openssl/crypto/property/property_parse.c', @@ -181,7 +195,23 @@ 'openssl/crypto/sha/sha256.c', 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/stack/stack.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/providers/common/der/der_rsa_sig.c', 'openssl/providers/common/bio_prov.c', 'openssl/providers/common/capabilities.c', @@ -190,6 +220,7 @@ 'openssl/providers/common/provider_util.c', 'openssl/providers/common/securitycheck.c', 'openssl/providers/common/securitycheck_fips.c', + 'openssl/providers/fips/fipsindicator.c', 'openssl/providers/fips/fipsprov.c', 'openssl/providers/fips/self_test.c', 'openssl/providers/fips/self_test_kats.c', @@ -227,6 +258,8 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -234,29 +267,39 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/cmac_prov.c', 'openssl/providers/implementations/macs/gmac_prov.c', 'openssl/providers/implementations/macs/hmac_prov.c', 'openssl/providers/implementations/macs/kmac_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', + 'openssl/providers/implementations/rands/fips_crng_test.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/signature/dsa_sig.c', 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -267,17 +310,20 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/fips/fips_entry.c', ], 'openssl_sources_BSD-x86_64': [ + './config/archs/BSD-x86_64/no-asm/crypto/params_idx.c', './config/archs/BSD-x86_64/no-asm/providers/common/der/der_sm2_gen.c', './config/archs/BSD-x86_64/no-asm/providers/common/der/der_digests_gen.c', './config/archs/BSD-x86_64/no-asm/providers/common/der/der_dsa_gen.c', './config/archs/BSD-x86_64/no-asm/providers/common/der/der_ec_gen.c', './config/archs/BSD-x86_64/no-asm/providers/common/der/der_ecx_gen.c', + './config/archs/BSD-x86_64/no-asm/providers/common/der/der_ml_dsa_gen.c', './config/archs/BSD-x86_64/no-asm/providers/common/der/der_rsa_gen.c', + './config/archs/BSD-x86_64/no-asm/providers/common/der/der_slh_dsa_gen.c', './config/archs/BSD-x86_64/no-asm/providers/common/der/der_wrap_gen.c', './config/archs/BSD-x86_64/no-asm/providers/legacy.ld', './config/archs/BSD-x86_64/no-asm/providers/fips.ld', diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/openssl.gypi b/deps/openssl/config/archs/BSD-x86_64/no-asm/openssl.gypi index bb080a96ff626e..4be3cbae5d3a09 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/openssl.gypi +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/openssl.gypi @@ -7,14 +7,15 @@ 'openssl/ssl/d1_srtp.c', 'openssl/ssl/methods.c', 'openssl/ssl/pqueue.c', + 'openssl/ssl/priority_queue.c', 'openssl/ssl/s3_enc.c', 'openssl/ssl/s3_lib.c', 'openssl/ssl/s3_msg.c', 'openssl/ssl/ssl_asn1.c', 'openssl/ssl/ssl_cert.c', + 'openssl/ssl/ssl_cert_comp.c', 'openssl/ssl/ssl_ciph.c', 'openssl/ssl/ssl_conf.c', - 'openssl/ssl/ssl_err.c', 'openssl/ssl/ssl_err_legacy.c', 'openssl/ssl/ssl_init.c', 'openssl/ssl/ssl_lib.c', @@ -31,12 +32,60 @@ 'openssl/ssl/tls13_enc.c', 'openssl/ssl/tls_depr.c', 'openssl/ssl/tls_srp.c', - 'openssl/ssl/record/dtls1_bitmap.c', + 'openssl/ssl/quic/cc_newreno.c', + 'openssl/ssl/quic/json_enc.c', + 'openssl/ssl/quic/qlog.c', + 'openssl/ssl/quic/qlog_event_helpers.c', + 'openssl/ssl/quic/quic_ackm.c', + 'openssl/ssl/quic/quic_cfq.c', + 'openssl/ssl/quic/quic_channel.c', + 'openssl/ssl/quic/quic_demux.c', + 'openssl/ssl/quic/quic_engine.c', + 'openssl/ssl/quic/quic_fc.c', + 'openssl/ssl/quic/quic_fifd.c', + 'openssl/ssl/quic/quic_impl.c', + 'openssl/ssl/quic/quic_lcidm.c', + 'openssl/ssl/quic/quic_method.c', + 'openssl/ssl/quic/quic_obj.c', + 'openssl/ssl/quic/quic_port.c', + 'openssl/ssl/quic/quic_rcidm.c', + 'openssl/ssl/quic/quic_reactor.c', + 'openssl/ssl/quic/quic_reactor_wait_ctx.c', + 'openssl/ssl/quic/quic_record_rx.c', + 'openssl/ssl/quic/quic_record_shared.c', + 'openssl/ssl/quic/quic_record_tx.c', + 'openssl/ssl/quic/quic_record_util.c', + 'openssl/ssl/quic/quic_rstream.c', + 'openssl/ssl/quic/quic_rx_depack.c', + 'openssl/ssl/quic/quic_sf_list.c', + 'openssl/ssl/quic/quic_srt_gen.c', + 'openssl/ssl/quic/quic_srtm.c', + 'openssl/ssl/quic/quic_sstream.c', + 'openssl/ssl/quic/quic_statm.c', + 'openssl/ssl/quic/quic_stream_map.c', + 'openssl/ssl/quic/quic_thread_assist.c', + 'openssl/ssl/quic/quic_tls.c', + 'openssl/ssl/quic/quic_tls_api.c', + 'openssl/ssl/quic/quic_trace.c', + 'openssl/ssl/quic/quic_tserver.c', + 'openssl/ssl/quic/quic_txp.c', + 'openssl/ssl/quic/quic_txpim.c', + 'openssl/ssl/quic/quic_types.c', + 'openssl/ssl/quic/quic_wire.c', + 'openssl/ssl/quic/quic_wire_pkt.c', + 'openssl/ssl/quic/uint_set.c', 'openssl/ssl/record/rec_layer_d1.c', 'openssl/ssl/record/rec_layer_s3.c', - 'openssl/ssl/record/ssl3_buffer.c', - 'openssl/ssl/record/ssl3_record.c', - 'openssl/ssl/record/ssl3_record_tls13.c', + 'openssl/ssl/record/methods/dtls_meth.c', + 'openssl/ssl/record/methods/ssl3_meth.c', + 'openssl/ssl/record/methods/tls13_meth.c', + 'openssl/ssl/record/methods/tls1_meth.c', + 'openssl/ssl/record/methods/tls_common.c', + 'openssl/ssl/record/methods/tls_multib.c', + 'openssl/ssl/record/methods/tlsany_meth.c', + 'openssl/ssl/rio/poll_builder.c', + 'openssl/ssl/rio/poll_immediate.c', + 'openssl/ssl/rio/rio_notifier.c', 'openssl/ssl/statem/extensions.c', 'openssl/ssl/statem/extensions_clnt.c', 'openssl/ssl/statem/extensions_cust.c', @@ -150,6 +199,7 @@ 'openssl/crypto/bio/bss_conn.c', 'openssl/crypto/bio/bss_core.c', 'openssl/crypto/bio/bss_dgram.c', + 'openssl/crypto/bio/bss_dgram_pair.c', 'openssl/crypto/bio/bss_fd.c', 'openssl/crypto/bio/bss_file.c', 'openssl/crypto/bio/bss_log.c', @@ -210,6 +260,7 @@ 'openssl/crypto/cmp/cmp_client.c', 'openssl/crypto/cmp/cmp_ctx.c', 'openssl/crypto/cmp/cmp_err.c', + 'openssl/crypto/cmp/cmp_genm.c', 'openssl/crypto/cmp/cmp_hdr.c', 'openssl/crypto/cmp/cmp_http.c', 'openssl/crypto/cmp/cmp_msg.c', @@ -385,7 +436,9 @@ 'openssl/crypto/err/err_all.c', 'openssl/crypto/err/err_all_legacy.c', 'openssl/crypto/err/err_blocks.c', + 'openssl/crypto/err/err_mark.c', 'openssl/crypto/err/err_prn.c', + 'openssl/crypto/err/err_save.c', 'openssl/crypto/ess/ess_asn1.c', 'openssl/crypto/ess/ess_err.c', 'openssl/crypto/ess/ess_lib.c', @@ -468,7 +521,9 @@ 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -476,7 +531,11 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', + 'openssl/crypto/hpke/hpke.c', + 'openssl/crypto/hpke/hpke_util.c', 'openssl/crypto/http/http_client.c', 'openssl/crypto/http/http_err.c', 'openssl/crypto/http/http_lib.c', @@ -490,6 +549,7 @@ 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', 'openssl/crypto/bsearch.c', + 'openssl/crypto/comp_methods.c', 'openssl/crypto/context.c', 'openssl/crypto/core_algorithm.c', 'openssl/crypto/core_fetch.c', @@ -499,10 +559,13 @@ 'openssl/crypto/cryptlib.c', 'openssl/crypto/ctype.c', 'openssl/crypto/cversion.c', + 'openssl/crypto/defaults.c', 'openssl/crypto/der_writer.c', + 'openssl/crypto/deterministic_nonce.c', 'openssl/crypto/ebcdic.c', 'openssl/crypto/ex_data.c', 'openssl/crypto/getenv.c', + 'openssl/crypto/indicator_core.c', 'openssl/crypto/info.c', 'openssl/crypto/init.c', 'openssl/crypto/initthread.c', @@ -527,12 +590,16 @@ 'openssl/crypto/provider_core.c', 'openssl/crypto/provider_predefined.c', 'openssl/crypto/punycode.c', + 'openssl/crypto/quic_vlint.c', 'openssl/crypto/self_test_core.c', + 'openssl/crypto/sleep.c', 'openssl/crypto/sparse_array.c', + 'openssl/crypto/ssl_err.c', 'openssl/crypto/threads_lib.c', 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', 'openssl/crypto/trace.c', 'openssl/crypto/uid.c', 'openssl/crypto/md4/md4_dgst.c', @@ -542,6 +609,15 @@ 'openssl/crypto/md5/md5_sha1.c', 'openssl/crypto/mdc2/mdc2_one.c', 'openssl/crypto/mdc2/mdc2dgst.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -553,6 +629,7 @@ 'openssl/crypto/modes/siv128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/objects/o_names.c', 'openssl/crypto/objects/obj_dat.c', 'openssl/crypto/objects/obj_err.c', @@ -616,6 +693,7 @@ 'openssl/crypto/rand/rand_lib.c', 'openssl/crypto/rand/rand_meth.c', 'openssl/crypto/rand/rand_pool.c', + 'openssl/crypto/rand/rand_uniform.c', 'openssl/crypto/rand/randfile.c', 'openssl/crypto/rc2/rc2_cbc.c', 'openssl/crypto/rc2/rc2_ecb.c', @@ -664,6 +742,16 @@ 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', 'openssl/crypto/siphash/siphash.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/sm2/sm2_crypt.c', 'openssl/crypto/sm2/sm2_err.c', 'openssl/crypto/sm2/sm2_key.c', @@ -681,6 +769,12 @@ 'openssl/crypto/store/store_register.c', 'openssl/crypto/store/store_result.c', 'openssl/crypto/store/store_strings.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/crypto/ts/ts_asn1.c', 'openssl/crypto/ts/ts_conf.c', 'openssl/crypto/ts/ts_err.c', @@ -709,14 +803,22 @@ 'openssl/crypto/x509/pcy_map.c', 'openssl/crypto/x509/pcy_node.c', 'openssl/crypto/x509/pcy_tree.c', + 'openssl/crypto/x509/t_acert.c', 'openssl/crypto/x509/t_crl.c', 'openssl/crypto/x509/t_req.c', 'openssl/crypto/x509/t_x509.c', + 'openssl/crypto/x509/v3_aaa.c', + 'openssl/crypto/x509/v3_ac_tgt.c', 'openssl/crypto/x509/v3_addr.c', 'openssl/crypto/x509/v3_admis.c', 'openssl/crypto/x509/v3_akeya.c', 'openssl/crypto/x509/v3_akid.c', 'openssl/crypto/x509/v3_asid.c', + 'openssl/crypto/x509/v3_attrdesc.c', + 'openssl/crypto/x509/v3_attrmap.c', + 'openssl/crypto/x509/v3_audit_id.c', + 'openssl/crypto/x509/v3_authattid.c', + 'openssl/crypto/x509/v3_battcons.c', 'openssl/crypto/x509/v3_bcons.c', 'openssl/crypto/x509/v3_bitst.c', 'openssl/crypto/x509/v3_conf.c', @@ -725,12 +827,17 @@ 'openssl/crypto/x509/v3_enum.c', 'openssl/crypto/x509/v3_extku.c', 'openssl/crypto/x509/v3_genn.c', + 'openssl/crypto/x509/v3_group_ac.c', 'openssl/crypto/x509/v3_ia5.c', + 'openssl/crypto/x509/v3_ind_iss.c', 'openssl/crypto/x509/v3_info.c', 'openssl/crypto/x509/v3_int.c', + 'openssl/crypto/x509/v3_iobo.c', 'openssl/crypto/x509/v3_ist.c', 'openssl/crypto/x509/v3_lib.c', 'openssl/crypto/x509/v3_ncons.c', + 'openssl/crypto/x509/v3_no_ass.c', + 'openssl/crypto/x509/v3_no_rev_avail.c', 'openssl/crypto/x509/v3_pci.c', 'openssl/crypto/x509/v3_pcia.c', 'openssl/crypto/x509/v3_pcons.c', @@ -738,13 +845,20 @@ 'openssl/crypto/x509/v3_pmaps.c', 'openssl/crypto/x509/v3_prn.c', 'openssl/crypto/x509/v3_purp.c', + 'openssl/crypto/x509/v3_rolespec.c', 'openssl/crypto/x509/v3_san.c', + 'openssl/crypto/x509/v3_sda.c', + 'openssl/crypto/x509/v3_single_use.c', 'openssl/crypto/x509/v3_skid.c', + 'openssl/crypto/x509/v3_soa_id.c', 'openssl/crypto/x509/v3_sxnet.c', + 'openssl/crypto/x509/v3_timespec.c', 'openssl/crypto/x509/v3_tlsf.c', + 'openssl/crypto/x509/v3_usernotice.c', 'openssl/crypto/x509/v3_utf8.c', 'openssl/crypto/x509/v3_utl.c', 'openssl/crypto/x509/v3err.c', + 'openssl/crypto/x509/x509_acert.c', 'openssl/crypto/x509/x509_att.c', 'openssl/crypto/x509/x509_cmp.c', 'openssl/crypto/x509/x509_d2.c', @@ -762,6 +876,7 @@ 'openssl/crypto/x509/x509_v3.c', 'openssl/crypto/x509/x509_vfy.c', 'openssl/crypto/x509/x509_vpm.c', + 'openssl/crypto/x509/x509aset.c', 'openssl/crypto/x509/x509cset.c', 'openssl/crypto/x509/x509name.c', 'openssl/crypto/x509/x509rset.c', @@ -771,6 +886,7 @@ 'openssl/crypto/x509/x_attrib.c', 'openssl/crypto/x509/x_crl.c', 'openssl/crypto/x509/x_exten.c', + 'openssl/crypto/x509/x_ietfatt.c', 'openssl/crypto/x509/x_name.c', 'openssl/crypto/x509/x_pubkey.c', 'openssl/crypto/x509/x_req.c', @@ -803,6 +919,9 @@ 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c', 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', @@ -827,7 +946,13 @@ 'openssl/providers/implementations/ciphers/cipher_cts.c', 'openssl/providers/implementations/ciphers/cipher_null.c', 'openssl/providers/implementations/ciphers/cipher_sm4.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm_hw.c', 'openssl/providers/implementations/ciphers/cipher_sm4_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts_hw.c', 'openssl/providers/implementations/ciphers/cipher_tdes.c', 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', 'openssl/providers/implementations/ciphers/cipher_tdes_default.c', @@ -856,11 +981,16 @@ 'openssl/providers/implementations/encode_decode/encode_key2ms.c', 'openssl/providers/implementations/encode_decode/encode_key2text.c', 'openssl/providers/implementations/encode_decode/endecoder_common.c', + 'openssl/providers/implementations/encode_decode/ml_common_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_dsa_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_kem_codecs.c', 'openssl/providers/implementations/exchange/dh_exch.c', 'openssl/providers/implementations/exchange/ecdh_exch.c', 'openssl/providers/implementations/exchange/ecx_exch.c', 'openssl/providers/implementations/exchange/kdf_exch.c', + 'openssl/providers/implementations/kdfs/argon2.c', 'openssl/providers/implementations/kdfs/hkdf.c', + 'openssl/providers/implementations/kdfs/hmacdrbg_kdf.c', 'openssl/providers/implementations/kdfs/kbkdf.c', 'openssl/providers/implementations/kdfs/krb5kdf.c', 'openssl/providers/implementations/kdfs/pbkdf2.c', @@ -871,6 +1001,11 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ec_kem.c', + 'openssl/providers/implementations/kem/ecx_kem.c', + 'openssl/providers/implementations/kem/kem_util.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -878,7 +1013,11 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/blake2b_mac.c', 'openssl/providers/implementations/macs/blake2s_mac.c', 'openssl/providers/implementations/macs/cmac_prov.c', @@ -887,12 +1026,12 @@ 'openssl/providers/implementations/macs/kmac_prov.c', 'openssl/providers/implementations/macs/poly1305_prov.c', 'openssl/providers/implementations/macs/siphash_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', 'openssl/providers/implementations/rands/seed_src.c', + 'openssl/providers/implementations/rands/seed_src_jitter.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/rands/seeding/rand_cpu_x86.c', 'openssl/providers/implementations/rands/seeding/rand_tsc.c', @@ -902,17 +1041,23 @@ 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', 'openssl/providers/implementations/signature/sm2_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', 'openssl/providers/implementations/storemgmt/file_store.c', 'openssl/providers/implementations/storemgmt/file_store_any2obj.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -923,7 +1068,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/implementations/ciphers/cipher_blowfish.c', 'openssl/providers/implementations/ciphers/cipher_blowfish_hw.c', 'openssl/providers/implementations/ciphers/cipher_cast5.c', @@ -948,16 +1093,20 @@ 'openssl/providers/implementations/digests/ripemd_prov.c', 'openssl/providers/implementations/digests/wp_prov.c', 'openssl/providers/implementations/kdfs/pbkdf1.c', + 'openssl/providers/implementations/kdfs/pvkkdf.c', 'openssl/providers/prov_running.c', 'openssl/providers/legacyprov.c', ], 'openssl_sources_BSD-x86_64': [ + './config/archs/BSD-x86_64/no-asm/crypto/params_idx.c', './config/archs/BSD-x86_64/no-asm/providers/common/der/der_sm2_gen.c', './config/archs/BSD-x86_64/no-asm/providers/common/der/der_digests_gen.c', './config/archs/BSD-x86_64/no-asm/providers/common/der/der_dsa_gen.c', './config/archs/BSD-x86_64/no-asm/providers/common/der/der_ec_gen.c', './config/archs/BSD-x86_64/no-asm/providers/common/der/der_ecx_gen.c', + './config/archs/BSD-x86_64/no-asm/providers/common/der/der_ml_dsa_gen.c', './config/archs/BSD-x86_64/no-asm/providers/common/der/der_rsa_gen.c', + './config/archs/BSD-x86_64/no-asm/providers/common/der/der_slh_dsa_gen.c', './config/archs/BSD-x86_64/no-asm/providers/common/der/der_wrap_gen.c', './config/archs/BSD-x86_64/no-asm/providers/legacy.ld', './config/archs/BSD-x86_64/no-asm/providers/fips.ld', diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/providers/common/der/der_ml_dsa_gen.c b/deps/openssl/config/archs/BSD-x86_64/no-asm/providers/common/der/der_ml_dsa_gen.c new file mode 100644 index 00000000000000..4a8a113a268578 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/providers/common/der/der_ml_dsa_gen.c @@ -0,0 +1,37 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_ml_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44] = { + DER_OID_V_id_ml_dsa_44 +}; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65] = { + DER_OID_V_id_ml_dsa_65 +}; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87] = { + DER_OID_V_id_ml_dsa_87 +}; + diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/providers/common/der/der_slh_dsa_gen.c b/deps/openssl/config/archs/BSD-x86_64/no-asm/providers/common/der/der_slh_dsa_gen.c new file mode 100644 index 00000000000000..1419a9515097dd --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/providers/common/der/der_slh_dsa_gen.c @@ -0,0 +1,100 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_slh_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s] = { + DER_OID_V_id_slh_dsa_sha2_128s +}; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f] = { + DER_OID_V_id_slh_dsa_sha2_128f +}; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s] = { + DER_OID_V_id_slh_dsa_sha2_192s +}; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f] = { + DER_OID_V_id_slh_dsa_sha2_192f +}; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s] = { + DER_OID_V_id_slh_dsa_sha2_256s +}; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f] = { + DER_OID_V_id_slh_dsa_sha2_256f +}; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s] = { + DER_OID_V_id_slh_dsa_shake_128s +}; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f] = { + DER_OID_V_id_slh_dsa_shake_128f +}; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s] = { + DER_OID_V_id_slh_dsa_shake_192s +}; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f] = { + DER_OID_V_id_slh_dsa_shake_192f +}; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s] = { + DER_OID_V_id_slh_dsa_shake_256s +}; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f] = { + DER_OID_V_id_slh_dsa_shake_256f +}; + diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/providers/common/include/prov/der_ml_dsa.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/providers/common/include/prov/der_ml_dsa.h new file mode 100644 index 00000000000000..c55f780ab4527c --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/providers/common/include/prov/der_ml_dsa.h @@ -0,0 +1,40 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_ml_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +#define DER_OID_V_id_ml_dsa_44 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x11 +#define DER_OID_SZ_id_ml_dsa_44 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44]; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +#define DER_OID_V_id_ml_dsa_65 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x12 +#define DER_OID_SZ_id_ml_dsa_65 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65]; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +#define DER_OID_V_id_ml_dsa_87 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x13 +#define DER_OID_SZ_id_ml_dsa_87 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87]; + + +int ossl_DER_w_algorithmIdentifier_ML_DSA(WPACKET *pkt, int tag, ML_DSA_KEY *key); diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/providers/common/include/prov/der_slh_dsa.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/providers/common/include/prov/der_slh_dsa.h new file mode 100644 index 00000000000000..760f8e7699be72 --- /dev/null +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/providers/common/include/prov/der_slh_dsa.h @@ -0,0 +1,103 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_slh_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x14 +#define DER_OID_SZ_id_slh_dsa_sha2_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s]; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x15 +#define DER_OID_SZ_id_slh_dsa_sha2_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f]; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x16 +#define DER_OID_SZ_id_slh_dsa_sha2_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s]; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x17 +#define DER_OID_SZ_id_slh_dsa_sha2_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f]; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x18 +#define DER_OID_SZ_id_slh_dsa_sha2_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s]; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x19 +#define DER_OID_SZ_id_slh_dsa_sha2_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f]; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +#define DER_OID_V_id_slh_dsa_shake_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1A +#define DER_OID_SZ_id_slh_dsa_shake_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s]; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +#define DER_OID_V_id_slh_dsa_shake_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1B +#define DER_OID_SZ_id_slh_dsa_shake_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f]; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +#define DER_OID_V_id_slh_dsa_shake_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1C +#define DER_OID_SZ_id_slh_dsa_shake_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s]; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +#define DER_OID_V_id_slh_dsa_shake_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1D +#define DER_OID_SZ_id_slh_dsa_shake_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f]; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +#define DER_OID_V_id_slh_dsa_shake_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1E +#define DER_OID_SZ_id_slh_dsa_shake_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s]; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +#define DER_OID_V_id_slh_dsa_shake_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1F +#define DER_OID_SZ_id_slh_dsa_shake_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f]; + + +int ossl_DER_w_algorithmIdentifier_SLH_DSA(WPACKET *pkt, int tag, SLH_DSA_KEY *key); diff --git a/deps/openssl/config/archs/VC-WIN32/asm/apps/progs.c b/deps/openssl/config/archs/VC-WIN32/asm/apps/progs.c index 43cef00799b86e..acc204a3e6e781 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/apps/progs.c +++ b/deps/openssl/config/archs/VC-WIN32/asm/apps/progs.c @@ -89,6 +89,7 @@ FUNCTION functions[] = { {FT_general, "s_time", s_time_main, s_time_options, NULL, NULL}, #endif {FT_general, "sess_id", sess_id_main, sess_id_options, NULL, NULL}, + {FT_general, "skeyutl", skeyutl_main, skeyutl_options, NULL, NULL}, {FT_general, "smime", smime_main, smime_options, NULL, NULL}, {FT_general, "speed", speed_main, speed_options, NULL, NULL}, {FT_general, "spkac", spkac_main, spkac_options, NULL, NULL}, @@ -225,9 +226,15 @@ FUNCTION functions[] = { {FT_cipher, "camellia-256-ecb", enc_main, enc_options, NULL}, #endif {FT_cipher, "base64", enc_main, enc_options, NULL}, -#ifdef ZLIB +#ifndef OPENSSL_NO_ZLIB {FT_cipher, "zlib", enc_main, enc_options, NULL}, #endif +#ifndef OPENSSL_NO_BROTLI + {FT_cipher, "brotli", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ZSTD + {FT_cipher, "zstd", enc_main, enc_options, NULL}, +#endif #ifndef OPENSSL_NO_DES {FT_cipher, "des", enc_main, enc_options, NULL}, #endif diff --git a/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm b/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm index 2f73525b1e423a..de1296a33fcf51 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm @@ -19,6 +19,7 @@ our %config = ( "/nologo" ], "AS" => "nasm", + "ASFLAGS" => [], "CC" => "gcc", "CFLAGS" => [ "/W3 /wd4090 /nologo /O2" @@ -29,6 +30,7 @@ our %config = ( "CPPINCLUDES" => [], "CXXFLAGS" => [], "FIPSKEY" => "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813", + "FIPS_VENDOR" => "OpenSSL FIPS Provider", "HASHBANGPERL" => "/usr/bin/env perl", "LD" => "link", "LDFLAGS" => [ @@ -43,7 +45,7 @@ our %config = ( "RANLIB" => "ranlib", "RC" => "rc", "RCFLAGS" => [], - "api" => "30000", + "api" => "30500", "b32" => "1", "b64" => "0", "b64l" => "0", @@ -65,11 +67,13 @@ our %config = ( "doc/build.info", "test/build.info", "engines/build.info", + "exporters/build.info", "crypto/objects/build.info", "crypto/buffer/build.info", "crypto/bio/build.info", "crypto/stack/build.info", "crypto/lhash/build.info", + "crypto/hashtable/build.info", "crypto/rand/build.info", "crypto/evp/build.info", "crypto/asn1/build.info", @@ -87,6 +91,7 @@ our %config = ( "crypto/md5/build.info", "crypto/sha/build.info", "crypto/mdc2/build.info", + "crypto/ml_kem/build.info", "crypto/hmac/build.info", "crypto/ripemd/build.info", "crypto/whrlpool/build.info", @@ -128,11 +133,19 @@ our %config = ( "crypto/cmp/build.info", "crypto/encode_decode/build.info", "crypto/ffc/build.info", + "crypto/hpke/build.info", + "crypto/thread/build.info", + "crypto/ml_dsa/build.info", + "crypto/slh_dsa/build.info", + "ssl/record/build.info", + "ssl/rio/build.info", + "ssl/quic/build.info", "apps/lib/build.info", "providers/common/build.info", "providers/implementations/build.info", "providers/fips/build.info", "doc/man1/build.info", + "ssl/record/methods/build.info", "providers/common/der/build.info", "providers/implementations/digests/build.info", "providers/implementations/ciphers/build.info", @@ -146,6 +159,7 @@ our %config = ( "providers/implementations/encode_decode/build.info", "providers/implementations/storemgmt/build.info", "providers/implementations/kem/build.info", + "providers/implementations/skeymgmt/build.info", "providers/implementations/rands/seeding/build.info" ], "build_metadata" => "", @@ -165,7 +179,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.17", + "full_version" => "3.5.2", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -175,37 +189,51 @@ our %config = ( "major" => "3", "makedep_scheme" => "VC", "makedepcmd" => "\$(CC) /Zs /showIncludes", - "minor" => "0", + "minor" => "5", "openssl_api_defines" => [ - "OPENSSL_CONFIGURED_API=30000" + "OPENSSL_CONFIGURED_API=30500" ], "openssl_feature_defines" => [ "OPENSSL_RAND_SEED_OS", "OPENSSL_THREADS", "OPENSSL_NO_AFALGENG", "OPENSSL_NO_ASAN", + "OPENSSL_NO_BROTLI", + "OPENSSL_NO_BROTLI_DYNAMIC", "OPENSSL_NO_COMP", "OPENSSL_NO_CRYPTO_MDEBUG", "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE", + "OPENSSL_NO_DEMOS", "OPENSSL_NO_DEVCRYPTOENG", "OPENSSL_NO_EC_NISTP_64_GCC_128", "OPENSSL_NO_EGD", "OPENSSL_NO_EXTERNAL_TESTS", + "OPENSSL_NO_FIPS_JITTER", "OPENSSL_NO_FUZZ_AFL", "OPENSSL_NO_FUZZ_LIBFUZZER", + "OPENSSL_NO_H3DEMO", + "OPENSSL_NO_HQINTEROP", + "OPENSSL_NO_JITTER", "OPENSSL_NO_KTLS", "OPENSSL_NO_LOADERENG", "OPENSSL_NO_MD2", "OPENSSL_NO_MSAN", + "OPENSSL_NO_PIE", "OPENSSL_NO_RC5", "OPENSSL_NO_SCTP", "OPENSSL_NO_SSL3", "OPENSSL_NO_SSL3_METHOD", + "OPENSSL_NO_SSLKEYLOG", + "OPENSSL_NO_TFO", "OPENSSL_NO_TRACE", "OPENSSL_NO_UBSAN", "OPENSSL_NO_UNIT_TEST", "OPENSSL_NO_UPLINK", "OPENSSL_NO_WEAK_SSL_CIPHERS", + "OPENSSL_NO_ZLIB", + "OPENSSL_NO_ZLIB_DYNAMIC", + "OPENSSL_NO_ZSTD", + "OPENSSL_NO_ZSTD_DYNAMIC", "OPENSSL_NO_DYNAMIC_ENGINE" ], "openssl_other_defines" => [ @@ -215,11 +243,11 @@ our %config = ( "OPENSSL_SYS_WIN32" ], "openssldir" => "", - "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "17", + "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", + "patch" => "2", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", - "perl_version" => "5.38.2", + "perl_version" => "5.34.0", "perlargv" => [ "no-comp", "no-shared", @@ -249,6 +277,7 @@ our %config = ( "LDLIBS" => undef, "MT" => undef, "MTFLAGS" => undef, + "OBJCOPY" => undef, "OPENSSL_LOCAL_CONFIG_DIR" => undef, "PERL" => undef, "RANLIB" => undef, @@ -268,11 +297,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "1 Jul 2025", + "release_date" => "5 Aug 2025", "shlib_version" => "3", "sourcedir" => ".", "target" => "VC-WIN32", - "version" => "3.0.17" + "version" => "3.5.2" ); our %target = ( "AR" => "lib", @@ -287,7 +316,7 @@ our %target = ( "LDFLAGS" => "/nologo /debug", "MT" => "mt", "MTFLAGS" => "-nologo", - "RANLIB" => "CODE(0x55b1c3240528)", + "RANLIB" => "CODE(0x55b0427d15f0)", "RC" => "rc", "_conf_fname_int" => [ "Configurations/00-base-templates.conf", @@ -370,6 +399,8 @@ our %target = ( our @disablables = ( "acvp-tests", "afalgeng", + "apps", + "argon2", "aria", "asan", "asm", @@ -380,11 +411,14 @@ our @disablables = ( "autoload-config", "bf", "blake2", + "brotli", + "brotli-dynamic", "buildtest-c++", "bulk", "cached-fetch", "camellia", "capieng", + "winstore", "cast", "chacha", "cmac", @@ -393,11 +427,16 @@ our @disablables = ( "comp", "crypto-mdebug", "ct", + "default-thread-pool", + "demos", + "h3demo", + "hqinterop", "deprecated", "des", "devcryptoeng", "dgram", "dh", + "docs", "dsa", "dso", "dtls", @@ -407,6 +446,7 @@ our @disablables = ( "ec_nistp_64_gcc_128", "ecdh", "ecdsa", + "ecx", "egd", "engine", "err", @@ -414,10 +454,15 @@ our @disablables = ( "filenames", "fips", "fips-securitychecks", + "fips-post", + "fips-jitter", "fuzz-afl", "fuzz-libfuzzer", "gost", + "http", "idea", + "integrity-only-ciphers", + "jitter", "ktls", "legacy", "loadereng", @@ -425,6 +470,8 @@ our @disablables = ( "md2", "md4", "mdc2", + "ml-dsa", + "ml-kem", "module", "msan", "multiblock", @@ -433,10 +480,13 @@ our @disablables = ( "ocsp", "padlockeng", "pic", + "pie", "pinshared", "poly1305", "posix-io", "psk", + "quic", + "unstable-qlog", "rc2", "rc4", "rc5", @@ -450,7 +500,9 @@ our @disablables = ( "shared", "siphash", "siv", + "slh-dsa", "sm2", + "sm2-precomp", "sm3", "sm4", "sock", @@ -461,9 +513,13 @@ our @disablables = ( "ssl-trace", "static-engine", "stdio", + "sslkeylog", "tests", + "tfo", + "thread-pool", "threads", "tls", + "tls-deprecated-ec", "trace", "ts", "ubsan", @@ -474,6 +530,8 @@ our @disablables = ( "whirlpool", "zlib", "zlib-dynamic", + "zstd", + "zstd-dynamic", "ssl3", "ssl3-method", "tls1", @@ -494,33 +552,45 @@ our @disablables_int = ( our %disabled = ( "afalgeng" => "option", "asan" => "default", + "brotli" => "default", + "brotli-dynamic" => "default", "buildtest-c++" => "default", "comp" => "option", "crypto-mdebug" => "default", "crypto-mdebug-backtrace" => "default", + "demos" => "default", "devcryptoeng" => "default", "dynamic-engine" => "cascade", "ec_nistp_64_gcc_128" => "default", "egd" => "default", "external-tests" => "default", + "fips-jitter" => "default", "fuzz-afl" => "default", "fuzz-libfuzzer" => "default", + "h3demo" => "default", + "hqinterop" => "default", + "jitter" => "default", "ktls" => "default", "loadereng" => "cascade", "md2" => "default", "msan" => "default", + "pie" => "default", "rc5" => "default", "sctp" => "default", "shared" => "option", "ssl3" => "default", "ssl3-method" => "default", + "sslkeylog" => "default", + "tfo" => "default", "trace" => "default", "ubsan" => "default", "unit-test" => "default", "uplink" => "cascade", "weak-ssl-ciphers" => "default", "zlib" => "default", - "zlib-dynamic" => "default" + "zlib-dynamic" => "default", + "zstd" => "default", + "zstd-dynamic" => "default" ); our %withargs = (); our %unified_info = ( @@ -746,6 +816,11 @@ our %unified_info = ( "pod" => "1" } }, + "doc/man1/openssl-skeyutl.pod" => { + "doc/man1/openssl-skeyutl.pod.in" => { + "pod" => "1" + } + }, "doc/man1/openssl-smime.pod" => { "doc/man1/openssl-smime.pod.in" => { "pod" => "1" @@ -803,6 +878,21 @@ our %unified_info = ( } }, "generate" => { + "exporters/OpenSSLConfig.cmake" => { + "exporter" => "cmake" + }, + "exporters/OpenSSLConfigVersion.cmake" => { + "exporter" => "cmake" + }, + "exporters/libcrypto.pc" => { + "exporter" => "pkg-config" + }, + "exporters/libssl.pc" => { + "exporter" => "pkg-config" + }, + "exporters/openssl.pc" => { + "exporter" => "pkg-config" + }, "include/openssl/configuration.h" => { "skip" => "1" } @@ -823,6 +913,9 @@ our %unified_info = ( "providers/liblegacy.a" => { "noinst" => "1" }, + "providers/libtemplate.a" => { + "noinst" => "1" + }, "test/libtestutil.a" => { "has_main" => "1", "noinst" => "1" @@ -840,6 +933,9 @@ our %unified_info = ( } }, "programs" => { + "fuzz/acert-test" => { + "noinst" => "1" + }, "fuzz/asn1-test" => { "noinst" => "1" }, @@ -870,9 +966,60 @@ our %unified_info = ( "fuzz/ct-test" => { "noinst" => "1" }, + "fuzz/decoder-test" => { + "noinst" => "1" + }, + "fuzz/dtlsclient-test" => { + "noinst" => "1" + }, + "fuzz/dtlsserver-test" => { + "noinst" => "1" + }, + "fuzz/hashtable-test" => { + "noinst" => "1" + }, + "fuzz/ml-dsa-test" => { + "noinst" => "1" + }, + "fuzz/ml-kem-test" => { + "noinst" => "1" + }, + "fuzz/pem-test" => { + "noinst" => "1" + }, + "fuzz/provider-test" => { + "noinst" => "1" + }, + "fuzz/punycode-test" => { + "noinst" => "1" + }, + "fuzz/quic-client-test" => { + "noinst" => "1" + }, + "fuzz/quic-lcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-rcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-server-test" => { + "noinst" => "1" + }, + "fuzz/quic-srtm-test" => { + "noinst" => "1" + }, "fuzz/server-test" => { "noinst" => "1" }, + "fuzz/slh-dsa-test" => { + "noinst" => "1" + }, + "fuzz/smime-test" => { + "noinst" => "1" + }, + "fuzz/v3name-test" => { + "noinst" => "1" + }, "fuzz/x509-test" => { "noinst" => "1" }, @@ -924,18 +1071,30 @@ our %unified_info = ( "test/bftest" => { "noinst" => "1" }, + "test/bio_addr_test" => { + "noinst" => "1" + }, + "test/bio_base64_test" => { + "noinst" => "1" + }, "test/bio_callback_test" => { "noinst" => "1" }, "test/bio_core_test" => { "noinst" => "1" }, + "test/bio_dgram_test" => { + "noinst" => "1" + }, "test/bio_enc_test" => { "noinst" => "1" }, "test/bio_memleak_test" => { "noinst" => "1" }, + "test/bio_meth_test" => { + "noinst" => "1" + }, "test/bio_prefix_text" => { "noinst" => "1" }, @@ -945,6 +1104,9 @@ our %unified_info = ( "test/bio_readbuffer_test" => { "noinst" => "1" }, + "test/bio_tfo_test" => { + "noinst" => "1" + }, "test/bioprinttest" => { "noinst" => "1" }, @@ -954,6 +1116,9 @@ our %unified_info = ( "test/bntest" => { "noinst" => "1" }, + "test/build_wincrypt_test" => { + "noinst" => "1" + }, "test/buildtest_c_aes" => { "noinst" => "1" }, @@ -969,6 +1134,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => { "noinst" => "1" }, + "test/buildtest_c_byteorder" => { + "noinst" => "1" + }, "test/buildtest_c_camellia" => { "noinst" => "1" }, @@ -993,9 +1161,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => { "noinst" => "1" }, - "test/buildtest_c_core_names" => { - "noinst" => "1" - }, "test/buildtest_c_core_object" => { "noinst" => "1" }, @@ -1020,6 +1185,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => { "noinst" => "1" }, + "test/buildtest_c_e_ostime" => { + "noinst" => "1" + }, "test/buildtest_c_ebcdic" => { "noinst" => "1" }, @@ -1047,12 +1215,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => { "noinst" => "1" }, + "test/buildtest_c_hpke" => { + "noinst" => "1" + }, "test/buildtest_c_http" => { "noinst" => "1" }, "test/buildtest_c_idea" => { "noinst" => "1" }, + "test/buildtest_c_indicator" => { + "noinst" => "1" + }, "test/buildtest_c_kdf" => { "noinst" => "1" }, @@ -1068,6 +1242,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => { "noinst" => "1" }, + "test/buildtest_c_ml_kem" => { + "noinst" => "1" + }, "test/buildtest_c_modes" => { "noinst" => "1" }, @@ -1098,6 +1275,9 @@ our %unified_info = ( "test/buildtest_c_provider" => { "noinst" => "1" }, + "test/buildtest_c_quic" => { + "noinst" => "1" + }, "test/buildtest_c_rand" => { "noinst" => "1" }, @@ -1140,6 +1320,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => { "noinst" => "1" }, + "test/buildtest_c_thread" => { + "noinst" => "1" + }, "test/buildtest_c_tls1" => { "noinst" => "1" }, @@ -1155,6 +1338,12 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => { "noinst" => "1" }, + "test/byteorder_test" => { + "noinst" => "1" + }, + "test/ca_internals_test" => { + "noinst" => "1" + }, "test/casttest" => { "noinst" => "1" }, @@ -1239,6 +1428,9 @@ our %unified_info = ( "test/danetest" => { "noinst" => "1" }, + "test/decoder_propq_test" => { + "noinst" => "1" + }, "test/defltfips_test" => { "noinst" => "1" }, @@ -1311,15 +1503,24 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => { "noinst" => "1" }, + "test/evp_pkey_dhkem_test" => { + "noinst" => "1" + }, "test/evp_pkey_dparams_test" => { "noinst" => "1" }, "test/evp_pkey_provided_test" => { "noinst" => "1" }, + "test/evp_skey_test" => { + "noinst" => "1" + }, "test/evp_test" => { "noinst" => "1" }, + "test/evp_xof_test" => { + "noinst" => "1" + }, "test/exdatatest" => { "noinst" => "1" }, @@ -1347,6 +1548,9 @@ our %unified_info = ( "test/hmactest" => { "noinst" => "1" }, + "test/hpke_test" => { + "noinst" => "1" + }, "test/http_test" => { "noinst" => "1" }, @@ -1356,12 +1560,18 @@ our %unified_info = ( "test/igetest" => { "noinst" => "1" }, + "test/json_test" => { + "noinst" => "1" + }, "test/keymgmt_internal_test" => { "noinst" => "1" }, "test/lhash_test" => { "noinst" => "1" }, + "test/list_test" => { + "noinst" => "1" + }, "test/localetest" => { "noinst" => "1" }, @@ -1371,9 +1581,21 @@ our %unified_info = ( "test/mdc2test" => { "noinst" => "1" }, + "test/membio_test" => { + "noinst" => "1" + }, "test/memleaktest" => { "noinst" => "1" }, + "test/ml_dsa_test" => { + "noinst" => "1" + }, + "test/ml_kem_evp_extra_test" => { + "noinst" => "1" + }, + "test/ml_kem_internal_test" => { + "noinst" => "1" + }, "test/modes_internal_test" => { "noinst" => "1" }, @@ -1392,6 +1614,9 @@ our %unified_info = ( "test/packettest" => { "noinst" => "1" }, + "test/pairwise_fail_test" => { + "noinst" => "1" + }, "test/param_build_test" => { "noinst" => "1" }, @@ -1416,6 +1641,9 @@ our %unified_info = ( "test/pemtest" => { "noinst" => "1" }, + "test/pkcs12_api_test" => { + "noinst" => "1" + }, "test/pkcs12_format_test" => { "noinst" => "1" }, @@ -1431,6 +1659,9 @@ our %unified_info = ( "test/poly1305_internal_test" => { "noinst" => "1" }, + "test/priority_queue_test" => { + "noinst" => "1" + }, "test/property_test" => { "noinst" => "1" }, @@ -1440,6 +1671,9 @@ our %unified_info = ( "test/provfetchtest" => { "noinst" => "1" }, + "test/provider_default_search_path_test" => { + "noinst" => "1" + }, "test/provider_fallback_test" => { "noinst" => "1" }, @@ -1458,6 +1692,72 @@ our %unified_info = ( "test/punycode_test" => { "noinst" => "1" }, + "test/quic_ackm_test" => { + "noinst" => "1" + }, + "test/quic_cc_test" => { + "noinst" => "1" + }, + "test/quic_cfq_test" => { + "noinst" => "1" + }, + "test/quic_client_test" => { + "noinst" => "1" + }, + "test/quic_fc_test" => { + "noinst" => "1" + }, + "test/quic_fifd_test" => { + "noinst" => "1" + }, + "test/quic_lcidm_test" => { + "noinst" => "1" + }, + "test/quic_multistream_test" => { + "noinst" => "1" + }, + "test/quic_newcid_test" => { + "noinst" => "1" + }, + "test/quic_qlog_test" => { + "noinst" => "1" + }, + "test/quic_radix_test" => { + "noinst" => "1" + }, + "test/quic_rcidm_test" => { + "noinst" => "1" + }, + "test/quic_record_test" => { + "noinst" => "1" + }, + "test/quic_srt_gen_test" => { + "noinst" => "1" + }, + "test/quic_srtm_test" => { + "noinst" => "1" + }, + "test/quic_stream_test" => { + "noinst" => "1" + }, + "test/quic_tserver_test" => { + "noinst" => "1" + }, + "test/quic_txp_test" => { + "noinst" => "1" + }, + "test/quic_txpim_test" => { + "noinst" => "1" + }, + "test/quic_wire_test" => { + "noinst" => "1" + }, + "test/quicapitest" => { + "noinst" => "1" + }, + "test/quicfaultstest" => { + "noinst" => "1" + }, "test/rand_status_test" => { "noinst" => "1" }, @@ -1473,12 +1773,15 @@ our %unified_info = ( "test/rc5test" => { "noinst" => "1" }, - "test/rdrand_sanitytest" => { + "test/rdcpu_sanitytest" => { "noinst" => "1" }, "test/recordlentest" => { "noinst" => "1" }, + "test/rpktest" => { + "noinst" => "1" + }, "test/rsa_complex" => { "noinst" => "1" }, @@ -1491,6 +1794,12 @@ our %unified_info = ( "test/rsa_test" => { "noinst" => "1" }, + "test/rsa_x931_test" => { + "noinst" => "1" + }, + "test/safe_math_test" => { + "noinst" => "1" + }, "test/sanitytest" => { "noinst" => "1" }, @@ -1506,6 +1815,9 @@ our %unified_info = ( "test/siphash_internal_test" => { "noinst" => "1" }, + "test/slh_dsa_test" => { + "noinst" => "1" + }, "test/sm2_internal_test" => { "noinst" => "1" }, @@ -1527,6 +1839,9 @@ our %unified_info = ( "test/ssl_ctx_test" => { "noinst" => "1" }, + "test/ssl_handshake_rtt_test" => { + "noinst" => "1" + }, "test/ssl_old_test" => { "noinst" => "1" }, @@ -1548,12 +1863,18 @@ our %unified_info = ( "test/stack_test" => { "noinst" => "1" }, + "test/strtoultest" => { + "noinst" => "1" + }, "test/sysdefaulttest" => { "noinst" => "1" }, "test/test_test" => { "noinst" => "1" }, + "test/threadpool_test" => { + "noinst" => "1" + }, "test/threadstest" => { "noinst" => "1" }, @@ -1563,12 +1884,18 @@ our %unified_info = ( "test/time_offset_test" => { "noinst" => "1" }, + "test/time_test" => { + "noinst" => "1" + }, "test/tls13ccstest" => { "noinst" => "1" }, "test/tls13encryptiontest" => { "noinst" => "1" }, + "test/tls13groupselection_test" => { + "noinst" => "1" + }, "test/trace_api_test" => { "noinst" => "1" }, @@ -1596,6 +1923,9 @@ our %unified_info = ( "test/wpackettest" => { "noinst" => "1" }, + "test/x509_acert_test" => { + "noinst" => "1" + }, "test/x509_check_cert_pkey_test" => { "noinst" => "1" }, @@ -1605,6 +1935,15 @@ our %unified_info = ( "test/x509_internal_test" => { "noinst" => "1" }, + "test/x509_load_cert_file_test" => { + "noinst" => "1" + }, + "test/x509_req_test" => { + "noinst" => "1" + }, + "test/x509_test" => { + "noinst" => "1" + }, "test/x509_time_test" => { "noinst" => "1" }, @@ -1704,6 +2043,9 @@ our %unified_info = ( "MD5_ASM", "RC4_ASM" ], + "test/endecode_test" => [ + "STATIC_LEGACY" + ], "test/evp_extra_test" => [ "STATIC_LEGACY" ], @@ -1716,14 +2058,21 @@ our %unified_info = ( }, "depends" => { "" => [ + "OpenSSLConfigVersion.cmake", + "crypto/params_idx.c", + "exporters/OpenSSLConfigVersion.cmake", + "exporters/openssl.pc", "include/crypto/bn_conf.h", "include/crypto/dso_conf.h", + "include/internal/param_names.h", "include/openssl/asn1.h", "include/openssl/asn1t.h", "include/openssl/bio.h", "include/openssl/cmp.h", "include/openssl/cms.h", + "include/openssl/comp.h", "include/openssl/conf.h", + "include/openssl/core_names.h", "include/openssl/crmf.h", "include/openssl/crypto.h", "include/openssl/ct.h", @@ -1740,10 +2089,22 @@ our %unified_info = ( "include/openssl/ssl.h", "include/openssl/ui.h", "include/openssl/x509.h", + "include/openssl/x509_acert.h", "include/openssl/x509_vfy.h", "include/openssl/x509v3.h", + "openssl.pc", "test/provider_internal_test.cnf" ], + "OpenSSLConfig.cmake" => [ + "builddata.pm" + ], + "OpenSSLConfigVersion.cmake" => [ + "OpenSSLConfig.cmake", + "builddata.pm" + ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/progs.h" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/progs.h" ], @@ -1889,6 +2250,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/progs.h" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/progs.h" + ], "apps/openssl-bin-smime.o" => [ "apps/progs.h" ], @@ -1977,6 +2341,9 @@ our %unified_info = ( "crypto/libcrypto-lib-info.o" => [ "crypto/buildinf.h" ], + "crypto/params_idx.c" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "crypto/rc4/rc4-586.S" => [ "crypto/perlasm/x86asm.pl" ], @@ -2142,6 +2509,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -2283,6 +2653,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -2319,6 +2692,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -2334,6 +2710,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -2406,6 +2785,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -2472,6 +2854,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -2571,6 +2956,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -2709,6 +3100,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -2826,6 +3220,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -2913,6 +3313,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -2985,9 +3388,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -3003,12 +3412,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -3078,9 +3493,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -3090,12 +3514,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -3111,9 +3547,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -3138,6 +3580,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -3153,6 +3598,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -3189,6 +3637,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -3462,6 +3913,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -3501,6 +3955,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -3522,6 +3979,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -3636,6 +4096,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -3663,9 +4126,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -3681,6 +4156,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -3690,12 +4168,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -3714,12 +4198,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -3729,9 +4225,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -3744,9 +4246,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -3762,24 +4276,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -3792,6 +4327,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -3801,8 +4342,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -3822,6 +4363,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -3870,6 +4426,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -3936,6 +4495,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -4059,9 +4621,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -4077,6 +4645,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -4101,9 +4672,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -4137,6 +4717,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -4194,15 +4777,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -4212,6 +4807,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -4233,9 +4831,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -4251,6 +4855,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -4263,9 +4870,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -4296,9 +4900,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -4314,12 +4915,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -4374,6 +5029,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -4383,9 +5041,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -4533,6 +5188,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -4674,6 +5332,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -4710,6 +5371,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -4725,6 +5389,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -4797,6 +5464,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -4863,6 +5533,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -4962,6 +5635,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -5100,6 +5779,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -5217,6 +5899,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -5304,6 +5992,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -5376,9 +6067,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -5394,12 +6091,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -5469,9 +6172,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -5481,12 +6193,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -5502,9 +6226,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -5529,6 +6259,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -5544,6 +6277,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -5580,6 +6316,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -5853,6 +6592,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -5892,6 +6634,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -5913,6 +6658,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -6027,6 +6775,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -6054,9 +6805,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -6072,6 +6835,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -6081,12 +6847,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -6105,12 +6877,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -6120,9 +6904,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -6135,9 +6925,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -6153,24 +6955,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -6183,6 +7006,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -6192,8 +7021,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -6213,6 +7042,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -6261,6 +7105,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -6327,6 +7174,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -6450,9 +7300,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -6468,6 +7324,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -6492,9 +7351,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -6528,6 +7396,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -6585,15 +7456,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -6603,6 +7486,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -6624,9 +7510,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -6642,6 +7534,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -6654,9 +7549,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -6687,9 +7579,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -6705,12 +7594,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -6765,6 +7708,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -6774,9 +7720,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -6956,6 +7899,10 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod.in", "doc/perlvars.pm" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in", + "doc/perlvars.pm" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in", "doc/perlvars.pm" @@ -6995,6 +7942,27 @@ our %unified_info = ( "doc/man7/openssl_user_macros.pod" => [ "doc/man7/openssl_user_macros.pod.in" ], + "exporters/OpenSSLConfig.cmake" => [ + "installdata.pm" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/OpenSSLConfig.cmake", + "installdata.pm" + ], + "exporters/libcrypto.pc" => [ + "installdata.pm" + ], + "exporters/libssl.pc" => [ + "installdata.pm" + ], + "exporters/openssl.pc" => [ + "exporters/libcrypto.pc", + "exporters/libssl.pc", + "installdata.pm" + ], + "fuzz/acert-test" => [ + "libcrypto" + ], "fuzz/asn1-test" => [ "libcrypto", "libssl" @@ -7027,17 +7995,85 @@ our %unified_info = ( "fuzz/ct-test" => [ "libcrypto" ], + "fuzz/decoder-test" => [ + "libcrypto" + ], + "fuzz/dtlsclient-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/dtlsserver-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/hashtable-test" => [ + "libcrypto.a" + ], + "fuzz/ml-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/ml-kem-test" => [ + "libcrypto.a" + ], + "fuzz/pem-test" => [ + "libcrypto.a" + ], + "fuzz/provider-test" => [ + "libcrypto" + ], + "fuzz/punycode-test" => [ + "libcrypto.a" + ], + "fuzz/quic-client-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-lcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-rcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-server-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-srtm-test" => [ + "libcrypto.a", + "libssl.a" + ], "fuzz/server-test" => [ "libcrypto", "libssl" ], + "fuzz/slh-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/smime-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/v3name-test" => [ + "libcrypto.a" + ], "fuzz/x509-test" => [ "libcrypto" ], + "include/internal/param_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], + "include/openssl/core_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "libcrypto.ld" => [ "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libcrypto.pc" => [ + "builddata.pm" + ], "libcrypto.rc" => [ "configdata.pm" ], @@ -7048,9 +8084,17 @@ our %unified_info = ( "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libssl.pc" => [ + "builddata.pm" + ], "libssl.rc" => [ "configdata.pm" ], + "openssl.pc" => [ + "builddata.pm", + "libcrypto.pc", + "libssl.pc" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/DIGESTS.asn1", "providers/common/der/NIST.asn1", @@ -7068,11 +8112,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7112,6 +8164,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov/der_rsa.h" ], @@ -7119,6 +8177,12 @@ our %unified_info = ( "providers/common/include/prov/der_digests.h", "providers/common/include/prov/der_rsa.h" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov/der_wrap.h" ], @@ -7158,11 +8222,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7195,9 +8267,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov/der_sm2.h" ], @@ -7210,9 +8288,15 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/legacy" => [ "libcrypto", "providers/liblegacy.a" @@ -7290,6 +8374,14 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_addr_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/bio_base64_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_callback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7298,6 +8390,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_dgram_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_enc_test" => [ "libcrypto", "test/libtestutil.a" @@ -7306,6 +8402,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_meth_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_prefix_text" => [ "libcrypto", "test/libtestutil.a" @@ -7318,6 +8418,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_tfo_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bioprinttest" => [ "libcrypto", "test/libtestutil.a" @@ -7330,6 +8434,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/build_wincrypt_test" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_aes" => [ "libcrypto", "libssl" @@ -7350,6 +8458,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_byteorder" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_camellia" => [ "libcrypto", "libssl" @@ -7382,10 +8494,6 @@ our %unified_info = ( "libcrypto", "libssl" ], - "test/buildtest_c_core_names" => [ - "libcrypto", - "libssl" - ], "test/buildtest_c_core_object" => [ "libcrypto", "libssl" @@ -7418,6 +8526,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_e_ostime" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_ebcdic" => [ "libcrypto", "libssl" @@ -7454,6 +8566,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_hpke" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_http" => [ "libcrypto", "libssl" @@ -7462,6 +8578,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_indicator" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_kdf" => [ "libcrypto", "libssl" @@ -7482,6 +8602,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_ml_kem" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_modes" => [ "libcrypto", "libssl" @@ -7522,6 +8646,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_quic" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_rand" => [ "libcrypto", "libssl" @@ -7578,6 +8706,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_thread" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_tls1" => [ "libcrypto", "libssl" @@ -7598,10 +8730,23 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/byteorder_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ca_internals_test" => [ + "libssl", + "test/libtestutil.a" + ], "test/casttest" => [ "libcrypto", "test/libtestutil.a" ], + "test/cert_comp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/chacha_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7715,7 +8860,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], - "test/defltfips_test" => [ + "test/decoder_propq_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/defltfips_test" => [ "libcrypto", "test/libtestutil.a" ], @@ -7771,6 +8920,8 @@ our %unified_info = ( ], "test/endecode_test" => [ "libcrypto.a", + "providers/libcommon.a", + "providers/liblegacy.a", "test/libtestutil.a" ], "test/endecoder_legacy_test" => [ @@ -7814,6 +8965,10 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => [ "libcrypto" ], + "test/evp_pkey_dhkem_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/evp_pkey_dparams_test" => [ "libcrypto", "test/libtestutil.a" @@ -7822,10 +8977,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/evp_skey_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/evp_xof_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/exdatatest" => [ "libcrypto", "test/libtestutil.a" @@ -7864,6 +9027,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/hpke_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/http_test" => [ "libcrypto", "test/libtestutil.a" @@ -7876,17 +9043,25 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/json_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/keymgmt_internal_test" => [ "libcrypto.a", "test/libtestutil.a" ], "test/lhash_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/libtestutil.a" => [ "libcrypto" ], + "test/list_test" => [ + "test/libtestutil.a" + ], "test/localetest" => [ "libcrypto", "test/libtestutil.a" @@ -7899,10 +9074,26 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/membio_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/memleaktest" => [ "libcrypto", "test/libtestutil.a" ], + "test/ml_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_evp_extra_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_internal_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/modes_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7927,6 +9118,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pairwise_fail_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/param_build_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7959,6 +9154,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pkcs12_api_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/pkcs12_format_test" => [ "libcrypto", "test/libtestutil.a" @@ -7979,6 +9178,11 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/priority_queue_test" => [ + "libcrypto", + "libssl.a", + "test/libtestutil.a" + ], "test/property_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7991,6 +9195,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/provider_default_search_path_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/provider_fallback_test" => [ "libcrypto", "test/libtestutil.a" @@ -8015,12 +9223,122 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/quic_ackm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cfq_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_client_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fifd_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_lcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_multistream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_newcid_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_qlog_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_radix_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_rcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_record_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srt_gen_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srtm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_stream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_tserver_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txpim_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_wire_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicapitest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicfaultstest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/rand_status_test" => [ "libcrypto", "test/libtestutil.a" ], "test/rand_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/rc2test" => [ @@ -8035,7 +9353,7 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "libcrypto.a", "test/libtestutil.a" ], @@ -8044,6 +9362,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/rpktest" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/rsa_mp_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8056,10 +9379,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/sanitytest" => [ + "test/rsa_x931_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/safe_math_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/sanitytest" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/secmemtest" => [ "libcrypto", "test/libtestutil.a" @@ -8077,6 +9408,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/slh_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/sm2_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8106,6 +9441,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/ssl_handshake_rtt_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/ssl_old_test" => [ "libcrypto.a", "libssl.a", @@ -8122,8 +9462,8 @@ our %unified_info = ( "test/libtestutil.a" ], "test/sslapitest" => [ - "libcrypto", - "libssl", + "libcrypto.a", + "libssl.a", "test/libtestutil.a" ], "test/sslbuffertest" => [ @@ -8140,6 +9480,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/strtoultest" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/sysdefaulttest" => [ "libcrypto", "libssl", @@ -8149,8 +9493,12 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/threadpool_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/threadstest" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/threadstest_fips" => [ @@ -8161,6 +9509,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/time_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/tls13ccstest" => [ "libcrypto", "libssl", @@ -8171,6 +9523,11 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/tls13groupselection_test" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/trace_api_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8208,6 +9565,10 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/x509_acert_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_check_cert_pkey_test" => [ "libcrypto", "test/libtestutil.a" @@ -8220,6 +9581,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/x509_load_cert_file_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_req_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_time_test" => [ "libcrypto", "test/libtestutil.a" @@ -8234,9 +9607,13 @@ our %unified_info = ( }, "dirinfo" => { "apps" => { + "deps" => [ + "apps/ca_internals_test-bin-ca.o" + ], "products" => { "bin" => [ - "apps/openssl" + "apps/openssl", + "test/ca_internals_test" ], "script" => [ "apps/CA.pl", @@ -8247,6 +9624,14 @@ our %unified_info = ( "apps/lib" => { "deps" => [ "apps/lib/openssl-bin-cmp_mock_srv.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", "apps/lib/cmp_client_test-bin-cmp_mock_srv.o", "apps/lib/uitest-bin-apps_ui.o", "apps/lib/libapps-lib-app_libctx.o", @@ -8255,12 +9640,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -8273,6 +9660,7 @@ our %unified_info = ( "products" => { "bin" => [ "apps/openssl", + "test/ca_internals_test", "test/cmp_client_test", "test/uitest" ], @@ -8284,8 +9672,12 @@ our %unified_info = ( }, "crypto" => { "deps" => [ + "crypto/asn1_time_test-bin-ctype.o", + "crypto/ca_internals_test-bin-ctype.o", + "crypto/packettest-bin-quic_vlint.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -8295,10 +9687,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -8315,6 +9710,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -8322,12 +9718,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libcrypto-lib-x86cpuid.o", @@ -8350,6 +9750,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -8358,9 +9759,15 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", "crypto/libfips-lib-x86cpuid.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test", + "test/packettest" + ], "lib" => [ "libcrypto", "providers/libfips.a" @@ -8403,6 +9810,8 @@ our %unified_info = ( }, "crypto/asn1" => { "deps" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", "crypto/asn1/libcrypto-lib-a_bitstr.o", "crypto/asn1/libcrypto-lib-a_d2i_fp.o", "crypto/asn1/libcrypto-lib-a_digest.o", @@ -8469,6 +9878,10 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test" + ], "lib" => [ "libcrypto" ] @@ -8534,6 +9947,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -8694,6 +10108,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -9065,7 +10480,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", - "crypto/err/libcrypto-lib-err_prn.o" + "crypto/err/libcrypto-lib-err_mark.o", + "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o" ], "products" => { "lib" => [ @@ -9166,7 +10583,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/evp/libfips-lib-asymcipher.o", "crypto/evp/libfips-lib-dh_support.o", "crypto/evp/libfips-lib-digest.o", @@ -9182,14 +10601,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", - "crypto/evp/libfips-lib-signature.o" + "crypto/evp/libfips-lib-s_lib.o", + "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o" ], "products" => { "lib" => [ @@ -9222,6 +10642,20 @@ our %unified_info = ( ] } }, + "crypto/hashtable" => { + "deps" => [ + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/hmac" => { "deps" => [ "crypto/hmac/libcrypto-lib-hmac.o", @@ -9234,6 +10668,17 @@ our %unified_info = ( ] } }, + "crypto/hpke" => { + "deps" => [ + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, "crypto/http" => { "deps" => [ "crypto/http/libcrypto-lib-http_client.o", @@ -9318,6 +10763,44 @@ our %unified_info = ( ] } }, + "crypto/ml_dsa" => { + "deps" => [ + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ml_kem" => { + "deps" => [ + "crypto/ml_kem/libcrypto-lib-ml_kem.o", + "crypto/ml_kem/libfips-lib-ml_kem.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/modes" => { "deps" => [ "crypto/modes/libcrypto-lib-cbc128.o", @@ -9332,6 +10815,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -9340,7 +10824,8 @@ our %unified_info = ( "crypto/modes/libfips-lib-ghash-x86.o", "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", - "crypto/modes/libfips-lib-xts128.o" + "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o" ], "products" => { "lib" => [ @@ -9484,6 +10969,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rand/libfips-lib-rand_lib.o" ], @@ -9634,6 +11120,36 @@ our %unified_info = ( ] } }, + "crypto/slh_dsa" => { + "deps" => [ + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/sm2" => { "deps" => [ "crypto/sm2/libcrypto-lib-sm2_crypt.o", @@ -9707,6 +11223,38 @@ our %unified_info = ( ] } }, + "crypto/thread" => { + "deps" => [ + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/thread/arch" => { + "deps" => [ + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/ts" => { "deps" => [ "crypto/ts/libcrypto-lib-ts_asn1.o", @@ -9774,14 +11322,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -9790,12 +11346,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -9803,13 +11364,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -9827,6 +11395,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -9836,6 +11405,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -9863,6 +11433,7 @@ our %unified_info = ( "fuzz" => { "products" => { "bin" => [ + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -9873,13 +11444,31 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test" ] } }, "providers" => { "deps" => [ + "providers/endecode_test-bin-legacyprov.o", "providers/evp_extra_test-bin-legacyprov.o", "providers/libcrypto-lib-baseprov.o", "providers/libcrypto-lib-defltprov.o", @@ -9889,6 +11478,7 @@ our %unified_info = ( ], "products" => { "bin" => [ + "test/endecode_test", "test/evp_extra_test" ], "dso" => [ @@ -9940,8 +11530,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/der/libdefault-lib-der_rsa_sig.o", "providers/common/der/libdefault-lib-der_sm2_gen.o", @@ -9960,6 +11554,7 @@ our %unified_info = ( "providers/fips" => { "deps" => [ "providers/fips/fips-dso-fips_entry.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o" @@ -10003,6 +11598,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -10027,7 +11625,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -10124,7 +11728,10 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", - "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" + "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" ], "products" => { "lib" => [ @@ -10152,7 +11759,9 @@ our %unified_info = ( }, "providers/implementations/kdfs" => { "deps" => [ + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -10171,7 +11780,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", - "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" + "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" ], "products" => { "lib" => [ @@ -10183,13 +11793,22 @@ our %unified_info = ( }, "providers/implementations/kem" => { "deps" => [ + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", - "providers/implementations/kem/libfips-lib-rsa_kem.o" + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", + "providers/implementations/kem/libfips-lib-rsa_kem.o", + "providers/implementations/kem/libtemplate-lib-template_kem.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10201,19 +11820,29 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", - "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10241,18 +11870,18 @@ our %unified_info = ( }, "providers/implementations/rands" => { "deps" => [ - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o" ], "products" => { @@ -10281,13 +11910,31 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", - "providers/implementations/signature/libfips-lib-rsa_sig.o" + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", + "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/skeymgmt" => { + "deps" => [ + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o" ], "products" => { "lib" => [ @@ -10299,7 +11946,8 @@ our %unified_info = ( "providers/implementations/storemgmt" => { "deps" => [ "providers/implementations/storemgmt/libdefault-lib-file_store.o", - "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o" + "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", + "providers/implementations/storemgmt/libdefault-lib-winstore_store.o" ], "products" => { "lib" => [ @@ -10315,14 +11963,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -10338,32 +11987,107 @@ our %unified_info = ( "ssl/libssl-lib-t1_trce.o", "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", - "ssl/libssl-lib-tls_srp.o", - "ssl/libdefault-lib-s3_cbc.o", - "ssl/libfips-lib-s3_cbc.o" + "ssl/libssl-lib-tls_srp.o" ], "products" => { "lib" => [ - "libssl", - "providers/libdefault.a", - "providers/libfips.a" + "libssl" + ] + } + }, + "ssl/quic" => { + "deps" => [ + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, "ssl/record" => { "deps" => [ - "ssl/record/libssl-lib-dtls1_bitmap.o", "ssl/record/libssl-lib-rec_layer_d1.o", - "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/libssl-lib-rec_layer_s3.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "ssl/record/methods" => { + "deps" => [ + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/record/methods/libcommon-lib-tls_pad.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o", + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "products" => { "lib" => [ "libssl", - "providers/libcommon.a" + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "ssl/rio" => { + "deps" => [ + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, @@ -10401,9 +12125,40 @@ our %unified_info = ( "test/helpers/dtlstest-bin-ssltestlib.o", "test/helpers/endecode_test-bin-predefined_dhparams.o", "test/helpers/fatalerrtest-bin-ssltestlib.o", + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/helpers/pkcs12_api_test-bin-pkcs12.o", "test/helpers/pkcs12_format_test-bin-pkcs12.o", + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", "test/helpers/recordlentest-bin-ssltestlib.o", + "test/helpers/rpktest-bin-ssltestlib.o", "test/helpers/servername_test-bin-ssltestlib.o", + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/helpers/ssl_test-bin-handshake.o", "test/helpers/ssl_test-bin-handshake_srp.o", @@ -10412,7 +12167,8 @@ our %unified_info = ( "test/helpers/sslapitest-bin-ssltestlib.o", "test/helpers/sslbuffertest-bin-ssltestlib.o", "test/helpers/sslcorrupttest-bin-ssltestlib.o", - "test/helpers/tls13ccstest-bin-ssltestlib.o" + "test/helpers/tls13ccstest-bin-ssltestlib.o", + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" ], "products" => { "bin" => [ @@ -10430,16 +12186,37 @@ our %unified_info = ( "test/dtlstest", "test/endecode_test", "test/fatalerrtest", + "test/json_test", + "test/pkcs12_api_test", "test/pkcs12_format_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_radix_test", + "test/quic_srt_gen_test", + "test/quicapitest", + "test/quicfaultstest", "test/recordlentest", + "test/rpktest", "test/servername_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", "test/sslapitest", "test/sslbuffertest", "test/sslcorrupttest", - "test/tls13ccstest" + "test/tls13ccstest", + "test/tls13groupselection_test" + ] + } + }, + "test/radix" => { + "deps" => [ + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "products" => { + "bin" => [ + "test/quic_radix_test" ] } }, @@ -10451,6 +12228,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -10485,6 +12263,12 @@ our %unified_info = ( } }, "generate" => { + "OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], "apps/openssl.rc" => [ "util/mkrc.pl", "openssl" @@ -10499,6 +12283,19 @@ our %unified_info = ( "\"-H\"", "\$(APPS_OPENSSL)" ], + "builddata.pm" => [ + "util/mkinstallvars.pl", + "PREFIX=.", + "BINDIR=apps", + "APPLINKDIR=ms", + "LIBDIR=", + "INCLUDEDIR=include", + "\"INCLUDEDIR=\$(SRCDIR)/include\"", + "ENGINESDIR=engines", + "MODULESDIR=providers", + "\"VERSION=\$(VERSION)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"" + ], "crypto/aes/aes-586.S" => [ "crypto/aes/asm/aes-586.pl" ], @@ -10520,6 +12317,24 @@ our %unified_info = ( "crypto/aes/aes-ppc.s" => [ "crypto/aes/asm/aes-ppc.pl" ], + "crypto/aes/aes-riscv32-zkn.s" => [ + "crypto/aes/asm/aes-riscv32-zkn.pl" + ], + "crypto/aes/aes-riscv64-zkn.s" => [ + "crypto/aes/asm/aes-riscv64-zkn.pl" + ], + "crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvbb-zvkg-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkb-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkb-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkned.pl" + ], + "crypto/aes/aes-riscv64.s" => [ + "crypto/aes/asm/aes-riscv64.pl" + ], "crypto/aes/aes-s390x.S" => [ "crypto/aes/asm/aes-s390x.pl" ], @@ -10547,6 +12362,9 @@ our %unified_info = ( "crypto/aes/aesni-x86_64.s" => [ "crypto/aes/asm/aesni-x86_64.pl" ], + "crypto/aes/aesni-xts-avx512.s" => [ + "crypto/aes/asm/aesni-xts-avx512.pl" + ], "crypto/aes/aesp8-ppc.s" => [ "crypto/aes/asm/aesp8-ppc.pl" ], @@ -10559,12 +12377,18 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.S" => [ "crypto/aes/asm/bsaes-armv7.pl" ], + "crypto/aes/bsaes-armv8.S" => [ + "crypto/aes/asm/bsaes-armv8.pl" + ], "crypto/aes/bsaes-x86_64.s" => [ "crypto/aes/asm/bsaes-x86_64.pl" ], "crypto/aes/vpaes-armv8.S" => [ "crypto/aes/asm/vpaes-armv8.pl" ], + "crypto/aes/vpaes-loongarch64.S" => [ + "crypto/aes/asm/vpaes-loongarch64.pl" + ], "crypto/aes/vpaes-ppc.s" => [ "crypto/aes/asm/vpaes-ppc.pl" ], @@ -10625,15 +12449,33 @@ our %unified_info = ( "crypto/bn/ppc-mont.s" => [ "crypto/bn/asm/ppc-mont.pl" ], + "crypto/bn/ppc64-mont-fixed.s" => [ + "crypto/bn/asm/ppc64-mont-fixed.pl" + ], "crypto/bn/ppc64-mont.s" => [ "crypto/bn/asm/ppc64-mont.pl" ], + "crypto/bn/rsaz-2k-avx512.s" => [ + "crypto/bn/asm/rsaz-2k-avx512.pl" + ], + "crypto/bn/rsaz-2k-avxifma.s" => [ + "crypto/bn/asm/rsaz-2k-avxifma.pl" + ], + "crypto/bn/rsaz-3k-avx512.s" => [ + "crypto/bn/asm/rsaz-3k-avx512.pl" + ], + "crypto/bn/rsaz-3k-avxifma.s" => [ + "crypto/bn/asm/rsaz-3k-avxifma.pl" + ], + "crypto/bn/rsaz-4k-avx512.s" => [ + "crypto/bn/asm/rsaz-4k-avx512.pl" + ], + "crypto/bn/rsaz-4k-avxifma.s" => [ + "crypto/bn/asm/rsaz-4k-avxifma.pl" + ], "crypto/bn/rsaz-avx2.s" => [ "crypto/bn/asm/rsaz-avx2.pl" ], - "crypto/bn/rsaz-avx512.s" => [ - "crypto/bn/asm/rsaz-avx512.pl" - ], "crypto/bn/rsaz-x86_64.s" => [ "crypto/bn/asm/rsaz-x86_64.pl" ], @@ -10695,6 +12537,9 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.S" => [ "crypto/chacha/asm/chacha-armv4.pl" ], + "crypto/chacha/chacha-armv8-sve.S" => [ + "crypto/chacha/asm/chacha-armv8-sve.pl" + ], "crypto/chacha/chacha-armv8.S" => [ "crypto/chacha/asm/chacha-armv8.pl" ], @@ -10707,9 +12552,19 @@ our %unified_info = ( "crypto/chacha/chacha-ia64.s" => [ "crypto/chacha/chacha-ia64.S" ], + "crypto/chacha/chacha-loongarch64.S" => [ + "crypto/chacha/asm/chacha-loongarch64.pl" + ], "crypto/chacha/chacha-ppc.s" => [ "crypto/chacha/asm/chacha-ppc.pl" ], + "crypto/chacha/chacha-riscv64-v-zbb-zvkb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl", + "zvkb" + ], + "crypto/chacha/chacha-riscv64-v-zbb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl" + ], "crypto/chacha/chacha-s390x.S" => [ "crypto/chacha/asm/chacha-s390x.pl" ], @@ -10719,6 +12574,9 @@ our %unified_info = ( "crypto/chacha/chacha-x86_64.s" => [ "crypto/chacha/asm/chacha-x86_64.pl" ], + "crypto/chacha/chachap10-ppc.s" => [ + "crypto/chacha/asm/chachap10-ppc.pl" + ], "crypto/des/crypt586.S" => [ "crypto/des/asm/crypt586.pl" ], @@ -10731,6 +12589,9 @@ our %unified_info = ( "crypto/des/dest4-sparcv9.S" => [ "crypto/des/asm/dest4-sparcv9.pl" ], + "crypto/ec/ecp_nistp384-ppc64.s" => [ + "crypto/ec/asm/ecp_nistp384-ppc64.pl" + ], "crypto/ec/ecp_nistp521-ppc64.s" => [ "crypto/ec/asm/ecp_nistp521-ppc64.pl" ], @@ -10755,6 +12616,9 @@ our %unified_info = ( "crypto/ec/ecp_nistz256-x86_64.s" => [ "crypto/ec/asm/ecp_nistz256-x86_64.pl" ], + "crypto/ec/ecp_sm2p256-armv8.S" => [ + "crypto/ec/asm/ecp_sm2p256-armv8.pl" + ], "crypto/ec/x25519-ppc64.s" => [ "crypto/ec/asm/x25519-ppc64.pl" ], @@ -10764,18 +12628,39 @@ our %unified_info = ( "crypto/ia64cpuid.s" => [ "crypto/ia64cpuid.S" ], + "crypto/loongarch64cpuid.s" => [ + "crypto/loongarch64cpuid.pl" + ], "crypto/md5/md5-586.S" => [ "crypto/md5/asm/md5-586.pl" ], + "crypto/md5/md5-aarch64.S" => [ + "crypto/md5/asm/md5-aarch64.pl" + ], + "crypto/md5/md5-loongarch64.S" => [ + "crypto/md5/asm/md5-loongarch64.pl" + ], "crypto/md5/md5-sparcv9.S" => [ "crypto/md5/asm/md5-sparcv9.pl" ], "crypto/md5/md5-x86_64.s" => [ "crypto/md5/asm/md5-x86_64.pl" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.S" => [ + "crypto/modes/asm/aes-gcm-armv8-unroll8_64.pl" + ], "crypto/modes/aes-gcm-armv8_64.S" => [ "crypto/modes/asm/aes-gcm-armv8_64.pl" ], + "crypto/modes/aes-gcm-avx512.s" => [ + "crypto/modes/asm/aes-gcm-avx512.pl" + ], + "crypto/modes/aes-gcm-ppc.s" => [ + "crypto/modes/asm/aes-gcm-ppc.pl" + ], + "crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s" => [ + "crypto/modes/asm/aes-gcm-riscv64-zvkb-zvkg-zvkned.pl" + ], "crypto/modes/aesni-gcm-x86_64.s" => [ "crypto/modes/asm/aesni-gcm-x86_64.pl" ], @@ -10794,6 +12679,15 @@ our %unified_info = ( "crypto/modes/ghash-parisc.s" => [ "crypto/modes/asm/ghash-parisc.pl" ], + "crypto/modes/ghash-riscv64-zvkb-zvbc.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkb-zvbc.pl" + ], + "crypto/modes/ghash-riscv64-zvkg.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkg.pl" + ], + "crypto/modes/ghash-riscv64.s" => [ + "crypto/modes/asm/ghash-riscv64.pl" + ], "crypto/modes/ghash-s390x.S" => [ "crypto/modes/asm/ghash-s390x.pl" ], @@ -10812,6 +12706,9 @@ our %unified_info = ( "crypto/modes/ghashv8-armx.S" => [ "crypto/modes/asm/ghashv8-armx.pl" ], + "crypto/params_idx.c" => [ + "crypto/params_idx.c.in" + ], "crypto/pariscid.s" => [ "crypto/pariscid.pl" ], @@ -10872,6 +12769,12 @@ our %unified_info = ( "crypto/ripemd/rmd-586.S" => [ "crypto/ripemd/asm/rmd-586.pl" ], + "crypto/riscv32cpuid.s" => [ + "crypto/riscv32cpuid.pl" + ], + "crypto/riscv64cpuid.s" => [ + "crypto/riscv64cpuid.pl" + ], "crypto/s390xcpuid.S" => [ "crypto/s390xcpuid.pl" ], @@ -10980,6 +12883,9 @@ our %unified_info = ( "crypto/sha/sha256-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S" => [ + "crypto/sha/asm/sha256-riscv64-zvkb-zvknha_or_zvknhb.pl" + ], "crypto/sha/sha256-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -11016,6 +12922,9 @@ our %unified_info = ( "crypto/sha/sha512-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha512-riscv64-zvkb-zvknhb.S" => [ + "crypto/sha/asm/sha512-riscv64-zvkb-zvknhb.pl" + ], "crypto/sha/sha512-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -11028,6 +12937,24 @@ our %unified_info = ( "crypto/sha/sha512p8-ppc.s" => [ "crypto/sha/asm/sha512p8-ppc.pl" ], + "crypto/sm3/sm3-armv8.S" => [ + "crypto/sm3/asm/sm3-armv8.pl" + ], + "crypto/sm3/sm3-riscv64-zvksh.S" => [ + "crypto/sm3/asm/sm3-riscv64-zvksh.pl" + ], + "crypto/sm4/sm4-armv8.S" => [ + "crypto/sm4/asm/sm4-armv8.pl" + ], + "crypto/sm4/sm4-riscv64-zvksed.s" => [ + "crypto/sm4/asm/sm4-riscv64-zvksed.pl" + ], + "crypto/sm4/vpsm4-armv8.S" => [ + "crypto/sm4/asm/vpsm4-armv8.pl" + ], + "crypto/sm4/vpsm4_ex-armv8.S" => [ + "crypto/sm4/asm/vpsm4_ex-armv8.pl" + ], "crypto/uplink-ia64.s" => [ "ms/uplink-ia64.pl" ], @@ -11193,6 +13120,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -11334,6 +13264,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -11370,6 +13303,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -11385,6 +13321,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -11457,6 +13396,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -11523,6 +13465,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -11622,6 +13567,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -11760,6 +13711,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -11877,6 +13831,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -11964,6 +13924,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -12036,9 +13999,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -12054,12 +14023,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -12129,9 +14104,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -12141,12 +14125,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -12162,9 +14158,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -12189,6 +14191,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -12204,6 +14209,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -12240,6 +14248,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -12513,6 +14524,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -12552,6 +14566,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -12573,6 +14590,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -12687,6 +14707,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -12714,9 +14737,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -12732,6 +14767,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -12741,12 +14779,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -12765,12 +14809,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -12780,9 +14836,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -12795,9 +14857,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -12813,24 +14887,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -12843,6 +14938,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -12852,8 +14953,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -12873,6 +14974,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -12921,6 +15037,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -12987,6 +15106,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -13110,9 +15232,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -13128,6 +15256,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -13152,9 +15283,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -13188,6 +15328,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -13245,15 +15388,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -13263,6 +15418,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -13284,9 +15442,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -13302,6 +15466,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -13314,9 +15481,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -13347,9 +15511,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -13365,12 +15526,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -13425,6 +15640,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -13434,9 +15652,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -13584,6 +15799,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -13725,6 +15943,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -13761,6 +15982,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -13776,6 +16000,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -13848,6 +16075,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -13914,6 +16144,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -14013,6 +16246,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -14151,6 +16390,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -14268,6 +16510,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -14355,6 +16603,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -14427,9 +16678,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -14445,12 +16702,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -14520,9 +16783,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -14532,12 +16804,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -14553,9 +16837,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -14580,6 +16870,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -14595,6 +16888,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -14631,6 +16927,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -14904,6 +17203,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -14943,6 +17245,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -14964,6 +17269,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -15078,6 +17386,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -15105,9 +17416,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -15123,6 +17446,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -15132,12 +17458,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -15156,12 +17488,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -15171,9 +17515,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -15186,9 +17536,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -15204,24 +17566,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -15234,6 +17617,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -15243,8 +17632,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -15264,6 +17653,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -15312,6 +17716,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -15378,6 +17785,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -15501,9 +17911,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -15519,6 +17935,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -15543,9 +17962,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -15579,6 +18007,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -15636,15 +18067,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -15654,6 +18097,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -15675,9 +18121,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -15693,6 +18145,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -15705,9 +18160,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -15738,9 +18190,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -15756,12 +18205,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -15816,6 +18319,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -15825,9 +18331,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -15963,6 +18466,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc/man1/openssl-sess_id.pod.in" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in" ], @@ -15999,12 +18505,30 @@ our %unified_info = ( "engines/e_padlock-x86_64.s" => [ "engines/asm/e_padlock-x86_64.pl" ], + "exporters/OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], + "exporters/libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], + "exporters/libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "exporters/openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "include/crypto/bn_conf.h" => [ "include/crypto/bn_conf.h.in" ], "include/crypto/dso_conf.h" => [ "include/crypto/dso_conf.h.in" ], + "include/internal/param_names.h" => [ + "include/internal/param_names.h.in" + ], "include/openssl/asn1.h" => [ "include/openssl/asn1.h.in" ], @@ -16020,12 +18544,18 @@ our %unified_info = ( "include/openssl/cms.h" => [ "include/openssl/cms.h.in" ], + "include/openssl/comp.h" => [ + "include/openssl/comp.h.in" + ], "include/openssl/conf.h" => [ "include/openssl/conf.h.in" ], "include/openssl/configuration.h" => [ "include/openssl/configuration.h.in" ], + "include/openssl/core_names.h" => [ + "include/openssl/core_names.h.in" + ], "include/openssl/crmf.h" => [ "include/openssl/crmf.h.in" ], @@ -16074,16 +18604,37 @@ our %unified_info = ( "include/openssl/x509.h" => [ "include/openssl/x509.h.in" ], + "include/openssl/x509_acert.h" => [ + "include/openssl/x509_acert.h.in" + ], "include/openssl/x509_vfy.h" => [ "include/openssl/x509_vfy.h.in" ], "include/openssl/x509v3.h" => [ "include/openssl/x509v3.h.in" ], + "installdata.pm" => [ + "util/mkinstallvars.pl", + "\"PREFIX=\$(INSTALLTOP)\"", + "BINDIR=bin", + "\"LIBDIR=\$(LIBDIR)\"", + "\"libdir=\$(libdir)\"", + "INCLUDEDIR=include", + "APPLINKDIR=include/openssl", + "\"ENGINESDIR=\$(ENGINESDIR)\"", + "\"MODULESDIR=\$(MODULESDIR)\"", + "\"PKGCONFIGDIR=\$(PKGCONFIGDIR)\"", + "\"CMAKECONFIGDIR=\$(CMAKECONFIGDIR)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"", + "\"VERSION=\$(VERSION)\"" + ], "libcrypto.ld" => [ "util/libcrypto.num", "libcrypto" ], + "libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], "libcrypto.rc" => [ "util/mkrc.pl", "libcrypto" @@ -16092,10 +18643,16 @@ our %unified_info = ( "util/libssl.num", "libssl" ], + "libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], "libssl.rc" => [ "util/mkrc.pl", "libssl" ], + "openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/der_digests_gen.c.in" ], @@ -16108,9 +18665,15 @@ our %unified_info = ( "providers/common/der/der_ecx_gen.c" => [ "providers/common/der/der_ecx_gen.c.in" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/der_ml_dsa_gen.c.in" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/der_rsa_gen.c.in" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/der_slh_dsa_gen.c.in" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/der_sm2_gen.c.in" ], @@ -16129,9 +18692,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/include/prov/der_ecx.h.in" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/include/prov/der_ml_dsa.h.in" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/include/prov/der_rsa.h.in" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/include/prov/der_slh_dsa.h.in" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/include/prov/der_sm2.h.in" ], @@ -16181,6 +18750,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "buffer" ], + "test/buildtest_byteorder.c" => [ + "test/generate_buildtest.pl", + "byteorder" + ], "test/buildtest_camellia.c" => [ "test/generate_buildtest.pl", "camellia" @@ -16213,10 +18786,6 @@ our %unified_info = ( "test/generate_buildtest.pl", "core_dispatch" ], - "test/buildtest_core_names.c" => [ - "test/generate_buildtest.pl", - "core_names" - ], "test/buildtest_core_object.c" => [ "test/generate_buildtest.pl", "core_object" @@ -16249,6 +18818,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "e_os2" ], + "test/buildtest_e_ostime.c" => [ + "test/generate_buildtest.pl", + "e_ostime" + ], "test/buildtest_ebcdic.c" => [ "test/generate_buildtest.pl", "ebcdic" @@ -16285,6 +18858,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "hmac" ], + "test/buildtest_hpke.c" => [ + "test/generate_buildtest.pl", + "hpke" + ], "test/buildtest_http.c" => [ "test/generate_buildtest.pl", "http" @@ -16293,6 +18870,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "idea" ], + "test/buildtest_indicator.c" => [ + "test/generate_buildtest.pl", + "indicator" + ], "test/buildtest_kdf.c" => [ "test/generate_buildtest.pl", "kdf" @@ -16313,6 +18894,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "mdc2" ], + "test/buildtest_ml_kem.c" => [ + "test/generate_buildtest.pl", + "ml_kem" + ], "test/buildtest_modes.c" => [ "test/generate_buildtest.pl", "modes" @@ -16353,6 +18938,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "provider" ], + "test/buildtest_quic.c" => [ + "test/generate_buildtest.pl", + "quic" + ], "test/buildtest_rand.c" => [ "test/generate_buildtest.pl", "rand" @@ -16409,6 +18998,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "symhacks" ], + "test/buildtest_thread.c" => [ + "test/generate_buildtest.pl", + "thread" + ], "test/buildtest_tls1.c" => [ "test/generate_buildtest.pl", "tls1" @@ -16489,6 +19082,7 @@ our %unified_info = ( "doc/html/man1/openssl-s_server.html", "doc/html/man1/openssl-s_time.html", "doc/html/man1/openssl-sess_id.html", + "doc/html/man1/openssl-skeyutl.html", "doc/html/man1/openssl-smime.html", "doc/html/man1/openssl-speed.html", "doc/html/man1/openssl-spkac.html", @@ -16538,6 +19132,7 @@ our %unified_info = ( "doc/html/man3/BIO_find_type.html", "doc/html/man3/BIO_get_data.html", "doc/html/man3/BIO_get_ex_new_index.html", + "doc/html/man3/BIO_get_rpoll_descriptor.html", "doc/html/man3/BIO_meth_new.html", "doc/html/man3/BIO_new.html", "doc/html/man3/BIO_new_CMS.html", @@ -16550,11 +19145,13 @@ our %unified_info = ( "doc/html/man3/BIO_s_connect.html", "doc/html/man3/BIO_s_core.html", "doc/html/man3/BIO_s_datagram.html", + "doc/html/man3/BIO_s_dgram_pair.html", "doc/html/man3/BIO_s_fd.html", "doc/html/man3/BIO_s_file.html", "doc/html/man3/BIO_s_mem.html", "doc/html/man3/BIO_s_null.html", "doc/html/man3/BIO_s_socket.html", + "doc/html/man3/BIO_sendmmsg.html", "doc/html/man3/BIO_set_callback.html", "doc/html/man3/BIO_should_retry.html", "doc/html/man3/BIO_socket_wait.html", @@ -16579,6 +19176,7 @@ our %unified_info = ( "doc/html/man3/BN_swap.html", "doc/html/man3/BN_zero.html", "doc/html/man3/BUF_MEM_new.html", + "doc/html/man3/CMAC_CTX.html", "doc/html/man3/CMS_EncryptedData_decrypt.html", "doc/html/man3/CMS_EncryptedData_encrypt.html", "doc/html/man3/CMS_EnvelopedData_create.html", @@ -16601,6 +19199,7 @@ our %unified_info = ( "doc/html/man3/CMS_uncompress.html", "doc/html/man3/CMS_verify.html", "doc/html/man3/CMS_verify_receipt.html", + "doc/html/man3/COMP_CTX_new.html", "doc/html/man3/CONF_modules_free.html", "doc/html/man3/CONF_modules_load_file.html", "doc/html/man3/CRYPTO_THREAD_run_once.html", @@ -16634,6 +19233,8 @@ our %unified_info = ( "doc/html/man3/DSA_size.html", "doc/html/man3/DTLS_get_data_mtu.html", "doc/html/man3/DTLS_set_timer_cb.html", + "doc/html/man3/DTLSv1_get_timeout.html", + "doc/html/man3/DTLSv1_handle_timeout.html", "doc/html/man3/DTLSv1_listen.html", "doc/html/man3/ECDSA_SIG_new.html", "doc/html/man3/ECDSA_sign.html", @@ -16680,6 +19281,7 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_ctrl.html", "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html", "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html", + "doc/html/man3/EVP_PKEY_CTX_get_algor.html", "doc/html/man3/EVP_PKEY_CTX_new.html", "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html", "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html", @@ -16719,6 +19321,8 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_verify_recover.html", "doc/html/man3/EVP_RAND.html", "doc/html/man3/EVP_SIGNATURE.html", + "doc/html/man3/EVP_SKEY.html", + "doc/html/man3/EVP_SKEYMGMT.html", "doc/html/man3/EVP_SealInit.html", "doc/html/man3/EVP_SignInit.html", "doc/html/man3/EVP_VerifyInit.html", @@ -16748,6 +19352,7 @@ our %unified_info = ( "doc/html/man3/EVP_sm3.html", "doc/html/man3/EVP_sm4_cbc.html", "doc/html/man3/EVP_whirlpool.html", + "doc/html/man3/GENERAL_NAME.html", "doc/html/man3/HMAC.html", "doc/html/man3/MD5.html", "doc/html/man3/MDC2_Init.html", @@ -16772,14 +19377,18 @@ our %unified_info = ( "doc/html/man3/OPENSSL_init_ssl.html", "doc/html/man3/OPENSSL_instrument_bus.html", "doc/html/man3/OPENSSL_load_builtin_modules.html", + "doc/html/man3/OPENSSL_load_u16_le.html", "doc/html/man3/OPENSSL_malloc.html", + "doc/html/man3/OPENSSL_riscvcap.html", "doc/html/man3/OPENSSL_s390xcap.html", "doc/html/man3/OPENSSL_secure_malloc.html", "doc/html/man3/OPENSSL_strcasecmp.html", "doc/html/man3/OSSL_ALGORITHM.html", "doc/html/man3/OSSL_CALLBACK.html", + "doc/html/man3/OSSL_CMP_ATAV_set0.html", "doc/html/man3/OSSL_CMP_CTX_new.html", "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html", + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html", "doc/html/man3/OSSL_CMP_ITAV_set0.html", "doc/html/man3/OSSL_CMP_MSG_get0_header.html", "doc/html/man3/OSSL_CMP_MSG_http_perform.html", @@ -16803,18 +19412,27 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_CTX.html", "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html", "doc/html/man3/OSSL_ENCODER_to_bio.html", + "doc/html/man3/OSSL_ERR_STATE_save.html", "doc/html/man3/OSSL_ESS_check_signing_certs.html", + "doc/html/man3/OSSL_GENERAL_NAMES_print.html", + "doc/html/man3/OSSL_HPKE_CTX_new.html", "doc/html/man3/OSSL_HTTP_REQ_CTX.html", "doc/html/man3/OSSL_HTTP_parse_url.html", "doc/html/man3/OSSL_HTTP_transfer.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html", + "doc/html/man3/OSSL_INDICATOR_set_callback.html", "doc/html/man3/OSSL_ITEM.html", "doc/html/man3/OSSL_LIB_CTX.html", + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html", "doc/html/man3/OSSL_PARAM.html", "doc/html/man3/OSSL_PARAM_BLD.html", "doc/html/man3/OSSL_PARAM_allocate_from_text.html", "doc/html/man3/OSSL_PARAM_dup.html", "doc/html/man3/OSSL_PARAM_int.html", + "doc/html/man3/OSSL_PARAM_print_to_bio.html", "doc/html/man3/OSSL_PROVIDER.html", + "doc/html/man3/OSSL_QUIC_client_method.html", "doc/html/man3/OSSL_SELF_TEST_new.html", "doc/html/man3/OSSL_SELF_TEST_set_callback.html", "doc/html/man3/OSSL_STORE_INFO.html", @@ -16823,11 +19441,13 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_attach.html", "doc/html/man3/OSSL_STORE_expect.html", "doc/html/man3/OSSL_STORE_open.html", + "doc/html/man3/OSSL_sleep.html", "doc/html/man3/OSSL_trace_enabled.html", "doc/html/man3/OSSL_trace_get_category_num.html", "doc/html/man3/OSSL_trace_set_channel.html", "doc/html/man3/OpenSSL_add_all_algorithms.html", "doc/html/man3/OpenSSL_version.html", + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html", "doc/html/man3/PEM_X509_INFO_read_bio_ex.html", "doc/html/man3/PEM_bytes_read_bio.html", "doc/html/man3/PEM_read.html", @@ -16840,6 +19460,7 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_create_cert.html", "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html", "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html", + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html", "doc/html/man3/PKCS12_add1_attr_by_NID.html", "doc/html/man3/PKCS12_add_CSPName_asc.html", "doc/html/man3/PKCS12_add_cert.html", @@ -16931,6 +19552,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_sess_set_get_cb.html", "doc/html/man3/SSL_CTX_sessions.html", "doc/html/man3/SSL_CTX_set0_CA_list.html", + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html", "doc/html/man3/SSL_CTX_set1_curves.html", "doc/html/man3/SSL_CTX_set1_sigalgs.html", "doc/html/man3/SSL_CTX_set1_verify_cert_store.html", @@ -16944,6 +19566,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_ct_validation_callback.html", "doc/html/man3/SSL_CTX_set_ctlog_list_file.html", "doc/html/man3/SSL_CTX_set_default_passwd_cb.html", + "doc/html/man3/SSL_CTX_set_domain_flags.html", "doc/html/man3/SSL_CTX_set_generate_session_id.html", "doc/html/man3/SSL_CTX_set_info_callback.html", "doc/html/man3/SSL_CTX_set_keylog_callback.html", @@ -16951,6 +19574,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_min_proto_version.html", "doc/html/man3/SSL_CTX_set_mode.html", "doc/html/man3/SSL_CTX_set_msg_callback.html", + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html", "doc/html/man3/SSL_CTX_set_num_tickets.html", "doc/html/man3/SSL_CTX_set_options.html", "doc/html/man3/SSL_CTX_set_psk_client_callback.html", @@ -16989,6 +19613,7 @@ our %unified_info = ( "doc/html/man3/SSL_SESSION_print.html", "doc/html/man3/SSL_SESSION_set1_id.html", "doc/html/man3/SSL_accept.html", + "doc/html/man3/SSL_accept_stream.html", "doc/html/man3/SSL_alert_type_string.html", "doc/html/man3/SSL_alloc_buffers.html", "doc/html/man3/SSL_check_chain.html", @@ -16998,59 +19623,90 @@ our %unified_info = ( "doc/html/man3/SSL_export_keying_material.html", "doc/html/man3/SSL_extension_supported.html", "doc/html/man3/SSL_free.html", + "doc/html/man3/SSL_get0_connection.html", + "doc/html/man3/SSL_get0_group_name.html", + "doc/html/man3/SSL_get0_peer_rpk.html", "doc/html/man3/SSL_get0_peer_scts.html", + "doc/html/man3/SSL_get1_builtin_sigalgs.html", "doc/html/man3/SSL_get_SSL_CTX.html", "doc/html/man3/SSL_get_all_async_fds.html", "doc/html/man3/SSL_get_certificate.html", "doc/html/man3/SSL_get_ciphers.html", "doc/html/man3/SSL_get_client_random.html", + "doc/html/man3/SSL_get_conn_close_info.html", "doc/html/man3/SSL_get_current_cipher.html", "doc/html/man3/SSL_get_default_timeout.html", "doc/html/man3/SSL_get_error.html", + "doc/html/man3/SSL_get_event_timeout.html", "doc/html/man3/SSL_get_extms_support.html", "doc/html/man3/SSL_get_fd.html", + "doc/html/man3/SSL_get_handshake_rtt.html", "doc/html/man3/SSL_get_peer_cert_chain.html", "doc/html/man3/SSL_get_peer_certificate.html", "doc/html/man3/SSL_get_peer_signature_nid.html", "doc/html/man3/SSL_get_peer_tmp_key.html", "doc/html/man3/SSL_get_psk_identity.html", "doc/html/man3/SSL_get_rbio.html", + "doc/html/man3/SSL_get_rpoll_descriptor.html", "doc/html/man3/SSL_get_session.html", "doc/html/man3/SSL_get_shared_sigalgs.html", + "doc/html/man3/SSL_get_stream_id.html", + "doc/html/man3/SSL_get_stream_read_state.html", + "doc/html/man3/SSL_get_value_uint.html", "doc/html/man3/SSL_get_verify_result.html", "doc/html/man3/SSL_get_version.html", "doc/html/man3/SSL_group_to_name.html", + "doc/html/man3/SSL_handle_events.html", "doc/html/man3/SSL_in_init.html", + "doc/html/man3/SSL_inject_net_dgram.html", "doc/html/man3/SSL_key_update.html", "doc/html/man3/SSL_library_init.html", "doc/html/man3/SSL_load_client_CA_file.html", "doc/html/man3/SSL_new.html", + "doc/html/man3/SSL_new_domain.html", + "doc/html/man3/SSL_new_listener.html", + "doc/html/man3/SSL_new_stream.html", "doc/html/man3/SSL_pending.html", + "doc/html/man3/SSL_poll.html", "doc/html/man3/SSL_read.html", "doc/html/man3/SSL_read_early_data.html", "doc/html/man3/SSL_rstate_string.html", "doc/html/man3/SSL_session_reused.html", "doc/html/man3/SSL_set1_host.html", + "doc/html/man3/SSL_set1_initial_peer_addr.html", + "doc/html/man3/SSL_set1_server_cert_type.html", "doc/html/man3/SSL_set_async_callback.html", "doc/html/man3/SSL_set_bio.html", + "doc/html/man3/SSL_set_blocking_mode.html", "doc/html/man3/SSL_set_connect_state.html", + "doc/html/man3/SSL_set_default_stream_mode.html", "doc/html/man3/SSL_set_fd.html", + "doc/html/man3/SSL_set_incoming_stream_policy.html", + "doc/html/man3/SSL_set_quic_tls_cbs.html", "doc/html/man3/SSL_set_retry_verify.html", "doc/html/man3/SSL_set_session.html", + "doc/html/man3/SSL_set_session_secret_cb.html", "doc/html/man3/SSL_set_shutdown.html", "doc/html/man3/SSL_set_verify_result.html", "doc/html/man3/SSL_shutdown.html", "doc/html/man3/SSL_state_string.html", + "doc/html/man3/SSL_stream_conclude.html", + "doc/html/man3/SSL_stream_reset.html", "doc/html/man3/SSL_want.html", "doc/html/man3/SSL_write.html", "doc/html/man3/TS_RESP_CTX_new.html", - "doc/html/man3/TS_VERIFY_CTX_set_certs.html", + "doc/html/man3/TS_VERIFY_CTX.html", "doc/html/man3/UI_STRING.html", "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", + "doc/html/man3/X509_ACERT_add1_attr.html", + "doc/html/man3/X509_ACERT_add_attr_nconf.html", + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html", + "doc/html/man3/X509_ACERT_get_attr.html", + "doc/html/man3/X509_ACERT_print_ex.html", "doc/html/man3/X509_ALGOR_dup.html", "doc/html/man3/X509_ATTRIBUTE.html", "doc/html/man3/X509_CRL_get0_by_serial.html", @@ -17067,6 +19723,7 @@ our %unified_info = ( "doc/html/man3/X509_REQ_get_attr.html", "doc/html/man3/X509_REQ_get_extensions.html", "doc/html/man3/X509_SIG_get0.html", + "doc/html/man3/X509_STORE_CTX_get_by_subject.html", "doc/html/man3/X509_STORE_CTX_get_error.html", "doc/html/man3/X509_STORE_CTX_new.html", "doc/html/man3/X509_STORE_CTX_set_verify_cb.html", @@ -17089,6 +19746,7 @@ our %unified_info = ( "doc/html/man3/X509_get0_notBefore.html", "doc/html/man3/X509_get0_signature.html", "doc/html/man3/X509_get0_uids.html", + "doc/html/man3/X509_get_default_cert_file.html", "doc/html/man3/X509_get_extension_flags.html", "doc/html/man3/X509_get_pubkey.html", "doc/html/man3/X509_get_serialNumber.html", @@ -17134,12 +19792,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-RC5.html", "doc/html/man7/EVP_CIPHER-SEED.html", "doc/html/man7/EVP_CIPHER-SM4.html", + "doc/html/man7/EVP_KDF-ARGON2.html", "doc/html/man7/EVP_KDF-HKDF.html", + "doc/html/man7/EVP_KDF-HMAC-DRBG.html", "doc/html/man7/EVP_KDF-KB.html", "doc/html/man7/EVP_KDF-KRB5KDF.html", "doc/html/man7/EVP_KDF-PBKDF1.html", "doc/html/man7/EVP_KDF-PBKDF2.html", "doc/html/man7/EVP_KDF-PKCS12KDF.html", + "doc/html/man7/EVP_KDF-PVKKDF.html", "doc/html/man7/EVP_KDF-SCRYPT.html", "doc/html/man7/EVP_KDF-SS.html", "doc/html/man7/EVP_KDF-SSHKDF.html", @@ -17148,7 +19809,10 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X942-ASN1.html", "doc/html/man7/EVP_KDF-X942-CONCAT.html", "doc/html/man7/EVP_KDF-X963.html", + "doc/html/man7/EVP_KEM-EC.html", + "doc/html/man7/EVP_KEM-ML-KEM.html", "doc/html/man7/EVP_KEM-RSA.html", + "doc/html/man7/EVP_KEM-X25519.html", "doc/html/man7/EVP_KEYEXCH-DH.html", "doc/html/man7/EVP_KEYEXCH-ECDH.html", "doc/html/man7/EVP_KEYEXCH-X25519.html", @@ -17160,6 +19824,7 @@ our %unified_info = ( "doc/html/man7/EVP_MAC-Poly1305.html", "doc/html/man7/EVP_MAC-Siphash.html", "doc/html/man7/EVP_MD-BLAKE2.html", + "doc/html/man7/EVP_MD-KECCAK.html", "doc/html/man7/EVP_MD-MD2.html", "doc/html/man7/EVP_MD-MD4.html", "doc/html/man7/EVP_MD-MD5-SHA1.html", @@ -17179,12 +19844,17 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-EC.html", "doc/html/man7/EVP_PKEY-FFC.html", "doc/html/man7/EVP_PKEY-HMAC.html", + "doc/html/man7/EVP_PKEY-ML-DSA.html", + "doc/html/man7/EVP_PKEY-ML-KEM.html", "doc/html/man7/EVP_PKEY-RSA.html", + "doc/html/man7/EVP_PKEY-SLH-DSA.html", "doc/html/man7/EVP_PKEY-SM2.html", "doc/html/man7/EVP_PKEY-X25519.html", + "doc/html/man7/EVP_RAND-CRNG-TEST.html", "doc/html/man7/EVP_RAND-CTR-DRBG.html", "doc/html/man7/EVP_RAND-HASH-DRBG.html", "doc/html/man7/EVP_RAND-HMAC-DRBG.html", + "doc/html/man7/EVP_RAND-JITTER.html", "doc/html/man7/EVP_RAND-SEED-SRC.html", "doc/html/man7/EVP_RAND-TEST-RAND.html", "doc/html/man7/EVP_RAND.html", @@ -17192,17 +19862,19 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-ECDSA.html", "doc/html/man7/EVP_SIGNATURE-ED25519.html", "doc/html/man7/EVP_SIGNATURE-HMAC.html", + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html", "doc/html/man7/EVP_SIGNATURE-RSA.html", + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html", "doc/html/man7/OSSL_PROVIDER-FIPS.html", "doc/html/man7/OSSL_PROVIDER-base.html", "doc/html/man7/OSSL_PROVIDER-default.html", "doc/html/man7/OSSL_PROVIDER-legacy.html", "doc/html/man7/OSSL_PROVIDER-null.html", + "doc/html/man7/OSSL_STORE-winstore.html", "doc/html/man7/RAND.html", "doc/html/man7/RSA-PSS.html", "doc/html/man7/X25519.html", "doc/html/man7/bio.html", - "doc/html/man7/crypto.html", "doc/html/man7/ct.html", "doc/html/man7/des_modes.html", "doc/html/man7/evp.html", @@ -17213,14 +19885,31 @@ our %unified_info = ( "doc/html/man7/life_cycle-mac.html", "doc/html/man7/life_cycle-pkey.html", "doc/html/man7/life_cycle-rand.html", - "doc/html/man7/migration_guide.html", "doc/html/man7/openssl-core.h.html", "doc/html/man7/openssl-core_dispatch.h.html", "doc/html/man7/openssl-core_names.h.html", "doc/html/man7/openssl-env.html", "doc/html/man7/openssl-glossary.html", + "doc/html/man7/openssl-qlog.html", + "doc/html/man7/openssl-quic-concurrency.html", + "doc/html/man7/openssl-quic.html", "doc/html/man7/openssl-threads.html", "doc/html/man7/openssl_user_macros.html", + "doc/html/man7/ossl-guide-introduction.html", + "doc/html/man7/ossl-guide-libcrypto-introduction.html", + "doc/html/man7/ossl-guide-libraries-introduction.html", + "doc/html/man7/ossl-guide-libssl-introduction.html", + "doc/html/man7/ossl-guide-migration.html", + "doc/html/man7/ossl-guide-quic-client-block.html", + "doc/html/man7/ossl-guide-quic-client-non-block.html", + "doc/html/man7/ossl-guide-quic-introduction.html", + "doc/html/man7/ossl-guide-quic-multi-stream.html", + "doc/html/man7/ossl-guide-quic-server-block.html", + "doc/html/man7/ossl-guide-quic-server-non-block.html", + "doc/html/man7/ossl-guide-tls-client-block.html", + "doc/html/man7/ossl-guide-tls-client-non-block.html", + "doc/html/man7/ossl-guide-tls-introduction.html", + "doc/html/man7/ossl-guide-tls-server-block.html", "doc/html/man7/ossl_store-file.html", "doc/html/man7/ossl_store.html", "doc/html/man7/passphrase-encoding.html", @@ -17239,10 +19928,10 @@ our %unified_info = ( "doc/html/man7/provider-object.html", "doc/html/man7/provider-rand.html", "doc/html/man7/provider-signature.html", + "doc/html/man7/provider-skeymgmt.html", "doc/html/man7/provider-storemgmt.html", "doc/html/man7/provider.html", "doc/html/man7/proxy-certificates.html", - "doc/html/man7/ssl.html", "doc/html/man7/x509.html" ] }, @@ -17257,12 +19946,21 @@ our %unified_info = ( ] }, "includes" => { + "OpenSSLConfig.cmake" => [ + "." + ], + "OpenSSLConfigVersion.cmake" => [ + "." + ], "apps/asn1parse.o" => [ "apps" ], "apps/ca.o" => [ "apps" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps" + ], "apps/ciphers.o" => [ "apps" ], @@ -17489,6 +20187,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps" + ], "apps/openssl-bin-smime.o" => [ "apps" ], @@ -17576,6 +20277,9 @@ our %unified_info = ( "apps/sess_id.o" => [ "apps" ], + "apps/skeyutl.o" => [ + "apps" + ], "apps/smime.o" => [ "apps" ], @@ -17627,6 +20331,12 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.o" => [ "crypto" ], + "crypto/aes/vpaes-armv8.o" => [ + "crypto" + ], + "crypto/aes/vpaes-loongarch64.o" => [ + "crypto" + ], "crypto/arm64cpuid.o" => [ "crypto" ], @@ -17678,9 +20388,15 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.o" => [ "crypto" ], + "crypto/chacha/chacha-armv8-sve.o" => [ + "crypto" + ], "crypto/chacha/chacha-armv8.o" => [ "crypto" ], + "crypto/chacha/chacha-loongarch64.o" => [ + "crypto" + ], "crypto/chacha/chacha-s390x.o" => [ "crypto" ], @@ -17705,15 +20421,27 @@ our %unified_info = ( "crypto/ec/ecp_s390x_nistp.o" => [ "crypto" ], + "crypto/ec/ecp_sm2p256-armv8.o" => [ + "crypto" + ], + "crypto/ec/ecx_key.o" => [ + "crypto" + ], "crypto/ec/ecx_meth.o" => [ "crypto" ], "crypto/ec/ecx_s390x.o" => [ "crypto" ], + "crypto/ec/libcrypto-lib-ecx_key.o" => [ + "crypto" + ], "crypto/ec/libcrypto-lib-ecx_meth.o" => [ "crypto" ], + "crypto/ec/libfips-lib-ecx_key.o" => [ + "crypto" + ], "crypto/evp/e_aes.o" => [ "crypto", "crypto/modes" @@ -17785,9 +20513,18 @@ our %unified_info = ( "crypto/libfips-lib-cpuid.o" => [ "." ], + "crypto/md5/md5-aarch64.o" => [ + "crypto" + ], + "crypto/md5/md5-loongarch64.o" => [ + "crypto" + ], "crypto/md5/md5-sparcv9.o" => [ "crypto" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.o" => [ + "crypto" + ], "crypto/modes/aes-gcm-armv8_64.o" => [ "crypto" ], @@ -17812,6 +20549,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-gcm128.o" => [ "crypto" ], + "crypto/params_idx.c" => [ + "util/perl" + ], "crypto/poly1305/poly1305-armv4.o" => [ "crypto" ], @@ -17833,6 +20573,9 @@ our %unified_info = ( "crypto/sha/keccak1600-armv4.o" => [ "crypto" ], + "crypto/sha/keccak1600-armv8.o" => [ + "crypto" + ], "crypto/sha/sha1-armv4-large.o" => [ "crypto" ], @@ -17878,6 +20621,18 @@ our %unified_info = ( "crypto/sha/sha512-sparcv9.o" => [ "crypto" ], + "crypto/sm3/sm3-armv8.o" => [ + "crypto" + ], + "crypto/sm4/sm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4_ex-armv8.o" => [ + "crypto" + ], "doc/man1/openssl-asn1parse.pod" => [ "doc" ], @@ -18010,6 +20765,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc" + ], "doc/man1/openssl-smime.pod" => [ "doc" ], @@ -18037,6 +20795,24 @@ our %unified_info = ( "doc/man1/openssl-x509.pod" => [ "doc" ], + "exporters/OpenSSLConfig.cmake" => [ + "." + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "." + ], + "exporters/libcrypto.pc" => [ + "." + ], + "exporters/libssl.pc" => [ + "." + ], + "exporters/openssl.pc" => [ + "." + ], + "fuzz/acert-test" => [ + "include" + ], "fuzz/asn1-test" => [ "include" ], @@ -18067,12 +20843,69 @@ our %unified_info = ( "fuzz/ct-test" => [ "include" ], + "fuzz/decoder-test" => [ + "include" + ], + "fuzz/dtlsclient-test" => [ + "include" + ], + "fuzz/dtlsserver-test" => [ + "include" + ], + "fuzz/hashtable-test" => [ + "include" + ], + "fuzz/ml-dsa-test" => [ + "include" + ], + "fuzz/ml-kem-test" => [ + "include" + ], + "fuzz/pem-test" => [ + "include" + ], + "fuzz/provider-test" => [ + "include" + ], + "fuzz/punycode-test" => [ + "include" + ], + "fuzz/quic-client-test" => [ + "include" + ], + "fuzz/quic-lcidm-test" => [ + "include" + ], + "fuzz/quic-rcidm-test" => [ + "include" + ], + "fuzz/quic-server-test" => [ + "include" + ], + "fuzz/quic-srtm-test" => [ + "include" + ], "fuzz/server-test" => [ "include" ], + "fuzz/slh-dsa-test" => [ + "include" + ], + "fuzz/smime-test" => [ + "include" + ], + "fuzz/v3name-test" => [ + "include" + ], "fuzz/x509-test" => [ "include" ], + "include/internal/param_names.h" => [ + "util/perl" + ], + "include/openssl/core_names.h" => [ + "util/perl" + ], "libcrypto" => [ ".", "include", @@ -18083,6 +20916,9 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libcrypto.pc" => [ + "." + ], "libcrypto.rc" => [ "." ], @@ -18094,9 +20930,15 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libssl.pc" => [ + "." + ], "libssl.rc" => [ "." ], + "openssl.pc" => [ + "." + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der" ], @@ -18136,6 +20978,15 @@ our %unified_info = ( "providers/common/der/der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der" ], @@ -18148,6 +20999,15 @@ our %unified_info = ( "providers/common/der/der_rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der" ], @@ -18193,12 +21053,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov" ], @@ -18229,9 +21101,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der" ], @@ -18274,9 +21152,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18289,12 +21173,24 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18307,28 +21203,39 @@ our %unified_info = ( "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libdefault.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libfips.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/liblegacy.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" + ], + "providers/libtemplate.a" => [ + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" ], "test/aborttest" => [ "include", @@ -18397,6 +21304,14 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_addr_test" => [ + "include", + "apps/include" + ], + "test/bio_base64_test" => [ + "include", + "apps/include" + ], "test/bio_callback_test" => [ "include", "apps/include" @@ -18405,11 +21320,20 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_dgram_test" => [ + "include", + "apps/include", + "." + ], "test/bio_enc_test" => [ "include", "apps/include" ], - "test/bio_memleak_test" => [ + "test/bio_memleak_test" => [ + "include", + "apps/include" + ], + "test/bio_meth_test" => [ "include", "apps/include" ], @@ -18426,6 +21350,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_tfo_test" => [ + "include", + "apps/include", + "." + ], "test/bioprinttest" => [ "include", "apps/include" @@ -18440,6 +21369,9 @@ our %unified_info = ( "include", "apps/include" ], + "test/build_wincrypt_test" => [ + "include" + ], "test/buildtest_c_aes" => [ "include" ], @@ -18455,6 +21387,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => [ "include" ], + "test/buildtest_c_byteorder" => [ + "include" + ], "test/buildtest_c_camellia" => [ "include" ], @@ -18479,9 +21414,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => [ "include" ], - "test/buildtest_c_core_names" => [ - "include" - ], "test/buildtest_c_core_object" => [ "include" ], @@ -18506,6 +21438,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => [ "include" ], + "test/buildtest_c_e_ostime" => [ + "include" + ], "test/buildtest_c_ebcdic" => [ "include" ], @@ -18533,12 +21468,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => [ "include" ], + "test/buildtest_c_hpke" => [ + "include" + ], "test/buildtest_c_http" => [ "include" ], "test/buildtest_c_idea" => [ "include" ], + "test/buildtest_c_indicator" => [ + "include" + ], "test/buildtest_c_kdf" => [ "include" ], @@ -18554,6 +21495,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => [ "include" ], + "test/buildtest_c_ml_kem" => [ + "include" + ], "test/buildtest_c_modes" => [ "include" ], @@ -18584,6 +21528,9 @@ our %unified_info = ( "test/buildtest_c_provider" => [ "include" ], + "test/buildtest_c_quic" => [ + "include" + ], "test/buildtest_c_rand" => [ "include" ], @@ -18626,6 +21573,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => [ "include" ], + "test/buildtest_c_thread" => [ + "include" + ], "test/buildtest_c_tls1" => [ "include" ], @@ -18641,10 +21591,24 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => [ "include" ], + "test/byteorder_test" => [ + "include", + "apps/include" + ], + "test/ca_internals_test" => [ + ".", + "include", + "apps/include" + ], "test/casttest" => [ "include", "apps/include" ], + "test/cert_comp_test" => [ + "include", + "apps/include", + "." + ], "test/chacha_internal_test" => [ ".", "include", @@ -18768,6 +21732,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/decoder_propq_test" => [ + ".", + "include", + "apps/include" + ], "test/defltfips_test" => [ "include", "apps/include" @@ -18783,7 +21752,8 @@ our %unified_info = ( "test/drbgtest" => [ "include", "apps/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "test/dsa_no_digest_size_test" => [ "include", @@ -18826,7 +21796,9 @@ our %unified_info = ( "test/endecode_test" => [ ".", "include", - "apps/include" + "apps/include", + "providers/common/include", + "providers/implementations/include" ], "test/endecoder_legacy_test" => [ ".", @@ -18871,6 +21843,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_pkey_dhkem_test" => [ + "include", + "apps/include" + ], "test/evp_pkey_dparams_test" => [ "include", "apps/include" @@ -18879,10 +21855,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_skey_test" => [ + "include", + "apps/include" + ], "test/evp_test" => [ "include", "apps/include" ], + "test/evp_xof_test" => [ + "include", + "apps/include" + ], "test/exdatatest" => [ "include", "apps/include" @@ -18983,22 +21967,62 @@ our %unified_info = ( ".", "include" ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/pkcs12.o" => [ ".", "include" ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + ".", + "include" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ ".", "include" ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/ssl_test-bin-handshake.o" => [ ".", "include" @@ -19032,6 +22056,10 @@ our %unified_info = ( ".", "include" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/hexstr_test" => [ ".", "include", @@ -19041,6 +22069,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/hpke_test" => [ + "include", + "apps/include" + ], "test/http_test" => [ "include", "apps/include" @@ -19053,6 +22085,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/json_test" => [ + "include", + "apps/include" + ], "test/keymgmt_internal_test" => [ ".", "include", @@ -19067,6 +22103,10 @@ our %unified_info = ( "apps/include", "." ], + "test/list_test" => [ + "include", + "apps/include" + ], "test/localetest" => [ "include", "apps/include" @@ -19080,10 +22120,27 @@ our %unified_info = ( "include", "apps/include" ], + "test/membio_test" => [ + "include", + "apps/include", + "." + ], "test/memleaktest" => [ "include", "apps/include" ], + "test/ml_dsa_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_evp_extra_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_internal_test" => [ + "include", + "apps/include" + ], "test/modes_internal_test" => [ ".", "include", @@ -19118,6 +22175,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pairwise_fail_test" => [ + "include", + "apps/include" + ], "test/param_build_test" => [ "include", "apps/include" @@ -19151,6 +22212,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pkcs12_api_test" => [ + "include", + "apps/include" + ], "test/pkcs12_format_test" => [ "include", "apps/include" @@ -19172,6 +22237,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/priority_queue_test" => [ + "include", + "apps/include" + ], "test/property_test" => [ ".", "include", @@ -19185,6 +22254,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/provider_default_search_path_test" => [ + "include", + "apps/include" + ], "test/provider_fallback_test" => [ "include", "apps/include" @@ -19211,6 +22284,97 @@ our %unified_info = ( "include", "apps/include" ], + "test/quic_ackm_test" => [ + "include", + "apps/include" + ], + "test/quic_cc_test" => [ + "include", + "apps/include" + ], + "test/quic_cfq_test" => [ + "include", + "apps/include" + ], + "test/quic_client_test" => [ + "include", + "apps/include" + ], + "test/quic_fc_test" => [ + "include", + "apps/include" + ], + "test/quic_fifd_test" => [ + "include", + "apps/include" + ], + "test/quic_lcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_multistream_test" => [ + "include", + "apps/include" + ], + "test/quic_newcid_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_qlog_test" => [ + "include", + "apps/include" + ], + "test/quic_radix_test" => [ + "include", + "apps/include" + ], + "test/quic_rcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_record_test" => [ + "include", + "apps/include" + ], + "test/quic_srt_gen_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_srtm_test" => [ + "include", + "apps/include" + ], + "test/quic_stream_test" => [ + "include", + "apps/include" + ], + "test/quic_tserver_test" => [ + "include", + "apps/include" + ], + "test/quic_txp_test" => [ + "include", + "apps/include" + ], + "test/quic_txpim_test" => [ + "include", + "apps/include" + ], + "test/quic_wire_test" => [ + "include", + "apps/include" + ], + "test/quicapitest" => [ + "include", + "apps/include" + ], + "test/quicfaultstest" => [ + "include", + "apps/include", + "." + ], "test/rand_status_test" => [ "include", "apps/include" @@ -19231,14 +22395,20 @@ our %unified_info = ( "include", "apps/include" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "include", - "apps/include" + "apps/include", + "crypto" ], "test/recordlentest" => [ "include", "apps/include" ], + "test/rpktest" => [ + "include", + "apps/include", + "." + ], "test/rsa_complex" => [ "include", "apps/include" @@ -19257,6 +22427,15 @@ our %unified_info = ( "include", "apps/include" ], + "test/rsa_x931_test" => [ + ".", + "include", + "apps/include" + ], + "test/safe_math_test" => [ + "include", + "apps/include" + ], "test/sanitytest" => [ "include", "apps/include" @@ -19278,6 +22457,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/slh_dsa_test" => [ + "include", + "apps/include" + ], "test/sm2_internal_test" => [ "include", "apps/include" @@ -19308,6 +22491,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/ssl_handshake_rtt_test" => [ + "include", + "apps/include", + "." + ], "test/ssl_old_test" => [ ".", "include", @@ -19324,6 +22512,7 @@ our %unified_info = ( "test/sslapitest" => [ "include", "apps/include", + "providers/common/include", "." ], "test/sslbuffertest" => [ @@ -19338,6 +22527,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/strtoultest" => [ + "include", + "apps/include" + ], "test/sysdefaulttest" => [ "include", "apps/include" @@ -19346,7 +22539,13 @@ our %unified_info = ( "include", "apps/include" ], + "test/threadpool_test" => [ + ".", + "include", + "apps/include" + ], "test/threadstest" => [ + ".", "include", "apps/include" ], @@ -19358,6 +22557,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/time_test" => [ + "include", + "apps/include" + ], "test/tls13ccstest" => [ "include", "apps/include" @@ -19367,6 +22570,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/tls13groupselection_test" => [ + "include", + "apps/include" + ], "test/trace_api_test" => [ ".", "include", @@ -19405,6 +22612,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_acert_test" => [ + "include", + "apps/include" + ], "test/x509_check_cert_pkey_test" => [ "include", "apps/include" @@ -19418,6 +22629,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_load_cert_file_test" => [ + "include", + "apps/include" + ], + "test/x509_req_test" => [ + "include", + "apps/include" + ], + "test/x509_test" => [ + "include", + "apps/include" + ], "test/x509_time_test" => [ "include", "apps/include" @@ -19439,6 +22662,7 @@ our %unified_info = ( "providers/libdefault.a", "providers/libfips.a", "providers/liblegacy.a", + "providers/libtemplate.a", "test/libtestutil.a" ], "mandocs" => { @@ -19491,6 +22715,7 @@ our %unified_info = ( "doc/man/man1/openssl-s_server.1", "doc/man/man1/openssl-s_time.1", "doc/man/man1/openssl-sess_id.1", + "doc/man/man1/openssl-skeyutl.1", "doc/man/man1/openssl-smime.1", "doc/man/man1/openssl-speed.1", "doc/man/man1/openssl-spkac.1", @@ -19540,6 +22765,7 @@ our %unified_info = ( "doc/man/man3/BIO_find_type.3", "doc/man/man3/BIO_get_data.3", "doc/man/man3/BIO_get_ex_new_index.3", + "doc/man/man3/BIO_get_rpoll_descriptor.3", "doc/man/man3/BIO_meth_new.3", "doc/man/man3/BIO_new.3", "doc/man/man3/BIO_new_CMS.3", @@ -19552,11 +22778,13 @@ our %unified_info = ( "doc/man/man3/BIO_s_connect.3", "doc/man/man3/BIO_s_core.3", "doc/man/man3/BIO_s_datagram.3", + "doc/man/man3/BIO_s_dgram_pair.3", "doc/man/man3/BIO_s_fd.3", "doc/man/man3/BIO_s_file.3", "doc/man/man3/BIO_s_mem.3", "doc/man/man3/BIO_s_null.3", "doc/man/man3/BIO_s_socket.3", + "doc/man/man3/BIO_sendmmsg.3", "doc/man/man3/BIO_set_callback.3", "doc/man/man3/BIO_should_retry.3", "doc/man/man3/BIO_socket_wait.3", @@ -19581,6 +22809,7 @@ our %unified_info = ( "doc/man/man3/BN_swap.3", "doc/man/man3/BN_zero.3", "doc/man/man3/BUF_MEM_new.3", + "doc/man/man3/CMAC_CTX.3", "doc/man/man3/CMS_EncryptedData_decrypt.3", "doc/man/man3/CMS_EncryptedData_encrypt.3", "doc/man/man3/CMS_EnvelopedData_create.3", @@ -19603,6 +22832,7 @@ our %unified_info = ( "doc/man/man3/CMS_uncompress.3", "doc/man/man3/CMS_verify.3", "doc/man/man3/CMS_verify_receipt.3", + "doc/man/man3/COMP_CTX_new.3", "doc/man/man3/CONF_modules_free.3", "doc/man/man3/CONF_modules_load_file.3", "doc/man/man3/CRYPTO_THREAD_run_once.3", @@ -19636,6 +22866,8 @@ our %unified_info = ( "doc/man/man3/DSA_size.3", "doc/man/man3/DTLS_get_data_mtu.3", "doc/man/man3/DTLS_set_timer_cb.3", + "doc/man/man3/DTLSv1_get_timeout.3", + "doc/man/man3/DTLSv1_handle_timeout.3", "doc/man/man3/DTLSv1_listen.3", "doc/man/man3/ECDSA_SIG_new.3", "doc/man/man3/ECDSA_sign.3", @@ -19682,6 +22914,7 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_ctrl.3", "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3", "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3", + "doc/man/man3/EVP_PKEY_CTX_get_algor.3", "doc/man/man3/EVP_PKEY_CTX_new.3", "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3", "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3", @@ -19721,6 +22954,8 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_verify_recover.3", "doc/man/man3/EVP_RAND.3", "doc/man/man3/EVP_SIGNATURE.3", + "doc/man/man3/EVP_SKEY.3", + "doc/man/man3/EVP_SKEYMGMT.3", "doc/man/man3/EVP_SealInit.3", "doc/man/man3/EVP_SignInit.3", "doc/man/man3/EVP_VerifyInit.3", @@ -19750,6 +22985,7 @@ our %unified_info = ( "doc/man/man3/EVP_sm3.3", "doc/man/man3/EVP_sm4_cbc.3", "doc/man/man3/EVP_whirlpool.3", + "doc/man/man3/GENERAL_NAME.3", "doc/man/man3/HMAC.3", "doc/man/man3/MD5.3", "doc/man/man3/MDC2_Init.3", @@ -19774,14 +23010,18 @@ our %unified_info = ( "doc/man/man3/OPENSSL_init_ssl.3", "doc/man/man3/OPENSSL_instrument_bus.3", "doc/man/man3/OPENSSL_load_builtin_modules.3", + "doc/man/man3/OPENSSL_load_u16_le.3", "doc/man/man3/OPENSSL_malloc.3", + "doc/man/man3/OPENSSL_riscvcap.3", "doc/man/man3/OPENSSL_s390xcap.3", "doc/man/man3/OPENSSL_secure_malloc.3", "doc/man/man3/OPENSSL_strcasecmp.3", "doc/man/man3/OSSL_ALGORITHM.3", "doc/man/man3/OSSL_CALLBACK.3", + "doc/man/man3/OSSL_CMP_ATAV_set0.3", "doc/man/man3/OSSL_CMP_CTX_new.3", "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3", + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3", "doc/man/man3/OSSL_CMP_ITAV_set0.3", "doc/man/man3/OSSL_CMP_MSG_get0_header.3", "doc/man/man3/OSSL_CMP_MSG_http_perform.3", @@ -19805,18 +23045,27 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_CTX.3", "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3", "doc/man/man3/OSSL_ENCODER_to_bio.3", + "doc/man/man3/OSSL_ERR_STATE_save.3", "doc/man/man3/OSSL_ESS_check_signing_certs.3", + "doc/man/man3/OSSL_GENERAL_NAMES_print.3", + "doc/man/man3/OSSL_HPKE_CTX_new.3", "doc/man/man3/OSSL_HTTP_REQ_CTX.3", "doc/man/man3/OSSL_HTTP_parse_url.3", "doc/man/man3/OSSL_HTTP_transfer.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3", + "doc/man/man3/OSSL_INDICATOR_set_callback.3", "doc/man/man3/OSSL_ITEM.3", "doc/man/man3/OSSL_LIB_CTX.3", + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3", "doc/man/man3/OSSL_PARAM.3", "doc/man/man3/OSSL_PARAM_BLD.3", "doc/man/man3/OSSL_PARAM_allocate_from_text.3", "doc/man/man3/OSSL_PARAM_dup.3", "doc/man/man3/OSSL_PARAM_int.3", + "doc/man/man3/OSSL_PARAM_print_to_bio.3", "doc/man/man3/OSSL_PROVIDER.3", + "doc/man/man3/OSSL_QUIC_client_method.3", "doc/man/man3/OSSL_SELF_TEST_new.3", "doc/man/man3/OSSL_SELF_TEST_set_callback.3", "doc/man/man3/OSSL_STORE_INFO.3", @@ -19825,11 +23074,13 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_attach.3", "doc/man/man3/OSSL_STORE_expect.3", "doc/man/man3/OSSL_STORE_open.3", + "doc/man/man3/OSSL_sleep.3", "doc/man/man3/OSSL_trace_enabled.3", "doc/man/man3/OSSL_trace_get_category_num.3", "doc/man/man3/OSSL_trace_set_channel.3", "doc/man/man3/OpenSSL_add_all_algorithms.3", "doc/man/man3/OpenSSL_version.3", + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3", "doc/man/man3/PEM_X509_INFO_read_bio_ex.3", "doc/man/man3/PEM_bytes_read_bio.3", "doc/man/man3/PEM_read.3", @@ -19842,6 +23093,7 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_create_cert.3", "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3", "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3", + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3", "doc/man/man3/PKCS12_add1_attr_by_NID.3", "doc/man/man3/PKCS12_add_CSPName_asc.3", "doc/man/man3/PKCS12_add_cert.3", @@ -19933,6 +23185,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_sess_set_get_cb.3", "doc/man/man3/SSL_CTX_sessions.3", "doc/man/man3/SSL_CTX_set0_CA_list.3", + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3", "doc/man/man3/SSL_CTX_set1_curves.3", "doc/man/man3/SSL_CTX_set1_sigalgs.3", "doc/man/man3/SSL_CTX_set1_verify_cert_store.3", @@ -19946,6 +23199,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_ct_validation_callback.3", "doc/man/man3/SSL_CTX_set_ctlog_list_file.3", "doc/man/man3/SSL_CTX_set_default_passwd_cb.3", + "doc/man/man3/SSL_CTX_set_domain_flags.3", "doc/man/man3/SSL_CTX_set_generate_session_id.3", "doc/man/man3/SSL_CTX_set_info_callback.3", "doc/man/man3/SSL_CTX_set_keylog_callback.3", @@ -19953,6 +23207,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_min_proto_version.3", "doc/man/man3/SSL_CTX_set_mode.3", "doc/man/man3/SSL_CTX_set_msg_callback.3", + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3", "doc/man/man3/SSL_CTX_set_num_tickets.3", "doc/man/man3/SSL_CTX_set_options.3", "doc/man/man3/SSL_CTX_set_psk_client_callback.3", @@ -19991,6 +23246,7 @@ our %unified_info = ( "doc/man/man3/SSL_SESSION_print.3", "doc/man/man3/SSL_SESSION_set1_id.3", "doc/man/man3/SSL_accept.3", + "doc/man/man3/SSL_accept_stream.3", "doc/man/man3/SSL_alert_type_string.3", "doc/man/man3/SSL_alloc_buffers.3", "doc/man/man3/SSL_check_chain.3", @@ -20000,59 +23256,90 @@ our %unified_info = ( "doc/man/man3/SSL_export_keying_material.3", "doc/man/man3/SSL_extension_supported.3", "doc/man/man3/SSL_free.3", + "doc/man/man3/SSL_get0_connection.3", + "doc/man/man3/SSL_get0_group_name.3", + "doc/man/man3/SSL_get0_peer_rpk.3", "doc/man/man3/SSL_get0_peer_scts.3", + "doc/man/man3/SSL_get1_builtin_sigalgs.3", "doc/man/man3/SSL_get_SSL_CTX.3", "doc/man/man3/SSL_get_all_async_fds.3", "doc/man/man3/SSL_get_certificate.3", "doc/man/man3/SSL_get_ciphers.3", "doc/man/man3/SSL_get_client_random.3", + "doc/man/man3/SSL_get_conn_close_info.3", "doc/man/man3/SSL_get_current_cipher.3", "doc/man/man3/SSL_get_default_timeout.3", "doc/man/man3/SSL_get_error.3", + "doc/man/man3/SSL_get_event_timeout.3", "doc/man/man3/SSL_get_extms_support.3", "doc/man/man3/SSL_get_fd.3", + "doc/man/man3/SSL_get_handshake_rtt.3", "doc/man/man3/SSL_get_peer_cert_chain.3", "doc/man/man3/SSL_get_peer_certificate.3", "doc/man/man3/SSL_get_peer_signature_nid.3", "doc/man/man3/SSL_get_peer_tmp_key.3", "doc/man/man3/SSL_get_psk_identity.3", "doc/man/man3/SSL_get_rbio.3", + "doc/man/man3/SSL_get_rpoll_descriptor.3", "doc/man/man3/SSL_get_session.3", "doc/man/man3/SSL_get_shared_sigalgs.3", + "doc/man/man3/SSL_get_stream_id.3", + "doc/man/man3/SSL_get_stream_read_state.3", + "doc/man/man3/SSL_get_value_uint.3", "doc/man/man3/SSL_get_verify_result.3", "doc/man/man3/SSL_get_version.3", "doc/man/man3/SSL_group_to_name.3", + "doc/man/man3/SSL_handle_events.3", "doc/man/man3/SSL_in_init.3", + "doc/man/man3/SSL_inject_net_dgram.3", "doc/man/man3/SSL_key_update.3", "doc/man/man3/SSL_library_init.3", "doc/man/man3/SSL_load_client_CA_file.3", "doc/man/man3/SSL_new.3", + "doc/man/man3/SSL_new_domain.3", + "doc/man/man3/SSL_new_listener.3", + "doc/man/man3/SSL_new_stream.3", "doc/man/man3/SSL_pending.3", + "doc/man/man3/SSL_poll.3", "doc/man/man3/SSL_read.3", "doc/man/man3/SSL_read_early_data.3", "doc/man/man3/SSL_rstate_string.3", "doc/man/man3/SSL_session_reused.3", "doc/man/man3/SSL_set1_host.3", + "doc/man/man3/SSL_set1_initial_peer_addr.3", + "doc/man/man3/SSL_set1_server_cert_type.3", "doc/man/man3/SSL_set_async_callback.3", "doc/man/man3/SSL_set_bio.3", + "doc/man/man3/SSL_set_blocking_mode.3", "doc/man/man3/SSL_set_connect_state.3", + "doc/man/man3/SSL_set_default_stream_mode.3", "doc/man/man3/SSL_set_fd.3", + "doc/man/man3/SSL_set_incoming_stream_policy.3", + "doc/man/man3/SSL_set_quic_tls_cbs.3", "doc/man/man3/SSL_set_retry_verify.3", "doc/man/man3/SSL_set_session.3", + "doc/man/man3/SSL_set_session_secret_cb.3", "doc/man/man3/SSL_set_shutdown.3", "doc/man/man3/SSL_set_verify_result.3", "doc/man/man3/SSL_shutdown.3", "doc/man/man3/SSL_state_string.3", + "doc/man/man3/SSL_stream_conclude.3", + "doc/man/man3/SSL_stream_reset.3", "doc/man/man3/SSL_want.3", "doc/man/man3/SSL_write.3", "doc/man/man3/TS_RESP_CTX_new.3", - "doc/man/man3/TS_VERIFY_CTX_set_certs.3", + "doc/man/man3/TS_VERIFY_CTX.3", "doc/man/man3/UI_STRING.3", "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", + "doc/man/man3/X509_ACERT_add1_attr.3", + "doc/man/man3/X509_ACERT_add_attr_nconf.3", + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3", + "doc/man/man3/X509_ACERT_get_attr.3", + "doc/man/man3/X509_ACERT_print_ex.3", "doc/man/man3/X509_ALGOR_dup.3", "doc/man/man3/X509_ATTRIBUTE.3", "doc/man/man3/X509_CRL_get0_by_serial.3", @@ -20069,6 +23356,7 @@ our %unified_info = ( "doc/man/man3/X509_REQ_get_attr.3", "doc/man/man3/X509_REQ_get_extensions.3", "doc/man/man3/X509_SIG_get0.3", + "doc/man/man3/X509_STORE_CTX_get_by_subject.3", "doc/man/man3/X509_STORE_CTX_get_error.3", "doc/man/man3/X509_STORE_CTX_new.3", "doc/man/man3/X509_STORE_CTX_set_verify_cb.3", @@ -20091,6 +23379,7 @@ our %unified_info = ( "doc/man/man3/X509_get0_notBefore.3", "doc/man/man3/X509_get0_signature.3", "doc/man/man3/X509_get0_uids.3", + "doc/man/man3/X509_get_default_cert_file.3", "doc/man/man3/X509_get_extension_flags.3", "doc/man/man3/X509_get_pubkey.3", "doc/man/man3/X509_get_serialNumber.3", @@ -20136,12 +23425,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-RC5.7", "doc/man/man7/EVP_CIPHER-SEED.7", "doc/man/man7/EVP_CIPHER-SM4.7", + "doc/man/man7/EVP_KDF-ARGON2.7", "doc/man/man7/EVP_KDF-HKDF.7", + "doc/man/man7/EVP_KDF-HMAC-DRBG.7", "doc/man/man7/EVP_KDF-KB.7", "doc/man/man7/EVP_KDF-KRB5KDF.7", "doc/man/man7/EVP_KDF-PBKDF1.7", "doc/man/man7/EVP_KDF-PBKDF2.7", "doc/man/man7/EVP_KDF-PKCS12KDF.7", + "doc/man/man7/EVP_KDF-PVKKDF.7", "doc/man/man7/EVP_KDF-SCRYPT.7", "doc/man/man7/EVP_KDF-SS.7", "doc/man/man7/EVP_KDF-SSHKDF.7", @@ -20150,7 +23442,10 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X942-ASN1.7", "doc/man/man7/EVP_KDF-X942-CONCAT.7", "doc/man/man7/EVP_KDF-X963.7", + "doc/man/man7/EVP_KEM-EC.7", + "doc/man/man7/EVP_KEM-ML-KEM.7", "doc/man/man7/EVP_KEM-RSA.7", + "doc/man/man7/EVP_KEM-X25519.7", "doc/man/man7/EVP_KEYEXCH-DH.7", "doc/man/man7/EVP_KEYEXCH-ECDH.7", "doc/man/man7/EVP_KEYEXCH-X25519.7", @@ -20162,6 +23457,7 @@ our %unified_info = ( "doc/man/man7/EVP_MAC-Poly1305.7", "doc/man/man7/EVP_MAC-Siphash.7", "doc/man/man7/EVP_MD-BLAKE2.7", + "doc/man/man7/EVP_MD-KECCAK.7", "doc/man/man7/EVP_MD-MD2.7", "doc/man/man7/EVP_MD-MD4.7", "doc/man/man7/EVP_MD-MD5-SHA1.7", @@ -20181,12 +23477,17 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-EC.7", "doc/man/man7/EVP_PKEY-FFC.7", "doc/man/man7/EVP_PKEY-HMAC.7", + "doc/man/man7/EVP_PKEY-ML-DSA.7", + "doc/man/man7/EVP_PKEY-ML-KEM.7", "doc/man/man7/EVP_PKEY-RSA.7", + "doc/man/man7/EVP_PKEY-SLH-DSA.7", "doc/man/man7/EVP_PKEY-SM2.7", "doc/man/man7/EVP_PKEY-X25519.7", + "doc/man/man7/EVP_RAND-CRNG-TEST.7", "doc/man/man7/EVP_RAND-CTR-DRBG.7", "doc/man/man7/EVP_RAND-HASH-DRBG.7", "doc/man/man7/EVP_RAND-HMAC-DRBG.7", + "doc/man/man7/EVP_RAND-JITTER.7", "doc/man/man7/EVP_RAND-SEED-SRC.7", "doc/man/man7/EVP_RAND-TEST-RAND.7", "doc/man/man7/EVP_RAND.7", @@ -20194,17 +23495,19 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-ECDSA.7", "doc/man/man7/EVP_SIGNATURE-ED25519.7", "doc/man/man7/EVP_SIGNATURE-HMAC.7", + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7", "doc/man/man7/EVP_SIGNATURE-RSA.7", + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7", "doc/man/man7/OSSL_PROVIDER-FIPS.7", "doc/man/man7/OSSL_PROVIDER-base.7", "doc/man/man7/OSSL_PROVIDER-default.7", "doc/man/man7/OSSL_PROVIDER-legacy.7", "doc/man/man7/OSSL_PROVIDER-null.7", + "doc/man/man7/OSSL_STORE-winstore.7", "doc/man/man7/RAND.7", "doc/man/man7/RSA-PSS.7", "doc/man/man7/X25519.7", "doc/man/man7/bio.7", - "doc/man/man7/crypto.7", "doc/man/man7/ct.7", "doc/man/man7/des_modes.7", "doc/man/man7/evp.7", @@ -20215,14 +23518,31 @@ our %unified_info = ( "doc/man/man7/life_cycle-mac.7", "doc/man/man7/life_cycle-pkey.7", "doc/man/man7/life_cycle-rand.7", - "doc/man/man7/migration_guide.7", "doc/man/man7/openssl-core.h.7", "doc/man/man7/openssl-core_dispatch.h.7", "doc/man/man7/openssl-core_names.h.7", "doc/man/man7/openssl-env.7", "doc/man/man7/openssl-glossary.7", + "doc/man/man7/openssl-qlog.7", + "doc/man/man7/openssl-quic-concurrency.7", + "doc/man/man7/openssl-quic.7", "doc/man/man7/openssl-threads.7", "doc/man/man7/openssl_user_macros.7", + "doc/man/man7/ossl-guide-introduction.7", + "doc/man/man7/ossl-guide-libcrypto-introduction.7", + "doc/man/man7/ossl-guide-libraries-introduction.7", + "doc/man/man7/ossl-guide-libssl-introduction.7", + "doc/man/man7/ossl-guide-migration.7", + "doc/man/man7/ossl-guide-quic-client-block.7", + "doc/man/man7/ossl-guide-quic-client-non-block.7", + "doc/man/man7/ossl-guide-quic-introduction.7", + "doc/man/man7/ossl-guide-quic-multi-stream.7", + "doc/man/man7/ossl-guide-quic-server-block.7", + "doc/man/man7/ossl-guide-quic-server-non-block.7", + "doc/man/man7/ossl-guide-tls-client-block.7", + "doc/man/man7/ossl-guide-tls-client-non-block.7", + "doc/man/man7/ossl-guide-tls-introduction.7", + "doc/man/man7/ossl-guide-tls-server-block.7", "doc/man/man7/ossl_store-file.7", "doc/man/man7/ossl_store.7", "doc/man/man7/passphrase-encoding.7", @@ -20241,10 +23561,10 @@ our %unified_info = ( "doc/man/man7/provider-object.7", "doc/man/man7/provider-rand.7", "doc/man/man7/provider-signature.7", + "doc/man/man7/provider-skeymgmt.7", "doc/man/man7/provider-storemgmt.7", "doc/man/man7/provider.7", "doc/man/man7/proxy-certificates.7", - "doc/man/man7/ssl.7", "doc/man/man7/x509.7" ] }, @@ -20256,6 +23576,7 @@ our %unified_info = ( ], "programs" => [ "apps/openssl", + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -20266,7 +23587,24 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test", "test/aborttest", "test/acvp_test", @@ -20284,21 +23622,28 @@ our %unified_info = ( "test/asynctest", "test/bad_dtls_test", "test/bftest", + "test/bio_addr_test", + "test/bio_base64_test", "test/bio_callback_test", "test/bio_core_test", + "test/bio_dgram_test", "test/bio_enc_test", "test/bio_memleak_test", + "test/bio_meth_test", "test/bio_prefix_text", "test/bio_pw_callback_test", "test/bio_readbuffer_test", + "test/bio_tfo_test", "test/bioprinttest", "test/bn_internal_test", "test/bntest", + "test/build_wincrypt_test", "test/buildtest_c_aes", "test/buildtest_c_async", "test/buildtest_c_blowfish", "test/buildtest_c_bn", "test/buildtest_c_buffer", + "test/buildtest_c_byteorder", "test/buildtest_c_camellia", "test/buildtest_c_cast", "test/buildtest_c_cmac", @@ -20307,7 +23652,6 @@ our %unified_info = ( "test/buildtest_c_conftypes", "test/buildtest_c_core", "test/buildtest_c_core_dispatch", - "test/buildtest_c_core_names", "test/buildtest_c_core_object", "test/buildtest_c_cryptoerr_legacy", "test/buildtest_c_decoder", @@ -20316,6 +23660,7 @@ our %unified_info = ( "test/buildtest_c_dsa", "test/buildtest_c_dtls1", "test/buildtest_c_e_os2", + "test/buildtest_c_e_ostime", "test/buildtest_c_ebcdic", "test/buildtest_c_ec", "test/buildtest_c_ecdh", @@ -20325,13 +23670,16 @@ our %unified_info = ( "test/buildtest_c_evp", "test/buildtest_c_fips_names", "test/buildtest_c_hmac", + "test/buildtest_c_hpke", "test/buildtest_c_http", "test/buildtest_c_idea", + "test/buildtest_c_indicator", "test/buildtest_c_kdf", "test/buildtest_c_macros", "test/buildtest_c_md4", "test/buildtest_c_md5", "test/buildtest_c_mdc2", + "test/buildtest_c_ml_kem", "test/buildtest_c_modes", "test/buildtest_c_obj_mac", "test/buildtest_c_objects", @@ -20342,6 +23690,7 @@ our %unified_info = ( "test/buildtest_c_pem2", "test/buildtest_c_prov_ssl", "test/buildtest_c_provider", + "test/buildtest_c_quic", "test/buildtest_c_rand", "test/buildtest_c_rc2", "test/buildtest_c_rc4", @@ -20356,11 +23705,14 @@ our %unified_info = ( "test/buildtest_c_stack", "test/buildtest_c_store", "test/buildtest_c_symhacks", + "test/buildtest_c_thread", "test/buildtest_c_tls1", "test/buildtest_c_ts", "test/buildtest_c_txt_db", "test/buildtest_c_types", "test/buildtest_c_whrlpool", + "test/byteorder_test", + "test/ca_internals_test", "test/casttest", "test/chacha_internal_test", "test/cipher_overhead_test", @@ -20389,6 +23741,7 @@ our %unified_info = ( "test/curve448_internal_test", "test/d2i_test", "test/danetest", + "test/decoder_propq_test", "test/defltfips_test", "test/destest", "test/dhtest", @@ -20413,9 +23766,12 @@ our %unified_info = ( "test/evp_kdf_test", "test/evp_libctx_test", "test/evp_pkey_ctx_new_from_name", + "test/evp_pkey_dhkem_test", "test/evp_pkey_dparams_test", "test/evp_pkey_provided_test", + "test/evp_skey_test", "test/evp_test", + "test/evp_xof_test", "test/exdatatest", "test/exptest", "test/ext_internal_test", @@ -20425,21 +23781,29 @@ our %unified_info = ( "test/gmdifftest", "test/hexstr_test", "test/hmactest", + "test/hpke_test", "test/http_test", "test/ideatest", "test/igetest", + "test/json_test", "test/keymgmt_internal_test", "test/lhash_test", + "test/list_test", "test/localetest", "test/mdc2_internal_test", "test/mdc2test", + "test/membio_test", "test/memleaktest", + "test/ml_dsa_test", + "test/ml_kem_evp_extra_test", + "test/ml_kem_internal_test", "test/modes_internal_test", "test/namemap_internal_test", "test/nodefltctxtest", "test/ocspapitest", "test/ossl_store_test", "test/packettest", + "test/pairwise_fail_test", "test/param_build_test", "test/params_api_test", "test/params_conversion_test", @@ -20448,36 +23812,65 @@ our %unified_info = ( "test/pbetest", "test/pem_read_depr_test", "test/pemtest", + "test/pkcs12_api_test", "test/pkcs12_format_test", "test/pkcs7_test", "test/pkey_meth_kdf_test", "test/pkey_meth_test", "test/poly1305_internal_test", + "test/priority_queue_test", "test/property_test", "test/prov_config_test", "test/provfetchtest", + "test/provider_default_search_path_test", "test/provider_fallback_test", "test/provider_internal_test", "test/provider_pkey_test", "test/provider_status_test", "test/provider_test", "test/punycode_test", + "test/quic_ackm_test", + "test/quic_cc_test", + "test/quic_cfq_test", + "test/quic_client_test", + "test/quic_fc_test", + "test/quic_fifd_test", + "test/quic_lcidm_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_qlog_test", + "test/quic_radix_test", + "test/quic_rcidm_test", + "test/quic_record_test", + "test/quic_srt_gen_test", + "test/quic_srtm_test", + "test/quic_stream_test", + "test/quic_tserver_test", + "test/quic_txp_test", + "test/quic_txpim_test", + "test/quic_wire_test", + "test/quicapitest", + "test/quicfaultstest", "test/rand_status_test", "test/rand_test", "test/rc2test", "test/rc4test", "test/rc5test", - "test/rdrand_sanitytest", + "test/rdcpu_sanitytest", "test/recordlentest", + "test/rpktest", "test/rsa_complex", "test/rsa_mp_test", "test/rsa_sp800_56b_test", "test/rsa_test", + "test/rsa_x931_test", + "test/safe_math_test", "test/sanitytest", "test/secmemtest", "test/servername_test", "test/sha_test", "test/siphash_internal_test", + "test/slh_dsa_test", "test/sm2_internal_test", "test/sm3_internal_test", "test/sm4_internal_test", @@ -20485,6 +23878,7 @@ our %unified_info = ( "test/srptest", "test/ssl_cert_table_internal_test", "test/ssl_ctx_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", @@ -20492,13 +23886,17 @@ our %unified_info = ( "test/sslbuffertest", "test/sslcorrupttest", "test/stack_test", + "test/strtoultest", "test/sysdefaulttest", "test/test_test", + "test/threadpool_test", "test/threadstest", "test/threadstest_fips", "test/time_offset_test", + "test/time_test", "test/tls13ccstest", "test/tls13encryptiontest", + "test/tls13groupselection_test", "test/trace_api_test", "test/uitest", "test/upcallstest", @@ -20508,9 +23906,13 @@ our %unified_info = ( "test/verify_extra_test", "test/versions", "test/wpackettest", + "test/x509_acert_test", "test/x509_check_cert_pkey_test", "test/x509_dup_cert_test", "test/x509_internal_test", + "test/x509_load_cert_file_test", + "test/x509_req_test", + "test/x509_test", "test/x509_time_test", "test/x509aux" ], @@ -20525,6 +23927,33 @@ our %unified_info = ( "apps/CA.pl" => [ "apps/CA.pl.in" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/ca.c" + ], + "apps/lib/ca_internals_test-bin-app_libctx.o" => [ + "apps/lib/app_libctx.c" + ], + "apps/lib/ca_internals_test-bin-app_provider.o" => [ + "apps/lib/app_provider.c" + ], + "apps/lib/ca_internals_test-bin-app_rand.o" => [ + "apps/lib/app_rand.c" + ], + "apps/lib/ca_internals_test-bin-app_x509.o" => [ + "apps/lib/app_x509.c" + ], + "apps/lib/ca_internals_test-bin-apps.o" => [ + "apps/lib/apps.c" + ], + "apps/lib/ca_internals_test-bin-apps_ui.o" => [ + "apps/lib/apps_ui.c" + ], + "apps/lib/ca_internals_test-bin-engine.o" => [ + "apps/lib/engine.c" + ], + "apps/lib/ca_internals_test-bin-fmt.o" => [ + "apps/lib/fmt.c" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/lib/cmp_mock_srv.c" ], @@ -20546,6 +23975,9 @@ our %unified_info = ( "apps/lib/libapps-lib-apps.o" => [ "apps/lib/apps.c" ], + "apps/lib/libapps-lib-apps_opt_printf.o" => [ + "apps/lib/apps_opt_printf.c" + ], "apps/lib/libapps-lib-apps_ui.o" => [ "apps/lib/apps_ui.c" ], @@ -20564,6 +23996,9 @@ our %unified_info = ( "apps/lib/libapps-lib-http_server.o" => [ "apps/lib/http_server.c" ], + "apps/lib/libapps-lib-log.o" => [ + "apps/lib/log.c" + ], "apps/lib/libapps-lib-names.o" => [ "apps/lib/names.c" ], @@ -20601,12 +24036,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -20662,6 +24099,7 @@ our %unified_info = ( "apps/openssl-bin-s_server.o", "apps/openssl-bin-s_time.o", "apps/openssl-bin-sess_id.o", + "apps/openssl-bin-skeyutl.o", "apps/openssl-bin-smime.o", "apps/openssl-bin-speed.o", "apps/openssl-bin-spkac.o", @@ -20810,6 +24248,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/sess_id.c" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/skeyutl.c" + ], "apps/openssl-bin-smime.o" => [ "apps/smime.c" ], @@ -20885,6 +24326,12 @@ our %unified_info = ( "crypto/aria/libcrypto-lib-aria.o" => [ "crypto/aria/aria.c" ], + "crypto/asn1/asn1_time_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], + "crypto/asn1/ca_internals_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], "crypto/asn1/libcrypto-lib-a_bitstr.o" => [ "crypto/asn1/a_bitstr.c" ], @@ -21077,6 +24524,9 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" => [ "crypto/asn1/x_val.c" ], + "crypto/asn1_time_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/async/arch/libcrypto-lib-async_null.o" => [ "crypto/async/arch/async_null.c" ], @@ -21170,6 +24620,9 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_dgram.o" => [ "crypto/bio/bss_dgram.c" ], + "crypto/bio/libcrypto-lib-bss_dgram_pair.o" => [ + "crypto/bio/bss_dgram_pair.c" + ], "crypto/bio/libcrypto-lib-bss_fd.o" => [ "crypto/bio/bss_fd.c" ], @@ -21401,6 +24854,9 @@ our %unified_info = ( "crypto/buffer/libfips-lib-buffer.o" => [ "crypto/buffer/buffer.c" ], + "crypto/ca_internals_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/camellia/libcrypto-lib-cmll-x86.o" => [ "crypto/camellia/cmll-x86.S" ], @@ -21452,6 +24908,9 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_err.o" => [ "crypto/cmp/cmp_err.c" ], + "crypto/cmp/libcrypto-lib-cmp_genm.o" => [ + "crypto/cmp/cmp_genm.c" + ], "crypto/cmp/libcrypto-lib-cmp_hdr.o" => [ "crypto/cmp/cmp_hdr.c" ], @@ -22139,9 +25598,15 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_blocks.o" => [ "crypto/err/err_blocks.c" ], + "crypto/err/libcrypto-lib-err_mark.o" => [ + "crypto/err/err_mark.c" + ], "crypto/err/libcrypto-lib-err_prn.o" => [ "crypto/err/err_prn.c" ], + "crypto/err/libcrypto-lib-err_save.o" => [ + "crypto/err/err_save.c" + ], "crypto/ess/libcrypto-lib-ess_asn1.o" => [ "crypto/ess/ess_asn1.c" ], @@ -22388,9 +25853,15 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libcrypto-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libcrypto-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libcrypto-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/evp/libfips-lib-asymcipher.o" => [ "crypto/evp/asymcipher.c" ], @@ -22436,9 +25907,6 @@ our %unified_info = ( "crypto/evp/libfips-lib-keymgmt_meth.o" => [ "crypto/evp/keymgmt_meth.c" ], - "crypto/evp/libfips-lib-m_sigver.o" => [ - "crypto/evp/m_sigver.c" - ], "crypto/evp/libfips-lib-mac_lib.o" => [ "crypto/evp/mac_lib.c" ], @@ -22457,9 +25925,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libfips-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libfips-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libfips-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/ffc/libcrypto-lib-ffc_backend.o" => [ "crypto/ffc/ffc_backend.c" ], @@ -22502,12 +25976,30 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params_validate.o" => [ "crypto/ffc/ffc_params_validate.c" ], + "crypto/hashtable/libcrypto-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libcrypto-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], + "crypto/hashtable/libfips-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libfips-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], "crypto/hmac/libcrypto-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], "crypto/hmac/libfips-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], + "crypto/hpke/libcrypto-lib-hpke.o" => [ + "crypto/hpke/hpke.c" + ], + "crypto/hpke/libcrypto-lib-hpke_util.o" => [ + "crypto/hpke/hpke_util.c" + ], "crypto/http/libcrypto-lib-http_client.o" => [ "crypto/http/http_client.c" ], @@ -22550,6 +26042,9 @@ our %unified_info = ( "crypto/libcrypto-lib-bsearch.o" => [ "crypto/bsearch.c" ], + "crypto/libcrypto-lib-comp_methods.o" => [ + "crypto/comp_methods.c" + ], "crypto/libcrypto-lib-context.o" => [ "crypto/context.c" ], @@ -22577,9 +26072,15 @@ our %unified_info = ( "crypto/libcrypto-lib-cversion.o" => [ "crypto/cversion.c" ], + "crypto/libcrypto-lib-defaults.o" => [ + "crypto/defaults.c" + ], "crypto/libcrypto-lib-der_writer.o" => [ "crypto/der_writer.c" ], + "crypto/libcrypto-lib-deterministic_nonce.o" => [ + "crypto/deterministic_nonce.c" + ], "crypto/libcrypto-lib-ebcdic.o" => [ "crypto/ebcdic.c" ], @@ -22589,6 +26090,9 @@ our %unified_info = ( "crypto/libcrypto-lib-getenv.o" => [ "crypto/getenv.c" ], + "crypto/libcrypto-lib-indicator_core.o" => [ + "crypto/indicator_core.c" + ], "crypto/libcrypto-lib-info.o" => [ "crypto/info.c" ], @@ -22637,6 +26141,9 @@ our %unified_info = ( "crypto/libcrypto-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libcrypto-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libcrypto-lib-passphrase.o" => [ "crypto/passphrase.c" ], @@ -22658,12 +26165,21 @@ our %unified_info = ( "crypto/libcrypto-lib-punycode.o" => [ "crypto/punycode.c" ], + "crypto/libcrypto-lib-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/libcrypto-lib-self_test_core.o" => [ "crypto/self_test_core.c" ], + "crypto/libcrypto-lib-sleep.o" => [ + "crypto/sleep.c" + ], "crypto/libcrypto-lib-sparse_array.o" => [ "crypto/sparse_array.c" ], + "crypto/libcrypto-lib-ssl_err.o" => [ + "crypto/ssl_err.c" + ], "crypto/libcrypto-lib-threads_lib.o" => [ "crypto/threads_lib.c" ], @@ -22676,6 +26192,9 @@ our %unified_info = ( "crypto/libcrypto-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libcrypto-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libcrypto-lib-trace.o" => [ "crypto/trace.c" ], @@ -22742,6 +26261,9 @@ our %unified_info = ( "crypto/libfips-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libfips-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libfips-lib-provider_core.o" => [ "crypto/provider_core.c" ], @@ -22766,6 +26288,9 @@ our %unified_info = ( "crypto/libfips-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libfips-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libfips-lib-x86cpuid.o" => [ "crypto/x86cpuid.S" ], @@ -22793,6 +26318,60 @@ our %unified_info = ( "crypto/mdc2/libcrypto-lib-mdc2dgst.o" => [ "crypto/mdc2/mdc2dgst.c" ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_kem/libcrypto-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], + "crypto/ml_kem/libfips-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], "crypto/modes/libcrypto-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22829,6 +26408,9 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libcrypto-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/modes/libfips-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22856,6 +26438,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libfips-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/objects/libcrypto-lib-o_names.o" => [ "crypto/objects/o_names.c" ], @@ -22901,6 +26486,9 @@ our %unified_info = ( "crypto/ocsp/libcrypto-lib-v3_ocsp.o" => [ "crypto/ocsp/v3_ocsp.c" ], + "crypto/packettest-bin-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/pem/libcrypto-lib-pem_all.o" => [ "crypto/pem/pem_all.c" ], @@ -23063,6 +26651,9 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_pool.o" => [ "crypto/rand/rand_pool.c" ], + "crypto/rand/libcrypto-lib-rand_uniform.o" => [ + "crypto/rand/rand_uniform.c" + ], "crypto/rand/libcrypto-lib-randfile.o" => [ "crypto/rand/randfile.c" ], @@ -23294,6 +26885,66 @@ our %unified_info = ( "crypto/siphash/libcrypto-lib-siphash.o" => [ "crypto/siphash/siphash.c" ], + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], + "crypto/slh_dsa/libfips-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libfips-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libfips-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libfips-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libfips-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], "crypto/sm2/libcrypto-lib-sm2_crypt.o" => [ "crypto/sm2/sm2_crypt.c" ], @@ -23348,6 +26999,42 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_strings.o" => [ "crypto/store/store_strings.c" ], + "crypto/thread/arch/libcrypto-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/arch/libfips-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libfips-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libfips-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/libcrypto-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libcrypto-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libcrypto-lib-internal.o" => [ + "crypto/thread/internal.c" + ], + "crypto/thread/libfips-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libfips-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libfips-lib-internal.o" => [ + "crypto/thread/internal.c" + ], "crypto/ts/libcrypto-lib-ts_asn1.o" => [ "crypto/ts/ts_asn1.c" ], @@ -23435,6 +27122,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_tree.o" => [ "crypto/x509/pcy_tree.c" ], + "crypto/x509/libcrypto-lib-t_acert.o" => [ + "crypto/x509/t_acert.c" + ], "crypto/x509/libcrypto-lib-t_crl.o" => [ "crypto/x509/t_crl.c" ], @@ -23444,6 +27134,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-t_x509.o" => [ "crypto/x509/t_x509.c" ], + "crypto/x509/libcrypto-lib-v3_aaa.o" => [ + "crypto/x509/v3_aaa.c" + ], + "crypto/x509/libcrypto-lib-v3_ac_tgt.o" => [ + "crypto/x509/v3_ac_tgt.c" + ], "crypto/x509/libcrypto-lib-v3_addr.o" => [ "crypto/x509/v3_addr.c" ], @@ -23459,6 +27155,21 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_asid.o" => [ "crypto/x509/v3_asid.c" ], + "crypto/x509/libcrypto-lib-v3_attrdesc.o" => [ + "crypto/x509/v3_attrdesc.c" + ], + "crypto/x509/libcrypto-lib-v3_attrmap.o" => [ + "crypto/x509/v3_attrmap.c" + ], + "crypto/x509/libcrypto-lib-v3_audit_id.o" => [ + "crypto/x509/v3_audit_id.c" + ], + "crypto/x509/libcrypto-lib-v3_authattid.o" => [ + "crypto/x509/v3_authattid.c" + ], + "crypto/x509/libcrypto-lib-v3_battcons.o" => [ + "crypto/x509/v3_battcons.c" + ], "crypto/x509/libcrypto-lib-v3_bcons.o" => [ "crypto/x509/v3_bcons.c" ], @@ -23483,15 +27194,24 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_genn.o" => [ "crypto/x509/v3_genn.c" ], + "crypto/x509/libcrypto-lib-v3_group_ac.o" => [ + "crypto/x509/v3_group_ac.c" + ], "crypto/x509/libcrypto-lib-v3_ia5.o" => [ "crypto/x509/v3_ia5.c" ], + "crypto/x509/libcrypto-lib-v3_ind_iss.o" => [ + "crypto/x509/v3_ind_iss.c" + ], "crypto/x509/libcrypto-lib-v3_info.o" => [ "crypto/x509/v3_info.c" ], "crypto/x509/libcrypto-lib-v3_int.o" => [ "crypto/x509/v3_int.c" ], + "crypto/x509/libcrypto-lib-v3_iobo.o" => [ + "crypto/x509/v3_iobo.c" + ], "crypto/x509/libcrypto-lib-v3_ist.o" => [ "crypto/x509/v3_ist.c" ], @@ -23501,6 +27221,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_ncons.o" => [ "crypto/x509/v3_ncons.c" ], + "crypto/x509/libcrypto-lib-v3_no_ass.o" => [ + "crypto/x509/v3_no_ass.c" + ], + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o" => [ + "crypto/x509/v3_no_rev_avail.c" + ], "crypto/x509/libcrypto-lib-v3_pci.o" => [ "crypto/x509/v3_pci.c" ], @@ -23522,18 +27248,36 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_purp.o" => [ "crypto/x509/v3_purp.c" ], + "crypto/x509/libcrypto-lib-v3_rolespec.o" => [ + "crypto/x509/v3_rolespec.c" + ], "crypto/x509/libcrypto-lib-v3_san.o" => [ "crypto/x509/v3_san.c" ], + "crypto/x509/libcrypto-lib-v3_sda.o" => [ + "crypto/x509/v3_sda.c" + ], + "crypto/x509/libcrypto-lib-v3_single_use.o" => [ + "crypto/x509/v3_single_use.c" + ], "crypto/x509/libcrypto-lib-v3_skid.o" => [ "crypto/x509/v3_skid.c" ], + "crypto/x509/libcrypto-lib-v3_soa_id.o" => [ + "crypto/x509/v3_soa_id.c" + ], "crypto/x509/libcrypto-lib-v3_sxnet.o" => [ "crypto/x509/v3_sxnet.c" ], + "crypto/x509/libcrypto-lib-v3_timespec.o" => [ + "crypto/x509/v3_timespec.c" + ], "crypto/x509/libcrypto-lib-v3_tlsf.o" => [ "crypto/x509/v3_tlsf.c" ], + "crypto/x509/libcrypto-lib-v3_usernotice.o" => [ + "crypto/x509/v3_usernotice.c" + ], "crypto/x509/libcrypto-lib-v3_utf8.o" => [ "crypto/x509/v3_utf8.c" ], @@ -23543,6 +27287,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3err.o" => [ "crypto/x509/v3err.c" ], + "crypto/x509/libcrypto-lib-x509_acert.o" => [ + "crypto/x509/x509_acert.c" + ], "crypto/x509/libcrypto-lib-x509_att.o" => [ "crypto/x509/x509_att.c" ], @@ -23594,6 +27341,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_vpm.o" => [ "crypto/x509/x509_vpm.c" ], + "crypto/x509/libcrypto-lib-x509aset.o" => [ + "crypto/x509/x509aset.c" + ], "crypto/x509/libcrypto-lib-x509cset.o" => [ "crypto/x509/x509cset.c" ], @@ -23621,6 +27371,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_exten.o" => [ "crypto/x509/x_exten.c" ], + "crypto/x509/libcrypto-lib-x_ietfatt.o" => [ + "crypto/x509/x_ietfatt.c" + ], "crypto/x509/libcrypto-lib-x_name.o" => [ "crypto/x509/x_name.c" ], @@ -23645,6 +27398,16 @@ our %unified_info = ( "engines/libcrypto-lib-e_padlock.o" => [ "engines/e_padlock.c" ], + "fuzz/acert-test" => [ + "fuzz/acert-test-bin-acert.o", + "fuzz/acert-test-bin-test-corpus.o" + ], + "fuzz/acert-test-bin-acert.o" => [ + "fuzz/acert.c" + ], + "fuzz/acert-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/asn1-test" => [ "fuzz/asn1-test-bin-asn1.o", "fuzz/asn1-test-bin-fuzz_rand.o", @@ -23757,6 +27520,190 @@ our %unified_info = ( "fuzz/ct-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/decoder-test" => [ + "fuzz/decoder-test-bin-decoder.o", + "fuzz/decoder-test-bin-fuzz_rand.o", + "fuzz/decoder-test-bin-test-corpus.o" + ], + "fuzz/decoder-test-bin-decoder.o" => [ + "fuzz/decoder.c" + ], + "fuzz/decoder-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/decoder-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsclient-test" => [ + "fuzz/dtlsclient-test-bin-dtlsclient.o", + "fuzz/dtlsclient-test-bin-fuzz_rand.o", + "fuzz/dtlsclient-test-bin-test-corpus.o" + ], + "fuzz/dtlsclient-test-bin-dtlsclient.o" => [ + "fuzz/dtlsclient.c" + ], + "fuzz/dtlsclient-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsclient-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsserver-test" => [ + "fuzz/dtlsserver-test-bin-dtlsserver.o", + "fuzz/dtlsserver-test-bin-fuzz_rand.o", + "fuzz/dtlsserver-test-bin-test-corpus.o" + ], + "fuzz/dtlsserver-test-bin-dtlsserver.o" => [ + "fuzz/dtlsserver.c" + ], + "fuzz/dtlsserver-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsserver-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/hashtable-test" => [ + "fuzz/hashtable-test-bin-fuzz_rand.o", + "fuzz/hashtable-test-bin-hashtable.o", + "fuzz/hashtable-test-bin-test-corpus.o" + ], + "fuzz/hashtable-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/hashtable-test-bin-hashtable.o" => [ + "fuzz/hashtable.c" + ], + "fuzz/hashtable-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-dsa-test" => [ + "fuzz/ml-dsa-test-bin-fuzz_rand.o", + "fuzz/ml-dsa-test-bin-ml-dsa.o", + "fuzz/ml-dsa-test-bin-test-corpus.o" + ], + "fuzz/ml-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-dsa-test-bin-ml-dsa.o" => [ + "fuzz/ml-dsa.c" + ], + "fuzz/ml-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-kem-test" => [ + "fuzz/ml-kem-test-bin-fuzz_rand.o", + "fuzz/ml-kem-test-bin-ml-kem.o", + "fuzz/ml-kem-test-bin-test-corpus.o" + ], + "fuzz/ml-kem-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-kem-test-bin-ml-kem.o" => [ + "fuzz/ml-kem.c" + ], + "fuzz/ml-kem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/pem-test" => [ + "fuzz/pem-test-bin-pem.o", + "fuzz/pem-test-bin-test-corpus.o" + ], + "fuzz/pem-test-bin-pem.o" => [ + "fuzz/pem.c" + ], + "fuzz/pem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/provider-test" => [ + "fuzz/provider-test-bin-provider.o", + "fuzz/provider-test-bin-test-corpus.o" + ], + "fuzz/provider-test-bin-provider.o" => [ + "fuzz/provider.c" + ], + "fuzz/provider-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/punycode-test" => [ + "fuzz/punycode-test-bin-punycode.o", + "fuzz/punycode-test-bin-test-corpus.o" + ], + "fuzz/punycode-test-bin-punycode.o" => [ + "fuzz/punycode.c" + ], + "fuzz/punycode-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-client-test" => [ + "fuzz/quic-client-test-bin-fuzz_rand.o", + "fuzz/quic-client-test-bin-quic-client.o", + "fuzz/quic-client-test-bin-test-corpus.o" + ], + "fuzz/quic-client-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-client-test-bin-quic-client.o" => [ + "fuzz/quic-client.c" + ], + "fuzz/quic-client-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-lcidm-test" => [ + "fuzz/quic-lcidm-test-bin-fuzz_rand.o", + "fuzz/quic-lcidm-test-bin-quic-lcidm.o", + "fuzz/quic-lcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-lcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-lcidm-test-bin-quic-lcidm.o" => [ + "fuzz/quic-lcidm.c" + ], + "fuzz/quic-lcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-rcidm-test" => [ + "fuzz/quic-rcidm-test-bin-fuzz_rand.o", + "fuzz/quic-rcidm-test-bin-quic-rcidm.o", + "fuzz/quic-rcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-rcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-rcidm-test-bin-quic-rcidm.o" => [ + "fuzz/quic-rcidm.c" + ], + "fuzz/quic-rcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-server-test" => [ + "fuzz/quic-server-test-bin-fuzz_rand.o", + "fuzz/quic-server-test-bin-quic-server.o", + "fuzz/quic-server-test-bin-test-corpus.o" + ], + "fuzz/quic-server-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-server-test-bin-quic-server.o" => [ + "fuzz/quic-server.c" + ], + "fuzz/quic-server-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-srtm-test" => [ + "fuzz/quic-srtm-test-bin-fuzz_rand.o", + "fuzz/quic-srtm-test-bin-quic-srtm.o", + "fuzz/quic-srtm-test-bin-test-corpus.o" + ], + "fuzz/quic-srtm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-srtm-test-bin-quic-srtm.o" => [ + "fuzz/quic-srtm.c" + ], + "fuzz/quic-srtm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/server-test" => [ "fuzz/server-test-bin-fuzz_rand.o", "fuzz/server-test-bin-server.o", @@ -23771,6 +27718,40 @@ our %unified_info = ( "fuzz/server-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/slh-dsa-test" => [ + "fuzz/slh-dsa-test-bin-fuzz_rand.o", + "fuzz/slh-dsa-test-bin-slh-dsa.o", + "fuzz/slh-dsa-test-bin-test-corpus.o" + ], + "fuzz/slh-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/slh-dsa-test-bin-slh-dsa.o" => [ + "fuzz/slh-dsa.c" + ], + "fuzz/slh-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/smime-test" => [ + "fuzz/smime-test-bin-smime.o", + "fuzz/smime-test-bin-test-corpus.o" + ], + "fuzz/smime-test-bin-smime.o" => [ + "fuzz/smime.c" + ], + "fuzz/smime-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test" => [ + "fuzz/v3name-test-bin-test-corpus.o", + "fuzz/v3name-test-bin-v3name.o" + ], + "fuzz/v3name-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test-bin-v3name.o" => [ + "fuzz/v3name.c" + ], "fuzz/x509-test" => [ "fuzz/x509-test-bin-fuzz_rand.o", "fuzz/x509-test-bin-test-corpus.o", @@ -23891,6 +27872,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -23952,6 +27934,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -24129,7 +28112,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", + "crypto/err/libcrypto-lib-err_mark.o", "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o", "crypto/ess/libcrypto-lib-ess_asn1.o", "crypto/ess/libcrypto-lib-ess_err.o", "crypto/ess/libcrypto-lib-ess_lib.o", @@ -24212,7 +28197,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/ffc/libcrypto-lib-ffc_backend.o", "crypto/ffc/libcrypto-lib-ffc_dh.o", "crypto/ffc/libcrypto-lib-ffc_key_generate.o", @@ -24220,7 +28207,11 @@ our %unified_info = ( "crypto/ffc/libcrypto-lib-ffc_params.o", "crypto/ffc/libcrypto-lib-ffc_params_generate.o", "crypto/ffc/libcrypto-lib-ffc_params_validate.o", + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", "crypto/hmac/libcrypto-lib-hmac.o", + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o", "crypto/http/libcrypto-lib-http_client.o", "crypto/http/libcrypto-lib-http_err.o", "crypto/http/libcrypto-lib-http_lib.o", @@ -24234,6 +28225,7 @@ our %unified_info = ( "crypto/lhash/libcrypto-lib-lhash.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -24243,10 +28235,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -24263,6 +28258,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -24270,12 +28266,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libcrypto-lib-x86cpuid.o", @@ -24287,6 +28287,15 @@ our %unified_info = ( "crypto/md5/libcrypto-lib-md5_sha1.o", "crypto/mdc2/libcrypto-lib-mdc2_one.o", "crypto/mdc2/libcrypto-lib-mdc2dgst.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_kem/libcrypto-lib-ml_kem.o", "crypto/modes/libcrypto-lib-cbc128.o", "crypto/modes/libcrypto-lib-ccm128.o", "crypto/modes/libcrypto-lib-cfb128.o", @@ -24299,6 +28308,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/objects/libcrypto-lib-o_names.o", "crypto/objects/libcrypto-lib-obj_dat.o", "crypto/objects/libcrypto-lib-obj_err.o", @@ -24363,6 +28373,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rc2/libcrypto-lib-rc2_cbc.o", "crypto/rc2/libcrypto-lib-rc2_ecb.o", @@ -24414,6 +28425,16 @@ our %unified_info = ( "crypto/sha/libcrypto-lib-sha512-586.o", "crypto/sha/libcrypto-lib-sha512.o", "crypto/siphash/libcrypto-lib-siphash.o", + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", "crypto/sm2/libcrypto-lib-sm2_crypt.o", "crypto/sm2/libcrypto-lib-sm2_err.o", "crypto/sm2/libcrypto-lib-sm2_key.o", @@ -24431,6 +28452,12 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_register.o", "crypto/store/libcrypto-lib-store_result.o", "crypto/store/libcrypto-lib-store_strings.o", + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", "crypto/ts/libcrypto-lib-ts_asn1.o", "crypto/ts/libcrypto-lib-ts_conf.o", "crypto/ts/libcrypto-lib-ts_err.o", @@ -24460,14 +28487,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -24476,12 +28511,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -24489,13 +28529,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -24513,6 +28560,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -24522,6 +28570,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -24543,14 +28592,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -24567,12 +28617,60 @@ our %unified_info = ( "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", "ssl/libssl-lib-tls_srp.o", - "ssl/record/libssl-lib-dtls1_bitmap.o", + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o", "ssl/record/libssl-lib-rec_layer_d1.o", "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o", "ssl/statem/libssl-lib-extensions.o", "ssl/statem/libssl-lib-extensions_clnt.o", "ssl/statem/libssl-lib-extensions_cust.o", @@ -24610,12 +28708,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/der/der_ecx_key.c" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/der/der_ml_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/der/der_ml_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/der/der_rsa_gen.c" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/der/der_rsa_key.c" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/der/der_slh_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/der/der_slh_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/der/der_wrap_gen.c" ], @@ -24682,6 +28792,9 @@ our %unified_info = ( "providers/common/libfips-lib-securitycheck_fips.o" => [ "providers/common/securitycheck_fips.c" ], + "providers/endecode_test-bin-legacyprov.o" => [ + "providers/legacyprov.c" + ], "providers/evp_extra_test-bin-legacyprov.o" => [ "providers/legacyprov.c" ], @@ -24696,6 +28809,9 @@ our %unified_info = ( "providers/fips/fips-dso-fips_entry.o" => [ "providers/fips/fips_entry.c" ], + "providers/fips/libfips-lib-fipsindicator.o" => [ + "providers/fips/fipsindicator.c" + ], "providers/fips/libfips-lib-fipsprov.o" => [ "providers/fips/fipsprov.c" ], @@ -24759,6 +28875,15 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o" => [ "providers/implementations/ciphers/cipher_aes_gcm_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o" => [ "providers/implementations/ciphers/cipher_aes_hw.c" ], @@ -24831,9 +28956,27 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o" => [ "providers/implementations/ciphers/cipher_sm4.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o" => [ "providers/implementations/ciphers/cipher_sm4_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o" => [ "providers/implementations/ciphers/cipher_tdes.c" ], @@ -25053,6 +29196,15 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" => [ "providers/implementations/encode_decode/endecoder_common.c" ], + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o" => [ + "providers/implementations/encode_decode/ml_common_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o" => [ + "providers/implementations/encode_decode/ml_dsa_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" => [ + "providers/implementations/encode_decode/ml_kem_codecs.c" + ], "providers/implementations/exchange/libdefault-lib-dh_exch.o" => [ "providers/implementations/exchange/dh_exch.c" ], @@ -25077,9 +29229,15 @@ our %unified_info = ( "providers/implementations/exchange/libfips-lib-kdf_exch.o" => [ "providers/implementations/exchange/kdf_exch.c" ], + "providers/implementations/kdfs/libdefault-lib-argon2.o" => [ + "providers/implementations/kdfs/argon2.c" + ], "providers/implementations/kdfs/libdefault-lib-hkdf.o" => [ "providers/implementations/kdfs/hkdf.c" ], + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o" => [ + "providers/implementations/kdfs/hmacdrbg_kdf.c" + ], "providers/implementations/kdfs/libdefault-lib-kbkdf.o" => [ "providers/implementations/kdfs/kbkdf.c" ], @@ -25137,12 +29295,39 @@ our %unified_info = ( "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" => [ "providers/implementations/kdfs/pbkdf1.c" ], + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" => [ + "providers/implementations/kdfs/pvkkdf.c" + ], + "providers/implementations/kem/libdefault-lib-ec_kem.o" => [ + "providers/implementations/kem/ec_kem.c" + ], + "providers/implementations/kem/libdefault-lib-ecx_kem.o" => [ + "providers/implementations/kem/ecx_kem.c" + ], + "providers/implementations/kem/libdefault-lib-kem_util.o" => [ + "providers/implementations/kem/kem_util.c" + ], + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libdefault-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libdefault-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libfips-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libfips-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libfips-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libtemplate-lib-template_kem.o" => [ + "providers/implementations/kem/template_kem.c" + ], "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25161,9 +29346,21 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25182,9 +29379,24 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" => [ + "providers/implementations/keymgmt/template_kmgmt.c" + ], "providers/implementations/macs/libdefault-lib-blake2b_mac.o" => [ "providers/implementations/macs/blake2b_mac.c" ], @@ -25221,9 +29433,6 @@ our %unified_info = ( "providers/implementations/macs/libfips-lib-kmac_prov.o" => [ "providers/implementations/macs/kmac_prov.c" ], - "providers/implementations/rands/libdefault-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libdefault-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25239,12 +29448,12 @@ our %unified_info = ( "providers/implementations/rands/libdefault-lib-seed_src.o" => [ "providers/implementations/rands/seed_src.c" ], + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o" => [ + "providers/implementations/rands/seed_src_jitter.c" + ], "providers/implementations/rands/libdefault-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], - "providers/implementations/rands/libfips-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libfips-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25257,6 +29466,9 @@ our %unified_info = ( "providers/implementations/rands/libfips-lib-drbg_hmac.o" => [ "providers/implementations/rands/drbg_hmac.c" ], + "providers/implementations/rands/libfips-lib-fips_crng_test.o" => [ + "providers/implementations/rands/fips_crng_test.c" + ], "providers/implementations/rands/libfips-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], @@ -25284,9 +29496,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/implementations/signature/sm2_sig.c" ], @@ -25302,15 +29520,36 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libfips-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], "providers/implementations/storemgmt/libdefault-lib-file_store.o" => [ "providers/implementations/storemgmt/file_store.c" ], "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o" => [ "providers/implementations/storemgmt/file_store_any2obj.c" ], + "providers/implementations/storemgmt/libdefault-lib-winstore_store.o" => [ + "providers/implementations/storemgmt/winstore_store.c" + ], "providers/legacy" => [ "providers/legacy-dso-legacy.res", "providers/legacy-dso-legacyprov.o", @@ -25332,8 +29571,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/libcommon-lib-provider_ctx.o", "providers/common/libcommon-lib-provider_err.o", @@ -25345,7 +29588,7 @@ our %unified_info = ( "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", "providers/implementations/digests/libcommon-lib-digestcommon.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/methods/libcommon-lib-tls_pad.o" ], "providers/libcrypto-lib-baseprov.o" => [ "providers/baseprov.c" @@ -25381,6 +29624,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -25405,7 +29651,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -25434,11 +29686,16 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o", "providers/implementations/exchange/libdefault-lib-dh_exch.o", "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", "providers/implementations/exchange/libdefault-lib-ecx_exch.o", "providers/implementations/exchange/libdefault-lib-kdf_exch.o", + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -25449,6 +29706,11 @@ our %unified_info = ( "providers/implementations/kdfs/libdefault-lib-sskdf.o", "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", "providers/implementations/kdfs/libdefault-lib-x942kdf.o", + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", @@ -25456,7 +29718,11 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libdefault-lib-blake2b_mac.o", "providers/implementations/macs/libdefault-lib-blake2s_mac.o", "providers/implementations/macs/libdefault-lib-cmac_prov.o", @@ -25465,12 +29731,12 @@ our %unified_info = ( "providers/implementations/macs/libdefault-lib-kmac_prov.o", "providers/implementations/macs/libdefault-lib-poly1305_prov.o", "providers/implementations/macs/libdefault-lib-siphash_prov.o", - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", @@ -25480,11 +29746,16 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", "providers/implementations/storemgmt/libdefault-lib-file_store.o", "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", - "ssl/libdefault-lib-s3_cbc.o" + "providers/implementations/storemgmt/libdefault-lib-winstore_store.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" ], "providers/libfips.a" => [ "crypto/aes/libfips-lib-aes-586.o", @@ -25592,14 +29863,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", + "crypto/evp/libfips-lib-s_lib.o", "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o", "crypto/ffc/libfips-lib-ffc_backend.o", "crypto/ffc/libfips-lib-ffc_dh.o", "crypto/ffc/libfips-lib-ffc_key_generate.o", @@ -25607,6 +29879,8 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params.o", "crypto/ffc/libfips-lib-ffc_params_generate.o", "crypto/ffc/libfips-lib-ffc_params_validate.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o", "crypto/hmac/libfips-lib-hmac.o", "crypto/lhash/libfips-lib-lhash.o", "crypto/libfips-lib-asn1_dsa.o", @@ -25628,6 +29902,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -25636,7 +29911,17 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", "crypto/libfips-lib-x86cpuid.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o", + "crypto/ml_kem/libfips-lib-ml_kem.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -25646,6 +29931,7 @@ our %unified_info = ( "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o", "crypto/property/libfips-lib-defn_cache.o", "crypto/property/libfips-lib-property.o", "crypto/property/libfips-lib-property_parse.o", @@ -25677,7 +29963,23 @@ our %unified_info = ( "crypto/sha/libfips-lib-sha3.o", "crypto/sha/libfips-lib-sha512-586.o", "crypto/sha/libfips-lib-sha512.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o", "crypto/stack/libfips-lib-stack.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o", "providers/common/der/libfips-lib-der_rsa_sig.o", "providers/common/libfips-lib-bio_prov.o", "providers/common/libfips-lib-capabilities.o", @@ -25686,6 +29988,7 @@ our %unified_info = ( "providers/common/libfips-lib-provider_util.o", "providers/common/libfips-lib-securitycheck.o", "providers/common/libfips-lib-securitycheck_fips.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o", @@ -25723,6 +30026,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", "providers/implementations/kem/libfips-lib-rsa_kem.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", @@ -25730,24 +30035,32 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libfips-lib-cmac_prov.o", "providers/implementations/macs/libfips-lib-gmac_prov.o", "providers/implementations/macs/libfips-lib-hmac_prov.o", "providers/implementations/macs/libfips-lib-kmac_prov.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o", "providers/libcommon.a", - "ssl/libfips-lib-s3_cbc.o" + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "providers/liblegacy-lib-prov_running.o" => [ "providers/prov_running.c" @@ -25777,13 +30090,12 @@ our %unified_info = ( "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", "providers/implementations/digests/liblegacy-lib-wp_prov.o", "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o", "providers/liblegacy-lib-prov_running.o" ], - "ssl/libdefault-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" - ], - "ssl/libfips-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" + "providers/libtemplate.a" => [ + "providers/implementations/kem/libtemplate-lib-template_kem.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "ssl/libssl-lib-bio_ssl.o" => [ "ssl/bio_ssl.c" @@ -25803,6 +30115,9 @@ our %unified_info = ( "ssl/libssl-lib-pqueue.o" => [ "ssl/pqueue.c" ], + "ssl/libssl-lib-priority_queue.o" => [ + "ssl/priority_queue.c" + ], "ssl/libssl-lib-s3_enc.o" => [ "ssl/s3_enc.c" ], @@ -25818,15 +30133,15 @@ our %unified_info = ( "ssl/libssl-lib-ssl_cert.o" => [ "ssl/ssl_cert.c" ], + "ssl/libssl-lib-ssl_cert_comp.o" => [ + "ssl/ssl_cert_comp.c" + ], "ssl/libssl-lib-ssl_ciph.o" => [ "ssl/ssl_ciph.c" ], "ssl/libssl-lib-ssl_conf.o" => [ "ssl/ssl_conf.c" ], - "ssl/libssl-lib-ssl_err.o" => [ - "ssl/ssl_err.c" - ], "ssl/libssl-lib-ssl_err_legacy.o" => [ "ssl/ssl_err_legacy.c" ], @@ -25875,11 +30190,131 @@ our %unified_info = ( "ssl/libssl-lib-tls_srp.o" => [ "ssl/tls_srp.c" ], - "ssl/record/libcommon-lib-tls_pad.o" => [ - "ssl/record/tls_pad.c" + "ssl/quic/libssl-lib-cc_newreno.o" => [ + "ssl/quic/cc_newreno.c" + ], + "ssl/quic/libssl-lib-json_enc.o" => [ + "ssl/quic/json_enc.c" + ], + "ssl/quic/libssl-lib-qlog.o" => [ + "ssl/quic/qlog.c" + ], + "ssl/quic/libssl-lib-qlog_event_helpers.o" => [ + "ssl/quic/qlog_event_helpers.c" + ], + "ssl/quic/libssl-lib-quic_ackm.o" => [ + "ssl/quic/quic_ackm.c" + ], + "ssl/quic/libssl-lib-quic_cfq.o" => [ + "ssl/quic/quic_cfq.c" + ], + "ssl/quic/libssl-lib-quic_channel.o" => [ + "ssl/quic/quic_channel.c" + ], + "ssl/quic/libssl-lib-quic_demux.o" => [ + "ssl/quic/quic_demux.c" + ], + "ssl/quic/libssl-lib-quic_engine.o" => [ + "ssl/quic/quic_engine.c" + ], + "ssl/quic/libssl-lib-quic_fc.o" => [ + "ssl/quic/quic_fc.c" + ], + "ssl/quic/libssl-lib-quic_fifd.o" => [ + "ssl/quic/quic_fifd.c" + ], + "ssl/quic/libssl-lib-quic_impl.o" => [ + "ssl/quic/quic_impl.c" + ], + "ssl/quic/libssl-lib-quic_lcidm.o" => [ + "ssl/quic/quic_lcidm.c" + ], + "ssl/quic/libssl-lib-quic_method.o" => [ + "ssl/quic/quic_method.c" + ], + "ssl/quic/libssl-lib-quic_obj.o" => [ + "ssl/quic/quic_obj.c" + ], + "ssl/quic/libssl-lib-quic_port.o" => [ + "ssl/quic/quic_port.c" + ], + "ssl/quic/libssl-lib-quic_rcidm.o" => [ + "ssl/quic/quic_rcidm.c" + ], + "ssl/quic/libssl-lib-quic_reactor.o" => [ + "ssl/quic/quic_reactor.c" + ], + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o" => [ + "ssl/quic/quic_reactor_wait_ctx.c" + ], + "ssl/quic/libssl-lib-quic_record_rx.o" => [ + "ssl/quic/quic_record_rx.c" + ], + "ssl/quic/libssl-lib-quic_record_shared.o" => [ + "ssl/quic/quic_record_shared.c" + ], + "ssl/quic/libssl-lib-quic_record_tx.o" => [ + "ssl/quic/quic_record_tx.c" + ], + "ssl/quic/libssl-lib-quic_record_util.o" => [ + "ssl/quic/quic_record_util.c" ], - "ssl/record/libssl-lib-dtls1_bitmap.o" => [ - "ssl/record/dtls1_bitmap.c" + "ssl/quic/libssl-lib-quic_rstream.o" => [ + "ssl/quic/quic_rstream.c" + ], + "ssl/quic/libssl-lib-quic_rx_depack.o" => [ + "ssl/quic/quic_rx_depack.c" + ], + "ssl/quic/libssl-lib-quic_sf_list.o" => [ + "ssl/quic/quic_sf_list.c" + ], + "ssl/quic/libssl-lib-quic_srt_gen.o" => [ + "ssl/quic/quic_srt_gen.c" + ], + "ssl/quic/libssl-lib-quic_srtm.o" => [ + "ssl/quic/quic_srtm.c" + ], + "ssl/quic/libssl-lib-quic_sstream.o" => [ + "ssl/quic/quic_sstream.c" + ], + "ssl/quic/libssl-lib-quic_statm.o" => [ + "ssl/quic/quic_statm.c" + ], + "ssl/quic/libssl-lib-quic_stream_map.o" => [ + "ssl/quic/quic_stream_map.c" + ], + "ssl/quic/libssl-lib-quic_thread_assist.o" => [ + "ssl/quic/quic_thread_assist.c" + ], + "ssl/quic/libssl-lib-quic_tls.o" => [ + "ssl/quic/quic_tls.c" + ], + "ssl/quic/libssl-lib-quic_tls_api.o" => [ + "ssl/quic/quic_tls_api.c" + ], + "ssl/quic/libssl-lib-quic_trace.o" => [ + "ssl/quic/quic_trace.c" + ], + "ssl/quic/libssl-lib-quic_tserver.o" => [ + "ssl/quic/quic_tserver.c" + ], + "ssl/quic/libssl-lib-quic_txp.o" => [ + "ssl/quic/quic_txp.c" + ], + "ssl/quic/libssl-lib-quic_txpim.o" => [ + "ssl/quic/quic_txpim.c" + ], + "ssl/quic/libssl-lib-quic_types.o" => [ + "ssl/quic/quic_types.c" + ], + "ssl/quic/libssl-lib-quic_wire.o" => [ + "ssl/quic/quic_wire.c" + ], + "ssl/quic/libssl-lib-quic_wire_pkt.o" => [ + "ssl/quic/quic_wire_pkt.c" + ], + "ssl/quic/libssl-lib-uint_set.o" => [ + "ssl/quic/uint_set.c" ], "ssl/record/libssl-lib-rec_layer_d1.o" => [ "ssl/record/rec_layer_d1.c" @@ -25887,14 +30322,44 @@ our %unified_info = ( "ssl/record/libssl-lib-rec_layer_s3.o" => [ "ssl/record/rec_layer_s3.c" ], - "ssl/record/libssl-lib-ssl3_buffer.o" => [ - "ssl/record/ssl3_buffer.c" + "ssl/record/methods/libcommon-lib-tls_pad.o" => [ + "ssl/record/methods/tls_pad.c" + ], + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libfips-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libssl-lib-dtls_meth.o" => [ + "ssl/record/methods/dtls_meth.c" + ], + "ssl/record/methods/libssl-lib-ssl3_meth.o" => [ + "ssl/record/methods/ssl3_meth.c" + ], + "ssl/record/methods/libssl-lib-tls13_meth.o" => [ + "ssl/record/methods/tls13_meth.c" + ], + "ssl/record/methods/libssl-lib-tls1_meth.o" => [ + "ssl/record/methods/tls1_meth.c" ], - "ssl/record/libssl-lib-ssl3_record.o" => [ - "ssl/record/ssl3_record.c" + "ssl/record/methods/libssl-lib-tls_common.o" => [ + "ssl/record/methods/tls_common.c" ], - "ssl/record/libssl-lib-ssl3_record_tls13.o" => [ - "ssl/record/ssl3_record_tls13.c" + "ssl/record/methods/libssl-lib-tls_multib.o" => [ + "ssl/record/methods/tls_multib.c" + ], + "ssl/record/methods/libssl-lib-tlsany_meth.o" => [ + "ssl/record/methods/tlsany_meth.c" + ], + "ssl/rio/libssl-lib-poll_builder.o" => [ + "ssl/rio/poll_builder.c" + ], + "ssl/rio/libssl-lib-poll_immediate.o" => [ + "ssl/rio/poll_immediate.c" + ], + "ssl/rio/libssl-lib-rio_notifier.o" => [ + "ssl/rio/rio_notifier.c" ], "ssl/statem/libssl-lib-extensions.o" => [ "ssl/statem/extensions.c" @@ -25990,6 +30455,8 @@ our %unified_info = ( "test/asn1_string_table_test.c" ], "test/asn1_time_test" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1_time_test-bin-ctype.o", "test/asn1_time_test-bin-asn1_time_test.o" ], "test/asn1_time_test-bin-asn1_time_test.o" => [ @@ -26020,6 +30487,18 @@ our %unified_info = ( "test/bftest-bin-bftest.o" => [ "test/bftest.c" ], + "test/bio_addr_test" => [ + "test/bio_addr_test-bin-bio_addr_test.o" + ], + "test/bio_addr_test-bin-bio_addr_test.o" => [ + "test/bio_addr_test.c" + ], + "test/bio_base64_test" => [ + "test/bio_base64_test-bin-bio_base64_test.o" + ], + "test/bio_base64_test-bin-bio_base64_test.o" => [ + "test/bio_base64_test.c" + ], "test/bio_callback_test" => [ "test/bio_callback_test-bin-bio_callback_test.o" ], @@ -26032,6 +30511,12 @@ our %unified_info = ( "test/bio_core_test-bin-bio_core_test.o" => [ "test/bio_core_test.c" ], + "test/bio_dgram_test" => [ + "test/bio_dgram_test-bin-bio_dgram_test.o" + ], + "test/bio_dgram_test-bin-bio_dgram_test.o" => [ + "test/bio_dgram_test.c" + ], "test/bio_enc_test" => [ "test/bio_enc_test-bin-bio_enc_test.o" ], @@ -26044,6 +30529,12 @@ our %unified_info = ( "test/bio_memleak_test-bin-bio_memleak_test.o" => [ "test/bio_memleak_test.c" ], + "test/bio_meth_test" => [ + "test/bio_meth_test-bin-bio_meth_test.o" + ], + "test/bio_meth_test-bin-bio_meth_test.o" => [ + "test/bio_meth_test.c" + ], "test/bio_prefix_text" => [ "test/bio_prefix_text-bin-bio_prefix_text.o" ], @@ -26062,6 +30553,12 @@ our %unified_info = ( "test/bio_readbuffer_test-bin-bio_readbuffer_test.o" => [ "test/bio_readbuffer_test.c" ], + "test/bio_tfo_test" => [ + "test/bio_tfo_test-bin-bio_tfo_test.o" + ], + "test/bio_tfo_test-bin-bio_tfo_test.o" => [ + "test/bio_tfo_test.c" + ], "test/bioprinttest" => [ "test/bioprinttest-bin-bioprinttest.o" ], @@ -26080,6 +30577,12 @@ our %unified_info = ( "test/bntest-bin-bntest.o" => [ "test/bntest.c" ], + "test/build_wincrypt_test" => [ + "test/build_wincrypt_test-bin-build_wincrypt_test.o" + ], + "test/build_wincrypt_test-bin-build_wincrypt_test.o" => [ + "test/build_wincrypt_test.c" + ], "test/buildtest_c_aes" => [ "test/buildtest_c_aes-bin-buildtest_aes.o" ], @@ -26110,6 +30613,12 @@ our %unified_info = ( "test/buildtest_c_buffer-bin-buildtest_buffer.o" => [ "test/buildtest_buffer.c" ], + "test/buildtest_c_byteorder" => [ + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" + ], + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" => [ + "test/buildtest_byteorder.c" + ], "test/buildtest_c_camellia" => [ "test/buildtest_c_camellia-bin-buildtest_camellia.o" ], @@ -26158,12 +30667,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch-bin-buildtest_core_dispatch.o" => [ "test/buildtest_core_dispatch.c" ], - "test/buildtest_c_core_names" => [ - "test/buildtest_c_core_names-bin-buildtest_core_names.o" - ], - "test/buildtest_c_core_names-bin-buildtest_core_names.o" => [ - "test/buildtest_core_names.c" - ], "test/buildtest_c_core_object" => [ "test/buildtest_c_core_object-bin-buildtest_core_object.o" ], @@ -26212,6 +30715,12 @@ our %unified_info = ( "test/buildtest_c_e_os2-bin-buildtest_e_os2.o" => [ "test/buildtest_e_os2.c" ], + "test/buildtest_c_e_ostime" => [ + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" + ], + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" => [ + "test/buildtest_e_ostime.c" + ], "test/buildtest_c_ebcdic" => [ "test/buildtest_c_ebcdic-bin-buildtest_ebcdic.o" ], @@ -26266,6 +30775,12 @@ our %unified_info = ( "test/buildtest_c_hmac-bin-buildtest_hmac.o" => [ "test/buildtest_hmac.c" ], + "test/buildtest_c_hpke" => [ + "test/buildtest_c_hpke-bin-buildtest_hpke.o" + ], + "test/buildtest_c_hpke-bin-buildtest_hpke.o" => [ + "test/buildtest_hpke.c" + ], "test/buildtest_c_http" => [ "test/buildtest_c_http-bin-buildtest_http.o" ], @@ -26278,6 +30793,12 @@ our %unified_info = ( "test/buildtest_c_idea-bin-buildtest_idea.o" => [ "test/buildtest_idea.c" ], + "test/buildtest_c_indicator" => [ + "test/buildtest_c_indicator-bin-buildtest_indicator.o" + ], + "test/buildtest_c_indicator-bin-buildtest_indicator.o" => [ + "test/buildtest_indicator.c" + ], "test/buildtest_c_kdf" => [ "test/buildtest_c_kdf-bin-buildtest_kdf.o" ], @@ -26308,6 +30829,12 @@ our %unified_info = ( "test/buildtest_c_mdc2-bin-buildtest_mdc2.o" => [ "test/buildtest_mdc2.c" ], + "test/buildtest_c_ml_kem" => [ + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" + ], + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" => [ + "test/buildtest_ml_kem.c" + ], "test/buildtest_c_modes" => [ "test/buildtest_c_modes-bin-buildtest_modes.o" ], @@ -26368,6 +30895,12 @@ our %unified_info = ( "test/buildtest_c_provider-bin-buildtest_provider.o" => [ "test/buildtest_provider.c" ], + "test/buildtest_c_quic" => [ + "test/buildtest_c_quic-bin-buildtest_quic.o" + ], + "test/buildtest_c_quic-bin-buildtest_quic.o" => [ + "test/buildtest_quic.c" + ], "test/buildtest_c_rand" => [ "test/buildtest_c_rand-bin-buildtest_rand.o" ], @@ -26452,6 +30985,12 @@ our %unified_info = ( "test/buildtest_c_symhacks-bin-buildtest_symhacks.o" => [ "test/buildtest_symhacks.c" ], + "test/buildtest_c_thread" => [ + "test/buildtest_c_thread-bin-buildtest_thread.o" + ], + "test/buildtest_c_thread-bin-buildtest_thread.o" => [ + "test/buildtest_thread.c" + ], "test/buildtest_c_tls1" => [ "test/buildtest_c_tls1-bin-buildtest_tls1.o" ], @@ -26482,6 +31021,29 @@ our %unified_info = ( "test/buildtest_c_whrlpool-bin-buildtest_whrlpool.o" => [ "test/buildtest_whrlpool.c" ], + "test/byteorder_test" => [ + "test/byteorder_test-bin-byteorder_test.o" + ], + "test/byteorder_test-bin-byteorder_test.o" => [ + "test/byteorder_test.c" + ], + "test/ca_internals_test" => [ + "apps/ca_internals_test-bin-ca.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", + "crypto/ca_internals_test-bin-ctype.o", + "test/ca_internals_test-bin-ca_internals_test.o" + ], + "test/ca_internals_test-bin-ca_internals_test.o" => [ + "test/ca_internals_test.c" + ], "test/casttest" => [ "test/casttest-bin-casttest.o" ], @@ -26660,6 +31222,12 @@ our %unified_info = ( "test/danetest-bin-danetest.o" => [ "test/danetest.c" ], + "test/decoder_propq_test" => [ + "test/decoder_propq_test-bin-decoder_propq_test.o" + ], + "test/decoder_propq_test-bin-decoder_propq_test.o" => [ + "test/decoder_propq_test.c" + ], "test/defltfips_test" => [ "test/defltfips_test-bin-defltfips_test.o" ], @@ -26741,6 +31309,7 @@ our %unified_info = ( "test/ectest.c" ], "test/endecode_test" => [ + "providers/endecode_test-bin-legacyprov.o", "test/endecode_test-bin-endecode_test.o", "test/helpers/endecode_test-bin-predefined_dhparams.o" ], @@ -26773,17 +31342,29 @@ our %unified_info = ( ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", - "test/evp_extra_test-bin-evp_extra_test.o" + "test/evp_extra_test-bin-evp_extra_test.o", + "test/evp_extra_test-bin-fake_pipelineprov.o", + "test/evp_extra_test-bin-fake_rsaprov.o" ], "test/evp_extra_test-bin-evp_extra_test.o" => [ "test/evp_extra_test.c" ], + "test/evp_extra_test-bin-fake_pipelineprov.o" => [ + "test/fake_pipelineprov.c" + ], + "test/evp_extra_test-bin-fake_rsaprov.o" => [ + "test/fake_rsaprov.c" + ], "test/evp_extra_test2" => [ - "test/evp_extra_test2-bin-evp_extra_test2.o" + "test/evp_extra_test2-bin-evp_extra_test2.o", + "test/evp_extra_test2-bin-tls-provider.o" ], "test/evp_extra_test2-bin-evp_extra_test2.o" => [ "test/evp_extra_test2.c" ], + "test/evp_extra_test2-bin-tls-provider.o" => [ + "test/tls-provider.c" + ], "test/evp_fetch_prov_test" => [ "test/evp_fetch_prov_test-bin-evp_fetch_prov_test.o" ], @@ -26808,6 +31389,12 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name-bin-evp_pkey_ctx_new_from_name.o" => [ "test/evp_pkey_ctx_new_from_name.c" ], + "test/evp_pkey_dhkem_test" => [ + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" + ], + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" => [ + "test/evp_pkey_dhkem_test.c" + ], "test/evp_pkey_dparams_test" => [ "test/evp_pkey_dparams_test-bin-evp_pkey_dparams_test.o" ], @@ -26820,12 +31407,28 @@ our %unified_info = ( "test/evp_pkey_provided_test-bin-evp_pkey_provided_test.o" => [ "test/evp_pkey_provided_test.c" ], + "test/evp_skey_test" => [ + "test/evp_skey_test-bin-evp_skey_test.o", + "test/evp_skey_test-bin-fake_cipherprov.o" + ], + "test/evp_skey_test-bin-evp_skey_test.o" => [ + "test/evp_skey_test.c" + ], + "test/evp_skey_test-bin-fake_cipherprov.o" => [ + "test/fake_cipherprov.c" + ], "test/evp_test" => [ "test/evp_test-bin-evp_test.o" ], "test/evp_test-bin-evp_test.o" => [ "test/evp_test.c" ], + "test/evp_xof_test" => [ + "test/evp_xof_test-bin-evp_xof_test.o" + ], + "test/evp_xof_test-bin-evp_xof_test.o" => [ + "test/evp_xof_test.c" + ], "test/exdatatest" => [ "test/exdatatest-bin-exdatatest.o" ], @@ -26911,15 +31514,108 @@ our %unified_info = ( "test/helpers/fatalerrtest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/json_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/json_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/json_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + "test/helpers/pkcs12.c" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ "test/helpers/pkcs12.c" ], + "test/helpers/quic_multistream_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_multistream_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_multistream_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_newcid_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_newcid_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_newcid_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_radix_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_radix_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_radix_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_srt_gen_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicapitest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicapitest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicapitest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicfaultstest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicfaultstest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicfaultstest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/ssl_old_test-bin-predefined_dhparams.o" => [ "test/helpers/predefined_dhparams.c" ], @@ -26947,6 +31643,9 @@ our %unified_info = ( "test/helpers/tls13ccstest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/hexstr_test" => [ "test/hexstr_test-bin-hexstr_test.o" ], @@ -26959,6 +31658,12 @@ our %unified_info = ( "test/hmactest-bin-hmactest.o" => [ "test/hmactest.c" ], + "test/hpke_test" => [ + "test/hpke_test-bin-hpke_test.o" + ], + "test/hpke_test-bin-hpke_test.o" => [ + "test/hpke_test.c" + ], "test/http_test" => [ "test/http_test-bin-http_test.o" ], @@ -26977,6 +31682,16 @@ our %unified_info = ( "test/igetest-bin-igetest.o" => [ "test/igetest.c" ], + "test/json_test" => [ + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/json_test-bin-json_test.o" + ], + "test/json_test-bin-json_test.o" => [ + "test/json_test.c" + ], "test/keymgmt_internal_test" => [ "test/keymgmt_internal_test-bin-keymgmt_internal_test.o" ], @@ -26998,6 +31713,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -27010,6 +31726,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-tests.o", "test/testutil/libtestutil-lib-testutil_init.o" ], + "test/list_test" => [ + "test/list_test-bin-list_test.o" + ], + "test/list_test-bin-list_test.o" => [ + "test/list_test.c" + ], "test/localetest" => [ "test/localetest-bin-localetest.o" ], @@ -27028,12 +31750,36 @@ our %unified_info = ( "test/mdc2test-bin-mdc2test.o" => [ "test/mdc2test.c" ], + "test/membio_test" => [ + "test/membio_test-bin-membio_test.o" + ], + "test/membio_test-bin-membio_test.o" => [ + "test/membio_test.c" + ], "test/memleaktest" => [ "test/memleaktest-bin-memleaktest.o" ], "test/memleaktest-bin-memleaktest.o" => [ "test/memleaktest.c" ], + "test/ml_dsa_test" => [ + "test/ml_dsa_test-bin-ml_dsa_test.o" + ], + "test/ml_dsa_test-bin-ml_dsa_test.o" => [ + "test/ml_dsa_test.c" + ], + "test/ml_kem_evp_extra_test" => [ + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" + ], + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" => [ + "test/ml_kem_evp_extra_test.c" + ], + "test/ml_kem_internal_test" => [ + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" + ], + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" => [ + "test/ml_kem_internal_test.c" + ], "test/modes_internal_test" => [ "test/modes_internal_test-bin-modes_internal_test.o" ], @@ -27079,11 +31825,18 @@ our %unified_info = ( "test/p_test.c" ], "test/packettest" => [ + "crypto/packettest-bin-quic_vlint.o", "test/packettest-bin-packettest.o" ], "test/packettest-bin-packettest.o" => [ "test/packettest.c" ], + "test/pairwise_fail_test" => [ + "test/pairwise_fail_test-bin-pairwise_fail_test.o" + ], + "test/pairwise_fail_test-bin-pairwise_fail_test.o" => [ + "test/pairwise_fail_test.c" + ], "test/param_build_test" => [ "test/param_build_test-bin-param_build_test.o" ], @@ -27132,6 +31885,13 @@ our %unified_info = ( "test/pemtest-bin-pemtest.o" => [ "test/pemtest.c" ], + "test/pkcs12_api_test" => [ + "test/helpers/pkcs12_api_test-bin-pkcs12.o", + "test/pkcs12_api_test-bin-pkcs12_api_test.o" + ], + "test/pkcs12_api_test-bin-pkcs12_api_test.o" => [ + "test/pkcs12_api_test.c" + ], "test/pkcs12_format_test" => [ "test/helpers/pkcs12_format_test-bin-pkcs12.o", "test/pkcs12_format_test-bin-pkcs12_format_test.o" @@ -27163,6 +31923,12 @@ our %unified_info = ( "test/poly1305_internal_test-bin-poly1305_internal_test.o" => [ "test/poly1305_internal_test.c" ], + "test/priority_queue_test" => [ + "test/priority_queue_test-bin-priority_queue_test.o" + ], + "test/priority_queue_test-bin-priority_queue_test.o" => [ + "test/priority_queue_test.c" + ], "test/property_test" => [ "test/property_test-bin-property_test.o" ], @@ -27181,6 +31947,12 @@ our %unified_info = ( "test/provfetchtest-bin-provfetchtest.o" => [ "test/provfetchtest.c" ], + "test/provider_default_search_path_test" => [ + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" + ], + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" => [ + "test/provider_default_search_path_test.c" + ], "test/provider_fallback_test" => [ "test/provider_fallback_test-bin-provider_fallback_test.o" ], @@ -27229,6 +32001,174 @@ our %unified_info = ( "test/punycode_test-bin-punycode_test.o" => [ "test/punycode_test.c" ], + "test/quic_ackm_test" => [ + "test/quic_ackm_test-bin-cc_dummy.o", + "test/quic_ackm_test-bin-quic_ackm_test.o" + ], + "test/quic_ackm_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_ackm_test-bin-quic_ackm_test.o" => [ + "test/quic_ackm_test.c" + ], + "test/quic_cc_test" => [ + "test/quic_cc_test-bin-quic_cc_test.o" + ], + "test/quic_cc_test-bin-quic_cc_test.o" => [ + "test/quic_cc_test.c" + ], + "test/quic_cfq_test" => [ + "test/quic_cfq_test-bin-quic_cfq_test.o" + ], + "test/quic_cfq_test-bin-quic_cfq_test.o" => [ + "test/quic_cfq_test.c" + ], + "test/quic_client_test" => [ + "test/quic_client_test-bin-quic_client_test.o" + ], + "test/quic_client_test-bin-quic_client_test.o" => [ + "test/quic_client_test.c" + ], + "test/quic_fc_test" => [ + "test/quic_fc_test-bin-quic_fc_test.o" + ], + "test/quic_fc_test-bin-quic_fc_test.o" => [ + "test/quic_fc_test.c" + ], + "test/quic_fifd_test" => [ + "test/quic_fifd_test-bin-cc_dummy.o", + "test/quic_fifd_test-bin-quic_fifd_test.o" + ], + "test/quic_fifd_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_fifd_test-bin-quic_fifd_test.o" => [ + "test/quic_fifd_test.c" + ], + "test/quic_lcidm_test" => [ + "test/quic_lcidm_test-bin-quic_lcidm_test.o" + ], + "test/quic_lcidm_test-bin-quic_lcidm_test.o" => [ + "test/quic_lcidm_test.c" + ], + "test/quic_multistream_test" => [ + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/quic_multistream_test-bin-quic_multistream_test.o" + ], + "test/quic_multistream_test-bin-quic_multistream_test.o" => [ + "test/quic_multistream_test.c" + ], + "test/quic_newcid_test" => [ + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/quic_newcid_test-bin-quic_newcid_test.o" + ], + "test/quic_newcid_test-bin-quic_newcid_test.o" => [ + "test/quic_newcid_test.c" + ], + "test/quic_qlog_test" => [ + "test/quic_qlog_test-bin-quic_qlog_test.o" + ], + "test/quic_qlog_test-bin-quic_qlog_test.o" => [ + "test/quic_qlog_test.c" + ], + "test/quic_radix_test" => [ + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "test/quic_rcidm_test" => [ + "test/quic_rcidm_test-bin-quic_rcidm_test.o" + ], + "test/quic_rcidm_test-bin-quic_rcidm_test.o" => [ + "test/quic_rcidm_test.c" + ], + "test/quic_record_test" => [ + "test/quic_record_test-bin-quic_record_test.o" + ], + "test/quic_record_test-bin-quic_record_test.o" => [ + "test/quic_record_test.c" + ], + "test/quic_srt_gen_test" => [ + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" + ], + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" => [ + "test/quic_srt_gen_test.c" + ], + "test/quic_srtm_test" => [ + "test/quic_srtm_test-bin-quic_srtm_test.o" + ], + "test/quic_srtm_test-bin-quic_srtm_test.o" => [ + "test/quic_srtm_test.c" + ], + "test/quic_stream_test" => [ + "test/quic_stream_test-bin-quic_stream_test.o" + ], + "test/quic_stream_test-bin-quic_stream_test.o" => [ + "test/quic_stream_test.c" + ], + "test/quic_tserver_test" => [ + "test/quic_tserver_test-bin-quic_tserver_test.o" + ], + "test/quic_tserver_test-bin-quic_tserver_test.o" => [ + "test/quic_tserver_test.c" + ], + "test/quic_txp_test" => [ + "test/quic_txp_test-bin-cc_dummy.o", + "test/quic_txp_test-bin-quic_txp_test.o" + ], + "test/quic_txp_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_txp_test-bin-quic_txp_test.o" => [ + "test/quic_txp_test.c" + ], + "test/quic_txpim_test" => [ + "test/quic_txpim_test-bin-quic_txpim_test.o" + ], + "test/quic_txpim_test-bin-quic_txpim_test.o" => [ + "test/quic_txpim_test.c" + ], + "test/quic_wire_test" => [ + "test/quic_wire_test-bin-quic_wire_test.o" + ], + "test/quic_wire_test-bin-quic_wire_test.o" => [ + "test/quic_wire_test.c" + ], + "test/quicapitest" => [ + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/quicapitest-bin-quicapitest.o" + ], + "test/quicapitest-bin-quicapitest.o" => [ + "test/quicapitest.c" + ], + "test/quicfaultstest" => [ + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", + "test/quicfaultstest-bin-quicfaultstest.o" + ], + "test/quicfaultstest-bin-quicfaultstest.o" => [ + "test/quicfaultstest.c" + ], + "test/radix/quic_radix_test-bin-quic_radix.o" => [ + "test/radix/quic_radix.c" + ], "test/rand_status_test" => [ "test/rand_status_test-bin-rand_status_test.o" ], @@ -27259,11 +32199,11 @@ our %unified_info = ( "test/rc5test-bin-rc5test.o" => [ "test/rc5test.c" ], - "test/rdrand_sanitytest" => [ - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" + "test/rdcpu_sanitytest" => [ + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" ], - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" => [ - "test/rdrand_sanitytest.c" + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" => [ + "test/rdcpu_sanitytest.c" ], "test/recordlentest" => [ "test/helpers/recordlentest-bin-ssltestlib.o", @@ -27272,6 +32212,13 @@ our %unified_info = ( "test/recordlentest-bin-recordlentest.o" => [ "test/recordlentest.c" ], + "test/rpktest" => [ + "test/helpers/rpktest-bin-ssltestlib.o", + "test/rpktest-bin-rpktest.o" + ], + "test/rpktest-bin-rpktest.o" => [ + "test/rpktest.c" + ], "test/rsa_complex" => [ "test/rsa_complex-bin-rsa_complex.o" ], @@ -27296,6 +32243,18 @@ our %unified_info = ( "test/rsa_test-bin-rsa_test.o" => [ "test/rsa_test.c" ], + "test/rsa_x931_test" => [ + "test/rsa_x931_test-bin-rsa_x931_test.o" + ], + "test/rsa_x931_test-bin-rsa_x931_test.o" => [ + "test/rsa_x931_test.c" + ], + "test/safe_math_test" => [ + "test/safe_math_test-bin-safe_math_test.o" + ], + "test/safe_math_test-bin-safe_math_test.o" => [ + "test/safe_math_test.c" + ], "test/sanitytest" => [ "test/sanitytest-bin-sanitytest.o" ], @@ -27327,6 +32286,12 @@ our %unified_info = ( "test/siphash_internal_test-bin-siphash_internal_test.o" => [ "test/siphash_internal_test.c" ], + "test/slh_dsa_test" => [ + "test/slh_dsa_test-bin-slh_dsa_test.o" + ], + "test/slh_dsa_test-bin-slh_dsa_test.o" => [ + "test/slh_dsa_test.c" + ], "test/sm2_internal_test" => [ "test/sm2_internal_test-bin-sm2_internal_test.o" ], @@ -27369,6 +32334,13 @@ our %unified_info = ( "test/ssl_ctx_test-bin-ssl_ctx_test.o" => [ "test/ssl_ctx_test.c" ], + "test/ssl_handshake_rtt_test" => [ + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" + ], + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" => [ + "test/ssl_handshake_rtt_test.c" + ], "test/ssl_old_test" => [ "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/ssl_old_test-bin-ssl_old_test.o" @@ -27427,6 +32399,12 @@ our %unified_info = ( "test/stack_test-bin-stack_test.o" => [ "test/stack_test.c" ], + "test/strtoultest" => [ + "test/strtoultest-bin-strtoultest.o" + ], + "test/strtoultest-bin-strtoultest.o" => [ + "test/strtoultest.c" + ], "test/sysdefaulttest" => [ "test/sysdefaulttest-bin-sysdefaulttest.o" ], @@ -27457,6 +32435,9 @@ our %unified_info = ( "test/testutil/libtestutil-lib-format_output.o" => [ "test/testutil/format_output.c" ], + "test/testutil/libtestutil-lib-helper.o" => [ + "test/testutil/helper.c" + ], "test/testutil/libtestutil-lib-load.o" => [ "test/testutil/load.c" ], @@ -27490,6 +32471,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-testutil_init.o" => [ "test/testutil/testutil_init.c" ], + "test/threadpool_test" => [ + "test/threadpool_test-bin-threadpool_test.o" + ], + "test/threadpool_test-bin-threadpool_test.o" => [ + "test/threadpool_test.c" + ], "test/threadstest" => [ "test/threadstest-bin-threadstest.o" ], @@ -27508,6 +32495,12 @@ our %unified_info = ( "test/time_offset_test-bin-time_offset_test.o" => [ "test/time_offset_test.c" ], + "test/time_test" => [ + "test/time_test-bin-time_test.o" + ], + "test/time_test-bin-time_test.o" => [ + "test/time_test.c" + ], "test/tls13ccstest" => [ "test/helpers/tls13ccstest-bin-ssltestlib.o", "test/tls13ccstest-bin-tls13ccstest.o" @@ -27521,6 +32514,13 @@ our %unified_info = ( "test/tls13encryptiontest-bin-tls13encryptiontest.o" => [ "test/tls13encryptiontest.c" ], + "test/tls13groupselection_test" => [ + "test/helpers/tls13groupselection_test-bin-ssltestlib.o", + "test/tls13groupselection_test-bin-tls13groupselection_test.o" + ], + "test/tls13groupselection_test-bin-tls13groupselection_test.o" => [ + "test/tls13groupselection_test.c" + ], "test/trace_api_test" => [ "test/trace_api_test-bin-trace_api_test.o" ], @@ -27576,6 +32576,12 @@ our %unified_info = ( "test/wpackettest-bin-wpackettest.o" => [ "test/wpackettest.c" ], + "test/x509_acert_test" => [ + "test/x509_acert_test-bin-x509_acert_test.o" + ], + "test/x509_acert_test-bin-x509_acert_test.o" => [ + "test/x509_acert_test.c" + ], "test/x509_check_cert_pkey_test" => [ "test/x509_check_cert_pkey_test-bin-x509_check_cert_pkey_test.o" ], @@ -27594,6 +32600,24 @@ our %unified_info = ( "test/x509_internal_test-bin-x509_internal_test.o" => [ "test/x509_internal_test.c" ], + "test/x509_load_cert_file_test" => [ + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" + ], + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" => [ + "test/x509_load_cert_file_test.c" + ], + "test/x509_req_test" => [ + "test/x509_req_test-bin-x509_req_test.o" + ], + "test/x509_req_test-bin-x509_req_test.o" => [ + "test/x509_req_test.c" + ], + "test/x509_test" => [ + "test/x509_test-bin-x509_test.o" + ], + "test/x509_test-bin-x509_test.o" => [ + "test/x509_test.c" + ], "test/x509_time_test" => [ "test/x509_time_test-bin-x509_time_test.o" ], @@ -27654,6 +32678,7 @@ my @makevars = ( "LDLIBS", "MT", "MTFLAGS", + "OBJCOPY", "PERL", "RANLIB", "RC", @@ -27667,6 +32692,12 @@ my %disabled_info = ( "asan" => { "macro" => "OPENSSL_NO_ASAN" }, + "brotli" => { + "macro" => "OPENSSL_NO_BROTLI" + }, + "brotli-dynamic" => { + "macro" => "OPENSSL_NO_BROTLI_DYNAMIC" + }, "comp" => { "macro" => "OPENSSL_NO_COMP", "skipped" => [ @@ -27679,6 +32710,9 @@ my %disabled_info = ( "crypto-mdebug-backtrace" => { "macro" => "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE" }, + "demos" => { + "macro" => "OPENSSL_NO_DEMOS" + }, "devcryptoeng" => { "macro" => "OPENSSL_NO_DEVCRYPTOENG" }, @@ -27691,12 +32725,24 @@ my %disabled_info = ( "external-tests" => { "macro" => "OPENSSL_NO_EXTERNAL_TESTS" }, + "fips-jitter" => { + "macro" => "OPENSSL_NO_FIPS_JITTER" + }, "fuzz-afl" => { "macro" => "OPENSSL_NO_FUZZ_AFL" }, "fuzz-libfuzzer" => { "macro" => "OPENSSL_NO_FUZZ_LIBFUZZER" }, + "h3demo" => { + "macro" => "OPENSSL_NO_H3DEMO" + }, + "hqinterop" => { + "macro" => "OPENSSL_NO_HQINTEROP" + }, + "jitter" => { + "macro" => "OPENSSL_NO_JITTER" + }, "ktls" => { "macro" => "OPENSSL_NO_KTLS" }, @@ -27712,6 +32758,9 @@ my %disabled_info = ( "msan" => { "macro" => "OPENSSL_NO_MSAN" }, + "pie" => { + "macro" => "OPENSSL_NO_PIE" + }, "rc5" => { "macro" => "OPENSSL_NO_RC5", "skipped" => [ @@ -27727,6 +32776,12 @@ my %disabled_info = ( "ssl3-method" => { "macro" => "OPENSSL_NO_SSL3_METHOD" }, + "sslkeylog" => { + "macro" => "OPENSSL_NO_SSLKEYLOG" + }, + "tfo" => { + "macro" => "OPENSSL_NO_TFO" + }, "trace" => { "macro" => "OPENSSL_NO_TRACE" }, @@ -27741,6 +32796,18 @@ my %disabled_info = ( }, "weak-ssl-ciphers" => { "macro" => "OPENSSL_NO_WEAK_SSL_CIPHERS" + }, + "zlib" => { + "macro" => "OPENSSL_NO_ZLIB" + }, + "zlib-dynamic" => { + "macro" => "OPENSSL_NO_ZLIB_DYNAMIC" + }, + "zstd" => { + "macro" => "OPENSSL_NO_ZSTD" + }, + "zstd-dynamic" => { + "macro" => "OPENSSL_NO_ZSTD_DYNAMIC" } ); my @user_crossable = qw( AR AS CC CXX CPP LD MT RANLIB RC ); @@ -27754,15 +32821,15 @@ unless (caller) { use File::Copy; use Pod::Usage; - use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; - use OpenSSL::fallback '/home/runner/work/node/node/deps/openssl/openssl/external/perl/MODULES.txt'; + use lib '/node/deps/openssl/openssl/util/perl'; + use OpenSSL::fallback '/node/deps/openssl/openssl/external/perl/MODULES.txt'; my $here = dirname($0); if (scalar @ARGV == 0) { # With no arguments, re-create the build file # We do that in two steps, where the first step emits perl - # snipets. + # snippets. my $buildfile = $config{build_file}; my $buildfile_template = "$buildfile.in"; @@ -27782,7 +32849,7 @@ unless (caller) { ); use lib '.'; - use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; + use lib '/node/deps/openssl/openssl/Configurations'; use gentemplate; open my $buildfile_template_fh, ">$buildfile_template" @@ -27799,8 +32866,8 @@ unless (caller) { my $prepend = <<'_____'; use File::Spec::Functions; -use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; -use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; +use lib '/node/deps/openssl/openssl/util/perl'; +use lib '/node/deps/openssl/openssl/Configurations'; use lib '.'; use platform; _____ diff --git a/deps/openssl/config/archs/VC-WIN32/asm/crypto/aes/aes-586.asm b/deps/openssl/config/archs/VC-WIN32/asm/crypto/aes/aes-586.asm index 7a17e847c64a73..a086cffb69f5aa 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/crypto/aes/aes-586.asm +++ b/deps/openssl/config/archs/VC-WIN32/asm/crypto/aes/aes-586.asm @@ -3208,4 +3208,4 @@ db 65,69,83,32,102,111,114,32,120,56,54,44,32,67,82,89 db 80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114 db 111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 segment .bss -common _OPENSSL_ia32cap_P 16 +common _OPENSSL_ia32cap_P 40 diff --git a/deps/openssl/config/archs/VC-WIN32/asm/crypto/aes/aesni-x86.asm b/deps/openssl/config/archs/VC-WIN32/asm/crypto/aes/aesni-x86.asm index 14abad18102ad1..02f717dfc10da6 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/crypto/aes/aesni-x86.asm +++ b/deps/openssl/config/archs/VC-WIN32/asm/crypto/aes/aesni-x86.asm @@ -3199,4 +3199,4 @@ db 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 db 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 db 115,108,46,111,114,103,62,0 segment .bss -common _OPENSSL_ia32cap_P 16 +common _OPENSSL_ia32cap_P 40 diff --git a/deps/openssl/config/archs/VC-WIN32/asm/crypto/bn/bn-586.asm b/deps/openssl/config/archs/VC-WIN32/asm/crypto/bn/bn-586.asm index 82002b353bfd3b..e9e8a059af1ddc 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/crypto/bn/bn-586.asm +++ b/deps/openssl/config/archs/VC-WIN32/asm/crypto/bn/bn-586.asm @@ -1512,4 +1512,4 @@ L$029pw_end: pop ebp ret segment .bss -common _OPENSSL_ia32cap_P 16 +common _OPENSSL_ia32cap_P 40 diff --git a/deps/openssl/config/archs/VC-WIN32/asm/crypto/bn/x86-gf2m.asm b/deps/openssl/config/archs/VC-WIN32/asm/crypto/bn/x86-gf2m.asm index 709f4a9e506873..e726f43a66bb84 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/crypto/bn/x86-gf2m.asm +++ b/deps/openssl/config/archs/VC-WIN32/asm/crypto/bn/x86-gf2m.asm @@ -342,4 +342,4 @@ db 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 db 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 db 62,0 segment .bss -common _OPENSSL_ia32cap_P 16 +common _OPENSSL_ia32cap_P 40 diff --git a/deps/openssl/config/archs/VC-WIN32/asm/crypto/bn/x86-mont.asm b/deps/openssl/config/archs/VC-WIN32/asm/crypto/bn/x86-mont.asm index 090630c3a00c2b..1ab7a560d37652 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/crypto/bn/x86-mont.asm +++ b/deps/openssl/config/archs/VC-WIN32/asm/crypto/bn/x86-mont.asm @@ -476,4 +476,4 @@ db 54,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 db 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 db 111,114,103,62,0 segment .bss -common _OPENSSL_ia32cap_P 16 +common _OPENSSL_ia32cap_P 40 diff --git a/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h index 0aa05955cb7ded..f3bbe05ba095ff 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: " -#define DATE "built on: Sun Jul 20 00:55:52 2025 UTC" +#define DATE "built on: Tue Aug 5 17:23:53 2025 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN32/asm/crypto/chacha/chacha-x86.asm b/deps/openssl/config/archs/VC-WIN32/asm/crypto/chacha/chacha-x86.asm index a19fea38079c07..fe015851bf8144 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/crypto/chacha/chacha-x86.asm +++ b/deps/openssl/config/archs/VC-WIN32/asm/crypto/chacha/chacha-x86.asm @@ -1444,4 +1444,4 @@ L$019done: pop ebp ret segment .bss -common _OPENSSL_ia32cap_P 16 +common _OPENSSL_ia32cap_P 40 diff --git a/deps/openssl/config/archs/VC-WIN32/asm/crypto/ec/ecp_nistz256-x86.asm b/deps/openssl/config/archs/VC-WIN32/asm/crypto/ec/ecp_nistz256-x86.asm index 96071a300ead92..df13353f9d805f 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/crypto/ec/ecp_nistz256-x86.asm +++ b/deps/openssl/config/archs/VC-WIN32/asm/crypto/ec/ecp_nistz256-x86.asm @@ -5125,4 +5125,4 @@ L$013pic: pop ebp ret segment .bss -common _OPENSSL_ia32cap_P 16 +common _OPENSSL_ia32cap_P 40 diff --git a/deps/openssl/config/archs/VC-WIN32/asm/crypto/params_idx.c b/deps/openssl/config/archs/VC-WIN32/asm/crypto/params_idx.c new file mode 100644 index 00000000000000..874125eb57a17c --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/asm/crypto/params_idx.c @@ -0,0 +1,3366 @@ +/* + * WARNING: do not edit! + * Generated by makefile from crypto/params_idx.c.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#include "internal/e_os.h" +#include "internal/param_names.h" +#include + +/* Machine generated TRIE -- generated by util/perl/OpenSSL/paramnames.pm */ +int ossl_param_find_pidx(const char *s) +{ + switch(s[0]) { + default: + break; + case 'a': + switch(s[1]) { + default: + break; + case 'c': + if (strcmp("vp-info", s + 2) == 0) + return PIDX_KDF_PARAM_X942_ACVPINFO; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'd': + if (strcmp("itional-random", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_ADD_RANDOM; + break; + case '\0': + return PIDX_KDF_PARAM_ARGON2_AD; + } + break; + case 'e': + if (strcmp("ad", s + 2) == 0) + return PIDX_CIPHER_PARAM_AEAD; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("id_param", s + 4) == 0) + return PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD; + break; + case 'i': + if (strcmp("d-absent", s + 4) == 0) + return PIDX_DIGEST_PARAM_ALGID_ABSENT; + break; + case 'o': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'h': + switch(s[8]) { + default: + break; + case 'm': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '-': + if (strcmp("params", s + 13) == 0) + return PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS; + break; + case '\0': + return PIDX_ALG_PARAM_ALGORITHM_ID; + } + } + } + } + } + } + } + } + } + } + break; + case 'i': + if (strcmp("as", s + 3) == 0) + return PIDX_STORE_PARAM_ALIAS; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_A; + } + break; + case 'b': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("sis-type", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_CHAR2_TYPE; + break; + case 'i': + if (strcmp("ts", s + 2) == 0) + return PIDX_PKEY_PARAM_BITS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("size", s + 6) == 0) + return PIDX_MAC_PARAM_BLOCK_SIZE; + break; + case '_': + if (strcmp("padding", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING; + break; + case 's': + if (strcmp("ize", s + 6) == 0) + return PIDX_DIGEST_PARAM_BLOCK_SIZE; + } + } + } + } + break; + case 'u': + if (strcmp("ildinfo", s + 2) == 0) + return PIDX_PROV_PARAM_BUILDINFO; + break; + case '\0': + return PIDX_PKEY_PARAM_EC_B; + } + break; + case 'c': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_C_ROUNDS; + break; + case 'e': + if (strcmp("kalg", s + 2) == 0) + return PIDX_KDF_PARAM_CEK_ALG; + break; + case 'i': + if (strcmp("pher", s + 2) == 0) + return PIDX_ALG_PARAM_CIPHER; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("actor", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_COFACTOR; + break; + case 'n': + switch(s[3]) { + default: + break; + case 's': + if (strcmp("tant", s + 4) == 0) + return PIDX_KDF_PARAM_CONSTANT; + break; + case 't': + if (strcmp("ext-string", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_CONTEXT_STRING; + } + } + break; + case 't': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("mode", s + 4) == 0) + return PIDX_CIPHER_PARAM_CTS_MODE; + break; + case '\0': + return PIDX_CIPHER_PARAM_CTS; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '-': + if (strcmp("iv", s + 7) == 0) + return PIDX_CIPHER_PARAM_CUSTOM_IV; + break; + case '\0': + return PIDX_MAC_PARAM_CUSTOM; + } + } + } + } + } + } + break; + case 'd': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_D_ROUNDS; + break; + case 'a': + switch(s[2]) { + default: + break; + case 't': + switch(s[3]) { + default: + break; + case 'a': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 's': + if (strcmp("tructure", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_STRUCTURE; + break; + case 't': + if (strcmp("ype", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_TYPE; + } + break; + case '\0': + return PIDX_OBJECT_PARAM_DATA; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + if (strcmp("ded-from-explicit", s + 4) == 0) + return PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS; + break; + case 'r': + if (strcmp("ypt-only", s + 4) == 0) + return PIDX_CIPHER_PARAM_DECRYPT_ONLY; + } + break; + case 'f': + if (strcmp("ault-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_DEFAULT_DIGEST; + break; + case 's': + if (strcmp("c", s + 3) == 0) + return PIDX_OBJECT_PARAM_DESC; + break; + case 't': + if (strcmp("erministic", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_DETERMINISTIC; + } + break; + case 'h': + if (strcmp("kem-ikm", s + 2) == 0) + return PIDX_PKEY_PARAM_DHKEM_IKM; + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("heck", s + 8) == 0) + return PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK; + break; + case 'n': + if (strcmp("oinit", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_NOINIT; + break; + case 'o': + if (strcmp("neshot", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_ONESHOT; + break; + case 'p': + if (strcmp("rops", s + 8) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS; + break; + case 's': + if (strcmp("ize", s + 8) == 0) + return PIDX_PKEY_PARAM_DIGEST_SIZE; + } + break; + case '\0': + return PIDX_STORE_PARAM_DIGEST; + } + } + } + } + break; + case 's': + if (strcmp("tid", s + 3) == 0) + return PIDX_PKEY_PARAM_DIST_ID; + } + break; + case 'r': + if (strcmp("bg-no-trunc-md", s + 2) == 0) + return PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST; + break; + case 's': + if (strcmp("a-sign-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_DSA_SIGN_DISABLED; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_D; + } + break; + case 'e': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("rly_clean", s + 2) == 0) + return PIDX_KDF_PARAM_EARLY_CLEAN; + break; + case 'c': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'h': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'a': + switch(s[9]) { + default: + break; + case 'c': + switch(s[10]) { + default: + break; + case 't': + switch(s[11]) { + default: + break; + case 'o': + switch(s[12]) { + default: + break; + case 'r': + switch(s[13]) { + default: + break; + case '-': + switch(s[14]) { + default: + break; + case 'c': + if (strcmp("heck", s + 15) == 0) + return PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK; + break; + case 'm': + if (strcmp("ode", s + 15) == 0) + return PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE; + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'm': + if (strcmp("s_check", s + 2) == 0) + return PIDX_KDF_PARAM_FIPS_EMS_CHECK; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("d-pub-key", s + 6) == 0) + return PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY; + break; + case 'i': + if (strcmp("ng", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_ENCODING; + } + } + break; + case 'r': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'c': + if (strcmp("heck", s + 9) == 0) + return PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK; + break; + case 'l': + if (strcmp("evel", s + 9) == 0) + return PIDX_ENCODER_PARAM_ENCRYPT_LEVEL; + } + } + } + } + } + } + break; + case 'g': + if (strcmp("ine", s + 3) == 0) + return PIDX_ALG_PARAM_ENGINE; + break; + case 't': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'y': + switch(s[7]) { + default: + break; + case '_': + if (strcmp("required", s + 8) == 0) + return PIDX_DRBG_PARAM_ENTROPY_REQUIRED; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_ENTROPY; + } + } + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_E; + break; + case 'x': + if (strcmp("pect", s + 2) == 0) + return PIDX_STORE_PARAM_EXPECT; + } + break; + case 'f': + switch(s[1]) { + default: + break; + case 'i': + switch(s[2]) { + default: + break; + case 'e': + if (strcmp("ld-type", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_FIELD_TYPE; + break; + case 'n': + if (strcmp("gerprint", s + 3) == 0) + return PIDX_STORE_PARAM_FINGERPRINT; + break; + case 'p': + if (strcmp("s-indicator", s + 3) == 0) + return PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR; + } + } + break; + case 'g': + switch(s[1]) { + default: + break; + case 'e': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_GENERATE; + } + break; + case 'o': + if (strcmp("r", s + 8) == 0) + return PIDX_PKEY_PARAM_EC_GENERATOR; + } + } + } + } + } + } + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_GINDEX; + break; + case 'r': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'u': + switch(s[4]) { + default: + break; + case 'p': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("check", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE; + break; + case '\0': + return PIDX_PKEY_PARAM_GROUP_NAME; + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_G; + } + break; + case 'h': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("s-randkey", s + 2) == 0) + return PIDX_CIPHER_PARAM_HAS_RAND_KEY; + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_H; + break; + case 'k': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'f': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_KEY_CHECK; + } + } + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_HMAC_KEY_CHECK; + break; + case 's': + if (strcmp("_padding", s + 2) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING; + } + break; + case 'i': + switch(s[1]) { + default: + break; + case 'd': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_PKCS12_ID; + } + break; + case 'k': + if (strcmp("me", s + 2) == 0) + return PIDX_KEM_PARAM_IKME; + break; + case 'm': + if (strcmp("plicit-rejection", s + 2) == 0) + return PIDX_PKEY_PARAM_IMPLICIT_REJECTION; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("lude-public", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC; + break; + case 'f': + if (strcmp("o", s + 3) == 0) + return PIDX_PASSPHRASE_PARAM_INFO; + break; + case 'p': + if (strcmp("ut-type", s + 3) == 0) + return PIDX_STORE_PARAM_INPUT_TYPE; + break; + case 's': + if (strcmp("tance", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_INSTANCE; + } + break; + case 't': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("tion", s + 5) == 0) + return PIDX_GEN_PARAM_ITERATION; + break; + case '\0': + return PIDX_KDF_PARAM_ITER; + } + } + } + break; + case 'v': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("generated", s + 3) == 0) + return PIDX_CIPHER_PARAM_AEAD_IV_GENERATED; + break; + case 'l': + if (strcmp("en", s + 3) == 0) + return PIDX_CIPHER_PARAM_IVLEN; + break; + case '\0': + return PIDX_MAC_PARAM_IV; + } + } + break; + case 'j': + switch(s[1]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_COFACTOR; + } + break; + case 'k': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K2; + } + break; + case '3': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K3; + } + break; + case 'a': + if (strcmp("t", s + 2) == 0) + return PIDX_SIGNATURE_PARAM_KAT; + break; + case 'b': + if (strcmp("kdf-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KBKDF_KEY_CHECK; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case 's': + switch(s[9]) { + default: + break; + case 't': + switch(s[10]) { + default: + break; + case '-': + if (strcmp("props", s + 11) == 0) + return PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_KDF_DIGEST; + } + } + } + } + } + } + break; + case 'o': + if (strcmp("utlen", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_OUTLEN; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_TYPE; + break; + case 'u': + if (strcmp("km", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_UKM; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'y': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("heck", s + 5) == 0) + return PIDX_PKEY_PARAM_FIPS_KEY_CHECK; + break; + case 'l': + if (strcmp("ength", s + 5) == 0) + return PIDX_SKEY_PARAM_KEY_LENGTH; + } + break; + case 'b': + if (strcmp("its", s + 4) == 0) + return PIDX_CIPHER_PARAM_RC2_KEYBITS; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_KEYLEN; + break; + case '\0': + return PIDX_MAC_PARAM_KEY; + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KMAC_KEY_CHECK; + } + break; + case 'l': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("el", s + 3) == 0) + return PIDX_KDF_PARAM_LABEL; + break; + case 'n': + if (strcmp("es", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_LANES; + } + } + break; + case 'm': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'k': + if (strcmp("ey", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_MAC_KEY; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_KDF_PARAM_MAC_SIZE; + break; + case '\0': + return PIDX_ALG_PARAM_MAC; + } + break; + case 'n': + if (strcmp("datory-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_MANDATORY_DIGEST; + break; + case 'x': + switch(s[3]) { + default: + break; + case '-': + if (strcmp("size", s + 4) == 0) + return PIDX_PKEY_PARAM_MAX_SIZE; + break; + case '_': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("dinlen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_ADINLEN; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("rly_data", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA; + break; + case 'n': + if (strcmp("tropylen", s + 6) == 0) + return PIDX_DRBG_PARAM_MAX_ENTROPYLEN; + } + break; + case 'f': + if (strcmp("rag_len", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_NONCELEN; + break; + case 'p': + if (strcmp("erslen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_PERSLEN; + break; + case 'r': + if (strcmp("equest", s + 5) == 0) + return PIDX_RAND_PARAM_MAX_REQUEST; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MAX_LENGTH; + break; + case 'm': + if (strcmp("em_bytes", s + 4) == 0) + return PIDX_KDF_PARAM_SCRYPT_MAXMEM; + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'm': + if (strcmp("cost", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_MEMCOST; + break; + case 's': + if (strcmp("sage-encoding", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING; + } + break; + case 'g': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_DIGEST; + break; + case 'p': + if (strcmp("roperties", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_PROPERTIES; + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_MASKGENFUNC; + } + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("alg", s + 3) == 0) + return PIDX_DIGEST_PARAM_MICALG; + break; + case 'n': + switch(s[3]) { + default: + break; + case '_': + switch(s[4]) { + default: + break; + case 'e': + if (strcmp("ntropylen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_ENTROPYLEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_NONCELEN; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MIN_LENGTH; + } + } + break; + case 'l': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + if (strcmp("nput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS; + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED; + } + } + } + } + break; + case 'k': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + switch(s[8]) { + default: + break; + case 'm': + if (strcmp("port_pct_type", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE; + break; + case 'n': + if (strcmp("put_formats", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS; + } + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED; + } + } + } + } + } + } + break; + case 'o': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case '\0': + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE; + } + break; + case 'u': + if (strcmp("le-filename", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_MODULE_FILENAME; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_SIGNATURE_PARAM_MU; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_M; + } + break; + case 'n': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("me", s + 2) == 0) + return PIDX_STORE_PARAM_ISSUER; + break; + case 'o': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("short-mac", s + 3) == 0) + return PIDX_PROV_PARAM_NO_SHORT_MAC; + break; + case 'n': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("type", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_NONCE_TYPE; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_NONCE; + } + } + } + } + break; + case 'u': + if (strcmp("m", s + 2) == 0) + return PIDX_CIPHER_PARAM_NUM; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_N; + } + break; + case 'o': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("ep-label", s + 2) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL; + break; + case 'p': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'n': + if (strcmp("ssl-version", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_VERSION; + break; + case 'r': + if (strcmp("ation", s + 4) == 0) + return PIDX_KEM_PARAM_OPERATION; + } + break; + case 't': + if (strcmp("ions", s + 3) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS; + } + break; + case 'r': + if (strcmp("der", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_ORDER; + } + break; + case 'p': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P2; + } + break; + case 'a': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'm': + if (strcmp("ode", s + 5) == 0) + return PIDX_PKEY_PARAM_PAD_MODE; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_DIGEST_PARAM_PAD_TYPE; + } + break; + case 'd': + if (strcmp("ing", s + 4) == 0) + return PIDX_CIPHER_PARAM_PADDING; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_PAD; + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'u': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYUINFO; + break; + case 'v': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYVINFO; + } + } + } + break; + case 's': + if (strcmp("s", s + 3) == 0) + return PIDX_KDF_PARAM_PASSWORD; + } + break; + case 'b': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("ts", s + 3) == 0) + return PIDX_PKEY_PARAM_FFC_PBITS; + break; + case 'k': + if (strcmp("df2-lower-bound-check", s + 3) == 0) + return PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK; + } + break; + case 'c': + if (strcmp("ounter", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_PCOUNTER; + break; + case 'i': + if (strcmp("peline-tag", s + 2) == 0) + return PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG; + break; + case 'k': + if (strcmp("cs5", s + 2) == 0) + return PIDX_KDF_PARAM_PKCS5; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("nt-format", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT; + break; + case 't': + if (strcmp("ential", s + 3) == 0) + return PIDX_GEN_PARAM_POTENTIAL; + } + break; + case 'r': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("iction_resistance", s + 4) == 0) + return PIDX_DRBG_PARAM_PREDICTION_RESISTANCE; + break; + case 'f': + if (strcmp("ix", s + 4) == 0) + return PIDX_KDF_PARAM_PREFIX; + } + break; + case 'i': + switch(s[3]) { + default: + break; + case 'm': + if (strcmp("es", s + 4) == 0) + return PIDX_PKEY_PARAM_RSA_PRIMES; + break; + case 'v': + switch(s[4]) { + default: + break; + case '_': + if (strcmp("len", s + 5) == 0) + return PIDX_PKEY_PARAM_DH_PRIV_LEN; + break; + case '\0': + return PIDX_PKEY_PARAM_PRIV_KEY; + } + } + break; + case 'o': + switch(s[3]) { + default: + break; + case 'p': + if (strcmp("erties", s + 4) == 0) + return PIDX_STORE_PARAM_PROPERTIES; + break; + case 'v': + if (strcmp("ider-name", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_PROV_NAME; + } + } + break; + case 'u': + if (strcmp("b", s + 2) == 0) + return PIDX_PKEY_PARAM_PUB_KEY; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_P; + } + break; + case 'q': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q2; + } + break; + case 'b': + if (strcmp("its", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_QBITS; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_Q; + break; + case 'x': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_X; + } + break; + case 'y': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_Y; + } + } + break; + case 'r': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'k': + if (strcmp("ey", s + 5) == 0) + return PIDX_CIPHER_PARAM_RANDOM_KEY; + break; + case 'o': + if (strcmp("m_data", s + 5) == 0) + return PIDX_DRBG_PARAM_RANDOM_DATA; + } + } + break; + case 'w': + if (strcmp("-bytes", s + 3) == 0) + return PIDX_SKEY_PARAM_RAW_BYTES; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case '_': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("head", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD; + break; + case 'b': + if (strcmp("uffer_len", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN; + } + } + } + break; + case 'f': + if (strcmp("erence", s + 3) == 0) + return PIDX_OBJECT_PARAM_REFERENCE; + break; + case 's': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case '_': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("ounter", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_COUNTER; + break; + case 'r': + if (strcmp("equests", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_REQUESTS; + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case 'm': + switch(s[10]) { + default: + break; + case 'e': + switch(s[11]) { + default: + break; + case '_': + if (strcmp("interval", s + 12) == 0) + return PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL; + break; + case '\0': + return PIDX_DRBG_PARAM_RESEED_TIME; + } + } + } + } + } + } + } + } + } + } + break; + case 'o': + if (strcmp("unds", s + 2) == 0) + return PIDX_CIPHER_PARAM_ROUNDS; + break; + case 's': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + switch(s[5]) { + default: + break; + case 'o': + switch(s[6]) { + default: + break; + case 'e': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case 'i': + switch(s[10]) { + default: + break; + case 'c': + switch(s[11]) { + default: + break; + case 'i': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'n': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case '1': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT1; + } + break; + case '2': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT2; + } + break; + case '3': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT3; + } + break; + case '4': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT4; + } + break; + case '5': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT5; + } + break; + case '6': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT6; + } + break; + case '7': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT7; + } + break; + case '8': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT8; + } + break; + case '9': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'd': + if (strcmp("erive-from-pq", s + 5) == 0) + return PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'x': + switch(s[6]) { + default: + break; + case 'p': + switch(s[7]) { + default: + break; + case 'o': + switch(s[8]) { + default: + break; + case 'n': + switch(s[9]) { + default: + break; + case 'e': + switch(s[10]) { + default: + break; + case 'n': + switch(s[11]) { + default: + break; + case 't': + switch(s[12]) { + default: + break; + case '1': + switch(s[13]) { + default: + break; + case '0': + switch(s[14]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT1; + } + break; + case '2': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT2; + } + break; + case '3': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT3; + } + break; + case '4': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT4; + } + break; + case '5': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT5; + } + break; + case '6': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT6; + } + break; + case '7': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT7; + } + break; + case '8': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT8; + } + break; + case '9': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT; + } + } + } + } + } + } + } + } + break; + case 'f': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'o': + switch(s[9]) { + default: + break; + case 'r': + switch(s[10]) { + default: + break; + case '1': + switch(s[11]) { + default: + break; + case '0': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR1; + } + break; + case '2': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR2; + } + break; + case '3': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR3; + } + break; + case '4': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR4; + } + break; + case '5': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR5; + } + break; + case '6': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR6; + } + break; + case '7': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR7; + } + break; + case '8': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR8; + } + break; + case '9': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR; + } + } + } + } + } + } + break; + case 'p': + switch(s[5]) { + default: + break; + case 'k': + if (strcmp("cs15-pad-disabled", s + 6) == 0) + return PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED; + break; + case 's': + if (strcmp("s-saltlen-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK; + } + break; + case 's': + if (strcmp("ign-x931-pad-disabled", s + 5) == 0) + return PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED; + } + } + } + break; + case '\0': + return PIDX_KDF_PARAM_SCRYPT_R; + } + break; + case 's': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("eprime-generator", s + 3) == 0) + return PIDX_PKEY_PARAM_DH_GENERATOR; + break; + case 'l': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'l': + if (strcmp("en", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_PSS_SALTLEN; + break; + case '\0': + return PIDX_MAC_PARAM_SALT; + } + } + break; + case 'v': + if (strcmp("e-parameters", s + 3) == 0) + return PIDX_ENCODER_PARAM_SAVE_PARAMETERS; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'r': + if (strcmp("et", s + 4) == 0) + return PIDX_KDF_PARAM_SECRET; + break; + case 'u': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'y': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'b': + if (strcmp("its", s + 10) == 0) + return PIDX_PKEY_PARAM_SECURITY_BITS; + break; + case 'c': + if (strcmp("hecks", s + 10) == 0) + return PIDX_PROV_PARAM_SECURITY_CHECKS; + } + } + } + } + } + } + } + break; + case 'e': + if (strcmp("d", s + 3) == 0) + return PIDX_PKEY_PARAM_SLH_DSA_SEED; + break; + case 'r': + if (strcmp("ial", s + 3) == 0) + return PIDX_STORE_PARAM_SERIAL; + break; + case 's': + if (strcmp("sion_id", s + 3) == 0) + return PIDX_KDF_PARAM_SSHKDF_SESSION_ID; + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'n': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + if (strcmp("heck", s + 6) == 0) + return PIDX_PKEY_PARAM_FIPS_SIGN_CHECK; + break; + case 'x': + if (strcmp("931-pad-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK; + } + break; + case 'a': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case 'u': + switch(s[7]) { + default: + break; + case 'r': + switch(s[8]) { + default: + break; + case 'e': + switch(s[9]) { + default: + break; + case '-': + if (strcmp("digest-check", s + 10) == 0) + return PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK; + break; + case '\0': + return PIDX_SIGNATURE_PARAM_SIGNATURE; + } + } + } + } + } + } + } + break; + case 'z': + if (strcmp("e", s + 3) == 0) + return PIDX_MAC_PARAM_SIZE; + } + break; + case 'p': + if (strcmp("eed", s + 2) == 0) + return PIDX_CIPHER_PARAM_SPEED; + break; + case 's': + switch(s[2]) { + default: + break; + case 'h': + switch(s[3]) { + default: + break; + case 'k': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'f': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_KEY_CHECK; + } + } + } + } + } + break; + case 'k': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'f': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_KEY_CHECK; + } + } + } + } + break; + case 'l': + if (strcmp("3-ms", s + 3) == 0) + return PIDX_DIGEST_PARAM_SSL3_MS; + } + break; + case 't': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("esc", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_DESC; + break; + case 'p': + if (strcmp("hase", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_PHASE; + break; + case 't': + if (strcmp("ype", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_TYPE; + } + break; + case 'a': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_STATE; + } + break; + case 'u': + if (strcmp("s", s + 5) == 0) + return PIDX_PROV_PARAM_STATUS; + } + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("m_mac", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC; + break; + case 'n': + if (strcmp("gth", s + 5) == 0) + return PIDX_RAND_PARAM_STRENGTH; + } + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("ject", s + 3) == 0) + return PIDX_STORE_PARAM_SUBJECT; + break; + case 'p': + switch(s[3]) { + default: + break; + case 'p': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + if (strcmp("ivinfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PRIVINFO; + break; + case 'u': + if (strcmp("binfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PUBINFO; + } + } + } + } + } + } + break; + case 't': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_TAGLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TAG; + } + } + break; + case 'd': + if (strcmp("es-encrypt-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED; + break; + case 'e': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case '-': + if (strcmp("entropy", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_TEST_ENTROPY; + break; + case '_': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("ntropy", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_ENTROPY; + break; + case 'n': + if (strcmp("once", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_NONCE; + } + } + } + } + break; + case 'h': + if (strcmp("reads", s + 2) == 0) + return PIDX_KDF_PARAM_THREADS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("lient-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION; + break; + case 'd': + if (strcmp("ata-size", s + 5) == 0) + return PIDX_MAC_PARAM_TLS_DATA_SIZE; + break; + case 'g': + switch(s[5]) { + default: + break; + case 'r': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'u': + switch(s[8]) { + default: + break; + case 'p': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'a': + if (strcmp("lg", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_ALG; + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_ID; + } + break; + case 's': + if (strcmp("-kem", s + 12) == 0) + return PIDX_CAPABILITY_TLS_GROUP_IS_KEM; + } + break; + case 'n': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'm': + switch(s[13]) { + default: + break; + case 'e': + switch(s[14]) { + default: + break; + case '-': + if (strcmp("internal", s + 15) == 0) + return PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL; + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_NAME; + } + } + } + } + break; + case 's': + if (strcmp("ec-bits", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case '-': + if (strcmp("size", s + 8) == 0) + return PIDX_CIPHER_PARAM_TLS_MAC_SIZE; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS_MAC; + } + break; + case 'x': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS; + } + } + } + break; + case 'i': + switch(s[6]) { + default: + break; + case 'n': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS; + } + } + } + break; + case 'u': + if (strcmp("lti", s + 6) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK; + } + break; + case 'n': + if (strcmp("egotiated-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION; + break; + case 's': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'a': + switch(s[8]) { + default: + break; + case 'l': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '-': + switch(s[11]) { + default: + break; + case 'c': + if (strcmp("ode-point", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT; + break; + case 'h': + switch(s[12]) { + default: + break; + case 'a': + switch(s[13]) { + default: + break; + case 's': + switch(s[14]) { + default: + break; + case 'h': + switch(s[15]) { + default: + break; + case '-': + switch(s[16]) { + default: + break; + case 'n': + if (strcmp("ame", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME; + break; + case 'o': + if (strcmp("id", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_OID; + } + } + } + } + } + break; + case 'i': + if (strcmp("ana-name", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME; + break; + case 'k': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'y': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case 'y': + switch(s[16]) { + default: + break; + case 'p': + switch(s[17]) { + default: + break; + case 'e': + switch(s[18]) { + default: + break; + case '-': + if (strcmp("oid", s + 19) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID; + break; + case '\0': + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE; + } + } + } + } + } + } + } + break; + case 'n': + if (strcmp("ame", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_NAME; + break; + case 'o': + if (strcmp("id", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_OID; + break; + case 's': + switch(s[12]) { + default: + break; + case 'e': + if (strcmp("c-bits", s + 13) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS; + break; + case 'i': + switch(s[13]) { + default: + break; + case 'g': + switch(s[14]) { + default: + break; + case '-': + switch(s[15]) { + default: + break; + case 'n': + if (strcmp("ame", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME; + break; + case 'o': + if (strcmp("id", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_OID; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'v': + if (strcmp("ersion", s + 5) == 0) + return PIDX_CIPHER_PARAM_TLS_VERSION; + } + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK; + break; + case 'e': + if (strcmp("ms-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK; + } + } + } + } + } + break; + case '3': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'k': + switch(s[7]) { + default: + break; + case 'd': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'u': + switch(s[6]) { + default: + break; + case 'l': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case '_': + switch(s[10]) { + default: + break; + case 'a': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'd': + switch(s[13]) { + default: + break; + case 'p': + if (strcmp("acklen", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD; + } + } + } + break; + case 'e': + switch(s[11]) { + default: + break; + case 'n': + switch(s[12]) { + default: + break; + case 'c': + switch(s[13]) { + default: + break; + case 'i': + if (strcmp("n", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN; + break; + case 'l': + if (strcmp("en", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC; + } + } + } + break; + case 'i': + if (strcmp("nterleave", s + 11) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE; + break; + case 'm': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'x': + switch(s[13]) { + default: + break; + case 'b': + if (strcmp("ufsz", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE; + break; + case 's': + if (strcmp("ndfrag", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT; + } + } + } + } + } + } + } + } + } + } + break; + case 'a': + switch(s[4]) { + default: + break; + case 'a': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'p': + if (strcmp("ad", s + 7) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD; + } + } + } + break; + case 'i': + switch(s[4]) { + default: + break; + case 'v': + switch(s[5]) { + default: + break; + case 'f': + if (strcmp("ixed", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED; + break; + case 'g': + if (strcmp("en", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN; + break; + case 'i': + if (strcmp("nv", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV; + } + } + break; + case 't': + if (strcmp("ree", s + 4) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS; + } + break; + case 'y': + if (strcmp("pe", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_TYPE; + } + break; + case 'u': + switch(s[1]) { + default: + break; + case 'k': + if (strcmp("m", s + 2) == 0) + return PIDX_KDF_PARAM_UKM; + break; + case 'p': + if (strcmp("dated-iv", s + 2) == 0) + return PIDX_CIPHER_PARAM_UPDATED_IV; + break; + case 's': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'b': + if (strcmp("its", s + 5) == 0) + return PIDX_CIPHER_PARAM_USE_BITS; + break; + case 'c': + if (strcmp("ofactor-flag", s + 5) == 0) + return PIDX_PKEY_PARAM_USE_COFACTOR_FLAG; + break; + case 'k': + if (strcmp("eybits", s + 5) == 0) + return PIDX_KDF_PARAM_X942_USE_KEYBITS; + break; + case 'l': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_KBKDF_USE_L; + } + break; + case 's': + if (strcmp("eparator", s + 5) == 0) + return PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR; + } + break; + case '_': + switch(s[4]) { + default: + break; + case 'd': + if (strcmp("erivation_function", s + 5) == 0) + return PIDX_DRBG_PARAM_USE_DF; + break; + case 'e': + if (strcmp("tm", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM; + } + } + } + } + break; + case 'v': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'l': + switch(s[3]) { + default: + break; + case 'i': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_VALIDATE_G; + } + break; + case 'l': + if (strcmp("egacy", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY; + break; + case 'p': + if (strcmp("q", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_PQ; + } + } + } + } + } + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'r': + switch(s[3]) { + default: + break; + case 'i': + if (strcmp("fy-message", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE; + break; + case 's': + if (strcmp("ion", s + 4) == 0) + return PIDX_PROV_PARAM_VERSION; + } + } + } + break; + case 'x': + switch(s[1]) { + default: + break; + case '9': + switch(s[2]) { + default: + break; + case '4': + if (strcmp("2kdf-key-check", s + 3) == 0) + return PIDX_PROV_PARAM_X942KDF_KEY_CHECK; + break; + case '6': + switch(s[3]) { + default: + break; + case '3': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'f': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_KEY_CHECK; + } + } + } + } + } + } + } + break; + case 'c': + if (strcmp("ghash", s + 2) == 0) + return PIDX_KDF_PARAM_SSHKDF_XCGHASH; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_DIGEST_PARAM_XOFLEN; + break; + case '\0': + return PIDX_MAC_PARAM_XOF; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP; + } + break; + case 'q': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ; + } + break; + case 't': + if (strcmp("s_standard", s + 2) == 0) + return PIDX_CIPHER_PARAM_XTS_STANDARD; + } + } + return -1; +} + +/* End of TRIE */ diff --git a/deps/openssl/config/archs/VC-WIN32/asm/crypto/poly1305/poly1305-x86.asm b/deps/openssl/config/archs/VC-WIN32/asm/crypto/poly1305/poly1305-x86.asm index ba241b7992bd8c..436d70f5315f63 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/crypto/poly1305/poly1305-x86.asm +++ b/deps/openssl/config/archs/VC-WIN32/asm/crypto/poly1305/poly1305-x86.asm @@ -1900,4 +1900,4 @@ db 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111 db 114,103,62,0 align 4 segment .bss -common _OPENSSL_ia32cap_P 16 +common _OPENSSL_ia32cap_P 40 diff --git a/deps/openssl/config/archs/VC-WIN32/asm/crypto/rc4/rc4-586.asm b/deps/openssl/config/archs/VC-WIN32/asm/crypto/rc4/rc4-586.asm index c2758bfe8f69b1..8d4906eba79ef8 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/crypto/rc4/rc4-586.asm +++ b/deps/openssl/config/archs/VC-WIN32/asm/crypto/rc4/rc4-586.asm @@ -371,4 +371,4 @@ db 80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114 db 111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 align 64 segment .bss -common _OPENSSL_ia32cap_P 16 +common _OPENSSL_ia32cap_P 40 diff --git a/deps/openssl/config/archs/VC-WIN32/asm/crypto/sha/sha1-586.asm b/deps/openssl/config/archs/VC-WIN32/asm/crypto/sha/sha1-586.asm index 1112de399f7e89..70a2dbb81d9ddc 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/crypto/sha/sha1-586.asm +++ b/deps/openssl/config/archs/VC-WIN32/asm/crypto/sha/sha1-586.asm @@ -3967,4 +3967,4 @@ db 102,111,114,109,32,102,111,114,32,120,56,54,44,32,67,82 db 89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112 db 114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 segment .bss -common _OPENSSL_ia32cap_P 16 +common _OPENSSL_ia32cap_P 40 diff --git a/deps/openssl/config/archs/VC-WIN32/asm/crypto/sha/sha256-586.asm b/deps/openssl/config/archs/VC-WIN32/asm/crypto/sha/sha256-586.asm index 1108147ae6c7c0..b145406ab50bd7 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/crypto/sha/sha256-586.asm +++ b/deps/openssl/config/archs/VC-WIN32/asm/crypto/sha/sha256-586.asm @@ -6786,4 +6786,4 @@ L$018avx_bmi_00_47: pop ebp ret segment .bss -common _OPENSSL_ia32cap_P 16 +common _OPENSSL_ia32cap_P 40 diff --git a/deps/openssl/config/archs/VC-WIN32/asm/crypto/sha/sha512-586.asm b/deps/openssl/config/archs/VC-WIN32/asm/crypto/sha/sha512-586.asm index 2202228ce0214e..7f78330a2262e5 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/crypto/sha/sha512-586.asm +++ b/deps/openssl/config/archs/VC-WIN32/asm/crypto/sha/sha512-586.asm @@ -2832,4 +2832,4 @@ db 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 db 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 db 62,0 segment .bss -common _OPENSSL_ia32cap_P 16 +common _OPENSSL_ia32cap_P 40 diff --git a/deps/openssl/config/archs/VC-WIN32/asm/crypto/x86cpuid.asm b/deps/openssl/config/archs/VC-WIN32/asm/crypto/x86cpuid.asm index fc920ed46a1e4a..1f336501d737c8 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/crypto/x86cpuid.asm +++ b/deps/openssl/config/archs/VC-WIN32/asm/crypto/x86cpuid.asm @@ -123,6 +123,24 @@ L$002generic: xor ecx,ecx cpuid mov DWORD [8+edi],ebx + mov DWORD [12+edi],ecx + mov DWORD [16+edi],edx + cmp eax,1 + jb NEAR L$005no_extended_info + mov eax,7 + mov ecx,1 + cpuid + mov DWORD [20+edi],eax + mov DWORD [24+edi],edx + mov DWORD [28+edi],ebx + mov DWORD [32+edi],ecx + and edx,524288 + cmp edx,0 + je NEAR L$005no_extended_info + mov eax,36 + mov ecx,0 + cpuid + mov DWORD [36+edi],ebx L$005no_extended_info: bt ebp,27 jnc NEAR L$006clear_avx @@ -138,6 +156,7 @@ L$008clear_xmm: and esi,4278190079 L$006clear_avx: and ebp,4026525695 + and DWORD [20+edi],4286578687 and DWORD [8+edi],4294967263 L$007done: mov eax,esi @@ -500,7 +519,7 @@ L$031done: pop edi ret segment .bss -common _OPENSSL_ia32cap_P 16 +common _OPENSSL_ia32cap_P 40 segment .CRT$XCU data align=4 extern _OPENSSL_cpuid_setup dd _OPENSSL_cpuid_setup diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/internal/param_names.h b/deps/openssl/config/archs/VC-WIN32/asm/include/internal/param_names.h new file mode 100644 index 00000000000000..ec5bff6e31c126 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/internal/param_names.h @@ -0,0 +1,469 @@ +/* + * WARNING: do not edit! + * Generated by makefile from include/internal/param_names.h.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +int ossl_param_find_pidx(const char *s); + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +#define NUM_PIDX 346 + +#define PIDX_ALG_PARAM_ALGORITHM_ID 0 +#define PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS 1 +#define PIDX_ALG_PARAM_CIPHER 2 +#define PIDX_ALG_PARAM_DIGEST 3 +#define PIDX_ALG_PARAM_ENGINE 4 +#define PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR 5 +#define PIDX_ALG_PARAM_MAC 6 +#define PIDX_ALG_PARAM_PROPERTIES 7 +#define PIDX_ASYM_CIPHER_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_ENGINE PIDX_PKEY_PARAM_ENGINE +#define PIDX_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +#define PIDX_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS 9 +#define PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL 10 +#define PIDX_ASYM_CIPHER_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_ASYM_CIPHER_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION 11 +#define PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION 12 +#define PIDX_CAPABILITY_TLS_GROUP_ALG 13 +#define PIDX_CAPABILITY_TLS_GROUP_ID 14 +#define PIDX_CAPABILITY_TLS_GROUP_IS_KEM 15 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_GROUP_NAME 20 +#define PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL 21 +#define PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS 22 +#define PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT 23 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME 24 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_OID 25 +#define PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME 26 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE 27 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID 28 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_SIGALG_NAME 29 +#define PIDX_CAPABILITY_TLS_SIGALG_OID 30 +#define PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS 31 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME 32 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_OID 33 +#define PIDX_CIPHER_PARAM_AEAD 34 +#define PIDX_CIPHER_PARAM_AEAD_IVLEN PIDX_CIPHER_PARAM_IVLEN +#define PIDX_CIPHER_PARAM_AEAD_IV_GENERATED 35 +#define PIDX_CIPHER_PARAM_AEAD_MAC_KEY 36 +#define PIDX_CIPHER_PARAM_AEAD_TAG 37 +#define PIDX_CIPHER_PARAM_AEAD_TAGLEN 38 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD 39 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD 40 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN 41 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED 42 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV 43 +#define PIDX_CIPHER_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD 44 +#define PIDX_CIPHER_PARAM_BLOCK_SIZE 45 +#define PIDX_CIPHER_PARAM_CTS 46 +#define PIDX_CIPHER_PARAM_CTS_MODE 47 +#define PIDX_CIPHER_PARAM_CUSTOM_IV 48 +#define PIDX_CIPHER_PARAM_DECRYPT_ONLY 49 +#define PIDX_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK 50 +#define PIDX_CIPHER_PARAM_HAS_RAND_KEY 51 +#define PIDX_CIPHER_PARAM_IV 52 +#define PIDX_CIPHER_PARAM_IVLEN 53 +#define PIDX_CIPHER_PARAM_KEYLEN 54 +#define PIDX_CIPHER_PARAM_MODE 55 +#define PIDX_CIPHER_PARAM_NUM 56 +#define PIDX_CIPHER_PARAM_PADDING 57 +#define PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG 58 +#define PIDX_CIPHER_PARAM_RANDOM_KEY 59 +#define PIDX_CIPHER_PARAM_RC2_KEYBITS 60 +#define PIDX_CIPHER_PARAM_ROUNDS 61 +#define PIDX_CIPHER_PARAM_SPEED 62 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK 63 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD 64 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN 65 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC 66 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN 67 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN 68 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE 69 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE 70 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT 71 +#define PIDX_CIPHER_PARAM_TLS_MAC 72 +#define PIDX_CIPHER_PARAM_TLS_MAC_SIZE 73 +#define PIDX_CIPHER_PARAM_TLS_VERSION 74 +#define PIDX_CIPHER_PARAM_UPDATED_IV 75 +#define PIDX_CIPHER_PARAM_USE_BITS 76 +#define PIDX_CIPHER_PARAM_XTS_STANDARD 77 +#define PIDX_DECODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DIGEST_PARAM_ALGID_ABSENT 78 +#define PIDX_DIGEST_PARAM_BLOCK_SIZE 45 +#define PIDX_DIGEST_PARAM_MICALG 79 +#define PIDX_DIGEST_PARAM_PAD_TYPE 80 +#define PIDX_DIGEST_PARAM_SIZE 81 +#define PIDX_DIGEST_PARAM_SSL3_MS 82 +#define PIDX_DIGEST_PARAM_XOF 83 +#define PIDX_DIGEST_PARAM_XOFLEN 84 +#define PIDX_DRBG_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_DRBG_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_DRBG_PARAM_ENTROPY_REQUIRED 85 +#define PIDX_DRBG_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_DRBG_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_DRBG_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_DRBG_PARAM_MAX_ADINLEN 86 +#define PIDX_DRBG_PARAM_MAX_ENTROPYLEN 87 +#define PIDX_DRBG_PARAM_MAX_LENGTH 88 +#define PIDX_DRBG_PARAM_MAX_NONCELEN 89 +#define PIDX_DRBG_PARAM_MAX_PERSLEN 90 +#define PIDX_DRBG_PARAM_MIN_ENTROPYLEN 91 +#define PIDX_DRBG_PARAM_MIN_LENGTH 92 +#define PIDX_DRBG_PARAM_MIN_NONCELEN 93 +#define PIDX_DRBG_PARAM_PREDICTION_RESISTANCE 94 +#define PIDX_DRBG_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DRBG_PARAM_RANDOM_DATA 95 +#define PIDX_DRBG_PARAM_RESEED_COUNTER 96 +#define PIDX_DRBG_PARAM_RESEED_REQUESTS 97 +#define PIDX_DRBG_PARAM_RESEED_TIME 98 +#define PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL 99 +#define PIDX_DRBG_PARAM_SIZE 81 +#define PIDX_DRBG_PARAM_USE_DF 100 +#define PIDX_ENCODER_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_ENCODER_PARAM_ENCRYPT_LEVEL 101 +#define PIDX_ENCODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_ENCODER_PARAM_SAVE_PARAMETERS 102 +#define PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE 103 +#define PIDX_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_EXCHANGE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST 104 +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS 105 +#define PIDX_EXCHANGE_PARAM_KDF_OUTLEN 106 +#define PIDX_EXCHANGE_PARAM_KDF_TYPE 107 +#define PIDX_EXCHANGE_PARAM_KDF_UKM 108 +#define PIDX_EXCHANGE_PARAM_PAD 109 +#define PIDX_GEN_PARAM_ITERATION 110 +#define PIDX_GEN_PARAM_POTENTIAL 111 +#define PIDX_KDF_PARAM_ARGON2_AD 112 +#define PIDX_KDF_PARAM_ARGON2_LANES 113 +#define PIDX_KDF_PARAM_ARGON2_MEMCOST 114 +#define PIDX_KDF_PARAM_ARGON2_VERSION 115 +#define PIDX_KDF_PARAM_CEK_ALG 116 +#define PIDX_KDF_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_KDF_PARAM_CONSTANT 117 +#define PIDX_KDF_PARAM_DATA 118 +#define PIDX_KDF_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_KDF_PARAM_EARLY_CLEAN 119 +#define PIDX_KDF_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KDF_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_KDF_PARAM_FIPS_EMS_CHECK 120 +#define PIDX_KDF_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KDF_PARAM_HMACDRBG_ENTROPY 121 +#define PIDX_KDF_PARAM_HMACDRBG_NONCE 122 +#define PIDX_KDF_PARAM_INFO 123 +#define PIDX_KDF_PARAM_ITER 124 +#define PIDX_KDF_PARAM_KBKDF_R 125 +#define PIDX_KDF_PARAM_KBKDF_USE_L 126 +#define PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR 127 +#define PIDX_KDF_PARAM_KEY 128 +#define PIDX_KDF_PARAM_LABEL 129 +#define PIDX_KDF_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_KDF_PARAM_MAC_SIZE 130 +#define PIDX_KDF_PARAM_MODE 55 +#define PIDX_KDF_PARAM_PASSWORD 131 +#define PIDX_KDF_PARAM_PKCS12_ID 132 +#define PIDX_KDF_PARAM_PKCS5 133 +#define PIDX_KDF_PARAM_PREFIX 134 +#define PIDX_KDF_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_KDF_PARAM_SALT 135 +#define PIDX_KDF_PARAM_SCRYPT_MAXMEM 136 +#define PIDX_KDF_PARAM_SCRYPT_N 137 +#define PIDX_KDF_PARAM_SCRYPT_P 138 +#define PIDX_KDF_PARAM_SCRYPT_R 125 +#define PIDX_KDF_PARAM_SECRET 139 +#define PIDX_KDF_PARAM_SEED 140 +#define PIDX_KDF_PARAM_SIZE 81 +#define PIDX_KDF_PARAM_SSHKDF_SESSION_ID 141 +#define PIDX_KDF_PARAM_SSHKDF_TYPE 142 +#define PIDX_KDF_PARAM_SSHKDF_XCGHASH 143 +#define PIDX_KDF_PARAM_THREADS 144 +#define PIDX_KDF_PARAM_UKM 145 +#define PIDX_KDF_PARAM_X942_ACVPINFO 146 +#define PIDX_KDF_PARAM_X942_PARTYUINFO 147 +#define PIDX_KDF_PARAM_X942_PARTYVINFO 148 +#define PIDX_KDF_PARAM_X942_SUPP_PRIVINFO 149 +#define PIDX_KDF_PARAM_X942_SUPP_PUBINFO 150 +#define PIDX_KDF_PARAM_X942_USE_KEYBITS 151 +#define PIDX_KEM_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KEM_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KEM_PARAM_IKME 152 +#define PIDX_KEM_PARAM_OPERATION 153 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING 154 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING 155 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA 156 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN 157 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE 55 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS 158 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD 159 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC 160 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE 161 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM 162 +#define PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN 163 +#define PIDX_MAC_PARAM_BLOCK_SIZE 164 +#define PIDX_MAC_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_MAC_PARAM_CUSTOM 165 +#define PIDX_MAC_PARAM_C_ROUNDS 166 +#define PIDX_MAC_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_MAC_PARAM_DIGEST_NOINIT 167 +#define PIDX_MAC_PARAM_DIGEST_ONESHOT 168 +#define PIDX_MAC_PARAM_D_ROUNDS 169 +#define PIDX_MAC_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_MAC_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_MAC_PARAM_FIPS_NO_SHORT_MAC PIDX_PROV_PARAM_NO_SHORT_MAC +#define PIDX_MAC_PARAM_IV 52 +#define PIDX_MAC_PARAM_KEY 128 +#define PIDX_MAC_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_MAC_PARAM_SALT 135 +#define PIDX_MAC_PARAM_SIZE 81 +#define PIDX_MAC_PARAM_TLS_DATA_SIZE 170 +#define PIDX_MAC_PARAM_XOF 83 +#define PIDX_OBJECT_PARAM_DATA 118 +#define PIDX_OBJECT_PARAM_DATA_STRUCTURE 171 +#define PIDX_OBJECT_PARAM_DATA_TYPE 172 +#define PIDX_OBJECT_PARAM_DESC 173 +#define PIDX_OBJECT_PARAM_INPUT_TYPE 174 +#define PIDX_OBJECT_PARAM_REFERENCE 175 +#define PIDX_OBJECT_PARAM_TYPE 142 +#define PIDX_PASSPHRASE_PARAM_INFO 123 +#define PIDX_PKEY_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_PKEY_PARAM_BITS 176 +#define PIDX_PKEY_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_PKEY_PARAM_DEFAULT_DIGEST 177 +#define PIDX_PKEY_PARAM_DHKEM_IKM 178 +#define PIDX_PKEY_PARAM_DH_GENERATOR 179 +#define PIDX_PKEY_PARAM_DH_PRIV_LEN 180 +#define PIDX_PKEY_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_PKEY_PARAM_DIGEST_SIZE 181 +#define PIDX_PKEY_PARAM_DIST_ID 182 +#define PIDX_PKEY_PARAM_EC_A 183 +#define PIDX_PKEY_PARAM_EC_B 184 +#define PIDX_PKEY_PARAM_EC_CHAR2_M 185 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K1 186 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K2 187 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K3 188 +#define PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS 189 +#define PIDX_PKEY_PARAM_EC_CHAR2_TYPE 190 +#define PIDX_PKEY_PARAM_EC_COFACTOR 191 +#define PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS 192 +#define PIDX_PKEY_PARAM_EC_ENCODING 193 +#define PIDX_PKEY_PARAM_EC_FIELD_TYPE 194 +#define PIDX_PKEY_PARAM_EC_GENERATOR 195 +#define PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE 196 +#define PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC 197 +#define PIDX_PKEY_PARAM_EC_ORDER 198 +#define PIDX_PKEY_PARAM_EC_P 138 +#define PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT 199 +#define PIDX_PKEY_PARAM_EC_PUB_X 200 +#define PIDX_PKEY_PARAM_EC_PUB_Y 201 +#define PIDX_PKEY_PARAM_EC_SEED 140 +#define PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY 202 +#define PIDX_PKEY_PARAM_ENGINE PIDX_ALG_PARAM_ENGINE +#define PIDX_PKEY_PARAM_FFC_COFACTOR 203 +#define PIDX_PKEY_PARAM_FFC_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_FFC_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_FFC_G 204 +#define PIDX_PKEY_PARAM_FFC_GINDEX 205 +#define PIDX_PKEY_PARAM_FFC_H 206 +#define PIDX_PKEY_PARAM_FFC_P 138 +#define PIDX_PKEY_PARAM_FFC_PBITS 207 +#define PIDX_PKEY_PARAM_FFC_PCOUNTER 208 +#define PIDX_PKEY_PARAM_FFC_Q 209 +#define PIDX_PKEY_PARAM_FFC_QBITS 210 +#define PIDX_PKEY_PARAM_FFC_SEED 140 +#define PIDX_PKEY_PARAM_FFC_TYPE 142 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_G 211 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY 212 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_PQ 213 +#define PIDX_PKEY_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK 214 +#define PIDX_PKEY_PARAM_FIPS_KEY_CHECK 215 +#define PIDX_PKEY_PARAM_FIPS_SIGN_CHECK 216 +#define PIDX_PKEY_PARAM_GROUP_NAME 217 +#define PIDX_PKEY_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_PKEY_PARAM_MANDATORY_DIGEST 218 +#define PIDX_PKEY_PARAM_MASKGENFUNC 219 +#define PIDX_PKEY_PARAM_MAX_SIZE 220 +#define PIDX_PKEY_PARAM_MGF1_DIGEST 221 +#define PIDX_PKEY_PARAM_MGF1_PROPERTIES 222 +#define PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS 223 +#define PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS 224 +#define PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED 225 +#define PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED 226 +#define PIDX_PKEY_PARAM_ML_DSA_SEED 140 +#define PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE 227 +#define PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS 228 +#define PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS 229 +#define PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED 230 +#define PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED 231 +#define PIDX_PKEY_PARAM_ML_KEM_SEED 140 +#define PIDX_PKEY_PARAM_PAD_MODE 232 +#define PIDX_PKEY_PARAM_PRIV_KEY 233 +#define PIDX_PKEY_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_PUB_KEY 234 +#define PIDX_PKEY_PARAM_RSA_BITS PIDX_PKEY_PARAM_BITS +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT 235 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT1 236 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT2 237 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT3 238 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT4 239 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT5 240 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT6 241 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT7 242 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT8 243 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT9 244 +#define PIDX_PKEY_PARAM_RSA_D 245 +#define PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ 246 +#define PIDX_PKEY_PARAM_RSA_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_RSA_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_RSA_E 247 +#define PIDX_PKEY_PARAM_RSA_EXPONENT 248 +#define PIDX_PKEY_PARAM_RSA_EXPONENT1 249 +#define PIDX_PKEY_PARAM_RSA_EXPONENT10 250 +#define PIDX_PKEY_PARAM_RSA_EXPONENT2 251 +#define PIDX_PKEY_PARAM_RSA_EXPONENT3 252 +#define PIDX_PKEY_PARAM_RSA_EXPONENT4 253 +#define PIDX_PKEY_PARAM_RSA_EXPONENT5 254 +#define PIDX_PKEY_PARAM_RSA_EXPONENT6 255 +#define PIDX_PKEY_PARAM_RSA_EXPONENT7 256 +#define PIDX_PKEY_PARAM_RSA_EXPONENT8 257 +#define PIDX_PKEY_PARAM_RSA_EXPONENT9 258 +#define PIDX_PKEY_PARAM_RSA_FACTOR 259 +#define PIDX_PKEY_PARAM_RSA_FACTOR1 260 +#define PIDX_PKEY_PARAM_RSA_FACTOR10 261 +#define PIDX_PKEY_PARAM_RSA_FACTOR2 262 +#define PIDX_PKEY_PARAM_RSA_FACTOR3 263 +#define PIDX_PKEY_PARAM_RSA_FACTOR4 264 +#define PIDX_PKEY_PARAM_RSA_FACTOR5 265 +#define PIDX_PKEY_PARAM_RSA_FACTOR6 266 +#define PIDX_PKEY_PARAM_RSA_FACTOR7 267 +#define PIDX_PKEY_PARAM_RSA_FACTOR8 268 +#define PIDX_PKEY_PARAM_RSA_FACTOR9 269 +#define PIDX_PKEY_PARAM_RSA_MASKGENFUNC PIDX_PKEY_PARAM_MASKGENFUNC +#define PIDX_PKEY_PARAM_RSA_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_PKEY_PARAM_RSA_N 137 +#define PIDX_PKEY_PARAM_RSA_PRIMES 270 +#define PIDX_PKEY_PARAM_RSA_PSS_SALTLEN 271 +#define PIDX_PKEY_PARAM_RSA_TEST_P1 272 +#define PIDX_PKEY_PARAM_RSA_TEST_P2 273 +#define PIDX_PKEY_PARAM_RSA_TEST_Q1 274 +#define PIDX_PKEY_PARAM_RSA_TEST_Q2 275 +#define PIDX_PKEY_PARAM_RSA_TEST_XP 276 +#define PIDX_PKEY_PARAM_RSA_TEST_XP1 277 +#define PIDX_PKEY_PARAM_RSA_TEST_XP2 278 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ 279 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ1 280 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ2 281 +#define PIDX_PKEY_PARAM_SECURITY_BITS 282 +#define PIDX_PKEY_PARAM_SLH_DSA_SEED 140 +#define PIDX_PKEY_PARAM_USE_COFACTOR_ECDH PIDX_PKEY_PARAM_USE_COFACTOR_FLAG +#define PIDX_PKEY_PARAM_USE_COFACTOR_FLAG 283 +#define PIDX_PROV_PARAM_BUILDINFO 284 +#define PIDX_PROV_PARAM_CORE_MODULE_FILENAME 285 +#define PIDX_PROV_PARAM_CORE_PROV_NAME 286 +#define PIDX_PROV_PARAM_CORE_VERSION 287 +#define PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST 288 +#define PIDX_PROV_PARAM_DSA_SIGN_DISABLED 289 +#define PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK 290 +#define PIDX_PROV_PARAM_HKDF_DIGEST_CHECK 291 +#define PIDX_PROV_PARAM_HKDF_KEY_CHECK 292 +#define PIDX_PROV_PARAM_HMAC_KEY_CHECK 293 +#define PIDX_PROV_PARAM_KBKDF_KEY_CHECK 294 +#define PIDX_PROV_PARAM_KMAC_KEY_CHECK 295 +#define PIDX_PROV_PARAM_NAME 296 +#define PIDX_PROV_PARAM_NO_SHORT_MAC 297 +#define PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK 298 +#define PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED 299 +#define PIDX_PROV_PARAM_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED 301 +#define PIDX_PROV_PARAM_SECURITY_CHECKS 302 +#define PIDX_PROV_PARAM_SELF_TEST_DESC 303 +#define PIDX_PROV_PARAM_SELF_TEST_PHASE 304 +#define PIDX_PROV_PARAM_SELF_TEST_TYPE 305 +#define PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK 306 +#define PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK 307 +#define PIDX_PROV_PARAM_SSHKDF_KEY_CHECK 308 +#define PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK 309 +#define PIDX_PROV_PARAM_SSKDF_KEY_CHECK 310 +#define PIDX_PROV_PARAM_STATUS 311 +#define PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED 312 +#define PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK 313 +#define PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK 314 +#define PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK 315 +#define PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK 316 +#define PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK 317 +#define PIDX_PROV_PARAM_VERSION 115 +#define PIDX_PROV_PARAM_X942KDF_KEY_CHECK 318 +#define PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK 319 +#define PIDX_PROV_PARAM_X963KDF_KEY_CHECK 320 +#define PIDX_RAND_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_RAND_PARAM_GENERATE 321 +#define PIDX_RAND_PARAM_MAX_REQUEST 322 +#define PIDX_RAND_PARAM_STATE 323 +#define PIDX_RAND_PARAM_STRENGTH 324 +#define PIDX_RAND_PARAM_TEST_ENTROPY 325 +#define PIDX_RAND_PARAM_TEST_NONCE 326 +#define PIDX_SIGNATURE_PARAM_ADD_RANDOM 327 +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID PIDX_PKEY_PARAM_ALGORITHM_ID +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_SIGNATURE_PARAM_CONTEXT_STRING 328 +#define PIDX_SIGNATURE_PARAM_DETERMINISTIC 329 +#define PIDX_SIGNATURE_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_SIGNATURE_PARAM_DIGEST_SIZE PIDX_PKEY_PARAM_DIGEST_SIZE +#define PIDX_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_SIGNATURE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_CHECK PIDX_PKEY_PARAM_FIPS_SIGN_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK 330 +#define PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE 331 +#define PIDX_SIGNATURE_PARAM_INSTANCE 332 +#define PIDX_SIGNATURE_PARAM_KAT 333 +#define PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING 334 +#define PIDX_SIGNATURE_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_SIGNATURE_PARAM_MGF1_PROPERTIES PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_SIGNATURE_PARAM_MU 335 +#define PIDX_SIGNATURE_PARAM_NONCE_TYPE 336 +#define PIDX_SIGNATURE_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_SIGNATURE_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_SIGNATURE_PARAM_PSS_SALTLEN 271 +#define PIDX_SIGNATURE_PARAM_SIGNATURE 337 +#define PIDX_SIGNATURE_PARAM_TEST_ENTROPY 338 +#define PIDX_SKEY_PARAM_KEY_LENGTH 339 +#define PIDX_SKEY_PARAM_RAW_BYTES 340 +#define PIDX_STORE_PARAM_ALIAS 341 +#define PIDX_STORE_PARAM_DIGEST 3 +#define PIDX_STORE_PARAM_EXPECT 342 +#define PIDX_STORE_PARAM_FINGERPRINT 343 +#define PIDX_STORE_PARAM_INPUT_TYPE 174 +#define PIDX_STORE_PARAM_ISSUER 296 +#define PIDX_STORE_PARAM_PROPERTIES 7 +#define PIDX_STORE_PARAM_SERIAL 344 +#define PIDX_STORE_PARAM_SUBJECT 345 diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/asn1.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/asn1.h index e28efbbb718e2b..5129217b2e0977 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/asn1.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/asn1.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/asn1.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -21,6 +21,9 @@ # define HEADER_ASN1_H # endif +# ifndef OPENSSL_NO_STDIO +# include +# endif # include # include # include @@ -50,14 +53,14 @@ extern "C" { # define V_ASN1_PRIMITIVE_TAG 0x1f # define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG -# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ -# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ -# define V_ASN1_ANY -4/* used in ASN1 template code */ +# define V_ASN1_APP_CHOOSE -2 /* let the recipient choose */ +# define V_ASN1_OTHER -3 /* used in ASN1_TYPE */ +# define V_ASN1_ANY -4 /* used in ASN1 template code */ # define V_ASN1_UNDEF -1 /* ASN.1 tag values */ # define V_ASN1_EOC 0 -# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_BOOLEAN 1 # define V_ASN1_INTEGER 2 # define V_ASN1_BIT_STRING 3 # define V_ASN1_OCTET_STRING 4 @@ -70,19 +73,19 @@ extern "C" { # define V_ASN1_UTF8STRING 12 # define V_ASN1_SEQUENCE 16 # define V_ASN1_SET 17 -# define V_ASN1_NUMERICSTRING 18 /**/ +# define V_ASN1_NUMERICSTRING 18 # define V_ASN1_PRINTABLESTRING 19 # define V_ASN1_T61STRING 20 -# define V_ASN1_TELETEXSTRING 20/* alias */ -# define V_ASN1_VIDEOTEXSTRING 21 /**/ +# define V_ASN1_TELETEXSTRING 20 /* alias */ +# define V_ASN1_VIDEOTEXSTRING 21 # define V_ASN1_IA5STRING 22 # define V_ASN1_UTCTIME 23 -# define V_ASN1_GENERALIZEDTIME 24 /**/ -# define V_ASN1_GRAPHICSTRING 25 /**/ -# define V_ASN1_ISO64STRING 26 /**/ -# define V_ASN1_VISIBLESTRING 26/* alias */ -# define V_ASN1_GENERALSTRING 27 /**/ -# define V_ASN1_UNIVERSALSTRING 28 /**/ +# define V_ASN1_GENERALIZEDTIME 24 +# define V_ASN1_GRAPHICSTRING 25 +# define V_ASN1_ISO64STRING 26 +# define V_ASN1_VISIBLESTRING 26 /* alias */ +# define V_ASN1_GENERALSTRING 27 +# define V_ASN1_UNIVERSALSTRING 28 # define V_ASN1_BMPSTRING 30 /* @@ -155,7 +158,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) -# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +# define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */ /* * This indicates that the ASN1_STRING is not a real value but just a place * holder for the location where indefinite length constructed data should be @@ -275,7 +278,7 @@ typedef struct ASN1_TLC_st ASN1_TLC; /* This is just an opaque pointer */ typedef struct ASN1_VALUE_st ASN1_VALUE; -/* Declare ASN1 functions: the implement macro in in asn1t.h */ +/* Declare ASN1 functions: the implement macro is in asn1t.h */ /* * The mysterious 'extern' that's passed to some macros is innocuous, @@ -368,6 +371,7 @@ typedef struct ASN1_VALUE_st ASN1_VALUE; typedef void *d2i_of_void(void **, const unsigned char **, long); typedef int i2d_of_void(const void *, unsigned char **); +typedef int OSSL_i2d_of_void_ctx(const void *, unsigned char **, void *vctx); /*- * The following macros and typedefs allow an ASN1_ITEM @@ -996,6 +1000,8 @@ int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, unsigned char *data, int max_len); void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/bio.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/bio.h index d094af47b73f1c..be24d086a54013 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/bio.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/bio.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/bio.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -67,8 +67,13 @@ extern "C" { # define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) # endif # define BIO_TYPE_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_PAIR (26|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_MEM (27|BIO_TYPE_SOURCE_SINK) +/* Custom type starting index returned by BIO_get_new_index() */ #define BIO_TYPE_START 128 +/* Custom type maximum index that can be returned by BIO_get_new_index() */ +#define BIO_TYPE_MASK 0xFF /* * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. @@ -171,6 +176,31 @@ extern "C" { # define BIO_CTRL_SET_INDENT 80 # define BIO_CTRL_GET_INDENT 81 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +# define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +# define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +# define BIO_CTRL_DGRAM_GET_CAPS 86 +# define BIO_CTRL_DGRAM_SET_CAPS 87 +# define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +# define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +# define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +# define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +# define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 +# define BIO_CTRL_DGRAM_SET0_LOCAL_ADDR 94 + +# define BIO_DGRAM_CAP_NONE 0U +# define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +# define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +# define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +# define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + # ifndef OPENSSL_NO_KTLS # define BIO_get_ktls_send(b) \ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) @@ -208,7 +238,7 @@ extern "C" { # define BIO_FLAGS_NONCLEAR_RST 0x400 # define BIO_FLAGS_IN_EOF 0x800 -/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */ +/* the BIO FLAGS values 0x1000 to 0x8000 are reserved for internal KTLS flags */ typedef union bio_addr_st BIO_ADDR; typedef struct bio_addrinfo_st BIO_ADDRINFO; @@ -256,12 +286,14 @@ void BIO_clear_flags(BIO *b, int flags); # define BIO_RR_ACCEPT 0x03 /* These are passed by the BIO callback */ -# define BIO_CB_FREE 0x01 -# define BIO_CB_READ 0x02 -# define BIO_CB_WRITE 0x03 -# define BIO_CB_PUTS 0x04 -# define BIO_CB_GETS 0x05 -# define BIO_CB_CTRL 0x06 +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 +# define BIO_CB_RECVMMSG 0x07 +# define BIO_CB_SENDMMSG 0x08 /* * The callback is called before and after the underling operation, The @@ -362,6 +394,36 @@ struct bio_dgram_sctp_prinfo { }; # endif +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_TYPE_SSL 2 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + SSL *ssl; + } value; +} BIO_POLL_DESCRIPTOR; + /* * #define BIO_CONN_get_param_hostname BIO_ctrl */ @@ -428,10 +490,17 @@ struct bio_dgram_sctp_prinfo { # define BIO_C_SET_CONNECT_MODE 155 +# define BIO_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +# define BIO_C_SET_SOCK_TYPE 157 +# define BIO_C_GET_SOCK_TYPE 158 +# define BIO_C_GET_DGRAM_BIO 159 + # define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) # define BIO_get_app_data(s) BIO_get_ex_data(s,0) -# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_tfo(b,n) BIO_ctrl(b,BIO_C_SET_TFO,(n),NULL) # ifndef OPENSSL_NO_SOCK /* IP families we support, for BIO_s_connect() and BIO_s_accept() */ @@ -452,7 +521,11 @@ struct bio_dgram_sctp_prinfo { # define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) # define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) # define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_get_conn_mode(b) BIO_ctrl(b,BIO_C_GET_CONNECT,4,NULL) # define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) +# define BIO_set_sock_type(b,t) BIO_ctrl(b,BIO_C_SET_SOCK_TYPE,(t),NULL) +# define BIO_get_sock_type(b) BIO_ctrl(b,BIO_C_GET_SOCK_TYPE,0,NULL) +# define BIO_get0_dgram_bio(b, p) BIO_ctrl(b,BIO_C_GET_DGRAM_BIO,0,(void *)(BIO **)(p)) /* BIO_s_accept() */ # define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ @@ -469,6 +542,7 @@ struct bio_dgram_sctp_prinfo { (char *)(bio)) # define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) # define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) +# define BIO_set_tfo_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,5,(n)?(void *)"a":NULL) /* Aliases kept for backward compatibility */ # define BIO_BIND_NORMAL 0 @@ -596,8 +670,32 @@ int BIO_ctrl_reset_read_request(BIO *b); (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) # define BIO_dgram_set_peer(b,peer) \ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_detect_peer_addr(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) # define BIO_dgram_get_mtu_overhead(b) \ (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +# define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +# define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +# define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +# define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +# define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +# define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +# define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +# define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +# define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +# define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) +# define BIO_dgram_set0_local_addr(b, addr) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET0_LOCAL_ADDR, 0, (addr)) /* ctrl macros for BIO_f_prefix */ # define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) @@ -640,10 +738,18 @@ void BIO_vfree(BIO *a); int BIO_up_ref(BIO *a); int BIO_read(BIO *b, void *data, int dlen); int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); int BIO_gets(BIO *bp, char *buf, int size); int BIO_get_line(BIO *bio, char *buf, int size); int BIO_write(BIO *b, const void *data, int dlen); int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); int BIO_puts(BIO *bp, const char *buf); int BIO_indent(BIO *b, int indent, int max); long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); @@ -667,6 +773,9 @@ int BIO_nwrite0(BIO *bio, char **buf); int BIO_nwrite(BIO *bio, char **buf, int num); const BIO_METHOD *BIO_s_mem(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +# endif const BIO_METHOD *BIO_s_secmem(void); BIO *BIO_new_mem_buf(const void *buf, int len); # ifndef OPENSSL_NO_SOCK @@ -686,6 +795,7 @@ const BIO_METHOD *BIO_f_nbio_test(void); const BIO_METHOD *BIO_f_prefix(void); const BIO_METHOD *BIO_s_core(void); # ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_pair(void); const BIO_METHOD *BIO_s_datagram(void); int BIO_dgram_non_fatal_error(int error); BIO *BIO_new_dgram(int fd, int close_flag); @@ -704,6 +814,7 @@ int BIO_dgram_sctp_msg_waiting(BIO *b); # ifndef OPENSSL_NO_SOCK int BIO_sock_should_retry(int i); int BIO_sock_non_fatal_error(int error); +int BIO_err_is_non_fatal(unsigned int errcode); int BIO_socket_wait(int fd, int for_read, time_t max_time); # endif int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); @@ -726,6 +837,8 @@ int BIO_hex_string(BIO *out, int indent, int width, const void *data, # ifndef OPENSSL_NO_SOCK BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, const void *where, size_t wherelen, unsigned short port); void BIO_ADDR_free(BIO_ADDR *); @@ -788,6 +901,7 @@ int BIO_sock_info(int sock, # define BIO_SOCK_KEEPALIVE 0x04 # define BIO_SOCK_NONBLOCK 0x08 # define BIO_SOCK_NODELAY 0x10 +# define BIO_SOCK_TFO 0x20 int BIO_socket(int domain, int socktype, int protocol, int options); int BIO_connect(int sock, const BIO_ADDR *addr, int options); @@ -805,6 +919,11 @@ BIO *BIO_new_fd(int fd, int close_flag); int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, BIO **bio2, size_t writebuf2); +# ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +# endif + /* * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default @@ -849,38 +968,54 @@ ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); BIO_METHOD *BIO_meth_new(int type, const char *name); void BIO_meth_free(BIO_METHOD *biom); -int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int); -int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t, - size_t *); int BIO_meth_set_write(BIO_METHOD *biom, int (*write) (BIO *, const char *, int)); int BIO_meth_set_write_ex(BIO_METHOD *biom, int (*bwrite) (BIO *, const char *, size_t, size_t *)); -int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); -int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); +int BIO_meth_set_sendmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_read(BIO_METHOD *biom, int (*read) (BIO *, char *, int)); int BIO_meth_set_read_ex(BIO_METHOD *biom, int (*bread) (BIO *, char *, size_t, size_t *)); -int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +int BIO_meth_set_recvmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_puts(BIO_METHOD *biom, int (*puts) (BIO *, const char *)); -int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); int BIO_meth_set_gets(BIO_METHOD *biom, int (*ossl_gets) (BIO *, char *, int)); -long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); int BIO_meth_set_ctrl(BIO_METHOD *biom, long (*ctrl) (BIO *, int, long, void *)); -int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); -int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); -long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) - (BIO *, int, BIO_info_cb *); int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, long (*callback_ctrl) (BIO *, int, BIO_info_cb *)); - +# ifndef OPENSSL_NO_DEPRECATED_3_5 +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, + int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, + long, void *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) (BIO *, int, + BIO_info_cb *); +# endif # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/cmp.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/cmp.h index f0e768e01baacd..ded2dd2905f756 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/cmp.h.in * - * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -35,7 +35,9 @@ extern "C" { # endif -# define OSSL_CMP_PVNO 2 +# define OSSL_CMP_PVNO_2 2 +# define OSSL_CMP_PVNO_3 3 +# define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ /*- * PKIFailureInfo ::= BIT STRING { @@ -137,7 +139,6 @@ extern "C" { # if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX # error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int # endif - typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) @@ -203,8 +204,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_PKISTATUS_revocationWarning 4 # define OSSL_CMP_PKISTATUS_revocationNotification 5 # define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 - typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; + DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) # define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 @@ -274,6 +275,46 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) #define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) #define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) + +typedef struct ossl_cmp_crlstatus_st OSSL_CMP_CRLSTATUS; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS) +#define sk_OSSL_CMP_CRLSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_value(sk, idx) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CRLSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CRLSTATUS_new_null() ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CRLSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CRLSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CRLSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_delete(sk, i) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CRLSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_pop(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_shift(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CRLSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CRLSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CRLSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CRLSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CRLSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) + + +typedef OSSL_CRMF_ATTRIBUTETYPEANDVALUE OSSL_CMP_ATAV; +# define OSSL_CMP_ATAV_free OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free +typedef STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) OSSL_CMP_ATAVS; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_ATAVS) +# define stack_st_OSSL_CMP_ATAV stack_st_OSSL_CRMF_ATTRIBUTETYPEANDVALUE +# define sk_OSSL_CMP_ATAV_num sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num +# define sk_OSSL_CMP_ATAV_value sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value +# define sk_OSSL_CMP_ATAV_push sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push +# define sk_OSSL_CMP_ATAV_pop_free sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free + typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT; typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI; DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI) @@ -375,21 +416,75 @@ void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type, ASN1_TYPE *value); ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav); ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); -int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p, +int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **sk_p, OSSL_CMP_ITAV *itav); void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new0_certProfile(STACK_OF(ASN1_UTF8STRING) + *certProfile); +int OSSL_CMP_ITAV_get0_certProfile(const OSSL_CMP_ITAV *itav, + STACK_OF(ASN1_UTF8STRING) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_create(const X509_CRL *crl, + const X509 *cert, int only_DN); +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_new1(const DIST_POINT_NAME *dpn, + const GENERAL_NAMES *issuer, + const ASN1_TIME *thisUpdate); +int OSSL_CMP_CRLSTATUS_get0(const OSSL_CMP_CRLSTATUS *crlstatus, + DIST_POINT_NAME **dpn, GENERAL_NAMES **issuer, + ASN1_TIME **thisUpdate); +void OSSL_CMP_CRLSTATUS_free(OSSL_CMP_CRLSTATUS *crlstatus); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_crlStatusList(STACK_OF(OSSL_CMP_CRLSTATUS) *crlStatusList); +int OSSL_CMP_ITAV_get0_crlStatusList(const OSSL_CMP_ITAV *itav, + STACK_OF(OSSL_CMP_CRLSTATUS) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_crls(const X509_CRL *crls); +int OSSL_CMP_ITAV_get0_crls(const OSSL_CMP_ITAV *it, STACK_OF(X509_CRL) **out); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_certReqTemplate(OSSL_CRMF_CERTTEMPLATE *certTemplate, + OSSL_CMP_ATAVS *keySpec); +int OSSL_CMP_ITAV_get1_certReqTemplate(const OSSL_CMP_ITAV *itav, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +OSSL_CMP_ATAV *OSSL_CMP_ATAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ATAV_set0(OSSL_CMP_ATAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ATAV_get0_type(const OSSL_CMP_ATAV *itav); +ASN1_TYPE *OSSL_CMP_ATAV_get0_value(const OSSL_CMP_ATAV *itav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_algId(const X509_ALGOR *alg); +X509_ALGOR *OSSL_CMP_ATAV_get0_algId(const OSSL_CMP_ATAV *atav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_rsaKeyLen(int len); +int OSSL_CMP_ATAV_get_rsaKeyLen(const OSSL_CMP_ATAV *atav); +int OSSL_CMP_ATAV_push1(OSSL_CMP_ATAVS **sk_p, const OSSL_CMP_ATAV *atav); + void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); /* from cmp_ctx.c */ OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const OSSL_CMP_CTX *ctx); /* CMP general options: */ # define OSSL_CMP_OPT_LOG_VERBOSITY 0 /* CMP transfer options: */ -# define OSSL_CMP_OPT_KEEP_ALIVE 10 -# define OSSL_CMP_OPT_MSG_TIMEOUT 11 +# define OSSL_CMP_OPT_KEEP_ALIVE 10 +# define OSSL_CMP_OPT_MSG_TIMEOUT 11 # define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 +# define OSSL_CMP_OPT_USE_TLS 13 /* CMP request options: */ # define OSSL_CMP_OPT_VALIDITY_DAYS 20 # define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 @@ -407,6 +502,7 @@ int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); # define OSSL_CMP_OPT_DIGEST_ALGNID 34 # define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35 # define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36 +# define OSSL_CMP_OPT_NO_CACHE_EXTRACERTS 37 int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val); int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt); /* CMP-specific callback for logging and outputting the error queue: */ @@ -420,9 +516,11 @@ int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); +# ifndef OPENSSL_NO_HTTP int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); +# endif typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); @@ -432,7 +530,9 @@ void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); +# define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +# define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); /* client authentication: */ @@ -448,12 +548,15 @@ int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx, int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); int OSSL_CMP_CTX_reset_geninfo_ITAVs(OSSL_CMP_CTX *ctx); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_CTX_get0_geninfo_ITAVs(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, STACK_OF(X509) *extraCertsOut); /* certificate template: */ int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set1_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, const GENERAL_NAME *name); @@ -477,6 +580,7 @@ int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); # define OSSL_CMP_PKISI_BUFLEN 1024 +X509 *OSSL_CMP_CTX_get0_validatedSrvCert(const OSSL_CMP_CTX *ctx); X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); @@ -498,10 +602,13 @@ OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const OSSL_CMP_PKIHEADER *hdr); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_HDR_get0_geninfo_ITAVs(const OSSL_CMP_PKIHEADER *hdr); /* from cmp_msg.c */ OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg); +X509_PUBKEY *OSSL_CMP_MSG_get0_certreq_publickey(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_recipNonce(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid); @@ -517,8 +624,10 @@ int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, X509_STORE *trusted_store, X509 *cert); /* from cmp_http.c */ +# ifndef OPENSSL_NO_HTTP OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); +# endif /* from cmp_server.c */ typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; @@ -561,6 +670,13 @@ int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx, OSSL_CMP_SRV_error_cb_t process_error, OSSL_CMP_SRV_certConf_cb_t process_certConf, OSSL_CMP_SRV_pollReq_cb_t process_pollReq); +typedef int (*OSSL_CMP_SRV_delayed_delivery_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +typedef int (*OSSL_CMP_SRV_clean_transaction_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_SRV_CTX_init_trans(OSSL_CMP_SRV_CTX *srv_ctx, + OSSL_CMP_SRV_delayed_delivery_cb_t delay, + OSSL_CMP_SRV_clean_transaction_cb_t clean); OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx, @@ -577,6 +693,8 @@ X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type, # define OSSL_CMP_CR 2 # define OSSL_CMP_P10CR 4 # define OSSL_CMP_KUR 7 +# define OSSL_CMP_GENM 21 +# define OSSL_CMP_ERROR 23 # define OSSL_CMP_exec_IR_ses(ctx) \ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL) # define OSSL_CMP_exec_CR_ses(ctx) \ @@ -590,6 +708,18 @@ int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); +int OSSL_CMP_get1_crlUpdate(OSSL_CMP_CTX *ctx, const X509 *crlcert, + const X509_CRL *last_crl, + X509_CRL **crl); +int OSSL_CMP_get1_certReqTemplate(OSSL_CMP_CTX *ctx, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/cms.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/cms.h index 03ce6ab07aac44..1a51921256fea4 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/cms.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/cms.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/cms.h.in * - * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2008-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -31,8 +31,10 @@ extern "C" { # endif +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; typedef struct CMS_ContentInfo_st CMS_ContentInfo; typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; typedef struct CMS_CertificateChoices CMS_CertificateChoices; typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; @@ -147,10 +149,14 @@ SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, #define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) +DECLARE_ASN1_DUP_FUNCTION(CMS_EnvelopedData) + CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq); # define CMS_SIGNERINFO_ISSUER_SERIAL 0 @@ -190,6 +196,7 @@ CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq) # define CMS_ASCIICRLF 0x80000 # define CMS_CADES 0x100000 # define CMS_USE_ORIGINATOR_KEYID 0x200000 +# define CMS_NO_SIGNING_TIME 0x400000 const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms); @@ -217,13 +224,16 @@ int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, unsigned int flags); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, BIO *dcont, + unsigned int flags); CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, unsigned int flags); CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, @@ -233,27 +243,26 @@ CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, unsigned int flags); CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, const unsigned char *key, size_t keylen, BIO *dcont, BIO *out, unsigned int flags); - CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags); CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, @@ -272,7 +281,7 @@ CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags); CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, BIO *dcont, BIO *out, unsigned int flags); @@ -291,12 +300,16 @@ int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo * -CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx, +CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags); @@ -385,6 +398,11 @@ ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); int CMS_SignerInfo_sign(CMS_SignerInfo *si); int CMS_SignerInfo_verify(CMS_SignerInfo *si); int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, @@ -441,7 +459,7 @@ CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( unsigned char *id, int idlen, int allorfirst, STACK_OF(GENERAL_NAMES) *receiptList, STACK_OF(GENERAL_NAMES) *receiptsTo, - OSSL_LIB_CTX *ctx); + OSSL_LIB_CTX *libctx); int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/comp.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/comp.h new file mode 100644 index 00000000000000..90e39511fe8d28 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/comp.h @@ -0,0 +1,98 @@ +/* + * Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_COMP_H +# define OPENSSL_COMP_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_COMP_H +# endif + +# include + +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + + +# ifndef OPENSSL_NO_COMP + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX* comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); + +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); + +COMP_METHOD *COMP_zlib(void); +COMP_METHOD *COMP_zlib_oneshot(void); +COMP_METHOD *COMP_brotli(void); +COMP_METHOD *COMP_brotli_oneshot(void); +COMP_METHOD *COMP_zstd(void); +COMP_METHOD *COMP_zstd_oneshot(void); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define COMP_zlib_cleanup() while(0) continue +# endif + +# ifdef OPENSSL_BIO_H +const BIO_METHOD *BIO_f_zlib(void); +const BIO_METHOD *BIO_f_brotli(void); +const BIO_METHOD *BIO_f_zstd(void); +# endif + +# endif + +typedef struct ssl_comp_st SSL_COMP; + +SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) +#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) +#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) +#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) +#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) +#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) +#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) +#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) +#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) +#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) +#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) +#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) + + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/conf.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/conf.h index 994e573a957435..ffa9ced71e8b26 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/conf.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/conf.h @@ -27,6 +27,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -65,7 +68,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) #define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) #define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); -#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp))) +#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp)), lh_CONF_VALUE_hash_thunk, lh_CONF_VALUE_comp_thunk, lh_CONF_VALUE_doall_thunk, lh_CONF_VALUE_doall_arg_thunk)) #define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/configuration.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/configuration.h index 254054cd2238c7..8dedfeab00f64a 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/configuration.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/configuration.h @@ -29,7 +29,7 @@ extern "C" { # ifndef OPENSSL_SYS_WIN32 # define OPENSSL_SYS_WIN32 1 # endif -# define OPENSSL_CONFIGURED_API 30000 +# define OPENSSL_CONFIGURED_API 30500 # ifndef OPENSSL_RAND_SEED_OS # define OPENSSL_RAND_SEED_OS # endif @@ -42,6 +42,12 @@ extern "C" { # ifndef OPENSSL_NO_ASAN # define OPENSSL_NO_ASAN # endif +# ifndef OPENSSL_NO_BROTLI +# define OPENSSL_NO_BROTLI +# endif +# ifndef OPENSSL_NO_BROTLI_DYNAMIC +# define OPENSSL_NO_BROTLI_DYNAMIC +# endif # ifndef OPENSSL_NO_COMP # define OPENSSL_NO_COMP # endif @@ -51,6 +57,9 @@ extern "C" { # ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # endif +# ifndef OPENSSL_NO_DEMOS +# define OPENSSL_NO_DEMOS +# endif # ifndef OPENSSL_NO_DEVCRYPTOENG # define OPENSSL_NO_DEVCRYPTOENG # endif @@ -63,12 +72,24 @@ extern "C" { # ifndef OPENSSL_NO_EXTERNAL_TESTS # define OPENSSL_NO_EXTERNAL_TESTS # endif +# ifndef OPENSSL_NO_FIPS_JITTER +# define OPENSSL_NO_FIPS_JITTER +# endif # ifndef OPENSSL_NO_FUZZ_AFL # define OPENSSL_NO_FUZZ_AFL # endif # ifndef OPENSSL_NO_FUZZ_LIBFUZZER # define OPENSSL_NO_FUZZ_LIBFUZZER # endif +# ifndef OPENSSL_NO_H3DEMO +# define OPENSSL_NO_H3DEMO +# endif +# ifndef OPENSSL_NO_HQINTEROP +# define OPENSSL_NO_HQINTEROP +# endif +# ifndef OPENSSL_NO_JITTER +# define OPENSSL_NO_JITTER +# endif # ifndef OPENSSL_NO_KTLS # define OPENSSL_NO_KTLS # endif @@ -81,6 +102,9 @@ extern "C" { # ifndef OPENSSL_NO_MSAN # define OPENSSL_NO_MSAN # endif +# ifndef OPENSSL_NO_PIE +# define OPENSSL_NO_PIE +# endif # ifndef OPENSSL_NO_RC5 # define OPENSSL_NO_RC5 # endif @@ -93,6 +117,12 @@ extern "C" { # ifndef OPENSSL_NO_SSL3_METHOD # define OPENSSL_NO_SSL3_METHOD # endif +# ifndef OPENSSL_NO_SSLKEYLOG +# define OPENSSL_NO_SSLKEYLOG +# endif +# ifndef OPENSSL_NO_TFO +# define OPENSSL_NO_TFO +# endif # ifndef OPENSSL_NO_TRACE # define OPENSSL_NO_TRACE # endif @@ -108,6 +138,18 @@ extern "C" { # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS # define OPENSSL_NO_WEAK_SSL_CIPHERS # endif +# ifndef OPENSSL_NO_ZLIB +# define OPENSSL_NO_ZLIB +# endif +# ifndef OPENSSL_NO_ZLIB_DYNAMIC +# define OPENSSL_NO_ZLIB_DYNAMIC +# endif +# ifndef OPENSSL_NO_ZSTD +# define OPENSSL_NO_ZSTD +# endif +# ifndef OPENSSL_NO_ZSTD_DYNAMIC +# define OPENSSL_NO_ZSTD_DYNAMIC +# endif # ifndef OPENSSL_NO_DYNAMIC_ENGINE # define OPENSSL_NO_DYNAMIC_ENGINE # endif @@ -129,6 +171,12 @@ extern "C" { # define RC4_INT unsigned int +# if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +# define OPENSSL_NO_COMP_ALG +# else +# undef OPENSSL_NO_COMP_ALG +# endif + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/core_names.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/core_names.h new file mode 100644 index 00000000000000..aaca6051c81b53 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/core_names.h @@ -0,0 +1,575 @@ +/* + * WARNING: do not edit! + * Generated by makefile from include/openssl/core_names.h.in + * + * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#ifndef OPENSSL_CORE_NAMES_H +# define OPENSSL_CORE_NAMES_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +/* OSSL_CIPHER_PARAM_CTS_MODE Values */ +# define OSSL_CIPHER_CTS_MODE_CS1 "CS1" +# define OSSL_CIPHER_CTS_MODE_CS2 "CS2" +# define OSSL_CIPHER_CTS_MODE_CS3 "CS3" + +/* Known CIPHER names (not a complete list) */ +# define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" + +/* Known DIGEST names (not a complete list) */ +# define OSSL_DIGEST_NAME_MD5 "MD5" +# define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" +# define OSSL_DIGEST_NAME_SHA1 "SHA1" +# define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" +# define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" +# define OSSL_DIGEST_NAME_SHA2_256_192 "SHA2-256/192" +# define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" +# define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" +# define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" +# define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" +# define OSSL_DIGEST_NAME_MD2 "MD2" +# define OSSL_DIGEST_NAME_MD4 "MD4" +# define OSSL_DIGEST_NAME_MDC2 "MDC2" +# define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" +# define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" +# define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" +# define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" +# define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" +# define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" +# define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" +# define OSSL_DIGEST_NAME_SM3 "SM3" + +/* Known MAC names */ +# define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" +# define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" +# define OSSL_MAC_NAME_CMAC "CMAC" +# define OSSL_MAC_NAME_GMAC "GMAC" +# define OSSL_MAC_NAME_HMAC "HMAC" +# define OSSL_MAC_NAME_KMAC128 "KMAC128" +# define OSSL_MAC_NAME_KMAC256 "KMAC256" +# define OSSL_MAC_NAME_POLY1305 "POLY1305" +# define OSSL_MAC_NAME_SIPHASH "SIPHASH" + +/* Known KDF names */ +# define OSSL_KDF_NAME_HKDF "HKDF" +# define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" +# define OSSL_KDF_NAME_PBKDF1 "PBKDF1" +# define OSSL_KDF_NAME_PBKDF2 "PBKDF2" +# define OSSL_KDF_NAME_SCRYPT "SCRYPT" +# define OSSL_KDF_NAME_SSHKDF "SSHKDF" +# define OSSL_KDF_NAME_SSKDF "SSKDF" +# define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" +# define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" +# define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" +# define OSSL_KDF_NAME_X963KDF "X963KDF" +# define OSSL_KDF_NAME_KBKDF "KBKDF" +# define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" +# define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" + +/* RSA padding modes */ +# define OSSL_PKEY_RSA_PAD_MODE_NONE "none" +# define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" +# define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" +# define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" +# define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" + +/* RSA pss padding salt length */ +# define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" + +/* OSSL_PKEY_PARAM_EC_ENCODING values */ +# define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" +# define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" + +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" + +# define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" + +/* PROV_SKEY well known key types */ +# define OSSL_SKEY_TYPE_GENERIC "GENERIC-SECRET" +# define OSSL_SKEY_TYPE_AES "AES" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" + +/* Provider configuration variables */ +#define OSSL_PKEY_RETAIN_SEED "pkey_retain_seed" + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +# define OSSL_ALG_PARAM_ALGORITHM_ID "algorithm-id" +# define OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS "algorithm-id-params" +# define OSSL_ALG_PARAM_CIPHER "cipher" +# define OSSL_ALG_PARAM_DIGEST "digest" +# define OSSL_ALG_PARAM_ENGINE "engine" +# define OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR "fips-indicator" +# define OSSL_ALG_PARAM_MAC "mac" +# define OSSL_ALG_PARAM_PROPERTIES "properties" +# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +# define OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props" +# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" +# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name" +# define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal" +# define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name" +# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid" +# define OSSL_CIPHER_PARAM_AEAD "aead" +# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +# define OSSL_CIPHER_PARAM_AEAD_IV_GENERATED "iv-generated" +# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" +# define OSSL_CIPHER_PARAM_AEAD_TAG "tag" +# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" +# define OSSL_CIPHER_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD "alg_id_param" +# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_CIPHER_PARAM_CTS "cts" +# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" +# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" +# define OSSL_CIPHER_PARAM_DECRYPT_ONLY "decrypt-only" +# define OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK "encrypt-check" +# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" +# define OSSL_CIPHER_PARAM_IV "iv" +# define OSSL_CIPHER_PARAM_IVLEN "ivlen" +# define OSSL_CIPHER_PARAM_KEYLEN "keylen" +# define OSSL_CIPHER_PARAM_MODE "mode" +# define OSSL_CIPHER_PARAM_NUM "num" +# define OSSL_CIPHER_PARAM_PADDING "padding" +# define OSSL_CIPHER_PARAM_PIPELINE_AEAD_TAG "pipeline-tag" +# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" +# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" +# define OSSL_CIPHER_PARAM_ROUNDS "rounds" +# define OSSL_CIPHER_PARAM_SPEED "speed" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag" +# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" +# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" +# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" +# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" +# define OSSL_CIPHER_PARAM_USE_BITS "use-bits" +# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard" +# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" +# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_DIGEST_PARAM_MICALG "micalg" +# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" +# define OSSL_DIGEST_PARAM_SIZE "size" +# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" +# define OSSL_DIGEST_PARAM_XOF "xof" +# define OSSL_DIGEST_PARAM_XOFLEN "xoflen" +# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +# define OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +# define OSSL_DRBG_PARAM_SIZE "size" +# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" +# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" +# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" +# define OSSL_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_EXCHANGE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" +# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" +# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" +# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" +# define OSSL_EXCHANGE_PARAM_PAD "pad" +# define OSSL_GEN_PARAM_ITERATION "iteration" +# define OSSL_GEN_PARAM_POTENTIAL "potential" +# define OSSL_KDF_PARAM_ARGON2_AD "ad" +# define OSSL_KDF_PARAM_ARGON2_LANES "lanes" +# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost" +# define OSSL_KDF_PARAM_ARGON2_VERSION "version" +# define OSSL_KDF_PARAM_CEK_ALG "cekalg" +# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_KDF_PARAM_CONSTANT "constant" +# define OSSL_KDF_PARAM_DATA "data" +# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean" +# define OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KDF_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_KDF_PARAM_FIPS_EMS_CHECK "ems_check" +# define OSSL_KDF_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy" +# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce" +# define OSSL_KDF_PARAM_INFO "info" +# define OSSL_KDF_PARAM_ITER "iter" +# define OSSL_KDF_PARAM_KBKDF_R "r" +# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" +# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" +# define OSSL_KDF_PARAM_KEY "key" +# define OSSL_KDF_PARAM_LABEL "label" +# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_KDF_PARAM_MAC_SIZE "maclen" +# define OSSL_KDF_PARAM_MODE "mode" +# define OSSL_KDF_PARAM_PASSWORD "pass" +# define OSSL_KDF_PARAM_PKCS12_ID "id" +# define OSSL_KDF_PARAM_PKCS5 "pkcs5" +# define OSSL_KDF_PARAM_PREFIX "prefix" +# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_KDF_PARAM_SALT "salt" +# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" +# define OSSL_KDF_PARAM_SCRYPT_N "n" +# define OSSL_KDF_PARAM_SCRYPT_P "p" +# define OSSL_KDF_PARAM_SCRYPT_R "r" +# define OSSL_KDF_PARAM_SECRET "secret" +# define OSSL_KDF_PARAM_SEED "seed" +# define OSSL_KDF_PARAM_SIZE "size" +# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" +# define OSSL_KDF_PARAM_SSHKDF_TYPE "type" +# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" +# define OSSL_KDF_PARAM_THREADS "threads" +# define OSSL_KDF_PARAM_UKM "ukm" +# define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info" +# define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info" +# define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info" +# define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo" +# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_KEM_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KEM_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KEM_PARAM_IKME "ikme" +# define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING "hs_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm" +# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len" +# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" +# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_MAC_PARAM_CUSTOM "custom" +# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" +# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" +# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" +# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" +# define OSSL_MAC_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_MAC_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_MAC_PARAM_FIPS_NO_SHORT_MAC OSSL_PROV_PARAM_NO_SHORT_MAC +# define OSSL_MAC_PARAM_IV "iv" +# define OSSL_MAC_PARAM_KEY "key" +# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_MAC_PARAM_SALT "salt" +# define OSSL_MAC_PARAM_SIZE "size" +# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" +# define OSSL_MAC_PARAM_XOF "xof" +# define OSSL_OBJECT_PARAM_DATA "data" +# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" +# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" +# define OSSL_OBJECT_PARAM_DESC "desc" +# define OSSL_OBJECT_PARAM_INPUT_TYPE "input-type" +# define OSSL_OBJECT_PARAM_REFERENCE "reference" +# define OSSL_OBJECT_PARAM_TYPE "type" +# define OSSL_PASSPHRASE_PARAM_INFO "info" +# define OSSL_PKEY_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_PKEY_PARAM_BITS "bits" +# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" +# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm" +# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" +# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +# define OSSL_PKEY_PARAM_DIST_ID "distid" +# define OSSL_PKEY_PARAM_EC_A "a" +# define OSSL_PKEY_PARAM_EC_B "b" +# define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3" +# define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp" +# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" +# define OSSL_PKEY_PARAM_EC_ENCODING "encoding" +# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +# define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_PARAM_EC_ORDER "order" +# define OSSL_PKEY_PARAM_EC_P "p" +# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +# define OSSL_PKEY_PARAM_EC_PUB_X "qx" +# define OSSL_PKEY_PARAM_EC_PUB_Y "qy" +# define OSSL_PKEY_PARAM_EC_SEED "seed" +# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE +# define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +# define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_FFC_G "g" +# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +# define OSSL_PKEY_PARAM_FFC_H "hindex" +# define OSSL_PKEY_PARAM_FFC_P "p" +# define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +# define OSSL_PKEY_PARAM_FFC_Q "q" +# define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +# define OSSL_PKEY_PARAM_FFC_SEED "seed" +# define OSSL_PKEY_PARAM_FFC_TYPE "type" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +# define OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK "digest-check" +# define OSSL_PKEY_PARAM_FIPS_KEY_CHECK "key-check" +# define OSSL_PKEY_PARAM_FIPS_SIGN_CHECK "sign-check" +# define OSSL_PKEY_PARAM_GROUP_NAME "group" +# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" +# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +# define OSSL_PKEY_PARAM_MAX_SIZE "max-size" +# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +# define OSSL_PKEY_PARAM_ML_DSA_INPUT_FORMATS "ml-dsa.input_formats" +# define OSSL_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS "ml-dsa.output_formats" +# define OSSL_PKEY_PARAM_ML_DSA_PREFER_SEED "ml-dsa.prefer_seed" +# define OSSL_PKEY_PARAM_ML_DSA_RETAIN_SEED "ml-dsa.retain_seed" +# define OSSL_PKEY_PARAM_ML_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE "ml-kem.import_pct_type" +# define OSSL_PKEY_PARAM_ML_KEM_INPUT_FORMATS "ml-kem.input_formats" +# define OSSL_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS "ml-kem.output_formats" +# define OSSL_PKEY_PARAM_ML_KEM_PREFER_SEED "ml-kem.prefer_seed" +# define OSSL_PKEY_PARAM_ML_KEM_RETAIN_SEED "ml-kem.retain_seed" +# define OSSL_PKEY_PARAM_ML_KEM_SEED "seed" +# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +# define OSSL_PKEY_PARAM_PRIV_KEY "priv" +# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_PUB_KEY "pub" +# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9" +# define OSSL_PKEY_PARAM_RSA_D "d" +# define OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ "rsa-derive-from-pq" +# define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_RSA_E "e" +# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1" +# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10" +# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2" +# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3" +# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4" +# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5" +# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6" +# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7" +# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8" +# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9" +# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1" +# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10" +# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2" +# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3" +# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4" +# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5" +# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6" +# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7" +# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8" +# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9" +# define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC +# define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_PKEY_PARAM_RSA_N "n" +# define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" +# define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1" +# define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2" +# define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1" +# define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2" +# define OSSL_PKEY_PARAM_RSA_TEST_XP "xp" +# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" +# define OSSL_PKEY_PARAM_SLH_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG +# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +# define OSSL_PROV_PARAM_BUILDINFO "buildinfo" +# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" +# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" +# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" +# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" +# define OSSL_PROV_PARAM_DSA_SIGN_DISABLED "dsa-sign-disabled" +# define OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK "ecdh-cofactor-check" +# define OSSL_PROV_PARAM_HKDF_DIGEST_CHECK "hkdf-digest-check" +# define OSSL_PROV_PARAM_HKDF_KEY_CHECK "hkdf-key-check" +# define OSSL_PROV_PARAM_HMAC_KEY_CHECK "hmac-key-check" +# define OSSL_PROV_PARAM_KBKDF_KEY_CHECK "kbkdf-key-check" +# define OSSL_PROV_PARAM_KMAC_KEY_CHECK "kmac-key-check" +# define OSSL_PROV_PARAM_NAME "name" +# define OSSL_PROV_PARAM_NO_SHORT_MAC "no-short-mac" +# define OSSL_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK "pbkdf2-lower-bound-check" +# define OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED "rsa-pkcs15-pad-disabled" +# define OSSL_PROV_PARAM_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED "rsa-sign-x931-pad-disabled" +# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" +# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" +# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" +# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" +# define OSSL_PROV_PARAM_SIGNATURE_DIGEST_CHECK "signature-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_DIGEST_CHECK "sshkdf-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_KEY_CHECK "sshkdf-key-check" +# define OSSL_PROV_PARAM_SSKDF_DIGEST_CHECK "sskdf-digest-check" +# define OSSL_PROV_PARAM_SSKDF_KEY_CHECK "sskdf-key-check" +# define OSSL_PROV_PARAM_STATUS "status" +# define OSSL_PROV_PARAM_TDES_ENCRYPT_DISABLED "tdes-encrypt-disabled" +# define OSSL_PROV_PARAM_TLS13_KDF_DIGEST_CHECK "tls13-kdf-digest-check" +# define OSSL_PROV_PARAM_TLS13_KDF_KEY_CHECK "tls13-kdf-key-check" +# define OSSL_PROV_PARAM_TLS1_PRF_DIGEST_CHECK "tls1-prf-digest-check" +# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" +# define OSSL_PROV_PARAM_TLS1_PRF_KEY_CHECK "tls1-prf-key-check" +# define OSSL_PROV_PARAM_VERSION "version" +# define OSSL_PROV_PARAM_X942KDF_KEY_CHECK "x942kdf-key-check" +# define OSSL_PROV_PARAM_X963KDF_DIGEST_CHECK "x963kdf-digest-check" +# define OSSL_PROV_PARAM_X963KDF_KEY_CHECK "x963kdf-key-check" +# define OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_RAND_PARAM_GENERATE "generate" +# define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +# define OSSL_RAND_PARAM_STATE "state" +# define OSSL_RAND_PARAM_STRENGTH "strength" +# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" +# define OSSL_SIGNATURE_PARAM_ADD_RANDOM "additional-random" +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID OSSL_PKEY_PARAM_ALGORITHM_ID +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string" +# define OSSL_SIGNATURE_PARAM_DETERMINISTIC "deterministic" +# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE +# define OSSL_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_SIGNATURE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_CHECK OSSL_PKEY_PARAM_FIPS_SIGN_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK "sign-x931-pad-check" +# define OSSL_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE "verify-message" +# define OSSL_SIGNATURE_PARAM_INSTANCE "instance" +# define OSSL_SIGNATURE_PARAM_KAT "kat" +# define OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING "message-encoding" +# define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_SIGNATURE_PARAM_MU "mu" +# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type" +# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +# define OSSL_SIGNATURE_PARAM_SIGNATURE "signature" +# define OSSL_SIGNATURE_PARAM_TEST_ENTROPY "test-entropy" +# define OSSL_SKEY_PARAM_KEY_LENGTH "key-length" +# define OSSL_SKEY_PARAM_RAW_BYTES "raw-bytes" +# define OSSL_STORE_PARAM_ALIAS "alias" +# define OSSL_STORE_PARAM_DIGEST "digest" +# define OSSL_STORE_PARAM_EXPECT "expect" +# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" +# define OSSL_STORE_PARAM_INPUT_TYPE "input-type" +# define OSSL_STORE_PARAM_ISSUER "name" +# define OSSL_STORE_PARAM_PROPERTIES "properties" +# define OSSL_STORE_PARAM_SERIAL "serial" +# define OSSL_STORE_PARAM_SUBJECT "subject" + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/crmf.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/crmf.h index 0419170bb99974..9b6f13fac240b2 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/crmf.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/crmf.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/crmf.h.in * - * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -26,6 +26,7 @@ # include # include # include /* for GENERAL_NAME etc. */ +# include /* explicit #includes not strictly needed since implied by the above: */ # include @@ -43,9 +44,12 @@ extern "C" { # define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 # define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 - typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) + +typedef struct ossl_crmf_encryptedkey_st OSSL_CRMF_ENCRYPTEDKEY; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDKEY) + typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) @@ -77,6 +81,36 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) #define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; +void OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(OSSL_CRMF_ATTRIBUTETYPEANDVALUE *v); +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value(sk, idx) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new(cmp) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_null() ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (n)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete(sk, i) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (i))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete_ptr(sk, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_shift(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk),ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), (idx)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set(sk, idx, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), pnum) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup(sk) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) + + typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER) typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY; @@ -118,6 +152,7 @@ typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO) typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTTEMPLATE) typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS) @@ -198,12 +233,14 @@ int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, int rid, int acceptRAVerified, OSSL_LIB_CTX *libctx, const char *propq); OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); -const ASN1_INTEGER -*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const ASN1_INTEGER +*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); X509_EXTENSIONS *OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME @@ -215,10 +252,24 @@ int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl, const X509_NAME *subject, const X509_NAME *issuer, const ASN1_INTEGER *serial); -X509 -*OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, - OSSL_LIB_CTX *libctx, const char *propq, - EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDKEY_get1_encCert(const OSSL_CRMF_ENCRYPTEDKEY *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, unsigned int flags); +unsigned char +*OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *enc, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, int *outlen); +EVP_PKEY *OSSL_CRMF_ENCRYPTEDKEY_get1_pkey(const OSSL_CRMF_ENCRYPTEDKEY *encryptedKey, + X509_STORE *ts, STACK_OF(X509) *extra, EVP_PKEY *pkey, + X509 *cert, ASN1_OCTET_STRING *secret, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSG_centralkeygen_requested(const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr); +# ifndef OPENSSL_NO_CMS +OSSL_CRMF_ENCRYPTEDKEY *OSSL_CRMF_ENCRYPTEDKEY_init_envdata(CMS_EnvelopedData *envdata); +# endif # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/crypto.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/crypto.h index 668c52cfee1f15..2a825986bf3a55 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/crypto.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/crypto.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/crypto.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -85,9 +85,15 @@ int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock); void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock); int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_add64(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_and(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, CRYPTO_RWLOCK *lock); int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, CRYPTO_RWLOCK *lock); /* No longer needed, so this is a no-op */ #define OPENSSL_malloc_init() while(0) continue @@ -96,6 +102,9 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_zalloc(num) \ CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_aligned_alloc(num, alignment, freeptr) \ + CRYPTO_aligned_alloc(num, alignment, freeptr, \ + OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_realloc(addr, num) \ CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_clear_realloc(addr, old_num, num) \ @@ -124,6 +133,7 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); size_t OPENSSL_strnlen(const char *str, size_t maxlen); +int OPENSSL_strtoul(const char *str, char **endptr, int base, unsigned long *num); int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength, const unsigned char *buf, size_t buflen, const char sep); @@ -160,6 +170,7 @@ const char *OpenSSL_version(int type); # define OPENSSL_FULL_VERSION_STRING 7 # define OPENSSL_MODULES_DIR 8 # define OPENSSL_CPU_INFO 9 +# define OPENSSL_WINCTX 10 const char *OPENSSL_info(int type); /* @@ -174,6 +185,7 @@ const char *OPENSSL_info(int type); # define OPENSSL_INFO_LIST_SEPARATOR 1006 # define OPENSSL_INFO_SEED_SOURCE 1007 # define OPENSSL_INFO_CPU_SETTINGS 1008 +# define OPENSSL_INFO_WINDOWS_CONTEXT 1009 int OPENSSL_issetugid(void); @@ -341,11 +353,14 @@ void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn, CRYPTO_realloc_fn *realloc_fn, CRYPTO_free_fn *free_fn); -void *CRYPTO_malloc(size_t num, const char *file, int line); -void *CRYPTO_zalloc(size_t num, const char *file, int line); -void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); -char *CRYPTO_strdup(const char *str, const char *file, int line); -char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc(size_t num, size_t align, + void **freeptr, const char *file, + int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strdup(const char *str, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); void CRYPTO_free(void *ptr, const char *file, int line); void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line); void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); @@ -354,8 +369,8 @@ void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, int CRYPTO_secure_malloc_init(size_t sz, size_t minsize); int CRYPTO_secure_malloc_done(void); -void *CRYPTO_secure_malloc(size_t num, const char *file, int line); -void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); void CRYPTO_secure_free(void *ptr, const char *file, int line); void CRYPTO_secure_clear_free(void *ptr, size_t num, const char *file, int line); @@ -376,6 +391,9 @@ void OPENSSL_cleanse(void *ptr, size_t len); # define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */ # define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */ +/* max allowed length for value of OPENSSL_MALLOC_FAILURES env var. */ +# define CRYPTO_MEM_CHECK_MAX_FS 256 + void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); # ifndef OPENSSL_NO_DEPRECATED_3_0 # define OPENSSL_mem_debug_push(info) \ @@ -551,6 +569,13 @@ int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file); void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); +int OSSL_LIB_CTX_get_conf_diagnostics(OSSL_LIB_CTX *ctx); +void OSSL_LIB_CTX_set_conf_diagnostics(OSSL_LIB_CTX *ctx, int value); + +void OSSL_sleep(uint64_t millis); + + +void *OSSL_LIB_CTX_get_data(OSSL_LIB_CTX *ctx, int index); # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/ct.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/ct.h index 15a276e33ff7ca..d29dbc78997c0b 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/ct.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/ct.h @@ -133,7 +133,7 @@ typedef enum { */ CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); - + /* * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library * context and property query string is used. diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/err.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/err.h index 2abf2483488181..daca18e7b757b0 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/err.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/err.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -372,7 +372,7 @@ typedef struct ERR_string_data_st { } ERR_STRING_DATA; DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); -#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp))) +#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp)), lh_ERR_STRING_DATA_hash_thunk, lh_ERR_STRING_DATA_comp_thunk, lh_ERR_STRING_DATA_doall_thunk, lh_ERR_STRING_DATA_doall_arg_thunk)) #define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) @@ -496,6 +496,14 @@ int ERR_get_next_error_library(void); int ERR_set_mark(void); int ERR_pop_to_mark(void); int ERR_clear_last_mark(void); +int ERR_count_to_mark(void); +int ERR_pop(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); #ifdef __cplusplus } diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/fipskey.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/fipskey.h index bf03682482fdd5..6939fd3c55ba6e 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/fipskey.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/fipskey.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/fipskey.h.in * - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -29,6 +29,11 @@ extern "C" { */ #define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" +/* + * The FIPS provider vendor name, as a string. + */ +#define FIPS_VENDOR "OpenSSL FIPS Provider" + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/lhash.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/lhash.h index 39dd6254acdeb6..62c55b20fd9716 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/lhash.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/lhash.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -24,6 +24,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -31,9 +34,13 @@ extern "C" { typedef struct lhash_node_st OPENSSL_LH_NODE; typedef int (*OPENSSL_LH_COMPFUNC) (const void *, const void *); +typedef int (*OPENSSL_LH_COMPFUNCTHUNK) (const void *, const void *, OPENSSL_LH_COMPFUNC cfn); typedef unsigned long (*OPENSSL_LH_HASHFUNC) (const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNCTHUNK) (const void *, OPENSSL_LH_HASHFUNC hfn); typedef void (*OPENSSL_LH_DOALL_FUNC) (void *); +typedef void (*OPENSSL_LH_DOALL_FUNC_THUNK) (void *, OPENSSL_LH_DOALL_FUNC doall); typedef void (*OPENSSL_LH_DOALL_FUNCARG) (void *, void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG_THUNK) (void *, void *, OPENSSL_LH_DOALL_FUNCARG doall); typedef struct lhash_st OPENSSL_LHASH; /* @@ -79,26 +86,40 @@ typedef struct lhash_st OPENSSL_LHASH; int OPENSSL_LH_error(OPENSSL_LHASH *lh); OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +OPENSSL_LHASH *OPENSSL_LH_set_thunks(OPENSSL_LHASH *lh, + OPENSSL_LH_HASHFUNCTHUNK hw, + OPENSSL_LH_COMPFUNCTHUNK cw, + OPENSSL_LH_DOALL_FUNC_THUNK daw, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw); void OPENSSL_LH_free(OPENSSL_LHASH *lh); void OPENSSL_LH_flush(OPENSSL_LHASH *lh); void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); -void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg_thunk(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw, + OPENSSL_LH_DOALL_FUNCARG fn, void *arg); + unsigned long OPENSSL_LH_strhash(const char *c); unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); # ifndef OPENSSL_NO_STDIO -void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# endif +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # endif -void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define _LHASH OPENSSL_LHASH @@ -129,110 +150,190 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); /* Helper macro for internal use */ # define DEFINE_LHASH_OF_INTERNAL(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ typedef void (*lh_##type##_doallfunc)(type *a); \ - static ossl_unused ossl_inline type *ossl_check_##type##_lh_plain_type(type *ptr) \ + static ossl_inline unsigned long lh_##type##_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static ossl_inline int lh_##type##_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_inline void lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_inline void lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline type *\ + ossl_check_##type##_lh_plain_type(type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const type *ossl_check_const_##type##_lh_plain_type(const type *ptr) \ + static ossl_unused ossl_inline const type * \ + ossl_check_const_##type##_lh_plain_type(const type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const OPENSSL_LHASH *ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline const OPENSSL_LHASH * \ + ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ { \ return (const OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LHASH *ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline OPENSSL_LHASH * \ + ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ { \ return (OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ + static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC \ + ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ { \ return (OPENSSL_LH_COMPFUNC)cmp; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ + static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC \ + ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ { \ return (OPENSSL_LH_HASHFUNC)hfn; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ + static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC \ + ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ { \ return (OPENSSL_LH_DOALL_FUNC)dfn; \ } \ LHASH_OF(type) -# define DEFINE_LHASH_OF(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ - static ossl_unused ossl_inline LHASH_OF(type) *lh_##type##_new(unsigned long (*hfn)(const type *), \ - int (*cfn)(const type *, const type *)) \ +# ifndef OPENSSL_NO_DEPRECATED_3_1 +# define DEFINE_LHASH_OF_DEPRECATED(type) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ - return (LHASH_OF(type) *) \ - OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ - static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } +# else +# define DEFINE_LHASH_OF_DEPRECATED(type) +# endif + +# define DEFINE_LHASH_OF_EX(type) \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ + static unsigned long \ + lh_##type##_hfn_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static int lh_##type##_cfn_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_free(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_flush(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_flush(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ { \ return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline int \ + lh_##type##_error(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_num_items(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_get_down_load(LHASH_OF(type) *lh) \ { \ - OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ { \ - OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ } \ - static ossl_unused ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ { \ - OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ { \ - return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ } \ - static ossl_unused ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall(LHASH_OF(type) *lh, void (*doall)(type *)) \ { \ - OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ - void (*doall)(type *)) \ + static ossl_unused ossl_inline LHASH_OF(type) * \ + lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ { \ - OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \ + lh_##type##_hfn_thunk, lh_##type##_cfn_thunk, \ + lh_##type##_doall_thunk, \ + lh_##type##_doall_arg_thunk); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall_arg(LHASH_OF(type) *lh, \ - void (*doallarg)(type *, void *), \ - void *arg) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg(LHASH_OF(type) *lh, \ + void (*doallarg)(type *, void *), void *arg) \ { \ OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ } \ LHASH_OF(type) +# define DEFINE_LHASH_OF(type) \ + DEFINE_LHASH_OF_EX(type); \ + DEFINE_LHASH_OF_DEPRECATED(type) \ + LHASH_OF(type) + #define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ int_implement_lhash_doall(type, argtype, const type) @@ -240,17 +341,26 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); int_implement_lhash_doall(type, argtype, type) #define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype##_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG fn) \ + { \ + void (*fn_conv)(cbargtype *, argtype *) = (void (*)(cbargtype *, argtype *))fn; \ + fn_conv((cbargtype *)node, (argtype *)arg); \ + } \ static ossl_unused ossl_inline void \ lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ void (*fn)(cbargtype *, argtype *), \ argtype *arg) \ { \ - OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNCARG)fn, (void *)arg); \ + OPENSSL_LH_doall_arg_thunk((OPENSSL_LHASH *)lh, \ + lh_##type##_doall_##argtype##_thunk, \ + (OPENSSL_LH_DOALL_FUNCARG)fn, \ + (void *)arg); \ } \ LHASH_OF(type) DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); -#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp)), lh_OPENSSL_STRING_hash_thunk, lh_OPENSSL_STRING_comp_thunk, lh_OPENSSL_STRING_doall_thunk, lh_OPENSSL_STRING_doall_arg_thunk)) #define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) @@ -265,7 +375,7 @@ DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); #define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) #define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); -#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp)), lh_OPENSSL_CSTRING_hash_thunk, lh_OPENSSL_CSTRING_comp_thunk, lh_OPENSSL_CSTRING_doall_thunk, lh_OPENSSL_CSTRING_doall_arg_thunk)) #define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/opensslv.h index 94f44daf376f8e..8f0439fc042ad0 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/opensslv.h @@ -28,8 +28,8 @@ extern "C" { * These macros express version number MAJOR.MINOR.PATCH exactly */ # define OPENSSL_VERSION_MAJOR 3 -# define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 17 +# define OPENSSL_VERSION_MINOR 5 +# define OPENSSL_VERSION_PATCH 2 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.17" -# define OPENSSL_FULL_VERSION_STR "3.0.17" +# define OPENSSL_VERSION_STR "3.5.2" +# define OPENSSL_FULL_VERSION_STR "3.5.2" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "1 Jul 2025" +# define OPENSSL_RELEASE_DATE "5 Aug 2025" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.17 1 Jul 2025" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.2 5 Aug 2025" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/pkcs12.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/pkcs12.h index 80369818c8ecdc..35d04f039366ce 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/pkcs12.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/pkcs12.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/pkcs12.h.in * - * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -41,6 +44,7 @@ extern "C" { # define PKCS12_MAC_KEY_LENGTH 20 +/* The macro is expected to be used only internally. Kept for backwards compatibility. */ # define PKCS12_SALT_LEN 8 /* It's not clear if these are actually needed... */ @@ -130,7 +134,9 @@ int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); const STACK_OF(PKCS12_SAFEBAG) * PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); @@ -218,6 +224,7 @@ ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); const STACK_OF(X509_ATTRIBUTE) * PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, const char *pass, int passlen, const unsigned char *in, int inlen, @@ -285,6 +292,9 @@ int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, unsigned char *salt, int saltlen, int iter, const EVP_MD *md_type); +int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type, const char *prf_md_name); int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, int saltlen, const EVP_MD *md_type); unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, @@ -305,6 +315,7 @@ DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) void PKCS12_PBE_add(void); int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype); @@ -312,6 +323,11 @@ PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype, OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/pkcs7.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/pkcs7.h index 0a95a93e59e262..641d9411a47354 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/pkcs7.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/pkcs7.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/pkcs7.h.in * - * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -28,6 +28,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -131,8 +134,8 @@ SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INF typedef struct pkcs7_signed_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; struct pkcs7_st *contents; } PKCS7_SIGNED; @@ -158,8 +161,8 @@ typedef struct pkcs7_enveloped_st { typedef struct pkcs7_signedandenveloped_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; PKCS7_ENC_CONTENT *enc_data; STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; @@ -200,7 +203,7 @@ typedef struct pkcs7_st { /* NID_pkcs7_data */ ASN1_OCTET_STRING *data; /* NID_pkcs7_signed */ - PKCS7_SIGNED *sign; + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ /* NID_pkcs7_enveloped */ PKCS7_ENVELOPE *enveloped; /* NID_pkcs7_signedAndEnveloped */ @@ -341,13 +344,13 @@ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, const EVP_MD *dgst); int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); -int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); -int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); int PKCS7_content_new(PKCS7 *p7, int nid); int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, - X509 *x509); + X509 *signer); BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/ssl.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/ssl.h index 7e9ca09bbf39f0..6396681867d76c 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/ssl.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/ssl.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/ssl.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -24,6 +24,7 @@ # endif # include +# include # include # include # include @@ -42,6 +43,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -231,10 +235,8 @@ typedef struct ssl_cipher_st SSL_CIPHER; typedef struct ssl_session_st SSL_SESSION; typedef struct tls_sigalgs_st TLS_SIGALGS; typedef struct ssl_conf_ctx_st SSL_CONF_CTX; -typedef struct ssl_comp_st SSL_COMP; STACK_OF(SSL_CIPHER); -STACK_OF(SSL_COMP); /* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ typedef struct srtp_protection_profile_st { @@ -278,28 +280,31 @@ typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, /* Extension context codes */ /* This extension is only allowed in TLS */ -#define SSL_EXT_TLS_ONLY 0x0001 +#define SSL_EXT_TLS_ONLY 0x00001 /* This extension is only allowed in DTLS */ -#define SSL_EXT_DTLS_ONLY 0x0002 +#define SSL_EXT_DTLS_ONLY 0x00002 /* Some extensions may be allowed in DTLS but we don't implement them for it */ -#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 /* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ -#define SSL_EXT_SSL3_ALLOWED 0x0008 +#define SSL_EXT_SSL3_ALLOWED 0x00008 /* Extension is only defined for TLS1.2 and below */ -#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 /* Extension is only defined for TLS1.3 and above */ -#define SSL_EXT_TLS1_3_ONLY 0x0020 +#define SSL_EXT_TLS1_3_ONLY 0x00020 /* Ignore this extension during parsing if we are resuming */ -#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 -#define SSL_EXT_CLIENT_HELLO 0x0080 +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 /* Really means TLS1.2 or below */ -#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 -#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 -#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 -#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 -#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 -#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 -#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 /* Typedefs for handling custom extensions */ @@ -404,7 +409,7 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); */ # define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_BIT(22) /* - * If set, a server will allow a client to issue a SSLv3.0 version + * If set, a server will allow a client to issue an SSLv3.0 version * number as latest version supported in the premaster secret, even when * TLSv1.0 (version 3.1) was announced in the client hello. Normally * this is forbidden to prevent version rollback attacks. @@ -430,6 +435,19 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); * interoperability with CryptoPro CSP 3.x */ # define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +# define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +# define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) + /* Enable KTLS TX zerocopy on Linux */ +# define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) + +#define SSL_OP_PREFER_NO_DHE_KEX SSL_OP_BIT(35) /* * Option "collections." @@ -574,6 +592,8 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); # define CERT_PKEY_CERT_TYPE 0x400 /* Cert chain suitable to Suite B */ # define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +# define CERT_PKEY_RPK 0x1000 # define SSL_CONF_FLAG_CMDLINE 0x1 # define SSL_CONF_FLAG_FILE 0x2 @@ -965,6 +985,7 @@ uint32_t SSL_get_recv_max_early_data(const SSL *s); # include /* This is mostly sslv3 with a few tweaks */ # include /* Datagram TLS */ # include /* Support for the use_srtp extension */ +# include #ifdef __cplusplus extern "C" { @@ -1000,32 +1021,6 @@ SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) #define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) #define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) #define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) -SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) -#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) -#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) -#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) -#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) -#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) -#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) -#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) -#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) -#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) -#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) -#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) /* compatibility */ @@ -1066,6 +1061,7 @@ typedef enum { DTLS_ST_CR_HELLO_VERIFY_REQUEST, TLS_ST_CR_SRVR_HELLO, TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, TLS_ST_CR_CERT_STATUS, TLS_ST_CR_KEY_EXCH, TLS_ST_CR_CERT_REQ, @@ -1075,6 +1071,7 @@ typedef enum { TLS_ST_CR_FINISHED, TLS_ST_CW_CLNT_HELLO, TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, TLS_ST_CW_KEY_EXCH, TLS_ST_CW_CERT_VRFY, TLS_ST_CW_CHANGE, @@ -1085,10 +1082,12 @@ typedef enum { DTLS_ST_SW_HELLO_VERIFY_REQUEST, TLS_ST_SW_SRVR_HELLO, TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, TLS_ST_SW_KEY_EXCH, TLS_ST_SW_CERT_REQ, TLS_ST_SW_SRVR_DONE, TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, TLS_ST_SR_KEY_EXCH, TLS_ST_SR_CERT_VRFY, TLS_ST_SR_NEXT_PROTO, @@ -1380,9 +1379,13 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_CTRL_GET_SIGNATURE_NID 132 # define SSL_CTRL_GET_TMP_KEY 133 # define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +# define SSL_CTRL_GET_IANA_GROUPS 135 # define SSL_CTRL_SET_RETRY_VERIFY 136 # define SSL_CTRL_GET_VERIFY_CERT_STORE 137 # define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +# define SSL_CTRL_GET0_IMPLEMENTED_GROUPS 139 +# define SSL_CTRL_GET_SIGNATURE_NAME 140 +# define SSL_CTRL_GET_PEER_SIGNATURE_NAME 141 # define SSL_CERT_SET_FIRST 1 # define SSL_CERT_SET_NEXT 2 # define SSL_CERT_SET_SERVER 3 @@ -1485,10 +1488,15 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get1_groups(s, glist) \ SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_IANA_GROUPS,0,(uint16_t **)(plst)) # define SSL_CTX_set1_groups(ctx, glist, glistlen) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) # define SSL_CTX_set1_groups_list(ctx, s) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s)) +# define SSL_CTX_get0_implemented_groups(ctx, all, out) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET0_IMPLEMENTED_GROUPS, all, \ + (STACK_OF(OPENSSL_CSTRING) *)(out)) # define SSL_set1_groups(s, glist, glistlen) \ SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist)) # define SSL_set1_groups_list(s, str) \ @@ -1520,8 +1528,12 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) (char *)(clist)) # define SSL_set1_client_certificate_types(s, clist, clistlen) \ SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist)) +# define SSL_get0_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn) +# define SSL_get0_peer_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_peer_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) # define SSL_get_peer_tmp_key(s, pk) \ @@ -1549,6 +1561,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get_max_proto_version(s) \ SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +const char *SSL_get0_group_name(SSL *s); const char *SSL_group_to_name(SSL *s, int id); /* Backwards compatibility, original 1.1.0 names */ @@ -1613,7 +1626,11 @@ void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); __owur int SSL_want(const SSL *s); __owur int SSL_clear(SSL *s); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()") void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); +#endif +void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm); __owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); __owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); @@ -1725,13 +1742,21 @@ __owur const char *SSL_state_string(const SSL *s); __owur const char *SSL_rstate_string(const SSL *s); __owur const char *SSL_state_string_long(const SSL *s); __owur const char *SSL_rstate_string_long(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_get_time_ex()") __owur long SSL_SESSION_get_time(const SSL_SESSION *s); +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_set_time_ex()") __owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +#endif __owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); __owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); __owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); __owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); +__owur time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s); +__owur time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t); + __owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); __owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, @@ -1783,6 +1808,9 @@ __owur int SSL_has_matching_session_id(const SSL *s, unsigned int id_len); SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); # ifdef OPENSSL_X509_H __owur X509 *SSL_get0_peer_certificate(const SSL *s); @@ -1840,6 +1868,8 @@ __owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, SSL *SSL_new(SSL_CTX *ctx); int SSL_up_ref(SSL *s); int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); __owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, unsigned int sid_ctx_len); @@ -1848,8 +1878,8 @@ __owur int SSL_set_purpose(SSL *ssl, int purpose); __owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); __owur int SSL_set_trust(SSL *ssl, int trust); -__owur int SSL_set1_host(SSL *s, const char *hostname); -__owur int SSL_add1_host(SSL *s, const char *hostname); +__owur int SSL_set1_host(SSL *s, const char *host); +__owur int SSL_add1_host(SSL *s, const char *host); __owur const char *SSL_get0_peername(SSL *s); void SSL_set_hostflags(SSL *s, unsigned int flags); @@ -1924,6 +1954,11 @@ OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg); void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, void *arg); +typedef int (*SSL_new_pending_conn_cb_fn) (SSL_CTX *ctx, SSL *new_ssl, + void *arg); +void SSL_CTX_set_new_pending_conn_cb(SSL_CTX *c, SSL_new_pending_conn_cb_fn cb, + void *arg); + int SSL_client_hello_isv2(SSL *s); unsigned int SSL_client_hello_get0_legacy_version(SSL *s); size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); @@ -1932,6 +1967,8 @@ size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); size_t SSL_client_hello_get0_compression_methods(SSL *s, const unsigned char **out); int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); int SSL_client_hello_get0_ext(SSL *s, unsigned int type, const unsigned char **out, size_t *outlen); @@ -1978,6 +2015,12 @@ long SSL_callback_ctrl(SSL *, int, void (*)(void)); long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); +# define SSL_WRITE_FLAG_CONCLUDE (1U << 0) + +__owur int SSL_write_ex2(SSL *s, const void *buf, size_t num, + uint64_t flags, + size_t *written); + # define SSL_EARLY_DATA_NOT_SENT 0 # define SSL_EARLY_DATA_REJECTED 1 # define SSL_EARLY_DATA_ACCEPTED 2 @@ -1986,6 +2029,7 @@ __owur int SSL_get_early_data_status(const SSL *s); __owur int SSL_get_error(const SSL *s, int ret_code); __owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); /* This sets the 'default' SSL version that SSL_new() will create */ # ifndef OPENSSL_NO_DEPRECATED_3_0 @@ -2281,6 +2325,8 @@ void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); +int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size, + size_t hs_block_size); int SSL_set_record_padding_callback(SSL *ssl, size_t (*cb) (SSL *ssl, int type, @@ -2288,12 +2334,255 @@ int SSL_set_record_padding_callback(SSL *ssl, void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); void *SSL_get_record_padding_callback_arg(const SSL *ssl); int SSL_set_block_padding(SSL *ssl, size_t block_size); - +int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size, + size_t hs_block_size); int SSL_set_num_tickets(SSL *s, size_t num_tickets); size_t SSL_get_num_tickets(const SSL *s); int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +__owur int SSL_is_listener(SSL *ssl); +__owur SSL *SSL_get0_listener(SSL *s); +#define SSL_LISTENER_FLAG_NO_VALIDATE (1UL << 1) +__owur SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags); +__owur SSL *SSL_new_listener_from(SSL *ssl, uint64_t flags); +__owur SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags); +#define SSL_ACCEPT_CONNECTION_NO_BLOCK (1UL << 0) +__owur SSL *SSL_accept_connection(SSL *ssl, uint64_t flags); +__owur size_t SSL_get_accept_connection_queue_len(SSL *ssl); +__owur int SSL_listen(SSL *ssl); + +__owur int SSL_is_domain(SSL *s); +__owur SSL *SSL_get0_domain(SSL *s); +__owur SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags); + +#define SSL_DOMAIN_FLAG_SINGLE_THREAD (1U << 0) +#define SSL_DOMAIN_FLAG_MULTI_THREAD (1U << 1) +#define SSL_DOMAIN_FLAG_THREAD_ASSISTED (1U << 2) +#define SSL_DOMAIN_FLAG_BLOCKING (1U << 3) +#define SSL_DOMAIN_FLAG_LEGACY_BLOCKING (1U << 4) + +__owur int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t domain_flags); +__owur int SSL_CTX_get_domain_flags(const SSL_CTX *ctx, uint64_t *domain_flags); +__owur int SSL_get_domain_flags(const SSL *ssl, uint64_t *domain_flags); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +# ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +# endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + +# define SSL_VALUE_CLASS_GENERIC 0 +# define SSL_VALUE_CLASS_FEATURE_REQUEST 1 +# define SSL_VALUE_CLASS_FEATURE_PEER_REQUEST 2 +# define SSL_VALUE_CLASS_FEATURE_NEGOTIATED 3 + +# define SSL_VALUE_NONE 0 +# define SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL 1 +# define SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL 2 +# define SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL 3 +# define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL 4 +# define SSL_VALUE_QUIC_IDLE_TIMEOUT 5 +# define SSL_VALUE_EVENT_HANDLING_MODE 6 +# define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7 +# define SSL_VALUE_STREAM_WRITE_BUF_USED 8 +# define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9 + +# define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0 +# define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1 +# define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT 2 + +int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v); +int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v); + +# define SSL_get_generic_value_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_set_generic_value_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_get_feature_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_set_feature_request_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_get_feature_peer_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, (id), (v)) +# define SSL_get_feature_negotiated_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_NEGOTIATED, (id), (v)) + +# define SSL_get_quic_stream_bidi_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_bidi_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, \ + (value)) + +# define SSL_get_event_handling_mode(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) +# define SSL_set_event_handling_mode(ssl, value) \ + SSL_set_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) + +# define SSL_get_stream_write_buf_size(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_SIZE, \ + (value)) +# define SSL_get_stream_write_buf_used(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_USED, \ + (value)) +# define SSL_get_stream_write_buf_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_AVAIL, \ + (value)) + +# define SSL_POLL_EVENT_NONE 0 + +# define SSL_POLL_EVENT_F (1U << 0) /* F (Failure) */ +# define SSL_POLL_EVENT_EL (1U << 1) /* EL (Exception on Listener) */ +# define SSL_POLL_EVENT_EC (1U << 2) /* EC (Exception on Conn) */ +# define SSL_POLL_EVENT_ECD (1U << 3) /* ECD (Exception on Conn Drained) */ +# define SSL_POLL_EVENT_ER (1U << 4) /* ER (Exception on Read) */ +# define SSL_POLL_EVENT_EW (1U << 5) /* EW (Exception on Write) */ +# define SSL_POLL_EVENT_R (1U << 6) /* R (Readable) */ +# define SSL_POLL_EVENT_W (1U << 7) /* W (Writable) */ +# define SSL_POLL_EVENT_IC (1U << 8) /* IC (Incoming Connection) */ +# define SSL_POLL_EVENT_ISB (1U << 9) /* ISB (Incoming Stream: Bidi) */ +# define SSL_POLL_EVENT_ISU (1U << 10) /* ISU (Incoming Stream: Uni) */ +# define SSL_POLL_EVENT_OSB (1U << 11) /* OSB (Outgoing Stream: Bidi) */ +# define SSL_POLL_EVENT_OSU (1U << 12) /* OSU (Outgoing Stream: Uni) */ + +# define SSL_POLL_EVENT_RW (SSL_POLL_EVENT_R | SSL_POLL_EVENT_W) +# define SSL_POLL_EVENT_RE (SSL_POLL_EVENT_R | SSL_POLL_EVENT_ER) +# define SSL_POLL_EVENT_WE (SSL_POLL_EVENT_W | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_RWE (SSL_POLL_EVENT_RE | SSL_POLL_EVENT_WE) +# define SSL_POLL_EVENT_E (SSL_POLL_EVENT_EL | SSL_POLL_EVENT_EC \ + | SSL_POLL_EVENT_ER | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_IS (SSL_POLL_EVENT_ISB | SSL_POLL_EVENT_ISU) +# define SSL_POLL_EVENT_ISE (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_EC) +# define SSL_POLL_EVENT_I (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_IC) +# define SSL_POLL_EVENT_OS (SSL_POLL_EVENT_OSB | SSL_POLL_EVENT_OSU) +# define SSL_POLL_EVENT_OSE (SSL_POLL_EVENT_OS | SSL_POLL_EVENT_EC) + +typedef struct ssl_poll_item_st { + BIO_POLL_DESCRIPTOR desc; + uint64_t events, revents; +} SSL_POLL_ITEM; + +# define SSL_POLL_FLAG_NO_HANDLE_EVENTS (1U << 0) + +__owur int SSL_poll(SSL_POLL_ITEM *items, + size_t num_items, + size_t stride, + const struct timeval *timeout, + uint64_t flags, + size_t *result_count); + +static ossl_inline ossl_unused BIO_POLL_DESCRIPTOR +SSL_as_poll_descriptor(SSL *s) +{ + BIO_POLL_DESCRIPTOR d; + + d.type = BIO_POLL_DESCRIPTOR_TYPE_SSL; + d.value.ssl = s; + return d; +} + # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define SSL_cache_hit(s) SSL_session_reused(s) # endif @@ -2593,6 +2882,51 @@ void SSL_set_allow_early_data_cb(SSL *s, const char *OSSL_default_cipher_list(void); const char *OSSL_default_ciphersuites(void); +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + +/* + * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used. + */ +# define OSSL_RECORD_PROTECTION_LEVEL_NONE 0 +# define OSSL_RECORD_PROTECTION_LEVEL_EARLY 1 +# define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE 2 +# define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3 + +int SSL_set_quic_tls_cbs(SSL *s, const OSSL_DISPATCH *qtdis, void *arg); +int SSL_set_quic_tls_transport_params(SSL *s, + const unsigned char *params, + size_t params_len); + +int SSL_set_quic_tls_early_data_enabled(SSL *s, int enabled); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/x509.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/x509.h index 0f2353c821aa9b..5e9c548c48d65b 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/x509.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/x509.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/x509.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -40,6 +40,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -162,16 +165,24 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) # define X509_FILETYPE_ASN1 2 # define X509_FILETYPE_DEFAULT 3 -# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 -# define X509v3_KU_NON_REPUDIATION 0x0040 -# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 -# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 -# define X509v3_KU_KEY_AGREEMENT 0x0008 -# define X509v3_KU_KEY_CERT_SIGN 0x0004 -# define X509v3_KU_CRL_SIGN 0x0002 -# define X509v3_KU_ENCIPHER_ONLY 0x0001 -# define X509v3_KU_DECIPHER_ONLY 0x8000 -# define X509v3_KU_UNDEF 0xffff +/*- + * : + * The KeyUsage BITSTRING is treated as a little-endian integer, hence bit `0` + * is 0x80, while bit `7` is 0x01 (the LSB of the integer value), bit `8` is + * then the MSB of the second octet, or 0x8000. + */ +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 /* (0) */ +# define X509v3_KU_NON_REPUDIATION 0x0040 /* (1) */ +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 /* (2) */ +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 /* (3) */ +# define X509v3_KU_KEY_AGREEMENT 0x0008 /* (4) */ +# define X509v3_KU_KEY_CERT_SIGN 0x0004 /* (5) */ +# define X509v3_KU_CRL_SIGN 0x0002 /* (6) */ +# define X509v3_KU_ENCIPHER_ONLY 0x0001 /* (7) */ +# define X509v3_KU_DECIPHER_ONLY 0x8000 /* (8) */ +# ifndef OPENSSL_NO_DEPRECATED_3_4 +# define X509v3_KU_UNDEF 0xffff /* vestigial, not used */ +# endif struct X509_algor_st { ASN1_OBJECT *algorithm; @@ -462,7 +473,12 @@ typedef struct PBKDF2PARAM_st { X509_ALGOR *prf; } PBKDF2PARAM; -#ifndef OPENSSL_NO_SCRYPT +typedef struct { + X509_ALGOR *keyDerivationFunc; + X509_ALGOR *messageAuthScheme; +} PBMAC1PARAM; + +# ifndef OPENSSL_NO_SCRYPT typedef struct SCRYPT_PARAMS_st { ASN1_OCTET_STRING *salt; ASN1_INTEGER *costParameter; @@ -470,7 +486,7 @@ typedef struct SCRYPT_PARAMS_st { ASN1_INTEGER *parallelizationParameter; ASN1_INTEGER *keyLength; } SCRYPT_PARAMS; -#endif +# endif #ifdef __cplusplus } @@ -603,6 +619,8 @@ EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); # endif @@ -651,6 +669,8 @@ EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); DECLARE_ASN1_DUP_FUNCTION(X509) @@ -884,12 +904,12 @@ int X509_REQ_get_signature_nid(const X509_REQ *req); int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); -EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); int X509_REQ_extension_nid(int nid); int *X509_REQ_get_extension_nids(void); void X509_REQ_set_extension_nids(int *nids); -STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(OSSL_FUTURE_CONST X509_REQ *req); int X509_REQ_add_extensions_nid(X509_REQ *req, const STACK_OF(X509_EXTENSION) *exts, int nid); int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); @@ -950,13 +970,14 @@ X509_REVOKED_get0_extensions(const X509_REVOKED *r); X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); -int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); -int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey); +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); int X509_chain_check_suiteb(int *perror_depth, X509 *x, STACK_OF(X509) *chain, unsigned long flags); int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); @@ -1077,6 +1098,8 @@ X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, X509_EXTENSION *ex, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_extensions(STACK_OF(X509_EXTENSION) **target, + const STACK_OF(X509_EXTENSION) *exts); int X509_get_ext_count(const X509 *x); int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); @@ -1198,9 +1221,10 @@ X509 *X509_find_by_subject(STACK_OF(X509) *sk, const X509_NAME *name); DECLARE_ASN1_FUNCTIONS(PBEPARAM) DECLARE_ASN1_FUNCTIONS(PBE2PARAM) DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) -#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(PBMAC1PARAM) +# ifndef OPENSSL_NO_SCRYPT DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) -#endif +# endif int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, const unsigned char *salt, int saltlen); @@ -1237,6 +1261,7 @@ X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, int prf_nid, int keylen, OSSL_LIB_CTX *libctx); +PBKDF2PARAM *PBMAC1_get1_pbkdf2_param(const X509_ALGOR *macalg); /* PKCS#8 utilities */ DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) @@ -1262,6 +1287,8 @@ int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len); +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, int ptype, void *pval, unsigned char *penc, int penclen); diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/x509_acert.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/x509_acert.h new file mode 100644 index 00000000000000..efae82c8f6b635 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/x509_acert.h @@ -0,0 +1,294 @@ +/* + * WARNING: do not edit! + * Generated by makefile from include/openssl/x509_acert.h.in + * + * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_X509_ACERT_H +# define OPENSSL_X509_ACERT_H +# pragma once + +# include +# include +# include + +typedef struct X509_acert_st X509_ACERT; +typedef struct X509_acert_info_st X509_ACERT_INFO; +typedef struct ossl_object_digest_info_st OSSL_OBJECT_DIGEST_INFO; +typedef struct ossl_issuer_serial_st OSSL_ISSUER_SERIAL; +typedef struct X509_acert_issuer_v2form_st X509_ACERT_ISSUER_V2FORM; + +DECLARE_ASN1_FUNCTIONS(X509_ACERT) +DECLARE_ASN1_DUP_FUNCTION(X509_ACERT) +DECLARE_ASN1_ITEM(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_OBJECT_DIGEST_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_ISSUER_SERIAL) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_ISSUER_V2FORM) + +# ifndef OPENSSL_NO_STDIO +X509_ACERT *d2i_X509_ACERT_fp(FILE *fp, X509_ACERT **acert); +int i2d_X509_ACERT_fp(FILE *fp, const X509_ACERT *acert); +# endif + +DECLARE_PEM_rw(X509_ACERT, X509_ACERT) + +X509_ACERT *d2i_X509_ACERT_bio(BIO *bp, X509_ACERT **acert); +int i2d_X509_ACERT_bio(BIO *bp, const X509_ACERT *acert); + +int X509_ACERT_sign(X509_ACERT *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_ACERT_sign_ctx(X509_ACERT *x, EVP_MD_CTX *ctx); +int X509_ACERT_verify(X509_ACERT *a, EVP_PKEY *r); + +# define X509_ACERT_VERSION_2 1 + +const GENERAL_NAMES *X509_ACERT_get0_holder_entityName(const X509_ACERT *x); +const OSSL_ISSUER_SERIAL *X509_ACERT_get0_holder_baseCertId(const X509_ACERT *x); +const OSSL_OBJECT_DIGEST_INFO * X509_ACERT_get0_holder_digest(const X509_ACERT *x); +const X509_NAME *X509_ACERT_get0_issuerName(const X509_ACERT *x); +long X509_ACERT_get_version(const X509_ACERT *x); +void X509_ACERT_get0_signature(const X509_ACERT *x, + const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_ACERT_get_signature_nid(const X509_ACERT *x); +const X509_ALGOR *X509_ACERT_get0_info_sigalg(const X509_ACERT *x); +const ASN1_INTEGER *X509_ACERT_get0_serialNumber(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notBefore(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notAfter(const X509_ACERT *x); +const ASN1_BIT_STRING *X509_ACERT_get0_issuerUID(const X509_ACERT *x); + +int X509_ACERT_print(BIO *bp, X509_ACERT *x); +int X509_ACERT_print_ex(BIO *bp, X509_ACERT *x, unsigned long nmflags, + unsigned long cflag); + +int X509_ACERT_get_attr_count(const X509_ACERT *x); +int X509_ACERT_get_attr_by_NID(const X509_ACERT *x, int nid, int lastpos); +int X509_ACERT_get_attr_by_OBJ(const X509_ACERT *x, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_ACERT_get_attr(const X509_ACERT *x, int loc); +X509_ATTRIBUTE *X509_ACERT_delete_attr(X509_ACERT *x, int loc); + +void *X509_ACERT_get_ext_d2i(const X509_ACERT *x, int nid, int *crit, int *idx); +int X509_ACERT_add1_ext_i2d(X509_ACERT *x, int nid, void *value, int crit, + unsigned long flags); +const STACK_OF(X509_EXTENSION) *X509_ACERT_get0_extensions(const X509_ACERT *x); + +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY 0 +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY_CERT 1 +# define OSSL_OBJECT_DIGEST_INFO_OTHER 2 /* must not be used in RFC 5755 profile */ +int X509_ACERT_set_version(X509_ACERT *x, long version); +void X509_ACERT_set0_holder_entityName(X509_ACERT *x, GENERAL_NAMES *name); +void X509_ACERT_set0_holder_baseCertId(X509_ACERT *x, OSSL_ISSUER_SERIAL *isss); +void X509_ACERT_set0_holder_digest(X509_ACERT *x, + OSSL_OBJECT_DIGEST_INFO *dinfo); + +int X509_ACERT_add1_attr(X509_ACERT *x, X509_ATTRIBUTE *attr); +int X509_ACERT_add1_attr_by_OBJ(X509_ACERT *x, const ASN1_OBJECT *obj, + int type, const void *bytes, int len); +int X509_ACERT_add1_attr_by_NID(X509_ACERT *x, int nid, int type, + const void *bytes, int len); +int X509_ACERT_add1_attr_by_txt(X509_ACERT *x, const char *attrname, int type, + const unsigned char *bytes, int len); +int X509_ACERT_add_attr_nconf(CONF *conf, const char *section, + X509_ACERT *acert); + +int X509_ACERT_set1_issuerName(X509_ACERT *x, const X509_NAME *name); +int X509_ACERT_set1_serialNumber(X509_ACERT *x, const ASN1_INTEGER *serial); +int X509_ACERT_set1_notBefore(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); +int X509_ACERT_set1_notAfter(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); + +void OSSL_OBJECT_DIGEST_INFO_get0_digest(const OSSL_OBJECT_DIGEST_INFO *o, + int *digestedObjectType, + const X509_ALGOR **digestAlgorithm, + const ASN1_BIT_STRING **digest); + +int OSSL_OBJECT_DIGEST_INFO_set1_digest(OSSL_OBJECT_DIGEST_INFO *o, + int digestedObjectType, + X509_ALGOR *digestAlgorithm, + ASN1_BIT_STRING *digest); + +const X509_NAME *OSSL_ISSUER_SERIAL_get0_issuer(const OSSL_ISSUER_SERIAL *isss); +const ASN1_INTEGER *OSSL_ISSUER_SERIAL_get0_serial(const OSSL_ISSUER_SERIAL *isss); +const ASN1_BIT_STRING *OSSL_ISSUER_SERIAL_get0_issuerUID(const OSSL_ISSUER_SERIAL *isss); + +int OSSL_ISSUER_SERIAL_set1_issuer(OSSL_ISSUER_SERIAL *isss, + const X509_NAME *issuer); +int OSSL_ISSUER_SERIAL_set1_serial(OSSL_ISSUER_SERIAL *isss, + const ASN1_INTEGER *serial); +int OSSL_ISSUER_SERIAL_set1_issuerUID(OSSL_ISSUER_SERIAL *isss, + const ASN1_BIT_STRING *uid); + +# define OSSL_IETFAS_OCTETS 0 +# define OSSL_IETFAS_OID 1 +# define OSSL_IETFAS_STRING 2 + +typedef struct OSSL_IETF_ATTR_SYNTAX_VALUE_st OSSL_IETF_ATTR_SYNTAX_VALUE; +typedef struct OSSL_IETF_ATTR_SYNTAX_st OSSL_IETF_ATTR_SYNTAX; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_value(sk, idx) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new(cmp) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_null() ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (n)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete(sk, i) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (i))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete_ptr(sk, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_pop(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_shift(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_shift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk),ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), (idx)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set(sk, idx, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_set(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), pnum) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_dup(sk) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_copyfunc_type(copyfunc), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set_cmp_func(sk, cmp) ((sk_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) + + +DECLARE_ASN1_ITEM(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX) + +const GENERAL_NAMES * +OSSL_IETF_ATTR_SYNTAX_get0_policyAuthority(const OSSL_IETF_ATTR_SYNTAX *a); +void OSSL_IETF_ATTR_SYNTAX_set0_policyAuthority(OSSL_IETF_ATTR_SYNTAX *a, + GENERAL_NAMES *names); + +int OSSL_IETF_ATTR_SYNTAX_get_value_num(const OSSL_IETF_ATTR_SYNTAX *a); +void *OSSL_IETF_ATTR_SYNTAX_get0_value(const OSSL_IETF_ATTR_SYNTAX *a, + int ind, int *type); +int OSSL_IETF_ATTR_SYNTAX_add1_value(OSSL_IETF_ATTR_SYNTAX *a, int type, + void *data); +int OSSL_IETF_ATTR_SYNTAX_print(BIO *bp, OSSL_IETF_ATTR_SYNTAX *a, int indent); + +struct TARGET_CERT_st { + OSSL_ISSUER_SERIAL *targetCertificate; + GENERAL_NAME *targetName; + OSSL_OBJECT_DIGEST_INFO *certDigestInfo; +}; + +typedef struct TARGET_CERT_st OSSL_TARGET_CERT; + +# define OSSL_TGT_TARGET_NAME 0 +# define OSSL_TGT_TARGET_GROUP 1 +# define OSSL_TGT_TARGET_CERT 2 + +typedef struct TARGET_st { + int type; + union { + GENERAL_NAME *targetName; + GENERAL_NAME *targetGroup; + OSSL_TARGET_CERT *targetCert; + } choice; +} OSSL_TARGET; + +typedef STACK_OF(OSSL_TARGET) OSSL_TARGETS; +typedef STACK_OF(OSSL_TARGETS) OSSL_TARGETING_INFORMATION; + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGET, OSSL_TARGET, OSSL_TARGET) +#define sk_OSSL_TARGET_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_value(sk, idx) ((OSSL_TARGET *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGET_sk_type(sk), (idx))) +#define sk_OSSL_TARGET_new(cmp) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new(ossl_check_OSSL_TARGET_compfunc_type(cmp))) +#define sk_OSSL_TARGET_new_null() ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGET_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGET_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGET_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGET_sk_type(sk), (n)) +#define sk_OSSL_TARGET_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_delete(sk, i) ((OSSL_TARGET *)OPENSSL_sk_delete(ossl_check_OSSL_TARGET_sk_type(sk), (i))) +#define sk_OSSL_TARGET_delete_ptr(sk, ptr) ((OSSL_TARGET *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_pop(sk) ((OSSL_TARGET *)OPENSSL_sk_pop(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_shift(sk) ((OSSL_TARGET *)OPENSSL_sk_shift(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGET_sk_type(sk),ossl_check_OSSL_TARGET_freefunc_type(freefunc)) +#define sk_OSSL_TARGET_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), (idx)) +#define sk_OSSL_TARGET_set(sk, idx, ptr) ((OSSL_TARGET *)OPENSSL_sk_set(ossl_check_OSSL_TARGET_sk_type(sk), (idx), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), pnum) +#define sk_OSSL_TARGET_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_dup(sk) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_copyfunc_type(copyfunc), ossl_check_OSSL_TARGET_freefunc_type(freefunc))) +#define sk_OSSL_TARGET_set_cmp_func(sk, cmp) ((sk_OSSL_TARGET_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGETS, OSSL_TARGETS, OSSL_TARGETS) +#define sk_OSSL_TARGETS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_value(sk, idx) ((OSSL_TARGETS *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGETS_sk_type(sk), (idx))) +#define sk_OSSL_TARGETS_new(cmp) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new(ossl_check_OSSL_TARGETS_compfunc_type(cmp))) +#define sk_OSSL_TARGETS_new_null() ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGETS_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGETS_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGETS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGETS_sk_type(sk), (n)) +#define sk_OSSL_TARGETS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_delete(sk, i) ((OSSL_TARGETS *)OPENSSL_sk_delete(ossl_check_OSSL_TARGETS_sk_type(sk), (i))) +#define sk_OSSL_TARGETS_delete_ptr(sk, ptr) ((OSSL_TARGETS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_pop(sk) ((OSSL_TARGETS *)OPENSSL_sk_pop(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_shift(sk) ((OSSL_TARGETS *)OPENSSL_sk_shift(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGETS_sk_type(sk),ossl_check_OSSL_TARGETS_freefunc_type(freefunc)) +#define sk_OSSL_TARGETS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), (idx)) +#define sk_OSSL_TARGETS_set(sk, idx, ptr) ((OSSL_TARGETS *)OPENSSL_sk_set(ossl_check_OSSL_TARGETS_sk_type(sk), (idx), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), pnum) +#define sk_OSSL_TARGETS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_dup(sk) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_copyfunc_type(copyfunc), ossl_check_OSSL_TARGETS_freefunc_type(freefunc))) +#define sk_OSSL_TARGETS_set_cmp_func(sk, cmp) ((sk_OSSL_TARGETS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_compfunc_type(cmp))) + + +DECLARE_ASN1_FUNCTIONS(OSSL_TARGET) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETS) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETING_INFORMATION) + +typedef STACK_OF(OSSL_ISSUER_SERIAL) OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL) +#define sk_OSSL_ISSUER_SERIAL_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_value(sk, idx) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_value(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), (idx))) +#define sk_OSSL_ISSUER_SERIAL_new(cmp) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) +#define sk_OSSL_ISSUER_SERIAL_new_null() ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ISSUER_SERIAL_new_reserve(cmp, n) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp), (n))) +#define sk_OSSL_ISSUER_SERIAL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (n)) +#define sk_OSSL_ISSUER_SERIAL_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_delete(sk, i) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (i))) +#define sk_OSSL_ISSUER_SERIAL_delete_ptr(sk, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_pop(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_pop(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_shift(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_shift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk),ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc)) +#define sk_OSSL_ISSUER_SERIAL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), (idx)) +#define sk_OSSL_ISSUER_SERIAL_set(sk, idx, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_set(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (idx), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), pnum) +#define sk_OSSL_ISSUER_SERIAL_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_dup(sk) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_copyfunc_type(copyfunc), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc))) +#define sk_OSSL_ISSUER_SERIAL_set_cmp_func(sk, cmp) ((sk_OSSL_ISSUER_SERIAL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) + + +#endif diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/x509_vfy.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/x509_vfy.h index f571187265cfc9..f08a134b17b7db 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/x509_vfy.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/x509_vfy.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/x509_vfy.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -411,6 +411,7 @@ X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ # define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 # define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 # define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +# define X509_V_ERR_RPK_UNTRUSTED 95 /* Certificate verify flags */ # ifndef OPENSSL_NO_DEPRECATED_1_1_0 @@ -491,71 +492,72 @@ int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); X509_STORE *X509_STORE_new(void); -void X509_STORE_free(X509_STORE *v); -int X509_STORE_lock(X509_STORE *ctx); -int X509_STORE_unlock(X509_STORE *ctx); -int X509_STORE_up_ref(X509_STORE *v); -STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *v); -STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *st); -STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get1_objects(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, const X509_NAME *nm); STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, const X509_NAME *nm); -int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); -int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); -int X509_STORE_set_trust(X509_STORE *ctx, int trust); -int X509_STORE_set1_param(X509_STORE *ctx, const X509_VERIFY_PARAM *pm); -X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *ctx); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); -void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); #define X509_STORE_set_verify_func(ctx, func) \ X509_STORE_set_verify((ctx),(func)) void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, X509_STORE_CTX_verify_fn verify); -X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *ctx); -void X509_STORE_set_verify_cb(X509_STORE *ctx, +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, X509_STORE_CTX_verify_cb verify_cb); # define X509_STORE_set_verify_cb_func(ctx,func) \ X509_STORE_set_verify_cb((ctx),(func)) -X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *ctx); -void X509_STORE_set_get_issuer(X509_STORE *ctx, +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, X509_STORE_CTX_get_issuer_fn get_issuer); -X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *ctx); -void X509_STORE_set_check_issued(X509_STORE *ctx, +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, X509_STORE_CTX_check_issued_fn check_issued); -X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *ctx); -void X509_STORE_set_check_revocation(X509_STORE *ctx, +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, X509_STORE_CTX_check_revocation_fn check_revocation); X509_STORE_CTX_check_revocation_fn - X509_STORE_get_check_revocation(const X509_STORE *ctx); -void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, X509_STORE_CTX_get_crl_fn get_crl); -X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *ctx); -void X509_STORE_set_check_crl(X509_STORE *ctx, +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, X509_STORE_CTX_check_crl_fn check_crl); -X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *ctx); -void X509_STORE_set_cert_crl(X509_STORE *ctx, +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, X509_STORE_CTX_cert_crl_fn cert_crl); -X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *ctx); -void X509_STORE_set_check_policy(X509_STORE *ctx, +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, X509_STORE_CTX_check_policy_fn check_policy); -X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *ctx); -void X509_STORE_set_lookup_certs(X509_STORE *ctx, +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, X509_STORE_CTX_lookup_certs_fn lookup_certs); -X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *ctx); -void X509_STORE_set_lookup_crls(X509_STORE *ctx, +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, X509_STORE_CTX_lookup_crls_fn lookup_crls); #define X509_STORE_set_lookup_crls_cb(ctx, func) \ X509_STORE_set_lookup_crls((ctx), (func)) -X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *ctx); -void X509_STORE_set_cleanup(X509_STORE *ctx, +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, X509_STORE_CTX_cleanup_fn cleanup); -X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); #define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) -int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); -void *X509_STORE_get_ex_data(const X509_STORE *ctx, int idx); +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); X509_STORE_CTX *X509_STORE_CTX_new(void); @@ -565,11 +567,14 @@ int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); void X509_STORE_CTX_free(X509_STORE_CTX *ctx); int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY* rpk); void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, @@ -579,6 +584,8 @@ X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); @@ -600,7 +607,7 @@ X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); # define X509_STORE_get1_crl X509_STORE_CTX_get1_crls #endif -X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); X509_LOOKUP_METHOD *X509_LOOKUP_file(void); X509_LOOKUP_METHOD *X509_LOOKUP_store(void); @@ -685,8 +692,8 @@ X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( const X509_LOOKUP_METHOD *method); -int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); -int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, @@ -730,23 +737,21 @@ void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); -int X509_STORE_load_file(X509_STORE *ctx, const char *file); -int X509_STORE_load_path(X509_STORE *ctx, const char *path); -int X509_STORE_load_store(X509_STORE *ctx, const char *store); -int X509_STORE_load_locations(X509_STORE *ctx, - const char *file, - const char *dir); -int X509_STORE_set_default_paths(X509_STORE *ctx); +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); -int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file, +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_store_ex(X509_STORE *ctx, const char *store, +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file, - const char *dir, OSSL_LIB_CTX *libctx, - const char *propq); -int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OSSL_LIB_CTX *libctx, - const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); #define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) @@ -764,6 +769,7 @@ X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); @@ -773,6 +779,8 @@ int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); @@ -804,6 +812,7 @@ int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, unsigned long flags); unsigned long X509_VERIFY_PARAM_get_flags(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_get_purpose(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/x509v3.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/x509v3.h index ed08a546f9813d..362ce3fb4387f7 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/x509v3.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/x509v3.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/x509v3.h.in * - * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -146,6 +149,11 @@ typedef struct BASIC_CONSTRAINTS_st { ASN1_INTEGER *pathlen; } BASIC_CONSTRAINTS; +typedef struct OSSL_BASIC_ATTR_CONSTRAINTS_st { + int authority; + ASN1_INTEGER *pathlen; +} OSSL_BASIC_ATTR_CONSTRAINTS; + typedef struct PKEY_USAGE_PERIOD_st { ASN1_GENERALIZEDTIME *notBefore; ASN1_GENERALIZEDTIME *notAfter; @@ -198,6 +206,8 @@ typedef struct ACCESS_DESCRIPTION_st { GENERAL_NAME *location; } ACCESS_DESCRIPTION; +int GENERAL_NAME_set1_X509_NAME(GENERAL_NAME **tgt, const X509_NAME *src); + SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) #define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) #define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) @@ -294,6 +304,7 @@ typedef struct DIST_POINT_NAME_st { /* If relativename then this contains the full distribution point name */ X509_NAME *dpname; } DIST_POINT_NAME; +DECLARE_ASN1_DUP_FUNCTION(DIST_POINT_NAME) /* All existing reasons */ # define CRLDP_ALL_REASONS 0x807f @@ -659,15 +670,16 @@ struct ISSUING_DIST_POINT_st { # define EXFLAG_SAN_CRITICAL 0x80000 # define EXFLAG_NO_FINGERPRINT 0x100000 -# define KU_DIGITAL_SIGNATURE 0x0080 -# define KU_NON_REPUDIATION 0x0040 -# define KU_KEY_ENCIPHERMENT 0x0020 -# define KU_DATA_ENCIPHERMENT 0x0010 -# define KU_KEY_AGREEMENT 0x0008 -# define KU_KEY_CERT_SIGN 0x0004 -# define KU_CRL_SIGN 0x0002 -# define KU_ENCIPHER_ONLY 0x0001 -# define KU_DECIPHER_ONLY 0x8000 +/* https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3 */ +# define KU_DIGITAL_SIGNATURE X509v3_KU_DIGITAL_SIGNATURE +# define KU_NON_REPUDIATION X509v3_KU_NON_REPUDIATION +# define KU_KEY_ENCIPHERMENT X509v3_KU_KEY_ENCIPHERMENT +# define KU_DATA_ENCIPHERMENT X509v3_KU_DATA_ENCIPHERMENT +# define KU_KEY_AGREEMENT X509v3_KU_KEY_AGREEMENT +# define KU_KEY_CERT_SIGN X509v3_KU_KEY_CERT_SIGN +# define KU_CRL_SIGN X509v3_KU_CRL_SIGN +# define KU_ENCIPHER_ONLY X509v3_KU_ENCIPHER_ONLY +# define KU_DECIPHER_ONLY X509v3_KU_DECIPHER_ONLY # define NS_SSL_CLIENT 0x80 # define NS_SSL_SERVER 0x40 @@ -729,7 +741,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) #define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) - +# define X509_PURPOSE_DEFAULT_ANY 0 # define X509_PURPOSE_SSL_CLIENT 1 # define X509_PURPOSE_SSL_SERVER 2 # define X509_PURPOSE_NS_SSL_SERVER 3 @@ -739,9 +751,10 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509_PURPOSE_ANY 7 # define X509_PURPOSE_OCSP_HELPER 8 # define X509_PURPOSE_TIMESTAMP_SIGN 9 +# define X509_PURPOSE_CODE_SIGN 10 # define X509_PURPOSE_MIN 1 -# define X509_PURPOSE_MAX 9 +# define X509_PURPOSE_MAX 10 /* Flags for X509V3_EXT_print() */ @@ -767,6 +780,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509V3_ADD_SILENT 0x10 DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) +DECLARE_ASN1_FUNCTIONS(OSSL_BASIC_ATTR_CONSTRAINTS) DECLARE_ASN1_FUNCTIONS(SXNET) DECLARE_ASN1_FUNCTIONS(SXNETID) @@ -976,7 +990,6 @@ int X509V3_extensions_print(BIO *out, const char *title, int X509_check_ca(X509 *x); int X509_check_purpose(X509 *x, int id, int ca); int X509_supported_extension(X509_EXTENSION *ex); -int X509_PURPOSE_set(int *p, int purpose); int X509_check_issued(X509 *issuer, X509 *subject); int X509_check_akid(const X509 *issuer, const AUTHORITY_KEYID *akid); void X509_set_proxy_flag(X509 *x); @@ -992,22 +1005,26 @@ const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); int X509_PURPOSE_get_count(void); -X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_unused_id(OSSL_LIB_CTX *libctx); int X509_PURPOSE_get_by_sname(const char *sname); int X509_PURPOSE_get_by_id(int id); int X509_PURPOSE_add(int id, int trust, int flags, int (*ck) (const X509_PURPOSE *, const X509 *, int), const char *name, const char *sname, void *arg); +void X509_PURPOSE_cleanup(void); + +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_id(const X509_PURPOSE *); char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); -void X509_PURPOSE_cleanup(void); -int X509_PURPOSE_get_id(const X509_PURPOSE *); +int X509_PURPOSE_set(int *p, int purpose); STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); + /* Flags for X509_check_* functions */ /* @@ -1444,6 +1461,507 @@ const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( void PROFESSION_INFO_set0_registrationNumber( PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); +int OSSL_GENERAL_NAMES_print(BIO *out, GENERAL_NAMES *gens, int indent); + +typedef STACK_OF(X509_ATTRIBUTE) OSSL_ATTRIBUTES_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTES_SYNTAX) + +typedef STACK_OF(USERNOTICE) OSSL_USER_NOTICE_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_USER_NOTICE_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(USERNOTICE, USERNOTICE, USERNOTICE) +#define sk_USERNOTICE_num(sk) OPENSSL_sk_num(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_value(sk, idx) ((USERNOTICE *)OPENSSL_sk_value(ossl_check_const_USERNOTICE_sk_type(sk), (idx))) +#define sk_USERNOTICE_new(cmp) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new(ossl_check_USERNOTICE_compfunc_type(cmp))) +#define sk_USERNOTICE_new_null() ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_null()) +#define sk_USERNOTICE_new_reserve(cmp, n) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_reserve(ossl_check_USERNOTICE_compfunc_type(cmp), (n))) +#define sk_USERNOTICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_USERNOTICE_sk_type(sk), (n)) +#define sk_USERNOTICE_free(sk) OPENSSL_sk_free(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_zero(sk) OPENSSL_sk_zero(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_delete(sk, i) ((USERNOTICE *)OPENSSL_sk_delete(ossl_check_USERNOTICE_sk_type(sk), (i))) +#define sk_USERNOTICE_delete_ptr(sk, ptr) ((USERNOTICE *)OPENSSL_sk_delete_ptr(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_pop(sk) ((USERNOTICE *)OPENSSL_sk_pop(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_shift(sk) ((USERNOTICE *)OPENSSL_sk_shift(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_USERNOTICE_sk_type(sk),ossl_check_USERNOTICE_freefunc_type(freefunc)) +#define sk_USERNOTICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), (idx)) +#define sk_USERNOTICE_set(sk, idx, ptr) ((USERNOTICE *)OPENSSL_sk_set(ossl_check_USERNOTICE_sk_type(sk), (idx), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), pnum) +#define sk_USERNOTICE_sort(sk) OPENSSL_sk_sort(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_dup(sk) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_dup(ossl_check_const_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_deep_copy(ossl_check_const_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_copyfunc_type(copyfunc), ossl_check_USERNOTICE_freefunc_type(freefunc))) +#define sk_USERNOTICE_set_cmp_func(sk, cmp) ((sk_USERNOTICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_compfunc_type(cmp))) + + +typedef struct OSSL_ROLE_SPEC_CERT_ID_st { + GENERAL_NAME *roleName; + GENERAL_NAME *roleCertIssuer; + ASN1_INTEGER *roleCertSerialNumber; + GENERAL_NAMES *roleCertLocator; +} OSSL_ROLE_SPEC_CERT_ID; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID) +#define sk_OSSL_ROLE_SPEC_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_value(sk, idx) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_value(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new(cmp) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_null() ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_reserve(cmp, n) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp), (n))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (n)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete(sk, i) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (i))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete_ptr(sk, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_pop(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_shift(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_shift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk),ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), (idx)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set(sk, idx, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_set(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), pnum) +#define sk_OSSL_ROLE_SPEC_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_dup(sk) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_copyfunc_type(copyfunc), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set_cmp_func(sk, cmp) ((sk_OSSL_ROLE_SPEC_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) + + +typedef STACK_OF(OSSL_ROLE_SPEC_CERT_ID) OSSL_ROLE_SPEC_CERT_ID_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID_SYNTAX) +typedef struct OSSL_HASH_st { + X509_ALGOR *algorithmIdentifier; + ASN1_BIT_STRING *hashValue; +} OSSL_HASH; + +typedef struct OSSL_INFO_SYNTAX_POINTER_st { + GENERAL_NAMES *name; + OSSL_HASH *hash; +} OSSL_INFO_SYNTAX_POINTER; + +# define OSSL_INFO_SYNTAX_TYPE_CONTENT 0 +# define OSSL_INFO_SYNTAX_TYPE_POINTER 1 + +typedef struct OSSL_INFO_SYNTAX_st { + int type; + union { + ASN1_STRING *content; + OSSL_INFO_SYNTAX_POINTER *pointer; + } choice; +} OSSL_INFO_SYNTAX; + +typedef struct OSSL_PRIVILEGE_POLICY_ID_st { + ASN1_OBJECT *privilegePolicy; + OSSL_INFO_SYNTAX *privPolSyntax; +} OSSL_PRIVILEGE_POLICY_ID; + +typedef struct OSSL_ATTRIBUTE_DESCRIPTOR_st { + ASN1_OBJECT *identifier; + ASN1_STRING *attributeSyntax; + ASN1_UTF8STRING *name; + ASN1_UTF8STRING *description; + OSSL_PRIVILEGE_POLICY_ID *dominationRule; +} OSSL_ATTRIBUTE_DESCRIPTOR; + +DECLARE_ASN1_FUNCTIONS(OSSL_HASH) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX_POINTER) +DECLARE_ASN1_FUNCTIONS(OSSL_PRIVILEGE_POLICY_ID) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_DESCRIPTOR) + +typedef struct OSSL_TIME_SPEC_ABSOLUTE_st { + ASN1_GENERALIZEDTIME *startTime; + ASN1_GENERALIZEDTIME *endTime; +} OSSL_TIME_SPEC_ABSOLUTE; + +typedef struct OSSL_DAY_TIME_st { + ASN1_INTEGER *hour; + ASN1_INTEGER *minute; + ASN1_INTEGER *second; +} OSSL_DAY_TIME; + +typedef struct OSSL_DAY_TIME_BAND_st { + OSSL_DAY_TIME *startDayTime; + OSSL_DAY_TIME *endDayTime; +} OSSL_DAY_TIME_BAND; + +# define OSSL_NAMED_DAY_TYPE_INT 0 +# define OSSL_NAMED_DAY_TYPE_BIT 1 +# define OSSL_NAMED_DAY_INT_SUN 1 +# define OSSL_NAMED_DAY_INT_MON 2 +# define OSSL_NAMED_DAY_INT_TUE 3 +# define OSSL_NAMED_DAY_INT_WED 4 +# define OSSL_NAMED_DAY_INT_THU 5 +# define OSSL_NAMED_DAY_INT_FRI 6 +# define OSSL_NAMED_DAY_INT_SAT 7 +# define OSSL_NAMED_DAY_BIT_SUN 0 +# define OSSL_NAMED_DAY_BIT_MON 1 +# define OSSL_NAMED_DAY_BIT_TUE 2 +# define OSSL_NAMED_DAY_BIT_WED 3 +# define OSSL_NAMED_DAY_BIT_THU 4 +# define OSSL_NAMED_DAY_BIT_FRI 5 +# define OSSL_NAMED_DAY_BIT_SAT 6 + +typedef struct OSSL_NAMED_DAY_st { + int type; + union { + ASN1_INTEGER *intNamedDays; + ASN1_BIT_STRING *bitNamedDays; + } choice; +} OSSL_NAMED_DAY; + +# define OSSL_TIME_SPEC_X_DAY_OF_FIRST 0 +# define OSSL_TIME_SPEC_X_DAY_OF_SECOND 1 +# define OSSL_TIME_SPEC_X_DAY_OF_THIRD 2 +# define OSSL_TIME_SPEC_X_DAY_OF_FOURTH 3 +# define OSSL_TIME_SPEC_X_DAY_OF_FIFTH 4 + +typedef struct OSSL_TIME_SPEC_X_DAY_OF_st { + int type; + union { + OSSL_NAMED_DAY *first; + OSSL_NAMED_DAY *second; + OSSL_NAMED_DAY *third; + OSSL_NAMED_DAY *fourth; + OSSL_NAMED_DAY *fifth; + } choice; +} OSSL_TIME_SPEC_X_DAY_OF; + +# define OSSL_TIME_SPEC_DAY_TYPE_INT 0 +# define OSSL_TIME_SPEC_DAY_TYPE_BIT 1 +# define OSSL_TIME_SPEC_DAY_TYPE_DAY_OF 2 +# define OSSL_TIME_SPEC_DAY_BIT_SUN 0 +# define OSSL_TIME_SPEC_DAY_BIT_MON 1 +# define OSSL_TIME_SPEC_DAY_BIT_TUE 2 +# define OSSL_TIME_SPEC_DAY_BIT_WED 3 +# define OSSL_TIME_SPEC_DAY_BIT_THU 4 +# define OSSL_TIME_SPEC_DAY_BIT_FRI 5 +# define OSSL_TIME_SPEC_DAY_BIT_SAT 6 +# define OSSL_TIME_SPEC_DAY_INT_SUN 1 +# define OSSL_TIME_SPEC_DAY_INT_MON 2 +# define OSSL_TIME_SPEC_DAY_INT_TUE 3 +# define OSSL_TIME_SPEC_DAY_INT_WED 4 +# define OSSL_TIME_SPEC_DAY_INT_THU 5 +# define OSSL_TIME_SPEC_DAY_INT_FRI 6 +# define OSSL_TIME_SPEC_DAY_INT_SAT 7 + +typedef struct OSSL_TIME_SPEC_DAY_st { + int type; + union { + STACK_OF(ASN1_INTEGER) *intDay; + ASN1_BIT_STRING *bitDay; + OSSL_TIME_SPEC_X_DAY_OF *dayOf; + } choice; +} OSSL_TIME_SPEC_DAY; + +# define OSSL_TIME_SPEC_WEEKS_TYPE_ALL 0 +# define OSSL_TIME_SPEC_WEEKS_TYPE_INT 1 +# define OSSL_TIME_SPEC_WEEKS_TYPE_BIT 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_1 0 +# define OSSL_TIME_SPEC_BIT_WEEKS_2 1 +# define OSSL_TIME_SPEC_BIT_WEEKS_3 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_4 3 +# define OSSL_TIME_SPEC_BIT_WEEKS_5 4 + +typedef struct OSSL_TIME_SPEC_WEEKS_st { + int type; + union { + ASN1_NULL *allWeeks; + STACK_OF(ASN1_INTEGER) *intWeek; + ASN1_BIT_STRING *bitWeek; + } choice; +} OSSL_TIME_SPEC_WEEKS; + +# define OSSL_TIME_SPEC_MONTH_TYPE_ALL 0 +# define OSSL_TIME_SPEC_MONTH_TYPE_INT 1 +# define OSSL_TIME_SPEC_MONTH_TYPE_BIT 2 +# define OSSL_TIME_SPEC_INT_MONTH_JAN 1 +# define OSSL_TIME_SPEC_INT_MONTH_FEB 2 +# define OSSL_TIME_SPEC_INT_MONTH_MAR 3 +# define OSSL_TIME_SPEC_INT_MONTH_APR 4 +# define OSSL_TIME_SPEC_INT_MONTH_MAY 5 +# define OSSL_TIME_SPEC_INT_MONTH_JUN 6 +# define OSSL_TIME_SPEC_INT_MONTH_JUL 7 +# define OSSL_TIME_SPEC_INT_MONTH_AUG 8 +# define OSSL_TIME_SPEC_INT_MONTH_SEP 9 +# define OSSL_TIME_SPEC_INT_MONTH_OCT 10 +# define OSSL_TIME_SPEC_INT_MONTH_NOV 11 +# define OSSL_TIME_SPEC_INT_MONTH_DEC 12 +# define OSSL_TIME_SPEC_BIT_MONTH_JAN 0 +# define OSSL_TIME_SPEC_BIT_MONTH_FEB 1 +# define OSSL_TIME_SPEC_BIT_MONTH_MAR 2 +# define OSSL_TIME_SPEC_BIT_MONTH_APR 3 +# define OSSL_TIME_SPEC_BIT_MONTH_MAY 4 +# define OSSL_TIME_SPEC_BIT_MONTH_JUN 5 +# define OSSL_TIME_SPEC_BIT_MONTH_JUL 6 +# define OSSL_TIME_SPEC_BIT_MONTH_AUG 7 +# define OSSL_TIME_SPEC_BIT_MONTH_SEP 8 +# define OSSL_TIME_SPEC_BIT_MONTH_OCT 9 +# define OSSL_TIME_SPEC_BIT_MONTH_NOV 10 +# define OSSL_TIME_SPEC_BIT_MONTH_DEC 11 + +typedef struct OSSL_TIME_SPEC_MONTH_st { + int type; + union { + ASN1_NULL *allMonths; + STACK_OF(ASN1_INTEGER) *intMonth; + ASN1_BIT_STRING *bitMonth; + } choice; +} OSSL_TIME_SPEC_MONTH; + +typedef struct OSSL_TIME_PERIOD_st { + STACK_OF(OSSL_DAY_TIME_BAND) *timesOfDay; + OSSL_TIME_SPEC_DAY *days; + OSSL_TIME_SPEC_WEEKS *weeks; + OSSL_TIME_SPEC_MONTH *months; + STACK_OF(ASN1_INTEGER) *years; +} OSSL_TIME_PERIOD; + +# define OSSL_TIME_SPEC_TIME_TYPE_ABSOLUTE 0 +# define OSSL_TIME_SPEC_TIME_TYPE_PERIODIC 1 + +typedef struct OSSL_TIME_SPEC_TIME_st { + int type; + union { + OSSL_TIME_SPEC_ABSOLUTE *absolute; + STACK_OF(OSSL_TIME_PERIOD) *periodic; + } choice; +} OSSL_TIME_SPEC_TIME; + +typedef struct OSSL_TIME_SPEC_st { + OSSL_TIME_SPEC_TIME *time; + ASN1_BOOLEAN notThisTime; + ASN1_INTEGER *timeZone; +} OSSL_TIME_SPEC; + +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME_BAND) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_WEEKS) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_MONTH) +DECLARE_ASN1_FUNCTIONS(OSSL_NAMED_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_X_DAY_OF) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_ABSOLUTE) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_PERIOD) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TIME_PERIOD, OSSL_TIME_PERIOD, OSSL_TIME_PERIOD) +#define sk_OSSL_TIME_PERIOD_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_value(sk, idx) ((OSSL_TIME_PERIOD *)OPENSSL_sk_value(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), (idx))) +#define sk_OSSL_TIME_PERIOD_new(cmp) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) +#define sk_OSSL_TIME_PERIOD_new_null() ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TIME_PERIOD_new_reserve(cmp, n) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp), (n))) +#define sk_OSSL_TIME_PERIOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (n)) +#define sk_OSSL_TIME_PERIOD_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_delete(sk, i) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (i))) +#define sk_OSSL_TIME_PERIOD_delete_ptr(sk, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_pop(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_pop(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_shift(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_shift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk),ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc)) +#define sk_OSSL_TIME_PERIOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), (idx)) +#define sk_OSSL_TIME_PERIOD_set(sk, idx, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_set(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (idx), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), pnum) +#define sk_OSSL_TIME_PERIOD_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_dup(sk) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_copyfunc_type(copyfunc), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc))) +#define sk_OSSL_TIME_PERIOD_set_cmp_func(sk, cmp) ((sk_OSSL_TIME_PERIOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND) +#define sk_OSSL_DAY_TIME_BAND_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_value(sk, idx) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_value(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), (idx))) +#define sk_OSSL_DAY_TIME_BAND_new(cmp) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) +#define sk_OSSL_DAY_TIME_BAND_new_null() ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_null()) +#define sk_OSSL_DAY_TIME_BAND_new_reserve(cmp, n) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp), (n))) +#define sk_OSSL_DAY_TIME_BAND_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (n)) +#define sk_OSSL_DAY_TIME_BAND_free(sk) OPENSSL_sk_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_delete(sk, i) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (i))) +#define sk_OSSL_DAY_TIME_BAND_delete_ptr(sk, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_pop(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_pop(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_shift(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_shift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk),ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc)) +#define sk_OSSL_DAY_TIME_BAND_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), (idx)) +#define sk_OSSL_DAY_TIME_BAND_set(sk, idx, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_set(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (idx), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), pnum) +#define sk_OSSL_DAY_TIME_BAND_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_dup(sk) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_dup(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_copyfunc_type(copyfunc), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc))) +#define sk_OSSL_DAY_TIME_BAND_set_cmp_func(sk, cmp) ((sk_OSSL_DAY_TIME_BAND_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) + + +/* Attribute Type and Value */ +typedef struct atav_st { + ASN1_OBJECT *type; + ASN1_TYPE *value; +} OSSL_ATAV; + +typedef struct ATTRIBUTE_TYPE_MAPPING_st { + ASN1_OBJECT *local; + ASN1_OBJECT *remote; +} OSSL_ATTRIBUTE_TYPE_MAPPING; + +typedef struct ATTRIBUTE_VALUE_MAPPING_st { + OSSL_ATAV *local; + OSSL_ATAV *remote; +} OSSL_ATTRIBUTE_VALUE_MAPPING; + +# define OSSL_ATTR_MAP_TYPE 0 +# define OSSL_ATTR_MAP_VALUE 1 + +typedef struct ATTRIBUTE_MAPPING_st { + int type; + union { + OSSL_ATTRIBUTE_TYPE_MAPPING *typeMappings; + OSSL_ATTRIBUTE_VALUE_MAPPING *typeValueMappings; + } choice; +} OSSL_ATTRIBUTE_MAPPING; + +typedef STACK_OF(OSSL_ATTRIBUTE_MAPPING) OSSL_ATTRIBUTE_MAPPINGS; +DECLARE_ASN1_FUNCTIONS(OSSL_ATAV) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_TYPE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_VALUE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPINGS) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING) +#define sk_OSSL_ATTRIBUTE_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_value(sk, idx) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_value(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new(cmp) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_null() ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_reserve(cmp, n) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp), (n))) +#define sk_OSSL_ATTRIBUTE_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (n)) +#define sk_OSSL_ATTRIBUTE_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete(sk, i) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (i))) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete_ptr(sk, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_pop(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_shift(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_shift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk),ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc)) +#define sk_OSSL_ATTRIBUTE_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), (idx)) +#define sk_OSSL_ATTRIBUTE_MAPPING_set(sk, idx, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_set(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), pnum) +#define sk_OSSL_ATTRIBUTE_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_dup(sk) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_copyfunc_type(copyfunc), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc))) +#define sk_OSSL_ATTRIBUTE_MAPPING_set_cmp_func(sk, cmp) ((sk_OSSL_ATTRIBUTE_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) + + +# define OSSL_AAA_ATTRIBUTE_TYPE 0 +# define OSSL_AAA_ATTRIBUTE_VALUES 1 + +typedef struct ALLOWED_ATTRIBUTES_CHOICE_st { + int type; + union { + ASN1_OBJECT *attributeType; + X509_ATTRIBUTE *attributeTypeandValues; + } choice; +} OSSL_ALLOWED_ATTRIBUTES_CHOICE; + +typedef struct ALLOWED_ATTRIBUTES_ITEM_st { + STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *attributes; + GENERAL_NAME *holderDomain; +} OSSL_ALLOWED_ATTRIBUTES_ITEM; + +typedef STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) OSSL_ALLOWED_ATTRIBUTES_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_CHOICE) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_ITEM) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) + + +typedef struct AA_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + int dp_reasons; + ASN1_BOOLEAN indirectCRL; + ASN1_BOOLEAN containsUserAttributeCerts; + ASN1_BOOLEAN containsAACerts; + ASN1_BOOLEAN containsSOAPublicKeyCerts; +} OSSL_AA_DIST_POINT; + +DECLARE_ASN1_FUNCTIONS(OSSL_AA_DIST_POINT) + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/progs.h b/deps/openssl/config/archs/VC-WIN32/asm/include/progs.h index be55f61503d405..1b62ec37dec130 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/include/progs.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/progs.h @@ -56,6 +56,7 @@ extern int s_client_main(int argc, char *argv[]); extern int s_server_main(int argc, char *argv[]); extern int s_time_main(int argc, char *argv[]); extern int sess_id_main(int argc, char *argv[]); +extern int skeyutl_main(int argc, char *argv[]); extern int smime_main(int argc, char *argv[]); extern int speed_main(int argc, char *argv[]); extern int spkac_main(int argc, char *argv[]); @@ -110,6 +111,7 @@ extern const OPTIONS s_client_options[]; extern const OPTIONS s_server_options[]; extern const OPTIONS s_time_options[]; extern const OPTIONS sess_id_options[]; +extern const OPTIONS skeyutl_options[]; extern const OPTIONS smime_options[]; extern const OPTIONS speed_options[]; extern const OPTIONS spkac_options[]; diff --git a/deps/openssl/config/archs/VC-WIN32/asm/openssl-cl.gypi b/deps/openssl/config/archs/VC-WIN32/asm/openssl-cl.gypi index b0f6b78e59e0d9..a1873a8a0c797b 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/openssl-cl.gypi +++ b/deps/openssl/config/archs/VC-WIN32/asm/openssl-cl.gypi @@ -87,6 +87,7 @@ 'openssl/apps/s_server.c', 'openssl/apps/s_time.c', 'openssl/apps/sess_id.c', + 'openssl/apps/skeyutl.c', 'openssl/apps/smime.c', 'openssl/apps/speed.c', 'openssl/apps/spkac.c', @@ -102,12 +103,14 @@ 'openssl/apps/lib/app_rand.c', 'openssl/apps/lib/app_x509.c', 'openssl/apps/lib/apps.c', + 'openssl/apps/lib/apps_opt_printf.c', 'openssl/apps/lib/apps_ui.c', 'openssl/apps/lib/columns.c', 'openssl/apps/lib/engine.c', 'openssl/apps/lib/engine_loader.c', 'openssl/apps/lib/fmt.c', 'openssl/apps/lib/http_server.c', + 'openssl/apps/lib/log.c', 'openssl/apps/lib/names.c', 'openssl/apps/lib/opt.c', 'openssl/apps/lib/s_cb.c', diff --git a/deps/openssl/config/archs/VC-WIN32/asm/openssl-fips.gypi b/deps/openssl/config/archs/VC-WIN32/asm/openssl-fips.gypi index 44bc4f894fb1ee..708da9a70f6db5 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/openssl-fips.gypi +++ b/deps/openssl/config/archs/VC-WIN32/asm/openssl-fips.gypi @@ -96,14 +96,15 @@ 'openssl/crypto/evp/kem.c', 'openssl/crypto/evp/keymgmt_lib.c', 'openssl/crypto/evp/keymgmt_meth.c', - 'openssl/crypto/evp/m_sigver.c', 'openssl/crypto/evp/mac_lib.c', 'openssl/crypto/evp/mac_meth.c', 'openssl/crypto/evp/p_lib.c', 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -111,6 +112,8 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', @@ -140,6 +143,16 @@ 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -148,6 +161,7 @@ 'openssl/crypto/modes/ofb128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/property/defn_cache.c', 'openssl/crypto/property/property.c', 'openssl/crypto/property/property_parse.c', @@ -176,7 +190,23 @@ 'openssl/crypto/sha/sha256.c', 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/stack/stack.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/providers/common/der/der_rsa_sig.c', 'openssl/providers/common/bio_prov.c', 'openssl/providers/common/capabilities.c', @@ -185,6 +215,7 @@ 'openssl/providers/common/provider_util.c', 'openssl/providers/common/securitycheck.c', 'openssl/providers/common/securitycheck_fips.c', + 'openssl/providers/fips/fipsindicator.c', 'openssl/providers/fips/fipsprov.c', 'openssl/providers/fips/self_test.c', 'openssl/providers/fips/self_test_kats.c', @@ -222,6 +253,8 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -229,29 +262,39 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/cmac_prov.c', 'openssl/providers/implementations/macs/gmac_prov.c', 'openssl/providers/implementations/macs/hmac_prov.c', 'openssl/providers/implementations/macs/kmac_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', + 'openssl/providers/implementations/rands/fips_crng_test.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/signature/dsa_sig.c', 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -262,7 +305,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/fips/fips_entry.c', ], @@ -280,6 +323,7 @@ './config/archs/VC-WIN32/asm/crypto/des/crypt586.asm', './config/archs/VC-WIN32/asm/crypto/des/des-586.asm', './config/archs/VC-WIN32/asm/crypto/ec/ecp_nistz256-x86.asm', + './config/archs/VC-WIN32/asm/crypto/params_idx.c', './config/archs/VC-WIN32/asm/crypto/x86cpuid.asm', './config/archs/VC-WIN32/asm/crypto/md5/md5-586.asm', './config/archs/VC-WIN32/asm/crypto/modes/ghash-x86.asm', @@ -296,7 +340,9 @@ './config/archs/VC-WIN32/asm/providers/common/der/der_dsa_gen.c', './config/archs/VC-WIN32/asm/providers/common/der/der_ec_gen.c', './config/archs/VC-WIN32/asm/providers/common/der/der_ecx_gen.c', + './config/archs/VC-WIN32/asm/providers/common/der/der_ml_dsa_gen.c', './config/archs/VC-WIN32/asm/providers/common/der/der_rsa_gen.c', + './config/archs/VC-WIN32/asm/providers/common/der/der_slh_dsa_gen.c', './config/archs/VC-WIN32/asm/providers/common/der/der_wrap_gen.c', ], diff --git a/deps/openssl/config/archs/VC-WIN32/asm/openssl.gypi b/deps/openssl/config/archs/VC-WIN32/asm/openssl.gypi index 0fb4d6ad1a813d..9db3574e8a98bb 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/openssl.gypi +++ b/deps/openssl/config/archs/VC-WIN32/asm/openssl.gypi @@ -7,14 +7,15 @@ 'openssl/ssl/d1_srtp.c', 'openssl/ssl/methods.c', 'openssl/ssl/pqueue.c', + 'openssl/ssl/priority_queue.c', 'openssl/ssl/s3_enc.c', 'openssl/ssl/s3_lib.c', 'openssl/ssl/s3_msg.c', 'openssl/ssl/ssl_asn1.c', 'openssl/ssl/ssl_cert.c', + 'openssl/ssl/ssl_cert_comp.c', 'openssl/ssl/ssl_ciph.c', 'openssl/ssl/ssl_conf.c', - 'openssl/ssl/ssl_err.c', 'openssl/ssl/ssl_err_legacy.c', 'openssl/ssl/ssl_init.c', 'openssl/ssl/ssl_lib.c', @@ -31,12 +32,60 @@ 'openssl/ssl/tls13_enc.c', 'openssl/ssl/tls_depr.c', 'openssl/ssl/tls_srp.c', - 'openssl/ssl/record/dtls1_bitmap.c', + 'openssl/ssl/quic/cc_newreno.c', + 'openssl/ssl/quic/json_enc.c', + 'openssl/ssl/quic/qlog.c', + 'openssl/ssl/quic/qlog_event_helpers.c', + 'openssl/ssl/quic/quic_ackm.c', + 'openssl/ssl/quic/quic_cfq.c', + 'openssl/ssl/quic/quic_channel.c', + 'openssl/ssl/quic/quic_demux.c', + 'openssl/ssl/quic/quic_engine.c', + 'openssl/ssl/quic/quic_fc.c', + 'openssl/ssl/quic/quic_fifd.c', + 'openssl/ssl/quic/quic_impl.c', + 'openssl/ssl/quic/quic_lcidm.c', + 'openssl/ssl/quic/quic_method.c', + 'openssl/ssl/quic/quic_obj.c', + 'openssl/ssl/quic/quic_port.c', + 'openssl/ssl/quic/quic_rcidm.c', + 'openssl/ssl/quic/quic_reactor.c', + 'openssl/ssl/quic/quic_reactor_wait_ctx.c', + 'openssl/ssl/quic/quic_record_rx.c', + 'openssl/ssl/quic/quic_record_shared.c', + 'openssl/ssl/quic/quic_record_tx.c', + 'openssl/ssl/quic/quic_record_util.c', + 'openssl/ssl/quic/quic_rstream.c', + 'openssl/ssl/quic/quic_rx_depack.c', + 'openssl/ssl/quic/quic_sf_list.c', + 'openssl/ssl/quic/quic_srt_gen.c', + 'openssl/ssl/quic/quic_srtm.c', + 'openssl/ssl/quic/quic_sstream.c', + 'openssl/ssl/quic/quic_statm.c', + 'openssl/ssl/quic/quic_stream_map.c', + 'openssl/ssl/quic/quic_thread_assist.c', + 'openssl/ssl/quic/quic_tls.c', + 'openssl/ssl/quic/quic_tls_api.c', + 'openssl/ssl/quic/quic_trace.c', + 'openssl/ssl/quic/quic_tserver.c', + 'openssl/ssl/quic/quic_txp.c', + 'openssl/ssl/quic/quic_txpim.c', + 'openssl/ssl/quic/quic_types.c', + 'openssl/ssl/quic/quic_wire.c', + 'openssl/ssl/quic/quic_wire_pkt.c', + 'openssl/ssl/quic/uint_set.c', 'openssl/ssl/record/rec_layer_d1.c', 'openssl/ssl/record/rec_layer_s3.c', - 'openssl/ssl/record/ssl3_buffer.c', - 'openssl/ssl/record/ssl3_record.c', - 'openssl/ssl/record/ssl3_record_tls13.c', + 'openssl/ssl/record/methods/dtls_meth.c', + 'openssl/ssl/record/methods/ssl3_meth.c', + 'openssl/ssl/record/methods/tls13_meth.c', + 'openssl/ssl/record/methods/tls1_meth.c', + 'openssl/ssl/record/methods/tls_common.c', + 'openssl/ssl/record/methods/tls_multib.c', + 'openssl/ssl/record/methods/tlsany_meth.c', + 'openssl/ssl/rio/poll_builder.c', + 'openssl/ssl/rio/poll_immediate.c', + 'openssl/ssl/rio/rio_notifier.c', 'openssl/ssl/statem/extensions.c', 'openssl/ssl/statem/extensions_clnt.c', 'openssl/ssl/statem/extensions_cust.c', @@ -147,6 +196,7 @@ 'openssl/crypto/bio/bss_conn.c', 'openssl/crypto/bio/bss_core.c', 'openssl/crypto/bio/bss_dgram.c', + 'openssl/crypto/bio/bss_dgram_pair.c', 'openssl/crypto/bio/bss_fd.c', 'openssl/crypto/bio/bss_file.c', 'openssl/crypto/bio/bss_log.c', @@ -202,6 +252,7 @@ 'openssl/crypto/cmp/cmp_client.c', 'openssl/crypto/cmp/cmp_ctx.c', 'openssl/crypto/cmp/cmp_err.c', + 'openssl/crypto/cmp/cmp_genm.c', 'openssl/crypto/cmp/cmp_hdr.c', 'openssl/crypto/cmp/cmp_http.c', 'openssl/crypto/cmp/cmp_msg.c', @@ -376,7 +427,9 @@ 'openssl/crypto/err/err_all.c', 'openssl/crypto/err/err_all_legacy.c', 'openssl/crypto/err/err_blocks.c', + 'openssl/crypto/err/err_mark.c', 'openssl/crypto/err/err_prn.c', + 'openssl/crypto/err/err_save.c', 'openssl/crypto/ess/ess_asn1.c', 'openssl/crypto/ess/ess_err.c', 'openssl/crypto/ess/ess_lib.c', @@ -459,7 +512,9 @@ 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -467,7 +522,11 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', + 'openssl/crypto/hpke/hpke.c', + 'openssl/crypto/hpke/hpke_util.c', 'openssl/crypto/http/http_client.c', 'openssl/crypto/http/http_err.c', 'openssl/crypto/http/http_lib.c', @@ -481,6 +540,7 @@ 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', 'openssl/crypto/bsearch.c', + 'openssl/crypto/comp_methods.c', 'openssl/crypto/context.c', 'openssl/crypto/core_algorithm.c', 'openssl/crypto/core_fetch.c', @@ -490,10 +550,13 @@ 'openssl/crypto/cryptlib.c', 'openssl/crypto/ctype.c', 'openssl/crypto/cversion.c', + 'openssl/crypto/defaults.c', 'openssl/crypto/der_writer.c', + 'openssl/crypto/deterministic_nonce.c', 'openssl/crypto/ebcdic.c', 'openssl/crypto/ex_data.c', 'openssl/crypto/getenv.c', + 'openssl/crypto/indicator_core.c', 'openssl/crypto/info.c', 'openssl/crypto/init.c', 'openssl/crypto/initthread.c', @@ -517,12 +580,16 @@ 'openssl/crypto/provider_core.c', 'openssl/crypto/provider_predefined.c', 'openssl/crypto/punycode.c', + 'openssl/crypto/quic_vlint.c', 'openssl/crypto/self_test_core.c', + 'openssl/crypto/sleep.c', 'openssl/crypto/sparse_array.c', + 'openssl/crypto/ssl_err.c', 'openssl/crypto/threads_lib.c', 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', 'openssl/crypto/trace.c', 'openssl/crypto/uid.c', 'openssl/crypto/md4/md4_dgst.c', @@ -532,6 +599,15 @@ 'openssl/crypto/md5/md5_sha1.c', 'openssl/crypto/mdc2/mdc2_one.c', 'openssl/crypto/mdc2/mdc2dgst.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -543,6 +619,7 @@ 'openssl/crypto/modes/siv128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/objects/o_names.c', 'openssl/crypto/objects/obj_dat.c', 'openssl/crypto/objects/obj_err.c', @@ -606,6 +683,7 @@ 'openssl/crypto/rand/rand_lib.c', 'openssl/crypto/rand/rand_meth.c', 'openssl/crypto/rand/rand_pool.c', + 'openssl/crypto/rand/rand_uniform.c', 'openssl/crypto/rand/randfile.c', 'openssl/crypto/rc2/rc2_cbc.c', 'openssl/crypto/rc2/rc2_ecb.c', @@ -652,6 +730,16 @@ 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', 'openssl/crypto/siphash/siphash.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/sm2/sm2_crypt.c', 'openssl/crypto/sm2/sm2_err.c', 'openssl/crypto/sm2/sm2_key.c', @@ -669,6 +757,12 @@ 'openssl/crypto/store/store_register.c', 'openssl/crypto/store/store_result.c', 'openssl/crypto/store/store_strings.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/crypto/ts/ts_asn1.c', 'openssl/crypto/ts/ts_conf.c', 'openssl/crypto/ts/ts_err.c', @@ -697,14 +791,22 @@ 'openssl/crypto/x509/pcy_map.c', 'openssl/crypto/x509/pcy_node.c', 'openssl/crypto/x509/pcy_tree.c', + 'openssl/crypto/x509/t_acert.c', 'openssl/crypto/x509/t_crl.c', 'openssl/crypto/x509/t_req.c', 'openssl/crypto/x509/t_x509.c', + 'openssl/crypto/x509/v3_aaa.c', + 'openssl/crypto/x509/v3_ac_tgt.c', 'openssl/crypto/x509/v3_addr.c', 'openssl/crypto/x509/v3_admis.c', 'openssl/crypto/x509/v3_akeya.c', 'openssl/crypto/x509/v3_akid.c', 'openssl/crypto/x509/v3_asid.c', + 'openssl/crypto/x509/v3_attrdesc.c', + 'openssl/crypto/x509/v3_attrmap.c', + 'openssl/crypto/x509/v3_audit_id.c', + 'openssl/crypto/x509/v3_authattid.c', + 'openssl/crypto/x509/v3_battcons.c', 'openssl/crypto/x509/v3_bcons.c', 'openssl/crypto/x509/v3_bitst.c', 'openssl/crypto/x509/v3_conf.c', @@ -713,12 +815,17 @@ 'openssl/crypto/x509/v3_enum.c', 'openssl/crypto/x509/v3_extku.c', 'openssl/crypto/x509/v3_genn.c', + 'openssl/crypto/x509/v3_group_ac.c', 'openssl/crypto/x509/v3_ia5.c', + 'openssl/crypto/x509/v3_ind_iss.c', 'openssl/crypto/x509/v3_info.c', 'openssl/crypto/x509/v3_int.c', + 'openssl/crypto/x509/v3_iobo.c', 'openssl/crypto/x509/v3_ist.c', 'openssl/crypto/x509/v3_lib.c', 'openssl/crypto/x509/v3_ncons.c', + 'openssl/crypto/x509/v3_no_ass.c', + 'openssl/crypto/x509/v3_no_rev_avail.c', 'openssl/crypto/x509/v3_pci.c', 'openssl/crypto/x509/v3_pcia.c', 'openssl/crypto/x509/v3_pcons.c', @@ -726,13 +833,20 @@ 'openssl/crypto/x509/v3_pmaps.c', 'openssl/crypto/x509/v3_prn.c', 'openssl/crypto/x509/v3_purp.c', + 'openssl/crypto/x509/v3_rolespec.c', 'openssl/crypto/x509/v3_san.c', + 'openssl/crypto/x509/v3_sda.c', + 'openssl/crypto/x509/v3_single_use.c', 'openssl/crypto/x509/v3_skid.c', + 'openssl/crypto/x509/v3_soa_id.c', 'openssl/crypto/x509/v3_sxnet.c', + 'openssl/crypto/x509/v3_timespec.c', 'openssl/crypto/x509/v3_tlsf.c', + 'openssl/crypto/x509/v3_usernotice.c', 'openssl/crypto/x509/v3_utf8.c', 'openssl/crypto/x509/v3_utl.c', 'openssl/crypto/x509/v3err.c', + 'openssl/crypto/x509/x509_acert.c', 'openssl/crypto/x509/x509_att.c', 'openssl/crypto/x509/x509_cmp.c', 'openssl/crypto/x509/x509_d2.c', @@ -750,6 +864,7 @@ 'openssl/crypto/x509/x509_v3.c', 'openssl/crypto/x509/x509_vfy.c', 'openssl/crypto/x509/x509_vpm.c', + 'openssl/crypto/x509/x509aset.c', 'openssl/crypto/x509/x509cset.c', 'openssl/crypto/x509/x509name.c', 'openssl/crypto/x509/x509rset.c', @@ -759,6 +874,7 @@ 'openssl/crypto/x509/x_attrib.c', 'openssl/crypto/x509/x_crl.c', 'openssl/crypto/x509/x_exten.c', + 'openssl/crypto/x509/x_ietfatt.c', 'openssl/crypto/x509/x_name.c', 'openssl/crypto/x509/x_pubkey.c', 'openssl/crypto/x509/x_req.c', @@ -790,6 +906,9 @@ 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c', 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', @@ -814,7 +933,13 @@ 'openssl/providers/implementations/ciphers/cipher_cts.c', 'openssl/providers/implementations/ciphers/cipher_null.c', 'openssl/providers/implementations/ciphers/cipher_sm4.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm_hw.c', 'openssl/providers/implementations/ciphers/cipher_sm4_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts_hw.c', 'openssl/providers/implementations/ciphers/cipher_tdes.c', 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', 'openssl/providers/implementations/ciphers/cipher_tdes_default.c', @@ -843,11 +968,16 @@ 'openssl/providers/implementations/encode_decode/encode_key2ms.c', 'openssl/providers/implementations/encode_decode/encode_key2text.c', 'openssl/providers/implementations/encode_decode/endecoder_common.c', + 'openssl/providers/implementations/encode_decode/ml_common_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_dsa_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_kem_codecs.c', 'openssl/providers/implementations/exchange/dh_exch.c', 'openssl/providers/implementations/exchange/ecdh_exch.c', 'openssl/providers/implementations/exchange/ecx_exch.c', 'openssl/providers/implementations/exchange/kdf_exch.c', + 'openssl/providers/implementations/kdfs/argon2.c', 'openssl/providers/implementations/kdfs/hkdf.c', + 'openssl/providers/implementations/kdfs/hmacdrbg_kdf.c', 'openssl/providers/implementations/kdfs/kbkdf.c', 'openssl/providers/implementations/kdfs/krb5kdf.c', 'openssl/providers/implementations/kdfs/pbkdf2.c', @@ -858,6 +988,11 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ec_kem.c', + 'openssl/providers/implementations/kem/ecx_kem.c', + 'openssl/providers/implementations/kem/kem_util.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -865,7 +1000,11 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/blake2b_mac.c', 'openssl/providers/implementations/macs/blake2s_mac.c', 'openssl/providers/implementations/macs/cmac_prov.c', @@ -874,12 +1013,12 @@ 'openssl/providers/implementations/macs/kmac_prov.c', 'openssl/providers/implementations/macs/poly1305_prov.c', 'openssl/providers/implementations/macs/siphash_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', 'openssl/providers/implementations/rands/seed_src.c', + 'openssl/providers/implementations/rands/seed_src_jitter.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/rands/seeding/rand_cpu_x86.c', 'openssl/providers/implementations/rands/seeding/rand_tsc.c', @@ -889,17 +1028,24 @@ 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', 'openssl/providers/implementations/signature/sm2_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', 'openssl/providers/implementations/storemgmt/file_store.c', 'openssl/providers/implementations/storemgmt/file_store_any2obj.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/providers/implementations/storemgmt/winstore_store.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -910,7 +1056,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/implementations/ciphers/cipher_blowfish.c', 'openssl/providers/implementations/ciphers/cipher_blowfish_hw.c', 'openssl/providers/implementations/ciphers/cipher_cast5.c', @@ -935,6 +1081,7 @@ 'openssl/providers/implementations/digests/ripemd_prov.c', 'openssl/providers/implementations/digests/wp_prov.c', 'openssl/providers/implementations/kdfs/pbkdf1.c', + 'openssl/providers/implementations/kdfs/pvkkdf.c', 'openssl/providers/prov_running.c', 'openssl/providers/legacyprov.c', ], @@ -952,6 +1099,7 @@ './config/archs/VC-WIN32/asm/crypto/des/crypt586.asm', './config/archs/VC-WIN32/asm/crypto/des/des-586.asm', './config/archs/VC-WIN32/asm/crypto/ec/ecp_nistz256-x86.asm', + './config/archs/VC-WIN32/asm/crypto/params_idx.c', './config/archs/VC-WIN32/asm/crypto/x86cpuid.asm', './config/archs/VC-WIN32/asm/crypto/md5/md5-586.asm', './config/archs/VC-WIN32/asm/crypto/modes/ghash-x86.asm', @@ -968,7 +1116,9 @@ './config/archs/VC-WIN32/asm/providers/common/der/der_dsa_gen.c', './config/archs/VC-WIN32/asm/providers/common/der/der_ec_gen.c', './config/archs/VC-WIN32/asm/providers/common/der/der_ecx_gen.c', + './config/archs/VC-WIN32/asm/providers/common/der/der_ml_dsa_gen.c', './config/archs/VC-WIN32/asm/providers/common/der/der_rsa_gen.c', + './config/archs/VC-WIN32/asm/providers/common/der/der_slh_dsa_gen.c', './config/archs/VC-WIN32/asm/providers/common/der/der_wrap_gen.c', ], 'openssl_defines_VC-WIN32': [ diff --git a/deps/openssl/config/archs/VC-WIN32/asm/providers/common/der/der_ml_dsa_gen.c b/deps/openssl/config/archs/VC-WIN32/asm/providers/common/der/der_ml_dsa_gen.c new file mode 100644 index 00000000000000..4a8a113a268578 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/asm/providers/common/der/der_ml_dsa_gen.c @@ -0,0 +1,37 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_ml_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44] = { + DER_OID_V_id_ml_dsa_44 +}; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65] = { + DER_OID_V_id_ml_dsa_65 +}; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87] = { + DER_OID_V_id_ml_dsa_87 +}; + diff --git a/deps/openssl/config/archs/VC-WIN32/asm/providers/common/der/der_slh_dsa_gen.c b/deps/openssl/config/archs/VC-WIN32/asm/providers/common/der/der_slh_dsa_gen.c new file mode 100644 index 00000000000000..1419a9515097dd --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/asm/providers/common/der/der_slh_dsa_gen.c @@ -0,0 +1,100 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_slh_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s] = { + DER_OID_V_id_slh_dsa_sha2_128s +}; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f] = { + DER_OID_V_id_slh_dsa_sha2_128f +}; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s] = { + DER_OID_V_id_slh_dsa_sha2_192s +}; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f] = { + DER_OID_V_id_slh_dsa_sha2_192f +}; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s] = { + DER_OID_V_id_slh_dsa_sha2_256s +}; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f] = { + DER_OID_V_id_slh_dsa_sha2_256f +}; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s] = { + DER_OID_V_id_slh_dsa_shake_128s +}; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f] = { + DER_OID_V_id_slh_dsa_shake_128f +}; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s] = { + DER_OID_V_id_slh_dsa_shake_192s +}; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f] = { + DER_OID_V_id_slh_dsa_shake_192f +}; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s] = { + DER_OID_V_id_slh_dsa_shake_256s +}; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f] = { + DER_OID_V_id_slh_dsa_shake_256f +}; + diff --git a/deps/openssl/config/archs/VC-WIN32/asm/providers/common/include/prov/der_ml_dsa.h b/deps/openssl/config/archs/VC-WIN32/asm/providers/common/include/prov/der_ml_dsa.h new file mode 100644 index 00000000000000..c55f780ab4527c --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/asm/providers/common/include/prov/der_ml_dsa.h @@ -0,0 +1,40 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_ml_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +#define DER_OID_V_id_ml_dsa_44 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x11 +#define DER_OID_SZ_id_ml_dsa_44 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44]; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +#define DER_OID_V_id_ml_dsa_65 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x12 +#define DER_OID_SZ_id_ml_dsa_65 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65]; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +#define DER_OID_V_id_ml_dsa_87 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x13 +#define DER_OID_SZ_id_ml_dsa_87 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87]; + + +int ossl_DER_w_algorithmIdentifier_ML_DSA(WPACKET *pkt, int tag, ML_DSA_KEY *key); diff --git a/deps/openssl/config/archs/VC-WIN32/asm/providers/common/include/prov/der_slh_dsa.h b/deps/openssl/config/archs/VC-WIN32/asm/providers/common/include/prov/der_slh_dsa.h new file mode 100644 index 00000000000000..760f8e7699be72 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/asm/providers/common/include/prov/der_slh_dsa.h @@ -0,0 +1,103 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_slh_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x14 +#define DER_OID_SZ_id_slh_dsa_sha2_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s]; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x15 +#define DER_OID_SZ_id_slh_dsa_sha2_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f]; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x16 +#define DER_OID_SZ_id_slh_dsa_sha2_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s]; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x17 +#define DER_OID_SZ_id_slh_dsa_sha2_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f]; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x18 +#define DER_OID_SZ_id_slh_dsa_sha2_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s]; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x19 +#define DER_OID_SZ_id_slh_dsa_sha2_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f]; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +#define DER_OID_V_id_slh_dsa_shake_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1A +#define DER_OID_SZ_id_slh_dsa_shake_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s]; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +#define DER_OID_V_id_slh_dsa_shake_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1B +#define DER_OID_SZ_id_slh_dsa_shake_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f]; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +#define DER_OID_V_id_slh_dsa_shake_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1C +#define DER_OID_SZ_id_slh_dsa_shake_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s]; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +#define DER_OID_V_id_slh_dsa_shake_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1D +#define DER_OID_SZ_id_slh_dsa_shake_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f]; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +#define DER_OID_V_id_slh_dsa_shake_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1E +#define DER_OID_SZ_id_slh_dsa_shake_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s]; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +#define DER_OID_V_id_slh_dsa_shake_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1F +#define DER_OID_SZ_id_slh_dsa_shake_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f]; + + +int ossl_DER_w_algorithmIdentifier_SLH_DSA(WPACKET *pkt, int tag, SLH_DSA_KEY *key); diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/apps/progs.c b/deps/openssl/config/archs/VC-WIN32/asm_avx2/apps/progs.c index 43cef00799b86e..acc204a3e6e781 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/apps/progs.c +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/apps/progs.c @@ -89,6 +89,7 @@ FUNCTION functions[] = { {FT_general, "s_time", s_time_main, s_time_options, NULL, NULL}, #endif {FT_general, "sess_id", sess_id_main, sess_id_options, NULL, NULL}, + {FT_general, "skeyutl", skeyutl_main, skeyutl_options, NULL, NULL}, {FT_general, "smime", smime_main, smime_options, NULL, NULL}, {FT_general, "speed", speed_main, speed_options, NULL, NULL}, {FT_general, "spkac", spkac_main, spkac_options, NULL, NULL}, @@ -225,9 +226,15 @@ FUNCTION functions[] = { {FT_cipher, "camellia-256-ecb", enc_main, enc_options, NULL}, #endif {FT_cipher, "base64", enc_main, enc_options, NULL}, -#ifdef ZLIB +#ifndef OPENSSL_NO_ZLIB {FT_cipher, "zlib", enc_main, enc_options, NULL}, #endif +#ifndef OPENSSL_NO_BROTLI + {FT_cipher, "brotli", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ZSTD + {FT_cipher, "zstd", enc_main, enc_options, NULL}, +#endif #ifndef OPENSSL_NO_DES {FT_cipher, "des", enc_main, enc_options, NULL}, #endif diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm b/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm index e9d7ebaf5ec8e4..e1133e0ee10d60 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm @@ -19,6 +19,7 @@ our %config = ( "/nologo" ], "AS" => "nasm", + "ASFLAGS" => [], "CC" => "../config/fake_gcc.pl", "CFLAGS" => [ "/W3 /wd4090 /nologo /O2" @@ -29,6 +30,7 @@ our %config = ( "CPPINCLUDES" => [], "CXXFLAGS" => [], "FIPSKEY" => "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813", + "FIPS_VENDOR" => "OpenSSL FIPS Provider", "HASHBANGPERL" => "/usr/bin/env perl", "LD" => "link", "LDFLAGS" => [ @@ -43,7 +45,7 @@ our %config = ( "RANLIB" => "ranlib", "RC" => "rc", "RCFLAGS" => [], - "api" => "30000", + "api" => "30500", "b32" => "1", "b64" => "0", "b64l" => "0", @@ -65,11 +67,13 @@ our %config = ( "doc/build.info", "test/build.info", "engines/build.info", + "exporters/build.info", "crypto/objects/build.info", "crypto/buffer/build.info", "crypto/bio/build.info", "crypto/stack/build.info", "crypto/lhash/build.info", + "crypto/hashtable/build.info", "crypto/rand/build.info", "crypto/evp/build.info", "crypto/asn1/build.info", @@ -87,6 +91,7 @@ our %config = ( "crypto/md5/build.info", "crypto/sha/build.info", "crypto/mdc2/build.info", + "crypto/ml_kem/build.info", "crypto/hmac/build.info", "crypto/ripemd/build.info", "crypto/whrlpool/build.info", @@ -128,11 +133,19 @@ our %config = ( "crypto/cmp/build.info", "crypto/encode_decode/build.info", "crypto/ffc/build.info", + "crypto/hpke/build.info", + "crypto/thread/build.info", + "crypto/ml_dsa/build.info", + "crypto/slh_dsa/build.info", + "ssl/record/build.info", + "ssl/rio/build.info", + "ssl/quic/build.info", "apps/lib/build.info", "providers/common/build.info", "providers/implementations/build.info", "providers/fips/build.info", "doc/man1/build.info", + "ssl/record/methods/build.info", "providers/common/der/build.info", "providers/implementations/digests/build.info", "providers/implementations/ciphers/build.info", @@ -146,6 +159,7 @@ our %config = ( "providers/implementations/encode_decode/build.info", "providers/implementations/storemgmt/build.info", "providers/implementations/kem/build.info", + "providers/implementations/skeymgmt/build.info", "providers/implementations/rands/seeding/build.info" ], "build_metadata" => "", @@ -165,7 +179,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.17", + "full_version" => "3.5.2", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -175,37 +189,51 @@ our %config = ( "major" => "3", "makedep_scheme" => "VC", "makedepcmd" => "\$(CC) /Zs /showIncludes", - "minor" => "0", + "minor" => "5", "openssl_api_defines" => [ - "OPENSSL_CONFIGURED_API=30000" + "OPENSSL_CONFIGURED_API=30500" ], "openssl_feature_defines" => [ "OPENSSL_RAND_SEED_OS", "OPENSSL_THREADS", "OPENSSL_NO_AFALGENG", "OPENSSL_NO_ASAN", + "OPENSSL_NO_BROTLI", + "OPENSSL_NO_BROTLI_DYNAMIC", "OPENSSL_NO_COMP", "OPENSSL_NO_CRYPTO_MDEBUG", "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE", + "OPENSSL_NO_DEMOS", "OPENSSL_NO_DEVCRYPTOENG", "OPENSSL_NO_EC_NISTP_64_GCC_128", "OPENSSL_NO_EGD", "OPENSSL_NO_EXTERNAL_TESTS", + "OPENSSL_NO_FIPS_JITTER", "OPENSSL_NO_FUZZ_AFL", "OPENSSL_NO_FUZZ_LIBFUZZER", + "OPENSSL_NO_H3DEMO", + "OPENSSL_NO_HQINTEROP", + "OPENSSL_NO_JITTER", "OPENSSL_NO_KTLS", "OPENSSL_NO_LOADERENG", "OPENSSL_NO_MD2", "OPENSSL_NO_MSAN", + "OPENSSL_NO_PIE", "OPENSSL_NO_RC5", "OPENSSL_NO_SCTP", "OPENSSL_NO_SSL3", "OPENSSL_NO_SSL3_METHOD", + "OPENSSL_NO_SSLKEYLOG", + "OPENSSL_NO_TFO", "OPENSSL_NO_TRACE", "OPENSSL_NO_UBSAN", "OPENSSL_NO_UNIT_TEST", "OPENSSL_NO_UPLINK", "OPENSSL_NO_WEAK_SSL_CIPHERS", + "OPENSSL_NO_ZLIB", + "OPENSSL_NO_ZLIB_DYNAMIC", + "OPENSSL_NO_ZSTD", + "OPENSSL_NO_ZSTD_DYNAMIC", "OPENSSL_NO_DYNAMIC_ENGINE" ], "openssl_other_defines" => [ @@ -215,11 +243,11 @@ our %config = ( "OPENSSL_SYS_WIN32" ], "openssldir" => "", - "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "17", + "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", + "patch" => "2", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", - "perl_version" => "5.38.2", + "perl_version" => "5.34.0", "perlargv" => [ "no-comp", "no-shared", @@ -249,6 +277,7 @@ our %config = ( "LDLIBS" => undef, "MT" => undef, "MTFLAGS" => undef, + "OBJCOPY" => undef, "OPENSSL_LOCAL_CONFIG_DIR" => undef, "PERL" => undef, "RANLIB" => undef, @@ -268,11 +297,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "1 Jul 2025", + "release_date" => "5 Aug 2025", "shlib_version" => "3", "sourcedir" => ".", "target" => "VC-WIN32", - "version" => "3.0.17" + "version" => "3.5.2" ); our %target = ( "AR" => "lib", @@ -287,7 +316,7 @@ our %target = ( "LDFLAGS" => "/nologo /debug", "MT" => "mt", "MTFLAGS" => "-nologo", - "RANLIB" => "CODE(0x55c13a704328)", + "RANLIB" => "CODE(0x563b017ccb20)", "RC" => "rc", "_conf_fname_int" => [ "Configurations/00-base-templates.conf", @@ -370,6 +399,8 @@ our %target = ( our @disablables = ( "acvp-tests", "afalgeng", + "apps", + "argon2", "aria", "asan", "asm", @@ -380,11 +411,14 @@ our @disablables = ( "autoload-config", "bf", "blake2", + "brotli", + "brotli-dynamic", "buildtest-c++", "bulk", "cached-fetch", "camellia", "capieng", + "winstore", "cast", "chacha", "cmac", @@ -393,11 +427,16 @@ our @disablables = ( "comp", "crypto-mdebug", "ct", + "default-thread-pool", + "demos", + "h3demo", + "hqinterop", "deprecated", "des", "devcryptoeng", "dgram", "dh", + "docs", "dsa", "dso", "dtls", @@ -407,6 +446,7 @@ our @disablables = ( "ec_nistp_64_gcc_128", "ecdh", "ecdsa", + "ecx", "egd", "engine", "err", @@ -414,10 +454,15 @@ our @disablables = ( "filenames", "fips", "fips-securitychecks", + "fips-post", + "fips-jitter", "fuzz-afl", "fuzz-libfuzzer", "gost", + "http", "idea", + "integrity-only-ciphers", + "jitter", "ktls", "legacy", "loadereng", @@ -425,6 +470,8 @@ our @disablables = ( "md2", "md4", "mdc2", + "ml-dsa", + "ml-kem", "module", "msan", "multiblock", @@ -433,10 +480,13 @@ our @disablables = ( "ocsp", "padlockeng", "pic", + "pie", "pinshared", "poly1305", "posix-io", "psk", + "quic", + "unstable-qlog", "rc2", "rc4", "rc5", @@ -450,7 +500,9 @@ our @disablables = ( "shared", "siphash", "siv", + "slh-dsa", "sm2", + "sm2-precomp", "sm3", "sm4", "sock", @@ -461,9 +513,13 @@ our @disablables = ( "ssl-trace", "static-engine", "stdio", + "sslkeylog", "tests", + "tfo", + "thread-pool", "threads", "tls", + "tls-deprecated-ec", "trace", "ts", "ubsan", @@ -474,6 +530,8 @@ our @disablables = ( "whirlpool", "zlib", "zlib-dynamic", + "zstd", + "zstd-dynamic", "ssl3", "ssl3-method", "tls1", @@ -494,33 +552,45 @@ our @disablables_int = ( our %disabled = ( "afalgeng" => "option", "asan" => "default", + "brotli" => "default", + "brotli-dynamic" => "default", "buildtest-c++" => "default", "comp" => "option", "crypto-mdebug" => "default", "crypto-mdebug-backtrace" => "default", + "demos" => "default", "devcryptoeng" => "default", "dynamic-engine" => "cascade", "ec_nistp_64_gcc_128" => "default", "egd" => "default", "external-tests" => "default", + "fips-jitter" => "default", "fuzz-afl" => "default", "fuzz-libfuzzer" => "default", + "h3demo" => "default", + "hqinterop" => "default", + "jitter" => "default", "ktls" => "default", "loadereng" => "cascade", "md2" => "default", "msan" => "default", + "pie" => "default", "rc5" => "default", "sctp" => "default", "shared" => "option", "ssl3" => "default", "ssl3-method" => "default", + "sslkeylog" => "default", + "tfo" => "default", "trace" => "default", "ubsan" => "default", "unit-test" => "default", "uplink" => "cascade", "weak-ssl-ciphers" => "default", "zlib" => "default", - "zlib-dynamic" => "default" + "zlib-dynamic" => "default", + "zstd" => "default", + "zstd-dynamic" => "default" ); our %withargs = (); our %unified_info = ( @@ -746,6 +816,11 @@ our %unified_info = ( "pod" => "1" } }, + "doc/man1/openssl-skeyutl.pod" => { + "doc/man1/openssl-skeyutl.pod.in" => { + "pod" => "1" + } + }, "doc/man1/openssl-smime.pod" => { "doc/man1/openssl-smime.pod.in" => { "pod" => "1" @@ -803,6 +878,21 @@ our %unified_info = ( } }, "generate" => { + "exporters/OpenSSLConfig.cmake" => { + "exporter" => "cmake" + }, + "exporters/OpenSSLConfigVersion.cmake" => { + "exporter" => "cmake" + }, + "exporters/libcrypto.pc" => { + "exporter" => "pkg-config" + }, + "exporters/libssl.pc" => { + "exporter" => "pkg-config" + }, + "exporters/openssl.pc" => { + "exporter" => "pkg-config" + }, "include/openssl/configuration.h" => { "skip" => "1" } @@ -823,6 +913,9 @@ our %unified_info = ( "providers/liblegacy.a" => { "noinst" => "1" }, + "providers/libtemplate.a" => { + "noinst" => "1" + }, "test/libtestutil.a" => { "has_main" => "1", "noinst" => "1" @@ -840,6 +933,9 @@ our %unified_info = ( } }, "programs" => { + "fuzz/acert-test" => { + "noinst" => "1" + }, "fuzz/asn1-test" => { "noinst" => "1" }, @@ -870,9 +966,60 @@ our %unified_info = ( "fuzz/ct-test" => { "noinst" => "1" }, + "fuzz/decoder-test" => { + "noinst" => "1" + }, + "fuzz/dtlsclient-test" => { + "noinst" => "1" + }, + "fuzz/dtlsserver-test" => { + "noinst" => "1" + }, + "fuzz/hashtable-test" => { + "noinst" => "1" + }, + "fuzz/ml-dsa-test" => { + "noinst" => "1" + }, + "fuzz/ml-kem-test" => { + "noinst" => "1" + }, + "fuzz/pem-test" => { + "noinst" => "1" + }, + "fuzz/provider-test" => { + "noinst" => "1" + }, + "fuzz/punycode-test" => { + "noinst" => "1" + }, + "fuzz/quic-client-test" => { + "noinst" => "1" + }, + "fuzz/quic-lcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-rcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-server-test" => { + "noinst" => "1" + }, + "fuzz/quic-srtm-test" => { + "noinst" => "1" + }, "fuzz/server-test" => { "noinst" => "1" }, + "fuzz/slh-dsa-test" => { + "noinst" => "1" + }, + "fuzz/smime-test" => { + "noinst" => "1" + }, + "fuzz/v3name-test" => { + "noinst" => "1" + }, "fuzz/x509-test" => { "noinst" => "1" }, @@ -924,18 +1071,30 @@ our %unified_info = ( "test/bftest" => { "noinst" => "1" }, + "test/bio_addr_test" => { + "noinst" => "1" + }, + "test/bio_base64_test" => { + "noinst" => "1" + }, "test/bio_callback_test" => { "noinst" => "1" }, "test/bio_core_test" => { "noinst" => "1" }, + "test/bio_dgram_test" => { + "noinst" => "1" + }, "test/bio_enc_test" => { "noinst" => "1" }, "test/bio_memleak_test" => { "noinst" => "1" }, + "test/bio_meth_test" => { + "noinst" => "1" + }, "test/bio_prefix_text" => { "noinst" => "1" }, @@ -945,6 +1104,9 @@ our %unified_info = ( "test/bio_readbuffer_test" => { "noinst" => "1" }, + "test/bio_tfo_test" => { + "noinst" => "1" + }, "test/bioprinttest" => { "noinst" => "1" }, @@ -954,6 +1116,9 @@ our %unified_info = ( "test/bntest" => { "noinst" => "1" }, + "test/build_wincrypt_test" => { + "noinst" => "1" + }, "test/buildtest_c_aes" => { "noinst" => "1" }, @@ -969,6 +1134,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => { "noinst" => "1" }, + "test/buildtest_c_byteorder" => { + "noinst" => "1" + }, "test/buildtest_c_camellia" => { "noinst" => "1" }, @@ -993,9 +1161,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => { "noinst" => "1" }, - "test/buildtest_c_core_names" => { - "noinst" => "1" - }, "test/buildtest_c_core_object" => { "noinst" => "1" }, @@ -1020,6 +1185,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => { "noinst" => "1" }, + "test/buildtest_c_e_ostime" => { + "noinst" => "1" + }, "test/buildtest_c_ebcdic" => { "noinst" => "1" }, @@ -1047,12 +1215,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => { "noinst" => "1" }, + "test/buildtest_c_hpke" => { + "noinst" => "1" + }, "test/buildtest_c_http" => { "noinst" => "1" }, "test/buildtest_c_idea" => { "noinst" => "1" }, + "test/buildtest_c_indicator" => { + "noinst" => "1" + }, "test/buildtest_c_kdf" => { "noinst" => "1" }, @@ -1068,6 +1242,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => { "noinst" => "1" }, + "test/buildtest_c_ml_kem" => { + "noinst" => "1" + }, "test/buildtest_c_modes" => { "noinst" => "1" }, @@ -1098,6 +1275,9 @@ our %unified_info = ( "test/buildtest_c_provider" => { "noinst" => "1" }, + "test/buildtest_c_quic" => { + "noinst" => "1" + }, "test/buildtest_c_rand" => { "noinst" => "1" }, @@ -1140,6 +1320,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => { "noinst" => "1" }, + "test/buildtest_c_thread" => { + "noinst" => "1" + }, "test/buildtest_c_tls1" => { "noinst" => "1" }, @@ -1155,6 +1338,12 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => { "noinst" => "1" }, + "test/byteorder_test" => { + "noinst" => "1" + }, + "test/ca_internals_test" => { + "noinst" => "1" + }, "test/casttest" => { "noinst" => "1" }, @@ -1239,6 +1428,9 @@ our %unified_info = ( "test/danetest" => { "noinst" => "1" }, + "test/decoder_propq_test" => { + "noinst" => "1" + }, "test/defltfips_test" => { "noinst" => "1" }, @@ -1311,15 +1503,24 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => { "noinst" => "1" }, + "test/evp_pkey_dhkem_test" => { + "noinst" => "1" + }, "test/evp_pkey_dparams_test" => { "noinst" => "1" }, "test/evp_pkey_provided_test" => { "noinst" => "1" }, + "test/evp_skey_test" => { + "noinst" => "1" + }, "test/evp_test" => { "noinst" => "1" }, + "test/evp_xof_test" => { + "noinst" => "1" + }, "test/exdatatest" => { "noinst" => "1" }, @@ -1347,6 +1548,9 @@ our %unified_info = ( "test/hmactest" => { "noinst" => "1" }, + "test/hpke_test" => { + "noinst" => "1" + }, "test/http_test" => { "noinst" => "1" }, @@ -1356,12 +1560,18 @@ our %unified_info = ( "test/igetest" => { "noinst" => "1" }, + "test/json_test" => { + "noinst" => "1" + }, "test/keymgmt_internal_test" => { "noinst" => "1" }, "test/lhash_test" => { "noinst" => "1" }, + "test/list_test" => { + "noinst" => "1" + }, "test/localetest" => { "noinst" => "1" }, @@ -1371,9 +1581,21 @@ our %unified_info = ( "test/mdc2test" => { "noinst" => "1" }, + "test/membio_test" => { + "noinst" => "1" + }, "test/memleaktest" => { "noinst" => "1" }, + "test/ml_dsa_test" => { + "noinst" => "1" + }, + "test/ml_kem_evp_extra_test" => { + "noinst" => "1" + }, + "test/ml_kem_internal_test" => { + "noinst" => "1" + }, "test/modes_internal_test" => { "noinst" => "1" }, @@ -1392,6 +1614,9 @@ our %unified_info = ( "test/packettest" => { "noinst" => "1" }, + "test/pairwise_fail_test" => { + "noinst" => "1" + }, "test/param_build_test" => { "noinst" => "1" }, @@ -1416,6 +1641,9 @@ our %unified_info = ( "test/pemtest" => { "noinst" => "1" }, + "test/pkcs12_api_test" => { + "noinst" => "1" + }, "test/pkcs12_format_test" => { "noinst" => "1" }, @@ -1431,6 +1659,9 @@ our %unified_info = ( "test/poly1305_internal_test" => { "noinst" => "1" }, + "test/priority_queue_test" => { + "noinst" => "1" + }, "test/property_test" => { "noinst" => "1" }, @@ -1440,6 +1671,9 @@ our %unified_info = ( "test/provfetchtest" => { "noinst" => "1" }, + "test/provider_default_search_path_test" => { + "noinst" => "1" + }, "test/provider_fallback_test" => { "noinst" => "1" }, @@ -1458,6 +1692,72 @@ our %unified_info = ( "test/punycode_test" => { "noinst" => "1" }, + "test/quic_ackm_test" => { + "noinst" => "1" + }, + "test/quic_cc_test" => { + "noinst" => "1" + }, + "test/quic_cfq_test" => { + "noinst" => "1" + }, + "test/quic_client_test" => { + "noinst" => "1" + }, + "test/quic_fc_test" => { + "noinst" => "1" + }, + "test/quic_fifd_test" => { + "noinst" => "1" + }, + "test/quic_lcidm_test" => { + "noinst" => "1" + }, + "test/quic_multistream_test" => { + "noinst" => "1" + }, + "test/quic_newcid_test" => { + "noinst" => "1" + }, + "test/quic_qlog_test" => { + "noinst" => "1" + }, + "test/quic_radix_test" => { + "noinst" => "1" + }, + "test/quic_rcidm_test" => { + "noinst" => "1" + }, + "test/quic_record_test" => { + "noinst" => "1" + }, + "test/quic_srt_gen_test" => { + "noinst" => "1" + }, + "test/quic_srtm_test" => { + "noinst" => "1" + }, + "test/quic_stream_test" => { + "noinst" => "1" + }, + "test/quic_tserver_test" => { + "noinst" => "1" + }, + "test/quic_txp_test" => { + "noinst" => "1" + }, + "test/quic_txpim_test" => { + "noinst" => "1" + }, + "test/quic_wire_test" => { + "noinst" => "1" + }, + "test/quicapitest" => { + "noinst" => "1" + }, + "test/quicfaultstest" => { + "noinst" => "1" + }, "test/rand_status_test" => { "noinst" => "1" }, @@ -1473,12 +1773,15 @@ our %unified_info = ( "test/rc5test" => { "noinst" => "1" }, - "test/rdrand_sanitytest" => { + "test/rdcpu_sanitytest" => { "noinst" => "1" }, "test/recordlentest" => { "noinst" => "1" }, + "test/rpktest" => { + "noinst" => "1" + }, "test/rsa_complex" => { "noinst" => "1" }, @@ -1491,6 +1794,12 @@ our %unified_info = ( "test/rsa_test" => { "noinst" => "1" }, + "test/rsa_x931_test" => { + "noinst" => "1" + }, + "test/safe_math_test" => { + "noinst" => "1" + }, "test/sanitytest" => { "noinst" => "1" }, @@ -1506,6 +1815,9 @@ our %unified_info = ( "test/siphash_internal_test" => { "noinst" => "1" }, + "test/slh_dsa_test" => { + "noinst" => "1" + }, "test/sm2_internal_test" => { "noinst" => "1" }, @@ -1527,6 +1839,9 @@ our %unified_info = ( "test/ssl_ctx_test" => { "noinst" => "1" }, + "test/ssl_handshake_rtt_test" => { + "noinst" => "1" + }, "test/ssl_old_test" => { "noinst" => "1" }, @@ -1548,12 +1863,18 @@ our %unified_info = ( "test/stack_test" => { "noinst" => "1" }, + "test/strtoultest" => { + "noinst" => "1" + }, "test/sysdefaulttest" => { "noinst" => "1" }, "test/test_test" => { "noinst" => "1" }, + "test/threadpool_test" => { + "noinst" => "1" + }, "test/threadstest" => { "noinst" => "1" }, @@ -1563,12 +1884,18 @@ our %unified_info = ( "test/time_offset_test" => { "noinst" => "1" }, + "test/time_test" => { + "noinst" => "1" + }, "test/tls13ccstest" => { "noinst" => "1" }, "test/tls13encryptiontest" => { "noinst" => "1" }, + "test/tls13groupselection_test" => { + "noinst" => "1" + }, "test/trace_api_test" => { "noinst" => "1" }, @@ -1596,6 +1923,9 @@ our %unified_info = ( "test/wpackettest" => { "noinst" => "1" }, + "test/x509_acert_test" => { + "noinst" => "1" + }, "test/x509_check_cert_pkey_test" => { "noinst" => "1" }, @@ -1605,6 +1935,15 @@ our %unified_info = ( "test/x509_internal_test" => { "noinst" => "1" }, + "test/x509_load_cert_file_test" => { + "noinst" => "1" + }, + "test/x509_req_test" => { + "noinst" => "1" + }, + "test/x509_test" => { + "noinst" => "1" + }, "test/x509_time_test" => { "noinst" => "1" }, @@ -1704,6 +2043,9 @@ our %unified_info = ( "MD5_ASM", "RC4_ASM" ], + "test/endecode_test" => [ + "STATIC_LEGACY" + ], "test/evp_extra_test" => [ "STATIC_LEGACY" ], @@ -1716,14 +2058,21 @@ our %unified_info = ( }, "depends" => { "" => [ + "OpenSSLConfigVersion.cmake", + "crypto/params_idx.c", + "exporters/OpenSSLConfigVersion.cmake", + "exporters/openssl.pc", "include/crypto/bn_conf.h", "include/crypto/dso_conf.h", + "include/internal/param_names.h", "include/openssl/asn1.h", "include/openssl/asn1t.h", "include/openssl/bio.h", "include/openssl/cmp.h", "include/openssl/cms.h", + "include/openssl/comp.h", "include/openssl/conf.h", + "include/openssl/core_names.h", "include/openssl/crmf.h", "include/openssl/crypto.h", "include/openssl/ct.h", @@ -1740,10 +2089,22 @@ our %unified_info = ( "include/openssl/ssl.h", "include/openssl/ui.h", "include/openssl/x509.h", + "include/openssl/x509_acert.h", "include/openssl/x509_vfy.h", "include/openssl/x509v3.h", + "openssl.pc", "test/provider_internal_test.cnf" ], + "OpenSSLConfig.cmake" => [ + "builddata.pm" + ], + "OpenSSLConfigVersion.cmake" => [ + "OpenSSLConfig.cmake", + "builddata.pm" + ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/progs.h" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/progs.h" ], @@ -1889,6 +2250,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/progs.h" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/progs.h" + ], "apps/openssl-bin-smime.o" => [ "apps/progs.h" ], @@ -1977,6 +2341,9 @@ our %unified_info = ( "crypto/libcrypto-lib-info.o" => [ "crypto/buildinf.h" ], + "crypto/params_idx.c" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "crypto/rc4/rc4-586.S" => [ "crypto/perlasm/x86asm.pl" ], @@ -2142,6 +2509,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -2283,6 +2653,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -2319,6 +2692,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -2334,6 +2710,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -2406,6 +2785,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -2472,6 +2854,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -2571,6 +2956,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -2709,6 +3100,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -2826,6 +3220,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -2913,6 +3313,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -2985,9 +3388,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -3003,12 +3412,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -3078,9 +3493,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -3090,12 +3514,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -3111,9 +3547,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -3138,6 +3580,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -3153,6 +3598,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -3189,6 +3637,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -3462,6 +3913,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -3501,6 +3955,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -3522,6 +3979,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -3636,6 +4096,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -3663,9 +4126,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -3681,6 +4156,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -3690,12 +4168,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -3714,12 +4198,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -3729,9 +4225,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -3744,9 +4246,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -3762,24 +4276,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -3792,6 +4327,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -3801,8 +4342,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -3822,6 +4363,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -3870,6 +4426,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -3936,6 +4495,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -4059,9 +4621,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -4077,6 +4645,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -4101,9 +4672,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -4137,6 +4717,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -4194,15 +4777,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -4212,6 +4807,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -4233,9 +4831,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -4251,6 +4855,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -4263,9 +4870,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -4296,9 +4900,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -4314,12 +4915,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -4374,6 +5029,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -4383,9 +5041,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -4533,6 +5188,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -4674,6 +5332,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -4710,6 +5371,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -4725,6 +5389,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -4797,6 +5464,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -4863,6 +5533,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -4962,6 +5635,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -5100,6 +5779,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -5217,6 +5899,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -5304,6 +5992,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -5376,9 +6067,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -5394,12 +6091,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -5469,9 +6172,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -5481,12 +6193,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -5502,9 +6226,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -5529,6 +6259,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -5544,6 +6277,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -5580,6 +6316,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -5853,6 +6592,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -5892,6 +6634,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -5913,6 +6658,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -6027,6 +6775,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -6054,9 +6805,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -6072,6 +6835,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -6081,12 +6847,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -6105,12 +6877,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -6120,9 +6904,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -6135,9 +6925,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -6153,24 +6955,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -6183,6 +7006,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -6192,8 +7021,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -6213,6 +7042,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -6261,6 +7105,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -6327,6 +7174,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -6450,9 +7300,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -6468,6 +7324,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -6492,9 +7351,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -6528,6 +7396,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -6585,15 +7456,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -6603,6 +7486,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -6624,9 +7510,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -6642,6 +7534,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -6654,9 +7549,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -6687,9 +7579,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -6705,12 +7594,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -6765,6 +7708,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -6774,9 +7720,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -6956,6 +7899,10 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod.in", "doc/perlvars.pm" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in", + "doc/perlvars.pm" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in", "doc/perlvars.pm" @@ -6995,6 +7942,27 @@ our %unified_info = ( "doc/man7/openssl_user_macros.pod" => [ "doc/man7/openssl_user_macros.pod.in" ], + "exporters/OpenSSLConfig.cmake" => [ + "installdata.pm" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/OpenSSLConfig.cmake", + "installdata.pm" + ], + "exporters/libcrypto.pc" => [ + "installdata.pm" + ], + "exporters/libssl.pc" => [ + "installdata.pm" + ], + "exporters/openssl.pc" => [ + "exporters/libcrypto.pc", + "exporters/libssl.pc", + "installdata.pm" + ], + "fuzz/acert-test" => [ + "libcrypto" + ], "fuzz/asn1-test" => [ "libcrypto", "libssl" @@ -7027,17 +7995,85 @@ our %unified_info = ( "fuzz/ct-test" => [ "libcrypto" ], + "fuzz/decoder-test" => [ + "libcrypto" + ], + "fuzz/dtlsclient-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/dtlsserver-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/hashtable-test" => [ + "libcrypto.a" + ], + "fuzz/ml-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/ml-kem-test" => [ + "libcrypto.a" + ], + "fuzz/pem-test" => [ + "libcrypto.a" + ], + "fuzz/provider-test" => [ + "libcrypto" + ], + "fuzz/punycode-test" => [ + "libcrypto.a" + ], + "fuzz/quic-client-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-lcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-rcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-server-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-srtm-test" => [ + "libcrypto.a", + "libssl.a" + ], "fuzz/server-test" => [ "libcrypto", "libssl" ], + "fuzz/slh-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/smime-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/v3name-test" => [ + "libcrypto.a" + ], "fuzz/x509-test" => [ "libcrypto" ], + "include/internal/param_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], + "include/openssl/core_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "libcrypto.ld" => [ "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libcrypto.pc" => [ + "builddata.pm" + ], "libcrypto.rc" => [ "configdata.pm" ], @@ -7048,9 +8084,17 @@ our %unified_info = ( "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libssl.pc" => [ + "builddata.pm" + ], "libssl.rc" => [ "configdata.pm" ], + "openssl.pc" => [ + "builddata.pm", + "libcrypto.pc", + "libssl.pc" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/DIGESTS.asn1", "providers/common/der/NIST.asn1", @@ -7068,11 +8112,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7112,6 +8164,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov/der_rsa.h" ], @@ -7119,6 +8177,12 @@ our %unified_info = ( "providers/common/include/prov/der_digests.h", "providers/common/include/prov/der_rsa.h" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov/der_wrap.h" ], @@ -7158,11 +8222,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7195,9 +8267,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov/der_sm2.h" ], @@ -7210,9 +8288,15 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/legacy" => [ "libcrypto", "providers/liblegacy.a" @@ -7290,6 +8374,14 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_addr_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/bio_base64_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_callback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7298,6 +8390,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_dgram_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_enc_test" => [ "libcrypto", "test/libtestutil.a" @@ -7306,6 +8402,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_meth_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_prefix_text" => [ "libcrypto", "test/libtestutil.a" @@ -7318,6 +8418,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_tfo_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bioprinttest" => [ "libcrypto", "test/libtestutil.a" @@ -7330,6 +8434,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/build_wincrypt_test" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_aes" => [ "libcrypto", "libssl" @@ -7350,6 +8458,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_byteorder" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_camellia" => [ "libcrypto", "libssl" @@ -7382,10 +8494,6 @@ our %unified_info = ( "libcrypto", "libssl" ], - "test/buildtest_c_core_names" => [ - "libcrypto", - "libssl" - ], "test/buildtest_c_core_object" => [ "libcrypto", "libssl" @@ -7418,6 +8526,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_e_ostime" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_ebcdic" => [ "libcrypto", "libssl" @@ -7454,6 +8566,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_hpke" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_http" => [ "libcrypto", "libssl" @@ -7462,6 +8578,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_indicator" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_kdf" => [ "libcrypto", "libssl" @@ -7482,6 +8602,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_ml_kem" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_modes" => [ "libcrypto", "libssl" @@ -7522,6 +8646,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_quic" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_rand" => [ "libcrypto", "libssl" @@ -7578,6 +8706,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_thread" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_tls1" => [ "libcrypto", "libssl" @@ -7598,10 +8730,23 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/byteorder_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ca_internals_test" => [ + "libssl", + "test/libtestutil.a" + ], "test/casttest" => [ "libcrypto", "test/libtestutil.a" ], + "test/cert_comp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/chacha_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7715,7 +8860,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], - "test/defltfips_test" => [ + "test/decoder_propq_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/defltfips_test" => [ "libcrypto", "test/libtestutil.a" ], @@ -7771,6 +8920,8 @@ our %unified_info = ( ], "test/endecode_test" => [ "libcrypto.a", + "providers/libcommon.a", + "providers/liblegacy.a", "test/libtestutil.a" ], "test/endecoder_legacy_test" => [ @@ -7814,6 +8965,10 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => [ "libcrypto" ], + "test/evp_pkey_dhkem_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/evp_pkey_dparams_test" => [ "libcrypto", "test/libtestutil.a" @@ -7822,10 +8977,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/evp_skey_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/evp_xof_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/exdatatest" => [ "libcrypto", "test/libtestutil.a" @@ -7864,6 +9027,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/hpke_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/http_test" => [ "libcrypto", "test/libtestutil.a" @@ -7876,17 +9043,25 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/json_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/keymgmt_internal_test" => [ "libcrypto.a", "test/libtestutil.a" ], "test/lhash_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/libtestutil.a" => [ "libcrypto" ], + "test/list_test" => [ + "test/libtestutil.a" + ], "test/localetest" => [ "libcrypto", "test/libtestutil.a" @@ -7899,10 +9074,26 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/membio_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/memleaktest" => [ "libcrypto", "test/libtestutil.a" ], + "test/ml_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_evp_extra_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_internal_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/modes_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7927,6 +9118,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pairwise_fail_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/param_build_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7959,6 +9154,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pkcs12_api_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/pkcs12_format_test" => [ "libcrypto", "test/libtestutil.a" @@ -7979,6 +9178,11 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/priority_queue_test" => [ + "libcrypto", + "libssl.a", + "test/libtestutil.a" + ], "test/property_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7991,6 +9195,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/provider_default_search_path_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/provider_fallback_test" => [ "libcrypto", "test/libtestutil.a" @@ -8015,12 +9223,122 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/quic_ackm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cfq_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_client_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fifd_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_lcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_multistream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_newcid_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_qlog_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_radix_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_rcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_record_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srt_gen_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srtm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_stream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_tserver_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txpim_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_wire_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicapitest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicfaultstest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/rand_status_test" => [ "libcrypto", "test/libtestutil.a" ], "test/rand_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/rc2test" => [ @@ -8035,7 +9353,7 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "libcrypto.a", "test/libtestutil.a" ], @@ -8044,6 +9362,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/rpktest" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/rsa_mp_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8056,10 +9379,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/sanitytest" => [ + "test/rsa_x931_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/safe_math_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/sanitytest" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/secmemtest" => [ "libcrypto", "test/libtestutil.a" @@ -8077,6 +9408,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/slh_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/sm2_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8106,6 +9441,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/ssl_handshake_rtt_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/ssl_old_test" => [ "libcrypto.a", "libssl.a", @@ -8122,8 +9462,8 @@ our %unified_info = ( "test/libtestutil.a" ], "test/sslapitest" => [ - "libcrypto", - "libssl", + "libcrypto.a", + "libssl.a", "test/libtestutil.a" ], "test/sslbuffertest" => [ @@ -8140,6 +9480,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/strtoultest" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/sysdefaulttest" => [ "libcrypto", "libssl", @@ -8149,8 +9493,12 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/threadpool_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/threadstest" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/threadstest_fips" => [ @@ -8161,6 +9509,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/time_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/tls13ccstest" => [ "libcrypto", "libssl", @@ -8171,6 +9523,11 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/tls13groupselection_test" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/trace_api_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8208,6 +9565,10 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/x509_acert_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_check_cert_pkey_test" => [ "libcrypto", "test/libtestutil.a" @@ -8220,6 +9581,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/x509_load_cert_file_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_req_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_time_test" => [ "libcrypto", "test/libtestutil.a" @@ -8234,9 +9607,13 @@ our %unified_info = ( }, "dirinfo" => { "apps" => { + "deps" => [ + "apps/ca_internals_test-bin-ca.o" + ], "products" => { "bin" => [ - "apps/openssl" + "apps/openssl", + "test/ca_internals_test" ], "script" => [ "apps/CA.pl", @@ -8247,6 +9624,14 @@ our %unified_info = ( "apps/lib" => { "deps" => [ "apps/lib/openssl-bin-cmp_mock_srv.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", "apps/lib/cmp_client_test-bin-cmp_mock_srv.o", "apps/lib/uitest-bin-apps_ui.o", "apps/lib/libapps-lib-app_libctx.o", @@ -8255,12 +9640,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -8273,6 +9660,7 @@ our %unified_info = ( "products" => { "bin" => [ "apps/openssl", + "test/ca_internals_test", "test/cmp_client_test", "test/uitest" ], @@ -8284,8 +9672,12 @@ our %unified_info = ( }, "crypto" => { "deps" => [ + "crypto/asn1_time_test-bin-ctype.o", + "crypto/ca_internals_test-bin-ctype.o", + "crypto/packettest-bin-quic_vlint.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -8295,10 +9687,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -8315,6 +9710,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -8322,12 +9718,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libcrypto-lib-x86cpuid.o", @@ -8350,6 +9750,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -8358,9 +9759,15 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", "crypto/libfips-lib-x86cpuid.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test", + "test/packettest" + ], "lib" => [ "libcrypto", "providers/libfips.a" @@ -8403,6 +9810,8 @@ our %unified_info = ( }, "crypto/asn1" => { "deps" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", "crypto/asn1/libcrypto-lib-a_bitstr.o", "crypto/asn1/libcrypto-lib-a_d2i_fp.o", "crypto/asn1/libcrypto-lib-a_digest.o", @@ -8469,6 +9878,10 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test" + ], "lib" => [ "libcrypto" ] @@ -8534,6 +9947,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -8694,6 +10108,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -9065,7 +10480,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", - "crypto/err/libcrypto-lib-err_prn.o" + "crypto/err/libcrypto-lib-err_mark.o", + "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o" ], "products" => { "lib" => [ @@ -9166,7 +10583,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/evp/libfips-lib-asymcipher.o", "crypto/evp/libfips-lib-dh_support.o", "crypto/evp/libfips-lib-digest.o", @@ -9182,14 +10601,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", - "crypto/evp/libfips-lib-signature.o" + "crypto/evp/libfips-lib-s_lib.o", + "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o" ], "products" => { "lib" => [ @@ -9222,6 +10642,20 @@ our %unified_info = ( ] } }, + "crypto/hashtable" => { + "deps" => [ + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/hmac" => { "deps" => [ "crypto/hmac/libcrypto-lib-hmac.o", @@ -9234,6 +10668,17 @@ our %unified_info = ( ] } }, + "crypto/hpke" => { + "deps" => [ + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, "crypto/http" => { "deps" => [ "crypto/http/libcrypto-lib-http_client.o", @@ -9318,6 +10763,44 @@ our %unified_info = ( ] } }, + "crypto/ml_dsa" => { + "deps" => [ + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ml_kem" => { + "deps" => [ + "crypto/ml_kem/libcrypto-lib-ml_kem.o", + "crypto/ml_kem/libfips-lib-ml_kem.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/modes" => { "deps" => [ "crypto/modes/libcrypto-lib-cbc128.o", @@ -9332,6 +10815,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -9340,7 +10824,8 @@ our %unified_info = ( "crypto/modes/libfips-lib-ghash-x86.o", "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", - "crypto/modes/libfips-lib-xts128.o" + "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o" ], "products" => { "lib" => [ @@ -9484,6 +10969,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rand/libfips-lib-rand_lib.o" ], @@ -9634,6 +11120,36 @@ our %unified_info = ( ] } }, + "crypto/slh_dsa" => { + "deps" => [ + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/sm2" => { "deps" => [ "crypto/sm2/libcrypto-lib-sm2_crypt.o", @@ -9707,6 +11223,38 @@ our %unified_info = ( ] } }, + "crypto/thread" => { + "deps" => [ + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/thread/arch" => { + "deps" => [ + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/ts" => { "deps" => [ "crypto/ts/libcrypto-lib-ts_asn1.o", @@ -9774,14 +11322,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -9790,12 +11346,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -9803,13 +11364,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -9827,6 +11395,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -9836,6 +11405,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -9863,6 +11433,7 @@ our %unified_info = ( "fuzz" => { "products" => { "bin" => [ + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -9873,13 +11444,31 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test" ] } }, "providers" => { "deps" => [ + "providers/endecode_test-bin-legacyprov.o", "providers/evp_extra_test-bin-legacyprov.o", "providers/libcrypto-lib-baseprov.o", "providers/libcrypto-lib-defltprov.o", @@ -9889,6 +11478,7 @@ our %unified_info = ( ], "products" => { "bin" => [ + "test/endecode_test", "test/evp_extra_test" ], "dso" => [ @@ -9940,8 +11530,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/der/libdefault-lib-der_rsa_sig.o", "providers/common/der/libdefault-lib-der_sm2_gen.o", @@ -9960,6 +11554,7 @@ our %unified_info = ( "providers/fips" => { "deps" => [ "providers/fips/fips-dso-fips_entry.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o" @@ -10003,6 +11598,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -10027,7 +11625,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -10124,7 +11728,10 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", - "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" + "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" ], "products" => { "lib" => [ @@ -10152,7 +11759,9 @@ our %unified_info = ( }, "providers/implementations/kdfs" => { "deps" => [ + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -10171,7 +11780,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", - "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" + "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" ], "products" => { "lib" => [ @@ -10183,13 +11793,22 @@ our %unified_info = ( }, "providers/implementations/kem" => { "deps" => [ + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", - "providers/implementations/kem/libfips-lib-rsa_kem.o" + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", + "providers/implementations/kem/libfips-lib-rsa_kem.o", + "providers/implementations/kem/libtemplate-lib-template_kem.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10201,19 +11820,29 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", - "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10241,18 +11870,18 @@ our %unified_info = ( }, "providers/implementations/rands" => { "deps" => [ - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o" ], "products" => { @@ -10281,13 +11910,31 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", - "providers/implementations/signature/libfips-lib-rsa_sig.o" + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", + "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/skeymgmt" => { + "deps" => [ + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o" ], "products" => { "lib" => [ @@ -10299,7 +11946,8 @@ our %unified_info = ( "providers/implementations/storemgmt" => { "deps" => [ "providers/implementations/storemgmt/libdefault-lib-file_store.o", - "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o" + "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", + "providers/implementations/storemgmt/libdefault-lib-winstore_store.o" ], "products" => { "lib" => [ @@ -10315,14 +11963,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -10338,32 +11987,107 @@ our %unified_info = ( "ssl/libssl-lib-t1_trce.o", "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", - "ssl/libssl-lib-tls_srp.o", - "ssl/libdefault-lib-s3_cbc.o", - "ssl/libfips-lib-s3_cbc.o" + "ssl/libssl-lib-tls_srp.o" ], "products" => { "lib" => [ - "libssl", - "providers/libdefault.a", - "providers/libfips.a" + "libssl" + ] + } + }, + "ssl/quic" => { + "deps" => [ + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, "ssl/record" => { "deps" => [ - "ssl/record/libssl-lib-dtls1_bitmap.o", "ssl/record/libssl-lib-rec_layer_d1.o", - "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/libssl-lib-rec_layer_s3.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "ssl/record/methods" => { + "deps" => [ + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/record/methods/libcommon-lib-tls_pad.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o", + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "products" => { "lib" => [ "libssl", - "providers/libcommon.a" + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "ssl/rio" => { + "deps" => [ + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, @@ -10401,9 +12125,40 @@ our %unified_info = ( "test/helpers/dtlstest-bin-ssltestlib.o", "test/helpers/endecode_test-bin-predefined_dhparams.o", "test/helpers/fatalerrtest-bin-ssltestlib.o", + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/helpers/pkcs12_api_test-bin-pkcs12.o", "test/helpers/pkcs12_format_test-bin-pkcs12.o", + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", "test/helpers/recordlentest-bin-ssltestlib.o", + "test/helpers/rpktest-bin-ssltestlib.o", "test/helpers/servername_test-bin-ssltestlib.o", + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/helpers/ssl_test-bin-handshake.o", "test/helpers/ssl_test-bin-handshake_srp.o", @@ -10412,7 +12167,8 @@ our %unified_info = ( "test/helpers/sslapitest-bin-ssltestlib.o", "test/helpers/sslbuffertest-bin-ssltestlib.o", "test/helpers/sslcorrupttest-bin-ssltestlib.o", - "test/helpers/tls13ccstest-bin-ssltestlib.o" + "test/helpers/tls13ccstest-bin-ssltestlib.o", + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" ], "products" => { "bin" => [ @@ -10430,16 +12186,37 @@ our %unified_info = ( "test/dtlstest", "test/endecode_test", "test/fatalerrtest", + "test/json_test", + "test/pkcs12_api_test", "test/pkcs12_format_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_radix_test", + "test/quic_srt_gen_test", + "test/quicapitest", + "test/quicfaultstest", "test/recordlentest", + "test/rpktest", "test/servername_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", "test/sslapitest", "test/sslbuffertest", "test/sslcorrupttest", - "test/tls13ccstest" + "test/tls13ccstest", + "test/tls13groupselection_test" + ] + } + }, + "test/radix" => { + "deps" => [ + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "products" => { + "bin" => [ + "test/quic_radix_test" ] } }, @@ -10451,6 +12228,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -10485,6 +12263,12 @@ our %unified_info = ( } }, "generate" => { + "OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], "apps/openssl.rc" => [ "util/mkrc.pl", "openssl" @@ -10499,6 +12283,19 @@ our %unified_info = ( "\"-H\"", "\$(APPS_OPENSSL)" ], + "builddata.pm" => [ + "util/mkinstallvars.pl", + "PREFIX=.", + "BINDIR=apps", + "APPLINKDIR=ms", + "LIBDIR=", + "INCLUDEDIR=include", + "\"INCLUDEDIR=\$(SRCDIR)/include\"", + "ENGINESDIR=engines", + "MODULESDIR=providers", + "\"VERSION=\$(VERSION)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"" + ], "crypto/aes/aes-586.S" => [ "crypto/aes/asm/aes-586.pl" ], @@ -10520,6 +12317,24 @@ our %unified_info = ( "crypto/aes/aes-ppc.s" => [ "crypto/aes/asm/aes-ppc.pl" ], + "crypto/aes/aes-riscv32-zkn.s" => [ + "crypto/aes/asm/aes-riscv32-zkn.pl" + ], + "crypto/aes/aes-riscv64-zkn.s" => [ + "crypto/aes/asm/aes-riscv64-zkn.pl" + ], + "crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvbb-zvkg-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkb-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkb-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkned.pl" + ], + "crypto/aes/aes-riscv64.s" => [ + "crypto/aes/asm/aes-riscv64.pl" + ], "crypto/aes/aes-s390x.S" => [ "crypto/aes/asm/aes-s390x.pl" ], @@ -10547,6 +12362,9 @@ our %unified_info = ( "crypto/aes/aesni-x86_64.s" => [ "crypto/aes/asm/aesni-x86_64.pl" ], + "crypto/aes/aesni-xts-avx512.s" => [ + "crypto/aes/asm/aesni-xts-avx512.pl" + ], "crypto/aes/aesp8-ppc.s" => [ "crypto/aes/asm/aesp8-ppc.pl" ], @@ -10559,12 +12377,18 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.S" => [ "crypto/aes/asm/bsaes-armv7.pl" ], + "crypto/aes/bsaes-armv8.S" => [ + "crypto/aes/asm/bsaes-armv8.pl" + ], "crypto/aes/bsaes-x86_64.s" => [ "crypto/aes/asm/bsaes-x86_64.pl" ], "crypto/aes/vpaes-armv8.S" => [ "crypto/aes/asm/vpaes-armv8.pl" ], + "crypto/aes/vpaes-loongarch64.S" => [ + "crypto/aes/asm/vpaes-loongarch64.pl" + ], "crypto/aes/vpaes-ppc.s" => [ "crypto/aes/asm/vpaes-ppc.pl" ], @@ -10625,15 +12449,33 @@ our %unified_info = ( "crypto/bn/ppc-mont.s" => [ "crypto/bn/asm/ppc-mont.pl" ], + "crypto/bn/ppc64-mont-fixed.s" => [ + "crypto/bn/asm/ppc64-mont-fixed.pl" + ], "crypto/bn/ppc64-mont.s" => [ "crypto/bn/asm/ppc64-mont.pl" ], + "crypto/bn/rsaz-2k-avx512.s" => [ + "crypto/bn/asm/rsaz-2k-avx512.pl" + ], + "crypto/bn/rsaz-2k-avxifma.s" => [ + "crypto/bn/asm/rsaz-2k-avxifma.pl" + ], + "crypto/bn/rsaz-3k-avx512.s" => [ + "crypto/bn/asm/rsaz-3k-avx512.pl" + ], + "crypto/bn/rsaz-3k-avxifma.s" => [ + "crypto/bn/asm/rsaz-3k-avxifma.pl" + ], + "crypto/bn/rsaz-4k-avx512.s" => [ + "crypto/bn/asm/rsaz-4k-avx512.pl" + ], + "crypto/bn/rsaz-4k-avxifma.s" => [ + "crypto/bn/asm/rsaz-4k-avxifma.pl" + ], "crypto/bn/rsaz-avx2.s" => [ "crypto/bn/asm/rsaz-avx2.pl" ], - "crypto/bn/rsaz-avx512.s" => [ - "crypto/bn/asm/rsaz-avx512.pl" - ], "crypto/bn/rsaz-x86_64.s" => [ "crypto/bn/asm/rsaz-x86_64.pl" ], @@ -10695,6 +12537,9 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.S" => [ "crypto/chacha/asm/chacha-armv4.pl" ], + "crypto/chacha/chacha-armv8-sve.S" => [ + "crypto/chacha/asm/chacha-armv8-sve.pl" + ], "crypto/chacha/chacha-armv8.S" => [ "crypto/chacha/asm/chacha-armv8.pl" ], @@ -10707,9 +12552,19 @@ our %unified_info = ( "crypto/chacha/chacha-ia64.s" => [ "crypto/chacha/chacha-ia64.S" ], + "crypto/chacha/chacha-loongarch64.S" => [ + "crypto/chacha/asm/chacha-loongarch64.pl" + ], "crypto/chacha/chacha-ppc.s" => [ "crypto/chacha/asm/chacha-ppc.pl" ], + "crypto/chacha/chacha-riscv64-v-zbb-zvkb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl", + "zvkb" + ], + "crypto/chacha/chacha-riscv64-v-zbb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl" + ], "crypto/chacha/chacha-s390x.S" => [ "crypto/chacha/asm/chacha-s390x.pl" ], @@ -10719,6 +12574,9 @@ our %unified_info = ( "crypto/chacha/chacha-x86_64.s" => [ "crypto/chacha/asm/chacha-x86_64.pl" ], + "crypto/chacha/chachap10-ppc.s" => [ + "crypto/chacha/asm/chachap10-ppc.pl" + ], "crypto/des/crypt586.S" => [ "crypto/des/asm/crypt586.pl" ], @@ -10731,6 +12589,9 @@ our %unified_info = ( "crypto/des/dest4-sparcv9.S" => [ "crypto/des/asm/dest4-sparcv9.pl" ], + "crypto/ec/ecp_nistp384-ppc64.s" => [ + "crypto/ec/asm/ecp_nistp384-ppc64.pl" + ], "crypto/ec/ecp_nistp521-ppc64.s" => [ "crypto/ec/asm/ecp_nistp521-ppc64.pl" ], @@ -10755,6 +12616,9 @@ our %unified_info = ( "crypto/ec/ecp_nistz256-x86_64.s" => [ "crypto/ec/asm/ecp_nistz256-x86_64.pl" ], + "crypto/ec/ecp_sm2p256-armv8.S" => [ + "crypto/ec/asm/ecp_sm2p256-armv8.pl" + ], "crypto/ec/x25519-ppc64.s" => [ "crypto/ec/asm/x25519-ppc64.pl" ], @@ -10764,18 +12628,39 @@ our %unified_info = ( "crypto/ia64cpuid.s" => [ "crypto/ia64cpuid.S" ], + "crypto/loongarch64cpuid.s" => [ + "crypto/loongarch64cpuid.pl" + ], "crypto/md5/md5-586.S" => [ "crypto/md5/asm/md5-586.pl" ], + "crypto/md5/md5-aarch64.S" => [ + "crypto/md5/asm/md5-aarch64.pl" + ], + "crypto/md5/md5-loongarch64.S" => [ + "crypto/md5/asm/md5-loongarch64.pl" + ], "crypto/md5/md5-sparcv9.S" => [ "crypto/md5/asm/md5-sparcv9.pl" ], "crypto/md5/md5-x86_64.s" => [ "crypto/md5/asm/md5-x86_64.pl" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.S" => [ + "crypto/modes/asm/aes-gcm-armv8-unroll8_64.pl" + ], "crypto/modes/aes-gcm-armv8_64.S" => [ "crypto/modes/asm/aes-gcm-armv8_64.pl" ], + "crypto/modes/aes-gcm-avx512.s" => [ + "crypto/modes/asm/aes-gcm-avx512.pl" + ], + "crypto/modes/aes-gcm-ppc.s" => [ + "crypto/modes/asm/aes-gcm-ppc.pl" + ], + "crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s" => [ + "crypto/modes/asm/aes-gcm-riscv64-zvkb-zvkg-zvkned.pl" + ], "crypto/modes/aesni-gcm-x86_64.s" => [ "crypto/modes/asm/aesni-gcm-x86_64.pl" ], @@ -10794,6 +12679,15 @@ our %unified_info = ( "crypto/modes/ghash-parisc.s" => [ "crypto/modes/asm/ghash-parisc.pl" ], + "crypto/modes/ghash-riscv64-zvkb-zvbc.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkb-zvbc.pl" + ], + "crypto/modes/ghash-riscv64-zvkg.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkg.pl" + ], + "crypto/modes/ghash-riscv64.s" => [ + "crypto/modes/asm/ghash-riscv64.pl" + ], "crypto/modes/ghash-s390x.S" => [ "crypto/modes/asm/ghash-s390x.pl" ], @@ -10812,6 +12706,9 @@ our %unified_info = ( "crypto/modes/ghashv8-armx.S" => [ "crypto/modes/asm/ghashv8-armx.pl" ], + "crypto/params_idx.c" => [ + "crypto/params_idx.c.in" + ], "crypto/pariscid.s" => [ "crypto/pariscid.pl" ], @@ -10872,6 +12769,12 @@ our %unified_info = ( "crypto/ripemd/rmd-586.S" => [ "crypto/ripemd/asm/rmd-586.pl" ], + "crypto/riscv32cpuid.s" => [ + "crypto/riscv32cpuid.pl" + ], + "crypto/riscv64cpuid.s" => [ + "crypto/riscv64cpuid.pl" + ], "crypto/s390xcpuid.S" => [ "crypto/s390xcpuid.pl" ], @@ -10980,6 +12883,9 @@ our %unified_info = ( "crypto/sha/sha256-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S" => [ + "crypto/sha/asm/sha256-riscv64-zvkb-zvknha_or_zvknhb.pl" + ], "crypto/sha/sha256-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -11016,6 +12922,9 @@ our %unified_info = ( "crypto/sha/sha512-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha512-riscv64-zvkb-zvknhb.S" => [ + "crypto/sha/asm/sha512-riscv64-zvkb-zvknhb.pl" + ], "crypto/sha/sha512-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -11028,6 +12937,24 @@ our %unified_info = ( "crypto/sha/sha512p8-ppc.s" => [ "crypto/sha/asm/sha512p8-ppc.pl" ], + "crypto/sm3/sm3-armv8.S" => [ + "crypto/sm3/asm/sm3-armv8.pl" + ], + "crypto/sm3/sm3-riscv64-zvksh.S" => [ + "crypto/sm3/asm/sm3-riscv64-zvksh.pl" + ], + "crypto/sm4/sm4-armv8.S" => [ + "crypto/sm4/asm/sm4-armv8.pl" + ], + "crypto/sm4/sm4-riscv64-zvksed.s" => [ + "crypto/sm4/asm/sm4-riscv64-zvksed.pl" + ], + "crypto/sm4/vpsm4-armv8.S" => [ + "crypto/sm4/asm/vpsm4-armv8.pl" + ], + "crypto/sm4/vpsm4_ex-armv8.S" => [ + "crypto/sm4/asm/vpsm4_ex-armv8.pl" + ], "crypto/uplink-ia64.s" => [ "ms/uplink-ia64.pl" ], @@ -11193,6 +13120,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -11334,6 +13264,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -11370,6 +13303,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -11385,6 +13321,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -11457,6 +13396,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -11523,6 +13465,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -11622,6 +13567,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -11760,6 +13711,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -11877,6 +13831,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -11964,6 +13924,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -12036,9 +13999,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -12054,12 +14023,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -12129,9 +14104,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -12141,12 +14125,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -12162,9 +14158,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -12189,6 +14191,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -12204,6 +14209,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -12240,6 +14248,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -12513,6 +14524,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -12552,6 +14566,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -12573,6 +14590,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -12687,6 +14707,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -12714,9 +14737,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -12732,6 +14767,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -12741,12 +14779,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -12765,12 +14809,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -12780,9 +14836,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -12795,9 +14857,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -12813,24 +14887,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -12843,6 +14938,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -12852,8 +14953,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -12873,6 +14974,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -12921,6 +15037,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -12987,6 +15106,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -13110,9 +15232,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -13128,6 +15256,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -13152,9 +15283,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -13188,6 +15328,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -13245,15 +15388,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -13263,6 +15418,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -13284,9 +15442,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -13302,6 +15466,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -13314,9 +15481,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -13347,9 +15511,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -13365,12 +15526,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -13425,6 +15640,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -13434,9 +15652,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -13584,6 +15799,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -13725,6 +15943,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -13761,6 +15982,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -13776,6 +16000,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -13848,6 +16075,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -13914,6 +16144,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -14013,6 +16246,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -14151,6 +16390,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -14268,6 +16510,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -14355,6 +16603,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -14427,9 +16678,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -14445,12 +16702,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -14520,9 +16783,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -14532,12 +16804,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -14553,9 +16837,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -14580,6 +16870,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -14595,6 +16888,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -14631,6 +16927,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -14904,6 +17203,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -14943,6 +17245,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -14964,6 +17269,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -15078,6 +17386,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -15105,9 +17416,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -15123,6 +17446,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -15132,12 +17458,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -15156,12 +17488,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -15171,9 +17515,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -15186,9 +17536,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -15204,24 +17566,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -15234,6 +17617,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -15243,8 +17632,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -15264,6 +17653,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -15312,6 +17716,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -15378,6 +17785,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -15501,9 +17911,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -15519,6 +17935,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -15543,9 +17962,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -15579,6 +18007,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -15636,15 +18067,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -15654,6 +18097,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -15675,9 +18121,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -15693,6 +18145,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -15705,9 +18160,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -15738,9 +18190,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -15756,12 +18205,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -15816,6 +18319,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -15825,9 +18331,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -15963,6 +18466,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc/man1/openssl-sess_id.pod.in" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in" ], @@ -15999,12 +18505,30 @@ our %unified_info = ( "engines/e_padlock-x86_64.s" => [ "engines/asm/e_padlock-x86_64.pl" ], + "exporters/OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], + "exporters/libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], + "exporters/libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "exporters/openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "include/crypto/bn_conf.h" => [ "include/crypto/bn_conf.h.in" ], "include/crypto/dso_conf.h" => [ "include/crypto/dso_conf.h.in" ], + "include/internal/param_names.h" => [ + "include/internal/param_names.h.in" + ], "include/openssl/asn1.h" => [ "include/openssl/asn1.h.in" ], @@ -16020,12 +18544,18 @@ our %unified_info = ( "include/openssl/cms.h" => [ "include/openssl/cms.h.in" ], + "include/openssl/comp.h" => [ + "include/openssl/comp.h.in" + ], "include/openssl/conf.h" => [ "include/openssl/conf.h.in" ], "include/openssl/configuration.h" => [ "include/openssl/configuration.h.in" ], + "include/openssl/core_names.h" => [ + "include/openssl/core_names.h.in" + ], "include/openssl/crmf.h" => [ "include/openssl/crmf.h.in" ], @@ -16074,16 +18604,37 @@ our %unified_info = ( "include/openssl/x509.h" => [ "include/openssl/x509.h.in" ], + "include/openssl/x509_acert.h" => [ + "include/openssl/x509_acert.h.in" + ], "include/openssl/x509_vfy.h" => [ "include/openssl/x509_vfy.h.in" ], "include/openssl/x509v3.h" => [ "include/openssl/x509v3.h.in" ], + "installdata.pm" => [ + "util/mkinstallvars.pl", + "\"PREFIX=\$(INSTALLTOP)\"", + "BINDIR=bin", + "\"LIBDIR=\$(LIBDIR)\"", + "\"libdir=\$(libdir)\"", + "INCLUDEDIR=include", + "APPLINKDIR=include/openssl", + "\"ENGINESDIR=\$(ENGINESDIR)\"", + "\"MODULESDIR=\$(MODULESDIR)\"", + "\"PKGCONFIGDIR=\$(PKGCONFIGDIR)\"", + "\"CMAKECONFIGDIR=\$(CMAKECONFIGDIR)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"", + "\"VERSION=\$(VERSION)\"" + ], "libcrypto.ld" => [ "util/libcrypto.num", "libcrypto" ], + "libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], "libcrypto.rc" => [ "util/mkrc.pl", "libcrypto" @@ -16092,10 +18643,16 @@ our %unified_info = ( "util/libssl.num", "libssl" ], + "libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], "libssl.rc" => [ "util/mkrc.pl", "libssl" ], + "openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/der_digests_gen.c.in" ], @@ -16108,9 +18665,15 @@ our %unified_info = ( "providers/common/der/der_ecx_gen.c" => [ "providers/common/der/der_ecx_gen.c.in" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/der_ml_dsa_gen.c.in" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/der_rsa_gen.c.in" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/der_slh_dsa_gen.c.in" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/der_sm2_gen.c.in" ], @@ -16129,9 +18692,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/include/prov/der_ecx.h.in" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/include/prov/der_ml_dsa.h.in" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/include/prov/der_rsa.h.in" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/include/prov/der_slh_dsa.h.in" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/include/prov/der_sm2.h.in" ], @@ -16181,6 +18750,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "buffer" ], + "test/buildtest_byteorder.c" => [ + "test/generate_buildtest.pl", + "byteorder" + ], "test/buildtest_camellia.c" => [ "test/generate_buildtest.pl", "camellia" @@ -16213,10 +18786,6 @@ our %unified_info = ( "test/generate_buildtest.pl", "core_dispatch" ], - "test/buildtest_core_names.c" => [ - "test/generate_buildtest.pl", - "core_names" - ], "test/buildtest_core_object.c" => [ "test/generate_buildtest.pl", "core_object" @@ -16249,6 +18818,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "e_os2" ], + "test/buildtest_e_ostime.c" => [ + "test/generate_buildtest.pl", + "e_ostime" + ], "test/buildtest_ebcdic.c" => [ "test/generate_buildtest.pl", "ebcdic" @@ -16285,6 +18858,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "hmac" ], + "test/buildtest_hpke.c" => [ + "test/generate_buildtest.pl", + "hpke" + ], "test/buildtest_http.c" => [ "test/generate_buildtest.pl", "http" @@ -16293,6 +18870,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "idea" ], + "test/buildtest_indicator.c" => [ + "test/generate_buildtest.pl", + "indicator" + ], "test/buildtest_kdf.c" => [ "test/generate_buildtest.pl", "kdf" @@ -16313,6 +18894,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "mdc2" ], + "test/buildtest_ml_kem.c" => [ + "test/generate_buildtest.pl", + "ml_kem" + ], "test/buildtest_modes.c" => [ "test/generate_buildtest.pl", "modes" @@ -16353,6 +18938,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "provider" ], + "test/buildtest_quic.c" => [ + "test/generate_buildtest.pl", + "quic" + ], "test/buildtest_rand.c" => [ "test/generate_buildtest.pl", "rand" @@ -16409,6 +18998,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "symhacks" ], + "test/buildtest_thread.c" => [ + "test/generate_buildtest.pl", + "thread" + ], "test/buildtest_tls1.c" => [ "test/generate_buildtest.pl", "tls1" @@ -16489,6 +19082,7 @@ our %unified_info = ( "doc/html/man1/openssl-s_server.html", "doc/html/man1/openssl-s_time.html", "doc/html/man1/openssl-sess_id.html", + "doc/html/man1/openssl-skeyutl.html", "doc/html/man1/openssl-smime.html", "doc/html/man1/openssl-speed.html", "doc/html/man1/openssl-spkac.html", @@ -16538,6 +19132,7 @@ our %unified_info = ( "doc/html/man3/BIO_find_type.html", "doc/html/man3/BIO_get_data.html", "doc/html/man3/BIO_get_ex_new_index.html", + "doc/html/man3/BIO_get_rpoll_descriptor.html", "doc/html/man3/BIO_meth_new.html", "doc/html/man3/BIO_new.html", "doc/html/man3/BIO_new_CMS.html", @@ -16550,11 +19145,13 @@ our %unified_info = ( "doc/html/man3/BIO_s_connect.html", "doc/html/man3/BIO_s_core.html", "doc/html/man3/BIO_s_datagram.html", + "doc/html/man3/BIO_s_dgram_pair.html", "doc/html/man3/BIO_s_fd.html", "doc/html/man3/BIO_s_file.html", "doc/html/man3/BIO_s_mem.html", "doc/html/man3/BIO_s_null.html", "doc/html/man3/BIO_s_socket.html", + "doc/html/man3/BIO_sendmmsg.html", "doc/html/man3/BIO_set_callback.html", "doc/html/man3/BIO_should_retry.html", "doc/html/man3/BIO_socket_wait.html", @@ -16579,6 +19176,7 @@ our %unified_info = ( "doc/html/man3/BN_swap.html", "doc/html/man3/BN_zero.html", "doc/html/man3/BUF_MEM_new.html", + "doc/html/man3/CMAC_CTX.html", "doc/html/man3/CMS_EncryptedData_decrypt.html", "doc/html/man3/CMS_EncryptedData_encrypt.html", "doc/html/man3/CMS_EnvelopedData_create.html", @@ -16601,6 +19199,7 @@ our %unified_info = ( "doc/html/man3/CMS_uncompress.html", "doc/html/man3/CMS_verify.html", "doc/html/man3/CMS_verify_receipt.html", + "doc/html/man3/COMP_CTX_new.html", "doc/html/man3/CONF_modules_free.html", "doc/html/man3/CONF_modules_load_file.html", "doc/html/man3/CRYPTO_THREAD_run_once.html", @@ -16634,6 +19233,8 @@ our %unified_info = ( "doc/html/man3/DSA_size.html", "doc/html/man3/DTLS_get_data_mtu.html", "doc/html/man3/DTLS_set_timer_cb.html", + "doc/html/man3/DTLSv1_get_timeout.html", + "doc/html/man3/DTLSv1_handle_timeout.html", "doc/html/man3/DTLSv1_listen.html", "doc/html/man3/ECDSA_SIG_new.html", "doc/html/man3/ECDSA_sign.html", @@ -16680,6 +19281,7 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_ctrl.html", "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html", "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html", + "doc/html/man3/EVP_PKEY_CTX_get_algor.html", "doc/html/man3/EVP_PKEY_CTX_new.html", "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html", "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html", @@ -16719,6 +19321,8 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_verify_recover.html", "doc/html/man3/EVP_RAND.html", "doc/html/man3/EVP_SIGNATURE.html", + "doc/html/man3/EVP_SKEY.html", + "doc/html/man3/EVP_SKEYMGMT.html", "doc/html/man3/EVP_SealInit.html", "doc/html/man3/EVP_SignInit.html", "doc/html/man3/EVP_VerifyInit.html", @@ -16748,6 +19352,7 @@ our %unified_info = ( "doc/html/man3/EVP_sm3.html", "doc/html/man3/EVP_sm4_cbc.html", "doc/html/man3/EVP_whirlpool.html", + "doc/html/man3/GENERAL_NAME.html", "doc/html/man3/HMAC.html", "doc/html/man3/MD5.html", "doc/html/man3/MDC2_Init.html", @@ -16772,14 +19377,18 @@ our %unified_info = ( "doc/html/man3/OPENSSL_init_ssl.html", "doc/html/man3/OPENSSL_instrument_bus.html", "doc/html/man3/OPENSSL_load_builtin_modules.html", + "doc/html/man3/OPENSSL_load_u16_le.html", "doc/html/man3/OPENSSL_malloc.html", + "doc/html/man3/OPENSSL_riscvcap.html", "doc/html/man3/OPENSSL_s390xcap.html", "doc/html/man3/OPENSSL_secure_malloc.html", "doc/html/man3/OPENSSL_strcasecmp.html", "doc/html/man3/OSSL_ALGORITHM.html", "doc/html/man3/OSSL_CALLBACK.html", + "doc/html/man3/OSSL_CMP_ATAV_set0.html", "doc/html/man3/OSSL_CMP_CTX_new.html", "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html", + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html", "doc/html/man3/OSSL_CMP_ITAV_set0.html", "doc/html/man3/OSSL_CMP_MSG_get0_header.html", "doc/html/man3/OSSL_CMP_MSG_http_perform.html", @@ -16803,18 +19412,27 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_CTX.html", "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html", "doc/html/man3/OSSL_ENCODER_to_bio.html", + "doc/html/man3/OSSL_ERR_STATE_save.html", "doc/html/man3/OSSL_ESS_check_signing_certs.html", + "doc/html/man3/OSSL_GENERAL_NAMES_print.html", + "doc/html/man3/OSSL_HPKE_CTX_new.html", "doc/html/man3/OSSL_HTTP_REQ_CTX.html", "doc/html/man3/OSSL_HTTP_parse_url.html", "doc/html/man3/OSSL_HTTP_transfer.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html", + "doc/html/man3/OSSL_INDICATOR_set_callback.html", "doc/html/man3/OSSL_ITEM.html", "doc/html/man3/OSSL_LIB_CTX.html", + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html", "doc/html/man3/OSSL_PARAM.html", "doc/html/man3/OSSL_PARAM_BLD.html", "doc/html/man3/OSSL_PARAM_allocate_from_text.html", "doc/html/man3/OSSL_PARAM_dup.html", "doc/html/man3/OSSL_PARAM_int.html", + "doc/html/man3/OSSL_PARAM_print_to_bio.html", "doc/html/man3/OSSL_PROVIDER.html", + "doc/html/man3/OSSL_QUIC_client_method.html", "doc/html/man3/OSSL_SELF_TEST_new.html", "doc/html/man3/OSSL_SELF_TEST_set_callback.html", "doc/html/man3/OSSL_STORE_INFO.html", @@ -16823,11 +19441,13 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_attach.html", "doc/html/man3/OSSL_STORE_expect.html", "doc/html/man3/OSSL_STORE_open.html", + "doc/html/man3/OSSL_sleep.html", "doc/html/man3/OSSL_trace_enabled.html", "doc/html/man3/OSSL_trace_get_category_num.html", "doc/html/man3/OSSL_trace_set_channel.html", "doc/html/man3/OpenSSL_add_all_algorithms.html", "doc/html/man3/OpenSSL_version.html", + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html", "doc/html/man3/PEM_X509_INFO_read_bio_ex.html", "doc/html/man3/PEM_bytes_read_bio.html", "doc/html/man3/PEM_read.html", @@ -16840,6 +19460,7 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_create_cert.html", "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html", "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html", + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html", "doc/html/man3/PKCS12_add1_attr_by_NID.html", "doc/html/man3/PKCS12_add_CSPName_asc.html", "doc/html/man3/PKCS12_add_cert.html", @@ -16931,6 +19552,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_sess_set_get_cb.html", "doc/html/man3/SSL_CTX_sessions.html", "doc/html/man3/SSL_CTX_set0_CA_list.html", + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html", "doc/html/man3/SSL_CTX_set1_curves.html", "doc/html/man3/SSL_CTX_set1_sigalgs.html", "doc/html/man3/SSL_CTX_set1_verify_cert_store.html", @@ -16944,6 +19566,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_ct_validation_callback.html", "doc/html/man3/SSL_CTX_set_ctlog_list_file.html", "doc/html/man3/SSL_CTX_set_default_passwd_cb.html", + "doc/html/man3/SSL_CTX_set_domain_flags.html", "doc/html/man3/SSL_CTX_set_generate_session_id.html", "doc/html/man3/SSL_CTX_set_info_callback.html", "doc/html/man3/SSL_CTX_set_keylog_callback.html", @@ -16951,6 +19574,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_min_proto_version.html", "doc/html/man3/SSL_CTX_set_mode.html", "doc/html/man3/SSL_CTX_set_msg_callback.html", + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html", "doc/html/man3/SSL_CTX_set_num_tickets.html", "doc/html/man3/SSL_CTX_set_options.html", "doc/html/man3/SSL_CTX_set_psk_client_callback.html", @@ -16989,6 +19613,7 @@ our %unified_info = ( "doc/html/man3/SSL_SESSION_print.html", "doc/html/man3/SSL_SESSION_set1_id.html", "doc/html/man3/SSL_accept.html", + "doc/html/man3/SSL_accept_stream.html", "doc/html/man3/SSL_alert_type_string.html", "doc/html/man3/SSL_alloc_buffers.html", "doc/html/man3/SSL_check_chain.html", @@ -16998,59 +19623,90 @@ our %unified_info = ( "doc/html/man3/SSL_export_keying_material.html", "doc/html/man3/SSL_extension_supported.html", "doc/html/man3/SSL_free.html", + "doc/html/man3/SSL_get0_connection.html", + "doc/html/man3/SSL_get0_group_name.html", + "doc/html/man3/SSL_get0_peer_rpk.html", "doc/html/man3/SSL_get0_peer_scts.html", + "doc/html/man3/SSL_get1_builtin_sigalgs.html", "doc/html/man3/SSL_get_SSL_CTX.html", "doc/html/man3/SSL_get_all_async_fds.html", "doc/html/man3/SSL_get_certificate.html", "doc/html/man3/SSL_get_ciphers.html", "doc/html/man3/SSL_get_client_random.html", + "doc/html/man3/SSL_get_conn_close_info.html", "doc/html/man3/SSL_get_current_cipher.html", "doc/html/man3/SSL_get_default_timeout.html", "doc/html/man3/SSL_get_error.html", + "doc/html/man3/SSL_get_event_timeout.html", "doc/html/man3/SSL_get_extms_support.html", "doc/html/man3/SSL_get_fd.html", + "doc/html/man3/SSL_get_handshake_rtt.html", "doc/html/man3/SSL_get_peer_cert_chain.html", "doc/html/man3/SSL_get_peer_certificate.html", "doc/html/man3/SSL_get_peer_signature_nid.html", "doc/html/man3/SSL_get_peer_tmp_key.html", "doc/html/man3/SSL_get_psk_identity.html", "doc/html/man3/SSL_get_rbio.html", + "doc/html/man3/SSL_get_rpoll_descriptor.html", "doc/html/man3/SSL_get_session.html", "doc/html/man3/SSL_get_shared_sigalgs.html", + "doc/html/man3/SSL_get_stream_id.html", + "doc/html/man3/SSL_get_stream_read_state.html", + "doc/html/man3/SSL_get_value_uint.html", "doc/html/man3/SSL_get_verify_result.html", "doc/html/man3/SSL_get_version.html", "doc/html/man3/SSL_group_to_name.html", + "doc/html/man3/SSL_handle_events.html", "doc/html/man3/SSL_in_init.html", + "doc/html/man3/SSL_inject_net_dgram.html", "doc/html/man3/SSL_key_update.html", "doc/html/man3/SSL_library_init.html", "doc/html/man3/SSL_load_client_CA_file.html", "doc/html/man3/SSL_new.html", + "doc/html/man3/SSL_new_domain.html", + "doc/html/man3/SSL_new_listener.html", + "doc/html/man3/SSL_new_stream.html", "doc/html/man3/SSL_pending.html", + "doc/html/man3/SSL_poll.html", "doc/html/man3/SSL_read.html", "doc/html/man3/SSL_read_early_data.html", "doc/html/man3/SSL_rstate_string.html", "doc/html/man3/SSL_session_reused.html", "doc/html/man3/SSL_set1_host.html", + "doc/html/man3/SSL_set1_initial_peer_addr.html", + "doc/html/man3/SSL_set1_server_cert_type.html", "doc/html/man3/SSL_set_async_callback.html", "doc/html/man3/SSL_set_bio.html", + "doc/html/man3/SSL_set_blocking_mode.html", "doc/html/man3/SSL_set_connect_state.html", + "doc/html/man3/SSL_set_default_stream_mode.html", "doc/html/man3/SSL_set_fd.html", + "doc/html/man3/SSL_set_incoming_stream_policy.html", + "doc/html/man3/SSL_set_quic_tls_cbs.html", "doc/html/man3/SSL_set_retry_verify.html", "doc/html/man3/SSL_set_session.html", + "doc/html/man3/SSL_set_session_secret_cb.html", "doc/html/man3/SSL_set_shutdown.html", "doc/html/man3/SSL_set_verify_result.html", "doc/html/man3/SSL_shutdown.html", "doc/html/man3/SSL_state_string.html", + "doc/html/man3/SSL_stream_conclude.html", + "doc/html/man3/SSL_stream_reset.html", "doc/html/man3/SSL_want.html", "doc/html/man3/SSL_write.html", "doc/html/man3/TS_RESP_CTX_new.html", - "doc/html/man3/TS_VERIFY_CTX_set_certs.html", + "doc/html/man3/TS_VERIFY_CTX.html", "doc/html/man3/UI_STRING.html", "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", + "doc/html/man3/X509_ACERT_add1_attr.html", + "doc/html/man3/X509_ACERT_add_attr_nconf.html", + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html", + "doc/html/man3/X509_ACERT_get_attr.html", + "doc/html/man3/X509_ACERT_print_ex.html", "doc/html/man3/X509_ALGOR_dup.html", "doc/html/man3/X509_ATTRIBUTE.html", "doc/html/man3/X509_CRL_get0_by_serial.html", @@ -17067,6 +19723,7 @@ our %unified_info = ( "doc/html/man3/X509_REQ_get_attr.html", "doc/html/man3/X509_REQ_get_extensions.html", "doc/html/man3/X509_SIG_get0.html", + "doc/html/man3/X509_STORE_CTX_get_by_subject.html", "doc/html/man3/X509_STORE_CTX_get_error.html", "doc/html/man3/X509_STORE_CTX_new.html", "doc/html/man3/X509_STORE_CTX_set_verify_cb.html", @@ -17089,6 +19746,7 @@ our %unified_info = ( "doc/html/man3/X509_get0_notBefore.html", "doc/html/man3/X509_get0_signature.html", "doc/html/man3/X509_get0_uids.html", + "doc/html/man3/X509_get_default_cert_file.html", "doc/html/man3/X509_get_extension_flags.html", "doc/html/man3/X509_get_pubkey.html", "doc/html/man3/X509_get_serialNumber.html", @@ -17134,12 +19792,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-RC5.html", "doc/html/man7/EVP_CIPHER-SEED.html", "doc/html/man7/EVP_CIPHER-SM4.html", + "doc/html/man7/EVP_KDF-ARGON2.html", "doc/html/man7/EVP_KDF-HKDF.html", + "doc/html/man7/EVP_KDF-HMAC-DRBG.html", "doc/html/man7/EVP_KDF-KB.html", "doc/html/man7/EVP_KDF-KRB5KDF.html", "doc/html/man7/EVP_KDF-PBKDF1.html", "doc/html/man7/EVP_KDF-PBKDF2.html", "doc/html/man7/EVP_KDF-PKCS12KDF.html", + "doc/html/man7/EVP_KDF-PVKKDF.html", "doc/html/man7/EVP_KDF-SCRYPT.html", "doc/html/man7/EVP_KDF-SS.html", "doc/html/man7/EVP_KDF-SSHKDF.html", @@ -17148,7 +19809,10 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X942-ASN1.html", "doc/html/man7/EVP_KDF-X942-CONCAT.html", "doc/html/man7/EVP_KDF-X963.html", + "doc/html/man7/EVP_KEM-EC.html", + "doc/html/man7/EVP_KEM-ML-KEM.html", "doc/html/man7/EVP_KEM-RSA.html", + "doc/html/man7/EVP_KEM-X25519.html", "doc/html/man7/EVP_KEYEXCH-DH.html", "doc/html/man7/EVP_KEYEXCH-ECDH.html", "doc/html/man7/EVP_KEYEXCH-X25519.html", @@ -17160,6 +19824,7 @@ our %unified_info = ( "doc/html/man7/EVP_MAC-Poly1305.html", "doc/html/man7/EVP_MAC-Siphash.html", "doc/html/man7/EVP_MD-BLAKE2.html", + "doc/html/man7/EVP_MD-KECCAK.html", "doc/html/man7/EVP_MD-MD2.html", "doc/html/man7/EVP_MD-MD4.html", "doc/html/man7/EVP_MD-MD5-SHA1.html", @@ -17179,12 +19844,17 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-EC.html", "doc/html/man7/EVP_PKEY-FFC.html", "doc/html/man7/EVP_PKEY-HMAC.html", + "doc/html/man7/EVP_PKEY-ML-DSA.html", + "doc/html/man7/EVP_PKEY-ML-KEM.html", "doc/html/man7/EVP_PKEY-RSA.html", + "doc/html/man7/EVP_PKEY-SLH-DSA.html", "doc/html/man7/EVP_PKEY-SM2.html", "doc/html/man7/EVP_PKEY-X25519.html", + "doc/html/man7/EVP_RAND-CRNG-TEST.html", "doc/html/man7/EVP_RAND-CTR-DRBG.html", "doc/html/man7/EVP_RAND-HASH-DRBG.html", "doc/html/man7/EVP_RAND-HMAC-DRBG.html", + "doc/html/man7/EVP_RAND-JITTER.html", "doc/html/man7/EVP_RAND-SEED-SRC.html", "doc/html/man7/EVP_RAND-TEST-RAND.html", "doc/html/man7/EVP_RAND.html", @@ -17192,17 +19862,19 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-ECDSA.html", "doc/html/man7/EVP_SIGNATURE-ED25519.html", "doc/html/man7/EVP_SIGNATURE-HMAC.html", + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html", "doc/html/man7/EVP_SIGNATURE-RSA.html", + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html", "doc/html/man7/OSSL_PROVIDER-FIPS.html", "doc/html/man7/OSSL_PROVIDER-base.html", "doc/html/man7/OSSL_PROVIDER-default.html", "doc/html/man7/OSSL_PROVIDER-legacy.html", "doc/html/man7/OSSL_PROVIDER-null.html", + "doc/html/man7/OSSL_STORE-winstore.html", "doc/html/man7/RAND.html", "doc/html/man7/RSA-PSS.html", "doc/html/man7/X25519.html", "doc/html/man7/bio.html", - "doc/html/man7/crypto.html", "doc/html/man7/ct.html", "doc/html/man7/des_modes.html", "doc/html/man7/evp.html", @@ -17213,14 +19885,31 @@ our %unified_info = ( "doc/html/man7/life_cycle-mac.html", "doc/html/man7/life_cycle-pkey.html", "doc/html/man7/life_cycle-rand.html", - "doc/html/man7/migration_guide.html", "doc/html/man7/openssl-core.h.html", "doc/html/man7/openssl-core_dispatch.h.html", "doc/html/man7/openssl-core_names.h.html", "doc/html/man7/openssl-env.html", "doc/html/man7/openssl-glossary.html", + "doc/html/man7/openssl-qlog.html", + "doc/html/man7/openssl-quic-concurrency.html", + "doc/html/man7/openssl-quic.html", "doc/html/man7/openssl-threads.html", "doc/html/man7/openssl_user_macros.html", + "doc/html/man7/ossl-guide-introduction.html", + "doc/html/man7/ossl-guide-libcrypto-introduction.html", + "doc/html/man7/ossl-guide-libraries-introduction.html", + "doc/html/man7/ossl-guide-libssl-introduction.html", + "doc/html/man7/ossl-guide-migration.html", + "doc/html/man7/ossl-guide-quic-client-block.html", + "doc/html/man7/ossl-guide-quic-client-non-block.html", + "doc/html/man7/ossl-guide-quic-introduction.html", + "doc/html/man7/ossl-guide-quic-multi-stream.html", + "doc/html/man7/ossl-guide-quic-server-block.html", + "doc/html/man7/ossl-guide-quic-server-non-block.html", + "doc/html/man7/ossl-guide-tls-client-block.html", + "doc/html/man7/ossl-guide-tls-client-non-block.html", + "doc/html/man7/ossl-guide-tls-introduction.html", + "doc/html/man7/ossl-guide-tls-server-block.html", "doc/html/man7/ossl_store-file.html", "doc/html/man7/ossl_store.html", "doc/html/man7/passphrase-encoding.html", @@ -17239,10 +19928,10 @@ our %unified_info = ( "doc/html/man7/provider-object.html", "doc/html/man7/provider-rand.html", "doc/html/man7/provider-signature.html", + "doc/html/man7/provider-skeymgmt.html", "doc/html/man7/provider-storemgmt.html", "doc/html/man7/provider.html", "doc/html/man7/proxy-certificates.html", - "doc/html/man7/ssl.html", "doc/html/man7/x509.html" ] }, @@ -17257,12 +19946,21 @@ our %unified_info = ( ] }, "includes" => { + "OpenSSLConfig.cmake" => [ + "." + ], + "OpenSSLConfigVersion.cmake" => [ + "." + ], "apps/asn1parse.o" => [ "apps" ], "apps/ca.o" => [ "apps" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps" + ], "apps/ciphers.o" => [ "apps" ], @@ -17489,6 +20187,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps" + ], "apps/openssl-bin-smime.o" => [ "apps" ], @@ -17576,6 +20277,9 @@ our %unified_info = ( "apps/sess_id.o" => [ "apps" ], + "apps/skeyutl.o" => [ + "apps" + ], "apps/smime.o" => [ "apps" ], @@ -17627,6 +20331,12 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.o" => [ "crypto" ], + "crypto/aes/vpaes-armv8.o" => [ + "crypto" + ], + "crypto/aes/vpaes-loongarch64.o" => [ + "crypto" + ], "crypto/arm64cpuid.o" => [ "crypto" ], @@ -17678,9 +20388,15 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.o" => [ "crypto" ], + "crypto/chacha/chacha-armv8-sve.o" => [ + "crypto" + ], "crypto/chacha/chacha-armv8.o" => [ "crypto" ], + "crypto/chacha/chacha-loongarch64.o" => [ + "crypto" + ], "crypto/chacha/chacha-s390x.o" => [ "crypto" ], @@ -17705,15 +20421,27 @@ our %unified_info = ( "crypto/ec/ecp_s390x_nistp.o" => [ "crypto" ], + "crypto/ec/ecp_sm2p256-armv8.o" => [ + "crypto" + ], + "crypto/ec/ecx_key.o" => [ + "crypto" + ], "crypto/ec/ecx_meth.o" => [ "crypto" ], "crypto/ec/ecx_s390x.o" => [ "crypto" ], + "crypto/ec/libcrypto-lib-ecx_key.o" => [ + "crypto" + ], "crypto/ec/libcrypto-lib-ecx_meth.o" => [ "crypto" ], + "crypto/ec/libfips-lib-ecx_key.o" => [ + "crypto" + ], "crypto/evp/e_aes.o" => [ "crypto", "crypto/modes" @@ -17785,9 +20513,18 @@ our %unified_info = ( "crypto/libfips-lib-cpuid.o" => [ "." ], + "crypto/md5/md5-aarch64.o" => [ + "crypto" + ], + "crypto/md5/md5-loongarch64.o" => [ + "crypto" + ], "crypto/md5/md5-sparcv9.o" => [ "crypto" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.o" => [ + "crypto" + ], "crypto/modes/aes-gcm-armv8_64.o" => [ "crypto" ], @@ -17812,6 +20549,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-gcm128.o" => [ "crypto" ], + "crypto/params_idx.c" => [ + "util/perl" + ], "crypto/poly1305/poly1305-armv4.o" => [ "crypto" ], @@ -17833,6 +20573,9 @@ our %unified_info = ( "crypto/sha/keccak1600-armv4.o" => [ "crypto" ], + "crypto/sha/keccak1600-armv8.o" => [ + "crypto" + ], "crypto/sha/sha1-armv4-large.o" => [ "crypto" ], @@ -17878,6 +20621,18 @@ our %unified_info = ( "crypto/sha/sha512-sparcv9.o" => [ "crypto" ], + "crypto/sm3/sm3-armv8.o" => [ + "crypto" + ], + "crypto/sm4/sm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4_ex-armv8.o" => [ + "crypto" + ], "doc/man1/openssl-asn1parse.pod" => [ "doc" ], @@ -18010,6 +20765,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc" + ], "doc/man1/openssl-smime.pod" => [ "doc" ], @@ -18037,6 +20795,24 @@ our %unified_info = ( "doc/man1/openssl-x509.pod" => [ "doc" ], + "exporters/OpenSSLConfig.cmake" => [ + "." + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "." + ], + "exporters/libcrypto.pc" => [ + "." + ], + "exporters/libssl.pc" => [ + "." + ], + "exporters/openssl.pc" => [ + "." + ], + "fuzz/acert-test" => [ + "include" + ], "fuzz/asn1-test" => [ "include" ], @@ -18067,12 +20843,69 @@ our %unified_info = ( "fuzz/ct-test" => [ "include" ], + "fuzz/decoder-test" => [ + "include" + ], + "fuzz/dtlsclient-test" => [ + "include" + ], + "fuzz/dtlsserver-test" => [ + "include" + ], + "fuzz/hashtable-test" => [ + "include" + ], + "fuzz/ml-dsa-test" => [ + "include" + ], + "fuzz/ml-kem-test" => [ + "include" + ], + "fuzz/pem-test" => [ + "include" + ], + "fuzz/provider-test" => [ + "include" + ], + "fuzz/punycode-test" => [ + "include" + ], + "fuzz/quic-client-test" => [ + "include" + ], + "fuzz/quic-lcidm-test" => [ + "include" + ], + "fuzz/quic-rcidm-test" => [ + "include" + ], + "fuzz/quic-server-test" => [ + "include" + ], + "fuzz/quic-srtm-test" => [ + "include" + ], "fuzz/server-test" => [ "include" ], + "fuzz/slh-dsa-test" => [ + "include" + ], + "fuzz/smime-test" => [ + "include" + ], + "fuzz/v3name-test" => [ + "include" + ], "fuzz/x509-test" => [ "include" ], + "include/internal/param_names.h" => [ + "util/perl" + ], + "include/openssl/core_names.h" => [ + "util/perl" + ], "libcrypto" => [ ".", "include", @@ -18083,6 +20916,9 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libcrypto.pc" => [ + "." + ], "libcrypto.rc" => [ "." ], @@ -18094,9 +20930,15 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libssl.pc" => [ + "." + ], "libssl.rc" => [ "." ], + "openssl.pc" => [ + "." + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der" ], @@ -18136,6 +20978,15 @@ our %unified_info = ( "providers/common/der/der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der" ], @@ -18148,6 +20999,15 @@ our %unified_info = ( "providers/common/der/der_rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der" ], @@ -18193,12 +21053,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov" ], @@ -18229,9 +21101,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der" ], @@ -18274,9 +21152,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18289,12 +21173,24 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18307,28 +21203,39 @@ our %unified_info = ( "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libdefault.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libfips.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/liblegacy.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" + ], + "providers/libtemplate.a" => [ + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" ], "test/aborttest" => [ "include", @@ -18397,6 +21304,14 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_addr_test" => [ + "include", + "apps/include" + ], + "test/bio_base64_test" => [ + "include", + "apps/include" + ], "test/bio_callback_test" => [ "include", "apps/include" @@ -18405,11 +21320,20 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_dgram_test" => [ + "include", + "apps/include", + "." + ], "test/bio_enc_test" => [ "include", "apps/include" ], - "test/bio_memleak_test" => [ + "test/bio_memleak_test" => [ + "include", + "apps/include" + ], + "test/bio_meth_test" => [ "include", "apps/include" ], @@ -18426,6 +21350,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_tfo_test" => [ + "include", + "apps/include", + "." + ], "test/bioprinttest" => [ "include", "apps/include" @@ -18440,6 +21369,9 @@ our %unified_info = ( "include", "apps/include" ], + "test/build_wincrypt_test" => [ + "include" + ], "test/buildtest_c_aes" => [ "include" ], @@ -18455,6 +21387,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => [ "include" ], + "test/buildtest_c_byteorder" => [ + "include" + ], "test/buildtest_c_camellia" => [ "include" ], @@ -18479,9 +21414,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => [ "include" ], - "test/buildtest_c_core_names" => [ - "include" - ], "test/buildtest_c_core_object" => [ "include" ], @@ -18506,6 +21438,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => [ "include" ], + "test/buildtest_c_e_ostime" => [ + "include" + ], "test/buildtest_c_ebcdic" => [ "include" ], @@ -18533,12 +21468,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => [ "include" ], + "test/buildtest_c_hpke" => [ + "include" + ], "test/buildtest_c_http" => [ "include" ], "test/buildtest_c_idea" => [ "include" ], + "test/buildtest_c_indicator" => [ + "include" + ], "test/buildtest_c_kdf" => [ "include" ], @@ -18554,6 +21495,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => [ "include" ], + "test/buildtest_c_ml_kem" => [ + "include" + ], "test/buildtest_c_modes" => [ "include" ], @@ -18584,6 +21528,9 @@ our %unified_info = ( "test/buildtest_c_provider" => [ "include" ], + "test/buildtest_c_quic" => [ + "include" + ], "test/buildtest_c_rand" => [ "include" ], @@ -18626,6 +21573,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => [ "include" ], + "test/buildtest_c_thread" => [ + "include" + ], "test/buildtest_c_tls1" => [ "include" ], @@ -18641,10 +21591,24 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => [ "include" ], + "test/byteorder_test" => [ + "include", + "apps/include" + ], + "test/ca_internals_test" => [ + ".", + "include", + "apps/include" + ], "test/casttest" => [ "include", "apps/include" ], + "test/cert_comp_test" => [ + "include", + "apps/include", + "." + ], "test/chacha_internal_test" => [ ".", "include", @@ -18768,6 +21732,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/decoder_propq_test" => [ + ".", + "include", + "apps/include" + ], "test/defltfips_test" => [ "include", "apps/include" @@ -18783,7 +21752,8 @@ our %unified_info = ( "test/drbgtest" => [ "include", "apps/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "test/dsa_no_digest_size_test" => [ "include", @@ -18826,7 +21796,9 @@ our %unified_info = ( "test/endecode_test" => [ ".", "include", - "apps/include" + "apps/include", + "providers/common/include", + "providers/implementations/include" ], "test/endecoder_legacy_test" => [ ".", @@ -18871,6 +21843,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_pkey_dhkem_test" => [ + "include", + "apps/include" + ], "test/evp_pkey_dparams_test" => [ "include", "apps/include" @@ -18879,10 +21855,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_skey_test" => [ + "include", + "apps/include" + ], "test/evp_test" => [ "include", "apps/include" ], + "test/evp_xof_test" => [ + "include", + "apps/include" + ], "test/exdatatest" => [ "include", "apps/include" @@ -18983,22 +21967,62 @@ our %unified_info = ( ".", "include" ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/pkcs12.o" => [ ".", "include" ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + ".", + "include" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ ".", "include" ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/ssl_test-bin-handshake.o" => [ ".", "include" @@ -19032,6 +22056,10 @@ our %unified_info = ( ".", "include" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/hexstr_test" => [ ".", "include", @@ -19041,6 +22069,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/hpke_test" => [ + "include", + "apps/include" + ], "test/http_test" => [ "include", "apps/include" @@ -19053,6 +22085,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/json_test" => [ + "include", + "apps/include" + ], "test/keymgmt_internal_test" => [ ".", "include", @@ -19067,6 +22103,10 @@ our %unified_info = ( "apps/include", "." ], + "test/list_test" => [ + "include", + "apps/include" + ], "test/localetest" => [ "include", "apps/include" @@ -19080,10 +22120,27 @@ our %unified_info = ( "include", "apps/include" ], + "test/membio_test" => [ + "include", + "apps/include", + "." + ], "test/memleaktest" => [ "include", "apps/include" ], + "test/ml_dsa_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_evp_extra_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_internal_test" => [ + "include", + "apps/include" + ], "test/modes_internal_test" => [ ".", "include", @@ -19118,6 +22175,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pairwise_fail_test" => [ + "include", + "apps/include" + ], "test/param_build_test" => [ "include", "apps/include" @@ -19151,6 +22212,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pkcs12_api_test" => [ + "include", + "apps/include" + ], "test/pkcs12_format_test" => [ "include", "apps/include" @@ -19172,6 +22237,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/priority_queue_test" => [ + "include", + "apps/include" + ], "test/property_test" => [ ".", "include", @@ -19185,6 +22254,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/provider_default_search_path_test" => [ + "include", + "apps/include" + ], "test/provider_fallback_test" => [ "include", "apps/include" @@ -19211,6 +22284,97 @@ our %unified_info = ( "include", "apps/include" ], + "test/quic_ackm_test" => [ + "include", + "apps/include" + ], + "test/quic_cc_test" => [ + "include", + "apps/include" + ], + "test/quic_cfq_test" => [ + "include", + "apps/include" + ], + "test/quic_client_test" => [ + "include", + "apps/include" + ], + "test/quic_fc_test" => [ + "include", + "apps/include" + ], + "test/quic_fifd_test" => [ + "include", + "apps/include" + ], + "test/quic_lcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_multistream_test" => [ + "include", + "apps/include" + ], + "test/quic_newcid_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_qlog_test" => [ + "include", + "apps/include" + ], + "test/quic_radix_test" => [ + "include", + "apps/include" + ], + "test/quic_rcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_record_test" => [ + "include", + "apps/include" + ], + "test/quic_srt_gen_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_srtm_test" => [ + "include", + "apps/include" + ], + "test/quic_stream_test" => [ + "include", + "apps/include" + ], + "test/quic_tserver_test" => [ + "include", + "apps/include" + ], + "test/quic_txp_test" => [ + "include", + "apps/include" + ], + "test/quic_txpim_test" => [ + "include", + "apps/include" + ], + "test/quic_wire_test" => [ + "include", + "apps/include" + ], + "test/quicapitest" => [ + "include", + "apps/include" + ], + "test/quicfaultstest" => [ + "include", + "apps/include", + "." + ], "test/rand_status_test" => [ "include", "apps/include" @@ -19231,14 +22395,20 @@ our %unified_info = ( "include", "apps/include" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "include", - "apps/include" + "apps/include", + "crypto" ], "test/recordlentest" => [ "include", "apps/include" ], + "test/rpktest" => [ + "include", + "apps/include", + "." + ], "test/rsa_complex" => [ "include", "apps/include" @@ -19257,6 +22427,15 @@ our %unified_info = ( "include", "apps/include" ], + "test/rsa_x931_test" => [ + ".", + "include", + "apps/include" + ], + "test/safe_math_test" => [ + "include", + "apps/include" + ], "test/sanitytest" => [ "include", "apps/include" @@ -19278,6 +22457,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/slh_dsa_test" => [ + "include", + "apps/include" + ], "test/sm2_internal_test" => [ "include", "apps/include" @@ -19308,6 +22491,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/ssl_handshake_rtt_test" => [ + "include", + "apps/include", + "." + ], "test/ssl_old_test" => [ ".", "include", @@ -19324,6 +22512,7 @@ our %unified_info = ( "test/sslapitest" => [ "include", "apps/include", + "providers/common/include", "." ], "test/sslbuffertest" => [ @@ -19338,6 +22527,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/strtoultest" => [ + "include", + "apps/include" + ], "test/sysdefaulttest" => [ "include", "apps/include" @@ -19346,7 +22539,13 @@ our %unified_info = ( "include", "apps/include" ], + "test/threadpool_test" => [ + ".", + "include", + "apps/include" + ], "test/threadstest" => [ + ".", "include", "apps/include" ], @@ -19358,6 +22557,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/time_test" => [ + "include", + "apps/include" + ], "test/tls13ccstest" => [ "include", "apps/include" @@ -19367,6 +22570,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/tls13groupselection_test" => [ + "include", + "apps/include" + ], "test/trace_api_test" => [ ".", "include", @@ -19405,6 +22612,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_acert_test" => [ + "include", + "apps/include" + ], "test/x509_check_cert_pkey_test" => [ "include", "apps/include" @@ -19418,6 +22629,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_load_cert_file_test" => [ + "include", + "apps/include" + ], + "test/x509_req_test" => [ + "include", + "apps/include" + ], + "test/x509_test" => [ + "include", + "apps/include" + ], "test/x509_time_test" => [ "include", "apps/include" @@ -19439,6 +22662,7 @@ our %unified_info = ( "providers/libdefault.a", "providers/libfips.a", "providers/liblegacy.a", + "providers/libtemplate.a", "test/libtestutil.a" ], "mandocs" => { @@ -19491,6 +22715,7 @@ our %unified_info = ( "doc/man/man1/openssl-s_server.1", "doc/man/man1/openssl-s_time.1", "doc/man/man1/openssl-sess_id.1", + "doc/man/man1/openssl-skeyutl.1", "doc/man/man1/openssl-smime.1", "doc/man/man1/openssl-speed.1", "doc/man/man1/openssl-spkac.1", @@ -19540,6 +22765,7 @@ our %unified_info = ( "doc/man/man3/BIO_find_type.3", "doc/man/man3/BIO_get_data.3", "doc/man/man3/BIO_get_ex_new_index.3", + "doc/man/man3/BIO_get_rpoll_descriptor.3", "doc/man/man3/BIO_meth_new.3", "doc/man/man3/BIO_new.3", "doc/man/man3/BIO_new_CMS.3", @@ -19552,11 +22778,13 @@ our %unified_info = ( "doc/man/man3/BIO_s_connect.3", "doc/man/man3/BIO_s_core.3", "doc/man/man3/BIO_s_datagram.3", + "doc/man/man3/BIO_s_dgram_pair.3", "doc/man/man3/BIO_s_fd.3", "doc/man/man3/BIO_s_file.3", "doc/man/man3/BIO_s_mem.3", "doc/man/man3/BIO_s_null.3", "doc/man/man3/BIO_s_socket.3", + "doc/man/man3/BIO_sendmmsg.3", "doc/man/man3/BIO_set_callback.3", "doc/man/man3/BIO_should_retry.3", "doc/man/man3/BIO_socket_wait.3", @@ -19581,6 +22809,7 @@ our %unified_info = ( "doc/man/man3/BN_swap.3", "doc/man/man3/BN_zero.3", "doc/man/man3/BUF_MEM_new.3", + "doc/man/man3/CMAC_CTX.3", "doc/man/man3/CMS_EncryptedData_decrypt.3", "doc/man/man3/CMS_EncryptedData_encrypt.3", "doc/man/man3/CMS_EnvelopedData_create.3", @@ -19603,6 +22832,7 @@ our %unified_info = ( "doc/man/man3/CMS_uncompress.3", "doc/man/man3/CMS_verify.3", "doc/man/man3/CMS_verify_receipt.3", + "doc/man/man3/COMP_CTX_new.3", "doc/man/man3/CONF_modules_free.3", "doc/man/man3/CONF_modules_load_file.3", "doc/man/man3/CRYPTO_THREAD_run_once.3", @@ -19636,6 +22866,8 @@ our %unified_info = ( "doc/man/man3/DSA_size.3", "doc/man/man3/DTLS_get_data_mtu.3", "doc/man/man3/DTLS_set_timer_cb.3", + "doc/man/man3/DTLSv1_get_timeout.3", + "doc/man/man3/DTLSv1_handle_timeout.3", "doc/man/man3/DTLSv1_listen.3", "doc/man/man3/ECDSA_SIG_new.3", "doc/man/man3/ECDSA_sign.3", @@ -19682,6 +22914,7 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_ctrl.3", "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3", "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3", + "doc/man/man3/EVP_PKEY_CTX_get_algor.3", "doc/man/man3/EVP_PKEY_CTX_new.3", "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3", "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3", @@ -19721,6 +22954,8 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_verify_recover.3", "doc/man/man3/EVP_RAND.3", "doc/man/man3/EVP_SIGNATURE.3", + "doc/man/man3/EVP_SKEY.3", + "doc/man/man3/EVP_SKEYMGMT.3", "doc/man/man3/EVP_SealInit.3", "doc/man/man3/EVP_SignInit.3", "doc/man/man3/EVP_VerifyInit.3", @@ -19750,6 +22985,7 @@ our %unified_info = ( "doc/man/man3/EVP_sm3.3", "doc/man/man3/EVP_sm4_cbc.3", "doc/man/man3/EVP_whirlpool.3", + "doc/man/man3/GENERAL_NAME.3", "doc/man/man3/HMAC.3", "doc/man/man3/MD5.3", "doc/man/man3/MDC2_Init.3", @@ -19774,14 +23010,18 @@ our %unified_info = ( "doc/man/man3/OPENSSL_init_ssl.3", "doc/man/man3/OPENSSL_instrument_bus.3", "doc/man/man3/OPENSSL_load_builtin_modules.3", + "doc/man/man3/OPENSSL_load_u16_le.3", "doc/man/man3/OPENSSL_malloc.3", + "doc/man/man3/OPENSSL_riscvcap.3", "doc/man/man3/OPENSSL_s390xcap.3", "doc/man/man3/OPENSSL_secure_malloc.3", "doc/man/man3/OPENSSL_strcasecmp.3", "doc/man/man3/OSSL_ALGORITHM.3", "doc/man/man3/OSSL_CALLBACK.3", + "doc/man/man3/OSSL_CMP_ATAV_set0.3", "doc/man/man3/OSSL_CMP_CTX_new.3", "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3", + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3", "doc/man/man3/OSSL_CMP_ITAV_set0.3", "doc/man/man3/OSSL_CMP_MSG_get0_header.3", "doc/man/man3/OSSL_CMP_MSG_http_perform.3", @@ -19805,18 +23045,27 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_CTX.3", "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3", "doc/man/man3/OSSL_ENCODER_to_bio.3", + "doc/man/man3/OSSL_ERR_STATE_save.3", "doc/man/man3/OSSL_ESS_check_signing_certs.3", + "doc/man/man3/OSSL_GENERAL_NAMES_print.3", + "doc/man/man3/OSSL_HPKE_CTX_new.3", "doc/man/man3/OSSL_HTTP_REQ_CTX.3", "doc/man/man3/OSSL_HTTP_parse_url.3", "doc/man/man3/OSSL_HTTP_transfer.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3", + "doc/man/man3/OSSL_INDICATOR_set_callback.3", "doc/man/man3/OSSL_ITEM.3", "doc/man/man3/OSSL_LIB_CTX.3", + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3", "doc/man/man3/OSSL_PARAM.3", "doc/man/man3/OSSL_PARAM_BLD.3", "doc/man/man3/OSSL_PARAM_allocate_from_text.3", "doc/man/man3/OSSL_PARAM_dup.3", "doc/man/man3/OSSL_PARAM_int.3", + "doc/man/man3/OSSL_PARAM_print_to_bio.3", "doc/man/man3/OSSL_PROVIDER.3", + "doc/man/man3/OSSL_QUIC_client_method.3", "doc/man/man3/OSSL_SELF_TEST_new.3", "doc/man/man3/OSSL_SELF_TEST_set_callback.3", "doc/man/man3/OSSL_STORE_INFO.3", @@ -19825,11 +23074,13 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_attach.3", "doc/man/man3/OSSL_STORE_expect.3", "doc/man/man3/OSSL_STORE_open.3", + "doc/man/man3/OSSL_sleep.3", "doc/man/man3/OSSL_trace_enabled.3", "doc/man/man3/OSSL_trace_get_category_num.3", "doc/man/man3/OSSL_trace_set_channel.3", "doc/man/man3/OpenSSL_add_all_algorithms.3", "doc/man/man3/OpenSSL_version.3", + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3", "doc/man/man3/PEM_X509_INFO_read_bio_ex.3", "doc/man/man3/PEM_bytes_read_bio.3", "doc/man/man3/PEM_read.3", @@ -19842,6 +23093,7 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_create_cert.3", "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3", "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3", + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3", "doc/man/man3/PKCS12_add1_attr_by_NID.3", "doc/man/man3/PKCS12_add_CSPName_asc.3", "doc/man/man3/PKCS12_add_cert.3", @@ -19933,6 +23185,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_sess_set_get_cb.3", "doc/man/man3/SSL_CTX_sessions.3", "doc/man/man3/SSL_CTX_set0_CA_list.3", + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3", "doc/man/man3/SSL_CTX_set1_curves.3", "doc/man/man3/SSL_CTX_set1_sigalgs.3", "doc/man/man3/SSL_CTX_set1_verify_cert_store.3", @@ -19946,6 +23199,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_ct_validation_callback.3", "doc/man/man3/SSL_CTX_set_ctlog_list_file.3", "doc/man/man3/SSL_CTX_set_default_passwd_cb.3", + "doc/man/man3/SSL_CTX_set_domain_flags.3", "doc/man/man3/SSL_CTX_set_generate_session_id.3", "doc/man/man3/SSL_CTX_set_info_callback.3", "doc/man/man3/SSL_CTX_set_keylog_callback.3", @@ -19953,6 +23207,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_min_proto_version.3", "doc/man/man3/SSL_CTX_set_mode.3", "doc/man/man3/SSL_CTX_set_msg_callback.3", + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3", "doc/man/man3/SSL_CTX_set_num_tickets.3", "doc/man/man3/SSL_CTX_set_options.3", "doc/man/man3/SSL_CTX_set_psk_client_callback.3", @@ -19991,6 +23246,7 @@ our %unified_info = ( "doc/man/man3/SSL_SESSION_print.3", "doc/man/man3/SSL_SESSION_set1_id.3", "doc/man/man3/SSL_accept.3", + "doc/man/man3/SSL_accept_stream.3", "doc/man/man3/SSL_alert_type_string.3", "doc/man/man3/SSL_alloc_buffers.3", "doc/man/man3/SSL_check_chain.3", @@ -20000,59 +23256,90 @@ our %unified_info = ( "doc/man/man3/SSL_export_keying_material.3", "doc/man/man3/SSL_extension_supported.3", "doc/man/man3/SSL_free.3", + "doc/man/man3/SSL_get0_connection.3", + "doc/man/man3/SSL_get0_group_name.3", + "doc/man/man3/SSL_get0_peer_rpk.3", "doc/man/man3/SSL_get0_peer_scts.3", + "doc/man/man3/SSL_get1_builtin_sigalgs.3", "doc/man/man3/SSL_get_SSL_CTX.3", "doc/man/man3/SSL_get_all_async_fds.3", "doc/man/man3/SSL_get_certificate.3", "doc/man/man3/SSL_get_ciphers.3", "doc/man/man3/SSL_get_client_random.3", + "doc/man/man3/SSL_get_conn_close_info.3", "doc/man/man3/SSL_get_current_cipher.3", "doc/man/man3/SSL_get_default_timeout.3", "doc/man/man3/SSL_get_error.3", + "doc/man/man3/SSL_get_event_timeout.3", "doc/man/man3/SSL_get_extms_support.3", "doc/man/man3/SSL_get_fd.3", + "doc/man/man3/SSL_get_handshake_rtt.3", "doc/man/man3/SSL_get_peer_cert_chain.3", "doc/man/man3/SSL_get_peer_certificate.3", "doc/man/man3/SSL_get_peer_signature_nid.3", "doc/man/man3/SSL_get_peer_tmp_key.3", "doc/man/man3/SSL_get_psk_identity.3", "doc/man/man3/SSL_get_rbio.3", + "doc/man/man3/SSL_get_rpoll_descriptor.3", "doc/man/man3/SSL_get_session.3", "doc/man/man3/SSL_get_shared_sigalgs.3", + "doc/man/man3/SSL_get_stream_id.3", + "doc/man/man3/SSL_get_stream_read_state.3", + "doc/man/man3/SSL_get_value_uint.3", "doc/man/man3/SSL_get_verify_result.3", "doc/man/man3/SSL_get_version.3", "doc/man/man3/SSL_group_to_name.3", + "doc/man/man3/SSL_handle_events.3", "doc/man/man3/SSL_in_init.3", + "doc/man/man3/SSL_inject_net_dgram.3", "doc/man/man3/SSL_key_update.3", "doc/man/man3/SSL_library_init.3", "doc/man/man3/SSL_load_client_CA_file.3", "doc/man/man3/SSL_new.3", + "doc/man/man3/SSL_new_domain.3", + "doc/man/man3/SSL_new_listener.3", + "doc/man/man3/SSL_new_stream.3", "doc/man/man3/SSL_pending.3", + "doc/man/man3/SSL_poll.3", "doc/man/man3/SSL_read.3", "doc/man/man3/SSL_read_early_data.3", "doc/man/man3/SSL_rstate_string.3", "doc/man/man3/SSL_session_reused.3", "doc/man/man3/SSL_set1_host.3", + "doc/man/man3/SSL_set1_initial_peer_addr.3", + "doc/man/man3/SSL_set1_server_cert_type.3", "doc/man/man3/SSL_set_async_callback.3", "doc/man/man3/SSL_set_bio.3", + "doc/man/man3/SSL_set_blocking_mode.3", "doc/man/man3/SSL_set_connect_state.3", + "doc/man/man3/SSL_set_default_stream_mode.3", "doc/man/man3/SSL_set_fd.3", + "doc/man/man3/SSL_set_incoming_stream_policy.3", + "doc/man/man3/SSL_set_quic_tls_cbs.3", "doc/man/man3/SSL_set_retry_verify.3", "doc/man/man3/SSL_set_session.3", + "doc/man/man3/SSL_set_session_secret_cb.3", "doc/man/man3/SSL_set_shutdown.3", "doc/man/man3/SSL_set_verify_result.3", "doc/man/man3/SSL_shutdown.3", "doc/man/man3/SSL_state_string.3", + "doc/man/man3/SSL_stream_conclude.3", + "doc/man/man3/SSL_stream_reset.3", "doc/man/man3/SSL_want.3", "doc/man/man3/SSL_write.3", "doc/man/man3/TS_RESP_CTX_new.3", - "doc/man/man3/TS_VERIFY_CTX_set_certs.3", + "doc/man/man3/TS_VERIFY_CTX.3", "doc/man/man3/UI_STRING.3", "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", + "doc/man/man3/X509_ACERT_add1_attr.3", + "doc/man/man3/X509_ACERT_add_attr_nconf.3", + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3", + "doc/man/man3/X509_ACERT_get_attr.3", + "doc/man/man3/X509_ACERT_print_ex.3", "doc/man/man3/X509_ALGOR_dup.3", "doc/man/man3/X509_ATTRIBUTE.3", "doc/man/man3/X509_CRL_get0_by_serial.3", @@ -20069,6 +23356,7 @@ our %unified_info = ( "doc/man/man3/X509_REQ_get_attr.3", "doc/man/man3/X509_REQ_get_extensions.3", "doc/man/man3/X509_SIG_get0.3", + "doc/man/man3/X509_STORE_CTX_get_by_subject.3", "doc/man/man3/X509_STORE_CTX_get_error.3", "doc/man/man3/X509_STORE_CTX_new.3", "doc/man/man3/X509_STORE_CTX_set_verify_cb.3", @@ -20091,6 +23379,7 @@ our %unified_info = ( "doc/man/man3/X509_get0_notBefore.3", "doc/man/man3/X509_get0_signature.3", "doc/man/man3/X509_get0_uids.3", + "doc/man/man3/X509_get_default_cert_file.3", "doc/man/man3/X509_get_extension_flags.3", "doc/man/man3/X509_get_pubkey.3", "doc/man/man3/X509_get_serialNumber.3", @@ -20136,12 +23425,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-RC5.7", "doc/man/man7/EVP_CIPHER-SEED.7", "doc/man/man7/EVP_CIPHER-SM4.7", + "doc/man/man7/EVP_KDF-ARGON2.7", "doc/man/man7/EVP_KDF-HKDF.7", + "doc/man/man7/EVP_KDF-HMAC-DRBG.7", "doc/man/man7/EVP_KDF-KB.7", "doc/man/man7/EVP_KDF-KRB5KDF.7", "doc/man/man7/EVP_KDF-PBKDF1.7", "doc/man/man7/EVP_KDF-PBKDF2.7", "doc/man/man7/EVP_KDF-PKCS12KDF.7", + "doc/man/man7/EVP_KDF-PVKKDF.7", "doc/man/man7/EVP_KDF-SCRYPT.7", "doc/man/man7/EVP_KDF-SS.7", "doc/man/man7/EVP_KDF-SSHKDF.7", @@ -20150,7 +23442,10 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X942-ASN1.7", "doc/man/man7/EVP_KDF-X942-CONCAT.7", "doc/man/man7/EVP_KDF-X963.7", + "doc/man/man7/EVP_KEM-EC.7", + "doc/man/man7/EVP_KEM-ML-KEM.7", "doc/man/man7/EVP_KEM-RSA.7", + "doc/man/man7/EVP_KEM-X25519.7", "doc/man/man7/EVP_KEYEXCH-DH.7", "doc/man/man7/EVP_KEYEXCH-ECDH.7", "doc/man/man7/EVP_KEYEXCH-X25519.7", @@ -20162,6 +23457,7 @@ our %unified_info = ( "doc/man/man7/EVP_MAC-Poly1305.7", "doc/man/man7/EVP_MAC-Siphash.7", "doc/man/man7/EVP_MD-BLAKE2.7", + "doc/man/man7/EVP_MD-KECCAK.7", "doc/man/man7/EVP_MD-MD2.7", "doc/man/man7/EVP_MD-MD4.7", "doc/man/man7/EVP_MD-MD5-SHA1.7", @@ -20181,12 +23477,17 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-EC.7", "doc/man/man7/EVP_PKEY-FFC.7", "doc/man/man7/EVP_PKEY-HMAC.7", + "doc/man/man7/EVP_PKEY-ML-DSA.7", + "doc/man/man7/EVP_PKEY-ML-KEM.7", "doc/man/man7/EVP_PKEY-RSA.7", + "doc/man/man7/EVP_PKEY-SLH-DSA.7", "doc/man/man7/EVP_PKEY-SM2.7", "doc/man/man7/EVP_PKEY-X25519.7", + "doc/man/man7/EVP_RAND-CRNG-TEST.7", "doc/man/man7/EVP_RAND-CTR-DRBG.7", "doc/man/man7/EVP_RAND-HASH-DRBG.7", "doc/man/man7/EVP_RAND-HMAC-DRBG.7", + "doc/man/man7/EVP_RAND-JITTER.7", "doc/man/man7/EVP_RAND-SEED-SRC.7", "doc/man/man7/EVP_RAND-TEST-RAND.7", "doc/man/man7/EVP_RAND.7", @@ -20194,17 +23495,19 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-ECDSA.7", "doc/man/man7/EVP_SIGNATURE-ED25519.7", "doc/man/man7/EVP_SIGNATURE-HMAC.7", + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7", "doc/man/man7/EVP_SIGNATURE-RSA.7", + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7", "doc/man/man7/OSSL_PROVIDER-FIPS.7", "doc/man/man7/OSSL_PROVIDER-base.7", "doc/man/man7/OSSL_PROVIDER-default.7", "doc/man/man7/OSSL_PROVIDER-legacy.7", "doc/man/man7/OSSL_PROVIDER-null.7", + "doc/man/man7/OSSL_STORE-winstore.7", "doc/man/man7/RAND.7", "doc/man/man7/RSA-PSS.7", "doc/man/man7/X25519.7", "doc/man/man7/bio.7", - "doc/man/man7/crypto.7", "doc/man/man7/ct.7", "doc/man/man7/des_modes.7", "doc/man/man7/evp.7", @@ -20215,14 +23518,31 @@ our %unified_info = ( "doc/man/man7/life_cycle-mac.7", "doc/man/man7/life_cycle-pkey.7", "doc/man/man7/life_cycle-rand.7", - "doc/man/man7/migration_guide.7", "doc/man/man7/openssl-core.h.7", "doc/man/man7/openssl-core_dispatch.h.7", "doc/man/man7/openssl-core_names.h.7", "doc/man/man7/openssl-env.7", "doc/man/man7/openssl-glossary.7", + "doc/man/man7/openssl-qlog.7", + "doc/man/man7/openssl-quic-concurrency.7", + "doc/man/man7/openssl-quic.7", "doc/man/man7/openssl-threads.7", "doc/man/man7/openssl_user_macros.7", + "doc/man/man7/ossl-guide-introduction.7", + "doc/man/man7/ossl-guide-libcrypto-introduction.7", + "doc/man/man7/ossl-guide-libraries-introduction.7", + "doc/man/man7/ossl-guide-libssl-introduction.7", + "doc/man/man7/ossl-guide-migration.7", + "doc/man/man7/ossl-guide-quic-client-block.7", + "doc/man/man7/ossl-guide-quic-client-non-block.7", + "doc/man/man7/ossl-guide-quic-introduction.7", + "doc/man/man7/ossl-guide-quic-multi-stream.7", + "doc/man/man7/ossl-guide-quic-server-block.7", + "doc/man/man7/ossl-guide-quic-server-non-block.7", + "doc/man/man7/ossl-guide-tls-client-block.7", + "doc/man/man7/ossl-guide-tls-client-non-block.7", + "doc/man/man7/ossl-guide-tls-introduction.7", + "doc/man/man7/ossl-guide-tls-server-block.7", "doc/man/man7/ossl_store-file.7", "doc/man/man7/ossl_store.7", "doc/man/man7/passphrase-encoding.7", @@ -20241,10 +23561,10 @@ our %unified_info = ( "doc/man/man7/provider-object.7", "doc/man/man7/provider-rand.7", "doc/man/man7/provider-signature.7", + "doc/man/man7/provider-skeymgmt.7", "doc/man/man7/provider-storemgmt.7", "doc/man/man7/provider.7", "doc/man/man7/proxy-certificates.7", - "doc/man/man7/ssl.7", "doc/man/man7/x509.7" ] }, @@ -20256,6 +23576,7 @@ our %unified_info = ( ], "programs" => [ "apps/openssl", + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -20266,7 +23587,24 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test", "test/aborttest", "test/acvp_test", @@ -20284,21 +23622,28 @@ our %unified_info = ( "test/asynctest", "test/bad_dtls_test", "test/bftest", + "test/bio_addr_test", + "test/bio_base64_test", "test/bio_callback_test", "test/bio_core_test", + "test/bio_dgram_test", "test/bio_enc_test", "test/bio_memleak_test", + "test/bio_meth_test", "test/bio_prefix_text", "test/bio_pw_callback_test", "test/bio_readbuffer_test", + "test/bio_tfo_test", "test/bioprinttest", "test/bn_internal_test", "test/bntest", + "test/build_wincrypt_test", "test/buildtest_c_aes", "test/buildtest_c_async", "test/buildtest_c_blowfish", "test/buildtest_c_bn", "test/buildtest_c_buffer", + "test/buildtest_c_byteorder", "test/buildtest_c_camellia", "test/buildtest_c_cast", "test/buildtest_c_cmac", @@ -20307,7 +23652,6 @@ our %unified_info = ( "test/buildtest_c_conftypes", "test/buildtest_c_core", "test/buildtest_c_core_dispatch", - "test/buildtest_c_core_names", "test/buildtest_c_core_object", "test/buildtest_c_cryptoerr_legacy", "test/buildtest_c_decoder", @@ -20316,6 +23660,7 @@ our %unified_info = ( "test/buildtest_c_dsa", "test/buildtest_c_dtls1", "test/buildtest_c_e_os2", + "test/buildtest_c_e_ostime", "test/buildtest_c_ebcdic", "test/buildtest_c_ec", "test/buildtest_c_ecdh", @@ -20325,13 +23670,16 @@ our %unified_info = ( "test/buildtest_c_evp", "test/buildtest_c_fips_names", "test/buildtest_c_hmac", + "test/buildtest_c_hpke", "test/buildtest_c_http", "test/buildtest_c_idea", + "test/buildtest_c_indicator", "test/buildtest_c_kdf", "test/buildtest_c_macros", "test/buildtest_c_md4", "test/buildtest_c_md5", "test/buildtest_c_mdc2", + "test/buildtest_c_ml_kem", "test/buildtest_c_modes", "test/buildtest_c_obj_mac", "test/buildtest_c_objects", @@ -20342,6 +23690,7 @@ our %unified_info = ( "test/buildtest_c_pem2", "test/buildtest_c_prov_ssl", "test/buildtest_c_provider", + "test/buildtest_c_quic", "test/buildtest_c_rand", "test/buildtest_c_rc2", "test/buildtest_c_rc4", @@ -20356,11 +23705,14 @@ our %unified_info = ( "test/buildtest_c_stack", "test/buildtest_c_store", "test/buildtest_c_symhacks", + "test/buildtest_c_thread", "test/buildtest_c_tls1", "test/buildtest_c_ts", "test/buildtest_c_txt_db", "test/buildtest_c_types", "test/buildtest_c_whrlpool", + "test/byteorder_test", + "test/ca_internals_test", "test/casttest", "test/chacha_internal_test", "test/cipher_overhead_test", @@ -20389,6 +23741,7 @@ our %unified_info = ( "test/curve448_internal_test", "test/d2i_test", "test/danetest", + "test/decoder_propq_test", "test/defltfips_test", "test/destest", "test/dhtest", @@ -20413,9 +23766,12 @@ our %unified_info = ( "test/evp_kdf_test", "test/evp_libctx_test", "test/evp_pkey_ctx_new_from_name", + "test/evp_pkey_dhkem_test", "test/evp_pkey_dparams_test", "test/evp_pkey_provided_test", + "test/evp_skey_test", "test/evp_test", + "test/evp_xof_test", "test/exdatatest", "test/exptest", "test/ext_internal_test", @@ -20425,21 +23781,29 @@ our %unified_info = ( "test/gmdifftest", "test/hexstr_test", "test/hmactest", + "test/hpke_test", "test/http_test", "test/ideatest", "test/igetest", + "test/json_test", "test/keymgmt_internal_test", "test/lhash_test", + "test/list_test", "test/localetest", "test/mdc2_internal_test", "test/mdc2test", + "test/membio_test", "test/memleaktest", + "test/ml_dsa_test", + "test/ml_kem_evp_extra_test", + "test/ml_kem_internal_test", "test/modes_internal_test", "test/namemap_internal_test", "test/nodefltctxtest", "test/ocspapitest", "test/ossl_store_test", "test/packettest", + "test/pairwise_fail_test", "test/param_build_test", "test/params_api_test", "test/params_conversion_test", @@ -20448,36 +23812,65 @@ our %unified_info = ( "test/pbetest", "test/pem_read_depr_test", "test/pemtest", + "test/pkcs12_api_test", "test/pkcs12_format_test", "test/pkcs7_test", "test/pkey_meth_kdf_test", "test/pkey_meth_test", "test/poly1305_internal_test", + "test/priority_queue_test", "test/property_test", "test/prov_config_test", "test/provfetchtest", + "test/provider_default_search_path_test", "test/provider_fallback_test", "test/provider_internal_test", "test/provider_pkey_test", "test/provider_status_test", "test/provider_test", "test/punycode_test", + "test/quic_ackm_test", + "test/quic_cc_test", + "test/quic_cfq_test", + "test/quic_client_test", + "test/quic_fc_test", + "test/quic_fifd_test", + "test/quic_lcidm_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_qlog_test", + "test/quic_radix_test", + "test/quic_rcidm_test", + "test/quic_record_test", + "test/quic_srt_gen_test", + "test/quic_srtm_test", + "test/quic_stream_test", + "test/quic_tserver_test", + "test/quic_txp_test", + "test/quic_txpim_test", + "test/quic_wire_test", + "test/quicapitest", + "test/quicfaultstest", "test/rand_status_test", "test/rand_test", "test/rc2test", "test/rc4test", "test/rc5test", - "test/rdrand_sanitytest", + "test/rdcpu_sanitytest", "test/recordlentest", + "test/rpktest", "test/rsa_complex", "test/rsa_mp_test", "test/rsa_sp800_56b_test", "test/rsa_test", + "test/rsa_x931_test", + "test/safe_math_test", "test/sanitytest", "test/secmemtest", "test/servername_test", "test/sha_test", "test/siphash_internal_test", + "test/slh_dsa_test", "test/sm2_internal_test", "test/sm3_internal_test", "test/sm4_internal_test", @@ -20485,6 +23878,7 @@ our %unified_info = ( "test/srptest", "test/ssl_cert_table_internal_test", "test/ssl_ctx_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", @@ -20492,13 +23886,17 @@ our %unified_info = ( "test/sslbuffertest", "test/sslcorrupttest", "test/stack_test", + "test/strtoultest", "test/sysdefaulttest", "test/test_test", + "test/threadpool_test", "test/threadstest", "test/threadstest_fips", "test/time_offset_test", + "test/time_test", "test/tls13ccstest", "test/tls13encryptiontest", + "test/tls13groupselection_test", "test/trace_api_test", "test/uitest", "test/upcallstest", @@ -20508,9 +23906,13 @@ our %unified_info = ( "test/verify_extra_test", "test/versions", "test/wpackettest", + "test/x509_acert_test", "test/x509_check_cert_pkey_test", "test/x509_dup_cert_test", "test/x509_internal_test", + "test/x509_load_cert_file_test", + "test/x509_req_test", + "test/x509_test", "test/x509_time_test", "test/x509aux" ], @@ -20525,6 +23927,33 @@ our %unified_info = ( "apps/CA.pl" => [ "apps/CA.pl.in" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/ca.c" + ], + "apps/lib/ca_internals_test-bin-app_libctx.o" => [ + "apps/lib/app_libctx.c" + ], + "apps/lib/ca_internals_test-bin-app_provider.o" => [ + "apps/lib/app_provider.c" + ], + "apps/lib/ca_internals_test-bin-app_rand.o" => [ + "apps/lib/app_rand.c" + ], + "apps/lib/ca_internals_test-bin-app_x509.o" => [ + "apps/lib/app_x509.c" + ], + "apps/lib/ca_internals_test-bin-apps.o" => [ + "apps/lib/apps.c" + ], + "apps/lib/ca_internals_test-bin-apps_ui.o" => [ + "apps/lib/apps_ui.c" + ], + "apps/lib/ca_internals_test-bin-engine.o" => [ + "apps/lib/engine.c" + ], + "apps/lib/ca_internals_test-bin-fmt.o" => [ + "apps/lib/fmt.c" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/lib/cmp_mock_srv.c" ], @@ -20546,6 +23975,9 @@ our %unified_info = ( "apps/lib/libapps-lib-apps.o" => [ "apps/lib/apps.c" ], + "apps/lib/libapps-lib-apps_opt_printf.o" => [ + "apps/lib/apps_opt_printf.c" + ], "apps/lib/libapps-lib-apps_ui.o" => [ "apps/lib/apps_ui.c" ], @@ -20564,6 +23996,9 @@ our %unified_info = ( "apps/lib/libapps-lib-http_server.o" => [ "apps/lib/http_server.c" ], + "apps/lib/libapps-lib-log.o" => [ + "apps/lib/log.c" + ], "apps/lib/libapps-lib-names.o" => [ "apps/lib/names.c" ], @@ -20601,12 +24036,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -20662,6 +24099,7 @@ our %unified_info = ( "apps/openssl-bin-s_server.o", "apps/openssl-bin-s_time.o", "apps/openssl-bin-sess_id.o", + "apps/openssl-bin-skeyutl.o", "apps/openssl-bin-smime.o", "apps/openssl-bin-speed.o", "apps/openssl-bin-spkac.o", @@ -20810,6 +24248,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/sess_id.c" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/skeyutl.c" + ], "apps/openssl-bin-smime.o" => [ "apps/smime.c" ], @@ -20885,6 +24326,12 @@ our %unified_info = ( "crypto/aria/libcrypto-lib-aria.o" => [ "crypto/aria/aria.c" ], + "crypto/asn1/asn1_time_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], + "crypto/asn1/ca_internals_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], "crypto/asn1/libcrypto-lib-a_bitstr.o" => [ "crypto/asn1/a_bitstr.c" ], @@ -21077,6 +24524,9 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" => [ "crypto/asn1/x_val.c" ], + "crypto/asn1_time_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/async/arch/libcrypto-lib-async_null.o" => [ "crypto/async/arch/async_null.c" ], @@ -21170,6 +24620,9 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_dgram.o" => [ "crypto/bio/bss_dgram.c" ], + "crypto/bio/libcrypto-lib-bss_dgram_pair.o" => [ + "crypto/bio/bss_dgram_pair.c" + ], "crypto/bio/libcrypto-lib-bss_fd.o" => [ "crypto/bio/bss_fd.c" ], @@ -21401,6 +24854,9 @@ our %unified_info = ( "crypto/buffer/libfips-lib-buffer.o" => [ "crypto/buffer/buffer.c" ], + "crypto/ca_internals_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/camellia/libcrypto-lib-cmll-x86.o" => [ "crypto/camellia/cmll-x86.S" ], @@ -21452,6 +24908,9 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_err.o" => [ "crypto/cmp/cmp_err.c" ], + "crypto/cmp/libcrypto-lib-cmp_genm.o" => [ + "crypto/cmp/cmp_genm.c" + ], "crypto/cmp/libcrypto-lib-cmp_hdr.o" => [ "crypto/cmp/cmp_hdr.c" ], @@ -22139,9 +25598,15 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_blocks.o" => [ "crypto/err/err_blocks.c" ], + "crypto/err/libcrypto-lib-err_mark.o" => [ + "crypto/err/err_mark.c" + ], "crypto/err/libcrypto-lib-err_prn.o" => [ "crypto/err/err_prn.c" ], + "crypto/err/libcrypto-lib-err_save.o" => [ + "crypto/err/err_save.c" + ], "crypto/ess/libcrypto-lib-ess_asn1.o" => [ "crypto/ess/ess_asn1.c" ], @@ -22388,9 +25853,15 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libcrypto-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libcrypto-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libcrypto-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/evp/libfips-lib-asymcipher.o" => [ "crypto/evp/asymcipher.c" ], @@ -22436,9 +25907,6 @@ our %unified_info = ( "crypto/evp/libfips-lib-keymgmt_meth.o" => [ "crypto/evp/keymgmt_meth.c" ], - "crypto/evp/libfips-lib-m_sigver.o" => [ - "crypto/evp/m_sigver.c" - ], "crypto/evp/libfips-lib-mac_lib.o" => [ "crypto/evp/mac_lib.c" ], @@ -22457,9 +25925,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libfips-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libfips-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libfips-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/ffc/libcrypto-lib-ffc_backend.o" => [ "crypto/ffc/ffc_backend.c" ], @@ -22502,12 +25976,30 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params_validate.o" => [ "crypto/ffc/ffc_params_validate.c" ], + "crypto/hashtable/libcrypto-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libcrypto-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], + "crypto/hashtable/libfips-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libfips-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], "crypto/hmac/libcrypto-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], "crypto/hmac/libfips-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], + "crypto/hpke/libcrypto-lib-hpke.o" => [ + "crypto/hpke/hpke.c" + ], + "crypto/hpke/libcrypto-lib-hpke_util.o" => [ + "crypto/hpke/hpke_util.c" + ], "crypto/http/libcrypto-lib-http_client.o" => [ "crypto/http/http_client.c" ], @@ -22550,6 +26042,9 @@ our %unified_info = ( "crypto/libcrypto-lib-bsearch.o" => [ "crypto/bsearch.c" ], + "crypto/libcrypto-lib-comp_methods.o" => [ + "crypto/comp_methods.c" + ], "crypto/libcrypto-lib-context.o" => [ "crypto/context.c" ], @@ -22577,9 +26072,15 @@ our %unified_info = ( "crypto/libcrypto-lib-cversion.o" => [ "crypto/cversion.c" ], + "crypto/libcrypto-lib-defaults.o" => [ + "crypto/defaults.c" + ], "crypto/libcrypto-lib-der_writer.o" => [ "crypto/der_writer.c" ], + "crypto/libcrypto-lib-deterministic_nonce.o" => [ + "crypto/deterministic_nonce.c" + ], "crypto/libcrypto-lib-ebcdic.o" => [ "crypto/ebcdic.c" ], @@ -22589,6 +26090,9 @@ our %unified_info = ( "crypto/libcrypto-lib-getenv.o" => [ "crypto/getenv.c" ], + "crypto/libcrypto-lib-indicator_core.o" => [ + "crypto/indicator_core.c" + ], "crypto/libcrypto-lib-info.o" => [ "crypto/info.c" ], @@ -22637,6 +26141,9 @@ our %unified_info = ( "crypto/libcrypto-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libcrypto-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libcrypto-lib-passphrase.o" => [ "crypto/passphrase.c" ], @@ -22658,12 +26165,21 @@ our %unified_info = ( "crypto/libcrypto-lib-punycode.o" => [ "crypto/punycode.c" ], + "crypto/libcrypto-lib-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/libcrypto-lib-self_test_core.o" => [ "crypto/self_test_core.c" ], + "crypto/libcrypto-lib-sleep.o" => [ + "crypto/sleep.c" + ], "crypto/libcrypto-lib-sparse_array.o" => [ "crypto/sparse_array.c" ], + "crypto/libcrypto-lib-ssl_err.o" => [ + "crypto/ssl_err.c" + ], "crypto/libcrypto-lib-threads_lib.o" => [ "crypto/threads_lib.c" ], @@ -22676,6 +26192,9 @@ our %unified_info = ( "crypto/libcrypto-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libcrypto-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libcrypto-lib-trace.o" => [ "crypto/trace.c" ], @@ -22742,6 +26261,9 @@ our %unified_info = ( "crypto/libfips-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libfips-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libfips-lib-provider_core.o" => [ "crypto/provider_core.c" ], @@ -22766,6 +26288,9 @@ our %unified_info = ( "crypto/libfips-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libfips-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libfips-lib-x86cpuid.o" => [ "crypto/x86cpuid.S" ], @@ -22793,6 +26318,60 @@ our %unified_info = ( "crypto/mdc2/libcrypto-lib-mdc2dgst.o" => [ "crypto/mdc2/mdc2dgst.c" ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_kem/libcrypto-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], + "crypto/ml_kem/libfips-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], "crypto/modes/libcrypto-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22829,6 +26408,9 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libcrypto-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/modes/libfips-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22856,6 +26438,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libfips-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/objects/libcrypto-lib-o_names.o" => [ "crypto/objects/o_names.c" ], @@ -22901,6 +26486,9 @@ our %unified_info = ( "crypto/ocsp/libcrypto-lib-v3_ocsp.o" => [ "crypto/ocsp/v3_ocsp.c" ], + "crypto/packettest-bin-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/pem/libcrypto-lib-pem_all.o" => [ "crypto/pem/pem_all.c" ], @@ -23063,6 +26651,9 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_pool.o" => [ "crypto/rand/rand_pool.c" ], + "crypto/rand/libcrypto-lib-rand_uniform.o" => [ + "crypto/rand/rand_uniform.c" + ], "crypto/rand/libcrypto-lib-randfile.o" => [ "crypto/rand/randfile.c" ], @@ -23294,6 +26885,66 @@ our %unified_info = ( "crypto/siphash/libcrypto-lib-siphash.o" => [ "crypto/siphash/siphash.c" ], + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], + "crypto/slh_dsa/libfips-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libfips-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libfips-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libfips-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libfips-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], "crypto/sm2/libcrypto-lib-sm2_crypt.o" => [ "crypto/sm2/sm2_crypt.c" ], @@ -23348,6 +26999,42 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_strings.o" => [ "crypto/store/store_strings.c" ], + "crypto/thread/arch/libcrypto-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/arch/libfips-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libfips-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libfips-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/libcrypto-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libcrypto-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libcrypto-lib-internal.o" => [ + "crypto/thread/internal.c" + ], + "crypto/thread/libfips-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libfips-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libfips-lib-internal.o" => [ + "crypto/thread/internal.c" + ], "crypto/ts/libcrypto-lib-ts_asn1.o" => [ "crypto/ts/ts_asn1.c" ], @@ -23435,6 +27122,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_tree.o" => [ "crypto/x509/pcy_tree.c" ], + "crypto/x509/libcrypto-lib-t_acert.o" => [ + "crypto/x509/t_acert.c" + ], "crypto/x509/libcrypto-lib-t_crl.o" => [ "crypto/x509/t_crl.c" ], @@ -23444,6 +27134,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-t_x509.o" => [ "crypto/x509/t_x509.c" ], + "crypto/x509/libcrypto-lib-v3_aaa.o" => [ + "crypto/x509/v3_aaa.c" + ], + "crypto/x509/libcrypto-lib-v3_ac_tgt.o" => [ + "crypto/x509/v3_ac_tgt.c" + ], "crypto/x509/libcrypto-lib-v3_addr.o" => [ "crypto/x509/v3_addr.c" ], @@ -23459,6 +27155,21 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_asid.o" => [ "crypto/x509/v3_asid.c" ], + "crypto/x509/libcrypto-lib-v3_attrdesc.o" => [ + "crypto/x509/v3_attrdesc.c" + ], + "crypto/x509/libcrypto-lib-v3_attrmap.o" => [ + "crypto/x509/v3_attrmap.c" + ], + "crypto/x509/libcrypto-lib-v3_audit_id.o" => [ + "crypto/x509/v3_audit_id.c" + ], + "crypto/x509/libcrypto-lib-v3_authattid.o" => [ + "crypto/x509/v3_authattid.c" + ], + "crypto/x509/libcrypto-lib-v3_battcons.o" => [ + "crypto/x509/v3_battcons.c" + ], "crypto/x509/libcrypto-lib-v3_bcons.o" => [ "crypto/x509/v3_bcons.c" ], @@ -23483,15 +27194,24 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_genn.o" => [ "crypto/x509/v3_genn.c" ], + "crypto/x509/libcrypto-lib-v3_group_ac.o" => [ + "crypto/x509/v3_group_ac.c" + ], "crypto/x509/libcrypto-lib-v3_ia5.o" => [ "crypto/x509/v3_ia5.c" ], + "crypto/x509/libcrypto-lib-v3_ind_iss.o" => [ + "crypto/x509/v3_ind_iss.c" + ], "crypto/x509/libcrypto-lib-v3_info.o" => [ "crypto/x509/v3_info.c" ], "crypto/x509/libcrypto-lib-v3_int.o" => [ "crypto/x509/v3_int.c" ], + "crypto/x509/libcrypto-lib-v3_iobo.o" => [ + "crypto/x509/v3_iobo.c" + ], "crypto/x509/libcrypto-lib-v3_ist.o" => [ "crypto/x509/v3_ist.c" ], @@ -23501,6 +27221,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_ncons.o" => [ "crypto/x509/v3_ncons.c" ], + "crypto/x509/libcrypto-lib-v3_no_ass.o" => [ + "crypto/x509/v3_no_ass.c" + ], + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o" => [ + "crypto/x509/v3_no_rev_avail.c" + ], "crypto/x509/libcrypto-lib-v3_pci.o" => [ "crypto/x509/v3_pci.c" ], @@ -23522,18 +27248,36 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_purp.o" => [ "crypto/x509/v3_purp.c" ], + "crypto/x509/libcrypto-lib-v3_rolespec.o" => [ + "crypto/x509/v3_rolespec.c" + ], "crypto/x509/libcrypto-lib-v3_san.o" => [ "crypto/x509/v3_san.c" ], + "crypto/x509/libcrypto-lib-v3_sda.o" => [ + "crypto/x509/v3_sda.c" + ], + "crypto/x509/libcrypto-lib-v3_single_use.o" => [ + "crypto/x509/v3_single_use.c" + ], "crypto/x509/libcrypto-lib-v3_skid.o" => [ "crypto/x509/v3_skid.c" ], + "crypto/x509/libcrypto-lib-v3_soa_id.o" => [ + "crypto/x509/v3_soa_id.c" + ], "crypto/x509/libcrypto-lib-v3_sxnet.o" => [ "crypto/x509/v3_sxnet.c" ], + "crypto/x509/libcrypto-lib-v3_timespec.o" => [ + "crypto/x509/v3_timespec.c" + ], "crypto/x509/libcrypto-lib-v3_tlsf.o" => [ "crypto/x509/v3_tlsf.c" ], + "crypto/x509/libcrypto-lib-v3_usernotice.o" => [ + "crypto/x509/v3_usernotice.c" + ], "crypto/x509/libcrypto-lib-v3_utf8.o" => [ "crypto/x509/v3_utf8.c" ], @@ -23543,6 +27287,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3err.o" => [ "crypto/x509/v3err.c" ], + "crypto/x509/libcrypto-lib-x509_acert.o" => [ + "crypto/x509/x509_acert.c" + ], "crypto/x509/libcrypto-lib-x509_att.o" => [ "crypto/x509/x509_att.c" ], @@ -23594,6 +27341,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_vpm.o" => [ "crypto/x509/x509_vpm.c" ], + "crypto/x509/libcrypto-lib-x509aset.o" => [ + "crypto/x509/x509aset.c" + ], "crypto/x509/libcrypto-lib-x509cset.o" => [ "crypto/x509/x509cset.c" ], @@ -23621,6 +27371,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_exten.o" => [ "crypto/x509/x_exten.c" ], + "crypto/x509/libcrypto-lib-x_ietfatt.o" => [ + "crypto/x509/x_ietfatt.c" + ], "crypto/x509/libcrypto-lib-x_name.o" => [ "crypto/x509/x_name.c" ], @@ -23645,6 +27398,16 @@ our %unified_info = ( "engines/libcrypto-lib-e_padlock.o" => [ "engines/e_padlock.c" ], + "fuzz/acert-test" => [ + "fuzz/acert-test-bin-acert.o", + "fuzz/acert-test-bin-test-corpus.o" + ], + "fuzz/acert-test-bin-acert.o" => [ + "fuzz/acert.c" + ], + "fuzz/acert-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/asn1-test" => [ "fuzz/asn1-test-bin-asn1.o", "fuzz/asn1-test-bin-fuzz_rand.o", @@ -23757,6 +27520,190 @@ our %unified_info = ( "fuzz/ct-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/decoder-test" => [ + "fuzz/decoder-test-bin-decoder.o", + "fuzz/decoder-test-bin-fuzz_rand.o", + "fuzz/decoder-test-bin-test-corpus.o" + ], + "fuzz/decoder-test-bin-decoder.o" => [ + "fuzz/decoder.c" + ], + "fuzz/decoder-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/decoder-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsclient-test" => [ + "fuzz/dtlsclient-test-bin-dtlsclient.o", + "fuzz/dtlsclient-test-bin-fuzz_rand.o", + "fuzz/dtlsclient-test-bin-test-corpus.o" + ], + "fuzz/dtlsclient-test-bin-dtlsclient.o" => [ + "fuzz/dtlsclient.c" + ], + "fuzz/dtlsclient-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsclient-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsserver-test" => [ + "fuzz/dtlsserver-test-bin-dtlsserver.o", + "fuzz/dtlsserver-test-bin-fuzz_rand.o", + "fuzz/dtlsserver-test-bin-test-corpus.o" + ], + "fuzz/dtlsserver-test-bin-dtlsserver.o" => [ + "fuzz/dtlsserver.c" + ], + "fuzz/dtlsserver-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsserver-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/hashtable-test" => [ + "fuzz/hashtable-test-bin-fuzz_rand.o", + "fuzz/hashtable-test-bin-hashtable.o", + "fuzz/hashtable-test-bin-test-corpus.o" + ], + "fuzz/hashtable-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/hashtable-test-bin-hashtable.o" => [ + "fuzz/hashtable.c" + ], + "fuzz/hashtable-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-dsa-test" => [ + "fuzz/ml-dsa-test-bin-fuzz_rand.o", + "fuzz/ml-dsa-test-bin-ml-dsa.o", + "fuzz/ml-dsa-test-bin-test-corpus.o" + ], + "fuzz/ml-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-dsa-test-bin-ml-dsa.o" => [ + "fuzz/ml-dsa.c" + ], + "fuzz/ml-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-kem-test" => [ + "fuzz/ml-kem-test-bin-fuzz_rand.o", + "fuzz/ml-kem-test-bin-ml-kem.o", + "fuzz/ml-kem-test-bin-test-corpus.o" + ], + "fuzz/ml-kem-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-kem-test-bin-ml-kem.o" => [ + "fuzz/ml-kem.c" + ], + "fuzz/ml-kem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/pem-test" => [ + "fuzz/pem-test-bin-pem.o", + "fuzz/pem-test-bin-test-corpus.o" + ], + "fuzz/pem-test-bin-pem.o" => [ + "fuzz/pem.c" + ], + "fuzz/pem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/provider-test" => [ + "fuzz/provider-test-bin-provider.o", + "fuzz/provider-test-bin-test-corpus.o" + ], + "fuzz/provider-test-bin-provider.o" => [ + "fuzz/provider.c" + ], + "fuzz/provider-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/punycode-test" => [ + "fuzz/punycode-test-bin-punycode.o", + "fuzz/punycode-test-bin-test-corpus.o" + ], + "fuzz/punycode-test-bin-punycode.o" => [ + "fuzz/punycode.c" + ], + "fuzz/punycode-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-client-test" => [ + "fuzz/quic-client-test-bin-fuzz_rand.o", + "fuzz/quic-client-test-bin-quic-client.o", + "fuzz/quic-client-test-bin-test-corpus.o" + ], + "fuzz/quic-client-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-client-test-bin-quic-client.o" => [ + "fuzz/quic-client.c" + ], + "fuzz/quic-client-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-lcidm-test" => [ + "fuzz/quic-lcidm-test-bin-fuzz_rand.o", + "fuzz/quic-lcidm-test-bin-quic-lcidm.o", + "fuzz/quic-lcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-lcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-lcidm-test-bin-quic-lcidm.o" => [ + "fuzz/quic-lcidm.c" + ], + "fuzz/quic-lcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-rcidm-test" => [ + "fuzz/quic-rcidm-test-bin-fuzz_rand.o", + "fuzz/quic-rcidm-test-bin-quic-rcidm.o", + "fuzz/quic-rcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-rcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-rcidm-test-bin-quic-rcidm.o" => [ + "fuzz/quic-rcidm.c" + ], + "fuzz/quic-rcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-server-test" => [ + "fuzz/quic-server-test-bin-fuzz_rand.o", + "fuzz/quic-server-test-bin-quic-server.o", + "fuzz/quic-server-test-bin-test-corpus.o" + ], + "fuzz/quic-server-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-server-test-bin-quic-server.o" => [ + "fuzz/quic-server.c" + ], + "fuzz/quic-server-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-srtm-test" => [ + "fuzz/quic-srtm-test-bin-fuzz_rand.o", + "fuzz/quic-srtm-test-bin-quic-srtm.o", + "fuzz/quic-srtm-test-bin-test-corpus.o" + ], + "fuzz/quic-srtm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-srtm-test-bin-quic-srtm.o" => [ + "fuzz/quic-srtm.c" + ], + "fuzz/quic-srtm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/server-test" => [ "fuzz/server-test-bin-fuzz_rand.o", "fuzz/server-test-bin-server.o", @@ -23771,6 +27718,40 @@ our %unified_info = ( "fuzz/server-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/slh-dsa-test" => [ + "fuzz/slh-dsa-test-bin-fuzz_rand.o", + "fuzz/slh-dsa-test-bin-slh-dsa.o", + "fuzz/slh-dsa-test-bin-test-corpus.o" + ], + "fuzz/slh-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/slh-dsa-test-bin-slh-dsa.o" => [ + "fuzz/slh-dsa.c" + ], + "fuzz/slh-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/smime-test" => [ + "fuzz/smime-test-bin-smime.o", + "fuzz/smime-test-bin-test-corpus.o" + ], + "fuzz/smime-test-bin-smime.o" => [ + "fuzz/smime.c" + ], + "fuzz/smime-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test" => [ + "fuzz/v3name-test-bin-test-corpus.o", + "fuzz/v3name-test-bin-v3name.o" + ], + "fuzz/v3name-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test-bin-v3name.o" => [ + "fuzz/v3name.c" + ], "fuzz/x509-test" => [ "fuzz/x509-test-bin-fuzz_rand.o", "fuzz/x509-test-bin-test-corpus.o", @@ -23891,6 +27872,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -23952,6 +27934,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -24129,7 +28112,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", + "crypto/err/libcrypto-lib-err_mark.o", "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o", "crypto/ess/libcrypto-lib-ess_asn1.o", "crypto/ess/libcrypto-lib-ess_err.o", "crypto/ess/libcrypto-lib-ess_lib.o", @@ -24212,7 +28197,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/ffc/libcrypto-lib-ffc_backend.o", "crypto/ffc/libcrypto-lib-ffc_dh.o", "crypto/ffc/libcrypto-lib-ffc_key_generate.o", @@ -24220,7 +28207,11 @@ our %unified_info = ( "crypto/ffc/libcrypto-lib-ffc_params.o", "crypto/ffc/libcrypto-lib-ffc_params_generate.o", "crypto/ffc/libcrypto-lib-ffc_params_validate.o", + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", "crypto/hmac/libcrypto-lib-hmac.o", + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o", "crypto/http/libcrypto-lib-http_client.o", "crypto/http/libcrypto-lib-http_err.o", "crypto/http/libcrypto-lib-http_lib.o", @@ -24234,6 +28225,7 @@ our %unified_info = ( "crypto/lhash/libcrypto-lib-lhash.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -24243,10 +28235,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -24263,6 +28258,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -24270,12 +28266,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libcrypto-lib-x86cpuid.o", @@ -24287,6 +28287,15 @@ our %unified_info = ( "crypto/md5/libcrypto-lib-md5_sha1.o", "crypto/mdc2/libcrypto-lib-mdc2_one.o", "crypto/mdc2/libcrypto-lib-mdc2dgst.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_kem/libcrypto-lib-ml_kem.o", "crypto/modes/libcrypto-lib-cbc128.o", "crypto/modes/libcrypto-lib-ccm128.o", "crypto/modes/libcrypto-lib-cfb128.o", @@ -24299,6 +28308,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/objects/libcrypto-lib-o_names.o", "crypto/objects/libcrypto-lib-obj_dat.o", "crypto/objects/libcrypto-lib-obj_err.o", @@ -24363,6 +28373,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rc2/libcrypto-lib-rc2_cbc.o", "crypto/rc2/libcrypto-lib-rc2_ecb.o", @@ -24414,6 +28425,16 @@ our %unified_info = ( "crypto/sha/libcrypto-lib-sha512-586.o", "crypto/sha/libcrypto-lib-sha512.o", "crypto/siphash/libcrypto-lib-siphash.o", + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", "crypto/sm2/libcrypto-lib-sm2_crypt.o", "crypto/sm2/libcrypto-lib-sm2_err.o", "crypto/sm2/libcrypto-lib-sm2_key.o", @@ -24431,6 +28452,12 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_register.o", "crypto/store/libcrypto-lib-store_result.o", "crypto/store/libcrypto-lib-store_strings.o", + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", "crypto/ts/libcrypto-lib-ts_asn1.o", "crypto/ts/libcrypto-lib-ts_conf.o", "crypto/ts/libcrypto-lib-ts_err.o", @@ -24460,14 +28487,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -24476,12 +28511,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -24489,13 +28529,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -24513,6 +28560,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -24522,6 +28570,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -24543,14 +28592,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -24567,12 +28617,60 @@ our %unified_info = ( "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", "ssl/libssl-lib-tls_srp.o", - "ssl/record/libssl-lib-dtls1_bitmap.o", + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o", "ssl/record/libssl-lib-rec_layer_d1.o", "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o", "ssl/statem/libssl-lib-extensions.o", "ssl/statem/libssl-lib-extensions_clnt.o", "ssl/statem/libssl-lib-extensions_cust.o", @@ -24610,12 +28708,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/der/der_ecx_key.c" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/der/der_ml_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/der/der_ml_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/der/der_rsa_gen.c" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/der/der_rsa_key.c" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/der/der_slh_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/der/der_slh_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/der/der_wrap_gen.c" ], @@ -24682,6 +28792,9 @@ our %unified_info = ( "providers/common/libfips-lib-securitycheck_fips.o" => [ "providers/common/securitycheck_fips.c" ], + "providers/endecode_test-bin-legacyprov.o" => [ + "providers/legacyprov.c" + ], "providers/evp_extra_test-bin-legacyprov.o" => [ "providers/legacyprov.c" ], @@ -24696,6 +28809,9 @@ our %unified_info = ( "providers/fips/fips-dso-fips_entry.o" => [ "providers/fips/fips_entry.c" ], + "providers/fips/libfips-lib-fipsindicator.o" => [ + "providers/fips/fipsindicator.c" + ], "providers/fips/libfips-lib-fipsprov.o" => [ "providers/fips/fipsprov.c" ], @@ -24759,6 +28875,15 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o" => [ "providers/implementations/ciphers/cipher_aes_gcm_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o" => [ "providers/implementations/ciphers/cipher_aes_hw.c" ], @@ -24831,9 +28956,27 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o" => [ "providers/implementations/ciphers/cipher_sm4.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o" => [ "providers/implementations/ciphers/cipher_sm4_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o" => [ "providers/implementations/ciphers/cipher_tdes.c" ], @@ -25053,6 +29196,15 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" => [ "providers/implementations/encode_decode/endecoder_common.c" ], + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o" => [ + "providers/implementations/encode_decode/ml_common_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o" => [ + "providers/implementations/encode_decode/ml_dsa_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" => [ + "providers/implementations/encode_decode/ml_kem_codecs.c" + ], "providers/implementations/exchange/libdefault-lib-dh_exch.o" => [ "providers/implementations/exchange/dh_exch.c" ], @@ -25077,9 +29229,15 @@ our %unified_info = ( "providers/implementations/exchange/libfips-lib-kdf_exch.o" => [ "providers/implementations/exchange/kdf_exch.c" ], + "providers/implementations/kdfs/libdefault-lib-argon2.o" => [ + "providers/implementations/kdfs/argon2.c" + ], "providers/implementations/kdfs/libdefault-lib-hkdf.o" => [ "providers/implementations/kdfs/hkdf.c" ], + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o" => [ + "providers/implementations/kdfs/hmacdrbg_kdf.c" + ], "providers/implementations/kdfs/libdefault-lib-kbkdf.o" => [ "providers/implementations/kdfs/kbkdf.c" ], @@ -25137,12 +29295,39 @@ our %unified_info = ( "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" => [ "providers/implementations/kdfs/pbkdf1.c" ], + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" => [ + "providers/implementations/kdfs/pvkkdf.c" + ], + "providers/implementations/kem/libdefault-lib-ec_kem.o" => [ + "providers/implementations/kem/ec_kem.c" + ], + "providers/implementations/kem/libdefault-lib-ecx_kem.o" => [ + "providers/implementations/kem/ecx_kem.c" + ], + "providers/implementations/kem/libdefault-lib-kem_util.o" => [ + "providers/implementations/kem/kem_util.c" + ], + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libdefault-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libdefault-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libfips-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libfips-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libfips-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libtemplate-lib-template_kem.o" => [ + "providers/implementations/kem/template_kem.c" + ], "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25161,9 +29346,21 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25182,9 +29379,24 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" => [ + "providers/implementations/keymgmt/template_kmgmt.c" + ], "providers/implementations/macs/libdefault-lib-blake2b_mac.o" => [ "providers/implementations/macs/blake2b_mac.c" ], @@ -25221,9 +29433,6 @@ our %unified_info = ( "providers/implementations/macs/libfips-lib-kmac_prov.o" => [ "providers/implementations/macs/kmac_prov.c" ], - "providers/implementations/rands/libdefault-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libdefault-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25239,12 +29448,12 @@ our %unified_info = ( "providers/implementations/rands/libdefault-lib-seed_src.o" => [ "providers/implementations/rands/seed_src.c" ], + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o" => [ + "providers/implementations/rands/seed_src_jitter.c" + ], "providers/implementations/rands/libdefault-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], - "providers/implementations/rands/libfips-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libfips-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25257,6 +29466,9 @@ our %unified_info = ( "providers/implementations/rands/libfips-lib-drbg_hmac.o" => [ "providers/implementations/rands/drbg_hmac.c" ], + "providers/implementations/rands/libfips-lib-fips_crng_test.o" => [ + "providers/implementations/rands/fips_crng_test.c" + ], "providers/implementations/rands/libfips-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], @@ -25284,9 +29496,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/implementations/signature/sm2_sig.c" ], @@ -25302,15 +29520,36 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libfips-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], "providers/implementations/storemgmt/libdefault-lib-file_store.o" => [ "providers/implementations/storemgmt/file_store.c" ], "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o" => [ "providers/implementations/storemgmt/file_store_any2obj.c" ], + "providers/implementations/storemgmt/libdefault-lib-winstore_store.o" => [ + "providers/implementations/storemgmt/winstore_store.c" + ], "providers/legacy" => [ "providers/legacy-dso-legacy.res", "providers/legacy-dso-legacyprov.o", @@ -25332,8 +29571,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/libcommon-lib-provider_ctx.o", "providers/common/libcommon-lib-provider_err.o", @@ -25345,7 +29588,7 @@ our %unified_info = ( "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", "providers/implementations/digests/libcommon-lib-digestcommon.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/methods/libcommon-lib-tls_pad.o" ], "providers/libcrypto-lib-baseprov.o" => [ "providers/baseprov.c" @@ -25381,6 +29624,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -25405,7 +29651,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -25434,11 +29686,16 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o", "providers/implementations/exchange/libdefault-lib-dh_exch.o", "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", "providers/implementations/exchange/libdefault-lib-ecx_exch.o", "providers/implementations/exchange/libdefault-lib-kdf_exch.o", + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -25449,6 +29706,11 @@ our %unified_info = ( "providers/implementations/kdfs/libdefault-lib-sskdf.o", "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", "providers/implementations/kdfs/libdefault-lib-x942kdf.o", + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", @@ -25456,7 +29718,11 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libdefault-lib-blake2b_mac.o", "providers/implementations/macs/libdefault-lib-blake2s_mac.o", "providers/implementations/macs/libdefault-lib-cmac_prov.o", @@ -25465,12 +29731,12 @@ our %unified_info = ( "providers/implementations/macs/libdefault-lib-kmac_prov.o", "providers/implementations/macs/libdefault-lib-poly1305_prov.o", "providers/implementations/macs/libdefault-lib-siphash_prov.o", - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", @@ -25480,11 +29746,16 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", "providers/implementations/storemgmt/libdefault-lib-file_store.o", "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", - "ssl/libdefault-lib-s3_cbc.o" + "providers/implementations/storemgmt/libdefault-lib-winstore_store.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" ], "providers/libfips.a" => [ "crypto/aes/libfips-lib-aes-586.o", @@ -25592,14 +29863,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", + "crypto/evp/libfips-lib-s_lib.o", "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o", "crypto/ffc/libfips-lib-ffc_backend.o", "crypto/ffc/libfips-lib-ffc_dh.o", "crypto/ffc/libfips-lib-ffc_key_generate.o", @@ -25607,6 +29879,8 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params.o", "crypto/ffc/libfips-lib-ffc_params_generate.o", "crypto/ffc/libfips-lib-ffc_params_validate.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o", "crypto/hmac/libfips-lib-hmac.o", "crypto/lhash/libfips-lib-lhash.o", "crypto/libfips-lib-asn1_dsa.o", @@ -25628,6 +29902,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -25636,7 +29911,17 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", "crypto/libfips-lib-x86cpuid.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o", + "crypto/ml_kem/libfips-lib-ml_kem.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -25646,6 +29931,7 @@ our %unified_info = ( "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o", "crypto/property/libfips-lib-defn_cache.o", "crypto/property/libfips-lib-property.o", "crypto/property/libfips-lib-property_parse.o", @@ -25677,7 +29963,23 @@ our %unified_info = ( "crypto/sha/libfips-lib-sha3.o", "crypto/sha/libfips-lib-sha512-586.o", "crypto/sha/libfips-lib-sha512.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o", "crypto/stack/libfips-lib-stack.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o", "providers/common/der/libfips-lib-der_rsa_sig.o", "providers/common/libfips-lib-bio_prov.o", "providers/common/libfips-lib-capabilities.o", @@ -25686,6 +29988,7 @@ our %unified_info = ( "providers/common/libfips-lib-provider_util.o", "providers/common/libfips-lib-securitycheck.o", "providers/common/libfips-lib-securitycheck_fips.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o", @@ -25723,6 +30026,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", "providers/implementations/kem/libfips-lib-rsa_kem.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", @@ -25730,24 +30035,32 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libfips-lib-cmac_prov.o", "providers/implementations/macs/libfips-lib-gmac_prov.o", "providers/implementations/macs/libfips-lib-hmac_prov.o", "providers/implementations/macs/libfips-lib-kmac_prov.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o", "providers/libcommon.a", - "ssl/libfips-lib-s3_cbc.o" + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "providers/liblegacy-lib-prov_running.o" => [ "providers/prov_running.c" @@ -25777,13 +30090,12 @@ our %unified_info = ( "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", "providers/implementations/digests/liblegacy-lib-wp_prov.o", "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o", "providers/liblegacy-lib-prov_running.o" ], - "ssl/libdefault-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" - ], - "ssl/libfips-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" + "providers/libtemplate.a" => [ + "providers/implementations/kem/libtemplate-lib-template_kem.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "ssl/libssl-lib-bio_ssl.o" => [ "ssl/bio_ssl.c" @@ -25803,6 +30115,9 @@ our %unified_info = ( "ssl/libssl-lib-pqueue.o" => [ "ssl/pqueue.c" ], + "ssl/libssl-lib-priority_queue.o" => [ + "ssl/priority_queue.c" + ], "ssl/libssl-lib-s3_enc.o" => [ "ssl/s3_enc.c" ], @@ -25818,15 +30133,15 @@ our %unified_info = ( "ssl/libssl-lib-ssl_cert.o" => [ "ssl/ssl_cert.c" ], + "ssl/libssl-lib-ssl_cert_comp.o" => [ + "ssl/ssl_cert_comp.c" + ], "ssl/libssl-lib-ssl_ciph.o" => [ "ssl/ssl_ciph.c" ], "ssl/libssl-lib-ssl_conf.o" => [ "ssl/ssl_conf.c" ], - "ssl/libssl-lib-ssl_err.o" => [ - "ssl/ssl_err.c" - ], "ssl/libssl-lib-ssl_err_legacy.o" => [ "ssl/ssl_err_legacy.c" ], @@ -25875,11 +30190,131 @@ our %unified_info = ( "ssl/libssl-lib-tls_srp.o" => [ "ssl/tls_srp.c" ], - "ssl/record/libcommon-lib-tls_pad.o" => [ - "ssl/record/tls_pad.c" + "ssl/quic/libssl-lib-cc_newreno.o" => [ + "ssl/quic/cc_newreno.c" + ], + "ssl/quic/libssl-lib-json_enc.o" => [ + "ssl/quic/json_enc.c" + ], + "ssl/quic/libssl-lib-qlog.o" => [ + "ssl/quic/qlog.c" + ], + "ssl/quic/libssl-lib-qlog_event_helpers.o" => [ + "ssl/quic/qlog_event_helpers.c" + ], + "ssl/quic/libssl-lib-quic_ackm.o" => [ + "ssl/quic/quic_ackm.c" + ], + "ssl/quic/libssl-lib-quic_cfq.o" => [ + "ssl/quic/quic_cfq.c" + ], + "ssl/quic/libssl-lib-quic_channel.o" => [ + "ssl/quic/quic_channel.c" + ], + "ssl/quic/libssl-lib-quic_demux.o" => [ + "ssl/quic/quic_demux.c" + ], + "ssl/quic/libssl-lib-quic_engine.o" => [ + "ssl/quic/quic_engine.c" + ], + "ssl/quic/libssl-lib-quic_fc.o" => [ + "ssl/quic/quic_fc.c" + ], + "ssl/quic/libssl-lib-quic_fifd.o" => [ + "ssl/quic/quic_fifd.c" + ], + "ssl/quic/libssl-lib-quic_impl.o" => [ + "ssl/quic/quic_impl.c" + ], + "ssl/quic/libssl-lib-quic_lcidm.o" => [ + "ssl/quic/quic_lcidm.c" + ], + "ssl/quic/libssl-lib-quic_method.o" => [ + "ssl/quic/quic_method.c" + ], + "ssl/quic/libssl-lib-quic_obj.o" => [ + "ssl/quic/quic_obj.c" + ], + "ssl/quic/libssl-lib-quic_port.o" => [ + "ssl/quic/quic_port.c" + ], + "ssl/quic/libssl-lib-quic_rcidm.o" => [ + "ssl/quic/quic_rcidm.c" + ], + "ssl/quic/libssl-lib-quic_reactor.o" => [ + "ssl/quic/quic_reactor.c" + ], + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o" => [ + "ssl/quic/quic_reactor_wait_ctx.c" + ], + "ssl/quic/libssl-lib-quic_record_rx.o" => [ + "ssl/quic/quic_record_rx.c" + ], + "ssl/quic/libssl-lib-quic_record_shared.o" => [ + "ssl/quic/quic_record_shared.c" + ], + "ssl/quic/libssl-lib-quic_record_tx.o" => [ + "ssl/quic/quic_record_tx.c" + ], + "ssl/quic/libssl-lib-quic_record_util.o" => [ + "ssl/quic/quic_record_util.c" ], - "ssl/record/libssl-lib-dtls1_bitmap.o" => [ - "ssl/record/dtls1_bitmap.c" + "ssl/quic/libssl-lib-quic_rstream.o" => [ + "ssl/quic/quic_rstream.c" + ], + "ssl/quic/libssl-lib-quic_rx_depack.o" => [ + "ssl/quic/quic_rx_depack.c" + ], + "ssl/quic/libssl-lib-quic_sf_list.o" => [ + "ssl/quic/quic_sf_list.c" + ], + "ssl/quic/libssl-lib-quic_srt_gen.o" => [ + "ssl/quic/quic_srt_gen.c" + ], + "ssl/quic/libssl-lib-quic_srtm.o" => [ + "ssl/quic/quic_srtm.c" + ], + "ssl/quic/libssl-lib-quic_sstream.o" => [ + "ssl/quic/quic_sstream.c" + ], + "ssl/quic/libssl-lib-quic_statm.o" => [ + "ssl/quic/quic_statm.c" + ], + "ssl/quic/libssl-lib-quic_stream_map.o" => [ + "ssl/quic/quic_stream_map.c" + ], + "ssl/quic/libssl-lib-quic_thread_assist.o" => [ + "ssl/quic/quic_thread_assist.c" + ], + "ssl/quic/libssl-lib-quic_tls.o" => [ + "ssl/quic/quic_tls.c" + ], + "ssl/quic/libssl-lib-quic_tls_api.o" => [ + "ssl/quic/quic_tls_api.c" + ], + "ssl/quic/libssl-lib-quic_trace.o" => [ + "ssl/quic/quic_trace.c" + ], + "ssl/quic/libssl-lib-quic_tserver.o" => [ + "ssl/quic/quic_tserver.c" + ], + "ssl/quic/libssl-lib-quic_txp.o" => [ + "ssl/quic/quic_txp.c" + ], + "ssl/quic/libssl-lib-quic_txpim.o" => [ + "ssl/quic/quic_txpim.c" + ], + "ssl/quic/libssl-lib-quic_types.o" => [ + "ssl/quic/quic_types.c" + ], + "ssl/quic/libssl-lib-quic_wire.o" => [ + "ssl/quic/quic_wire.c" + ], + "ssl/quic/libssl-lib-quic_wire_pkt.o" => [ + "ssl/quic/quic_wire_pkt.c" + ], + "ssl/quic/libssl-lib-uint_set.o" => [ + "ssl/quic/uint_set.c" ], "ssl/record/libssl-lib-rec_layer_d1.o" => [ "ssl/record/rec_layer_d1.c" @@ -25887,14 +30322,44 @@ our %unified_info = ( "ssl/record/libssl-lib-rec_layer_s3.o" => [ "ssl/record/rec_layer_s3.c" ], - "ssl/record/libssl-lib-ssl3_buffer.o" => [ - "ssl/record/ssl3_buffer.c" + "ssl/record/methods/libcommon-lib-tls_pad.o" => [ + "ssl/record/methods/tls_pad.c" + ], + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libfips-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libssl-lib-dtls_meth.o" => [ + "ssl/record/methods/dtls_meth.c" + ], + "ssl/record/methods/libssl-lib-ssl3_meth.o" => [ + "ssl/record/methods/ssl3_meth.c" + ], + "ssl/record/methods/libssl-lib-tls13_meth.o" => [ + "ssl/record/methods/tls13_meth.c" + ], + "ssl/record/methods/libssl-lib-tls1_meth.o" => [ + "ssl/record/methods/tls1_meth.c" ], - "ssl/record/libssl-lib-ssl3_record.o" => [ - "ssl/record/ssl3_record.c" + "ssl/record/methods/libssl-lib-tls_common.o" => [ + "ssl/record/methods/tls_common.c" ], - "ssl/record/libssl-lib-ssl3_record_tls13.o" => [ - "ssl/record/ssl3_record_tls13.c" + "ssl/record/methods/libssl-lib-tls_multib.o" => [ + "ssl/record/methods/tls_multib.c" + ], + "ssl/record/methods/libssl-lib-tlsany_meth.o" => [ + "ssl/record/methods/tlsany_meth.c" + ], + "ssl/rio/libssl-lib-poll_builder.o" => [ + "ssl/rio/poll_builder.c" + ], + "ssl/rio/libssl-lib-poll_immediate.o" => [ + "ssl/rio/poll_immediate.c" + ], + "ssl/rio/libssl-lib-rio_notifier.o" => [ + "ssl/rio/rio_notifier.c" ], "ssl/statem/libssl-lib-extensions.o" => [ "ssl/statem/extensions.c" @@ -25990,6 +30455,8 @@ our %unified_info = ( "test/asn1_string_table_test.c" ], "test/asn1_time_test" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1_time_test-bin-ctype.o", "test/asn1_time_test-bin-asn1_time_test.o" ], "test/asn1_time_test-bin-asn1_time_test.o" => [ @@ -26020,6 +30487,18 @@ our %unified_info = ( "test/bftest-bin-bftest.o" => [ "test/bftest.c" ], + "test/bio_addr_test" => [ + "test/bio_addr_test-bin-bio_addr_test.o" + ], + "test/bio_addr_test-bin-bio_addr_test.o" => [ + "test/bio_addr_test.c" + ], + "test/bio_base64_test" => [ + "test/bio_base64_test-bin-bio_base64_test.o" + ], + "test/bio_base64_test-bin-bio_base64_test.o" => [ + "test/bio_base64_test.c" + ], "test/bio_callback_test" => [ "test/bio_callback_test-bin-bio_callback_test.o" ], @@ -26032,6 +30511,12 @@ our %unified_info = ( "test/bio_core_test-bin-bio_core_test.o" => [ "test/bio_core_test.c" ], + "test/bio_dgram_test" => [ + "test/bio_dgram_test-bin-bio_dgram_test.o" + ], + "test/bio_dgram_test-bin-bio_dgram_test.o" => [ + "test/bio_dgram_test.c" + ], "test/bio_enc_test" => [ "test/bio_enc_test-bin-bio_enc_test.o" ], @@ -26044,6 +30529,12 @@ our %unified_info = ( "test/bio_memleak_test-bin-bio_memleak_test.o" => [ "test/bio_memleak_test.c" ], + "test/bio_meth_test" => [ + "test/bio_meth_test-bin-bio_meth_test.o" + ], + "test/bio_meth_test-bin-bio_meth_test.o" => [ + "test/bio_meth_test.c" + ], "test/bio_prefix_text" => [ "test/bio_prefix_text-bin-bio_prefix_text.o" ], @@ -26062,6 +30553,12 @@ our %unified_info = ( "test/bio_readbuffer_test-bin-bio_readbuffer_test.o" => [ "test/bio_readbuffer_test.c" ], + "test/bio_tfo_test" => [ + "test/bio_tfo_test-bin-bio_tfo_test.o" + ], + "test/bio_tfo_test-bin-bio_tfo_test.o" => [ + "test/bio_tfo_test.c" + ], "test/bioprinttest" => [ "test/bioprinttest-bin-bioprinttest.o" ], @@ -26080,6 +30577,12 @@ our %unified_info = ( "test/bntest-bin-bntest.o" => [ "test/bntest.c" ], + "test/build_wincrypt_test" => [ + "test/build_wincrypt_test-bin-build_wincrypt_test.o" + ], + "test/build_wincrypt_test-bin-build_wincrypt_test.o" => [ + "test/build_wincrypt_test.c" + ], "test/buildtest_c_aes" => [ "test/buildtest_c_aes-bin-buildtest_aes.o" ], @@ -26110,6 +30613,12 @@ our %unified_info = ( "test/buildtest_c_buffer-bin-buildtest_buffer.o" => [ "test/buildtest_buffer.c" ], + "test/buildtest_c_byteorder" => [ + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" + ], + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" => [ + "test/buildtest_byteorder.c" + ], "test/buildtest_c_camellia" => [ "test/buildtest_c_camellia-bin-buildtest_camellia.o" ], @@ -26158,12 +30667,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch-bin-buildtest_core_dispatch.o" => [ "test/buildtest_core_dispatch.c" ], - "test/buildtest_c_core_names" => [ - "test/buildtest_c_core_names-bin-buildtest_core_names.o" - ], - "test/buildtest_c_core_names-bin-buildtest_core_names.o" => [ - "test/buildtest_core_names.c" - ], "test/buildtest_c_core_object" => [ "test/buildtest_c_core_object-bin-buildtest_core_object.o" ], @@ -26212,6 +30715,12 @@ our %unified_info = ( "test/buildtest_c_e_os2-bin-buildtest_e_os2.o" => [ "test/buildtest_e_os2.c" ], + "test/buildtest_c_e_ostime" => [ + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" + ], + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" => [ + "test/buildtest_e_ostime.c" + ], "test/buildtest_c_ebcdic" => [ "test/buildtest_c_ebcdic-bin-buildtest_ebcdic.o" ], @@ -26266,6 +30775,12 @@ our %unified_info = ( "test/buildtest_c_hmac-bin-buildtest_hmac.o" => [ "test/buildtest_hmac.c" ], + "test/buildtest_c_hpke" => [ + "test/buildtest_c_hpke-bin-buildtest_hpke.o" + ], + "test/buildtest_c_hpke-bin-buildtest_hpke.o" => [ + "test/buildtest_hpke.c" + ], "test/buildtest_c_http" => [ "test/buildtest_c_http-bin-buildtest_http.o" ], @@ -26278,6 +30793,12 @@ our %unified_info = ( "test/buildtest_c_idea-bin-buildtest_idea.o" => [ "test/buildtest_idea.c" ], + "test/buildtest_c_indicator" => [ + "test/buildtest_c_indicator-bin-buildtest_indicator.o" + ], + "test/buildtest_c_indicator-bin-buildtest_indicator.o" => [ + "test/buildtest_indicator.c" + ], "test/buildtest_c_kdf" => [ "test/buildtest_c_kdf-bin-buildtest_kdf.o" ], @@ -26308,6 +30829,12 @@ our %unified_info = ( "test/buildtest_c_mdc2-bin-buildtest_mdc2.o" => [ "test/buildtest_mdc2.c" ], + "test/buildtest_c_ml_kem" => [ + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" + ], + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" => [ + "test/buildtest_ml_kem.c" + ], "test/buildtest_c_modes" => [ "test/buildtest_c_modes-bin-buildtest_modes.o" ], @@ -26368,6 +30895,12 @@ our %unified_info = ( "test/buildtest_c_provider-bin-buildtest_provider.o" => [ "test/buildtest_provider.c" ], + "test/buildtest_c_quic" => [ + "test/buildtest_c_quic-bin-buildtest_quic.o" + ], + "test/buildtest_c_quic-bin-buildtest_quic.o" => [ + "test/buildtest_quic.c" + ], "test/buildtest_c_rand" => [ "test/buildtest_c_rand-bin-buildtest_rand.o" ], @@ -26452,6 +30985,12 @@ our %unified_info = ( "test/buildtest_c_symhacks-bin-buildtest_symhacks.o" => [ "test/buildtest_symhacks.c" ], + "test/buildtest_c_thread" => [ + "test/buildtest_c_thread-bin-buildtest_thread.o" + ], + "test/buildtest_c_thread-bin-buildtest_thread.o" => [ + "test/buildtest_thread.c" + ], "test/buildtest_c_tls1" => [ "test/buildtest_c_tls1-bin-buildtest_tls1.o" ], @@ -26482,6 +31021,29 @@ our %unified_info = ( "test/buildtest_c_whrlpool-bin-buildtest_whrlpool.o" => [ "test/buildtest_whrlpool.c" ], + "test/byteorder_test" => [ + "test/byteorder_test-bin-byteorder_test.o" + ], + "test/byteorder_test-bin-byteorder_test.o" => [ + "test/byteorder_test.c" + ], + "test/ca_internals_test" => [ + "apps/ca_internals_test-bin-ca.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", + "crypto/ca_internals_test-bin-ctype.o", + "test/ca_internals_test-bin-ca_internals_test.o" + ], + "test/ca_internals_test-bin-ca_internals_test.o" => [ + "test/ca_internals_test.c" + ], "test/casttest" => [ "test/casttest-bin-casttest.o" ], @@ -26660,6 +31222,12 @@ our %unified_info = ( "test/danetest-bin-danetest.o" => [ "test/danetest.c" ], + "test/decoder_propq_test" => [ + "test/decoder_propq_test-bin-decoder_propq_test.o" + ], + "test/decoder_propq_test-bin-decoder_propq_test.o" => [ + "test/decoder_propq_test.c" + ], "test/defltfips_test" => [ "test/defltfips_test-bin-defltfips_test.o" ], @@ -26741,6 +31309,7 @@ our %unified_info = ( "test/ectest.c" ], "test/endecode_test" => [ + "providers/endecode_test-bin-legacyprov.o", "test/endecode_test-bin-endecode_test.o", "test/helpers/endecode_test-bin-predefined_dhparams.o" ], @@ -26773,17 +31342,29 @@ our %unified_info = ( ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", - "test/evp_extra_test-bin-evp_extra_test.o" + "test/evp_extra_test-bin-evp_extra_test.o", + "test/evp_extra_test-bin-fake_pipelineprov.o", + "test/evp_extra_test-bin-fake_rsaprov.o" ], "test/evp_extra_test-bin-evp_extra_test.o" => [ "test/evp_extra_test.c" ], + "test/evp_extra_test-bin-fake_pipelineprov.o" => [ + "test/fake_pipelineprov.c" + ], + "test/evp_extra_test-bin-fake_rsaprov.o" => [ + "test/fake_rsaprov.c" + ], "test/evp_extra_test2" => [ - "test/evp_extra_test2-bin-evp_extra_test2.o" + "test/evp_extra_test2-bin-evp_extra_test2.o", + "test/evp_extra_test2-bin-tls-provider.o" ], "test/evp_extra_test2-bin-evp_extra_test2.o" => [ "test/evp_extra_test2.c" ], + "test/evp_extra_test2-bin-tls-provider.o" => [ + "test/tls-provider.c" + ], "test/evp_fetch_prov_test" => [ "test/evp_fetch_prov_test-bin-evp_fetch_prov_test.o" ], @@ -26808,6 +31389,12 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name-bin-evp_pkey_ctx_new_from_name.o" => [ "test/evp_pkey_ctx_new_from_name.c" ], + "test/evp_pkey_dhkem_test" => [ + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" + ], + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" => [ + "test/evp_pkey_dhkem_test.c" + ], "test/evp_pkey_dparams_test" => [ "test/evp_pkey_dparams_test-bin-evp_pkey_dparams_test.o" ], @@ -26820,12 +31407,28 @@ our %unified_info = ( "test/evp_pkey_provided_test-bin-evp_pkey_provided_test.o" => [ "test/evp_pkey_provided_test.c" ], + "test/evp_skey_test" => [ + "test/evp_skey_test-bin-evp_skey_test.o", + "test/evp_skey_test-bin-fake_cipherprov.o" + ], + "test/evp_skey_test-bin-evp_skey_test.o" => [ + "test/evp_skey_test.c" + ], + "test/evp_skey_test-bin-fake_cipherprov.o" => [ + "test/fake_cipherprov.c" + ], "test/evp_test" => [ "test/evp_test-bin-evp_test.o" ], "test/evp_test-bin-evp_test.o" => [ "test/evp_test.c" ], + "test/evp_xof_test" => [ + "test/evp_xof_test-bin-evp_xof_test.o" + ], + "test/evp_xof_test-bin-evp_xof_test.o" => [ + "test/evp_xof_test.c" + ], "test/exdatatest" => [ "test/exdatatest-bin-exdatatest.o" ], @@ -26911,15 +31514,108 @@ our %unified_info = ( "test/helpers/fatalerrtest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/json_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/json_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/json_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + "test/helpers/pkcs12.c" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ "test/helpers/pkcs12.c" ], + "test/helpers/quic_multistream_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_multistream_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_multistream_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_newcid_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_newcid_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_newcid_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_radix_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_radix_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_radix_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_srt_gen_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicapitest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicapitest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicapitest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicfaultstest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicfaultstest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicfaultstest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/ssl_old_test-bin-predefined_dhparams.o" => [ "test/helpers/predefined_dhparams.c" ], @@ -26947,6 +31643,9 @@ our %unified_info = ( "test/helpers/tls13ccstest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/hexstr_test" => [ "test/hexstr_test-bin-hexstr_test.o" ], @@ -26959,6 +31658,12 @@ our %unified_info = ( "test/hmactest-bin-hmactest.o" => [ "test/hmactest.c" ], + "test/hpke_test" => [ + "test/hpke_test-bin-hpke_test.o" + ], + "test/hpke_test-bin-hpke_test.o" => [ + "test/hpke_test.c" + ], "test/http_test" => [ "test/http_test-bin-http_test.o" ], @@ -26977,6 +31682,16 @@ our %unified_info = ( "test/igetest-bin-igetest.o" => [ "test/igetest.c" ], + "test/json_test" => [ + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/json_test-bin-json_test.o" + ], + "test/json_test-bin-json_test.o" => [ + "test/json_test.c" + ], "test/keymgmt_internal_test" => [ "test/keymgmt_internal_test-bin-keymgmt_internal_test.o" ], @@ -26998,6 +31713,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -27010,6 +31726,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-tests.o", "test/testutil/libtestutil-lib-testutil_init.o" ], + "test/list_test" => [ + "test/list_test-bin-list_test.o" + ], + "test/list_test-bin-list_test.o" => [ + "test/list_test.c" + ], "test/localetest" => [ "test/localetest-bin-localetest.o" ], @@ -27028,12 +31750,36 @@ our %unified_info = ( "test/mdc2test-bin-mdc2test.o" => [ "test/mdc2test.c" ], + "test/membio_test" => [ + "test/membio_test-bin-membio_test.o" + ], + "test/membio_test-bin-membio_test.o" => [ + "test/membio_test.c" + ], "test/memleaktest" => [ "test/memleaktest-bin-memleaktest.o" ], "test/memleaktest-bin-memleaktest.o" => [ "test/memleaktest.c" ], + "test/ml_dsa_test" => [ + "test/ml_dsa_test-bin-ml_dsa_test.o" + ], + "test/ml_dsa_test-bin-ml_dsa_test.o" => [ + "test/ml_dsa_test.c" + ], + "test/ml_kem_evp_extra_test" => [ + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" + ], + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" => [ + "test/ml_kem_evp_extra_test.c" + ], + "test/ml_kem_internal_test" => [ + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" + ], + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" => [ + "test/ml_kem_internal_test.c" + ], "test/modes_internal_test" => [ "test/modes_internal_test-bin-modes_internal_test.o" ], @@ -27079,11 +31825,18 @@ our %unified_info = ( "test/p_test.c" ], "test/packettest" => [ + "crypto/packettest-bin-quic_vlint.o", "test/packettest-bin-packettest.o" ], "test/packettest-bin-packettest.o" => [ "test/packettest.c" ], + "test/pairwise_fail_test" => [ + "test/pairwise_fail_test-bin-pairwise_fail_test.o" + ], + "test/pairwise_fail_test-bin-pairwise_fail_test.o" => [ + "test/pairwise_fail_test.c" + ], "test/param_build_test" => [ "test/param_build_test-bin-param_build_test.o" ], @@ -27132,6 +31885,13 @@ our %unified_info = ( "test/pemtest-bin-pemtest.o" => [ "test/pemtest.c" ], + "test/pkcs12_api_test" => [ + "test/helpers/pkcs12_api_test-bin-pkcs12.o", + "test/pkcs12_api_test-bin-pkcs12_api_test.o" + ], + "test/pkcs12_api_test-bin-pkcs12_api_test.o" => [ + "test/pkcs12_api_test.c" + ], "test/pkcs12_format_test" => [ "test/helpers/pkcs12_format_test-bin-pkcs12.o", "test/pkcs12_format_test-bin-pkcs12_format_test.o" @@ -27163,6 +31923,12 @@ our %unified_info = ( "test/poly1305_internal_test-bin-poly1305_internal_test.o" => [ "test/poly1305_internal_test.c" ], + "test/priority_queue_test" => [ + "test/priority_queue_test-bin-priority_queue_test.o" + ], + "test/priority_queue_test-bin-priority_queue_test.o" => [ + "test/priority_queue_test.c" + ], "test/property_test" => [ "test/property_test-bin-property_test.o" ], @@ -27181,6 +31947,12 @@ our %unified_info = ( "test/provfetchtest-bin-provfetchtest.o" => [ "test/provfetchtest.c" ], + "test/provider_default_search_path_test" => [ + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" + ], + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" => [ + "test/provider_default_search_path_test.c" + ], "test/provider_fallback_test" => [ "test/provider_fallback_test-bin-provider_fallback_test.o" ], @@ -27229,6 +32001,174 @@ our %unified_info = ( "test/punycode_test-bin-punycode_test.o" => [ "test/punycode_test.c" ], + "test/quic_ackm_test" => [ + "test/quic_ackm_test-bin-cc_dummy.o", + "test/quic_ackm_test-bin-quic_ackm_test.o" + ], + "test/quic_ackm_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_ackm_test-bin-quic_ackm_test.o" => [ + "test/quic_ackm_test.c" + ], + "test/quic_cc_test" => [ + "test/quic_cc_test-bin-quic_cc_test.o" + ], + "test/quic_cc_test-bin-quic_cc_test.o" => [ + "test/quic_cc_test.c" + ], + "test/quic_cfq_test" => [ + "test/quic_cfq_test-bin-quic_cfq_test.o" + ], + "test/quic_cfq_test-bin-quic_cfq_test.o" => [ + "test/quic_cfq_test.c" + ], + "test/quic_client_test" => [ + "test/quic_client_test-bin-quic_client_test.o" + ], + "test/quic_client_test-bin-quic_client_test.o" => [ + "test/quic_client_test.c" + ], + "test/quic_fc_test" => [ + "test/quic_fc_test-bin-quic_fc_test.o" + ], + "test/quic_fc_test-bin-quic_fc_test.o" => [ + "test/quic_fc_test.c" + ], + "test/quic_fifd_test" => [ + "test/quic_fifd_test-bin-cc_dummy.o", + "test/quic_fifd_test-bin-quic_fifd_test.o" + ], + "test/quic_fifd_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_fifd_test-bin-quic_fifd_test.o" => [ + "test/quic_fifd_test.c" + ], + "test/quic_lcidm_test" => [ + "test/quic_lcidm_test-bin-quic_lcidm_test.o" + ], + "test/quic_lcidm_test-bin-quic_lcidm_test.o" => [ + "test/quic_lcidm_test.c" + ], + "test/quic_multistream_test" => [ + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/quic_multistream_test-bin-quic_multistream_test.o" + ], + "test/quic_multistream_test-bin-quic_multistream_test.o" => [ + "test/quic_multistream_test.c" + ], + "test/quic_newcid_test" => [ + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/quic_newcid_test-bin-quic_newcid_test.o" + ], + "test/quic_newcid_test-bin-quic_newcid_test.o" => [ + "test/quic_newcid_test.c" + ], + "test/quic_qlog_test" => [ + "test/quic_qlog_test-bin-quic_qlog_test.o" + ], + "test/quic_qlog_test-bin-quic_qlog_test.o" => [ + "test/quic_qlog_test.c" + ], + "test/quic_radix_test" => [ + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "test/quic_rcidm_test" => [ + "test/quic_rcidm_test-bin-quic_rcidm_test.o" + ], + "test/quic_rcidm_test-bin-quic_rcidm_test.o" => [ + "test/quic_rcidm_test.c" + ], + "test/quic_record_test" => [ + "test/quic_record_test-bin-quic_record_test.o" + ], + "test/quic_record_test-bin-quic_record_test.o" => [ + "test/quic_record_test.c" + ], + "test/quic_srt_gen_test" => [ + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" + ], + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" => [ + "test/quic_srt_gen_test.c" + ], + "test/quic_srtm_test" => [ + "test/quic_srtm_test-bin-quic_srtm_test.o" + ], + "test/quic_srtm_test-bin-quic_srtm_test.o" => [ + "test/quic_srtm_test.c" + ], + "test/quic_stream_test" => [ + "test/quic_stream_test-bin-quic_stream_test.o" + ], + "test/quic_stream_test-bin-quic_stream_test.o" => [ + "test/quic_stream_test.c" + ], + "test/quic_tserver_test" => [ + "test/quic_tserver_test-bin-quic_tserver_test.o" + ], + "test/quic_tserver_test-bin-quic_tserver_test.o" => [ + "test/quic_tserver_test.c" + ], + "test/quic_txp_test" => [ + "test/quic_txp_test-bin-cc_dummy.o", + "test/quic_txp_test-bin-quic_txp_test.o" + ], + "test/quic_txp_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_txp_test-bin-quic_txp_test.o" => [ + "test/quic_txp_test.c" + ], + "test/quic_txpim_test" => [ + "test/quic_txpim_test-bin-quic_txpim_test.o" + ], + "test/quic_txpim_test-bin-quic_txpim_test.o" => [ + "test/quic_txpim_test.c" + ], + "test/quic_wire_test" => [ + "test/quic_wire_test-bin-quic_wire_test.o" + ], + "test/quic_wire_test-bin-quic_wire_test.o" => [ + "test/quic_wire_test.c" + ], + "test/quicapitest" => [ + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/quicapitest-bin-quicapitest.o" + ], + "test/quicapitest-bin-quicapitest.o" => [ + "test/quicapitest.c" + ], + "test/quicfaultstest" => [ + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", + "test/quicfaultstest-bin-quicfaultstest.o" + ], + "test/quicfaultstest-bin-quicfaultstest.o" => [ + "test/quicfaultstest.c" + ], + "test/radix/quic_radix_test-bin-quic_radix.o" => [ + "test/radix/quic_radix.c" + ], "test/rand_status_test" => [ "test/rand_status_test-bin-rand_status_test.o" ], @@ -27259,11 +32199,11 @@ our %unified_info = ( "test/rc5test-bin-rc5test.o" => [ "test/rc5test.c" ], - "test/rdrand_sanitytest" => [ - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" + "test/rdcpu_sanitytest" => [ + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" ], - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" => [ - "test/rdrand_sanitytest.c" + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" => [ + "test/rdcpu_sanitytest.c" ], "test/recordlentest" => [ "test/helpers/recordlentest-bin-ssltestlib.o", @@ -27272,6 +32212,13 @@ our %unified_info = ( "test/recordlentest-bin-recordlentest.o" => [ "test/recordlentest.c" ], + "test/rpktest" => [ + "test/helpers/rpktest-bin-ssltestlib.o", + "test/rpktest-bin-rpktest.o" + ], + "test/rpktest-bin-rpktest.o" => [ + "test/rpktest.c" + ], "test/rsa_complex" => [ "test/rsa_complex-bin-rsa_complex.o" ], @@ -27296,6 +32243,18 @@ our %unified_info = ( "test/rsa_test-bin-rsa_test.o" => [ "test/rsa_test.c" ], + "test/rsa_x931_test" => [ + "test/rsa_x931_test-bin-rsa_x931_test.o" + ], + "test/rsa_x931_test-bin-rsa_x931_test.o" => [ + "test/rsa_x931_test.c" + ], + "test/safe_math_test" => [ + "test/safe_math_test-bin-safe_math_test.o" + ], + "test/safe_math_test-bin-safe_math_test.o" => [ + "test/safe_math_test.c" + ], "test/sanitytest" => [ "test/sanitytest-bin-sanitytest.o" ], @@ -27327,6 +32286,12 @@ our %unified_info = ( "test/siphash_internal_test-bin-siphash_internal_test.o" => [ "test/siphash_internal_test.c" ], + "test/slh_dsa_test" => [ + "test/slh_dsa_test-bin-slh_dsa_test.o" + ], + "test/slh_dsa_test-bin-slh_dsa_test.o" => [ + "test/slh_dsa_test.c" + ], "test/sm2_internal_test" => [ "test/sm2_internal_test-bin-sm2_internal_test.o" ], @@ -27369,6 +32334,13 @@ our %unified_info = ( "test/ssl_ctx_test-bin-ssl_ctx_test.o" => [ "test/ssl_ctx_test.c" ], + "test/ssl_handshake_rtt_test" => [ + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" + ], + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" => [ + "test/ssl_handshake_rtt_test.c" + ], "test/ssl_old_test" => [ "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/ssl_old_test-bin-ssl_old_test.o" @@ -27427,6 +32399,12 @@ our %unified_info = ( "test/stack_test-bin-stack_test.o" => [ "test/stack_test.c" ], + "test/strtoultest" => [ + "test/strtoultest-bin-strtoultest.o" + ], + "test/strtoultest-bin-strtoultest.o" => [ + "test/strtoultest.c" + ], "test/sysdefaulttest" => [ "test/sysdefaulttest-bin-sysdefaulttest.o" ], @@ -27457,6 +32435,9 @@ our %unified_info = ( "test/testutil/libtestutil-lib-format_output.o" => [ "test/testutil/format_output.c" ], + "test/testutil/libtestutil-lib-helper.o" => [ + "test/testutil/helper.c" + ], "test/testutil/libtestutil-lib-load.o" => [ "test/testutil/load.c" ], @@ -27490,6 +32471,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-testutil_init.o" => [ "test/testutil/testutil_init.c" ], + "test/threadpool_test" => [ + "test/threadpool_test-bin-threadpool_test.o" + ], + "test/threadpool_test-bin-threadpool_test.o" => [ + "test/threadpool_test.c" + ], "test/threadstest" => [ "test/threadstest-bin-threadstest.o" ], @@ -27508,6 +32495,12 @@ our %unified_info = ( "test/time_offset_test-bin-time_offset_test.o" => [ "test/time_offset_test.c" ], + "test/time_test" => [ + "test/time_test-bin-time_test.o" + ], + "test/time_test-bin-time_test.o" => [ + "test/time_test.c" + ], "test/tls13ccstest" => [ "test/helpers/tls13ccstest-bin-ssltestlib.o", "test/tls13ccstest-bin-tls13ccstest.o" @@ -27521,6 +32514,13 @@ our %unified_info = ( "test/tls13encryptiontest-bin-tls13encryptiontest.o" => [ "test/tls13encryptiontest.c" ], + "test/tls13groupselection_test" => [ + "test/helpers/tls13groupselection_test-bin-ssltestlib.o", + "test/tls13groupselection_test-bin-tls13groupselection_test.o" + ], + "test/tls13groupselection_test-bin-tls13groupselection_test.o" => [ + "test/tls13groupselection_test.c" + ], "test/trace_api_test" => [ "test/trace_api_test-bin-trace_api_test.o" ], @@ -27576,6 +32576,12 @@ our %unified_info = ( "test/wpackettest-bin-wpackettest.o" => [ "test/wpackettest.c" ], + "test/x509_acert_test" => [ + "test/x509_acert_test-bin-x509_acert_test.o" + ], + "test/x509_acert_test-bin-x509_acert_test.o" => [ + "test/x509_acert_test.c" + ], "test/x509_check_cert_pkey_test" => [ "test/x509_check_cert_pkey_test-bin-x509_check_cert_pkey_test.o" ], @@ -27594,6 +32600,24 @@ our %unified_info = ( "test/x509_internal_test-bin-x509_internal_test.o" => [ "test/x509_internal_test.c" ], + "test/x509_load_cert_file_test" => [ + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" + ], + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" => [ + "test/x509_load_cert_file_test.c" + ], + "test/x509_req_test" => [ + "test/x509_req_test-bin-x509_req_test.o" + ], + "test/x509_req_test-bin-x509_req_test.o" => [ + "test/x509_req_test.c" + ], + "test/x509_test" => [ + "test/x509_test-bin-x509_test.o" + ], + "test/x509_test-bin-x509_test.o" => [ + "test/x509_test.c" + ], "test/x509_time_test" => [ "test/x509_time_test-bin-x509_time_test.o" ], @@ -27654,6 +32678,7 @@ my @makevars = ( "LDLIBS", "MT", "MTFLAGS", + "OBJCOPY", "PERL", "RANLIB", "RC", @@ -27667,6 +32692,12 @@ my %disabled_info = ( "asan" => { "macro" => "OPENSSL_NO_ASAN" }, + "brotli" => { + "macro" => "OPENSSL_NO_BROTLI" + }, + "brotli-dynamic" => { + "macro" => "OPENSSL_NO_BROTLI_DYNAMIC" + }, "comp" => { "macro" => "OPENSSL_NO_COMP", "skipped" => [ @@ -27679,6 +32710,9 @@ my %disabled_info = ( "crypto-mdebug-backtrace" => { "macro" => "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE" }, + "demos" => { + "macro" => "OPENSSL_NO_DEMOS" + }, "devcryptoeng" => { "macro" => "OPENSSL_NO_DEVCRYPTOENG" }, @@ -27691,12 +32725,24 @@ my %disabled_info = ( "external-tests" => { "macro" => "OPENSSL_NO_EXTERNAL_TESTS" }, + "fips-jitter" => { + "macro" => "OPENSSL_NO_FIPS_JITTER" + }, "fuzz-afl" => { "macro" => "OPENSSL_NO_FUZZ_AFL" }, "fuzz-libfuzzer" => { "macro" => "OPENSSL_NO_FUZZ_LIBFUZZER" }, + "h3demo" => { + "macro" => "OPENSSL_NO_H3DEMO" + }, + "hqinterop" => { + "macro" => "OPENSSL_NO_HQINTEROP" + }, + "jitter" => { + "macro" => "OPENSSL_NO_JITTER" + }, "ktls" => { "macro" => "OPENSSL_NO_KTLS" }, @@ -27712,6 +32758,9 @@ my %disabled_info = ( "msan" => { "macro" => "OPENSSL_NO_MSAN" }, + "pie" => { + "macro" => "OPENSSL_NO_PIE" + }, "rc5" => { "macro" => "OPENSSL_NO_RC5", "skipped" => [ @@ -27727,6 +32776,12 @@ my %disabled_info = ( "ssl3-method" => { "macro" => "OPENSSL_NO_SSL3_METHOD" }, + "sslkeylog" => { + "macro" => "OPENSSL_NO_SSLKEYLOG" + }, + "tfo" => { + "macro" => "OPENSSL_NO_TFO" + }, "trace" => { "macro" => "OPENSSL_NO_TRACE" }, @@ -27741,6 +32796,18 @@ my %disabled_info = ( }, "weak-ssl-ciphers" => { "macro" => "OPENSSL_NO_WEAK_SSL_CIPHERS" + }, + "zlib" => { + "macro" => "OPENSSL_NO_ZLIB" + }, + "zlib-dynamic" => { + "macro" => "OPENSSL_NO_ZLIB_DYNAMIC" + }, + "zstd" => { + "macro" => "OPENSSL_NO_ZSTD" + }, + "zstd-dynamic" => { + "macro" => "OPENSSL_NO_ZSTD_DYNAMIC" } ); my @user_crossable = qw( AR AS CC CXX CPP LD MT RANLIB RC ); @@ -27754,15 +32821,15 @@ unless (caller) { use File::Copy; use Pod::Usage; - use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; - use OpenSSL::fallback '/home/runner/work/node/node/deps/openssl/openssl/external/perl/MODULES.txt'; + use lib '/node/deps/openssl/openssl/util/perl'; + use OpenSSL::fallback '/node/deps/openssl/openssl/external/perl/MODULES.txt'; my $here = dirname($0); if (scalar @ARGV == 0) { # With no arguments, re-create the build file # We do that in two steps, where the first step emits perl - # snipets. + # snippets. my $buildfile = $config{build_file}; my $buildfile_template = "$buildfile.in"; @@ -27782,7 +32849,7 @@ unless (caller) { ); use lib '.'; - use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; + use lib '/node/deps/openssl/openssl/Configurations'; use gentemplate; open my $buildfile_template_fh, ">$buildfile_template" @@ -27799,8 +32866,8 @@ unless (caller) { my $prepend = <<'_____'; use File::Spec::Functions; -use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; -use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; +use lib '/node/deps/openssl/openssl/util/perl'; +use lib '/node/deps/openssl/openssl/Configurations'; use lib '.'; use platform; _____ diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/aes/aes-586.asm b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/aes/aes-586.asm index 7a17e847c64a73..a086cffb69f5aa 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/aes/aes-586.asm +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/aes/aes-586.asm @@ -3208,4 +3208,4 @@ db 65,69,83,32,102,111,114,32,120,56,54,44,32,67,82,89 db 80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114 db 111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 segment .bss -common _OPENSSL_ia32cap_P 16 +common _OPENSSL_ia32cap_P 40 diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/aes/aesni-x86.asm b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/aes/aesni-x86.asm index 14abad18102ad1..02f717dfc10da6 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/aes/aesni-x86.asm +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/aes/aesni-x86.asm @@ -3199,4 +3199,4 @@ db 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 db 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 db 115,108,46,111,114,103,62,0 segment .bss -common _OPENSSL_ia32cap_P 16 +common _OPENSSL_ia32cap_P 40 diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/bn/bn-586.asm b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/bn/bn-586.asm index 82002b353bfd3b..e9e8a059af1ddc 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/bn/bn-586.asm +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/bn/bn-586.asm @@ -1512,4 +1512,4 @@ L$029pw_end: pop ebp ret segment .bss -common _OPENSSL_ia32cap_P 16 +common _OPENSSL_ia32cap_P 40 diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/bn/x86-gf2m.asm b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/bn/x86-gf2m.asm index 709f4a9e506873..e726f43a66bb84 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/bn/x86-gf2m.asm +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/bn/x86-gf2m.asm @@ -342,4 +342,4 @@ db 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 db 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 db 62,0 segment .bss -common _OPENSSL_ia32cap_P 16 +common _OPENSSL_ia32cap_P 40 diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/bn/x86-mont.asm b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/bn/x86-mont.asm index 090630c3a00c2b..1ab7a560d37652 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/bn/x86-mont.asm +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/bn/x86-mont.asm @@ -476,4 +476,4 @@ db 54,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 db 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 db 111,114,103,62,0 segment .bss -common _OPENSSL_ia32cap_P 16 +common _OPENSSL_ia32cap_P 40 diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h index f90d9391b1b15c..10629cfd854ae4 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: " -#define DATE "built on: Sun Jul 20 00:56:04 2025 UTC" +#define DATE "built on: Tue Aug 5 17:24:08 2025 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/chacha/chacha-x86.asm b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/chacha/chacha-x86.asm index a19fea38079c07..fe015851bf8144 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/chacha/chacha-x86.asm +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/chacha/chacha-x86.asm @@ -1444,4 +1444,4 @@ L$019done: pop ebp ret segment .bss -common _OPENSSL_ia32cap_P 16 +common _OPENSSL_ia32cap_P 40 diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/ec/ecp_nistz256-x86.asm b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/ec/ecp_nistz256-x86.asm index 96071a300ead92..df13353f9d805f 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/ec/ecp_nistz256-x86.asm +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/ec/ecp_nistz256-x86.asm @@ -5125,4 +5125,4 @@ L$013pic: pop ebp ret segment .bss -common _OPENSSL_ia32cap_P 16 +common _OPENSSL_ia32cap_P 40 diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/params_idx.c b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/params_idx.c new file mode 100644 index 00000000000000..874125eb57a17c --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/params_idx.c @@ -0,0 +1,3366 @@ +/* + * WARNING: do not edit! + * Generated by makefile from crypto/params_idx.c.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#include "internal/e_os.h" +#include "internal/param_names.h" +#include + +/* Machine generated TRIE -- generated by util/perl/OpenSSL/paramnames.pm */ +int ossl_param_find_pidx(const char *s) +{ + switch(s[0]) { + default: + break; + case 'a': + switch(s[1]) { + default: + break; + case 'c': + if (strcmp("vp-info", s + 2) == 0) + return PIDX_KDF_PARAM_X942_ACVPINFO; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'd': + if (strcmp("itional-random", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_ADD_RANDOM; + break; + case '\0': + return PIDX_KDF_PARAM_ARGON2_AD; + } + break; + case 'e': + if (strcmp("ad", s + 2) == 0) + return PIDX_CIPHER_PARAM_AEAD; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("id_param", s + 4) == 0) + return PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD; + break; + case 'i': + if (strcmp("d-absent", s + 4) == 0) + return PIDX_DIGEST_PARAM_ALGID_ABSENT; + break; + case 'o': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'h': + switch(s[8]) { + default: + break; + case 'm': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '-': + if (strcmp("params", s + 13) == 0) + return PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS; + break; + case '\0': + return PIDX_ALG_PARAM_ALGORITHM_ID; + } + } + } + } + } + } + } + } + } + } + break; + case 'i': + if (strcmp("as", s + 3) == 0) + return PIDX_STORE_PARAM_ALIAS; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_A; + } + break; + case 'b': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("sis-type", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_CHAR2_TYPE; + break; + case 'i': + if (strcmp("ts", s + 2) == 0) + return PIDX_PKEY_PARAM_BITS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("size", s + 6) == 0) + return PIDX_MAC_PARAM_BLOCK_SIZE; + break; + case '_': + if (strcmp("padding", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING; + break; + case 's': + if (strcmp("ize", s + 6) == 0) + return PIDX_DIGEST_PARAM_BLOCK_SIZE; + } + } + } + } + break; + case 'u': + if (strcmp("ildinfo", s + 2) == 0) + return PIDX_PROV_PARAM_BUILDINFO; + break; + case '\0': + return PIDX_PKEY_PARAM_EC_B; + } + break; + case 'c': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_C_ROUNDS; + break; + case 'e': + if (strcmp("kalg", s + 2) == 0) + return PIDX_KDF_PARAM_CEK_ALG; + break; + case 'i': + if (strcmp("pher", s + 2) == 0) + return PIDX_ALG_PARAM_CIPHER; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("actor", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_COFACTOR; + break; + case 'n': + switch(s[3]) { + default: + break; + case 's': + if (strcmp("tant", s + 4) == 0) + return PIDX_KDF_PARAM_CONSTANT; + break; + case 't': + if (strcmp("ext-string", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_CONTEXT_STRING; + } + } + break; + case 't': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("mode", s + 4) == 0) + return PIDX_CIPHER_PARAM_CTS_MODE; + break; + case '\0': + return PIDX_CIPHER_PARAM_CTS; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '-': + if (strcmp("iv", s + 7) == 0) + return PIDX_CIPHER_PARAM_CUSTOM_IV; + break; + case '\0': + return PIDX_MAC_PARAM_CUSTOM; + } + } + } + } + } + } + break; + case 'd': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_D_ROUNDS; + break; + case 'a': + switch(s[2]) { + default: + break; + case 't': + switch(s[3]) { + default: + break; + case 'a': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 's': + if (strcmp("tructure", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_STRUCTURE; + break; + case 't': + if (strcmp("ype", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_TYPE; + } + break; + case '\0': + return PIDX_OBJECT_PARAM_DATA; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + if (strcmp("ded-from-explicit", s + 4) == 0) + return PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS; + break; + case 'r': + if (strcmp("ypt-only", s + 4) == 0) + return PIDX_CIPHER_PARAM_DECRYPT_ONLY; + } + break; + case 'f': + if (strcmp("ault-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_DEFAULT_DIGEST; + break; + case 's': + if (strcmp("c", s + 3) == 0) + return PIDX_OBJECT_PARAM_DESC; + break; + case 't': + if (strcmp("erministic", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_DETERMINISTIC; + } + break; + case 'h': + if (strcmp("kem-ikm", s + 2) == 0) + return PIDX_PKEY_PARAM_DHKEM_IKM; + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("heck", s + 8) == 0) + return PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK; + break; + case 'n': + if (strcmp("oinit", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_NOINIT; + break; + case 'o': + if (strcmp("neshot", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_ONESHOT; + break; + case 'p': + if (strcmp("rops", s + 8) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS; + break; + case 's': + if (strcmp("ize", s + 8) == 0) + return PIDX_PKEY_PARAM_DIGEST_SIZE; + } + break; + case '\0': + return PIDX_STORE_PARAM_DIGEST; + } + } + } + } + break; + case 's': + if (strcmp("tid", s + 3) == 0) + return PIDX_PKEY_PARAM_DIST_ID; + } + break; + case 'r': + if (strcmp("bg-no-trunc-md", s + 2) == 0) + return PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST; + break; + case 's': + if (strcmp("a-sign-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_DSA_SIGN_DISABLED; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_D; + } + break; + case 'e': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("rly_clean", s + 2) == 0) + return PIDX_KDF_PARAM_EARLY_CLEAN; + break; + case 'c': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'h': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'a': + switch(s[9]) { + default: + break; + case 'c': + switch(s[10]) { + default: + break; + case 't': + switch(s[11]) { + default: + break; + case 'o': + switch(s[12]) { + default: + break; + case 'r': + switch(s[13]) { + default: + break; + case '-': + switch(s[14]) { + default: + break; + case 'c': + if (strcmp("heck", s + 15) == 0) + return PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK; + break; + case 'm': + if (strcmp("ode", s + 15) == 0) + return PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE; + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'm': + if (strcmp("s_check", s + 2) == 0) + return PIDX_KDF_PARAM_FIPS_EMS_CHECK; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("d-pub-key", s + 6) == 0) + return PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY; + break; + case 'i': + if (strcmp("ng", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_ENCODING; + } + } + break; + case 'r': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'c': + if (strcmp("heck", s + 9) == 0) + return PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK; + break; + case 'l': + if (strcmp("evel", s + 9) == 0) + return PIDX_ENCODER_PARAM_ENCRYPT_LEVEL; + } + } + } + } + } + } + break; + case 'g': + if (strcmp("ine", s + 3) == 0) + return PIDX_ALG_PARAM_ENGINE; + break; + case 't': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'y': + switch(s[7]) { + default: + break; + case '_': + if (strcmp("required", s + 8) == 0) + return PIDX_DRBG_PARAM_ENTROPY_REQUIRED; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_ENTROPY; + } + } + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_E; + break; + case 'x': + if (strcmp("pect", s + 2) == 0) + return PIDX_STORE_PARAM_EXPECT; + } + break; + case 'f': + switch(s[1]) { + default: + break; + case 'i': + switch(s[2]) { + default: + break; + case 'e': + if (strcmp("ld-type", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_FIELD_TYPE; + break; + case 'n': + if (strcmp("gerprint", s + 3) == 0) + return PIDX_STORE_PARAM_FINGERPRINT; + break; + case 'p': + if (strcmp("s-indicator", s + 3) == 0) + return PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR; + } + } + break; + case 'g': + switch(s[1]) { + default: + break; + case 'e': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_GENERATE; + } + break; + case 'o': + if (strcmp("r", s + 8) == 0) + return PIDX_PKEY_PARAM_EC_GENERATOR; + } + } + } + } + } + } + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_GINDEX; + break; + case 'r': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'u': + switch(s[4]) { + default: + break; + case 'p': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("check", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE; + break; + case '\0': + return PIDX_PKEY_PARAM_GROUP_NAME; + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_G; + } + break; + case 'h': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("s-randkey", s + 2) == 0) + return PIDX_CIPHER_PARAM_HAS_RAND_KEY; + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_H; + break; + case 'k': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'f': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_KEY_CHECK; + } + } + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_HMAC_KEY_CHECK; + break; + case 's': + if (strcmp("_padding", s + 2) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING; + } + break; + case 'i': + switch(s[1]) { + default: + break; + case 'd': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_PKCS12_ID; + } + break; + case 'k': + if (strcmp("me", s + 2) == 0) + return PIDX_KEM_PARAM_IKME; + break; + case 'm': + if (strcmp("plicit-rejection", s + 2) == 0) + return PIDX_PKEY_PARAM_IMPLICIT_REJECTION; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("lude-public", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC; + break; + case 'f': + if (strcmp("o", s + 3) == 0) + return PIDX_PASSPHRASE_PARAM_INFO; + break; + case 'p': + if (strcmp("ut-type", s + 3) == 0) + return PIDX_STORE_PARAM_INPUT_TYPE; + break; + case 's': + if (strcmp("tance", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_INSTANCE; + } + break; + case 't': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("tion", s + 5) == 0) + return PIDX_GEN_PARAM_ITERATION; + break; + case '\0': + return PIDX_KDF_PARAM_ITER; + } + } + } + break; + case 'v': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("generated", s + 3) == 0) + return PIDX_CIPHER_PARAM_AEAD_IV_GENERATED; + break; + case 'l': + if (strcmp("en", s + 3) == 0) + return PIDX_CIPHER_PARAM_IVLEN; + break; + case '\0': + return PIDX_MAC_PARAM_IV; + } + } + break; + case 'j': + switch(s[1]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_COFACTOR; + } + break; + case 'k': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K2; + } + break; + case '3': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K3; + } + break; + case 'a': + if (strcmp("t", s + 2) == 0) + return PIDX_SIGNATURE_PARAM_KAT; + break; + case 'b': + if (strcmp("kdf-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KBKDF_KEY_CHECK; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case 's': + switch(s[9]) { + default: + break; + case 't': + switch(s[10]) { + default: + break; + case '-': + if (strcmp("props", s + 11) == 0) + return PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_KDF_DIGEST; + } + } + } + } + } + } + break; + case 'o': + if (strcmp("utlen", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_OUTLEN; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_TYPE; + break; + case 'u': + if (strcmp("km", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_UKM; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'y': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("heck", s + 5) == 0) + return PIDX_PKEY_PARAM_FIPS_KEY_CHECK; + break; + case 'l': + if (strcmp("ength", s + 5) == 0) + return PIDX_SKEY_PARAM_KEY_LENGTH; + } + break; + case 'b': + if (strcmp("its", s + 4) == 0) + return PIDX_CIPHER_PARAM_RC2_KEYBITS; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_KEYLEN; + break; + case '\0': + return PIDX_MAC_PARAM_KEY; + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KMAC_KEY_CHECK; + } + break; + case 'l': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("el", s + 3) == 0) + return PIDX_KDF_PARAM_LABEL; + break; + case 'n': + if (strcmp("es", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_LANES; + } + } + break; + case 'm': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'k': + if (strcmp("ey", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_MAC_KEY; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_KDF_PARAM_MAC_SIZE; + break; + case '\0': + return PIDX_ALG_PARAM_MAC; + } + break; + case 'n': + if (strcmp("datory-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_MANDATORY_DIGEST; + break; + case 'x': + switch(s[3]) { + default: + break; + case '-': + if (strcmp("size", s + 4) == 0) + return PIDX_PKEY_PARAM_MAX_SIZE; + break; + case '_': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("dinlen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_ADINLEN; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("rly_data", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA; + break; + case 'n': + if (strcmp("tropylen", s + 6) == 0) + return PIDX_DRBG_PARAM_MAX_ENTROPYLEN; + } + break; + case 'f': + if (strcmp("rag_len", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_NONCELEN; + break; + case 'p': + if (strcmp("erslen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_PERSLEN; + break; + case 'r': + if (strcmp("equest", s + 5) == 0) + return PIDX_RAND_PARAM_MAX_REQUEST; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MAX_LENGTH; + break; + case 'm': + if (strcmp("em_bytes", s + 4) == 0) + return PIDX_KDF_PARAM_SCRYPT_MAXMEM; + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'm': + if (strcmp("cost", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_MEMCOST; + break; + case 's': + if (strcmp("sage-encoding", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING; + } + break; + case 'g': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_DIGEST; + break; + case 'p': + if (strcmp("roperties", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_PROPERTIES; + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_MASKGENFUNC; + } + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("alg", s + 3) == 0) + return PIDX_DIGEST_PARAM_MICALG; + break; + case 'n': + switch(s[3]) { + default: + break; + case '_': + switch(s[4]) { + default: + break; + case 'e': + if (strcmp("ntropylen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_ENTROPYLEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_NONCELEN; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MIN_LENGTH; + } + } + break; + case 'l': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + if (strcmp("nput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS; + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED; + } + } + } + } + break; + case 'k': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + switch(s[8]) { + default: + break; + case 'm': + if (strcmp("port_pct_type", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE; + break; + case 'n': + if (strcmp("put_formats", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS; + } + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED; + } + } + } + } + } + } + break; + case 'o': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case '\0': + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE; + } + break; + case 'u': + if (strcmp("le-filename", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_MODULE_FILENAME; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_SIGNATURE_PARAM_MU; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_M; + } + break; + case 'n': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("me", s + 2) == 0) + return PIDX_STORE_PARAM_ISSUER; + break; + case 'o': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("short-mac", s + 3) == 0) + return PIDX_PROV_PARAM_NO_SHORT_MAC; + break; + case 'n': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("type", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_NONCE_TYPE; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_NONCE; + } + } + } + } + break; + case 'u': + if (strcmp("m", s + 2) == 0) + return PIDX_CIPHER_PARAM_NUM; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_N; + } + break; + case 'o': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("ep-label", s + 2) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL; + break; + case 'p': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'n': + if (strcmp("ssl-version", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_VERSION; + break; + case 'r': + if (strcmp("ation", s + 4) == 0) + return PIDX_KEM_PARAM_OPERATION; + } + break; + case 't': + if (strcmp("ions", s + 3) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS; + } + break; + case 'r': + if (strcmp("der", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_ORDER; + } + break; + case 'p': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P2; + } + break; + case 'a': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'm': + if (strcmp("ode", s + 5) == 0) + return PIDX_PKEY_PARAM_PAD_MODE; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_DIGEST_PARAM_PAD_TYPE; + } + break; + case 'd': + if (strcmp("ing", s + 4) == 0) + return PIDX_CIPHER_PARAM_PADDING; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_PAD; + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'u': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYUINFO; + break; + case 'v': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYVINFO; + } + } + } + break; + case 's': + if (strcmp("s", s + 3) == 0) + return PIDX_KDF_PARAM_PASSWORD; + } + break; + case 'b': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("ts", s + 3) == 0) + return PIDX_PKEY_PARAM_FFC_PBITS; + break; + case 'k': + if (strcmp("df2-lower-bound-check", s + 3) == 0) + return PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK; + } + break; + case 'c': + if (strcmp("ounter", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_PCOUNTER; + break; + case 'i': + if (strcmp("peline-tag", s + 2) == 0) + return PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG; + break; + case 'k': + if (strcmp("cs5", s + 2) == 0) + return PIDX_KDF_PARAM_PKCS5; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("nt-format", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT; + break; + case 't': + if (strcmp("ential", s + 3) == 0) + return PIDX_GEN_PARAM_POTENTIAL; + } + break; + case 'r': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("iction_resistance", s + 4) == 0) + return PIDX_DRBG_PARAM_PREDICTION_RESISTANCE; + break; + case 'f': + if (strcmp("ix", s + 4) == 0) + return PIDX_KDF_PARAM_PREFIX; + } + break; + case 'i': + switch(s[3]) { + default: + break; + case 'm': + if (strcmp("es", s + 4) == 0) + return PIDX_PKEY_PARAM_RSA_PRIMES; + break; + case 'v': + switch(s[4]) { + default: + break; + case '_': + if (strcmp("len", s + 5) == 0) + return PIDX_PKEY_PARAM_DH_PRIV_LEN; + break; + case '\0': + return PIDX_PKEY_PARAM_PRIV_KEY; + } + } + break; + case 'o': + switch(s[3]) { + default: + break; + case 'p': + if (strcmp("erties", s + 4) == 0) + return PIDX_STORE_PARAM_PROPERTIES; + break; + case 'v': + if (strcmp("ider-name", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_PROV_NAME; + } + } + break; + case 'u': + if (strcmp("b", s + 2) == 0) + return PIDX_PKEY_PARAM_PUB_KEY; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_P; + } + break; + case 'q': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q2; + } + break; + case 'b': + if (strcmp("its", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_QBITS; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_Q; + break; + case 'x': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_X; + } + break; + case 'y': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_Y; + } + } + break; + case 'r': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'k': + if (strcmp("ey", s + 5) == 0) + return PIDX_CIPHER_PARAM_RANDOM_KEY; + break; + case 'o': + if (strcmp("m_data", s + 5) == 0) + return PIDX_DRBG_PARAM_RANDOM_DATA; + } + } + break; + case 'w': + if (strcmp("-bytes", s + 3) == 0) + return PIDX_SKEY_PARAM_RAW_BYTES; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case '_': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("head", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD; + break; + case 'b': + if (strcmp("uffer_len", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN; + } + } + } + break; + case 'f': + if (strcmp("erence", s + 3) == 0) + return PIDX_OBJECT_PARAM_REFERENCE; + break; + case 's': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case '_': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("ounter", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_COUNTER; + break; + case 'r': + if (strcmp("equests", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_REQUESTS; + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case 'm': + switch(s[10]) { + default: + break; + case 'e': + switch(s[11]) { + default: + break; + case '_': + if (strcmp("interval", s + 12) == 0) + return PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL; + break; + case '\0': + return PIDX_DRBG_PARAM_RESEED_TIME; + } + } + } + } + } + } + } + } + } + } + break; + case 'o': + if (strcmp("unds", s + 2) == 0) + return PIDX_CIPHER_PARAM_ROUNDS; + break; + case 's': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + switch(s[5]) { + default: + break; + case 'o': + switch(s[6]) { + default: + break; + case 'e': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case 'i': + switch(s[10]) { + default: + break; + case 'c': + switch(s[11]) { + default: + break; + case 'i': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'n': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case '1': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT1; + } + break; + case '2': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT2; + } + break; + case '3': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT3; + } + break; + case '4': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT4; + } + break; + case '5': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT5; + } + break; + case '6': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT6; + } + break; + case '7': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT7; + } + break; + case '8': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT8; + } + break; + case '9': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'd': + if (strcmp("erive-from-pq", s + 5) == 0) + return PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'x': + switch(s[6]) { + default: + break; + case 'p': + switch(s[7]) { + default: + break; + case 'o': + switch(s[8]) { + default: + break; + case 'n': + switch(s[9]) { + default: + break; + case 'e': + switch(s[10]) { + default: + break; + case 'n': + switch(s[11]) { + default: + break; + case 't': + switch(s[12]) { + default: + break; + case '1': + switch(s[13]) { + default: + break; + case '0': + switch(s[14]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT1; + } + break; + case '2': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT2; + } + break; + case '3': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT3; + } + break; + case '4': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT4; + } + break; + case '5': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT5; + } + break; + case '6': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT6; + } + break; + case '7': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT7; + } + break; + case '8': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT8; + } + break; + case '9': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT; + } + } + } + } + } + } + } + } + break; + case 'f': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'o': + switch(s[9]) { + default: + break; + case 'r': + switch(s[10]) { + default: + break; + case '1': + switch(s[11]) { + default: + break; + case '0': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR1; + } + break; + case '2': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR2; + } + break; + case '3': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR3; + } + break; + case '4': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR4; + } + break; + case '5': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR5; + } + break; + case '6': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR6; + } + break; + case '7': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR7; + } + break; + case '8': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR8; + } + break; + case '9': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR; + } + } + } + } + } + } + break; + case 'p': + switch(s[5]) { + default: + break; + case 'k': + if (strcmp("cs15-pad-disabled", s + 6) == 0) + return PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED; + break; + case 's': + if (strcmp("s-saltlen-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK; + } + break; + case 's': + if (strcmp("ign-x931-pad-disabled", s + 5) == 0) + return PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED; + } + } + } + break; + case '\0': + return PIDX_KDF_PARAM_SCRYPT_R; + } + break; + case 's': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("eprime-generator", s + 3) == 0) + return PIDX_PKEY_PARAM_DH_GENERATOR; + break; + case 'l': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'l': + if (strcmp("en", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_PSS_SALTLEN; + break; + case '\0': + return PIDX_MAC_PARAM_SALT; + } + } + break; + case 'v': + if (strcmp("e-parameters", s + 3) == 0) + return PIDX_ENCODER_PARAM_SAVE_PARAMETERS; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'r': + if (strcmp("et", s + 4) == 0) + return PIDX_KDF_PARAM_SECRET; + break; + case 'u': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'y': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'b': + if (strcmp("its", s + 10) == 0) + return PIDX_PKEY_PARAM_SECURITY_BITS; + break; + case 'c': + if (strcmp("hecks", s + 10) == 0) + return PIDX_PROV_PARAM_SECURITY_CHECKS; + } + } + } + } + } + } + } + break; + case 'e': + if (strcmp("d", s + 3) == 0) + return PIDX_PKEY_PARAM_SLH_DSA_SEED; + break; + case 'r': + if (strcmp("ial", s + 3) == 0) + return PIDX_STORE_PARAM_SERIAL; + break; + case 's': + if (strcmp("sion_id", s + 3) == 0) + return PIDX_KDF_PARAM_SSHKDF_SESSION_ID; + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'n': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + if (strcmp("heck", s + 6) == 0) + return PIDX_PKEY_PARAM_FIPS_SIGN_CHECK; + break; + case 'x': + if (strcmp("931-pad-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK; + } + break; + case 'a': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case 'u': + switch(s[7]) { + default: + break; + case 'r': + switch(s[8]) { + default: + break; + case 'e': + switch(s[9]) { + default: + break; + case '-': + if (strcmp("digest-check", s + 10) == 0) + return PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK; + break; + case '\0': + return PIDX_SIGNATURE_PARAM_SIGNATURE; + } + } + } + } + } + } + } + break; + case 'z': + if (strcmp("e", s + 3) == 0) + return PIDX_MAC_PARAM_SIZE; + } + break; + case 'p': + if (strcmp("eed", s + 2) == 0) + return PIDX_CIPHER_PARAM_SPEED; + break; + case 's': + switch(s[2]) { + default: + break; + case 'h': + switch(s[3]) { + default: + break; + case 'k': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'f': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_KEY_CHECK; + } + } + } + } + } + break; + case 'k': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'f': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_KEY_CHECK; + } + } + } + } + break; + case 'l': + if (strcmp("3-ms", s + 3) == 0) + return PIDX_DIGEST_PARAM_SSL3_MS; + } + break; + case 't': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("esc", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_DESC; + break; + case 'p': + if (strcmp("hase", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_PHASE; + break; + case 't': + if (strcmp("ype", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_TYPE; + } + break; + case 'a': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_STATE; + } + break; + case 'u': + if (strcmp("s", s + 5) == 0) + return PIDX_PROV_PARAM_STATUS; + } + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("m_mac", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC; + break; + case 'n': + if (strcmp("gth", s + 5) == 0) + return PIDX_RAND_PARAM_STRENGTH; + } + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("ject", s + 3) == 0) + return PIDX_STORE_PARAM_SUBJECT; + break; + case 'p': + switch(s[3]) { + default: + break; + case 'p': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + if (strcmp("ivinfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PRIVINFO; + break; + case 'u': + if (strcmp("binfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PUBINFO; + } + } + } + } + } + } + break; + case 't': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_TAGLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TAG; + } + } + break; + case 'd': + if (strcmp("es-encrypt-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED; + break; + case 'e': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case '-': + if (strcmp("entropy", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_TEST_ENTROPY; + break; + case '_': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("ntropy", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_ENTROPY; + break; + case 'n': + if (strcmp("once", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_NONCE; + } + } + } + } + break; + case 'h': + if (strcmp("reads", s + 2) == 0) + return PIDX_KDF_PARAM_THREADS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("lient-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION; + break; + case 'd': + if (strcmp("ata-size", s + 5) == 0) + return PIDX_MAC_PARAM_TLS_DATA_SIZE; + break; + case 'g': + switch(s[5]) { + default: + break; + case 'r': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'u': + switch(s[8]) { + default: + break; + case 'p': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'a': + if (strcmp("lg", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_ALG; + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_ID; + } + break; + case 's': + if (strcmp("-kem", s + 12) == 0) + return PIDX_CAPABILITY_TLS_GROUP_IS_KEM; + } + break; + case 'n': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'm': + switch(s[13]) { + default: + break; + case 'e': + switch(s[14]) { + default: + break; + case '-': + if (strcmp("internal", s + 15) == 0) + return PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL; + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_NAME; + } + } + } + } + break; + case 's': + if (strcmp("ec-bits", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case '-': + if (strcmp("size", s + 8) == 0) + return PIDX_CIPHER_PARAM_TLS_MAC_SIZE; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS_MAC; + } + break; + case 'x': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS; + } + } + } + break; + case 'i': + switch(s[6]) { + default: + break; + case 'n': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS; + } + } + } + break; + case 'u': + if (strcmp("lti", s + 6) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK; + } + break; + case 'n': + if (strcmp("egotiated-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION; + break; + case 's': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'a': + switch(s[8]) { + default: + break; + case 'l': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '-': + switch(s[11]) { + default: + break; + case 'c': + if (strcmp("ode-point", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT; + break; + case 'h': + switch(s[12]) { + default: + break; + case 'a': + switch(s[13]) { + default: + break; + case 's': + switch(s[14]) { + default: + break; + case 'h': + switch(s[15]) { + default: + break; + case '-': + switch(s[16]) { + default: + break; + case 'n': + if (strcmp("ame", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME; + break; + case 'o': + if (strcmp("id", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_OID; + } + } + } + } + } + break; + case 'i': + if (strcmp("ana-name", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME; + break; + case 'k': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'y': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case 'y': + switch(s[16]) { + default: + break; + case 'p': + switch(s[17]) { + default: + break; + case 'e': + switch(s[18]) { + default: + break; + case '-': + if (strcmp("oid", s + 19) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID; + break; + case '\0': + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE; + } + } + } + } + } + } + } + break; + case 'n': + if (strcmp("ame", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_NAME; + break; + case 'o': + if (strcmp("id", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_OID; + break; + case 's': + switch(s[12]) { + default: + break; + case 'e': + if (strcmp("c-bits", s + 13) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS; + break; + case 'i': + switch(s[13]) { + default: + break; + case 'g': + switch(s[14]) { + default: + break; + case '-': + switch(s[15]) { + default: + break; + case 'n': + if (strcmp("ame", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME; + break; + case 'o': + if (strcmp("id", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_OID; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'v': + if (strcmp("ersion", s + 5) == 0) + return PIDX_CIPHER_PARAM_TLS_VERSION; + } + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK; + break; + case 'e': + if (strcmp("ms-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK; + } + } + } + } + } + break; + case '3': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'k': + switch(s[7]) { + default: + break; + case 'd': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'u': + switch(s[6]) { + default: + break; + case 'l': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case '_': + switch(s[10]) { + default: + break; + case 'a': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'd': + switch(s[13]) { + default: + break; + case 'p': + if (strcmp("acklen", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD; + } + } + } + break; + case 'e': + switch(s[11]) { + default: + break; + case 'n': + switch(s[12]) { + default: + break; + case 'c': + switch(s[13]) { + default: + break; + case 'i': + if (strcmp("n", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN; + break; + case 'l': + if (strcmp("en", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC; + } + } + } + break; + case 'i': + if (strcmp("nterleave", s + 11) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE; + break; + case 'm': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'x': + switch(s[13]) { + default: + break; + case 'b': + if (strcmp("ufsz", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE; + break; + case 's': + if (strcmp("ndfrag", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT; + } + } + } + } + } + } + } + } + } + } + break; + case 'a': + switch(s[4]) { + default: + break; + case 'a': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'p': + if (strcmp("ad", s + 7) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD; + } + } + } + break; + case 'i': + switch(s[4]) { + default: + break; + case 'v': + switch(s[5]) { + default: + break; + case 'f': + if (strcmp("ixed", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED; + break; + case 'g': + if (strcmp("en", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN; + break; + case 'i': + if (strcmp("nv", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV; + } + } + break; + case 't': + if (strcmp("ree", s + 4) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS; + } + break; + case 'y': + if (strcmp("pe", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_TYPE; + } + break; + case 'u': + switch(s[1]) { + default: + break; + case 'k': + if (strcmp("m", s + 2) == 0) + return PIDX_KDF_PARAM_UKM; + break; + case 'p': + if (strcmp("dated-iv", s + 2) == 0) + return PIDX_CIPHER_PARAM_UPDATED_IV; + break; + case 's': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'b': + if (strcmp("its", s + 5) == 0) + return PIDX_CIPHER_PARAM_USE_BITS; + break; + case 'c': + if (strcmp("ofactor-flag", s + 5) == 0) + return PIDX_PKEY_PARAM_USE_COFACTOR_FLAG; + break; + case 'k': + if (strcmp("eybits", s + 5) == 0) + return PIDX_KDF_PARAM_X942_USE_KEYBITS; + break; + case 'l': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_KBKDF_USE_L; + } + break; + case 's': + if (strcmp("eparator", s + 5) == 0) + return PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR; + } + break; + case '_': + switch(s[4]) { + default: + break; + case 'd': + if (strcmp("erivation_function", s + 5) == 0) + return PIDX_DRBG_PARAM_USE_DF; + break; + case 'e': + if (strcmp("tm", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM; + } + } + } + } + break; + case 'v': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'l': + switch(s[3]) { + default: + break; + case 'i': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_VALIDATE_G; + } + break; + case 'l': + if (strcmp("egacy", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY; + break; + case 'p': + if (strcmp("q", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_PQ; + } + } + } + } + } + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'r': + switch(s[3]) { + default: + break; + case 'i': + if (strcmp("fy-message", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE; + break; + case 's': + if (strcmp("ion", s + 4) == 0) + return PIDX_PROV_PARAM_VERSION; + } + } + } + break; + case 'x': + switch(s[1]) { + default: + break; + case '9': + switch(s[2]) { + default: + break; + case '4': + if (strcmp("2kdf-key-check", s + 3) == 0) + return PIDX_PROV_PARAM_X942KDF_KEY_CHECK; + break; + case '6': + switch(s[3]) { + default: + break; + case '3': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'f': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_KEY_CHECK; + } + } + } + } + } + } + } + break; + case 'c': + if (strcmp("ghash", s + 2) == 0) + return PIDX_KDF_PARAM_SSHKDF_XCGHASH; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_DIGEST_PARAM_XOFLEN; + break; + case '\0': + return PIDX_MAC_PARAM_XOF; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP; + } + break; + case 'q': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ; + } + break; + case 't': + if (strcmp("s_standard", s + 2) == 0) + return PIDX_CIPHER_PARAM_XTS_STANDARD; + } + } + return -1; +} + +/* End of TRIE */ diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/poly1305/poly1305-x86.asm b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/poly1305/poly1305-x86.asm index ba241b7992bd8c..436d70f5315f63 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/poly1305/poly1305-x86.asm +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/poly1305/poly1305-x86.asm @@ -1900,4 +1900,4 @@ db 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111 db 114,103,62,0 align 4 segment .bss -common _OPENSSL_ia32cap_P 16 +common _OPENSSL_ia32cap_P 40 diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/rc4/rc4-586.asm b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/rc4/rc4-586.asm index c2758bfe8f69b1..8d4906eba79ef8 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/rc4/rc4-586.asm +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/rc4/rc4-586.asm @@ -371,4 +371,4 @@ db 80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114 db 111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 align 64 segment .bss -common _OPENSSL_ia32cap_P 16 +common _OPENSSL_ia32cap_P 40 diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/sha/sha1-586.asm b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/sha/sha1-586.asm index 1112de399f7e89..70a2dbb81d9ddc 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/sha/sha1-586.asm +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/sha/sha1-586.asm @@ -3967,4 +3967,4 @@ db 102,111,114,109,32,102,111,114,32,120,56,54,44,32,67,82 db 89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112 db 114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 segment .bss -common _OPENSSL_ia32cap_P 16 +common _OPENSSL_ia32cap_P 40 diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/sha/sha256-586.asm b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/sha/sha256-586.asm index 1108147ae6c7c0..b145406ab50bd7 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/sha/sha256-586.asm +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/sha/sha256-586.asm @@ -6786,4 +6786,4 @@ L$018avx_bmi_00_47: pop ebp ret segment .bss -common _OPENSSL_ia32cap_P 16 +common _OPENSSL_ia32cap_P 40 diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/sha/sha512-586.asm b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/sha/sha512-586.asm index 2202228ce0214e..7f78330a2262e5 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/sha/sha512-586.asm +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/sha/sha512-586.asm @@ -2832,4 +2832,4 @@ db 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 db 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 db 62,0 segment .bss -common _OPENSSL_ia32cap_P 16 +common _OPENSSL_ia32cap_P 40 diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/x86cpuid.asm b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/x86cpuid.asm index fc920ed46a1e4a..1f336501d737c8 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/x86cpuid.asm +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/x86cpuid.asm @@ -123,6 +123,24 @@ L$002generic: xor ecx,ecx cpuid mov DWORD [8+edi],ebx + mov DWORD [12+edi],ecx + mov DWORD [16+edi],edx + cmp eax,1 + jb NEAR L$005no_extended_info + mov eax,7 + mov ecx,1 + cpuid + mov DWORD [20+edi],eax + mov DWORD [24+edi],edx + mov DWORD [28+edi],ebx + mov DWORD [32+edi],ecx + and edx,524288 + cmp edx,0 + je NEAR L$005no_extended_info + mov eax,36 + mov ecx,0 + cpuid + mov DWORD [36+edi],ebx L$005no_extended_info: bt ebp,27 jnc NEAR L$006clear_avx @@ -138,6 +156,7 @@ L$008clear_xmm: and esi,4278190079 L$006clear_avx: and ebp,4026525695 + and DWORD [20+edi],4286578687 and DWORD [8+edi],4294967263 L$007done: mov eax,esi @@ -500,7 +519,7 @@ L$031done: pop edi ret segment .bss -common _OPENSSL_ia32cap_P 16 +common _OPENSSL_ia32cap_P 40 segment .CRT$XCU data align=4 extern _OPENSSL_cpuid_setup dd _OPENSSL_cpuid_setup diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/internal/param_names.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/internal/param_names.h new file mode 100644 index 00000000000000..ec5bff6e31c126 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/internal/param_names.h @@ -0,0 +1,469 @@ +/* + * WARNING: do not edit! + * Generated by makefile from include/internal/param_names.h.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +int ossl_param_find_pidx(const char *s); + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +#define NUM_PIDX 346 + +#define PIDX_ALG_PARAM_ALGORITHM_ID 0 +#define PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS 1 +#define PIDX_ALG_PARAM_CIPHER 2 +#define PIDX_ALG_PARAM_DIGEST 3 +#define PIDX_ALG_PARAM_ENGINE 4 +#define PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR 5 +#define PIDX_ALG_PARAM_MAC 6 +#define PIDX_ALG_PARAM_PROPERTIES 7 +#define PIDX_ASYM_CIPHER_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_ENGINE PIDX_PKEY_PARAM_ENGINE +#define PIDX_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +#define PIDX_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS 9 +#define PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL 10 +#define PIDX_ASYM_CIPHER_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_ASYM_CIPHER_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION 11 +#define PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION 12 +#define PIDX_CAPABILITY_TLS_GROUP_ALG 13 +#define PIDX_CAPABILITY_TLS_GROUP_ID 14 +#define PIDX_CAPABILITY_TLS_GROUP_IS_KEM 15 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_GROUP_NAME 20 +#define PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL 21 +#define PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS 22 +#define PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT 23 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME 24 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_OID 25 +#define PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME 26 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE 27 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID 28 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_SIGALG_NAME 29 +#define PIDX_CAPABILITY_TLS_SIGALG_OID 30 +#define PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS 31 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME 32 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_OID 33 +#define PIDX_CIPHER_PARAM_AEAD 34 +#define PIDX_CIPHER_PARAM_AEAD_IVLEN PIDX_CIPHER_PARAM_IVLEN +#define PIDX_CIPHER_PARAM_AEAD_IV_GENERATED 35 +#define PIDX_CIPHER_PARAM_AEAD_MAC_KEY 36 +#define PIDX_CIPHER_PARAM_AEAD_TAG 37 +#define PIDX_CIPHER_PARAM_AEAD_TAGLEN 38 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD 39 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD 40 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN 41 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED 42 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV 43 +#define PIDX_CIPHER_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD 44 +#define PIDX_CIPHER_PARAM_BLOCK_SIZE 45 +#define PIDX_CIPHER_PARAM_CTS 46 +#define PIDX_CIPHER_PARAM_CTS_MODE 47 +#define PIDX_CIPHER_PARAM_CUSTOM_IV 48 +#define PIDX_CIPHER_PARAM_DECRYPT_ONLY 49 +#define PIDX_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK 50 +#define PIDX_CIPHER_PARAM_HAS_RAND_KEY 51 +#define PIDX_CIPHER_PARAM_IV 52 +#define PIDX_CIPHER_PARAM_IVLEN 53 +#define PIDX_CIPHER_PARAM_KEYLEN 54 +#define PIDX_CIPHER_PARAM_MODE 55 +#define PIDX_CIPHER_PARAM_NUM 56 +#define PIDX_CIPHER_PARAM_PADDING 57 +#define PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG 58 +#define PIDX_CIPHER_PARAM_RANDOM_KEY 59 +#define PIDX_CIPHER_PARAM_RC2_KEYBITS 60 +#define PIDX_CIPHER_PARAM_ROUNDS 61 +#define PIDX_CIPHER_PARAM_SPEED 62 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK 63 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD 64 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN 65 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC 66 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN 67 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN 68 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE 69 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE 70 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT 71 +#define PIDX_CIPHER_PARAM_TLS_MAC 72 +#define PIDX_CIPHER_PARAM_TLS_MAC_SIZE 73 +#define PIDX_CIPHER_PARAM_TLS_VERSION 74 +#define PIDX_CIPHER_PARAM_UPDATED_IV 75 +#define PIDX_CIPHER_PARAM_USE_BITS 76 +#define PIDX_CIPHER_PARAM_XTS_STANDARD 77 +#define PIDX_DECODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DIGEST_PARAM_ALGID_ABSENT 78 +#define PIDX_DIGEST_PARAM_BLOCK_SIZE 45 +#define PIDX_DIGEST_PARAM_MICALG 79 +#define PIDX_DIGEST_PARAM_PAD_TYPE 80 +#define PIDX_DIGEST_PARAM_SIZE 81 +#define PIDX_DIGEST_PARAM_SSL3_MS 82 +#define PIDX_DIGEST_PARAM_XOF 83 +#define PIDX_DIGEST_PARAM_XOFLEN 84 +#define PIDX_DRBG_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_DRBG_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_DRBG_PARAM_ENTROPY_REQUIRED 85 +#define PIDX_DRBG_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_DRBG_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_DRBG_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_DRBG_PARAM_MAX_ADINLEN 86 +#define PIDX_DRBG_PARAM_MAX_ENTROPYLEN 87 +#define PIDX_DRBG_PARAM_MAX_LENGTH 88 +#define PIDX_DRBG_PARAM_MAX_NONCELEN 89 +#define PIDX_DRBG_PARAM_MAX_PERSLEN 90 +#define PIDX_DRBG_PARAM_MIN_ENTROPYLEN 91 +#define PIDX_DRBG_PARAM_MIN_LENGTH 92 +#define PIDX_DRBG_PARAM_MIN_NONCELEN 93 +#define PIDX_DRBG_PARAM_PREDICTION_RESISTANCE 94 +#define PIDX_DRBG_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DRBG_PARAM_RANDOM_DATA 95 +#define PIDX_DRBG_PARAM_RESEED_COUNTER 96 +#define PIDX_DRBG_PARAM_RESEED_REQUESTS 97 +#define PIDX_DRBG_PARAM_RESEED_TIME 98 +#define PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL 99 +#define PIDX_DRBG_PARAM_SIZE 81 +#define PIDX_DRBG_PARAM_USE_DF 100 +#define PIDX_ENCODER_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_ENCODER_PARAM_ENCRYPT_LEVEL 101 +#define PIDX_ENCODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_ENCODER_PARAM_SAVE_PARAMETERS 102 +#define PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE 103 +#define PIDX_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_EXCHANGE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST 104 +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS 105 +#define PIDX_EXCHANGE_PARAM_KDF_OUTLEN 106 +#define PIDX_EXCHANGE_PARAM_KDF_TYPE 107 +#define PIDX_EXCHANGE_PARAM_KDF_UKM 108 +#define PIDX_EXCHANGE_PARAM_PAD 109 +#define PIDX_GEN_PARAM_ITERATION 110 +#define PIDX_GEN_PARAM_POTENTIAL 111 +#define PIDX_KDF_PARAM_ARGON2_AD 112 +#define PIDX_KDF_PARAM_ARGON2_LANES 113 +#define PIDX_KDF_PARAM_ARGON2_MEMCOST 114 +#define PIDX_KDF_PARAM_ARGON2_VERSION 115 +#define PIDX_KDF_PARAM_CEK_ALG 116 +#define PIDX_KDF_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_KDF_PARAM_CONSTANT 117 +#define PIDX_KDF_PARAM_DATA 118 +#define PIDX_KDF_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_KDF_PARAM_EARLY_CLEAN 119 +#define PIDX_KDF_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KDF_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_KDF_PARAM_FIPS_EMS_CHECK 120 +#define PIDX_KDF_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KDF_PARAM_HMACDRBG_ENTROPY 121 +#define PIDX_KDF_PARAM_HMACDRBG_NONCE 122 +#define PIDX_KDF_PARAM_INFO 123 +#define PIDX_KDF_PARAM_ITER 124 +#define PIDX_KDF_PARAM_KBKDF_R 125 +#define PIDX_KDF_PARAM_KBKDF_USE_L 126 +#define PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR 127 +#define PIDX_KDF_PARAM_KEY 128 +#define PIDX_KDF_PARAM_LABEL 129 +#define PIDX_KDF_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_KDF_PARAM_MAC_SIZE 130 +#define PIDX_KDF_PARAM_MODE 55 +#define PIDX_KDF_PARAM_PASSWORD 131 +#define PIDX_KDF_PARAM_PKCS12_ID 132 +#define PIDX_KDF_PARAM_PKCS5 133 +#define PIDX_KDF_PARAM_PREFIX 134 +#define PIDX_KDF_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_KDF_PARAM_SALT 135 +#define PIDX_KDF_PARAM_SCRYPT_MAXMEM 136 +#define PIDX_KDF_PARAM_SCRYPT_N 137 +#define PIDX_KDF_PARAM_SCRYPT_P 138 +#define PIDX_KDF_PARAM_SCRYPT_R 125 +#define PIDX_KDF_PARAM_SECRET 139 +#define PIDX_KDF_PARAM_SEED 140 +#define PIDX_KDF_PARAM_SIZE 81 +#define PIDX_KDF_PARAM_SSHKDF_SESSION_ID 141 +#define PIDX_KDF_PARAM_SSHKDF_TYPE 142 +#define PIDX_KDF_PARAM_SSHKDF_XCGHASH 143 +#define PIDX_KDF_PARAM_THREADS 144 +#define PIDX_KDF_PARAM_UKM 145 +#define PIDX_KDF_PARAM_X942_ACVPINFO 146 +#define PIDX_KDF_PARAM_X942_PARTYUINFO 147 +#define PIDX_KDF_PARAM_X942_PARTYVINFO 148 +#define PIDX_KDF_PARAM_X942_SUPP_PRIVINFO 149 +#define PIDX_KDF_PARAM_X942_SUPP_PUBINFO 150 +#define PIDX_KDF_PARAM_X942_USE_KEYBITS 151 +#define PIDX_KEM_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KEM_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KEM_PARAM_IKME 152 +#define PIDX_KEM_PARAM_OPERATION 153 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING 154 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING 155 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA 156 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN 157 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE 55 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS 158 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD 159 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC 160 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE 161 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM 162 +#define PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN 163 +#define PIDX_MAC_PARAM_BLOCK_SIZE 164 +#define PIDX_MAC_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_MAC_PARAM_CUSTOM 165 +#define PIDX_MAC_PARAM_C_ROUNDS 166 +#define PIDX_MAC_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_MAC_PARAM_DIGEST_NOINIT 167 +#define PIDX_MAC_PARAM_DIGEST_ONESHOT 168 +#define PIDX_MAC_PARAM_D_ROUNDS 169 +#define PIDX_MAC_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_MAC_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_MAC_PARAM_FIPS_NO_SHORT_MAC PIDX_PROV_PARAM_NO_SHORT_MAC +#define PIDX_MAC_PARAM_IV 52 +#define PIDX_MAC_PARAM_KEY 128 +#define PIDX_MAC_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_MAC_PARAM_SALT 135 +#define PIDX_MAC_PARAM_SIZE 81 +#define PIDX_MAC_PARAM_TLS_DATA_SIZE 170 +#define PIDX_MAC_PARAM_XOF 83 +#define PIDX_OBJECT_PARAM_DATA 118 +#define PIDX_OBJECT_PARAM_DATA_STRUCTURE 171 +#define PIDX_OBJECT_PARAM_DATA_TYPE 172 +#define PIDX_OBJECT_PARAM_DESC 173 +#define PIDX_OBJECT_PARAM_INPUT_TYPE 174 +#define PIDX_OBJECT_PARAM_REFERENCE 175 +#define PIDX_OBJECT_PARAM_TYPE 142 +#define PIDX_PASSPHRASE_PARAM_INFO 123 +#define PIDX_PKEY_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_PKEY_PARAM_BITS 176 +#define PIDX_PKEY_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_PKEY_PARAM_DEFAULT_DIGEST 177 +#define PIDX_PKEY_PARAM_DHKEM_IKM 178 +#define PIDX_PKEY_PARAM_DH_GENERATOR 179 +#define PIDX_PKEY_PARAM_DH_PRIV_LEN 180 +#define PIDX_PKEY_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_PKEY_PARAM_DIGEST_SIZE 181 +#define PIDX_PKEY_PARAM_DIST_ID 182 +#define PIDX_PKEY_PARAM_EC_A 183 +#define PIDX_PKEY_PARAM_EC_B 184 +#define PIDX_PKEY_PARAM_EC_CHAR2_M 185 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K1 186 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K2 187 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K3 188 +#define PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS 189 +#define PIDX_PKEY_PARAM_EC_CHAR2_TYPE 190 +#define PIDX_PKEY_PARAM_EC_COFACTOR 191 +#define PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS 192 +#define PIDX_PKEY_PARAM_EC_ENCODING 193 +#define PIDX_PKEY_PARAM_EC_FIELD_TYPE 194 +#define PIDX_PKEY_PARAM_EC_GENERATOR 195 +#define PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE 196 +#define PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC 197 +#define PIDX_PKEY_PARAM_EC_ORDER 198 +#define PIDX_PKEY_PARAM_EC_P 138 +#define PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT 199 +#define PIDX_PKEY_PARAM_EC_PUB_X 200 +#define PIDX_PKEY_PARAM_EC_PUB_Y 201 +#define PIDX_PKEY_PARAM_EC_SEED 140 +#define PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY 202 +#define PIDX_PKEY_PARAM_ENGINE PIDX_ALG_PARAM_ENGINE +#define PIDX_PKEY_PARAM_FFC_COFACTOR 203 +#define PIDX_PKEY_PARAM_FFC_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_FFC_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_FFC_G 204 +#define PIDX_PKEY_PARAM_FFC_GINDEX 205 +#define PIDX_PKEY_PARAM_FFC_H 206 +#define PIDX_PKEY_PARAM_FFC_P 138 +#define PIDX_PKEY_PARAM_FFC_PBITS 207 +#define PIDX_PKEY_PARAM_FFC_PCOUNTER 208 +#define PIDX_PKEY_PARAM_FFC_Q 209 +#define PIDX_PKEY_PARAM_FFC_QBITS 210 +#define PIDX_PKEY_PARAM_FFC_SEED 140 +#define PIDX_PKEY_PARAM_FFC_TYPE 142 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_G 211 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY 212 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_PQ 213 +#define PIDX_PKEY_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK 214 +#define PIDX_PKEY_PARAM_FIPS_KEY_CHECK 215 +#define PIDX_PKEY_PARAM_FIPS_SIGN_CHECK 216 +#define PIDX_PKEY_PARAM_GROUP_NAME 217 +#define PIDX_PKEY_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_PKEY_PARAM_MANDATORY_DIGEST 218 +#define PIDX_PKEY_PARAM_MASKGENFUNC 219 +#define PIDX_PKEY_PARAM_MAX_SIZE 220 +#define PIDX_PKEY_PARAM_MGF1_DIGEST 221 +#define PIDX_PKEY_PARAM_MGF1_PROPERTIES 222 +#define PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS 223 +#define PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS 224 +#define PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED 225 +#define PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED 226 +#define PIDX_PKEY_PARAM_ML_DSA_SEED 140 +#define PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE 227 +#define PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS 228 +#define PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS 229 +#define PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED 230 +#define PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED 231 +#define PIDX_PKEY_PARAM_ML_KEM_SEED 140 +#define PIDX_PKEY_PARAM_PAD_MODE 232 +#define PIDX_PKEY_PARAM_PRIV_KEY 233 +#define PIDX_PKEY_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_PUB_KEY 234 +#define PIDX_PKEY_PARAM_RSA_BITS PIDX_PKEY_PARAM_BITS +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT 235 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT1 236 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT2 237 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT3 238 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT4 239 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT5 240 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT6 241 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT7 242 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT8 243 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT9 244 +#define PIDX_PKEY_PARAM_RSA_D 245 +#define PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ 246 +#define PIDX_PKEY_PARAM_RSA_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_RSA_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_RSA_E 247 +#define PIDX_PKEY_PARAM_RSA_EXPONENT 248 +#define PIDX_PKEY_PARAM_RSA_EXPONENT1 249 +#define PIDX_PKEY_PARAM_RSA_EXPONENT10 250 +#define PIDX_PKEY_PARAM_RSA_EXPONENT2 251 +#define PIDX_PKEY_PARAM_RSA_EXPONENT3 252 +#define PIDX_PKEY_PARAM_RSA_EXPONENT4 253 +#define PIDX_PKEY_PARAM_RSA_EXPONENT5 254 +#define PIDX_PKEY_PARAM_RSA_EXPONENT6 255 +#define PIDX_PKEY_PARAM_RSA_EXPONENT7 256 +#define PIDX_PKEY_PARAM_RSA_EXPONENT8 257 +#define PIDX_PKEY_PARAM_RSA_EXPONENT9 258 +#define PIDX_PKEY_PARAM_RSA_FACTOR 259 +#define PIDX_PKEY_PARAM_RSA_FACTOR1 260 +#define PIDX_PKEY_PARAM_RSA_FACTOR10 261 +#define PIDX_PKEY_PARAM_RSA_FACTOR2 262 +#define PIDX_PKEY_PARAM_RSA_FACTOR3 263 +#define PIDX_PKEY_PARAM_RSA_FACTOR4 264 +#define PIDX_PKEY_PARAM_RSA_FACTOR5 265 +#define PIDX_PKEY_PARAM_RSA_FACTOR6 266 +#define PIDX_PKEY_PARAM_RSA_FACTOR7 267 +#define PIDX_PKEY_PARAM_RSA_FACTOR8 268 +#define PIDX_PKEY_PARAM_RSA_FACTOR9 269 +#define PIDX_PKEY_PARAM_RSA_MASKGENFUNC PIDX_PKEY_PARAM_MASKGENFUNC +#define PIDX_PKEY_PARAM_RSA_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_PKEY_PARAM_RSA_N 137 +#define PIDX_PKEY_PARAM_RSA_PRIMES 270 +#define PIDX_PKEY_PARAM_RSA_PSS_SALTLEN 271 +#define PIDX_PKEY_PARAM_RSA_TEST_P1 272 +#define PIDX_PKEY_PARAM_RSA_TEST_P2 273 +#define PIDX_PKEY_PARAM_RSA_TEST_Q1 274 +#define PIDX_PKEY_PARAM_RSA_TEST_Q2 275 +#define PIDX_PKEY_PARAM_RSA_TEST_XP 276 +#define PIDX_PKEY_PARAM_RSA_TEST_XP1 277 +#define PIDX_PKEY_PARAM_RSA_TEST_XP2 278 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ 279 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ1 280 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ2 281 +#define PIDX_PKEY_PARAM_SECURITY_BITS 282 +#define PIDX_PKEY_PARAM_SLH_DSA_SEED 140 +#define PIDX_PKEY_PARAM_USE_COFACTOR_ECDH PIDX_PKEY_PARAM_USE_COFACTOR_FLAG +#define PIDX_PKEY_PARAM_USE_COFACTOR_FLAG 283 +#define PIDX_PROV_PARAM_BUILDINFO 284 +#define PIDX_PROV_PARAM_CORE_MODULE_FILENAME 285 +#define PIDX_PROV_PARAM_CORE_PROV_NAME 286 +#define PIDX_PROV_PARAM_CORE_VERSION 287 +#define PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST 288 +#define PIDX_PROV_PARAM_DSA_SIGN_DISABLED 289 +#define PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK 290 +#define PIDX_PROV_PARAM_HKDF_DIGEST_CHECK 291 +#define PIDX_PROV_PARAM_HKDF_KEY_CHECK 292 +#define PIDX_PROV_PARAM_HMAC_KEY_CHECK 293 +#define PIDX_PROV_PARAM_KBKDF_KEY_CHECK 294 +#define PIDX_PROV_PARAM_KMAC_KEY_CHECK 295 +#define PIDX_PROV_PARAM_NAME 296 +#define PIDX_PROV_PARAM_NO_SHORT_MAC 297 +#define PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK 298 +#define PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED 299 +#define PIDX_PROV_PARAM_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED 301 +#define PIDX_PROV_PARAM_SECURITY_CHECKS 302 +#define PIDX_PROV_PARAM_SELF_TEST_DESC 303 +#define PIDX_PROV_PARAM_SELF_TEST_PHASE 304 +#define PIDX_PROV_PARAM_SELF_TEST_TYPE 305 +#define PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK 306 +#define PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK 307 +#define PIDX_PROV_PARAM_SSHKDF_KEY_CHECK 308 +#define PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK 309 +#define PIDX_PROV_PARAM_SSKDF_KEY_CHECK 310 +#define PIDX_PROV_PARAM_STATUS 311 +#define PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED 312 +#define PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK 313 +#define PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK 314 +#define PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK 315 +#define PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK 316 +#define PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK 317 +#define PIDX_PROV_PARAM_VERSION 115 +#define PIDX_PROV_PARAM_X942KDF_KEY_CHECK 318 +#define PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK 319 +#define PIDX_PROV_PARAM_X963KDF_KEY_CHECK 320 +#define PIDX_RAND_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_RAND_PARAM_GENERATE 321 +#define PIDX_RAND_PARAM_MAX_REQUEST 322 +#define PIDX_RAND_PARAM_STATE 323 +#define PIDX_RAND_PARAM_STRENGTH 324 +#define PIDX_RAND_PARAM_TEST_ENTROPY 325 +#define PIDX_RAND_PARAM_TEST_NONCE 326 +#define PIDX_SIGNATURE_PARAM_ADD_RANDOM 327 +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID PIDX_PKEY_PARAM_ALGORITHM_ID +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_SIGNATURE_PARAM_CONTEXT_STRING 328 +#define PIDX_SIGNATURE_PARAM_DETERMINISTIC 329 +#define PIDX_SIGNATURE_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_SIGNATURE_PARAM_DIGEST_SIZE PIDX_PKEY_PARAM_DIGEST_SIZE +#define PIDX_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_SIGNATURE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_CHECK PIDX_PKEY_PARAM_FIPS_SIGN_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK 330 +#define PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE 331 +#define PIDX_SIGNATURE_PARAM_INSTANCE 332 +#define PIDX_SIGNATURE_PARAM_KAT 333 +#define PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING 334 +#define PIDX_SIGNATURE_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_SIGNATURE_PARAM_MGF1_PROPERTIES PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_SIGNATURE_PARAM_MU 335 +#define PIDX_SIGNATURE_PARAM_NONCE_TYPE 336 +#define PIDX_SIGNATURE_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_SIGNATURE_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_SIGNATURE_PARAM_PSS_SALTLEN 271 +#define PIDX_SIGNATURE_PARAM_SIGNATURE 337 +#define PIDX_SIGNATURE_PARAM_TEST_ENTROPY 338 +#define PIDX_SKEY_PARAM_KEY_LENGTH 339 +#define PIDX_SKEY_PARAM_RAW_BYTES 340 +#define PIDX_STORE_PARAM_ALIAS 341 +#define PIDX_STORE_PARAM_DIGEST 3 +#define PIDX_STORE_PARAM_EXPECT 342 +#define PIDX_STORE_PARAM_FINGERPRINT 343 +#define PIDX_STORE_PARAM_INPUT_TYPE 174 +#define PIDX_STORE_PARAM_ISSUER 296 +#define PIDX_STORE_PARAM_PROPERTIES 7 +#define PIDX_STORE_PARAM_SERIAL 344 +#define PIDX_STORE_PARAM_SUBJECT 345 diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/asn1.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/asn1.h index e28efbbb718e2b..5129217b2e0977 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/asn1.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/asn1.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/asn1.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -21,6 +21,9 @@ # define HEADER_ASN1_H # endif +# ifndef OPENSSL_NO_STDIO +# include +# endif # include # include # include @@ -50,14 +53,14 @@ extern "C" { # define V_ASN1_PRIMITIVE_TAG 0x1f # define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG -# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ -# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ -# define V_ASN1_ANY -4/* used in ASN1 template code */ +# define V_ASN1_APP_CHOOSE -2 /* let the recipient choose */ +# define V_ASN1_OTHER -3 /* used in ASN1_TYPE */ +# define V_ASN1_ANY -4 /* used in ASN1 template code */ # define V_ASN1_UNDEF -1 /* ASN.1 tag values */ # define V_ASN1_EOC 0 -# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_BOOLEAN 1 # define V_ASN1_INTEGER 2 # define V_ASN1_BIT_STRING 3 # define V_ASN1_OCTET_STRING 4 @@ -70,19 +73,19 @@ extern "C" { # define V_ASN1_UTF8STRING 12 # define V_ASN1_SEQUENCE 16 # define V_ASN1_SET 17 -# define V_ASN1_NUMERICSTRING 18 /**/ +# define V_ASN1_NUMERICSTRING 18 # define V_ASN1_PRINTABLESTRING 19 # define V_ASN1_T61STRING 20 -# define V_ASN1_TELETEXSTRING 20/* alias */ -# define V_ASN1_VIDEOTEXSTRING 21 /**/ +# define V_ASN1_TELETEXSTRING 20 /* alias */ +# define V_ASN1_VIDEOTEXSTRING 21 # define V_ASN1_IA5STRING 22 # define V_ASN1_UTCTIME 23 -# define V_ASN1_GENERALIZEDTIME 24 /**/ -# define V_ASN1_GRAPHICSTRING 25 /**/ -# define V_ASN1_ISO64STRING 26 /**/ -# define V_ASN1_VISIBLESTRING 26/* alias */ -# define V_ASN1_GENERALSTRING 27 /**/ -# define V_ASN1_UNIVERSALSTRING 28 /**/ +# define V_ASN1_GENERALIZEDTIME 24 +# define V_ASN1_GRAPHICSTRING 25 +# define V_ASN1_ISO64STRING 26 +# define V_ASN1_VISIBLESTRING 26 /* alias */ +# define V_ASN1_GENERALSTRING 27 +# define V_ASN1_UNIVERSALSTRING 28 # define V_ASN1_BMPSTRING 30 /* @@ -155,7 +158,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) -# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +# define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */ /* * This indicates that the ASN1_STRING is not a real value but just a place * holder for the location where indefinite length constructed data should be @@ -275,7 +278,7 @@ typedef struct ASN1_TLC_st ASN1_TLC; /* This is just an opaque pointer */ typedef struct ASN1_VALUE_st ASN1_VALUE; -/* Declare ASN1 functions: the implement macro in in asn1t.h */ +/* Declare ASN1 functions: the implement macro is in asn1t.h */ /* * The mysterious 'extern' that's passed to some macros is innocuous, @@ -368,6 +371,7 @@ typedef struct ASN1_VALUE_st ASN1_VALUE; typedef void *d2i_of_void(void **, const unsigned char **, long); typedef int i2d_of_void(const void *, unsigned char **); +typedef int OSSL_i2d_of_void_ctx(const void *, unsigned char **, void *vctx); /*- * The following macros and typedefs allow an ASN1_ITEM @@ -996,6 +1000,8 @@ int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, unsigned char *data, int max_len); void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/bio.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/bio.h index d094af47b73f1c..be24d086a54013 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/bio.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/bio.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/bio.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -67,8 +67,13 @@ extern "C" { # define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) # endif # define BIO_TYPE_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_PAIR (26|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_MEM (27|BIO_TYPE_SOURCE_SINK) +/* Custom type starting index returned by BIO_get_new_index() */ #define BIO_TYPE_START 128 +/* Custom type maximum index that can be returned by BIO_get_new_index() */ +#define BIO_TYPE_MASK 0xFF /* * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. @@ -171,6 +176,31 @@ extern "C" { # define BIO_CTRL_SET_INDENT 80 # define BIO_CTRL_GET_INDENT 81 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +# define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +# define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +# define BIO_CTRL_DGRAM_GET_CAPS 86 +# define BIO_CTRL_DGRAM_SET_CAPS 87 +# define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +# define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +# define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +# define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +# define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 +# define BIO_CTRL_DGRAM_SET0_LOCAL_ADDR 94 + +# define BIO_DGRAM_CAP_NONE 0U +# define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +# define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +# define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +# define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + # ifndef OPENSSL_NO_KTLS # define BIO_get_ktls_send(b) \ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) @@ -208,7 +238,7 @@ extern "C" { # define BIO_FLAGS_NONCLEAR_RST 0x400 # define BIO_FLAGS_IN_EOF 0x800 -/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */ +/* the BIO FLAGS values 0x1000 to 0x8000 are reserved for internal KTLS flags */ typedef union bio_addr_st BIO_ADDR; typedef struct bio_addrinfo_st BIO_ADDRINFO; @@ -256,12 +286,14 @@ void BIO_clear_flags(BIO *b, int flags); # define BIO_RR_ACCEPT 0x03 /* These are passed by the BIO callback */ -# define BIO_CB_FREE 0x01 -# define BIO_CB_READ 0x02 -# define BIO_CB_WRITE 0x03 -# define BIO_CB_PUTS 0x04 -# define BIO_CB_GETS 0x05 -# define BIO_CB_CTRL 0x06 +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 +# define BIO_CB_RECVMMSG 0x07 +# define BIO_CB_SENDMMSG 0x08 /* * The callback is called before and after the underling operation, The @@ -362,6 +394,36 @@ struct bio_dgram_sctp_prinfo { }; # endif +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_TYPE_SSL 2 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + SSL *ssl; + } value; +} BIO_POLL_DESCRIPTOR; + /* * #define BIO_CONN_get_param_hostname BIO_ctrl */ @@ -428,10 +490,17 @@ struct bio_dgram_sctp_prinfo { # define BIO_C_SET_CONNECT_MODE 155 +# define BIO_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +# define BIO_C_SET_SOCK_TYPE 157 +# define BIO_C_GET_SOCK_TYPE 158 +# define BIO_C_GET_DGRAM_BIO 159 + # define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) # define BIO_get_app_data(s) BIO_get_ex_data(s,0) -# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_tfo(b,n) BIO_ctrl(b,BIO_C_SET_TFO,(n),NULL) # ifndef OPENSSL_NO_SOCK /* IP families we support, for BIO_s_connect() and BIO_s_accept() */ @@ -452,7 +521,11 @@ struct bio_dgram_sctp_prinfo { # define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) # define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) # define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_get_conn_mode(b) BIO_ctrl(b,BIO_C_GET_CONNECT,4,NULL) # define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) +# define BIO_set_sock_type(b,t) BIO_ctrl(b,BIO_C_SET_SOCK_TYPE,(t),NULL) +# define BIO_get_sock_type(b) BIO_ctrl(b,BIO_C_GET_SOCK_TYPE,0,NULL) +# define BIO_get0_dgram_bio(b, p) BIO_ctrl(b,BIO_C_GET_DGRAM_BIO,0,(void *)(BIO **)(p)) /* BIO_s_accept() */ # define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ @@ -469,6 +542,7 @@ struct bio_dgram_sctp_prinfo { (char *)(bio)) # define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) # define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) +# define BIO_set_tfo_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,5,(n)?(void *)"a":NULL) /* Aliases kept for backward compatibility */ # define BIO_BIND_NORMAL 0 @@ -596,8 +670,32 @@ int BIO_ctrl_reset_read_request(BIO *b); (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) # define BIO_dgram_set_peer(b,peer) \ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_detect_peer_addr(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) # define BIO_dgram_get_mtu_overhead(b) \ (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +# define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +# define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +# define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +# define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +# define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +# define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +# define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +# define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +# define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +# define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) +# define BIO_dgram_set0_local_addr(b, addr) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET0_LOCAL_ADDR, 0, (addr)) /* ctrl macros for BIO_f_prefix */ # define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) @@ -640,10 +738,18 @@ void BIO_vfree(BIO *a); int BIO_up_ref(BIO *a); int BIO_read(BIO *b, void *data, int dlen); int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); int BIO_gets(BIO *bp, char *buf, int size); int BIO_get_line(BIO *bio, char *buf, int size); int BIO_write(BIO *b, const void *data, int dlen); int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); int BIO_puts(BIO *bp, const char *buf); int BIO_indent(BIO *b, int indent, int max); long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); @@ -667,6 +773,9 @@ int BIO_nwrite0(BIO *bio, char **buf); int BIO_nwrite(BIO *bio, char **buf, int num); const BIO_METHOD *BIO_s_mem(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +# endif const BIO_METHOD *BIO_s_secmem(void); BIO *BIO_new_mem_buf(const void *buf, int len); # ifndef OPENSSL_NO_SOCK @@ -686,6 +795,7 @@ const BIO_METHOD *BIO_f_nbio_test(void); const BIO_METHOD *BIO_f_prefix(void); const BIO_METHOD *BIO_s_core(void); # ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_pair(void); const BIO_METHOD *BIO_s_datagram(void); int BIO_dgram_non_fatal_error(int error); BIO *BIO_new_dgram(int fd, int close_flag); @@ -704,6 +814,7 @@ int BIO_dgram_sctp_msg_waiting(BIO *b); # ifndef OPENSSL_NO_SOCK int BIO_sock_should_retry(int i); int BIO_sock_non_fatal_error(int error); +int BIO_err_is_non_fatal(unsigned int errcode); int BIO_socket_wait(int fd, int for_read, time_t max_time); # endif int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); @@ -726,6 +837,8 @@ int BIO_hex_string(BIO *out, int indent, int width, const void *data, # ifndef OPENSSL_NO_SOCK BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, const void *where, size_t wherelen, unsigned short port); void BIO_ADDR_free(BIO_ADDR *); @@ -788,6 +901,7 @@ int BIO_sock_info(int sock, # define BIO_SOCK_KEEPALIVE 0x04 # define BIO_SOCK_NONBLOCK 0x08 # define BIO_SOCK_NODELAY 0x10 +# define BIO_SOCK_TFO 0x20 int BIO_socket(int domain, int socktype, int protocol, int options); int BIO_connect(int sock, const BIO_ADDR *addr, int options); @@ -805,6 +919,11 @@ BIO *BIO_new_fd(int fd, int close_flag); int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, BIO **bio2, size_t writebuf2); +# ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +# endif + /* * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default @@ -849,38 +968,54 @@ ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); BIO_METHOD *BIO_meth_new(int type, const char *name); void BIO_meth_free(BIO_METHOD *biom); -int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int); -int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t, - size_t *); int BIO_meth_set_write(BIO_METHOD *biom, int (*write) (BIO *, const char *, int)); int BIO_meth_set_write_ex(BIO_METHOD *biom, int (*bwrite) (BIO *, const char *, size_t, size_t *)); -int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); -int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); +int BIO_meth_set_sendmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_read(BIO_METHOD *biom, int (*read) (BIO *, char *, int)); int BIO_meth_set_read_ex(BIO_METHOD *biom, int (*bread) (BIO *, char *, size_t, size_t *)); -int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +int BIO_meth_set_recvmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_puts(BIO_METHOD *biom, int (*puts) (BIO *, const char *)); -int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); int BIO_meth_set_gets(BIO_METHOD *biom, int (*ossl_gets) (BIO *, char *, int)); -long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); int BIO_meth_set_ctrl(BIO_METHOD *biom, long (*ctrl) (BIO *, int, long, void *)); -int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); -int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); -long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) - (BIO *, int, BIO_info_cb *); int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, long (*callback_ctrl) (BIO *, int, BIO_info_cb *)); - +# ifndef OPENSSL_NO_DEPRECATED_3_5 +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, + int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, + long, void *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) (BIO *, int, + BIO_info_cb *); +# endif # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/cmp.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/cmp.h index f0e768e01baacd..ded2dd2905f756 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/cmp.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/cmp.h.in * - * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -35,7 +35,9 @@ extern "C" { # endif -# define OSSL_CMP_PVNO 2 +# define OSSL_CMP_PVNO_2 2 +# define OSSL_CMP_PVNO_3 3 +# define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ /*- * PKIFailureInfo ::= BIT STRING { @@ -137,7 +139,6 @@ extern "C" { # if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX # error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int # endif - typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) @@ -203,8 +204,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_PKISTATUS_revocationWarning 4 # define OSSL_CMP_PKISTATUS_revocationNotification 5 # define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 - typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; + DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) # define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 @@ -274,6 +275,46 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) #define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) #define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) + +typedef struct ossl_cmp_crlstatus_st OSSL_CMP_CRLSTATUS; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS) +#define sk_OSSL_CMP_CRLSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_value(sk, idx) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CRLSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CRLSTATUS_new_null() ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CRLSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CRLSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CRLSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_delete(sk, i) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CRLSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_pop(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_shift(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CRLSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CRLSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CRLSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CRLSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CRLSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) + + +typedef OSSL_CRMF_ATTRIBUTETYPEANDVALUE OSSL_CMP_ATAV; +# define OSSL_CMP_ATAV_free OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free +typedef STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) OSSL_CMP_ATAVS; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_ATAVS) +# define stack_st_OSSL_CMP_ATAV stack_st_OSSL_CRMF_ATTRIBUTETYPEANDVALUE +# define sk_OSSL_CMP_ATAV_num sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num +# define sk_OSSL_CMP_ATAV_value sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value +# define sk_OSSL_CMP_ATAV_push sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push +# define sk_OSSL_CMP_ATAV_pop_free sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free + typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT; typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI; DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI) @@ -375,21 +416,75 @@ void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type, ASN1_TYPE *value); ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav); ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); -int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p, +int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **sk_p, OSSL_CMP_ITAV *itav); void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new0_certProfile(STACK_OF(ASN1_UTF8STRING) + *certProfile); +int OSSL_CMP_ITAV_get0_certProfile(const OSSL_CMP_ITAV *itav, + STACK_OF(ASN1_UTF8STRING) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_create(const X509_CRL *crl, + const X509 *cert, int only_DN); +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_new1(const DIST_POINT_NAME *dpn, + const GENERAL_NAMES *issuer, + const ASN1_TIME *thisUpdate); +int OSSL_CMP_CRLSTATUS_get0(const OSSL_CMP_CRLSTATUS *crlstatus, + DIST_POINT_NAME **dpn, GENERAL_NAMES **issuer, + ASN1_TIME **thisUpdate); +void OSSL_CMP_CRLSTATUS_free(OSSL_CMP_CRLSTATUS *crlstatus); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_crlStatusList(STACK_OF(OSSL_CMP_CRLSTATUS) *crlStatusList); +int OSSL_CMP_ITAV_get0_crlStatusList(const OSSL_CMP_ITAV *itav, + STACK_OF(OSSL_CMP_CRLSTATUS) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_crls(const X509_CRL *crls); +int OSSL_CMP_ITAV_get0_crls(const OSSL_CMP_ITAV *it, STACK_OF(X509_CRL) **out); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_certReqTemplate(OSSL_CRMF_CERTTEMPLATE *certTemplate, + OSSL_CMP_ATAVS *keySpec); +int OSSL_CMP_ITAV_get1_certReqTemplate(const OSSL_CMP_ITAV *itav, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +OSSL_CMP_ATAV *OSSL_CMP_ATAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ATAV_set0(OSSL_CMP_ATAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ATAV_get0_type(const OSSL_CMP_ATAV *itav); +ASN1_TYPE *OSSL_CMP_ATAV_get0_value(const OSSL_CMP_ATAV *itav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_algId(const X509_ALGOR *alg); +X509_ALGOR *OSSL_CMP_ATAV_get0_algId(const OSSL_CMP_ATAV *atav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_rsaKeyLen(int len); +int OSSL_CMP_ATAV_get_rsaKeyLen(const OSSL_CMP_ATAV *atav); +int OSSL_CMP_ATAV_push1(OSSL_CMP_ATAVS **sk_p, const OSSL_CMP_ATAV *atav); + void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); /* from cmp_ctx.c */ OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const OSSL_CMP_CTX *ctx); /* CMP general options: */ # define OSSL_CMP_OPT_LOG_VERBOSITY 0 /* CMP transfer options: */ -# define OSSL_CMP_OPT_KEEP_ALIVE 10 -# define OSSL_CMP_OPT_MSG_TIMEOUT 11 +# define OSSL_CMP_OPT_KEEP_ALIVE 10 +# define OSSL_CMP_OPT_MSG_TIMEOUT 11 # define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 +# define OSSL_CMP_OPT_USE_TLS 13 /* CMP request options: */ # define OSSL_CMP_OPT_VALIDITY_DAYS 20 # define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 @@ -407,6 +502,7 @@ int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); # define OSSL_CMP_OPT_DIGEST_ALGNID 34 # define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35 # define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36 +# define OSSL_CMP_OPT_NO_CACHE_EXTRACERTS 37 int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val); int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt); /* CMP-specific callback for logging and outputting the error queue: */ @@ -420,9 +516,11 @@ int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); +# ifndef OPENSSL_NO_HTTP int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); +# endif typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); @@ -432,7 +530,9 @@ void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); +# define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +# define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); /* client authentication: */ @@ -448,12 +548,15 @@ int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx, int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); int OSSL_CMP_CTX_reset_geninfo_ITAVs(OSSL_CMP_CTX *ctx); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_CTX_get0_geninfo_ITAVs(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, STACK_OF(X509) *extraCertsOut); /* certificate template: */ int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set1_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, const GENERAL_NAME *name); @@ -477,6 +580,7 @@ int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); # define OSSL_CMP_PKISI_BUFLEN 1024 +X509 *OSSL_CMP_CTX_get0_validatedSrvCert(const OSSL_CMP_CTX *ctx); X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); @@ -498,10 +602,13 @@ OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const OSSL_CMP_PKIHEADER *hdr); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_HDR_get0_geninfo_ITAVs(const OSSL_CMP_PKIHEADER *hdr); /* from cmp_msg.c */ OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg); +X509_PUBKEY *OSSL_CMP_MSG_get0_certreq_publickey(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_recipNonce(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid); @@ -517,8 +624,10 @@ int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, X509_STORE *trusted_store, X509 *cert); /* from cmp_http.c */ +# ifndef OPENSSL_NO_HTTP OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); +# endif /* from cmp_server.c */ typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; @@ -561,6 +670,13 @@ int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx, OSSL_CMP_SRV_error_cb_t process_error, OSSL_CMP_SRV_certConf_cb_t process_certConf, OSSL_CMP_SRV_pollReq_cb_t process_pollReq); +typedef int (*OSSL_CMP_SRV_delayed_delivery_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +typedef int (*OSSL_CMP_SRV_clean_transaction_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_SRV_CTX_init_trans(OSSL_CMP_SRV_CTX *srv_ctx, + OSSL_CMP_SRV_delayed_delivery_cb_t delay, + OSSL_CMP_SRV_clean_transaction_cb_t clean); OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx, @@ -577,6 +693,8 @@ X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type, # define OSSL_CMP_CR 2 # define OSSL_CMP_P10CR 4 # define OSSL_CMP_KUR 7 +# define OSSL_CMP_GENM 21 +# define OSSL_CMP_ERROR 23 # define OSSL_CMP_exec_IR_ses(ctx) \ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL) # define OSSL_CMP_exec_CR_ses(ctx) \ @@ -590,6 +708,18 @@ int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); +int OSSL_CMP_get1_crlUpdate(OSSL_CMP_CTX *ctx, const X509 *crlcert, + const X509_CRL *last_crl, + X509_CRL **crl); +int OSSL_CMP_get1_certReqTemplate(OSSL_CMP_CTX *ctx, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/cms.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/cms.h index 03ce6ab07aac44..1a51921256fea4 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/cms.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/cms.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/cms.h.in * - * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2008-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -31,8 +31,10 @@ extern "C" { # endif +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; typedef struct CMS_ContentInfo_st CMS_ContentInfo; typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; typedef struct CMS_CertificateChoices CMS_CertificateChoices; typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; @@ -147,10 +149,14 @@ SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, #define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) +DECLARE_ASN1_DUP_FUNCTION(CMS_EnvelopedData) + CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq); # define CMS_SIGNERINFO_ISSUER_SERIAL 0 @@ -190,6 +196,7 @@ CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq) # define CMS_ASCIICRLF 0x80000 # define CMS_CADES 0x100000 # define CMS_USE_ORIGINATOR_KEYID 0x200000 +# define CMS_NO_SIGNING_TIME 0x400000 const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms); @@ -217,13 +224,16 @@ int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, unsigned int flags); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, BIO *dcont, + unsigned int flags); CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, unsigned int flags); CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, @@ -233,27 +243,26 @@ CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, unsigned int flags); CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, const unsigned char *key, size_t keylen, BIO *dcont, BIO *out, unsigned int flags); - CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags); CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, @@ -272,7 +281,7 @@ CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags); CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, BIO *dcont, BIO *out, unsigned int flags); @@ -291,12 +300,16 @@ int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo * -CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx, +CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags); @@ -385,6 +398,11 @@ ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); int CMS_SignerInfo_sign(CMS_SignerInfo *si); int CMS_SignerInfo_verify(CMS_SignerInfo *si); int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, @@ -441,7 +459,7 @@ CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( unsigned char *id, int idlen, int allorfirst, STACK_OF(GENERAL_NAMES) *receiptList, STACK_OF(GENERAL_NAMES) *receiptsTo, - OSSL_LIB_CTX *ctx); + OSSL_LIB_CTX *libctx); int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/comp.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/comp.h new file mode 100644 index 00000000000000..90e39511fe8d28 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/comp.h @@ -0,0 +1,98 @@ +/* + * Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_COMP_H +# define OPENSSL_COMP_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_COMP_H +# endif + +# include + +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + + +# ifndef OPENSSL_NO_COMP + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX* comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); + +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); + +COMP_METHOD *COMP_zlib(void); +COMP_METHOD *COMP_zlib_oneshot(void); +COMP_METHOD *COMP_brotli(void); +COMP_METHOD *COMP_brotli_oneshot(void); +COMP_METHOD *COMP_zstd(void); +COMP_METHOD *COMP_zstd_oneshot(void); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define COMP_zlib_cleanup() while(0) continue +# endif + +# ifdef OPENSSL_BIO_H +const BIO_METHOD *BIO_f_zlib(void); +const BIO_METHOD *BIO_f_brotli(void); +const BIO_METHOD *BIO_f_zstd(void); +# endif + +# endif + +typedef struct ssl_comp_st SSL_COMP; + +SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) +#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) +#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) +#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) +#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) +#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) +#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) +#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) +#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) +#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) +#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) +#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) + + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/conf.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/conf.h index 994e573a957435..ffa9ced71e8b26 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/conf.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/conf.h @@ -27,6 +27,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -65,7 +68,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) #define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) #define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); -#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp))) +#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp)), lh_CONF_VALUE_hash_thunk, lh_CONF_VALUE_comp_thunk, lh_CONF_VALUE_doall_thunk, lh_CONF_VALUE_doall_arg_thunk)) #define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/configuration.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/configuration.h index 254054cd2238c7..8dedfeab00f64a 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/configuration.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/configuration.h @@ -29,7 +29,7 @@ extern "C" { # ifndef OPENSSL_SYS_WIN32 # define OPENSSL_SYS_WIN32 1 # endif -# define OPENSSL_CONFIGURED_API 30000 +# define OPENSSL_CONFIGURED_API 30500 # ifndef OPENSSL_RAND_SEED_OS # define OPENSSL_RAND_SEED_OS # endif @@ -42,6 +42,12 @@ extern "C" { # ifndef OPENSSL_NO_ASAN # define OPENSSL_NO_ASAN # endif +# ifndef OPENSSL_NO_BROTLI +# define OPENSSL_NO_BROTLI +# endif +# ifndef OPENSSL_NO_BROTLI_DYNAMIC +# define OPENSSL_NO_BROTLI_DYNAMIC +# endif # ifndef OPENSSL_NO_COMP # define OPENSSL_NO_COMP # endif @@ -51,6 +57,9 @@ extern "C" { # ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # endif +# ifndef OPENSSL_NO_DEMOS +# define OPENSSL_NO_DEMOS +# endif # ifndef OPENSSL_NO_DEVCRYPTOENG # define OPENSSL_NO_DEVCRYPTOENG # endif @@ -63,12 +72,24 @@ extern "C" { # ifndef OPENSSL_NO_EXTERNAL_TESTS # define OPENSSL_NO_EXTERNAL_TESTS # endif +# ifndef OPENSSL_NO_FIPS_JITTER +# define OPENSSL_NO_FIPS_JITTER +# endif # ifndef OPENSSL_NO_FUZZ_AFL # define OPENSSL_NO_FUZZ_AFL # endif # ifndef OPENSSL_NO_FUZZ_LIBFUZZER # define OPENSSL_NO_FUZZ_LIBFUZZER # endif +# ifndef OPENSSL_NO_H3DEMO +# define OPENSSL_NO_H3DEMO +# endif +# ifndef OPENSSL_NO_HQINTEROP +# define OPENSSL_NO_HQINTEROP +# endif +# ifndef OPENSSL_NO_JITTER +# define OPENSSL_NO_JITTER +# endif # ifndef OPENSSL_NO_KTLS # define OPENSSL_NO_KTLS # endif @@ -81,6 +102,9 @@ extern "C" { # ifndef OPENSSL_NO_MSAN # define OPENSSL_NO_MSAN # endif +# ifndef OPENSSL_NO_PIE +# define OPENSSL_NO_PIE +# endif # ifndef OPENSSL_NO_RC5 # define OPENSSL_NO_RC5 # endif @@ -93,6 +117,12 @@ extern "C" { # ifndef OPENSSL_NO_SSL3_METHOD # define OPENSSL_NO_SSL3_METHOD # endif +# ifndef OPENSSL_NO_SSLKEYLOG +# define OPENSSL_NO_SSLKEYLOG +# endif +# ifndef OPENSSL_NO_TFO +# define OPENSSL_NO_TFO +# endif # ifndef OPENSSL_NO_TRACE # define OPENSSL_NO_TRACE # endif @@ -108,6 +138,18 @@ extern "C" { # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS # define OPENSSL_NO_WEAK_SSL_CIPHERS # endif +# ifndef OPENSSL_NO_ZLIB +# define OPENSSL_NO_ZLIB +# endif +# ifndef OPENSSL_NO_ZLIB_DYNAMIC +# define OPENSSL_NO_ZLIB_DYNAMIC +# endif +# ifndef OPENSSL_NO_ZSTD +# define OPENSSL_NO_ZSTD +# endif +# ifndef OPENSSL_NO_ZSTD_DYNAMIC +# define OPENSSL_NO_ZSTD_DYNAMIC +# endif # ifndef OPENSSL_NO_DYNAMIC_ENGINE # define OPENSSL_NO_DYNAMIC_ENGINE # endif @@ -129,6 +171,12 @@ extern "C" { # define RC4_INT unsigned int +# if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +# define OPENSSL_NO_COMP_ALG +# else +# undef OPENSSL_NO_COMP_ALG +# endif + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/core_names.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/core_names.h new file mode 100644 index 00000000000000..aaca6051c81b53 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/core_names.h @@ -0,0 +1,575 @@ +/* + * WARNING: do not edit! + * Generated by makefile from include/openssl/core_names.h.in + * + * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#ifndef OPENSSL_CORE_NAMES_H +# define OPENSSL_CORE_NAMES_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +/* OSSL_CIPHER_PARAM_CTS_MODE Values */ +# define OSSL_CIPHER_CTS_MODE_CS1 "CS1" +# define OSSL_CIPHER_CTS_MODE_CS2 "CS2" +# define OSSL_CIPHER_CTS_MODE_CS3 "CS3" + +/* Known CIPHER names (not a complete list) */ +# define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" + +/* Known DIGEST names (not a complete list) */ +# define OSSL_DIGEST_NAME_MD5 "MD5" +# define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" +# define OSSL_DIGEST_NAME_SHA1 "SHA1" +# define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" +# define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" +# define OSSL_DIGEST_NAME_SHA2_256_192 "SHA2-256/192" +# define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" +# define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" +# define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" +# define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" +# define OSSL_DIGEST_NAME_MD2 "MD2" +# define OSSL_DIGEST_NAME_MD4 "MD4" +# define OSSL_DIGEST_NAME_MDC2 "MDC2" +# define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" +# define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" +# define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" +# define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" +# define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" +# define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" +# define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" +# define OSSL_DIGEST_NAME_SM3 "SM3" + +/* Known MAC names */ +# define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" +# define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" +# define OSSL_MAC_NAME_CMAC "CMAC" +# define OSSL_MAC_NAME_GMAC "GMAC" +# define OSSL_MAC_NAME_HMAC "HMAC" +# define OSSL_MAC_NAME_KMAC128 "KMAC128" +# define OSSL_MAC_NAME_KMAC256 "KMAC256" +# define OSSL_MAC_NAME_POLY1305 "POLY1305" +# define OSSL_MAC_NAME_SIPHASH "SIPHASH" + +/* Known KDF names */ +# define OSSL_KDF_NAME_HKDF "HKDF" +# define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" +# define OSSL_KDF_NAME_PBKDF1 "PBKDF1" +# define OSSL_KDF_NAME_PBKDF2 "PBKDF2" +# define OSSL_KDF_NAME_SCRYPT "SCRYPT" +# define OSSL_KDF_NAME_SSHKDF "SSHKDF" +# define OSSL_KDF_NAME_SSKDF "SSKDF" +# define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" +# define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" +# define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" +# define OSSL_KDF_NAME_X963KDF "X963KDF" +# define OSSL_KDF_NAME_KBKDF "KBKDF" +# define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" +# define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" + +/* RSA padding modes */ +# define OSSL_PKEY_RSA_PAD_MODE_NONE "none" +# define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" +# define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" +# define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" +# define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" + +/* RSA pss padding salt length */ +# define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" + +/* OSSL_PKEY_PARAM_EC_ENCODING values */ +# define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" +# define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" + +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" + +# define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" + +/* PROV_SKEY well known key types */ +# define OSSL_SKEY_TYPE_GENERIC "GENERIC-SECRET" +# define OSSL_SKEY_TYPE_AES "AES" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" + +/* Provider configuration variables */ +#define OSSL_PKEY_RETAIN_SEED "pkey_retain_seed" + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +# define OSSL_ALG_PARAM_ALGORITHM_ID "algorithm-id" +# define OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS "algorithm-id-params" +# define OSSL_ALG_PARAM_CIPHER "cipher" +# define OSSL_ALG_PARAM_DIGEST "digest" +# define OSSL_ALG_PARAM_ENGINE "engine" +# define OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR "fips-indicator" +# define OSSL_ALG_PARAM_MAC "mac" +# define OSSL_ALG_PARAM_PROPERTIES "properties" +# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +# define OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props" +# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" +# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name" +# define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal" +# define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name" +# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid" +# define OSSL_CIPHER_PARAM_AEAD "aead" +# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +# define OSSL_CIPHER_PARAM_AEAD_IV_GENERATED "iv-generated" +# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" +# define OSSL_CIPHER_PARAM_AEAD_TAG "tag" +# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" +# define OSSL_CIPHER_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD "alg_id_param" +# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_CIPHER_PARAM_CTS "cts" +# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" +# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" +# define OSSL_CIPHER_PARAM_DECRYPT_ONLY "decrypt-only" +# define OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK "encrypt-check" +# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" +# define OSSL_CIPHER_PARAM_IV "iv" +# define OSSL_CIPHER_PARAM_IVLEN "ivlen" +# define OSSL_CIPHER_PARAM_KEYLEN "keylen" +# define OSSL_CIPHER_PARAM_MODE "mode" +# define OSSL_CIPHER_PARAM_NUM "num" +# define OSSL_CIPHER_PARAM_PADDING "padding" +# define OSSL_CIPHER_PARAM_PIPELINE_AEAD_TAG "pipeline-tag" +# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" +# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" +# define OSSL_CIPHER_PARAM_ROUNDS "rounds" +# define OSSL_CIPHER_PARAM_SPEED "speed" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag" +# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" +# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" +# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" +# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" +# define OSSL_CIPHER_PARAM_USE_BITS "use-bits" +# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard" +# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" +# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_DIGEST_PARAM_MICALG "micalg" +# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" +# define OSSL_DIGEST_PARAM_SIZE "size" +# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" +# define OSSL_DIGEST_PARAM_XOF "xof" +# define OSSL_DIGEST_PARAM_XOFLEN "xoflen" +# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +# define OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +# define OSSL_DRBG_PARAM_SIZE "size" +# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" +# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" +# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" +# define OSSL_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_EXCHANGE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" +# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" +# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" +# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" +# define OSSL_EXCHANGE_PARAM_PAD "pad" +# define OSSL_GEN_PARAM_ITERATION "iteration" +# define OSSL_GEN_PARAM_POTENTIAL "potential" +# define OSSL_KDF_PARAM_ARGON2_AD "ad" +# define OSSL_KDF_PARAM_ARGON2_LANES "lanes" +# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost" +# define OSSL_KDF_PARAM_ARGON2_VERSION "version" +# define OSSL_KDF_PARAM_CEK_ALG "cekalg" +# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_KDF_PARAM_CONSTANT "constant" +# define OSSL_KDF_PARAM_DATA "data" +# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean" +# define OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KDF_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_KDF_PARAM_FIPS_EMS_CHECK "ems_check" +# define OSSL_KDF_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy" +# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce" +# define OSSL_KDF_PARAM_INFO "info" +# define OSSL_KDF_PARAM_ITER "iter" +# define OSSL_KDF_PARAM_KBKDF_R "r" +# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" +# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" +# define OSSL_KDF_PARAM_KEY "key" +# define OSSL_KDF_PARAM_LABEL "label" +# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_KDF_PARAM_MAC_SIZE "maclen" +# define OSSL_KDF_PARAM_MODE "mode" +# define OSSL_KDF_PARAM_PASSWORD "pass" +# define OSSL_KDF_PARAM_PKCS12_ID "id" +# define OSSL_KDF_PARAM_PKCS5 "pkcs5" +# define OSSL_KDF_PARAM_PREFIX "prefix" +# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_KDF_PARAM_SALT "salt" +# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" +# define OSSL_KDF_PARAM_SCRYPT_N "n" +# define OSSL_KDF_PARAM_SCRYPT_P "p" +# define OSSL_KDF_PARAM_SCRYPT_R "r" +# define OSSL_KDF_PARAM_SECRET "secret" +# define OSSL_KDF_PARAM_SEED "seed" +# define OSSL_KDF_PARAM_SIZE "size" +# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" +# define OSSL_KDF_PARAM_SSHKDF_TYPE "type" +# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" +# define OSSL_KDF_PARAM_THREADS "threads" +# define OSSL_KDF_PARAM_UKM "ukm" +# define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info" +# define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info" +# define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info" +# define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo" +# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_KEM_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KEM_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KEM_PARAM_IKME "ikme" +# define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING "hs_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm" +# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len" +# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" +# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_MAC_PARAM_CUSTOM "custom" +# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" +# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" +# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" +# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" +# define OSSL_MAC_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_MAC_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_MAC_PARAM_FIPS_NO_SHORT_MAC OSSL_PROV_PARAM_NO_SHORT_MAC +# define OSSL_MAC_PARAM_IV "iv" +# define OSSL_MAC_PARAM_KEY "key" +# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_MAC_PARAM_SALT "salt" +# define OSSL_MAC_PARAM_SIZE "size" +# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" +# define OSSL_MAC_PARAM_XOF "xof" +# define OSSL_OBJECT_PARAM_DATA "data" +# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" +# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" +# define OSSL_OBJECT_PARAM_DESC "desc" +# define OSSL_OBJECT_PARAM_INPUT_TYPE "input-type" +# define OSSL_OBJECT_PARAM_REFERENCE "reference" +# define OSSL_OBJECT_PARAM_TYPE "type" +# define OSSL_PASSPHRASE_PARAM_INFO "info" +# define OSSL_PKEY_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_PKEY_PARAM_BITS "bits" +# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" +# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm" +# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" +# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +# define OSSL_PKEY_PARAM_DIST_ID "distid" +# define OSSL_PKEY_PARAM_EC_A "a" +# define OSSL_PKEY_PARAM_EC_B "b" +# define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3" +# define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp" +# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" +# define OSSL_PKEY_PARAM_EC_ENCODING "encoding" +# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +# define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_PARAM_EC_ORDER "order" +# define OSSL_PKEY_PARAM_EC_P "p" +# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +# define OSSL_PKEY_PARAM_EC_PUB_X "qx" +# define OSSL_PKEY_PARAM_EC_PUB_Y "qy" +# define OSSL_PKEY_PARAM_EC_SEED "seed" +# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE +# define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +# define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_FFC_G "g" +# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +# define OSSL_PKEY_PARAM_FFC_H "hindex" +# define OSSL_PKEY_PARAM_FFC_P "p" +# define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +# define OSSL_PKEY_PARAM_FFC_Q "q" +# define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +# define OSSL_PKEY_PARAM_FFC_SEED "seed" +# define OSSL_PKEY_PARAM_FFC_TYPE "type" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +# define OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK "digest-check" +# define OSSL_PKEY_PARAM_FIPS_KEY_CHECK "key-check" +# define OSSL_PKEY_PARAM_FIPS_SIGN_CHECK "sign-check" +# define OSSL_PKEY_PARAM_GROUP_NAME "group" +# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" +# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +# define OSSL_PKEY_PARAM_MAX_SIZE "max-size" +# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +# define OSSL_PKEY_PARAM_ML_DSA_INPUT_FORMATS "ml-dsa.input_formats" +# define OSSL_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS "ml-dsa.output_formats" +# define OSSL_PKEY_PARAM_ML_DSA_PREFER_SEED "ml-dsa.prefer_seed" +# define OSSL_PKEY_PARAM_ML_DSA_RETAIN_SEED "ml-dsa.retain_seed" +# define OSSL_PKEY_PARAM_ML_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE "ml-kem.import_pct_type" +# define OSSL_PKEY_PARAM_ML_KEM_INPUT_FORMATS "ml-kem.input_formats" +# define OSSL_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS "ml-kem.output_formats" +# define OSSL_PKEY_PARAM_ML_KEM_PREFER_SEED "ml-kem.prefer_seed" +# define OSSL_PKEY_PARAM_ML_KEM_RETAIN_SEED "ml-kem.retain_seed" +# define OSSL_PKEY_PARAM_ML_KEM_SEED "seed" +# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +# define OSSL_PKEY_PARAM_PRIV_KEY "priv" +# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_PUB_KEY "pub" +# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9" +# define OSSL_PKEY_PARAM_RSA_D "d" +# define OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ "rsa-derive-from-pq" +# define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_RSA_E "e" +# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1" +# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10" +# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2" +# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3" +# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4" +# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5" +# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6" +# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7" +# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8" +# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9" +# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1" +# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10" +# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2" +# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3" +# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4" +# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5" +# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6" +# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7" +# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8" +# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9" +# define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC +# define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_PKEY_PARAM_RSA_N "n" +# define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" +# define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1" +# define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2" +# define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1" +# define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2" +# define OSSL_PKEY_PARAM_RSA_TEST_XP "xp" +# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" +# define OSSL_PKEY_PARAM_SLH_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG +# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +# define OSSL_PROV_PARAM_BUILDINFO "buildinfo" +# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" +# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" +# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" +# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" +# define OSSL_PROV_PARAM_DSA_SIGN_DISABLED "dsa-sign-disabled" +# define OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK "ecdh-cofactor-check" +# define OSSL_PROV_PARAM_HKDF_DIGEST_CHECK "hkdf-digest-check" +# define OSSL_PROV_PARAM_HKDF_KEY_CHECK "hkdf-key-check" +# define OSSL_PROV_PARAM_HMAC_KEY_CHECK "hmac-key-check" +# define OSSL_PROV_PARAM_KBKDF_KEY_CHECK "kbkdf-key-check" +# define OSSL_PROV_PARAM_KMAC_KEY_CHECK "kmac-key-check" +# define OSSL_PROV_PARAM_NAME "name" +# define OSSL_PROV_PARAM_NO_SHORT_MAC "no-short-mac" +# define OSSL_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK "pbkdf2-lower-bound-check" +# define OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED "rsa-pkcs15-pad-disabled" +# define OSSL_PROV_PARAM_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED "rsa-sign-x931-pad-disabled" +# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" +# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" +# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" +# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" +# define OSSL_PROV_PARAM_SIGNATURE_DIGEST_CHECK "signature-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_DIGEST_CHECK "sshkdf-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_KEY_CHECK "sshkdf-key-check" +# define OSSL_PROV_PARAM_SSKDF_DIGEST_CHECK "sskdf-digest-check" +# define OSSL_PROV_PARAM_SSKDF_KEY_CHECK "sskdf-key-check" +# define OSSL_PROV_PARAM_STATUS "status" +# define OSSL_PROV_PARAM_TDES_ENCRYPT_DISABLED "tdes-encrypt-disabled" +# define OSSL_PROV_PARAM_TLS13_KDF_DIGEST_CHECK "tls13-kdf-digest-check" +# define OSSL_PROV_PARAM_TLS13_KDF_KEY_CHECK "tls13-kdf-key-check" +# define OSSL_PROV_PARAM_TLS1_PRF_DIGEST_CHECK "tls1-prf-digest-check" +# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" +# define OSSL_PROV_PARAM_TLS1_PRF_KEY_CHECK "tls1-prf-key-check" +# define OSSL_PROV_PARAM_VERSION "version" +# define OSSL_PROV_PARAM_X942KDF_KEY_CHECK "x942kdf-key-check" +# define OSSL_PROV_PARAM_X963KDF_DIGEST_CHECK "x963kdf-digest-check" +# define OSSL_PROV_PARAM_X963KDF_KEY_CHECK "x963kdf-key-check" +# define OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_RAND_PARAM_GENERATE "generate" +# define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +# define OSSL_RAND_PARAM_STATE "state" +# define OSSL_RAND_PARAM_STRENGTH "strength" +# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" +# define OSSL_SIGNATURE_PARAM_ADD_RANDOM "additional-random" +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID OSSL_PKEY_PARAM_ALGORITHM_ID +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string" +# define OSSL_SIGNATURE_PARAM_DETERMINISTIC "deterministic" +# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE +# define OSSL_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_SIGNATURE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_CHECK OSSL_PKEY_PARAM_FIPS_SIGN_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK "sign-x931-pad-check" +# define OSSL_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE "verify-message" +# define OSSL_SIGNATURE_PARAM_INSTANCE "instance" +# define OSSL_SIGNATURE_PARAM_KAT "kat" +# define OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING "message-encoding" +# define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_SIGNATURE_PARAM_MU "mu" +# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type" +# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +# define OSSL_SIGNATURE_PARAM_SIGNATURE "signature" +# define OSSL_SIGNATURE_PARAM_TEST_ENTROPY "test-entropy" +# define OSSL_SKEY_PARAM_KEY_LENGTH "key-length" +# define OSSL_SKEY_PARAM_RAW_BYTES "raw-bytes" +# define OSSL_STORE_PARAM_ALIAS "alias" +# define OSSL_STORE_PARAM_DIGEST "digest" +# define OSSL_STORE_PARAM_EXPECT "expect" +# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" +# define OSSL_STORE_PARAM_INPUT_TYPE "input-type" +# define OSSL_STORE_PARAM_ISSUER "name" +# define OSSL_STORE_PARAM_PROPERTIES "properties" +# define OSSL_STORE_PARAM_SERIAL "serial" +# define OSSL_STORE_PARAM_SUBJECT "subject" + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/crmf.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/crmf.h index 0419170bb99974..9b6f13fac240b2 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/crmf.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/crmf.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/crmf.h.in * - * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -26,6 +26,7 @@ # include # include # include /* for GENERAL_NAME etc. */ +# include /* explicit #includes not strictly needed since implied by the above: */ # include @@ -43,9 +44,12 @@ extern "C" { # define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 # define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 - typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) + +typedef struct ossl_crmf_encryptedkey_st OSSL_CRMF_ENCRYPTEDKEY; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDKEY) + typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) @@ -77,6 +81,36 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) #define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; +void OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(OSSL_CRMF_ATTRIBUTETYPEANDVALUE *v); +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value(sk, idx) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new(cmp) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_null() ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (n)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete(sk, i) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (i))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete_ptr(sk, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_shift(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk),ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), (idx)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set(sk, idx, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), pnum) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup(sk) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) + + typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER) typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY; @@ -118,6 +152,7 @@ typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO) typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTTEMPLATE) typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS) @@ -198,12 +233,14 @@ int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, int rid, int acceptRAVerified, OSSL_LIB_CTX *libctx, const char *propq); OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); -const ASN1_INTEGER -*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const ASN1_INTEGER +*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); X509_EXTENSIONS *OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME @@ -215,10 +252,24 @@ int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl, const X509_NAME *subject, const X509_NAME *issuer, const ASN1_INTEGER *serial); -X509 -*OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, - OSSL_LIB_CTX *libctx, const char *propq, - EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDKEY_get1_encCert(const OSSL_CRMF_ENCRYPTEDKEY *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, unsigned int flags); +unsigned char +*OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *enc, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, int *outlen); +EVP_PKEY *OSSL_CRMF_ENCRYPTEDKEY_get1_pkey(const OSSL_CRMF_ENCRYPTEDKEY *encryptedKey, + X509_STORE *ts, STACK_OF(X509) *extra, EVP_PKEY *pkey, + X509 *cert, ASN1_OCTET_STRING *secret, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSG_centralkeygen_requested(const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr); +# ifndef OPENSSL_NO_CMS +OSSL_CRMF_ENCRYPTEDKEY *OSSL_CRMF_ENCRYPTEDKEY_init_envdata(CMS_EnvelopedData *envdata); +# endif # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/crypto.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/crypto.h index 668c52cfee1f15..2a825986bf3a55 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/crypto.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/crypto.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/crypto.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -85,9 +85,15 @@ int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock); void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock); int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_add64(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_and(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, CRYPTO_RWLOCK *lock); int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, CRYPTO_RWLOCK *lock); /* No longer needed, so this is a no-op */ #define OPENSSL_malloc_init() while(0) continue @@ -96,6 +102,9 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_zalloc(num) \ CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_aligned_alloc(num, alignment, freeptr) \ + CRYPTO_aligned_alloc(num, alignment, freeptr, \ + OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_realloc(addr, num) \ CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_clear_realloc(addr, old_num, num) \ @@ -124,6 +133,7 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); size_t OPENSSL_strnlen(const char *str, size_t maxlen); +int OPENSSL_strtoul(const char *str, char **endptr, int base, unsigned long *num); int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength, const unsigned char *buf, size_t buflen, const char sep); @@ -160,6 +170,7 @@ const char *OpenSSL_version(int type); # define OPENSSL_FULL_VERSION_STRING 7 # define OPENSSL_MODULES_DIR 8 # define OPENSSL_CPU_INFO 9 +# define OPENSSL_WINCTX 10 const char *OPENSSL_info(int type); /* @@ -174,6 +185,7 @@ const char *OPENSSL_info(int type); # define OPENSSL_INFO_LIST_SEPARATOR 1006 # define OPENSSL_INFO_SEED_SOURCE 1007 # define OPENSSL_INFO_CPU_SETTINGS 1008 +# define OPENSSL_INFO_WINDOWS_CONTEXT 1009 int OPENSSL_issetugid(void); @@ -341,11 +353,14 @@ void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn, CRYPTO_realloc_fn *realloc_fn, CRYPTO_free_fn *free_fn); -void *CRYPTO_malloc(size_t num, const char *file, int line); -void *CRYPTO_zalloc(size_t num, const char *file, int line); -void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); -char *CRYPTO_strdup(const char *str, const char *file, int line); -char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc(size_t num, size_t align, + void **freeptr, const char *file, + int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strdup(const char *str, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); void CRYPTO_free(void *ptr, const char *file, int line); void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line); void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); @@ -354,8 +369,8 @@ void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, int CRYPTO_secure_malloc_init(size_t sz, size_t minsize); int CRYPTO_secure_malloc_done(void); -void *CRYPTO_secure_malloc(size_t num, const char *file, int line); -void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); void CRYPTO_secure_free(void *ptr, const char *file, int line); void CRYPTO_secure_clear_free(void *ptr, size_t num, const char *file, int line); @@ -376,6 +391,9 @@ void OPENSSL_cleanse(void *ptr, size_t len); # define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */ # define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */ +/* max allowed length for value of OPENSSL_MALLOC_FAILURES env var. */ +# define CRYPTO_MEM_CHECK_MAX_FS 256 + void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); # ifndef OPENSSL_NO_DEPRECATED_3_0 # define OPENSSL_mem_debug_push(info) \ @@ -551,6 +569,13 @@ int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file); void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); +int OSSL_LIB_CTX_get_conf_diagnostics(OSSL_LIB_CTX *ctx); +void OSSL_LIB_CTX_set_conf_diagnostics(OSSL_LIB_CTX *ctx, int value); + +void OSSL_sleep(uint64_t millis); + + +void *OSSL_LIB_CTX_get_data(OSSL_LIB_CTX *ctx, int index); # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/ct.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/ct.h index 15a276e33ff7ca..d29dbc78997c0b 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/ct.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/ct.h @@ -133,7 +133,7 @@ typedef enum { */ CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); - + /* * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library * context and property query string is used. diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/err.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/err.h index 2abf2483488181..daca18e7b757b0 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/err.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/err.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -372,7 +372,7 @@ typedef struct ERR_string_data_st { } ERR_STRING_DATA; DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); -#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp))) +#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp)), lh_ERR_STRING_DATA_hash_thunk, lh_ERR_STRING_DATA_comp_thunk, lh_ERR_STRING_DATA_doall_thunk, lh_ERR_STRING_DATA_doall_arg_thunk)) #define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) @@ -496,6 +496,14 @@ int ERR_get_next_error_library(void); int ERR_set_mark(void); int ERR_pop_to_mark(void); int ERR_clear_last_mark(void); +int ERR_count_to_mark(void); +int ERR_pop(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); #ifdef __cplusplus } diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/fipskey.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/fipskey.h index bf03682482fdd5..6939fd3c55ba6e 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/fipskey.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/fipskey.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/fipskey.h.in * - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -29,6 +29,11 @@ extern "C" { */ #define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" +/* + * The FIPS provider vendor name, as a string. + */ +#define FIPS_VENDOR "OpenSSL FIPS Provider" + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/lhash.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/lhash.h index 39dd6254acdeb6..62c55b20fd9716 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/lhash.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/lhash.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -24,6 +24,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -31,9 +34,13 @@ extern "C" { typedef struct lhash_node_st OPENSSL_LH_NODE; typedef int (*OPENSSL_LH_COMPFUNC) (const void *, const void *); +typedef int (*OPENSSL_LH_COMPFUNCTHUNK) (const void *, const void *, OPENSSL_LH_COMPFUNC cfn); typedef unsigned long (*OPENSSL_LH_HASHFUNC) (const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNCTHUNK) (const void *, OPENSSL_LH_HASHFUNC hfn); typedef void (*OPENSSL_LH_DOALL_FUNC) (void *); +typedef void (*OPENSSL_LH_DOALL_FUNC_THUNK) (void *, OPENSSL_LH_DOALL_FUNC doall); typedef void (*OPENSSL_LH_DOALL_FUNCARG) (void *, void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG_THUNK) (void *, void *, OPENSSL_LH_DOALL_FUNCARG doall); typedef struct lhash_st OPENSSL_LHASH; /* @@ -79,26 +86,40 @@ typedef struct lhash_st OPENSSL_LHASH; int OPENSSL_LH_error(OPENSSL_LHASH *lh); OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +OPENSSL_LHASH *OPENSSL_LH_set_thunks(OPENSSL_LHASH *lh, + OPENSSL_LH_HASHFUNCTHUNK hw, + OPENSSL_LH_COMPFUNCTHUNK cw, + OPENSSL_LH_DOALL_FUNC_THUNK daw, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw); void OPENSSL_LH_free(OPENSSL_LHASH *lh); void OPENSSL_LH_flush(OPENSSL_LHASH *lh); void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); -void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg_thunk(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw, + OPENSSL_LH_DOALL_FUNCARG fn, void *arg); + unsigned long OPENSSL_LH_strhash(const char *c); unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); # ifndef OPENSSL_NO_STDIO -void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# endif +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # endif -void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define _LHASH OPENSSL_LHASH @@ -129,110 +150,190 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); /* Helper macro for internal use */ # define DEFINE_LHASH_OF_INTERNAL(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ typedef void (*lh_##type##_doallfunc)(type *a); \ - static ossl_unused ossl_inline type *ossl_check_##type##_lh_plain_type(type *ptr) \ + static ossl_inline unsigned long lh_##type##_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static ossl_inline int lh_##type##_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_inline void lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_inline void lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline type *\ + ossl_check_##type##_lh_plain_type(type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const type *ossl_check_const_##type##_lh_plain_type(const type *ptr) \ + static ossl_unused ossl_inline const type * \ + ossl_check_const_##type##_lh_plain_type(const type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const OPENSSL_LHASH *ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline const OPENSSL_LHASH * \ + ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ { \ return (const OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LHASH *ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline OPENSSL_LHASH * \ + ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ { \ return (OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ + static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC \ + ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ { \ return (OPENSSL_LH_COMPFUNC)cmp; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ + static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC \ + ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ { \ return (OPENSSL_LH_HASHFUNC)hfn; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ + static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC \ + ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ { \ return (OPENSSL_LH_DOALL_FUNC)dfn; \ } \ LHASH_OF(type) -# define DEFINE_LHASH_OF(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ - static ossl_unused ossl_inline LHASH_OF(type) *lh_##type##_new(unsigned long (*hfn)(const type *), \ - int (*cfn)(const type *, const type *)) \ +# ifndef OPENSSL_NO_DEPRECATED_3_1 +# define DEFINE_LHASH_OF_DEPRECATED(type) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ - return (LHASH_OF(type) *) \ - OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ - static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } +# else +# define DEFINE_LHASH_OF_DEPRECATED(type) +# endif + +# define DEFINE_LHASH_OF_EX(type) \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ + static unsigned long \ + lh_##type##_hfn_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static int lh_##type##_cfn_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_free(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_flush(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_flush(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ { \ return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline int \ + lh_##type##_error(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_num_items(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_get_down_load(LHASH_OF(type) *lh) \ { \ - OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ { \ - OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ } \ - static ossl_unused ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ { \ - OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ { \ - return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ } \ - static ossl_unused ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall(LHASH_OF(type) *lh, void (*doall)(type *)) \ { \ - OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ - void (*doall)(type *)) \ + static ossl_unused ossl_inline LHASH_OF(type) * \ + lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ { \ - OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \ + lh_##type##_hfn_thunk, lh_##type##_cfn_thunk, \ + lh_##type##_doall_thunk, \ + lh_##type##_doall_arg_thunk); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall_arg(LHASH_OF(type) *lh, \ - void (*doallarg)(type *, void *), \ - void *arg) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg(LHASH_OF(type) *lh, \ + void (*doallarg)(type *, void *), void *arg) \ { \ OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ } \ LHASH_OF(type) +# define DEFINE_LHASH_OF(type) \ + DEFINE_LHASH_OF_EX(type); \ + DEFINE_LHASH_OF_DEPRECATED(type) \ + LHASH_OF(type) + #define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ int_implement_lhash_doall(type, argtype, const type) @@ -240,17 +341,26 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); int_implement_lhash_doall(type, argtype, type) #define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype##_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG fn) \ + { \ + void (*fn_conv)(cbargtype *, argtype *) = (void (*)(cbargtype *, argtype *))fn; \ + fn_conv((cbargtype *)node, (argtype *)arg); \ + } \ static ossl_unused ossl_inline void \ lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ void (*fn)(cbargtype *, argtype *), \ argtype *arg) \ { \ - OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNCARG)fn, (void *)arg); \ + OPENSSL_LH_doall_arg_thunk((OPENSSL_LHASH *)lh, \ + lh_##type##_doall_##argtype##_thunk, \ + (OPENSSL_LH_DOALL_FUNCARG)fn, \ + (void *)arg); \ } \ LHASH_OF(type) DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); -#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp)), lh_OPENSSL_STRING_hash_thunk, lh_OPENSSL_STRING_comp_thunk, lh_OPENSSL_STRING_doall_thunk, lh_OPENSSL_STRING_doall_arg_thunk)) #define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) @@ -265,7 +375,7 @@ DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); #define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) #define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); -#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp)), lh_OPENSSL_CSTRING_hash_thunk, lh_OPENSSL_CSTRING_comp_thunk, lh_OPENSSL_CSTRING_doall_thunk, lh_OPENSSL_CSTRING_doall_arg_thunk)) #define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/opensslv.h index 94f44daf376f8e..8f0439fc042ad0 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/opensslv.h @@ -28,8 +28,8 @@ extern "C" { * These macros express version number MAJOR.MINOR.PATCH exactly */ # define OPENSSL_VERSION_MAJOR 3 -# define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 17 +# define OPENSSL_VERSION_MINOR 5 +# define OPENSSL_VERSION_PATCH 2 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.17" -# define OPENSSL_FULL_VERSION_STR "3.0.17" +# define OPENSSL_VERSION_STR "3.5.2" +# define OPENSSL_FULL_VERSION_STR "3.5.2" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "1 Jul 2025" +# define OPENSSL_RELEASE_DATE "5 Aug 2025" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.17 1 Jul 2025" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.2 5 Aug 2025" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/pkcs12.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/pkcs12.h index 80369818c8ecdc..35d04f039366ce 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/pkcs12.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/pkcs12.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/pkcs12.h.in * - * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -41,6 +44,7 @@ extern "C" { # define PKCS12_MAC_KEY_LENGTH 20 +/* The macro is expected to be used only internally. Kept for backwards compatibility. */ # define PKCS12_SALT_LEN 8 /* It's not clear if these are actually needed... */ @@ -130,7 +134,9 @@ int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); const STACK_OF(PKCS12_SAFEBAG) * PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); @@ -218,6 +224,7 @@ ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); const STACK_OF(X509_ATTRIBUTE) * PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, const char *pass, int passlen, const unsigned char *in, int inlen, @@ -285,6 +292,9 @@ int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, unsigned char *salt, int saltlen, int iter, const EVP_MD *md_type); +int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type, const char *prf_md_name); int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, int saltlen, const EVP_MD *md_type); unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, @@ -305,6 +315,7 @@ DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) void PKCS12_PBE_add(void); int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype); @@ -312,6 +323,11 @@ PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype, OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/pkcs7.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/pkcs7.h index 0a95a93e59e262..641d9411a47354 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/pkcs7.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/pkcs7.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/pkcs7.h.in * - * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -28,6 +28,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -131,8 +134,8 @@ SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INF typedef struct pkcs7_signed_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; struct pkcs7_st *contents; } PKCS7_SIGNED; @@ -158,8 +161,8 @@ typedef struct pkcs7_enveloped_st { typedef struct pkcs7_signedandenveloped_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; PKCS7_ENC_CONTENT *enc_data; STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; @@ -200,7 +203,7 @@ typedef struct pkcs7_st { /* NID_pkcs7_data */ ASN1_OCTET_STRING *data; /* NID_pkcs7_signed */ - PKCS7_SIGNED *sign; + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ /* NID_pkcs7_enveloped */ PKCS7_ENVELOPE *enveloped; /* NID_pkcs7_signedAndEnveloped */ @@ -341,13 +344,13 @@ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, const EVP_MD *dgst); int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); -int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); -int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); int PKCS7_content_new(PKCS7 *p7, int nid); int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, - X509 *x509); + X509 *signer); BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/ssl.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/ssl.h index 7e9ca09bbf39f0..6396681867d76c 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/ssl.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/ssl.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/ssl.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -24,6 +24,7 @@ # endif # include +# include # include # include # include @@ -42,6 +43,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -231,10 +235,8 @@ typedef struct ssl_cipher_st SSL_CIPHER; typedef struct ssl_session_st SSL_SESSION; typedef struct tls_sigalgs_st TLS_SIGALGS; typedef struct ssl_conf_ctx_st SSL_CONF_CTX; -typedef struct ssl_comp_st SSL_COMP; STACK_OF(SSL_CIPHER); -STACK_OF(SSL_COMP); /* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ typedef struct srtp_protection_profile_st { @@ -278,28 +280,31 @@ typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, /* Extension context codes */ /* This extension is only allowed in TLS */ -#define SSL_EXT_TLS_ONLY 0x0001 +#define SSL_EXT_TLS_ONLY 0x00001 /* This extension is only allowed in DTLS */ -#define SSL_EXT_DTLS_ONLY 0x0002 +#define SSL_EXT_DTLS_ONLY 0x00002 /* Some extensions may be allowed in DTLS but we don't implement them for it */ -#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 /* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ -#define SSL_EXT_SSL3_ALLOWED 0x0008 +#define SSL_EXT_SSL3_ALLOWED 0x00008 /* Extension is only defined for TLS1.2 and below */ -#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 /* Extension is only defined for TLS1.3 and above */ -#define SSL_EXT_TLS1_3_ONLY 0x0020 +#define SSL_EXT_TLS1_3_ONLY 0x00020 /* Ignore this extension during parsing if we are resuming */ -#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 -#define SSL_EXT_CLIENT_HELLO 0x0080 +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 /* Really means TLS1.2 or below */ -#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 -#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 -#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 -#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 -#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 -#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 -#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 /* Typedefs for handling custom extensions */ @@ -404,7 +409,7 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); */ # define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_BIT(22) /* - * If set, a server will allow a client to issue a SSLv3.0 version + * If set, a server will allow a client to issue an SSLv3.0 version * number as latest version supported in the premaster secret, even when * TLSv1.0 (version 3.1) was announced in the client hello. Normally * this is forbidden to prevent version rollback attacks. @@ -430,6 +435,19 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); * interoperability with CryptoPro CSP 3.x */ # define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +# define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +# define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) + /* Enable KTLS TX zerocopy on Linux */ +# define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) + +#define SSL_OP_PREFER_NO_DHE_KEX SSL_OP_BIT(35) /* * Option "collections." @@ -574,6 +592,8 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); # define CERT_PKEY_CERT_TYPE 0x400 /* Cert chain suitable to Suite B */ # define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +# define CERT_PKEY_RPK 0x1000 # define SSL_CONF_FLAG_CMDLINE 0x1 # define SSL_CONF_FLAG_FILE 0x2 @@ -965,6 +985,7 @@ uint32_t SSL_get_recv_max_early_data(const SSL *s); # include /* This is mostly sslv3 with a few tweaks */ # include /* Datagram TLS */ # include /* Support for the use_srtp extension */ +# include #ifdef __cplusplus extern "C" { @@ -1000,32 +1021,6 @@ SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) #define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) #define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) #define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) -SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) -#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) -#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) -#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) -#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) -#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) -#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) -#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) -#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) -#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) -#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) -#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) /* compatibility */ @@ -1066,6 +1061,7 @@ typedef enum { DTLS_ST_CR_HELLO_VERIFY_REQUEST, TLS_ST_CR_SRVR_HELLO, TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, TLS_ST_CR_CERT_STATUS, TLS_ST_CR_KEY_EXCH, TLS_ST_CR_CERT_REQ, @@ -1075,6 +1071,7 @@ typedef enum { TLS_ST_CR_FINISHED, TLS_ST_CW_CLNT_HELLO, TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, TLS_ST_CW_KEY_EXCH, TLS_ST_CW_CERT_VRFY, TLS_ST_CW_CHANGE, @@ -1085,10 +1082,12 @@ typedef enum { DTLS_ST_SW_HELLO_VERIFY_REQUEST, TLS_ST_SW_SRVR_HELLO, TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, TLS_ST_SW_KEY_EXCH, TLS_ST_SW_CERT_REQ, TLS_ST_SW_SRVR_DONE, TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, TLS_ST_SR_KEY_EXCH, TLS_ST_SR_CERT_VRFY, TLS_ST_SR_NEXT_PROTO, @@ -1380,9 +1379,13 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_CTRL_GET_SIGNATURE_NID 132 # define SSL_CTRL_GET_TMP_KEY 133 # define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +# define SSL_CTRL_GET_IANA_GROUPS 135 # define SSL_CTRL_SET_RETRY_VERIFY 136 # define SSL_CTRL_GET_VERIFY_CERT_STORE 137 # define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +# define SSL_CTRL_GET0_IMPLEMENTED_GROUPS 139 +# define SSL_CTRL_GET_SIGNATURE_NAME 140 +# define SSL_CTRL_GET_PEER_SIGNATURE_NAME 141 # define SSL_CERT_SET_FIRST 1 # define SSL_CERT_SET_NEXT 2 # define SSL_CERT_SET_SERVER 3 @@ -1485,10 +1488,15 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get1_groups(s, glist) \ SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_IANA_GROUPS,0,(uint16_t **)(plst)) # define SSL_CTX_set1_groups(ctx, glist, glistlen) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) # define SSL_CTX_set1_groups_list(ctx, s) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s)) +# define SSL_CTX_get0_implemented_groups(ctx, all, out) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET0_IMPLEMENTED_GROUPS, all, \ + (STACK_OF(OPENSSL_CSTRING) *)(out)) # define SSL_set1_groups(s, glist, glistlen) \ SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist)) # define SSL_set1_groups_list(s, str) \ @@ -1520,8 +1528,12 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) (char *)(clist)) # define SSL_set1_client_certificate_types(s, clist, clistlen) \ SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist)) +# define SSL_get0_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn) +# define SSL_get0_peer_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_peer_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) # define SSL_get_peer_tmp_key(s, pk) \ @@ -1549,6 +1561,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get_max_proto_version(s) \ SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +const char *SSL_get0_group_name(SSL *s); const char *SSL_group_to_name(SSL *s, int id); /* Backwards compatibility, original 1.1.0 names */ @@ -1613,7 +1626,11 @@ void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); __owur int SSL_want(const SSL *s); __owur int SSL_clear(SSL *s); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()") void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); +#endif +void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm); __owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); __owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); @@ -1725,13 +1742,21 @@ __owur const char *SSL_state_string(const SSL *s); __owur const char *SSL_rstate_string(const SSL *s); __owur const char *SSL_state_string_long(const SSL *s); __owur const char *SSL_rstate_string_long(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_get_time_ex()") __owur long SSL_SESSION_get_time(const SSL_SESSION *s); +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_set_time_ex()") __owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +#endif __owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); __owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); __owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); __owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); +__owur time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s); +__owur time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t); + __owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); __owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, @@ -1783,6 +1808,9 @@ __owur int SSL_has_matching_session_id(const SSL *s, unsigned int id_len); SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); # ifdef OPENSSL_X509_H __owur X509 *SSL_get0_peer_certificate(const SSL *s); @@ -1840,6 +1868,8 @@ __owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, SSL *SSL_new(SSL_CTX *ctx); int SSL_up_ref(SSL *s); int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); __owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, unsigned int sid_ctx_len); @@ -1848,8 +1878,8 @@ __owur int SSL_set_purpose(SSL *ssl, int purpose); __owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); __owur int SSL_set_trust(SSL *ssl, int trust); -__owur int SSL_set1_host(SSL *s, const char *hostname); -__owur int SSL_add1_host(SSL *s, const char *hostname); +__owur int SSL_set1_host(SSL *s, const char *host); +__owur int SSL_add1_host(SSL *s, const char *host); __owur const char *SSL_get0_peername(SSL *s); void SSL_set_hostflags(SSL *s, unsigned int flags); @@ -1924,6 +1954,11 @@ OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg); void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, void *arg); +typedef int (*SSL_new_pending_conn_cb_fn) (SSL_CTX *ctx, SSL *new_ssl, + void *arg); +void SSL_CTX_set_new_pending_conn_cb(SSL_CTX *c, SSL_new_pending_conn_cb_fn cb, + void *arg); + int SSL_client_hello_isv2(SSL *s); unsigned int SSL_client_hello_get0_legacy_version(SSL *s); size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); @@ -1932,6 +1967,8 @@ size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); size_t SSL_client_hello_get0_compression_methods(SSL *s, const unsigned char **out); int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); int SSL_client_hello_get0_ext(SSL *s, unsigned int type, const unsigned char **out, size_t *outlen); @@ -1978,6 +2015,12 @@ long SSL_callback_ctrl(SSL *, int, void (*)(void)); long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); +# define SSL_WRITE_FLAG_CONCLUDE (1U << 0) + +__owur int SSL_write_ex2(SSL *s, const void *buf, size_t num, + uint64_t flags, + size_t *written); + # define SSL_EARLY_DATA_NOT_SENT 0 # define SSL_EARLY_DATA_REJECTED 1 # define SSL_EARLY_DATA_ACCEPTED 2 @@ -1986,6 +2029,7 @@ __owur int SSL_get_early_data_status(const SSL *s); __owur int SSL_get_error(const SSL *s, int ret_code); __owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); /* This sets the 'default' SSL version that SSL_new() will create */ # ifndef OPENSSL_NO_DEPRECATED_3_0 @@ -2281,6 +2325,8 @@ void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); +int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size, + size_t hs_block_size); int SSL_set_record_padding_callback(SSL *ssl, size_t (*cb) (SSL *ssl, int type, @@ -2288,12 +2334,255 @@ int SSL_set_record_padding_callback(SSL *ssl, void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); void *SSL_get_record_padding_callback_arg(const SSL *ssl); int SSL_set_block_padding(SSL *ssl, size_t block_size); - +int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size, + size_t hs_block_size); int SSL_set_num_tickets(SSL *s, size_t num_tickets); size_t SSL_get_num_tickets(const SSL *s); int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +__owur int SSL_is_listener(SSL *ssl); +__owur SSL *SSL_get0_listener(SSL *s); +#define SSL_LISTENER_FLAG_NO_VALIDATE (1UL << 1) +__owur SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags); +__owur SSL *SSL_new_listener_from(SSL *ssl, uint64_t flags); +__owur SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags); +#define SSL_ACCEPT_CONNECTION_NO_BLOCK (1UL << 0) +__owur SSL *SSL_accept_connection(SSL *ssl, uint64_t flags); +__owur size_t SSL_get_accept_connection_queue_len(SSL *ssl); +__owur int SSL_listen(SSL *ssl); + +__owur int SSL_is_domain(SSL *s); +__owur SSL *SSL_get0_domain(SSL *s); +__owur SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags); + +#define SSL_DOMAIN_FLAG_SINGLE_THREAD (1U << 0) +#define SSL_DOMAIN_FLAG_MULTI_THREAD (1U << 1) +#define SSL_DOMAIN_FLAG_THREAD_ASSISTED (1U << 2) +#define SSL_DOMAIN_FLAG_BLOCKING (1U << 3) +#define SSL_DOMAIN_FLAG_LEGACY_BLOCKING (1U << 4) + +__owur int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t domain_flags); +__owur int SSL_CTX_get_domain_flags(const SSL_CTX *ctx, uint64_t *domain_flags); +__owur int SSL_get_domain_flags(const SSL *ssl, uint64_t *domain_flags); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +# ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +# endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + +# define SSL_VALUE_CLASS_GENERIC 0 +# define SSL_VALUE_CLASS_FEATURE_REQUEST 1 +# define SSL_VALUE_CLASS_FEATURE_PEER_REQUEST 2 +# define SSL_VALUE_CLASS_FEATURE_NEGOTIATED 3 + +# define SSL_VALUE_NONE 0 +# define SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL 1 +# define SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL 2 +# define SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL 3 +# define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL 4 +# define SSL_VALUE_QUIC_IDLE_TIMEOUT 5 +# define SSL_VALUE_EVENT_HANDLING_MODE 6 +# define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7 +# define SSL_VALUE_STREAM_WRITE_BUF_USED 8 +# define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9 + +# define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0 +# define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1 +# define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT 2 + +int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v); +int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v); + +# define SSL_get_generic_value_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_set_generic_value_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_get_feature_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_set_feature_request_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_get_feature_peer_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, (id), (v)) +# define SSL_get_feature_negotiated_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_NEGOTIATED, (id), (v)) + +# define SSL_get_quic_stream_bidi_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_bidi_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, \ + (value)) + +# define SSL_get_event_handling_mode(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) +# define SSL_set_event_handling_mode(ssl, value) \ + SSL_set_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) + +# define SSL_get_stream_write_buf_size(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_SIZE, \ + (value)) +# define SSL_get_stream_write_buf_used(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_USED, \ + (value)) +# define SSL_get_stream_write_buf_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_AVAIL, \ + (value)) + +# define SSL_POLL_EVENT_NONE 0 + +# define SSL_POLL_EVENT_F (1U << 0) /* F (Failure) */ +# define SSL_POLL_EVENT_EL (1U << 1) /* EL (Exception on Listener) */ +# define SSL_POLL_EVENT_EC (1U << 2) /* EC (Exception on Conn) */ +# define SSL_POLL_EVENT_ECD (1U << 3) /* ECD (Exception on Conn Drained) */ +# define SSL_POLL_EVENT_ER (1U << 4) /* ER (Exception on Read) */ +# define SSL_POLL_EVENT_EW (1U << 5) /* EW (Exception on Write) */ +# define SSL_POLL_EVENT_R (1U << 6) /* R (Readable) */ +# define SSL_POLL_EVENT_W (1U << 7) /* W (Writable) */ +# define SSL_POLL_EVENT_IC (1U << 8) /* IC (Incoming Connection) */ +# define SSL_POLL_EVENT_ISB (1U << 9) /* ISB (Incoming Stream: Bidi) */ +# define SSL_POLL_EVENT_ISU (1U << 10) /* ISU (Incoming Stream: Uni) */ +# define SSL_POLL_EVENT_OSB (1U << 11) /* OSB (Outgoing Stream: Bidi) */ +# define SSL_POLL_EVENT_OSU (1U << 12) /* OSU (Outgoing Stream: Uni) */ + +# define SSL_POLL_EVENT_RW (SSL_POLL_EVENT_R | SSL_POLL_EVENT_W) +# define SSL_POLL_EVENT_RE (SSL_POLL_EVENT_R | SSL_POLL_EVENT_ER) +# define SSL_POLL_EVENT_WE (SSL_POLL_EVENT_W | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_RWE (SSL_POLL_EVENT_RE | SSL_POLL_EVENT_WE) +# define SSL_POLL_EVENT_E (SSL_POLL_EVENT_EL | SSL_POLL_EVENT_EC \ + | SSL_POLL_EVENT_ER | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_IS (SSL_POLL_EVENT_ISB | SSL_POLL_EVENT_ISU) +# define SSL_POLL_EVENT_ISE (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_EC) +# define SSL_POLL_EVENT_I (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_IC) +# define SSL_POLL_EVENT_OS (SSL_POLL_EVENT_OSB | SSL_POLL_EVENT_OSU) +# define SSL_POLL_EVENT_OSE (SSL_POLL_EVENT_OS | SSL_POLL_EVENT_EC) + +typedef struct ssl_poll_item_st { + BIO_POLL_DESCRIPTOR desc; + uint64_t events, revents; +} SSL_POLL_ITEM; + +# define SSL_POLL_FLAG_NO_HANDLE_EVENTS (1U << 0) + +__owur int SSL_poll(SSL_POLL_ITEM *items, + size_t num_items, + size_t stride, + const struct timeval *timeout, + uint64_t flags, + size_t *result_count); + +static ossl_inline ossl_unused BIO_POLL_DESCRIPTOR +SSL_as_poll_descriptor(SSL *s) +{ + BIO_POLL_DESCRIPTOR d; + + d.type = BIO_POLL_DESCRIPTOR_TYPE_SSL; + d.value.ssl = s; + return d; +} + # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define SSL_cache_hit(s) SSL_session_reused(s) # endif @@ -2593,6 +2882,51 @@ void SSL_set_allow_early_data_cb(SSL *s, const char *OSSL_default_cipher_list(void); const char *OSSL_default_ciphersuites(void); +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + +/* + * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used. + */ +# define OSSL_RECORD_PROTECTION_LEVEL_NONE 0 +# define OSSL_RECORD_PROTECTION_LEVEL_EARLY 1 +# define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE 2 +# define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3 + +int SSL_set_quic_tls_cbs(SSL *s, const OSSL_DISPATCH *qtdis, void *arg); +int SSL_set_quic_tls_transport_params(SSL *s, + const unsigned char *params, + size_t params_len); + +int SSL_set_quic_tls_early_data_enabled(SSL *s, int enabled); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/x509.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/x509.h index 0f2353c821aa9b..5e9c548c48d65b 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/x509.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/x509.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/x509.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -40,6 +40,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -162,16 +165,24 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) # define X509_FILETYPE_ASN1 2 # define X509_FILETYPE_DEFAULT 3 -# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 -# define X509v3_KU_NON_REPUDIATION 0x0040 -# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 -# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 -# define X509v3_KU_KEY_AGREEMENT 0x0008 -# define X509v3_KU_KEY_CERT_SIGN 0x0004 -# define X509v3_KU_CRL_SIGN 0x0002 -# define X509v3_KU_ENCIPHER_ONLY 0x0001 -# define X509v3_KU_DECIPHER_ONLY 0x8000 -# define X509v3_KU_UNDEF 0xffff +/*- + * : + * The KeyUsage BITSTRING is treated as a little-endian integer, hence bit `0` + * is 0x80, while bit `7` is 0x01 (the LSB of the integer value), bit `8` is + * then the MSB of the second octet, or 0x8000. + */ +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 /* (0) */ +# define X509v3_KU_NON_REPUDIATION 0x0040 /* (1) */ +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 /* (2) */ +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 /* (3) */ +# define X509v3_KU_KEY_AGREEMENT 0x0008 /* (4) */ +# define X509v3_KU_KEY_CERT_SIGN 0x0004 /* (5) */ +# define X509v3_KU_CRL_SIGN 0x0002 /* (6) */ +# define X509v3_KU_ENCIPHER_ONLY 0x0001 /* (7) */ +# define X509v3_KU_DECIPHER_ONLY 0x8000 /* (8) */ +# ifndef OPENSSL_NO_DEPRECATED_3_4 +# define X509v3_KU_UNDEF 0xffff /* vestigial, not used */ +# endif struct X509_algor_st { ASN1_OBJECT *algorithm; @@ -462,7 +473,12 @@ typedef struct PBKDF2PARAM_st { X509_ALGOR *prf; } PBKDF2PARAM; -#ifndef OPENSSL_NO_SCRYPT +typedef struct { + X509_ALGOR *keyDerivationFunc; + X509_ALGOR *messageAuthScheme; +} PBMAC1PARAM; + +# ifndef OPENSSL_NO_SCRYPT typedef struct SCRYPT_PARAMS_st { ASN1_OCTET_STRING *salt; ASN1_INTEGER *costParameter; @@ -470,7 +486,7 @@ typedef struct SCRYPT_PARAMS_st { ASN1_INTEGER *parallelizationParameter; ASN1_INTEGER *keyLength; } SCRYPT_PARAMS; -#endif +# endif #ifdef __cplusplus } @@ -603,6 +619,8 @@ EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); # endif @@ -651,6 +669,8 @@ EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); DECLARE_ASN1_DUP_FUNCTION(X509) @@ -884,12 +904,12 @@ int X509_REQ_get_signature_nid(const X509_REQ *req); int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); -EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); int X509_REQ_extension_nid(int nid); int *X509_REQ_get_extension_nids(void); void X509_REQ_set_extension_nids(int *nids); -STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(OSSL_FUTURE_CONST X509_REQ *req); int X509_REQ_add_extensions_nid(X509_REQ *req, const STACK_OF(X509_EXTENSION) *exts, int nid); int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); @@ -950,13 +970,14 @@ X509_REVOKED_get0_extensions(const X509_REVOKED *r); X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); -int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); -int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey); +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); int X509_chain_check_suiteb(int *perror_depth, X509 *x, STACK_OF(X509) *chain, unsigned long flags); int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); @@ -1077,6 +1098,8 @@ X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, X509_EXTENSION *ex, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_extensions(STACK_OF(X509_EXTENSION) **target, + const STACK_OF(X509_EXTENSION) *exts); int X509_get_ext_count(const X509 *x); int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); @@ -1198,9 +1221,10 @@ X509 *X509_find_by_subject(STACK_OF(X509) *sk, const X509_NAME *name); DECLARE_ASN1_FUNCTIONS(PBEPARAM) DECLARE_ASN1_FUNCTIONS(PBE2PARAM) DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) -#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(PBMAC1PARAM) +# ifndef OPENSSL_NO_SCRYPT DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) -#endif +# endif int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, const unsigned char *salt, int saltlen); @@ -1237,6 +1261,7 @@ X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, int prf_nid, int keylen, OSSL_LIB_CTX *libctx); +PBKDF2PARAM *PBMAC1_get1_pbkdf2_param(const X509_ALGOR *macalg); /* PKCS#8 utilities */ DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) @@ -1262,6 +1287,8 @@ int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len); +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, int ptype, void *pval, unsigned char *penc, int penclen); diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/x509_acert.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/x509_acert.h new file mode 100644 index 00000000000000..efae82c8f6b635 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/x509_acert.h @@ -0,0 +1,294 @@ +/* + * WARNING: do not edit! + * Generated by makefile from include/openssl/x509_acert.h.in + * + * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_X509_ACERT_H +# define OPENSSL_X509_ACERT_H +# pragma once + +# include +# include +# include + +typedef struct X509_acert_st X509_ACERT; +typedef struct X509_acert_info_st X509_ACERT_INFO; +typedef struct ossl_object_digest_info_st OSSL_OBJECT_DIGEST_INFO; +typedef struct ossl_issuer_serial_st OSSL_ISSUER_SERIAL; +typedef struct X509_acert_issuer_v2form_st X509_ACERT_ISSUER_V2FORM; + +DECLARE_ASN1_FUNCTIONS(X509_ACERT) +DECLARE_ASN1_DUP_FUNCTION(X509_ACERT) +DECLARE_ASN1_ITEM(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_OBJECT_DIGEST_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_ISSUER_SERIAL) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_ISSUER_V2FORM) + +# ifndef OPENSSL_NO_STDIO +X509_ACERT *d2i_X509_ACERT_fp(FILE *fp, X509_ACERT **acert); +int i2d_X509_ACERT_fp(FILE *fp, const X509_ACERT *acert); +# endif + +DECLARE_PEM_rw(X509_ACERT, X509_ACERT) + +X509_ACERT *d2i_X509_ACERT_bio(BIO *bp, X509_ACERT **acert); +int i2d_X509_ACERT_bio(BIO *bp, const X509_ACERT *acert); + +int X509_ACERT_sign(X509_ACERT *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_ACERT_sign_ctx(X509_ACERT *x, EVP_MD_CTX *ctx); +int X509_ACERT_verify(X509_ACERT *a, EVP_PKEY *r); + +# define X509_ACERT_VERSION_2 1 + +const GENERAL_NAMES *X509_ACERT_get0_holder_entityName(const X509_ACERT *x); +const OSSL_ISSUER_SERIAL *X509_ACERT_get0_holder_baseCertId(const X509_ACERT *x); +const OSSL_OBJECT_DIGEST_INFO * X509_ACERT_get0_holder_digest(const X509_ACERT *x); +const X509_NAME *X509_ACERT_get0_issuerName(const X509_ACERT *x); +long X509_ACERT_get_version(const X509_ACERT *x); +void X509_ACERT_get0_signature(const X509_ACERT *x, + const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_ACERT_get_signature_nid(const X509_ACERT *x); +const X509_ALGOR *X509_ACERT_get0_info_sigalg(const X509_ACERT *x); +const ASN1_INTEGER *X509_ACERT_get0_serialNumber(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notBefore(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notAfter(const X509_ACERT *x); +const ASN1_BIT_STRING *X509_ACERT_get0_issuerUID(const X509_ACERT *x); + +int X509_ACERT_print(BIO *bp, X509_ACERT *x); +int X509_ACERT_print_ex(BIO *bp, X509_ACERT *x, unsigned long nmflags, + unsigned long cflag); + +int X509_ACERT_get_attr_count(const X509_ACERT *x); +int X509_ACERT_get_attr_by_NID(const X509_ACERT *x, int nid, int lastpos); +int X509_ACERT_get_attr_by_OBJ(const X509_ACERT *x, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_ACERT_get_attr(const X509_ACERT *x, int loc); +X509_ATTRIBUTE *X509_ACERT_delete_attr(X509_ACERT *x, int loc); + +void *X509_ACERT_get_ext_d2i(const X509_ACERT *x, int nid, int *crit, int *idx); +int X509_ACERT_add1_ext_i2d(X509_ACERT *x, int nid, void *value, int crit, + unsigned long flags); +const STACK_OF(X509_EXTENSION) *X509_ACERT_get0_extensions(const X509_ACERT *x); + +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY 0 +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY_CERT 1 +# define OSSL_OBJECT_DIGEST_INFO_OTHER 2 /* must not be used in RFC 5755 profile */ +int X509_ACERT_set_version(X509_ACERT *x, long version); +void X509_ACERT_set0_holder_entityName(X509_ACERT *x, GENERAL_NAMES *name); +void X509_ACERT_set0_holder_baseCertId(X509_ACERT *x, OSSL_ISSUER_SERIAL *isss); +void X509_ACERT_set0_holder_digest(X509_ACERT *x, + OSSL_OBJECT_DIGEST_INFO *dinfo); + +int X509_ACERT_add1_attr(X509_ACERT *x, X509_ATTRIBUTE *attr); +int X509_ACERT_add1_attr_by_OBJ(X509_ACERT *x, const ASN1_OBJECT *obj, + int type, const void *bytes, int len); +int X509_ACERT_add1_attr_by_NID(X509_ACERT *x, int nid, int type, + const void *bytes, int len); +int X509_ACERT_add1_attr_by_txt(X509_ACERT *x, const char *attrname, int type, + const unsigned char *bytes, int len); +int X509_ACERT_add_attr_nconf(CONF *conf, const char *section, + X509_ACERT *acert); + +int X509_ACERT_set1_issuerName(X509_ACERT *x, const X509_NAME *name); +int X509_ACERT_set1_serialNumber(X509_ACERT *x, const ASN1_INTEGER *serial); +int X509_ACERT_set1_notBefore(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); +int X509_ACERT_set1_notAfter(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); + +void OSSL_OBJECT_DIGEST_INFO_get0_digest(const OSSL_OBJECT_DIGEST_INFO *o, + int *digestedObjectType, + const X509_ALGOR **digestAlgorithm, + const ASN1_BIT_STRING **digest); + +int OSSL_OBJECT_DIGEST_INFO_set1_digest(OSSL_OBJECT_DIGEST_INFO *o, + int digestedObjectType, + X509_ALGOR *digestAlgorithm, + ASN1_BIT_STRING *digest); + +const X509_NAME *OSSL_ISSUER_SERIAL_get0_issuer(const OSSL_ISSUER_SERIAL *isss); +const ASN1_INTEGER *OSSL_ISSUER_SERIAL_get0_serial(const OSSL_ISSUER_SERIAL *isss); +const ASN1_BIT_STRING *OSSL_ISSUER_SERIAL_get0_issuerUID(const OSSL_ISSUER_SERIAL *isss); + +int OSSL_ISSUER_SERIAL_set1_issuer(OSSL_ISSUER_SERIAL *isss, + const X509_NAME *issuer); +int OSSL_ISSUER_SERIAL_set1_serial(OSSL_ISSUER_SERIAL *isss, + const ASN1_INTEGER *serial); +int OSSL_ISSUER_SERIAL_set1_issuerUID(OSSL_ISSUER_SERIAL *isss, + const ASN1_BIT_STRING *uid); + +# define OSSL_IETFAS_OCTETS 0 +# define OSSL_IETFAS_OID 1 +# define OSSL_IETFAS_STRING 2 + +typedef struct OSSL_IETF_ATTR_SYNTAX_VALUE_st OSSL_IETF_ATTR_SYNTAX_VALUE; +typedef struct OSSL_IETF_ATTR_SYNTAX_st OSSL_IETF_ATTR_SYNTAX; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_value(sk, idx) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new(cmp) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_null() ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (n)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete(sk, i) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (i))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete_ptr(sk, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_pop(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_shift(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_shift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk),ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), (idx)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set(sk, idx, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_set(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), pnum) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_dup(sk) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_copyfunc_type(copyfunc), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set_cmp_func(sk, cmp) ((sk_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) + + +DECLARE_ASN1_ITEM(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX) + +const GENERAL_NAMES * +OSSL_IETF_ATTR_SYNTAX_get0_policyAuthority(const OSSL_IETF_ATTR_SYNTAX *a); +void OSSL_IETF_ATTR_SYNTAX_set0_policyAuthority(OSSL_IETF_ATTR_SYNTAX *a, + GENERAL_NAMES *names); + +int OSSL_IETF_ATTR_SYNTAX_get_value_num(const OSSL_IETF_ATTR_SYNTAX *a); +void *OSSL_IETF_ATTR_SYNTAX_get0_value(const OSSL_IETF_ATTR_SYNTAX *a, + int ind, int *type); +int OSSL_IETF_ATTR_SYNTAX_add1_value(OSSL_IETF_ATTR_SYNTAX *a, int type, + void *data); +int OSSL_IETF_ATTR_SYNTAX_print(BIO *bp, OSSL_IETF_ATTR_SYNTAX *a, int indent); + +struct TARGET_CERT_st { + OSSL_ISSUER_SERIAL *targetCertificate; + GENERAL_NAME *targetName; + OSSL_OBJECT_DIGEST_INFO *certDigestInfo; +}; + +typedef struct TARGET_CERT_st OSSL_TARGET_CERT; + +# define OSSL_TGT_TARGET_NAME 0 +# define OSSL_TGT_TARGET_GROUP 1 +# define OSSL_TGT_TARGET_CERT 2 + +typedef struct TARGET_st { + int type; + union { + GENERAL_NAME *targetName; + GENERAL_NAME *targetGroup; + OSSL_TARGET_CERT *targetCert; + } choice; +} OSSL_TARGET; + +typedef STACK_OF(OSSL_TARGET) OSSL_TARGETS; +typedef STACK_OF(OSSL_TARGETS) OSSL_TARGETING_INFORMATION; + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGET, OSSL_TARGET, OSSL_TARGET) +#define sk_OSSL_TARGET_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_value(sk, idx) ((OSSL_TARGET *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGET_sk_type(sk), (idx))) +#define sk_OSSL_TARGET_new(cmp) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new(ossl_check_OSSL_TARGET_compfunc_type(cmp))) +#define sk_OSSL_TARGET_new_null() ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGET_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGET_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGET_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGET_sk_type(sk), (n)) +#define sk_OSSL_TARGET_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_delete(sk, i) ((OSSL_TARGET *)OPENSSL_sk_delete(ossl_check_OSSL_TARGET_sk_type(sk), (i))) +#define sk_OSSL_TARGET_delete_ptr(sk, ptr) ((OSSL_TARGET *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_pop(sk) ((OSSL_TARGET *)OPENSSL_sk_pop(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_shift(sk) ((OSSL_TARGET *)OPENSSL_sk_shift(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGET_sk_type(sk),ossl_check_OSSL_TARGET_freefunc_type(freefunc)) +#define sk_OSSL_TARGET_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), (idx)) +#define sk_OSSL_TARGET_set(sk, idx, ptr) ((OSSL_TARGET *)OPENSSL_sk_set(ossl_check_OSSL_TARGET_sk_type(sk), (idx), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), pnum) +#define sk_OSSL_TARGET_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_dup(sk) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_copyfunc_type(copyfunc), ossl_check_OSSL_TARGET_freefunc_type(freefunc))) +#define sk_OSSL_TARGET_set_cmp_func(sk, cmp) ((sk_OSSL_TARGET_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGETS, OSSL_TARGETS, OSSL_TARGETS) +#define sk_OSSL_TARGETS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_value(sk, idx) ((OSSL_TARGETS *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGETS_sk_type(sk), (idx))) +#define sk_OSSL_TARGETS_new(cmp) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new(ossl_check_OSSL_TARGETS_compfunc_type(cmp))) +#define sk_OSSL_TARGETS_new_null() ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGETS_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGETS_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGETS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGETS_sk_type(sk), (n)) +#define sk_OSSL_TARGETS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_delete(sk, i) ((OSSL_TARGETS *)OPENSSL_sk_delete(ossl_check_OSSL_TARGETS_sk_type(sk), (i))) +#define sk_OSSL_TARGETS_delete_ptr(sk, ptr) ((OSSL_TARGETS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_pop(sk) ((OSSL_TARGETS *)OPENSSL_sk_pop(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_shift(sk) ((OSSL_TARGETS *)OPENSSL_sk_shift(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGETS_sk_type(sk),ossl_check_OSSL_TARGETS_freefunc_type(freefunc)) +#define sk_OSSL_TARGETS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), (idx)) +#define sk_OSSL_TARGETS_set(sk, idx, ptr) ((OSSL_TARGETS *)OPENSSL_sk_set(ossl_check_OSSL_TARGETS_sk_type(sk), (idx), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), pnum) +#define sk_OSSL_TARGETS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_dup(sk) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_copyfunc_type(copyfunc), ossl_check_OSSL_TARGETS_freefunc_type(freefunc))) +#define sk_OSSL_TARGETS_set_cmp_func(sk, cmp) ((sk_OSSL_TARGETS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_compfunc_type(cmp))) + + +DECLARE_ASN1_FUNCTIONS(OSSL_TARGET) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETS) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETING_INFORMATION) + +typedef STACK_OF(OSSL_ISSUER_SERIAL) OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL) +#define sk_OSSL_ISSUER_SERIAL_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_value(sk, idx) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_value(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), (idx))) +#define sk_OSSL_ISSUER_SERIAL_new(cmp) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) +#define sk_OSSL_ISSUER_SERIAL_new_null() ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ISSUER_SERIAL_new_reserve(cmp, n) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp), (n))) +#define sk_OSSL_ISSUER_SERIAL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (n)) +#define sk_OSSL_ISSUER_SERIAL_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_delete(sk, i) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (i))) +#define sk_OSSL_ISSUER_SERIAL_delete_ptr(sk, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_pop(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_pop(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_shift(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_shift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk),ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc)) +#define sk_OSSL_ISSUER_SERIAL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), (idx)) +#define sk_OSSL_ISSUER_SERIAL_set(sk, idx, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_set(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (idx), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), pnum) +#define sk_OSSL_ISSUER_SERIAL_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_dup(sk) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_copyfunc_type(copyfunc), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc))) +#define sk_OSSL_ISSUER_SERIAL_set_cmp_func(sk, cmp) ((sk_OSSL_ISSUER_SERIAL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) + + +#endif diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/x509_vfy.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/x509_vfy.h index f571187265cfc9..f08a134b17b7db 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/x509_vfy.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/x509_vfy.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/x509_vfy.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -411,6 +411,7 @@ X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ # define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 # define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 # define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +# define X509_V_ERR_RPK_UNTRUSTED 95 /* Certificate verify flags */ # ifndef OPENSSL_NO_DEPRECATED_1_1_0 @@ -491,71 +492,72 @@ int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); X509_STORE *X509_STORE_new(void); -void X509_STORE_free(X509_STORE *v); -int X509_STORE_lock(X509_STORE *ctx); -int X509_STORE_unlock(X509_STORE *ctx); -int X509_STORE_up_ref(X509_STORE *v); -STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *v); -STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *st); -STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get1_objects(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, const X509_NAME *nm); STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, const X509_NAME *nm); -int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); -int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); -int X509_STORE_set_trust(X509_STORE *ctx, int trust); -int X509_STORE_set1_param(X509_STORE *ctx, const X509_VERIFY_PARAM *pm); -X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *ctx); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); -void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); #define X509_STORE_set_verify_func(ctx, func) \ X509_STORE_set_verify((ctx),(func)) void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, X509_STORE_CTX_verify_fn verify); -X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *ctx); -void X509_STORE_set_verify_cb(X509_STORE *ctx, +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, X509_STORE_CTX_verify_cb verify_cb); # define X509_STORE_set_verify_cb_func(ctx,func) \ X509_STORE_set_verify_cb((ctx),(func)) -X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *ctx); -void X509_STORE_set_get_issuer(X509_STORE *ctx, +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, X509_STORE_CTX_get_issuer_fn get_issuer); -X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *ctx); -void X509_STORE_set_check_issued(X509_STORE *ctx, +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, X509_STORE_CTX_check_issued_fn check_issued); -X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *ctx); -void X509_STORE_set_check_revocation(X509_STORE *ctx, +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, X509_STORE_CTX_check_revocation_fn check_revocation); X509_STORE_CTX_check_revocation_fn - X509_STORE_get_check_revocation(const X509_STORE *ctx); -void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, X509_STORE_CTX_get_crl_fn get_crl); -X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *ctx); -void X509_STORE_set_check_crl(X509_STORE *ctx, +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, X509_STORE_CTX_check_crl_fn check_crl); -X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *ctx); -void X509_STORE_set_cert_crl(X509_STORE *ctx, +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, X509_STORE_CTX_cert_crl_fn cert_crl); -X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *ctx); -void X509_STORE_set_check_policy(X509_STORE *ctx, +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, X509_STORE_CTX_check_policy_fn check_policy); -X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *ctx); -void X509_STORE_set_lookup_certs(X509_STORE *ctx, +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, X509_STORE_CTX_lookup_certs_fn lookup_certs); -X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *ctx); -void X509_STORE_set_lookup_crls(X509_STORE *ctx, +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, X509_STORE_CTX_lookup_crls_fn lookup_crls); #define X509_STORE_set_lookup_crls_cb(ctx, func) \ X509_STORE_set_lookup_crls((ctx), (func)) -X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *ctx); -void X509_STORE_set_cleanup(X509_STORE *ctx, +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, X509_STORE_CTX_cleanup_fn cleanup); -X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); #define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) -int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); -void *X509_STORE_get_ex_data(const X509_STORE *ctx, int idx); +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); X509_STORE_CTX *X509_STORE_CTX_new(void); @@ -565,11 +567,14 @@ int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); void X509_STORE_CTX_free(X509_STORE_CTX *ctx); int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY* rpk); void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, @@ -579,6 +584,8 @@ X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); @@ -600,7 +607,7 @@ X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); # define X509_STORE_get1_crl X509_STORE_CTX_get1_crls #endif -X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); X509_LOOKUP_METHOD *X509_LOOKUP_file(void); X509_LOOKUP_METHOD *X509_LOOKUP_store(void); @@ -685,8 +692,8 @@ X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( const X509_LOOKUP_METHOD *method); -int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); -int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, @@ -730,23 +737,21 @@ void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); -int X509_STORE_load_file(X509_STORE *ctx, const char *file); -int X509_STORE_load_path(X509_STORE *ctx, const char *path); -int X509_STORE_load_store(X509_STORE *ctx, const char *store); -int X509_STORE_load_locations(X509_STORE *ctx, - const char *file, - const char *dir); -int X509_STORE_set_default_paths(X509_STORE *ctx); +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); -int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file, +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_store_ex(X509_STORE *ctx, const char *store, +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file, - const char *dir, OSSL_LIB_CTX *libctx, - const char *propq); -int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OSSL_LIB_CTX *libctx, - const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); #define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) @@ -764,6 +769,7 @@ X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); @@ -773,6 +779,8 @@ int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); @@ -804,6 +812,7 @@ int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, unsigned long flags); unsigned long X509_VERIFY_PARAM_get_flags(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_get_purpose(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/x509v3.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/x509v3.h index ed08a546f9813d..362ce3fb4387f7 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/x509v3.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/x509v3.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/x509v3.h.in * - * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -146,6 +149,11 @@ typedef struct BASIC_CONSTRAINTS_st { ASN1_INTEGER *pathlen; } BASIC_CONSTRAINTS; +typedef struct OSSL_BASIC_ATTR_CONSTRAINTS_st { + int authority; + ASN1_INTEGER *pathlen; +} OSSL_BASIC_ATTR_CONSTRAINTS; + typedef struct PKEY_USAGE_PERIOD_st { ASN1_GENERALIZEDTIME *notBefore; ASN1_GENERALIZEDTIME *notAfter; @@ -198,6 +206,8 @@ typedef struct ACCESS_DESCRIPTION_st { GENERAL_NAME *location; } ACCESS_DESCRIPTION; +int GENERAL_NAME_set1_X509_NAME(GENERAL_NAME **tgt, const X509_NAME *src); + SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) #define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) #define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) @@ -294,6 +304,7 @@ typedef struct DIST_POINT_NAME_st { /* If relativename then this contains the full distribution point name */ X509_NAME *dpname; } DIST_POINT_NAME; +DECLARE_ASN1_DUP_FUNCTION(DIST_POINT_NAME) /* All existing reasons */ # define CRLDP_ALL_REASONS 0x807f @@ -659,15 +670,16 @@ struct ISSUING_DIST_POINT_st { # define EXFLAG_SAN_CRITICAL 0x80000 # define EXFLAG_NO_FINGERPRINT 0x100000 -# define KU_DIGITAL_SIGNATURE 0x0080 -# define KU_NON_REPUDIATION 0x0040 -# define KU_KEY_ENCIPHERMENT 0x0020 -# define KU_DATA_ENCIPHERMENT 0x0010 -# define KU_KEY_AGREEMENT 0x0008 -# define KU_KEY_CERT_SIGN 0x0004 -# define KU_CRL_SIGN 0x0002 -# define KU_ENCIPHER_ONLY 0x0001 -# define KU_DECIPHER_ONLY 0x8000 +/* https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3 */ +# define KU_DIGITAL_SIGNATURE X509v3_KU_DIGITAL_SIGNATURE +# define KU_NON_REPUDIATION X509v3_KU_NON_REPUDIATION +# define KU_KEY_ENCIPHERMENT X509v3_KU_KEY_ENCIPHERMENT +# define KU_DATA_ENCIPHERMENT X509v3_KU_DATA_ENCIPHERMENT +# define KU_KEY_AGREEMENT X509v3_KU_KEY_AGREEMENT +# define KU_KEY_CERT_SIGN X509v3_KU_KEY_CERT_SIGN +# define KU_CRL_SIGN X509v3_KU_CRL_SIGN +# define KU_ENCIPHER_ONLY X509v3_KU_ENCIPHER_ONLY +# define KU_DECIPHER_ONLY X509v3_KU_DECIPHER_ONLY # define NS_SSL_CLIENT 0x80 # define NS_SSL_SERVER 0x40 @@ -729,7 +741,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) #define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) - +# define X509_PURPOSE_DEFAULT_ANY 0 # define X509_PURPOSE_SSL_CLIENT 1 # define X509_PURPOSE_SSL_SERVER 2 # define X509_PURPOSE_NS_SSL_SERVER 3 @@ -739,9 +751,10 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509_PURPOSE_ANY 7 # define X509_PURPOSE_OCSP_HELPER 8 # define X509_PURPOSE_TIMESTAMP_SIGN 9 +# define X509_PURPOSE_CODE_SIGN 10 # define X509_PURPOSE_MIN 1 -# define X509_PURPOSE_MAX 9 +# define X509_PURPOSE_MAX 10 /* Flags for X509V3_EXT_print() */ @@ -767,6 +780,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509V3_ADD_SILENT 0x10 DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) +DECLARE_ASN1_FUNCTIONS(OSSL_BASIC_ATTR_CONSTRAINTS) DECLARE_ASN1_FUNCTIONS(SXNET) DECLARE_ASN1_FUNCTIONS(SXNETID) @@ -976,7 +990,6 @@ int X509V3_extensions_print(BIO *out, const char *title, int X509_check_ca(X509 *x); int X509_check_purpose(X509 *x, int id, int ca); int X509_supported_extension(X509_EXTENSION *ex); -int X509_PURPOSE_set(int *p, int purpose); int X509_check_issued(X509 *issuer, X509 *subject); int X509_check_akid(const X509 *issuer, const AUTHORITY_KEYID *akid); void X509_set_proxy_flag(X509 *x); @@ -992,22 +1005,26 @@ const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); int X509_PURPOSE_get_count(void); -X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_unused_id(OSSL_LIB_CTX *libctx); int X509_PURPOSE_get_by_sname(const char *sname); int X509_PURPOSE_get_by_id(int id); int X509_PURPOSE_add(int id, int trust, int flags, int (*ck) (const X509_PURPOSE *, const X509 *, int), const char *name, const char *sname, void *arg); +void X509_PURPOSE_cleanup(void); + +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_id(const X509_PURPOSE *); char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); -void X509_PURPOSE_cleanup(void); -int X509_PURPOSE_get_id(const X509_PURPOSE *); +int X509_PURPOSE_set(int *p, int purpose); STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); + /* Flags for X509_check_* functions */ /* @@ -1444,6 +1461,507 @@ const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( void PROFESSION_INFO_set0_registrationNumber( PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); +int OSSL_GENERAL_NAMES_print(BIO *out, GENERAL_NAMES *gens, int indent); + +typedef STACK_OF(X509_ATTRIBUTE) OSSL_ATTRIBUTES_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTES_SYNTAX) + +typedef STACK_OF(USERNOTICE) OSSL_USER_NOTICE_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_USER_NOTICE_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(USERNOTICE, USERNOTICE, USERNOTICE) +#define sk_USERNOTICE_num(sk) OPENSSL_sk_num(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_value(sk, idx) ((USERNOTICE *)OPENSSL_sk_value(ossl_check_const_USERNOTICE_sk_type(sk), (idx))) +#define sk_USERNOTICE_new(cmp) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new(ossl_check_USERNOTICE_compfunc_type(cmp))) +#define sk_USERNOTICE_new_null() ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_null()) +#define sk_USERNOTICE_new_reserve(cmp, n) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_reserve(ossl_check_USERNOTICE_compfunc_type(cmp), (n))) +#define sk_USERNOTICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_USERNOTICE_sk_type(sk), (n)) +#define sk_USERNOTICE_free(sk) OPENSSL_sk_free(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_zero(sk) OPENSSL_sk_zero(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_delete(sk, i) ((USERNOTICE *)OPENSSL_sk_delete(ossl_check_USERNOTICE_sk_type(sk), (i))) +#define sk_USERNOTICE_delete_ptr(sk, ptr) ((USERNOTICE *)OPENSSL_sk_delete_ptr(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_pop(sk) ((USERNOTICE *)OPENSSL_sk_pop(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_shift(sk) ((USERNOTICE *)OPENSSL_sk_shift(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_USERNOTICE_sk_type(sk),ossl_check_USERNOTICE_freefunc_type(freefunc)) +#define sk_USERNOTICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), (idx)) +#define sk_USERNOTICE_set(sk, idx, ptr) ((USERNOTICE *)OPENSSL_sk_set(ossl_check_USERNOTICE_sk_type(sk), (idx), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), pnum) +#define sk_USERNOTICE_sort(sk) OPENSSL_sk_sort(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_dup(sk) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_dup(ossl_check_const_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_deep_copy(ossl_check_const_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_copyfunc_type(copyfunc), ossl_check_USERNOTICE_freefunc_type(freefunc))) +#define sk_USERNOTICE_set_cmp_func(sk, cmp) ((sk_USERNOTICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_compfunc_type(cmp))) + + +typedef struct OSSL_ROLE_SPEC_CERT_ID_st { + GENERAL_NAME *roleName; + GENERAL_NAME *roleCertIssuer; + ASN1_INTEGER *roleCertSerialNumber; + GENERAL_NAMES *roleCertLocator; +} OSSL_ROLE_SPEC_CERT_ID; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID) +#define sk_OSSL_ROLE_SPEC_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_value(sk, idx) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_value(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new(cmp) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_null() ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_reserve(cmp, n) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp), (n))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (n)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete(sk, i) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (i))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete_ptr(sk, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_pop(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_shift(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_shift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk),ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), (idx)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set(sk, idx, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_set(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), pnum) +#define sk_OSSL_ROLE_SPEC_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_dup(sk) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_copyfunc_type(copyfunc), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set_cmp_func(sk, cmp) ((sk_OSSL_ROLE_SPEC_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) + + +typedef STACK_OF(OSSL_ROLE_SPEC_CERT_ID) OSSL_ROLE_SPEC_CERT_ID_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID_SYNTAX) +typedef struct OSSL_HASH_st { + X509_ALGOR *algorithmIdentifier; + ASN1_BIT_STRING *hashValue; +} OSSL_HASH; + +typedef struct OSSL_INFO_SYNTAX_POINTER_st { + GENERAL_NAMES *name; + OSSL_HASH *hash; +} OSSL_INFO_SYNTAX_POINTER; + +# define OSSL_INFO_SYNTAX_TYPE_CONTENT 0 +# define OSSL_INFO_SYNTAX_TYPE_POINTER 1 + +typedef struct OSSL_INFO_SYNTAX_st { + int type; + union { + ASN1_STRING *content; + OSSL_INFO_SYNTAX_POINTER *pointer; + } choice; +} OSSL_INFO_SYNTAX; + +typedef struct OSSL_PRIVILEGE_POLICY_ID_st { + ASN1_OBJECT *privilegePolicy; + OSSL_INFO_SYNTAX *privPolSyntax; +} OSSL_PRIVILEGE_POLICY_ID; + +typedef struct OSSL_ATTRIBUTE_DESCRIPTOR_st { + ASN1_OBJECT *identifier; + ASN1_STRING *attributeSyntax; + ASN1_UTF8STRING *name; + ASN1_UTF8STRING *description; + OSSL_PRIVILEGE_POLICY_ID *dominationRule; +} OSSL_ATTRIBUTE_DESCRIPTOR; + +DECLARE_ASN1_FUNCTIONS(OSSL_HASH) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX_POINTER) +DECLARE_ASN1_FUNCTIONS(OSSL_PRIVILEGE_POLICY_ID) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_DESCRIPTOR) + +typedef struct OSSL_TIME_SPEC_ABSOLUTE_st { + ASN1_GENERALIZEDTIME *startTime; + ASN1_GENERALIZEDTIME *endTime; +} OSSL_TIME_SPEC_ABSOLUTE; + +typedef struct OSSL_DAY_TIME_st { + ASN1_INTEGER *hour; + ASN1_INTEGER *minute; + ASN1_INTEGER *second; +} OSSL_DAY_TIME; + +typedef struct OSSL_DAY_TIME_BAND_st { + OSSL_DAY_TIME *startDayTime; + OSSL_DAY_TIME *endDayTime; +} OSSL_DAY_TIME_BAND; + +# define OSSL_NAMED_DAY_TYPE_INT 0 +# define OSSL_NAMED_DAY_TYPE_BIT 1 +# define OSSL_NAMED_DAY_INT_SUN 1 +# define OSSL_NAMED_DAY_INT_MON 2 +# define OSSL_NAMED_DAY_INT_TUE 3 +# define OSSL_NAMED_DAY_INT_WED 4 +# define OSSL_NAMED_DAY_INT_THU 5 +# define OSSL_NAMED_DAY_INT_FRI 6 +# define OSSL_NAMED_DAY_INT_SAT 7 +# define OSSL_NAMED_DAY_BIT_SUN 0 +# define OSSL_NAMED_DAY_BIT_MON 1 +# define OSSL_NAMED_DAY_BIT_TUE 2 +# define OSSL_NAMED_DAY_BIT_WED 3 +# define OSSL_NAMED_DAY_BIT_THU 4 +# define OSSL_NAMED_DAY_BIT_FRI 5 +# define OSSL_NAMED_DAY_BIT_SAT 6 + +typedef struct OSSL_NAMED_DAY_st { + int type; + union { + ASN1_INTEGER *intNamedDays; + ASN1_BIT_STRING *bitNamedDays; + } choice; +} OSSL_NAMED_DAY; + +# define OSSL_TIME_SPEC_X_DAY_OF_FIRST 0 +# define OSSL_TIME_SPEC_X_DAY_OF_SECOND 1 +# define OSSL_TIME_SPEC_X_DAY_OF_THIRD 2 +# define OSSL_TIME_SPEC_X_DAY_OF_FOURTH 3 +# define OSSL_TIME_SPEC_X_DAY_OF_FIFTH 4 + +typedef struct OSSL_TIME_SPEC_X_DAY_OF_st { + int type; + union { + OSSL_NAMED_DAY *first; + OSSL_NAMED_DAY *second; + OSSL_NAMED_DAY *third; + OSSL_NAMED_DAY *fourth; + OSSL_NAMED_DAY *fifth; + } choice; +} OSSL_TIME_SPEC_X_DAY_OF; + +# define OSSL_TIME_SPEC_DAY_TYPE_INT 0 +# define OSSL_TIME_SPEC_DAY_TYPE_BIT 1 +# define OSSL_TIME_SPEC_DAY_TYPE_DAY_OF 2 +# define OSSL_TIME_SPEC_DAY_BIT_SUN 0 +# define OSSL_TIME_SPEC_DAY_BIT_MON 1 +# define OSSL_TIME_SPEC_DAY_BIT_TUE 2 +# define OSSL_TIME_SPEC_DAY_BIT_WED 3 +# define OSSL_TIME_SPEC_DAY_BIT_THU 4 +# define OSSL_TIME_SPEC_DAY_BIT_FRI 5 +# define OSSL_TIME_SPEC_DAY_BIT_SAT 6 +# define OSSL_TIME_SPEC_DAY_INT_SUN 1 +# define OSSL_TIME_SPEC_DAY_INT_MON 2 +# define OSSL_TIME_SPEC_DAY_INT_TUE 3 +# define OSSL_TIME_SPEC_DAY_INT_WED 4 +# define OSSL_TIME_SPEC_DAY_INT_THU 5 +# define OSSL_TIME_SPEC_DAY_INT_FRI 6 +# define OSSL_TIME_SPEC_DAY_INT_SAT 7 + +typedef struct OSSL_TIME_SPEC_DAY_st { + int type; + union { + STACK_OF(ASN1_INTEGER) *intDay; + ASN1_BIT_STRING *bitDay; + OSSL_TIME_SPEC_X_DAY_OF *dayOf; + } choice; +} OSSL_TIME_SPEC_DAY; + +# define OSSL_TIME_SPEC_WEEKS_TYPE_ALL 0 +# define OSSL_TIME_SPEC_WEEKS_TYPE_INT 1 +# define OSSL_TIME_SPEC_WEEKS_TYPE_BIT 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_1 0 +# define OSSL_TIME_SPEC_BIT_WEEKS_2 1 +# define OSSL_TIME_SPEC_BIT_WEEKS_3 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_4 3 +# define OSSL_TIME_SPEC_BIT_WEEKS_5 4 + +typedef struct OSSL_TIME_SPEC_WEEKS_st { + int type; + union { + ASN1_NULL *allWeeks; + STACK_OF(ASN1_INTEGER) *intWeek; + ASN1_BIT_STRING *bitWeek; + } choice; +} OSSL_TIME_SPEC_WEEKS; + +# define OSSL_TIME_SPEC_MONTH_TYPE_ALL 0 +# define OSSL_TIME_SPEC_MONTH_TYPE_INT 1 +# define OSSL_TIME_SPEC_MONTH_TYPE_BIT 2 +# define OSSL_TIME_SPEC_INT_MONTH_JAN 1 +# define OSSL_TIME_SPEC_INT_MONTH_FEB 2 +# define OSSL_TIME_SPEC_INT_MONTH_MAR 3 +# define OSSL_TIME_SPEC_INT_MONTH_APR 4 +# define OSSL_TIME_SPEC_INT_MONTH_MAY 5 +# define OSSL_TIME_SPEC_INT_MONTH_JUN 6 +# define OSSL_TIME_SPEC_INT_MONTH_JUL 7 +# define OSSL_TIME_SPEC_INT_MONTH_AUG 8 +# define OSSL_TIME_SPEC_INT_MONTH_SEP 9 +# define OSSL_TIME_SPEC_INT_MONTH_OCT 10 +# define OSSL_TIME_SPEC_INT_MONTH_NOV 11 +# define OSSL_TIME_SPEC_INT_MONTH_DEC 12 +# define OSSL_TIME_SPEC_BIT_MONTH_JAN 0 +# define OSSL_TIME_SPEC_BIT_MONTH_FEB 1 +# define OSSL_TIME_SPEC_BIT_MONTH_MAR 2 +# define OSSL_TIME_SPEC_BIT_MONTH_APR 3 +# define OSSL_TIME_SPEC_BIT_MONTH_MAY 4 +# define OSSL_TIME_SPEC_BIT_MONTH_JUN 5 +# define OSSL_TIME_SPEC_BIT_MONTH_JUL 6 +# define OSSL_TIME_SPEC_BIT_MONTH_AUG 7 +# define OSSL_TIME_SPEC_BIT_MONTH_SEP 8 +# define OSSL_TIME_SPEC_BIT_MONTH_OCT 9 +# define OSSL_TIME_SPEC_BIT_MONTH_NOV 10 +# define OSSL_TIME_SPEC_BIT_MONTH_DEC 11 + +typedef struct OSSL_TIME_SPEC_MONTH_st { + int type; + union { + ASN1_NULL *allMonths; + STACK_OF(ASN1_INTEGER) *intMonth; + ASN1_BIT_STRING *bitMonth; + } choice; +} OSSL_TIME_SPEC_MONTH; + +typedef struct OSSL_TIME_PERIOD_st { + STACK_OF(OSSL_DAY_TIME_BAND) *timesOfDay; + OSSL_TIME_SPEC_DAY *days; + OSSL_TIME_SPEC_WEEKS *weeks; + OSSL_TIME_SPEC_MONTH *months; + STACK_OF(ASN1_INTEGER) *years; +} OSSL_TIME_PERIOD; + +# define OSSL_TIME_SPEC_TIME_TYPE_ABSOLUTE 0 +# define OSSL_TIME_SPEC_TIME_TYPE_PERIODIC 1 + +typedef struct OSSL_TIME_SPEC_TIME_st { + int type; + union { + OSSL_TIME_SPEC_ABSOLUTE *absolute; + STACK_OF(OSSL_TIME_PERIOD) *periodic; + } choice; +} OSSL_TIME_SPEC_TIME; + +typedef struct OSSL_TIME_SPEC_st { + OSSL_TIME_SPEC_TIME *time; + ASN1_BOOLEAN notThisTime; + ASN1_INTEGER *timeZone; +} OSSL_TIME_SPEC; + +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME_BAND) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_WEEKS) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_MONTH) +DECLARE_ASN1_FUNCTIONS(OSSL_NAMED_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_X_DAY_OF) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_ABSOLUTE) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_PERIOD) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TIME_PERIOD, OSSL_TIME_PERIOD, OSSL_TIME_PERIOD) +#define sk_OSSL_TIME_PERIOD_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_value(sk, idx) ((OSSL_TIME_PERIOD *)OPENSSL_sk_value(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), (idx))) +#define sk_OSSL_TIME_PERIOD_new(cmp) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) +#define sk_OSSL_TIME_PERIOD_new_null() ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TIME_PERIOD_new_reserve(cmp, n) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp), (n))) +#define sk_OSSL_TIME_PERIOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (n)) +#define sk_OSSL_TIME_PERIOD_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_delete(sk, i) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (i))) +#define sk_OSSL_TIME_PERIOD_delete_ptr(sk, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_pop(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_pop(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_shift(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_shift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk),ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc)) +#define sk_OSSL_TIME_PERIOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), (idx)) +#define sk_OSSL_TIME_PERIOD_set(sk, idx, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_set(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (idx), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), pnum) +#define sk_OSSL_TIME_PERIOD_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_dup(sk) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_copyfunc_type(copyfunc), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc))) +#define sk_OSSL_TIME_PERIOD_set_cmp_func(sk, cmp) ((sk_OSSL_TIME_PERIOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND) +#define sk_OSSL_DAY_TIME_BAND_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_value(sk, idx) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_value(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), (idx))) +#define sk_OSSL_DAY_TIME_BAND_new(cmp) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) +#define sk_OSSL_DAY_TIME_BAND_new_null() ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_null()) +#define sk_OSSL_DAY_TIME_BAND_new_reserve(cmp, n) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp), (n))) +#define sk_OSSL_DAY_TIME_BAND_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (n)) +#define sk_OSSL_DAY_TIME_BAND_free(sk) OPENSSL_sk_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_delete(sk, i) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (i))) +#define sk_OSSL_DAY_TIME_BAND_delete_ptr(sk, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_pop(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_pop(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_shift(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_shift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk),ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc)) +#define sk_OSSL_DAY_TIME_BAND_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), (idx)) +#define sk_OSSL_DAY_TIME_BAND_set(sk, idx, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_set(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (idx), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), pnum) +#define sk_OSSL_DAY_TIME_BAND_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_dup(sk) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_dup(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_copyfunc_type(copyfunc), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc))) +#define sk_OSSL_DAY_TIME_BAND_set_cmp_func(sk, cmp) ((sk_OSSL_DAY_TIME_BAND_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) + + +/* Attribute Type and Value */ +typedef struct atav_st { + ASN1_OBJECT *type; + ASN1_TYPE *value; +} OSSL_ATAV; + +typedef struct ATTRIBUTE_TYPE_MAPPING_st { + ASN1_OBJECT *local; + ASN1_OBJECT *remote; +} OSSL_ATTRIBUTE_TYPE_MAPPING; + +typedef struct ATTRIBUTE_VALUE_MAPPING_st { + OSSL_ATAV *local; + OSSL_ATAV *remote; +} OSSL_ATTRIBUTE_VALUE_MAPPING; + +# define OSSL_ATTR_MAP_TYPE 0 +# define OSSL_ATTR_MAP_VALUE 1 + +typedef struct ATTRIBUTE_MAPPING_st { + int type; + union { + OSSL_ATTRIBUTE_TYPE_MAPPING *typeMappings; + OSSL_ATTRIBUTE_VALUE_MAPPING *typeValueMappings; + } choice; +} OSSL_ATTRIBUTE_MAPPING; + +typedef STACK_OF(OSSL_ATTRIBUTE_MAPPING) OSSL_ATTRIBUTE_MAPPINGS; +DECLARE_ASN1_FUNCTIONS(OSSL_ATAV) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_TYPE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_VALUE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPINGS) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING) +#define sk_OSSL_ATTRIBUTE_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_value(sk, idx) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_value(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new(cmp) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_null() ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_reserve(cmp, n) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp), (n))) +#define sk_OSSL_ATTRIBUTE_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (n)) +#define sk_OSSL_ATTRIBUTE_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete(sk, i) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (i))) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete_ptr(sk, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_pop(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_shift(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_shift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk),ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc)) +#define sk_OSSL_ATTRIBUTE_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), (idx)) +#define sk_OSSL_ATTRIBUTE_MAPPING_set(sk, idx, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_set(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), pnum) +#define sk_OSSL_ATTRIBUTE_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_dup(sk) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_copyfunc_type(copyfunc), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc))) +#define sk_OSSL_ATTRIBUTE_MAPPING_set_cmp_func(sk, cmp) ((sk_OSSL_ATTRIBUTE_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) + + +# define OSSL_AAA_ATTRIBUTE_TYPE 0 +# define OSSL_AAA_ATTRIBUTE_VALUES 1 + +typedef struct ALLOWED_ATTRIBUTES_CHOICE_st { + int type; + union { + ASN1_OBJECT *attributeType; + X509_ATTRIBUTE *attributeTypeandValues; + } choice; +} OSSL_ALLOWED_ATTRIBUTES_CHOICE; + +typedef struct ALLOWED_ATTRIBUTES_ITEM_st { + STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *attributes; + GENERAL_NAME *holderDomain; +} OSSL_ALLOWED_ATTRIBUTES_ITEM; + +typedef STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) OSSL_ALLOWED_ATTRIBUTES_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_CHOICE) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_ITEM) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) + + +typedef struct AA_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + int dp_reasons; + ASN1_BOOLEAN indirectCRL; + ASN1_BOOLEAN containsUserAttributeCerts; + ASN1_BOOLEAN containsAACerts; + ASN1_BOOLEAN containsSOAPublicKeyCerts; +} OSSL_AA_DIST_POINT; + +DECLARE_ASN1_FUNCTIONS(OSSL_AA_DIST_POINT) + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/progs.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/progs.h index be55f61503d405..1b62ec37dec130 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/progs.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/progs.h @@ -56,6 +56,7 @@ extern int s_client_main(int argc, char *argv[]); extern int s_server_main(int argc, char *argv[]); extern int s_time_main(int argc, char *argv[]); extern int sess_id_main(int argc, char *argv[]); +extern int skeyutl_main(int argc, char *argv[]); extern int smime_main(int argc, char *argv[]); extern int speed_main(int argc, char *argv[]); extern int spkac_main(int argc, char *argv[]); @@ -110,6 +111,7 @@ extern const OPTIONS s_client_options[]; extern const OPTIONS s_server_options[]; extern const OPTIONS s_time_options[]; extern const OPTIONS sess_id_options[]; +extern const OPTIONS skeyutl_options[]; extern const OPTIONS smime_options[]; extern const OPTIONS speed_options[]; extern const OPTIONS spkac_options[]; diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/openssl-cl.gypi b/deps/openssl/config/archs/VC-WIN32/asm_avx2/openssl-cl.gypi index 487571baf1b020..21d695947f9190 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/openssl-cl.gypi +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/openssl-cl.gypi @@ -87,6 +87,7 @@ 'openssl/apps/s_server.c', 'openssl/apps/s_time.c', 'openssl/apps/sess_id.c', + 'openssl/apps/skeyutl.c', 'openssl/apps/smime.c', 'openssl/apps/speed.c', 'openssl/apps/spkac.c', @@ -102,12 +103,14 @@ 'openssl/apps/lib/app_rand.c', 'openssl/apps/lib/app_x509.c', 'openssl/apps/lib/apps.c', + 'openssl/apps/lib/apps_opt_printf.c', 'openssl/apps/lib/apps_ui.c', 'openssl/apps/lib/columns.c', 'openssl/apps/lib/engine.c', 'openssl/apps/lib/engine_loader.c', 'openssl/apps/lib/fmt.c', 'openssl/apps/lib/http_server.c', + 'openssl/apps/lib/log.c', 'openssl/apps/lib/names.c', 'openssl/apps/lib/opt.c', 'openssl/apps/lib/s_cb.c', diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/openssl-fips.gypi b/deps/openssl/config/archs/VC-WIN32/asm_avx2/openssl-fips.gypi index 8f90fc015d135d..ed6a2a5dcd00a9 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/openssl-fips.gypi +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/openssl-fips.gypi @@ -96,14 +96,15 @@ 'openssl/crypto/evp/kem.c', 'openssl/crypto/evp/keymgmt_lib.c', 'openssl/crypto/evp/keymgmt_meth.c', - 'openssl/crypto/evp/m_sigver.c', 'openssl/crypto/evp/mac_lib.c', 'openssl/crypto/evp/mac_meth.c', 'openssl/crypto/evp/p_lib.c', 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -111,6 +112,8 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', @@ -140,6 +143,16 @@ 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -148,6 +161,7 @@ 'openssl/crypto/modes/ofb128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/property/defn_cache.c', 'openssl/crypto/property/property.c', 'openssl/crypto/property/property_parse.c', @@ -176,7 +190,23 @@ 'openssl/crypto/sha/sha256.c', 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/stack/stack.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/providers/common/der/der_rsa_sig.c', 'openssl/providers/common/bio_prov.c', 'openssl/providers/common/capabilities.c', @@ -185,6 +215,7 @@ 'openssl/providers/common/provider_util.c', 'openssl/providers/common/securitycheck.c', 'openssl/providers/common/securitycheck_fips.c', + 'openssl/providers/fips/fipsindicator.c', 'openssl/providers/fips/fipsprov.c', 'openssl/providers/fips/self_test.c', 'openssl/providers/fips/self_test_kats.c', @@ -222,6 +253,8 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -229,29 +262,39 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/cmac_prov.c', 'openssl/providers/implementations/macs/gmac_prov.c', 'openssl/providers/implementations/macs/hmac_prov.c', 'openssl/providers/implementations/macs/kmac_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', + 'openssl/providers/implementations/rands/fips_crng_test.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/signature/dsa_sig.c', 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -262,7 +305,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/fips/fips_entry.c', ], @@ -280,6 +323,7 @@ './config/archs/VC-WIN32/asm_avx2/crypto/des/crypt586.asm', './config/archs/VC-WIN32/asm_avx2/crypto/des/des-586.asm', './config/archs/VC-WIN32/asm_avx2/crypto/ec/ecp_nistz256-x86.asm', + './config/archs/VC-WIN32/asm_avx2/crypto/params_idx.c', './config/archs/VC-WIN32/asm_avx2/crypto/x86cpuid.asm', './config/archs/VC-WIN32/asm_avx2/crypto/md5/md5-586.asm', './config/archs/VC-WIN32/asm_avx2/crypto/modes/ghash-x86.asm', @@ -296,7 +340,9 @@ './config/archs/VC-WIN32/asm_avx2/providers/common/der/der_dsa_gen.c', './config/archs/VC-WIN32/asm_avx2/providers/common/der/der_ec_gen.c', './config/archs/VC-WIN32/asm_avx2/providers/common/der/der_ecx_gen.c', + './config/archs/VC-WIN32/asm_avx2/providers/common/der/der_ml_dsa_gen.c', './config/archs/VC-WIN32/asm_avx2/providers/common/der/der_rsa_gen.c', + './config/archs/VC-WIN32/asm_avx2/providers/common/der/der_slh_dsa_gen.c', './config/archs/VC-WIN32/asm_avx2/providers/common/der/der_wrap_gen.c', ], diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/openssl.gypi b/deps/openssl/config/archs/VC-WIN32/asm_avx2/openssl.gypi index 6771de85fc0e73..ea34dae5791bfc 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/openssl.gypi +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/openssl.gypi @@ -7,14 +7,15 @@ 'openssl/ssl/d1_srtp.c', 'openssl/ssl/methods.c', 'openssl/ssl/pqueue.c', + 'openssl/ssl/priority_queue.c', 'openssl/ssl/s3_enc.c', 'openssl/ssl/s3_lib.c', 'openssl/ssl/s3_msg.c', 'openssl/ssl/ssl_asn1.c', 'openssl/ssl/ssl_cert.c', + 'openssl/ssl/ssl_cert_comp.c', 'openssl/ssl/ssl_ciph.c', 'openssl/ssl/ssl_conf.c', - 'openssl/ssl/ssl_err.c', 'openssl/ssl/ssl_err_legacy.c', 'openssl/ssl/ssl_init.c', 'openssl/ssl/ssl_lib.c', @@ -31,12 +32,60 @@ 'openssl/ssl/tls13_enc.c', 'openssl/ssl/tls_depr.c', 'openssl/ssl/tls_srp.c', - 'openssl/ssl/record/dtls1_bitmap.c', + 'openssl/ssl/quic/cc_newreno.c', + 'openssl/ssl/quic/json_enc.c', + 'openssl/ssl/quic/qlog.c', + 'openssl/ssl/quic/qlog_event_helpers.c', + 'openssl/ssl/quic/quic_ackm.c', + 'openssl/ssl/quic/quic_cfq.c', + 'openssl/ssl/quic/quic_channel.c', + 'openssl/ssl/quic/quic_demux.c', + 'openssl/ssl/quic/quic_engine.c', + 'openssl/ssl/quic/quic_fc.c', + 'openssl/ssl/quic/quic_fifd.c', + 'openssl/ssl/quic/quic_impl.c', + 'openssl/ssl/quic/quic_lcidm.c', + 'openssl/ssl/quic/quic_method.c', + 'openssl/ssl/quic/quic_obj.c', + 'openssl/ssl/quic/quic_port.c', + 'openssl/ssl/quic/quic_rcidm.c', + 'openssl/ssl/quic/quic_reactor.c', + 'openssl/ssl/quic/quic_reactor_wait_ctx.c', + 'openssl/ssl/quic/quic_record_rx.c', + 'openssl/ssl/quic/quic_record_shared.c', + 'openssl/ssl/quic/quic_record_tx.c', + 'openssl/ssl/quic/quic_record_util.c', + 'openssl/ssl/quic/quic_rstream.c', + 'openssl/ssl/quic/quic_rx_depack.c', + 'openssl/ssl/quic/quic_sf_list.c', + 'openssl/ssl/quic/quic_srt_gen.c', + 'openssl/ssl/quic/quic_srtm.c', + 'openssl/ssl/quic/quic_sstream.c', + 'openssl/ssl/quic/quic_statm.c', + 'openssl/ssl/quic/quic_stream_map.c', + 'openssl/ssl/quic/quic_thread_assist.c', + 'openssl/ssl/quic/quic_tls.c', + 'openssl/ssl/quic/quic_tls_api.c', + 'openssl/ssl/quic/quic_trace.c', + 'openssl/ssl/quic/quic_tserver.c', + 'openssl/ssl/quic/quic_txp.c', + 'openssl/ssl/quic/quic_txpim.c', + 'openssl/ssl/quic/quic_types.c', + 'openssl/ssl/quic/quic_wire.c', + 'openssl/ssl/quic/quic_wire_pkt.c', + 'openssl/ssl/quic/uint_set.c', 'openssl/ssl/record/rec_layer_d1.c', 'openssl/ssl/record/rec_layer_s3.c', - 'openssl/ssl/record/ssl3_buffer.c', - 'openssl/ssl/record/ssl3_record.c', - 'openssl/ssl/record/ssl3_record_tls13.c', + 'openssl/ssl/record/methods/dtls_meth.c', + 'openssl/ssl/record/methods/ssl3_meth.c', + 'openssl/ssl/record/methods/tls13_meth.c', + 'openssl/ssl/record/methods/tls1_meth.c', + 'openssl/ssl/record/methods/tls_common.c', + 'openssl/ssl/record/methods/tls_multib.c', + 'openssl/ssl/record/methods/tlsany_meth.c', + 'openssl/ssl/rio/poll_builder.c', + 'openssl/ssl/rio/poll_immediate.c', + 'openssl/ssl/rio/rio_notifier.c', 'openssl/ssl/statem/extensions.c', 'openssl/ssl/statem/extensions_clnt.c', 'openssl/ssl/statem/extensions_cust.c', @@ -147,6 +196,7 @@ 'openssl/crypto/bio/bss_conn.c', 'openssl/crypto/bio/bss_core.c', 'openssl/crypto/bio/bss_dgram.c', + 'openssl/crypto/bio/bss_dgram_pair.c', 'openssl/crypto/bio/bss_fd.c', 'openssl/crypto/bio/bss_file.c', 'openssl/crypto/bio/bss_log.c', @@ -202,6 +252,7 @@ 'openssl/crypto/cmp/cmp_client.c', 'openssl/crypto/cmp/cmp_ctx.c', 'openssl/crypto/cmp/cmp_err.c', + 'openssl/crypto/cmp/cmp_genm.c', 'openssl/crypto/cmp/cmp_hdr.c', 'openssl/crypto/cmp/cmp_http.c', 'openssl/crypto/cmp/cmp_msg.c', @@ -376,7 +427,9 @@ 'openssl/crypto/err/err_all.c', 'openssl/crypto/err/err_all_legacy.c', 'openssl/crypto/err/err_blocks.c', + 'openssl/crypto/err/err_mark.c', 'openssl/crypto/err/err_prn.c', + 'openssl/crypto/err/err_save.c', 'openssl/crypto/ess/ess_asn1.c', 'openssl/crypto/ess/ess_err.c', 'openssl/crypto/ess/ess_lib.c', @@ -459,7 +512,9 @@ 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -467,7 +522,11 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', + 'openssl/crypto/hpke/hpke.c', + 'openssl/crypto/hpke/hpke_util.c', 'openssl/crypto/http/http_client.c', 'openssl/crypto/http/http_err.c', 'openssl/crypto/http/http_lib.c', @@ -481,6 +540,7 @@ 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', 'openssl/crypto/bsearch.c', + 'openssl/crypto/comp_methods.c', 'openssl/crypto/context.c', 'openssl/crypto/core_algorithm.c', 'openssl/crypto/core_fetch.c', @@ -490,10 +550,13 @@ 'openssl/crypto/cryptlib.c', 'openssl/crypto/ctype.c', 'openssl/crypto/cversion.c', + 'openssl/crypto/defaults.c', 'openssl/crypto/der_writer.c', + 'openssl/crypto/deterministic_nonce.c', 'openssl/crypto/ebcdic.c', 'openssl/crypto/ex_data.c', 'openssl/crypto/getenv.c', + 'openssl/crypto/indicator_core.c', 'openssl/crypto/info.c', 'openssl/crypto/init.c', 'openssl/crypto/initthread.c', @@ -517,12 +580,16 @@ 'openssl/crypto/provider_core.c', 'openssl/crypto/provider_predefined.c', 'openssl/crypto/punycode.c', + 'openssl/crypto/quic_vlint.c', 'openssl/crypto/self_test_core.c', + 'openssl/crypto/sleep.c', 'openssl/crypto/sparse_array.c', + 'openssl/crypto/ssl_err.c', 'openssl/crypto/threads_lib.c', 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', 'openssl/crypto/trace.c', 'openssl/crypto/uid.c', 'openssl/crypto/md4/md4_dgst.c', @@ -532,6 +599,15 @@ 'openssl/crypto/md5/md5_sha1.c', 'openssl/crypto/mdc2/mdc2_one.c', 'openssl/crypto/mdc2/mdc2dgst.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -543,6 +619,7 @@ 'openssl/crypto/modes/siv128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/objects/o_names.c', 'openssl/crypto/objects/obj_dat.c', 'openssl/crypto/objects/obj_err.c', @@ -606,6 +683,7 @@ 'openssl/crypto/rand/rand_lib.c', 'openssl/crypto/rand/rand_meth.c', 'openssl/crypto/rand/rand_pool.c', + 'openssl/crypto/rand/rand_uniform.c', 'openssl/crypto/rand/randfile.c', 'openssl/crypto/rc2/rc2_cbc.c', 'openssl/crypto/rc2/rc2_ecb.c', @@ -652,6 +730,16 @@ 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', 'openssl/crypto/siphash/siphash.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/sm2/sm2_crypt.c', 'openssl/crypto/sm2/sm2_err.c', 'openssl/crypto/sm2/sm2_key.c', @@ -669,6 +757,12 @@ 'openssl/crypto/store/store_register.c', 'openssl/crypto/store/store_result.c', 'openssl/crypto/store/store_strings.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/crypto/ts/ts_asn1.c', 'openssl/crypto/ts/ts_conf.c', 'openssl/crypto/ts/ts_err.c', @@ -697,14 +791,22 @@ 'openssl/crypto/x509/pcy_map.c', 'openssl/crypto/x509/pcy_node.c', 'openssl/crypto/x509/pcy_tree.c', + 'openssl/crypto/x509/t_acert.c', 'openssl/crypto/x509/t_crl.c', 'openssl/crypto/x509/t_req.c', 'openssl/crypto/x509/t_x509.c', + 'openssl/crypto/x509/v3_aaa.c', + 'openssl/crypto/x509/v3_ac_tgt.c', 'openssl/crypto/x509/v3_addr.c', 'openssl/crypto/x509/v3_admis.c', 'openssl/crypto/x509/v3_akeya.c', 'openssl/crypto/x509/v3_akid.c', 'openssl/crypto/x509/v3_asid.c', + 'openssl/crypto/x509/v3_attrdesc.c', + 'openssl/crypto/x509/v3_attrmap.c', + 'openssl/crypto/x509/v3_audit_id.c', + 'openssl/crypto/x509/v3_authattid.c', + 'openssl/crypto/x509/v3_battcons.c', 'openssl/crypto/x509/v3_bcons.c', 'openssl/crypto/x509/v3_bitst.c', 'openssl/crypto/x509/v3_conf.c', @@ -713,12 +815,17 @@ 'openssl/crypto/x509/v3_enum.c', 'openssl/crypto/x509/v3_extku.c', 'openssl/crypto/x509/v3_genn.c', + 'openssl/crypto/x509/v3_group_ac.c', 'openssl/crypto/x509/v3_ia5.c', + 'openssl/crypto/x509/v3_ind_iss.c', 'openssl/crypto/x509/v3_info.c', 'openssl/crypto/x509/v3_int.c', + 'openssl/crypto/x509/v3_iobo.c', 'openssl/crypto/x509/v3_ist.c', 'openssl/crypto/x509/v3_lib.c', 'openssl/crypto/x509/v3_ncons.c', + 'openssl/crypto/x509/v3_no_ass.c', + 'openssl/crypto/x509/v3_no_rev_avail.c', 'openssl/crypto/x509/v3_pci.c', 'openssl/crypto/x509/v3_pcia.c', 'openssl/crypto/x509/v3_pcons.c', @@ -726,13 +833,20 @@ 'openssl/crypto/x509/v3_pmaps.c', 'openssl/crypto/x509/v3_prn.c', 'openssl/crypto/x509/v3_purp.c', + 'openssl/crypto/x509/v3_rolespec.c', 'openssl/crypto/x509/v3_san.c', + 'openssl/crypto/x509/v3_sda.c', + 'openssl/crypto/x509/v3_single_use.c', 'openssl/crypto/x509/v3_skid.c', + 'openssl/crypto/x509/v3_soa_id.c', 'openssl/crypto/x509/v3_sxnet.c', + 'openssl/crypto/x509/v3_timespec.c', 'openssl/crypto/x509/v3_tlsf.c', + 'openssl/crypto/x509/v3_usernotice.c', 'openssl/crypto/x509/v3_utf8.c', 'openssl/crypto/x509/v3_utl.c', 'openssl/crypto/x509/v3err.c', + 'openssl/crypto/x509/x509_acert.c', 'openssl/crypto/x509/x509_att.c', 'openssl/crypto/x509/x509_cmp.c', 'openssl/crypto/x509/x509_d2.c', @@ -750,6 +864,7 @@ 'openssl/crypto/x509/x509_v3.c', 'openssl/crypto/x509/x509_vfy.c', 'openssl/crypto/x509/x509_vpm.c', + 'openssl/crypto/x509/x509aset.c', 'openssl/crypto/x509/x509cset.c', 'openssl/crypto/x509/x509name.c', 'openssl/crypto/x509/x509rset.c', @@ -759,6 +874,7 @@ 'openssl/crypto/x509/x_attrib.c', 'openssl/crypto/x509/x_crl.c', 'openssl/crypto/x509/x_exten.c', + 'openssl/crypto/x509/x_ietfatt.c', 'openssl/crypto/x509/x_name.c', 'openssl/crypto/x509/x_pubkey.c', 'openssl/crypto/x509/x_req.c', @@ -790,6 +906,9 @@ 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c', 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', @@ -814,7 +933,13 @@ 'openssl/providers/implementations/ciphers/cipher_cts.c', 'openssl/providers/implementations/ciphers/cipher_null.c', 'openssl/providers/implementations/ciphers/cipher_sm4.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm_hw.c', 'openssl/providers/implementations/ciphers/cipher_sm4_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts_hw.c', 'openssl/providers/implementations/ciphers/cipher_tdes.c', 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', 'openssl/providers/implementations/ciphers/cipher_tdes_default.c', @@ -843,11 +968,16 @@ 'openssl/providers/implementations/encode_decode/encode_key2ms.c', 'openssl/providers/implementations/encode_decode/encode_key2text.c', 'openssl/providers/implementations/encode_decode/endecoder_common.c', + 'openssl/providers/implementations/encode_decode/ml_common_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_dsa_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_kem_codecs.c', 'openssl/providers/implementations/exchange/dh_exch.c', 'openssl/providers/implementations/exchange/ecdh_exch.c', 'openssl/providers/implementations/exchange/ecx_exch.c', 'openssl/providers/implementations/exchange/kdf_exch.c', + 'openssl/providers/implementations/kdfs/argon2.c', 'openssl/providers/implementations/kdfs/hkdf.c', + 'openssl/providers/implementations/kdfs/hmacdrbg_kdf.c', 'openssl/providers/implementations/kdfs/kbkdf.c', 'openssl/providers/implementations/kdfs/krb5kdf.c', 'openssl/providers/implementations/kdfs/pbkdf2.c', @@ -858,6 +988,11 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ec_kem.c', + 'openssl/providers/implementations/kem/ecx_kem.c', + 'openssl/providers/implementations/kem/kem_util.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -865,7 +1000,11 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/blake2b_mac.c', 'openssl/providers/implementations/macs/blake2s_mac.c', 'openssl/providers/implementations/macs/cmac_prov.c', @@ -874,12 +1013,12 @@ 'openssl/providers/implementations/macs/kmac_prov.c', 'openssl/providers/implementations/macs/poly1305_prov.c', 'openssl/providers/implementations/macs/siphash_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', 'openssl/providers/implementations/rands/seed_src.c', + 'openssl/providers/implementations/rands/seed_src_jitter.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/rands/seeding/rand_cpu_x86.c', 'openssl/providers/implementations/rands/seeding/rand_tsc.c', @@ -889,17 +1028,24 @@ 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', 'openssl/providers/implementations/signature/sm2_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', 'openssl/providers/implementations/storemgmt/file_store.c', 'openssl/providers/implementations/storemgmt/file_store_any2obj.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/providers/implementations/storemgmt/winstore_store.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -910,7 +1056,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/implementations/ciphers/cipher_blowfish.c', 'openssl/providers/implementations/ciphers/cipher_blowfish_hw.c', 'openssl/providers/implementations/ciphers/cipher_cast5.c', @@ -935,6 +1081,7 @@ 'openssl/providers/implementations/digests/ripemd_prov.c', 'openssl/providers/implementations/digests/wp_prov.c', 'openssl/providers/implementations/kdfs/pbkdf1.c', + 'openssl/providers/implementations/kdfs/pvkkdf.c', 'openssl/providers/prov_running.c', 'openssl/providers/legacyprov.c', ], @@ -952,6 +1099,7 @@ './config/archs/VC-WIN32/asm_avx2/crypto/des/crypt586.asm', './config/archs/VC-WIN32/asm_avx2/crypto/des/des-586.asm', './config/archs/VC-WIN32/asm_avx2/crypto/ec/ecp_nistz256-x86.asm', + './config/archs/VC-WIN32/asm_avx2/crypto/params_idx.c', './config/archs/VC-WIN32/asm_avx2/crypto/x86cpuid.asm', './config/archs/VC-WIN32/asm_avx2/crypto/md5/md5-586.asm', './config/archs/VC-WIN32/asm_avx2/crypto/modes/ghash-x86.asm', @@ -968,7 +1116,9 @@ './config/archs/VC-WIN32/asm_avx2/providers/common/der/der_dsa_gen.c', './config/archs/VC-WIN32/asm_avx2/providers/common/der/der_ec_gen.c', './config/archs/VC-WIN32/asm_avx2/providers/common/der/der_ecx_gen.c', + './config/archs/VC-WIN32/asm_avx2/providers/common/der/der_ml_dsa_gen.c', './config/archs/VC-WIN32/asm_avx2/providers/common/der/der_rsa_gen.c', + './config/archs/VC-WIN32/asm_avx2/providers/common/der/der_slh_dsa_gen.c', './config/archs/VC-WIN32/asm_avx2/providers/common/der/der_wrap_gen.c', ], 'openssl_defines_VC-WIN32': [ diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/providers/common/der/der_ml_dsa_gen.c b/deps/openssl/config/archs/VC-WIN32/asm_avx2/providers/common/der/der_ml_dsa_gen.c new file mode 100644 index 00000000000000..4a8a113a268578 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/providers/common/der/der_ml_dsa_gen.c @@ -0,0 +1,37 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_ml_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44] = { + DER_OID_V_id_ml_dsa_44 +}; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65] = { + DER_OID_V_id_ml_dsa_65 +}; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87] = { + DER_OID_V_id_ml_dsa_87 +}; + diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/providers/common/der/der_slh_dsa_gen.c b/deps/openssl/config/archs/VC-WIN32/asm_avx2/providers/common/der/der_slh_dsa_gen.c new file mode 100644 index 00000000000000..1419a9515097dd --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/providers/common/der/der_slh_dsa_gen.c @@ -0,0 +1,100 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_slh_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s] = { + DER_OID_V_id_slh_dsa_sha2_128s +}; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f] = { + DER_OID_V_id_slh_dsa_sha2_128f +}; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s] = { + DER_OID_V_id_slh_dsa_sha2_192s +}; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f] = { + DER_OID_V_id_slh_dsa_sha2_192f +}; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s] = { + DER_OID_V_id_slh_dsa_sha2_256s +}; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f] = { + DER_OID_V_id_slh_dsa_sha2_256f +}; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s] = { + DER_OID_V_id_slh_dsa_shake_128s +}; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f] = { + DER_OID_V_id_slh_dsa_shake_128f +}; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s] = { + DER_OID_V_id_slh_dsa_shake_192s +}; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f] = { + DER_OID_V_id_slh_dsa_shake_192f +}; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s] = { + DER_OID_V_id_slh_dsa_shake_256s +}; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f] = { + DER_OID_V_id_slh_dsa_shake_256f +}; + diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/providers/common/include/prov/der_ml_dsa.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/providers/common/include/prov/der_ml_dsa.h new file mode 100644 index 00000000000000..c55f780ab4527c --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/providers/common/include/prov/der_ml_dsa.h @@ -0,0 +1,40 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_ml_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +#define DER_OID_V_id_ml_dsa_44 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x11 +#define DER_OID_SZ_id_ml_dsa_44 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44]; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +#define DER_OID_V_id_ml_dsa_65 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x12 +#define DER_OID_SZ_id_ml_dsa_65 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65]; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +#define DER_OID_V_id_ml_dsa_87 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x13 +#define DER_OID_SZ_id_ml_dsa_87 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87]; + + +int ossl_DER_w_algorithmIdentifier_ML_DSA(WPACKET *pkt, int tag, ML_DSA_KEY *key); diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/providers/common/include/prov/der_slh_dsa.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/providers/common/include/prov/der_slh_dsa.h new file mode 100644 index 00000000000000..760f8e7699be72 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/providers/common/include/prov/der_slh_dsa.h @@ -0,0 +1,103 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_slh_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x14 +#define DER_OID_SZ_id_slh_dsa_sha2_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s]; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x15 +#define DER_OID_SZ_id_slh_dsa_sha2_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f]; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x16 +#define DER_OID_SZ_id_slh_dsa_sha2_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s]; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x17 +#define DER_OID_SZ_id_slh_dsa_sha2_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f]; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x18 +#define DER_OID_SZ_id_slh_dsa_sha2_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s]; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x19 +#define DER_OID_SZ_id_slh_dsa_sha2_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f]; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +#define DER_OID_V_id_slh_dsa_shake_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1A +#define DER_OID_SZ_id_slh_dsa_shake_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s]; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +#define DER_OID_V_id_slh_dsa_shake_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1B +#define DER_OID_SZ_id_slh_dsa_shake_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f]; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +#define DER_OID_V_id_slh_dsa_shake_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1C +#define DER_OID_SZ_id_slh_dsa_shake_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s]; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +#define DER_OID_V_id_slh_dsa_shake_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1D +#define DER_OID_SZ_id_slh_dsa_shake_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f]; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +#define DER_OID_V_id_slh_dsa_shake_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1E +#define DER_OID_SZ_id_slh_dsa_shake_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s]; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +#define DER_OID_V_id_slh_dsa_shake_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1F +#define DER_OID_SZ_id_slh_dsa_shake_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f]; + + +int ossl_DER_w_algorithmIdentifier_SLH_DSA(WPACKET *pkt, int tag, SLH_DSA_KEY *key); diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/apps/progs.c b/deps/openssl/config/archs/VC-WIN32/no-asm/apps/progs.c index 43cef00799b86e..acc204a3e6e781 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/apps/progs.c +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/apps/progs.c @@ -89,6 +89,7 @@ FUNCTION functions[] = { {FT_general, "s_time", s_time_main, s_time_options, NULL, NULL}, #endif {FT_general, "sess_id", sess_id_main, sess_id_options, NULL, NULL}, + {FT_general, "skeyutl", skeyutl_main, skeyutl_options, NULL, NULL}, {FT_general, "smime", smime_main, smime_options, NULL, NULL}, {FT_general, "speed", speed_main, speed_options, NULL, NULL}, {FT_general, "spkac", spkac_main, spkac_options, NULL, NULL}, @@ -225,9 +226,15 @@ FUNCTION functions[] = { {FT_cipher, "camellia-256-ecb", enc_main, enc_options, NULL}, #endif {FT_cipher, "base64", enc_main, enc_options, NULL}, -#ifdef ZLIB +#ifndef OPENSSL_NO_ZLIB {FT_cipher, "zlib", enc_main, enc_options, NULL}, #endif +#ifndef OPENSSL_NO_BROTLI + {FT_cipher, "brotli", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ZSTD + {FT_cipher, "zstd", enc_main, enc_options, NULL}, +#endif #ifndef OPENSSL_NO_DES {FT_cipher, "des", enc_main, enc_options, NULL}, #endif diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm b/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm index a92b4f30d07262..219b5327aece52 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm @@ -19,6 +19,7 @@ our %config = ( "/nologo" ], "AS" => "nasm", + "ASFLAGS" => [], "CC" => "cl", "CFLAGS" => [ "/W3 /wd4090 /nologo /O2" @@ -29,6 +30,7 @@ our %config = ( "CPPINCLUDES" => [], "CXXFLAGS" => [], "FIPSKEY" => "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813", + "FIPS_VENDOR" => "OpenSSL FIPS Provider", "HASHBANGPERL" => "/usr/bin/env perl", "LD" => "link", "LDFLAGS" => [ @@ -43,7 +45,7 @@ our %config = ( "RANLIB" => "ranlib", "RC" => "rc", "RCFLAGS" => [], - "api" => "30000", + "api" => "30500", "b32" => "1", "b64" => "0", "b64l" => "0", @@ -65,11 +67,13 @@ our %config = ( "doc/build.info", "test/build.info", "engines/build.info", + "exporters/build.info", "crypto/objects/build.info", "crypto/buffer/build.info", "crypto/bio/build.info", "crypto/stack/build.info", "crypto/lhash/build.info", + "crypto/hashtable/build.info", "crypto/rand/build.info", "crypto/evp/build.info", "crypto/asn1/build.info", @@ -87,6 +91,7 @@ our %config = ( "crypto/md5/build.info", "crypto/sha/build.info", "crypto/mdc2/build.info", + "crypto/ml_kem/build.info", "crypto/hmac/build.info", "crypto/ripemd/build.info", "crypto/whrlpool/build.info", @@ -128,11 +133,19 @@ our %config = ( "crypto/cmp/build.info", "crypto/encode_decode/build.info", "crypto/ffc/build.info", + "crypto/hpke/build.info", + "crypto/thread/build.info", + "crypto/ml_dsa/build.info", + "crypto/slh_dsa/build.info", + "ssl/record/build.info", + "ssl/rio/build.info", + "ssl/quic/build.info", "apps/lib/build.info", "providers/common/build.info", "providers/implementations/build.info", "providers/fips/build.info", "doc/man1/build.info", + "ssl/record/methods/build.info", "providers/common/der/build.info", "providers/implementations/digests/build.info", "providers/implementations/ciphers/build.info", @@ -146,6 +159,7 @@ our %config = ( "providers/implementations/encode_decode/build.info", "providers/implementations/storemgmt/build.info", "providers/implementations/kem/build.info", + "providers/implementations/skeymgmt/build.info", "providers/implementations/rands/seeding/build.info" ], "build_metadata" => "", @@ -163,7 +177,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.17", + "full_version" => "3.5.2", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -173,9 +187,9 @@ our %config = ( "major" => "3", "makedep_scheme" => "VC", "makedepcmd" => "\$(CC) /Zs /showIncludes", - "minor" => "0", + "minor" => "5", "openssl_api_defines" => [ - "OPENSSL_CONFIGURED_API=30000" + "OPENSSL_CONFIGURED_API=30500" ], "openssl_feature_defines" => [ "OPENSSL_RAND_SEED_OS", @@ -183,28 +197,42 @@ our %config = ( "OPENSSL_NO_AFALGENG", "OPENSSL_NO_ASAN", "OPENSSL_NO_ASM", + "OPENSSL_NO_BROTLI", + "OPENSSL_NO_BROTLI_DYNAMIC", "OPENSSL_NO_COMP", "OPENSSL_NO_CRYPTO_MDEBUG", "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE", + "OPENSSL_NO_DEMOS", "OPENSSL_NO_DEVCRYPTOENG", "OPENSSL_NO_EC_NISTP_64_GCC_128", "OPENSSL_NO_EGD", "OPENSSL_NO_EXTERNAL_TESTS", + "OPENSSL_NO_FIPS_JITTER", "OPENSSL_NO_FUZZ_AFL", "OPENSSL_NO_FUZZ_LIBFUZZER", + "OPENSSL_NO_H3DEMO", + "OPENSSL_NO_HQINTEROP", + "OPENSSL_NO_JITTER", "OPENSSL_NO_KTLS", "OPENSSL_NO_LOADERENG", "OPENSSL_NO_MD2", "OPENSSL_NO_MSAN", + "OPENSSL_NO_PIE", "OPENSSL_NO_RC5", "OPENSSL_NO_SCTP", "OPENSSL_NO_SSL3", "OPENSSL_NO_SSL3_METHOD", + "OPENSSL_NO_SSLKEYLOG", + "OPENSSL_NO_TFO", "OPENSSL_NO_TRACE", "OPENSSL_NO_UBSAN", "OPENSSL_NO_UNIT_TEST", "OPENSSL_NO_UPLINK", "OPENSSL_NO_WEAK_SSL_CIPHERS", + "OPENSSL_NO_ZLIB", + "OPENSSL_NO_ZLIB_DYNAMIC", + "OPENSSL_NO_ZSTD", + "OPENSSL_NO_ZSTD_DYNAMIC", "OPENSSL_NO_DYNAMIC_ENGINE" ], "openssl_other_defines" => [ @@ -214,11 +242,11 @@ our %config = ( "OPENSSL_SYS_WIN32" ], "openssldir" => "", - "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "17", + "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", + "patch" => "2", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", - "perl_version" => "5.38.2", + "perl_version" => "5.34.0", "perlargv" => [ "no-comp", "no-shared", @@ -249,6 +277,7 @@ our %config = ( "LDLIBS" => undef, "MT" => undef, "MTFLAGS" => undef, + "OBJCOPY" => undef, "OPENSSL_LOCAL_CONFIG_DIR" => undef, "PERL" => undef, "RANLIB" => undef, @@ -268,11 +297,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "1 Jul 2025", + "release_date" => "5 Aug 2025", "shlib_version" => "3", "sourcedir" => ".", "target" => "VC-WIN32", - "version" => "3.0.17" + "version" => "3.5.2" ); our %target = ( "AR" => "lib", @@ -287,7 +316,7 @@ our %target = ( "LDFLAGS" => "/nologo /debug", "MT" => "mt", "MTFLAGS" => "-nologo", - "RANLIB" => "CODE(0x556f297fb5a8)", + "RANLIB" => "CODE(0x560312a74440)", "RC" => "rc", "_conf_fname_int" => [ "Configurations/00-base-templates.conf", @@ -370,6 +399,8 @@ our %target = ( our @disablables = ( "acvp-tests", "afalgeng", + "apps", + "argon2", "aria", "asan", "asm", @@ -380,11 +411,14 @@ our @disablables = ( "autoload-config", "bf", "blake2", + "brotli", + "brotli-dynamic", "buildtest-c++", "bulk", "cached-fetch", "camellia", "capieng", + "winstore", "cast", "chacha", "cmac", @@ -393,11 +427,16 @@ our @disablables = ( "comp", "crypto-mdebug", "ct", + "default-thread-pool", + "demos", + "h3demo", + "hqinterop", "deprecated", "des", "devcryptoeng", "dgram", "dh", + "docs", "dsa", "dso", "dtls", @@ -407,6 +446,7 @@ our @disablables = ( "ec_nistp_64_gcc_128", "ecdh", "ecdsa", + "ecx", "egd", "engine", "err", @@ -414,10 +454,15 @@ our @disablables = ( "filenames", "fips", "fips-securitychecks", + "fips-post", + "fips-jitter", "fuzz-afl", "fuzz-libfuzzer", "gost", + "http", "idea", + "integrity-only-ciphers", + "jitter", "ktls", "legacy", "loadereng", @@ -425,6 +470,8 @@ our @disablables = ( "md2", "md4", "mdc2", + "ml-dsa", + "ml-kem", "module", "msan", "multiblock", @@ -433,10 +480,13 @@ our @disablables = ( "ocsp", "padlockeng", "pic", + "pie", "pinshared", "poly1305", "posix-io", "psk", + "quic", + "unstable-qlog", "rc2", "rc4", "rc5", @@ -450,7 +500,9 @@ our @disablables = ( "shared", "siphash", "siv", + "slh-dsa", "sm2", + "sm2-precomp", "sm3", "sm4", "sock", @@ -461,9 +513,13 @@ our @disablables = ( "ssl-trace", "static-engine", "stdio", + "sslkeylog", "tests", + "tfo", + "thread-pool", "threads", "tls", + "tls-deprecated-ec", "trace", "ts", "ubsan", @@ -474,6 +530,8 @@ our @disablables = ( "whirlpool", "zlib", "zlib-dynamic", + "zstd", + "zstd-dynamic", "ssl3", "ssl3-method", "tls1", @@ -495,33 +553,45 @@ our %disabled = ( "afalgeng" => "option", "asan" => "default", "asm" => "option", + "brotli" => "default", + "brotli-dynamic" => "default", "buildtest-c++" => "default", "comp" => "option", "crypto-mdebug" => "default", "crypto-mdebug-backtrace" => "default", + "demos" => "default", "devcryptoeng" => "default", "dynamic-engine" => "cascade", "ec_nistp_64_gcc_128" => "default", "egd" => "default", "external-tests" => "default", + "fips-jitter" => "default", "fuzz-afl" => "default", "fuzz-libfuzzer" => "default", + "h3demo" => "default", + "hqinterop" => "default", + "jitter" => "default", "ktls" => "default", "loadereng" => "cascade", "md2" => "default", "msan" => "default", + "pie" => "default", "rc5" => "default", "sctp" => "default", "shared" => "option", "ssl3" => "default", "ssl3-method" => "default", + "sslkeylog" => "default", + "tfo" => "default", "trace" => "default", "ubsan" => "default", "unit-test" => "default", "uplink" => "cascade", "weak-ssl-ciphers" => "default", "zlib" => "default", - "zlib-dynamic" => "default" + "zlib-dynamic" => "default", + "zstd" => "default", + "zstd-dynamic" => "default" ); our %withargs = (); our %unified_info = ( @@ -747,6 +817,11 @@ our %unified_info = ( "pod" => "1" } }, + "doc/man1/openssl-skeyutl.pod" => { + "doc/man1/openssl-skeyutl.pod.in" => { + "pod" => "1" + } + }, "doc/man1/openssl-smime.pod" => { "doc/man1/openssl-smime.pod.in" => { "pod" => "1" @@ -804,6 +879,21 @@ our %unified_info = ( } }, "generate" => { + "exporters/OpenSSLConfig.cmake" => { + "exporter" => "cmake" + }, + "exporters/OpenSSLConfigVersion.cmake" => { + "exporter" => "cmake" + }, + "exporters/libcrypto.pc" => { + "exporter" => "pkg-config" + }, + "exporters/libssl.pc" => { + "exporter" => "pkg-config" + }, + "exporters/openssl.pc" => { + "exporter" => "pkg-config" + }, "include/openssl/configuration.h" => { "skip" => "1" } @@ -824,6 +914,9 @@ our %unified_info = ( "providers/liblegacy.a" => { "noinst" => "1" }, + "providers/libtemplate.a" => { + "noinst" => "1" + }, "test/libtestutil.a" => { "has_main" => "1", "noinst" => "1" @@ -841,6 +934,9 @@ our %unified_info = ( } }, "programs" => { + "fuzz/acert-test" => { + "noinst" => "1" + }, "fuzz/asn1-test" => { "noinst" => "1" }, @@ -871,9 +967,60 @@ our %unified_info = ( "fuzz/ct-test" => { "noinst" => "1" }, + "fuzz/decoder-test" => { + "noinst" => "1" + }, + "fuzz/dtlsclient-test" => { + "noinst" => "1" + }, + "fuzz/dtlsserver-test" => { + "noinst" => "1" + }, + "fuzz/hashtable-test" => { + "noinst" => "1" + }, + "fuzz/ml-dsa-test" => { + "noinst" => "1" + }, + "fuzz/ml-kem-test" => { + "noinst" => "1" + }, + "fuzz/pem-test" => { + "noinst" => "1" + }, + "fuzz/provider-test" => { + "noinst" => "1" + }, + "fuzz/punycode-test" => { + "noinst" => "1" + }, + "fuzz/quic-client-test" => { + "noinst" => "1" + }, + "fuzz/quic-lcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-rcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-server-test" => { + "noinst" => "1" + }, + "fuzz/quic-srtm-test" => { + "noinst" => "1" + }, "fuzz/server-test" => { "noinst" => "1" }, + "fuzz/slh-dsa-test" => { + "noinst" => "1" + }, + "fuzz/smime-test" => { + "noinst" => "1" + }, + "fuzz/v3name-test" => { + "noinst" => "1" + }, "fuzz/x509-test" => { "noinst" => "1" }, @@ -925,18 +1072,30 @@ our %unified_info = ( "test/bftest" => { "noinst" => "1" }, + "test/bio_addr_test" => { + "noinst" => "1" + }, + "test/bio_base64_test" => { + "noinst" => "1" + }, "test/bio_callback_test" => { "noinst" => "1" }, "test/bio_core_test" => { "noinst" => "1" }, + "test/bio_dgram_test" => { + "noinst" => "1" + }, "test/bio_enc_test" => { "noinst" => "1" }, "test/bio_memleak_test" => { "noinst" => "1" }, + "test/bio_meth_test" => { + "noinst" => "1" + }, "test/bio_prefix_text" => { "noinst" => "1" }, @@ -946,6 +1105,9 @@ our %unified_info = ( "test/bio_readbuffer_test" => { "noinst" => "1" }, + "test/bio_tfo_test" => { + "noinst" => "1" + }, "test/bioprinttest" => { "noinst" => "1" }, @@ -955,6 +1117,9 @@ our %unified_info = ( "test/bntest" => { "noinst" => "1" }, + "test/build_wincrypt_test" => { + "noinst" => "1" + }, "test/buildtest_c_aes" => { "noinst" => "1" }, @@ -970,6 +1135,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => { "noinst" => "1" }, + "test/buildtest_c_byteorder" => { + "noinst" => "1" + }, "test/buildtest_c_camellia" => { "noinst" => "1" }, @@ -994,9 +1162,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => { "noinst" => "1" }, - "test/buildtest_c_core_names" => { - "noinst" => "1" - }, "test/buildtest_c_core_object" => { "noinst" => "1" }, @@ -1021,6 +1186,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => { "noinst" => "1" }, + "test/buildtest_c_e_ostime" => { + "noinst" => "1" + }, "test/buildtest_c_ebcdic" => { "noinst" => "1" }, @@ -1048,12 +1216,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => { "noinst" => "1" }, + "test/buildtest_c_hpke" => { + "noinst" => "1" + }, "test/buildtest_c_http" => { "noinst" => "1" }, "test/buildtest_c_idea" => { "noinst" => "1" }, + "test/buildtest_c_indicator" => { + "noinst" => "1" + }, "test/buildtest_c_kdf" => { "noinst" => "1" }, @@ -1069,6 +1243,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => { "noinst" => "1" }, + "test/buildtest_c_ml_kem" => { + "noinst" => "1" + }, "test/buildtest_c_modes" => { "noinst" => "1" }, @@ -1099,6 +1276,9 @@ our %unified_info = ( "test/buildtest_c_provider" => { "noinst" => "1" }, + "test/buildtest_c_quic" => { + "noinst" => "1" + }, "test/buildtest_c_rand" => { "noinst" => "1" }, @@ -1141,6 +1321,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => { "noinst" => "1" }, + "test/buildtest_c_thread" => { + "noinst" => "1" + }, "test/buildtest_c_tls1" => { "noinst" => "1" }, @@ -1156,6 +1339,12 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => { "noinst" => "1" }, + "test/byteorder_test" => { + "noinst" => "1" + }, + "test/ca_internals_test" => { + "noinst" => "1" + }, "test/casttest" => { "noinst" => "1" }, @@ -1240,6 +1429,9 @@ our %unified_info = ( "test/danetest" => { "noinst" => "1" }, + "test/decoder_propq_test" => { + "noinst" => "1" + }, "test/defltfips_test" => { "noinst" => "1" }, @@ -1312,15 +1504,24 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => { "noinst" => "1" }, + "test/evp_pkey_dhkem_test" => { + "noinst" => "1" + }, "test/evp_pkey_dparams_test" => { "noinst" => "1" }, "test/evp_pkey_provided_test" => { "noinst" => "1" }, + "test/evp_skey_test" => { + "noinst" => "1" + }, "test/evp_test" => { "noinst" => "1" }, + "test/evp_xof_test" => { + "noinst" => "1" + }, "test/exdatatest" => { "noinst" => "1" }, @@ -1348,6 +1549,9 @@ our %unified_info = ( "test/hmactest" => { "noinst" => "1" }, + "test/hpke_test" => { + "noinst" => "1" + }, "test/http_test" => { "noinst" => "1" }, @@ -1357,12 +1561,18 @@ our %unified_info = ( "test/igetest" => { "noinst" => "1" }, + "test/json_test" => { + "noinst" => "1" + }, "test/keymgmt_internal_test" => { "noinst" => "1" }, "test/lhash_test" => { "noinst" => "1" }, + "test/list_test" => { + "noinst" => "1" + }, "test/localetest" => { "noinst" => "1" }, @@ -1372,9 +1582,21 @@ our %unified_info = ( "test/mdc2test" => { "noinst" => "1" }, + "test/membio_test" => { + "noinst" => "1" + }, "test/memleaktest" => { "noinst" => "1" }, + "test/ml_dsa_test" => { + "noinst" => "1" + }, + "test/ml_kem_evp_extra_test" => { + "noinst" => "1" + }, + "test/ml_kem_internal_test" => { + "noinst" => "1" + }, "test/modes_internal_test" => { "noinst" => "1" }, @@ -1393,6 +1615,9 @@ our %unified_info = ( "test/packettest" => { "noinst" => "1" }, + "test/pairwise_fail_test" => { + "noinst" => "1" + }, "test/param_build_test" => { "noinst" => "1" }, @@ -1417,6 +1642,9 @@ our %unified_info = ( "test/pemtest" => { "noinst" => "1" }, + "test/pkcs12_api_test" => { + "noinst" => "1" + }, "test/pkcs12_format_test" => { "noinst" => "1" }, @@ -1432,6 +1660,9 @@ our %unified_info = ( "test/poly1305_internal_test" => { "noinst" => "1" }, + "test/priority_queue_test" => { + "noinst" => "1" + }, "test/property_test" => { "noinst" => "1" }, @@ -1441,6 +1672,9 @@ our %unified_info = ( "test/provfetchtest" => { "noinst" => "1" }, + "test/provider_default_search_path_test" => { + "noinst" => "1" + }, "test/provider_fallback_test" => { "noinst" => "1" }, @@ -1459,6 +1693,72 @@ our %unified_info = ( "test/punycode_test" => { "noinst" => "1" }, + "test/quic_ackm_test" => { + "noinst" => "1" + }, + "test/quic_cc_test" => { + "noinst" => "1" + }, + "test/quic_cfq_test" => { + "noinst" => "1" + }, + "test/quic_client_test" => { + "noinst" => "1" + }, + "test/quic_fc_test" => { + "noinst" => "1" + }, + "test/quic_fifd_test" => { + "noinst" => "1" + }, + "test/quic_lcidm_test" => { + "noinst" => "1" + }, + "test/quic_multistream_test" => { + "noinst" => "1" + }, + "test/quic_newcid_test" => { + "noinst" => "1" + }, + "test/quic_qlog_test" => { + "noinst" => "1" + }, + "test/quic_radix_test" => { + "noinst" => "1" + }, + "test/quic_rcidm_test" => { + "noinst" => "1" + }, + "test/quic_record_test" => { + "noinst" => "1" + }, + "test/quic_srt_gen_test" => { + "noinst" => "1" + }, + "test/quic_srtm_test" => { + "noinst" => "1" + }, + "test/quic_stream_test" => { + "noinst" => "1" + }, + "test/quic_tserver_test" => { + "noinst" => "1" + }, + "test/quic_txp_test" => { + "noinst" => "1" + }, + "test/quic_txpim_test" => { + "noinst" => "1" + }, + "test/quic_wire_test" => { + "noinst" => "1" + }, + "test/quicapitest" => { + "noinst" => "1" + }, + "test/quicfaultstest" => { + "noinst" => "1" + }, "test/rand_status_test" => { "noinst" => "1" }, @@ -1474,12 +1774,15 @@ our %unified_info = ( "test/rc5test" => { "noinst" => "1" }, - "test/rdrand_sanitytest" => { + "test/rdcpu_sanitytest" => { "noinst" => "1" }, "test/recordlentest" => { "noinst" => "1" }, + "test/rpktest" => { + "noinst" => "1" + }, "test/rsa_complex" => { "noinst" => "1" }, @@ -1492,6 +1795,12 @@ our %unified_info = ( "test/rsa_test" => { "noinst" => "1" }, + "test/rsa_x931_test" => { + "noinst" => "1" + }, + "test/safe_math_test" => { + "noinst" => "1" + }, "test/sanitytest" => { "noinst" => "1" }, @@ -1507,6 +1816,9 @@ our %unified_info = ( "test/siphash_internal_test" => { "noinst" => "1" }, + "test/slh_dsa_test" => { + "noinst" => "1" + }, "test/sm2_internal_test" => { "noinst" => "1" }, @@ -1528,6 +1840,9 @@ our %unified_info = ( "test/ssl_ctx_test" => { "noinst" => "1" }, + "test/ssl_handshake_rtt_test" => { + "noinst" => "1" + }, "test/ssl_old_test" => { "noinst" => "1" }, @@ -1549,12 +1864,18 @@ our %unified_info = ( "test/stack_test" => { "noinst" => "1" }, + "test/strtoultest" => { + "noinst" => "1" + }, "test/sysdefaulttest" => { "noinst" => "1" }, "test/test_test" => { "noinst" => "1" }, + "test/threadpool_test" => { + "noinst" => "1" + }, "test/threadstest" => { "noinst" => "1" }, @@ -1564,12 +1885,18 @@ our %unified_info = ( "test/time_offset_test" => { "noinst" => "1" }, + "test/time_test" => { + "noinst" => "1" + }, "test/tls13ccstest" => { "noinst" => "1" }, "test/tls13encryptiontest" => { "noinst" => "1" }, + "test/tls13groupselection_test" => { + "noinst" => "1" + }, "test/trace_api_test" => { "noinst" => "1" }, @@ -1597,6 +1924,9 @@ our %unified_info = ( "test/wpackettest" => { "noinst" => "1" }, + "test/x509_acert_test" => { + "noinst" => "1" + }, "test/x509_check_cert_pkey_test" => { "noinst" => "1" }, @@ -1606,6 +1936,15 @@ our %unified_info = ( "test/x509_internal_test" => { "noinst" => "1" }, + "test/x509_load_cert_file_test" => { + "noinst" => "1" + }, + "test/x509_req_test" => { + "noinst" => "1" + }, + "test/x509_test" => { + "noinst" => "1" + }, "test/x509_time_test" => { "noinst" => "1" }, @@ -1646,6 +1985,9 @@ our %unified_info = ( "providers/libfips.a" => [ "FIPS_MODULE" ], + "test/endecode_test" => [ + "STATIC_LEGACY" + ], "test/evp_extra_test" => [ "STATIC_LEGACY" ], @@ -1658,14 +2000,21 @@ our %unified_info = ( }, "depends" => { "" => [ + "OpenSSLConfigVersion.cmake", + "crypto/params_idx.c", + "exporters/OpenSSLConfigVersion.cmake", + "exporters/openssl.pc", "include/crypto/bn_conf.h", "include/crypto/dso_conf.h", + "include/internal/param_names.h", "include/openssl/asn1.h", "include/openssl/asn1t.h", "include/openssl/bio.h", "include/openssl/cmp.h", "include/openssl/cms.h", + "include/openssl/comp.h", "include/openssl/conf.h", + "include/openssl/core_names.h", "include/openssl/crmf.h", "include/openssl/crypto.h", "include/openssl/ct.h", @@ -1682,10 +2031,22 @@ our %unified_info = ( "include/openssl/ssl.h", "include/openssl/ui.h", "include/openssl/x509.h", + "include/openssl/x509_acert.h", "include/openssl/x509_vfy.h", "include/openssl/x509v3.h", + "openssl.pc", "test/provider_internal_test.cnf" ], + "OpenSSLConfig.cmake" => [ + "builddata.pm" + ], + "OpenSSLConfigVersion.cmake" => [ + "OpenSSLConfig.cmake", + "builddata.pm" + ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/progs.h" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/progs.h" ], @@ -1831,6 +2192,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/progs.h" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/progs.h" + ], "apps/openssl-bin-smime.o" => [ "apps/progs.h" ], @@ -1919,6 +2283,9 @@ our %unified_info = ( "crypto/libcrypto-lib-info.o" => [ "crypto/buildinf.h" ], + "crypto/params_idx.c" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "crypto/rc4/rc4-586.S" => [ "crypto/perlasm/x86asm.pl" ], @@ -2084,6 +2451,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -2225,6 +2595,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -2261,6 +2634,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -2276,6 +2652,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -2348,6 +2727,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -2414,6 +2796,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -2513,6 +2898,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -2651,6 +3042,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -2768,6 +3162,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -2855,6 +3255,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -2927,9 +3330,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -2945,12 +3354,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -3020,9 +3435,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -3032,12 +3456,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -3053,9 +3489,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -3080,6 +3522,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -3095,6 +3540,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -3131,6 +3579,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -3404,6 +3855,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -3443,6 +3897,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -3464,6 +3921,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -3578,6 +4038,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -3605,9 +4068,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -3623,6 +4098,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -3632,12 +4110,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -3656,12 +4140,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -3671,9 +4167,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -3686,9 +4188,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -3704,24 +4218,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -3734,6 +4269,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -3743,8 +4284,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -3764,6 +4305,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -3812,6 +4368,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -3878,6 +4437,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -4001,9 +4563,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -4019,6 +4587,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -4043,9 +4614,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -4079,6 +4659,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -4136,15 +4719,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -4154,6 +4749,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -4175,9 +4773,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -4193,6 +4797,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -4205,9 +4812,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -4238,9 +4842,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -4256,12 +4857,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -4316,6 +4971,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -4325,9 +4983,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -4475,6 +5130,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -4616,6 +5274,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -4652,6 +5313,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -4667,6 +5331,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -4739,6 +5406,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -4805,6 +5475,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -4904,6 +5577,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -5042,6 +5721,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -5159,6 +5841,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -5246,6 +5934,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -5318,9 +6009,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -5336,12 +6033,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -5411,9 +6114,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -5423,12 +6135,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -5444,9 +6168,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -5471,6 +6201,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -5486,6 +6219,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -5522,6 +6258,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -5795,6 +6534,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -5834,6 +6576,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -5855,6 +6600,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -5969,6 +6717,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -5996,9 +6747,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -6014,6 +6777,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -6023,12 +6789,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -6047,12 +6819,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -6062,9 +6846,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -6077,9 +6867,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -6095,24 +6897,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -6125,6 +6948,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -6134,8 +6963,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -6155,6 +6984,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -6203,6 +7047,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -6269,6 +7116,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -6392,9 +7242,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -6410,6 +7266,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -6434,9 +7293,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -6470,6 +7338,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -6527,15 +7398,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -6545,6 +7428,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -6566,9 +7452,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -6584,6 +7476,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -6596,9 +7491,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -6629,9 +7521,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -6647,12 +7536,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -6707,6 +7650,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -6716,9 +7662,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -6898,6 +7841,10 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod.in", "doc/perlvars.pm" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in", + "doc/perlvars.pm" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in", "doc/perlvars.pm" @@ -6937,6 +7884,27 @@ our %unified_info = ( "doc/man7/openssl_user_macros.pod" => [ "doc/man7/openssl_user_macros.pod.in" ], + "exporters/OpenSSLConfig.cmake" => [ + "installdata.pm" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/OpenSSLConfig.cmake", + "installdata.pm" + ], + "exporters/libcrypto.pc" => [ + "installdata.pm" + ], + "exporters/libssl.pc" => [ + "installdata.pm" + ], + "exporters/openssl.pc" => [ + "exporters/libcrypto.pc", + "exporters/libssl.pc", + "installdata.pm" + ], + "fuzz/acert-test" => [ + "libcrypto" + ], "fuzz/asn1-test" => [ "libcrypto", "libssl" @@ -6969,17 +7937,85 @@ our %unified_info = ( "fuzz/ct-test" => [ "libcrypto" ], + "fuzz/decoder-test" => [ + "libcrypto" + ], + "fuzz/dtlsclient-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/dtlsserver-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/hashtable-test" => [ + "libcrypto.a" + ], + "fuzz/ml-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/ml-kem-test" => [ + "libcrypto.a" + ], + "fuzz/pem-test" => [ + "libcrypto.a" + ], + "fuzz/provider-test" => [ + "libcrypto" + ], + "fuzz/punycode-test" => [ + "libcrypto.a" + ], + "fuzz/quic-client-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-lcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-rcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-server-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-srtm-test" => [ + "libcrypto.a", + "libssl.a" + ], "fuzz/server-test" => [ "libcrypto", "libssl" ], + "fuzz/slh-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/smime-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/v3name-test" => [ + "libcrypto.a" + ], "fuzz/x509-test" => [ "libcrypto" ], + "include/internal/param_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], + "include/openssl/core_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "libcrypto.ld" => [ "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libcrypto.pc" => [ + "builddata.pm" + ], "libcrypto.rc" => [ "configdata.pm" ], @@ -6990,9 +8026,17 @@ our %unified_info = ( "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libssl.pc" => [ + "builddata.pm" + ], "libssl.rc" => [ "configdata.pm" ], + "openssl.pc" => [ + "builddata.pm", + "libcrypto.pc", + "libssl.pc" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/DIGESTS.asn1", "providers/common/der/NIST.asn1", @@ -7010,11 +8054,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7054,6 +8106,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov/der_rsa.h" ], @@ -7061,6 +8119,12 @@ our %unified_info = ( "providers/common/include/prov/der_digests.h", "providers/common/include/prov/der_rsa.h" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov/der_wrap.h" ], @@ -7100,11 +8164,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7137,9 +8209,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov/der_sm2.h" ], @@ -7152,9 +8230,15 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/legacy" => [ "libcrypto", "providers/liblegacy.a" @@ -7232,6 +8316,14 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_addr_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/bio_base64_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_callback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7240,6 +8332,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_dgram_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_enc_test" => [ "libcrypto", "test/libtestutil.a" @@ -7248,6 +8344,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_meth_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_prefix_text" => [ "libcrypto", "test/libtestutil.a" @@ -7260,6 +8360,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_tfo_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bioprinttest" => [ "libcrypto", "test/libtestutil.a" @@ -7272,6 +8376,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/build_wincrypt_test" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_aes" => [ "libcrypto", "libssl" @@ -7292,6 +8400,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_byteorder" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_camellia" => [ "libcrypto", "libssl" @@ -7324,10 +8436,6 @@ our %unified_info = ( "libcrypto", "libssl" ], - "test/buildtest_c_core_names" => [ - "libcrypto", - "libssl" - ], "test/buildtest_c_core_object" => [ "libcrypto", "libssl" @@ -7360,6 +8468,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_e_ostime" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_ebcdic" => [ "libcrypto", "libssl" @@ -7396,6 +8508,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_hpke" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_http" => [ "libcrypto", "libssl" @@ -7404,6 +8520,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_indicator" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_kdf" => [ "libcrypto", "libssl" @@ -7424,6 +8544,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_ml_kem" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_modes" => [ "libcrypto", "libssl" @@ -7464,6 +8588,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_quic" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_rand" => [ "libcrypto", "libssl" @@ -7520,6 +8648,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_thread" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_tls1" => [ "libcrypto", "libssl" @@ -7540,10 +8672,23 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/byteorder_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ca_internals_test" => [ + "libssl", + "test/libtestutil.a" + ], "test/casttest" => [ "libcrypto", "test/libtestutil.a" ], + "test/cert_comp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/chacha_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7657,7 +8802,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], - "test/defltfips_test" => [ + "test/decoder_propq_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/defltfips_test" => [ "libcrypto", "test/libtestutil.a" ], @@ -7713,6 +8862,8 @@ our %unified_info = ( ], "test/endecode_test" => [ "libcrypto.a", + "providers/libcommon.a", + "providers/liblegacy.a", "test/libtestutil.a" ], "test/endecoder_legacy_test" => [ @@ -7756,6 +8907,10 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => [ "libcrypto" ], + "test/evp_pkey_dhkem_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/evp_pkey_dparams_test" => [ "libcrypto", "test/libtestutil.a" @@ -7764,10 +8919,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/evp_skey_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/evp_xof_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/exdatatest" => [ "libcrypto", "test/libtestutil.a" @@ -7806,6 +8969,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/hpke_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/http_test" => [ "libcrypto", "test/libtestutil.a" @@ -7818,17 +8985,25 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/json_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/keymgmt_internal_test" => [ "libcrypto.a", "test/libtestutil.a" ], "test/lhash_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/libtestutil.a" => [ "libcrypto" ], + "test/list_test" => [ + "test/libtestutil.a" + ], "test/localetest" => [ "libcrypto", "test/libtestutil.a" @@ -7841,10 +9016,26 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/membio_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/memleaktest" => [ "libcrypto", "test/libtestutil.a" ], + "test/ml_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_evp_extra_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_internal_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/modes_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7869,6 +9060,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pairwise_fail_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/param_build_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7901,6 +9096,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pkcs12_api_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/pkcs12_format_test" => [ "libcrypto", "test/libtestutil.a" @@ -7921,6 +9120,11 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/priority_queue_test" => [ + "libcrypto", + "libssl.a", + "test/libtestutil.a" + ], "test/property_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7933,6 +9137,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/provider_default_search_path_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/provider_fallback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7957,12 +9165,122 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/quic_ackm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cfq_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_client_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fifd_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_lcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_multistream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_newcid_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_qlog_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_radix_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_rcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_record_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srt_gen_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srtm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_stream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_tserver_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txpim_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_wire_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicapitest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicfaultstest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/rand_status_test" => [ "libcrypto", "test/libtestutil.a" ], "test/rand_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/rc2test" => [ @@ -7977,7 +9295,7 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "libcrypto.a", "test/libtestutil.a" ], @@ -7986,6 +9304,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/rpktest" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/rsa_mp_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7998,10 +9321,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/sanitytest" => [ + "test/rsa_x931_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/safe_math_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/sanitytest" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/secmemtest" => [ "libcrypto", "test/libtestutil.a" @@ -8019,6 +9350,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/slh_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/sm2_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8048,6 +9383,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/ssl_handshake_rtt_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/ssl_old_test" => [ "libcrypto.a", "libssl.a", @@ -8064,8 +9404,8 @@ our %unified_info = ( "test/libtestutil.a" ], "test/sslapitest" => [ - "libcrypto", - "libssl", + "libcrypto.a", + "libssl.a", "test/libtestutil.a" ], "test/sslbuffertest" => [ @@ -8082,6 +9422,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/strtoultest" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/sysdefaulttest" => [ "libcrypto", "libssl", @@ -8091,8 +9435,12 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/threadpool_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/threadstest" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/threadstest_fips" => [ @@ -8103,6 +9451,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/time_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/tls13ccstest" => [ "libcrypto", "libssl", @@ -8113,6 +9465,11 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/tls13groupselection_test" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/trace_api_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8150,6 +9507,10 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/x509_acert_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_check_cert_pkey_test" => [ "libcrypto", "test/libtestutil.a" @@ -8162,6 +9523,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/x509_load_cert_file_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_req_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_time_test" => [ "libcrypto", "test/libtestutil.a" @@ -8176,9 +9549,13 @@ our %unified_info = ( }, "dirinfo" => { "apps" => { + "deps" => [ + "apps/ca_internals_test-bin-ca.o" + ], "products" => { "bin" => [ - "apps/openssl" + "apps/openssl", + "test/ca_internals_test" ], "script" => [ "apps/CA.pl", @@ -8189,6 +9566,14 @@ our %unified_info = ( "apps/lib" => { "deps" => [ "apps/lib/openssl-bin-cmp_mock_srv.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", "apps/lib/cmp_client_test-bin-cmp_mock_srv.o", "apps/lib/uitest-bin-apps_ui.o", "apps/lib/libapps-lib-app_libctx.o", @@ -8197,12 +9582,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -8215,6 +9602,7 @@ our %unified_info = ( "products" => { "bin" => [ "apps/openssl", + "test/ca_internals_test", "test/cmp_client_test", "test/uitest" ], @@ -8226,8 +9614,12 @@ our %unified_info = ( }, "crypto" => { "deps" => [ + "crypto/asn1_time_test-bin-ctype.o", + "crypto/ca_internals_test-bin-ctype.o", + "crypto/packettest-bin-quic_vlint.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -8237,10 +9629,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -8258,6 +9653,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -8265,12 +9661,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libfips-lib-asn1_dsa.o", @@ -8293,6 +9693,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -8300,9 +9701,15 @@ our %unified_info = ( "crypto/libfips-lib-threads_lib.o", "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", - "crypto/libfips-lib-threads_win.o" + "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test", + "test/packettest" + ], "lib" => [ "libcrypto", "providers/libfips.a" @@ -8343,6 +9750,8 @@ our %unified_info = ( }, "crypto/asn1" => { "deps" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", "crypto/asn1/libcrypto-lib-a_bitstr.o", "crypto/asn1/libcrypto-lib-a_d2i_fp.o", "crypto/asn1/libcrypto-lib-a_digest.o", @@ -8409,6 +9818,10 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test" + ], "lib" => [ "libcrypto" ] @@ -8474,6 +9887,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -8630,6 +10044,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -8997,7 +10412,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", - "crypto/err/libcrypto-lib-err_prn.o" + "crypto/err/libcrypto-lib-err_mark.o", + "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o" ], "products" => { "lib" => [ @@ -9098,7 +10515,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/evp/libfips-lib-asymcipher.o", "crypto/evp/libfips-lib-dh_support.o", "crypto/evp/libfips-lib-digest.o", @@ -9114,14 +10533,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", - "crypto/evp/libfips-lib-signature.o" + "crypto/evp/libfips-lib-s_lib.o", + "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o" ], "products" => { "lib" => [ @@ -9154,6 +10574,20 @@ our %unified_info = ( ] } }, + "crypto/hashtable" => { + "deps" => [ + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/hmac" => { "deps" => [ "crypto/hmac/libcrypto-lib-hmac.o", @@ -9166,6 +10600,17 @@ our %unified_info = ( ] } }, + "crypto/hpke" => { + "deps" => [ + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, "crypto/http" => { "deps" => [ "crypto/http/libcrypto-lib-http_client.o", @@ -9249,6 +10694,44 @@ our %unified_info = ( ] } }, + "crypto/ml_dsa" => { + "deps" => [ + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ml_kem" => { + "deps" => [ + "crypto/ml_kem/libcrypto-lib-ml_kem.o", + "crypto/ml_kem/libfips-lib-ml_kem.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/modes" => { "deps" => [ "crypto/modes/libcrypto-lib-cbc128.o", @@ -9262,6 +10745,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -9269,7 +10753,8 @@ our %unified_info = ( "crypto/modes/libfips-lib-gcm128.o", "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", - "crypto/modes/libfips-lib-xts128.o" + "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o" ], "products" => { "lib" => [ @@ -9412,6 +10897,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rand/libfips-lib-rand_lib.o" ], @@ -9556,6 +11042,36 @@ our %unified_info = ( ] } }, + "crypto/slh_dsa" => { + "deps" => [ + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/sm2" => { "deps" => [ "crypto/sm2/libcrypto-lib-sm2_crypt.o", @@ -9629,6 +11145,38 @@ our %unified_info = ( ] } }, + "crypto/thread" => { + "deps" => [ + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/thread/arch" => { + "deps" => [ + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/ts" => { "deps" => [ "crypto/ts/libcrypto-lib-ts_asn1.o", @@ -9695,14 +11243,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -9711,12 +11267,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -9724,13 +11285,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -9748,6 +11316,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -9757,6 +11326,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -9783,6 +11353,7 @@ our %unified_info = ( "fuzz" => { "products" => { "bin" => [ + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -9793,13 +11364,31 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test" ] } }, "providers" => { "deps" => [ + "providers/endecode_test-bin-legacyprov.o", "providers/evp_extra_test-bin-legacyprov.o", "providers/libcrypto-lib-baseprov.o", "providers/libcrypto-lib-defltprov.o", @@ -9809,6 +11398,7 @@ our %unified_info = ( ], "products" => { "bin" => [ + "test/endecode_test", "test/evp_extra_test" ], "dso" => [ @@ -9860,8 +11450,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/der/libdefault-lib-der_rsa_sig.o", "providers/common/der/libdefault-lib-der_sm2_gen.o", @@ -9880,6 +11474,7 @@ our %unified_info = ( "providers/fips" => { "deps" => [ "providers/fips/fips-dso-fips_entry.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o" @@ -9923,6 +11518,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -9947,7 +11545,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -10044,7 +11648,10 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", - "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" + "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" ], "products" => { "lib" => [ @@ -10072,7 +11679,9 @@ our %unified_info = ( }, "providers/implementations/kdfs" => { "deps" => [ + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -10091,7 +11700,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", - "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" + "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" ], "products" => { "lib" => [ @@ -10103,13 +11713,22 @@ our %unified_info = ( }, "providers/implementations/kem" => { "deps" => [ + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", - "providers/implementations/kem/libfips-lib-rsa_kem.o" + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", + "providers/implementations/kem/libfips-lib-rsa_kem.o", + "providers/implementations/kem/libtemplate-lib-template_kem.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10121,19 +11740,29 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", - "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10161,18 +11790,18 @@ our %unified_info = ( }, "providers/implementations/rands" => { "deps" => [ - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o" ], "products" => { @@ -10201,13 +11830,31 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", - "providers/implementations/signature/libfips-lib-rsa_sig.o" + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", + "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/skeymgmt" => { + "deps" => [ + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o" ], "products" => { "lib" => [ @@ -10219,7 +11866,8 @@ our %unified_info = ( "providers/implementations/storemgmt" => { "deps" => [ "providers/implementations/storemgmt/libdefault-lib-file_store.o", - "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o" + "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", + "providers/implementations/storemgmt/libdefault-lib-winstore_store.o" ], "products" => { "lib" => [ @@ -10235,14 +11883,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -10258,32 +11907,107 @@ our %unified_info = ( "ssl/libssl-lib-t1_trce.o", "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", - "ssl/libssl-lib-tls_srp.o", - "ssl/libdefault-lib-s3_cbc.o", - "ssl/libfips-lib-s3_cbc.o" + "ssl/libssl-lib-tls_srp.o" ], "products" => { "lib" => [ - "libssl", - "providers/libdefault.a", - "providers/libfips.a" + "libssl" + ] + } + }, + "ssl/quic" => { + "deps" => [ + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, "ssl/record" => { "deps" => [ - "ssl/record/libssl-lib-dtls1_bitmap.o", "ssl/record/libssl-lib-rec_layer_d1.o", - "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/libssl-lib-rec_layer_s3.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "ssl/record/methods" => { + "deps" => [ + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/record/methods/libcommon-lib-tls_pad.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o", + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "products" => { "lib" => [ "libssl", - "providers/libcommon.a" + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "ssl/rio" => { + "deps" => [ + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, @@ -10321,9 +12045,40 @@ our %unified_info = ( "test/helpers/dtlstest-bin-ssltestlib.o", "test/helpers/endecode_test-bin-predefined_dhparams.o", "test/helpers/fatalerrtest-bin-ssltestlib.o", + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/helpers/pkcs12_api_test-bin-pkcs12.o", "test/helpers/pkcs12_format_test-bin-pkcs12.o", + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", "test/helpers/recordlentest-bin-ssltestlib.o", + "test/helpers/rpktest-bin-ssltestlib.o", "test/helpers/servername_test-bin-ssltestlib.o", + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/helpers/ssl_test-bin-handshake.o", "test/helpers/ssl_test-bin-handshake_srp.o", @@ -10332,7 +12087,8 @@ our %unified_info = ( "test/helpers/sslapitest-bin-ssltestlib.o", "test/helpers/sslbuffertest-bin-ssltestlib.o", "test/helpers/sslcorrupttest-bin-ssltestlib.o", - "test/helpers/tls13ccstest-bin-ssltestlib.o" + "test/helpers/tls13ccstest-bin-ssltestlib.o", + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" ], "products" => { "bin" => [ @@ -10350,16 +12106,37 @@ our %unified_info = ( "test/dtlstest", "test/endecode_test", "test/fatalerrtest", + "test/json_test", + "test/pkcs12_api_test", "test/pkcs12_format_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_radix_test", + "test/quic_srt_gen_test", + "test/quicapitest", + "test/quicfaultstest", "test/recordlentest", + "test/rpktest", "test/servername_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", "test/sslapitest", "test/sslbuffertest", "test/sslcorrupttest", - "test/tls13ccstest" + "test/tls13ccstest", + "test/tls13groupselection_test" + ] + } + }, + "test/radix" => { + "deps" => [ + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "products" => { + "bin" => [ + "test/quic_radix_test" ] } }, @@ -10371,6 +12148,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -10405,6 +12183,12 @@ our %unified_info = ( } }, "generate" => { + "OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], "apps/openssl.rc" => [ "util/mkrc.pl", "openssl" @@ -10419,6 +12203,19 @@ our %unified_info = ( "\"-H\"", "\$(APPS_OPENSSL)" ], + "builddata.pm" => [ + "util/mkinstallvars.pl", + "PREFIX=.", + "BINDIR=apps", + "APPLINKDIR=ms", + "LIBDIR=", + "INCLUDEDIR=include", + "\"INCLUDEDIR=\$(SRCDIR)/include\"", + "ENGINESDIR=engines", + "MODULESDIR=providers", + "\"VERSION=\$(VERSION)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"" + ], "crypto/aes/aes-586.S" => [ "crypto/aes/asm/aes-586.pl" ], @@ -10440,6 +12237,24 @@ our %unified_info = ( "crypto/aes/aes-ppc.s" => [ "crypto/aes/asm/aes-ppc.pl" ], + "crypto/aes/aes-riscv32-zkn.s" => [ + "crypto/aes/asm/aes-riscv32-zkn.pl" + ], + "crypto/aes/aes-riscv64-zkn.s" => [ + "crypto/aes/asm/aes-riscv64-zkn.pl" + ], + "crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvbb-zvkg-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkb-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkb-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkned.pl" + ], + "crypto/aes/aes-riscv64.s" => [ + "crypto/aes/asm/aes-riscv64.pl" + ], "crypto/aes/aes-s390x.S" => [ "crypto/aes/asm/aes-s390x.pl" ], @@ -10467,6 +12282,9 @@ our %unified_info = ( "crypto/aes/aesni-x86_64.s" => [ "crypto/aes/asm/aesni-x86_64.pl" ], + "crypto/aes/aesni-xts-avx512.s" => [ + "crypto/aes/asm/aesni-xts-avx512.pl" + ], "crypto/aes/aesp8-ppc.s" => [ "crypto/aes/asm/aesp8-ppc.pl" ], @@ -10479,12 +12297,18 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.S" => [ "crypto/aes/asm/bsaes-armv7.pl" ], + "crypto/aes/bsaes-armv8.S" => [ + "crypto/aes/asm/bsaes-armv8.pl" + ], "crypto/aes/bsaes-x86_64.s" => [ "crypto/aes/asm/bsaes-x86_64.pl" ], "crypto/aes/vpaes-armv8.S" => [ "crypto/aes/asm/vpaes-armv8.pl" ], + "crypto/aes/vpaes-loongarch64.S" => [ + "crypto/aes/asm/vpaes-loongarch64.pl" + ], "crypto/aes/vpaes-ppc.s" => [ "crypto/aes/asm/vpaes-ppc.pl" ], @@ -10545,15 +12369,33 @@ our %unified_info = ( "crypto/bn/ppc-mont.s" => [ "crypto/bn/asm/ppc-mont.pl" ], + "crypto/bn/ppc64-mont-fixed.s" => [ + "crypto/bn/asm/ppc64-mont-fixed.pl" + ], "crypto/bn/ppc64-mont.s" => [ "crypto/bn/asm/ppc64-mont.pl" ], + "crypto/bn/rsaz-2k-avx512.s" => [ + "crypto/bn/asm/rsaz-2k-avx512.pl" + ], + "crypto/bn/rsaz-2k-avxifma.s" => [ + "crypto/bn/asm/rsaz-2k-avxifma.pl" + ], + "crypto/bn/rsaz-3k-avx512.s" => [ + "crypto/bn/asm/rsaz-3k-avx512.pl" + ], + "crypto/bn/rsaz-3k-avxifma.s" => [ + "crypto/bn/asm/rsaz-3k-avxifma.pl" + ], + "crypto/bn/rsaz-4k-avx512.s" => [ + "crypto/bn/asm/rsaz-4k-avx512.pl" + ], + "crypto/bn/rsaz-4k-avxifma.s" => [ + "crypto/bn/asm/rsaz-4k-avxifma.pl" + ], "crypto/bn/rsaz-avx2.s" => [ "crypto/bn/asm/rsaz-avx2.pl" ], - "crypto/bn/rsaz-avx512.s" => [ - "crypto/bn/asm/rsaz-avx512.pl" - ], "crypto/bn/rsaz-x86_64.s" => [ "crypto/bn/asm/rsaz-x86_64.pl" ], @@ -10615,6 +12457,9 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.S" => [ "crypto/chacha/asm/chacha-armv4.pl" ], + "crypto/chacha/chacha-armv8-sve.S" => [ + "crypto/chacha/asm/chacha-armv8-sve.pl" + ], "crypto/chacha/chacha-armv8.S" => [ "crypto/chacha/asm/chacha-armv8.pl" ], @@ -10627,9 +12472,19 @@ our %unified_info = ( "crypto/chacha/chacha-ia64.s" => [ "crypto/chacha/chacha-ia64.S" ], + "crypto/chacha/chacha-loongarch64.S" => [ + "crypto/chacha/asm/chacha-loongarch64.pl" + ], "crypto/chacha/chacha-ppc.s" => [ "crypto/chacha/asm/chacha-ppc.pl" ], + "crypto/chacha/chacha-riscv64-v-zbb-zvkb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl", + "zvkb" + ], + "crypto/chacha/chacha-riscv64-v-zbb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl" + ], "crypto/chacha/chacha-s390x.S" => [ "crypto/chacha/asm/chacha-s390x.pl" ], @@ -10639,6 +12494,9 @@ our %unified_info = ( "crypto/chacha/chacha-x86_64.s" => [ "crypto/chacha/asm/chacha-x86_64.pl" ], + "crypto/chacha/chachap10-ppc.s" => [ + "crypto/chacha/asm/chachap10-ppc.pl" + ], "crypto/des/crypt586.S" => [ "crypto/des/asm/crypt586.pl" ], @@ -10651,6 +12509,9 @@ our %unified_info = ( "crypto/des/dest4-sparcv9.S" => [ "crypto/des/asm/dest4-sparcv9.pl" ], + "crypto/ec/ecp_nistp384-ppc64.s" => [ + "crypto/ec/asm/ecp_nistp384-ppc64.pl" + ], "crypto/ec/ecp_nistp521-ppc64.s" => [ "crypto/ec/asm/ecp_nistp521-ppc64.pl" ], @@ -10675,6 +12536,9 @@ our %unified_info = ( "crypto/ec/ecp_nistz256-x86_64.s" => [ "crypto/ec/asm/ecp_nistz256-x86_64.pl" ], + "crypto/ec/ecp_sm2p256-armv8.S" => [ + "crypto/ec/asm/ecp_sm2p256-armv8.pl" + ], "crypto/ec/x25519-ppc64.s" => [ "crypto/ec/asm/x25519-ppc64.pl" ], @@ -10684,18 +12548,39 @@ our %unified_info = ( "crypto/ia64cpuid.s" => [ "crypto/ia64cpuid.S" ], + "crypto/loongarch64cpuid.s" => [ + "crypto/loongarch64cpuid.pl" + ], "crypto/md5/md5-586.S" => [ "crypto/md5/asm/md5-586.pl" ], + "crypto/md5/md5-aarch64.S" => [ + "crypto/md5/asm/md5-aarch64.pl" + ], + "crypto/md5/md5-loongarch64.S" => [ + "crypto/md5/asm/md5-loongarch64.pl" + ], "crypto/md5/md5-sparcv9.S" => [ "crypto/md5/asm/md5-sparcv9.pl" ], "crypto/md5/md5-x86_64.s" => [ "crypto/md5/asm/md5-x86_64.pl" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.S" => [ + "crypto/modes/asm/aes-gcm-armv8-unroll8_64.pl" + ], "crypto/modes/aes-gcm-armv8_64.S" => [ "crypto/modes/asm/aes-gcm-armv8_64.pl" ], + "crypto/modes/aes-gcm-avx512.s" => [ + "crypto/modes/asm/aes-gcm-avx512.pl" + ], + "crypto/modes/aes-gcm-ppc.s" => [ + "crypto/modes/asm/aes-gcm-ppc.pl" + ], + "crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s" => [ + "crypto/modes/asm/aes-gcm-riscv64-zvkb-zvkg-zvkned.pl" + ], "crypto/modes/aesni-gcm-x86_64.s" => [ "crypto/modes/asm/aesni-gcm-x86_64.pl" ], @@ -10714,6 +12599,15 @@ our %unified_info = ( "crypto/modes/ghash-parisc.s" => [ "crypto/modes/asm/ghash-parisc.pl" ], + "crypto/modes/ghash-riscv64-zvkb-zvbc.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkb-zvbc.pl" + ], + "crypto/modes/ghash-riscv64-zvkg.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkg.pl" + ], + "crypto/modes/ghash-riscv64.s" => [ + "crypto/modes/asm/ghash-riscv64.pl" + ], "crypto/modes/ghash-s390x.S" => [ "crypto/modes/asm/ghash-s390x.pl" ], @@ -10732,6 +12626,9 @@ our %unified_info = ( "crypto/modes/ghashv8-armx.S" => [ "crypto/modes/asm/ghashv8-armx.pl" ], + "crypto/params_idx.c" => [ + "crypto/params_idx.c.in" + ], "crypto/pariscid.s" => [ "crypto/pariscid.pl" ], @@ -10792,6 +12689,12 @@ our %unified_info = ( "crypto/ripemd/rmd-586.S" => [ "crypto/ripemd/asm/rmd-586.pl" ], + "crypto/riscv32cpuid.s" => [ + "crypto/riscv32cpuid.pl" + ], + "crypto/riscv64cpuid.s" => [ + "crypto/riscv64cpuid.pl" + ], "crypto/s390xcpuid.S" => [ "crypto/s390xcpuid.pl" ], @@ -10900,6 +12803,9 @@ our %unified_info = ( "crypto/sha/sha256-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S" => [ + "crypto/sha/asm/sha256-riscv64-zvkb-zvknha_or_zvknhb.pl" + ], "crypto/sha/sha256-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -10936,6 +12842,9 @@ our %unified_info = ( "crypto/sha/sha512-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha512-riscv64-zvkb-zvknhb.S" => [ + "crypto/sha/asm/sha512-riscv64-zvkb-zvknhb.pl" + ], "crypto/sha/sha512-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -10948,6 +12857,24 @@ our %unified_info = ( "crypto/sha/sha512p8-ppc.s" => [ "crypto/sha/asm/sha512p8-ppc.pl" ], + "crypto/sm3/sm3-armv8.S" => [ + "crypto/sm3/asm/sm3-armv8.pl" + ], + "crypto/sm3/sm3-riscv64-zvksh.S" => [ + "crypto/sm3/asm/sm3-riscv64-zvksh.pl" + ], + "crypto/sm4/sm4-armv8.S" => [ + "crypto/sm4/asm/sm4-armv8.pl" + ], + "crypto/sm4/sm4-riscv64-zvksed.s" => [ + "crypto/sm4/asm/sm4-riscv64-zvksed.pl" + ], + "crypto/sm4/vpsm4-armv8.S" => [ + "crypto/sm4/asm/vpsm4-armv8.pl" + ], + "crypto/sm4/vpsm4_ex-armv8.S" => [ + "crypto/sm4/asm/vpsm4_ex-armv8.pl" + ], "crypto/uplink-ia64.s" => [ "ms/uplink-ia64.pl" ], @@ -11113,6 +13040,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -11254,6 +13184,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -11290,6 +13223,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -11305,6 +13241,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -11377,6 +13316,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -11443,6 +13385,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -11542,6 +13487,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -11680,6 +13631,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -11797,6 +13751,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -11884,6 +13844,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -11956,9 +13919,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -11974,12 +13943,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -12049,9 +14024,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -12061,12 +14045,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -12082,9 +14078,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -12109,6 +14111,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -12124,6 +14129,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -12160,6 +14168,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -12433,6 +14444,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -12472,6 +14486,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -12493,6 +14510,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -12607,6 +14627,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -12634,9 +14657,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -12652,6 +14687,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -12661,12 +14699,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -12685,12 +14729,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -12700,9 +14756,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -12715,9 +14777,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -12733,24 +14807,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -12763,6 +14858,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -12772,8 +14873,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -12793,6 +14894,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -12841,6 +14957,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -12907,6 +15026,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -13030,9 +15152,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -13048,6 +15176,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -13072,9 +15203,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -13108,6 +15248,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -13165,15 +15308,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -13183,6 +15338,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -13204,9 +15362,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -13222,6 +15386,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -13234,9 +15401,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -13267,9 +15431,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -13285,12 +15446,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -13345,6 +15560,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -13354,9 +15572,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -13504,6 +15719,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -13645,6 +15863,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -13681,6 +15902,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -13696,6 +15920,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -13768,6 +15995,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -13834,6 +16064,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -13933,6 +16166,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -14071,6 +16310,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -14188,6 +16430,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -14275,6 +16523,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -14347,9 +16598,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -14365,12 +16622,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -14440,9 +16703,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -14452,12 +16724,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -14473,9 +16757,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -14500,6 +16790,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -14515,6 +16808,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -14551,6 +16847,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -14824,6 +17123,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -14863,6 +17165,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -14884,6 +17189,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -14998,6 +17306,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -15025,9 +17336,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -15043,6 +17366,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -15052,12 +17378,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -15076,11 +17408,23 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], - "doc/man/man3/SSL_get_shared_sigalgs.3" => [ - "doc/man3/SSL_get_shared_sigalgs.pod" + "doc/man/man3/SSL_get_shared_sigalgs.3" => [ + "doc/man3/SSL_get_shared_sigalgs.pod" + ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" @@ -15091,9 +17435,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -15106,9 +17456,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -15124,24 +17486,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -15154,6 +17537,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -15163,8 +17552,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -15184,6 +17573,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -15232,6 +17636,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -15298,6 +17705,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -15421,9 +17831,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -15439,6 +17855,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -15463,9 +17882,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -15499,6 +17927,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -15556,15 +17987,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -15574,6 +18017,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -15595,9 +18041,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -15613,6 +18065,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -15625,9 +18080,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -15658,9 +18110,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -15676,12 +18125,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -15736,6 +18239,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -15745,9 +18251,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -15883,6 +18386,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc/man1/openssl-sess_id.pod.in" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in" ], @@ -15919,12 +18425,30 @@ our %unified_info = ( "engines/e_padlock-x86_64.s" => [ "engines/asm/e_padlock-x86_64.pl" ], + "exporters/OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], + "exporters/libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], + "exporters/libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "exporters/openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "include/crypto/bn_conf.h" => [ "include/crypto/bn_conf.h.in" ], "include/crypto/dso_conf.h" => [ "include/crypto/dso_conf.h.in" ], + "include/internal/param_names.h" => [ + "include/internal/param_names.h.in" + ], "include/openssl/asn1.h" => [ "include/openssl/asn1.h.in" ], @@ -15940,12 +18464,18 @@ our %unified_info = ( "include/openssl/cms.h" => [ "include/openssl/cms.h.in" ], + "include/openssl/comp.h" => [ + "include/openssl/comp.h.in" + ], "include/openssl/conf.h" => [ "include/openssl/conf.h.in" ], "include/openssl/configuration.h" => [ "include/openssl/configuration.h.in" ], + "include/openssl/core_names.h" => [ + "include/openssl/core_names.h.in" + ], "include/openssl/crmf.h" => [ "include/openssl/crmf.h.in" ], @@ -15994,16 +18524,37 @@ our %unified_info = ( "include/openssl/x509.h" => [ "include/openssl/x509.h.in" ], + "include/openssl/x509_acert.h" => [ + "include/openssl/x509_acert.h.in" + ], "include/openssl/x509_vfy.h" => [ "include/openssl/x509_vfy.h.in" ], "include/openssl/x509v3.h" => [ "include/openssl/x509v3.h.in" ], + "installdata.pm" => [ + "util/mkinstallvars.pl", + "\"PREFIX=\$(INSTALLTOP)\"", + "BINDIR=bin", + "\"LIBDIR=\$(LIBDIR)\"", + "\"libdir=\$(libdir)\"", + "INCLUDEDIR=include", + "APPLINKDIR=include/openssl", + "\"ENGINESDIR=\$(ENGINESDIR)\"", + "\"MODULESDIR=\$(MODULESDIR)\"", + "\"PKGCONFIGDIR=\$(PKGCONFIGDIR)\"", + "\"CMAKECONFIGDIR=\$(CMAKECONFIGDIR)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"", + "\"VERSION=\$(VERSION)\"" + ], "libcrypto.ld" => [ "util/libcrypto.num", "libcrypto" ], + "libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], "libcrypto.rc" => [ "util/mkrc.pl", "libcrypto" @@ -16012,10 +18563,16 @@ our %unified_info = ( "util/libssl.num", "libssl" ], + "libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], "libssl.rc" => [ "util/mkrc.pl", "libssl" ], + "openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/der_digests_gen.c.in" ], @@ -16028,9 +18585,15 @@ our %unified_info = ( "providers/common/der/der_ecx_gen.c" => [ "providers/common/der/der_ecx_gen.c.in" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/der_ml_dsa_gen.c.in" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/der_rsa_gen.c.in" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/der_slh_dsa_gen.c.in" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/der_sm2_gen.c.in" ], @@ -16049,9 +18612,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/include/prov/der_ecx.h.in" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/include/prov/der_ml_dsa.h.in" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/include/prov/der_rsa.h.in" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/include/prov/der_slh_dsa.h.in" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/include/prov/der_sm2.h.in" ], @@ -16101,6 +18670,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "buffer" ], + "test/buildtest_byteorder.c" => [ + "test/generate_buildtest.pl", + "byteorder" + ], "test/buildtest_camellia.c" => [ "test/generate_buildtest.pl", "camellia" @@ -16133,10 +18706,6 @@ our %unified_info = ( "test/generate_buildtest.pl", "core_dispatch" ], - "test/buildtest_core_names.c" => [ - "test/generate_buildtest.pl", - "core_names" - ], "test/buildtest_core_object.c" => [ "test/generate_buildtest.pl", "core_object" @@ -16169,6 +18738,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "e_os2" ], + "test/buildtest_e_ostime.c" => [ + "test/generate_buildtest.pl", + "e_ostime" + ], "test/buildtest_ebcdic.c" => [ "test/generate_buildtest.pl", "ebcdic" @@ -16205,6 +18778,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "hmac" ], + "test/buildtest_hpke.c" => [ + "test/generate_buildtest.pl", + "hpke" + ], "test/buildtest_http.c" => [ "test/generate_buildtest.pl", "http" @@ -16213,6 +18790,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "idea" ], + "test/buildtest_indicator.c" => [ + "test/generate_buildtest.pl", + "indicator" + ], "test/buildtest_kdf.c" => [ "test/generate_buildtest.pl", "kdf" @@ -16233,6 +18814,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "mdc2" ], + "test/buildtest_ml_kem.c" => [ + "test/generate_buildtest.pl", + "ml_kem" + ], "test/buildtest_modes.c" => [ "test/generate_buildtest.pl", "modes" @@ -16273,6 +18858,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "provider" ], + "test/buildtest_quic.c" => [ + "test/generate_buildtest.pl", + "quic" + ], "test/buildtest_rand.c" => [ "test/generate_buildtest.pl", "rand" @@ -16329,6 +18918,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "symhacks" ], + "test/buildtest_thread.c" => [ + "test/generate_buildtest.pl", + "thread" + ], "test/buildtest_tls1.c" => [ "test/generate_buildtest.pl", "tls1" @@ -16409,6 +19002,7 @@ our %unified_info = ( "doc/html/man1/openssl-s_server.html", "doc/html/man1/openssl-s_time.html", "doc/html/man1/openssl-sess_id.html", + "doc/html/man1/openssl-skeyutl.html", "doc/html/man1/openssl-smime.html", "doc/html/man1/openssl-speed.html", "doc/html/man1/openssl-spkac.html", @@ -16458,6 +19052,7 @@ our %unified_info = ( "doc/html/man3/BIO_find_type.html", "doc/html/man3/BIO_get_data.html", "doc/html/man3/BIO_get_ex_new_index.html", + "doc/html/man3/BIO_get_rpoll_descriptor.html", "doc/html/man3/BIO_meth_new.html", "doc/html/man3/BIO_new.html", "doc/html/man3/BIO_new_CMS.html", @@ -16470,11 +19065,13 @@ our %unified_info = ( "doc/html/man3/BIO_s_connect.html", "doc/html/man3/BIO_s_core.html", "doc/html/man3/BIO_s_datagram.html", + "doc/html/man3/BIO_s_dgram_pair.html", "doc/html/man3/BIO_s_fd.html", "doc/html/man3/BIO_s_file.html", "doc/html/man3/BIO_s_mem.html", "doc/html/man3/BIO_s_null.html", "doc/html/man3/BIO_s_socket.html", + "doc/html/man3/BIO_sendmmsg.html", "doc/html/man3/BIO_set_callback.html", "doc/html/man3/BIO_should_retry.html", "doc/html/man3/BIO_socket_wait.html", @@ -16499,6 +19096,7 @@ our %unified_info = ( "doc/html/man3/BN_swap.html", "doc/html/man3/BN_zero.html", "doc/html/man3/BUF_MEM_new.html", + "doc/html/man3/CMAC_CTX.html", "doc/html/man3/CMS_EncryptedData_decrypt.html", "doc/html/man3/CMS_EncryptedData_encrypt.html", "doc/html/man3/CMS_EnvelopedData_create.html", @@ -16521,6 +19119,7 @@ our %unified_info = ( "doc/html/man3/CMS_uncompress.html", "doc/html/man3/CMS_verify.html", "doc/html/man3/CMS_verify_receipt.html", + "doc/html/man3/COMP_CTX_new.html", "doc/html/man3/CONF_modules_free.html", "doc/html/man3/CONF_modules_load_file.html", "doc/html/man3/CRYPTO_THREAD_run_once.html", @@ -16554,6 +19153,8 @@ our %unified_info = ( "doc/html/man3/DSA_size.html", "doc/html/man3/DTLS_get_data_mtu.html", "doc/html/man3/DTLS_set_timer_cb.html", + "doc/html/man3/DTLSv1_get_timeout.html", + "doc/html/man3/DTLSv1_handle_timeout.html", "doc/html/man3/DTLSv1_listen.html", "doc/html/man3/ECDSA_SIG_new.html", "doc/html/man3/ECDSA_sign.html", @@ -16600,6 +19201,7 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_ctrl.html", "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html", "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html", + "doc/html/man3/EVP_PKEY_CTX_get_algor.html", "doc/html/man3/EVP_PKEY_CTX_new.html", "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html", "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html", @@ -16639,6 +19241,8 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_verify_recover.html", "doc/html/man3/EVP_RAND.html", "doc/html/man3/EVP_SIGNATURE.html", + "doc/html/man3/EVP_SKEY.html", + "doc/html/man3/EVP_SKEYMGMT.html", "doc/html/man3/EVP_SealInit.html", "doc/html/man3/EVP_SignInit.html", "doc/html/man3/EVP_VerifyInit.html", @@ -16668,6 +19272,7 @@ our %unified_info = ( "doc/html/man3/EVP_sm3.html", "doc/html/man3/EVP_sm4_cbc.html", "doc/html/man3/EVP_whirlpool.html", + "doc/html/man3/GENERAL_NAME.html", "doc/html/man3/HMAC.html", "doc/html/man3/MD5.html", "doc/html/man3/MDC2_Init.html", @@ -16692,14 +19297,18 @@ our %unified_info = ( "doc/html/man3/OPENSSL_init_ssl.html", "doc/html/man3/OPENSSL_instrument_bus.html", "doc/html/man3/OPENSSL_load_builtin_modules.html", + "doc/html/man3/OPENSSL_load_u16_le.html", "doc/html/man3/OPENSSL_malloc.html", + "doc/html/man3/OPENSSL_riscvcap.html", "doc/html/man3/OPENSSL_s390xcap.html", "doc/html/man3/OPENSSL_secure_malloc.html", "doc/html/man3/OPENSSL_strcasecmp.html", "doc/html/man3/OSSL_ALGORITHM.html", "doc/html/man3/OSSL_CALLBACK.html", + "doc/html/man3/OSSL_CMP_ATAV_set0.html", "doc/html/man3/OSSL_CMP_CTX_new.html", "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html", + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html", "doc/html/man3/OSSL_CMP_ITAV_set0.html", "doc/html/man3/OSSL_CMP_MSG_get0_header.html", "doc/html/man3/OSSL_CMP_MSG_http_perform.html", @@ -16723,18 +19332,27 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_CTX.html", "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html", "doc/html/man3/OSSL_ENCODER_to_bio.html", + "doc/html/man3/OSSL_ERR_STATE_save.html", "doc/html/man3/OSSL_ESS_check_signing_certs.html", + "doc/html/man3/OSSL_GENERAL_NAMES_print.html", + "doc/html/man3/OSSL_HPKE_CTX_new.html", "doc/html/man3/OSSL_HTTP_REQ_CTX.html", "doc/html/man3/OSSL_HTTP_parse_url.html", "doc/html/man3/OSSL_HTTP_transfer.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html", + "doc/html/man3/OSSL_INDICATOR_set_callback.html", "doc/html/man3/OSSL_ITEM.html", "doc/html/man3/OSSL_LIB_CTX.html", + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html", "doc/html/man3/OSSL_PARAM.html", "doc/html/man3/OSSL_PARAM_BLD.html", "doc/html/man3/OSSL_PARAM_allocate_from_text.html", "doc/html/man3/OSSL_PARAM_dup.html", "doc/html/man3/OSSL_PARAM_int.html", + "doc/html/man3/OSSL_PARAM_print_to_bio.html", "doc/html/man3/OSSL_PROVIDER.html", + "doc/html/man3/OSSL_QUIC_client_method.html", "doc/html/man3/OSSL_SELF_TEST_new.html", "doc/html/man3/OSSL_SELF_TEST_set_callback.html", "doc/html/man3/OSSL_STORE_INFO.html", @@ -16743,11 +19361,13 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_attach.html", "doc/html/man3/OSSL_STORE_expect.html", "doc/html/man3/OSSL_STORE_open.html", + "doc/html/man3/OSSL_sleep.html", "doc/html/man3/OSSL_trace_enabled.html", "doc/html/man3/OSSL_trace_get_category_num.html", "doc/html/man3/OSSL_trace_set_channel.html", "doc/html/man3/OpenSSL_add_all_algorithms.html", "doc/html/man3/OpenSSL_version.html", + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html", "doc/html/man3/PEM_X509_INFO_read_bio_ex.html", "doc/html/man3/PEM_bytes_read_bio.html", "doc/html/man3/PEM_read.html", @@ -16760,6 +19380,7 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_create_cert.html", "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html", "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html", + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html", "doc/html/man3/PKCS12_add1_attr_by_NID.html", "doc/html/man3/PKCS12_add_CSPName_asc.html", "doc/html/man3/PKCS12_add_cert.html", @@ -16851,6 +19472,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_sess_set_get_cb.html", "doc/html/man3/SSL_CTX_sessions.html", "doc/html/man3/SSL_CTX_set0_CA_list.html", + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html", "doc/html/man3/SSL_CTX_set1_curves.html", "doc/html/man3/SSL_CTX_set1_sigalgs.html", "doc/html/man3/SSL_CTX_set1_verify_cert_store.html", @@ -16864,6 +19486,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_ct_validation_callback.html", "doc/html/man3/SSL_CTX_set_ctlog_list_file.html", "doc/html/man3/SSL_CTX_set_default_passwd_cb.html", + "doc/html/man3/SSL_CTX_set_domain_flags.html", "doc/html/man3/SSL_CTX_set_generate_session_id.html", "doc/html/man3/SSL_CTX_set_info_callback.html", "doc/html/man3/SSL_CTX_set_keylog_callback.html", @@ -16871,6 +19494,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_min_proto_version.html", "doc/html/man3/SSL_CTX_set_mode.html", "doc/html/man3/SSL_CTX_set_msg_callback.html", + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html", "doc/html/man3/SSL_CTX_set_num_tickets.html", "doc/html/man3/SSL_CTX_set_options.html", "doc/html/man3/SSL_CTX_set_psk_client_callback.html", @@ -16909,6 +19533,7 @@ our %unified_info = ( "doc/html/man3/SSL_SESSION_print.html", "doc/html/man3/SSL_SESSION_set1_id.html", "doc/html/man3/SSL_accept.html", + "doc/html/man3/SSL_accept_stream.html", "doc/html/man3/SSL_alert_type_string.html", "doc/html/man3/SSL_alloc_buffers.html", "doc/html/man3/SSL_check_chain.html", @@ -16918,59 +19543,90 @@ our %unified_info = ( "doc/html/man3/SSL_export_keying_material.html", "doc/html/man3/SSL_extension_supported.html", "doc/html/man3/SSL_free.html", + "doc/html/man3/SSL_get0_connection.html", + "doc/html/man3/SSL_get0_group_name.html", + "doc/html/man3/SSL_get0_peer_rpk.html", "doc/html/man3/SSL_get0_peer_scts.html", + "doc/html/man3/SSL_get1_builtin_sigalgs.html", "doc/html/man3/SSL_get_SSL_CTX.html", "doc/html/man3/SSL_get_all_async_fds.html", "doc/html/man3/SSL_get_certificate.html", "doc/html/man3/SSL_get_ciphers.html", "doc/html/man3/SSL_get_client_random.html", + "doc/html/man3/SSL_get_conn_close_info.html", "doc/html/man3/SSL_get_current_cipher.html", "doc/html/man3/SSL_get_default_timeout.html", "doc/html/man3/SSL_get_error.html", + "doc/html/man3/SSL_get_event_timeout.html", "doc/html/man3/SSL_get_extms_support.html", "doc/html/man3/SSL_get_fd.html", + "doc/html/man3/SSL_get_handshake_rtt.html", "doc/html/man3/SSL_get_peer_cert_chain.html", "doc/html/man3/SSL_get_peer_certificate.html", "doc/html/man3/SSL_get_peer_signature_nid.html", "doc/html/man3/SSL_get_peer_tmp_key.html", "doc/html/man3/SSL_get_psk_identity.html", "doc/html/man3/SSL_get_rbio.html", + "doc/html/man3/SSL_get_rpoll_descriptor.html", "doc/html/man3/SSL_get_session.html", "doc/html/man3/SSL_get_shared_sigalgs.html", + "doc/html/man3/SSL_get_stream_id.html", + "doc/html/man3/SSL_get_stream_read_state.html", + "doc/html/man3/SSL_get_value_uint.html", "doc/html/man3/SSL_get_verify_result.html", "doc/html/man3/SSL_get_version.html", "doc/html/man3/SSL_group_to_name.html", + "doc/html/man3/SSL_handle_events.html", "doc/html/man3/SSL_in_init.html", + "doc/html/man3/SSL_inject_net_dgram.html", "doc/html/man3/SSL_key_update.html", "doc/html/man3/SSL_library_init.html", "doc/html/man3/SSL_load_client_CA_file.html", "doc/html/man3/SSL_new.html", + "doc/html/man3/SSL_new_domain.html", + "doc/html/man3/SSL_new_listener.html", + "doc/html/man3/SSL_new_stream.html", "doc/html/man3/SSL_pending.html", + "doc/html/man3/SSL_poll.html", "doc/html/man3/SSL_read.html", "doc/html/man3/SSL_read_early_data.html", "doc/html/man3/SSL_rstate_string.html", "doc/html/man3/SSL_session_reused.html", "doc/html/man3/SSL_set1_host.html", + "doc/html/man3/SSL_set1_initial_peer_addr.html", + "doc/html/man3/SSL_set1_server_cert_type.html", "doc/html/man3/SSL_set_async_callback.html", "doc/html/man3/SSL_set_bio.html", + "doc/html/man3/SSL_set_blocking_mode.html", "doc/html/man3/SSL_set_connect_state.html", + "doc/html/man3/SSL_set_default_stream_mode.html", "doc/html/man3/SSL_set_fd.html", + "doc/html/man3/SSL_set_incoming_stream_policy.html", + "doc/html/man3/SSL_set_quic_tls_cbs.html", "doc/html/man3/SSL_set_retry_verify.html", "doc/html/man3/SSL_set_session.html", + "doc/html/man3/SSL_set_session_secret_cb.html", "doc/html/man3/SSL_set_shutdown.html", "doc/html/man3/SSL_set_verify_result.html", "doc/html/man3/SSL_shutdown.html", "doc/html/man3/SSL_state_string.html", + "doc/html/man3/SSL_stream_conclude.html", + "doc/html/man3/SSL_stream_reset.html", "doc/html/man3/SSL_want.html", "doc/html/man3/SSL_write.html", "doc/html/man3/TS_RESP_CTX_new.html", - "doc/html/man3/TS_VERIFY_CTX_set_certs.html", + "doc/html/man3/TS_VERIFY_CTX.html", "doc/html/man3/UI_STRING.html", "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", + "doc/html/man3/X509_ACERT_add1_attr.html", + "doc/html/man3/X509_ACERT_add_attr_nconf.html", + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html", + "doc/html/man3/X509_ACERT_get_attr.html", + "doc/html/man3/X509_ACERT_print_ex.html", "doc/html/man3/X509_ALGOR_dup.html", "doc/html/man3/X509_ATTRIBUTE.html", "doc/html/man3/X509_CRL_get0_by_serial.html", @@ -16987,6 +19643,7 @@ our %unified_info = ( "doc/html/man3/X509_REQ_get_attr.html", "doc/html/man3/X509_REQ_get_extensions.html", "doc/html/man3/X509_SIG_get0.html", + "doc/html/man3/X509_STORE_CTX_get_by_subject.html", "doc/html/man3/X509_STORE_CTX_get_error.html", "doc/html/man3/X509_STORE_CTX_new.html", "doc/html/man3/X509_STORE_CTX_set_verify_cb.html", @@ -17009,6 +19666,7 @@ our %unified_info = ( "doc/html/man3/X509_get0_notBefore.html", "doc/html/man3/X509_get0_signature.html", "doc/html/man3/X509_get0_uids.html", + "doc/html/man3/X509_get_default_cert_file.html", "doc/html/man3/X509_get_extension_flags.html", "doc/html/man3/X509_get_pubkey.html", "doc/html/man3/X509_get_serialNumber.html", @@ -17054,12 +19712,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-RC5.html", "doc/html/man7/EVP_CIPHER-SEED.html", "doc/html/man7/EVP_CIPHER-SM4.html", + "doc/html/man7/EVP_KDF-ARGON2.html", "doc/html/man7/EVP_KDF-HKDF.html", + "doc/html/man7/EVP_KDF-HMAC-DRBG.html", "doc/html/man7/EVP_KDF-KB.html", "doc/html/man7/EVP_KDF-KRB5KDF.html", "doc/html/man7/EVP_KDF-PBKDF1.html", "doc/html/man7/EVP_KDF-PBKDF2.html", "doc/html/man7/EVP_KDF-PKCS12KDF.html", + "doc/html/man7/EVP_KDF-PVKKDF.html", "doc/html/man7/EVP_KDF-SCRYPT.html", "doc/html/man7/EVP_KDF-SS.html", "doc/html/man7/EVP_KDF-SSHKDF.html", @@ -17068,7 +19729,10 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X942-ASN1.html", "doc/html/man7/EVP_KDF-X942-CONCAT.html", "doc/html/man7/EVP_KDF-X963.html", + "doc/html/man7/EVP_KEM-EC.html", + "doc/html/man7/EVP_KEM-ML-KEM.html", "doc/html/man7/EVP_KEM-RSA.html", + "doc/html/man7/EVP_KEM-X25519.html", "doc/html/man7/EVP_KEYEXCH-DH.html", "doc/html/man7/EVP_KEYEXCH-ECDH.html", "doc/html/man7/EVP_KEYEXCH-X25519.html", @@ -17080,6 +19744,7 @@ our %unified_info = ( "doc/html/man7/EVP_MAC-Poly1305.html", "doc/html/man7/EVP_MAC-Siphash.html", "doc/html/man7/EVP_MD-BLAKE2.html", + "doc/html/man7/EVP_MD-KECCAK.html", "doc/html/man7/EVP_MD-MD2.html", "doc/html/man7/EVP_MD-MD4.html", "doc/html/man7/EVP_MD-MD5-SHA1.html", @@ -17099,12 +19764,17 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-EC.html", "doc/html/man7/EVP_PKEY-FFC.html", "doc/html/man7/EVP_PKEY-HMAC.html", + "doc/html/man7/EVP_PKEY-ML-DSA.html", + "doc/html/man7/EVP_PKEY-ML-KEM.html", "doc/html/man7/EVP_PKEY-RSA.html", + "doc/html/man7/EVP_PKEY-SLH-DSA.html", "doc/html/man7/EVP_PKEY-SM2.html", "doc/html/man7/EVP_PKEY-X25519.html", + "doc/html/man7/EVP_RAND-CRNG-TEST.html", "doc/html/man7/EVP_RAND-CTR-DRBG.html", "doc/html/man7/EVP_RAND-HASH-DRBG.html", "doc/html/man7/EVP_RAND-HMAC-DRBG.html", + "doc/html/man7/EVP_RAND-JITTER.html", "doc/html/man7/EVP_RAND-SEED-SRC.html", "doc/html/man7/EVP_RAND-TEST-RAND.html", "doc/html/man7/EVP_RAND.html", @@ -17112,17 +19782,19 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-ECDSA.html", "doc/html/man7/EVP_SIGNATURE-ED25519.html", "doc/html/man7/EVP_SIGNATURE-HMAC.html", + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html", "doc/html/man7/EVP_SIGNATURE-RSA.html", + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html", "doc/html/man7/OSSL_PROVIDER-FIPS.html", "doc/html/man7/OSSL_PROVIDER-base.html", "doc/html/man7/OSSL_PROVIDER-default.html", "doc/html/man7/OSSL_PROVIDER-legacy.html", "doc/html/man7/OSSL_PROVIDER-null.html", + "doc/html/man7/OSSL_STORE-winstore.html", "doc/html/man7/RAND.html", "doc/html/man7/RSA-PSS.html", "doc/html/man7/X25519.html", "doc/html/man7/bio.html", - "doc/html/man7/crypto.html", "doc/html/man7/ct.html", "doc/html/man7/des_modes.html", "doc/html/man7/evp.html", @@ -17133,14 +19805,31 @@ our %unified_info = ( "doc/html/man7/life_cycle-mac.html", "doc/html/man7/life_cycle-pkey.html", "doc/html/man7/life_cycle-rand.html", - "doc/html/man7/migration_guide.html", "doc/html/man7/openssl-core.h.html", "doc/html/man7/openssl-core_dispatch.h.html", "doc/html/man7/openssl-core_names.h.html", "doc/html/man7/openssl-env.html", "doc/html/man7/openssl-glossary.html", + "doc/html/man7/openssl-qlog.html", + "doc/html/man7/openssl-quic-concurrency.html", + "doc/html/man7/openssl-quic.html", "doc/html/man7/openssl-threads.html", "doc/html/man7/openssl_user_macros.html", + "doc/html/man7/ossl-guide-introduction.html", + "doc/html/man7/ossl-guide-libcrypto-introduction.html", + "doc/html/man7/ossl-guide-libraries-introduction.html", + "doc/html/man7/ossl-guide-libssl-introduction.html", + "doc/html/man7/ossl-guide-migration.html", + "doc/html/man7/ossl-guide-quic-client-block.html", + "doc/html/man7/ossl-guide-quic-client-non-block.html", + "doc/html/man7/ossl-guide-quic-introduction.html", + "doc/html/man7/ossl-guide-quic-multi-stream.html", + "doc/html/man7/ossl-guide-quic-server-block.html", + "doc/html/man7/ossl-guide-quic-server-non-block.html", + "doc/html/man7/ossl-guide-tls-client-block.html", + "doc/html/man7/ossl-guide-tls-client-non-block.html", + "doc/html/man7/ossl-guide-tls-introduction.html", + "doc/html/man7/ossl-guide-tls-server-block.html", "doc/html/man7/ossl_store-file.html", "doc/html/man7/ossl_store.html", "doc/html/man7/passphrase-encoding.html", @@ -17159,10 +19848,10 @@ our %unified_info = ( "doc/html/man7/provider-object.html", "doc/html/man7/provider-rand.html", "doc/html/man7/provider-signature.html", + "doc/html/man7/provider-skeymgmt.html", "doc/html/man7/provider-storemgmt.html", "doc/html/man7/provider.html", "doc/html/man7/proxy-certificates.html", - "doc/html/man7/ssl.html", "doc/html/man7/x509.html" ] }, @@ -17177,12 +19866,21 @@ our %unified_info = ( ] }, "includes" => { + "OpenSSLConfig.cmake" => [ + "." + ], + "OpenSSLConfigVersion.cmake" => [ + "." + ], "apps/asn1parse.o" => [ "apps" ], "apps/ca.o" => [ "apps" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps" + ], "apps/ciphers.o" => [ "apps" ], @@ -17409,6 +20107,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps" + ], "apps/openssl-bin-smime.o" => [ "apps" ], @@ -17496,6 +20197,9 @@ our %unified_info = ( "apps/sess_id.o" => [ "apps" ], + "apps/skeyutl.o" => [ + "apps" + ], "apps/smime.o" => [ "apps" ], @@ -17547,6 +20251,12 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.o" => [ "crypto" ], + "crypto/aes/vpaes-armv8.o" => [ + "crypto" + ], + "crypto/aes/vpaes-loongarch64.o" => [ + "crypto" + ], "crypto/arm64cpuid.o" => [ "crypto" ], @@ -17598,9 +20308,15 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.o" => [ "crypto" ], + "crypto/chacha/chacha-armv8-sve.o" => [ + "crypto" + ], "crypto/chacha/chacha-armv8.o" => [ "crypto" ], + "crypto/chacha/chacha-loongarch64.o" => [ + "crypto" + ], "crypto/chacha/chacha-s390x.o" => [ "crypto" ], @@ -17625,15 +20341,24 @@ our %unified_info = ( "crypto/ec/ecp_s390x_nistp.o" => [ "crypto" ], + "crypto/ec/ecp_sm2p256-armv8.o" => [ + "crypto" + ], + "crypto/ec/ecx_key.o" => [ + "crypto" + ], "crypto/ec/ecx_meth.o" => [ "crypto" ], - "crypto/ec/ecx_s390x.o" => [ + "crypto/ec/libcrypto-lib-ecx_key.o" => [ "crypto" ], "crypto/ec/libcrypto-lib-ecx_meth.o" => [ "crypto" ], + "crypto/ec/libfips-lib-ecx_key.o" => [ + "crypto" + ], "crypto/evp/e_aes.o" => [ "crypto", "crypto/modes" @@ -17705,9 +20430,18 @@ our %unified_info = ( "crypto/libfips-lib-cpuid.o" => [ "." ], + "crypto/md5/md5-aarch64.o" => [ + "crypto" + ], + "crypto/md5/md5-loongarch64.o" => [ + "crypto" + ], "crypto/md5/md5-sparcv9.o" => [ "crypto" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.o" => [ + "crypto" + ], "crypto/modes/aes-gcm-armv8_64.o" => [ "crypto" ], @@ -17732,6 +20466,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-gcm128.o" => [ "crypto" ], + "crypto/params_idx.c" => [ + "util/perl" + ], "crypto/poly1305/poly1305-armv4.o" => [ "crypto" ], @@ -17753,6 +20490,9 @@ our %unified_info = ( "crypto/sha/keccak1600-armv4.o" => [ "crypto" ], + "crypto/sha/keccak1600-armv8.o" => [ + "crypto" + ], "crypto/sha/sha1-armv4-large.o" => [ "crypto" ], @@ -17798,6 +20538,18 @@ our %unified_info = ( "crypto/sha/sha512-sparcv9.o" => [ "crypto" ], + "crypto/sm3/sm3-armv8.o" => [ + "crypto" + ], + "crypto/sm4/sm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4_ex-armv8.o" => [ + "crypto" + ], "doc/man1/openssl-asn1parse.pod" => [ "doc" ], @@ -17930,6 +20682,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc" + ], "doc/man1/openssl-smime.pod" => [ "doc" ], @@ -17957,6 +20712,24 @@ our %unified_info = ( "doc/man1/openssl-x509.pod" => [ "doc" ], + "exporters/OpenSSLConfig.cmake" => [ + "." + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "." + ], + "exporters/libcrypto.pc" => [ + "." + ], + "exporters/libssl.pc" => [ + "." + ], + "exporters/openssl.pc" => [ + "." + ], + "fuzz/acert-test" => [ + "include" + ], "fuzz/asn1-test" => [ "include" ], @@ -17987,12 +20760,69 @@ our %unified_info = ( "fuzz/ct-test" => [ "include" ], + "fuzz/decoder-test" => [ + "include" + ], + "fuzz/dtlsclient-test" => [ + "include" + ], + "fuzz/dtlsserver-test" => [ + "include" + ], + "fuzz/hashtable-test" => [ + "include" + ], + "fuzz/ml-dsa-test" => [ + "include" + ], + "fuzz/ml-kem-test" => [ + "include" + ], + "fuzz/pem-test" => [ + "include" + ], + "fuzz/provider-test" => [ + "include" + ], + "fuzz/punycode-test" => [ + "include" + ], + "fuzz/quic-client-test" => [ + "include" + ], + "fuzz/quic-lcidm-test" => [ + "include" + ], + "fuzz/quic-rcidm-test" => [ + "include" + ], + "fuzz/quic-server-test" => [ + "include" + ], + "fuzz/quic-srtm-test" => [ + "include" + ], "fuzz/server-test" => [ "include" ], + "fuzz/slh-dsa-test" => [ + "include" + ], + "fuzz/smime-test" => [ + "include" + ], + "fuzz/v3name-test" => [ + "include" + ], "fuzz/x509-test" => [ "include" ], + "include/internal/param_names.h" => [ + "util/perl" + ], + "include/openssl/core_names.h" => [ + "util/perl" + ], "libcrypto" => [ ".", "include", @@ -18003,6 +20833,9 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libcrypto.pc" => [ + "." + ], "libcrypto.rc" => [ "." ], @@ -18014,9 +20847,15 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libssl.pc" => [ + "." + ], "libssl.rc" => [ "." ], + "openssl.pc" => [ + "." + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der" ], @@ -18056,6 +20895,15 @@ our %unified_info = ( "providers/common/der/der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der" ], @@ -18068,6 +20916,15 @@ our %unified_info = ( "providers/common/der/der_rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der" ], @@ -18113,12 +20970,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov" ], @@ -18149,9 +21018,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der" ], @@ -18194,9 +21069,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18209,12 +21090,24 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18227,28 +21120,39 @@ our %unified_info = ( "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libdefault.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libfips.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/liblegacy.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" + ], + "providers/libtemplate.a" => [ + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" ], "test/aborttest" => [ "include", @@ -18317,6 +21221,14 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_addr_test" => [ + "include", + "apps/include" + ], + "test/bio_base64_test" => [ + "include", + "apps/include" + ], "test/bio_callback_test" => [ "include", "apps/include" @@ -18325,11 +21237,20 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_dgram_test" => [ + "include", + "apps/include", + "." + ], "test/bio_enc_test" => [ "include", "apps/include" ], - "test/bio_memleak_test" => [ + "test/bio_memleak_test" => [ + "include", + "apps/include" + ], + "test/bio_meth_test" => [ "include", "apps/include" ], @@ -18346,6 +21267,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_tfo_test" => [ + "include", + "apps/include", + "." + ], "test/bioprinttest" => [ "include", "apps/include" @@ -18360,6 +21286,9 @@ our %unified_info = ( "include", "apps/include" ], + "test/build_wincrypt_test" => [ + "include" + ], "test/buildtest_c_aes" => [ "include" ], @@ -18375,6 +21304,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => [ "include" ], + "test/buildtest_c_byteorder" => [ + "include" + ], "test/buildtest_c_camellia" => [ "include" ], @@ -18399,9 +21331,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => [ "include" ], - "test/buildtest_c_core_names" => [ - "include" - ], "test/buildtest_c_core_object" => [ "include" ], @@ -18426,6 +21355,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => [ "include" ], + "test/buildtest_c_e_ostime" => [ + "include" + ], "test/buildtest_c_ebcdic" => [ "include" ], @@ -18453,12 +21385,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => [ "include" ], + "test/buildtest_c_hpke" => [ + "include" + ], "test/buildtest_c_http" => [ "include" ], "test/buildtest_c_idea" => [ "include" ], + "test/buildtest_c_indicator" => [ + "include" + ], "test/buildtest_c_kdf" => [ "include" ], @@ -18474,6 +21412,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => [ "include" ], + "test/buildtest_c_ml_kem" => [ + "include" + ], "test/buildtest_c_modes" => [ "include" ], @@ -18504,6 +21445,9 @@ our %unified_info = ( "test/buildtest_c_provider" => [ "include" ], + "test/buildtest_c_quic" => [ + "include" + ], "test/buildtest_c_rand" => [ "include" ], @@ -18546,6 +21490,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => [ "include" ], + "test/buildtest_c_thread" => [ + "include" + ], "test/buildtest_c_tls1" => [ "include" ], @@ -18561,10 +21508,24 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => [ "include" ], + "test/byteorder_test" => [ + "include", + "apps/include" + ], + "test/ca_internals_test" => [ + ".", + "include", + "apps/include" + ], "test/casttest" => [ "include", "apps/include" ], + "test/cert_comp_test" => [ + "include", + "apps/include", + "." + ], "test/chacha_internal_test" => [ ".", "include", @@ -18688,6 +21649,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/decoder_propq_test" => [ + ".", + "include", + "apps/include" + ], "test/defltfips_test" => [ "include", "apps/include" @@ -18703,7 +21669,8 @@ our %unified_info = ( "test/drbgtest" => [ "include", "apps/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "test/dsa_no_digest_size_test" => [ "include", @@ -18746,7 +21713,9 @@ our %unified_info = ( "test/endecode_test" => [ ".", "include", - "apps/include" + "apps/include", + "providers/common/include", + "providers/implementations/include" ], "test/endecoder_legacy_test" => [ ".", @@ -18791,6 +21760,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_pkey_dhkem_test" => [ + "include", + "apps/include" + ], "test/evp_pkey_dparams_test" => [ "include", "apps/include" @@ -18799,10 +21772,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_skey_test" => [ + "include", + "apps/include" + ], "test/evp_test" => [ "include", "apps/include" ], + "test/evp_xof_test" => [ + "include", + "apps/include" + ], "test/exdatatest" => [ "include", "apps/include" @@ -18903,22 +21884,62 @@ our %unified_info = ( ".", "include" ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/pkcs12.o" => [ ".", "include" ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + ".", + "include" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ ".", "include" ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/ssl_test-bin-handshake.o" => [ ".", "include" @@ -18952,6 +21973,10 @@ our %unified_info = ( ".", "include" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/hexstr_test" => [ ".", "include", @@ -18961,6 +21986,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/hpke_test" => [ + "include", + "apps/include" + ], "test/http_test" => [ "include", "apps/include" @@ -18973,6 +22002,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/json_test" => [ + "include", + "apps/include" + ], "test/keymgmt_internal_test" => [ ".", "include", @@ -18987,6 +22020,10 @@ our %unified_info = ( "apps/include", "." ], + "test/list_test" => [ + "include", + "apps/include" + ], "test/localetest" => [ "include", "apps/include" @@ -19000,10 +22037,27 @@ our %unified_info = ( "include", "apps/include" ], + "test/membio_test" => [ + "include", + "apps/include", + "." + ], "test/memleaktest" => [ "include", "apps/include" ], + "test/ml_dsa_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_evp_extra_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_internal_test" => [ + "include", + "apps/include" + ], "test/modes_internal_test" => [ ".", "include", @@ -19038,6 +22092,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pairwise_fail_test" => [ + "include", + "apps/include" + ], "test/param_build_test" => [ "include", "apps/include" @@ -19071,6 +22129,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pkcs12_api_test" => [ + "include", + "apps/include" + ], "test/pkcs12_format_test" => [ "include", "apps/include" @@ -19092,6 +22154,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/priority_queue_test" => [ + "include", + "apps/include" + ], "test/property_test" => [ ".", "include", @@ -19105,6 +22171,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/provider_default_search_path_test" => [ + "include", + "apps/include" + ], "test/provider_fallback_test" => [ "include", "apps/include" @@ -19131,6 +22201,97 @@ our %unified_info = ( "include", "apps/include" ], + "test/quic_ackm_test" => [ + "include", + "apps/include" + ], + "test/quic_cc_test" => [ + "include", + "apps/include" + ], + "test/quic_cfq_test" => [ + "include", + "apps/include" + ], + "test/quic_client_test" => [ + "include", + "apps/include" + ], + "test/quic_fc_test" => [ + "include", + "apps/include" + ], + "test/quic_fifd_test" => [ + "include", + "apps/include" + ], + "test/quic_lcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_multistream_test" => [ + "include", + "apps/include" + ], + "test/quic_newcid_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_qlog_test" => [ + "include", + "apps/include" + ], + "test/quic_radix_test" => [ + "include", + "apps/include" + ], + "test/quic_rcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_record_test" => [ + "include", + "apps/include" + ], + "test/quic_srt_gen_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_srtm_test" => [ + "include", + "apps/include" + ], + "test/quic_stream_test" => [ + "include", + "apps/include" + ], + "test/quic_tserver_test" => [ + "include", + "apps/include" + ], + "test/quic_txp_test" => [ + "include", + "apps/include" + ], + "test/quic_txpim_test" => [ + "include", + "apps/include" + ], + "test/quic_wire_test" => [ + "include", + "apps/include" + ], + "test/quicapitest" => [ + "include", + "apps/include" + ], + "test/quicfaultstest" => [ + "include", + "apps/include", + "." + ], "test/rand_status_test" => [ "include", "apps/include" @@ -19151,14 +22312,20 @@ our %unified_info = ( "include", "apps/include" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "include", - "apps/include" + "apps/include", + "crypto" ], "test/recordlentest" => [ "include", "apps/include" ], + "test/rpktest" => [ + "include", + "apps/include", + "." + ], "test/rsa_complex" => [ "include", "apps/include" @@ -19177,6 +22344,15 @@ our %unified_info = ( "include", "apps/include" ], + "test/rsa_x931_test" => [ + ".", + "include", + "apps/include" + ], + "test/safe_math_test" => [ + "include", + "apps/include" + ], "test/sanitytest" => [ "include", "apps/include" @@ -19198,6 +22374,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/slh_dsa_test" => [ + "include", + "apps/include" + ], "test/sm2_internal_test" => [ "include", "apps/include" @@ -19228,6 +22408,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/ssl_handshake_rtt_test" => [ + "include", + "apps/include", + "." + ], "test/ssl_old_test" => [ ".", "include", @@ -19244,6 +22429,7 @@ our %unified_info = ( "test/sslapitest" => [ "include", "apps/include", + "providers/common/include", "." ], "test/sslbuffertest" => [ @@ -19258,6 +22444,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/strtoultest" => [ + "include", + "apps/include" + ], "test/sysdefaulttest" => [ "include", "apps/include" @@ -19266,7 +22456,13 @@ our %unified_info = ( "include", "apps/include" ], + "test/threadpool_test" => [ + ".", + "include", + "apps/include" + ], "test/threadstest" => [ + ".", "include", "apps/include" ], @@ -19278,6 +22474,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/time_test" => [ + "include", + "apps/include" + ], "test/tls13ccstest" => [ "include", "apps/include" @@ -19287,6 +22487,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/tls13groupselection_test" => [ + "include", + "apps/include" + ], "test/trace_api_test" => [ ".", "include", @@ -19325,6 +22529,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_acert_test" => [ + "include", + "apps/include" + ], "test/x509_check_cert_pkey_test" => [ "include", "apps/include" @@ -19338,6 +22546,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_load_cert_file_test" => [ + "include", + "apps/include" + ], + "test/x509_req_test" => [ + "include", + "apps/include" + ], + "test/x509_test" => [ + "include", + "apps/include" + ], "test/x509_time_test" => [ "include", "apps/include" @@ -19359,6 +22579,7 @@ our %unified_info = ( "providers/libdefault.a", "providers/libfips.a", "providers/liblegacy.a", + "providers/libtemplate.a", "test/libtestutil.a" ], "mandocs" => { @@ -19411,6 +22632,7 @@ our %unified_info = ( "doc/man/man1/openssl-s_server.1", "doc/man/man1/openssl-s_time.1", "doc/man/man1/openssl-sess_id.1", + "doc/man/man1/openssl-skeyutl.1", "doc/man/man1/openssl-smime.1", "doc/man/man1/openssl-speed.1", "doc/man/man1/openssl-spkac.1", @@ -19460,6 +22682,7 @@ our %unified_info = ( "doc/man/man3/BIO_find_type.3", "doc/man/man3/BIO_get_data.3", "doc/man/man3/BIO_get_ex_new_index.3", + "doc/man/man3/BIO_get_rpoll_descriptor.3", "doc/man/man3/BIO_meth_new.3", "doc/man/man3/BIO_new.3", "doc/man/man3/BIO_new_CMS.3", @@ -19472,11 +22695,13 @@ our %unified_info = ( "doc/man/man3/BIO_s_connect.3", "doc/man/man3/BIO_s_core.3", "doc/man/man3/BIO_s_datagram.3", + "doc/man/man3/BIO_s_dgram_pair.3", "doc/man/man3/BIO_s_fd.3", "doc/man/man3/BIO_s_file.3", "doc/man/man3/BIO_s_mem.3", "doc/man/man3/BIO_s_null.3", "doc/man/man3/BIO_s_socket.3", + "doc/man/man3/BIO_sendmmsg.3", "doc/man/man3/BIO_set_callback.3", "doc/man/man3/BIO_should_retry.3", "doc/man/man3/BIO_socket_wait.3", @@ -19501,6 +22726,7 @@ our %unified_info = ( "doc/man/man3/BN_swap.3", "doc/man/man3/BN_zero.3", "doc/man/man3/BUF_MEM_new.3", + "doc/man/man3/CMAC_CTX.3", "doc/man/man3/CMS_EncryptedData_decrypt.3", "doc/man/man3/CMS_EncryptedData_encrypt.3", "doc/man/man3/CMS_EnvelopedData_create.3", @@ -19523,6 +22749,7 @@ our %unified_info = ( "doc/man/man3/CMS_uncompress.3", "doc/man/man3/CMS_verify.3", "doc/man/man3/CMS_verify_receipt.3", + "doc/man/man3/COMP_CTX_new.3", "doc/man/man3/CONF_modules_free.3", "doc/man/man3/CONF_modules_load_file.3", "doc/man/man3/CRYPTO_THREAD_run_once.3", @@ -19556,6 +22783,8 @@ our %unified_info = ( "doc/man/man3/DSA_size.3", "doc/man/man3/DTLS_get_data_mtu.3", "doc/man/man3/DTLS_set_timer_cb.3", + "doc/man/man3/DTLSv1_get_timeout.3", + "doc/man/man3/DTLSv1_handle_timeout.3", "doc/man/man3/DTLSv1_listen.3", "doc/man/man3/ECDSA_SIG_new.3", "doc/man/man3/ECDSA_sign.3", @@ -19602,6 +22831,7 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_ctrl.3", "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3", "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3", + "doc/man/man3/EVP_PKEY_CTX_get_algor.3", "doc/man/man3/EVP_PKEY_CTX_new.3", "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3", "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3", @@ -19641,6 +22871,8 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_verify_recover.3", "doc/man/man3/EVP_RAND.3", "doc/man/man3/EVP_SIGNATURE.3", + "doc/man/man3/EVP_SKEY.3", + "doc/man/man3/EVP_SKEYMGMT.3", "doc/man/man3/EVP_SealInit.3", "doc/man/man3/EVP_SignInit.3", "doc/man/man3/EVP_VerifyInit.3", @@ -19670,6 +22902,7 @@ our %unified_info = ( "doc/man/man3/EVP_sm3.3", "doc/man/man3/EVP_sm4_cbc.3", "doc/man/man3/EVP_whirlpool.3", + "doc/man/man3/GENERAL_NAME.3", "doc/man/man3/HMAC.3", "doc/man/man3/MD5.3", "doc/man/man3/MDC2_Init.3", @@ -19694,14 +22927,18 @@ our %unified_info = ( "doc/man/man3/OPENSSL_init_ssl.3", "doc/man/man3/OPENSSL_instrument_bus.3", "doc/man/man3/OPENSSL_load_builtin_modules.3", + "doc/man/man3/OPENSSL_load_u16_le.3", "doc/man/man3/OPENSSL_malloc.3", + "doc/man/man3/OPENSSL_riscvcap.3", "doc/man/man3/OPENSSL_s390xcap.3", "doc/man/man3/OPENSSL_secure_malloc.3", "doc/man/man3/OPENSSL_strcasecmp.3", "doc/man/man3/OSSL_ALGORITHM.3", "doc/man/man3/OSSL_CALLBACK.3", + "doc/man/man3/OSSL_CMP_ATAV_set0.3", "doc/man/man3/OSSL_CMP_CTX_new.3", "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3", + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3", "doc/man/man3/OSSL_CMP_ITAV_set0.3", "doc/man/man3/OSSL_CMP_MSG_get0_header.3", "doc/man/man3/OSSL_CMP_MSG_http_perform.3", @@ -19725,18 +22962,27 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_CTX.3", "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3", "doc/man/man3/OSSL_ENCODER_to_bio.3", + "doc/man/man3/OSSL_ERR_STATE_save.3", "doc/man/man3/OSSL_ESS_check_signing_certs.3", + "doc/man/man3/OSSL_GENERAL_NAMES_print.3", + "doc/man/man3/OSSL_HPKE_CTX_new.3", "doc/man/man3/OSSL_HTTP_REQ_CTX.3", "doc/man/man3/OSSL_HTTP_parse_url.3", "doc/man/man3/OSSL_HTTP_transfer.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3", + "doc/man/man3/OSSL_INDICATOR_set_callback.3", "doc/man/man3/OSSL_ITEM.3", "doc/man/man3/OSSL_LIB_CTX.3", + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3", "doc/man/man3/OSSL_PARAM.3", "doc/man/man3/OSSL_PARAM_BLD.3", "doc/man/man3/OSSL_PARAM_allocate_from_text.3", "doc/man/man3/OSSL_PARAM_dup.3", "doc/man/man3/OSSL_PARAM_int.3", + "doc/man/man3/OSSL_PARAM_print_to_bio.3", "doc/man/man3/OSSL_PROVIDER.3", + "doc/man/man3/OSSL_QUIC_client_method.3", "doc/man/man3/OSSL_SELF_TEST_new.3", "doc/man/man3/OSSL_SELF_TEST_set_callback.3", "doc/man/man3/OSSL_STORE_INFO.3", @@ -19745,11 +22991,13 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_attach.3", "doc/man/man3/OSSL_STORE_expect.3", "doc/man/man3/OSSL_STORE_open.3", + "doc/man/man3/OSSL_sleep.3", "doc/man/man3/OSSL_trace_enabled.3", "doc/man/man3/OSSL_trace_get_category_num.3", "doc/man/man3/OSSL_trace_set_channel.3", "doc/man/man3/OpenSSL_add_all_algorithms.3", "doc/man/man3/OpenSSL_version.3", + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3", "doc/man/man3/PEM_X509_INFO_read_bio_ex.3", "doc/man/man3/PEM_bytes_read_bio.3", "doc/man/man3/PEM_read.3", @@ -19762,6 +23010,7 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_create_cert.3", "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3", "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3", + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3", "doc/man/man3/PKCS12_add1_attr_by_NID.3", "doc/man/man3/PKCS12_add_CSPName_asc.3", "doc/man/man3/PKCS12_add_cert.3", @@ -19853,6 +23102,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_sess_set_get_cb.3", "doc/man/man3/SSL_CTX_sessions.3", "doc/man/man3/SSL_CTX_set0_CA_list.3", + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3", "doc/man/man3/SSL_CTX_set1_curves.3", "doc/man/man3/SSL_CTX_set1_sigalgs.3", "doc/man/man3/SSL_CTX_set1_verify_cert_store.3", @@ -19866,6 +23116,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_ct_validation_callback.3", "doc/man/man3/SSL_CTX_set_ctlog_list_file.3", "doc/man/man3/SSL_CTX_set_default_passwd_cb.3", + "doc/man/man3/SSL_CTX_set_domain_flags.3", "doc/man/man3/SSL_CTX_set_generate_session_id.3", "doc/man/man3/SSL_CTX_set_info_callback.3", "doc/man/man3/SSL_CTX_set_keylog_callback.3", @@ -19873,6 +23124,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_min_proto_version.3", "doc/man/man3/SSL_CTX_set_mode.3", "doc/man/man3/SSL_CTX_set_msg_callback.3", + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3", "doc/man/man3/SSL_CTX_set_num_tickets.3", "doc/man/man3/SSL_CTX_set_options.3", "doc/man/man3/SSL_CTX_set_psk_client_callback.3", @@ -19911,6 +23163,7 @@ our %unified_info = ( "doc/man/man3/SSL_SESSION_print.3", "doc/man/man3/SSL_SESSION_set1_id.3", "doc/man/man3/SSL_accept.3", + "doc/man/man3/SSL_accept_stream.3", "doc/man/man3/SSL_alert_type_string.3", "doc/man/man3/SSL_alloc_buffers.3", "doc/man/man3/SSL_check_chain.3", @@ -19920,59 +23173,90 @@ our %unified_info = ( "doc/man/man3/SSL_export_keying_material.3", "doc/man/man3/SSL_extension_supported.3", "doc/man/man3/SSL_free.3", + "doc/man/man3/SSL_get0_connection.3", + "doc/man/man3/SSL_get0_group_name.3", + "doc/man/man3/SSL_get0_peer_rpk.3", "doc/man/man3/SSL_get0_peer_scts.3", + "doc/man/man3/SSL_get1_builtin_sigalgs.3", "doc/man/man3/SSL_get_SSL_CTX.3", "doc/man/man3/SSL_get_all_async_fds.3", "doc/man/man3/SSL_get_certificate.3", "doc/man/man3/SSL_get_ciphers.3", "doc/man/man3/SSL_get_client_random.3", + "doc/man/man3/SSL_get_conn_close_info.3", "doc/man/man3/SSL_get_current_cipher.3", "doc/man/man3/SSL_get_default_timeout.3", "doc/man/man3/SSL_get_error.3", + "doc/man/man3/SSL_get_event_timeout.3", "doc/man/man3/SSL_get_extms_support.3", "doc/man/man3/SSL_get_fd.3", + "doc/man/man3/SSL_get_handshake_rtt.3", "doc/man/man3/SSL_get_peer_cert_chain.3", "doc/man/man3/SSL_get_peer_certificate.3", "doc/man/man3/SSL_get_peer_signature_nid.3", "doc/man/man3/SSL_get_peer_tmp_key.3", "doc/man/man3/SSL_get_psk_identity.3", "doc/man/man3/SSL_get_rbio.3", + "doc/man/man3/SSL_get_rpoll_descriptor.3", "doc/man/man3/SSL_get_session.3", "doc/man/man3/SSL_get_shared_sigalgs.3", + "doc/man/man3/SSL_get_stream_id.3", + "doc/man/man3/SSL_get_stream_read_state.3", + "doc/man/man3/SSL_get_value_uint.3", "doc/man/man3/SSL_get_verify_result.3", "doc/man/man3/SSL_get_version.3", "doc/man/man3/SSL_group_to_name.3", + "doc/man/man3/SSL_handle_events.3", "doc/man/man3/SSL_in_init.3", + "doc/man/man3/SSL_inject_net_dgram.3", "doc/man/man3/SSL_key_update.3", "doc/man/man3/SSL_library_init.3", "doc/man/man3/SSL_load_client_CA_file.3", "doc/man/man3/SSL_new.3", + "doc/man/man3/SSL_new_domain.3", + "doc/man/man3/SSL_new_listener.3", + "doc/man/man3/SSL_new_stream.3", "doc/man/man3/SSL_pending.3", + "doc/man/man3/SSL_poll.3", "doc/man/man3/SSL_read.3", "doc/man/man3/SSL_read_early_data.3", "doc/man/man3/SSL_rstate_string.3", "doc/man/man3/SSL_session_reused.3", "doc/man/man3/SSL_set1_host.3", + "doc/man/man3/SSL_set1_initial_peer_addr.3", + "doc/man/man3/SSL_set1_server_cert_type.3", "doc/man/man3/SSL_set_async_callback.3", "doc/man/man3/SSL_set_bio.3", + "doc/man/man3/SSL_set_blocking_mode.3", "doc/man/man3/SSL_set_connect_state.3", + "doc/man/man3/SSL_set_default_stream_mode.3", "doc/man/man3/SSL_set_fd.3", + "doc/man/man3/SSL_set_incoming_stream_policy.3", + "doc/man/man3/SSL_set_quic_tls_cbs.3", "doc/man/man3/SSL_set_retry_verify.3", "doc/man/man3/SSL_set_session.3", + "doc/man/man3/SSL_set_session_secret_cb.3", "doc/man/man3/SSL_set_shutdown.3", "doc/man/man3/SSL_set_verify_result.3", "doc/man/man3/SSL_shutdown.3", "doc/man/man3/SSL_state_string.3", + "doc/man/man3/SSL_stream_conclude.3", + "doc/man/man3/SSL_stream_reset.3", "doc/man/man3/SSL_want.3", "doc/man/man3/SSL_write.3", "doc/man/man3/TS_RESP_CTX_new.3", - "doc/man/man3/TS_VERIFY_CTX_set_certs.3", + "doc/man/man3/TS_VERIFY_CTX.3", "doc/man/man3/UI_STRING.3", "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", + "doc/man/man3/X509_ACERT_add1_attr.3", + "doc/man/man3/X509_ACERT_add_attr_nconf.3", + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3", + "doc/man/man3/X509_ACERT_get_attr.3", + "doc/man/man3/X509_ACERT_print_ex.3", "doc/man/man3/X509_ALGOR_dup.3", "doc/man/man3/X509_ATTRIBUTE.3", "doc/man/man3/X509_CRL_get0_by_serial.3", @@ -19989,6 +23273,7 @@ our %unified_info = ( "doc/man/man3/X509_REQ_get_attr.3", "doc/man/man3/X509_REQ_get_extensions.3", "doc/man/man3/X509_SIG_get0.3", + "doc/man/man3/X509_STORE_CTX_get_by_subject.3", "doc/man/man3/X509_STORE_CTX_get_error.3", "doc/man/man3/X509_STORE_CTX_new.3", "doc/man/man3/X509_STORE_CTX_set_verify_cb.3", @@ -20011,6 +23296,7 @@ our %unified_info = ( "doc/man/man3/X509_get0_notBefore.3", "doc/man/man3/X509_get0_signature.3", "doc/man/man3/X509_get0_uids.3", + "doc/man/man3/X509_get_default_cert_file.3", "doc/man/man3/X509_get_extension_flags.3", "doc/man/man3/X509_get_pubkey.3", "doc/man/man3/X509_get_serialNumber.3", @@ -20056,12 +23342,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-RC5.7", "doc/man/man7/EVP_CIPHER-SEED.7", "doc/man/man7/EVP_CIPHER-SM4.7", + "doc/man/man7/EVP_KDF-ARGON2.7", "doc/man/man7/EVP_KDF-HKDF.7", + "doc/man/man7/EVP_KDF-HMAC-DRBG.7", "doc/man/man7/EVP_KDF-KB.7", "doc/man/man7/EVP_KDF-KRB5KDF.7", "doc/man/man7/EVP_KDF-PBKDF1.7", "doc/man/man7/EVP_KDF-PBKDF2.7", "doc/man/man7/EVP_KDF-PKCS12KDF.7", + "doc/man/man7/EVP_KDF-PVKKDF.7", "doc/man/man7/EVP_KDF-SCRYPT.7", "doc/man/man7/EVP_KDF-SS.7", "doc/man/man7/EVP_KDF-SSHKDF.7", @@ -20070,7 +23359,10 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X942-ASN1.7", "doc/man/man7/EVP_KDF-X942-CONCAT.7", "doc/man/man7/EVP_KDF-X963.7", + "doc/man/man7/EVP_KEM-EC.7", + "doc/man/man7/EVP_KEM-ML-KEM.7", "doc/man/man7/EVP_KEM-RSA.7", + "doc/man/man7/EVP_KEM-X25519.7", "doc/man/man7/EVP_KEYEXCH-DH.7", "doc/man/man7/EVP_KEYEXCH-ECDH.7", "doc/man/man7/EVP_KEYEXCH-X25519.7", @@ -20082,6 +23374,7 @@ our %unified_info = ( "doc/man/man7/EVP_MAC-Poly1305.7", "doc/man/man7/EVP_MAC-Siphash.7", "doc/man/man7/EVP_MD-BLAKE2.7", + "doc/man/man7/EVP_MD-KECCAK.7", "doc/man/man7/EVP_MD-MD2.7", "doc/man/man7/EVP_MD-MD4.7", "doc/man/man7/EVP_MD-MD5-SHA1.7", @@ -20101,12 +23394,17 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-EC.7", "doc/man/man7/EVP_PKEY-FFC.7", "doc/man/man7/EVP_PKEY-HMAC.7", + "doc/man/man7/EVP_PKEY-ML-DSA.7", + "doc/man/man7/EVP_PKEY-ML-KEM.7", "doc/man/man7/EVP_PKEY-RSA.7", + "doc/man/man7/EVP_PKEY-SLH-DSA.7", "doc/man/man7/EVP_PKEY-SM2.7", "doc/man/man7/EVP_PKEY-X25519.7", + "doc/man/man7/EVP_RAND-CRNG-TEST.7", "doc/man/man7/EVP_RAND-CTR-DRBG.7", "doc/man/man7/EVP_RAND-HASH-DRBG.7", "doc/man/man7/EVP_RAND-HMAC-DRBG.7", + "doc/man/man7/EVP_RAND-JITTER.7", "doc/man/man7/EVP_RAND-SEED-SRC.7", "doc/man/man7/EVP_RAND-TEST-RAND.7", "doc/man/man7/EVP_RAND.7", @@ -20114,17 +23412,19 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-ECDSA.7", "doc/man/man7/EVP_SIGNATURE-ED25519.7", "doc/man/man7/EVP_SIGNATURE-HMAC.7", + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7", "doc/man/man7/EVP_SIGNATURE-RSA.7", + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7", "doc/man/man7/OSSL_PROVIDER-FIPS.7", "doc/man/man7/OSSL_PROVIDER-base.7", "doc/man/man7/OSSL_PROVIDER-default.7", "doc/man/man7/OSSL_PROVIDER-legacy.7", "doc/man/man7/OSSL_PROVIDER-null.7", + "doc/man/man7/OSSL_STORE-winstore.7", "doc/man/man7/RAND.7", "doc/man/man7/RSA-PSS.7", "doc/man/man7/X25519.7", "doc/man/man7/bio.7", - "doc/man/man7/crypto.7", "doc/man/man7/ct.7", "doc/man/man7/des_modes.7", "doc/man/man7/evp.7", @@ -20135,14 +23435,31 @@ our %unified_info = ( "doc/man/man7/life_cycle-mac.7", "doc/man/man7/life_cycle-pkey.7", "doc/man/man7/life_cycle-rand.7", - "doc/man/man7/migration_guide.7", "doc/man/man7/openssl-core.h.7", "doc/man/man7/openssl-core_dispatch.h.7", "doc/man/man7/openssl-core_names.h.7", "doc/man/man7/openssl-env.7", "doc/man/man7/openssl-glossary.7", + "doc/man/man7/openssl-qlog.7", + "doc/man/man7/openssl-quic-concurrency.7", + "doc/man/man7/openssl-quic.7", "doc/man/man7/openssl-threads.7", "doc/man/man7/openssl_user_macros.7", + "doc/man/man7/ossl-guide-introduction.7", + "doc/man/man7/ossl-guide-libcrypto-introduction.7", + "doc/man/man7/ossl-guide-libraries-introduction.7", + "doc/man/man7/ossl-guide-libssl-introduction.7", + "doc/man/man7/ossl-guide-migration.7", + "doc/man/man7/ossl-guide-quic-client-block.7", + "doc/man/man7/ossl-guide-quic-client-non-block.7", + "doc/man/man7/ossl-guide-quic-introduction.7", + "doc/man/man7/ossl-guide-quic-multi-stream.7", + "doc/man/man7/ossl-guide-quic-server-block.7", + "doc/man/man7/ossl-guide-quic-server-non-block.7", + "doc/man/man7/ossl-guide-tls-client-block.7", + "doc/man/man7/ossl-guide-tls-client-non-block.7", + "doc/man/man7/ossl-guide-tls-introduction.7", + "doc/man/man7/ossl-guide-tls-server-block.7", "doc/man/man7/ossl_store-file.7", "doc/man/man7/ossl_store.7", "doc/man/man7/passphrase-encoding.7", @@ -20161,10 +23478,10 @@ our %unified_info = ( "doc/man/man7/provider-object.7", "doc/man/man7/provider-rand.7", "doc/man/man7/provider-signature.7", + "doc/man/man7/provider-skeymgmt.7", "doc/man/man7/provider-storemgmt.7", "doc/man/man7/provider.7", "doc/man/man7/proxy-certificates.7", - "doc/man/man7/ssl.7", "doc/man/man7/x509.7" ] }, @@ -20176,6 +23493,7 @@ our %unified_info = ( ], "programs" => [ "apps/openssl", + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -20186,7 +23504,24 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test", "test/aborttest", "test/acvp_test", @@ -20204,21 +23539,28 @@ our %unified_info = ( "test/asynctest", "test/bad_dtls_test", "test/bftest", + "test/bio_addr_test", + "test/bio_base64_test", "test/bio_callback_test", "test/bio_core_test", + "test/bio_dgram_test", "test/bio_enc_test", "test/bio_memleak_test", + "test/bio_meth_test", "test/bio_prefix_text", "test/bio_pw_callback_test", "test/bio_readbuffer_test", + "test/bio_tfo_test", "test/bioprinttest", "test/bn_internal_test", "test/bntest", + "test/build_wincrypt_test", "test/buildtest_c_aes", "test/buildtest_c_async", "test/buildtest_c_blowfish", "test/buildtest_c_bn", "test/buildtest_c_buffer", + "test/buildtest_c_byteorder", "test/buildtest_c_camellia", "test/buildtest_c_cast", "test/buildtest_c_cmac", @@ -20227,7 +23569,6 @@ our %unified_info = ( "test/buildtest_c_conftypes", "test/buildtest_c_core", "test/buildtest_c_core_dispatch", - "test/buildtest_c_core_names", "test/buildtest_c_core_object", "test/buildtest_c_cryptoerr_legacy", "test/buildtest_c_decoder", @@ -20236,6 +23577,7 @@ our %unified_info = ( "test/buildtest_c_dsa", "test/buildtest_c_dtls1", "test/buildtest_c_e_os2", + "test/buildtest_c_e_ostime", "test/buildtest_c_ebcdic", "test/buildtest_c_ec", "test/buildtest_c_ecdh", @@ -20245,13 +23587,16 @@ our %unified_info = ( "test/buildtest_c_evp", "test/buildtest_c_fips_names", "test/buildtest_c_hmac", + "test/buildtest_c_hpke", "test/buildtest_c_http", "test/buildtest_c_idea", + "test/buildtest_c_indicator", "test/buildtest_c_kdf", "test/buildtest_c_macros", "test/buildtest_c_md4", "test/buildtest_c_md5", "test/buildtest_c_mdc2", + "test/buildtest_c_ml_kem", "test/buildtest_c_modes", "test/buildtest_c_obj_mac", "test/buildtest_c_objects", @@ -20262,6 +23607,7 @@ our %unified_info = ( "test/buildtest_c_pem2", "test/buildtest_c_prov_ssl", "test/buildtest_c_provider", + "test/buildtest_c_quic", "test/buildtest_c_rand", "test/buildtest_c_rc2", "test/buildtest_c_rc4", @@ -20276,11 +23622,14 @@ our %unified_info = ( "test/buildtest_c_stack", "test/buildtest_c_store", "test/buildtest_c_symhacks", + "test/buildtest_c_thread", "test/buildtest_c_tls1", "test/buildtest_c_ts", "test/buildtest_c_txt_db", "test/buildtest_c_types", "test/buildtest_c_whrlpool", + "test/byteorder_test", + "test/ca_internals_test", "test/casttest", "test/chacha_internal_test", "test/cipher_overhead_test", @@ -20309,6 +23658,7 @@ our %unified_info = ( "test/curve448_internal_test", "test/d2i_test", "test/danetest", + "test/decoder_propq_test", "test/defltfips_test", "test/destest", "test/dhtest", @@ -20333,9 +23683,12 @@ our %unified_info = ( "test/evp_kdf_test", "test/evp_libctx_test", "test/evp_pkey_ctx_new_from_name", + "test/evp_pkey_dhkem_test", "test/evp_pkey_dparams_test", "test/evp_pkey_provided_test", + "test/evp_skey_test", "test/evp_test", + "test/evp_xof_test", "test/exdatatest", "test/exptest", "test/ext_internal_test", @@ -20345,21 +23698,29 @@ our %unified_info = ( "test/gmdifftest", "test/hexstr_test", "test/hmactest", + "test/hpke_test", "test/http_test", "test/ideatest", "test/igetest", + "test/json_test", "test/keymgmt_internal_test", "test/lhash_test", + "test/list_test", "test/localetest", "test/mdc2_internal_test", "test/mdc2test", + "test/membio_test", "test/memleaktest", + "test/ml_dsa_test", + "test/ml_kem_evp_extra_test", + "test/ml_kem_internal_test", "test/modes_internal_test", "test/namemap_internal_test", "test/nodefltctxtest", "test/ocspapitest", "test/ossl_store_test", "test/packettest", + "test/pairwise_fail_test", "test/param_build_test", "test/params_api_test", "test/params_conversion_test", @@ -20368,36 +23729,65 @@ our %unified_info = ( "test/pbetest", "test/pem_read_depr_test", "test/pemtest", + "test/pkcs12_api_test", "test/pkcs12_format_test", "test/pkcs7_test", "test/pkey_meth_kdf_test", "test/pkey_meth_test", "test/poly1305_internal_test", + "test/priority_queue_test", "test/property_test", "test/prov_config_test", "test/provfetchtest", + "test/provider_default_search_path_test", "test/provider_fallback_test", "test/provider_internal_test", "test/provider_pkey_test", "test/provider_status_test", "test/provider_test", "test/punycode_test", + "test/quic_ackm_test", + "test/quic_cc_test", + "test/quic_cfq_test", + "test/quic_client_test", + "test/quic_fc_test", + "test/quic_fifd_test", + "test/quic_lcidm_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_qlog_test", + "test/quic_radix_test", + "test/quic_rcidm_test", + "test/quic_record_test", + "test/quic_srt_gen_test", + "test/quic_srtm_test", + "test/quic_stream_test", + "test/quic_tserver_test", + "test/quic_txp_test", + "test/quic_txpim_test", + "test/quic_wire_test", + "test/quicapitest", + "test/quicfaultstest", "test/rand_status_test", "test/rand_test", "test/rc2test", "test/rc4test", "test/rc5test", - "test/rdrand_sanitytest", + "test/rdcpu_sanitytest", "test/recordlentest", + "test/rpktest", "test/rsa_complex", "test/rsa_mp_test", "test/rsa_sp800_56b_test", "test/rsa_test", + "test/rsa_x931_test", + "test/safe_math_test", "test/sanitytest", "test/secmemtest", "test/servername_test", "test/sha_test", "test/siphash_internal_test", + "test/slh_dsa_test", "test/sm2_internal_test", "test/sm3_internal_test", "test/sm4_internal_test", @@ -20405,6 +23795,7 @@ our %unified_info = ( "test/srptest", "test/ssl_cert_table_internal_test", "test/ssl_ctx_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", @@ -20412,13 +23803,17 @@ our %unified_info = ( "test/sslbuffertest", "test/sslcorrupttest", "test/stack_test", + "test/strtoultest", "test/sysdefaulttest", "test/test_test", + "test/threadpool_test", "test/threadstest", "test/threadstest_fips", "test/time_offset_test", + "test/time_test", "test/tls13ccstest", "test/tls13encryptiontest", + "test/tls13groupselection_test", "test/trace_api_test", "test/uitest", "test/upcallstest", @@ -20428,9 +23823,13 @@ our %unified_info = ( "test/verify_extra_test", "test/versions", "test/wpackettest", + "test/x509_acert_test", "test/x509_check_cert_pkey_test", "test/x509_dup_cert_test", "test/x509_internal_test", + "test/x509_load_cert_file_test", + "test/x509_req_test", + "test/x509_test", "test/x509_time_test", "test/x509aux" ], @@ -20445,6 +23844,33 @@ our %unified_info = ( "apps/CA.pl" => [ "apps/CA.pl.in" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/ca.c" + ], + "apps/lib/ca_internals_test-bin-app_libctx.o" => [ + "apps/lib/app_libctx.c" + ], + "apps/lib/ca_internals_test-bin-app_provider.o" => [ + "apps/lib/app_provider.c" + ], + "apps/lib/ca_internals_test-bin-app_rand.o" => [ + "apps/lib/app_rand.c" + ], + "apps/lib/ca_internals_test-bin-app_x509.o" => [ + "apps/lib/app_x509.c" + ], + "apps/lib/ca_internals_test-bin-apps.o" => [ + "apps/lib/apps.c" + ], + "apps/lib/ca_internals_test-bin-apps_ui.o" => [ + "apps/lib/apps_ui.c" + ], + "apps/lib/ca_internals_test-bin-engine.o" => [ + "apps/lib/engine.c" + ], + "apps/lib/ca_internals_test-bin-fmt.o" => [ + "apps/lib/fmt.c" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/lib/cmp_mock_srv.c" ], @@ -20466,6 +23892,9 @@ our %unified_info = ( "apps/lib/libapps-lib-apps.o" => [ "apps/lib/apps.c" ], + "apps/lib/libapps-lib-apps_opt_printf.o" => [ + "apps/lib/apps_opt_printf.c" + ], "apps/lib/libapps-lib-apps_ui.o" => [ "apps/lib/apps_ui.c" ], @@ -20484,6 +23913,9 @@ our %unified_info = ( "apps/lib/libapps-lib-http_server.o" => [ "apps/lib/http_server.c" ], + "apps/lib/libapps-lib-log.o" => [ + "apps/lib/log.c" + ], "apps/lib/libapps-lib-names.o" => [ "apps/lib/names.c" ], @@ -20521,12 +23953,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -20582,6 +24016,7 @@ our %unified_info = ( "apps/openssl-bin-s_server.o", "apps/openssl-bin-s_time.o", "apps/openssl-bin-sess_id.o", + "apps/openssl-bin-skeyutl.o", "apps/openssl-bin-smime.o", "apps/openssl-bin-speed.o", "apps/openssl-bin-spkac.o", @@ -20730,6 +24165,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/sess_id.c" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/skeyutl.c" + ], "apps/openssl-bin-smime.o" => [ "apps/smime.c" ], @@ -20799,6 +24237,12 @@ our %unified_info = ( "crypto/aria/libcrypto-lib-aria.o" => [ "crypto/aria/aria.c" ], + "crypto/asn1/asn1_time_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], + "crypto/asn1/ca_internals_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], "crypto/asn1/libcrypto-lib-a_bitstr.o" => [ "crypto/asn1/a_bitstr.c" ], @@ -20991,6 +24435,9 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" => [ "crypto/asn1/x_val.c" ], + "crypto/asn1_time_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/async/arch/libcrypto-lib-async_null.o" => [ "crypto/async/arch/async_null.c" ], @@ -21084,6 +24531,9 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_dgram.o" => [ "crypto/bio/bss_dgram.c" ], + "crypto/bio/libcrypto-lib-bss_dgram_pair.o" => [ + "crypto/bio/bss_dgram_pair.c" + ], "crypto/bio/libcrypto-lib-bss_fd.o" => [ "crypto/bio/bss_fd.c" ], @@ -21297,6 +24747,9 @@ our %unified_info = ( "crypto/buffer/libfips-lib-buffer.o" => [ "crypto/buffer/buffer.c" ], + "crypto/ca_internals_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/camellia/libcrypto-lib-camellia.o" => [ "crypto/camellia/camellia.c" ], @@ -21354,6 +24807,9 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_err.o" => [ "crypto/cmp/cmp_err.c" ], + "crypto/cmp/libcrypto-lib-cmp_genm.o" => [ + "crypto/cmp/cmp_genm.c" + ], "crypto/cmp/libcrypto-lib-cmp_hdr.o" => [ "crypto/cmp/cmp_hdr.c" ], @@ -22029,9 +25485,15 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_blocks.o" => [ "crypto/err/err_blocks.c" ], + "crypto/err/libcrypto-lib-err_mark.o" => [ + "crypto/err/err_mark.c" + ], "crypto/err/libcrypto-lib-err_prn.o" => [ "crypto/err/err_prn.c" ], + "crypto/err/libcrypto-lib-err_save.o" => [ + "crypto/err/err_save.c" + ], "crypto/ess/libcrypto-lib-ess_asn1.o" => [ "crypto/ess/ess_asn1.c" ], @@ -22278,9 +25740,15 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libcrypto-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libcrypto-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libcrypto-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/evp/libfips-lib-asymcipher.o" => [ "crypto/evp/asymcipher.c" ], @@ -22326,9 +25794,6 @@ our %unified_info = ( "crypto/evp/libfips-lib-keymgmt_meth.o" => [ "crypto/evp/keymgmt_meth.c" ], - "crypto/evp/libfips-lib-m_sigver.o" => [ - "crypto/evp/m_sigver.c" - ], "crypto/evp/libfips-lib-mac_lib.o" => [ "crypto/evp/mac_lib.c" ], @@ -22347,9 +25812,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libfips-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libfips-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libfips-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/ffc/libcrypto-lib-ffc_backend.o" => [ "crypto/ffc/ffc_backend.c" ], @@ -22392,12 +25863,30 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params_validate.o" => [ "crypto/ffc/ffc_params_validate.c" ], + "crypto/hashtable/libcrypto-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libcrypto-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], + "crypto/hashtable/libfips-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libfips-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], "crypto/hmac/libcrypto-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], "crypto/hmac/libfips-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], + "crypto/hpke/libcrypto-lib-hpke.o" => [ + "crypto/hpke/hpke.c" + ], + "crypto/hpke/libcrypto-lib-hpke_util.o" => [ + "crypto/hpke/hpke_util.c" + ], "crypto/http/libcrypto-lib-http_client.o" => [ "crypto/http/http_client.c" ], @@ -22440,6 +25929,9 @@ our %unified_info = ( "crypto/libcrypto-lib-bsearch.o" => [ "crypto/bsearch.c" ], + "crypto/libcrypto-lib-comp_methods.o" => [ + "crypto/comp_methods.c" + ], "crypto/libcrypto-lib-context.o" => [ "crypto/context.c" ], @@ -22467,9 +25959,15 @@ our %unified_info = ( "crypto/libcrypto-lib-cversion.o" => [ "crypto/cversion.c" ], + "crypto/libcrypto-lib-defaults.o" => [ + "crypto/defaults.c" + ], "crypto/libcrypto-lib-der_writer.o" => [ "crypto/der_writer.c" ], + "crypto/libcrypto-lib-deterministic_nonce.o" => [ + "crypto/deterministic_nonce.c" + ], "crypto/libcrypto-lib-ebcdic.o" => [ "crypto/ebcdic.c" ], @@ -22479,6 +25977,9 @@ our %unified_info = ( "crypto/libcrypto-lib-getenv.o" => [ "crypto/getenv.c" ], + "crypto/libcrypto-lib-indicator_core.o" => [ + "crypto/indicator_core.c" + ], "crypto/libcrypto-lib-info.o" => [ "crypto/info.c" ], @@ -22530,6 +26031,9 @@ our %unified_info = ( "crypto/libcrypto-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libcrypto-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libcrypto-lib-passphrase.o" => [ "crypto/passphrase.c" ], @@ -22551,12 +26055,21 @@ our %unified_info = ( "crypto/libcrypto-lib-punycode.o" => [ "crypto/punycode.c" ], + "crypto/libcrypto-lib-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/libcrypto-lib-self_test_core.o" => [ "crypto/self_test_core.c" ], + "crypto/libcrypto-lib-sleep.o" => [ + "crypto/sleep.c" + ], "crypto/libcrypto-lib-sparse_array.o" => [ "crypto/sparse_array.c" ], + "crypto/libcrypto-lib-ssl_err.o" => [ + "crypto/ssl_err.c" + ], "crypto/libcrypto-lib-threads_lib.o" => [ "crypto/threads_lib.c" ], @@ -22569,6 +26082,9 @@ our %unified_info = ( "crypto/libcrypto-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libcrypto-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libcrypto-lib-trace.o" => [ "crypto/trace.c" ], @@ -22635,6 +26151,9 @@ our %unified_info = ( "crypto/libfips-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libfips-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libfips-lib-provider_core.o" => [ "crypto/provider_core.c" ], @@ -22659,6 +26178,9 @@ our %unified_info = ( "crypto/libfips-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libfips-lib-time.o" => [ + "crypto/time.c" + ], "crypto/md4/libcrypto-lib-md4_dgst.o" => [ "crypto/md4/md4_dgst.c" ], @@ -22680,6 +26202,60 @@ our %unified_info = ( "crypto/mdc2/libcrypto-lib-mdc2dgst.o" => [ "crypto/mdc2/mdc2dgst.c" ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_kem/libcrypto-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], + "crypto/ml_kem/libfips-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], "crypto/modes/libcrypto-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22713,6 +26289,9 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libcrypto-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/modes/libfips-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22737,6 +26316,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libfips-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/objects/libcrypto-lib-o_names.o" => [ "crypto/objects/o_names.c" ], @@ -22782,6 +26364,9 @@ our %unified_info = ( "crypto/ocsp/libcrypto-lib-v3_ocsp.o" => [ "crypto/ocsp/v3_ocsp.c" ], + "crypto/packettest-bin-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/pem/libcrypto-lib-pem_all.o" => [ "crypto/pem/pem_all.c" ], @@ -22941,6 +26526,9 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_pool.o" => [ "crypto/rand/rand_pool.c" ], + "crypto/rand/libcrypto-lib-rand_uniform.o" => [ + "crypto/rand/rand_uniform.c" + ], "crypto/rand/libcrypto-lib-randfile.o" => [ "crypto/rand/randfile.c" ], @@ -23154,6 +26742,66 @@ our %unified_info = ( "crypto/siphash/libcrypto-lib-siphash.o" => [ "crypto/siphash/siphash.c" ], + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], + "crypto/slh_dsa/libfips-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libfips-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libfips-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libfips-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libfips-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], "crypto/sm2/libcrypto-lib-sm2_crypt.o" => [ "crypto/sm2/sm2_crypt.c" ], @@ -23208,6 +26856,42 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_strings.o" => [ "crypto/store/store_strings.c" ], + "crypto/thread/arch/libcrypto-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/arch/libfips-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libfips-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libfips-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/libcrypto-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libcrypto-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libcrypto-lib-internal.o" => [ + "crypto/thread/internal.c" + ], + "crypto/thread/libfips-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libfips-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libfips-lib-internal.o" => [ + "crypto/thread/internal.c" + ], "crypto/ts/libcrypto-lib-ts_asn1.o" => [ "crypto/ts/ts_asn1.c" ], @@ -23292,6 +26976,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_tree.o" => [ "crypto/x509/pcy_tree.c" ], + "crypto/x509/libcrypto-lib-t_acert.o" => [ + "crypto/x509/t_acert.c" + ], "crypto/x509/libcrypto-lib-t_crl.o" => [ "crypto/x509/t_crl.c" ], @@ -23301,6 +26988,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-t_x509.o" => [ "crypto/x509/t_x509.c" ], + "crypto/x509/libcrypto-lib-v3_aaa.o" => [ + "crypto/x509/v3_aaa.c" + ], + "crypto/x509/libcrypto-lib-v3_ac_tgt.o" => [ + "crypto/x509/v3_ac_tgt.c" + ], "crypto/x509/libcrypto-lib-v3_addr.o" => [ "crypto/x509/v3_addr.c" ], @@ -23316,6 +27009,21 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_asid.o" => [ "crypto/x509/v3_asid.c" ], + "crypto/x509/libcrypto-lib-v3_attrdesc.o" => [ + "crypto/x509/v3_attrdesc.c" + ], + "crypto/x509/libcrypto-lib-v3_attrmap.o" => [ + "crypto/x509/v3_attrmap.c" + ], + "crypto/x509/libcrypto-lib-v3_audit_id.o" => [ + "crypto/x509/v3_audit_id.c" + ], + "crypto/x509/libcrypto-lib-v3_authattid.o" => [ + "crypto/x509/v3_authattid.c" + ], + "crypto/x509/libcrypto-lib-v3_battcons.o" => [ + "crypto/x509/v3_battcons.c" + ], "crypto/x509/libcrypto-lib-v3_bcons.o" => [ "crypto/x509/v3_bcons.c" ], @@ -23340,15 +27048,24 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_genn.o" => [ "crypto/x509/v3_genn.c" ], + "crypto/x509/libcrypto-lib-v3_group_ac.o" => [ + "crypto/x509/v3_group_ac.c" + ], "crypto/x509/libcrypto-lib-v3_ia5.o" => [ "crypto/x509/v3_ia5.c" ], + "crypto/x509/libcrypto-lib-v3_ind_iss.o" => [ + "crypto/x509/v3_ind_iss.c" + ], "crypto/x509/libcrypto-lib-v3_info.o" => [ "crypto/x509/v3_info.c" ], "crypto/x509/libcrypto-lib-v3_int.o" => [ "crypto/x509/v3_int.c" ], + "crypto/x509/libcrypto-lib-v3_iobo.o" => [ + "crypto/x509/v3_iobo.c" + ], "crypto/x509/libcrypto-lib-v3_ist.o" => [ "crypto/x509/v3_ist.c" ], @@ -23358,6 +27075,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_ncons.o" => [ "crypto/x509/v3_ncons.c" ], + "crypto/x509/libcrypto-lib-v3_no_ass.o" => [ + "crypto/x509/v3_no_ass.c" + ], + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o" => [ + "crypto/x509/v3_no_rev_avail.c" + ], "crypto/x509/libcrypto-lib-v3_pci.o" => [ "crypto/x509/v3_pci.c" ], @@ -23379,18 +27102,36 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_purp.o" => [ "crypto/x509/v3_purp.c" ], + "crypto/x509/libcrypto-lib-v3_rolespec.o" => [ + "crypto/x509/v3_rolespec.c" + ], "crypto/x509/libcrypto-lib-v3_san.o" => [ "crypto/x509/v3_san.c" ], + "crypto/x509/libcrypto-lib-v3_sda.o" => [ + "crypto/x509/v3_sda.c" + ], + "crypto/x509/libcrypto-lib-v3_single_use.o" => [ + "crypto/x509/v3_single_use.c" + ], "crypto/x509/libcrypto-lib-v3_skid.o" => [ "crypto/x509/v3_skid.c" ], + "crypto/x509/libcrypto-lib-v3_soa_id.o" => [ + "crypto/x509/v3_soa_id.c" + ], "crypto/x509/libcrypto-lib-v3_sxnet.o" => [ "crypto/x509/v3_sxnet.c" ], + "crypto/x509/libcrypto-lib-v3_timespec.o" => [ + "crypto/x509/v3_timespec.c" + ], "crypto/x509/libcrypto-lib-v3_tlsf.o" => [ "crypto/x509/v3_tlsf.c" ], + "crypto/x509/libcrypto-lib-v3_usernotice.o" => [ + "crypto/x509/v3_usernotice.c" + ], "crypto/x509/libcrypto-lib-v3_utf8.o" => [ "crypto/x509/v3_utf8.c" ], @@ -23400,6 +27141,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3err.o" => [ "crypto/x509/v3err.c" ], + "crypto/x509/libcrypto-lib-x509_acert.o" => [ + "crypto/x509/x509_acert.c" + ], "crypto/x509/libcrypto-lib-x509_att.o" => [ "crypto/x509/x509_att.c" ], @@ -23451,6 +27195,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_vpm.o" => [ "crypto/x509/x509_vpm.c" ], + "crypto/x509/libcrypto-lib-x509aset.o" => [ + "crypto/x509/x509aset.c" + ], "crypto/x509/libcrypto-lib-x509cset.o" => [ "crypto/x509/x509cset.c" ], @@ -23478,6 +27225,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_exten.o" => [ "crypto/x509/x_exten.c" ], + "crypto/x509/libcrypto-lib-x_ietfatt.o" => [ + "crypto/x509/x_ietfatt.c" + ], "crypto/x509/libcrypto-lib-x_name.o" => [ "crypto/x509/x_name.c" ], @@ -23499,6 +27249,16 @@ our %unified_info = ( "engines/libcrypto-lib-e_padlock.o" => [ "engines/e_padlock.c" ], + "fuzz/acert-test" => [ + "fuzz/acert-test-bin-acert.o", + "fuzz/acert-test-bin-test-corpus.o" + ], + "fuzz/acert-test-bin-acert.o" => [ + "fuzz/acert.c" + ], + "fuzz/acert-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/asn1-test" => [ "fuzz/asn1-test-bin-asn1.o", "fuzz/asn1-test-bin-fuzz_rand.o", @@ -23611,6 +27371,190 @@ our %unified_info = ( "fuzz/ct-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/decoder-test" => [ + "fuzz/decoder-test-bin-decoder.o", + "fuzz/decoder-test-bin-fuzz_rand.o", + "fuzz/decoder-test-bin-test-corpus.o" + ], + "fuzz/decoder-test-bin-decoder.o" => [ + "fuzz/decoder.c" + ], + "fuzz/decoder-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/decoder-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsclient-test" => [ + "fuzz/dtlsclient-test-bin-dtlsclient.o", + "fuzz/dtlsclient-test-bin-fuzz_rand.o", + "fuzz/dtlsclient-test-bin-test-corpus.o" + ], + "fuzz/dtlsclient-test-bin-dtlsclient.o" => [ + "fuzz/dtlsclient.c" + ], + "fuzz/dtlsclient-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsclient-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsserver-test" => [ + "fuzz/dtlsserver-test-bin-dtlsserver.o", + "fuzz/dtlsserver-test-bin-fuzz_rand.o", + "fuzz/dtlsserver-test-bin-test-corpus.o" + ], + "fuzz/dtlsserver-test-bin-dtlsserver.o" => [ + "fuzz/dtlsserver.c" + ], + "fuzz/dtlsserver-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsserver-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/hashtable-test" => [ + "fuzz/hashtable-test-bin-fuzz_rand.o", + "fuzz/hashtable-test-bin-hashtable.o", + "fuzz/hashtable-test-bin-test-corpus.o" + ], + "fuzz/hashtable-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/hashtable-test-bin-hashtable.o" => [ + "fuzz/hashtable.c" + ], + "fuzz/hashtable-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-dsa-test" => [ + "fuzz/ml-dsa-test-bin-fuzz_rand.o", + "fuzz/ml-dsa-test-bin-ml-dsa.o", + "fuzz/ml-dsa-test-bin-test-corpus.o" + ], + "fuzz/ml-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-dsa-test-bin-ml-dsa.o" => [ + "fuzz/ml-dsa.c" + ], + "fuzz/ml-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-kem-test" => [ + "fuzz/ml-kem-test-bin-fuzz_rand.o", + "fuzz/ml-kem-test-bin-ml-kem.o", + "fuzz/ml-kem-test-bin-test-corpus.o" + ], + "fuzz/ml-kem-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-kem-test-bin-ml-kem.o" => [ + "fuzz/ml-kem.c" + ], + "fuzz/ml-kem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/pem-test" => [ + "fuzz/pem-test-bin-pem.o", + "fuzz/pem-test-bin-test-corpus.o" + ], + "fuzz/pem-test-bin-pem.o" => [ + "fuzz/pem.c" + ], + "fuzz/pem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/provider-test" => [ + "fuzz/provider-test-bin-provider.o", + "fuzz/provider-test-bin-test-corpus.o" + ], + "fuzz/provider-test-bin-provider.o" => [ + "fuzz/provider.c" + ], + "fuzz/provider-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/punycode-test" => [ + "fuzz/punycode-test-bin-punycode.o", + "fuzz/punycode-test-bin-test-corpus.o" + ], + "fuzz/punycode-test-bin-punycode.o" => [ + "fuzz/punycode.c" + ], + "fuzz/punycode-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-client-test" => [ + "fuzz/quic-client-test-bin-fuzz_rand.o", + "fuzz/quic-client-test-bin-quic-client.o", + "fuzz/quic-client-test-bin-test-corpus.o" + ], + "fuzz/quic-client-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-client-test-bin-quic-client.o" => [ + "fuzz/quic-client.c" + ], + "fuzz/quic-client-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-lcidm-test" => [ + "fuzz/quic-lcidm-test-bin-fuzz_rand.o", + "fuzz/quic-lcidm-test-bin-quic-lcidm.o", + "fuzz/quic-lcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-lcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-lcidm-test-bin-quic-lcidm.o" => [ + "fuzz/quic-lcidm.c" + ], + "fuzz/quic-lcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-rcidm-test" => [ + "fuzz/quic-rcidm-test-bin-fuzz_rand.o", + "fuzz/quic-rcidm-test-bin-quic-rcidm.o", + "fuzz/quic-rcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-rcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-rcidm-test-bin-quic-rcidm.o" => [ + "fuzz/quic-rcidm.c" + ], + "fuzz/quic-rcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-server-test" => [ + "fuzz/quic-server-test-bin-fuzz_rand.o", + "fuzz/quic-server-test-bin-quic-server.o", + "fuzz/quic-server-test-bin-test-corpus.o" + ], + "fuzz/quic-server-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-server-test-bin-quic-server.o" => [ + "fuzz/quic-server.c" + ], + "fuzz/quic-server-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-srtm-test" => [ + "fuzz/quic-srtm-test-bin-fuzz_rand.o", + "fuzz/quic-srtm-test-bin-quic-srtm.o", + "fuzz/quic-srtm-test-bin-test-corpus.o" + ], + "fuzz/quic-srtm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-srtm-test-bin-quic-srtm.o" => [ + "fuzz/quic-srtm.c" + ], + "fuzz/quic-srtm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/server-test" => [ "fuzz/server-test-bin-fuzz_rand.o", "fuzz/server-test-bin-server.o", @@ -23625,6 +27569,40 @@ our %unified_info = ( "fuzz/server-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/slh-dsa-test" => [ + "fuzz/slh-dsa-test-bin-fuzz_rand.o", + "fuzz/slh-dsa-test-bin-slh-dsa.o", + "fuzz/slh-dsa-test-bin-test-corpus.o" + ], + "fuzz/slh-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/slh-dsa-test-bin-slh-dsa.o" => [ + "fuzz/slh-dsa.c" + ], + "fuzz/slh-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/smime-test" => [ + "fuzz/smime-test-bin-smime.o", + "fuzz/smime-test-bin-test-corpus.o" + ], + "fuzz/smime-test-bin-smime.o" => [ + "fuzz/smime.c" + ], + "fuzz/smime-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test" => [ + "fuzz/v3name-test-bin-test-corpus.o", + "fuzz/v3name-test-bin-v3name.o" + ], + "fuzz/v3name-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test-bin-v3name.o" => [ + "fuzz/v3name.c" + ], "fuzz/x509-test" => [ "fuzz/x509-test-bin-fuzz_rand.o", "fuzz/x509-test-bin-test-corpus.o", @@ -23744,6 +27722,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -23804,6 +27783,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -23979,7 +27959,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", + "crypto/err/libcrypto-lib-err_mark.o", "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o", "crypto/ess/libcrypto-lib-ess_asn1.o", "crypto/ess/libcrypto-lib-ess_err.o", "crypto/ess/libcrypto-lib-ess_lib.o", @@ -24062,7 +28044,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/ffc/libcrypto-lib-ffc_backend.o", "crypto/ffc/libcrypto-lib-ffc_dh.o", "crypto/ffc/libcrypto-lib-ffc_key_generate.o", @@ -24070,7 +28054,11 @@ our %unified_info = ( "crypto/ffc/libcrypto-lib-ffc_params.o", "crypto/ffc/libcrypto-lib-ffc_params_generate.o", "crypto/ffc/libcrypto-lib-ffc_params_validate.o", + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", "crypto/hmac/libcrypto-lib-hmac.o", + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o", "crypto/http/libcrypto-lib-http_client.o", "crypto/http/libcrypto-lib-http_err.o", "crypto/http/libcrypto-lib-http_lib.o", @@ -24084,6 +28072,7 @@ our %unified_info = ( "crypto/lhash/libcrypto-lib-lhash.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -24093,10 +28082,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -24114,6 +28106,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -24121,12 +28114,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/md4/libcrypto-lib-md4_dgst.o", @@ -24136,6 +28133,15 @@ our %unified_info = ( "crypto/md5/libcrypto-lib-md5_sha1.o", "crypto/mdc2/libcrypto-lib-mdc2_one.o", "crypto/mdc2/libcrypto-lib-mdc2dgst.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_kem/libcrypto-lib-ml_kem.o", "crypto/modes/libcrypto-lib-cbc128.o", "crypto/modes/libcrypto-lib-ccm128.o", "crypto/modes/libcrypto-lib-cfb128.o", @@ -24147,6 +28153,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/objects/libcrypto-lib-o_names.o", "crypto/objects/libcrypto-lib-obj_dat.o", "crypto/objects/libcrypto-lib-obj_err.o", @@ -24210,6 +28217,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rc2/libcrypto-lib-rc2_cbc.o", "crypto/rc2/libcrypto-lib-rc2_ecb.o", @@ -24258,6 +28266,16 @@ our %unified_info = ( "crypto/sha/libcrypto-lib-sha3.o", "crypto/sha/libcrypto-lib-sha512.o", "crypto/siphash/libcrypto-lib-siphash.o", + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", "crypto/sm2/libcrypto-lib-sm2_crypt.o", "crypto/sm2/libcrypto-lib-sm2_err.o", "crypto/sm2/libcrypto-lib-sm2_key.o", @@ -24275,6 +28293,12 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_register.o", "crypto/store/libcrypto-lib-store_result.o", "crypto/store/libcrypto-lib-store_strings.o", + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", "crypto/ts/libcrypto-lib-ts_asn1.o", "crypto/ts/libcrypto-lib-ts_conf.o", "crypto/ts/libcrypto-lib-ts_err.o", @@ -24303,14 +28327,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -24319,12 +28351,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -24332,13 +28369,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -24356,6 +28400,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -24365,6 +28410,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -24385,14 +28431,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -24409,12 +28456,60 @@ our %unified_info = ( "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", "ssl/libssl-lib-tls_srp.o", - "ssl/record/libssl-lib-dtls1_bitmap.o", + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o", "ssl/record/libssl-lib-rec_layer_d1.o", "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o", "ssl/statem/libssl-lib-extensions.o", "ssl/statem/libssl-lib-extensions_clnt.o", "ssl/statem/libssl-lib-extensions_cust.o", @@ -24452,12 +28547,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/der/der_ecx_key.c" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/der/der_ml_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/der/der_ml_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/der/der_rsa_gen.c" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/der/der_rsa_key.c" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/der/der_slh_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/der/der_slh_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/der/der_wrap_gen.c" ], @@ -24524,6 +28631,9 @@ our %unified_info = ( "providers/common/libfips-lib-securitycheck_fips.o" => [ "providers/common/securitycheck_fips.c" ], + "providers/endecode_test-bin-legacyprov.o" => [ + "providers/legacyprov.c" + ], "providers/evp_extra_test-bin-legacyprov.o" => [ "providers/legacyprov.c" ], @@ -24538,6 +28648,9 @@ our %unified_info = ( "providers/fips/fips-dso-fips_entry.o" => [ "providers/fips/fips_entry.c" ], + "providers/fips/libfips-lib-fipsindicator.o" => [ + "providers/fips/fipsindicator.c" + ], "providers/fips/libfips-lib-fipsprov.o" => [ "providers/fips/fipsprov.c" ], @@ -24601,6 +28714,15 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o" => [ "providers/implementations/ciphers/cipher_aes_gcm_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o" => [ "providers/implementations/ciphers/cipher_aes_hw.c" ], @@ -24673,9 +28795,27 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o" => [ "providers/implementations/ciphers/cipher_sm4.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o" => [ "providers/implementations/ciphers/cipher_sm4_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o" => [ "providers/implementations/ciphers/cipher_tdes.c" ], @@ -24895,6 +29035,15 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" => [ "providers/implementations/encode_decode/endecoder_common.c" ], + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o" => [ + "providers/implementations/encode_decode/ml_common_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o" => [ + "providers/implementations/encode_decode/ml_dsa_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" => [ + "providers/implementations/encode_decode/ml_kem_codecs.c" + ], "providers/implementations/exchange/libdefault-lib-dh_exch.o" => [ "providers/implementations/exchange/dh_exch.c" ], @@ -24919,9 +29068,15 @@ our %unified_info = ( "providers/implementations/exchange/libfips-lib-kdf_exch.o" => [ "providers/implementations/exchange/kdf_exch.c" ], + "providers/implementations/kdfs/libdefault-lib-argon2.o" => [ + "providers/implementations/kdfs/argon2.c" + ], "providers/implementations/kdfs/libdefault-lib-hkdf.o" => [ "providers/implementations/kdfs/hkdf.c" ], + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o" => [ + "providers/implementations/kdfs/hmacdrbg_kdf.c" + ], "providers/implementations/kdfs/libdefault-lib-kbkdf.o" => [ "providers/implementations/kdfs/kbkdf.c" ], @@ -24979,12 +29134,39 @@ our %unified_info = ( "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" => [ "providers/implementations/kdfs/pbkdf1.c" ], + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" => [ + "providers/implementations/kdfs/pvkkdf.c" + ], + "providers/implementations/kem/libdefault-lib-ec_kem.o" => [ + "providers/implementations/kem/ec_kem.c" + ], + "providers/implementations/kem/libdefault-lib-ecx_kem.o" => [ + "providers/implementations/kem/ecx_kem.c" + ], + "providers/implementations/kem/libdefault-lib-kem_util.o" => [ + "providers/implementations/kem/kem_util.c" + ], + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libdefault-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libdefault-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libfips-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libfips-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libfips-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libtemplate-lib-template_kem.o" => [ + "providers/implementations/kem/template_kem.c" + ], "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25003,9 +29185,21 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25024,9 +29218,24 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" => [ + "providers/implementations/keymgmt/template_kmgmt.c" + ], "providers/implementations/macs/libdefault-lib-blake2b_mac.o" => [ "providers/implementations/macs/blake2b_mac.c" ], @@ -25063,9 +29272,6 @@ our %unified_info = ( "providers/implementations/macs/libfips-lib-kmac_prov.o" => [ "providers/implementations/macs/kmac_prov.c" ], - "providers/implementations/rands/libdefault-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libdefault-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25081,12 +29287,12 @@ our %unified_info = ( "providers/implementations/rands/libdefault-lib-seed_src.o" => [ "providers/implementations/rands/seed_src.c" ], + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o" => [ + "providers/implementations/rands/seed_src_jitter.c" + ], "providers/implementations/rands/libdefault-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], - "providers/implementations/rands/libfips-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libfips-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25099,6 +29305,9 @@ our %unified_info = ( "providers/implementations/rands/libfips-lib-drbg_hmac.o" => [ "providers/implementations/rands/drbg_hmac.c" ], + "providers/implementations/rands/libfips-lib-fips_crng_test.o" => [ + "providers/implementations/rands/fips_crng_test.c" + ], "providers/implementations/rands/libfips-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], @@ -25126,9 +29335,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/implementations/signature/sm2_sig.c" ], @@ -25144,15 +29359,36 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libfips-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], "providers/implementations/storemgmt/libdefault-lib-file_store.o" => [ "providers/implementations/storemgmt/file_store.c" ], "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o" => [ "providers/implementations/storemgmt/file_store_any2obj.c" ], + "providers/implementations/storemgmt/libdefault-lib-winstore_store.o" => [ + "providers/implementations/storemgmt/winstore_store.c" + ], "providers/legacy" => [ "providers/legacy-dso-legacy.res", "providers/legacy-dso-legacyprov.o", @@ -25174,8 +29410,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/libcommon-lib-provider_ctx.o", "providers/common/libcommon-lib-provider_err.o", @@ -25187,7 +29427,7 @@ our %unified_info = ( "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", "providers/implementations/digests/libcommon-lib-digestcommon.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/methods/libcommon-lib-tls_pad.o" ], "providers/libcrypto-lib-baseprov.o" => [ "providers/baseprov.c" @@ -25223,6 +29463,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -25247,7 +29490,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -25276,11 +29525,16 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o", "providers/implementations/exchange/libdefault-lib-dh_exch.o", "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", "providers/implementations/exchange/libdefault-lib-ecx_exch.o", "providers/implementations/exchange/libdefault-lib-kdf_exch.o", + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -25291,6 +29545,11 @@ our %unified_info = ( "providers/implementations/kdfs/libdefault-lib-sskdf.o", "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", "providers/implementations/kdfs/libdefault-lib-x942kdf.o", + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", @@ -25298,7 +29557,11 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libdefault-lib-blake2b_mac.o", "providers/implementations/macs/libdefault-lib-blake2s_mac.o", "providers/implementations/macs/libdefault-lib-cmac_prov.o", @@ -25307,12 +29570,12 @@ our %unified_info = ( "providers/implementations/macs/libdefault-lib-kmac_prov.o", "providers/implementations/macs/libdefault-lib-poly1305_prov.o", "providers/implementations/macs/libdefault-lib-siphash_prov.o", - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", @@ -25322,11 +29585,16 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", "providers/implementations/storemgmt/libdefault-lib-file_store.o", "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", - "ssl/libdefault-lib-s3_cbc.o" + "providers/implementations/storemgmt/libdefault-lib-winstore_store.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" ], "providers/libfips.a" => [ "crypto/aes/libfips-lib-aes_cbc.o", @@ -25428,14 +29696,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", + "crypto/evp/libfips-lib-s_lib.o", "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o", "crypto/ffc/libfips-lib-ffc_backend.o", "crypto/ffc/libfips-lib-ffc_dh.o", "crypto/ffc/libfips-lib-ffc_key_generate.o", @@ -25443,6 +29712,8 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params.o", "crypto/ffc/libfips-lib-ffc_params_generate.o", "crypto/ffc/libfips-lib-ffc_params_validate.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o", "crypto/hmac/libfips-lib-hmac.o", "crypto/lhash/libfips-lib-lhash.o", "crypto/libfips-lib-asn1_dsa.o", @@ -25465,6 +29736,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -25473,6 +29745,16 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o", + "crypto/ml_kem/libfips-lib-ml_kem.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -25481,6 +29763,7 @@ our %unified_info = ( "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o", "crypto/property/libfips-lib-defn_cache.o", "crypto/property/libfips-lib-property.o", "crypto/property/libfips-lib-property_parse.o", @@ -25509,7 +29792,23 @@ our %unified_info = ( "crypto/sha/libfips-lib-sha256.o", "crypto/sha/libfips-lib-sha3.o", "crypto/sha/libfips-lib-sha512.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o", "crypto/stack/libfips-lib-stack.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o", "providers/common/der/libfips-lib-der_rsa_sig.o", "providers/common/libfips-lib-bio_prov.o", "providers/common/libfips-lib-capabilities.o", @@ -25518,6 +29817,7 @@ our %unified_info = ( "providers/common/libfips-lib-provider_util.o", "providers/common/libfips-lib-securitycheck.o", "providers/common/libfips-lib-securitycheck_fips.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o", @@ -25555,6 +29855,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", "providers/implementations/kem/libfips-lib-rsa_kem.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", @@ -25562,24 +29864,32 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libfips-lib-cmac_prov.o", "providers/implementations/macs/libfips-lib-gmac_prov.o", "providers/implementations/macs/libfips-lib-hmac_prov.o", "providers/implementations/macs/libfips-lib-kmac_prov.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o", "providers/libcommon.a", - "ssl/libfips-lib-s3_cbc.o" + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "providers/liblegacy-lib-prov_running.o" => [ "providers/prov_running.c" @@ -25609,13 +29919,12 @@ our %unified_info = ( "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", "providers/implementations/digests/liblegacy-lib-wp_prov.o", "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o", "providers/liblegacy-lib-prov_running.o" ], - "ssl/libdefault-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" - ], - "ssl/libfips-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" + "providers/libtemplate.a" => [ + "providers/implementations/kem/libtemplate-lib-template_kem.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "ssl/libssl-lib-bio_ssl.o" => [ "ssl/bio_ssl.c" @@ -25635,6 +29944,9 @@ our %unified_info = ( "ssl/libssl-lib-pqueue.o" => [ "ssl/pqueue.c" ], + "ssl/libssl-lib-priority_queue.o" => [ + "ssl/priority_queue.c" + ], "ssl/libssl-lib-s3_enc.o" => [ "ssl/s3_enc.c" ], @@ -25650,15 +29962,15 @@ our %unified_info = ( "ssl/libssl-lib-ssl_cert.o" => [ "ssl/ssl_cert.c" ], + "ssl/libssl-lib-ssl_cert_comp.o" => [ + "ssl/ssl_cert_comp.c" + ], "ssl/libssl-lib-ssl_ciph.o" => [ "ssl/ssl_ciph.c" ], "ssl/libssl-lib-ssl_conf.o" => [ "ssl/ssl_conf.c" ], - "ssl/libssl-lib-ssl_err.o" => [ - "ssl/ssl_err.c" - ], "ssl/libssl-lib-ssl_err_legacy.o" => [ "ssl/ssl_err_legacy.c" ], @@ -25707,11 +30019,131 @@ our %unified_info = ( "ssl/libssl-lib-tls_srp.o" => [ "ssl/tls_srp.c" ], - "ssl/record/libcommon-lib-tls_pad.o" => [ - "ssl/record/tls_pad.c" + "ssl/quic/libssl-lib-cc_newreno.o" => [ + "ssl/quic/cc_newreno.c" + ], + "ssl/quic/libssl-lib-json_enc.o" => [ + "ssl/quic/json_enc.c" + ], + "ssl/quic/libssl-lib-qlog.o" => [ + "ssl/quic/qlog.c" + ], + "ssl/quic/libssl-lib-qlog_event_helpers.o" => [ + "ssl/quic/qlog_event_helpers.c" + ], + "ssl/quic/libssl-lib-quic_ackm.o" => [ + "ssl/quic/quic_ackm.c" + ], + "ssl/quic/libssl-lib-quic_cfq.o" => [ + "ssl/quic/quic_cfq.c" + ], + "ssl/quic/libssl-lib-quic_channel.o" => [ + "ssl/quic/quic_channel.c" + ], + "ssl/quic/libssl-lib-quic_demux.o" => [ + "ssl/quic/quic_demux.c" + ], + "ssl/quic/libssl-lib-quic_engine.o" => [ + "ssl/quic/quic_engine.c" + ], + "ssl/quic/libssl-lib-quic_fc.o" => [ + "ssl/quic/quic_fc.c" + ], + "ssl/quic/libssl-lib-quic_fifd.o" => [ + "ssl/quic/quic_fifd.c" + ], + "ssl/quic/libssl-lib-quic_impl.o" => [ + "ssl/quic/quic_impl.c" + ], + "ssl/quic/libssl-lib-quic_lcidm.o" => [ + "ssl/quic/quic_lcidm.c" + ], + "ssl/quic/libssl-lib-quic_method.o" => [ + "ssl/quic/quic_method.c" + ], + "ssl/quic/libssl-lib-quic_obj.o" => [ + "ssl/quic/quic_obj.c" + ], + "ssl/quic/libssl-lib-quic_port.o" => [ + "ssl/quic/quic_port.c" + ], + "ssl/quic/libssl-lib-quic_rcidm.o" => [ + "ssl/quic/quic_rcidm.c" + ], + "ssl/quic/libssl-lib-quic_reactor.o" => [ + "ssl/quic/quic_reactor.c" + ], + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o" => [ + "ssl/quic/quic_reactor_wait_ctx.c" + ], + "ssl/quic/libssl-lib-quic_record_rx.o" => [ + "ssl/quic/quic_record_rx.c" + ], + "ssl/quic/libssl-lib-quic_record_shared.o" => [ + "ssl/quic/quic_record_shared.c" + ], + "ssl/quic/libssl-lib-quic_record_tx.o" => [ + "ssl/quic/quic_record_tx.c" + ], + "ssl/quic/libssl-lib-quic_record_util.o" => [ + "ssl/quic/quic_record_util.c" ], - "ssl/record/libssl-lib-dtls1_bitmap.o" => [ - "ssl/record/dtls1_bitmap.c" + "ssl/quic/libssl-lib-quic_rstream.o" => [ + "ssl/quic/quic_rstream.c" + ], + "ssl/quic/libssl-lib-quic_rx_depack.o" => [ + "ssl/quic/quic_rx_depack.c" + ], + "ssl/quic/libssl-lib-quic_sf_list.o" => [ + "ssl/quic/quic_sf_list.c" + ], + "ssl/quic/libssl-lib-quic_srt_gen.o" => [ + "ssl/quic/quic_srt_gen.c" + ], + "ssl/quic/libssl-lib-quic_srtm.o" => [ + "ssl/quic/quic_srtm.c" + ], + "ssl/quic/libssl-lib-quic_sstream.o" => [ + "ssl/quic/quic_sstream.c" + ], + "ssl/quic/libssl-lib-quic_statm.o" => [ + "ssl/quic/quic_statm.c" + ], + "ssl/quic/libssl-lib-quic_stream_map.o" => [ + "ssl/quic/quic_stream_map.c" + ], + "ssl/quic/libssl-lib-quic_thread_assist.o" => [ + "ssl/quic/quic_thread_assist.c" + ], + "ssl/quic/libssl-lib-quic_tls.o" => [ + "ssl/quic/quic_tls.c" + ], + "ssl/quic/libssl-lib-quic_tls_api.o" => [ + "ssl/quic/quic_tls_api.c" + ], + "ssl/quic/libssl-lib-quic_trace.o" => [ + "ssl/quic/quic_trace.c" + ], + "ssl/quic/libssl-lib-quic_tserver.o" => [ + "ssl/quic/quic_tserver.c" + ], + "ssl/quic/libssl-lib-quic_txp.o" => [ + "ssl/quic/quic_txp.c" + ], + "ssl/quic/libssl-lib-quic_txpim.o" => [ + "ssl/quic/quic_txpim.c" + ], + "ssl/quic/libssl-lib-quic_types.o" => [ + "ssl/quic/quic_types.c" + ], + "ssl/quic/libssl-lib-quic_wire.o" => [ + "ssl/quic/quic_wire.c" + ], + "ssl/quic/libssl-lib-quic_wire_pkt.o" => [ + "ssl/quic/quic_wire_pkt.c" + ], + "ssl/quic/libssl-lib-uint_set.o" => [ + "ssl/quic/uint_set.c" ], "ssl/record/libssl-lib-rec_layer_d1.o" => [ "ssl/record/rec_layer_d1.c" @@ -25719,14 +30151,44 @@ our %unified_info = ( "ssl/record/libssl-lib-rec_layer_s3.o" => [ "ssl/record/rec_layer_s3.c" ], - "ssl/record/libssl-lib-ssl3_buffer.o" => [ - "ssl/record/ssl3_buffer.c" + "ssl/record/methods/libcommon-lib-tls_pad.o" => [ + "ssl/record/methods/tls_pad.c" + ], + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libfips-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libssl-lib-dtls_meth.o" => [ + "ssl/record/methods/dtls_meth.c" + ], + "ssl/record/methods/libssl-lib-ssl3_meth.o" => [ + "ssl/record/methods/ssl3_meth.c" + ], + "ssl/record/methods/libssl-lib-tls13_meth.o" => [ + "ssl/record/methods/tls13_meth.c" + ], + "ssl/record/methods/libssl-lib-tls1_meth.o" => [ + "ssl/record/methods/tls1_meth.c" ], - "ssl/record/libssl-lib-ssl3_record.o" => [ - "ssl/record/ssl3_record.c" + "ssl/record/methods/libssl-lib-tls_common.o" => [ + "ssl/record/methods/tls_common.c" ], - "ssl/record/libssl-lib-ssl3_record_tls13.o" => [ - "ssl/record/ssl3_record_tls13.c" + "ssl/record/methods/libssl-lib-tls_multib.o" => [ + "ssl/record/methods/tls_multib.c" + ], + "ssl/record/methods/libssl-lib-tlsany_meth.o" => [ + "ssl/record/methods/tlsany_meth.c" + ], + "ssl/rio/libssl-lib-poll_builder.o" => [ + "ssl/rio/poll_builder.c" + ], + "ssl/rio/libssl-lib-poll_immediate.o" => [ + "ssl/rio/poll_immediate.c" + ], + "ssl/rio/libssl-lib-rio_notifier.o" => [ + "ssl/rio/rio_notifier.c" ], "ssl/statem/libssl-lib-extensions.o" => [ "ssl/statem/extensions.c" @@ -25822,6 +30284,8 @@ our %unified_info = ( "test/asn1_string_table_test.c" ], "test/asn1_time_test" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1_time_test-bin-ctype.o", "test/asn1_time_test-bin-asn1_time_test.o" ], "test/asn1_time_test-bin-asn1_time_test.o" => [ @@ -25852,6 +30316,18 @@ our %unified_info = ( "test/bftest-bin-bftest.o" => [ "test/bftest.c" ], + "test/bio_addr_test" => [ + "test/bio_addr_test-bin-bio_addr_test.o" + ], + "test/bio_addr_test-bin-bio_addr_test.o" => [ + "test/bio_addr_test.c" + ], + "test/bio_base64_test" => [ + "test/bio_base64_test-bin-bio_base64_test.o" + ], + "test/bio_base64_test-bin-bio_base64_test.o" => [ + "test/bio_base64_test.c" + ], "test/bio_callback_test" => [ "test/bio_callback_test-bin-bio_callback_test.o" ], @@ -25864,6 +30340,12 @@ our %unified_info = ( "test/bio_core_test-bin-bio_core_test.o" => [ "test/bio_core_test.c" ], + "test/bio_dgram_test" => [ + "test/bio_dgram_test-bin-bio_dgram_test.o" + ], + "test/bio_dgram_test-bin-bio_dgram_test.o" => [ + "test/bio_dgram_test.c" + ], "test/bio_enc_test" => [ "test/bio_enc_test-bin-bio_enc_test.o" ], @@ -25876,6 +30358,12 @@ our %unified_info = ( "test/bio_memleak_test-bin-bio_memleak_test.o" => [ "test/bio_memleak_test.c" ], + "test/bio_meth_test" => [ + "test/bio_meth_test-bin-bio_meth_test.o" + ], + "test/bio_meth_test-bin-bio_meth_test.o" => [ + "test/bio_meth_test.c" + ], "test/bio_prefix_text" => [ "test/bio_prefix_text-bin-bio_prefix_text.o" ], @@ -25894,6 +30382,12 @@ our %unified_info = ( "test/bio_readbuffer_test-bin-bio_readbuffer_test.o" => [ "test/bio_readbuffer_test.c" ], + "test/bio_tfo_test" => [ + "test/bio_tfo_test-bin-bio_tfo_test.o" + ], + "test/bio_tfo_test-bin-bio_tfo_test.o" => [ + "test/bio_tfo_test.c" + ], "test/bioprinttest" => [ "test/bioprinttest-bin-bioprinttest.o" ], @@ -25912,6 +30406,12 @@ our %unified_info = ( "test/bntest-bin-bntest.o" => [ "test/bntest.c" ], + "test/build_wincrypt_test" => [ + "test/build_wincrypt_test-bin-build_wincrypt_test.o" + ], + "test/build_wincrypt_test-bin-build_wincrypt_test.o" => [ + "test/build_wincrypt_test.c" + ], "test/buildtest_c_aes" => [ "test/buildtest_c_aes-bin-buildtest_aes.o" ], @@ -25942,6 +30442,12 @@ our %unified_info = ( "test/buildtest_c_buffer-bin-buildtest_buffer.o" => [ "test/buildtest_buffer.c" ], + "test/buildtest_c_byteorder" => [ + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" + ], + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" => [ + "test/buildtest_byteorder.c" + ], "test/buildtest_c_camellia" => [ "test/buildtest_c_camellia-bin-buildtest_camellia.o" ], @@ -25990,12 +30496,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch-bin-buildtest_core_dispatch.o" => [ "test/buildtest_core_dispatch.c" ], - "test/buildtest_c_core_names" => [ - "test/buildtest_c_core_names-bin-buildtest_core_names.o" - ], - "test/buildtest_c_core_names-bin-buildtest_core_names.o" => [ - "test/buildtest_core_names.c" - ], "test/buildtest_c_core_object" => [ "test/buildtest_c_core_object-bin-buildtest_core_object.o" ], @@ -26044,6 +30544,12 @@ our %unified_info = ( "test/buildtest_c_e_os2-bin-buildtest_e_os2.o" => [ "test/buildtest_e_os2.c" ], + "test/buildtest_c_e_ostime" => [ + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" + ], + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" => [ + "test/buildtest_e_ostime.c" + ], "test/buildtest_c_ebcdic" => [ "test/buildtest_c_ebcdic-bin-buildtest_ebcdic.o" ], @@ -26098,6 +30604,12 @@ our %unified_info = ( "test/buildtest_c_hmac-bin-buildtest_hmac.o" => [ "test/buildtest_hmac.c" ], + "test/buildtest_c_hpke" => [ + "test/buildtest_c_hpke-bin-buildtest_hpke.o" + ], + "test/buildtest_c_hpke-bin-buildtest_hpke.o" => [ + "test/buildtest_hpke.c" + ], "test/buildtest_c_http" => [ "test/buildtest_c_http-bin-buildtest_http.o" ], @@ -26110,6 +30622,12 @@ our %unified_info = ( "test/buildtest_c_idea-bin-buildtest_idea.o" => [ "test/buildtest_idea.c" ], + "test/buildtest_c_indicator" => [ + "test/buildtest_c_indicator-bin-buildtest_indicator.o" + ], + "test/buildtest_c_indicator-bin-buildtest_indicator.o" => [ + "test/buildtest_indicator.c" + ], "test/buildtest_c_kdf" => [ "test/buildtest_c_kdf-bin-buildtest_kdf.o" ], @@ -26140,6 +30658,12 @@ our %unified_info = ( "test/buildtest_c_mdc2-bin-buildtest_mdc2.o" => [ "test/buildtest_mdc2.c" ], + "test/buildtest_c_ml_kem" => [ + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" + ], + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" => [ + "test/buildtest_ml_kem.c" + ], "test/buildtest_c_modes" => [ "test/buildtest_c_modes-bin-buildtest_modes.o" ], @@ -26200,6 +30724,12 @@ our %unified_info = ( "test/buildtest_c_provider-bin-buildtest_provider.o" => [ "test/buildtest_provider.c" ], + "test/buildtest_c_quic" => [ + "test/buildtest_c_quic-bin-buildtest_quic.o" + ], + "test/buildtest_c_quic-bin-buildtest_quic.o" => [ + "test/buildtest_quic.c" + ], "test/buildtest_c_rand" => [ "test/buildtest_c_rand-bin-buildtest_rand.o" ], @@ -26284,6 +30814,12 @@ our %unified_info = ( "test/buildtest_c_symhacks-bin-buildtest_symhacks.o" => [ "test/buildtest_symhacks.c" ], + "test/buildtest_c_thread" => [ + "test/buildtest_c_thread-bin-buildtest_thread.o" + ], + "test/buildtest_c_thread-bin-buildtest_thread.o" => [ + "test/buildtest_thread.c" + ], "test/buildtest_c_tls1" => [ "test/buildtest_c_tls1-bin-buildtest_tls1.o" ], @@ -26314,6 +30850,29 @@ our %unified_info = ( "test/buildtest_c_whrlpool-bin-buildtest_whrlpool.o" => [ "test/buildtest_whrlpool.c" ], + "test/byteorder_test" => [ + "test/byteorder_test-bin-byteorder_test.o" + ], + "test/byteorder_test-bin-byteorder_test.o" => [ + "test/byteorder_test.c" + ], + "test/ca_internals_test" => [ + "apps/ca_internals_test-bin-ca.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", + "crypto/ca_internals_test-bin-ctype.o", + "test/ca_internals_test-bin-ca_internals_test.o" + ], + "test/ca_internals_test-bin-ca_internals_test.o" => [ + "test/ca_internals_test.c" + ], "test/casttest" => [ "test/casttest-bin-casttest.o" ], @@ -26492,6 +31051,12 @@ our %unified_info = ( "test/danetest-bin-danetest.o" => [ "test/danetest.c" ], + "test/decoder_propq_test" => [ + "test/decoder_propq_test-bin-decoder_propq_test.o" + ], + "test/decoder_propq_test-bin-decoder_propq_test.o" => [ + "test/decoder_propq_test.c" + ], "test/defltfips_test" => [ "test/defltfips_test-bin-defltfips_test.o" ], @@ -26573,6 +31138,7 @@ our %unified_info = ( "test/ectest.c" ], "test/endecode_test" => [ + "providers/endecode_test-bin-legacyprov.o", "test/endecode_test-bin-endecode_test.o", "test/helpers/endecode_test-bin-predefined_dhparams.o" ], @@ -26605,17 +31171,29 @@ our %unified_info = ( ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", - "test/evp_extra_test-bin-evp_extra_test.o" + "test/evp_extra_test-bin-evp_extra_test.o", + "test/evp_extra_test-bin-fake_pipelineprov.o", + "test/evp_extra_test-bin-fake_rsaprov.o" ], "test/evp_extra_test-bin-evp_extra_test.o" => [ "test/evp_extra_test.c" ], + "test/evp_extra_test-bin-fake_pipelineprov.o" => [ + "test/fake_pipelineprov.c" + ], + "test/evp_extra_test-bin-fake_rsaprov.o" => [ + "test/fake_rsaprov.c" + ], "test/evp_extra_test2" => [ - "test/evp_extra_test2-bin-evp_extra_test2.o" + "test/evp_extra_test2-bin-evp_extra_test2.o", + "test/evp_extra_test2-bin-tls-provider.o" ], "test/evp_extra_test2-bin-evp_extra_test2.o" => [ "test/evp_extra_test2.c" ], + "test/evp_extra_test2-bin-tls-provider.o" => [ + "test/tls-provider.c" + ], "test/evp_fetch_prov_test" => [ "test/evp_fetch_prov_test-bin-evp_fetch_prov_test.o" ], @@ -26640,6 +31218,12 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name-bin-evp_pkey_ctx_new_from_name.o" => [ "test/evp_pkey_ctx_new_from_name.c" ], + "test/evp_pkey_dhkem_test" => [ + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" + ], + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" => [ + "test/evp_pkey_dhkem_test.c" + ], "test/evp_pkey_dparams_test" => [ "test/evp_pkey_dparams_test-bin-evp_pkey_dparams_test.o" ], @@ -26652,12 +31236,28 @@ our %unified_info = ( "test/evp_pkey_provided_test-bin-evp_pkey_provided_test.o" => [ "test/evp_pkey_provided_test.c" ], + "test/evp_skey_test" => [ + "test/evp_skey_test-bin-evp_skey_test.o", + "test/evp_skey_test-bin-fake_cipherprov.o" + ], + "test/evp_skey_test-bin-evp_skey_test.o" => [ + "test/evp_skey_test.c" + ], + "test/evp_skey_test-bin-fake_cipherprov.o" => [ + "test/fake_cipherprov.c" + ], "test/evp_test" => [ "test/evp_test-bin-evp_test.o" ], "test/evp_test-bin-evp_test.o" => [ "test/evp_test.c" ], + "test/evp_xof_test" => [ + "test/evp_xof_test-bin-evp_xof_test.o" + ], + "test/evp_xof_test-bin-evp_xof_test.o" => [ + "test/evp_xof_test.c" + ], "test/exdatatest" => [ "test/exdatatest-bin-exdatatest.o" ], @@ -26743,15 +31343,108 @@ our %unified_info = ( "test/helpers/fatalerrtest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/json_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/json_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/json_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + "test/helpers/pkcs12.c" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ "test/helpers/pkcs12.c" ], + "test/helpers/quic_multistream_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_multistream_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_multistream_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_newcid_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_newcid_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_newcid_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_radix_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_radix_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_radix_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_srt_gen_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicapitest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicapitest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicapitest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicfaultstest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicfaultstest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicfaultstest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/ssl_old_test-bin-predefined_dhparams.o" => [ "test/helpers/predefined_dhparams.c" ], @@ -26779,6 +31472,9 @@ our %unified_info = ( "test/helpers/tls13ccstest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/hexstr_test" => [ "test/hexstr_test-bin-hexstr_test.o" ], @@ -26791,6 +31487,12 @@ our %unified_info = ( "test/hmactest-bin-hmactest.o" => [ "test/hmactest.c" ], + "test/hpke_test" => [ + "test/hpke_test-bin-hpke_test.o" + ], + "test/hpke_test-bin-hpke_test.o" => [ + "test/hpke_test.c" + ], "test/http_test" => [ "test/http_test-bin-http_test.o" ], @@ -26809,6 +31511,16 @@ our %unified_info = ( "test/igetest-bin-igetest.o" => [ "test/igetest.c" ], + "test/json_test" => [ + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/json_test-bin-json_test.o" + ], + "test/json_test-bin-json_test.o" => [ + "test/json_test.c" + ], "test/keymgmt_internal_test" => [ "test/keymgmt_internal_test-bin-keymgmt_internal_test.o" ], @@ -26830,6 +31542,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -26842,6 +31555,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-tests.o", "test/testutil/libtestutil-lib-testutil_init.o" ], + "test/list_test" => [ + "test/list_test-bin-list_test.o" + ], + "test/list_test-bin-list_test.o" => [ + "test/list_test.c" + ], "test/localetest" => [ "test/localetest-bin-localetest.o" ], @@ -26860,12 +31579,36 @@ our %unified_info = ( "test/mdc2test-bin-mdc2test.o" => [ "test/mdc2test.c" ], + "test/membio_test" => [ + "test/membio_test-bin-membio_test.o" + ], + "test/membio_test-bin-membio_test.o" => [ + "test/membio_test.c" + ], "test/memleaktest" => [ "test/memleaktest-bin-memleaktest.o" ], "test/memleaktest-bin-memleaktest.o" => [ "test/memleaktest.c" ], + "test/ml_dsa_test" => [ + "test/ml_dsa_test-bin-ml_dsa_test.o" + ], + "test/ml_dsa_test-bin-ml_dsa_test.o" => [ + "test/ml_dsa_test.c" + ], + "test/ml_kem_evp_extra_test" => [ + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" + ], + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" => [ + "test/ml_kem_evp_extra_test.c" + ], + "test/ml_kem_internal_test" => [ + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" + ], + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" => [ + "test/ml_kem_internal_test.c" + ], "test/modes_internal_test" => [ "test/modes_internal_test-bin-modes_internal_test.o" ], @@ -26911,11 +31654,18 @@ our %unified_info = ( "test/p_test.c" ], "test/packettest" => [ + "crypto/packettest-bin-quic_vlint.o", "test/packettest-bin-packettest.o" ], "test/packettest-bin-packettest.o" => [ "test/packettest.c" ], + "test/pairwise_fail_test" => [ + "test/pairwise_fail_test-bin-pairwise_fail_test.o" + ], + "test/pairwise_fail_test-bin-pairwise_fail_test.o" => [ + "test/pairwise_fail_test.c" + ], "test/param_build_test" => [ "test/param_build_test-bin-param_build_test.o" ], @@ -26964,6 +31714,13 @@ our %unified_info = ( "test/pemtest-bin-pemtest.o" => [ "test/pemtest.c" ], + "test/pkcs12_api_test" => [ + "test/helpers/pkcs12_api_test-bin-pkcs12.o", + "test/pkcs12_api_test-bin-pkcs12_api_test.o" + ], + "test/pkcs12_api_test-bin-pkcs12_api_test.o" => [ + "test/pkcs12_api_test.c" + ], "test/pkcs12_format_test" => [ "test/helpers/pkcs12_format_test-bin-pkcs12.o", "test/pkcs12_format_test-bin-pkcs12_format_test.o" @@ -26995,6 +31752,12 @@ our %unified_info = ( "test/poly1305_internal_test-bin-poly1305_internal_test.o" => [ "test/poly1305_internal_test.c" ], + "test/priority_queue_test" => [ + "test/priority_queue_test-bin-priority_queue_test.o" + ], + "test/priority_queue_test-bin-priority_queue_test.o" => [ + "test/priority_queue_test.c" + ], "test/property_test" => [ "test/property_test-bin-property_test.o" ], @@ -27013,6 +31776,12 @@ our %unified_info = ( "test/provfetchtest-bin-provfetchtest.o" => [ "test/provfetchtest.c" ], + "test/provider_default_search_path_test" => [ + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" + ], + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" => [ + "test/provider_default_search_path_test.c" + ], "test/provider_fallback_test" => [ "test/provider_fallback_test-bin-provider_fallback_test.o" ], @@ -27061,6 +31830,174 @@ our %unified_info = ( "test/punycode_test-bin-punycode_test.o" => [ "test/punycode_test.c" ], + "test/quic_ackm_test" => [ + "test/quic_ackm_test-bin-cc_dummy.o", + "test/quic_ackm_test-bin-quic_ackm_test.o" + ], + "test/quic_ackm_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_ackm_test-bin-quic_ackm_test.o" => [ + "test/quic_ackm_test.c" + ], + "test/quic_cc_test" => [ + "test/quic_cc_test-bin-quic_cc_test.o" + ], + "test/quic_cc_test-bin-quic_cc_test.o" => [ + "test/quic_cc_test.c" + ], + "test/quic_cfq_test" => [ + "test/quic_cfq_test-bin-quic_cfq_test.o" + ], + "test/quic_cfq_test-bin-quic_cfq_test.o" => [ + "test/quic_cfq_test.c" + ], + "test/quic_client_test" => [ + "test/quic_client_test-bin-quic_client_test.o" + ], + "test/quic_client_test-bin-quic_client_test.o" => [ + "test/quic_client_test.c" + ], + "test/quic_fc_test" => [ + "test/quic_fc_test-bin-quic_fc_test.o" + ], + "test/quic_fc_test-bin-quic_fc_test.o" => [ + "test/quic_fc_test.c" + ], + "test/quic_fifd_test" => [ + "test/quic_fifd_test-bin-cc_dummy.o", + "test/quic_fifd_test-bin-quic_fifd_test.o" + ], + "test/quic_fifd_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_fifd_test-bin-quic_fifd_test.o" => [ + "test/quic_fifd_test.c" + ], + "test/quic_lcidm_test" => [ + "test/quic_lcidm_test-bin-quic_lcidm_test.o" + ], + "test/quic_lcidm_test-bin-quic_lcidm_test.o" => [ + "test/quic_lcidm_test.c" + ], + "test/quic_multistream_test" => [ + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/quic_multistream_test-bin-quic_multistream_test.o" + ], + "test/quic_multistream_test-bin-quic_multistream_test.o" => [ + "test/quic_multistream_test.c" + ], + "test/quic_newcid_test" => [ + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/quic_newcid_test-bin-quic_newcid_test.o" + ], + "test/quic_newcid_test-bin-quic_newcid_test.o" => [ + "test/quic_newcid_test.c" + ], + "test/quic_qlog_test" => [ + "test/quic_qlog_test-bin-quic_qlog_test.o" + ], + "test/quic_qlog_test-bin-quic_qlog_test.o" => [ + "test/quic_qlog_test.c" + ], + "test/quic_radix_test" => [ + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "test/quic_rcidm_test" => [ + "test/quic_rcidm_test-bin-quic_rcidm_test.o" + ], + "test/quic_rcidm_test-bin-quic_rcidm_test.o" => [ + "test/quic_rcidm_test.c" + ], + "test/quic_record_test" => [ + "test/quic_record_test-bin-quic_record_test.o" + ], + "test/quic_record_test-bin-quic_record_test.o" => [ + "test/quic_record_test.c" + ], + "test/quic_srt_gen_test" => [ + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" + ], + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" => [ + "test/quic_srt_gen_test.c" + ], + "test/quic_srtm_test" => [ + "test/quic_srtm_test-bin-quic_srtm_test.o" + ], + "test/quic_srtm_test-bin-quic_srtm_test.o" => [ + "test/quic_srtm_test.c" + ], + "test/quic_stream_test" => [ + "test/quic_stream_test-bin-quic_stream_test.o" + ], + "test/quic_stream_test-bin-quic_stream_test.o" => [ + "test/quic_stream_test.c" + ], + "test/quic_tserver_test" => [ + "test/quic_tserver_test-bin-quic_tserver_test.o" + ], + "test/quic_tserver_test-bin-quic_tserver_test.o" => [ + "test/quic_tserver_test.c" + ], + "test/quic_txp_test" => [ + "test/quic_txp_test-bin-cc_dummy.o", + "test/quic_txp_test-bin-quic_txp_test.o" + ], + "test/quic_txp_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_txp_test-bin-quic_txp_test.o" => [ + "test/quic_txp_test.c" + ], + "test/quic_txpim_test" => [ + "test/quic_txpim_test-bin-quic_txpim_test.o" + ], + "test/quic_txpim_test-bin-quic_txpim_test.o" => [ + "test/quic_txpim_test.c" + ], + "test/quic_wire_test" => [ + "test/quic_wire_test-bin-quic_wire_test.o" + ], + "test/quic_wire_test-bin-quic_wire_test.o" => [ + "test/quic_wire_test.c" + ], + "test/quicapitest" => [ + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/quicapitest-bin-quicapitest.o" + ], + "test/quicapitest-bin-quicapitest.o" => [ + "test/quicapitest.c" + ], + "test/quicfaultstest" => [ + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", + "test/quicfaultstest-bin-quicfaultstest.o" + ], + "test/quicfaultstest-bin-quicfaultstest.o" => [ + "test/quicfaultstest.c" + ], + "test/radix/quic_radix_test-bin-quic_radix.o" => [ + "test/radix/quic_radix.c" + ], "test/rand_status_test" => [ "test/rand_status_test-bin-rand_status_test.o" ], @@ -27091,11 +32028,11 @@ our %unified_info = ( "test/rc5test-bin-rc5test.o" => [ "test/rc5test.c" ], - "test/rdrand_sanitytest" => [ - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" + "test/rdcpu_sanitytest" => [ + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" ], - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" => [ - "test/rdrand_sanitytest.c" + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" => [ + "test/rdcpu_sanitytest.c" ], "test/recordlentest" => [ "test/helpers/recordlentest-bin-ssltestlib.o", @@ -27104,6 +32041,13 @@ our %unified_info = ( "test/recordlentest-bin-recordlentest.o" => [ "test/recordlentest.c" ], + "test/rpktest" => [ + "test/helpers/rpktest-bin-ssltestlib.o", + "test/rpktest-bin-rpktest.o" + ], + "test/rpktest-bin-rpktest.o" => [ + "test/rpktest.c" + ], "test/rsa_complex" => [ "test/rsa_complex-bin-rsa_complex.o" ], @@ -27128,6 +32072,18 @@ our %unified_info = ( "test/rsa_test-bin-rsa_test.o" => [ "test/rsa_test.c" ], + "test/rsa_x931_test" => [ + "test/rsa_x931_test-bin-rsa_x931_test.o" + ], + "test/rsa_x931_test-bin-rsa_x931_test.o" => [ + "test/rsa_x931_test.c" + ], + "test/safe_math_test" => [ + "test/safe_math_test-bin-safe_math_test.o" + ], + "test/safe_math_test-bin-safe_math_test.o" => [ + "test/safe_math_test.c" + ], "test/sanitytest" => [ "test/sanitytest-bin-sanitytest.o" ], @@ -27159,6 +32115,12 @@ our %unified_info = ( "test/siphash_internal_test-bin-siphash_internal_test.o" => [ "test/siphash_internal_test.c" ], + "test/slh_dsa_test" => [ + "test/slh_dsa_test-bin-slh_dsa_test.o" + ], + "test/slh_dsa_test-bin-slh_dsa_test.o" => [ + "test/slh_dsa_test.c" + ], "test/sm2_internal_test" => [ "test/sm2_internal_test-bin-sm2_internal_test.o" ], @@ -27201,6 +32163,13 @@ our %unified_info = ( "test/ssl_ctx_test-bin-ssl_ctx_test.o" => [ "test/ssl_ctx_test.c" ], + "test/ssl_handshake_rtt_test" => [ + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" + ], + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" => [ + "test/ssl_handshake_rtt_test.c" + ], "test/ssl_old_test" => [ "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/ssl_old_test-bin-ssl_old_test.o" @@ -27259,6 +32228,12 @@ our %unified_info = ( "test/stack_test-bin-stack_test.o" => [ "test/stack_test.c" ], + "test/strtoultest" => [ + "test/strtoultest-bin-strtoultest.o" + ], + "test/strtoultest-bin-strtoultest.o" => [ + "test/strtoultest.c" + ], "test/sysdefaulttest" => [ "test/sysdefaulttest-bin-sysdefaulttest.o" ], @@ -27289,6 +32264,9 @@ our %unified_info = ( "test/testutil/libtestutil-lib-format_output.o" => [ "test/testutil/format_output.c" ], + "test/testutil/libtestutil-lib-helper.o" => [ + "test/testutil/helper.c" + ], "test/testutil/libtestutil-lib-load.o" => [ "test/testutil/load.c" ], @@ -27322,6 +32300,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-testutil_init.o" => [ "test/testutil/testutil_init.c" ], + "test/threadpool_test" => [ + "test/threadpool_test-bin-threadpool_test.o" + ], + "test/threadpool_test-bin-threadpool_test.o" => [ + "test/threadpool_test.c" + ], "test/threadstest" => [ "test/threadstest-bin-threadstest.o" ], @@ -27340,6 +32324,12 @@ our %unified_info = ( "test/time_offset_test-bin-time_offset_test.o" => [ "test/time_offset_test.c" ], + "test/time_test" => [ + "test/time_test-bin-time_test.o" + ], + "test/time_test-bin-time_test.o" => [ + "test/time_test.c" + ], "test/tls13ccstest" => [ "test/helpers/tls13ccstest-bin-ssltestlib.o", "test/tls13ccstest-bin-tls13ccstest.o" @@ -27353,6 +32343,13 @@ our %unified_info = ( "test/tls13encryptiontest-bin-tls13encryptiontest.o" => [ "test/tls13encryptiontest.c" ], + "test/tls13groupselection_test" => [ + "test/helpers/tls13groupselection_test-bin-ssltestlib.o", + "test/tls13groupselection_test-bin-tls13groupselection_test.o" + ], + "test/tls13groupselection_test-bin-tls13groupselection_test.o" => [ + "test/tls13groupselection_test.c" + ], "test/trace_api_test" => [ "test/trace_api_test-bin-trace_api_test.o" ], @@ -27408,6 +32405,12 @@ our %unified_info = ( "test/wpackettest-bin-wpackettest.o" => [ "test/wpackettest.c" ], + "test/x509_acert_test" => [ + "test/x509_acert_test-bin-x509_acert_test.o" + ], + "test/x509_acert_test-bin-x509_acert_test.o" => [ + "test/x509_acert_test.c" + ], "test/x509_check_cert_pkey_test" => [ "test/x509_check_cert_pkey_test-bin-x509_check_cert_pkey_test.o" ], @@ -27426,6 +32429,24 @@ our %unified_info = ( "test/x509_internal_test-bin-x509_internal_test.o" => [ "test/x509_internal_test.c" ], + "test/x509_load_cert_file_test" => [ + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" + ], + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" => [ + "test/x509_load_cert_file_test.c" + ], + "test/x509_req_test" => [ + "test/x509_req_test-bin-x509_req_test.o" + ], + "test/x509_req_test-bin-x509_req_test.o" => [ + "test/x509_req_test.c" + ], + "test/x509_test" => [ + "test/x509_test-bin-x509_test.o" + ], + "test/x509_test-bin-x509_test.o" => [ + "test/x509_test.c" + ], "test/x509_time_test" => [ "test/x509_time_test-bin-x509_time_test.o" ], @@ -27486,6 +32507,7 @@ my @makevars = ( "LDLIBS", "MT", "MTFLAGS", + "OBJCOPY", "PERL", "RANLIB", "RC", @@ -27502,6 +32524,12 @@ my %disabled_info = ( "asm" => { "macro" => "OPENSSL_NO_ASM" }, + "brotli" => { + "macro" => "OPENSSL_NO_BROTLI" + }, + "brotli-dynamic" => { + "macro" => "OPENSSL_NO_BROTLI_DYNAMIC" + }, "comp" => { "macro" => "OPENSSL_NO_COMP", "skipped" => [ @@ -27514,6 +32542,9 @@ my %disabled_info = ( "crypto-mdebug-backtrace" => { "macro" => "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE" }, + "demos" => { + "macro" => "OPENSSL_NO_DEMOS" + }, "devcryptoeng" => { "macro" => "OPENSSL_NO_DEVCRYPTOENG" }, @@ -27526,12 +32557,24 @@ my %disabled_info = ( "external-tests" => { "macro" => "OPENSSL_NO_EXTERNAL_TESTS" }, + "fips-jitter" => { + "macro" => "OPENSSL_NO_FIPS_JITTER" + }, "fuzz-afl" => { "macro" => "OPENSSL_NO_FUZZ_AFL" }, "fuzz-libfuzzer" => { "macro" => "OPENSSL_NO_FUZZ_LIBFUZZER" }, + "h3demo" => { + "macro" => "OPENSSL_NO_H3DEMO" + }, + "hqinterop" => { + "macro" => "OPENSSL_NO_HQINTEROP" + }, + "jitter" => { + "macro" => "OPENSSL_NO_JITTER" + }, "ktls" => { "macro" => "OPENSSL_NO_KTLS" }, @@ -27547,6 +32590,9 @@ my %disabled_info = ( "msan" => { "macro" => "OPENSSL_NO_MSAN" }, + "pie" => { + "macro" => "OPENSSL_NO_PIE" + }, "rc5" => { "macro" => "OPENSSL_NO_RC5", "skipped" => [ @@ -27562,6 +32608,12 @@ my %disabled_info = ( "ssl3-method" => { "macro" => "OPENSSL_NO_SSL3_METHOD" }, + "sslkeylog" => { + "macro" => "OPENSSL_NO_SSLKEYLOG" + }, + "tfo" => { + "macro" => "OPENSSL_NO_TFO" + }, "trace" => { "macro" => "OPENSSL_NO_TRACE" }, @@ -27576,6 +32628,18 @@ my %disabled_info = ( }, "weak-ssl-ciphers" => { "macro" => "OPENSSL_NO_WEAK_SSL_CIPHERS" + }, + "zlib" => { + "macro" => "OPENSSL_NO_ZLIB" + }, + "zlib-dynamic" => { + "macro" => "OPENSSL_NO_ZLIB_DYNAMIC" + }, + "zstd" => { + "macro" => "OPENSSL_NO_ZSTD" + }, + "zstd-dynamic" => { + "macro" => "OPENSSL_NO_ZSTD_DYNAMIC" } ); my @user_crossable = qw( AR AS CC CXX CPP LD MT RANLIB RC ); @@ -27589,15 +32653,15 @@ unless (caller) { use File::Copy; use Pod::Usage; - use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; - use OpenSSL::fallback '/home/runner/work/node/node/deps/openssl/openssl/external/perl/MODULES.txt'; + use lib '/node/deps/openssl/openssl/util/perl'; + use OpenSSL::fallback '/node/deps/openssl/openssl/external/perl/MODULES.txt'; my $here = dirname($0); if (scalar @ARGV == 0) { # With no arguments, re-create the build file # We do that in two steps, where the first step emits perl - # snipets. + # snippets. my $buildfile = $config{build_file}; my $buildfile_template = "$buildfile.in"; @@ -27617,7 +32681,7 @@ unless (caller) { ); use lib '.'; - use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; + use lib '/node/deps/openssl/openssl/Configurations'; use gentemplate; open my $buildfile_template_fh, ">$buildfile_template" @@ -27634,8 +32698,8 @@ unless (caller) { my $prepend = <<'_____'; use File::Spec::Functions; -use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; -use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; +use lib '/node/deps/openssl/openssl/util/perl'; +use lib '/node/deps/openssl/openssl/Configurations'; use lib '.'; use platform; _____ diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h index 8be833a43a513d..d730439975be6b 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: " -#define DATE "built on: Sun Jul 20 00:56:16 2025 UTC" +#define DATE "built on: Tue Aug 5 17:24:22 2025 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/params_idx.c b/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/params_idx.c new file mode 100644 index 00000000000000..874125eb57a17c --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/params_idx.c @@ -0,0 +1,3366 @@ +/* + * WARNING: do not edit! + * Generated by makefile from crypto/params_idx.c.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#include "internal/e_os.h" +#include "internal/param_names.h" +#include + +/* Machine generated TRIE -- generated by util/perl/OpenSSL/paramnames.pm */ +int ossl_param_find_pidx(const char *s) +{ + switch(s[0]) { + default: + break; + case 'a': + switch(s[1]) { + default: + break; + case 'c': + if (strcmp("vp-info", s + 2) == 0) + return PIDX_KDF_PARAM_X942_ACVPINFO; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'd': + if (strcmp("itional-random", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_ADD_RANDOM; + break; + case '\0': + return PIDX_KDF_PARAM_ARGON2_AD; + } + break; + case 'e': + if (strcmp("ad", s + 2) == 0) + return PIDX_CIPHER_PARAM_AEAD; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("id_param", s + 4) == 0) + return PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD; + break; + case 'i': + if (strcmp("d-absent", s + 4) == 0) + return PIDX_DIGEST_PARAM_ALGID_ABSENT; + break; + case 'o': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'h': + switch(s[8]) { + default: + break; + case 'm': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '-': + if (strcmp("params", s + 13) == 0) + return PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS; + break; + case '\0': + return PIDX_ALG_PARAM_ALGORITHM_ID; + } + } + } + } + } + } + } + } + } + } + break; + case 'i': + if (strcmp("as", s + 3) == 0) + return PIDX_STORE_PARAM_ALIAS; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_A; + } + break; + case 'b': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("sis-type", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_CHAR2_TYPE; + break; + case 'i': + if (strcmp("ts", s + 2) == 0) + return PIDX_PKEY_PARAM_BITS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("size", s + 6) == 0) + return PIDX_MAC_PARAM_BLOCK_SIZE; + break; + case '_': + if (strcmp("padding", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING; + break; + case 's': + if (strcmp("ize", s + 6) == 0) + return PIDX_DIGEST_PARAM_BLOCK_SIZE; + } + } + } + } + break; + case 'u': + if (strcmp("ildinfo", s + 2) == 0) + return PIDX_PROV_PARAM_BUILDINFO; + break; + case '\0': + return PIDX_PKEY_PARAM_EC_B; + } + break; + case 'c': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_C_ROUNDS; + break; + case 'e': + if (strcmp("kalg", s + 2) == 0) + return PIDX_KDF_PARAM_CEK_ALG; + break; + case 'i': + if (strcmp("pher", s + 2) == 0) + return PIDX_ALG_PARAM_CIPHER; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("actor", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_COFACTOR; + break; + case 'n': + switch(s[3]) { + default: + break; + case 's': + if (strcmp("tant", s + 4) == 0) + return PIDX_KDF_PARAM_CONSTANT; + break; + case 't': + if (strcmp("ext-string", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_CONTEXT_STRING; + } + } + break; + case 't': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("mode", s + 4) == 0) + return PIDX_CIPHER_PARAM_CTS_MODE; + break; + case '\0': + return PIDX_CIPHER_PARAM_CTS; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '-': + if (strcmp("iv", s + 7) == 0) + return PIDX_CIPHER_PARAM_CUSTOM_IV; + break; + case '\0': + return PIDX_MAC_PARAM_CUSTOM; + } + } + } + } + } + } + break; + case 'd': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_D_ROUNDS; + break; + case 'a': + switch(s[2]) { + default: + break; + case 't': + switch(s[3]) { + default: + break; + case 'a': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 's': + if (strcmp("tructure", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_STRUCTURE; + break; + case 't': + if (strcmp("ype", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_TYPE; + } + break; + case '\0': + return PIDX_OBJECT_PARAM_DATA; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + if (strcmp("ded-from-explicit", s + 4) == 0) + return PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS; + break; + case 'r': + if (strcmp("ypt-only", s + 4) == 0) + return PIDX_CIPHER_PARAM_DECRYPT_ONLY; + } + break; + case 'f': + if (strcmp("ault-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_DEFAULT_DIGEST; + break; + case 's': + if (strcmp("c", s + 3) == 0) + return PIDX_OBJECT_PARAM_DESC; + break; + case 't': + if (strcmp("erministic", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_DETERMINISTIC; + } + break; + case 'h': + if (strcmp("kem-ikm", s + 2) == 0) + return PIDX_PKEY_PARAM_DHKEM_IKM; + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("heck", s + 8) == 0) + return PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK; + break; + case 'n': + if (strcmp("oinit", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_NOINIT; + break; + case 'o': + if (strcmp("neshot", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_ONESHOT; + break; + case 'p': + if (strcmp("rops", s + 8) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS; + break; + case 's': + if (strcmp("ize", s + 8) == 0) + return PIDX_PKEY_PARAM_DIGEST_SIZE; + } + break; + case '\0': + return PIDX_STORE_PARAM_DIGEST; + } + } + } + } + break; + case 's': + if (strcmp("tid", s + 3) == 0) + return PIDX_PKEY_PARAM_DIST_ID; + } + break; + case 'r': + if (strcmp("bg-no-trunc-md", s + 2) == 0) + return PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST; + break; + case 's': + if (strcmp("a-sign-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_DSA_SIGN_DISABLED; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_D; + } + break; + case 'e': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("rly_clean", s + 2) == 0) + return PIDX_KDF_PARAM_EARLY_CLEAN; + break; + case 'c': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'h': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'a': + switch(s[9]) { + default: + break; + case 'c': + switch(s[10]) { + default: + break; + case 't': + switch(s[11]) { + default: + break; + case 'o': + switch(s[12]) { + default: + break; + case 'r': + switch(s[13]) { + default: + break; + case '-': + switch(s[14]) { + default: + break; + case 'c': + if (strcmp("heck", s + 15) == 0) + return PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK; + break; + case 'm': + if (strcmp("ode", s + 15) == 0) + return PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE; + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'm': + if (strcmp("s_check", s + 2) == 0) + return PIDX_KDF_PARAM_FIPS_EMS_CHECK; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("d-pub-key", s + 6) == 0) + return PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY; + break; + case 'i': + if (strcmp("ng", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_ENCODING; + } + } + break; + case 'r': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'c': + if (strcmp("heck", s + 9) == 0) + return PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK; + break; + case 'l': + if (strcmp("evel", s + 9) == 0) + return PIDX_ENCODER_PARAM_ENCRYPT_LEVEL; + } + } + } + } + } + } + break; + case 'g': + if (strcmp("ine", s + 3) == 0) + return PIDX_ALG_PARAM_ENGINE; + break; + case 't': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'y': + switch(s[7]) { + default: + break; + case '_': + if (strcmp("required", s + 8) == 0) + return PIDX_DRBG_PARAM_ENTROPY_REQUIRED; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_ENTROPY; + } + } + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_E; + break; + case 'x': + if (strcmp("pect", s + 2) == 0) + return PIDX_STORE_PARAM_EXPECT; + } + break; + case 'f': + switch(s[1]) { + default: + break; + case 'i': + switch(s[2]) { + default: + break; + case 'e': + if (strcmp("ld-type", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_FIELD_TYPE; + break; + case 'n': + if (strcmp("gerprint", s + 3) == 0) + return PIDX_STORE_PARAM_FINGERPRINT; + break; + case 'p': + if (strcmp("s-indicator", s + 3) == 0) + return PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR; + } + } + break; + case 'g': + switch(s[1]) { + default: + break; + case 'e': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_GENERATE; + } + break; + case 'o': + if (strcmp("r", s + 8) == 0) + return PIDX_PKEY_PARAM_EC_GENERATOR; + } + } + } + } + } + } + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_GINDEX; + break; + case 'r': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'u': + switch(s[4]) { + default: + break; + case 'p': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("check", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE; + break; + case '\0': + return PIDX_PKEY_PARAM_GROUP_NAME; + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_G; + } + break; + case 'h': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("s-randkey", s + 2) == 0) + return PIDX_CIPHER_PARAM_HAS_RAND_KEY; + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_H; + break; + case 'k': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'f': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_KEY_CHECK; + } + } + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_HMAC_KEY_CHECK; + break; + case 's': + if (strcmp("_padding", s + 2) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING; + } + break; + case 'i': + switch(s[1]) { + default: + break; + case 'd': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_PKCS12_ID; + } + break; + case 'k': + if (strcmp("me", s + 2) == 0) + return PIDX_KEM_PARAM_IKME; + break; + case 'm': + if (strcmp("plicit-rejection", s + 2) == 0) + return PIDX_PKEY_PARAM_IMPLICIT_REJECTION; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("lude-public", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC; + break; + case 'f': + if (strcmp("o", s + 3) == 0) + return PIDX_PASSPHRASE_PARAM_INFO; + break; + case 'p': + if (strcmp("ut-type", s + 3) == 0) + return PIDX_STORE_PARAM_INPUT_TYPE; + break; + case 's': + if (strcmp("tance", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_INSTANCE; + } + break; + case 't': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("tion", s + 5) == 0) + return PIDX_GEN_PARAM_ITERATION; + break; + case '\0': + return PIDX_KDF_PARAM_ITER; + } + } + } + break; + case 'v': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("generated", s + 3) == 0) + return PIDX_CIPHER_PARAM_AEAD_IV_GENERATED; + break; + case 'l': + if (strcmp("en", s + 3) == 0) + return PIDX_CIPHER_PARAM_IVLEN; + break; + case '\0': + return PIDX_MAC_PARAM_IV; + } + } + break; + case 'j': + switch(s[1]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_COFACTOR; + } + break; + case 'k': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K2; + } + break; + case '3': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K3; + } + break; + case 'a': + if (strcmp("t", s + 2) == 0) + return PIDX_SIGNATURE_PARAM_KAT; + break; + case 'b': + if (strcmp("kdf-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KBKDF_KEY_CHECK; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case 's': + switch(s[9]) { + default: + break; + case 't': + switch(s[10]) { + default: + break; + case '-': + if (strcmp("props", s + 11) == 0) + return PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_KDF_DIGEST; + } + } + } + } + } + } + break; + case 'o': + if (strcmp("utlen", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_OUTLEN; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_TYPE; + break; + case 'u': + if (strcmp("km", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_UKM; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'y': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("heck", s + 5) == 0) + return PIDX_PKEY_PARAM_FIPS_KEY_CHECK; + break; + case 'l': + if (strcmp("ength", s + 5) == 0) + return PIDX_SKEY_PARAM_KEY_LENGTH; + } + break; + case 'b': + if (strcmp("its", s + 4) == 0) + return PIDX_CIPHER_PARAM_RC2_KEYBITS; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_KEYLEN; + break; + case '\0': + return PIDX_MAC_PARAM_KEY; + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KMAC_KEY_CHECK; + } + break; + case 'l': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("el", s + 3) == 0) + return PIDX_KDF_PARAM_LABEL; + break; + case 'n': + if (strcmp("es", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_LANES; + } + } + break; + case 'm': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'k': + if (strcmp("ey", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_MAC_KEY; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_KDF_PARAM_MAC_SIZE; + break; + case '\0': + return PIDX_ALG_PARAM_MAC; + } + break; + case 'n': + if (strcmp("datory-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_MANDATORY_DIGEST; + break; + case 'x': + switch(s[3]) { + default: + break; + case '-': + if (strcmp("size", s + 4) == 0) + return PIDX_PKEY_PARAM_MAX_SIZE; + break; + case '_': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("dinlen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_ADINLEN; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("rly_data", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA; + break; + case 'n': + if (strcmp("tropylen", s + 6) == 0) + return PIDX_DRBG_PARAM_MAX_ENTROPYLEN; + } + break; + case 'f': + if (strcmp("rag_len", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_NONCELEN; + break; + case 'p': + if (strcmp("erslen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_PERSLEN; + break; + case 'r': + if (strcmp("equest", s + 5) == 0) + return PIDX_RAND_PARAM_MAX_REQUEST; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MAX_LENGTH; + break; + case 'm': + if (strcmp("em_bytes", s + 4) == 0) + return PIDX_KDF_PARAM_SCRYPT_MAXMEM; + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'm': + if (strcmp("cost", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_MEMCOST; + break; + case 's': + if (strcmp("sage-encoding", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING; + } + break; + case 'g': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_DIGEST; + break; + case 'p': + if (strcmp("roperties", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_PROPERTIES; + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_MASKGENFUNC; + } + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("alg", s + 3) == 0) + return PIDX_DIGEST_PARAM_MICALG; + break; + case 'n': + switch(s[3]) { + default: + break; + case '_': + switch(s[4]) { + default: + break; + case 'e': + if (strcmp("ntropylen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_ENTROPYLEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_NONCELEN; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MIN_LENGTH; + } + } + break; + case 'l': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + if (strcmp("nput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS; + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED; + } + } + } + } + break; + case 'k': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + switch(s[8]) { + default: + break; + case 'm': + if (strcmp("port_pct_type", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE; + break; + case 'n': + if (strcmp("put_formats", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS; + } + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED; + } + } + } + } + } + } + break; + case 'o': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case '\0': + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE; + } + break; + case 'u': + if (strcmp("le-filename", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_MODULE_FILENAME; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_SIGNATURE_PARAM_MU; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_M; + } + break; + case 'n': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("me", s + 2) == 0) + return PIDX_STORE_PARAM_ISSUER; + break; + case 'o': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("short-mac", s + 3) == 0) + return PIDX_PROV_PARAM_NO_SHORT_MAC; + break; + case 'n': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("type", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_NONCE_TYPE; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_NONCE; + } + } + } + } + break; + case 'u': + if (strcmp("m", s + 2) == 0) + return PIDX_CIPHER_PARAM_NUM; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_N; + } + break; + case 'o': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("ep-label", s + 2) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL; + break; + case 'p': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'n': + if (strcmp("ssl-version", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_VERSION; + break; + case 'r': + if (strcmp("ation", s + 4) == 0) + return PIDX_KEM_PARAM_OPERATION; + } + break; + case 't': + if (strcmp("ions", s + 3) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS; + } + break; + case 'r': + if (strcmp("der", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_ORDER; + } + break; + case 'p': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P2; + } + break; + case 'a': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'm': + if (strcmp("ode", s + 5) == 0) + return PIDX_PKEY_PARAM_PAD_MODE; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_DIGEST_PARAM_PAD_TYPE; + } + break; + case 'd': + if (strcmp("ing", s + 4) == 0) + return PIDX_CIPHER_PARAM_PADDING; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_PAD; + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'u': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYUINFO; + break; + case 'v': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYVINFO; + } + } + } + break; + case 's': + if (strcmp("s", s + 3) == 0) + return PIDX_KDF_PARAM_PASSWORD; + } + break; + case 'b': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("ts", s + 3) == 0) + return PIDX_PKEY_PARAM_FFC_PBITS; + break; + case 'k': + if (strcmp("df2-lower-bound-check", s + 3) == 0) + return PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK; + } + break; + case 'c': + if (strcmp("ounter", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_PCOUNTER; + break; + case 'i': + if (strcmp("peline-tag", s + 2) == 0) + return PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG; + break; + case 'k': + if (strcmp("cs5", s + 2) == 0) + return PIDX_KDF_PARAM_PKCS5; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("nt-format", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT; + break; + case 't': + if (strcmp("ential", s + 3) == 0) + return PIDX_GEN_PARAM_POTENTIAL; + } + break; + case 'r': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("iction_resistance", s + 4) == 0) + return PIDX_DRBG_PARAM_PREDICTION_RESISTANCE; + break; + case 'f': + if (strcmp("ix", s + 4) == 0) + return PIDX_KDF_PARAM_PREFIX; + } + break; + case 'i': + switch(s[3]) { + default: + break; + case 'm': + if (strcmp("es", s + 4) == 0) + return PIDX_PKEY_PARAM_RSA_PRIMES; + break; + case 'v': + switch(s[4]) { + default: + break; + case '_': + if (strcmp("len", s + 5) == 0) + return PIDX_PKEY_PARAM_DH_PRIV_LEN; + break; + case '\0': + return PIDX_PKEY_PARAM_PRIV_KEY; + } + } + break; + case 'o': + switch(s[3]) { + default: + break; + case 'p': + if (strcmp("erties", s + 4) == 0) + return PIDX_STORE_PARAM_PROPERTIES; + break; + case 'v': + if (strcmp("ider-name", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_PROV_NAME; + } + } + break; + case 'u': + if (strcmp("b", s + 2) == 0) + return PIDX_PKEY_PARAM_PUB_KEY; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_P; + } + break; + case 'q': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q2; + } + break; + case 'b': + if (strcmp("its", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_QBITS; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_Q; + break; + case 'x': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_X; + } + break; + case 'y': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_Y; + } + } + break; + case 'r': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'k': + if (strcmp("ey", s + 5) == 0) + return PIDX_CIPHER_PARAM_RANDOM_KEY; + break; + case 'o': + if (strcmp("m_data", s + 5) == 0) + return PIDX_DRBG_PARAM_RANDOM_DATA; + } + } + break; + case 'w': + if (strcmp("-bytes", s + 3) == 0) + return PIDX_SKEY_PARAM_RAW_BYTES; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case '_': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("head", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD; + break; + case 'b': + if (strcmp("uffer_len", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN; + } + } + } + break; + case 'f': + if (strcmp("erence", s + 3) == 0) + return PIDX_OBJECT_PARAM_REFERENCE; + break; + case 's': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case '_': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("ounter", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_COUNTER; + break; + case 'r': + if (strcmp("equests", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_REQUESTS; + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case 'm': + switch(s[10]) { + default: + break; + case 'e': + switch(s[11]) { + default: + break; + case '_': + if (strcmp("interval", s + 12) == 0) + return PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL; + break; + case '\0': + return PIDX_DRBG_PARAM_RESEED_TIME; + } + } + } + } + } + } + } + } + } + } + break; + case 'o': + if (strcmp("unds", s + 2) == 0) + return PIDX_CIPHER_PARAM_ROUNDS; + break; + case 's': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + switch(s[5]) { + default: + break; + case 'o': + switch(s[6]) { + default: + break; + case 'e': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case 'i': + switch(s[10]) { + default: + break; + case 'c': + switch(s[11]) { + default: + break; + case 'i': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'n': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case '1': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT1; + } + break; + case '2': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT2; + } + break; + case '3': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT3; + } + break; + case '4': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT4; + } + break; + case '5': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT5; + } + break; + case '6': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT6; + } + break; + case '7': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT7; + } + break; + case '8': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT8; + } + break; + case '9': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'd': + if (strcmp("erive-from-pq", s + 5) == 0) + return PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'x': + switch(s[6]) { + default: + break; + case 'p': + switch(s[7]) { + default: + break; + case 'o': + switch(s[8]) { + default: + break; + case 'n': + switch(s[9]) { + default: + break; + case 'e': + switch(s[10]) { + default: + break; + case 'n': + switch(s[11]) { + default: + break; + case 't': + switch(s[12]) { + default: + break; + case '1': + switch(s[13]) { + default: + break; + case '0': + switch(s[14]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT1; + } + break; + case '2': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT2; + } + break; + case '3': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT3; + } + break; + case '4': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT4; + } + break; + case '5': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT5; + } + break; + case '6': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT6; + } + break; + case '7': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT7; + } + break; + case '8': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT8; + } + break; + case '9': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT; + } + } + } + } + } + } + } + } + break; + case 'f': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'o': + switch(s[9]) { + default: + break; + case 'r': + switch(s[10]) { + default: + break; + case '1': + switch(s[11]) { + default: + break; + case '0': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR1; + } + break; + case '2': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR2; + } + break; + case '3': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR3; + } + break; + case '4': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR4; + } + break; + case '5': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR5; + } + break; + case '6': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR6; + } + break; + case '7': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR7; + } + break; + case '8': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR8; + } + break; + case '9': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR; + } + } + } + } + } + } + break; + case 'p': + switch(s[5]) { + default: + break; + case 'k': + if (strcmp("cs15-pad-disabled", s + 6) == 0) + return PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED; + break; + case 's': + if (strcmp("s-saltlen-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK; + } + break; + case 's': + if (strcmp("ign-x931-pad-disabled", s + 5) == 0) + return PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED; + } + } + } + break; + case '\0': + return PIDX_KDF_PARAM_SCRYPT_R; + } + break; + case 's': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("eprime-generator", s + 3) == 0) + return PIDX_PKEY_PARAM_DH_GENERATOR; + break; + case 'l': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'l': + if (strcmp("en", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_PSS_SALTLEN; + break; + case '\0': + return PIDX_MAC_PARAM_SALT; + } + } + break; + case 'v': + if (strcmp("e-parameters", s + 3) == 0) + return PIDX_ENCODER_PARAM_SAVE_PARAMETERS; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'r': + if (strcmp("et", s + 4) == 0) + return PIDX_KDF_PARAM_SECRET; + break; + case 'u': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'y': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'b': + if (strcmp("its", s + 10) == 0) + return PIDX_PKEY_PARAM_SECURITY_BITS; + break; + case 'c': + if (strcmp("hecks", s + 10) == 0) + return PIDX_PROV_PARAM_SECURITY_CHECKS; + } + } + } + } + } + } + } + break; + case 'e': + if (strcmp("d", s + 3) == 0) + return PIDX_PKEY_PARAM_SLH_DSA_SEED; + break; + case 'r': + if (strcmp("ial", s + 3) == 0) + return PIDX_STORE_PARAM_SERIAL; + break; + case 's': + if (strcmp("sion_id", s + 3) == 0) + return PIDX_KDF_PARAM_SSHKDF_SESSION_ID; + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'n': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + if (strcmp("heck", s + 6) == 0) + return PIDX_PKEY_PARAM_FIPS_SIGN_CHECK; + break; + case 'x': + if (strcmp("931-pad-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK; + } + break; + case 'a': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case 'u': + switch(s[7]) { + default: + break; + case 'r': + switch(s[8]) { + default: + break; + case 'e': + switch(s[9]) { + default: + break; + case '-': + if (strcmp("digest-check", s + 10) == 0) + return PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK; + break; + case '\0': + return PIDX_SIGNATURE_PARAM_SIGNATURE; + } + } + } + } + } + } + } + break; + case 'z': + if (strcmp("e", s + 3) == 0) + return PIDX_MAC_PARAM_SIZE; + } + break; + case 'p': + if (strcmp("eed", s + 2) == 0) + return PIDX_CIPHER_PARAM_SPEED; + break; + case 's': + switch(s[2]) { + default: + break; + case 'h': + switch(s[3]) { + default: + break; + case 'k': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'f': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_KEY_CHECK; + } + } + } + } + } + break; + case 'k': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'f': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_KEY_CHECK; + } + } + } + } + break; + case 'l': + if (strcmp("3-ms", s + 3) == 0) + return PIDX_DIGEST_PARAM_SSL3_MS; + } + break; + case 't': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("esc", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_DESC; + break; + case 'p': + if (strcmp("hase", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_PHASE; + break; + case 't': + if (strcmp("ype", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_TYPE; + } + break; + case 'a': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_STATE; + } + break; + case 'u': + if (strcmp("s", s + 5) == 0) + return PIDX_PROV_PARAM_STATUS; + } + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("m_mac", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC; + break; + case 'n': + if (strcmp("gth", s + 5) == 0) + return PIDX_RAND_PARAM_STRENGTH; + } + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("ject", s + 3) == 0) + return PIDX_STORE_PARAM_SUBJECT; + break; + case 'p': + switch(s[3]) { + default: + break; + case 'p': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + if (strcmp("ivinfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PRIVINFO; + break; + case 'u': + if (strcmp("binfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PUBINFO; + } + } + } + } + } + } + break; + case 't': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_TAGLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TAG; + } + } + break; + case 'd': + if (strcmp("es-encrypt-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED; + break; + case 'e': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case '-': + if (strcmp("entropy", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_TEST_ENTROPY; + break; + case '_': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("ntropy", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_ENTROPY; + break; + case 'n': + if (strcmp("once", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_NONCE; + } + } + } + } + break; + case 'h': + if (strcmp("reads", s + 2) == 0) + return PIDX_KDF_PARAM_THREADS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("lient-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION; + break; + case 'd': + if (strcmp("ata-size", s + 5) == 0) + return PIDX_MAC_PARAM_TLS_DATA_SIZE; + break; + case 'g': + switch(s[5]) { + default: + break; + case 'r': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'u': + switch(s[8]) { + default: + break; + case 'p': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'a': + if (strcmp("lg", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_ALG; + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_ID; + } + break; + case 's': + if (strcmp("-kem", s + 12) == 0) + return PIDX_CAPABILITY_TLS_GROUP_IS_KEM; + } + break; + case 'n': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'm': + switch(s[13]) { + default: + break; + case 'e': + switch(s[14]) { + default: + break; + case '-': + if (strcmp("internal", s + 15) == 0) + return PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL; + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_NAME; + } + } + } + } + break; + case 's': + if (strcmp("ec-bits", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case '-': + if (strcmp("size", s + 8) == 0) + return PIDX_CIPHER_PARAM_TLS_MAC_SIZE; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS_MAC; + } + break; + case 'x': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS; + } + } + } + break; + case 'i': + switch(s[6]) { + default: + break; + case 'n': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS; + } + } + } + break; + case 'u': + if (strcmp("lti", s + 6) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK; + } + break; + case 'n': + if (strcmp("egotiated-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION; + break; + case 's': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'a': + switch(s[8]) { + default: + break; + case 'l': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '-': + switch(s[11]) { + default: + break; + case 'c': + if (strcmp("ode-point", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT; + break; + case 'h': + switch(s[12]) { + default: + break; + case 'a': + switch(s[13]) { + default: + break; + case 's': + switch(s[14]) { + default: + break; + case 'h': + switch(s[15]) { + default: + break; + case '-': + switch(s[16]) { + default: + break; + case 'n': + if (strcmp("ame", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME; + break; + case 'o': + if (strcmp("id", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_OID; + } + } + } + } + } + break; + case 'i': + if (strcmp("ana-name", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME; + break; + case 'k': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'y': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case 'y': + switch(s[16]) { + default: + break; + case 'p': + switch(s[17]) { + default: + break; + case 'e': + switch(s[18]) { + default: + break; + case '-': + if (strcmp("oid", s + 19) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID; + break; + case '\0': + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE; + } + } + } + } + } + } + } + break; + case 'n': + if (strcmp("ame", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_NAME; + break; + case 'o': + if (strcmp("id", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_OID; + break; + case 's': + switch(s[12]) { + default: + break; + case 'e': + if (strcmp("c-bits", s + 13) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS; + break; + case 'i': + switch(s[13]) { + default: + break; + case 'g': + switch(s[14]) { + default: + break; + case '-': + switch(s[15]) { + default: + break; + case 'n': + if (strcmp("ame", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME; + break; + case 'o': + if (strcmp("id", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_OID; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'v': + if (strcmp("ersion", s + 5) == 0) + return PIDX_CIPHER_PARAM_TLS_VERSION; + } + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK; + break; + case 'e': + if (strcmp("ms-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK; + } + } + } + } + } + break; + case '3': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'k': + switch(s[7]) { + default: + break; + case 'd': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'u': + switch(s[6]) { + default: + break; + case 'l': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case '_': + switch(s[10]) { + default: + break; + case 'a': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'd': + switch(s[13]) { + default: + break; + case 'p': + if (strcmp("acklen", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD; + } + } + } + break; + case 'e': + switch(s[11]) { + default: + break; + case 'n': + switch(s[12]) { + default: + break; + case 'c': + switch(s[13]) { + default: + break; + case 'i': + if (strcmp("n", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN; + break; + case 'l': + if (strcmp("en", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC; + } + } + } + break; + case 'i': + if (strcmp("nterleave", s + 11) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE; + break; + case 'm': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'x': + switch(s[13]) { + default: + break; + case 'b': + if (strcmp("ufsz", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE; + break; + case 's': + if (strcmp("ndfrag", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT; + } + } + } + } + } + } + } + } + } + } + break; + case 'a': + switch(s[4]) { + default: + break; + case 'a': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'p': + if (strcmp("ad", s + 7) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD; + } + } + } + break; + case 'i': + switch(s[4]) { + default: + break; + case 'v': + switch(s[5]) { + default: + break; + case 'f': + if (strcmp("ixed", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED; + break; + case 'g': + if (strcmp("en", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN; + break; + case 'i': + if (strcmp("nv", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV; + } + } + break; + case 't': + if (strcmp("ree", s + 4) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS; + } + break; + case 'y': + if (strcmp("pe", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_TYPE; + } + break; + case 'u': + switch(s[1]) { + default: + break; + case 'k': + if (strcmp("m", s + 2) == 0) + return PIDX_KDF_PARAM_UKM; + break; + case 'p': + if (strcmp("dated-iv", s + 2) == 0) + return PIDX_CIPHER_PARAM_UPDATED_IV; + break; + case 's': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'b': + if (strcmp("its", s + 5) == 0) + return PIDX_CIPHER_PARAM_USE_BITS; + break; + case 'c': + if (strcmp("ofactor-flag", s + 5) == 0) + return PIDX_PKEY_PARAM_USE_COFACTOR_FLAG; + break; + case 'k': + if (strcmp("eybits", s + 5) == 0) + return PIDX_KDF_PARAM_X942_USE_KEYBITS; + break; + case 'l': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_KBKDF_USE_L; + } + break; + case 's': + if (strcmp("eparator", s + 5) == 0) + return PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR; + } + break; + case '_': + switch(s[4]) { + default: + break; + case 'd': + if (strcmp("erivation_function", s + 5) == 0) + return PIDX_DRBG_PARAM_USE_DF; + break; + case 'e': + if (strcmp("tm", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM; + } + } + } + } + break; + case 'v': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'l': + switch(s[3]) { + default: + break; + case 'i': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_VALIDATE_G; + } + break; + case 'l': + if (strcmp("egacy", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY; + break; + case 'p': + if (strcmp("q", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_PQ; + } + } + } + } + } + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'r': + switch(s[3]) { + default: + break; + case 'i': + if (strcmp("fy-message", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE; + break; + case 's': + if (strcmp("ion", s + 4) == 0) + return PIDX_PROV_PARAM_VERSION; + } + } + } + break; + case 'x': + switch(s[1]) { + default: + break; + case '9': + switch(s[2]) { + default: + break; + case '4': + if (strcmp("2kdf-key-check", s + 3) == 0) + return PIDX_PROV_PARAM_X942KDF_KEY_CHECK; + break; + case '6': + switch(s[3]) { + default: + break; + case '3': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'f': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_KEY_CHECK; + } + } + } + } + } + } + } + break; + case 'c': + if (strcmp("ghash", s + 2) == 0) + return PIDX_KDF_PARAM_SSHKDF_XCGHASH; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_DIGEST_PARAM_XOFLEN; + break; + case '\0': + return PIDX_MAC_PARAM_XOF; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP; + } + break; + case 'q': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ; + } + break; + case 't': + if (strcmp("s_standard", s + 2) == 0) + return PIDX_CIPHER_PARAM_XTS_STANDARD; + } + } + return -1; +} + +/* End of TRIE */ diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/internal/param_names.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/internal/param_names.h new file mode 100644 index 00000000000000..ec5bff6e31c126 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/internal/param_names.h @@ -0,0 +1,469 @@ +/* + * WARNING: do not edit! + * Generated by makefile from include/internal/param_names.h.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +int ossl_param_find_pidx(const char *s); + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +#define NUM_PIDX 346 + +#define PIDX_ALG_PARAM_ALGORITHM_ID 0 +#define PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS 1 +#define PIDX_ALG_PARAM_CIPHER 2 +#define PIDX_ALG_PARAM_DIGEST 3 +#define PIDX_ALG_PARAM_ENGINE 4 +#define PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR 5 +#define PIDX_ALG_PARAM_MAC 6 +#define PIDX_ALG_PARAM_PROPERTIES 7 +#define PIDX_ASYM_CIPHER_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_ENGINE PIDX_PKEY_PARAM_ENGINE +#define PIDX_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +#define PIDX_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS 9 +#define PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL 10 +#define PIDX_ASYM_CIPHER_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_ASYM_CIPHER_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION 11 +#define PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION 12 +#define PIDX_CAPABILITY_TLS_GROUP_ALG 13 +#define PIDX_CAPABILITY_TLS_GROUP_ID 14 +#define PIDX_CAPABILITY_TLS_GROUP_IS_KEM 15 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_GROUP_NAME 20 +#define PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL 21 +#define PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS 22 +#define PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT 23 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME 24 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_OID 25 +#define PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME 26 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE 27 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID 28 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_SIGALG_NAME 29 +#define PIDX_CAPABILITY_TLS_SIGALG_OID 30 +#define PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS 31 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME 32 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_OID 33 +#define PIDX_CIPHER_PARAM_AEAD 34 +#define PIDX_CIPHER_PARAM_AEAD_IVLEN PIDX_CIPHER_PARAM_IVLEN +#define PIDX_CIPHER_PARAM_AEAD_IV_GENERATED 35 +#define PIDX_CIPHER_PARAM_AEAD_MAC_KEY 36 +#define PIDX_CIPHER_PARAM_AEAD_TAG 37 +#define PIDX_CIPHER_PARAM_AEAD_TAGLEN 38 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD 39 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD 40 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN 41 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED 42 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV 43 +#define PIDX_CIPHER_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD 44 +#define PIDX_CIPHER_PARAM_BLOCK_SIZE 45 +#define PIDX_CIPHER_PARAM_CTS 46 +#define PIDX_CIPHER_PARAM_CTS_MODE 47 +#define PIDX_CIPHER_PARAM_CUSTOM_IV 48 +#define PIDX_CIPHER_PARAM_DECRYPT_ONLY 49 +#define PIDX_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK 50 +#define PIDX_CIPHER_PARAM_HAS_RAND_KEY 51 +#define PIDX_CIPHER_PARAM_IV 52 +#define PIDX_CIPHER_PARAM_IVLEN 53 +#define PIDX_CIPHER_PARAM_KEYLEN 54 +#define PIDX_CIPHER_PARAM_MODE 55 +#define PIDX_CIPHER_PARAM_NUM 56 +#define PIDX_CIPHER_PARAM_PADDING 57 +#define PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG 58 +#define PIDX_CIPHER_PARAM_RANDOM_KEY 59 +#define PIDX_CIPHER_PARAM_RC2_KEYBITS 60 +#define PIDX_CIPHER_PARAM_ROUNDS 61 +#define PIDX_CIPHER_PARAM_SPEED 62 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK 63 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD 64 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN 65 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC 66 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN 67 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN 68 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE 69 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE 70 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT 71 +#define PIDX_CIPHER_PARAM_TLS_MAC 72 +#define PIDX_CIPHER_PARAM_TLS_MAC_SIZE 73 +#define PIDX_CIPHER_PARAM_TLS_VERSION 74 +#define PIDX_CIPHER_PARAM_UPDATED_IV 75 +#define PIDX_CIPHER_PARAM_USE_BITS 76 +#define PIDX_CIPHER_PARAM_XTS_STANDARD 77 +#define PIDX_DECODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DIGEST_PARAM_ALGID_ABSENT 78 +#define PIDX_DIGEST_PARAM_BLOCK_SIZE 45 +#define PIDX_DIGEST_PARAM_MICALG 79 +#define PIDX_DIGEST_PARAM_PAD_TYPE 80 +#define PIDX_DIGEST_PARAM_SIZE 81 +#define PIDX_DIGEST_PARAM_SSL3_MS 82 +#define PIDX_DIGEST_PARAM_XOF 83 +#define PIDX_DIGEST_PARAM_XOFLEN 84 +#define PIDX_DRBG_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_DRBG_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_DRBG_PARAM_ENTROPY_REQUIRED 85 +#define PIDX_DRBG_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_DRBG_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_DRBG_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_DRBG_PARAM_MAX_ADINLEN 86 +#define PIDX_DRBG_PARAM_MAX_ENTROPYLEN 87 +#define PIDX_DRBG_PARAM_MAX_LENGTH 88 +#define PIDX_DRBG_PARAM_MAX_NONCELEN 89 +#define PIDX_DRBG_PARAM_MAX_PERSLEN 90 +#define PIDX_DRBG_PARAM_MIN_ENTROPYLEN 91 +#define PIDX_DRBG_PARAM_MIN_LENGTH 92 +#define PIDX_DRBG_PARAM_MIN_NONCELEN 93 +#define PIDX_DRBG_PARAM_PREDICTION_RESISTANCE 94 +#define PIDX_DRBG_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DRBG_PARAM_RANDOM_DATA 95 +#define PIDX_DRBG_PARAM_RESEED_COUNTER 96 +#define PIDX_DRBG_PARAM_RESEED_REQUESTS 97 +#define PIDX_DRBG_PARAM_RESEED_TIME 98 +#define PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL 99 +#define PIDX_DRBG_PARAM_SIZE 81 +#define PIDX_DRBG_PARAM_USE_DF 100 +#define PIDX_ENCODER_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_ENCODER_PARAM_ENCRYPT_LEVEL 101 +#define PIDX_ENCODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_ENCODER_PARAM_SAVE_PARAMETERS 102 +#define PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE 103 +#define PIDX_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_EXCHANGE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST 104 +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS 105 +#define PIDX_EXCHANGE_PARAM_KDF_OUTLEN 106 +#define PIDX_EXCHANGE_PARAM_KDF_TYPE 107 +#define PIDX_EXCHANGE_PARAM_KDF_UKM 108 +#define PIDX_EXCHANGE_PARAM_PAD 109 +#define PIDX_GEN_PARAM_ITERATION 110 +#define PIDX_GEN_PARAM_POTENTIAL 111 +#define PIDX_KDF_PARAM_ARGON2_AD 112 +#define PIDX_KDF_PARAM_ARGON2_LANES 113 +#define PIDX_KDF_PARAM_ARGON2_MEMCOST 114 +#define PIDX_KDF_PARAM_ARGON2_VERSION 115 +#define PIDX_KDF_PARAM_CEK_ALG 116 +#define PIDX_KDF_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_KDF_PARAM_CONSTANT 117 +#define PIDX_KDF_PARAM_DATA 118 +#define PIDX_KDF_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_KDF_PARAM_EARLY_CLEAN 119 +#define PIDX_KDF_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KDF_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_KDF_PARAM_FIPS_EMS_CHECK 120 +#define PIDX_KDF_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KDF_PARAM_HMACDRBG_ENTROPY 121 +#define PIDX_KDF_PARAM_HMACDRBG_NONCE 122 +#define PIDX_KDF_PARAM_INFO 123 +#define PIDX_KDF_PARAM_ITER 124 +#define PIDX_KDF_PARAM_KBKDF_R 125 +#define PIDX_KDF_PARAM_KBKDF_USE_L 126 +#define PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR 127 +#define PIDX_KDF_PARAM_KEY 128 +#define PIDX_KDF_PARAM_LABEL 129 +#define PIDX_KDF_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_KDF_PARAM_MAC_SIZE 130 +#define PIDX_KDF_PARAM_MODE 55 +#define PIDX_KDF_PARAM_PASSWORD 131 +#define PIDX_KDF_PARAM_PKCS12_ID 132 +#define PIDX_KDF_PARAM_PKCS5 133 +#define PIDX_KDF_PARAM_PREFIX 134 +#define PIDX_KDF_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_KDF_PARAM_SALT 135 +#define PIDX_KDF_PARAM_SCRYPT_MAXMEM 136 +#define PIDX_KDF_PARAM_SCRYPT_N 137 +#define PIDX_KDF_PARAM_SCRYPT_P 138 +#define PIDX_KDF_PARAM_SCRYPT_R 125 +#define PIDX_KDF_PARAM_SECRET 139 +#define PIDX_KDF_PARAM_SEED 140 +#define PIDX_KDF_PARAM_SIZE 81 +#define PIDX_KDF_PARAM_SSHKDF_SESSION_ID 141 +#define PIDX_KDF_PARAM_SSHKDF_TYPE 142 +#define PIDX_KDF_PARAM_SSHKDF_XCGHASH 143 +#define PIDX_KDF_PARAM_THREADS 144 +#define PIDX_KDF_PARAM_UKM 145 +#define PIDX_KDF_PARAM_X942_ACVPINFO 146 +#define PIDX_KDF_PARAM_X942_PARTYUINFO 147 +#define PIDX_KDF_PARAM_X942_PARTYVINFO 148 +#define PIDX_KDF_PARAM_X942_SUPP_PRIVINFO 149 +#define PIDX_KDF_PARAM_X942_SUPP_PUBINFO 150 +#define PIDX_KDF_PARAM_X942_USE_KEYBITS 151 +#define PIDX_KEM_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KEM_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KEM_PARAM_IKME 152 +#define PIDX_KEM_PARAM_OPERATION 153 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING 154 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING 155 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA 156 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN 157 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE 55 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS 158 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD 159 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC 160 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE 161 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM 162 +#define PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN 163 +#define PIDX_MAC_PARAM_BLOCK_SIZE 164 +#define PIDX_MAC_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_MAC_PARAM_CUSTOM 165 +#define PIDX_MAC_PARAM_C_ROUNDS 166 +#define PIDX_MAC_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_MAC_PARAM_DIGEST_NOINIT 167 +#define PIDX_MAC_PARAM_DIGEST_ONESHOT 168 +#define PIDX_MAC_PARAM_D_ROUNDS 169 +#define PIDX_MAC_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_MAC_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_MAC_PARAM_FIPS_NO_SHORT_MAC PIDX_PROV_PARAM_NO_SHORT_MAC +#define PIDX_MAC_PARAM_IV 52 +#define PIDX_MAC_PARAM_KEY 128 +#define PIDX_MAC_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_MAC_PARAM_SALT 135 +#define PIDX_MAC_PARAM_SIZE 81 +#define PIDX_MAC_PARAM_TLS_DATA_SIZE 170 +#define PIDX_MAC_PARAM_XOF 83 +#define PIDX_OBJECT_PARAM_DATA 118 +#define PIDX_OBJECT_PARAM_DATA_STRUCTURE 171 +#define PIDX_OBJECT_PARAM_DATA_TYPE 172 +#define PIDX_OBJECT_PARAM_DESC 173 +#define PIDX_OBJECT_PARAM_INPUT_TYPE 174 +#define PIDX_OBJECT_PARAM_REFERENCE 175 +#define PIDX_OBJECT_PARAM_TYPE 142 +#define PIDX_PASSPHRASE_PARAM_INFO 123 +#define PIDX_PKEY_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_PKEY_PARAM_BITS 176 +#define PIDX_PKEY_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_PKEY_PARAM_DEFAULT_DIGEST 177 +#define PIDX_PKEY_PARAM_DHKEM_IKM 178 +#define PIDX_PKEY_PARAM_DH_GENERATOR 179 +#define PIDX_PKEY_PARAM_DH_PRIV_LEN 180 +#define PIDX_PKEY_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_PKEY_PARAM_DIGEST_SIZE 181 +#define PIDX_PKEY_PARAM_DIST_ID 182 +#define PIDX_PKEY_PARAM_EC_A 183 +#define PIDX_PKEY_PARAM_EC_B 184 +#define PIDX_PKEY_PARAM_EC_CHAR2_M 185 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K1 186 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K2 187 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K3 188 +#define PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS 189 +#define PIDX_PKEY_PARAM_EC_CHAR2_TYPE 190 +#define PIDX_PKEY_PARAM_EC_COFACTOR 191 +#define PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS 192 +#define PIDX_PKEY_PARAM_EC_ENCODING 193 +#define PIDX_PKEY_PARAM_EC_FIELD_TYPE 194 +#define PIDX_PKEY_PARAM_EC_GENERATOR 195 +#define PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE 196 +#define PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC 197 +#define PIDX_PKEY_PARAM_EC_ORDER 198 +#define PIDX_PKEY_PARAM_EC_P 138 +#define PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT 199 +#define PIDX_PKEY_PARAM_EC_PUB_X 200 +#define PIDX_PKEY_PARAM_EC_PUB_Y 201 +#define PIDX_PKEY_PARAM_EC_SEED 140 +#define PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY 202 +#define PIDX_PKEY_PARAM_ENGINE PIDX_ALG_PARAM_ENGINE +#define PIDX_PKEY_PARAM_FFC_COFACTOR 203 +#define PIDX_PKEY_PARAM_FFC_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_FFC_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_FFC_G 204 +#define PIDX_PKEY_PARAM_FFC_GINDEX 205 +#define PIDX_PKEY_PARAM_FFC_H 206 +#define PIDX_PKEY_PARAM_FFC_P 138 +#define PIDX_PKEY_PARAM_FFC_PBITS 207 +#define PIDX_PKEY_PARAM_FFC_PCOUNTER 208 +#define PIDX_PKEY_PARAM_FFC_Q 209 +#define PIDX_PKEY_PARAM_FFC_QBITS 210 +#define PIDX_PKEY_PARAM_FFC_SEED 140 +#define PIDX_PKEY_PARAM_FFC_TYPE 142 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_G 211 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY 212 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_PQ 213 +#define PIDX_PKEY_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK 214 +#define PIDX_PKEY_PARAM_FIPS_KEY_CHECK 215 +#define PIDX_PKEY_PARAM_FIPS_SIGN_CHECK 216 +#define PIDX_PKEY_PARAM_GROUP_NAME 217 +#define PIDX_PKEY_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_PKEY_PARAM_MANDATORY_DIGEST 218 +#define PIDX_PKEY_PARAM_MASKGENFUNC 219 +#define PIDX_PKEY_PARAM_MAX_SIZE 220 +#define PIDX_PKEY_PARAM_MGF1_DIGEST 221 +#define PIDX_PKEY_PARAM_MGF1_PROPERTIES 222 +#define PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS 223 +#define PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS 224 +#define PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED 225 +#define PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED 226 +#define PIDX_PKEY_PARAM_ML_DSA_SEED 140 +#define PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE 227 +#define PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS 228 +#define PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS 229 +#define PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED 230 +#define PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED 231 +#define PIDX_PKEY_PARAM_ML_KEM_SEED 140 +#define PIDX_PKEY_PARAM_PAD_MODE 232 +#define PIDX_PKEY_PARAM_PRIV_KEY 233 +#define PIDX_PKEY_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_PUB_KEY 234 +#define PIDX_PKEY_PARAM_RSA_BITS PIDX_PKEY_PARAM_BITS +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT 235 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT1 236 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT2 237 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT3 238 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT4 239 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT5 240 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT6 241 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT7 242 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT8 243 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT9 244 +#define PIDX_PKEY_PARAM_RSA_D 245 +#define PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ 246 +#define PIDX_PKEY_PARAM_RSA_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_RSA_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_RSA_E 247 +#define PIDX_PKEY_PARAM_RSA_EXPONENT 248 +#define PIDX_PKEY_PARAM_RSA_EXPONENT1 249 +#define PIDX_PKEY_PARAM_RSA_EXPONENT10 250 +#define PIDX_PKEY_PARAM_RSA_EXPONENT2 251 +#define PIDX_PKEY_PARAM_RSA_EXPONENT3 252 +#define PIDX_PKEY_PARAM_RSA_EXPONENT4 253 +#define PIDX_PKEY_PARAM_RSA_EXPONENT5 254 +#define PIDX_PKEY_PARAM_RSA_EXPONENT6 255 +#define PIDX_PKEY_PARAM_RSA_EXPONENT7 256 +#define PIDX_PKEY_PARAM_RSA_EXPONENT8 257 +#define PIDX_PKEY_PARAM_RSA_EXPONENT9 258 +#define PIDX_PKEY_PARAM_RSA_FACTOR 259 +#define PIDX_PKEY_PARAM_RSA_FACTOR1 260 +#define PIDX_PKEY_PARAM_RSA_FACTOR10 261 +#define PIDX_PKEY_PARAM_RSA_FACTOR2 262 +#define PIDX_PKEY_PARAM_RSA_FACTOR3 263 +#define PIDX_PKEY_PARAM_RSA_FACTOR4 264 +#define PIDX_PKEY_PARAM_RSA_FACTOR5 265 +#define PIDX_PKEY_PARAM_RSA_FACTOR6 266 +#define PIDX_PKEY_PARAM_RSA_FACTOR7 267 +#define PIDX_PKEY_PARAM_RSA_FACTOR8 268 +#define PIDX_PKEY_PARAM_RSA_FACTOR9 269 +#define PIDX_PKEY_PARAM_RSA_MASKGENFUNC PIDX_PKEY_PARAM_MASKGENFUNC +#define PIDX_PKEY_PARAM_RSA_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_PKEY_PARAM_RSA_N 137 +#define PIDX_PKEY_PARAM_RSA_PRIMES 270 +#define PIDX_PKEY_PARAM_RSA_PSS_SALTLEN 271 +#define PIDX_PKEY_PARAM_RSA_TEST_P1 272 +#define PIDX_PKEY_PARAM_RSA_TEST_P2 273 +#define PIDX_PKEY_PARAM_RSA_TEST_Q1 274 +#define PIDX_PKEY_PARAM_RSA_TEST_Q2 275 +#define PIDX_PKEY_PARAM_RSA_TEST_XP 276 +#define PIDX_PKEY_PARAM_RSA_TEST_XP1 277 +#define PIDX_PKEY_PARAM_RSA_TEST_XP2 278 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ 279 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ1 280 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ2 281 +#define PIDX_PKEY_PARAM_SECURITY_BITS 282 +#define PIDX_PKEY_PARAM_SLH_DSA_SEED 140 +#define PIDX_PKEY_PARAM_USE_COFACTOR_ECDH PIDX_PKEY_PARAM_USE_COFACTOR_FLAG +#define PIDX_PKEY_PARAM_USE_COFACTOR_FLAG 283 +#define PIDX_PROV_PARAM_BUILDINFO 284 +#define PIDX_PROV_PARAM_CORE_MODULE_FILENAME 285 +#define PIDX_PROV_PARAM_CORE_PROV_NAME 286 +#define PIDX_PROV_PARAM_CORE_VERSION 287 +#define PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST 288 +#define PIDX_PROV_PARAM_DSA_SIGN_DISABLED 289 +#define PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK 290 +#define PIDX_PROV_PARAM_HKDF_DIGEST_CHECK 291 +#define PIDX_PROV_PARAM_HKDF_KEY_CHECK 292 +#define PIDX_PROV_PARAM_HMAC_KEY_CHECK 293 +#define PIDX_PROV_PARAM_KBKDF_KEY_CHECK 294 +#define PIDX_PROV_PARAM_KMAC_KEY_CHECK 295 +#define PIDX_PROV_PARAM_NAME 296 +#define PIDX_PROV_PARAM_NO_SHORT_MAC 297 +#define PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK 298 +#define PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED 299 +#define PIDX_PROV_PARAM_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED 301 +#define PIDX_PROV_PARAM_SECURITY_CHECKS 302 +#define PIDX_PROV_PARAM_SELF_TEST_DESC 303 +#define PIDX_PROV_PARAM_SELF_TEST_PHASE 304 +#define PIDX_PROV_PARAM_SELF_TEST_TYPE 305 +#define PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK 306 +#define PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK 307 +#define PIDX_PROV_PARAM_SSHKDF_KEY_CHECK 308 +#define PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK 309 +#define PIDX_PROV_PARAM_SSKDF_KEY_CHECK 310 +#define PIDX_PROV_PARAM_STATUS 311 +#define PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED 312 +#define PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK 313 +#define PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK 314 +#define PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK 315 +#define PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK 316 +#define PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK 317 +#define PIDX_PROV_PARAM_VERSION 115 +#define PIDX_PROV_PARAM_X942KDF_KEY_CHECK 318 +#define PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK 319 +#define PIDX_PROV_PARAM_X963KDF_KEY_CHECK 320 +#define PIDX_RAND_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_RAND_PARAM_GENERATE 321 +#define PIDX_RAND_PARAM_MAX_REQUEST 322 +#define PIDX_RAND_PARAM_STATE 323 +#define PIDX_RAND_PARAM_STRENGTH 324 +#define PIDX_RAND_PARAM_TEST_ENTROPY 325 +#define PIDX_RAND_PARAM_TEST_NONCE 326 +#define PIDX_SIGNATURE_PARAM_ADD_RANDOM 327 +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID PIDX_PKEY_PARAM_ALGORITHM_ID +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_SIGNATURE_PARAM_CONTEXT_STRING 328 +#define PIDX_SIGNATURE_PARAM_DETERMINISTIC 329 +#define PIDX_SIGNATURE_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_SIGNATURE_PARAM_DIGEST_SIZE PIDX_PKEY_PARAM_DIGEST_SIZE +#define PIDX_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_SIGNATURE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_CHECK PIDX_PKEY_PARAM_FIPS_SIGN_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK 330 +#define PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE 331 +#define PIDX_SIGNATURE_PARAM_INSTANCE 332 +#define PIDX_SIGNATURE_PARAM_KAT 333 +#define PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING 334 +#define PIDX_SIGNATURE_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_SIGNATURE_PARAM_MGF1_PROPERTIES PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_SIGNATURE_PARAM_MU 335 +#define PIDX_SIGNATURE_PARAM_NONCE_TYPE 336 +#define PIDX_SIGNATURE_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_SIGNATURE_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_SIGNATURE_PARAM_PSS_SALTLEN 271 +#define PIDX_SIGNATURE_PARAM_SIGNATURE 337 +#define PIDX_SIGNATURE_PARAM_TEST_ENTROPY 338 +#define PIDX_SKEY_PARAM_KEY_LENGTH 339 +#define PIDX_SKEY_PARAM_RAW_BYTES 340 +#define PIDX_STORE_PARAM_ALIAS 341 +#define PIDX_STORE_PARAM_DIGEST 3 +#define PIDX_STORE_PARAM_EXPECT 342 +#define PIDX_STORE_PARAM_FINGERPRINT 343 +#define PIDX_STORE_PARAM_INPUT_TYPE 174 +#define PIDX_STORE_PARAM_ISSUER 296 +#define PIDX_STORE_PARAM_PROPERTIES 7 +#define PIDX_STORE_PARAM_SERIAL 344 +#define PIDX_STORE_PARAM_SUBJECT 345 diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/asn1.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/asn1.h index e28efbbb718e2b..5129217b2e0977 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/asn1.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/asn1.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/asn1.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -21,6 +21,9 @@ # define HEADER_ASN1_H # endif +# ifndef OPENSSL_NO_STDIO +# include +# endif # include # include # include @@ -50,14 +53,14 @@ extern "C" { # define V_ASN1_PRIMITIVE_TAG 0x1f # define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG -# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ -# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ -# define V_ASN1_ANY -4/* used in ASN1 template code */ +# define V_ASN1_APP_CHOOSE -2 /* let the recipient choose */ +# define V_ASN1_OTHER -3 /* used in ASN1_TYPE */ +# define V_ASN1_ANY -4 /* used in ASN1 template code */ # define V_ASN1_UNDEF -1 /* ASN.1 tag values */ # define V_ASN1_EOC 0 -# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_BOOLEAN 1 # define V_ASN1_INTEGER 2 # define V_ASN1_BIT_STRING 3 # define V_ASN1_OCTET_STRING 4 @@ -70,19 +73,19 @@ extern "C" { # define V_ASN1_UTF8STRING 12 # define V_ASN1_SEQUENCE 16 # define V_ASN1_SET 17 -# define V_ASN1_NUMERICSTRING 18 /**/ +# define V_ASN1_NUMERICSTRING 18 # define V_ASN1_PRINTABLESTRING 19 # define V_ASN1_T61STRING 20 -# define V_ASN1_TELETEXSTRING 20/* alias */ -# define V_ASN1_VIDEOTEXSTRING 21 /**/ +# define V_ASN1_TELETEXSTRING 20 /* alias */ +# define V_ASN1_VIDEOTEXSTRING 21 # define V_ASN1_IA5STRING 22 # define V_ASN1_UTCTIME 23 -# define V_ASN1_GENERALIZEDTIME 24 /**/ -# define V_ASN1_GRAPHICSTRING 25 /**/ -# define V_ASN1_ISO64STRING 26 /**/ -# define V_ASN1_VISIBLESTRING 26/* alias */ -# define V_ASN1_GENERALSTRING 27 /**/ -# define V_ASN1_UNIVERSALSTRING 28 /**/ +# define V_ASN1_GENERALIZEDTIME 24 +# define V_ASN1_GRAPHICSTRING 25 +# define V_ASN1_ISO64STRING 26 +# define V_ASN1_VISIBLESTRING 26 /* alias */ +# define V_ASN1_GENERALSTRING 27 +# define V_ASN1_UNIVERSALSTRING 28 # define V_ASN1_BMPSTRING 30 /* @@ -155,7 +158,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) -# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +# define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */ /* * This indicates that the ASN1_STRING is not a real value but just a place * holder for the location where indefinite length constructed data should be @@ -275,7 +278,7 @@ typedef struct ASN1_TLC_st ASN1_TLC; /* This is just an opaque pointer */ typedef struct ASN1_VALUE_st ASN1_VALUE; -/* Declare ASN1 functions: the implement macro in in asn1t.h */ +/* Declare ASN1 functions: the implement macro is in asn1t.h */ /* * The mysterious 'extern' that's passed to some macros is innocuous, @@ -368,6 +371,7 @@ typedef struct ASN1_VALUE_st ASN1_VALUE; typedef void *d2i_of_void(void **, const unsigned char **, long); typedef int i2d_of_void(const void *, unsigned char **); +typedef int OSSL_i2d_of_void_ctx(const void *, unsigned char **, void *vctx); /*- * The following macros and typedefs allow an ASN1_ITEM @@ -996,6 +1000,8 @@ int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, unsigned char *data, int max_len); void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/bio.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/bio.h index d094af47b73f1c..be24d086a54013 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/bio.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/bio.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/bio.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -67,8 +67,13 @@ extern "C" { # define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) # endif # define BIO_TYPE_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_PAIR (26|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_MEM (27|BIO_TYPE_SOURCE_SINK) +/* Custom type starting index returned by BIO_get_new_index() */ #define BIO_TYPE_START 128 +/* Custom type maximum index that can be returned by BIO_get_new_index() */ +#define BIO_TYPE_MASK 0xFF /* * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. @@ -171,6 +176,31 @@ extern "C" { # define BIO_CTRL_SET_INDENT 80 # define BIO_CTRL_GET_INDENT 81 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +# define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +# define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +# define BIO_CTRL_DGRAM_GET_CAPS 86 +# define BIO_CTRL_DGRAM_SET_CAPS 87 +# define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +# define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +# define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +# define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +# define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 +# define BIO_CTRL_DGRAM_SET0_LOCAL_ADDR 94 + +# define BIO_DGRAM_CAP_NONE 0U +# define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +# define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +# define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +# define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + # ifndef OPENSSL_NO_KTLS # define BIO_get_ktls_send(b) \ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) @@ -208,7 +238,7 @@ extern "C" { # define BIO_FLAGS_NONCLEAR_RST 0x400 # define BIO_FLAGS_IN_EOF 0x800 -/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */ +/* the BIO FLAGS values 0x1000 to 0x8000 are reserved for internal KTLS flags */ typedef union bio_addr_st BIO_ADDR; typedef struct bio_addrinfo_st BIO_ADDRINFO; @@ -256,12 +286,14 @@ void BIO_clear_flags(BIO *b, int flags); # define BIO_RR_ACCEPT 0x03 /* These are passed by the BIO callback */ -# define BIO_CB_FREE 0x01 -# define BIO_CB_READ 0x02 -# define BIO_CB_WRITE 0x03 -# define BIO_CB_PUTS 0x04 -# define BIO_CB_GETS 0x05 -# define BIO_CB_CTRL 0x06 +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 +# define BIO_CB_RECVMMSG 0x07 +# define BIO_CB_SENDMMSG 0x08 /* * The callback is called before and after the underling operation, The @@ -362,6 +394,36 @@ struct bio_dgram_sctp_prinfo { }; # endif +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_TYPE_SSL 2 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + SSL *ssl; + } value; +} BIO_POLL_DESCRIPTOR; + /* * #define BIO_CONN_get_param_hostname BIO_ctrl */ @@ -428,10 +490,17 @@ struct bio_dgram_sctp_prinfo { # define BIO_C_SET_CONNECT_MODE 155 +# define BIO_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +# define BIO_C_SET_SOCK_TYPE 157 +# define BIO_C_GET_SOCK_TYPE 158 +# define BIO_C_GET_DGRAM_BIO 159 + # define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) # define BIO_get_app_data(s) BIO_get_ex_data(s,0) -# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_tfo(b,n) BIO_ctrl(b,BIO_C_SET_TFO,(n),NULL) # ifndef OPENSSL_NO_SOCK /* IP families we support, for BIO_s_connect() and BIO_s_accept() */ @@ -452,7 +521,11 @@ struct bio_dgram_sctp_prinfo { # define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) # define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) # define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_get_conn_mode(b) BIO_ctrl(b,BIO_C_GET_CONNECT,4,NULL) # define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) +# define BIO_set_sock_type(b,t) BIO_ctrl(b,BIO_C_SET_SOCK_TYPE,(t),NULL) +# define BIO_get_sock_type(b) BIO_ctrl(b,BIO_C_GET_SOCK_TYPE,0,NULL) +# define BIO_get0_dgram_bio(b, p) BIO_ctrl(b,BIO_C_GET_DGRAM_BIO,0,(void *)(BIO **)(p)) /* BIO_s_accept() */ # define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ @@ -469,6 +542,7 @@ struct bio_dgram_sctp_prinfo { (char *)(bio)) # define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) # define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) +# define BIO_set_tfo_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,5,(n)?(void *)"a":NULL) /* Aliases kept for backward compatibility */ # define BIO_BIND_NORMAL 0 @@ -596,8 +670,32 @@ int BIO_ctrl_reset_read_request(BIO *b); (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) # define BIO_dgram_set_peer(b,peer) \ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_detect_peer_addr(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) # define BIO_dgram_get_mtu_overhead(b) \ (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +# define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +# define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +# define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +# define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +# define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +# define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +# define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +# define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +# define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +# define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) +# define BIO_dgram_set0_local_addr(b, addr) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET0_LOCAL_ADDR, 0, (addr)) /* ctrl macros for BIO_f_prefix */ # define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) @@ -640,10 +738,18 @@ void BIO_vfree(BIO *a); int BIO_up_ref(BIO *a); int BIO_read(BIO *b, void *data, int dlen); int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); int BIO_gets(BIO *bp, char *buf, int size); int BIO_get_line(BIO *bio, char *buf, int size); int BIO_write(BIO *b, const void *data, int dlen); int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); int BIO_puts(BIO *bp, const char *buf); int BIO_indent(BIO *b, int indent, int max); long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); @@ -667,6 +773,9 @@ int BIO_nwrite0(BIO *bio, char **buf); int BIO_nwrite(BIO *bio, char **buf, int num); const BIO_METHOD *BIO_s_mem(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +# endif const BIO_METHOD *BIO_s_secmem(void); BIO *BIO_new_mem_buf(const void *buf, int len); # ifndef OPENSSL_NO_SOCK @@ -686,6 +795,7 @@ const BIO_METHOD *BIO_f_nbio_test(void); const BIO_METHOD *BIO_f_prefix(void); const BIO_METHOD *BIO_s_core(void); # ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_pair(void); const BIO_METHOD *BIO_s_datagram(void); int BIO_dgram_non_fatal_error(int error); BIO *BIO_new_dgram(int fd, int close_flag); @@ -704,6 +814,7 @@ int BIO_dgram_sctp_msg_waiting(BIO *b); # ifndef OPENSSL_NO_SOCK int BIO_sock_should_retry(int i); int BIO_sock_non_fatal_error(int error); +int BIO_err_is_non_fatal(unsigned int errcode); int BIO_socket_wait(int fd, int for_read, time_t max_time); # endif int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); @@ -726,6 +837,8 @@ int BIO_hex_string(BIO *out, int indent, int width, const void *data, # ifndef OPENSSL_NO_SOCK BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, const void *where, size_t wherelen, unsigned short port); void BIO_ADDR_free(BIO_ADDR *); @@ -788,6 +901,7 @@ int BIO_sock_info(int sock, # define BIO_SOCK_KEEPALIVE 0x04 # define BIO_SOCK_NONBLOCK 0x08 # define BIO_SOCK_NODELAY 0x10 +# define BIO_SOCK_TFO 0x20 int BIO_socket(int domain, int socktype, int protocol, int options); int BIO_connect(int sock, const BIO_ADDR *addr, int options); @@ -805,6 +919,11 @@ BIO *BIO_new_fd(int fd, int close_flag); int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, BIO **bio2, size_t writebuf2); +# ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +# endif + /* * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default @@ -849,38 +968,54 @@ ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); BIO_METHOD *BIO_meth_new(int type, const char *name); void BIO_meth_free(BIO_METHOD *biom); -int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int); -int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t, - size_t *); int BIO_meth_set_write(BIO_METHOD *biom, int (*write) (BIO *, const char *, int)); int BIO_meth_set_write_ex(BIO_METHOD *biom, int (*bwrite) (BIO *, const char *, size_t, size_t *)); -int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); -int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); +int BIO_meth_set_sendmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_read(BIO_METHOD *biom, int (*read) (BIO *, char *, int)); int BIO_meth_set_read_ex(BIO_METHOD *biom, int (*bread) (BIO *, char *, size_t, size_t *)); -int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +int BIO_meth_set_recvmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_puts(BIO_METHOD *biom, int (*puts) (BIO *, const char *)); -int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); int BIO_meth_set_gets(BIO_METHOD *biom, int (*ossl_gets) (BIO *, char *, int)); -long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); int BIO_meth_set_ctrl(BIO_METHOD *biom, long (*ctrl) (BIO *, int, long, void *)); -int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); -int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); -long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) - (BIO *, int, BIO_info_cb *); int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, long (*callback_ctrl) (BIO *, int, BIO_info_cb *)); - +# ifndef OPENSSL_NO_DEPRECATED_3_5 +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, + int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, + long, void *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) (BIO *, int, + BIO_info_cb *); +# endif # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/cmp.h index f0e768e01baacd..ded2dd2905f756 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/cmp.h.in * - * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -35,7 +35,9 @@ extern "C" { # endif -# define OSSL_CMP_PVNO 2 +# define OSSL_CMP_PVNO_2 2 +# define OSSL_CMP_PVNO_3 3 +# define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ /*- * PKIFailureInfo ::= BIT STRING { @@ -137,7 +139,6 @@ extern "C" { # if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX # error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int # endif - typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) @@ -203,8 +204,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_PKISTATUS_revocationWarning 4 # define OSSL_CMP_PKISTATUS_revocationNotification 5 # define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 - typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; + DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) # define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 @@ -274,6 +275,46 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) #define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) #define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) + +typedef struct ossl_cmp_crlstatus_st OSSL_CMP_CRLSTATUS; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS) +#define sk_OSSL_CMP_CRLSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_value(sk, idx) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CRLSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CRLSTATUS_new_null() ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CRLSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CRLSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CRLSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_delete(sk, i) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CRLSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_pop(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_shift(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CRLSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CRLSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CRLSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CRLSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CRLSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) + + +typedef OSSL_CRMF_ATTRIBUTETYPEANDVALUE OSSL_CMP_ATAV; +# define OSSL_CMP_ATAV_free OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free +typedef STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) OSSL_CMP_ATAVS; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_ATAVS) +# define stack_st_OSSL_CMP_ATAV stack_st_OSSL_CRMF_ATTRIBUTETYPEANDVALUE +# define sk_OSSL_CMP_ATAV_num sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num +# define sk_OSSL_CMP_ATAV_value sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value +# define sk_OSSL_CMP_ATAV_push sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push +# define sk_OSSL_CMP_ATAV_pop_free sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free + typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT; typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI; DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI) @@ -375,21 +416,75 @@ void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type, ASN1_TYPE *value); ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav); ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); -int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p, +int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **sk_p, OSSL_CMP_ITAV *itav); void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new0_certProfile(STACK_OF(ASN1_UTF8STRING) + *certProfile); +int OSSL_CMP_ITAV_get0_certProfile(const OSSL_CMP_ITAV *itav, + STACK_OF(ASN1_UTF8STRING) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_create(const X509_CRL *crl, + const X509 *cert, int only_DN); +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_new1(const DIST_POINT_NAME *dpn, + const GENERAL_NAMES *issuer, + const ASN1_TIME *thisUpdate); +int OSSL_CMP_CRLSTATUS_get0(const OSSL_CMP_CRLSTATUS *crlstatus, + DIST_POINT_NAME **dpn, GENERAL_NAMES **issuer, + ASN1_TIME **thisUpdate); +void OSSL_CMP_CRLSTATUS_free(OSSL_CMP_CRLSTATUS *crlstatus); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_crlStatusList(STACK_OF(OSSL_CMP_CRLSTATUS) *crlStatusList); +int OSSL_CMP_ITAV_get0_crlStatusList(const OSSL_CMP_ITAV *itav, + STACK_OF(OSSL_CMP_CRLSTATUS) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_crls(const X509_CRL *crls); +int OSSL_CMP_ITAV_get0_crls(const OSSL_CMP_ITAV *it, STACK_OF(X509_CRL) **out); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_certReqTemplate(OSSL_CRMF_CERTTEMPLATE *certTemplate, + OSSL_CMP_ATAVS *keySpec); +int OSSL_CMP_ITAV_get1_certReqTemplate(const OSSL_CMP_ITAV *itav, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +OSSL_CMP_ATAV *OSSL_CMP_ATAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ATAV_set0(OSSL_CMP_ATAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ATAV_get0_type(const OSSL_CMP_ATAV *itav); +ASN1_TYPE *OSSL_CMP_ATAV_get0_value(const OSSL_CMP_ATAV *itav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_algId(const X509_ALGOR *alg); +X509_ALGOR *OSSL_CMP_ATAV_get0_algId(const OSSL_CMP_ATAV *atav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_rsaKeyLen(int len); +int OSSL_CMP_ATAV_get_rsaKeyLen(const OSSL_CMP_ATAV *atav); +int OSSL_CMP_ATAV_push1(OSSL_CMP_ATAVS **sk_p, const OSSL_CMP_ATAV *atav); + void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); /* from cmp_ctx.c */ OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const OSSL_CMP_CTX *ctx); /* CMP general options: */ # define OSSL_CMP_OPT_LOG_VERBOSITY 0 /* CMP transfer options: */ -# define OSSL_CMP_OPT_KEEP_ALIVE 10 -# define OSSL_CMP_OPT_MSG_TIMEOUT 11 +# define OSSL_CMP_OPT_KEEP_ALIVE 10 +# define OSSL_CMP_OPT_MSG_TIMEOUT 11 # define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 +# define OSSL_CMP_OPT_USE_TLS 13 /* CMP request options: */ # define OSSL_CMP_OPT_VALIDITY_DAYS 20 # define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 @@ -407,6 +502,7 @@ int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); # define OSSL_CMP_OPT_DIGEST_ALGNID 34 # define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35 # define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36 +# define OSSL_CMP_OPT_NO_CACHE_EXTRACERTS 37 int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val); int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt); /* CMP-specific callback for logging and outputting the error queue: */ @@ -420,9 +516,11 @@ int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); +# ifndef OPENSSL_NO_HTTP int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); +# endif typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); @@ -432,7 +530,9 @@ void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); +# define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +# define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); /* client authentication: */ @@ -448,12 +548,15 @@ int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx, int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); int OSSL_CMP_CTX_reset_geninfo_ITAVs(OSSL_CMP_CTX *ctx); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_CTX_get0_geninfo_ITAVs(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, STACK_OF(X509) *extraCertsOut); /* certificate template: */ int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set1_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, const GENERAL_NAME *name); @@ -477,6 +580,7 @@ int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); # define OSSL_CMP_PKISI_BUFLEN 1024 +X509 *OSSL_CMP_CTX_get0_validatedSrvCert(const OSSL_CMP_CTX *ctx); X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); @@ -498,10 +602,13 @@ OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const OSSL_CMP_PKIHEADER *hdr); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_HDR_get0_geninfo_ITAVs(const OSSL_CMP_PKIHEADER *hdr); /* from cmp_msg.c */ OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg); +X509_PUBKEY *OSSL_CMP_MSG_get0_certreq_publickey(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_recipNonce(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid); @@ -517,8 +624,10 @@ int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, X509_STORE *trusted_store, X509 *cert); /* from cmp_http.c */ +# ifndef OPENSSL_NO_HTTP OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); +# endif /* from cmp_server.c */ typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; @@ -561,6 +670,13 @@ int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx, OSSL_CMP_SRV_error_cb_t process_error, OSSL_CMP_SRV_certConf_cb_t process_certConf, OSSL_CMP_SRV_pollReq_cb_t process_pollReq); +typedef int (*OSSL_CMP_SRV_delayed_delivery_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +typedef int (*OSSL_CMP_SRV_clean_transaction_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_SRV_CTX_init_trans(OSSL_CMP_SRV_CTX *srv_ctx, + OSSL_CMP_SRV_delayed_delivery_cb_t delay, + OSSL_CMP_SRV_clean_transaction_cb_t clean); OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx, @@ -577,6 +693,8 @@ X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type, # define OSSL_CMP_CR 2 # define OSSL_CMP_P10CR 4 # define OSSL_CMP_KUR 7 +# define OSSL_CMP_GENM 21 +# define OSSL_CMP_ERROR 23 # define OSSL_CMP_exec_IR_ses(ctx) \ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL) # define OSSL_CMP_exec_CR_ses(ctx) \ @@ -590,6 +708,18 @@ int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); +int OSSL_CMP_get1_crlUpdate(OSSL_CMP_CTX *ctx, const X509 *crlcert, + const X509_CRL *last_crl, + X509_CRL **crl); +int OSSL_CMP_get1_certReqTemplate(OSSL_CMP_CTX *ctx, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/cms.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/cms.h index 03ce6ab07aac44..1a51921256fea4 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/cms.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/cms.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/cms.h.in * - * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2008-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -31,8 +31,10 @@ extern "C" { # endif +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; typedef struct CMS_ContentInfo_st CMS_ContentInfo; typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; typedef struct CMS_CertificateChoices CMS_CertificateChoices; typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; @@ -147,10 +149,14 @@ SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, #define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) +DECLARE_ASN1_DUP_FUNCTION(CMS_EnvelopedData) + CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq); # define CMS_SIGNERINFO_ISSUER_SERIAL 0 @@ -190,6 +196,7 @@ CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq) # define CMS_ASCIICRLF 0x80000 # define CMS_CADES 0x100000 # define CMS_USE_ORIGINATOR_KEYID 0x200000 +# define CMS_NO_SIGNING_TIME 0x400000 const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms); @@ -217,13 +224,16 @@ int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, unsigned int flags); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, BIO *dcont, + unsigned int flags); CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, unsigned int flags); CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, @@ -233,27 +243,26 @@ CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, unsigned int flags); CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, const unsigned char *key, size_t keylen, BIO *dcont, BIO *out, unsigned int flags); - CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags); CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, @@ -272,7 +281,7 @@ CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags); CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, BIO *dcont, BIO *out, unsigned int flags); @@ -291,12 +300,16 @@ int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo * -CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx, +CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags); @@ -385,6 +398,11 @@ ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); int CMS_SignerInfo_sign(CMS_SignerInfo *si); int CMS_SignerInfo_verify(CMS_SignerInfo *si); int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, @@ -441,7 +459,7 @@ CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( unsigned char *id, int idlen, int allorfirst, STACK_OF(GENERAL_NAMES) *receiptList, STACK_OF(GENERAL_NAMES) *receiptsTo, - OSSL_LIB_CTX *ctx); + OSSL_LIB_CTX *libctx); int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/comp.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/comp.h new file mode 100644 index 00000000000000..90e39511fe8d28 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/comp.h @@ -0,0 +1,98 @@ +/* + * Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_COMP_H +# define OPENSSL_COMP_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_COMP_H +# endif + +# include + +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + + +# ifndef OPENSSL_NO_COMP + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX* comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); + +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); + +COMP_METHOD *COMP_zlib(void); +COMP_METHOD *COMP_zlib_oneshot(void); +COMP_METHOD *COMP_brotli(void); +COMP_METHOD *COMP_brotli_oneshot(void); +COMP_METHOD *COMP_zstd(void); +COMP_METHOD *COMP_zstd_oneshot(void); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define COMP_zlib_cleanup() while(0) continue +# endif + +# ifdef OPENSSL_BIO_H +const BIO_METHOD *BIO_f_zlib(void); +const BIO_METHOD *BIO_f_brotli(void); +const BIO_METHOD *BIO_f_zstd(void); +# endif + +# endif + +typedef struct ssl_comp_st SSL_COMP; + +SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) +#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) +#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) +#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) +#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) +#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) +#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) +#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) +#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) +#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) +#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) +#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) + + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/conf.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/conf.h index 994e573a957435..ffa9ced71e8b26 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/conf.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/conf.h @@ -27,6 +27,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -65,7 +68,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) #define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) #define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); -#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp))) +#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp)), lh_CONF_VALUE_hash_thunk, lh_CONF_VALUE_comp_thunk, lh_CONF_VALUE_doall_thunk, lh_CONF_VALUE_doall_arg_thunk)) #define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/configuration.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/configuration.h index 5eb038fdc064b7..3bf0eaa3f02688 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/configuration.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/configuration.h @@ -29,7 +29,7 @@ extern "C" { # ifndef OPENSSL_SYS_WIN32 # define OPENSSL_SYS_WIN32 1 # endif -# define OPENSSL_CONFIGURED_API 30000 +# define OPENSSL_CONFIGURED_API 30500 # ifndef OPENSSL_RAND_SEED_OS # define OPENSSL_RAND_SEED_OS # endif @@ -45,6 +45,12 @@ extern "C" { # ifndef OPENSSL_NO_ASM # define OPENSSL_NO_ASM # endif +# ifndef OPENSSL_NO_BROTLI +# define OPENSSL_NO_BROTLI +# endif +# ifndef OPENSSL_NO_BROTLI_DYNAMIC +# define OPENSSL_NO_BROTLI_DYNAMIC +# endif # ifndef OPENSSL_NO_COMP # define OPENSSL_NO_COMP # endif @@ -54,6 +60,9 @@ extern "C" { # ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # endif +# ifndef OPENSSL_NO_DEMOS +# define OPENSSL_NO_DEMOS +# endif # ifndef OPENSSL_NO_DEVCRYPTOENG # define OPENSSL_NO_DEVCRYPTOENG # endif @@ -66,12 +75,24 @@ extern "C" { # ifndef OPENSSL_NO_EXTERNAL_TESTS # define OPENSSL_NO_EXTERNAL_TESTS # endif +# ifndef OPENSSL_NO_FIPS_JITTER +# define OPENSSL_NO_FIPS_JITTER +# endif # ifndef OPENSSL_NO_FUZZ_AFL # define OPENSSL_NO_FUZZ_AFL # endif # ifndef OPENSSL_NO_FUZZ_LIBFUZZER # define OPENSSL_NO_FUZZ_LIBFUZZER # endif +# ifndef OPENSSL_NO_H3DEMO +# define OPENSSL_NO_H3DEMO +# endif +# ifndef OPENSSL_NO_HQINTEROP +# define OPENSSL_NO_HQINTEROP +# endif +# ifndef OPENSSL_NO_JITTER +# define OPENSSL_NO_JITTER +# endif # ifndef OPENSSL_NO_KTLS # define OPENSSL_NO_KTLS # endif @@ -84,6 +105,9 @@ extern "C" { # ifndef OPENSSL_NO_MSAN # define OPENSSL_NO_MSAN # endif +# ifndef OPENSSL_NO_PIE +# define OPENSSL_NO_PIE +# endif # ifndef OPENSSL_NO_RC5 # define OPENSSL_NO_RC5 # endif @@ -96,6 +120,12 @@ extern "C" { # ifndef OPENSSL_NO_SSL3_METHOD # define OPENSSL_NO_SSL3_METHOD # endif +# ifndef OPENSSL_NO_SSLKEYLOG +# define OPENSSL_NO_SSLKEYLOG +# endif +# ifndef OPENSSL_NO_TFO +# define OPENSSL_NO_TFO +# endif # ifndef OPENSSL_NO_TRACE # define OPENSSL_NO_TRACE # endif @@ -111,6 +141,18 @@ extern "C" { # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS # define OPENSSL_NO_WEAK_SSL_CIPHERS # endif +# ifndef OPENSSL_NO_ZLIB +# define OPENSSL_NO_ZLIB +# endif +# ifndef OPENSSL_NO_ZLIB_DYNAMIC +# define OPENSSL_NO_ZLIB_DYNAMIC +# endif +# ifndef OPENSSL_NO_ZSTD +# define OPENSSL_NO_ZSTD +# endif +# ifndef OPENSSL_NO_ZSTD_DYNAMIC +# define OPENSSL_NO_ZSTD_DYNAMIC +# endif # ifndef OPENSSL_NO_DYNAMIC_ENGINE # define OPENSSL_NO_DYNAMIC_ENGINE # endif @@ -132,6 +174,12 @@ extern "C" { # define RC4_INT unsigned int +# if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +# define OPENSSL_NO_COMP_ALG +# else +# undef OPENSSL_NO_COMP_ALG +# endif + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/core_names.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/core_names.h new file mode 100644 index 00000000000000..aaca6051c81b53 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/core_names.h @@ -0,0 +1,575 @@ +/* + * WARNING: do not edit! + * Generated by makefile from include/openssl/core_names.h.in + * + * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#ifndef OPENSSL_CORE_NAMES_H +# define OPENSSL_CORE_NAMES_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +/* OSSL_CIPHER_PARAM_CTS_MODE Values */ +# define OSSL_CIPHER_CTS_MODE_CS1 "CS1" +# define OSSL_CIPHER_CTS_MODE_CS2 "CS2" +# define OSSL_CIPHER_CTS_MODE_CS3 "CS3" + +/* Known CIPHER names (not a complete list) */ +# define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" + +/* Known DIGEST names (not a complete list) */ +# define OSSL_DIGEST_NAME_MD5 "MD5" +# define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" +# define OSSL_DIGEST_NAME_SHA1 "SHA1" +# define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" +# define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" +# define OSSL_DIGEST_NAME_SHA2_256_192 "SHA2-256/192" +# define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" +# define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" +# define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" +# define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" +# define OSSL_DIGEST_NAME_MD2 "MD2" +# define OSSL_DIGEST_NAME_MD4 "MD4" +# define OSSL_DIGEST_NAME_MDC2 "MDC2" +# define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" +# define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" +# define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" +# define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" +# define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" +# define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" +# define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" +# define OSSL_DIGEST_NAME_SM3 "SM3" + +/* Known MAC names */ +# define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" +# define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" +# define OSSL_MAC_NAME_CMAC "CMAC" +# define OSSL_MAC_NAME_GMAC "GMAC" +# define OSSL_MAC_NAME_HMAC "HMAC" +# define OSSL_MAC_NAME_KMAC128 "KMAC128" +# define OSSL_MAC_NAME_KMAC256 "KMAC256" +# define OSSL_MAC_NAME_POLY1305 "POLY1305" +# define OSSL_MAC_NAME_SIPHASH "SIPHASH" + +/* Known KDF names */ +# define OSSL_KDF_NAME_HKDF "HKDF" +# define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" +# define OSSL_KDF_NAME_PBKDF1 "PBKDF1" +# define OSSL_KDF_NAME_PBKDF2 "PBKDF2" +# define OSSL_KDF_NAME_SCRYPT "SCRYPT" +# define OSSL_KDF_NAME_SSHKDF "SSHKDF" +# define OSSL_KDF_NAME_SSKDF "SSKDF" +# define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" +# define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" +# define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" +# define OSSL_KDF_NAME_X963KDF "X963KDF" +# define OSSL_KDF_NAME_KBKDF "KBKDF" +# define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" +# define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" + +/* RSA padding modes */ +# define OSSL_PKEY_RSA_PAD_MODE_NONE "none" +# define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" +# define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" +# define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" +# define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" + +/* RSA pss padding salt length */ +# define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" + +/* OSSL_PKEY_PARAM_EC_ENCODING values */ +# define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" +# define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" + +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" + +# define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" + +/* PROV_SKEY well known key types */ +# define OSSL_SKEY_TYPE_GENERIC "GENERIC-SECRET" +# define OSSL_SKEY_TYPE_AES "AES" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" + +/* Provider configuration variables */ +#define OSSL_PKEY_RETAIN_SEED "pkey_retain_seed" + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +# define OSSL_ALG_PARAM_ALGORITHM_ID "algorithm-id" +# define OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS "algorithm-id-params" +# define OSSL_ALG_PARAM_CIPHER "cipher" +# define OSSL_ALG_PARAM_DIGEST "digest" +# define OSSL_ALG_PARAM_ENGINE "engine" +# define OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR "fips-indicator" +# define OSSL_ALG_PARAM_MAC "mac" +# define OSSL_ALG_PARAM_PROPERTIES "properties" +# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +# define OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props" +# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" +# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name" +# define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal" +# define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name" +# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid" +# define OSSL_CIPHER_PARAM_AEAD "aead" +# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +# define OSSL_CIPHER_PARAM_AEAD_IV_GENERATED "iv-generated" +# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" +# define OSSL_CIPHER_PARAM_AEAD_TAG "tag" +# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" +# define OSSL_CIPHER_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD "alg_id_param" +# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_CIPHER_PARAM_CTS "cts" +# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" +# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" +# define OSSL_CIPHER_PARAM_DECRYPT_ONLY "decrypt-only" +# define OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK "encrypt-check" +# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" +# define OSSL_CIPHER_PARAM_IV "iv" +# define OSSL_CIPHER_PARAM_IVLEN "ivlen" +# define OSSL_CIPHER_PARAM_KEYLEN "keylen" +# define OSSL_CIPHER_PARAM_MODE "mode" +# define OSSL_CIPHER_PARAM_NUM "num" +# define OSSL_CIPHER_PARAM_PADDING "padding" +# define OSSL_CIPHER_PARAM_PIPELINE_AEAD_TAG "pipeline-tag" +# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" +# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" +# define OSSL_CIPHER_PARAM_ROUNDS "rounds" +# define OSSL_CIPHER_PARAM_SPEED "speed" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag" +# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" +# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" +# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" +# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" +# define OSSL_CIPHER_PARAM_USE_BITS "use-bits" +# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard" +# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" +# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_DIGEST_PARAM_MICALG "micalg" +# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" +# define OSSL_DIGEST_PARAM_SIZE "size" +# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" +# define OSSL_DIGEST_PARAM_XOF "xof" +# define OSSL_DIGEST_PARAM_XOFLEN "xoflen" +# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +# define OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +# define OSSL_DRBG_PARAM_SIZE "size" +# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" +# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" +# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" +# define OSSL_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_EXCHANGE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" +# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" +# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" +# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" +# define OSSL_EXCHANGE_PARAM_PAD "pad" +# define OSSL_GEN_PARAM_ITERATION "iteration" +# define OSSL_GEN_PARAM_POTENTIAL "potential" +# define OSSL_KDF_PARAM_ARGON2_AD "ad" +# define OSSL_KDF_PARAM_ARGON2_LANES "lanes" +# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost" +# define OSSL_KDF_PARAM_ARGON2_VERSION "version" +# define OSSL_KDF_PARAM_CEK_ALG "cekalg" +# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_KDF_PARAM_CONSTANT "constant" +# define OSSL_KDF_PARAM_DATA "data" +# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean" +# define OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KDF_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_KDF_PARAM_FIPS_EMS_CHECK "ems_check" +# define OSSL_KDF_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy" +# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce" +# define OSSL_KDF_PARAM_INFO "info" +# define OSSL_KDF_PARAM_ITER "iter" +# define OSSL_KDF_PARAM_KBKDF_R "r" +# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" +# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" +# define OSSL_KDF_PARAM_KEY "key" +# define OSSL_KDF_PARAM_LABEL "label" +# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_KDF_PARAM_MAC_SIZE "maclen" +# define OSSL_KDF_PARAM_MODE "mode" +# define OSSL_KDF_PARAM_PASSWORD "pass" +# define OSSL_KDF_PARAM_PKCS12_ID "id" +# define OSSL_KDF_PARAM_PKCS5 "pkcs5" +# define OSSL_KDF_PARAM_PREFIX "prefix" +# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_KDF_PARAM_SALT "salt" +# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" +# define OSSL_KDF_PARAM_SCRYPT_N "n" +# define OSSL_KDF_PARAM_SCRYPT_P "p" +# define OSSL_KDF_PARAM_SCRYPT_R "r" +# define OSSL_KDF_PARAM_SECRET "secret" +# define OSSL_KDF_PARAM_SEED "seed" +# define OSSL_KDF_PARAM_SIZE "size" +# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" +# define OSSL_KDF_PARAM_SSHKDF_TYPE "type" +# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" +# define OSSL_KDF_PARAM_THREADS "threads" +# define OSSL_KDF_PARAM_UKM "ukm" +# define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info" +# define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info" +# define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info" +# define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo" +# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_KEM_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KEM_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KEM_PARAM_IKME "ikme" +# define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING "hs_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm" +# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len" +# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" +# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_MAC_PARAM_CUSTOM "custom" +# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" +# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" +# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" +# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" +# define OSSL_MAC_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_MAC_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_MAC_PARAM_FIPS_NO_SHORT_MAC OSSL_PROV_PARAM_NO_SHORT_MAC +# define OSSL_MAC_PARAM_IV "iv" +# define OSSL_MAC_PARAM_KEY "key" +# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_MAC_PARAM_SALT "salt" +# define OSSL_MAC_PARAM_SIZE "size" +# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" +# define OSSL_MAC_PARAM_XOF "xof" +# define OSSL_OBJECT_PARAM_DATA "data" +# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" +# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" +# define OSSL_OBJECT_PARAM_DESC "desc" +# define OSSL_OBJECT_PARAM_INPUT_TYPE "input-type" +# define OSSL_OBJECT_PARAM_REFERENCE "reference" +# define OSSL_OBJECT_PARAM_TYPE "type" +# define OSSL_PASSPHRASE_PARAM_INFO "info" +# define OSSL_PKEY_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_PKEY_PARAM_BITS "bits" +# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" +# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm" +# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" +# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +# define OSSL_PKEY_PARAM_DIST_ID "distid" +# define OSSL_PKEY_PARAM_EC_A "a" +# define OSSL_PKEY_PARAM_EC_B "b" +# define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3" +# define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp" +# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" +# define OSSL_PKEY_PARAM_EC_ENCODING "encoding" +# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +# define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_PARAM_EC_ORDER "order" +# define OSSL_PKEY_PARAM_EC_P "p" +# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +# define OSSL_PKEY_PARAM_EC_PUB_X "qx" +# define OSSL_PKEY_PARAM_EC_PUB_Y "qy" +# define OSSL_PKEY_PARAM_EC_SEED "seed" +# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE +# define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +# define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_FFC_G "g" +# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +# define OSSL_PKEY_PARAM_FFC_H "hindex" +# define OSSL_PKEY_PARAM_FFC_P "p" +# define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +# define OSSL_PKEY_PARAM_FFC_Q "q" +# define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +# define OSSL_PKEY_PARAM_FFC_SEED "seed" +# define OSSL_PKEY_PARAM_FFC_TYPE "type" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +# define OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK "digest-check" +# define OSSL_PKEY_PARAM_FIPS_KEY_CHECK "key-check" +# define OSSL_PKEY_PARAM_FIPS_SIGN_CHECK "sign-check" +# define OSSL_PKEY_PARAM_GROUP_NAME "group" +# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" +# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +# define OSSL_PKEY_PARAM_MAX_SIZE "max-size" +# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +# define OSSL_PKEY_PARAM_ML_DSA_INPUT_FORMATS "ml-dsa.input_formats" +# define OSSL_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS "ml-dsa.output_formats" +# define OSSL_PKEY_PARAM_ML_DSA_PREFER_SEED "ml-dsa.prefer_seed" +# define OSSL_PKEY_PARAM_ML_DSA_RETAIN_SEED "ml-dsa.retain_seed" +# define OSSL_PKEY_PARAM_ML_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE "ml-kem.import_pct_type" +# define OSSL_PKEY_PARAM_ML_KEM_INPUT_FORMATS "ml-kem.input_formats" +# define OSSL_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS "ml-kem.output_formats" +# define OSSL_PKEY_PARAM_ML_KEM_PREFER_SEED "ml-kem.prefer_seed" +# define OSSL_PKEY_PARAM_ML_KEM_RETAIN_SEED "ml-kem.retain_seed" +# define OSSL_PKEY_PARAM_ML_KEM_SEED "seed" +# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +# define OSSL_PKEY_PARAM_PRIV_KEY "priv" +# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_PUB_KEY "pub" +# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9" +# define OSSL_PKEY_PARAM_RSA_D "d" +# define OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ "rsa-derive-from-pq" +# define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_RSA_E "e" +# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1" +# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10" +# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2" +# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3" +# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4" +# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5" +# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6" +# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7" +# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8" +# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9" +# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1" +# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10" +# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2" +# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3" +# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4" +# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5" +# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6" +# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7" +# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8" +# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9" +# define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC +# define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_PKEY_PARAM_RSA_N "n" +# define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" +# define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1" +# define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2" +# define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1" +# define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2" +# define OSSL_PKEY_PARAM_RSA_TEST_XP "xp" +# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" +# define OSSL_PKEY_PARAM_SLH_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG +# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +# define OSSL_PROV_PARAM_BUILDINFO "buildinfo" +# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" +# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" +# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" +# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" +# define OSSL_PROV_PARAM_DSA_SIGN_DISABLED "dsa-sign-disabled" +# define OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK "ecdh-cofactor-check" +# define OSSL_PROV_PARAM_HKDF_DIGEST_CHECK "hkdf-digest-check" +# define OSSL_PROV_PARAM_HKDF_KEY_CHECK "hkdf-key-check" +# define OSSL_PROV_PARAM_HMAC_KEY_CHECK "hmac-key-check" +# define OSSL_PROV_PARAM_KBKDF_KEY_CHECK "kbkdf-key-check" +# define OSSL_PROV_PARAM_KMAC_KEY_CHECK "kmac-key-check" +# define OSSL_PROV_PARAM_NAME "name" +# define OSSL_PROV_PARAM_NO_SHORT_MAC "no-short-mac" +# define OSSL_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK "pbkdf2-lower-bound-check" +# define OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED "rsa-pkcs15-pad-disabled" +# define OSSL_PROV_PARAM_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED "rsa-sign-x931-pad-disabled" +# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" +# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" +# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" +# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" +# define OSSL_PROV_PARAM_SIGNATURE_DIGEST_CHECK "signature-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_DIGEST_CHECK "sshkdf-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_KEY_CHECK "sshkdf-key-check" +# define OSSL_PROV_PARAM_SSKDF_DIGEST_CHECK "sskdf-digest-check" +# define OSSL_PROV_PARAM_SSKDF_KEY_CHECK "sskdf-key-check" +# define OSSL_PROV_PARAM_STATUS "status" +# define OSSL_PROV_PARAM_TDES_ENCRYPT_DISABLED "tdes-encrypt-disabled" +# define OSSL_PROV_PARAM_TLS13_KDF_DIGEST_CHECK "tls13-kdf-digest-check" +# define OSSL_PROV_PARAM_TLS13_KDF_KEY_CHECK "tls13-kdf-key-check" +# define OSSL_PROV_PARAM_TLS1_PRF_DIGEST_CHECK "tls1-prf-digest-check" +# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" +# define OSSL_PROV_PARAM_TLS1_PRF_KEY_CHECK "tls1-prf-key-check" +# define OSSL_PROV_PARAM_VERSION "version" +# define OSSL_PROV_PARAM_X942KDF_KEY_CHECK "x942kdf-key-check" +# define OSSL_PROV_PARAM_X963KDF_DIGEST_CHECK "x963kdf-digest-check" +# define OSSL_PROV_PARAM_X963KDF_KEY_CHECK "x963kdf-key-check" +# define OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_RAND_PARAM_GENERATE "generate" +# define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +# define OSSL_RAND_PARAM_STATE "state" +# define OSSL_RAND_PARAM_STRENGTH "strength" +# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" +# define OSSL_SIGNATURE_PARAM_ADD_RANDOM "additional-random" +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID OSSL_PKEY_PARAM_ALGORITHM_ID +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string" +# define OSSL_SIGNATURE_PARAM_DETERMINISTIC "deterministic" +# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE +# define OSSL_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_SIGNATURE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_CHECK OSSL_PKEY_PARAM_FIPS_SIGN_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK "sign-x931-pad-check" +# define OSSL_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE "verify-message" +# define OSSL_SIGNATURE_PARAM_INSTANCE "instance" +# define OSSL_SIGNATURE_PARAM_KAT "kat" +# define OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING "message-encoding" +# define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_SIGNATURE_PARAM_MU "mu" +# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type" +# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +# define OSSL_SIGNATURE_PARAM_SIGNATURE "signature" +# define OSSL_SIGNATURE_PARAM_TEST_ENTROPY "test-entropy" +# define OSSL_SKEY_PARAM_KEY_LENGTH "key-length" +# define OSSL_SKEY_PARAM_RAW_BYTES "raw-bytes" +# define OSSL_STORE_PARAM_ALIAS "alias" +# define OSSL_STORE_PARAM_DIGEST "digest" +# define OSSL_STORE_PARAM_EXPECT "expect" +# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" +# define OSSL_STORE_PARAM_INPUT_TYPE "input-type" +# define OSSL_STORE_PARAM_ISSUER "name" +# define OSSL_STORE_PARAM_PROPERTIES "properties" +# define OSSL_STORE_PARAM_SERIAL "serial" +# define OSSL_STORE_PARAM_SUBJECT "subject" + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/crmf.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/crmf.h index 0419170bb99974..9b6f13fac240b2 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/crmf.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/crmf.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/crmf.h.in * - * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -26,6 +26,7 @@ # include # include # include /* for GENERAL_NAME etc. */ +# include /* explicit #includes not strictly needed since implied by the above: */ # include @@ -43,9 +44,12 @@ extern "C" { # define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 # define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 - typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) + +typedef struct ossl_crmf_encryptedkey_st OSSL_CRMF_ENCRYPTEDKEY; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDKEY) + typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) @@ -77,6 +81,36 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) #define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; +void OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(OSSL_CRMF_ATTRIBUTETYPEANDVALUE *v); +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value(sk, idx) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new(cmp) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_null() ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (n)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete(sk, i) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (i))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete_ptr(sk, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_shift(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk),ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), (idx)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set(sk, idx, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), pnum) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup(sk) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) + + typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER) typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY; @@ -118,6 +152,7 @@ typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO) typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTTEMPLATE) typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS) @@ -198,12 +233,14 @@ int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, int rid, int acceptRAVerified, OSSL_LIB_CTX *libctx, const char *propq); OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); -const ASN1_INTEGER -*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const ASN1_INTEGER +*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); X509_EXTENSIONS *OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME @@ -215,10 +252,24 @@ int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl, const X509_NAME *subject, const X509_NAME *issuer, const ASN1_INTEGER *serial); -X509 -*OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, - OSSL_LIB_CTX *libctx, const char *propq, - EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDKEY_get1_encCert(const OSSL_CRMF_ENCRYPTEDKEY *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, unsigned int flags); +unsigned char +*OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *enc, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, int *outlen); +EVP_PKEY *OSSL_CRMF_ENCRYPTEDKEY_get1_pkey(const OSSL_CRMF_ENCRYPTEDKEY *encryptedKey, + X509_STORE *ts, STACK_OF(X509) *extra, EVP_PKEY *pkey, + X509 *cert, ASN1_OCTET_STRING *secret, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSG_centralkeygen_requested(const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr); +# ifndef OPENSSL_NO_CMS +OSSL_CRMF_ENCRYPTEDKEY *OSSL_CRMF_ENCRYPTEDKEY_init_envdata(CMS_EnvelopedData *envdata); +# endif # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/crypto.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/crypto.h index 668c52cfee1f15..2a825986bf3a55 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/crypto.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/crypto.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/crypto.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -85,9 +85,15 @@ int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock); void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock); int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_add64(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_and(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, CRYPTO_RWLOCK *lock); int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, CRYPTO_RWLOCK *lock); /* No longer needed, so this is a no-op */ #define OPENSSL_malloc_init() while(0) continue @@ -96,6 +102,9 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_zalloc(num) \ CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_aligned_alloc(num, alignment, freeptr) \ + CRYPTO_aligned_alloc(num, alignment, freeptr, \ + OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_realloc(addr, num) \ CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_clear_realloc(addr, old_num, num) \ @@ -124,6 +133,7 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); size_t OPENSSL_strnlen(const char *str, size_t maxlen); +int OPENSSL_strtoul(const char *str, char **endptr, int base, unsigned long *num); int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength, const unsigned char *buf, size_t buflen, const char sep); @@ -160,6 +170,7 @@ const char *OpenSSL_version(int type); # define OPENSSL_FULL_VERSION_STRING 7 # define OPENSSL_MODULES_DIR 8 # define OPENSSL_CPU_INFO 9 +# define OPENSSL_WINCTX 10 const char *OPENSSL_info(int type); /* @@ -174,6 +185,7 @@ const char *OPENSSL_info(int type); # define OPENSSL_INFO_LIST_SEPARATOR 1006 # define OPENSSL_INFO_SEED_SOURCE 1007 # define OPENSSL_INFO_CPU_SETTINGS 1008 +# define OPENSSL_INFO_WINDOWS_CONTEXT 1009 int OPENSSL_issetugid(void); @@ -341,11 +353,14 @@ void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn, CRYPTO_realloc_fn *realloc_fn, CRYPTO_free_fn *free_fn); -void *CRYPTO_malloc(size_t num, const char *file, int line); -void *CRYPTO_zalloc(size_t num, const char *file, int line); -void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); -char *CRYPTO_strdup(const char *str, const char *file, int line); -char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc(size_t num, size_t align, + void **freeptr, const char *file, + int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strdup(const char *str, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); void CRYPTO_free(void *ptr, const char *file, int line); void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line); void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); @@ -354,8 +369,8 @@ void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, int CRYPTO_secure_malloc_init(size_t sz, size_t minsize); int CRYPTO_secure_malloc_done(void); -void *CRYPTO_secure_malloc(size_t num, const char *file, int line); -void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); void CRYPTO_secure_free(void *ptr, const char *file, int line); void CRYPTO_secure_clear_free(void *ptr, size_t num, const char *file, int line); @@ -376,6 +391,9 @@ void OPENSSL_cleanse(void *ptr, size_t len); # define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */ # define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */ +/* max allowed length for value of OPENSSL_MALLOC_FAILURES env var. */ +# define CRYPTO_MEM_CHECK_MAX_FS 256 + void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); # ifndef OPENSSL_NO_DEPRECATED_3_0 # define OPENSSL_mem_debug_push(info) \ @@ -551,6 +569,13 @@ int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file); void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); +int OSSL_LIB_CTX_get_conf_diagnostics(OSSL_LIB_CTX *ctx); +void OSSL_LIB_CTX_set_conf_diagnostics(OSSL_LIB_CTX *ctx, int value); + +void OSSL_sleep(uint64_t millis); + + +void *OSSL_LIB_CTX_get_data(OSSL_LIB_CTX *ctx, int index); # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/ct.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/ct.h index 15a276e33ff7ca..d29dbc78997c0b 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/ct.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/ct.h @@ -133,7 +133,7 @@ typedef enum { */ CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); - + /* * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library * context and property query string is used. diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/err.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/err.h index 2abf2483488181..daca18e7b757b0 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/err.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/err.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -372,7 +372,7 @@ typedef struct ERR_string_data_st { } ERR_STRING_DATA; DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); -#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp))) +#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp)), lh_ERR_STRING_DATA_hash_thunk, lh_ERR_STRING_DATA_comp_thunk, lh_ERR_STRING_DATA_doall_thunk, lh_ERR_STRING_DATA_doall_arg_thunk)) #define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) @@ -496,6 +496,14 @@ int ERR_get_next_error_library(void); int ERR_set_mark(void); int ERR_pop_to_mark(void); int ERR_clear_last_mark(void); +int ERR_count_to_mark(void); +int ERR_pop(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); #ifdef __cplusplus } diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/fipskey.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/fipskey.h index bf03682482fdd5..6939fd3c55ba6e 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/fipskey.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/fipskey.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/fipskey.h.in * - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -29,6 +29,11 @@ extern "C" { */ #define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" +/* + * The FIPS provider vendor name, as a string. + */ +#define FIPS_VENDOR "OpenSSL FIPS Provider" + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/lhash.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/lhash.h index 39dd6254acdeb6..62c55b20fd9716 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/lhash.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/lhash.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -24,6 +24,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -31,9 +34,13 @@ extern "C" { typedef struct lhash_node_st OPENSSL_LH_NODE; typedef int (*OPENSSL_LH_COMPFUNC) (const void *, const void *); +typedef int (*OPENSSL_LH_COMPFUNCTHUNK) (const void *, const void *, OPENSSL_LH_COMPFUNC cfn); typedef unsigned long (*OPENSSL_LH_HASHFUNC) (const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNCTHUNK) (const void *, OPENSSL_LH_HASHFUNC hfn); typedef void (*OPENSSL_LH_DOALL_FUNC) (void *); +typedef void (*OPENSSL_LH_DOALL_FUNC_THUNK) (void *, OPENSSL_LH_DOALL_FUNC doall); typedef void (*OPENSSL_LH_DOALL_FUNCARG) (void *, void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG_THUNK) (void *, void *, OPENSSL_LH_DOALL_FUNCARG doall); typedef struct lhash_st OPENSSL_LHASH; /* @@ -79,26 +86,40 @@ typedef struct lhash_st OPENSSL_LHASH; int OPENSSL_LH_error(OPENSSL_LHASH *lh); OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +OPENSSL_LHASH *OPENSSL_LH_set_thunks(OPENSSL_LHASH *lh, + OPENSSL_LH_HASHFUNCTHUNK hw, + OPENSSL_LH_COMPFUNCTHUNK cw, + OPENSSL_LH_DOALL_FUNC_THUNK daw, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw); void OPENSSL_LH_free(OPENSSL_LHASH *lh); void OPENSSL_LH_flush(OPENSSL_LHASH *lh); void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); -void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg_thunk(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw, + OPENSSL_LH_DOALL_FUNCARG fn, void *arg); + unsigned long OPENSSL_LH_strhash(const char *c); unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); # ifndef OPENSSL_NO_STDIO -void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# endif +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # endif -void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define _LHASH OPENSSL_LHASH @@ -129,110 +150,190 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); /* Helper macro for internal use */ # define DEFINE_LHASH_OF_INTERNAL(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ typedef void (*lh_##type##_doallfunc)(type *a); \ - static ossl_unused ossl_inline type *ossl_check_##type##_lh_plain_type(type *ptr) \ + static ossl_inline unsigned long lh_##type##_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static ossl_inline int lh_##type##_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_inline void lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_inline void lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline type *\ + ossl_check_##type##_lh_plain_type(type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const type *ossl_check_const_##type##_lh_plain_type(const type *ptr) \ + static ossl_unused ossl_inline const type * \ + ossl_check_const_##type##_lh_plain_type(const type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const OPENSSL_LHASH *ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline const OPENSSL_LHASH * \ + ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ { \ return (const OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LHASH *ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline OPENSSL_LHASH * \ + ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ { \ return (OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ + static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC \ + ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ { \ return (OPENSSL_LH_COMPFUNC)cmp; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ + static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC \ + ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ { \ return (OPENSSL_LH_HASHFUNC)hfn; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ + static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC \ + ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ { \ return (OPENSSL_LH_DOALL_FUNC)dfn; \ } \ LHASH_OF(type) -# define DEFINE_LHASH_OF(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ - static ossl_unused ossl_inline LHASH_OF(type) *lh_##type##_new(unsigned long (*hfn)(const type *), \ - int (*cfn)(const type *, const type *)) \ +# ifndef OPENSSL_NO_DEPRECATED_3_1 +# define DEFINE_LHASH_OF_DEPRECATED(type) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ - return (LHASH_OF(type) *) \ - OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ - static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } +# else +# define DEFINE_LHASH_OF_DEPRECATED(type) +# endif + +# define DEFINE_LHASH_OF_EX(type) \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ + static unsigned long \ + lh_##type##_hfn_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static int lh_##type##_cfn_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_free(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_flush(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_flush(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ { \ return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline int \ + lh_##type##_error(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_num_items(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_get_down_load(LHASH_OF(type) *lh) \ { \ - OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ { \ - OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ } \ - static ossl_unused ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ { \ - OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ { \ - return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ } \ - static ossl_unused ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall(LHASH_OF(type) *lh, void (*doall)(type *)) \ { \ - OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ - void (*doall)(type *)) \ + static ossl_unused ossl_inline LHASH_OF(type) * \ + lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ { \ - OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \ + lh_##type##_hfn_thunk, lh_##type##_cfn_thunk, \ + lh_##type##_doall_thunk, \ + lh_##type##_doall_arg_thunk); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall_arg(LHASH_OF(type) *lh, \ - void (*doallarg)(type *, void *), \ - void *arg) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg(LHASH_OF(type) *lh, \ + void (*doallarg)(type *, void *), void *arg) \ { \ OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ } \ LHASH_OF(type) +# define DEFINE_LHASH_OF(type) \ + DEFINE_LHASH_OF_EX(type); \ + DEFINE_LHASH_OF_DEPRECATED(type) \ + LHASH_OF(type) + #define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ int_implement_lhash_doall(type, argtype, const type) @@ -240,17 +341,26 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); int_implement_lhash_doall(type, argtype, type) #define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype##_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG fn) \ + { \ + void (*fn_conv)(cbargtype *, argtype *) = (void (*)(cbargtype *, argtype *))fn; \ + fn_conv((cbargtype *)node, (argtype *)arg); \ + } \ static ossl_unused ossl_inline void \ lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ void (*fn)(cbargtype *, argtype *), \ argtype *arg) \ { \ - OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNCARG)fn, (void *)arg); \ + OPENSSL_LH_doall_arg_thunk((OPENSSL_LHASH *)lh, \ + lh_##type##_doall_##argtype##_thunk, \ + (OPENSSL_LH_DOALL_FUNCARG)fn, \ + (void *)arg); \ } \ LHASH_OF(type) DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); -#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp)), lh_OPENSSL_STRING_hash_thunk, lh_OPENSSL_STRING_comp_thunk, lh_OPENSSL_STRING_doall_thunk, lh_OPENSSL_STRING_doall_arg_thunk)) #define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) @@ -265,7 +375,7 @@ DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); #define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) #define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); -#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp)), lh_OPENSSL_CSTRING_hash_thunk, lh_OPENSSL_CSTRING_comp_thunk, lh_OPENSSL_CSTRING_doall_thunk, lh_OPENSSL_CSTRING_doall_arg_thunk)) #define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/opensslv.h index 94f44daf376f8e..8f0439fc042ad0 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/opensslv.h @@ -28,8 +28,8 @@ extern "C" { * These macros express version number MAJOR.MINOR.PATCH exactly */ # define OPENSSL_VERSION_MAJOR 3 -# define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 17 +# define OPENSSL_VERSION_MINOR 5 +# define OPENSSL_VERSION_PATCH 2 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.17" -# define OPENSSL_FULL_VERSION_STR "3.0.17" +# define OPENSSL_VERSION_STR "3.5.2" +# define OPENSSL_FULL_VERSION_STR "3.5.2" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "1 Jul 2025" +# define OPENSSL_RELEASE_DATE "5 Aug 2025" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.17 1 Jul 2025" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.2 5 Aug 2025" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/pkcs12.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/pkcs12.h index 80369818c8ecdc..35d04f039366ce 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/pkcs12.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/pkcs12.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/pkcs12.h.in * - * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -41,6 +44,7 @@ extern "C" { # define PKCS12_MAC_KEY_LENGTH 20 +/* The macro is expected to be used only internally. Kept for backwards compatibility. */ # define PKCS12_SALT_LEN 8 /* It's not clear if these are actually needed... */ @@ -130,7 +134,9 @@ int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); const STACK_OF(PKCS12_SAFEBAG) * PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); @@ -218,6 +224,7 @@ ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); const STACK_OF(X509_ATTRIBUTE) * PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, const char *pass, int passlen, const unsigned char *in, int inlen, @@ -285,6 +292,9 @@ int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, unsigned char *salt, int saltlen, int iter, const EVP_MD *md_type); +int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type, const char *prf_md_name); int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, int saltlen, const EVP_MD *md_type); unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, @@ -305,6 +315,7 @@ DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) void PKCS12_PBE_add(void); int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype); @@ -312,6 +323,11 @@ PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype, OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/pkcs7.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/pkcs7.h index 0a95a93e59e262..641d9411a47354 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/pkcs7.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/pkcs7.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/pkcs7.h.in * - * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -28,6 +28,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -131,8 +134,8 @@ SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INF typedef struct pkcs7_signed_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; struct pkcs7_st *contents; } PKCS7_SIGNED; @@ -158,8 +161,8 @@ typedef struct pkcs7_enveloped_st { typedef struct pkcs7_signedandenveloped_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; PKCS7_ENC_CONTENT *enc_data; STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; @@ -200,7 +203,7 @@ typedef struct pkcs7_st { /* NID_pkcs7_data */ ASN1_OCTET_STRING *data; /* NID_pkcs7_signed */ - PKCS7_SIGNED *sign; + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ /* NID_pkcs7_enveloped */ PKCS7_ENVELOPE *enveloped; /* NID_pkcs7_signedAndEnveloped */ @@ -341,13 +344,13 @@ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, const EVP_MD *dgst); int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); -int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); -int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); int PKCS7_content_new(PKCS7 *p7, int nid); int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, - X509 *x509); + X509 *signer); BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/ssl.h index 7e9ca09bbf39f0..6396681867d76c 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/ssl.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/ssl.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/ssl.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -24,6 +24,7 @@ # endif # include +# include # include # include # include @@ -42,6 +43,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -231,10 +235,8 @@ typedef struct ssl_cipher_st SSL_CIPHER; typedef struct ssl_session_st SSL_SESSION; typedef struct tls_sigalgs_st TLS_SIGALGS; typedef struct ssl_conf_ctx_st SSL_CONF_CTX; -typedef struct ssl_comp_st SSL_COMP; STACK_OF(SSL_CIPHER); -STACK_OF(SSL_COMP); /* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ typedef struct srtp_protection_profile_st { @@ -278,28 +280,31 @@ typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, /* Extension context codes */ /* This extension is only allowed in TLS */ -#define SSL_EXT_TLS_ONLY 0x0001 +#define SSL_EXT_TLS_ONLY 0x00001 /* This extension is only allowed in DTLS */ -#define SSL_EXT_DTLS_ONLY 0x0002 +#define SSL_EXT_DTLS_ONLY 0x00002 /* Some extensions may be allowed in DTLS but we don't implement them for it */ -#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 /* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ -#define SSL_EXT_SSL3_ALLOWED 0x0008 +#define SSL_EXT_SSL3_ALLOWED 0x00008 /* Extension is only defined for TLS1.2 and below */ -#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 /* Extension is only defined for TLS1.3 and above */ -#define SSL_EXT_TLS1_3_ONLY 0x0020 +#define SSL_EXT_TLS1_3_ONLY 0x00020 /* Ignore this extension during parsing if we are resuming */ -#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 -#define SSL_EXT_CLIENT_HELLO 0x0080 +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 /* Really means TLS1.2 or below */ -#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 -#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 -#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 -#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 -#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 -#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 -#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 /* Typedefs for handling custom extensions */ @@ -404,7 +409,7 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); */ # define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_BIT(22) /* - * If set, a server will allow a client to issue a SSLv3.0 version + * If set, a server will allow a client to issue an SSLv3.0 version * number as latest version supported in the premaster secret, even when * TLSv1.0 (version 3.1) was announced in the client hello. Normally * this is forbidden to prevent version rollback attacks. @@ -430,6 +435,19 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); * interoperability with CryptoPro CSP 3.x */ # define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +# define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +# define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) + /* Enable KTLS TX zerocopy on Linux */ +# define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) + +#define SSL_OP_PREFER_NO_DHE_KEX SSL_OP_BIT(35) /* * Option "collections." @@ -574,6 +592,8 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); # define CERT_PKEY_CERT_TYPE 0x400 /* Cert chain suitable to Suite B */ # define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +# define CERT_PKEY_RPK 0x1000 # define SSL_CONF_FLAG_CMDLINE 0x1 # define SSL_CONF_FLAG_FILE 0x2 @@ -965,6 +985,7 @@ uint32_t SSL_get_recv_max_early_data(const SSL *s); # include /* This is mostly sslv3 with a few tweaks */ # include /* Datagram TLS */ # include /* Support for the use_srtp extension */ +# include #ifdef __cplusplus extern "C" { @@ -1000,32 +1021,6 @@ SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) #define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) #define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) #define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) -SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) -#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) -#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) -#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) -#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) -#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) -#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) -#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) -#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) -#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) -#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) -#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) /* compatibility */ @@ -1066,6 +1061,7 @@ typedef enum { DTLS_ST_CR_HELLO_VERIFY_REQUEST, TLS_ST_CR_SRVR_HELLO, TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, TLS_ST_CR_CERT_STATUS, TLS_ST_CR_KEY_EXCH, TLS_ST_CR_CERT_REQ, @@ -1075,6 +1071,7 @@ typedef enum { TLS_ST_CR_FINISHED, TLS_ST_CW_CLNT_HELLO, TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, TLS_ST_CW_KEY_EXCH, TLS_ST_CW_CERT_VRFY, TLS_ST_CW_CHANGE, @@ -1085,10 +1082,12 @@ typedef enum { DTLS_ST_SW_HELLO_VERIFY_REQUEST, TLS_ST_SW_SRVR_HELLO, TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, TLS_ST_SW_KEY_EXCH, TLS_ST_SW_CERT_REQ, TLS_ST_SW_SRVR_DONE, TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, TLS_ST_SR_KEY_EXCH, TLS_ST_SR_CERT_VRFY, TLS_ST_SR_NEXT_PROTO, @@ -1380,9 +1379,13 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_CTRL_GET_SIGNATURE_NID 132 # define SSL_CTRL_GET_TMP_KEY 133 # define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +# define SSL_CTRL_GET_IANA_GROUPS 135 # define SSL_CTRL_SET_RETRY_VERIFY 136 # define SSL_CTRL_GET_VERIFY_CERT_STORE 137 # define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +# define SSL_CTRL_GET0_IMPLEMENTED_GROUPS 139 +# define SSL_CTRL_GET_SIGNATURE_NAME 140 +# define SSL_CTRL_GET_PEER_SIGNATURE_NAME 141 # define SSL_CERT_SET_FIRST 1 # define SSL_CERT_SET_NEXT 2 # define SSL_CERT_SET_SERVER 3 @@ -1485,10 +1488,15 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get1_groups(s, glist) \ SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_IANA_GROUPS,0,(uint16_t **)(plst)) # define SSL_CTX_set1_groups(ctx, glist, glistlen) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) # define SSL_CTX_set1_groups_list(ctx, s) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s)) +# define SSL_CTX_get0_implemented_groups(ctx, all, out) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET0_IMPLEMENTED_GROUPS, all, \ + (STACK_OF(OPENSSL_CSTRING) *)(out)) # define SSL_set1_groups(s, glist, glistlen) \ SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist)) # define SSL_set1_groups_list(s, str) \ @@ -1520,8 +1528,12 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) (char *)(clist)) # define SSL_set1_client_certificate_types(s, clist, clistlen) \ SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist)) +# define SSL_get0_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn) +# define SSL_get0_peer_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_peer_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) # define SSL_get_peer_tmp_key(s, pk) \ @@ -1549,6 +1561,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get_max_proto_version(s) \ SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +const char *SSL_get0_group_name(SSL *s); const char *SSL_group_to_name(SSL *s, int id); /* Backwards compatibility, original 1.1.0 names */ @@ -1613,7 +1626,11 @@ void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); __owur int SSL_want(const SSL *s); __owur int SSL_clear(SSL *s); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()") void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); +#endif +void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm); __owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); __owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); @@ -1725,13 +1742,21 @@ __owur const char *SSL_state_string(const SSL *s); __owur const char *SSL_rstate_string(const SSL *s); __owur const char *SSL_state_string_long(const SSL *s); __owur const char *SSL_rstate_string_long(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_get_time_ex()") __owur long SSL_SESSION_get_time(const SSL_SESSION *s); +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_set_time_ex()") __owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +#endif __owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); __owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); __owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); __owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); +__owur time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s); +__owur time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t); + __owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); __owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, @@ -1783,6 +1808,9 @@ __owur int SSL_has_matching_session_id(const SSL *s, unsigned int id_len); SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); # ifdef OPENSSL_X509_H __owur X509 *SSL_get0_peer_certificate(const SSL *s); @@ -1840,6 +1868,8 @@ __owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, SSL *SSL_new(SSL_CTX *ctx); int SSL_up_ref(SSL *s); int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); __owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, unsigned int sid_ctx_len); @@ -1848,8 +1878,8 @@ __owur int SSL_set_purpose(SSL *ssl, int purpose); __owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); __owur int SSL_set_trust(SSL *ssl, int trust); -__owur int SSL_set1_host(SSL *s, const char *hostname); -__owur int SSL_add1_host(SSL *s, const char *hostname); +__owur int SSL_set1_host(SSL *s, const char *host); +__owur int SSL_add1_host(SSL *s, const char *host); __owur const char *SSL_get0_peername(SSL *s); void SSL_set_hostflags(SSL *s, unsigned int flags); @@ -1924,6 +1954,11 @@ OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg); void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, void *arg); +typedef int (*SSL_new_pending_conn_cb_fn) (SSL_CTX *ctx, SSL *new_ssl, + void *arg); +void SSL_CTX_set_new_pending_conn_cb(SSL_CTX *c, SSL_new_pending_conn_cb_fn cb, + void *arg); + int SSL_client_hello_isv2(SSL *s); unsigned int SSL_client_hello_get0_legacy_version(SSL *s); size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); @@ -1932,6 +1967,8 @@ size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); size_t SSL_client_hello_get0_compression_methods(SSL *s, const unsigned char **out); int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); int SSL_client_hello_get0_ext(SSL *s, unsigned int type, const unsigned char **out, size_t *outlen); @@ -1978,6 +2015,12 @@ long SSL_callback_ctrl(SSL *, int, void (*)(void)); long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); +# define SSL_WRITE_FLAG_CONCLUDE (1U << 0) + +__owur int SSL_write_ex2(SSL *s, const void *buf, size_t num, + uint64_t flags, + size_t *written); + # define SSL_EARLY_DATA_NOT_SENT 0 # define SSL_EARLY_DATA_REJECTED 1 # define SSL_EARLY_DATA_ACCEPTED 2 @@ -1986,6 +2029,7 @@ __owur int SSL_get_early_data_status(const SSL *s); __owur int SSL_get_error(const SSL *s, int ret_code); __owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); /* This sets the 'default' SSL version that SSL_new() will create */ # ifndef OPENSSL_NO_DEPRECATED_3_0 @@ -2281,6 +2325,8 @@ void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); +int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size, + size_t hs_block_size); int SSL_set_record_padding_callback(SSL *ssl, size_t (*cb) (SSL *ssl, int type, @@ -2288,12 +2334,255 @@ int SSL_set_record_padding_callback(SSL *ssl, void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); void *SSL_get_record_padding_callback_arg(const SSL *ssl); int SSL_set_block_padding(SSL *ssl, size_t block_size); - +int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size, + size_t hs_block_size); int SSL_set_num_tickets(SSL *s, size_t num_tickets); size_t SSL_get_num_tickets(const SSL *s); int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +__owur int SSL_is_listener(SSL *ssl); +__owur SSL *SSL_get0_listener(SSL *s); +#define SSL_LISTENER_FLAG_NO_VALIDATE (1UL << 1) +__owur SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags); +__owur SSL *SSL_new_listener_from(SSL *ssl, uint64_t flags); +__owur SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags); +#define SSL_ACCEPT_CONNECTION_NO_BLOCK (1UL << 0) +__owur SSL *SSL_accept_connection(SSL *ssl, uint64_t flags); +__owur size_t SSL_get_accept_connection_queue_len(SSL *ssl); +__owur int SSL_listen(SSL *ssl); + +__owur int SSL_is_domain(SSL *s); +__owur SSL *SSL_get0_domain(SSL *s); +__owur SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags); + +#define SSL_DOMAIN_FLAG_SINGLE_THREAD (1U << 0) +#define SSL_DOMAIN_FLAG_MULTI_THREAD (1U << 1) +#define SSL_DOMAIN_FLAG_THREAD_ASSISTED (1U << 2) +#define SSL_DOMAIN_FLAG_BLOCKING (1U << 3) +#define SSL_DOMAIN_FLAG_LEGACY_BLOCKING (1U << 4) + +__owur int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t domain_flags); +__owur int SSL_CTX_get_domain_flags(const SSL_CTX *ctx, uint64_t *domain_flags); +__owur int SSL_get_domain_flags(const SSL *ssl, uint64_t *domain_flags); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +# ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +# endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + +# define SSL_VALUE_CLASS_GENERIC 0 +# define SSL_VALUE_CLASS_FEATURE_REQUEST 1 +# define SSL_VALUE_CLASS_FEATURE_PEER_REQUEST 2 +# define SSL_VALUE_CLASS_FEATURE_NEGOTIATED 3 + +# define SSL_VALUE_NONE 0 +# define SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL 1 +# define SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL 2 +# define SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL 3 +# define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL 4 +# define SSL_VALUE_QUIC_IDLE_TIMEOUT 5 +# define SSL_VALUE_EVENT_HANDLING_MODE 6 +# define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7 +# define SSL_VALUE_STREAM_WRITE_BUF_USED 8 +# define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9 + +# define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0 +# define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1 +# define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT 2 + +int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v); +int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v); + +# define SSL_get_generic_value_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_set_generic_value_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_get_feature_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_set_feature_request_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_get_feature_peer_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, (id), (v)) +# define SSL_get_feature_negotiated_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_NEGOTIATED, (id), (v)) + +# define SSL_get_quic_stream_bidi_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_bidi_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, \ + (value)) + +# define SSL_get_event_handling_mode(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) +# define SSL_set_event_handling_mode(ssl, value) \ + SSL_set_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) + +# define SSL_get_stream_write_buf_size(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_SIZE, \ + (value)) +# define SSL_get_stream_write_buf_used(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_USED, \ + (value)) +# define SSL_get_stream_write_buf_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_AVAIL, \ + (value)) + +# define SSL_POLL_EVENT_NONE 0 + +# define SSL_POLL_EVENT_F (1U << 0) /* F (Failure) */ +# define SSL_POLL_EVENT_EL (1U << 1) /* EL (Exception on Listener) */ +# define SSL_POLL_EVENT_EC (1U << 2) /* EC (Exception on Conn) */ +# define SSL_POLL_EVENT_ECD (1U << 3) /* ECD (Exception on Conn Drained) */ +# define SSL_POLL_EVENT_ER (1U << 4) /* ER (Exception on Read) */ +# define SSL_POLL_EVENT_EW (1U << 5) /* EW (Exception on Write) */ +# define SSL_POLL_EVENT_R (1U << 6) /* R (Readable) */ +# define SSL_POLL_EVENT_W (1U << 7) /* W (Writable) */ +# define SSL_POLL_EVENT_IC (1U << 8) /* IC (Incoming Connection) */ +# define SSL_POLL_EVENT_ISB (1U << 9) /* ISB (Incoming Stream: Bidi) */ +# define SSL_POLL_EVENT_ISU (1U << 10) /* ISU (Incoming Stream: Uni) */ +# define SSL_POLL_EVENT_OSB (1U << 11) /* OSB (Outgoing Stream: Bidi) */ +# define SSL_POLL_EVENT_OSU (1U << 12) /* OSU (Outgoing Stream: Uni) */ + +# define SSL_POLL_EVENT_RW (SSL_POLL_EVENT_R | SSL_POLL_EVENT_W) +# define SSL_POLL_EVENT_RE (SSL_POLL_EVENT_R | SSL_POLL_EVENT_ER) +# define SSL_POLL_EVENT_WE (SSL_POLL_EVENT_W | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_RWE (SSL_POLL_EVENT_RE | SSL_POLL_EVENT_WE) +# define SSL_POLL_EVENT_E (SSL_POLL_EVENT_EL | SSL_POLL_EVENT_EC \ + | SSL_POLL_EVENT_ER | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_IS (SSL_POLL_EVENT_ISB | SSL_POLL_EVENT_ISU) +# define SSL_POLL_EVENT_ISE (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_EC) +# define SSL_POLL_EVENT_I (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_IC) +# define SSL_POLL_EVENT_OS (SSL_POLL_EVENT_OSB | SSL_POLL_EVENT_OSU) +# define SSL_POLL_EVENT_OSE (SSL_POLL_EVENT_OS | SSL_POLL_EVENT_EC) + +typedef struct ssl_poll_item_st { + BIO_POLL_DESCRIPTOR desc; + uint64_t events, revents; +} SSL_POLL_ITEM; + +# define SSL_POLL_FLAG_NO_HANDLE_EVENTS (1U << 0) + +__owur int SSL_poll(SSL_POLL_ITEM *items, + size_t num_items, + size_t stride, + const struct timeval *timeout, + uint64_t flags, + size_t *result_count); + +static ossl_inline ossl_unused BIO_POLL_DESCRIPTOR +SSL_as_poll_descriptor(SSL *s) +{ + BIO_POLL_DESCRIPTOR d; + + d.type = BIO_POLL_DESCRIPTOR_TYPE_SSL; + d.value.ssl = s; + return d; +} + # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define SSL_cache_hit(s) SSL_session_reused(s) # endif @@ -2593,6 +2882,51 @@ void SSL_set_allow_early_data_cb(SSL *s, const char *OSSL_default_cipher_list(void); const char *OSSL_default_ciphersuites(void); +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + +/* + * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used. + */ +# define OSSL_RECORD_PROTECTION_LEVEL_NONE 0 +# define OSSL_RECORD_PROTECTION_LEVEL_EARLY 1 +# define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE 2 +# define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3 + +int SSL_set_quic_tls_cbs(SSL *s, const OSSL_DISPATCH *qtdis, void *arg); +int SSL_set_quic_tls_transport_params(SSL *s, + const unsigned char *params, + size_t params_len); + +int SSL_set_quic_tls_early_data_enabled(SSL *s, int enabled); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/x509.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/x509.h index 0f2353c821aa9b..5e9c548c48d65b 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/x509.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/x509.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/x509.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -40,6 +40,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -162,16 +165,24 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) # define X509_FILETYPE_ASN1 2 # define X509_FILETYPE_DEFAULT 3 -# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 -# define X509v3_KU_NON_REPUDIATION 0x0040 -# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 -# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 -# define X509v3_KU_KEY_AGREEMENT 0x0008 -# define X509v3_KU_KEY_CERT_SIGN 0x0004 -# define X509v3_KU_CRL_SIGN 0x0002 -# define X509v3_KU_ENCIPHER_ONLY 0x0001 -# define X509v3_KU_DECIPHER_ONLY 0x8000 -# define X509v3_KU_UNDEF 0xffff +/*- + * : + * The KeyUsage BITSTRING is treated as a little-endian integer, hence bit `0` + * is 0x80, while bit `7` is 0x01 (the LSB of the integer value), bit `8` is + * then the MSB of the second octet, or 0x8000. + */ +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 /* (0) */ +# define X509v3_KU_NON_REPUDIATION 0x0040 /* (1) */ +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 /* (2) */ +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 /* (3) */ +# define X509v3_KU_KEY_AGREEMENT 0x0008 /* (4) */ +# define X509v3_KU_KEY_CERT_SIGN 0x0004 /* (5) */ +# define X509v3_KU_CRL_SIGN 0x0002 /* (6) */ +# define X509v3_KU_ENCIPHER_ONLY 0x0001 /* (7) */ +# define X509v3_KU_DECIPHER_ONLY 0x8000 /* (8) */ +# ifndef OPENSSL_NO_DEPRECATED_3_4 +# define X509v3_KU_UNDEF 0xffff /* vestigial, not used */ +# endif struct X509_algor_st { ASN1_OBJECT *algorithm; @@ -462,7 +473,12 @@ typedef struct PBKDF2PARAM_st { X509_ALGOR *prf; } PBKDF2PARAM; -#ifndef OPENSSL_NO_SCRYPT +typedef struct { + X509_ALGOR *keyDerivationFunc; + X509_ALGOR *messageAuthScheme; +} PBMAC1PARAM; + +# ifndef OPENSSL_NO_SCRYPT typedef struct SCRYPT_PARAMS_st { ASN1_OCTET_STRING *salt; ASN1_INTEGER *costParameter; @@ -470,7 +486,7 @@ typedef struct SCRYPT_PARAMS_st { ASN1_INTEGER *parallelizationParameter; ASN1_INTEGER *keyLength; } SCRYPT_PARAMS; -#endif +# endif #ifdef __cplusplus } @@ -603,6 +619,8 @@ EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); # endif @@ -651,6 +669,8 @@ EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); DECLARE_ASN1_DUP_FUNCTION(X509) @@ -884,12 +904,12 @@ int X509_REQ_get_signature_nid(const X509_REQ *req); int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); -EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); int X509_REQ_extension_nid(int nid); int *X509_REQ_get_extension_nids(void); void X509_REQ_set_extension_nids(int *nids); -STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(OSSL_FUTURE_CONST X509_REQ *req); int X509_REQ_add_extensions_nid(X509_REQ *req, const STACK_OF(X509_EXTENSION) *exts, int nid); int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); @@ -950,13 +970,14 @@ X509_REVOKED_get0_extensions(const X509_REVOKED *r); X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); -int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); -int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey); +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); int X509_chain_check_suiteb(int *perror_depth, X509 *x, STACK_OF(X509) *chain, unsigned long flags); int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); @@ -1077,6 +1098,8 @@ X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, X509_EXTENSION *ex, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_extensions(STACK_OF(X509_EXTENSION) **target, + const STACK_OF(X509_EXTENSION) *exts); int X509_get_ext_count(const X509 *x); int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); @@ -1198,9 +1221,10 @@ X509 *X509_find_by_subject(STACK_OF(X509) *sk, const X509_NAME *name); DECLARE_ASN1_FUNCTIONS(PBEPARAM) DECLARE_ASN1_FUNCTIONS(PBE2PARAM) DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) -#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(PBMAC1PARAM) +# ifndef OPENSSL_NO_SCRYPT DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) -#endif +# endif int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, const unsigned char *salt, int saltlen); @@ -1237,6 +1261,7 @@ X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, int prf_nid, int keylen, OSSL_LIB_CTX *libctx); +PBKDF2PARAM *PBMAC1_get1_pbkdf2_param(const X509_ALGOR *macalg); /* PKCS#8 utilities */ DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) @@ -1262,6 +1287,8 @@ int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len); +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, int ptype, void *pval, unsigned char *penc, int penclen); diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/x509_acert.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/x509_acert.h new file mode 100644 index 00000000000000..efae82c8f6b635 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/x509_acert.h @@ -0,0 +1,294 @@ +/* + * WARNING: do not edit! + * Generated by makefile from include/openssl/x509_acert.h.in + * + * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_X509_ACERT_H +# define OPENSSL_X509_ACERT_H +# pragma once + +# include +# include +# include + +typedef struct X509_acert_st X509_ACERT; +typedef struct X509_acert_info_st X509_ACERT_INFO; +typedef struct ossl_object_digest_info_st OSSL_OBJECT_DIGEST_INFO; +typedef struct ossl_issuer_serial_st OSSL_ISSUER_SERIAL; +typedef struct X509_acert_issuer_v2form_st X509_ACERT_ISSUER_V2FORM; + +DECLARE_ASN1_FUNCTIONS(X509_ACERT) +DECLARE_ASN1_DUP_FUNCTION(X509_ACERT) +DECLARE_ASN1_ITEM(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_OBJECT_DIGEST_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_ISSUER_SERIAL) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_ISSUER_V2FORM) + +# ifndef OPENSSL_NO_STDIO +X509_ACERT *d2i_X509_ACERT_fp(FILE *fp, X509_ACERT **acert); +int i2d_X509_ACERT_fp(FILE *fp, const X509_ACERT *acert); +# endif + +DECLARE_PEM_rw(X509_ACERT, X509_ACERT) + +X509_ACERT *d2i_X509_ACERT_bio(BIO *bp, X509_ACERT **acert); +int i2d_X509_ACERT_bio(BIO *bp, const X509_ACERT *acert); + +int X509_ACERT_sign(X509_ACERT *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_ACERT_sign_ctx(X509_ACERT *x, EVP_MD_CTX *ctx); +int X509_ACERT_verify(X509_ACERT *a, EVP_PKEY *r); + +# define X509_ACERT_VERSION_2 1 + +const GENERAL_NAMES *X509_ACERT_get0_holder_entityName(const X509_ACERT *x); +const OSSL_ISSUER_SERIAL *X509_ACERT_get0_holder_baseCertId(const X509_ACERT *x); +const OSSL_OBJECT_DIGEST_INFO * X509_ACERT_get0_holder_digest(const X509_ACERT *x); +const X509_NAME *X509_ACERT_get0_issuerName(const X509_ACERT *x); +long X509_ACERT_get_version(const X509_ACERT *x); +void X509_ACERT_get0_signature(const X509_ACERT *x, + const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_ACERT_get_signature_nid(const X509_ACERT *x); +const X509_ALGOR *X509_ACERT_get0_info_sigalg(const X509_ACERT *x); +const ASN1_INTEGER *X509_ACERT_get0_serialNumber(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notBefore(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notAfter(const X509_ACERT *x); +const ASN1_BIT_STRING *X509_ACERT_get0_issuerUID(const X509_ACERT *x); + +int X509_ACERT_print(BIO *bp, X509_ACERT *x); +int X509_ACERT_print_ex(BIO *bp, X509_ACERT *x, unsigned long nmflags, + unsigned long cflag); + +int X509_ACERT_get_attr_count(const X509_ACERT *x); +int X509_ACERT_get_attr_by_NID(const X509_ACERT *x, int nid, int lastpos); +int X509_ACERT_get_attr_by_OBJ(const X509_ACERT *x, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_ACERT_get_attr(const X509_ACERT *x, int loc); +X509_ATTRIBUTE *X509_ACERT_delete_attr(X509_ACERT *x, int loc); + +void *X509_ACERT_get_ext_d2i(const X509_ACERT *x, int nid, int *crit, int *idx); +int X509_ACERT_add1_ext_i2d(X509_ACERT *x, int nid, void *value, int crit, + unsigned long flags); +const STACK_OF(X509_EXTENSION) *X509_ACERT_get0_extensions(const X509_ACERT *x); + +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY 0 +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY_CERT 1 +# define OSSL_OBJECT_DIGEST_INFO_OTHER 2 /* must not be used in RFC 5755 profile */ +int X509_ACERT_set_version(X509_ACERT *x, long version); +void X509_ACERT_set0_holder_entityName(X509_ACERT *x, GENERAL_NAMES *name); +void X509_ACERT_set0_holder_baseCertId(X509_ACERT *x, OSSL_ISSUER_SERIAL *isss); +void X509_ACERT_set0_holder_digest(X509_ACERT *x, + OSSL_OBJECT_DIGEST_INFO *dinfo); + +int X509_ACERT_add1_attr(X509_ACERT *x, X509_ATTRIBUTE *attr); +int X509_ACERT_add1_attr_by_OBJ(X509_ACERT *x, const ASN1_OBJECT *obj, + int type, const void *bytes, int len); +int X509_ACERT_add1_attr_by_NID(X509_ACERT *x, int nid, int type, + const void *bytes, int len); +int X509_ACERT_add1_attr_by_txt(X509_ACERT *x, const char *attrname, int type, + const unsigned char *bytes, int len); +int X509_ACERT_add_attr_nconf(CONF *conf, const char *section, + X509_ACERT *acert); + +int X509_ACERT_set1_issuerName(X509_ACERT *x, const X509_NAME *name); +int X509_ACERT_set1_serialNumber(X509_ACERT *x, const ASN1_INTEGER *serial); +int X509_ACERT_set1_notBefore(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); +int X509_ACERT_set1_notAfter(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); + +void OSSL_OBJECT_DIGEST_INFO_get0_digest(const OSSL_OBJECT_DIGEST_INFO *o, + int *digestedObjectType, + const X509_ALGOR **digestAlgorithm, + const ASN1_BIT_STRING **digest); + +int OSSL_OBJECT_DIGEST_INFO_set1_digest(OSSL_OBJECT_DIGEST_INFO *o, + int digestedObjectType, + X509_ALGOR *digestAlgorithm, + ASN1_BIT_STRING *digest); + +const X509_NAME *OSSL_ISSUER_SERIAL_get0_issuer(const OSSL_ISSUER_SERIAL *isss); +const ASN1_INTEGER *OSSL_ISSUER_SERIAL_get0_serial(const OSSL_ISSUER_SERIAL *isss); +const ASN1_BIT_STRING *OSSL_ISSUER_SERIAL_get0_issuerUID(const OSSL_ISSUER_SERIAL *isss); + +int OSSL_ISSUER_SERIAL_set1_issuer(OSSL_ISSUER_SERIAL *isss, + const X509_NAME *issuer); +int OSSL_ISSUER_SERIAL_set1_serial(OSSL_ISSUER_SERIAL *isss, + const ASN1_INTEGER *serial); +int OSSL_ISSUER_SERIAL_set1_issuerUID(OSSL_ISSUER_SERIAL *isss, + const ASN1_BIT_STRING *uid); + +# define OSSL_IETFAS_OCTETS 0 +# define OSSL_IETFAS_OID 1 +# define OSSL_IETFAS_STRING 2 + +typedef struct OSSL_IETF_ATTR_SYNTAX_VALUE_st OSSL_IETF_ATTR_SYNTAX_VALUE; +typedef struct OSSL_IETF_ATTR_SYNTAX_st OSSL_IETF_ATTR_SYNTAX; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_value(sk, idx) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new(cmp) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_null() ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (n)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete(sk, i) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (i))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete_ptr(sk, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_pop(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_shift(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_shift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk),ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), (idx)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set(sk, idx, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_set(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), pnum) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_dup(sk) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_copyfunc_type(copyfunc), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set_cmp_func(sk, cmp) ((sk_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) + + +DECLARE_ASN1_ITEM(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX) + +const GENERAL_NAMES * +OSSL_IETF_ATTR_SYNTAX_get0_policyAuthority(const OSSL_IETF_ATTR_SYNTAX *a); +void OSSL_IETF_ATTR_SYNTAX_set0_policyAuthority(OSSL_IETF_ATTR_SYNTAX *a, + GENERAL_NAMES *names); + +int OSSL_IETF_ATTR_SYNTAX_get_value_num(const OSSL_IETF_ATTR_SYNTAX *a); +void *OSSL_IETF_ATTR_SYNTAX_get0_value(const OSSL_IETF_ATTR_SYNTAX *a, + int ind, int *type); +int OSSL_IETF_ATTR_SYNTAX_add1_value(OSSL_IETF_ATTR_SYNTAX *a, int type, + void *data); +int OSSL_IETF_ATTR_SYNTAX_print(BIO *bp, OSSL_IETF_ATTR_SYNTAX *a, int indent); + +struct TARGET_CERT_st { + OSSL_ISSUER_SERIAL *targetCertificate; + GENERAL_NAME *targetName; + OSSL_OBJECT_DIGEST_INFO *certDigestInfo; +}; + +typedef struct TARGET_CERT_st OSSL_TARGET_CERT; + +# define OSSL_TGT_TARGET_NAME 0 +# define OSSL_TGT_TARGET_GROUP 1 +# define OSSL_TGT_TARGET_CERT 2 + +typedef struct TARGET_st { + int type; + union { + GENERAL_NAME *targetName; + GENERAL_NAME *targetGroup; + OSSL_TARGET_CERT *targetCert; + } choice; +} OSSL_TARGET; + +typedef STACK_OF(OSSL_TARGET) OSSL_TARGETS; +typedef STACK_OF(OSSL_TARGETS) OSSL_TARGETING_INFORMATION; + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGET, OSSL_TARGET, OSSL_TARGET) +#define sk_OSSL_TARGET_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_value(sk, idx) ((OSSL_TARGET *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGET_sk_type(sk), (idx))) +#define sk_OSSL_TARGET_new(cmp) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new(ossl_check_OSSL_TARGET_compfunc_type(cmp))) +#define sk_OSSL_TARGET_new_null() ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGET_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGET_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGET_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGET_sk_type(sk), (n)) +#define sk_OSSL_TARGET_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_delete(sk, i) ((OSSL_TARGET *)OPENSSL_sk_delete(ossl_check_OSSL_TARGET_sk_type(sk), (i))) +#define sk_OSSL_TARGET_delete_ptr(sk, ptr) ((OSSL_TARGET *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_pop(sk) ((OSSL_TARGET *)OPENSSL_sk_pop(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_shift(sk) ((OSSL_TARGET *)OPENSSL_sk_shift(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGET_sk_type(sk),ossl_check_OSSL_TARGET_freefunc_type(freefunc)) +#define sk_OSSL_TARGET_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), (idx)) +#define sk_OSSL_TARGET_set(sk, idx, ptr) ((OSSL_TARGET *)OPENSSL_sk_set(ossl_check_OSSL_TARGET_sk_type(sk), (idx), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), pnum) +#define sk_OSSL_TARGET_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_dup(sk) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_copyfunc_type(copyfunc), ossl_check_OSSL_TARGET_freefunc_type(freefunc))) +#define sk_OSSL_TARGET_set_cmp_func(sk, cmp) ((sk_OSSL_TARGET_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGETS, OSSL_TARGETS, OSSL_TARGETS) +#define sk_OSSL_TARGETS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_value(sk, idx) ((OSSL_TARGETS *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGETS_sk_type(sk), (idx))) +#define sk_OSSL_TARGETS_new(cmp) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new(ossl_check_OSSL_TARGETS_compfunc_type(cmp))) +#define sk_OSSL_TARGETS_new_null() ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGETS_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGETS_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGETS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGETS_sk_type(sk), (n)) +#define sk_OSSL_TARGETS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_delete(sk, i) ((OSSL_TARGETS *)OPENSSL_sk_delete(ossl_check_OSSL_TARGETS_sk_type(sk), (i))) +#define sk_OSSL_TARGETS_delete_ptr(sk, ptr) ((OSSL_TARGETS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_pop(sk) ((OSSL_TARGETS *)OPENSSL_sk_pop(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_shift(sk) ((OSSL_TARGETS *)OPENSSL_sk_shift(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGETS_sk_type(sk),ossl_check_OSSL_TARGETS_freefunc_type(freefunc)) +#define sk_OSSL_TARGETS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), (idx)) +#define sk_OSSL_TARGETS_set(sk, idx, ptr) ((OSSL_TARGETS *)OPENSSL_sk_set(ossl_check_OSSL_TARGETS_sk_type(sk), (idx), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), pnum) +#define sk_OSSL_TARGETS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_dup(sk) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_copyfunc_type(copyfunc), ossl_check_OSSL_TARGETS_freefunc_type(freefunc))) +#define sk_OSSL_TARGETS_set_cmp_func(sk, cmp) ((sk_OSSL_TARGETS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_compfunc_type(cmp))) + + +DECLARE_ASN1_FUNCTIONS(OSSL_TARGET) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETS) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETING_INFORMATION) + +typedef STACK_OF(OSSL_ISSUER_SERIAL) OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL) +#define sk_OSSL_ISSUER_SERIAL_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_value(sk, idx) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_value(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), (idx))) +#define sk_OSSL_ISSUER_SERIAL_new(cmp) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) +#define sk_OSSL_ISSUER_SERIAL_new_null() ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ISSUER_SERIAL_new_reserve(cmp, n) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp), (n))) +#define sk_OSSL_ISSUER_SERIAL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (n)) +#define sk_OSSL_ISSUER_SERIAL_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_delete(sk, i) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (i))) +#define sk_OSSL_ISSUER_SERIAL_delete_ptr(sk, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_pop(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_pop(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_shift(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_shift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk),ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc)) +#define sk_OSSL_ISSUER_SERIAL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), (idx)) +#define sk_OSSL_ISSUER_SERIAL_set(sk, idx, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_set(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (idx), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), pnum) +#define sk_OSSL_ISSUER_SERIAL_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_dup(sk) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_copyfunc_type(copyfunc), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc))) +#define sk_OSSL_ISSUER_SERIAL_set_cmp_func(sk, cmp) ((sk_OSSL_ISSUER_SERIAL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) + + +#endif diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/x509_vfy.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/x509_vfy.h index f571187265cfc9..f08a134b17b7db 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/x509_vfy.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/x509_vfy.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/x509_vfy.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -411,6 +411,7 @@ X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ # define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 # define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 # define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +# define X509_V_ERR_RPK_UNTRUSTED 95 /* Certificate verify flags */ # ifndef OPENSSL_NO_DEPRECATED_1_1_0 @@ -491,71 +492,72 @@ int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); X509_STORE *X509_STORE_new(void); -void X509_STORE_free(X509_STORE *v); -int X509_STORE_lock(X509_STORE *ctx); -int X509_STORE_unlock(X509_STORE *ctx); -int X509_STORE_up_ref(X509_STORE *v); -STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *v); -STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *st); -STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get1_objects(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, const X509_NAME *nm); STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, const X509_NAME *nm); -int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); -int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); -int X509_STORE_set_trust(X509_STORE *ctx, int trust); -int X509_STORE_set1_param(X509_STORE *ctx, const X509_VERIFY_PARAM *pm); -X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *ctx); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); -void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); #define X509_STORE_set_verify_func(ctx, func) \ X509_STORE_set_verify((ctx),(func)) void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, X509_STORE_CTX_verify_fn verify); -X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *ctx); -void X509_STORE_set_verify_cb(X509_STORE *ctx, +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, X509_STORE_CTX_verify_cb verify_cb); # define X509_STORE_set_verify_cb_func(ctx,func) \ X509_STORE_set_verify_cb((ctx),(func)) -X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *ctx); -void X509_STORE_set_get_issuer(X509_STORE *ctx, +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, X509_STORE_CTX_get_issuer_fn get_issuer); -X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *ctx); -void X509_STORE_set_check_issued(X509_STORE *ctx, +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, X509_STORE_CTX_check_issued_fn check_issued); -X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *ctx); -void X509_STORE_set_check_revocation(X509_STORE *ctx, +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, X509_STORE_CTX_check_revocation_fn check_revocation); X509_STORE_CTX_check_revocation_fn - X509_STORE_get_check_revocation(const X509_STORE *ctx); -void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, X509_STORE_CTX_get_crl_fn get_crl); -X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *ctx); -void X509_STORE_set_check_crl(X509_STORE *ctx, +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, X509_STORE_CTX_check_crl_fn check_crl); -X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *ctx); -void X509_STORE_set_cert_crl(X509_STORE *ctx, +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, X509_STORE_CTX_cert_crl_fn cert_crl); -X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *ctx); -void X509_STORE_set_check_policy(X509_STORE *ctx, +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, X509_STORE_CTX_check_policy_fn check_policy); -X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *ctx); -void X509_STORE_set_lookup_certs(X509_STORE *ctx, +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, X509_STORE_CTX_lookup_certs_fn lookup_certs); -X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *ctx); -void X509_STORE_set_lookup_crls(X509_STORE *ctx, +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, X509_STORE_CTX_lookup_crls_fn lookup_crls); #define X509_STORE_set_lookup_crls_cb(ctx, func) \ X509_STORE_set_lookup_crls((ctx), (func)) -X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *ctx); -void X509_STORE_set_cleanup(X509_STORE *ctx, +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, X509_STORE_CTX_cleanup_fn cleanup); -X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); #define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) -int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); -void *X509_STORE_get_ex_data(const X509_STORE *ctx, int idx); +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); X509_STORE_CTX *X509_STORE_CTX_new(void); @@ -565,11 +567,14 @@ int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); void X509_STORE_CTX_free(X509_STORE_CTX *ctx); int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY* rpk); void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, @@ -579,6 +584,8 @@ X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); @@ -600,7 +607,7 @@ X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); # define X509_STORE_get1_crl X509_STORE_CTX_get1_crls #endif -X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); X509_LOOKUP_METHOD *X509_LOOKUP_file(void); X509_LOOKUP_METHOD *X509_LOOKUP_store(void); @@ -685,8 +692,8 @@ X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( const X509_LOOKUP_METHOD *method); -int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); -int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, @@ -730,23 +737,21 @@ void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); -int X509_STORE_load_file(X509_STORE *ctx, const char *file); -int X509_STORE_load_path(X509_STORE *ctx, const char *path); -int X509_STORE_load_store(X509_STORE *ctx, const char *store); -int X509_STORE_load_locations(X509_STORE *ctx, - const char *file, - const char *dir); -int X509_STORE_set_default_paths(X509_STORE *ctx); +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); -int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file, +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_store_ex(X509_STORE *ctx, const char *store, +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file, - const char *dir, OSSL_LIB_CTX *libctx, - const char *propq); -int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OSSL_LIB_CTX *libctx, - const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); #define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) @@ -764,6 +769,7 @@ X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); @@ -773,6 +779,8 @@ int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); @@ -804,6 +812,7 @@ int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, unsigned long flags); unsigned long X509_VERIFY_PARAM_get_flags(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_get_purpose(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/x509v3.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/x509v3.h index ed08a546f9813d..362ce3fb4387f7 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/x509v3.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/x509v3.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/x509v3.h.in * - * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -146,6 +149,11 @@ typedef struct BASIC_CONSTRAINTS_st { ASN1_INTEGER *pathlen; } BASIC_CONSTRAINTS; +typedef struct OSSL_BASIC_ATTR_CONSTRAINTS_st { + int authority; + ASN1_INTEGER *pathlen; +} OSSL_BASIC_ATTR_CONSTRAINTS; + typedef struct PKEY_USAGE_PERIOD_st { ASN1_GENERALIZEDTIME *notBefore; ASN1_GENERALIZEDTIME *notAfter; @@ -198,6 +206,8 @@ typedef struct ACCESS_DESCRIPTION_st { GENERAL_NAME *location; } ACCESS_DESCRIPTION; +int GENERAL_NAME_set1_X509_NAME(GENERAL_NAME **tgt, const X509_NAME *src); + SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) #define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) #define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) @@ -294,6 +304,7 @@ typedef struct DIST_POINT_NAME_st { /* If relativename then this contains the full distribution point name */ X509_NAME *dpname; } DIST_POINT_NAME; +DECLARE_ASN1_DUP_FUNCTION(DIST_POINT_NAME) /* All existing reasons */ # define CRLDP_ALL_REASONS 0x807f @@ -659,15 +670,16 @@ struct ISSUING_DIST_POINT_st { # define EXFLAG_SAN_CRITICAL 0x80000 # define EXFLAG_NO_FINGERPRINT 0x100000 -# define KU_DIGITAL_SIGNATURE 0x0080 -# define KU_NON_REPUDIATION 0x0040 -# define KU_KEY_ENCIPHERMENT 0x0020 -# define KU_DATA_ENCIPHERMENT 0x0010 -# define KU_KEY_AGREEMENT 0x0008 -# define KU_KEY_CERT_SIGN 0x0004 -# define KU_CRL_SIGN 0x0002 -# define KU_ENCIPHER_ONLY 0x0001 -# define KU_DECIPHER_ONLY 0x8000 +/* https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3 */ +# define KU_DIGITAL_SIGNATURE X509v3_KU_DIGITAL_SIGNATURE +# define KU_NON_REPUDIATION X509v3_KU_NON_REPUDIATION +# define KU_KEY_ENCIPHERMENT X509v3_KU_KEY_ENCIPHERMENT +# define KU_DATA_ENCIPHERMENT X509v3_KU_DATA_ENCIPHERMENT +# define KU_KEY_AGREEMENT X509v3_KU_KEY_AGREEMENT +# define KU_KEY_CERT_SIGN X509v3_KU_KEY_CERT_SIGN +# define KU_CRL_SIGN X509v3_KU_CRL_SIGN +# define KU_ENCIPHER_ONLY X509v3_KU_ENCIPHER_ONLY +# define KU_DECIPHER_ONLY X509v3_KU_DECIPHER_ONLY # define NS_SSL_CLIENT 0x80 # define NS_SSL_SERVER 0x40 @@ -729,7 +741,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) #define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) - +# define X509_PURPOSE_DEFAULT_ANY 0 # define X509_PURPOSE_SSL_CLIENT 1 # define X509_PURPOSE_SSL_SERVER 2 # define X509_PURPOSE_NS_SSL_SERVER 3 @@ -739,9 +751,10 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509_PURPOSE_ANY 7 # define X509_PURPOSE_OCSP_HELPER 8 # define X509_PURPOSE_TIMESTAMP_SIGN 9 +# define X509_PURPOSE_CODE_SIGN 10 # define X509_PURPOSE_MIN 1 -# define X509_PURPOSE_MAX 9 +# define X509_PURPOSE_MAX 10 /* Flags for X509V3_EXT_print() */ @@ -767,6 +780,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509V3_ADD_SILENT 0x10 DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) +DECLARE_ASN1_FUNCTIONS(OSSL_BASIC_ATTR_CONSTRAINTS) DECLARE_ASN1_FUNCTIONS(SXNET) DECLARE_ASN1_FUNCTIONS(SXNETID) @@ -976,7 +990,6 @@ int X509V3_extensions_print(BIO *out, const char *title, int X509_check_ca(X509 *x); int X509_check_purpose(X509 *x, int id, int ca); int X509_supported_extension(X509_EXTENSION *ex); -int X509_PURPOSE_set(int *p, int purpose); int X509_check_issued(X509 *issuer, X509 *subject); int X509_check_akid(const X509 *issuer, const AUTHORITY_KEYID *akid); void X509_set_proxy_flag(X509 *x); @@ -992,22 +1005,26 @@ const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); int X509_PURPOSE_get_count(void); -X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_unused_id(OSSL_LIB_CTX *libctx); int X509_PURPOSE_get_by_sname(const char *sname); int X509_PURPOSE_get_by_id(int id); int X509_PURPOSE_add(int id, int trust, int flags, int (*ck) (const X509_PURPOSE *, const X509 *, int), const char *name, const char *sname, void *arg); +void X509_PURPOSE_cleanup(void); + +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_id(const X509_PURPOSE *); char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); -void X509_PURPOSE_cleanup(void); -int X509_PURPOSE_get_id(const X509_PURPOSE *); +int X509_PURPOSE_set(int *p, int purpose); STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); + /* Flags for X509_check_* functions */ /* @@ -1444,6 +1461,507 @@ const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( void PROFESSION_INFO_set0_registrationNumber( PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); +int OSSL_GENERAL_NAMES_print(BIO *out, GENERAL_NAMES *gens, int indent); + +typedef STACK_OF(X509_ATTRIBUTE) OSSL_ATTRIBUTES_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTES_SYNTAX) + +typedef STACK_OF(USERNOTICE) OSSL_USER_NOTICE_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_USER_NOTICE_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(USERNOTICE, USERNOTICE, USERNOTICE) +#define sk_USERNOTICE_num(sk) OPENSSL_sk_num(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_value(sk, idx) ((USERNOTICE *)OPENSSL_sk_value(ossl_check_const_USERNOTICE_sk_type(sk), (idx))) +#define sk_USERNOTICE_new(cmp) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new(ossl_check_USERNOTICE_compfunc_type(cmp))) +#define sk_USERNOTICE_new_null() ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_null()) +#define sk_USERNOTICE_new_reserve(cmp, n) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_reserve(ossl_check_USERNOTICE_compfunc_type(cmp), (n))) +#define sk_USERNOTICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_USERNOTICE_sk_type(sk), (n)) +#define sk_USERNOTICE_free(sk) OPENSSL_sk_free(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_zero(sk) OPENSSL_sk_zero(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_delete(sk, i) ((USERNOTICE *)OPENSSL_sk_delete(ossl_check_USERNOTICE_sk_type(sk), (i))) +#define sk_USERNOTICE_delete_ptr(sk, ptr) ((USERNOTICE *)OPENSSL_sk_delete_ptr(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_pop(sk) ((USERNOTICE *)OPENSSL_sk_pop(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_shift(sk) ((USERNOTICE *)OPENSSL_sk_shift(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_USERNOTICE_sk_type(sk),ossl_check_USERNOTICE_freefunc_type(freefunc)) +#define sk_USERNOTICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), (idx)) +#define sk_USERNOTICE_set(sk, idx, ptr) ((USERNOTICE *)OPENSSL_sk_set(ossl_check_USERNOTICE_sk_type(sk), (idx), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), pnum) +#define sk_USERNOTICE_sort(sk) OPENSSL_sk_sort(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_dup(sk) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_dup(ossl_check_const_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_deep_copy(ossl_check_const_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_copyfunc_type(copyfunc), ossl_check_USERNOTICE_freefunc_type(freefunc))) +#define sk_USERNOTICE_set_cmp_func(sk, cmp) ((sk_USERNOTICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_compfunc_type(cmp))) + + +typedef struct OSSL_ROLE_SPEC_CERT_ID_st { + GENERAL_NAME *roleName; + GENERAL_NAME *roleCertIssuer; + ASN1_INTEGER *roleCertSerialNumber; + GENERAL_NAMES *roleCertLocator; +} OSSL_ROLE_SPEC_CERT_ID; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID) +#define sk_OSSL_ROLE_SPEC_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_value(sk, idx) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_value(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new(cmp) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_null() ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_reserve(cmp, n) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp), (n))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (n)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete(sk, i) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (i))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete_ptr(sk, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_pop(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_shift(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_shift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk),ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), (idx)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set(sk, idx, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_set(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), pnum) +#define sk_OSSL_ROLE_SPEC_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_dup(sk) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_copyfunc_type(copyfunc), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set_cmp_func(sk, cmp) ((sk_OSSL_ROLE_SPEC_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) + + +typedef STACK_OF(OSSL_ROLE_SPEC_CERT_ID) OSSL_ROLE_SPEC_CERT_ID_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID_SYNTAX) +typedef struct OSSL_HASH_st { + X509_ALGOR *algorithmIdentifier; + ASN1_BIT_STRING *hashValue; +} OSSL_HASH; + +typedef struct OSSL_INFO_SYNTAX_POINTER_st { + GENERAL_NAMES *name; + OSSL_HASH *hash; +} OSSL_INFO_SYNTAX_POINTER; + +# define OSSL_INFO_SYNTAX_TYPE_CONTENT 0 +# define OSSL_INFO_SYNTAX_TYPE_POINTER 1 + +typedef struct OSSL_INFO_SYNTAX_st { + int type; + union { + ASN1_STRING *content; + OSSL_INFO_SYNTAX_POINTER *pointer; + } choice; +} OSSL_INFO_SYNTAX; + +typedef struct OSSL_PRIVILEGE_POLICY_ID_st { + ASN1_OBJECT *privilegePolicy; + OSSL_INFO_SYNTAX *privPolSyntax; +} OSSL_PRIVILEGE_POLICY_ID; + +typedef struct OSSL_ATTRIBUTE_DESCRIPTOR_st { + ASN1_OBJECT *identifier; + ASN1_STRING *attributeSyntax; + ASN1_UTF8STRING *name; + ASN1_UTF8STRING *description; + OSSL_PRIVILEGE_POLICY_ID *dominationRule; +} OSSL_ATTRIBUTE_DESCRIPTOR; + +DECLARE_ASN1_FUNCTIONS(OSSL_HASH) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX_POINTER) +DECLARE_ASN1_FUNCTIONS(OSSL_PRIVILEGE_POLICY_ID) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_DESCRIPTOR) + +typedef struct OSSL_TIME_SPEC_ABSOLUTE_st { + ASN1_GENERALIZEDTIME *startTime; + ASN1_GENERALIZEDTIME *endTime; +} OSSL_TIME_SPEC_ABSOLUTE; + +typedef struct OSSL_DAY_TIME_st { + ASN1_INTEGER *hour; + ASN1_INTEGER *minute; + ASN1_INTEGER *second; +} OSSL_DAY_TIME; + +typedef struct OSSL_DAY_TIME_BAND_st { + OSSL_DAY_TIME *startDayTime; + OSSL_DAY_TIME *endDayTime; +} OSSL_DAY_TIME_BAND; + +# define OSSL_NAMED_DAY_TYPE_INT 0 +# define OSSL_NAMED_DAY_TYPE_BIT 1 +# define OSSL_NAMED_DAY_INT_SUN 1 +# define OSSL_NAMED_DAY_INT_MON 2 +# define OSSL_NAMED_DAY_INT_TUE 3 +# define OSSL_NAMED_DAY_INT_WED 4 +# define OSSL_NAMED_DAY_INT_THU 5 +# define OSSL_NAMED_DAY_INT_FRI 6 +# define OSSL_NAMED_DAY_INT_SAT 7 +# define OSSL_NAMED_DAY_BIT_SUN 0 +# define OSSL_NAMED_DAY_BIT_MON 1 +# define OSSL_NAMED_DAY_BIT_TUE 2 +# define OSSL_NAMED_DAY_BIT_WED 3 +# define OSSL_NAMED_DAY_BIT_THU 4 +# define OSSL_NAMED_DAY_BIT_FRI 5 +# define OSSL_NAMED_DAY_BIT_SAT 6 + +typedef struct OSSL_NAMED_DAY_st { + int type; + union { + ASN1_INTEGER *intNamedDays; + ASN1_BIT_STRING *bitNamedDays; + } choice; +} OSSL_NAMED_DAY; + +# define OSSL_TIME_SPEC_X_DAY_OF_FIRST 0 +# define OSSL_TIME_SPEC_X_DAY_OF_SECOND 1 +# define OSSL_TIME_SPEC_X_DAY_OF_THIRD 2 +# define OSSL_TIME_SPEC_X_DAY_OF_FOURTH 3 +# define OSSL_TIME_SPEC_X_DAY_OF_FIFTH 4 + +typedef struct OSSL_TIME_SPEC_X_DAY_OF_st { + int type; + union { + OSSL_NAMED_DAY *first; + OSSL_NAMED_DAY *second; + OSSL_NAMED_DAY *third; + OSSL_NAMED_DAY *fourth; + OSSL_NAMED_DAY *fifth; + } choice; +} OSSL_TIME_SPEC_X_DAY_OF; + +# define OSSL_TIME_SPEC_DAY_TYPE_INT 0 +# define OSSL_TIME_SPEC_DAY_TYPE_BIT 1 +# define OSSL_TIME_SPEC_DAY_TYPE_DAY_OF 2 +# define OSSL_TIME_SPEC_DAY_BIT_SUN 0 +# define OSSL_TIME_SPEC_DAY_BIT_MON 1 +# define OSSL_TIME_SPEC_DAY_BIT_TUE 2 +# define OSSL_TIME_SPEC_DAY_BIT_WED 3 +# define OSSL_TIME_SPEC_DAY_BIT_THU 4 +# define OSSL_TIME_SPEC_DAY_BIT_FRI 5 +# define OSSL_TIME_SPEC_DAY_BIT_SAT 6 +# define OSSL_TIME_SPEC_DAY_INT_SUN 1 +# define OSSL_TIME_SPEC_DAY_INT_MON 2 +# define OSSL_TIME_SPEC_DAY_INT_TUE 3 +# define OSSL_TIME_SPEC_DAY_INT_WED 4 +# define OSSL_TIME_SPEC_DAY_INT_THU 5 +# define OSSL_TIME_SPEC_DAY_INT_FRI 6 +# define OSSL_TIME_SPEC_DAY_INT_SAT 7 + +typedef struct OSSL_TIME_SPEC_DAY_st { + int type; + union { + STACK_OF(ASN1_INTEGER) *intDay; + ASN1_BIT_STRING *bitDay; + OSSL_TIME_SPEC_X_DAY_OF *dayOf; + } choice; +} OSSL_TIME_SPEC_DAY; + +# define OSSL_TIME_SPEC_WEEKS_TYPE_ALL 0 +# define OSSL_TIME_SPEC_WEEKS_TYPE_INT 1 +# define OSSL_TIME_SPEC_WEEKS_TYPE_BIT 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_1 0 +# define OSSL_TIME_SPEC_BIT_WEEKS_2 1 +# define OSSL_TIME_SPEC_BIT_WEEKS_3 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_4 3 +# define OSSL_TIME_SPEC_BIT_WEEKS_5 4 + +typedef struct OSSL_TIME_SPEC_WEEKS_st { + int type; + union { + ASN1_NULL *allWeeks; + STACK_OF(ASN1_INTEGER) *intWeek; + ASN1_BIT_STRING *bitWeek; + } choice; +} OSSL_TIME_SPEC_WEEKS; + +# define OSSL_TIME_SPEC_MONTH_TYPE_ALL 0 +# define OSSL_TIME_SPEC_MONTH_TYPE_INT 1 +# define OSSL_TIME_SPEC_MONTH_TYPE_BIT 2 +# define OSSL_TIME_SPEC_INT_MONTH_JAN 1 +# define OSSL_TIME_SPEC_INT_MONTH_FEB 2 +# define OSSL_TIME_SPEC_INT_MONTH_MAR 3 +# define OSSL_TIME_SPEC_INT_MONTH_APR 4 +# define OSSL_TIME_SPEC_INT_MONTH_MAY 5 +# define OSSL_TIME_SPEC_INT_MONTH_JUN 6 +# define OSSL_TIME_SPEC_INT_MONTH_JUL 7 +# define OSSL_TIME_SPEC_INT_MONTH_AUG 8 +# define OSSL_TIME_SPEC_INT_MONTH_SEP 9 +# define OSSL_TIME_SPEC_INT_MONTH_OCT 10 +# define OSSL_TIME_SPEC_INT_MONTH_NOV 11 +# define OSSL_TIME_SPEC_INT_MONTH_DEC 12 +# define OSSL_TIME_SPEC_BIT_MONTH_JAN 0 +# define OSSL_TIME_SPEC_BIT_MONTH_FEB 1 +# define OSSL_TIME_SPEC_BIT_MONTH_MAR 2 +# define OSSL_TIME_SPEC_BIT_MONTH_APR 3 +# define OSSL_TIME_SPEC_BIT_MONTH_MAY 4 +# define OSSL_TIME_SPEC_BIT_MONTH_JUN 5 +# define OSSL_TIME_SPEC_BIT_MONTH_JUL 6 +# define OSSL_TIME_SPEC_BIT_MONTH_AUG 7 +# define OSSL_TIME_SPEC_BIT_MONTH_SEP 8 +# define OSSL_TIME_SPEC_BIT_MONTH_OCT 9 +# define OSSL_TIME_SPEC_BIT_MONTH_NOV 10 +# define OSSL_TIME_SPEC_BIT_MONTH_DEC 11 + +typedef struct OSSL_TIME_SPEC_MONTH_st { + int type; + union { + ASN1_NULL *allMonths; + STACK_OF(ASN1_INTEGER) *intMonth; + ASN1_BIT_STRING *bitMonth; + } choice; +} OSSL_TIME_SPEC_MONTH; + +typedef struct OSSL_TIME_PERIOD_st { + STACK_OF(OSSL_DAY_TIME_BAND) *timesOfDay; + OSSL_TIME_SPEC_DAY *days; + OSSL_TIME_SPEC_WEEKS *weeks; + OSSL_TIME_SPEC_MONTH *months; + STACK_OF(ASN1_INTEGER) *years; +} OSSL_TIME_PERIOD; + +# define OSSL_TIME_SPEC_TIME_TYPE_ABSOLUTE 0 +# define OSSL_TIME_SPEC_TIME_TYPE_PERIODIC 1 + +typedef struct OSSL_TIME_SPEC_TIME_st { + int type; + union { + OSSL_TIME_SPEC_ABSOLUTE *absolute; + STACK_OF(OSSL_TIME_PERIOD) *periodic; + } choice; +} OSSL_TIME_SPEC_TIME; + +typedef struct OSSL_TIME_SPEC_st { + OSSL_TIME_SPEC_TIME *time; + ASN1_BOOLEAN notThisTime; + ASN1_INTEGER *timeZone; +} OSSL_TIME_SPEC; + +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME_BAND) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_WEEKS) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_MONTH) +DECLARE_ASN1_FUNCTIONS(OSSL_NAMED_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_X_DAY_OF) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_ABSOLUTE) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_PERIOD) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TIME_PERIOD, OSSL_TIME_PERIOD, OSSL_TIME_PERIOD) +#define sk_OSSL_TIME_PERIOD_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_value(sk, idx) ((OSSL_TIME_PERIOD *)OPENSSL_sk_value(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), (idx))) +#define sk_OSSL_TIME_PERIOD_new(cmp) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) +#define sk_OSSL_TIME_PERIOD_new_null() ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TIME_PERIOD_new_reserve(cmp, n) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp), (n))) +#define sk_OSSL_TIME_PERIOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (n)) +#define sk_OSSL_TIME_PERIOD_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_delete(sk, i) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (i))) +#define sk_OSSL_TIME_PERIOD_delete_ptr(sk, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_pop(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_pop(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_shift(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_shift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk),ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc)) +#define sk_OSSL_TIME_PERIOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), (idx)) +#define sk_OSSL_TIME_PERIOD_set(sk, idx, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_set(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (idx), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), pnum) +#define sk_OSSL_TIME_PERIOD_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_dup(sk) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_copyfunc_type(copyfunc), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc))) +#define sk_OSSL_TIME_PERIOD_set_cmp_func(sk, cmp) ((sk_OSSL_TIME_PERIOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND) +#define sk_OSSL_DAY_TIME_BAND_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_value(sk, idx) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_value(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), (idx))) +#define sk_OSSL_DAY_TIME_BAND_new(cmp) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) +#define sk_OSSL_DAY_TIME_BAND_new_null() ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_null()) +#define sk_OSSL_DAY_TIME_BAND_new_reserve(cmp, n) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp), (n))) +#define sk_OSSL_DAY_TIME_BAND_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (n)) +#define sk_OSSL_DAY_TIME_BAND_free(sk) OPENSSL_sk_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_delete(sk, i) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (i))) +#define sk_OSSL_DAY_TIME_BAND_delete_ptr(sk, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_pop(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_pop(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_shift(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_shift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk),ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc)) +#define sk_OSSL_DAY_TIME_BAND_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), (idx)) +#define sk_OSSL_DAY_TIME_BAND_set(sk, idx, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_set(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (idx), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), pnum) +#define sk_OSSL_DAY_TIME_BAND_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_dup(sk) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_dup(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_copyfunc_type(copyfunc), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc))) +#define sk_OSSL_DAY_TIME_BAND_set_cmp_func(sk, cmp) ((sk_OSSL_DAY_TIME_BAND_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) + + +/* Attribute Type and Value */ +typedef struct atav_st { + ASN1_OBJECT *type; + ASN1_TYPE *value; +} OSSL_ATAV; + +typedef struct ATTRIBUTE_TYPE_MAPPING_st { + ASN1_OBJECT *local; + ASN1_OBJECT *remote; +} OSSL_ATTRIBUTE_TYPE_MAPPING; + +typedef struct ATTRIBUTE_VALUE_MAPPING_st { + OSSL_ATAV *local; + OSSL_ATAV *remote; +} OSSL_ATTRIBUTE_VALUE_MAPPING; + +# define OSSL_ATTR_MAP_TYPE 0 +# define OSSL_ATTR_MAP_VALUE 1 + +typedef struct ATTRIBUTE_MAPPING_st { + int type; + union { + OSSL_ATTRIBUTE_TYPE_MAPPING *typeMappings; + OSSL_ATTRIBUTE_VALUE_MAPPING *typeValueMappings; + } choice; +} OSSL_ATTRIBUTE_MAPPING; + +typedef STACK_OF(OSSL_ATTRIBUTE_MAPPING) OSSL_ATTRIBUTE_MAPPINGS; +DECLARE_ASN1_FUNCTIONS(OSSL_ATAV) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_TYPE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_VALUE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPINGS) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING) +#define sk_OSSL_ATTRIBUTE_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_value(sk, idx) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_value(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new(cmp) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_null() ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_reserve(cmp, n) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp), (n))) +#define sk_OSSL_ATTRIBUTE_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (n)) +#define sk_OSSL_ATTRIBUTE_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete(sk, i) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (i))) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete_ptr(sk, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_pop(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_shift(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_shift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk),ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc)) +#define sk_OSSL_ATTRIBUTE_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), (idx)) +#define sk_OSSL_ATTRIBUTE_MAPPING_set(sk, idx, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_set(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), pnum) +#define sk_OSSL_ATTRIBUTE_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_dup(sk) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_copyfunc_type(copyfunc), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc))) +#define sk_OSSL_ATTRIBUTE_MAPPING_set_cmp_func(sk, cmp) ((sk_OSSL_ATTRIBUTE_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) + + +# define OSSL_AAA_ATTRIBUTE_TYPE 0 +# define OSSL_AAA_ATTRIBUTE_VALUES 1 + +typedef struct ALLOWED_ATTRIBUTES_CHOICE_st { + int type; + union { + ASN1_OBJECT *attributeType; + X509_ATTRIBUTE *attributeTypeandValues; + } choice; +} OSSL_ALLOWED_ATTRIBUTES_CHOICE; + +typedef struct ALLOWED_ATTRIBUTES_ITEM_st { + STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *attributes; + GENERAL_NAME *holderDomain; +} OSSL_ALLOWED_ATTRIBUTES_ITEM; + +typedef STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) OSSL_ALLOWED_ATTRIBUTES_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_CHOICE) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_ITEM) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) + + +typedef struct AA_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + int dp_reasons; + ASN1_BOOLEAN indirectCRL; + ASN1_BOOLEAN containsUserAttributeCerts; + ASN1_BOOLEAN containsAACerts; + ASN1_BOOLEAN containsSOAPublicKeyCerts; +} OSSL_AA_DIST_POINT; + +DECLARE_ASN1_FUNCTIONS(OSSL_AA_DIST_POINT) + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/progs.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/progs.h index be55f61503d405..1b62ec37dec130 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/include/progs.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/progs.h @@ -56,6 +56,7 @@ extern int s_client_main(int argc, char *argv[]); extern int s_server_main(int argc, char *argv[]); extern int s_time_main(int argc, char *argv[]); extern int sess_id_main(int argc, char *argv[]); +extern int skeyutl_main(int argc, char *argv[]); extern int smime_main(int argc, char *argv[]); extern int speed_main(int argc, char *argv[]); extern int spkac_main(int argc, char *argv[]); @@ -110,6 +111,7 @@ extern const OPTIONS s_client_options[]; extern const OPTIONS s_server_options[]; extern const OPTIONS s_time_options[]; extern const OPTIONS sess_id_options[]; +extern const OPTIONS skeyutl_options[]; extern const OPTIONS smime_options[]; extern const OPTIONS speed_options[]; extern const OPTIONS spkac_options[]; diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/openssl-cl.gypi b/deps/openssl/config/archs/VC-WIN32/no-asm/openssl-cl.gypi index fc1d31c43e9f5a..530319ee1e2e35 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/openssl-cl.gypi +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/openssl-cl.gypi @@ -66,6 +66,7 @@ 'openssl/apps/s_server.c', 'openssl/apps/s_time.c', 'openssl/apps/sess_id.c', + 'openssl/apps/skeyutl.c', 'openssl/apps/smime.c', 'openssl/apps/speed.c', 'openssl/apps/spkac.c', @@ -81,12 +82,14 @@ 'openssl/apps/lib/app_rand.c', 'openssl/apps/lib/app_x509.c', 'openssl/apps/lib/apps.c', + 'openssl/apps/lib/apps_opt_printf.c', 'openssl/apps/lib/apps_ui.c', 'openssl/apps/lib/columns.c', 'openssl/apps/lib/engine.c', 'openssl/apps/lib/engine_loader.c', 'openssl/apps/lib/fmt.c', 'openssl/apps/lib/http_server.c', + 'openssl/apps/lib/log.c', 'openssl/apps/lib/names.c', 'openssl/apps/lib/opt.c', 'openssl/apps/lib/s_cb.c', diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/openssl-fips.gypi b/deps/openssl/config/archs/VC-WIN32/no-asm/openssl-fips.gypi index 603ad27f9be83d..1bfd7c4a4e246d 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/openssl-fips.gypi +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/openssl-fips.gypi @@ -100,14 +100,15 @@ 'openssl/crypto/evp/kem.c', 'openssl/crypto/evp/keymgmt_lib.c', 'openssl/crypto/evp/keymgmt_meth.c', - 'openssl/crypto/evp/m_sigver.c', 'openssl/crypto/evp/mac_lib.c', 'openssl/crypto/evp/mac_meth.c', 'openssl/crypto/evp/p_lib.c', 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -115,6 +116,8 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', @@ -145,6 +148,16 @@ 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -153,6 +166,7 @@ 'openssl/crypto/modes/ofb128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/property/defn_cache.c', 'openssl/crypto/property/property.c', 'openssl/crypto/property/property_parse.c', @@ -181,7 +195,23 @@ 'openssl/crypto/sha/sha256.c', 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/stack/stack.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/providers/common/der/der_rsa_sig.c', 'openssl/providers/common/bio_prov.c', 'openssl/providers/common/capabilities.c', @@ -190,6 +220,7 @@ 'openssl/providers/common/provider_util.c', 'openssl/providers/common/securitycheck.c', 'openssl/providers/common/securitycheck_fips.c', + 'openssl/providers/fips/fipsindicator.c', 'openssl/providers/fips/fipsprov.c', 'openssl/providers/fips/self_test.c', 'openssl/providers/fips/self_test_kats.c', @@ -227,6 +258,8 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -234,29 +267,39 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/cmac_prov.c', 'openssl/providers/implementations/macs/gmac_prov.c', 'openssl/providers/implementations/macs/hmac_prov.c', 'openssl/providers/implementations/macs/kmac_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', + 'openssl/providers/implementations/rands/fips_crng_test.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/signature/dsa_sig.c', 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -267,17 +310,20 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/fips/fips_entry.c', ], 'openssl_sources_VC-WIN32': [ + './config/archs/VC-WIN32/no-asm/crypto/params_idx.c', './config/archs/VC-WIN32/no-asm/providers/common/der/der_sm2_gen.c', './config/archs/VC-WIN32/no-asm/providers/common/der/der_digests_gen.c', './config/archs/VC-WIN32/no-asm/providers/common/der/der_dsa_gen.c', './config/archs/VC-WIN32/no-asm/providers/common/der/der_ec_gen.c', './config/archs/VC-WIN32/no-asm/providers/common/der/der_ecx_gen.c', + './config/archs/VC-WIN32/no-asm/providers/common/der/der_ml_dsa_gen.c', './config/archs/VC-WIN32/no-asm/providers/common/der/der_rsa_gen.c', + './config/archs/VC-WIN32/no-asm/providers/common/der/der_slh_dsa_gen.c', './config/archs/VC-WIN32/no-asm/providers/common/der/der_wrap_gen.c', ], diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/openssl.gypi b/deps/openssl/config/archs/VC-WIN32/no-asm/openssl.gypi index 72b9b35f5e11f5..2cd177674514a8 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/openssl.gypi +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/openssl.gypi @@ -7,14 +7,15 @@ 'openssl/ssl/d1_srtp.c', 'openssl/ssl/methods.c', 'openssl/ssl/pqueue.c', + 'openssl/ssl/priority_queue.c', 'openssl/ssl/s3_enc.c', 'openssl/ssl/s3_lib.c', 'openssl/ssl/s3_msg.c', 'openssl/ssl/ssl_asn1.c', 'openssl/ssl/ssl_cert.c', + 'openssl/ssl/ssl_cert_comp.c', 'openssl/ssl/ssl_ciph.c', 'openssl/ssl/ssl_conf.c', - 'openssl/ssl/ssl_err.c', 'openssl/ssl/ssl_err_legacy.c', 'openssl/ssl/ssl_init.c', 'openssl/ssl/ssl_lib.c', @@ -31,12 +32,60 @@ 'openssl/ssl/tls13_enc.c', 'openssl/ssl/tls_depr.c', 'openssl/ssl/tls_srp.c', - 'openssl/ssl/record/dtls1_bitmap.c', + 'openssl/ssl/quic/cc_newreno.c', + 'openssl/ssl/quic/json_enc.c', + 'openssl/ssl/quic/qlog.c', + 'openssl/ssl/quic/qlog_event_helpers.c', + 'openssl/ssl/quic/quic_ackm.c', + 'openssl/ssl/quic/quic_cfq.c', + 'openssl/ssl/quic/quic_channel.c', + 'openssl/ssl/quic/quic_demux.c', + 'openssl/ssl/quic/quic_engine.c', + 'openssl/ssl/quic/quic_fc.c', + 'openssl/ssl/quic/quic_fifd.c', + 'openssl/ssl/quic/quic_impl.c', + 'openssl/ssl/quic/quic_lcidm.c', + 'openssl/ssl/quic/quic_method.c', + 'openssl/ssl/quic/quic_obj.c', + 'openssl/ssl/quic/quic_port.c', + 'openssl/ssl/quic/quic_rcidm.c', + 'openssl/ssl/quic/quic_reactor.c', + 'openssl/ssl/quic/quic_reactor_wait_ctx.c', + 'openssl/ssl/quic/quic_record_rx.c', + 'openssl/ssl/quic/quic_record_shared.c', + 'openssl/ssl/quic/quic_record_tx.c', + 'openssl/ssl/quic/quic_record_util.c', + 'openssl/ssl/quic/quic_rstream.c', + 'openssl/ssl/quic/quic_rx_depack.c', + 'openssl/ssl/quic/quic_sf_list.c', + 'openssl/ssl/quic/quic_srt_gen.c', + 'openssl/ssl/quic/quic_srtm.c', + 'openssl/ssl/quic/quic_sstream.c', + 'openssl/ssl/quic/quic_statm.c', + 'openssl/ssl/quic/quic_stream_map.c', + 'openssl/ssl/quic/quic_thread_assist.c', + 'openssl/ssl/quic/quic_tls.c', + 'openssl/ssl/quic/quic_tls_api.c', + 'openssl/ssl/quic/quic_trace.c', + 'openssl/ssl/quic/quic_tserver.c', + 'openssl/ssl/quic/quic_txp.c', + 'openssl/ssl/quic/quic_txpim.c', + 'openssl/ssl/quic/quic_types.c', + 'openssl/ssl/quic/quic_wire.c', + 'openssl/ssl/quic/quic_wire_pkt.c', + 'openssl/ssl/quic/uint_set.c', 'openssl/ssl/record/rec_layer_d1.c', 'openssl/ssl/record/rec_layer_s3.c', - 'openssl/ssl/record/ssl3_buffer.c', - 'openssl/ssl/record/ssl3_record.c', - 'openssl/ssl/record/ssl3_record_tls13.c', + 'openssl/ssl/record/methods/dtls_meth.c', + 'openssl/ssl/record/methods/ssl3_meth.c', + 'openssl/ssl/record/methods/tls13_meth.c', + 'openssl/ssl/record/methods/tls1_meth.c', + 'openssl/ssl/record/methods/tls_common.c', + 'openssl/ssl/record/methods/tls_multib.c', + 'openssl/ssl/record/methods/tlsany_meth.c', + 'openssl/ssl/rio/poll_builder.c', + 'openssl/ssl/rio/poll_immediate.c', + 'openssl/ssl/rio/rio_notifier.c', 'openssl/ssl/statem/extensions.c', 'openssl/ssl/statem/extensions_clnt.c', 'openssl/ssl/statem/extensions_cust.c', @@ -150,6 +199,7 @@ 'openssl/crypto/bio/bss_conn.c', 'openssl/crypto/bio/bss_core.c', 'openssl/crypto/bio/bss_dgram.c', + 'openssl/crypto/bio/bss_dgram_pair.c', 'openssl/crypto/bio/bss_fd.c', 'openssl/crypto/bio/bss_file.c', 'openssl/crypto/bio/bss_log.c', @@ -210,6 +260,7 @@ 'openssl/crypto/cmp/cmp_client.c', 'openssl/crypto/cmp/cmp_ctx.c', 'openssl/crypto/cmp/cmp_err.c', + 'openssl/crypto/cmp/cmp_genm.c', 'openssl/crypto/cmp/cmp_hdr.c', 'openssl/crypto/cmp/cmp_http.c', 'openssl/crypto/cmp/cmp_msg.c', @@ -385,7 +436,9 @@ 'openssl/crypto/err/err_all.c', 'openssl/crypto/err/err_all_legacy.c', 'openssl/crypto/err/err_blocks.c', + 'openssl/crypto/err/err_mark.c', 'openssl/crypto/err/err_prn.c', + 'openssl/crypto/err/err_save.c', 'openssl/crypto/ess/ess_asn1.c', 'openssl/crypto/ess/ess_err.c', 'openssl/crypto/ess/ess_lib.c', @@ -468,7 +521,9 @@ 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -476,7 +531,11 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', + 'openssl/crypto/hpke/hpke.c', + 'openssl/crypto/hpke/hpke_util.c', 'openssl/crypto/http/http_client.c', 'openssl/crypto/http/http_err.c', 'openssl/crypto/http/http_lib.c', @@ -490,6 +549,7 @@ 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', 'openssl/crypto/bsearch.c', + 'openssl/crypto/comp_methods.c', 'openssl/crypto/context.c', 'openssl/crypto/core_algorithm.c', 'openssl/crypto/core_fetch.c', @@ -499,10 +559,13 @@ 'openssl/crypto/cryptlib.c', 'openssl/crypto/ctype.c', 'openssl/crypto/cversion.c', + 'openssl/crypto/defaults.c', 'openssl/crypto/der_writer.c', + 'openssl/crypto/deterministic_nonce.c', 'openssl/crypto/ebcdic.c', 'openssl/crypto/ex_data.c', 'openssl/crypto/getenv.c', + 'openssl/crypto/indicator_core.c', 'openssl/crypto/info.c', 'openssl/crypto/init.c', 'openssl/crypto/initthread.c', @@ -527,12 +590,16 @@ 'openssl/crypto/provider_core.c', 'openssl/crypto/provider_predefined.c', 'openssl/crypto/punycode.c', + 'openssl/crypto/quic_vlint.c', 'openssl/crypto/self_test_core.c', + 'openssl/crypto/sleep.c', 'openssl/crypto/sparse_array.c', + 'openssl/crypto/ssl_err.c', 'openssl/crypto/threads_lib.c', 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', 'openssl/crypto/trace.c', 'openssl/crypto/uid.c', 'openssl/crypto/md4/md4_dgst.c', @@ -542,6 +609,15 @@ 'openssl/crypto/md5/md5_sha1.c', 'openssl/crypto/mdc2/mdc2_one.c', 'openssl/crypto/mdc2/mdc2dgst.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -553,6 +629,7 @@ 'openssl/crypto/modes/siv128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/objects/o_names.c', 'openssl/crypto/objects/obj_dat.c', 'openssl/crypto/objects/obj_err.c', @@ -616,6 +693,7 @@ 'openssl/crypto/rand/rand_lib.c', 'openssl/crypto/rand/rand_meth.c', 'openssl/crypto/rand/rand_pool.c', + 'openssl/crypto/rand/rand_uniform.c', 'openssl/crypto/rand/randfile.c', 'openssl/crypto/rc2/rc2_cbc.c', 'openssl/crypto/rc2/rc2_ecb.c', @@ -664,6 +742,16 @@ 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', 'openssl/crypto/siphash/siphash.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/sm2/sm2_crypt.c', 'openssl/crypto/sm2/sm2_err.c', 'openssl/crypto/sm2/sm2_key.c', @@ -681,6 +769,12 @@ 'openssl/crypto/store/store_register.c', 'openssl/crypto/store/store_result.c', 'openssl/crypto/store/store_strings.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/crypto/ts/ts_asn1.c', 'openssl/crypto/ts/ts_conf.c', 'openssl/crypto/ts/ts_err.c', @@ -709,14 +803,22 @@ 'openssl/crypto/x509/pcy_map.c', 'openssl/crypto/x509/pcy_node.c', 'openssl/crypto/x509/pcy_tree.c', + 'openssl/crypto/x509/t_acert.c', 'openssl/crypto/x509/t_crl.c', 'openssl/crypto/x509/t_req.c', 'openssl/crypto/x509/t_x509.c', + 'openssl/crypto/x509/v3_aaa.c', + 'openssl/crypto/x509/v3_ac_tgt.c', 'openssl/crypto/x509/v3_addr.c', 'openssl/crypto/x509/v3_admis.c', 'openssl/crypto/x509/v3_akeya.c', 'openssl/crypto/x509/v3_akid.c', 'openssl/crypto/x509/v3_asid.c', + 'openssl/crypto/x509/v3_attrdesc.c', + 'openssl/crypto/x509/v3_attrmap.c', + 'openssl/crypto/x509/v3_audit_id.c', + 'openssl/crypto/x509/v3_authattid.c', + 'openssl/crypto/x509/v3_battcons.c', 'openssl/crypto/x509/v3_bcons.c', 'openssl/crypto/x509/v3_bitst.c', 'openssl/crypto/x509/v3_conf.c', @@ -725,12 +827,17 @@ 'openssl/crypto/x509/v3_enum.c', 'openssl/crypto/x509/v3_extku.c', 'openssl/crypto/x509/v3_genn.c', + 'openssl/crypto/x509/v3_group_ac.c', 'openssl/crypto/x509/v3_ia5.c', + 'openssl/crypto/x509/v3_ind_iss.c', 'openssl/crypto/x509/v3_info.c', 'openssl/crypto/x509/v3_int.c', + 'openssl/crypto/x509/v3_iobo.c', 'openssl/crypto/x509/v3_ist.c', 'openssl/crypto/x509/v3_lib.c', 'openssl/crypto/x509/v3_ncons.c', + 'openssl/crypto/x509/v3_no_ass.c', + 'openssl/crypto/x509/v3_no_rev_avail.c', 'openssl/crypto/x509/v3_pci.c', 'openssl/crypto/x509/v3_pcia.c', 'openssl/crypto/x509/v3_pcons.c', @@ -738,13 +845,20 @@ 'openssl/crypto/x509/v3_pmaps.c', 'openssl/crypto/x509/v3_prn.c', 'openssl/crypto/x509/v3_purp.c', + 'openssl/crypto/x509/v3_rolespec.c', 'openssl/crypto/x509/v3_san.c', + 'openssl/crypto/x509/v3_sda.c', + 'openssl/crypto/x509/v3_single_use.c', 'openssl/crypto/x509/v3_skid.c', + 'openssl/crypto/x509/v3_soa_id.c', 'openssl/crypto/x509/v3_sxnet.c', + 'openssl/crypto/x509/v3_timespec.c', 'openssl/crypto/x509/v3_tlsf.c', + 'openssl/crypto/x509/v3_usernotice.c', 'openssl/crypto/x509/v3_utf8.c', 'openssl/crypto/x509/v3_utl.c', 'openssl/crypto/x509/v3err.c', + 'openssl/crypto/x509/x509_acert.c', 'openssl/crypto/x509/x509_att.c', 'openssl/crypto/x509/x509_cmp.c', 'openssl/crypto/x509/x509_d2.c', @@ -762,6 +876,7 @@ 'openssl/crypto/x509/x509_v3.c', 'openssl/crypto/x509/x509_vfy.c', 'openssl/crypto/x509/x509_vpm.c', + 'openssl/crypto/x509/x509aset.c', 'openssl/crypto/x509/x509cset.c', 'openssl/crypto/x509/x509name.c', 'openssl/crypto/x509/x509rset.c', @@ -771,6 +886,7 @@ 'openssl/crypto/x509/x_attrib.c', 'openssl/crypto/x509/x_crl.c', 'openssl/crypto/x509/x_exten.c', + 'openssl/crypto/x509/x_ietfatt.c', 'openssl/crypto/x509/x_name.c', 'openssl/crypto/x509/x_pubkey.c', 'openssl/crypto/x509/x_req.c', @@ -802,6 +918,9 @@ 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c', 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', @@ -826,7 +945,13 @@ 'openssl/providers/implementations/ciphers/cipher_cts.c', 'openssl/providers/implementations/ciphers/cipher_null.c', 'openssl/providers/implementations/ciphers/cipher_sm4.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm_hw.c', 'openssl/providers/implementations/ciphers/cipher_sm4_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts_hw.c', 'openssl/providers/implementations/ciphers/cipher_tdes.c', 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', 'openssl/providers/implementations/ciphers/cipher_tdes_default.c', @@ -855,11 +980,16 @@ 'openssl/providers/implementations/encode_decode/encode_key2ms.c', 'openssl/providers/implementations/encode_decode/encode_key2text.c', 'openssl/providers/implementations/encode_decode/endecoder_common.c', + 'openssl/providers/implementations/encode_decode/ml_common_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_dsa_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_kem_codecs.c', 'openssl/providers/implementations/exchange/dh_exch.c', 'openssl/providers/implementations/exchange/ecdh_exch.c', 'openssl/providers/implementations/exchange/ecx_exch.c', 'openssl/providers/implementations/exchange/kdf_exch.c', + 'openssl/providers/implementations/kdfs/argon2.c', 'openssl/providers/implementations/kdfs/hkdf.c', + 'openssl/providers/implementations/kdfs/hmacdrbg_kdf.c', 'openssl/providers/implementations/kdfs/kbkdf.c', 'openssl/providers/implementations/kdfs/krb5kdf.c', 'openssl/providers/implementations/kdfs/pbkdf2.c', @@ -870,6 +1000,11 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ec_kem.c', + 'openssl/providers/implementations/kem/ecx_kem.c', + 'openssl/providers/implementations/kem/kem_util.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -877,7 +1012,11 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/blake2b_mac.c', 'openssl/providers/implementations/macs/blake2s_mac.c', 'openssl/providers/implementations/macs/cmac_prov.c', @@ -886,12 +1025,12 @@ 'openssl/providers/implementations/macs/kmac_prov.c', 'openssl/providers/implementations/macs/poly1305_prov.c', 'openssl/providers/implementations/macs/siphash_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', 'openssl/providers/implementations/rands/seed_src.c', + 'openssl/providers/implementations/rands/seed_src_jitter.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/rands/seeding/rand_cpu_x86.c', 'openssl/providers/implementations/rands/seeding/rand_tsc.c', @@ -901,17 +1040,24 @@ 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', 'openssl/providers/implementations/signature/sm2_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', 'openssl/providers/implementations/storemgmt/file_store.c', 'openssl/providers/implementations/storemgmt/file_store_any2obj.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/providers/implementations/storemgmt/winstore_store.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -922,7 +1068,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/implementations/ciphers/cipher_blowfish.c', 'openssl/providers/implementations/ciphers/cipher_blowfish_hw.c', 'openssl/providers/implementations/ciphers/cipher_cast5.c', @@ -947,16 +1093,20 @@ 'openssl/providers/implementations/digests/ripemd_prov.c', 'openssl/providers/implementations/digests/wp_prov.c', 'openssl/providers/implementations/kdfs/pbkdf1.c', + 'openssl/providers/implementations/kdfs/pvkkdf.c', 'openssl/providers/prov_running.c', 'openssl/providers/legacyprov.c', ], 'openssl_sources_VC-WIN32': [ + './config/archs/VC-WIN32/no-asm/crypto/params_idx.c', './config/archs/VC-WIN32/no-asm/providers/common/der/der_sm2_gen.c', './config/archs/VC-WIN32/no-asm/providers/common/der/der_digests_gen.c', './config/archs/VC-WIN32/no-asm/providers/common/der/der_dsa_gen.c', './config/archs/VC-WIN32/no-asm/providers/common/der/der_ec_gen.c', './config/archs/VC-WIN32/no-asm/providers/common/der/der_ecx_gen.c', + './config/archs/VC-WIN32/no-asm/providers/common/der/der_ml_dsa_gen.c', './config/archs/VC-WIN32/no-asm/providers/common/der/der_rsa_gen.c', + './config/archs/VC-WIN32/no-asm/providers/common/der/der_slh_dsa_gen.c', './config/archs/VC-WIN32/no-asm/providers/common/der/der_wrap_gen.c', ], 'openssl_defines_VC-WIN32': [ diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/providers/common/der/der_ml_dsa_gen.c b/deps/openssl/config/archs/VC-WIN32/no-asm/providers/common/der/der_ml_dsa_gen.c new file mode 100644 index 00000000000000..4a8a113a268578 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/providers/common/der/der_ml_dsa_gen.c @@ -0,0 +1,37 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_ml_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44] = { + DER_OID_V_id_ml_dsa_44 +}; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65] = { + DER_OID_V_id_ml_dsa_65 +}; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87] = { + DER_OID_V_id_ml_dsa_87 +}; + diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/providers/common/der/der_slh_dsa_gen.c b/deps/openssl/config/archs/VC-WIN32/no-asm/providers/common/der/der_slh_dsa_gen.c new file mode 100644 index 00000000000000..1419a9515097dd --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/providers/common/der/der_slh_dsa_gen.c @@ -0,0 +1,100 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_slh_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s] = { + DER_OID_V_id_slh_dsa_sha2_128s +}; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f] = { + DER_OID_V_id_slh_dsa_sha2_128f +}; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s] = { + DER_OID_V_id_slh_dsa_sha2_192s +}; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f] = { + DER_OID_V_id_slh_dsa_sha2_192f +}; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s] = { + DER_OID_V_id_slh_dsa_sha2_256s +}; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f] = { + DER_OID_V_id_slh_dsa_sha2_256f +}; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s] = { + DER_OID_V_id_slh_dsa_shake_128s +}; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f] = { + DER_OID_V_id_slh_dsa_shake_128f +}; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s] = { + DER_OID_V_id_slh_dsa_shake_192s +}; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f] = { + DER_OID_V_id_slh_dsa_shake_192f +}; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s] = { + DER_OID_V_id_slh_dsa_shake_256s +}; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f] = { + DER_OID_V_id_slh_dsa_shake_256f +}; + diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/providers/common/include/prov/der_ml_dsa.h b/deps/openssl/config/archs/VC-WIN32/no-asm/providers/common/include/prov/der_ml_dsa.h new file mode 100644 index 00000000000000..c55f780ab4527c --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/providers/common/include/prov/der_ml_dsa.h @@ -0,0 +1,40 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_ml_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +#define DER_OID_V_id_ml_dsa_44 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x11 +#define DER_OID_SZ_id_ml_dsa_44 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44]; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +#define DER_OID_V_id_ml_dsa_65 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x12 +#define DER_OID_SZ_id_ml_dsa_65 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65]; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +#define DER_OID_V_id_ml_dsa_87 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x13 +#define DER_OID_SZ_id_ml_dsa_87 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87]; + + +int ossl_DER_w_algorithmIdentifier_ML_DSA(WPACKET *pkt, int tag, ML_DSA_KEY *key); diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/providers/common/include/prov/der_slh_dsa.h b/deps/openssl/config/archs/VC-WIN32/no-asm/providers/common/include/prov/der_slh_dsa.h new file mode 100644 index 00000000000000..760f8e7699be72 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/providers/common/include/prov/der_slh_dsa.h @@ -0,0 +1,103 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_slh_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x14 +#define DER_OID_SZ_id_slh_dsa_sha2_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s]; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x15 +#define DER_OID_SZ_id_slh_dsa_sha2_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f]; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x16 +#define DER_OID_SZ_id_slh_dsa_sha2_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s]; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x17 +#define DER_OID_SZ_id_slh_dsa_sha2_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f]; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x18 +#define DER_OID_SZ_id_slh_dsa_sha2_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s]; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x19 +#define DER_OID_SZ_id_slh_dsa_sha2_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f]; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +#define DER_OID_V_id_slh_dsa_shake_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1A +#define DER_OID_SZ_id_slh_dsa_shake_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s]; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +#define DER_OID_V_id_slh_dsa_shake_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1B +#define DER_OID_SZ_id_slh_dsa_shake_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f]; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +#define DER_OID_V_id_slh_dsa_shake_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1C +#define DER_OID_SZ_id_slh_dsa_shake_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s]; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +#define DER_OID_V_id_slh_dsa_shake_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1D +#define DER_OID_SZ_id_slh_dsa_shake_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f]; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +#define DER_OID_V_id_slh_dsa_shake_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1E +#define DER_OID_SZ_id_slh_dsa_shake_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s]; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +#define DER_OID_V_id_slh_dsa_shake_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1F +#define DER_OID_SZ_id_slh_dsa_shake_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f]; + + +int ossl_DER_w_algorithmIdentifier_SLH_DSA(WPACKET *pkt, int tag, SLH_DSA_KEY *key); diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/apps/progs.c b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/apps/progs.c index 43cef00799b86e..acc204a3e6e781 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/apps/progs.c +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/apps/progs.c @@ -89,6 +89,7 @@ FUNCTION functions[] = { {FT_general, "s_time", s_time_main, s_time_options, NULL, NULL}, #endif {FT_general, "sess_id", sess_id_main, sess_id_options, NULL, NULL}, + {FT_general, "skeyutl", skeyutl_main, skeyutl_options, NULL, NULL}, {FT_general, "smime", smime_main, smime_options, NULL, NULL}, {FT_general, "speed", speed_main, speed_options, NULL, NULL}, {FT_general, "spkac", spkac_main, spkac_options, NULL, NULL}, @@ -225,9 +226,15 @@ FUNCTION functions[] = { {FT_cipher, "camellia-256-ecb", enc_main, enc_options, NULL}, #endif {FT_cipher, "base64", enc_main, enc_options, NULL}, -#ifdef ZLIB +#ifndef OPENSSL_NO_ZLIB {FT_cipher, "zlib", enc_main, enc_options, NULL}, #endif +#ifndef OPENSSL_NO_BROTLI + {FT_cipher, "brotli", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ZSTD + {FT_cipher, "zstd", enc_main, enc_options, NULL}, +#endif #ifndef OPENSSL_NO_DES {FT_cipher, "des", enc_main, enc_options, NULL}, #endif diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm index 8947bd53f11632..33318d92ed21fa 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm @@ -18,6 +18,7 @@ our %config = ( "ARFLAGS" => [ "/nologo" ], + "ASFLAGS" => [], "CC" => "cl", "CFLAGS" => [ "/W3 /wd4090 /nologo /O2" @@ -28,6 +29,7 @@ our %config = ( "CPPINCLUDES" => [], "CXXFLAGS" => [], "FIPSKEY" => "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813", + "FIPS_VENDOR" => "OpenSSL FIPS Provider", "HASHBANGPERL" => "/usr/bin/env perl", "LD" => "link", "LDFLAGS" => [ @@ -42,7 +44,7 @@ our %config = ( "RANLIB" => "ranlib", "RC" => "rc", "RCFLAGS" => [], - "api" => "30000", + "api" => "30500", "b32" => "0", "b64" => "1", "b64l" => "0", @@ -64,11 +66,13 @@ our %config = ( "doc/build.info", "test/build.info", "engines/build.info", + "exporters/build.info", "crypto/objects/build.info", "crypto/buffer/build.info", "crypto/bio/build.info", "crypto/stack/build.info", "crypto/lhash/build.info", + "crypto/hashtable/build.info", "crypto/rand/build.info", "crypto/evp/build.info", "crypto/asn1/build.info", @@ -86,6 +90,7 @@ our %config = ( "crypto/md5/build.info", "crypto/sha/build.info", "crypto/mdc2/build.info", + "crypto/ml_kem/build.info", "crypto/hmac/build.info", "crypto/ripemd/build.info", "crypto/whrlpool/build.info", @@ -127,11 +132,19 @@ our %config = ( "crypto/cmp/build.info", "crypto/encode_decode/build.info", "crypto/ffc/build.info", + "crypto/hpke/build.info", + "crypto/thread/build.info", + "crypto/ml_dsa/build.info", + "crypto/slh_dsa/build.info", + "ssl/record/build.info", + "ssl/rio/build.info", + "ssl/quic/build.info", "apps/lib/build.info", "providers/common/build.info", "providers/implementations/build.info", "providers/fips/build.info", "doc/man1/build.info", + "ssl/record/methods/build.info", "providers/common/der/build.info", "providers/implementations/digests/build.info", "providers/implementations/ciphers/build.info", @@ -145,6 +158,7 @@ our %config = ( "providers/implementations/encode_decode/build.info", "providers/implementations/storemgmt/build.info", "providers/implementations/kem/build.info", + "providers/implementations/skeymgmt/build.info", "providers/implementations/rands/seeding/build.info" ], "build_metadata" => "", @@ -163,7 +177,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.17", + "full_version" => "3.5.2", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -173,9 +187,9 @@ our %config = ( "major" => "3", "makedep_scheme" => "VC", "makedepcmd" => "\$(CC) /Zs /showIncludes", - "minor" => "0", + "minor" => "5", "openssl_api_defines" => [ - "OPENSSL_CONFIGURED_API=30000" + "OPENSSL_CONFIGURED_API=30500" ], "openssl_feature_defines" => [ "OPENSSL_RAND_SEED_OS", @@ -183,28 +197,42 @@ our %config = ( "OPENSSL_NO_AFALGENG", "OPENSSL_NO_ASAN", "OPENSSL_NO_ASM", + "OPENSSL_NO_BROTLI", + "OPENSSL_NO_BROTLI_DYNAMIC", "OPENSSL_NO_COMP", "OPENSSL_NO_CRYPTO_MDEBUG", "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE", + "OPENSSL_NO_DEMOS", "OPENSSL_NO_DEVCRYPTOENG", "OPENSSL_NO_EC_NISTP_64_GCC_128", "OPENSSL_NO_EGD", "OPENSSL_NO_EXTERNAL_TESTS", + "OPENSSL_NO_FIPS_JITTER", "OPENSSL_NO_FUZZ_AFL", "OPENSSL_NO_FUZZ_LIBFUZZER", + "OPENSSL_NO_H3DEMO", + "OPENSSL_NO_HQINTEROP", + "OPENSSL_NO_JITTER", "OPENSSL_NO_KTLS", "OPENSSL_NO_LOADERENG", "OPENSSL_NO_MD2", "OPENSSL_NO_MSAN", + "OPENSSL_NO_PIE", "OPENSSL_NO_RC5", "OPENSSL_NO_SCTP", "OPENSSL_NO_SSL3", "OPENSSL_NO_SSL3_METHOD", + "OPENSSL_NO_SSLKEYLOG", + "OPENSSL_NO_TFO", "OPENSSL_NO_TRACE", "OPENSSL_NO_UBSAN", "OPENSSL_NO_UNIT_TEST", "OPENSSL_NO_UPLINK", "OPENSSL_NO_WEAK_SSL_CIPHERS", + "OPENSSL_NO_ZLIB", + "OPENSSL_NO_ZLIB_DYNAMIC", + "OPENSSL_NO_ZSTD", + "OPENSSL_NO_ZSTD_DYNAMIC", "OPENSSL_NO_DYNAMIC_ENGINE" ], "openssl_other_defines" => [ @@ -212,11 +240,11 @@ our %config = ( ], "openssl_sys_defines" => [], "openssldir" => "", - "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "17", + "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", + "patch" => "2", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", - "perl_version" => "5.38.2", + "perl_version" => "5.34.0", "perlargv" => [ "no-comp", "no-shared", @@ -247,6 +275,7 @@ our %config = ( "LDLIBS" => undef, "MT" => undef, "MTFLAGS" => undef, + "OBJCOPY" => undef, "OPENSSL_LOCAL_CONFIG_DIR" => undef, "PERL" => undef, "RANLIB" => undef, @@ -266,11 +295,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "1 Jul 2025", + "release_date" => "5 Aug 2025", "shlib_version" => "3", "sourcedir" => ".", "target" => "VC-WIN64-ARM", - "version" => "3.0.17" + "version" => "3.5.2" ); our %target = ( "AR" => "lib", @@ -283,7 +312,7 @@ our %target = ( "LDFLAGS" => "/nologo /debug", "MT" => "mt", "MTFLAGS" => "-nologo", - "RANLIB" => "CODE(0x55be6aa845d8)", + "RANLIB" => "CODE(0x556add68de40)", "RC" => "rc", "_conf_fname_int" => [ "Configurations/00-base-templates.conf", @@ -332,7 +361,7 @@ our %target = ( "ldoutflag" => "/out:", "ldpostoutflag" => "", "ldresflag" => " ", - "lflags" => "/NODEFAULTLIB:kernel32.lib /APPCONTAINER", + "lflags" => "/NODEFAULTLIB:kernel32.lib", "lib_cflags" => "/Zi /Fdossl_static.pdb /MT /Zl", "lib_cppflags" => "", "lib_defines" => [ @@ -362,6 +391,8 @@ our %target = ( our @disablables = ( "acvp-tests", "afalgeng", + "apps", + "argon2", "aria", "asan", "asm", @@ -372,11 +403,14 @@ our @disablables = ( "autoload-config", "bf", "blake2", + "brotli", + "brotli-dynamic", "buildtest-c++", "bulk", "cached-fetch", "camellia", "capieng", + "winstore", "cast", "chacha", "cmac", @@ -385,11 +419,16 @@ our @disablables = ( "comp", "crypto-mdebug", "ct", + "default-thread-pool", + "demos", + "h3demo", + "hqinterop", "deprecated", "des", "devcryptoeng", "dgram", "dh", + "docs", "dsa", "dso", "dtls", @@ -399,6 +438,7 @@ our @disablables = ( "ec_nistp_64_gcc_128", "ecdh", "ecdsa", + "ecx", "egd", "engine", "err", @@ -406,10 +446,15 @@ our @disablables = ( "filenames", "fips", "fips-securitychecks", + "fips-post", + "fips-jitter", "fuzz-afl", "fuzz-libfuzzer", "gost", + "http", "idea", + "integrity-only-ciphers", + "jitter", "ktls", "legacy", "loadereng", @@ -417,6 +462,8 @@ our @disablables = ( "md2", "md4", "mdc2", + "ml-dsa", + "ml-kem", "module", "msan", "multiblock", @@ -425,10 +472,13 @@ our @disablables = ( "ocsp", "padlockeng", "pic", + "pie", "pinshared", "poly1305", "posix-io", "psk", + "quic", + "unstable-qlog", "rc2", "rc4", "rc5", @@ -442,7 +492,9 @@ our @disablables = ( "shared", "siphash", "siv", + "slh-dsa", "sm2", + "sm2-precomp", "sm3", "sm4", "sock", @@ -453,9 +505,13 @@ our @disablables = ( "ssl-trace", "static-engine", "stdio", + "sslkeylog", "tests", + "tfo", + "thread-pool", "threads", "tls", + "tls-deprecated-ec", "trace", "ts", "ubsan", @@ -466,6 +522,8 @@ our @disablables = ( "whirlpool", "zlib", "zlib-dynamic", + "zstd", + "zstd-dynamic", "ssl3", "ssl3-method", "tls1", @@ -487,33 +545,45 @@ our %disabled = ( "afalgeng" => "option", "asan" => "default", "asm" => "no asm_arch", + "brotli" => "default", + "brotli-dynamic" => "default", "buildtest-c++" => "default", "comp" => "option", "crypto-mdebug" => "default", "crypto-mdebug-backtrace" => "default", + "demos" => "default", "devcryptoeng" => "default", "dynamic-engine" => "cascade", "ec_nistp_64_gcc_128" => "default", "egd" => "default", "external-tests" => "default", + "fips-jitter" => "default", "fuzz-afl" => "default", "fuzz-libfuzzer" => "default", + "h3demo" => "default", + "hqinterop" => "default", + "jitter" => "default", "ktls" => "default", "loadereng" => "cascade", "md2" => "default", "msan" => "default", + "pie" => "default", "rc5" => "default", "sctp" => "default", "shared" => "option", "ssl3" => "default", "ssl3-method" => "default", + "sslkeylog" => "default", + "tfo" => "default", "trace" => "default", "ubsan" => "default", "unit-test" => "default", "uplink" => "no uplink_arch", "weak-ssl-ciphers" => "default", "zlib" => "default", - "zlib-dynamic" => "default" + "zlib-dynamic" => "default", + "zstd" => "default", + "zstd-dynamic" => "default" ); our %withargs = (); our %unified_info = ( @@ -739,6 +809,11 @@ our %unified_info = ( "pod" => "1" } }, + "doc/man1/openssl-skeyutl.pod" => { + "doc/man1/openssl-skeyutl.pod.in" => { + "pod" => "1" + } + }, "doc/man1/openssl-smime.pod" => { "doc/man1/openssl-smime.pod.in" => { "pod" => "1" @@ -796,6 +871,21 @@ our %unified_info = ( } }, "generate" => { + "exporters/OpenSSLConfig.cmake" => { + "exporter" => "cmake" + }, + "exporters/OpenSSLConfigVersion.cmake" => { + "exporter" => "cmake" + }, + "exporters/libcrypto.pc" => { + "exporter" => "pkg-config" + }, + "exporters/libssl.pc" => { + "exporter" => "pkg-config" + }, + "exporters/openssl.pc" => { + "exporter" => "pkg-config" + }, "include/openssl/configuration.h" => { "skip" => "1" } @@ -816,6 +906,9 @@ our %unified_info = ( "providers/liblegacy.a" => { "noinst" => "1" }, + "providers/libtemplate.a" => { + "noinst" => "1" + }, "test/libtestutil.a" => { "has_main" => "1", "noinst" => "1" @@ -833,6 +926,9 @@ our %unified_info = ( } }, "programs" => { + "fuzz/acert-test" => { + "noinst" => "1" + }, "fuzz/asn1-test" => { "noinst" => "1" }, @@ -863,9 +959,60 @@ our %unified_info = ( "fuzz/ct-test" => { "noinst" => "1" }, + "fuzz/decoder-test" => { + "noinst" => "1" + }, + "fuzz/dtlsclient-test" => { + "noinst" => "1" + }, + "fuzz/dtlsserver-test" => { + "noinst" => "1" + }, + "fuzz/hashtable-test" => { + "noinst" => "1" + }, + "fuzz/ml-dsa-test" => { + "noinst" => "1" + }, + "fuzz/ml-kem-test" => { + "noinst" => "1" + }, + "fuzz/pem-test" => { + "noinst" => "1" + }, + "fuzz/provider-test" => { + "noinst" => "1" + }, + "fuzz/punycode-test" => { + "noinst" => "1" + }, + "fuzz/quic-client-test" => { + "noinst" => "1" + }, + "fuzz/quic-lcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-rcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-server-test" => { + "noinst" => "1" + }, + "fuzz/quic-srtm-test" => { + "noinst" => "1" + }, "fuzz/server-test" => { "noinst" => "1" }, + "fuzz/slh-dsa-test" => { + "noinst" => "1" + }, + "fuzz/smime-test" => { + "noinst" => "1" + }, + "fuzz/v3name-test" => { + "noinst" => "1" + }, "fuzz/x509-test" => { "noinst" => "1" }, @@ -917,18 +1064,30 @@ our %unified_info = ( "test/bftest" => { "noinst" => "1" }, + "test/bio_addr_test" => { + "noinst" => "1" + }, + "test/bio_base64_test" => { + "noinst" => "1" + }, "test/bio_callback_test" => { "noinst" => "1" }, "test/bio_core_test" => { "noinst" => "1" }, + "test/bio_dgram_test" => { + "noinst" => "1" + }, "test/bio_enc_test" => { "noinst" => "1" }, "test/bio_memleak_test" => { "noinst" => "1" }, + "test/bio_meth_test" => { + "noinst" => "1" + }, "test/bio_prefix_text" => { "noinst" => "1" }, @@ -938,6 +1097,9 @@ our %unified_info = ( "test/bio_readbuffer_test" => { "noinst" => "1" }, + "test/bio_tfo_test" => { + "noinst" => "1" + }, "test/bioprinttest" => { "noinst" => "1" }, @@ -947,6 +1109,9 @@ our %unified_info = ( "test/bntest" => { "noinst" => "1" }, + "test/build_wincrypt_test" => { + "noinst" => "1" + }, "test/buildtest_c_aes" => { "noinst" => "1" }, @@ -962,6 +1127,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => { "noinst" => "1" }, + "test/buildtest_c_byteorder" => { + "noinst" => "1" + }, "test/buildtest_c_camellia" => { "noinst" => "1" }, @@ -986,9 +1154,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => { "noinst" => "1" }, - "test/buildtest_c_core_names" => { - "noinst" => "1" - }, "test/buildtest_c_core_object" => { "noinst" => "1" }, @@ -1013,6 +1178,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => { "noinst" => "1" }, + "test/buildtest_c_e_ostime" => { + "noinst" => "1" + }, "test/buildtest_c_ebcdic" => { "noinst" => "1" }, @@ -1040,12 +1208,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => { "noinst" => "1" }, + "test/buildtest_c_hpke" => { + "noinst" => "1" + }, "test/buildtest_c_http" => { "noinst" => "1" }, "test/buildtest_c_idea" => { "noinst" => "1" }, + "test/buildtest_c_indicator" => { + "noinst" => "1" + }, "test/buildtest_c_kdf" => { "noinst" => "1" }, @@ -1061,6 +1235,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => { "noinst" => "1" }, + "test/buildtest_c_ml_kem" => { + "noinst" => "1" + }, "test/buildtest_c_modes" => { "noinst" => "1" }, @@ -1091,6 +1268,9 @@ our %unified_info = ( "test/buildtest_c_provider" => { "noinst" => "1" }, + "test/buildtest_c_quic" => { + "noinst" => "1" + }, "test/buildtest_c_rand" => { "noinst" => "1" }, @@ -1133,6 +1313,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => { "noinst" => "1" }, + "test/buildtest_c_thread" => { + "noinst" => "1" + }, "test/buildtest_c_tls1" => { "noinst" => "1" }, @@ -1148,6 +1331,12 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => { "noinst" => "1" }, + "test/byteorder_test" => { + "noinst" => "1" + }, + "test/ca_internals_test" => { + "noinst" => "1" + }, "test/casttest" => { "noinst" => "1" }, @@ -1232,6 +1421,9 @@ our %unified_info = ( "test/danetest" => { "noinst" => "1" }, + "test/decoder_propq_test" => { + "noinst" => "1" + }, "test/defltfips_test" => { "noinst" => "1" }, @@ -1304,15 +1496,24 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => { "noinst" => "1" }, + "test/evp_pkey_dhkem_test" => { + "noinst" => "1" + }, "test/evp_pkey_dparams_test" => { "noinst" => "1" }, "test/evp_pkey_provided_test" => { "noinst" => "1" }, + "test/evp_skey_test" => { + "noinst" => "1" + }, "test/evp_test" => { "noinst" => "1" }, + "test/evp_xof_test" => { + "noinst" => "1" + }, "test/exdatatest" => { "noinst" => "1" }, @@ -1340,6 +1541,9 @@ our %unified_info = ( "test/hmactest" => { "noinst" => "1" }, + "test/hpke_test" => { + "noinst" => "1" + }, "test/http_test" => { "noinst" => "1" }, @@ -1349,12 +1553,18 @@ our %unified_info = ( "test/igetest" => { "noinst" => "1" }, + "test/json_test" => { + "noinst" => "1" + }, "test/keymgmt_internal_test" => { "noinst" => "1" }, "test/lhash_test" => { "noinst" => "1" }, + "test/list_test" => { + "noinst" => "1" + }, "test/localetest" => { "noinst" => "1" }, @@ -1364,9 +1574,21 @@ our %unified_info = ( "test/mdc2test" => { "noinst" => "1" }, + "test/membio_test" => { + "noinst" => "1" + }, "test/memleaktest" => { "noinst" => "1" }, + "test/ml_dsa_test" => { + "noinst" => "1" + }, + "test/ml_kem_evp_extra_test" => { + "noinst" => "1" + }, + "test/ml_kem_internal_test" => { + "noinst" => "1" + }, "test/modes_internal_test" => { "noinst" => "1" }, @@ -1385,6 +1607,9 @@ our %unified_info = ( "test/packettest" => { "noinst" => "1" }, + "test/pairwise_fail_test" => { + "noinst" => "1" + }, "test/param_build_test" => { "noinst" => "1" }, @@ -1409,6 +1634,9 @@ our %unified_info = ( "test/pemtest" => { "noinst" => "1" }, + "test/pkcs12_api_test" => { + "noinst" => "1" + }, "test/pkcs12_format_test" => { "noinst" => "1" }, @@ -1424,6 +1652,9 @@ our %unified_info = ( "test/poly1305_internal_test" => { "noinst" => "1" }, + "test/priority_queue_test" => { + "noinst" => "1" + }, "test/property_test" => { "noinst" => "1" }, @@ -1433,6 +1664,9 @@ our %unified_info = ( "test/provfetchtest" => { "noinst" => "1" }, + "test/provider_default_search_path_test" => { + "noinst" => "1" + }, "test/provider_fallback_test" => { "noinst" => "1" }, @@ -1451,6 +1685,72 @@ our %unified_info = ( "test/punycode_test" => { "noinst" => "1" }, + "test/quic_ackm_test" => { + "noinst" => "1" + }, + "test/quic_cc_test" => { + "noinst" => "1" + }, + "test/quic_cfq_test" => { + "noinst" => "1" + }, + "test/quic_client_test" => { + "noinst" => "1" + }, + "test/quic_fc_test" => { + "noinst" => "1" + }, + "test/quic_fifd_test" => { + "noinst" => "1" + }, + "test/quic_lcidm_test" => { + "noinst" => "1" + }, + "test/quic_multistream_test" => { + "noinst" => "1" + }, + "test/quic_newcid_test" => { + "noinst" => "1" + }, + "test/quic_qlog_test" => { + "noinst" => "1" + }, + "test/quic_radix_test" => { + "noinst" => "1" + }, + "test/quic_rcidm_test" => { + "noinst" => "1" + }, + "test/quic_record_test" => { + "noinst" => "1" + }, + "test/quic_srt_gen_test" => { + "noinst" => "1" + }, + "test/quic_srtm_test" => { + "noinst" => "1" + }, + "test/quic_stream_test" => { + "noinst" => "1" + }, + "test/quic_tserver_test" => { + "noinst" => "1" + }, + "test/quic_txp_test" => { + "noinst" => "1" + }, + "test/quic_txpim_test" => { + "noinst" => "1" + }, + "test/quic_wire_test" => { + "noinst" => "1" + }, + "test/quicapitest" => { + "noinst" => "1" + }, + "test/quicfaultstest" => { + "noinst" => "1" + }, "test/rand_status_test" => { "noinst" => "1" }, @@ -1466,12 +1766,15 @@ our %unified_info = ( "test/rc5test" => { "noinst" => "1" }, - "test/rdrand_sanitytest" => { + "test/rdcpu_sanitytest" => { "noinst" => "1" }, "test/recordlentest" => { "noinst" => "1" }, + "test/rpktest" => { + "noinst" => "1" + }, "test/rsa_complex" => { "noinst" => "1" }, @@ -1484,6 +1787,12 @@ our %unified_info = ( "test/rsa_test" => { "noinst" => "1" }, + "test/rsa_x931_test" => { + "noinst" => "1" + }, + "test/safe_math_test" => { + "noinst" => "1" + }, "test/sanitytest" => { "noinst" => "1" }, @@ -1499,6 +1808,9 @@ our %unified_info = ( "test/siphash_internal_test" => { "noinst" => "1" }, + "test/slh_dsa_test" => { + "noinst" => "1" + }, "test/sm2_internal_test" => { "noinst" => "1" }, @@ -1520,6 +1832,9 @@ our %unified_info = ( "test/ssl_ctx_test" => { "noinst" => "1" }, + "test/ssl_handshake_rtt_test" => { + "noinst" => "1" + }, "test/ssl_old_test" => { "noinst" => "1" }, @@ -1541,12 +1856,18 @@ our %unified_info = ( "test/stack_test" => { "noinst" => "1" }, + "test/strtoultest" => { + "noinst" => "1" + }, "test/sysdefaulttest" => { "noinst" => "1" }, "test/test_test" => { "noinst" => "1" }, + "test/threadpool_test" => { + "noinst" => "1" + }, "test/threadstest" => { "noinst" => "1" }, @@ -1556,12 +1877,18 @@ our %unified_info = ( "test/time_offset_test" => { "noinst" => "1" }, + "test/time_test" => { + "noinst" => "1" + }, "test/tls13ccstest" => { "noinst" => "1" }, "test/tls13encryptiontest" => { "noinst" => "1" }, + "test/tls13groupselection_test" => { + "noinst" => "1" + }, "test/trace_api_test" => { "noinst" => "1" }, @@ -1589,6 +1916,9 @@ our %unified_info = ( "test/wpackettest" => { "noinst" => "1" }, + "test/x509_acert_test" => { + "noinst" => "1" + }, "test/x509_check_cert_pkey_test" => { "noinst" => "1" }, @@ -1598,6 +1928,15 @@ our %unified_info = ( "test/x509_internal_test" => { "noinst" => "1" }, + "test/x509_load_cert_file_test" => { + "noinst" => "1" + }, + "test/x509_req_test" => { + "noinst" => "1" + }, + "test/x509_test" => { + "noinst" => "1" + }, "test/x509_time_test" => { "noinst" => "1" }, @@ -1638,6 +1977,9 @@ our %unified_info = ( "providers/libfips.a" => [ "FIPS_MODULE" ], + "test/endecode_test" => [ + "STATIC_LEGACY" + ], "test/evp_extra_test" => [ "STATIC_LEGACY" ], @@ -1650,14 +1992,21 @@ our %unified_info = ( }, "depends" => { "" => [ + "OpenSSLConfigVersion.cmake", + "crypto/params_idx.c", + "exporters/OpenSSLConfigVersion.cmake", + "exporters/openssl.pc", "include/crypto/bn_conf.h", "include/crypto/dso_conf.h", + "include/internal/param_names.h", "include/openssl/asn1.h", "include/openssl/asn1t.h", "include/openssl/bio.h", "include/openssl/cmp.h", "include/openssl/cms.h", + "include/openssl/comp.h", "include/openssl/conf.h", + "include/openssl/core_names.h", "include/openssl/crmf.h", "include/openssl/crypto.h", "include/openssl/ct.h", @@ -1674,10 +2023,22 @@ our %unified_info = ( "include/openssl/ssl.h", "include/openssl/ui.h", "include/openssl/x509.h", + "include/openssl/x509_acert.h", "include/openssl/x509_vfy.h", "include/openssl/x509v3.h", + "openssl.pc", "test/provider_internal_test.cnf" ], + "OpenSSLConfig.cmake" => [ + "builddata.pm" + ], + "OpenSSLConfigVersion.cmake" => [ + "OpenSSLConfig.cmake", + "builddata.pm" + ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/progs.h" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/progs.h" ], @@ -1823,6 +2184,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/progs.h" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/progs.h" + ], "apps/openssl-bin-smime.o" => [ "apps/progs.h" ], @@ -1911,6 +2275,9 @@ our %unified_info = ( "crypto/libcrypto-lib-info.o" => [ "crypto/buildinf.h" ], + "crypto/params_idx.c" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "crypto/rc4/rc4-586.S" => [ "crypto/perlasm/x86asm.pl" ], @@ -2076,6 +2443,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -2217,6 +2587,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -2253,6 +2626,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -2268,6 +2644,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -2340,6 +2719,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -2406,6 +2788,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -2505,6 +2890,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -2643,6 +3034,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -2760,6 +3154,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -2847,6 +3247,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -2919,9 +3322,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -2937,12 +3346,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -3012,9 +3427,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -3024,12 +3448,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -3045,9 +3481,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -3072,6 +3514,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -3087,6 +3532,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -3123,6 +3571,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -3396,6 +3847,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -3435,6 +3889,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -3456,6 +3913,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -3570,6 +4030,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -3597,9 +4060,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -3615,6 +4090,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -3624,12 +4102,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -3648,12 +4132,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -3663,9 +4159,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -3678,9 +4180,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -3696,24 +4210,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -3726,6 +4261,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -3735,8 +4276,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -3756,6 +4297,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -3804,6 +4360,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -3870,6 +4429,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -3993,9 +4555,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -4011,6 +4579,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -4035,9 +4606,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -4071,6 +4651,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -4128,15 +4711,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -4146,6 +4741,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -4167,9 +4765,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -4185,6 +4789,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -4197,9 +4804,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -4230,9 +4834,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -4248,12 +4849,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -4308,6 +4963,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -4317,9 +4975,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -4467,6 +5122,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -4608,6 +5266,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -4644,6 +5305,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -4659,6 +5323,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -4731,6 +5398,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -4797,6 +5467,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -4896,6 +5569,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -5034,6 +5713,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -5151,6 +5833,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -5238,6 +5926,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -5310,9 +6001,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -5328,12 +6025,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -5403,9 +6106,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -5415,12 +6127,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -5436,9 +6160,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -5463,6 +6193,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -5478,6 +6211,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -5514,6 +6250,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -5787,6 +6526,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -5826,6 +6568,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -5847,6 +6592,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -5961,6 +6709,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -5988,9 +6739,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -6006,6 +6769,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -6015,12 +6781,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -6039,12 +6811,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -6054,9 +6838,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -6069,9 +6859,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -6087,24 +6889,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -6117,6 +6940,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -6126,8 +6955,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -6147,6 +6976,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -6195,6 +7039,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -6261,6 +7108,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -6384,9 +7234,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -6402,6 +7258,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -6426,9 +7285,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -6462,6 +7330,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -6519,15 +7390,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -6537,6 +7420,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -6558,9 +7444,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -6576,6 +7468,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -6588,9 +7483,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -6621,9 +7513,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -6639,12 +7528,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -6699,6 +7642,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -6708,9 +7654,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -6890,6 +7833,10 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod.in", "doc/perlvars.pm" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in", + "doc/perlvars.pm" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in", "doc/perlvars.pm" @@ -6929,6 +7876,27 @@ our %unified_info = ( "doc/man7/openssl_user_macros.pod" => [ "doc/man7/openssl_user_macros.pod.in" ], + "exporters/OpenSSLConfig.cmake" => [ + "installdata.pm" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/OpenSSLConfig.cmake", + "installdata.pm" + ], + "exporters/libcrypto.pc" => [ + "installdata.pm" + ], + "exporters/libssl.pc" => [ + "installdata.pm" + ], + "exporters/openssl.pc" => [ + "exporters/libcrypto.pc", + "exporters/libssl.pc", + "installdata.pm" + ], + "fuzz/acert-test" => [ + "libcrypto" + ], "fuzz/asn1-test" => [ "libcrypto", "libssl" @@ -6961,17 +7929,85 @@ our %unified_info = ( "fuzz/ct-test" => [ "libcrypto" ], + "fuzz/decoder-test" => [ + "libcrypto" + ], + "fuzz/dtlsclient-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/dtlsserver-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/hashtable-test" => [ + "libcrypto.a" + ], + "fuzz/ml-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/ml-kem-test" => [ + "libcrypto.a" + ], + "fuzz/pem-test" => [ + "libcrypto.a" + ], + "fuzz/provider-test" => [ + "libcrypto" + ], + "fuzz/punycode-test" => [ + "libcrypto.a" + ], + "fuzz/quic-client-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-lcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-rcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-server-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-srtm-test" => [ + "libcrypto.a", + "libssl.a" + ], "fuzz/server-test" => [ "libcrypto", "libssl" ], + "fuzz/slh-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/smime-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/v3name-test" => [ + "libcrypto.a" + ], "fuzz/x509-test" => [ "libcrypto" ], + "include/internal/param_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], + "include/openssl/core_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "libcrypto.ld" => [ "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libcrypto.pc" => [ + "builddata.pm" + ], "libcrypto.rc" => [ "configdata.pm" ], @@ -6982,9 +8018,17 @@ our %unified_info = ( "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libssl.pc" => [ + "builddata.pm" + ], "libssl.rc" => [ "configdata.pm" ], + "openssl.pc" => [ + "builddata.pm", + "libcrypto.pc", + "libssl.pc" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/DIGESTS.asn1", "providers/common/der/NIST.asn1", @@ -7002,11 +8046,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7046,6 +8098,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov/der_rsa.h" ], @@ -7053,6 +8111,12 @@ our %unified_info = ( "providers/common/include/prov/der_digests.h", "providers/common/include/prov/der_rsa.h" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov/der_wrap.h" ], @@ -7092,11 +8156,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7129,9 +8201,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov/der_sm2.h" ], @@ -7144,9 +8222,15 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/legacy" => [ "libcrypto", "providers/liblegacy.a" @@ -7224,6 +8308,14 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_addr_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/bio_base64_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_callback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7232,6 +8324,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_dgram_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_enc_test" => [ "libcrypto", "test/libtestutil.a" @@ -7240,6 +8336,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_meth_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_prefix_text" => [ "libcrypto", "test/libtestutil.a" @@ -7252,6 +8352,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_tfo_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bioprinttest" => [ "libcrypto", "test/libtestutil.a" @@ -7264,6 +8368,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/build_wincrypt_test" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_aes" => [ "libcrypto", "libssl" @@ -7284,6 +8392,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_byteorder" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_camellia" => [ "libcrypto", "libssl" @@ -7316,10 +8428,6 @@ our %unified_info = ( "libcrypto", "libssl" ], - "test/buildtest_c_core_names" => [ - "libcrypto", - "libssl" - ], "test/buildtest_c_core_object" => [ "libcrypto", "libssl" @@ -7352,6 +8460,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_e_ostime" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_ebcdic" => [ "libcrypto", "libssl" @@ -7388,6 +8500,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_hpke" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_http" => [ "libcrypto", "libssl" @@ -7396,6 +8512,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_indicator" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_kdf" => [ "libcrypto", "libssl" @@ -7416,6 +8536,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_ml_kem" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_modes" => [ "libcrypto", "libssl" @@ -7456,6 +8580,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_quic" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_rand" => [ "libcrypto", "libssl" @@ -7512,6 +8640,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_thread" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_tls1" => [ "libcrypto", "libssl" @@ -7532,10 +8664,23 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/byteorder_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ca_internals_test" => [ + "libssl", + "test/libtestutil.a" + ], "test/casttest" => [ "libcrypto", "test/libtestutil.a" ], + "test/cert_comp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/chacha_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7649,7 +8794,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], - "test/defltfips_test" => [ + "test/decoder_propq_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/defltfips_test" => [ "libcrypto", "test/libtestutil.a" ], @@ -7705,6 +8854,8 @@ our %unified_info = ( ], "test/endecode_test" => [ "libcrypto.a", + "providers/libcommon.a", + "providers/liblegacy.a", "test/libtestutil.a" ], "test/endecoder_legacy_test" => [ @@ -7748,6 +8899,10 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => [ "libcrypto" ], + "test/evp_pkey_dhkem_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/evp_pkey_dparams_test" => [ "libcrypto", "test/libtestutil.a" @@ -7756,10 +8911,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/evp_skey_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/evp_xof_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/exdatatest" => [ "libcrypto", "test/libtestutil.a" @@ -7798,6 +8961,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/hpke_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/http_test" => [ "libcrypto", "test/libtestutil.a" @@ -7810,17 +8977,25 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/json_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/keymgmt_internal_test" => [ "libcrypto.a", "test/libtestutil.a" ], "test/lhash_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/libtestutil.a" => [ "libcrypto" ], + "test/list_test" => [ + "test/libtestutil.a" + ], "test/localetest" => [ "libcrypto", "test/libtestutil.a" @@ -7833,10 +9008,26 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/membio_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/memleaktest" => [ "libcrypto", "test/libtestutil.a" ], + "test/ml_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_evp_extra_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_internal_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/modes_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7861,6 +9052,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pairwise_fail_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/param_build_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7893,6 +9088,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pkcs12_api_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/pkcs12_format_test" => [ "libcrypto", "test/libtestutil.a" @@ -7913,6 +9112,11 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/priority_queue_test" => [ + "libcrypto", + "libssl.a", + "test/libtestutil.a" + ], "test/property_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7925,6 +9129,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/provider_default_search_path_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/provider_fallback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7949,12 +9157,122 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/quic_ackm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cfq_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_client_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fifd_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_lcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_multistream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_newcid_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_qlog_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_radix_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_rcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_record_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srt_gen_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srtm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_stream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_tserver_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txpim_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_wire_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicapitest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicfaultstest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/rand_status_test" => [ "libcrypto", "test/libtestutil.a" ], "test/rand_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/rc2test" => [ @@ -7969,7 +9287,7 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "libcrypto.a", "test/libtestutil.a" ], @@ -7978,6 +9296,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/rpktest" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/rsa_mp_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7990,10 +9313,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/sanitytest" => [ + "test/rsa_x931_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/safe_math_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/sanitytest" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/secmemtest" => [ "libcrypto", "test/libtestutil.a" @@ -8011,6 +9342,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/slh_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/sm2_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8040,6 +9375,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/ssl_handshake_rtt_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/ssl_old_test" => [ "libcrypto.a", "libssl.a", @@ -8056,8 +9396,8 @@ our %unified_info = ( "test/libtestutil.a" ], "test/sslapitest" => [ - "libcrypto", - "libssl", + "libcrypto.a", + "libssl.a", "test/libtestutil.a" ], "test/sslbuffertest" => [ @@ -8074,6 +9414,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/strtoultest" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/sysdefaulttest" => [ "libcrypto", "libssl", @@ -8083,8 +9427,12 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/threadpool_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/threadstest" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/threadstest_fips" => [ @@ -8095,6 +9443,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/time_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/tls13ccstest" => [ "libcrypto", "libssl", @@ -8105,6 +9457,11 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/tls13groupselection_test" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/trace_api_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8142,6 +9499,10 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/x509_acert_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_check_cert_pkey_test" => [ "libcrypto", "test/libtestutil.a" @@ -8154,6 +9515,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/x509_load_cert_file_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_req_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_time_test" => [ "libcrypto", "test/libtestutil.a" @@ -8168,9 +9541,13 @@ our %unified_info = ( }, "dirinfo" => { "apps" => { + "deps" => [ + "apps/ca_internals_test-bin-ca.o" + ], "products" => { "bin" => [ - "apps/openssl" + "apps/openssl", + "test/ca_internals_test" ], "script" => [ "apps/CA.pl", @@ -8181,6 +9558,14 @@ our %unified_info = ( "apps/lib" => { "deps" => [ "apps/lib/openssl-bin-cmp_mock_srv.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", "apps/lib/cmp_client_test-bin-cmp_mock_srv.o", "apps/lib/uitest-bin-apps_ui.o", "apps/lib/libapps-lib-app_libctx.o", @@ -8189,12 +9574,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -8207,6 +9594,7 @@ our %unified_info = ( "products" => { "bin" => [ "apps/openssl", + "test/ca_internals_test", "test/cmp_client_test", "test/uitest" ], @@ -8218,8 +9606,12 @@ our %unified_info = ( }, "crypto" => { "deps" => [ + "crypto/asn1_time_test-bin-ctype.o", + "crypto/ca_internals_test-bin-ctype.o", + "crypto/packettest-bin-quic_vlint.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -8229,10 +9621,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -8250,6 +9645,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -8257,12 +9653,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libfips-lib-asn1_dsa.o", @@ -8285,6 +9685,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -8292,9 +9693,15 @@ our %unified_info = ( "crypto/libfips-lib-threads_lib.o", "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", - "crypto/libfips-lib-threads_win.o" + "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test", + "test/packettest" + ], "lib" => [ "libcrypto", "providers/libfips.a" @@ -8335,6 +9742,8 @@ our %unified_info = ( }, "crypto/asn1" => { "deps" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", "crypto/asn1/libcrypto-lib-a_bitstr.o", "crypto/asn1/libcrypto-lib-a_d2i_fp.o", "crypto/asn1/libcrypto-lib-a_digest.o", @@ -8401,6 +9810,10 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test" + ], "lib" => [ "libcrypto" ] @@ -8466,6 +9879,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -8622,6 +10036,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -8989,7 +10404,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", - "crypto/err/libcrypto-lib-err_prn.o" + "crypto/err/libcrypto-lib-err_mark.o", + "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o" ], "products" => { "lib" => [ @@ -9090,7 +10507,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/evp/libfips-lib-asymcipher.o", "crypto/evp/libfips-lib-dh_support.o", "crypto/evp/libfips-lib-digest.o", @@ -9106,14 +10525,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", - "crypto/evp/libfips-lib-signature.o" + "crypto/evp/libfips-lib-s_lib.o", + "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o" ], "products" => { "lib" => [ @@ -9146,6 +10566,20 @@ our %unified_info = ( ] } }, + "crypto/hashtable" => { + "deps" => [ + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/hmac" => { "deps" => [ "crypto/hmac/libcrypto-lib-hmac.o", @@ -9158,6 +10592,17 @@ our %unified_info = ( ] } }, + "crypto/hpke" => { + "deps" => [ + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, "crypto/http" => { "deps" => [ "crypto/http/libcrypto-lib-http_client.o", @@ -9241,6 +10686,44 @@ our %unified_info = ( ] } }, + "crypto/ml_dsa" => { + "deps" => [ + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ml_kem" => { + "deps" => [ + "crypto/ml_kem/libcrypto-lib-ml_kem.o", + "crypto/ml_kem/libfips-lib-ml_kem.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/modes" => { "deps" => [ "crypto/modes/libcrypto-lib-cbc128.o", @@ -9254,6 +10737,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -9261,7 +10745,8 @@ our %unified_info = ( "crypto/modes/libfips-lib-gcm128.o", "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", - "crypto/modes/libfips-lib-xts128.o" + "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o" ], "products" => { "lib" => [ @@ -9404,6 +10889,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rand/libfips-lib-rand_lib.o" ], @@ -9548,6 +11034,36 @@ our %unified_info = ( ] } }, + "crypto/slh_dsa" => { + "deps" => [ + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/sm2" => { "deps" => [ "crypto/sm2/libcrypto-lib-sm2_crypt.o", @@ -9621,6 +11137,38 @@ our %unified_info = ( ] } }, + "crypto/thread" => { + "deps" => [ + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/thread/arch" => { + "deps" => [ + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/ts" => { "deps" => [ "crypto/ts/libcrypto-lib-ts_asn1.o", @@ -9687,14 +11235,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -9703,12 +11259,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -9716,13 +11277,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -9740,6 +11308,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -9749,6 +11318,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -9775,6 +11345,7 @@ our %unified_info = ( "fuzz" => { "products" => { "bin" => [ + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -9785,13 +11356,31 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test" ] } }, "providers" => { "deps" => [ + "providers/endecode_test-bin-legacyprov.o", "providers/evp_extra_test-bin-legacyprov.o", "providers/libcrypto-lib-baseprov.o", "providers/libcrypto-lib-defltprov.o", @@ -9801,6 +11390,7 @@ our %unified_info = ( ], "products" => { "bin" => [ + "test/endecode_test", "test/evp_extra_test" ], "dso" => [ @@ -9852,8 +11442,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/der/libdefault-lib-der_rsa_sig.o", "providers/common/der/libdefault-lib-der_sm2_gen.o", @@ -9872,6 +11466,7 @@ our %unified_info = ( "providers/fips" => { "deps" => [ "providers/fips/fips-dso-fips_entry.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o" @@ -9915,6 +11510,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -9939,7 +11537,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -10036,7 +11640,10 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", - "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" + "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" ], "products" => { "lib" => [ @@ -10064,7 +11671,9 @@ our %unified_info = ( }, "providers/implementations/kdfs" => { "deps" => [ + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -10083,7 +11692,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", - "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" + "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" ], "products" => { "lib" => [ @@ -10095,13 +11705,22 @@ our %unified_info = ( }, "providers/implementations/kem" => { "deps" => [ + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", - "providers/implementations/kem/libfips-lib-rsa_kem.o" + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", + "providers/implementations/kem/libfips-lib-rsa_kem.o", + "providers/implementations/kem/libtemplate-lib-template_kem.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10113,19 +11732,29 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", - "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10153,18 +11782,18 @@ our %unified_info = ( }, "providers/implementations/rands" => { "deps" => [ - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o" ], "products" => { @@ -10193,13 +11822,31 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", - "providers/implementations/signature/libfips-lib-rsa_sig.o" + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", + "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/skeymgmt" => { + "deps" => [ + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o" ], "products" => { "lib" => [ @@ -10211,7 +11858,8 @@ our %unified_info = ( "providers/implementations/storemgmt" => { "deps" => [ "providers/implementations/storemgmt/libdefault-lib-file_store.o", - "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o" + "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", + "providers/implementations/storemgmt/libdefault-lib-winstore_store.o" ], "products" => { "lib" => [ @@ -10227,14 +11875,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -10250,32 +11899,107 @@ our %unified_info = ( "ssl/libssl-lib-t1_trce.o", "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", - "ssl/libssl-lib-tls_srp.o", - "ssl/libdefault-lib-s3_cbc.o", - "ssl/libfips-lib-s3_cbc.o" + "ssl/libssl-lib-tls_srp.o" ], "products" => { "lib" => [ - "libssl", - "providers/libdefault.a", - "providers/libfips.a" + "libssl" + ] + } + }, + "ssl/quic" => { + "deps" => [ + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, "ssl/record" => { "deps" => [ - "ssl/record/libssl-lib-dtls1_bitmap.o", "ssl/record/libssl-lib-rec_layer_d1.o", - "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/libssl-lib-rec_layer_s3.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "ssl/record/methods" => { + "deps" => [ + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/record/methods/libcommon-lib-tls_pad.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o", + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "products" => { "lib" => [ "libssl", - "providers/libcommon.a" + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "ssl/rio" => { + "deps" => [ + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, @@ -10313,9 +12037,40 @@ our %unified_info = ( "test/helpers/dtlstest-bin-ssltestlib.o", "test/helpers/endecode_test-bin-predefined_dhparams.o", "test/helpers/fatalerrtest-bin-ssltestlib.o", + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/helpers/pkcs12_api_test-bin-pkcs12.o", "test/helpers/pkcs12_format_test-bin-pkcs12.o", + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", "test/helpers/recordlentest-bin-ssltestlib.o", + "test/helpers/rpktest-bin-ssltestlib.o", "test/helpers/servername_test-bin-ssltestlib.o", + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/helpers/ssl_test-bin-handshake.o", "test/helpers/ssl_test-bin-handshake_srp.o", @@ -10324,7 +12079,8 @@ our %unified_info = ( "test/helpers/sslapitest-bin-ssltestlib.o", "test/helpers/sslbuffertest-bin-ssltestlib.o", "test/helpers/sslcorrupttest-bin-ssltestlib.o", - "test/helpers/tls13ccstest-bin-ssltestlib.o" + "test/helpers/tls13ccstest-bin-ssltestlib.o", + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" ], "products" => { "bin" => [ @@ -10342,16 +12098,37 @@ our %unified_info = ( "test/dtlstest", "test/endecode_test", "test/fatalerrtest", + "test/json_test", + "test/pkcs12_api_test", "test/pkcs12_format_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_radix_test", + "test/quic_srt_gen_test", + "test/quicapitest", + "test/quicfaultstest", "test/recordlentest", + "test/rpktest", "test/servername_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", "test/sslapitest", "test/sslbuffertest", "test/sslcorrupttest", - "test/tls13ccstest" + "test/tls13ccstest", + "test/tls13groupselection_test" + ] + } + }, + "test/radix" => { + "deps" => [ + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "products" => { + "bin" => [ + "test/quic_radix_test" ] } }, @@ -10363,6 +12140,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -10397,6 +12175,12 @@ our %unified_info = ( } }, "generate" => { + "OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], "apps/openssl.rc" => [ "util/mkrc.pl", "openssl" @@ -10411,6 +12195,19 @@ our %unified_info = ( "\"-H\"", "\$(APPS_OPENSSL)" ], + "builddata.pm" => [ + "util/mkinstallvars.pl", + "PREFIX=.", + "BINDIR=apps", + "APPLINKDIR=ms", + "LIBDIR=", + "INCLUDEDIR=include", + "\"INCLUDEDIR=\$(SRCDIR)/include\"", + "ENGINESDIR=engines", + "MODULESDIR=providers", + "\"VERSION=\$(VERSION)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"" + ], "crypto/aes/aes-586.S" => [ "crypto/aes/asm/aes-586.pl" ], @@ -10432,6 +12229,24 @@ our %unified_info = ( "crypto/aes/aes-ppc.s" => [ "crypto/aes/asm/aes-ppc.pl" ], + "crypto/aes/aes-riscv32-zkn.s" => [ + "crypto/aes/asm/aes-riscv32-zkn.pl" + ], + "crypto/aes/aes-riscv64-zkn.s" => [ + "crypto/aes/asm/aes-riscv64-zkn.pl" + ], + "crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvbb-zvkg-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkb-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkb-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkned.pl" + ], + "crypto/aes/aes-riscv64.s" => [ + "crypto/aes/asm/aes-riscv64.pl" + ], "crypto/aes/aes-s390x.S" => [ "crypto/aes/asm/aes-s390x.pl" ], @@ -10459,6 +12274,9 @@ our %unified_info = ( "crypto/aes/aesni-x86_64.s" => [ "crypto/aes/asm/aesni-x86_64.pl" ], + "crypto/aes/aesni-xts-avx512.s" => [ + "crypto/aes/asm/aesni-xts-avx512.pl" + ], "crypto/aes/aesp8-ppc.s" => [ "crypto/aes/asm/aesp8-ppc.pl" ], @@ -10471,12 +12289,18 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.S" => [ "crypto/aes/asm/bsaes-armv7.pl" ], + "crypto/aes/bsaes-armv8.S" => [ + "crypto/aes/asm/bsaes-armv8.pl" + ], "crypto/aes/bsaes-x86_64.s" => [ "crypto/aes/asm/bsaes-x86_64.pl" ], "crypto/aes/vpaes-armv8.S" => [ "crypto/aes/asm/vpaes-armv8.pl" ], + "crypto/aes/vpaes-loongarch64.S" => [ + "crypto/aes/asm/vpaes-loongarch64.pl" + ], "crypto/aes/vpaes-ppc.s" => [ "crypto/aes/asm/vpaes-ppc.pl" ], @@ -10537,15 +12361,33 @@ our %unified_info = ( "crypto/bn/ppc-mont.s" => [ "crypto/bn/asm/ppc-mont.pl" ], + "crypto/bn/ppc64-mont-fixed.s" => [ + "crypto/bn/asm/ppc64-mont-fixed.pl" + ], "crypto/bn/ppc64-mont.s" => [ "crypto/bn/asm/ppc64-mont.pl" ], + "crypto/bn/rsaz-2k-avx512.s" => [ + "crypto/bn/asm/rsaz-2k-avx512.pl" + ], + "crypto/bn/rsaz-2k-avxifma.s" => [ + "crypto/bn/asm/rsaz-2k-avxifma.pl" + ], + "crypto/bn/rsaz-3k-avx512.s" => [ + "crypto/bn/asm/rsaz-3k-avx512.pl" + ], + "crypto/bn/rsaz-3k-avxifma.s" => [ + "crypto/bn/asm/rsaz-3k-avxifma.pl" + ], + "crypto/bn/rsaz-4k-avx512.s" => [ + "crypto/bn/asm/rsaz-4k-avx512.pl" + ], + "crypto/bn/rsaz-4k-avxifma.s" => [ + "crypto/bn/asm/rsaz-4k-avxifma.pl" + ], "crypto/bn/rsaz-avx2.s" => [ "crypto/bn/asm/rsaz-avx2.pl" ], - "crypto/bn/rsaz-avx512.s" => [ - "crypto/bn/asm/rsaz-avx512.pl" - ], "crypto/bn/rsaz-x86_64.s" => [ "crypto/bn/asm/rsaz-x86_64.pl" ], @@ -10607,6 +12449,9 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.S" => [ "crypto/chacha/asm/chacha-armv4.pl" ], + "crypto/chacha/chacha-armv8-sve.S" => [ + "crypto/chacha/asm/chacha-armv8-sve.pl" + ], "crypto/chacha/chacha-armv8.S" => [ "crypto/chacha/asm/chacha-armv8.pl" ], @@ -10619,9 +12464,19 @@ our %unified_info = ( "crypto/chacha/chacha-ia64.s" => [ "crypto/chacha/chacha-ia64.S" ], + "crypto/chacha/chacha-loongarch64.S" => [ + "crypto/chacha/asm/chacha-loongarch64.pl" + ], "crypto/chacha/chacha-ppc.s" => [ "crypto/chacha/asm/chacha-ppc.pl" ], + "crypto/chacha/chacha-riscv64-v-zbb-zvkb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl", + "zvkb" + ], + "crypto/chacha/chacha-riscv64-v-zbb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl" + ], "crypto/chacha/chacha-s390x.S" => [ "crypto/chacha/asm/chacha-s390x.pl" ], @@ -10631,6 +12486,9 @@ our %unified_info = ( "crypto/chacha/chacha-x86_64.s" => [ "crypto/chacha/asm/chacha-x86_64.pl" ], + "crypto/chacha/chachap10-ppc.s" => [ + "crypto/chacha/asm/chachap10-ppc.pl" + ], "crypto/des/crypt586.S" => [ "crypto/des/asm/crypt586.pl" ], @@ -10643,6 +12501,9 @@ our %unified_info = ( "crypto/des/dest4-sparcv9.S" => [ "crypto/des/asm/dest4-sparcv9.pl" ], + "crypto/ec/ecp_nistp384-ppc64.s" => [ + "crypto/ec/asm/ecp_nistp384-ppc64.pl" + ], "crypto/ec/ecp_nistp521-ppc64.s" => [ "crypto/ec/asm/ecp_nistp521-ppc64.pl" ], @@ -10667,6 +12528,9 @@ our %unified_info = ( "crypto/ec/ecp_nistz256-x86_64.s" => [ "crypto/ec/asm/ecp_nistz256-x86_64.pl" ], + "crypto/ec/ecp_sm2p256-armv8.S" => [ + "crypto/ec/asm/ecp_sm2p256-armv8.pl" + ], "crypto/ec/x25519-ppc64.s" => [ "crypto/ec/asm/x25519-ppc64.pl" ], @@ -10676,18 +12540,39 @@ our %unified_info = ( "crypto/ia64cpuid.s" => [ "crypto/ia64cpuid.S" ], + "crypto/loongarch64cpuid.s" => [ + "crypto/loongarch64cpuid.pl" + ], "crypto/md5/md5-586.S" => [ "crypto/md5/asm/md5-586.pl" ], + "crypto/md5/md5-aarch64.S" => [ + "crypto/md5/asm/md5-aarch64.pl" + ], + "crypto/md5/md5-loongarch64.S" => [ + "crypto/md5/asm/md5-loongarch64.pl" + ], "crypto/md5/md5-sparcv9.S" => [ "crypto/md5/asm/md5-sparcv9.pl" ], "crypto/md5/md5-x86_64.s" => [ "crypto/md5/asm/md5-x86_64.pl" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.S" => [ + "crypto/modes/asm/aes-gcm-armv8-unroll8_64.pl" + ], "crypto/modes/aes-gcm-armv8_64.S" => [ "crypto/modes/asm/aes-gcm-armv8_64.pl" ], + "crypto/modes/aes-gcm-avx512.s" => [ + "crypto/modes/asm/aes-gcm-avx512.pl" + ], + "crypto/modes/aes-gcm-ppc.s" => [ + "crypto/modes/asm/aes-gcm-ppc.pl" + ], + "crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s" => [ + "crypto/modes/asm/aes-gcm-riscv64-zvkb-zvkg-zvkned.pl" + ], "crypto/modes/aesni-gcm-x86_64.s" => [ "crypto/modes/asm/aesni-gcm-x86_64.pl" ], @@ -10706,6 +12591,15 @@ our %unified_info = ( "crypto/modes/ghash-parisc.s" => [ "crypto/modes/asm/ghash-parisc.pl" ], + "crypto/modes/ghash-riscv64-zvkb-zvbc.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkb-zvbc.pl" + ], + "crypto/modes/ghash-riscv64-zvkg.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkg.pl" + ], + "crypto/modes/ghash-riscv64.s" => [ + "crypto/modes/asm/ghash-riscv64.pl" + ], "crypto/modes/ghash-s390x.S" => [ "crypto/modes/asm/ghash-s390x.pl" ], @@ -10724,6 +12618,9 @@ our %unified_info = ( "crypto/modes/ghashv8-armx.S" => [ "crypto/modes/asm/ghashv8-armx.pl" ], + "crypto/params_idx.c" => [ + "crypto/params_idx.c.in" + ], "crypto/pariscid.s" => [ "crypto/pariscid.pl" ], @@ -10784,6 +12681,12 @@ our %unified_info = ( "crypto/ripemd/rmd-586.S" => [ "crypto/ripemd/asm/rmd-586.pl" ], + "crypto/riscv32cpuid.s" => [ + "crypto/riscv32cpuid.pl" + ], + "crypto/riscv64cpuid.s" => [ + "crypto/riscv64cpuid.pl" + ], "crypto/s390xcpuid.S" => [ "crypto/s390xcpuid.pl" ], @@ -10892,6 +12795,9 @@ our %unified_info = ( "crypto/sha/sha256-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S" => [ + "crypto/sha/asm/sha256-riscv64-zvkb-zvknha_or_zvknhb.pl" + ], "crypto/sha/sha256-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -10928,6 +12834,9 @@ our %unified_info = ( "crypto/sha/sha512-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha512-riscv64-zvkb-zvknhb.S" => [ + "crypto/sha/asm/sha512-riscv64-zvkb-zvknhb.pl" + ], "crypto/sha/sha512-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -10940,6 +12849,24 @@ our %unified_info = ( "crypto/sha/sha512p8-ppc.s" => [ "crypto/sha/asm/sha512p8-ppc.pl" ], + "crypto/sm3/sm3-armv8.S" => [ + "crypto/sm3/asm/sm3-armv8.pl" + ], + "crypto/sm3/sm3-riscv64-zvksh.S" => [ + "crypto/sm3/asm/sm3-riscv64-zvksh.pl" + ], + "crypto/sm4/sm4-armv8.S" => [ + "crypto/sm4/asm/sm4-armv8.pl" + ], + "crypto/sm4/sm4-riscv64-zvksed.s" => [ + "crypto/sm4/asm/sm4-riscv64-zvksed.pl" + ], + "crypto/sm4/vpsm4-armv8.S" => [ + "crypto/sm4/asm/vpsm4-armv8.pl" + ], + "crypto/sm4/vpsm4_ex-armv8.S" => [ + "crypto/sm4/asm/vpsm4_ex-armv8.pl" + ], "crypto/uplink-ia64.s" => [ "ms/uplink-ia64.pl" ], @@ -11105,6 +13032,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -11246,6 +13176,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -11282,6 +13215,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -11297,6 +13233,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -11369,6 +13308,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -11435,6 +13377,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -11534,6 +13479,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -11672,6 +13623,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -11789,6 +13743,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -11876,6 +13836,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -11948,9 +13911,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -11966,12 +13935,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -12041,9 +14016,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -12053,12 +14037,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -12074,9 +14070,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -12101,6 +14103,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -12116,6 +14121,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -12152,6 +14160,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -12425,6 +14436,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -12464,6 +14478,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -12485,6 +14502,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -12599,6 +14619,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -12626,9 +14649,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -12644,6 +14679,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -12653,12 +14691,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -12677,12 +14721,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -12692,9 +14748,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -12707,9 +14769,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -12725,24 +14799,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -12755,6 +14850,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -12764,8 +14865,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -12785,6 +14886,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -12833,6 +14949,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -12899,6 +15018,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -13022,9 +15144,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -13040,6 +15168,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -13064,9 +15195,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -13100,6 +15240,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -13157,15 +15300,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -13175,6 +15330,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -13196,9 +15354,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -13214,6 +15378,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -13226,9 +15393,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -13259,9 +15423,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -13277,12 +15438,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -13337,6 +15552,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -13346,9 +15564,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -13496,6 +15711,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -13637,6 +15855,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -13673,6 +15894,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -13688,6 +15912,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -13760,6 +15987,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -13826,6 +16056,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -13925,6 +16158,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -14063,6 +16302,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -14180,6 +16422,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -14267,6 +16515,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -14339,9 +16590,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -14357,12 +16614,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -14432,9 +16695,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -14444,12 +16716,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -14465,9 +16749,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -14492,6 +16782,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -14507,6 +16800,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -14543,6 +16839,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -14816,6 +17115,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -14855,6 +17157,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -14876,6 +17181,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -14990,6 +17298,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -15017,9 +17328,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -15035,6 +17358,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -15044,12 +17370,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -15068,11 +17400,23 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], - "doc/man/man3/SSL_get_shared_sigalgs.3" => [ - "doc/man3/SSL_get_shared_sigalgs.pod" + "doc/man/man3/SSL_get_shared_sigalgs.3" => [ + "doc/man3/SSL_get_shared_sigalgs.pod" + ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" @@ -15083,9 +17427,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -15098,9 +17448,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -15116,24 +17478,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -15146,6 +17529,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -15155,8 +17544,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -15176,6 +17565,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -15224,6 +17628,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -15290,6 +17697,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -15413,9 +17823,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -15431,6 +17847,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -15455,9 +17874,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -15491,6 +17919,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -15548,15 +17979,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -15566,6 +18009,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -15587,9 +18033,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -15605,6 +18057,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -15617,9 +18072,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -15650,9 +18102,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -15668,12 +18117,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -15728,6 +18231,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -15737,9 +18243,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -15875,6 +18378,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc/man1/openssl-sess_id.pod.in" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in" ], @@ -15911,12 +18417,30 @@ our %unified_info = ( "engines/e_padlock-x86_64.s" => [ "engines/asm/e_padlock-x86_64.pl" ], + "exporters/OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], + "exporters/libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], + "exporters/libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "exporters/openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "include/crypto/bn_conf.h" => [ "include/crypto/bn_conf.h.in" ], "include/crypto/dso_conf.h" => [ "include/crypto/dso_conf.h.in" ], + "include/internal/param_names.h" => [ + "include/internal/param_names.h.in" + ], "include/openssl/asn1.h" => [ "include/openssl/asn1.h.in" ], @@ -15932,12 +18456,18 @@ our %unified_info = ( "include/openssl/cms.h" => [ "include/openssl/cms.h.in" ], + "include/openssl/comp.h" => [ + "include/openssl/comp.h.in" + ], "include/openssl/conf.h" => [ "include/openssl/conf.h.in" ], "include/openssl/configuration.h" => [ "include/openssl/configuration.h.in" ], + "include/openssl/core_names.h" => [ + "include/openssl/core_names.h.in" + ], "include/openssl/crmf.h" => [ "include/openssl/crmf.h.in" ], @@ -15986,16 +18516,37 @@ our %unified_info = ( "include/openssl/x509.h" => [ "include/openssl/x509.h.in" ], + "include/openssl/x509_acert.h" => [ + "include/openssl/x509_acert.h.in" + ], "include/openssl/x509_vfy.h" => [ "include/openssl/x509_vfy.h.in" ], "include/openssl/x509v3.h" => [ "include/openssl/x509v3.h.in" ], + "installdata.pm" => [ + "util/mkinstallvars.pl", + "\"PREFIX=\$(INSTALLTOP)\"", + "BINDIR=bin", + "\"LIBDIR=\$(LIBDIR)\"", + "\"libdir=\$(libdir)\"", + "INCLUDEDIR=include", + "APPLINKDIR=include/openssl", + "\"ENGINESDIR=\$(ENGINESDIR)\"", + "\"MODULESDIR=\$(MODULESDIR)\"", + "\"PKGCONFIGDIR=\$(PKGCONFIGDIR)\"", + "\"CMAKECONFIGDIR=\$(CMAKECONFIGDIR)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"", + "\"VERSION=\$(VERSION)\"" + ], "libcrypto.ld" => [ "util/libcrypto.num", "libcrypto" ], + "libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], "libcrypto.rc" => [ "util/mkrc.pl", "libcrypto" @@ -16004,10 +18555,16 @@ our %unified_info = ( "util/libssl.num", "libssl" ], + "libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], "libssl.rc" => [ "util/mkrc.pl", "libssl" ], + "openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/der_digests_gen.c.in" ], @@ -16020,9 +18577,15 @@ our %unified_info = ( "providers/common/der/der_ecx_gen.c" => [ "providers/common/der/der_ecx_gen.c.in" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/der_ml_dsa_gen.c.in" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/der_rsa_gen.c.in" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/der_slh_dsa_gen.c.in" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/der_sm2_gen.c.in" ], @@ -16041,9 +18604,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/include/prov/der_ecx.h.in" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/include/prov/der_ml_dsa.h.in" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/include/prov/der_rsa.h.in" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/include/prov/der_slh_dsa.h.in" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/include/prov/der_sm2.h.in" ], @@ -16093,6 +18662,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "buffer" ], + "test/buildtest_byteorder.c" => [ + "test/generate_buildtest.pl", + "byteorder" + ], "test/buildtest_camellia.c" => [ "test/generate_buildtest.pl", "camellia" @@ -16125,10 +18698,6 @@ our %unified_info = ( "test/generate_buildtest.pl", "core_dispatch" ], - "test/buildtest_core_names.c" => [ - "test/generate_buildtest.pl", - "core_names" - ], "test/buildtest_core_object.c" => [ "test/generate_buildtest.pl", "core_object" @@ -16161,6 +18730,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "e_os2" ], + "test/buildtest_e_ostime.c" => [ + "test/generate_buildtest.pl", + "e_ostime" + ], "test/buildtest_ebcdic.c" => [ "test/generate_buildtest.pl", "ebcdic" @@ -16197,6 +18770,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "hmac" ], + "test/buildtest_hpke.c" => [ + "test/generate_buildtest.pl", + "hpke" + ], "test/buildtest_http.c" => [ "test/generate_buildtest.pl", "http" @@ -16205,6 +18782,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "idea" ], + "test/buildtest_indicator.c" => [ + "test/generate_buildtest.pl", + "indicator" + ], "test/buildtest_kdf.c" => [ "test/generate_buildtest.pl", "kdf" @@ -16225,6 +18806,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "mdc2" ], + "test/buildtest_ml_kem.c" => [ + "test/generate_buildtest.pl", + "ml_kem" + ], "test/buildtest_modes.c" => [ "test/generate_buildtest.pl", "modes" @@ -16265,6 +18850,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "provider" ], + "test/buildtest_quic.c" => [ + "test/generate_buildtest.pl", + "quic" + ], "test/buildtest_rand.c" => [ "test/generate_buildtest.pl", "rand" @@ -16321,6 +18910,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "symhacks" ], + "test/buildtest_thread.c" => [ + "test/generate_buildtest.pl", + "thread" + ], "test/buildtest_tls1.c" => [ "test/generate_buildtest.pl", "tls1" @@ -16401,6 +18994,7 @@ our %unified_info = ( "doc/html/man1/openssl-s_server.html", "doc/html/man1/openssl-s_time.html", "doc/html/man1/openssl-sess_id.html", + "doc/html/man1/openssl-skeyutl.html", "doc/html/man1/openssl-smime.html", "doc/html/man1/openssl-speed.html", "doc/html/man1/openssl-spkac.html", @@ -16450,6 +19044,7 @@ our %unified_info = ( "doc/html/man3/BIO_find_type.html", "doc/html/man3/BIO_get_data.html", "doc/html/man3/BIO_get_ex_new_index.html", + "doc/html/man3/BIO_get_rpoll_descriptor.html", "doc/html/man3/BIO_meth_new.html", "doc/html/man3/BIO_new.html", "doc/html/man3/BIO_new_CMS.html", @@ -16462,11 +19057,13 @@ our %unified_info = ( "doc/html/man3/BIO_s_connect.html", "doc/html/man3/BIO_s_core.html", "doc/html/man3/BIO_s_datagram.html", + "doc/html/man3/BIO_s_dgram_pair.html", "doc/html/man3/BIO_s_fd.html", "doc/html/man3/BIO_s_file.html", "doc/html/man3/BIO_s_mem.html", "doc/html/man3/BIO_s_null.html", "doc/html/man3/BIO_s_socket.html", + "doc/html/man3/BIO_sendmmsg.html", "doc/html/man3/BIO_set_callback.html", "doc/html/man3/BIO_should_retry.html", "doc/html/man3/BIO_socket_wait.html", @@ -16491,6 +19088,7 @@ our %unified_info = ( "doc/html/man3/BN_swap.html", "doc/html/man3/BN_zero.html", "doc/html/man3/BUF_MEM_new.html", + "doc/html/man3/CMAC_CTX.html", "doc/html/man3/CMS_EncryptedData_decrypt.html", "doc/html/man3/CMS_EncryptedData_encrypt.html", "doc/html/man3/CMS_EnvelopedData_create.html", @@ -16513,6 +19111,7 @@ our %unified_info = ( "doc/html/man3/CMS_uncompress.html", "doc/html/man3/CMS_verify.html", "doc/html/man3/CMS_verify_receipt.html", + "doc/html/man3/COMP_CTX_new.html", "doc/html/man3/CONF_modules_free.html", "doc/html/man3/CONF_modules_load_file.html", "doc/html/man3/CRYPTO_THREAD_run_once.html", @@ -16546,6 +19145,8 @@ our %unified_info = ( "doc/html/man3/DSA_size.html", "doc/html/man3/DTLS_get_data_mtu.html", "doc/html/man3/DTLS_set_timer_cb.html", + "doc/html/man3/DTLSv1_get_timeout.html", + "doc/html/man3/DTLSv1_handle_timeout.html", "doc/html/man3/DTLSv1_listen.html", "doc/html/man3/ECDSA_SIG_new.html", "doc/html/man3/ECDSA_sign.html", @@ -16592,6 +19193,7 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_ctrl.html", "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html", "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html", + "doc/html/man3/EVP_PKEY_CTX_get_algor.html", "doc/html/man3/EVP_PKEY_CTX_new.html", "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html", "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html", @@ -16631,6 +19233,8 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_verify_recover.html", "doc/html/man3/EVP_RAND.html", "doc/html/man3/EVP_SIGNATURE.html", + "doc/html/man3/EVP_SKEY.html", + "doc/html/man3/EVP_SKEYMGMT.html", "doc/html/man3/EVP_SealInit.html", "doc/html/man3/EVP_SignInit.html", "doc/html/man3/EVP_VerifyInit.html", @@ -16660,6 +19264,7 @@ our %unified_info = ( "doc/html/man3/EVP_sm3.html", "doc/html/man3/EVP_sm4_cbc.html", "doc/html/man3/EVP_whirlpool.html", + "doc/html/man3/GENERAL_NAME.html", "doc/html/man3/HMAC.html", "doc/html/man3/MD5.html", "doc/html/man3/MDC2_Init.html", @@ -16684,14 +19289,18 @@ our %unified_info = ( "doc/html/man3/OPENSSL_init_ssl.html", "doc/html/man3/OPENSSL_instrument_bus.html", "doc/html/man3/OPENSSL_load_builtin_modules.html", + "doc/html/man3/OPENSSL_load_u16_le.html", "doc/html/man3/OPENSSL_malloc.html", + "doc/html/man3/OPENSSL_riscvcap.html", "doc/html/man3/OPENSSL_s390xcap.html", "doc/html/man3/OPENSSL_secure_malloc.html", "doc/html/man3/OPENSSL_strcasecmp.html", "doc/html/man3/OSSL_ALGORITHM.html", "doc/html/man3/OSSL_CALLBACK.html", + "doc/html/man3/OSSL_CMP_ATAV_set0.html", "doc/html/man3/OSSL_CMP_CTX_new.html", "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html", + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html", "doc/html/man3/OSSL_CMP_ITAV_set0.html", "doc/html/man3/OSSL_CMP_MSG_get0_header.html", "doc/html/man3/OSSL_CMP_MSG_http_perform.html", @@ -16715,18 +19324,27 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_CTX.html", "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html", "doc/html/man3/OSSL_ENCODER_to_bio.html", + "doc/html/man3/OSSL_ERR_STATE_save.html", "doc/html/man3/OSSL_ESS_check_signing_certs.html", + "doc/html/man3/OSSL_GENERAL_NAMES_print.html", + "doc/html/man3/OSSL_HPKE_CTX_new.html", "doc/html/man3/OSSL_HTTP_REQ_CTX.html", "doc/html/man3/OSSL_HTTP_parse_url.html", "doc/html/man3/OSSL_HTTP_transfer.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html", + "doc/html/man3/OSSL_INDICATOR_set_callback.html", "doc/html/man3/OSSL_ITEM.html", "doc/html/man3/OSSL_LIB_CTX.html", + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html", "doc/html/man3/OSSL_PARAM.html", "doc/html/man3/OSSL_PARAM_BLD.html", "doc/html/man3/OSSL_PARAM_allocate_from_text.html", "doc/html/man3/OSSL_PARAM_dup.html", "doc/html/man3/OSSL_PARAM_int.html", + "doc/html/man3/OSSL_PARAM_print_to_bio.html", "doc/html/man3/OSSL_PROVIDER.html", + "doc/html/man3/OSSL_QUIC_client_method.html", "doc/html/man3/OSSL_SELF_TEST_new.html", "doc/html/man3/OSSL_SELF_TEST_set_callback.html", "doc/html/man3/OSSL_STORE_INFO.html", @@ -16735,11 +19353,13 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_attach.html", "doc/html/man3/OSSL_STORE_expect.html", "doc/html/man3/OSSL_STORE_open.html", + "doc/html/man3/OSSL_sleep.html", "doc/html/man3/OSSL_trace_enabled.html", "doc/html/man3/OSSL_trace_get_category_num.html", "doc/html/man3/OSSL_trace_set_channel.html", "doc/html/man3/OpenSSL_add_all_algorithms.html", "doc/html/man3/OpenSSL_version.html", + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html", "doc/html/man3/PEM_X509_INFO_read_bio_ex.html", "doc/html/man3/PEM_bytes_read_bio.html", "doc/html/man3/PEM_read.html", @@ -16752,6 +19372,7 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_create_cert.html", "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html", "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html", + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html", "doc/html/man3/PKCS12_add1_attr_by_NID.html", "doc/html/man3/PKCS12_add_CSPName_asc.html", "doc/html/man3/PKCS12_add_cert.html", @@ -16843,6 +19464,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_sess_set_get_cb.html", "doc/html/man3/SSL_CTX_sessions.html", "doc/html/man3/SSL_CTX_set0_CA_list.html", + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html", "doc/html/man3/SSL_CTX_set1_curves.html", "doc/html/man3/SSL_CTX_set1_sigalgs.html", "doc/html/man3/SSL_CTX_set1_verify_cert_store.html", @@ -16856,6 +19478,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_ct_validation_callback.html", "doc/html/man3/SSL_CTX_set_ctlog_list_file.html", "doc/html/man3/SSL_CTX_set_default_passwd_cb.html", + "doc/html/man3/SSL_CTX_set_domain_flags.html", "doc/html/man3/SSL_CTX_set_generate_session_id.html", "doc/html/man3/SSL_CTX_set_info_callback.html", "doc/html/man3/SSL_CTX_set_keylog_callback.html", @@ -16863,6 +19486,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_min_proto_version.html", "doc/html/man3/SSL_CTX_set_mode.html", "doc/html/man3/SSL_CTX_set_msg_callback.html", + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html", "doc/html/man3/SSL_CTX_set_num_tickets.html", "doc/html/man3/SSL_CTX_set_options.html", "doc/html/man3/SSL_CTX_set_psk_client_callback.html", @@ -16901,6 +19525,7 @@ our %unified_info = ( "doc/html/man3/SSL_SESSION_print.html", "doc/html/man3/SSL_SESSION_set1_id.html", "doc/html/man3/SSL_accept.html", + "doc/html/man3/SSL_accept_stream.html", "doc/html/man3/SSL_alert_type_string.html", "doc/html/man3/SSL_alloc_buffers.html", "doc/html/man3/SSL_check_chain.html", @@ -16910,59 +19535,90 @@ our %unified_info = ( "doc/html/man3/SSL_export_keying_material.html", "doc/html/man3/SSL_extension_supported.html", "doc/html/man3/SSL_free.html", + "doc/html/man3/SSL_get0_connection.html", + "doc/html/man3/SSL_get0_group_name.html", + "doc/html/man3/SSL_get0_peer_rpk.html", "doc/html/man3/SSL_get0_peer_scts.html", + "doc/html/man3/SSL_get1_builtin_sigalgs.html", "doc/html/man3/SSL_get_SSL_CTX.html", "doc/html/man3/SSL_get_all_async_fds.html", "doc/html/man3/SSL_get_certificate.html", "doc/html/man3/SSL_get_ciphers.html", "doc/html/man3/SSL_get_client_random.html", + "doc/html/man3/SSL_get_conn_close_info.html", "doc/html/man3/SSL_get_current_cipher.html", "doc/html/man3/SSL_get_default_timeout.html", "doc/html/man3/SSL_get_error.html", + "doc/html/man3/SSL_get_event_timeout.html", "doc/html/man3/SSL_get_extms_support.html", "doc/html/man3/SSL_get_fd.html", + "doc/html/man3/SSL_get_handshake_rtt.html", "doc/html/man3/SSL_get_peer_cert_chain.html", "doc/html/man3/SSL_get_peer_certificate.html", "doc/html/man3/SSL_get_peer_signature_nid.html", "doc/html/man3/SSL_get_peer_tmp_key.html", "doc/html/man3/SSL_get_psk_identity.html", "doc/html/man3/SSL_get_rbio.html", + "doc/html/man3/SSL_get_rpoll_descriptor.html", "doc/html/man3/SSL_get_session.html", "doc/html/man3/SSL_get_shared_sigalgs.html", + "doc/html/man3/SSL_get_stream_id.html", + "doc/html/man3/SSL_get_stream_read_state.html", + "doc/html/man3/SSL_get_value_uint.html", "doc/html/man3/SSL_get_verify_result.html", "doc/html/man3/SSL_get_version.html", "doc/html/man3/SSL_group_to_name.html", + "doc/html/man3/SSL_handle_events.html", "doc/html/man3/SSL_in_init.html", + "doc/html/man3/SSL_inject_net_dgram.html", "doc/html/man3/SSL_key_update.html", "doc/html/man3/SSL_library_init.html", "doc/html/man3/SSL_load_client_CA_file.html", "doc/html/man3/SSL_new.html", + "doc/html/man3/SSL_new_domain.html", + "doc/html/man3/SSL_new_listener.html", + "doc/html/man3/SSL_new_stream.html", "doc/html/man3/SSL_pending.html", + "doc/html/man3/SSL_poll.html", "doc/html/man3/SSL_read.html", "doc/html/man3/SSL_read_early_data.html", "doc/html/man3/SSL_rstate_string.html", "doc/html/man3/SSL_session_reused.html", "doc/html/man3/SSL_set1_host.html", + "doc/html/man3/SSL_set1_initial_peer_addr.html", + "doc/html/man3/SSL_set1_server_cert_type.html", "doc/html/man3/SSL_set_async_callback.html", "doc/html/man3/SSL_set_bio.html", + "doc/html/man3/SSL_set_blocking_mode.html", "doc/html/man3/SSL_set_connect_state.html", + "doc/html/man3/SSL_set_default_stream_mode.html", "doc/html/man3/SSL_set_fd.html", + "doc/html/man3/SSL_set_incoming_stream_policy.html", + "doc/html/man3/SSL_set_quic_tls_cbs.html", "doc/html/man3/SSL_set_retry_verify.html", "doc/html/man3/SSL_set_session.html", + "doc/html/man3/SSL_set_session_secret_cb.html", "doc/html/man3/SSL_set_shutdown.html", "doc/html/man3/SSL_set_verify_result.html", "doc/html/man3/SSL_shutdown.html", "doc/html/man3/SSL_state_string.html", + "doc/html/man3/SSL_stream_conclude.html", + "doc/html/man3/SSL_stream_reset.html", "doc/html/man3/SSL_want.html", "doc/html/man3/SSL_write.html", "doc/html/man3/TS_RESP_CTX_new.html", - "doc/html/man3/TS_VERIFY_CTX_set_certs.html", + "doc/html/man3/TS_VERIFY_CTX.html", "doc/html/man3/UI_STRING.html", "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", + "doc/html/man3/X509_ACERT_add1_attr.html", + "doc/html/man3/X509_ACERT_add_attr_nconf.html", + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html", + "doc/html/man3/X509_ACERT_get_attr.html", + "doc/html/man3/X509_ACERT_print_ex.html", "doc/html/man3/X509_ALGOR_dup.html", "doc/html/man3/X509_ATTRIBUTE.html", "doc/html/man3/X509_CRL_get0_by_serial.html", @@ -16979,6 +19635,7 @@ our %unified_info = ( "doc/html/man3/X509_REQ_get_attr.html", "doc/html/man3/X509_REQ_get_extensions.html", "doc/html/man3/X509_SIG_get0.html", + "doc/html/man3/X509_STORE_CTX_get_by_subject.html", "doc/html/man3/X509_STORE_CTX_get_error.html", "doc/html/man3/X509_STORE_CTX_new.html", "doc/html/man3/X509_STORE_CTX_set_verify_cb.html", @@ -17001,6 +19658,7 @@ our %unified_info = ( "doc/html/man3/X509_get0_notBefore.html", "doc/html/man3/X509_get0_signature.html", "doc/html/man3/X509_get0_uids.html", + "doc/html/man3/X509_get_default_cert_file.html", "doc/html/man3/X509_get_extension_flags.html", "doc/html/man3/X509_get_pubkey.html", "doc/html/man3/X509_get_serialNumber.html", @@ -17046,12 +19704,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-RC5.html", "doc/html/man7/EVP_CIPHER-SEED.html", "doc/html/man7/EVP_CIPHER-SM4.html", + "doc/html/man7/EVP_KDF-ARGON2.html", "doc/html/man7/EVP_KDF-HKDF.html", + "doc/html/man7/EVP_KDF-HMAC-DRBG.html", "doc/html/man7/EVP_KDF-KB.html", "doc/html/man7/EVP_KDF-KRB5KDF.html", "doc/html/man7/EVP_KDF-PBKDF1.html", "doc/html/man7/EVP_KDF-PBKDF2.html", "doc/html/man7/EVP_KDF-PKCS12KDF.html", + "doc/html/man7/EVP_KDF-PVKKDF.html", "doc/html/man7/EVP_KDF-SCRYPT.html", "doc/html/man7/EVP_KDF-SS.html", "doc/html/man7/EVP_KDF-SSHKDF.html", @@ -17060,7 +19721,10 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X942-ASN1.html", "doc/html/man7/EVP_KDF-X942-CONCAT.html", "doc/html/man7/EVP_KDF-X963.html", + "doc/html/man7/EVP_KEM-EC.html", + "doc/html/man7/EVP_KEM-ML-KEM.html", "doc/html/man7/EVP_KEM-RSA.html", + "doc/html/man7/EVP_KEM-X25519.html", "doc/html/man7/EVP_KEYEXCH-DH.html", "doc/html/man7/EVP_KEYEXCH-ECDH.html", "doc/html/man7/EVP_KEYEXCH-X25519.html", @@ -17072,6 +19736,7 @@ our %unified_info = ( "doc/html/man7/EVP_MAC-Poly1305.html", "doc/html/man7/EVP_MAC-Siphash.html", "doc/html/man7/EVP_MD-BLAKE2.html", + "doc/html/man7/EVP_MD-KECCAK.html", "doc/html/man7/EVP_MD-MD2.html", "doc/html/man7/EVP_MD-MD4.html", "doc/html/man7/EVP_MD-MD5-SHA1.html", @@ -17091,12 +19756,17 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-EC.html", "doc/html/man7/EVP_PKEY-FFC.html", "doc/html/man7/EVP_PKEY-HMAC.html", + "doc/html/man7/EVP_PKEY-ML-DSA.html", + "doc/html/man7/EVP_PKEY-ML-KEM.html", "doc/html/man7/EVP_PKEY-RSA.html", + "doc/html/man7/EVP_PKEY-SLH-DSA.html", "doc/html/man7/EVP_PKEY-SM2.html", "doc/html/man7/EVP_PKEY-X25519.html", + "doc/html/man7/EVP_RAND-CRNG-TEST.html", "doc/html/man7/EVP_RAND-CTR-DRBG.html", "doc/html/man7/EVP_RAND-HASH-DRBG.html", "doc/html/man7/EVP_RAND-HMAC-DRBG.html", + "doc/html/man7/EVP_RAND-JITTER.html", "doc/html/man7/EVP_RAND-SEED-SRC.html", "doc/html/man7/EVP_RAND-TEST-RAND.html", "doc/html/man7/EVP_RAND.html", @@ -17104,17 +19774,19 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-ECDSA.html", "doc/html/man7/EVP_SIGNATURE-ED25519.html", "doc/html/man7/EVP_SIGNATURE-HMAC.html", + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html", "doc/html/man7/EVP_SIGNATURE-RSA.html", + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html", "doc/html/man7/OSSL_PROVIDER-FIPS.html", "doc/html/man7/OSSL_PROVIDER-base.html", "doc/html/man7/OSSL_PROVIDER-default.html", "doc/html/man7/OSSL_PROVIDER-legacy.html", "doc/html/man7/OSSL_PROVIDER-null.html", + "doc/html/man7/OSSL_STORE-winstore.html", "doc/html/man7/RAND.html", "doc/html/man7/RSA-PSS.html", "doc/html/man7/X25519.html", "doc/html/man7/bio.html", - "doc/html/man7/crypto.html", "doc/html/man7/ct.html", "doc/html/man7/des_modes.html", "doc/html/man7/evp.html", @@ -17125,14 +19797,31 @@ our %unified_info = ( "doc/html/man7/life_cycle-mac.html", "doc/html/man7/life_cycle-pkey.html", "doc/html/man7/life_cycle-rand.html", - "doc/html/man7/migration_guide.html", "doc/html/man7/openssl-core.h.html", "doc/html/man7/openssl-core_dispatch.h.html", "doc/html/man7/openssl-core_names.h.html", "doc/html/man7/openssl-env.html", "doc/html/man7/openssl-glossary.html", + "doc/html/man7/openssl-qlog.html", + "doc/html/man7/openssl-quic-concurrency.html", + "doc/html/man7/openssl-quic.html", "doc/html/man7/openssl-threads.html", "doc/html/man7/openssl_user_macros.html", + "doc/html/man7/ossl-guide-introduction.html", + "doc/html/man7/ossl-guide-libcrypto-introduction.html", + "doc/html/man7/ossl-guide-libraries-introduction.html", + "doc/html/man7/ossl-guide-libssl-introduction.html", + "doc/html/man7/ossl-guide-migration.html", + "doc/html/man7/ossl-guide-quic-client-block.html", + "doc/html/man7/ossl-guide-quic-client-non-block.html", + "doc/html/man7/ossl-guide-quic-introduction.html", + "doc/html/man7/ossl-guide-quic-multi-stream.html", + "doc/html/man7/ossl-guide-quic-server-block.html", + "doc/html/man7/ossl-guide-quic-server-non-block.html", + "doc/html/man7/ossl-guide-tls-client-block.html", + "doc/html/man7/ossl-guide-tls-client-non-block.html", + "doc/html/man7/ossl-guide-tls-introduction.html", + "doc/html/man7/ossl-guide-tls-server-block.html", "doc/html/man7/ossl_store-file.html", "doc/html/man7/ossl_store.html", "doc/html/man7/passphrase-encoding.html", @@ -17151,10 +19840,10 @@ our %unified_info = ( "doc/html/man7/provider-object.html", "doc/html/man7/provider-rand.html", "doc/html/man7/provider-signature.html", + "doc/html/man7/provider-skeymgmt.html", "doc/html/man7/provider-storemgmt.html", "doc/html/man7/provider.html", "doc/html/man7/proxy-certificates.html", - "doc/html/man7/ssl.html", "doc/html/man7/x509.html" ] }, @@ -17169,12 +19858,21 @@ our %unified_info = ( ] }, "includes" => { + "OpenSSLConfig.cmake" => [ + "." + ], + "OpenSSLConfigVersion.cmake" => [ + "." + ], "apps/asn1parse.o" => [ "apps" ], "apps/ca.o" => [ "apps" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps" + ], "apps/ciphers.o" => [ "apps" ], @@ -17401,6 +20099,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps" + ], "apps/openssl-bin-smime.o" => [ "apps" ], @@ -17488,6 +20189,9 @@ our %unified_info = ( "apps/sess_id.o" => [ "apps" ], + "apps/skeyutl.o" => [ + "apps" + ], "apps/smime.o" => [ "apps" ], @@ -17539,6 +20243,12 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.o" => [ "crypto" ], + "crypto/aes/vpaes-armv8.o" => [ + "crypto" + ], + "crypto/aes/vpaes-loongarch64.o" => [ + "crypto" + ], "crypto/arm64cpuid.o" => [ "crypto" ], @@ -17590,9 +20300,15 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.o" => [ "crypto" ], + "crypto/chacha/chacha-armv8-sve.o" => [ + "crypto" + ], "crypto/chacha/chacha-armv8.o" => [ "crypto" ], + "crypto/chacha/chacha-loongarch64.o" => [ + "crypto" + ], "crypto/chacha/chacha-s390x.o" => [ "crypto" ], @@ -17617,15 +20333,24 @@ our %unified_info = ( "crypto/ec/ecp_s390x_nistp.o" => [ "crypto" ], + "crypto/ec/ecp_sm2p256-armv8.o" => [ + "crypto" + ], + "crypto/ec/ecx_key.o" => [ + "crypto" + ], "crypto/ec/ecx_meth.o" => [ "crypto" ], - "crypto/ec/ecx_s390x.o" => [ + "crypto/ec/libcrypto-lib-ecx_key.o" => [ "crypto" ], "crypto/ec/libcrypto-lib-ecx_meth.o" => [ "crypto" ], + "crypto/ec/libfips-lib-ecx_key.o" => [ + "crypto" + ], "crypto/evp/e_aes.o" => [ "crypto", "crypto/modes" @@ -17697,9 +20422,18 @@ our %unified_info = ( "crypto/libfips-lib-cpuid.o" => [ "." ], + "crypto/md5/md5-aarch64.o" => [ + "crypto" + ], + "crypto/md5/md5-loongarch64.o" => [ + "crypto" + ], "crypto/md5/md5-sparcv9.o" => [ "crypto" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.o" => [ + "crypto" + ], "crypto/modes/aes-gcm-armv8_64.o" => [ "crypto" ], @@ -17724,6 +20458,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-gcm128.o" => [ "crypto" ], + "crypto/params_idx.c" => [ + "util/perl" + ], "crypto/poly1305/poly1305-armv4.o" => [ "crypto" ], @@ -17745,6 +20482,9 @@ our %unified_info = ( "crypto/sha/keccak1600-armv4.o" => [ "crypto" ], + "crypto/sha/keccak1600-armv8.o" => [ + "crypto" + ], "crypto/sha/sha1-armv4-large.o" => [ "crypto" ], @@ -17790,6 +20530,18 @@ our %unified_info = ( "crypto/sha/sha512-sparcv9.o" => [ "crypto" ], + "crypto/sm3/sm3-armv8.o" => [ + "crypto" + ], + "crypto/sm4/sm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4_ex-armv8.o" => [ + "crypto" + ], "doc/man1/openssl-asn1parse.pod" => [ "doc" ], @@ -17922,6 +20674,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc" + ], "doc/man1/openssl-smime.pod" => [ "doc" ], @@ -17949,6 +20704,24 @@ our %unified_info = ( "doc/man1/openssl-x509.pod" => [ "doc" ], + "exporters/OpenSSLConfig.cmake" => [ + "." + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "." + ], + "exporters/libcrypto.pc" => [ + "." + ], + "exporters/libssl.pc" => [ + "." + ], + "exporters/openssl.pc" => [ + "." + ], + "fuzz/acert-test" => [ + "include" + ], "fuzz/asn1-test" => [ "include" ], @@ -17979,12 +20752,69 @@ our %unified_info = ( "fuzz/ct-test" => [ "include" ], + "fuzz/decoder-test" => [ + "include" + ], + "fuzz/dtlsclient-test" => [ + "include" + ], + "fuzz/dtlsserver-test" => [ + "include" + ], + "fuzz/hashtable-test" => [ + "include" + ], + "fuzz/ml-dsa-test" => [ + "include" + ], + "fuzz/ml-kem-test" => [ + "include" + ], + "fuzz/pem-test" => [ + "include" + ], + "fuzz/provider-test" => [ + "include" + ], + "fuzz/punycode-test" => [ + "include" + ], + "fuzz/quic-client-test" => [ + "include" + ], + "fuzz/quic-lcidm-test" => [ + "include" + ], + "fuzz/quic-rcidm-test" => [ + "include" + ], + "fuzz/quic-server-test" => [ + "include" + ], + "fuzz/quic-srtm-test" => [ + "include" + ], "fuzz/server-test" => [ "include" ], + "fuzz/slh-dsa-test" => [ + "include" + ], + "fuzz/smime-test" => [ + "include" + ], + "fuzz/v3name-test" => [ + "include" + ], "fuzz/x509-test" => [ "include" ], + "include/internal/param_names.h" => [ + "util/perl" + ], + "include/openssl/core_names.h" => [ + "util/perl" + ], "libcrypto" => [ ".", "include", @@ -17995,6 +20825,9 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libcrypto.pc" => [ + "." + ], "libcrypto.rc" => [ "." ], @@ -18006,9 +20839,15 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libssl.pc" => [ + "." + ], "libssl.rc" => [ "." ], + "openssl.pc" => [ + "." + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der" ], @@ -18048,6 +20887,15 @@ our %unified_info = ( "providers/common/der/der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der" ], @@ -18060,6 +20908,15 @@ our %unified_info = ( "providers/common/der/der_rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der" ], @@ -18105,12 +20962,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov" ], @@ -18141,9 +21010,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der" ], @@ -18186,9 +21061,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18201,12 +21082,24 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18219,28 +21112,39 @@ our %unified_info = ( "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libdefault.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libfips.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/liblegacy.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" + ], + "providers/libtemplate.a" => [ + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" ], "test/aborttest" => [ "include", @@ -18309,6 +21213,14 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_addr_test" => [ + "include", + "apps/include" + ], + "test/bio_base64_test" => [ + "include", + "apps/include" + ], "test/bio_callback_test" => [ "include", "apps/include" @@ -18317,11 +21229,20 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_dgram_test" => [ + "include", + "apps/include", + "." + ], "test/bio_enc_test" => [ "include", "apps/include" ], - "test/bio_memleak_test" => [ + "test/bio_memleak_test" => [ + "include", + "apps/include" + ], + "test/bio_meth_test" => [ "include", "apps/include" ], @@ -18338,6 +21259,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_tfo_test" => [ + "include", + "apps/include", + "." + ], "test/bioprinttest" => [ "include", "apps/include" @@ -18352,6 +21278,9 @@ our %unified_info = ( "include", "apps/include" ], + "test/build_wincrypt_test" => [ + "include" + ], "test/buildtest_c_aes" => [ "include" ], @@ -18367,6 +21296,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => [ "include" ], + "test/buildtest_c_byteorder" => [ + "include" + ], "test/buildtest_c_camellia" => [ "include" ], @@ -18391,9 +21323,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => [ "include" ], - "test/buildtest_c_core_names" => [ - "include" - ], "test/buildtest_c_core_object" => [ "include" ], @@ -18418,6 +21347,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => [ "include" ], + "test/buildtest_c_e_ostime" => [ + "include" + ], "test/buildtest_c_ebcdic" => [ "include" ], @@ -18445,12 +21377,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => [ "include" ], + "test/buildtest_c_hpke" => [ + "include" + ], "test/buildtest_c_http" => [ "include" ], "test/buildtest_c_idea" => [ "include" ], + "test/buildtest_c_indicator" => [ + "include" + ], "test/buildtest_c_kdf" => [ "include" ], @@ -18466,6 +21404,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => [ "include" ], + "test/buildtest_c_ml_kem" => [ + "include" + ], "test/buildtest_c_modes" => [ "include" ], @@ -18496,6 +21437,9 @@ our %unified_info = ( "test/buildtest_c_provider" => [ "include" ], + "test/buildtest_c_quic" => [ + "include" + ], "test/buildtest_c_rand" => [ "include" ], @@ -18538,6 +21482,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => [ "include" ], + "test/buildtest_c_thread" => [ + "include" + ], "test/buildtest_c_tls1" => [ "include" ], @@ -18553,10 +21500,24 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => [ "include" ], + "test/byteorder_test" => [ + "include", + "apps/include" + ], + "test/ca_internals_test" => [ + ".", + "include", + "apps/include" + ], "test/casttest" => [ "include", "apps/include" ], + "test/cert_comp_test" => [ + "include", + "apps/include", + "." + ], "test/chacha_internal_test" => [ ".", "include", @@ -18680,6 +21641,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/decoder_propq_test" => [ + ".", + "include", + "apps/include" + ], "test/defltfips_test" => [ "include", "apps/include" @@ -18695,7 +21661,8 @@ our %unified_info = ( "test/drbgtest" => [ "include", "apps/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "test/dsa_no_digest_size_test" => [ "include", @@ -18738,7 +21705,9 @@ our %unified_info = ( "test/endecode_test" => [ ".", "include", - "apps/include" + "apps/include", + "providers/common/include", + "providers/implementations/include" ], "test/endecoder_legacy_test" => [ ".", @@ -18783,6 +21752,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_pkey_dhkem_test" => [ + "include", + "apps/include" + ], "test/evp_pkey_dparams_test" => [ "include", "apps/include" @@ -18791,10 +21764,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_skey_test" => [ + "include", + "apps/include" + ], "test/evp_test" => [ "include", "apps/include" ], + "test/evp_xof_test" => [ + "include", + "apps/include" + ], "test/exdatatest" => [ "include", "apps/include" @@ -18895,22 +21876,62 @@ our %unified_info = ( ".", "include" ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/pkcs12.o" => [ ".", "include" ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + ".", + "include" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ ".", "include" ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/ssl_test-bin-handshake.o" => [ ".", "include" @@ -18944,6 +21965,10 @@ our %unified_info = ( ".", "include" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/hexstr_test" => [ ".", "include", @@ -18953,6 +21978,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/hpke_test" => [ + "include", + "apps/include" + ], "test/http_test" => [ "include", "apps/include" @@ -18965,6 +21994,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/json_test" => [ + "include", + "apps/include" + ], "test/keymgmt_internal_test" => [ ".", "include", @@ -18979,6 +22012,10 @@ our %unified_info = ( "apps/include", "." ], + "test/list_test" => [ + "include", + "apps/include" + ], "test/localetest" => [ "include", "apps/include" @@ -18992,10 +22029,27 @@ our %unified_info = ( "include", "apps/include" ], + "test/membio_test" => [ + "include", + "apps/include", + "." + ], "test/memleaktest" => [ "include", "apps/include" ], + "test/ml_dsa_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_evp_extra_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_internal_test" => [ + "include", + "apps/include" + ], "test/modes_internal_test" => [ ".", "include", @@ -19030,6 +22084,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pairwise_fail_test" => [ + "include", + "apps/include" + ], "test/param_build_test" => [ "include", "apps/include" @@ -19063,6 +22121,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pkcs12_api_test" => [ + "include", + "apps/include" + ], "test/pkcs12_format_test" => [ "include", "apps/include" @@ -19084,6 +22146,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/priority_queue_test" => [ + "include", + "apps/include" + ], "test/property_test" => [ ".", "include", @@ -19097,6 +22163,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/provider_default_search_path_test" => [ + "include", + "apps/include" + ], "test/provider_fallback_test" => [ "include", "apps/include" @@ -19123,6 +22193,97 @@ our %unified_info = ( "include", "apps/include" ], + "test/quic_ackm_test" => [ + "include", + "apps/include" + ], + "test/quic_cc_test" => [ + "include", + "apps/include" + ], + "test/quic_cfq_test" => [ + "include", + "apps/include" + ], + "test/quic_client_test" => [ + "include", + "apps/include" + ], + "test/quic_fc_test" => [ + "include", + "apps/include" + ], + "test/quic_fifd_test" => [ + "include", + "apps/include" + ], + "test/quic_lcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_multistream_test" => [ + "include", + "apps/include" + ], + "test/quic_newcid_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_qlog_test" => [ + "include", + "apps/include" + ], + "test/quic_radix_test" => [ + "include", + "apps/include" + ], + "test/quic_rcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_record_test" => [ + "include", + "apps/include" + ], + "test/quic_srt_gen_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_srtm_test" => [ + "include", + "apps/include" + ], + "test/quic_stream_test" => [ + "include", + "apps/include" + ], + "test/quic_tserver_test" => [ + "include", + "apps/include" + ], + "test/quic_txp_test" => [ + "include", + "apps/include" + ], + "test/quic_txpim_test" => [ + "include", + "apps/include" + ], + "test/quic_wire_test" => [ + "include", + "apps/include" + ], + "test/quicapitest" => [ + "include", + "apps/include" + ], + "test/quicfaultstest" => [ + "include", + "apps/include", + "." + ], "test/rand_status_test" => [ "include", "apps/include" @@ -19143,14 +22304,20 @@ our %unified_info = ( "include", "apps/include" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "include", - "apps/include" + "apps/include", + "crypto" ], "test/recordlentest" => [ "include", "apps/include" ], + "test/rpktest" => [ + "include", + "apps/include", + "." + ], "test/rsa_complex" => [ "include", "apps/include" @@ -19169,6 +22336,15 @@ our %unified_info = ( "include", "apps/include" ], + "test/rsa_x931_test" => [ + ".", + "include", + "apps/include" + ], + "test/safe_math_test" => [ + "include", + "apps/include" + ], "test/sanitytest" => [ "include", "apps/include" @@ -19190,6 +22366,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/slh_dsa_test" => [ + "include", + "apps/include" + ], "test/sm2_internal_test" => [ "include", "apps/include" @@ -19220,6 +22400,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/ssl_handshake_rtt_test" => [ + "include", + "apps/include", + "." + ], "test/ssl_old_test" => [ ".", "include", @@ -19236,6 +22421,7 @@ our %unified_info = ( "test/sslapitest" => [ "include", "apps/include", + "providers/common/include", "." ], "test/sslbuffertest" => [ @@ -19250,6 +22436,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/strtoultest" => [ + "include", + "apps/include" + ], "test/sysdefaulttest" => [ "include", "apps/include" @@ -19258,7 +22448,13 @@ our %unified_info = ( "include", "apps/include" ], + "test/threadpool_test" => [ + ".", + "include", + "apps/include" + ], "test/threadstest" => [ + ".", "include", "apps/include" ], @@ -19270,6 +22466,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/time_test" => [ + "include", + "apps/include" + ], "test/tls13ccstest" => [ "include", "apps/include" @@ -19279,6 +22479,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/tls13groupselection_test" => [ + "include", + "apps/include" + ], "test/trace_api_test" => [ ".", "include", @@ -19317,6 +22521,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_acert_test" => [ + "include", + "apps/include" + ], "test/x509_check_cert_pkey_test" => [ "include", "apps/include" @@ -19330,6 +22538,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_load_cert_file_test" => [ + "include", + "apps/include" + ], + "test/x509_req_test" => [ + "include", + "apps/include" + ], + "test/x509_test" => [ + "include", + "apps/include" + ], "test/x509_time_test" => [ "include", "apps/include" @@ -19351,6 +22571,7 @@ our %unified_info = ( "providers/libdefault.a", "providers/libfips.a", "providers/liblegacy.a", + "providers/libtemplate.a", "test/libtestutil.a" ], "mandocs" => { @@ -19403,6 +22624,7 @@ our %unified_info = ( "doc/man/man1/openssl-s_server.1", "doc/man/man1/openssl-s_time.1", "doc/man/man1/openssl-sess_id.1", + "doc/man/man1/openssl-skeyutl.1", "doc/man/man1/openssl-smime.1", "doc/man/man1/openssl-speed.1", "doc/man/man1/openssl-spkac.1", @@ -19452,6 +22674,7 @@ our %unified_info = ( "doc/man/man3/BIO_find_type.3", "doc/man/man3/BIO_get_data.3", "doc/man/man3/BIO_get_ex_new_index.3", + "doc/man/man3/BIO_get_rpoll_descriptor.3", "doc/man/man3/BIO_meth_new.3", "doc/man/man3/BIO_new.3", "doc/man/man3/BIO_new_CMS.3", @@ -19464,11 +22687,13 @@ our %unified_info = ( "doc/man/man3/BIO_s_connect.3", "doc/man/man3/BIO_s_core.3", "doc/man/man3/BIO_s_datagram.3", + "doc/man/man3/BIO_s_dgram_pair.3", "doc/man/man3/BIO_s_fd.3", "doc/man/man3/BIO_s_file.3", "doc/man/man3/BIO_s_mem.3", "doc/man/man3/BIO_s_null.3", "doc/man/man3/BIO_s_socket.3", + "doc/man/man3/BIO_sendmmsg.3", "doc/man/man3/BIO_set_callback.3", "doc/man/man3/BIO_should_retry.3", "doc/man/man3/BIO_socket_wait.3", @@ -19493,6 +22718,7 @@ our %unified_info = ( "doc/man/man3/BN_swap.3", "doc/man/man3/BN_zero.3", "doc/man/man3/BUF_MEM_new.3", + "doc/man/man3/CMAC_CTX.3", "doc/man/man3/CMS_EncryptedData_decrypt.3", "doc/man/man3/CMS_EncryptedData_encrypt.3", "doc/man/man3/CMS_EnvelopedData_create.3", @@ -19515,6 +22741,7 @@ our %unified_info = ( "doc/man/man3/CMS_uncompress.3", "doc/man/man3/CMS_verify.3", "doc/man/man3/CMS_verify_receipt.3", + "doc/man/man3/COMP_CTX_new.3", "doc/man/man3/CONF_modules_free.3", "doc/man/man3/CONF_modules_load_file.3", "doc/man/man3/CRYPTO_THREAD_run_once.3", @@ -19548,6 +22775,8 @@ our %unified_info = ( "doc/man/man3/DSA_size.3", "doc/man/man3/DTLS_get_data_mtu.3", "doc/man/man3/DTLS_set_timer_cb.3", + "doc/man/man3/DTLSv1_get_timeout.3", + "doc/man/man3/DTLSv1_handle_timeout.3", "doc/man/man3/DTLSv1_listen.3", "doc/man/man3/ECDSA_SIG_new.3", "doc/man/man3/ECDSA_sign.3", @@ -19594,6 +22823,7 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_ctrl.3", "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3", "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3", + "doc/man/man3/EVP_PKEY_CTX_get_algor.3", "doc/man/man3/EVP_PKEY_CTX_new.3", "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3", "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3", @@ -19633,6 +22863,8 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_verify_recover.3", "doc/man/man3/EVP_RAND.3", "doc/man/man3/EVP_SIGNATURE.3", + "doc/man/man3/EVP_SKEY.3", + "doc/man/man3/EVP_SKEYMGMT.3", "doc/man/man3/EVP_SealInit.3", "doc/man/man3/EVP_SignInit.3", "doc/man/man3/EVP_VerifyInit.3", @@ -19662,6 +22894,7 @@ our %unified_info = ( "doc/man/man3/EVP_sm3.3", "doc/man/man3/EVP_sm4_cbc.3", "doc/man/man3/EVP_whirlpool.3", + "doc/man/man3/GENERAL_NAME.3", "doc/man/man3/HMAC.3", "doc/man/man3/MD5.3", "doc/man/man3/MDC2_Init.3", @@ -19686,14 +22919,18 @@ our %unified_info = ( "doc/man/man3/OPENSSL_init_ssl.3", "doc/man/man3/OPENSSL_instrument_bus.3", "doc/man/man3/OPENSSL_load_builtin_modules.3", + "doc/man/man3/OPENSSL_load_u16_le.3", "doc/man/man3/OPENSSL_malloc.3", + "doc/man/man3/OPENSSL_riscvcap.3", "doc/man/man3/OPENSSL_s390xcap.3", "doc/man/man3/OPENSSL_secure_malloc.3", "doc/man/man3/OPENSSL_strcasecmp.3", "doc/man/man3/OSSL_ALGORITHM.3", "doc/man/man3/OSSL_CALLBACK.3", + "doc/man/man3/OSSL_CMP_ATAV_set0.3", "doc/man/man3/OSSL_CMP_CTX_new.3", "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3", + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3", "doc/man/man3/OSSL_CMP_ITAV_set0.3", "doc/man/man3/OSSL_CMP_MSG_get0_header.3", "doc/man/man3/OSSL_CMP_MSG_http_perform.3", @@ -19717,18 +22954,27 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_CTX.3", "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3", "doc/man/man3/OSSL_ENCODER_to_bio.3", + "doc/man/man3/OSSL_ERR_STATE_save.3", "doc/man/man3/OSSL_ESS_check_signing_certs.3", + "doc/man/man3/OSSL_GENERAL_NAMES_print.3", + "doc/man/man3/OSSL_HPKE_CTX_new.3", "doc/man/man3/OSSL_HTTP_REQ_CTX.3", "doc/man/man3/OSSL_HTTP_parse_url.3", "doc/man/man3/OSSL_HTTP_transfer.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3", + "doc/man/man3/OSSL_INDICATOR_set_callback.3", "doc/man/man3/OSSL_ITEM.3", "doc/man/man3/OSSL_LIB_CTX.3", + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3", "doc/man/man3/OSSL_PARAM.3", "doc/man/man3/OSSL_PARAM_BLD.3", "doc/man/man3/OSSL_PARAM_allocate_from_text.3", "doc/man/man3/OSSL_PARAM_dup.3", "doc/man/man3/OSSL_PARAM_int.3", + "doc/man/man3/OSSL_PARAM_print_to_bio.3", "doc/man/man3/OSSL_PROVIDER.3", + "doc/man/man3/OSSL_QUIC_client_method.3", "doc/man/man3/OSSL_SELF_TEST_new.3", "doc/man/man3/OSSL_SELF_TEST_set_callback.3", "doc/man/man3/OSSL_STORE_INFO.3", @@ -19737,11 +22983,13 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_attach.3", "doc/man/man3/OSSL_STORE_expect.3", "doc/man/man3/OSSL_STORE_open.3", + "doc/man/man3/OSSL_sleep.3", "doc/man/man3/OSSL_trace_enabled.3", "doc/man/man3/OSSL_trace_get_category_num.3", "doc/man/man3/OSSL_trace_set_channel.3", "doc/man/man3/OpenSSL_add_all_algorithms.3", "doc/man/man3/OpenSSL_version.3", + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3", "doc/man/man3/PEM_X509_INFO_read_bio_ex.3", "doc/man/man3/PEM_bytes_read_bio.3", "doc/man/man3/PEM_read.3", @@ -19754,6 +23002,7 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_create_cert.3", "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3", "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3", + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3", "doc/man/man3/PKCS12_add1_attr_by_NID.3", "doc/man/man3/PKCS12_add_CSPName_asc.3", "doc/man/man3/PKCS12_add_cert.3", @@ -19845,6 +23094,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_sess_set_get_cb.3", "doc/man/man3/SSL_CTX_sessions.3", "doc/man/man3/SSL_CTX_set0_CA_list.3", + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3", "doc/man/man3/SSL_CTX_set1_curves.3", "doc/man/man3/SSL_CTX_set1_sigalgs.3", "doc/man/man3/SSL_CTX_set1_verify_cert_store.3", @@ -19858,6 +23108,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_ct_validation_callback.3", "doc/man/man3/SSL_CTX_set_ctlog_list_file.3", "doc/man/man3/SSL_CTX_set_default_passwd_cb.3", + "doc/man/man3/SSL_CTX_set_domain_flags.3", "doc/man/man3/SSL_CTX_set_generate_session_id.3", "doc/man/man3/SSL_CTX_set_info_callback.3", "doc/man/man3/SSL_CTX_set_keylog_callback.3", @@ -19865,6 +23116,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_min_proto_version.3", "doc/man/man3/SSL_CTX_set_mode.3", "doc/man/man3/SSL_CTX_set_msg_callback.3", + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3", "doc/man/man3/SSL_CTX_set_num_tickets.3", "doc/man/man3/SSL_CTX_set_options.3", "doc/man/man3/SSL_CTX_set_psk_client_callback.3", @@ -19903,6 +23155,7 @@ our %unified_info = ( "doc/man/man3/SSL_SESSION_print.3", "doc/man/man3/SSL_SESSION_set1_id.3", "doc/man/man3/SSL_accept.3", + "doc/man/man3/SSL_accept_stream.3", "doc/man/man3/SSL_alert_type_string.3", "doc/man/man3/SSL_alloc_buffers.3", "doc/man/man3/SSL_check_chain.3", @@ -19912,59 +23165,90 @@ our %unified_info = ( "doc/man/man3/SSL_export_keying_material.3", "doc/man/man3/SSL_extension_supported.3", "doc/man/man3/SSL_free.3", + "doc/man/man3/SSL_get0_connection.3", + "doc/man/man3/SSL_get0_group_name.3", + "doc/man/man3/SSL_get0_peer_rpk.3", "doc/man/man3/SSL_get0_peer_scts.3", + "doc/man/man3/SSL_get1_builtin_sigalgs.3", "doc/man/man3/SSL_get_SSL_CTX.3", "doc/man/man3/SSL_get_all_async_fds.3", "doc/man/man3/SSL_get_certificate.3", "doc/man/man3/SSL_get_ciphers.3", "doc/man/man3/SSL_get_client_random.3", + "doc/man/man3/SSL_get_conn_close_info.3", "doc/man/man3/SSL_get_current_cipher.3", "doc/man/man3/SSL_get_default_timeout.3", "doc/man/man3/SSL_get_error.3", + "doc/man/man3/SSL_get_event_timeout.3", "doc/man/man3/SSL_get_extms_support.3", "doc/man/man3/SSL_get_fd.3", + "doc/man/man3/SSL_get_handshake_rtt.3", "doc/man/man3/SSL_get_peer_cert_chain.3", "doc/man/man3/SSL_get_peer_certificate.3", "doc/man/man3/SSL_get_peer_signature_nid.3", "doc/man/man3/SSL_get_peer_tmp_key.3", "doc/man/man3/SSL_get_psk_identity.3", "doc/man/man3/SSL_get_rbio.3", + "doc/man/man3/SSL_get_rpoll_descriptor.3", "doc/man/man3/SSL_get_session.3", "doc/man/man3/SSL_get_shared_sigalgs.3", + "doc/man/man3/SSL_get_stream_id.3", + "doc/man/man3/SSL_get_stream_read_state.3", + "doc/man/man3/SSL_get_value_uint.3", "doc/man/man3/SSL_get_verify_result.3", "doc/man/man3/SSL_get_version.3", "doc/man/man3/SSL_group_to_name.3", + "doc/man/man3/SSL_handle_events.3", "doc/man/man3/SSL_in_init.3", + "doc/man/man3/SSL_inject_net_dgram.3", "doc/man/man3/SSL_key_update.3", "doc/man/man3/SSL_library_init.3", "doc/man/man3/SSL_load_client_CA_file.3", "doc/man/man3/SSL_new.3", + "doc/man/man3/SSL_new_domain.3", + "doc/man/man3/SSL_new_listener.3", + "doc/man/man3/SSL_new_stream.3", "doc/man/man3/SSL_pending.3", + "doc/man/man3/SSL_poll.3", "doc/man/man3/SSL_read.3", "doc/man/man3/SSL_read_early_data.3", "doc/man/man3/SSL_rstate_string.3", "doc/man/man3/SSL_session_reused.3", "doc/man/man3/SSL_set1_host.3", + "doc/man/man3/SSL_set1_initial_peer_addr.3", + "doc/man/man3/SSL_set1_server_cert_type.3", "doc/man/man3/SSL_set_async_callback.3", "doc/man/man3/SSL_set_bio.3", + "doc/man/man3/SSL_set_blocking_mode.3", "doc/man/man3/SSL_set_connect_state.3", + "doc/man/man3/SSL_set_default_stream_mode.3", "doc/man/man3/SSL_set_fd.3", + "doc/man/man3/SSL_set_incoming_stream_policy.3", + "doc/man/man3/SSL_set_quic_tls_cbs.3", "doc/man/man3/SSL_set_retry_verify.3", "doc/man/man3/SSL_set_session.3", + "doc/man/man3/SSL_set_session_secret_cb.3", "doc/man/man3/SSL_set_shutdown.3", "doc/man/man3/SSL_set_verify_result.3", "doc/man/man3/SSL_shutdown.3", "doc/man/man3/SSL_state_string.3", + "doc/man/man3/SSL_stream_conclude.3", + "doc/man/man3/SSL_stream_reset.3", "doc/man/man3/SSL_want.3", "doc/man/man3/SSL_write.3", "doc/man/man3/TS_RESP_CTX_new.3", - "doc/man/man3/TS_VERIFY_CTX_set_certs.3", + "doc/man/man3/TS_VERIFY_CTX.3", "doc/man/man3/UI_STRING.3", "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", + "doc/man/man3/X509_ACERT_add1_attr.3", + "doc/man/man3/X509_ACERT_add_attr_nconf.3", + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3", + "doc/man/man3/X509_ACERT_get_attr.3", + "doc/man/man3/X509_ACERT_print_ex.3", "doc/man/man3/X509_ALGOR_dup.3", "doc/man/man3/X509_ATTRIBUTE.3", "doc/man/man3/X509_CRL_get0_by_serial.3", @@ -19981,6 +23265,7 @@ our %unified_info = ( "doc/man/man3/X509_REQ_get_attr.3", "doc/man/man3/X509_REQ_get_extensions.3", "doc/man/man3/X509_SIG_get0.3", + "doc/man/man3/X509_STORE_CTX_get_by_subject.3", "doc/man/man3/X509_STORE_CTX_get_error.3", "doc/man/man3/X509_STORE_CTX_new.3", "doc/man/man3/X509_STORE_CTX_set_verify_cb.3", @@ -20003,6 +23288,7 @@ our %unified_info = ( "doc/man/man3/X509_get0_notBefore.3", "doc/man/man3/X509_get0_signature.3", "doc/man/man3/X509_get0_uids.3", + "doc/man/man3/X509_get_default_cert_file.3", "doc/man/man3/X509_get_extension_flags.3", "doc/man/man3/X509_get_pubkey.3", "doc/man/man3/X509_get_serialNumber.3", @@ -20048,12 +23334,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-RC5.7", "doc/man/man7/EVP_CIPHER-SEED.7", "doc/man/man7/EVP_CIPHER-SM4.7", + "doc/man/man7/EVP_KDF-ARGON2.7", "doc/man/man7/EVP_KDF-HKDF.7", + "doc/man/man7/EVP_KDF-HMAC-DRBG.7", "doc/man/man7/EVP_KDF-KB.7", "doc/man/man7/EVP_KDF-KRB5KDF.7", "doc/man/man7/EVP_KDF-PBKDF1.7", "doc/man/man7/EVP_KDF-PBKDF2.7", "doc/man/man7/EVP_KDF-PKCS12KDF.7", + "doc/man/man7/EVP_KDF-PVKKDF.7", "doc/man/man7/EVP_KDF-SCRYPT.7", "doc/man/man7/EVP_KDF-SS.7", "doc/man/man7/EVP_KDF-SSHKDF.7", @@ -20062,7 +23351,10 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X942-ASN1.7", "doc/man/man7/EVP_KDF-X942-CONCAT.7", "doc/man/man7/EVP_KDF-X963.7", + "doc/man/man7/EVP_KEM-EC.7", + "doc/man/man7/EVP_KEM-ML-KEM.7", "doc/man/man7/EVP_KEM-RSA.7", + "doc/man/man7/EVP_KEM-X25519.7", "doc/man/man7/EVP_KEYEXCH-DH.7", "doc/man/man7/EVP_KEYEXCH-ECDH.7", "doc/man/man7/EVP_KEYEXCH-X25519.7", @@ -20074,6 +23366,7 @@ our %unified_info = ( "doc/man/man7/EVP_MAC-Poly1305.7", "doc/man/man7/EVP_MAC-Siphash.7", "doc/man/man7/EVP_MD-BLAKE2.7", + "doc/man/man7/EVP_MD-KECCAK.7", "doc/man/man7/EVP_MD-MD2.7", "doc/man/man7/EVP_MD-MD4.7", "doc/man/man7/EVP_MD-MD5-SHA1.7", @@ -20093,12 +23386,17 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-EC.7", "doc/man/man7/EVP_PKEY-FFC.7", "doc/man/man7/EVP_PKEY-HMAC.7", + "doc/man/man7/EVP_PKEY-ML-DSA.7", + "doc/man/man7/EVP_PKEY-ML-KEM.7", "doc/man/man7/EVP_PKEY-RSA.7", + "doc/man/man7/EVP_PKEY-SLH-DSA.7", "doc/man/man7/EVP_PKEY-SM2.7", "doc/man/man7/EVP_PKEY-X25519.7", + "doc/man/man7/EVP_RAND-CRNG-TEST.7", "doc/man/man7/EVP_RAND-CTR-DRBG.7", "doc/man/man7/EVP_RAND-HASH-DRBG.7", "doc/man/man7/EVP_RAND-HMAC-DRBG.7", + "doc/man/man7/EVP_RAND-JITTER.7", "doc/man/man7/EVP_RAND-SEED-SRC.7", "doc/man/man7/EVP_RAND-TEST-RAND.7", "doc/man/man7/EVP_RAND.7", @@ -20106,17 +23404,19 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-ECDSA.7", "doc/man/man7/EVP_SIGNATURE-ED25519.7", "doc/man/man7/EVP_SIGNATURE-HMAC.7", + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7", "doc/man/man7/EVP_SIGNATURE-RSA.7", + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7", "doc/man/man7/OSSL_PROVIDER-FIPS.7", "doc/man/man7/OSSL_PROVIDER-base.7", "doc/man/man7/OSSL_PROVIDER-default.7", "doc/man/man7/OSSL_PROVIDER-legacy.7", "doc/man/man7/OSSL_PROVIDER-null.7", + "doc/man/man7/OSSL_STORE-winstore.7", "doc/man/man7/RAND.7", "doc/man/man7/RSA-PSS.7", "doc/man/man7/X25519.7", "doc/man/man7/bio.7", - "doc/man/man7/crypto.7", "doc/man/man7/ct.7", "doc/man/man7/des_modes.7", "doc/man/man7/evp.7", @@ -20127,14 +23427,31 @@ our %unified_info = ( "doc/man/man7/life_cycle-mac.7", "doc/man/man7/life_cycle-pkey.7", "doc/man/man7/life_cycle-rand.7", - "doc/man/man7/migration_guide.7", "doc/man/man7/openssl-core.h.7", "doc/man/man7/openssl-core_dispatch.h.7", "doc/man/man7/openssl-core_names.h.7", "doc/man/man7/openssl-env.7", "doc/man/man7/openssl-glossary.7", + "doc/man/man7/openssl-qlog.7", + "doc/man/man7/openssl-quic-concurrency.7", + "doc/man/man7/openssl-quic.7", "doc/man/man7/openssl-threads.7", "doc/man/man7/openssl_user_macros.7", + "doc/man/man7/ossl-guide-introduction.7", + "doc/man/man7/ossl-guide-libcrypto-introduction.7", + "doc/man/man7/ossl-guide-libraries-introduction.7", + "doc/man/man7/ossl-guide-libssl-introduction.7", + "doc/man/man7/ossl-guide-migration.7", + "doc/man/man7/ossl-guide-quic-client-block.7", + "doc/man/man7/ossl-guide-quic-client-non-block.7", + "doc/man/man7/ossl-guide-quic-introduction.7", + "doc/man/man7/ossl-guide-quic-multi-stream.7", + "doc/man/man7/ossl-guide-quic-server-block.7", + "doc/man/man7/ossl-guide-quic-server-non-block.7", + "doc/man/man7/ossl-guide-tls-client-block.7", + "doc/man/man7/ossl-guide-tls-client-non-block.7", + "doc/man/man7/ossl-guide-tls-introduction.7", + "doc/man/man7/ossl-guide-tls-server-block.7", "doc/man/man7/ossl_store-file.7", "doc/man/man7/ossl_store.7", "doc/man/man7/passphrase-encoding.7", @@ -20153,10 +23470,10 @@ our %unified_info = ( "doc/man/man7/provider-object.7", "doc/man/man7/provider-rand.7", "doc/man/man7/provider-signature.7", + "doc/man/man7/provider-skeymgmt.7", "doc/man/man7/provider-storemgmt.7", "doc/man/man7/provider.7", "doc/man/man7/proxy-certificates.7", - "doc/man/man7/ssl.7", "doc/man/man7/x509.7" ] }, @@ -20168,6 +23485,7 @@ our %unified_info = ( ], "programs" => [ "apps/openssl", + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -20178,7 +23496,24 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test", "test/aborttest", "test/acvp_test", @@ -20196,21 +23531,28 @@ our %unified_info = ( "test/asynctest", "test/bad_dtls_test", "test/bftest", + "test/bio_addr_test", + "test/bio_base64_test", "test/bio_callback_test", "test/bio_core_test", + "test/bio_dgram_test", "test/bio_enc_test", "test/bio_memleak_test", + "test/bio_meth_test", "test/bio_prefix_text", "test/bio_pw_callback_test", "test/bio_readbuffer_test", + "test/bio_tfo_test", "test/bioprinttest", "test/bn_internal_test", "test/bntest", + "test/build_wincrypt_test", "test/buildtest_c_aes", "test/buildtest_c_async", "test/buildtest_c_blowfish", "test/buildtest_c_bn", "test/buildtest_c_buffer", + "test/buildtest_c_byteorder", "test/buildtest_c_camellia", "test/buildtest_c_cast", "test/buildtest_c_cmac", @@ -20219,7 +23561,6 @@ our %unified_info = ( "test/buildtest_c_conftypes", "test/buildtest_c_core", "test/buildtest_c_core_dispatch", - "test/buildtest_c_core_names", "test/buildtest_c_core_object", "test/buildtest_c_cryptoerr_legacy", "test/buildtest_c_decoder", @@ -20228,6 +23569,7 @@ our %unified_info = ( "test/buildtest_c_dsa", "test/buildtest_c_dtls1", "test/buildtest_c_e_os2", + "test/buildtest_c_e_ostime", "test/buildtest_c_ebcdic", "test/buildtest_c_ec", "test/buildtest_c_ecdh", @@ -20237,13 +23579,16 @@ our %unified_info = ( "test/buildtest_c_evp", "test/buildtest_c_fips_names", "test/buildtest_c_hmac", + "test/buildtest_c_hpke", "test/buildtest_c_http", "test/buildtest_c_idea", + "test/buildtest_c_indicator", "test/buildtest_c_kdf", "test/buildtest_c_macros", "test/buildtest_c_md4", "test/buildtest_c_md5", "test/buildtest_c_mdc2", + "test/buildtest_c_ml_kem", "test/buildtest_c_modes", "test/buildtest_c_obj_mac", "test/buildtest_c_objects", @@ -20254,6 +23599,7 @@ our %unified_info = ( "test/buildtest_c_pem2", "test/buildtest_c_prov_ssl", "test/buildtest_c_provider", + "test/buildtest_c_quic", "test/buildtest_c_rand", "test/buildtest_c_rc2", "test/buildtest_c_rc4", @@ -20268,11 +23614,14 @@ our %unified_info = ( "test/buildtest_c_stack", "test/buildtest_c_store", "test/buildtest_c_symhacks", + "test/buildtest_c_thread", "test/buildtest_c_tls1", "test/buildtest_c_ts", "test/buildtest_c_txt_db", "test/buildtest_c_types", "test/buildtest_c_whrlpool", + "test/byteorder_test", + "test/ca_internals_test", "test/casttest", "test/chacha_internal_test", "test/cipher_overhead_test", @@ -20301,6 +23650,7 @@ our %unified_info = ( "test/curve448_internal_test", "test/d2i_test", "test/danetest", + "test/decoder_propq_test", "test/defltfips_test", "test/destest", "test/dhtest", @@ -20325,9 +23675,12 @@ our %unified_info = ( "test/evp_kdf_test", "test/evp_libctx_test", "test/evp_pkey_ctx_new_from_name", + "test/evp_pkey_dhkem_test", "test/evp_pkey_dparams_test", "test/evp_pkey_provided_test", + "test/evp_skey_test", "test/evp_test", + "test/evp_xof_test", "test/exdatatest", "test/exptest", "test/ext_internal_test", @@ -20337,21 +23690,29 @@ our %unified_info = ( "test/gmdifftest", "test/hexstr_test", "test/hmactest", + "test/hpke_test", "test/http_test", "test/ideatest", "test/igetest", + "test/json_test", "test/keymgmt_internal_test", "test/lhash_test", + "test/list_test", "test/localetest", "test/mdc2_internal_test", "test/mdc2test", + "test/membio_test", "test/memleaktest", + "test/ml_dsa_test", + "test/ml_kem_evp_extra_test", + "test/ml_kem_internal_test", "test/modes_internal_test", "test/namemap_internal_test", "test/nodefltctxtest", "test/ocspapitest", "test/ossl_store_test", "test/packettest", + "test/pairwise_fail_test", "test/param_build_test", "test/params_api_test", "test/params_conversion_test", @@ -20360,36 +23721,65 @@ our %unified_info = ( "test/pbetest", "test/pem_read_depr_test", "test/pemtest", + "test/pkcs12_api_test", "test/pkcs12_format_test", "test/pkcs7_test", "test/pkey_meth_kdf_test", "test/pkey_meth_test", "test/poly1305_internal_test", + "test/priority_queue_test", "test/property_test", "test/prov_config_test", "test/provfetchtest", + "test/provider_default_search_path_test", "test/provider_fallback_test", "test/provider_internal_test", "test/provider_pkey_test", "test/provider_status_test", "test/provider_test", "test/punycode_test", + "test/quic_ackm_test", + "test/quic_cc_test", + "test/quic_cfq_test", + "test/quic_client_test", + "test/quic_fc_test", + "test/quic_fifd_test", + "test/quic_lcidm_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_qlog_test", + "test/quic_radix_test", + "test/quic_rcidm_test", + "test/quic_record_test", + "test/quic_srt_gen_test", + "test/quic_srtm_test", + "test/quic_stream_test", + "test/quic_tserver_test", + "test/quic_txp_test", + "test/quic_txpim_test", + "test/quic_wire_test", + "test/quicapitest", + "test/quicfaultstest", "test/rand_status_test", "test/rand_test", "test/rc2test", "test/rc4test", "test/rc5test", - "test/rdrand_sanitytest", + "test/rdcpu_sanitytest", "test/recordlentest", + "test/rpktest", "test/rsa_complex", "test/rsa_mp_test", "test/rsa_sp800_56b_test", "test/rsa_test", + "test/rsa_x931_test", + "test/safe_math_test", "test/sanitytest", "test/secmemtest", "test/servername_test", "test/sha_test", "test/siphash_internal_test", + "test/slh_dsa_test", "test/sm2_internal_test", "test/sm3_internal_test", "test/sm4_internal_test", @@ -20397,6 +23787,7 @@ our %unified_info = ( "test/srptest", "test/ssl_cert_table_internal_test", "test/ssl_ctx_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", @@ -20404,13 +23795,17 @@ our %unified_info = ( "test/sslbuffertest", "test/sslcorrupttest", "test/stack_test", + "test/strtoultest", "test/sysdefaulttest", "test/test_test", + "test/threadpool_test", "test/threadstest", "test/threadstest_fips", "test/time_offset_test", + "test/time_test", "test/tls13ccstest", "test/tls13encryptiontest", + "test/tls13groupselection_test", "test/trace_api_test", "test/uitest", "test/upcallstest", @@ -20420,9 +23815,13 @@ our %unified_info = ( "test/verify_extra_test", "test/versions", "test/wpackettest", + "test/x509_acert_test", "test/x509_check_cert_pkey_test", "test/x509_dup_cert_test", "test/x509_internal_test", + "test/x509_load_cert_file_test", + "test/x509_req_test", + "test/x509_test", "test/x509_time_test", "test/x509aux" ], @@ -20437,6 +23836,33 @@ our %unified_info = ( "apps/CA.pl" => [ "apps/CA.pl.in" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/ca.c" + ], + "apps/lib/ca_internals_test-bin-app_libctx.o" => [ + "apps/lib/app_libctx.c" + ], + "apps/lib/ca_internals_test-bin-app_provider.o" => [ + "apps/lib/app_provider.c" + ], + "apps/lib/ca_internals_test-bin-app_rand.o" => [ + "apps/lib/app_rand.c" + ], + "apps/lib/ca_internals_test-bin-app_x509.o" => [ + "apps/lib/app_x509.c" + ], + "apps/lib/ca_internals_test-bin-apps.o" => [ + "apps/lib/apps.c" + ], + "apps/lib/ca_internals_test-bin-apps_ui.o" => [ + "apps/lib/apps_ui.c" + ], + "apps/lib/ca_internals_test-bin-engine.o" => [ + "apps/lib/engine.c" + ], + "apps/lib/ca_internals_test-bin-fmt.o" => [ + "apps/lib/fmt.c" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/lib/cmp_mock_srv.c" ], @@ -20458,6 +23884,9 @@ our %unified_info = ( "apps/lib/libapps-lib-apps.o" => [ "apps/lib/apps.c" ], + "apps/lib/libapps-lib-apps_opt_printf.o" => [ + "apps/lib/apps_opt_printf.c" + ], "apps/lib/libapps-lib-apps_ui.o" => [ "apps/lib/apps_ui.c" ], @@ -20476,6 +23905,9 @@ our %unified_info = ( "apps/lib/libapps-lib-http_server.o" => [ "apps/lib/http_server.c" ], + "apps/lib/libapps-lib-log.o" => [ + "apps/lib/log.c" + ], "apps/lib/libapps-lib-names.o" => [ "apps/lib/names.c" ], @@ -20513,12 +23945,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -20574,6 +24008,7 @@ our %unified_info = ( "apps/openssl-bin-s_server.o", "apps/openssl-bin-s_time.o", "apps/openssl-bin-sess_id.o", + "apps/openssl-bin-skeyutl.o", "apps/openssl-bin-smime.o", "apps/openssl-bin-speed.o", "apps/openssl-bin-spkac.o", @@ -20722,6 +24157,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/sess_id.c" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/skeyutl.c" + ], "apps/openssl-bin-smime.o" => [ "apps/smime.c" ], @@ -20791,6 +24229,12 @@ our %unified_info = ( "crypto/aria/libcrypto-lib-aria.o" => [ "crypto/aria/aria.c" ], + "crypto/asn1/asn1_time_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], + "crypto/asn1/ca_internals_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], "crypto/asn1/libcrypto-lib-a_bitstr.o" => [ "crypto/asn1/a_bitstr.c" ], @@ -20983,6 +24427,9 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" => [ "crypto/asn1/x_val.c" ], + "crypto/asn1_time_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/async/arch/libcrypto-lib-async_null.o" => [ "crypto/async/arch/async_null.c" ], @@ -21076,6 +24523,9 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_dgram.o" => [ "crypto/bio/bss_dgram.c" ], + "crypto/bio/libcrypto-lib-bss_dgram_pair.o" => [ + "crypto/bio/bss_dgram_pair.c" + ], "crypto/bio/libcrypto-lib-bss_fd.o" => [ "crypto/bio/bss_fd.c" ], @@ -21289,6 +24739,9 @@ our %unified_info = ( "crypto/buffer/libfips-lib-buffer.o" => [ "crypto/buffer/buffer.c" ], + "crypto/ca_internals_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/camellia/libcrypto-lib-camellia.o" => [ "crypto/camellia/camellia.c" ], @@ -21346,6 +24799,9 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_err.o" => [ "crypto/cmp/cmp_err.c" ], + "crypto/cmp/libcrypto-lib-cmp_genm.o" => [ + "crypto/cmp/cmp_genm.c" + ], "crypto/cmp/libcrypto-lib-cmp_hdr.o" => [ "crypto/cmp/cmp_hdr.c" ], @@ -22021,9 +25477,15 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_blocks.o" => [ "crypto/err/err_blocks.c" ], + "crypto/err/libcrypto-lib-err_mark.o" => [ + "crypto/err/err_mark.c" + ], "crypto/err/libcrypto-lib-err_prn.o" => [ "crypto/err/err_prn.c" ], + "crypto/err/libcrypto-lib-err_save.o" => [ + "crypto/err/err_save.c" + ], "crypto/ess/libcrypto-lib-ess_asn1.o" => [ "crypto/ess/ess_asn1.c" ], @@ -22270,9 +25732,15 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libcrypto-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libcrypto-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libcrypto-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/evp/libfips-lib-asymcipher.o" => [ "crypto/evp/asymcipher.c" ], @@ -22318,9 +25786,6 @@ our %unified_info = ( "crypto/evp/libfips-lib-keymgmt_meth.o" => [ "crypto/evp/keymgmt_meth.c" ], - "crypto/evp/libfips-lib-m_sigver.o" => [ - "crypto/evp/m_sigver.c" - ], "crypto/evp/libfips-lib-mac_lib.o" => [ "crypto/evp/mac_lib.c" ], @@ -22339,9 +25804,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libfips-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libfips-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libfips-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/ffc/libcrypto-lib-ffc_backend.o" => [ "crypto/ffc/ffc_backend.c" ], @@ -22384,12 +25855,30 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params_validate.o" => [ "crypto/ffc/ffc_params_validate.c" ], + "crypto/hashtable/libcrypto-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libcrypto-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], + "crypto/hashtable/libfips-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libfips-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], "crypto/hmac/libcrypto-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], "crypto/hmac/libfips-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], + "crypto/hpke/libcrypto-lib-hpke.o" => [ + "crypto/hpke/hpke.c" + ], + "crypto/hpke/libcrypto-lib-hpke_util.o" => [ + "crypto/hpke/hpke_util.c" + ], "crypto/http/libcrypto-lib-http_client.o" => [ "crypto/http/http_client.c" ], @@ -22432,6 +25921,9 @@ our %unified_info = ( "crypto/libcrypto-lib-bsearch.o" => [ "crypto/bsearch.c" ], + "crypto/libcrypto-lib-comp_methods.o" => [ + "crypto/comp_methods.c" + ], "crypto/libcrypto-lib-context.o" => [ "crypto/context.c" ], @@ -22459,9 +25951,15 @@ our %unified_info = ( "crypto/libcrypto-lib-cversion.o" => [ "crypto/cversion.c" ], + "crypto/libcrypto-lib-defaults.o" => [ + "crypto/defaults.c" + ], "crypto/libcrypto-lib-der_writer.o" => [ "crypto/der_writer.c" ], + "crypto/libcrypto-lib-deterministic_nonce.o" => [ + "crypto/deterministic_nonce.c" + ], "crypto/libcrypto-lib-ebcdic.o" => [ "crypto/ebcdic.c" ], @@ -22471,6 +25969,9 @@ our %unified_info = ( "crypto/libcrypto-lib-getenv.o" => [ "crypto/getenv.c" ], + "crypto/libcrypto-lib-indicator_core.o" => [ + "crypto/indicator_core.c" + ], "crypto/libcrypto-lib-info.o" => [ "crypto/info.c" ], @@ -22522,6 +26023,9 @@ our %unified_info = ( "crypto/libcrypto-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libcrypto-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libcrypto-lib-passphrase.o" => [ "crypto/passphrase.c" ], @@ -22543,12 +26047,21 @@ our %unified_info = ( "crypto/libcrypto-lib-punycode.o" => [ "crypto/punycode.c" ], + "crypto/libcrypto-lib-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/libcrypto-lib-self_test_core.o" => [ "crypto/self_test_core.c" ], + "crypto/libcrypto-lib-sleep.o" => [ + "crypto/sleep.c" + ], "crypto/libcrypto-lib-sparse_array.o" => [ "crypto/sparse_array.c" ], + "crypto/libcrypto-lib-ssl_err.o" => [ + "crypto/ssl_err.c" + ], "crypto/libcrypto-lib-threads_lib.o" => [ "crypto/threads_lib.c" ], @@ -22561,6 +26074,9 @@ our %unified_info = ( "crypto/libcrypto-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libcrypto-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libcrypto-lib-trace.o" => [ "crypto/trace.c" ], @@ -22627,6 +26143,9 @@ our %unified_info = ( "crypto/libfips-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libfips-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libfips-lib-provider_core.o" => [ "crypto/provider_core.c" ], @@ -22651,6 +26170,9 @@ our %unified_info = ( "crypto/libfips-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libfips-lib-time.o" => [ + "crypto/time.c" + ], "crypto/md4/libcrypto-lib-md4_dgst.o" => [ "crypto/md4/md4_dgst.c" ], @@ -22672,6 +26194,60 @@ our %unified_info = ( "crypto/mdc2/libcrypto-lib-mdc2dgst.o" => [ "crypto/mdc2/mdc2dgst.c" ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_kem/libcrypto-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], + "crypto/ml_kem/libfips-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], "crypto/modes/libcrypto-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22705,6 +26281,9 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libcrypto-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/modes/libfips-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22729,6 +26308,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libfips-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/objects/libcrypto-lib-o_names.o" => [ "crypto/objects/o_names.c" ], @@ -22774,6 +26356,9 @@ our %unified_info = ( "crypto/ocsp/libcrypto-lib-v3_ocsp.o" => [ "crypto/ocsp/v3_ocsp.c" ], + "crypto/packettest-bin-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/pem/libcrypto-lib-pem_all.o" => [ "crypto/pem/pem_all.c" ], @@ -22933,6 +26518,9 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_pool.o" => [ "crypto/rand/rand_pool.c" ], + "crypto/rand/libcrypto-lib-rand_uniform.o" => [ + "crypto/rand/rand_uniform.c" + ], "crypto/rand/libcrypto-lib-randfile.o" => [ "crypto/rand/randfile.c" ], @@ -23146,6 +26734,66 @@ our %unified_info = ( "crypto/siphash/libcrypto-lib-siphash.o" => [ "crypto/siphash/siphash.c" ], + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], + "crypto/slh_dsa/libfips-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libfips-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libfips-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libfips-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libfips-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], "crypto/sm2/libcrypto-lib-sm2_crypt.o" => [ "crypto/sm2/sm2_crypt.c" ], @@ -23200,6 +26848,42 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_strings.o" => [ "crypto/store/store_strings.c" ], + "crypto/thread/arch/libcrypto-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/arch/libfips-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libfips-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libfips-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/libcrypto-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libcrypto-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libcrypto-lib-internal.o" => [ + "crypto/thread/internal.c" + ], + "crypto/thread/libfips-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libfips-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libfips-lib-internal.o" => [ + "crypto/thread/internal.c" + ], "crypto/ts/libcrypto-lib-ts_asn1.o" => [ "crypto/ts/ts_asn1.c" ], @@ -23284,6 +26968,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_tree.o" => [ "crypto/x509/pcy_tree.c" ], + "crypto/x509/libcrypto-lib-t_acert.o" => [ + "crypto/x509/t_acert.c" + ], "crypto/x509/libcrypto-lib-t_crl.o" => [ "crypto/x509/t_crl.c" ], @@ -23293,6 +26980,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-t_x509.o" => [ "crypto/x509/t_x509.c" ], + "crypto/x509/libcrypto-lib-v3_aaa.o" => [ + "crypto/x509/v3_aaa.c" + ], + "crypto/x509/libcrypto-lib-v3_ac_tgt.o" => [ + "crypto/x509/v3_ac_tgt.c" + ], "crypto/x509/libcrypto-lib-v3_addr.o" => [ "crypto/x509/v3_addr.c" ], @@ -23308,6 +27001,21 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_asid.o" => [ "crypto/x509/v3_asid.c" ], + "crypto/x509/libcrypto-lib-v3_attrdesc.o" => [ + "crypto/x509/v3_attrdesc.c" + ], + "crypto/x509/libcrypto-lib-v3_attrmap.o" => [ + "crypto/x509/v3_attrmap.c" + ], + "crypto/x509/libcrypto-lib-v3_audit_id.o" => [ + "crypto/x509/v3_audit_id.c" + ], + "crypto/x509/libcrypto-lib-v3_authattid.o" => [ + "crypto/x509/v3_authattid.c" + ], + "crypto/x509/libcrypto-lib-v3_battcons.o" => [ + "crypto/x509/v3_battcons.c" + ], "crypto/x509/libcrypto-lib-v3_bcons.o" => [ "crypto/x509/v3_bcons.c" ], @@ -23332,15 +27040,24 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_genn.o" => [ "crypto/x509/v3_genn.c" ], + "crypto/x509/libcrypto-lib-v3_group_ac.o" => [ + "crypto/x509/v3_group_ac.c" + ], "crypto/x509/libcrypto-lib-v3_ia5.o" => [ "crypto/x509/v3_ia5.c" ], + "crypto/x509/libcrypto-lib-v3_ind_iss.o" => [ + "crypto/x509/v3_ind_iss.c" + ], "crypto/x509/libcrypto-lib-v3_info.o" => [ "crypto/x509/v3_info.c" ], "crypto/x509/libcrypto-lib-v3_int.o" => [ "crypto/x509/v3_int.c" ], + "crypto/x509/libcrypto-lib-v3_iobo.o" => [ + "crypto/x509/v3_iobo.c" + ], "crypto/x509/libcrypto-lib-v3_ist.o" => [ "crypto/x509/v3_ist.c" ], @@ -23350,6 +27067,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_ncons.o" => [ "crypto/x509/v3_ncons.c" ], + "crypto/x509/libcrypto-lib-v3_no_ass.o" => [ + "crypto/x509/v3_no_ass.c" + ], + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o" => [ + "crypto/x509/v3_no_rev_avail.c" + ], "crypto/x509/libcrypto-lib-v3_pci.o" => [ "crypto/x509/v3_pci.c" ], @@ -23371,18 +27094,36 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_purp.o" => [ "crypto/x509/v3_purp.c" ], + "crypto/x509/libcrypto-lib-v3_rolespec.o" => [ + "crypto/x509/v3_rolespec.c" + ], "crypto/x509/libcrypto-lib-v3_san.o" => [ "crypto/x509/v3_san.c" ], + "crypto/x509/libcrypto-lib-v3_sda.o" => [ + "crypto/x509/v3_sda.c" + ], + "crypto/x509/libcrypto-lib-v3_single_use.o" => [ + "crypto/x509/v3_single_use.c" + ], "crypto/x509/libcrypto-lib-v3_skid.o" => [ "crypto/x509/v3_skid.c" ], + "crypto/x509/libcrypto-lib-v3_soa_id.o" => [ + "crypto/x509/v3_soa_id.c" + ], "crypto/x509/libcrypto-lib-v3_sxnet.o" => [ "crypto/x509/v3_sxnet.c" ], + "crypto/x509/libcrypto-lib-v3_timespec.o" => [ + "crypto/x509/v3_timespec.c" + ], "crypto/x509/libcrypto-lib-v3_tlsf.o" => [ "crypto/x509/v3_tlsf.c" ], + "crypto/x509/libcrypto-lib-v3_usernotice.o" => [ + "crypto/x509/v3_usernotice.c" + ], "crypto/x509/libcrypto-lib-v3_utf8.o" => [ "crypto/x509/v3_utf8.c" ], @@ -23392,6 +27133,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3err.o" => [ "crypto/x509/v3err.c" ], + "crypto/x509/libcrypto-lib-x509_acert.o" => [ + "crypto/x509/x509_acert.c" + ], "crypto/x509/libcrypto-lib-x509_att.o" => [ "crypto/x509/x509_att.c" ], @@ -23443,6 +27187,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_vpm.o" => [ "crypto/x509/x509_vpm.c" ], + "crypto/x509/libcrypto-lib-x509aset.o" => [ + "crypto/x509/x509aset.c" + ], "crypto/x509/libcrypto-lib-x509cset.o" => [ "crypto/x509/x509cset.c" ], @@ -23470,6 +27217,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_exten.o" => [ "crypto/x509/x_exten.c" ], + "crypto/x509/libcrypto-lib-x_ietfatt.o" => [ + "crypto/x509/x_ietfatt.c" + ], "crypto/x509/libcrypto-lib-x_name.o" => [ "crypto/x509/x_name.c" ], @@ -23491,6 +27241,16 @@ our %unified_info = ( "engines/libcrypto-lib-e_padlock.o" => [ "engines/e_padlock.c" ], + "fuzz/acert-test" => [ + "fuzz/acert-test-bin-acert.o", + "fuzz/acert-test-bin-test-corpus.o" + ], + "fuzz/acert-test-bin-acert.o" => [ + "fuzz/acert.c" + ], + "fuzz/acert-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/asn1-test" => [ "fuzz/asn1-test-bin-asn1.o", "fuzz/asn1-test-bin-fuzz_rand.o", @@ -23603,6 +27363,190 @@ our %unified_info = ( "fuzz/ct-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/decoder-test" => [ + "fuzz/decoder-test-bin-decoder.o", + "fuzz/decoder-test-bin-fuzz_rand.o", + "fuzz/decoder-test-bin-test-corpus.o" + ], + "fuzz/decoder-test-bin-decoder.o" => [ + "fuzz/decoder.c" + ], + "fuzz/decoder-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/decoder-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsclient-test" => [ + "fuzz/dtlsclient-test-bin-dtlsclient.o", + "fuzz/dtlsclient-test-bin-fuzz_rand.o", + "fuzz/dtlsclient-test-bin-test-corpus.o" + ], + "fuzz/dtlsclient-test-bin-dtlsclient.o" => [ + "fuzz/dtlsclient.c" + ], + "fuzz/dtlsclient-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsclient-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsserver-test" => [ + "fuzz/dtlsserver-test-bin-dtlsserver.o", + "fuzz/dtlsserver-test-bin-fuzz_rand.o", + "fuzz/dtlsserver-test-bin-test-corpus.o" + ], + "fuzz/dtlsserver-test-bin-dtlsserver.o" => [ + "fuzz/dtlsserver.c" + ], + "fuzz/dtlsserver-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsserver-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/hashtable-test" => [ + "fuzz/hashtable-test-bin-fuzz_rand.o", + "fuzz/hashtable-test-bin-hashtable.o", + "fuzz/hashtable-test-bin-test-corpus.o" + ], + "fuzz/hashtable-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/hashtable-test-bin-hashtable.o" => [ + "fuzz/hashtable.c" + ], + "fuzz/hashtable-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-dsa-test" => [ + "fuzz/ml-dsa-test-bin-fuzz_rand.o", + "fuzz/ml-dsa-test-bin-ml-dsa.o", + "fuzz/ml-dsa-test-bin-test-corpus.o" + ], + "fuzz/ml-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-dsa-test-bin-ml-dsa.o" => [ + "fuzz/ml-dsa.c" + ], + "fuzz/ml-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-kem-test" => [ + "fuzz/ml-kem-test-bin-fuzz_rand.o", + "fuzz/ml-kem-test-bin-ml-kem.o", + "fuzz/ml-kem-test-bin-test-corpus.o" + ], + "fuzz/ml-kem-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-kem-test-bin-ml-kem.o" => [ + "fuzz/ml-kem.c" + ], + "fuzz/ml-kem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/pem-test" => [ + "fuzz/pem-test-bin-pem.o", + "fuzz/pem-test-bin-test-corpus.o" + ], + "fuzz/pem-test-bin-pem.o" => [ + "fuzz/pem.c" + ], + "fuzz/pem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/provider-test" => [ + "fuzz/provider-test-bin-provider.o", + "fuzz/provider-test-bin-test-corpus.o" + ], + "fuzz/provider-test-bin-provider.o" => [ + "fuzz/provider.c" + ], + "fuzz/provider-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/punycode-test" => [ + "fuzz/punycode-test-bin-punycode.o", + "fuzz/punycode-test-bin-test-corpus.o" + ], + "fuzz/punycode-test-bin-punycode.o" => [ + "fuzz/punycode.c" + ], + "fuzz/punycode-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-client-test" => [ + "fuzz/quic-client-test-bin-fuzz_rand.o", + "fuzz/quic-client-test-bin-quic-client.o", + "fuzz/quic-client-test-bin-test-corpus.o" + ], + "fuzz/quic-client-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-client-test-bin-quic-client.o" => [ + "fuzz/quic-client.c" + ], + "fuzz/quic-client-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-lcidm-test" => [ + "fuzz/quic-lcidm-test-bin-fuzz_rand.o", + "fuzz/quic-lcidm-test-bin-quic-lcidm.o", + "fuzz/quic-lcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-lcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-lcidm-test-bin-quic-lcidm.o" => [ + "fuzz/quic-lcidm.c" + ], + "fuzz/quic-lcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-rcidm-test" => [ + "fuzz/quic-rcidm-test-bin-fuzz_rand.o", + "fuzz/quic-rcidm-test-bin-quic-rcidm.o", + "fuzz/quic-rcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-rcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-rcidm-test-bin-quic-rcidm.o" => [ + "fuzz/quic-rcidm.c" + ], + "fuzz/quic-rcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-server-test" => [ + "fuzz/quic-server-test-bin-fuzz_rand.o", + "fuzz/quic-server-test-bin-quic-server.o", + "fuzz/quic-server-test-bin-test-corpus.o" + ], + "fuzz/quic-server-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-server-test-bin-quic-server.o" => [ + "fuzz/quic-server.c" + ], + "fuzz/quic-server-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-srtm-test" => [ + "fuzz/quic-srtm-test-bin-fuzz_rand.o", + "fuzz/quic-srtm-test-bin-quic-srtm.o", + "fuzz/quic-srtm-test-bin-test-corpus.o" + ], + "fuzz/quic-srtm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-srtm-test-bin-quic-srtm.o" => [ + "fuzz/quic-srtm.c" + ], + "fuzz/quic-srtm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/server-test" => [ "fuzz/server-test-bin-fuzz_rand.o", "fuzz/server-test-bin-server.o", @@ -23617,6 +27561,40 @@ our %unified_info = ( "fuzz/server-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/slh-dsa-test" => [ + "fuzz/slh-dsa-test-bin-fuzz_rand.o", + "fuzz/slh-dsa-test-bin-slh-dsa.o", + "fuzz/slh-dsa-test-bin-test-corpus.o" + ], + "fuzz/slh-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/slh-dsa-test-bin-slh-dsa.o" => [ + "fuzz/slh-dsa.c" + ], + "fuzz/slh-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/smime-test" => [ + "fuzz/smime-test-bin-smime.o", + "fuzz/smime-test-bin-test-corpus.o" + ], + "fuzz/smime-test-bin-smime.o" => [ + "fuzz/smime.c" + ], + "fuzz/smime-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test" => [ + "fuzz/v3name-test-bin-test-corpus.o", + "fuzz/v3name-test-bin-v3name.o" + ], + "fuzz/v3name-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test-bin-v3name.o" => [ + "fuzz/v3name.c" + ], "fuzz/x509-test" => [ "fuzz/x509-test-bin-fuzz_rand.o", "fuzz/x509-test-bin-test-corpus.o", @@ -23736,6 +27714,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -23796,6 +27775,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -23971,7 +27951,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", + "crypto/err/libcrypto-lib-err_mark.o", "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o", "crypto/ess/libcrypto-lib-ess_asn1.o", "crypto/ess/libcrypto-lib-ess_err.o", "crypto/ess/libcrypto-lib-ess_lib.o", @@ -24054,7 +28036,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/ffc/libcrypto-lib-ffc_backend.o", "crypto/ffc/libcrypto-lib-ffc_dh.o", "crypto/ffc/libcrypto-lib-ffc_key_generate.o", @@ -24062,7 +28046,11 @@ our %unified_info = ( "crypto/ffc/libcrypto-lib-ffc_params.o", "crypto/ffc/libcrypto-lib-ffc_params_generate.o", "crypto/ffc/libcrypto-lib-ffc_params_validate.o", + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", "crypto/hmac/libcrypto-lib-hmac.o", + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o", "crypto/http/libcrypto-lib-http_client.o", "crypto/http/libcrypto-lib-http_err.o", "crypto/http/libcrypto-lib-http_lib.o", @@ -24076,6 +28064,7 @@ our %unified_info = ( "crypto/lhash/libcrypto-lib-lhash.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -24085,10 +28074,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -24106,6 +28098,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -24113,12 +28106,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/md4/libcrypto-lib-md4_dgst.o", @@ -24128,6 +28125,15 @@ our %unified_info = ( "crypto/md5/libcrypto-lib-md5_sha1.o", "crypto/mdc2/libcrypto-lib-mdc2_one.o", "crypto/mdc2/libcrypto-lib-mdc2dgst.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_kem/libcrypto-lib-ml_kem.o", "crypto/modes/libcrypto-lib-cbc128.o", "crypto/modes/libcrypto-lib-ccm128.o", "crypto/modes/libcrypto-lib-cfb128.o", @@ -24139,6 +28145,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/objects/libcrypto-lib-o_names.o", "crypto/objects/libcrypto-lib-obj_dat.o", "crypto/objects/libcrypto-lib-obj_err.o", @@ -24202,6 +28209,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rc2/libcrypto-lib-rc2_cbc.o", "crypto/rc2/libcrypto-lib-rc2_ecb.o", @@ -24250,6 +28258,16 @@ our %unified_info = ( "crypto/sha/libcrypto-lib-sha3.o", "crypto/sha/libcrypto-lib-sha512.o", "crypto/siphash/libcrypto-lib-siphash.o", + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", "crypto/sm2/libcrypto-lib-sm2_crypt.o", "crypto/sm2/libcrypto-lib-sm2_err.o", "crypto/sm2/libcrypto-lib-sm2_key.o", @@ -24267,6 +28285,12 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_register.o", "crypto/store/libcrypto-lib-store_result.o", "crypto/store/libcrypto-lib-store_strings.o", + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", "crypto/ts/libcrypto-lib-ts_asn1.o", "crypto/ts/libcrypto-lib-ts_conf.o", "crypto/ts/libcrypto-lib-ts_err.o", @@ -24295,14 +28319,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -24311,12 +28343,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -24324,13 +28361,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -24348,6 +28392,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -24357,6 +28402,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -24377,14 +28423,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -24401,12 +28448,60 @@ our %unified_info = ( "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", "ssl/libssl-lib-tls_srp.o", - "ssl/record/libssl-lib-dtls1_bitmap.o", + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o", "ssl/record/libssl-lib-rec_layer_d1.o", "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o", "ssl/statem/libssl-lib-extensions.o", "ssl/statem/libssl-lib-extensions_clnt.o", "ssl/statem/libssl-lib-extensions_cust.o", @@ -24444,12 +28539,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/der/der_ecx_key.c" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/der/der_ml_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/der/der_ml_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/der/der_rsa_gen.c" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/der/der_rsa_key.c" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/der/der_slh_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/der/der_slh_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/der/der_wrap_gen.c" ], @@ -24516,6 +28623,9 @@ our %unified_info = ( "providers/common/libfips-lib-securitycheck_fips.o" => [ "providers/common/securitycheck_fips.c" ], + "providers/endecode_test-bin-legacyprov.o" => [ + "providers/legacyprov.c" + ], "providers/evp_extra_test-bin-legacyprov.o" => [ "providers/legacyprov.c" ], @@ -24530,6 +28640,9 @@ our %unified_info = ( "providers/fips/fips-dso-fips_entry.o" => [ "providers/fips/fips_entry.c" ], + "providers/fips/libfips-lib-fipsindicator.o" => [ + "providers/fips/fipsindicator.c" + ], "providers/fips/libfips-lib-fipsprov.o" => [ "providers/fips/fipsprov.c" ], @@ -24593,6 +28706,15 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o" => [ "providers/implementations/ciphers/cipher_aes_gcm_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o" => [ "providers/implementations/ciphers/cipher_aes_hw.c" ], @@ -24665,9 +28787,27 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o" => [ "providers/implementations/ciphers/cipher_sm4.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o" => [ "providers/implementations/ciphers/cipher_sm4_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o" => [ "providers/implementations/ciphers/cipher_tdes.c" ], @@ -24887,6 +29027,15 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" => [ "providers/implementations/encode_decode/endecoder_common.c" ], + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o" => [ + "providers/implementations/encode_decode/ml_common_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o" => [ + "providers/implementations/encode_decode/ml_dsa_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" => [ + "providers/implementations/encode_decode/ml_kem_codecs.c" + ], "providers/implementations/exchange/libdefault-lib-dh_exch.o" => [ "providers/implementations/exchange/dh_exch.c" ], @@ -24911,9 +29060,15 @@ our %unified_info = ( "providers/implementations/exchange/libfips-lib-kdf_exch.o" => [ "providers/implementations/exchange/kdf_exch.c" ], + "providers/implementations/kdfs/libdefault-lib-argon2.o" => [ + "providers/implementations/kdfs/argon2.c" + ], "providers/implementations/kdfs/libdefault-lib-hkdf.o" => [ "providers/implementations/kdfs/hkdf.c" ], + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o" => [ + "providers/implementations/kdfs/hmacdrbg_kdf.c" + ], "providers/implementations/kdfs/libdefault-lib-kbkdf.o" => [ "providers/implementations/kdfs/kbkdf.c" ], @@ -24971,12 +29126,39 @@ our %unified_info = ( "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" => [ "providers/implementations/kdfs/pbkdf1.c" ], + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" => [ + "providers/implementations/kdfs/pvkkdf.c" + ], + "providers/implementations/kem/libdefault-lib-ec_kem.o" => [ + "providers/implementations/kem/ec_kem.c" + ], + "providers/implementations/kem/libdefault-lib-ecx_kem.o" => [ + "providers/implementations/kem/ecx_kem.c" + ], + "providers/implementations/kem/libdefault-lib-kem_util.o" => [ + "providers/implementations/kem/kem_util.c" + ], + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libdefault-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libdefault-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libfips-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libfips-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libfips-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libtemplate-lib-template_kem.o" => [ + "providers/implementations/kem/template_kem.c" + ], "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -24995,9 +29177,21 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25016,9 +29210,24 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" => [ + "providers/implementations/keymgmt/template_kmgmt.c" + ], "providers/implementations/macs/libdefault-lib-blake2b_mac.o" => [ "providers/implementations/macs/blake2b_mac.c" ], @@ -25055,9 +29264,6 @@ our %unified_info = ( "providers/implementations/macs/libfips-lib-kmac_prov.o" => [ "providers/implementations/macs/kmac_prov.c" ], - "providers/implementations/rands/libdefault-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libdefault-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25073,12 +29279,12 @@ our %unified_info = ( "providers/implementations/rands/libdefault-lib-seed_src.o" => [ "providers/implementations/rands/seed_src.c" ], + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o" => [ + "providers/implementations/rands/seed_src_jitter.c" + ], "providers/implementations/rands/libdefault-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], - "providers/implementations/rands/libfips-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libfips-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25091,6 +29297,9 @@ our %unified_info = ( "providers/implementations/rands/libfips-lib-drbg_hmac.o" => [ "providers/implementations/rands/drbg_hmac.c" ], + "providers/implementations/rands/libfips-lib-fips_crng_test.o" => [ + "providers/implementations/rands/fips_crng_test.c" + ], "providers/implementations/rands/libfips-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], @@ -25118,9 +29327,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/implementations/signature/sm2_sig.c" ], @@ -25136,15 +29351,36 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libfips-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], "providers/implementations/storemgmt/libdefault-lib-file_store.o" => [ "providers/implementations/storemgmt/file_store.c" ], "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o" => [ "providers/implementations/storemgmt/file_store_any2obj.c" ], + "providers/implementations/storemgmt/libdefault-lib-winstore_store.o" => [ + "providers/implementations/storemgmt/winstore_store.c" + ], "providers/legacy" => [ "providers/legacy-dso-legacy.res", "providers/legacy-dso-legacyprov.o", @@ -25166,8 +29402,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/libcommon-lib-provider_ctx.o", "providers/common/libcommon-lib-provider_err.o", @@ -25179,7 +29419,7 @@ our %unified_info = ( "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", "providers/implementations/digests/libcommon-lib-digestcommon.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/methods/libcommon-lib-tls_pad.o" ], "providers/libcrypto-lib-baseprov.o" => [ "providers/baseprov.c" @@ -25215,6 +29455,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -25239,7 +29482,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -25268,11 +29517,16 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o", "providers/implementations/exchange/libdefault-lib-dh_exch.o", "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", "providers/implementations/exchange/libdefault-lib-ecx_exch.o", "providers/implementations/exchange/libdefault-lib-kdf_exch.o", + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -25283,6 +29537,11 @@ our %unified_info = ( "providers/implementations/kdfs/libdefault-lib-sskdf.o", "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", "providers/implementations/kdfs/libdefault-lib-x942kdf.o", + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", @@ -25290,7 +29549,11 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libdefault-lib-blake2b_mac.o", "providers/implementations/macs/libdefault-lib-blake2s_mac.o", "providers/implementations/macs/libdefault-lib-cmac_prov.o", @@ -25299,12 +29562,12 @@ our %unified_info = ( "providers/implementations/macs/libdefault-lib-kmac_prov.o", "providers/implementations/macs/libdefault-lib-poly1305_prov.o", "providers/implementations/macs/libdefault-lib-siphash_prov.o", - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", @@ -25314,11 +29577,16 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", "providers/implementations/storemgmt/libdefault-lib-file_store.o", "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", - "ssl/libdefault-lib-s3_cbc.o" + "providers/implementations/storemgmt/libdefault-lib-winstore_store.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" ], "providers/libfips.a" => [ "crypto/aes/libfips-lib-aes_cbc.o", @@ -25420,14 +29688,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", + "crypto/evp/libfips-lib-s_lib.o", "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o", "crypto/ffc/libfips-lib-ffc_backend.o", "crypto/ffc/libfips-lib-ffc_dh.o", "crypto/ffc/libfips-lib-ffc_key_generate.o", @@ -25435,6 +29704,8 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params.o", "crypto/ffc/libfips-lib-ffc_params_generate.o", "crypto/ffc/libfips-lib-ffc_params_validate.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o", "crypto/hmac/libfips-lib-hmac.o", "crypto/lhash/libfips-lib-lhash.o", "crypto/libfips-lib-asn1_dsa.o", @@ -25457,6 +29728,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -25465,6 +29737,16 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o", + "crypto/ml_kem/libfips-lib-ml_kem.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -25473,6 +29755,7 @@ our %unified_info = ( "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o", "crypto/property/libfips-lib-defn_cache.o", "crypto/property/libfips-lib-property.o", "crypto/property/libfips-lib-property_parse.o", @@ -25501,7 +29784,23 @@ our %unified_info = ( "crypto/sha/libfips-lib-sha256.o", "crypto/sha/libfips-lib-sha3.o", "crypto/sha/libfips-lib-sha512.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o", "crypto/stack/libfips-lib-stack.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o", "providers/common/der/libfips-lib-der_rsa_sig.o", "providers/common/libfips-lib-bio_prov.o", "providers/common/libfips-lib-capabilities.o", @@ -25510,6 +29809,7 @@ our %unified_info = ( "providers/common/libfips-lib-provider_util.o", "providers/common/libfips-lib-securitycheck.o", "providers/common/libfips-lib-securitycheck_fips.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o", @@ -25547,6 +29847,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", "providers/implementations/kem/libfips-lib-rsa_kem.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", @@ -25554,24 +29856,32 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libfips-lib-cmac_prov.o", "providers/implementations/macs/libfips-lib-gmac_prov.o", "providers/implementations/macs/libfips-lib-hmac_prov.o", "providers/implementations/macs/libfips-lib-kmac_prov.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o", "providers/libcommon.a", - "ssl/libfips-lib-s3_cbc.o" + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "providers/liblegacy-lib-prov_running.o" => [ "providers/prov_running.c" @@ -25601,13 +29911,12 @@ our %unified_info = ( "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", "providers/implementations/digests/liblegacy-lib-wp_prov.o", "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o", "providers/liblegacy-lib-prov_running.o" ], - "ssl/libdefault-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" - ], - "ssl/libfips-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" + "providers/libtemplate.a" => [ + "providers/implementations/kem/libtemplate-lib-template_kem.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "ssl/libssl-lib-bio_ssl.o" => [ "ssl/bio_ssl.c" @@ -25627,6 +29936,9 @@ our %unified_info = ( "ssl/libssl-lib-pqueue.o" => [ "ssl/pqueue.c" ], + "ssl/libssl-lib-priority_queue.o" => [ + "ssl/priority_queue.c" + ], "ssl/libssl-lib-s3_enc.o" => [ "ssl/s3_enc.c" ], @@ -25642,15 +29954,15 @@ our %unified_info = ( "ssl/libssl-lib-ssl_cert.o" => [ "ssl/ssl_cert.c" ], + "ssl/libssl-lib-ssl_cert_comp.o" => [ + "ssl/ssl_cert_comp.c" + ], "ssl/libssl-lib-ssl_ciph.o" => [ "ssl/ssl_ciph.c" ], "ssl/libssl-lib-ssl_conf.o" => [ "ssl/ssl_conf.c" ], - "ssl/libssl-lib-ssl_err.o" => [ - "ssl/ssl_err.c" - ], "ssl/libssl-lib-ssl_err_legacy.o" => [ "ssl/ssl_err_legacy.c" ], @@ -25699,11 +30011,131 @@ our %unified_info = ( "ssl/libssl-lib-tls_srp.o" => [ "ssl/tls_srp.c" ], - "ssl/record/libcommon-lib-tls_pad.o" => [ - "ssl/record/tls_pad.c" + "ssl/quic/libssl-lib-cc_newreno.o" => [ + "ssl/quic/cc_newreno.c" + ], + "ssl/quic/libssl-lib-json_enc.o" => [ + "ssl/quic/json_enc.c" + ], + "ssl/quic/libssl-lib-qlog.o" => [ + "ssl/quic/qlog.c" + ], + "ssl/quic/libssl-lib-qlog_event_helpers.o" => [ + "ssl/quic/qlog_event_helpers.c" + ], + "ssl/quic/libssl-lib-quic_ackm.o" => [ + "ssl/quic/quic_ackm.c" + ], + "ssl/quic/libssl-lib-quic_cfq.o" => [ + "ssl/quic/quic_cfq.c" + ], + "ssl/quic/libssl-lib-quic_channel.o" => [ + "ssl/quic/quic_channel.c" + ], + "ssl/quic/libssl-lib-quic_demux.o" => [ + "ssl/quic/quic_demux.c" + ], + "ssl/quic/libssl-lib-quic_engine.o" => [ + "ssl/quic/quic_engine.c" + ], + "ssl/quic/libssl-lib-quic_fc.o" => [ + "ssl/quic/quic_fc.c" + ], + "ssl/quic/libssl-lib-quic_fifd.o" => [ + "ssl/quic/quic_fifd.c" + ], + "ssl/quic/libssl-lib-quic_impl.o" => [ + "ssl/quic/quic_impl.c" + ], + "ssl/quic/libssl-lib-quic_lcidm.o" => [ + "ssl/quic/quic_lcidm.c" + ], + "ssl/quic/libssl-lib-quic_method.o" => [ + "ssl/quic/quic_method.c" + ], + "ssl/quic/libssl-lib-quic_obj.o" => [ + "ssl/quic/quic_obj.c" + ], + "ssl/quic/libssl-lib-quic_port.o" => [ + "ssl/quic/quic_port.c" + ], + "ssl/quic/libssl-lib-quic_rcidm.o" => [ + "ssl/quic/quic_rcidm.c" + ], + "ssl/quic/libssl-lib-quic_reactor.o" => [ + "ssl/quic/quic_reactor.c" + ], + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o" => [ + "ssl/quic/quic_reactor_wait_ctx.c" + ], + "ssl/quic/libssl-lib-quic_record_rx.o" => [ + "ssl/quic/quic_record_rx.c" + ], + "ssl/quic/libssl-lib-quic_record_shared.o" => [ + "ssl/quic/quic_record_shared.c" + ], + "ssl/quic/libssl-lib-quic_record_tx.o" => [ + "ssl/quic/quic_record_tx.c" + ], + "ssl/quic/libssl-lib-quic_record_util.o" => [ + "ssl/quic/quic_record_util.c" ], - "ssl/record/libssl-lib-dtls1_bitmap.o" => [ - "ssl/record/dtls1_bitmap.c" + "ssl/quic/libssl-lib-quic_rstream.o" => [ + "ssl/quic/quic_rstream.c" + ], + "ssl/quic/libssl-lib-quic_rx_depack.o" => [ + "ssl/quic/quic_rx_depack.c" + ], + "ssl/quic/libssl-lib-quic_sf_list.o" => [ + "ssl/quic/quic_sf_list.c" + ], + "ssl/quic/libssl-lib-quic_srt_gen.o" => [ + "ssl/quic/quic_srt_gen.c" + ], + "ssl/quic/libssl-lib-quic_srtm.o" => [ + "ssl/quic/quic_srtm.c" + ], + "ssl/quic/libssl-lib-quic_sstream.o" => [ + "ssl/quic/quic_sstream.c" + ], + "ssl/quic/libssl-lib-quic_statm.o" => [ + "ssl/quic/quic_statm.c" + ], + "ssl/quic/libssl-lib-quic_stream_map.o" => [ + "ssl/quic/quic_stream_map.c" + ], + "ssl/quic/libssl-lib-quic_thread_assist.o" => [ + "ssl/quic/quic_thread_assist.c" + ], + "ssl/quic/libssl-lib-quic_tls.o" => [ + "ssl/quic/quic_tls.c" + ], + "ssl/quic/libssl-lib-quic_tls_api.o" => [ + "ssl/quic/quic_tls_api.c" + ], + "ssl/quic/libssl-lib-quic_trace.o" => [ + "ssl/quic/quic_trace.c" + ], + "ssl/quic/libssl-lib-quic_tserver.o" => [ + "ssl/quic/quic_tserver.c" + ], + "ssl/quic/libssl-lib-quic_txp.o" => [ + "ssl/quic/quic_txp.c" + ], + "ssl/quic/libssl-lib-quic_txpim.o" => [ + "ssl/quic/quic_txpim.c" + ], + "ssl/quic/libssl-lib-quic_types.o" => [ + "ssl/quic/quic_types.c" + ], + "ssl/quic/libssl-lib-quic_wire.o" => [ + "ssl/quic/quic_wire.c" + ], + "ssl/quic/libssl-lib-quic_wire_pkt.o" => [ + "ssl/quic/quic_wire_pkt.c" + ], + "ssl/quic/libssl-lib-uint_set.o" => [ + "ssl/quic/uint_set.c" ], "ssl/record/libssl-lib-rec_layer_d1.o" => [ "ssl/record/rec_layer_d1.c" @@ -25711,14 +30143,44 @@ our %unified_info = ( "ssl/record/libssl-lib-rec_layer_s3.o" => [ "ssl/record/rec_layer_s3.c" ], - "ssl/record/libssl-lib-ssl3_buffer.o" => [ - "ssl/record/ssl3_buffer.c" + "ssl/record/methods/libcommon-lib-tls_pad.o" => [ + "ssl/record/methods/tls_pad.c" + ], + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libfips-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libssl-lib-dtls_meth.o" => [ + "ssl/record/methods/dtls_meth.c" + ], + "ssl/record/methods/libssl-lib-ssl3_meth.o" => [ + "ssl/record/methods/ssl3_meth.c" + ], + "ssl/record/methods/libssl-lib-tls13_meth.o" => [ + "ssl/record/methods/tls13_meth.c" + ], + "ssl/record/methods/libssl-lib-tls1_meth.o" => [ + "ssl/record/methods/tls1_meth.c" ], - "ssl/record/libssl-lib-ssl3_record.o" => [ - "ssl/record/ssl3_record.c" + "ssl/record/methods/libssl-lib-tls_common.o" => [ + "ssl/record/methods/tls_common.c" ], - "ssl/record/libssl-lib-ssl3_record_tls13.o" => [ - "ssl/record/ssl3_record_tls13.c" + "ssl/record/methods/libssl-lib-tls_multib.o" => [ + "ssl/record/methods/tls_multib.c" + ], + "ssl/record/methods/libssl-lib-tlsany_meth.o" => [ + "ssl/record/methods/tlsany_meth.c" + ], + "ssl/rio/libssl-lib-poll_builder.o" => [ + "ssl/rio/poll_builder.c" + ], + "ssl/rio/libssl-lib-poll_immediate.o" => [ + "ssl/rio/poll_immediate.c" + ], + "ssl/rio/libssl-lib-rio_notifier.o" => [ + "ssl/rio/rio_notifier.c" ], "ssl/statem/libssl-lib-extensions.o" => [ "ssl/statem/extensions.c" @@ -25814,6 +30276,8 @@ our %unified_info = ( "test/asn1_string_table_test.c" ], "test/asn1_time_test" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1_time_test-bin-ctype.o", "test/asn1_time_test-bin-asn1_time_test.o" ], "test/asn1_time_test-bin-asn1_time_test.o" => [ @@ -25844,6 +30308,18 @@ our %unified_info = ( "test/bftest-bin-bftest.o" => [ "test/bftest.c" ], + "test/bio_addr_test" => [ + "test/bio_addr_test-bin-bio_addr_test.o" + ], + "test/bio_addr_test-bin-bio_addr_test.o" => [ + "test/bio_addr_test.c" + ], + "test/bio_base64_test" => [ + "test/bio_base64_test-bin-bio_base64_test.o" + ], + "test/bio_base64_test-bin-bio_base64_test.o" => [ + "test/bio_base64_test.c" + ], "test/bio_callback_test" => [ "test/bio_callback_test-bin-bio_callback_test.o" ], @@ -25856,6 +30332,12 @@ our %unified_info = ( "test/bio_core_test-bin-bio_core_test.o" => [ "test/bio_core_test.c" ], + "test/bio_dgram_test" => [ + "test/bio_dgram_test-bin-bio_dgram_test.o" + ], + "test/bio_dgram_test-bin-bio_dgram_test.o" => [ + "test/bio_dgram_test.c" + ], "test/bio_enc_test" => [ "test/bio_enc_test-bin-bio_enc_test.o" ], @@ -25868,6 +30350,12 @@ our %unified_info = ( "test/bio_memleak_test-bin-bio_memleak_test.o" => [ "test/bio_memleak_test.c" ], + "test/bio_meth_test" => [ + "test/bio_meth_test-bin-bio_meth_test.o" + ], + "test/bio_meth_test-bin-bio_meth_test.o" => [ + "test/bio_meth_test.c" + ], "test/bio_prefix_text" => [ "test/bio_prefix_text-bin-bio_prefix_text.o" ], @@ -25886,6 +30374,12 @@ our %unified_info = ( "test/bio_readbuffer_test-bin-bio_readbuffer_test.o" => [ "test/bio_readbuffer_test.c" ], + "test/bio_tfo_test" => [ + "test/bio_tfo_test-bin-bio_tfo_test.o" + ], + "test/bio_tfo_test-bin-bio_tfo_test.o" => [ + "test/bio_tfo_test.c" + ], "test/bioprinttest" => [ "test/bioprinttest-bin-bioprinttest.o" ], @@ -25904,6 +30398,12 @@ our %unified_info = ( "test/bntest-bin-bntest.o" => [ "test/bntest.c" ], + "test/build_wincrypt_test" => [ + "test/build_wincrypt_test-bin-build_wincrypt_test.o" + ], + "test/build_wincrypt_test-bin-build_wincrypt_test.o" => [ + "test/build_wincrypt_test.c" + ], "test/buildtest_c_aes" => [ "test/buildtest_c_aes-bin-buildtest_aes.o" ], @@ -25934,6 +30434,12 @@ our %unified_info = ( "test/buildtest_c_buffer-bin-buildtest_buffer.o" => [ "test/buildtest_buffer.c" ], + "test/buildtest_c_byteorder" => [ + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" + ], + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" => [ + "test/buildtest_byteorder.c" + ], "test/buildtest_c_camellia" => [ "test/buildtest_c_camellia-bin-buildtest_camellia.o" ], @@ -25982,12 +30488,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch-bin-buildtest_core_dispatch.o" => [ "test/buildtest_core_dispatch.c" ], - "test/buildtest_c_core_names" => [ - "test/buildtest_c_core_names-bin-buildtest_core_names.o" - ], - "test/buildtest_c_core_names-bin-buildtest_core_names.o" => [ - "test/buildtest_core_names.c" - ], "test/buildtest_c_core_object" => [ "test/buildtest_c_core_object-bin-buildtest_core_object.o" ], @@ -26036,6 +30536,12 @@ our %unified_info = ( "test/buildtest_c_e_os2-bin-buildtest_e_os2.o" => [ "test/buildtest_e_os2.c" ], + "test/buildtest_c_e_ostime" => [ + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" + ], + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" => [ + "test/buildtest_e_ostime.c" + ], "test/buildtest_c_ebcdic" => [ "test/buildtest_c_ebcdic-bin-buildtest_ebcdic.o" ], @@ -26090,6 +30596,12 @@ our %unified_info = ( "test/buildtest_c_hmac-bin-buildtest_hmac.o" => [ "test/buildtest_hmac.c" ], + "test/buildtest_c_hpke" => [ + "test/buildtest_c_hpke-bin-buildtest_hpke.o" + ], + "test/buildtest_c_hpke-bin-buildtest_hpke.o" => [ + "test/buildtest_hpke.c" + ], "test/buildtest_c_http" => [ "test/buildtest_c_http-bin-buildtest_http.o" ], @@ -26102,6 +30614,12 @@ our %unified_info = ( "test/buildtest_c_idea-bin-buildtest_idea.o" => [ "test/buildtest_idea.c" ], + "test/buildtest_c_indicator" => [ + "test/buildtest_c_indicator-bin-buildtest_indicator.o" + ], + "test/buildtest_c_indicator-bin-buildtest_indicator.o" => [ + "test/buildtest_indicator.c" + ], "test/buildtest_c_kdf" => [ "test/buildtest_c_kdf-bin-buildtest_kdf.o" ], @@ -26132,6 +30650,12 @@ our %unified_info = ( "test/buildtest_c_mdc2-bin-buildtest_mdc2.o" => [ "test/buildtest_mdc2.c" ], + "test/buildtest_c_ml_kem" => [ + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" + ], + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" => [ + "test/buildtest_ml_kem.c" + ], "test/buildtest_c_modes" => [ "test/buildtest_c_modes-bin-buildtest_modes.o" ], @@ -26192,6 +30716,12 @@ our %unified_info = ( "test/buildtest_c_provider-bin-buildtest_provider.o" => [ "test/buildtest_provider.c" ], + "test/buildtest_c_quic" => [ + "test/buildtest_c_quic-bin-buildtest_quic.o" + ], + "test/buildtest_c_quic-bin-buildtest_quic.o" => [ + "test/buildtest_quic.c" + ], "test/buildtest_c_rand" => [ "test/buildtest_c_rand-bin-buildtest_rand.o" ], @@ -26276,6 +30806,12 @@ our %unified_info = ( "test/buildtest_c_symhacks-bin-buildtest_symhacks.o" => [ "test/buildtest_symhacks.c" ], + "test/buildtest_c_thread" => [ + "test/buildtest_c_thread-bin-buildtest_thread.o" + ], + "test/buildtest_c_thread-bin-buildtest_thread.o" => [ + "test/buildtest_thread.c" + ], "test/buildtest_c_tls1" => [ "test/buildtest_c_tls1-bin-buildtest_tls1.o" ], @@ -26306,6 +30842,29 @@ our %unified_info = ( "test/buildtest_c_whrlpool-bin-buildtest_whrlpool.o" => [ "test/buildtest_whrlpool.c" ], + "test/byteorder_test" => [ + "test/byteorder_test-bin-byteorder_test.o" + ], + "test/byteorder_test-bin-byteorder_test.o" => [ + "test/byteorder_test.c" + ], + "test/ca_internals_test" => [ + "apps/ca_internals_test-bin-ca.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", + "crypto/ca_internals_test-bin-ctype.o", + "test/ca_internals_test-bin-ca_internals_test.o" + ], + "test/ca_internals_test-bin-ca_internals_test.o" => [ + "test/ca_internals_test.c" + ], "test/casttest" => [ "test/casttest-bin-casttest.o" ], @@ -26484,6 +31043,12 @@ our %unified_info = ( "test/danetest-bin-danetest.o" => [ "test/danetest.c" ], + "test/decoder_propq_test" => [ + "test/decoder_propq_test-bin-decoder_propq_test.o" + ], + "test/decoder_propq_test-bin-decoder_propq_test.o" => [ + "test/decoder_propq_test.c" + ], "test/defltfips_test" => [ "test/defltfips_test-bin-defltfips_test.o" ], @@ -26565,6 +31130,7 @@ our %unified_info = ( "test/ectest.c" ], "test/endecode_test" => [ + "providers/endecode_test-bin-legacyprov.o", "test/endecode_test-bin-endecode_test.o", "test/helpers/endecode_test-bin-predefined_dhparams.o" ], @@ -26597,17 +31163,29 @@ our %unified_info = ( ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", - "test/evp_extra_test-bin-evp_extra_test.o" + "test/evp_extra_test-bin-evp_extra_test.o", + "test/evp_extra_test-bin-fake_pipelineprov.o", + "test/evp_extra_test-bin-fake_rsaprov.o" ], "test/evp_extra_test-bin-evp_extra_test.o" => [ "test/evp_extra_test.c" ], + "test/evp_extra_test-bin-fake_pipelineprov.o" => [ + "test/fake_pipelineprov.c" + ], + "test/evp_extra_test-bin-fake_rsaprov.o" => [ + "test/fake_rsaprov.c" + ], "test/evp_extra_test2" => [ - "test/evp_extra_test2-bin-evp_extra_test2.o" + "test/evp_extra_test2-bin-evp_extra_test2.o", + "test/evp_extra_test2-bin-tls-provider.o" ], "test/evp_extra_test2-bin-evp_extra_test2.o" => [ "test/evp_extra_test2.c" ], + "test/evp_extra_test2-bin-tls-provider.o" => [ + "test/tls-provider.c" + ], "test/evp_fetch_prov_test" => [ "test/evp_fetch_prov_test-bin-evp_fetch_prov_test.o" ], @@ -26632,6 +31210,12 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name-bin-evp_pkey_ctx_new_from_name.o" => [ "test/evp_pkey_ctx_new_from_name.c" ], + "test/evp_pkey_dhkem_test" => [ + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" + ], + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" => [ + "test/evp_pkey_dhkem_test.c" + ], "test/evp_pkey_dparams_test" => [ "test/evp_pkey_dparams_test-bin-evp_pkey_dparams_test.o" ], @@ -26644,12 +31228,28 @@ our %unified_info = ( "test/evp_pkey_provided_test-bin-evp_pkey_provided_test.o" => [ "test/evp_pkey_provided_test.c" ], + "test/evp_skey_test" => [ + "test/evp_skey_test-bin-evp_skey_test.o", + "test/evp_skey_test-bin-fake_cipherprov.o" + ], + "test/evp_skey_test-bin-evp_skey_test.o" => [ + "test/evp_skey_test.c" + ], + "test/evp_skey_test-bin-fake_cipherprov.o" => [ + "test/fake_cipherprov.c" + ], "test/evp_test" => [ "test/evp_test-bin-evp_test.o" ], "test/evp_test-bin-evp_test.o" => [ "test/evp_test.c" ], + "test/evp_xof_test" => [ + "test/evp_xof_test-bin-evp_xof_test.o" + ], + "test/evp_xof_test-bin-evp_xof_test.o" => [ + "test/evp_xof_test.c" + ], "test/exdatatest" => [ "test/exdatatest-bin-exdatatest.o" ], @@ -26735,15 +31335,108 @@ our %unified_info = ( "test/helpers/fatalerrtest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/json_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/json_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/json_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + "test/helpers/pkcs12.c" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ "test/helpers/pkcs12.c" ], + "test/helpers/quic_multistream_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_multistream_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_multistream_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_newcid_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_newcid_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_newcid_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_radix_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_radix_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_radix_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_srt_gen_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicapitest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicapitest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicapitest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicfaultstest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicfaultstest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicfaultstest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/ssl_old_test-bin-predefined_dhparams.o" => [ "test/helpers/predefined_dhparams.c" ], @@ -26771,6 +31464,9 @@ our %unified_info = ( "test/helpers/tls13ccstest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/hexstr_test" => [ "test/hexstr_test-bin-hexstr_test.o" ], @@ -26783,6 +31479,12 @@ our %unified_info = ( "test/hmactest-bin-hmactest.o" => [ "test/hmactest.c" ], + "test/hpke_test" => [ + "test/hpke_test-bin-hpke_test.o" + ], + "test/hpke_test-bin-hpke_test.o" => [ + "test/hpke_test.c" + ], "test/http_test" => [ "test/http_test-bin-http_test.o" ], @@ -26801,6 +31503,16 @@ our %unified_info = ( "test/igetest-bin-igetest.o" => [ "test/igetest.c" ], + "test/json_test" => [ + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/json_test-bin-json_test.o" + ], + "test/json_test-bin-json_test.o" => [ + "test/json_test.c" + ], "test/keymgmt_internal_test" => [ "test/keymgmt_internal_test-bin-keymgmt_internal_test.o" ], @@ -26822,6 +31534,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -26834,6 +31547,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-tests.o", "test/testutil/libtestutil-lib-testutil_init.o" ], + "test/list_test" => [ + "test/list_test-bin-list_test.o" + ], + "test/list_test-bin-list_test.o" => [ + "test/list_test.c" + ], "test/localetest" => [ "test/localetest-bin-localetest.o" ], @@ -26852,12 +31571,36 @@ our %unified_info = ( "test/mdc2test-bin-mdc2test.o" => [ "test/mdc2test.c" ], + "test/membio_test" => [ + "test/membio_test-bin-membio_test.o" + ], + "test/membio_test-bin-membio_test.o" => [ + "test/membio_test.c" + ], "test/memleaktest" => [ "test/memleaktest-bin-memleaktest.o" ], "test/memleaktest-bin-memleaktest.o" => [ "test/memleaktest.c" ], + "test/ml_dsa_test" => [ + "test/ml_dsa_test-bin-ml_dsa_test.o" + ], + "test/ml_dsa_test-bin-ml_dsa_test.o" => [ + "test/ml_dsa_test.c" + ], + "test/ml_kem_evp_extra_test" => [ + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" + ], + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" => [ + "test/ml_kem_evp_extra_test.c" + ], + "test/ml_kem_internal_test" => [ + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" + ], + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" => [ + "test/ml_kem_internal_test.c" + ], "test/modes_internal_test" => [ "test/modes_internal_test-bin-modes_internal_test.o" ], @@ -26903,11 +31646,18 @@ our %unified_info = ( "test/p_test.c" ], "test/packettest" => [ + "crypto/packettest-bin-quic_vlint.o", "test/packettest-bin-packettest.o" ], "test/packettest-bin-packettest.o" => [ "test/packettest.c" ], + "test/pairwise_fail_test" => [ + "test/pairwise_fail_test-bin-pairwise_fail_test.o" + ], + "test/pairwise_fail_test-bin-pairwise_fail_test.o" => [ + "test/pairwise_fail_test.c" + ], "test/param_build_test" => [ "test/param_build_test-bin-param_build_test.o" ], @@ -26956,6 +31706,13 @@ our %unified_info = ( "test/pemtest-bin-pemtest.o" => [ "test/pemtest.c" ], + "test/pkcs12_api_test" => [ + "test/helpers/pkcs12_api_test-bin-pkcs12.o", + "test/pkcs12_api_test-bin-pkcs12_api_test.o" + ], + "test/pkcs12_api_test-bin-pkcs12_api_test.o" => [ + "test/pkcs12_api_test.c" + ], "test/pkcs12_format_test" => [ "test/helpers/pkcs12_format_test-bin-pkcs12.o", "test/pkcs12_format_test-bin-pkcs12_format_test.o" @@ -26987,6 +31744,12 @@ our %unified_info = ( "test/poly1305_internal_test-bin-poly1305_internal_test.o" => [ "test/poly1305_internal_test.c" ], + "test/priority_queue_test" => [ + "test/priority_queue_test-bin-priority_queue_test.o" + ], + "test/priority_queue_test-bin-priority_queue_test.o" => [ + "test/priority_queue_test.c" + ], "test/property_test" => [ "test/property_test-bin-property_test.o" ], @@ -27005,6 +31768,12 @@ our %unified_info = ( "test/provfetchtest-bin-provfetchtest.o" => [ "test/provfetchtest.c" ], + "test/provider_default_search_path_test" => [ + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" + ], + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" => [ + "test/provider_default_search_path_test.c" + ], "test/provider_fallback_test" => [ "test/provider_fallback_test-bin-provider_fallback_test.o" ], @@ -27053,6 +31822,174 @@ our %unified_info = ( "test/punycode_test-bin-punycode_test.o" => [ "test/punycode_test.c" ], + "test/quic_ackm_test" => [ + "test/quic_ackm_test-bin-cc_dummy.o", + "test/quic_ackm_test-bin-quic_ackm_test.o" + ], + "test/quic_ackm_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_ackm_test-bin-quic_ackm_test.o" => [ + "test/quic_ackm_test.c" + ], + "test/quic_cc_test" => [ + "test/quic_cc_test-bin-quic_cc_test.o" + ], + "test/quic_cc_test-bin-quic_cc_test.o" => [ + "test/quic_cc_test.c" + ], + "test/quic_cfq_test" => [ + "test/quic_cfq_test-bin-quic_cfq_test.o" + ], + "test/quic_cfq_test-bin-quic_cfq_test.o" => [ + "test/quic_cfq_test.c" + ], + "test/quic_client_test" => [ + "test/quic_client_test-bin-quic_client_test.o" + ], + "test/quic_client_test-bin-quic_client_test.o" => [ + "test/quic_client_test.c" + ], + "test/quic_fc_test" => [ + "test/quic_fc_test-bin-quic_fc_test.o" + ], + "test/quic_fc_test-bin-quic_fc_test.o" => [ + "test/quic_fc_test.c" + ], + "test/quic_fifd_test" => [ + "test/quic_fifd_test-bin-cc_dummy.o", + "test/quic_fifd_test-bin-quic_fifd_test.o" + ], + "test/quic_fifd_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_fifd_test-bin-quic_fifd_test.o" => [ + "test/quic_fifd_test.c" + ], + "test/quic_lcidm_test" => [ + "test/quic_lcidm_test-bin-quic_lcidm_test.o" + ], + "test/quic_lcidm_test-bin-quic_lcidm_test.o" => [ + "test/quic_lcidm_test.c" + ], + "test/quic_multistream_test" => [ + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/quic_multistream_test-bin-quic_multistream_test.o" + ], + "test/quic_multistream_test-bin-quic_multistream_test.o" => [ + "test/quic_multistream_test.c" + ], + "test/quic_newcid_test" => [ + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/quic_newcid_test-bin-quic_newcid_test.o" + ], + "test/quic_newcid_test-bin-quic_newcid_test.o" => [ + "test/quic_newcid_test.c" + ], + "test/quic_qlog_test" => [ + "test/quic_qlog_test-bin-quic_qlog_test.o" + ], + "test/quic_qlog_test-bin-quic_qlog_test.o" => [ + "test/quic_qlog_test.c" + ], + "test/quic_radix_test" => [ + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "test/quic_rcidm_test" => [ + "test/quic_rcidm_test-bin-quic_rcidm_test.o" + ], + "test/quic_rcidm_test-bin-quic_rcidm_test.o" => [ + "test/quic_rcidm_test.c" + ], + "test/quic_record_test" => [ + "test/quic_record_test-bin-quic_record_test.o" + ], + "test/quic_record_test-bin-quic_record_test.o" => [ + "test/quic_record_test.c" + ], + "test/quic_srt_gen_test" => [ + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" + ], + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" => [ + "test/quic_srt_gen_test.c" + ], + "test/quic_srtm_test" => [ + "test/quic_srtm_test-bin-quic_srtm_test.o" + ], + "test/quic_srtm_test-bin-quic_srtm_test.o" => [ + "test/quic_srtm_test.c" + ], + "test/quic_stream_test" => [ + "test/quic_stream_test-bin-quic_stream_test.o" + ], + "test/quic_stream_test-bin-quic_stream_test.o" => [ + "test/quic_stream_test.c" + ], + "test/quic_tserver_test" => [ + "test/quic_tserver_test-bin-quic_tserver_test.o" + ], + "test/quic_tserver_test-bin-quic_tserver_test.o" => [ + "test/quic_tserver_test.c" + ], + "test/quic_txp_test" => [ + "test/quic_txp_test-bin-cc_dummy.o", + "test/quic_txp_test-bin-quic_txp_test.o" + ], + "test/quic_txp_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_txp_test-bin-quic_txp_test.o" => [ + "test/quic_txp_test.c" + ], + "test/quic_txpim_test" => [ + "test/quic_txpim_test-bin-quic_txpim_test.o" + ], + "test/quic_txpim_test-bin-quic_txpim_test.o" => [ + "test/quic_txpim_test.c" + ], + "test/quic_wire_test" => [ + "test/quic_wire_test-bin-quic_wire_test.o" + ], + "test/quic_wire_test-bin-quic_wire_test.o" => [ + "test/quic_wire_test.c" + ], + "test/quicapitest" => [ + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/quicapitest-bin-quicapitest.o" + ], + "test/quicapitest-bin-quicapitest.o" => [ + "test/quicapitest.c" + ], + "test/quicfaultstest" => [ + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", + "test/quicfaultstest-bin-quicfaultstest.o" + ], + "test/quicfaultstest-bin-quicfaultstest.o" => [ + "test/quicfaultstest.c" + ], + "test/radix/quic_radix_test-bin-quic_radix.o" => [ + "test/radix/quic_radix.c" + ], "test/rand_status_test" => [ "test/rand_status_test-bin-rand_status_test.o" ], @@ -27083,11 +32020,11 @@ our %unified_info = ( "test/rc5test-bin-rc5test.o" => [ "test/rc5test.c" ], - "test/rdrand_sanitytest" => [ - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" + "test/rdcpu_sanitytest" => [ + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" ], - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" => [ - "test/rdrand_sanitytest.c" + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" => [ + "test/rdcpu_sanitytest.c" ], "test/recordlentest" => [ "test/helpers/recordlentest-bin-ssltestlib.o", @@ -27096,6 +32033,13 @@ our %unified_info = ( "test/recordlentest-bin-recordlentest.o" => [ "test/recordlentest.c" ], + "test/rpktest" => [ + "test/helpers/rpktest-bin-ssltestlib.o", + "test/rpktest-bin-rpktest.o" + ], + "test/rpktest-bin-rpktest.o" => [ + "test/rpktest.c" + ], "test/rsa_complex" => [ "test/rsa_complex-bin-rsa_complex.o" ], @@ -27120,6 +32064,18 @@ our %unified_info = ( "test/rsa_test-bin-rsa_test.o" => [ "test/rsa_test.c" ], + "test/rsa_x931_test" => [ + "test/rsa_x931_test-bin-rsa_x931_test.o" + ], + "test/rsa_x931_test-bin-rsa_x931_test.o" => [ + "test/rsa_x931_test.c" + ], + "test/safe_math_test" => [ + "test/safe_math_test-bin-safe_math_test.o" + ], + "test/safe_math_test-bin-safe_math_test.o" => [ + "test/safe_math_test.c" + ], "test/sanitytest" => [ "test/sanitytest-bin-sanitytest.o" ], @@ -27151,6 +32107,12 @@ our %unified_info = ( "test/siphash_internal_test-bin-siphash_internal_test.o" => [ "test/siphash_internal_test.c" ], + "test/slh_dsa_test" => [ + "test/slh_dsa_test-bin-slh_dsa_test.o" + ], + "test/slh_dsa_test-bin-slh_dsa_test.o" => [ + "test/slh_dsa_test.c" + ], "test/sm2_internal_test" => [ "test/sm2_internal_test-bin-sm2_internal_test.o" ], @@ -27193,6 +32155,13 @@ our %unified_info = ( "test/ssl_ctx_test-bin-ssl_ctx_test.o" => [ "test/ssl_ctx_test.c" ], + "test/ssl_handshake_rtt_test" => [ + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" + ], + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" => [ + "test/ssl_handshake_rtt_test.c" + ], "test/ssl_old_test" => [ "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/ssl_old_test-bin-ssl_old_test.o" @@ -27251,6 +32220,12 @@ our %unified_info = ( "test/stack_test-bin-stack_test.o" => [ "test/stack_test.c" ], + "test/strtoultest" => [ + "test/strtoultest-bin-strtoultest.o" + ], + "test/strtoultest-bin-strtoultest.o" => [ + "test/strtoultest.c" + ], "test/sysdefaulttest" => [ "test/sysdefaulttest-bin-sysdefaulttest.o" ], @@ -27281,6 +32256,9 @@ our %unified_info = ( "test/testutil/libtestutil-lib-format_output.o" => [ "test/testutil/format_output.c" ], + "test/testutil/libtestutil-lib-helper.o" => [ + "test/testutil/helper.c" + ], "test/testutil/libtestutil-lib-load.o" => [ "test/testutil/load.c" ], @@ -27314,6 +32292,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-testutil_init.o" => [ "test/testutil/testutil_init.c" ], + "test/threadpool_test" => [ + "test/threadpool_test-bin-threadpool_test.o" + ], + "test/threadpool_test-bin-threadpool_test.o" => [ + "test/threadpool_test.c" + ], "test/threadstest" => [ "test/threadstest-bin-threadstest.o" ], @@ -27332,6 +32316,12 @@ our %unified_info = ( "test/time_offset_test-bin-time_offset_test.o" => [ "test/time_offset_test.c" ], + "test/time_test" => [ + "test/time_test-bin-time_test.o" + ], + "test/time_test-bin-time_test.o" => [ + "test/time_test.c" + ], "test/tls13ccstest" => [ "test/helpers/tls13ccstest-bin-ssltestlib.o", "test/tls13ccstest-bin-tls13ccstest.o" @@ -27345,6 +32335,13 @@ our %unified_info = ( "test/tls13encryptiontest-bin-tls13encryptiontest.o" => [ "test/tls13encryptiontest.c" ], + "test/tls13groupselection_test" => [ + "test/helpers/tls13groupselection_test-bin-ssltestlib.o", + "test/tls13groupselection_test-bin-tls13groupselection_test.o" + ], + "test/tls13groupselection_test-bin-tls13groupselection_test.o" => [ + "test/tls13groupselection_test.c" + ], "test/trace_api_test" => [ "test/trace_api_test-bin-trace_api_test.o" ], @@ -27400,6 +32397,12 @@ our %unified_info = ( "test/wpackettest-bin-wpackettest.o" => [ "test/wpackettest.c" ], + "test/x509_acert_test" => [ + "test/x509_acert_test-bin-x509_acert_test.o" + ], + "test/x509_acert_test-bin-x509_acert_test.o" => [ + "test/x509_acert_test.c" + ], "test/x509_check_cert_pkey_test" => [ "test/x509_check_cert_pkey_test-bin-x509_check_cert_pkey_test.o" ], @@ -27418,6 +32421,24 @@ our %unified_info = ( "test/x509_internal_test-bin-x509_internal_test.o" => [ "test/x509_internal_test.c" ], + "test/x509_load_cert_file_test" => [ + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" + ], + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" => [ + "test/x509_load_cert_file_test.c" + ], + "test/x509_req_test" => [ + "test/x509_req_test-bin-x509_req_test.o" + ], + "test/x509_req_test-bin-x509_req_test.o" => [ + "test/x509_req_test.c" + ], + "test/x509_test" => [ + "test/x509_test-bin-x509_test.o" + ], + "test/x509_test-bin-x509_test.o" => [ + "test/x509_test.c" + ], "test/x509_time_test" => [ "test/x509_time_test-bin-x509_time_test.o" ], @@ -27478,6 +32499,7 @@ my @makevars = ( "LDLIBS", "MT", "MTFLAGS", + "OBJCOPY", "PERL", "RANLIB", "RC", @@ -27494,6 +32516,12 @@ my %disabled_info = ( "asm" => { "macro" => "OPENSSL_NO_ASM" }, + "brotli" => { + "macro" => "OPENSSL_NO_BROTLI" + }, + "brotli-dynamic" => { + "macro" => "OPENSSL_NO_BROTLI_DYNAMIC" + }, "comp" => { "macro" => "OPENSSL_NO_COMP", "skipped" => [ @@ -27506,6 +32534,9 @@ my %disabled_info = ( "crypto-mdebug-backtrace" => { "macro" => "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE" }, + "demos" => { + "macro" => "OPENSSL_NO_DEMOS" + }, "devcryptoeng" => { "macro" => "OPENSSL_NO_DEVCRYPTOENG" }, @@ -27518,12 +32549,24 @@ my %disabled_info = ( "external-tests" => { "macro" => "OPENSSL_NO_EXTERNAL_TESTS" }, + "fips-jitter" => { + "macro" => "OPENSSL_NO_FIPS_JITTER" + }, "fuzz-afl" => { "macro" => "OPENSSL_NO_FUZZ_AFL" }, "fuzz-libfuzzer" => { "macro" => "OPENSSL_NO_FUZZ_LIBFUZZER" }, + "h3demo" => { + "macro" => "OPENSSL_NO_H3DEMO" + }, + "hqinterop" => { + "macro" => "OPENSSL_NO_HQINTEROP" + }, + "jitter" => { + "macro" => "OPENSSL_NO_JITTER" + }, "ktls" => { "macro" => "OPENSSL_NO_KTLS" }, @@ -27539,6 +32582,9 @@ my %disabled_info = ( "msan" => { "macro" => "OPENSSL_NO_MSAN" }, + "pie" => { + "macro" => "OPENSSL_NO_PIE" + }, "rc5" => { "macro" => "OPENSSL_NO_RC5", "skipped" => [ @@ -27554,6 +32600,12 @@ my %disabled_info = ( "ssl3-method" => { "macro" => "OPENSSL_NO_SSL3_METHOD" }, + "sslkeylog" => { + "macro" => "OPENSSL_NO_SSLKEYLOG" + }, + "tfo" => { + "macro" => "OPENSSL_NO_TFO" + }, "trace" => { "macro" => "OPENSSL_NO_TRACE" }, @@ -27568,6 +32620,18 @@ my %disabled_info = ( }, "weak-ssl-ciphers" => { "macro" => "OPENSSL_NO_WEAK_SSL_CIPHERS" + }, + "zlib" => { + "macro" => "OPENSSL_NO_ZLIB" + }, + "zlib-dynamic" => { + "macro" => "OPENSSL_NO_ZLIB_DYNAMIC" + }, + "zstd" => { + "macro" => "OPENSSL_NO_ZSTD" + }, + "zstd-dynamic" => { + "macro" => "OPENSSL_NO_ZSTD_DYNAMIC" } ); my @user_crossable = qw( AR AS CC CXX CPP LD MT RANLIB RC ); @@ -27581,15 +32645,15 @@ unless (caller) { use File::Copy; use Pod::Usage; - use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; - use OpenSSL::fallback '/home/runner/work/node/node/deps/openssl/openssl/external/perl/MODULES.txt'; + use lib '/node/deps/openssl/openssl/util/perl'; + use OpenSSL::fallback '/node/deps/openssl/openssl/external/perl/MODULES.txt'; my $here = dirname($0); if (scalar @ARGV == 0) { # With no arguments, re-create the build file # We do that in two steps, where the first step emits perl - # snipets. + # snippets. my $buildfile = $config{build_file}; my $buildfile_template = "$buildfile.in"; @@ -27609,7 +32673,7 @@ unless (caller) { ); use lib '.'; - use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; + use lib '/node/deps/openssl/openssl/Configurations'; use gentemplate; open my $buildfile_template_fh, ">$buildfile_template" @@ -27626,8 +32690,8 @@ unless (caller) { my $prepend = <<'_____'; use File::Spec::Functions; -use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; -use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; +use lib '/node/deps/openssl/openssl/util/perl'; +use lib '/node/deps/openssl/openssl/Configurations'; use lib '.'; use platform; _____ diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h index 4ee1f68c013b77..ab1de909dfc1be 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: VC-WIN64-ARM" -#define DATE "built on: Sun Jul 20 00:56:26 2025 UTC" +#define DATE "built on: Tue Aug 5 17:24:36 2025 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/params_idx.c b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/params_idx.c new file mode 100644 index 00000000000000..874125eb57a17c --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/params_idx.c @@ -0,0 +1,3366 @@ +/* + * WARNING: do not edit! + * Generated by makefile from crypto/params_idx.c.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#include "internal/e_os.h" +#include "internal/param_names.h" +#include + +/* Machine generated TRIE -- generated by util/perl/OpenSSL/paramnames.pm */ +int ossl_param_find_pidx(const char *s) +{ + switch(s[0]) { + default: + break; + case 'a': + switch(s[1]) { + default: + break; + case 'c': + if (strcmp("vp-info", s + 2) == 0) + return PIDX_KDF_PARAM_X942_ACVPINFO; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'd': + if (strcmp("itional-random", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_ADD_RANDOM; + break; + case '\0': + return PIDX_KDF_PARAM_ARGON2_AD; + } + break; + case 'e': + if (strcmp("ad", s + 2) == 0) + return PIDX_CIPHER_PARAM_AEAD; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("id_param", s + 4) == 0) + return PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD; + break; + case 'i': + if (strcmp("d-absent", s + 4) == 0) + return PIDX_DIGEST_PARAM_ALGID_ABSENT; + break; + case 'o': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'h': + switch(s[8]) { + default: + break; + case 'm': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '-': + if (strcmp("params", s + 13) == 0) + return PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS; + break; + case '\0': + return PIDX_ALG_PARAM_ALGORITHM_ID; + } + } + } + } + } + } + } + } + } + } + break; + case 'i': + if (strcmp("as", s + 3) == 0) + return PIDX_STORE_PARAM_ALIAS; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_A; + } + break; + case 'b': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("sis-type", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_CHAR2_TYPE; + break; + case 'i': + if (strcmp("ts", s + 2) == 0) + return PIDX_PKEY_PARAM_BITS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("size", s + 6) == 0) + return PIDX_MAC_PARAM_BLOCK_SIZE; + break; + case '_': + if (strcmp("padding", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING; + break; + case 's': + if (strcmp("ize", s + 6) == 0) + return PIDX_DIGEST_PARAM_BLOCK_SIZE; + } + } + } + } + break; + case 'u': + if (strcmp("ildinfo", s + 2) == 0) + return PIDX_PROV_PARAM_BUILDINFO; + break; + case '\0': + return PIDX_PKEY_PARAM_EC_B; + } + break; + case 'c': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_C_ROUNDS; + break; + case 'e': + if (strcmp("kalg", s + 2) == 0) + return PIDX_KDF_PARAM_CEK_ALG; + break; + case 'i': + if (strcmp("pher", s + 2) == 0) + return PIDX_ALG_PARAM_CIPHER; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("actor", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_COFACTOR; + break; + case 'n': + switch(s[3]) { + default: + break; + case 's': + if (strcmp("tant", s + 4) == 0) + return PIDX_KDF_PARAM_CONSTANT; + break; + case 't': + if (strcmp("ext-string", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_CONTEXT_STRING; + } + } + break; + case 't': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("mode", s + 4) == 0) + return PIDX_CIPHER_PARAM_CTS_MODE; + break; + case '\0': + return PIDX_CIPHER_PARAM_CTS; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '-': + if (strcmp("iv", s + 7) == 0) + return PIDX_CIPHER_PARAM_CUSTOM_IV; + break; + case '\0': + return PIDX_MAC_PARAM_CUSTOM; + } + } + } + } + } + } + break; + case 'd': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_D_ROUNDS; + break; + case 'a': + switch(s[2]) { + default: + break; + case 't': + switch(s[3]) { + default: + break; + case 'a': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 's': + if (strcmp("tructure", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_STRUCTURE; + break; + case 't': + if (strcmp("ype", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_TYPE; + } + break; + case '\0': + return PIDX_OBJECT_PARAM_DATA; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + if (strcmp("ded-from-explicit", s + 4) == 0) + return PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS; + break; + case 'r': + if (strcmp("ypt-only", s + 4) == 0) + return PIDX_CIPHER_PARAM_DECRYPT_ONLY; + } + break; + case 'f': + if (strcmp("ault-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_DEFAULT_DIGEST; + break; + case 's': + if (strcmp("c", s + 3) == 0) + return PIDX_OBJECT_PARAM_DESC; + break; + case 't': + if (strcmp("erministic", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_DETERMINISTIC; + } + break; + case 'h': + if (strcmp("kem-ikm", s + 2) == 0) + return PIDX_PKEY_PARAM_DHKEM_IKM; + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("heck", s + 8) == 0) + return PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK; + break; + case 'n': + if (strcmp("oinit", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_NOINIT; + break; + case 'o': + if (strcmp("neshot", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_ONESHOT; + break; + case 'p': + if (strcmp("rops", s + 8) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS; + break; + case 's': + if (strcmp("ize", s + 8) == 0) + return PIDX_PKEY_PARAM_DIGEST_SIZE; + } + break; + case '\0': + return PIDX_STORE_PARAM_DIGEST; + } + } + } + } + break; + case 's': + if (strcmp("tid", s + 3) == 0) + return PIDX_PKEY_PARAM_DIST_ID; + } + break; + case 'r': + if (strcmp("bg-no-trunc-md", s + 2) == 0) + return PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST; + break; + case 's': + if (strcmp("a-sign-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_DSA_SIGN_DISABLED; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_D; + } + break; + case 'e': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("rly_clean", s + 2) == 0) + return PIDX_KDF_PARAM_EARLY_CLEAN; + break; + case 'c': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'h': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'a': + switch(s[9]) { + default: + break; + case 'c': + switch(s[10]) { + default: + break; + case 't': + switch(s[11]) { + default: + break; + case 'o': + switch(s[12]) { + default: + break; + case 'r': + switch(s[13]) { + default: + break; + case '-': + switch(s[14]) { + default: + break; + case 'c': + if (strcmp("heck", s + 15) == 0) + return PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK; + break; + case 'm': + if (strcmp("ode", s + 15) == 0) + return PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE; + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'm': + if (strcmp("s_check", s + 2) == 0) + return PIDX_KDF_PARAM_FIPS_EMS_CHECK; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("d-pub-key", s + 6) == 0) + return PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY; + break; + case 'i': + if (strcmp("ng", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_ENCODING; + } + } + break; + case 'r': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'c': + if (strcmp("heck", s + 9) == 0) + return PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK; + break; + case 'l': + if (strcmp("evel", s + 9) == 0) + return PIDX_ENCODER_PARAM_ENCRYPT_LEVEL; + } + } + } + } + } + } + break; + case 'g': + if (strcmp("ine", s + 3) == 0) + return PIDX_ALG_PARAM_ENGINE; + break; + case 't': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'y': + switch(s[7]) { + default: + break; + case '_': + if (strcmp("required", s + 8) == 0) + return PIDX_DRBG_PARAM_ENTROPY_REQUIRED; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_ENTROPY; + } + } + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_E; + break; + case 'x': + if (strcmp("pect", s + 2) == 0) + return PIDX_STORE_PARAM_EXPECT; + } + break; + case 'f': + switch(s[1]) { + default: + break; + case 'i': + switch(s[2]) { + default: + break; + case 'e': + if (strcmp("ld-type", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_FIELD_TYPE; + break; + case 'n': + if (strcmp("gerprint", s + 3) == 0) + return PIDX_STORE_PARAM_FINGERPRINT; + break; + case 'p': + if (strcmp("s-indicator", s + 3) == 0) + return PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR; + } + } + break; + case 'g': + switch(s[1]) { + default: + break; + case 'e': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_GENERATE; + } + break; + case 'o': + if (strcmp("r", s + 8) == 0) + return PIDX_PKEY_PARAM_EC_GENERATOR; + } + } + } + } + } + } + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_GINDEX; + break; + case 'r': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'u': + switch(s[4]) { + default: + break; + case 'p': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("check", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE; + break; + case '\0': + return PIDX_PKEY_PARAM_GROUP_NAME; + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_G; + } + break; + case 'h': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("s-randkey", s + 2) == 0) + return PIDX_CIPHER_PARAM_HAS_RAND_KEY; + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_H; + break; + case 'k': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'f': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_KEY_CHECK; + } + } + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_HMAC_KEY_CHECK; + break; + case 's': + if (strcmp("_padding", s + 2) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING; + } + break; + case 'i': + switch(s[1]) { + default: + break; + case 'd': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_PKCS12_ID; + } + break; + case 'k': + if (strcmp("me", s + 2) == 0) + return PIDX_KEM_PARAM_IKME; + break; + case 'm': + if (strcmp("plicit-rejection", s + 2) == 0) + return PIDX_PKEY_PARAM_IMPLICIT_REJECTION; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("lude-public", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC; + break; + case 'f': + if (strcmp("o", s + 3) == 0) + return PIDX_PASSPHRASE_PARAM_INFO; + break; + case 'p': + if (strcmp("ut-type", s + 3) == 0) + return PIDX_STORE_PARAM_INPUT_TYPE; + break; + case 's': + if (strcmp("tance", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_INSTANCE; + } + break; + case 't': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("tion", s + 5) == 0) + return PIDX_GEN_PARAM_ITERATION; + break; + case '\0': + return PIDX_KDF_PARAM_ITER; + } + } + } + break; + case 'v': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("generated", s + 3) == 0) + return PIDX_CIPHER_PARAM_AEAD_IV_GENERATED; + break; + case 'l': + if (strcmp("en", s + 3) == 0) + return PIDX_CIPHER_PARAM_IVLEN; + break; + case '\0': + return PIDX_MAC_PARAM_IV; + } + } + break; + case 'j': + switch(s[1]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_COFACTOR; + } + break; + case 'k': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K2; + } + break; + case '3': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K3; + } + break; + case 'a': + if (strcmp("t", s + 2) == 0) + return PIDX_SIGNATURE_PARAM_KAT; + break; + case 'b': + if (strcmp("kdf-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KBKDF_KEY_CHECK; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case 's': + switch(s[9]) { + default: + break; + case 't': + switch(s[10]) { + default: + break; + case '-': + if (strcmp("props", s + 11) == 0) + return PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_KDF_DIGEST; + } + } + } + } + } + } + break; + case 'o': + if (strcmp("utlen", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_OUTLEN; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_TYPE; + break; + case 'u': + if (strcmp("km", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_UKM; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'y': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("heck", s + 5) == 0) + return PIDX_PKEY_PARAM_FIPS_KEY_CHECK; + break; + case 'l': + if (strcmp("ength", s + 5) == 0) + return PIDX_SKEY_PARAM_KEY_LENGTH; + } + break; + case 'b': + if (strcmp("its", s + 4) == 0) + return PIDX_CIPHER_PARAM_RC2_KEYBITS; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_KEYLEN; + break; + case '\0': + return PIDX_MAC_PARAM_KEY; + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KMAC_KEY_CHECK; + } + break; + case 'l': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("el", s + 3) == 0) + return PIDX_KDF_PARAM_LABEL; + break; + case 'n': + if (strcmp("es", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_LANES; + } + } + break; + case 'm': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'k': + if (strcmp("ey", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_MAC_KEY; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_KDF_PARAM_MAC_SIZE; + break; + case '\0': + return PIDX_ALG_PARAM_MAC; + } + break; + case 'n': + if (strcmp("datory-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_MANDATORY_DIGEST; + break; + case 'x': + switch(s[3]) { + default: + break; + case '-': + if (strcmp("size", s + 4) == 0) + return PIDX_PKEY_PARAM_MAX_SIZE; + break; + case '_': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("dinlen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_ADINLEN; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("rly_data", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA; + break; + case 'n': + if (strcmp("tropylen", s + 6) == 0) + return PIDX_DRBG_PARAM_MAX_ENTROPYLEN; + } + break; + case 'f': + if (strcmp("rag_len", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_NONCELEN; + break; + case 'p': + if (strcmp("erslen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_PERSLEN; + break; + case 'r': + if (strcmp("equest", s + 5) == 0) + return PIDX_RAND_PARAM_MAX_REQUEST; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MAX_LENGTH; + break; + case 'm': + if (strcmp("em_bytes", s + 4) == 0) + return PIDX_KDF_PARAM_SCRYPT_MAXMEM; + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'm': + if (strcmp("cost", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_MEMCOST; + break; + case 's': + if (strcmp("sage-encoding", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING; + } + break; + case 'g': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_DIGEST; + break; + case 'p': + if (strcmp("roperties", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_PROPERTIES; + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_MASKGENFUNC; + } + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("alg", s + 3) == 0) + return PIDX_DIGEST_PARAM_MICALG; + break; + case 'n': + switch(s[3]) { + default: + break; + case '_': + switch(s[4]) { + default: + break; + case 'e': + if (strcmp("ntropylen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_ENTROPYLEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_NONCELEN; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MIN_LENGTH; + } + } + break; + case 'l': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + if (strcmp("nput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS; + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED; + } + } + } + } + break; + case 'k': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + switch(s[8]) { + default: + break; + case 'm': + if (strcmp("port_pct_type", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE; + break; + case 'n': + if (strcmp("put_formats", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS; + } + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED; + } + } + } + } + } + } + break; + case 'o': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case '\0': + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE; + } + break; + case 'u': + if (strcmp("le-filename", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_MODULE_FILENAME; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_SIGNATURE_PARAM_MU; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_M; + } + break; + case 'n': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("me", s + 2) == 0) + return PIDX_STORE_PARAM_ISSUER; + break; + case 'o': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("short-mac", s + 3) == 0) + return PIDX_PROV_PARAM_NO_SHORT_MAC; + break; + case 'n': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("type", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_NONCE_TYPE; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_NONCE; + } + } + } + } + break; + case 'u': + if (strcmp("m", s + 2) == 0) + return PIDX_CIPHER_PARAM_NUM; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_N; + } + break; + case 'o': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("ep-label", s + 2) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL; + break; + case 'p': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'n': + if (strcmp("ssl-version", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_VERSION; + break; + case 'r': + if (strcmp("ation", s + 4) == 0) + return PIDX_KEM_PARAM_OPERATION; + } + break; + case 't': + if (strcmp("ions", s + 3) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS; + } + break; + case 'r': + if (strcmp("der", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_ORDER; + } + break; + case 'p': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P2; + } + break; + case 'a': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'm': + if (strcmp("ode", s + 5) == 0) + return PIDX_PKEY_PARAM_PAD_MODE; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_DIGEST_PARAM_PAD_TYPE; + } + break; + case 'd': + if (strcmp("ing", s + 4) == 0) + return PIDX_CIPHER_PARAM_PADDING; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_PAD; + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'u': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYUINFO; + break; + case 'v': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYVINFO; + } + } + } + break; + case 's': + if (strcmp("s", s + 3) == 0) + return PIDX_KDF_PARAM_PASSWORD; + } + break; + case 'b': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("ts", s + 3) == 0) + return PIDX_PKEY_PARAM_FFC_PBITS; + break; + case 'k': + if (strcmp("df2-lower-bound-check", s + 3) == 0) + return PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK; + } + break; + case 'c': + if (strcmp("ounter", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_PCOUNTER; + break; + case 'i': + if (strcmp("peline-tag", s + 2) == 0) + return PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG; + break; + case 'k': + if (strcmp("cs5", s + 2) == 0) + return PIDX_KDF_PARAM_PKCS5; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("nt-format", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT; + break; + case 't': + if (strcmp("ential", s + 3) == 0) + return PIDX_GEN_PARAM_POTENTIAL; + } + break; + case 'r': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("iction_resistance", s + 4) == 0) + return PIDX_DRBG_PARAM_PREDICTION_RESISTANCE; + break; + case 'f': + if (strcmp("ix", s + 4) == 0) + return PIDX_KDF_PARAM_PREFIX; + } + break; + case 'i': + switch(s[3]) { + default: + break; + case 'm': + if (strcmp("es", s + 4) == 0) + return PIDX_PKEY_PARAM_RSA_PRIMES; + break; + case 'v': + switch(s[4]) { + default: + break; + case '_': + if (strcmp("len", s + 5) == 0) + return PIDX_PKEY_PARAM_DH_PRIV_LEN; + break; + case '\0': + return PIDX_PKEY_PARAM_PRIV_KEY; + } + } + break; + case 'o': + switch(s[3]) { + default: + break; + case 'p': + if (strcmp("erties", s + 4) == 0) + return PIDX_STORE_PARAM_PROPERTIES; + break; + case 'v': + if (strcmp("ider-name", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_PROV_NAME; + } + } + break; + case 'u': + if (strcmp("b", s + 2) == 0) + return PIDX_PKEY_PARAM_PUB_KEY; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_P; + } + break; + case 'q': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q2; + } + break; + case 'b': + if (strcmp("its", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_QBITS; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_Q; + break; + case 'x': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_X; + } + break; + case 'y': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_Y; + } + } + break; + case 'r': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'k': + if (strcmp("ey", s + 5) == 0) + return PIDX_CIPHER_PARAM_RANDOM_KEY; + break; + case 'o': + if (strcmp("m_data", s + 5) == 0) + return PIDX_DRBG_PARAM_RANDOM_DATA; + } + } + break; + case 'w': + if (strcmp("-bytes", s + 3) == 0) + return PIDX_SKEY_PARAM_RAW_BYTES; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case '_': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("head", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD; + break; + case 'b': + if (strcmp("uffer_len", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN; + } + } + } + break; + case 'f': + if (strcmp("erence", s + 3) == 0) + return PIDX_OBJECT_PARAM_REFERENCE; + break; + case 's': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case '_': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("ounter", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_COUNTER; + break; + case 'r': + if (strcmp("equests", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_REQUESTS; + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case 'm': + switch(s[10]) { + default: + break; + case 'e': + switch(s[11]) { + default: + break; + case '_': + if (strcmp("interval", s + 12) == 0) + return PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL; + break; + case '\0': + return PIDX_DRBG_PARAM_RESEED_TIME; + } + } + } + } + } + } + } + } + } + } + break; + case 'o': + if (strcmp("unds", s + 2) == 0) + return PIDX_CIPHER_PARAM_ROUNDS; + break; + case 's': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + switch(s[5]) { + default: + break; + case 'o': + switch(s[6]) { + default: + break; + case 'e': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case 'i': + switch(s[10]) { + default: + break; + case 'c': + switch(s[11]) { + default: + break; + case 'i': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'n': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case '1': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT1; + } + break; + case '2': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT2; + } + break; + case '3': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT3; + } + break; + case '4': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT4; + } + break; + case '5': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT5; + } + break; + case '6': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT6; + } + break; + case '7': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT7; + } + break; + case '8': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT8; + } + break; + case '9': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'd': + if (strcmp("erive-from-pq", s + 5) == 0) + return PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'x': + switch(s[6]) { + default: + break; + case 'p': + switch(s[7]) { + default: + break; + case 'o': + switch(s[8]) { + default: + break; + case 'n': + switch(s[9]) { + default: + break; + case 'e': + switch(s[10]) { + default: + break; + case 'n': + switch(s[11]) { + default: + break; + case 't': + switch(s[12]) { + default: + break; + case '1': + switch(s[13]) { + default: + break; + case '0': + switch(s[14]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT1; + } + break; + case '2': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT2; + } + break; + case '3': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT3; + } + break; + case '4': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT4; + } + break; + case '5': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT5; + } + break; + case '6': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT6; + } + break; + case '7': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT7; + } + break; + case '8': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT8; + } + break; + case '9': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT; + } + } + } + } + } + } + } + } + break; + case 'f': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'o': + switch(s[9]) { + default: + break; + case 'r': + switch(s[10]) { + default: + break; + case '1': + switch(s[11]) { + default: + break; + case '0': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR1; + } + break; + case '2': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR2; + } + break; + case '3': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR3; + } + break; + case '4': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR4; + } + break; + case '5': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR5; + } + break; + case '6': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR6; + } + break; + case '7': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR7; + } + break; + case '8': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR8; + } + break; + case '9': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR; + } + } + } + } + } + } + break; + case 'p': + switch(s[5]) { + default: + break; + case 'k': + if (strcmp("cs15-pad-disabled", s + 6) == 0) + return PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED; + break; + case 's': + if (strcmp("s-saltlen-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK; + } + break; + case 's': + if (strcmp("ign-x931-pad-disabled", s + 5) == 0) + return PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED; + } + } + } + break; + case '\0': + return PIDX_KDF_PARAM_SCRYPT_R; + } + break; + case 's': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("eprime-generator", s + 3) == 0) + return PIDX_PKEY_PARAM_DH_GENERATOR; + break; + case 'l': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'l': + if (strcmp("en", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_PSS_SALTLEN; + break; + case '\0': + return PIDX_MAC_PARAM_SALT; + } + } + break; + case 'v': + if (strcmp("e-parameters", s + 3) == 0) + return PIDX_ENCODER_PARAM_SAVE_PARAMETERS; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'r': + if (strcmp("et", s + 4) == 0) + return PIDX_KDF_PARAM_SECRET; + break; + case 'u': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'y': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'b': + if (strcmp("its", s + 10) == 0) + return PIDX_PKEY_PARAM_SECURITY_BITS; + break; + case 'c': + if (strcmp("hecks", s + 10) == 0) + return PIDX_PROV_PARAM_SECURITY_CHECKS; + } + } + } + } + } + } + } + break; + case 'e': + if (strcmp("d", s + 3) == 0) + return PIDX_PKEY_PARAM_SLH_DSA_SEED; + break; + case 'r': + if (strcmp("ial", s + 3) == 0) + return PIDX_STORE_PARAM_SERIAL; + break; + case 's': + if (strcmp("sion_id", s + 3) == 0) + return PIDX_KDF_PARAM_SSHKDF_SESSION_ID; + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'n': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + if (strcmp("heck", s + 6) == 0) + return PIDX_PKEY_PARAM_FIPS_SIGN_CHECK; + break; + case 'x': + if (strcmp("931-pad-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK; + } + break; + case 'a': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case 'u': + switch(s[7]) { + default: + break; + case 'r': + switch(s[8]) { + default: + break; + case 'e': + switch(s[9]) { + default: + break; + case '-': + if (strcmp("digest-check", s + 10) == 0) + return PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK; + break; + case '\0': + return PIDX_SIGNATURE_PARAM_SIGNATURE; + } + } + } + } + } + } + } + break; + case 'z': + if (strcmp("e", s + 3) == 0) + return PIDX_MAC_PARAM_SIZE; + } + break; + case 'p': + if (strcmp("eed", s + 2) == 0) + return PIDX_CIPHER_PARAM_SPEED; + break; + case 's': + switch(s[2]) { + default: + break; + case 'h': + switch(s[3]) { + default: + break; + case 'k': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'f': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_KEY_CHECK; + } + } + } + } + } + break; + case 'k': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'f': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_KEY_CHECK; + } + } + } + } + break; + case 'l': + if (strcmp("3-ms", s + 3) == 0) + return PIDX_DIGEST_PARAM_SSL3_MS; + } + break; + case 't': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("esc", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_DESC; + break; + case 'p': + if (strcmp("hase", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_PHASE; + break; + case 't': + if (strcmp("ype", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_TYPE; + } + break; + case 'a': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_STATE; + } + break; + case 'u': + if (strcmp("s", s + 5) == 0) + return PIDX_PROV_PARAM_STATUS; + } + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("m_mac", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC; + break; + case 'n': + if (strcmp("gth", s + 5) == 0) + return PIDX_RAND_PARAM_STRENGTH; + } + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("ject", s + 3) == 0) + return PIDX_STORE_PARAM_SUBJECT; + break; + case 'p': + switch(s[3]) { + default: + break; + case 'p': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + if (strcmp("ivinfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PRIVINFO; + break; + case 'u': + if (strcmp("binfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PUBINFO; + } + } + } + } + } + } + break; + case 't': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_TAGLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TAG; + } + } + break; + case 'd': + if (strcmp("es-encrypt-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED; + break; + case 'e': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case '-': + if (strcmp("entropy", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_TEST_ENTROPY; + break; + case '_': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("ntropy", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_ENTROPY; + break; + case 'n': + if (strcmp("once", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_NONCE; + } + } + } + } + break; + case 'h': + if (strcmp("reads", s + 2) == 0) + return PIDX_KDF_PARAM_THREADS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("lient-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION; + break; + case 'd': + if (strcmp("ata-size", s + 5) == 0) + return PIDX_MAC_PARAM_TLS_DATA_SIZE; + break; + case 'g': + switch(s[5]) { + default: + break; + case 'r': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'u': + switch(s[8]) { + default: + break; + case 'p': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'a': + if (strcmp("lg", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_ALG; + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_ID; + } + break; + case 's': + if (strcmp("-kem", s + 12) == 0) + return PIDX_CAPABILITY_TLS_GROUP_IS_KEM; + } + break; + case 'n': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'm': + switch(s[13]) { + default: + break; + case 'e': + switch(s[14]) { + default: + break; + case '-': + if (strcmp("internal", s + 15) == 0) + return PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL; + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_NAME; + } + } + } + } + break; + case 's': + if (strcmp("ec-bits", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case '-': + if (strcmp("size", s + 8) == 0) + return PIDX_CIPHER_PARAM_TLS_MAC_SIZE; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS_MAC; + } + break; + case 'x': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS; + } + } + } + break; + case 'i': + switch(s[6]) { + default: + break; + case 'n': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS; + } + } + } + break; + case 'u': + if (strcmp("lti", s + 6) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK; + } + break; + case 'n': + if (strcmp("egotiated-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION; + break; + case 's': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'a': + switch(s[8]) { + default: + break; + case 'l': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '-': + switch(s[11]) { + default: + break; + case 'c': + if (strcmp("ode-point", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT; + break; + case 'h': + switch(s[12]) { + default: + break; + case 'a': + switch(s[13]) { + default: + break; + case 's': + switch(s[14]) { + default: + break; + case 'h': + switch(s[15]) { + default: + break; + case '-': + switch(s[16]) { + default: + break; + case 'n': + if (strcmp("ame", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME; + break; + case 'o': + if (strcmp("id", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_OID; + } + } + } + } + } + break; + case 'i': + if (strcmp("ana-name", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME; + break; + case 'k': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'y': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case 'y': + switch(s[16]) { + default: + break; + case 'p': + switch(s[17]) { + default: + break; + case 'e': + switch(s[18]) { + default: + break; + case '-': + if (strcmp("oid", s + 19) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID; + break; + case '\0': + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE; + } + } + } + } + } + } + } + break; + case 'n': + if (strcmp("ame", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_NAME; + break; + case 'o': + if (strcmp("id", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_OID; + break; + case 's': + switch(s[12]) { + default: + break; + case 'e': + if (strcmp("c-bits", s + 13) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS; + break; + case 'i': + switch(s[13]) { + default: + break; + case 'g': + switch(s[14]) { + default: + break; + case '-': + switch(s[15]) { + default: + break; + case 'n': + if (strcmp("ame", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME; + break; + case 'o': + if (strcmp("id", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_OID; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'v': + if (strcmp("ersion", s + 5) == 0) + return PIDX_CIPHER_PARAM_TLS_VERSION; + } + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK; + break; + case 'e': + if (strcmp("ms-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK; + } + } + } + } + } + break; + case '3': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'k': + switch(s[7]) { + default: + break; + case 'd': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'u': + switch(s[6]) { + default: + break; + case 'l': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case '_': + switch(s[10]) { + default: + break; + case 'a': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'd': + switch(s[13]) { + default: + break; + case 'p': + if (strcmp("acklen", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD; + } + } + } + break; + case 'e': + switch(s[11]) { + default: + break; + case 'n': + switch(s[12]) { + default: + break; + case 'c': + switch(s[13]) { + default: + break; + case 'i': + if (strcmp("n", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN; + break; + case 'l': + if (strcmp("en", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC; + } + } + } + break; + case 'i': + if (strcmp("nterleave", s + 11) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE; + break; + case 'm': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'x': + switch(s[13]) { + default: + break; + case 'b': + if (strcmp("ufsz", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE; + break; + case 's': + if (strcmp("ndfrag", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT; + } + } + } + } + } + } + } + } + } + } + break; + case 'a': + switch(s[4]) { + default: + break; + case 'a': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'p': + if (strcmp("ad", s + 7) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD; + } + } + } + break; + case 'i': + switch(s[4]) { + default: + break; + case 'v': + switch(s[5]) { + default: + break; + case 'f': + if (strcmp("ixed", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED; + break; + case 'g': + if (strcmp("en", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN; + break; + case 'i': + if (strcmp("nv", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV; + } + } + break; + case 't': + if (strcmp("ree", s + 4) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS; + } + break; + case 'y': + if (strcmp("pe", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_TYPE; + } + break; + case 'u': + switch(s[1]) { + default: + break; + case 'k': + if (strcmp("m", s + 2) == 0) + return PIDX_KDF_PARAM_UKM; + break; + case 'p': + if (strcmp("dated-iv", s + 2) == 0) + return PIDX_CIPHER_PARAM_UPDATED_IV; + break; + case 's': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'b': + if (strcmp("its", s + 5) == 0) + return PIDX_CIPHER_PARAM_USE_BITS; + break; + case 'c': + if (strcmp("ofactor-flag", s + 5) == 0) + return PIDX_PKEY_PARAM_USE_COFACTOR_FLAG; + break; + case 'k': + if (strcmp("eybits", s + 5) == 0) + return PIDX_KDF_PARAM_X942_USE_KEYBITS; + break; + case 'l': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_KBKDF_USE_L; + } + break; + case 's': + if (strcmp("eparator", s + 5) == 0) + return PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR; + } + break; + case '_': + switch(s[4]) { + default: + break; + case 'd': + if (strcmp("erivation_function", s + 5) == 0) + return PIDX_DRBG_PARAM_USE_DF; + break; + case 'e': + if (strcmp("tm", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM; + } + } + } + } + break; + case 'v': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'l': + switch(s[3]) { + default: + break; + case 'i': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_VALIDATE_G; + } + break; + case 'l': + if (strcmp("egacy", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY; + break; + case 'p': + if (strcmp("q", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_PQ; + } + } + } + } + } + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'r': + switch(s[3]) { + default: + break; + case 'i': + if (strcmp("fy-message", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE; + break; + case 's': + if (strcmp("ion", s + 4) == 0) + return PIDX_PROV_PARAM_VERSION; + } + } + } + break; + case 'x': + switch(s[1]) { + default: + break; + case '9': + switch(s[2]) { + default: + break; + case '4': + if (strcmp("2kdf-key-check", s + 3) == 0) + return PIDX_PROV_PARAM_X942KDF_KEY_CHECK; + break; + case '6': + switch(s[3]) { + default: + break; + case '3': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'f': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_KEY_CHECK; + } + } + } + } + } + } + } + break; + case 'c': + if (strcmp("ghash", s + 2) == 0) + return PIDX_KDF_PARAM_SSHKDF_XCGHASH; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_DIGEST_PARAM_XOFLEN; + break; + case '\0': + return PIDX_MAC_PARAM_XOF; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP; + } + break; + case 'q': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ; + } + break; + case 't': + if (strcmp("s_standard", s + 2) == 0) + return PIDX_CIPHER_PARAM_XTS_STANDARD; + } + } + return -1; +} + +/* End of TRIE */ diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/internal/param_names.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/internal/param_names.h new file mode 100644 index 00000000000000..ec5bff6e31c126 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/internal/param_names.h @@ -0,0 +1,469 @@ +/* + * WARNING: do not edit! + * Generated by makefile from include/internal/param_names.h.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +int ossl_param_find_pidx(const char *s); + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +#define NUM_PIDX 346 + +#define PIDX_ALG_PARAM_ALGORITHM_ID 0 +#define PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS 1 +#define PIDX_ALG_PARAM_CIPHER 2 +#define PIDX_ALG_PARAM_DIGEST 3 +#define PIDX_ALG_PARAM_ENGINE 4 +#define PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR 5 +#define PIDX_ALG_PARAM_MAC 6 +#define PIDX_ALG_PARAM_PROPERTIES 7 +#define PIDX_ASYM_CIPHER_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_ENGINE PIDX_PKEY_PARAM_ENGINE +#define PIDX_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +#define PIDX_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS 9 +#define PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL 10 +#define PIDX_ASYM_CIPHER_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_ASYM_CIPHER_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION 11 +#define PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION 12 +#define PIDX_CAPABILITY_TLS_GROUP_ALG 13 +#define PIDX_CAPABILITY_TLS_GROUP_ID 14 +#define PIDX_CAPABILITY_TLS_GROUP_IS_KEM 15 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_GROUP_NAME 20 +#define PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL 21 +#define PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS 22 +#define PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT 23 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME 24 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_OID 25 +#define PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME 26 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE 27 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID 28 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_SIGALG_NAME 29 +#define PIDX_CAPABILITY_TLS_SIGALG_OID 30 +#define PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS 31 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME 32 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_OID 33 +#define PIDX_CIPHER_PARAM_AEAD 34 +#define PIDX_CIPHER_PARAM_AEAD_IVLEN PIDX_CIPHER_PARAM_IVLEN +#define PIDX_CIPHER_PARAM_AEAD_IV_GENERATED 35 +#define PIDX_CIPHER_PARAM_AEAD_MAC_KEY 36 +#define PIDX_CIPHER_PARAM_AEAD_TAG 37 +#define PIDX_CIPHER_PARAM_AEAD_TAGLEN 38 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD 39 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD 40 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN 41 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED 42 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV 43 +#define PIDX_CIPHER_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD 44 +#define PIDX_CIPHER_PARAM_BLOCK_SIZE 45 +#define PIDX_CIPHER_PARAM_CTS 46 +#define PIDX_CIPHER_PARAM_CTS_MODE 47 +#define PIDX_CIPHER_PARAM_CUSTOM_IV 48 +#define PIDX_CIPHER_PARAM_DECRYPT_ONLY 49 +#define PIDX_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK 50 +#define PIDX_CIPHER_PARAM_HAS_RAND_KEY 51 +#define PIDX_CIPHER_PARAM_IV 52 +#define PIDX_CIPHER_PARAM_IVLEN 53 +#define PIDX_CIPHER_PARAM_KEYLEN 54 +#define PIDX_CIPHER_PARAM_MODE 55 +#define PIDX_CIPHER_PARAM_NUM 56 +#define PIDX_CIPHER_PARAM_PADDING 57 +#define PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG 58 +#define PIDX_CIPHER_PARAM_RANDOM_KEY 59 +#define PIDX_CIPHER_PARAM_RC2_KEYBITS 60 +#define PIDX_CIPHER_PARAM_ROUNDS 61 +#define PIDX_CIPHER_PARAM_SPEED 62 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK 63 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD 64 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN 65 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC 66 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN 67 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN 68 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE 69 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE 70 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT 71 +#define PIDX_CIPHER_PARAM_TLS_MAC 72 +#define PIDX_CIPHER_PARAM_TLS_MAC_SIZE 73 +#define PIDX_CIPHER_PARAM_TLS_VERSION 74 +#define PIDX_CIPHER_PARAM_UPDATED_IV 75 +#define PIDX_CIPHER_PARAM_USE_BITS 76 +#define PIDX_CIPHER_PARAM_XTS_STANDARD 77 +#define PIDX_DECODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DIGEST_PARAM_ALGID_ABSENT 78 +#define PIDX_DIGEST_PARAM_BLOCK_SIZE 45 +#define PIDX_DIGEST_PARAM_MICALG 79 +#define PIDX_DIGEST_PARAM_PAD_TYPE 80 +#define PIDX_DIGEST_PARAM_SIZE 81 +#define PIDX_DIGEST_PARAM_SSL3_MS 82 +#define PIDX_DIGEST_PARAM_XOF 83 +#define PIDX_DIGEST_PARAM_XOFLEN 84 +#define PIDX_DRBG_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_DRBG_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_DRBG_PARAM_ENTROPY_REQUIRED 85 +#define PIDX_DRBG_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_DRBG_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_DRBG_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_DRBG_PARAM_MAX_ADINLEN 86 +#define PIDX_DRBG_PARAM_MAX_ENTROPYLEN 87 +#define PIDX_DRBG_PARAM_MAX_LENGTH 88 +#define PIDX_DRBG_PARAM_MAX_NONCELEN 89 +#define PIDX_DRBG_PARAM_MAX_PERSLEN 90 +#define PIDX_DRBG_PARAM_MIN_ENTROPYLEN 91 +#define PIDX_DRBG_PARAM_MIN_LENGTH 92 +#define PIDX_DRBG_PARAM_MIN_NONCELEN 93 +#define PIDX_DRBG_PARAM_PREDICTION_RESISTANCE 94 +#define PIDX_DRBG_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DRBG_PARAM_RANDOM_DATA 95 +#define PIDX_DRBG_PARAM_RESEED_COUNTER 96 +#define PIDX_DRBG_PARAM_RESEED_REQUESTS 97 +#define PIDX_DRBG_PARAM_RESEED_TIME 98 +#define PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL 99 +#define PIDX_DRBG_PARAM_SIZE 81 +#define PIDX_DRBG_PARAM_USE_DF 100 +#define PIDX_ENCODER_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_ENCODER_PARAM_ENCRYPT_LEVEL 101 +#define PIDX_ENCODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_ENCODER_PARAM_SAVE_PARAMETERS 102 +#define PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE 103 +#define PIDX_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_EXCHANGE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST 104 +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS 105 +#define PIDX_EXCHANGE_PARAM_KDF_OUTLEN 106 +#define PIDX_EXCHANGE_PARAM_KDF_TYPE 107 +#define PIDX_EXCHANGE_PARAM_KDF_UKM 108 +#define PIDX_EXCHANGE_PARAM_PAD 109 +#define PIDX_GEN_PARAM_ITERATION 110 +#define PIDX_GEN_PARAM_POTENTIAL 111 +#define PIDX_KDF_PARAM_ARGON2_AD 112 +#define PIDX_KDF_PARAM_ARGON2_LANES 113 +#define PIDX_KDF_PARAM_ARGON2_MEMCOST 114 +#define PIDX_KDF_PARAM_ARGON2_VERSION 115 +#define PIDX_KDF_PARAM_CEK_ALG 116 +#define PIDX_KDF_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_KDF_PARAM_CONSTANT 117 +#define PIDX_KDF_PARAM_DATA 118 +#define PIDX_KDF_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_KDF_PARAM_EARLY_CLEAN 119 +#define PIDX_KDF_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KDF_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_KDF_PARAM_FIPS_EMS_CHECK 120 +#define PIDX_KDF_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KDF_PARAM_HMACDRBG_ENTROPY 121 +#define PIDX_KDF_PARAM_HMACDRBG_NONCE 122 +#define PIDX_KDF_PARAM_INFO 123 +#define PIDX_KDF_PARAM_ITER 124 +#define PIDX_KDF_PARAM_KBKDF_R 125 +#define PIDX_KDF_PARAM_KBKDF_USE_L 126 +#define PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR 127 +#define PIDX_KDF_PARAM_KEY 128 +#define PIDX_KDF_PARAM_LABEL 129 +#define PIDX_KDF_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_KDF_PARAM_MAC_SIZE 130 +#define PIDX_KDF_PARAM_MODE 55 +#define PIDX_KDF_PARAM_PASSWORD 131 +#define PIDX_KDF_PARAM_PKCS12_ID 132 +#define PIDX_KDF_PARAM_PKCS5 133 +#define PIDX_KDF_PARAM_PREFIX 134 +#define PIDX_KDF_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_KDF_PARAM_SALT 135 +#define PIDX_KDF_PARAM_SCRYPT_MAXMEM 136 +#define PIDX_KDF_PARAM_SCRYPT_N 137 +#define PIDX_KDF_PARAM_SCRYPT_P 138 +#define PIDX_KDF_PARAM_SCRYPT_R 125 +#define PIDX_KDF_PARAM_SECRET 139 +#define PIDX_KDF_PARAM_SEED 140 +#define PIDX_KDF_PARAM_SIZE 81 +#define PIDX_KDF_PARAM_SSHKDF_SESSION_ID 141 +#define PIDX_KDF_PARAM_SSHKDF_TYPE 142 +#define PIDX_KDF_PARAM_SSHKDF_XCGHASH 143 +#define PIDX_KDF_PARAM_THREADS 144 +#define PIDX_KDF_PARAM_UKM 145 +#define PIDX_KDF_PARAM_X942_ACVPINFO 146 +#define PIDX_KDF_PARAM_X942_PARTYUINFO 147 +#define PIDX_KDF_PARAM_X942_PARTYVINFO 148 +#define PIDX_KDF_PARAM_X942_SUPP_PRIVINFO 149 +#define PIDX_KDF_PARAM_X942_SUPP_PUBINFO 150 +#define PIDX_KDF_PARAM_X942_USE_KEYBITS 151 +#define PIDX_KEM_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KEM_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KEM_PARAM_IKME 152 +#define PIDX_KEM_PARAM_OPERATION 153 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING 154 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING 155 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA 156 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN 157 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE 55 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS 158 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD 159 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC 160 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE 161 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM 162 +#define PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN 163 +#define PIDX_MAC_PARAM_BLOCK_SIZE 164 +#define PIDX_MAC_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_MAC_PARAM_CUSTOM 165 +#define PIDX_MAC_PARAM_C_ROUNDS 166 +#define PIDX_MAC_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_MAC_PARAM_DIGEST_NOINIT 167 +#define PIDX_MAC_PARAM_DIGEST_ONESHOT 168 +#define PIDX_MAC_PARAM_D_ROUNDS 169 +#define PIDX_MAC_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_MAC_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_MAC_PARAM_FIPS_NO_SHORT_MAC PIDX_PROV_PARAM_NO_SHORT_MAC +#define PIDX_MAC_PARAM_IV 52 +#define PIDX_MAC_PARAM_KEY 128 +#define PIDX_MAC_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_MAC_PARAM_SALT 135 +#define PIDX_MAC_PARAM_SIZE 81 +#define PIDX_MAC_PARAM_TLS_DATA_SIZE 170 +#define PIDX_MAC_PARAM_XOF 83 +#define PIDX_OBJECT_PARAM_DATA 118 +#define PIDX_OBJECT_PARAM_DATA_STRUCTURE 171 +#define PIDX_OBJECT_PARAM_DATA_TYPE 172 +#define PIDX_OBJECT_PARAM_DESC 173 +#define PIDX_OBJECT_PARAM_INPUT_TYPE 174 +#define PIDX_OBJECT_PARAM_REFERENCE 175 +#define PIDX_OBJECT_PARAM_TYPE 142 +#define PIDX_PASSPHRASE_PARAM_INFO 123 +#define PIDX_PKEY_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_PKEY_PARAM_BITS 176 +#define PIDX_PKEY_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_PKEY_PARAM_DEFAULT_DIGEST 177 +#define PIDX_PKEY_PARAM_DHKEM_IKM 178 +#define PIDX_PKEY_PARAM_DH_GENERATOR 179 +#define PIDX_PKEY_PARAM_DH_PRIV_LEN 180 +#define PIDX_PKEY_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_PKEY_PARAM_DIGEST_SIZE 181 +#define PIDX_PKEY_PARAM_DIST_ID 182 +#define PIDX_PKEY_PARAM_EC_A 183 +#define PIDX_PKEY_PARAM_EC_B 184 +#define PIDX_PKEY_PARAM_EC_CHAR2_M 185 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K1 186 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K2 187 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K3 188 +#define PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS 189 +#define PIDX_PKEY_PARAM_EC_CHAR2_TYPE 190 +#define PIDX_PKEY_PARAM_EC_COFACTOR 191 +#define PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS 192 +#define PIDX_PKEY_PARAM_EC_ENCODING 193 +#define PIDX_PKEY_PARAM_EC_FIELD_TYPE 194 +#define PIDX_PKEY_PARAM_EC_GENERATOR 195 +#define PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE 196 +#define PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC 197 +#define PIDX_PKEY_PARAM_EC_ORDER 198 +#define PIDX_PKEY_PARAM_EC_P 138 +#define PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT 199 +#define PIDX_PKEY_PARAM_EC_PUB_X 200 +#define PIDX_PKEY_PARAM_EC_PUB_Y 201 +#define PIDX_PKEY_PARAM_EC_SEED 140 +#define PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY 202 +#define PIDX_PKEY_PARAM_ENGINE PIDX_ALG_PARAM_ENGINE +#define PIDX_PKEY_PARAM_FFC_COFACTOR 203 +#define PIDX_PKEY_PARAM_FFC_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_FFC_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_FFC_G 204 +#define PIDX_PKEY_PARAM_FFC_GINDEX 205 +#define PIDX_PKEY_PARAM_FFC_H 206 +#define PIDX_PKEY_PARAM_FFC_P 138 +#define PIDX_PKEY_PARAM_FFC_PBITS 207 +#define PIDX_PKEY_PARAM_FFC_PCOUNTER 208 +#define PIDX_PKEY_PARAM_FFC_Q 209 +#define PIDX_PKEY_PARAM_FFC_QBITS 210 +#define PIDX_PKEY_PARAM_FFC_SEED 140 +#define PIDX_PKEY_PARAM_FFC_TYPE 142 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_G 211 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY 212 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_PQ 213 +#define PIDX_PKEY_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK 214 +#define PIDX_PKEY_PARAM_FIPS_KEY_CHECK 215 +#define PIDX_PKEY_PARAM_FIPS_SIGN_CHECK 216 +#define PIDX_PKEY_PARAM_GROUP_NAME 217 +#define PIDX_PKEY_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_PKEY_PARAM_MANDATORY_DIGEST 218 +#define PIDX_PKEY_PARAM_MASKGENFUNC 219 +#define PIDX_PKEY_PARAM_MAX_SIZE 220 +#define PIDX_PKEY_PARAM_MGF1_DIGEST 221 +#define PIDX_PKEY_PARAM_MGF1_PROPERTIES 222 +#define PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS 223 +#define PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS 224 +#define PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED 225 +#define PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED 226 +#define PIDX_PKEY_PARAM_ML_DSA_SEED 140 +#define PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE 227 +#define PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS 228 +#define PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS 229 +#define PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED 230 +#define PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED 231 +#define PIDX_PKEY_PARAM_ML_KEM_SEED 140 +#define PIDX_PKEY_PARAM_PAD_MODE 232 +#define PIDX_PKEY_PARAM_PRIV_KEY 233 +#define PIDX_PKEY_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_PUB_KEY 234 +#define PIDX_PKEY_PARAM_RSA_BITS PIDX_PKEY_PARAM_BITS +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT 235 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT1 236 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT2 237 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT3 238 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT4 239 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT5 240 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT6 241 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT7 242 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT8 243 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT9 244 +#define PIDX_PKEY_PARAM_RSA_D 245 +#define PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ 246 +#define PIDX_PKEY_PARAM_RSA_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_RSA_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_RSA_E 247 +#define PIDX_PKEY_PARAM_RSA_EXPONENT 248 +#define PIDX_PKEY_PARAM_RSA_EXPONENT1 249 +#define PIDX_PKEY_PARAM_RSA_EXPONENT10 250 +#define PIDX_PKEY_PARAM_RSA_EXPONENT2 251 +#define PIDX_PKEY_PARAM_RSA_EXPONENT3 252 +#define PIDX_PKEY_PARAM_RSA_EXPONENT4 253 +#define PIDX_PKEY_PARAM_RSA_EXPONENT5 254 +#define PIDX_PKEY_PARAM_RSA_EXPONENT6 255 +#define PIDX_PKEY_PARAM_RSA_EXPONENT7 256 +#define PIDX_PKEY_PARAM_RSA_EXPONENT8 257 +#define PIDX_PKEY_PARAM_RSA_EXPONENT9 258 +#define PIDX_PKEY_PARAM_RSA_FACTOR 259 +#define PIDX_PKEY_PARAM_RSA_FACTOR1 260 +#define PIDX_PKEY_PARAM_RSA_FACTOR10 261 +#define PIDX_PKEY_PARAM_RSA_FACTOR2 262 +#define PIDX_PKEY_PARAM_RSA_FACTOR3 263 +#define PIDX_PKEY_PARAM_RSA_FACTOR4 264 +#define PIDX_PKEY_PARAM_RSA_FACTOR5 265 +#define PIDX_PKEY_PARAM_RSA_FACTOR6 266 +#define PIDX_PKEY_PARAM_RSA_FACTOR7 267 +#define PIDX_PKEY_PARAM_RSA_FACTOR8 268 +#define PIDX_PKEY_PARAM_RSA_FACTOR9 269 +#define PIDX_PKEY_PARAM_RSA_MASKGENFUNC PIDX_PKEY_PARAM_MASKGENFUNC +#define PIDX_PKEY_PARAM_RSA_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_PKEY_PARAM_RSA_N 137 +#define PIDX_PKEY_PARAM_RSA_PRIMES 270 +#define PIDX_PKEY_PARAM_RSA_PSS_SALTLEN 271 +#define PIDX_PKEY_PARAM_RSA_TEST_P1 272 +#define PIDX_PKEY_PARAM_RSA_TEST_P2 273 +#define PIDX_PKEY_PARAM_RSA_TEST_Q1 274 +#define PIDX_PKEY_PARAM_RSA_TEST_Q2 275 +#define PIDX_PKEY_PARAM_RSA_TEST_XP 276 +#define PIDX_PKEY_PARAM_RSA_TEST_XP1 277 +#define PIDX_PKEY_PARAM_RSA_TEST_XP2 278 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ 279 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ1 280 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ2 281 +#define PIDX_PKEY_PARAM_SECURITY_BITS 282 +#define PIDX_PKEY_PARAM_SLH_DSA_SEED 140 +#define PIDX_PKEY_PARAM_USE_COFACTOR_ECDH PIDX_PKEY_PARAM_USE_COFACTOR_FLAG +#define PIDX_PKEY_PARAM_USE_COFACTOR_FLAG 283 +#define PIDX_PROV_PARAM_BUILDINFO 284 +#define PIDX_PROV_PARAM_CORE_MODULE_FILENAME 285 +#define PIDX_PROV_PARAM_CORE_PROV_NAME 286 +#define PIDX_PROV_PARAM_CORE_VERSION 287 +#define PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST 288 +#define PIDX_PROV_PARAM_DSA_SIGN_DISABLED 289 +#define PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK 290 +#define PIDX_PROV_PARAM_HKDF_DIGEST_CHECK 291 +#define PIDX_PROV_PARAM_HKDF_KEY_CHECK 292 +#define PIDX_PROV_PARAM_HMAC_KEY_CHECK 293 +#define PIDX_PROV_PARAM_KBKDF_KEY_CHECK 294 +#define PIDX_PROV_PARAM_KMAC_KEY_CHECK 295 +#define PIDX_PROV_PARAM_NAME 296 +#define PIDX_PROV_PARAM_NO_SHORT_MAC 297 +#define PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK 298 +#define PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED 299 +#define PIDX_PROV_PARAM_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED 301 +#define PIDX_PROV_PARAM_SECURITY_CHECKS 302 +#define PIDX_PROV_PARAM_SELF_TEST_DESC 303 +#define PIDX_PROV_PARAM_SELF_TEST_PHASE 304 +#define PIDX_PROV_PARAM_SELF_TEST_TYPE 305 +#define PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK 306 +#define PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK 307 +#define PIDX_PROV_PARAM_SSHKDF_KEY_CHECK 308 +#define PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK 309 +#define PIDX_PROV_PARAM_SSKDF_KEY_CHECK 310 +#define PIDX_PROV_PARAM_STATUS 311 +#define PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED 312 +#define PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK 313 +#define PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK 314 +#define PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK 315 +#define PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK 316 +#define PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK 317 +#define PIDX_PROV_PARAM_VERSION 115 +#define PIDX_PROV_PARAM_X942KDF_KEY_CHECK 318 +#define PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK 319 +#define PIDX_PROV_PARAM_X963KDF_KEY_CHECK 320 +#define PIDX_RAND_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_RAND_PARAM_GENERATE 321 +#define PIDX_RAND_PARAM_MAX_REQUEST 322 +#define PIDX_RAND_PARAM_STATE 323 +#define PIDX_RAND_PARAM_STRENGTH 324 +#define PIDX_RAND_PARAM_TEST_ENTROPY 325 +#define PIDX_RAND_PARAM_TEST_NONCE 326 +#define PIDX_SIGNATURE_PARAM_ADD_RANDOM 327 +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID PIDX_PKEY_PARAM_ALGORITHM_ID +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_SIGNATURE_PARAM_CONTEXT_STRING 328 +#define PIDX_SIGNATURE_PARAM_DETERMINISTIC 329 +#define PIDX_SIGNATURE_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_SIGNATURE_PARAM_DIGEST_SIZE PIDX_PKEY_PARAM_DIGEST_SIZE +#define PIDX_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_SIGNATURE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_CHECK PIDX_PKEY_PARAM_FIPS_SIGN_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK 330 +#define PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE 331 +#define PIDX_SIGNATURE_PARAM_INSTANCE 332 +#define PIDX_SIGNATURE_PARAM_KAT 333 +#define PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING 334 +#define PIDX_SIGNATURE_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_SIGNATURE_PARAM_MGF1_PROPERTIES PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_SIGNATURE_PARAM_MU 335 +#define PIDX_SIGNATURE_PARAM_NONCE_TYPE 336 +#define PIDX_SIGNATURE_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_SIGNATURE_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_SIGNATURE_PARAM_PSS_SALTLEN 271 +#define PIDX_SIGNATURE_PARAM_SIGNATURE 337 +#define PIDX_SIGNATURE_PARAM_TEST_ENTROPY 338 +#define PIDX_SKEY_PARAM_KEY_LENGTH 339 +#define PIDX_SKEY_PARAM_RAW_BYTES 340 +#define PIDX_STORE_PARAM_ALIAS 341 +#define PIDX_STORE_PARAM_DIGEST 3 +#define PIDX_STORE_PARAM_EXPECT 342 +#define PIDX_STORE_PARAM_FINGERPRINT 343 +#define PIDX_STORE_PARAM_INPUT_TYPE 174 +#define PIDX_STORE_PARAM_ISSUER 296 +#define PIDX_STORE_PARAM_PROPERTIES 7 +#define PIDX_STORE_PARAM_SERIAL 344 +#define PIDX_STORE_PARAM_SUBJECT 345 diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/asn1.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/asn1.h index e28efbbb718e2b..5129217b2e0977 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/asn1.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/asn1.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/asn1.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -21,6 +21,9 @@ # define HEADER_ASN1_H # endif +# ifndef OPENSSL_NO_STDIO +# include +# endif # include # include # include @@ -50,14 +53,14 @@ extern "C" { # define V_ASN1_PRIMITIVE_TAG 0x1f # define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG -# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ -# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ -# define V_ASN1_ANY -4/* used in ASN1 template code */ +# define V_ASN1_APP_CHOOSE -2 /* let the recipient choose */ +# define V_ASN1_OTHER -3 /* used in ASN1_TYPE */ +# define V_ASN1_ANY -4 /* used in ASN1 template code */ # define V_ASN1_UNDEF -1 /* ASN.1 tag values */ # define V_ASN1_EOC 0 -# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_BOOLEAN 1 # define V_ASN1_INTEGER 2 # define V_ASN1_BIT_STRING 3 # define V_ASN1_OCTET_STRING 4 @@ -70,19 +73,19 @@ extern "C" { # define V_ASN1_UTF8STRING 12 # define V_ASN1_SEQUENCE 16 # define V_ASN1_SET 17 -# define V_ASN1_NUMERICSTRING 18 /**/ +# define V_ASN1_NUMERICSTRING 18 # define V_ASN1_PRINTABLESTRING 19 # define V_ASN1_T61STRING 20 -# define V_ASN1_TELETEXSTRING 20/* alias */ -# define V_ASN1_VIDEOTEXSTRING 21 /**/ +# define V_ASN1_TELETEXSTRING 20 /* alias */ +# define V_ASN1_VIDEOTEXSTRING 21 # define V_ASN1_IA5STRING 22 # define V_ASN1_UTCTIME 23 -# define V_ASN1_GENERALIZEDTIME 24 /**/ -# define V_ASN1_GRAPHICSTRING 25 /**/ -# define V_ASN1_ISO64STRING 26 /**/ -# define V_ASN1_VISIBLESTRING 26/* alias */ -# define V_ASN1_GENERALSTRING 27 /**/ -# define V_ASN1_UNIVERSALSTRING 28 /**/ +# define V_ASN1_GENERALIZEDTIME 24 +# define V_ASN1_GRAPHICSTRING 25 +# define V_ASN1_ISO64STRING 26 +# define V_ASN1_VISIBLESTRING 26 /* alias */ +# define V_ASN1_GENERALSTRING 27 +# define V_ASN1_UNIVERSALSTRING 28 # define V_ASN1_BMPSTRING 30 /* @@ -155,7 +158,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) -# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +# define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */ /* * This indicates that the ASN1_STRING is not a real value but just a place * holder for the location where indefinite length constructed data should be @@ -275,7 +278,7 @@ typedef struct ASN1_TLC_st ASN1_TLC; /* This is just an opaque pointer */ typedef struct ASN1_VALUE_st ASN1_VALUE; -/* Declare ASN1 functions: the implement macro in in asn1t.h */ +/* Declare ASN1 functions: the implement macro is in asn1t.h */ /* * The mysterious 'extern' that's passed to some macros is innocuous, @@ -368,6 +371,7 @@ typedef struct ASN1_VALUE_st ASN1_VALUE; typedef void *d2i_of_void(void **, const unsigned char **, long); typedef int i2d_of_void(const void *, unsigned char **); +typedef int OSSL_i2d_of_void_ctx(const void *, unsigned char **, void *vctx); /*- * The following macros and typedefs allow an ASN1_ITEM @@ -996,6 +1000,8 @@ int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, unsigned char *data, int max_len); void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/bio.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/bio.h index d094af47b73f1c..be24d086a54013 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/bio.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/bio.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/bio.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -67,8 +67,13 @@ extern "C" { # define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) # endif # define BIO_TYPE_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_PAIR (26|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_MEM (27|BIO_TYPE_SOURCE_SINK) +/* Custom type starting index returned by BIO_get_new_index() */ #define BIO_TYPE_START 128 +/* Custom type maximum index that can be returned by BIO_get_new_index() */ +#define BIO_TYPE_MASK 0xFF /* * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. @@ -171,6 +176,31 @@ extern "C" { # define BIO_CTRL_SET_INDENT 80 # define BIO_CTRL_GET_INDENT 81 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +# define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +# define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +# define BIO_CTRL_DGRAM_GET_CAPS 86 +# define BIO_CTRL_DGRAM_SET_CAPS 87 +# define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +# define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +# define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +# define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +# define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 +# define BIO_CTRL_DGRAM_SET0_LOCAL_ADDR 94 + +# define BIO_DGRAM_CAP_NONE 0U +# define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +# define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +# define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +# define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + # ifndef OPENSSL_NO_KTLS # define BIO_get_ktls_send(b) \ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) @@ -208,7 +238,7 @@ extern "C" { # define BIO_FLAGS_NONCLEAR_RST 0x400 # define BIO_FLAGS_IN_EOF 0x800 -/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */ +/* the BIO FLAGS values 0x1000 to 0x8000 are reserved for internal KTLS flags */ typedef union bio_addr_st BIO_ADDR; typedef struct bio_addrinfo_st BIO_ADDRINFO; @@ -256,12 +286,14 @@ void BIO_clear_flags(BIO *b, int flags); # define BIO_RR_ACCEPT 0x03 /* These are passed by the BIO callback */ -# define BIO_CB_FREE 0x01 -# define BIO_CB_READ 0x02 -# define BIO_CB_WRITE 0x03 -# define BIO_CB_PUTS 0x04 -# define BIO_CB_GETS 0x05 -# define BIO_CB_CTRL 0x06 +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 +# define BIO_CB_RECVMMSG 0x07 +# define BIO_CB_SENDMMSG 0x08 /* * The callback is called before and after the underling operation, The @@ -362,6 +394,36 @@ struct bio_dgram_sctp_prinfo { }; # endif +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_TYPE_SSL 2 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + SSL *ssl; + } value; +} BIO_POLL_DESCRIPTOR; + /* * #define BIO_CONN_get_param_hostname BIO_ctrl */ @@ -428,10 +490,17 @@ struct bio_dgram_sctp_prinfo { # define BIO_C_SET_CONNECT_MODE 155 +# define BIO_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +# define BIO_C_SET_SOCK_TYPE 157 +# define BIO_C_GET_SOCK_TYPE 158 +# define BIO_C_GET_DGRAM_BIO 159 + # define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) # define BIO_get_app_data(s) BIO_get_ex_data(s,0) -# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_tfo(b,n) BIO_ctrl(b,BIO_C_SET_TFO,(n),NULL) # ifndef OPENSSL_NO_SOCK /* IP families we support, for BIO_s_connect() and BIO_s_accept() */ @@ -452,7 +521,11 @@ struct bio_dgram_sctp_prinfo { # define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) # define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) # define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_get_conn_mode(b) BIO_ctrl(b,BIO_C_GET_CONNECT,4,NULL) # define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) +# define BIO_set_sock_type(b,t) BIO_ctrl(b,BIO_C_SET_SOCK_TYPE,(t),NULL) +# define BIO_get_sock_type(b) BIO_ctrl(b,BIO_C_GET_SOCK_TYPE,0,NULL) +# define BIO_get0_dgram_bio(b, p) BIO_ctrl(b,BIO_C_GET_DGRAM_BIO,0,(void *)(BIO **)(p)) /* BIO_s_accept() */ # define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ @@ -469,6 +542,7 @@ struct bio_dgram_sctp_prinfo { (char *)(bio)) # define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) # define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) +# define BIO_set_tfo_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,5,(n)?(void *)"a":NULL) /* Aliases kept for backward compatibility */ # define BIO_BIND_NORMAL 0 @@ -596,8 +670,32 @@ int BIO_ctrl_reset_read_request(BIO *b); (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) # define BIO_dgram_set_peer(b,peer) \ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_detect_peer_addr(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) # define BIO_dgram_get_mtu_overhead(b) \ (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +# define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +# define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +# define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +# define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +# define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +# define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +# define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +# define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +# define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +# define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) +# define BIO_dgram_set0_local_addr(b, addr) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET0_LOCAL_ADDR, 0, (addr)) /* ctrl macros for BIO_f_prefix */ # define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) @@ -640,10 +738,18 @@ void BIO_vfree(BIO *a); int BIO_up_ref(BIO *a); int BIO_read(BIO *b, void *data, int dlen); int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); int BIO_gets(BIO *bp, char *buf, int size); int BIO_get_line(BIO *bio, char *buf, int size); int BIO_write(BIO *b, const void *data, int dlen); int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); int BIO_puts(BIO *bp, const char *buf); int BIO_indent(BIO *b, int indent, int max); long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); @@ -667,6 +773,9 @@ int BIO_nwrite0(BIO *bio, char **buf); int BIO_nwrite(BIO *bio, char **buf, int num); const BIO_METHOD *BIO_s_mem(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +# endif const BIO_METHOD *BIO_s_secmem(void); BIO *BIO_new_mem_buf(const void *buf, int len); # ifndef OPENSSL_NO_SOCK @@ -686,6 +795,7 @@ const BIO_METHOD *BIO_f_nbio_test(void); const BIO_METHOD *BIO_f_prefix(void); const BIO_METHOD *BIO_s_core(void); # ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_pair(void); const BIO_METHOD *BIO_s_datagram(void); int BIO_dgram_non_fatal_error(int error); BIO *BIO_new_dgram(int fd, int close_flag); @@ -704,6 +814,7 @@ int BIO_dgram_sctp_msg_waiting(BIO *b); # ifndef OPENSSL_NO_SOCK int BIO_sock_should_retry(int i); int BIO_sock_non_fatal_error(int error); +int BIO_err_is_non_fatal(unsigned int errcode); int BIO_socket_wait(int fd, int for_read, time_t max_time); # endif int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); @@ -726,6 +837,8 @@ int BIO_hex_string(BIO *out, int indent, int width, const void *data, # ifndef OPENSSL_NO_SOCK BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, const void *where, size_t wherelen, unsigned short port); void BIO_ADDR_free(BIO_ADDR *); @@ -788,6 +901,7 @@ int BIO_sock_info(int sock, # define BIO_SOCK_KEEPALIVE 0x04 # define BIO_SOCK_NONBLOCK 0x08 # define BIO_SOCK_NODELAY 0x10 +# define BIO_SOCK_TFO 0x20 int BIO_socket(int domain, int socktype, int protocol, int options); int BIO_connect(int sock, const BIO_ADDR *addr, int options); @@ -805,6 +919,11 @@ BIO *BIO_new_fd(int fd, int close_flag); int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, BIO **bio2, size_t writebuf2); +# ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +# endif + /* * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default @@ -849,38 +968,54 @@ ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); BIO_METHOD *BIO_meth_new(int type, const char *name); void BIO_meth_free(BIO_METHOD *biom); -int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int); -int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t, - size_t *); int BIO_meth_set_write(BIO_METHOD *biom, int (*write) (BIO *, const char *, int)); int BIO_meth_set_write_ex(BIO_METHOD *biom, int (*bwrite) (BIO *, const char *, size_t, size_t *)); -int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); -int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); +int BIO_meth_set_sendmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_read(BIO_METHOD *biom, int (*read) (BIO *, char *, int)); int BIO_meth_set_read_ex(BIO_METHOD *biom, int (*bread) (BIO *, char *, size_t, size_t *)); -int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +int BIO_meth_set_recvmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_puts(BIO_METHOD *biom, int (*puts) (BIO *, const char *)); -int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); int BIO_meth_set_gets(BIO_METHOD *biom, int (*ossl_gets) (BIO *, char *, int)); -long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); int BIO_meth_set_ctrl(BIO_METHOD *biom, long (*ctrl) (BIO *, int, long, void *)); -int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); -int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); -long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) - (BIO *, int, BIO_info_cb *); int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, long (*callback_ctrl) (BIO *, int, BIO_info_cb *)); - +# ifndef OPENSSL_NO_DEPRECATED_3_5 +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, + int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, + long, void *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) (BIO *, int, + BIO_info_cb *); +# endif # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/cmp.h index f0e768e01baacd..ded2dd2905f756 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/cmp.h.in * - * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -35,7 +35,9 @@ extern "C" { # endif -# define OSSL_CMP_PVNO 2 +# define OSSL_CMP_PVNO_2 2 +# define OSSL_CMP_PVNO_3 3 +# define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ /*- * PKIFailureInfo ::= BIT STRING { @@ -137,7 +139,6 @@ extern "C" { # if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX # error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int # endif - typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) @@ -203,8 +204,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_PKISTATUS_revocationWarning 4 # define OSSL_CMP_PKISTATUS_revocationNotification 5 # define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 - typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; + DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) # define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 @@ -274,6 +275,46 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) #define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) #define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) + +typedef struct ossl_cmp_crlstatus_st OSSL_CMP_CRLSTATUS; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS) +#define sk_OSSL_CMP_CRLSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_value(sk, idx) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CRLSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CRLSTATUS_new_null() ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CRLSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CRLSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CRLSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_delete(sk, i) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CRLSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_pop(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_shift(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CRLSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CRLSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CRLSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CRLSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CRLSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) + + +typedef OSSL_CRMF_ATTRIBUTETYPEANDVALUE OSSL_CMP_ATAV; +# define OSSL_CMP_ATAV_free OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free +typedef STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) OSSL_CMP_ATAVS; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_ATAVS) +# define stack_st_OSSL_CMP_ATAV stack_st_OSSL_CRMF_ATTRIBUTETYPEANDVALUE +# define sk_OSSL_CMP_ATAV_num sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num +# define sk_OSSL_CMP_ATAV_value sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value +# define sk_OSSL_CMP_ATAV_push sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push +# define sk_OSSL_CMP_ATAV_pop_free sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free + typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT; typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI; DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI) @@ -375,21 +416,75 @@ void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type, ASN1_TYPE *value); ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav); ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); -int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p, +int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **sk_p, OSSL_CMP_ITAV *itav); void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new0_certProfile(STACK_OF(ASN1_UTF8STRING) + *certProfile); +int OSSL_CMP_ITAV_get0_certProfile(const OSSL_CMP_ITAV *itav, + STACK_OF(ASN1_UTF8STRING) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_create(const X509_CRL *crl, + const X509 *cert, int only_DN); +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_new1(const DIST_POINT_NAME *dpn, + const GENERAL_NAMES *issuer, + const ASN1_TIME *thisUpdate); +int OSSL_CMP_CRLSTATUS_get0(const OSSL_CMP_CRLSTATUS *crlstatus, + DIST_POINT_NAME **dpn, GENERAL_NAMES **issuer, + ASN1_TIME **thisUpdate); +void OSSL_CMP_CRLSTATUS_free(OSSL_CMP_CRLSTATUS *crlstatus); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_crlStatusList(STACK_OF(OSSL_CMP_CRLSTATUS) *crlStatusList); +int OSSL_CMP_ITAV_get0_crlStatusList(const OSSL_CMP_ITAV *itav, + STACK_OF(OSSL_CMP_CRLSTATUS) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_crls(const X509_CRL *crls); +int OSSL_CMP_ITAV_get0_crls(const OSSL_CMP_ITAV *it, STACK_OF(X509_CRL) **out); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_certReqTemplate(OSSL_CRMF_CERTTEMPLATE *certTemplate, + OSSL_CMP_ATAVS *keySpec); +int OSSL_CMP_ITAV_get1_certReqTemplate(const OSSL_CMP_ITAV *itav, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +OSSL_CMP_ATAV *OSSL_CMP_ATAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ATAV_set0(OSSL_CMP_ATAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ATAV_get0_type(const OSSL_CMP_ATAV *itav); +ASN1_TYPE *OSSL_CMP_ATAV_get0_value(const OSSL_CMP_ATAV *itav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_algId(const X509_ALGOR *alg); +X509_ALGOR *OSSL_CMP_ATAV_get0_algId(const OSSL_CMP_ATAV *atav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_rsaKeyLen(int len); +int OSSL_CMP_ATAV_get_rsaKeyLen(const OSSL_CMP_ATAV *atav); +int OSSL_CMP_ATAV_push1(OSSL_CMP_ATAVS **sk_p, const OSSL_CMP_ATAV *atav); + void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); /* from cmp_ctx.c */ OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const OSSL_CMP_CTX *ctx); /* CMP general options: */ # define OSSL_CMP_OPT_LOG_VERBOSITY 0 /* CMP transfer options: */ -# define OSSL_CMP_OPT_KEEP_ALIVE 10 -# define OSSL_CMP_OPT_MSG_TIMEOUT 11 +# define OSSL_CMP_OPT_KEEP_ALIVE 10 +# define OSSL_CMP_OPT_MSG_TIMEOUT 11 # define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 +# define OSSL_CMP_OPT_USE_TLS 13 /* CMP request options: */ # define OSSL_CMP_OPT_VALIDITY_DAYS 20 # define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 @@ -407,6 +502,7 @@ int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); # define OSSL_CMP_OPT_DIGEST_ALGNID 34 # define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35 # define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36 +# define OSSL_CMP_OPT_NO_CACHE_EXTRACERTS 37 int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val); int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt); /* CMP-specific callback for logging and outputting the error queue: */ @@ -420,9 +516,11 @@ int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); +# ifndef OPENSSL_NO_HTTP int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); +# endif typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); @@ -432,7 +530,9 @@ void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); +# define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +# define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); /* client authentication: */ @@ -448,12 +548,15 @@ int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx, int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); int OSSL_CMP_CTX_reset_geninfo_ITAVs(OSSL_CMP_CTX *ctx); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_CTX_get0_geninfo_ITAVs(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, STACK_OF(X509) *extraCertsOut); /* certificate template: */ int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set1_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, const GENERAL_NAME *name); @@ -477,6 +580,7 @@ int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); # define OSSL_CMP_PKISI_BUFLEN 1024 +X509 *OSSL_CMP_CTX_get0_validatedSrvCert(const OSSL_CMP_CTX *ctx); X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); @@ -498,10 +602,13 @@ OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const OSSL_CMP_PKIHEADER *hdr); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_HDR_get0_geninfo_ITAVs(const OSSL_CMP_PKIHEADER *hdr); /* from cmp_msg.c */ OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg); +X509_PUBKEY *OSSL_CMP_MSG_get0_certreq_publickey(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_recipNonce(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid); @@ -517,8 +624,10 @@ int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, X509_STORE *trusted_store, X509 *cert); /* from cmp_http.c */ +# ifndef OPENSSL_NO_HTTP OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); +# endif /* from cmp_server.c */ typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; @@ -561,6 +670,13 @@ int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx, OSSL_CMP_SRV_error_cb_t process_error, OSSL_CMP_SRV_certConf_cb_t process_certConf, OSSL_CMP_SRV_pollReq_cb_t process_pollReq); +typedef int (*OSSL_CMP_SRV_delayed_delivery_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +typedef int (*OSSL_CMP_SRV_clean_transaction_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_SRV_CTX_init_trans(OSSL_CMP_SRV_CTX *srv_ctx, + OSSL_CMP_SRV_delayed_delivery_cb_t delay, + OSSL_CMP_SRV_clean_transaction_cb_t clean); OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx, @@ -577,6 +693,8 @@ X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type, # define OSSL_CMP_CR 2 # define OSSL_CMP_P10CR 4 # define OSSL_CMP_KUR 7 +# define OSSL_CMP_GENM 21 +# define OSSL_CMP_ERROR 23 # define OSSL_CMP_exec_IR_ses(ctx) \ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL) # define OSSL_CMP_exec_CR_ses(ctx) \ @@ -590,6 +708,18 @@ int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); +int OSSL_CMP_get1_crlUpdate(OSSL_CMP_CTX *ctx, const X509 *crlcert, + const X509_CRL *last_crl, + X509_CRL **crl); +int OSSL_CMP_get1_certReqTemplate(OSSL_CMP_CTX *ctx, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/cms.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/cms.h index 03ce6ab07aac44..1a51921256fea4 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/cms.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/cms.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/cms.h.in * - * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2008-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -31,8 +31,10 @@ extern "C" { # endif +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; typedef struct CMS_ContentInfo_st CMS_ContentInfo; typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; typedef struct CMS_CertificateChoices CMS_CertificateChoices; typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; @@ -147,10 +149,14 @@ SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, #define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) +DECLARE_ASN1_DUP_FUNCTION(CMS_EnvelopedData) + CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq); # define CMS_SIGNERINFO_ISSUER_SERIAL 0 @@ -190,6 +196,7 @@ CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq) # define CMS_ASCIICRLF 0x80000 # define CMS_CADES 0x100000 # define CMS_USE_ORIGINATOR_KEYID 0x200000 +# define CMS_NO_SIGNING_TIME 0x400000 const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms); @@ -217,13 +224,16 @@ int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, unsigned int flags); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, BIO *dcont, + unsigned int flags); CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, unsigned int flags); CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, @@ -233,27 +243,26 @@ CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, unsigned int flags); CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, const unsigned char *key, size_t keylen, BIO *dcont, BIO *out, unsigned int flags); - CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags); CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, @@ -272,7 +281,7 @@ CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags); CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, BIO *dcont, BIO *out, unsigned int flags); @@ -291,12 +300,16 @@ int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo * -CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx, +CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags); @@ -385,6 +398,11 @@ ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); int CMS_SignerInfo_sign(CMS_SignerInfo *si); int CMS_SignerInfo_verify(CMS_SignerInfo *si); int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, @@ -441,7 +459,7 @@ CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( unsigned char *id, int idlen, int allorfirst, STACK_OF(GENERAL_NAMES) *receiptList, STACK_OF(GENERAL_NAMES) *receiptsTo, - OSSL_LIB_CTX *ctx); + OSSL_LIB_CTX *libctx); int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/comp.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/comp.h new file mode 100644 index 00000000000000..90e39511fe8d28 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/comp.h @@ -0,0 +1,98 @@ +/* + * Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_COMP_H +# define OPENSSL_COMP_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_COMP_H +# endif + +# include + +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + + +# ifndef OPENSSL_NO_COMP + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX* comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); + +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); + +COMP_METHOD *COMP_zlib(void); +COMP_METHOD *COMP_zlib_oneshot(void); +COMP_METHOD *COMP_brotli(void); +COMP_METHOD *COMP_brotli_oneshot(void); +COMP_METHOD *COMP_zstd(void); +COMP_METHOD *COMP_zstd_oneshot(void); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define COMP_zlib_cleanup() while(0) continue +# endif + +# ifdef OPENSSL_BIO_H +const BIO_METHOD *BIO_f_zlib(void); +const BIO_METHOD *BIO_f_brotli(void); +const BIO_METHOD *BIO_f_zstd(void); +# endif + +# endif + +typedef struct ssl_comp_st SSL_COMP; + +SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) +#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) +#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) +#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) +#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) +#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) +#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) +#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) +#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) +#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) +#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) +#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) + + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/conf.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/conf.h index 994e573a957435..ffa9ced71e8b26 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/conf.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/conf.h @@ -27,6 +27,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -65,7 +68,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) #define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) #define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); -#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp))) +#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp)), lh_CONF_VALUE_hash_thunk, lh_CONF_VALUE_comp_thunk, lh_CONF_VALUE_doall_thunk, lh_CONF_VALUE_doall_arg_thunk)) #define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/configuration.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/configuration.h index 27e6fddbacb1e8..1fbb9d88bd85a0 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/configuration.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/configuration.h @@ -26,7 +26,7 @@ extern "C" { * OpenSSL was configured with the following options: */ -# define OPENSSL_CONFIGURED_API 30000 +# define OPENSSL_CONFIGURED_API 30500 # ifndef OPENSSL_RAND_SEED_OS # define OPENSSL_RAND_SEED_OS # endif @@ -42,6 +42,12 @@ extern "C" { # ifndef OPENSSL_NO_ASM # define OPENSSL_NO_ASM # endif +# ifndef OPENSSL_NO_BROTLI +# define OPENSSL_NO_BROTLI +# endif +# ifndef OPENSSL_NO_BROTLI_DYNAMIC +# define OPENSSL_NO_BROTLI_DYNAMIC +# endif # ifndef OPENSSL_NO_COMP # define OPENSSL_NO_COMP # endif @@ -51,6 +57,9 @@ extern "C" { # ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # endif +# ifndef OPENSSL_NO_DEMOS +# define OPENSSL_NO_DEMOS +# endif # ifndef OPENSSL_NO_DEVCRYPTOENG # define OPENSSL_NO_DEVCRYPTOENG # endif @@ -63,12 +72,24 @@ extern "C" { # ifndef OPENSSL_NO_EXTERNAL_TESTS # define OPENSSL_NO_EXTERNAL_TESTS # endif +# ifndef OPENSSL_NO_FIPS_JITTER +# define OPENSSL_NO_FIPS_JITTER +# endif # ifndef OPENSSL_NO_FUZZ_AFL # define OPENSSL_NO_FUZZ_AFL # endif # ifndef OPENSSL_NO_FUZZ_LIBFUZZER # define OPENSSL_NO_FUZZ_LIBFUZZER # endif +# ifndef OPENSSL_NO_H3DEMO +# define OPENSSL_NO_H3DEMO +# endif +# ifndef OPENSSL_NO_HQINTEROP +# define OPENSSL_NO_HQINTEROP +# endif +# ifndef OPENSSL_NO_JITTER +# define OPENSSL_NO_JITTER +# endif # ifndef OPENSSL_NO_KTLS # define OPENSSL_NO_KTLS # endif @@ -81,6 +102,9 @@ extern "C" { # ifndef OPENSSL_NO_MSAN # define OPENSSL_NO_MSAN # endif +# ifndef OPENSSL_NO_PIE +# define OPENSSL_NO_PIE +# endif # ifndef OPENSSL_NO_RC5 # define OPENSSL_NO_RC5 # endif @@ -93,6 +117,12 @@ extern "C" { # ifndef OPENSSL_NO_SSL3_METHOD # define OPENSSL_NO_SSL3_METHOD # endif +# ifndef OPENSSL_NO_SSLKEYLOG +# define OPENSSL_NO_SSLKEYLOG +# endif +# ifndef OPENSSL_NO_TFO +# define OPENSSL_NO_TFO +# endif # ifndef OPENSSL_NO_TRACE # define OPENSSL_NO_TRACE # endif @@ -108,6 +138,18 @@ extern "C" { # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS # define OPENSSL_NO_WEAK_SSL_CIPHERS # endif +# ifndef OPENSSL_NO_ZLIB +# define OPENSSL_NO_ZLIB +# endif +# ifndef OPENSSL_NO_ZLIB_DYNAMIC +# define OPENSSL_NO_ZLIB_DYNAMIC +# endif +# ifndef OPENSSL_NO_ZSTD +# define OPENSSL_NO_ZSTD +# endif +# ifndef OPENSSL_NO_ZSTD_DYNAMIC +# define OPENSSL_NO_ZSTD_DYNAMIC +# endif # ifndef OPENSSL_NO_DYNAMIC_ENGINE # define OPENSSL_NO_DYNAMIC_ENGINE # endif @@ -129,6 +171,12 @@ extern "C" { # define RC4_INT unsigned char +# if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +# define OPENSSL_NO_COMP_ALG +# else +# undef OPENSSL_NO_COMP_ALG +# endif + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/core_names.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/core_names.h new file mode 100644 index 00000000000000..aaca6051c81b53 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/core_names.h @@ -0,0 +1,575 @@ +/* + * WARNING: do not edit! + * Generated by makefile from include/openssl/core_names.h.in + * + * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#ifndef OPENSSL_CORE_NAMES_H +# define OPENSSL_CORE_NAMES_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +/* OSSL_CIPHER_PARAM_CTS_MODE Values */ +# define OSSL_CIPHER_CTS_MODE_CS1 "CS1" +# define OSSL_CIPHER_CTS_MODE_CS2 "CS2" +# define OSSL_CIPHER_CTS_MODE_CS3 "CS3" + +/* Known CIPHER names (not a complete list) */ +# define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" + +/* Known DIGEST names (not a complete list) */ +# define OSSL_DIGEST_NAME_MD5 "MD5" +# define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" +# define OSSL_DIGEST_NAME_SHA1 "SHA1" +# define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" +# define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" +# define OSSL_DIGEST_NAME_SHA2_256_192 "SHA2-256/192" +# define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" +# define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" +# define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" +# define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" +# define OSSL_DIGEST_NAME_MD2 "MD2" +# define OSSL_DIGEST_NAME_MD4 "MD4" +# define OSSL_DIGEST_NAME_MDC2 "MDC2" +# define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" +# define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" +# define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" +# define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" +# define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" +# define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" +# define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" +# define OSSL_DIGEST_NAME_SM3 "SM3" + +/* Known MAC names */ +# define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" +# define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" +# define OSSL_MAC_NAME_CMAC "CMAC" +# define OSSL_MAC_NAME_GMAC "GMAC" +# define OSSL_MAC_NAME_HMAC "HMAC" +# define OSSL_MAC_NAME_KMAC128 "KMAC128" +# define OSSL_MAC_NAME_KMAC256 "KMAC256" +# define OSSL_MAC_NAME_POLY1305 "POLY1305" +# define OSSL_MAC_NAME_SIPHASH "SIPHASH" + +/* Known KDF names */ +# define OSSL_KDF_NAME_HKDF "HKDF" +# define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" +# define OSSL_KDF_NAME_PBKDF1 "PBKDF1" +# define OSSL_KDF_NAME_PBKDF2 "PBKDF2" +# define OSSL_KDF_NAME_SCRYPT "SCRYPT" +# define OSSL_KDF_NAME_SSHKDF "SSHKDF" +# define OSSL_KDF_NAME_SSKDF "SSKDF" +# define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" +# define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" +# define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" +# define OSSL_KDF_NAME_X963KDF "X963KDF" +# define OSSL_KDF_NAME_KBKDF "KBKDF" +# define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" +# define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" + +/* RSA padding modes */ +# define OSSL_PKEY_RSA_PAD_MODE_NONE "none" +# define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" +# define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" +# define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" +# define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" + +/* RSA pss padding salt length */ +# define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" + +/* OSSL_PKEY_PARAM_EC_ENCODING values */ +# define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" +# define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" + +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" + +# define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" + +/* PROV_SKEY well known key types */ +# define OSSL_SKEY_TYPE_GENERIC "GENERIC-SECRET" +# define OSSL_SKEY_TYPE_AES "AES" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" + +/* Provider configuration variables */ +#define OSSL_PKEY_RETAIN_SEED "pkey_retain_seed" + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +# define OSSL_ALG_PARAM_ALGORITHM_ID "algorithm-id" +# define OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS "algorithm-id-params" +# define OSSL_ALG_PARAM_CIPHER "cipher" +# define OSSL_ALG_PARAM_DIGEST "digest" +# define OSSL_ALG_PARAM_ENGINE "engine" +# define OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR "fips-indicator" +# define OSSL_ALG_PARAM_MAC "mac" +# define OSSL_ALG_PARAM_PROPERTIES "properties" +# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +# define OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props" +# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" +# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name" +# define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal" +# define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name" +# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid" +# define OSSL_CIPHER_PARAM_AEAD "aead" +# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +# define OSSL_CIPHER_PARAM_AEAD_IV_GENERATED "iv-generated" +# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" +# define OSSL_CIPHER_PARAM_AEAD_TAG "tag" +# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" +# define OSSL_CIPHER_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD "alg_id_param" +# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_CIPHER_PARAM_CTS "cts" +# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" +# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" +# define OSSL_CIPHER_PARAM_DECRYPT_ONLY "decrypt-only" +# define OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK "encrypt-check" +# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" +# define OSSL_CIPHER_PARAM_IV "iv" +# define OSSL_CIPHER_PARAM_IVLEN "ivlen" +# define OSSL_CIPHER_PARAM_KEYLEN "keylen" +# define OSSL_CIPHER_PARAM_MODE "mode" +# define OSSL_CIPHER_PARAM_NUM "num" +# define OSSL_CIPHER_PARAM_PADDING "padding" +# define OSSL_CIPHER_PARAM_PIPELINE_AEAD_TAG "pipeline-tag" +# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" +# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" +# define OSSL_CIPHER_PARAM_ROUNDS "rounds" +# define OSSL_CIPHER_PARAM_SPEED "speed" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag" +# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" +# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" +# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" +# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" +# define OSSL_CIPHER_PARAM_USE_BITS "use-bits" +# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard" +# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" +# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_DIGEST_PARAM_MICALG "micalg" +# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" +# define OSSL_DIGEST_PARAM_SIZE "size" +# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" +# define OSSL_DIGEST_PARAM_XOF "xof" +# define OSSL_DIGEST_PARAM_XOFLEN "xoflen" +# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +# define OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +# define OSSL_DRBG_PARAM_SIZE "size" +# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" +# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" +# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" +# define OSSL_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_EXCHANGE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" +# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" +# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" +# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" +# define OSSL_EXCHANGE_PARAM_PAD "pad" +# define OSSL_GEN_PARAM_ITERATION "iteration" +# define OSSL_GEN_PARAM_POTENTIAL "potential" +# define OSSL_KDF_PARAM_ARGON2_AD "ad" +# define OSSL_KDF_PARAM_ARGON2_LANES "lanes" +# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost" +# define OSSL_KDF_PARAM_ARGON2_VERSION "version" +# define OSSL_KDF_PARAM_CEK_ALG "cekalg" +# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_KDF_PARAM_CONSTANT "constant" +# define OSSL_KDF_PARAM_DATA "data" +# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean" +# define OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KDF_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_KDF_PARAM_FIPS_EMS_CHECK "ems_check" +# define OSSL_KDF_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy" +# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce" +# define OSSL_KDF_PARAM_INFO "info" +# define OSSL_KDF_PARAM_ITER "iter" +# define OSSL_KDF_PARAM_KBKDF_R "r" +# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" +# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" +# define OSSL_KDF_PARAM_KEY "key" +# define OSSL_KDF_PARAM_LABEL "label" +# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_KDF_PARAM_MAC_SIZE "maclen" +# define OSSL_KDF_PARAM_MODE "mode" +# define OSSL_KDF_PARAM_PASSWORD "pass" +# define OSSL_KDF_PARAM_PKCS12_ID "id" +# define OSSL_KDF_PARAM_PKCS5 "pkcs5" +# define OSSL_KDF_PARAM_PREFIX "prefix" +# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_KDF_PARAM_SALT "salt" +# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" +# define OSSL_KDF_PARAM_SCRYPT_N "n" +# define OSSL_KDF_PARAM_SCRYPT_P "p" +# define OSSL_KDF_PARAM_SCRYPT_R "r" +# define OSSL_KDF_PARAM_SECRET "secret" +# define OSSL_KDF_PARAM_SEED "seed" +# define OSSL_KDF_PARAM_SIZE "size" +# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" +# define OSSL_KDF_PARAM_SSHKDF_TYPE "type" +# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" +# define OSSL_KDF_PARAM_THREADS "threads" +# define OSSL_KDF_PARAM_UKM "ukm" +# define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info" +# define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info" +# define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info" +# define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo" +# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_KEM_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KEM_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KEM_PARAM_IKME "ikme" +# define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING "hs_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm" +# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len" +# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" +# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_MAC_PARAM_CUSTOM "custom" +# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" +# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" +# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" +# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" +# define OSSL_MAC_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_MAC_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_MAC_PARAM_FIPS_NO_SHORT_MAC OSSL_PROV_PARAM_NO_SHORT_MAC +# define OSSL_MAC_PARAM_IV "iv" +# define OSSL_MAC_PARAM_KEY "key" +# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_MAC_PARAM_SALT "salt" +# define OSSL_MAC_PARAM_SIZE "size" +# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" +# define OSSL_MAC_PARAM_XOF "xof" +# define OSSL_OBJECT_PARAM_DATA "data" +# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" +# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" +# define OSSL_OBJECT_PARAM_DESC "desc" +# define OSSL_OBJECT_PARAM_INPUT_TYPE "input-type" +# define OSSL_OBJECT_PARAM_REFERENCE "reference" +# define OSSL_OBJECT_PARAM_TYPE "type" +# define OSSL_PASSPHRASE_PARAM_INFO "info" +# define OSSL_PKEY_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_PKEY_PARAM_BITS "bits" +# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" +# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm" +# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" +# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +# define OSSL_PKEY_PARAM_DIST_ID "distid" +# define OSSL_PKEY_PARAM_EC_A "a" +# define OSSL_PKEY_PARAM_EC_B "b" +# define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3" +# define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp" +# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" +# define OSSL_PKEY_PARAM_EC_ENCODING "encoding" +# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +# define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_PARAM_EC_ORDER "order" +# define OSSL_PKEY_PARAM_EC_P "p" +# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +# define OSSL_PKEY_PARAM_EC_PUB_X "qx" +# define OSSL_PKEY_PARAM_EC_PUB_Y "qy" +# define OSSL_PKEY_PARAM_EC_SEED "seed" +# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE +# define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +# define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_FFC_G "g" +# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +# define OSSL_PKEY_PARAM_FFC_H "hindex" +# define OSSL_PKEY_PARAM_FFC_P "p" +# define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +# define OSSL_PKEY_PARAM_FFC_Q "q" +# define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +# define OSSL_PKEY_PARAM_FFC_SEED "seed" +# define OSSL_PKEY_PARAM_FFC_TYPE "type" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +# define OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK "digest-check" +# define OSSL_PKEY_PARAM_FIPS_KEY_CHECK "key-check" +# define OSSL_PKEY_PARAM_FIPS_SIGN_CHECK "sign-check" +# define OSSL_PKEY_PARAM_GROUP_NAME "group" +# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" +# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +# define OSSL_PKEY_PARAM_MAX_SIZE "max-size" +# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +# define OSSL_PKEY_PARAM_ML_DSA_INPUT_FORMATS "ml-dsa.input_formats" +# define OSSL_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS "ml-dsa.output_formats" +# define OSSL_PKEY_PARAM_ML_DSA_PREFER_SEED "ml-dsa.prefer_seed" +# define OSSL_PKEY_PARAM_ML_DSA_RETAIN_SEED "ml-dsa.retain_seed" +# define OSSL_PKEY_PARAM_ML_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE "ml-kem.import_pct_type" +# define OSSL_PKEY_PARAM_ML_KEM_INPUT_FORMATS "ml-kem.input_formats" +# define OSSL_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS "ml-kem.output_formats" +# define OSSL_PKEY_PARAM_ML_KEM_PREFER_SEED "ml-kem.prefer_seed" +# define OSSL_PKEY_PARAM_ML_KEM_RETAIN_SEED "ml-kem.retain_seed" +# define OSSL_PKEY_PARAM_ML_KEM_SEED "seed" +# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +# define OSSL_PKEY_PARAM_PRIV_KEY "priv" +# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_PUB_KEY "pub" +# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9" +# define OSSL_PKEY_PARAM_RSA_D "d" +# define OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ "rsa-derive-from-pq" +# define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_RSA_E "e" +# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1" +# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10" +# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2" +# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3" +# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4" +# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5" +# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6" +# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7" +# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8" +# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9" +# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1" +# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10" +# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2" +# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3" +# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4" +# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5" +# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6" +# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7" +# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8" +# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9" +# define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC +# define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_PKEY_PARAM_RSA_N "n" +# define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" +# define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1" +# define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2" +# define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1" +# define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2" +# define OSSL_PKEY_PARAM_RSA_TEST_XP "xp" +# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" +# define OSSL_PKEY_PARAM_SLH_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG +# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +# define OSSL_PROV_PARAM_BUILDINFO "buildinfo" +# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" +# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" +# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" +# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" +# define OSSL_PROV_PARAM_DSA_SIGN_DISABLED "dsa-sign-disabled" +# define OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK "ecdh-cofactor-check" +# define OSSL_PROV_PARAM_HKDF_DIGEST_CHECK "hkdf-digest-check" +# define OSSL_PROV_PARAM_HKDF_KEY_CHECK "hkdf-key-check" +# define OSSL_PROV_PARAM_HMAC_KEY_CHECK "hmac-key-check" +# define OSSL_PROV_PARAM_KBKDF_KEY_CHECK "kbkdf-key-check" +# define OSSL_PROV_PARAM_KMAC_KEY_CHECK "kmac-key-check" +# define OSSL_PROV_PARAM_NAME "name" +# define OSSL_PROV_PARAM_NO_SHORT_MAC "no-short-mac" +# define OSSL_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK "pbkdf2-lower-bound-check" +# define OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED "rsa-pkcs15-pad-disabled" +# define OSSL_PROV_PARAM_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED "rsa-sign-x931-pad-disabled" +# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" +# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" +# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" +# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" +# define OSSL_PROV_PARAM_SIGNATURE_DIGEST_CHECK "signature-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_DIGEST_CHECK "sshkdf-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_KEY_CHECK "sshkdf-key-check" +# define OSSL_PROV_PARAM_SSKDF_DIGEST_CHECK "sskdf-digest-check" +# define OSSL_PROV_PARAM_SSKDF_KEY_CHECK "sskdf-key-check" +# define OSSL_PROV_PARAM_STATUS "status" +# define OSSL_PROV_PARAM_TDES_ENCRYPT_DISABLED "tdes-encrypt-disabled" +# define OSSL_PROV_PARAM_TLS13_KDF_DIGEST_CHECK "tls13-kdf-digest-check" +# define OSSL_PROV_PARAM_TLS13_KDF_KEY_CHECK "tls13-kdf-key-check" +# define OSSL_PROV_PARAM_TLS1_PRF_DIGEST_CHECK "tls1-prf-digest-check" +# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" +# define OSSL_PROV_PARAM_TLS1_PRF_KEY_CHECK "tls1-prf-key-check" +# define OSSL_PROV_PARAM_VERSION "version" +# define OSSL_PROV_PARAM_X942KDF_KEY_CHECK "x942kdf-key-check" +# define OSSL_PROV_PARAM_X963KDF_DIGEST_CHECK "x963kdf-digest-check" +# define OSSL_PROV_PARAM_X963KDF_KEY_CHECK "x963kdf-key-check" +# define OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_RAND_PARAM_GENERATE "generate" +# define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +# define OSSL_RAND_PARAM_STATE "state" +# define OSSL_RAND_PARAM_STRENGTH "strength" +# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" +# define OSSL_SIGNATURE_PARAM_ADD_RANDOM "additional-random" +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID OSSL_PKEY_PARAM_ALGORITHM_ID +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string" +# define OSSL_SIGNATURE_PARAM_DETERMINISTIC "deterministic" +# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE +# define OSSL_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_SIGNATURE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_CHECK OSSL_PKEY_PARAM_FIPS_SIGN_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK "sign-x931-pad-check" +# define OSSL_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE "verify-message" +# define OSSL_SIGNATURE_PARAM_INSTANCE "instance" +# define OSSL_SIGNATURE_PARAM_KAT "kat" +# define OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING "message-encoding" +# define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_SIGNATURE_PARAM_MU "mu" +# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type" +# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +# define OSSL_SIGNATURE_PARAM_SIGNATURE "signature" +# define OSSL_SIGNATURE_PARAM_TEST_ENTROPY "test-entropy" +# define OSSL_SKEY_PARAM_KEY_LENGTH "key-length" +# define OSSL_SKEY_PARAM_RAW_BYTES "raw-bytes" +# define OSSL_STORE_PARAM_ALIAS "alias" +# define OSSL_STORE_PARAM_DIGEST "digest" +# define OSSL_STORE_PARAM_EXPECT "expect" +# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" +# define OSSL_STORE_PARAM_INPUT_TYPE "input-type" +# define OSSL_STORE_PARAM_ISSUER "name" +# define OSSL_STORE_PARAM_PROPERTIES "properties" +# define OSSL_STORE_PARAM_SERIAL "serial" +# define OSSL_STORE_PARAM_SUBJECT "subject" + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/crmf.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/crmf.h index 0419170bb99974..9b6f13fac240b2 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/crmf.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/crmf.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/crmf.h.in * - * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -26,6 +26,7 @@ # include # include # include /* for GENERAL_NAME etc. */ +# include /* explicit #includes not strictly needed since implied by the above: */ # include @@ -43,9 +44,12 @@ extern "C" { # define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 # define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 - typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) + +typedef struct ossl_crmf_encryptedkey_st OSSL_CRMF_ENCRYPTEDKEY; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDKEY) + typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) @@ -77,6 +81,36 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) #define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; +void OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(OSSL_CRMF_ATTRIBUTETYPEANDVALUE *v); +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value(sk, idx) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new(cmp) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_null() ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (n)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete(sk, i) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (i))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete_ptr(sk, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_shift(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk),ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), (idx)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set(sk, idx, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), pnum) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup(sk) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) + + typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER) typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY; @@ -118,6 +152,7 @@ typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO) typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTTEMPLATE) typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS) @@ -198,12 +233,14 @@ int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, int rid, int acceptRAVerified, OSSL_LIB_CTX *libctx, const char *propq); OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); -const ASN1_INTEGER -*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const ASN1_INTEGER +*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); X509_EXTENSIONS *OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME @@ -215,10 +252,24 @@ int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl, const X509_NAME *subject, const X509_NAME *issuer, const ASN1_INTEGER *serial); -X509 -*OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, - OSSL_LIB_CTX *libctx, const char *propq, - EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDKEY_get1_encCert(const OSSL_CRMF_ENCRYPTEDKEY *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, unsigned int flags); +unsigned char +*OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *enc, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, int *outlen); +EVP_PKEY *OSSL_CRMF_ENCRYPTEDKEY_get1_pkey(const OSSL_CRMF_ENCRYPTEDKEY *encryptedKey, + X509_STORE *ts, STACK_OF(X509) *extra, EVP_PKEY *pkey, + X509 *cert, ASN1_OCTET_STRING *secret, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSG_centralkeygen_requested(const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr); +# ifndef OPENSSL_NO_CMS +OSSL_CRMF_ENCRYPTEDKEY *OSSL_CRMF_ENCRYPTEDKEY_init_envdata(CMS_EnvelopedData *envdata); +# endif # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/crypto.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/crypto.h index 668c52cfee1f15..2a825986bf3a55 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/crypto.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/crypto.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/crypto.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -85,9 +85,15 @@ int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock); void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock); int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_add64(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_and(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, CRYPTO_RWLOCK *lock); int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, CRYPTO_RWLOCK *lock); /* No longer needed, so this is a no-op */ #define OPENSSL_malloc_init() while(0) continue @@ -96,6 +102,9 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_zalloc(num) \ CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_aligned_alloc(num, alignment, freeptr) \ + CRYPTO_aligned_alloc(num, alignment, freeptr, \ + OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_realloc(addr, num) \ CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_clear_realloc(addr, old_num, num) \ @@ -124,6 +133,7 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); size_t OPENSSL_strnlen(const char *str, size_t maxlen); +int OPENSSL_strtoul(const char *str, char **endptr, int base, unsigned long *num); int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength, const unsigned char *buf, size_t buflen, const char sep); @@ -160,6 +170,7 @@ const char *OpenSSL_version(int type); # define OPENSSL_FULL_VERSION_STRING 7 # define OPENSSL_MODULES_DIR 8 # define OPENSSL_CPU_INFO 9 +# define OPENSSL_WINCTX 10 const char *OPENSSL_info(int type); /* @@ -174,6 +185,7 @@ const char *OPENSSL_info(int type); # define OPENSSL_INFO_LIST_SEPARATOR 1006 # define OPENSSL_INFO_SEED_SOURCE 1007 # define OPENSSL_INFO_CPU_SETTINGS 1008 +# define OPENSSL_INFO_WINDOWS_CONTEXT 1009 int OPENSSL_issetugid(void); @@ -341,11 +353,14 @@ void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn, CRYPTO_realloc_fn *realloc_fn, CRYPTO_free_fn *free_fn); -void *CRYPTO_malloc(size_t num, const char *file, int line); -void *CRYPTO_zalloc(size_t num, const char *file, int line); -void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); -char *CRYPTO_strdup(const char *str, const char *file, int line); -char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc(size_t num, size_t align, + void **freeptr, const char *file, + int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strdup(const char *str, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); void CRYPTO_free(void *ptr, const char *file, int line); void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line); void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); @@ -354,8 +369,8 @@ void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, int CRYPTO_secure_malloc_init(size_t sz, size_t minsize); int CRYPTO_secure_malloc_done(void); -void *CRYPTO_secure_malloc(size_t num, const char *file, int line); -void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); void CRYPTO_secure_free(void *ptr, const char *file, int line); void CRYPTO_secure_clear_free(void *ptr, size_t num, const char *file, int line); @@ -376,6 +391,9 @@ void OPENSSL_cleanse(void *ptr, size_t len); # define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */ # define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */ +/* max allowed length for value of OPENSSL_MALLOC_FAILURES env var. */ +# define CRYPTO_MEM_CHECK_MAX_FS 256 + void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); # ifndef OPENSSL_NO_DEPRECATED_3_0 # define OPENSSL_mem_debug_push(info) \ @@ -551,6 +569,13 @@ int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file); void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); +int OSSL_LIB_CTX_get_conf_diagnostics(OSSL_LIB_CTX *ctx); +void OSSL_LIB_CTX_set_conf_diagnostics(OSSL_LIB_CTX *ctx, int value); + +void OSSL_sleep(uint64_t millis); + + +void *OSSL_LIB_CTX_get_data(OSSL_LIB_CTX *ctx, int index); # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/ct.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/ct.h index 15a276e33ff7ca..d29dbc78997c0b 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/ct.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/ct.h @@ -133,7 +133,7 @@ typedef enum { */ CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); - + /* * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library * context and property query string is used. diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/err.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/err.h index 2abf2483488181..daca18e7b757b0 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/err.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/err.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -372,7 +372,7 @@ typedef struct ERR_string_data_st { } ERR_STRING_DATA; DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); -#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp))) +#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp)), lh_ERR_STRING_DATA_hash_thunk, lh_ERR_STRING_DATA_comp_thunk, lh_ERR_STRING_DATA_doall_thunk, lh_ERR_STRING_DATA_doall_arg_thunk)) #define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) @@ -496,6 +496,14 @@ int ERR_get_next_error_library(void); int ERR_set_mark(void); int ERR_pop_to_mark(void); int ERR_clear_last_mark(void); +int ERR_count_to_mark(void); +int ERR_pop(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); #ifdef __cplusplus } diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/fipskey.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/fipskey.h index bf03682482fdd5..6939fd3c55ba6e 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/fipskey.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/fipskey.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/fipskey.h.in * - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -29,6 +29,11 @@ extern "C" { */ #define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" +/* + * The FIPS provider vendor name, as a string. + */ +#define FIPS_VENDOR "OpenSSL FIPS Provider" + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/lhash.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/lhash.h index 39dd6254acdeb6..62c55b20fd9716 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/lhash.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/lhash.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -24,6 +24,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -31,9 +34,13 @@ extern "C" { typedef struct lhash_node_st OPENSSL_LH_NODE; typedef int (*OPENSSL_LH_COMPFUNC) (const void *, const void *); +typedef int (*OPENSSL_LH_COMPFUNCTHUNK) (const void *, const void *, OPENSSL_LH_COMPFUNC cfn); typedef unsigned long (*OPENSSL_LH_HASHFUNC) (const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNCTHUNK) (const void *, OPENSSL_LH_HASHFUNC hfn); typedef void (*OPENSSL_LH_DOALL_FUNC) (void *); +typedef void (*OPENSSL_LH_DOALL_FUNC_THUNK) (void *, OPENSSL_LH_DOALL_FUNC doall); typedef void (*OPENSSL_LH_DOALL_FUNCARG) (void *, void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG_THUNK) (void *, void *, OPENSSL_LH_DOALL_FUNCARG doall); typedef struct lhash_st OPENSSL_LHASH; /* @@ -79,26 +86,40 @@ typedef struct lhash_st OPENSSL_LHASH; int OPENSSL_LH_error(OPENSSL_LHASH *lh); OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +OPENSSL_LHASH *OPENSSL_LH_set_thunks(OPENSSL_LHASH *lh, + OPENSSL_LH_HASHFUNCTHUNK hw, + OPENSSL_LH_COMPFUNCTHUNK cw, + OPENSSL_LH_DOALL_FUNC_THUNK daw, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw); void OPENSSL_LH_free(OPENSSL_LHASH *lh); void OPENSSL_LH_flush(OPENSSL_LHASH *lh); void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); -void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg_thunk(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw, + OPENSSL_LH_DOALL_FUNCARG fn, void *arg); + unsigned long OPENSSL_LH_strhash(const char *c); unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); # ifndef OPENSSL_NO_STDIO -void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# endif +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # endif -void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define _LHASH OPENSSL_LHASH @@ -129,110 +150,190 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); /* Helper macro for internal use */ # define DEFINE_LHASH_OF_INTERNAL(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ typedef void (*lh_##type##_doallfunc)(type *a); \ - static ossl_unused ossl_inline type *ossl_check_##type##_lh_plain_type(type *ptr) \ + static ossl_inline unsigned long lh_##type##_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static ossl_inline int lh_##type##_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_inline void lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_inline void lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline type *\ + ossl_check_##type##_lh_plain_type(type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const type *ossl_check_const_##type##_lh_plain_type(const type *ptr) \ + static ossl_unused ossl_inline const type * \ + ossl_check_const_##type##_lh_plain_type(const type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const OPENSSL_LHASH *ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline const OPENSSL_LHASH * \ + ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ { \ return (const OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LHASH *ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline OPENSSL_LHASH * \ + ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ { \ return (OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ + static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC \ + ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ { \ return (OPENSSL_LH_COMPFUNC)cmp; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ + static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC \ + ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ { \ return (OPENSSL_LH_HASHFUNC)hfn; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ + static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC \ + ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ { \ return (OPENSSL_LH_DOALL_FUNC)dfn; \ } \ LHASH_OF(type) -# define DEFINE_LHASH_OF(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ - static ossl_unused ossl_inline LHASH_OF(type) *lh_##type##_new(unsigned long (*hfn)(const type *), \ - int (*cfn)(const type *, const type *)) \ +# ifndef OPENSSL_NO_DEPRECATED_3_1 +# define DEFINE_LHASH_OF_DEPRECATED(type) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ - return (LHASH_OF(type) *) \ - OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ - static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } +# else +# define DEFINE_LHASH_OF_DEPRECATED(type) +# endif + +# define DEFINE_LHASH_OF_EX(type) \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ + static unsigned long \ + lh_##type##_hfn_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static int lh_##type##_cfn_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_free(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_flush(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_flush(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ { \ return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline int \ + lh_##type##_error(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_num_items(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_get_down_load(LHASH_OF(type) *lh) \ { \ - OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ { \ - OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ } \ - static ossl_unused ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ { \ - OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ { \ - return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ } \ - static ossl_unused ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall(LHASH_OF(type) *lh, void (*doall)(type *)) \ { \ - OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ - void (*doall)(type *)) \ + static ossl_unused ossl_inline LHASH_OF(type) * \ + lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ { \ - OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \ + lh_##type##_hfn_thunk, lh_##type##_cfn_thunk, \ + lh_##type##_doall_thunk, \ + lh_##type##_doall_arg_thunk); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall_arg(LHASH_OF(type) *lh, \ - void (*doallarg)(type *, void *), \ - void *arg) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg(LHASH_OF(type) *lh, \ + void (*doallarg)(type *, void *), void *arg) \ { \ OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ } \ LHASH_OF(type) +# define DEFINE_LHASH_OF(type) \ + DEFINE_LHASH_OF_EX(type); \ + DEFINE_LHASH_OF_DEPRECATED(type) \ + LHASH_OF(type) + #define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ int_implement_lhash_doall(type, argtype, const type) @@ -240,17 +341,26 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); int_implement_lhash_doall(type, argtype, type) #define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype##_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG fn) \ + { \ + void (*fn_conv)(cbargtype *, argtype *) = (void (*)(cbargtype *, argtype *))fn; \ + fn_conv((cbargtype *)node, (argtype *)arg); \ + } \ static ossl_unused ossl_inline void \ lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ void (*fn)(cbargtype *, argtype *), \ argtype *arg) \ { \ - OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNCARG)fn, (void *)arg); \ + OPENSSL_LH_doall_arg_thunk((OPENSSL_LHASH *)lh, \ + lh_##type##_doall_##argtype##_thunk, \ + (OPENSSL_LH_DOALL_FUNCARG)fn, \ + (void *)arg); \ } \ LHASH_OF(type) DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); -#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp)), lh_OPENSSL_STRING_hash_thunk, lh_OPENSSL_STRING_comp_thunk, lh_OPENSSL_STRING_doall_thunk, lh_OPENSSL_STRING_doall_arg_thunk)) #define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) @@ -265,7 +375,7 @@ DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); #define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) #define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); -#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp)), lh_OPENSSL_CSTRING_hash_thunk, lh_OPENSSL_CSTRING_comp_thunk, lh_OPENSSL_CSTRING_doall_thunk, lh_OPENSSL_CSTRING_doall_arg_thunk)) #define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/opensslv.h index 94f44daf376f8e..8f0439fc042ad0 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/opensslv.h @@ -28,8 +28,8 @@ extern "C" { * These macros express version number MAJOR.MINOR.PATCH exactly */ # define OPENSSL_VERSION_MAJOR 3 -# define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 17 +# define OPENSSL_VERSION_MINOR 5 +# define OPENSSL_VERSION_PATCH 2 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.17" -# define OPENSSL_FULL_VERSION_STR "3.0.17" +# define OPENSSL_VERSION_STR "3.5.2" +# define OPENSSL_FULL_VERSION_STR "3.5.2" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "1 Jul 2025" +# define OPENSSL_RELEASE_DATE "5 Aug 2025" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.17 1 Jul 2025" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.2 5 Aug 2025" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/pkcs12.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/pkcs12.h index 80369818c8ecdc..35d04f039366ce 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/pkcs12.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/pkcs12.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/pkcs12.h.in * - * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -41,6 +44,7 @@ extern "C" { # define PKCS12_MAC_KEY_LENGTH 20 +/* The macro is expected to be used only internally. Kept for backwards compatibility. */ # define PKCS12_SALT_LEN 8 /* It's not clear if these are actually needed... */ @@ -130,7 +134,9 @@ int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); const STACK_OF(PKCS12_SAFEBAG) * PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); @@ -218,6 +224,7 @@ ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); const STACK_OF(X509_ATTRIBUTE) * PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, const char *pass, int passlen, const unsigned char *in, int inlen, @@ -285,6 +292,9 @@ int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, unsigned char *salt, int saltlen, int iter, const EVP_MD *md_type); +int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type, const char *prf_md_name); int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, int saltlen, const EVP_MD *md_type); unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, @@ -305,6 +315,7 @@ DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) void PKCS12_PBE_add(void); int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype); @@ -312,6 +323,11 @@ PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype, OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/pkcs7.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/pkcs7.h index 0a95a93e59e262..641d9411a47354 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/pkcs7.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/pkcs7.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/pkcs7.h.in * - * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -28,6 +28,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -131,8 +134,8 @@ SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INF typedef struct pkcs7_signed_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; struct pkcs7_st *contents; } PKCS7_SIGNED; @@ -158,8 +161,8 @@ typedef struct pkcs7_enveloped_st { typedef struct pkcs7_signedandenveloped_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; PKCS7_ENC_CONTENT *enc_data; STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; @@ -200,7 +203,7 @@ typedef struct pkcs7_st { /* NID_pkcs7_data */ ASN1_OCTET_STRING *data; /* NID_pkcs7_signed */ - PKCS7_SIGNED *sign; + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ /* NID_pkcs7_enveloped */ PKCS7_ENVELOPE *enveloped; /* NID_pkcs7_signedAndEnveloped */ @@ -341,13 +344,13 @@ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, const EVP_MD *dgst); int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); -int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); -int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); int PKCS7_content_new(PKCS7 *p7, int nid); int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, - X509 *x509); + X509 *signer); BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/ssl.h index 7e9ca09bbf39f0..6396681867d76c 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/ssl.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/ssl.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/ssl.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -24,6 +24,7 @@ # endif # include +# include # include # include # include @@ -42,6 +43,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -231,10 +235,8 @@ typedef struct ssl_cipher_st SSL_CIPHER; typedef struct ssl_session_st SSL_SESSION; typedef struct tls_sigalgs_st TLS_SIGALGS; typedef struct ssl_conf_ctx_st SSL_CONF_CTX; -typedef struct ssl_comp_st SSL_COMP; STACK_OF(SSL_CIPHER); -STACK_OF(SSL_COMP); /* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ typedef struct srtp_protection_profile_st { @@ -278,28 +280,31 @@ typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, /* Extension context codes */ /* This extension is only allowed in TLS */ -#define SSL_EXT_TLS_ONLY 0x0001 +#define SSL_EXT_TLS_ONLY 0x00001 /* This extension is only allowed in DTLS */ -#define SSL_EXT_DTLS_ONLY 0x0002 +#define SSL_EXT_DTLS_ONLY 0x00002 /* Some extensions may be allowed in DTLS but we don't implement them for it */ -#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 /* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ -#define SSL_EXT_SSL3_ALLOWED 0x0008 +#define SSL_EXT_SSL3_ALLOWED 0x00008 /* Extension is only defined for TLS1.2 and below */ -#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 /* Extension is only defined for TLS1.3 and above */ -#define SSL_EXT_TLS1_3_ONLY 0x0020 +#define SSL_EXT_TLS1_3_ONLY 0x00020 /* Ignore this extension during parsing if we are resuming */ -#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 -#define SSL_EXT_CLIENT_HELLO 0x0080 +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 /* Really means TLS1.2 or below */ -#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 -#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 -#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 -#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 -#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 -#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 -#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 /* Typedefs for handling custom extensions */ @@ -404,7 +409,7 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); */ # define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_BIT(22) /* - * If set, a server will allow a client to issue a SSLv3.0 version + * If set, a server will allow a client to issue an SSLv3.0 version * number as latest version supported in the premaster secret, even when * TLSv1.0 (version 3.1) was announced in the client hello. Normally * this is forbidden to prevent version rollback attacks. @@ -430,6 +435,19 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); * interoperability with CryptoPro CSP 3.x */ # define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +# define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +# define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) + /* Enable KTLS TX zerocopy on Linux */ +# define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) + +#define SSL_OP_PREFER_NO_DHE_KEX SSL_OP_BIT(35) /* * Option "collections." @@ -574,6 +592,8 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); # define CERT_PKEY_CERT_TYPE 0x400 /* Cert chain suitable to Suite B */ # define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +# define CERT_PKEY_RPK 0x1000 # define SSL_CONF_FLAG_CMDLINE 0x1 # define SSL_CONF_FLAG_FILE 0x2 @@ -965,6 +985,7 @@ uint32_t SSL_get_recv_max_early_data(const SSL *s); # include /* This is mostly sslv3 with a few tweaks */ # include /* Datagram TLS */ # include /* Support for the use_srtp extension */ +# include #ifdef __cplusplus extern "C" { @@ -1000,32 +1021,6 @@ SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) #define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) #define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) #define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) -SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) -#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) -#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) -#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) -#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) -#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) -#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) -#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) -#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) -#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) -#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) -#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) /* compatibility */ @@ -1066,6 +1061,7 @@ typedef enum { DTLS_ST_CR_HELLO_VERIFY_REQUEST, TLS_ST_CR_SRVR_HELLO, TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, TLS_ST_CR_CERT_STATUS, TLS_ST_CR_KEY_EXCH, TLS_ST_CR_CERT_REQ, @@ -1075,6 +1071,7 @@ typedef enum { TLS_ST_CR_FINISHED, TLS_ST_CW_CLNT_HELLO, TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, TLS_ST_CW_KEY_EXCH, TLS_ST_CW_CERT_VRFY, TLS_ST_CW_CHANGE, @@ -1085,10 +1082,12 @@ typedef enum { DTLS_ST_SW_HELLO_VERIFY_REQUEST, TLS_ST_SW_SRVR_HELLO, TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, TLS_ST_SW_KEY_EXCH, TLS_ST_SW_CERT_REQ, TLS_ST_SW_SRVR_DONE, TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, TLS_ST_SR_KEY_EXCH, TLS_ST_SR_CERT_VRFY, TLS_ST_SR_NEXT_PROTO, @@ -1380,9 +1379,13 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_CTRL_GET_SIGNATURE_NID 132 # define SSL_CTRL_GET_TMP_KEY 133 # define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +# define SSL_CTRL_GET_IANA_GROUPS 135 # define SSL_CTRL_SET_RETRY_VERIFY 136 # define SSL_CTRL_GET_VERIFY_CERT_STORE 137 # define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +# define SSL_CTRL_GET0_IMPLEMENTED_GROUPS 139 +# define SSL_CTRL_GET_SIGNATURE_NAME 140 +# define SSL_CTRL_GET_PEER_SIGNATURE_NAME 141 # define SSL_CERT_SET_FIRST 1 # define SSL_CERT_SET_NEXT 2 # define SSL_CERT_SET_SERVER 3 @@ -1485,10 +1488,15 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get1_groups(s, glist) \ SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_IANA_GROUPS,0,(uint16_t **)(plst)) # define SSL_CTX_set1_groups(ctx, glist, glistlen) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) # define SSL_CTX_set1_groups_list(ctx, s) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s)) +# define SSL_CTX_get0_implemented_groups(ctx, all, out) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET0_IMPLEMENTED_GROUPS, all, \ + (STACK_OF(OPENSSL_CSTRING) *)(out)) # define SSL_set1_groups(s, glist, glistlen) \ SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist)) # define SSL_set1_groups_list(s, str) \ @@ -1520,8 +1528,12 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) (char *)(clist)) # define SSL_set1_client_certificate_types(s, clist, clistlen) \ SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist)) +# define SSL_get0_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn) +# define SSL_get0_peer_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_peer_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) # define SSL_get_peer_tmp_key(s, pk) \ @@ -1549,6 +1561,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get_max_proto_version(s) \ SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +const char *SSL_get0_group_name(SSL *s); const char *SSL_group_to_name(SSL *s, int id); /* Backwards compatibility, original 1.1.0 names */ @@ -1613,7 +1626,11 @@ void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); __owur int SSL_want(const SSL *s); __owur int SSL_clear(SSL *s); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()") void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); +#endif +void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm); __owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); __owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); @@ -1725,13 +1742,21 @@ __owur const char *SSL_state_string(const SSL *s); __owur const char *SSL_rstate_string(const SSL *s); __owur const char *SSL_state_string_long(const SSL *s); __owur const char *SSL_rstate_string_long(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_get_time_ex()") __owur long SSL_SESSION_get_time(const SSL_SESSION *s); +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_set_time_ex()") __owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +#endif __owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); __owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); __owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); __owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); +__owur time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s); +__owur time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t); + __owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); __owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, @@ -1783,6 +1808,9 @@ __owur int SSL_has_matching_session_id(const SSL *s, unsigned int id_len); SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); # ifdef OPENSSL_X509_H __owur X509 *SSL_get0_peer_certificate(const SSL *s); @@ -1840,6 +1868,8 @@ __owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, SSL *SSL_new(SSL_CTX *ctx); int SSL_up_ref(SSL *s); int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); __owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, unsigned int sid_ctx_len); @@ -1848,8 +1878,8 @@ __owur int SSL_set_purpose(SSL *ssl, int purpose); __owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); __owur int SSL_set_trust(SSL *ssl, int trust); -__owur int SSL_set1_host(SSL *s, const char *hostname); -__owur int SSL_add1_host(SSL *s, const char *hostname); +__owur int SSL_set1_host(SSL *s, const char *host); +__owur int SSL_add1_host(SSL *s, const char *host); __owur const char *SSL_get0_peername(SSL *s); void SSL_set_hostflags(SSL *s, unsigned int flags); @@ -1924,6 +1954,11 @@ OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg); void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, void *arg); +typedef int (*SSL_new_pending_conn_cb_fn) (SSL_CTX *ctx, SSL *new_ssl, + void *arg); +void SSL_CTX_set_new_pending_conn_cb(SSL_CTX *c, SSL_new_pending_conn_cb_fn cb, + void *arg); + int SSL_client_hello_isv2(SSL *s); unsigned int SSL_client_hello_get0_legacy_version(SSL *s); size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); @@ -1932,6 +1967,8 @@ size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); size_t SSL_client_hello_get0_compression_methods(SSL *s, const unsigned char **out); int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); int SSL_client_hello_get0_ext(SSL *s, unsigned int type, const unsigned char **out, size_t *outlen); @@ -1978,6 +2015,12 @@ long SSL_callback_ctrl(SSL *, int, void (*)(void)); long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); +# define SSL_WRITE_FLAG_CONCLUDE (1U << 0) + +__owur int SSL_write_ex2(SSL *s, const void *buf, size_t num, + uint64_t flags, + size_t *written); + # define SSL_EARLY_DATA_NOT_SENT 0 # define SSL_EARLY_DATA_REJECTED 1 # define SSL_EARLY_DATA_ACCEPTED 2 @@ -1986,6 +2029,7 @@ __owur int SSL_get_early_data_status(const SSL *s); __owur int SSL_get_error(const SSL *s, int ret_code); __owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); /* This sets the 'default' SSL version that SSL_new() will create */ # ifndef OPENSSL_NO_DEPRECATED_3_0 @@ -2281,6 +2325,8 @@ void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); +int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size, + size_t hs_block_size); int SSL_set_record_padding_callback(SSL *ssl, size_t (*cb) (SSL *ssl, int type, @@ -2288,12 +2334,255 @@ int SSL_set_record_padding_callback(SSL *ssl, void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); void *SSL_get_record_padding_callback_arg(const SSL *ssl); int SSL_set_block_padding(SSL *ssl, size_t block_size); - +int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size, + size_t hs_block_size); int SSL_set_num_tickets(SSL *s, size_t num_tickets); size_t SSL_get_num_tickets(const SSL *s); int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +__owur int SSL_is_listener(SSL *ssl); +__owur SSL *SSL_get0_listener(SSL *s); +#define SSL_LISTENER_FLAG_NO_VALIDATE (1UL << 1) +__owur SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags); +__owur SSL *SSL_new_listener_from(SSL *ssl, uint64_t flags); +__owur SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags); +#define SSL_ACCEPT_CONNECTION_NO_BLOCK (1UL << 0) +__owur SSL *SSL_accept_connection(SSL *ssl, uint64_t flags); +__owur size_t SSL_get_accept_connection_queue_len(SSL *ssl); +__owur int SSL_listen(SSL *ssl); + +__owur int SSL_is_domain(SSL *s); +__owur SSL *SSL_get0_domain(SSL *s); +__owur SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags); + +#define SSL_DOMAIN_FLAG_SINGLE_THREAD (1U << 0) +#define SSL_DOMAIN_FLAG_MULTI_THREAD (1U << 1) +#define SSL_DOMAIN_FLAG_THREAD_ASSISTED (1U << 2) +#define SSL_DOMAIN_FLAG_BLOCKING (1U << 3) +#define SSL_DOMAIN_FLAG_LEGACY_BLOCKING (1U << 4) + +__owur int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t domain_flags); +__owur int SSL_CTX_get_domain_flags(const SSL_CTX *ctx, uint64_t *domain_flags); +__owur int SSL_get_domain_flags(const SSL *ssl, uint64_t *domain_flags); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +# ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +# endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + +# define SSL_VALUE_CLASS_GENERIC 0 +# define SSL_VALUE_CLASS_FEATURE_REQUEST 1 +# define SSL_VALUE_CLASS_FEATURE_PEER_REQUEST 2 +# define SSL_VALUE_CLASS_FEATURE_NEGOTIATED 3 + +# define SSL_VALUE_NONE 0 +# define SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL 1 +# define SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL 2 +# define SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL 3 +# define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL 4 +# define SSL_VALUE_QUIC_IDLE_TIMEOUT 5 +# define SSL_VALUE_EVENT_HANDLING_MODE 6 +# define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7 +# define SSL_VALUE_STREAM_WRITE_BUF_USED 8 +# define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9 + +# define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0 +# define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1 +# define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT 2 + +int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v); +int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v); + +# define SSL_get_generic_value_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_set_generic_value_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_get_feature_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_set_feature_request_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_get_feature_peer_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, (id), (v)) +# define SSL_get_feature_negotiated_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_NEGOTIATED, (id), (v)) + +# define SSL_get_quic_stream_bidi_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_bidi_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, \ + (value)) + +# define SSL_get_event_handling_mode(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) +# define SSL_set_event_handling_mode(ssl, value) \ + SSL_set_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) + +# define SSL_get_stream_write_buf_size(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_SIZE, \ + (value)) +# define SSL_get_stream_write_buf_used(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_USED, \ + (value)) +# define SSL_get_stream_write_buf_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_AVAIL, \ + (value)) + +# define SSL_POLL_EVENT_NONE 0 + +# define SSL_POLL_EVENT_F (1U << 0) /* F (Failure) */ +# define SSL_POLL_EVENT_EL (1U << 1) /* EL (Exception on Listener) */ +# define SSL_POLL_EVENT_EC (1U << 2) /* EC (Exception on Conn) */ +# define SSL_POLL_EVENT_ECD (1U << 3) /* ECD (Exception on Conn Drained) */ +# define SSL_POLL_EVENT_ER (1U << 4) /* ER (Exception on Read) */ +# define SSL_POLL_EVENT_EW (1U << 5) /* EW (Exception on Write) */ +# define SSL_POLL_EVENT_R (1U << 6) /* R (Readable) */ +# define SSL_POLL_EVENT_W (1U << 7) /* W (Writable) */ +# define SSL_POLL_EVENT_IC (1U << 8) /* IC (Incoming Connection) */ +# define SSL_POLL_EVENT_ISB (1U << 9) /* ISB (Incoming Stream: Bidi) */ +# define SSL_POLL_EVENT_ISU (1U << 10) /* ISU (Incoming Stream: Uni) */ +# define SSL_POLL_EVENT_OSB (1U << 11) /* OSB (Outgoing Stream: Bidi) */ +# define SSL_POLL_EVENT_OSU (1U << 12) /* OSU (Outgoing Stream: Uni) */ + +# define SSL_POLL_EVENT_RW (SSL_POLL_EVENT_R | SSL_POLL_EVENT_W) +# define SSL_POLL_EVENT_RE (SSL_POLL_EVENT_R | SSL_POLL_EVENT_ER) +# define SSL_POLL_EVENT_WE (SSL_POLL_EVENT_W | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_RWE (SSL_POLL_EVENT_RE | SSL_POLL_EVENT_WE) +# define SSL_POLL_EVENT_E (SSL_POLL_EVENT_EL | SSL_POLL_EVENT_EC \ + | SSL_POLL_EVENT_ER | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_IS (SSL_POLL_EVENT_ISB | SSL_POLL_EVENT_ISU) +# define SSL_POLL_EVENT_ISE (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_EC) +# define SSL_POLL_EVENT_I (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_IC) +# define SSL_POLL_EVENT_OS (SSL_POLL_EVENT_OSB | SSL_POLL_EVENT_OSU) +# define SSL_POLL_EVENT_OSE (SSL_POLL_EVENT_OS | SSL_POLL_EVENT_EC) + +typedef struct ssl_poll_item_st { + BIO_POLL_DESCRIPTOR desc; + uint64_t events, revents; +} SSL_POLL_ITEM; + +# define SSL_POLL_FLAG_NO_HANDLE_EVENTS (1U << 0) + +__owur int SSL_poll(SSL_POLL_ITEM *items, + size_t num_items, + size_t stride, + const struct timeval *timeout, + uint64_t flags, + size_t *result_count); + +static ossl_inline ossl_unused BIO_POLL_DESCRIPTOR +SSL_as_poll_descriptor(SSL *s) +{ + BIO_POLL_DESCRIPTOR d; + + d.type = BIO_POLL_DESCRIPTOR_TYPE_SSL; + d.value.ssl = s; + return d; +} + # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define SSL_cache_hit(s) SSL_session_reused(s) # endif @@ -2593,6 +2882,51 @@ void SSL_set_allow_early_data_cb(SSL *s, const char *OSSL_default_cipher_list(void); const char *OSSL_default_ciphersuites(void); +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + +/* + * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used. + */ +# define OSSL_RECORD_PROTECTION_LEVEL_NONE 0 +# define OSSL_RECORD_PROTECTION_LEVEL_EARLY 1 +# define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE 2 +# define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3 + +int SSL_set_quic_tls_cbs(SSL *s, const OSSL_DISPATCH *qtdis, void *arg); +int SSL_set_quic_tls_transport_params(SSL *s, + const unsigned char *params, + size_t params_len); + +int SSL_set_quic_tls_early_data_enabled(SSL *s, int enabled); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/x509.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/x509.h index 0f2353c821aa9b..5e9c548c48d65b 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/x509.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/x509.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/x509.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -40,6 +40,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -162,16 +165,24 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) # define X509_FILETYPE_ASN1 2 # define X509_FILETYPE_DEFAULT 3 -# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 -# define X509v3_KU_NON_REPUDIATION 0x0040 -# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 -# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 -# define X509v3_KU_KEY_AGREEMENT 0x0008 -# define X509v3_KU_KEY_CERT_SIGN 0x0004 -# define X509v3_KU_CRL_SIGN 0x0002 -# define X509v3_KU_ENCIPHER_ONLY 0x0001 -# define X509v3_KU_DECIPHER_ONLY 0x8000 -# define X509v3_KU_UNDEF 0xffff +/*- + * : + * The KeyUsage BITSTRING is treated as a little-endian integer, hence bit `0` + * is 0x80, while bit `7` is 0x01 (the LSB of the integer value), bit `8` is + * then the MSB of the second octet, or 0x8000. + */ +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 /* (0) */ +# define X509v3_KU_NON_REPUDIATION 0x0040 /* (1) */ +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 /* (2) */ +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 /* (3) */ +# define X509v3_KU_KEY_AGREEMENT 0x0008 /* (4) */ +# define X509v3_KU_KEY_CERT_SIGN 0x0004 /* (5) */ +# define X509v3_KU_CRL_SIGN 0x0002 /* (6) */ +# define X509v3_KU_ENCIPHER_ONLY 0x0001 /* (7) */ +# define X509v3_KU_DECIPHER_ONLY 0x8000 /* (8) */ +# ifndef OPENSSL_NO_DEPRECATED_3_4 +# define X509v3_KU_UNDEF 0xffff /* vestigial, not used */ +# endif struct X509_algor_st { ASN1_OBJECT *algorithm; @@ -462,7 +473,12 @@ typedef struct PBKDF2PARAM_st { X509_ALGOR *prf; } PBKDF2PARAM; -#ifndef OPENSSL_NO_SCRYPT +typedef struct { + X509_ALGOR *keyDerivationFunc; + X509_ALGOR *messageAuthScheme; +} PBMAC1PARAM; + +# ifndef OPENSSL_NO_SCRYPT typedef struct SCRYPT_PARAMS_st { ASN1_OCTET_STRING *salt; ASN1_INTEGER *costParameter; @@ -470,7 +486,7 @@ typedef struct SCRYPT_PARAMS_st { ASN1_INTEGER *parallelizationParameter; ASN1_INTEGER *keyLength; } SCRYPT_PARAMS; -#endif +# endif #ifdef __cplusplus } @@ -603,6 +619,8 @@ EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); # endif @@ -651,6 +669,8 @@ EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); DECLARE_ASN1_DUP_FUNCTION(X509) @@ -884,12 +904,12 @@ int X509_REQ_get_signature_nid(const X509_REQ *req); int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); -EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); int X509_REQ_extension_nid(int nid); int *X509_REQ_get_extension_nids(void); void X509_REQ_set_extension_nids(int *nids); -STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(OSSL_FUTURE_CONST X509_REQ *req); int X509_REQ_add_extensions_nid(X509_REQ *req, const STACK_OF(X509_EXTENSION) *exts, int nid); int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); @@ -950,13 +970,14 @@ X509_REVOKED_get0_extensions(const X509_REVOKED *r); X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); -int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); -int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey); +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); int X509_chain_check_suiteb(int *perror_depth, X509 *x, STACK_OF(X509) *chain, unsigned long flags); int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); @@ -1077,6 +1098,8 @@ X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, X509_EXTENSION *ex, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_extensions(STACK_OF(X509_EXTENSION) **target, + const STACK_OF(X509_EXTENSION) *exts); int X509_get_ext_count(const X509 *x); int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); @@ -1198,9 +1221,10 @@ X509 *X509_find_by_subject(STACK_OF(X509) *sk, const X509_NAME *name); DECLARE_ASN1_FUNCTIONS(PBEPARAM) DECLARE_ASN1_FUNCTIONS(PBE2PARAM) DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) -#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(PBMAC1PARAM) +# ifndef OPENSSL_NO_SCRYPT DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) -#endif +# endif int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, const unsigned char *salt, int saltlen); @@ -1237,6 +1261,7 @@ X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, int prf_nid, int keylen, OSSL_LIB_CTX *libctx); +PBKDF2PARAM *PBMAC1_get1_pbkdf2_param(const X509_ALGOR *macalg); /* PKCS#8 utilities */ DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) @@ -1262,6 +1287,8 @@ int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len); +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, int ptype, void *pval, unsigned char *penc, int penclen); diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/x509_acert.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/x509_acert.h new file mode 100644 index 00000000000000..efae82c8f6b635 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/x509_acert.h @@ -0,0 +1,294 @@ +/* + * WARNING: do not edit! + * Generated by makefile from include/openssl/x509_acert.h.in + * + * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_X509_ACERT_H +# define OPENSSL_X509_ACERT_H +# pragma once + +# include +# include +# include + +typedef struct X509_acert_st X509_ACERT; +typedef struct X509_acert_info_st X509_ACERT_INFO; +typedef struct ossl_object_digest_info_st OSSL_OBJECT_DIGEST_INFO; +typedef struct ossl_issuer_serial_st OSSL_ISSUER_SERIAL; +typedef struct X509_acert_issuer_v2form_st X509_ACERT_ISSUER_V2FORM; + +DECLARE_ASN1_FUNCTIONS(X509_ACERT) +DECLARE_ASN1_DUP_FUNCTION(X509_ACERT) +DECLARE_ASN1_ITEM(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_OBJECT_DIGEST_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_ISSUER_SERIAL) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_ISSUER_V2FORM) + +# ifndef OPENSSL_NO_STDIO +X509_ACERT *d2i_X509_ACERT_fp(FILE *fp, X509_ACERT **acert); +int i2d_X509_ACERT_fp(FILE *fp, const X509_ACERT *acert); +# endif + +DECLARE_PEM_rw(X509_ACERT, X509_ACERT) + +X509_ACERT *d2i_X509_ACERT_bio(BIO *bp, X509_ACERT **acert); +int i2d_X509_ACERT_bio(BIO *bp, const X509_ACERT *acert); + +int X509_ACERT_sign(X509_ACERT *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_ACERT_sign_ctx(X509_ACERT *x, EVP_MD_CTX *ctx); +int X509_ACERT_verify(X509_ACERT *a, EVP_PKEY *r); + +# define X509_ACERT_VERSION_2 1 + +const GENERAL_NAMES *X509_ACERT_get0_holder_entityName(const X509_ACERT *x); +const OSSL_ISSUER_SERIAL *X509_ACERT_get0_holder_baseCertId(const X509_ACERT *x); +const OSSL_OBJECT_DIGEST_INFO * X509_ACERT_get0_holder_digest(const X509_ACERT *x); +const X509_NAME *X509_ACERT_get0_issuerName(const X509_ACERT *x); +long X509_ACERT_get_version(const X509_ACERT *x); +void X509_ACERT_get0_signature(const X509_ACERT *x, + const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_ACERT_get_signature_nid(const X509_ACERT *x); +const X509_ALGOR *X509_ACERT_get0_info_sigalg(const X509_ACERT *x); +const ASN1_INTEGER *X509_ACERT_get0_serialNumber(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notBefore(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notAfter(const X509_ACERT *x); +const ASN1_BIT_STRING *X509_ACERT_get0_issuerUID(const X509_ACERT *x); + +int X509_ACERT_print(BIO *bp, X509_ACERT *x); +int X509_ACERT_print_ex(BIO *bp, X509_ACERT *x, unsigned long nmflags, + unsigned long cflag); + +int X509_ACERT_get_attr_count(const X509_ACERT *x); +int X509_ACERT_get_attr_by_NID(const X509_ACERT *x, int nid, int lastpos); +int X509_ACERT_get_attr_by_OBJ(const X509_ACERT *x, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_ACERT_get_attr(const X509_ACERT *x, int loc); +X509_ATTRIBUTE *X509_ACERT_delete_attr(X509_ACERT *x, int loc); + +void *X509_ACERT_get_ext_d2i(const X509_ACERT *x, int nid, int *crit, int *idx); +int X509_ACERT_add1_ext_i2d(X509_ACERT *x, int nid, void *value, int crit, + unsigned long flags); +const STACK_OF(X509_EXTENSION) *X509_ACERT_get0_extensions(const X509_ACERT *x); + +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY 0 +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY_CERT 1 +# define OSSL_OBJECT_DIGEST_INFO_OTHER 2 /* must not be used in RFC 5755 profile */ +int X509_ACERT_set_version(X509_ACERT *x, long version); +void X509_ACERT_set0_holder_entityName(X509_ACERT *x, GENERAL_NAMES *name); +void X509_ACERT_set0_holder_baseCertId(X509_ACERT *x, OSSL_ISSUER_SERIAL *isss); +void X509_ACERT_set0_holder_digest(X509_ACERT *x, + OSSL_OBJECT_DIGEST_INFO *dinfo); + +int X509_ACERT_add1_attr(X509_ACERT *x, X509_ATTRIBUTE *attr); +int X509_ACERT_add1_attr_by_OBJ(X509_ACERT *x, const ASN1_OBJECT *obj, + int type, const void *bytes, int len); +int X509_ACERT_add1_attr_by_NID(X509_ACERT *x, int nid, int type, + const void *bytes, int len); +int X509_ACERT_add1_attr_by_txt(X509_ACERT *x, const char *attrname, int type, + const unsigned char *bytes, int len); +int X509_ACERT_add_attr_nconf(CONF *conf, const char *section, + X509_ACERT *acert); + +int X509_ACERT_set1_issuerName(X509_ACERT *x, const X509_NAME *name); +int X509_ACERT_set1_serialNumber(X509_ACERT *x, const ASN1_INTEGER *serial); +int X509_ACERT_set1_notBefore(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); +int X509_ACERT_set1_notAfter(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); + +void OSSL_OBJECT_DIGEST_INFO_get0_digest(const OSSL_OBJECT_DIGEST_INFO *o, + int *digestedObjectType, + const X509_ALGOR **digestAlgorithm, + const ASN1_BIT_STRING **digest); + +int OSSL_OBJECT_DIGEST_INFO_set1_digest(OSSL_OBJECT_DIGEST_INFO *o, + int digestedObjectType, + X509_ALGOR *digestAlgorithm, + ASN1_BIT_STRING *digest); + +const X509_NAME *OSSL_ISSUER_SERIAL_get0_issuer(const OSSL_ISSUER_SERIAL *isss); +const ASN1_INTEGER *OSSL_ISSUER_SERIAL_get0_serial(const OSSL_ISSUER_SERIAL *isss); +const ASN1_BIT_STRING *OSSL_ISSUER_SERIAL_get0_issuerUID(const OSSL_ISSUER_SERIAL *isss); + +int OSSL_ISSUER_SERIAL_set1_issuer(OSSL_ISSUER_SERIAL *isss, + const X509_NAME *issuer); +int OSSL_ISSUER_SERIAL_set1_serial(OSSL_ISSUER_SERIAL *isss, + const ASN1_INTEGER *serial); +int OSSL_ISSUER_SERIAL_set1_issuerUID(OSSL_ISSUER_SERIAL *isss, + const ASN1_BIT_STRING *uid); + +# define OSSL_IETFAS_OCTETS 0 +# define OSSL_IETFAS_OID 1 +# define OSSL_IETFAS_STRING 2 + +typedef struct OSSL_IETF_ATTR_SYNTAX_VALUE_st OSSL_IETF_ATTR_SYNTAX_VALUE; +typedef struct OSSL_IETF_ATTR_SYNTAX_st OSSL_IETF_ATTR_SYNTAX; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_value(sk, idx) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new(cmp) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_null() ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (n)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete(sk, i) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (i))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete_ptr(sk, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_pop(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_shift(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_shift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk),ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), (idx)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set(sk, idx, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_set(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), pnum) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_dup(sk) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_copyfunc_type(copyfunc), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set_cmp_func(sk, cmp) ((sk_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) + + +DECLARE_ASN1_ITEM(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX) + +const GENERAL_NAMES * +OSSL_IETF_ATTR_SYNTAX_get0_policyAuthority(const OSSL_IETF_ATTR_SYNTAX *a); +void OSSL_IETF_ATTR_SYNTAX_set0_policyAuthority(OSSL_IETF_ATTR_SYNTAX *a, + GENERAL_NAMES *names); + +int OSSL_IETF_ATTR_SYNTAX_get_value_num(const OSSL_IETF_ATTR_SYNTAX *a); +void *OSSL_IETF_ATTR_SYNTAX_get0_value(const OSSL_IETF_ATTR_SYNTAX *a, + int ind, int *type); +int OSSL_IETF_ATTR_SYNTAX_add1_value(OSSL_IETF_ATTR_SYNTAX *a, int type, + void *data); +int OSSL_IETF_ATTR_SYNTAX_print(BIO *bp, OSSL_IETF_ATTR_SYNTAX *a, int indent); + +struct TARGET_CERT_st { + OSSL_ISSUER_SERIAL *targetCertificate; + GENERAL_NAME *targetName; + OSSL_OBJECT_DIGEST_INFO *certDigestInfo; +}; + +typedef struct TARGET_CERT_st OSSL_TARGET_CERT; + +# define OSSL_TGT_TARGET_NAME 0 +# define OSSL_TGT_TARGET_GROUP 1 +# define OSSL_TGT_TARGET_CERT 2 + +typedef struct TARGET_st { + int type; + union { + GENERAL_NAME *targetName; + GENERAL_NAME *targetGroup; + OSSL_TARGET_CERT *targetCert; + } choice; +} OSSL_TARGET; + +typedef STACK_OF(OSSL_TARGET) OSSL_TARGETS; +typedef STACK_OF(OSSL_TARGETS) OSSL_TARGETING_INFORMATION; + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGET, OSSL_TARGET, OSSL_TARGET) +#define sk_OSSL_TARGET_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_value(sk, idx) ((OSSL_TARGET *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGET_sk_type(sk), (idx))) +#define sk_OSSL_TARGET_new(cmp) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new(ossl_check_OSSL_TARGET_compfunc_type(cmp))) +#define sk_OSSL_TARGET_new_null() ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGET_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGET_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGET_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGET_sk_type(sk), (n)) +#define sk_OSSL_TARGET_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_delete(sk, i) ((OSSL_TARGET *)OPENSSL_sk_delete(ossl_check_OSSL_TARGET_sk_type(sk), (i))) +#define sk_OSSL_TARGET_delete_ptr(sk, ptr) ((OSSL_TARGET *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_pop(sk) ((OSSL_TARGET *)OPENSSL_sk_pop(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_shift(sk) ((OSSL_TARGET *)OPENSSL_sk_shift(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGET_sk_type(sk),ossl_check_OSSL_TARGET_freefunc_type(freefunc)) +#define sk_OSSL_TARGET_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), (idx)) +#define sk_OSSL_TARGET_set(sk, idx, ptr) ((OSSL_TARGET *)OPENSSL_sk_set(ossl_check_OSSL_TARGET_sk_type(sk), (idx), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), pnum) +#define sk_OSSL_TARGET_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_dup(sk) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_copyfunc_type(copyfunc), ossl_check_OSSL_TARGET_freefunc_type(freefunc))) +#define sk_OSSL_TARGET_set_cmp_func(sk, cmp) ((sk_OSSL_TARGET_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGETS, OSSL_TARGETS, OSSL_TARGETS) +#define sk_OSSL_TARGETS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_value(sk, idx) ((OSSL_TARGETS *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGETS_sk_type(sk), (idx))) +#define sk_OSSL_TARGETS_new(cmp) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new(ossl_check_OSSL_TARGETS_compfunc_type(cmp))) +#define sk_OSSL_TARGETS_new_null() ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGETS_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGETS_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGETS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGETS_sk_type(sk), (n)) +#define sk_OSSL_TARGETS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_delete(sk, i) ((OSSL_TARGETS *)OPENSSL_sk_delete(ossl_check_OSSL_TARGETS_sk_type(sk), (i))) +#define sk_OSSL_TARGETS_delete_ptr(sk, ptr) ((OSSL_TARGETS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_pop(sk) ((OSSL_TARGETS *)OPENSSL_sk_pop(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_shift(sk) ((OSSL_TARGETS *)OPENSSL_sk_shift(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGETS_sk_type(sk),ossl_check_OSSL_TARGETS_freefunc_type(freefunc)) +#define sk_OSSL_TARGETS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), (idx)) +#define sk_OSSL_TARGETS_set(sk, idx, ptr) ((OSSL_TARGETS *)OPENSSL_sk_set(ossl_check_OSSL_TARGETS_sk_type(sk), (idx), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), pnum) +#define sk_OSSL_TARGETS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_dup(sk) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_copyfunc_type(copyfunc), ossl_check_OSSL_TARGETS_freefunc_type(freefunc))) +#define sk_OSSL_TARGETS_set_cmp_func(sk, cmp) ((sk_OSSL_TARGETS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_compfunc_type(cmp))) + + +DECLARE_ASN1_FUNCTIONS(OSSL_TARGET) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETS) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETING_INFORMATION) + +typedef STACK_OF(OSSL_ISSUER_SERIAL) OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL) +#define sk_OSSL_ISSUER_SERIAL_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_value(sk, idx) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_value(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), (idx))) +#define sk_OSSL_ISSUER_SERIAL_new(cmp) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) +#define sk_OSSL_ISSUER_SERIAL_new_null() ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ISSUER_SERIAL_new_reserve(cmp, n) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp), (n))) +#define sk_OSSL_ISSUER_SERIAL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (n)) +#define sk_OSSL_ISSUER_SERIAL_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_delete(sk, i) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (i))) +#define sk_OSSL_ISSUER_SERIAL_delete_ptr(sk, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_pop(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_pop(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_shift(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_shift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk),ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc)) +#define sk_OSSL_ISSUER_SERIAL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), (idx)) +#define sk_OSSL_ISSUER_SERIAL_set(sk, idx, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_set(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (idx), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), pnum) +#define sk_OSSL_ISSUER_SERIAL_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_dup(sk) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_copyfunc_type(copyfunc), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc))) +#define sk_OSSL_ISSUER_SERIAL_set_cmp_func(sk, cmp) ((sk_OSSL_ISSUER_SERIAL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) + + +#endif diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/x509_vfy.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/x509_vfy.h index f571187265cfc9..f08a134b17b7db 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/x509_vfy.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/x509_vfy.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/x509_vfy.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -411,6 +411,7 @@ X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ # define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 # define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 # define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +# define X509_V_ERR_RPK_UNTRUSTED 95 /* Certificate verify flags */ # ifndef OPENSSL_NO_DEPRECATED_1_1_0 @@ -491,71 +492,72 @@ int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); X509_STORE *X509_STORE_new(void); -void X509_STORE_free(X509_STORE *v); -int X509_STORE_lock(X509_STORE *ctx); -int X509_STORE_unlock(X509_STORE *ctx); -int X509_STORE_up_ref(X509_STORE *v); -STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *v); -STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *st); -STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get1_objects(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, const X509_NAME *nm); STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, const X509_NAME *nm); -int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); -int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); -int X509_STORE_set_trust(X509_STORE *ctx, int trust); -int X509_STORE_set1_param(X509_STORE *ctx, const X509_VERIFY_PARAM *pm); -X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *ctx); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); -void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); #define X509_STORE_set_verify_func(ctx, func) \ X509_STORE_set_verify((ctx),(func)) void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, X509_STORE_CTX_verify_fn verify); -X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *ctx); -void X509_STORE_set_verify_cb(X509_STORE *ctx, +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, X509_STORE_CTX_verify_cb verify_cb); # define X509_STORE_set_verify_cb_func(ctx,func) \ X509_STORE_set_verify_cb((ctx),(func)) -X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *ctx); -void X509_STORE_set_get_issuer(X509_STORE *ctx, +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, X509_STORE_CTX_get_issuer_fn get_issuer); -X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *ctx); -void X509_STORE_set_check_issued(X509_STORE *ctx, +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, X509_STORE_CTX_check_issued_fn check_issued); -X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *ctx); -void X509_STORE_set_check_revocation(X509_STORE *ctx, +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, X509_STORE_CTX_check_revocation_fn check_revocation); X509_STORE_CTX_check_revocation_fn - X509_STORE_get_check_revocation(const X509_STORE *ctx); -void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, X509_STORE_CTX_get_crl_fn get_crl); -X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *ctx); -void X509_STORE_set_check_crl(X509_STORE *ctx, +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, X509_STORE_CTX_check_crl_fn check_crl); -X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *ctx); -void X509_STORE_set_cert_crl(X509_STORE *ctx, +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, X509_STORE_CTX_cert_crl_fn cert_crl); -X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *ctx); -void X509_STORE_set_check_policy(X509_STORE *ctx, +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, X509_STORE_CTX_check_policy_fn check_policy); -X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *ctx); -void X509_STORE_set_lookup_certs(X509_STORE *ctx, +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, X509_STORE_CTX_lookup_certs_fn lookup_certs); -X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *ctx); -void X509_STORE_set_lookup_crls(X509_STORE *ctx, +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, X509_STORE_CTX_lookup_crls_fn lookup_crls); #define X509_STORE_set_lookup_crls_cb(ctx, func) \ X509_STORE_set_lookup_crls((ctx), (func)) -X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *ctx); -void X509_STORE_set_cleanup(X509_STORE *ctx, +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, X509_STORE_CTX_cleanup_fn cleanup); -X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); #define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) -int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); -void *X509_STORE_get_ex_data(const X509_STORE *ctx, int idx); +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); X509_STORE_CTX *X509_STORE_CTX_new(void); @@ -565,11 +567,14 @@ int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); void X509_STORE_CTX_free(X509_STORE_CTX *ctx); int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY* rpk); void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, @@ -579,6 +584,8 @@ X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); @@ -600,7 +607,7 @@ X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); # define X509_STORE_get1_crl X509_STORE_CTX_get1_crls #endif -X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); X509_LOOKUP_METHOD *X509_LOOKUP_file(void); X509_LOOKUP_METHOD *X509_LOOKUP_store(void); @@ -685,8 +692,8 @@ X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( const X509_LOOKUP_METHOD *method); -int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); -int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, @@ -730,23 +737,21 @@ void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); -int X509_STORE_load_file(X509_STORE *ctx, const char *file); -int X509_STORE_load_path(X509_STORE *ctx, const char *path); -int X509_STORE_load_store(X509_STORE *ctx, const char *store); -int X509_STORE_load_locations(X509_STORE *ctx, - const char *file, - const char *dir); -int X509_STORE_set_default_paths(X509_STORE *ctx); +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); -int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file, +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_store_ex(X509_STORE *ctx, const char *store, +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file, - const char *dir, OSSL_LIB_CTX *libctx, - const char *propq); -int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OSSL_LIB_CTX *libctx, - const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); #define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) @@ -764,6 +769,7 @@ X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); @@ -773,6 +779,8 @@ int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); @@ -804,6 +812,7 @@ int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, unsigned long flags); unsigned long X509_VERIFY_PARAM_get_flags(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_get_purpose(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/x509v3.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/x509v3.h index ed08a546f9813d..362ce3fb4387f7 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/x509v3.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/x509v3.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/x509v3.h.in * - * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -146,6 +149,11 @@ typedef struct BASIC_CONSTRAINTS_st { ASN1_INTEGER *pathlen; } BASIC_CONSTRAINTS; +typedef struct OSSL_BASIC_ATTR_CONSTRAINTS_st { + int authority; + ASN1_INTEGER *pathlen; +} OSSL_BASIC_ATTR_CONSTRAINTS; + typedef struct PKEY_USAGE_PERIOD_st { ASN1_GENERALIZEDTIME *notBefore; ASN1_GENERALIZEDTIME *notAfter; @@ -198,6 +206,8 @@ typedef struct ACCESS_DESCRIPTION_st { GENERAL_NAME *location; } ACCESS_DESCRIPTION; +int GENERAL_NAME_set1_X509_NAME(GENERAL_NAME **tgt, const X509_NAME *src); + SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) #define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) #define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) @@ -294,6 +304,7 @@ typedef struct DIST_POINT_NAME_st { /* If relativename then this contains the full distribution point name */ X509_NAME *dpname; } DIST_POINT_NAME; +DECLARE_ASN1_DUP_FUNCTION(DIST_POINT_NAME) /* All existing reasons */ # define CRLDP_ALL_REASONS 0x807f @@ -659,15 +670,16 @@ struct ISSUING_DIST_POINT_st { # define EXFLAG_SAN_CRITICAL 0x80000 # define EXFLAG_NO_FINGERPRINT 0x100000 -# define KU_DIGITAL_SIGNATURE 0x0080 -# define KU_NON_REPUDIATION 0x0040 -# define KU_KEY_ENCIPHERMENT 0x0020 -# define KU_DATA_ENCIPHERMENT 0x0010 -# define KU_KEY_AGREEMENT 0x0008 -# define KU_KEY_CERT_SIGN 0x0004 -# define KU_CRL_SIGN 0x0002 -# define KU_ENCIPHER_ONLY 0x0001 -# define KU_DECIPHER_ONLY 0x8000 +/* https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3 */ +# define KU_DIGITAL_SIGNATURE X509v3_KU_DIGITAL_SIGNATURE +# define KU_NON_REPUDIATION X509v3_KU_NON_REPUDIATION +# define KU_KEY_ENCIPHERMENT X509v3_KU_KEY_ENCIPHERMENT +# define KU_DATA_ENCIPHERMENT X509v3_KU_DATA_ENCIPHERMENT +# define KU_KEY_AGREEMENT X509v3_KU_KEY_AGREEMENT +# define KU_KEY_CERT_SIGN X509v3_KU_KEY_CERT_SIGN +# define KU_CRL_SIGN X509v3_KU_CRL_SIGN +# define KU_ENCIPHER_ONLY X509v3_KU_ENCIPHER_ONLY +# define KU_DECIPHER_ONLY X509v3_KU_DECIPHER_ONLY # define NS_SSL_CLIENT 0x80 # define NS_SSL_SERVER 0x40 @@ -729,7 +741,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) #define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) - +# define X509_PURPOSE_DEFAULT_ANY 0 # define X509_PURPOSE_SSL_CLIENT 1 # define X509_PURPOSE_SSL_SERVER 2 # define X509_PURPOSE_NS_SSL_SERVER 3 @@ -739,9 +751,10 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509_PURPOSE_ANY 7 # define X509_PURPOSE_OCSP_HELPER 8 # define X509_PURPOSE_TIMESTAMP_SIGN 9 +# define X509_PURPOSE_CODE_SIGN 10 # define X509_PURPOSE_MIN 1 -# define X509_PURPOSE_MAX 9 +# define X509_PURPOSE_MAX 10 /* Flags for X509V3_EXT_print() */ @@ -767,6 +780,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509V3_ADD_SILENT 0x10 DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) +DECLARE_ASN1_FUNCTIONS(OSSL_BASIC_ATTR_CONSTRAINTS) DECLARE_ASN1_FUNCTIONS(SXNET) DECLARE_ASN1_FUNCTIONS(SXNETID) @@ -976,7 +990,6 @@ int X509V3_extensions_print(BIO *out, const char *title, int X509_check_ca(X509 *x); int X509_check_purpose(X509 *x, int id, int ca); int X509_supported_extension(X509_EXTENSION *ex); -int X509_PURPOSE_set(int *p, int purpose); int X509_check_issued(X509 *issuer, X509 *subject); int X509_check_akid(const X509 *issuer, const AUTHORITY_KEYID *akid); void X509_set_proxy_flag(X509 *x); @@ -992,22 +1005,26 @@ const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); int X509_PURPOSE_get_count(void); -X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_unused_id(OSSL_LIB_CTX *libctx); int X509_PURPOSE_get_by_sname(const char *sname); int X509_PURPOSE_get_by_id(int id); int X509_PURPOSE_add(int id, int trust, int flags, int (*ck) (const X509_PURPOSE *, const X509 *, int), const char *name, const char *sname, void *arg); +void X509_PURPOSE_cleanup(void); + +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_id(const X509_PURPOSE *); char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); -void X509_PURPOSE_cleanup(void); -int X509_PURPOSE_get_id(const X509_PURPOSE *); +int X509_PURPOSE_set(int *p, int purpose); STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); + /* Flags for X509_check_* functions */ /* @@ -1444,6 +1461,507 @@ const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( void PROFESSION_INFO_set0_registrationNumber( PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); +int OSSL_GENERAL_NAMES_print(BIO *out, GENERAL_NAMES *gens, int indent); + +typedef STACK_OF(X509_ATTRIBUTE) OSSL_ATTRIBUTES_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTES_SYNTAX) + +typedef STACK_OF(USERNOTICE) OSSL_USER_NOTICE_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_USER_NOTICE_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(USERNOTICE, USERNOTICE, USERNOTICE) +#define sk_USERNOTICE_num(sk) OPENSSL_sk_num(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_value(sk, idx) ((USERNOTICE *)OPENSSL_sk_value(ossl_check_const_USERNOTICE_sk_type(sk), (idx))) +#define sk_USERNOTICE_new(cmp) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new(ossl_check_USERNOTICE_compfunc_type(cmp))) +#define sk_USERNOTICE_new_null() ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_null()) +#define sk_USERNOTICE_new_reserve(cmp, n) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_reserve(ossl_check_USERNOTICE_compfunc_type(cmp), (n))) +#define sk_USERNOTICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_USERNOTICE_sk_type(sk), (n)) +#define sk_USERNOTICE_free(sk) OPENSSL_sk_free(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_zero(sk) OPENSSL_sk_zero(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_delete(sk, i) ((USERNOTICE *)OPENSSL_sk_delete(ossl_check_USERNOTICE_sk_type(sk), (i))) +#define sk_USERNOTICE_delete_ptr(sk, ptr) ((USERNOTICE *)OPENSSL_sk_delete_ptr(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_pop(sk) ((USERNOTICE *)OPENSSL_sk_pop(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_shift(sk) ((USERNOTICE *)OPENSSL_sk_shift(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_USERNOTICE_sk_type(sk),ossl_check_USERNOTICE_freefunc_type(freefunc)) +#define sk_USERNOTICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), (idx)) +#define sk_USERNOTICE_set(sk, idx, ptr) ((USERNOTICE *)OPENSSL_sk_set(ossl_check_USERNOTICE_sk_type(sk), (idx), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), pnum) +#define sk_USERNOTICE_sort(sk) OPENSSL_sk_sort(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_dup(sk) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_dup(ossl_check_const_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_deep_copy(ossl_check_const_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_copyfunc_type(copyfunc), ossl_check_USERNOTICE_freefunc_type(freefunc))) +#define sk_USERNOTICE_set_cmp_func(sk, cmp) ((sk_USERNOTICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_compfunc_type(cmp))) + + +typedef struct OSSL_ROLE_SPEC_CERT_ID_st { + GENERAL_NAME *roleName; + GENERAL_NAME *roleCertIssuer; + ASN1_INTEGER *roleCertSerialNumber; + GENERAL_NAMES *roleCertLocator; +} OSSL_ROLE_SPEC_CERT_ID; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID) +#define sk_OSSL_ROLE_SPEC_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_value(sk, idx) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_value(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new(cmp) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_null() ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_reserve(cmp, n) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp), (n))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (n)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete(sk, i) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (i))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete_ptr(sk, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_pop(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_shift(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_shift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk),ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), (idx)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set(sk, idx, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_set(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), pnum) +#define sk_OSSL_ROLE_SPEC_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_dup(sk) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_copyfunc_type(copyfunc), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set_cmp_func(sk, cmp) ((sk_OSSL_ROLE_SPEC_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) + + +typedef STACK_OF(OSSL_ROLE_SPEC_CERT_ID) OSSL_ROLE_SPEC_CERT_ID_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID_SYNTAX) +typedef struct OSSL_HASH_st { + X509_ALGOR *algorithmIdentifier; + ASN1_BIT_STRING *hashValue; +} OSSL_HASH; + +typedef struct OSSL_INFO_SYNTAX_POINTER_st { + GENERAL_NAMES *name; + OSSL_HASH *hash; +} OSSL_INFO_SYNTAX_POINTER; + +# define OSSL_INFO_SYNTAX_TYPE_CONTENT 0 +# define OSSL_INFO_SYNTAX_TYPE_POINTER 1 + +typedef struct OSSL_INFO_SYNTAX_st { + int type; + union { + ASN1_STRING *content; + OSSL_INFO_SYNTAX_POINTER *pointer; + } choice; +} OSSL_INFO_SYNTAX; + +typedef struct OSSL_PRIVILEGE_POLICY_ID_st { + ASN1_OBJECT *privilegePolicy; + OSSL_INFO_SYNTAX *privPolSyntax; +} OSSL_PRIVILEGE_POLICY_ID; + +typedef struct OSSL_ATTRIBUTE_DESCRIPTOR_st { + ASN1_OBJECT *identifier; + ASN1_STRING *attributeSyntax; + ASN1_UTF8STRING *name; + ASN1_UTF8STRING *description; + OSSL_PRIVILEGE_POLICY_ID *dominationRule; +} OSSL_ATTRIBUTE_DESCRIPTOR; + +DECLARE_ASN1_FUNCTIONS(OSSL_HASH) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX_POINTER) +DECLARE_ASN1_FUNCTIONS(OSSL_PRIVILEGE_POLICY_ID) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_DESCRIPTOR) + +typedef struct OSSL_TIME_SPEC_ABSOLUTE_st { + ASN1_GENERALIZEDTIME *startTime; + ASN1_GENERALIZEDTIME *endTime; +} OSSL_TIME_SPEC_ABSOLUTE; + +typedef struct OSSL_DAY_TIME_st { + ASN1_INTEGER *hour; + ASN1_INTEGER *minute; + ASN1_INTEGER *second; +} OSSL_DAY_TIME; + +typedef struct OSSL_DAY_TIME_BAND_st { + OSSL_DAY_TIME *startDayTime; + OSSL_DAY_TIME *endDayTime; +} OSSL_DAY_TIME_BAND; + +# define OSSL_NAMED_DAY_TYPE_INT 0 +# define OSSL_NAMED_DAY_TYPE_BIT 1 +# define OSSL_NAMED_DAY_INT_SUN 1 +# define OSSL_NAMED_DAY_INT_MON 2 +# define OSSL_NAMED_DAY_INT_TUE 3 +# define OSSL_NAMED_DAY_INT_WED 4 +# define OSSL_NAMED_DAY_INT_THU 5 +# define OSSL_NAMED_DAY_INT_FRI 6 +# define OSSL_NAMED_DAY_INT_SAT 7 +# define OSSL_NAMED_DAY_BIT_SUN 0 +# define OSSL_NAMED_DAY_BIT_MON 1 +# define OSSL_NAMED_DAY_BIT_TUE 2 +# define OSSL_NAMED_DAY_BIT_WED 3 +# define OSSL_NAMED_DAY_BIT_THU 4 +# define OSSL_NAMED_DAY_BIT_FRI 5 +# define OSSL_NAMED_DAY_BIT_SAT 6 + +typedef struct OSSL_NAMED_DAY_st { + int type; + union { + ASN1_INTEGER *intNamedDays; + ASN1_BIT_STRING *bitNamedDays; + } choice; +} OSSL_NAMED_DAY; + +# define OSSL_TIME_SPEC_X_DAY_OF_FIRST 0 +# define OSSL_TIME_SPEC_X_DAY_OF_SECOND 1 +# define OSSL_TIME_SPEC_X_DAY_OF_THIRD 2 +# define OSSL_TIME_SPEC_X_DAY_OF_FOURTH 3 +# define OSSL_TIME_SPEC_X_DAY_OF_FIFTH 4 + +typedef struct OSSL_TIME_SPEC_X_DAY_OF_st { + int type; + union { + OSSL_NAMED_DAY *first; + OSSL_NAMED_DAY *second; + OSSL_NAMED_DAY *third; + OSSL_NAMED_DAY *fourth; + OSSL_NAMED_DAY *fifth; + } choice; +} OSSL_TIME_SPEC_X_DAY_OF; + +# define OSSL_TIME_SPEC_DAY_TYPE_INT 0 +# define OSSL_TIME_SPEC_DAY_TYPE_BIT 1 +# define OSSL_TIME_SPEC_DAY_TYPE_DAY_OF 2 +# define OSSL_TIME_SPEC_DAY_BIT_SUN 0 +# define OSSL_TIME_SPEC_DAY_BIT_MON 1 +# define OSSL_TIME_SPEC_DAY_BIT_TUE 2 +# define OSSL_TIME_SPEC_DAY_BIT_WED 3 +# define OSSL_TIME_SPEC_DAY_BIT_THU 4 +# define OSSL_TIME_SPEC_DAY_BIT_FRI 5 +# define OSSL_TIME_SPEC_DAY_BIT_SAT 6 +# define OSSL_TIME_SPEC_DAY_INT_SUN 1 +# define OSSL_TIME_SPEC_DAY_INT_MON 2 +# define OSSL_TIME_SPEC_DAY_INT_TUE 3 +# define OSSL_TIME_SPEC_DAY_INT_WED 4 +# define OSSL_TIME_SPEC_DAY_INT_THU 5 +# define OSSL_TIME_SPEC_DAY_INT_FRI 6 +# define OSSL_TIME_SPEC_DAY_INT_SAT 7 + +typedef struct OSSL_TIME_SPEC_DAY_st { + int type; + union { + STACK_OF(ASN1_INTEGER) *intDay; + ASN1_BIT_STRING *bitDay; + OSSL_TIME_SPEC_X_DAY_OF *dayOf; + } choice; +} OSSL_TIME_SPEC_DAY; + +# define OSSL_TIME_SPEC_WEEKS_TYPE_ALL 0 +# define OSSL_TIME_SPEC_WEEKS_TYPE_INT 1 +# define OSSL_TIME_SPEC_WEEKS_TYPE_BIT 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_1 0 +# define OSSL_TIME_SPEC_BIT_WEEKS_2 1 +# define OSSL_TIME_SPEC_BIT_WEEKS_3 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_4 3 +# define OSSL_TIME_SPEC_BIT_WEEKS_5 4 + +typedef struct OSSL_TIME_SPEC_WEEKS_st { + int type; + union { + ASN1_NULL *allWeeks; + STACK_OF(ASN1_INTEGER) *intWeek; + ASN1_BIT_STRING *bitWeek; + } choice; +} OSSL_TIME_SPEC_WEEKS; + +# define OSSL_TIME_SPEC_MONTH_TYPE_ALL 0 +# define OSSL_TIME_SPEC_MONTH_TYPE_INT 1 +# define OSSL_TIME_SPEC_MONTH_TYPE_BIT 2 +# define OSSL_TIME_SPEC_INT_MONTH_JAN 1 +# define OSSL_TIME_SPEC_INT_MONTH_FEB 2 +# define OSSL_TIME_SPEC_INT_MONTH_MAR 3 +# define OSSL_TIME_SPEC_INT_MONTH_APR 4 +# define OSSL_TIME_SPEC_INT_MONTH_MAY 5 +# define OSSL_TIME_SPEC_INT_MONTH_JUN 6 +# define OSSL_TIME_SPEC_INT_MONTH_JUL 7 +# define OSSL_TIME_SPEC_INT_MONTH_AUG 8 +# define OSSL_TIME_SPEC_INT_MONTH_SEP 9 +# define OSSL_TIME_SPEC_INT_MONTH_OCT 10 +# define OSSL_TIME_SPEC_INT_MONTH_NOV 11 +# define OSSL_TIME_SPEC_INT_MONTH_DEC 12 +# define OSSL_TIME_SPEC_BIT_MONTH_JAN 0 +# define OSSL_TIME_SPEC_BIT_MONTH_FEB 1 +# define OSSL_TIME_SPEC_BIT_MONTH_MAR 2 +# define OSSL_TIME_SPEC_BIT_MONTH_APR 3 +# define OSSL_TIME_SPEC_BIT_MONTH_MAY 4 +# define OSSL_TIME_SPEC_BIT_MONTH_JUN 5 +# define OSSL_TIME_SPEC_BIT_MONTH_JUL 6 +# define OSSL_TIME_SPEC_BIT_MONTH_AUG 7 +# define OSSL_TIME_SPEC_BIT_MONTH_SEP 8 +# define OSSL_TIME_SPEC_BIT_MONTH_OCT 9 +# define OSSL_TIME_SPEC_BIT_MONTH_NOV 10 +# define OSSL_TIME_SPEC_BIT_MONTH_DEC 11 + +typedef struct OSSL_TIME_SPEC_MONTH_st { + int type; + union { + ASN1_NULL *allMonths; + STACK_OF(ASN1_INTEGER) *intMonth; + ASN1_BIT_STRING *bitMonth; + } choice; +} OSSL_TIME_SPEC_MONTH; + +typedef struct OSSL_TIME_PERIOD_st { + STACK_OF(OSSL_DAY_TIME_BAND) *timesOfDay; + OSSL_TIME_SPEC_DAY *days; + OSSL_TIME_SPEC_WEEKS *weeks; + OSSL_TIME_SPEC_MONTH *months; + STACK_OF(ASN1_INTEGER) *years; +} OSSL_TIME_PERIOD; + +# define OSSL_TIME_SPEC_TIME_TYPE_ABSOLUTE 0 +# define OSSL_TIME_SPEC_TIME_TYPE_PERIODIC 1 + +typedef struct OSSL_TIME_SPEC_TIME_st { + int type; + union { + OSSL_TIME_SPEC_ABSOLUTE *absolute; + STACK_OF(OSSL_TIME_PERIOD) *periodic; + } choice; +} OSSL_TIME_SPEC_TIME; + +typedef struct OSSL_TIME_SPEC_st { + OSSL_TIME_SPEC_TIME *time; + ASN1_BOOLEAN notThisTime; + ASN1_INTEGER *timeZone; +} OSSL_TIME_SPEC; + +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME_BAND) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_WEEKS) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_MONTH) +DECLARE_ASN1_FUNCTIONS(OSSL_NAMED_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_X_DAY_OF) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_ABSOLUTE) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_PERIOD) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TIME_PERIOD, OSSL_TIME_PERIOD, OSSL_TIME_PERIOD) +#define sk_OSSL_TIME_PERIOD_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_value(sk, idx) ((OSSL_TIME_PERIOD *)OPENSSL_sk_value(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), (idx))) +#define sk_OSSL_TIME_PERIOD_new(cmp) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) +#define sk_OSSL_TIME_PERIOD_new_null() ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TIME_PERIOD_new_reserve(cmp, n) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp), (n))) +#define sk_OSSL_TIME_PERIOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (n)) +#define sk_OSSL_TIME_PERIOD_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_delete(sk, i) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (i))) +#define sk_OSSL_TIME_PERIOD_delete_ptr(sk, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_pop(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_pop(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_shift(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_shift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk),ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc)) +#define sk_OSSL_TIME_PERIOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), (idx)) +#define sk_OSSL_TIME_PERIOD_set(sk, idx, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_set(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (idx), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), pnum) +#define sk_OSSL_TIME_PERIOD_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_dup(sk) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_copyfunc_type(copyfunc), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc))) +#define sk_OSSL_TIME_PERIOD_set_cmp_func(sk, cmp) ((sk_OSSL_TIME_PERIOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND) +#define sk_OSSL_DAY_TIME_BAND_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_value(sk, idx) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_value(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), (idx))) +#define sk_OSSL_DAY_TIME_BAND_new(cmp) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) +#define sk_OSSL_DAY_TIME_BAND_new_null() ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_null()) +#define sk_OSSL_DAY_TIME_BAND_new_reserve(cmp, n) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp), (n))) +#define sk_OSSL_DAY_TIME_BAND_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (n)) +#define sk_OSSL_DAY_TIME_BAND_free(sk) OPENSSL_sk_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_delete(sk, i) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (i))) +#define sk_OSSL_DAY_TIME_BAND_delete_ptr(sk, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_pop(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_pop(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_shift(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_shift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk),ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc)) +#define sk_OSSL_DAY_TIME_BAND_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), (idx)) +#define sk_OSSL_DAY_TIME_BAND_set(sk, idx, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_set(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (idx), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), pnum) +#define sk_OSSL_DAY_TIME_BAND_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_dup(sk) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_dup(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_copyfunc_type(copyfunc), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc))) +#define sk_OSSL_DAY_TIME_BAND_set_cmp_func(sk, cmp) ((sk_OSSL_DAY_TIME_BAND_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) + + +/* Attribute Type and Value */ +typedef struct atav_st { + ASN1_OBJECT *type; + ASN1_TYPE *value; +} OSSL_ATAV; + +typedef struct ATTRIBUTE_TYPE_MAPPING_st { + ASN1_OBJECT *local; + ASN1_OBJECT *remote; +} OSSL_ATTRIBUTE_TYPE_MAPPING; + +typedef struct ATTRIBUTE_VALUE_MAPPING_st { + OSSL_ATAV *local; + OSSL_ATAV *remote; +} OSSL_ATTRIBUTE_VALUE_MAPPING; + +# define OSSL_ATTR_MAP_TYPE 0 +# define OSSL_ATTR_MAP_VALUE 1 + +typedef struct ATTRIBUTE_MAPPING_st { + int type; + union { + OSSL_ATTRIBUTE_TYPE_MAPPING *typeMappings; + OSSL_ATTRIBUTE_VALUE_MAPPING *typeValueMappings; + } choice; +} OSSL_ATTRIBUTE_MAPPING; + +typedef STACK_OF(OSSL_ATTRIBUTE_MAPPING) OSSL_ATTRIBUTE_MAPPINGS; +DECLARE_ASN1_FUNCTIONS(OSSL_ATAV) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_TYPE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_VALUE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPINGS) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING) +#define sk_OSSL_ATTRIBUTE_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_value(sk, idx) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_value(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new(cmp) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_null() ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_reserve(cmp, n) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp), (n))) +#define sk_OSSL_ATTRIBUTE_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (n)) +#define sk_OSSL_ATTRIBUTE_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete(sk, i) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (i))) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete_ptr(sk, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_pop(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_shift(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_shift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk),ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc)) +#define sk_OSSL_ATTRIBUTE_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), (idx)) +#define sk_OSSL_ATTRIBUTE_MAPPING_set(sk, idx, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_set(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), pnum) +#define sk_OSSL_ATTRIBUTE_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_dup(sk) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_copyfunc_type(copyfunc), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc))) +#define sk_OSSL_ATTRIBUTE_MAPPING_set_cmp_func(sk, cmp) ((sk_OSSL_ATTRIBUTE_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) + + +# define OSSL_AAA_ATTRIBUTE_TYPE 0 +# define OSSL_AAA_ATTRIBUTE_VALUES 1 + +typedef struct ALLOWED_ATTRIBUTES_CHOICE_st { + int type; + union { + ASN1_OBJECT *attributeType; + X509_ATTRIBUTE *attributeTypeandValues; + } choice; +} OSSL_ALLOWED_ATTRIBUTES_CHOICE; + +typedef struct ALLOWED_ATTRIBUTES_ITEM_st { + STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *attributes; + GENERAL_NAME *holderDomain; +} OSSL_ALLOWED_ATTRIBUTES_ITEM; + +typedef STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) OSSL_ALLOWED_ATTRIBUTES_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_CHOICE) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_ITEM) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) + + +typedef struct AA_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + int dp_reasons; + ASN1_BOOLEAN indirectCRL; + ASN1_BOOLEAN containsUserAttributeCerts; + ASN1_BOOLEAN containsAACerts; + ASN1_BOOLEAN containsSOAPublicKeyCerts; +} OSSL_AA_DIST_POINT; + +DECLARE_ASN1_FUNCTIONS(OSSL_AA_DIST_POINT) + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/progs.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/progs.h index be55f61503d405..1b62ec37dec130 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/progs.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/progs.h @@ -56,6 +56,7 @@ extern int s_client_main(int argc, char *argv[]); extern int s_server_main(int argc, char *argv[]); extern int s_time_main(int argc, char *argv[]); extern int sess_id_main(int argc, char *argv[]); +extern int skeyutl_main(int argc, char *argv[]); extern int smime_main(int argc, char *argv[]); extern int speed_main(int argc, char *argv[]); extern int spkac_main(int argc, char *argv[]); @@ -110,6 +111,7 @@ extern const OPTIONS s_client_options[]; extern const OPTIONS s_server_options[]; extern const OPTIONS s_time_options[]; extern const OPTIONS sess_id_options[]; +extern const OPTIONS skeyutl_options[]; extern const OPTIONS smime_options[]; extern const OPTIONS speed_options[]; extern const OPTIONS spkac_options[]; diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/openssl-cl.gypi b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/openssl-cl.gypi index f75ff8bda86ff6..cd453fb703b754 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/openssl-cl.gypi +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/openssl-cl.gypi @@ -68,6 +68,7 @@ 'openssl/apps/s_server.c', 'openssl/apps/s_time.c', 'openssl/apps/sess_id.c', + 'openssl/apps/skeyutl.c', 'openssl/apps/smime.c', 'openssl/apps/speed.c', 'openssl/apps/spkac.c', @@ -83,12 +84,14 @@ 'openssl/apps/lib/app_rand.c', 'openssl/apps/lib/app_x509.c', 'openssl/apps/lib/apps.c', + 'openssl/apps/lib/apps_opt_printf.c', 'openssl/apps/lib/apps_ui.c', 'openssl/apps/lib/columns.c', 'openssl/apps/lib/engine.c', 'openssl/apps/lib/engine_loader.c', 'openssl/apps/lib/fmt.c', 'openssl/apps/lib/http_server.c', + 'openssl/apps/lib/log.c', 'openssl/apps/lib/names.c', 'openssl/apps/lib/opt.c', 'openssl/apps/lib/s_cb.c', diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/openssl-fips.gypi b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/openssl-fips.gypi index 58f627a062a2cd..f85a51438a7158 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/openssl-fips.gypi +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/openssl-fips.gypi @@ -100,14 +100,15 @@ 'openssl/crypto/evp/kem.c', 'openssl/crypto/evp/keymgmt_lib.c', 'openssl/crypto/evp/keymgmt_meth.c', - 'openssl/crypto/evp/m_sigver.c', 'openssl/crypto/evp/mac_lib.c', 'openssl/crypto/evp/mac_meth.c', 'openssl/crypto/evp/p_lib.c', 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -115,6 +116,8 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', @@ -145,6 +148,16 @@ 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -153,6 +166,7 @@ 'openssl/crypto/modes/ofb128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/property/defn_cache.c', 'openssl/crypto/property/property.c', 'openssl/crypto/property/property_parse.c', @@ -181,7 +195,23 @@ 'openssl/crypto/sha/sha256.c', 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/stack/stack.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/providers/common/der/der_rsa_sig.c', 'openssl/providers/common/bio_prov.c', 'openssl/providers/common/capabilities.c', @@ -190,6 +220,7 @@ 'openssl/providers/common/provider_util.c', 'openssl/providers/common/securitycheck.c', 'openssl/providers/common/securitycheck_fips.c', + 'openssl/providers/fips/fipsindicator.c', 'openssl/providers/fips/fipsprov.c', 'openssl/providers/fips/self_test.c', 'openssl/providers/fips/self_test_kats.c', @@ -227,6 +258,8 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -234,29 +267,39 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/cmac_prov.c', 'openssl/providers/implementations/macs/gmac_prov.c', 'openssl/providers/implementations/macs/hmac_prov.c', 'openssl/providers/implementations/macs/kmac_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', + 'openssl/providers/implementations/rands/fips_crng_test.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/signature/dsa_sig.c', 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -267,17 +310,20 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/fips/fips_entry.c', ], 'openssl_sources_VC-WIN64-ARM': [ + './config/archs/VC-WIN64-ARM/no-asm/crypto/params_idx.c', './config/archs/VC-WIN64-ARM/no-asm/providers/common/der/der_sm2_gen.c', './config/archs/VC-WIN64-ARM/no-asm/providers/common/der/der_digests_gen.c', './config/archs/VC-WIN64-ARM/no-asm/providers/common/der/der_dsa_gen.c', './config/archs/VC-WIN64-ARM/no-asm/providers/common/der/der_ec_gen.c', './config/archs/VC-WIN64-ARM/no-asm/providers/common/der/der_ecx_gen.c', + './config/archs/VC-WIN64-ARM/no-asm/providers/common/der/der_ml_dsa_gen.c', './config/archs/VC-WIN64-ARM/no-asm/providers/common/der/der_rsa_gen.c', + './config/archs/VC-WIN64-ARM/no-asm/providers/common/der/der_slh_dsa_gen.c', './config/archs/VC-WIN64-ARM/no-asm/providers/common/der/der_wrap_gen.c', ], diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/openssl.gypi b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/openssl.gypi index f144e4b579302b..d48d1a61c89a22 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/openssl.gypi +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/openssl.gypi @@ -7,14 +7,15 @@ 'openssl/ssl/d1_srtp.c', 'openssl/ssl/methods.c', 'openssl/ssl/pqueue.c', + 'openssl/ssl/priority_queue.c', 'openssl/ssl/s3_enc.c', 'openssl/ssl/s3_lib.c', 'openssl/ssl/s3_msg.c', 'openssl/ssl/ssl_asn1.c', 'openssl/ssl/ssl_cert.c', + 'openssl/ssl/ssl_cert_comp.c', 'openssl/ssl/ssl_ciph.c', 'openssl/ssl/ssl_conf.c', - 'openssl/ssl/ssl_err.c', 'openssl/ssl/ssl_err_legacy.c', 'openssl/ssl/ssl_init.c', 'openssl/ssl/ssl_lib.c', @@ -31,12 +32,60 @@ 'openssl/ssl/tls13_enc.c', 'openssl/ssl/tls_depr.c', 'openssl/ssl/tls_srp.c', - 'openssl/ssl/record/dtls1_bitmap.c', + 'openssl/ssl/quic/cc_newreno.c', + 'openssl/ssl/quic/json_enc.c', + 'openssl/ssl/quic/qlog.c', + 'openssl/ssl/quic/qlog_event_helpers.c', + 'openssl/ssl/quic/quic_ackm.c', + 'openssl/ssl/quic/quic_cfq.c', + 'openssl/ssl/quic/quic_channel.c', + 'openssl/ssl/quic/quic_demux.c', + 'openssl/ssl/quic/quic_engine.c', + 'openssl/ssl/quic/quic_fc.c', + 'openssl/ssl/quic/quic_fifd.c', + 'openssl/ssl/quic/quic_impl.c', + 'openssl/ssl/quic/quic_lcidm.c', + 'openssl/ssl/quic/quic_method.c', + 'openssl/ssl/quic/quic_obj.c', + 'openssl/ssl/quic/quic_port.c', + 'openssl/ssl/quic/quic_rcidm.c', + 'openssl/ssl/quic/quic_reactor.c', + 'openssl/ssl/quic/quic_reactor_wait_ctx.c', + 'openssl/ssl/quic/quic_record_rx.c', + 'openssl/ssl/quic/quic_record_shared.c', + 'openssl/ssl/quic/quic_record_tx.c', + 'openssl/ssl/quic/quic_record_util.c', + 'openssl/ssl/quic/quic_rstream.c', + 'openssl/ssl/quic/quic_rx_depack.c', + 'openssl/ssl/quic/quic_sf_list.c', + 'openssl/ssl/quic/quic_srt_gen.c', + 'openssl/ssl/quic/quic_srtm.c', + 'openssl/ssl/quic/quic_sstream.c', + 'openssl/ssl/quic/quic_statm.c', + 'openssl/ssl/quic/quic_stream_map.c', + 'openssl/ssl/quic/quic_thread_assist.c', + 'openssl/ssl/quic/quic_tls.c', + 'openssl/ssl/quic/quic_tls_api.c', + 'openssl/ssl/quic/quic_trace.c', + 'openssl/ssl/quic/quic_tserver.c', + 'openssl/ssl/quic/quic_txp.c', + 'openssl/ssl/quic/quic_txpim.c', + 'openssl/ssl/quic/quic_types.c', + 'openssl/ssl/quic/quic_wire.c', + 'openssl/ssl/quic/quic_wire_pkt.c', + 'openssl/ssl/quic/uint_set.c', 'openssl/ssl/record/rec_layer_d1.c', 'openssl/ssl/record/rec_layer_s3.c', - 'openssl/ssl/record/ssl3_buffer.c', - 'openssl/ssl/record/ssl3_record.c', - 'openssl/ssl/record/ssl3_record_tls13.c', + 'openssl/ssl/record/methods/dtls_meth.c', + 'openssl/ssl/record/methods/ssl3_meth.c', + 'openssl/ssl/record/methods/tls13_meth.c', + 'openssl/ssl/record/methods/tls1_meth.c', + 'openssl/ssl/record/methods/tls_common.c', + 'openssl/ssl/record/methods/tls_multib.c', + 'openssl/ssl/record/methods/tlsany_meth.c', + 'openssl/ssl/rio/poll_builder.c', + 'openssl/ssl/rio/poll_immediate.c', + 'openssl/ssl/rio/rio_notifier.c', 'openssl/ssl/statem/extensions.c', 'openssl/ssl/statem/extensions_clnt.c', 'openssl/ssl/statem/extensions_cust.c', @@ -150,6 +199,7 @@ 'openssl/crypto/bio/bss_conn.c', 'openssl/crypto/bio/bss_core.c', 'openssl/crypto/bio/bss_dgram.c', + 'openssl/crypto/bio/bss_dgram_pair.c', 'openssl/crypto/bio/bss_fd.c', 'openssl/crypto/bio/bss_file.c', 'openssl/crypto/bio/bss_log.c', @@ -210,6 +260,7 @@ 'openssl/crypto/cmp/cmp_client.c', 'openssl/crypto/cmp/cmp_ctx.c', 'openssl/crypto/cmp/cmp_err.c', + 'openssl/crypto/cmp/cmp_genm.c', 'openssl/crypto/cmp/cmp_hdr.c', 'openssl/crypto/cmp/cmp_http.c', 'openssl/crypto/cmp/cmp_msg.c', @@ -385,7 +436,9 @@ 'openssl/crypto/err/err_all.c', 'openssl/crypto/err/err_all_legacy.c', 'openssl/crypto/err/err_blocks.c', + 'openssl/crypto/err/err_mark.c', 'openssl/crypto/err/err_prn.c', + 'openssl/crypto/err/err_save.c', 'openssl/crypto/ess/ess_asn1.c', 'openssl/crypto/ess/ess_err.c', 'openssl/crypto/ess/ess_lib.c', @@ -468,7 +521,9 @@ 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -476,7 +531,11 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', + 'openssl/crypto/hpke/hpke.c', + 'openssl/crypto/hpke/hpke_util.c', 'openssl/crypto/http/http_client.c', 'openssl/crypto/http/http_err.c', 'openssl/crypto/http/http_lib.c', @@ -490,6 +549,7 @@ 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', 'openssl/crypto/bsearch.c', + 'openssl/crypto/comp_methods.c', 'openssl/crypto/context.c', 'openssl/crypto/core_algorithm.c', 'openssl/crypto/core_fetch.c', @@ -499,10 +559,13 @@ 'openssl/crypto/cryptlib.c', 'openssl/crypto/ctype.c', 'openssl/crypto/cversion.c', + 'openssl/crypto/defaults.c', 'openssl/crypto/der_writer.c', + 'openssl/crypto/deterministic_nonce.c', 'openssl/crypto/ebcdic.c', 'openssl/crypto/ex_data.c', 'openssl/crypto/getenv.c', + 'openssl/crypto/indicator_core.c', 'openssl/crypto/info.c', 'openssl/crypto/init.c', 'openssl/crypto/initthread.c', @@ -527,12 +590,16 @@ 'openssl/crypto/provider_core.c', 'openssl/crypto/provider_predefined.c', 'openssl/crypto/punycode.c', + 'openssl/crypto/quic_vlint.c', 'openssl/crypto/self_test_core.c', + 'openssl/crypto/sleep.c', 'openssl/crypto/sparse_array.c', + 'openssl/crypto/ssl_err.c', 'openssl/crypto/threads_lib.c', 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', 'openssl/crypto/trace.c', 'openssl/crypto/uid.c', 'openssl/crypto/md4/md4_dgst.c', @@ -542,6 +609,15 @@ 'openssl/crypto/md5/md5_sha1.c', 'openssl/crypto/mdc2/mdc2_one.c', 'openssl/crypto/mdc2/mdc2dgst.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -553,6 +629,7 @@ 'openssl/crypto/modes/siv128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/objects/o_names.c', 'openssl/crypto/objects/obj_dat.c', 'openssl/crypto/objects/obj_err.c', @@ -616,6 +693,7 @@ 'openssl/crypto/rand/rand_lib.c', 'openssl/crypto/rand/rand_meth.c', 'openssl/crypto/rand/rand_pool.c', + 'openssl/crypto/rand/rand_uniform.c', 'openssl/crypto/rand/randfile.c', 'openssl/crypto/rc2/rc2_cbc.c', 'openssl/crypto/rc2/rc2_ecb.c', @@ -664,6 +742,16 @@ 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', 'openssl/crypto/siphash/siphash.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/sm2/sm2_crypt.c', 'openssl/crypto/sm2/sm2_err.c', 'openssl/crypto/sm2/sm2_key.c', @@ -681,6 +769,12 @@ 'openssl/crypto/store/store_register.c', 'openssl/crypto/store/store_result.c', 'openssl/crypto/store/store_strings.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/crypto/ts/ts_asn1.c', 'openssl/crypto/ts/ts_conf.c', 'openssl/crypto/ts/ts_err.c', @@ -709,14 +803,22 @@ 'openssl/crypto/x509/pcy_map.c', 'openssl/crypto/x509/pcy_node.c', 'openssl/crypto/x509/pcy_tree.c', + 'openssl/crypto/x509/t_acert.c', 'openssl/crypto/x509/t_crl.c', 'openssl/crypto/x509/t_req.c', 'openssl/crypto/x509/t_x509.c', + 'openssl/crypto/x509/v3_aaa.c', + 'openssl/crypto/x509/v3_ac_tgt.c', 'openssl/crypto/x509/v3_addr.c', 'openssl/crypto/x509/v3_admis.c', 'openssl/crypto/x509/v3_akeya.c', 'openssl/crypto/x509/v3_akid.c', 'openssl/crypto/x509/v3_asid.c', + 'openssl/crypto/x509/v3_attrdesc.c', + 'openssl/crypto/x509/v3_attrmap.c', + 'openssl/crypto/x509/v3_audit_id.c', + 'openssl/crypto/x509/v3_authattid.c', + 'openssl/crypto/x509/v3_battcons.c', 'openssl/crypto/x509/v3_bcons.c', 'openssl/crypto/x509/v3_bitst.c', 'openssl/crypto/x509/v3_conf.c', @@ -725,12 +827,17 @@ 'openssl/crypto/x509/v3_enum.c', 'openssl/crypto/x509/v3_extku.c', 'openssl/crypto/x509/v3_genn.c', + 'openssl/crypto/x509/v3_group_ac.c', 'openssl/crypto/x509/v3_ia5.c', + 'openssl/crypto/x509/v3_ind_iss.c', 'openssl/crypto/x509/v3_info.c', 'openssl/crypto/x509/v3_int.c', + 'openssl/crypto/x509/v3_iobo.c', 'openssl/crypto/x509/v3_ist.c', 'openssl/crypto/x509/v3_lib.c', 'openssl/crypto/x509/v3_ncons.c', + 'openssl/crypto/x509/v3_no_ass.c', + 'openssl/crypto/x509/v3_no_rev_avail.c', 'openssl/crypto/x509/v3_pci.c', 'openssl/crypto/x509/v3_pcia.c', 'openssl/crypto/x509/v3_pcons.c', @@ -738,13 +845,20 @@ 'openssl/crypto/x509/v3_pmaps.c', 'openssl/crypto/x509/v3_prn.c', 'openssl/crypto/x509/v3_purp.c', + 'openssl/crypto/x509/v3_rolespec.c', 'openssl/crypto/x509/v3_san.c', + 'openssl/crypto/x509/v3_sda.c', + 'openssl/crypto/x509/v3_single_use.c', 'openssl/crypto/x509/v3_skid.c', + 'openssl/crypto/x509/v3_soa_id.c', 'openssl/crypto/x509/v3_sxnet.c', + 'openssl/crypto/x509/v3_timespec.c', 'openssl/crypto/x509/v3_tlsf.c', + 'openssl/crypto/x509/v3_usernotice.c', 'openssl/crypto/x509/v3_utf8.c', 'openssl/crypto/x509/v3_utl.c', 'openssl/crypto/x509/v3err.c', + 'openssl/crypto/x509/x509_acert.c', 'openssl/crypto/x509/x509_att.c', 'openssl/crypto/x509/x509_cmp.c', 'openssl/crypto/x509/x509_d2.c', @@ -762,6 +876,7 @@ 'openssl/crypto/x509/x509_v3.c', 'openssl/crypto/x509/x509_vfy.c', 'openssl/crypto/x509/x509_vpm.c', + 'openssl/crypto/x509/x509aset.c', 'openssl/crypto/x509/x509cset.c', 'openssl/crypto/x509/x509name.c', 'openssl/crypto/x509/x509rset.c', @@ -771,6 +886,7 @@ 'openssl/crypto/x509/x_attrib.c', 'openssl/crypto/x509/x_crl.c', 'openssl/crypto/x509/x_exten.c', + 'openssl/crypto/x509/x_ietfatt.c', 'openssl/crypto/x509/x_name.c', 'openssl/crypto/x509/x_pubkey.c', 'openssl/crypto/x509/x_req.c', @@ -802,6 +918,9 @@ 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c', 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', @@ -826,7 +945,13 @@ 'openssl/providers/implementations/ciphers/cipher_cts.c', 'openssl/providers/implementations/ciphers/cipher_null.c', 'openssl/providers/implementations/ciphers/cipher_sm4.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm_hw.c', 'openssl/providers/implementations/ciphers/cipher_sm4_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts_hw.c', 'openssl/providers/implementations/ciphers/cipher_tdes.c', 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', 'openssl/providers/implementations/ciphers/cipher_tdes_default.c', @@ -855,11 +980,16 @@ 'openssl/providers/implementations/encode_decode/encode_key2ms.c', 'openssl/providers/implementations/encode_decode/encode_key2text.c', 'openssl/providers/implementations/encode_decode/endecoder_common.c', + 'openssl/providers/implementations/encode_decode/ml_common_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_dsa_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_kem_codecs.c', 'openssl/providers/implementations/exchange/dh_exch.c', 'openssl/providers/implementations/exchange/ecdh_exch.c', 'openssl/providers/implementations/exchange/ecx_exch.c', 'openssl/providers/implementations/exchange/kdf_exch.c', + 'openssl/providers/implementations/kdfs/argon2.c', 'openssl/providers/implementations/kdfs/hkdf.c', + 'openssl/providers/implementations/kdfs/hmacdrbg_kdf.c', 'openssl/providers/implementations/kdfs/kbkdf.c', 'openssl/providers/implementations/kdfs/krb5kdf.c', 'openssl/providers/implementations/kdfs/pbkdf2.c', @@ -870,6 +1000,11 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ec_kem.c', + 'openssl/providers/implementations/kem/ecx_kem.c', + 'openssl/providers/implementations/kem/kem_util.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -877,7 +1012,11 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/blake2b_mac.c', 'openssl/providers/implementations/macs/blake2s_mac.c', 'openssl/providers/implementations/macs/cmac_prov.c', @@ -886,12 +1025,12 @@ 'openssl/providers/implementations/macs/kmac_prov.c', 'openssl/providers/implementations/macs/poly1305_prov.c', 'openssl/providers/implementations/macs/siphash_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', 'openssl/providers/implementations/rands/seed_src.c', + 'openssl/providers/implementations/rands/seed_src_jitter.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/rands/seeding/rand_cpu_x86.c', 'openssl/providers/implementations/rands/seeding/rand_tsc.c', @@ -901,17 +1040,24 @@ 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', 'openssl/providers/implementations/signature/sm2_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', 'openssl/providers/implementations/storemgmt/file_store.c', 'openssl/providers/implementations/storemgmt/file_store_any2obj.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/providers/implementations/storemgmt/winstore_store.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -922,7 +1068,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/implementations/ciphers/cipher_blowfish.c', 'openssl/providers/implementations/ciphers/cipher_blowfish_hw.c', 'openssl/providers/implementations/ciphers/cipher_cast5.c', @@ -947,16 +1093,20 @@ 'openssl/providers/implementations/digests/ripemd_prov.c', 'openssl/providers/implementations/digests/wp_prov.c', 'openssl/providers/implementations/kdfs/pbkdf1.c', + 'openssl/providers/implementations/kdfs/pvkkdf.c', 'openssl/providers/prov_running.c', 'openssl/providers/legacyprov.c', ], 'openssl_sources_VC-WIN64-ARM': [ + './config/archs/VC-WIN64-ARM/no-asm/crypto/params_idx.c', './config/archs/VC-WIN64-ARM/no-asm/providers/common/der/der_sm2_gen.c', './config/archs/VC-WIN64-ARM/no-asm/providers/common/der/der_digests_gen.c', './config/archs/VC-WIN64-ARM/no-asm/providers/common/der/der_dsa_gen.c', './config/archs/VC-WIN64-ARM/no-asm/providers/common/der/der_ec_gen.c', './config/archs/VC-WIN64-ARM/no-asm/providers/common/der/der_ecx_gen.c', + './config/archs/VC-WIN64-ARM/no-asm/providers/common/der/der_ml_dsa_gen.c', './config/archs/VC-WIN64-ARM/no-asm/providers/common/der/der_rsa_gen.c', + './config/archs/VC-WIN64-ARM/no-asm/providers/common/der/der_slh_dsa_gen.c', './config/archs/VC-WIN64-ARM/no-asm/providers/common/der/der_wrap_gen.c', ], 'openssl_defines_VC-WIN64-ARM': [ diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/providers/common/der/der_ml_dsa_gen.c b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/providers/common/der/der_ml_dsa_gen.c new file mode 100644 index 00000000000000..4a8a113a268578 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/providers/common/der/der_ml_dsa_gen.c @@ -0,0 +1,37 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_ml_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44] = { + DER_OID_V_id_ml_dsa_44 +}; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65] = { + DER_OID_V_id_ml_dsa_65 +}; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87] = { + DER_OID_V_id_ml_dsa_87 +}; + diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/providers/common/der/der_slh_dsa_gen.c b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/providers/common/der/der_slh_dsa_gen.c new file mode 100644 index 00000000000000..1419a9515097dd --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/providers/common/der/der_slh_dsa_gen.c @@ -0,0 +1,100 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_slh_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s] = { + DER_OID_V_id_slh_dsa_sha2_128s +}; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f] = { + DER_OID_V_id_slh_dsa_sha2_128f +}; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s] = { + DER_OID_V_id_slh_dsa_sha2_192s +}; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f] = { + DER_OID_V_id_slh_dsa_sha2_192f +}; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s] = { + DER_OID_V_id_slh_dsa_sha2_256s +}; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f] = { + DER_OID_V_id_slh_dsa_sha2_256f +}; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s] = { + DER_OID_V_id_slh_dsa_shake_128s +}; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f] = { + DER_OID_V_id_slh_dsa_shake_128f +}; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s] = { + DER_OID_V_id_slh_dsa_shake_192s +}; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f] = { + DER_OID_V_id_slh_dsa_shake_192f +}; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s] = { + DER_OID_V_id_slh_dsa_shake_256s +}; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f] = { + DER_OID_V_id_slh_dsa_shake_256f +}; + diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/providers/common/include/prov/der_ml_dsa.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/providers/common/include/prov/der_ml_dsa.h new file mode 100644 index 00000000000000..c55f780ab4527c --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/providers/common/include/prov/der_ml_dsa.h @@ -0,0 +1,40 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_ml_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +#define DER_OID_V_id_ml_dsa_44 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x11 +#define DER_OID_SZ_id_ml_dsa_44 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44]; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +#define DER_OID_V_id_ml_dsa_65 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x12 +#define DER_OID_SZ_id_ml_dsa_65 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65]; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +#define DER_OID_V_id_ml_dsa_87 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x13 +#define DER_OID_SZ_id_ml_dsa_87 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87]; + + +int ossl_DER_w_algorithmIdentifier_ML_DSA(WPACKET *pkt, int tag, ML_DSA_KEY *key); diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/providers/common/include/prov/der_slh_dsa.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/providers/common/include/prov/der_slh_dsa.h new file mode 100644 index 00000000000000..760f8e7699be72 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/providers/common/include/prov/der_slh_dsa.h @@ -0,0 +1,103 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_slh_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x14 +#define DER_OID_SZ_id_slh_dsa_sha2_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s]; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x15 +#define DER_OID_SZ_id_slh_dsa_sha2_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f]; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x16 +#define DER_OID_SZ_id_slh_dsa_sha2_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s]; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x17 +#define DER_OID_SZ_id_slh_dsa_sha2_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f]; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x18 +#define DER_OID_SZ_id_slh_dsa_sha2_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s]; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x19 +#define DER_OID_SZ_id_slh_dsa_sha2_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f]; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +#define DER_OID_V_id_slh_dsa_shake_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1A +#define DER_OID_SZ_id_slh_dsa_shake_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s]; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +#define DER_OID_V_id_slh_dsa_shake_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1B +#define DER_OID_SZ_id_slh_dsa_shake_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f]; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +#define DER_OID_V_id_slh_dsa_shake_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1C +#define DER_OID_SZ_id_slh_dsa_shake_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s]; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +#define DER_OID_V_id_slh_dsa_shake_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1D +#define DER_OID_SZ_id_slh_dsa_shake_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f]; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +#define DER_OID_V_id_slh_dsa_shake_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1E +#define DER_OID_SZ_id_slh_dsa_shake_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s]; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +#define DER_OID_V_id_slh_dsa_shake_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1F +#define DER_OID_SZ_id_slh_dsa_shake_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f]; + + +int ossl_DER_w_algorithmIdentifier_SLH_DSA(WPACKET *pkt, int tag, SLH_DSA_KEY *key); diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/apps/progs.c b/deps/openssl/config/archs/VC-WIN64A/asm/apps/progs.c index 43cef00799b86e..acc204a3e6e781 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/apps/progs.c +++ b/deps/openssl/config/archs/VC-WIN64A/asm/apps/progs.c @@ -89,6 +89,7 @@ FUNCTION functions[] = { {FT_general, "s_time", s_time_main, s_time_options, NULL, NULL}, #endif {FT_general, "sess_id", sess_id_main, sess_id_options, NULL, NULL}, + {FT_general, "skeyutl", skeyutl_main, skeyutl_options, NULL, NULL}, {FT_general, "smime", smime_main, smime_options, NULL, NULL}, {FT_general, "speed", speed_main, speed_options, NULL, NULL}, {FT_general, "spkac", spkac_main, spkac_options, NULL, NULL}, @@ -225,9 +226,15 @@ FUNCTION functions[] = { {FT_cipher, "camellia-256-ecb", enc_main, enc_options, NULL}, #endif {FT_cipher, "base64", enc_main, enc_options, NULL}, -#ifdef ZLIB +#ifndef OPENSSL_NO_ZLIB {FT_cipher, "zlib", enc_main, enc_options, NULL}, #endif +#ifndef OPENSSL_NO_BROTLI + {FT_cipher, "brotli", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ZSTD + {FT_cipher, "zstd", enc_main, enc_options, NULL}, +#endif #ifndef OPENSSL_NO_DES {FT_cipher, "des", enc_main, enc_options, NULL}, #endif diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm b/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm index 026579ed1d6bad..62fd5cb427b191 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm @@ -32,6 +32,7 @@ our %config = ( "CPPINCLUDES" => [], "CXXFLAGS" => [], "FIPSKEY" => "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813", + "FIPS_VENDOR" => "OpenSSL FIPS Provider", "HASHBANGPERL" => "/usr/bin/env perl", "LD" => "link", "LDFLAGS" => [ @@ -46,7 +47,7 @@ our %config = ( "RANLIB" => "ranlib", "RC" => "rc", "RCFLAGS" => [], - "api" => "30000", + "api" => "30500", "b32" => "0", "b64" => "1", "b64l" => "0", @@ -68,11 +69,13 @@ our %config = ( "doc/build.info", "test/build.info", "engines/build.info", + "exporters/build.info", "crypto/objects/build.info", "crypto/buffer/build.info", "crypto/bio/build.info", "crypto/stack/build.info", "crypto/lhash/build.info", + "crypto/hashtable/build.info", "crypto/rand/build.info", "crypto/evp/build.info", "crypto/asn1/build.info", @@ -90,6 +93,7 @@ our %config = ( "crypto/md5/build.info", "crypto/sha/build.info", "crypto/mdc2/build.info", + "crypto/ml_kem/build.info", "crypto/hmac/build.info", "crypto/ripemd/build.info", "crypto/whrlpool/build.info", @@ -131,11 +135,19 @@ our %config = ( "crypto/cmp/build.info", "crypto/encode_decode/build.info", "crypto/ffc/build.info", + "crypto/hpke/build.info", + "crypto/thread/build.info", + "crypto/ml_dsa/build.info", + "crypto/slh_dsa/build.info", + "ssl/record/build.info", + "ssl/rio/build.info", + "ssl/quic/build.info", "apps/lib/build.info", "providers/common/build.info", "providers/implementations/build.info", "providers/fips/build.info", "doc/man1/build.info", + "ssl/record/methods/build.info", "providers/common/der/build.info", "providers/implementations/digests/build.info", "providers/implementations/ciphers/build.info", @@ -149,6 +161,7 @@ our %config = ( "providers/implementations/encode_decode/build.info", "providers/implementations/storemgmt/build.info", "providers/implementations/kem/build.info", + "providers/implementations/skeymgmt/build.info", "providers/implementations/rands/seeding/build.info" ], "build_metadata" => "", @@ -168,7 +181,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.17", + "full_version" => "3.5.2", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -178,37 +191,51 @@ our %config = ( "major" => "3", "makedep_scheme" => "VC", "makedepcmd" => "\$(CC) /Zs /showIncludes", - "minor" => "0", + "minor" => "5", "openssl_api_defines" => [ - "OPENSSL_CONFIGURED_API=30000" + "OPENSSL_CONFIGURED_API=30500" ], "openssl_feature_defines" => [ "OPENSSL_RAND_SEED_OS", "OPENSSL_THREADS", "OPENSSL_NO_AFALGENG", "OPENSSL_NO_ASAN", + "OPENSSL_NO_BROTLI", + "OPENSSL_NO_BROTLI_DYNAMIC", "OPENSSL_NO_COMP", "OPENSSL_NO_CRYPTO_MDEBUG", "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE", + "OPENSSL_NO_DEMOS", "OPENSSL_NO_DEVCRYPTOENG", "OPENSSL_NO_EC_NISTP_64_GCC_128", "OPENSSL_NO_EGD", "OPENSSL_NO_EXTERNAL_TESTS", + "OPENSSL_NO_FIPS_JITTER", "OPENSSL_NO_FUZZ_AFL", "OPENSSL_NO_FUZZ_LIBFUZZER", + "OPENSSL_NO_H3DEMO", + "OPENSSL_NO_HQINTEROP", + "OPENSSL_NO_JITTER", "OPENSSL_NO_KTLS", "OPENSSL_NO_LOADERENG", "OPENSSL_NO_MD2", "OPENSSL_NO_MSAN", + "OPENSSL_NO_PIE", "OPENSSL_NO_RC5", "OPENSSL_NO_SCTP", "OPENSSL_NO_SSL3", "OPENSSL_NO_SSL3_METHOD", + "OPENSSL_NO_SSLKEYLOG", + "OPENSSL_NO_TFO", "OPENSSL_NO_TRACE", "OPENSSL_NO_UBSAN", "OPENSSL_NO_UNIT_TEST", "OPENSSL_NO_UPLINK", "OPENSSL_NO_WEAK_SSL_CIPHERS", + "OPENSSL_NO_ZLIB", + "OPENSSL_NO_ZLIB_DYNAMIC", + "OPENSSL_NO_ZSTD", + "OPENSSL_NO_ZSTD_DYNAMIC", "OPENSSL_NO_DYNAMIC_ENGINE" ], "openssl_other_defines" => [ @@ -218,11 +245,11 @@ our %config = ( "OPENSSL_SYS_WIN64A" ], "openssldir" => "", - "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "17", + "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", + "patch" => "2", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", - "perl_version" => "5.38.2", + "perl_version" => "5.34.0", "perlargv" => [ "no-comp", "no-shared", @@ -252,6 +279,7 @@ our %config = ( "LDLIBS" => undef, "MT" => undef, "MTFLAGS" => undef, + "OBJCOPY" => undef, "OPENSSL_LOCAL_CONFIG_DIR" => undef, "PERL" => undef, "RANLIB" => undef, @@ -271,11 +299,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "1 Jul 2025", + "release_date" => "5 Aug 2025", "shlib_version" => "3", "sourcedir" => ".", "target" => "VC-WIN64A", - "version" => "3.0.17" + "version" => "3.5.2" ); our %target = ( "AR" => "lib", @@ -290,7 +318,7 @@ our %target = ( "LDFLAGS" => "/nologo /debug", "MT" => "mt", "MTFLAGS" => "-nologo", - "RANLIB" => "CODE(0x55a1fa929968)", + "RANLIB" => "CODE(0x55da9d602550)", "RC" => "rc", "_conf_fname_int" => [ "Configurations/00-base-templates.conf", @@ -374,6 +402,8 @@ our %target = ( our @disablables = ( "acvp-tests", "afalgeng", + "apps", + "argon2", "aria", "asan", "asm", @@ -384,11 +414,14 @@ our @disablables = ( "autoload-config", "bf", "blake2", + "brotli", + "brotli-dynamic", "buildtest-c++", "bulk", "cached-fetch", "camellia", "capieng", + "winstore", "cast", "chacha", "cmac", @@ -397,11 +430,16 @@ our @disablables = ( "comp", "crypto-mdebug", "ct", + "default-thread-pool", + "demos", + "h3demo", + "hqinterop", "deprecated", "des", "devcryptoeng", "dgram", "dh", + "docs", "dsa", "dso", "dtls", @@ -411,6 +449,7 @@ our @disablables = ( "ec_nistp_64_gcc_128", "ecdh", "ecdsa", + "ecx", "egd", "engine", "err", @@ -418,10 +457,15 @@ our @disablables = ( "filenames", "fips", "fips-securitychecks", + "fips-post", + "fips-jitter", "fuzz-afl", "fuzz-libfuzzer", "gost", + "http", "idea", + "integrity-only-ciphers", + "jitter", "ktls", "legacy", "loadereng", @@ -429,6 +473,8 @@ our @disablables = ( "md2", "md4", "mdc2", + "ml-dsa", + "ml-kem", "module", "msan", "multiblock", @@ -437,10 +483,13 @@ our @disablables = ( "ocsp", "padlockeng", "pic", + "pie", "pinshared", "poly1305", "posix-io", "psk", + "quic", + "unstable-qlog", "rc2", "rc4", "rc5", @@ -454,7 +503,9 @@ our @disablables = ( "shared", "siphash", "siv", + "slh-dsa", "sm2", + "sm2-precomp", "sm3", "sm4", "sock", @@ -465,9 +516,13 @@ our @disablables = ( "ssl-trace", "static-engine", "stdio", + "sslkeylog", "tests", + "tfo", + "thread-pool", "threads", "tls", + "tls-deprecated-ec", "trace", "ts", "ubsan", @@ -478,6 +533,8 @@ our @disablables = ( "whirlpool", "zlib", "zlib-dynamic", + "zstd", + "zstd-dynamic", "ssl3", "ssl3-method", "tls1", @@ -498,33 +555,45 @@ our @disablables_int = ( our %disabled = ( "afalgeng" => "option", "asan" => "default", + "brotli" => "default", + "brotli-dynamic" => "default", "buildtest-c++" => "default", "comp" => "option", "crypto-mdebug" => "default", "crypto-mdebug-backtrace" => "default", + "demos" => "default", "devcryptoeng" => "default", "dynamic-engine" => "cascade", "ec_nistp_64_gcc_128" => "default", "egd" => "default", "external-tests" => "default", + "fips-jitter" => "default", "fuzz-afl" => "default", "fuzz-libfuzzer" => "default", + "h3demo" => "default", + "hqinterop" => "default", + "jitter" => "default", "ktls" => "default", "loadereng" => "cascade", "md2" => "default", "msan" => "default", + "pie" => "default", "rc5" => "default", "sctp" => "default", "shared" => "option", "ssl3" => "default", "ssl3-method" => "default", + "sslkeylog" => "default", + "tfo" => "default", "trace" => "default", "ubsan" => "default", "unit-test" => "default", "uplink" => "cascade", "weak-ssl-ciphers" => "default", "zlib" => "default", - "zlib-dynamic" => "default" + "zlib-dynamic" => "default", + "zstd" => "default", + "zstd-dynamic" => "default" ); our %withargs = (); our %unified_info = ( @@ -750,6 +819,11 @@ our %unified_info = ( "pod" => "1" } }, + "doc/man1/openssl-skeyutl.pod" => { + "doc/man1/openssl-skeyutl.pod.in" => { + "pod" => "1" + } + }, "doc/man1/openssl-smime.pod" => { "doc/man1/openssl-smime.pod.in" => { "pod" => "1" @@ -807,6 +881,21 @@ our %unified_info = ( } }, "generate" => { + "exporters/OpenSSLConfig.cmake" => { + "exporter" => "cmake" + }, + "exporters/OpenSSLConfigVersion.cmake" => { + "exporter" => "cmake" + }, + "exporters/libcrypto.pc" => { + "exporter" => "pkg-config" + }, + "exporters/libssl.pc" => { + "exporter" => "pkg-config" + }, + "exporters/openssl.pc" => { + "exporter" => "pkg-config" + }, "include/openssl/configuration.h" => { "skip" => "1" } @@ -827,6 +916,9 @@ our %unified_info = ( "providers/liblegacy.a" => { "noinst" => "1" }, + "providers/libtemplate.a" => { + "noinst" => "1" + }, "test/libtestutil.a" => { "has_main" => "1", "noinst" => "1" @@ -844,6 +936,9 @@ our %unified_info = ( } }, "programs" => { + "fuzz/acert-test" => { + "noinst" => "1" + }, "fuzz/asn1-test" => { "noinst" => "1" }, @@ -874,9 +969,60 @@ our %unified_info = ( "fuzz/ct-test" => { "noinst" => "1" }, + "fuzz/decoder-test" => { + "noinst" => "1" + }, + "fuzz/dtlsclient-test" => { + "noinst" => "1" + }, + "fuzz/dtlsserver-test" => { + "noinst" => "1" + }, + "fuzz/hashtable-test" => { + "noinst" => "1" + }, + "fuzz/ml-dsa-test" => { + "noinst" => "1" + }, + "fuzz/ml-kem-test" => { + "noinst" => "1" + }, + "fuzz/pem-test" => { + "noinst" => "1" + }, + "fuzz/provider-test" => { + "noinst" => "1" + }, + "fuzz/punycode-test" => { + "noinst" => "1" + }, + "fuzz/quic-client-test" => { + "noinst" => "1" + }, + "fuzz/quic-lcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-rcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-server-test" => { + "noinst" => "1" + }, + "fuzz/quic-srtm-test" => { + "noinst" => "1" + }, "fuzz/server-test" => { "noinst" => "1" }, + "fuzz/slh-dsa-test" => { + "noinst" => "1" + }, + "fuzz/smime-test" => { + "noinst" => "1" + }, + "fuzz/v3name-test" => { + "noinst" => "1" + }, "fuzz/x509-test" => { "noinst" => "1" }, @@ -928,18 +1074,30 @@ our %unified_info = ( "test/bftest" => { "noinst" => "1" }, + "test/bio_addr_test" => { + "noinst" => "1" + }, + "test/bio_base64_test" => { + "noinst" => "1" + }, "test/bio_callback_test" => { "noinst" => "1" }, "test/bio_core_test" => { "noinst" => "1" }, + "test/bio_dgram_test" => { + "noinst" => "1" + }, "test/bio_enc_test" => { "noinst" => "1" }, "test/bio_memleak_test" => { "noinst" => "1" }, + "test/bio_meth_test" => { + "noinst" => "1" + }, "test/bio_prefix_text" => { "noinst" => "1" }, @@ -949,6 +1107,9 @@ our %unified_info = ( "test/bio_readbuffer_test" => { "noinst" => "1" }, + "test/bio_tfo_test" => { + "noinst" => "1" + }, "test/bioprinttest" => { "noinst" => "1" }, @@ -958,6 +1119,9 @@ our %unified_info = ( "test/bntest" => { "noinst" => "1" }, + "test/build_wincrypt_test" => { + "noinst" => "1" + }, "test/buildtest_c_aes" => { "noinst" => "1" }, @@ -973,6 +1137,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => { "noinst" => "1" }, + "test/buildtest_c_byteorder" => { + "noinst" => "1" + }, "test/buildtest_c_camellia" => { "noinst" => "1" }, @@ -997,9 +1164,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => { "noinst" => "1" }, - "test/buildtest_c_core_names" => { - "noinst" => "1" - }, "test/buildtest_c_core_object" => { "noinst" => "1" }, @@ -1024,6 +1188,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => { "noinst" => "1" }, + "test/buildtest_c_e_ostime" => { + "noinst" => "1" + }, "test/buildtest_c_ebcdic" => { "noinst" => "1" }, @@ -1051,12 +1218,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => { "noinst" => "1" }, + "test/buildtest_c_hpke" => { + "noinst" => "1" + }, "test/buildtest_c_http" => { "noinst" => "1" }, "test/buildtest_c_idea" => { "noinst" => "1" }, + "test/buildtest_c_indicator" => { + "noinst" => "1" + }, "test/buildtest_c_kdf" => { "noinst" => "1" }, @@ -1072,6 +1245,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => { "noinst" => "1" }, + "test/buildtest_c_ml_kem" => { + "noinst" => "1" + }, "test/buildtest_c_modes" => { "noinst" => "1" }, @@ -1102,6 +1278,9 @@ our %unified_info = ( "test/buildtest_c_provider" => { "noinst" => "1" }, + "test/buildtest_c_quic" => { + "noinst" => "1" + }, "test/buildtest_c_rand" => { "noinst" => "1" }, @@ -1144,6 +1323,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => { "noinst" => "1" }, + "test/buildtest_c_thread" => { + "noinst" => "1" + }, "test/buildtest_c_tls1" => { "noinst" => "1" }, @@ -1159,6 +1341,12 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => { "noinst" => "1" }, + "test/byteorder_test" => { + "noinst" => "1" + }, + "test/ca_internals_test" => { + "noinst" => "1" + }, "test/casttest" => { "noinst" => "1" }, @@ -1243,6 +1431,9 @@ our %unified_info = ( "test/danetest" => { "noinst" => "1" }, + "test/decoder_propq_test" => { + "noinst" => "1" + }, "test/defltfips_test" => { "noinst" => "1" }, @@ -1315,15 +1506,24 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => { "noinst" => "1" }, + "test/evp_pkey_dhkem_test" => { + "noinst" => "1" + }, "test/evp_pkey_dparams_test" => { "noinst" => "1" }, "test/evp_pkey_provided_test" => { "noinst" => "1" }, + "test/evp_skey_test" => { + "noinst" => "1" + }, "test/evp_test" => { "noinst" => "1" }, + "test/evp_xof_test" => { + "noinst" => "1" + }, "test/exdatatest" => { "noinst" => "1" }, @@ -1351,6 +1551,9 @@ our %unified_info = ( "test/hmactest" => { "noinst" => "1" }, + "test/hpke_test" => { + "noinst" => "1" + }, "test/http_test" => { "noinst" => "1" }, @@ -1360,12 +1563,18 @@ our %unified_info = ( "test/igetest" => { "noinst" => "1" }, + "test/json_test" => { + "noinst" => "1" + }, "test/keymgmt_internal_test" => { "noinst" => "1" }, "test/lhash_test" => { "noinst" => "1" }, + "test/list_test" => { + "noinst" => "1" + }, "test/localetest" => { "noinst" => "1" }, @@ -1375,9 +1584,21 @@ our %unified_info = ( "test/mdc2test" => { "noinst" => "1" }, + "test/membio_test" => { + "noinst" => "1" + }, "test/memleaktest" => { "noinst" => "1" }, + "test/ml_dsa_test" => { + "noinst" => "1" + }, + "test/ml_kem_evp_extra_test" => { + "noinst" => "1" + }, + "test/ml_kem_internal_test" => { + "noinst" => "1" + }, "test/modes_internal_test" => { "noinst" => "1" }, @@ -1396,6 +1617,9 @@ our %unified_info = ( "test/packettest" => { "noinst" => "1" }, + "test/pairwise_fail_test" => { + "noinst" => "1" + }, "test/param_build_test" => { "noinst" => "1" }, @@ -1420,6 +1644,9 @@ our %unified_info = ( "test/pemtest" => { "noinst" => "1" }, + "test/pkcs12_api_test" => { + "noinst" => "1" + }, "test/pkcs12_format_test" => { "noinst" => "1" }, @@ -1435,6 +1662,9 @@ our %unified_info = ( "test/poly1305_internal_test" => { "noinst" => "1" }, + "test/priority_queue_test" => { + "noinst" => "1" + }, "test/property_test" => { "noinst" => "1" }, @@ -1444,6 +1674,9 @@ our %unified_info = ( "test/provfetchtest" => { "noinst" => "1" }, + "test/provider_default_search_path_test" => { + "noinst" => "1" + }, "test/provider_fallback_test" => { "noinst" => "1" }, @@ -1462,6 +1695,72 @@ our %unified_info = ( "test/punycode_test" => { "noinst" => "1" }, + "test/quic_ackm_test" => { + "noinst" => "1" + }, + "test/quic_cc_test" => { + "noinst" => "1" + }, + "test/quic_cfq_test" => { + "noinst" => "1" + }, + "test/quic_client_test" => { + "noinst" => "1" + }, + "test/quic_fc_test" => { + "noinst" => "1" + }, + "test/quic_fifd_test" => { + "noinst" => "1" + }, + "test/quic_lcidm_test" => { + "noinst" => "1" + }, + "test/quic_multistream_test" => { + "noinst" => "1" + }, + "test/quic_newcid_test" => { + "noinst" => "1" + }, + "test/quic_qlog_test" => { + "noinst" => "1" + }, + "test/quic_radix_test" => { + "noinst" => "1" + }, + "test/quic_rcidm_test" => { + "noinst" => "1" + }, + "test/quic_record_test" => { + "noinst" => "1" + }, + "test/quic_srt_gen_test" => { + "noinst" => "1" + }, + "test/quic_srtm_test" => { + "noinst" => "1" + }, + "test/quic_stream_test" => { + "noinst" => "1" + }, + "test/quic_tserver_test" => { + "noinst" => "1" + }, + "test/quic_txp_test" => { + "noinst" => "1" + }, + "test/quic_txpim_test" => { + "noinst" => "1" + }, + "test/quic_wire_test" => { + "noinst" => "1" + }, + "test/quicapitest" => { + "noinst" => "1" + }, + "test/quicfaultstest" => { + "noinst" => "1" + }, "test/rand_status_test" => { "noinst" => "1" }, @@ -1477,12 +1776,15 @@ our %unified_info = ( "test/rc5test" => { "noinst" => "1" }, - "test/rdrand_sanitytest" => { + "test/rdcpu_sanitytest" => { "noinst" => "1" }, "test/recordlentest" => { "noinst" => "1" }, + "test/rpktest" => { + "noinst" => "1" + }, "test/rsa_complex" => { "noinst" => "1" }, @@ -1495,6 +1797,12 @@ our %unified_info = ( "test/rsa_test" => { "noinst" => "1" }, + "test/rsa_x931_test" => { + "noinst" => "1" + }, + "test/safe_math_test" => { + "noinst" => "1" + }, "test/sanitytest" => { "noinst" => "1" }, @@ -1510,6 +1818,9 @@ our %unified_info = ( "test/siphash_internal_test" => { "noinst" => "1" }, + "test/slh_dsa_test" => { + "noinst" => "1" + }, "test/sm2_internal_test" => { "noinst" => "1" }, @@ -1531,6 +1842,9 @@ our %unified_info = ( "test/ssl_ctx_test" => { "noinst" => "1" }, + "test/ssl_handshake_rtt_test" => { + "noinst" => "1" + }, "test/ssl_old_test" => { "noinst" => "1" }, @@ -1552,12 +1866,18 @@ our %unified_info = ( "test/stack_test" => { "noinst" => "1" }, + "test/strtoultest" => { + "noinst" => "1" + }, "test/sysdefaulttest" => { "noinst" => "1" }, "test/test_test" => { "noinst" => "1" }, + "test/threadpool_test" => { + "noinst" => "1" + }, "test/threadstest" => { "noinst" => "1" }, @@ -1567,12 +1887,18 @@ our %unified_info = ( "test/time_offset_test" => { "noinst" => "1" }, + "test/time_test" => { + "noinst" => "1" + }, "test/tls13ccstest" => { "noinst" => "1" }, "test/tls13encryptiontest" => { "noinst" => "1" }, + "test/tls13groupselection_test" => { + "noinst" => "1" + }, "test/trace_api_test" => { "noinst" => "1" }, @@ -1600,6 +1926,9 @@ our %unified_info = ( "test/wpackettest" => { "noinst" => "1" }, + "test/x509_acert_test" => { + "noinst" => "1" + }, "test/x509_check_cert_pkey_test" => { "noinst" => "1" }, @@ -1609,6 +1938,15 @@ our %unified_info = ( "test/x509_internal_test" => { "noinst" => "1" }, + "test/x509_load_cert_file_test" => { + "noinst" => "1" + }, + "test/x509_req_test" => { + "noinst" => "1" + }, + "test/x509_test" => { + "noinst" => "1" + }, "test/x509_time_test" => { "noinst" => "1" }, @@ -1685,6 +2023,7 @@ our %unified_info = ( "ECP_NISTZ256_ASM", "KECCAK1600_ASM", "OPENSSL_CPUID_OBJ", + "OPENSSL_IA32_SSE2", "SHA1_ASM", "SHA256_ASM", "SHA512_ASM", @@ -1713,6 +2052,9 @@ our %unified_info = ( "MD5_ASM", "RC4_ASM" ], + "test/endecode_test" => [ + "STATIC_LEGACY" + ], "test/evp_extra_test" => [ "STATIC_LEGACY" ], @@ -1725,14 +2067,21 @@ our %unified_info = ( }, "depends" => { "" => [ + "OpenSSLConfigVersion.cmake", + "crypto/params_idx.c", + "exporters/OpenSSLConfigVersion.cmake", + "exporters/openssl.pc", "include/crypto/bn_conf.h", "include/crypto/dso_conf.h", + "include/internal/param_names.h", "include/openssl/asn1.h", "include/openssl/asn1t.h", "include/openssl/bio.h", "include/openssl/cmp.h", "include/openssl/cms.h", + "include/openssl/comp.h", "include/openssl/conf.h", + "include/openssl/core_names.h", "include/openssl/crmf.h", "include/openssl/crypto.h", "include/openssl/ct.h", @@ -1749,10 +2098,22 @@ our %unified_info = ( "include/openssl/ssl.h", "include/openssl/ui.h", "include/openssl/x509.h", + "include/openssl/x509_acert.h", "include/openssl/x509_vfy.h", "include/openssl/x509v3.h", + "openssl.pc", "test/provider_internal_test.cnf" ], + "OpenSSLConfig.cmake" => [ + "builddata.pm" + ], + "OpenSSLConfigVersion.cmake" => [ + "OpenSSLConfig.cmake", + "builddata.pm" + ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/progs.h" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/progs.h" ], @@ -1898,6 +2259,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/progs.h" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/progs.h" + ], "apps/openssl-bin-smime.o" => [ "apps/progs.h" ], @@ -1986,6 +2350,9 @@ our %unified_info = ( "crypto/libcrypto-lib-info.o" => [ "crypto/buildinf.h" ], + "crypto/params_idx.c" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "crypto/rc4/rc4-586.S" => [ "crypto/perlasm/x86asm.pl" ], @@ -2151,6 +2518,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -2292,6 +2662,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -2328,6 +2701,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -2343,6 +2719,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -2415,6 +2794,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -2481,6 +2863,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -2580,6 +2965,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -2718,6 +3109,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -2835,6 +3229,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -2922,6 +3322,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -2994,9 +3397,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -3012,12 +3421,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -3087,9 +3502,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -3099,12 +3523,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -3120,9 +3556,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -3147,6 +3589,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -3162,6 +3607,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -3198,6 +3646,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -3471,6 +3922,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -3510,6 +3964,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -3531,6 +3988,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -3645,6 +4105,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -3672,9 +4135,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -3690,6 +4165,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -3699,12 +4177,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -3723,12 +4207,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -3738,9 +4234,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -3753,9 +4255,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -3771,24 +4285,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -3801,6 +4336,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -3810,8 +4351,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -3831,6 +4372,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -3879,6 +4435,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -3945,6 +4504,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -4068,9 +4630,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -4086,6 +4654,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -4110,9 +4681,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -4146,6 +4726,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -4203,15 +4786,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -4221,6 +4816,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -4242,9 +4840,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -4260,6 +4864,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -4272,9 +4879,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -4305,9 +4909,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -4323,12 +4924,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -4383,6 +5038,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -4392,9 +5050,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -4542,6 +5197,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -4683,6 +5341,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -4719,6 +5380,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -4734,6 +5398,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -4806,6 +5473,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -4872,6 +5542,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -4971,6 +5644,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -5109,6 +5788,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -5226,6 +5908,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -5313,6 +6001,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -5385,9 +6076,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -5403,12 +6100,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -5478,9 +6181,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -5490,12 +6202,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -5511,9 +6235,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -5538,6 +6268,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -5553,6 +6286,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -5589,6 +6325,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -5862,6 +6601,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -5901,6 +6643,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -5922,6 +6667,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -6036,6 +6784,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -6063,9 +6814,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -6081,6 +6844,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -6090,12 +6856,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -6114,12 +6886,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -6129,9 +6913,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -6144,9 +6934,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -6162,24 +6964,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -6192,6 +7015,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -6201,8 +7030,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -6222,6 +7051,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -6270,6 +7114,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -6336,6 +7183,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -6459,9 +7309,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -6477,6 +7333,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -6501,9 +7360,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -6537,6 +7405,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -6594,15 +7465,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -6612,6 +7495,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -6633,9 +7519,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -6651,6 +7543,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -6663,9 +7558,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -6696,9 +7588,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -6714,12 +7603,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -6774,6 +7717,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -6783,9 +7729,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -6965,6 +7908,10 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod.in", "doc/perlvars.pm" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in", + "doc/perlvars.pm" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in", "doc/perlvars.pm" @@ -7004,6 +7951,27 @@ our %unified_info = ( "doc/man7/openssl_user_macros.pod" => [ "doc/man7/openssl_user_macros.pod.in" ], + "exporters/OpenSSLConfig.cmake" => [ + "installdata.pm" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/OpenSSLConfig.cmake", + "installdata.pm" + ], + "exporters/libcrypto.pc" => [ + "installdata.pm" + ], + "exporters/libssl.pc" => [ + "installdata.pm" + ], + "exporters/openssl.pc" => [ + "exporters/libcrypto.pc", + "exporters/libssl.pc", + "installdata.pm" + ], + "fuzz/acert-test" => [ + "libcrypto" + ], "fuzz/asn1-test" => [ "libcrypto", "libssl" @@ -7036,17 +8004,85 @@ our %unified_info = ( "fuzz/ct-test" => [ "libcrypto" ], + "fuzz/decoder-test" => [ + "libcrypto" + ], + "fuzz/dtlsclient-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/dtlsserver-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/hashtable-test" => [ + "libcrypto.a" + ], + "fuzz/ml-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/ml-kem-test" => [ + "libcrypto.a" + ], + "fuzz/pem-test" => [ + "libcrypto.a" + ], + "fuzz/provider-test" => [ + "libcrypto" + ], + "fuzz/punycode-test" => [ + "libcrypto.a" + ], + "fuzz/quic-client-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-lcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-rcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-server-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-srtm-test" => [ + "libcrypto.a", + "libssl.a" + ], "fuzz/server-test" => [ "libcrypto", "libssl" ], + "fuzz/slh-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/smime-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/v3name-test" => [ + "libcrypto.a" + ], "fuzz/x509-test" => [ "libcrypto" ], + "include/internal/param_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], + "include/openssl/core_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "libcrypto.ld" => [ "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libcrypto.pc" => [ + "builddata.pm" + ], "libcrypto.rc" => [ "configdata.pm" ], @@ -7057,9 +8093,17 @@ our %unified_info = ( "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libssl.pc" => [ + "builddata.pm" + ], "libssl.rc" => [ "configdata.pm" ], + "openssl.pc" => [ + "builddata.pm", + "libcrypto.pc", + "libssl.pc" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/DIGESTS.asn1", "providers/common/der/NIST.asn1", @@ -7077,11 +8121,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7121,6 +8173,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov/der_rsa.h" ], @@ -7128,6 +8186,12 @@ our %unified_info = ( "providers/common/include/prov/der_digests.h", "providers/common/include/prov/der_rsa.h" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov/der_wrap.h" ], @@ -7167,11 +8231,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7204,9 +8276,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov/der_sm2.h" ], @@ -7219,9 +8297,15 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/legacy" => [ "libcrypto", "providers/liblegacy.a" @@ -7299,6 +8383,14 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_addr_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/bio_base64_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_callback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7307,6 +8399,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_dgram_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_enc_test" => [ "libcrypto", "test/libtestutil.a" @@ -7315,6 +8411,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_meth_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_prefix_text" => [ "libcrypto", "test/libtestutil.a" @@ -7327,6 +8427,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_tfo_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bioprinttest" => [ "libcrypto", "test/libtestutil.a" @@ -7339,6 +8443,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/build_wincrypt_test" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_aes" => [ "libcrypto", "libssl" @@ -7359,6 +8467,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_byteorder" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_camellia" => [ "libcrypto", "libssl" @@ -7391,10 +8503,6 @@ our %unified_info = ( "libcrypto", "libssl" ], - "test/buildtest_c_core_names" => [ - "libcrypto", - "libssl" - ], "test/buildtest_c_core_object" => [ "libcrypto", "libssl" @@ -7427,6 +8535,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_e_ostime" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_ebcdic" => [ "libcrypto", "libssl" @@ -7463,6 +8575,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_hpke" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_http" => [ "libcrypto", "libssl" @@ -7471,6 +8587,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_indicator" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_kdf" => [ "libcrypto", "libssl" @@ -7491,6 +8611,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_ml_kem" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_modes" => [ "libcrypto", "libssl" @@ -7531,6 +8655,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_quic" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_rand" => [ "libcrypto", "libssl" @@ -7587,6 +8715,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_thread" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_tls1" => [ "libcrypto", "libssl" @@ -7607,10 +8739,23 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/byteorder_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ca_internals_test" => [ + "libssl", + "test/libtestutil.a" + ], "test/casttest" => [ "libcrypto", "test/libtestutil.a" ], + "test/cert_comp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/chacha_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7724,6 +8869,10 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/decoder_propq_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/defltfips_test" => [ "libcrypto", "test/libtestutil.a" @@ -7780,6 +8929,8 @@ our %unified_info = ( ], "test/endecode_test" => [ "libcrypto.a", + "providers/libcommon.a", + "providers/liblegacy.a", "test/libtestutil.a" ], "test/endecoder_legacy_test" => [ @@ -7823,6 +8974,10 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => [ "libcrypto" ], + "test/evp_pkey_dhkem_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/evp_pkey_dparams_test" => [ "libcrypto", "test/libtestutil.a" @@ -7831,10 +8986,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/evp_skey_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/evp_xof_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/exdatatest" => [ "libcrypto", "test/libtestutil.a" @@ -7873,6 +9036,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/hpke_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/http_test" => [ "libcrypto", "test/libtestutil.a" @@ -7885,17 +9052,25 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/json_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/keymgmt_internal_test" => [ "libcrypto.a", "test/libtestutil.a" ], "test/lhash_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/libtestutil.a" => [ "libcrypto" ], + "test/list_test" => [ + "test/libtestutil.a" + ], "test/localetest" => [ "libcrypto", "test/libtestutil.a" @@ -7908,10 +9083,26 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/membio_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/memleaktest" => [ "libcrypto", "test/libtestutil.a" ], + "test/ml_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_evp_extra_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_internal_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/modes_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7936,6 +9127,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pairwise_fail_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/param_build_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7968,6 +9163,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pkcs12_api_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/pkcs12_format_test" => [ "libcrypto", "test/libtestutil.a" @@ -7988,6 +9187,11 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/priority_queue_test" => [ + "libcrypto", + "libssl.a", + "test/libtestutil.a" + ], "test/property_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8000,6 +9204,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/provider_default_search_path_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/provider_fallback_test" => [ "libcrypto", "test/libtestutil.a" @@ -8024,12 +9232,122 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/quic_ackm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cfq_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_client_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fifd_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_lcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_multistream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_newcid_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_qlog_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_radix_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_rcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_record_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srt_gen_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srtm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_stream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_tserver_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txpim_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_wire_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicapitest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicfaultstest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/rand_status_test" => [ "libcrypto", "test/libtestutil.a" ], "test/rand_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/rc2test" => [ @@ -8044,7 +9362,7 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "libcrypto.a", "test/libtestutil.a" ], @@ -8053,6 +9371,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/rpktest" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/rsa_mp_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8065,10 +9388,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/sanitytest" => [ + "test/rsa_x931_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/safe_math_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/sanitytest" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/secmemtest" => [ "libcrypto", "test/libtestutil.a" @@ -8086,6 +9417,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/slh_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/sm2_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8115,6 +9450,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/ssl_handshake_rtt_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/ssl_old_test" => [ "libcrypto.a", "libssl.a", @@ -8131,8 +9471,8 @@ our %unified_info = ( "test/libtestutil.a" ], "test/sslapitest" => [ - "libcrypto", - "libssl", + "libcrypto.a", + "libssl.a", "test/libtestutil.a" ], "test/sslbuffertest" => [ @@ -8149,6 +9489,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/strtoultest" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/sysdefaulttest" => [ "libcrypto", "libssl", @@ -8158,8 +9502,12 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/threadpool_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/threadstest" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/threadstest_fips" => [ @@ -8170,6 +9518,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/time_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/tls13ccstest" => [ "libcrypto", "libssl", @@ -8180,6 +9532,11 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/tls13groupselection_test" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/trace_api_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8217,6 +9574,10 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/x509_acert_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_check_cert_pkey_test" => [ "libcrypto", "test/libtestutil.a" @@ -8229,6 +9590,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/x509_load_cert_file_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_req_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_time_test" => [ "libcrypto", "test/libtestutil.a" @@ -8243,9 +9616,13 @@ our %unified_info = ( }, "dirinfo" => { "apps" => { + "deps" => [ + "apps/ca_internals_test-bin-ca.o" + ], "products" => { "bin" => [ - "apps/openssl" + "apps/openssl", + "test/ca_internals_test" ], "script" => [ "apps/CA.pl", @@ -8256,6 +9633,14 @@ our %unified_info = ( "apps/lib" => { "deps" => [ "apps/lib/openssl-bin-cmp_mock_srv.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", "apps/lib/cmp_client_test-bin-cmp_mock_srv.o", "apps/lib/uitest-bin-apps_ui.o", "apps/lib/libapps-lib-app_libctx.o", @@ -8264,12 +9649,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -8282,6 +9669,7 @@ our %unified_info = ( "products" => { "bin" => [ "apps/openssl", + "test/ca_internals_test", "test/cmp_client_test", "test/uitest" ], @@ -8293,8 +9681,12 @@ our %unified_info = ( }, "crypto" => { "deps" => [ + "crypto/asn1_time_test-bin-ctype.o", + "crypto/ca_internals_test-bin-ctype.o", + "crypto/packettest-bin-quic_vlint.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -8304,10 +9696,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -8324,6 +9719,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -8331,12 +9727,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libcrypto-lib-x86_64cpuid.o", @@ -8359,6 +9759,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -8367,9 +9768,15 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", "crypto/libfips-lib-x86_64cpuid.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test", + "test/packettest" + ], "lib" => [ "libcrypto", "providers/libfips.a" @@ -8389,6 +9796,7 @@ our %unified_info = ( "crypto/aes/libcrypto-lib-aesni-sha1-x86_64.o", "crypto/aes/libcrypto-lib-aesni-sha256-x86_64.o", "crypto/aes/libcrypto-lib-aesni-x86_64.o", + "crypto/aes/libcrypto-lib-aesni-xts-avx512.o", "crypto/aes/libcrypto-lib-bsaes-x86_64.o", "crypto/aes/libcrypto-lib-vpaes-x86_64.o", "crypto/aes/libfips-lib-aes-x86_64.o", @@ -8398,6 +9806,7 @@ our %unified_info = ( "crypto/aes/libfips-lib-aesni-sha1-x86_64.o", "crypto/aes/libfips-lib-aesni-sha256-x86_64.o", "crypto/aes/libfips-lib-aesni-x86_64.o", + "crypto/aes/libfips-lib-aesni-xts-avx512.o", "crypto/aes/libfips-lib-bsaes-x86_64.o", "crypto/aes/libfips-lib-vpaes-x86_64.o" ], @@ -8420,6 +9829,8 @@ our %unified_info = ( }, "crypto/asn1" => { "deps" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", "crypto/asn1/libcrypto-lib-a_bitstr.o", "crypto/asn1/libcrypto-lib-a_d2i_fp.o", "crypto/asn1/libcrypto-lib-a_digest.o", @@ -8486,6 +9897,10 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test" + ], "lib" => [ "libcrypto" ] @@ -8551,6 +9966,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -8600,8 +10016,13 @@ our %unified_info = ( "crypto/bn/libcrypto-lib-bn_srp.o", "crypto/bn/libcrypto-lib-bn_word.o", "crypto/bn/libcrypto-lib-bn_x931p.o", + "crypto/bn/libcrypto-lib-rsaz-2k-avx512.o", + "crypto/bn/libcrypto-lib-rsaz-2k-avxifma.o", + "crypto/bn/libcrypto-lib-rsaz-3k-avx512.o", + "crypto/bn/libcrypto-lib-rsaz-3k-avxifma.o", + "crypto/bn/libcrypto-lib-rsaz-4k-avx512.o", + "crypto/bn/libcrypto-lib-rsaz-4k-avxifma.o", "crypto/bn/libcrypto-lib-rsaz-avx2.o", - "crypto/bn/libcrypto-lib-rsaz-avx512.o", "crypto/bn/libcrypto-lib-rsaz-x86_64.o", "crypto/bn/libcrypto-lib-rsaz_exp.o", "crypto/bn/libcrypto-lib-rsaz_exp_x2.o", @@ -8636,8 +10057,13 @@ our %unified_info = ( "crypto/bn/libfips-lib-bn_sqr.o", "crypto/bn/libfips-lib-bn_sqrt.o", "crypto/bn/libfips-lib-bn_word.o", + "crypto/bn/libfips-lib-rsaz-2k-avx512.o", + "crypto/bn/libfips-lib-rsaz-2k-avxifma.o", + "crypto/bn/libfips-lib-rsaz-3k-avx512.o", + "crypto/bn/libfips-lib-rsaz-3k-avxifma.o", + "crypto/bn/libfips-lib-rsaz-4k-avx512.o", + "crypto/bn/libfips-lib-rsaz-4k-avxifma.o", "crypto/bn/libfips-lib-rsaz-avx2.o", - "crypto/bn/libfips-lib-rsaz-avx512.o", "crypto/bn/libfips-lib-rsaz-x86_64.o", "crypto/bn/libfips-lib-rsaz_exp.o", "crypto/bn/libfips-lib-rsaz_exp_x2.o", @@ -8722,6 +10148,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -9095,7 +10522,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", - "crypto/err/libcrypto-lib-err_prn.o" + "crypto/err/libcrypto-lib-err_mark.o", + "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o" ], "products" => { "lib" => [ @@ -9196,7 +10625,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/evp/libfips-lib-asymcipher.o", "crypto/evp/libfips-lib-dh_support.o", "crypto/evp/libfips-lib-digest.o", @@ -9212,14 +10643,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", - "crypto/evp/libfips-lib-signature.o" + "crypto/evp/libfips-lib-s_lib.o", + "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o" ], "products" => { "lib" => [ @@ -9252,6 +10684,20 @@ our %unified_info = ( ] } }, + "crypto/hashtable" => { + "deps" => [ + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/hmac" => { "deps" => [ "crypto/hmac/libcrypto-lib-hmac.o", @@ -9264,6 +10710,17 @@ our %unified_info = ( ] } }, + "crypto/hpke" => { + "deps" => [ + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, "crypto/http" => { "deps" => [ "crypto/http/libcrypto-lib-http_client.o", @@ -9348,8 +10805,47 @@ our %unified_info = ( ] } }, + "crypto/ml_dsa" => { + "deps" => [ + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ml_kem" => { + "deps" => [ + "crypto/ml_kem/libcrypto-lib-ml_kem.o", + "crypto/ml_kem/libfips-lib-ml_kem.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/modes" => { "deps" => [ + "crypto/modes/libcrypto-lib-aes-gcm-avx512.o", "crypto/modes/libcrypto-lib-aesni-gcm-x86_64.o", "crypto/modes/libcrypto-lib-cbc128.o", "crypto/modes/libcrypto-lib-ccm128.o", @@ -9363,6 +10859,8 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", + "crypto/modes/libfips-lib-aes-gcm-avx512.o", "crypto/modes/libfips-lib-aesni-gcm-x86_64.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", @@ -9372,7 +10870,8 @@ our %unified_info = ( "crypto/modes/libfips-lib-ghash-x86_64.o", "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", - "crypto/modes/libfips-lib-xts128.o" + "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o" ], "products" => { "lib" => [ @@ -9516,6 +11015,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rand/libfips-lib-rand_lib.o" ], @@ -9670,6 +11170,36 @@ our %unified_info = ( ] } }, + "crypto/slh_dsa" => { + "deps" => [ + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/sm2" => { "deps" => [ "crypto/sm2/libcrypto-lib-sm2_crypt.o", @@ -9743,6 +11273,38 @@ our %unified_info = ( ] } }, + "crypto/thread" => { + "deps" => [ + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/thread/arch" => { + "deps" => [ + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/ts" => { "deps" => [ "crypto/ts/libcrypto-lib-ts_asn1.o", @@ -9809,14 +11371,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -9825,12 +11395,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -9838,13 +11413,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -9862,6 +11444,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -9871,6 +11454,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -9898,6 +11482,7 @@ our %unified_info = ( "fuzz" => { "products" => { "bin" => [ + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -9908,13 +11493,31 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test" ] } }, "providers" => { "deps" => [ + "providers/endecode_test-bin-legacyprov.o", "providers/evp_extra_test-bin-legacyprov.o", "providers/libcrypto-lib-baseprov.o", "providers/libcrypto-lib-defltprov.o", @@ -9924,6 +11527,7 @@ our %unified_info = ( ], "products" => { "bin" => [ + "test/endecode_test", "test/evp_extra_test" ], "dso" => [ @@ -9975,8 +11579,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/der/libdefault-lib-der_rsa_sig.o", "providers/common/der/libdefault-lib-der_sm2_gen.o", @@ -9995,6 +11603,7 @@ our %unified_info = ( "providers/fips" => { "deps" => [ "providers/fips/fips-dso-fips_entry.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o" @@ -10038,6 +11647,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -10062,7 +11674,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -10159,7 +11777,10 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", - "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" + "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" ], "products" => { "lib" => [ @@ -10187,7 +11808,9 @@ our %unified_info = ( }, "providers/implementations/kdfs" => { "deps" => [ + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -10206,7 +11829,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", - "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" + "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" ], "products" => { "lib" => [ @@ -10218,13 +11842,22 @@ our %unified_info = ( }, "providers/implementations/kem" => { "deps" => [ + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", - "providers/implementations/kem/libfips-lib-rsa_kem.o" + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", + "providers/implementations/kem/libfips-lib-rsa_kem.o", + "providers/implementations/kem/libtemplate-lib-template_kem.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10236,19 +11869,29 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", - "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10276,18 +11919,18 @@ our %unified_info = ( }, "providers/implementations/rands" => { "deps" => [ - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o" ], "products" => { @@ -10316,13 +11959,31 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", - "providers/implementations/signature/libfips-lib-rsa_sig.o" + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", + "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/skeymgmt" => { + "deps" => [ + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o" ], "products" => { "lib" => [ @@ -10334,7 +11995,8 @@ our %unified_info = ( "providers/implementations/storemgmt" => { "deps" => [ "providers/implementations/storemgmt/libdefault-lib-file_store.o", - "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o" + "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", + "providers/implementations/storemgmt/libdefault-lib-winstore_store.o" ], "products" => { "lib" => [ @@ -10350,14 +12012,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -10373,32 +12036,107 @@ our %unified_info = ( "ssl/libssl-lib-t1_trce.o", "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", - "ssl/libssl-lib-tls_srp.o", - "ssl/libdefault-lib-s3_cbc.o", - "ssl/libfips-lib-s3_cbc.o" + "ssl/libssl-lib-tls_srp.o" ], "products" => { "lib" => [ - "libssl", - "providers/libdefault.a", - "providers/libfips.a" + "libssl" + ] + } + }, + "ssl/quic" => { + "deps" => [ + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, "ssl/record" => { "deps" => [ - "ssl/record/libssl-lib-dtls1_bitmap.o", "ssl/record/libssl-lib-rec_layer_d1.o", - "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/libssl-lib-rec_layer_s3.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "ssl/record/methods" => { + "deps" => [ + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/record/methods/libcommon-lib-tls_pad.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o", + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "products" => { "lib" => [ "libssl", - "providers/libcommon.a" + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "ssl/rio" => { + "deps" => [ + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, @@ -10436,9 +12174,40 @@ our %unified_info = ( "test/helpers/dtlstest-bin-ssltestlib.o", "test/helpers/endecode_test-bin-predefined_dhparams.o", "test/helpers/fatalerrtest-bin-ssltestlib.o", + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/helpers/pkcs12_api_test-bin-pkcs12.o", "test/helpers/pkcs12_format_test-bin-pkcs12.o", + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", "test/helpers/recordlentest-bin-ssltestlib.o", + "test/helpers/rpktest-bin-ssltestlib.o", "test/helpers/servername_test-bin-ssltestlib.o", + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/helpers/ssl_test-bin-handshake.o", "test/helpers/ssl_test-bin-handshake_srp.o", @@ -10447,7 +12216,8 @@ our %unified_info = ( "test/helpers/sslapitest-bin-ssltestlib.o", "test/helpers/sslbuffertest-bin-ssltestlib.o", "test/helpers/sslcorrupttest-bin-ssltestlib.o", - "test/helpers/tls13ccstest-bin-ssltestlib.o" + "test/helpers/tls13ccstest-bin-ssltestlib.o", + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" ], "products" => { "bin" => [ @@ -10465,16 +12235,37 @@ our %unified_info = ( "test/dtlstest", "test/endecode_test", "test/fatalerrtest", + "test/json_test", + "test/pkcs12_api_test", "test/pkcs12_format_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_radix_test", + "test/quic_srt_gen_test", + "test/quicapitest", + "test/quicfaultstest", "test/recordlentest", + "test/rpktest", "test/servername_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", "test/sslapitest", "test/sslbuffertest", "test/sslcorrupttest", - "test/tls13ccstest" + "test/tls13ccstest", + "test/tls13groupselection_test" + ] + } + }, + "test/radix" => { + "deps" => [ + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "products" => { + "bin" => [ + "test/quic_radix_test" ] } }, @@ -10486,6 +12277,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -10520,6 +12312,12 @@ our %unified_info = ( } }, "generate" => { + "OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], "apps/openssl.rc" => [ "util/mkrc.pl", "openssl" @@ -10534,6 +12332,19 @@ our %unified_info = ( "\"-H\"", "\$(APPS_OPENSSL)" ], + "builddata.pm" => [ + "util/mkinstallvars.pl", + "PREFIX=.", + "BINDIR=apps", + "APPLINKDIR=ms", + "LIBDIR=", + "INCLUDEDIR=include", + "\"INCLUDEDIR=\$(SRCDIR)/include\"", + "ENGINESDIR=engines", + "MODULESDIR=providers", + "\"VERSION=\$(VERSION)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"" + ], "crypto/aes/aes-586.S" => [ "crypto/aes/asm/aes-586.pl" ], @@ -10555,6 +12366,24 @@ our %unified_info = ( "crypto/aes/aes-ppc.s" => [ "crypto/aes/asm/aes-ppc.pl" ], + "crypto/aes/aes-riscv32-zkn.s" => [ + "crypto/aes/asm/aes-riscv32-zkn.pl" + ], + "crypto/aes/aes-riscv64-zkn.s" => [ + "crypto/aes/asm/aes-riscv64-zkn.pl" + ], + "crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvbb-zvkg-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkb-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkb-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkned.pl" + ], + "crypto/aes/aes-riscv64.s" => [ + "crypto/aes/asm/aes-riscv64.pl" + ], "crypto/aes/aes-s390x.S" => [ "crypto/aes/asm/aes-s390x.pl" ], @@ -10582,6 +12411,9 @@ our %unified_info = ( "crypto/aes/aesni-x86_64.s" => [ "crypto/aes/asm/aesni-x86_64.pl" ], + "crypto/aes/aesni-xts-avx512.s" => [ + "crypto/aes/asm/aesni-xts-avx512.pl" + ], "crypto/aes/aesp8-ppc.s" => [ "crypto/aes/asm/aesp8-ppc.pl" ], @@ -10594,12 +12426,18 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.S" => [ "crypto/aes/asm/bsaes-armv7.pl" ], + "crypto/aes/bsaes-armv8.S" => [ + "crypto/aes/asm/bsaes-armv8.pl" + ], "crypto/aes/bsaes-x86_64.s" => [ "crypto/aes/asm/bsaes-x86_64.pl" ], "crypto/aes/vpaes-armv8.S" => [ "crypto/aes/asm/vpaes-armv8.pl" ], + "crypto/aes/vpaes-loongarch64.S" => [ + "crypto/aes/asm/vpaes-loongarch64.pl" + ], "crypto/aes/vpaes-ppc.s" => [ "crypto/aes/asm/vpaes-ppc.pl" ], @@ -10660,15 +12498,33 @@ our %unified_info = ( "crypto/bn/ppc-mont.s" => [ "crypto/bn/asm/ppc-mont.pl" ], + "crypto/bn/ppc64-mont-fixed.s" => [ + "crypto/bn/asm/ppc64-mont-fixed.pl" + ], "crypto/bn/ppc64-mont.s" => [ "crypto/bn/asm/ppc64-mont.pl" ], + "crypto/bn/rsaz-2k-avx512.s" => [ + "crypto/bn/asm/rsaz-2k-avx512.pl" + ], + "crypto/bn/rsaz-2k-avxifma.s" => [ + "crypto/bn/asm/rsaz-2k-avxifma.pl" + ], + "crypto/bn/rsaz-3k-avx512.s" => [ + "crypto/bn/asm/rsaz-3k-avx512.pl" + ], + "crypto/bn/rsaz-3k-avxifma.s" => [ + "crypto/bn/asm/rsaz-3k-avxifma.pl" + ], + "crypto/bn/rsaz-4k-avx512.s" => [ + "crypto/bn/asm/rsaz-4k-avx512.pl" + ], + "crypto/bn/rsaz-4k-avxifma.s" => [ + "crypto/bn/asm/rsaz-4k-avxifma.pl" + ], "crypto/bn/rsaz-avx2.s" => [ "crypto/bn/asm/rsaz-avx2.pl" ], - "crypto/bn/rsaz-avx512.s" => [ - "crypto/bn/asm/rsaz-avx512.pl" - ], "crypto/bn/rsaz-x86_64.s" => [ "crypto/bn/asm/rsaz-x86_64.pl" ], @@ -10730,6 +12586,9 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.S" => [ "crypto/chacha/asm/chacha-armv4.pl" ], + "crypto/chacha/chacha-armv8-sve.S" => [ + "crypto/chacha/asm/chacha-armv8-sve.pl" + ], "crypto/chacha/chacha-armv8.S" => [ "crypto/chacha/asm/chacha-armv8.pl" ], @@ -10742,9 +12601,19 @@ our %unified_info = ( "crypto/chacha/chacha-ia64.s" => [ "crypto/chacha/chacha-ia64.S" ], + "crypto/chacha/chacha-loongarch64.S" => [ + "crypto/chacha/asm/chacha-loongarch64.pl" + ], "crypto/chacha/chacha-ppc.s" => [ "crypto/chacha/asm/chacha-ppc.pl" ], + "crypto/chacha/chacha-riscv64-v-zbb-zvkb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl", + "zvkb" + ], + "crypto/chacha/chacha-riscv64-v-zbb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl" + ], "crypto/chacha/chacha-s390x.S" => [ "crypto/chacha/asm/chacha-s390x.pl" ], @@ -10754,6 +12623,9 @@ our %unified_info = ( "crypto/chacha/chacha-x86_64.s" => [ "crypto/chacha/asm/chacha-x86_64.pl" ], + "crypto/chacha/chachap10-ppc.s" => [ + "crypto/chacha/asm/chachap10-ppc.pl" + ], "crypto/des/crypt586.S" => [ "crypto/des/asm/crypt586.pl" ], @@ -10766,6 +12638,9 @@ our %unified_info = ( "crypto/des/dest4-sparcv9.S" => [ "crypto/des/asm/dest4-sparcv9.pl" ], + "crypto/ec/ecp_nistp384-ppc64.s" => [ + "crypto/ec/asm/ecp_nistp384-ppc64.pl" + ], "crypto/ec/ecp_nistp521-ppc64.s" => [ "crypto/ec/asm/ecp_nistp521-ppc64.pl" ], @@ -10790,6 +12665,9 @@ our %unified_info = ( "crypto/ec/ecp_nistz256-x86_64.s" => [ "crypto/ec/asm/ecp_nistz256-x86_64.pl" ], + "crypto/ec/ecp_sm2p256-armv8.S" => [ + "crypto/ec/asm/ecp_sm2p256-armv8.pl" + ], "crypto/ec/x25519-ppc64.s" => [ "crypto/ec/asm/x25519-ppc64.pl" ], @@ -10799,18 +12677,39 @@ our %unified_info = ( "crypto/ia64cpuid.s" => [ "crypto/ia64cpuid.S" ], + "crypto/loongarch64cpuid.s" => [ + "crypto/loongarch64cpuid.pl" + ], "crypto/md5/md5-586.S" => [ "crypto/md5/asm/md5-586.pl" ], + "crypto/md5/md5-aarch64.S" => [ + "crypto/md5/asm/md5-aarch64.pl" + ], + "crypto/md5/md5-loongarch64.S" => [ + "crypto/md5/asm/md5-loongarch64.pl" + ], "crypto/md5/md5-sparcv9.S" => [ "crypto/md5/asm/md5-sparcv9.pl" ], "crypto/md5/md5-x86_64.s" => [ "crypto/md5/asm/md5-x86_64.pl" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.S" => [ + "crypto/modes/asm/aes-gcm-armv8-unroll8_64.pl" + ], "crypto/modes/aes-gcm-armv8_64.S" => [ "crypto/modes/asm/aes-gcm-armv8_64.pl" ], + "crypto/modes/aes-gcm-avx512.s" => [ + "crypto/modes/asm/aes-gcm-avx512.pl" + ], + "crypto/modes/aes-gcm-ppc.s" => [ + "crypto/modes/asm/aes-gcm-ppc.pl" + ], + "crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s" => [ + "crypto/modes/asm/aes-gcm-riscv64-zvkb-zvkg-zvkned.pl" + ], "crypto/modes/aesni-gcm-x86_64.s" => [ "crypto/modes/asm/aesni-gcm-x86_64.pl" ], @@ -10829,6 +12728,15 @@ our %unified_info = ( "crypto/modes/ghash-parisc.s" => [ "crypto/modes/asm/ghash-parisc.pl" ], + "crypto/modes/ghash-riscv64-zvkb-zvbc.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkb-zvbc.pl" + ], + "crypto/modes/ghash-riscv64-zvkg.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkg.pl" + ], + "crypto/modes/ghash-riscv64.s" => [ + "crypto/modes/asm/ghash-riscv64.pl" + ], "crypto/modes/ghash-s390x.S" => [ "crypto/modes/asm/ghash-s390x.pl" ], @@ -10847,6 +12755,9 @@ our %unified_info = ( "crypto/modes/ghashv8-armx.S" => [ "crypto/modes/asm/ghashv8-armx.pl" ], + "crypto/params_idx.c" => [ + "crypto/params_idx.c.in" + ], "crypto/pariscid.s" => [ "crypto/pariscid.pl" ], @@ -10907,6 +12818,12 @@ our %unified_info = ( "crypto/ripemd/rmd-586.S" => [ "crypto/ripemd/asm/rmd-586.pl" ], + "crypto/riscv32cpuid.s" => [ + "crypto/riscv32cpuid.pl" + ], + "crypto/riscv64cpuid.s" => [ + "crypto/riscv64cpuid.pl" + ], "crypto/s390xcpuid.S" => [ "crypto/s390xcpuid.pl" ], @@ -11015,6 +12932,9 @@ our %unified_info = ( "crypto/sha/sha256-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S" => [ + "crypto/sha/asm/sha256-riscv64-zvkb-zvknha_or_zvknhb.pl" + ], "crypto/sha/sha256-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -11051,6 +12971,9 @@ our %unified_info = ( "crypto/sha/sha512-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha512-riscv64-zvkb-zvknhb.S" => [ + "crypto/sha/asm/sha512-riscv64-zvkb-zvknhb.pl" + ], "crypto/sha/sha512-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -11063,6 +12986,24 @@ our %unified_info = ( "crypto/sha/sha512p8-ppc.s" => [ "crypto/sha/asm/sha512p8-ppc.pl" ], + "crypto/sm3/sm3-armv8.S" => [ + "crypto/sm3/asm/sm3-armv8.pl" + ], + "crypto/sm3/sm3-riscv64-zvksh.S" => [ + "crypto/sm3/asm/sm3-riscv64-zvksh.pl" + ], + "crypto/sm4/sm4-armv8.S" => [ + "crypto/sm4/asm/sm4-armv8.pl" + ], + "crypto/sm4/sm4-riscv64-zvksed.s" => [ + "crypto/sm4/asm/sm4-riscv64-zvksed.pl" + ], + "crypto/sm4/vpsm4-armv8.S" => [ + "crypto/sm4/asm/vpsm4-armv8.pl" + ], + "crypto/sm4/vpsm4_ex-armv8.S" => [ + "crypto/sm4/asm/vpsm4_ex-armv8.pl" + ], "crypto/uplink-ia64.s" => [ "ms/uplink-ia64.pl" ], @@ -11228,6 +13169,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -11369,6 +13313,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -11405,6 +13352,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -11420,6 +13370,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -11492,6 +13445,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -11558,6 +13514,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -11657,6 +13616,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -11795,6 +13760,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -11912,6 +13880,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -11999,6 +13973,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -12071,9 +14048,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -12089,12 +14072,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -12164,9 +14153,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -12176,12 +14174,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -12197,9 +14207,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -12224,6 +14240,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -12239,6 +14258,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -12275,6 +14297,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -12548,6 +14573,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -12587,6 +14615,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -12608,6 +14639,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -12722,6 +14756,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -12749,9 +14786,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -12767,6 +14816,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -12776,12 +14828,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -12800,12 +14858,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -12815,9 +14885,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -12830,9 +14906,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -12848,24 +14936,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -12878,6 +14987,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -12887,8 +15002,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -12908,6 +15023,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -12956,6 +15086,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -13022,6 +15155,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -13145,9 +15281,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -13163,6 +15305,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -13187,9 +15332,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -13223,6 +15377,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -13280,15 +15437,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -13298,6 +15467,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -13319,9 +15491,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -13337,6 +15515,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -13349,9 +15530,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -13382,9 +15560,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -13400,12 +15575,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -13460,6 +15689,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -13469,9 +15701,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -13619,6 +15848,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -13760,6 +15992,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -13796,6 +16031,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -13811,6 +16049,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -13883,6 +16124,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -13949,6 +16193,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -14048,6 +16295,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -14186,6 +16439,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -14303,6 +16559,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -14390,6 +16652,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -14462,9 +16727,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -14480,12 +16751,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -14555,9 +16832,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -14567,12 +16853,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -14588,9 +16886,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -14615,6 +16919,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -14630,6 +16937,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -14666,6 +16976,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -14939,6 +17252,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -14978,6 +17294,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -14999,6 +17318,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -15113,6 +17435,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -15140,9 +17465,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -15158,6 +17495,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -15167,12 +17507,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -15191,12 +17537,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -15206,9 +17564,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -15221,9 +17585,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -15239,24 +17615,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -15269,6 +17666,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -15278,8 +17681,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -15293,11 +17696,26 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], - "doc/man/man3/X509V3_get_d2i.3" => [ - "doc/man3/X509V3_get_d2i.pod" + "doc/man/man3/X509V3_get_d2i.3" => [ + "doc/man3/X509V3_get_d2i.pod" + ], + "doc/man/man3/X509V3_set_ctx.3" => [ + "doc/man3/X509V3_set_ctx.pod" + ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" ], - "doc/man/man3/X509V3_set_ctx.3" => [ - "doc/man3/X509V3_set_ctx.pod" + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" @@ -15347,6 +17765,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -15413,6 +17834,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -15536,9 +17960,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -15554,6 +17984,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -15578,9 +18011,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -15614,6 +18056,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -15671,15 +18116,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -15689,6 +18146,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -15710,9 +18170,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -15728,6 +18194,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -15740,9 +18209,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -15773,9 +18239,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -15791,12 +18254,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -15851,6 +18368,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -15860,9 +18380,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -15998,6 +18515,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc/man1/openssl-sess_id.pod.in" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in" ], @@ -16034,12 +18554,30 @@ our %unified_info = ( "engines/e_padlock-x86_64.s" => [ "engines/asm/e_padlock-x86_64.pl" ], + "exporters/OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], + "exporters/libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], + "exporters/libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "exporters/openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "include/crypto/bn_conf.h" => [ "include/crypto/bn_conf.h.in" ], "include/crypto/dso_conf.h" => [ "include/crypto/dso_conf.h.in" ], + "include/internal/param_names.h" => [ + "include/internal/param_names.h.in" + ], "include/openssl/asn1.h" => [ "include/openssl/asn1.h.in" ], @@ -16055,12 +18593,18 @@ our %unified_info = ( "include/openssl/cms.h" => [ "include/openssl/cms.h.in" ], + "include/openssl/comp.h" => [ + "include/openssl/comp.h.in" + ], "include/openssl/conf.h" => [ "include/openssl/conf.h.in" ], "include/openssl/configuration.h" => [ "include/openssl/configuration.h.in" ], + "include/openssl/core_names.h" => [ + "include/openssl/core_names.h.in" + ], "include/openssl/crmf.h" => [ "include/openssl/crmf.h.in" ], @@ -16109,16 +18653,37 @@ our %unified_info = ( "include/openssl/x509.h" => [ "include/openssl/x509.h.in" ], + "include/openssl/x509_acert.h" => [ + "include/openssl/x509_acert.h.in" + ], "include/openssl/x509_vfy.h" => [ "include/openssl/x509_vfy.h.in" ], "include/openssl/x509v3.h" => [ "include/openssl/x509v3.h.in" ], + "installdata.pm" => [ + "util/mkinstallvars.pl", + "\"PREFIX=\$(INSTALLTOP)\"", + "BINDIR=bin", + "\"LIBDIR=\$(LIBDIR)\"", + "\"libdir=\$(libdir)\"", + "INCLUDEDIR=include", + "APPLINKDIR=include/openssl", + "\"ENGINESDIR=\$(ENGINESDIR)\"", + "\"MODULESDIR=\$(MODULESDIR)\"", + "\"PKGCONFIGDIR=\$(PKGCONFIGDIR)\"", + "\"CMAKECONFIGDIR=\$(CMAKECONFIGDIR)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"", + "\"VERSION=\$(VERSION)\"" + ], "libcrypto.ld" => [ "util/libcrypto.num", "libcrypto" ], + "libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], "libcrypto.rc" => [ "util/mkrc.pl", "libcrypto" @@ -16127,10 +18692,16 @@ our %unified_info = ( "util/libssl.num", "libssl" ], + "libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], "libssl.rc" => [ "util/mkrc.pl", "libssl" ], + "openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/der_digests_gen.c.in" ], @@ -16143,9 +18714,15 @@ our %unified_info = ( "providers/common/der/der_ecx_gen.c" => [ "providers/common/der/der_ecx_gen.c.in" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/der_ml_dsa_gen.c.in" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/der_rsa_gen.c.in" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/der_slh_dsa_gen.c.in" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/der_sm2_gen.c.in" ], @@ -16164,9 +18741,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/include/prov/der_ecx.h.in" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/include/prov/der_ml_dsa.h.in" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/include/prov/der_rsa.h.in" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/include/prov/der_slh_dsa.h.in" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/include/prov/der_sm2.h.in" ], @@ -16216,6 +18799,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "buffer" ], + "test/buildtest_byteorder.c" => [ + "test/generate_buildtest.pl", + "byteorder" + ], "test/buildtest_camellia.c" => [ "test/generate_buildtest.pl", "camellia" @@ -16248,10 +18835,6 @@ our %unified_info = ( "test/generate_buildtest.pl", "core_dispatch" ], - "test/buildtest_core_names.c" => [ - "test/generate_buildtest.pl", - "core_names" - ], "test/buildtest_core_object.c" => [ "test/generate_buildtest.pl", "core_object" @@ -16284,6 +18867,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "e_os2" ], + "test/buildtest_e_ostime.c" => [ + "test/generate_buildtest.pl", + "e_ostime" + ], "test/buildtest_ebcdic.c" => [ "test/generate_buildtest.pl", "ebcdic" @@ -16320,6 +18907,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "hmac" ], + "test/buildtest_hpke.c" => [ + "test/generate_buildtest.pl", + "hpke" + ], "test/buildtest_http.c" => [ "test/generate_buildtest.pl", "http" @@ -16328,6 +18919,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "idea" ], + "test/buildtest_indicator.c" => [ + "test/generate_buildtest.pl", + "indicator" + ], "test/buildtest_kdf.c" => [ "test/generate_buildtest.pl", "kdf" @@ -16348,6 +18943,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "mdc2" ], + "test/buildtest_ml_kem.c" => [ + "test/generate_buildtest.pl", + "ml_kem" + ], "test/buildtest_modes.c" => [ "test/generate_buildtest.pl", "modes" @@ -16388,6 +18987,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "provider" ], + "test/buildtest_quic.c" => [ + "test/generate_buildtest.pl", + "quic" + ], "test/buildtest_rand.c" => [ "test/generate_buildtest.pl", "rand" @@ -16444,6 +19047,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "symhacks" ], + "test/buildtest_thread.c" => [ + "test/generate_buildtest.pl", + "thread" + ], "test/buildtest_tls1.c" => [ "test/generate_buildtest.pl", "tls1" @@ -16524,6 +19131,7 @@ our %unified_info = ( "doc/html/man1/openssl-s_server.html", "doc/html/man1/openssl-s_time.html", "doc/html/man1/openssl-sess_id.html", + "doc/html/man1/openssl-skeyutl.html", "doc/html/man1/openssl-smime.html", "doc/html/man1/openssl-speed.html", "doc/html/man1/openssl-spkac.html", @@ -16573,6 +19181,7 @@ our %unified_info = ( "doc/html/man3/BIO_find_type.html", "doc/html/man3/BIO_get_data.html", "doc/html/man3/BIO_get_ex_new_index.html", + "doc/html/man3/BIO_get_rpoll_descriptor.html", "doc/html/man3/BIO_meth_new.html", "doc/html/man3/BIO_new.html", "doc/html/man3/BIO_new_CMS.html", @@ -16585,11 +19194,13 @@ our %unified_info = ( "doc/html/man3/BIO_s_connect.html", "doc/html/man3/BIO_s_core.html", "doc/html/man3/BIO_s_datagram.html", + "doc/html/man3/BIO_s_dgram_pair.html", "doc/html/man3/BIO_s_fd.html", "doc/html/man3/BIO_s_file.html", "doc/html/man3/BIO_s_mem.html", "doc/html/man3/BIO_s_null.html", "doc/html/man3/BIO_s_socket.html", + "doc/html/man3/BIO_sendmmsg.html", "doc/html/man3/BIO_set_callback.html", "doc/html/man3/BIO_should_retry.html", "doc/html/man3/BIO_socket_wait.html", @@ -16614,6 +19225,7 @@ our %unified_info = ( "doc/html/man3/BN_swap.html", "doc/html/man3/BN_zero.html", "doc/html/man3/BUF_MEM_new.html", + "doc/html/man3/CMAC_CTX.html", "doc/html/man3/CMS_EncryptedData_decrypt.html", "doc/html/man3/CMS_EncryptedData_encrypt.html", "doc/html/man3/CMS_EnvelopedData_create.html", @@ -16636,6 +19248,7 @@ our %unified_info = ( "doc/html/man3/CMS_uncompress.html", "doc/html/man3/CMS_verify.html", "doc/html/man3/CMS_verify_receipt.html", + "doc/html/man3/COMP_CTX_new.html", "doc/html/man3/CONF_modules_free.html", "doc/html/man3/CONF_modules_load_file.html", "doc/html/man3/CRYPTO_THREAD_run_once.html", @@ -16669,6 +19282,8 @@ our %unified_info = ( "doc/html/man3/DSA_size.html", "doc/html/man3/DTLS_get_data_mtu.html", "doc/html/man3/DTLS_set_timer_cb.html", + "doc/html/man3/DTLSv1_get_timeout.html", + "doc/html/man3/DTLSv1_handle_timeout.html", "doc/html/man3/DTLSv1_listen.html", "doc/html/man3/ECDSA_SIG_new.html", "doc/html/man3/ECDSA_sign.html", @@ -16715,6 +19330,7 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_ctrl.html", "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html", "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html", + "doc/html/man3/EVP_PKEY_CTX_get_algor.html", "doc/html/man3/EVP_PKEY_CTX_new.html", "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html", "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html", @@ -16754,6 +19370,8 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_verify_recover.html", "doc/html/man3/EVP_RAND.html", "doc/html/man3/EVP_SIGNATURE.html", + "doc/html/man3/EVP_SKEY.html", + "doc/html/man3/EVP_SKEYMGMT.html", "doc/html/man3/EVP_SealInit.html", "doc/html/man3/EVP_SignInit.html", "doc/html/man3/EVP_VerifyInit.html", @@ -16783,6 +19401,7 @@ our %unified_info = ( "doc/html/man3/EVP_sm3.html", "doc/html/man3/EVP_sm4_cbc.html", "doc/html/man3/EVP_whirlpool.html", + "doc/html/man3/GENERAL_NAME.html", "doc/html/man3/HMAC.html", "doc/html/man3/MD5.html", "doc/html/man3/MDC2_Init.html", @@ -16807,14 +19426,18 @@ our %unified_info = ( "doc/html/man3/OPENSSL_init_ssl.html", "doc/html/man3/OPENSSL_instrument_bus.html", "doc/html/man3/OPENSSL_load_builtin_modules.html", + "doc/html/man3/OPENSSL_load_u16_le.html", "doc/html/man3/OPENSSL_malloc.html", + "doc/html/man3/OPENSSL_riscvcap.html", "doc/html/man3/OPENSSL_s390xcap.html", "doc/html/man3/OPENSSL_secure_malloc.html", "doc/html/man3/OPENSSL_strcasecmp.html", "doc/html/man3/OSSL_ALGORITHM.html", "doc/html/man3/OSSL_CALLBACK.html", + "doc/html/man3/OSSL_CMP_ATAV_set0.html", "doc/html/man3/OSSL_CMP_CTX_new.html", "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html", + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html", "doc/html/man3/OSSL_CMP_ITAV_set0.html", "doc/html/man3/OSSL_CMP_MSG_get0_header.html", "doc/html/man3/OSSL_CMP_MSG_http_perform.html", @@ -16838,18 +19461,27 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_CTX.html", "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html", "doc/html/man3/OSSL_ENCODER_to_bio.html", + "doc/html/man3/OSSL_ERR_STATE_save.html", "doc/html/man3/OSSL_ESS_check_signing_certs.html", + "doc/html/man3/OSSL_GENERAL_NAMES_print.html", + "doc/html/man3/OSSL_HPKE_CTX_new.html", "doc/html/man3/OSSL_HTTP_REQ_CTX.html", "doc/html/man3/OSSL_HTTP_parse_url.html", "doc/html/man3/OSSL_HTTP_transfer.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html", + "doc/html/man3/OSSL_INDICATOR_set_callback.html", "doc/html/man3/OSSL_ITEM.html", "doc/html/man3/OSSL_LIB_CTX.html", + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html", "doc/html/man3/OSSL_PARAM.html", "doc/html/man3/OSSL_PARAM_BLD.html", "doc/html/man3/OSSL_PARAM_allocate_from_text.html", "doc/html/man3/OSSL_PARAM_dup.html", "doc/html/man3/OSSL_PARAM_int.html", + "doc/html/man3/OSSL_PARAM_print_to_bio.html", "doc/html/man3/OSSL_PROVIDER.html", + "doc/html/man3/OSSL_QUIC_client_method.html", "doc/html/man3/OSSL_SELF_TEST_new.html", "doc/html/man3/OSSL_SELF_TEST_set_callback.html", "doc/html/man3/OSSL_STORE_INFO.html", @@ -16858,11 +19490,13 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_attach.html", "doc/html/man3/OSSL_STORE_expect.html", "doc/html/man3/OSSL_STORE_open.html", + "doc/html/man3/OSSL_sleep.html", "doc/html/man3/OSSL_trace_enabled.html", "doc/html/man3/OSSL_trace_get_category_num.html", "doc/html/man3/OSSL_trace_set_channel.html", "doc/html/man3/OpenSSL_add_all_algorithms.html", "doc/html/man3/OpenSSL_version.html", + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html", "doc/html/man3/PEM_X509_INFO_read_bio_ex.html", "doc/html/man3/PEM_bytes_read_bio.html", "doc/html/man3/PEM_read.html", @@ -16875,6 +19509,7 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_create_cert.html", "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html", "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html", + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html", "doc/html/man3/PKCS12_add1_attr_by_NID.html", "doc/html/man3/PKCS12_add_CSPName_asc.html", "doc/html/man3/PKCS12_add_cert.html", @@ -16966,6 +19601,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_sess_set_get_cb.html", "doc/html/man3/SSL_CTX_sessions.html", "doc/html/man3/SSL_CTX_set0_CA_list.html", + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html", "doc/html/man3/SSL_CTX_set1_curves.html", "doc/html/man3/SSL_CTX_set1_sigalgs.html", "doc/html/man3/SSL_CTX_set1_verify_cert_store.html", @@ -16979,6 +19615,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_ct_validation_callback.html", "doc/html/man3/SSL_CTX_set_ctlog_list_file.html", "doc/html/man3/SSL_CTX_set_default_passwd_cb.html", + "doc/html/man3/SSL_CTX_set_domain_flags.html", "doc/html/man3/SSL_CTX_set_generate_session_id.html", "doc/html/man3/SSL_CTX_set_info_callback.html", "doc/html/man3/SSL_CTX_set_keylog_callback.html", @@ -16986,6 +19623,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_min_proto_version.html", "doc/html/man3/SSL_CTX_set_mode.html", "doc/html/man3/SSL_CTX_set_msg_callback.html", + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html", "doc/html/man3/SSL_CTX_set_num_tickets.html", "doc/html/man3/SSL_CTX_set_options.html", "doc/html/man3/SSL_CTX_set_psk_client_callback.html", @@ -17024,6 +19662,7 @@ our %unified_info = ( "doc/html/man3/SSL_SESSION_print.html", "doc/html/man3/SSL_SESSION_set1_id.html", "doc/html/man3/SSL_accept.html", + "doc/html/man3/SSL_accept_stream.html", "doc/html/man3/SSL_alert_type_string.html", "doc/html/man3/SSL_alloc_buffers.html", "doc/html/man3/SSL_check_chain.html", @@ -17033,59 +19672,90 @@ our %unified_info = ( "doc/html/man3/SSL_export_keying_material.html", "doc/html/man3/SSL_extension_supported.html", "doc/html/man3/SSL_free.html", + "doc/html/man3/SSL_get0_connection.html", + "doc/html/man3/SSL_get0_group_name.html", + "doc/html/man3/SSL_get0_peer_rpk.html", "doc/html/man3/SSL_get0_peer_scts.html", + "doc/html/man3/SSL_get1_builtin_sigalgs.html", "doc/html/man3/SSL_get_SSL_CTX.html", "doc/html/man3/SSL_get_all_async_fds.html", "doc/html/man3/SSL_get_certificate.html", "doc/html/man3/SSL_get_ciphers.html", "doc/html/man3/SSL_get_client_random.html", + "doc/html/man3/SSL_get_conn_close_info.html", "doc/html/man3/SSL_get_current_cipher.html", "doc/html/man3/SSL_get_default_timeout.html", "doc/html/man3/SSL_get_error.html", + "doc/html/man3/SSL_get_event_timeout.html", "doc/html/man3/SSL_get_extms_support.html", "doc/html/man3/SSL_get_fd.html", + "doc/html/man3/SSL_get_handshake_rtt.html", "doc/html/man3/SSL_get_peer_cert_chain.html", "doc/html/man3/SSL_get_peer_certificate.html", "doc/html/man3/SSL_get_peer_signature_nid.html", "doc/html/man3/SSL_get_peer_tmp_key.html", "doc/html/man3/SSL_get_psk_identity.html", "doc/html/man3/SSL_get_rbio.html", + "doc/html/man3/SSL_get_rpoll_descriptor.html", "doc/html/man3/SSL_get_session.html", "doc/html/man3/SSL_get_shared_sigalgs.html", + "doc/html/man3/SSL_get_stream_id.html", + "doc/html/man3/SSL_get_stream_read_state.html", + "doc/html/man3/SSL_get_value_uint.html", "doc/html/man3/SSL_get_verify_result.html", "doc/html/man3/SSL_get_version.html", "doc/html/man3/SSL_group_to_name.html", + "doc/html/man3/SSL_handle_events.html", "doc/html/man3/SSL_in_init.html", + "doc/html/man3/SSL_inject_net_dgram.html", "doc/html/man3/SSL_key_update.html", "doc/html/man3/SSL_library_init.html", "doc/html/man3/SSL_load_client_CA_file.html", "doc/html/man3/SSL_new.html", + "doc/html/man3/SSL_new_domain.html", + "doc/html/man3/SSL_new_listener.html", + "doc/html/man3/SSL_new_stream.html", "doc/html/man3/SSL_pending.html", + "doc/html/man3/SSL_poll.html", "doc/html/man3/SSL_read.html", "doc/html/man3/SSL_read_early_data.html", "doc/html/man3/SSL_rstate_string.html", "doc/html/man3/SSL_session_reused.html", "doc/html/man3/SSL_set1_host.html", + "doc/html/man3/SSL_set1_initial_peer_addr.html", + "doc/html/man3/SSL_set1_server_cert_type.html", "doc/html/man3/SSL_set_async_callback.html", "doc/html/man3/SSL_set_bio.html", + "doc/html/man3/SSL_set_blocking_mode.html", "doc/html/man3/SSL_set_connect_state.html", + "doc/html/man3/SSL_set_default_stream_mode.html", "doc/html/man3/SSL_set_fd.html", + "doc/html/man3/SSL_set_incoming_stream_policy.html", + "doc/html/man3/SSL_set_quic_tls_cbs.html", "doc/html/man3/SSL_set_retry_verify.html", "doc/html/man3/SSL_set_session.html", + "doc/html/man3/SSL_set_session_secret_cb.html", "doc/html/man3/SSL_set_shutdown.html", "doc/html/man3/SSL_set_verify_result.html", "doc/html/man3/SSL_shutdown.html", "doc/html/man3/SSL_state_string.html", + "doc/html/man3/SSL_stream_conclude.html", + "doc/html/man3/SSL_stream_reset.html", "doc/html/man3/SSL_want.html", "doc/html/man3/SSL_write.html", "doc/html/man3/TS_RESP_CTX_new.html", - "doc/html/man3/TS_VERIFY_CTX_set_certs.html", + "doc/html/man3/TS_VERIFY_CTX.html", "doc/html/man3/UI_STRING.html", "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", + "doc/html/man3/X509_ACERT_add1_attr.html", + "doc/html/man3/X509_ACERT_add_attr_nconf.html", + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html", + "doc/html/man3/X509_ACERT_get_attr.html", + "doc/html/man3/X509_ACERT_print_ex.html", "doc/html/man3/X509_ALGOR_dup.html", "doc/html/man3/X509_ATTRIBUTE.html", "doc/html/man3/X509_CRL_get0_by_serial.html", @@ -17102,6 +19772,7 @@ our %unified_info = ( "doc/html/man3/X509_REQ_get_attr.html", "doc/html/man3/X509_REQ_get_extensions.html", "doc/html/man3/X509_SIG_get0.html", + "doc/html/man3/X509_STORE_CTX_get_by_subject.html", "doc/html/man3/X509_STORE_CTX_get_error.html", "doc/html/man3/X509_STORE_CTX_new.html", "doc/html/man3/X509_STORE_CTX_set_verify_cb.html", @@ -17124,6 +19795,7 @@ our %unified_info = ( "doc/html/man3/X509_get0_notBefore.html", "doc/html/man3/X509_get0_signature.html", "doc/html/man3/X509_get0_uids.html", + "doc/html/man3/X509_get_default_cert_file.html", "doc/html/man3/X509_get_extension_flags.html", "doc/html/man3/X509_get_pubkey.html", "doc/html/man3/X509_get_serialNumber.html", @@ -17169,12 +19841,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-RC5.html", "doc/html/man7/EVP_CIPHER-SEED.html", "doc/html/man7/EVP_CIPHER-SM4.html", + "doc/html/man7/EVP_KDF-ARGON2.html", "doc/html/man7/EVP_KDF-HKDF.html", + "doc/html/man7/EVP_KDF-HMAC-DRBG.html", "doc/html/man7/EVP_KDF-KB.html", "doc/html/man7/EVP_KDF-KRB5KDF.html", "doc/html/man7/EVP_KDF-PBKDF1.html", "doc/html/man7/EVP_KDF-PBKDF2.html", "doc/html/man7/EVP_KDF-PKCS12KDF.html", + "doc/html/man7/EVP_KDF-PVKKDF.html", "doc/html/man7/EVP_KDF-SCRYPT.html", "doc/html/man7/EVP_KDF-SS.html", "doc/html/man7/EVP_KDF-SSHKDF.html", @@ -17183,7 +19858,10 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X942-ASN1.html", "doc/html/man7/EVP_KDF-X942-CONCAT.html", "doc/html/man7/EVP_KDF-X963.html", + "doc/html/man7/EVP_KEM-EC.html", + "doc/html/man7/EVP_KEM-ML-KEM.html", "doc/html/man7/EVP_KEM-RSA.html", + "doc/html/man7/EVP_KEM-X25519.html", "doc/html/man7/EVP_KEYEXCH-DH.html", "doc/html/man7/EVP_KEYEXCH-ECDH.html", "doc/html/man7/EVP_KEYEXCH-X25519.html", @@ -17195,6 +19873,7 @@ our %unified_info = ( "doc/html/man7/EVP_MAC-Poly1305.html", "doc/html/man7/EVP_MAC-Siphash.html", "doc/html/man7/EVP_MD-BLAKE2.html", + "doc/html/man7/EVP_MD-KECCAK.html", "doc/html/man7/EVP_MD-MD2.html", "doc/html/man7/EVP_MD-MD4.html", "doc/html/man7/EVP_MD-MD5-SHA1.html", @@ -17214,12 +19893,17 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-EC.html", "doc/html/man7/EVP_PKEY-FFC.html", "doc/html/man7/EVP_PKEY-HMAC.html", + "doc/html/man7/EVP_PKEY-ML-DSA.html", + "doc/html/man7/EVP_PKEY-ML-KEM.html", "doc/html/man7/EVP_PKEY-RSA.html", + "doc/html/man7/EVP_PKEY-SLH-DSA.html", "doc/html/man7/EVP_PKEY-SM2.html", "doc/html/man7/EVP_PKEY-X25519.html", + "doc/html/man7/EVP_RAND-CRNG-TEST.html", "doc/html/man7/EVP_RAND-CTR-DRBG.html", "doc/html/man7/EVP_RAND-HASH-DRBG.html", "doc/html/man7/EVP_RAND-HMAC-DRBG.html", + "doc/html/man7/EVP_RAND-JITTER.html", "doc/html/man7/EVP_RAND-SEED-SRC.html", "doc/html/man7/EVP_RAND-TEST-RAND.html", "doc/html/man7/EVP_RAND.html", @@ -17227,17 +19911,19 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-ECDSA.html", "doc/html/man7/EVP_SIGNATURE-ED25519.html", "doc/html/man7/EVP_SIGNATURE-HMAC.html", + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html", "doc/html/man7/EVP_SIGNATURE-RSA.html", + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html", "doc/html/man7/OSSL_PROVIDER-FIPS.html", "doc/html/man7/OSSL_PROVIDER-base.html", "doc/html/man7/OSSL_PROVIDER-default.html", "doc/html/man7/OSSL_PROVIDER-legacy.html", "doc/html/man7/OSSL_PROVIDER-null.html", + "doc/html/man7/OSSL_STORE-winstore.html", "doc/html/man7/RAND.html", "doc/html/man7/RSA-PSS.html", "doc/html/man7/X25519.html", "doc/html/man7/bio.html", - "doc/html/man7/crypto.html", "doc/html/man7/ct.html", "doc/html/man7/des_modes.html", "doc/html/man7/evp.html", @@ -17248,14 +19934,31 @@ our %unified_info = ( "doc/html/man7/life_cycle-mac.html", "doc/html/man7/life_cycle-pkey.html", "doc/html/man7/life_cycle-rand.html", - "doc/html/man7/migration_guide.html", "doc/html/man7/openssl-core.h.html", "doc/html/man7/openssl-core_dispatch.h.html", "doc/html/man7/openssl-core_names.h.html", "doc/html/man7/openssl-env.html", "doc/html/man7/openssl-glossary.html", + "doc/html/man7/openssl-qlog.html", + "doc/html/man7/openssl-quic-concurrency.html", + "doc/html/man7/openssl-quic.html", "doc/html/man7/openssl-threads.html", "doc/html/man7/openssl_user_macros.html", + "doc/html/man7/ossl-guide-introduction.html", + "doc/html/man7/ossl-guide-libcrypto-introduction.html", + "doc/html/man7/ossl-guide-libraries-introduction.html", + "doc/html/man7/ossl-guide-libssl-introduction.html", + "doc/html/man7/ossl-guide-migration.html", + "doc/html/man7/ossl-guide-quic-client-block.html", + "doc/html/man7/ossl-guide-quic-client-non-block.html", + "doc/html/man7/ossl-guide-quic-introduction.html", + "doc/html/man7/ossl-guide-quic-multi-stream.html", + "doc/html/man7/ossl-guide-quic-server-block.html", + "doc/html/man7/ossl-guide-quic-server-non-block.html", + "doc/html/man7/ossl-guide-tls-client-block.html", + "doc/html/man7/ossl-guide-tls-client-non-block.html", + "doc/html/man7/ossl-guide-tls-introduction.html", + "doc/html/man7/ossl-guide-tls-server-block.html", "doc/html/man7/ossl_store-file.html", "doc/html/man7/ossl_store.html", "doc/html/man7/passphrase-encoding.html", @@ -17274,10 +19977,10 @@ our %unified_info = ( "doc/html/man7/provider-object.html", "doc/html/man7/provider-rand.html", "doc/html/man7/provider-signature.html", + "doc/html/man7/provider-skeymgmt.html", "doc/html/man7/provider-storemgmt.html", "doc/html/man7/provider.html", "doc/html/man7/proxy-certificates.html", - "doc/html/man7/ssl.html", "doc/html/man7/x509.html" ] }, @@ -17292,12 +19995,21 @@ our %unified_info = ( ] }, "includes" => { + "OpenSSLConfig.cmake" => [ + "." + ], + "OpenSSLConfigVersion.cmake" => [ + "." + ], "apps/asn1parse.o" => [ "apps" ], "apps/ca.o" => [ "apps" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps" + ], "apps/ciphers.o" => [ "apps" ], @@ -17524,6 +20236,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps" + ], "apps/openssl-bin-smime.o" => [ "apps" ], @@ -17611,6 +20326,9 @@ our %unified_info = ( "apps/sess_id.o" => [ "apps" ], + "apps/skeyutl.o" => [ + "apps" + ], "apps/smime.o" => [ "apps" ], @@ -17662,6 +20380,12 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.o" => [ "crypto" ], + "crypto/aes/vpaes-armv8.o" => [ + "crypto" + ], + "crypto/aes/vpaes-loongarch64.o" => [ + "crypto" + ], "crypto/arm64cpuid.o" => [ "crypto" ], @@ -17713,9 +20437,15 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.o" => [ "crypto" ], + "crypto/chacha/chacha-armv8-sve.o" => [ + "crypto" + ], "crypto/chacha/chacha-armv8.o" => [ "crypto" ], + "crypto/chacha/chacha-loongarch64.o" => [ + "crypto" + ], "crypto/chacha/chacha-s390x.o" => [ "crypto" ], @@ -17740,15 +20470,27 @@ our %unified_info = ( "crypto/ec/ecp_s390x_nistp.o" => [ "crypto" ], + "crypto/ec/ecp_sm2p256-armv8.o" => [ + "crypto" + ], + "crypto/ec/ecx_key.o" => [ + "crypto" + ], "crypto/ec/ecx_meth.o" => [ "crypto" ], "crypto/ec/ecx_s390x.o" => [ "crypto" ], + "crypto/ec/libcrypto-lib-ecx_key.o" => [ + "crypto" + ], "crypto/ec/libcrypto-lib-ecx_meth.o" => [ "crypto" ], + "crypto/ec/libfips-lib-ecx_key.o" => [ + "crypto" + ], "crypto/evp/e_aes.o" => [ "crypto", "crypto/modes" @@ -17820,9 +20562,18 @@ our %unified_info = ( "crypto/libfips-lib-cpuid.o" => [ "." ], + "crypto/md5/md5-aarch64.o" => [ + "crypto" + ], + "crypto/md5/md5-loongarch64.o" => [ + "crypto" + ], "crypto/md5/md5-sparcv9.o" => [ "crypto" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.o" => [ + "crypto" + ], "crypto/modes/aes-gcm-armv8_64.o" => [ "crypto" ], @@ -17847,6 +20598,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-gcm128.o" => [ "crypto" ], + "crypto/params_idx.c" => [ + "util/perl" + ], "crypto/poly1305/poly1305-armv4.o" => [ "crypto" ], @@ -17868,6 +20622,9 @@ our %unified_info = ( "crypto/sha/keccak1600-armv4.o" => [ "crypto" ], + "crypto/sha/keccak1600-armv8.o" => [ + "crypto" + ], "crypto/sha/sha1-armv4-large.o" => [ "crypto" ], @@ -17913,6 +20670,18 @@ our %unified_info = ( "crypto/sha/sha512-sparcv9.o" => [ "crypto" ], + "crypto/sm3/sm3-armv8.o" => [ + "crypto" + ], + "crypto/sm4/sm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4_ex-armv8.o" => [ + "crypto" + ], "doc/man1/openssl-asn1parse.pod" => [ "doc" ], @@ -18045,6 +20814,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc" + ], "doc/man1/openssl-smime.pod" => [ "doc" ], @@ -18072,6 +20844,24 @@ our %unified_info = ( "doc/man1/openssl-x509.pod" => [ "doc" ], + "exporters/OpenSSLConfig.cmake" => [ + "." + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "." + ], + "exporters/libcrypto.pc" => [ + "." + ], + "exporters/libssl.pc" => [ + "." + ], + "exporters/openssl.pc" => [ + "." + ], + "fuzz/acert-test" => [ + "include" + ], "fuzz/asn1-test" => [ "include" ], @@ -18102,12 +20892,69 @@ our %unified_info = ( "fuzz/ct-test" => [ "include" ], + "fuzz/decoder-test" => [ + "include" + ], + "fuzz/dtlsclient-test" => [ + "include" + ], + "fuzz/dtlsserver-test" => [ + "include" + ], + "fuzz/hashtable-test" => [ + "include" + ], + "fuzz/ml-dsa-test" => [ + "include" + ], + "fuzz/ml-kem-test" => [ + "include" + ], + "fuzz/pem-test" => [ + "include" + ], + "fuzz/provider-test" => [ + "include" + ], + "fuzz/punycode-test" => [ + "include" + ], + "fuzz/quic-client-test" => [ + "include" + ], + "fuzz/quic-lcidm-test" => [ + "include" + ], + "fuzz/quic-rcidm-test" => [ + "include" + ], + "fuzz/quic-server-test" => [ + "include" + ], + "fuzz/quic-srtm-test" => [ + "include" + ], "fuzz/server-test" => [ "include" ], + "fuzz/slh-dsa-test" => [ + "include" + ], + "fuzz/smime-test" => [ + "include" + ], + "fuzz/v3name-test" => [ + "include" + ], "fuzz/x509-test" => [ "include" ], + "include/internal/param_names.h" => [ + "util/perl" + ], + "include/openssl/core_names.h" => [ + "util/perl" + ], "libcrypto" => [ ".", "include", @@ -18118,6 +20965,9 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libcrypto.pc" => [ + "." + ], "libcrypto.rc" => [ "." ], @@ -18129,9 +20979,15 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libssl.pc" => [ + "." + ], "libssl.rc" => [ "." ], + "openssl.pc" => [ + "." + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der" ], @@ -18171,6 +21027,15 @@ our %unified_info = ( "providers/common/der/der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der" ], @@ -18183,6 +21048,15 @@ our %unified_info = ( "providers/common/der/der_rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der" ], @@ -18228,12 +21102,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov" ], @@ -18264,9 +21150,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der" ], @@ -18309,9 +21201,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18324,12 +21222,24 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18342,28 +21252,39 @@ our %unified_info = ( "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libdefault.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libfips.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/liblegacy.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" + ], + "providers/libtemplate.a" => [ + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" ], "test/aborttest" => [ "include", @@ -18432,6 +21353,14 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_addr_test" => [ + "include", + "apps/include" + ], + "test/bio_base64_test" => [ + "include", + "apps/include" + ], "test/bio_callback_test" => [ "include", "apps/include" @@ -18440,6 +21369,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_dgram_test" => [ + "include", + "apps/include", + "." + ], "test/bio_enc_test" => [ "include", "apps/include" @@ -18448,6 +21382,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_meth_test" => [ + "include", + "apps/include" + ], "test/bio_prefix_text" => [ ".", "include", @@ -18461,6 +21399,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_tfo_test" => [ + "include", + "apps/include", + "." + ], "test/bioprinttest" => [ "include", "apps/include" @@ -18475,6 +21418,9 @@ our %unified_info = ( "include", "apps/include" ], + "test/build_wincrypt_test" => [ + "include" + ], "test/buildtest_c_aes" => [ "include" ], @@ -18490,6 +21436,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => [ "include" ], + "test/buildtest_c_byteorder" => [ + "include" + ], "test/buildtest_c_camellia" => [ "include" ], @@ -18514,9 +21463,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => [ "include" ], - "test/buildtest_c_core_names" => [ - "include" - ], "test/buildtest_c_core_object" => [ "include" ], @@ -18541,6 +21487,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => [ "include" ], + "test/buildtest_c_e_ostime" => [ + "include" + ], "test/buildtest_c_ebcdic" => [ "include" ], @@ -18568,12 +21517,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => [ "include" ], + "test/buildtest_c_hpke" => [ + "include" + ], "test/buildtest_c_http" => [ "include" ], "test/buildtest_c_idea" => [ "include" ], + "test/buildtest_c_indicator" => [ + "include" + ], "test/buildtest_c_kdf" => [ "include" ], @@ -18589,6 +21544,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => [ "include" ], + "test/buildtest_c_ml_kem" => [ + "include" + ], "test/buildtest_c_modes" => [ "include" ], @@ -18619,6 +21577,9 @@ our %unified_info = ( "test/buildtest_c_provider" => [ "include" ], + "test/buildtest_c_quic" => [ + "include" + ], "test/buildtest_c_rand" => [ "include" ], @@ -18661,6 +21622,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => [ "include" ], + "test/buildtest_c_thread" => [ + "include" + ], "test/buildtest_c_tls1" => [ "include" ], @@ -18676,10 +21640,24 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => [ "include" ], + "test/byteorder_test" => [ + "include", + "apps/include" + ], + "test/ca_internals_test" => [ + ".", + "include", + "apps/include" + ], "test/casttest" => [ "include", "apps/include" ], + "test/cert_comp_test" => [ + "include", + "apps/include", + "." + ], "test/chacha_internal_test" => [ ".", "include", @@ -18803,6 +21781,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/decoder_propq_test" => [ + ".", + "include", + "apps/include" + ], "test/defltfips_test" => [ "include", "apps/include" @@ -18818,7 +21801,8 @@ our %unified_info = ( "test/drbgtest" => [ "include", "apps/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "test/dsa_no_digest_size_test" => [ "include", @@ -18861,7 +21845,9 @@ our %unified_info = ( "test/endecode_test" => [ ".", "include", - "apps/include" + "apps/include", + "providers/common/include", + "providers/implementations/include" ], "test/endecoder_legacy_test" => [ ".", @@ -18906,6 +21892,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_pkey_dhkem_test" => [ + "include", + "apps/include" + ], "test/evp_pkey_dparams_test" => [ "include", "apps/include" @@ -18914,10 +21904,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_skey_test" => [ + "include", + "apps/include" + ], "test/evp_test" => [ "include", "apps/include" ], + "test/evp_xof_test" => [ + "include", + "apps/include" + ], "test/exdatatest" => [ "include", "apps/include" @@ -19018,22 +22016,62 @@ our %unified_info = ( ".", "include" ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/pkcs12.o" => [ ".", "include" ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + ".", + "include" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ ".", "include" ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/ssl_test-bin-handshake.o" => [ ".", "include" @@ -19067,6 +22105,10 @@ our %unified_info = ( ".", "include" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/hexstr_test" => [ ".", "include", @@ -19076,6 +22118,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/hpke_test" => [ + "include", + "apps/include" + ], "test/http_test" => [ "include", "apps/include" @@ -19088,6 +22134,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/json_test" => [ + "include", + "apps/include" + ], "test/keymgmt_internal_test" => [ ".", "include", @@ -19102,6 +22152,10 @@ our %unified_info = ( "apps/include", "." ], + "test/list_test" => [ + "include", + "apps/include" + ], "test/localetest" => [ "include", "apps/include" @@ -19115,10 +22169,27 @@ our %unified_info = ( "include", "apps/include" ], + "test/membio_test" => [ + "include", + "apps/include", + "." + ], "test/memleaktest" => [ "include", "apps/include" ], + "test/ml_dsa_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_evp_extra_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_internal_test" => [ + "include", + "apps/include" + ], "test/modes_internal_test" => [ ".", "include", @@ -19153,6 +22224,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pairwise_fail_test" => [ + "include", + "apps/include" + ], "test/param_build_test" => [ "include", "apps/include" @@ -19186,6 +22261,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pkcs12_api_test" => [ + "include", + "apps/include" + ], "test/pkcs12_format_test" => [ "include", "apps/include" @@ -19207,6 +22286,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/priority_queue_test" => [ + "include", + "apps/include" + ], "test/property_test" => [ ".", "include", @@ -19220,6 +22303,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/provider_default_search_path_test" => [ + "include", + "apps/include" + ], "test/provider_fallback_test" => [ "include", "apps/include" @@ -19246,6 +22333,97 @@ our %unified_info = ( "include", "apps/include" ], + "test/quic_ackm_test" => [ + "include", + "apps/include" + ], + "test/quic_cc_test" => [ + "include", + "apps/include" + ], + "test/quic_cfq_test" => [ + "include", + "apps/include" + ], + "test/quic_client_test" => [ + "include", + "apps/include" + ], + "test/quic_fc_test" => [ + "include", + "apps/include" + ], + "test/quic_fifd_test" => [ + "include", + "apps/include" + ], + "test/quic_lcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_multistream_test" => [ + "include", + "apps/include" + ], + "test/quic_newcid_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_qlog_test" => [ + "include", + "apps/include" + ], + "test/quic_radix_test" => [ + "include", + "apps/include" + ], + "test/quic_rcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_record_test" => [ + "include", + "apps/include" + ], + "test/quic_srt_gen_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_srtm_test" => [ + "include", + "apps/include" + ], + "test/quic_stream_test" => [ + "include", + "apps/include" + ], + "test/quic_tserver_test" => [ + "include", + "apps/include" + ], + "test/quic_txp_test" => [ + "include", + "apps/include" + ], + "test/quic_txpim_test" => [ + "include", + "apps/include" + ], + "test/quic_wire_test" => [ + "include", + "apps/include" + ], + "test/quicapitest" => [ + "include", + "apps/include" + ], + "test/quicfaultstest" => [ + "include", + "apps/include", + "." + ], "test/rand_status_test" => [ "include", "apps/include" @@ -19266,14 +22444,20 @@ our %unified_info = ( "include", "apps/include" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "include", - "apps/include" + "apps/include", + "crypto" ], "test/recordlentest" => [ "include", "apps/include" ], + "test/rpktest" => [ + "include", + "apps/include", + "." + ], "test/rsa_complex" => [ "include", "apps/include" @@ -19292,6 +22476,15 @@ our %unified_info = ( "include", "apps/include" ], + "test/rsa_x931_test" => [ + ".", + "include", + "apps/include" + ], + "test/safe_math_test" => [ + "include", + "apps/include" + ], "test/sanitytest" => [ "include", "apps/include" @@ -19313,6 +22506,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/slh_dsa_test" => [ + "include", + "apps/include" + ], "test/sm2_internal_test" => [ "include", "apps/include" @@ -19343,6 +22540,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/ssl_handshake_rtt_test" => [ + "include", + "apps/include", + "." + ], "test/ssl_old_test" => [ ".", "include", @@ -19359,6 +22561,7 @@ our %unified_info = ( "test/sslapitest" => [ "include", "apps/include", + "providers/common/include", "." ], "test/sslbuffertest" => [ @@ -19373,6 +22576,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/strtoultest" => [ + "include", + "apps/include" + ], "test/sysdefaulttest" => [ "include", "apps/include" @@ -19381,7 +22588,13 @@ our %unified_info = ( "include", "apps/include" ], + "test/threadpool_test" => [ + ".", + "include", + "apps/include" + ], "test/threadstest" => [ + ".", "include", "apps/include" ], @@ -19393,6 +22606,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/time_test" => [ + "include", + "apps/include" + ], "test/tls13ccstest" => [ "include", "apps/include" @@ -19402,6 +22619,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/tls13groupselection_test" => [ + "include", + "apps/include" + ], "test/trace_api_test" => [ ".", "include", @@ -19440,6 +22661,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_acert_test" => [ + "include", + "apps/include" + ], "test/x509_check_cert_pkey_test" => [ "include", "apps/include" @@ -19453,6 +22678,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_load_cert_file_test" => [ + "include", + "apps/include" + ], + "test/x509_req_test" => [ + "include", + "apps/include" + ], + "test/x509_test" => [ + "include", + "apps/include" + ], "test/x509_time_test" => [ "include", "apps/include" @@ -19474,6 +22711,7 @@ our %unified_info = ( "providers/libdefault.a", "providers/libfips.a", "providers/liblegacy.a", + "providers/libtemplate.a", "test/libtestutil.a" ], "mandocs" => { @@ -19526,6 +22764,7 @@ our %unified_info = ( "doc/man/man1/openssl-s_server.1", "doc/man/man1/openssl-s_time.1", "doc/man/man1/openssl-sess_id.1", + "doc/man/man1/openssl-skeyutl.1", "doc/man/man1/openssl-smime.1", "doc/man/man1/openssl-speed.1", "doc/man/man1/openssl-spkac.1", @@ -19575,6 +22814,7 @@ our %unified_info = ( "doc/man/man3/BIO_find_type.3", "doc/man/man3/BIO_get_data.3", "doc/man/man3/BIO_get_ex_new_index.3", + "doc/man/man3/BIO_get_rpoll_descriptor.3", "doc/man/man3/BIO_meth_new.3", "doc/man/man3/BIO_new.3", "doc/man/man3/BIO_new_CMS.3", @@ -19587,11 +22827,13 @@ our %unified_info = ( "doc/man/man3/BIO_s_connect.3", "doc/man/man3/BIO_s_core.3", "doc/man/man3/BIO_s_datagram.3", + "doc/man/man3/BIO_s_dgram_pair.3", "doc/man/man3/BIO_s_fd.3", "doc/man/man3/BIO_s_file.3", "doc/man/man3/BIO_s_mem.3", "doc/man/man3/BIO_s_null.3", "doc/man/man3/BIO_s_socket.3", + "doc/man/man3/BIO_sendmmsg.3", "doc/man/man3/BIO_set_callback.3", "doc/man/man3/BIO_should_retry.3", "doc/man/man3/BIO_socket_wait.3", @@ -19616,6 +22858,7 @@ our %unified_info = ( "doc/man/man3/BN_swap.3", "doc/man/man3/BN_zero.3", "doc/man/man3/BUF_MEM_new.3", + "doc/man/man3/CMAC_CTX.3", "doc/man/man3/CMS_EncryptedData_decrypt.3", "doc/man/man3/CMS_EncryptedData_encrypt.3", "doc/man/man3/CMS_EnvelopedData_create.3", @@ -19638,6 +22881,7 @@ our %unified_info = ( "doc/man/man3/CMS_uncompress.3", "doc/man/man3/CMS_verify.3", "doc/man/man3/CMS_verify_receipt.3", + "doc/man/man3/COMP_CTX_new.3", "doc/man/man3/CONF_modules_free.3", "doc/man/man3/CONF_modules_load_file.3", "doc/man/man3/CRYPTO_THREAD_run_once.3", @@ -19671,6 +22915,8 @@ our %unified_info = ( "doc/man/man3/DSA_size.3", "doc/man/man3/DTLS_get_data_mtu.3", "doc/man/man3/DTLS_set_timer_cb.3", + "doc/man/man3/DTLSv1_get_timeout.3", + "doc/man/man3/DTLSv1_handle_timeout.3", "doc/man/man3/DTLSv1_listen.3", "doc/man/man3/ECDSA_SIG_new.3", "doc/man/man3/ECDSA_sign.3", @@ -19717,6 +22963,7 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_ctrl.3", "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3", "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3", + "doc/man/man3/EVP_PKEY_CTX_get_algor.3", "doc/man/man3/EVP_PKEY_CTX_new.3", "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3", "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3", @@ -19756,6 +23003,8 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_verify_recover.3", "doc/man/man3/EVP_RAND.3", "doc/man/man3/EVP_SIGNATURE.3", + "doc/man/man3/EVP_SKEY.3", + "doc/man/man3/EVP_SKEYMGMT.3", "doc/man/man3/EVP_SealInit.3", "doc/man/man3/EVP_SignInit.3", "doc/man/man3/EVP_VerifyInit.3", @@ -19785,6 +23034,7 @@ our %unified_info = ( "doc/man/man3/EVP_sm3.3", "doc/man/man3/EVP_sm4_cbc.3", "doc/man/man3/EVP_whirlpool.3", + "doc/man/man3/GENERAL_NAME.3", "doc/man/man3/HMAC.3", "doc/man/man3/MD5.3", "doc/man/man3/MDC2_Init.3", @@ -19809,14 +23059,18 @@ our %unified_info = ( "doc/man/man3/OPENSSL_init_ssl.3", "doc/man/man3/OPENSSL_instrument_bus.3", "doc/man/man3/OPENSSL_load_builtin_modules.3", + "doc/man/man3/OPENSSL_load_u16_le.3", "doc/man/man3/OPENSSL_malloc.3", + "doc/man/man3/OPENSSL_riscvcap.3", "doc/man/man3/OPENSSL_s390xcap.3", "doc/man/man3/OPENSSL_secure_malloc.3", "doc/man/man3/OPENSSL_strcasecmp.3", "doc/man/man3/OSSL_ALGORITHM.3", "doc/man/man3/OSSL_CALLBACK.3", + "doc/man/man3/OSSL_CMP_ATAV_set0.3", "doc/man/man3/OSSL_CMP_CTX_new.3", "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3", + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3", "doc/man/man3/OSSL_CMP_ITAV_set0.3", "doc/man/man3/OSSL_CMP_MSG_get0_header.3", "doc/man/man3/OSSL_CMP_MSG_http_perform.3", @@ -19840,18 +23094,27 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_CTX.3", "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3", "doc/man/man3/OSSL_ENCODER_to_bio.3", + "doc/man/man3/OSSL_ERR_STATE_save.3", "doc/man/man3/OSSL_ESS_check_signing_certs.3", + "doc/man/man3/OSSL_GENERAL_NAMES_print.3", + "doc/man/man3/OSSL_HPKE_CTX_new.3", "doc/man/man3/OSSL_HTTP_REQ_CTX.3", "doc/man/man3/OSSL_HTTP_parse_url.3", "doc/man/man3/OSSL_HTTP_transfer.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3", + "doc/man/man3/OSSL_INDICATOR_set_callback.3", "doc/man/man3/OSSL_ITEM.3", "doc/man/man3/OSSL_LIB_CTX.3", + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3", "doc/man/man3/OSSL_PARAM.3", "doc/man/man3/OSSL_PARAM_BLD.3", "doc/man/man3/OSSL_PARAM_allocate_from_text.3", "doc/man/man3/OSSL_PARAM_dup.3", "doc/man/man3/OSSL_PARAM_int.3", + "doc/man/man3/OSSL_PARAM_print_to_bio.3", "doc/man/man3/OSSL_PROVIDER.3", + "doc/man/man3/OSSL_QUIC_client_method.3", "doc/man/man3/OSSL_SELF_TEST_new.3", "doc/man/man3/OSSL_SELF_TEST_set_callback.3", "doc/man/man3/OSSL_STORE_INFO.3", @@ -19860,11 +23123,13 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_attach.3", "doc/man/man3/OSSL_STORE_expect.3", "doc/man/man3/OSSL_STORE_open.3", + "doc/man/man3/OSSL_sleep.3", "doc/man/man3/OSSL_trace_enabled.3", "doc/man/man3/OSSL_trace_get_category_num.3", "doc/man/man3/OSSL_trace_set_channel.3", "doc/man/man3/OpenSSL_add_all_algorithms.3", "doc/man/man3/OpenSSL_version.3", + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3", "doc/man/man3/PEM_X509_INFO_read_bio_ex.3", "doc/man/man3/PEM_bytes_read_bio.3", "doc/man/man3/PEM_read.3", @@ -19877,6 +23142,7 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_create_cert.3", "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3", "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3", + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3", "doc/man/man3/PKCS12_add1_attr_by_NID.3", "doc/man/man3/PKCS12_add_CSPName_asc.3", "doc/man/man3/PKCS12_add_cert.3", @@ -19968,6 +23234,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_sess_set_get_cb.3", "doc/man/man3/SSL_CTX_sessions.3", "doc/man/man3/SSL_CTX_set0_CA_list.3", + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3", "doc/man/man3/SSL_CTX_set1_curves.3", "doc/man/man3/SSL_CTX_set1_sigalgs.3", "doc/man/man3/SSL_CTX_set1_verify_cert_store.3", @@ -19981,6 +23248,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_ct_validation_callback.3", "doc/man/man3/SSL_CTX_set_ctlog_list_file.3", "doc/man/man3/SSL_CTX_set_default_passwd_cb.3", + "doc/man/man3/SSL_CTX_set_domain_flags.3", "doc/man/man3/SSL_CTX_set_generate_session_id.3", "doc/man/man3/SSL_CTX_set_info_callback.3", "doc/man/man3/SSL_CTX_set_keylog_callback.3", @@ -19988,6 +23256,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_min_proto_version.3", "doc/man/man3/SSL_CTX_set_mode.3", "doc/man/man3/SSL_CTX_set_msg_callback.3", + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3", "doc/man/man3/SSL_CTX_set_num_tickets.3", "doc/man/man3/SSL_CTX_set_options.3", "doc/man/man3/SSL_CTX_set_psk_client_callback.3", @@ -20026,6 +23295,7 @@ our %unified_info = ( "doc/man/man3/SSL_SESSION_print.3", "doc/man/man3/SSL_SESSION_set1_id.3", "doc/man/man3/SSL_accept.3", + "doc/man/man3/SSL_accept_stream.3", "doc/man/man3/SSL_alert_type_string.3", "doc/man/man3/SSL_alloc_buffers.3", "doc/man/man3/SSL_check_chain.3", @@ -20035,59 +23305,90 @@ our %unified_info = ( "doc/man/man3/SSL_export_keying_material.3", "doc/man/man3/SSL_extension_supported.3", "doc/man/man3/SSL_free.3", + "doc/man/man3/SSL_get0_connection.3", + "doc/man/man3/SSL_get0_group_name.3", + "doc/man/man3/SSL_get0_peer_rpk.3", "doc/man/man3/SSL_get0_peer_scts.3", + "doc/man/man3/SSL_get1_builtin_sigalgs.3", "doc/man/man3/SSL_get_SSL_CTX.3", "doc/man/man3/SSL_get_all_async_fds.3", "doc/man/man3/SSL_get_certificate.3", "doc/man/man3/SSL_get_ciphers.3", "doc/man/man3/SSL_get_client_random.3", + "doc/man/man3/SSL_get_conn_close_info.3", "doc/man/man3/SSL_get_current_cipher.3", "doc/man/man3/SSL_get_default_timeout.3", "doc/man/man3/SSL_get_error.3", + "doc/man/man3/SSL_get_event_timeout.3", "doc/man/man3/SSL_get_extms_support.3", "doc/man/man3/SSL_get_fd.3", + "doc/man/man3/SSL_get_handshake_rtt.3", "doc/man/man3/SSL_get_peer_cert_chain.3", "doc/man/man3/SSL_get_peer_certificate.3", "doc/man/man3/SSL_get_peer_signature_nid.3", "doc/man/man3/SSL_get_peer_tmp_key.3", "doc/man/man3/SSL_get_psk_identity.3", "doc/man/man3/SSL_get_rbio.3", + "doc/man/man3/SSL_get_rpoll_descriptor.3", "doc/man/man3/SSL_get_session.3", "doc/man/man3/SSL_get_shared_sigalgs.3", + "doc/man/man3/SSL_get_stream_id.3", + "doc/man/man3/SSL_get_stream_read_state.3", + "doc/man/man3/SSL_get_value_uint.3", "doc/man/man3/SSL_get_verify_result.3", "doc/man/man3/SSL_get_version.3", "doc/man/man3/SSL_group_to_name.3", + "doc/man/man3/SSL_handle_events.3", "doc/man/man3/SSL_in_init.3", + "doc/man/man3/SSL_inject_net_dgram.3", "doc/man/man3/SSL_key_update.3", "doc/man/man3/SSL_library_init.3", "doc/man/man3/SSL_load_client_CA_file.3", "doc/man/man3/SSL_new.3", + "doc/man/man3/SSL_new_domain.3", + "doc/man/man3/SSL_new_listener.3", + "doc/man/man3/SSL_new_stream.3", "doc/man/man3/SSL_pending.3", + "doc/man/man3/SSL_poll.3", "doc/man/man3/SSL_read.3", "doc/man/man3/SSL_read_early_data.3", "doc/man/man3/SSL_rstate_string.3", "doc/man/man3/SSL_session_reused.3", "doc/man/man3/SSL_set1_host.3", + "doc/man/man3/SSL_set1_initial_peer_addr.3", + "doc/man/man3/SSL_set1_server_cert_type.3", "doc/man/man3/SSL_set_async_callback.3", "doc/man/man3/SSL_set_bio.3", + "doc/man/man3/SSL_set_blocking_mode.3", "doc/man/man3/SSL_set_connect_state.3", + "doc/man/man3/SSL_set_default_stream_mode.3", "doc/man/man3/SSL_set_fd.3", + "doc/man/man3/SSL_set_incoming_stream_policy.3", + "doc/man/man3/SSL_set_quic_tls_cbs.3", "doc/man/man3/SSL_set_retry_verify.3", "doc/man/man3/SSL_set_session.3", + "doc/man/man3/SSL_set_session_secret_cb.3", "doc/man/man3/SSL_set_shutdown.3", "doc/man/man3/SSL_set_verify_result.3", "doc/man/man3/SSL_shutdown.3", "doc/man/man3/SSL_state_string.3", + "doc/man/man3/SSL_stream_conclude.3", + "doc/man/man3/SSL_stream_reset.3", "doc/man/man3/SSL_want.3", "doc/man/man3/SSL_write.3", "doc/man/man3/TS_RESP_CTX_new.3", - "doc/man/man3/TS_VERIFY_CTX_set_certs.3", + "doc/man/man3/TS_VERIFY_CTX.3", "doc/man/man3/UI_STRING.3", "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", + "doc/man/man3/X509_ACERT_add1_attr.3", + "doc/man/man3/X509_ACERT_add_attr_nconf.3", + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3", + "doc/man/man3/X509_ACERT_get_attr.3", + "doc/man/man3/X509_ACERT_print_ex.3", "doc/man/man3/X509_ALGOR_dup.3", "doc/man/man3/X509_ATTRIBUTE.3", "doc/man/man3/X509_CRL_get0_by_serial.3", @@ -20104,6 +23405,7 @@ our %unified_info = ( "doc/man/man3/X509_REQ_get_attr.3", "doc/man/man3/X509_REQ_get_extensions.3", "doc/man/man3/X509_SIG_get0.3", + "doc/man/man3/X509_STORE_CTX_get_by_subject.3", "doc/man/man3/X509_STORE_CTX_get_error.3", "doc/man/man3/X509_STORE_CTX_new.3", "doc/man/man3/X509_STORE_CTX_set_verify_cb.3", @@ -20126,6 +23428,7 @@ our %unified_info = ( "doc/man/man3/X509_get0_notBefore.3", "doc/man/man3/X509_get0_signature.3", "doc/man/man3/X509_get0_uids.3", + "doc/man/man3/X509_get_default_cert_file.3", "doc/man/man3/X509_get_extension_flags.3", "doc/man/man3/X509_get_pubkey.3", "doc/man/man3/X509_get_serialNumber.3", @@ -20171,12 +23474,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-RC5.7", "doc/man/man7/EVP_CIPHER-SEED.7", "doc/man/man7/EVP_CIPHER-SM4.7", + "doc/man/man7/EVP_KDF-ARGON2.7", "doc/man/man7/EVP_KDF-HKDF.7", + "doc/man/man7/EVP_KDF-HMAC-DRBG.7", "doc/man/man7/EVP_KDF-KB.7", "doc/man/man7/EVP_KDF-KRB5KDF.7", "doc/man/man7/EVP_KDF-PBKDF1.7", "doc/man/man7/EVP_KDF-PBKDF2.7", "doc/man/man7/EVP_KDF-PKCS12KDF.7", + "doc/man/man7/EVP_KDF-PVKKDF.7", "doc/man/man7/EVP_KDF-SCRYPT.7", "doc/man/man7/EVP_KDF-SS.7", "doc/man/man7/EVP_KDF-SSHKDF.7", @@ -20185,7 +23491,10 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X942-ASN1.7", "doc/man/man7/EVP_KDF-X942-CONCAT.7", "doc/man/man7/EVP_KDF-X963.7", + "doc/man/man7/EVP_KEM-EC.7", + "doc/man/man7/EVP_KEM-ML-KEM.7", "doc/man/man7/EVP_KEM-RSA.7", + "doc/man/man7/EVP_KEM-X25519.7", "doc/man/man7/EVP_KEYEXCH-DH.7", "doc/man/man7/EVP_KEYEXCH-ECDH.7", "doc/man/man7/EVP_KEYEXCH-X25519.7", @@ -20197,6 +23506,7 @@ our %unified_info = ( "doc/man/man7/EVP_MAC-Poly1305.7", "doc/man/man7/EVP_MAC-Siphash.7", "doc/man/man7/EVP_MD-BLAKE2.7", + "doc/man/man7/EVP_MD-KECCAK.7", "doc/man/man7/EVP_MD-MD2.7", "doc/man/man7/EVP_MD-MD4.7", "doc/man/man7/EVP_MD-MD5-SHA1.7", @@ -20216,12 +23526,17 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-EC.7", "doc/man/man7/EVP_PKEY-FFC.7", "doc/man/man7/EVP_PKEY-HMAC.7", + "doc/man/man7/EVP_PKEY-ML-DSA.7", + "doc/man/man7/EVP_PKEY-ML-KEM.7", "doc/man/man7/EVP_PKEY-RSA.7", + "doc/man/man7/EVP_PKEY-SLH-DSA.7", "doc/man/man7/EVP_PKEY-SM2.7", "doc/man/man7/EVP_PKEY-X25519.7", + "doc/man/man7/EVP_RAND-CRNG-TEST.7", "doc/man/man7/EVP_RAND-CTR-DRBG.7", "doc/man/man7/EVP_RAND-HASH-DRBG.7", "doc/man/man7/EVP_RAND-HMAC-DRBG.7", + "doc/man/man7/EVP_RAND-JITTER.7", "doc/man/man7/EVP_RAND-SEED-SRC.7", "doc/man/man7/EVP_RAND-TEST-RAND.7", "doc/man/man7/EVP_RAND.7", @@ -20229,17 +23544,19 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-ECDSA.7", "doc/man/man7/EVP_SIGNATURE-ED25519.7", "doc/man/man7/EVP_SIGNATURE-HMAC.7", + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7", "doc/man/man7/EVP_SIGNATURE-RSA.7", + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7", "doc/man/man7/OSSL_PROVIDER-FIPS.7", "doc/man/man7/OSSL_PROVIDER-base.7", "doc/man/man7/OSSL_PROVIDER-default.7", "doc/man/man7/OSSL_PROVIDER-legacy.7", "doc/man/man7/OSSL_PROVIDER-null.7", + "doc/man/man7/OSSL_STORE-winstore.7", "doc/man/man7/RAND.7", "doc/man/man7/RSA-PSS.7", "doc/man/man7/X25519.7", "doc/man/man7/bio.7", - "doc/man/man7/crypto.7", "doc/man/man7/ct.7", "doc/man/man7/des_modes.7", "doc/man/man7/evp.7", @@ -20250,14 +23567,31 @@ our %unified_info = ( "doc/man/man7/life_cycle-mac.7", "doc/man/man7/life_cycle-pkey.7", "doc/man/man7/life_cycle-rand.7", - "doc/man/man7/migration_guide.7", "doc/man/man7/openssl-core.h.7", "doc/man/man7/openssl-core_dispatch.h.7", "doc/man/man7/openssl-core_names.h.7", "doc/man/man7/openssl-env.7", "doc/man/man7/openssl-glossary.7", + "doc/man/man7/openssl-qlog.7", + "doc/man/man7/openssl-quic-concurrency.7", + "doc/man/man7/openssl-quic.7", "doc/man/man7/openssl-threads.7", "doc/man/man7/openssl_user_macros.7", + "doc/man/man7/ossl-guide-introduction.7", + "doc/man/man7/ossl-guide-libcrypto-introduction.7", + "doc/man/man7/ossl-guide-libraries-introduction.7", + "doc/man/man7/ossl-guide-libssl-introduction.7", + "doc/man/man7/ossl-guide-migration.7", + "doc/man/man7/ossl-guide-quic-client-block.7", + "doc/man/man7/ossl-guide-quic-client-non-block.7", + "doc/man/man7/ossl-guide-quic-introduction.7", + "doc/man/man7/ossl-guide-quic-multi-stream.7", + "doc/man/man7/ossl-guide-quic-server-block.7", + "doc/man/man7/ossl-guide-quic-server-non-block.7", + "doc/man/man7/ossl-guide-tls-client-block.7", + "doc/man/man7/ossl-guide-tls-client-non-block.7", + "doc/man/man7/ossl-guide-tls-introduction.7", + "doc/man/man7/ossl-guide-tls-server-block.7", "doc/man/man7/ossl_store-file.7", "doc/man/man7/ossl_store.7", "doc/man/man7/passphrase-encoding.7", @@ -20276,10 +23610,10 @@ our %unified_info = ( "doc/man/man7/provider-object.7", "doc/man/man7/provider-rand.7", "doc/man/man7/provider-signature.7", + "doc/man/man7/provider-skeymgmt.7", "doc/man/man7/provider-storemgmt.7", "doc/man/man7/provider.7", "doc/man/man7/proxy-certificates.7", - "doc/man/man7/ssl.7", "doc/man/man7/x509.7" ] }, @@ -20291,6 +23625,7 @@ our %unified_info = ( ], "programs" => [ "apps/openssl", + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -20301,7 +23636,24 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test", "test/aborttest", "test/acvp_test", @@ -20319,21 +23671,28 @@ our %unified_info = ( "test/asynctest", "test/bad_dtls_test", "test/bftest", + "test/bio_addr_test", + "test/bio_base64_test", "test/bio_callback_test", "test/bio_core_test", + "test/bio_dgram_test", "test/bio_enc_test", "test/bio_memleak_test", + "test/bio_meth_test", "test/bio_prefix_text", "test/bio_pw_callback_test", "test/bio_readbuffer_test", + "test/bio_tfo_test", "test/bioprinttest", "test/bn_internal_test", "test/bntest", + "test/build_wincrypt_test", "test/buildtest_c_aes", "test/buildtest_c_async", "test/buildtest_c_blowfish", "test/buildtest_c_bn", "test/buildtest_c_buffer", + "test/buildtest_c_byteorder", "test/buildtest_c_camellia", "test/buildtest_c_cast", "test/buildtest_c_cmac", @@ -20342,7 +23701,6 @@ our %unified_info = ( "test/buildtest_c_conftypes", "test/buildtest_c_core", "test/buildtest_c_core_dispatch", - "test/buildtest_c_core_names", "test/buildtest_c_core_object", "test/buildtest_c_cryptoerr_legacy", "test/buildtest_c_decoder", @@ -20351,6 +23709,7 @@ our %unified_info = ( "test/buildtest_c_dsa", "test/buildtest_c_dtls1", "test/buildtest_c_e_os2", + "test/buildtest_c_e_ostime", "test/buildtest_c_ebcdic", "test/buildtest_c_ec", "test/buildtest_c_ecdh", @@ -20360,13 +23719,16 @@ our %unified_info = ( "test/buildtest_c_evp", "test/buildtest_c_fips_names", "test/buildtest_c_hmac", + "test/buildtest_c_hpke", "test/buildtest_c_http", "test/buildtest_c_idea", + "test/buildtest_c_indicator", "test/buildtest_c_kdf", "test/buildtest_c_macros", "test/buildtest_c_md4", "test/buildtest_c_md5", "test/buildtest_c_mdc2", + "test/buildtest_c_ml_kem", "test/buildtest_c_modes", "test/buildtest_c_obj_mac", "test/buildtest_c_objects", @@ -20377,6 +23739,7 @@ our %unified_info = ( "test/buildtest_c_pem2", "test/buildtest_c_prov_ssl", "test/buildtest_c_provider", + "test/buildtest_c_quic", "test/buildtest_c_rand", "test/buildtest_c_rc2", "test/buildtest_c_rc4", @@ -20391,11 +23754,14 @@ our %unified_info = ( "test/buildtest_c_stack", "test/buildtest_c_store", "test/buildtest_c_symhacks", + "test/buildtest_c_thread", "test/buildtest_c_tls1", "test/buildtest_c_ts", "test/buildtest_c_txt_db", "test/buildtest_c_types", "test/buildtest_c_whrlpool", + "test/byteorder_test", + "test/ca_internals_test", "test/casttest", "test/chacha_internal_test", "test/cipher_overhead_test", @@ -20424,6 +23790,7 @@ our %unified_info = ( "test/curve448_internal_test", "test/d2i_test", "test/danetest", + "test/decoder_propq_test", "test/defltfips_test", "test/destest", "test/dhtest", @@ -20448,9 +23815,12 @@ our %unified_info = ( "test/evp_kdf_test", "test/evp_libctx_test", "test/evp_pkey_ctx_new_from_name", + "test/evp_pkey_dhkem_test", "test/evp_pkey_dparams_test", "test/evp_pkey_provided_test", + "test/evp_skey_test", "test/evp_test", + "test/evp_xof_test", "test/exdatatest", "test/exptest", "test/ext_internal_test", @@ -20460,21 +23830,29 @@ our %unified_info = ( "test/gmdifftest", "test/hexstr_test", "test/hmactest", + "test/hpke_test", "test/http_test", "test/ideatest", "test/igetest", + "test/json_test", "test/keymgmt_internal_test", "test/lhash_test", + "test/list_test", "test/localetest", "test/mdc2_internal_test", "test/mdc2test", + "test/membio_test", "test/memleaktest", + "test/ml_dsa_test", + "test/ml_kem_evp_extra_test", + "test/ml_kem_internal_test", "test/modes_internal_test", "test/namemap_internal_test", "test/nodefltctxtest", "test/ocspapitest", "test/ossl_store_test", "test/packettest", + "test/pairwise_fail_test", "test/param_build_test", "test/params_api_test", "test/params_conversion_test", @@ -20483,36 +23861,65 @@ our %unified_info = ( "test/pbetest", "test/pem_read_depr_test", "test/pemtest", + "test/pkcs12_api_test", "test/pkcs12_format_test", "test/pkcs7_test", "test/pkey_meth_kdf_test", "test/pkey_meth_test", "test/poly1305_internal_test", + "test/priority_queue_test", "test/property_test", "test/prov_config_test", "test/provfetchtest", + "test/provider_default_search_path_test", "test/provider_fallback_test", "test/provider_internal_test", "test/provider_pkey_test", "test/provider_status_test", "test/provider_test", "test/punycode_test", + "test/quic_ackm_test", + "test/quic_cc_test", + "test/quic_cfq_test", + "test/quic_client_test", + "test/quic_fc_test", + "test/quic_fifd_test", + "test/quic_lcidm_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_qlog_test", + "test/quic_radix_test", + "test/quic_rcidm_test", + "test/quic_record_test", + "test/quic_srt_gen_test", + "test/quic_srtm_test", + "test/quic_stream_test", + "test/quic_tserver_test", + "test/quic_txp_test", + "test/quic_txpim_test", + "test/quic_wire_test", + "test/quicapitest", + "test/quicfaultstest", "test/rand_status_test", "test/rand_test", "test/rc2test", "test/rc4test", "test/rc5test", - "test/rdrand_sanitytest", + "test/rdcpu_sanitytest", "test/recordlentest", + "test/rpktest", "test/rsa_complex", "test/rsa_mp_test", "test/rsa_sp800_56b_test", "test/rsa_test", + "test/rsa_x931_test", + "test/safe_math_test", "test/sanitytest", "test/secmemtest", "test/servername_test", "test/sha_test", "test/siphash_internal_test", + "test/slh_dsa_test", "test/sm2_internal_test", "test/sm3_internal_test", "test/sm4_internal_test", @@ -20520,6 +23927,7 @@ our %unified_info = ( "test/srptest", "test/ssl_cert_table_internal_test", "test/ssl_ctx_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", @@ -20527,13 +23935,17 @@ our %unified_info = ( "test/sslbuffertest", "test/sslcorrupttest", "test/stack_test", + "test/strtoultest", "test/sysdefaulttest", "test/test_test", + "test/threadpool_test", "test/threadstest", "test/threadstest_fips", "test/time_offset_test", + "test/time_test", "test/tls13ccstest", "test/tls13encryptiontest", + "test/tls13groupselection_test", "test/trace_api_test", "test/uitest", "test/upcallstest", @@ -20543,9 +23955,13 @@ our %unified_info = ( "test/verify_extra_test", "test/versions", "test/wpackettest", + "test/x509_acert_test", "test/x509_check_cert_pkey_test", "test/x509_dup_cert_test", "test/x509_internal_test", + "test/x509_load_cert_file_test", + "test/x509_req_test", + "test/x509_test", "test/x509_time_test", "test/x509aux" ], @@ -20560,6 +23976,33 @@ our %unified_info = ( "apps/CA.pl" => [ "apps/CA.pl.in" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/ca.c" + ], + "apps/lib/ca_internals_test-bin-app_libctx.o" => [ + "apps/lib/app_libctx.c" + ], + "apps/lib/ca_internals_test-bin-app_provider.o" => [ + "apps/lib/app_provider.c" + ], + "apps/lib/ca_internals_test-bin-app_rand.o" => [ + "apps/lib/app_rand.c" + ], + "apps/lib/ca_internals_test-bin-app_x509.o" => [ + "apps/lib/app_x509.c" + ], + "apps/lib/ca_internals_test-bin-apps.o" => [ + "apps/lib/apps.c" + ], + "apps/lib/ca_internals_test-bin-apps_ui.o" => [ + "apps/lib/apps_ui.c" + ], + "apps/lib/ca_internals_test-bin-engine.o" => [ + "apps/lib/engine.c" + ], + "apps/lib/ca_internals_test-bin-fmt.o" => [ + "apps/lib/fmt.c" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/lib/cmp_mock_srv.c" ], @@ -20581,6 +24024,9 @@ our %unified_info = ( "apps/lib/libapps-lib-apps.o" => [ "apps/lib/apps.c" ], + "apps/lib/libapps-lib-apps_opt_printf.o" => [ + "apps/lib/apps_opt_printf.c" + ], "apps/lib/libapps-lib-apps_ui.o" => [ "apps/lib/apps_ui.c" ], @@ -20599,6 +24045,9 @@ our %unified_info = ( "apps/lib/libapps-lib-http_server.o" => [ "apps/lib/http_server.c" ], + "apps/lib/libapps-lib-log.o" => [ + "apps/lib/log.c" + ], "apps/lib/libapps-lib-names.o" => [ "apps/lib/names.c" ], @@ -20636,12 +24085,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -20697,6 +24148,7 @@ our %unified_info = ( "apps/openssl-bin-s_server.o", "apps/openssl-bin-s_time.o", "apps/openssl-bin-sess_id.o", + "apps/openssl-bin-skeyutl.o", "apps/openssl-bin-smime.o", "apps/openssl-bin-speed.o", "apps/openssl-bin-spkac.o", @@ -20845,6 +24297,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/sess_id.c" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/skeyutl.c" + ], "apps/openssl-bin-smime.o" => [ "apps/smime.c" ], @@ -20908,6 +24363,9 @@ our %unified_info = ( "crypto/aes/libcrypto-lib-aesni-x86_64.o" => [ "crypto/aes/aesni-x86_64.s" ], + "crypto/aes/libcrypto-lib-aesni-xts-avx512.o" => [ + "crypto/aes/aesni-xts-avx512.s" + ], "crypto/aes/libcrypto-lib-bsaes-x86_64.o" => [ "crypto/aes/bsaes-x86_64.s" ], @@ -20935,6 +24393,9 @@ our %unified_info = ( "crypto/aes/libfips-lib-aesni-x86_64.o" => [ "crypto/aes/aesni-x86_64.s" ], + "crypto/aes/libfips-lib-aesni-xts-avx512.o" => [ + "crypto/aes/aesni-xts-avx512.s" + ], "crypto/aes/libfips-lib-bsaes-x86_64.o" => [ "crypto/aes/bsaes-x86_64.s" ], @@ -20944,6 +24405,12 @@ our %unified_info = ( "crypto/aria/libcrypto-lib-aria.o" => [ "crypto/aria/aria.c" ], + "crypto/asn1/asn1_time_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], + "crypto/asn1/ca_internals_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], "crypto/asn1/libcrypto-lib-a_bitstr.o" => [ "crypto/asn1/a_bitstr.c" ], @@ -21136,6 +24603,9 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" => [ "crypto/asn1/x_val.c" ], + "crypto/asn1_time_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/async/arch/libcrypto-lib-async_null.o" => [ "crypto/async/arch/async_null.c" ], @@ -21229,6 +24699,9 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_dgram.o" => [ "crypto/bio/bss_dgram.c" ], + "crypto/bio/libcrypto-lib-bss_dgram_pair.o" => [ + "crypto/bio/bss_dgram_pair.c" + ], "crypto/bio/libcrypto-lib-bss_fd.o" => [ "crypto/bio/bss_fd.c" ], @@ -21349,12 +24822,27 @@ our %unified_info = ( "crypto/bn/libcrypto-lib-bn_x931p.o" => [ "crypto/bn/bn_x931p.c" ], + "crypto/bn/libcrypto-lib-rsaz-2k-avx512.o" => [ + "crypto/bn/rsaz-2k-avx512.s" + ], + "crypto/bn/libcrypto-lib-rsaz-2k-avxifma.o" => [ + "crypto/bn/rsaz-2k-avxifma.s" + ], + "crypto/bn/libcrypto-lib-rsaz-3k-avx512.o" => [ + "crypto/bn/rsaz-3k-avx512.s" + ], + "crypto/bn/libcrypto-lib-rsaz-3k-avxifma.o" => [ + "crypto/bn/rsaz-3k-avxifma.s" + ], + "crypto/bn/libcrypto-lib-rsaz-4k-avx512.o" => [ + "crypto/bn/rsaz-4k-avx512.s" + ], + "crypto/bn/libcrypto-lib-rsaz-4k-avxifma.o" => [ + "crypto/bn/rsaz-4k-avxifma.s" + ], "crypto/bn/libcrypto-lib-rsaz-avx2.o" => [ "crypto/bn/rsaz-avx2.s" ], - "crypto/bn/libcrypto-lib-rsaz-avx512.o" => [ - "crypto/bn/rsaz-avx512.s" - ], "crypto/bn/libcrypto-lib-rsaz-x86_64.o" => [ "crypto/bn/rsaz-x86_64.s" ], @@ -21457,12 +24945,27 @@ our %unified_info = ( "crypto/bn/libfips-lib-bn_word.o" => [ "crypto/bn/bn_word.c" ], + "crypto/bn/libfips-lib-rsaz-2k-avx512.o" => [ + "crypto/bn/rsaz-2k-avx512.s" + ], + "crypto/bn/libfips-lib-rsaz-2k-avxifma.o" => [ + "crypto/bn/rsaz-2k-avxifma.s" + ], + "crypto/bn/libfips-lib-rsaz-3k-avx512.o" => [ + "crypto/bn/rsaz-3k-avx512.s" + ], + "crypto/bn/libfips-lib-rsaz-3k-avxifma.o" => [ + "crypto/bn/rsaz-3k-avxifma.s" + ], + "crypto/bn/libfips-lib-rsaz-4k-avx512.o" => [ + "crypto/bn/rsaz-4k-avx512.s" + ], + "crypto/bn/libfips-lib-rsaz-4k-avxifma.o" => [ + "crypto/bn/rsaz-4k-avxifma.s" + ], "crypto/bn/libfips-lib-rsaz-avx2.o" => [ "crypto/bn/rsaz-avx2.s" ], - "crypto/bn/libfips-lib-rsaz-avx512.o" => [ - "crypto/bn/rsaz-avx512.s" - ], "crypto/bn/libfips-lib-rsaz-x86_64.o" => [ "crypto/bn/rsaz-x86_64.s" ], @@ -21490,6 +24993,9 @@ our %unified_info = ( "crypto/buffer/libfips-lib-buffer.o" => [ "crypto/buffer/buffer.c" ], + "crypto/ca_internals_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/camellia/libcrypto-lib-cmll-x86_64.o" => [ "crypto/camellia/cmll-x86_64.s" ], @@ -21544,6 +25050,9 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_err.o" => [ "crypto/cmp/cmp_err.c" ], + "crypto/cmp/libcrypto-lib-cmp_genm.o" => [ + "crypto/cmp/cmp_genm.c" + ], "crypto/cmp/libcrypto-lib-cmp_hdr.o" => [ "crypto/cmp/cmp_hdr.c" ], @@ -22237,9 +25746,15 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_blocks.o" => [ "crypto/err/err_blocks.c" ], + "crypto/err/libcrypto-lib-err_mark.o" => [ + "crypto/err/err_mark.c" + ], "crypto/err/libcrypto-lib-err_prn.o" => [ "crypto/err/err_prn.c" ], + "crypto/err/libcrypto-lib-err_save.o" => [ + "crypto/err/err_save.c" + ], "crypto/ess/libcrypto-lib-ess_asn1.o" => [ "crypto/ess/ess_asn1.c" ], @@ -22486,9 +26001,15 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libcrypto-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libcrypto-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libcrypto-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/evp/libfips-lib-asymcipher.o" => [ "crypto/evp/asymcipher.c" ], @@ -22534,9 +26055,6 @@ our %unified_info = ( "crypto/evp/libfips-lib-keymgmt_meth.o" => [ "crypto/evp/keymgmt_meth.c" ], - "crypto/evp/libfips-lib-m_sigver.o" => [ - "crypto/evp/m_sigver.c" - ], "crypto/evp/libfips-lib-mac_lib.o" => [ "crypto/evp/mac_lib.c" ], @@ -22555,9 +26073,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libfips-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libfips-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libfips-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/ffc/libcrypto-lib-ffc_backend.o" => [ "crypto/ffc/ffc_backend.c" ], @@ -22600,12 +26124,30 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params_validate.o" => [ "crypto/ffc/ffc_params_validate.c" ], + "crypto/hashtable/libcrypto-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libcrypto-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], + "crypto/hashtable/libfips-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libfips-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], "crypto/hmac/libcrypto-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], "crypto/hmac/libfips-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], + "crypto/hpke/libcrypto-lib-hpke.o" => [ + "crypto/hpke/hpke.c" + ], + "crypto/hpke/libcrypto-lib-hpke_util.o" => [ + "crypto/hpke/hpke_util.c" + ], "crypto/http/libcrypto-lib-http_client.o" => [ "crypto/http/http_client.c" ], @@ -22648,6 +26190,9 @@ our %unified_info = ( "crypto/libcrypto-lib-bsearch.o" => [ "crypto/bsearch.c" ], + "crypto/libcrypto-lib-comp_methods.o" => [ + "crypto/comp_methods.c" + ], "crypto/libcrypto-lib-context.o" => [ "crypto/context.c" ], @@ -22675,9 +26220,15 @@ our %unified_info = ( "crypto/libcrypto-lib-cversion.o" => [ "crypto/cversion.c" ], + "crypto/libcrypto-lib-defaults.o" => [ + "crypto/defaults.c" + ], "crypto/libcrypto-lib-der_writer.o" => [ "crypto/der_writer.c" ], + "crypto/libcrypto-lib-deterministic_nonce.o" => [ + "crypto/deterministic_nonce.c" + ], "crypto/libcrypto-lib-ebcdic.o" => [ "crypto/ebcdic.c" ], @@ -22687,6 +26238,9 @@ our %unified_info = ( "crypto/libcrypto-lib-getenv.o" => [ "crypto/getenv.c" ], + "crypto/libcrypto-lib-indicator_core.o" => [ + "crypto/indicator_core.c" + ], "crypto/libcrypto-lib-info.o" => [ "crypto/info.c" ], @@ -22735,6 +26289,9 @@ our %unified_info = ( "crypto/libcrypto-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libcrypto-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libcrypto-lib-passphrase.o" => [ "crypto/passphrase.c" ], @@ -22756,12 +26313,21 @@ our %unified_info = ( "crypto/libcrypto-lib-punycode.o" => [ "crypto/punycode.c" ], + "crypto/libcrypto-lib-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/libcrypto-lib-self_test_core.o" => [ "crypto/self_test_core.c" ], + "crypto/libcrypto-lib-sleep.o" => [ + "crypto/sleep.c" + ], "crypto/libcrypto-lib-sparse_array.o" => [ "crypto/sparse_array.c" ], + "crypto/libcrypto-lib-ssl_err.o" => [ + "crypto/ssl_err.c" + ], "crypto/libcrypto-lib-threads_lib.o" => [ "crypto/threads_lib.c" ], @@ -22774,6 +26340,9 @@ our %unified_info = ( "crypto/libcrypto-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libcrypto-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libcrypto-lib-trace.o" => [ "crypto/trace.c" ], @@ -22840,6 +26409,9 @@ our %unified_info = ( "crypto/libfips-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libfips-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libfips-lib-provider_core.o" => [ "crypto/provider_core.c" ], @@ -22864,6 +26436,9 @@ our %unified_info = ( "crypto/libfips-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libfips-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libfips-lib-x86_64cpuid.o" => [ "crypto/x86_64cpuid.s" ], @@ -22891,6 +26466,63 @@ our %unified_info = ( "crypto/mdc2/libcrypto-lib-mdc2dgst.o" => [ "crypto/mdc2/mdc2dgst.c" ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_kem/libcrypto-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], + "crypto/ml_kem/libfips-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], + "crypto/modes/libcrypto-lib-aes-gcm-avx512.o" => [ + "crypto/modes/aes-gcm-avx512.s" + ], "crypto/modes/libcrypto-lib-aesni-gcm-x86_64.o" => [ "crypto/modes/aesni-gcm-x86_64.s" ], @@ -22930,6 +26562,12 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libcrypto-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], + "crypto/modes/libfips-lib-aes-gcm-avx512.o" => [ + "crypto/modes/aes-gcm-avx512.s" + ], "crypto/modes/libfips-lib-aesni-gcm-x86_64.o" => [ "crypto/modes/aesni-gcm-x86_64.s" ], @@ -22960,6 +26598,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libfips-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/objects/libcrypto-lib-o_names.o" => [ "crypto/objects/o_names.c" ], @@ -23005,6 +26646,9 @@ our %unified_info = ( "crypto/ocsp/libcrypto-lib-v3_ocsp.o" => [ "crypto/ocsp/v3_ocsp.c" ], + "crypto/packettest-bin-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/pem/libcrypto-lib-pem_all.o" => [ "crypto/pem/pem_all.c" ], @@ -23167,6 +26811,9 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_pool.o" => [ "crypto/rand/rand_pool.c" ], + "crypto/rand/libcrypto-lib-rand_uniform.o" => [ + "crypto/rand/rand_uniform.c" + ], "crypto/rand/libcrypto-lib-randfile.o" => [ "crypto/rand/randfile.c" ], @@ -23410,6 +27057,66 @@ our %unified_info = ( "crypto/siphash/libcrypto-lib-siphash.o" => [ "crypto/siphash/siphash.c" ], + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], + "crypto/slh_dsa/libfips-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libfips-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libfips-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libfips-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libfips-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], "crypto/sm2/libcrypto-lib-sm2_crypt.o" => [ "crypto/sm2/sm2_crypt.c" ], @@ -23464,6 +27171,42 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_strings.o" => [ "crypto/store/store_strings.c" ], + "crypto/thread/arch/libcrypto-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/arch/libfips-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libfips-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libfips-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/libcrypto-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libcrypto-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libcrypto-lib-internal.o" => [ + "crypto/thread/internal.c" + ], + "crypto/thread/libfips-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libfips-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libfips-lib-internal.o" => [ + "crypto/thread/internal.c" + ], "crypto/ts/libcrypto-lib-ts_asn1.o" => [ "crypto/ts/ts_asn1.c" ], @@ -23548,6 +27291,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_tree.o" => [ "crypto/x509/pcy_tree.c" ], + "crypto/x509/libcrypto-lib-t_acert.o" => [ + "crypto/x509/t_acert.c" + ], "crypto/x509/libcrypto-lib-t_crl.o" => [ "crypto/x509/t_crl.c" ], @@ -23557,6 +27303,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-t_x509.o" => [ "crypto/x509/t_x509.c" ], + "crypto/x509/libcrypto-lib-v3_aaa.o" => [ + "crypto/x509/v3_aaa.c" + ], + "crypto/x509/libcrypto-lib-v3_ac_tgt.o" => [ + "crypto/x509/v3_ac_tgt.c" + ], "crypto/x509/libcrypto-lib-v3_addr.o" => [ "crypto/x509/v3_addr.c" ], @@ -23572,6 +27324,21 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_asid.o" => [ "crypto/x509/v3_asid.c" ], + "crypto/x509/libcrypto-lib-v3_attrdesc.o" => [ + "crypto/x509/v3_attrdesc.c" + ], + "crypto/x509/libcrypto-lib-v3_attrmap.o" => [ + "crypto/x509/v3_attrmap.c" + ], + "crypto/x509/libcrypto-lib-v3_audit_id.o" => [ + "crypto/x509/v3_audit_id.c" + ], + "crypto/x509/libcrypto-lib-v3_authattid.o" => [ + "crypto/x509/v3_authattid.c" + ], + "crypto/x509/libcrypto-lib-v3_battcons.o" => [ + "crypto/x509/v3_battcons.c" + ], "crypto/x509/libcrypto-lib-v3_bcons.o" => [ "crypto/x509/v3_bcons.c" ], @@ -23596,15 +27363,24 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_genn.o" => [ "crypto/x509/v3_genn.c" ], + "crypto/x509/libcrypto-lib-v3_group_ac.o" => [ + "crypto/x509/v3_group_ac.c" + ], "crypto/x509/libcrypto-lib-v3_ia5.o" => [ "crypto/x509/v3_ia5.c" ], + "crypto/x509/libcrypto-lib-v3_ind_iss.o" => [ + "crypto/x509/v3_ind_iss.c" + ], "crypto/x509/libcrypto-lib-v3_info.o" => [ "crypto/x509/v3_info.c" ], "crypto/x509/libcrypto-lib-v3_int.o" => [ "crypto/x509/v3_int.c" ], + "crypto/x509/libcrypto-lib-v3_iobo.o" => [ + "crypto/x509/v3_iobo.c" + ], "crypto/x509/libcrypto-lib-v3_ist.o" => [ "crypto/x509/v3_ist.c" ], @@ -23614,6 +27390,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_ncons.o" => [ "crypto/x509/v3_ncons.c" ], + "crypto/x509/libcrypto-lib-v3_no_ass.o" => [ + "crypto/x509/v3_no_ass.c" + ], + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o" => [ + "crypto/x509/v3_no_rev_avail.c" + ], "crypto/x509/libcrypto-lib-v3_pci.o" => [ "crypto/x509/v3_pci.c" ], @@ -23635,18 +27417,36 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_purp.o" => [ "crypto/x509/v3_purp.c" ], + "crypto/x509/libcrypto-lib-v3_rolespec.o" => [ + "crypto/x509/v3_rolespec.c" + ], "crypto/x509/libcrypto-lib-v3_san.o" => [ "crypto/x509/v3_san.c" ], + "crypto/x509/libcrypto-lib-v3_sda.o" => [ + "crypto/x509/v3_sda.c" + ], + "crypto/x509/libcrypto-lib-v3_single_use.o" => [ + "crypto/x509/v3_single_use.c" + ], "crypto/x509/libcrypto-lib-v3_skid.o" => [ "crypto/x509/v3_skid.c" ], + "crypto/x509/libcrypto-lib-v3_soa_id.o" => [ + "crypto/x509/v3_soa_id.c" + ], "crypto/x509/libcrypto-lib-v3_sxnet.o" => [ "crypto/x509/v3_sxnet.c" ], + "crypto/x509/libcrypto-lib-v3_timespec.o" => [ + "crypto/x509/v3_timespec.c" + ], "crypto/x509/libcrypto-lib-v3_tlsf.o" => [ "crypto/x509/v3_tlsf.c" ], + "crypto/x509/libcrypto-lib-v3_usernotice.o" => [ + "crypto/x509/v3_usernotice.c" + ], "crypto/x509/libcrypto-lib-v3_utf8.o" => [ "crypto/x509/v3_utf8.c" ], @@ -23656,6 +27456,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3err.o" => [ "crypto/x509/v3err.c" ], + "crypto/x509/libcrypto-lib-x509_acert.o" => [ + "crypto/x509/x509_acert.c" + ], "crypto/x509/libcrypto-lib-x509_att.o" => [ "crypto/x509/x509_att.c" ], @@ -23707,6 +27510,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_vpm.o" => [ "crypto/x509/x509_vpm.c" ], + "crypto/x509/libcrypto-lib-x509aset.o" => [ + "crypto/x509/x509aset.c" + ], "crypto/x509/libcrypto-lib-x509cset.o" => [ "crypto/x509/x509cset.c" ], @@ -23734,6 +27540,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_exten.o" => [ "crypto/x509/x_exten.c" ], + "crypto/x509/libcrypto-lib-x_ietfatt.o" => [ + "crypto/x509/x_ietfatt.c" + ], "crypto/x509/libcrypto-lib-x_name.o" => [ "crypto/x509/x_name.c" ], @@ -23758,6 +27567,16 @@ our %unified_info = ( "engines/libcrypto-lib-e_padlock.o" => [ "engines/e_padlock.c" ], + "fuzz/acert-test" => [ + "fuzz/acert-test-bin-acert.o", + "fuzz/acert-test-bin-test-corpus.o" + ], + "fuzz/acert-test-bin-acert.o" => [ + "fuzz/acert.c" + ], + "fuzz/acert-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/asn1-test" => [ "fuzz/asn1-test-bin-asn1.o", "fuzz/asn1-test-bin-fuzz_rand.o", @@ -23870,6 +27689,190 @@ our %unified_info = ( "fuzz/ct-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/decoder-test" => [ + "fuzz/decoder-test-bin-decoder.o", + "fuzz/decoder-test-bin-fuzz_rand.o", + "fuzz/decoder-test-bin-test-corpus.o" + ], + "fuzz/decoder-test-bin-decoder.o" => [ + "fuzz/decoder.c" + ], + "fuzz/decoder-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/decoder-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsclient-test" => [ + "fuzz/dtlsclient-test-bin-dtlsclient.o", + "fuzz/dtlsclient-test-bin-fuzz_rand.o", + "fuzz/dtlsclient-test-bin-test-corpus.o" + ], + "fuzz/dtlsclient-test-bin-dtlsclient.o" => [ + "fuzz/dtlsclient.c" + ], + "fuzz/dtlsclient-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsclient-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsserver-test" => [ + "fuzz/dtlsserver-test-bin-dtlsserver.o", + "fuzz/dtlsserver-test-bin-fuzz_rand.o", + "fuzz/dtlsserver-test-bin-test-corpus.o" + ], + "fuzz/dtlsserver-test-bin-dtlsserver.o" => [ + "fuzz/dtlsserver.c" + ], + "fuzz/dtlsserver-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsserver-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/hashtable-test" => [ + "fuzz/hashtable-test-bin-fuzz_rand.o", + "fuzz/hashtable-test-bin-hashtable.o", + "fuzz/hashtable-test-bin-test-corpus.o" + ], + "fuzz/hashtable-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/hashtable-test-bin-hashtable.o" => [ + "fuzz/hashtable.c" + ], + "fuzz/hashtable-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-dsa-test" => [ + "fuzz/ml-dsa-test-bin-fuzz_rand.o", + "fuzz/ml-dsa-test-bin-ml-dsa.o", + "fuzz/ml-dsa-test-bin-test-corpus.o" + ], + "fuzz/ml-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-dsa-test-bin-ml-dsa.o" => [ + "fuzz/ml-dsa.c" + ], + "fuzz/ml-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-kem-test" => [ + "fuzz/ml-kem-test-bin-fuzz_rand.o", + "fuzz/ml-kem-test-bin-ml-kem.o", + "fuzz/ml-kem-test-bin-test-corpus.o" + ], + "fuzz/ml-kem-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-kem-test-bin-ml-kem.o" => [ + "fuzz/ml-kem.c" + ], + "fuzz/ml-kem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/pem-test" => [ + "fuzz/pem-test-bin-pem.o", + "fuzz/pem-test-bin-test-corpus.o" + ], + "fuzz/pem-test-bin-pem.o" => [ + "fuzz/pem.c" + ], + "fuzz/pem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/provider-test" => [ + "fuzz/provider-test-bin-provider.o", + "fuzz/provider-test-bin-test-corpus.o" + ], + "fuzz/provider-test-bin-provider.o" => [ + "fuzz/provider.c" + ], + "fuzz/provider-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/punycode-test" => [ + "fuzz/punycode-test-bin-punycode.o", + "fuzz/punycode-test-bin-test-corpus.o" + ], + "fuzz/punycode-test-bin-punycode.o" => [ + "fuzz/punycode.c" + ], + "fuzz/punycode-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-client-test" => [ + "fuzz/quic-client-test-bin-fuzz_rand.o", + "fuzz/quic-client-test-bin-quic-client.o", + "fuzz/quic-client-test-bin-test-corpus.o" + ], + "fuzz/quic-client-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-client-test-bin-quic-client.o" => [ + "fuzz/quic-client.c" + ], + "fuzz/quic-client-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-lcidm-test" => [ + "fuzz/quic-lcidm-test-bin-fuzz_rand.o", + "fuzz/quic-lcidm-test-bin-quic-lcidm.o", + "fuzz/quic-lcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-lcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-lcidm-test-bin-quic-lcidm.o" => [ + "fuzz/quic-lcidm.c" + ], + "fuzz/quic-lcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-rcidm-test" => [ + "fuzz/quic-rcidm-test-bin-fuzz_rand.o", + "fuzz/quic-rcidm-test-bin-quic-rcidm.o", + "fuzz/quic-rcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-rcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-rcidm-test-bin-quic-rcidm.o" => [ + "fuzz/quic-rcidm.c" + ], + "fuzz/quic-rcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-server-test" => [ + "fuzz/quic-server-test-bin-fuzz_rand.o", + "fuzz/quic-server-test-bin-quic-server.o", + "fuzz/quic-server-test-bin-test-corpus.o" + ], + "fuzz/quic-server-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-server-test-bin-quic-server.o" => [ + "fuzz/quic-server.c" + ], + "fuzz/quic-server-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-srtm-test" => [ + "fuzz/quic-srtm-test-bin-fuzz_rand.o", + "fuzz/quic-srtm-test-bin-quic-srtm.o", + "fuzz/quic-srtm-test-bin-test-corpus.o" + ], + "fuzz/quic-srtm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-srtm-test-bin-quic-srtm.o" => [ + "fuzz/quic-srtm.c" + ], + "fuzz/quic-srtm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/server-test" => [ "fuzz/server-test-bin-fuzz_rand.o", "fuzz/server-test-bin-server.o", @@ -23884,6 +27887,40 @@ our %unified_info = ( "fuzz/server-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/slh-dsa-test" => [ + "fuzz/slh-dsa-test-bin-fuzz_rand.o", + "fuzz/slh-dsa-test-bin-slh-dsa.o", + "fuzz/slh-dsa-test-bin-test-corpus.o" + ], + "fuzz/slh-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/slh-dsa-test-bin-slh-dsa.o" => [ + "fuzz/slh-dsa.c" + ], + "fuzz/slh-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/smime-test" => [ + "fuzz/smime-test-bin-smime.o", + "fuzz/smime-test-bin-test-corpus.o" + ], + "fuzz/smime-test-bin-smime.o" => [ + "fuzz/smime.c" + ], + "fuzz/smime-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test" => [ + "fuzz/v3name-test-bin-test-corpus.o", + "fuzz/v3name-test-bin-v3name.o" + ], + "fuzz/v3name-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test-bin-v3name.o" => [ + "fuzz/v3name.c" + ], "fuzz/x509-test" => [ "fuzz/x509-test-bin-fuzz_rand.o", "fuzz/x509-test-bin-test-corpus.o", @@ -23910,6 +27947,7 @@ our %unified_info = ( "crypto/aes/libcrypto-lib-aesni-sha1-x86_64.o", "crypto/aes/libcrypto-lib-aesni-sha256-x86_64.o", "crypto/aes/libcrypto-lib-aesni-x86_64.o", + "crypto/aes/libcrypto-lib-aesni-xts-avx512.o", "crypto/aes/libcrypto-lib-bsaes-x86_64.o", "crypto/aes/libcrypto-lib-vpaes-x86_64.o", "crypto/aria/libcrypto-lib-aria.o", @@ -24008,6 +28046,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -24048,8 +28087,13 @@ our %unified_info = ( "crypto/bn/libcrypto-lib-bn_srp.o", "crypto/bn/libcrypto-lib-bn_word.o", "crypto/bn/libcrypto-lib-bn_x931p.o", + "crypto/bn/libcrypto-lib-rsaz-2k-avx512.o", + "crypto/bn/libcrypto-lib-rsaz-2k-avxifma.o", + "crypto/bn/libcrypto-lib-rsaz-3k-avx512.o", + "crypto/bn/libcrypto-lib-rsaz-3k-avxifma.o", + "crypto/bn/libcrypto-lib-rsaz-4k-avx512.o", + "crypto/bn/libcrypto-lib-rsaz-4k-avxifma.o", "crypto/bn/libcrypto-lib-rsaz-avx2.o", - "crypto/bn/libcrypto-lib-rsaz-avx512.o", "crypto/bn/libcrypto-lib-rsaz-x86_64.o", "crypto/bn/libcrypto-lib-rsaz_exp.o", "crypto/bn/libcrypto-lib-rsaz_exp_x2.o", @@ -24075,6 +28119,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -24253,7 +28298,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", + "crypto/err/libcrypto-lib-err_mark.o", "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o", "crypto/ess/libcrypto-lib-ess_asn1.o", "crypto/ess/libcrypto-lib-ess_err.o", "crypto/ess/libcrypto-lib-ess_lib.o", @@ -24336,7 +28383,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/ffc/libcrypto-lib-ffc_backend.o", "crypto/ffc/libcrypto-lib-ffc_dh.o", "crypto/ffc/libcrypto-lib-ffc_key_generate.o", @@ -24344,7 +28393,11 @@ our %unified_info = ( "crypto/ffc/libcrypto-lib-ffc_params.o", "crypto/ffc/libcrypto-lib-ffc_params_generate.o", "crypto/ffc/libcrypto-lib-ffc_params_validate.o", + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", "crypto/hmac/libcrypto-lib-hmac.o", + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o", "crypto/http/libcrypto-lib-http_client.o", "crypto/http/libcrypto-lib-http_err.o", "crypto/http/libcrypto-lib-http_lib.o", @@ -24358,6 +28411,7 @@ our %unified_info = ( "crypto/lhash/libcrypto-lib-lhash.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -24367,10 +28421,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -24387,6 +28444,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -24394,12 +28452,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libcrypto-lib-x86_64cpuid.o", @@ -24411,6 +28473,16 @@ our %unified_info = ( "crypto/md5/libcrypto-lib-md5_sha1.o", "crypto/mdc2/libcrypto-lib-mdc2_one.o", "crypto/mdc2/libcrypto-lib-mdc2dgst.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_kem/libcrypto-lib-ml_kem.o", + "crypto/modes/libcrypto-lib-aes-gcm-avx512.o", "crypto/modes/libcrypto-lib-aesni-gcm-x86_64.o", "crypto/modes/libcrypto-lib-cbc128.o", "crypto/modes/libcrypto-lib-ccm128.o", @@ -24424,6 +28496,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/objects/libcrypto-lib-o_names.o", "crypto/objects/libcrypto-lib-obj_dat.o", "crypto/objects/libcrypto-lib-obj_err.o", @@ -24488,6 +28561,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rc2/libcrypto-lib-rc2_cbc.o", "crypto/rc2/libcrypto-lib-rc2_ecb.o", @@ -24541,6 +28615,16 @@ our %unified_info = ( "crypto/sha/libcrypto-lib-sha512-x86_64.o", "crypto/sha/libcrypto-lib-sha512.o", "crypto/siphash/libcrypto-lib-siphash.o", + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", "crypto/sm2/libcrypto-lib-sm2_crypt.o", "crypto/sm2/libcrypto-lib-sm2_err.o", "crypto/sm2/libcrypto-lib-sm2_key.o", @@ -24558,6 +28642,12 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_register.o", "crypto/store/libcrypto-lib-store_result.o", "crypto/store/libcrypto-lib-store_strings.o", + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", "crypto/ts/libcrypto-lib-ts_asn1.o", "crypto/ts/libcrypto-lib-ts_conf.o", "crypto/ts/libcrypto-lib-ts_err.o", @@ -24586,14 +28676,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -24602,12 +28700,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -24615,13 +28718,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -24639,6 +28749,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -24648,6 +28759,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -24669,14 +28781,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -24693,12 +28806,60 @@ our %unified_info = ( "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", "ssl/libssl-lib-tls_srp.o", - "ssl/record/libssl-lib-dtls1_bitmap.o", + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o", "ssl/record/libssl-lib-rec_layer_d1.o", "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o", "ssl/statem/libssl-lib-extensions.o", "ssl/statem/libssl-lib-extensions_clnt.o", "ssl/statem/libssl-lib-extensions_cust.o", @@ -24736,12 +28897,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/der/der_ecx_key.c" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/der/der_ml_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/der/der_ml_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/der/der_rsa_gen.c" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/der/der_rsa_key.c" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/der/der_slh_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/der/der_slh_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/der/der_wrap_gen.c" ], @@ -24808,6 +28981,9 @@ our %unified_info = ( "providers/common/libfips-lib-securitycheck_fips.o" => [ "providers/common/securitycheck_fips.c" ], + "providers/endecode_test-bin-legacyprov.o" => [ + "providers/legacyprov.c" + ], "providers/evp_extra_test-bin-legacyprov.o" => [ "providers/legacyprov.c" ], @@ -24822,6 +28998,9 @@ our %unified_info = ( "providers/fips/fips-dso-fips_entry.o" => [ "providers/fips/fips_entry.c" ], + "providers/fips/libfips-lib-fipsindicator.o" => [ + "providers/fips/fipsindicator.c" + ], "providers/fips/libfips-lib-fipsprov.o" => [ "providers/fips/fipsprov.c" ], @@ -24885,6 +29064,15 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o" => [ "providers/implementations/ciphers/cipher_aes_gcm_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o" => [ "providers/implementations/ciphers/cipher_aes_hw.c" ], @@ -24957,9 +29145,27 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o" => [ "providers/implementations/ciphers/cipher_sm4.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o" => [ "providers/implementations/ciphers/cipher_sm4_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o" => [ "providers/implementations/ciphers/cipher_tdes.c" ], @@ -25179,6 +29385,15 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" => [ "providers/implementations/encode_decode/endecoder_common.c" ], + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o" => [ + "providers/implementations/encode_decode/ml_common_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o" => [ + "providers/implementations/encode_decode/ml_dsa_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" => [ + "providers/implementations/encode_decode/ml_kem_codecs.c" + ], "providers/implementations/exchange/libdefault-lib-dh_exch.o" => [ "providers/implementations/exchange/dh_exch.c" ], @@ -25203,9 +29418,15 @@ our %unified_info = ( "providers/implementations/exchange/libfips-lib-kdf_exch.o" => [ "providers/implementations/exchange/kdf_exch.c" ], + "providers/implementations/kdfs/libdefault-lib-argon2.o" => [ + "providers/implementations/kdfs/argon2.c" + ], "providers/implementations/kdfs/libdefault-lib-hkdf.o" => [ "providers/implementations/kdfs/hkdf.c" ], + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o" => [ + "providers/implementations/kdfs/hmacdrbg_kdf.c" + ], "providers/implementations/kdfs/libdefault-lib-kbkdf.o" => [ "providers/implementations/kdfs/kbkdf.c" ], @@ -25263,12 +29484,39 @@ our %unified_info = ( "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" => [ "providers/implementations/kdfs/pbkdf1.c" ], + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" => [ + "providers/implementations/kdfs/pvkkdf.c" + ], + "providers/implementations/kem/libdefault-lib-ec_kem.o" => [ + "providers/implementations/kem/ec_kem.c" + ], + "providers/implementations/kem/libdefault-lib-ecx_kem.o" => [ + "providers/implementations/kem/ecx_kem.c" + ], + "providers/implementations/kem/libdefault-lib-kem_util.o" => [ + "providers/implementations/kem/kem_util.c" + ], + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libdefault-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libdefault-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libfips-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libfips-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libfips-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libtemplate-lib-template_kem.o" => [ + "providers/implementations/kem/template_kem.c" + ], "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25287,9 +29535,21 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25308,9 +29568,24 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" => [ + "providers/implementations/keymgmt/template_kmgmt.c" + ], "providers/implementations/macs/libdefault-lib-blake2b_mac.o" => [ "providers/implementations/macs/blake2b_mac.c" ], @@ -25347,9 +29622,6 @@ our %unified_info = ( "providers/implementations/macs/libfips-lib-kmac_prov.o" => [ "providers/implementations/macs/kmac_prov.c" ], - "providers/implementations/rands/libdefault-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libdefault-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25365,12 +29637,12 @@ our %unified_info = ( "providers/implementations/rands/libdefault-lib-seed_src.o" => [ "providers/implementations/rands/seed_src.c" ], + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o" => [ + "providers/implementations/rands/seed_src_jitter.c" + ], "providers/implementations/rands/libdefault-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], - "providers/implementations/rands/libfips-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libfips-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25383,6 +29655,9 @@ our %unified_info = ( "providers/implementations/rands/libfips-lib-drbg_hmac.o" => [ "providers/implementations/rands/drbg_hmac.c" ], + "providers/implementations/rands/libfips-lib-fips_crng_test.o" => [ + "providers/implementations/rands/fips_crng_test.c" + ], "providers/implementations/rands/libfips-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], @@ -25410,9 +29685,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/implementations/signature/sm2_sig.c" ], @@ -25428,15 +29709,36 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libfips-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], "providers/implementations/storemgmt/libdefault-lib-file_store.o" => [ "providers/implementations/storemgmt/file_store.c" ], "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o" => [ "providers/implementations/storemgmt/file_store_any2obj.c" ], + "providers/implementations/storemgmt/libdefault-lib-winstore_store.o" => [ + "providers/implementations/storemgmt/winstore_store.c" + ], "providers/legacy" => [ "providers/legacy-dso-legacy.res", "providers/legacy-dso-legacyprov.o", @@ -25458,8 +29760,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/libcommon-lib-provider_ctx.o", "providers/common/libcommon-lib-provider_err.o", @@ -25471,7 +29777,7 @@ our %unified_info = ( "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", "providers/implementations/digests/libcommon-lib-digestcommon.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/methods/libcommon-lib-tls_pad.o" ], "providers/libcrypto-lib-baseprov.o" => [ "providers/baseprov.c" @@ -25507,6 +29813,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -25531,7 +29840,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -25560,11 +29875,16 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o", "providers/implementations/exchange/libdefault-lib-dh_exch.o", "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", "providers/implementations/exchange/libdefault-lib-ecx_exch.o", "providers/implementations/exchange/libdefault-lib-kdf_exch.o", + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -25575,6 +29895,11 @@ our %unified_info = ( "providers/implementations/kdfs/libdefault-lib-sskdf.o", "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", "providers/implementations/kdfs/libdefault-lib-x942kdf.o", + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", @@ -25582,7 +29907,11 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libdefault-lib-blake2b_mac.o", "providers/implementations/macs/libdefault-lib-blake2s_mac.o", "providers/implementations/macs/libdefault-lib-cmac_prov.o", @@ -25591,12 +29920,12 @@ our %unified_info = ( "providers/implementations/macs/libdefault-lib-kmac_prov.o", "providers/implementations/macs/libdefault-lib-poly1305_prov.o", "providers/implementations/macs/libdefault-lib-siphash_prov.o", - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", @@ -25606,11 +29935,16 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", "providers/implementations/storemgmt/libdefault-lib-file_store.o", "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", - "ssl/libdefault-lib-s3_cbc.o" + "providers/implementations/storemgmt/libdefault-lib-winstore_store.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" ], "providers/libfips.a" => [ "crypto/aes/libfips-lib-aes-x86_64.o", @@ -25620,6 +29954,7 @@ our %unified_info = ( "crypto/aes/libfips-lib-aesni-sha1-x86_64.o", "crypto/aes/libfips-lib-aesni-sha256-x86_64.o", "crypto/aes/libfips-lib-aesni-x86_64.o", + "crypto/aes/libfips-lib-aesni-xts-avx512.o", "crypto/aes/libfips-lib-bsaes-x86_64.o", "crypto/aes/libfips-lib-vpaes-x86_64.o", "crypto/bn/libfips-lib-bn_add.o", @@ -25650,8 +29985,13 @@ our %unified_info = ( "crypto/bn/libfips-lib-bn_sqr.o", "crypto/bn/libfips-lib-bn_sqrt.o", "crypto/bn/libfips-lib-bn_word.o", + "crypto/bn/libfips-lib-rsaz-2k-avx512.o", + "crypto/bn/libfips-lib-rsaz-2k-avxifma.o", + "crypto/bn/libfips-lib-rsaz-3k-avx512.o", + "crypto/bn/libfips-lib-rsaz-3k-avxifma.o", + "crypto/bn/libfips-lib-rsaz-4k-avx512.o", + "crypto/bn/libfips-lib-rsaz-4k-avxifma.o", "crypto/bn/libfips-lib-rsaz-avx2.o", - "crypto/bn/libfips-lib-rsaz-avx512.o", "crypto/bn/libfips-lib-rsaz-x86_64.o", "crypto/bn/libfips-lib-rsaz_exp.o", "crypto/bn/libfips-lib-rsaz_exp_x2.o", @@ -25728,14 +30068,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", + "crypto/evp/libfips-lib-s_lib.o", "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o", "crypto/ffc/libfips-lib-ffc_backend.o", "crypto/ffc/libfips-lib-ffc_dh.o", "crypto/ffc/libfips-lib-ffc_key_generate.o", @@ -25743,6 +30084,8 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params.o", "crypto/ffc/libfips-lib-ffc_params_generate.o", "crypto/ffc/libfips-lib-ffc_params_validate.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o", "crypto/hmac/libfips-lib-hmac.o", "crypto/lhash/libfips-lib-lhash.o", "crypto/libfips-lib-asn1_dsa.o", @@ -25764,6 +30107,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -25772,7 +30116,18 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", "crypto/libfips-lib-x86_64cpuid.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o", + "crypto/ml_kem/libfips-lib-ml_kem.o", + "crypto/modes/libfips-lib-aes-gcm-avx512.o", "crypto/modes/libfips-lib-aesni-gcm-x86_64.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", @@ -25783,6 +30138,7 @@ our %unified_info = ( "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o", "crypto/property/libfips-lib-defn_cache.o", "crypto/property/libfips-lib-property.o", "crypto/property/libfips-lib-property_parse.o", @@ -25816,7 +30172,23 @@ our %unified_info = ( "crypto/sha/libfips-lib-sha3.o", "crypto/sha/libfips-lib-sha512-x86_64.o", "crypto/sha/libfips-lib-sha512.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o", "crypto/stack/libfips-lib-stack.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o", "providers/common/der/libfips-lib-der_rsa_sig.o", "providers/common/libfips-lib-bio_prov.o", "providers/common/libfips-lib-capabilities.o", @@ -25825,6 +30197,7 @@ our %unified_info = ( "providers/common/libfips-lib-provider_util.o", "providers/common/libfips-lib-securitycheck.o", "providers/common/libfips-lib-securitycheck_fips.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o", @@ -25862,6 +30235,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", "providers/implementations/kem/libfips-lib-rsa_kem.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", @@ -25869,24 +30244,32 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libfips-lib-cmac_prov.o", "providers/implementations/macs/libfips-lib-gmac_prov.o", "providers/implementations/macs/libfips-lib-hmac_prov.o", "providers/implementations/macs/libfips-lib-kmac_prov.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o", "providers/libcommon.a", - "ssl/libfips-lib-s3_cbc.o" + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "providers/liblegacy-lib-prov_running.o" => [ "providers/prov_running.c" @@ -25916,13 +30299,12 @@ our %unified_info = ( "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", "providers/implementations/digests/liblegacy-lib-wp_prov.o", "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o", "providers/liblegacy-lib-prov_running.o" ], - "ssl/libdefault-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" - ], - "ssl/libfips-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" + "providers/libtemplate.a" => [ + "providers/implementations/kem/libtemplate-lib-template_kem.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "ssl/libssl-lib-bio_ssl.o" => [ "ssl/bio_ssl.c" @@ -25942,6 +30324,9 @@ our %unified_info = ( "ssl/libssl-lib-pqueue.o" => [ "ssl/pqueue.c" ], + "ssl/libssl-lib-priority_queue.o" => [ + "ssl/priority_queue.c" + ], "ssl/libssl-lib-s3_enc.o" => [ "ssl/s3_enc.c" ], @@ -25957,15 +30342,15 @@ our %unified_info = ( "ssl/libssl-lib-ssl_cert.o" => [ "ssl/ssl_cert.c" ], + "ssl/libssl-lib-ssl_cert_comp.o" => [ + "ssl/ssl_cert_comp.c" + ], "ssl/libssl-lib-ssl_ciph.o" => [ "ssl/ssl_ciph.c" ], "ssl/libssl-lib-ssl_conf.o" => [ "ssl/ssl_conf.c" ], - "ssl/libssl-lib-ssl_err.o" => [ - "ssl/ssl_err.c" - ], "ssl/libssl-lib-ssl_err_legacy.o" => [ "ssl/ssl_err_legacy.c" ], @@ -26014,11 +30399,131 @@ our %unified_info = ( "ssl/libssl-lib-tls_srp.o" => [ "ssl/tls_srp.c" ], - "ssl/record/libcommon-lib-tls_pad.o" => [ - "ssl/record/tls_pad.c" + "ssl/quic/libssl-lib-cc_newreno.o" => [ + "ssl/quic/cc_newreno.c" + ], + "ssl/quic/libssl-lib-json_enc.o" => [ + "ssl/quic/json_enc.c" + ], + "ssl/quic/libssl-lib-qlog.o" => [ + "ssl/quic/qlog.c" + ], + "ssl/quic/libssl-lib-qlog_event_helpers.o" => [ + "ssl/quic/qlog_event_helpers.c" + ], + "ssl/quic/libssl-lib-quic_ackm.o" => [ + "ssl/quic/quic_ackm.c" + ], + "ssl/quic/libssl-lib-quic_cfq.o" => [ + "ssl/quic/quic_cfq.c" + ], + "ssl/quic/libssl-lib-quic_channel.o" => [ + "ssl/quic/quic_channel.c" + ], + "ssl/quic/libssl-lib-quic_demux.o" => [ + "ssl/quic/quic_demux.c" + ], + "ssl/quic/libssl-lib-quic_engine.o" => [ + "ssl/quic/quic_engine.c" + ], + "ssl/quic/libssl-lib-quic_fc.o" => [ + "ssl/quic/quic_fc.c" + ], + "ssl/quic/libssl-lib-quic_fifd.o" => [ + "ssl/quic/quic_fifd.c" + ], + "ssl/quic/libssl-lib-quic_impl.o" => [ + "ssl/quic/quic_impl.c" + ], + "ssl/quic/libssl-lib-quic_lcidm.o" => [ + "ssl/quic/quic_lcidm.c" + ], + "ssl/quic/libssl-lib-quic_method.o" => [ + "ssl/quic/quic_method.c" + ], + "ssl/quic/libssl-lib-quic_obj.o" => [ + "ssl/quic/quic_obj.c" + ], + "ssl/quic/libssl-lib-quic_port.o" => [ + "ssl/quic/quic_port.c" + ], + "ssl/quic/libssl-lib-quic_rcidm.o" => [ + "ssl/quic/quic_rcidm.c" + ], + "ssl/quic/libssl-lib-quic_reactor.o" => [ + "ssl/quic/quic_reactor.c" + ], + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o" => [ + "ssl/quic/quic_reactor_wait_ctx.c" + ], + "ssl/quic/libssl-lib-quic_record_rx.o" => [ + "ssl/quic/quic_record_rx.c" + ], + "ssl/quic/libssl-lib-quic_record_shared.o" => [ + "ssl/quic/quic_record_shared.c" + ], + "ssl/quic/libssl-lib-quic_record_tx.o" => [ + "ssl/quic/quic_record_tx.c" + ], + "ssl/quic/libssl-lib-quic_record_util.o" => [ + "ssl/quic/quic_record_util.c" ], - "ssl/record/libssl-lib-dtls1_bitmap.o" => [ - "ssl/record/dtls1_bitmap.c" + "ssl/quic/libssl-lib-quic_rstream.o" => [ + "ssl/quic/quic_rstream.c" + ], + "ssl/quic/libssl-lib-quic_rx_depack.o" => [ + "ssl/quic/quic_rx_depack.c" + ], + "ssl/quic/libssl-lib-quic_sf_list.o" => [ + "ssl/quic/quic_sf_list.c" + ], + "ssl/quic/libssl-lib-quic_srt_gen.o" => [ + "ssl/quic/quic_srt_gen.c" + ], + "ssl/quic/libssl-lib-quic_srtm.o" => [ + "ssl/quic/quic_srtm.c" + ], + "ssl/quic/libssl-lib-quic_sstream.o" => [ + "ssl/quic/quic_sstream.c" + ], + "ssl/quic/libssl-lib-quic_statm.o" => [ + "ssl/quic/quic_statm.c" + ], + "ssl/quic/libssl-lib-quic_stream_map.o" => [ + "ssl/quic/quic_stream_map.c" + ], + "ssl/quic/libssl-lib-quic_thread_assist.o" => [ + "ssl/quic/quic_thread_assist.c" + ], + "ssl/quic/libssl-lib-quic_tls.o" => [ + "ssl/quic/quic_tls.c" + ], + "ssl/quic/libssl-lib-quic_tls_api.o" => [ + "ssl/quic/quic_tls_api.c" + ], + "ssl/quic/libssl-lib-quic_trace.o" => [ + "ssl/quic/quic_trace.c" + ], + "ssl/quic/libssl-lib-quic_tserver.o" => [ + "ssl/quic/quic_tserver.c" + ], + "ssl/quic/libssl-lib-quic_txp.o" => [ + "ssl/quic/quic_txp.c" + ], + "ssl/quic/libssl-lib-quic_txpim.o" => [ + "ssl/quic/quic_txpim.c" + ], + "ssl/quic/libssl-lib-quic_types.o" => [ + "ssl/quic/quic_types.c" + ], + "ssl/quic/libssl-lib-quic_wire.o" => [ + "ssl/quic/quic_wire.c" + ], + "ssl/quic/libssl-lib-quic_wire_pkt.o" => [ + "ssl/quic/quic_wire_pkt.c" + ], + "ssl/quic/libssl-lib-uint_set.o" => [ + "ssl/quic/uint_set.c" ], "ssl/record/libssl-lib-rec_layer_d1.o" => [ "ssl/record/rec_layer_d1.c" @@ -26026,14 +30531,44 @@ our %unified_info = ( "ssl/record/libssl-lib-rec_layer_s3.o" => [ "ssl/record/rec_layer_s3.c" ], - "ssl/record/libssl-lib-ssl3_buffer.o" => [ - "ssl/record/ssl3_buffer.c" + "ssl/record/methods/libcommon-lib-tls_pad.o" => [ + "ssl/record/methods/tls_pad.c" + ], + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libfips-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libssl-lib-dtls_meth.o" => [ + "ssl/record/methods/dtls_meth.c" + ], + "ssl/record/methods/libssl-lib-ssl3_meth.o" => [ + "ssl/record/methods/ssl3_meth.c" + ], + "ssl/record/methods/libssl-lib-tls13_meth.o" => [ + "ssl/record/methods/tls13_meth.c" + ], + "ssl/record/methods/libssl-lib-tls1_meth.o" => [ + "ssl/record/methods/tls1_meth.c" ], - "ssl/record/libssl-lib-ssl3_record.o" => [ - "ssl/record/ssl3_record.c" + "ssl/record/methods/libssl-lib-tls_common.o" => [ + "ssl/record/methods/tls_common.c" ], - "ssl/record/libssl-lib-ssl3_record_tls13.o" => [ - "ssl/record/ssl3_record_tls13.c" + "ssl/record/methods/libssl-lib-tls_multib.o" => [ + "ssl/record/methods/tls_multib.c" + ], + "ssl/record/methods/libssl-lib-tlsany_meth.o" => [ + "ssl/record/methods/tlsany_meth.c" + ], + "ssl/rio/libssl-lib-poll_builder.o" => [ + "ssl/rio/poll_builder.c" + ], + "ssl/rio/libssl-lib-poll_immediate.o" => [ + "ssl/rio/poll_immediate.c" + ], + "ssl/rio/libssl-lib-rio_notifier.o" => [ + "ssl/rio/rio_notifier.c" ], "ssl/statem/libssl-lib-extensions.o" => [ "ssl/statem/extensions.c" @@ -26129,6 +30664,8 @@ our %unified_info = ( "test/asn1_string_table_test.c" ], "test/asn1_time_test" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1_time_test-bin-ctype.o", "test/asn1_time_test-bin-asn1_time_test.o" ], "test/asn1_time_test-bin-asn1_time_test.o" => [ @@ -26159,6 +30696,18 @@ our %unified_info = ( "test/bftest-bin-bftest.o" => [ "test/bftest.c" ], + "test/bio_addr_test" => [ + "test/bio_addr_test-bin-bio_addr_test.o" + ], + "test/bio_addr_test-bin-bio_addr_test.o" => [ + "test/bio_addr_test.c" + ], + "test/bio_base64_test" => [ + "test/bio_base64_test-bin-bio_base64_test.o" + ], + "test/bio_base64_test-bin-bio_base64_test.o" => [ + "test/bio_base64_test.c" + ], "test/bio_callback_test" => [ "test/bio_callback_test-bin-bio_callback_test.o" ], @@ -26171,6 +30720,12 @@ our %unified_info = ( "test/bio_core_test-bin-bio_core_test.o" => [ "test/bio_core_test.c" ], + "test/bio_dgram_test" => [ + "test/bio_dgram_test-bin-bio_dgram_test.o" + ], + "test/bio_dgram_test-bin-bio_dgram_test.o" => [ + "test/bio_dgram_test.c" + ], "test/bio_enc_test" => [ "test/bio_enc_test-bin-bio_enc_test.o" ], @@ -26183,6 +30738,12 @@ our %unified_info = ( "test/bio_memleak_test-bin-bio_memleak_test.o" => [ "test/bio_memleak_test.c" ], + "test/bio_meth_test" => [ + "test/bio_meth_test-bin-bio_meth_test.o" + ], + "test/bio_meth_test-bin-bio_meth_test.o" => [ + "test/bio_meth_test.c" + ], "test/bio_prefix_text" => [ "test/bio_prefix_text-bin-bio_prefix_text.o" ], @@ -26201,6 +30762,12 @@ our %unified_info = ( "test/bio_readbuffer_test-bin-bio_readbuffer_test.o" => [ "test/bio_readbuffer_test.c" ], + "test/bio_tfo_test" => [ + "test/bio_tfo_test-bin-bio_tfo_test.o" + ], + "test/bio_tfo_test-bin-bio_tfo_test.o" => [ + "test/bio_tfo_test.c" + ], "test/bioprinttest" => [ "test/bioprinttest-bin-bioprinttest.o" ], @@ -26219,6 +30786,12 @@ our %unified_info = ( "test/bntest-bin-bntest.o" => [ "test/bntest.c" ], + "test/build_wincrypt_test" => [ + "test/build_wincrypt_test-bin-build_wincrypt_test.o" + ], + "test/build_wincrypt_test-bin-build_wincrypt_test.o" => [ + "test/build_wincrypt_test.c" + ], "test/buildtest_c_aes" => [ "test/buildtest_c_aes-bin-buildtest_aes.o" ], @@ -26249,6 +30822,12 @@ our %unified_info = ( "test/buildtest_c_buffer-bin-buildtest_buffer.o" => [ "test/buildtest_buffer.c" ], + "test/buildtest_c_byteorder" => [ + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" + ], + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" => [ + "test/buildtest_byteorder.c" + ], "test/buildtest_c_camellia" => [ "test/buildtest_c_camellia-bin-buildtest_camellia.o" ], @@ -26297,12 +30876,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch-bin-buildtest_core_dispatch.o" => [ "test/buildtest_core_dispatch.c" ], - "test/buildtest_c_core_names" => [ - "test/buildtest_c_core_names-bin-buildtest_core_names.o" - ], - "test/buildtest_c_core_names-bin-buildtest_core_names.o" => [ - "test/buildtest_core_names.c" - ], "test/buildtest_c_core_object" => [ "test/buildtest_c_core_object-bin-buildtest_core_object.o" ], @@ -26351,6 +30924,12 @@ our %unified_info = ( "test/buildtest_c_e_os2-bin-buildtest_e_os2.o" => [ "test/buildtest_e_os2.c" ], + "test/buildtest_c_e_ostime" => [ + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" + ], + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" => [ + "test/buildtest_e_ostime.c" + ], "test/buildtest_c_ebcdic" => [ "test/buildtest_c_ebcdic-bin-buildtest_ebcdic.o" ], @@ -26405,6 +30984,12 @@ our %unified_info = ( "test/buildtest_c_hmac-bin-buildtest_hmac.o" => [ "test/buildtest_hmac.c" ], + "test/buildtest_c_hpke" => [ + "test/buildtest_c_hpke-bin-buildtest_hpke.o" + ], + "test/buildtest_c_hpke-bin-buildtest_hpke.o" => [ + "test/buildtest_hpke.c" + ], "test/buildtest_c_http" => [ "test/buildtest_c_http-bin-buildtest_http.o" ], @@ -26417,6 +31002,12 @@ our %unified_info = ( "test/buildtest_c_idea-bin-buildtest_idea.o" => [ "test/buildtest_idea.c" ], + "test/buildtest_c_indicator" => [ + "test/buildtest_c_indicator-bin-buildtest_indicator.o" + ], + "test/buildtest_c_indicator-bin-buildtest_indicator.o" => [ + "test/buildtest_indicator.c" + ], "test/buildtest_c_kdf" => [ "test/buildtest_c_kdf-bin-buildtest_kdf.o" ], @@ -26447,6 +31038,12 @@ our %unified_info = ( "test/buildtest_c_mdc2-bin-buildtest_mdc2.o" => [ "test/buildtest_mdc2.c" ], + "test/buildtest_c_ml_kem" => [ + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" + ], + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" => [ + "test/buildtest_ml_kem.c" + ], "test/buildtest_c_modes" => [ "test/buildtest_c_modes-bin-buildtest_modes.o" ], @@ -26507,6 +31104,12 @@ our %unified_info = ( "test/buildtest_c_provider-bin-buildtest_provider.o" => [ "test/buildtest_provider.c" ], + "test/buildtest_c_quic" => [ + "test/buildtest_c_quic-bin-buildtest_quic.o" + ], + "test/buildtest_c_quic-bin-buildtest_quic.o" => [ + "test/buildtest_quic.c" + ], "test/buildtest_c_rand" => [ "test/buildtest_c_rand-bin-buildtest_rand.o" ], @@ -26591,6 +31194,12 @@ our %unified_info = ( "test/buildtest_c_symhacks-bin-buildtest_symhacks.o" => [ "test/buildtest_symhacks.c" ], + "test/buildtest_c_thread" => [ + "test/buildtest_c_thread-bin-buildtest_thread.o" + ], + "test/buildtest_c_thread-bin-buildtest_thread.o" => [ + "test/buildtest_thread.c" + ], "test/buildtest_c_tls1" => [ "test/buildtest_c_tls1-bin-buildtest_tls1.o" ], @@ -26621,6 +31230,29 @@ our %unified_info = ( "test/buildtest_c_whrlpool-bin-buildtest_whrlpool.o" => [ "test/buildtest_whrlpool.c" ], + "test/byteorder_test" => [ + "test/byteorder_test-bin-byteorder_test.o" + ], + "test/byteorder_test-bin-byteorder_test.o" => [ + "test/byteorder_test.c" + ], + "test/ca_internals_test" => [ + "apps/ca_internals_test-bin-ca.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", + "crypto/ca_internals_test-bin-ctype.o", + "test/ca_internals_test-bin-ca_internals_test.o" + ], + "test/ca_internals_test-bin-ca_internals_test.o" => [ + "test/ca_internals_test.c" + ], "test/casttest" => [ "test/casttest-bin-casttest.o" ], @@ -26799,6 +31431,12 @@ our %unified_info = ( "test/danetest-bin-danetest.o" => [ "test/danetest.c" ], + "test/decoder_propq_test" => [ + "test/decoder_propq_test-bin-decoder_propq_test.o" + ], + "test/decoder_propq_test-bin-decoder_propq_test.o" => [ + "test/decoder_propq_test.c" + ], "test/defltfips_test" => [ "test/defltfips_test-bin-defltfips_test.o" ], @@ -26880,6 +31518,7 @@ our %unified_info = ( "test/ectest.c" ], "test/endecode_test" => [ + "providers/endecode_test-bin-legacyprov.o", "test/endecode_test-bin-endecode_test.o", "test/helpers/endecode_test-bin-predefined_dhparams.o" ], @@ -26912,17 +31551,29 @@ our %unified_info = ( ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", - "test/evp_extra_test-bin-evp_extra_test.o" + "test/evp_extra_test-bin-evp_extra_test.o", + "test/evp_extra_test-bin-fake_pipelineprov.o", + "test/evp_extra_test-bin-fake_rsaprov.o" ], "test/evp_extra_test-bin-evp_extra_test.o" => [ "test/evp_extra_test.c" ], + "test/evp_extra_test-bin-fake_pipelineprov.o" => [ + "test/fake_pipelineprov.c" + ], + "test/evp_extra_test-bin-fake_rsaprov.o" => [ + "test/fake_rsaprov.c" + ], "test/evp_extra_test2" => [ - "test/evp_extra_test2-bin-evp_extra_test2.o" + "test/evp_extra_test2-bin-evp_extra_test2.o", + "test/evp_extra_test2-bin-tls-provider.o" ], "test/evp_extra_test2-bin-evp_extra_test2.o" => [ "test/evp_extra_test2.c" ], + "test/evp_extra_test2-bin-tls-provider.o" => [ + "test/tls-provider.c" + ], "test/evp_fetch_prov_test" => [ "test/evp_fetch_prov_test-bin-evp_fetch_prov_test.o" ], @@ -26947,6 +31598,12 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name-bin-evp_pkey_ctx_new_from_name.o" => [ "test/evp_pkey_ctx_new_from_name.c" ], + "test/evp_pkey_dhkem_test" => [ + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" + ], + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" => [ + "test/evp_pkey_dhkem_test.c" + ], "test/evp_pkey_dparams_test" => [ "test/evp_pkey_dparams_test-bin-evp_pkey_dparams_test.o" ], @@ -26959,12 +31616,28 @@ our %unified_info = ( "test/evp_pkey_provided_test-bin-evp_pkey_provided_test.o" => [ "test/evp_pkey_provided_test.c" ], + "test/evp_skey_test" => [ + "test/evp_skey_test-bin-evp_skey_test.o", + "test/evp_skey_test-bin-fake_cipherprov.o" + ], + "test/evp_skey_test-bin-evp_skey_test.o" => [ + "test/evp_skey_test.c" + ], + "test/evp_skey_test-bin-fake_cipherprov.o" => [ + "test/fake_cipherprov.c" + ], "test/evp_test" => [ "test/evp_test-bin-evp_test.o" ], "test/evp_test-bin-evp_test.o" => [ "test/evp_test.c" ], + "test/evp_xof_test" => [ + "test/evp_xof_test-bin-evp_xof_test.o" + ], + "test/evp_xof_test-bin-evp_xof_test.o" => [ + "test/evp_xof_test.c" + ], "test/exdatatest" => [ "test/exdatatest-bin-exdatatest.o" ], @@ -27050,15 +31723,108 @@ our %unified_info = ( "test/helpers/fatalerrtest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/json_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/json_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/json_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + "test/helpers/pkcs12.c" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ "test/helpers/pkcs12.c" ], + "test/helpers/quic_multistream_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_multistream_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_multistream_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_newcid_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_newcid_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_newcid_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_radix_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_radix_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_radix_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_srt_gen_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicapitest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicapitest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicapitest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicfaultstest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicfaultstest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicfaultstest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/ssl_old_test-bin-predefined_dhparams.o" => [ "test/helpers/predefined_dhparams.c" ], @@ -27086,6 +31852,9 @@ our %unified_info = ( "test/helpers/tls13ccstest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/hexstr_test" => [ "test/hexstr_test-bin-hexstr_test.o" ], @@ -27098,6 +31867,12 @@ our %unified_info = ( "test/hmactest-bin-hmactest.o" => [ "test/hmactest.c" ], + "test/hpke_test" => [ + "test/hpke_test-bin-hpke_test.o" + ], + "test/hpke_test-bin-hpke_test.o" => [ + "test/hpke_test.c" + ], "test/http_test" => [ "test/http_test-bin-http_test.o" ], @@ -27116,6 +31891,16 @@ our %unified_info = ( "test/igetest-bin-igetest.o" => [ "test/igetest.c" ], + "test/json_test" => [ + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/json_test-bin-json_test.o" + ], + "test/json_test-bin-json_test.o" => [ + "test/json_test.c" + ], "test/keymgmt_internal_test" => [ "test/keymgmt_internal_test-bin-keymgmt_internal_test.o" ], @@ -27137,6 +31922,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -27149,6 +31935,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-tests.o", "test/testutil/libtestutil-lib-testutil_init.o" ], + "test/list_test" => [ + "test/list_test-bin-list_test.o" + ], + "test/list_test-bin-list_test.o" => [ + "test/list_test.c" + ], "test/localetest" => [ "test/localetest-bin-localetest.o" ], @@ -27167,12 +31959,36 @@ our %unified_info = ( "test/mdc2test-bin-mdc2test.o" => [ "test/mdc2test.c" ], + "test/membio_test" => [ + "test/membio_test-bin-membio_test.o" + ], + "test/membio_test-bin-membio_test.o" => [ + "test/membio_test.c" + ], "test/memleaktest" => [ "test/memleaktest-bin-memleaktest.o" ], "test/memleaktest-bin-memleaktest.o" => [ "test/memleaktest.c" ], + "test/ml_dsa_test" => [ + "test/ml_dsa_test-bin-ml_dsa_test.o" + ], + "test/ml_dsa_test-bin-ml_dsa_test.o" => [ + "test/ml_dsa_test.c" + ], + "test/ml_kem_evp_extra_test" => [ + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" + ], + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" => [ + "test/ml_kem_evp_extra_test.c" + ], + "test/ml_kem_internal_test" => [ + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" + ], + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" => [ + "test/ml_kem_internal_test.c" + ], "test/modes_internal_test" => [ "test/modes_internal_test-bin-modes_internal_test.o" ], @@ -27218,11 +32034,18 @@ our %unified_info = ( "test/p_test.c" ], "test/packettest" => [ + "crypto/packettest-bin-quic_vlint.o", "test/packettest-bin-packettest.o" ], "test/packettest-bin-packettest.o" => [ "test/packettest.c" ], + "test/pairwise_fail_test" => [ + "test/pairwise_fail_test-bin-pairwise_fail_test.o" + ], + "test/pairwise_fail_test-bin-pairwise_fail_test.o" => [ + "test/pairwise_fail_test.c" + ], "test/param_build_test" => [ "test/param_build_test-bin-param_build_test.o" ], @@ -27271,6 +32094,13 @@ our %unified_info = ( "test/pemtest-bin-pemtest.o" => [ "test/pemtest.c" ], + "test/pkcs12_api_test" => [ + "test/helpers/pkcs12_api_test-bin-pkcs12.o", + "test/pkcs12_api_test-bin-pkcs12_api_test.o" + ], + "test/pkcs12_api_test-bin-pkcs12_api_test.o" => [ + "test/pkcs12_api_test.c" + ], "test/pkcs12_format_test" => [ "test/helpers/pkcs12_format_test-bin-pkcs12.o", "test/pkcs12_format_test-bin-pkcs12_format_test.o" @@ -27302,6 +32132,12 @@ our %unified_info = ( "test/poly1305_internal_test-bin-poly1305_internal_test.o" => [ "test/poly1305_internal_test.c" ], + "test/priority_queue_test" => [ + "test/priority_queue_test-bin-priority_queue_test.o" + ], + "test/priority_queue_test-bin-priority_queue_test.o" => [ + "test/priority_queue_test.c" + ], "test/property_test" => [ "test/property_test-bin-property_test.o" ], @@ -27320,6 +32156,12 @@ our %unified_info = ( "test/provfetchtest-bin-provfetchtest.o" => [ "test/provfetchtest.c" ], + "test/provider_default_search_path_test" => [ + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" + ], + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" => [ + "test/provider_default_search_path_test.c" + ], "test/provider_fallback_test" => [ "test/provider_fallback_test-bin-provider_fallback_test.o" ], @@ -27368,6 +32210,174 @@ our %unified_info = ( "test/punycode_test-bin-punycode_test.o" => [ "test/punycode_test.c" ], + "test/quic_ackm_test" => [ + "test/quic_ackm_test-bin-cc_dummy.o", + "test/quic_ackm_test-bin-quic_ackm_test.o" + ], + "test/quic_ackm_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_ackm_test-bin-quic_ackm_test.o" => [ + "test/quic_ackm_test.c" + ], + "test/quic_cc_test" => [ + "test/quic_cc_test-bin-quic_cc_test.o" + ], + "test/quic_cc_test-bin-quic_cc_test.o" => [ + "test/quic_cc_test.c" + ], + "test/quic_cfq_test" => [ + "test/quic_cfq_test-bin-quic_cfq_test.o" + ], + "test/quic_cfq_test-bin-quic_cfq_test.o" => [ + "test/quic_cfq_test.c" + ], + "test/quic_client_test" => [ + "test/quic_client_test-bin-quic_client_test.o" + ], + "test/quic_client_test-bin-quic_client_test.o" => [ + "test/quic_client_test.c" + ], + "test/quic_fc_test" => [ + "test/quic_fc_test-bin-quic_fc_test.o" + ], + "test/quic_fc_test-bin-quic_fc_test.o" => [ + "test/quic_fc_test.c" + ], + "test/quic_fifd_test" => [ + "test/quic_fifd_test-bin-cc_dummy.o", + "test/quic_fifd_test-bin-quic_fifd_test.o" + ], + "test/quic_fifd_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_fifd_test-bin-quic_fifd_test.o" => [ + "test/quic_fifd_test.c" + ], + "test/quic_lcidm_test" => [ + "test/quic_lcidm_test-bin-quic_lcidm_test.o" + ], + "test/quic_lcidm_test-bin-quic_lcidm_test.o" => [ + "test/quic_lcidm_test.c" + ], + "test/quic_multistream_test" => [ + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/quic_multistream_test-bin-quic_multistream_test.o" + ], + "test/quic_multistream_test-bin-quic_multistream_test.o" => [ + "test/quic_multistream_test.c" + ], + "test/quic_newcid_test" => [ + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/quic_newcid_test-bin-quic_newcid_test.o" + ], + "test/quic_newcid_test-bin-quic_newcid_test.o" => [ + "test/quic_newcid_test.c" + ], + "test/quic_qlog_test" => [ + "test/quic_qlog_test-bin-quic_qlog_test.o" + ], + "test/quic_qlog_test-bin-quic_qlog_test.o" => [ + "test/quic_qlog_test.c" + ], + "test/quic_radix_test" => [ + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "test/quic_rcidm_test" => [ + "test/quic_rcidm_test-bin-quic_rcidm_test.o" + ], + "test/quic_rcidm_test-bin-quic_rcidm_test.o" => [ + "test/quic_rcidm_test.c" + ], + "test/quic_record_test" => [ + "test/quic_record_test-bin-quic_record_test.o" + ], + "test/quic_record_test-bin-quic_record_test.o" => [ + "test/quic_record_test.c" + ], + "test/quic_srt_gen_test" => [ + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" + ], + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" => [ + "test/quic_srt_gen_test.c" + ], + "test/quic_srtm_test" => [ + "test/quic_srtm_test-bin-quic_srtm_test.o" + ], + "test/quic_srtm_test-bin-quic_srtm_test.o" => [ + "test/quic_srtm_test.c" + ], + "test/quic_stream_test" => [ + "test/quic_stream_test-bin-quic_stream_test.o" + ], + "test/quic_stream_test-bin-quic_stream_test.o" => [ + "test/quic_stream_test.c" + ], + "test/quic_tserver_test" => [ + "test/quic_tserver_test-bin-quic_tserver_test.o" + ], + "test/quic_tserver_test-bin-quic_tserver_test.o" => [ + "test/quic_tserver_test.c" + ], + "test/quic_txp_test" => [ + "test/quic_txp_test-bin-cc_dummy.o", + "test/quic_txp_test-bin-quic_txp_test.o" + ], + "test/quic_txp_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_txp_test-bin-quic_txp_test.o" => [ + "test/quic_txp_test.c" + ], + "test/quic_txpim_test" => [ + "test/quic_txpim_test-bin-quic_txpim_test.o" + ], + "test/quic_txpim_test-bin-quic_txpim_test.o" => [ + "test/quic_txpim_test.c" + ], + "test/quic_wire_test" => [ + "test/quic_wire_test-bin-quic_wire_test.o" + ], + "test/quic_wire_test-bin-quic_wire_test.o" => [ + "test/quic_wire_test.c" + ], + "test/quicapitest" => [ + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/quicapitest-bin-quicapitest.o" + ], + "test/quicapitest-bin-quicapitest.o" => [ + "test/quicapitest.c" + ], + "test/quicfaultstest" => [ + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", + "test/quicfaultstest-bin-quicfaultstest.o" + ], + "test/quicfaultstest-bin-quicfaultstest.o" => [ + "test/quicfaultstest.c" + ], + "test/radix/quic_radix_test-bin-quic_radix.o" => [ + "test/radix/quic_radix.c" + ], "test/rand_status_test" => [ "test/rand_status_test-bin-rand_status_test.o" ], @@ -27398,11 +32408,11 @@ our %unified_info = ( "test/rc5test-bin-rc5test.o" => [ "test/rc5test.c" ], - "test/rdrand_sanitytest" => [ - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" + "test/rdcpu_sanitytest" => [ + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" ], - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" => [ - "test/rdrand_sanitytest.c" + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" => [ + "test/rdcpu_sanitytest.c" ], "test/recordlentest" => [ "test/helpers/recordlentest-bin-ssltestlib.o", @@ -27411,6 +32421,13 @@ our %unified_info = ( "test/recordlentest-bin-recordlentest.o" => [ "test/recordlentest.c" ], + "test/rpktest" => [ + "test/helpers/rpktest-bin-ssltestlib.o", + "test/rpktest-bin-rpktest.o" + ], + "test/rpktest-bin-rpktest.o" => [ + "test/rpktest.c" + ], "test/rsa_complex" => [ "test/rsa_complex-bin-rsa_complex.o" ], @@ -27435,6 +32452,18 @@ our %unified_info = ( "test/rsa_test-bin-rsa_test.o" => [ "test/rsa_test.c" ], + "test/rsa_x931_test" => [ + "test/rsa_x931_test-bin-rsa_x931_test.o" + ], + "test/rsa_x931_test-bin-rsa_x931_test.o" => [ + "test/rsa_x931_test.c" + ], + "test/safe_math_test" => [ + "test/safe_math_test-bin-safe_math_test.o" + ], + "test/safe_math_test-bin-safe_math_test.o" => [ + "test/safe_math_test.c" + ], "test/sanitytest" => [ "test/sanitytest-bin-sanitytest.o" ], @@ -27466,6 +32495,12 @@ our %unified_info = ( "test/siphash_internal_test-bin-siphash_internal_test.o" => [ "test/siphash_internal_test.c" ], + "test/slh_dsa_test" => [ + "test/slh_dsa_test-bin-slh_dsa_test.o" + ], + "test/slh_dsa_test-bin-slh_dsa_test.o" => [ + "test/slh_dsa_test.c" + ], "test/sm2_internal_test" => [ "test/sm2_internal_test-bin-sm2_internal_test.o" ], @@ -27508,6 +32543,13 @@ our %unified_info = ( "test/ssl_ctx_test-bin-ssl_ctx_test.o" => [ "test/ssl_ctx_test.c" ], + "test/ssl_handshake_rtt_test" => [ + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" + ], + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" => [ + "test/ssl_handshake_rtt_test.c" + ], "test/ssl_old_test" => [ "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/ssl_old_test-bin-ssl_old_test.o" @@ -27566,6 +32608,12 @@ our %unified_info = ( "test/stack_test-bin-stack_test.o" => [ "test/stack_test.c" ], + "test/strtoultest" => [ + "test/strtoultest-bin-strtoultest.o" + ], + "test/strtoultest-bin-strtoultest.o" => [ + "test/strtoultest.c" + ], "test/sysdefaulttest" => [ "test/sysdefaulttest-bin-sysdefaulttest.o" ], @@ -27596,6 +32644,9 @@ our %unified_info = ( "test/testutil/libtestutil-lib-format_output.o" => [ "test/testutil/format_output.c" ], + "test/testutil/libtestutil-lib-helper.o" => [ + "test/testutil/helper.c" + ], "test/testutil/libtestutil-lib-load.o" => [ "test/testutil/load.c" ], @@ -27629,6 +32680,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-testutil_init.o" => [ "test/testutil/testutil_init.c" ], + "test/threadpool_test" => [ + "test/threadpool_test-bin-threadpool_test.o" + ], + "test/threadpool_test-bin-threadpool_test.o" => [ + "test/threadpool_test.c" + ], "test/threadstest" => [ "test/threadstest-bin-threadstest.o" ], @@ -27647,6 +32704,12 @@ our %unified_info = ( "test/time_offset_test-bin-time_offset_test.o" => [ "test/time_offset_test.c" ], + "test/time_test" => [ + "test/time_test-bin-time_test.o" + ], + "test/time_test-bin-time_test.o" => [ + "test/time_test.c" + ], "test/tls13ccstest" => [ "test/helpers/tls13ccstest-bin-ssltestlib.o", "test/tls13ccstest-bin-tls13ccstest.o" @@ -27660,6 +32723,13 @@ our %unified_info = ( "test/tls13encryptiontest-bin-tls13encryptiontest.o" => [ "test/tls13encryptiontest.c" ], + "test/tls13groupselection_test" => [ + "test/helpers/tls13groupselection_test-bin-ssltestlib.o", + "test/tls13groupselection_test-bin-tls13groupselection_test.o" + ], + "test/tls13groupselection_test-bin-tls13groupselection_test.o" => [ + "test/tls13groupselection_test.c" + ], "test/trace_api_test" => [ "test/trace_api_test-bin-trace_api_test.o" ], @@ -27715,6 +32785,12 @@ our %unified_info = ( "test/wpackettest-bin-wpackettest.o" => [ "test/wpackettest.c" ], + "test/x509_acert_test" => [ + "test/x509_acert_test-bin-x509_acert_test.o" + ], + "test/x509_acert_test-bin-x509_acert_test.o" => [ + "test/x509_acert_test.c" + ], "test/x509_check_cert_pkey_test" => [ "test/x509_check_cert_pkey_test-bin-x509_check_cert_pkey_test.o" ], @@ -27733,6 +32809,24 @@ our %unified_info = ( "test/x509_internal_test-bin-x509_internal_test.o" => [ "test/x509_internal_test.c" ], + "test/x509_load_cert_file_test" => [ + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" + ], + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" => [ + "test/x509_load_cert_file_test.c" + ], + "test/x509_req_test" => [ + "test/x509_req_test-bin-x509_req_test.o" + ], + "test/x509_req_test-bin-x509_req_test.o" => [ + "test/x509_req_test.c" + ], + "test/x509_test" => [ + "test/x509_test-bin-x509_test.o" + ], + "test/x509_test-bin-x509_test.o" => [ + "test/x509_test.c" + ], "test/x509_time_test" => [ "test/x509_time_test-bin-x509_time_test.o" ], @@ -27793,6 +32887,7 @@ my @makevars = ( "LDLIBS", "MT", "MTFLAGS", + "OBJCOPY", "PERL", "RANLIB", "RC", @@ -27806,6 +32901,12 @@ my %disabled_info = ( "asan" => { "macro" => "OPENSSL_NO_ASAN" }, + "brotli" => { + "macro" => "OPENSSL_NO_BROTLI" + }, + "brotli-dynamic" => { + "macro" => "OPENSSL_NO_BROTLI_DYNAMIC" + }, "comp" => { "macro" => "OPENSSL_NO_COMP", "skipped" => [ @@ -27818,6 +32919,9 @@ my %disabled_info = ( "crypto-mdebug-backtrace" => { "macro" => "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE" }, + "demos" => { + "macro" => "OPENSSL_NO_DEMOS" + }, "devcryptoeng" => { "macro" => "OPENSSL_NO_DEVCRYPTOENG" }, @@ -27830,12 +32934,24 @@ my %disabled_info = ( "external-tests" => { "macro" => "OPENSSL_NO_EXTERNAL_TESTS" }, + "fips-jitter" => { + "macro" => "OPENSSL_NO_FIPS_JITTER" + }, "fuzz-afl" => { "macro" => "OPENSSL_NO_FUZZ_AFL" }, "fuzz-libfuzzer" => { "macro" => "OPENSSL_NO_FUZZ_LIBFUZZER" }, + "h3demo" => { + "macro" => "OPENSSL_NO_H3DEMO" + }, + "hqinterop" => { + "macro" => "OPENSSL_NO_HQINTEROP" + }, + "jitter" => { + "macro" => "OPENSSL_NO_JITTER" + }, "ktls" => { "macro" => "OPENSSL_NO_KTLS" }, @@ -27851,6 +32967,9 @@ my %disabled_info = ( "msan" => { "macro" => "OPENSSL_NO_MSAN" }, + "pie" => { + "macro" => "OPENSSL_NO_PIE" + }, "rc5" => { "macro" => "OPENSSL_NO_RC5", "skipped" => [ @@ -27866,6 +32985,12 @@ my %disabled_info = ( "ssl3-method" => { "macro" => "OPENSSL_NO_SSL3_METHOD" }, + "sslkeylog" => { + "macro" => "OPENSSL_NO_SSLKEYLOG" + }, + "tfo" => { + "macro" => "OPENSSL_NO_TFO" + }, "trace" => { "macro" => "OPENSSL_NO_TRACE" }, @@ -27880,6 +33005,18 @@ my %disabled_info = ( }, "weak-ssl-ciphers" => { "macro" => "OPENSSL_NO_WEAK_SSL_CIPHERS" + }, + "zlib" => { + "macro" => "OPENSSL_NO_ZLIB" + }, + "zlib-dynamic" => { + "macro" => "OPENSSL_NO_ZLIB_DYNAMIC" + }, + "zstd" => { + "macro" => "OPENSSL_NO_ZSTD" + }, + "zstd-dynamic" => { + "macro" => "OPENSSL_NO_ZSTD_DYNAMIC" } ); my @user_crossable = qw( AR AS CC CXX CPP LD MT RANLIB RC ); @@ -27893,15 +33030,15 @@ unless (caller) { use File::Copy; use Pod::Usage; - use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; - use OpenSSL::fallback '/home/runner/work/node/node/deps/openssl/openssl/external/perl/MODULES.txt'; + use lib '/node/deps/openssl/openssl/util/perl'; + use OpenSSL::fallback '/node/deps/openssl/openssl/external/perl/MODULES.txt'; my $here = dirname($0); if (scalar @ARGV == 0) { # With no arguments, re-create the build file # We do that in two steps, where the first step emits perl - # snipets. + # snippets. my $buildfile = $config{build_file}; my $buildfile_template = "$buildfile.in"; @@ -27921,7 +33058,7 @@ unless (caller) { ); use lib '.'; - use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; + use lib '/node/deps/openssl/openssl/Configurations'; use gentemplate; open my $buildfile_template_fh, ">$buildfile_template" @@ -27938,8 +33075,8 @@ unless (caller) { my $prepend = <<'_____'; use File::Spec::Functions; -use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; -use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; +use lib '/node/deps/openssl/openssl/util/perl'; +use lib '/node/deps/openssl/openssl/Configurations'; use lib '.'; use platform; _____ diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/aes-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/aes-x86_64.asm index 32e49db2b9cbc6..61e7c0a9fada60 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/aes-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/aes-x86_64.asm @@ -1915,6 +1915,7 @@ $L$cbc_epilogue: DB 0F3h,0C3h ;repret $L$SEH_end_AES_cbc_encrypt: +section .rdata rdata align=64 ALIGN 64 $L$AES_Te: DD 0xa56363c6,0xa56363c6 @@ -2704,6 +2705,7 @@ DB 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 DB 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 DB 62,0 ALIGN 64 +section .text EXTERN __imp_RtlVirtualUnwind ALIGN 16 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/aesni-sha1-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/aesni-sha1-x86_64.asm index ac71215c45e2dc..a842bfa5e5cbe2 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/aesni-sha1-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/aesni-sha1-x86_64.asm @@ -2781,6 +2781,7 @@ $L$epilogue_avx: DB 0F3h,0C3h ;repret $L$SEH_end_aesni_cbc_sha1_enc_avx: +section .rdata rdata align=64 ALIGN 64 K_XX_XX: DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999 @@ -2796,6 +2797,7 @@ DB 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32 DB 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111 DB 114,103,62,0 ALIGN 64 +section .text ALIGN 32 aesni_cbc_sha1_enc_shaext: diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/aesni-sha256-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/aesni-sha256-x86_64.asm index 17e571d38b1846..39a88bc72d1930 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/aesni-sha256-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/aesni-sha256-x86_64.asm @@ -39,6 +39,7 @@ $L$probe: +section .rdata rdata align=64 ALIGN 64 K256: @@ -85,6 +86,7 @@ DB 54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98 DB 121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108 DB 46,111,114,103,62,0 ALIGN 64 +section .text ALIGN 64 aesni_cbc_sha256_enc_xop: diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/aesni-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/aesni-x86_64.asm index b590ecea7d5a49..8058ea319e20c6 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/aesni-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/aesni-x86_64.asm @@ -4762,6 +4762,7 @@ $L$key_expansion_256b: +section .rdata rdata align=64 ALIGN 64 $L$bswap_mask: DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 @@ -4787,6 +4788,7 @@ DB 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 DB 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 DB 115,108,46,111,114,103,62,0 ALIGN 64 +section .text EXTERN __imp_RtlVirtualUnwind ALIGN 16 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/aesni-xts-avx512.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/aesni-xts-avx512.asm new file mode 100644 index 00000000000000..1e8bcc6b6f7543 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/aesni-xts-avx512.asm @@ -0,0 +1,8350 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + +EXTERN OPENSSL_ia32cap_P +global aesni_xts_avx512_eligible + +ALIGN 32 +aesni_xts_avx512_eligible: + mov ecx,DWORD[((OPENSSL_ia32cap_P+8))] + xor eax,eax + + and ecx,0xc0030000 + cmp ecx,0xc0030000 + jne NEAR $L$_done + mov ecx,DWORD[((OPENSSL_ia32cap_P+12))] + + and ecx,0x640 + cmp ecx,0x640 + cmove eax,ecx +$L$_done: + DB 0F3h,0C3h ;repret + +global aesni_xts_128_encrypt_avx512 + + +ALIGN 32 +aesni_xts_128_encrypt_avx512: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_xts_128_encrypt_avx512: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + +DB 243,15,30,250 + push rbp + mov rbp,rsp + sub rsp,312 + and rsp,0xffffffffffffffc0 + mov QWORD[288+rsp],rbx + mov QWORD[((288 + 8))+rsp],rdi + mov QWORD[((288 + 16))+rsp],rsi + vmovdqa XMMWORD[(128 + 0)+rsp],xmm6 + vmovdqa XMMWORD[(128 + 16)+rsp],xmm7 + vmovdqa XMMWORD[(128 + 32)+rsp],xmm8 + vmovdqa XMMWORD[(128 + 48)+rsp],xmm9 + vmovdqa XMMWORD[(128 + 64)+rsp],xmm10 + vmovdqa XMMWORD[(128 + 80)+rsp],xmm11 + vmovdqa XMMWORD[(128 + 96)+rsp],xmm12 + vmovdqa XMMWORD[(128 + 112)+rsp],xmm13 + vmovdqa XMMWORD[(128 + 128)+rsp],xmm14 + vmovdqa XMMWORD[(128 + 144)+rsp],xmm15 + mov r10,0x87 + vmovdqu xmm1,XMMWORD[r9] + vpxor xmm1,xmm1,XMMWORD[r8] + vaesenc xmm1,xmm1,XMMWORD[16+r8] + vaesenc xmm1,xmm1,XMMWORD[32+r8] + vaesenc xmm1,xmm1,XMMWORD[48+r8] + vaesenc xmm1,xmm1,XMMWORD[64+r8] + vaesenc xmm1,xmm1,XMMWORD[80+r8] + vaesenc xmm1,xmm1,XMMWORD[96+r8] + vaesenc xmm1,xmm1,XMMWORD[112+r8] + vaesenc xmm1,xmm1,XMMWORD[128+r8] + vaesenc xmm1,xmm1,XMMWORD[144+r8] + vaesenclast xmm1,xmm1,XMMWORD[160+r8] + vmovdqa XMMWORD[rsp],xmm1 + mov QWORD[((8 + 40))+rbp],rdi + mov QWORD[((8 + 48))+rbp],rsi + + cmp rdx,0x80 + jl NEAR $L$_less_than_128_bytes_hEgxyDlCngwrfFe + vpbroadcastq zmm25,r10 + cmp rdx,0x100 + jge NEAR $L$_start_by16_hEgxyDlCngwrfFe + cmp rdx,0x80 + jge NEAR $L$_start_by8_hEgxyDlCngwrfFe + +$L$_do_n_blocks_hEgxyDlCngwrfFe: + cmp rdx,0x0 + je NEAR $L$_ret_hEgxyDlCngwrfFe + cmp rdx,0x70 + jge NEAR $L$_remaining_num_blocks_is_7_hEgxyDlCngwrfFe + cmp rdx,0x60 + jge NEAR $L$_remaining_num_blocks_is_6_hEgxyDlCngwrfFe + cmp rdx,0x50 + jge NEAR $L$_remaining_num_blocks_is_5_hEgxyDlCngwrfFe + cmp rdx,0x40 + jge NEAR $L$_remaining_num_blocks_is_4_hEgxyDlCngwrfFe + cmp rdx,0x30 + jge NEAR $L$_remaining_num_blocks_is_3_hEgxyDlCngwrfFe + cmp rdx,0x20 + jge NEAR $L$_remaining_num_blocks_is_2_hEgxyDlCngwrfFe + cmp rdx,0x10 + jge NEAR $L$_remaining_num_blocks_is_1_hEgxyDlCngwrfFe + vmovdqa xmm8,xmm0 + vmovdqa xmm0,xmm9 + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe + +$L$_remaining_num_blocks_is_7_hEgxyDlCngwrfFe: + mov r8,0x0000ffffffffffff + kmovq k1,r8 + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2{k1},[64+rdi] + add rdi,0x70 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi]{k1},zmm2 + add rsi,0x70 + vextracti32x4 xmm8,zmm2,0x2 + vextracti32x4 xmm0,zmm10,0x3 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe + +$L$_remaining_num_blocks_is_6_hEgxyDlCngwrfFe: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 ymm2,YMMWORD[64+rdi] + add rdi,0x60 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 YMMWORD[64+rsi],ymm2 + add rsi,0x60 + vextracti32x4 xmm8,zmm2,0x1 + vextracti32x4 xmm0,zmm10,0x2 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe + +$L$_remaining_num_blocks_is_5_hEgxyDlCngwrfFe: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu xmm2,XMMWORD[64+rdi] + add rdi,0x50 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu XMMWORD[64+rsi],xmm2 + add rsi,0x50 + vmovdqa xmm8,xmm2 + vextracti32x4 xmm0,zmm10,0x1 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe + +$L$_remaining_num_blocks_is_4_hEgxyDlCngwrfFe: + vmovdqu8 zmm1,ZMMWORD[rdi] + add rdi,0x40 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenclast zmm1,zmm1,zmm0 + vpxorq zmm1,zmm1,zmm9 + vmovdqu8 ZMMWORD[rsi],zmm1 + add rsi,0x40 + vextracti32x4 xmm8,zmm1,0x3 + vmovdqa64 xmm0,xmm10 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe +$L$_remaining_num_blocks_is_3_hEgxyDlCngwrfFe: + mov r8,-1 + shr r8,0x10 + kmovq k1,r8 + vmovdqu8 zmm1{k1},[rdi] + add rdi,0x30 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenclast zmm1,zmm1,zmm0 + vpxorq zmm1,zmm1,zmm9 + vmovdqu8 ZMMWORD[rsi]{k1},zmm1 + add rsi,0x30 + vextracti32x4 xmm8,zmm1,0x2 + vextracti32x4 xmm0,zmm9,0x3 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe +$L$_remaining_num_blocks_is_2_hEgxyDlCngwrfFe: + vmovdqu8 ymm1,YMMWORD[rdi] + add rdi,0x20 + vbroadcasti32x4 ymm0,YMMWORD[rcx] + vpternlogq ymm1,ymm9,ymm0,0x96 + vbroadcasti32x4 ymm0,YMMWORD[16+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[32+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[48+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[64+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[80+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[96+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[112+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[128+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[144+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[160+rcx] + vaesenclast ymm1,ymm1,ymm0 + vpxorq ymm1,ymm1,ymm9 + vmovdqu YMMWORD[rsi],ymm1 + add rsi,0x20 + vextracti32x4 xmm8,zmm1,0x1 + vextracti32x4 xmm0,zmm9,0x2 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe +$L$_remaining_num_blocks_is_1_hEgxyDlCngwrfFe: + vmovdqu xmm1,XMMWORD[rdi] + add rdi,0x10 + vpxor xmm1,xmm1,xmm9 + vpxor xmm1,xmm1,XMMWORD[rcx] + vaesenc xmm1,xmm1,XMMWORD[16+rcx] + vaesenc xmm1,xmm1,XMMWORD[32+rcx] + vaesenc xmm1,xmm1,XMMWORD[48+rcx] + vaesenc xmm1,xmm1,XMMWORD[64+rcx] + vaesenc xmm1,xmm1,XMMWORD[80+rcx] + vaesenc xmm1,xmm1,XMMWORD[96+rcx] + vaesenc xmm1,xmm1,XMMWORD[112+rcx] + vaesenc xmm1,xmm1,XMMWORD[128+rcx] + vaesenc xmm1,xmm1,XMMWORD[144+rcx] + vaesenclast xmm1,xmm1,XMMWORD[160+rcx] + vpxor xmm1,xmm1,xmm9 + vmovdqu XMMWORD[rsi],xmm1 + add rsi,0x10 + vmovdqa xmm8,xmm1 + vextracti32x4 xmm0,zmm9,0x1 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe + + +$L$_start_by16_hEgxyDlCngwrfFe: + vbroadcasti32x4 zmm0,ZMMWORD[rsp] + vbroadcasti32x4 zmm8,ZMMWORD[shufb_15_7] + mov r8,0xaa + kmovq k2,r8 + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x0 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x0 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + vpsrldq zmm13,zmm9,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm11,zmm9,0x1 + vpxord zmm11,zmm11,zmm14 + vpsrldq zmm15,zmm10,0xf + vpclmulqdq zmm16,zmm15,zmm25,0x0 + vpslldq zmm12,zmm10,0x1 + vpxord zmm12,zmm12,zmm16 + +$L$_main_loop_run_16_hEgxyDlCngwrfFe: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2,ZMMWORD[64+rdi] + vmovdqu8 zmm3,ZMMWORD[128+rdi] + vmovdqu8 zmm4,ZMMWORD[192+rdi] + add rdi,0x100 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vpxorq zmm3,zmm3,zmm11 + vpxorq zmm4,zmm4,zmm12 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vpxorq zmm3,zmm3,zmm0 + vpxorq zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm11,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm15,zmm11,0x1 + vpxord zmm15,zmm15,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm12,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm16,zmm12,0x1 + vpxord zmm16,zmm16,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm15,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm17,zmm15,0x1 + vpxord zmm17,zmm17,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm16,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm18,zmm16,0x1 + vpxord zmm18,zmm18,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vaesenclast zmm3,zmm3,zmm0 + vaesenclast zmm4,zmm4,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vpxorq zmm3,zmm3,zmm11 + vpxorq zmm4,zmm4,zmm12 + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqa32 zmm11,zmm17 + vmovdqa32 zmm12,zmm18 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi],zmm2 + vmovdqu8 ZMMWORD[128+rsi],zmm3 + vmovdqu8 ZMMWORD[192+rsi],zmm4 + add rsi,0x100 + sub rdx,0x100 + cmp rdx,0x100 + jae NEAR $L$_main_loop_run_16_hEgxyDlCngwrfFe + cmp rdx,0x80 + jae NEAR $L$_main_loop_run_8_hEgxyDlCngwrfFe + vextracti32x4 xmm0,zmm4,0x3 + jmp NEAR $L$_do_n_blocks_hEgxyDlCngwrfFe + +$L$_start_by8_hEgxyDlCngwrfFe: + vbroadcasti32x4 zmm0,ZMMWORD[rsp] + vbroadcasti32x4 zmm8,ZMMWORD[shufb_15_7] + mov r8,0xaa + kmovq k2,r8 + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x0 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x0 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + +$L$_main_loop_run_8_hEgxyDlCngwrfFe: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2,ZMMWORD[64+rdi] + add rdi,0x80 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vpsrldq zmm13,zmm9,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm15,zmm9,0x1 + vpxord zmm15,zmm15,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vpsrldq zmm13,zmm10,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm16,zmm10,0x1 + vpxord zmm16,zmm16,zmm14 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi],zmm2 + add rsi,0x80 + sub rdx,0x80 + cmp rdx,0x80 + jae NEAR $L$_main_loop_run_8_hEgxyDlCngwrfFe + vextracti32x4 xmm0,zmm2,0x3 + jmp NEAR $L$_do_n_blocks_hEgxyDlCngwrfFe + +$L$_steal_cipher_hEgxyDlCngwrfFe: + vmovdqa xmm2,xmm8 + lea rax,[vpshufb_shf_table] + vmovdqu xmm10,XMMWORD[rdx*1+rax] + vpshufb xmm8,xmm8,xmm10 + vmovdqu xmm3,XMMWORD[((-16))+rdx*1+rdi] + vmovdqu XMMWORD[(-16)+rdx*1+rsi],xmm8 + lea rax,[vpshufb_shf_table] + add rax,16 + sub rax,rdx + vmovdqu xmm10,XMMWORD[rax] + vpxor xmm10,xmm10,XMMWORD[mask1] + vpshufb xmm3,xmm3,xmm10 + vpblendvb xmm3,xmm3,xmm2,xmm10 + vpxor xmm8,xmm3,xmm0 + vpxor xmm8,xmm8,XMMWORD[rcx] + vaesenc xmm8,xmm8,XMMWORD[16+rcx] + vaesenc xmm8,xmm8,XMMWORD[32+rcx] + vaesenc xmm8,xmm8,XMMWORD[48+rcx] + vaesenc xmm8,xmm8,XMMWORD[64+rcx] + vaesenc xmm8,xmm8,XMMWORD[80+rcx] + vaesenc xmm8,xmm8,XMMWORD[96+rcx] + vaesenc xmm8,xmm8,XMMWORD[112+rcx] + vaesenc xmm8,xmm8,XMMWORD[128+rcx] + vaesenc xmm8,xmm8,XMMWORD[144+rcx] + vaesenclast xmm8,xmm8,XMMWORD[160+rcx] + vpxor xmm8,xmm8,xmm0 + vmovdqu XMMWORD[(-16)+rsi],xmm8 +$L$_ret_hEgxyDlCngwrfFe: + mov rbx,QWORD[288+rsp] + xor r8,r8 + mov QWORD[288+rsp],r8 + + vpxorq zmm0,zmm0,zmm0 + mov rdi,QWORD[((288 + 8))+rsp] + mov QWORD[((288 + 8))+rsp],r8 + mov rsi,QWORD[((288 + 16))+rsp] + mov QWORD[((288 + 16))+rsp],r8 + + vmovdqa xmm6,XMMWORD[((128 + 0))+rsp] + vmovdqa xmm7,XMMWORD[((128 + 16))+rsp] + vmovdqa xmm8,XMMWORD[((128 + 32))+rsp] + vmovdqa xmm9,XMMWORD[((128 + 48))+rsp] + + + vmovdqa64 ZMMWORD[128+rsp],zmm0 + + vmovdqa xmm10,XMMWORD[((128 + 64))+rsp] + vmovdqa xmm11,XMMWORD[((128 + 80))+rsp] + vmovdqa xmm12,XMMWORD[((128 + 96))+rsp] + vmovdqa xmm13,XMMWORD[((128 + 112))+rsp] + + + vmovdqa64 ZMMWORD[(128 + 64)+rsp],zmm0 + + vmovdqa xmm14,XMMWORD[((128 + 128))+rsp] + vmovdqa xmm15,XMMWORD[((128 + 144))+rsp] + + + + vmovdqa YMMWORD[(128 + 128)+rsp],ymm0 + mov rsp,rbp + pop rbp + vzeroupper + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$_less_than_128_bytes_hEgxyDlCngwrfFe: + vpbroadcastq zmm25,r10 + cmp rdx,0x10 + jb NEAR $L$_ret_hEgxyDlCngwrfFe + vbroadcasti32x4 zmm0,ZMMWORD[rsp] + vbroadcasti32x4 zmm8,ZMMWORD[shufb_15_7] + mov r8d,0xaa + kmovq k2,r8 + mov r8,rdx + and r8,0x70 + cmp r8,0x60 + je NEAR $L$_num_blocks_is_6_hEgxyDlCngwrfFe + cmp r8,0x50 + je NEAR $L$_num_blocks_is_5_hEgxyDlCngwrfFe + cmp r8,0x40 + je NEAR $L$_num_blocks_is_4_hEgxyDlCngwrfFe + cmp r8,0x30 + je NEAR $L$_num_blocks_is_3_hEgxyDlCngwrfFe + cmp r8,0x20 + je NEAR $L$_num_blocks_is_2_hEgxyDlCngwrfFe + cmp r8,0x10 + je NEAR $L$_num_blocks_is_1_hEgxyDlCngwrfFe + +$L$_num_blocks_is_7_hEgxyDlCngwrfFe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x00 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + mov r8,0x0000ffffffffffff + kmovq k1,r8 + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2{k1},[64+rdi] + + add rdi,0x70 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi]{k1},zmm2 + add rsi,0x70 + vextracti32x4 xmm8,zmm2,0x2 + vextracti32x4 xmm0,zmm10,0x3 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe +$L$_num_blocks_is_6_hEgxyDlCngwrfFe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x00 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 ymm2,YMMWORD[64+rdi] + add rdi,96 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 YMMWORD[64+rsi],ymm2 + add rsi,96 + + vextracti32x4 xmm8,ymm2,0x1 + vextracti32x4 xmm0,zmm10,0x2 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe +$L$_num_blocks_is_5_hEgxyDlCngwrfFe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x00 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 xmm2,XMMWORD[64+rdi] + add rdi,80 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 XMMWORD[64+rsi],xmm2 + add rsi,80 + + vmovdqa xmm8,xmm2 + vextracti32x4 xmm0,zmm10,0x1 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe +$L$_num_blocks_is_4_hEgxyDlCngwrfFe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x00 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + vmovdqu8 zmm1,ZMMWORD[rdi] + add rdi,64 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenclast zmm1,zmm1,zmm0 + vpxorq zmm1,zmm1,zmm9 + vmovdqu8 ZMMWORD[rsi],zmm1 + add rsi,64 + vextracti32x4 xmm8,zmm1,0x3 + vmovdqa xmm0,xmm10 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe +$L$_num_blocks_is_3_hEgxyDlCngwrfFe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + mov r8,0x0000ffffffffffff + kmovq k1,r8 + vmovdqu8 zmm1{k1},[rdi] + add rdi,48 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenclast zmm1,zmm1,zmm0 + vpxorq zmm1,zmm1,zmm9 + vmovdqu8 ZMMWORD[rsi]{k1},zmm1 + add rsi,48 + vextracti32x4 xmm8,zmm1,2 + vextracti32x4 xmm0,zmm9,3 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe +$L$_num_blocks_is_2_hEgxyDlCngwrfFe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + + vmovdqu8 ymm1,YMMWORD[rdi] + add rdi,32 + vbroadcasti32x4 ymm0,YMMWORD[rcx] + vpternlogq ymm1,ymm9,ymm0,0x96 + vbroadcasti32x4 ymm0,YMMWORD[16+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[32+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[48+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[64+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[80+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[96+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[112+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[128+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[144+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[160+rcx] + vaesenclast ymm1,ymm1,ymm0 + vpxorq ymm1,ymm1,ymm9 + vmovdqu8 YMMWORD[rsi],ymm1 + add rsi,32 + + vextracti32x4 xmm8,ymm1,1 + vextracti32x4 xmm0,zmm9,2 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe +$L$_num_blocks_is_1_hEgxyDlCngwrfFe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + + vmovdqu8 xmm1,XMMWORD[rdi] + add rdi,16 + vbroadcasti32x4 ymm0,YMMWORD[rcx] + vpternlogq ymm1,ymm9,ymm0,0x96 + vbroadcasti32x4 ymm0,YMMWORD[16+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[32+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[48+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[64+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[80+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[96+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[112+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[128+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[144+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[160+rcx] + vaesenclast ymm1,ymm1,ymm0 + vpxorq ymm1,ymm1,ymm9 + vmovdqu8 XMMWORD[rsi],xmm1 + add rsi,16 + + vmovdqa xmm8,xmm1 + vextracti32x4 xmm0,zmm9,1 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe + +global aesni_xts_128_decrypt_avx512 + + +ALIGN 32 +aesni_xts_128_decrypt_avx512: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_xts_128_decrypt_avx512: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + +DB 243,15,30,250 + push rbp + mov rbp,rsp + sub rsp,312 + and rsp,0xffffffffffffffc0 + mov QWORD[288+rsp],rbx + mov QWORD[((288 + 8))+rsp],rdi + mov QWORD[((288 + 16))+rsp],rsi + vmovdqa XMMWORD[(128 + 0)+rsp],xmm6 + vmovdqa XMMWORD[(128 + 16)+rsp],xmm7 + vmovdqa XMMWORD[(128 + 32)+rsp],xmm8 + vmovdqa XMMWORD[(128 + 48)+rsp],xmm9 + vmovdqa XMMWORD[(128 + 64)+rsp],xmm10 + vmovdqa XMMWORD[(128 + 80)+rsp],xmm11 + vmovdqa XMMWORD[(128 + 96)+rsp],xmm12 + vmovdqa XMMWORD[(128 + 112)+rsp],xmm13 + vmovdqa XMMWORD[(128 + 128)+rsp],xmm14 + vmovdqa XMMWORD[(128 + 144)+rsp],xmm15 + mov r10,0x87 + vmovdqu xmm1,XMMWORD[r9] + vpxor xmm1,xmm1,XMMWORD[r8] + vaesenc xmm1,xmm1,XMMWORD[16+r8] + vaesenc xmm1,xmm1,XMMWORD[32+r8] + vaesenc xmm1,xmm1,XMMWORD[48+r8] + vaesenc xmm1,xmm1,XMMWORD[64+r8] + vaesenc xmm1,xmm1,XMMWORD[80+r8] + vaesenc xmm1,xmm1,XMMWORD[96+r8] + vaesenc xmm1,xmm1,XMMWORD[112+r8] + vaesenc xmm1,xmm1,XMMWORD[128+r8] + vaesenc xmm1,xmm1,XMMWORD[144+r8] + vaesenclast xmm1,xmm1,XMMWORD[160+r8] + vmovdqa XMMWORD[rsp],xmm1 + mov QWORD[((8 + 40))+rbp],rdi + mov QWORD[((8 + 48))+rbp],rsi + + cmp rdx,0x80 + jb NEAR $L$_less_than_128_bytes_amivrujEyduiFoi + vpbroadcastq zmm25,r10 + cmp rdx,0x100 + jge NEAR $L$_start_by16_amivrujEyduiFoi + jmp NEAR $L$_start_by8_amivrujEyduiFoi + +$L$_do_n_blocks_amivrujEyduiFoi: + cmp rdx,0x0 + je NEAR $L$_ret_amivrujEyduiFoi + cmp rdx,0x70 + jge NEAR $L$_remaining_num_blocks_is_7_amivrujEyduiFoi + cmp rdx,0x60 + jge NEAR $L$_remaining_num_blocks_is_6_amivrujEyduiFoi + cmp rdx,0x50 + jge NEAR $L$_remaining_num_blocks_is_5_amivrujEyduiFoi + cmp rdx,0x40 + jge NEAR $L$_remaining_num_blocks_is_4_amivrujEyduiFoi + cmp rdx,0x30 + jge NEAR $L$_remaining_num_blocks_is_3_amivrujEyduiFoi + cmp rdx,0x20 + jge NEAR $L$_remaining_num_blocks_is_2_amivrujEyduiFoi + cmp rdx,0x10 + jge NEAR $L$_remaining_num_blocks_is_1_amivrujEyduiFoi + + + vmovdqu xmm1,xmm5 + + vpxor xmm1,xmm1,xmm9 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vpxor xmm1,xmm1,xmm9 + vmovdqu XMMWORD[(-16)+rsi],xmm1 + vmovdqa xmm8,xmm1 + + + mov r8,0x1 + kmovq k1,r8 + vpsllq xmm13,xmm9,0x3f + vpsraq xmm14,xmm13,0x3f + vpandq xmm5,xmm14,xmm25 + vpxorq xmm9{k1},xmm9,xmm5 + vpsrldq xmm10,xmm9,0x8 +DB 98,211,181,8,115,194,1 + vpslldq xmm13,xmm13,0x8 + vpxorq xmm0,xmm0,xmm13 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_remaining_num_blocks_is_7_amivrujEyduiFoi: + mov r8,0xffffffffffffffff + shr r8,0x10 + kmovq k1,r8 + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2{k1},[64+rdi] + add rdi,0x70 + and rdx,0xf + je NEAR $L$_done_7_remain_amivrujEyduiFoi + vextracti32x4 xmm12,zmm10,0x2 + vextracti32x4 xmm13,zmm10,0x3 + vinserti32x4 zmm10,zmm10,xmm13,0x2 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi]{k1},zmm2 + add rsi,0x70 + vextracti32x4 xmm8,zmm2,0x2 + vmovdqa xmm0,xmm12 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_7_remain_amivrujEyduiFoi: + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi]{k1},zmm2 + jmp NEAR $L$_ret_amivrujEyduiFoi + +$L$_remaining_num_blocks_is_6_amivrujEyduiFoi: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 ymm2,YMMWORD[64+rdi] + add rdi,0x60 + and rdx,0xf + je NEAR $L$_done_6_remain_amivrujEyduiFoi + vextracti32x4 xmm12,zmm10,0x1 + vextracti32x4 xmm13,zmm10,0x2 + vinserti32x4 zmm10,zmm10,xmm13,0x1 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 YMMWORD[64+rsi],ymm2 + add rsi,0x60 + vextracti32x4 xmm8,zmm2,0x1 + vmovdqa xmm0,xmm12 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_6_remain_amivrujEyduiFoi: + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 YMMWORD[64+rsi],ymm2 + jmp NEAR $L$_ret_amivrujEyduiFoi + +$L$_remaining_num_blocks_is_5_amivrujEyduiFoi: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu xmm2,XMMWORD[64+rdi] + add rdi,0x50 + and rdx,0xf + je NEAR $L$_done_5_remain_amivrujEyduiFoi + vmovdqa xmm12,xmm10 + vextracti32x4 xmm10,zmm10,0x1 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu XMMWORD[64+rsi],xmm2 + add rsi,0x50 + vmovdqa xmm8,xmm2 + vmovdqa xmm0,xmm12 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_5_remain_amivrujEyduiFoi: + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 XMMWORD[64+rsi],xmm2 + jmp NEAR $L$_ret_amivrujEyduiFoi + +$L$_remaining_num_blocks_is_4_amivrujEyduiFoi: + vmovdqu8 zmm1,ZMMWORD[rdi] + add rdi,0x40 + and rdx,0xf + je NEAR $L$_done_4_remain_amivrujEyduiFoi + vextracti32x4 xmm12,zmm9,0x3 + vinserti32x4 zmm9,zmm9,xmm10,0x3 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + add rsi,0x40 + vextracti32x4 xmm8,zmm1,0x3 + vmovdqa xmm0,xmm12 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_4_remain_amivrujEyduiFoi: + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + jmp NEAR $L$_ret_amivrujEyduiFoi + +$L$_remaining_num_blocks_is_3_amivrujEyduiFoi: + vmovdqu xmm1,XMMWORD[rdi] + vmovdqu xmm2,XMMWORD[16+rdi] + vmovdqu xmm3,XMMWORD[32+rdi] + add rdi,0x30 + and rdx,0xf + je NEAR $L$_done_3_remain_amivrujEyduiFoi + vextracti32x4 xmm13,zmm9,0x2 + vextracti32x4 xmm10,zmm9,0x1 + vextracti32x4 xmm11,zmm9,0x3 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + add rsi,0x30 + vmovdqa xmm8,xmm3 + vmovdqa xmm0,xmm13 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_3_remain_amivrujEyduiFoi: + vextracti32x4 xmm10,zmm9,0x1 + vextracti32x4 xmm11,zmm9,0x2 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + jmp NEAR $L$_ret_amivrujEyduiFoi + +$L$_remaining_num_blocks_is_2_amivrujEyduiFoi: + vmovdqu xmm1,XMMWORD[rdi] + vmovdqu xmm2,XMMWORD[16+rdi] + add rdi,0x20 + and rdx,0xf + je NEAR $L$_done_2_remain_amivrujEyduiFoi + vextracti32x4 xmm10,zmm9,0x2 + vextracti32x4 xmm12,zmm9,0x1 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + add rsi,0x20 + vmovdqa xmm8,xmm2 + vmovdqa xmm0,xmm12 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_2_remain_amivrujEyduiFoi: + vextracti32x4 xmm10,zmm9,0x1 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + jmp NEAR $L$_ret_amivrujEyduiFoi + +$L$_remaining_num_blocks_is_1_amivrujEyduiFoi: + vmovdqu xmm1,XMMWORD[rdi] + add rdi,0x10 + and rdx,0xf + je NEAR $L$_done_1_remain_amivrujEyduiFoi + vextracti32x4 xmm11,zmm9,0x1 + vpxor xmm1,xmm1,xmm11 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vpxor xmm1,xmm1,xmm11 + vmovdqu XMMWORD[rsi],xmm1 + add rsi,0x10 + vmovdqa xmm8,xmm1 + vmovdqa xmm0,xmm9 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_1_remain_amivrujEyduiFoi: + vpxor xmm1,xmm1,xmm9 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vpxor xmm1,xmm1,xmm9 + vmovdqu XMMWORD[rsi],xmm1 + jmp NEAR $L$_ret_amivrujEyduiFoi + +$L$_start_by16_amivrujEyduiFoi: + vbroadcasti32x4 zmm0,ZMMWORD[rsp] + vbroadcasti32x4 zmm8,ZMMWORD[shufb_15_7] + mov r8,0xaa + kmovq k2,r8 + + + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x0 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + + + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x0 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + + + vpsrldq zmm13,zmm9,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm11,zmm9,0x1 + vpxord zmm11,zmm11,zmm14 + + vpsrldq zmm15,zmm10,0xf + vpclmulqdq zmm16,zmm15,zmm25,0x0 + vpslldq zmm12,zmm10,0x1 + vpxord zmm12,zmm12,zmm16 + +$L$_main_loop_run_16_amivrujEyduiFoi: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2,ZMMWORD[64+rdi] + vmovdqu8 zmm3,ZMMWORD[128+rdi] + vmovdqu8 zmm4,ZMMWORD[192+rdi] + vmovdqu8 xmm5,XMMWORD[240+rdi] + add rdi,0x100 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vpxorq zmm3,zmm3,zmm11 + vpxorq zmm4,zmm4,zmm12 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vpxorq zmm3,zmm3,zmm0 + vpxorq zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm11,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm15,zmm11,0x1 + vpxord zmm15,zmm15,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm12,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm16,zmm12,0x1 + vpxord zmm16,zmm16,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm15,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm17,zmm15,0x1 + vpxord zmm17,zmm17,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm16,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm18,zmm16,0x1 + vpxord zmm18,zmm18,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + vaesdeclast zmm3,zmm3,zmm0 + vaesdeclast zmm4,zmm4,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vpxorq zmm3,zmm3,zmm11 + vpxorq zmm4,zmm4,zmm12 + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqa32 zmm11,zmm17 + vmovdqa32 zmm12,zmm18 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi],zmm2 + vmovdqu8 ZMMWORD[128+rsi],zmm3 + vmovdqu8 ZMMWORD[192+rsi],zmm4 + add rsi,0x100 + sub rdx,0x100 + cmp rdx,0x100 + jge NEAR $L$_main_loop_run_16_amivrujEyduiFoi + + cmp rdx,0x80 + jge NEAR $L$_main_loop_run_8_amivrujEyduiFoi + jmp NEAR $L$_do_n_blocks_amivrujEyduiFoi + +$L$_start_by8_amivrujEyduiFoi: + + vbroadcasti32x4 zmm0,ZMMWORD[rsp] + vbroadcasti32x4 zmm8,ZMMWORD[shufb_15_7] + mov r8,0xaa + kmovq k2,r8 + + + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x0 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + + + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x0 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + +$L$_main_loop_run_8_amivrujEyduiFoi: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2,ZMMWORD[64+rdi] + vmovdqu8 xmm5,XMMWORD[112+rdi] + add rdi,0x80 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vpsrldq zmm13,zmm9,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm15,zmm9,0x1 + vpxord zmm15,zmm15,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vpsrldq zmm13,zmm10,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm16,zmm10,0x1 + vpxord zmm16,zmm16,zmm14 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi],zmm2 + add rsi,0x80 + sub rdx,0x80 + cmp rdx,0x80 + jge NEAR $L$_main_loop_run_8_amivrujEyduiFoi + jmp NEAR $L$_do_n_blocks_amivrujEyduiFoi + +$L$_steal_cipher_amivrujEyduiFoi: + + vmovdqa xmm2,xmm8 + + + lea rax,[vpshufb_shf_table] + vmovdqu xmm10,XMMWORD[rdx*1+rax] + vpshufb xmm8,xmm8,xmm10 + + + vmovdqu xmm3,XMMWORD[((-16))+rdx*1+rdi] + vmovdqu XMMWORD[(-16)+rdx*1+rsi],xmm8 + + + lea rax,[vpshufb_shf_table] + add rax,16 + sub rax,rdx + vmovdqu xmm10,XMMWORD[rax] + vpxor xmm10,xmm10,XMMWORD[mask1] + vpshufb xmm3,xmm3,xmm10 + + vpblendvb xmm3,xmm3,xmm2,xmm10 + + + vpxor xmm8,xmm3,xmm0 + + + vpxor xmm8,xmm8,XMMWORD[rcx] + vaesdec xmm8,xmm8,XMMWORD[16+rcx] + vaesdec xmm8,xmm8,XMMWORD[32+rcx] + vaesdec xmm8,xmm8,XMMWORD[48+rcx] + vaesdec xmm8,xmm8,XMMWORD[64+rcx] + vaesdec xmm8,xmm8,XMMWORD[80+rcx] + vaesdec xmm8,xmm8,XMMWORD[96+rcx] + vaesdec xmm8,xmm8,XMMWORD[112+rcx] + vaesdec xmm8,xmm8,XMMWORD[128+rcx] + vaesdec xmm8,xmm8,XMMWORD[144+rcx] + vaesdeclast xmm8,xmm8,XMMWORD[160+rcx] + + vpxor xmm8,xmm8,xmm0 + +$L$_done_amivrujEyduiFoi: + + vmovdqu XMMWORD[(-16)+rsi],xmm8 +$L$_ret_amivrujEyduiFoi: + mov rbx,QWORD[288+rsp] + xor r8,r8 + mov QWORD[288+rsp],r8 + + vpxorq zmm0,zmm0,zmm0 + mov rdi,QWORD[((288 + 8))+rsp] + mov QWORD[((288 + 8))+rsp],r8 + mov rsi,QWORD[((288 + 16))+rsp] + mov QWORD[((288 + 16))+rsp],r8 + + vmovdqa xmm6,XMMWORD[((128 + 0))+rsp] + vmovdqa xmm7,XMMWORD[((128 + 16))+rsp] + vmovdqa xmm8,XMMWORD[((128 + 32))+rsp] + vmovdqa xmm9,XMMWORD[((128 + 48))+rsp] + + + vmovdqa64 ZMMWORD[128+rsp],zmm0 + + vmovdqa xmm10,XMMWORD[((128 + 64))+rsp] + vmovdqa xmm11,XMMWORD[((128 + 80))+rsp] + vmovdqa xmm12,XMMWORD[((128 + 96))+rsp] + vmovdqa xmm13,XMMWORD[((128 + 112))+rsp] + + + vmovdqa64 ZMMWORD[(128 + 64)+rsp],zmm0 + + vmovdqa xmm14,XMMWORD[((128 + 128))+rsp] + vmovdqa xmm15,XMMWORD[((128 + 144))+rsp] + + + + vmovdqa YMMWORD[(128 + 128)+rsp],ymm0 + mov rsp,rbp + pop rbp + vzeroupper + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$_less_than_128_bytes_amivrujEyduiFoi: + cmp rdx,0x10 + jb NEAR $L$_ret_amivrujEyduiFoi + + mov r8,rdx + and r8,0x70 + cmp r8,0x60 + je NEAR $L$_num_blocks_is_6_amivrujEyduiFoi + cmp r8,0x50 + je NEAR $L$_num_blocks_is_5_amivrujEyduiFoi + cmp r8,0x40 + je NEAR $L$_num_blocks_is_4_amivrujEyduiFoi + cmp r8,0x30 + je NEAR $L$_num_blocks_is_3_amivrujEyduiFoi + cmp r8,0x20 + je NEAR $L$_num_blocks_is_2_amivrujEyduiFoi + cmp r8,0x10 + je NEAR $L$_num_blocks_is_1_amivrujEyduiFoi + +$L$_num_blocks_is_7_amivrujEyduiFoi: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[((16 + 8))+rsp],rbx + vmovdqa xmm10,XMMWORD[16+rsp] + vmovdqu xmm2,XMMWORD[16+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[32+rsp],rax + mov QWORD[((32 + 8))+rsp],rbx + vmovdqa xmm11,XMMWORD[32+rsp] + vmovdqu xmm3,XMMWORD[32+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[48+rsp],rax + mov QWORD[((48 + 8))+rsp],rbx + vmovdqa xmm12,XMMWORD[48+rsp] + vmovdqu xmm4,XMMWORD[48+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[64+rsp],rax + mov QWORD[((64 + 8))+rsp],rbx + vmovdqa xmm13,XMMWORD[64+rsp] + vmovdqu xmm5,XMMWORD[64+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[80+rsp],rax + mov QWORD[((80 + 8))+rsp],rbx + vmovdqa xmm14,XMMWORD[80+rsp] + vmovdqu xmm6,XMMWORD[80+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[96+rsp],rax + mov QWORD[((96 + 8))+rsp],rbx + vmovdqa xmm15,XMMWORD[96+rsp] + vmovdqu xmm7,XMMWORD[96+rdi] + add rdi,0x70 + and rdx,0xf + je NEAR $L$_done_7_amivrujEyduiFoi + +$L$_steal_cipher_7_amivrujEyduiFoi: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm16,xmm15 + vmovdqa xmm15,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vpxor xmm7,xmm7,xmm15 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vpxor xmm5,xmm5,xmm0 + vpxor xmm6,xmm6,xmm0 + vpxor xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vaesdeclast xmm5,xmm5,xmm0 + vaesdeclast xmm6,xmm6,xmm0 + vaesdeclast xmm7,xmm7,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vpxor xmm7,xmm7,xmm15 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + vmovdqu XMMWORD[48+rsi],xmm4 + vmovdqu XMMWORD[64+rsi],xmm5 + vmovdqu XMMWORD[80+rsi],xmm6 + add rsi,0x70 + vmovdqa64 xmm0,xmm16 + vmovdqa xmm8,xmm7 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_7_amivrujEyduiFoi: + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vpxor xmm7,xmm7,xmm15 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vpxor xmm5,xmm5,xmm0 + vpxor xmm6,xmm6,xmm0 + vpxor xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vaesdeclast xmm5,xmm5,xmm0 + vaesdeclast xmm6,xmm6,xmm0 + vaesdeclast xmm7,xmm7,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vpxor xmm7,xmm7,xmm15 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + vmovdqu XMMWORD[48+rsi],xmm4 + vmovdqu XMMWORD[64+rsi],xmm5 + vmovdqu XMMWORD[80+rsi],xmm6 + add rsi,0x70 + vmovdqa xmm8,xmm7 + jmp NEAR $L$_done_amivrujEyduiFoi + +$L$_num_blocks_is_6_amivrujEyduiFoi: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[((16 + 8))+rsp],rbx + vmovdqa xmm10,XMMWORD[16+rsp] + vmovdqu xmm2,XMMWORD[16+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[32+rsp],rax + mov QWORD[((32 + 8))+rsp],rbx + vmovdqa xmm11,XMMWORD[32+rsp] + vmovdqu xmm3,XMMWORD[32+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[48+rsp],rax + mov QWORD[((48 + 8))+rsp],rbx + vmovdqa xmm12,XMMWORD[48+rsp] + vmovdqu xmm4,XMMWORD[48+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[64+rsp],rax + mov QWORD[((64 + 8))+rsp],rbx + vmovdqa xmm13,XMMWORD[64+rsp] + vmovdqu xmm5,XMMWORD[64+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[80+rsp],rax + mov QWORD[((80 + 8))+rsp],rbx + vmovdqa xmm14,XMMWORD[80+rsp] + vmovdqu xmm6,XMMWORD[80+rdi] + add rdi,0x60 + and rdx,0xf + je NEAR $L$_done_6_amivrujEyduiFoi + +$L$_steal_cipher_6_amivrujEyduiFoi: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm15,xmm14 + vmovdqa xmm14,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vpxor xmm5,xmm5,xmm0 + vpxor xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vaesdeclast xmm5,xmm5,xmm0 + vaesdeclast xmm6,xmm6,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + vmovdqu XMMWORD[48+rsi],xmm4 + vmovdqu XMMWORD[64+rsi],xmm5 + add rsi,0x60 + vmovdqa xmm0,xmm15 + vmovdqa xmm8,xmm6 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_6_amivrujEyduiFoi: + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vpxor xmm5,xmm5,xmm0 + vpxor xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vaesdeclast xmm5,xmm5,xmm0 + vaesdeclast xmm6,xmm6,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + vmovdqu XMMWORD[48+rsi],xmm4 + vmovdqu XMMWORD[64+rsi],xmm5 + add rsi,0x60 + vmovdqa xmm8,xmm6 + jmp NEAR $L$_done_amivrujEyduiFoi + +$L$_num_blocks_is_5_amivrujEyduiFoi: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[((16 + 8))+rsp],rbx + vmovdqa xmm10,XMMWORD[16+rsp] + vmovdqu xmm2,XMMWORD[16+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[32+rsp],rax + mov QWORD[((32 + 8))+rsp],rbx + vmovdqa xmm11,XMMWORD[32+rsp] + vmovdqu xmm3,XMMWORD[32+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[48+rsp],rax + mov QWORD[((48 + 8))+rsp],rbx + vmovdqa xmm12,XMMWORD[48+rsp] + vmovdqu xmm4,XMMWORD[48+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[64+rsp],rax + mov QWORD[((64 + 8))+rsp],rbx + vmovdqa xmm13,XMMWORD[64+rsp] + vmovdqu xmm5,XMMWORD[64+rdi] + add rdi,0x50 + and rdx,0xf + je NEAR $L$_done_5_amivrujEyduiFoi + +$L$_steal_cipher_5_amivrujEyduiFoi: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm14,xmm13 + vmovdqa xmm13,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vpxor xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vaesdeclast xmm5,xmm5,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + vmovdqu XMMWORD[48+rsi],xmm4 + add rsi,0x50 + vmovdqa xmm0,xmm14 + vmovdqa xmm8,xmm5 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_5_amivrujEyduiFoi: + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vpxor xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vaesdeclast xmm5,xmm5,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + vmovdqu XMMWORD[48+rsi],xmm4 + add rsi,0x50 + vmovdqa xmm8,xmm5 + jmp NEAR $L$_done_amivrujEyduiFoi + +$L$_num_blocks_is_4_amivrujEyduiFoi: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[((16 + 8))+rsp],rbx + vmovdqa xmm10,XMMWORD[16+rsp] + vmovdqu xmm2,XMMWORD[16+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[32+rsp],rax + mov QWORD[((32 + 8))+rsp],rbx + vmovdqa xmm11,XMMWORD[32+rsp] + vmovdqu xmm3,XMMWORD[32+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[48+rsp],rax + mov QWORD[((48 + 8))+rsp],rbx + vmovdqa xmm12,XMMWORD[48+rsp] + vmovdqu xmm4,XMMWORD[48+rdi] + add rdi,0x40 + and rdx,0xf + je NEAR $L$_done_4_amivrujEyduiFoi + +$L$_steal_cipher_4_amivrujEyduiFoi: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm13,xmm12 + vmovdqa xmm12,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + add rsi,0x40 + vmovdqa xmm0,xmm13 + vmovdqa xmm8,xmm4 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_4_amivrujEyduiFoi: + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + add rsi,0x40 + vmovdqa xmm8,xmm4 + jmp NEAR $L$_done_amivrujEyduiFoi + +$L$_num_blocks_is_3_amivrujEyduiFoi: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[((16 + 8))+rsp],rbx + vmovdqa xmm10,XMMWORD[16+rsp] + vmovdqu xmm2,XMMWORD[16+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[32+rsp],rax + mov QWORD[((32 + 8))+rsp],rbx + vmovdqa xmm11,XMMWORD[32+rsp] + vmovdqu xmm3,XMMWORD[32+rdi] + add rdi,0x30 + and rdx,0xf + je NEAR $L$_done_3_amivrujEyduiFoi + +$L$_steal_cipher_3_amivrujEyduiFoi: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm12,xmm11 + vmovdqa xmm11,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + add rsi,0x30 + vmovdqa xmm0,xmm12 + vmovdqa xmm8,xmm3 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_3_amivrujEyduiFoi: + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + add rsi,0x30 + vmovdqa xmm8,xmm3 + jmp NEAR $L$_done_amivrujEyduiFoi + +$L$_num_blocks_is_2_amivrujEyduiFoi: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[((16 + 8))+rsp],rbx + vmovdqa xmm10,XMMWORD[16+rsp] + vmovdqu xmm2,XMMWORD[16+rdi] + add rdi,0x20 + and rdx,0xf + je NEAR $L$_done_2_amivrujEyduiFoi + +$L$_steal_cipher_2_amivrujEyduiFoi: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm11,xmm10 + vmovdqa xmm10,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu XMMWORD[rsi],xmm1 + add rsi,0x20 + vmovdqa xmm0,xmm11 + vmovdqa xmm8,xmm2 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_2_amivrujEyduiFoi: + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu XMMWORD[rsi],xmm1 + add rsi,0x20 + vmovdqa xmm8,xmm2 + jmp NEAR $L$_done_amivrujEyduiFoi + +$L$_num_blocks_is_1_amivrujEyduiFoi: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + add rdi,0x10 + and rdx,0xf + je NEAR $L$_done_1_amivrujEyduiFoi + +$L$_steal_cipher_1_amivrujEyduiFoi: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm10,xmm9 + vmovdqa xmm9,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vpxor xmm1,xmm1,xmm9 + add rsi,0x10 + vmovdqa xmm0,xmm10 + vmovdqa xmm8,xmm1 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_1_amivrujEyduiFoi: + vpxor xmm1,xmm1,xmm9 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vpxor xmm1,xmm1,xmm9 + add rsi,0x10 + vmovdqa xmm8,xmm1 + jmp NEAR $L$_done_amivrujEyduiFoi + +global aesni_xts_256_encrypt_avx512 + + +ALIGN 32 +aesni_xts_256_encrypt_avx512: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_xts_256_encrypt_avx512: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + +DB 243,15,30,250 + push rbp + mov rbp,rsp + sub rsp,312 + and rsp,0xffffffffffffffc0 + mov QWORD[288+rsp],rbx + mov QWORD[((288 + 8))+rsp],rdi + mov QWORD[((288 + 16))+rsp],rsi + vmovdqa XMMWORD[(128 + 0)+rsp],xmm6 + vmovdqa XMMWORD[(128 + 16)+rsp],xmm7 + vmovdqa XMMWORD[(128 + 32)+rsp],xmm8 + vmovdqa XMMWORD[(128 + 48)+rsp],xmm9 + vmovdqa XMMWORD[(128 + 64)+rsp],xmm10 + vmovdqa XMMWORD[(128 + 80)+rsp],xmm11 + vmovdqa XMMWORD[(128 + 96)+rsp],xmm12 + vmovdqa XMMWORD[(128 + 112)+rsp],xmm13 + vmovdqa XMMWORD[(128 + 128)+rsp],xmm14 + vmovdqa XMMWORD[(128 + 144)+rsp],xmm15 + mov r10,0x87 + vmovdqu xmm1,XMMWORD[r9] + vpxor xmm1,xmm1,XMMWORD[r8] + vaesenc xmm1,xmm1,XMMWORD[16+r8] + vaesenc xmm1,xmm1,XMMWORD[32+r8] + vaesenc xmm1,xmm1,XMMWORD[48+r8] + vaesenc xmm1,xmm1,XMMWORD[64+r8] + vaesenc xmm1,xmm1,XMMWORD[80+r8] + vaesenc xmm1,xmm1,XMMWORD[96+r8] + vaesenc xmm1,xmm1,XMMWORD[112+r8] + vaesenc xmm1,xmm1,XMMWORD[128+r8] + vaesenc xmm1,xmm1,XMMWORD[144+r8] + vaesenc xmm1,xmm1,XMMWORD[160+r8] + vaesenc xmm1,xmm1,XMMWORD[176+r8] + vaesenc xmm1,xmm1,XMMWORD[192+r8] + vaesenc xmm1,xmm1,XMMWORD[208+r8] + vaesenclast xmm1,xmm1,XMMWORD[224+r8] + vmovdqa XMMWORD[rsp],xmm1 + mov QWORD[((8 + 40))+rbp],rdi + mov QWORD[((8 + 48))+rbp],rsi + + cmp rdx,0x80 + jl NEAR $L$_less_than_128_bytes_wcpqaDvsGlbjGoe + vpbroadcastq zmm25,r10 + cmp rdx,0x100 + jge NEAR $L$_start_by16_wcpqaDvsGlbjGoe + cmp rdx,0x80 + jge NEAR $L$_start_by8_wcpqaDvsGlbjGoe + +$L$_do_n_blocks_wcpqaDvsGlbjGoe: + cmp rdx,0x0 + je NEAR $L$_ret_wcpqaDvsGlbjGoe + cmp rdx,0x70 + jge NEAR $L$_remaining_num_blocks_is_7_wcpqaDvsGlbjGoe + cmp rdx,0x60 + jge NEAR $L$_remaining_num_blocks_is_6_wcpqaDvsGlbjGoe + cmp rdx,0x50 + jge NEAR $L$_remaining_num_blocks_is_5_wcpqaDvsGlbjGoe + cmp rdx,0x40 + jge NEAR $L$_remaining_num_blocks_is_4_wcpqaDvsGlbjGoe + cmp rdx,0x30 + jge NEAR $L$_remaining_num_blocks_is_3_wcpqaDvsGlbjGoe + cmp rdx,0x20 + jge NEAR $L$_remaining_num_blocks_is_2_wcpqaDvsGlbjGoe + cmp rdx,0x10 + jge NEAR $L$_remaining_num_blocks_is_1_wcpqaDvsGlbjGoe + vmovdqa xmm8,xmm0 + vmovdqa xmm0,xmm9 + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe + +$L$_remaining_num_blocks_is_7_wcpqaDvsGlbjGoe: + mov r8,0x0000ffffffffffff + kmovq k1,r8 + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2{k1},[64+rdi] + add rdi,0x70 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi]{k1},zmm2 + add rsi,0x70 + vextracti32x4 xmm8,zmm2,0x2 + vextracti32x4 xmm0,zmm10,0x3 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe + +$L$_remaining_num_blocks_is_6_wcpqaDvsGlbjGoe: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 ymm2,YMMWORD[64+rdi] + add rdi,0x60 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 YMMWORD[64+rsi],ymm2 + add rsi,0x60 + vextracti32x4 xmm8,zmm2,0x1 + vextracti32x4 xmm0,zmm10,0x2 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe + +$L$_remaining_num_blocks_is_5_wcpqaDvsGlbjGoe: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu xmm2,XMMWORD[64+rdi] + add rdi,0x50 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu XMMWORD[64+rsi],xmm2 + add rsi,0x50 + vmovdqa xmm8,xmm2 + vextracti32x4 xmm0,zmm10,0x1 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe + +$L$_remaining_num_blocks_is_4_wcpqaDvsGlbjGoe: + vmovdqu8 zmm1,ZMMWORD[rdi] + add rdi,0x40 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesenclast zmm1,zmm1,zmm0 + vpxorq zmm1,zmm1,zmm9 + vmovdqu8 ZMMWORD[rsi],zmm1 + add rsi,0x40 + vextracti32x4 xmm8,zmm1,0x3 + vmovdqa64 xmm0,xmm10 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe +$L$_remaining_num_blocks_is_3_wcpqaDvsGlbjGoe: + mov r8,-1 + shr r8,0x10 + kmovq k1,r8 + vmovdqu8 zmm1{k1},[rdi] + add rdi,0x30 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesenclast zmm1,zmm1,zmm0 + vpxorq zmm1,zmm1,zmm9 + vmovdqu8 ZMMWORD[rsi]{k1},zmm1 + add rsi,0x30 + vextracti32x4 xmm8,zmm1,0x2 + vextracti32x4 xmm0,zmm9,0x3 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe +$L$_remaining_num_blocks_is_2_wcpqaDvsGlbjGoe: + vmovdqu8 ymm1,YMMWORD[rdi] + add rdi,0x20 + vbroadcasti32x4 ymm0,YMMWORD[rcx] + vpternlogq ymm1,ymm9,ymm0,0x96 + vbroadcasti32x4 ymm0,YMMWORD[16+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[32+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[48+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[64+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[80+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[96+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[112+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[128+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[144+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[160+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[176+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[192+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[208+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[224+rcx] + vaesenclast ymm1,ymm1,ymm0 + vpxorq ymm1,ymm1,ymm9 + vmovdqu YMMWORD[rsi],ymm1 + add rsi,0x20 + vextracti32x4 xmm8,zmm1,0x1 + vextracti32x4 xmm0,zmm9,0x2 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe +$L$_remaining_num_blocks_is_1_wcpqaDvsGlbjGoe: + vmovdqu xmm1,XMMWORD[rdi] + add rdi,0x10 + vpxor xmm1,xmm1,xmm9 + vpxor xmm1,xmm1,XMMWORD[rcx] + vaesenc xmm1,xmm1,XMMWORD[16+rcx] + vaesenc xmm1,xmm1,XMMWORD[32+rcx] + vaesenc xmm1,xmm1,XMMWORD[48+rcx] + vaesenc xmm1,xmm1,XMMWORD[64+rcx] + vaesenc xmm1,xmm1,XMMWORD[80+rcx] + vaesenc xmm1,xmm1,XMMWORD[96+rcx] + vaesenc xmm1,xmm1,XMMWORD[112+rcx] + vaesenc xmm1,xmm1,XMMWORD[128+rcx] + vaesenc xmm1,xmm1,XMMWORD[144+rcx] + vaesenc xmm1,xmm1,XMMWORD[160+rcx] + vaesenc xmm1,xmm1,XMMWORD[176+rcx] + vaesenc xmm1,xmm1,XMMWORD[192+rcx] + vaesenc xmm1,xmm1,XMMWORD[208+rcx] + vaesenclast xmm1,xmm1,XMMWORD[224+rcx] + vpxor xmm1,xmm1,xmm9 + vmovdqu XMMWORD[rsi],xmm1 + add rsi,0x10 + vmovdqa xmm8,xmm1 + vextracti32x4 xmm0,zmm9,0x1 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe + + +$L$_start_by16_wcpqaDvsGlbjGoe: + vbroadcasti32x4 zmm0,ZMMWORD[rsp] + vbroadcasti32x4 zmm8,ZMMWORD[shufb_15_7] + mov r8,0xaa + kmovq k2,r8 + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x0 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x0 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + vpsrldq zmm13,zmm9,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm11,zmm9,0x1 + vpxord zmm11,zmm11,zmm14 + vpsrldq zmm15,zmm10,0xf + vpclmulqdq zmm16,zmm15,zmm25,0x0 + vpslldq zmm12,zmm10,0x1 + vpxord zmm12,zmm12,zmm16 + +$L$_main_loop_run_16_wcpqaDvsGlbjGoe: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2,ZMMWORD[64+rdi] + vmovdqu8 zmm3,ZMMWORD[128+rdi] + vmovdqu8 zmm4,ZMMWORD[192+rdi] + add rdi,0x100 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vpxorq zmm3,zmm3,zmm11 + vpxorq zmm4,zmm4,zmm12 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vpxorq zmm3,zmm3,zmm0 + vpxorq zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm11,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm15,zmm11,0x1 + vpxord zmm15,zmm15,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm12,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm16,zmm12,0x1 + vpxord zmm16,zmm16,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm15,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm17,zmm15,0x1 + vpxord zmm17,zmm17,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm16,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm18,zmm16,0x1 + vpxord zmm18,zmm18,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vaesenclast zmm3,zmm3,zmm0 + vaesenclast zmm4,zmm4,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vpxorq zmm3,zmm3,zmm11 + vpxorq zmm4,zmm4,zmm12 + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqa32 zmm11,zmm17 + vmovdqa32 zmm12,zmm18 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi],zmm2 + vmovdqu8 ZMMWORD[128+rsi],zmm3 + vmovdqu8 ZMMWORD[192+rsi],zmm4 + add rsi,0x100 + sub rdx,0x100 + cmp rdx,0x100 + jae NEAR $L$_main_loop_run_16_wcpqaDvsGlbjGoe + cmp rdx,0x80 + jae NEAR $L$_main_loop_run_8_wcpqaDvsGlbjGoe + vextracti32x4 xmm0,zmm4,0x3 + jmp NEAR $L$_do_n_blocks_wcpqaDvsGlbjGoe + +$L$_start_by8_wcpqaDvsGlbjGoe: + vbroadcasti32x4 zmm0,ZMMWORD[rsp] + vbroadcasti32x4 zmm8,ZMMWORD[shufb_15_7] + mov r8,0xaa + kmovq k2,r8 + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x0 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x0 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + +$L$_main_loop_run_8_wcpqaDvsGlbjGoe: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2,ZMMWORD[64+rdi] + add rdi,0x80 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vpsrldq zmm13,zmm9,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm15,zmm9,0x1 + vpxord zmm15,zmm15,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vpsrldq zmm13,zmm10,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm16,zmm10,0x1 + vpxord zmm16,zmm16,zmm14 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi],zmm2 + add rsi,0x80 + sub rdx,0x80 + cmp rdx,0x80 + jae NEAR $L$_main_loop_run_8_wcpqaDvsGlbjGoe + vextracti32x4 xmm0,zmm2,0x3 + jmp NEAR $L$_do_n_blocks_wcpqaDvsGlbjGoe + +$L$_steal_cipher_wcpqaDvsGlbjGoe: + vmovdqa xmm2,xmm8 + lea rax,[vpshufb_shf_table] + vmovdqu xmm10,XMMWORD[rdx*1+rax] + vpshufb xmm8,xmm8,xmm10 + vmovdqu xmm3,XMMWORD[((-16))+rdx*1+rdi] + vmovdqu XMMWORD[(-16)+rdx*1+rsi],xmm8 + lea rax,[vpshufb_shf_table] + add rax,16 + sub rax,rdx + vmovdqu xmm10,XMMWORD[rax] + vpxor xmm10,xmm10,XMMWORD[mask1] + vpshufb xmm3,xmm3,xmm10 + vpblendvb xmm3,xmm3,xmm2,xmm10 + vpxor xmm8,xmm3,xmm0 + vpxor xmm8,xmm8,XMMWORD[rcx] + vaesenc xmm8,xmm8,XMMWORD[16+rcx] + vaesenc xmm8,xmm8,XMMWORD[32+rcx] + vaesenc xmm8,xmm8,XMMWORD[48+rcx] + vaesenc xmm8,xmm8,XMMWORD[64+rcx] + vaesenc xmm8,xmm8,XMMWORD[80+rcx] + vaesenc xmm8,xmm8,XMMWORD[96+rcx] + vaesenc xmm8,xmm8,XMMWORD[112+rcx] + vaesenc xmm8,xmm8,XMMWORD[128+rcx] + vaesenc xmm8,xmm8,XMMWORD[144+rcx] + vaesenc xmm8,xmm8,XMMWORD[160+rcx] + vaesenc xmm8,xmm8,XMMWORD[176+rcx] + vaesenc xmm8,xmm8,XMMWORD[192+rcx] + vaesenc xmm8,xmm8,XMMWORD[208+rcx] + vaesenclast xmm8,xmm8,XMMWORD[224+rcx] + vpxor xmm8,xmm8,xmm0 + vmovdqu XMMWORD[(-16)+rsi],xmm8 +$L$_ret_wcpqaDvsGlbjGoe: + mov rbx,QWORD[288+rsp] + xor r8,r8 + mov QWORD[288+rsp],r8 + + vpxorq zmm0,zmm0,zmm0 + mov rdi,QWORD[((288 + 8))+rsp] + mov QWORD[((288 + 8))+rsp],r8 + mov rsi,QWORD[((288 + 16))+rsp] + mov QWORD[((288 + 16))+rsp],r8 + + vmovdqa xmm6,XMMWORD[((128 + 0))+rsp] + vmovdqa xmm7,XMMWORD[((128 + 16))+rsp] + vmovdqa xmm8,XMMWORD[((128 + 32))+rsp] + vmovdqa xmm9,XMMWORD[((128 + 48))+rsp] + + + vmovdqa64 ZMMWORD[128+rsp],zmm0 + + vmovdqa xmm10,XMMWORD[((128 + 64))+rsp] + vmovdqa xmm11,XMMWORD[((128 + 80))+rsp] + vmovdqa xmm12,XMMWORD[((128 + 96))+rsp] + vmovdqa xmm13,XMMWORD[((128 + 112))+rsp] + + + vmovdqa64 ZMMWORD[(128 + 64)+rsp],zmm0 + + vmovdqa xmm14,XMMWORD[((128 + 128))+rsp] + vmovdqa xmm15,XMMWORD[((128 + 144))+rsp] + + + + vmovdqa YMMWORD[(128 + 128)+rsp],ymm0 + mov rsp,rbp + pop rbp + vzeroupper + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$_less_than_128_bytes_wcpqaDvsGlbjGoe: + vpbroadcastq zmm25,r10 + cmp rdx,0x10 + jb NEAR $L$_ret_wcpqaDvsGlbjGoe + vbroadcasti32x4 zmm0,ZMMWORD[rsp] + vbroadcasti32x4 zmm8,ZMMWORD[shufb_15_7] + mov r8d,0xaa + kmovq k2,r8 + mov r8,rdx + and r8,0x70 + cmp r8,0x60 + je NEAR $L$_num_blocks_is_6_wcpqaDvsGlbjGoe + cmp r8,0x50 + je NEAR $L$_num_blocks_is_5_wcpqaDvsGlbjGoe + cmp r8,0x40 + je NEAR $L$_num_blocks_is_4_wcpqaDvsGlbjGoe + cmp r8,0x30 + je NEAR $L$_num_blocks_is_3_wcpqaDvsGlbjGoe + cmp r8,0x20 + je NEAR $L$_num_blocks_is_2_wcpqaDvsGlbjGoe + cmp r8,0x10 + je NEAR $L$_num_blocks_is_1_wcpqaDvsGlbjGoe + +$L$_num_blocks_is_7_wcpqaDvsGlbjGoe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x00 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + mov r8,0x0000ffffffffffff + kmovq k1,r8 + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2{k1},[64+rdi] + + add rdi,0x70 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi]{k1},zmm2 + add rsi,0x70 + vextracti32x4 xmm8,zmm2,0x2 + vextracti32x4 xmm0,zmm10,0x3 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe +$L$_num_blocks_is_6_wcpqaDvsGlbjGoe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x00 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 ymm2,YMMWORD[64+rdi] + add rdi,96 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 YMMWORD[64+rsi],ymm2 + add rsi,96 + + vextracti32x4 xmm8,ymm2,0x1 + vextracti32x4 xmm0,zmm10,0x2 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe +$L$_num_blocks_is_5_wcpqaDvsGlbjGoe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x00 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 xmm2,XMMWORD[64+rdi] + add rdi,80 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 XMMWORD[64+rsi],xmm2 + add rsi,80 + + vmovdqa xmm8,xmm2 + vextracti32x4 xmm0,zmm10,0x1 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe +$L$_num_blocks_is_4_wcpqaDvsGlbjGoe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x00 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + vmovdqu8 zmm1,ZMMWORD[rdi] + add rdi,64 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesenclast zmm1,zmm1,zmm0 + vpxorq zmm1,zmm1,zmm9 + vmovdqu8 ZMMWORD[rsi],zmm1 + add rsi,64 + vextracti32x4 xmm8,zmm1,0x3 + vmovdqa xmm0,xmm10 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe +$L$_num_blocks_is_3_wcpqaDvsGlbjGoe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + mov r8,0x0000ffffffffffff + kmovq k1,r8 + vmovdqu8 zmm1{k1},[rdi] + add rdi,48 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesenclast zmm1,zmm1,zmm0 + vpxorq zmm1,zmm1,zmm9 + vmovdqu8 ZMMWORD[rsi]{k1},zmm1 + add rsi,48 + vextracti32x4 xmm8,zmm1,2 + vextracti32x4 xmm0,zmm9,3 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe +$L$_num_blocks_is_2_wcpqaDvsGlbjGoe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + + vmovdqu8 ymm1,YMMWORD[rdi] + add rdi,32 + vbroadcasti32x4 ymm0,YMMWORD[rcx] + vpternlogq ymm1,ymm9,ymm0,0x96 + vbroadcasti32x4 ymm0,YMMWORD[16+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[32+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[48+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[64+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[80+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[96+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[112+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[128+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[144+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[160+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[176+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[192+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[208+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[224+rcx] + vaesenclast ymm1,ymm1,ymm0 + vpxorq ymm1,ymm1,ymm9 + vmovdqu8 YMMWORD[rsi],ymm1 + add rsi,32 + + vextracti32x4 xmm8,ymm1,1 + vextracti32x4 xmm0,zmm9,2 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe +$L$_num_blocks_is_1_wcpqaDvsGlbjGoe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + + vmovdqu8 xmm1,XMMWORD[rdi] + add rdi,16 + vbroadcasti32x4 ymm0,YMMWORD[rcx] + vpternlogq ymm1,ymm9,ymm0,0x96 + vbroadcasti32x4 ymm0,YMMWORD[16+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[32+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[48+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[64+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[80+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[96+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[112+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[128+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[144+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[160+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[176+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[192+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[208+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[224+rcx] + vaesenclast ymm1,ymm1,ymm0 + vpxorq ymm1,ymm1,ymm9 + vmovdqu8 XMMWORD[rsi],xmm1 + add rsi,16 + + vmovdqa xmm8,xmm1 + vextracti32x4 xmm0,zmm9,1 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe + +global aesni_xts_256_decrypt_avx512 + + +ALIGN 32 +aesni_xts_256_decrypt_avx512: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_xts_256_decrypt_avx512: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + +DB 243,15,30,250 + push rbp + mov rbp,rsp + sub rsp,312 + and rsp,0xffffffffffffffc0 + mov QWORD[288+rsp],rbx + mov QWORD[((288 + 8))+rsp],rdi + mov QWORD[((288 + 16))+rsp],rsi + vmovdqa XMMWORD[(128 + 0)+rsp],xmm6 + vmovdqa XMMWORD[(128 + 16)+rsp],xmm7 + vmovdqa XMMWORD[(128 + 32)+rsp],xmm8 + vmovdqa XMMWORD[(128 + 48)+rsp],xmm9 + vmovdqa XMMWORD[(128 + 64)+rsp],xmm10 + vmovdqa XMMWORD[(128 + 80)+rsp],xmm11 + vmovdqa XMMWORD[(128 + 96)+rsp],xmm12 + vmovdqa XMMWORD[(128 + 112)+rsp],xmm13 + vmovdqa XMMWORD[(128 + 128)+rsp],xmm14 + vmovdqa XMMWORD[(128 + 144)+rsp],xmm15 + mov r10,0x87 + vmovdqu xmm1,XMMWORD[r9] + vpxor xmm1,xmm1,XMMWORD[r8] + vaesenc xmm1,xmm1,XMMWORD[16+r8] + vaesenc xmm1,xmm1,XMMWORD[32+r8] + vaesenc xmm1,xmm1,XMMWORD[48+r8] + vaesenc xmm1,xmm1,XMMWORD[64+r8] + vaesenc xmm1,xmm1,XMMWORD[80+r8] + vaesenc xmm1,xmm1,XMMWORD[96+r8] + vaesenc xmm1,xmm1,XMMWORD[112+r8] + vaesenc xmm1,xmm1,XMMWORD[128+r8] + vaesenc xmm1,xmm1,XMMWORD[144+r8] + vaesenc xmm1,xmm1,XMMWORD[160+r8] + vaesenc xmm1,xmm1,XMMWORD[176+r8] + vaesenc xmm1,xmm1,XMMWORD[192+r8] + vaesenc xmm1,xmm1,XMMWORD[208+r8] + vaesenclast xmm1,xmm1,XMMWORD[224+r8] + vmovdqa XMMWORD[rsp],xmm1 + mov QWORD[((8 + 40))+rbp],rdi + mov QWORD[((8 + 48))+rbp],rsi + + cmp rdx,0x80 + jb NEAR $L$_less_than_128_bytes_EmbgEptodyewbFa + vpbroadcastq zmm25,r10 + cmp rdx,0x100 + jge NEAR $L$_start_by16_EmbgEptodyewbFa + jmp NEAR $L$_start_by8_EmbgEptodyewbFa + +$L$_do_n_blocks_EmbgEptodyewbFa: + cmp rdx,0x0 + je NEAR $L$_ret_EmbgEptodyewbFa + cmp rdx,0x70 + jge NEAR $L$_remaining_num_blocks_is_7_EmbgEptodyewbFa + cmp rdx,0x60 + jge NEAR $L$_remaining_num_blocks_is_6_EmbgEptodyewbFa + cmp rdx,0x50 + jge NEAR $L$_remaining_num_blocks_is_5_EmbgEptodyewbFa + cmp rdx,0x40 + jge NEAR $L$_remaining_num_blocks_is_4_EmbgEptodyewbFa + cmp rdx,0x30 + jge NEAR $L$_remaining_num_blocks_is_3_EmbgEptodyewbFa + cmp rdx,0x20 + jge NEAR $L$_remaining_num_blocks_is_2_EmbgEptodyewbFa + cmp rdx,0x10 + jge NEAR $L$_remaining_num_blocks_is_1_EmbgEptodyewbFa + + + vmovdqu xmm1,xmm5 + + vpxor xmm1,xmm1,xmm9 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vpxor xmm1,xmm1,xmm9 + vmovdqu XMMWORD[(-16)+rsi],xmm1 + vmovdqa xmm8,xmm1 + + + mov r8,0x1 + kmovq k1,r8 + vpsllq xmm13,xmm9,0x3f + vpsraq xmm14,xmm13,0x3f + vpandq xmm5,xmm14,xmm25 + vpxorq xmm9{k1},xmm9,xmm5 + vpsrldq xmm10,xmm9,0x8 +DB 98,211,181,8,115,194,1 + vpslldq xmm13,xmm13,0x8 + vpxorq xmm0,xmm0,xmm13 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_remaining_num_blocks_is_7_EmbgEptodyewbFa: + mov r8,0xffffffffffffffff + shr r8,0x10 + kmovq k1,r8 + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2{k1},[64+rdi] + add rdi,0x70 + and rdx,0xf + je NEAR $L$_done_7_remain_EmbgEptodyewbFa + vextracti32x4 xmm12,zmm10,0x2 + vextracti32x4 xmm13,zmm10,0x3 + vinserti32x4 zmm10,zmm10,xmm13,0x2 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi]{k1},zmm2 + add rsi,0x70 + vextracti32x4 xmm8,zmm2,0x2 + vmovdqa xmm0,xmm12 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_7_remain_EmbgEptodyewbFa: + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi]{k1},zmm2 + jmp NEAR $L$_ret_EmbgEptodyewbFa + +$L$_remaining_num_blocks_is_6_EmbgEptodyewbFa: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 ymm2,YMMWORD[64+rdi] + add rdi,0x60 + and rdx,0xf + je NEAR $L$_done_6_remain_EmbgEptodyewbFa + vextracti32x4 xmm12,zmm10,0x1 + vextracti32x4 xmm13,zmm10,0x2 + vinserti32x4 zmm10,zmm10,xmm13,0x1 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 YMMWORD[64+rsi],ymm2 + add rsi,0x60 + vextracti32x4 xmm8,zmm2,0x1 + vmovdqa xmm0,xmm12 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_6_remain_EmbgEptodyewbFa: + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 YMMWORD[64+rsi],ymm2 + jmp NEAR $L$_ret_EmbgEptodyewbFa + +$L$_remaining_num_blocks_is_5_EmbgEptodyewbFa: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu xmm2,XMMWORD[64+rdi] + add rdi,0x50 + and rdx,0xf + je NEAR $L$_done_5_remain_EmbgEptodyewbFa + vmovdqa xmm12,xmm10 + vextracti32x4 xmm10,zmm10,0x1 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu XMMWORD[64+rsi],xmm2 + add rsi,0x50 + vmovdqa xmm8,xmm2 + vmovdqa xmm0,xmm12 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_5_remain_EmbgEptodyewbFa: + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 XMMWORD[64+rsi],xmm2 + jmp NEAR $L$_ret_EmbgEptodyewbFa + +$L$_remaining_num_blocks_is_4_EmbgEptodyewbFa: + vmovdqu8 zmm1,ZMMWORD[rdi] + add rdi,0x40 + and rdx,0xf + je NEAR $L$_done_4_remain_EmbgEptodyewbFa + vextracti32x4 xmm12,zmm9,0x3 + vinserti32x4 zmm9,zmm9,xmm10,0x3 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + add rsi,0x40 + vextracti32x4 xmm8,zmm1,0x3 + vmovdqa xmm0,xmm12 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_4_remain_EmbgEptodyewbFa: + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + jmp NEAR $L$_ret_EmbgEptodyewbFa + +$L$_remaining_num_blocks_is_3_EmbgEptodyewbFa: + vmovdqu xmm1,XMMWORD[rdi] + vmovdqu xmm2,XMMWORD[16+rdi] + vmovdqu xmm3,XMMWORD[32+rdi] + add rdi,0x30 + and rdx,0xf + je NEAR $L$_done_3_remain_EmbgEptodyewbFa + vextracti32x4 xmm13,zmm9,0x2 + vextracti32x4 xmm10,zmm9,0x1 + vextracti32x4 xmm11,zmm9,0x3 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + add rsi,0x30 + vmovdqa xmm8,xmm3 + vmovdqa xmm0,xmm13 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_3_remain_EmbgEptodyewbFa: + vextracti32x4 xmm10,zmm9,0x1 + vextracti32x4 xmm11,zmm9,0x2 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + jmp NEAR $L$_ret_EmbgEptodyewbFa + +$L$_remaining_num_blocks_is_2_EmbgEptodyewbFa: + vmovdqu xmm1,XMMWORD[rdi] + vmovdqu xmm2,XMMWORD[16+rdi] + add rdi,0x20 + and rdx,0xf + je NEAR $L$_done_2_remain_EmbgEptodyewbFa + vextracti32x4 xmm10,zmm9,0x2 + vextracti32x4 xmm12,zmm9,0x1 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + add rsi,0x20 + vmovdqa xmm8,xmm2 + vmovdqa xmm0,xmm12 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_2_remain_EmbgEptodyewbFa: + vextracti32x4 xmm10,zmm9,0x1 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + jmp NEAR $L$_ret_EmbgEptodyewbFa + +$L$_remaining_num_blocks_is_1_EmbgEptodyewbFa: + vmovdqu xmm1,XMMWORD[rdi] + add rdi,0x10 + and rdx,0xf + je NEAR $L$_done_1_remain_EmbgEptodyewbFa + vextracti32x4 xmm11,zmm9,0x1 + vpxor xmm1,xmm1,xmm11 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vpxor xmm1,xmm1,xmm11 + vmovdqu XMMWORD[rsi],xmm1 + add rsi,0x10 + vmovdqa xmm8,xmm1 + vmovdqa xmm0,xmm9 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_1_remain_EmbgEptodyewbFa: + vpxor xmm1,xmm1,xmm9 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vpxor xmm1,xmm1,xmm9 + vmovdqu XMMWORD[rsi],xmm1 + jmp NEAR $L$_ret_EmbgEptodyewbFa + +$L$_start_by16_EmbgEptodyewbFa: + vbroadcasti32x4 zmm0,ZMMWORD[rsp] + vbroadcasti32x4 zmm8,ZMMWORD[shufb_15_7] + mov r8,0xaa + kmovq k2,r8 + + + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x0 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + + + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x0 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + + + vpsrldq zmm13,zmm9,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm11,zmm9,0x1 + vpxord zmm11,zmm11,zmm14 + + vpsrldq zmm15,zmm10,0xf + vpclmulqdq zmm16,zmm15,zmm25,0x0 + vpslldq zmm12,zmm10,0x1 + vpxord zmm12,zmm12,zmm16 + +$L$_main_loop_run_16_EmbgEptodyewbFa: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2,ZMMWORD[64+rdi] + vmovdqu8 zmm3,ZMMWORD[128+rdi] + vmovdqu8 zmm4,ZMMWORD[192+rdi] + vmovdqu8 xmm5,XMMWORD[240+rdi] + add rdi,0x100 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vpxorq zmm3,zmm3,zmm11 + vpxorq zmm4,zmm4,zmm12 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vpxorq zmm3,zmm3,zmm0 + vpxorq zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm11,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm15,zmm11,0x1 + vpxord zmm15,zmm15,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm12,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm16,zmm12,0x1 + vpxord zmm16,zmm16,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm15,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm17,zmm15,0x1 + vpxord zmm17,zmm17,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm16,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm18,zmm16,0x1 + vpxord zmm18,zmm18,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + vaesdeclast zmm3,zmm3,zmm0 + vaesdeclast zmm4,zmm4,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vpxorq zmm3,zmm3,zmm11 + vpxorq zmm4,zmm4,zmm12 + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqa32 zmm11,zmm17 + vmovdqa32 zmm12,zmm18 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi],zmm2 + vmovdqu8 ZMMWORD[128+rsi],zmm3 + vmovdqu8 ZMMWORD[192+rsi],zmm4 + add rsi,0x100 + sub rdx,0x100 + cmp rdx,0x100 + jge NEAR $L$_main_loop_run_16_EmbgEptodyewbFa + + cmp rdx,0x80 + jge NEAR $L$_main_loop_run_8_EmbgEptodyewbFa + jmp NEAR $L$_do_n_blocks_EmbgEptodyewbFa + +$L$_start_by8_EmbgEptodyewbFa: + + vbroadcasti32x4 zmm0,ZMMWORD[rsp] + vbroadcasti32x4 zmm8,ZMMWORD[shufb_15_7] + mov r8,0xaa + kmovq k2,r8 + + + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x0 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + + + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x0 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + +$L$_main_loop_run_8_EmbgEptodyewbFa: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2,ZMMWORD[64+rdi] + vmovdqu8 xmm5,XMMWORD[112+rdi] + add rdi,0x80 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vpsrldq zmm13,zmm9,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm15,zmm9,0x1 + vpxord zmm15,zmm15,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vpsrldq zmm13,zmm10,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm16,zmm10,0x1 + vpxord zmm16,zmm16,zmm14 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi],zmm2 + add rsi,0x80 + sub rdx,0x80 + cmp rdx,0x80 + jge NEAR $L$_main_loop_run_8_EmbgEptodyewbFa + jmp NEAR $L$_do_n_blocks_EmbgEptodyewbFa + +$L$_steal_cipher_EmbgEptodyewbFa: + + vmovdqa xmm2,xmm8 + + + lea rax,[vpshufb_shf_table] + vmovdqu xmm10,XMMWORD[rdx*1+rax] + vpshufb xmm8,xmm8,xmm10 + + + vmovdqu xmm3,XMMWORD[((-16))+rdx*1+rdi] + vmovdqu XMMWORD[(-16)+rdx*1+rsi],xmm8 + + + lea rax,[vpshufb_shf_table] + add rax,16 + sub rax,rdx + vmovdqu xmm10,XMMWORD[rax] + vpxor xmm10,xmm10,XMMWORD[mask1] + vpshufb xmm3,xmm3,xmm10 + + vpblendvb xmm3,xmm3,xmm2,xmm10 + + + vpxor xmm8,xmm3,xmm0 + + + vpxor xmm8,xmm8,XMMWORD[rcx] + vaesdec xmm8,xmm8,XMMWORD[16+rcx] + vaesdec xmm8,xmm8,XMMWORD[32+rcx] + vaesdec xmm8,xmm8,XMMWORD[48+rcx] + vaesdec xmm8,xmm8,XMMWORD[64+rcx] + vaesdec xmm8,xmm8,XMMWORD[80+rcx] + vaesdec xmm8,xmm8,XMMWORD[96+rcx] + vaesdec xmm8,xmm8,XMMWORD[112+rcx] + vaesdec xmm8,xmm8,XMMWORD[128+rcx] + vaesdec xmm8,xmm8,XMMWORD[144+rcx] + vaesdec xmm8,xmm8,XMMWORD[160+rcx] + vaesdec xmm8,xmm8,XMMWORD[176+rcx] + vaesdec xmm8,xmm8,XMMWORD[192+rcx] + vaesdec xmm8,xmm8,XMMWORD[208+rcx] + vaesdeclast xmm8,xmm8,XMMWORD[224+rcx] + + vpxor xmm8,xmm8,xmm0 + +$L$_done_EmbgEptodyewbFa: + + vmovdqu XMMWORD[(-16)+rsi],xmm8 +$L$_ret_EmbgEptodyewbFa: + mov rbx,QWORD[288+rsp] + xor r8,r8 + mov QWORD[288+rsp],r8 + + vpxorq zmm0,zmm0,zmm0 + mov rdi,QWORD[((288 + 8))+rsp] + mov QWORD[((288 + 8))+rsp],r8 + mov rsi,QWORD[((288 + 16))+rsp] + mov QWORD[((288 + 16))+rsp],r8 + + vmovdqa xmm6,XMMWORD[((128 + 0))+rsp] + vmovdqa xmm7,XMMWORD[((128 + 16))+rsp] + vmovdqa xmm8,XMMWORD[((128 + 32))+rsp] + vmovdqa xmm9,XMMWORD[((128 + 48))+rsp] + + + vmovdqa64 ZMMWORD[128+rsp],zmm0 + + vmovdqa xmm10,XMMWORD[((128 + 64))+rsp] + vmovdqa xmm11,XMMWORD[((128 + 80))+rsp] + vmovdqa xmm12,XMMWORD[((128 + 96))+rsp] + vmovdqa xmm13,XMMWORD[((128 + 112))+rsp] + + + vmovdqa64 ZMMWORD[(128 + 64)+rsp],zmm0 + + vmovdqa xmm14,XMMWORD[((128 + 128))+rsp] + vmovdqa xmm15,XMMWORD[((128 + 144))+rsp] + + + + vmovdqa YMMWORD[(128 + 128)+rsp],ymm0 + mov rsp,rbp + pop rbp + vzeroupper + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$_less_than_128_bytes_EmbgEptodyewbFa: + cmp rdx,0x10 + jb NEAR $L$_ret_EmbgEptodyewbFa + + mov r8,rdx + and r8,0x70 + cmp r8,0x60 + je NEAR $L$_num_blocks_is_6_EmbgEptodyewbFa + cmp r8,0x50 + je NEAR $L$_num_blocks_is_5_EmbgEptodyewbFa + cmp r8,0x40 + je NEAR $L$_num_blocks_is_4_EmbgEptodyewbFa + cmp r8,0x30 + je NEAR $L$_num_blocks_is_3_EmbgEptodyewbFa + cmp r8,0x20 + je NEAR $L$_num_blocks_is_2_EmbgEptodyewbFa + cmp r8,0x10 + je NEAR $L$_num_blocks_is_1_EmbgEptodyewbFa + +$L$_num_blocks_is_7_EmbgEptodyewbFa: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[((16 + 8))+rsp],rbx + vmovdqa xmm10,XMMWORD[16+rsp] + vmovdqu xmm2,XMMWORD[16+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[32+rsp],rax + mov QWORD[((32 + 8))+rsp],rbx + vmovdqa xmm11,XMMWORD[32+rsp] + vmovdqu xmm3,XMMWORD[32+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[48+rsp],rax + mov QWORD[((48 + 8))+rsp],rbx + vmovdqa xmm12,XMMWORD[48+rsp] + vmovdqu xmm4,XMMWORD[48+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[64+rsp],rax + mov QWORD[((64 + 8))+rsp],rbx + vmovdqa xmm13,XMMWORD[64+rsp] + vmovdqu xmm5,XMMWORD[64+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[80+rsp],rax + mov QWORD[((80 + 8))+rsp],rbx + vmovdqa xmm14,XMMWORD[80+rsp] + vmovdqu xmm6,XMMWORD[80+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[96+rsp],rax + mov QWORD[((96 + 8))+rsp],rbx + vmovdqa xmm15,XMMWORD[96+rsp] + vmovdqu xmm7,XMMWORD[96+rdi] + add rdi,0x70 + and rdx,0xf + je NEAR $L$_done_7_EmbgEptodyewbFa + +$L$_steal_cipher_7_EmbgEptodyewbFa: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm16,xmm15 + vmovdqa xmm15,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vpxor xmm7,xmm7,xmm15 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vpxor xmm5,xmm5,xmm0 + vpxor xmm6,xmm6,xmm0 + vpxor xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vaesdeclast xmm5,xmm5,xmm0 + vaesdeclast xmm6,xmm6,xmm0 + vaesdeclast xmm7,xmm7,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vpxor xmm7,xmm7,xmm15 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + vmovdqu XMMWORD[48+rsi],xmm4 + vmovdqu XMMWORD[64+rsi],xmm5 + vmovdqu XMMWORD[80+rsi],xmm6 + add rsi,0x70 + vmovdqa64 xmm0,xmm16 + vmovdqa xmm8,xmm7 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_7_EmbgEptodyewbFa: + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vpxor xmm7,xmm7,xmm15 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vpxor xmm5,xmm5,xmm0 + vpxor xmm6,xmm6,xmm0 + vpxor xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vaesdeclast xmm5,xmm5,xmm0 + vaesdeclast xmm6,xmm6,xmm0 + vaesdeclast xmm7,xmm7,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vpxor xmm7,xmm7,xmm15 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + vmovdqu XMMWORD[48+rsi],xmm4 + vmovdqu XMMWORD[64+rsi],xmm5 + vmovdqu XMMWORD[80+rsi],xmm6 + add rsi,0x70 + vmovdqa xmm8,xmm7 + jmp NEAR $L$_done_EmbgEptodyewbFa + +$L$_num_blocks_is_6_EmbgEptodyewbFa: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[((16 + 8))+rsp],rbx + vmovdqa xmm10,XMMWORD[16+rsp] + vmovdqu xmm2,XMMWORD[16+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[32+rsp],rax + mov QWORD[((32 + 8))+rsp],rbx + vmovdqa xmm11,XMMWORD[32+rsp] + vmovdqu xmm3,XMMWORD[32+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[48+rsp],rax + mov QWORD[((48 + 8))+rsp],rbx + vmovdqa xmm12,XMMWORD[48+rsp] + vmovdqu xmm4,XMMWORD[48+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[64+rsp],rax + mov QWORD[((64 + 8))+rsp],rbx + vmovdqa xmm13,XMMWORD[64+rsp] + vmovdqu xmm5,XMMWORD[64+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[80+rsp],rax + mov QWORD[((80 + 8))+rsp],rbx + vmovdqa xmm14,XMMWORD[80+rsp] + vmovdqu xmm6,XMMWORD[80+rdi] + add rdi,0x60 + and rdx,0xf + je NEAR $L$_done_6_EmbgEptodyewbFa + +$L$_steal_cipher_6_EmbgEptodyewbFa: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm15,xmm14 + vmovdqa xmm14,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vpxor xmm5,xmm5,xmm0 + vpxor xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vaesdeclast xmm5,xmm5,xmm0 + vaesdeclast xmm6,xmm6,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + vmovdqu XMMWORD[48+rsi],xmm4 + vmovdqu XMMWORD[64+rsi],xmm5 + add rsi,0x60 + vmovdqa xmm0,xmm15 + vmovdqa xmm8,xmm6 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_6_EmbgEptodyewbFa: + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vpxor xmm5,xmm5,xmm0 + vpxor xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vaesdeclast xmm5,xmm5,xmm0 + vaesdeclast xmm6,xmm6,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + vmovdqu XMMWORD[48+rsi],xmm4 + vmovdqu XMMWORD[64+rsi],xmm5 + add rsi,0x60 + vmovdqa xmm8,xmm6 + jmp NEAR $L$_done_EmbgEptodyewbFa + +$L$_num_blocks_is_5_EmbgEptodyewbFa: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[((16 + 8))+rsp],rbx + vmovdqa xmm10,XMMWORD[16+rsp] + vmovdqu xmm2,XMMWORD[16+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[32+rsp],rax + mov QWORD[((32 + 8))+rsp],rbx + vmovdqa xmm11,XMMWORD[32+rsp] + vmovdqu xmm3,XMMWORD[32+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[48+rsp],rax + mov QWORD[((48 + 8))+rsp],rbx + vmovdqa xmm12,XMMWORD[48+rsp] + vmovdqu xmm4,XMMWORD[48+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[64+rsp],rax + mov QWORD[((64 + 8))+rsp],rbx + vmovdqa xmm13,XMMWORD[64+rsp] + vmovdqu xmm5,XMMWORD[64+rdi] + add rdi,0x50 + and rdx,0xf + je NEAR $L$_done_5_EmbgEptodyewbFa + +$L$_steal_cipher_5_EmbgEptodyewbFa: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm14,xmm13 + vmovdqa xmm13,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vpxor xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vaesdeclast xmm5,xmm5,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + vmovdqu XMMWORD[48+rsi],xmm4 + add rsi,0x50 + vmovdqa xmm0,xmm14 + vmovdqa xmm8,xmm5 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_5_EmbgEptodyewbFa: + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vpxor xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vaesdeclast xmm5,xmm5,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + vmovdqu XMMWORD[48+rsi],xmm4 + add rsi,0x50 + vmovdqa xmm8,xmm5 + jmp NEAR $L$_done_EmbgEptodyewbFa + +$L$_num_blocks_is_4_EmbgEptodyewbFa: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[((16 + 8))+rsp],rbx + vmovdqa xmm10,XMMWORD[16+rsp] + vmovdqu xmm2,XMMWORD[16+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[32+rsp],rax + mov QWORD[((32 + 8))+rsp],rbx + vmovdqa xmm11,XMMWORD[32+rsp] + vmovdqu xmm3,XMMWORD[32+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[48+rsp],rax + mov QWORD[((48 + 8))+rsp],rbx + vmovdqa xmm12,XMMWORD[48+rsp] + vmovdqu xmm4,XMMWORD[48+rdi] + add rdi,0x40 + and rdx,0xf + je NEAR $L$_done_4_EmbgEptodyewbFa + +$L$_steal_cipher_4_EmbgEptodyewbFa: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm13,xmm12 + vmovdqa xmm12,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + add rsi,0x40 + vmovdqa xmm0,xmm13 + vmovdqa xmm8,xmm4 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_4_EmbgEptodyewbFa: + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + add rsi,0x40 + vmovdqa xmm8,xmm4 + jmp NEAR $L$_done_EmbgEptodyewbFa + +$L$_num_blocks_is_3_EmbgEptodyewbFa: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[((16 + 8))+rsp],rbx + vmovdqa xmm10,XMMWORD[16+rsp] + vmovdqu xmm2,XMMWORD[16+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[32+rsp],rax + mov QWORD[((32 + 8))+rsp],rbx + vmovdqa xmm11,XMMWORD[32+rsp] + vmovdqu xmm3,XMMWORD[32+rdi] + add rdi,0x30 + and rdx,0xf + je NEAR $L$_done_3_EmbgEptodyewbFa + +$L$_steal_cipher_3_EmbgEptodyewbFa: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm12,xmm11 + vmovdqa xmm11,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + add rsi,0x30 + vmovdqa xmm0,xmm12 + vmovdqa xmm8,xmm3 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_3_EmbgEptodyewbFa: + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + add rsi,0x30 + vmovdqa xmm8,xmm3 + jmp NEAR $L$_done_EmbgEptodyewbFa + +$L$_num_blocks_is_2_EmbgEptodyewbFa: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[((16 + 8))+rsp],rbx + vmovdqa xmm10,XMMWORD[16+rsp] + vmovdqu xmm2,XMMWORD[16+rdi] + add rdi,0x20 + and rdx,0xf + je NEAR $L$_done_2_EmbgEptodyewbFa + +$L$_steal_cipher_2_EmbgEptodyewbFa: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm11,xmm10 + vmovdqa xmm10,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu XMMWORD[rsi],xmm1 + add rsi,0x20 + vmovdqa xmm0,xmm11 + vmovdqa xmm8,xmm2 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_2_EmbgEptodyewbFa: + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu XMMWORD[rsi],xmm1 + add rsi,0x20 + vmovdqa xmm8,xmm2 + jmp NEAR $L$_done_EmbgEptodyewbFa + +$L$_num_blocks_is_1_EmbgEptodyewbFa: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + add rdi,0x10 + and rdx,0xf + je NEAR $L$_done_1_EmbgEptodyewbFa + +$L$_steal_cipher_1_EmbgEptodyewbFa: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm10,xmm9 + vmovdqa xmm9,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vpxor xmm1,xmm1,xmm9 + add rsi,0x10 + vmovdqa xmm0,xmm10 + vmovdqa xmm8,xmm1 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_1_EmbgEptodyewbFa: + vpxor xmm1,xmm1,xmm9 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vpxor xmm1,xmm1,xmm9 + add rsi,0x10 + vmovdqa xmm8,xmm1 + jmp NEAR $L$_done_EmbgEptodyewbFa + +section .rdata rdata align=8 +ALIGN 16 + +vpshufb_shf_table: + DQ 0x8786858483828100,0x8f8e8d8c8b8a8988 + DQ 0x0706050403020100,0x000e0d0c0b0a0908 + +mask1: + DQ 0x8080808080808080,0x8080808080808080 + +const_dq3210: + DQ 0,0,1,1,2,2,3,3 +const_dq5678: + DQ 8,8,7,7,6,6,5,5 +const_dq7654: + DQ 4,4,5,5,6,6,7,7 +const_dq1234: + DQ 4,4,3,3,2,2,1,1 + +shufb_15_7: +DB 15,0xff,0xff,0xff,0xff,0xff,0xff,0xff,7,0xff,0xff +DB 0xff,0xff,0xff,0xff,0xff + +section .text code align=64 + diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/bsaes-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/bsaes-x86_64.asm index 0755ee4346daea..a10e7650b3ab3c 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/bsaes-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/bsaes-x86_64.asm @@ -1615,6 +1615,7 @@ global ossl_bsaes_xts_encrypt ALIGN 16 ossl_bsaes_xts_encrypt: +DB 243,15,30,250 mov rax,rsp $L$xts_enc_prologue: push rbp @@ -2110,6 +2111,7 @@ global ossl_bsaes_xts_decrypt ALIGN 16 ossl_bsaes_xts_decrypt: +DB 243,15,30,250 mov rax,rsp $L$xts_dec_prologue: push rbp @@ -2625,6 +2627,7 @@ $L$xts_dec_epilogue: +section .rdata rdata align=64 ALIGN 64 _bsaes_const: $L$M0ISR: @@ -2676,13 +2679,13 @@ $L$M0: DQ 0x02060a0e03070b0f,0x0004080c0105090d $L$63: DQ 0x6363636363636363,0x6363636363636363 +ALIGN 64 + DB 66,105,116,45,115,108,105,99,101,100,32,65,69,83,32,102 DB 111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44 DB 32,69,109,105,108,105,97,32,75,195,164,115,112,101,114,44 DB 32,80,101,116,101,114,32,83,99,104,119,97,98,101,44,32 DB 65,110,100,121,32,80,111,108,121,97,107,111,118,0 -ALIGN 64 - EXTERN __imp_RtlVirtualUnwind ALIGN 16 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/vpaes-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/vpaes-x86_64.asm index 8fb98f25d2d6f5..8321f694c79c4d 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/vpaes-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/vpaes-x86_64.asm @@ -941,6 +941,7 @@ _vpaes_preheat: +section .rdata rdata align=64 ALIGN 64 _vpaes_consts: $L$k_inv: @@ -1036,13 +1037,13 @@ $L$k_dsbe: $L$k_dsbo: DQ 0x1387EA537EF94000,0xC7AA6DB9D4943E2D DQ 0x12D7560F93441D00,0xCA4B8159D8C58E9C +ALIGN 64 + DB 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 DB 111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54 DB 52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97 DB 109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32 DB 85,110,105,118,101,114,115,105,116,121,41,0 -ALIGN 64 - EXTERN __imp_RtlVirtualUnwind ALIGN 16 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-2k-avx512.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-2k-avx512.asm new file mode 100644 index 00000000000000..553761ef2f1cc3 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-2k-avx512.asm @@ -0,0 +1,1024 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +EXTERN OPENSSL_ia32cap_P +global ossl_rsaz_avx512ifma_eligible + +ALIGN 32 +ossl_rsaz_avx512ifma_eligible: + mov ecx,DWORD[((OPENSSL_ia32cap_P+8))] + xor eax,eax + and ecx,2149777408 + cmp ecx,2149777408 + cmove eax,ecx + DB 0F3h,0C3h ;repret + +section .text code align=64 + + +global ossl_rsaz_amm52x20_x1_ifma256 + +ALIGN 32 +ossl_rsaz_amm52x20_x1_ifma256: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ossl_rsaz_amm52x20_x1_ifma256: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + +DB 243,15,30,250 + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + +$L$ossl_rsaz_amm52x20_x1_ifma256_body: + + + vpxord ymm0,ymm0,ymm0 + vmovdqa64 ymm3,ymm0 + vmovdqa64 ymm16,ymm0 + vmovdqa64 ymm17,ymm0 + vmovdqa64 ymm18,ymm0 + vmovdqa64 ymm19,ymm0 + + xor r9d,r9d + + mov r11,rdx + mov rax,0xfffffffffffff + + + mov ebx,5 + +ALIGN 32 +$L$loop5: + mov r13,QWORD[r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm16,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm17,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm18,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm19,ymm1,YMMWORD[128+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm16,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm17,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm18,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm19,ymm2,YMMWORD[128+rcx] + + + valignq ymm3,ymm16,ymm3,1 + valignq ymm16,ymm17,ymm16,1 + valignq ymm17,ymm18,ymm17,1 + valignq ymm18,ymm19,ymm18,1 + valignq ymm19,ymm0,ymm19,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm16,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm17,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm18,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm19,ymm1,YMMWORD[128+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm16,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm17,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm18,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm19,ymm2,YMMWORD[128+rcx] + mov r13,QWORD[8+r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm16,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm17,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm18,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm19,ymm1,YMMWORD[128+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm16,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm17,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm18,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm19,ymm2,YMMWORD[128+rcx] + + + valignq ymm3,ymm16,ymm3,1 + valignq ymm16,ymm17,ymm16,1 + valignq ymm17,ymm18,ymm17,1 + valignq ymm18,ymm19,ymm18,1 + valignq ymm19,ymm0,ymm19,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm16,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm17,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm18,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm19,ymm1,YMMWORD[128+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm16,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm17,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm18,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm19,ymm2,YMMWORD[128+rcx] + mov r13,QWORD[16+r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm16,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm17,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm18,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm19,ymm1,YMMWORD[128+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm16,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm17,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm18,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm19,ymm2,YMMWORD[128+rcx] + + + valignq ymm3,ymm16,ymm3,1 + valignq ymm16,ymm17,ymm16,1 + valignq ymm17,ymm18,ymm17,1 + valignq ymm18,ymm19,ymm18,1 + valignq ymm19,ymm0,ymm19,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm16,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm17,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm18,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm19,ymm1,YMMWORD[128+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm16,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm17,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm18,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm19,ymm2,YMMWORD[128+rcx] + mov r13,QWORD[24+r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm16,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm17,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm18,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm19,ymm1,YMMWORD[128+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm16,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm17,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm18,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm19,ymm2,YMMWORD[128+rcx] + + + valignq ymm3,ymm16,ymm3,1 + valignq ymm16,ymm17,ymm16,1 + valignq ymm17,ymm18,ymm17,1 + valignq ymm18,ymm19,ymm18,1 + valignq ymm19,ymm0,ymm19,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm16,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm17,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm18,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm19,ymm1,YMMWORD[128+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm16,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm17,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm18,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm19,ymm2,YMMWORD[128+rcx] + lea r11,[32+r11] + dec ebx + jne NEAR $L$loop5 + + vpbroadcastq ymm0,r9 + vpblendd ymm3,ymm3,ymm0,3 + + + + vpsrlq ymm0,ymm3,52 + vpsrlq ymm1,ymm16,52 + vpsrlq ymm2,ymm17,52 + vpsrlq ymm25,ymm18,52 + vpsrlq ymm26,ymm19,52 + + + valignq ymm26,ymm26,ymm25,3 + valignq ymm25,ymm25,ymm2,3 + valignq ymm2,ymm2,ymm1,3 + valignq ymm1,ymm1,ymm0,3 + valignq ymm0,ymm0,YMMWORD[$L$zeros],3 + + + vpandq ymm3,ymm3,YMMWORD[$L$mask52x4] + vpandq ymm16,ymm16,YMMWORD[$L$mask52x4] + vpandq ymm17,ymm17,YMMWORD[$L$mask52x4] + vpandq ymm18,ymm18,YMMWORD[$L$mask52x4] + vpandq ymm19,ymm19,YMMWORD[$L$mask52x4] + + + vpaddq ymm3,ymm3,ymm0 + vpaddq ymm16,ymm16,ymm1 + vpaddq ymm17,ymm17,ymm2 + vpaddq ymm18,ymm18,ymm25 + vpaddq ymm19,ymm19,ymm26 + + + + vpcmpuq k1,ymm3,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm16,YMMWORD[$L$mask52x4],6 + vpcmpuq k3,ymm17,YMMWORD[$L$mask52x4],6 + vpcmpuq k4,ymm18,YMMWORD[$L$mask52x4],6 + vpcmpuq k5,ymm19,YMMWORD[$L$mask52x4],6 + kmovb r14d,k1 + kmovb r13d,k2 + kmovb r12d,k3 + kmovb r11d,k4 + kmovb r10d,k5 + + + vpcmpuq k1,ymm3,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm16,YMMWORD[$L$mask52x4],0 + vpcmpuq k3,ymm17,YMMWORD[$L$mask52x4],0 + vpcmpuq k4,ymm18,YMMWORD[$L$mask52x4],0 + vpcmpuq k5,ymm19,YMMWORD[$L$mask52x4],0 + kmovb r9d,k1 + kmovb r8d,k2 + kmovb ebx,k3 + kmovb ecx,k4 + kmovb edx,k5 + + + + shl r13b,4 + or r14b,r13b + shl r11b,4 + or r12b,r11b + + add r14b,r14b + adc r12b,r12b + adc r10b,r10b + + shl r8b,4 + or r9b,r8b + shl cl,4 + or bl,cl + + add r14b,r9b + adc r12b,bl + adc r10b,dl + + xor r14b,r9b + xor r12b,bl + xor r10b,dl + + kmovb k1,r14d + shr r14b,4 + kmovb k2,r14d + kmovb k3,r12d + shr r12b,4 + kmovb k4,r12d + kmovb k5,r10d + + + vpsubq ymm3{k1},ymm3,YMMWORD[$L$mask52x4] + vpsubq ymm16{k2},ymm16,YMMWORD[$L$mask52x4] + vpsubq ymm17{k3},ymm17,YMMWORD[$L$mask52x4] + vpsubq ymm18{k4},ymm18,YMMWORD[$L$mask52x4] + vpsubq ymm19{k5},ymm19,YMMWORD[$L$mask52x4] + + vpandq ymm3,ymm3,YMMWORD[$L$mask52x4] + vpandq ymm16,ymm16,YMMWORD[$L$mask52x4] + vpandq ymm17,ymm17,YMMWORD[$L$mask52x4] + vpandq ymm18,ymm18,YMMWORD[$L$mask52x4] + vpandq ymm19,ymm19,YMMWORD[$L$mask52x4] + + vmovdqu64 YMMWORD[rdi],ymm3 + vmovdqu64 YMMWORD[32+rdi],ymm16 + vmovdqu64 YMMWORD[64+rdi],ymm17 + vmovdqu64 YMMWORD[96+rdi],ymm18 + vmovdqu64 YMMWORD[128+rdi],ymm19 + + vzeroupper + mov r15,QWORD[rsp] + + mov r14,QWORD[8+rsp] + + mov r13,QWORD[16+rsp] + + mov r12,QWORD[24+rsp] + + mov rbp,QWORD[32+rsp] + + mov rbx,QWORD[40+rsp] + + lea rsp,[48+rsp] + +$L$ossl_rsaz_amm52x20_x1_ifma256_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ossl_rsaz_amm52x20_x1_ifma256: +section .rdata rdata align=32 +ALIGN 32 +$L$mask52x4: + DQ 0xfffffffffffff + DQ 0xfffffffffffff + DQ 0xfffffffffffff + DQ 0xfffffffffffff +section .text code align=64 + + +global ossl_rsaz_amm52x20_x2_ifma256 + +ALIGN 32 +ossl_rsaz_amm52x20_x2_ifma256: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ossl_rsaz_amm52x20_x2_ifma256: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + +DB 243,15,30,250 + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + +$L$ossl_rsaz_amm52x20_x2_ifma256_body: + + + vpxord ymm0,ymm0,ymm0 + vmovdqa64 ymm3,ymm0 + vmovdqa64 ymm16,ymm0 + vmovdqa64 ymm17,ymm0 + vmovdqa64 ymm18,ymm0 + vmovdqa64 ymm19,ymm0 + vmovdqa64 ymm4,ymm0 + vmovdqa64 ymm20,ymm0 + vmovdqa64 ymm21,ymm0 + vmovdqa64 ymm22,ymm0 + vmovdqa64 ymm23,ymm0 + + xor r9d,r9d + xor r15d,r15d + + mov r11,rdx + mov rax,0xfffffffffffff + + mov ebx,20 + +ALIGN 32 +$L$loop20: + mov r13,QWORD[r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,QWORD[r8] + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm16,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm17,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm18,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm19,ymm1,YMMWORD[128+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm16,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm17,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm18,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm19,ymm2,YMMWORD[128+rcx] + + + valignq ymm3,ymm16,ymm3,1 + valignq ymm16,ymm17,ymm16,1 + valignq ymm17,ymm18,ymm17,1 + valignq ymm18,ymm19,ymm18,1 + valignq ymm19,ymm0,ymm19,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm16,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm17,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm18,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm19,ymm1,YMMWORD[128+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm16,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm17,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm18,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm19,ymm2,YMMWORD[128+rcx] + mov r13,QWORD[160+r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[160+rsi] + mulx r12,r13,r13 + add r15,r13 + mov r10,r12 + adc r10,0 + + mov r13,QWORD[8+r8] + imul r13,r15 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[160+rcx] + mulx r12,r13,r13 + add r15,r13 + adc r10,r12 + + shr r15,52 + sal r10,12 + or r15,r10 + + vpmadd52luq ymm4,ymm1,YMMWORD[160+rsi] + vpmadd52luq ymm20,ymm1,YMMWORD[192+rsi] + vpmadd52luq ymm21,ymm1,YMMWORD[224+rsi] + vpmadd52luq ymm22,ymm1,YMMWORD[256+rsi] + vpmadd52luq ymm23,ymm1,YMMWORD[288+rsi] + + vpmadd52luq ymm4,ymm2,YMMWORD[160+rcx] + vpmadd52luq ymm20,ymm2,YMMWORD[192+rcx] + vpmadd52luq ymm21,ymm2,YMMWORD[224+rcx] + vpmadd52luq ymm22,ymm2,YMMWORD[256+rcx] + vpmadd52luq ymm23,ymm2,YMMWORD[288+rcx] + + + valignq ymm4,ymm20,ymm4,1 + valignq ymm20,ymm21,ymm20,1 + valignq ymm21,ymm22,ymm21,1 + valignq ymm22,ymm23,ymm22,1 + valignq ymm23,ymm0,ymm23,1 + + vmovq r13,xmm4 + add r15,r13 + + vpmadd52huq ymm4,ymm1,YMMWORD[160+rsi] + vpmadd52huq ymm20,ymm1,YMMWORD[192+rsi] + vpmadd52huq ymm21,ymm1,YMMWORD[224+rsi] + vpmadd52huq ymm22,ymm1,YMMWORD[256+rsi] + vpmadd52huq ymm23,ymm1,YMMWORD[288+rsi] + + vpmadd52huq ymm4,ymm2,YMMWORD[160+rcx] + vpmadd52huq ymm20,ymm2,YMMWORD[192+rcx] + vpmadd52huq ymm21,ymm2,YMMWORD[224+rcx] + vpmadd52huq ymm22,ymm2,YMMWORD[256+rcx] + vpmadd52huq ymm23,ymm2,YMMWORD[288+rcx] + lea r11,[8+r11] + dec ebx + jne NEAR $L$loop20 + + vpbroadcastq ymm0,r9 + vpblendd ymm3,ymm3,ymm0,3 + + + + vpsrlq ymm0,ymm3,52 + vpsrlq ymm1,ymm16,52 + vpsrlq ymm2,ymm17,52 + vpsrlq ymm25,ymm18,52 + vpsrlq ymm26,ymm19,52 + + + valignq ymm26,ymm26,ymm25,3 + valignq ymm25,ymm25,ymm2,3 + valignq ymm2,ymm2,ymm1,3 + valignq ymm1,ymm1,ymm0,3 + valignq ymm0,ymm0,YMMWORD[$L$zeros],3 + + + vpandq ymm3,ymm3,YMMWORD[$L$mask52x4] + vpandq ymm16,ymm16,YMMWORD[$L$mask52x4] + vpandq ymm17,ymm17,YMMWORD[$L$mask52x4] + vpandq ymm18,ymm18,YMMWORD[$L$mask52x4] + vpandq ymm19,ymm19,YMMWORD[$L$mask52x4] + + + vpaddq ymm3,ymm3,ymm0 + vpaddq ymm16,ymm16,ymm1 + vpaddq ymm17,ymm17,ymm2 + vpaddq ymm18,ymm18,ymm25 + vpaddq ymm19,ymm19,ymm26 + + + + vpcmpuq k1,ymm3,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm16,YMMWORD[$L$mask52x4],6 + vpcmpuq k3,ymm17,YMMWORD[$L$mask52x4],6 + vpcmpuq k4,ymm18,YMMWORD[$L$mask52x4],6 + vpcmpuq k5,ymm19,YMMWORD[$L$mask52x4],6 + kmovb r14d,k1 + kmovb r13d,k2 + kmovb r12d,k3 + kmovb r11d,k4 + kmovb r10d,k5 + + + vpcmpuq k1,ymm3,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm16,YMMWORD[$L$mask52x4],0 + vpcmpuq k3,ymm17,YMMWORD[$L$mask52x4],0 + vpcmpuq k4,ymm18,YMMWORD[$L$mask52x4],0 + vpcmpuq k5,ymm19,YMMWORD[$L$mask52x4],0 + kmovb r9d,k1 + kmovb r8d,k2 + kmovb ebx,k3 + kmovb ecx,k4 + kmovb edx,k5 + + + + shl r13b,4 + or r14b,r13b + shl r11b,4 + or r12b,r11b + + add r14b,r14b + adc r12b,r12b + adc r10b,r10b + + shl r8b,4 + or r9b,r8b + shl cl,4 + or bl,cl + + add r14b,r9b + adc r12b,bl + adc r10b,dl + + xor r14b,r9b + xor r12b,bl + xor r10b,dl + + kmovb k1,r14d + shr r14b,4 + kmovb k2,r14d + kmovb k3,r12d + shr r12b,4 + kmovb k4,r12d + kmovb k5,r10d + + + vpsubq ymm3{k1},ymm3,YMMWORD[$L$mask52x4] + vpsubq ymm16{k2},ymm16,YMMWORD[$L$mask52x4] + vpsubq ymm17{k3},ymm17,YMMWORD[$L$mask52x4] + vpsubq ymm18{k4},ymm18,YMMWORD[$L$mask52x4] + vpsubq ymm19{k5},ymm19,YMMWORD[$L$mask52x4] + + vpandq ymm3,ymm3,YMMWORD[$L$mask52x4] + vpandq ymm16,ymm16,YMMWORD[$L$mask52x4] + vpandq ymm17,ymm17,YMMWORD[$L$mask52x4] + vpandq ymm18,ymm18,YMMWORD[$L$mask52x4] + vpandq ymm19,ymm19,YMMWORD[$L$mask52x4] + + vpbroadcastq ymm0,r15 + vpblendd ymm4,ymm4,ymm0,3 + + + + vpsrlq ymm0,ymm4,52 + vpsrlq ymm1,ymm20,52 + vpsrlq ymm2,ymm21,52 + vpsrlq ymm25,ymm22,52 + vpsrlq ymm26,ymm23,52 + + + valignq ymm26,ymm26,ymm25,3 + valignq ymm25,ymm25,ymm2,3 + valignq ymm2,ymm2,ymm1,3 + valignq ymm1,ymm1,ymm0,3 + valignq ymm0,ymm0,YMMWORD[$L$zeros],3 + + + vpandq ymm4,ymm4,YMMWORD[$L$mask52x4] + vpandq ymm20,ymm20,YMMWORD[$L$mask52x4] + vpandq ymm21,ymm21,YMMWORD[$L$mask52x4] + vpandq ymm22,ymm22,YMMWORD[$L$mask52x4] + vpandq ymm23,ymm23,YMMWORD[$L$mask52x4] + + + vpaddq ymm4,ymm4,ymm0 + vpaddq ymm20,ymm20,ymm1 + vpaddq ymm21,ymm21,ymm2 + vpaddq ymm22,ymm22,ymm25 + vpaddq ymm23,ymm23,ymm26 + + + + vpcmpuq k1,ymm4,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm20,YMMWORD[$L$mask52x4],6 + vpcmpuq k3,ymm21,YMMWORD[$L$mask52x4],6 + vpcmpuq k4,ymm22,YMMWORD[$L$mask52x4],6 + vpcmpuq k5,ymm23,YMMWORD[$L$mask52x4],6 + kmovb r14d,k1 + kmovb r13d,k2 + kmovb r12d,k3 + kmovb r11d,k4 + kmovb r10d,k5 + + + vpcmpuq k1,ymm4,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm20,YMMWORD[$L$mask52x4],0 + vpcmpuq k3,ymm21,YMMWORD[$L$mask52x4],0 + vpcmpuq k4,ymm22,YMMWORD[$L$mask52x4],0 + vpcmpuq k5,ymm23,YMMWORD[$L$mask52x4],0 + kmovb r9d,k1 + kmovb r8d,k2 + kmovb ebx,k3 + kmovb ecx,k4 + kmovb edx,k5 + + + + shl r13b,4 + or r14b,r13b + shl r11b,4 + or r12b,r11b + + add r14b,r14b + adc r12b,r12b + adc r10b,r10b + + shl r8b,4 + or r9b,r8b + shl cl,4 + or bl,cl + + add r14b,r9b + adc r12b,bl + adc r10b,dl + + xor r14b,r9b + xor r12b,bl + xor r10b,dl + + kmovb k1,r14d + shr r14b,4 + kmovb k2,r14d + kmovb k3,r12d + shr r12b,4 + kmovb k4,r12d + kmovb k5,r10d + + + vpsubq ymm4{k1},ymm4,YMMWORD[$L$mask52x4] + vpsubq ymm20{k2},ymm20,YMMWORD[$L$mask52x4] + vpsubq ymm21{k3},ymm21,YMMWORD[$L$mask52x4] + vpsubq ymm22{k4},ymm22,YMMWORD[$L$mask52x4] + vpsubq ymm23{k5},ymm23,YMMWORD[$L$mask52x4] + + vpandq ymm4,ymm4,YMMWORD[$L$mask52x4] + vpandq ymm20,ymm20,YMMWORD[$L$mask52x4] + vpandq ymm21,ymm21,YMMWORD[$L$mask52x4] + vpandq ymm22,ymm22,YMMWORD[$L$mask52x4] + vpandq ymm23,ymm23,YMMWORD[$L$mask52x4] + + vmovdqu64 YMMWORD[rdi],ymm3 + vmovdqu64 YMMWORD[32+rdi],ymm16 + vmovdqu64 YMMWORD[64+rdi],ymm17 + vmovdqu64 YMMWORD[96+rdi],ymm18 + vmovdqu64 YMMWORD[128+rdi],ymm19 + + vmovdqu64 YMMWORD[160+rdi],ymm4 + vmovdqu64 YMMWORD[192+rdi],ymm20 + vmovdqu64 YMMWORD[224+rdi],ymm21 + vmovdqu64 YMMWORD[256+rdi],ymm22 + vmovdqu64 YMMWORD[288+rdi],ymm23 + + vzeroupper + mov r15,QWORD[rsp] + + mov r14,QWORD[8+rsp] + + mov r13,QWORD[16+rsp] + + mov r12,QWORD[24+rsp] + + mov rbp,QWORD[32+rsp] + + mov rbx,QWORD[40+rsp] + + lea rsp,[48+rsp] + +$L$ossl_rsaz_amm52x20_x2_ifma256_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ossl_rsaz_amm52x20_x2_ifma256: +section .text code align=64 + + +ALIGN 32 +global ossl_extract_multiplier_2x20_win5 + +ossl_extract_multiplier_2x20_win5: + +DB 243,15,30,250 + vmovdqa64 ymm24,YMMWORD[$L$ones] + vpbroadcastq ymm22,r8 + vpbroadcastq ymm23,r9 + lea rax,[10240+rdx] + + + vpxor xmm0,xmm0,xmm0 + vmovdqa64 ymm21,ymm0 + vmovdqa64 ymm1,ymm0 + vmovdqa64 ymm2,ymm0 + vmovdqa64 ymm3,ymm0 + vmovdqa64 ymm4,ymm0 + vmovdqa64 ymm5,ymm0 + vmovdqa64 ymm16,ymm0 + vmovdqa64 ymm17,ymm0 + vmovdqa64 ymm18,ymm0 + vmovdqa64 ymm19,ymm0 + +ALIGN 32 +$L$loop: + vpcmpq k1,ymm22,ymm21,0 + vpcmpq k2,ymm23,ymm21,0 + vmovdqu64 ymm20,YMMWORD[rdx] + vpblendmq ymm0{k1},ymm0,ymm20 + vmovdqu64 ymm20,YMMWORD[32+rdx] + vpblendmq ymm1{k1},ymm1,ymm20 + vmovdqu64 ymm20,YMMWORD[64+rdx] + vpblendmq ymm2{k1},ymm2,ymm20 + vmovdqu64 ymm20,YMMWORD[96+rdx] + vpblendmq ymm3{k1},ymm3,ymm20 + vmovdqu64 ymm20,YMMWORD[128+rdx] + vpblendmq ymm4{k1},ymm4,ymm20 + vmovdqu64 ymm20,YMMWORD[160+rdx] + vpblendmq ymm5{k2},ymm5,ymm20 + vmovdqu64 ymm20,YMMWORD[192+rdx] + vpblendmq ymm16{k2},ymm16,ymm20 + vmovdqu64 ymm20,YMMWORD[224+rdx] + vpblendmq ymm17{k2},ymm17,ymm20 + vmovdqu64 ymm20,YMMWORD[256+rdx] + vpblendmq ymm18{k2},ymm18,ymm20 + vmovdqu64 ymm20,YMMWORD[288+rdx] + vpblendmq ymm19{k2},ymm19,ymm20 + vpaddq ymm21,ymm21,ymm24 + add rdx,320 + cmp rax,rdx + jne NEAR $L$loop + vmovdqu64 YMMWORD[rcx],ymm0 + vmovdqu64 YMMWORD[32+rcx],ymm1 + vmovdqu64 YMMWORD[64+rcx],ymm2 + vmovdqu64 YMMWORD[96+rcx],ymm3 + vmovdqu64 YMMWORD[128+rcx],ymm4 + vmovdqu64 YMMWORD[160+rcx],ymm5 + vmovdqu64 YMMWORD[192+rcx],ymm16 + vmovdqu64 YMMWORD[224+rcx],ymm17 + vmovdqu64 YMMWORD[256+rcx],ymm18 + vmovdqu64 YMMWORD[288+rcx],ymm19 + DB 0F3h,0C3h ;repret + + +section .rdata rdata align=32 +ALIGN 32 +$L$ones: + DQ 1,1,1,1 +$L$zeros: + DQ 0,0,0,0 +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +rsaz_def_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov rax,QWORD[152+r8] + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + + lea rax,[48+rax] + + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + mov r15,QWORD[((-48))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + +$L$common_seh_tail: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_ossl_rsaz_amm52x20_x1_ifma256 wrt ..imagebase + DD $L$SEH_end_ossl_rsaz_amm52x20_x1_ifma256 wrt ..imagebase + DD $L$SEH_info_ossl_rsaz_amm52x20_x1_ifma256 wrt ..imagebase + + DD $L$SEH_begin_ossl_rsaz_amm52x20_x2_ifma256 wrt ..imagebase + DD $L$SEH_end_ossl_rsaz_amm52x20_x2_ifma256 wrt ..imagebase + DD $L$SEH_info_ossl_rsaz_amm52x20_x2_ifma256 wrt ..imagebase + +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_ossl_rsaz_amm52x20_x1_ifma256: +DB 9,0,0,0 + DD rsaz_def_handler wrt ..imagebase + DD $L$ossl_rsaz_amm52x20_x1_ifma256_body wrt ..imagebase,$L$ossl_rsaz_amm52x20_x1_ifma256_epilogue wrt ..imagebase +$L$SEH_info_ossl_rsaz_amm52x20_x2_ifma256: +DB 9,0,0,0 + DD rsaz_def_handler wrt ..imagebase + DD $L$ossl_rsaz_amm52x20_x2_ifma256_body wrt ..imagebase,$L$ossl_rsaz_amm52x20_x2_ifma256_epilogue wrt ..imagebase diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-2k-avxifma.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-2k-avxifma.asm new file mode 100644 index 00000000000000..0041c71f3d0b62 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-2k-avxifma.asm @@ -0,0 +1,24 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + +global ossl_rsaz_avxifma_eligible + +ossl_rsaz_avxifma_eligible: + xor eax,eax + DB 0F3h,0C3h ;repret + + +global ossl_rsaz_amm52x20_x1_avxifma256 +global ossl_rsaz_amm52x20_x2_avxifma256 +global ossl_extract_multiplier_2x20_win5_avx + +ossl_rsaz_amm52x20_x1_avxifma256: +ossl_rsaz_amm52x20_x2_avxifma256: +ossl_extract_multiplier_2x20_win5_avx: +DB 0x0f,0x0b + DB 0F3h,0C3h ;repret + diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-3k-avx512.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-3k-avx512.asm new file mode 100644 index 00000000000000..0865c61efbc872 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-3k-avx512.asm @@ -0,0 +1,1490 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + +global ossl_rsaz_amm52x30_x1_ifma256 + +ALIGN 32 +ossl_rsaz_amm52x30_x1_ifma256: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ossl_rsaz_amm52x30_x1_ifma256: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + +DB 243,15,30,250 + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + lea rsp,[((-168))+rsp] + vmovdqa64 XMMWORD[rsp],xmm6 + vmovdqa64 XMMWORD[16+rsp],xmm7 + vmovdqa64 XMMWORD[32+rsp],xmm8 + vmovdqa64 XMMWORD[48+rsp],xmm9 + vmovdqa64 XMMWORD[64+rsp],xmm10 + vmovdqa64 XMMWORD[80+rsp],xmm11 + vmovdqa64 XMMWORD[96+rsp],xmm12 + vmovdqa64 XMMWORD[112+rsp],xmm13 + vmovdqa64 XMMWORD[128+rsp],xmm14 + vmovdqa64 XMMWORD[144+rsp],xmm15 +$L$ossl_rsaz_amm52x30_x1_ifma256_body: + + vpxord ymm0,ymm0,ymm0 + vmovdqa64 ymm3,ymm0 + vmovdqa64 ymm4,ymm0 + vmovdqa64 ymm5,ymm0 + vmovdqa64 ymm6,ymm0 + vmovdqa64 ymm7,ymm0 + vmovdqa64 ymm8,ymm0 + vmovdqa64 ymm9,ymm0 + vmovdqa64 ymm10,ymm0 + + xor r9d,r9d + + mov r11,rdx + mov rax,0xfffffffffffff + + + mov ebx,7 + +ALIGN 32 +$L$loop7: + mov r13,QWORD[r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52luq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52luq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52luq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52luq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52luq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52luq ymm10,ymm2,YMMWORD[224+rcx] + + + valignq ymm3,ymm4,ymm3,1 + valignq ymm4,ymm5,ymm4,1 + valignq ymm5,ymm6,ymm5,1 + valignq ymm6,ymm7,ymm6,1 + valignq ymm7,ymm8,ymm7,1 + valignq ymm8,ymm9,ymm8,1 + valignq ymm9,ymm10,ymm9,1 + valignq ymm10,ymm0,ymm10,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52huq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52huq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52huq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52huq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52huq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52huq ymm10,ymm2,YMMWORD[224+rcx] + mov r13,QWORD[8+r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52luq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52luq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52luq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52luq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52luq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52luq ymm10,ymm2,YMMWORD[224+rcx] + + + valignq ymm3,ymm4,ymm3,1 + valignq ymm4,ymm5,ymm4,1 + valignq ymm5,ymm6,ymm5,1 + valignq ymm6,ymm7,ymm6,1 + valignq ymm7,ymm8,ymm7,1 + valignq ymm8,ymm9,ymm8,1 + valignq ymm9,ymm10,ymm9,1 + valignq ymm10,ymm0,ymm10,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52huq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52huq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52huq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52huq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52huq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52huq ymm10,ymm2,YMMWORD[224+rcx] + mov r13,QWORD[16+r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52luq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52luq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52luq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52luq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52luq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52luq ymm10,ymm2,YMMWORD[224+rcx] + + + valignq ymm3,ymm4,ymm3,1 + valignq ymm4,ymm5,ymm4,1 + valignq ymm5,ymm6,ymm5,1 + valignq ymm6,ymm7,ymm6,1 + valignq ymm7,ymm8,ymm7,1 + valignq ymm8,ymm9,ymm8,1 + valignq ymm9,ymm10,ymm9,1 + valignq ymm10,ymm0,ymm10,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52huq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52huq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52huq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52huq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52huq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52huq ymm10,ymm2,YMMWORD[224+rcx] + mov r13,QWORD[24+r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52luq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52luq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52luq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52luq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52luq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52luq ymm10,ymm2,YMMWORD[224+rcx] + + + valignq ymm3,ymm4,ymm3,1 + valignq ymm4,ymm5,ymm4,1 + valignq ymm5,ymm6,ymm5,1 + valignq ymm6,ymm7,ymm6,1 + valignq ymm7,ymm8,ymm7,1 + valignq ymm8,ymm9,ymm8,1 + valignq ymm9,ymm10,ymm9,1 + valignq ymm10,ymm0,ymm10,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52huq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52huq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52huq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52huq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52huq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52huq ymm10,ymm2,YMMWORD[224+rcx] + lea r11,[32+r11] + dec ebx + jne NEAR $L$loop7 + mov r13,QWORD[r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52luq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52luq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52luq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52luq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52luq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52luq ymm10,ymm2,YMMWORD[224+rcx] + + + valignq ymm3,ymm4,ymm3,1 + valignq ymm4,ymm5,ymm4,1 + valignq ymm5,ymm6,ymm5,1 + valignq ymm6,ymm7,ymm6,1 + valignq ymm7,ymm8,ymm7,1 + valignq ymm8,ymm9,ymm8,1 + valignq ymm9,ymm10,ymm9,1 + valignq ymm10,ymm0,ymm10,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52huq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52huq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52huq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52huq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52huq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52huq ymm10,ymm2,YMMWORD[224+rcx] + mov r13,QWORD[8+r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52luq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52luq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52luq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52luq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52luq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52luq ymm10,ymm2,YMMWORD[224+rcx] + + + valignq ymm3,ymm4,ymm3,1 + valignq ymm4,ymm5,ymm4,1 + valignq ymm5,ymm6,ymm5,1 + valignq ymm6,ymm7,ymm6,1 + valignq ymm7,ymm8,ymm7,1 + valignq ymm8,ymm9,ymm8,1 + valignq ymm9,ymm10,ymm9,1 + valignq ymm10,ymm0,ymm10,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52huq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52huq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52huq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52huq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52huq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52huq ymm10,ymm2,YMMWORD[224+rcx] + + vpbroadcastq ymm0,r9 + vpblendd ymm3,ymm3,ymm0,3 + + + + vpsrlq ymm0,ymm3,52 + vpsrlq ymm1,ymm4,52 + vpsrlq ymm2,ymm5,52 + vpsrlq ymm19,ymm6,52 + vpsrlq ymm20,ymm7,52 + vpsrlq ymm21,ymm8,52 + vpsrlq ymm22,ymm9,52 + vpsrlq ymm23,ymm10,52 + + + valignq ymm23,ymm23,ymm22,3 + valignq ymm22,ymm22,ymm21,3 + valignq ymm21,ymm21,ymm20,3 + valignq ymm20,ymm20,ymm19,3 + valignq ymm19,ymm19,ymm2,3 + valignq ymm2,ymm2,ymm1,3 + valignq ymm1,ymm1,ymm0,3 + valignq ymm0,ymm0,YMMWORD[$L$zeros],3 + + + vpandq ymm3,ymm3,YMMWORD[$L$mask52x4] + vpandq ymm4,ymm4,YMMWORD[$L$mask52x4] + vpandq ymm5,ymm5,YMMWORD[$L$mask52x4] + vpandq ymm6,ymm6,YMMWORD[$L$mask52x4] + vpandq ymm7,ymm7,YMMWORD[$L$mask52x4] + vpandq ymm8,ymm8,YMMWORD[$L$mask52x4] + vpandq ymm9,ymm9,YMMWORD[$L$mask52x4] + vpandq ymm10,ymm10,YMMWORD[$L$mask52x4] + + + vpaddq ymm3,ymm3,ymm0 + vpaddq ymm4,ymm4,ymm1 + vpaddq ymm5,ymm5,ymm2 + vpaddq ymm6,ymm6,ymm19 + vpaddq ymm7,ymm7,ymm20 + vpaddq ymm8,ymm8,ymm21 + vpaddq ymm9,ymm9,ymm22 + vpaddq ymm10,ymm10,ymm23 + + + + vpcmpuq k1,ymm3,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm4,YMMWORD[$L$mask52x4],6 + kmovb r14d,k1 + kmovb r13d,k2 + shl r13b,4 + or r14b,r13b + + vpcmpuq k1,ymm5,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm6,YMMWORD[$L$mask52x4],6 + kmovb r13d,k1 + kmovb r12d,k2 + shl r12b,4 + or r13b,r12b + + vpcmpuq k1,ymm7,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm8,YMMWORD[$L$mask52x4],6 + kmovb r12d,k1 + kmovb r11d,k2 + shl r11b,4 + or r12b,r11b + + vpcmpuq k1,ymm9,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm10,YMMWORD[$L$mask52x4],6 + kmovb r11d,k1 + kmovb r10d,k2 + shl r10b,4 + or r11b,r10b + + add r14b,r14b + adc r13b,r13b + adc r12b,r12b + adc r11b,r11b + + + vpcmpuq k1,ymm3,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm4,YMMWORD[$L$mask52x4],0 + kmovb r9d,k1 + kmovb r8d,k2 + shl r8b,4 + or r9b,r8b + + vpcmpuq k1,ymm5,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm6,YMMWORD[$L$mask52x4],0 + kmovb r8d,k1 + kmovb edx,k2 + shl dl,4 + or r8b,dl + + vpcmpuq k1,ymm7,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm8,YMMWORD[$L$mask52x4],0 + kmovb edx,k1 + kmovb ecx,k2 + shl cl,4 + or dl,cl + + vpcmpuq k1,ymm9,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm10,YMMWORD[$L$mask52x4],0 + kmovb ecx,k1 + kmovb ebx,k2 + shl bl,4 + or cl,bl + + add r14b,r9b + adc r13b,r8b + adc r12b,dl + adc r11b,cl + + xor r14b,r9b + xor r13b,r8b + xor r12b,dl + xor r11b,cl + + kmovb k1,r14d + shr r14b,4 + kmovb k2,r14d + kmovb k3,r13d + shr r13b,4 + kmovb k4,r13d + kmovb k5,r12d + shr r12b,4 + kmovb k6,r12d + kmovb k7,r11d + + vpsubq ymm3{k1},ymm3,YMMWORD[$L$mask52x4] + vpsubq ymm4{k2},ymm4,YMMWORD[$L$mask52x4] + vpsubq ymm5{k3},ymm5,YMMWORD[$L$mask52x4] + vpsubq ymm6{k4},ymm6,YMMWORD[$L$mask52x4] + vpsubq ymm7{k5},ymm7,YMMWORD[$L$mask52x4] + vpsubq ymm8{k6},ymm8,YMMWORD[$L$mask52x4] + vpsubq ymm9{k7},ymm9,YMMWORD[$L$mask52x4] + + vpandq ymm3,ymm3,YMMWORD[$L$mask52x4] + vpandq ymm4,ymm4,YMMWORD[$L$mask52x4] + vpandq ymm5,ymm5,YMMWORD[$L$mask52x4] + vpandq ymm6,ymm6,YMMWORD[$L$mask52x4] + vpandq ymm7,ymm7,YMMWORD[$L$mask52x4] + vpandq ymm8,ymm8,YMMWORD[$L$mask52x4] + vpandq ymm9,ymm9,YMMWORD[$L$mask52x4] + + shr r11b,4 + kmovb k1,r11d + + vpsubq ymm10{k1},ymm10,YMMWORD[$L$mask52x4] + + vpandq ymm10,ymm10,YMMWORD[$L$mask52x4] + + vmovdqu64 YMMWORD[rdi],ymm3 + vmovdqu64 YMMWORD[32+rdi],ymm4 + vmovdqu64 YMMWORD[64+rdi],ymm5 + vmovdqu64 YMMWORD[96+rdi],ymm6 + vmovdqu64 YMMWORD[128+rdi],ymm7 + vmovdqu64 YMMWORD[160+rdi],ymm8 + vmovdqu64 YMMWORD[192+rdi],ymm9 + vmovdqu64 YMMWORD[224+rdi],ymm10 + + vzeroupper + lea rax,[rsp] + + vmovdqa64 xmm6,XMMWORD[rax] + vmovdqa64 xmm7,XMMWORD[16+rax] + vmovdqa64 xmm8,XMMWORD[32+rax] + vmovdqa64 xmm9,XMMWORD[48+rax] + vmovdqa64 xmm10,XMMWORD[64+rax] + vmovdqa64 xmm11,XMMWORD[80+rax] + vmovdqa64 xmm12,XMMWORD[96+rax] + vmovdqa64 xmm13,XMMWORD[112+rax] + vmovdqa64 xmm14,XMMWORD[128+rax] + vmovdqa64 xmm15,XMMWORD[144+rax] + lea rax,[168+rsp] + mov r15,QWORD[rax] + + mov r14,QWORD[8+rax] + + mov r13,QWORD[16+rax] + + mov r12,QWORD[24+rax] + + mov rbp,QWORD[32+rax] + + mov rbx,QWORD[40+rax] + + lea rsp,[48+rax] + +$L$ossl_rsaz_amm52x30_x1_ifma256_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ossl_rsaz_amm52x30_x1_ifma256: +section .rdata rdata align=32 +ALIGN 32 +$L$mask52x4: + DQ 0xfffffffffffff + DQ 0xfffffffffffff + DQ 0xfffffffffffff + DQ 0xfffffffffffff +section .text code align=64 + + +global ossl_rsaz_amm52x30_x2_ifma256 + +ALIGN 32 +ossl_rsaz_amm52x30_x2_ifma256: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ossl_rsaz_amm52x30_x2_ifma256: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + +DB 243,15,30,250 + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + lea rsp,[((-168))+rsp] + vmovdqa64 XMMWORD[rsp],xmm6 + vmovdqa64 XMMWORD[16+rsp],xmm7 + vmovdqa64 XMMWORD[32+rsp],xmm8 + vmovdqa64 XMMWORD[48+rsp],xmm9 + vmovdqa64 XMMWORD[64+rsp],xmm10 + vmovdqa64 XMMWORD[80+rsp],xmm11 + vmovdqa64 XMMWORD[96+rsp],xmm12 + vmovdqa64 XMMWORD[112+rsp],xmm13 + vmovdqa64 XMMWORD[128+rsp],xmm14 + vmovdqa64 XMMWORD[144+rsp],xmm15 +$L$ossl_rsaz_amm52x30_x2_ifma256_body: + + vpxord ymm0,ymm0,ymm0 + vmovdqa64 ymm3,ymm0 + vmovdqa64 ymm4,ymm0 + vmovdqa64 ymm5,ymm0 + vmovdqa64 ymm6,ymm0 + vmovdqa64 ymm7,ymm0 + vmovdqa64 ymm8,ymm0 + vmovdqa64 ymm9,ymm0 + vmovdqa64 ymm10,ymm0 + + vmovdqa64 ymm11,ymm0 + vmovdqa64 ymm12,ymm0 + vmovdqa64 ymm13,ymm0 + vmovdqa64 ymm14,ymm0 + vmovdqa64 ymm15,ymm0 + vmovdqa64 ymm16,ymm0 + vmovdqa64 ymm17,ymm0 + vmovdqa64 ymm18,ymm0 + + + xor r9d,r9d + xor r15d,r15d + + mov r11,rdx + mov rax,0xfffffffffffff + + mov ebx,30 + +ALIGN 32 +$L$loop30: + mov r13,QWORD[r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,QWORD[r8] + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52luq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52luq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52luq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52luq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52luq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52luq ymm10,ymm2,YMMWORD[224+rcx] + + + valignq ymm3,ymm4,ymm3,1 + valignq ymm4,ymm5,ymm4,1 + valignq ymm5,ymm6,ymm5,1 + valignq ymm6,ymm7,ymm6,1 + valignq ymm7,ymm8,ymm7,1 + valignq ymm8,ymm9,ymm8,1 + valignq ymm9,ymm10,ymm9,1 + valignq ymm10,ymm0,ymm10,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52huq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52huq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52huq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52huq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52huq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52huq ymm10,ymm2,YMMWORD[224+rcx] + mov r13,QWORD[256+r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[256+rsi] + mulx r12,r13,r13 + add r15,r13 + mov r10,r12 + adc r10,0 + + mov r13,QWORD[8+r8] + imul r13,r15 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[256+rcx] + mulx r12,r13,r13 + add r15,r13 + adc r10,r12 + + shr r15,52 + sal r10,12 + or r15,r10 + + vpmadd52luq ymm11,ymm1,YMMWORD[256+rsi] + vpmadd52luq ymm12,ymm1,YMMWORD[288+rsi] + vpmadd52luq ymm13,ymm1,YMMWORD[320+rsi] + vpmadd52luq ymm14,ymm1,YMMWORD[352+rsi] + vpmadd52luq ymm15,ymm1,YMMWORD[384+rsi] + vpmadd52luq ymm16,ymm1,YMMWORD[416+rsi] + vpmadd52luq ymm17,ymm1,YMMWORD[448+rsi] + vpmadd52luq ymm18,ymm1,YMMWORD[480+rsi] + + vpmadd52luq ymm11,ymm2,YMMWORD[256+rcx] + vpmadd52luq ymm12,ymm2,YMMWORD[288+rcx] + vpmadd52luq ymm13,ymm2,YMMWORD[320+rcx] + vpmadd52luq ymm14,ymm2,YMMWORD[352+rcx] + vpmadd52luq ymm15,ymm2,YMMWORD[384+rcx] + vpmadd52luq ymm16,ymm2,YMMWORD[416+rcx] + vpmadd52luq ymm17,ymm2,YMMWORD[448+rcx] + vpmadd52luq ymm18,ymm2,YMMWORD[480+rcx] + + + valignq ymm11,ymm12,ymm11,1 + valignq ymm12,ymm13,ymm12,1 + valignq ymm13,ymm14,ymm13,1 + valignq ymm14,ymm15,ymm14,1 + valignq ymm15,ymm16,ymm15,1 + valignq ymm16,ymm17,ymm16,1 + valignq ymm17,ymm18,ymm17,1 + valignq ymm18,ymm0,ymm18,1 + + vmovq r13,xmm11 + add r15,r13 + + vpmadd52huq ymm11,ymm1,YMMWORD[256+rsi] + vpmadd52huq ymm12,ymm1,YMMWORD[288+rsi] + vpmadd52huq ymm13,ymm1,YMMWORD[320+rsi] + vpmadd52huq ymm14,ymm1,YMMWORD[352+rsi] + vpmadd52huq ymm15,ymm1,YMMWORD[384+rsi] + vpmadd52huq ymm16,ymm1,YMMWORD[416+rsi] + vpmadd52huq ymm17,ymm1,YMMWORD[448+rsi] + vpmadd52huq ymm18,ymm1,YMMWORD[480+rsi] + + vpmadd52huq ymm11,ymm2,YMMWORD[256+rcx] + vpmadd52huq ymm12,ymm2,YMMWORD[288+rcx] + vpmadd52huq ymm13,ymm2,YMMWORD[320+rcx] + vpmadd52huq ymm14,ymm2,YMMWORD[352+rcx] + vpmadd52huq ymm15,ymm2,YMMWORD[384+rcx] + vpmadd52huq ymm16,ymm2,YMMWORD[416+rcx] + vpmadd52huq ymm17,ymm2,YMMWORD[448+rcx] + vpmadd52huq ymm18,ymm2,YMMWORD[480+rcx] + lea r11,[8+r11] + dec ebx + jne NEAR $L$loop30 + + vpbroadcastq ymm0,r9 + vpblendd ymm3,ymm3,ymm0,3 + + + + vpsrlq ymm0,ymm3,52 + vpsrlq ymm1,ymm4,52 + vpsrlq ymm2,ymm5,52 + vpsrlq ymm19,ymm6,52 + vpsrlq ymm20,ymm7,52 + vpsrlq ymm21,ymm8,52 + vpsrlq ymm22,ymm9,52 + vpsrlq ymm23,ymm10,52 + + + valignq ymm23,ymm23,ymm22,3 + valignq ymm22,ymm22,ymm21,3 + valignq ymm21,ymm21,ymm20,3 + valignq ymm20,ymm20,ymm19,3 + valignq ymm19,ymm19,ymm2,3 + valignq ymm2,ymm2,ymm1,3 + valignq ymm1,ymm1,ymm0,3 + valignq ymm0,ymm0,YMMWORD[$L$zeros],3 + + + vpandq ymm3,ymm3,YMMWORD[$L$mask52x4] + vpandq ymm4,ymm4,YMMWORD[$L$mask52x4] + vpandq ymm5,ymm5,YMMWORD[$L$mask52x4] + vpandq ymm6,ymm6,YMMWORD[$L$mask52x4] + vpandq ymm7,ymm7,YMMWORD[$L$mask52x4] + vpandq ymm8,ymm8,YMMWORD[$L$mask52x4] + vpandq ymm9,ymm9,YMMWORD[$L$mask52x4] + vpandq ymm10,ymm10,YMMWORD[$L$mask52x4] + + + vpaddq ymm3,ymm3,ymm0 + vpaddq ymm4,ymm4,ymm1 + vpaddq ymm5,ymm5,ymm2 + vpaddq ymm6,ymm6,ymm19 + vpaddq ymm7,ymm7,ymm20 + vpaddq ymm8,ymm8,ymm21 + vpaddq ymm9,ymm9,ymm22 + vpaddq ymm10,ymm10,ymm23 + + + + vpcmpuq k1,ymm3,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm4,YMMWORD[$L$mask52x4],6 + kmovb r14d,k1 + kmovb r13d,k2 + shl r13b,4 + or r14b,r13b + + vpcmpuq k1,ymm5,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm6,YMMWORD[$L$mask52x4],6 + kmovb r13d,k1 + kmovb r12d,k2 + shl r12b,4 + or r13b,r12b + + vpcmpuq k1,ymm7,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm8,YMMWORD[$L$mask52x4],6 + kmovb r12d,k1 + kmovb r11d,k2 + shl r11b,4 + or r12b,r11b + + vpcmpuq k1,ymm9,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm10,YMMWORD[$L$mask52x4],6 + kmovb r11d,k1 + kmovb r10d,k2 + shl r10b,4 + or r11b,r10b + + add r14b,r14b + adc r13b,r13b + adc r12b,r12b + adc r11b,r11b + + + vpcmpuq k1,ymm3,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm4,YMMWORD[$L$mask52x4],0 + kmovb r9d,k1 + kmovb r8d,k2 + shl r8b,4 + or r9b,r8b + + vpcmpuq k1,ymm5,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm6,YMMWORD[$L$mask52x4],0 + kmovb r8d,k1 + kmovb edx,k2 + shl dl,4 + or r8b,dl + + vpcmpuq k1,ymm7,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm8,YMMWORD[$L$mask52x4],0 + kmovb edx,k1 + kmovb ecx,k2 + shl cl,4 + or dl,cl + + vpcmpuq k1,ymm9,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm10,YMMWORD[$L$mask52x4],0 + kmovb ecx,k1 + kmovb ebx,k2 + shl bl,4 + or cl,bl + + add r14b,r9b + adc r13b,r8b + adc r12b,dl + adc r11b,cl + + xor r14b,r9b + xor r13b,r8b + xor r12b,dl + xor r11b,cl + + kmovb k1,r14d + shr r14b,4 + kmovb k2,r14d + kmovb k3,r13d + shr r13b,4 + kmovb k4,r13d + kmovb k5,r12d + shr r12b,4 + kmovb k6,r12d + kmovb k7,r11d + + vpsubq ymm3{k1},ymm3,YMMWORD[$L$mask52x4] + vpsubq ymm4{k2},ymm4,YMMWORD[$L$mask52x4] + vpsubq ymm5{k3},ymm5,YMMWORD[$L$mask52x4] + vpsubq ymm6{k4},ymm6,YMMWORD[$L$mask52x4] + vpsubq ymm7{k5},ymm7,YMMWORD[$L$mask52x4] + vpsubq ymm8{k6},ymm8,YMMWORD[$L$mask52x4] + vpsubq ymm9{k7},ymm9,YMMWORD[$L$mask52x4] + + vpandq ymm3,ymm3,YMMWORD[$L$mask52x4] + vpandq ymm4,ymm4,YMMWORD[$L$mask52x4] + vpandq ymm5,ymm5,YMMWORD[$L$mask52x4] + vpandq ymm6,ymm6,YMMWORD[$L$mask52x4] + vpandq ymm7,ymm7,YMMWORD[$L$mask52x4] + vpandq ymm8,ymm8,YMMWORD[$L$mask52x4] + vpandq ymm9,ymm9,YMMWORD[$L$mask52x4] + + shr r11b,4 + kmovb k1,r11d + + vpsubq ymm10{k1},ymm10,YMMWORD[$L$mask52x4] + + vpandq ymm10,ymm10,YMMWORD[$L$mask52x4] + + vpbroadcastq ymm0,r15 + vpblendd ymm11,ymm11,ymm0,3 + + + + vpsrlq ymm0,ymm11,52 + vpsrlq ymm1,ymm12,52 + vpsrlq ymm2,ymm13,52 + vpsrlq ymm19,ymm14,52 + vpsrlq ymm20,ymm15,52 + vpsrlq ymm21,ymm16,52 + vpsrlq ymm22,ymm17,52 + vpsrlq ymm23,ymm18,52 + + + valignq ymm23,ymm23,ymm22,3 + valignq ymm22,ymm22,ymm21,3 + valignq ymm21,ymm21,ymm20,3 + valignq ymm20,ymm20,ymm19,3 + valignq ymm19,ymm19,ymm2,3 + valignq ymm2,ymm2,ymm1,3 + valignq ymm1,ymm1,ymm0,3 + valignq ymm0,ymm0,YMMWORD[$L$zeros],3 + + + vpandq ymm11,ymm11,YMMWORD[$L$mask52x4] + vpandq ymm12,ymm12,YMMWORD[$L$mask52x4] + vpandq ymm13,ymm13,YMMWORD[$L$mask52x4] + vpandq ymm14,ymm14,YMMWORD[$L$mask52x4] + vpandq ymm15,ymm15,YMMWORD[$L$mask52x4] + vpandq ymm16,ymm16,YMMWORD[$L$mask52x4] + vpandq ymm17,ymm17,YMMWORD[$L$mask52x4] + vpandq ymm18,ymm18,YMMWORD[$L$mask52x4] + + + vpaddq ymm11,ymm11,ymm0 + vpaddq ymm12,ymm12,ymm1 + vpaddq ymm13,ymm13,ymm2 + vpaddq ymm14,ymm14,ymm19 + vpaddq ymm15,ymm15,ymm20 + vpaddq ymm16,ymm16,ymm21 + vpaddq ymm17,ymm17,ymm22 + vpaddq ymm18,ymm18,ymm23 + + + + vpcmpuq k1,ymm11,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm12,YMMWORD[$L$mask52x4],6 + kmovb r14d,k1 + kmovb r13d,k2 + shl r13b,4 + or r14b,r13b + + vpcmpuq k1,ymm13,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm14,YMMWORD[$L$mask52x4],6 + kmovb r13d,k1 + kmovb r12d,k2 + shl r12b,4 + or r13b,r12b + + vpcmpuq k1,ymm15,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm16,YMMWORD[$L$mask52x4],6 + kmovb r12d,k1 + kmovb r11d,k2 + shl r11b,4 + or r12b,r11b + + vpcmpuq k1,ymm17,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm18,YMMWORD[$L$mask52x4],6 + kmovb r11d,k1 + kmovb r10d,k2 + shl r10b,4 + or r11b,r10b + + add r14b,r14b + adc r13b,r13b + adc r12b,r12b + adc r11b,r11b + + + vpcmpuq k1,ymm11,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm12,YMMWORD[$L$mask52x4],0 + kmovb r9d,k1 + kmovb r8d,k2 + shl r8b,4 + or r9b,r8b + + vpcmpuq k1,ymm13,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm14,YMMWORD[$L$mask52x4],0 + kmovb r8d,k1 + kmovb edx,k2 + shl dl,4 + or r8b,dl + + vpcmpuq k1,ymm15,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm16,YMMWORD[$L$mask52x4],0 + kmovb edx,k1 + kmovb ecx,k2 + shl cl,4 + or dl,cl + + vpcmpuq k1,ymm17,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm18,YMMWORD[$L$mask52x4],0 + kmovb ecx,k1 + kmovb ebx,k2 + shl bl,4 + or cl,bl + + add r14b,r9b + adc r13b,r8b + adc r12b,dl + adc r11b,cl + + xor r14b,r9b + xor r13b,r8b + xor r12b,dl + xor r11b,cl + + kmovb k1,r14d + shr r14b,4 + kmovb k2,r14d + kmovb k3,r13d + shr r13b,4 + kmovb k4,r13d + kmovb k5,r12d + shr r12b,4 + kmovb k6,r12d + kmovb k7,r11d + + vpsubq ymm11{k1},ymm11,YMMWORD[$L$mask52x4] + vpsubq ymm12{k2},ymm12,YMMWORD[$L$mask52x4] + vpsubq ymm13{k3},ymm13,YMMWORD[$L$mask52x4] + vpsubq ymm14{k4},ymm14,YMMWORD[$L$mask52x4] + vpsubq ymm15{k5},ymm15,YMMWORD[$L$mask52x4] + vpsubq ymm16{k6},ymm16,YMMWORD[$L$mask52x4] + vpsubq ymm17{k7},ymm17,YMMWORD[$L$mask52x4] + + vpandq ymm11,ymm11,YMMWORD[$L$mask52x4] + vpandq ymm12,ymm12,YMMWORD[$L$mask52x4] + vpandq ymm13,ymm13,YMMWORD[$L$mask52x4] + vpandq ymm14,ymm14,YMMWORD[$L$mask52x4] + vpandq ymm15,ymm15,YMMWORD[$L$mask52x4] + vpandq ymm16,ymm16,YMMWORD[$L$mask52x4] + vpandq ymm17,ymm17,YMMWORD[$L$mask52x4] + + shr r11b,4 + kmovb k1,r11d + + vpsubq ymm18{k1},ymm18,YMMWORD[$L$mask52x4] + + vpandq ymm18,ymm18,YMMWORD[$L$mask52x4] + + vmovdqu64 YMMWORD[rdi],ymm3 + vmovdqu64 YMMWORD[32+rdi],ymm4 + vmovdqu64 YMMWORD[64+rdi],ymm5 + vmovdqu64 YMMWORD[96+rdi],ymm6 + vmovdqu64 YMMWORD[128+rdi],ymm7 + vmovdqu64 YMMWORD[160+rdi],ymm8 + vmovdqu64 YMMWORD[192+rdi],ymm9 + vmovdqu64 YMMWORD[224+rdi],ymm10 + + vmovdqu64 YMMWORD[256+rdi],ymm11 + vmovdqu64 YMMWORD[288+rdi],ymm12 + vmovdqu64 YMMWORD[320+rdi],ymm13 + vmovdqu64 YMMWORD[352+rdi],ymm14 + vmovdqu64 YMMWORD[384+rdi],ymm15 + vmovdqu64 YMMWORD[416+rdi],ymm16 + vmovdqu64 YMMWORD[448+rdi],ymm17 + vmovdqu64 YMMWORD[480+rdi],ymm18 + + vzeroupper + lea rax,[rsp] + + vmovdqa64 xmm6,XMMWORD[rax] + vmovdqa64 xmm7,XMMWORD[16+rax] + vmovdqa64 xmm8,XMMWORD[32+rax] + vmovdqa64 xmm9,XMMWORD[48+rax] + vmovdqa64 xmm10,XMMWORD[64+rax] + vmovdqa64 xmm11,XMMWORD[80+rax] + vmovdqa64 xmm12,XMMWORD[96+rax] + vmovdqa64 xmm13,XMMWORD[112+rax] + vmovdqa64 xmm14,XMMWORD[128+rax] + vmovdqa64 xmm15,XMMWORD[144+rax] + lea rax,[168+rsp] + mov r15,QWORD[rax] + + mov r14,QWORD[8+rax] + + mov r13,QWORD[16+rax] + + mov r12,QWORD[24+rax] + + mov rbp,QWORD[32+rax] + + mov rbx,QWORD[40+rax] + + lea rsp,[48+rax] + +$L$ossl_rsaz_amm52x30_x2_ifma256_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ossl_rsaz_amm52x30_x2_ifma256: +section .text code align=64 + + +ALIGN 32 +global ossl_extract_multiplier_2x30_win5 + +ossl_extract_multiplier_2x30_win5: + +DB 243,15,30,250 + vmovdqa64 ymm30,YMMWORD[$L$ones] + vpbroadcastq ymm28,r8 + vpbroadcastq ymm29,r9 + lea rax,[16384+rdx] + + + vpxor xmm0,xmm0,xmm0 + vmovdqa64 ymm27,ymm0 + vmovdqa64 ymm1,ymm0 + vmovdqa64 ymm2,ymm0 + vmovdqa64 ymm3,ymm0 + vmovdqa64 ymm4,ymm0 + vmovdqa64 ymm5,ymm0 + vmovdqa64 ymm16,ymm0 + vmovdqa64 ymm17,ymm0 + vmovdqa64 ymm18,ymm0 + vmovdqa64 ymm19,ymm0 + vmovdqa64 ymm20,ymm0 + vmovdqa64 ymm21,ymm0 + vmovdqa64 ymm22,ymm0 + vmovdqa64 ymm23,ymm0 + vmovdqa64 ymm24,ymm0 + vmovdqa64 ymm25,ymm0 + +ALIGN 32 +$L$loop: + vpcmpq k1,ymm28,ymm27,0 + vpcmpq k2,ymm29,ymm27,0 + vmovdqu64 ymm26,YMMWORD[rdx] + vpblendmq ymm0{k1},ymm0,ymm26 + vmovdqu64 ymm26,YMMWORD[32+rdx] + vpblendmq ymm1{k1},ymm1,ymm26 + vmovdqu64 ymm26,YMMWORD[64+rdx] + vpblendmq ymm2{k1},ymm2,ymm26 + vmovdqu64 ymm26,YMMWORD[96+rdx] + vpblendmq ymm3{k1},ymm3,ymm26 + vmovdqu64 ymm26,YMMWORD[128+rdx] + vpblendmq ymm4{k1},ymm4,ymm26 + vmovdqu64 ymm26,YMMWORD[160+rdx] + vpblendmq ymm5{k1},ymm5,ymm26 + vmovdqu64 ymm26,YMMWORD[192+rdx] + vpblendmq ymm16{k1},ymm16,ymm26 + vmovdqu64 ymm26,YMMWORD[224+rdx] + vpblendmq ymm17{k1},ymm17,ymm26 + vmovdqu64 ymm26,YMMWORD[256+rdx] + vpblendmq ymm18{k2},ymm18,ymm26 + vmovdqu64 ymm26,YMMWORD[288+rdx] + vpblendmq ymm19{k2},ymm19,ymm26 + vmovdqu64 ymm26,YMMWORD[320+rdx] + vpblendmq ymm20{k2},ymm20,ymm26 + vmovdqu64 ymm26,YMMWORD[352+rdx] + vpblendmq ymm21{k2},ymm21,ymm26 + vmovdqu64 ymm26,YMMWORD[384+rdx] + vpblendmq ymm22{k2},ymm22,ymm26 + vmovdqu64 ymm26,YMMWORD[416+rdx] + vpblendmq ymm23{k2},ymm23,ymm26 + vmovdqu64 ymm26,YMMWORD[448+rdx] + vpblendmq ymm24{k2},ymm24,ymm26 + vmovdqu64 ymm26,YMMWORD[480+rdx] + vpblendmq ymm25{k2},ymm25,ymm26 + vpaddq ymm27,ymm27,ymm30 + add rdx,512 + cmp rax,rdx + jne NEAR $L$loop + vmovdqu64 YMMWORD[rcx],ymm0 + vmovdqu64 YMMWORD[32+rcx],ymm1 + vmovdqu64 YMMWORD[64+rcx],ymm2 + vmovdqu64 YMMWORD[96+rcx],ymm3 + vmovdqu64 YMMWORD[128+rcx],ymm4 + vmovdqu64 YMMWORD[160+rcx],ymm5 + vmovdqu64 YMMWORD[192+rcx],ymm16 + vmovdqu64 YMMWORD[224+rcx],ymm17 + vmovdqu64 YMMWORD[256+rcx],ymm18 + vmovdqu64 YMMWORD[288+rcx],ymm19 + vmovdqu64 YMMWORD[320+rcx],ymm20 + vmovdqu64 YMMWORD[352+rcx],ymm21 + vmovdqu64 YMMWORD[384+rcx],ymm22 + vmovdqu64 YMMWORD[416+rcx],ymm23 + vmovdqu64 YMMWORD[448+rcx],ymm24 + vmovdqu64 YMMWORD[480+rcx],ymm25 + + DB 0F3h,0C3h ;repret + + +section .rdata rdata align=32 +ALIGN 32 +$L$ones: + DQ 1,1,1,1 +$L$zeros: + DQ 0,0,0,0 +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +rsaz_avx_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + + mov rax,QWORD[152+r8] + + lea rsi,[rax] + lea rdi,[512+r8] + mov ecx,20 + DD 0xa548f3fc + + lea rax,[216+rax] + + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + mov r15,QWORD[((-48))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + +$L$common_seh_tail: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_ossl_rsaz_amm52x30_x1_ifma256 wrt ..imagebase + DD $L$SEH_end_ossl_rsaz_amm52x30_x1_ifma256 wrt ..imagebase + DD $L$SEH_info_ossl_rsaz_amm52x30_x1_ifma256 wrt ..imagebase + + DD $L$SEH_begin_ossl_rsaz_amm52x30_x2_ifma256 wrt ..imagebase + DD $L$SEH_end_ossl_rsaz_amm52x30_x2_ifma256 wrt ..imagebase + DD $L$SEH_info_ossl_rsaz_amm52x30_x2_ifma256 wrt ..imagebase + +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_ossl_rsaz_amm52x30_x1_ifma256: +DB 9,0,0,0 + DD rsaz_avx_handler wrt ..imagebase + DD $L$ossl_rsaz_amm52x30_x1_ifma256_body wrt ..imagebase,$L$ossl_rsaz_amm52x30_x1_ifma256_epilogue wrt ..imagebase +$L$SEH_info_ossl_rsaz_amm52x30_x2_ifma256: +DB 9,0,0,0 + DD rsaz_avx_handler wrt ..imagebase + DD $L$ossl_rsaz_amm52x30_x2_ifma256_body wrt ..imagebase,$L$ossl_rsaz_amm52x30_x2_ifma256_epilogue wrt ..imagebase diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-3k-avxifma.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-3k-avxifma.asm new file mode 100644 index 00000000000000..b7dc264139e7ad --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-3k-avxifma.asm @@ -0,0 +1,17 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + +global ossl_rsaz_amm52x30_x1_avxifma256 +global ossl_rsaz_amm52x30_x2_avxifma256 +global ossl_extract_multiplier_2x30_win5_avx + +ossl_rsaz_amm52x30_x1_avxifma256: +ossl_rsaz_amm52x30_x2_avxifma256: +ossl_extract_multiplier_2x30_win5_avx: +DB 0x0f,0x0b + DB 0F3h,0C3h ;repret + diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-4k-avx512.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-4k-avx512.asm new file mode 100644 index 00000000000000..4e11925db699e6 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-4k-avx512.asm @@ -0,0 +1,1533 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + +global ossl_rsaz_amm52x40_x1_ifma256 + +ALIGN 32 +ossl_rsaz_amm52x40_x1_ifma256: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ossl_rsaz_amm52x40_x1_ifma256: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + +DB 243,15,30,250 + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + lea rsp,[((-168))+rsp] + vmovdqa64 XMMWORD[rsp],xmm6 + vmovdqa64 XMMWORD[16+rsp],xmm7 + vmovdqa64 XMMWORD[32+rsp],xmm8 + vmovdqa64 XMMWORD[48+rsp],xmm9 + vmovdqa64 XMMWORD[64+rsp],xmm10 + vmovdqa64 XMMWORD[80+rsp],xmm11 + vmovdqa64 XMMWORD[96+rsp],xmm12 + vmovdqa64 XMMWORD[112+rsp],xmm13 + vmovdqa64 XMMWORD[128+rsp],xmm14 + vmovdqa64 XMMWORD[144+rsp],xmm15 +$L$ossl_rsaz_amm52x40_x1_ifma256_body: + + vpxord ymm0,ymm0,ymm0 + vmovdqa64 ymm3,ymm0 + vmovdqa64 ymm4,ymm0 + vmovdqa64 ymm5,ymm0 + vmovdqa64 ymm6,ymm0 + vmovdqa64 ymm7,ymm0 + vmovdqa64 ymm8,ymm0 + vmovdqa64 ymm9,ymm0 + vmovdqa64 ymm10,ymm0 + vmovdqa64 ymm11,ymm0 + vmovdqa64 ymm12,ymm0 + + xor r9d,r9d + + mov r11,rdx + mov rax,0xfffffffffffff + + + mov ebx,10 + +ALIGN 32 +$L$loop10: + mov r13,QWORD[r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52luq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52luq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52luq ymm10,ymm1,YMMWORD[224+rsi] + vpmadd52luq ymm11,ymm1,YMMWORD[256+rsi] + vpmadd52luq ymm12,ymm1,YMMWORD[288+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52luq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52luq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52luq ymm10,ymm2,YMMWORD[224+rcx] + vpmadd52luq ymm11,ymm2,YMMWORD[256+rcx] + vpmadd52luq ymm12,ymm2,YMMWORD[288+rcx] + + + valignq ymm3,ymm4,ymm3,1 + valignq ymm4,ymm5,ymm4,1 + valignq ymm5,ymm6,ymm5,1 + valignq ymm6,ymm7,ymm6,1 + valignq ymm7,ymm8,ymm7,1 + valignq ymm8,ymm9,ymm8,1 + valignq ymm9,ymm10,ymm9,1 + valignq ymm10,ymm11,ymm10,1 + valignq ymm11,ymm12,ymm11,1 + valignq ymm12,ymm0,ymm12,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52huq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52huq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52huq ymm10,ymm1,YMMWORD[224+rsi] + vpmadd52huq ymm11,ymm1,YMMWORD[256+rsi] + vpmadd52huq ymm12,ymm1,YMMWORD[288+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52huq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52huq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52huq ymm10,ymm2,YMMWORD[224+rcx] + vpmadd52huq ymm11,ymm2,YMMWORD[256+rcx] + vpmadd52huq ymm12,ymm2,YMMWORD[288+rcx] + mov r13,QWORD[8+r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52luq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52luq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52luq ymm10,ymm1,YMMWORD[224+rsi] + vpmadd52luq ymm11,ymm1,YMMWORD[256+rsi] + vpmadd52luq ymm12,ymm1,YMMWORD[288+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52luq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52luq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52luq ymm10,ymm2,YMMWORD[224+rcx] + vpmadd52luq ymm11,ymm2,YMMWORD[256+rcx] + vpmadd52luq ymm12,ymm2,YMMWORD[288+rcx] + + + valignq ymm3,ymm4,ymm3,1 + valignq ymm4,ymm5,ymm4,1 + valignq ymm5,ymm6,ymm5,1 + valignq ymm6,ymm7,ymm6,1 + valignq ymm7,ymm8,ymm7,1 + valignq ymm8,ymm9,ymm8,1 + valignq ymm9,ymm10,ymm9,1 + valignq ymm10,ymm11,ymm10,1 + valignq ymm11,ymm12,ymm11,1 + valignq ymm12,ymm0,ymm12,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52huq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52huq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52huq ymm10,ymm1,YMMWORD[224+rsi] + vpmadd52huq ymm11,ymm1,YMMWORD[256+rsi] + vpmadd52huq ymm12,ymm1,YMMWORD[288+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52huq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52huq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52huq ymm10,ymm2,YMMWORD[224+rcx] + vpmadd52huq ymm11,ymm2,YMMWORD[256+rcx] + vpmadd52huq ymm12,ymm2,YMMWORD[288+rcx] + mov r13,QWORD[16+r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52luq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52luq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52luq ymm10,ymm1,YMMWORD[224+rsi] + vpmadd52luq ymm11,ymm1,YMMWORD[256+rsi] + vpmadd52luq ymm12,ymm1,YMMWORD[288+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52luq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52luq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52luq ymm10,ymm2,YMMWORD[224+rcx] + vpmadd52luq ymm11,ymm2,YMMWORD[256+rcx] + vpmadd52luq ymm12,ymm2,YMMWORD[288+rcx] + + + valignq ymm3,ymm4,ymm3,1 + valignq ymm4,ymm5,ymm4,1 + valignq ymm5,ymm6,ymm5,1 + valignq ymm6,ymm7,ymm6,1 + valignq ymm7,ymm8,ymm7,1 + valignq ymm8,ymm9,ymm8,1 + valignq ymm9,ymm10,ymm9,1 + valignq ymm10,ymm11,ymm10,1 + valignq ymm11,ymm12,ymm11,1 + valignq ymm12,ymm0,ymm12,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52huq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52huq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52huq ymm10,ymm1,YMMWORD[224+rsi] + vpmadd52huq ymm11,ymm1,YMMWORD[256+rsi] + vpmadd52huq ymm12,ymm1,YMMWORD[288+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52huq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52huq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52huq ymm10,ymm2,YMMWORD[224+rcx] + vpmadd52huq ymm11,ymm2,YMMWORD[256+rcx] + vpmadd52huq ymm12,ymm2,YMMWORD[288+rcx] + mov r13,QWORD[24+r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52luq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52luq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52luq ymm10,ymm1,YMMWORD[224+rsi] + vpmadd52luq ymm11,ymm1,YMMWORD[256+rsi] + vpmadd52luq ymm12,ymm1,YMMWORD[288+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52luq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52luq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52luq ymm10,ymm2,YMMWORD[224+rcx] + vpmadd52luq ymm11,ymm2,YMMWORD[256+rcx] + vpmadd52luq ymm12,ymm2,YMMWORD[288+rcx] + + + valignq ymm3,ymm4,ymm3,1 + valignq ymm4,ymm5,ymm4,1 + valignq ymm5,ymm6,ymm5,1 + valignq ymm6,ymm7,ymm6,1 + valignq ymm7,ymm8,ymm7,1 + valignq ymm8,ymm9,ymm8,1 + valignq ymm9,ymm10,ymm9,1 + valignq ymm10,ymm11,ymm10,1 + valignq ymm11,ymm12,ymm11,1 + valignq ymm12,ymm0,ymm12,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52huq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52huq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52huq ymm10,ymm1,YMMWORD[224+rsi] + vpmadd52huq ymm11,ymm1,YMMWORD[256+rsi] + vpmadd52huq ymm12,ymm1,YMMWORD[288+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52huq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52huq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52huq ymm10,ymm2,YMMWORD[224+rcx] + vpmadd52huq ymm11,ymm2,YMMWORD[256+rcx] + vpmadd52huq ymm12,ymm2,YMMWORD[288+rcx] + lea r11,[32+r11] + dec ebx + jne NEAR $L$loop10 + + vpbroadcastq ymm0,r9 + vpblendd ymm3,ymm3,ymm0,3 + + + + vpsrlq ymm0,ymm3,52 + vpsrlq ymm1,ymm4,52 + vpsrlq ymm2,ymm5,52 + vpsrlq ymm23,ymm6,52 + vpsrlq ymm24,ymm7,52 + vpsrlq ymm25,ymm8,52 + vpsrlq ymm26,ymm9,52 + vpsrlq ymm27,ymm10,52 + vpsrlq ymm28,ymm11,52 + vpsrlq ymm29,ymm12,52 + + + valignq ymm29,ymm29,ymm28,3 + valignq ymm28,ymm28,ymm27,3 + valignq ymm27,ymm27,ymm26,3 + valignq ymm26,ymm26,ymm25,3 + valignq ymm25,ymm25,ymm24,3 + valignq ymm24,ymm24,ymm23,3 + valignq ymm23,ymm23,ymm2,3 + valignq ymm2,ymm2,ymm1,3 + valignq ymm1,ymm1,ymm0,3 + valignq ymm0,ymm0,YMMWORD[$L$zeros],3 + + + vpandq ymm3,ymm3,YMMWORD[$L$mask52x4] + vpandq ymm4,ymm4,YMMWORD[$L$mask52x4] + vpandq ymm5,ymm5,YMMWORD[$L$mask52x4] + vpandq ymm6,ymm6,YMMWORD[$L$mask52x4] + vpandq ymm7,ymm7,YMMWORD[$L$mask52x4] + vpandq ymm8,ymm8,YMMWORD[$L$mask52x4] + vpandq ymm9,ymm9,YMMWORD[$L$mask52x4] + vpandq ymm10,ymm10,YMMWORD[$L$mask52x4] + vpandq ymm11,ymm11,YMMWORD[$L$mask52x4] + vpandq ymm12,ymm12,YMMWORD[$L$mask52x4] + + + vpaddq ymm3,ymm3,ymm0 + vpaddq ymm4,ymm4,ymm1 + vpaddq ymm5,ymm5,ymm2 + vpaddq ymm6,ymm6,ymm23 + vpaddq ymm7,ymm7,ymm24 + vpaddq ymm8,ymm8,ymm25 + vpaddq ymm9,ymm9,ymm26 + vpaddq ymm10,ymm10,ymm27 + vpaddq ymm11,ymm11,ymm28 + vpaddq ymm12,ymm12,ymm29 + + + + vpcmpuq k1,ymm3,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm4,YMMWORD[$L$mask52x4],6 + kmovb r14d,k1 + kmovb r13d,k2 + shl r13b,4 + or r14b,r13b + + vpcmpuq k1,ymm5,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm6,YMMWORD[$L$mask52x4],6 + kmovb r13d,k1 + kmovb r12d,k2 + shl r12b,4 + or r13b,r12b + + vpcmpuq k1,ymm7,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm8,YMMWORD[$L$mask52x4],6 + kmovb r12d,k1 + kmovb r11d,k2 + shl r11b,4 + or r12b,r11b + + vpcmpuq k1,ymm9,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm10,YMMWORD[$L$mask52x4],6 + kmovb r11d,k1 + kmovb r10d,k2 + shl r10b,4 + or r11b,r10b + + vpcmpuq k1,ymm11,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm12,YMMWORD[$L$mask52x4],6 + kmovb r10d,k1 + kmovb r9d,k2 + shl r9b,4 + or r10b,r9b + + add r14b,r14b + adc r13b,r13b + adc r12b,r12b + adc r11b,r11b + adc r10b,r10b + + + vpcmpuq k1,ymm3,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm4,YMMWORD[$L$mask52x4],0 + kmovb r9d,k1 + kmovb r8d,k2 + shl r8b,4 + or r9b,r8b + + vpcmpuq k1,ymm5,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm6,YMMWORD[$L$mask52x4],0 + kmovb r8d,k1 + kmovb edx,k2 + shl dl,4 + or r8b,dl + + vpcmpuq k1,ymm7,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm8,YMMWORD[$L$mask52x4],0 + kmovb edx,k1 + kmovb ecx,k2 + shl cl,4 + or dl,cl + + vpcmpuq k1,ymm9,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm10,YMMWORD[$L$mask52x4],0 + kmovb ecx,k1 + kmovb ebx,k2 + shl bl,4 + or cl,bl + + vpcmpuq k1,ymm11,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm12,YMMWORD[$L$mask52x4],0 + kmovb ebx,k1 + kmovb eax,k2 + shl al,4 + or bl,al + + add r14b,r9b + adc r13b,r8b + adc r12b,dl + adc r11b,cl + adc r10b,bl + + xor r14b,r9b + xor r13b,r8b + xor r12b,dl + xor r11b,cl + xor r10b,bl + + kmovb k1,r14d + shr r14b,4 + kmovb k2,r14d + kmovb k3,r13d + shr r13b,4 + kmovb k4,r13d + kmovb k5,r12d + shr r12b,4 + kmovb k6,r12d + kmovb k7,r11d + + vpsubq ymm3{k1},ymm3,YMMWORD[$L$mask52x4] + vpsubq ymm4{k2},ymm4,YMMWORD[$L$mask52x4] + vpsubq ymm5{k3},ymm5,YMMWORD[$L$mask52x4] + vpsubq ymm6{k4},ymm6,YMMWORD[$L$mask52x4] + vpsubq ymm7{k5},ymm7,YMMWORD[$L$mask52x4] + vpsubq ymm8{k6},ymm8,YMMWORD[$L$mask52x4] + vpsubq ymm9{k7},ymm9,YMMWORD[$L$mask52x4] + + vpandq ymm3,ymm3,YMMWORD[$L$mask52x4] + vpandq ymm4,ymm4,YMMWORD[$L$mask52x4] + vpandq ymm5,ymm5,YMMWORD[$L$mask52x4] + vpandq ymm6,ymm6,YMMWORD[$L$mask52x4] + vpandq ymm7,ymm7,YMMWORD[$L$mask52x4] + vpandq ymm8,ymm8,YMMWORD[$L$mask52x4] + vpandq ymm9,ymm9,YMMWORD[$L$mask52x4] + + shr r11b,4 + kmovb k1,r11d + kmovb k2,r10d + shr r10b,4 + kmovb k3,r10d + + vpsubq ymm10{k1},ymm10,YMMWORD[$L$mask52x4] + vpsubq ymm11{k2},ymm11,YMMWORD[$L$mask52x4] + vpsubq ymm12{k3},ymm12,YMMWORD[$L$mask52x4] + + vpandq ymm10,ymm10,YMMWORD[$L$mask52x4] + vpandq ymm11,ymm11,YMMWORD[$L$mask52x4] + vpandq ymm12,ymm12,YMMWORD[$L$mask52x4] + + vmovdqu64 YMMWORD[rdi],ymm3 + vmovdqu64 YMMWORD[32+rdi],ymm4 + vmovdqu64 YMMWORD[64+rdi],ymm5 + vmovdqu64 YMMWORD[96+rdi],ymm6 + vmovdqu64 YMMWORD[128+rdi],ymm7 + vmovdqu64 YMMWORD[160+rdi],ymm8 + vmovdqu64 YMMWORD[192+rdi],ymm9 + vmovdqu64 YMMWORD[224+rdi],ymm10 + vmovdqu64 YMMWORD[256+rdi],ymm11 + vmovdqu64 YMMWORD[288+rdi],ymm12 + + vzeroupper + lea rax,[rsp] + + vmovdqa64 xmm6,XMMWORD[rax] + vmovdqa64 xmm7,XMMWORD[16+rax] + vmovdqa64 xmm8,XMMWORD[32+rax] + vmovdqa64 xmm9,XMMWORD[48+rax] + vmovdqa64 xmm10,XMMWORD[64+rax] + vmovdqa64 xmm11,XMMWORD[80+rax] + vmovdqa64 xmm12,XMMWORD[96+rax] + vmovdqa64 xmm13,XMMWORD[112+rax] + vmovdqa64 xmm14,XMMWORD[128+rax] + vmovdqa64 xmm15,XMMWORD[144+rax] + lea rax,[168+rsp] + mov r15,QWORD[rax] + + mov r14,QWORD[8+rax] + + mov r13,QWORD[16+rax] + + mov r12,QWORD[24+rax] + + mov rbp,QWORD[32+rax] + + mov rbx,QWORD[40+rax] + + lea rsp,[48+rax] + +$L$ossl_rsaz_amm52x40_x1_ifma256_epilogue: + + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ossl_rsaz_amm52x40_x1_ifma256: +section .rdata rdata align=32 +ALIGN 32 +$L$mask52x4: + DQ 0xfffffffffffff + DQ 0xfffffffffffff + DQ 0xfffffffffffff + DQ 0xfffffffffffff +section .text code align=64 + + +global ossl_rsaz_amm52x40_x2_ifma256 + +ALIGN 32 +ossl_rsaz_amm52x40_x2_ifma256: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ossl_rsaz_amm52x40_x2_ifma256: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + +DB 243,15,30,250 + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + lea rsp,[((-168))+rsp] + vmovdqa64 XMMWORD[rsp],xmm6 + vmovdqa64 XMMWORD[16+rsp],xmm7 + vmovdqa64 XMMWORD[32+rsp],xmm8 + vmovdqa64 XMMWORD[48+rsp],xmm9 + vmovdqa64 XMMWORD[64+rsp],xmm10 + vmovdqa64 XMMWORD[80+rsp],xmm11 + vmovdqa64 XMMWORD[96+rsp],xmm12 + vmovdqa64 XMMWORD[112+rsp],xmm13 + vmovdqa64 XMMWORD[128+rsp],xmm14 + vmovdqa64 XMMWORD[144+rsp],xmm15 +$L$ossl_rsaz_amm52x40_x2_ifma256_body: + + vpxord ymm0,ymm0,ymm0 + vmovdqa64 ymm3,ymm0 + vmovdqa64 ymm4,ymm0 + vmovdqa64 ymm5,ymm0 + vmovdqa64 ymm6,ymm0 + vmovdqa64 ymm7,ymm0 + vmovdqa64 ymm8,ymm0 + vmovdqa64 ymm9,ymm0 + vmovdqa64 ymm10,ymm0 + vmovdqa64 ymm11,ymm0 + vmovdqa64 ymm12,ymm0 + + vmovdqa64 ymm13,ymm0 + vmovdqa64 ymm14,ymm0 + vmovdqa64 ymm15,ymm0 + vmovdqa64 ymm16,ymm0 + vmovdqa64 ymm17,ymm0 + vmovdqa64 ymm18,ymm0 + vmovdqa64 ymm19,ymm0 + vmovdqa64 ymm20,ymm0 + vmovdqa64 ymm21,ymm0 + vmovdqa64 ymm22,ymm0 + + + xor r9d,r9d + xor r15d,r15d + + mov r11,rdx + mov rax,0xfffffffffffff + + mov ebx,40 + +ALIGN 32 +$L$loop40: + mov r13,QWORD[r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,QWORD[r8] + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52luq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52luq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52luq ymm10,ymm1,YMMWORD[224+rsi] + vpmadd52luq ymm11,ymm1,YMMWORD[256+rsi] + vpmadd52luq ymm12,ymm1,YMMWORD[288+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52luq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52luq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52luq ymm10,ymm2,YMMWORD[224+rcx] + vpmadd52luq ymm11,ymm2,YMMWORD[256+rcx] + vpmadd52luq ymm12,ymm2,YMMWORD[288+rcx] + + + valignq ymm3,ymm4,ymm3,1 + valignq ymm4,ymm5,ymm4,1 + valignq ymm5,ymm6,ymm5,1 + valignq ymm6,ymm7,ymm6,1 + valignq ymm7,ymm8,ymm7,1 + valignq ymm8,ymm9,ymm8,1 + valignq ymm9,ymm10,ymm9,1 + valignq ymm10,ymm11,ymm10,1 + valignq ymm11,ymm12,ymm11,1 + valignq ymm12,ymm0,ymm12,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52huq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52huq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52huq ymm10,ymm1,YMMWORD[224+rsi] + vpmadd52huq ymm11,ymm1,YMMWORD[256+rsi] + vpmadd52huq ymm12,ymm1,YMMWORD[288+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52huq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52huq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52huq ymm10,ymm2,YMMWORD[224+rcx] + vpmadd52huq ymm11,ymm2,YMMWORD[256+rcx] + vpmadd52huq ymm12,ymm2,YMMWORD[288+rcx] + mov r13,QWORD[320+r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[320+rsi] + mulx r12,r13,r13 + add r15,r13 + mov r10,r12 + adc r10,0 + + mov r13,QWORD[8+r8] + imul r13,r15 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[320+rcx] + mulx r12,r13,r13 + add r15,r13 + adc r10,r12 + + shr r15,52 + sal r10,12 + or r15,r10 + + vpmadd52luq ymm13,ymm1,YMMWORD[320+rsi] + vpmadd52luq ymm14,ymm1,YMMWORD[352+rsi] + vpmadd52luq ymm15,ymm1,YMMWORD[384+rsi] + vpmadd52luq ymm16,ymm1,YMMWORD[416+rsi] + vpmadd52luq ymm17,ymm1,YMMWORD[448+rsi] + vpmadd52luq ymm18,ymm1,YMMWORD[480+rsi] + vpmadd52luq ymm19,ymm1,YMMWORD[512+rsi] + vpmadd52luq ymm20,ymm1,YMMWORD[544+rsi] + vpmadd52luq ymm21,ymm1,YMMWORD[576+rsi] + vpmadd52luq ymm22,ymm1,YMMWORD[608+rsi] + + vpmadd52luq ymm13,ymm2,YMMWORD[320+rcx] + vpmadd52luq ymm14,ymm2,YMMWORD[352+rcx] + vpmadd52luq ymm15,ymm2,YMMWORD[384+rcx] + vpmadd52luq ymm16,ymm2,YMMWORD[416+rcx] + vpmadd52luq ymm17,ymm2,YMMWORD[448+rcx] + vpmadd52luq ymm18,ymm2,YMMWORD[480+rcx] + vpmadd52luq ymm19,ymm2,YMMWORD[512+rcx] + vpmadd52luq ymm20,ymm2,YMMWORD[544+rcx] + vpmadd52luq ymm21,ymm2,YMMWORD[576+rcx] + vpmadd52luq ymm22,ymm2,YMMWORD[608+rcx] + + + valignq ymm13,ymm14,ymm13,1 + valignq ymm14,ymm15,ymm14,1 + valignq ymm15,ymm16,ymm15,1 + valignq ymm16,ymm17,ymm16,1 + valignq ymm17,ymm18,ymm17,1 + valignq ymm18,ymm19,ymm18,1 + valignq ymm19,ymm20,ymm19,1 + valignq ymm20,ymm21,ymm20,1 + valignq ymm21,ymm22,ymm21,1 + valignq ymm22,ymm0,ymm22,1 + + vmovq r13,xmm13 + add r15,r13 + + vpmadd52huq ymm13,ymm1,YMMWORD[320+rsi] + vpmadd52huq ymm14,ymm1,YMMWORD[352+rsi] + vpmadd52huq ymm15,ymm1,YMMWORD[384+rsi] + vpmadd52huq ymm16,ymm1,YMMWORD[416+rsi] + vpmadd52huq ymm17,ymm1,YMMWORD[448+rsi] + vpmadd52huq ymm18,ymm1,YMMWORD[480+rsi] + vpmadd52huq ymm19,ymm1,YMMWORD[512+rsi] + vpmadd52huq ymm20,ymm1,YMMWORD[544+rsi] + vpmadd52huq ymm21,ymm1,YMMWORD[576+rsi] + vpmadd52huq ymm22,ymm1,YMMWORD[608+rsi] + + vpmadd52huq ymm13,ymm2,YMMWORD[320+rcx] + vpmadd52huq ymm14,ymm2,YMMWORD[352+rcx] + vpmadd52huq ymm15,ymm2,YMMWORD[384+rcx] + vpmadd52huq ymm16,ymm2,YMMWORD[416+rcx] + vpmadd52huq ymm17,ymm2,YMMWORD[448+rcx] + vpmadd52huq ymm18,ymm2,YMMWORD[480+rcx] + vpmadd52huq ymm19,ymm2,YMMWORD[512+rcx] + vpmadd52huq ymm20,ymm2,YMMWORD[544+rcx] + vpmadd52huq ymm21,ymm2,YMMWORD[576+rcx] + vpmadd52huq ymm22,ymm2,YMMWORD[608+rcx] + lea r11,[8+r11] + dec ebx + jne NEAR $L$loop40 + + vpbroadcastq ymm0,r9 + vpblendd ymm3,ymm3,ymm0,3 + + + + vpsrlq ymm0,ymm3,52 + vpsrlq ymm1,ymm4,52 + vpsrlq ymm2,ymm5,52 + vpsrlq ymm23,ymm6,52 + vpsrlq ymm24,ymm7,52 + vpsrlq ymm25,ymm8,52 + vpsrlq ymm26,ymm9,52 + vpsrlq ymm27,ymm10,52 + vpsrlq ymm28,ymm11,52 + vpsrlq ymm29,ymm12,52 + + + valignq ymm29,ymm29,ymm28,3 + valignq ymm28,ymm28,ymm27,3 + valignq ymm27,ymm27,ymm26,3 + valignq ymm26,ymm26,ymm25,3 + valignq ymm25,ymm25,ymm24,3 + valignq ymm24,ymm24,ymm23,3 + valignq ymm23,ymm23,ymm2,3 + valignq ymm2,ymm2,ymm1,3 + valignq ymm1,ymm1,ymm0,3 + valignq ymm0,ymm0,YMMWORD[$L$zeros],3 + + + vpandq ymm3,ymm3,YMMWORD[$L$mask52x4] + vpandq ymm4,ymm4,YMMWORD[$L$mask52x4] + vpandq ymm5,ymm5,YMMWORD[$L$mask52x4] + vpandq ymm6,ymm6,YMMWORD[$L$mask52x4] + vpandq ymm7,ymm7,YMMWORD[$L$mask52x4] + vpandq ymm8,ymm8,YMMWORD[$L$mask52x4] + vpandq ymm9,ymm9,YMMWORD[$L$mask52x4] + vpandq ymm10,ymm10,YMMWORD[$L$mask52x4] + vpandq ymm11,ymm11,YMMWORD[$L$mask52x4] + vpandq ymm12,ymm12,YMMWORD[$L$mask52x4] + + + vpaddq ymm3,ymm3,ymm0 + vpaddq ymm4,ymm4,ymm1 + vpaddq ymm5,ymm5,ymm2 + vpaddq ymm6,ymm6,ymm23 + vpaddq ymm7,ymm7,ymm24 + vpaddq ymm8,ymm8,ymm25 + vpaddq ymm9,ymm9,ymm26 + vpaddq ymm10,ymm10,ymm27 + vpaddq ymm11,ymm11,ymm28 + vpaddq ymm12,ymm12,ymm29 + + + + vpcmpuq k1,ymm3,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm4,YMMWORD[$L$mask52x4],6 + kmovb r14d,k1 + kmovb r13d,k2 + shl r13b,4 + or r14b,r13b + + vpcmpuq k1,ymm5,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm6,YMMWORD[$L$mask52x4],6 + kmovb r13d,k1 + kmovb r12d,k2 + shl r12b,4 + or r13b,r12b + + vpcmpuq k1,ymm7,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm8,YMMWORD[$L$mask52x4],6 + kmovb r12d,k1 + kmovb r11d,k2 + shl r11b,4 + or r12b,r11b + + vpcmpuq k1,ymm9,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm10,YMMWORD[$L$mask52x4],6 + kmovb r11d,k1 + kmovb r10d,k2 + shl r10b,4 + or r11b,r10b + + vpcmpuq k1,ymm11,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm12,YMMWORD[$L$mask52x4],6 + kmovb r10d,k1 + kmovb r9d,k2 + shl r9b,4 + or r10b,r9b + + add r14b,r14b + adc r13b,r13b + adc r12b,r12b + adc r11b,r11b + adc r10b,r10b + + + vpcmpuq k1,ymm3,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm4,YMMWORD[$L$mask52x4],0 + kmovb r9d,k1 + kmovb r8d,k2 + shl r8b,4 + or r9b,r8b + + vpcmpuq k1,ymm5,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm6,YMMWORD[$L$mask52x4],0 + kmovb r8d,k1 + kmovb edx,k2 + shl dl,4 + or r8b,dl + + vpcmpuq k1,ymm7,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm8,YMMWORD[$L$mask52x4],0 + kmovb edx,k1 + kmovb ecx,k2 + shl cl,4 + or dl,cl + + vpcmpuq k1,ymm9,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm10,YMMWORD[$L$mask52x4],0 + kmovb ecx,k1 + kmovb ebx,k2 + shl bl,4 + or cl,bl + + vpcmpuq k1,ymm11,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm12,YMMWORD[$L$mask52x4],0 + kmovb ebx,k1 + kmovb eax,k2 + shl al,4 + or bl,al + + add r14b,r9b + adc r13b,r8b + adc r12b,dl + adc r11b,cl + adc r10b,bl + + xor r14b,r9b + xor r13b,r8b + xor r12b,dl + xor r11b,cl + xor r10b,bl + + kmovb k1,r14d + shr r14b,4 + kmovb k2,r14d + kmovb k3,r13d + shr r13b,4 + kmovb k4,r13d + kmovb k5,r12d + shr r12b,4 + kmovb k6,r12d + kmovb k7,r11d + + vpsubq ymm3{k1},ymm3,YMMWORD[$L$mask52x4] + vpsubq ymm4{k2},ymm4,YMMWORD[$L$mask52x4] + vpsubq ymm5{k3},ymm5,YMMWORD[$L$mask52x4] + vpsubq ymm6{k4},ymm6,YMMWORD[$L$mask52x4] + vpsubq ymm7{k5},ymm7,YMMWORD[$L$mask52x4] + vpsubq ymm8{k6},ymm8,YMMWORD[$L$mask52x4] + vpsubq ymm9{k7},ymm9,YMMWORD[$L$mask52x4] + + vpandq ymm3,ymm3,YMMWORD[$L$mask52x4] + vpandq ymm4,ymm4,YMMWORD[$L$mask52x4] + vpandq ymm5,ymm5,YMMWORD[$L$mask52x4] + vpandq ymm6,ymm6,YMMWORD[$L$mask52x4] + vpandq ymm7,ymm7,YMMWORD[$L$mask52x4] + vpandq ymm8,ymm8,YMMWORD[$L$mask52x4] + vpandq ymm9,ymm9,YMMWORD[$L$mask52x4] + + shr r11b,4 + kmovb k1,r11d + kmovb k2,r10d + shr r10b,4 + kmovb k3,r10d + + vpsubq ymm10{k1},ymm10,YMMWORD[$L$mask52x4] + vpsubq ymm11{k2},ymm11,YMMWORD[$L$mask52x4] + vpsubq ymm12{k3},ymm12,YMMWORD[$L$mask52x4] + + vpandq ymm10,ymm10,YMMWORD[$L$mask52x4] + vpandq ymm11,ymm11,YMMWORD[$L$mask52x4] + vpandq ymm12,ymm12,YMMWORD[$L$mask52x4] + + vpbroadcastq ymm0,r15 + vpblendd ymm13,ymm13,ymm0,3 + + + + vpsrlq ymm0,ymm13,52 + vpsrlq ymm1,ymm14,52 + vpsrlq ymm2,ymm15,52 + vpsrlq ymm23,ymm16,52 + vpsrlq ymm24,ymm17,52 + vpsrlq ymm25,ymm18,52 + vpsrlq ymm26,ymm19,52 + vpsrlq ymm27,ymm20,52 + vpsrlq ymm28,ymm21,52 + vpsrlq ymm29,ymm22,52 + + + valignq ymm29,ymm29,ymm28,3 + valignq ymm28,ymm28,ymm27,3 + valignq ymm27,ymm27,ymm26,3 + valignq ymm26,ymm26,ymm25,3 + valignq ymm25,ymm25,ymm24,3 + valignq ymm24,ymm24,ymm23,3 + valignq ymm23,ymm23,ymm2,3 + valignq ymm2,ymm2,ymm1,3 + valignq ymm1,ymm1,ymm0,3 + valignq ymm0,ymm0,YMMWORD[$L$zeros],3 + + + vpandq ymm13,ymm13,YMMWORD[$L$mask52x4] + vpandq ymm14,ymm14,YMMWORD[$L$mask52x4] + vpandq ymm15,ymm15,YMMWORD[$L$mask52x4] + vpandq ymm16,ymm16,YMMWORD[$L$mask52x4] + vpandq ymm17,ymm17,YMMWORD[$L$mask52x4] + vpandq ymm18,ymm18,YMMWORD[$L$mask52x4] + vpandq ymm19,ymm19,YMMWORD[$L$mask52x4] + vpandq ymm20,ymm20,YMMWORD[$L$mask52x4] + vpandq ymm21,ymm21,YMMWORD[$L$mask52x4] + vpandq ymm22,ymm22,YMMWORD[$L$mask52x4] + + + vpaddq ymm13,ymm13,ymm0 + vpaddq ymm14,ymm14,ymm1 + vpaddq ymm15,ymm15,ymm2 + vpaddq ymm16,ymm16,ymm23 + vpaddq ymm17,ymm17,ymm24 + vpaddq ymm18,ymm18,ymm25 + vpaddq ymm19,ymm19,ymm26 + vpaddq ymm20,ymm20,ymm27 + vpaddq ymm21,ymm21,ymm28 + vpaddq ymm22,ymm22,ymm29 + + + + vpcmpuq k1,ymm13,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm14,YMMWORD[$L$mask52x4],6 + kmovb r14d,k1 + kmovb r13d,k2 + shl r13b,4 + or r14b,r13b + + vpcmpuq k1,ymm15,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm16,YMMWORD[$L$mask52x4],6 + kmovb r13d,k1 + kmovb r12d,k2 + shl r12b,4 + or r13b,r12b + + vpcmpuq k1,ymm17,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm18,YMMWORD[$L$mask52x4],6 + kmovb r12d,k1 + kmovb r11d,k2 + shl r11b,4 + or r12b,r11b + + vpcmpuq k1,ymm19,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm20,YMMWORD[$L$mask52x4],6 + kmovb r11d,k1 + kmovb r10d,k2 + shl r10b,4 + or r11b,r10b + + vpcmpuq k1,ymm21,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm22,YMMWORD[$L$mask52x4],6 + kmovb r10d,k1 + kmovb r9d,k2 + shl r9b,4 + or r10b,r9b + + add r14b,r14b + adc r13b,r13b + adc r12b,r12b + adc r11b,r11b + adc r10b,r10b + + + vpcmpuq k1,ymm13,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm14,YMMWORD[$L$mask52x4],0 + kmovb r9d,k1 + kmovb r8d,k2 + shl r8b,4 + or r9b,r8b + + vpcmpuq k1,ymm15,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm16,YMMWORD[$L$mask52x4],0 + kmovb r8d,k1 + kmovb edx,k2 + shl dl,4 + or r8b,dl + + vpcmpuq k1,ymm17,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm18,YMMWORD[$L$mask52x4],0 + kmovb edx,k1 + kmovb ecx,k2 + shl cl,4 + or dl,cl + + vpcmpuq k1,ymm19,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm20,YMMWORD[$L$mask52x4],0 + kmovb ecx,k1 + kmovb ebx,k2 + shl bl,4 + or cl,bl + + vpcmpuq k1,ymm21,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm22,YMMWORD[$L$mask52x4],0 + kmovb ebx,k1 + kmovb eax,k2 + shl al,4 + or bl,al + + add r14b,r9b + adc r13b,r8b + adc r12b,dl + adc r11b,cl + adc r10b,bl + + xor r14b,r9b + xor r13b,r8b + xor r12b,dl + xor r11b,cl + xor r10b,bl + + kmovb k1,r14d + shr r14b,4 + kmovb k2,r14d + kmovb k3,r13d + shr r13b,4 + kmovb k4,r13d + kmovb k5,r12d + shr r12b,4 + kmovb k6,r12d + kmovb k7,r11d + + vpsubq ymm13{k1},ymm13,YMMWORD[$L$mask52x4] + vpsubq ymm14{k2},ymm14,YMMWORD[$L$mask52x4] + vpsubq ymm15{k3},ymm15,YMMWORD[$L$mask52x4] + vpsubq ymm16{k4},ymm16,YMMWORD[$L$mask52x4] + vpsubq ymm17{k5},ymm17,YMMWORD[$L$mask52x4] + vpsubq ymm18{k6},ymm18,YMMWORD[$L$mask52x4] + vpsubq ymm19{k7},ymm19,YMMWORD[$L$mask52x4] + + vpandq ymm13,ymm13,YMMWORD[$L$mask52x4] + vpandq ymm14,ymm14,YMMWORD[$L$mask52x4] + vpandq ymm15,ymm15,YMMWORD[$L$mask52x4] + vpandq ymm16,ymm16,YMMWORD[$L$mask52x4] + vpandq ymm17,ymm17,YMMWORD[$L$mask52x4] + vpandq ymm18,ymm18,YMMWORD[$L$mask52x4] + vpandq ymm19,ymm19,YMMWORD[$L$mask52x4] + + shr r11b,4 + kmovb k1,r11d + kmovb k2,r10d + shr r10b,4 + kmovb k3,r10d + + vpsubq ymm20{k1},ymm20,YMMWORD[$L$mask52x4] + vpsubq ymm21{k2},ymm21,YMMWORD[$L$mask52x4] + vpsubq ymm22{k3},ymm22,YMMWORD[$L$mask52x4] + + vpandq ymm20,ymm20,YMMWORD[$L$mask52x4] + vpandq ymm21,ymm21,YMMWORD[$L$mask52x4] + vpandq ymm22,ymm22,YMMWORD[$L$mask52x4] + + vmovdqu64 YMMWORD[rdi],ymm3 + vmovdqu64 YMMWORD[32+rdi],ymm4 + vmovdqu64 YMMWORD[64+rdi],ymm5 + vmovdqu64 YMMWORD[96+rdi],ymm6 + vmovdqu64 YMMWORD[128+rdi],ymm7 + vmovdqu64 YMMWORD[160+rdi],ymm8 + vmovdqu64 YMMWORD[192+rdi],ymm9 + vmovdqu64 YMMWORD[224+rdi],ymm10 + vmovdqu64 YMMWORD[256+rdi],ymm11 + vmovdqu64 YMMWORD[288+rdi],ymm12 + + vmovdqu64 YMMWORD[320+rdi],ymm13 + vmovdqu64 YMMWORD[352+rdi],ymm14 + vmovdqu64 YMMWORD[384+rdi],ymm15 + vmovdqu64 YMMWORD[416+rdi],ymm16 + vmovdqu64 YMMWORD[448+rdi],ymm17 + vmovdqu64 YMMWORD[480+rdi],ymm18 + vmovdqu64 YMMWORD[512+rdi],ymm19 + vmovdqu64 YMMWORD[544+rdi],ymm20 + vmovdqu64 YMMWORD[576+rdi],ymm21 + vmovdqu64 YMMWORD[608+rdi],ymm22 + + vzeroupper + lea rax,[rsp] + + vmovdqa64 xmm6,XMMWORD[rax] + vmovdqa64 xmm7,XMMWORD[16+rax] + vmovdqa64 xmm8,XMMWORD[32+rax] + vmovdqa64 xmm9,XMMWORD[48+rax] + vmovdqa64 xmm10,XMMWORD[64+rax] + vmovdqa64 xmm11,XMMWORD[80+rax] + vmovdqa64 xmm12,XMMWORD[96+rax] + vmovdqa64 xmm13,XMMWORD[112+rax] + vmovdqa64 xmm14,XMMWORD[128+rax] + vmovdqa64 xmm15,XMMWORD[144+rax] + lea rax,[168+rsp] + mov r15,QWORD[rax] + + mov r14,QWORD[8+rax] + + mov r13,QWORD[16+rax] + + mov r12,QWORD[24+rax] + + mov rbp,QWORD[32+rax] + + mov rbx,QWORD[40+rax] + + lea rsp,[48+rax] + +$L$ossl_rsaz_amm52x40_x2_ifma256_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ossl_rsaz_amm52x40_x2_ifma256: +section .text code align=64 + + +ALIGN 32 +global ossl_extract_multiplier_2x40_win5 + +ossl_extract_multiplier_2x40_win5: + +DB 243,15,30,250 + vmovdqa64 ymm24,YMMWORD[$L$ones] + vpbroadcastq ymm22,r8 + vpbroadcastq ymm23,r9 + lea rax,[20480+rdx] + + + mov r10,rdx + + + vpxor xmm0,xmm0,xmm0 + vmovdqa64 ymm1,ymm0 + vmovdqa64 ymm2,ymm0 + vmovdqa64 ymm3,ymm0 + vmovdqa64 ymm4,ymm0 + vmovdqa64 ymm5,ymm0 + vmovdqa64 ymm16,ymm0 + vmovdqa64 ymm17,ymm0 + vmovdqa64 ymm18,ymm0 + vmovdqa64 ymm19,ymm0 + vpxorq ymm21,ymm21,ymm21 +ALIGN 32 +$L$loop_0: + vpcmpq k1,ymm22,ymm21,0 + vmovdqu64 ymm20,YMMWORD[rdx] + vpblendmq ymm0{k1},ymm0,ymm20 + vmovdqu64 ymm20,YMMWORD[32+rdx] + vpblendmq ymm1{k1},ymm1,ymm20 + vmovdqu64 ymm20,YMMWORD[64+rdx] + vpblendmq ymm2{k1},ymm2,ymm20 + vmovdqu64 ymm20,YMMWORD[96+rdx] + vpblendmq ymm3{k1},ymm3,ymm20 + vmovdqu64 ymm20,YMMWORD[128+rdx] + vpblendmq ymm4{k1},ymm4,ymm20 + vmovdqu64 ymm20,YMMWORD[160+rdx] + vpblendmq ymm5{k1},ymm5,ymm20 + vmovdqu64 ymm20,YMMWORD[192+rdx] + vpblendmq ymm16{k1},ymm16,ymm20 + vmovdqu64 ymm20,YMMWORD[224+rdx] + vpblendmq ymm17{k1},ymm17,ymm20 + vmovdqu64 ymm20,YMMWORD[256+rdx] + vpblendmq ymm18{k1},ymm18,ymm20 + vmovdqu64 ymm20,YMMWORD[288+rdx] + vpblendmq ymm19{k1},ymm19,ymm20 + vpaddq ymm21,ymm21,ymm24 + add rdx,640 + cmp rax,rdx + jne NEAR $L$loop_0 + vmovdqu64 YMMWORD[rcx],ymm0 + vmovdqu64 YMMWORD[32+rcx],ymm1 + vmovdqu64 YMMWORD[64+rcx],ymm2 + vmovdqu64 YMMWORD[96+rcx],ymm3 + vmovdqu64 YMMWORD[128+rcx],ymm4 + vmovdqu64 YMMWORD[160+rcx],ymm5 + vmovdqu64 YMMWORD[192+rcx],ymm16 + vmovdqu64 YMMWORD[224+rcx],ymm17 + vmovdqu64 YMMWORD[256+rcx],ymm18 + vmovdqu64 YMMWORD[288+rcx],ymm19 + mov rdx,r10 + vpxorq ymm21,ymm21,ymm21 +ALIGN 32 +$L$loop_320: + vpcmpq k1,ymm23,ymm21,0 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpblendmq ymm0{k1},ymm0,ymm20 + vmovdqu64 ymm20,YMMWORD[352+rdx] + vpblendmq ymm1{k1},ymm1,ymm20 + vmovdqu64 ymm20,YMMWORD[384+rdx] + vpblendmq ymm2{k1},ymm2,ymm20 + vmovdqu64 ymm20,YMMWORD[416+rdx] + vpblendmq ymm3{k1},ymm3,ymm20 + vmovdqu64 ymm20,YMMWORD[448+rdx] + vpblendmq ymm4{k1},ymm4,ymm20 + vmovdqu64 ymm20,YMMWORD[480+rdx] + vpblendmq ymm5{k1},ymm5,ymm20 + vmovdqu64 ymm20,YMMWORD[512+rdx] + vpblendmq ymm16{k1},ymm16,ymm20 + vmovdqu64 ymm20,YMMWORD[544+rdx] + vpblendmq ymm17{k1},ymm17,ymm20 + vmovdqu64 ymm20,YMMWORD[576+rdx] + vpblendmq ymm18{k1},ymm18,ymm20 + vmovdqu64 ymm20,YMMWORD[608+rdx] + vpblendmq ymm19{k1},ymm19,ymm20 + vpaddq ymm21,ymm21,ymm24 + add rdx,640 + cmp rax,rdx + jne NEAR $L$loop_320 + vmovdqu64 YMMWORD[320+rcx],ymm0 + vmovdqu64 YMMWORD[352+rcx],ymm1 + vmovdqu64 YMMWORD[384+rcx],ymm2 + vmovdqu64 YMMWORD[416+rcx],ymm3 + vmovdqu64 YMMWORD[448+rcx],ymm4 + vmovdqu64 YMMWORD[480+rcx],ymm5 + vmovdqu64 YMMWORD[512+rcx],ymm16 + vmovdqu64 YMMWORD[544+rcx],ymm17 + vmovdqu64 YMMWORD[576+rcx],ymm18 + vmovdqu64 YMMWORD[608+rcx],ymm19 + + DB 0F3h,0C3h ;repret + + +section .rdata rdata align=32 +ALIGN 32 +$L$ones: + DQ 1,1,1,1 +$L$zeros: + DQ 0,0,0,0 +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +rsaz_avx_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + + mov rax,QWORD[152+r8] + + lea rsi,[rax] + lea rdi,[512+r8] + mov ecx,20 + DD 0xa548f3fc + + lea rax,[216+rax] + + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + mov r15,QWORD[((-48))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + +$L$common_seh_tail: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_ossl_rsaz_amm52x40_x1_ifma256 wrt ..imagebase + DD $L$SEH_end_ossl_rsaz_amm52x40_x1_ifma256 wrt ..imagebase + DD $L$SEH_info_ossl_rsaz_amm52x40_x1_ifma256 wrt ..imagebase + + DD $L$SEH_begin_ossl_rsaz_amm52x40_x2_ifma256 wrt ..imagebase + DD $L$SEH_end_ossl_rsaz_amm52x40_x2_ifma256 wrt ..imagebase + DD $L$SEH_info_ossl_rsaz_amm52x40_x2_ifma256 wrt ..imagebase + +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_ossl_rsaz_amm52x40_x1_ifma256: +DB 9,0,0,0 + DD rsaz_avx_handler wrt ..imagebase + DD $L$ossl_rsaz_amm52x40_x1_ifma256_body wrt ..imagebase,$L$ossl_rsaz_amm52x40_x1_ifma256_epilogue wrt ..imagebase +$L$SEH_info_ossl_rsaz_amm52x40_x2_ifma256: +DB 9,0,0,0 + DD rsaz_avx_handler wrt ..imagebase + DD $L$ossl_rsaz_amm52x40_x2_ifma256_body wrt ..imagebase,$L$ossl_rsaz_amm52x40_x2_ifma256_epilogue wrt ..imagebase diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-4k-avxifma.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-4k-avxifma.asm new file mode 100644 index 00000000000000..dd22db0064b9c6 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-4k-avxifma.asm @@ -0,0 +1,17 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + +global ossl_rsaz_amm52x40_x1_avxifma256 +global ossl_rsaz_amm52x40_x2_avxifma256 +global ossl_extract_multiplier_2x40_win5_avx + +ossl_rsaz_amm52x40_x1_avxifma256: +ossl_rsaz_amm52x40_x2_avxifma256: +ossl_extract_multiplier_2x40_win5_avx: +DB 0x0f,0x0b + DB 0F3h,0C3h ;repret + diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-avx2.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-avx2.asm index f854d1783d1687..9d58c4fd0148e5 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-avx2.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-avx2.asm @@ -1832,6 +1832,7 @@ rsaz_avx2_eligible: DB 0F3h,0C3h ;repret +section .rdata rdata align=64 ALIGN 64 $L$and_mask: DQ 0x1fffffff,0x1fffffff,0x1fffffff,0x1fffffff @@ -1843,6 +1844,7 @@ $L$inc: DD 0,0,0,0,1,1,1,1 DD 2,2,2,2,3,3,3,3 DD 4,4,4,4,4,4,4,4 +section .text ALIGN 64 EXTERN __imp_RtlVirtualUnwind diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-avx512.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-avx512.asm deleted file mode 100644 index 8bedb848d91107..00000000000000 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-avx512.asm +++ /dev/null @@ -1,1031 +0,0 @@ -default rel -%define XMMWORD -%define YMMWORD -%define ZMMWORD -EXTERN OPENSSL_ia32cap_P -global ossl_rsaz_avx512ifma_eligible - -ALIGN 32 -ossl_rsaz_avx512ifma_eligible: - mov ecx,DWORD[((OPENSSL_ia32cap_P+8))] - xor eax,eax - and ecx,2149777408 - cmp ecx,2149777408 - cmove eax,ecx - DB 0F3h,0C3h ;repret - -section .text code align=64 - - -global ossl_rsaz_amm52x20_x1_256 - -ALIGN 32 -ossl_rsaz_amm52x20_x1_256: - mov QWORD[8+rsp],rdi ;WIN64 prologue - mov QWORD[16+rsp],rsi - mov rax,rsp -$L$SEH_begin_ossl_rsaz_amm52x20_x1_256: - mov rdi,rcx - mov rsi,rdx - mov rdx,r8 - mov rcx,r9 - mov r8,QWORD[40+rsp] - - - -DB 243,15,30,250 - push rbx - - push rbp - - push r12 - - push r13 - - push r14 - - push r15 - -$L$rsaz_amm52x20_x1_256_body: - - - vpxord ymm0,ymm0,ymm0 - vmovdqa64 ymm1,ymm0 - vmovdqa64 ymm16,ymm0 - vmovdqa64 ymm17,ymm0 - vmovdqa64 ymm18,ymm0 - vmovdqa64 ymm19,ymm0 - - xor r9d,r9d - - mov r11,rdx - mov rax,0xfffffffffffff - - - mov ebx,5 - -ALIGN 32 -$L$loop5: - mov r13,QWORD[r11] - - vpbroadcastq ymm3,r13 - mov rdx,QWORD[rsi] - mulx r12,r13,r13 - add r9,r13 - mov r10,r12 - adc r10,0 - - mov r13,r8 - imul r13,r9 - and r13,rax - - vpbroadcastq ymm4,r13 - mov rdx,QWORD[rcx] - mulx r12,r13,r13 - add r9,r13 - adc r10,r12 - - shr r9,52 - sal r10,12 - or r9,r10 - - vpmadd52luq ymm1,ymm3,YMMWORD[rsi] - vpmadd52luq ymm16,ymm3,YMMWORD[32+rsi] - vpmadd52luq ymm17,ymm3,YMMWORD[64+rsi] - vpmadd52luq ymm18,ymm3,YMMWORD[96+rsi] - vpmadd52luq ymm19,ymm3,YMMWORD[128+rsi] - - vpmadd52luq ymm1,ymm4,YMMWORD[rcx] - vpmadd52luq ymm16,ymm4,YMMWORD[32+rcx] - vpmadd52luq ymm17,ymm4,YMMWORD[64+rcx] - vpmadd52luq ymm18,ymm4,YMMWORD[96+rcx] - vpmadd52luq ymm19,ymm4,YMMWORD[128+rcx] - - - valignq ymm1,ymm16,ymm1,1 - valignq ymm16,ymm17,ymm16,1 - valignq ymm17,ymm18,ymm17,1 - valignq ymm18,ymm19,ymm18,1 - valignq ymm19,ymm0,ymm19,1 - - vmovq r13,xmm1 - add r9,r13 - - vpmadd52huq ymm1,ymm3,YMMWORD[rsi] - vpmadd52huq ymm16,ymm3,YMMWORD[32+rsi] - vpmadd52huq ymm17,ymm3,YMMWORD[64+rsi] - vpmadd52huq ymm18,ymm3,YMMWORD[96+rsi] - vpmadd52huq ymm19,ymm3,YMMWORD[128+rsi] - - vpmadd52huq ymm1,ymm4,YMMWORD[rcx] - vpmadd52huq ymm16,ymm4,YMMWORD[32+rcx] - vpmadd52huq ymm17,ymm4,YMMWORD[64+rcx] - vpmadd52huq ymm18,ymm4,YMMWORD[96+rcx] - vpmadd52huq ymm19,ymm4,YMMWORD[128+rcx] - mov r13,QWORD[8+r11] - - vpbroadcastq ymm3,r13 - mov rdx,QWORD[rsi] - mulx r12,r13,r13 - add r9,r13 - mov r10,r12 - adc r10,0 - - mov r13,r8 - imul r13,r9 - and r13,rax - - vpbroadcastq ymm4,r13 - mov rdx,QWORD[rcx] - mulx r12,r13,r13 - add r9,r13 - adc r10,r12 - - shr r9,52 - sal r10,12 - or r9,r10 - - vpmadd52luq ymm1,ymm3,YMMWORD[rsi] - vpmadd52luq ymm16,ymm3,YMMWORD[32+rsi] - vpmadd52luq ymm17,ymm3,YMMWORD[64+rsi] - vpmadd52luq ymm18,ymm3,YMMWORD[96+rsi] - vpmadd52luq ymm19,ymm3,YMMWORD[128+rsi] - - vpmadd52luq ymm1,ymm4,YMMWORD[rcx] - vpmadd52luq ymm16,ymm4,YMMWORD[32+rcx] - vpmadd52luq ymm17,ymm4,YMMWORD[64+rcx] - vpmadd52luq ymm18,ymm4,YMMWORD[96+rcx] - vpmadd52luq ymm19,ymm4,YMMWORD[128+rcx] - - - valignq ymm1,ymm16,ymm1,1 - valignq ymm16,ymm17,ymm16,1 - valignq ymm17,ymm18,ymm17,1 - valignq ymm18,ymm19,ymm18,1 - valignq ymm19,ymm0,ymm19,1 - - vmovq r13,xmm1 - add r9,r13 - - vpmadd52huq ymm1,ymm3,YMMWORD[rsi] - vpmadd52huq ymm16,ymm3,YMMWORD[32+rsi] - vpmadd52huq ymm17,ymm3,YMMWORD[64+rsi] - vpmadd52huq ymm18,ymm3,YMMWORD[96+rsi] - vpmadd52huq ymm19,ymm3,YMMWORD[128+rsi] - - vpmadd52huq ymm1,ymm4,YMMWORD[rcx] - vpmadd52huq ymm16,ymm4,YMMWORD[32+rcx] - vpmadd52huq ymm17,ymm4,YMMWORD[64+rcx] - vpmadd52huq ymm18,ymm4,YMMWORD[96+rcx] - vpmadd52huq ymm19,ymm4,YMMWORD[128+rcx] - mov r13,QWORD[16+r11] - - vpbroadcastq ymm3,r13 - mov rdx,QWORD[rsi] - mulx r12,r13,r13 - add r9,r13 - mov r10,r12 - adc r10,0 - - mov r13,r8 - imul r13,r9 - and r13,rax - - vpbroadcastq ymm4,r13 - mov rdx,QWORD[rcx] - mulx r12,r13,r13 - add r9,r13 - adc r10,r12 - - shr r9,52 - sal r10,12 - or r9,r10 - - vpmadd52luq ymm1,ymm3,YMMWORD[rsi] - vpmadd52luq ymm16,ymm3,YMMWORD[32+rsi] - vpmadd52luq ymm17,ymm3,YMMWORD[64+rsi] - vpmadd52luq ymm18,ymm3,YMMWORD[96+rsi] - vpmadd52luq ymm19,ymm3,YMMWORD[128+rsi] - - vpmadd52luq ymm1,ymm4,YMMWORD[rcx] - vpmadd52luq ymm16,ymm4,YMMWORD[32+rcx] - vpmadd52luq ymm17,ymm4,YMMWORD[64+rcx] - vpmadd52luq ymm18,ymm4,YMMWORD[96+rcx] - vpmadd52luq ymm19,ymm4,YMMWORD[128+rcx] - - - valignq ymm1,ymm16,ymm1,1 - valignq ymm16,ymm17,ymm16,1 - valignq ymm17,ymm18,ymm17,1 - valignq ymm18,ymm19,ymm18,1 - valignq ymm19,ymm0,ymm19,1 - - vmovq r13,xmm1 - add r9,r13 - - vpmadd52huq ymm1,ymm3,YMMWORD[rsi] - vpmadd52huq ymm16,ymm3,YMMWORD[32+rsi] - vpmadd52huq ymm17,ymm3,YMMWORD[64+rsi] - vpmadd52huq ymm18,ymm3,YMMWORD[96+rsi] - vpmadd52huq ymm19,ymm3,YMMWORD[128+rsi] - - vpmadd52huq ymm1,ymm4,YMMWORD[rcx] - vpmadd52huq ymm16,ymm4,YMMWORD[32+rcx] - vpmadd52huq ymm17,ymm4,YMMWORD[64+rcx] - vpmadd52huq ymm18,ymm4,YMMWORD[96+rcx] - vpmadd52huq ymm19,ymm4,YMMWORD[128+rcx] - mov r13,QWORD[24+r11] - - vpbroadcastq ymm3,r13 - mov rdx,QWORD[rsi] - mulx r12,r13,r13 - add r9,r13 - mov r10,r12 - adc r10,0 - - mov r13,r8 - imul r13,r9 - and r13,rax - - vpbroadcastq ymm4,r13 - mov rdx,QWORD[rcx] - mulx r12,r13,r13 - add r9,r13 - adc r10,r12 - - shr r9,52 - sal r10,12 - or r9,r10 - - vpmadd52luq ymm1,ymm3,YMMWORD[rsi] - vpmadd52luq ymm16,ymm3,YMMWORD[32+rsi] - vpmadd52luq ymm17,ymm3,YMMWORD[64+rsi] - vpmadd52luq ymm18,ymm3,YMMWORD[96+rsi] - vpmadd52luq ymm19,ymm3,YMMWORD[128+rsi] - - vpmadd52luq ymm1,ymm4,YMMWORD[rcx] - vpmadd52luq ymm16,ymm4,YMMWORD[32+rcx] - vpmadd52luq ymm17,ymm4,YMMWORD[64+rcx] - vpmadd52luq ymm18,ymm4,YMMWORD[96+rcx] - vpmadd52luq ymm19,ymm4,YMMWORD[128+rcx] - - - valignq ymm1,ymm16,ymm1,1 - valignq ymm16,ymm17,ymm16,1 - valignq ymm17,ymm18,ymm17,1 - valignq ymm18,ymm19,ymm18,1 - valignq ymm19,ymm0,ymm19,1 - - vmovq r13,xmm1 - add r9,r13 - - vpmadd52huq ymm1,ymm3,YMMWORD[rsi] - vpmadd52huq ymm16,ymm3,YMMWORD[32+rsi] - vpmadd52huq ymm17,ymm3,YMMWORD[64+rsi] - vpmadd52huq ymm18,ymm3,YMMWORD[96+rsi] - vpmadd52huq ymm19,ymm3,YMMWORD[128+rsi] - - vpmadd52huq ymm1,ymm4,YMMWORD[rcx] - vpmadd52huq ymm16,ymm4,YMMWORD[32+rcx] - vpmadd52huq ymm17,ymm4,YMMWORD[64+rcx] - vpmadd52huq ymm18,ymm4,YMMWORD[96+rcx] - vpmadd52huq ymm19,ymm4,YMMWORD[128+rcx] - lea r11,[32+r11] - dec ebx - jne NEAR $L$loop5 - - vmovdqa64 ymm4,YMMWORD[$L$mask52x4] - - vpbroadcastq ymm3,r9 - vpblendd ymm1,ymm1,ymm3,3 - - - - vpsrlq ymm24,ymm1,52 - vpsrlq ymm25,ymm16,52 - vpsrlq ymm26,ymm17,52 - vpsrlq ymm27,ymm18,52 - vpsrlq ymm28,ymm19,52 - - - valignq ymm28,ymm28,ymm27,3 - valignq ymm27,ymm27,ymm26,3 - valignq ymm26,ymm26,ymm25,3 - valignq ymm25,ymm25,ymm24,3 - valignq ymm24,ymm24,ymm0,3 - - - vpandq ymm1,ymm1,ymm4 - vpandq ymm16,ymm16,ymm4 - vpandq ymm17,ymm17,ymm4 - vpandq ymm18,ymm18,ymm4 - vpandq ymm19,ymm19,ymm4 - - - vpaddq ymm1,ymm1,ymm24 - vpaddq ymm16,ymm16,ymm25 - vpaddq ymm17,ymm17,ymm26 - vpaddq ymm18,ymm18,ymm27 - vpaddq ymm19,ymm19,ymm28 - - - - vpcmpuq k1,ymm4,ymm1,1 - vpcmpuq k2,ymm4,ymm16,1 - vpcmpuq k3,ymm4,ymm17,1 - vpcmpuq k4,ymm4,ymm18,1 - vpcmpuq k5,ymm4,ymm19,1 - kmovb r14d,k1 - kmovb r13d,k2 - kmovb r12d,k3 - kmovb r11d,k4 - kmovb r10d,k5 - - - vpcmpuq k1,ymm4,ymm1,0 - vpcmpuq k2,ymm4,ymm16,0 - vpcmpuq k3,ymm4,ymm17,0 - vpcmpuq k4,ymm4,ymm18,0 - vpcmpuq k5,ymm4,ymm19,0 - kmovb r9d,k1 - kmovb r8d,k2 - kmovb ebx,k3 - kmovb ecx,k4 - kmovb edx,k5 - - - - shl r13b,4 - or r14b,r13b - shl r11b,4 - or r12b,r11b - - add r14b,r14b - adc r12b,r12b - adc r10b,r10b - - shl r8b,4 - or r9b,r8b - shl cl,4 - or bl,cl - - add r14b,r9b - adc r12b,bl - adc r10b,dl - - xor r14b,r9b - xor r12b,bl - xor r10b,dl - - kmovb k1,r14d - shr r14b,4 - kmovb k2,r14d - kmovb k3,r12d - shr r12b,4 - kmovb k4,r12d - kmovb k5,r10d - - - vpsubq ymm1{k1},ymm1,ymm4 - vpsubq ymm16{k2},ymm16,ymm4 - vpsubq ymm17{k3},ymm17,ymm4 - vpsubq ymm18{k4},ymm18,ymm4 - vpsubq ymm19{k5},ymm19,ymm4 - - vpandq ymm1,ymm1,ymm4 - vpandq ymm16,ymm16,ymm4 - vpandq ymm17,ymm17,ymm4 - vpandq ymm18,ymm18,ymm4 - vpandq ymm19,ymm19,ymm4 - - vmovdqu64 YMMWORD[rdi],ymm1 - vmovdqu64 YMMWORD[32+rdi],ymm16 - vmovdqu64 YMMWORD[64+rdi],ymm17 - vmovdqu64 YMMWORD[96+rdi],ymm18 - vmovdqu64 YMMWORD[128+rdi],ymm19 - - vzeroupper - mov r15,QWORD[rsp] - - mov r14,QWORD[8+rsp] - - mov r13,QWORD[16+rsp] - - mov r12,QWORD[24+rsp] - - mov rbp,QWORD[32+rsp] - - mov rbx,QWORD[40+rsp] - - lea rsp,[48+rsp] - -$L$rsaz_amm52x20_x1_256_epilogue: - mov rdi,QWORD[8+rsp] ;WIN64 epilogue - mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret - -$L$SEH_end_ossl_rsaz_amm52x20_x1_256: -section .data data align=8 - -ALIGN 32 -$L$mask52x4: - DQ 0xfffffffffffff - DQ 0xfffffffffffff - DQ 0xfffffffffffff - DQ 0xfffffffffffff -section .text code align=64 - - -global ossl_rsaz_amm52x20_x2_256 - -ALIGN 32 -ossl_rsaz_amm52x20_x2_256: - mov QWORD[8+rsp],rdi ;WIN64 prologue - mov QWORD[16+rsp],rsi - mov rax,rsp -$L$SEH_begin_ossl_rsaz_amm52x20_x2_256: - mov rdi,rcx - mov rsi,rdx - mov rdx,r8 - mov rcx,r9 - mov r8,QWORD[40+rsp] - - - -DB 243,15,30,250 - push rbx - - push rbp - - push r12 - - push r13 - - push r14 - - push r15 - -$L$rsaz_amm52x20_x2_256_body: - - - vpxord ymm0,ymm0,ymm0 - vmovdqa64 ymm1,ymm0 - vmovdqa64 ymm16,ymm0 - vmovdqa64 ymm17,ymm0 - vmovdqa64 ymm18,ymm0 - vmovdqa64 ymm19,ymm0 - vmovdqa64 ymm2,ymm0 - vmovdqa64 ymm20,ymm0 - vmovdqa64 ymm21,ymm0 - vmovdqa64 ymm22,ymm0 - vmovdqa64 ymm23,ymm0 - - xor r9d,r9d - xor r15d,r15d - - mov r11,rdx - mov rax,0xfffffffffffff - - mov ebx,20 - -ALIGN 32 -$L$loop20: - mov r13,QWORD[r11] - - vpbroadcastq ymm3,r13 - mov rdx,QWORD[rsi] - mulx r12,r13,r13 - add r9,r13 - mov r10,r12 - adc r10,0 - - mov r13,QWORD[r8] - imul r13,r9 - and r13,rax - - vpbroadcastq ymm4,r13 - mov rdx,QWORD[rcx] - mulx r12,r13,r13 - add r9,r13 - adc r10,r12 - - shr r9,52 - sal r10,12 - or r9,r10 - - vpmadd52luq ymm1,ymm3,YMMWORD[rsi] - vpmadd52luq ymm16,ymm3,YMMWORD[32+rsi] - vpmadd52luq ymm17,ymm3,YMMWORD[64+rsi] - vpmadd52luq ymm18,ymm3,YMMWORD[96+rsi] - vpmadd52luq ymm19,ymm3,YMMWORD[128+rsi] - - vpmadd52luq ymm1,ymm4,YMMWORD[rcx] - vpmadd52luq ymm16,ymm4,YMMWORD[32+rcx] - vpmadd52luq ymm17,ymm4,YMMWORD[64+rcx] - vpmadd52luq ymm18,ymm4,YMMWORD[96+rcx] - vpmadd52luq ymm19,ymm4,YMMWORD[128+rcx] - - - valignq ymm1,ymm16,ymm1,1 - valignq ymm16,ymm17,ymm16,1 - valignq ymm17,ymm18,ymm17,1 - valignq ymm18,ymm19,ymm18,1 - valignq ymm19,ymm0,ymm19,1 - - vmovq r13,xmm1 - add r9,r13 - - vpmadd52huq ymm1,ymm3,YMMWORD[rsi] - vpmadd52huq ymm16,ymm3,YMMWORD[32+rsi] - vpmadd52huq ymm17,ymm3,YMMWORD[64+rsi] - vpmadd52huq ymm18,ymm3,YMMWORD[96+rsi] - vpmadd52huq ymm19,ymm3,YMMWORD[128+rsi] - - vpmadd52huq ymm1,ymm4,YMMWORD[rcx] - vpmadd52huq ymm16,ymm4,YMMWORD[32+rcx] - vpmadd52huq ymm17,ymm4,YMMWORD[64+rcx] - vpmadd52huq ymm18,ymm4,YMMWORD[96+rcx] - vpmadd52huq ymm19,ymm4,YMMWORD[128+rcx] - mov r13,QWORD[160+r11] - - vpbroadcastq ymm3,r13 - mov rdx,QWORD[160+rsi] - mulx r12,r13,r13 - add r15,r13 - mov r10,r12 - adc r10,0 - - mov r13,QWORD[8+r8] - imul r13,r15 - and r13,rax - - vpbroadcastq ymm4,r13 - mov rdx,QWORD[160+rcx] - mulx r12,r13,r13 - add r15,r13 - adc r10,r12 - - shr r15,52 - sal r10,12 - or r15,r10 - - vpmadd52luq ymm2,ymm3,YMMWORD[160+rsi] - vpmadd52luq ymm20,ymm3,YMMWORD[192+rsi] - vpmadd52luq ymm21,ymm3,YMMWORD[224+rsi] - vpmadd52luq ymm22,ymm3,YMMWORD[256+rsi] - vpmadd52luq ymm23,ymm3,YMMWORD[288+rsi] - - vpmadd52luq ymm2,ymm4,YMMWORD[160+rcx] - vpmadd52luq ymm20,ymm4,YMMWORD[192+rcx] - vpmadd52luq ymm21,ymm4,YMMWORD[224+rcx] - vpmadd52luq ymm22,ymm4,YMMWORD[256+rcx] - vpmadd52luq ymm23,ymm4,YMMWORD[288+rcx] - - - valignq ymm2,ymm20,ymm2,1 - valignq ymm20,ymm21,ymm20,1 - valignq ymm21,ymm22,ymm21,1 - valignq ymm22,ymm23,ymm22,1 - valignq ymm23,ymm0,ymm23,1 - - vmovq r13,xmm2 - add r15,r13 - - vpmadd52huq ymm2,ymm3,YMMWORD[160+rsi] - vpmadd52huq ymm20,ymm3,YMMWORD[192+rsi] - vpmadd52huq ymm21,ymm3,YMMWORD[224+rsi] - vpmadd52huq ymm22,ymm3,YMMWORD[256+rsi] - vpmadd52huq ymm23,ymm3,YMMWORD[288+rsi] - - vpmadd52huq ymm2,ymm4,YMMWORD[160+rcx] - vpmadd52huq ymm20,ymm4,YMMWORD[192+rcx] - vpmadd52huq ymm21,ymm4,YMMWORD[224+rcx] - vpmadd52huq ymm22,ymm4,YMMWORD[256+rcx] - vpmadd52huq ymm23,ymm4,YMMWORD[288+rcx] - lea r11,[8+r11] - dec ebx - jne NEAR $L$loop20 - - vmovdqa64 ymm4,YMMWORD[$L$mask52x4] - - vpbroadcastq ymm3,r9 - vpblendd ymm1,ymm1,ymm3,3 - - - - vpsrlq ymm24,ymm1,52 - vpsrlq ymm25,ymm16,52 - vpsrlq ymm26,ymm17,52 - vpsrlq ymm27,ymm18,52 - vpsrlq ymm28,ymm19,52 - - - valignq ymm28,ymm28,ymm27,3 - valignq ymm27,ymm27,ymm26,3 - valignq ymm26,ymm26,ymm25,3 - valignq ymm25,ymm25,ymm24,3 - valignq ymm24,ymm24,ymm0,3 - - - vpandq ymm1,ymm1,ymm4 - vpandq ymm16,ymm16,ymm4 - vpandq ymm17,ymm17,ymm4 - vpandq ymm18,ymm18,ymm4 - vpandq ymm19,ymm19,ymm4 - - - vpaddq ymm1,ymm1,ymm24 - vpaddq ymm16,ymm16,ymm25 - vpaddq ymm17,ymm17,ymm26 - vpaddq ymm18,ymm18,ymm27 - vpaddq ymm19,ymm19,ymm28 - - - - vpcmpuq k1,ymm4,ymm1,1 - vpcmpuq k2,ymm4,ymm16,1 - vpcmpuq k3,ymm4,ymm17,1 - vpcmpuq k4,ymm4,ymm18,1 - vpcmpuq k5,ymm4,ymm19,1 - kmovb r14d,k1 - kmovb r13d,k2 - kmovb r12d,k3 - kmovb r11d,k4 - kmovb r10d,k5 - - - vpcmpuq k1,ymm4,ymm1,0 - vpcmpuq k2,ymm4,ymm16,0 - vpcmpuq k3,ymm4,ymm17,0 - vpcmpuq k4,ymm4,ymm18,0 - vpcmpuq k5,ymm4,ymm19,0 - kmovb r9d,k1 - kmovb r8d,k2 - kmovb ebx,k3 - kmovb ecx,k4 - kmovb edx,k5 - - - - shl r13b,4 - or r14b,r13b - shl r11b,4 - or r12b,r11b - - add r14b,r14b - adc r12b,r12b - adc r10b,r10b - - shl r8b,4 - or r9b,r8b - shl cl,4 - or bl,cl - - add r14b,r9b - adc r12b,bl - adc r10b,dl - - xor r14b,r9b - xor r12b,bl - xor r10b,dl - - kmovb k1,r14d - shr r14b,4 - kmovb k2,r14d - kmovb k3,r12d - shr r12b,4 - kmovb k4,r12d - kmovb k5,r10d - - - vpsubq ymm1{k1},ymm1,ymm4 - vpsubq ymm16{k2},ymm16,ymm4 - vpsubq ymm17{k3},ymm17,ymm4 - vpsubq ymm18{k4},ymm18,ymm4 - vpsubq ymm19{k5},ymm19,ymm4 - - vpandq ymm1,ymm1,ymm4 - vpandq ymm16,ymm16,ymm4 - vpandq ymm17,ymm17,ymm4 - vpandq ymm18,ymm18,ymm4 - vpandq ymm19,ymm19,ymm4 - - vpbroadcastq ymm3,r15 - vpblendd ymm2,ymm2,ymm3,3 - - - - vpsrlq ymm24,ymm2,52 - vpsrlq ymm25,ymm20,52 - vpsrlq ymm26,ymm21,52 - vpsrlq ymm27,ymm22,52 - vpsrlq ymm28,ymm23,52 - - - valignq ymm28,ymm28,ymm27,3 - valignq ymm27,ymm27,ymm26,3 - valignq ymm26,ymm26,ymm25,3 - valignq ymm25,ymm25,ymm24,3 - valignq ymm24,ymm24,ymm0,3 - - - vpandq ymm2,ymm2,ymm4 - vpandq ymm20,ymm20,ymm4 - vpandq ymm21,ymm21,ymm4 - vpandq ymm22,ymm22,ymm4 - vpandq ymm23,ymm23,ymm4 - - - vpaddq ymm2,ymm2,ymm24 - vpaddq ymm20,ymm20,ymm25 - vpaddq ymm21,ymm21,ymm26 - vpaddq ymm22,ymm22,ymm27 - vpaddq ymm23,ymm23,ymm28 - - - - vpcmpuq k1,ymm4,ymm2,1 - vpcmpuq k2,ymm4,ymm20,1 - vpcmpuq k3,ymm4,ymm21,1 - vpcmpuq k4,ymm4,ymm22,1 - vpcmpuq k5,ymm4,ymm23,1 - kmovb r14d,k1 - kmovb r13d,k2 - kmovb r12d,k3 - kmovb r11d,k4 - kmovb r10d,k5 - - - vpcmpuq k1,ymm4,ymm2,0 - vpcmpuq k2,ymm4,ymm20,0 - vpcmpuq k3,ymm4,ymm21,0 - vpcmpuq k4,ymm4,ymm22,0 - vpcmpuq k5,ymm4,ymm23,0 - kmovb r9d,k1 - kmovb r8d,k2 - kmovb ebx,k3 - kmovb ecx,k4 - kmovb edx,k5 - - - - shl r13b,4 - or r14b,r13b - shl r11b,4 - or r12b,r11b - - add r14b,r14b - adc r12b,r12b - adc r10b,r10b - - shl r8b,4 - or r9b,r8b - shl cl,4 - or bl,cl - - add r14b,r9b - adc r12b,bl - adc r10b,dl - - xor r14b,r9b - xor r12b,bl - xor r10b,dl - - kmovb k1,r14d - shr r14b,4 - kmovb k2,r14d - kmovb k3,r12d - shr r12b,4 - kmovb k4,r12d - kmovb k5,r10d - - - vpsubq ymm2{k1},ymm2,ymm4 - vpsubq ymm20{k2},ymm20,ymm4 - vpsubq ymm21{k3},ymm21,ymm4 - vpsubq ymm22{k4},ymm22,ymm4 - vpsubq ymm23{k5},ymm23,ymm4 - - vpandq ymm2,ymm2,ymm4 - vpandq ymm20,ymm20,ymm4 - vpandq ymm21,ymm21,ymm4 - vpandq ymm22,ymm22,ymm4 - vpandq ymm23,ymm23,ymm4 - - vmovdqu64 YMMWORD[rdi],ymm1 - vmovdqu64 YMMWORD[32+rdi],ymm16 - vmovdqu64 YMMWORD[64+rdi],ymm17 - vmovdqu64 YMMWORD[96+rdi],ymm18 - vmovdqu64 YMMWORD[128+rdi],ymm19 - - vmovdqu64 YMMWORD[160+rdi],ymm2 - vmovdqu64 YMMWORD[192+rdi],ymm20 - vmovdqu64 YMMWORD[224+rdi],ymm21 - vmovdqu64 YMMWORD[256+rdi],ymm22 - vmovdqu64 YMMWORD[288+rdi],ymm23 - - vzeroupper - mov r15,QWORD[rsp] - - mov r14,QWORD[8+rsp] - - mov r13,QWORD[16+rsp] - - mov r12,QWORD[24+rsp] - - mov rbp,QWORD[32+rsp] - - mov rbx,QWORD[40+rsp] - - lea rsp,[48+rsp] - -$L$rsaz_amm52x20_x2_256_epilogue: - mov rdi,QWORD[8+rsp] ;WIN64 epilogue - mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret - -$L$SEH_end_ossl_rsaz_amm52x20_x2_256: -section .text code align=64 - - -ALIGN 32 -global ossl_extract_multiplier_2x20_win5 - -ossl_extract_multiplier_2x20_win5: - mov QWORD[8+rsp],rdi ;WIN64 prologue - mov QWORD[16+rsp],rsi - mov rax,rsp -$L$SEH_begin_ossl_extract_multiplier_2x20_win5: - mov rdi,rcx - mov rsi,rdx - mov rdx,r8 - mov rcx,r9 - - - -DB 243,15,30,250 - lea rax,[rcx*4+rcx] - sal rax,5 - add rsi,rax - - vmovdqa64 ymm23,YMMWORD[$L$ones] - vpbroadcastq ymm22,rdx - lea rax,[10240+rsi] - - vpxor xmm4,xmm4,xmm4 - vmovdqa64 ymm3,ymm4 - vmovdqa64 ymm2,ymm4 - vmovdqa64 ymm1,ymm4 - vmovdqa64 ymm0,ymm4 - vmovdqa64 ymm21,ymm4 - -ALIGN 32 -$L$loop: - vpcmpq k1,ymm22,ymm21,0 - add rsi,320 - vpaddq ymm21,ymm21,ymm23 - vmovdqu64 ymm16,YMMWORD[((-320))+rsi] - vmovdqu64 ymm17,YMMWORD[((-288))+rsi] - vmovdqu64 ymm18,YMMWORD[((-256))+rsi] - vmovdqu64 ymm19,YMMWORD[((-224))+rsi] - vmovdqu64 ymm20,YMMWORD[((-192))+rsi] - vpblendmq ymm0{k1},ymm0,ymm16 - vpblendmq ymm1{k1},ymm1,ymm17 - vpblendmq ymm2{k1},ymm2,ymm18 - vpblendmq ymm3{k1},ymm3,ymm19 - vpblendmq ymm4{k1},ymm4,ymm20 - cmp rax,rsi - jne NEAR $L$loop - - vmovdqu64 YMMWORD[rdi],ymm0 - vmovdqu64 YMMWORD[32+rdi],ymm1 - vmovdqu64 YMMWORD[64+rdi],ymm2 - vmovdqu64 YMMWORD[96+rdi],ymm3 - vmovdqu64 YMMWORD[128+rdi],ymm4 - - mov rdi,QWORD[8+rsp] ;WIN64 epilogue - mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret - -$L$SEH_end_ossl_extract_multiplier_2x20_win5: -section .data data align=8 - -ALIGN 32 -$L$ones: - DQ 1,1,1,1 -EXTERN __imp_RtlVirtualUnwind - -ALIGN 16 -rsaz_def_handler: - push rsi - push rdi - push rbx - push rbp - push r12 - push r13 - push r14 - push r15 - pushfq - sub rsp,64 - - mov rax,QWORD[120+r8] - mov rbx,QWORD[248+r8] - - mov rsi,QWORD[8+r9] - mov r11,QWORD[56+r9] - - mov r10d,DWORD[r11] - lea r10,[r10*1+rsi] - cmp rbx,r10 - jb NEAR $L$common_seh_tail - - mov rax,QWORD[152+r8] - - mov r10d,DWORD[4+r11] - lea r10,[r10*1+rsi] - cmp rbx,r10 - jae NEAR $L$common_seh_tail - - lea rax,[48+rax] - - mov rbx,QWORD[((-8))+rax] - mov rbp,QWORD[((-16))+rax] - mov r12,QWORD[((-24))+rax] - mov r13,QWORD[((-32))+rax] - mov r14,QWORD[((-40))+rax] - mov r15,QWORD[((-48))+rax] - mov QWORD[144+r8],rbx - mov QWORD[160+r8],rbp - mov QWORD[216+r8],r12 - mov QWORD[224+r8],r13 - mov QWORD[232+r8],r14 - mov QWORD[240+r8],r15 - -$L$common_seh_tail: - mov rdi,QWORD[8+rax] - mov rsi,QWORD[16+rax] - mov QWORD[152+r8],rax - mov QWORD[168+r8],rsi - mov QWORD[176+r8],rdi - - mov rdi,QWORD[40+r9] - mov rsi,r8 - mov ecx,154 - DD 0xa548f3fc - - mov rsi,r9 - xor rcx,rcx - mov rdx,QWORD[8+rsi] - mov r8,QWORD[rsi] - mov r9,QWORD[16+rsi] - mov r10,QWORD[40+rsi] - lea r11,[56+rsi] - lea r12,[24+rsi] - mov QWORD[32+rsp],r10 - mov QWORD[40+rsp],r11 - mov QWORD[48+rsp],r12 - mov QWORD[56+rsp],rcx - call QWORD[__imp_RtlVirtualUnwind] - - mov eax,1 - add rsp,64 - popfq - pop r15 - pop r14 - pop r13 - pop r12 - pop rbp - pop rbx - pop rdi - pop rsi - DB 0F3h,0C3h ;repret - - -section .pdata rdata align=4 -ALIGN 4 - DD $L$SEH_begin_ossl_rsaz_amm52x20_x1_256 wrt ..imagebase - DD $L$SEH_end_ossl_rsaz_amm52x20_x1_256 wrt ..imagebase - DD $L$SEH_info_ossl_rsaz_amm52x20_x1_256 wrt ..imagebase - - DD $L$SEH_begin_ossl_rsaz_amm52x20_x2_256 wrt ..imagebase - DD $L$SEH_end_ossl_rsaz_amm52x20_x2_256 wrt ..imagebase - DD $L$SEH_info_ossl_rsaz_amm52x20_x2_256 wrt ..imagebase - - DD $L$SEH_begin_ossl_extract_multiplier_2x20_win5 wrt ..imagebase - DD $L$SEH_end_ossl_extract_multiplier_2x20_win5 wrt ..imagebase - DD $L$SEH_info_ossl_extract_multiplier_2x20_win5 wrt ..imagebase - -section .xdata rdata align=8 -ALIGN 8 -$L$SEH_info_ossl_rsaz_amm52x20_x1_256: -DB 9,0,0,0 - DD rsaz_def_handler wrt ..imagebase - DD $L$rsaz_amm52x20_x1_256_body wrt ..imagebase,$L$rsaz_amm52x20_x1_256_epilogue wrt ..imagebase -$L$SEH_info_ossl_rsaz_amm52x20_x2_256: -DB 9,0,0,0 - DD rsaz_def_handler wrt ..imagebase - DD $L$rsaz_amm52x20_x2_256_body wrt ..imagebase,$L$rsaz_amm52x20_x2_256_epilogue wrt ..imagebase -$L$SEH_info_ossl_extract_multiplier_2x20_win5: -DB 9,0,0,0 - DD rsaz_def_handler wrt ..imagebase - DD $L$SEH_begin_ossl_extract_multiplier_2x20_win5 wrt ..imagebase,$L$SEH_begin_ossl_extract_multiplier_2x20_win5 wrt ..imagebase diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-x86_64.asm index a474c5d9a68c9f..46cc66d8cfcc52 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/rsaz-x86_64.asm @@ -2094,10 +2094,12 @@ $L$SEH_end_rsaz_512_gather4: +section .rdata rdata align=64 ALIGN 64 $L$inc: DD 0,0,1,1 DD 2,2,2,2 +section .text EXTERN __imp_RtlVirtualUnwind ALIGN 16 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/x86_64-mont5.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/x86_64-mont5.asm index 118676455aa6be..871263ef45cbdd 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/x86_64-mont5.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/x86_64-mont5.asm @@ -3671,6 +3671,7 @@ $L$gather: $L$SEH_end_bn_gather5: +section .rdata rdata align=64 ALIGN 64 $L$inc: DD 0,0,1,1 @@ -3681,6 +3682,7 @@ DB 99,97,116,116,101,114,47,103,97,116,104,101,114,32,102,111 DB 114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79 DB 71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111 DB 112,101,110,115,115,108,46,111,114,103,62,0 +section .text EXTERN __imp_RtlVirtualUnwind ALIGN 16 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h index 050b7f8f6a2db0..5a67676837b048 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: " -#define DATE "built on: Sun Jul 20 00:55:12 2025 UTC" +#define DATE "built on: Tue Aug 5 17:22:55 2025 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/camellia/cmll-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/camellia/cmll-x86_64.asm index ac057de920beb0..491d84f8812181 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/camellia/cmll-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/camellia/cmll-x86_64.asm @@ -1169,6 +1169,7 @@ $L$key_epilogue: DB 0F3h,0C3h ;repret $L$SEH_end_Camellia_Ekeygen: +section .rdata rdata align=64 ALIGN 64 $L$Camellia_SIGMA: DD 0x3bcc908b,0xa09e667f,0x4caa73b2,0xb67ae858 @@ -1688,6 +1689,8 @@ $L$Camellia_SBOX: DD 0x008f8f8f,0xe300e3e3 DD 0x00010101,0x40004040 DD 0x003d3d3d,0x4f004f4f +section .text code align=64 + global Camellia_cbc_encrypt ALIGN 16 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/chacha/chacha-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/chacha/chacha-x86_64.asm index 4ae3fe31a63414..47cb8a3db4cd35 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/chacha/chacha-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/chacha/chacha-x86_64.asm @@ -7,6 +7,7 @@ section .text code align=64 EXTERN OPENSSL_ia32cap_P +section .rdata rdata align=64 ALIGN 64 $L$zero: DD 0,0,0,0 @@ -42,6 +43,7 @@ DB 67,104,97,67,104,97,50,48,32,102,111,114,32,120,56,54 DB 95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32 DB 98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115 DB 108,46,111,114,103,62,0 +section .text global ChaCha20_ctr32 ALIGN 64 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/ec/ecp_nistz256-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/ec/ecp_nistz256-x86_64.asm index 9930dadce66880..746041b3c9e7f4 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/ec/ecp_nistz256-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/ec/ecp_nistz256-x86_64.asm @@ -2,8 +2,7 @@ default rel %define XMMWORD %define YMMWORD %define ZMMWORD -section .text code align=64 - +section .rdata rdata align=4096 global ecp_nistz256_precomputed ALIGN 4096 @@ -2382,6 +2381,7 @@ section .text code align=64 EXTERN OPENSSL_ia32cap_P +section .rdata rdata align=4096 ALIGN 64 $L$poly: DQ 0xffffffffffffffff,0x00000000ffffffff,0x0000000000000000,0xffffffff00000001 @@ -2404,6 +2404,7 @@ $L$ord: DQ 0xf3b9cac2fc632551,0xbce6faada7179e84,0xffffffffffffffff,0xffffffff00000000 $L$ordK: DQ 0xccd1c8aaee00bc4f +section .text global ecp_nistz256_mul_by_2 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/md5/md5-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/md5/md5-x86_64.asm index 666c54a4be937d..416ea1c0bf89ce 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/md5/md5-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/md5/md5-x86_64.asm @@ -210,7 +210,7 @@ $L$loop: lea eax,[((-165796510))+r10*1+rax] and r11d,ecx mov r10d,DWORD[24+rsi] - or r12d,r11d + add eax,r11d mov r11d,ecx add eax,r12d mov r12d,ecx @@ -221,7 +221,7 @@ $L$loop: lea edx,[((-1069501632))+r10*1+rdx] and r11d,ebx mov r10d,DWORD[44+rsi] - or r12d,r11d + add edx,r11d mov r11d,ebx add edx,r12d mov r12d,ebx @@ -232,7 +232,7 @@ $L$loop: lea ecx,[643717713+r10*1+rcx] and r11d,eax mov r10d,DWORD[rsi] - or r12d,r11d + add ecx,r11d mov r11d,eax add ecx,r12d mov r12d,eax @@ -243,7 +243,7 @@ $L$loop: lea ebx,[((-373897302))+r10*1+rbx] and r11d,edx mov r10d,DWORD[20+rsi] - or r12d,r11d + add ebx,r11d mov r11d,edx add ebx,r12d mov r12d,edx @@ -254,7 +254,7 @@ $L$loop: lea eax,[((-701558691))+r10*1+rax] and r11d,ecx mov r10d,DWORD[40+rsi] - or r12d,r11d + add eax,r11d mov r11d,ecx add eax,r12d mov r12d,ecx @@ -265,7 +265,7 @@ $L$loop: lea edx,[38016083+r10*1+rdx] and r11d,ebx mov r10d,DWORD[60+rsi] - or r12d,r11d + add edx,r11d mov r11d,ebx add edx,r12d mov r12d,ebx @@ -276,7 +276,7 @@ $L$loop: lea ecx,[((-660478335))+r10*1+rcx] and r11d,eax mov r10d,DWORD[16+rsi] - or r12d,r11d + add ecx,r11d mov r11d,eax add ecx,r12d mov r12d,eax @@ -287,7 +287,7 @@ $L$loop: lea ebx,[((-405537848))+r10*1+rbx] and r11d,edx mov r10d,DWORD[36+rsi] - or r12d,r11d + add ebx,r11d mov r11d,edx add ebx,r12d mov r12d,edx @@ -298,7 +298,7 @@ $L$loop: lea eax,[568446438+r10*1+rax] and r11d,ecx mov r10d,DWORD[56+rsi] - or r12d,r11d + add eax,r11d mov r11d,ecx add eax,r12d mov r12d,ecx @@ -309,7 +309,7 @@ $L$loop: lea edx,[((-1019803690))+r10*1+rdx] and r11d,ebx mov r10d,DWORD[12+rsi] - or r12d,r11d + add edx,r11d mov r11d,ebx add edx,r12d mov r12d,ebx @@ -320,7 +320,7 @@ $L$loop: lea ecx,[((-187363961))+r10*1+rcx] and r11d,eax mov r10d,DWORD[32+rsi] - or r12d,r11d + add ecx,r11d mov r11d,eax add ecx,r12d mov r12d,eax @@ -331,7 +331,7 @@ $L$loop: lea ebx,[1163531501+r10*1+rbx] and r11d,edx mov r10d,DWORD[52+rsi] - or r12d,r11d + add ebx,r11d mov r11d,edx add ebx,r12d mov r12d,edx @@ -342,7 +342,7 @@ $L$loop: lea eax,[((-1444681467))+r10*1+rax] and r11d,ecx mov r10d,DWORD[8+rsi] - or r12d,r11d + add eax,r11d mov r11d,ecx add eax,r12d mov r12d,ecx @@ -353,7 +353,7 @@ $L$loop: lea edx,[((-51403784))+r10*1+rdx] and r11d,ebx mov r10d,DWORD[28+rsi] - or r12d,r11d + add edx,r11d mov r11d,ebx add edx,r12d mov r12d,ebx @@ -364,7 +364,7 @@ $L$loop: lea ecx,[1735328473+r10*1+rcx] and r11d,eax mov r10d,DWORD[48+rsi] - or r12d,r11d + add ecx,r11d mov r11d,eax add ecx,r12d mov r12d,eax @@ -375,7 +375,7 @@ $L$loop: lea ebx,[((-1926607734))+r10*1+rbx] and r11d,edx mov r10d,DWORD[20+rsi] - or r12d,r11d + add ebx,r11d mov r11d,edx add ebx,r12d mov r12d,edx diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/modes/aes-gcm-avx512.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/modes/aes-gcm-avx512.asm new file mode 100644 index 00000000000000..563af63a5564e8 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/modes/aes-gcm-avx512.asm @@ -0,0 +1,136520 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +EXTERN OPENSSL_ia32cap_P +global ossl_vaes_vpclmulqdq_capable + +ALIGN 32 +ossl_vaes_vpclmulqdq_capable: + mov rcx,QWORD[((OPENSSL_ia32cap_P+8))] + + mov rdx,6600291188736 + xor eax,eax + and rcx,rdx + cmp rcx,rdx + cmove rax,rcx + DB 0F3h,0C3h ;repret + +section .text code align=64 + +global ossl_aes_gcm_init_avx512 + +ALIGN 32 +ossl_aes_gcm_init_avx512: + +DB 243,15,30,250 + vpxorq xmm16,xmm16,xmm16 + + + mov eax,DWORD[240+rcx] + cmp eax,9 + je NEAR $L$aes_128_0 + cmp eax,11 + je NEAR $L$aes_192_0 + cmp eax,13 + je NEAR $L$aes_256_0 + jmp NEAR $L$exit_aes_0 +ALIGN 32 +$L$aes_128_0: + vpxorq xmm16,xmm16,XMMWORD[rcx] + + vaesenc xmm16,xmm16,XMMWORD[16+rcx] + + vaesenc xmm16,xmm16,XMMWORD[32+rcx] + + vaesenc xmm16,xmm16,XMMWORD[48+rcx] + + vaesenc xmm16,xmm16,XMMWORD[64+rcx] + + vaesenc xmm16,xmm16,XMMWORD[80+rcx] + + vaesenc xmm16,xmm16,XMMWORD[96+rcx] + + vaesenc xmm16,xmm16,XMMWORD[112+rcx] + + vaesenc xmm16,xmm16,XMMWORD[128+rcx] + + vaesenc xmm16,xmm16,XMMWORD[144+rcx] + + vaesenclast xmm16,xmm16,XMMWORD[160+rcx] + jmp NEAR $L$exit_aes_0 +ALIGN 32 +$L$aes_192_0: + vpxorq xmm16,xmm16,XMMWORD[rcx] + + vaesenc xmm16,xmm16,XMMWORD[16+rcx] + + vaesenc xmm16,xmm16,XMMWORD[32+rcx] + + vaesenc xmm16,xmm16,XMMWORD[48+rcx] + + vaesenc xmm16,xmm16,XMMWORD[64+rcx] + + vaesenc xmm16,xmm16,XMMWORD[80+rcx] + + vaesenc xmm16,xmm16,XMMWORD[96+rcx] + + vaesenc xmm16,xmm16,XMMWORD[112+rcx] + + vaesenc xmm16,xmm16,XMMWORD[128+rcx] + + vaesenc xmm16,xmm16,XMMWORD[144+rcx] + + vaesenc xmm16,xmm16,XMMWORD[160+rcx] + + vaesenc xmm16,xmm16,XMMWORD[176+rcx] + + vaesenclast xmm16,xmm16,XMMWORD[192+rcx] + jmp NEAR $L$exit_aes_0 +ALIGN 32 +$L$aes_256_0: + vpxorq xmm16,xmm16,XMMWORD[rcx] + + vaesenc xmm16,xmm16,XMMWORD[16+rcx] + + vaesenc xmm16,xmm16,XMMWORD[32+rcx] + + vaesenc xmm16,xmm16,XMMWORD[48+rcx] + + vaesenc xmm16,xmm16,XMMWORD[64+rcx] + + vaesenc xmm16,xmm16,XMMWORD[80+rcx] + + vaesenc xmm16,xmm16,XMMWORD[96+rcx] + + vaesenc xmm16,xmm16,XMMWORD[112+rcx] + + vaesenc xmm16,xmm16,XMMWORD[128+rcx] + + vaesenc xmm16,xmm16,XMMWORD[144+rcx] + + vaesenc xmm16,xmm16,XMMWORD[160+rcx] + + vaesenc xmm16,xmm16,XMMWORD[176+rcx] + + vaesenc xmm16,xmm16,XMMWORD[192+rcx] + + vaesenc xmm16,xmm16,XMMWORD[208+rcx] + + vaesenclast xmm16,xmm16,XMMWORD[224+rcx] + jmp NEAR $L$exit_aes_0 +$L$exit_aes_0: + + vpshufb xmm16,xmm16,XMMWORD[SHUF_MASK] + + vmovdqa64 xmm2,xmm16 + vpsllq xmm16,xmm16,1 + vpsrlq xmm2,xmm2,63 + vmovdqa xmm1,xmm2 + vpslldq xmm2,xmm2,8 + vpsrldq xmm1,xmm1,8 + vporq xmm16,xmm16,xmm2 + + vpshufd xmm2,xmm1,36 + vpcmpeqd xmm2,xmm2,XMMWORD[TWOONE] + vpand xmm2,xmm2,XMMWORD[POLY] + vpxorq xmm16,xmm16,xmm2 + + vmovdqu64 XMMWORD[336+rdx],xmm16 + vshufi32x4 ymm4,ymm16,ymm16,0x00 + vmovdqa ymm3,ymm4 + + vpclmulqdq ymm0,ymm3,ymm4,0x11 + vpclmulqdq ymm1,ymm3,ymm4,0x00 + vpclmulqdq ymm2,ymm3,ymm4,0x01 + vpclmulqdq ymm3,ymm3,ymm4,0x10 + vpxorq ymm3,ymm3,ymm2 + + vpsrldq ymm2,ymm3,8 + vpslldq ymm3,ymm3,8 + vpxorq ymm0,ymm0,ymm2 + vpxorq ymm3,ymm3,ymm1 + + + + vmovdqu64 ymm2,YMMWORD[POLY2] + + vpclmulqdq ymm1,ymm2,ymm3,0x01 + vpslldq ymm1,ymm1,8 + vpxorq ymm3,ymm3,ymm1 + + + + vpclmulqdq ymm1,ymm2,ymm3,0x00 + vpsrldq ymm1,ymm1,4 + vpclmulqdq ymm3,ymm2,ymm3,0x10 + vpslldq ymm3,ymm3,4 + + vpternlogq ymm3,ymm0,ymm1,0x96 + + vmovdqu64 XMMWORD[320+rdx],xmm3 + vinserti64x2 ymm4,ymm3,xmm16,1 + vmovdqa64 ymm5,ymm4 + + vpclmulqdq ymm0,ymm4,ymm3,0x11 + vpclmulqdq ymm1,ymm4,ymm3,0x00 + vpclmulqdq ymm2,ymm4,ymm3,0x01 + vpclmulqdq ymm4,ymm4,ymm3,0x10 + vpxorq ymm4,ymm4,ymm2 + + vpsrldq ymm2,ymm4,8 + vpslldq ymm4,ymm4,8 + vpxorq ymm0,ymm0,ymm2 + vpxorq ymm4,ymm4,ymm1 + + + + vmovdqu64 ymm2,YMMWORD[POLY2] + + vpclmulqdq ymm1,ymm2,ymm4,0x01 + vpslldq ymm1,ymm1,8 + vpxorq ymm4,ymm4,ymm1 + + + + vpclmulqdq ymm1,ymm2,ymm4,0x00 + vpsrldq ymm1,ymm1,4 + vpclmulqdq ymm4,ymm2,ymm4,0x10 + vpslldq ymm4,ymm4,4 + + vpternlogq ymm4,ymm0,ymm1,0x96 + + vmovdqu64 YMMWORD[288+rdx],ymm4 + + vinserti64x4 zmm4,zmm4,ymm5,1 + + + vshufi64x2 zmm3,zmm4,zmm4,0x00 + vmovdqa64 zmm5,zmm4 + + vpclmulqdq zmm0,zmm4,zmm3,0x11 + vpclmulqdq zmm1,zmm4,zmm3,0x00 + vpclmulqdq zmm2,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm2 + + vpsrldq zmm2,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm0,zmm0,zmm2 + vpxorq zmm4,zmm4,zmm1 + + + + vmovdqu64 zmm2,ZMMWORD[POLY2] + + vpclmulqdq zmm1,zmm2,zmm4,0x01 + vpslldq zmm1,zmm1,8 + vpxorq zmm4,zmm4,zmm1 + + + + vpclmulqdq zmm1,zmm2,zmm4,0x00 + vpsrldq zmm1,zmm1,4 + vpclmulqdq zmm4,zmm2,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm0,zmm1,0x96 + + vmovdqu64 ZMMWORD[224+rdx],zmm4 + vshufi64x2 zmm3,zmm4,zmm4,0x00 + + vpclmulqdq zmm0,zmm5,zmm3,0x11 + vpclmulqdq zmm1,zmm5,zmm3,0x00 + vpclmulqdq zmm2,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm2 + + vpsrldq zmm2,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm0,zmm0,zmm2 + vpxorq zmm5,zmm5,zmm1 + + + + vmovdqu64 zmm2,ZMMWORD[POLY2] + + vpclmulqdq zmm1,zmm2,zmm5,0x01 + vpslldq zmm1,zmm1,8 + vpxorq zmm5,zmm5,zmm1 + + + + vpclmulqdq zmm1,zmm2,zmm5,0x00 + vpsrldq zmm1,zmm1,4 + vpclmulqdq zmm5,zmm2,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm0,zmm1,0x96 + + vmovdqu64 ZMMWORD[160+rdx],zmm5 + + vpclmulqdq zmm0,zmm4,zmm3,0x11 + vpclmulqdq zmm1,zmm4,zmm3,0x00 + vpclmulqdq zmm2,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm2 + + vpsrldq zmm2,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm0,zmm0,zmm2 + vpxorq zmm4,zmm4,zmm1 + + + + vmovdqu64 zmm2,ZMMWORD[POLY2] + + vpclmulqdq zmm1,zmm2,zmm4,0x01 + vpslldq zmm1,zmm1,8 + vpxorq zmm4,zmm4,zmm1 + + + + vpclmulqdq zmm1,zmm2,zmm4,0x00 + vpsrldq zmm1,zmm1,4 + vpclmulqdq zmm4,zmm2,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm0,zmm1,0x96 + + vmovdqu64 ZMMWORD[96+rdx],zmm4 + vzeroupper +$L$abort_init: + DB 0F3h,0C3h ;repret + + +global ossl_aes_gcm_setiv_avx512 + +ALIGN 32 +ossl_aes_gcm_setiv_avx512: + +$L$setiv_seh_begin: +DB 243,15,30,250 + push rbx + +$L$setiv_seh_push_rbx: + push rbp + +$L$setiv_seh_push_rbp: + push r12 + +$L$setiv_seh_push_r12: + push r13 + +$L$setiv_seh_push_r13: + push r14 + +$L$setiv_seh_push_r14: + push r15 + +$L$setiv_seh_push_r15: + push rdi +$L$setiv_seh_push_rdi: + push rsi +$L$setiv_seh_push_rsi: + + sub rsp,168 +$L$setiv_seh_allocstack_xmm: + + + + + + + + + + + lea rbp,[160+rsp] + +$L$setiv_seh_setfp: + vmovdqu XMMWORD[rsp],xmm6 +$L$setiv_seh_save_xmm6: + vmovdqu XMMWORD[16+rsp],xmm7 +$L$setiv_seh_save_xmm7: + vmovdqu XMMWORD[32+rsp],xmm8 +$L$setiv_seh_save_xmm8: + vmovdqu XMMWORD[48+rsp],xmm9 +$L$setiv_seh_save_xmm9: + vmovdqu XMMWORD[64+rsp],xmm10 +$L$setiv_seh_save_xmm10: + vmovdqu XMMWORD[80+rsp],xmm11 +$L$setiv_seh_save_xmm11: + vmovdqu XMMWORD[96+rsp],xmm12 +$L$setiv_seh_save_xmm12: + vmovdqu XMMWORD[112+rsp],xmm13 +$L$setiv_seh_save_xmm13: + vmovdqu XMMWORD[128+rsp],xmm14 +$L$setiv_seh_save_xmm14: + vmovdqu XMMWORD[144+rsp],xmm15 +$L$setiv_seh_save_xmm15: + +$L$setiv_seh_prolog_end: + sub rsp,816 + and rsp,(-64) + cmp r9,12 + je NEAR iv_len_12_init_IV + vpxor xmm2,xmm2,xmm2 + mov r10,r8 + mov r11,r9 + or r11,r11 + jz NEAR $L$_CALC_AAD_done_1 + + xor rbx,rbx + vmovdqa64 zmm16,ZMMWORD[SHUF_MASK] + +$L$_get_AAD_loop48x16_1: + cmp r11,768 + jl NEAR $L$_exit_AAD_loop48x16_1 + vmovdqu64 zmm11,ZMMWORD[r10] + vmovdqu64 zmm3,ZMMWORD[64+r10] + vmovdqu64 zmm4,ZMMWORD[128+r10] + vmovdqu64 zmm5,ZMMWORD[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + test rbx,rbx + jnz NEAR $L$_skip_hkeys_precomputation_2 + + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vmovdqu64 ZMMWORD[704+rsp],zmm1 + + vmovdqu64 zmm9,ZMMWORD[224+rdx] + vmovdqu64 ZMMWORD[640+rsp],zmm9 + + + vshufi64x2 zmm9,zmm9,zmm9,0x00 + + vmovdqu64 zmm10,ZMMWORD[160+rdx] + vmovdqu64 ZMMWORD[576+rsp],zmm10 + + vmovdqu64 zmm12,ZMMWORD[96+rdx] + vmovdqu64 ZMMWORD[512+rsp],zmm12 + + vpclmulqdq zmm13,zmm10,zmm9,0x11 + vpclmulqdq zmm15,zmm10,zmm9,0x00 + vpclmulqdq zmm17,zmm10,zmm9,0x01 + vpclmulqdq zmm10,zmm10,zmm9,0x10 + vpxorq zmm10,zmm10,zmm17 + + vpsrldq zmm17,zmm10,8 + vpslldq zmm10,zmm10,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm10,zmm10,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm10,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm10,zmm10,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm10,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm10,zmm17,zmm10,0x10 + vpslldq zmm10,zmm10,4 + + vpternlogq zmm10,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm10 + + vpclmulqdq zmm13,zmm12,zmm9,0x11 + vpclmulqdq zmm15,zmm12,zmm9,0x00 + vpclmulqdq zmm17,zmm12,zmm9,0x01 + vpclmulqdq zmm12,zmm12,zmm9,0x10 + vpxorq zmm12,zmm12,zmm17 + + vpsrldq zmm17,zmm12,8 + vpslldq zmm12,zmm12,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm12,zmm12,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm12,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm12,zmm12,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm12,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm12,zmm17,zmm12,0x10 + vpslldq zmm12,zmm12,4 + + vpternlogq zmm12,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm12 + + vpclmulqdq zmm13,zmm10,zmm9,0x11 + vpclmulqdq zmm15,zmm10,zmm9,0x00 + vpclmulqdq zmm17,zmm10,zmm9,0x01 + vpclmulqdq zmm10,zmm10,zmm9,0x10 + vpxorq zmm10,zmm10,zmm17 + + vpsrldq zmm17,zmm10,8 + vpslldq zmm10,zmm10,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm10,zmm10,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm10,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm10,zmm10,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm10,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm10,zmm17,zmm10,0x10 + vpslldq zmm10,zmm10,4 + + vpternlogq zmm10,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm10 + + vpclmulqdq zmm13,zmm12,zmm9,0x11 + vpclmulqdq zmm15,zmm12,zmm9,0x00 + vpclmulqdq zmm17,zmm12,zmm9,0x01 + vpclmulqdq zmm12,zmm12,zmm9,0x10 + vpxorq zmm12,zmm12,zmm17 + + vpsrldq zmm17,zmm12,8 + vpslldq zmm12,zmm12,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm12,zmm12,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm12,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm12,zmm12,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm12,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm12,zmm17,zmm12,0x10 + vpslldq zmm12,zmm12,4 + + vpternlogq zmm12,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm12 + + vpclmulqdq zmm13,zmm10,zmm9,0x11 + vpclmulqdq zmm15,zmm10,zmm9,0x00 + vpclmulqdq zmm17,zmm10,zmm9,0x01 + vpclmulqdq zmm10,zmm10,zmm9,0x10 + vpxorq zmm10,zmm10,zmm17 + + vpsrldq zmm17,zmm10,8 + vpslldq zmm10,zmm10,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm10,zmm10,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm10,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm10,zmm10,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm10,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm10,zmm17,zmm10,0x10 + vpslldq zmm10,zmm10,4 + + vpternlogq zmm10,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[192+rsp],zmm10 + + vpclmulqdq zmm13,zmm12,zmm9,0x11 + vpclmulqdq zmm15,zmm12,zmm9,0x00 + vpclmulqdq zmm17,zmm12,zmm9,0x01 + vpclmulqdq zmm12,zmm12,zmm9,0x10 + vpxorq zmm12,zmm12,zmm17 + + vpsrldq zmm17,zmm12,8 + vpslldq zmm12,zmm12,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm12,zmm12,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm12,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm12,zmm12,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm12,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm12,zmm17,zmm12,0x10 + vpslldq zmm12,zmm12,4 + + vpternlogq zmm12,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[128+rsp],zmm12 + + vpclmulqdq zmm13,zmm10,zmm9,0x11 + vpclmulqdq zmm15,zmm10,zmm9,0x00 + vpclmulqdq zmm17,zmm10,zmm9,0x01 + vpclmulqdq zmm10,zmm10,zmm9,0x10 + vpxorq zmm10,zmm10,zmm17 + + vpsrldq zmm17,zmm10,8 + vpslldq zmm10,zmm10,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm10,zmm10,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm10,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm10,zmm10,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm10,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm10,zmm17,zmm10,0x10 + vpslldq zmm10,zmm10,4 + + vpternlogq zmm10,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[64+rsp],zmm10 + + vpclmulqdq zmm13,zmm12,zmm9,0x11 + vpclmulqdq zmm15,zmm12,zmm9,0x00 + vpclmulqdq zmm17,zmm12,zmm9,0x01 + vpclmulqdq zmm12,zmm12,zmm9,0x10 + vpxorq zmm12,zmm12,zmm17 + + vpsrldq zmm17,zmm12,8 + vpslldq zmm12,zmm12,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm12,zmm12,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm12,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm12,zmm12,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm12,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm12,zmm17,zmm12,0x10 + vpslldq zmm12,zmm12,4 + + vpternlogq zmm12,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[rsp],zmm12 +$L$_skip_hkeys_precomputation_2: + mov rbx,1 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm19,ZMMWORD[rsp] + vpclmulqdq zmm1,zmm11,zmm19,0x11 + vpclmulqdq zmm9,zmm11,zmm19,0x00 + vpclmulqdq zmm10,zmm11,zmm19,0x01 + vpclmulqdq zmm12,zmm11,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[64+rsp] + vpclmulqdq zmm13,zmm3,zmm19,0x11 + vpclmulqdq zmm15,zmm3,zmm19,0x00 + vpclmulqdq zmm17,zmm3,zmm19,0x01 + vpclmulqdq zmm18,zmm3,zmm19,0x10 + vpxorq zmm7,zmm10,zmm17 + vpxorq zmm6,zmm1,zmm13 + vpxorq zmm8,zmm9,zmm15 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm19,ZMMWORD[128+rsp] + vpclmulqdq zmm1,zmm4,zmm19,0x11 + vpclmulqdq zmm9,zmm4,zmm19,0x00 + vpclmulqdq zmm10,zmm4,zmm19,0x01 + vpclmulqdq zmm12,zmm4,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[192+rsp] + vpclmulqdq zmm13,zmm5,zmm19,0x11 + vpclmulqdq zmm15,zmm5,zmm19,0x00 + vpclmulqdq zmm17,zmm5,zmm19,0x01 + vpclmulqdq zmm18,zmm5,zmm19,0x10 + + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm11,ZMMWORD[256+r10] + vmovdqu64 zmm3,ZMMWORD[320+r10] + vmovdqu64 zmm4,ZMMWORD[384+r10] + vmovdqu64 zmm5,ZMMWORD[448+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + vmovdqu64 zmm19,ZMMWORD[256+rsp] + vpclmulqdq zmm1,zmm11,zmm19,0x11 + vpclmulqdq zmm9,zmm11,zmm19,0x00 + vpclmulqdq zmm10,zmm11,zmm19,0x01 + vpclmulqdq zmm12,zmm11,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[320+rsp] + vpclmulqdq zmm13,zmm3,zmm19,0x11 + vpclmulqdq zmm15,zmm3,zmm19,0x00 + vpclmulqdq zmm17,zmm3,zmm19,0x01 + vpclmulqdq zmm18,zmm3,zmm19,0x10 + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm19,ZMMWORD[384+rsp] + vpclmulqdq zmm1,zmm4,zmm19,0x11 + vpclmulqdq zmm9,zmm4,zmm19,0x00 + vpclmulqdq zmm10,zmm4,zmm19,0x01 + vpclmulqdq zmm12,zmm4,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[448+rsp] + vpclmulqdq zmm13,zmm5,zmm19,0x11 + vpclmulqdq zmm15,zmm5,zmm19,0x00 + vpclmulqdq zmm17,zmm5,zmm19,0x01 + vpclmulqdq zmm18,zmm5,zmm19,0x10 + + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm11,ZMMWORD[512+r10] + vmovdqu64 zmm3,ZMMWORD[576+r10] + vmovdqu64 zmm4,ZMMWORD[640+r10] + vmovdqu64 zmm5,ZMMWORD[704+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + vmovdqu64 zmm19,ZMMWORD[512+rsp] + vpclmulqdq zmm1,zmm11,zmm19,0x11 + vpclmulqdq zmm9,zmm11,zmm19,0x00 + vpclmulqdq zmm10,zmm11,zmm19,0x01 + vpclmulqdq zmm12,zmm11,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[576+rsp] + vpclmulqdq zmm13,zmm3,zmm19,0x11 + vpclmulqdq zmm15,zmm3,zmm19,0x00 + vpclmulqdq zmm17,zmm3,zmm19,0x01 + vpclmulqdq zmm18,zmm3,zmm19,0x10 + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm19,ZMMWORD[640+rsp] + vpclmulqdq zmm1,zmm4,zmm19,0x11 + vpclmulqdq zmm9,zmm4,zmm19,0x00 + vpclmulqdq zmm10,zmm4,zmm19,0x01 + vpclmulqdq zmm12,zmm4,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[704+rsp] + vpclmulqdq zmm13,zmm5,zmm19,0x11 + vpclmulqdq zmm15,zmm5,zmm19,0x00 + vpclmulqdq zmm17,zmm5,zmm19,0x01 + vpclmulqdq zmm18,zmm5,zmm19,0x10 + + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + + vpsrldq zmm1,zmm7,8 + vpslldq zmm9,zmm7,8 + vpxorq zmm6,zmm6,zmm1 + vpxorq zmm8,zmm8,zmm9 + vextracti64x4 ymm1,zmm6,1 + vpxorq ymm6,ymm6,ymm1 + vextracti32x4 xmm1,ymm6,1 + vpxorq xmm6,xmm6,xmm1 + vextracti64x4 ymm9,zmm8,1 + vpxorq ymm8,ymm8,ymm9 + vextracti32x4 xmm9,ymm8,1 + vpxorq xmm8,xmm8,xmm9 + vmovdqa64 xmm10,XMMWORD[POLY2] + + + vpclmulqdq xmm1,xmm10,xmm8,0x01 + vpslldq xmm1,xmm1,8 + vpxorq xmm1,xmm8,xmm1 + + + vpclmulqdq xmm9,xmm10,xmm1,0x00 + vpsrldq xmm9,xmm9,4 + vpclmulqdq xmm2,xmm10,xmm1,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm9,xmm6,0x96 + + sub r11,768 + je NEAR $L$_CALC_AAD_done_1 + + add r10,768 + jmp NEAR $L$_get_AAD_loop48x16_1 + +$L$_exit_AAD_loop48x16_1: + + cmp r11,512 + jl NEAR $L$_less_than_32x16_1 + + vmovdqu64 zmm11,ZMMWORD[r10] + vmovdqu64 zmm3,ZMMWORD[64+r10] + vmovdqu64 zmm4,ZMMWORD[128+r10] + vmovdqu64 zmm5,ZMMWORD[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + test rbx,rbx + jnz NEAR $L$_skip_hkeys_precomputation_3 + + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vmovdqu64 ZMMWORD[704+rsp],zmm1 + + vmovdqu64 zmm9,ZMMWORD[224+rdx] + vmovdqu64 ZMMWORD[640+rsp],zmm9 + + + vshufi64x2 zmm9,zmm9,zmm9,0x00 + + vmovdqu64 zmm10,ZMMWORD[160+rdx] + vmovdqu64 ZMMWORD[576+rsp],zmm10 + + vmovdqu64 zmm12,ZMMWORD[96+rdx] + vmovdqu64 ZMMWORD[512+rsp],zmm12 + + vpclmulqdq zmm13,zmm10,zmm9,0x11 + vpclmulqdq zmm15,zmm10,zmm9,0x00 + vpclmulqdq zmm17,zmm10,zmm9,0x01 + vpclmulqdq zmm10,zmm10,zmm9,0x10 + vpxorq zmm10,zmm10,zmm17 + + vpsrldq zmm17,zmm10,8 + vpslldq zmm10,zmm10,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm10,zmm10,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm10,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm10,zmm10,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm10,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm10,zmm17,zmm10,0x10 + vpslldq zmm10,zmm10,4 + + vpternlogq zmm10,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm10 + + vpclmulqdq zmm13,zmm12,zmm9,0x11 + vpclmulqdq zmm15,zmm12,zmm9,0x00 + vpclmulqdq zmm17,zmm12,zmm9,0x01 + vpclmulqdq zmm12,zmm12,zmm9,0x10 + vpxorq zmm12,zmm12,zmm17 + + vpsrldq zmm17,zmm12,8 + vpslldq zmm12,zmm12,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm12,zmm12,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm12,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm12,zmm12,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm12,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm12,zmm17,zmm12,0x10 + vpslldq zmm12,zmm12,4 + + vpternlogq zmm12,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm12 + + vpclmulqdq zmm13,zmm10,zmm9,0x11 + vpclmulqdq zmm15,zmm10,zmm9,0x00 + vpclmulqdq zmm17,zmm10,zmm9,0x01 + vpclmulqdq zmm10,zmm10,zmm9,0x10 + vpxorq zmm10,zmm10,zmm17 + + vpsrldq zmm17,zmm10,8 + vpslldq zmm10,zmm10,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm10,zmm10,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm10,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm10,zmm10,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm10,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm10,zmm17,zmm10,0x10 + vpslldq zmm10,zmm10,4 + + vpternlogq zmm10,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm10 + + vpclmulqdq zmm13,zmm12,zmm9,0x11 + vpclmulqdq zmm15,zmm12,zmm9,0x00 + vpclmulqdq zmm17,zmm12,zmm9,0x01 + vpclmulqdq zmm12,zmm12,zmm9,0x10 + vpxorq zmm12,zmm12,zmm17 + + vpsrldq zmm17,zmm12,8 + vpslldq zmm12,zmm12,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm12,zmm12,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm12,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm12,zmm12,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm12,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm12,zmm17,zmm12,0x10 + vpslldq zmm12,zmm12,4 + + vpternlogq zmm12,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm12 +$L$_skip_hkeys_precomputation_3: + mov rbx,1 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm19,ZMMWORD[256+rsp] + vpclmulqdq zmm1,zmm11,zmm19,0x11 + vpclmulqdq zmm9,zmm11,zmm19,0x00 + vpclmulqdq zmm10,zmm11,zmm19,0x01 + vpclmulqdq zmm12,zmm11,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[320+rsp] + vpclmulqdq zmm13,zmm3,zmm19,0x11 + vpclmulqdq zmm15,zmm3,zmm19,0x00 + vpclmulqdq zmm17,zmm3,zmm19,0x01 + vpclmulqdq zmm18,zmm3,zmm19,0x10 + vpxorq zmm7,zmm10,zmm17 + vpxorq zmm6,zmm1,zmm13 + vpxorq zmm8,zmm9,zmm15 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm19,ZMMWORD[384+rsp] + vpclmulqdq zmm1,zmm4,zmm19,0x11 + vpclmulqdq zmm9,zmm4,zmm19,0x00 + vpclmulqdq zmm10,zmm4,zmm19,0x01 + vpclmulqdq zmm12,zmm4,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[448+rsp] + vpclmulqdq zmm13,zmm5,zmm19,0x11 + vpclmulqdq zmm15,zmm5,zmm19,0x00 + vpclmulqdq zmm17,zmm5,zmm19,0x01 + vpclmulqdq zmm18,zmm5,zmm19,0x10 + + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm11,ZMMWORD[256+r10] + vmovdqu64 zmm3,ZMMWORD[320+r10] + vmovdqu64 zmm4,ZMMWORD[384+r10] + vmovdqu64 zmm5,ZMMWORD[448+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + vmovdqu64 zmm19,ZMMWORD[512+rsp] + vpclmulqdq zmm1,zmm11,zmm19,0x11 + vpclmulqdq zmm9,zmm11,zmm19,0x00 + vpclmulqdq zmm10,zmm11,zmm19,0x01 + vpclmulqdq zmm12,zmm11,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[576+rsp] + vpclmulqdq zmm13,zmm3,zmm19,0x11 + vpclmulqdq zmm15,zmm3,zmm19,0x00 + vpclmulqdq zmm17,zmm3,zmm19,0x01 + vpclmulqdq zmm18,zmm3,zmm19,0x10 + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm19,ZMMWORD[640+rsp] + vpclmulqdq zmm1,zmm4,zmm19,0x11 + vpclmulqdq zmm9,zmm4,zmm19,0x00 + vpclmulqdq zmm10,zmm4,zmm19,0x01 + vpclmulqdq zmm12,zmm4,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[704+rsp] + vpclmulqdq zmm13,zmm5,zmm19,0x11 + vpclmulqdq zmm15,zmm5,zmm19,0x00 + vpclmulqdq zmm17,zmm5,zmm19,0x01 + vpclmulqdq zmm18,zmm5,zmm19,0x10 + + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + + vpsrldq zmm1,zmm7,8 + vpslldq zmm9,zmm7,8 + vpxorq zmm6,zmm6,zmm1 + vpxorq zmm8,zmm8,zmm9 + vextracti64x4 ymm1,zmm6,1 + vpxorq ymm6,ymm6,ymm1 + vextracti32x4 xmm1,ymm6,1 + vpxorq xmm6,xmm6,xmm1 + vextracti64x4 ymm9,zmm8,1 + vpxorq ymm8,ymm8,ymm9 + vextracti32x4 xmm9,ymm8,1 + vpxorq xmm8,xmm8,xmm9 + vmovdqa64 xmm10,XMMWORD[POLY2] + + + vpclmulqdq xmm1,xmm10,xmm8,0x01 + vpslldq xmm1,xmm1,8 + vpxorq xmm1,xmm8,xmm1 + + + vpclmulqdq xmm9,xmm10,xmm1,0x00 + vpsrldq xmm9,xmm9,4 + vpclmulqdq xmm2,xmm10,xmm1,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm9,xmm6,0x96 + + sub r11,512 + je NEAR $L$_CALC_AAD_done_1 + + add r10,512 + jmp NEAR $L$_less_than_16x16_1 + +$L$_less_than_32x16_1: + cmp r11,256 + jl NEAR $L$_less_than_16x16_1 + + vmovdqu64 zmm11,ZMMWORD[r10] + vmovdqu64 zmm3,ZMMWORD[64+r10] + vmovdqu64 zmm4,ZMMWORD[128+r10] + vmovdqu64 zmm5,ZMMWORD[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm19,ZMMWORD[96+rdx] + vpclmulqdq zmm1,zmm11,zmm19,0x11 + vpclmulqdq zmm9,zmm11,zmm19,0x00 + vpclmulqdq zmm10,zmm11,zmm19,0x01 + vpclmulqdq zmm12,zmm11,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[160+rdx] + vpclmulqdq zmm13,zmm3,zmm19,0x11 + vpclmulqdq zmm15,zmm3,zmm19,0x00 + vpclmulqdq zmm17,zmm3,zmm19,0x01 + vpclmulqdq zmm18,zmm3,zmm19,0x10 + vpxorq zmm7,zmm10,zmm17 + vpxorq zmm6,zmm1,zmm13 + vpxorq zmm8,zmm9,zmm15 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm19,ZMMWORD[224+rdx] + vpclmulqdq zmm1,zmm4,zmm19,0x11 + vpclmulqdq zmm9,zmm4,zmm19,0x00 + vpclmulqdq zmm10,zmm4,zmm19,0x01 + vpclmulqdq zmm12,zmm4,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[288+rdx] + vpclmulqdq zmm13,zmm5,zmm19,0x11 + vpclmulqdq zmm15,zmm5,zmm19,0x00 + vpclmulqdq zmm17,zmm5,zmm19,0x01 + vpclmulqdq zmm18,zmm5,zmm19,0x10 + + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + + vpsrldq zmm1,zmm7,8 + vpslldq zmm9,zmm7,8 + vpxorq zmm6,zmm6,zmm1 + vpxorq zmm8,zmm8,zmm9 + vextracti64x4 ymm1,zmm6,1 + vpxorq ymm6,ymm6,ymm1 + vextracti32x4 xmm1,ymm6,1 + vpxorq xmm6,xmm6,xmm1 + vextracti64x4 ymm9,zmm8,1 + vpxorq ymm8,ymm8,ymm9 + vextracti32x4 xmm9,ymm8,1 + vpxorq xmm8,xmm8,xmm9 + vmovdqa64 xmm10,XMMWORD[POLY2] + + + vpclmulqdq xmm1,xmm10,xmm8,0x01 + vpslldq xmm1,xmm1,8 + vpxorq xmm1,xmm8,xmm1 + + + vpclmulqdq xmm9,xmm10,xmm1,0x00 + vpsrldq xmm9,xmm9,4 + vpclmulqdq xmm2,xmm10,xmm1,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm9,xmm6,0x96 + + sub r11,256 + je NEAR $L$_CALC_AAD_done_1 + + add r10,256 + +$L$_less_than_16x16_1: + + lea r12,[byte64_len_to_mask_table] + lea r12,[r11*8+r12] + + + add r11d,15 + shr r11d,4 + cmp r11d,2 + jb NEAR $L$_AAD_blocks_1_1 + je NEAR $L$_AAD_blocks_2_1 + cmp r11d,4 + jb NEAR $L$_AAD_blocks_3_1 + je NEAR $L$_AAD_blocks_4_1 + cmp r11d,6 + jb NEAR $L$_AAD_blocks_5_1 + je NEAR $L$_AAD_blocks_6_1 + cmp r11d,8 + jb NEAR $L$_AAD_blocks_7_1 + je NEAR $L$_AAD_blocks_8_1 + cmp r11d,10 + jb NEAR $L$_AAD_blocks_9_1 + je NEAR $L$_AAD_blocks_10_1 + cmp r11d,12 + jb NEAR $L$_AAD_blocks_11_1 + je NEAR $L$_AAD_blocks_12_1 + cmp r11d,14 + jb NEAR $L$_AAD_blocks_13_1 + je NEAR $L$_AAD_blocks_14_1 + cmp r11d,15 + je NEAR $L$_AAD_blocks_15_1 +$L$_AAD_blocks_16_1: + sub r12,1536 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 zmm4,ZMMWORD[128+r10] + vmovdqu8 zmm5{k1}{z},[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm15,ZMMWORD[96+rdx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[160+rdx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[224+rdx] + vpclmulqdq zmm11,zmm4,zmm15,0x11 + vpclmulqdq zmm3,zmm4,zmm15,0x00 + vpternlogq zmm1,zmm11,zmm9,0x96 + vpternlogq zmm6,zmm3,zmm10,0x96 + vpclmulqdq zmm11,zmm4,zmm15,0x01 + vpclmulqdq zmm3,zmm4,zmm15,0x10 + vpternlogq zmm7,zmm11,zmm12,0x96 + vpternlogq zmm8,zmm3,zmm13,0x96 + vmovdqu64 zmm15,ZMMWORD[288+rdx] + vpclmulqdq zmm9,zmm5,zmm15,0x11 + vpclmulqdq zmm10,zmm5,zmm15,0x00 + vpclmulqdq zmm12,zmm5,zmm15,0x01 + vpclmulqdq zmm13,zmm5,zmm15,0x10 + vpxorq zmm9,zmm1,zmm9 + vpxorq zmm10,zmm6,zmm10 + vpxorq zmm12,zmm7,zmm12 + vpxorq zmm13,zmm8,zmm13 + + vpxorq zmm12,zmm12,zmm13 + vpsrldq zmm7,zmm12,8 + vpslldq zmm8,zmm12,8 + vpxorq zmm1,zmm9,zmm7 + vpxorq zmm6,zmm10,zmm8 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_15_1: + sub r12,1536 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 zmm4,ZMMWORD[128+r10] + vmovdqu8 zmm5{k1}{z},[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm15,ZMMWORD[112+rdx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[176+rdx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[240+rdx] + vpclmulqdq zmm11,zmm4,zmm15,0x11 + vpclmulqdq zmm3,zmm4,zmm15,0x00 + vpternlogq zmm9,zmm11,zmm1,0x96 + vpternlogq zmm10,zmm3,zmm6,0x96 + vpclmulqdq zmm11,zmm4,zmm15,0x01 + vpclmulqdq zmm3,zmm4,zmm15,0x10 + vpternlogq zmm12,zmm11,zmm7,0x96 + vpternlogq zmm13,zmm3,zmm8,0x96 + vmovdqu64 ymm15,YMMWORD[304+rdx] + vinserti64x2 zmm15,zmm15,ZMMWORD[336+rdx],2 + vpclmulqdq zmm7,zmm5,zmm15,0x01 + vpclmulqdq zmm8,zmm5,zmm15,0x10 + vpclmulqdq zmm1,zmm5,zmm15,0x11 + vpclmulqdq zmm6,zmm5,zmm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_14_1: + sub r12,1536 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 zmm4,ZMMWORD[128+r10] + vmovdqu8 ymm5{k1}{z},[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb ymm5,ymm5,ymm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm15,ZMMWORD[128+rdx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[192+rdx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[256+rdx] + vpclmulqdq zmm11,zmm4,zmm15,0x11 + vpclmulqdq zmm3,zmm4,zmm15,0x00 + vpternlogq zmm9,zmm11,zmm1,0x96 + vpternlogq zmm10,zmm3,zmm6,0x96 + vpclmulqdq zmm11,zmm4,zmm15,0x01 + vpclmulqdq zmm3,zmm4,zmm15,0x10 + vpternlogq zmm12,zmm11,zmm7,0x96 + vpternlogq zmm13,zmm3,zmm8,0x96 + vmovdqu64 ymm15,YMMWORD[320+rdx] + vpclmulqdq ymm7,ymm5,ymm15,0x01 + vpclmulqdq ymm8,ymm5,ymm15,0x10 + vpclmulqdq ymm1,ymm5,ymm15,0x11 + vpclmulqdq ymm6,ymm5,ymm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_13_1: + sub r12,1536 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 zmm4,ZMMWORD[128+r10] + vmovdqu8 xmm5{k1}{z},[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb xmm5,xmm5,xmm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm15,ZMMWORD[144+rdx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[208+rdx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[272+rdx] + vpclmulqdq zmm11,zmm4,zmm15,0x11 + vpclmulqdq zmm3,zmm4,zmm15,0x00 + vpternlogq zmm9,zmm11,zmm1,0x96 + vpternlogq zmm10,zmm3,zmm6,0x96 + vpclmulqdq zmm11,zmm4,zmm15,0x01 + vpclmulqdq zmm3,zmm4,zmm15,0x10 + vpternlogq zmm12,zmm11,zmm7,0x96 + vpternlogq zmm13,zmm3,zmm8,0x96 + vmovdqu64 xmm15,XMMWORD[336+rdx] + vpclmulqdq xmm7,xmm5,xmm15,0x01 + vpclmulqdq xmm8,xmm5,xmm15,0x10 + vpclmulqdq xmm1,xmm5,xmm15,0x11 + vpclmulqdq xmm6,xmm5,xmm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_12_1: + sub r12,1024 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 zmm4{k1}{z},[128+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm15,ZMMWORD[160+rdx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[224+rdx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[288+rdx] + vpclmulqdq zmm11,zmm4,zmm15,0x11 + vpclmulqdq zmm3,zmm4,zmm15,0x00 + vpternlogq zmm9,zmm11,zmm1,0x96 + vpternlogq zmm10,zmm3,zmm6,0x96 + vpclmulqdq zmm11,zmm4,zmm15,0x01 + vpclmulqdq zmm3,zmm4,zmm15,0x10 + vpternlogq zmm12,zmm11,zmm7,0x96 + vpternlogq zmm13,zmm3,zmm8,0x96 + + vpxorq zmm12,zmm12,zmm13 + vpsrldq zmm7,zmm12,8 + vpslldq zmm8,zmm12,8 + vpxorq zmm1,zmm9,zmm7 + vpxorq zmm6,zmm10,zmm8 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_11_1: + sub r12,1024 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 zmm4{k1}{z},[128+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm15,ZMMWORD[176+rdx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[240+rdx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vpxorq zmm9,zmm1,zmm9 + vpxorq zmm10,zmm6,zmm10 + vpxorq zmm12,zmm7,zmm12 + vpxorq zmm13,zmm8,zmm13 + vmovdqu64 ymm15,YMMWORD[304+rdx] + vinserti64x2 zmm15,zmm15,ZMMWORD[336+rdx],2 + vpclmulqdq zmm7,zmm4,zmm15,0x01 + vpclmulqdq zmm8,zmm4,zmm15,0x10 + vpclmulqdq zmm1,zmm4,zmm15,0x11 + vpclmulqdq zmm6,zmm4,zmm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_10_1: + sub r12,1024 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 ymm4{k1}{z},[128+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb ymm4,ymm4,ymm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm15,ZMMWORD[192+rdx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[256+rdx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vpxorq zmm9,zmm1,zmm9 + vpxorq zmm10,zmm6,zmm10 + vpxorq zmm12,zmm7,zmm12 + vpxorq zmm13,zmm8,zmm13 + vmovdqu64 ymm15,YMMWORD[320+rdx] + vpclmulqdq ymm7,ymm4,ymm15,0x01 + vpclmulqdq ymm8,ymm4,ymm15,0x10 + vpclmulqdq ymm1,ymm4,ymm15,0x11 + vpclmulqdq ymm6,ymm4,ymm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_9_1: + sub r12,1024 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 xmm4{k1}{z},[128+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb xmm4,xmm4,xmm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm15,ZMMWORD[208+rdx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[272+rdx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vpxorq zmm9,zmm1,zmm9 + vpxorq zmm10,zmm6,zmm10 + vpxorq zmm12,zmm7,zmm12 + vpxorq zmm13,zmm8,zmm13 + vmovdqu64 xmm15,XMMWORD[336+rdx] + vpclmulqdq xmm7,xmm4,xmm15,0x01 + vpclmulqdq xmm8,xmm4,xmm15,0x10 + vpclmulqdq xmm1,xmm4,xmm15,0x11 + vpclmulqdq xmm6,xmm4,xmm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_8_1: + sub r12,512 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3{k1}{z},[64+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm15,ZMMWORD[224+rdx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[288+rdx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vpxorq zmm9,zmm1,zmm9 + vpxorq zmm10,zmm6,zmm10 + vpxorq zmm12,zmm7,zmm12 + vpxorq zmm13,zmm8,zmm13 + + vpxorq zmm12,zmm12,zmm13 + vpsrldq zmm7,zmm12,8 + vpslldq zmm8,zmm12,8 + vpxorq zmm1,zmm9,zmm7 + vpxorq zmm6,zmm10,zmm8 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_7_1: + sub r12,512 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3{k1}{z},[64+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm15,ZMMWORD[240+rdx] + vpclmulqdq zmm9,zmm11,zmm15,0x11 + vpclmulqdq zmm10,zmm11,zmm15,0x00 + vpclmulqdq zmm12,zmm11,zmm15,0x01 + vpclmulqdq zmm13,zmm11,zmm15,0x10 + vmovdqu64 ymm15,YMMWORD[304+rdx] + vinserti64x2 zmm15,zmm15,ZMMWORD[336+rdx],2 + vpclmulqdq zmm7,zmm3,zmm15,0x01 + vpclmulqdq zmm8,zmm3,zmm15,0x10 + vpclmulqdq zmm1,zmm3,zmm15,0x11 + vpclmulqdq zmm6,zmm3,zmm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_6_1: + sub r12,512 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 ymm3{k1}{z},[64+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb ymm3,ymm3,ymm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm15,ZMMWORD[256+rdx] + vpclmulqdq zmm9,zmm11,zmm15,0x11 + vpclmulqdq zmm10,zmm11,zmm15,0x00 + vpclmulqdq zmm12,zmm11,zmm15,0x01 + vpclmulqdq zmm13,zmm11,zmm15,0x10 + vmovdqu64 ymm15,YMMWORD[320+rdx] + vpclmulqdq ymm7,ymm3,ymm15,0x01 + vpclmulqdq ymm8,ymm3,ymm15,0x10 + vpclmulqdq ymm1,ymm3,ymm15,0x11 + vpclmulqdq ymm6,ymm3,ymm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_5_1: + sub r12,512 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 xmm3{k1}{z},[64+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb xmm3,xmm3,xmm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm15,ZMMWORD[272+rdx] + vpclmulqdq zmm9,zmm11,zmm15,0x11 + vpclmulqdq zmm10,zmm11,zmm15,0x00 + vpclmulqdq zmm12,zmm11,zmm15,0x01 + vpclmulqdq zmm13,zmm11,zmm15,0x10 + vmovdqu64 xmm15,XMMWORD[336+rdx] + vpclmulqdq xmm7,xmm3,xmm15,0x01 + vpclmulqdq xmm8,xmm3,xmm15,0x10 + vpclmulqdq xmm1,xmm3,xmm15,0x11 + vpclmulqdq xmm6,xmm3,xmm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_4_1: + kmovq k1,[r12] + vmovdqu8 zmm11{k1}{z},[r10] + vpshufb zmm11,zmm11,zmm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm15,ZMMWORD[288+rdx] + vpclmulqdq zmm9,zmm11,zmm15,0x11 + vpclmulqdq zmm10,zmm11,zmm15,0x00 + vpclmulqdq zmm12,zmm11,zmm15,0x01 + vpclmulqdq zmm13,zmm11,zmm15,0x10 + + vpxorq zmm12,zmm12,zmm13 + vpsrldq zmm7,zmm12,8 + vpslldq zmm8,zmm12,8 + vpxorq zmm1,zmm9,zmm7 + vpxorq zmm6,zmm10,zmm8 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_3_1: + kmovq k1,[r12] + vmovdqu8 zmm11{k1}{z},[r10] + vpshufb zmm11,zmm11,zmm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 ymm15,YMMWORD[304+rdx] + vinserti64x2 zmm15,zmm15,ZMMWORD[336+rdx],2 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_2_1: + kmovq k1,[r12] + vmovdqu8 ymm11{k1}{z},[r10] + vpshufb ymm11,ymm11,ymm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 ymm15,YMMWORD[320+rdx] + vpclmulqdq ymm7,ymm11,ymm15,0x01 + vpclmulqdq ymm8,ymm11,ymm15,0x10 + vpclmulqdq ymm1,ymm11,ymm15,0x11 + vpclmulqdq ymm6,ymm11,ymm15,0x00 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_1_1: + kmovq k1,[r12] + vmovdqu8 xmm11{k1}{z},[r10] + vpshufb xmm11,xmm11,xmm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 xmm15,XMMWORD[336+rdx] + vpclmulqdq xmm7,xmm11,xmm15,0x01 + vpclmulqdq xmm8,xmm11,xmm15,0x10 + vpclmulqdq xmm1,xmm11,xmm15,0x11 + vpclmulqdq xmm6,xmm11,xmm15,0x00 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + +$L$_CALC_AAD_done_1: + mov r10,r9 + shl r10,3 + vmovq xmm3,r10 + + + vpxorq xmm2,xmm3,xmm2 + + vmovdqu64 xmm1,XMMWORD[336+rdx] + + vpclmulqdq xmm11,xmm2,xmm1,0x11 + vpclmulqdq xmm3,xmm2,xmm1,0x00 + vpclmulqdq xmm4,xmm2,xmm1,0x01 + vpclmulqdq xmm2,xmm2,xmm1,0x10 + vpxorq xmm2,xmm2,xmm4 + + vpsrldq xmm4,xmm2,8 + vpslldq xmm2,xmm2,8 + vpxorq xmm11,xmm11,xmm4 + vpxorq xmm2,xmm2,xmm3 + + + + vmovdqu64 xmm4,XMMWORD[POLY2] + + vpclmulqdq xmm3,xmm4,xmm2,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm2,xmm2,xmm3 + + + + vpclmulqdq xmm3,xmm4,xmm2,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm2,xmm4,xmm2,0x10 + vpslldq xmm2,xmm2,4 + + vpternlogq xmm2,xmm11,xmm3,0x96 + + vpshufb xmm2,xmm2,XMMWORD[SHUF_MASK] + jmp NEAR skip_iv_len_12_init_IV +iv_len_12_init_IV: + + vmovdqu8 xmm2,XMMWORD[ONEf] + mov r11,r8 + mov r10d,0x0000000000000fff + kmovq k1,r10 + vmovdqu8 xmm2{k1},[r11] +skip_iv_len_12_init_IV: + vmovdqu xmm1,xmm2 + + + mov r10d,DWORD[240+rcx] + cmp r10d,9 + je NEAR $L$aes_128_4 + cmp r10d,11 + je NEAR $L$aes_192_4 + cmp r10d,13 + je NEAR $L$aes_256_4 + jmp NEAR $L$exit_aes_4 +ALIGN 32 +$L$aes_128_4: + vpxorq xmm1,xmm1,XMMWORD[rcx] + + vaesenc xmm1,xmm1,XMMWORD[16+rcx] + + vaesenc xmm1,xmm1,XMMWORD[32+rcx] + + vaesenc xmm1,xmm1,XMMWORD[48+rcx] + + vaesenc xmm1,xmm1,XMMWORD[64+rcx] + + vaesenc xmm1,xmm1,XMMWORD[80+rcx] + + vaesenc xmm1,xmm1,XMMWORD[96+rcx] + + vaesenc xmm1,xmm1,XMMWORD[112+rcx] + + vaesenc xmm1,xmm1,XMMWORD[128+rcx] + + vaesenc xmm1,xmm1,XMMWORD[144+rcx] + + vaesenclast xmm1,xmm1,XMMWORD[160+rcx] + jmp NEAR $L$exit_aes_4 +ALIGN 32 +$L$aes_192_4: + vpxorq xmm1,xmm1,XMMWORD[rcx] + + vaesenc xmm1,xmm1,XMMWORD[16+rcx] + + vaesenc xmm1,xmm1,XMMWORD[32+rcx] + + vaesenc xmm1,xmm1,XMMWORD[48+rcx] + + vaesenc xmm1,xmm1,XMMWORD[64+rcx] + + vaesenc xmm1,xmm1,XMMWORD[80+rcx] + + vaesenc xmm1,xmm1,XMMWORD[96+rcx] + + vaesenc xmm1,xmm1,XMMWORD[112+rcx] + + vaesenc xmm1,xmm1,XMMWORD[128+rcx] + + vaesenc xmm1,xmm1,XMMWORD[144+rcx] + + vaesenc xmm1,xmm1,XMMWORD[160+rcx] + + vaesenc xmm1,xmm1,XMMWORD[176+rcx] + + vaesenclast xmm1,xmm1,XMMWORD[192+rcx] + jmp NEAR $L$exit_aes_4 +ALIGN 32 +$L$aes_256_4: + vpxorq xmm1,xmm1,XMMWORD[rcx] + + vaesenc xmm1,xmm1,XMMWORD[16+rcx] + + vaesenc xmm1,xmm1,XMMWORD[32+rcx] + + vaesenc xmm1,xmm1,XMMWORD[48+rcx] + + vaesenc xmm1,xmm1,XMMWORD[64+rcx] + + vaesenc xmm1,xmm1,XMMWORD[80+rcx] + + vaesenc xmm1,xmm1,XMMWORD[96+rcx] + + vaesenc xmm1,xmm1,XMMWORD[112+rcx] + + vaesenc xmm1,xmm1,XMMWORD[128+rcx] + + vaesenc xmm1,xmm1,XMMWORD[144+rcx] + + vaesenc xmm1,xmm1,XMMWORD[160+rcx] + + vaesenc xmm1,xmm1,XMMWORD[176+rcx] + + vaesenc xmm1,xmm1,XMMWORD[192+rcx] + + vaesenc xmm1,xmm1,XMMWORD[208+rcx] + + vaesenclast xmm1,xmm1,XMMWORD[224+rcx] + jmp NEAR $L$exit_aes_4 +$L$exit_aes_4: + + vmovdqu XMMWORD[32+rdx],xmm1 + + + vpshufb xmm2,xmm2,XMMWORD[SHUF_MASK] + vmovdqu XMMWORD[rdx],xmm2 + cmp r9,256 + jbe NEAR $L$skip_hkeys_cleanup_5 + vpxor xmm0,xmm0,xmm0 + vmovdqa64 ZMMWORD[rsp],zmm0 + vmovdqa64 ZMMWORD[64+rsp],zmm0 + vmovdqa64 ZMMWORD[128+rsp],zmm0 + vmovdqa64 ZMMWORD[192+rsp],zmm0 + vmovdqa64 ZMMWORD[256+rsp],zmm0 + vmovdqa64 ZMMWORD[320+rsp],zmm0 + vmovdqa64 ZMMWORD[384+rsp],zmm0 + vmovdqa64 ZMMWORD[448+rsp],zmm0 + vmovdqa64 ZMMWORD[512+rsp],zmm0 + vmovdqa64 ZMMWORD[576+rsp],zmm0 + vmovdqa64 ZMMWORD[640+rsp],zmm0 + vmovdqa64 ZMMWORD[704+rsp],zmm0 +$L$skip_hkeys_cleanup_5: + vzeroupper + vmovdqu xmm15,XMMWORD[((-16))+rbp] + vmovdqu xmm14,XMMWORD[((-32))+rbp] + vmovdqu xmm13,XMMWORD[((-48))+rbp] + vmovdqu xmm12,XMMWORD[((-64))+rbp] + vmovdqu xmm11,XMMWORD[((-80))+rbp] + vmovdqu xmm10,XMMWORD[((-96))+rbp] + vmovdqu xmm9,XMMWORD[((-112))+rbp] + vmovdqu xmm8,XMMWORD[((-128))+rbp] + vmovdqu xmm7,XMMWORD[((-144))+rbp] + vmovdqu xmm6,XMMWORD[((-160))+rbp] + lea rsp,[8+rbp] + pop rsi + + pop rdi + + pop r15 + + pop r14 + + pop r13 + + pop r12 + + pop rbp + + pop rbx + +$L$abort_setiv: + DB 0F3h,0C3h ;repret +$L$setiv_seh_end: + + +global ossl_aes_gcm_update_aad_avx512 + +ALIGN 32 +ossl_aes_gcm_update_aad_avx512: + +$L$ghash_seh_begin: +DB 243,15,30,250 + push rbx + +$L$ghash_seh_push_rbx: + push rbp + +$L$ghash_seh_push_rbp: + push r12 + +$L$ghash_seh_push_r12: + push r13 + +$L$ghash_seh_push_r13: + push r14 + +$L$ghash_seh_push_r14: + push r15 + +$L$ghash_seh_push_r15: + push rdi +$L$ghash_seh_push_rdi: + push rsi +$L$ghash_seh_push_rsi: + + sub rsp,168 +$L$ghash_seh_allocstack_xmm: + + + + + + + + + + + lea rbp,[160+rsp] + +$L$ghash_seh_setfp: + vmovdqu XMMWORD[rsp],xmm6 +$L$ghash_seh_save_xmm6: + vmovdqu XMMWORD[16+rsp],xmm7 +$L$ghash_seh_save_xmm7: + vmovdqu XMMWORD[32+rsp],xmm8 +$L$ghash_seh_save_xmm8: + vmovdqu XMMWORD[48+rsp],xmm9 +$L$ghash_seh_save_xmm9: + vmovdqu XMMWORD[64+rsp],xmm10 +$L$ghash_seh_save_xmm10: + vmovdqu XMMWORD[80+rsp],xmm11 +$L$ghash_seh_save_xmm11: + vmovdqu XMMWORD[96+rsp],xmm12 +$L$ghash_seh_save_xmm12: + vmovdqu XMMWORD[112+rsp],xmm13 +$L$ghash_seh_save_xmm13: + vmovdqu XMMWORD[128+rsp],xmm14 +$L$ghash_seh_save_xmm14: + vmovdqu XMMWORD[144+rsp],xmm15 +$L$ghash_seh_save_xmm15: + +$L$ghash_seh_prolog_end: + sub rsp,816 + and rsp,(-64) + vmovdqu64 xmm14,XMMWORD[64+rcx] + mov r10,rdx + mov r11,r8 + or r11,r11 + jz NEAR $L$_CALC_AAD_done_6 + + xor rbx,rbx + vmovdqa64 zmm16,ZMMWORD[SHUF_MASK] + +$L$_get_AAD_loop48x16_6: + cmp r11,768 + jl NEAR $L$_exit_AAD_loop48x16_6 + vmovdqu64 zmm11,ZMMWORD[r10] + vmovdqu64 zmm3,ZMMWORD[64+r10] + vmovdqu64 zmm4,ZMMWORD[128+r10] + vmovdqu64 zmm5,ZMMWORD[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + test rbx,rbx + jnz NEAR $L$_skip_hkeys_precomputation_7 + + vmovdqu64 zmm1,ZMMWORD[288+rcx] + vmovdqu64 ZMMWORD[704+rsp],zmm1 + + vmovdqu64 zmm9,ZMMWORD[224+rcx] + vmovdqu64 ZMMWORD[640+rsp],zmm9 + + + vshufi64x2 zmm9,zmm9,zmm9,0x00 + + vmovdqu64 zmm10,ZMMWORD[160+rcx] + vmovdqu64 ZMMWORD[576+rsp],zmm10 + + vmovdqu64 zmm12,ZMMWORD[96+rcx] + vmovdqu64 ZMMWORD[512+rsp],zmm12 + + vpclmulqdq zmm13,zmm10,zmm9,0x11 + vpclmulqdq zmm15,zmm10,zmm9,0x00 + vpclmulqdq zmm17,zmm10,zmm9,0x01 + vpclmulqdq zmm10,zmm10,zmm9,0x10 + vpxorq zmm10,zmm10,zmm17 + + vpsrldq zmm17,zmm10,8 + vpslldq zmm10,zmm10,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm10,zmm10,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm10,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm10,zmm10,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm10,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm10,zmm17,zmm10,0x10 + vpslldq zmm10,zmm10,4 + + vpternlogq zmm10,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm10 + + vpclmulqdq zmm13,zmm12,zmm9,0x11 + vpclmulqdq zmm15,zmm12,zmm9,0x00 + vpclmulqdq zmm17,zmm12,zmm9,0x01 + vpclmulqdq zmm12,zmm12,zmm9,0x10 + vpxorq zmm12,zmm12,zmm17 + + vpsrldq zmm17,zmm12,8 + vpslldq zmm12,zmm12,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm12,zmm12,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm12,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm12,zmm12,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm12,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm12,zmm17,zmm12,0x10 + vpslldq zmm12,zmm12,4 + + vpternlogq zmm12,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm12 + + vpclmulqdq zmm13,zmm10,zmm9,0x11 + vpclmulqdq zmm15,zmm10,zmm9,0x00 + vpclmulqdq zmm17,zmm10,zmm9,0x01 + vpclmulqdq zmm10,zmm10,zmm9,0x10 + vpxorq zmm10,zmm10,zmm17 + + vpsrldq zmm17,zmm10,8 + vpslldq zmm10,zmm10,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm10,zmm10,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm10,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm10,zmm10,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm10,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm10,zmm17,zmm10,0x10 + vpslldq zmm10,zmm10,4 + + vpternlogq zmm10,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm10 + + vpclmulqdq zmm13,zmm12,zmm9,0x11 + vpclmulqdq zmm15,zmm12,zmm9,0x00 + vpclmulqdq zmm17,zmm12,zmm9,0x01 + vpclmulqdq zmm12,zmm12,zmm9,0x10 + vpxorq zmm12,zmm12,zmm17 + + vpsrldq zmm17,zmm12,8 + vpslldq zmm12,zmm12,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm12,zmm12,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm12,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm12,zmm12,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm12,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm12,zmm17,zmm12,0x10 + vpslldq zmm12,zmm12,4 + + vpternlogq zmm12,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm12 + + vpclmulqdq zmm13,zmm10,zmm9,0x11 + vpclmulqdq zmm15,zmm10,zmm9,0x00 + vpclmulqdq zmm17,zmm10,zmm9,0x01 + vpclmulqdq zmm10,zmm10,zmm9,0x10 + vpxorq zmm10,zmm10,zmm17 + + vpsrldq zmm17,zmm10,8 + vpslldq zmm10,zmm10,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm10,zmm10,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm10,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm10,zmm10,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm10,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm10,zmm17,zmm10,0x10 + vpslldq zmm10,zmm10,4 + + vpternlogq zmm10,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[192+rsp],zmm10 + + vpclmulqdq zmm13,zmm12,zmm9,0x11 + vpclmulqdq zmm15,zmm12,zmm9,0x00 + vpclmulqdq zmm17,zmm12,zmm9,0x01 + vpclmulqdq zmm12,zmm12,zmm9,0x10 + vpxorq zmm12,zmm12,zmm17 + + vpsrldq zmm17,zmm12,8 + vpslldq zmm12,zmm12,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm12,zmm12,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm12,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm12,zmm12,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm12,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm12,zmm17,zmm12,0x10 + vpslldq zmm12,zmm12,4 + + vpternlogq zmm12,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[128+rsp],zmm12 + + vpclmulqdq zmm13,zmm10,zmm9,0x11 + vpclmulqdq zmm15,zmm10,zmm9,0x00 + vpclmulqdq zmm17,zmm10,zmm9,0x01 + vpclmulqdq zmm10,zmm10,zmm9,0x10 + vpxorq zmm10,zmm10,zmm17 + + vpsrldq zmm17,zmm10,8 + vpslldq zmm10,zmm10,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm10,zmm10,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm10,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm10,zmm10,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm10,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm10,zmm17,zmm10,0x10 + vpslldq zmm10,zmm10,4 + + vpternlogq zmm10,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[64+rsp],zmm10 + + vpclmulqdq zmm13,zmm12,zmm9,0x11 + vpclmulqdq zmm15,zmm12,zmm9,0x00 + vpclmulqdq zmm17,zmm12,zmm9,0x01 + vpclmulqdq zmm12,zmm12,zmm9,0x10 + vpxorq zmm12,zmm12,zmm17 + + vpsrldq zmm17,zmm12,8 + vpslldq zmm12,zmm12,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm12,zmm12,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm12,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm12,zmm12,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm12,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm12,zmm17,zmm12,0x10 + vpslldq zmm12,zmm12,4 + + vpternlogq zmm12,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[rsp],zmm12 +$L$_skip_hkeys_precomputation_7: + mov rbx,1 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm19,ZMMWORD[rsp] + vpclmulqdq zmm1,zmm11,zmm19,0x11 + vpclmulqdq zmm9,zmm11,zmm19,0x00 + vpclmulqdq zmm10,zmm11,zmm19,0x01 + vpclmulqdq zmm12,zmm11,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[64+rsp] + vpclmulqdq zmm13,zmm3,zmm19,0x11 + vpclmulqdq zmm15,zmm3,zmm19,0x00 + vpclmulqdq zmm17,zmm3,zmm19,0x01 + vpclmulqdq zmm18,zmm3,zmm19,0x10 + vpxorq zmm7,zmm10,zmm17 + vpxorq zmm6,zmm1,zmm13 + vpxorq zmm8,zmm9,zmm15 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm19,ZMMWORD[128+rsp] + vpclmulqdq zmm1,zmm4,zmm19,0x11 + vpclmulqdq zmm9,zmm4,zmm19,0x00 + vpclmulqdq zmm10,zmm4,zmm19,0x01 + vpclmulqdq zmm12,zmm4,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[192+rsp] + vpclmulqdq zmm13,zmm5,zmm19,0x11 + vpclmulqdq zmm15,zmm5,zmm19,0x00 + vpclmulqdq zmm17,zmm5,zmm19,0x01 + vpclmulqdq zmm18,zmm5,zmm19,0x10 + + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm11,ZMMWORD[256+r10] + vmovdqu64 zmm3,ZMMWORD[320+r10] + vmovdqu64 zmm4,ZMMWORD[384+r10] + vmovdqu64 zmm5,ZMMWORD[448+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + vmovdqu64 zmm19,ZMMWORD[256+rsp] + vpclmulqdq zmm1,zmm11,zmm19,0x11 + vpclmulqdq zmm9,zmm11,zmm19,0x00 + vpclmulqdq zmm10,zmm11,zmm19,0x01 + vpclmulqdq zmm12,zmm11,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[320+rsp] + vpclmulqdq zmm13,zmm3,zmm19,0x11 + vpclmulqdq zmm15,zmm3,zmm19,0x00 + vpclmulqdq zmm17,zmm3,zmm19,0x01 + vpclmulqdq zmm18,zmm3,zmm19,0x10 + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm19,ZMMWORD[384+rsp] + vpclmulqdq zmm1,zmm4,zmm19,0x11 + vpclmulqdq zmm9,zmm4,zmm19,0x00 + vpclmulqdq zmm10,zmm4,zmm19,0x01 + vpclmulqdq zmm12,zmm4,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[448+rsp] + vpclmulqdq zmm13,zmm5,zmm19,0x11 + vpclmulqdq zmm15,zmm5,zmm19,0x00 + vpclmulqdq zmm17,zmm5,zmm19,0x01 + vpclmulqdq zmm18,zmm5,zmm19,0x10 + + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm11,ZMMWORD[512+r10] + vmovdqu64 zmm3,ZMMWORD[576+r10] + vmovdqu64 zmm4,ZMMWORD[640+r10] + vmovdqu64 zmm5,ZMMWORD[704+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + vmovdqu64 zmm19,ZMMWORD[512+rsp] + vpclmulqdq zmm1,zmm11,zmm19,0x11 + vpclmulqdq zmm9,zmm11,zmm19,0x00 + vpclmulqdq zmm10,zmm11,zmm19,0x01 + vpclmulqdq zmm12,zmm11,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[576+rsp] + vpclmulqdq zmm13,zmm3,zmm19,0x11 + vpclmulqdq zmm15,zmm3,zmm19,0x00 + vpclmulqdq zmm17,zmm3,zmm19,0x01 + vpclmulqdq zmm18,zmm3,zmm19,0x10 + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm19,ZMMWORD[640+rsp] + vpclmulqdq zmm1,zmm4,zmm19,0x11 + vpclmulqdq zmm9,zmm4,zmm19,0x00 + vpclmulqdq zmm10,zmm4,zmm19,0x01 + vpclmulqdq zmm12,zmm4,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[704+rsp] + vpclmulqdq zmm13,zmm5,zmm19,0x11 + vpclmulqdq zmm15,zmm5,zmm19,0x00 + vpclmulqdq zmm17,zmm5,zmm19,0x01 + vpclmulqdq zmm18,zmm5,zmm19,0x10 + + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + + vpsrldq zmm1,zmm7,8 + vpslldq zmm9,zmm7,8 + vpxorq zmm6,zmm6,zmm1 + vpxorq zmm8,zmm8,zmm9 + vextracti64x4 ymm1,zmm6,1 + vpxorq ymm6,ymm6,ymm1 + vextracti32x4 xmm1,ymm6,1 + vpxorq xmm6,xmm6,xmm1 + vextracti64x4 ymm9,zmm8,1 + vpxorq ymm8,ymm8,ymm9 + vextracti32x4 xmm9,ymm8,1 + vpxorq xmm8,xmm8,xmm9 + vmovdqa64 xmm10,XMMWORD[POLY2] + + + vpclmulqdq xmm1,xmm10,xmm8,0x01 + vpslldq xmm1,xmm1,8 + vpxorq xmm1,xmm8,xmm1 + + + vpclmulqdq xmm9,xmm10,xmm1,0x00 + vpsrldq xmm9,xmm9,4 + vpclmulqdq xmm14,xmm10,xmm1,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm9,xmm6,0x96 + + sub r11,768 + je NEAR $L$_CALC_AAD_done_6 + + add r10,768 + jmp NEAR $L$_get_AAD_loop48x16_6 + +$L$_exit_AAD_loop48x16_6: + + cmp r11,512 + jl NEAR $L$_less_than_32x16_6 + + vmovdqu64 zmm11,ZMMWORD[r10] + vmovdqu64 zmm3,ZMMWORD[64+r10] + vmovdqu64 zmm4,ZMMWORD[128+r10] + vmovdqu64 zmm5,ZMMWORD[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + test rbx,rbx + jnz NEAR $L$_skip_hkeys_precomputation_8 + + vmovdqu64 zmm1,ZMMWORD[288+rcx] + vmovdqu64 ZMMWORD[704+rsp],zmm1 + + vmovdqu64 zmm9,ZMMWORD[224+rcx] + vmovdqu64 ZMMWORD[640+rsp],zmm9 + + + vshufi64x2 zmm9,zmm9,zmm9,0x00 + + vmovdqu64 zmm10,ZMMWORD[160+rcx] + vmovdqu64 ZMMWORD[576+rsp],zmm10 + + vmovdqu64 zmm12,ZMMWORD[96+rcx] + vmovdqu64 ZMMWORD[512+rsp],zmm12 + + vpclmulqdq zmm13,zmm10,zmm9,0x11 + vpclmulqdq zmm15,zmm10,zmm9,0x00 + vpclmulqdq zmm17,zmm10,zmm9,0x01 + vpclmulqdq zmm10,zmm10,zmm9,0x10 + vpxorq zmm10,zmm10,zmm17 + + vpsrldq zmm17,zmm10,8 + vpslldq zmm10,zmm10,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm10,zmm10,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm10,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm10,zmm10,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm10,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm10,zmm17,zmm10,0x10 + vpslldq zmm10,zmm10,4 + + vpternlogq zmm10,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm10 + + vpclmulqdq zmm13,zmm12,zmm9,0x11 + vpclmulqdq zmm15,zmm12,zmm9,0x00 + vpclmulqdq zmm17,zmm12,zmm9,0x01 + vpclmulqdq zmm12,zmm12,zmm9,0x10 + vpxorq zmm12,zmm12,zmm17 + + vpsrldq zmm17,zmm12,8 + vpslldq zmm12,zmm12,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm12,zmm12,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm12,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm12,zmm12,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm12,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm12,zmm17,zmm12,0x10 + vpslldq zmm12,zmm12,4 + + vpternlogq zmm12,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm12 + + vpclmulqdq zmm13,zmm10,zmm9,0x11 + vpclmulqdq zmm15,zmm10,zmm9,0x00 + vpclmulqdq zmm17,zmm10,zmm9,0x01 + vpclmulqdq zmm10,zmm10,zmm9,0x10 + vpxorq zmm10,zmm10,zmm17 + + vpsrldq zmm17,zmm10,8 + vpslldq zmm10,zmm10,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm10,zmm10,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm10,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm10,zmm10,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm10,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm10,zmm17,zmm10,0x10 + vpslldq zmm10,zmm10,4 + + vpternlogq zmm10,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm10 + + vpclmulqdq zmm13,zmm12,zmm9,0x11 + vpclmulqdq zmm15,zmm12,zmm9,0x00 + vpclmulqdq zmm17,zmm12,zmm9,0x01 + vpclmulqdq zmm12,zmm12,zmm9,0x10 + vpxorq zmm12,zmm12,zmm17 + + vpsrldq zmm17,zmm12,8 + vpslldq zmm12,zmm12,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm12,zmm12,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm12,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm12,zmm12,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm12,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm12,zmm17,zmm12,0x10 + vpslldq zmm12,zmm12,4 + + vpternlogq zmm12,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm12 +$L$_skip_hkeys_precomputation_8: + mov rbx,1 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm19,ZMMWORD[256+rsp] + vpclmulqdq zmm1,zmm11,zmm19,0x11 + vpclmulqdq zmm9,zmm11,zmm19,0x00 + vpclmulqdq zmm10,zmm11,zmm19,0x01 + vpclmulqdq zmm12,zmm11,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[320+rsp] + vpclmulqdq zmm13,zmm3,zmm19,0x11 + vpclmulqdq zmm15,zmm3,zmm19,0x00 + vpclmulqdq zmm17,zmm3,zmm19,0x01 + vpclmulqdq zmm18,zmm3,zmm19,0x10 + vpxorq zmm7,zmm10,zmm17 + vpxorq zmm6,zmm1,zmm13 + vpxorq zmm8,zmm9,zmm15 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm19,ZMMWORD[384+rsp] + vpclmulqdq zmm1,zmm4,zmm19,0x11 + vpclmulqdq zmm9,zmm4,zmm19,0x00 + vpclmulqdq zmm10,zmm4,zmm19,0x01 + vpclmulqdq zmm12,zmm4,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[448+rsp] + vpclmulqdq zmm13,zmm5,zmm19,0x11 + vpclmulqdq zmm15,zmm5,zmm19,0x00 + vpclmulqdq zmm17,zmm5,zmm19,0x01 + vpclmulqdq zmm18,zmm5,zmm19,0x10 + + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm11,ZMMWORD[256+r10] + vmovdqu64 zmm3,ZMMWORD[320+r10] + vmovdqu64 zmm4,ZMMWORD[384+r10] + vmovdqu64 zmm5,ZMMWORD[448+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + vmovdqu64 zmm19,ZMMWORD[512+rsp] + vpclmulqdq zmm1,zmm11,zmm19,0x11 + vpclmulqdq zmm9,zmm11,zmm19,0x00 + vpclmulqdq zmm10,zmm11,zmm19,0x01 + vpclmulqdq zmm12,zmm11,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[576+rsp] + vpclmulqdq zmm13,zmm3,zmm19,0x11 + vpclmulqdq zmm15,zmm3,zmm19,0x00 + vpclmulqdq zmm17,zmm3,zmm19,0x01 + vpclmulqdq zmm18,zmm3,zmm19,0x10 + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm19,ZMMWORD[640+rsp] + vpclmulqdq zmm1,zmm4,zmm19,0x11 + vpclmulqdq zmm9,zmm4,zmm19,0x00 + vpclmulqdq zmm10,zmm4,zmm19,0x01 + vpclmulqdq zmm12,zmm4,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[704+rsp] + vpclmulqdq zmm13,zmm5,zmm19,0x11 + vpclmulqdq zmm15,zmm5,zmm19,0x00 + vpclmulqdq zmm17,zmm5,zmm19,0x01 + vpclmulqdq zmm18,zmm5,zmm19,0x10 + + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + + vpsrldq zmm1,zmm7,8 + vpslldq zmm9,zmm7,8 + vpxorq zmm6,zmm6,zmm1 + vpxorq zmm8,zmm8,zmm9 + vextracti64x4 ymm1,zmm6,1 + vpxorq ymm6,ymm6,ymm1 + vextracti32x4 xmm1,ymm6,1 + vpxorq xmm6,xmm6,xmm1 + vextracti64x4 ymm9,zmm8,1 + vpxorq ymm8,ymm8,ymm9 + vextracti32x4 xmm9,ymm8,1 + vpxorq xmm8,xmm8,xmm9 + vmovdqa64 xmm10,XMMWORD[POLY2] + + + vpclmulqdq xmm1,xmm10,xmm8,0x01 + vpslldq xmm1,xmm1,8 + vpxorq xmm1,xmm8,xmm1 + + + vpclmulqdq xmm9,xmm10,xmm1,0x00 + vpsrldq xmm9,xmm9,4 + vpclmulqdq xmm14,xmm10,xmm1,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm9,xmm6,0x96 + + sub r11,512 + je NEAR $L$_CALC_AAD_done_6 + + add r10,512 + jmp NEAR $L$_less_than_16x16_6 + +$L$_less_than_32x16_6: + cmp r11,256 + jl NEAR $L$_less_than_16x16_6 + + vmovdqu64 zmm11,ZMMWORD[r10] + vmovdqu64 zmm3,ZMMWORD[64+r10] + vmovdqu64 zmm4,ZMMWORD[128+r10] + vmovdqu64 zmm5,ZMMWORD[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm19,ZMMWORD[96+rcx] + vpclmulqdq zmm1,zmm11,zmm19,0x11 + vpclmulqdq zmm9,zmm11,zmm19,0x00 + vpclmulqdq zmm10,zmm11,zmm19,0x01 + vpclmulqdq zmm12,zmm11,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[160+rcx] + vpclmulqdq zmm13,zmm3,zmm19,0x11 + vpclmulqdq zmm15,zmm3,zmm19,0x00 + vpclmulqdq zmm17,zmm3,zmm19,0x01 + vpclmulqdq zmm18,zmm3,zmm19,0x10 + vpxorq zmm7,zmm10,zmm17 + vpxorq zmm6,zmm1,zmm13 + vpxorq zmm8,zmm9,zmm15 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm19,ZMMWORD[224+rcx] + vpclmulqdq zmm1,zmm4,zmm19,0x11 + vpclmulqdq zmm9,zmm4,zmm19,0x00 + vpclmulqdq zmm10,zmm4,zmm19,0x01 + vpclmulqdq zmm12,zmm4,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[288+rcx] + vpclmulqdq zmm13,zmm5,zmm19,0x11 + vpclmulqdq zmm15,zmm5,zmm19,0x00 + vpclmulqdq zmm17,zmm5,zmm19,0x01 + vpclmulqdq zmm18,zmm5,zmm19,0x10 + + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + + vpsrldq zmm1,zmm7,8 + vpslldq zmm9,zmm7,8 + vpxorq zmm6,zmm6,zmm1 + vpxorq zmm8,zmm8,zmm9 + vextracti64x4 ymm1,zmm6,1 + vpxorq ymm6,ymm6,ymm1 + vextracti32x4 xmm1,ymm6,1 + vpxorq xmm6,xmm6,xmm1 + vextracti64x4 ymm9,zmm8,1 + vpxorq ymm8,ymm8,ymm9 + vextracti32x4 xmm9,ymm8,1 + vpxorq xmm8,xmm8,xmm9 + vmovdqa64 xmm10,XMMWORD[POLY2] + + + vpclmulqdq xmm1,xmm10,xmm8,0x01 + vpslldq xmm1,xmm1,8 + vpxorq xmm1,xmm8,xmm1 + + + vpclmulqdq xmm9,xmm10,xmm1,0x00 + vpsrldq xmm9,xmm9,4 + vpclmulqdq xmm14,xmm10,xmm1,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm9,xmm6,0x96 + + sub r11,256 + je NEAR $L$_CALC_AAD_done_6 + + add r10,256 + +$L$_less_than_16x16_6: + + lea r12,[byte64_len_to_mask_table] + lea r12,[r11*8+r12] + + + add r11d,15 + shr r11d,4 + cmp r11d,2 + jb NEAR $L$_AAD_blocks_1_6 + je NEAR $L$_AAD_blocks_2_6 + cmp r11d,4 + jb NEAR $L$_AAD_blocks_3_6 + je NEAR $L$_AAD_blocks_4_6 + cmp r11d,6 + jb NEAR $L$_AAD_blocks_5_6 + je NEAR $L$_AAD_blocks_6_6 + cmp r11d,8 + jb NEAR $L$_AAD_blocks_7_6 + je NEAR $L$_AAD_blocks_8_6 + cmp r11d,10 + jb NEAR $L$_AAD_blocks_9_6 + je NEAR $L$_AAD_blocks_10_6 + cmp r11d,12 + jb NEAR $L$_AAD_blocks_11_6 + je NEAR $L$_AAD_blocks_12_6 + cmp r11d,14 + jb NEAR $L$_AAD_blocks_13_6 + je NEAR $L$_AAD_blocks_14_6 + cmp r11d,15 + je NEAR $L$_AAD_blocks_15_6 +$L$_AAD_blocks_16_6: + sub r12,1536 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 zmm4,ZMMWORD[128+r10] + vmovdqu8 zmm5{k1}{z},[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm15,ZMMWORD[96+rcx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[160+rcx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[224+rcx] + vpclmulqdq zmm11,zmm4,zmm15,0x11 + vpclmulqdq zmm3,zmm4,zmm15,0x00 + vpternlogq zmm1,zmm11,zmm9,0x96 + vpternlogq zmm6,zmm3,zmm10,0x96 + vpclmulqdq zmm11,zmm4,zmm15,0x01 + vpclmulqdq zmm3,zmm4,zmm15,0x10 + vpternlogq zmm7,zmm11,zmm12,0x96 + vpternlogq zmm8,zmm3,zmm13,0x96 + vmovdqu64 zmm15,ZMMWORD[288+rcx] + vpclmulqdq zmm9,zmm5,zmm15,0x11 + vpclmulqdq zmm10,zmm5,zmm15,0x00 + vpclmulqdq zmm12,zmm5,zmm15,0x01 + vpclmulqdq zmm13,zmm5,zmm15,0x10 + vpxorq zmm9,zmm1,zmm9 + vpxorq zmm10,zmm6,zmm10 + vpxorq zmm12,zmm7,zmm12 + vpxorq zmm13,zmm8,zmm13 + + vpxorq zmm12,zmm12,zmm13 + vpsrldq zmm7,zmm12,8 + vpslldq zmm8,zmm12,8 + vpxorq zmm1,zmm9,zmm7 + vpxorq zmm6,zmm10,zmm8 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_15_6: + sub r12,1536 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 zmm4,ZMMWORD[128+r10] + vmovdqu8 zmm5{k1}{z},[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm15,ZMMWORD[112+rcx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[176+rcx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[240+rcx] + vpclmulqdq zmm11,zmm4,zmm15,0x11 + vpclmulqdq zmm3,zmm4,zmm15,0x00 + vpternlogq zmm9,zmm11,zmm1,0x96 + vpternlogq zmm10,zmm3,zmm6,0x96 + vpclmulqdq zmm11,zmm4,zmm15,0x01 + vpclmulqdq zmm3,zmm4,zmm15,0x10 + vpternlogq zmm12,zmm11,zmm7,0x96 + vpternlogq zmm13,zmm3,zmm8,0x96 + vmovdqu64 ymm15,YMMWORD[304+rcx] + vinserti64x2 zmm15,zmm15,ZMMWORD[336+rcx],2 + vpclmulqdq zmm7,zmm5,zmm15,0x01 + vpclmulqdq zmm8,zmm5,zmm15,0x10 + vpclmulqdq zmm1,zmm5,zmm15,0x11 + vpclmulqdq zmm6,zmm5,zmm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_14_6: + sub r12,1536 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 zmm4,ZMMWORD[128+r10] + vmovdqu8 ymm5{k1}{z},[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb ymm5,ymm5,ymm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm15,ZMMWORD[128+rcx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[192+rcx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[256+rcx] + vpclmulqdq zmm11,zmm4,zmm15,0x11 + vpclmulqdq zmm3,zmm4,zmm15,0x00 + vpternlogq zmm9,zmm11,zmm1,0x96 + vpternlogq zmm10,zmm3,zmm6,0x96 + vpclmulqdq zmm11,zmm4,zmm15,0x01 + vpclmulqdq zmm3,zmm4,zmm15,0x10 + vpternlogq zmm12,zmm11,zmm7,0x96 + vpternlogq zmm13,zmm3,zmm8,0x96 + vmovdqu64 ymm15,YMMWORD[320+rcx] + vpclmulqdq ymm7,ymm5,ymm15,0x01 + vpclmulqdq ymm8,ymm5,ymm15,0x10 + vpclmulqdq ymm1,ymm5,ymm15,0x11 + vpclmulqdq ymm6,ymm5,ymm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_13_6: + sub r12,1536 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 zmm4,ZMMWORD[128+r10] + vmovdqu8 xmm5{k1}{z},[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb xmm5,xmm5,xmm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm15,ZMMWORD[144+rcx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[208+rcx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[272+rcx] + vpclmulqdq zmm11,zmm4,zmm15,0x11 + vpclmulqdq zmm3,zmm4,zmm15,0x00 + vpternlogq zmm9,zmm11,zmm1,0x96 + vpternlogq zmm10,zmm3,zmm6,0x96 + vpclmulqdq zmm11,zmm4,zmm15,0x01 + vpclmulqdq zmm3,zmm4,zmm15,0x10 + vpternlogq zmm12,zmm11,zmm7,0x96 + vpternlogq zmm13,zmm3,zmm8,0x96 + vmovdqu64 xmm15,XMMWORD[336+rcx] + vpclmulqdq xmm7,xmm5,xmm15,0x01 + vpclmulqdq xmm8,xmm5,xmm15,0x10 + vpclmulqdq xmm1,xmm5,xmm15,0x11 + vpclmulqdq xmm6,xmm5,xmm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_12_6: + sub r12,1024 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 zmm4{k1}{z},[128+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm15,ZMMWORD[160+rcx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[224+rcx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[288+rcx] + vpclmulqdq zmm11,zmm4,zmm15,0x11 + vpclmulqdq zmm3,zmm4,zmm15,0x00 + vpternlogq zmm9,zmm11,zmm1,0x96 + vpternlogq zmm10,zmm3,zmm6,0x96 + vpclmulqdq zmm11,zmm4,zmm15,0x01 + vpclmulqdq zmm3,zmm4,zmm15,0x10 + vpternlogq zmm12,zmm11,zmm7,0x96 + vpternlogq zmm13,zmm3,zmm8,0x96 + + vpxorq zmm12,zmm12,zmm13 + vpsrldq zmm7,zmm12,8 + vpslldq zmm8,zmm12,8 + vpxorq zmm1,zmm9,zmm7 + vpxorq zmm6,zmm10,zmm8 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_11_6: + sub r12,1024 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 zmm4{k1}{z},[128+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm15,ZMMWORD[176+rcx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[240+rcx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vpxorq zmm9,zmm1,zmm9 + vpxorq zmm10,zmm6,zmm10 + vpxorq zmm12,zmm7,zmm12 + vpxorq zmm13,zmm8,zmm13 + vmovdqu64 ymm15,YMMWORD[304+rcx] + vinserti64x2 zmm15,zmm15,ZMMWORD[336+rcx],2 + vpclmulqdq zmm7,zmm4,zmm15,0x01 + vpclmulqdq zmm8,zmm4,zmm15,0x10 + vpclmulqdq zmm1,zmm4,zmm15,0x11 + vpclmulqdq zmm6,zmm4,zmm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_10_6: + sub r12,1024 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 ymm4{k1}{z},[128+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb ymm4,ymm4,ymm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm15,ZMMWORD[192+rcx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[256+rcx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vpxorq zmm9,zmm1,zmm9 + vpxorq zmm10,zmm6,zmm10 + vpxorq zmm12,zmm7,zmm12 + vpxorq zmm13,zmm8,zmm13 + vmovdqu64 ymm15,YMMWORD[320+rcx] + vpclmulqdq ymm7,ymm4,ymm15,0x01 + vpclmulqdq ymm8,ymm4,ymm15,0x10 + vpclmulqdq ymm1,ymm4,ymm15,0x11 + vpclmulqdq ymm6,ymm4,ymm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_9_6: + sub r12,1024 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 xmm4{k1}{z},[128+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb xmm4,xmm4,xmm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm15,ZMMWORD[208+rcx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[272+rcx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vpxorq zmm9,zmm1,zmm9 + vpxorq zmm10,zmm6,zmm10 + vpxorq zmm12,zmm7,zmm12 + vpxorq zmm13,zmm8,zmm13 + vmovdqu64 xmm15,XMMWORD[336+rcx] + vpclmulqdq xmm7,xmm4,xmm15,0x01 + vpclmulqdq xmm8,xmm4,xmm15,0x10 + vpclmulqdq xmm1,xmm4,xmm15,0x11 + vpclmulqdq xmm6,xmm4,xmm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_8_6: + sub r12,512 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3{k1}{z},[64+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm15,ZMMWORD[224+rcx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[288+rcx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vpxorq zmm9,zmm1,zmm9 + vpxorq zmm10,zmm6,zmm10 + vpxorq zmm12,zmm7,zmm12 + vpxorq zmm13,zmm8,zmm13 + + vpxorq zmm12,zmm12,zmm13 + vpsrldq zmm7,zmm12,8 + vpslldq zmm8,zmm12,8 + vpxorq zmm1,zmm9,zmm7 + vpxorq zmm6,zmm10,zmm8 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_7_6: + sub r12,512 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3{k1}{z},[64+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm15,ZMMWORD[240+rcx] + vpclmulqdq zmm9,zmm11,zmm15,0x11 + vpclmulqdq zmm10,zmm11,zmm15,0x00 + vpclmulqdq zmm12,zmm11,zmm15,0x01 + vpclmulqdq zmm13,zmm11,zmm15,0x10 + vmovdqu64 ymm15,YMMWORD[304+rcx] + vinserti64x2 zmm15,zmm15,ZMMWORD[336+rcx],2 + vpclmulqdq zmm7,zmm3,zmm15,0x01 + vpclmulqdq zmm8,zmm3,zmm15,0x10 + vpclmulqdq zmm1,zmm3,zmm15,0x11 + vpclmulqdq zmm6,zmm3,zmm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_6_6: + sub r12,512 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 ymm3{k1}{z},[64+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb ymm3,ymm3,ymm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm15,ZMMWORD[256+rcx] + vpclmulqdq zmm9,zmm11,zmm15,0x11 + vpclmulqdq zmm10,zmm11,zmm15,0x00 + vpclmulqdq zmm12,zmm11,zmm15,0x01 + vpclmulqdq zmm13,zmm11,zmm15,0x10 + vmovdqu64 ymm15,YMMWORD[320+rcx] + vpclmulqdq ymm7,ymm3,ymm15,0x01 + vpclmulqdq ymm8,ymm3,ymm15,0x10 + vpclmulqdq ymm1,ymm3,ymm15,0x11 + vpclmulqdq ymm6,ymm3,ymm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_5_6: + sub r12,512 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 xmm3{k1}{z},[64+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb xmm3,xmm3,xmm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm15,ZMMWORD[272+rcx] + vpclmulqdq zmm9,zmm11,zmm15,0x11 + vpclmulqdq zmm10,zmm11,zmm15,0x00 + vpclmulqdq zmm12,zmm11,zmm15,0x01 + vpclmulqdq zmm13,zmm11,zmm15,0x10 + vmovdqu64 xmm15,XMMWORD[336+rcx] + vpclmulqdq xmm7,xmm3,xmm15,0x01 + vpclmulqdq xmm8,xmm3,xmm15,0x10 + vpclmulqdq xmm1,xmm3,xmm15,0x11 + vpclmulqdq xmm6,xmm3,xmm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_4_6: + kmovq k1,[r12] + vmovdqu8 zmm11{k1}{z},[r10] + vpshufb zmm11,zmm11,zmm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm15,ZMMWORD[288+rcx] + vpclmulqdq zmm9,zmm11,zmm15,0x11 + vpclmulqdq zmm10,zmm11,zmm15,0x00 + vpclmulqdq zmm12,zmm11,zmm15,0x01 + vpclmulqdq zmm13,zmm11,zmm15,0x10 + + vpxorq zmm12,zmm12,zmm13 + vpsrldq zmm7,zmm12,8 + vpslldq zmm8,zmm12,8 + vpxorq zmm1,zmm9,zmm7 + vpxorq zmm6,zmm10,zmm8 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_3_6: + kmovq k1,[r12] + vmovdqu8 zmm11{k1}{z},[r10] + vpshufb zmm11,zmm11,zmm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 ymm15,YMMWORD[304+rcx] + vinserti64x2 zmm15,zmm15,ZMMWORD[336+rcx],2 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_2_6: + kmovq k1,[r12] + vmovdqu8 ymm11{k1}{z},[r10] + vpshufb ymm11,ymm11,ymm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 ymm15,YMMWORD[320+rcx] + vpclmulqdq ymm7,ymm11,ymm15,0x01 + vpclmulqdq ymm8,ymm11,ymm15,0x10 + vpclmulqdq ymm1,ymm11,ymm15,0x11 + vpclmulqdq ymm6,ymm11,ymm15,0x00 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_1_6: + kmovq k1,[r12] + vmovdqu8 xmm11{k1}{z},[r10] + vpshufb xmm11,xmm11,xmm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 xmm15,XMMWORD[336+rcx] + vpclmulqdq xmm7,xmm11,xmm15,0x01 + vpclmulqdq xmm8,xmm11,xmm15,0x10 + vpclmulqdq xmm1,xmm11,xmm15,0x11 + vpclmulqdq xmm6,xmm11,xmm15,0x00 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + +$L$_CALC_AAD_done_6: + vmovdqu64 XMMWORD[64+rcx],xmm14 + cmp r8,256 + jbe NEAR $L$skip_hkeys_cleanup_9 + vpxor xmm0,xmm0,xmm0 + vmovdqa64 ZMMWORD[rsp],zmm0 + vmovdqa64 ZMMWORD[64+rsp],zmm0 + vmovdqa64 ZMMWORD[128+rsp],zmm0 + vmovdqa64 ZMMWORD[192+rsp],zmm0 + vmovdqa64 ZMMWORD[256+rsp],zmm0 + vmovdqa64 ZMMWORD[320+rsp],zmm0 + vmovdqa64 ZMMWORD[384+rsp],zmm0 + vmovdqa64 ZMMWORD[448+rsp],zmm0 + vmovdqa64 ZMMWORD[512+rsp],zmm0 + vmovdqa64 ZMMWORD[576+rsp],zmm0 + vmovdqa64 ZMMWORD[640+rsp],zmm0 + vmovdqa64 ZMMWORD[704+rsp],zmm0 +$L$skip_hkeys_cleanup_9: + vzeroupper + vmovdqu xmm15,XMMWORD[((-16))+rbp] + vmovdqu xmm14,XMMWORD[((-32))+rbp] + vmovdqu xmm13,XMMWORD[((-48))+rbp] + vmovdqu xmm12,XMMWORD[((-64))+rbp] + vmovdqu xmm11,XMMWORD[((-80))+rbp] + vmovdqu xmm10,XMMWORD[((-96))+rbp] + vmovdqu xmm9,XMMWORD[((-112))+rbp] + vmovdqu xmm8,XMMWORD[((-128))+rbp] + vmovdqu xmm7,XMMWORD[((-144))+rbp] + vmovdqu xmm6,XMMWORD[((-160))+rbp] + lea rsp,[8+rbp] + pop rsi + + pop rdi + + pop r15 + + pop r14 + + pop r13 + + pop r12 + + pop rbp + + pop rbx + +$L$exit_update_aad: + DB 0F3h,0C3h ;repret +$L$ghash_seh_end: + + +global ossl_aes_gcm_encrypt_avx512 + +ALIGN 32 +ossl_aes_gcm_encrypt_avx512: + +$L$encrypt_seh_begin: +DB 243,15,30,250 + push rbx + +$L$encrypt_seh_push_rbx: + push rbp + +$L$encrypt_seh_push_rbp: + push r12 + +$L$encrypt_seh_push_r12: + push r13 + +$L$encrypt_seh_push_r13: + push r14 + +$L$encrypt_seh_push_r14: + push r15 + +$L$encrypt_seh_push_r15: + push rdi +$L$encrypt_seh_push_rdi: + push rsi +$L$encrypt_seh_push_rsi: + + sub rsp,168 +$L$encrypt_seh_allocstack_xmm: + + + + + + + + + + + lea rbp,[160+rsp] + +$L$encrypt_seh_setfp: + vmovdqu XMMWORD[rsp],xmm6 +$L$encrypt_seh_save_xmm6: + vmovdqu XMMWORD[16+rsp],xmm7 +$L$encrypt_seh_save_xmm7: + vmovdqu XMMWORD[32+rsp],xmm8 +$L$encrypt_seh_save_xmm8: + vmovdqu XMMWORD[48+rsp],xmm9 +$L$encrypt_seh_save_xmm9: + vmovdqu XMMWORD[64+rsp],xmm10 +$L$encrypt_seh_save_xmm10: + vmovdqu XMMWORD[80+rsp],xmm11 +$L$encrypt_seh_save_xmm11: + vmovdqu XMMWORD[96+rsp],xmm12 +$L$encrypt_seh_save_xmm12: + vmovdqu XMMWORD[112+rsp],xmm13 +$L$encrypt_seh_save_xmm13: + vmovdqu XMMWORD[128+rsp],xmm14 +$L$encrypt_seh_save_xmm14: + vmovdqu XMMWORD[144+rsp],xmm15 +$L$encrypt_seh_save_xmm15: + +$L$encrypt_seh_prolog_end: + sub rsp,1584 + and rsp,(-64) + + + mov eax,DWORD[240+rcx] + cmp eax,9 + je NEAR $L$aes_gcm_encrypt_128_avx512 + cmp eax,11 + je NEAR $L$aes_gcm_encrypt_192_avx512 + cmp eax,13 + je NEAR $L$aes_gcm_encrypt_256_avx512 + xor eax,eax + jmp NEAR $L$exit_gcm_encrypt +ALIGN 32 +$L$aes_gcm_encrypt_128_avx512: + cmp QWORD[112+rbp],0 + je NEAR $L$_enc_dec_done_10 + xor r14,r14 + vmovdqu64 xmm14,XMMWORD[64+rdx] + + mov r11,QWORD[r8] + or r11,r11 + je NEAR $L$_partial_block_done_11 + mov r10d,16 + lea r12,[byte_len_to_mask_table] + cmp QWORD[112+rbp],r10 + cmovc r10,QWORD[112+rbp] + add r12,r10 + add r12,r10 + kmovw k1,[r12] + vmovdqu8 xmm0{k1}{z},[r9] + + vmovdqu64 xmm3,XMMWORD[16+rdx] + vmovdqu64 xmm4,XMMWORD[336+rdx] + + + + lea r12,[SHIFT_MASK] + add r12,r11 + vmovdqu64 xmm5,XMMWORD[r12] + vpshufb xmm3,xmm3,xmm5 + vpxorq xmm3,xmm3,xmm0 + + + mov r13,QWORD[112+rbp] + add r13,r11 + sub r13,16 + jge NEAR $L$_no_extra_mask_11 + sub r12,r13 +$L$_no_extra_mask_11: + + + + vmovdqu64 xmm0,XMMWORD[16+r12] + vpand xmm3,xmm3,xmm0 + vpshufb xmm3,xmm3,XMMWORD[SHUF_MASK] + vpshufb xmm3,xmm3,xmm5 + vpxorq xmm14,xmm14,xmm3 + cmp r13,0 + jl NEAR $L$_partial_incomplete_11 + + vpclmulqdq xmm7,xmm14,xmm4,0x11 + vpclmulqdq xmm10,xmm14,xmm4,0x00 + vpclmulqdq xmm11,xmm14,xmm4,0x01 + vpclmulqdq xmm14,xmm14,xmm4,0x10 + vpxorq xmm14,xmm14,xmm11 + + vpsrldq xmm11,xmm14,8 + vpslldq xmm14,xmm14,8 + vpxorq xmm7,xmm7,xmm11 + vpxorq xmm14,xmm14,xmm10 + + + + vmovdqu64 xmm11,XMMWORD[POLY2] + + vpclmulqdq xmm10,xmm11,xmm14,0x01 + vpslldq xmm10,xmm10,8 + vpxorq xmm14,xmm14,xmm10 + + + + vpclmulqdq xmm10,xmm11,xmm14,0x00 + vpsrldq xmm10,xmm10,4 + vpclmulqdq xmm14,xmm11,xmm14,0x10 + vpslldq xmm14,xmm14,4 + + vpternlogq xmm14,xmm7,xmm10,0x96 + + mov QWORD[r8],0 + + mov r12,r11 + mov r11,16 + sub r11,r12 + jmp NEAR $L$_enc_dec_done_11 + +$L$_partial_incomplete_11: + mov r12,QWORD[112+rbp] + add QWORD[r8],r12 + mov r11,QWORD[112+rbp] + +$L$_enc_dec_done_11: + + + lea r12,[byte_len_to_mask_table] + kmovw k1,[r11*2+r12] + vmovdqu64 XMMWORD[64+rdx],xmm14 + + vpshufb xmm3,xmm3,XMMWORD[SHUF_MASK] + vpshufb xmm3,xmm3,xmm5 + mov r12,QWORD[120+rbp] + vmovdqu8 XMMWORD[r12]{k1},xmm3 +$L$_partial_block_done_11: + vmovdqu64 xmm2,XMMWORD[rdx] + mov r13,QWORD[112+rbp] + sub r13,r11 + je NEAR $L$_enc_dec_done_10 + cmp r13,256 + jbe NEAR $L$_message_below_equal_16_blocks_10 + + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vmovdqa64 zmm27,ZMMWORD[ddq_addbe_4444] + vmovdqa64 zmm28,ZMMWORD[ddq_addbe_1234] + + + + + + + vmovd r15d,xmm2 + and r15d,255 + + vshufi64x2 zmm2,zmm2,zmm2,0 + vpshufb zmm2,zmm2,zmm29 + + + + cmp r15b,240 + jae NEAR $L$_next_16_overflow_12 + vpaddd zmm7,zmm2,zmm28 + vpaddd zmm10,zmm7,zmm27 + vpaddd zmm11,zmm10,zmm27 + vpaddd zmm12,zmm11,zmm27 + jmp NEAR $L$_next_16_ok_12 +$L$_next_16_overflow_12: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm12,ZMMWORD[ddq_add_4444] + vpaddd zmm7,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm10,zmm7,zmm12 + vpaddd zmm11,zmm10,zmm12 + vpaddd zmm12,zmm11,zmm12 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 +$L$_next_16_ok_12: + vshufi64x2 zmm2,zmm12,zmm12,255 + add r15b,16 + + vmovdqu8 zmm0,ZMMWORD[r11*1+r9] + vmovdqu8 zmm3,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm4,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm5,ZMMWORD[192+r11*1+r9] + + + vbroadcastf64x2 zmm6,ZMMWORD[rcx] + vpxorq zmm7,zmm7,zmm6 + vpxorq zmm10,zmm10,zmm6 + vpxorq zmm11,zmm11,zmm6 + vpxorq zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[16+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[32+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[48+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[64+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[80+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[96+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[112+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[128+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[144+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[160+rcx] + vaesenclast zmm7,zmm7,zmm6 + vaesenclast zmm10,zmm10,zmm6 + vaesenclast zmm11,zmm11,zmm6 + vaesenclast zmm12,zmm12,zmm6 + + + vpxorq zmm7,zmm7,zmm0 + vpxorq zmm10,zmm10,zmm3 + vpxorq zmm11,zmm11,zmm4 + vpxorq zmm12,zmm12,zmm5 + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm7 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm10 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm11 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm12 + + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm7 + vmovdqa64 ZMMWORD[832+rsp],zmm10 + vmovdqa64 ZMMWORD[896+rsp],zmm11 + vmovdqa64 ZMMWORD[960+rsp],zmm12 + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_13 + + vmovdqu64 zmm0,ZMMWORD[288+rdx] + vmovdqu64 ZMMWORD[704+rsp],zmm0 + + vmovdqu64 zmm3,ZMMWORD[224+rdx] + vmovdqu64 ZMMWORD[640+rsp],zmm3 + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[160+rdx] + vmovdqu64 ZMMWORD[576+rsp],zmm4 + + vmovdqu64 zmm5,ZMMWORD[96+rdx] + vmovdqu64 ZMMWORD[512+rsp],zmm5 +$L$_skip_hkeys_precomputation_13: + cmp r13,512 + jb NEAR $L$_message_below_32_blocks_10 + + + + cmp r15b,240 + jae NEAR $L$_next_16_overflow_14 + vpaddd zmm7,zmm2,zmm28 + vpaddd zmm10,zmm7,zmm27 + vpaddd zmm11,zmm10,zmm27 + vpaddd zmm12,zmm11,zmm27 + jmp NEAR $L$_next_16_ok_14 +$L$_next_16_overflow_14: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm12,ZMMWORD[ddq_add_4444] + vpaddd zmm7,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm10,zmm7,zmm12 + vpaddd zmm11,zmm10,zmm12 + vpaddd zmm12,zmm11,zmm12 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 +$L$_next_16_ok_14: + vshufi64x2 zmm2,zmm12,zmm12,255 + add r15b,16 + + vmovdqu8 zmm0,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm3,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm4,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm5,ZMMWORD[448+r11*1+r9] + + + vbroadcastf64x2 zmm6,ZMMWORD[rcx] + vpxorq zmm7,zmm7,zmm6 + vpxorq zmm10,zmm10,zmm6 + vpxorq zmm11,zmm11,zmm6 + vpxorq zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[16+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[32+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[48+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[64+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[80+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[96+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[112+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[128+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[144+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[160+rcx] + vaesenclast zmm7,zmm7,zmm6 + vaesenclast zmm10,zmm10,zmm6 + vaesenclast zmm11,zmm11,zmm6 + vaesenclast zmm12,zmm12,zmm6 + + + vpxorq zmm7,zmm7,zmm0 + vpxorq zmm10,zmm10,zmm3 + vpxorq zmm11,zmm11,zmm4 + vpxorq zmm12,zmm12,zmm5 + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm7 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm10 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm11 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm12 + + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 + vmovdqa64 ZMMWORD[1024+rsp],zmm7 + vmovdqa64 ZMMWORD[1088+rsp],zmm10 + vmovdqa64 ZMMWORD[1152+rsp],zmm11 + vmovdqa64 ZMMWORD[1216+rsp],zmm12 + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_15 + vmovdqu64 zmm3,ZMMWORD[640+rsp] + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[576+rsp] + vmovdqu64 zmm5,ZMMWORD[512+rsp] + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[192+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[128+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[64+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[rsp],zmm5 +$L$_skip_hkeys_precomputation_15: + mov r14,1 + add r11,512 + sub r13,512 + + cmp r13,768 + jb NEAR $L$_no_more_big_nblocks_10 +$L$_encrypt_big_nblocks_10: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_16 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_16 +$L$_16_blocks_overflow_16: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_16: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_17 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_17 +$L$_16_blocks_overflow_17: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_17: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[256+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[320+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[384+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[448+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[448+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vpternlogq zmm24,zmm6,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm0 + vmovdqa64 ZMMWORD[832+rsp],zmm3 + vmovdqa64 ZMMWORD[896+rsp],zmm4 + vmovdqa64 ZMMWORD[960+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_18 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_18 +$L$_16_blocks_overflow_18: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_18: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[512+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[576+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[640+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[704+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + + + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpternlogq zmm6,zmm12,zmm15,0x96 + vpxorq zmm6,zmm6,zmm24 + vpternlogq zmm7,zmm13,zmm10,0x96 + vpxorq zmm7,zmm7,zmm25 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vextracti64x4 ymm12,zmm6,1 + vpxorq ymm6,ymm6,ymm12 + vextracti32x4 xmm12,ymm6,1 + vpxorq xmm6,xmm6,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm6,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[512+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[576+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[640+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[704+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[1024+rsp],zmm0 + vmovdqa64 ZMMWORD[1088+rsp],zmm3 + vmovdqa64 ZMMWORD[1152+rsp],zmm4 + vmovdqa64 ZMMWORD[1216+rsp],zmm5 + vmovdqa64 zmm14,zmm6 + + add r11,768 + sub r13,768 + cmp r13,768 + jae NEAR $L$_encrypt_big_nblocks_10 + +$L$_no_more_big_nblocks_10: + + cmp r13,512 + jae NEAR $L$_encrypt_32_blocks_10 + + cmp r13,256 + jae NEAR $L$_encrypt_16_blocks_10 +$L$_encrypt_0_blocks_ghash_32_10: + mov r10d,r13d + and r10d,~15 + mov ebx,256 + sub ebx,r10d + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + add ebx,256 + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_19 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_19 + jb NEAR $L$_last_num_blocks_is_7_1_19 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_19 + jb NEAR $L$_last_num_blocks_is_11_9_19 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_19 + ja NEAR $L$_last_num_blocks_is_16_19 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_19 + jmp NEAR $L$_last_num_blocks_is_13_19 + +$L$_last_num_blocks_is_11_9_19: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_19 + ja NEAR $L$_last_num_blocks_is_11_19 + jmp NEAR $L$_last_num_blocks_is_9_19 + +$L$_last_num_blocks_is_7_1_19: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_19 + jb NEAR $L$_last_num_blocks_is_3_1_19 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_19 + je NEAR $L$_last_num_blocks_is_6_19 + jmp NEAR $L$_last_num_blocks_is_5_19 + +$L$_last_num_blocks_is_3_1_19: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_19 + je NEAR $L$_last_num_blocks_is_2_19 +$L$_last_num_blocks_is_1_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_20 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_20 + +$L$_16_blocks_overflow_20: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_20: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm17,xmm0,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_21 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_21 +$L$_small_initial_partial_block_21: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_21 +$L$_small_initial_compute_done_21: +$L$_after_reduction_21: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_2_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_22 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_22 + +$L$_16_blocks_overflow_22: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_22: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm17,ymm0,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_23 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_23 +$L$_small_initial_partial_block_23: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_23: + + or r13,r13 + je NEAR $L$_after_reduction_23 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_23: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_3_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_24 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_24 + +$L$_16_blocks_overflow_24: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_24: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_25 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_25 +$L$_small_initial_partial_block_25: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_25: + + or r13,r13 + je NEAR $L$_after_reduction_25 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_25: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_4_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_26 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_26 + +$L$_16_blocks_overflow_26: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_26: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_27 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_27 +$L$_small_initial_partial_block_27: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_27: + + or r13,r13 + je NEAR $L$_after_reduction_27 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_27: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_5_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_28 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_28 + +$L$_16_blocks_overflow_28: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_28: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb xmm19,xmm3,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_29 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_29 +$L$_small_initial_partial_block_29: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_29: + + or r13,r13 + je NEAR $L$_after_reduction_29 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_29: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_6_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_30 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_30 + +$L$_16_blocks_overflow_30: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_30: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb ymm19,ymm3,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_31 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_31 +$L$_small_initial_partial_block_31: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_31: + + or r13,r13 + je NEAR $L$_after_reduction_31 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_31: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_7_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_32 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_32 + +$L$_16_blocks_overflow_32: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_32: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_33 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_33 +$L$_small_initial_partial_block_33: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_33: + + or r13,r13 + je NEAR $L$_after_reduction_33 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_33: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_8_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_34 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_34 + +$L$_16_blocks_overflow_34: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_34: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_35 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_35 +$L$_small_initial_partial_block_35: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_35: + + or r13,r13 + je NEAR $L$_after_reduction_35 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_35: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_9_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_36 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_36 + +$L$_16_blocks_overflow_36: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_36: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb xmm20,xmm4,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_37 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_37 +$L$_small_initial_partial_block_37: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_37: + + or r13,r13 + je NEAR $L$_after_reduction_37 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_37: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_10_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_38 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_38 + +$L$_16_blocks_overflow_38: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_38: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb ymm20,ymm4,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_39 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_39 +$L$_small_initial_partial_block_39: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_39: + + or r13,r13 + je NEAR $L$_after_reduction_39 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_39: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_11_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_40 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_40 + +$L$_16_blocks_overflow_40: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_40: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_41 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_41 +$L$_small_initial_partial_block_41: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_41: + + or r13,r13 + je NEAR $L$_after_reduction_41 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_41: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_12_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_42 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_42 + +$L$_16_blocks_overflow_42: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_42: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_43 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_43 +$L$_small_initial_partial_block_43: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_43: + + or r13,r13 + je NEAR $L$_after_reduction_43 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_43: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_13_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_44 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_44 + +$L$_16_blocks_overflow_44: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_44: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb xmm21,xmm5,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_45 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_45 +$L$_small_initial_partial_block_45: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_45: + + or r13,r13 + je NEAR $L$_after_reduction_45 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_45: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_14_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_46 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_46 + +$L$_16_blocks_overflow_46: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_46: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb ymm21,ymm5,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_47 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_47 +$L$_small_initial_partial_block_47: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_47: + + or r13,r13 + je NEAR $L$_after_reduction_47 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_47: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_15_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_48 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_48 + +$L$_16_blocks_overflow_48: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_48: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_49 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_49 +$L$_small_initial_partial_block_49: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_49: + + or r13,r13 + je NEAR $L$_after_reduction_49 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_49: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_16_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_50 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_50 + +$L$_16_blocks_overflow_50: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_50: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_51: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_51: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_51: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_0_19: + vmovdqa64 zmm13,ZMMWORD[1024+rsp] + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1088+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1152+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1216+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_19: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_10 +$L$_encrypt_32_blocks_10: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_52 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_52 +$L$_16_blocks_overflow_52: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_52: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_53 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_53 +$L$_16_blocks_overflow_53: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_53: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[256+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[320+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[384+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[448+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[448+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vpternlogq zmm24,zmm6,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm0 + vmovdqa64 ZMMWORD[832+rsp],zmm3 + vmovdqa64 ZMMWORD[896+rsp],zmm4 + vmovdqa64 ZMMWORD[960+rsp],zmm5 + vmovdqa64 zmm13,ZMMWORD[1280+rsp] + vmovdqu64 zmm12,ZMMWORD[512+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1344+rsp] + vmovdqu64 zmm12,ZMMWORD[576+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1408+rsp] + vmovdqu64 zmm12,ZMMWORD[640+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1472+rsp] + vmovdqu64 zmm12,ZMMWORD[704+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + + sub r13,512 + add r11,512 + mov r10d,r13d + and r10d,~15 + mov ebx,512 + sub ebx,r10d + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_54 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_54 + jb NEAR $L$_last_num_blocks_is_7_1_54 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_54 + jb NEAR $L$_last_num_blocks_is_11_9_54 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_54 + ja NEAR $L$_last_num_blocks_is_16_54 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_54 + jmp NEAR $L$_last_num_blocks_is_13_54 + +$L$_last_num_blocks_is_11_9_54: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_54 + ja NEAR $L$_last_num_blocks_is_11_54 + jmp NEAR $L$_last_num_blocks_is_9_54 + +$L$_last_num_blocks_is_7_1_54: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_54 + jb NEAR $L$_last_num_blocks_is_3_1_54 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_54 + je NEAR $L$_last_num_blocks_is_6_54 + jmp NEAR $L$_last_num_blocks_is_5_54 + +$L$_last_num_blocks_is_3_1_54: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_54 + je NEAR $L$_last_num_blocks_is_2_54 +$L$_last_num_blocks_is_1_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_55 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_55 + +$L$_16_blocks_overflow_55: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_55: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm17,xmm0,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_56 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_56 +$L$_small_initial_partial_block_56: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_56 +$L$_small_initial_compute_done_56: +$L$_after_reduction_56: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_2_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_57 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_57 + +$L$_16_blocks_overflow_57: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_57: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm17,ymm0,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_58 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_58 +$L$_small_initial_partial_block_58: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_58: + + or r13,r13 + je NEAR $L$_after_reduction_58 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_58: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_3_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_59 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_59 + +$L$_16_blocks_overflow_59: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_59: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_60 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_60 +$L$_small_initial_partial_block_60: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_60: + + or r13,r13 + je NEAR $L$_after_reduction_60 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_60: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_4_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_61 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_61 + +$L$_16_blocks_overflow_61: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_61: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_62 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_62 +$L$_small_initial_partial_block_62: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_62: + + or r13,r13 + je NEAR $L$_after_reduction_62 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_62: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_5_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_63 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_63 + +$L$_16_blocks_overflow_63: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_63: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb xmm19,xmm3,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_64 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_64 +$L$_small_initial_partial_block_64: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_64: + + or r13,r13 + je NEAR $L$_after_reduction_64 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_64: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_6_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_65 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_65 + +$L$_16_blocks_overflow_65: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_65: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb ymm19,ymm3,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_66 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_66 +$L$_small_initial_partial_block_66: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_66: + + or r13,r13 + je NEAR $L$_after_reduction_66 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_66: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_7_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_67 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_67 + +$L$_16_blocks_overflow_67: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_67: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_68 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_68 +$L$_small_initial_partial_block_68: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_68: + + or r13,r13 + je NEAR $L$_after_reduction_68 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_68: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_8_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_69 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_69 + +$L$_16_blocks_overflow_69: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_69: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_70 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_70 +$L$_small_initial_partial_block_70: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_70: + + or r13,r13 + je NEAR $L$_after_reduction_70 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_70: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_9_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_71 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_71 + +$L$_16_blocks_overflow_71: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_71: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb xmm20,xmm4,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_72 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_72 +$L$_small_initial_partial_block_72: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_72: + + or r13,r13 + je NEAR $L$_after_reduction_72 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_72: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_10_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_73 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_73 + +$L$_16_blocks_overflow_73: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_73: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb ymm20,ymm4,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_74 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_74 +$L$_small_initial_partial_block_74: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_74: + + or r13,r13 + je NEAR $L$_after_reduction_74 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_74: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_11_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_75 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_75 + +$L$_16_blocks_overflow_75: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_75: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_76 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_76 +$L$_small_initial_partial_block_76: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_76: + + or r13,r13 + je NEAR $L$_after_reduction_76 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_76: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_12_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_77 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_77 + +$L$_16_blocks_overflow_77: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_77: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_78 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_78 +$L$_small_initial_partial_block_78: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_78: + + or r13,r13 + je NEAR $L$_after_reduction_78 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_78: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_13_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_79 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_79 + +$L$_16_blocks_overflow_79: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_79: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb xmm21,xmm5,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_80 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_80 +$L$_small_initial_partial_block_80: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_80: + + or r13,r13 + je NEAR $L$_after_reduction_80 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_80: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_14_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_81 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_81 + +$L$_16_blocks_overflow_81: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_81: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb ymm21,ymm5,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_82 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_82 +$L$_small_initial_partial_block_82: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_82: + + or r13,r13 + je NEAR $L$_after_reduction_82 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_82: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_15_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_83 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_83 + +$L$_16_blocks_overflow_83: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_83: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_84 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_84 +$L$_small_initial_partial_block_84: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_84: + + or r13,r13 + je NEAR $L$_after_reduction_84 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_84: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_16_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_85 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_85 + +$L$_16_blocks_overflow_85: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_85: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_86: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_86: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_86: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_0_54: + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_54: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_10 +$L$_encrypt_16_blocks_10: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_87 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_87 +$L$_16_blocks_overflow_87: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_87: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + vmovdqa64 zmm13,ZMMWORD[1024+rsp] + vmovdqu64 zmm12,ZMMWORD[256+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1088+rsp] + vmovdqu64 zmm12,ZMMWORD[320+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1152+rsp] + vmovdqu64 zmm12,ZMMWORD[384+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1216+rsp] + vmovdqu64 zmm12,ZMMWORD[448+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + sub r13,256 + add r11,256 + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_88 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_88 + jb NEAR $L$_last_num_blocks_is_7_1_88 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_88 + jb NEAR $L$_last_num_blocks_is_11_9_88 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_88 + ja NEAR $L$_last_num_blocks_is_16_88 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_88 + jmp NEAR $L$_last_num_blocks_is_13_88 + +$L$_last_num_blocks_is_11_9_88: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_88 + ja NEAR $L$_last_num_blocks_is_11_88 + jmp NEAR $L$_last_num_blocks_is_9_88 + +$L$_last_num_blocks_is_7_1_88: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_88 + jb NEAR $L$_last_num_blocks_is_3_1_88 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_88 + je NEAR $L$_last_num_blocks_is_6_88 + jmp NEAR $L$_last_num_blocks_is_5_88 + +$L$_last_num_blocks_is_3_1_88: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_88 + je NEAR $L$_last_num_blocks_is_2_88 +$L$_last_num_blocks_is_1_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_89 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_89 + +$L$_16_blocks_overflow_89: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_89: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc xmm0,xmm0,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm17,xmm0,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_90 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_90 +$L$_small_initial_partial_block_90: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_90 +$L$_small_initial_compute_done_90: +$L$_after_reduction_90: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_2_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_91 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_91 + +$L$_16_blocks_overflow_91: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_91: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc ymm0,ymm0,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm17,ymm0,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_92 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_92 +$L$_small_initial_partial_block_92: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_92: + + or r13,r13 + je NEAR $L$_after_reduction_92 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_92: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_3_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_93 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_93 + +$L$_16_blocks_overflow_93: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_93: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_94 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_94 +$L$_small_initial_partial_block_94: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_94: + + or r13,r13 + je NEAR $L$_after_reduction_94 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_94: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_4_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_95 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_95 + +$L$_16_blocks_overflow_95: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_95: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_96 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_96 +$L$_small_initial_partial_block_96: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_96: + + or r13,r13 + je NEAR $L$_after_reduction_96 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_96: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_5_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_97 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_97 + +$L$_16_blocks_overflow_97: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_97: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb xmm19,xmm3,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_98 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_98 +$L$_small_initial_partial_block_98: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_98: + + or r13,r13 + je NEAR $L$_after_reduction_98 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_98: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_6_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_99 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_99 + +$L$_16_blocks_overflow_99: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_99: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb ymm19,ymm3,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_100 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_100 +$L$_small_initial_partial_block_100: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_100: + + or r13,r13 + je NEAR $L$_after_reduction_100 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_100: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_7_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_101 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_101 + +$L$_16_blocks_overflow_101: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_101: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_102 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_102 +$L$_small_initial_partial_block_102: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_102: + + or r13,r13 + je NEAR $L$_after_reduction_102 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_102: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_8_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_103 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_103 + +$L$_16_blocks_overflow_103: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_103: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_104 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_104 +$L$_small_initial_partial_block_104: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_104: + + or r13,r13 + je NEAR $L$_after_reduction_104 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_104: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_9_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_105 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_105 + +$L$_16_blocks_overflow_105: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_105: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb xmm20,xmm4,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_106 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_106 +$L$_small_initial_partial_block_106: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_106: + + or r13,r13 + je NEAR $L$_after_reduction_106 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_106: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_10_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_107 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_107 + +$L$_16_blocks_overflow_107: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_107: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb ymm20,ymm4,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_108 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_108 +$L$_small_initial_partial_block_108: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_108: + + or r13,r13 + je NEAR $L$_after_reduction_108 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_108: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_11_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_109 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_109 + +$L$_16_blocks_overflow_109: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_109: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_110 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_110 +$L$_small_initial_partial_block_110: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_110: + + or r13,r13 + je NEAR $L$_after_reduction_110 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_110: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_12_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_111 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_111 + +$L$_16_blocks_overflow_111: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_111: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_112 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_112 +$L$_small_initial_partial_block_112: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_112: + + or r13,r13 + je NEAR $L$_after_reduction_112 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_112: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_13_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_113 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_113 + +$L$_16_blocks_overflow_113: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_113: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb xmm21,xmm5,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_114 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_114 +$L$_small_initial_partial_block_114: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_114: + + or r13,r13 + je NEAR $L$_after_reduction_114 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_114: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_14_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_115 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_115 + +$L$_16_blocks_overflow_115: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_115: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb ymm21,ymm5,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_116 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_116 +$L$_small_initial_partial_block_116: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_116: + + or r13,r13 + je NEAR $L$_after_reduction_116 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_116: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_15_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_117 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_117 + +$L$_16_blocks_overflow_117: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_117: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_118 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_118 +$L$_small_initial_partial_block_118: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_118: + + or r13,r13 + je NEAR $L$_after_reduction_118 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_118: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_16_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_119 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_119 + +$L$_16_blocks_overflow_119: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_119: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_120: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_120: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_120: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_0_88: + vmovdqa64 zmm13,ZMMWORD[1280+rsp] + vmovdqu64 zmm12,ZMMWORD[512+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1344+rsp] + vmovdqu64 zmm12,ZMMWORD[576+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1408+rsp] + vmovdqu64 zmm12,ZMMWORD[640+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1472+rsp] + vmovdqu64 zmm12,ZMMWORD[704+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_88: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_10 + +$L$_message_below_32_blocks_10: + + + sub r13,256 + add r11,256 + mov r10d,r13d + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_121 + vmovdqu64 zmm3,ZMMWORD[640+rsp] + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[576+rsp] + vmovdqu64 zmm5,ZMMWORD[512+rsp] + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm5 +$L$_skip_hkeys_precomputation_121: + mov r14,1 + and r10d,~15 + mov ebx,512 + sub ebx,r10d + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_122 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_122 + jb NEAR $L$_last_num_blocks_is_7_1_122 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_122 + jb NEAR $L$_last_num_blocks_is_11_9_122 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_122 + ja NEAR $L$_last_num_blocks_is_16_122 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_122 + jmp NEAR $L$_last_num_blocks_is_13_122 + +$L$_last_num_blocks_is_11_9_122: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_122 + ja NEAR $L$_last_num_blocks_is_11_122 + jmp NEAR $L$_last_num_blocks_is_9_122 + +$L$_last_num_blocks_is_7_1_122: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_122 + jb NEAR $L$_last_num_blocks_is_3_1_122 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_122 + je NEAR $L$_last_num_blocks_is_6_122 + jmp NEAR $L$_last_num_blocks_is_5_122 + +$L$_last_num_blocks_is_3_1_122: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_122 + je NEAR $L$_last_num_blocks_is_2_122 +$L$_last_num_blocks_is_1_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_123 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_123 + +$L$_16_blocks_overflow_123: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_123: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm17,xmm0,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_124 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_124 +$L$_small_initial_partial_block_124: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_124 +$L$_small_initial_compute_done_124: +$L$_after_reduction_124: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_2_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_125 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_125 + +$L$_16_blocks_overflow_125: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_125: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm17,ymm0,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_126 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_126 +$L$_small_initial_partial_block_126: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_126: + + or r13,r13 + je NEAR $L$_after_reduction_126 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_126: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_3_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_127 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_127 + +$L$_16_blocks_overflow_127: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_127: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_128 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_128 +$L$_small_initial_partial_block_128: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_128: + + or r13,r13 + je NEAR $L$_after_reduction_128 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_128: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_4_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_129 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_129 + +$L$_16_blocks_overflow_129: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_129: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_130 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_130 +$L$_small_initial_partial_block_130: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_130: + + or r13,r13 + je NEAR $L$_after_reduction_130 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_130: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_5_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_131 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_131 + +$L$_16_blocks_overflow_131: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_131: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb xmm19,xmm3,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_132 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_132 +$L$_small_initial_partial_block_132: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_132: + + or r13,r13 + je NEAR $L$_after_reduction_132 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_132: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_6_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_133 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_133 + +$L$_16_blocks_overflow_133: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_133: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb ymm19,ymm3,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_134 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_134 +$L$_small_initial_partial_block_134: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_134: + + or r13,r13 + je NEAR $L$_after_reduction_134 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_134: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_7_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_135 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_135 + +$L$_16_blocks_overflow_135: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_135: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_136 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_136 +$L$_small_initial_partial_block_136: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_136: + + or r13,r13 + je NEAR $L$_after_reduction_136 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_136: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_8_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_137 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_137 + +$L$_16_blocks_overflow_137: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_137: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_138 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_138 +$L$_small_initial_partial_block_138: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_138: + + or r13,r13 + je NEAR $L$_after_reduction_138 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_138: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_9_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_139 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_139 + +$L$_16_blocks_overflow_139: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_139: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb xmm20,xmm4,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_140 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_140 +$L$_small_initial_partial_block_140: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_140: + + or r13,r13 + je NEAR $L$_after_reduction_140 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_140: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_10_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_141 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_141 + +$L$_16_blocks_overflow_141: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_141: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb ymm20,ymm4,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_142 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_142 +$L$_small_initial_partial_block_142: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_142: + + or r13,r13 + je NEAR $L$_after_reduction_142 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_142: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_11_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_143 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_143 + +$L$_16_blocks_overflow_143: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_143: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_144 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_144 +$L$_small_initial_partial_block_144: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_144: + + or r13,r13 + je NEAR $L$_after_reduction_144 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_144: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_12_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_145 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_145 + +$L$_16_blocks_overflow_145: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_145: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_146 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_146 +$L$_small_initial_partial_block_146: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_146: + + or r13,r13 + je NEAR $L$_after_reduction_146 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_146: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_13_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_147 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_147 + +$L$_16_blocks_overflow_147: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_147: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb xmm21,xmm5,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_148 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_148 +$L$_small_initial_partial_block_148: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_148: + + or r13,r13 + je NEAR $L$_after_reduction_148 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_148: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_14_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_149 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_149 + +$L$_16_blocks_overflow_149: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_149: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb ymm21,ymm5,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_150 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_150 +$L$_small_initial_partial_block_150: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_150: + + or r13,r13 + je NEAR $L$_after_reduction_150 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_150: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_15_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_151 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_151 + +$L$_16_blocks_overflow_151: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_151: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_152 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_152 +$L$_small_initial_partial_block_152: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_152: + + or r13,r13 + je NEAR $L$_after_reduction_152 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_152: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_16_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_153 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_153 + +$L$_16_blocks_overflow_153: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_153: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_154: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_154: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_154: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_0_122: + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_122: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_10 + +$L$_message_below_equal_16_blocks_10: + + + mov r12d,r13d + add r12d,15 + shr r12d,4 + cmp r12,8 + je NEAR $L$_small_initial_num_blocks_is_8_155 + jl NEAR $L$_small_initial_num_blocks_is_7_1_155 + + + cmp r12,12 + je NEAR $L$_small_initial_num_blocks_is_12_155 + jl NEAR $L$_small_initial_num_blocks_is_11_9_155 + + + cmp r12,16 + je NEAR $L$_small_initial_num_blocks_is_16_155 + cmp r12,15 + je NEAR $L$_small_initial_num_blocks_is_15_155 + cmp r12,14 + je NEAR $L$_small_initial_num_blocks_is_14_155 + jmp NEAR $L$_small_initial_num_blocks_is_13_155 + +$L$_small_initial_num_blocks_is_11_9_155: + + cmp r12,11 + je NEAR $L$_small_initial_num_blocks_is_11_155 + cmp r12,10 + je NEAR $L$_small_initial_num_blocks_is_10_155 + jmp NEAR $L$_small_initial_num_blocks_is_9_155 + +$L$_small_initial_num_blocks_is_7_1_155: + cmp r12,4 + je NEAR $L$_small_initial_num_blocks_is_4_155 + jl NEAR $L$_small_initial_num_blocks_is_3_1_155 + + cmp r12,7 + je NEAR $L$_small_initial_num_blocks_is_7_155 + cmp r12,6 + je NEAR $L$_small_initial_num_blocks_is_6_155 + jmp NEAR $L$_small_initial_num_blocks_is_5_155 + +$L$_small_initial_num_blocks_is_3_1_155: + + cmp r12,3 + je NEAR $L$_small_initial_num_blocks_is_3_155 + cmp r12,2 + je NEAR $L$_small_initial_num_blocks_is_2_155 + + + + + +$L$_small_initial_num_blocks_is_1_155: + vmovdqa64 xmm29,XMMWORD[SHUF_MASK] + vpaddd xmm0,xmm2,XMMWORD[ONE] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,0 + vpshufb xmm0,xmm0,xmm29 + vmovdqu8 xmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast xmm0,xmm0,xmm15 + vpxorq xmm0,xmm0,xmm6 + vextracti32x4 xmm12,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm6,xmm0,xmm29 + vextracti32x4 xmm13,zmm6,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_156 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm6,xmm20,0x01 + vpclmulqdq xmm5,xmm6,xmm20,0x10 + vpclmulqdq xmm0,xmm6,xmm20,0x11 + vpclmulqdq xmm3,xmm6,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_156 +$L$_small_initial_partial_block_156: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm13 + + jmp NEAR $L$_after_reduction_156 +$L$_small_initial_compute_done_156: +$L$_after_reduction_156: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_2_155: + vmovdqa64 ymm29,YMMWORD[SHUF_MASK] + vshufi64x2 ymm0,ymm2,ymm2,0 + vpaddd ymm0,ymm0,YMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,1 + vpshufb ymm0,ymm0,ymm29 + vmovdqu8 ymm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast ymm0,ymm0,ymm15 + vpxorq ymm0,ymm0,ymm6 + vextracti32x4 xmm12,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm6,ymm0,ymm29 + vextracti32x4 xmm13,zmm6,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_157 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm6,ymm20,0x01 + vpclmulqdq ymm5,ymm6,ymm20,0x10 + vpclmulqdq ymm0,ymm6,ymm20,0x11 + vpclmulqdq ymm3,ymm6,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_157 +$L$_small_initial_partial_block_157: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm6,xmm20,0x01 + vpclmulqdq xmm5,xmm6,xmm20,0x10 + vpclmulqdq xmm0,xmm6,xmm20,0x11 + vpclmulqdq xmm3,xmm6,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_157: + + or r13,r13 + je NEAR $L$_after_reduction_157 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_157: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_3_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,2 + vpshufb zmm0,zmm0,zmm29 + vmovdqu8 zmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vpxorq zmm0,zmm0,zmm6 + vextracti32x4 xmm12,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm6,zmm0,zmm29 + vextracti32x4 xmm13,zmm6,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_158 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_158 +$L$_small_initial_partial_block_158: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm6,ymm20,0x01 + vpclmulqdq ymm5,ymm6,ymm20,0x10 + vpclmulqdq ymm0,ymm6,ymm20,0x11 + vpclmulqdq ymm3,ymm6,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_158: + + or r13,r13 + je NEAR $L$_after_reduction_158 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_158: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_4_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,3 + vpshufb zmm0,zmm0,zmm29 + vmovdqu8 zmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vpxorq zmm0,zmm0,zmm6 + vextracti32x4 xmm12,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm6,zmm0,zmm29 + vextracti32x4 xmm13,zmm6,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_159 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_159 +$L$_small_initial_partial_block_159: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_159: + + or r13,r13 + je NEAR $L$_after_reduction_159 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_159: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_5_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 xmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast xmm3,xmm3,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq xmm3,xmm3,xmm7 + vextracti32x4 xmm12,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm0,zmm29 + vpshufb xmm7,xmm3,xmm29 + vextracti32x4 xmm13,zmm7,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_160 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm7,xmm20,0x01 + vpclmulqdq xmm5,xmm7,xmm20,0x10 + vpclmulqdq xmm0,xmm7,xmm20,0x11 + vpclmulqdq xmm3,xmm7,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_160 +$L$_small_initial_partial_block_160: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_160: + + or r13,r13 + je NEAR $L$_after_reduction_160 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_160: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_6_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 ymm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast ymm3,ymm3,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq ymm3,ymm3,ymm7 + vextracti32x4 xmm12,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm0,zmm29 + vpshufb ymm7,ymm3,ymm29 + vextracti32x4 xmm13,zmm7,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_161 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm7,ymm20,0x01 + vpclmulqdq ymm5,ymm7,ymm20,0x10 + vpclmulqdq ymm0,ymm7,ymm20,0x11 + vpclmulqdq ymm3,ymm7,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_161 +$L$_small_initial_partial_block_161: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm7,xmm20,0x01 + vpclmulqdq xmm5,xmm7,xmm20,0x10 + vpclmulqdq xmm0,xmm7,xmm20,0x11 + vpclmulqdq xmm3,xmm7,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_161: + + or r13,r13 + je NEAR $L$_after_reduction_161 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_161: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_7_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vextracti32x4 xmm12,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vextracti32x4 xmm13,zmm7,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_162 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm7,zmm20,0x01 + vpclmulqdq zmm5,zmm7,zmm20,0x10 + vpclmulqdq zmm0,zmm7,zmm20,0x11 + vpclmulqdq zmm3,zmm7,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_162 +$L$_small_initial_partial_block_162: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm7,ymm20,0x01 + vpclmulqdq ymm5,ymm7,ymm20,0x10 + vpclmulqdq ymm0,ymm7,ymm20,0x11 + vpclmulqdq ymm3,ymm7,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_162: + + or r13,r13 + je NEAR $L$_after_reduction_162 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_162: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_8_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vextracti32x4 xmm12,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vextracti32x4 xmm13,zmm7,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_163 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_163 +$L$_small_initial_partial_block_163: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm7,zmm20,0x01 + vpclmulqdq zmm5,zmm7,zmm20,0x10 + vpclmulqdq zmm0,zmm7,zmm20,0x11 + vpclmulqdq zmm3,zmm7,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_163: + + or r13,r13 + je NEAR $L$_after_reduction_163 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_163: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_9_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast xmm4,xmm4,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq xmm4,xmm4,xmm10 + vextracti32x4 xmm12,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb xmm10,xmm4,xmm29 + vextracti32x4 xmm13,zmm10,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_164 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm10,xmm20,0x01 + vpclmulqdq xmm5,xmm10,xmm20,0x10 + vpclmulqdq xmm0,xmm10,xmm20,0x11 + vpclmulqdq xmm3,xmm10,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_164 +$L$_small_initial_partial_block_164: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_164: + + or r13,r13 + je NEAR $L$_after_reduction_164 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_164: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_10_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast ymm4,ymm4,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq ymm4,ymm4,ymm10 + vextracti32x4 xmm12,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb ymm10,ymm4,ymm29 + vextracti32x4 xmm13,zmm10,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_165 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm10,ymm20,0x01 + vpclmulqdq ymm5,ymm10,ymm20,0x10 + vpclmulqdq ymm0,ymm10,ymm20,0x11 + vpclmulqdq ymm3,ymm10,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_165 +$L$_small_initial_partial_block_165: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm10,xmm20,0x01 + vpclmulqdq xmm5,xmm10,xmm20,0x10 + vpclmulqdq xmm0,xmm10,xmm20,0x11 + vpclmulqdq xmm3,xmm10,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_165: + + or r13,r13 + je NEAR $L$_after_reduction_165 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_165: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_11_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vextracti32x4 xmm12,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vextracti32x4 xmm13,zmm10,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_166 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm10,zmm20,0x01 + vpclmulqdq zmm5,zmm10,zmm20,0x10 + vpclmulqdq zmm0,zmm10,zmm20,0x11 + vpclmulqdq zmm3,zmm10,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_166 +$L$_small_initial_partial_block_166: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm10,ymm20,0x01 + vpclmulqdq ymm5,ymm10,ymm20,0x10 + vpclmulqdq ymm0,ymm10,ymm20,0x11 + vpclmulqdq ymm3,ymm10,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_166: + + or r13,r13 + je NEAR $L$_after_reduction_166 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_166: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_12_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vextracti32x4 xmm12,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vextracti32x4 xmm13,zmm10,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_167 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_167 +$L$_small_initial_partial_block_167: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm10,zmm20,0x01 + vpclmulqdq zmm5,zmm10,zmm20,0x10 + vpclmulqdq zmm0,zmm10,zmm20,0x11 + vpclmulqdq zmm3,zmm10,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_167: + + or r13,r13 + je NEAR $L$_after_reduction_167 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_167: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_13_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast xmm5,xmm5,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq xmm5,xmm5,xmm11 + vextracti32x4 xmm12,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vpshufb xmm11,xmm5,xmm29 + vextracti32x4 xmm13,zmm11,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_168 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm11,xmm20,0x01 + vpclmulqdq xmm5,xmm11,xmm20,0x10 + vpclmulqdq xmm0,xmm11,xmm20,0x11 + vpclmulqdq xmm3,xmm11,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_168 +$L$_small_initial_partial_block_168: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_168: + + or r13,r13 + je NEAR $L$_after_reduction_168 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_168: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_14_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast ymm5,ymm5,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq ymm5,ymm5,ymm11 + vextracti32x4 xmm12,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vpshufb ymm11,ymm5,ymm29 + vextracti32x4 xmm13,zmm11,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_169 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm11,ymm20,0x01 + vpclmulqdq ymm5,ymm11,ymm20,0x10 + vpclmulqdq ymm0,ymm11,ymm20,0x11 + vpclmulqdq ymm3,ymm11,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_169 +$L$_small_initial_partial_block_169: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm11,xmm20,0x01 + vpclmulqdq xmm5,xmm11,xmm20,0x10 + vpclmulqdq xmm0,xmm11,xmm20,0x11 + vpclmulqdq xmm3,xmm11,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_169: + + or r13,r13 + je NEAR $L$_after_reduction_169 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_169: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_15_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast zmm5,zmm5,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq zmm5,zmm5,zmm11 + vextracti32x4 xmm12,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vpshufb zmm11,zmm5,zmm29 + vextracti32x4 xmm13,zmm11,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_170 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm11,zmm20,0x01 + vpclmulqdq zmm5,zmm11,zmm20,0x10 + vpclmulqdq zmm0,zmm11,zmm20,0x11 + vpclmulqdq zmm3,zmm11,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_170 +$L$_small_initial_partial_block_170: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm11,ymm20,0x01 + vpclmulqdq ymm5,ymm11,ymm20,0x10 + vpclmulqdq ymm0,ymm11,ymm20,0x11 + vpclmulqdq ymm3,ymm11,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_170: + + or r13,r13 + je NEAR $L$_after_reduction_170 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_170: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_16_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast zmm5,zmm5,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq zmm5,zmm5,zmm11 + vextracti32x4 xmm12,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vpshufb zmm11,zmm5,zmm29 + vextracti32x4 xmm13,zmm11,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_171: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm11,zmm20,0x01 + vpclmulqdq zmm5,zmm11,zmm20,0x10 + vpclmulqdq zmm0,zmm11,zmm20,0x11 + vpclmulqdq zmm3,zmm11,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_171: + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_171: +$L$_small_initial_blocks_encrypted_155: +$L$_ghash_done_10: + vmovdqu64 XMMWORD[rdx],xmm2 + vmovdqu64 XMMWORD[64+rdx],xmm14 +$L$_enc_dec_done_10: + jmp NEAR $L$exit_gcm_encrypt +ALIGN 32 +$L$aes_gcm_encrypt_192_avx512: + cmp QWORD[112+rbp],0 + je NEAR $L$_enc_dec_done_172 + xor r14,r14 + vmovdqu64 xmm14,XMMWORD[64+rdx] + + mov r11,QWORD[r8] + or r11,r11 + je NEAR $L$_partial_block_done_173 + mov r10d,16 + lea r12,[byte_len_to_mask_table] + cmp QWORD[112+rbp],r10 + cmovc r10,QWORD[112+rbp] + add r12,r10 + add r12,r10 + kmovw k1,[r12] + vmovdqu8 xmm0{k1}{z},[r9] + + vmovdqu64 xmm3,XMMWORD[16+rdx] + vmovdqu64 xmm4,XMMWORD[336+rdx] + + + + lea r12,[SHIFT_MASK] + add r12,r11 + vmovdqu64 xmm5,XMMWORD[r12] + vpshufb xmm3,xmm3,xmm5 + vpxorq xmm3,xmm3,xmm0 + + + mov r13,QWORD[112+rbp] + add r13,r11 + sub r13,16 + jge NEAR $L$_no_extra_mask_173 + sub r12,r13 +$L$_no_extra_mask_173: + + + + vmovdqu64 xmm0,XMMWORD[16+r12] + vpand xmm3,xmm3,xmm0 + vpshufb xmm3,xmm3,XMMWORD[SHUF_MASK] + vpshufb xmm3,xmm3,xmm5 + vpxorq xmm14,xmm14,xmm3 + cmp r13,0 + jl NEAR $L$_partial_incomplete_173 + + vpclmulqdq xmm7,xmm14,xmm4,0x11 + vpclmulqdq xmm10,xmm14,xmm4,0x00 + vpclmulqdq xmm11,xmm14,xmm4,0x01 + vpclmulqdq xmm14,xmm14,xmm4,0x10 + vpxorq xmm14,xmm14,xmm11 + + vpsrldq xmm11,xmm14,8 + vpslldq xmm14,xmm14,8 + vpxorq xmm7,xmm7,xmm11 + vpxorq xmm14,xmm14,xmm10 + + + + vmovdqu64 xmm11,XMMWORD[POLY2] + + vpclmulqdq xmm10,xmm11,xmm14,0x01 + vpslldq xmm10,xmm10,8 + vpxorq xmm14,xmm14,xmm10 + + + + vpclmulqdq xmm10,xmm11,xmm14,0x00 + vpsrldq xmm10,xmm10,4 + vpclmulqdq xmm14,xmm11,xmm14,0x10 + vpslldq xmm14,xmm14,4 + + vpternlogq xmm14,xmm7,xmm10,0x96 + + mov QWORD[r8],0 + + mov r12,r11 + mov r11,16 + sub r11,r12 + jmp NEAR $L$_enc_dec_done_173 + +$L$_partial_incomplete_173: + mov r12,QWORD[112+rbp] + add QWORD[r8],r12 + mov r11,QWORD[112+rbp] + +$L$_enc_dec_done_173: + + + lea r12,[byte_len_to_mask_table] + kmovw k1,[r11*2+r12] + vmovdqu64 XMMWORD[64+rdx],xmm14 + + vpshufb xmm3,xmm3,XMMWORD[SHUF_MASK] + vpshufb xmm3,xmm3,xmm5 + mov r12,QWORD[120+rbp] + vmovdqu8 XMMWORD[r12]{k1},xmm3 +$L$_partial_block_done_173: + vmovdqu64 xmm2,XMMWORD[rdx] + mov r13,QWORD[112+rbp] + sub r13,r11 + je NEAR $L$_enc_dec_done_172 + cmp r13,256 + jbe NEAR $L$_message_below_equal_16_blocks_172 + + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vmovdqa64 zmm27,ZMMWORD[ddq_addbe_4444] + vmovdqa64 zmm28,ZMMWORD[ddq_addbe_1234] + + + + + + + vmovd r15d,xmm2 + and r15d,255 + + vshufi64x2 zmm2,zmm2,zmm2,0 + vpshufb zmm2,zmm2,zmm29 + + + + cmp r15b,240 + jae NEAR $L$_next_16_overflow_174 + vpaddd zmm7,zmm2,zmm28 + vpaddd zmm10,zmm7,zmm27 + vpaddd zmm11,zmm10,zmm27 + vpaddd zmm12,zmm11,zmm27 + jmp NEAR $L$_next_16_ok_174 +$L$_next_16_overflow_174: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm12,ZMMWORD[ddq_add_4444] + vpaddd zmm7,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm10,zmm7,zmm12 + vpaddd zmm11,zmm10,zmm12 + vpaddd zmm12,zmm11,zmm12 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 +$L$_next_16_ok_174: + vshufi64x2 zmm2,zmm12,zmm12,255 + add r15b,16 + + vmovdqu8 zmm0,ZMMWORD[r11*1+r9] + vmovdqu8 zmm3,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm4,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm5,ZMMWORD[192+r11*1+r9] + + + vbroadcastf64x2 zmm6,ZMMWORD[rcx] + vpxorq zmm7,zmm7,zmm6 + vpxorq zmm10,zmm10,zmm6 + vpxorq zmm11,zmm11,zmm6 + vpxorq zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[16+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[32+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[48+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[64+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[80+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[96+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[112+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[128+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[144+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[160+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[176+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[192+rcx] + vaesenclast zmm7,zmm7,zmm6 + vaesenclast zmm10,zmm10,zmm6 + vaesenclast zmm11,zmm11,zmm6 + vaesenclast zmm12,zmm12,zmm6 + + + vpxorq zmm7,zmm7,zmm0 + vpxorq zmm10,zmm10,zmm3 + vpxorq zmm11,zmm11,zmm4 + vpxorq zmm12,zmm12,zmm5 + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm7 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm10 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm11 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm12 + + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm7 + vmovdqa64 ZMMWORD[832+rsp],zmm10 + vmovdqa64 ZMMWORD[896+rsp],zmm11 + vmovdqa64 ZMMWORD[960+rsp],zmm12 + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_175 + + vmovdqu64 zmm0,ZMMWORD[288+rdx] + vmovdqu64 ZMMWORD[704+rsp],zmm0 + + vmovdqu64 zmm3,ZMMWORD[224+rdx] + vmovdqu64 ZMMWORD[640+rsp],zmm3 + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[160+rdx] + vmovdqu64 ZMMWORD[576+rsp],zmm4 + + vmovdqu64 zmm5,ZMMWORD[96+rdx] + vmovdqu64 ZMMWORD[512+rsp],zmm5 +$L$_skip_hkeys_precomputation_175: + cmp r13,512 + jb NEAR $L$_message_below_32_blocks_172 + + + + cmp r15b,240 + jae NEAR $L$_next_16_overflow_176 + vpaddd zmm7,zmm2,zmm28 + vpaddd zmm10,zmm7,zmm27 + vpaddd zmm11,zmm10,zmm27 + vpaddd zmm12,zmm11,zmm27 + jmp NEAR $L$_next_16_ok_176 +$L$_next_16_overflow_176: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm12,ZMMWORD[ddq_add_4444] + vpaddd zmm7,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm10,zmm7,zmm12 + vpaddd zmm11,zmm10,zmm12 + vpaddd zmm12,zmm11,zmm12 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 +$L$_next_16_ok_176: + vshufi64x2 zmm2,zmm12,zmm12,255 + add r15b,16 + + vmovdqu8 zmm0,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm3,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm4,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm5,ZMMWORD[448+r11*1+r9] + + + vbroadcastf64x2 zmm6,ZMMWORD[rcx] + vpxorq zmm7,zmm7,zmm6 + vpxorq zmm10,zmm10,zmm6 + vpxorq zmm11,zmm11,zmm6 + vpxorq zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[16+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[32+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[48+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[64+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[80+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[96+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[112+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[128+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[144+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[160+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[176+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[192+rcx] + vaesenclast zmm7,zmm7,zmm6 + vaesenclast zmm10,zmm10,zmm6 + vaesenclast zmm11,zmm11,zmm6 + vaesenclast zmm12,zmm12,zmm6 + + + vpxorq zmm7,zmm7,zmm0 + vpxorq zmm10,zmm10,zmm3 + vpxorq zmm11,zmm11,zmm4 + vpxorq zmm12,zmm12,zmm5 + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm7 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm10 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm11 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm12 + + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 + vmovdqa64 ZMMWORD[1024+rsp],zmm7 + vmovdqa64 ZMMWORD[1088+rsp],zmm10 + vmovdqa64 ZMMWORD[1152+rsp],zmm11 + vmovdqa64 ZMMWORD[1216+rsp],zmm12 + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_177 + vmovdqu64 zmm3,ZMMWORD[640+rsp] + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[576+rsp] + vmovdqu64 zmm5,ZMMWORD[512+rsp] + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[192+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[128+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[64+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[rsp],zmm5 +$L$_skip_hkeys_precomputation_177: + mov r14,1 + add r11,512 + sub r13,512 + + cmp r13,768 + jb NEAR $L$_no_more_big_nblocks_172 +$L$_encrypt_big_nblocks_172: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_178 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_178 +$L$_16_blocks_overflow_178: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_178: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_179 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_179 +$L$_16_blocks_overflow_179: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_179: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[256+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[320+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[384+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[448+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[448+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vpternlogq zmm24,zmm6,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm0 + vmovdqa64 ZMMWORD[832+rsp],zmm3 + vmovdqa64 ZMMWORD[896+rsp],zmm4 + vmovdqa64 ZMMWORD[960+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_180 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_180 +$L$_16_blocks_overflow_180: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_180: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[512+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[576+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[640+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[704+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + + + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpternlogq zmm6,zmm12,zmm15,0x96 + vpxorq zmm6,zmm6,zmm24 + vpternlogq zmm7,zmm13,zmm10,0x96 + vpxorq zmm7,zmm7,zmm25 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vextracti64x4 ymm12,zmm6,1 + vpxorq ymm6,ymm6,ymm12 + vextracti32x4 xmm12,ymm6,1 + vpxorq xmm6,xmm6,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm6,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[512+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[576+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[640+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[704+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[1024+rsp],zmm0 + vmovdqa64 ZMMWORD[1088+rsp],zmm3 + vmovdqa64 ZMMWORD[1152+rsp],zmm4 + vmovdqa64 ZMMWORD[1216+rsp],zmm5 + vmovdqa64 zmm14,zmm6 + + add r11,768 + sub r13,768 + cmp r13,768 + jae NEAR $L$_encrypt_big_nblocks_172 + +$L$_no_more_big_nblocks_172: + + cmp r13,512 + jae NEAR $L$_encrypt_32_blocks_172 + + cmp r13,256 + jae NEAR $L$_encrypt_16_blocks_172 +$L$_encrypt_0_blocks_ghash_32_172: + mov r10d,r13d + and r10d,~15 + mov ebx,256 + sub ebx,r10d + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + add ebx,256 + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_181 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_181 + jb NEAR $L$_last_num_blocks_is_7_1_181 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_181 + jb NEAR $L$_last_num_blocks_is_11_9_181 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_181 + ja NEAR $L$_last_num_blocks_is_16_181 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_181 + jmp NEAR $L$_last_num_blocks_is_13_181 + +$L$_last_num_blocks_is_11_9_181: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_181 + ja NEAR $L$_last_num_blocks_is_11_181 + jmp NEAR $L$_last_num_blocks_is_9_181 + +$L$_last_num_blocks_is_7_1_181: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_181 + jb NEAR $L$_last_num_blocks_is_3_1_181 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_181 + je NEAR $L$_last_num_blocks_is_6_181 + jmp NEAR $L$_last_num_blocks_is_5_181 + +$L$_last_num_blocks_is_3_1_181: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_181 + je NEAR $L$_last_num_blocks_is_2_181 +$L$_last_num_blocks_is_1_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_182 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_182 + +$L$_16_blocks_overflow_182: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_182: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm17,xmm0,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_183 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_183 +$L$_small_initial_partial_block_183: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_183 +$L$_small_initial_compute_done_183: +$L$_after_reduction_183: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_2_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_184 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_184 + +$L$_16_blocks_overflow_184: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_184: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm17,ymm0,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_185 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_185 +$L$_small_initial_partial_block_185: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_185: + + or r13,r13 + je NEAR $L$_after_reduction_185 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_185: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_3_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_186 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_186 + +$L$_16_blocks_overflow_186: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_186: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_187 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_187 +$L$_small_initial_partial_block_187: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_187: + + or r13,r13 + je NEAR $L$_after_reduction_187 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_187: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_4_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_188 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_188 + +$L$_16_blocks_overflow_188: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_188: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_189 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_189 +$L$_small_initial_partial_block_189: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_189: + + or r13,r13 + je NEAR $L$_after_reduction_189 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_189: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_5_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_190 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_190 + +$L$_16_blocks_overflow_190: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_190: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb xmm19,xmm3,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_191 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_191 +$L$_small_initial_partial_block_191: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_191: + + or r13,r13 + je NEAR $L$_after_reduction_191 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_191: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_6_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_192 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_192 + +$L$_16_blocks_overflow_192: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_192: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb ymm19,ymm3,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_193 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_193 +$L$_small_initial_partial_block_193: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_193: + + or r13,r13 + je NEAR $L$_after_reduction_193 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_193: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_7_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_194 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_194 + +$L$_16_blocks_overflow_194: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_194: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_195 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_195 +$L$_small_initial_partial_block_195: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_195: + + or r13,r13 + je NEAR $L$_after_reduction_195 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_195: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_8_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_196 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_196 + +$L$_16_blocks_overflow_196: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_196: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_197 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_197 +$L$_small_initial_partial_block_197: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_197: + + or r13,r13 + je NEAR $L$_after_reduction_197 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_197: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_9_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_198 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_198 + +$L$_16_blocks_overflow_198: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_198: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb xmm20,xmm4,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_199 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_199 +$L$_small_initial_partial_block_199: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_199: + + or r13,r13 + je NEAR $L$_after_reduction_199 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_199: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_10_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_200 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_200 + +$L$_16_blocks_overflow_200: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_200: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb ymm20,ymm4,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_201 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_201 +$L$_small_initial_partial_block_201: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_201: + + or r13,r13 + je NEAR $L$_after_reduction_201 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_201: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_11_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_202 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_202 + +$L$_16_blocks_overflow_202: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_202: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_203 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_203 +$L$_small_initial_partial_block_203: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_203: + + or r13,r13 + je NEAR $L$_after_reduction_203 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_203: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_12_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_204 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_204 + +$L$_16_blocks_overflow_204: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_204: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_205 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_205 +$L$_small_initial_partial_block_205: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_205: + + or r13,r13 + je NEAR $L$_after_reduction_205 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_205: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_13_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_206 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_206 + +$L$_16_blocks_overflow_206: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_206: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb xmm21,xmm5,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_207 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_207 +$L$_small_initial_partial_block_207: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_207: + + or r13,r13 + je NEAR $L$_after_reduction_207 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_207: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_14_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_208 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_208 + +$L$_16_blocks_overflow_208: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_208: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb ymm21,ymm5,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_209 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_209 +$L$_small_initial_partial_block_209: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_209: + + or r13,r13 + je NEAR $L$_after_reduction_209 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_209: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_15_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_210 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_210 + +$L$_16_blocks_overflow_210: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_210: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_211 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_211 +$L$_small_initial_partial_block_211: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_211: + + or r13,r13 + je NEAR $L$_after_reduction_211 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_211: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_16_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_212 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_212 + +$L$_16_blocks_overflow_212: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_212: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_213: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_213: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_213: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_0_181: + vmovdqa64 zmm13,ZMMWORD[1024+rsp] + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1088+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1152+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1216+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_181: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_172 +$L$_encrypt_32_blocks_172: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_214 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_214 +$L$_16_blocks_overflow_214: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_214: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_215 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_215 +$L$_16_blocks_overflow_215: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_215: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[256+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[320+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[384+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[448+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[448+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vpternlogq zmm24,zmm6,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm0 + vmovdqa64 ZMMWORD[832+rsp],zmm3 + vmovdqa64 ZMMWORD[896+rsp],zmm4 + vmovdqa64 ZMMWORD[960+rsp],zmm5 + vmovdqa64 zmm13,ZMMWORD[1280+rsp] + vmovdqu64 zmm12,ZMMWORD[512+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1344+rsp] + vmovdqu64 zmm12,ZMMWORD[576+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1408+rsp] + vmovdqu64 zmm12,ZMMWORD[640+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1472+rsp] + vmovdqu64 zmm12,ZMMWORD[704+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + + sub r13,512 + add r11,512 + mov r10d,r13d + and r10d,~15 + mov ebx,512 + sub ebx,r10d + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_216 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_216 + jb NEAR $L$_last_num_blocks_is_7_1_216 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_216 + jb NEAR $L$_last_num_blocks_is_11_9_216 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_216 + ja NEAR $L$_last_num_blocks_is_16_216 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_216 + jmp NEAR $L$_last_num_blocks_is_13_216 + +$L$_last_num_blocks_is_11_9_216: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_216 + ja NEAR $L$_last_num_blocks_is_11_216 + jmp NEAR $L$_last_num_blocks_is_9_216 + +$L$_last_num_blocks_is_7_1_216: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_216 + jb NEAR $L$_last_num_blocks_is_3_1_216 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_216 + je NEAR $L$_last_num_blocks_is_6_216 + jmp NEAR $L$_last_num_blocks_is_5_216 + +$L$_last_num_blocks_is_3_1_216: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_216 + je NEAR $L$_last_num_blocks_is_2_216 +$L$_last_num_blocks_is_1_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_217 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_217 + +$L$_16_blocks_overflow_217: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_217: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm17,xmm0,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_218 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_218 +$L$_small_initial_partial_block_218: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_218 +$L$_small_initial_compute_done_218: +$L$_after_reduction_218: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_2_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_219 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_219 + +$L$_16_blocks_overflow_219: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_219: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm17,ymm0,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_220 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_220 +$L$_small_initial_partial_block_220: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_220: + + or r13,r13 + je NEAR $L$_after_reduction_220 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_220: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_3_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_221 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_221 + +$L$_16_blocks_overflow_221: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_221: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_222 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_222 +$L$_small_initial_partial_block_222: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_222: + + or r13,r13 + je NEAR $L$_after_reduction_222 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_222: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_4_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_223 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_223 + +$L$_16_blocks_overflow_223: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_223: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_224 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_224 +$L$_small_initial_partial_block_224: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_224: + + or r13,r13 + je NEAR $L$_after_reduction_224 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_224: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_5_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_225 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_225 + +$L$_16_blocks_overflow_225: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_225: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb xmm19,xmm3,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_226 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_226 +$L$_small_initial_partial_block_226: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_226: + + or r13,r13 + je NEAR $L$_after_reduction_226 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_226: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_6_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_227 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_227 + +$L$_16_blocks_overflow_227: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_227: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb ymm19,ymm3,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_228 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_228 +$L$_small_initial_partial_block_228: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_228: + + or r13,r13 + je NEAR $L$_after_reduction_228 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_228: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_7_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_229 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_229 + +$L$_16_blocks_overflow_229: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_229: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_230 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_230 +$L$_small_initial_partial_block_230: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_230: + + or r13,r13 + je NEAR $L$_after_reduction_230 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_230: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_8_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_231 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_231 + +$L$_16_blocks_overflow_231: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_231: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_232 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_232 +$L$_small_initial_partial_block_232: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_232: + + or r13,r13 + je NEAR $L$_after_reduction_232 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_232: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_9_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_233 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_233 + +$L$_16_blocks_overflow_233: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_233: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb xmm20,xmm4,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_234 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_234 +$L$_small_initial_partial_block_234: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_234: + + or r13,r13 + je NEAR $L$_after_reduction_234 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_234: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_10_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_235 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_235 + +$L$_16_blocks_overflow_235: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_235: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb ymm20,ymm4,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_236 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_236 +$L$_small_initial_partial_block_236: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_236: + + or r13,r13 + je NEAR $L$_after_reduction_236 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_236: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_11_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_237 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_237 + +$L$_16_blocks_overflow_237: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_237: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_238 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_238 +$L$_small_initial_partial_block_238: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_238: + + or r13,r13 + je NEAR $L$_after_reduction_238 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_238: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_12_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_239 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_239 + +$L$_16_blocks_overflow_239: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_239: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_240 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_240 +$L$_small_initial_partial_block_240: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_240: + + or r13,r13 + je NEAR $L$_after_reduction_240 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_240: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_13_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_241 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_241 + +$L$_16_blocks_overflow_241: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_241: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb xmm21,xmm5,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_242 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_242 +$L$_small_initial_partial_block_242: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_242: + + or r13,r13 + je NEAR $L$_after_reduction_242 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_242: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_14_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_243 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_243 + +$L$_16_blocks_overflow_243: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_243: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb ymm21,ymm5,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_244 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_244 +$L$_small_initial_partial_block_244: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_244: + + or r13,r13 + je NEAR $L$_after_reduction_244 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_244: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_15_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_245 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_245 + +$L$_16_blocks_overflow_245: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_245: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_246 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_246 +$L$_small_initial_partial_block_246: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_246: + + or r13,r13 + je NEAR $L$_after_reduction_246 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_246: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_16_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_247 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_247 + +$L$_16_blocks_overflow_247: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_247: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_248: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_248: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_248: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_0_216: + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_216: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_172 +$L$_encrypt_16_blocks_172: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_249 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_249 +$L$_16_blocks_overflow_249: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_249: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + vmovdqa64 zmm13,ZMMWORD[1024+rsp] + vmovdqu64 zmm12,ZMMWORD[256+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1088+rsp] + vmovdqu64 zmm12,ZMMWORD[320+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1152+rsp] + vmovdqu64 zmm12,ZMMWORD[384+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1216+rsp] + vmovdqu64 zmm12,ZMMWORD[448+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + sub r13,256 + add r11,256 + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_250 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_250 + jb NEAR $L$_last_num_blocks_is_7_1_250 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_250 + jb NEAR $L$_last_num_blocks_is_11_9_250 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_250 + ja NEAR $L$_last_num_blocks_is_16_250 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_250 + jmp NEAR $L$_last_num_blocks_is_13_250 + +$L$_last_num_blocks_is_11_9_250: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_250 + ja NEAR $L$_last_num_blocks_is_11_250 + jmp NEAR $L$_last_num_blocks_is_9_250 + +$L$_last_num_blocks_is_7_1_250: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_250 + jb NEAR $L$_last_num_blocks_is_3_1_250 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_250 + je NEAR $L$_last_num_blocks_is_6_250 + jmp NEAR $L$_last_num_blocks_is_5_250 + +$L$_last_num_blocks_is_3_1_250: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_250 + je NEAR $L$_last_num_blocks_is_2_250 +$L$_last_num_blocks_is_1_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_251 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_251 + +$L$_16_blocks_overflow_251: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_251: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc xmm0,xmm0,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm17,xmm0,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_252 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_252 +$L$_small_initial_partial_block_252: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_252 +$L$_small_initial_compute_done_252: +$L$_after_reduction_252: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_2_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_253 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_253 + +$L$_16_blocks_overflow_253: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_253: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc ymm0,ymm0,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm17,ymm0,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_254 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_254 +$L$_small_initial_partial_block_254: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_254: + + or r13,r13 + je NEAR $L$_after_reduction_254 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_254: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_3_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_255 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_255 + +$L$_16_blocks_overflow_255: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_255: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_256 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_256 +$L$_small_initial_partial_block_256: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_256: + + or r13,r13 + je NEAR $L$_after_reduction_256 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_256: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_4_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_257 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_257 + +$L$_16_blocks_overflow_257: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_257: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_258 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_258 +$L$_small_initial_partial_block_258: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_258: + + or r13,r13 + je NEAR $L$_after_reduction_258 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_258: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_5_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_259 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_259 + +$L$_16_blocks_overflow_259: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_259: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb xmm19,xmm3,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_260 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_260 +$L$_small_initial_partial_block_260: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_260: + + or r13,r13 + je NEAR $L$_after_reduction_260 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_260: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_6_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_261 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_261 + +$L$_16_blocks_overflow_261: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_261: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb ymm19,ymm3,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_262 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_262 +$L$_small_initial_partial_block_262: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_262: + + or r13,r13 + je NEAR $L$_after_reduction_262 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_262: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_7_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_263 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_263 + +$L$_16_blocks_overflow_263: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_263: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_264 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_264 +$L$_small_initial_partial_block_264: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_264: + + or r13,r13 + je NEAR $L$_after_reduction_264 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_264: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_8_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_265 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_265 + +$L$_16_blocks_overflow_265: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_265: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_266 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_266 +$L$_small_initial_partial_block_266: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_266: + + or r13,r13 + je NEAR $L$_after_reduction_266 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_266: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_9_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_267 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_267 + +$L$_16_blocks_overflow_267: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_267: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb xmm20,xmm4,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_268 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_268 +$L$_small_initial_partial_block_268: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_268: + + or r13,r13 + je NEAR $L$_after_reduction_268 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_268: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_10_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_269 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_269 + +$L$_16_blocks_overflow_269: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_269: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb ymm20,ymm4,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_270 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_270 +$L$_small_initial_partial_block_270: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_270: + + or r13,r13 + je NEAR $L$_after_reduction_270 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_270: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_11_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_271 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_271 + +$L$_16_blocks_overflow_271: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_271: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_272 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_272 +$L$_small_initial_partial_block_272: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_272: + + or r13,r13 + je NEAR $L$_after_reduction_272 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_272: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_12_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_273 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_273 + +$L$_16_blocks_overflow_273: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_273: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_274 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_274 +$L$_small_initial_partial_block_274: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_274: + + or r13,r13 + je NEAR $L$_after_reduction_274 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_274: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_13_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_275 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_275 + +$L$_16_blocks_overflow_275: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_275: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb xmm21,xmm5,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_276 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_276 +$L$_small_initial_partial_block_276: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_276: + + or r13,r13 + je NEAR $L$_after_reduction_276 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_276: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_14_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_277 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_277 + +$L$_16_blocks_overflow_277: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_277: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb ymm21,ymm5,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_278 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_278 +$L$_small_initial_partial_block_278: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_278: + + or r13,r13 + je NEAR $L$_after_reduction_278 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_278: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_15_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_279 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_279 + +$L$_16_blocks_overflow_279: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_279: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_280 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_280 +$L$_small_initial_partial_block_280: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_280: + + or r13,r13 + je NEAR $L$_after_reduction_280 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_280: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_16_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_281 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_281 + +$L$_16_blocks_overflow_281: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_281: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_282: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_282: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_282: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_0_250: + vmovdqa64 zmm13,ZMMWORD[1280+rsp] + vmovdqu64 zmm12,ZMMWORD[512+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1344+rsp] + vmovdqu64 zmm12,ZMMWORD[576+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1408+rsp] + vmovdqu64 zmm12,ZMMWORD[640+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1472+rsp] + vmovdqu64 zmm12,ZMMWORD[704+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_250: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_172 + +$L$_message_below_32_blocks_172: + + + sub r13,256 + add r11,256 + mov r10d,r13d + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_283 + vmovdqu64 zmm3,ZMMWORD[640+rsp] + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[576+rsp] + vmovdqu64 zmm5,ZMMWORD[512+rsp] + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm5 +$L$_skip_hkeys_precomputation_283: + mov r14,1 + and r10d,~15 + mov ebx,512 + sub ebx,r10d + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_284 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_284 + jb NEAR $L$_last_num_blocks_is_7_1_284 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_284 + jb NEAR $L$_last_num_blocks_is_11_9_284 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_284 + ja NEAR $L$_last_num_blocks_is_16_284 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_284 + jmp NEAR $L$_last_num_blocks_is_13_284 + +$L$_last_num_blocks_is_11_9_284: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_284 + ja NEAR $L$_last_num_blocks_is_11_284 + jmp NEAR $L$_last_num_blocks_is_9_284 + +$L$_last_num_blocks_is_7_1_284: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_284 + jb NEAR $L$_last_num_blocks_is_3_1_284 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_284 + je NEAR $L$_last_num_blocks_is_6_284 + jmp NEAR $L$_last_num_blocks_is_5_284 + +$L$_last_num_blocks_is_3_1_284: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_284 + je NEAR $L$_last_num_blocks_is_2_284 +$L$_last_num_blocks_is_1_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_285 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_285 + +$L$_16_blocks_overflow_285: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_285: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm17,xmm0,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_286 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_286 +$L$_small_initial_partial_block_286: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_286 +$L$_small_initial_compute_done_286: +$L$_after_reduction_286: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_2_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_287 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_287 + +$L$_16_blocks_overflow_287: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_287: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm17,ymm0,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_288 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_288 +$L$_small_initial_partial_block_288: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_288: + + or r13,r13 + je NEAR $L$_after_reduction_288 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_288: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_3_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_289 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_289 + +$L$_16_blocks_overflow_289: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_289: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_290 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_290 +$L$_small_initial_partial_block_290: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_290: + + or r13,r13 + je NEAR $L$_after_reduction_290 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_290: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_4_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_291 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_291 + +$L$_16_blocks_overflow_291: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_291: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_292 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_292 +$L$_small_initial_partial_block_292: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_292: + + or r13,r13 + je NEAR $L$_after_reduction_292 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_292: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_5_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_293 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_293 + +$L$_16_blocks_overflow_293: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_293: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb xmm19,xmm3,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_294 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_294 +$L$_small_initial_partial_block_294: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_294: + + or r13,r13 + je NEAR $L$_after_reduction_294 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_294: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_6_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_295 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_295 + +$L$_16_blocks_overflow_295: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_295: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb ymm19,ymm3,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_296 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_296 +$L$_small_initial_partial_block_296: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_296: + + or r13,r13 + je NEAR $L$_after_reduction_296 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_296: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_7_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_297 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_297 + +$L$_16_blocks_overflow_297: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_297: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_298 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_298 +$L$_small_initial_partial_block_298: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_298: + + or r13,r13 + je NEAR $L$_after_reduction_298 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_298: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_8_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_299 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_299 + +$L$_16_blocks_overflow_299: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_299: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_300 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_300 +$L$_small_initial_partial_block_300: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_300: + + or r13,r13 + je NEAR $L$_after_reduction_300 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_300: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_9_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_301 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_301 + +$L$_16_blocks_overflow_301: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_301: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb xmm20,xmm4,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_302 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_302 +$L$_small_initial_partial_block_302: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_302: + + or r13,r13 + je NEAR $L$_after_reduction_302 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_302: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_10_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_303 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_303 + +$L$_16_blocks_overflow_303: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_303: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb ymm20,ymm4,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_304 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_304 +$L$_small_initial_partial_block_304: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_304: + + or r13,r13 + je NEAR $L$_after_reduction_304 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_304: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_11_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_305 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_305 + +$L$_16_blocks_overflow_305: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_305: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_306 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_306 +$L$_small_initial_partial_block_306: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_306: + + or r13,r13 + je NEAR $L$_after_reduction_306 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_306: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_12_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_307 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_307 + +$L$_16_blocks_overflow_307: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_307: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_308 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_308 +$L$_small_initial_partial_block_308: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_308: + + or r13,r13 + je NEAR $L$_after_reduction_308 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_308: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_13_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_309 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_309 + +$L$_16_blocks_overflow_309: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_309: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb xmm21,xmm5,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_310 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_310 +$L$_small_initial_partial_block_310: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_310: + + or r13,r13 + je NEAR $L$_after_reduction_310 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_310: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_14_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_311 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_311 + +$L$_16_blocks_overflow_311: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_311: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb ymm21,ymm5,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_312 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_312 +$L$_small_initial_partial_block_312: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_312: + + or r13,r13 + je NEAR $L$_after_reduction_312 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_312: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_15_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_313 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_313 + +$L$_16_blocks_overflow_313: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_313: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_314 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_314 +$L$_small_initial_partial_block_314: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_314: + + or r13,r13 + je NEAR $L$_after_reduction_314 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_314: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_16_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_315 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_315 + +$L$_16_blocks_overflow_315: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_315: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_316: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_316: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_316: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_0_284: + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_284: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_172 + +$L$_message_below_equal_16_blocks_172: + + + mov r12d,r13d + add r12d,15 + shr r12d,4 + cmp r12,8 + je NEAR $L$_small_initial_num_blocks_is_8_317 + jl NEAR $L$_small_initial_num_blocks_is_7_1_317 + + + cmp r12,12 + je NEAR $L$_small_initial_num_blocks_is_12_317 + jl NEAR $L$_small_initial_num_blocks_is_11_9_317 + + + cmp r12,16 + je NEAR $L$_small_initial_num_blocks_is_16_317 + cmp r12,15 + je NEAR $L$_small_initial_num_blocks_is_15_317 + cmp r12,14 + je NEAR $L$_small_initial_num_blocks_is_14_317 + jmp NEAR $L$_small_initial_num_blocks_is_13_317 + +$L$_small_initial_num_blocks_is_11_9_317: + + cmp r12,11 + je NEAR $L$_small_initial_num_blocks_is_11_317 + cmp r12,10 + je NEAR $L$_small_initial_num_blocks_is_10_317 + jmp NEAR $L$_small_initial_num_blocks_is_9_317 + +$L$_small_initial_num_blocks_is_7_1_317: + cmp r12,4 + je NEAR $L$_small_initial_num_blocks_is_4_317 + jl NEAR $L$_small_initial_num_blocks_is_3_1_317 + + cmp r12,7 + je NEAR $L$_small_initial_num_blocks_is_7_317 + cmp r12,6 + je NEAR $L$_small_initial_num_blocks_is_6_317 + jmp NEAR $L$_small_initial_num_blocks_is_5_317 + +$L$_small_initial_num_blocks_is_3_1_317: + + cmp r12,3 + je NEAR $L$_small_initial_num_blocks_is_3_317 + cmp r12,2 + je NEAR $L$_small_initial_num_blocks_is_2_317 + + + + + +$L$_small_initial_num_blocks_is_1_317: + vmovdqa64 xmm29,XMMWORD[SHUF_MASK] + vpaddd xmm0,xmm2,XMMWORD[ONE] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,0 + vpshufb xmm0,xmm0,xmm29 + vmovdqu8 xmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast xmm0,xmm0,xmm15 + vpxorq xmm0,xmm0,xmm6 + vextracti32x4 xmm12,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm6,xmm0,xmm29 + vextracti32x4 xmm13,zmm6,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_318 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm6,xmm20,0x01 + vpclmulqdq xmm5,xmm6,xmm20,0x10 + vpclmulqdq xmm0,xmm6,xmm20,0x11 + vpclmulqdq xmm3,xmm6,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_318 +$L$_small_initial_partial_block_318: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm13 + + jmp NEAR $L$_after_reduction_318 +$L$_small_initial_compute_done_318: +$L$_after_reduction_318: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_2_317: + vmovdqa64 ymm29,YMMWORD[SHUF_MASK] + vshufi64x2 ymm0,ymm2,ymm2,0 + vpaddd ymm0,ymm0,YMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,1 + vpshufb ymm0,ymm0,ymm29 + vmovdqu8 ymm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast ymm0,ymm0,ymm15 + vpxorq ymm0,ymm0,ymm6 + vextracti32x4 xmm12,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm6,ymm0,ymm29 + vextracti32x4 xmm13,zmm6,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_319 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm6,ymm20,0x01 + vpclmulqdq ymm5,ymm6,ymm20,0x10 + vpclmulqdq ymm0,ymm6,ymm20,0x11 + vpclmulqdq ymm3,ymm6,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_319 +$L$_small_initial_partial_block_319: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm6,xmm20,0x01 + vpclmulqdq xmm5,xmm6,xmm20,0x10 + vpclmulqdq xmm0,xmm6,xmm20,0x11 + vpclmulqdq xmm3,xmm6,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_319: + + or r13,r13 + je NEAR $L$_after_reduction_319 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_319: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_3_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,2 + vpshufb zmm0,zmm0,zmm29 + vmovdqu8 zmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vpxorq zmm0,zmm0,zmm6 + vextracti32x4 xmm12,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm6,zmm0,zmm29 + vextracti32x4 xmm13,zmm6,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_320 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_320 +$L$_small_initial_partial_block_320: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm6,ymm20,0x01 + vpclmulqdq ymm5,ymm6,ymm20,0x10 + vpclmulqdq ymm0,ymm6,ymm20,0x11 + vpclmulqdq ymm3,ymm6,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_320: + + or r13,r13 + je NEAR $L$_after_reduction_320 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_320: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_4_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,3 + vpshufb zmm0,zmm0,zmm29 + vmovdqu8 zmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vpxorq zmm0,zmm0,zmm6 + vextracti32x4 xmm12,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm6,zmm0,zmm29 + vextracti32x4 xmm13,zmm6,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_321 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_321 +$L$_small_initial_partial_block_321: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_321: + + or r13,r13 + je NEAR $L$_after_reduction_321 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_321: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_5_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 xmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast xmm3,xmm3,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq xmm3,xmm3,xmm7 + vextracti32x4 xmm12,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm0,zmm29 + vpshufb xmm7,xmm3,xmm29 + vextracti32x4 xmm13,zmm7,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_322 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm7,xmm20,0x01 + vpclmulqdq xmm5,xmm7,xmm20,0x10 + vpclmulqdq xmm0,xmm7,xmm20,0x11 + vpclmulqdq xmm3,xmm7,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_322 +$L$_small_initial_partial_block_322: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_322: + + or r13,r13 + je NEAR $L$_after_reduction_322 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_322: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_6_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 ymm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast ymm3,ymm3,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq ymm3,ymm3,ymm7 + vextracti32x4 xmm12,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm0,zmm29 + vpshufb ymm7,ymm3,ymm29 + vextracti32x4 xmm13,zmm7,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_323 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm7,ymm20,0x01 + vpclmulqdq ymm5,ymm7,ymm20,0x10 + vpclmulqdq ymm0,ymm7,ymm20,0x11 + vpclmulqdq ymm3,ymm7,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_323 +$L$_small_initial_partial_block_323: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm7,xmm20,0x01 + vpclmulqdq xmm5,xmm7,xmm20,0x10 + vpclmulqdq xmm0,xmm7,xmm20,0x11 + vpclmulqdq xmm3,xmm7,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_323: + + or r13,r13 + je NEAR $L$_after_reduction_323 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_323: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_7_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vextracti32x4 xmm12,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vextracti32x4 xmm13,zmm7,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_324 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm7,zmm20,0x01 + vpclmulqdq zmm5,zmm7,zmm20,0x10 + vpclmulqdq zmm0,zmm7,zmm20,0x11 + vpclmulqdq zmm3,zmm7,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_324 +$L$_small_initial_partial_block_324: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm7,ymm20,0x01 + vpclmulqdq ymm5,ymm7,ymm20,0x10 + vpclmulqdq ymm0,ymm7,ymm20,0x11 + vpclmulqdq ymm3,ymm7,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_324: + + or r13,r13 + je NEAR $L$_after_reduction_324 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_324: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_8_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vextracti32x4 xmm12,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vextracti32x4 xmm13,zmm7,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_325 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_325 +$L$_small_initial_partial_block_325: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm7,zmm20,0x01 + vpclmulqdq zmm5,zmm7,zmm20,0x10 + vpclmulqdq zmm0,zmm7,zmm20,0x11 + vpclmulqdq zmm3,zmm7,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_325: + + or r13,r13 + je NEAR $L$_after_reduction_325 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_325: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_9_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast xmm4,xmm4,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq xmm4,xmm4,xmm10 + vextracti32x4 xmm12,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb xmm10,xmm4,xmm29 + vextracti32x4 xmm13,zmm10,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_326 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm10,xmm20,0x01 + vpclmulqdq xmm5,xmm10,xmm20,0x10 + vpclmulqdq xmm0,xmm10,xmm20,0x11 + vpclmulqdq xmm3,xmm10,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_326 +$L$_small_initial_partial_block_326: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_326: + + or r13,r13 + je NEAR $L$_after_reduction_326 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_326: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_10_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast ymm4,ymm4,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq ymm4,ymm4,ymm10 + vextracti32x4 xmm12,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb ymm10,ymm4,ymm29 + vextracti32x4 xmm13,zmm10,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_327 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm10,ymm20,0x01 + vpclmulqdq ymm5,ymm10,ymm20,0x10 + vpclmulqdq ymm0,ymm10,ymm20,0x11 + vpclmulqdq ymm3,ymm10,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_327 +$L$_small_initial_partial_block_327: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm10,xmm20,0x01 + vpclmulqdq xmm5,xmm10,xmm20,0x10 + vpclmulqdq xmm0,xmm10,xmm20,0x11 + vpclmulqdq xmm3,xmm10,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_327: + + or r13,r13 + je NEAR $L$_after_reduction_327 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_327: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_11_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vextracti32x4 xmm12,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vextracti32x4 xmm13,zmm10,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_328 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm10,zmm20,0x01 + vpclmulqdq zmm5,zmm10,zmm20,0x10 + vpclmulqdq zmm0,zmm10,zmm20,0x11 + vpclmulqdq zmm3,zmm10,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_328 +$L$_small_initial_partial_block_328: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm10,ymm20,0x01 + vpclmulqdq ymm5,ymm10,ymm20,0x10 + vpclmulqdq ymm0,ymm10,ymm20,0x11 + vpclmulqdq ymm3,ymm10,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_328: + + or r13,r13 + je NEAR $L$_after_reduction_328 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_328: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_12_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vextracti32x4 xmm12,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vextracti32x4 xmm13,zmm10,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_329 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_329 +$L$_small_initial_partial_block_329: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm10,zmm20,0x01 + vpclmulqdq zmm5,zmm10,zmm20,0x10 + vpclmulqdq zmm0,zmm10,zmm20,0x11 + vpclmulqdq zmm3,zmm10,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_329: + + or r13,r13 + je NEAR $L$_after_reduction_329 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_329: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_13_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast xmm5,xmm5,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq xmm5,xmm5,xmm11 + vextracti32x4 xmm12,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vpshufb xmm11,xmm5,xmm29 + vextracti32x4 xmm13,zmm11,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_330 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm11,xmm20,0x01 + vpclmulqdq xmm5,xmm11,xmm20,0x10 + vpclmulqdq xmm0,xmm11,xmm20,0x11 + vpclmulqdq xmm3,xmm11,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_330 +$L$_small_initial_partial_block_330: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_330: + + or r13,r13 + je NEAR $L$_after_reduction_330 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_330: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_14_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast ymm5,ymm5,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq ymm5,ymm5,ymm11 + vextracti32x4 xmm12,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vpshufb ymm11,ymm5,ymm29 + vextracti32x4 xmm13,zmm11,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_331 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm11,ymm20,0x01 + vpclmulqdq ymm5,ymm11,ymm20,0x10 + vpclmulqdq ymm0,ymm11,ymm20,0x11 + vpclmulqdq ymm3,ymm11,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_331 +$L$_small_initial_partial_block_331: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm11,xmm20,0x01 + vpclmulqdq xmm5,xmm11,xmm20,0x10 + vpclmulqdq xmm0,xmm11,xmm20,0x11 + vpclmulqdq xmm3,xmm11,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_331: + + or r13,r13 + je NEAR $L$_after_reduction_331 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_331: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_15_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast zmm5,zmm5,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq zmm5,zmm5,zmm11 + vextracti32x4 xmm12,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vpshufb zmm11,zmm5,zmm29 + vextracti32x4 xmm13,zmm11,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_332 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm11,zmm20,0x01 + vpclmulqdq zmm5,zmm11,zmm20,0x10 + vpclmulqdq zmm0,zmm11,zmm20,0x11 + vpclmulqdq zmm3,zmm11,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_332 +$L$_small_initial_partial_block_332: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm11,ymm20,0x01 + vpclmulqdq ymm5,ymm11,ymm20,0x10 + vpclmulqdq ymm0,ymm11,ymm20,0x11 + vpclmulqdq ymm3,ymm11,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_332: + + or r13,r13 + je NEAR $L$_after_reduction_332 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_332: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_16_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast zmm5,zmm5,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq zmm5,zmm5,zmm11 + vextracti32x4 xmm12,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vpshufb zmm11,zmm5,zmm29 + vextracti32x4 xmm13,zmm11,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_333: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm11,zmm20,0x01 + vpclmulqdq zmm5,zmm11,zmm20,0x10 + vpclmulqdq zmm0,zmm11,zmm20,0x11 + vpclmulqdq zmm3,zmm11,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_333: + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_333: +$L$_small_initial_blocks_encrypted_317: +$L$_ghash_done_172: + vmovdqu64 XMMWORD[rdx],xmm2 + vmovdqu64 XMMWORD[64+rdx],xmm14 +$L$_enc_dec_done_172: + jmp NEAR $L$exit_gcm_encrypt +ALIGN 32 +$L$aes_gcm_encrypt_256_avx512: + cmp QWORD[112+rbp],0 + je NEAR $L$_enc_dec_done_334 + xor r14,r14 + vmovdqu64 xmm14,XMMWORD[64+rdx] + + mov r11,QWORD[r8] + or r11,r11 + je NEAR $L$_partial_block_done_335 + mov r10d,16 + lea r12,[byte_len_to_mask_table] + cmp QWORD[112+rbp],r10 + cmovc r10,QWORD[112+rbp] + add r12,r10 + add r12,r10 + kmovw k1,[r12] + vmovdqu8 xmm0{k1}{z},[r9] + + vmovdqu64 xmm3,XMMWORD[16+rdx] + vmovdqu64 xmm4,XMMWORD[336+rdx] + + + + lea r12,[SHIFT_MASK] + add r12,r11 + vmovdqu64 xmm5,XMMWORD[r12] + vpshufb xmm3,xmm3,xmm5 + vpxorq xmm3,xmm3,xmm0 + + + mov r13,QWORD[112+rbp] + add r13,r11 + sub r13,16 + jge NEAR $L$_no_extra_mask_335 + sub r12,r13 +$L$_no_extra_mask_335: + + + + vmovdqu64 xmm0,XMMWORD[16+r12] + vpand xmm3,xmm3,xmm0 + vpshufb xmm3,xmm3,XMMWORD[SHUF_MASK] + vpshufb xmm3,xmm3,xmm5 + vpxorq xmm14,xmm14,xmm3 + cmp r13,0 + jl NEAR $L$_partial_incomplete_335 + + vpclmulqdq xmm7,xmm14,xmm4,0x11 + vpclmulqdq xmm10,xmm14,xmm4,0x00 + vpclmulqdq xmm11,xmm14,xmm4,0x01 + vpclmulqdq xmm14,xmm14,xmm4,0x10 + vpxorq xmm14,xmm14,xmm11 + + vpsrldq xmm11,xmm14,8 + vpslldq xmm14,xmm14,8 + vpxorq xmm7,xmm7,xmm11 + vpxorq xmm14,xmm14,xmm10 + + + + vmovdqu64 xmm11,XMMWORD[POLY2] + + vpclmulqdq xmm10,xmm11,xmm14,0x01 + vpslldq xmm10,xmm10,8 + vpxorq xmm14,xmm14,xmm10 + + + + vpclmulqdq xmm10,xmm11,xmm14,0x00 + vpsrldq xmm10,xmm10,4 + vpclmulqdq xmm14,xmm11,xmm14,0x10 + vpslldq xmm14,xmm14,4 + + vpternlogq xmm14,xmm7,xmm10,0x96 + + mov QWORD[r8],0 + + mov r12,r11 + mov r11,16 + sub r11,r12 + jmp NEAR $L$_enc_dec_done_335 + +$L$_partial_incomplete_335: + mov r12,QWORD[112+rbp] + add QWORD[r8],r12 + mov r11,QWORD[112+rbp] + +$L$_enc_dec_done_335: + + + lea r12,[byte_len_to_mask_table] + kmovw k1,[r11*2+r12] + vmovdqu64 XMMWORD[64+rdx],xmm14 + + vpshufb xmm3,xmm3,XMMWORD[SHUF_MASK] + vpshufb xmm3,xmm3,xmm5 + mov r12,QWORD[120+rbp] + vmovdqu8 XMMWORD[r12]{k1},xmm3 +$L$_partial_block_done_335: + vmovdqu64 xmm2,XMMWORD[rdx] + mov r13,QWORD[112+rbp] + sub r13,r11 + je NEAR $L$_enc_dec_done_334 + cmp r13,256 + jbe NEAR $L$_message_below_equal_16_blocks_334 + + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vmovdqa64 zmm27,ZMMWORD[ddq_addbe_4444] + vmovdqa64 zmm28,ZMMWORD[ddq_addbe_1234] + + + + + + + vmovd r15d,xmm2 + and r15d,255 + + vshufi64x2 zmm2,zmm2,zmm2,0 + vpshufb zmm2,zmm2,zmm29 + + + + cmp r15b,240 + jae NEAR $L$_next_16_overflow_336 + vpaddd zmm7,zmm2,zmm28 + vpaddd zmm10,zmm7,zmm27 + vpaddd zmm11,zmm10,zmm27 + vpaddd zmm12,zmm11,zmm27 + jmp NEAR $L$_next_16_ok_336 +$L$_next_16_overflow_336: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm12,ZMMWORD[ddq_add_4444] + vpaddd zmm7,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm10,zmm7,zmm12 + vpaddd zmm11,zmm10,zmm12 + vpaddd zmm12,zmm11,zmm12 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 +$L$_next_16_ok_336: + vshufi64x2 zmm2,zmm12,zmm12,255 + add r15b,16 + + vmovdqu8 zmm0,ZMMWORD[r11*1+r9] + vmovdqu8 zmm3,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm4,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm5,ZMMWORD[192+r11*1+r9] + + + vbroadcastf64x2 zmm6,ZMMWORD[rcx] + vpxorq zmm7,zmm7,zmm6 + vpxorq zmm10,zmm10,zmm6 + vpxorq zmm11,zmm11,zmm6 + vpxorq zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[16+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[32+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[48+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[64+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[80+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[96+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[112+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[128+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[144+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[160+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[176+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[192+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[208+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[224+rcx] + vaesenclast zmm7,zmm7,zmm6 + vaesenclast zmm10,zmm10,zmm6 + vaesenclast zmm11,zmm11,zmm6 + vaesenclast zmm12,zmm12,zmm6 + + + vpxorq zmm7,zmm7,zmm0 + vpxorq zmm10,zmm10,zmm3 + vpxorq zmm11,zmm11,zmm4 + vpxorq zmm12,zmm12,zmm5 + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm7 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm10 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm11 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm12 + + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm7 + vmovdqa64 ZMMWORD[832+rsp],zmm10 + vmovdqa64 ZMMWORD[896+rsp],zmm11 + vmovdqa64 ZMMWORD[960+rsp],zmm12 + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_337 + + vmovdqu64 zmm0,ZMMWORD[288+rdx] + vmovdqu64 ZMMWORD[704+rsp],zmm0 + + vmovdqu64 zmm3,ZMMWORD[224+rdx] + vmovdqu64 ZMMWORD[640+rsp],zmm3 + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[160+rdx] + vmovdqu64 ZMMWORD[576+rsp],zmm4 + + vmovdqu64 zmm5,ZMMWORD[96+rdx] + vmovdqu64 ZMMWORD[512+rsp],zmm5 +$L$_skip_hkeys_precomputation_337: + cmp r13,512 + jb NEAR $L$_message_below_32_blocks_334 + + + + cmp r15b,240 + jae NEAR $L$_next_16_overflow_338 + vpaddd zmm7,zmm2,zmm28 + vpaddd zmm10,zmm7,zmm27 + vpaddd zmm11,zmm10,zmm27 + vpaddd zmm12,zmm11,zmm27 + jmp NEAR $L$_next_16_ok_338 +$L$_next_16_overflow_338: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm12,ZMMWORD[ddq_add_4444] + vpaddd zmm7,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm10,zmm7,zmm12 + vpaddd zmm11,zmm10,zmm12 + vpaddd zmm12,zmm11,zmm12 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 +$L$_next_16_ok_338: + vshufi64x2 zmm2,zmm12,zmm12,255 + add r15b,16 + + vmovdqu8 zmm0,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm3,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm4,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm5,ZMMWORD[448+r11*1+r9] + + + vbroadcastf64x2 zmm6,ZMMWORD[rcx] + vpxorq zmm7,zmm7,zmm6 + vpxorq zmm10,zmm10,zmm6 + vpxorq zmm11,zmm11,zmm6 + vpxorq zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[16+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[32+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[48+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[64+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[80+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[96+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[112+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[128+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[144+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[160+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[176+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[192+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[208+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[224+rcx] + vaesenclast zmm7,zmm7,zmm6 + vaesenclast zmm10,zmm10,zmm6 + vaesenclast zmm11,zmm11,zmm6 + vaesenclast zmm12,zmm12,zmm6 + + + vpxorq zmm7,zmm7,zmm0 + vpxorq zmm10,zmm10,zmm3 + vpxorq zmm11,zmm11,zmm4 + vpxorq zmm12,zmm12,zmm5 + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm7 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm10 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm11 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm12 + + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 + vmovdqa64 ZMMWORD[1024+rsp],zmm7 + vmovdqa64 ZMMWORD[1088+rsp],zmm10 + vmovdqa64 ZMMWORD[1152+rsp],zmm11 + vmovdqa64 ZMMWORD[1216+rsp],zmm12 + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_339 + vmovdqu64 zmm3,ZMMWORD[640+rsp] + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[576+rsp] + vmovdqu64 zmm5,ZMMWORD[512+rsp] + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[192+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[128+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[64+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[rsp],zmm5 +$L$_skip_hkeys_precomputation_339: + mov r14,1 + add r11,512 + sub r13,512 + + cmp r13,768 + jb NEAR $L$_no_more_big_nblocks_334 +$L$_encrypt_big_nblocks_334: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_340 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_340 +$L$_16_blocks_overflow_340: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_340: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_341 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_341 +$L$_16_blocks_overflow_341: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_341: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[256+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[320+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[384+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[448+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[448+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vpternlogq zmm24,zmm6,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm0 + vmovdqa64 ZMMWORD[832+rsp],zmm3 + vmovdqa64 ZMMWORD[896+rsp],zmm4 + vmovdqa64 ZMMWORD[960+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_342 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_342 +$L$_16_blocks_overflow_342: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_342: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[512+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[576+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[640+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[704+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + + + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpternlogq zmm6,zmm12,zmm15,0x96 + vpxorq zmm6,zmm6,zmm24 + vpternlogq zmm7,zmm13,zmm10,0x96 + vpxorq zmm7,zmm7,zmm25 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vextracti64x4 ymm12,zmm6,1 + vpxorq ymm6,ymm6,ymm12 + vextracti32x4 xmm12,ymm6,1 + vpxorq xmm6,xmm6,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm6,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[512+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[576+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[640+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[704+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[1024+rsp],zmm0 + vmovdqa64 ZMMWORD[1088+rsp],zmm3 + vmovdqa64 ZMMWORD[1152+rsp],zmm4 + vmovdqa64 ZMMWORD[1216+rsp],zmm5 + vmovdqa64 zmm14,zmm6 + + add r11,768 + sub r13,768 + cmp r13,768 + jae NEAR $L$_encrypt_big_nblocks_334 + +$L$_no_more_big_nblocks_334: + + cmp r13,512 + jae NEAR $L$_encrypt_32_blocks_334 + + cmp r13,256 + jae NEAR $L$_encrypt_16_blocks_334 +$L$_encrypt_0_blocks_ghash_32_334: + mov r10d,r13d + and r10d,~15 + mov ebx,256 + sub ebx,r10d + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + add ebx,256 + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_343 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_343 + jb NEAR $L$_last_num_blocks_is_7_1_343 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_343 + jb NEAR $L$_last_num_blocks_is_11_9_343 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_343 + ja NEAR $L$_last_num_blocks_is_16_343 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_343 + jmp NEAR $L$_last_num_blocks_is_13_343 + +$L$_last_num_blocks_is_11_9_343: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_343 + ja NEAR $L$_last_num_blocks_is_11_343 + jmp NEAR $L$_last_num_blocks_is_9_343 + +$L$_last_num_blocks_is_7_1_343: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_343 + jb NEAR $L$_last_num_blocks_is_3_1_343 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_343 + je NEAR $L$_last_num_blocks_is_6_343 + jmp NEAR $L$_last_num_blocks_is_5_343 + +$L$_last_num_blocks_is_3_1_343: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_343 + je NEAR $L$_last_num_blocks_is_2_343 +$L$_last_num_blocks_is_1_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_344 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_344 + +$L$_16_blocks_overflow_344: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_344: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm17,xmm0,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_345 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_345 +$L$_small_initial_partial_block_345: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_345 +$L$_small_initial_compute_done_345: +$L$_after_reduction_345: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_2_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_346 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_346 + +$L$_16_blocks_overflow_346: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_346: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm17,ymm0,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_347 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_347 +$L$_small_initial_partial_block_347: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_347: + + or r13,r13 + je NEAR $L$_after_reduction_347 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_347: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_3_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_348 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_348 + +$L$_16_blocks_overflow_348: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_348: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_349 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_349 +$L$_small_initial_partial_block_349: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_349: + + or r13,r13 + je NEAR $L$_after_reduction_349 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_349: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_4_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_350 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_350 + +$L$_16_blocks_overflow_350: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_350: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_351 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_351 +$L$_small_initial_partial_block_351: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_351: + + or r13,r13 + je NEAR $L$_after_reduction_351 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_351: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_5_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_352 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_352 + +$L$_16_blocks_overflow_352: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_352: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb xmm19,xmm3,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_353 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_353 +$L$_small_initial_partial_block_353: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_353: + + or r13,r13 + je NEAR $L$_after_reduction_353 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_353: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_6_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_354 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_354 + +$L$_16_blocks_overflow_354: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_354: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb ymm19,ymm3,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_355 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_355 +$L$_small_initial_partial_block_355: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_355: + + or r13,r13 + je NEAR $L$_after_reduction_355 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_355: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_7_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_356 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_356 + +$L$_16_blocks_overflow_356: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_356: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_357 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_357 +$L$_small_initial_partial_block_357: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_357: + + or r13,r13 + je NEAR $L$_after_reduction_357 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_357: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_8_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_358 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_358 + +$L$_16_blocks_overflow_358: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_358: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_359 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_359 +$L$_small_initial_partial_block_359: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_359: + + or r13,r13 + je NEAR $L$_after_reduction_359 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_359: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_9_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_360 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_360 + +$L$_16_blocks_overflow_360: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_360: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb xmm20,xmm4,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_361 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_361 +$L$_small_initial_partial_block_361: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_361: + + or r13,r13 + je NEAR $L$_after_reduction_361 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_361: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_10_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_362 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_362 + +$L$_16_blocks_overflow_362: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_362: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb ymm20,ymm4,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_363 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_363 +$L$_small_initial_partial_block_363: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_363: + + or r13,r13 + je NEAR $L$_after_reduction_363 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_363: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_11_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_364 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_364 + +$L$_16_blocks_overflow_364: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_364: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_365 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_365 +$L$_small_initial_partial_block_365: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_365: + + or r13,r13 + je NEAR $L$_after_reduction_365 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_365: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_12_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_366 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_366 + +$L$_16_blocks_overflow_366: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_366: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_367 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_367 +$L$_small_initial_partial_block_367: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_367: + + or r13,r13 + je NEAR $L$_after_reduction_367 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_367: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_13_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_368 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_368 + +$L$_16_blocks_overflow_368: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_368: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb xmm21,xmm5,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_369 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_369 +$L$_small_initial_partial_block_369: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_369: + + or r13,r13 + je NEAR $L$_after_reduction_369 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_369: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_14_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_370 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_370 + +$L$_16_blocks_overflow_370: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_370: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb ymm21,ymm5,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_371 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_371 +$L$_small_initial_partial_block_371: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_371: + + or r13,r13 + je NEAR $L$_after_reduction_371 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_371: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_15_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_372 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_372 + +$L$_16_blocks_overflow_372: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_372: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_373 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_373 +$L$_small_initial_partial_block_373: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_373: + + or r13,r13 + je NEAR $L$_after_reduction_373 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_373: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_16_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_374 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_374 + +$L$_16_blocks_overflow_374: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_374: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_375: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_375: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_375: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_0_343: + vmovdqa64 zmm13,ZMMWORD[1024+rsp] + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1088+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1152+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1216+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_343: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_334 +$L$_encrypt_32_blocks_334: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_376 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_376 +$L$_16_blocks_overflow_376: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_376: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_377 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_377 +$L$_16_blocks_overflow_377: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_377: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[256+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[320+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[384+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[448+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[448+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vpternlogq zmm24,zmm6,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm0 + vmovdqa64 ZMMWORD[832+rsp],zmm3 + vmovdqa64 ZMMWORD[896+rsp],zmm4 + vmovdqa64 ZMMWORD[960+rsp],zmm5 + vmovdqa64 zmm13,ZMMWORD[1280+rsp] + vmovdqu64 zmm12,ZMMWORD[512+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1344+rsp] + vmovdqu64 zmm12,ZMMWORD[576+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1408+rsp] + vmovdqu64 zmm12,ZMMWORD[640+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1472+rsp] + vmovdqu64 zmm12,ZMMWORD[704+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + + sub r13,512 + add r11,512 + mov r10d,r13d + and r10d,~15 + mov ebx,512 + sub ebx,r10d + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_378 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_378 + jb NEAR $L$_last_num_blocks_is_7_1_378 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_378 + jb NEAR $L$_last_num_blocks_is_11_9_378 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_378 + ja NEAR $L$_last_num_blocks_is_16_378 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_378 + jmp NEAR $L$_last_num_blocks_is_13_378 + +$L$_last_num_blocks_is_11_9_378: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_378 + ja NEAR $L$_last_num_blocks_is_11_378 + jmp NEAR $L$_last_num_blocks_is_9_378 + +$L$_last_num_blocks_is_7_1_378: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_378 + jb NEAR $L$_last_num_blocks_is_3_1_378 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_378 + je NEAR $L$_last_num_blocks_is_6_378 + jmp NEAR $L$_last_num_blocks_is_5_378 + +$L$_last_num_blocks_is_3_1_378: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_378 + je NEAR $L$_last_num_blocks_is_2_378 +$L$_last_num_blocks_is_1_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_379 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_379 + +$L$_16_blocks_overflow_379: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_379: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm17,xmm0,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_380 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_380 +$L$_small_initial_partial_block_380: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_380 +$L$_small_initial_compute_done_380: +$L$_after_reduction_380: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_2_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_381 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_381 + +$L$_16_blocks_overflow_381: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_381: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm17,ymm0,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_382 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_382 +$L$_small_initial_partial_block_382: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_382: + + or r13,r13 + je NEAR $L$_after_reduction_382 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_382: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_3_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_383 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_383 + +$L$_16_blocks_overflow_383: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_383: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_384 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_384 +$L$_small_initial_partial_block_384: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_384: + + or r13,r13 + je NEAR $L$_after_reduction_384 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_384: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_4_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_385 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_385 + +$L$_16_blocks_overflow_385: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_385: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_386 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_386 +$L$_small_initial_partial_block_386: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_386: + + or r13,r13 + je NEAR $L$_after_reduction_386 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_386: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_5_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_387 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_387 + +$L$_16_blocks_overflow_387: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_387: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb xmm19,xmm3,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_388 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_388 +$L$_small_initial_partial_block_388: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_388: + + or r13,r13 + je NEAR $L$_after_reduction_388 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_388: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_6_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_389 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_389 + +$L$_16_blocks_overflow_389: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_389: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb ymm19,ymm3,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_390 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_390 +$L$_small_initial_partial_block_390: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_390: + + or r13,r13 + je NEAR $L$_after_reduction_390 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_390: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_7_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_391 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_391 + +$L$_16_blocks_overflow_391: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_391: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_392 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_392 +$L$_small_initial_partial_block_392: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_392: + + or r13,r13 + je NEAR $L$_after_reduction_392 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_392: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_8_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_393 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_393 + +$L$_16_blocks_overflow_393: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_393: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_394 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_394 +$L$_small_initial_partial_block_394: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_394: + + or r13,r13 + je NEAR $L$_after_reduction_394 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_394: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_9_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_395 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_395 + +$L$_16_blocks_overflow_395: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_395: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb xmm20,xmm4,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_396 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_396 +$L$_small_initial_partial_block_396: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_396: + + or r13,r13 + je NEAR $L$_after_reduction_396 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_396: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_10_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_397 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_397 + +$L$_16_blocks_overflow_397: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_397: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb ymm20,ymm4,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_398 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_398 +$L$_small_initial_partial_block_398: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_398: + + or r13,r13 + je NEAR $L$_after_reduction_398 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_398: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_11_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_399 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_399 + +$L$_16_blocks_overflow_399: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_399: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_400 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_400 +$L$_small_initial_partial_block_400: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_400: + + or r13,r13 + je NEAR $L$_after_reduction_400 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_400: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_12_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_401 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_401 + +$L$_16_blocks_overflow_401: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_401: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_402 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_402 +$L$_small_initial_partial_block_402: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_402: + + or r13,r13 + je NEAR $L$_after_reduction_402 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_402: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_13_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_403 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_403 + +$L$_16_blocks_overflow_403: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_403: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb xmm21,xmm5,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_404 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_404 +$L$_small_initial_partial_block_404: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_404: + + or r13,r13 + je NEAR $L$_after_reduction_404 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_404: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_14_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_405 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_405 + +$L$_16_blocks_overflow_405: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_405: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb ymm21,ymm5,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_406 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_406 +$L$_small_initial_partial_block_406: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_406: + + or r13,r13 + je NEAR $L$_after_reduction_406 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_406: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_15_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_407 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_407 + +$L$_16_blocks_overflow_407: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_407: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_408 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_408 +$L$_small_initial_partial_block_408: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_408: + + or r13,r13 + je NEAR $L$_after_reduction_408 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_408: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_16_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_409 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_409 + +$L$_16_blocks_overflow_409: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_409: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_410: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_410: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_410: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_0_378: + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_378: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_334 +$L$_encrypt_16_blocks_334: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_411 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_411 +$L$_16_blocks_overflow_411: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_411: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + vmovdqa64 zmm13,ZMMWORD[1024+rsp] + vmovdqu64 zmm12,ZMMWORD[256+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1088+rsp] + vmovdqu64 zmm12,ZMMWORD[320+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1152+rsp] + vmovdqu64 zmm12,ZMMWORD[384+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1216+rsp] + vmovdqu64 zmm12,ZMMWORD[448+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + sub r13,256 + add r11,256 + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_412 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_412 + jb NEAR $L$_last_num_blocks_is_7_1_412 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_412 + jb NEAR $L$_last_num_blocks_is_11_9_412 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_412 + ja NEAR $L$_last_num_blocks_is_16_412 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_412 + jmp NEAR $L$_last_num_blocks_is_13_412 + +$L$_last_num_blocks_is_11_9_412: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_412 + ja NEAR $L$_last_num_blocks_is_11_412 + jmp NEAR $L$_last_num_blocks_is_9_412 + +$L$_last_num_blocks_is_7_1_412: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_412 + jb NEAR $L$_last_num_blocks_is_3_1_412 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_412 + je NEAR $L$_last_num_blocks_is_6_412 + jmp NEAR $L$_last_num_blocks_is_5_412 + +$L$_last_num_blocks_is_3_1_412: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_412 + je NEAR $L$_last_num_blocks_is_2_412 +$L$_last_num_blocks_is_1_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_413 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_413 + +$L$_16_blocks_overflow_413: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_413: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc xmm0,xmm0,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc xmm0,xmm0,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm17,xmm0,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_414 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_414 +$L$_small_initial_partial_block_414: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_414 +$L$_small_initial_compute_done_414: +$L$_after_reduction_414: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_2_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_415 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_415 + +$L$_16_blocks_overflow_415: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_415: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc ymm0,ymm0,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc ymm0,ymm0,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm17,ymm0,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_416 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_416 +$L$_small_initial_partial_block_416: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_416: + + or r13,r13 + je NEAR $L$_after_reduction_416 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_416: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_3_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_417 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_417 + +$L$_16_blocks_overflow_417: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_417: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_418 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_418 +$L$_small_initial_partial_block_418: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_418: + + or r13,r13 + je NEAR $L$_after_reduction_418 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_418: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_4_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_419 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_419 + +$L$_16_blocks_overflow_419: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_419: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_420 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_420 +$L$_small_initial_partial_block_420: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_420: + + or r13,r13 + je NEAR $L$_after_reduction_420 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_420: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_5_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_421 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_421 + +$L$_16_blocks_overflow_421: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_421: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb xmm19,xmm3,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_422 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_422 +$L$_small_initial_partial_block_422: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_422: + + or r13,r13 + je NEAR $L$_after_reduction_422 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_422: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_6_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_423 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_423 + +$L$_16_blocks_overflow_423: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_423: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb ymm19,ymm3,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_424 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_424 +$L$_small_initial_partial_block_424: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_424: + + or r13,r13 + je NEAR $L$_after_reduction_424 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_424: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_7_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_425 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_425 + +$L$_16_blocks_overflow_425: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_425: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_426 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_426 +$L$_small_initial_partial_block_426: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_426: + + or r13,r13 + je NEAR $L$_after_reduction_426 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_426: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_8_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_427 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_427 + +$L$_16_blocks_overflow_427: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_427: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_428 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_428 +$L$_small_initial_partial_block_428: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_428: + + or r13,r13 + je NEAR $L$_after_reduction_428 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_428: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_9_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_429 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_429 + +$L$_16_blocks_overflow_429: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_429: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb xmm20,xmm4,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_430 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_430 +$L$_small_initial_partial_block_430: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_430: + + or r13,r13 + je NEAR $L$_after_reduction_430 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_430: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_10_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_431 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_431 + +$L$_16_blocks_overflow_431: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_431: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb ymm20,ymm4,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_432 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_432 +$L$_small_initial_partial_block_432: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_432: + + or r13,r13 + je NEAR $L$_after_reduction_432 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_432: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_11_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_433 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_433 + +$L$_16_blocks_overflow_433: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_433: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_434 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_434 +$L$_small_initial_partial_block_434: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_434: + + or r13,r13 + je NEAR $L$_after_reduction_434 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_434: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_12_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_435 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_435 + +$L$_16_blocks_overflow_435: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_435: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_436 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_436 +$L$_small_initial_partial_block_436: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_436: + + or r13,r13 + je NEAR $L$_after_reduction_436 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_436: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_13_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_437 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_437 + +$L$_16_blocks_overflow_437: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_437: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb xmm21,xmm5,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_438 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_438 +$L$_small_initial_partial_block_438: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_438: + + or r13,r13 + je NEAR $L$_after_reduction_438 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_438: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_14_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_439 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_439 + +$L$_16_blocks_overflow_439: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_439: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb ymm21,ymm5,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_440 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_440 +$L$_small_initial_partial_block_440: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_440: + + or r13,r13 + je NEAR $L$_after_reduction_440 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_440: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_15_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_441 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_441 + +$L$_16_blocks_overflow_441: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_441: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_442 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_442 +$L$_small_initial_partial_block_442: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_442: + + or r13,r13 + je NEAR $L$_after_reduction_442 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_442: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_16_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_443 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_443 + +$L$_16_blocks_overflow_443: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_443: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_444: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_444: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_444: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_0_412: + vmovdqa64 zmm13,ZMMWORD[1280+rsp] + vmovdqu64 zmm12,ZMMWORD[512+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1344+rsp] + vmovdqu64 zmm12,ZMMWORD[576+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1408+rsp] + vmovdqu64 zmm12,ZMMWORD[640+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1472+rsp] + vmovdqu64 zmm12,ZMMWORD[704+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_412: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_334 + +$L$_message_below_32_blocks_334: + + + sub r13,256 + add r11,256 + mov r10d,r13d + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_445 + vmovdqu64 zmm3,ZMMWORD[640+rsp] + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[576+rsp] + vmovdqu64 zmm5,ZMMWORD[512+rsp] + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm5 +$L$_skip_hkeys_precomputation_445: + mov r14,1 + and r10d,~15 + mov ebx,512 + sub ebx,r10d + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_446 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_446 + jb NEAR $L$_last_num_blocks_is_7_1_446 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_446 + jb NEAR $L$_last_num_blocks_is_11_9_446 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_446 + ja NEAR $L$_last_num_blocks_is_16_446 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_446 + jmp NEAR $L$_last_num_blocks_is_13_446 + +$L$_last_num_blocks_is_11_9_446: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_446 + ja NEAR $L$_last_num_blocks_is_11_446 + jmp NEAR $L$_last_num_blocks_is_9_446 + +$L$_last_num_blocks_is_7_1_446: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_446 + jb NEAR $L$_last_num_blocks_is_3_1_446 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_446 + je NEAR $L$_last_num_blocks_is_6_446 + jmp NEAR $L$_last_num_blocks_is_5_446 + +$L$_last_num_blocks_is_3_1_446: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_446 + je NEAR $L$_last_num_blocks_is_2_446 +$L$_last_num_blocks_is_1_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_447 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_447 + +$L$_16_blocks_overflow_447: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_447: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm17,xmm0,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_448 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_448 +$L$_small_initial_partial_block_448: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_448 +$L$_small_initial_compute_done_448: +$L$_after_reduction_448: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_2_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_449 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_449 + +$L$_16_blocks_overflow_449: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_449: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm17,ymm0,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_450 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_450 +$L$_small_initial_partial_block_450: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_450: + + or r13,r13 + je NEAR $L$_after_reduction_450 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_450: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_3_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_451 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_451 + +$L$_16_blocks_overflow_451: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_451: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_452 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_452 +$L$_small_initial_partial_block_452: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_452: + + or r13,r13 + je NEAR $L$_after_reduction_452 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_452: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_4_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_453 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_453 + +$L$_16_blocks_overflow_453: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_453: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_454 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_454 +$L$_small_initial_partial_block_454: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_454: + + or r13,r13 + je NEAR $L$_after_reduction_454 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_454: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_5_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_455 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_455 + +$L$_16_blocks_overflow_455: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_455: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb xmm19,xmm3,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_456 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_456 +$L$_small_initial_partial_block_456: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_456: + + or r13,r13 + je NEAR $L$_after_reduction_456 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_456: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_6_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_457 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_457 + +$L$_16_blocks_overflow_457: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_457: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb ymm19,ymm3,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_458 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_458 +$L$_small_initial_partial_block_458: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_458: + + or r13,r13 + je NEAR $L$_after_reduction_458 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_458: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_7_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_459 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_459 + +$L$_16_blocks_overflow_459: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_459: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_460 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_460 +$L$_small_initial_partial_block_460: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_460: + + or r13,r13 + je NEAR $L$_after_reduction_460 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_460: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_8_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_461 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_461 + +$L$_16_blocks_overflow_461: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_461: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_462 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_462 +$L$_small_initial_partial_block_462: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_462: + + or r13,r13 + je NEAR $L$_after_reduction_462 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_462: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_9_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_463 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_463 + +$L$_16_blocks_overflow_463: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_463: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb xmm20,xmm4,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_464 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_464 +$L$_small_initial_partial_block_464: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_464: + + or r13,r13 + je NEAR $L$_after_reduction_464 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_464: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_10_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_465 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_465 + +$L$_16_blocks_overflow_465: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_465: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb ymm20,ymm4,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_466 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_466 +$L$_small_initial_partial_block_466: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_466: + + or r13,r13 + je NEAR $L$_after_reduction_466 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_466: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_11_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_467 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_467 + +$L$_16_blocks_overflow_467: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_467: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_468 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_468 +$L$_small_initial_partial_block_468: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_468: + + or r13,r13 + je NEAR $L$_after_reduction_468 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_468: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_12_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_469 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_469 + +$L$_16_blocks_overflow_469: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_469: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_470 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_470 +$L$_small_initial_partial_block_470: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_470: + + or r13,r13 + je NEAR $L$_after_reduction_470 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_470: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_13_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_471 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_471 + +$L$_16_blocks_overflow_471: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_471: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb xmm21,xmm5,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_472 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_472 +$L$_small_initial_partial_block_472: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_472: + + or r13,r13 + je NEAR $L$_after_reduction_472 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_472: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_14_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_473 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_473 + +$L$_16_blocks_overflow_473: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_473: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb ymm21,ymm5,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_474 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_474 +$L$_small_initial_partial_block_474: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_474: + + or r13,r13 + je NEAR $L$_after_reduction_474 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_474: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_15_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_475 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_475 + +$L$_16_blocks_overflow_475: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_475: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_476 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_476 +$L$_small_initial_partial_block_476: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_476: + + or r13,r13 + je NEAR $L$_after_reduction_476 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_476: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_16_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_477 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_477 + +$L$_16_blocks_overflow_477: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_477: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_478: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_478: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_478: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_0_446: + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_446: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_334 + +$L$_message_below_equal_16_blocks_334: + + + mov r12d,r13d + add r12d,15 + shr r12d,4 + cmp r12,8 + je NEAR $L$_small_initial_num_blocks_is_8_479 + jl NEAR $L$_small_initial_num_blocks_is_7_1_479 + + + cmp r12,12 + je NEAR $L$_small_initial_num_blocks_is_12_479 + jl NEAR $L$_small_initial_num_blocks_is_11_9_479 + + + cmp r12,16 + je NEAR $L$_small_initial_num_blocks_is_16_479 + cmp r12,15 + je NEAR $L$_small_initial_num_blocks_is_15_479 + cmp r12,14 + je NEAR $L$_small_initial_num_blocks_is_14_479 + jmp NEAR $L$_small_initial_num_blocks_is_13_479 + +$L$_small_initial_num_blocks_is_11_9_479: + + cmp r12,11 + je NEAR $L$_small_initial_num_blocks_is_11_479 + cmp r12,10 + je NEAR $L$_small_initial_num_blocks_is_10_479 + jmp NEAR $L$_small_initial_num_blocks_is_9_479 + +$L$_small_initial_num_blocks_is_7_1_479: + cmp r12,4 + je NEAR $L$_small_initial_num_blocks_is_4_479 + jl NEAR $L$_small_initial_num_blocks_is_3_1_479 + + cmp r12,7 + je NEAR $L$_small_initial_num_blocks_is_7_479 + cmp r12,6 + je NEAR $L$_small_initial_num_blocks_is_6_479 + jmp NEAR $L$_small_initial_num_blocks_is_5_479 + +$L$_small_initial_num_blocks_is_3_1_479: + + cmp r12,3 + je NEAR $L$_small_initial_num_blocks_is_3_479 + cmp r12,2 + je NEAR $L$_small_initial_num_blocks_is_2_479 + + + + + +$L$_small_initial_num_blocks_is_1_479: + vmovdqa64 xmm29,XMMWORD[SHUF_MASK] + vpaddd xmm0,xmm2,XMMWORD[ONE] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,0 + vpshufb xmm0,xmm0,xmm29 + vmovdqu8 xmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast xmm0,xmm0,xmm15 + vpxorq xmm0,xmm0,xmm6 + vextracti32x4 xmm12,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm6,xmm0,xmm29 + vextracti32x4 xmm13,zmm6,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_480 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm6,xmm20,0x01 + vpclmulqdq xmm5,xmm6,xmm20,0x10 + vpclmulqdq xmm0,xmm6,xmm20,0x11 + vpclmulqdq xmm3,xmm6,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_480 +$L$_small_initial_partial_block_480: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm13 + + jmp NEAR $L$_after_reduction_480 +$L$_small_initial_compute_done_480: +$L$_after_reduction_480: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_2_479: + vmovdqa64 ymm29,YMMWORD[SHUF_MASK] + vshufi64x2 ymm0,ymm2,ymm2,0 + vpaddd ymm0,ymm0,YMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,1 + vpshufb ymm0,ymm0,ymm29 + vmovdqu8 ymm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast ymm0,ymm0,ymm15 + vpxorq ymm0,ymm0,ymm6 + vextracti32x4 xmm12,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm6,ymm0,ymm29 + vextracti32x4 xmm13,zmm6,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_481 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm6,ymm20,0x01 + vpclmulqdq ymm5,ymm6,ymm20,0x10 + vpclmulqdq ymm0,ymm6,ymm20,0x11 + vpclmulqdq ymm3,ymm6,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_481 +$L$_small_initial_partial_block_481: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm6,xmm20,0x01 + vpclmulqdq xmm5,xmm6,xmm20,0x10 + vpclmulqdq xmm0,xmm6,xmm20,0x11 + vpclmulqdq xmm3,xmm6,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_481: + + or r13,r13 + je NEAR $L$_after_reduction_481 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_481: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_3_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,2 + vpshufb zmm0,zmm0,zmm29 + vmovdqu8 zmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vpxorq zmm0,zmm0,zmm6 + vextracti32x4 xmm12,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm6,zmm0,zmm29 + vextracti32x4 xmm13,zmm6,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_482 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_482 +$L$_small_initial_partial_block_482: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm6,ymm20,0x01 + vpclmulqdq ymm5,ymm6,ymm20,0x10 + vpclmulqdq ymm0,ymm6,ymm20,0x11 + vpclmulqdq ymm3,ymm6,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_482: + + or r13,r13 + je NEAR $L$_after_reduction_482 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_482: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_4_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,3 + vpshufb zmm0,zmm0,zmm29 + vmovdqu8 zmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vpxorq zmm0,zmm0,zmm6 + vextracti32x4 xmm12,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm6,zmm0,zmm29 + vextracti32x4 xmm13,zmm6,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_483 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_483 +$L$_small_initial_partial_block_483: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_483: + + or r13,r13 + je NEAR $L$_after_reduction_483 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_483: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_5_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 xmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast xmm3,xmm3,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq xmm3,xmm3,xmm7 + vextracti32x4 xmm12,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm0,zmm29 + vpshufb xmm7,xmm3,xmm29 + vextracti32x4 xmm13,zmm7,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_484 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm7,xmm20,0x01 + vpclmulqdq xmm5,xmm7,xmm20,0x10 + vpclmulqdq xmm0,xmm7,xmm20,0x11 + vpclmulqdq xmm3,xmm7,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_484 +$L$_small_initial_partial_block_484: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_484: + + or r13,r13 + je NEAR $L$_after_reduction_484 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_484: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_6_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 ymm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast ymm3,ymm3,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq ymm3,ymm3,ymm7 + vextracti32x4 xmm12,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm0,zmm29 + vpshufb ymm7,ymm3,ymm29 + vextracti32x4 xmm13,zmm7,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_485 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm7,ymm20,0x01 + vpclmulqdq ymm5,ymm7,ymm20,0x10 + vpclmulqdq ymm0,ymm7,ymm20,0x11 + vpclmulqdq ymm3,ymm7,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_485 +$L$_small_initial_partial_block_485: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm7,xmm20,0x01 + vpclmulqdq xmm5,xmm7,xmm20,0x10 + vpclmulqdq xmm0,xmm7,xmm20,0x11 + vpclmulqdq xmm3,xmm7,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_485: + + or r13,r13 + je NEAR $L$_after_reduction_485 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_485: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_7_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vextracti32x4 xmm12,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vextracti32x4 xmm13,zmm7,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_486 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm7,zmm20,0x01 + vpclmulqdq zmm5,zmm7,zmm20,0x10 + vpclmulqdq zmm0,zmm7,zmm20,0x11 + vpclmulqdq zmm3,zmm7,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_486 +$L$_small_initial_partial_block_486: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm7,ymm20,0x01 + vpclmulqdq ymm5,ymm7,ymm20,0x10 + vpclmulqdq ymm0,ymm7,ymm20,0x11 + vpclmulqdq ymm3,ymm7,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_486: + + or r13,r13 + je NEAR $L$_after_reduction_486 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_486: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_8_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vextracti32x4 xmm12,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vextracti32x4 xmm13,zmm7,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_487 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_487 +$L$_small_initial_partial_block_487: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm7,zmm20,0x01 + vpclmulqdq zmm5,zmm7,zmm20,0x10 + vpclmulqdq zmm0,zmm7,zmm20,0x11 + vpclmulqdq zmm3,zmm7,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_487: + + or r13,r13 + je NEAR $L$_after_reduction_487 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_487: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_9_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast xmm4,xmm4,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq xmm4,xmm4,xmm10 + vextracti32x4 xmm12,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb xmm10,xmm4,xmm29 + vextracti32x4 xmm13,zmm10,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_488 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm10,xmm20,0x01 + vpclmulqdq xmm5,xmm10,xmm20,0x10 + vpclmulqdq xmm0,xmm10,xmm20,0x11 + vpclmulqdq xmm3,xmm10,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_488 +$L$_small_initial_partial_block_488: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_488: + + or r13,r13 + je NEAR $L$_after_reduction_488 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_488: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_10_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast ymm4,ymm4,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq ymm4,ymm4,ymm10 + vextracti32x4 xmm12,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb ymm10,ymm4,ymm29 + vextracti32x4 xmm13,zmm10,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_489 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm10,ymm20,0x01 + vpclmulqdq ymm5,ymm10,ymm20,0x10 + vpclmulqdq ymm0,ymm10,ymm20,0x11 + vpclmulqdq ymm3,ymm10,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_489 +$L$_small_initial_partial_block_489: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm10,xmm20,0x01 + vpclmulqdq xmm5,xmm10,xmm20,0x10 + vpclmulqdq xmm0,xmm10,xmm20,0x11 + vpclmulqdq xmm3,xmm10,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_489: + + or r13,r13 + je NEAR $L$_after_reduction_489 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_489: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_11_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vextracti32x4 xmm12,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vextracti32x4 xmm13,zmm10,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_490 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm10,zmm20,0x01 + vpclmulqdq zmm5,zmm10,zmm20,0x10 + vpclmulqdq zmm0,zmm10,zmm20,0x11 + vpclmulqdq zmm3,zmm10,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_490 +$L$_small_initial_partial_block_490: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm10,ymm20,0x01 + vpclmulqdq ymm5,ymm10,ymm20,0x10 + vpclmulqdq ymm0,ymm10,ymm20,0x11 + vpclmulqdq ymm3,ymm10,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_490: + + or r13,r13 + je NEAR $L$_after_reduction_490 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_490: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_12_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vextracti32x4 xmm12,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vextracti32x4 xmm13,zmm10,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_491 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_491 +$L$_small_initial_partial_block_491: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm10,zmm20,0x01 + vpclmulqdq zmm5,zmm10,zmm20,0x10 + vpclmulqdq zmm0,zmm10,zmm20,0x11 + vpclmulqdq zmm3,zmm10,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_491: + + or r13,r13 + je NEAR $L$_after_reduction_491 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_491: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_13_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast xmm5,xmm5,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq xmm5,xmm5,xmm11 + vextracti32x4 xmm12,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vpshufb xmm11,xmm5,xmm29 + vextracti32x4 xmm13,zmm11,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_492 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm11,xmm20,0x01 + vpclmulqdq xmm5,xmm11,xmm20,0x10 + vpclmulqdq xmm0,xmm11,xmm20,0x11 + vpclmulqdq xmm3,xmm11,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_492 +$L$_small_initial_partial_block_492: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_492: + + or r13,r13 + je NEAR $L$_after_reduction_492 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_492: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_14_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast ymm5,ymm5,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq ymm5,ymm5,ymm11 + vextracti32x4 xmm12,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vpshufb ymm11,ymm5,ymm29 + vextracti32x4 xmm13,zmm11,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_493 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm11,ymm20,0x01 + vpclmulqdq ymm5,ymm11,ymm20,0x10 + vpclmulqdq ymm0,ymm11,ymm20,0x11 + vpclmulqdq ymm3,ymm11,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_493 +$L$_small_initial_partial_block_493: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm11,xmm20,0x01 + vpclmulqdq xmm5,xmm11,xmm20,0x10 + vpclmulqdq xmm0,xmm11,xmm20,0x11 + vpclmulqdq xmm3,xmm11,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_493: + + or r13,r13 + je NEAR $L$_after_reduction_493 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_493: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_15_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast zmm5,zmm5,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq zmm5,zmm5,zmm11 + vextracti32x4 xmm12,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vpshufb zmm11,zmm5,zmm29 + vextracti32x4 xmm13,zmm11,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_494 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm11,zmm20,0x01 + vpclmulqdq zmm5,zmm11,zmm20,0x10 + vpclmulqdq zmm0,zmm11,zmm20,0x11 + vpclmulqdq zmm3,zmm11,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_494 +$L$_small_initial_partial_block_494: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm11,ymm20,0x01 + vpclmulqdq ymm5,ymm11,ymm20,0x10 + vpclmulqdq ymm0,ymm11,ymm20,0x11 + vpclmulqdq ymm3,ymm11,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_494: + + or r13,r13 + je NEAR $L$_after_reduction_494 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_494: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_16_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast zmm5,zmm5,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq zmm5,zmm5,zmm11 + vextracti32x4 xmm12,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vpshufb zmm11,zmm5,zmm29 + vextracti32x4 xmm13,zmm11,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_495: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm11,zmm20,0x01 + vpclmulqdq zmm5,zmm11,zmm20,0x10 + vpclmulqdq zmm0,zmm11,zmm20,0x11 + vpclmulqdq zmm3,zmm11,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_495: + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_495: +$L$_small_initial_blocks_encrypted_479: +$L$_ghash_done_334: + vmovdqu64 XMMWORD[rdx],xmm2 + vmovdqu64 XMMWORD[64+rdx],xmm14 +$L$_enc_dec_done_334: + jmp NEAR $L$exit_gcm_encrypt +$L$exit_gcm_encrypt: + cmp QWORD[112+rbp],256 + jbe NEAR $L$skip_hkeys_cleanup_496 + vpxor xmm0,xmm0,xmm0 + vmovdqa64 ZMMWORD[rsp],zmm0 + vmovdqa64 ZMMWORD[64+rsp],zmm0 + vmovdqa64 ZMMWORD[128+rsp],zmm0 + vmovdqa64 ZMMWORD[192+rsp],zmm0 + vmovdqa64 ZMMWORD[256+rsp],zmm0 + vmovdqa64 ZMMWORD[320+rsp],zmm0 + vmovdqa64 ZMMWORD[384+rsp],zmm0 + vmovdqa64 ZMMWORD[448+rsp],zmm0 + vmovdqa64 ZMMWORD[512+rsp],zmm0 + vmovdqa64 ZMMWORD[576+rsp],zmm0 + vmovdqa64 ZMMWORD[640+rsp],zmm0 + vmovdqa64 ZMMWORD[704+rsp],zmm0 +$L$skip_hkeys_cleanup_496: + vzeroupper + vmovdqu xmm15,XMMWORD[((-16))+rbp] + vmovdqu xmm14,XMMWORD[((-32))+rbp] + vmovdqu xmm13,XMMWORD[((-48))+rbp] + vmovdqu xmm12,XMMWORD[((-64))+rbp] + vmovdqu xmm11,XMMWORD[((-80))+rbp] + vmovdqu xmm10,XMMWORD[((-96))+rbp] + vmovdqu xmm9,XMMWORD[((-112))+rbp] + vmovdqu xmm8,XMMWORD[((-128))+rbp] + vmovdqu xmm7,XMMWORD[((-144))+rbp] + vmovdqu xmm6,XMMWORD[((-160))+rbp] + lea rsp,[8+rbp] + pop rsi + + pop rdi + + pop r15 + + pop r14 + + pop r13 + + pop r12 + + pop rbp + + pop rbx + + DB 0F3h,0C3h ;repret +$L$encrypt_seh_end: + + +global ossl_aes_gcm_decrypt_avx512 + +ALIGN 32 +ossl_aes_gcm_decrypt_avx512: + +$L$decrypt_seh_begin: +DB 243,15,30,250 + push rbx + +$L$decrypt_seh_push_rbx: + push rbp + +$L$decrypt_seh_push_rbp: + push r12 + +$L$decrypt_seh_push_r12: + push r13 + +$L$decrypt_seh_push_r13: + push r14 + +$L$decrypt_seh_push_r14: + push r15 + +$L$decrypt_seh_push_r15: + push rdi +$L$decrypt_seh_push_rdi: + push rsi +$L$decrypt_seh_push_rsi: + + sub rsp,168 +$L$decrypt_seh_allocstack_xmm: + + + + + + + + + + + lea rbp,[160+rsp] + +$L$decrypt_seh_setfp: + vmovdqu XMMWORD[rsp],xmm6 +$L$decrypt_seh_save_xmm6: + vmovdqu XMMWORD[16+rsp],xmm7 +$L$decrypt_seh_save_xmm7: + vmovdqu XMMWORD[32+rsp],xmm8 +$L$decrypt_seh_save_xmm8: + vmovdqu XMMWORD[48+rsp],xmm9 +$L$decrypt_seh_save_xmm9: + vmovdqu XMMWORD[64+rsp],xmm10 +$L$decrypt_seh_save_xmm10: + vmovdqu XMMWORD[80+rsp],xmm11 +$L$decrypt_seh_save_xmm11: + vmovdqu XMMWORD[96+rsp],xmm12 +$L$decrypt_seh_save_xmm12: + vmovdqu XMMWORD[112+rsp],xmm13 +$L$decrypt_seh_save_xmm13: + vmovdqu XMMWORD[128+rsp],xmm14 +$L$decrypt_seh_save_xmm14: + vmovdqu XMMWORD[144+rsp],xmm15 +$L$decrypt_seh_save_xmm15: + +$L$decrypt_seh_prolog_end: + sub rsp,1584 + and rsp,(-64) + + + mov eax,DWORD[240+rcx] + cmp eax,9 + je NEAR $L$aes_gcm_decrypt_128_avx512 + cmp eax,11 + je NEAR $L$aes_gcm_decrypt_192_avx512 + cmp eax,13 + je NEAR $L$aes_gcm_decrypt_256_avx512 + xor eax,eax + jmp NEAR $L$exit_gcm_decrypt +ALIGN 32 +$L$aes_gcm_decrypt_128_avx512: + cmp QWORD[112+rbp],0 + je NEAR $L$_enc_dec_done_497 + xor r14,r14 + vmovdqu64 xmm14,XMMWORD[64+rdx] + + mov r11,QWORD[r8] + or r11,r11 + je NEAR $L$_partial_block_done_498 + mov r10d,16 + lea r12,[byte_len_to_mask_table] + cmp QWORD[112+rbp],r10 + cmovc r10,QWORD[112+rbp] + add r12,r10 + add r12,r10 + kmovw k1,[r12] + vmovdqu8 xmm0{k1}{z},[r9] + + vmovdqu64 xmm3,XMMWORD[16+rdx] + vmovdqu64 xmm4,XMMWORD[336+rdx] + + + + lea r12,[SHIFT_MASK] + add r12,r11 + vmovdqu64 xmm5,XMMWORD[r12] + vpshufb xmm3,xmm3,xmm5 + + vmovdqa64 xmm6,xmm0 + vpxorq xmm3,xmm3,xmm0 + + + mov r13,QWORD[112+rbp] + add r13,r11 + sub r13,16 + jge NEAR $L$_no_extra_mask_498 + sub r12,r13 +$L$_no_extra_mask_498: + + + + vmovdqu64 xmm0,XMMWORD[16+r12] + vpand xmm3,xmm3,xmm0 + vpand xmm6,xmm6,xmm0 + vpshufb xmm6,xmm6,XMMWORD[SHUF_MASK] + vpshufb xmm6,xmm6,xmm5 + vpxorq xmm14,xmm14,xmm6 + cmp r13,0 + jl NEAR $L$_partial_incomplete_498 + + vpclmulqdq xmm7,xmm14,xmm4,0x11 + vpclmulqdq xmm10,xmm14,xmm4,0x00 + vpclmulqdq xmm11,xmm14,xmm4,0x01 + vpclmulqdq xmm14,xmm14,xmm4,0x10 + vpxorq xmm14,xmm14,xmm11 + + vpsrldq xmm11,xmm14,8 + vpslldq xmm14,xmm14,8 + vpxorq xmm7,xmm7,xmm11 + vpxorq xmm14,xmm14,xmm10 + + + + vmovdqu64 xmm11,XMMWORD[POLY2] + + vpclmulqdq xmm10,xmm11,xmm14,0x01 + vpslldq xmm10,xmm10,8 + vpxorq xmm14,xmm14,xmm10 + + + + vpclmulqdq xmm10,xmm11,xmm14,0x00 + vpsrldq xmm10,xmm10,4 + vpclmulqdq xmm14,xmm11,xmm14,0x10 + vpslldq xmm14,xmm14,4 + + vpternlogq xmm14,xmm7,xmm10,0x96 + + mov QWORD[r8],0 + + mov r12,r11 + mov r11,16 + sub r11,r12 + jmp NEAR $L$_enc_dec_done_498 + +$L$_partial_incomplete_498: + mov r12,QWORD[112+rbp] + add QWORD[r8],r12 + mov r11,QWORD[112+rbp] + +$L$_enc_dec_done_498: + + + lea r12,[byte_len_to_mask_table] + kmovw k1,[r11*2+r12] + vmovdqu64 XMMWORD[64+rdx],xmm14 + mov r12,QWORD[120+rbp] + vmovdqu8 XMMWORD[r12]{k1},xmm3 +$L$_partial_block_done_498: + vmovdqu64 xmm2,XMMWORD[rdx] + mov r13,QWORD[112+rbp] + sub r13,r11 + je NEAR $L$_enc_dec_done_497 + cmp r13,256 + jbe NEAR $L$_message_below_equal_16_blocks_497 + + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vmovdqa64 zmm27,ZMMWORD[ddq_addbe_4444] + vmovdqa64 zmm28,ZMMWORD[ddq_addbe_1234] + + + + + + + vmovd r15d,xmm2 + and r15d,255 + + vshufi64x2 zmm2,zmm2,zmm2,0 + vpshufb zmm2,zmm2,zmm29 + + + + cmp r15b,240 + jae NEAR $L$_next_16_overflow_499 + vpaddd zmm7,zmm2,zmm28 + vpaddd zmm10,zmm7,zmm27 + vpaddd zmm11,zmm10,zmm27 + vpaddd zmm12,zmm11,zmm27 + jmp NEAR $L$_next_16_ok_499 +$L$_next_16_overflow_499: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm12,ZMMWORD[ddq_add_4444] + vpaddd zmm7,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm10,zmm7,zmm12 + vpaddd zmm11,zmm10,zmm12 + vpaddd zmm12,zmm11,zmm12 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 +$L$_next_16_ok_499: + vshufi64x2 zmm2,zmm12,zmm12,255 + add r15b,16 + + vmovdqu8 zmm0,ZMMWORD[r11*1+r9] + vmovdqu8 zmm3,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm4,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm5,ZMMWORD[192+r11*1+r9] + + + vbroadcastf64x2 zmm6,ZMMWORD[rcx] + vpxorq zmm7,zmm7,zmm6 + vpxorq zmm10,zmm10,zmm6 + vpxorq zmm11,zmm11,zmm6 + vpxorq zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[16+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[32+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[48+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[64+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[80+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[96+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[112+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[128+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[144+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[160+rcx] + vaesenclast zmm7,zmm7,zmm6 + vaesenclast zmm10,zmm10,zmm6 + vaesenclast zmm11,zmm11,zmm6 + vaesenclast zmm12,zmm12,zmm6 + + + vpxorq zmm7,zmm7,zmm0 + vpxorq zmm10,zmm10,zmm3 + vpxorq zmm11,zmm11,zmm4 + vpxorq zmm12,zmm12,zmm5 + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm7 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm10 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm11 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm12 + + vpshufb zmm7,zmm0,zmm29 + vpshufb zmm10,zmm3,zmm29 + vpshufb zmm11,zmm4,zmm29 + vpshufb zmm12,zmm5,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm7 + vmovdqa64 ZMMWORD[832+rsp],zmm10 + vmovdqa64 ZMMWORD[896+rsp],zmm11 + vmovdqa64 ZMMWORD[960+rsp],zmm12 + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_500 + + vmovdqu64 zmm0,ZMMWORD[288+rdx] + vmovdqu64 ZMMWORD[704+rsp],zmm0 + + vmovdqu64 zmm3,ZMMWORD[224+rdx] + vmovdqu64 ZMMWORD[640+rsp],zmm3 + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[160+rdx] + vmovdqu64 ZMMWORD[576+rsp],zmm4 + + vmovdqu64 zmm5,ZMMWORD[96+rdx] + vmovdqu64 ZMMWORD[512+rsp],zmm5 +$L$_skip_hkeys_precomputation_500: + cmp r13,512 + jb NEAR $L$_message_below_32_blocks_497 + + + + cmp r15b,240 + jae NEAR $L$_next_16_overflow_501 + vpaddd zmm7,zmm2,zmm28 + vpaddd zmm10,zmm7,zmm27 + vpaddd zmm11,zmm10,zmm27 + vpaddd zmm12,zmm11,zmm27 + jmp NEAR $L$_next_16_ok_501 +$L$_next_16_overflow_501: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm12,ZMMWORD[ddq_add_4444] + vpaddd zmm7,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm10,zmm7,zmm12 + vpaddd zmm11,zmm10,zmm12 + vpaddd zmm12,zmm11,zmm12 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 +$L$_next_16_ok_501: + vshufi64x2 zmm2,zmm12,zmm12,255 + add r15b,16 + + vmovdqu8 zmm0,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm3,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm4,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm5,ZMMWORD[448+r11*1+r9] + + + vbroadcastf64x2 zmm6,ZMMWORD[rcx] + vpxorq zmm7,zmm7,zmm6 + vpxorq zmm10,zmm10,zmm6 + vpxorq zmm11,zmm11,zmm6 + vpxorq zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[16+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[32+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[48+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[64+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[80+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[96+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[112+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[128+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[144+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[160+rcx] + vaesenclast zmm7,zmm7,zmm6 + vaesenclast zmm10,zmm10,zmm6 + vaesenclast zmm11,zmm11,zmm6 + vaesenclast zmm12,zmm12,zmm6 + + + vpxorq zmm7,zmm7,zmm0 + vpxorq zmm10,zmm10,zmm3 + vpxorq zmm11,zmm11,zmm4 + vpxorq zmm12,zmm12,zmm5 + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm7 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm10 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm11 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm12 + + vpshufb zmm7,zmm0,zmm29 + vpshufb zmm10,zmm3,zmm29 + vpshufb zmm11,zmm4,zmm29 + vpshufb zmm12,zmm5,zmm29 + vmovdqa64 ZMMWORD[1024+rsp],zmm7 + vmovdqa64 ZMMWORD[1088+rsp],zmm10 + vmovdqa64 ZMMWORD[1152+rsp],zmm11 + vmovdqa64 ZMMWORD[1216+rsp],zmm12 + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_502 + vmovdqu64 zmm3,ZMMWORD[640+rsp] + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[576+rsp] + vmovdqu64 zmm5,ZMMWORD[512+rsp] + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[192+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[128+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[64+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[rsp],zmm5 +$L$_skip_hkeys_precomputation_502: + mov r14,1 + add r11,512 + sub r13,512 + + cmp r13,768 + jb NEAR $L$_no_more_big_nblocks_497 +$L$_encrypt_big_nblocks_497: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_503 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_503 +$L$_16_blocks_overflow_503: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_503: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_504 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_504 +$L$_16_blocks_overflow_504: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_504: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[256+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[320+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[384+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[448+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[448+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vpternlogq zmm24,zmm6,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm0 + vmovdqa64 ZMMWORD[832+rsp],zmm3 + vmovdqa64 ZMMWORD[896+rsp],zmm4 + vmovdqa64 ZMMWORD[960+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_505 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_505 +$L$_16_blocks_overflow_505: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_505: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[512+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[576+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[640+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[704+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + + + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpternlogq zmm6,zmm12,zmm15,0x96 + vpxorq zmm6,zmm6,zmm24 + vpternlogq zmm7,zmm13,zmm10,0x96 + vpxorq zmm7,zmm7,zmm25 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vextracti64x4 ymm12,zmm6,1 + vpxorq ymm6,ymm6,ymm12 + vextracti32x4 xmm12,ymm6,1 + vpxorq xmm6,xmm6,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm6,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[512+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[576+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[640+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[704+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[1024+rsp],zmm0 + vmovdqa64 ZMMWORD[1088+rsp],zmm3 + vmovdqa64 ZMMWORD[1152+rsp],zmm4 + vmovdqa64 ZMMWORD[1216+rsp],zmm5 + vmovdqa64 zmm14,zmm6 + + add r11,768 + sub r13,768 + cmp r13,768 + jae NEAR $L$_encrypt_big_nblocks_497 + +$L$_no_more_big_nblocks_497: + + cmp r13,512 + jae NEAR $L$_encrypt_32_blocks_497 + + cmp r13,256 + jae NEAR $L$_encrypt_16_blocks_497 +$L$_encrypt_0_blocks_ghash_32_497: + mov r10d,r13d + and r10d,~15 + mov ebx,256 + sub ebx,r10d + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + add ebx,256 + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_506 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_506 + jb NEAR $L$_last_num_blocks_is_7_1_506 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_506 + jb NEAR $L$_last_num_blocks_is_11_9_506 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_506 + ja NEAR $L$_last_num_blocks_is_16_506 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_506 + jmp NEAR $L$_last_num_blocks_is_13_506 + +$L$_last_num_blocks_is_11_9_506: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_506 + ja NEAR $L$_last_num_blocks_is_11_506 + jmp NEAR $L$_last_num_blocks_is_9_506 + +$L$_last_num_blocks_is_7_1_506: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_506 + jb NEAR $L$_last_num_blocks_is_3_1_506 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_506 + je NEAR $L$_last_num_blocks_is_6_506 + jmp NEAR $L$_last_num_blocks_is_5_506 + +$L$_last_num_blocks_is_3_1_506: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_506 + je NEAR $L$_last_num_blocks_is_2_506 +$L$_last_num_blocks_is_1_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_507 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_507 + +$L$_16_blocks_overflow_507: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_507: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb xmm17,xmm17,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_508 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_508 +$L$_small_initial_partial_block_508: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_508 +$L$_small_initial_compute_done_508: +$L$_after_reduction_508: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_2_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_509 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_509 + +$L$_16_blocks_overflow_509: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_509: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb ymm17,ymm17,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_510 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_510 +$L$_small_initial_partial_block_510: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_510: + + or r13,r13 + je NEAR $L$_after_reduction_510 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_510: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_3_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_511 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_511 + +$L$_16_blocks_overflow_511: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_511: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_512 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_512 +$L$_small_initial_partial_block_512: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_512: + + or r13,r13 + je NEAR $L$_after_reduction_512 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_512: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_4_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_513 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_513 + +$L$_16_blocks_overflow_513: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_513: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_514 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_514 +$L$_small_initial_partial_block_514: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_514: + + or r13,r13 + je NEAR $L$_after_reduction_514 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_514: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_5_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_515 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_515 + +$L$_16_blocks_overflow_515: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_515: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb xmm19,xmm19,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_516 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_516 +$L$_small_initial_partial_block_516: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_516: + + or r13,r13 + je NEAR $L$_after_reduction_516 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_516: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_6_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_517 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_517 + +$L$_16_blocks_overflow_517: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_517: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb ymm19,ymm19,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_518 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_518 +$L$_small_initial_partial_block_518: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_518: + + or r13,r13 + je NEAR $L$_after_reduction_518 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_518: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_7_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_519 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_519 + +$L$_16_blocks_overflow_519: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_519: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_520 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_520 +$L$_small_initial_partial_block_520: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_520: + + or r13,r13 + je NEAR $L$_after_reduction_520 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_520: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_8_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_521 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_521 + +$L$_16_blocks_overflow_521: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_521: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_522 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_522 +$L$_small_initial_partial_block_522: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_522: + + or r13,r13 + je NEAR $L$_after_reduction_522 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_522: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_9_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_523 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_523 + +$L$_16_blocks_overflow_523: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_523: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb xmm20,xmm20,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_524 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_524 +$L$_small_initial_partial_block_524: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_524: + + or r13,r13 + je NEAR $L$_after_reduction_524 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_524: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_10_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_525 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_525 + +$L$_16_blocks_overflow_525: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_525: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb ymm20,ymm20,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_526 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_526 +$L$_small_initial_partial_block_526: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_526: + + or r13,r13 + je NEAR $L$_after_reduction_526 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_526: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_11_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_527 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_527 + +$L$_16_blocks_overflow_527: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_527: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_528 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_528 +$L$_small_initial_partial_block_528: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_528: + + or r13,r13 + je NEAR $L$_after_reduction_528 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_528: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_12_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_529 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_529 + +$L$_16_blocks_overflow_529: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_529: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_530 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_530 +$L$_small_initial_partial_block_530: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_530: + + or r13,r13 + je NEAR $L$_after_reduction_530 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_530: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_13_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_531 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_531 + +$L$_16_blocks_overflow_531: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_531: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb xmm21,xmm21,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_532 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_532 +$L$_small_initial_partial_block_532: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_532: + + or r13,r13 + je NEAR $L$_after_reduction_532 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_532: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_14_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_533 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_533 + +$L$_16_blocks_overflow_533: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_533: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb ymm21,ymm21,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_534 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_534 +$L$_small_initial_partial_block_534: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_534: + + or r13,r13 + je NEAR $L$_after_reduction_534 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_534: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_15_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_535 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_535 + +$L$_16_blocks_overflow_535: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_535: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_536 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_536 +$L$_small_initial_partial_block_536: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_536: + + or r13,r13 + je NEAR $L$_after_reduction_536 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_536: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_16_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_537 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_537 + +$L$_16_blocks_overflow_537: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_537: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_538: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_538: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_538: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_0_506: + vmovdqa64 zmm13,ZMMWORD[1024+rsp] + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1088+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1152+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1216+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_506: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_497 +$L$_encrypt_32_blocks_497: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_539 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_539 +$L$_16_blocks_overflow_539: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_539: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_540 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_540 +$L$_16_blocks_overflow_540: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_540: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[256+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[320+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[384+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[448+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[448+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vpternlogq zmm24,zmm6,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm0 + vmovdqa64 ZMMWORD[832+rsp],zmm3 + vmovdqa64 ZMMWORD[896+rsp],zmm4 + vmovdqa64 ZMMWORD[960+rsp],zmm5 + vmovdqa64 zmm13,ZMMWORD[1280+rsp] + vmovdqu64 zmm12,ZMMWORD[512+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1344+rsp] + vmovdqu64 zmm12,ZMMWORD[576+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1408+rsp] + vmovdqu64 zmm12,ZMMWORD[640+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1472+rsp] + vmovdqu64 zmm12,ZMMWORD[704+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + + sub r13,512 + add r11,512 + mov r10d,r13d + and r10d,~15 + mov ebx,512 + sub ebx,r10d + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_541 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_541 + jb NEAR $L$_last_num_blocks_is_7_1_541 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_541 + jb NEAR $L$_last_num_blocks_is_11_9_541 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_541 + ja NEAR $L$_last_num_blocks_is_16_541 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_541 + jmp NEAR $L$_last_num_blocks_is_13_541 + +$L$_last_num_blocks_is_11_9_541: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_541 + ja NEAR $L$_last_num_blocks_is_11_541 + jmp NEAR $L$_last_num_blocks_is_9_541 + +$L$_last_num_blocks_is_7_1_541: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_541 + jb NEAR $L$_last_num_blocks_is_3_1_541 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_541 + je NEAR $L$_last_num_blocks_is_6_541 + jmp NEAR $L$_last_num_blocks_is_5_541 + +$L$_last_num_blocks_is_3_1_541: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_541 + je NEAR $L$_last_num_blocks_is_2_541 +$L$_last_num_blocks_is_1_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_542 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_542 + +$L$_16_blocks_overflow_542: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_542: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb xmm17,xmm17,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_543 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_543 +$L$_small_initial_partial_block_543: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_543 +$L$_small_initial_compute_done_543: +$L$_after_reduction_543: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_2_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_544 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_544 + +$L$_16_blocks_overflow_544: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_544: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb ymm17,ymm17,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_545 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_545 +$L$_small_initial_partial_block_545: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_545: + + or r13,r13 + je NEAR $L$_after_reduction_545 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_545: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_3_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_546 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_546 + +$L$_16_blocks_overflow_546: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_546: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_547 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_547 +$L$_small_initial_partial_block_547: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_547: + + or r13,r13 + je NEAR $L$_after_reduction_547 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_547: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_4_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_548 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_548 + +$L$_16_blocks_overflow_548: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_548: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_549 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_549 +$L$_small_initial_partial_block_549: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_549: + + or r13,r13 + je NEAR $L$_after_reduction_549 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_549: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_5_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_550 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_550 + +$L$_16_blocks_overflow_550: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_550: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb xmm19,xmm19,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_551 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_551 +$L$_small_initial_partial_block_551: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_551: + + or r13,r13 + je NEAR $L$_after_reduction_551 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_551: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_6_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_552 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_552 + +$L$_16_blocks_overflow_552: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_552: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb ymm19,ymm19,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_553 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_553 +$L$_small_initial_partial_block_553: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_553: + + or r13,r13 + je NEAR $L$_after_reduction_553 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_553: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_7_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_554 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_554 + +$L$_16_blocks_overflow_554: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_554: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_555 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_555 +$L$_small_initial_partial_block_555: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_555: + + or r13,r13 + je NEAR $L$_after_reduction_555 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_555: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_8_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_556 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_556 + +$L$_16_blocks_overflow_556: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_556: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_557 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_557 +$L$_small_initial_partial_block_557: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_557: + + or r13,r13 + je NEAR $L$_after_reduction_557 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_557: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_9_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_558 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_558 + +$L$_16_blocks_overflow_558: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_558: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb xmm20,xmm20,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_559 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_559 +$L$_small_initial_partial_block_559: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_559: + + or r13,r13 + je NEAR $L$_after_reduction_559 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_559: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_10_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_560 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_560 + +$L$_16_blocks_overflow_560: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_560: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb ymm20,ymm20,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_561 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_561 +$L$_small_initial_partial_block_561: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_561: + + or r13,r13 + je NEAR $L$_after_reduction_561 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_561: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_11_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_562 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_562 + +$L$_16_blocks_overflow_562: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_562: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_563 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_563 +$L$_small_initial_partial_block_563: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_563: + + or r13,r13 + je NEAR $L$_after_reduction_563 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_563: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_12_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_564 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_564 + +$L$_16_blocks_overflow_564: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_564: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_565 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_565 +$L$_small_initial_partial_block_565: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_565: + + or r13,r13 + je NEAR $L$_after_reduction_565 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_565: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_13_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_566 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_566 + +$L$_16_blocks_overflow_566: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_566: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb xmm21,xmm21,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_567 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_567 +$L$_small_initial_partial_block_567: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_567: + + or r13,r13 + je NEAR $L$_after_reduction_567 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_567: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_14_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_568 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_568 + +$L$_16_blocks_overflow_568: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_568: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb ymm21,ymm21,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_569 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_569 +$L$_small_initial_partial_block_569: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_569: + + or r13,r13 + je NEAR $L$_after_reduction_569 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_569: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_15_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_570 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_570 + +$L$_16_blocks_overflow_570: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_570: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_571 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_571 +$L$_small_initial_partial_block_571: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_571: + + or r13,r13 + je NEAR $L$_after_reduction_571 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_571: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_16_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_572 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_572 + +$L$_16_blocks_overflow_572: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_572: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_573: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_573: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_573: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_0_541: + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_541: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_497 +$L$_encrypt_16_blocks_497: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_574 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_574 +$L$_16_blocks_overflow_574: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_574: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + vmovdqa64 zmm13,ZMMWORD[1024+rsp] + vmovdqu64 zmm12,ZMMWORD[256+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1088+rsp] + vmovdqu64 zmm12,ZMMWORD[320+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1152+rsp] + vmovdqu64 zmm12,ZMMWORD[384+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1216+rsp] + vmovdqu64 zmm12,ZMMWORD[448+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + sub r13,256 + add r11,256 + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_575 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_575 + jb NEAR $L$_last_num_blocks_is_7_1_575 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_575 + jb NEAR $L$_last_num_blocks_is_11_9_575 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_575 + ja NEAR $L$_last_num_blocks_is_16_575 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_575 + jmp NEAR $L$_last_num_blocks_is_13_575 + +$L$_last_num_blocks_is_11_9_575: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_575 + ja NEAR $L$_last_num_blocks_is_11_575 + jmp NEAR $L$_last_num_blocks_is_9_575 + +$L$_last_num_blocks_is_7_1_575: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_575 + jb NEAR $L$_last_num_blocks_is_3_1_575 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_575 + je NEAR $L$_last_num_blocks_is_6_575 + jmp NEAR $L$_last_num_blocks_is_5_575 + +$L$_last_num_blocks_is_3_1_575: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_575 + je NEAR $L$_last_num_blocks_is_2_575 +$L$_last_num_blocks_is_1_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_576 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_576 + +$L$_16_blocks_overflow_576: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_576: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc xmm0,xmm0,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb xmm17,xmm17,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_577 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_577 +$L$_small_initial_partial_block_577: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_577 +$L$_small_initial_compute_done_577: +$L$_after_reduction_577: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_2_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_578 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_578 + +$L$_16_blocks_overflow_578: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_578: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc ymm0,ymm0,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb ymm17,ymm17,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_579 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_579 +$L$_small_initial_partial_block_579: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_579: + + or r13,r13 + je NEAR $L$_after_reduction_579 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_579: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_3_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_580 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_580 + +$L$_16_blocks_overflow_580: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_580: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_581 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_581 +$L$_small_initial_partial_block_581: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_581: + + or r13,r13 + je NEAR $L$_after_reduction_581 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_581: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_4_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_582 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_582 + +$L$_16_blocks_overflow_582: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_582: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_583 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_583 +$L$_small_initial_partial_block_583: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_583: + + or r13,r13 + je NEAR $L$_after_reduction_583 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_583: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_5_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_584 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_584 + +$L$_16_blocks_overflow_584: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_584: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb xmm19,xmm19,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_585 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_585 +$L$_small_initial_partial_block_585: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_585: + + or r13,r13 + je NEAR $L$_after_reduction_585 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_585: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_6_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_586 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_586 + +$L$_16_blocks_overflow_586: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_586: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb ymm19,ymm19,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_587 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_587 +$L$_small_initial_partial_block_587: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_587: + + or r13,r13 + je NEAR $L$_after_reduction_587 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_587: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_7_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_588 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_588 + +$L$_16_blocks_overflow_588: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_588: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_589 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_589 +$L$_small_initial_partial_block_589: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_589: + + or r13,r13 + je NEAR $L$_after_reduction_589 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_589: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_8_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_590 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_590 + +$L$_16_blocks_overflow_590: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_590: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_591 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_591 +$L$_small_initial_partial_block_591: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_591: + + or r13,r13 + je NEAR $L$_after_reduction_591 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_591: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_9_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_592 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_592 + +$L$_16_blocks_overflow_592: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_592: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb xmm20,xmm20,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_593 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_593 +$L$_small_initial_partial_block_593: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_593: + + or r13,r13 + je NEAR $L$_after_reduction_593 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_593: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_10_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_594 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_594 + +$L$_16_blocks_overflow_594: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_594: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb ymm20,ymm20,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_595 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_595 +$L$_small_initial_partial_block_595: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_595: + + or r13,r13 + je NEAR $L$_after_reduction_595 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_595: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_11_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_596 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_596 + +$L$_16_blocks_overflow_596: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_596: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_597 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_597 +$L$_small_initial_partial_block_597: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_597: + + or r13,r13 + je NEAR $L$_after_reduction_597 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_597: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_12_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_598 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_598 + +$L$_16_blocks_overflow_598: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_598: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_599 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_599 +$L$_small_initial_partial_block_599: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_599: + + or r13,r13 + je NEAR $L$_after_reduction_599 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_599: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_13_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_600 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_600 + +$L$_16_blocks_overflow_600: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_600: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb xmm21,xmm21,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_601 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_601 +$L$_small_initial_partial_block_601: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_601: + + or r13,r13 + je NEAR $L$_after_reduction_601 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_601: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_14_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_602 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_602 + +$L$_16_blocks_overflow_602: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_602: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb ymm21,ymm21,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_603 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_603 +$L$_small_initial_partial_block_603: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_603: + + or r13,r13 + je NEAR $L$_after_reduction_603 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_603: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_15_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_604 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_604 + +$L$_16_blocks_overflow_604: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_604: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_605 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_605 +$L$_small_initial_partial_block_605: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_605: + + or r13,r13 + je NEAR $L$_after_reduction_605 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_605: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_16_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_606 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_606 + +$L$_16_blocks_overflow_606: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_606: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_607: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_607: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_607: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_0_575: + vmovdqa64 zmm13,ZMMWORD[1280+rsp] + vmovdqu64 zmm12,ZMMWORD[512+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1344+rsp] + vmovdqu64 zmm12,ZMMWORD[576+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1408+rsp] + vmovdqu64 zmm12,ZMMWORD[640+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1472+rsp] + vmovdqu64 zmm12,ZMMWORD[704+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_575: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_497 + +$L$_message_below_32_blocks_497: + + + sub r13,256 + add r11,256 + mov r10d,r13d + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_608 + vmovdqu64 zmm3,ZMMWORD[640+rsp] + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[576+rsp] + vmovdqu64 zmm5,ZMMWORD[512+rsp] + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm5 +$L$_skip_hkeys_precomputation_608: + mov r14,1 + and r10d,~15 + mov ebx,512 + sub ebx,r10d + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_609 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_609 + jb NEAR $L$_last_num_blocks_is_7_1_609 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_609 + jb NEAR $L$_last_num_blocks_is_11_9_609 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_609 + ja NEAR $L$_last_num_blocks_is_16_609 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_609 + jmp NEAR $L$_last_num_blocks_is_13_609 + +$L$_last_num_blocks_is_11_9_609: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_609 + ja NEAR $L$_last_num_blocks_is_11_609 + jmp NEAR $L$_last_num_blocks_is_9_609 + +$L$_last_num_blocks_is_7_1_609: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_609 + jb NEAR $L$_last_num_blocks_is_3_1_609 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_609 + je NEAR $L$_last_num_blocks_is_6_609 + jmp NEAR $L$_last_num_blocks_is_5_609 + +$L$_last_num_blocks_is_3_1_609: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_609 + je NEAR $L$_last_num_blocks_is_2_609 +$L$_last_num_blocks_is_1_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_610 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_610 + +$L$_16_blocks_overflow_610: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_610: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb xmm17,xmm17,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_611 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_611 +$L$_small_initial_partial_block_611: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_611 +$L$_small_initial_compute_done_611: +$L$_after_reduction_611: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_2_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_612 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_612 + +$L$_16_blocks_overflow_612: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_612: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb ymm17,ymm17,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_613 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_613 +$L$_small_initial_partial_block_613: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_613: + + or r13,r13 + je NEAR $L$_after_reduction_613 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_613: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_3_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_614 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_614 + +$L$_16_blocks_overflow_614: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_614: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_615 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_615 +$L$_small_initial_partial_block_615: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_615: + + or r13,r13 + je NEAR $L$_after_reduction_615 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_615: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_4_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_616 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_616 + +$L$_16_blocks_overflow_616: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_616: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_617 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_617 +$L$_small_initial_partial_block_617: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_617: + + or r13,r13 + je NEAR $L$_after_reduction_617 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_617: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_5_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_618 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_618 + +$L$_16_blocks_overflow_618: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_618: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb xmm19,xmm19,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_619 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_619 +$L$_small_initial_partial_block_619: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_619: + + or r13,r13 + je NEAR $L$_after_reduction_619 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_619: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_6_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_620 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_620 + +$L$_16_blocks_overflow_620: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_620: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb ymm19,ymm19,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_621 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_621 +$L$_small_initial_partial_block_621: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_621: + + or r13,r13 + je NEAR $L$_after_reduction_621 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_621: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_7_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_622 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_622 + +$L$_16_blocks_overflow_622: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_622: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_623 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_623 +$L$_small_initial_partial_block_623: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_623: + + or r13,r13 + je NEAR $L$_after_reduction_623 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_623: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_8_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_624 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_624 + +$L$_16_blocks_overflow_624: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_624: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_625 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_625 +$L$_small_initial_partial_block_625: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_625: + + or r13,r13 + je NEAR $L$_after_reduction_625 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_625: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_9_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_626 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_626 + +$L$_16_blocks_overflow_626: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_626: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb xmm20,xmm20,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_627 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_627 +$L$_small_initial_partial_block_627: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_627: + + or r13,r13 + je NEAR $L$_after_reduction_627 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_627: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_10_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_628 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_628 + +$L$_16_blocks_overflow_628: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_628: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb ymm20,ymm20,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_629 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_629 +$L$_small_initial_partial_block_629: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_629: + + or r13,r13 + je NEAR $L$_after_reduction_629 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_629: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_11_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_630 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_630 + +$L$_16_blocks_overflow_630: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_630: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_631 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_631 +$L$_small_initial_partial_block_631: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_631: + + or r13,r13 + je NEAR $L$_after_reduction_631 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_631: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_12_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_632 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_632 + +$L$_16_blocks_overflow_632: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_632: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_633 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_633 +$L$_small_initial_partial_block_633: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_633: + + or r13,r13 + je NEAR $L$_after_reduction_633 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_633: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_13_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_634 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_634 + +$L$_16_blocks_overflow_634: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_634: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb xmm21,xmm21,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_635 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_635 +$L$_small_initial_partial_block_635: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_635: + + or r13,r13 + je NEAR $L$_after_reduction_635 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_635: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_14_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_636 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_636 + +$L$_16_blocks_overflow_636: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_636: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb ymm21,ymm21,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_637 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_637 +$L$_small_initial_partial_block_637: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_637: + + or r13,r13 + je NEAR $L$_after_reduction_637 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_637: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_15_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_638 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_638 + +$L$_16_blocks_overflow_638: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_638: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_639 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_639 +$L$_small_initial_partial_block_639: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_639: + + or r13,r13 + je NEAR $L$_after_reduction_639 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_639: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_16_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_640 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_640 + +$L$_16_blocks_overflow_640: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_640: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_641: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_641: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_641: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_0_609: + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_609: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_497 + +$L$_message_below_equal_16_blocks_497: + + + mov r12d,r13d + add r12d,15 + shr r12d,4 + cmp r12,8 + je NEAR $L$_small_initial_num_blocks_is_8_642 + jl NEAR $L$_small_initial_num_blocks_is_7_1_642 + + + cmp r12,12 + je NEAR $L$_small_initial_num_blocks_is_12_642 + jl NEAR $L$_small_initial_num_blocks_is_11_9_642 + + + cmp r12,16 + je NEAR $L$_small_initial_num_blocks_is_16_642 + cmp r12,15 + je NEAR $L$_small_initial_num_blocks_is_15_642 + cmp r12,14 + je NEAR $L$_small_initial_num_blocks_is_14_642 + jmp NEAR $L$_small_initial_num_blocks_is_13_642 + +$L$_small_initial_num_blocks_is_11_9_642: + + cmp r12,11 + je NEAR $L$_small_initial_num_blocks_is_11_642 + cmp r12,10 + je NEAR $L$_small_initial_num_blocks_is_10_642 + jmp NEAR $L$_small_initial_num_blocks_is_9_642 + +$L$_small_initial_num_blocks_is_7_1_642: + cmp r12,4 + je NEAR $L$_small_initial_num_blocks_is_4_642 + jl NEAR $L$_small_initial_num_blocks_is_3_1_642 + + cmp r12,7 + je NEAR $L$_small_initial_num_blocks_is_7_642 + cmp r12,6 + je NEAR $L$_small_initial_num_blocks_is_6_642 + jmp NEAR $L$_small_initial_num_blocks_is_5_642 + +$L$_small_initial_num_blocks_is_3_1_642: + + cmp r12,3 + je NEAR $L$_small_initial_num_blocks_is_3_642 + cmp r12,2 + je NEAR $L$_small_initial_num_blocks_is_2_642 + + + + + +$L$_small_initial_num_blocks_is_1_642: + vmovdqa64 xmm29,XMMWORD[SHUF_MASK] + vpaddd xmm0,xmm2,XMMWORD[ONE] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,0 + vpshufb xmm0,xmm0,xmm29 + vmovdqu8 xmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast xmm0,xmm0,xmm15 + vpxorq xmm0,xmm0,xmm6 + vextracti32x4 xmm12,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm6,xmm6,xmm29 + vextracti32x4 xmm13,zmm6,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_643 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm6,xmm20,0x01 + vpclmulqdq xmm5,xmm6,xmm20,0x10 + vpclmulqdq xmm0,xmm6,xmm20,0x11 + vpclmulqdq xmm3,xmm6,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_643 +$L$_small_initial_partial_block_643: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm13 + + jmp NEAR $L$_after_reduction_643 +$L$_small_initial_compute_done_643: +$L$_after_reduction_643: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_2_642: + vmovdqa64 ymm29,YMMWORD[SHUF_MASK] + vshufi64x2 ymm0,ymm2,ymm2,0 + vpaddd ymm0,ymm0,YMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,1 + vpshufb ymm0,ymm0,ymm29 + vmovdqu8 ymm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast ymm0,ymm0,ymm15 + vpxorq ymm0,ymm0,ymm6 + vextracti32x4 xmm12,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm6,ymm6,ymm29 + vextracti32x4 xmm13,zmm6,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_644 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm6,ymm20,0x01 + vpclmulqdq ymm5,ymm6,ymm20,0x10 + vpclmulqdq ymm0,ymm6,ymm20,0x11 + vpclmulqdq ymm3,ymm6,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_644 +$L$_small_initial_partial_block_644: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm6,xmm20,0x01 + vpclmulqdq xmm5,xmm6,xmm20,0x10 + vpclmulqdq xmm0,xmm6,xmm20,0x11 + vpclmulqdq xmm3,xmm6,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_644: + + or r13,r13 + je NEAR $L$_after_reduction_644 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_644: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_3_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,2 + vpshufb zmm0,zmm0,zmm29 + vmovdqu8 zmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vpxorq zmm0,zmm0,zmm6 + vextracti32x4 xmm12,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm6,zmm6,zmm29 + vextracti32x4 xmm13,zmm6,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_645 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_645 +$L$_small_initial_partial_block_645: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm6,ymm20,0x01 + vpclmulqdq ymm5,ymm6,ymm20,0x10 + vpclmulqdq ymm0,ymm6,ymm20,0x11 + vpclmulqdq ymm3,ymm6,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_645: + + or r13,r13 + je NEAR $L$_after_reduction_645 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_645: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_4_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,3 + vpshufb zmm0,zmm0,zmm29 + vmovdqu8 zmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vpxorq zmm0,zmm0,zmm6 + vextracti32x4 xmm12,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm6,zmm6,zmm29 + vextracti32x4 xmm13,zmm6,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_646 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_646 +$L$_small_initial_partial_block_646: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_646: + + or r13,r13 + je NEAR $L$_after_reduction_646 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_646: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_5_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 xmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast xmm3,xmm3,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq xmm3,xmm3,xmm7 + vextracti32x4 xmm12,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm6,zmm29 + vpshufb xmm7,xmm7,xmm29 + vextracti32x4 xmm13,zmm7,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_647 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm7,xmm20,0x01 + vpclmulqdq xmm5,xmm7,xmm20,0x10 + vpclmulqdq xmm0,xmm7,xmm20,0x11 + vpclmulqdq xmm3,xmm7,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_647 +$L$_small_initial_partial_block_647: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_647: + + or r13,r13 + je NEAR $L$_after_reduction_647 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_647: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_6_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 ymm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast ymm3,ymm3,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq ymm3,ymm3,ymm7 + vextracti32x4 xmm12,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm6,zmm29 + vpshufb ymm7,ymm7,ymm29 + vextracti32x4 xmm13,zmm7,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_648 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm7,ymm20,0x01 + vpclmulqdq ymm5,ymm7,ymm20,0x10 + vpclmulqdq ymm0,ymm7,ymm20,0x11 + vpclmulqdq ymm3,ymm7,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_648 +$L$_small_initial_partial_block_648: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm7,xmm20,0x01 + vpclmulqdq xmm5,xmm7,xmm20,0x10 + vpclmulqdq xmm0,xmm7,xmm20,0x11 + vpclmulqdq xmm3,xmm7,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_648: + + or r13,r13 + je NEAR $L$_after_reduction_648 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_648: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_7_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vextracti32x4 xmm12,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vextracti32x4 xmm13,zmm7,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_649 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm7,zmm20,0x01 + vpclmulqdq zmm5,zmm7,zmm20,0x10 + vpclmulqdq zmm0,zmm7,zmm20,0x11 + vpclmulqdq zmm3,zmm7,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_649 +$L$_small_initial_partial_block_649: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm7,ymm20,0x01 + vpclmulqdq ymm5,ymm7,ymm20,0x10 + vpclmulqdq ymm0,ymm7,ymm20,0x11 + vpclmulqdq ymm3,ymm7,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_649: + + or r13,r13 + je NEAR $L$_after_reduction_649 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_649: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_8_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vextracti32x4 xmm12,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vextracti32x4 xmm13,zmm7,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_650 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_650 +$L$_small_initial_partial_block_650: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm7,zmm20,0x01 + vpclmulqdq zmm5,zmm7,zmm20,0x10 + vpclmulqdq zmm0,zmm7,zmm20,0x11 + vpclmulqdq zmm3,zmm7,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_650: + + or r13,r13 + je NEAR $L$_after_reduction_650 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_650: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_9_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast xmm4,xmm4,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq xmm4,xmm4,xmm10 + vextracti32x4 xmm12,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb xmm10,xmm10,xmm29 + vextracti32x4 xmm13,zmm10,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_651 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm10,xmm20,0x01 + vpclmulqdq xmm5,xmm10,xmm20,0x10 + vpclmulqdq xmm0,xmm10,xmm20,0x11 + vpclmulqdq xmm3,xmm10,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_651 +$L$_small_initial_partial_block_651: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_651: + + or r13,r13 + je NEAR $L$_after_reduction_651 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_651: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_10_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast ymm4,ymm4,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq ymm4,ymm4,ymm10 + vextracti32x4 xmm12,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb ymm10,ymm10,ymm29 + vextracti32x4 xmm13,zmm10,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_652 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm10,ymm20,0x01 + vpclmulqdq ymm5,ymm10,ymm20,0x10 + vpclmulqdq ymm0,ymm10,ymm20,0x11 + vpclmulqdq ymm3,ymm10,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_652 +$L$_small_initial_partial_block_652: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm10,xmm20,0x01 + vpclmulqdq xmm5,xmm10,xmm20,0x10 + vpclmulqdq xmm0,xmm10,xmm20,0x11 + vpclmulqdq xmm3,xmm10,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_652: + + or r13,r13 + je NEAR $L$_after_reduction_652 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_652: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_11_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vextracti32x4 xmm12,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vextracti32x4 xmm13,zmm10,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_653 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm10,zmm20,0x01 + vpclmulqdq zmm5,zmm10,zmm20,0x10 + vpclmulqdq zmm0,zmm10,zmm20,0x11 + vpclmulqdq zmm3,zmm10,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_653 +$L$_small_initial_partial_block_653: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm10,ymm20,0x01 + vpclmulqdq ymm5,ymm10,ymm20,0x10 + vpclmulqdq ymm0,ymm10,ymm20,0x11 + vpclmulqdq ymm3,ymm10,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_653: + + or r13,r13 + je NEAR $L$_after_reduction_653 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_653: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_12_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vextracti32x4 xmm12,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vextracti32x4 xmm13,zmm10,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_654 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_654 +$L$_small_initial_partial_block_654: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm10,zmm20,0x01 + vpclmulqdq zmm5,zmm10,zmm20,0x10 + vpclmulqdq zmm0,zmm10,zmm20,0x11 + vpclmulqdq zmm3,zmm10,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_654: + + or r13,r13 + je NEAR $L$_after_reduction_654 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_654: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_13_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast xmm5,xmm5,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq xmm5,xmm5,xmm11 + vextracti32x4 xmm12,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb xmm11,xmm11,xmm29 + vextracti32x4 xmm13,zmm11,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_655 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm11,xmm20,0x01 + vpclmulqdq xmm5,xmm11,xmm20,0x10 + vpclmulqdq xmm0,xmm11,xmm20,0x11 + vpclmulqdq xmm3,xmm11,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_655 +$L$_small_initial_partial_block_655: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_655: + + or r13,r13 + je NEAR $L$_after_reduction_655 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_655: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_14_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast ymm5,ymm5,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq ymm5,ymm5,ymm11 + vextracti32x4 xmm12,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb ymm11,ymm11,ymm29 + vextracti32x4 xmm13,zmm11,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_656 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm11,ymm20,0x01 + vpclmulqdq ymm5,ymm11,ymm20,0x10 + vpclmulqdq ymm0,ymm11,ymm20,0x11 + vpclmulqdq ymm3,ymm11,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_656 +$L$_small_initial_partial_block_656: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm11,xmm20,0x01 + vpclmulqdq xmm5,xmm11,xmm20,0x10 + vpclmulqdq xmm0,xmm11,xmm20,0x11 + vpclmulqdq xmm3,xmm11,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_656: + + or r13,r13 + je NEAR $L$_after_reduction_656 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_656: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_15_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast zmm5,zmm5,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq zmm5,zmm5,zmm11 + vextracti32x4 xmm12,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vextracti32x4 xmm13,zmm11,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_657 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm11,zmm20,0x01 + vpclmulqdq zmm5,zmm11,zmm20,0x10 + vpclmulqdq zmm0,zmm11,zmm20,0x11 + vpclmulqdq zmm3,zmm11,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_657 +$L$_small_initial_partial_block_657: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm11,ymm20,0x01 + vpclmulqdq ymm5,ymm11,ymm20,0x10 + vpclmulqdq ymm0,ymm11,ymm20,0x11 + vpclmulqdq ymm3,ymm11,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_657: + + or r13,r13 + je NEAR $L$_after_reduction_657 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_657: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_16_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast zmm5,zmm5,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq zmm5,zmm5,zmm11 + vextracti32x4 xmm12,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vextracti32x4 xmm13,zmm11,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_658: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm11,zmm20,0x01 + vpclmulqdq zmm5,zmm11,zmm20,0x10 + vpclmulqdq zmm0,zmm11,zmm20,0x11 + vpclmulqdq zmm3,zmm11,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_658: + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_658: +$L$_small_initial_blocks_encrypted_642: +$L$_ghash_done_497: + vmovdqu64 XMMWORD[rdx],xmm2 + vmovdqu64 XMMWORD[64+rdx],xmm14 +$L$_enc_dec_done_497: + jmp NEAR $L$exit_gcm_decrypt +ALIGN 32 +$L$aes_gcm_decrypt_192_avx512: + cmp QWORD[112+rbp],0 + je NEAR $L$_enc_dec_done_659 + xor r14,r14 + vmovdqu64 xmm14,XMMWORD[64+rdx] + + mov r11,QWORD[r8] + or r11,r11 + je NEAR $L$_partial_block_done_660 + mov r10d,16 + lea r12,[byte_len_to_mask_table] + cmp QWORD[112+rbp],r10 + cmovc r10,QWORD[112+rbp] + add r12,r10 + add r12,r10 + kmovw k1,[r12] + vmovdqu8 xmm0{k1}{z},[r9] + + vmovdqu64 xmm3,XMMWORD[16+rdx] + vmovdqu64 xmm4,XMMWORD[336+rdx] + + + + lea r12,[SHIFT_MASK] + add r12,r11 + vmovdqu64 xmm5,XMMWORD[r12] + vpshufb xmm3,xmm3,xmm5 + + vmovdqa64 xmm6,xmm0 + vpxorq xmm3,xmm3,xmm0 + + + mov r13,QWORD[112+rbp] + add r13,r11 + sub r13,16 + jge NEAR $L$_no_extra_mask_660 + sub r12,r13 +$L$_no_extra_mask_660: + + + + vmovdqu64 xmm0,XMMWORD[16+r12] + vpand xmm3,xmm3,xmm0 + vpand xmm6,xmm6,xmm0 + vpshufb xmm6,xmm6,XMMWORD[SHUF_MASK] + vpshufb xmm6,xmm6,xmm5 + vpxorq xmm14,xmm14,xmm6 + cmp r13,0 + jl NEAR $L$_partial_incomplete_660 + + vpclmulqdq xmm7,xmm14,xmm4,0x11 + vpclmulqdq xmm10,xmm14,xmm4,0x00 + vpclmulqdq xmm11,xmm14,xmm4,0x01 + vpclmulqdq xmm14,xmm14,xmm4,0x10 + vpxorq xmm14,xmm14,xmm11 + + vpsrldq xmm11,xmm14,8 + vpslldq xmm14,xmm14,8 + vpxorq xmm7,xmm7,xmm11 + vpxorq xmm14,xmm14,xmm10 + + + + vmovdqu64 xmm11,XMMWORD[POLY2] + + vpclmulqdq xmm10,xmm11,xmm14,0x01 + vpslldq xmm10,xmm10,8 + vpxorq xmm14,xmm14,xmm10 + + + + vpclmulqdq xmm10,xmm11,xmm14,0x00 + vpsrldq xmm10,xmm10,4 + vpclmulqdq xmm14,xmm11,xmm14,0x10 + vpslldq xmm14,xmm14,4 + + vpternlogq xmm14,xmm7,xmm10,0x96 + + mov QWORD[r8],0 + + mov r12,r11 + mov r11,16 + sub r11,r12 + jmp NEAR $L$_enc_dec_done_660 + +$L$_partial_incomplete_660: + mov r12,QWORD[112+rbp] + add QWORD[r8],r12 + mov r11,QWORD[112+rbp] + +$L$_enc_dec_done_660: + + + lea r12,[byte_len_to_mask_table] + kmovw k1,[r11*2+r12] + vmovdqu64 XMMWORD[64+rdx],xmm14 + mov r12,QWORD[120+rbp] + vmovdqu8 XMMWORD[r12]{k1},xmm3 +$L$_partial_block_done_660: + vmovdqu64 xmm2,XMMWORD[rdx] + mov r13,QWORD[112+rbp] + sub r13,r11 + je NEAR $L$_enc_dec_done_659 + cmp r13,256 + jbe NEAR $L$_message_below_equal_16_blocks_659 + + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vmovdqa64 zmm27,ZMMWORD[ddq_addbe_4444] + vmovdqa64 zmm28,ZMMWORD[ddq_addbe_1234] + + + + + + + vmovd r15d,xmm2 + and r15d,255 + + vshufi64x2 zmm2,zmm2,zmm2,0 + vpshufb zmm2,zmm2,zmm29 + + + + cmp r15b,240 + jae NEAR $L$_next_16_overflow_661 + vpaddd zmm7,zmm2,zmm28 + vpaddd zmm10,zmm7,zmm27 + vpaddd zmm11,zmm10,zmm27 + vpaddd zmm12,zmm11,zmm27 + jmp NEAR $L$_next_16_ok_661 +$L$_next_16_overflow_661: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm12,ZMMWORD[ddq_add_4444] + vpaddd zmm7,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm10,zmm7,zmm12 + vpaddd zmm11,zmm10,zmm12 + vpaddd zmm12,zmm11,zmm12 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 +$L$_next_16_ok_661: + vshufi64x2 zmm2,zmm12,zmm12,255 + add r15b,16 + + vmovdqu8 zmm0,ZMMWORD[r11*1+r9] + vmovdqu8 zmm3,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm4,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm5,ZMMWORD[192+r11*1+r9] + + + vbroadcastf64x2 zmm6,ZMMWORD[rcx] + vpxorq zmm7,zmm7,zmm6 + vpxorq zmm10,zmm10,zmm6 + vpxorq zmm11,zmm11,zmm6 + vpxorq zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[16+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[32+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[48+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[64+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[80+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[96+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[112+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[128+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[144+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[160+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[176+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[192+rcx] + vaesenclast zmm7,zmm7,zmm6 + vaesenclast zmm10,zmm10,zmm6 + vaesenclast zmm11,zmm11,zmm6 + vaesenclast zmm12,zmm12,zmm6 + + + vpxorq zmm7,zmm7,zmm0 + vpxorq zmm10,zmm10,zmm3 + vpxorq zmm11,zmm11,zmm4 + vpxorq zmm12,zmm12,zmm5 + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm7 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm10 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm11 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm12 + + vpshufb zmm7,zmm0,zmm29 + vpshufb zmm10,zmm3,zmm29 + vpshufb zmm11,zmm4,zmm29 + vpshufb zmm12,zmm5,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm7 + vmovdqa64 ZMMWORD[832+rsp],zmm10 + vmovdqa64 ZMMWORD[896+rsp],zmm11 + vmovdqa64 ZMMWORD[960+rsp],zmm12 + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_662 + + vmovdqu64 zmm0,ZMMWORD[288+rdx] + vmovdqu64 ZMMWORD[704+rsp],zmm0 + + vmovdqu64 zmm3,ZMMWORD[224+rdx] + vmovdqu64 ZMMWORD[640+rsp],zmm3 + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[160+rdx] + vmovdqu64 ZMMWORD[576+rsp],zmm4 + + vmovdqu64 zmm5,ZMMWORD[96+rdx] + vmovdqu64 ZMMWORD[512+rsp],zmm5 +$L$_skip_hkeys_precomputation_662: + cmp r13,512 + jb NEAR $L$_message_below_32_blocks_659 + + + + cmp r15b,240 + jae NEAR $L$_next_16_overflow_663 + vpaddd zmm7,zmm2,zmm28 + vpaddd zmm10,zmm7,zmm27 + vpaddd zmm11,zmm10,zmm27 + vpaddd zmm12,zmm11,zmm27 + jmp NEAR $L$_next_16_ok_663 +$L$_next_16_overflow_663: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm12,ZMMWORD[ddq_add_4444] + vpaddd zmm7,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm10,zmm7,zmm12 + vpaddd zmm11,zmm10,zmm12 + vpaddd zmm12,zmm11,zmm12 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 +$L$_next_16_ok_663: + vshufi64x2 zmm2,zmm12,zmm12,255 + add r15b,16 + + vmovdqu8 zmm0,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm3,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm4,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm5,ZMMWORD[448+r11*1+r9] + + + vbroadcastf64x2 zmm6,ZMMWORD[rcx] + vpxorq zmm7,zmm7,zmm6 + vpxorq zmm10,zmm10,zmm6 + vpxorq zmm11,zmm11,zmm6 + vpxorq zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[16+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[32+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[48+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[64+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[80+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[96+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[112+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[128+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[144+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[160+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[176+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[192+rcx] + vaesenclast zmm7,zmm7,zmm6 + vaesenclast zmm10,zmm10,zmm6 + vaesenclast zmm11,zmm11,zmm6 + vaesenclast zmm12,zmm12,zmm6 + + + vpxorq zmm7,zmm7,zmm0 + vpxorq zmm10,zmm10,zmm3 + vpxorq zmm11,zmm11,zmm4 + vpxorq zmm12,zmm12,zmm5 + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm7 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm10 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm11 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm12 + + vpshufb zmm7,zmm0,zmm29 + vpshufb zmm10,zmm3,zmm29 + vpshufb zmm11,zmm4,zmm29 + vpshufb zmm12,zmm5,zmm29 + vmovdqa64 ZMMWORD[1024+rsp],zmm7 + vmovdqa64 ZMMWORD[1088+rsp],zmm10 + vmovdqa64 ZMMWORD[1152+rsp],zmm11 + vmovdqa64 ZMMWORD[1216+rsp],zmm12 + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_664 + vmovdqu64 zmm3,ZMMWORD[640+rsp] + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[576+rsp] + vmovdqu64 zmm5,ZMMWORD[512+rsp] + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[192+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[128+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[64+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[rsp],zmm5 +$L$_skip_hkeys_precomputation_664: + mov r14,1 + add r11,512 + sub r13,512 + + cmp r13,768 + jb NEAR $L$_no_more_big_nblocks_659 +$L$_encrypt_big_nblocks_659: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_665 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_665 +$L$_16_blocks_overflow_665: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_665: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_666 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_666 +$L$_16_blocks_overflow_666: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_666: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[256+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[320+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[384+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[448+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[448+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vpternlogq zmm24,zmm6,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm0 + vmovdqa64 ZMMWORD[832+rsp],zmm3 + vmovdqa64 ZMMWORD[896+rsp],zmm4 + vmovdqa64 ZMMWORD[960+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_667 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_667 +$L$_16_blocks_overflow_667: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_667: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[512+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[576+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[640+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[704+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + + + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpternlogq zmm6,zmm12,zmm15,0x96 + vpxorq zmm6,zmm6,zmm24 + vpternlogq zmm7,zmm13,zmm10,0x96 + vpxorq zmm7,zmm7,zmm25 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vextracti64x4 ymm12,zmm6,1 + vpxorq ymm6,ymm6,ymm12 + vextracti32x4 xmm12,ymm6,1 + vpxorq xmm6,xmm6,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm6,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[512+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[576+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[640+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[704+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[1024+rsp],zmm0 + vmovdqa64 ZMMWORD[1088+rsp],zmm3 + vmovdqa64 ZMMWORD[1152+rsp],zmm4 + vmovdqa64 ZMMWORD[1216+rsp],zmm5 + vmovdqa64 zmm14,zmm6 + + add r11,768 + sub r13,768 + cmp r13,768 + jae NEAR $L$_encrypt_big_nblocks_659 + +$L$_no_more_big_nblocks_659: + + cmp r13,512 + jae NEAR $L$_encrypt_32_blocks_659 + + cmp r13,256 + jae NEAR $L$_encrypt_16_blocks_659 +$L$_encrypt_0_blocks_ghash_32_659: + mov r10d,r13d + and r10d,~15 + mov ebx,256 + sub ebx,r10d + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + add ebx,256 + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_668 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_668 + jb NEAR $L$_last_num_blocks_is_7_1_668 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_668 + jb NEAR $L$_last_num_blocks_is_11_9_668 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_668 + ja NEAR $L$_last_num_blocks_is_16_668 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_668 + jmp NEAR $L$_last_num_blocks_is_13_668 + +$L$_last_num_blocks_is_11_9_668: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_668 + ja NEAR $L$_last_num_blocks_is_11_668 + jmp NEAR $L$_last_num_blocks_is_9_668 + +$L$_last_num_blocks_is_7_1_668: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_668 + jb NEAR $L$_last_num_blocks_is_3_1_668 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_668 + je NEAR $L$_last_num_blocks_is_6_668 + jmp NEAR $L$_last_num_blocks_is_5_668 + +$L$_last_num_blocks_is_3_1_668: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_668 + je NEAR $L$_last_num_blocks_is_2_668 +$L$_last_num_blocks_is_1_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_669 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_669 + +$L$_16_blocks_overflow_669: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_669: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb xmm17,xmm17,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_670 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_670 +$L$_small_initial_partial_block_670: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_670 +$L$_small_initial_compute_done_670: +$L$_after_reduction_670: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_2_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_671 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_671 + +$L$_16_blocks_overflow_671: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_671: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb ymm17,ymm17,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_672 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_672 +$L$_small_initial_partial_block_672: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_672: + + or r13,r13 + je NEAR $L$_after_reduction_672 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_672: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_3_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_673 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_673 + +$L$_16_blocks_overflow_673: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_673: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_674 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_674 +$L$_small_initial_partial_block_674: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_674: + + or r13,r13 + je NEAR $L$_after_reduction_674 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_674: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_4_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_675 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_675 + +$L$_16_blocks_overflow_675: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_675: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_676 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_676 +$L$_small_initial_partial_block_676: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_676: + + or r13,r13 + je NEAR $L$_after_reduction_676 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_676: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_5_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_677 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_677 + +$L$_16_blocks_overflow_677: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_677: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb xmm19,xmm19,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_678 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_678 +$L$_small_initial_partial_block_678: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_678: + + or r13,r13 + je NEAR $L$_after_reduction_678 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_678: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_6_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_679 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_679 + +$L$_16_blocks_overflow_679: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_679: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb ymm19,ymm19,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_680 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_680 +$L$_small_initial_partial_block_680: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_680: + + or r13,r13 + je NEAR $L$_after_reduction_680 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_680: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_7_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_681 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_681 + +$L$_16_blocks_overflow_681: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_681: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_682 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_682 +$L$_small_initial_partial_block_682: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_682: + + or r13,r13 + je NEAR $L$_after_reduction_682 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_682: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_8_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_683 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_683 + +$L$_16_blocks_overflow_683: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_683: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_684 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_684 +$L$_small_initial_partial_block_684: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_684: + + or r13,r13 + je NEAR $L$_after_reduction_684 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_684: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_9_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_685 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_685 + +$L$_16_blocks_overflow_685: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_685: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb xmm20,xmm20,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_686 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_686 +$L$_small_initial_partial_block_686: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_686: + + or r13,r13 + je NEAR $L$_after_reduction_686 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_686: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_10_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_687 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_687 + +$L$_16_blocks_overflow_687: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_687: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb ymm20,ymm20,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_688 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_688 +$L$_small_initial_partial_block_688: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_688: + + or r13,r13 + je NEAR $L$_after_reduction_688 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_688: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_11_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_689 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_689 + +$L$_16_blocks_overflow_689: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_689: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_690 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_690 +$L$_small_initial_partial_block_690: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_690: + + or r13,r13 + je NEAR $L$_after_reduction_690 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_690: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_12_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_691 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_691 + +$L$_16_blocks_overflow_691: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_691: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_692 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_692 +$L$_small_initial_partial_block_692: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_692: + + or r13,r13 + je NEAR $L$_after_reduction_692 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_692: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_13_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_693 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_693 + +$L$_16_blocks_overflow_693: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_693: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb xmm21,xmm21,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_694 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_694 +$L$_small_initial_partial_block_694: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_694: + + or r13,r13 + je NEAR $L$_after_reduction_694 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_694: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_14_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_695 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_695 + +$L$_16_blocks_overflow_695: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_695: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb ymm21,ymm21,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_696 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_696 +$L$_small_initial_partial_block_696: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_696: + + or r13,r13 + je NEAR $L$_after_reduction_696 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_696: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_15_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_697 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_697 + +$L$_16_blocks_overflow_697: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_697: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_698 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_698 +$L$_small_initial_partial_block_698: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_698: + + or r13,r13 + je NEAR $L$_after_reduction_698 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_698: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_16_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_699 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_699 + +$L$_16_blocks_overflow_699: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_699: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_700: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_700: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_700: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_0_668: + vmovdqa64 zmm13,ZMMWORD[1024+rsp] + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1088+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1152+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1216+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_668: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_659 +$L$_encrypt_32_blocks_659: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_701 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_701 +$L$_16_blocks_overflow_701: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_701: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_702 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_702 +$L$_16_blocks_overflow_702: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_702: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[256+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[320+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[384+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[448+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[448+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vpternlogq zmm24,zmm6,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm0 + vmovdqa64 ZMMWORD[832+rsp],zmm3 + vmovdqa64 ZMMWORD[896+rsp],zmm4 + vmovdqa64 ZMMWORD[960+rsp],zmm5 + vmovdqa64 zmm13,ZMMWORD[1280+rsp] + vmovdqu64 zmm12,ZMMWORD[512+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1344+rsp] + vmovdqu64 zmm12,ZMMWORD[576+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1408+rsp] + vmovdqu64 zmm12,ZMMWORD[640+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1472+rsp] + vmovdqu64 zmm12,ZMMWORD[704+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + + sub r13,512 + add r11,512 + mov r10d,r13d + and r10d,~15 + mov ebx,512 + sub ebx,r10d + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_703 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_703 + jb NEAR $L$_last_num_blocks_is_7_1_703 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_703 + jb NEAR $L$_last_num_blocks_is_11_9_703 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_703 + ja NEAR $L$_last_num_blocks_is_16_703 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_703 + jmp NEAR $L$_last_num_blocks_is_13_703 + +$L$_last_num_blocks_is_11_9_703: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_703 + ja NEAR $L$_last_num_blocks_is_11_703 + jmp NEAR $L$_last_num_blocks_is_9_703 + +$L$_last_num_blocks_is_7_1_703: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_703 + jb NEAR $L$_last_num_blocks_is_3_1_703 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_703 + je NEAR $L$_last_num_blocks_is_6_703 + jmp NEAR $L$_last_num_blocks_is_5_703 + +$L$_last_num_blocks_is_3_1_703: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_703 + je NEAR $L$_last_num_blocks_is_2_703 +$L$_last_num_blocks_is_1_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_704 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_704 + +$L$_16_blocks_overflow_704: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_704: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb xmm17,xmm17,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_705 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_705 +$L$_small_initial_partial_block_705: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_705 +$L$_small_initial_compute_done_705: +$L$_after_reduction_705: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_2_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_706 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_706 + +$L$_16_blocks_overflow_706: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_706: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb ymm17,ymm17,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_707 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_707 +$L$_small_initial_partial_block_707: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_707: + + or r13,r13 + je NEAR $L$_after_reduction_707 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_707: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_3_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_708 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_708 + +$L$_16_blocks_overflow_708: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_708: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_709 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_709 +$L$_small_initial_partial_block_709: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_709: + + or r13,r13 + je NEAR $L$_after_reduction_709 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_709: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_4_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_710 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_710 + +$L$_16_blocks_overflow_710: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_710: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_711 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_711 +$L$_small_initial_partial_block_711: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_711: + + or r13,r13 + je NEAR $L$_after_reduction_711 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_711: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_5_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_712 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_712 + +$L$_16_blocks_overflow_712: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_712: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb xmm19,xmm19,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_713 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_713 +$L$_small_initial_partial_block_713: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_713: + + or r13,r13 + je NEAR $L$_after_reduction_713 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_713: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_6_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_714 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_714 + +$L$_16_blocks_overflow_714: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_714: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb ymm19,ymm19,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_715 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_715 +$L$_small_initial_partial_block_715: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_715: + + or r13,r13 + je NEAR $L$_after_reduction_715 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_715: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_7_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_716 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_716 + +$L$_16_blocks_overflow_716: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_716: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_717 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_717 +$L$_small_initial_partial_block_717: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_717: + + or r13,r13 + je NEAR $L$_after_reduction_717 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_717: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_8_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_718 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_718 + +$L$_16_blocks_overflow_718: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_718: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_719 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_719 +$L$_small_initial_partial_block_719: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_719: + + or r13,r13 + je NEAR $L$_after_reduction_719 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_719: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_9_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_720 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_720 + +$L$_16_blocks_overflow_720: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_720: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb xmm20,xmm20,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_721 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_721 +$L$_small_initial_partial_block_721: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_721: + + or r13,r13 + je NEAR $L$_after_reduction_721 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_721: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_10_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_722 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_722 + +$L$_16_blocks_overflow_722: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_722: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb ymm20,ymm20,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_723 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_723 +$L$_small_initial_partial_block_723: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_723: + + or r13,r13 + je NEAR $L$_after_reduction_723 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_723: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_11_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_724 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_724 + +$L$_16_blocks_overflow_724: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_724: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_725 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_725 +$L$_small_initial_partial_block_725: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_725: + + or r13,r13 + je NEAR $L$_after_reduction_725 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_725: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_12_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_726 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_726 + +$L$_16_blocks_overflow_726: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_726: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_727 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_727 +$L$_small_initial_partial_block_727: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_727: + + or r13,r13 + je NEAR $L$_after_reduction_727 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_727: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_13_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_728 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_728 + +$L$_16_blocks_overflow_728: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_728: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb xmm21,xmm21,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_729 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_729 +$L$_small_initial_partial_block_729: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_729: + + or r13,r13 + je NEAR $L$_after_reduction_729 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_729: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_14_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_730 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_730 + +$L$_16_blocks_overflow_730: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_730: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb ymm21,ymm21,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_731 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_731 +$L$_small_initial_partial_block_731: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_731: + + or r13,r13 + je NEAR $L$_after_reduction_731 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_731: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_15_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_732 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_732 + +$L$_16_blocks_overflow_732: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_732: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_733 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_733 +$L$_small_initial_partial_block_733: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_733: + + or r13,r13 + je NEAR $L$_after_reduction_733 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_733: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_16_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_734 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_734 + +$L$_16_blocks_overflow_734: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_734: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_735: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_735: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_735: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_0_703: + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_703: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_659 +$L$_encrypt_16_blocks_659: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_736 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_736 +$L$_16_blocks_overflow_736: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_736: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + vmovdqa64 zmm13,ZMMWORD[1024+rsp] + vmovdqu64 zmm12,ZMMWORD[256+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1088+rsp] + vmovdqu64 zmm12,ZMMWORD[320+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1152+rsp] + vmovdqu64 zmm12,ZMMWORD[384+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1216+rsp] + vmovdqu64 zmm12,ZMMWORD[448+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + sub r13,256 + add r11,256 + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_737 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_737 + jb NEAR $L$_last_num_blocks_is_7_1_737 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_737 + jb NEAR $L$_last_num_blocks_is_11_9_737 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_737 + ja NEAR $L$_last_num_blocks_is_16_737 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_737 + jmp NEAR $L$_last_num_blocks_is_13_737 + +$L$_last_num_blocks_is_11_9_737: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_737 + ja NEAR $L$_last_num_blocks_is_11_737 + jmp NEAR $L$_last_num_blocks_is_9_737 + +$L$_last_num_blocks_is_7_1_737: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_737 + jb NEAR $L$_last_num_blocks_is_3_1_737 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_737 + je NEAR $L$_last_num_blocks_is_6_737 + jmp NEAR $L$_last_num_blocks_is_5_737 + +$L$_last_num_blocks_is_3_1_737: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_737 + je NEAR $L$_last_num_blocks_is_2_737 +$L$_last_num_blocks_is_1_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_738 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_738 + +$L$_16_blocks_overflow_738: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_738: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc xmm0,xmm0,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb xmm17,xmm17,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_739 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_739 +$L$_small_initial_partial_block_739: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_739 +$L$_small_initial_compute_done_739: +$L$_after_reduction_739: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_2_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_740 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_740 + +$L$_16_blocks_overflow_740: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_740: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc ymm0,ymm0,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb ymm17,ymm17,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_741 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_741 +$L$_small_initial_partial_block_741: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_741: + + or r13,r13 + je NEAR $L$_after_reduction_741 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_741: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_3_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_742 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_742 + +$L$_16_blocks_overflow_742: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_742: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_743 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_743 +$L$_small_initial_partial_block_743: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_743: + + or r13,r13 + je NEAR $L$_after_reduction_743 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_743: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_4_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_744 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_744 + +$L$_16_blocks_overflow_744: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_744: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_745 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_745 +$L$_small_initial_partial_block_745: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_745: + + or r13,r13 + je NEAR $L$_after_reduction_745 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_745: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_5_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_746 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_746 + +$L$_16_blocks_overflow_746: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_746: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb xmm19,xmm19,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_747 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_747 +$L$_small_initial_partial_block_747: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_747: + + or r13,r13 + je NEAR $L$_after_reduction_747 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_747: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_6_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_748 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_748 + +$L$_16_blocks_overflow_748: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_748: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb ymm19,ymm19,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_749 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_749 +$L$_small_initial_partial_block_749: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_749: + + or r13,r13 + je NEAR $L$_after_reduction_749 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_749: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_7_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_750 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_750 + +$L$_16_blocks_overflow_750: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_750: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_751 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_751 +$L$_small_initial_partial_block_751: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_751: + + or r13,r13 + je NEAR $L$_after_reduction_751 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_751: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_8_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_752 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_752 + +$L$_16_blocks_overflow_752: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_752: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_753 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_753 +$L$_small_initial_partial_block_753: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_753: + + or r13,r13 + je NEAR $L$_after_reduction_753 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_753: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_9_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_754 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_754 + +$L$_16_blocks_overflow_754: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_754: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb xmm20,xmm20,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_755 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_755 +$L$_small_initial_partial_block_755: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_755: + + or r13,r13 + je NEAR $L$_after_reduction_755 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_755: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_10_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_756 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_756 + +$L$_16_blocks_overflow_756: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_756: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb ymm20,ymm20,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_757 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_757 +$L$_small_initial_partial_block_757: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_757: + + or r13,r13 + je NEAR $L$_after_reduction_757 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_757: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_11_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_758 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_758 + +$L$_16_blocks_overflow_758: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_758: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_759 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_759 +$L$_small_initial_partial_block_759: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_759: + + or r13,r13 + je NEAR $L$_after_reduction_759 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_759: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_12_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_760 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_760 + +$L$_16_blocks_overflow_760: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_760: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_761 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_761 +$L$_small_initial_partial_block_761: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_761: + + or r13,r13 + je NEAR $L$_after_reduction_761 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_761: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_13_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_762 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_762 + +$L$_16_blocks_overflow_762: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_762: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb xmm21,xmm21,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_763 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_763 +$L$_small_initial_partial_block_763: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_763: + + or r13,r13 + je NEAR $L$_after_reduction_763 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_763: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_14_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_764 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_764 + +$L$_16_blocks_overflow_764: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_764: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb ymm21,ymm21,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_765 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_765 +$L$_small_initial_partial_block_765: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_765: + + or r13,r13 + je NEAR $L$_after_reduction_765 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_765: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_15_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_766 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_766 + +$L$_16_blocks_overflow_766: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_766: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_767 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_767 +$L$_small_initial_partial_block_767: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_767: + + or r13,r13 + je NEAR $L$_after_reduction_767 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_767: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_16_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_768 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_768 + +$L$_16_blocks_overflow_768: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_768: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_769: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_769: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_769: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_0_737: + vmovdqa64 zmm13,ZMMWORD[1280+rsp] + vmovdqu64 zmm12,ZMMWORD[512+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1344+rsp] + vmovdqu64 zmm12,ZMMWORD[576+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1408+rsp] + vmovdqu64 zmm12,ZMMWORD[640+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1472+rsp] + vmovdqu64 zmm12,ZMMWORD[704+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_737: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_659 + +$L$_message_below_32_blocks_659: + + + sub r13,256 + add r11,256 + mov r10d,r13d + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_770 + vmovdqu64 zmm3,ZMMWORD[640+rsp] + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[576+rsp] + vmovdqu64 zmm5,ZMMWORD[512+rsp] + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm5 +$L$_skip_hkeys_precomputation_770: + mov r14,1 + and r10d,~15 + mov ebx,512 + sub ebx,r10d + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_771 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_771 + jb NEAR $L$_last_num_blocks_is_7_1_771 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_771 + jb NEAR $L$_last_num_blocks_is_11_9_771 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_771 + ja NEAR $L$_last_num_blocks_is_16_771 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_771 + jmp NEAR $L$_last_num_blocks_is_13_771 + +$L$_last_num_blocks_is_11_9_771: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_771 + ja NEAR $L$_last_num_blocks_is_11_771 + jmp NEAR $L$_last_num_blocks_is_9_771 + +$L$_last_num_blocks_is_7_1_771: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_771 + jb NEAR $L$_last_num_blocks_is_3_1_771 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_771 + je NEAR $L$_last_num_blocks_is_6_771 + jmp NEAR $L$_last_num_blocks_is_5_771 + +$L$_last_num_blocks_is_3_1_771: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_771 + je NEAR $L$_last_num_blocks_is_2_771 +$L$_last_num_blocks_is_1_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_772 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_772 + +$L$_16_blocks_overflow_772: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_772: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb xmm17,xmm17,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_773 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_773 +$L$_small_initial_partial_block_773: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_773 +$L$_small_initial_compute_done_773: +$L$_after_reduction_773: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_2_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_774 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_774 + +$L$_16_blocks_overflow_774: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_774: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb ymm17,ymm17,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_775 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_775 +$L$_small_initial_partial_block_775: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_775: + + or r13,r13 + je NEAR $L$_after_reduction_775 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_775: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_3_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_776 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_776 + +$L$_16_blocks_overflow_776: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_776: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_777 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_777 +$L$_small_initial_partial_block_777: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_777: + + or r13,r13 + je NEAR $L$_after_reduction_777 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_777: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_4_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_778 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_778 + +$L$_16_blocks_overflow_778: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_778: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_779 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_779 +$L$_small_initial_partial_block_779: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_779: + + or r13,r13 + je NEAR $L$_after_reduction_779 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_779: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_5_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_780 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_780 + +$L$_16_blocks_overflow_780: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_780: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb xmm19,xmm19,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_781 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_781 +$L$_small_initial_partial_block_781: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_781: + + or r13,r13 + je NEAR $L$_after_reduction_781 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_781: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_6_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_782 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_782 + +$L$_16_blocks_overflow_782: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_782: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb ymm19,ymm19,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_783 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_783 +$L$_small_initial_partial_block_783: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_783: + + or r13,r13 + je NEAR $L$_after_reduction_783 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_783: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_7_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_784 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_784 + +$L$_16_blocks_overflow_784: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_784: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_785 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_785 +$L$_small_initial_partial_block_785: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_785: + + or r13,r13 + je NEAR $L$_after_reduction_785 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_785: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_8_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_786 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_786 + +$L$_16_blocks_overflow_786: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_786: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_787 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_787 +$L$_small_initial_partial_block_787: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_787: + + or r13,r13 + je NEAR $L$_after_reduction_787 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_787: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_9_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_788 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_788 + +$L$_16_blocks_overflow_788: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_788: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb xmm20,xmm20,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_789 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_789 +$L$_small_initial_partial_block_789: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_789: + + or r13,r13 + je NEAR $L$_after_reduction_789 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_789: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_10_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_790 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_790 + +$L$_16_blocks_overflow_790: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_790: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb ymm20,ymm20,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_791 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_791 +$L$_small_initial_partial_block_791: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_791: + + or r13,r13 + je NEAR $L$_after_reduction_791 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_791: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_11_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_792 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_792 + +$L$_16_blocks_overflow_792: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_792: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_793 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_793 +$L$_small_initial_partial_block_793: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_793: + + or r13,r13 + je NEAR $L$_after_reduction_793 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_793: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_12_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_794 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_794 + +$L$_16_blocks_overflow_794: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_794: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_795 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_795 +$L$_small_initial_partial_block_795: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_795: + + or r13,r13 + je NEAR $L$_after_reduction_795 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_795: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_13_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_796 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_796 + +$L$_16_blocks_overflow_796: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_796: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb xmm21,xmm21,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_797 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_797 +$L$_small_initial_partial_block_797: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_797: + + or r13,r13 + je NEAR $L$_after_reduction_797 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_797: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_14_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_798 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_798 + +$L$_16_blocks_overflow_798: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_798: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb ymm21,ymm21,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_799 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_799 +$L$_small_initial_partial_block_799: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_799: + + or r13,r13 + je NEAR $L$_after_reduction_799 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_799: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_15_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_800 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_800 + +$L$_16_blocks_overflow_800: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_800: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_801 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_801 +$L$_small_initial_partial_block_801: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_801: + + or r13,r13 + je NEAR $L$_after_reduction_801 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_801: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_16_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_802 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_802 + +$L$_16_blocks_overflow_802: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_802: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_803: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_803: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_803: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_0_771: + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_771: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_659 + +$L$_message_below_equal_16_blocks_659: + + + mov r12d,r13d + add r12d,15 + shr r12d,4 + cmp r12,8 + je NEAR $L$_small_initial_num_blocks_is_8_804 + jl NEAR $L$_small_initial_num_blocks_is_7_1_804 + + + cmp r12,12 + je NEAR $L$_small_initial_num_blocks_is_12_804 + jl NEAR $L$_small_initial_num_blocks_is_11_9_804 + + + cmp r12,16 + je NEAR $L$_small_initial_num_blocks_is_16_804 + cmp r12,15 + je NEAR $L$_small_initial_num_blocks_is_15_804 + cmp r12,14 + je NEAR $L$_small_initial_num_blocks_is_14_804 + jmp NEAR $L$_small_initial_num_blocks_is_13_804 + +$L$_small_initial_num_blocks_is_11_9_804: + + cmp r12,11 + je NEAR $L$_small_initial_num_blocks_is_11_804 + cmp r12,10 + je NEAR $L$_small_initial_num_blocks_is_10_804 + jmp NEAR $L$_small_initial_num_blocks_is_9_804 + +$L$_small_initial_num_blocks_is_7_1_804: + cmp r12,4 + je NEAR $L$_small_initial_num_blocks_is_4_804 + jl NEAR $L$_small_initial_num_blocks_is_3_1_804 + + cmp r12,7 + je NEAR $L$_small_initial_num_blocks_is_7_804 + cmp r12,6 + je NEAR $L$_small_initial_num_blocks_is_6_804 + jmp NEAR $L$_small_initial_num_blocks_is_5_804 + +$L$_small_initial_num_blocks_is_3_1_804: + + cmp r12,3 + je NEAR $L$_small_initial_num_blocks_is_3_804 + cmp r12,2 + je NEAR $L$_small_initial_num_blocks_is_2_804 + + + + + +$L$_small_initial_num_blocks_is_1_804: + vmovdqa64 xmm29,XMMWORD[SHUF_MASK] + vpaddd xmm0,xmm2,XMMWORD[ONE] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,0 + vpshufb xmm0,xmm0,xmm29 + vmovdqu8 xmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast xmm0,xmm0,xmm15 + vpxorq xmm0,xmm0,xmm6 + vextracti32x4 xmm12,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm6,xmm6,xmm29 + vextracti32x4 xmm13,zmm6,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_805 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm6,xmm20,0x01 + vpclmulqdq xmm5,xmm6,xmm20,0x10 + vpclmulqdq xmm0,xmm6,xmm20,0x11 + vpclmulqdq xmm3,xmm6,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_805 +$L$_small_initial_partial_block_805: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm13 + + jmp NEAR $L$_after_reduction_805 +$L$_small_initial_compute_done_805: +$L$_after_reduction_805: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_2_804: + vmovdqa64 ymm29,YMMWORD[SHUF_MASK] + vshufi64x2 ymm0,ymm2,ymm2,0 + vpaddd ymm0,ymm0,YMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,1 + vpshufb ymm0,ymm0,ymm29 + vmovdqu8 ymm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast ymm0,ymm0,ymm15 + vpxorq ymm0,ymm0,ymm6 + vextracti32x4 xmm12,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm6,ymm6,ymm29 + vextracti32x4 xmm13,zmm6,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_806 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm6,ymm20,0x01 + vpclmulqdq ymm5,ymm6,ymm20,0x10 + vpclmulqdq ymm0,ymm6,ymm20,0x11 + vpclmulqdq ymm3,ymm6,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_806 +$L$_small_initial_partial_block_806: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm6,xmm20,0x01 + vpclmulqdq xmm5,xmm6,xmm20,0x10 + vpclmulqdq xmm0,xmm6,xmm20,0x11 + vpclmulqdq xmm3,xmm6,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_806: + + or r13,r13 + je NEAR $L$_after_reduction_806 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_806: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_3_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,2 + vpshufb zmm0,zmm0,zmm29 + vmovdqu8 zmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vpxorq zmm0,zmm0,zmm6 + vextracti32x4 xmm12,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm6,zmm6,zmm29 + vextracti32x4 xmm13,zmm6,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_807 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_807 +$L$_small_initial_partial_block_807: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm6,ymm20,0x01 + vpclmulqdq ymm5,ymm6,ymm20,0x10 + vpclmulqdq ymm0,ymm6,ymm20,0x11 + vpclmulqdq ymm3,ymm6,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_807: + + or r13,r13 + je NEAR $L$_after_reduction_807 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_807: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_4_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,3 + vpshufb zmm0,zmm0,zmm29 + vmovdqu8 zmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vpxorq zmm0,zmm0,zmm6 + vextracti32x4 xmm12,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm6,zmm6,zmm29 + vextracti32x4 xmm13,zmm6,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_808 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_808 +$L$_small_initial_partial_block_808: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_808: + + or r13,r13 + je NEAR $L$_after_reduction_808 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_808: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_5_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 xmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast xmm3,xmm3,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq xmm3,xmm3,xmm7 + vextracti32x4 xmm12,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm6,zmm29 + vpshufb xmm7,xmm7,xmm29 + vextracti32x4 xmm13,zmm7,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_809 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm7,xmm20,0x01 + vpclmulqdq xmm5,xmm7,xmm20,0x10 + vpclmulqdq xmm0,xmm7,xmm20,0x11 + vpclmulqdq xmm3,xmm7,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_809 +$L$_small_initial_partial_block_809: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_809: + + or r13,r13 + je NEAR $L$_after_reduction_809 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_809: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_6_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 ymm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast ymm3,ymm3,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq ymm3,ymm3,ymm7 + vextracti32x4 xmm12,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm6,zmm29 + vpshufb ymm7,ymm7,ymm29 + vextracti32x4 xmm13,zmm7,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_810 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm7,ymm20,0x01 + vpclmulqdq ymm5,ymm7,ymm20,0x10 + vpclmulqdq ymm0,ymm7,ymm20,0x11 + vpclmulqdq ymm3,ymm7,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_810 +$L$_small_initial_partial_block_810: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm7,xmm20,0x01 + vpclmulqdq xmm5,xmm7,xmm20,0x10 + vpclmulqdq xmm0,xmm7,xmm20,0x11 + vpclmulqdq xmm3,xmm7,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_810: + + or r13,r13 + je NEAR $L$_after_reduction_810 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_810: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_7_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vextracti32x4 xmm12,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vextracti32x4 xmm13,zmm7,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_811 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm7,zmm20,0x01 + vpclmulqdq zmm5,zmm7,zmm20,0x10 + vpclmulqdq zmm0,zmm7,zmm20,0x11 + vpclmulqdq zmm3,zmm7,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_811 +$L$_small_initial_partial_block_811: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm7,ymm20,0x01 + vpclmulqdq ymm5,ymm7,ymm20,0x10 + vpclmulqdq ymm0,ymm7,ymm20,0x11 + vpclmulqdq ymm3,ymm7,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_811: + + or r13,r13 + je NEAR $L$_after_reduction_811 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_811: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_8_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vextracti32x4 xmm12,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vextracti32x4 xmm13,zmm7,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_812 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_812 +$L$_small_initial_partial_block_812: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm7,zmm20,0x01 + vpclmulqdq zmm5,zmm7,zmm20,0x10 + vpclmulqdq zmm0,zmm7,zmm20,0x11 + vpclmulqdq zmm3,zmm7,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_812: + + or r13,r13 + je NEAR $L$_after_reduction_812 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_812: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_9_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast xmm4,xmm4,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq xmm4,xmm4,xmm10 + vextracti32x4 xmm12,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb xmm10,xmm10,xmm29 + vextracti32x4 xmm13,zmm10,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_813 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm10,xmm20,0x01 + vpclmulqdq xmm5,xmm10,xmm20,0x10 + vpclmulqdq xmm0,xmm10,xmm20,0x11 + vpclmulqdq xmm3,xmm10,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_813 +$L$_small_initial_partial_block_813: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_813: + + or r13,r13 + je NEAR $L$_after_reduction_813 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_813: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_10_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast ymm4,ymm4,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq ymm4,ymm4,ymm10 + vextracti32x4 xmm12,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb ymm10,ymm10,ymm29 + vextracti32x4 xmm13,zmm10,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_814 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm10,ymm20,0x01 + vpclmulqdq ymm5,ymm10,ymm20,0x10 + vpclmulqdq ymm0,ymm10,ymm20,0x11 + vpclmulqdq ymm3,ymm10,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_814 +$L$_small_initial_partial_block_814: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm10,xmm20,0x01 + vpclmulqdq xmm5,xmm10,xmm20,0x10 + vpclmulqdq xmm0,xmm10,xmm20,0x11 + vpclmulqdq xmm3,xmm10,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_814: + + or r13,r13 + je NEAR $L$_after_reduction_814 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_814: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_11_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vextracti32x4 xmm12,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vextracti32x4 xmm13,zmm10,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_815 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm10,zmm20,0x01 + vpclmulqdq zmm5,zmm10,zmm20,0x10 + vpclmulqdq zmm0,zmm10,zmm20,0x11 + vpclmulqdq zmm3,zmm10,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_815 +$L$_small_initial_partial_block_815: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm10,ymm20,0x01 + vpclmulqdq ymm5,ymm10,ymm20,0x10 + vpclmulqdq ymm0,ymm10,ymm20,0x11 + vpclmulqdq ymm3,ymm10,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_815: + + or r13,r13 + je NEAR $L$_after_reduction_815 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_815: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_12_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vextracti32x4 xmm12,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vextracti32x4 xmm13,zmm10,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_816 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_816 +$L$_small_initial_partial_block_816: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm10,zmm20,0x01 + vpclmulqdq zmm5,zmm10,zmm20,0x10 + vpclmulqdq zmm0,zmm10,zmm20,0x11 + vpclmulqdq zmm3,zmm10,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_816: + + or r13,r13 + je NEAR $L$_after_reduction_816 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_816: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_13_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast xmm5,xmm5,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq xmm5,xmm5,xmm11 + vextracti32x4 xmm12,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb xmm11,xmm11,xmm29 + vextracti32x4 xmm13,zmm11,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_817 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm11,xmm20,0x01 + vpclmulqdq xmm5,xmm11,xmm20,0x10 + vpclmulqdq xmm0,xmm11,xmm20,0x11 + vpclmulqdq xmm3,xmm11,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_817 +$L$_small_initial_partial_block_817: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_817: + + or r13,r13 + je NEAR $L$_after_reduction_817 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_817: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_14_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast ymm5,ymm5,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq ymm5,ymm5,ymm11 + vextracti32x4 xmm12,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb ymm11,ymm11,ymm29 + vextracti32x4 xmm13,zmm11,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_818 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm11,ymm20,0x01 + vpclmulqdq ymm5,ymm11,ymm20,0x10 + vpclmulqdq ymm0,ymm11,ymm20,0x11 + vpclmulqdq ymm3,ymm11,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_818 +$L$_small_initial_partial_block_818: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm11,xmm20,0x01 + vpclmulqdq xmm5,xmm11,xmm20,0x10 + vpclmulqdq xmm0,xmm11,xmm20,0x11 + vpclmulqdq xmm3,xmm11,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_818: + + or r13,r13 + je NEAR $L$_after_reduction_818 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_818: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_15_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast zmm5,zmm5,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq zmm5,zmm5,zmm11 + vextracti32x4 xmm12,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vextracti32x4 xmm13,zmm11,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_819 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm11,zmm20,0x01 + vpclmulqdq zmm5,zmm11,zmm20,0x10 + vpclmulqdq zmm0,zmm11,zmm20,0x11 + vpclmulqdq zmm3,zmm11,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_819 +$L$_small_initial_partial_block_819: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm11,ymm20,0x01 + vpclmulqdq ymm5,ymm11,ymm20,0x10 + vpclmulqdq ymm0,ymm11,ymm20,0x11 + vpclmulqdq ymm3,ymm11,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_819: + + or r13,r13 + je NEAR $L$_after_reduction_819 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_819: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_16_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast zmm5,zmm5,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq zmm5,zmm5,zmm11 + vextracti32x4 xmm12,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vextracti32x4 xmm13,zmm11,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_820: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm11,zmm20,0x01 + vpclmulqdq zmm5,zmm11,zmm20,0x10 + vpclmulqdq zmm0,zmm11,zmm20,0x11 + vpclmulqdq zmm3,zmm11,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_820: + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_820: +$L$_small_initial_blocks_encrypted_804: +$L$_ghash_done_659: + vmovdqu64 XMMWORD[rdx],xmm2 + vmovdqu64 XMMWORD[64+rdx],xmm14 +$L$_enc_dec_done_659: + jmp NEAR $L$exit_gcm_decrypt +ALIGN 32 +$L$aes_gcm_decrypt_256_avx512: + cmp QWORD[112+rbp],0 + je NEAR $L$_enc_dec_done_821 + xor r14,r14 + vmovdqu64 xmm14,XMMWORD[64+rdx] + + mov r11,QWORD[r8] + or r11,r11 + je NEAR $L$_partial_block_done_822 + mov r10d,16 + lea r12,[byte_len_to_mask_table] + cmp QWORD[112+rbp],r10 + cmovc r10,QWORD[112+rbp] + add r12,r10 + add r12,r10 + kmovw k1,[r12] + vmovdqu8 xmm0{k1}{z},[r9] + + vmovdqu64 xmm3,XMMWORD[16+rdx] + vmovdqu64 xmm4,XMMWORD[336+rdx] + + + + lea r12,[SHIFT_MASK] + add r12,r11 + vmovdqu64 xmm5,XMMWORD[r12] + vpshufb xmm3,xmm3,xmm5 + + vmovdqa64 xmm6,xmm0 + vpxorq xmm3,xmm3,xmm0 + + + mov r13,QWORD[112+rbp] + add r13,r11 + sub r13,16 + jge NEAR $L$_no_extra_mask_822 + sub r12,r13 +$L$_no_extra_mask_822: + + + + vmovdqu64 xmm0,XMMWORD[16+r12] + vpand xmm3,xmm3,xmm0 + vpand xmm6,xmm6,xmm0 + vpshufb xmm6,xmm6,XMMWORD[SHUF_MASK] + vpshufb xmm6,xmm6,xmm5 + vpxorq xmm14,xmm14,xmm6 + cmp r13,0 + jl NEAR $L$_partial_incomplete_822 + + vpclmulqdq xmm7,xmm14,xmm4,0x11 + vpclmulqdq xmm10,xmm14,xmm4,0x00 + vpclmulqdq xmm11,xmm14,xmm4,0x01 + vpclmulqdq xmm14,xmm14,xmm4,0x10 + vpxorq xmm14,xmm14,xmm11 + + vpsrldq xmm11,xmm14,8 + vpslldq xmm14,xmm14,8 + vpxorq xmm7,xmm7,xmm11 + vpxorq xmm14,xmm14,xmm10 + + + + vmovdqu64 xmm11,XMMWORD[POLY2] + + vpclmulqdq xmm10,xmm11,xmm14,0x01 + vpslldq xmm10,xmm10,8 + vpxorq xmm14,xmm14,xmm10 + + + + vpclmulqdq xmm10,xmm11,xmm14,0x00 + vpsrldq xmm10,xmm10,4 + vpclmulqdq xmm14,xmm11,xmm14,0x10 + vpslldq xmm14,xmm14,4 + + vpternlogq xmm14,xmm7,xmm10,0x96 + + mov QWORD[r8],0 + + mov r12,r11 + mov r11,16 + sub r11,r12 + jmp NEAR $L$_enc_dec_done_822 + +$L$_partial_incomplete_822: + mov r12,QWORD[112+rbp] + add QWORD[r8],r12 + mov r11,QWORD[112+rbp] + +$L$_enc_dec_done_822: + + + lea r12,[byte_len_to_mask_table] + kmovw k1,[r11*2+r12] + vmovdqu64 XMMWORD[64+rdx],xmm14 + mov r12,QWORD[120+rbp] + vmovdqu8 XMMWORD[r12]{k1},xmm3 +$L$_partial_block_done_822: + vmovdqu64 xmm2,XMMWORD[rdx] + mov r13,QWORD[112+rbp] + sub r13,r11 + je NEAR $L$_enc_dec_done_821 + cmp r13,256 + jbe NEAR $L$_message_below_equal_16_blocks_821 + + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vmovdqa64 zmm27,ZMMWORD[ddq_addbe_4444] + vmovdqa64 zmm28,ZMMWORD[ddq_addbe_1234] + + + + + + + vmovd r15d,xmm2 + and r15d,255 + + vshufi64x2 zmm2,zmm2,zmm2,0 + vpshufb zmm2,zmm2,zmm29 + + + + cmp r15b,240 + jae NEAR $L$_next_16_overflow_823 + vpaddd zmm7,zmm2,zmm28 + vpaddd zmm10,zmm7,zmm27 + vpaddd zmm11,zmm10,zmm27 + vpaddd zmm12,zmm11,zmm27 + jmp NEAR $L$_next_16_ok_823 +$L$_next_16_overflow_823: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm12,ZMMWORD[ddq_add_4444] + vpaddd zmm7,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm10,zmm7,zmm12 + vpaddd zmm11,zmm10,zmm12 + vpaddd zmm12,zmm11,zmm12 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 +$L$_next_16_ok_823: + vshufi64x2 zmm2,zmm12,zmm12,255 + add r15b,16 + + vmovdqu8 zmm0,ZMMWORD[r11*1+r9] + vmovdqu8 zmm3,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm4,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm5,ZMMWORD[192+r11*1+r9] + + + vbroadcastf64x2 zmm6,ZMMWORD[rcx] + vpxorq zmm7,zmm7,zmm6 + vpxorq zmm10,zmm10,zmm6 + vpxorq zmm11,zmm11,zmm6 + vpxorq zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[16+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[32+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[48+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[64+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[80+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[96+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[112+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[128+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[144+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[160+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[176+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[192+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[208+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[224+rcx] + vaesenclast zmm7,zmm7,zmm6 + vaesenclast zmm10,zmm10,zmm6 + vaesenclast zmm11,zmm11,zmm6 + vaesenclast zmm12,zmm12,zmm6 + + + vpxorq zmm7,zmm7,zmm0 + vpxorq zmm10,zmm10,zmm3 + vpxorq zmm11,zmm11,zmm4 + vpxorq zmm12,zmm12,zmm5 + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm7 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm10 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm11 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm12 + + vpshufb zmm7,zmm0,zmm29 + vpshufb zmm10,zmm3,zmm29 + vpshufb zmm11,zmm4,zmm29 + vpshufb zmm12,zmm5,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm7 + vmovdqa64 ZMMWORD[832+rsp],zmm10 + vmovdqa64 ZMMWORD[896+rsp],zmm11 + vmovdqa64 ZMMWORD[960+rsp],zmm12 + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_824 + + vmovdqu64 zmm0,ZMMWORD[288+rdx] + vmovdqu64 ZMMWORD[704+rsp],zmm0 + + vmovdqu64 zmm3,ZMMWORD[224+rdx] + vmovdqu64 ZMMWORD[640+rsp],zmm3 + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[160+rdx] + vmovdqu64 ZMMWORD[576+rsp],zmm4 + + vmovdqu64 zmm5,ZMMWORD[96+rdx] + vmovdqu64 ZMMWORD[512+rsp],zmm5 +$L$_skip_hkeys_precomputation_824: + cmp r13,512 + jb NEAR $L$_message_below_32_blocks_821 + + + + cmp r15b,240 + jae NEAR $L$_next_16_overflow_825 + vpaddd zmm7,zmm2,zmm28 + vpaddd zmm10,zmm7,zmm27 + vpaddd zmm11,zmm10,zmm27 + vpaddd zmm12,zmm11,zmm27 + jmp NEAR $L$_next_16_ok_825 +$L$_next_16_overflow_825: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm12,ZMMWORD[ddq_add_4444] + vpaddd zmm7,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm10,zmm7,zmm12 + vpaddd zmm11,zmm10,zmm12 + vpaddd zmm12,zmm11,zmm12 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 +$L$_next_16_ok_825: + vshufi64x2 zmm2,zmm12,zmm12,255 + add r15b,16 + + vmovdqu8 zmm0,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm3,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm4,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm5,ZMMWORD[448+r11*1+r9] + + + vbroadcastf64x2 zmm6,ZMMWORD[rcx] + vpxorq zmm7,zmm7,zmm6 + vpxorq zmm10,zmm10,zmm6 + vpxorq zmm11,zmm11,zmm6 + vpxorq zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[16+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[32+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[48+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[64+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[80+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[96+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[112+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[128+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[144+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[160+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[176+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[192+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[208+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[224+rcx] + vaesenclast zmm7,zmm7,zmm6 + vaesenclast zmm10,zmm10,zmm6 + vaesenclast zmm11,zmm11,zmm6 + vaesenclast zmm12,zmm12,zmm6 + + + vpxorq zmm7,zmm7,zmm0 + vpxorq zmm10,zmm10,zmm3 + vpxorq zmm11,zmm11,zmm4 + vpxorq zmm12,zmm12,zmm5 + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm7 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm10 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm11 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm12 + + vpshufb zmm7,zmm0,zmm29 + vpshufb zmm10,zmm3,zmm29 + vpshufb zmm11,zmm4,zmm29 + vpshufb zmm12,zmm5,zmm29 + vmovdqa64 ZMMWORD[1024+rsp],zmm7 + vmovdqa64 ZMMWORD[1088+rsp],zmm10 + vmovdqa64 ZMMWORD[1152+rsp],zmm11 + vmovdqa64 ZMMWORD[1216+rsp],zmm12 + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_826 + vmovdqu64 zmm3,ZMMWORD[640+rsp] + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[576+rsp] + vmovdqu64 zmm5,ZMMWORD[512+rsp] + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[192+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[128+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[64+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[rsp],zmm5 +$L$_skip_hkeys_precomputation_826: + mov r14,1 + add r11,512 + sub r13,512 + + cmp r13,768 + jb NEAR $L$_no_more_big_nblocks_821 +$L$_encrypt_big_nblocks_821: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_827 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_827 +$L$_16_blocks_overflow_827: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_827: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_828 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_828 +$L$_16_blocks_overflow_828: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_828: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[256+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[320+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[384+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[448+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[448+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vpternlogq zmm24,zmm6,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm0 + vmovdqa64 ZMMWORD[832+rsp],zmm3 + vmovdqa64 ZMMWORD[896+rsp],zmm4 + vmovdqa64 ZMMWORD[960+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_829 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_829 +$L$_16_blocks_overflow_829: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_829: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[512+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[576+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[640+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[704+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + + + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpternlogq zmm6,zmm12,zmm15,0x96 + vpxorq zmm6,zmm6,zmm24 + vpternlogq zmm7,zmm13,zmm10,0x96 + vpxorq zmm7,zmm7,zmm25 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vextracti64x4 ymm12,zmm6,1 + vpxorq ymm6,ymm6,ymm12 + vextracti32x4 xmm12,ymm6,1 + vpxorq xmm6,xmm6,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm6,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[512+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[576+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[640+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[704+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[1024+rsp],zmm0 + vmovdqa64 ZMMWORD[1088+rsp],zmm3 + vmovdqa64 ZMMWORD[1152+rsp],zmm4 + vmovdqa64 ZMMWORD[1216+rsp],zmm5 + vmovdqa64 zmm14,zmm6 + + add r11,768 + sub r13,768 + cmp r13,768 + jae NEAR $L$_encrypt_big_nblocks_821 + +$L$_no_more_big_nblocks_821: + + cmp r13,512 + jae NEAR $L$_encrypt_32_blocks_821 + + cmp r13,256 + jae NEAR $L$_encrypt_16_blocks_821 +$L$_encrypt_0_blocks_ghash_32_821: + mov r10d,r13d + and r10d,~15 + mov ebx,256 + sub ebx,r10d + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + add ebx,256 + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_830 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_830 + jb NEAR $L$_last_num_blocks_is_7_1_830 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_830 + jb NEAR $L$_last_num_blocks_is_11_9_830 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_830 + ja NEAR $L$_last_num_blocks_is_16_830 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_830 + jmp NEAR $L$_last_num_blocks_is_13_830 + +$L$_last_num_blocks_is_11_9_830: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_830 + ja NEAR $L$_last_num_blocks_is_11_830 + jmp NEAR $L$_last_num_blocks_is_9_830 + +$L$_last_num_blocks_is_7_1_830: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_830 + jb NEAR $L$_last_num_blocks_is_3_1_830 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_830 + je NEAR $L$_last_num_blocks_is_6_830 + jmp NEAR $L$_last_num_blocks_is_5_830 + +$L$_last_num_blocks_is_3_1_830: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_830 + je NEAR $L$_last_num_blocks_is_2_830 +$L$_last_num_blocks_is_1_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_831 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_831 + +$L$_16_blocks_overflow_831: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_831: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb xmm17,xmm17,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_832 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_832 +$L$_small_initial_partial_block_832: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_832 +$L$_small_initial_compute_done_832: +$L$_after_reduction_832: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_2_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_833 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_833 + +$L$_16_blocks_overflow_833: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_833: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb ymm17,ymm17,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_834 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_834 +$L$_small_initial_partial_block_834: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_834: + + or r13,r13 + je NEAR $L$_after_reduction_834 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_834: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_3_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_835 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_835 + +$L$_16_blocks_overflow_835: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_835: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_836 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_836 +$L$_small_initial_partial_block_836: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_836: + + or r13,r13 + je NEAR $L$_after_reduction_836 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_836: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_4_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_837 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_837 + +$L$_16_blocks_overflow_837: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_837: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_838 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_838 +$L$_small_initial_partial_block_838: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_838: + + or r13,r13 + je NEAR $L$_after_reduction_838 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_838: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_5_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_839 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_839 + +$L$_16_blocks_overflow_839: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_839: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb xmm19,xmm19,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_840 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_840 +$L$_small_initial_partial_block_840: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_840: + + or r13,r13 + je NEAR $L$_after_reduction_840 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_840: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_6_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_841 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_841 + +$L$_16_blocks_overflow_841: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_841: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb ymm19,ymm19,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_842 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_842 +$L$_small_initial_partial_block_842: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_842: + + or r13,r13 + je NEAR $L$_after_reduction_842 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_842: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_7_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_843 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_843 + +$L$_16_blocks_overflow_843: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_843: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_844 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_844 +$L$_small_initial_partial_block_844: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_844: + + or r13,r13 + je NEAR $L$_after_reduction_844 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_844: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_8_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_845 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_845 + +$L$_16_blocks_overflow_845: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_845: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_846 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_846 +$L$_small_initial_partial_block_846: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_846: + + or r13,r13 + je NEAR $L$_after_reduction_846 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_846: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_9_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_847 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_847 + +$L$_16_blocks_overflow_847: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_847: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb xmm20,xmm20,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_848 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_848 +$L$_small_initial_partial_block_848: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_848: + + or r13,r13 + je NEAR $L$_after_reduction_848 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_848: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_10_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_849 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_849 + +$L$_16_blocks_overflow_849: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_849: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb ymm20,ymm20,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_850 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_850 +$L$_small_initial_partial_block_850: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_850: + + or r13,r13 + je NEAR $L$_after_reduction_850 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_850: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_11_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_851 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_851 + +$L$_16_blocks_overflow_851: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_851: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_852 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_852 +$L$_small_initial_partial_block_852: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_852: + + or r13,r13 + je NEAR $L$_after_reduction_852 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_852: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_12_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_853 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_853 + +$L$_16_blocks_overflow_853: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_853: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_854 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_854 +$L$_small_initial_partial_block_854: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_854: + + or r13,r13 + je NEAR $L$_after_reduction_854 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_854: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_13_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_855 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_855 + +$L$_16_blocks_overflow_855: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_855: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb xmm21,xmm21,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_856 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_856 +$L$_small_initial_partial_block_856: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_856: + + or r13,r13 + je NEAR $L$_after_reduction_856 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_856: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_14_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_857 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_857 + +$L$_16_blocks_overflow_857: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_857: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb ymm21,ymm21,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_858 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_858 +$L$_small_initial_partial_block_858: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_858: + + or r13,r13 + je NEAR $L$_after_reduction_858 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_858: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_15_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_859 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_859 + +$L$_16_blocks_overflow_859: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_859: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_860 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_860 +$L$_small_initial_partial_block_860: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_860: + + or r13,r13 + je NEAR $L$_after_reduction_860 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_860: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_16_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_861 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_861 + +$L$_16_blocks_overflow_861: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_861: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_862: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_862: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_862: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_0_830: + vmovdqa64 zmm13,ZMMWORD[1024+rsp] + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1088+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1152+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1216+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_830: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_821 +$L$_encrypt_32_blocks_821: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_863 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_863 +$L$_16_blocks_overflow_863: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_863: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_864 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_864 +$L$_16_blocks_overflow_864: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_864: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[256+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[320+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[384+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[448+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[448+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vpternlogq zmm24,zmm6,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm0 + vmovdqa64 ZMMWORD[832+rsp],zmm3 + vmovdqa64 ZMMWORD[896+rsp],zmm4 + vmovdqa64 ZMMWORD[960+rsp],zmm5 + vmovdqa64 zmm13,ZMMWORD[1280+rsp] + vmovdqu64 zmm12,ZMMWORD[512+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1344+rsp] + vmovdqu64 zmm12,ZMMWORD[576+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1408+rsp] + vmovdqu64 zmm12,ZMMWORD[640+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1472+rsp] + vmovdqu64 zmm12,ZMMWORD[704+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + + sub r13,512 + add r11,512 + mov r10d,r13d + and r10d,~15 + mov ebx,512 + sub ebx,r10d + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_865 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_865 + jb NEAR $L$_last_num_blocks_is_7_1_865 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_865 + jb NEAR $L$_last_num_blocks_is_11_9_865 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_865 + ja NEAR $L$_last_num_blocks_is_16_865 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_865 + jmp NEAR $L$_last_num_blocks_is_13_865 + +$L$_last_num_blocks_is_11_9_865: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_865 + ja NEAR $L$_last_num_blocks_is_11_865 + jmp NEAR $L$_last_num_blocks_is_9_865 + +$L$_last_num_blocks_is_7_1_865: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_865 + jb NEAR $L$_last_num_blocks_is_3_1_865 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_865 + je NEAR $L$_last_num_blocks_is_6_865 + jmp NEAR $L$_last_num_blocks_is_5_865 + +$L$_last_num_blocks_is_3_1_865: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_865 + je NEAR $L$_last_num_blocks_is_2_865 +$L$_last_num_blocks_is_1_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_866 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_866 + +$L$_16_blocks_overflow_866: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_866: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb xmm17,xmm17,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_867 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_867 +$L$_small_initial_partial_block_867: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_867 +$L$_small_initial_compute_done_867: +$L$_after_reduction_867: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_2_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_868 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_868 + +$L$_16_blocks_overflow_868: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_868: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb ymm17,ymm17,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_869 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_869 +$L$_small_initial_partial_block_869: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_869: + + or r13,r13 + je NEAR $L$_after_reduction_869 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_869: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_3_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_870 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_870 + +$L$_16_blocks_overflow_870: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_870: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_871 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_871 +$L$_small_initial_partial_block_871: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_871: + + or r13,r13 + je NEAR $L$_after_reduction_871 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_871: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_4_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_872 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_872 + +$L$_16_blocks_overflow_872: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_872: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_873 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_873 +$L$_small_initial_partial_block_873: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_873: + + or r13,r13 + je NEAR $L$_after_reduction_873 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_873: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_5_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_874 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_874 + +$L$_16_blocks_overflow_874: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_874: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb xmm19,xmm19,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_875 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_875 +$L$_small_initial_partial_block_875: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_875: + + or r13,r13 + je NEAR $L$_after_reduction_875 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_875: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_6_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_876 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_876 + +$L$_16_blocks_overflow_876: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_876: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb ymm19,ymm19,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_877 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_877 +$L$_small_initial_partial_block_877: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_877: + + or r13,r13 + je NEAR $L$_after_reduction_877 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_877: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_7_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_878 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_878 + +$L$_16_blocks_overflow_878: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_878: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_879 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_879 +$L$_small_initial_partial_block_879: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_879: + + or r13,r13 + je NEAR $L$_after_reduction_879 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_879: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_8_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_880 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_880 + +$L$_16_blocks_overflow_880: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_880: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_881 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_881 +$L$_small_initial_partial_block_881: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_881: + + or r13,r13 + je NEAR $L$_after_reduction_881 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_881: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_9_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_882 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_882 + +$L$_16_blocks_overflow_882: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_882: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb xmm20,xmm20,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_883 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_883 +$L$_small_initial_partial_block_883: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_883: + + or r13,r13 + je NEAR $L$_after_reduction_883 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_883: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_10_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_884 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_884 + +$L$_16_blocks_overflow_884: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_884: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb ymm20,ymm20,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_885 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_885 +$L$_small_initial_partial_block_885: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_885: + + or r13,r13 + je NEAR $L$_after_reduction_885 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_885: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_11_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_886 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_886 + +$L$_16_blocks_overflow_886: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_886: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_887 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_887 +$L$_small_initial_partial_block_887: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_887: + + or r13,r13 + je NEAR $L$_after_reduction_887 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_887: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_12_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_888 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_888 + +$L$_16_blocks_overflow_888: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_888: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_889 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_889 +$L$_small_initial_partial_block_889: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_889: + + or r13,r13 + je NEAR $L$_after_reduction_889 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_889: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_13_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_890 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_890 + +$L$_16_blocks_overflow_890: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_890: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb xmm21,xmm21,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_891 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_891 +$L$_small_initial_partial_block_891: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_891: + + or r13,r13 + je NEAR $L$_after_reduction_891 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_891: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_14_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_892 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_892 + +$L$_16_blocks_overflow_892: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_892: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb ymm21,ymm21,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_893 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_893 +$L$_small_initial_partial_block_893: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_893: + + or r13,r13 + je NEAR $L$_after_reduction_893 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_893: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_15_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_894 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_894 + +$L$_16_blocks_overflow_894: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_894: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_895 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_895 +$L$_small_initial_partial_block_895: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_895: + + or r13,r13 + je NEAR $L$_after_reduction_895 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_895: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_16_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_896 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_896 + +$L$_16_blocks_overflow_896: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_896: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_897: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_897: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_897: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_0_865: + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_865: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_821 +$L$_encrypt_16_blocks_821: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_898 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_898 +$L$_16_blocks_overflow_898: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_898: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + vmovdqa64 zmm13,ZMMWORD[1024+rsp] + vmovdqu64 zmm12,ZMMWORD[256+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1088+rsp] + vmovdqu64 zmm12,ZMMWORD[320+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1152+rsp] + vmovdqu64 zmm12,ZMMWORD[384+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1216+rsp] + vmovdqu64 zmm12,ZMMWORD[448+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + sub r13,256 + add r11,256 + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_899 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_899 + jb NEAR $L$_last_num_blocks_is_7_1_899 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_899 + jb NEAR $L$_last_num_blocks_is_11_9_899 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_899 + ja NEAR $L$_last_num_blocks_is_16_899 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_899 + jmp NEAR $L$_last_num_blocks_is_13_899 + +$L$_last_num_blocks_is_11_9_899: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_899 + ja NEAR $L$_last_num_blocks_is_11_899 + jmp NEAR $L$_last_num_blocks_is_9_899 + +$L$_last_num_blocks_is_7_1_899: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_899 + jb NEAR $L$_last_num_blocks_is_3_1_899 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_899 + je NEAR $L$_last_num_blocks_is_6_899 + jmp NEAR $L$_last_num_blocks_is_5_899 + +$L$_last_num_blocks_is_3_1_899: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_899 + je NEAR $L$_last_num_blocks_is_2_899 +$L$_last_num_blocks_is_1_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_900 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_900 + +$L$_16_blocks_overflow_900: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_900: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc xmm0,xmm0,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc xmm0,xmm0,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb xmm17,xmm17,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_901 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_901 +$L$_small_initial_partial_block_901: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_901 +$L$_small_initial_compute_done_901: +$L$_after_reduction_901: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_2_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_902 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_902 + +$L$_16_blocks_overflow_902: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_902: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc ymm0,ymm0,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc ymm0,ymm0,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb ymm17,ymm17,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_903 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_903 +$L$_small_initial_partial_block_903: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_903: + + or r13,r13 + je NEAR $L$_after_reduction_903 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_903: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_3_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_904 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_904 + +$L$_16_blocks_overflow_904: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_904: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_905 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_905 +$L$_small_initial_partial_block_905: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_905: + + or r13,r13 + je NEAR $L$_after_reduction_905 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_905: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_4_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_906 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_906 + +$L$_16_blocks_overflow_906: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_906: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_907 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_907 +$L$_small_initial_partial_block_907: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_907: + + or r13,r13 + je NEAR $L$_after_reduction_907 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_907: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_5_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_908 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_908 + +$L$_16_blocks_overflow_908: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_908: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb xmm19,xmm19,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_909 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_909 +$L$_small_initial_partial_block_909: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_909: + + or r13,r13 + je NEAR $L$_after_reduction_909 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_909: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_6_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_910 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_910 + +$L$_16_blocks_overflow_910: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_910: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb ymm19,ymm19,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_911 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_911 +$L$_small_initial_partial_block_911: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_911: + + or r13,r13 + je NEAR $L$_after_reduction_911 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_911: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_7_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_912 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_912 + +$L$_16_blocks_overflow_912: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_912: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_913 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_913 +$L$_small_initial_partial_block_913: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_913: + + or r13,r13 + je NEAR $L$_after_reduction_913 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_913: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_8_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_914 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_914 + +$L$_16_blocks_overflow_914: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_914: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_915 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_915 +$L$_small_initial_partial_block_915: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_915: + + or r13,r13 + je NEAR $L$_after_reduction_915 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_915: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_9_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_916 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_916 + +$L$_16_blocks_overflow_916: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_916: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb xmm20,xmm20,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_917 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_917 +$L$_small_initial_partial_block_917: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_917: + + or r13,r13 + je NEAR $L$_after_reduction_917 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_917: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_10_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_918 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_918 + +$L$_16_blocks_overflow_918: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_918: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb ymm20,ymm20,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_919 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_919 +$L$_small_initial_partial_block_919: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_919: + + or r13,r13 + je NEAR $L$_after_reduction_919 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_919: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_11_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_920 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_920 + +$L$_16_blocks_overflow_920: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_920: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_921 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_921 +$L$_small_initial_partial_block_921: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_921: + + or r13,r13 + je NEAR $L$_after_reduction_921 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_921: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_12_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_922 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_922 + +$L$_16_blocks_overflow_922: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_922: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_923 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_923 +$L$_small_initial_partial_block_923: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_923: + + or r13,r13 + je NEAR $L$_after_reduction_923 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_923: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_13_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_924 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_924 + +$L$_16_blocks_overflow_924: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_924: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb xmm21,xmm21,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_925 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_925 +$L$_small_initial_partial_block_925: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_925: + + or r13,r13 + je NEAR $L$_after_reduction_925 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_925: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_14_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_926 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_926 + +$L$_16_blocks_overflow_926: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_926: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb ymm21,ymm21,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_927 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_927 +$L$_small_initial_partial_block_927: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_927: + + or r13,r13 + je NEAR $L$_after_reduction_927 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_927: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_15_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_928 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_928 + +$L$_16_blocks_overflow_928: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_928: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_929 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_929 +$L$_small_initial_partial_block_929: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_929: + + or r13,r13 + je NEAR $L$_after_reduction_929 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_929: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_16_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_930 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_930 + +$L$_16_blocks_overflow_930: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_930: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_931: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_931: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_931: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_0_899: + vmovdqa64 zmm13,ZMMWORD[1280+rsp] + vmovdqu64 zmm12,ZMMWORD[512+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1344+rsp] + vmovdqu64 zmm12,ZMMWORD[576+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1408+rsp] + vmovdqu64 zmm12,ZMMWORD[640+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1472+rsp] + vmovdqu64 zmm12,ZMMWORD[704+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_899: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_821 + +$L$_message_below_32_blocks_821: + + + sub r13,256 + add r11,256 + mov r10d,r13d + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_932 + vmovdqu64 zmm3,ZMMWORD[640+rsp] + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[576+rsp] + vmovdqu64 zmm5,ZMMWORD[512+rsp] + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm5 +$L$_skip_hkeys_precomputation_932: + mov r14,1 + and r10d,~15 + mov ebx,512 + sub ebx,r10d + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_933 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_933 + jb NEAR $L$_last_num_blocks_is_7_1_933 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_933 + jb NEAR $L$_last_num_blocks_is_11_9_933 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_933 + ja NEAR $L$_last_num_blocks_is_16_933 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_933 + jmp NEAR $L$_last_num_blocks_is_13_933 + +$L$_last_num_blocks_is_11_9_933: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_933 + ja NEAR $L$_last_num_blocks_is_11_933 + jmp NEAR $L$_last_num_blocks_is_9_933 + +$L$_last_num_blocks_is_7_1_933: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_933 + jb NEAR $L$_last_num_blocks_is_3_1_933 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_933 + je NEAR $L$_last_num_blocks_is_6_933 + jmp NEAR $L$_last_num_blocks_is_5_933 + +$L$_last_num_blocks_is_3_1_933: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_933 + je NEAR $L$_last_num_blocks_is_2_933 +$L$_last_num_blocks_is_1_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_934 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_934 + +$L$_16_blocks_overflow_934: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_934: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb xmm17,xmm17,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_935 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_935 +$L$_small_initial_partial_block_935: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_935 +$L$_small_initial_compute_done_935: +$L$_after_reduction_935: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_2_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_936 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_936 + +$L$_16_blocks_overflow_936: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_936: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb ymm17,ymm17,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_937 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_937 +$L$_small_initial_partial_block_937: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_937: + + or r13,r13 + je NEAR $L$_after_reduction_937 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_937: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_3_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_938 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_938 + +$L$_16_blocks_overflow_938: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_938: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_939 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_939 +$L$_small_initial_partial_block_939: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_939: + + or r13,r13 + je NEAR $L$_after_reduction_939 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_939: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_4_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_940 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_940 + +$L$_16_blocks_overflow_940: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_940: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_941 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_941 +$L$_small_initial_partial_block_941: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_941: + + or r13,r13 + je NEAR $L$_after_reduction_941 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_941: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_5_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_942 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_942 + +$L$_16_blocks_overflow_942: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_942: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb xmm19,xmm19,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_943 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_943 +$L$_small_initial_partial_block_943: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_943: + + or r13,r13 + je NEAR $L$_after_reduction_943 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_943: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_6_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_944 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_944 + +$L$_16_blocks_overflow_944: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_944: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb ymm19,ymm19,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_945 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_945 +$L$_small_initial_partial_block_945: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_945: + + or r13,r13 + je NEAR $L$_after_reduction_945 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_945: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_7_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_946 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_946 + +$L$_16_blocks_overflow_946: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_946: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_947 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_947 +$L$_small_initial_partial_block_947: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_947: + + or r13,r13 + je NEAR $L$_after_reduction_947 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_947: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_8_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_948 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_948 + +$L$_16_blocks_overflow_948: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_948: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_949 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_949 +$L$_small_initial_partial_block_949: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_949: + + or r13,r13 + je NEAR $L$_after_reduction_949 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_949: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_9_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_950 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_950 + +$L$_16_blocks_overflow_950: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_950: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb xmm20,xmm20,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_951 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_951 +$L$_small_initial_partial_block_951: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_951: + + or r13,r13 + je NEAR $L$_after_reduction_951 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_951: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_10_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_952 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_952 + +$L$_16_blocks_overflow_952: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_952: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb ymm20,ymm20,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_953 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_953 +$L$_small_initial_partial_block_953: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_953: + + or r13,r13 + je NEAR $L$_after_reduction_953 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_953: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_11_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_954 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_954 + +$L$_16_blocks_overflow_954: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_954: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_955 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_955 +$L$_small_initial_partial_block_955: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_955: + + or r13,r13 + je NEAR $L$_after_reduction_955 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_955: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_12_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_956 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_956 + +$L$_16_blocks_overflow_956: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_956: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_957 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_957 +$L$_small_initial_partial_block_957: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_957: + + or r13,r13 + je NEAR $L$_after_reduction_957 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_957: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_13_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_958 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_958 + +$L$_16_blocks_overflow_958: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_958: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb xmm21,xmm21,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_959 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_959 +$L$_small_initial_partial_block_959: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_959: + + or r13,r13 + je NEAR $L$_after_reduction_959 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_959: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_14_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_960 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_960 + +$L$_16_blocks_overflow_960: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_960: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb ymm21,ymm21,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_961 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_961 +$L$_small_initial_partial_block_961: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_961: + + or r13,r13 + je NEAR $L$_after_reduction_961 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_961: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_15_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_962 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_962 + +$L$_16_blocks_overflow_962: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_962: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_963 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_963 +$L$_small_initial_partial_block_963: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_963: + + or r13,r13 + je NEAR $L$_after_reduction_963 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_963: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_16_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_964 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_964 + +$L$_16_blocks_overflow_964: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_964: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_965: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_965: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_965: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_0_933: + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_933: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_821 + +$L$_message_below_equal_16_blocks_821: + + + mov r12d,r13d + add r12d,15 + shr r12d,4 + cmp r12,8 + je NEAR $L$_small_initial_num_blocks_is_8_966 + jl NEAR $L$_small_initial_num_blocks_is_7_1_966 + + + cmp r12,12 + je NEAR $L$_small_initial_num_blocks_is_12_966 + jl NEAR $L$_small_initial_num_blocks_is_11_9_966 + + + cmp r12,16 + je NEAR $L$_small_initial_num_blocks_is_16_966 + cmp r12,15 + je NEAR $L$_small_initial_num_blocks_is_15_966 + cmp r12,14 + je NEAR $L$_small_initial_num_blocks_is_14_966 + jmp NEAR $L$_small_initial_num_blocks_is_13_966 + +$L$_small_initial_num_blocks_is_11_9_966: + + cmp r12,11 + je NEAR $L$_small_initial_num_blocks_is_11_966 + cmp r12,10 + je NEAR $L$_small_initial_num_blocks_is_10_966 + jmp NEAR $L$_small_initial_num_blocks_is_9_966 + +$L$_small_initial_num_blocks_is_7_1_966: + cmp r12,4 + je NEAR $L$_small_initial_num_blocks_is_4_966 + jl NEAR $L$_small_initial_num_blocks_is_3_1_966 + + cmp r12,7 + je NEAR $L$_small_initial_num_blocks_is_7_966 + cmp r12,6 + je NEAR $L$_small_initial_num_blocks_is_6_966 + jmp NEAR $L$_small_initial_num_blocks_is_5_966 + +$L$_small_initial_num_blocks_is_3_1_966: + + cmp r12,3 + je NEAR $L$_small_initial_num_blocks_is_3_966 + cmp r12,2 + je NEAR $L$_small_initial_num_blocks_is_2_966 + + + + + +$L$_small_initial_num_blocks_is_1_966: + vmovdqa64 xmm29,XMMWORD[SHUF_MASK] + vpaddd xmm0,xmm2,XMMWORD[ONE] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,0 + vpshufb xmm0,xmm0,xmm29 + vmovdqu8 xmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast xmm0,xmm0,xmm15 + vpxorq xmm0,xmm0,xmm6 + vextracti32x4 xmm12,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm6,xmm6,xmm29 + vextracti32x4 xmm13,zmm6,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_967 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm6,xmm20,0x01 + vpclmulqdq xmm5,xmm6,xmm20,0x10 + vpclmulqdq xmm0,xmm6,xmm20,0x11 + vpclmulqdq xmm3,xmm6,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_967 +$L$_small_initial_partial_block_967: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm13 + + jmp NEAR $L$_after_reduction_967 +$L$_small_initial_compute_done_967: +$L$_after_reduction_967: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_2_966: + vmovdqa64 ymm29,YMMWORD[SHUF_MASK] + vshufi64x2 ymm0,ymm2,ymm2,0 + vpaddd ymm0,ymm0,YMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,1 + vpshufb ymm0,ymm0,ymm29 + vmovdqu8 ymm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast ymm0,ymm0,ymm15 + vpxorq ymm0,ymm0,ymm6 + vextracti32x4 xmm12,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm6,ymm6,ymm29 + vextracti32x4 xmm13,zmm6,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_968 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm6,ymm20,0x01 + vpclmulqdq ymm5,ymm6,ymm20,0x10 + vpclmulqdq ymm0,ymm6,ymm20,0x11 + vpclmulqdq ymm3,ymm6,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_968 +$L$_small_initial_partial_block_968: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm6,xmm20,0x01 + vpclmulqdq xmm5,xmm6,xmm20,0x10 + vpclmulqdq xmm0,xmm6,xmm20,0x11 + vpclmulqdq xmm3,xmm6,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_968: + + or r13,r13 + je NEAR $L$_after_reduction_968 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_968: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_3_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,2 + vpshufb zmm0,zmm0,zmm29 + vmovdqu8 zmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vpxorq zmm0,zmm0,zmm6 + vextracti32x4 xmm12,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm6,zmm6,zmm29 + vextracti32x4 xmm13,zmm6,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_969 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_969 +$L$_small_initial_partial_block_969: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm6,ymm20,0x01 + vpclmulqdq ymm5,ymm6,ymm20,0x10 + vpclmulqdq ymm0,ymm6,ymm20,0x11 + vpclmulqdq ymm3,ymm6,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_969: + + or r13,r13 + je NEAR $L$_after_reduction_969 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_969: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_4_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,3 + vpshufb zmm0,zmm0,zmm29 + vmovdqu8 zmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vpxorq zmm0,zmm0,zmm6 + vextracti32x4 xmm12,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm6,zmm6,zmm29 + vextracti32x4 xmm13,zmm6,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_970 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_970 +$L$_small_initial_partial_block_970: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_970: + + or r13,r13 + je NEAR $L$_after_reduction_970 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_970: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_5_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 xmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast xmm3,xmm3,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq xmm3,xmm3,xmm7 + vextracti32x4 xmm12,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm6,zmm29 + vpshufb xmm7,xmm7,xmm29 + vextracti32x4 xmm13,zmm7,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_971 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm7,xmm20,0x01 + vpclmulqdq xmm5,xmm7,xmm20,0x10 + vpclmulqdq xmm0,xmm7,xmm20,0x11 + vpclmulqdq xmm3,xmm7,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_971 +$L$_small_initial_partial_block_971: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_971: + + or r13,r13 + je NEAR $L$_after_reduction_971 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_971: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_6_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 ymm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast ymm3,ymm3,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq ymm3,ymm3,ymm7 + vextracti32x4 xmm12,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm6,zmm29 + vpshufb ymm7,ymm7,ymm29 + vextracti32x4 xmm13,zmm7,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_972 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm7,ymm20,0x01 + vpclmulqdq ymm5,ymm7,ymm20,0x10 + vpclmulqdq ymm0,ymm7,ymm20,0x11 + vpclmulqdq ymm3,ymm7,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_972 +$L$_small_initial_partial_block_972: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm7,xmm20,0x01 + vpclmulqdq xmm5,xmm7,xmm20,0x10 + vpclmulqdq xmm0,xmm7,xmm20,0x11 + vpclmulqdq xmm3,xmm7,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_972: + + or r13,r13 + je NEAR $L$_after_reduction_972 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_972: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_7_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vextracti32x4 xmm12,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vextracti32x4 xmm13,zmm7,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_973 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm7,zmm20,0x01 + vpclmulqdq zmm5,zmm7,zmm20,0x10 + vpclmulqdq zmm0,zmm7,zmm20,0x11 + vpclmulqdq zmm3,zmm7,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_973 +$L$_small_initial_partial_block_973: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm7,ymm20,0x01 + vpclmulqdq ymm5,ymm7,ymm20,0x10 + vpclmulqdq ymm0,ymm7,ymm20,0x11 + vpclmulqdq ymm3,ymm7,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_973: + + or r13,r13 + je NEAR $L$_after_reduction_973 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_973: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_8_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vextracti32x4 xmm12,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vextracti32x4 xmm13,zmm7,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_974 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_974 +$L$_small_initial_partial_block_974: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm7,zmm20,0x01 + vpclmulqdq zmm5,zmm7,zmm20,0x10 + vpclmulqdq zmm0,zmm7,zmm20,0x11 + vpclmulqdq zmm3,zmm7,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_974: + + or r13,r13 + je NEAR $L$_after_reduction_974 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_974: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_9_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast xmm4,xmm4,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq xmm4,xmm4,xmm10 + vextracti32x4 xmm12,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb xmm10,xmm10,xmm29 + vextracti32x4 xmm13,zmm10,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_975 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm10,xmm20,0x01 + vpclmulqdq xmm5,xmm10,xmm20,0x10 + vpclmulqdq xmm0,xmm10,xmm20,0x11 + vpclmulqdq xmm3,xmm10,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_975 +$L$_small_initial_partial_block_975: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_975: + + or r13,r13 + je NEAR $L$_after_reduction_975 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_975: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_10_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast ymm4,ymm4,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq ymm4,ymm4,ymm10 + vextracti32x4 xmm12,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb ymm10,ymm10,ymm29 + vextracti32x4 xmm13,zmm10,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_976 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm10,ymm20,0x01 + vpclmulqdq ymm5,ymm10,ymm20,0x10 + vpclmulqdq ymm0,ymm10,ymm20,0x11 + vpclmulqdq ymm3,ymm10,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_976 +$L$_small_initial_partial_block_976: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm10,xmm20,0x01 + vpclmulqdq xmm5,xmm10,xmm20,0x10 + vpclmulqdq xmm0,xmm10,xmm20,0x11 + vpclmulqdq xmm3,xmm10,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_976: + + or r13,r13 + je NEAR $L$_after_reduction_976 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_976: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_11_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vextracti32x4 xmm12,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vextracti32x4 xmm13,zmm10,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_977 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm10,zmm20,0x01 + vpclmulqdq zmm5,zmm10,zmm20,0x10 + vpclmulqdq zmm0,zmm10,zmm20,0x11 + vpclmulqdq zmm3,zmm10,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_977 +$L$_small_initial_partial_block_977: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm10,ymm20,0x01 + vpclmulqdq ymm5,ymm10,ymm20,0x10 + vpclmulqdq ymm0,ymm10,ymm20,0x11 + vpclmulqdq ymm3,ymm10,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_977: + + or r13,r13 + je NEAR $L$_after_reduction_977 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_977: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_12_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vextracti32x4 xmm12,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vextracti32x4 xmm13,zmm10,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_978 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_978 +$L$_small_initial_partial_block_978: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm10,zmm20,0x01 + vpclmulqdq zmm5,zmm10,zmm20,0x10 + vpclmulqdq zmm0,zmm10,zmm20,0x11 + vpclmulqdq zmm3,zmm10,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_978: + + or r13,r13 + je NEAR $L$_after_reduction_978 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_978: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_13_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast xmm5,xmm5,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq xmm5,xmm5,xmm11 + vextracti32x4 xmm12,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb xmm11,xmm11,xmm29 + vextracti32x4 xmm13,zmm11,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_979 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm11,xmm20,0x01 + vpclmulqdq xmm5,xmm11,xmm20,0x10 + vpclmulqdq xmm0,xmm11,xmm20,0x11 + vpclmulqdq xmm3,xmm11,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_979 +$L$_small_initial_partial_block_979: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_979: + + or r13,r13 + je NEAR $L$_after_reduction_979 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_979: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_14_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast ymm5,ymm5,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq ymm5,ymm5,ymm11 + vextracti32x4 xmm12,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb ymm11,ymm11,ymm29 + vextracti32x4 xmm13,zmm11,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_980 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm11,ymm20,0x01 + vpclmulqdq ymm5,ymm11,ymm20,0x10 + vpclmulqdq ymm0,ymm11,ymm20,0x11 + vpclmulqdq ymm3,ymm11,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_980 +$L$_small_initial_partial_block_980: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm11,xmm20,0x01 + vpclmulqdq xmm5,xmm11,xmm20,0x10 + vpclmulqdq xmm0,xmm11,xmm20,0x11 + vpclmulqdq xmm3,xmm11,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_980: + + or r13,r13 + je NEAR $L$_after_reduction_980 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_980: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_15_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast zmm5,zmm5,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq zmm5,zmm5,zmm11 + vextracti32x4 xmm12,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vextracti32x4 xmm13,zmm11,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_981 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm11,zmm20,0x01 + vpclmulqdq zmm5,zmm11,zmm20,0x10 + vpclmulqdq zmm0,zmm11,zmm20,0x11 + vpclmulqdq zmm3,zmm11,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_981 +$L$_small_initial_partial_block_981: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm11,ymm20,0x01 + vpclmulqdq ymm5,ymm11,ymm20,0x10 + vpclmulqdq ymm0,ymm11,ymm20,0x11 + vpclmulqdq ymm3,ymm11,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_981: + + or r13,r13 + je NEAR $L$_after_reduction_981 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_981: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_16_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast zmm5,zmm5,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq zmm5,zmm5,zmm11 + vextracti32x4 xmm12,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vextracti32x4 xmm13,zmm11,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_982: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm11,zmm20,0x01 + vpclmulqdq zmm5,zmm11,zmm20,0x10 + vpclmulqdq zmm0,zmm11,zmm20,0x11 + vpclmulqdq zmm3,zmm11,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_982: + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_982: +$L$_small_initial_blocks_encrypted_966: +$L$_ghash_done_821: + vmovdqu64 XMMWORD[rdx],xmm2 + vmovdqu64 XMMWORD[64+rdx],xmm14 +$L$_enc_dec_done_821: + jmp NEAR $L$exit_gcm_decrypt +$L$exit_gcm_decrypt: + cmp QWORD[112+rbp],256 + jbe NEAR $L$skip_hkeys_cleanup_983 + vpxor xmm0,xmm0,xmm0 + vmovdqa64 ZMMWORD[rsp],zmm0 + vmovdqa64 ZMMWORD[64+rsp],zmm0 + vmovdqa64 ZMMWORD[128+rsp],zmm0 + vmovdqa64 ZMMWORD[192+rsp],zmm0 + vmovdqa64 ZMMWORD[256+rsp],zmm0 + vmovdqa64 ZMMWORD[320+rsp],zmm0 + vmovdqa64 ZMMWORD[384+rsp],zmm0 + vmovdqa64 ZMMWORD[448+rsp],zmm0 + vmovdqa64 ZMMWORD[512+rsp],zmm0 + vmovdqa64 ZMMWORD[576+rsp],zmm0 + vmovdqa64 ZMMWORD[640+rsp],zmm0 + vmovdqa64 ZMMWORD[704+rsp],zmm0 +$L$skip_hkeys_cleanup_983: + vzeroupper + vmovdqu xmm15,XMMWORD[((-16))+rbp] + vmovdqu xmm14,XMMWORD[((-32))+rbp] + vmovdqu xmm13,XMMWORD[((-48))+rbp] + vmovdqu xmm12,XMMWORD[((-64))+rbp] + vmovdqu xmm11,XMMWORD[((-80))+rbp] + vmovdqu xmm10,XMMWORD[((-96))+rbp] + vmovdqu xmm9,XMMWORD[((-112))+rbp] + vmovdqu xmm8,XMMWORD[((-128))+rbp] + vmovdqu xmm7,XMMWORD[((-144))+rbp] + vmovdqu xmm6,XMMWORD[((-160))+rbp] + lea rsp,[8+rbp] + pop rsi + + pop rdi + + pop r15 + + pop r14 + + pop r13 + + pop r12 + + pop rbp + + pop rbx + + DB 0F3h,0C3h ;repret +$L$decrypt_seh_end: + + +global ossl_aes_gcm_finalize_avx512 + +ALIGN 32 +ossl_aes_gcm_finalize_avx512: + +DB 243,15,30,250 + vmovdqu xmm2,XMMWORD[336+rcx] + vmovdqu xmm3,XMMWORD[32+rcx] + vmovdqu xmm4,XMMWORD[64+rcx] + + + cmp rdx,0 + je NEAR $L$_partial_done_984 + + vpclmulqdq xmm0,xmm4,xmm2,0x11 + vpclmulqdq xmm16,xmm4,xmm2,0x00 + vpclmulqdq xmm17,xmm4,xmm2,0x01 + vpclmulqdq xmm4,xmm4,xmm2,0x10 + vpxorq xmm4,xmm4,xmm17 + + vpsrldq xmm17,xmm4,8 + vpslldq xmm4,xmm4,8 + vpxorq xmm0,xmm0,xmm17 + vpxorq xmm4,xmm4,xmm16 + + + + vmovdqu64 xmm17,XMMWORD[POLY2] + + vpclmulqdq xmm16,xmm17,xmm4,0x01 + vpslldq xmm16,xmm16,8 + vpxorq xmm4,xmm4,xmm16 + + + + vpclmulqdq xmm16,xmm17,xmm4,0x00 + vpsrldq xmm16,xmm16,4 + vpclmulqdq xmm4,xmm17,xmm4,0x10 + vpslldq xmm4,xmm4,4 + + vpternlogq xmm4,xmm0,xmm16,0x96 + +$L$_partial_done_984: + vmovq xmm5,QWORD[56+rcx] + vpinsrq xmm5,xmm5,QWORD[48+rcx],1 + vpsllq xmm5,xmm5,3 + + vpxor xmm4,xmm4,xmm5 + + vpclmulqdq xmm0,xmm4,xmm2,0x11 + vpclmulqdq xmm16,xmm4,xmm2,0x00 + vpclmulqdq xmm17,xmm4,xmm2,0x01 + vpclmulqdq xmm4,xmm4,xmm2,0x10 + vpxorq xmm4,xmm4,xmm17 + + vpsrldq xmm17,xmm4,8 + vpslldq xmm4,xmm4,8 + vpxorq xmm0,xmm0,xmm17 + vpxorq xmm4,xmm4,xmm16 + + + + vmovdqu64 xmm17,XMMWORD[POLY2] + + vpclmulqdq xmm16,xmm17,xmm4,0x01 + vpslldq xmm16,xmm16,8 + vpxorq xmm4,xmm4,xmm16 + + + + vpclmulqdq xmm16,xmm17,xmm4,0x00 + vpsrldq xmm16,xmm16,4 + vpclmulqdq xmm4,xmm17,xmm4,0x10 + vpslldq xmm4,xmm4,4 + + vpternlogq xmm4,xmm0,xmm16,0x96 + + vpshufb xmm4,xmm4,XMMWORD[SHUF_MASK] + vpxor xmm3,xmm3,xmm4 + +$L$_return_T_984: + vmovdqu XMMWORD[64+rcx],xmm3 +$L$abort_finalize: + DB 0F3h,0C3h ;repret + + +global ossl_gcm_gmult_avx512 + + +ALIGN 32 +ossl_gcm_gmult_avx512: + +DB 243,15,30,250 + vmovdqu64 xmm1,XMMWORD[rcx] + vmovdqu64 xmm2,XMMWORD[336+rdx] + + vpclmulqdq xmm3,xmm1,xmm2,0x11 + vpclmulqdq xmm4,xmm1,xmm2,0x00 + vpclmulqdq xmm5,xmm1,xmm2,0x01 + vpclmulqdq xmm1,xmm1,xmm2,0x10 + vpxorq xmm1,xmm1,xmm5 + + vpsrldq xmm5,xmm1,8 + vpslldq xmm1,xmm1,8 + vpxorq xmm3,xmm3,xmm5 + vpxorq xmm1,xmm1,xmm4 + + + + vmovdqu64 xmm5,XMMWORD[POLY2] + + vpclmulqdq xmm4,xmm5,xmm1,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm1,xmm1,xmm4 + + + + vpclmulqdq xmm4,xmm5,xmm1,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm1,xmm5,xmm1,0x10 + vpslldq xmm1,xmm1,4 + + vpternlogq xmm1,xmm3,xmm4,0x96 + + vmovdqu64 XMMWORD[rcx],xmm1 + vzeroupper +$L$abort_gmult: + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$setiv_seh_begin wrt ..imagebase + DD $L$setiv_seh_end wrt ..imagebase + DD $L$setiv_seh_info wrt ..imagebase + + DD $L$ghash_seh_begin wrt ..imagebase + DD $L$ghash_seh_end wrt ..imagebase + DD $L$ghash_seh_info wrt ..imagebase + + DD $L$encrypt_seh_begin wrt ..imagebase + DD $L$encrypt_seh_end wrt ..imagebase + DD $L$encrypt_seh_info wrt ..imagebase + + DD $L$decrypt_seh_begin wrt ..imagebase + DD $L$decrypt_seh_end wrt ..imagebase + DD $L$decrypt_seh_info wrt ..imagebase + +section .xdata rdata align=8 +ALIGN 8 +$L$setiv_seh_info: +DB 1 +DB $L$setiv_seh_prolog_end-$L$setiv_seh_begin +DB 31 + +DB 165 +DB $L$setiv_seh_save_xmm15-$L$setiv_seh_begin +DB 248 + DW 9 +DB $L$setiv_seh_save_xmm14-$L$setiv_seh_begin +DB 232 + DW 8 +DB $L$setiv_seh_save_xmm13-$L$setiv_seh_begin +DB 216 + DW 7 +DB $L$setiv_seh_save_xmm12-$L$setiv_seh_begin +DB 200 + DW 6 +DB $L$setiv_seh_save_xmm11-$L$setiv_seh_begin +DB 184 + DW 5 +DB $L$setiv_seh_save_xmm10-$L$setiv_seh_begin +DB 168 + DW 4 +DB $L$setiv_seh_save_xmm9-$L$setiv_seh_begin +DB 152 + DW 3 +DB $L$setiv_seh_save_xmm8-$L$setiv_seh_begin +DB 136 + DW 2 +DB $L$setiv_seh_save_xmm7-$L$setiv_seh_begin +DB 120 + DW 1 +DB $L$setiv_seh_save_xmm6-$L$setiv_seh_begin +DB 104 + DW 0 + +DB $L$setiv_seh_setfp-$L$setiv_seh_begin +DB 3 + + +DB $L$setiv_seh_allocstack_xmm-$L$setiv_seh_begin +DB 1 + DW 21 +DB $L$setiv_seh_push_rsi-$L$setiv_seh_begin +DB 96 +DB $L$setiv_seh_push_rdi-$L$setiv_seh_begin +DB 112 +DB $L$setiv_seh_push_r15-$L$setiv_seh_begin +DB 240 +DB $L$setiv_seh_push_r14-$L$setiv_seh_begin +DB 224 +DB $L$setiv_seh_push_r13-$L$setiv_seh_begin +DB 208 +DB $L$setiv_seh_push_r12-$L$setiv_seh_begin +DB 192 +DB $L$setiv_seh_push_rbp-$L$setiv_seh_begin +DB 80 +DB $L$setiv_seh_push_rbx-$L$setiv_seh_begin +DB 48 +ALIGN 8 +$L$ghash_seh_info: +DB 1 +DB $L$ghash_seh_prolog_end-$L$ghash_seh_begin +DB 31 + +DB 165 +DB $L$ghash_seh_save_xmm15-$L$ghash_seh_begin +DB 248 + DW 9 +DB $L$ghash_seh_save_xmm14-$L$ghash_seh_begin +DB 232 + DW 8 +DB $L$ghash_seh_save_xmm13-$L$ghash_seh_begin +DB 216 + DW 7 +DB $L$ghash_seh_save_xmm12-$L$ghash_seh_begin +DB 200 + DW 6 +DB $L$ghash_seh_save_xmm11-$L$ghash_seh_begin +DB 184 + DW 5 +DB $L$ghash_seh_save_xmm10-$L$ghash_seh_begin +DB 168 + DW 4 +DB $L$ghash_seh_save_xmm9-$L$ghash_seh_begin +DB 152 + DW 3 +DB $L$ghash_seh_save_xmm8-$L$ghash_seh_begin +DB 136 + DW 2 +DB $L$ghash_seh_save_xmm7-$L$ghash_seh_begin +DB 120 + DW 1 +DB $L$ghash_seh_save_xmm6-$L$ghash_seh_begin +DB 104 + DW 0 + +DB $L$ghash_seh_setfp-$L$ghash_seh_begin +DB 3 + + +DB $L$ghash_seh_allocstack_xmm-$L$ghash_seh_begin +DB 1 + DW 21 +DB $L$ghash_seh_push_rsi-$L$ghash_seh_begin +DB 96 +DB $L$ghash_seh_push_rdi-$L$ghash_seh_begin +DB 112 +DB $L$ghash_seh_push_r15-$L$ghash_seh_begin +DB 240 +DB $L$ghash_seh_push_r14-$L$ghash_seh_begin +DB 224 +DB $L$ghash_seh_push_r13-$L$ghash_seh_begin +DB 208 +DB $L$ghash_seh_push_r12-$L$ghash_seh_begin +DB 192 +DB $L$ghash_seh_push_rbp-$L$ghash_seh_begin +DB 80 +DB $L$ghash_seh_push_rbx-$L$ghash_seh_begin +DB 48 +ALIGN 8 +$L$encrypt_seh_info: +DB 1 +DB $L$encrypt_seh_prolog_end-$L$encrypt_seh_begin +DB 31 + +DB 165 +DB $L$encrypt_seh_save_xmm15-$L$encrypt_seh_begin +DB 248 + DW 9 +DB $L$encrypt_seh_save_xmm14-$L$encrypt_seh_begin +DB 232 + DW 8 +DB $L$encrypt_seh_save_xmm13-$L$encrypt_seh_begin +DB 216 + DW 7 +DB $L$encrypt_seh_save_xmm12-$L$encrypt_seh_begin +DB 200 + DW 6 +DB $L$encrypt_seh_save_xmm11-$L$encrypt_seh_begin +DB 184 + DW 5 +DB $L$encrypt_seh_save_xmm10-$L$encrypt_seh_begin +DB 168 + DW 4 +DB $L$encrypt_seh_save_xmm9-$L$encrypt_seh_begin +DB 152 + DW 3 +DB $L$encrypt_seh_save_xmm8-$L$encrypt_seh_begin +DB 136 + DW 2 +DB $L$encrypt_seh_save_xmm7-$L$encrypt_seh_begin +DB 120 + DW 1 +DB $L$encrypt_seh_save_xmm6-$L$encrypt_seh_begin +DB 104 + DW 0 + +DB $L$encrypt_seh_setfp-$L$encrypt_seh_begin +DB 3 + + +DB $L$encrypt_seh_allocstack_xmm-$L$encrypt_seh_begin +DB 1 + DW 21 +DB $L$encrypt_seh_push_rsi-$L$encrypt_seh_begin +DB 96 +DB $L$encrypt_seh_push_rdi-$L$encrypt_seh_begin +DB 112 +DB $L$encrypt_seh_push_r15-$L$encrypt_seh_begin +DB 240 +DB $L$encrypt_seh_push_r14-$L$encrypt_seh_begin +DB 224 +DB $L$encrypt_seh_push_r13-$L$encrypt_seh_begin +DB 208 +DB $L$encrypt_seh_push_r12-$L$encrypt_seh_begin +DB 192 +DB $L$encrypt_seh_push_rbp-$L$encrypt_seh_begin +DB 80 +DB $L$encrypt_seh_push_rbx-$L$encrypt_seh_begin +DB 48 +ALIGN 8 +$L$decrypt_seh_info: +DB 1 +DB $L$decrypt_seh_prolog_end-$L$decrypt_seh_begin +DB 31 + +DB 165 +DB $L$decrypt_seh_save_xmm15-$L$decrypt_seh_begin +DB 248 + DW 9 +DB $L$decrypt_seh_save_xmm14-$L$decrypt_seh_begin +DB 232 + DW 8 +DB $L$decrypt_seh_save_xmm13-$L$decrypt_seh_begin +DB 216 + DW 7 +DB $L$decrypt_seh_save_xmm12-$L$decrypt_seh_begin +DB 200 + DW 6 +DB $L$decrypt_seh_save_xmm11-$L$decrypt_seh_begin +DB 184 + DW 5 +DB $L$decrypt_seh_save_xmm10-$L$decrypt_seh_begin +DB 168 + DW 4 +DB $L$decrypt_seh_save_xmm9-$L$decrypt_seh_begin +DB 152 + DW 3 +DB $L$decrypt_seh_save_xmm8-$L$decrypt_seh_begin +DB 136 + DW 2 +DB $L$decrypt_seh_save_xmm7-$L$decrypt_seh_begin +DB 120 + DW 1 +DB $L$decrypt_seh_save_xmm6-$L$decrypt_seh_begin +DB 104 + DW 0 + +DB $L$decrypt_seh_setfp-$L$decrypt_seh_begin +DB 3 + + +DB $L$decrypt_seh_allocstack_xmm-$L$decrypt_seh_begin +DB 1 + DW 21 +DB $L$decrypt_seh_push_rsi-$L$decrypt_seh_begin +DB 96 +DB $L$decrypt_seh_push_rdi-$L$decrypt_seh_begin +DB 112 +DB $L$decrypt_seh_push_r15-$L$decrypt_seh_begin +DB 240 +DB $L$decrypt_seh_push_r14-$L$decrypt_seh_begin +DB 224 +DB $L$decrypt_seh_push_r13-$L$decrypt_seh_begin +DB 208 +DB $L$decrypt_seh_push_r12-$L$decrypt_seh_begin +DB 192 +DB $L$decrypt_seh_push_rbp-$L$decrypt_seh_begin +DB 80 +DB $L$decrypt_seh_push_rbx-$L$decrypt_seh_begin +DB 48 +section .rdata rdata align=16 +ALIGN 16 +POLY: DQ 0x0000000000000001,0xC200000000000000 + +ALIGN 64 +POLY2: + DQ 0x00000001C2000000,0xC200000000000000 + DQ 0x00000001C2000000,0xC200000000000000 + DQ 0x00000001C2000000,0xC200000000000000 + DQ 0x00000001C2000000,0xC200000000000000 + +ALIGN 16 +TWOONE: DQ 0x0000000000000001,0x0000000100000000 + + + +ALIGN 64 +SHUF_MASK: + DQ 0x08090A0B0C0D0E0F,0x0001020304050607 + DQ 0x08090A0B0C0D0E0F,0x0001020304050607 + DQ 0x08090A0B0C0D0E0F,0x0001020304050607 + DQ 0x08090A0B0C0D0E0F,0x0001020304050607 + +ALIGN 16 +SHIFT_MASK: + DQ 0x0706050403020100,0x0f0e0d0c0b0a0908 + +ALL_F: + DQ 0xffffffffffffffff,0xffffffffffffffff + +ZERO: + DQ 0x0000000000000000,0x0000000000000000 + +ALIGN 16 +ONE: + DQ 0x0000000000000001,0x0000000000000000 + +ALIGN 16 +ONEf: + DQ 0x0000000000000000,0x0100000000000000 + +ALIGN 64 +ddq_add_1234: + DQ 0x0000000000000001,0x0000000000000000 + DQ 0x0000000000000002,0x0000000000000000 + DQ 0x0000000000000003,0x0000000000000000 + DQ 0x0000000000000004,0x0000000000000000 + +ALIGN 64 +ddq_add_5678: + DQ 0x0000000000000005,0x0000000000000000 + DQ 0x0000000000000006,0x0000000000000000 + DQ 0x0000000000000007,0x0000000000000000 + DQ 0x0000000000000008,0x0000000000000000 + +ALIGN 64 +ddq_add_4444: + DQ 0x0000000000000004,0x0000000000000000 + DQ 0x0000000000000004,0x0000000000000000 + DQ 0x0000000000000004,0x0000000000000000 + DQ 0x0000000000000004,0x0000000000000000 + +ALIGN 64 +ddq_add_8888: + DQ 0x0000000000000008,0x0000000000000000 + DQ 0x0000000000000008,0x0000000000000000 + DQ 0x0000000000000008,0x0000000000000000 + DQ 0x0000000000000008,0x0000000000000000 + +ALIGN 64 +ddq_addbe_1234: + DQ 0x0000000000000000,0x0100000000000000 + DQ 0x0000000000000000,0x0200000000000000 + DQ 0x0000000000000000,0x0300000000000000 + DQ 0x0000000000000000,0x0400000000000000 + +ALIGN 64 +ddq_addbe_4444: + DQ 0x0000000000000000,0x0400000000000000 + DQ 0x0000000000000000,0x0400000000000000 + DQ 0x0000000000000000,0x0400000000000000 + DQ 0x0000000000000000,0x0400000000000000 + +ALIGN 64 +byte_len_to_mask_table: + DW 0x0000,0x0001,0x0003,0x0007 + DW 0x000f,0x001f,0x003f,0x007f + DW 0x00ff,0x01ff,0x03ff,0x07ff + DW 0x0fff,0x1fff,0x3fff,0x7fff + DW 0xffff + +ALIGN 64 +byte64_len_to_mask_table: + DQ 0x0000000000000000,0x0000000000000001 + DQ 0x0000000000000003,0x0000000000000007 + DQ 0x000000000000000f,0x000000000000001f + DQ 0x000000000000003f,0x000000000000007f + DQ 0x00000000000000ff,0x00000000000001ff + DQ 0x00000000000003ff,0x00000000000007ff + DQ 0x0000000000000fff,0x0000000000001fff + DQ 0x0000000000003fff,0x0000000000007fff + DQ 0x000000000000ffff,0x000000000001ffff + DQ 0x000000000003ffff,0x000000000007ffff + DQ 0x00000000000fffff,0x00000000001fffff + DQ 0x00000000003fffff,0x00000000007fffff + DQ 0x0000000000ffffff,0x0000000001ffffff + DQ 0x0000000003ffffff,0x0000000007ffffff + DQ 0x000000000fffffff,0x000000001fffffff + DQ 0x000000003fffffff,0x000000007fffffff + DQ 0x00000000ffffffff,0x00000001ffffffff + DQ 0x00000003ffffffff,0x00000007ffffffff + DQ 0x0000000fffffffff,0x0000001fffffffff + DQ 0x0000003fffffffff,0x0000007fffffffff + DQ 0x000000ffffffffff,0x000001ffffffffff + DQ 0x000003ffffffffff,0x000007ffffffffff + DQ 0x00000fffffffffff,0x00001fffffffffff + DQ 0x00003fffffffffff,0x00007fffffffffff + DQ 0x0000ffffffffffff,0x0001ffffffffffff + DQ 0x0003ffffffffffff,0x0007ffffffffffff + DQ 0x000fffffffffffff,0x001fffffffffffff + DQ 0x003fffffffffffff,0x007fffffffffffff + DQ 0x00ffffffffffffff,0x01ffffffffffffff + DQ 0x03ffffffffffffff,0x07ffffffffffffff + DQ 0x0fffffffffffffff,0x1fffffffffffffff + DQ 0x3fffffffffffffff,0x7fffffffffffffff + DQ 0xffffffffffffffff diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/modes/aesni-gcm-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/modes/aesni-gcm-x86_64.asm index 9fba32b883a6ba..b9b1b5256142ad 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/modes/aesni-gcm-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/modes/aesni-gcm-x86_64.asm @@ -851,6 +851,7 @@ $L$gcm_enc_abort: DB 0F3h,0C3h ;repret $L$SEH_end_aesni_gcm_encrypt: +section .rdata rdata align=64 ALIGN 64 $L$bswap_mask: DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 @@ -866,6 +867,7 @@ DB 65,69,83,45,78,73,32,71,67,77,32,109,111,100,117,108 DB 101,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82 DB 89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112 DB 114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +section .text ALIGN 64 EXTERN __imp_RtlVirtualUnwind diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/modes/ghash-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/modes/ghash-x86_64.asm index 639672d87b00b4..e68d6e5228e7b8 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/modes/ghash-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/modes/ghash-x86_64.asm @@ -723,6 +723,7 @@ global gcm_init_clmul ALIGN 16 gcm_init_clmul: +DB 243,15,30,250 $L$_init_clmul: $L$SEH_begin_gcm_init_clmul: @@ -1354,6 +1355,7 @@ global gcm_init_avx ALIGN 32 gcm_init_avx: +DB 243,15,30,250 $L$SEH_begin_gcm_init_avx: DB 0x48,0x83,0xec,0x18 @@ -1879,6 +1881,7 @@ $L$SEH_end_gcm_ghash_avx: DB 0F3h,0C3h ;repret +section .rdata rdata align=64 ALIGN 64 $L$bswap_mask: DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 @@ -1935,6 +1938,7 @@ DB 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32 DB 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111 DB 114,103,62,0 ALIGN 64 +section .text EXTERN __imp_RtlVirtualUnwind ALIGN 16 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/params_idx.c b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/params_idx.c new file mode 100644 index 00000000000000..874125eb57a17c --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/params_idx.c @@ -0,0 +1,3366 @@ +/* + * WARNING: do not edit! + * Generated by makefile from crypto/params_idx.c.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#include "internal/e_os.h" +#include "internal/param_names.h" +#include + +/* Machine generated TRIE -- generated by util/perl/OpenSSL/paramnames.pm */ +int ossl_param_find_pidx(const char *s) +{ + switch(s[0]) { + default: + break; + case 'a': + switch(s[1]) { + default: + break; + case 'c': + if (strcmp("vp-info", s + 2) == 0) + return PIDX_KDF_PARAM_X942_ACVPINFO; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'd': + if (strcmp("itional-random", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_ADD_RANDOM; + break; + case '\0': + return PIDX_KDF_PARAM_ARGON2_AD; + } + break; + case 'e': + if (strcmp("ad", s + 2) == 0) + return PIDX_CIPHER_PARAM_AEAD; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("id_param", s + 4) == 0) + return PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD; + break; + case 'i': + if (strcmp("d-absent", s + 4) == 0) + return PIDX_DIGEST_PARAM_ALGID_ABSENT; + break; + case 'o': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'h': + switch(s[8]) { + default: + break; + case 'm': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '-': + if (strcmp("params", s + 13) == 0) + return PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS; + break; + case '\0': + return PIDX_ALG_PARAM_ALGORITHM_ID; + } + } + } + } + } + } + } + } + } + } + break; + case 'i': + if (strcmp("as", s + 3) == 0) + return PIDX_STORE_PARAM_ALIAS; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_A; + } + break; + case 'b': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("sis-type", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_CHAR2_TYPE; + break; + case 'i': + if (strcmp("ts", s + 2) == 0) + return PIDX_PKEY_PARAM_BITS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("size", s + 6) == 0) + return PIDX_MAC_PARAM_BLOCK_SIZE; + break; + case '_': + if (strcmp("padding", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING; + break; + case 's': + if (strcmp("ize", s + 6) == 0) + return PIDX_DIGEST_PARAM_BLOCK_SIZE; + } + } + } + } + break; + case 'u': + if (strcmp("ildinfo", s + 2) == 0) + return PIDX_PROV_PARAM_BUILDINFO; + break; + case '\0': + return PIDX_PKEY_PARAM_EC_B; + } + break; + case 'c': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_C_ROUNDS; + break; + case 'e': + if (strcmp("kalg", s + 2) == 0) + return PIDX_KDF_PARAM_CEK_ALG; + break; + case 'i': + if (strcmp("pher", s + 2) == 0) + return PIDX_ALG_PARAM_CIPHER; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("actor", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_COFACTOR; + break; + case 'n': + switch(s[3]) { + default: + break; + case 's': + if (strcmp("tant", s + 4) == 0) + return PIDX_KDF_PARAM_CONSTANT; + break; + case 't': + if (strcmp("ext-string", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_CONTEXT_STRING; + } + } + break; + case 't': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("mode", s + 4) == 0) + return PIDX_CIPHER_PARAM_CTS_MODE; + break; + case '\0': + return PIDX_CIPHER_PARAM_CTS; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '-': + if (strcmp("iv", s + 7) == 0) + return PIDX_CIPHER_PARAM_CUSTOM_IV; + break; + case '\0': + return PIDX_MAC_PARAM_CUSTOM; + } + } + } + } + } + } + break; + case 'd': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_D_ROUNDS; + break; + case 'a': + switch(s[2]) { + default: + break; + case 't': + switch(s[3]) { + default: + break; + case 'a': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 's': + if (strcmp("tructure", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_STRUCTURE; + break; + case 't': + if (strcmp("ype", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_TYPE; + } + break; + case '\0': + return PIDX_OBJECT_PARAM_DATA; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + if (strcmp("ded-from-explicit", s + 4) == 0) + return PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS; + break; + case 'r': + if (strcmp("ypt-only", s + 4) == 0) + return PIDX_CIPHER_PARAM_DECRYPT_ONLY; + } + break; + case 'f': + if (strcmp("ault-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_DEFAULT_DIGEST; + break; + case 's': + if (strcmp("c", s + 3) == 0) + return PIDX_OBJECT_PARAM_DESC; + break; + case 't': + if (strcmp("erministic", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_DETERMINISTIC; + } + break; + case 'h': + if (strcmp("kem-ikm", s + 2) == 0) + return PIDX_PKEY_PARAM_DHKEM_IKM; + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("heck", s + 8) == 0) + return PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK; + break; + case 'n': + if (strcmp("oinit", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_NOINIT; + break; + case 'o': + if (strcmp("neshot", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_ONESHOT; + break; + case 'p': + if (strcmp("rops", s + 8) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS; + break; + case 's': + if (strcmp("ize", s + 8) == 0) + return PIDX_PKEY_PARAM_DIGEST_SIZE; + } + break; + case '\0': + return PIDX_STORE_PARAM_DIGEST; + } + } + } + } + break; + case 's': + if (strcmp("tid", s + 3) == 0) + return PIDX_PKEY_PARAM_DIST_ID; + } + break; + case 'r': + if (strcmp("bg-no-trunc-md", s + 2) == 0) + return PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST; + break; + case 's': + if (strcmp("a-sign-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_DSA_SIGN_DISABLED; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_D; + } + break; + case 'e': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("rly_clean", s + 2) == 0) + return PIDX_KDF_PARAM_EARLY_CLEAN; + break; + case 'c': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'h': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'a': + switch(s[9]) { + default: + break; + case 'c': + switch(s[10]) { + default: + break; + case 't': + switch(s[11]) { + default: + break; + case 'o': + switch(s[12]) { + default: + break; + case 'r': + switch(s[13]) { + default: + break; + case '-': + switch(s[14]) { + default: + break; + case 'c': + if (strcmp("heck", s + 15) == 0) + return PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK; + break; + case 'm': + if (strcmp("ode", s + 15) == 0) + return PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE; + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'm': + if (strcmp("s_check", s + 2) == 0) + return PIDX_KDF_PARAM_FIPS_EMS_CHECK; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("d-pub-key", s + 6) == 0) + return PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY; + break; + case 'i': + if (strcmp("ng", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_ENCODING; + } + } + break; + case 'r': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'c': + if (strcmp("heck", s + 9) == 0) + return PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK; + break; + case 'l': + if (strcmp("evel", s + 9) == 0) + return PIDX_ENCODER_PARAM_ENCRYPT_LEVEL; + } + } + } + } + } + } + break; + case 'g': + if (strcmp("ine", s + 3) == 0) + return PIDX_ALG_PARAM_ENGINE; + break; + case 't': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'y': + switch(s[7]) { + default: + break; + case '_': + if (strcmp("required", s + 8) == 0) + return PIDX_DRBG_PARAM_ENTROPY_REQUIRED; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_ENTROPY; + } + } + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_E; + break; + case 'x': + if (strcmp("pect", s + 2) == 0) + return PIDX_STORE_PARAM_EXPECT; + } + break; + case 'f': + switch(s[1]) { + default: + break; + case 'i': + switch(s[2]) { + default: + break; + case 'e': + if (strcmp("ld-type", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_FIELD_TYPE; + break; + case 'n': + if (strcmp("gerprint", s + 3) == 0) + return PIDX_STORE_PARAM_FINGERPRINT; + break; + case 'p': + if (strcmp("s-indicator", s + 3) == 0) + return PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR; + } + } + break; + case 'g': + switch(s[1]) { + default: + break; + case 'e': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_GENERATE; + } + break; + case 'o': + if (strcmp("r", s + 8) == 0) + return PIDX_PKEY_PARAM_EC_GENERATOR; + } + } + } + } + } + } + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_GINDEX; + break; + case 'r': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'u': + switch(s[4]) { + default: + break; + case 'p': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("check", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE; + break; + case '\0': + return PIDX_PKEY_PARAM_GROUP_NAME; + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_G; + } + break; + case 'h': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("s-randkey", s + 2) == 0) + return PIDX_CIPHER_PARAM_HAS_RAND_KEY; + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_H; + break; + case 'k': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'f': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_KEY_CHECK; + } + } + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_HMAC_KEY_CHECK; + break; + case 's': + if (strcmp("_padding", s + 2) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING; + } + break; + case 'i': + switch(s[1]) { + default: + break; + case 'd': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_PKCS12_ID; + } + break; + case 'k': + if (strcmp("me", s + 2) == 0) + return PIDX_KEM_PARAM_IKME; + break; + case 'm': + if (strcmp("plicit-rejection", s + 2) == 0) + return PIDX_PKEY_PARAM_IMPLICIT_REJECTION; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("lude-public", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC; + break; + case 'f': + if (strcmp("o", s + 3) == 0) + return PIDX_PASSPHRASE_PARAM_INFO; + break; + case 'p': + if (strcmp("ut-type", s + 3) == 0) + return PIDX_STORE_PARAM_INPUT_TYPE; + break; + case 's': + if (strcmp("tance", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_INSTANCE; + } + break; + case 't': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("tion", s + 5) == 0) + return PIDX_GEN_PARAM_ITERATION; + break; + case '\0': + return PIDX_KDF_PARAM_ITER; + } + } + } + break; + case 'v': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("generated", s + 3) == 0) + return PIDX_CIPHER_PARAM_AEAD_IV_GENERATED; + break; + case 'l': + if (strcmp("en", s + 3) == 0) + return PIDX_CIPHER_PARAM_IVLEN; + break; + case '\0': + return PIDX_MAC_PARAM_IV; + } + } + break; + case 'j': + switch(s[1]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_COFACTOR; + } + break; + case 'k': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K2; + } + break; + case '3': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K3; + } + break; + case 'a': + if (strcmp("t", s + 2) == 0) + return PIDX_SIGNATURE_PARAM_KAT; + break; + case 'b': + if (strcmp("kdf-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KBKDF_KEY_CHECK; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case 's': + switch(s[9]) { + default: + break; + case 't': + switch(s[10]) { + default: + break; + case '-': + if (strcmp("props", s + 11) == 0) + return PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_KDF_DIGEST; + } + } + } + } + } + } + break; + case 'o': + if (strcmp("utlen", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_OUTLEN; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_TYPE; + break; + case 'u': + if (strcmp("km", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_UKM; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'y': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("heck", s + 5) == 0) + return PIDX_PKEY_PARAM_FIPS_KEY_CHECK; + break; + case 'l': + if (strcmp("ength", s + 5) == 0) + return PIDX_SKEY_PARAM_KEY_LENGTH; + } + break; + case 'b': + if (strcmp("its", s + 4) == 0) + return PIDX_CIPHER_PARAM_RC2_KEYBITS; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_KEYLEN; + break; + case '\0': + return PIDX_MAC_PARAM_KEY; + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KMAC_KEY_CHECK; + } + break; + case 'l': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("el", s + 3) == 0) + return PIDX_KDF_PARAM_LABEL; + break; + case 'n': + if (strcmp("es", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_LANES; + } + } + break; + case 'm': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'k': + if (strcmp("ey", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_MAC_KEY; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_KDF_PARAM_MAC_SIZE; + break; + case '\0': + return PIDX_ALG_PARAM_MAC; + } + break; + case 'n': + if (strcmp("datory-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_MANDATORY_DIGEST; + break; + case 'x': + switch(s[3]) { + default: + break; + case '-': + if (strcmp("size", s + 4) == 0) + return PIDX_PKEY_PARAM_MAX_SIZE; + break; + case '_': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("dinlen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_ADINLEN; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("rly_data", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA; + break; + case 'n': + if (strcmp("tropylen", s + 6) == 0) + return PIDX_DRBG_PARAM_MAX_ENTROPYLEN; + } + break; + case 'f': + if (strcmp("rag_len", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_NONCELEN; + break; + case 'p': + if (strcmp("erslen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_PERSLEN; + break; + case 'r': + if (strcmp("equest", s + 5) == 0) + return PIDX_RAND_PARAM_MAX_REQUEST; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MAX_LENGTH; + break; + case 'm': + if (strcmp("em_bytes", s + 4) == 0) + return PIDX_KDF_PARAM_SCRYPT_MAXMEM; + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'm': + if (strcmp("cost", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_MEMCOST; + break; + case 's': + if (strcmp("sage-encoding", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING; + } + break; + case 'g': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_DIGEST; + break; + case 'p': + if (strcmp("roperties", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_PROPERTIES; + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_MASKGENFUNC; + } + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("alg", s + 3) == 0) + return PIDX_DIGEST_PARAM_MICALG; + break; + case 'n': + switch(s[3]) { + default: + break; + case '_': + switch(s[4]) { + default: + break; + case 'e': + if (strcmp("ntropylen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_ENTROPYLEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_NONCELEN; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MIN_LENGTH; + } + } + break; + case 'l': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + if (strcmp("nput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS; + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED; + } + } + } + } + break; + case 'k': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + switch(s[8]) { + default: + break; + case 'm': + if (strcmp("port_pct_type", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE; + break; + case 'n': + if (strcmp("put_formats", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS; + } + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED; + } + } + } + } + } + } + break; + case 'o': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case '\0': + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE; + } + break; + case 'u': + if (strcmp("le-filename", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_MODULE_FILENAME; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_SIGNATURE_PARAM_MU; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_M; + } + break; + case 'n': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("me", s + 2) == 0) + return PIDX_STORE_PARAM_ISSUER; + break; + case 'o': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("short-mac", s + 3) == 0) + return PIDX_PROV_PARAM_NO_SHORT_MAC; + break; + case 'n': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("type", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_NONCE_TYPE; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_NONCE; + } + } + } + } + break; + case 'u': + if (strcmp("m", s + 2) == 0) + return PIDX_CIPHER_PARAM_NUM; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_N; + } + break; + case 'o': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("ep-label", s + 2) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL; + break; + case 'p': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'n': + if (strcmp("ssl-version", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_VERSION; + break; + case 'r': + if (strcmp("ation", s + 4) == 0) + return PIDX_KEM_PARAM_OPERATION; + } + break; + case 't': + if (strcmp("ions", s + 3) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS; + } + break; + case 'r': + if (strcmp("der", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_ORDER; + } + break; + case 'p': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P2; + } + break; + case 'a': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'm': + if (strcmp("ode", s + 5) == 0) + return PIDX_PKEY_PARAM_PAD_MODE; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_DIGEST_PARAM_PAD_TYPE; + } + break; + case 'd': + if (strcmp("ing", s + 4) == 0) + return PIDX_CIPHER_PARAM_PADDING; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_PAD; + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'u': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYUINFO; + break; + case 'v': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYVINFO; + } + } + } + break; + case 's': + if (strcmp("s", s + 3) == 0) + return PIDX_KDF_PARAM_PASSWORD; + } + break; + case 'b': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("ts", s + 3) == 0) + return PIDX_PKEY_PARAM_FFC_PBITS; + break; + case 'k': + if (strcmp("df2-lower-bound-check", s + 3) == 0) + return PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK; + } + break; + case 'c': + if (strcmp("ounter", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_PCOUNTER; + break; + case 'i': + if (strcmp("peline-tag", s + 2) == 0) + return PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG; + break; + case 'k': + if (strcmp("cs5", s + 2) == 0) + return PIDX_KDF_PARAM_PKCS5; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("nt-format", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT; + break; + case 't': + if (strcmp("ential", s + 3) == 0) + return PIDX_GEN_PARAM_POTENTIAL; + } + break; + case 'r': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("iction_resistance", s + 4) == 0) + return PIDX_DRBG_PARAM_PREDICTION_RESISTANCE; + break; + case 'f': + if (strcmp("ix", s + 4) == 0) + return PIDX_KDF_PARAM_PREFIX; + } + break; + case 'i': + switch(s[3]) { + default: + break; + case 'm': + if (strcmp("es", s + 4) == 0) + return PIDX_PKEY_PARAM_RSA_PRIMES; + break; + case 'v': + switch(s[4]) { + default: + break; + case '_': + if (strcmp("len", s + 5) == 0) + return PIDX_PKEY_PARAM_DH_PRIV_LEN; + break; + case '\0': + return PIDX_PKEY_PARAM_PRIV_KEY; + } + } + break; + case 'o': + switch(s[3]) { + default: + break; + case 'p': + if (strcmp("erties", s + 4) == 0) + return PIDX_STORE_PARAM_PROPERTIES; + break; + case 'v': + if (strcmp("ider-name", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_PROV_NAME; + } + } + break; + case 'u': + if (strcmp("b", s + 2) == 0) + return PIDX_PKEY_PARAM_PUB_KEY; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_P; + } + break; + case 'q': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q2; + } + break; + case 'b': + if (strcmp("its", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_QBITS; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_Q; + break; + case 'x': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_X; + } + break; + case 'y': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_Y; + } + } + break; + case 'r': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'k': + if (strcmp("ey", s + 5) == 0) + return PIDX_CIPHER_PARAM_RANDOM_KEY; + break; + case 'o': + if (strcmp("m_data", s + 5) == 0) + return PIDX_DRBG_PARAM_RANDOM_DATA; + } + } + break; + case 'w': + if (strcmp("-bytes", s + 3) == 0) + return PIDX_SKEY_PARAM_RAW_BYTES; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case '_': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("head", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD; + break; + case 'b': + if (strcmp("uffer_len", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN; + } + } + } + break; + case 'f': + if (strcmp("erence", s + 3) == 0) + return PIDX_OBJECT_PARAM_REFERENCE; + break; + case 's': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case '_': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("ounter", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_COUNTER; + break; + case 'r': + if (strcmp("equests", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_REQUESTS; + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case 'm': + switch(s[10]) { + default: + break; + case 'e': + switch(s[11]) { + default: + break; + case '_': + if (strcmp("interval", s + 12) == 0) + return PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL; + break; + case '\0': + return PIDX_DRBG_PARAM_RESEED_TIME; + } + } + } + } + } + } + } + } + } + } + break; + case 'o': + if (strcmp("unds", s + 2) == 0) + return PIDX_CIPHER_PARAM_ROUNDS; + break; + case 's': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + switch(s[5]) { + default: + break; + case 'o': + switch(s[6]) { + default: + break; + case 'e': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case 'i': + switch(s[10]) { + default: + break; + case 'c': + switch(s[11]) { + default: + break; + case 'i': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'n': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case '1': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT1; + } + break; + case '2': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT2; + } + break; + case '3': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT3; + } + break; + case '4': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT4; + } + break; + case '5': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT5; + } + break; + case '6': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT6; + } + break; + case '7': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT7; + } + break; + case '8': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT8; + } + break; + case '9': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'd': + if (strcmp("erive-from-pq", s + 5) == 0) + return PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'x': + switch(s[6]) { + default: + break; + case 'p': + switch(s[7]) { + default: + break; + case 'o': + switch(s[8]) { + default: + break; + case 'n': + switch(s[9]) { + default: + break; + case 'e': + switch(s[10]) { + default: + break; + case 'n': + switch(s[11]) { + default: + break; + case 't': + switch(s[12]) { + default: + break; + case '1': + switch(s[13]) { + default: + break; + case '0': + switch(s[14]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT1; + } + break; + case '2': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT2; + } + break; + case '3': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT3; + } + break; + case '4': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT4; + } + break; + case '5': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT5; + } + break; + case '6': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT6; + } + break; + case '7': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT7; + } + break; + case '8': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT8; + } + break; + case '9': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT; + } + } + } + } + } + } + } + } + break; + case 'f': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'o': + switch(s[9]) { + default: + break; + case 'r': + switch(s[10]) { + default: + break; + case '1': + switch(s[11]) { + default: + break; + case '0': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR1; + } + break; + case '2': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR2; + } + break; + case '3': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR3; + } + break; + case '4': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR4; + } + break; + case '5': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR5; + } + break; + case '6': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR6; + } + break; + case '7': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR7; + } + break; + case '8': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR8; + } + break; + case '9': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR; + } + } + } + } + } + } + break; + case 'p': + switch(s[5]) { + default: + break; + case 'k': + if (strcmp("cs15-pad-disabled", s + 6) == 0) + return PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED; + break; + case 's': + if (strcmp("s-saltlen-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK; + } + break; + case 's': + if (strcmp("ign-x931-pad-disabled", s + 5) == 0) + return PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED; + } + } + } + break; + case '\0': + return PIDX_KDF_PARAM_SCRYPT_R; + } + break; + case 's': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("eprime-generator", s + 3) == 0) + return PIDX_PKEY_PARAM_DH_GENERATOR; + break; + case 'l': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'l': + if (strcmp("en", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_PSS_SALTLEN; + break; + case '\0': + return PIDX_MAC_PARAM_SALT; + } + } + break; + case 'v': + if (strcmp("e-parameters", s + 3) == 0) + return PIDX_ENCODER_PARAM_SAVE_PARAMETERS; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'r': + if (strcmp("et", s + 4) == 0) + return PIDX_KDF_PARAM_SECRET; + break; + case 'u': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'y': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'b': + if (strcmp("its", s + 10) == 0) + return PIDX_PKEY_PARAM_SECURITY_BITS; + break; + case 'c': + if (strcmp("hecks", s + 10) == 0) + return PIDX_PROV_PARAM_SECURITY_CHECKS; + } + } + } + } + } + } + } + break; + case 'e': + if (strcmp("d", s + 3) == 0) + return PIDX_PKEY_PARAM_SLH_DSA_SEED; + break; + case 'r': + if (strcmp("ial", s + 3) == 0) + return PIDX_STORE_PARAM_SERIAL; + break; + case 's': + if (strcmp("sion_id", s + 3) == 0) + return PIDX_KDF_PARAM_SSHKDF_SESSION_ID; + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'n': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + if (strcmp("heck", s + 6) == 0) + return PIDX_PKEY_PARAM_FIPS_SIGN_CHECK; + break; + case 'x': + if (strcmp("931-pad-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK; + } + break; + case 'a': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case 'u': + switch(s[7]) { + default: + break; + case 'r': + switch(s[8]) { + default: + break; + case 'e': + switch(s[9]) { + default: + break; + case '-': + if (strcmp("digest-check", s + 10) == 0) + return PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK; + break; + case '\0': + return PIDX_SIGNATURE_PARAM_SIGNATURE; + } + } + } + } + } + } + } + break; + case 'z': + if (strcmp("e", s + 3) == 0) + return PIDX_MAC_PARAM_SIZE; + } + break; + case 'p': + if (strcmp("eed", s + 2) == 0) + return PIDX_CIPHER_PARAM_SPEED; + break; + case 's': + switch(s[2]) { + default: + break; + case 'h': + switch(s[3]) { + default: + break; + case 'k': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'f': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_KEY_CHECK; + } + } + } + } + } + break; + case 'k': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'f': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_KEY_CHECK; + } + } + } + } + break; + case 'l': + if (strcmp("3-ms", s + 3) == 0) + return PIDX_DIGEST_PARAM_SSL3_MS; + } + break; + case 't': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("esc", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_DESC; + break; + case 'p': + if (strcmp("hase", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_PHASE; + break; + case 't': + if (strcmp("ype", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_TYPE; + } + break; + case 'a': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_STATE; + } + break; + case 'u': + if (strcmp("s", s + 5) == 0) + return PIDX_PROV_PARAM_STATUS; + } + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("m_mac", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC; + break; + case 'n': + if (strcmp("gth", s + 5) == 0) + return PIDX_RAND_PARAM_STRENGTH; + } + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("ject", s + 3) == 0) + return PIDX_STORE_PARAM_SUBJECT; + break; + case 'p': + switch(s[3]) { + default: + break; + case 'p': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + if (strcmp("ivinfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PRIVINFO; + break; + case 'u': + if (strcmp("binfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PUBINFO; + } + } + } + } + } + } + break; + case 't': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_TAGLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TAG; + } + } + break; + case 'd': + if (strcmp("es-encrypt-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED; + break; + case 'e': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case '-': + if (strcmp("entropy", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_TEST_ENTROPY; + break; + case '_': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("ntropy", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_ENTROPY; + break; + case 'n': + if (strcmp("once", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_NONCE; + } + } + } + } + break; + case 'h': + if (strcmp("reads", s + 2) == 0) + return PIDX_KDF_PARAM_THREADS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("lient-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION; + break; + case 'd': + if (strcmp("ata-size", s + 5) == 0) + return PIDX_MAC_PARAM_TLS_DATA_SIZE; + break; + case 'g': + switch(s[5]) { + default: + break; + case 'r': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'u': + switch(s[8]) { + default: + break; + case 'p': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'a': + if (strcmp("lg", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_ALG; + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_ID; + } + break; + case 's': + if (strcmp("-kem", s + 12) == 0) + return PIDX_CAPABILITY_TLS_GROUP_IS_KEM; + } + break; + case 'n': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'm': + switch(s[13]) { + default: + break; + case 'e': + switch(s[14]) { + default: + break; + case '-': + if (strcmp("internal", s + 15) == 0) + return PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL; + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_NAME; + } + } + } + } + break; + case 's': + if (strcmp("ec-bits", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case '-': + if (strcmp("size", s + 8) == 0) + return PIDX_CIPHER_PARAM_TLS_MAC_SIZE; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS_MAC; + } + break; + case 'x': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS; + } + } + } + break; + case 'i': + switch(s[6]) { + default: + break; + case 'n': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS; + } + } + } + break; + case 'u': + if (strcmp("lti", s + 6) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK; + } + break; + case 'n': + if (strcmp("egotiated-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION; + break; + case 's': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'a': + switch(s[8]) { + default: + break; + case 'l': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '-': + switch(s[11]) { + default: + break; + case 'c': + if (strcmp("ode-point", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT; + break; + case 'h': + switch(s[12]) { + default: + break; + case 'a': + switch(s[13]) { + default: + break; + case 's': + switch(s[14]) { + default: + break; + case 'h': + switch(s[15]) { + default: + break; + case '-': + switch(s[16]) { + default: + break; + case 'n': + if (strcmp("ame", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME; + break; + case 'o': + if (strcmp("id", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_OID; + } + } + } + } + } + break; + case 'i': + if (strcmp("ana-name", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME; + break; + case 'k': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'y': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case 'y': + switch(s[16]) { + default: + break; + case 'p': + switch(s[17]) { + default: + break; + case 'e': + switch(s[18]) { + default: + break; + case '-': + if (strcmp("oid", s + 19) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID; + break; + case '\0': + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE; + } + } + } + } + } + } + } + break; + case 'n': + if (strcmp("ame", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_NAME; + break; + case 'o': + if (strcmp("id", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_OID; + break; + case 's': + switch(s[12]) { + default: + break; + case 'e': + if (strcmp("c-bits", s + 13) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS; + break; + case 'i': + switch(s[13]) { + default: + break; + case 'g': + switch(s[14]) { + default: + break; + case '-': + switch(s[15]) { + default: + break; + case 'n': + if (strcmp("ame", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME; + break; + case 'o': + if (strcmp("id", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_OID; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'v': + if (strcmp("ersion", s + 5) == 0) + return PIDX_CIPHER_PARAM_TLS_VERSION; + } + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK; + break; + case 'e': + if (strcmp("ms-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK; + } + } + } + } + } + break; + case '3': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'k': + switch(s[7]) { + default: + break; + case 'd': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'u': + switch(s[6]) { + default: + break; + case 'l': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case '_': + switch(s[10]) { + default: + break; + case 'a': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'd': + switch(s[13]) { + default: + break; + case 'p': + if (strcmp("acklen", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD; + } + } + } + break; + case 'e': + switch(s[11]) { + default: + break; + case 'n': + switch(s[12]) { + default: + break; + case 'c': + switch(s[13]) { + default: + break; + case 'i': + if (strcmp("n", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN; + break; + case 'l': + if (strcmp("en", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC; + } + } + } + break; + case 'i': + if (strcmp("nterleave", s + 11) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE; + break; + case 'm': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'x': + switch(s[13]) { + default: + break; + case 'b': + if (strcmp("ufsz", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE; + break; + case 's': + if (strcmp("ndfrag", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT; + } + } + } + } + } + } + } + } + } + } + break; + case 'a': + switch(s[4]) { + default: + break; + case 'a': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'p': + if (strcmp("ad", s + 7) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD; + } + } + } + break; + case 'i': + switch(s[4]) { + default: + break; + case 'v': + switch(s[5]) { + default: + break; + case 'f': + if (strcmp("ixed", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED; + break; + case 'g': + if (strcmp("en", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN; + break; + case 'i': + if (strcmp("nv", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV; + } + } + break; + case 't': + if (strcmp("ree", s + 4) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS; + } + break; + case 'y': + if (strcmp("pe", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_TYPE; + } + break; + case 'u': + switch(s[1]) { + default: + break; + case 'k': + if (strcmp("m", s + 2) == 0) + return PIDX_KDF_PARAM_UKM; + break; + case 'p': + if (strcmp("dated-iv", s + 2) == 0) + return PIDX_CIPHER_PARAM_UPDATED_IV; + break; + case 's': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'b': + if (strcmp("its", s + 5) == 0) + return PIDX_CIPHER_PARAM_USE_BITS; + break; + case 'c': + if (strcmp("ofactor-flag", s + 5) == 0) + return PIDX_PKEY_PARAM_USE_COFACTOR_FLAG; + break; + case 'k': + if (strcmp("eybits", s + 5) == 0) + return PIDX_KDF_PARAM_X942_USE_KEYBITS; + break; + case 'l': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_KBKDF_USE_L; + } + break; + case 's': + if (strcmp("eparator", s + 5) == 0) + return PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR; + } + break; + case '_': + switch(s[4]) { + default: + break; + case 'd': + if (strcmp("erivation_function", s + 5) == 0) + return PIDX_DRBG_PARAM_USE_DF; + break; + case 'e': + if (strcmp("tm", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM; + } + } + } + } + break; + case 'v': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'l': + switch(s[3]) { + default: + break; + case 'i': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_VALIDATE_G; + } + break; + case 'l': + if (strcmp("egacy", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY; + break; + case 'p': + if (strcmp("q", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_PQ; + } + } + } + } + } + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'r': + switch(s[3]) { + default: + break; + case 'i': + if (strcmp("fy-message", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE; + break; + case 's': + if (strcmp("ion", s + 4) == 0) + return PIDX_PROV_PARAM_VERSION; + } + } + } + break; + case 'x': + switch(s[1]) { + default: + break; + case '9': + switch(s[2]) { + default: + break; + case '4': + if (strcmp("2kdf-key-check", s + 3) == 0) + return PIDX_PROV_PARAM_X942KDF_KEY_CHECK; + break; + case '6': + switch(s[3]) { + default: + break; + case '3': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'f': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_KEY_CHECK; + } + } + } + } + } + } + } + break; + case 'c': + if (strcmp("ghash", s + 2) == 0) + return PIDX_KDF_PARAM_SSHKDF_XCGHASH; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_DIGEST_PARAM_XOFLEN; + break; + case '\0': + return PIDX_MAC_PARAM_XOF; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP; + } + break; + case 'q': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ; + } + break; + case 't': + if (strcmp("s_standard", s + 2) == 0) + return PIDX_CIPHER_PARAM_XTS_STANDARD; + } + } + return -1; +} + +/* End of TRIE */ diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/poly1305/poly1305-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/poly1305/poly1305-x86_64.asm index fb3823608c949b..9b026665fe1e89 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/poly1305/poly1305-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/poly1305/poly1305-x86_64.asm @@ -76,6 +76,7 @@ $L$SEH_begin_poly1305_blocks: +DB 243,15,30,250 $L$blocks: shr rdx,4 jz NEAR $L$no_data @@ -196,6 +197,7 @@ $L$SEH_begin_poly1305_emit: +DB 243,15,30,250 $L$emit: mov r8,QWORD[rdi] mov r9,QWORD[8+rdi] @@ -444,6 +446,7 @@ $L$SEH_begin_poly1305_blocks_avx: +DB 243,15,30,250 mov r8d,DWORD[20+rdi] cmp rdx,128 jae NEAR $L$blocks_avx @@ -1300,6 +1303,7 @@ $L$SEH_begin_poly1305_emit_avx: +DB 243,15,30,250 cmp DWORD[20+rdi],0 je NEAR $L$emit @@ -1368,6 +1372,7 @@ $L$SEH_begin_poly1305_blocks_avx2: +DB 243,15,30,250 mov r8d,DWORD[20+rdi] cmp rdx,128 jae NEAR $L$blocks_avx2 @@ -2040,6 +2045,7 @@ $L$SEH_begin_poly1305_blocks_avx512: +DB 243,15,30,250 $L$blocks_avx512: mov eax,15 kmovw k2,eax @@ -2600,6 +2606,7 @@ $L$do_avx512_epilogue: DB 0F3h,0C3h ;repret $L$SEH_end_poly1305_blocks_avx512: +section .rdata rdata align=64 ALIGN 64 $L$const: $L$mask24: @@ -2631,6 +2638,7 @@ $L$x_mask44: $L$x_mask42: DQ 0x3ffffffffff,0x3ffffffffff,0x3ffffffffff,0x3ffffffffff DQ 0x3ffffffffff,0x3ffffffffff,0x3ffffffffff,0x3ffffffffff +section .text DB 80,111,108,121,49,51,48,53,32,102,111,114,32,120,56,54 DB 95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32 DB 98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/keccak1600-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/keccak1600-x86_64.asm index fdab35d95c2f29..69c5eea5b16e80 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/keccak1600-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/keccak1600-x86_64.asm @@ -436,6 +436,7 @@ $L$SEH_begin_SHA3_squeeze: mov rsi,rdx mov rdx,r8 mov rcx,r9 + mov r8,QWORD[40+rsp] @@ -447,10 +448,12 @@ $L$SEH_begin_SHA3_squeeze: shr rcx,3 - mov r8,rdi + mov r9,rdi mov r12,rsi mov r13,rdx mov r14,rcx + bt r8d,0 + jc NEAR $L$next_block jmp NEAR $L$oop_squeeze ALIGN 32 @@ -458,8 +461,8 @@ $L$oop_squeeze: cmp r13,8 jb NEAR $L$tail_squeeze - mov rax,QWORD[r8] - lea r8,[8+r8] + mov rax,QWORD[r9] + lea r9,[8+r9] mov QWORD[r12],rax lea r12,[8+r12] sub r13,8 @@ -467,14 +470,14 @@ $L$oop_squeeze: sub rcx,1 jnz NEAR $L$oop_squeeze - +$L$next_block: call KeccakF1600 - mov r8,rdi + mov r9,rdi mov rcx,r14 jmp NEAR $L$oop_squeeze $L$tail_squeeze: - mov rsi,r8 + mov rsi,r9 mov rdi,r12 mov rcx,r13 DB 0xf3,0xa4 @@ -491,6 +494,7 @@ $L$done_squeeze: DB 0F3h,0C3h ;repret $L$SEH_end_SHA3_squeeze: +section .rdata rdata align=256 ALIGN 256 DQ 0,0,0,0,0,0,0,0 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/sha1-mb-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/sha1-mb-x86_64.asm index 49e6a41c9ce87e..266be0f957c718 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/sha1-mb-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/sha1-mb-x86_64.asm @@ -7419,7 +7419,7 @@ $L$epilogue_avx2: DB 0F3h,0C3h ;repret $L$SEH_end_sha1_multi_block_avx2: - +section .rdata rdata align=256 ALIGN 256 DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999 DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999 @@ -7438,6 +7438,7 @@ DB 32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120 DB 56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77 DB 83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110 DB 115,115,108,46,111,114,103,62,0 +section .text EXTERN __imp_RtlVirtualUnwind ALIGN 16 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/sha1-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/sha1-x86_64.asm index 1b60a7ce75cae0..37fa9a8ee866de 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/sha1-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/sha1-x86_64.asm @@ -5545,6 +5545,7 @@ $L$epilogue_avx2: DB 0F3h,0C3h ;repret $L$SEH_end_sha1_block_data_order_avx2: +section .rdata rdata align=64 ALIGN 64 K_XX_XX: DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999 @@ -5558,6 +5559,7 @@ K_XX_XX: DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f DB 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0 +section .text DB 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115 DB 102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44 DB 32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/sha256-mb-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/sha256-mb-x86_64.asm index 201994b04ca970..bbdbac6b65e1c6 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/sha256-mb-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/sha256-mb-x86_64.asm @@ -7964,6 +7964,7 @@ $L$epilogue_avx2: DB 0F3h,0C3h ;repret $L$SEH_end_sha256_multi_block_avx2: +section .rdata rdata align=256 ALIGN 256 K256: DD 1116352408,1116352408,1116352408,1116352408 @@ -8119,6 +8120,7 @@ DB 99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114 DB 32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71 DB 65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112 DB 101,110,115,115,108,46,111,114,103,62,0 +section .text EXTERN __imp_RtlVirtualUnwind ALIGN 16 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/sha256-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/sha256-x86_64.asm index 9ff3cbb92b5df1..b4a869f67ba116 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/sha256-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/sha256-x86_64.asm @@ -1744,6 +1744,7 @@ $L$epilogue: DB 0F3h,0C3h ;repret $L$SEH_end_sha256_block_data_order: +section .rdata rdata align=64 ALIGN 64 K256: @@ -1791,6 +1792,7 @@ DB 110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54 DB 52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 DB 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 DB 111,114,103,62,0 +section .text ALIGN 64 sha256_block_data_order_shaext: diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/sha512-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/sha512-x86_64.asm index fc2269c8435930..30f1640b5e5d8d 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/sha512-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/sha/sha512-x86_64.asm @@ -1742,6 +1742,7 @@ $L$epilogue: DB 0F3h,0C3h ;repret $L$SEH_end_sha512_block_data_order: +section .rdata rdata align=64 ALIGN 64 K512: @@ -1833,6 +1834,7 @@ DB 110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54 DB 52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 DB 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 DB 111,114,103,62,0 +section .text ALIGN 64 sha512_block_data_order_xop: diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/whrlpool/wp-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/whrlpool/wp-x86_64.asm index 76f7b07678a7ef..6f64ab15115884 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/whrlpool/wp-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/whrlpool/wp-x86_64.asm @@ -624,6 +624,7 @@ $L$epilogue: $L$SEH_end_whirlpool_block: +section .rdata rdata align=64 ALIGN 64 $L$table: diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/x86_64cpuid.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/x86_64cpuid.asm index d929065b02cbe9..1b15ab48f01cc6 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/x86_64cpuid.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/x86_64cpuid.asm @@ -2,14 +2,14 @@ default rel %define XMMWORD %define YMMWORD %define ZMMWORD + EXTERN OPENSSL_cpuid_setup section .CRT$XCU rdata align=8 DQ OPENSSL_cpuid_setup -common OPENSSL_ia32cap_P 16 - +common OPENSSL_ia32cap_P 40 section .text code align=64 @@ -175,6 +175,7 @@ $L$generic: mov eax,7 xor ecx,ecx cpuid + movd xmm1,eax bt r9d,26 jc NEAR $L$notknights and ebx,0xfff7ffff @@ -185,9 +186,31 @@ $L$notknights: jne NEAR $L$notskylakex and ebx,0xfffeffff + $L$notskylakex: mov DWORD[8+rdi],ebx mov DWORD[12+rdi],ecx + mov DWORD[16+rdi],edx + + movd eax,xmm1 + cmp eax,0x1 + jb NEAR $L$no_extended_info + mov eax,0x7 + mov ecx,0x1 + cpuid + mov DWORD[20+rdi],eax + mov DWORD[24+rdi],edx + mov DWORD[28+rdi],ebx + mov DWORD[32+rdi],ecx + + and edx,0x80000 + cmp edx,0x0 + je NEAR $L$no_extended_info + mov eax,0x24 + mov ecx,0x0 + cpuid + mov DWORD[36+rdi],ebx + $L$no_extended_info: bt r9d,27 @@ -206,6 +229,9 @@ DB 0x0f,0x01,0xd0 cmp eax,6 je NEAR $L$done $L$clear_avx: + and DWORD[20+rdi],0xff7fffff + + mov eax,0xefffe7ff and r9d,eax mov eax,0x3fdeffdf diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/internal/param_names.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/internal/param_names.h new file mode 100644 index 00000000000000..ec5bff6e31c126 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/internal/param_names.h @@ -0,0 +1,469 @@ +/* + * WARNING: do not edit! + * Generated by makefile from include/internal/param_names.h.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +int ossl_param_find_pidx(const char *s); + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +#define NUM_PIDX 346 + +#define PIDX_ALG_PARAM_ALGORITHM_ID 0 +#define PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS 1 +#define PIDX_ALG_PARAM_CIPHER 2 +#define PIDX_ALG_PARAM_DIGEST 3 +#define PIDX_ALG_PARAM_ENGINE 4 +#define PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR 5 +#define PIDX_ALG_PARAM_MAC 6 +#define PIDX_ALG_PARAM_PROPERTIES 7 +#define PIDX_ASYM_CIPHER_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_ENGINE PIDX_PKEY_PARAM_ENGINE +#define PIDX_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +#define PIDX_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS 9 +#define PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL 10 +#define PIDX_ASYM_CIPHER_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_ASYM_CIPHER_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION 11 +#define PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION 12 +#define PIDX_CAPABILITY_TLS_GROUP_ALG 13 +#define PIDX_CAPABILITY_TLS_GROUP_ID 14 +#define PIDX_CAPABILITY_TLS_GROUP_IS_KEM 15 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_GROUP_NAME 20 +#define PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL 21 +#define PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS 22 +#define PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT 23 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME 24 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_OID 25 +#define PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME 26 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE 27 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID 28 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_SIGALG_NAME 29 +#define PIDX_CAPABILITY_TLS_SIGALG_OID 30 +#define PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS 31 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME 32 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_OID 33 +#define PIDX_CIPHER_PARAM_AEAD 34 +#define PIDX_CIPHER_PARAM_AEAD_IVLEN PIDX_CIPHER_PARAM_IVLEN +#define PIDX_CIPHER_PARAM_AEAD_IV_GENERATED 35 +#define PIDX_CIPHER_PARAM_AEAD_MAC_KEY 36 +#define PIDX_CIPHER_PARAM_AEAD_TAG 37 +#define PIDX_CIPHER_PARAM_AEAD_TAGLEN 38 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD 39 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD 40 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN 41 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED 42 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV 43 +#define PIDX_CIPHER_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD 44 +#define PIDX_CIPHER_PARAM_BLOCK_SIZE 45 +#define PIDX_CIPHER_PARAM_CTS 46 +#define PIDX_CIPHER_PARAM_CTS_MODE 47 +#define PIDX_CIPHER_PARAM_CUSTOM_IV 48 +#define PIDX_CIPHER_PARAM_DECRYPT_ONLY 49 +#define PIDX_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK 50 +#define PIDX_CIPHER_PARAM_HAS_RAND_KEY 51 +#define PIDX_CIPHER_PARAM_IV 52 +#define PIDX_CIPHER_PARAM_IVLEN 53 +#define PIDX_CIPHER_PARAM_KEYLEN 54 +#define PIDX_CIPHER_PARAM_MODE 55 +#define PIDX_CIPHER_PARAM_NUM 56 +#define PIDX_CIPHER_PARAM_PADDING 57 +#define PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG 58 +#define PIDX_CIPHER_PARAM_RANDOM_KEY 59 +#define PIDX_CIPHER_PARAM_RC2_KEYBITS 60 +#define PIDX_CIPHER_PARAM_ROUNDS 61 +#define PIDX_CIPHER_PARAM_SPEED 62 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK 63 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD 64 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN 65 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC 66 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN 67 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN 68 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE 69 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE 70 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT 71 +#define PIDX_CIPHER_PARAM_TLS_MAC 72 +#define PIDX_CIPHER_PARAM_TLS_MAC_SIZE 73 +#define PIDX_CIPHER_PARAM_TLS_VERSION 74 +#define PIDX_CIPHER_PARAM_UPDATED_IV 75 +#define PIDX_CIPHER_PARAM_USE_BITS 76 +#define PIDX_CIPHER_PARAM_XTS_STANDARD 77 +#define PIDX_DECODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DIGEST_PARAM_ALGID_ABSENT 78 +#define PIDX_DIGEST_PARAM_BLOCK_SIZE 45 +#define PIDX_DIGEST_PARAM_MICALG 79 +#define PIDX_DIGEST_PARAM_PAD_TYPE 80 +#define PIDX_DIGEST_PARAM_SIZE 81 +#define PIDX_DIGEST_PARAM_SSL3_MS 82 +#define PIDX_DIGEST_PARAM_XOF 83 +#define PIDX_DIGEST_PARAM_XOFLEN 84 +#define PIDX_DRBG_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_DRBG_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_DRBG_PARAM_ENTROPY_REQUIRED 85 +#define PIDX_DRBG_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_DRBG_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_DRBG_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_DRBG_PARAM_MAX_ADINLEN 86 +#define PIDX_DRBG_PARAM_MAX_ENTROPYLEN 87 +#define PIDX_DRBG_PARAM_MAX_LENGTH 88 +#define PIDX_DRBG_PARAM_MAX_NONCELEN 89 +#define PIDX_DRBG_PARAM_MAX_PERSLEN 90 +#define PIDX_DRBG_PARAM_MIN_ENTROPYLEN 91 +#define PIDX_DRBG_PARAM_MIN_LENGTH 92 +#define PIDX_DRBG_PARAM_MIN_NONCELEN 93 +#define PIDX_DRBG_PARAM_PREDICTION_RESISTANCE 94 +#define PIDX_DRBG_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DRBG_PARAM_RANDOM_DATA 95 +#define PIDX_DRBG_PARAM_RESEED_COUNTER 96 +#define PIDX_DRBG_PARAM_RESEED_REQUESTS 97 +#define PIDX_DRBG_PARAM_RESEED_TIME 98 +#define PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL 99 +#define PIDX_DRBG_PARAM_SIZE 81 +#define PIDX_DRBG_PARAM_USE_DF 100 +#define PIDX_ENCODER_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_ENCODER_PARAM_ENCRYPT_LEVEL 101 +#define PIDX_ENCODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_ENCODER_PARAM_SAVE_PARAMETERS 102 +#define PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE 103 +#define PIDX_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_EXCHANGE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST 104 +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS 105 +#define PIDX_EXCHANGE_PARAM_KDF_OUTLEN 106 +#define PIDX_EXCHANGE_PARAM_KDF_TYPE 107 +#define PIDX_EXCHANGE_PARAM_KDF_UKM 108 +#define PIDX_EXCHANGE_PARAM_PAD 109 +#define PIDX_GEN_PARAM_ITERATION 110 +#define PIDX_GEN_PARAM_POTENTIAL 111 +#define PIDX_KDF_PARAM_ARGON2_AD 112 +#define PIDX_KDF_PARAM_ARGON2_LANES 113 +#define PIDX_KDF_PARAM_ARGON2_MEMCOST 114 +#define PIDX_KDF_PARAM_ARGON2_VERSION 115 +#define PIDX_KDF_PARAM_CEK_ALG 116 +#define PIDX_KDF_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_KDF_PARAM_CONSTANT 117 +#define PIDX_KDF_PARAM_DATA 118 +#define PIDX_KDF_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_KDF_PARAM_EARLY_CLEAN 119 +#define PIDX_KDF_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KDF_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_KDF_PARAM_FIPS_EMS_CHECK 120 +#define PIDX_KDF_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KDF_PARAM_HMACDRBG_ENTROPY 121 +#define PIDX_KDF_PARAM_HMACDRBG_NONCE 122 +#define PIDX_KDF_PARAM_INFO 123 +#define PIDX_KDF_PARAM_ITER 124 +#define PIDX_KDF_PARAM_KBKDF_R 125 +#define PIDX_KDF_PARAM_KBKDF_USE_L 126 +#define PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR 127 +#define PIDX_KDF_PARAM_KEY 128 +#define PIDX_KDF_PARAM_LABEL 129 +#define PIDX_KDF_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_KDF_PARAM_MAC_SIZE 130 +#define PIDX_KDF_PARAM_MODE 55 +#define PIDX_KDF_PARAM_PASSWORD 131 +#define PIDX_KDF_PARAM_PKCS12_ID 132 +#define PIDX_KDF_PARAM_PKCS5 133 +#define PIDX_KDF_PARAM_PREFIX 134 +#define PIDX_KDF_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_KDF_PARAM_SALT 135 +#define PIDX_KDF_PARAM_SCRYPT_MAXMEM 136 +#define PIDX_KDF_PARAM_SCRYPT_N 137 +#define PIDX_KDF_PARAM_SCRYPT_P 138 +#define PIDX_KDF_PARAM_SCRYPT_R 125 +#define PIDX_KDF_PARAM_SECRET 139 +#define PIDX_KDF_PARAM_SEED 140 +#define PIDX_KDF_PARAM_SIZE 81 +#define PIDX_KDF_PARAM_SSHKDF_SESSION_ID 141 +#define PIDX_KDF_PARAM_SSHKDF_TYPE 142 +#define PIDX_KDF_PARAM_SSHKDF_XCGHASH 143 +#define PIDX_KDF_PARAM_THREADS 144 +#define PIDX_KDF_PARAM_UKM 145 +#define PIDX_KDF_PARAM_X942_ACVPINFO 146 +#define PIDX_KDF_PARAM_X942_PARTYUINFO 147 +#define PIDX_KDF_PARAM_X942_PARTYVINFO 148 +#define PIDX_KDF_PARAM_X942_SUPP_PRIVINFO 149 +#define PIDX_KDF_PARAM_X942_SUPP_PUBINFO 150 +#define PIDX_KDF_PARAM_X942_USE_KEYBITS 151 +#define PIDX_KEM_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KEM_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KEM_PARAM_IKME 152 +#define PIDX_KEM_PARAM_OPERATION 153 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING 154 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING 155 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA 156 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN 157 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE 55 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS 158 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD 159 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC 160 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE 161 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM 162 +#define PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN 163 +#define PIDX_MAC_PARAM_BLOCK_SIZE 164 +#define PIDX_MAC_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_MAC_PARAM_CUSTOM 165 +#define PIDX_MAC_PARAM_C_ROUNDS 166 +#define PIDX_MAC_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_MAC_PARAM_DIGEST_NOINIT 167 +#define PIDX_MAC_PARAM_DIGEST_ONESHOT 168 +#define PIDX_MAC_PARAM_D_ROUNDS 169 +#define PIDX_MAC_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_MAC_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_MAC_PARAM_FIPS_NO_SHORT_MAC PIDX_PROV_PARAM_NO_SHORT_MAC +#define PIDX_MAC_PARAM_IV 52 +#define PIDX_MAC_PARAM_KEY 128 +#define PIDX_MAC_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_MAC_PARAM_SALT 135 +#define PIDX_MAC_PARAM_SIZE 81 +#define PIDX_MAC_PARAM_TLS_DATA_SIZE 170 +#define PIDX_MAC_PARAM_XOF 83 +#define PIDX_OBJECT_PARAM_DATA 118 +#define PIDX_OBJECT_PARAM_DATA_STRUCTURE 171 +#define PIDX_OBJECT_PARAM_DATA_TYPE 172 +#define PIDX_OBJECT_PARAM_DESC 173 +#define PIDX_OBJECT_PARAM_INPUT_TYPE 174 +#define PIDX_OBJECT_PARAM_REFERENCE 175 +#define PIDX_OBJECT_PARAM_TYPE 142 +#define PIDX_PASSPHRASE_PARAM_INFO 123 +#define PIDX_PKEY_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_PKEY_PARAM_BITS 176 +#define PIDX_PKEY_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_PKEY_PARAM_DEFAULT_DIGEST 177 +#define PIDX_PKEY_PARAM_DHKEM_IKM 178 +#define PIDX_PKEY_PARAM_DH_GENERATOR 179 +#define PIDX_PKEY_PARAM_DH_PRIV_LEN 180 +#define PIDX_PKEY_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_PKEY_PARAM_DIGEST_SIZE 181 +#define PIDX_PKEY_PARAM_DIST_ID 182 +#define PIDX_PKEY_PARAM_EC_A 183 +#define PIDX_PKEY_PARAM_EC_B 184 +#define PIDX_PKEY_PARAM_EC_CHAR2_M 185 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K1 186 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K2 187 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K3 188 +#define PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS 189 +#define PIDX_PKEY_PARAM_EC_CHAR2_TYPE 190 +#define PIDX_PKEY_PARAM_EC_COFACTOR 191 +#define PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS 192 +#define PIDX_PKEY_PARAM_EC_ENCODING 193 +#define PIDX_PKEY_PARAM_EC_FIELD_TYPE 194 +#define PIDX_PKEY_PARAM_EC_GENERATOR 195 +#define PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE 196 +#define PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC 197 +#define PIDX_PKEY_PARAM_EC_ORDER 198 +#define PIDX_PKEY_PARAM_EC_P 138 +#define PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT 199 +#define PIDX_PKEY_PARAM_EC_PUB_X 200 +#define PIDX_PKEY_PARAM_EC_PUB_Y 201 +#define PIDX_PKEY_PARAM_EC_SEED 140 +#define PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY 202 +#define PIDX_PKEY_PARAM_ENGINE PIDX_ALG_PARAM_ENGINE +#define PIDX_PKEY_PARAM_FFC_COFACTOR 203 +#define PIDX_PKEY_PARAM_FFC_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_FFC_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_FFC_G 204 +#define PIDX_PKEY_PARAM_FFC_GINDEX 205 +#define PIDX_PKEY_PARAM_FFC_H 206 +#define PIDX_PKEY_PARAM_FFC_P 138 +#define PIDX_PKEY_PARAM_FFC_PBITS 207 +#define PIDX_PKEY_PARAM_FFC_PCOUNTER 208 +#define PIDX_PKEY_PARAM_FFC_Q 209 +#define PIDX_PKEY_PARAM_FFC_QBITS 210 +#define PIDX_PKEY_PARAM_FFC_SEED 140 +#define PIDX_PKEY_PARAM_FFC_TYPE 142 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_G 211 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY 212 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_PQ 213 +#define PIDX_PKEY_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK 214 +#define PIDX_PKEY_PARAM_FIPS_KEY_CHECK 215 +#define PIDX_PKEY_PARAM_FIPS_SIGN_CHECK 216 +#define PIDX_PKEY_PARAM_GROUP_NAME 217 +#define PIDX_PKEY_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_PKEY_PARAM_MANDATORY_DIGEST 218 +#define PIDX_PKEY_PARAM_MASKGENFUNC 219 +#define PIDX_PKEY_PARAM_MAX_SIZE 220 +#define PIDX_PKEY_PARAM_MGF1_DIGEST 221 +#define PIDX_PKEY_PARAM_MGF1_PROPERTIES 222 +#define PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS 223 +#define PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS 224 +#define PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED 225 +#define PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED 226 +#define PIDX_PKEY_PARAM_ML_DSA_SEED 140 +#define PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE 227 +#define PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS 228 +#define PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS 229 +#define PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED 230 +#define PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED 231 +#define PIDX_PKEY_PARAM_ML_KEM_SEED 140 +#define PIDX_PKEY_PARAM_PAD_MODE 232 +#define PIDX_PKEY_PARAM_PRIV_KEY 233 +#define PIDX_PKEY_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_PUB_KEY 234 +#define PIDX_PKEY_PARAM_RSA_BITS PIDX_PKEY_PARAM_BITS +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT 235 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT1 236 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT2 237 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT3 238 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT4 239 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT5 240 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT6 241 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT7 242 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT8 243 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT9 244 +#define PIDX_PKEY_PARAM_RSA_D 245 +#define PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ 246 +#define PIDX_PKEY_PARAM_RSA_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_RSA_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_RSA_E 247 +#define PIDX_PKEY_PARAM_RSA_EXPONENT 248 +#define PIDX_PKEY_PARAM_RSA_EXPONENT1 249 +#define PIDX_PKEY_PARAM_RSA_EXPONENT10 250 +#define PIDX_PKEY_PARAM_RSA_EXPONENT2 251 +#define PIDX_PKEY_PARAM_RSA_EXPONENT3 252 +#define PIDX_PKEY_PARAM_RSA_EXPONENT4 253 +#define PIDX_PKEY_PARAM_RSA_EXPONENT5 254 +#define PIDX_PKEY_PARAM_RSA_EXPONENT6 255 +#define PIDX_PKEY_PARAM_RSA_EXPONENT7 256 +#define PIDX_PKEY_PARAM_RSA_EXPONENT8 257 +#define PIDX_PKEY_PARAM_RSA_EXPONENT9 258 +#define PIDX_PKEY_PARAM_RSA_FACTOR 259 +#define PIDX_PKEY_PARAM_RSA_FACTOR1 260 +#define PIDX_PKEY_PARAM_RSA_FACTOR10 261 +#define PIDX_PKEY_PARAM_RSA_FACTOR2 262 +#define PIDX_PKEY_PARAM_RSA_FACTOR3 263 +#define PIDX_PKEY_PARAM_RSA_FACTOR4 264 +#define PIDX_PKEY_PARAM_RSA_FACTOR5 265 +#define PIDX_PKEY_PARAM_RSA_FACTOR6 266 +#define PIDX_PKEY_PARAM_RSA_FACTOR7 267 +#define PIDX_PKEY_PARAM_RSA_FACTOR8 268 +#define PIDX_PKEY_PARAM_RSA_FACTOR9 269 +#define PIDX_PKEY_PARAM_RSA_MASKGENFUNC PIDX_PKEY_PARAM_MASKGENFUNC +#define PIDX_PKEY_PARAM_RSA_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_PKEY_PARAM_RSA_N 137 +#define PIDX_PKEY_PARAM_RSA_PRIMES 270 +#define PIDX_PKEY_PARAM_RSA_PSS_SALTLEN 271 +#define PIDX_PKEY_PARAM_RSA_TEST_P1 272 +#define PIDX_PKEY_PARAM_RSA_TEST_P2 273 +#define PIDX_PKEY_PARAM_RSA_TEST_Q1 274 +#define PIDX_PKEY_PARAM_RSA_TEST_Q2 275 +#define PIDX_PKEY_PARAM_RSA_TEST_XP 276 +#define PIDX_PKEY_PARAM_RSA_TEST_XP1 277 +#define PIDX_PKEY_PARAM_RSA_TEST_XP2 278 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ 279 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ1 280 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ2 281 +#define PIDX_PKEY_PARAM_SECURITY_BITS 282 +#define PIDX_PKEY_PARAM_SLH_DSA_SEED 140 +#define PIDX_PKEY_PARAM_USE_COFACTOR_ECDH PIDX_PKEY_PARAM_USE_COFACTOR_FLAG +#define PIDX_PKEY_PARAM_USE_COFACTOR_FLAG 283 +#define PIDX_PROV_PARAM_BUILDINFO 284 +#define PIDX_PROV_PARAM_CORE_MODULE_FILENAME 285 +#define PIDX_PROV_PARAM_CORE_PROV_NAME 286 +#define PIDX_PROV_PARAM_CORE_VERSION 287 +#define PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST 288 +#define PIDX_PROV_PARAM_DSA_SIGN_DISABLED 289 +#define PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK 290 +#define PIDX_PROV_PARAM_HKDF_DIGEST_CHECK 291 +#define PIDX_PROV_PARAM_HKDF_KEY_CHECK 292 +#define PIDX_PROV_PARAM_HMAC_KEY_CHECK 293 +#define PIDX_PROV_PARAM_KBKDF_KEY_CHECK 294 +#define PIDX_PROV_PARAM_KMAC_KEY_CHECK 295 +#define PIDX_PROV_PARAM_NAME 296 +#define PIDX_PROV_PARAM_NO_SHORT_MAC 297 +#define PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK 298 +#define PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED 299 +#define PIDX_PROV_PARAM_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED 301 +#define PIDX_PROV_PARAM_SECURITY_CHECKS 302 +#define PIDX_PROV_PARAM_SELF_TEST_DESC 303 +#define PIDX_PROV_PARAM_SELF_TEST_PHASE 304 +#define PIDX_PROV_PARAM_SELF_TEST_TYPE 305 +#define PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK 306 +#define PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK 307 +#define PIDX_PROV_PARAM_SSHKDF_KEY_CHECK 308 +#define PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK 309 +#define PIDX_PROV_PARAM_SSKDF_KEY_CHECK 310 +#define PIDX_PROV_PARAM_STATUS 311 +#define PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED 312 +#define PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK 313 +#define PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK 314 +#define PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK 315 +#define PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK 316 +#define PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK 317 +#define PIDX_PROV_PARAM_VERSION 115 +#define PIDX_PROV_PARAM_X942KDF_KEY_CHECK 318 +#define PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK 319 +#define PIDX_PROV_PARAM_X963KDF_KEY_CHECK 320 +#define PIDX_RAND_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_RAND_PARAM_GENERATE 321 +#define PIDX_RAND_PARAM_MAX_REQUEST 322 +#define PIDX_RAND_PARAM_STATE 323 +#define PIDX_RAND_PARAM_STRENGTH 324 +#define PIDX_RAND_PARAM_TEST_ENTROPY 325 +#define PIDX_RAND_PARAM_TEST_NONCE 326 +#define PIDX_SIGNATURE_PARAM_ADD_RANDOM 327 +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID PIDX_PKEY_PARAM_ALGORITHM_ID +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_SIGNATURE_PARAM_CONTEXT_STRING 328 +#define PIDX_SIGNATURE_PARAM_DETERMINISTIC 329 +#define PIDX_SIGNATURE_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_SIGNATURE_PARAM_DIGEST_SIZE PIDX_PKEY_PARAM_DIGEST_SIZE +#define PIDX_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_SIGNATURE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_CHECK PIDX_PKEY_PARAM_FIPS_SIGN_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK 330 +#define PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE 331 +#define PIDX_SIGNATURE_PARAM_INSTANCE 332 +#define PIDX_SIGNATURE_PARAM_KAT 333 +#define PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING 334 +#define PIDX_SIGNATURE_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_SIGNATURE_PARAM_MGF1_PROPERTIES PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_SIGNATURE_PARAM_MU 335 +#define PIDX_SIGNATURE_PARAM_NONCE_TYPE 336 +#define PIDX_SIGNATURE_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_SIGNATURE_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_SIGNATURE_PARAM_PSS_SALTLEN 271 +#define PIDX_SIGNATURE_PARAM_SIGNATURE 337 +#define PIDX_SIGNATURE_PARAM_TEST_ENTROPY 338 +#define PIDX_SKEY_PARAM_KEY_LENGTH 339 +#define PIDX_SKEY_PARAM_RAW_BYTES 340 +#define PIDX_STORE_PARAM_ALIAS 341 +#define PIDX_STORE_PARAM_DIGEST 3 +#define PIDX_STORE_PARAM_EXPECT 342 +#define PIDX_STORE_PARAM_FINGERPRINT 343 +#define PIDX_STORE_PARAM_INPUT_TYPE 174 +#define PIDX_STORE_PARAM_ISSUER 296 +#define PIDX_STORE_PARAM_PROPERTIES 7 +#define PIDX_STORE_PARAM_SERIAL 344 +#define PIDX_STORE_PARAM_SUBJECT 345 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/asn1.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/asn1.h index e28efbbb718e2b..5129217b2e0977 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/asn1.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/asn1.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/asn1.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -21,6 +21,9 @@ # define HEADER_ASN1_H # endif +# ifndef OPENSSL_NO_STDIO +# include +# endif # include # include # include @@ -50,14 +53,14 @@ extern "C" { # define V_ASN1_PRIMITIVE_TAG 0x1f # define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG -# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ -# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ -# define V_ASN1_ANY -4/* used in ASN1 template code */ +# define V_ASN1_APP_CHOOSE -2 /* let the recipient choose */ +# define V_ASN1_OTHER -3 /* used in ASN1_TYPE */ +# define V_ASN1_ANY -4 /* used in ASN1 template code */ # define V_ASN1_UNDEF -1 /* ASN.1 tag values */ # define V_ASN1_EOC 0 -# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_BOOLEAN 1 # define V_ASN1_INTEGER 2 # define V_ASN1_BIT_STRING 3 # define V_ASN1_OCTET_STRING 4 @@ -70,19 +73,19 @@ extern "C" { # define V_ASN1_UTF8STRING 12 # define V_ASN1_SEQUENCE 16 # define V_ASN1_SET 17 -# define V_ASN1_NUMERICSTRING 18 /**/ +# define V_ASN1_NUMERICSTRING 18 # define V_ASN1_PRINTABLESTRING 19 # define V_ASN1_T61STRING 20 -# define V_ASN1_TELETEXSTRING 20/* alias */ -# define V_ASN1_VIDEOTEXSTRING 21 /**/ +# define V_ASN1_TELETEXSTRING 20 /* alias */ +# define V_ASN1_VIDEOTEXSTRING 21 # define V_ASN1_IA5STRING 22 # define V_ASN1_UTCTIME 23 -# define V_ASN1_GENERALIZEDTIME 24 /**/ -# define V_ASN1_GRAPHICSTRING 25 /**/ -# define V_ASN1_ISO64STRING 26 /**/ -# define V_ASN1_VISIBLESTRING 26/* alias */ -# define V_ASN1_GENERALSTRING 27 /**/ -# define V_ASN1_UNIVERSALSTRING 28 /**/ +# define V_ASN1_GENERALIZEDTIME 24 +# define V_ASN1_GRAPHICSTRING 25 +# define V_ASN1_ISO64STRING 26 +# define V_ASN1_VISIBLESTRING 26 /* alias */ +# define V_ASN1_GENERALSTRING 27 +# define V_ASN1_UNIVERSALSTRING 28 # define V_ASN1_BMPSTRING 30 /* @@ -155,7 +158,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) -# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +# define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */ /* * This indicates that the ASN1_STRING is not a real value but just a place * holder for the location where indefinite length constructed data should be @@ -275,7 +278,7 @@ typedef struct ASN1_TLC_st ASN1_TLC; /* This is just an opaque pointer */ typedef struct ASN1_VALUE_st ASN1_VALUE; -/* Declare ASN1 functions: the implement macro in in asn1t.h */ +/* Declare ASN1 functions: the implement macro is in asn1t.h */ /* * The mysterious 'extern' that's passed to some macros is innocuous, @@ -368,6 +371,7 @@ typedef struct ASN1_VALUE_st ASN1_VALUE; typedef void *d2i_of_void(void **, const unsigned char **, long); typedef int i2d_of_void(const void *, unsigned char **); +typedef int OSSL_i2d_of_void_ctx(const void *, unsigned char **, void *vctx); /*- * The following macros and typedefs allow an ASN1_ITEM @@ -996,6 +1000,8 @@ int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, unsigned char *data, int max_len); void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/bio.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/bio.h index d094af47b73f1c..be24d086a54013 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/bio.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/bio.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/bio.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -67,8 +67,13 @@ extern "C" { # define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) # endif # define BIO_TYPE_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_PAIR (26|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_MEM (27|BIO_TYPE_SOURCE_SINK) +/* Custom type starting index returned by BIO_get_new_index() */ #define BIO_TYPE_START 128 +/* Custom type maximum index that can be returned by BIO_get_new_index() */ +#define BIO_TYPE_MASK 0xFF /* * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. @@ -171,6 +176,31 @@ extern "C" { # define BIO_CTRL_SET_INDENT 80 # define BIO_CTRL_GET_INDENT 81 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +# define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +# define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +# define BIO_CTRL_DGRAM_GET_CAPS 86 +# define BIO_CTRL_DGRAM_SET_CAPS 87 +# define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +# define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +# define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +# define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +# define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 +# define BIO_CTRL_DGRAM_SET0_LOCAL_ADDR 94 + +# define BIO_DGRAM_CAP_NONE 0U +# define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +# define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +# define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +# define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + # ifndef OPENSSL_NO_KTLS # define BIO_get_ktls_send(b) \ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) @@ -208,7 +238,7 @@ extern "C" { # define BIO_FLAGS_NONCLEAR_RST 0x400 # define BIO_FLAGS_IN_EOF 0x800 -/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */ +/* the BIO FLAGS values 0x1000 to 0x8000 are reserved for internal KTLS flags */ typedef union bio_addr_st BIO_ADDR; typedef struct bio_addrinfo_st BIO_ADDRINFO; @@ -256,12 +286,14 @@ void BIO_clear_flags(BIO *b, int flags); # define BIO_RR_ACCEPT 0x03 /* These are passed by the BIO callback */ -# define BIO_CB_FREE 0x01 -# define BIO_CB_READ 0x02 -# define BIO_CB_WRITE 0x03 -# define BIO_CB_PUTS 0x04 -# define BIO_CB_GETS 0x05 -# define BIO_CB_CTRL 0x06 +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 +# define BIO_CB_RECVMMSG 0x07 +# define BIO_CB_SENDMMSG 0x08 /* * The callback is called before and after the underling operation, The @@ -362,6 +394,36 @@ struct bio_dgram_sctp_prinfo { }; # endif +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_TYPE_SSL 2 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + SSL *ssl; + } value; +} BIO_POLL_DESCRIPTOR; + /* * #define BIO_CONN_get_param_hostname BIO_ctrl */ @@ -428,10 +490,17 @@ struct bio_dgram_sctp_prinfo { # define BIO_C_SET_CONNECT_MODE 155 +# define BIO_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +# define BIO_C_SET_SOCK_TYPE 157 +# define BIO_C_GET_SOCK_TYPE 158 +# define BIO_C_GET_DGRAM_BIO 159 + # define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) # define BIO_get_app_data(s) BIO_get_ex_data(s,0) -# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_tfo(b,n) BIO_ctrl(b,BIO_C_SET_TFO,(n),NULL) # ifndef OPENSSL_NO_SOCK /* IP families we support, for BIO_s_connect() and BIO_s_accept() */ @@ -452,7 +521,11 @@ struct bio_dgram_sctp_prinfo { # define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) # define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) # define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_get_conn_mode(b) BIO_ctrl(b,BIO_C_GET_CONNECT,4,NULL) # define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) +# define BIO_set_sock_type(b,t) BIO_ctrl(b,BIO_C_SET_SOCK_TYPE,(t),NULL) +# define BIO_get_sock_type(b) BIO_ctrl(b,BIO_C_GET_SOCK_TYPE,0,NULL) +# define BIO_get0_dgram_bio(b, p) BIO_ctrl(b,BIO_C_GET_DGRAM_BIO,0,(void *)(BIO **)(p)) /* BIO_s_accept() */ # define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ @@ -469,6 +542,7 @@ struct bio_dgram_sctp_prinfo { (char *)(bio)) # define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) # define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) +# define BIO_set_tfo_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,5,(n)?(void *)"a":NULL) /* Aliases kept for backward compatibility */ # define BIO_BIND_NORMAL 0 @@ -596,8 +670,32 @@ int BIO_ctrl_reset_read_request(BIO *b); (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) # define BIO_dgram_set_peer(b,peer) \ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_detect_peer_addr(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) # define BIO_dgram_get_mtu_overhead(b) \ (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +# define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +# define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +# define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +# define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +# define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +# define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +# define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +# define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +# define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +# define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) +# define BIO_dgram_set0_local_addr(b, addr) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET0_LOCAL_ADDR, 0, (addr)) /* ctrl macros for BIO_f_prefix */ # define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) @@ -640,10 +738,18 @@ void BIO_vfree(BIO *a); int BIO_up_ref(BIO *a); int BIO_read(BIO *b, void *data, int dlen); int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); int BIO_gets(BIO *bp, char *buf, int size); int BIO_get_line(BIO *bio, char *buf, int size); int BIO_write(BIO *b, const void *data, int dlen); int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); int BIO_puts(BIO *bp, const char *buf); int BIO_indent(BIO *b, int indent, int max); long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); @@ -667,6 +773,9 @@ int BIO_nwrite0(BIO *bio, char **buf); int BIO_nwrite(BIO *bio, char **buf, int num); const BIO_METHOD *BIO_s_mem(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +# endif const BIO_METHOD *BIO_s_secmem(void); BIO *BIO_new_mem_buf(const void *buf, int len); # ifndef OPENSSL_NO_SOCK @@ -686,6 +795,7 @@ const BIO_METHOD *BIO_f_nbio_test(void); const BIO_METHOD *BIO_f_prefix(void); const BIO_METHOD *BIO_s_core(void); # ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_pair(void); const BIO_METHOD *BIO_s_datagram(void); int BIO_dgram_non_fatal_error(int error); BIO *BIO_new_dgram(int fd, int close_flag); @@ -704,6 +814,7 @@ int BIO_dgram_sctp_msg_waiting(BIO *b); # ifndef OPENSSL_NO_SOCK int BIO_sock_should_retry(int i); int BIO_sock_non_fatal_error(int error); +int BIO_err_is_non_fatal(unsigned int errcode); int BIO_socket_wait(int fd, int for_read, time_t max_time); # endif int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); @@ -726,6 +837,8 @@ int BIO_hex_string(BIO *out, int indent, int width, const void *data, # ifndef OPENSSL_NO_SOCK BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, const void *where, size_t wherelen, unsigned short port); void BIO_ADDR_free(BIO_ADDR *); @@ -788,6 +901,7 @@ int BIO_sock_info(int sock, # define BIO_SOCK_KEEPALIVE 0x04 # define BIO_SOCK_NONBLOCK 0x08 # define BIO_SOCK_NODELAY 0x10 +# define BIO_SOCK_TFO 0x20 int BIO_socket(int domain, int socktype, int protocol, int options); int BIO_connect(int sock, const BIO_ADDR *addr, int options); @@ -805,6 +919,11 @@ BIO *BIO_new_fd(int fd, int close_flag); int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, BIO **bio2, size_t writebuf2); +# ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +# endif + /* * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default @@ -849,38 +968,54 @@ ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); BIO_METHOD *BIO_meth_new(int type, const char *name); void BIO_meth_free(BIO_METHOD *biom); -int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int); -int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t, - size_t *); int BIO_meth_set_write(BIO_METHOD *biom, int (*write) (BIO *, const char *, int)); int BIO_meth_set_write_ex(BIO_METHOD *biom, int (*bwrite) (BIO *, const char *, size_t, size_t *)); -int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); -int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); +int BIO_meth_set_sendmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_read(BIO_METHOD *biom, int (*read) (BIO *, char *, int)); int BIO_meth_set_read_ex(BIO_METHOD *biom, int (*bread) (BIO *, char *, size_t, size_t *)); -int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +int BIO_meth_set_recvmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_puts(BIO_METHOD *biom, int (*puts) (BIO *, const char *)); -int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); int BIO_meth_set_gets(BIO_METHOD *biom, int (*ossl_gets) (BIO *, char *, int)); -long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); int BIO_meth_set_ctrl(BIO_METHOD *biom, long (*ctrl) (BIO *, int, long, void *)); -int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); -int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); -long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) - (BIO *, int, BIO_info_cb *); int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, long (*callback_ctrl) (BIO *, int, BIO_info_cb *)); - +# ifndef OPENSSL_NO_DEPRECATED_3_5 +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, + int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, + long, void *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) (BIO *, int, + BIO_info_cb *); +# endif # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/cmp.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/cmp.h index f0e768e01baacd..ded2dd2905f756 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/cmp.h.in * - * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -35,7 +35,9 @@ extern "C" { # endif -# define OSSL_CMP_PVNO 2 +# define OSSL_CMP_PVNO_2 2 +# define OSSL_CMP_PVNO_3 3 +# define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ /*- * PKIFailureInfo ::= BIT STRING { @@ -137,7 +139,6 @@ extern "C" { # if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX # error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int # endif - typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) @@ -203,8 +204,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_PKISTATUS_revocationWarning 4 # define OSSL_CMP_PKISTATUS_revocationNotification 5 # define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 - typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; + DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) # define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 @@ -274,6 +275,46 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) #define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) #define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) + +typedef struct ossl_cmp_crlstatus_st OSSL_CMP_CRLSTATUS; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS) +#define sk_OSSL_CMP_CRLSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_value(sk, idx) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CRLSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CRLSTATUS_new_null() ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CRLSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CRLSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CRLSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_delete(sk, i) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CRLSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_pop(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_shift(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CRLSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CRLSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CRLSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CRLSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CRLSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) + + +typedef OSSL_CRMF_ATTRIBUTETYPEANDVALUE OSSL_CMP_ATAV; +# define OSSL_CMP_ATAV_free OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free +typedef STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) OSSL_CMP_ATAVS; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_ATAVS) +# define stack_st_OSSL_CMP_ATAV stack_st_OSSL_CRMF_ATTRIBUTETYPEANDVALUE +# define sk_OSSL_CMP_ATAV_num sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num +# define sk_OSSL_CMP_ATAV_value sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value +# define sk_OSSL_CMP_ATAV_push sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push +# define sk_OSSL_CMP_ATAV_pop_free sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free + typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT; typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI; DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI) @@ -375,21 +416,75 @@ void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type, ASN1_TYPE *value); ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav); ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); -int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p, +int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **sk_p, OSSL_CMP_ITAV *itav); void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new0_certProfile(STACK_OF(ASN1_UTF8STRING) + *certProfile); +int OSSL_CMP_ITAV_get0_certProfile(const OSSL_CMP_ITAV *itav, + STACK_OF(ASN1_UTF8STRING) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_create(const X509_CRL *crl, + const X509 *cert, int only_DN); +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_new1(const DIST_POINT_NAME *dpn, + const GENERAL_NAMES *issuer, + const ASN1_TIME *thisUpdate); +int OSSL_CMP_CRLSTATUS_get0(const OSSL_CMP_CRLSTATUS *crlstatus, + DIST_POINT_NAME **dpn, GENERAL_NAMES **issuer, + ASN1_TIME **thisUpdate); +void OSSL_CMP_CRLSTATUS_free(OSSL_CMP_CRLSTATUS *crlstatus); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_crlStatusList(STACK_OF(OSSL_CMP_CRLSTATUS) *crlStatusList); +int OSSL_CMP_ITAV_get0_crlStatusList(const OSSL_CMP_ITAV *itav, + STACK_OF(OSSL_CMP_CRLSTATUS) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_crls(const X509_CRL *crls); +int OSSL_CMP_ITAV_get0_crls(const OSSL_CMP_ITAV *it, STACK_OF(X509_CRL) **out); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_certReqTemplate(OSSL_CRMF_CERTTEMPLATE *certTemplate, + OSSL_CMP_ATAVS *keySpec); +int OSSL_CMP_ITAV_get1_certReqTemplate(const OSSL_CMP_ITAV *itav, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +OSSL_CMP_ATAV *OSSL_CMP_ATAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ATAV_set0(OSSL_CMP_ATAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ATAV_get0_type(const OSSL_CMP_ATAV *itav); +ASN1_TYPE *OSSL_CMP_ATAV_get0_value(const OSSL_CMP_ATAV *itav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_algId(const X509_ALGOR *alg); +X509_ALGOR *OSSL_CMP_ATAV_get0_algId(const OSSL_CMP_ATAV *atav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_rsaKeyLen(int len); +int OSSL_CMP_ATAV_get_rsaKeyLen(const OSSL_CMP_ATAV *atav); +int OSSL_CMP_ATAV_push1(OSSL_CMP_ATAVS **sk_p, const OSSL_CMP_ATAV *atav); + void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); /* from cmp_ctx.c */ OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const OSSL_CMP_CTX *ctx); /* CMP general options: */ # define OSSL_CMP_OPT_LOG_VERBOSITY 0 /* CMP transfer options: */ -# define OSSL_CMP_OPT_KEEP_ALIVE 10 -# define OSSL_CMP_OPT_MSG_TIMEOUT 11 +# define OSSL_CMP_OPT_KEEP_ALIVE 10 +# define OSSL_CMP_OPT_MSG_TIMEOUT 11 # define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 +# define OSSL_CMP_OPT_USE_TLS 13 /* CMP request options: */ # define OSSL_CMP_OPT_VALIDITY_DAYS 20 # define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 @@ -407,6 +502,7 @@ int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); # define OSSL_CMP_OPT_DIGEST_ALGNID 34 # define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35 # define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36 +# define OSSL_CMP_OPT_NO_CACHE_EXTRACERTS 37 int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val); int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt); /* CMP-specific callback for logging and outputting the error queue: */ @@ -420,9 +516,11 @@ int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); +# ifndef OPENSSL_NO_HTTP int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); +# endif typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); @@ -432,7 +530,9 @@ void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); +# define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +# define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); /* client authentication: */ @@ -448,12 +548,15 @@ int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx, int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); int OSSL_CMP_CTX_reset_geninfo_ITAVs(OSSL_CMP_CTX *ctx); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_CTX_get0_geninfo_ITAVs(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, STACK_OF(X509) *extraCertsOut); /* certificate template: */ int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set1_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, const GENERAL_NAME *name); @@ -477,6 +580,7 @@ int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); # define OSSL_CMP_PKISI_BUFLEN 1024 +X509 *OSSL_CMP_CTX_get0_validatedSrvCert(const OSSL_CMP_CTX *ctx); X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); @@ -498,10 +602,13 @@ OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const OSSL_CMP_PKIHEADER *hdr); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_HDR_get0_geninfo_ITAVs(const OSSL_CMP_PKIHEADER *hdr); /* from cmp_msg.c */ OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg); +X509_PUBKEY *OSSL_CMP_MSG_get0_certreq_publickey(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_recipNonce(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid); @@ -517,8 +624,10 @@ int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, X509_STORE *trusted_store, X509 *cert); /* from cmp_http.c */ +# ifndef OPENSSL_NO_HTTP OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); +# endif /* from cmp_server.c */ typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; @@ -561,6 +670,13 @@ int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx, OSSL_CMP_SRV_error_cb_t process_error, OSSL_CMP_SRV_certConf_cb_t process_certConf, OSSL_CMP_SRV_pollReq_cb_t process_pollReq); +typedef int (*OSSL_CMP_SRV_delayed_delivery_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +typedef int (*OSSL_CMP_SRV_clean_transaction_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_SRV_CTX_init_trans(OSSL_CMP_SRV_CTX *srv_ctx, + OSSL_CMP_SRV_delayed_delivery_cb_t delay, + OSSL_CMP_SRV_clean_transaction_cb_t clean); OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx, @@ -577,6 +693,8 @@ X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type, # define OSSL_CMP_CR 2 # define OSSL_CMP_P10CR 4 # define OSSL_CMP_KUR 7 +# define OSSL_CMP_GENM 21 +# define OSSL_CMP_ERROR 23 # define OSSL_CMP_exec_IR_ses(ctx) \ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL) # define OSSL_CMP_exec_CR_ses(ctx) \ @@ -590,6 +708,18 @@ int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); +int OSSL_CMP_get1_crlUpdate(OSSL_CMP_CTX *ctx, const X509 *crlcert, + const X509_CRL *last_crl, + X509_CRL **crl); +int OSSL_CMP_get1_certReqTemplate(OSSL_CMP_CTX *ctx, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/cms.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/cms.h index 03ce6ab07aac44..1a51921256fea4 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/cms.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/cms.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/cms.h.in * - * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2008-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -31,8 +31,10 @@ extern "C" { # endif +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; typedef struct CMS_ContentInfo_st CMS_ContentInfo; typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; typedef struct CMS_CertificateChoices CMS_CertificateChoices; typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; @@ -147,10 +149,14 @@ SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, #define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) +DECLARE_ASN1_DUP_FUNCTION(CMS_EnvelopedData) + CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq); # define CMS_SIGNERINFO_ISSUER_SERIAL 0 @@ -190,6 +196,7 @@ CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq) # define CMS_ASCIICRLF 0x80000 # define CMS_CADES 0x100000 # define CMS_USE_ORIGINATOR_KEYID 0x200000 +# define CMS_NO_SIGNING_TIME 0x400000 const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms); @@ -217,13 +224,16 @@ int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, unsigned int flags); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, BIO *dcont, + unsigned int flags); CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, unsigned int flags); CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, @@ -233,27 +243,26 @@ CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, unsigned int flags); CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, const unsigned char *key, size_t keylen, BIO *dcont, BIO *out, unsigned int flags); - CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags); CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, @@ -272,7 +281,7 @@ CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags); CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, BIO *dcont, BIO *out, unsigned int flags); @@ -291,12 +300,16 @@ int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo * -CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx, +CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags); @@ -385,6 +398,11 @@ ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); int CMS_SignerInfo_sign(CMS_SignerInfo *si); int CMS_SignerInfo_verify(CMS_SignerInfo *si); int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, @@ -441,7 +459,7 @@ CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( unsigned char *id, int idlen, int allorfirst, STACK_OF(GENERAL_NAMES) *receiptList, STACK_OF(GENERAL_NAMES) *receiptsTo, - OSSL_LIB_CTX *ctx); + OSSL_LIB_CTX *libctx); int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/comp.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/comp.h new file mode 100644 index 00000000000000..90e39511fe8d28 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/comp.h @@ -0,0 +1,98 @@ +/* + * Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_COMP_H +# define OPENSSL_COMP_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_COMP_H +# endif + +# include + +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + + +# ifndef OPENSSL_NO_COMP + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX* comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); + +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); + +COMP_METHOD *COMP_zlib(void); +COMP_METHOD *COMP_zlib_oneshot(void); +COMP_METHOD *COMP_brotli(void); +COMP_METHOD *COMP_brotli_oneshot(void); +COMP_METHOD *COMP_zstd(void); +COMP_METHOD *COMP_zstd_oneshot(void); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define COMP_zlib_cleanup() while(0) continue +# endif + +# ifdef OPENSSL_BIO_H +const BIO_METHOD *BIO_f_zlib(void); +const BIO_METHOD *BIO_f_brotli(void); +const BIO_METHOD *BIO_f_zstd(void); +# endif + +# endif + +typedef struct ssl_comp_st SSL_COMP; + +SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) +#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) +#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) +#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) +#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) +#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) +#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) +#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) +#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) +#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) +#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) +#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) + + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/conf.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/conf.h index 994e573a957435..ffa9ced71e8b26 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/conf.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/conf.h @@ -27,6 +27,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -65,7 +68,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) #define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) #define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); -#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp))) +#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp)), lh_CONF_VALUE_hash_thunk, lh_CONF_VALUE_comp_thunk, lh_CONF_VALUE_doall_thunk, lh_CONF_VALUE_doall_arg_thunk)) #define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/configuration.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/configuration.h index 6a413341de2587..c3090e2efeff08 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/configuration.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/configuration.h @@ -29,7 +29,7 @@ extern "C" { # ifndef OPENSSL_SYS_WIN64A # define OPENSSL_SYS_WIN64A 1 # endif -# define OPENSSL_CONFIGURED_API 30000 +# define OPENSSL_CONFIGURED_API 30500 # ifndef OPENSSL_RAND_SEED_OS # define OPENSSL_RAND_SEED_OS # endif @@ -42,6 +42,12 @@ extern "C" { # ifndef OPENSSL_NO_ASAN # define OPENSSL_NO_ASAN # endif +# ifndef OPENSSL_NO_BROTLI +# define OPENSSL_NO_BROTLI +# endif +# ifndef OPENSSL_NO_BROTLI_DYNAMIC +# define OPENSSL_NO_BROTLI_DYNAMIC +# endif # ifndef OPENSSL_NO_COMP # define OPENSSL_NO_COMP # endif @@ -51,6 +57,9 @@ extern "C" { # ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # endif +# ifndef OPENSSL_NO_DEMOS +# define OPENSSL_NO_DEMOS +# endif # ifndef OPENSSL_NO_DEVCRYPTOENG # define OPENSSL_NO_DEVCRYPTOENG # endif @@ -63,12 +72,24 @@ extern "C" { # ifndef OPENSSL_NO_EXTERNAL_TESTS # define OPENSSL_NO_EXTERNAL_TESTS # endif +# ifndef OPENSSL_NO_FIPS_JITTER +# define OPENSSL_NO_FIPS_JITTER +# endif # ifndef OPENSSL_NO_FUZZ_AFL # define OPENSSL_NO_FUZZ_AFL # endif # ifndef OPENSSL_NO_FUZZ_LIBFUZZER # define OPENSSL_NO_FUZZ_LIBFUZZER # endif +# ifndef OPENSSL_NO_H3DEMO +# define OPENSSL_NO_H3DEMO +# endif +# ifndef OPENSSL_NO_HQINTEROP +# define OPENSSL_NO_HQINTEROP +# endif +# ifndef OPENSSL_NO_JITTER +# define OPENSSL_NO_JITTER +# endif # ifndef OPENSSL_NO_KTLS # define OPENSSL_NO_KTLS # endif @@ -81,6 +102,9 @@ extern "C" { # ifndef OPENSSL_NO_MSAN # define OPENSSL_NO_MSAN # endif +# ifndef OPENSSL_NO_PIE +# define OPENSSL_NO_PIE +# endif # ifndef OPENSSL_NO_RC5 # define OPENSSL_NO_RC5 # endif @@ -93,6 +117,12 @@ extern "C" { # ifndef OPENSSL_NO_SSL3_METHOD # define OPENSSL_NO_SSL3_METHOD # endif +# ifndef OPENSSL_NO_SSLKEYLOG +# define OPENSSL_NO_SSLKEYLOG +# endif +# ifndef OPENSSL_NO_TFO +# define OPENSSL_NO_TFO +# endif # ifndef OPENSSL_NO_TRACE # define OPENSSL_NO_TRACE # endif @@ -108,6 +138,18 @@ extern "C" { # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS # define OPENSSL_NO_WEAK_SSL_CIPHERS # endif +# ifndef OPENSSL_NO_ZLIB +# define OPENSSL_NO_ZLIB +# endif +# ifndef OPENSSL_NO_ZLIB_DYNAMIC +# define OPENSSL_NO_ZLIB_DYNAMIC +# endif +# ifndef OPENSSL_NO_ZSTD +# define OPENSSL_NO_ZSTD +# endif +# ifndef OPENSSL_NO_ZSTD_DYNAMIC +# define OPENSSL_NO_ZSTD_DYNAMIC +# endif # ifndef OPENSSL_NO_DYNAMIC_ENGINE # define OPENSSL_NO_DYNAMIC_ENGINE # endif @@ -129,6 +171,12 @@ extern "C" { # define RC4_INT unsigned int +# if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +# define OPENSSL_NO_COMP_ALG +# else +# undef OPENSSL_NO_COMP_ALG +# endif + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/core_names.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/core_names.h new file mode 100644 index 00000000000000..aaca6051c81b53 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/core_names.h @@ -0,0 +1,575 @@ +/* + * WARNING: do not edit! + * Generated by makefile from include/openssl/core_names.h.in + * + * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#ifndef OPENSSL_CORE_NAMES_H +# define OPENSSL_CORE_NAMES_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +/* OSSL_CIPHER_PARAM_CTS_MODE Values */ +# define OSSL_CIPHER_CTS_MODE_CS1 "CS1" +# define OSSL_CIPHER_CTS_MODE_CS2 "CS2" +# define OSSL_CIPHER_CTS_MODE_CS3 "CS3" + +/* Known CIPHER names (not a complete list) */ +# define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" + +/* Known DIGEST names (not a complete list) */ +# define OSSL_DIGEST_NAME_MD5 "MD5" +# define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" +# define OSSL_DIGEST_NAME_SHA1 "SHA1" +# define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" +# define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" +# define OSSL_DIGEST_NAME_SHA2_256_192 "SHA2-256/192" +# define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" +# define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" +# define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" +# define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" +# define OSSL_DIGEST_NAME_MD2 "MD2" +# define OSSL_DIGEST_NAME_MD4 "MD4" +# define OSSL_DIGEST_NAME_MDC2 "MDC2" +# define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" +# define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" +# define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" +# define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" +# define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" +# define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" +# define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" +# define OSSL_DIGEST_NAME_SM3 "SM3" + +/* Known MAC names */ +# define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" +# define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" +# define OSSL_MAC_NAME_CMAC "CMAC" +# define OSSL_MAC_NAME_GMAC "GMAC" +# define OSSL_MAC_NAME_HMAC "HMAC" +# define OSSL_MAC_NAME_KMAC128 "KMAC128" +# define OSSL_MAC_NAME_KMAC256 "KMAC256" +# define OSSL_MAC_NAME_POLY1305 "POLY1305" +# define OSSL_MAC_NAME_SIPHASH "SIPHASH" + +/* Known KDF names */ +# define OSSL_KDF_NAME_HKDF "HKDF" +# define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" +# define OSSL_KDF_NAME_PBKDF1 "PBKDF1" +# define OSSL_KDF_NAME_PBKDF2 "PBKDF2" +# define OSSL_KDF_NAME_SCRYPT "SCRYPT" +# define OSSL_KDF_NAME_SSHKDF "SSHKDF" +# define OSSL_KDF_NAME_SSKDF "SSKDF" +# define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" +# define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" +# define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" +# define OSSL_KDF_NAME_X963KDF "X963KDF" +# define OSSL_KDF_NAME_KBKDF "KBKDF" +# define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" +# define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" + +/* RSA padding modes */ +# define OSSL_PKEY_RSA_PAD_MODE_NONE "none" +# define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" +# define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" +# define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" +# define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" + +/* RSA pss padding salt length */ +# define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" + +/* OSSL_PKEY_PARAM_EC_ENCODING values */ +# define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" +# define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" + +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" + +# define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" + +/* PROV_SKEY well known key types */ +# define OSSL_SKEY_TYPE_GENERIC "GENERIC-SECRET" +# define OSSL_SKEY_TYPE_AES "AES" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" + +/* Provider configuration variables */ +#define OSSL_PKEY_RETAIN_SEED "pkey_retain_seed" + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +# define OSSL_ALG_PARAM_ALGORITHM_ID "algorithm-id" +# define OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS "algorithm-id-params" +# define OSSL_ALG_PARAM_CIPHER "cipher" +# define OSSL_ALG_PARAM_DIGEST "digest" +# define OSSL_ALG_PARAM_ENGINE "engine" +# define OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR "fips-indicator" +# define OSSL_ALG_PARAM_MAC "mac" +# define OSSL_ALG_PARAM_PROPERTIES "properties" +# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +# define OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props" +# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" +# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name" +# define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal" +# define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name" +# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid" +# define OSSL_CIPHER_PARAM_AEAD "aead" +# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +# define OSSL_CIPHER_PARAM_AEAD_IV_GENERATED "iv-generated" +# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" +# define OSSL_CIPHER_PARAM_AEAD_TAG "tag" +# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" +# define OSSL_CIPHER_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD "alg_id_param" +# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_CIPHER_PARAM_CTS "cts" +# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" +# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" +# define OSSL_CIPHER_PARAM_DECRYPT_ONLY "decrypt-only" +# define OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK "encrypt-check" +# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" +# define OSSL_CIPHER_PARAM_IV "iv" +# define OSSL_CIPHER_PARAM_IVLEN "ivlen" +# define OSSL_CIPHER_PARAM_KEYLEN "keylen" +# define OSSL_CIPHER_PARAM_MODE "mode" +# define OSSL_CIPHER_PARAM_NUM "num" +# define OSSL_CIPHER_PARAM_PADDING "padding" +# define OSSL_CIPHER_PARAM_PIPELINE_AEAD_TAG "pipeline-tag" +# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" +# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" +# define OSSL_CIPHER_PARAM_ROUNDS "rounds" +# define OSSL_CIPHER_PARAM_SPEED "speed" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag" +# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" +# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" +# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" +# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" +# define OSSL_CIPHER_PARAM_USE_BITS "use-bits" +# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard" +# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" +# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_DIGEST_PARAM_MICALG "micalg" +# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" +# define OSSL_DIGEST_PARAM_SIZE "size" +# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" +# define OSSL_DIGEST_PARAM_XOF "xof" +# define OSSL_DIGEST_PARAM_XOFLEN "xoflen" +# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +# define OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +# define OSSL_DRBG_PARAM_SIZE "size" +# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" +# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" +# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" +# define OSSL_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_EXCHANGE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" +# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" +# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" +# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" +# define OSSL_EXCHANGE_PARAM_PAD "pad" +# define OSSL_GEN_PARAM_ITERATION "iteration" +# define OSSL_GEN_PARAM_POTENTIAL "potential" +# define OSSL_KDF_PARAM_ARGON2_AD "ad" +# define OSSL_KDF_PARAM_ARGON2_LANES "lanes" +# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost" +# define OSSL_KDF_PARAM_ARGON2_VERSION "version" +# define OSSL_KDF_PARAM_CEK_ALG "cekalg" +# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_KDF_PARAM_CONSTANT "constant" +# define OSSL_KDF_PARAM_DATA "data" +# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean" +# define OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KDF_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_KDF_PARAM_FIPS_EMS_CHECK "ems_check" +# define OSSL_KDF_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy" +# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce" +# define OSSL_KDF_PARAM_INFO "info" +# define OSSL_KDF_PARAM_ITER "iter" +# define OSSL_KDF_PARAM_KBKDF_R "r" +# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" +# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" +# define OSSL_KDF_PARAM_KEY "key" +# define OSSL_KDF_PARAM_LABEL "label" +# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_KDF_PARAM_MAC_SIZE "maclen" +# define OSSL_KDF_PARAM_MODE "mode" +# define OSSL_KDF_PARAM_PASSWORD "pass" +# define OSSL_KDF_PARAM_PKCS12_ID "id" +# define OSSL_KDF_PARAM_PKCS5 "pkcs5" +# define OSSL_KDF_PARAM_PREFIX "prefix" +# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_KDF_PARAM_SALT "salt" +# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" +# define OSSL_KDF_PARAM_SCRYPT_N "n" +# define OSSL_KDF_PARAM_SCRYPT_P "p" +# define OSSL_KDF_PARAM_SCRYPT_R "r" +# define OSSL_KDF_PARAM_SECRET "secret" +# define OSSL_KDF_PARAM_SEED "seed" +# define OSSL_KDF_PARAM_SIZE "size" +# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" +# define OSSL_KDF_PARAM_SSHKDF_TYPE "type" +# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" +# define OSSL_KDF_PARAM_THREADS "threads" +# define OSSL_KDF_PARAM_UKM "ukm" +# define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info" +# define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info" +# define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info" +# define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo" +# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_KEM_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KEM_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KEM_PARAM_IKME "ikme" +# define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING "hs_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm" +# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len" +# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" +# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_MAC_PARAM_CUSTOM "custom" +# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" +# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" +# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" +# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" +# define OSSL_MAC_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_MAC_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_MAC_PARAM_FIPS_NO_SHORT_MAC OSSL_PROV_PARAM_NO_SHORT_MAC +# define OSSL_MAC_PARAM_IV "iv" +# define OSSL_MAC_PARAM_KEY "key" +# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_MAC_PARAM_SALT "salt" +# define OSSL_MAC_PARAM_SIZE "size" +# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" +# define OSSL_MAC_PARAM_XOF "xof" +# define OSSL_OBJECT_PARAM_DATA "data" +# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" +# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" +# define OSSL_OBJECT_PARAM_DESC "desc" +# define OSSL_OBJECT_PARAM_INPUT_TYPE "input-type" +# define OSSL_OBJECT_PARAM_REFERENCE "reference" +# define OSSL_OBJECT_PARAM_TYPE "type" +# define OSSL_PASSPHRASE_PARAM_INFO "info" +# define OSSL_PKEY_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_PKEY_PARAM_BITS "bits" +# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" +# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm" +# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" +# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +# define OSSL_PKEY_PARAM_DIST_ID "distid" +# define OSSL_PKEY_PARAM_EC_A "a" +# define OSSL_PKEY_PARAM_EC_B "b" +# define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3" +# define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp" +# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" +# define OSSL_PKEY_PARAM_EC_ENCODING "encoding" +# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +# define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_PARAM_EC_ORDER "order" +# define OSSL_PKEY_PARAM_EC_P "p" +# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +# define OSSL_PKEY_PARAM_EC_PUB_X "qx" +# define OSSL_PKEY_PARAM_EC_PUB_Y "qy" +# define OSSL_PKEY_PARAM_EC_SEED "seed" +# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE +# define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +# define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_FFC_G "g" +# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +# define OSSL_PKEY_PARAM_FFC_H "hindex" +# define OSSL_PKEY_PARAM_FFC_P "p" +# define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +# define OSSL_PKEY_PARAM_FFC_Q "q" +# define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +# define OSSL_PKEY_PARAM_FFC_SEED "seed" +# define OSSL_PKEY_PARAM_FFC_TYPE "type" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +# define OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK "digest-check" +# define OSSL_PKEY_PARAM_FIPS_KEY_CHECK "key-check" +# define OSSL_PKEY_PARAM_FIPS_SIGN_CHECK "sign-check" +# define OSSL_PKEY_PARAM_GROUP_NAME "group" +# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" +# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +# define OSSL_PKEY_PARAM_MAX_SIZE "max-size" +# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +# define OSSL_PKEY_PARAM_ML_DSA_INPUT_FORMATS "ml-dsa.input_formats" +# define OSSL_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS "ml-dsa.output_formats" +# define OSSL_PKEY_PARAM_ML_DSA_PREFER_SEED "ml-dsa.prefer_seed" +# define OSSL_PKEY_PARAM_ML_DSA_RETAIN_SEED "ml-dsa.retain_seed" +# define OSSL_PKEY_PARAM_ML_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE "ml-kem.import_pct_type" +# define OSSL_PKEY_PARAM_ML_KEM_INPUT_FORMATS "ml-kem.input_formats" +# define OSSL_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS "ml-kem.output_formats" +# define OSSL_PKEY_PARAM_ML_KEM_PREFER_SEED "ml-kem.prefer_seed" +# define OSSL_PKEY_PARAM_ML_KEM_RETAIN_SEED "ml-kem.retain_seed" +# define OSSL_PKEY_PARAM_ML_KEM_SEED "seed" +# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +# define OSSL_PKEY_PARAM_PRIV_KEY "priv" +# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_PUB_KEY "pub" +# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9" +# define OSSL_PKEY_PARAM_RSA_D "d" +# define OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ "rsa-derive-from-pq" +# define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_RSA_E "e" +# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1" +# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10" +# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2" +# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3" +# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4" +# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5" +# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6" +# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7" +# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8" +# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9" +# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1" +# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10" +# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2" +# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3" +# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4" +# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5" +# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6" +# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7" +# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8" +# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9" +# define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC +# define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_PKEY_PARAM_RSA_N "n" +# define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" +# define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1" +# define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2" +# define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1" +# define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2" +# define OSSL_PKEY_PARAM_RSA_TEST_XP "xp" +# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" +# define OSSL_PKEY_PARAM_SLH_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG +# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +# define OSSL_PROV_PARAM_BUILDINFO "buildinfo" +# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" +# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" +# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" +# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" +# define OSSL_PROV_PARAM_DSA_SIGN_DISABLED "dsa-sign-disabled" +# define OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK "ecdh-cofactor-check" +# define OSSL_PROV_PARAM_HKDF_DIGEST_CHECK "hkdf-digest-check" +# define OSSL_PROV_PARAM_HKDF_KEY_CHECK "hkdf-key-check" +# define OSSL_PROV_PARAM_HMAC_KEY_CHECK "hmac-key-check" +# define OSSL_PROV_PARAM_KBKDF_KEY_CHECK "kbkdf-key-check" +# define OSSL_PROV_PARAM_KMAC_KEY_CHECK "kmac-key-check" +# define OSSL_PROV_PARAM_NAME "name" +# define OSSL_PROV_PARAM_NO_SHORT_MAC "no-short-mac" +# define OSSL_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK "pbkdf2-lower-bound-check" +# define OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED "rsa-pkcs15-pad-disabled" +# define OSSL_PROV_PARAM_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED "rsa-sign-x931-pad-disabled" +# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" +# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" +# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" +# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" +# define OSSL_PROV_PARAM_SIGNATURE_DIGEST_CHECK "signature-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_DIGEST_CHECK "sshkdf-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_KEY_CHECK "sshkdf-key-check" +# define OSSL_PROV_PARAM_SSKDF_DIGEST_CHECK "sskdf-digest-check" +# define OSSL_PROV_PARAM_SSKDF_KEY_CHECK "sskdf-key-check" +# define OSSL_PROV_PARAM_STATUS "status" +# define OSSL_PROV_PARAM_TDES_ENCRYPT_DISABLED "tdes-encrypt-disabled" +# define OSSL_PROV_PARAM_TLS13_KDF_DIGEST_CHECK "tls13-kdf-digest-check" +# define OSSL_PROV_PARAM_TLS13_KDF_KEY_CHECK "tls13-kdf-key-check" +# define OSSL_PROV_PARAM_TLS1_PRF_DIGEST_CHECK "tls1-prf-digest-check" +# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" +# define OSSL_PROV_PARAM_TLS1_PRF_KEY_CHECK "tls1-prf-key-check" +# define OSSL_PROV_PARAM_VERSION "version" +# define OSSL_PROV_PARAM_X942KDF_KEY_CHECK "x942kdf-key-check" +# define OSSL_PROV_PARAM_X963KDF_DIGEST_CHECK "x963kdf-digest-check" +# define OSSL_PROV_PARAM_X963KDF_KEY_CHECK "x963kdf-key-check" +# define OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_RAND_PARAM_GENERATE "generate" +# define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +# define OSSL_RAND_PARAM_STATE "state" +# define OSSL_RAND_PARAM_STRENGTH "strength" +# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" +# define OSSL_SIGNATURE_PARAM_ADD_RANDOM "additional-random" +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID OSSL_PKEY_PARAM_ALGORITHM_ID +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string" +# define OSSL_SIGNATURE_PARAM_DETERMINISTIC "deterministic" +# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE +# define OSSL_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_SIGNATURE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_CHECK OSSL_PKEY_PARAM_FIPS_SIGN_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK "sign-x931-pad-check" +# define OSSL_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE "verify-message" +# define OSSL_SIGNATURE_PARAM_INSTANCE "instance" +# define OSSL_SIGNATURE_PARAM_KAT "kat" +# define OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING "message-encoding" +# define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_SIGNATURE_PARAM_MU "mu" +# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type" +# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +# define OSSL_SIGNATURE_PARAM_SIGNATURE "signature" +# define OSSL_SIGNATURE_PARAM_TEST_ENTROPY "test-entropy" +# define OSSL_SKEY_PARAM_KEY_LENGTH "key-length" +# define OSSL_SKEY_PARAM_RAW_BYTES "raw-bytes" +# define OSSL_STORE_PARAM_ALIAS "alias" +# define OSSL_STORE_PARAM_DIGEST "digest" +# define OSSL_STORE_PARAM_EXPECT "expect" +# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" +# define OSSL_STORE_PARAM_INPUT_TYPE "input-type" +# define OSSL_STORE_PARAM_ISSUER "name" +# define OSSL_STORE_PARAM_PROPERTIES "properties" +# define OSSL_STORE_PARAM_SERIAL "serial" +# define OSSL_STORE_PARAM_SUBJECT "subject" + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/crmf.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/crmf.h index 0419170bb99974..9b6f13fac240b2 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/crmf.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/crmf.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/crmf.h.in * - * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -26,6 +26,7 @@ # include # include # include /* for GENERAL_NAME etc. */ +# include /* explicit #includes not strictly needed since implied by the above: */ # include @@ -43,9 +44,12 @@ extern "C" { # define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 # define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 - typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) + +typedef struct ossl_crmf_encryptedkey_st OSSL_CRMF_ENCRYPTEDKEY; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDKEY) + typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) @@ -77,6 +81,36 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) #define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; +void OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(OSSL_CRMF_ATTRIBUTETYPEANDVALUE *v); +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value(sk, idx) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new(cmp) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_null() ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (n)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete(sk, i) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (i))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete_ptr(sk, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_shift(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk),ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), (idx)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set(sk, idx, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), pnum) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup(sk) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) + + typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER) typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY; @@ -118,6 +152,7 @@ typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO) typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTTEMPLATE) typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS) @@ -198,12 +233,14 @@ int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, int rid, int acceptRAVerified, OSSL_LIB_CTX *libctx, const char *propq); OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); -const ASN1_INTEGER -*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const ASN1_INTEGER +*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); X509_EXTENSIONS *OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME @@ -215,10 +252,24 @@ int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl, const X509_NAME *subject, const X509_NAME *issuer, const ASN1_INTEGER *serial); -X509 -*OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, - OSSL_LIB_CTX *libctx, const char *propq, - EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDKEY_get1_encCert(const OSSL_CRMF_ENCRYPTEDKEY *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, unsigned int flags); +unsigned char +*OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *enc, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, int *outlen); +EVP_PKEY *OSSL_CRMF_ENCRYPTEDKEY_get1_pkey(const OSSL_CRMF_ENCRYPTEDKEY *encryptedKey, + X509_STORE *ts, STACK_OF(X509) *extra, EVP_PKEY *pkey, + X509 *cert, ASN1_OCTET_STRING *secret, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSG_centralkeygen_requested(const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr); +# ifndef OPENSSL_NO_CMS +OSSL_CRMF_ENCRYPTEDKEY *OSSL_CRMF_ENCRYPTEDKEY_init_envdata(CMS_EnvelopedData *envdata); +# endif # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/crypto.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/crypto.h index 668c52cfee1f15..2a825986bf3a55 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/crypto.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/crypto.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/crypto.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -85,9 +85,15 @@ int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock); void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock); int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_add64(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_and(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, CRYPTO_RWLOCK *lock); int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, CRYPTO_RWLOCK *lock); /* No longer needed, so this is a no-op */ #define OPENSSL_malloc_init() while(0) continue @@ -96,6 +102,9 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_zalloc(num) \ CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_aligned_alloc(num, alignment, freeptr) \ + CRYPTO_aligned_alloc(num, alignment, freeptr, \ + OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_realloc(addr, num) \ CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_clear_realloc(addr, old_num, num) \ @@ -124,6 +133,7 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); size_t OPENSSL_strnlen(const char *str, size_t maxlen); +int OPENSSL_strtoul(const char *str, char **endptr, int base, unsigned long *num); int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength, const unsigned char *buf, size_t buflen, const char sep); @@ -160,6 +170,7 @@ const char *OpenSSL_version(int type); # define OPENSSL_FULL_VERSION_STRING 7 # define OPENSSL_MODULES_DIR 8 # define OPENSSL_CPU_INFO 9 +# define OPENSSL_WINCTX 10 const char *OPENSSL_info(int type); /* @@ -174,6 +185,7 @@ const char *OPENSSL_info(int type); # define OPENSSL_INFO_LIST_SEPARATOR 1006 # define OPENSSL_INFO_SEED_SOURCE 1007 # define OPENSSL_INFO_CPU_SETTINGS 1008 +# define OPENSSL_INFO_WINDOWS_CONTEXT 1009 int OPENSSL_issetugid(void); @@ -341,11 +353,14 @@ void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn, CRYPTO_realloc_fn *realloc_fn, CRYPTO_free_fn *free_fn); -void *CRYPTO_malloc(size_t num, const char *file, int line); -void *CRYPTO_zalloc(size_t num, const char *file, int line); -void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); -char *CRYPTO_strdup(const char *str, const char *file, int line); -char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc(size_t num, size_t align, + void **freeptr, const char *file, + int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strdup(const char *str, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); void CRYPTO_free(void *ptr, const char *file, int line); void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line); void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); @@ -354,8 +369,8 @@ void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, int CRYPTO_secure_malloc_init(size_t sz, size_t minsize); int CRYPTO_secure_malloc_done(void); -void *CRYPTO_secure_malloc(size_t num, const char *file, int line); -void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); void CRYPTO_secure_free(void *ptr, const char *file, int line); void CRYPTO_secure_clear_free(void *ptr, size_t num, const char *file, int line); @@ -376,6 +391,9 @@ void OPENSSL_cleanse(void *ptr, size_t len); # define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */ # define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */ +/* max allowed length for value of OPENSSL_MALLOC_FAILURES env var. */ +# define CRYPTO_MEM_CHECK_MAX_FS 256 + void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); # ifndef OPENSSL_NO_DEPRECATED_3_0 # define OPENSSL_mem_debug_push(info) \ @@ -551,6 +569,13 @@ int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file); void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); +int OSSL_LIB_CTX_get_conf_diagnostics(OSSL_LIB_CTX *ctx); +void OSSL_LIB_CTX_set_conf_diagnostics(OSSL_LIB_CTX *ctx, int value); + +void OSSL_sleep(uint64_t millis); + + +void *OSSL_LIB_CTX_get_data(OSSL_LIB_CTX *ctx, int index); # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/ct.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/ct.h index 15a276e33ff7ca..d29dbc78997c0b 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/ct.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/ct.h @@ -133,7 +133,7 @@ typedef enum { */ CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); - + /* * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library * context and property query string is used. diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/err.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/err.h index 2abf2483488181..daca18e7b757b0 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/err.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/err.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -372,7 +372,7 @@ typedef struct ERR_string_data_st { } ERR_STRING_DATA; DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); -#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp))) +#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp)), lh_ERR_STRING_DATA_hash_thunk, lh_ERR_STRING_DATA_comp_thunk, lh_ERR_STRING_DATA_doall_thunk, lh_ERR_STRING_DATA_doall_arg_thunk)) #define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) @@ -496,6 +496,14 @@ int ERR_get_next_error_library(void); int ERR_set_mark(void); int ERR_pop_to_mark(void); int ERR_clear_last_mark(void); +int ERR_count_to_mark(void); +int ERR_pop(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); #ifdef __cplusplus } diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/fipskey.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/fipskey.h index bf03682482fdd5..6939fd3c55ba6e 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/fipskey.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/fipskey.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/fipskey.h.in * - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -29,6 +29,11 @@ extern "C" { */ #define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" +/* + * The FIPS provider vendor name, as a string. + */ +#define FIPS_VENDOR "OpenSSL FIPS Provider" + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/lhash.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/lhash.h index 39dd6254acdeb6..62c55b20fd9716 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/lhash.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/lhash.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -24,6 +24,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -31,9 +34,13 @@ extern "C" { typedef struct lhash_node_st OPENSSL_LH_NODE; typedef int (*OPENSSL_LH_COMPFUNC) (const void *, const void *); +typedef int (*OPENSSL_LH_COMPFUNCTHUNK) (const void *, const void *, OPENSSL_LH_COMPFUNC cfn); typedef unsigned long (*OPENSSL_LH_HASHFUNC) (const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNCTHUNK) (const void *, OPENSSL_LH_HASHFUNC hfn); typedef void (*OPENSSL_LH_DOALL_FUNC) (void *); +typedef void (*OPENSSL_LH_DOALL_FUNC_THUNK) (void *, OPENSSL_LH_DOALL_FUNC doall); typedef void (*OPENSSL_LH_DOALL_FUNCARG) (void *, void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG_THUNK) (void *, void *, OPENSSL_LH_DOALL_FUNCARG doall); typedef struct lhash_st OPENSSL_LHASH; /* @@ -79,26 +86,40 @@ typedef struct lhash_st OPENSSL_LHASH; int OPENSSL_LH_error(OPENSSL_LHASH *lh); OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +OPENSSL_LHASH *OPENSSL_LH_set_thunks(OPENSSL_LHASH *lh, + OPENSSL_LH_HASHFUNCTHUNK hw, + OPENSSL_LH_COMPFUNCTHUNK cw, + OPENSSL_LH_DOALL_FUNC_THUNK daw, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw); void OPENSSL_LH_free(OPENSSL_LHASH *lh); void OPENSSL_LH_flush(OPENSSL_LHASH *lh); void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); -void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg_thunk(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw, + OPENSSL_LH_DOALL_FUNCARG fn, void *arg); + unsigned long OPENSSL_LH_strhash(const char *c); unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); # ifndef OPENSSL_NO_STDIO -void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# endif +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # endif -void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define _LHASH OPENSSL_LHASH @@ -129,110 +150,190 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); /* Helper macro for internal use */ # define DEFINE_LHASH_OF_INTERNAL(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ typedef void (*lh_##type##_doallfunc)(type *a); \ - static ossl_unused ossl_inline type *ossl_check_##type##_lh_plain_type(type *ptr) \ + static ossl_inline unsigned long lh_##type##_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static ossl_inline int lh_##type##_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_inline void lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_inline void lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline type *\ + ossl_check_##type##_lh_plain_type(type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const type *ossl_check_const_##type##_lh_plain_type(const type *ptr) \ + static ossl_unused ossl_inline const type * \ + ossl_check_const_##type##_lh_plain_type(const type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const OPENSSL_LHASH *ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline const OPENSSL_LHASH * \ + ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ { \ return (const OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LHASH *ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline OPENSSL_LHASH * \ + ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ { \ return (OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ + static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC \ + ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ { \ return (OPENSSL_LH_COMPFUNC)cmp; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ + static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC \ + ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ { \ return (OPENSSL_LH_HASHFUNC)hfn; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ + static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC \ + ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ { \ return (OPENSSL_LH_DOALL_FUNC)dfn; \ } \ LHASH_OF(type) -# define DEFINE_LHASH_OF(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ - static ossl_unused ossl_inline LHASH_OF(type) *lh_##type##_new(unsigned long (*hfn)(const type *), \ - int (*cfn)(const type *, const type *)) \ +# ifndef OPENSSL_NO_DEPRECATED_3_1 +# define DEFINE_LHASH_OF_DEPRECATED(type) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ - return (LHASH_OF(type) *) \ - OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ - static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } +# else +# define DEFINE_LHASH_OF_DEPRECATED(type) +# endif + +# define DEFINE_LHASH_OF_EX(type) \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ + static unsigned long \ + lh_##type##_hfn_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static int lh_##type##_cfn_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_free(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_flush(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_flush(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ { \ return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline int \ + lh_##type##_error(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_num_items(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_get_down_load(LHASH_OF(type) *lh) \ { \ - OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ { \ - OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ } \ - static ossl_unused ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ { \ - OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ { \ - return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ } \ - static ossl_unused ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall(LHASH_OF(type) *lh, void (*doall)(type *)) \ { \ - OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ - void (*doall)(type *)) \ + static ossl_unused ossl_inline LHASH_OF(type) * \ + lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ { \ - OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \ + lh_##type##_hfn_thunk, lh_##type##_cfn_thunk, \ + lh_##type##_doall_thunk, \ + lh_##type##_doall_arg_thunk); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall_arg(LHASH_OF(type) *lh, \ - void (*doallarg)(type *, void *), \ - void *arg) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg(LHASH_OF(type) *lh, \ + void (*doallarg)(type *, void *), void *arg) \ { \ OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ } \ LHASH_OF(type) +# define DEFINE_LHASH_OF(type) \ + DEFINE_LHASH_OF_EX(type); \ + DEFINE_LHASH_OF_DEPRECATED(type) \ + LHASH_OF(type) + #define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ int_implement_lhash_doall(type, argtype, const type) @@ -240,17 +341,26 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); int_implement_lhash_doall(type, argtype, type) #define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype##_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG fn) \ + { \ + void (*fn_conv)(cbargtype *, argtype *) = (void (*)(cbargtype *, argtype *))fn; \ + fn_conv((cbargtype *)node, (argtype *)arg); \ + } \ static ossl_unused ossl_inline void \ lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ void (*fn)(cbargtype *, argtype *), \ argtype *arg) \ { \ - OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNCARG)fn, (void *)arg); \ + OPENSSL_LH_doall_arg_thunk((OPENSSL_LHASH *)lh, \ + lh_##type##_doall_##argtype##_thunk, \ + (OPENSSL_LH_DOALL_FUNCARG)fn, \ + (void *)arg); \ } \ LHASH_OF(type) DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); -#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp)), lh_OPENSSL_STRING_hash_thunk, lh_OPENSSL_STRING_comp_thunk, lh_OPENSSL_STRING_doall_thunk, lh_OPENSSL_STRING_doall_arg_thunk)) #define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) @@ -265,7 +375,7 @@ DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); #define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) #define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); -#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp)), lh_OPENSSL_CSTRING_hash_thunk, lh_OPENSSL_CSTRING_comp_thunk, lh_OPENSSL_CSTRING_doall_thunk, lh_OPENSSL_CSTRING_doall_arg_thunk)) #define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/opensslv.h index 94f44daf376f8e..8f0439fc042ad0 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/opensslv.h @@ -28,8 +28,8 @@ extern "C" { * These macros express version number MAJOR.MINOR.PATCH exactly */ # define OPENSSL_VERSION_MAJOR 3 -# define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 17 +# define OPENSSL_VERSION_MINOR 5 +# define OPENSSL_VERSION_PATCH 2 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.17" -# define OPENSSL_FULL_VERSION_STR "3.0.17" +# define OPENSSL_VERSION_STR "3.5.2" +# define OPENSSL_FULL_VERSION_STR "3.5.2" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "1 Jul 2025" +# define OPENSSL_RELEASE_DATE "5 Aug 2025" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.17 1 Jul 2025" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.2 5 Aug 2025" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/pkcs12.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/pkcs12.h index 80369818c8ecdc..35d04f039366ce 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/pkcs12.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/pkcs12.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/pkcs12.h.in * - * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -41,6 +44,7 @@ extern "C" { # define PKCS12_MAC_KEY_LENGTH 20 +/* The macro is expected to be used only internally. Kept for backwards compatibility. */ # define PKCS12_SALT_LEN 8 /* It's not clear if these are actually needed... */ @@ -130,7 +134,9 @@ int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); const STACK_OF(PKCS12_SAFEBAG) * PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); @@ -218,6 +224,7 @@ ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); const STACK_OF(X509_ATTRIBUTE) * PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, const char *pass, int passlen, const unsigned char *in, int inlen, @@ -285,6 +292,9 @@ int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, unsigned char *salt, int saltlen, int iter, const EVP_MD *md_type); +int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type, const char *prf_md_name); int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, int saltlen, const EVP_MD *md_type); unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, @@ -305,6 +315,7 @@ DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) void PKCS12_PBE_add(void); int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype); @@ -312,6 +323,11 @@ PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype, OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/pkcs7.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/pkcs7.h index 0a95a93e59e262..641d9411a47354 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/pkcs7.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/pkcs7.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/pkcs7.h.in * - * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -28,6 +28,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -131,8 +134,8 @@ SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INF typedef struct pkcs7_signed_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; struct pkcs7_st *contents; } PKCS7_SIGNED; @@ -158,8 +161,8 @@ typedef struct pkcs7_enveloped_st { typedef struct pkcs7_signedandenveloped_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; PKCS7_ENC_CONTENT *enc_data; STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; @@ -200,7 +203,7 @@ typedef struct pkcs7_st { /* NID_pkcs7_data */ ASN1_OCTET_STRING *data; /* NID_pkcs7_signed */ - PKCS7_SIGNED *sign; + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ /* NID_pkcs7_enveloped */ PKCS7_ENVELOPE *enveloped; /* NID_pkcs7_signedAndEnveloped */ @@ -341,13 +344,13 @@ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, const EVP_MD *dgst); int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); -int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); -int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); int PKCS7_content_new(PKCS7 *p7, int nid); int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, - X509 *x509); + X509 *signer); BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/ssl.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/ssl.h index 7e9ca09bbf39f0..6396681867d76c 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/ssl.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/ssl.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/ssl.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -24,6 +24,7 @@ # endif # include +# include # include # include # include @@ -42,6 +43,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -231,10 +235,8 @@ typedef struct ssl_cipher_st SSL_CIPHER; typedef struct ssl_session_st SSL_SESSION; typedef struct tls_sigalgs_st TLS_SIGALGS; typedef struct ssl_conf_ctx_st SSL_CONF_CTX; -typedef struct ssl_comp_st SSL_COMP; STACK_OF(SSL_CIPHER); -STACK_OF(SSL_COMP); /* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ typedef struct srtp_protection_profile_st { @@ -278,28 +280,31 @@ typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, /* Extension context codes */ /* This extension is only allowed in TLS */ -#define SSL_EXT_TLS_ONLY 0x0001 +#define SSL_EXT_TLS_ONLY 0x00001 /* This extension is only allowed in DTLS */ -#define SSL_EXT_DTLS_ONLY 0x0002 +#define SSL_EXT_DTLS_ONLY 0x00002 /* Some extensions may be allowed in DTLS but we don't implement them for it */ -#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 /* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ -#define SSL_EXT_SSL3_ALLOWED 0x0008 +#define SSL_EXT_SSL3_ALLOWED 0x00008 /* Extension is only defined for TLS1.2 and below */ -#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 /* Extension is only defined for TLS1.3 and above */ -#define SSL_EXT_TLS1_3_ONLY 0x0020 +#define SSL_EXT_TLS1_3_ONLY 0x00020 /* Ignore this extension during parsing if we are resuming */ -#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 -#define SSL_EXT_CLIENT_HELLO 0x0080 +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 /* Really means TLS1.2 or below */ -#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 -#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 -#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 -#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 -#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 -#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 -#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 /* Typedefs for handling custom extensions */ @@ -404,7 +409,7 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); */ # define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_BIT(22) /* - * If set, a server will allow a client to issue a SSLv3.0 version + * If set, a server will allow a client to issue an SSLv3.0 version * number as latest version supported in the premaster secret, even when * TLSv1.0 (version 3.1) was announced in the client hello. Normally * this is forbidden to prevent version rollback attacks. @@ -430,6 +435,19 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); * interoperability with CryptoPro CSP 3.x */ # define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +# define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +# define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) + /* Enable KTLS TX zerocopy on Linux */ +# define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) + +#define SSL_OP_PREFER_NO_DHE_KEX SSL_OP_BIT(35) /* * Option "collections." @@ -574,6 +592,8 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); # define CERT_PKEY_CERT_TYPE 0x400 /* Cert chain suitable to Suite B */ # define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +# define CERT_PKEY_RPK 0x1000 # define SSL_CONF_FLAG_CMDLINE 0x1 # define SSL_CONF_FLAG_FILE 0x2 @@ -965,6 +985,7 @@ uint32_t SSL_get_recv_max_early_data(const SSL *s); # include /* This is mostly sslv3 with a few tweaks */ # include /* Datagram TLS */ # include /* Support for the use_srtp extension */ +# include #ifdef __cplusplus extern "C" { @@ -1000,32 +1021,6 @@ SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) #define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) #define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) #define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) -SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) -#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) -#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) -#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) -#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) -#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) -#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) -#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) -#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) -#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) -#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) -#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) /* compatibility */ @@ -1066,6 +1061,7 @@ typedef enum { DTLS_ST_CR_HELLO_VERIFY_REQUEST, TLS_ST_CR_SRVR_HELLO, TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, TLS_ST_CR_CERT_STATUS, TLS_ST_CR_KEY_EXCH, TLS_ST_CR_CERT_REQ, @@ -1075,6 +1071,7 @@ typedef enum { TLS_ST_CR_FINISHED, TLS_ST_CW_CLNT_HELLO, TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, TLS_ST_CW_KEY_EXCH, TLS_ST_CW_CERT_VRFY, TLS_ST_CW_CHANGE, @@ -1085,10 +1082,12 @@ typedef enum { DTLS_ST_SW_HELLO_VERIFY_REQUEST, TLS_ST_SW_SRVR_HELLO, TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, TLS_ST_SW_KEY_EXCH, TLS_ST_SW_CERT_REQ, TLS_ST_SW_SRVR_DONE, TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, TLS_ST_SR_KEY_EXCH, TLS_ST_SR_CERT_VRFY, TLS_ST_SR_NEXT_PROTO, @@ -1380,9 +1379,13 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_CTRL_GET_SIGNATURE_NID 132 # define SSL_CTRL_GET_TMP_KEY 133 # define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +# define SSL_CTRL_GET_IANA_GROUPS 135 # define SSL_CTRL_SET_RETRY_VERIFY 136 # define SSL_CTRL_GET_VERIFY_CERT_STORE 137 # define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +# define SSL_CTRL_GET0_IMPLEMENTED_GROUPS 139 +# define SSL_CTRL_GET_SIGNATURE_NAME 140 +# define SSL_CTRL_GET_PEER_SIGNATURE_NAME 141 # define SSL_CERT_SET_FIRST 1 # define SSL_CERT_SET_NEXT 2 # define SSL_CERT_SET_SERVER 3 @@ -1485,10 +1488,15 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get1_groups(s, glist) \ SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_IANA_GROUPS,0,(uint16_t **)(plst)) # define SSL_CTX_set1_groups(ctx, glist, glistlen) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) # define SSL_CTX_set1_groups_list(ctx, s) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s)) +# define SSL_CTX_get0_implemented_groups(ctx, all, out) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET0_IMPLEMENTED_GROUPS, all, \ + (STACK_OF(OPENSSL_CSTRING) *)(out)) # define SSL_set1_groups(s, glist, glistlen) \ SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist)) # define SSL_set1_groups_list(s, str) \ @@ -1520,8 +1528,12 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) (char *)(clist)) # define SSL_set1_client_certificate_types(s, clist, clistlen) \ SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist)) +# define SSL_get0_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn) +# define SSL_get0_peer_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_peer_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) # define SSL_get_peer_tmp_key(s, pk) \ @@ -1549,6 +1561,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get_max_proto_version(s) \ SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +const char *SSL_get0_group_name(SSL *s); const char *SSL_group_to_name(SSL *s, int id); /* Backwards compatibility, original 1.1.0 names */ @@ -1613,7 +1626,11 @@ void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); __owur int SSL_want(const SSL *s); __owur int SSL_clear(SSL *s); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()") void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); +#endif +void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm); __owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); __owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); @@ -1725,13 +1742,21 @@ __owur const char *SSL_state_string(const SSL *s); __owur const char *SSL_rstate_string(const SSL *s); __owur const char *SSL_state_string_long(const SSL *s); __owur const char *SSL_rstate_string_long(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_get_time_ex()") __owur long SSL_SESSION_get_time(const SSL_SESSION *s); +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_set_time_ex()") __owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +#endif __owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); __owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); __owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); __owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); +__owur time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s); +__owur time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t); + __owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); __owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, @@ -1783,6 +1808,9 @@ __owur int SSL_has_matching_session_id(const SSL *s, unsigned int id_len); SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); # ifdef OPENSSL_X509_H __owur X509 *SSL_get0_peer_certificate(const SSL *s); @@ -1840,6 +1868,8 @@ __owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, SSL *SSL_new(SSL_CTX *ctx); int SSL_up_ref(SSL *s); int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); __owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, unsigned int sid_ctx_len); @@ -1848,8 +1878,8 @@ __owur int SSL_set_purpose(SSL *ssl, int purpose); __owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); __owur int SSL_set_trust(SSL *ssl, int trust); -__owur int SSL_set1_host(SSL *s, const char *hostname); -__owur int SSL_add1_host(SSL *s, const char *hostname); +__owur int SSL_set1_host(SSL *s, const char *host); +__owur int SSL_add1_host(SSL *s, const char *host); __owur const char *SSL_get0_peername(SSL *s); void SSL_set_hostflags(SSL *s, unsigned int flags); @@ -1924,6 +1954,11 @@ OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg); void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, void *arg); +typedef int (*SSL_new_pending_conn_cb_fn) (SSL_CTX *ctx, SSL *new_ssl, + void *arg); +void SSL_CTX_set_new_pending_conn_cb(SSL_CTX *c, SSL_new_pending_conn_cb_fn cb, + void *arg); + int SSL_client_hello_isv2(SSL *s); unsigned int SSL_client_hello_get0_legacy_version(SSL *s); size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); @@ -1932,6 +1967,8 @@ size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); size_t SSL_client_hello_get0_compression_methods(SSL *s, const unsigned char **out); int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); int SSL_client_hello_get0_ext(SSL *s, unsigned int type, const unsigned char **out, size_t *outlen); @@ -1978,6 +2015,12 @@ long SSL_callback_ctrl(SSL *, int, void (*)(void)); long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); +# define SSL_WRITE_FLAG_CONCLUDE (1U << 0) + +__owur int SSL_write_ex2(SSL *s, const void *buf, size_t num, + uint64_t flags, + size_t *written); + # define SSL_EARLY_DATA_NOT_SENT 0 # define SSL_EARLY_DATA_REJECTED 1 # define SSL_EARLY_DATA_ACCEPTED 2 @@ -1986,6 +2029,7 @@ __owur int SSL_get_early_data_status(const SSL *s); __owur int SSL_get_error(const SSL *s, int ret_code); __owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); /* This sets the 'default' SSL version that SSL_new() will create */ # ifndef OPENSSL_NO_DEPRECATED_3_0 @@ -2281,6 +2325,8 @@ void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); +int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size, + size_t hs_block_size); int SSL_set_record_padding_callback(SSL *ssl, size_t (*cb) (SSL *ssl, int type, @@ -2288,12 +2334,255 @@ int SSL_set_record_padding_callback(SSL *ssl, void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); void *SSL_get_record_padding_callback_arg(const SSL *ssl); int SSL_set_block_padding(SSL *ssl, size_t block_size); - +int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size, + size_t hs_block_size); int SSL_set_num_tickets(SSL *s, size_t num_tickets); size_t SSL_get_num_tickets(const SSL *s); int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +__owur int SSL_is_listener(SSL *ssl); +__owur SSL *SSL_get0_listener(SSL *s); +#define SSL_LISTENER_FLAG_NO_VALIDATE (1UL << 1) +__owur SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags); +__owur SSL *SSL_new_listener_from(SSL *ssl, uint64_t flags); +__owur SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags); +#define SSL_ACCEPT_CONNECTION_NO_BLOCK (1UL << 0) +__owur SSL *SSL_accept_connection(SSL *ssl, uint64_t flags); +__owur size_t SSL_get_accept_connection_queue_len(SSL *ssl); +__owur int SSL_listen(SSL *ssl); + +__owur int SSL_is_domain(SSL *s); +__owur SSL *SSL_get0_domain(SSL *s); +__owur SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags); + +#define SSL_DOMAIN_FLAG_SINGLE_THREAD (1U << 0) +#define SSL_DOMAIN_FLAG_MULTI_THREAD (1U << 1) +#define SSL_DOMAIN_FLAG_THREAD_ASSISTED (1U << 2) +#define SSL_DOMAIN_FLAG_BLOCKING (1U << 3) +#define SSL_DOMAIN_FLAG_LEGACY_BLOCKING (1U << 4) + +__owur int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t domain_flags); +__owur int SSL_CTX_get_domain_flags(const SSL_CTX *ctx, uint64_t *domain_flags); +__owur int SSL_get_domain_flags(const SSL *ssl, uint64_t *domain_flags); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +# ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +# endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + +# define SSL_VALUE_CLASS_GENERIC 0 +# define SSL_VALUE_CLASS_FEATURE_REQUEST 1 +# define SSL_VALUE_CLASS_FEATURE_PEER_REQUEST 2 +# define SSL_VALUE_CLASS_FEATURE_NEGOTIATED 3 + +# define SSL_VALUE_NONE 0 +# define SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL 1 +# define SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL 2 +# define SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL 3 +# define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL 4 +# define SSL_VALUE_QUIC_IDLE_TIMEOUT 5 +# define SSL_VALUE_EVENT_HANDLING_MODE 6 +# define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7 +# define SSL_VALUE_STREAM_WRITE_BUF_USED 8 +# define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9 + +# define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0 +# define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1 +# define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT 2 + +int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v); +int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v); + +# define SSL_get_generic_value_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_set_generic_value_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_get_feature_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_set_feature_request_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_get_feature_peer_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, (id), (v)) +# define SSL_get_feature_negotiated_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_NEGOTIATED, (id), (v)) + +# define SSL_get_quic_stream_bidi_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_bidi_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, \ + (value)) + +# define SSL_get_event_handling_mode(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) +# define SSL_set_event_handling_mode(ssl, value) \ + SSL_set_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) + +# define SSL_get_stream_write_buf_size(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_SIZE, \ + (value)) +# define SSL_get_stream_write_buf_used(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_USED, \ + (value)) +# define SSL_get_stream_write_buf_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_AVAIL, \ + (value)) + +# define SSL_POLL_EVENT_NONE 0 + +# define SSL_POLL_EVENT_F (1U << 0) /* F (Failure) */ +# define SSL_POLL_EVENT_EL (1U << 1) /* EL (Exception on Listener) */ +# define SSL_POLL_EVENT_EC (1U << 2) /* EC (Exception on Conn) */ +# define SSL_POLL_EVENT_ECD (1U << 3) /* ECD (Exception on Conn Drained) */ +# define SSL_POLL_EVENT_ER (1U << 4) /* ER (Exception on Read) */ +# define SSL_POLL_EVENT_EW (1U << 5) /* EW (Exception on Write) */ +# define SSL_POLL_EVENT_R (1U << 6) /* R (Readable) */ +# define SSL_POLL_EVENT_W (1U << 7) /* W (Writable) */ +# define SSL_POLL_EVENT_IC (1U << 8) /* IC (Incoming Connection) */ +# define SSL_POLL_EVENT_ISB (1U << 9) /* ISB (Incoming Stream: Bidi) */ +# define SSL_POLL_EVENT_ISU (1U << 10) /* ISU (Incoming Stream: Uni) */ +# define SSL_POLL_EVENT_OSB (1U << 11) /* OSB (Outgoing Stream: Bidi) */ +# define SSL_POLL_EVENT_OSU (1U << 12) /* OSU (Outgoing Stream: Uni) */ + +# define SSL_POLL_EVENT_RW (SSL_POLL_EVENT_R | SSL_POLL_EVENT_W) +# define SSL_POLL_EVENT_RE (SSL_POLL_EVENT_R | SSL_POLL_EVENT_ER) +# define SSL_POLL_EVENT_WE (SSL_POLL_EVENT_W | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_RWE (SSL_POLL_EVENT_RE | SSL_POLL_EVENT_WE) +# define SSL_POLL_EVENT_E (SSL_POLL_EVENT_EL | SSL_POLL_EVENT_EC \ + | SSL_POLL_EVENT_ER | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_IS (SSL_POLL_EVENT_ISB | SSL_POLL_EVENT_ISU) +# define SSL_POLL_EVENT_ISE (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_EC) +# define SSL_POLL_EVENT_I (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_IC) +# define SSL_POLL_EVENT_OS (SSL_POLL_EVENT_OSB | SSL_POLL_EVENT_OSU) +# define SSL_POLL_EVENT_OSE (SSL_POLL_EVENT_OS | SSL_POLL_EVENT_EC) + +typedef struct ssl_poll_item_st { + BIO_POLL_DESCRIPTOR desc; + uint64_t events, revents; +} SSL_POLL_ITEM; + +# define SSL_POLL_FLAG_NO_HANDLE_EVENTS (1U << 0) + +__owur int SSL_poll(SSL_POLL_ITEM *items, + size_t num_items, + size_t stride, + const struct timeval *timeout, + uint64_t flags, + size_t *result_count); + +static ossl_inline ossl_unused BIO_POLL_DESCRIPTOR +SSL_as_poll_descriptor(SSL *s) +{ + BIO_POLL_DESCRIPTOR d; + + d.type = BIO_POLL_DESCRIPTOR_TYPE_SSL; + d.value.ssl = s; + return d; +} + # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define SSL_cache_hit(s) SSL_session_reused(s) # endif @@ -2593,6 +2882,51 @@ void SSL_set_allow_early_data_cb(SSL *s, const char *OSSL_default_cipher_list(void); const char *OSSL_default_ciphersuites(void); +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + +/* + * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used. + */ +# define OSSL_RECORD_PROTECTION_LEVEL_NONE 0 +# define OSSL_RECORD_PROTECTION_LEVEL_EARLY 1 +# define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE 2 +# define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3 + +int SSL_set_quic_tls_cbs(SSL *s, const OSSL_DISPATCH *qtdis, void *arg); +int SSL_set_quic_tls_transport_params(SSL *s, + const unsigned char *params, + size_t params_len); + +int SSL_set_quic_tls_early_data_enabled(SSL *s, int enabled); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/x509.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/x509.h index 0f2353c821aa9b..5e9c548c48d65b 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/x509.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/x509.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/x509.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -40,6 +40,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -162,16 +165,24 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) # define X509_FILETYPE_ASN1 2 # define X509_FILETYPE_DEFAULT 3 -# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 -# define X509v3_KU_NON_REPUDIATION 0x0040 -# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 -# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 -# define X509v3_KU_KEY_AGREEMENT 0x0008 -# define X509v3_KU_KEY_CERT_SIGN 0x0004 -# define X509v3_KU_CRL_SIGN 0x0002 -# define X509v3_KU_ENCIPHER_ONLY 0x0001 -# define X509v3_KU_DECIPHER_ONLY 0x8000 -# define X509v3_KU_UNDEF 0xffff +/*- + * : + * The KeyUsage BITSTRING is treated as a little-endian integer, hence bit `0` + * is 0x80, while bit `7` is 0x01 (the LSB of the integer value), bit `8` is + * then the MSB of the second octet, or 0x8000. + */ +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 /* (0) */ +# define X509v3_KU_NON_REPUDIATION 0x0040 /* (1) */ +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 /* (2) */ +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 /* (3) */ +# define X509v3_KU_KEY_AGREEMENT 0x0008 /* (4) */ +# define X509v3_KU_KEY_CERT_SIGN 0x0004 /* (5) */ +# define X509v3_KU_CRL_SIGN 0x0002 /* (6) */ +# define X509v3_KU_ENCIPHER_ONLY 0x0001 /* (7) */ +# define X509v3_KU_DECIPHER_ONLY 0x8000 /* (8) */ +# ifndef OPENSSL_NO_DEPRECATED_3_4 +# define X509v3_KU_UNDEF 0xffff /* vestigial, not used */ +# endif struct X509_algor_st { ASN1_OBJECT *algorithm; @@ -462,7 +473,12 @@ typedef struct PBKDF2PARAM_st { X509_ALGOR *prf; } PBKDF2PARAM; -#ifndef OPENSSL_NO_SCRYPT +typedef struct { + X509_ALGOR *keyDerivationFunc; + X509_ALGOR *messageAuthScheme; +} PBMAC1PARAM; + +# ifndef OPENSSL_NO_SCRYPT typedef struct SCRYPT_PARAMS_st { ASN1_OCTET_STRING *salt; ASN1_INTEGER *costParameter; @@ -470,7 +486,7 @@ typedef struct SCRYPT_PARAMS_st { ASN1_INTEGER *parallelizationParameter; ASN1_INTEGER *keyLength; } SCRYPT_PARAMS; -#endif +# endif #ifdef __cplusplus } @@ -603,6 +619,8 @@ EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); # endif @@ -651,6 +669,8 @@ EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); DECLARE_ASN1_DUP_FUNCTION(X509) @@ -884,12 +904,12 @@ int X509_REQ_get_signature_nid(const X509_REQ *req); int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); -EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); int X509_REQ_extension_nid(int nid); int *X509_REQ_get_extension_nids(void); void X509_REQ_set_extension_nids(int *nids); -STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(OSSL_FUTURE_CONST X509_REQ *req); int X509_REQ_add_extensions_nid(X509_REQ *req, const STACK_OF(X509_EXTENSION) *exts, int nid); int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); @@ -950,13 +970,14 @@ X509_REVOKED_get0_extensions(const X509_REVOKED *r); X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); -int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); -int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey); +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); int X509_chain_check_suiteb(int *perror_depth, X509 *x, STACK_OF(X509) *chain, unsigned long flags); int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); @@ -1077,6 +1098,8 @@ X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, X509_EXTENSION *ex, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_extensions(STACK_OF(X509_EXTENSION) **target, + const STACK_OF(X509_EXTENSION) *exts); int X509_get_ext_count(const X509 *x); int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); @@ -1198,9 +1221,10 @@ X509 *X509_find_by_subject(STACK_OF(X509) *sk, const X509_NAME *name); DECLARE_ASN1_FUNCTIONS(PBEPARAM) DECLARE_ASN1_FUNCTIONS(PBE2PARAM) DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) -#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(PBMAC1PARAM) +# ifndef OPENSSL_NO_SCRYPT DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) -#endif +# endif int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, const unsigned char *salt, int saltlen); @@ -1237,6 +1261,7 @@ X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, int prf_nid, int keylen, OSSL_LIB_CTX *libctx); +PBKDF2PARAM *PBMAC1_get1_pbkdf2_param(const X509_ALGOR *macalg); /* PKCS#8 utilities */ DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) @@ -1262,6 +1287,8 @@ int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len); +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, int ptype, void *pval, unsigned char *penc, int penclen); diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/x509_acert.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/x509_acert.h new file mode 100644 index 00000000000000..efae82c8f6b635 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/x509_acert.h @@ -0,0 +1,294 @@ +/* + * WARNING: do not edit! + * Generated by makefile from include/openssl/x509_acert.h.in + * + * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_X509_ACERT_H +# define OPENSSL_X509_ACERT_H +# pragma once + +# include +# include +# include + +typedef struct X509_acert_st X509_ACERT; +typedef struct X509_acert_info_st X509_ACERT_INFO; +typedef struct ossl_object_digest_info_st OSSL_OBJECT_DIGEST_INFO; +typedef struct ossl_issuer_serial_st OSSL_ISSUER_SERIAL; +typedef struct X509_acert_issuer_v2form_st X509_ACERT_ISSUER_V2FORM; + +DECLARE_ASN1_FUNCTIONS(X509_ACERT) +DECLARE_ASN1_DUP_FUNCTION(X509_ACERT) +DECLARE_ASN1_ITEM(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_OBJECT_DIGEST_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_ISSUER_SERIAL) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_ISSUER_V2FORM) + +# ifndef OPENSSL_NO_STDIO +X509_ACERT *d2i_X509_ACERT_fp(FILE *fp, X509_ACERT **acert); +int i2d_X509_ACERT_fp(FILE *fp, const X509_ACERT *acert); +# endif + +DECLARE_PEM_rw(X509_ACERT, X509_ACERT) + +X509_ACERT *d2i_X509_ACERT_bio(BIO *bp, X509_ACERT **acert); +int i2d_X509_ACERT_bio(BIO *bp, const X509_ACERT *acert); + +int X509_ACERT_sign(X509_ACERT *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_ACERT_sign_ctx(X509_ACERT *x, EVP_MD_CTX *ctx); +int X509_ACERT_verify(X509_ACERT *a, EVP_PKEY *r); + +# define X509_ACERT_VERSION_2 1 + +const GENERAL_NAMES *X509_ACERT_get0_holder_entityName(const X509_ACERT *x); +const OSSL_ISSUER_SERIAL *X509_ACERT_get0_holder_baseCertId(const X509_ACERT *x); +const OSSL_OBJECT_DIGEST_INFO * X509_ACERT_get0_holder_digest(const X509_ACERT *x); +const X509_NAME *X509_ACERT_get0_issuerName(const X509_ACERT *x); +long X509_ACERT_get_version(const X509_ACERT *x); +void X509_ACERT_get0_signature(const X509_ACERT *x, + const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_ACERT_get_signature_nid(const X509_ACERT *x); +const X509_ALGOR *X509_ACERT_get0_info_sigalg(const X509_ACERT *x); +const ASN1_INTEGER *X509_ACERT_get0_serialNumber(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notBefore(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notAfter(const X509_ACERT *x); +const ASN1_BIT_STRING *X509_ACERT_get0_issuerUID(const X509_ACERT *x); + +int X509_ACERT_print(BIO *bp, X509_ACERT *x); +int X509_ACERT_print_ex(BIO *bp, X509_ACERT *x, unsigned long nmflags, + unsigned long cflag); + +int X509_ACERT_get_attr_count(const X509_ACERT *x); +int X509_ACERT_get_attr_by_NID(const X509_ACERT *x, int nid, int lastpos); +int X509_ACERT_get_attr_by_OBJ(const X509_ACERT *x, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_ACERT_get_attr(const X509_ACERT *x, int loc); +X509_ATTRIBUTE *X509_ACERT_delete_attr(X509_ACERT *x, int loc); + +void *X509_ACERT_get_ext_d2i(const X509_ACERT *x, int nid, int *crit, int *idx); +int X509_ACERT_add1_ext_i2d(X509_ACERT *x, int nid, void *value, int crit, + unsigned long flags); +const STACK_OF(X509_EXTENSION) *X509_ACERT_get0_extensions(const X509_ACERT *x); + +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY 0 +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY_CERT 1 +# define OSSL_OBJECT_DIGEST_INFO_OTHER 2 /* must not be used in RFC 5755 profile */ +int X509_ACERT_set_version(X509_ACERT *x, long version); +void X509_ACERT_set0_holder_entityName(X509_ACERT *x, GENERAL_NAMES *name); +void X509_ACERT_set0_holder_baseCertId(X509_ACERT *x, OSSL_ISSUER_SERIAL *isss); +void X509_ACERT_set0_holder_digest(X509_ACERT *x, + OSSL_OBJECT_DIGEST_INFO *dinfo); + +int X509_ACERT_add1_attr(X509_ACERT *x, X509_ATTRIBUTE *attr); +int X509_ACERT_add1_attr_by_OBJ(X509_ACERT *x, const ASN1_OBJECT *obj, + int type, const void *bytes, int len); +int X509_ACERT_add1_attr_by_NID(X509_ACERT *x, int nid, int type, + const void *bytes, int len); +int X509_ACERT_add1_attr_by_txt(X509_ACERT *x, const char *attrname, int type, + const unsigned char *bytes, int len); +int X509_ACERT_add_attr_nconf(CONF *conf, const char *section, + X509_ACERT *acert); + +int X509_ACERT_set1_issuerName(X509_ACERT *x, const X509_NAME *name); +int X509_ACERT_set1_serialNumber(X509_ACERT *x, const ASN1_INTEGER *serial); +int X509_ACERT_set1_notBefore(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); +int X509_ACERT_set1_notAfter(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); + +void OSSL_OBJECT_DIGEST_INFO_get0_digest(const OSSL_OBJECT_DIGEST_INFO *o, + int *digestedObjectType, + const X509_ALGOR **digestAlgorithm, + const ASN1_BIT_STRING **digest); + +int OSSL_OBJECT_DIGEST_INFO_set1_digest(OSSL_OBJECT_DIGEST_INFO *o, + int digestedObjectType, + X509_ALGOR *digestAlgorithm, + ASN1_BIT_STRING *digest); + +const X509_NAME *OSSL_ISSUER_SERIAL_get0_issuer(const OSSL_ISSUER_SERIAL *isss); +const ASN1_INTEGER *OSSL_ISSUER_SERIAL_get0_serial(const OSSL_ISSUER_SERIAL *isss); +const ASN1_BIT_STRING *OSSL_ISSUER_SERIAL_get0_issuerUID(const OSSL_ISSUER_SERIAL *isss); + +int OSSL_ISSUER_SERIAL_set1_issuer(OSSL_ISSUER_SERIAL *isss, + const X509_NAME *issuer); +int OSSL_ISSUER_SERIAL_set1_serial(OSSL_ISSUER_SERIAL *isss, + const ASN1_INTEGER *serial); +int OSSL_ISSUER_SERIAL_set1_issuerUID(OSSL_ISSUER_SERIAL *isss, + const ASN1_BIT_STRING *uid); + +# define OSSL_IETFAS_OCTETS 0 +# define OSSL_IETFAS_OID 1 +# define OSSL_IETFAS_STRING 2 + +typedef struct OSSL_IETF_ATTR_SYNTAX_VALUE_st OSSL_IETF_ATTR_SYNTAX_VALUE; +typedef struct OSSL_IETF_ATTR_SYNTAX_st OSSL_IETF_ATTR_SYNTAX; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_value(sk, idx) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new(cmp) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_null() ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (n)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete(sk, i) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (i))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete_ptr(sk, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_pop(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_shift(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_shift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk),ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), (idx)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set(sk, idx, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_set(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), pnum) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_dup(sk) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_copyfunc_type(copyfunc), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set_cmp_func(sk, cmp) ((sk_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) + + +DECLARE_ASN1_ITEM(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX) + +const GENERAL_NAMES * +OSSL_IETF_ATTR_SYNTAX_get0_policyAuthority(const OSSL_IETF_ATTR_SYNTAX *a); +void OSSL_IETF_ATTR_SYNTAX_set0_policyAuthority(OSSL_IETF_ATTR_SYNTAX *a, + GENERAL_NAMES *names); + +int OSSL_IETF_ATTR_SYNTAX_get_value_num(const OSSL_IETF_ATTR_SYNTAX *a); +void *OSSL_IETF_ATTR_SYNTAX_get0_value(const OSSL_IETF_ATTR_SYNTAX *a, + int ind, int *type); +int OSSL_IETF_ATTR_SYNTAX_add1_value(OSSL_IETF_ATTR_SYNTAX *a, int type, + void *data); +int OSSL_IETF_ATTR_SYNTAX_print(BIO *bp, OSSL_IETF_ATTR_SYNTAX *a, int indent); + +struct TARGET_CERT_st { + OSSL_ISSUER_SERIAL *targetCertificate; + GENERAL_NAME *targetName; + OSSL_OBJECT_DIGEST_INFO *certDigestInfo; +}; + +typedef struct TARGET_CERT_st OSSL_TARGET_CERT; + +# define OSSL_TGT_TARGET_NAME 0 +# define OSSL_TGT_TARGET_GROUP 1 +# define OSSL_TGT_TARGET_CERT 2 + +typedef struct TARGET_st { + int type; + union { + GENERAL_NAME *targetName; + GENERAL_NAME *targetGroup; + OSSL_TARGET_CERT *targetCert; + } choice; +} OSSL_TARGET; + +typedef STACK_OF(OSSL_TARGET) OSSL_TARGETS; +typedef STACK_OF(OSSL_TARGETS) OSSL_TARGETING_INFORMATION; + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGET, OSSL_TARGET, OSSL_TARGET) +#define sk_OSSL_TARGET_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_value(sk, idx) ((OSSL_TARGET *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGET_sk_type(sk), (idx))) +#define sk_OSSL_TARGET_new(cmp) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new(ossl_check_OSSL_TARGET_compfunc_type(cmp))) +#define sk_OSSL_TARGET_new_null() ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGET_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGET_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGET_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGET_sk_type(sk), (n)) +#define sk_OSSL_TARGET_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_delete(sk, i) ((OSSL_TARGET *)OPENSSL_sk_delete(ossl_check_OSSL_TARGET_sk_type(sk), (i))) +#define sk_OSSL_TARGET_delete_ptr(sk, ptr) ((OSSL_TARGET *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_pop(sk) ((OSSL_TARGET *)OPENSSL_sk_pop(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_shift(sk) ((OSSL_TARGET *)OPENSSL_sk_shift(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGET_sk_type(sk),ossl_check_OSSL_TARGET_freefunc_type(freefunc)) +#define sk_OSSL_TARGET_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), (idx)) +#define sk_OSSL_TARGET_set(sk, idx, ptr) ((OSSL_TARGET *)OPENSSL_sk_set(ossl_check_OSSL_TARGET_sk_type(sk), (idx), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), pnum) +#define sk_OSSL_TARGET_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_dup(sk) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_copyfunc_type(copyfunc), ossl_check_OSSL_TARGET_freefunc_type(freefunc))) +#define sk_OSSL_TARGET_set_cmp_func(sk, cmp) ((sk_OSSL_TARGET_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGETS, OSSL_TARGETS, OSSL_TARGETS) +#define sk_OSSL_TARGETS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_value(sk, idx) ((OSSL_TARGETS *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGETS_sk_type(sk), (idx))) +#define sk_OSSL_TARGETS_new(cmp) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new(ossl_check_OSSL_TARGETS_compfunc_type(cmp))) +#define sk_OSSL_TARGETS_new_null() ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGETS_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGETS_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGETS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGETS_sk_type(sk), (n)) +#define sk_OSSL_TARGETS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_delete(sk, i) ((OSSL_TARGETS *)OPENSSL_sk_delete(ossl_check_OSSL_TARGETS_sk_type(sk), (i))) +#define sk_OSSL_TARGETS_delete_ptr(sk, ptr) ((OSSL_TARGETS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_pop(sk) ((OSSL_TARGETS *)OPENSSL_sk_pop(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_shift(sk) ((OSSL_TARGETS *)OPENSSL_sk_shift(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGETS_sk_type(sk),ossl_check_OSSL_TARGETS_freefunc_type(freefunc)) +#define sk_OSSL_TARGETS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), (idx)) +#define sk_OSSL_TARGETS_set(sk, idx, ptr) ((OSSL_TARGETS *)OPENSSL_sk_set(ossl_check_OSSL_TARGETS_sk_type(sk), (idx), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), pnum) +#define sk_OSSL_TARGETS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_dup(sk) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_copyfunc_type(copyfunc), ossl_check_OSSL_TARGETS_freefunc_type(freefunc))) +#define sk_OSSL_TARGETS_set_cmp_func(sk, cmp) ((sk_OSSL_TARGETS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_compfunc_type(cmp))) + + +DECLARE_ASN1_FUNCTIONS(OSSL_TARGET) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETS) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETING_INFORMATION) + +typedef STACK_OF(OSSL_ISSUER_SERIAL) OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL) +#define sk_OSSL_ISSUER_SERIAL_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_value(sk, idx) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_value(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), (idx))) +#define sk_OSSL_ISSUER_SERIAL_new(cmp) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) +#define sk_OSSL_ISSUER_SERIAL_new_null() ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ISSUER_SERIAL_new_reserve(cmp, n) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp), (n))) +#define sk_OSSL_ISSUER_SERIAL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (n)) +#define sk_OSSL_ISSUER_SERIAL_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_delete(sk, i) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (i))) +#define sk_OSSL_ISSUER_SERIAL_delete_ptr(sk, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_pop(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_pop(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_shift(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_shift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk),ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc)) +#define sk_OSSL_ISSUER_SERIAL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), (idx)) +#define sk_OSSL_ISSUER_SERIAL_set(sk, idx, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_set(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (idx), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), pnum) +#define sk_OSSL_ISSUER_SERIAL_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_dup(sk) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_copyfunc_type(copyfunc), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc))) +#define sk_OSSL_ISSUER_SERIAL_set_cmp_func(sk, cmp) ((sk_OSSL_ISSUER_SERIAL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) + + +#endif diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/x509_vfy.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/x509_vfy.h index f571187265cfc9..f08a134b17b7db 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/x509_vfy.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/x509_vfy.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/x509_vfy.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -411,6 +411,7 @@ X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ # define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 # define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 # define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +# define X509_V_ERR_RPK_UNTRUSTED 95 /* Certificate verify flags */ # ifndef OPENSSL_NO_DEPRECATED_1_1_0 @@ -491,71 +492,72 @@ int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); X509_STORE *X509_STORE_new(void); -void X509_STORE_free(X509_STORE *v); -int X509_STORE_lock(X509_STORE *ctx); -int X509_STORE_unlock(X509_STORE *ctx); -int X509_STORE_up_ref(X509_STORE *v); -STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *v); -STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *st); -STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get1_objects(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, const X509_NAME *nm); STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, const X509_NAME *nm); -int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); -int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); -int X509_STORE_set_trust(X509_STORE *ctx, int trust); -int X509_STORE_set1_param(X509_STORE *ctx, const X509_VERIFY_PARAM *pm); -X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *ctx); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); -void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); #define X509_STORE_set_verify_func(ctx, func) \ X509_STORE_set_verify((ctx),(func)) void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, X509_STORE_CTX_verify_fn verify); -X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *ctx); -void X509_STORE_set_verify_cb(X509_STORE *ctx, +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, X509_STORE_CTX_verify_cb verify_cb); # define X509_STORE_set_verify_cb_func(ctx,func) \ X509_STORE_set_verify_cb((ctx),(func)) -X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *ctx); -void X509_STORE_set_get_issuer(X509_STORE *ctx, +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, X509_STORE_CTX_get_issuer_fn get_issuer); -X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *ctx); -void X509_STORE_set_check_issued(X509_STORE *ctx, +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, X509_STORE_CTX_check_issued_fn check_issued); -X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *ctx); -void X509_STORE_set_check_revocation(X509_STORE *ctx, +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, X509_STORE_CTX_check_revocation_fn check_revocation); X509_STORE_CTX_check_revocation_fn - X509_STORE_get_check_revocation(const X509_STORE *ctx); -void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, X509_STORE_CTX_get_crl_fn get_crl); -X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *ctx); -void X509_STORE_set_check_crl(X509_STORE *ctx, +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, X509_STORE_CTX_check_crl_fn check_crl); -X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *ctx); -void X509_STORE_set_cert_crl(X509_STORE *ctx, +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, X509_STORE_CTX_cert_crl_fn cert_crl); -X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *ctx); -void X509_STORE_set_check_policy(X509_STORE *ctx, +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, X509_STORE_CTX_check_policy_fn check_policy); -X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *ctx); -void X509_STORE_set_lookup_certs(X509_STORE *ctx, +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, X509_STORE_CTX_lookup_certs_fn lookup_certs); -X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *ctx); -void X509_STORE_set_lookup_crls(X509_STORE *ctx, +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, X509_STORE_CTX_lookup_crls_fn lookup_crls); #define X509_STORE_set_lookup_crls_cb(ctx, func) \ X509_STORE_set_lookup_crls((ctx), (func)) -X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *ctx); -void X509_STORE_set_cleanup(X509_STORE *ctx, +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, X509_STORE_CTX_cleanup_fn cleanup); -X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); #define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) -int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); -void *X509_STORE_get_ex_data(const X509_STORE *ctx, int idx); +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); X509_STORE_CTX *X509_STORE_CTX_new(void); @@ -565,11 +567,14 @@ int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); void X509_STORE_CTX_free(X509_STORE_CTX *ctx); int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY* rpk); void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, @@ -579,6 +584,8 @@ X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); @@ -600,7 +607,7 @@ X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); # define X509_STORE_get1_crl X509_STORE_CTX_get1_crls #endif -X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); X509_LOOKUP_METHOD *X509_LOOKUP_file(void); X509_LOOKUP_METHOD *X509_LOOKUP_store(void); @@ -685,8 +692,8 @@ X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( const X509_LOOKUP_METHOD *method); -int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); -int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, @@ -730,23 +737,21 @@ void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); -int X509_STORE_load_file(X509_STORE *ctx, const char *file); -int X509_STORE_load_path(X509_STORE *ctx, const char *path); -int X509_STORE_load_store(X509_STORE *ctx, const char *store); -int X509_STORE_load_locations(X509_STORE *ctx, - const char *file, - const char *dir); -int X509_STORE_set_default_paths(X509_STORE *ctx); +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); -int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file, +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_store_ex(X509_STORE *ctx, const char *store, +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file, - const char *dir, OSSL_LIB_CTX *libctx, - const char *propq); -int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OSSL_LIB_CTX *libctx, - const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); #define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) @@ -764,6 +769,7 @@ X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); @@ -773,6 +779,8 @@ int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); @@ -804,6 +812,7 @@ int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, unsigned long flags); unsigned long X509_VERIFY_PARAM_get_flags(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_get_purpose(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/x509v3.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/x509v3.h index ed08a546f9813d..362ce3fb4387f7 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/x509v3.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/x509v3.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/x509v3.h.in * - * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -146,6 +149,11 @@ typedef struct BASIC_CONSTRAINTS_st { ASN1_INTEGER *pathlen; } BASIC_CONSTRAINTS; +typedef struct OSSL_BASIC_ATTR_CONSTRAINTS_st { + int authority; + ASN1_INTEGER *pathlen; +} OSSL_BASIC_ATTR_CONSTRAINTS; + typedef struct PKEY_USAGE_PERIOD_st { ASN1_GENERALIZEDTIME *notBefore; ASN1_GENERALIZEDTIME *notAfter; @@ -198,6 +206,8 @@ typedef struct ACCESS_DESCRIPTION_st { GENERAL_NAME *location; } ACCESS_DESCRIPTION; +int GENERAL_NAME_set1_X509_NAME(GENERAL_NAME **tgt, const X509_NAME *src); + SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) #define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) #define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) @@ -294,6 +304,7 @@ typedef struct DIST_POINT_NAME_st { /* If relativename then this contains the full distribution point name */ X509_NAME *dpname; } DIST_POINT_NAME; +DECLARE_ASN1_DUP_FUNCTION(DIST_POINT_NAME) /* All existing reasons */ # define CRLDP_ALL_REASONS 0x807f @@ -659,15 +670,16 @@ struct ISSUING_DIST_POINT_st { # define EXFLAG_SAN_CRITICAL 0x80000 # define EXFLAG_NO_FINGERPRINT 0x100000 -# define KU_DIGITAL_SIGNATURE 0x0080 -# define KU_NON_REPUDIATION 0x0040 -# define KU_KEY_ENCIPHERMENT 0x0020 -# define KU_DATA_ENCIPHERMENT 0x0010 -# define KU_KEY_AGREEMENT 0x0008 -# define KU_KEY_CERT_SIGN 0x0004 -# define KU_CRL_SIGN 0x0002 -# define KU_ENCIPHER_ONLY 0x0001 -# define KU_DECIPHER_ONLY 0x8000 +/* https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3 */ +# define KU_DIGITAL_SIGNATURE X509v3_KU_DIGITAL_SIGNATURE +# define KU_NON_REPUDIATION X509v3_KU_NON_REPUDIATION +# define KU_KEY_ENCIPHERMENT X509v3_KU_KEY_ENCIPHERMENT +# define KU_DATA_ENCIPHERMENT X509v3_KU_DATA_ENCIPHERMENT +# define KU_KEY_AGREEMENT X509v3_KU_KEY_AGREEMENT +# define KU_KEY_CERT_SIGN X509v3_KU_KEY_CERT_SIGN +# define KU_CRL_SIGN X509v3_KU_CRL_SIGN +# define KU_ENCIPHER_ONLY X509v3_KU_ENCIPHER_ONLY +# define KU_DECIPHER_ONLY X509v3_KU_DECIPHER_ONLY # define NS_SSL_CLIENT 0x80 # define NS_SSL_SERVER 0x40 @@ -729,7 +741,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) #define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) - +# define X509_PURPOSE_DEFAULT_ANY 0 # define X509_PURPOSE_SSL_CLIENT 1 # define X509_PURPOSE_SSL_SERVER 2 # define X509_PURPOSE_NS_SSL_SERVER 3 @@ -739,9 +751,10 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509_PURPOSE_ANY 7 # define X509_PURPOSE_OCSP_HELPER 8 # define X509_PURPOSE_TIMESTAMP_SIGN 9 +# define X509_PURPOSE_CODE_SIGN 10 # define X509_PURPOSE_MIN 1 -# define X509_PURPOSE_MAX 9 +# define X509_PURPOSE_MAX 10 /* Flags for X509V3_EXT_print() */ @@ -767,6 +780,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509V3_ADD_SILENT 0x10 DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) +DECLARE_ASN1_FUNCTIONS(OSSL_BASIC_ATTR_CONSTRAINTS) DECLARE_ASN1_FUNCTIONS(SXNET) DECLARE_ASN1_FUNCTIONS(SXNETID) @@ -976,7 +990,6 @@ int X509V3_extensions_print(BIO *out, const char *title, int X509_check_ca(X509 *x); int X509_check_purpose(X509 *x, int id, int ca); int X509_supported_extension(X509_EXTENSION *ex); -int X509_PURPOSE_set(int *p, int purpose); int X509_check_issued(X509 *issuer, X509 *subject); int X509_check_akid(const X509 *issuer, const AUTHORITY_KEYID *akid); void X509_set_proxy_flag(X509 *x); @@ -992,22 +1005,26 @@ const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); int X509_PURPOSE_get_count(void); -X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_unused_id(OSSL_LIB_CTX *libctx); int X509_PURPOSE_get_by_sname(const char *sname); int X509_PURPOSE_get_by_id(int id); int X509_PURPOSE_add(int id, int trust, int flags, int (*ck) (const X509_PURPOSE *, const X509 *, int), const char *name, const char *sname, void *arg); +void X509_PURPOSE_cleanup(void); + +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_id(const X509_PURPOSE *); char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); -void X509_PURPOSE_cleanup(void); -int X509_PURPOSE_get_id(const X509_PURPOSE *); +int X509_PURPOSE_set(int *p, int purpose); STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); + /* Flags for X509_check_* functions */ /* @@ -1444,6 +1461,507 @@ const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( void PROFESSION_INFO_set0_registrationNumber( PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); +int OSSL_GENERAL_NAMES_print(BIO *out, GENERAL_NAMES *gens, int indent); + +typedef STACK_OF(X509_ATTRIBUTE) OSSL_ATTRIBUTES_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTES_SYNTAX) + +typedef STACK_OF(USERNOTICE) OSSL_USER_NOTICE_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_USER_NOTICE_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(USERNOTICE, USERNOTICE, USERNOTICE) +#define sk_USERNOTICE_num(sk) OPENSSL_sk_num(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_value(sk, idx) ((USERNOTICE *)OPENSSL_sk_value(ossl_check_const_USERNOTICE_sk_type(sk), (idx))) +#define sk_USERNOTICE_new(cmp) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new(ossl_check_USERNOTICE_compfunc_type(cmp))) +#define sk_USERNOTICE_new_null() ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_null()) +#define sk_USERNOTICE_new_reserve(cmp, n) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_reserve(ossl_check_USERNOTICE_compfunc_type(cmp), (n))) +#define sk_USERNOTICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_USERNOTICE_sk_type(sk), (n)) +#define sk_USERNOTICE_free(sk) OPENSSL_sk_free(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_zero(sk) OPENSSL_sk_zero(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_delete(sk, i) ((USERNOTICE *)OPENSSL_sk_delete(ossl_check_USERNOTICE_sk_type(sk), (i))) +#define sk_USERNOTICE_delete_ptr(sk, ptr) ((USERNOTICE *)OPENSSL_sk_delete_ptr(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_pop(sk) ((USERNOTICE *)OPENSSL_sk_pop(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_shift(sk) ((USERNOTICE *)OPENSSL_sk_shift(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_USERNOTICE_sk_type(sk),ossl_check_USERNOTICE_freefunc_type(freefunc)) +#define sk_USERNOTICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), (idx)) +#define sk_USERNOTICE_set(sk, idx, ptr) ((USERNOTICE *)OPENSSL_sk_set(ossl_check_USERNOTICE_sk_type(sk), (idx), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), pnum) +#define sk_USERNOTICE_sort(sk) OPENSSL_sk_sort(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_dup(sk) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_dup(ossl_check_const_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_deep_copy(ossl_check_const_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_copyfunc_type(copyfunc), ossl_check_USERNOTICE_freefunc_type(freefunc))) +#define sk_USERNOTICE_set_cmp_func(sk, cmp) ((sk_USERNOTICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_compfunc_type(cmp))) + + +typedef struct OSSL_ROLE_SPEC_CERT_ID_st { + GENERAL_NAME *roleName; + GENERAL_NAME *roleCertIssuer; + ASN1_INTEGER *roleCertSerialNumber; + GENERAL_NAMES *roleCertLocator; +} OSSL_ROLE_SPEC_CERT_ID; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID) +#define sk_OSSL_ROLE_SPEC_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_value(sk, idx) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_value(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new(cmp) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_null() ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_reserve(cmp, n) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp), (n))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (n)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete(sk, i) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (i))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete_ptr(sk, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_pop(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_shift(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_shift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk),ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), (idx)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set(sk, idx, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_set(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), pnum) +#define sk_OSSL_ROLE_SPEC_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_dup(sk) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_copyfunc_type(copyfunc), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set_cmp_func(sk, cmp) ((sk_OSSL_ROLE_SPEC_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) + + +typedef STACK_OF(OSSL_ROLE_SPEC_CERT_ID) OSSL_ROLE_SPEC_CERT_ID_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID_SYNTAX) +typedef struct OSSL_HASH_st { + X509_ALGOR *algorithmIdentifier; + ASN1_BIT_STRING *hashValue; +} OSSL_HASH; + +typedef struct OSSL_INFO_SYNTAX_POINTER_st { + GENERAL_NAMES *name; + OSSL_HASH *hash; +} OSSL_INFO_SYNTAX_POINTER; + +# define OSSL_INFO_SYNTAX_TYPE_CONTENT 0 +# define OSSL_INFO_SYNTAX_TYPE_POINTER 1 + +typedef struct OSSL_INFO_SYNTAX_st { + int type; + union { + ASN1_STRING *content; + OSSL_INFO_SYNTAX_POINTER *pointer; + } choice; +} OSSL_INFO_SYNTAX; + +typedef struct OSSL_PRIVILEGE_POLICY_ID_st { + ASN1_OBJECT *privilegePolicy; + OSSL_INFO_SYNTAX *privPolSyntax; +} OSSL_PRIVILEGE_POLICY_ID; + +typedef struct OSSL_ATTRIBUTE_DESCRIPTOR_st { + ASN1_OBJECT *identifier; + ASN1_STRING *attributeSyntax; + ASN1_UTF8STRING *name; + ASN1_UTF8STRING *description; + OSSL_PRIVILEGE_POLICY_ID *dominationRule; +} OSSL_ATTRIBUTE_DESCRIPTOR; + +DECLARE_ASN1_FUNCTIONS(OSSL_HASH) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX_POINTER) +DECLARE_ASN1_FUNCTIONS(OSSL_PRIVILEGE_POLICY_ID) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_DESCRIPTOR) + +typedef struct OSSL_TIME_SPEC_ABSOLUTE_st { + ASN1_GENERALIZEDTIME *startTime; + ASN1_GENERALIZEDTIME *endTime; +} OSSL_TIME_SPEC_ABSOLUTE; + +typedef struct OSSL_DAY_TIME_st { + ASN1_INTEGER *hour; + ASN1_INTEGER *minute; + ASN1_INTEGER *second; +} OSSL_DAY_TIME; + +typedef struct OSSL_DAY_TIME_BAND_st { + OSSL_DAY_TIME *startDayTime; + OSSL_DAY_TIME *endDayTime; +} OSSL_DAY_TIME_BAND; + +# define OSSL_NAMED_DAY_TYPE_INT 0 +# define OSSL_NAMED_DAY_TYPE_BIT 1 +# define OSSL_NAMED_DAY_INT_SUN 1 +# define OSSL_NAMED_DAY_INT_MON 2 +# define OSSL_NAMED_DAY_INT_TUE 3 +# define OSSL_NAMED_DAY_INT_WED 4 +# define OSSL_NAMED_DAY_INT_THU 5 +# define OSSL_NAMED_DAY_INT_FRI 6 +# define OSSL_NAMED_DAY_INT_SAT 7 +# define OSSL_NAMED_DAY_BIT_SUN 0 +# define OSSL_NAMED_DAY_BIT_MON 1 +# define OSSL_NAMED_DAY_BIT_TUE 2 +# define OSSL_NAMED_DAY_BIT_WED 3 +# define OSSL_NAMED_DAY_BIT_THU 4 +# define OSSL_NAMED_DAY_BIT_FRI 5 +# define OSSL_NAMED_DAY_BIT_SAT 6 + +typedef struct OSSL_NAMED_DAY_st { + int type; + union { + ASN1_INTEGER *intNamedDays; + ASN1_BIT_STRING *bitNamedDays; + } choice; +} OSSL_NAMED_DAY; + +# define OSSL_TIME_SPEC_X_DAY_OF_FIRST 0 +# define OSSL_TIME_SPEC_X_DAY_OF_SECOND 1 +# define OSSL_TIME_SPEC_X_DAY_OF_THIRD 2 +# define OSSL_TIME_SPEC_X_DAY_OF_FOURTH 3 +# define OSSL_TIME_SPEC_X_DAY_OF_FIFTH 4 + +typedef struct OSSL_TIME_SPEC_X_DAY_OF_st { + int type; + union { + OSSL_NAMED_DAY *first; + OSSL_NAMED_DAY *second; + OSSL_NAMED_DAY *third; + OSSL_NAMED_DAY *fourth; + OSSL_NAMED_DAY *fifth; + } choice; +} OSSL_TIME_SPEC_X_DAY_OF; + +# define OSSL_TIME_SPEC_DAY_TYPE_INT 0 +# define OSSL_TIME_SPEC_DAY_TYPE_BIT 1 +# define OSSL_TIME_SPEC_DAY_TYPE_DAY_OF 2 +# define OSSL_TIME_SPEC_DAY_BIT_SUN 0 +# define OSSL_TIME_SPEC_DAY_BIT_MON 1 +# define OSSL_TIME_SPEC_DAY_BIT_TUE 2 +# define OSSL_TIME_SPEC_DAY_BIT_WED 3 +# define OSSL_TIME_SPEC_DAY_BIT_THU 4 +# define OSSL_TIME_SPEC_DAY_BIT_FRI 5 +# define OSSL_TIME_SPEC_DAY_BIT_SAT 6 +# define OSSL_TIME_SPEC_DAY_INT_SUN 1 +# define OSSL_TIME_SPEC_DAY_INT_MON 2 +# define OSSL_TIME_SPEC_DAY_INT_TUE 3 +# define OSSL_TIME_SPEC_DAY_INT_WED 4 +# define OSSL_TIME_SPEC_DAY_INT_THU 5 +# define OSSL_TIME_SPEC_DAY_INT_FRI 6 +# define OSSL_TIME_SPEC_DAY_INT_SAT 7 + +typedef struct OSSL_TIME_SPEC_DAY_st { + int type; + union { + STACK_OF(ASN1_INTEGER) *intDay; + ASN1_BIT_STRING *bitDay; + OSSL_TIME_SPEC_X_DAY_OF *dayOf; + } choice; +} OSSL_TIME_SPEC_DAY; + +# define OSSL_TIME_SPEC_WEEKS_TYPE_ALL 0 +# define OSSL_TIME_SPEC_WEEKS_TYPE_INT 1 +# define OSSL_TIME_SPEC_WEEKS_TYPE_BIT 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_1 0 +# define OSSL_TIME_SPEC_BIT_WEEKS_2 1 +# define OSSL_TIME_SPEC_BIT_WEEKS_3 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_4 3 +# define OSSL_TIME_SPEC_BIT_WEEKS_5 4 + +typedef struct OSSL_TIME_SPEC_WEEKS_st { + int type; + union { + ASN1_NULL *allWeeks; + STACK_OF(ASN1_INTEGER) *intWeek; + ASN1_BIT_STRING *bitWeek; + } choice; +} OSSL_TIME_SPEC_WEEKS; + +# define OSSL_TIME_SPEC_MONTH_TYPE_ALL 0 +# define OSSL_TIME_SPEC_MONTH_TYPE_INT 1 +# define OSSL_TIME_SPEC_MONTH_TYPE_BIT 2 +# define OSSL_TIME_SPEC_INT_MONTH_JAN 1 +# define OSSL_TIME_SPEC_INT_MONTH_FEB 2 +# define OSSL_TIME_SPEC_INT_MONTH_MAR 3 +# define OSSL_TIME_SPEC_INT_MONTH_APR 4 +# define OSSL_TIME_SPEC_INT_MONTH_MAY 5 +# define OSSL_TIME_SPEC_INT_MONTH_JUN 6 +# define OSSL_TIME_SPEC_INT_MONTH_JUL 7 +# define OSSL_TIME_SPEC_INT_MONTH_AUG 8 +# define OSSL_TIME_SPEC_INT_MONTH_SEP 9 +# define OSSL_TIME_SPEC_INT_MONTH_OCT 10 +# define OSSL_TIME_SPEC_INT_MONTH_NOV 11 +# define OSSL_TIME_SPEC_INT_MONTH_DEC 12 +# define OSSL_TIME_SPEC_BIT_MONTH_JAN 0 +# define OSSL_TIME_SPEC_BIT_MONTH_FEB 1 +# define OSSL_TIME_SPEC_BIT_MONTH_MAR 2 +# define OSSL_TIME_SPEC_BIT_MONTH_APR 3 +# define OSSL_TIME_SPEC_BIT_MONTH_MAY 4 +# define OSSL_TIME_SPEC_BIT_MONTH_JUN 5 +# define OSSL_TIME_SPEC_BIT_MONTH_JUL 6 +# define OSSL_TIME_SPEC_BIT_MONTH_AUG 7 +# define OSSL_TIME_SPEC_BIT_MONTH_SEP 8 +# define OSSL_TIME_SPEC_BIT_MONTH_OCT 9 +# define OSSL_TIME_SPEC_BIT_MONTH_NOV 10 +# define OSSL_TIME_SPEC_BIT_MONTH_DEC 11 + +typedef struct OSSL_TIME_SPEC_MONTH_st { + int type; + union { + ASN1_NULL *allMonths; + STACK_OF(ASN1_INTEGER) *intMonth; + ASN1_BIT_STRING *bitMonth; + } choice; +} OSSL_TIME_SPEC_MONTH; + +typedef struct OSSL_TIME_PERIOD_st { + STACK_OF(OSSL_DAY_TIME_BAND) *timesOfDay; + OSSL_TIME_SPEC_DAY *days; + OSSL_TIME_SPEC_WEEKS *weeks; + OSSL_TIME_SPEC_MONTH *months; + STACK_OF(ASN1_INTEGER) *years; +} OSSL_TIME_PERIOD; + +# define OSSL_TIME_SPEC_TIME_TYPE_ABSOLUTE 0 +# define OSSL_TIME_SPEC_TIME_TYPE_PERIODIC 1 + +typedef struct OSSL_TIME_SPEC_TIME_st { + int type; + union { + OSSL_TIME_SPEC_ABSOLUTE *absolute; + STACK_OF(OSSL_TIME_PERIOD) *periodic; + } choice; +} OSSL_TIME_SPEC_TIME; + +typedef struct OSSL_TIME_SPEC_st { + OSSL_TIME_SPEC_TIME *time; + ASN1_BOOLEAN notThisTime; + ASN1_INTEGER *timeZone; +} OSSL_TIME_SPEC; + +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME_BAND) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_WEEKS) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_MONTH) +DECLARE_ASN1_FUNCTIONS(OSSL_NAMED_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_X_DAY_OF) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_ABSOLUTE) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_PERIOD) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TIME_PERIOD, OSSL_TIME_PERIOD, OSSL_TIME_PERIOD) +#define sk_OSSL_TIME_PERIOD_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_value(sk, idx) ((OSSL_TIME_PERIOD *)OPENSSL_sk_value(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), (idx))) +#define sk_OSSL_TIME_PERIOD_new(cmp) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) +#define sk_OSSL_TIME_PERIOD_new_null() ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TIME_PERIOD_new_reserve(cmp, n) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp), (n))) +#define sk_OSSL_TIME_PERIOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (n)) +#define sk_OSSL_TIME_PERIOD_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_delete(sk, i) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (i))) +#define sk_OSSL_TIME_PERIOD_delete_ptr(sk, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_pop(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_pop(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_shift(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_shift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk),ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc)) +#define sk_OSSL_TIME_PERIOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), (idx)) +#define sk_OSSL_TIME_PERIOD_set(sk, idx, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_set(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (idx), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), pnum) +#define sk_OSSL_TIME_PERIOD_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_dup(sk) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_copyfunc_type(copyfunc), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc))) +#define sk_OSSL_TIME_PERIOD_set_cmp_func(sk, cmp) ((sk_OSSL_TIME_PERIOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND) +#define sk_OSSL_DAY_TIME_BAND_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_value(sk, idx) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_value(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), (idx))) +#define sk_OSSL_DAY_TIME_BAND_new(cmp) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) +#define sk_OSSL_DAY_TIME_BAND_new_null() ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_null()) +#define sk_OSSL_DAY_TIME_BAND_new_reserve(cmp, n) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp), (n))) +#define sk_OSSL_DAY_TIME_BAND_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (n)) +#define sk_OSSL_DAY_TIME_BAND_free(sk) OPENSSL_sk_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_delete(sk, i) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (i))) +#define sk_OSSL_DAY_TIME_BAND_delete_ptr(sk, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_pop(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_pop(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_shift(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_shift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk),ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc)) +#define sk_OSSL_DAY_TIME_BAND_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), (idx)) +#define sk_OSSL_DAY_TIME_BAND_set(sk, idx, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_set(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (idx), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), pnum) +#define sk_OSSL_DAY_TIME_BAND_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_dup(sk) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_dup(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_copyfunc_type(copyfunc), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc))) +#define sk_OSSL_DAY_TIME_BAND_set_cmp_func(sk, cmp) ((sk_OSSL_DAY_TIME_BAND_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) + + +/* Attribute Type and Value */ +typedef struct atav_st { + ASN1_OBJECT *type; + ASN1_TYPE *value; +} OSSL_ATAV; + +typedef struct ATTRIBUTE_TYPE_MAPPING_st { + ASN1_OBJECT *local; + ASN1_OBJECT *remote; +} OSSL_ATTRIBUTE_TYPE_MAPPING; + +typedef struct ATTRIBUTE_VALUE_MAPPING_st { + OSSL_ATAV *local; + OSSL_ATAV *remote; +} OSSL_ATTRIBUTE_VALUE_MAPPING; + +# define OSSL_ATTR_MAP_TYPE 0 +# define OSSL_ATTR_MAP_VALUE 1 + +typedef struct ATTRIBUTE_MAPPING_st { + int type; + union { + OSSL_ATTRIBUTE_TYPE_MAPPING *typeMappings; + OSSL_ATTRIBUTE_VALUE_MAPPING *typeValueMappings; + } choice; +} OSSL_ATTRIBUTE_MAPPING; + +typedef STACK_OF(OSSL_ATTRIBUTE_MAPPING) OSSL_ATTRIBUTE_MAPPINGS; +DECLARE_ASN1_FUNCTIONS(OSSL_ATAV) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_TYPE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_VALUE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPINGS) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING) +#define sk_OSSL_ATTRIBUTE_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_value(sk, idx) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_value(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new(cmp) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_null() ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_reserve(cmp, n) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp), (n))) +#define sk_OSSL_ATTRIBUTE_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (n)) +#define sk_OSSL_ATTRIBUTE_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete(sk, i) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (i))) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete_ptr(sk, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_pop(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_shift(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_shift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk),ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc)) +#define sk_OSSL_ATTRIBUTE_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), (idx)) +#define sk_OSSL_ATTRIBUTE_MAPPING_set(sk, idx, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_set(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), pnum) +#define sk_OSSL_ATTRIBUTE_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_dup(sk) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_copyfunc_type(copyfunc), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc))) +#define sk_OSSL_ATTRIBUTE_MAPPING_set_cmp_func(sk, cmp) ((sk_OSSL_ATTRIBUTE_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) + + +# define OSSL_AAA_ATTRIBUTE_TYPE 0 +# define OSSL_AAA_ATTRIBUTE_VALUES 1 + +typedef struct ALLOWED_ATTRIBUTES_CHOICE_st { + int type; + union { + ASN1_OBJECT *attributeType; + X509_ATTRIBUTE *attributeTypeandValues; + } choice; +} OSSL_ALLOWED_ATTRIBUTES_CHOICE; + +typedef struct ALLOWED_ATTRIBUTES_ITEM_st { + STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *attributes; + GENERAL_NAME *holderDomain; +} OSSL_ALLOWED_ATTRIBUTES_ITEM; + +typedef STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) OSSL_ALLOWED_ATTRIBUTES_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_CHOICE) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_ITEM) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) + + +typedef struct AA_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + int dp_reasons; + ASN1_BOOLEAN indirectCRL; + ASN1_BOOLEAN containsUserAttributeCerts; + ASN1_BOOLEAN containsAACerts; + ASN1_BOOLEAN containsSOAPublicKeyCerts; +} OSSL_AA_DIST_POINT; + +DECLARE_ASN1_FUNCTIONS(OSSL_AA_DIST_POINT) + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/progs.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/progs.h index be55f61503d405..1b62ec37dec130 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/include/progs.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/progs.h @@ -56,6 +56,7 @@ extern int s_client_main(int argc, char *argv[]); extern int s_server_main(int argc, char *argv[]); extern int s_time_main(int argc, char *argv[]); extern int sess_id_main(int argc, char *argv[]); +extern int skeyutl_main(int argc, char *argv[]); extern int smime_main(int argc, char *argv[]); extern int speed_main(int argc, char *argv[]); extern int spkac_main(int argc, char *argv[]); @@ -110,6 +111,7 @@ extern const OPTIONS s_client_options[]; extern const OPTIONS s_server_options[]; extern const OPTIONS s_time_options[]; extern const OPTIONS sess_id_options[]; +extern const OPTIONS skeyutl_options[]; extern const OPTIONS smime_options[]; extern const OPTIONS speed_options[]; extern const OPTIONS spkac_options[]; diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/openssl-cl.gypi b/deps/openssl/config/archs/VC-WIN64A/asm/openssl-cl.gypi index 9b7e878e1c497d..2de27868d138f9 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/openssl-cl.gypi +++ b/deps/openssl/config/archs/VC-WIN64A/asm/openssl-cl.gypi @@ -88,6 +88,7 @@ 'openssl/apps/s_server.c', 'openssl/apps/s_time.c', 'openssl/apps/sess_id.c', + 'openssl/apps/skeyutl.c', 'openssl/apps/smime.c', 'openssl/apps/speed.c', 'openssl/apps/spkac.c', @@ -103,12 +104,14 @@ 'openssl/apps/lib/app_rand.c', 'openssl/apps/lib/app_x509.c', 'openssl/apps/lib/apps.c', + 'openssl/apps/lib/apps_opt_printf.c', 'openssl/apps/lib/apps_ui.c', 'openssl/apps/lib/columns.c', 'openssl/apps/lib/engine.c', 'openssl/apps/lib/engine_loader.c', 'openssl/apps/lib/fmt.c', 'openssl/apps/lib/http_server.c', + 'openssl/apps/lib/log.c', 'openssl/apps/lib/names.c', 'openssl/apps/lib/opt.c', 'openssl/apps/lib/s_cb.c', diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/openssl-fips.gypi b/deps/openssl/config/archs/VC-WIN64A/asm/openssl-fips.gypi index 780f25951c1546..03c0d5c847b84d 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/openssl-fips.gypi +++ b/deps/openssl/config/archs/VC-WIN64A/asm/openssl-fips.gypi @@ -101,14 +101,15 @@ 'openssl/crypto/evp/kem.c', 'openssl/crypto/evp/keymgmt_lib.c', 'openssl/crypto/evp/keymgmt_meth.c', - 'openssl/crypto/evp/m_sigver.c', 'openssl/crypto/evp/mac_lib.c', 'openssl/crypto/evp/mac_meth.c', 'openssl/crypto/evp/p_lib.c', 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -116,6 +117,8 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', @@ -145,6 +148,16 @@ 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -153,6 +166,7 @@ 'openssl/crypto/modes/ofb128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/property/defn_cache.c', 'openssl/crypto/property/property.c', 'openssl/crypto/property/property_parse.c', @@ -180,7 +194,23 @@ 'openssl/crypto/sha/sha256.c', 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/stack/stack.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/providers/common/der/der_rsa_sig.c', 'openssl/providers/common/bio_prov.c', 'openssl/providers/common/capabilities.c', @@ -189,6 +219,7 @@ 'openssl/providers/common/provider_util.c', 'openssl/providers/common/securitycheck.c', 'openssl/providers/common/securitycheck_fips.c', + 'openssl/providers/fips/fipsindicator.c', 'openssl/providers/fips/fipsprov.c', 'openssl/providers/fips/self_test.c', 'openssl/providers/fips/self_test_kats.c', @@ -226,6 +257,8 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -233,29 +266,39 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/cmac_prov.c', 'openssl/providers/implementations/macs/gmac_prov.c', 'openssl/providers/implementations/macs/hmac_prov.c', 'openssl/providers/implementations/macs/kmac_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', + 'openssl/providers/implementations/rands/fips_crng_test.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/signature/dsa_sig.c', 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -266,7 +309,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/fips/fips_entry.c', ], @@ -276,10 +319,16 @@ './config/archs/VC-WIN64A/asm/crypto/aes/aesni-sha1-x86_64.asm', './config/archs/VC-WIN64A/asm/crypto/aes/aesni-sha256-x86_64.asm', './config/archs/VC-WIN64A/asm/crypto/aes/aesni-x86_64.asm', + './config/archs/VC-WIN64A/asm/crypto/aes/aesni-xts-avx512.asm', './config/archs/VC-WIN64A/asm/crypto/aes/bsaes-x86_64.asm', './config/archs/VC-WIN64A/asm/crypto/aes/vpaes-x86_64.asm', + './config/archs/VC-WIN64A/asm/crypto/bn/rsaz-2k-avx512.asm', + './config/archs/VC-WIN64A/asm/crypto/bn/rsaz-2k-avxifma.asm', + './config/archs/VC-WIN64A/asm/crypto/bn/rsaz-3k-avx512.asm', + './config/archs/VC-WIN64A/asm/crypto/bn/rsaz-3k-avxifma.asm', + './config/archs/VC-WIN64A/asm/crypto/bn/rsaz-4k-avx512.asm', + './config/archs/VC-WIN64A/asm/crypto/bn/rsaz-4k-avxifma.asm', './config/archs/VC-WIN64A/asm/crypto/bn/rsaz-avx2.asm', - './config/archs/VC-WIN64A/asm/crypto/bn/rsaz-avx512.asm', './config/archs/VC-WIN64A/asm/crypto/bn/rsaz-x86_64.asm', './config/archs/VC-WIN64A/asm/crypto/bn/x86_64-gf2m.asm', './config/archs/VC-WIN64A/asm/crypto/bn/x86_64-mont.asm', @@ -288,8 +337,10 @@ './config/archs/VC-WIN64A/asm/crypto/chacha/chacha-x86_64.asm', './config/archs/VC-WIN64A/asm/crypto/ec/ecp_nistz256-x86_64.asm', './config/archs/VC-WIN64A/asm/crypto/ec/x25519-x86_64.asm', + './config/archs/VC-WIN64A/asm/crypto/params_idx.c', './config/archs/VC-WIN64A/asm/crypto/x86_64cpuid.asm', './config/archs/VC-WIN64A/asm/crypto/md5/md5-x86_64.asm', + './config/archs/VC-WIN64A/asm/crypto/modes/aes-gcm-avx512.asm', './config/archs/VC-WIN64A/asm/crypto/modes/aesni-gcm-x86_64.asm', './config/archs/VC-WIN64A/asm/crypto/modes/ghash-x86_64.asm', './config/archs/VC-WIN64A/asm/crypto/poly1305/poly1305-x86_64.asm', @@ -308,7 +359,9 @@ './config/archs/VC-WIN64A/asm/providers/common/der/der_dsa_gen.c', './config/archs/VC-WIN64A/asm/providers/common/der/der_ec_gen.c', './config/archs/VC-WIN64A/asm/providers/common/der/der_ecx_gen.c', + './config/archs/VC-WIN64A/asm/providers/common/der/der_ml_dsa_gen.c', './config/archs/VC-WIN64A/asm/providers/common/der/der_rsa_gen.c', + './config/archs/VC-WIN64A/asm/providers/common/der/der_slh_dsa_gen.c', './config/archs/VC-WIN64A/asm/providers/common/der/der_wrap_gen.c', ], diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/openssl.gypi b/deps/openssl/config/archs/VC-WIN64A/asm/openssl.gypi index 56214992653bd3..8223693dea08c4 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/openssl.gypi +++ b/deps/openssl/config/archs/VC-WIN64A/asm/openssl.gypi @@ -7,14 +7,15 @@ 'openssl/ssl/d1_srtp.c', 'openssl/ssl/methods.c', 'openssl/ssl/pqueue.c', + 'openssl/ssl/priority_queue.c', 'openssl/ssl/s3_enc.c', 'openssl/ssl/s3_lib.c', 'openssl/ssl/s3_msg.c', 'openssl/ssl/ssl_asn1.c', 'openssl/ssl/ssl_cert.c', + 'openssl/ssl/ssl_cert_comp.c', 'openssl/ssl/ssl_ciph.c', 'openssl/ssl/ssl_conf.c', - 'openssl/ssl/ssl_err.c', 'openssl/ssl/ssl_err_legacy.c', 'openssl/ssl/ssl_init.c', 'openssl/ssl/ssl_lib.c', @@ -31,12 +32,60 @@ 'openssl/ssl/tls13_enc.c', 'openssl/ssl/tls_depr.c', 'openssl/ssl/tls_srp.c', - 'openssl/ssl/record/dtls1_bitmap.c', + 'openssl/ssl/quic/cc_newreno.c', + 'openssl/ssl/quic/json_enc.c', + 'openssl/ssl/quic/qlog.c', + 'openssl/ssl/quic/qlog_event_helpers.c', + 'openssl/ssl/quic/quic_ackm.c', + 'openssl/ssl/quic/quic_cfq.c', + 'openssl/ssl/quic/quic_channel.c', + 'openssl/ssl/quic/quic_demux.c', + 'openssl/ssl/quic/quic_engine.c', + 'openssl/ssl/quic/quic_fc.c', + 'openssl/ssl/quic/quic_fifd.c', + 'openssl/ssl/quic/quic_impl.c', + 'openssl/ssl/quic/quic_lcidm.c', + 'openssl/ssl/quic/quic_method.c', + 'openssl/ssl/quic/quic_obj.c', + 'openssl/ssl/quic/quic_port.c', + 'openssl/ssl/quic/quic_rcidm.c', + 'openssl/ssl/quic/quic_reactor.c', + 'openssl/ssl/quic/quic_reactor_wait_ctx.c', + 'openssl/ssl/quic/quic_record_rx.c', + 'openssl/ssl/quic/quic_record_shared.c', + 'openssl/ssl/quic/quic_record_tx.c', + 'openssl/ssl/quic/quic_record_util.c', + 'openssl/ssl/quic/quic_rstream.c', + 'openssl/ssl/quic/quic_rx_depack.c', + 'openssl/ssl/quic/quic_sf_list.c', + 'openssl/ssl/quic/quic_srt_gen.c', + 'openssl/ssl/quic/quic_srtm.c', + 'openssl/ssl/quic/quic_sstream.c', + 'openssl/ssl/quic/quic_statm.c', + 'openssl/ssl/quic/quic_stream_map.c', + 'openssl/ssl/quic/quic_thread_assist.c', + 'openssl/ssl/quic/quic_tls.c', + 'openssl/ssl/quic/quic_tls_api.c', + 'openssl/ssl/quic/quic_trace.c', + 'openssl/ssl/quic/quic_tserver.c', + 'openssl/ssl/quic/quic_txp.c', + 'openssl/ssl/quic/quic_txpim.c', + 'openssl/ssl/quic/quic_types.c', + 'openssl/ssl/quic/quic_wire.c', + 'openssl/ssl/quic/quic_wire_pkt.c', + 'openssl/ssl/quic/uint_set.c', 'openssl/ssl/record/rec_layer_d1.c', 'openssl/ssl/record/rec_layer_s3.c', - 'openssl/ssl/record/ssl3_buffer.c', - 'openssl/ssl/record/ssl3_record.c', - 'openssl/ssl/record/ssl3_record_tls13.c', + 'openssl/ssl/record/methods/dtls_meth.c', + 'openssl/ssl/record/methods/ssl3_meth.c', + 'openssl/ssl/record/methods/tls13_meth.c', + 'openssl/ssl/record/methods/tls1_meth.c', + 'openssl/ssl/record/methods/tls_common.c', + 'openssl/ssl/record/methods/tls_multib.c', + 'openssl/ssl/record/methods/tlsany_meth.c', + 'openssl/ssl/rio/poll_builder.c', + 'openssl/ssl/rio/poll_immediate.c', + 'openssl/ssl/rio/rio_notifier.c', 'openssl/ssl/statem/extensions.c', 'openssl/ssl/statem/extensions_clnt.c', 'openssl/ssl/statem/extensions_cust.c', @@ -148,6 +197,7 @@ 'openssl/crypto/bio/bss_conn.c', 'openssl/crypto/bio/bss_core.c', 'openssl/crypto/bio/bss_dgram.c', + 'openssl/crypto/bio/bss_dgram_pair.c', 'openssl/crypto/bio/bss_fd.c', 'openssl/crypto/bio/bss_file.c', 'openssl/crypto/bio/bss_log.c', @@ -207,6 +257,7 @@ 'openssl/crypto/cmp/cmp_client.c', 'openssl/crypto/cmp/cmp_ctx.c', 'openssl/crypto/cmp/cmp_err.c', + 'openssl/crypto/cmp/cmp_genm.c', 'openssl/crypto/cmp/cmp_hdr.c', 'openssl/crypto/cmp/cmp_http.c', 'openssl/crypto/cmp/cmp_msg.c', @@ -383,7 +434,9 @@ 'openssl/crypto/err/err_all.c', 'openssl/crypto/err/err_all_legacy.c', 'openssl/crypto/err/err_blocks.c', + 'openssl/crypto/err/err_mark.c', 'openssl/crypto/err/err_prn.c', + 'openssl/crypto/err/err_save.c', 'openssl/crypto/ess/ess_asn1.c', 'openssl/crypto/ess/ess_err.c', 'openssl/crypto/ess/ess_lib.c', @@ -466,7 +519,9 @@ 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -474,7 +529,11 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', + 'openssl/crypto/hpke/hpke.c', + 'openssl/crypto/hpke/hpke_util.c', 'openssl/crypto/http/http_client.c', 'openssl/crypto/http/http_err.c', 'openssl/crypto/http/http_lib.c', @@ -488,6 +547,7 @@ 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', 'openssl/crypto/bsearch.c', + 'openssl/crypto/comp_methods.c', 'openssl/crypto/context.c', 'openssl/crypto/core_algorithm.c', 'openssl/crypto/core_fetch.c', @@ -497,10 +557,13 @@ 'openssl/crypto/cryptlib.c', 'openssl/crypto/ctype.c', 'openssl/crypto/cversion.c', + 'openssl/crypto/defaults.c', 'openssl/crypto/der_writer.c', + 'openssl/crypto/deterministic_nonce.c', 'openssl/crypto/ebcdic.c', 'openssl/crypto/ex_data.c', 'openssl/crypto/getenv.c', + 'openssl/crypto/indicator_core.c', 'openssl/crypto/info.c', 'openssl/crypto/init.c', 'openssl/crypto/initthread.c', @@ -524,12 +587,16 @@ 'openssl/crypto/provider_core.c', 'openssl/crypto/provider_predefined.c', 'openssl/crypto/punycode.c', + 'openssl/crypto/quic_vlint.c', 'openssl/crypto/self_test_core.c', + 'openssl/crypto/sleep.c', 'openssl/crypto/sparse_array.c', + 'openssl/crypto/ssl_err.c', 'openssl/crypto/threads_lib.c', 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', 'openssl/crypto/trace.c', 'openssl/crypto/uid.c', 'openssl/crypto/md4/md4_dgst.c', @@ -539,6 +606,15 @@ 'openssl/crypto/md5/md5_sha1.c', 'openssl/crypto/mdc2/mdc2_one.c', 'openssl/crypto/mdc2/mdc2dgst.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -550,6 +626,7 @@ 'openssl/crypto/modes/siv128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/objects/o_names.c', 'openssl/crypto/objects/obj_dat.c', 'openssl/crypto/objects/obj_err.c', @@ -613,6 +690,7 @@ 'openssl/crypto/rand/rand_lib.c', 'openssl/crypto/rand/rand_meth.c', 'openssl/crypto/rand/rand_pool.c', + 'openssl/crypto/rand/rand_uniform.c', 'openssl/crypto/rand/randfile.c', 'openssl/crypto/rc2/rc2_cbc.c', 'openssl/crypto/rc2/rc2_ecb.c', @@ -658,6 +736,16 @@ 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', 'openssl/crypto/siphash/siphash.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/sm2/sm2_crypt.c', 'openssl/crypto/sm2/sm2_err.c', 'openssl/crypto/sm2/sm2_key.c', @@ -675,6 +763,12 @@ 'openssl/crypto/store/store_register.c', 'openssl/crypto/store/store_result.c', 'openssl/crypto/store/store_strings.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/crypto/ts/ts_asn1.c', 'openssl/crypto/ts/ts_conf.c', 'openssl/crypto/ts/ts_err.c', @@ -702,14 +796,22 @@ 'openssl/crypto/x509/pcy_map.c', 'openssl/crypto/x509/pcy_node.c', 'openssl/crypto/x509/pcy_tree.c', + 'openssl/crypto/x509/t_acert.c', 'openssl/crypto/x509/t_crl.c', 'openssl/crypto/x509/t_req.c', 'openssl/crypto/x509/t_x509.c', + 'openssl/crypto/x509/v3_aaa.c', + 'openssl/crypto/x509/v3_ac_tgt.c', 'openssl/crypto/x509/v3_addr.c', 'openssl/crypto/x509/v3_admis.c', 'openssl/crypto/x509/v3_akeya.c', 'openssl/crypto/x509/v3_akid.c', 'openssl/crypto/x509/v3_asid.c', + 'openssl/crypto/x509/v3_attrdesc.c', + 'openssl/crypto/x509/v3_attrmap.c', + 'openssl/crypto/x509/v3_audit_id.c', + 'openssl/crypto/x509/v3_authattid.c', + 'openssl/crypto/x509/v3_battcons.c', 'openssl/crypto/x509/v3_bcons.c', 'openssl/crypto/x509/v3_bitst.c', 'openssl/crypto/x509/v3_conf.c', @@ -718,12 +820,17 @@ 'openssl/crypto/x509/v3_enum.c', 'openssl/crypto/x509/v3_extku.c', 'openssl/crypto/x509/v3_genn.c', + 'openssl/crypto/x509/v3_group_ac.c', 'openssl/crypto/x509/v3_ia5.c', + 'openssl/crypto/x509/v3_ind_iss.c', 'openssl/crypto/x509/v3_info.c', 'openssl/crypto/x509/v3_int.c', + 'openssl/crypto/x509/v3_iobo.c', 'openssl/crypto/x509/v3_ist.c', 'openssl/crypto/x509/v3_lib.c', 'openssl/crypto/x509/v3_ncons.c', + 'openssl/crypto/x509/v3_no_ass.c', + 'openssl/crypto/x509/v3_no_rev_avail.c', 'openssl/crypto/x509/v3_pci.c', 'openssl/crypto/x509/v3_pcia.c', 'openssl/crypto/x509/v3_pcons.c', @@ -731,13 +838,20 @@ 'openssl/crypto/x509/v3_pmaps.c', 'openssl/crypto/x509/v3_prn.c', 'openssl/crypto/x509/v3_purp.c', + 'openssl/crypto/x509/v3_rolespec.c', 'openssl/crypto/x509/v3_san.c', + 'openssl/crypto/x509/v3_sda.c', + 'openssl/crypto/x509/v3_single_use.c', 'openssl/crypto/x509/v3_skid.c', + 'openssl/crypto/x509/v3_soa_id.c', 'openssl/crypto/x509/v3_sxnet.c', + 'openssl/crypto/x509/v3_timespec.c', 'openssl/crypto/x509/v3_tlsf.c', + 'openssl/crypto/x509/v3_usernotice.c', 'openssl/crypto/x509/v3_utf8.c', 'openssl/crypto/x509/v3_utl.c', 'openssl/crypto/x509/v3err.c', + 'openssl/crypto/x509/x509_acert.c', 'openssl/crypto/x509/x509_att.c', 'openssl/crypto/x509/x509_cmp.c', 'openssl/crypto/x509/x509_d2.c', @@ -755,6 +869,7 @@ 'openssl/crypto/x509/x509_v3.c', 'openssl/crypto/x509/x509_vfy.c', 'openssl/crypto/x509/x509_vpm.c', + 'openssl/crypto/x509/x509aset.c', 'openssl/crypto/x509/x509cset.c', 'openssl/crypto/x509/x509name.c', 'openssl/crypto/x509/x509rset.c', @@ -764,6 +879,7 @@ 'openssl/crypto/x509/x_attrib.c', 'openssl/crypto/x509/x_crl.c', 'openssl/crypto/x509/x_exten.c', + 'openssl/crypto/x509/x_ietfatt.c', 'openssl/crypto/x509/x_name.c', 'openssl/crypto/x509/x_pubkey.c', 'openssl/crypto/x509/x_req.c', @@ -795,6 +911,9 @@ 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c', 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', @@ -819,7 +938,13 @@ 'openssl/providers/implementations/ciphers/cipher_cts.c', 'openssl/providers/implementations/ciphers/cipher_null.c', 'openssl/providers/implementations/ciphers/cipher_sm4.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm_hw.c', 'openssl/providers/implementations/ciphers/cipher_sm4_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts_hw.c', 'openssl/providers/implementations/ciphers/cipher_tdes.c', 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', 'openssl/providers/implementations/ciphers/cipher_tdes_default.c', @@ -848,11 +973,16 @@ 'openssl/providers/implementations/encode_decode/encode_key2ms.c', 'openssl/providers/implementations/encode_decode/encode_key2text.c', 'openssl/providers/implementations/encode_decode/endecoder_common.c', + 'openssl/providers/implementations/encode_decode/ml_common_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_dsa_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_kem_codecs.c', 'openssl/providers/implementations/exchange/dh_exch.c', 'openssl/providers/implementations/exchange/ecdh_exch.c', 'openssl/providers/implementations/exchange/ecx_exch.c', 'openssl/providers/implementations/exchange/kdf_exch.c', + 'openssl/providers/implementations/kdfs/argon2.c', 'openssl/providers/implementations/kdfs/hkdf.c', + 'openssl/providers/implementations/kdfs/hmacdrbg_kdf.c', 'openssl/providers/implementations/kdfs/kbkdf.c', 'openssl/providers/implementations/kdfs/krb5kdf.c', 'openssl/providers/implementations/kdfs/pbkdf2.c', @@ -863,6 +993,11 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ec_kem.c', + 'openssl/providers/implementations/kem/ecx_kem.c', + 'openssl/providers/implementations/kem/kem_util.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -870,7 +1005,11 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/blake2b_mac.c', 'openssl/providers/implementations/macs/blake2s_mac.c', 'openssl/providers/implementations/macs/cmac_prov.c', @@ -879,12 +1018,12 @@ 'openssl/providers/implementations/macs/kmac_prov.c', 'openssl/providers/implementations/macs/poly1305_prov.c', 'openssl/providers/implementations/macs/siphash_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', 'openssl/providers/implementations/rands/seed_src.c', + 'openssl/providers/implementations/rands/seed_src_jitter.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/rands/seeding/rand_cpu_x86.c', 'openssl/providers/implementations/rands/seeding/rand_tsc.c', @@ -894,17 +1033,24 @@ 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', 'openssl/providers/implementations/signature/sm2_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', 'openssl/providers/implementations/storemgmt/file_store.c', 'openssl/providers/implementations/storemgmt/file_store_any2obj.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/providers/implementations/storemgmt/winstore_store.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -915,7 +1061,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/implementations/ciphers/cipher_blowfish.c', 'openssl/providers/implementations/ciphers/cipher_blowfish_hw.c', 'openssl/providers/implementations/ciphers/cipher_cast5.c', @@ -940,6 +1086,7 @@ 'openssl/providers/implementations/digests/ripemd_prov.c', 'openssl/providers/implementations/digests/wp_prov.c', 'openssl/providers/implementations/kdfs/pbkdf1.c', + 'openssl/providers/implementations/kdfs/pvkkdf.c', 'openssl/providers/prov_running.c', 'openssl/providers/legacyprov.c', ], @@ -949,10 +1096,16 @@ './config/archs/VC-WIN64A/asm/crypto/aes/aesni-sha1-x86_64.asm', './config/archs/VC-WIN64A/asm/crypto/aes/aesni-sha256-x86_64.asm', './config/archs/VC-WIN64A/asm/crypto/aes/aesni-x86_64.asm', + './config/archs/VC-WIN64A/asm/crypto/aes/aesni-xts-avx512.asm', './config/archs/VC-WIN64A/asm/crypto/aes/bsaes-x86_64.asm', './config/archs/VC-WIN64A/asm/crypto/aes/vpaes-x86_64.asm', + './config/archs/VC-WIN64A/asm/crypto/bn/rsaz-2k-avx512.asm', + './config/archs/VC-WIN64A/asm/crypto/bn/rsaz-2k-avxifma.asm', + './config/archs/VC-WIN64A/asm/crypto/bn/rsaz-3k-avx512.asm', + './config/archs/VC-WIN64A/asm/crypto/bn/rsaz-3k-avxifma.asm', + './config/archs/VC-WIN64A/asm/crypto/bn/rsaz-4k-avx512.asm', + './config/archs/VC-WIN64A/asm/crypto/bn/rsaz-4k-avxifma.asm', './config/archs/VC-WIN64A/asm/crypto/bn/rsaz-avx2.asm', - './config/archs/VC-WIN64A/asm/crypto/bn/rsaz-avx512.asm', './config/archs/VC-WIN64A/asm/crypto/bn/rsaz-x86_64.asm', './config/archs/VC-WIN64A/asm/crypto/bn/x86_64-gf2m.asm', './config/archs/VC-WIN64A/asm/crypto/bn/x86_64-mont.asm', @@ -961,8 +1114,10 @@ './config/archs/VC-WIN64A/asm/crypto/chacha/chacha-x86_64.asm', './config/archs/VC-WIN64A/asm/crypto/ec/ecp_nistz256-x86_64.asm', './config/archs/VC-WIN64A/asm/crypto/ec/x25519-x86_64.asm', + './config/archs/VC-WIN64A/asm/crypto/params_idx.c', './config/archs/VC-WIN64A/asm/crypto/x86_64cpuid.asm', './config/archs/VC-WIN64A/asm/crypto/md5/md5-x86_64.asm', + './config/archs/VC-WIN64A/asm/crypto/modes/aes-gcm-avx512.asm', './config/archs/VC-WIN64A/asm/crypto/modes/aesni-gcm-x86_64.asm', './config/archs/VC-WIN64A/asm/crypto/modes/ghash-x86_64.asm', './config/archs/VC-WIN64A/asm/crypto/poly1305/poly1305-x86_64.asm', @@ -981,7 +1136,9 @@ './config/archs/VC-WIN64A/asm/providers/common/der/der_dsa_gen.c', './config/archs/VC-WIN64A/asm/providers/common/der/der_ec_gen.c', './config/archs/VC-WIN64A/asm/providers/common/der/der_ecx_gen.c', + './config/archs/VC-WIN64A/asm/providers/common/der/der_ml_dsa_gen.c', './config/archs/VC-WIN64A/asm/providers/common/der/der_rsa_gen.c', + './config/archs/VC-WIN64A/asm/providers/common/der/der_slh_dsa_gen.c', './config/archs/VC-WIN64A/asm/providers/common/der/der_wrap_gen.c', ], 'openssl_defines_VC-WIN64A': [ diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/providers/common/der/der_ml_dsa_gen.c b/deps/openssl/config/archs/VC-WIN64A/asm/providers/common/der/der_ml_dsa_gen.c new file mode 100644 index 00000000000000..4a8a113a268578 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm/providers/common/der/der_ml_dsa_gen.c @@ -0,0 +1,37 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_ml_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44] = { + DER_OID_V_id_ml_dsa_44 +}; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65] = { + DER_OID_V_id_ml_dsa_65 +}; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87] = { + DER_OID_V_id_ml_dsa_87 +}; + diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/providers/common/der/der_slh_dsa_gen.c b/deps/openssl/config/archs/VC-WIN64A/asm/providers/common/der/der_slh_dsa_gen.c new file mode 100644 index 00000000000000..1419a9515097dd --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm/providers/common/der/der_slh_dsa_gen.c @@ -0,0 +1,100 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_slh_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s] = { + DER_OID_V_id_slh_dsa_sha2_128s +}; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f] = { + DER_OID_V_id_slh_dsa_sha2_128f +}; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s] = { + DER_OID_V_id_slh_dsa_sha2_192s +}; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f] = { + DER_OID_V_id_slh_dsa_sha2_192f +}; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s] = { + DER_OID_V_id_slh_dsa_sha2_256s +}; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f] = { + DER_OID_V_id_slh_dsa_sha2_256f +}; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s] = { + DER_OID_V_id_slh_dsa_shake_128s +}; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f] = { + DER_OID_V_id_slh_dsa_shake_128f +}; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s] = { + DER_OID_V_id_slh_dsa_shake_192s +}; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f] = { + DER_OID_V_id_slh_dsa_shake_192f +}; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s] = { + DER_OID_V_id_slh_dsa_shake_256s +}; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f] = { + DER_OID_V_id_slh_dsa_shake_256f +}; + diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/providers/common/include/prov/der_ml_dsa.h b/deps/openssl/config/archs/VC-WIN64A/asm/providers/common/include/prov/der_ml_dsa.h new file mode 100644 index 00000000000000..c55f780ab4527c --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm/providers/common/include/prov/der_ml_dsa.h @@ -0,0 +1,40 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_ml_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +#define DER_OID_V_id_ml_dsa_44 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x11 +#define DER_OID_SZ_id_ml_dsa_44 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44]; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +#define DER_OID_V_id_ml_dsa_65 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x12 +#define DER_OID_SZ_id_ml_dsa_65 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65]; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +#define DER_OID_V_id_ml_dsa_87 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x13 +#define DER_OID_SZ_id_ml_dsa_87 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87]; + + +int ossl_DER_w_algorithmIdentifier_ML_DSA(WPACKET *pkt, int tag, ML_DSA_KEY *key); diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/providers/common/include/prov/der_slh_dsa.h b/deps/openssl/config/archs/VC-WIN64A/asm/providers/common/include/prov/der_slh_dsa.h new file mode 100644 index 00000000000000..760f8e7699be72 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm/providers/common/include/prov/der_slh_dsa.h @@ -0,0 +1,103 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_slh_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x14 +#define DER_OID_SZ_id_slh_dsa_sha2_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s]; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x15 +#define DER_OID_SZ_id_slh_dsa_sha2_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f]; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x16 +#define DER_OID_SZ_id_slh_dsa_sha2_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s]; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x17 +#define DER_OID_SZ_id_slh_dsa_sha2_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f]; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x18 +#define DER_OID_SZ_id_slh_dsa_sha2_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s]; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x19 +#define DER_OID_SZ_id_slh_dsa_sha2_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f]; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +#define DER_OID_V_id_slh_dsa_shake_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1A +#define DER_OID_SZ_id_slh_dsa_shake_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s]; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +#define DER_OID_V_id_slh_dsa_shake_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1B +#define DER_OID_SZ_id_slh_dsa_shake_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f]; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +#define DER_OID_V_id_slh_dsa_shake_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1C +#define DER_OID_SZ_id_slh_dsa_shake_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s]; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +#define DER_OID_V_id_slh_dsa_shake_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1D +#define DER_OID_SZ_id_slh_dsa_shake_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f]; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +#define DER_OID_V_id_slh_dsa_shake_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1E +#define DER_OID_SZ_id_slh_dsa_shake_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s]; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +#define DER_OID_V_id_slh_dsa_shake_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1F +#define DER_OID_SZ_id_slh_dsa_shake_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f]; + + +int ossl_DER_w_algorithmIdentifier_SLH_DSA(WPACKET *pkt, int tag, SLH_DSA_KEY *key); diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/apps/progs.c b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/apps/progs.c index 43cef00799b86e..acc204a3e6e781 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/apps/progs.c +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/apps/progs.c @@ -89,6 +89,7 @@ FUNCTION functions[] = { {FT_general, "s_time", s_time_main, s_time_options, NULL, NULL}, #endif {FT_general, "sess_id", sess_id_main, sess_id_options, NULL, NULL}, + {FT_general, "skeyutl", skeyutl_main, skeyutl_options, NULL, NULL}, {FT_general, "smime", smime_main, smime_options, NULL, NULL}, {FT_general, "speed", speed_main, speed_options, NULL, NULL}, {FT_general, "spkac", spkac_main, spkac_options, NULL, NULL}, @@ -225,9 +226,15 @@ FUNCTION functions[] = { {FT_cipher, "camellia-256-ecb", enc_main, enc_options, NULL}, #endif {FT_cipher, "base64", enc_main, enc_options, NULL}, -#ifdef ZLIB +#ifndef OPENSSL_NO_ZLIB {FT_cipher, "zlib", enc_main, enc_options, NULL}, #endif +#ifndef OPENSSL_NO_BROTLI + {FT_cipher, "brotli", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ZSTD + {FT_cipher, "zstd", enc_main, enc_options, NULL}, +#endif #ifndef OPENSSL_NO_DES {FT_cipher, "des", enc_main, enc_options, NULL}, #endif diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm index b774af6c5bb0b0..3fe9c6d5f901bd 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm @@ -32,6 +32,7 @@ our %config = ( "CPPINCLUDES" => [], "CXXFLAGS" => [], "FIPSKEY" => "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813", + "FIPS_VENDOR" => "OpenSSL FIPS Provider", "HASHBANGPERL" => "/usr/bin/env perl", "LD" => "link", "LDFLAGS" => [ @@ -46,7 +47,7 @@ our %config = ( "RANLIB" => "ranlib", "RC" => "rc", "RCFLAGS" => [], - "api" => "30000", + "api" => "30500", "b32" => "0", "b64" => "1", "b64l" => "0", @@ -68,11 +69,13 @@ our %config = ( "doc/build.info", "test/build.info", "engines/build.info", + "exporters/build.info", "crypto/objects/build.info", "crypto/buffer/build.info", "crypto/bio/build.info", "crypto/stack/build.info", "crypto/lhash/build.info", + "crypto/hashtable/build.info", "crypto/rand/build.info", "crypto/evp/build.info", "crypto/asn1/build.info", @@ -90,6 +93,7 @@ our %config = ( "crypto/md5/build.info", "crypto/sha/build.info", "crypto/mdc2/build.info", + "crypto/ml_kem/build.info", "crypto/hmac/build.info", "crypto/ripemd/build.info", "crypto/whrlpool/build.info", @@ -131,11 +135,19 @@ our %config = ( "crypto/cmp/build.info", "crypto/encode_decode/build.info", "crypto/ffc/build.info", + "crypto/hpke/build.info", + "crypto/thread/build.info", + "crypto/ml_dsa/build.info", + "crypto/slh_dsa/build.info", + "ssl/record/build.info", + "ssl/rio/build.info", + "ssl/quic/build.info", "apps/lib/build.info", "providers/common/build.info", "providers/implementations/build.info", "providers/fips/build.info", "doc/man1/build.info", + "ssl/record/methods/build.info", "providers/common/der/build.info", "providers/implementations/digests/build.info", "providers/implementations/ciphers/build.info", @@ -149,6 +161,7 @@ our %config = ( "providers/implementations/encode_decode/build.info", "providers/implementations/storemgmt/build.info", "providers/implementations/kem/build.info", + "providers/implementations/skeymgmt/build.info", "providers/implementations/rands/seeding/build.info" ], "build_metadata" => "", @@ -168,7 +181,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.17", + "full_version" => "3.5.2", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -178,37 +191,51 @@ our %config = ( "major" => "3", "makedep_scheme" => "VC", "makedepcmd" => "\$(CC) /Zs /showIncludes", - "minor" => "0", + "minor" => "5", "openssl_api_defines" => [ - "OPENSSL_CONFIGURED_API=30000" + "OPENSSL_CONFIGURED_API=30500" ], "openssl_feature_defines" => [ "OPENSSL_RAND_SEED_OS", "OPENSSL_THREADS", "OPENSSL_NO_AFALGENG", "OPENSSL_NO_ASAN", + "OPENSSL_NO_BROTLI", + "OPENSSL_NO_BROTLI_DYNAMIC", "OPENSSL_NO_COMP", "OPENSSL_NO_CRYPTO_MDEBUG", "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE", + "OPENSSL_NO_DEMOS", "OPENSSL_NO_DEVCRYPTOENG", "OPENSSL_NO_EC_NISTP_64_GCC_128", "OPENSSL_NO_EGD", "OPENSSL_NO_EXTERNAL_TESTS", + "OPENSSL_NO_FIPS_JITTER", "OPENSSL_NO_FUZZ_AFL", "OPENSSL_NO_FUZZ_LIBFUZZER", + "OPENSSL_NO_H3DEMO", + "OPENSSL_NO_HQINTEROP", + "OPENSSL_NO_JITTER", "OPENSSL_NO_KTLS", "OPENSSL_NO_LOADERENG", "OPENSSL_NO_MD2", "OPENSSL_NO_MSAN", + "OPENSSL_NO_PIE", "OPENSSL_NO_RC5", "OPENSSL_NO_SCTP", "OPENSSL_NO_SSL3", "OPENSSL_NO_SSL3_METHOD", + "OPENSSL_NO_SSLKEYLOG", + "OPENSSL_NO_TFO", "OPENSSL_NO_TRACE", "OPENSSL_NO_UBSAN", "OPENSSL_NO_UNIT_TEST", "OPENSSL_NO_UPLINK", "OPENSSL_NO_WEAK_SSL_CIPHERS", + "OPENSSL_NO_ZLIB", + "OPENSSL_NO_ZLIB_DYNAMIC", + "OPENSSL_NO_ZSTD", + "OPENSSL_NO_ZSTD_DYNAMIC", "OPENSSL_NO_DYNAMIC_ENGINE" ], "openssl_other_defines" => [ @@ -218,11 +245,11 @@ our %config = ( "OPENSSL_SYS_WIN64A" ], "openssldir" => "", - "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "17", + "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", + "patch" => "2", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", - "perl_version" => "5.38.2", + "perl_version" => "5.34.0", "perlargv" => [ "no-comp", "no-shared", @@ -252,6 +279,7 @@ our %config = ( "LDLIBS" => undef, "MT" => undef, "MTFLAGS" => undef, + "OBJCOPY" => undef, "OPENSSL_LOCAL_CONFIG_DIR" => undef, "PERL" => undef, "RANLIB" => undef, @@ -271,11 +299,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "1 Jul 2025", + "release_date" => "5 Aug 2025", "shlib_version" => "3", "sourcedir" => ".", "target" => "VC-WIN64A", - "version" => "3.0.17" + "version" => "3.5.2" ); our %target = ( "AR" => "lib", @@ -290,7 +318,7 @@ our %target = ( "LDFLAGS" => "/nologo /debug", "MT" => "mt", "MTFLAGS" => "-nologo", - "RANLIB" => "CODE(0x5590ca26eb18)", + "RANLIB" => "CODE(0x55c0b2e98700)", "RC" => "rc", "_conf_fname_int" => [ "Configurations/00-base-templates.conf", @@ -374,6 +402,8 @@ our %target = ( our @disablables = ( "acvp-tests", "afalgeng", + "apps", + "argon2", "aria", "asan", "asm", @@ -384,11 +414,14 @@ our @disablables = ( "autoload-config", "bf", "blake2", + "brotli", + "brotli-dynamic", "buildtest-c++", "bulk", "cached-fetch", "camellia", "capieng", + "winstore", "cast", "chacha", "cmac", @@ -397,11 +430,16 @@ our @disablables = ( "comp", "crypto-mdebug", "ct", + "default-thread-pool", + "demos", + "h3demo", + "hqinterop", "deprecated", "des", "devcryptoeng", "dgram", "dh", + "docs", "dsa", "dso", "dtls", @@ -411,6 +449,7 @@ our @disablables = ( "ec_nistp_64_gcc_128", "ecdh", "ecdsa", + "ecx", "egd", "engine", "err", @@ -418,10 +457,15 @@ our @disablables = ( "filenames", "fips", "fips-securitychecks", + "fips-post", + "fips-jitter", "fuzz-afl", "fuzz-libfuzzer", "gost", + "http", "idea", + "integrity-only-ciphers", + "jitter", "ktls", "legacy", "loadereng", @@ -429,6 +473,8 @@ our @disablables = ( "md2", "md4", "mdc2", + "ml-dsa", + "ml-kem", "module", "msan", "multiblock", @@ -437,10 +483,13 @@ our @disablables = ( "ocsp", "padlockeng", "pic", + "pie", "pinshared", "poly1305", "posix-io", "psk", + "quic", + "unstable-qlog", "rc2", "rc4", "rc5", @@ -454,7 +503,9 @@ our @disablables = ( "shared", "siphash", "siv", + "slh-dsa", "sm2", + "sm2-precomp", "sm3", "sm4", "sock", @@ -465,9 +516,13 @@ our @disablables = ( "ssl-trace", "static-engine", "stdio", + "sslkeylog", "tests", + "tfo", + "thread-pool", "threads", "tls", + "tls-deprecated-ec", "trace", "ts", "ubsan", @@ -478,6 +533,8 @@ our @disablables = ( "whirlpool", "zlib", "zlib-dynamic", + "zstd", + "zstd-dynamic", "ssl3", "ssl3-method", "tls1", @@ -498,33 +555,45 @@ our @disablables_int = ( our %disabled = ( "afalgeng" => "option", "asan" => "default", + "brotli" => "default", + "brotli-dynamic" => "default", "buildtest-c++" => "default", "comp" => "option", "crypto-mdebug" => "default", "crypto-mdebug-backtrace" => "default", + "demos" => "default", "devcryptoeng" => "default", "dynamic-engine" => "cascade", "ec_nistp_64_gcc_128" => "default", "egd" => "default", "external-tests" => "default", + "fips-jitter" => "default", "fuzz-afl" => "default", "fuzz-libfuzzer" => "default", + "h3demo" => "default", + "hqinterop" => "default", + "jitter" => "default", "ktls" => "default", "loadereng" => "cascade", "md2" => "default", "msan" => "default", + "pie" => "default", "rc5" => "default", "sctp" => "default", "shared" => "option", "ssl3" => "default", "ssl3-method" => "default", + "sslkeylog" => "default", + "tfo" => "default", "trace" => "default", "ubsan" => "default", "unit-test" => "default", "uplink" => "cascade", "weak-ssl-ciphers" => "default", "zlib" => "default", - "zlib-dynamic" => "default" + "zlib-dynamic" => "default", + "zstd" => "default", + "zstd-dynamic" => "default" ); our %withargs = (); our %unified_info = ( @@ -750,6 +819,11 @@ our %unified_info = ( "pod" => "1" } }, + "doc/man1/openssl-skeyutl.pod" => { + "doc/man1/openssl-skeyutl.pod.in" => { + "pod" => "1" + } + }, "doc/man1/openssl-smime.pod" => { "doc/man1/openssl-smime.pod.in" => { "pod" => "1" @@ -807,6 +881,21 @@ our %unified_info = ( } }, "generate" => { + "exporters/OpenSSLConfig.cmake" => { + "exporter" => "cmake" + }, + "exporters/OpenSSLConfigVersion.cmake" => { + "exporter" => "cmake" + }, + "exporters/libcrypto.pc" => { + "exporter" => "pkg-config" + }, + "exporters/libssl.pc" => { + "exporter" => "pkg-config" + }, + "exporters/openssl.pc" => { + "exporter" => "pkg-config" + }, "include/openssl/configuration.h" => { "skip" => "1" } @@ -827,6 +916,9 @@ our %unified_info = ( "providers/liblegacy.a" => { "noinst" => "1" }, + "providers/libtemplate.a" => { + "noinst" => "1" + }, "test/libtestutil.a" => { "has_main" => "1", "noinst" => "1" @@ -844,6 +936,9 @@ our %unified_info = ( } }, "programs" => { + "fuzz/acert-test" => { + "noinst" => "1" + }, "fuzz/asn1-test" => { "noinst" => "1" }, @@ -874,9 +969,60 @@ our %unified_info = ( "fuzz/ct-test" => { "noinst" => "1" }, + "fuzz/decoder-test" => { + "noinst" => "1" + }, + "fuzz/dtlsclient-test" => { + "noinst" => "1" + }, + "fuzz/dtlsserver-test" => { + "noinst" => "1" + }, + "fuzz/hashtable-test" => { + "noinst" => "1" + }, + "fuzz/ml-dsa-test" => { + "noinst" => "1" + }, + "fuzz/ml-kem-test" => { + "noinst" => "1" + }, + "fuzz/pem-test" => { + "noinst" => "1" + }, + "fuzz/provider-test" => { + "noinst" => "1" + }, + "fuzz/punycode-test" => { + "noinst" => "1" + }, + "fuzz/quic-client-test" => { + "noinst" => "1" + }, + "fuzz/quic-lcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-rcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-server-test" => { + "noinst" => "1" + }, + "fuzz/quic-srtm-test" => { + "noinst" => "1" + }, "fuzz/server-test" => { "noinst" => "1" }, + "fuzz/slh-dsa-test" => { + "noinst" => "1" + }, + "fuzz/smime-test" => { + "noinst" => "1" + }, + "fuzz/v3name-test" => { + "noinst" => "1" + }, "fuzz/x509-test" => { "noinst" => "1" }, @@ -928,18 +1074,30 @@ our %unified_info = ( "test/bftest" => { "noinst" => "1" }, + "test/bio_addr_test" => { + "noinst" => "1" + }, + "test/bio_base64_test" => { + "noinst" => "1" + }, "test/bio_callback_test" => { "noinst" => "1" }, "test/bio_core_test" => { "noinst" => "1" }, + "test/bio_dgram_test" => { + "noinst" => "1" + }, "test/bio_enc_test" => { "noinst" => "1" }, "test/bio_memleak_test" => { "noinst" => "1" }, + "test/bio_meth_test" => { + "noinst" => "1" + }, "test/bio_prefix_text" => { "noinst" => "1" }, @@ -949,6 +1107,9 @@ our %unified_info = ( "test/bio_readbuffer_test" => { "noinst" => "1" }, + "test/bio_tfo_test" => { + "noinst" => "1" + }, "test/bioprinttest" => { "noinst" => "1" }, @@ -958,6 +1119,9 @@ our %unified_info = ( "test/bntest" => { "noinst" => "1" }, + "test/build_wincrypt_test" => { + "noinst" => "1" + }, "test/buildtest_c_aes" => { "noinst" => "1" }, @@ -973,6 +1137,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => { "noinst" => "1" }, + "test/buildtest_c_byteorder" => { + "noinst" => "1" + }, "test/buildtest_c_camellia" => { "noinst" => "1" }, @@ -997,9 +1164,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => { "noinst" => "1" }, - "test/buildtest_c_core_names" => { - "noinst" => "1" - }, "test/buildtest_c_core_object" => { "noinst" => "1" }, @@ -1024,6 +1188,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => { "noinst" => "1" }, + "test/buildtest_c_e_ostime" => { + "noinst" => "1" + }, "test/buildtest_c_ebcdic" => { "noinst" => "1" }, @@ -1051,12 +1218,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => { "noinst" => "1" }, + "test/buildtest_c_hpke" => { + "noinst" => "1" + }, "test/buildtest_c_http" => { "noinst" => "1" }, "test/buildtest_c_idea" => { "noinst" => "1" }, + "test/buildtest_c_indicator" => { + "noinst" => "1" + }, "test/buildtest_c_kdf" => { "noinst" => "1" }, @@ -1072,6 +1245,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => { "noinst" => "1" }, + "test/buildtest_c_ml_kem" => { + "noinst" => "1" + }, "test/buildtest_c_modes" => { "noinst" => "1" }, @@ -1102,6 +1278,9 @@ our %unified_info = ( "test/buildtest_c_provider" => { "noinst" => "1" }, + "test/buildtest_c_quic" => { + "noinst" => "1" + }, "test/buildtest_c_rand" => { "noinst" => "1" }, @@ -1144,6 +1323,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => { "noinst" => "1" }, + "test/buildtest_c_thread" => { + "noinst" => "1" + }, "test/buildtest_c_tls1" => { "noinst" => "1" }, @@ -1159,6 +1341,12 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => { "noinst" => "1" }, + "test/byteorder_test" => { + "noinst" => "1" + }, + "test/ca_internals_test" => { + "noinst" => "1" + }, "test/casttest" => { "noinst" => "1" }, @@ -1243,6 +1431,9 @@ our %unified_info = ( "test/danetest" => { "noinst" => "1" }, + "test/decoder_propq_test" => { + "noinst" => "1" + }, "test/defltfips_test" => { "noinst" => "1" }, @@ -1315,15 +1506,24 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => { "noinst" => "1" }, + "test/evp_pkey_dhkem_test" => { + "noinst" => "1" + }, "test/evp_pkey_dparams_test" => { "noinst" => "1" }, "test/evp_pkey_provided_test" => { "noinst" => "1" }, + "test/evp_skey_test" => { + "noinst" => "1" + }, "test/evp_test" => { "noinst" => "1" }, + "test/evp_xof_test" => { + "noinst" => "1" + }, "test/exdatatest" => { "noinst" => "1" }, @@ -1351,6 +1551,9 @@ our %unified_info = ( "test/hmactest" => { "noinst" => "1" }, + "test/hpke_test" => { + "noinst" => "1" + }, "test/http_test" => { "noinst" => "1" }, @@ -1360,12 +1563,18 @@ our %unified_info = ( "test/igetest" => { "noinst" => "1" }, + "test/json_test" => { + "noinst" => "1" + }, "test/keymgmt_internal_test" => { "noinst" => "1" }, "test/lhash_test" => { "noinst" => "1" }, + "test/list_test" => { + "noinst" => "1" + }, "test/localetest" => { "noinst" => "1" }, @@ -1375,9 +1584,21 @@ our %unified_info = ( "test/mdc2test" => { "noinst" => "1" }, + "test/membio_test" => { + "noinst" => "1" + }, "test/memleaktest" => { "noinst" => "1" }, + "test/ml_dsa_test" => { + "noinst" => "1" + }, + "test/ml_kem_evp_extra_test" => { + "noinst" => "1" + }, + "test/ml_kem_internal_test" => { + "noinst" => "1" + }, "test/modes_internal_test" => { "noinst" => "1" }, @@ -1396,6 +1617,9 @@ our %unified_info = ( "test/packettest" => { "noinst" => "1" }, + "test/pairwise_fail_test" => { + "noinst" => "1" + }, "test/param_build_test" => { "noinst" => "1" }, @@ -1420,6 +1644,9 @@ our %unified_info = ( "test/pemtest" => { "noinst" => "1" }, + "test/pkcs12_api_test" => { + "noinst" => "1" + }, "test/pkcs12_format_test" => { "noinst" => "1" }, @@ -1435,6 +1662,9 @@ our %unified_info = ( "test/poly1305_internal_test" => { "noinst" => "1" }, + "test/priority_queue_test" => { + "noinst" => "1" + }, "test/property_test" => { "noinst" => "1" }, @@ -1444,6 +1674,9 @@ our %unified_info = ( "test/provfetchtest" => { "noinst" => "1" }, + "test/provider_default_search_path_test" => { + "noinst" => "1" + }, "test/provider_fallback_test" => { "noinst" => "1" }, @@ -1462,6 +1695,72 @@ our %unified_info = ( "test/punycode_test" => { "noinst" => "1" }, + "test/quic_ackm_test" => { + "noinst" => "1" + }, + "test/quic_cc_test" => { + "noinst" => "1" + }, + "test/quic_cfq_test" => { + "noinst" => "1" + }, + "test/quic_client_test" => { + "noinst" => "1" + }, + "test/quic_fc_test" => { + "noinst" => "1" + }, + "test/quic_fifd_test" => { + "noinst" => "1" + }, + "test/quic_lcidm_test" => { + "noinst" => "1" + }, + "test/quic_multistream_test" => { + "noinst" => "1" + }, + "test/quic_newcid_test" => { + "noinst" => "1" + }, + "test/quic_qlog_test" => { + "noinst" => "1" + }, + "test/quic_radix_test" => { + "noinst" => "1" + }, + "test/quic_rcidm_test" => { + "noinst" => "1" + }, + "test/quic_record_test" => { + "noinst" => "1" + }, + "test/quic_srt_gen_test" => { + "noinst" => "1" + }, + "test/quic_srtm_test" => { + "noinst" => "1" + }, + "test/quic_stream_test" => { + "noinst" => "1" + }, + "test/quic_tserver_test" => { + "noinst" => "1" + }, + "test/quic_txp_test" => { + "noinst" => "1" + }, + "test/quic_txpim_test" => { + "noinst" => "1" + }, + "test/quic_wire_test" => { + "noinst" => "1" + }, + "test/quicapitest" => { + "noinst" => "1" + }, + "test/quicfaultstest" => { + "noinst" => "1" + }, "test/rand_status_test" => { "noinst" => "1" }, @@ -1477,12 +1776,15 @@ our %unified_info = ( "test/rc5test" => { "noinst" => "1" }, - "test/rdrand_sanitytest" => { + "test/rdcpu_sanitytest" => { "noinst" => "1" }, "test/recordlentest" => { "noinst" => "1" }, + "test/rpktest" => { + "noinst" => "1" + }, "test/rsa_complex" => { "noinst" => "1" }, @@ -1495,6 +1797,12 @@ our %unified_info = ( "test/rsa_test" => { "noinst" => "1" }, + "test/rsa_x931_test" => { + "noinst" => "1" + }, + "test/safe_math_test" => { + "noinst" => "1" + }, "test/sanitytest" => { "noinst" => "1" }, @@ -1510,6 +1818,9 @@ our %unified_info = ( "test/siphash_internal_test" => { "noinst" => "1" }, + "test/slh_dsa_test" => { + "noinst" => "1" + }, "test/sm2_internal_test" => { "noinst" => "1" }, @@ -1531,6 +1842,9 @@ our %unified_info = ( "test/ssl_ctx_test" => { "noinst" => "1" }, + "test/ssl_handshake_rtt_test" => { + "noinst" => "1" + }, "test/ssl_old_test" => { "noinst" => "1" }, @@ -1552,12 +1866,18 @@ our %unified_info = ( "test/stack_test" => { "noinst" => "1" }, + "test/strtoultest" => { + "noinst" => "1" + }, "test/sysdefaulttest" => { "noinst" => "1" }, "test/test_test" => { "noinst" => "1" }, + "test/threadpool_test" => { + "noinst" => "1" + }, "test/threadstest" => { "noinst" => "1" }, @@ -1567,12 +1887,18 @@ our %unified_info = ( "test/time_offset_test" => { "noinst" => "1" }, + "test/time_test" => { + "noinst" => "1" + }, "test/tls13ccstest" => { "noinst" => "1" }, "test/tls13encryptiontest" => { "noinst" => "1" }, + "test/tls13groupselection_test" => { + "noinst" => "1" + }, "test/trace_api_test" => { "noinst" => "1" }, @@ -1600,6 +1926,9 @@ our %unified_info = ( "test/wpackettest" => { "noinst" => "1" }, + "test/x509_acert_test" => { + "noinst" => "1" + }, "test/x509_check_cert_pkey_test" => { "noinst" => "1" }, @@ -1609,6 +1938,15 @@ our %unified_info = ( "test/x509_internal_test" => { "noinst" => "1" }, + "test/x509_load_cert_file_test" => { + "noinst" => "1" + }, + "test/x509_req_test" => { + "noinst" => "1" + }, + "test/x509_test" => { + "noinst" => "1" + }, "test/x509_time_test" => { "noinst" => "1" }, @@ -1685,6 +2023,7 @@ our %unified_info = ( "ECP_NISTZ256_ASM", "KECCAK1600_ASM", "OPENSSL_CPUID_OBJ", + "OPENSSL_IA32_SSE2", "SHA1_ASM", "SHA256_ASM", "SHA512_ASM", @@ -1713,6 +2052,9 @@ our %unified_info = ( "MD5_ASM", "RC4_ASM" ], + "test/endecode_test" => [ + "STATIC_LEGACY" + ], "test/evp_extra_test" => [ "STATIC_LEGACY" ], @@ -1725,14 +2067,21 @@ our %unified_info = ( }, "depends" => { "" => [ + "OpenSSLConfigVersion.cmake", + "crypto/params_idx.c", + "exporters/OpenSSLConfigVersion.cmake", + "exporters/openssl.pc", "include/crypto/bn_conf.h", "include/crypto/dso_conf.h", + "include/internal/param_names.h", "include/openssl/asn1.h", "include/openssl/asn1t.h", "include/openssl/bio.h", "include/openssl/cmp.h", "include/openssl/cms.h", + "include/openssl/comp.h", "include/openssl/conf.h", + "include/openssl/core_names.h", "include/openssl/crmf.h", "include/openssl/crypto.h", "include/openssl/ct.h", @@ -1749,10 +2098,22 @@ our %unified_info = ( "include/openssl/ssl.h", "include/openssl/ui.h", "include/openssl/x509.h", + "include/openssl/x509_acert.h", "include/openssl/x509_vfy.h", "include/openssl/x509v3.h", + "openssl.pc", "test/provider_internal_test.cnf" ], + "OpenSSLConfig.cmake" => [ + "builddata.pm" + ], + "OpenSSLConfigVersion.cmake" => [ + "OpenSSLConfig.cmake", + "builddata.pm" + ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/progs.h" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/progs.h" ], @@ -1898,6 +2259,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/progs.h" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/progs.h" + ], "apps/openssl-bin-smime.o" => [ "apps/progs.h" ], @@ -1986,6 +2350,9 @@ our %unified_info = ( "crypto/libcrypto-lib-info.o" => [ "crypto/buildinf.h" ], + "crypto/params_idx.c" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "crypto/rc4/rc4-586.S" => [ "crypto/perlasm/x86asm.pl" ], @@ -2151,6 +2518,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -2292,6 +2662,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -2328,6 +2701,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -2343,6 +2719,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -2415,6 +2794,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -2481,6 +2863,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -2580,6 +2965,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -2718,6 +3109,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -2835,6 +3229,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -2922,6 +3322,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -2994,9 +3397,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -3012,12 +3421,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -3087,9 +3502,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -3099,12 +3523,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -3120,9 +3556,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -3147,6 +3589,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -3162,6 +3607,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -3198,6 +3646,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -3471,6 +3922,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -3510,6 +3964,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -3531,6 +3988,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -3645,6 +4105,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -3672,9 +4135,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -3690,6 +4165,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -3699,12 +4177,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -3723,12 +4207,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -3738,9 +4234,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -3753,9 +4255,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -3771,24 +4285,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -3801,6 +4336,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -3810,8 +4351,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -3831,6 +4372,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -3879,6 +4435,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -3945,6 +4504,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -4068,9 +4630,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -4086,6 +4654,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -4110,9 +4681,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -4146,6 +4726,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -4203,15 +4786,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -4221,6 +4816,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -4242,9 +4840,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -4260,6 +4864,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -4272,9 +4879,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -4305,9 +4909,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -4323,12 +4924,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -4383,6 +5038,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -4392,9 +5050,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -4542,6 +5197,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -4683,6 +5341,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -4719,6 +5380,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -4734,6 +5398,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -4806,6 +5473,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -4872,6 +5542,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -4971,6 +5644,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -5109,6 +5788,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -5226,6 +5908,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -5313,6 +6001,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -5385,9 +6076,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -5403,12 +6100,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -5478,9 +6181,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -5490,12 +6202,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -5511,9 +6235,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -5538,6 +6268,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -5553,6 +6286,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -5589,6 +6325,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -5862,6 +6601,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -5901,6 +6643,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -5922,6 +6667,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -6036,6 +6784,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -6063,9 +6814,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -6081,6 +6844,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -6090,12 +6856,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -6114,12 +6886,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -6129,9 +6913,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -6144,9 +6934,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -6162,24 +6964,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -6192,6 +7015,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -6201,8 +7030,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -6222,6 +7051,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -6270,6 +7114,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -6336,6 +7183,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -6459,9 +7309,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -6477,6 +7333,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -6501,9 +7360,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -6537,6 +7405,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -6594,15 +7465,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -6612,6 +7495,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -6633,9 +7519,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -6651,6 +7543,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -6663,9 +7558,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -6696,9 +7588,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -6714,12 +7603,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -6774,6 +7717,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -6783,9 +7729,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -6965,6 +7908,10 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod.in", "doc/perlvars.pm" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in", + "doc/perlvars.pm" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in", "doc/perlvars.pm" @@ -7004,6 +7951,27 @@ our %unified_info = ( "doc/man7/openssl_user_macros.pod" => [ "doc/man7/openssl_user_macros.pod.in" ], + "exporters/OpenSSLConfig.cmake" => [ + "installdata.pm" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/OpenSSLConfig.cmake", + "installdata.pm" + ], + "exporters/libcrypto.pc" => [ + "installdata.pm" + ], + "exporters/libssl.pc" => [ + "installdata.pm" + ], + "exporters/openssl.pc" => [ + "exporters/libcrypto.pc", + "exporters/libssl.pc", + "installdata.pm" + ], + "fuzz/acert-test" => [ + "libcrypto" + ], "fuzz/asn1-test" => [ "libcrypto", "libssl" @@ -7036,17 +8004,85 @@ our %unified_info = ( "fuzz/ct-test" => [ "libcrypto" ], + "fuzz/decoder-test" => [ + "libcrypto" + ], + "fuzz/dtlsclient-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/dtlsserver-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/hashtable-test" => [ + "libcrypto.a" + ], + "fuzz/ml-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/ml-kem-test" => [ + "libcrypto.a" + ], + "fuzz/pem-test" => [ + "libcrypto.a" + ], + "fuzz/provider-test" => [ + "libcrypto" + ], + "fuzz/punycode-test" => [ + "libcrypto.a" + ], + "fuzz/quic-client-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-lcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-rcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-server-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-srtm-test" => [ + "libcrypto.a", + "libssl.a" + ], "fuzz/server-test" => [ "libcrypto", "libssl" ], + "fuzz/slh-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/smime-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/v3name-test" => [ + "libcrypto.a" + ], "fuzz/x509-test" => [ "libcrypto" ], + "include/internal/param_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], + "include/openssl/core_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "libcrypto.ld" => [ "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libcrypto.pc" => [ + "builddata.pm" + ], "libcrypto.rc" => [ "configdata.pm" ], @@ -7057,9 +8093,17 @@ our %unified_info = ( "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libssl.pc" => [ + "builddata.pm" + ], "libssl.rc" => [ "configdata.pm" ], + "openssl.pc" => [ + "builddata.pm", + "libcrypto.pc", + "libssl.pc" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/DIGESTS.asn1", "providers/common/der/NIST.asn1", @@ -7077,11 +8121,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7121,6 +8173,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov/der_rsa.h" ], @@ -7128,6 +8186,12 @@ our %unified_info = ( "providers/common/include/prov/der_digests.h", "providers/common/include/prov/der_rsa.h" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov/der_wrap.h" ], @@ -7167,11 +8231,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7204,9 +8276,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov/der_sm2.h" ], @@ -7219,9 +8297,15 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/legacy" => [ "libcrypto", "providers/liblegacy.a" @@ -7299,6 +8383,14 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_addr_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/bio_base64_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_callback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7307,6 +8399,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_dgram_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_enc_test" => [ "libcrypto", "test/libtestutil.a" @@ -7315,6 +8411,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_meth_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_prefix_text" => [ "libcrypto", "test/libtestutil.a" @@ -7327,6 +8427,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_tfo_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bioprinttest" => [ "libcrypto", "test/libtestutil.a" @@ -7339,6 +8443,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/build_wincrypt_test" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_aes" => [ "libcrypto", "libssl" @@ -7359,6 +8467,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_byteorder" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_camellia" => [ "libcrypto", "libssl" @@ -7391,10 +8503,6 @@ our %unified_info = ( "libcrypto", "libssl" ], - "test/buildtest_c_core_names" => [ - "libcrypto", - "libssl" - ], "test/buildtest_c_core_object" => [ "libcrypto", "libssl" @@ -7427,6 +8535,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_e_ostime" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_ebcdic" => [ "libcrypto", "libssl" @@ -7463,6 +8575,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_hpke" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_http" => [ "libcrypto", "libssl" @@ -7471,6 +8587,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_indicator" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_kdf" => [ "libcrypto", "libssl" @@ -7491,6 +8611,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_ml_kem" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_modes" => [ "libcrypto", "libssl" @@ -7531,6 +8655,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_quic" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_rand" => [ "libcrypto", "libssl" @@ -7587,6 +8715,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_thread" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_tls1" => [ "libcrypto", "libssl" @@ -7607,10 +8739,23 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/byteorder_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ca_internals_test" => [ + "libssl", + "test/libtestutil.a" + ], "test/casttest" => [ "libcrypto", "test/libtestutil.a" ], + "test/cert_comp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/chacha_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7724,6 +8869,10 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/decoder_propq_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/defltfips_test" => [ "libcrypto", "test/libtestutil.a" @@ -7780,6 +8929,8 @@ our %unified_info = ( ], "test/endecode_test" => [ "libcrypto.a", + "providers/libcommon.a", + "providers/liblegacy.a", "test/libtestutil.a" ], "test/endecoder_legacy_test" => [ @@ -7823,6 +8974,10 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => [ "libcrypto" ], + "test/evp_pkey_dhkem_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/evp_pkey_dparams_test" => [ "libcrypto", "test/libtestutil.a" @@ -7831,10 +8986,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/evp_skey_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/evp_xof_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/exdatatest" => [ "libcrypto", "test/libtestutil.a" @@ -7873,6 +9036,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/hpke_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/http_test" => [ "libcrypto", "test/libtestutil.a" @@ -7885,17 +9052,25 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/json_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/keymgmt_internal_test" => [ "libcrypto.a", "test/libtestutil.a" ], "test/lhash_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/libtestutil.a" => [ "libcrypto" ], + "test/list_test" => [ + "test/libtestutil.a" + ], "test/localetest" => [ "libcrypto", "test/libtestutil.a" @@ -7908,10 +9083,26 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/membio_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/memleaktest" => [ "libcrypto", "test/libtestutil.a" ], + "test/ml_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_evp_extra_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_internal_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/modes_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7936,6 +9127,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pairwise_fail_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/param_build_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7968,6 +9163,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pkcs12_api_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/pkcs12_format_test" => [ "libcrypto", "test/libtestutil.a" @@ -7988,6 +9187,11 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/priority_queue_test" => [ + "libcrypto", + "libssl.a", + "test/libtestutil.a" + ], "test/property_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8000,6 +9204,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/provider_default_search_path_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/provider_fallback_test" => [ "libcrypto", "test/libtestutil.a" @@ -8024,12 +9232,122 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/quic_ackm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cfq_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_client_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fifd_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_lcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_multistream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_newcid_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_qlog_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_radix_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_rcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_record_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srt_gen_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srtm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_stream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_tserver_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txpim_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_wire_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicapitest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicfaultstest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/rand_status_test" => [ "libcrypto", "test/libtestutil.a" ], "test/rand_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/rc2test" => [ @@ -8044,7 +9362,7 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "libcrypto.a", "test/libtestutil.a" ], @@ -8053,6 +9371,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/rpktest" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/rsa_mp_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8065,10 +9388,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/sanitytest" => [ + "test/rsa_x931_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/safe_math_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/sanitytest" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/secmemtest" => [ "libcrypto", "test/libtestutil.a" @@ -8086,6 +9417,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/slh_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/sm2_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8115,6 +9450,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/ssl_handshake_rtt_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/ssl_old_test" => [ "libcrypto.a", "libssl.a", @@ -8131,8 +9471,8 @@ our %unified_info = ( "test/libtestutil.a" ], "test/sslapitest" => [ - "libcrypto", - "libssl", + "libcrypto.a", + "libssl.a", "test/libtestutil.a" ], "test/sslbuffertest" => [ @@ -8149,6 +9489,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/strtoultest" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/sysdefaulttest" => [ "libcrypto", "libssl", @@ -8158,8 +9502,12 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/threadpool_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/threadstest" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/threadstest_fips" => [ @@ -8170,6 +9518,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/time_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/tls13ccstest" => [ "libcrypto", "libssl", @@ -8180,6 +9532,11 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/tls13groupselection_test" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/trace_api_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8217,6 +9574,10 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/x509_acert_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_check_cert_pkey_test" => [ "libcrypto", "test/libtestutil.a" @@ -8229,6 +9590,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/x509_load_cert_file_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_req_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_time_test" => [ "libcrypto", "test/libtestutil.a" @@ -8243,9 +9616,13 @@ our %unified_info = ( }, "dirinfo" => { "apps" => { + "deps" => [ + "apps/ca_internals_test-bin-ca.o" + ], "products" => { "bin" => [ - "apps/openssl" + "apps/openssl", + "test/ca_internals_test" ], "script" => [ "apps/CA.pl", @@ -8256,6 +9633,14 @@ our %unified_info = ( "apps/lib" => { "deps" => [ "apps/lib/openssl-bin-cmp_mock_srv.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", "apps/lib/cmp_client_test-bin-cmp_mock_srv.o", "apps/lib/uitest-bin-apps_ui.o", "apps/lib/libapps-lib-app_libctx.o", @@ -8264,12 +9649,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -8282,6 +9669,7 @@ our %unified_info = ( "products" => { "bin" => [ "apps/openssl", + "test/ca_internals_test", "test/cmp_client_test", "test/uitest" ], @@ -8293,8 +9681,12 @@ our %unified_info = ( }, "crypto" => { "deps" => [ + "crypto/asn1_time_test-bin-ctype.o", + "crypto/ca_internals_test-bin-ctype.o", + "crypto/packettest-bin-quic_vlint.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -8304,10 +9696,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -8324,6 +9719,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -8331,12 +9727,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libcrypto-lib-x86_64cpuid.o", @@ -8359,6 +9759,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -8367,9 +9768,15 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", "crypto/libfips-lib-x86_64cpuid.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test", + "test/packettest" + ], "lib" => [ "libcrypto", "providers/libfips.a" @@ -8389,6 +9796,7 @@ our %unified_info = ( "crypto/aes/libcrypto-lib-aesni-sha1-x86_64.o", "crypto/aes/libcrypto-lib-aesni-sha256-x86_64.o", "crypto/aes/libcrypto-lib-aesni-x86_64.o", + "crypto/aes/libcrypto-lib-aesni-xts-avx512.o", "crypto/aes/libcrypto-lib-bsaes-x86_64.o", "crypto/aes/libcrypto-lib-vpaes-x86_64.o", "crypto/aes/libfips-lib-aes-x86_64.o", @@ -8398,6 +9806,7 @@ our %unified_info = ( "crypto/aes/libfips-lib-aesni-sha1-x86_64.o", "crypto/aes/libfips-lib-aesni-sha256-x86_64.o", "crypto/aes/libfips-lib-aesni-x86_64.o", + "crypto/aes/libfips-lib-aesni-xts-avx512.o", "crypto/aes/libfips-lib-bsaes-x86_64.o", "crypto/aes/libfips-lib-vpaes-x86_64.o" ], @@ -8420,6 +9829,8 @@ our %unified_info = ( }, "crypto/asn1" => { "deps" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", "crypto/asn1/libcrypto-lib-a_bitstr.o", "crypto/asn1/libcrypto-lib-a_d2i_fp.o", "crypto/asn1/libcrypto-lib-a_digest.o", @@ -8486,6 +9897,10 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test" + ], "lib" => [ "libcrypto" ] @@ -8551,6 +9966,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -8600,8 +10016,13 @@ our %unified_info = ( "crypto/bn/libcrypto-lib-bn_srp.o", "crypto/bn/libcrypto-lib-bn_word.o", "crypto/bn/libcrypto-lib-bn_x931p.o", + "crypto/bn/libcrypto-lib-rsaz-2k-avx512.o", + "crypto/bn/libcrypto-lib-rsaz-2k-avxifma.o", + "crypto/bn/libcrypto-lib-rsaz-3k-avx512.o", + "crypto/bn/libcrypto-lib-rsaz-3k-avxifma.o", + "crypto/bn/libcrypto-lib-rsaz-4k-avx512.o", + "crypto/bn/libcrypto-lib-rsaz-4k-avxifma.o", "crypto/bn/libcrypto-lib-rsaz-avx2.o", - "crypto/bn/libcrypto-lib-rsaz-avx512.o", "crypto/bn/libcrypto-lib-rsaz-x86_64.o", "crypto/bn/libcrypto-lib-rsaz_exp.o", "crypto/bn/libcrypto-lib-rsaz_exp_x2.o", @@ -8636,8 +10057,13 @@ our %unified_info = ( "crypto/bn/libfips-lib-bn_sqr.o", "crypto/bn/libfips-lib-bn_sqrt.o", "crypto/bn/libfips-lib-bn_word.o", + "crypto/bn/libfips-lib-rsaz-2k-avx512.o", + "crypto/bn/libfips-lib-rsaz-2k-avxifma.o", + "crypto/bn/libfips-lib-rsaz-3k-avx512.o", + "crypto/bn/libfips-lib-rsaz-3k-avxifma.o", + "crypto/bn/libfips-lib-rsaz-4k-avx512.o", + "crypto/bn/libfips-lib-rsaz-4k-avxifma.o", "crypto/bn/libfips-lib-rsaz-avx2.o", - "crypto/bn/libfips-lib-rsaz-avx512.o", "crypto/bn/libfips-lib-rsaz-x86_64.o", "crypto/bn/libfips-lib-rsaz_exp.o", "crypto/bn/libfips-lib-rsaz_exp_x2.o", @@ -8722,6 +10148,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -9095,7 +10522,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", - "crypto/err/libcrypto-lib-err_prn.o" + "crypto/err/libcrypto-lib-err_mark.o", + "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o" ], "products" => { "lib" => [ @@ -9196,7 +10625,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/evp/libfips-lib-asymcipher.o", "crypto/evp/libfips-lib-dh_support.o", "crypto/evp/libfips-lib-digest.o", @@ -9212,14 +10643,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", - "crypto/evp/libfips-lib-signature.o" + "crypto/evp/libfips-lib-s_lib.o", + "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o" ], "products" => { "lib" => [ @@ -9252,6 +10684,20 @@ our %unified_info = ( ] } }, + "crypto/hashtable" => { + "deps" => [ + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/hmac" => { "deps" => [ "crypto/hmac/libcrypto-lib-hmac.o", @@ -9264,6 +10710,17 @@ our %unified_info = ( ] } }, + "crypto/hpke" => { + "deps" => [ + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, "crypto/http" => { "deps" => [ "crypto/http/libcrypto-lib-http_client.o", @@ -9348,8 +10805,47 @@ our %unified_info = ( ] } }, + "crypto/ml_dsa" => { + "deps" => [ + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ml_kem" => { + "deps" => [ + "crypto/ml_kem/libcrypto-lib-ml_kem.o", + "crypto/ml_kem/libfips-lib-ml_kem.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/modes" => { "deps" => [ + "crypto/modes/libcrypto-lib-aes-gcm-avx512.o", "crypto/modes/libcrypto-lib-aesni-gcm-x86_64.o", "crypto/modes/libcrypto-lib-cbc128.o", "crypto/modes/libcrypto-lib-ccm128.o", @@ -9363,6 +10859,8 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", + "crypto/modes/libfips-lib-aes-gcm-avx512.o", "crypto/modes/libfips-lib-aesni-gcm-x86_64.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", @@ -9372,7 +10870,8 @@ our %unified_info = ( "crypto/modes/libfips-lib-ghash-x86_64.o", "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", - "crypto/modes/libfips-lib-xts128.o" + "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o" ], "products" => { "lib" => [ @@ -9516,6 +11015,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rand/libfips-lib-rand_lib.o" ], @@ -9670,6 +11170,36 @@ our %unified_info = ( ] } }, + "crypto/slh_dsa" => { + "deps" => [ + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/sm2" => { "deps" => [ "crypto/sm2/libcrypto-lib-sm2_crypt.o", @@ -9743,6 +11273,38 @@ our %unified_info = ( ] } }, + "crypto/thread" => { + "deps" => [ + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/thread/arch" => { + "deps" => [ + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/ts" => { "deps" => [ "crypto/ts/libcrypto-lib-ts_asn1.o", @@ -9809,14 +11371,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -9825,12 +11395,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -9838,13 +11413,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -9862,6 +11444,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -9871,6 +11454,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -9898,6 +11482,7 @@ our %unified_info = ( "fuzz" => { "products" => { "bin" => [ + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -9908,13 +11493,31 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test" ] } }, "providers" => { "deps" => [ + "providers/endecode_test-bin-legacyprov.o", "providers/evp_extra_test-bin-legacyprov.o", "providers/libcrypto-lib-baseprov.o", "providers/libcrypto-lib-defltprov.o", @@ -9924,6 +11527,7 @@ our %unified_info = ( ], "products" => { "bin" => [ + "test/endecode_test", "test/evp_extra_test" ], "dso" => [ @@ -9975,8 +11579,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/der/libdefault-lib-der_rsa_sig.o", "providers/common/der/libdefault-lib-der_sm2_gen.o", @@ -9995,6 +11603,7 @@ our %unified_info = ( "providers/fips" => { "deps" => [ "providers/fips/fips-dso-fips_entry.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o" @@ -10038,6 +11647,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -10062,7 +11674,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -10159,7 +11777,10 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", - "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" + "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" ], "products" => { "lib" => [ @@ -10187,7 +11808,9 @@ our %unified_info = ( }, "providers/implementations/kdfs" => { "deps" => [ + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -10206,7 +11829,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", - "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" + "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" ], "products" => { "lib" => [ @@ -10218,13 +11842,22 @@ our %unified_info = ( }, "providers/implementations/kem" => { "deps" => [ + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", - "providers/implementations/kem/libfips-lib-rsa_kem.o" + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", + "providers/implementations/kem/libfips-lib-rsa_kem.o", + "providers/implementations/kem/libtemplate-lib-template_kem.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10236,19 +11869,29 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", - "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10276,18 +11919,18 @@ our %unified_info = ( }, "providers/implementations/rands" => { "deps" => [ - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o" ], "products" => { @@ -10316,13 +11959,31 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", - "providers/implementations/signature/libfips-lib-rsa_sig.o" + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", + "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/skeymgmt" => { + "deps" => [ + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o" ], "products" => { "lib" => [ @@ -10334,7 +11995,8 @@ our %unified_info = ( "providers/implementations/storemgmt" => { "deps" => [ "providers/implementations/storemgmt/libdefault-lib-file_store.o", - "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o" + "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", + "providers/implementations/storemgmt/libdefault-lib-winstore_store.o" ], "products" => { "lib" => [ @@ -10350,14 +12012,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -10373,32 +12036,107 @@ our %unified_info = ( "ssl/libssl-lib-t1_trce.o", "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", - "ssl/libssl-lib-tls_srp.o", - "ssl/libdefault-lib-s3_cbc.o", - "ssl/libfips-lib-s3_cbc.o" + "ssl/libssl-lib-tls_srp.o" ], "products" => { "lib" => [ - "libssl", - "providers/libdefault.a", - "providers/libfips.a" + "libssl" + ] + } + }, + "ssl/quic" => { + "deps" => [ + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, "ssl/record" => { "deps" => [ - "ssl/record/libssl-lib-dtls1_bitmap.o", "ssl/record/libssl-lib-rec_layer_d1.o", - "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/libssl-lib-rec_layer_s3.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "ssl/record/methods" => { + "deps" => [ + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/record/methods/libcommon-lib-tls_pad.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o", + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "products" => { "lib" => [ "libssl", - "providers/libcommon.a" + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "ssl/rio" => { + "deps" => [ + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, @@ -10436,9 +12174,40 @@ our %unified_info = ( "test/helpers/dtlstest-bin-ssltestlib.o", "test/helpers/endecode_test-bin-predefined_dhparams.o", "test/helpers/fatalerrtest-bin-ssltestlib.o", + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/helpers/pkcs12_api_test-bin-pkcs12.o", "test/helpers/pkcs12_format_test-bin-pkcs12.o", + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", "test/helpers/recordlentest-bin-ssltestlib.o", + "test/helpers/rpktest-bin-ssltestlib.o", "test/helpers/servername_test-bin-ssltestlib.o", + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/helpers/ssl_test-bin-handshake.o", "test/helpers/ssl_test-bin-handshake_srp.o", @@ -10447,7 +12216,8 @@ our %unified_info = ( "test/helpers/sslapitest-bin-ssltestlib.o", "test/helpers/sslbuffertest-bin-ssltestlib.o", "test/helpers/sslcorrupttest-bin-ssltestlib.o", - "test/helpers/tls13ccstest-bin-ssltestlib.o" + "test/helpers/tls13ccstest-bin-ssltestlib.o", + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" ], "products" => { "bin" => [ @@ -10465,16 +12235,37 @@ our %unified_info = ( "test/dtlstest", "test/endecode_test", "test/fatalerrtest", + "test/json_test", + "test/pkcs12_api_test", "test/pkcs12_format_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_radix_test", + "test/quic_srt_gen_test", + "test/quicapitest", + "test/quicfaultstest", "test/recordlentest", + "test/rpktest", "test/servername_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", "test/sslapitest", "test/sslbuffertest", "test/sslcorrupttest", - "test/tls13ccstest" + "test/tls13ccstest", + "test/tls13groupselection_test" + ] + } + }, + "test/radix" => { + "deps" => [ + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "products" => { + "bin" => [ + "test/quic_radix_test" ] } }, @@ -10486,6 +12277,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -10520,6 +12312,12 @@ our %unified_info = ( } }, "generate" => { + "OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], "apps/openssl.rc" => [ "util/mkrc.pl", "openssl" @@ -10534,6 +12332,19 @@ our %unified_info = ( "\"-H\"", "\$(APPS_OPENSSL)" ], + "builddata.pm" => [ + "util/mkinstallvars.pl", + "PREFIX=.", + "BINDIR=apps", + "APPLINKDIR=ms", + "LIBDIR=", + "INCLUDEDIR=include", + "\"INCLUDEDIR=\$(SRCDIR)/include\"", + "ENGINESDIR=engines", + "MODULESDIR=providers", + "\"VERSION=\$(VERSION)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"" + ], "crypto/aes/aes-586.S" => [ "crypto/aes/asm/aes-586.pl" ], @@ -10555,6 +12366,24 @@ our %unified_info = ( "crypto/aes/aes-ppc.s" => [ "crypto/aes/asm/aes-ppc.pl" ], + "crypto/aes/aes-riscv32-zkn.s" => [ + "crypto/aes/asm/aes-riscv32-zkn.pl" + ], + "crypto/aes/aes-riscv64-zkn.s" => [ + "crypto/aes/asm/aes-riscv64-zkn.pl" + ], + "crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvbb-zvkg-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkb-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkb-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkned.pl" + ], + "crypto/aes/aes-riscv64.s" => [ + "crypto/aes/asm/aes-riscv64.pl" + ], "crypto/aes/aes-s390x.S" => [ "crypto/aes/asm/aes-s390x.pl" ], @@ -10582,6 +12411,9 @@ our %unified_info = ( "crypto/aes/aesni-x86_64.s" => [ "crypto/aes/asm/aesni-x86_64.pl" ], + "crypto/aes/aesni-xts-avx512.s" => [ + "crypto/aes/asm/aesni-xts-avx512.pl" + ], "crypto/aes/aesp8-ppc.s" => [ "crypto/aes/asm/aesp8-ppc.pl" ], @@ -10594,12 +12426,18 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.S" => [ "crypto/aes/asm/bsaes-armv7.pl" ], + "crypto/aes/bsaes-armv8.S" => [ + "crypto/aes/asm/bsaes-armv8.pl" + ], "crypto/aes/bsaes-x86_64.s" => [ "crypto/aes/asm/bsaes-x86_64.pl" ], "crypto/aes/vpaes-armv8.S" => [ "crypto/aes/asm/vpaes-armv8.pl" ], + "crypto/aes/vpaes-loongarch64.S" => [ + "crypto/aes/asm/vpaes-loongarch64.pl" + ], "crypto/aes/vpaes-ppc.s" => [ "crypto/aes/asm/vpaes-ppc.pl" ], @@ -10660,15 +12498,33 @@ our %unified_info = ( "crypto/bn/ppc-mont.s" => [ "crypto/bn/asm/ppc-mont.pl" ], + "crypto/bn/ppc64-mont-fixed.s" => [ + "crypto/bn/asm/ppc64-mont-fixed.pl" + ], "crypto/bn/ppc64-mont.s" => [ "crypto/bn/asm/ppc64-mont.pl" ], + "crypto/bn/rsaz-2k-avx512.s" => [ + "crypto/bn/asm/rsaz-2k-avx512.pl" + ], + "crypto/bn/rsaz-2k-avxifma.s" => [ + "crypto/bn/asm/rsaz-2k-avxifma.pl" + ], + "crypto/bn/rsaz-3k-avx512.s" => [ + "crypto/bn/asm/rsaz-3k-avx512.pl" + ], + "crypto/bn/rsaz-3k-avxifma.s" => [ + "crypto/bn/asm/rsaz-3k-avxifma.pl" + ], + "crypto/bn/rsaz-4k-avx512.s" => [ + "crypto/bn/asm/rsaz-4k-avx512.pl" + ], + "crypto/bn/rsaz-4k-avxifma.s" => [ + "crypto/bn/asm/rsaz-4k-avxifma.pl" + ], "crypto/bn/rsaz-avx2.s" => [ "crypto/bn/asm/rsaz-avx2.pl" ], - "crypto/bn/rsaz-avx512.s" => [ - "crypto/bn/asm/rsaz-avx512.pl" - ], "crypto/bn/rsaz-x86_64.s" => [ "crypto/bn/asm/rsaz-x86_64.pl" ], @@ -10730,6 +12586,9 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.S" => [ "crypto/chacha/asm/chacha-armv4.pl" ], + "crypto/chacha/chacha-armv8-sve.S" => [ + "crypto/chacha/asm/chacha-armv8-sve.pl" + ], "crypto/chacha/chacha-armv8.S" => [ "crypto/chacha/asm/chacha-armv8.pl" ], @@ -10742,9 +12601,19 @@ our %unified_info = ( "crypto/chacha/chacha-ia64.s" => [ "crypto/chacha/chacha-ia64.S" ], + "crypto/chacha/chacha-loongarch64.S" => [ + "crypto/chacha/asm/chacha-loongarch64.pl" + ], "crypto/chacha/chacha-ppc.s" => [ "crypto/chacha/asm/chacha-ppc.pl" ], + "crypto/chacha/chacha-riscv64-v-zbb-zvkb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl", + "zvkb" + ], + "crypto/chacha/chacha-riscv64-v-zbb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl" + ], "crypto/chacha/chacha-s390x.S" => [ "crypto/chacha/asm/chacha-s390x.pl" ], @@ -10754,6 +12623,9 @@ our %unified_info = ( "crypto/chacha/chacha-x86_64.s" => [ "crypto/chacha/asm/chacha-x86_64.pl" ], + "crypto/chacha/chachap10-ppc.s" => [ + "crypto/chacha/asm/chachap10-ppc.pl" + ], "crypto/des/crypt586.S" => [ "crypto/des/asm/crypt586.pl" ], @@ -10766,6 +12638,9 @@ our %unified_info = ( "crypto/des/dest4-sparcv9.S" => [ "crypto/des/asm/dest4-sparcv9.pl" ], + "crypto/ec/ecp_nistp384-ppc64.s" => [ + "crypto/ec/asm/ecp_nistp384-ppc64.pl" + ], "crypto/ec/ecp_nistp521-ppc64.s" => [ "crypto/ec/asm/ecp_nistp521-ppc64.pl" ], @@ -10790,6 +12665,9 @@ our %unified_info = ( "crypto/ec/ecp_nistz256-x86_64.s" => [ "crypto/ec/asm/ecp_nistz256-x86_64.pl" ], + "crypto/ec/ecp_sm2p256-armv8.S" => [ + "crypto/ec/asm/ecp_sm2p256-armv8.pl" + ], "crypto/ec/x25519-ppc64.s" => [ "crypto/ec/asm/x25519-ppc64.pl" ], @@ -10799,18 +12677,39 @@ our %unified_info = ( "crypto/ia64cpuid.s" => [ "crypto/ia64cpuid.S" ], + "crypto/loongarch64cpuid.s" => [ + "crypto/loongarch64cpuid.pl" + ], "crypto/md5/md5-586.S" => [ "crypto/md5/asm/md5-586.pl" ], + "crypto/md5/md5-aarch64.S" => [ + "crypto/md5/asm/md5-aarch64.pl" + ], + "crypto/md5/md5-loongarch64.S" => [ + "crypto/md5/asm/md5-loongarch64.pl" + ], "crypto/md5/md5-sparcv9.S" => [ "crypto/md5/asm/md5-sparcv9.pl" ], "crypto/md5/md5-x86_64.s" => [ "crypto/md5/asm/md5-x86_64.pl" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.S" => [ + "crypto/modes/asm/aes-gcm-armv8-unroll8_64.pl" + ], "crypto/modes/aes-gcm-armv8_64.S" => [ "crypto/modes/asm/aes-gcm-armv8_64.pl" ], + "crypto/modes/aes-gcm-avx512.s" => [ + "crypto/modes/asm/aes-gcm-avx512.pl" + ], + "crypto/modes/aes-gcm-ppc.s" => [ + "crypto/modes/asm/aes-gcm-ppc.pl" + ], + "crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s" => [ + "crypto/modes/asm/aes-gcm-riscv64-zvkb-zvkg-zvkned.pl" + ], "crypto/modes/aesni-gcm-x86_64.s" => [ "crypto/modes/asm/aesni-gcm-x86_64.pl" ], @@ -10829,6 +12728,15 @@ our %unified_info = ( "crypto/modes/ghash-parisc.s" => [ "crypto/modes/asm/ghash-parisc.pl" ], + "crypto/modes/ghash-riscv64-zvkb-zvbc.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkb-zvbc.pl" + ], + "crypto/modes/ghash-riscv64-zvkg.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkg.pl" + ], + "crypto/modes/ghash-riscv64.s" => [ + "crypto/modes/asm/ghash-riscv64.pl" + ], "crypto/modes/ghash-s390x.S" => [ "crypto/modes/asm/ghash-s390x.pl" ], @@ -10847,6 +12755,9 @@ our %unified_info = ( "crypto/modes/ghashv8-armx.S" => [ "crypto/modes/asm/ghashv8-armx.pl" ], + "crypto/params_idx.c" => [ + "crypto/params_idx.c.in" + ], "crypto/pariscid.s" => [ "crypto/pariscid.pl" ], @@ -10907,6 +12818,12 @@ our %unified_info = ( "crypto/ripemd/rmd-586.S" => [ "crypto/ripemd/asm/rmd-586.pl" ], + "crypto/riscv32cpuid.s" => [ + "crypto/riscv32cpuid.pl" + ], + "crypto/riscv64cpuid.s" => [ + "crypto/riscv64cpuid.pl" + ], "crypto/s390xcpuid.S" => [ "crypto/s390xcpuid.pl" ], @@ -11015,6 +12932,9 @@ our %unified_info = ( "crypto/sha/sha256-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S" => [ + "crypto/sha/asm/sha256-riscv64-zvkb-zvknha_or_zvknhb.pl" + ], "crypto/sha/sha256-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -11051,6 +12971,9 @@ our %unified_info = ( "crypto/sha/sha512-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha512-riscv64-zvkb-zvknhb.S" => [ + "crypto/sha/asm/sha512-riscv64-zvkb-zvknhb.pl" + ], "crypto/sha/sha512-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -11063,6 +12986,24 @@ our %unified_info = ( "crypto/sha/sha512p8-ppc.s" => [ "crypto/sha/asm/sha512p8-ppc.pl" ], + "crypto/sm3/sm3-armv8.S" => [ + "crypto/sm3/asm/sm3-armv8.pl" + ], + "crypto/sm3/sm3-riscv64-zvksh.S" => [ + "crypto/sm3/asm/sm3-riscv64-zvksh.pl" + ], + "crypto/sm4/sm4-armv8.S" => [ + "crypto/sm4/asm/sm4-armv8.pl" + ], + "crypto/sm4/sm4-riscv64-zvksed.s" => [ + "crypto/sm4/asm/sm4-riscv64-zvksed.pl" + ], + "crypto/sm4/vpsm4-armv8.S" => [ + "crypto/sm4/asm/vpsm4-armv8.pl" + ], + "crypto/sm4/vpsm4_ex-armv8.S" => [ + "crypto/sm4/asm/vpsm4_ex-armv8.pl" + ], "crypto/uplink-ia64.s" => [ "ms/uplink-ia64.pl" ], @@ -11228,6 +13169,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -11369,6 +13313,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -11405,6 +13352,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -11420,6 +13370,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -11492,6 +13445,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -11558,6 +13514,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -11657,6 +13616,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -11795,6 +13760,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -11912,6 +13880,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -11999,6 +13973,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -12071,9 +14048,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -12089,12 +14072,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -12164,9 +14153,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -12176,12 +14174,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -12197,9 +14207,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -12224,6 +14240,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -12239,6 +14258,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -12275,6 +14297,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -12548,6 +14573,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -12587,6 +14615,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -12608,6 +14639,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -12722,6 +14756,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -12749,9 +14786,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -12767,6 +14816,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -12776,12 +14828,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -12800,12 +14858,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -12815,9 +14885,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -12830,9 +14906,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -12848,24 +14936,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -12878,6 +14987,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -12887,8 +15002,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -12908,6 +15023,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -12956,6 +15086,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -13022,6 +15155,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -13145,9 +15281,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -13163,6 +15305,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -13187,9 +15332,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -13223,6 +15377,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -13280,15 +15437,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -13298,6 +15467,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -13319,9 +15491,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -13337,6 +15515,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -13349,9 +15530,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -13382,9 +15560,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -13400,12 +15575,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -13460,6 +15689,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -13469,9 +15701,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -13619,6 +15848,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -13760,6 +15992,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -13796,6 +16031,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -13811,6 +16049,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -13883,6 +16124,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -13949,6 +16193,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -14048,6 +16295,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -14186,6 +16439,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -14303,6 +16559,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -14390,6 +16652,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -14462,9 +16727,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -14480,12 +16751,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -14555,9 +16832,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -14567,12 +16853,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -14588,9 +16886,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -14615,6 +16919,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -14630,6 +16937,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -14666,6 +16976,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -14939,6 +17252,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -14978,6 +17294,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -14999,6 +17318,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -15113,6 +17435,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -15140,9 +17465,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -15158,6 +17495,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -15167,12 +17507,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -15191,12 +17537,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -15206,9 +17564,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -15221,9 +17585,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -15239,24 +17615,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -15269,6 +17666,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -15278,8 +17681,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -15293,11 +17696,26 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], - "doc/man/man3/X509V3_get_d2i.3" => [ - "doc/man3/X509V3_get_d2i.pod" + "doc/man/man3/X509V3_get_d2i.3" => [ + "doc/man3/X509V3_get_d2i.pod" + ], + "doc/man/man3/X509V3_set_ctx.3" => [ + "doc/man3/X509V3_set_ctx.pod" + ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" ], - "doc/man/man3/X509V3_set_ctx.3" => [ - "doc/man3/X509V3_set_ctx.pod" + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" @@ -15347,6 +17765,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -15413,6 +17834,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -15536,9 +17960,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -15554,6 +17984,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -15578,9 +18011,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -15614,6 +18056,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -15671,15 +18116,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -15689,6 +18146,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -15710,9 +18170,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -15728,6 +18194,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -15740,9 +18209,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -15773,9 +18239,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -15791,12 +18254,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -15851,6 +18368,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -15860,9 +18380,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -15998,6 +18515,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc/man1/openssl-sess_id.pod.in" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in" ], @@ -16034,12 +18554,30 @@ our %unified_info = ( "engines/e_padlock-x86_64.s" => [ "engines/asm/e_padlock-x86_64.pl" ], + "exporters/OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], + "exporters/libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], + "exporters/libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "exporters/openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "include/crypto/bn_conf.h" => [ "include/crypto/bn_conf.h.in" ], "include/crypto/dso_conf.h" => [ "include/crypto/dso_conf.h.in" ], + "include/internal/param_names.h" => [ + "include/internal/param_names.h.in" + ], "include/openssl/asn1.h" => [ "include/openssl/asn1.h.in" ], @@ -16055,12 +18593,18 @@ our %unified_info = ( "include/openssl/cms.h" => [ "include/openssl/cms.h.in" ], + "include/openssl/comp.h" => [ + "include/openssl/comp.h.in" + ], "include/openssl/conf.h" => [ "include/openssl/conf.h.in" ], "include/openssl/configuration.h" => [ "include/openssl/configuration.h.in" ], + "include/openssl/core_names.h" => [ + "include/openssl/core_names.h.in" + ], "include/openssl/crmf.h" => [ "include/openssl/crmf.h.in" ], @@ -16109,16 +18653,37 @@ our %unified_info = ( "include/openssl/x509.h" => [ "include/openssl/x509.h.in" ], + "include/openssl/x509_acert.h" => [ + "include/openssl/x509_acert.h.in" + ], "include/openssl/x509_vfy.h" => [ "include/openssl/x509_vfy.h.in" ], "include/openssl/x509v3.h" => [ "include/openssl/x509v3.h.in" ], + "installdata.pm" => [ + "util/mkinstallvars.pl", + "\"PREFIX=\$(INSTALLTOP)\"", + "BINDIR=bin", + "\"LIBDIR=\$(LIBDIR)\"", + "\"libdir=\$(libdir)\"", + "INCLUDEDIR=include", + "APPLINKDIR=include/openssl", + "\"ENGINESDIR=\$(ENGINESDIR)\"", + "\"MODULESDIR=\$(MODULESDIR)\"", + "\"PKGCONFIGDIR=\$(PKGCONFIGDIR)\"", + "\"CMAKECONFIGDIR=\$(CMAKECONFIGDIR)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"", + "\"VERSION=\$(VERSION)\"" + ], "libcrypto.ld" => [ "util/libcrypto.num", "libcrypto" ], + "libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], "libcrypto.rc" => [ "util/mkrc.pl", "libcrypto" @@ -16127,10 +18692,16 @@ our %unified_info = ( "util/libssl.num", "libssl" ], + "libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], "libssl.rc" => [ "util/mkrc.pl", "libssl" ], + "openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/der_digests_gen.c.in" ], @@ -16143,9 +18714,15 @@ our %unified_info = ( "providers/common/der/der_ecx_gen.c" => [ "providers/common/der/der_ecx_gen.c.in" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/der_ml_dsa_gen.c.in" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/der_rsa_gen.c.in" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/der_slh_dsa_gen.c.in" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/der_sm2_gen.c.in" ], @@ -16164,9 +18741,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/include/prov/der_ecx.h.in" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/include/prov/der_ml_dsa.h.in" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/include/prov/der_rsa.h.in" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/include/prov/der_slh_dsa.h.in" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/include/prov/der_sm2.h.in" ], @@ -16216,6 +18799,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "buffer" ], + "test/buildtest_byteorder.c" => [ + "test/generate_buildtest.pl", + "byteorder" + ], "test/buildtest_camellia.c" => [ "test/generate_buildtest.pl", "camellia" @@ -16248,10 +18835,6 @@ our %unified_info = ( "test/generate_buildtest.pl", "core_dispatch" ], - "test/buildtest_core_names.c" => [ - "test/generate_buildtest.pl", - "core_names" - ], "test/buildtest_core_object.c" => [ "test/generate_buildtest.pl", "core_object" @@ -16284,6 +18867,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "e_os2" ], + "test/buildtest_e_ostime.c" => [ + "test/generate_buildtest.pl", + "e_ostime" + ], "test/buildtest_ebcdic.c" => [ "test/generate_buildtest.pl", "ebcdic" @@ -16320,6 +18907,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "hmac" ], + "test/buildtest_hpke.c" => [ + "test/generate_buildtest.pl", + "hpke" + ], "test/buildtest_http.c" => [ "test/generate_buildtest.pl", "http" @@ -16328,6 +18919,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "idea" ], + "test/buildtest_indicator.c" => [ + "test/generate_buildtest.pl", + "indicator" + ], "test/buildtest_kdf.c" => [ "test/generate_buildtest.pl", "kdf" @@ -16348,6 +18943,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "mdc2" ], + "test/buildtest_ml_kem.c" => [ + "test/generate_buildtest.pl", + "ml_kem" + ], "test/buildtest_modes.c" => [ "test/generate_buildtest.pl", "modes" @@ -16388,6 +18987,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "provider" ], + "test/buildtest_quic.c" => [ + "test/generate_buildtest.pl", + "quic" + ], "test/buildtest_rand.c" => [ "test/generate_buildtest.pl", "rand" @@ -16444,6 +19047,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "symhacks" ], + "test/buildtest_thread.c" => [ + "test/generate_buildtest.pl", + "thread" + ], "test/buildtest_tls1.c" => [ "test/generate_buildtest.pl", "tls1" @@ -16524,6 +19131,7 @@ our %unified_info = ( "doc/html/man1/openssl-s_server.html", "doc/html/man1/openssl-s_time.html", "doc/html/man1/openssl-sess_id.html", + "doc/html/man1/openssl-skeyutl.html", "doc/html/man1/openssl-smime.html", "doc/html/man1/openssl-speed.html", "doc/html/man1/openssl-spkac.html", @@ -16573,6 +19181,7 @@ our %unified_info = ( "doc/html/man3/BIO_find_type.html", "doc/html/man3/BIO_get_data.html", "doc/html/man3/BIO_get_ex_new_index.html", + "doc/html/man3/BIO_get_rpoll_descriptor.html", "doc/html/man3/BIO_meth_new.html", "doc/html/man3/BIO_new.html", "doc/html/man3/BIO_new_CMS.html", @@ -16585,11 +19194,13 @@ our %unified_info = ( "doc/html/man3/BIO_s_connect.html", "doc/html/man3/BIO_s_core.html", "doc/html/man3/BIO_s_datagram.html", + "doc/html/man3/BIO_s_dgram_pair.html", "doc/html/man3/BIO_s_fd.html", "doc/html/man3/BIO_s_file.html", "doc/html/man3/BIO_s_mem.html", "doc/html/man3/BIO_s_null.html", "doc/html/man3/BIO_s_socket.html", + "doc/html/man3/BIO_sendmmsg.html", "doc/html/man3/BIO_set_callback.html", "doc/html/man3/BIO_should_retry.html", "doc/html/man3/BIO_socket_wait.html", @@ -16614,6 +19225,7 @@ our %unified_info = ( "doc/html/man3/BN_swap.html", "doc/html/man3/BN_zero.html", "doc/html/man3/BUF_MEM_new.html", + "doc/html/man3/CMAC_CTX.html", "doc/html/man3/CMS_EncryptedData_decrypt.html", "doc/html/man3/CMS_EncryptedData_encrypt.html", "doc/html/man3/CMS_EnvelopedData_create.html", @@ -16636,6 +19248,7 @@ our %unified_info = ( "doc/html/man3/CMS_uncompress.html", "doc/html/man3/CMS_verify.html", "doc/html/man3/CMS_verify_receipt.html", + "doc/html/man3/COMP_CTX_new.html", "doc/html/man3/CONF_modules_free.html", "doc/html/man3/CONF_modules_load_file.html", "doc/html/man3/CRYPTO_THREAD_run_once.html", @@ -16669,6 +19282,8 @@ our %unified_info = ( "doc/html/man3/DSA_size.html", "doc/html/man3/DTLS_get_data_mtu.html", "doc/html/man3/DTLS_set_timer_cb.html", + "doc/html/man3/DTLSv1_get_timeout.html", + "doc/html/man3/DTLSv1_handle_timeout.html", "doc/html/man3/DTLSv1_listen.html", "doc/html/man3/ECDSA_SIG_new.html", "doc/html/man3/ECDSA_sign.html", @@ -16715,6 +19330,7 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_ctrl.html", "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html", "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html", + "doc/html/man3/EVP_PKEY_CTX_get_algor.html", "doc/html/man3/EVP_PKEY_CTX_new.html", "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html", "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html", @@ -16754,6 +19370,8 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_verify_recover.html", "doc/html/man3/EVP_RAND.html", "doc/html/man3/EVP_SIGNATURE.html", + "doc/html/man3/EVP_SKEY.html", + "doc/html/man3/EVP_SKEYMGMT.html", "doc/html/man3/EVP_SealInit.html", "doc/html/man3/EVP_SignInit.html", "doc/html/man3/EVP_VerifyInit.html", @@ -16783,6 +19401,7 @@ our %unified_info = ( "doc/html/man3/EVP_sm3.html", "doc/html/man3/EVP_sm4_cbc.html", "doc/html/man3/EVP_whirlpool.html", + "doc/html/man3/GENERAL_NAME.html", "doc/html/man3/HMAC.html", "doc/html/man3/MD5.html", "doc/html/man3/MDC2_Init.html", @@ -16807,14 +19426,18 @@ our %unified_info = ( "doc/html/man3/OPENSSL_init_ssl.html", "doc/html/man3/OPENSSL_instrument_bus.html", "doc/html/man3/OPENSSL_load_builtin_modules.html", + "doc/html/man3/OPENSSL_load_u16_le.html", "doc/html/man3/OPENSSL_malloc.html", + "doc/html/man3/OPENSSL_riscvcap.html", "doc/html/man3/OPENSSL_s390xcap.html", "doc/html/man3/OPENSSL_secure_malloc.html", "doc/html/man3/OPENSSL_strcasecmp.html", "doc/html/man3/OSSL_ALGORITHM.html", "doc/html/man3/OSSL_CALLBACK.html", + "doc/html/man3/OSSL_CMP_ATAV_set0.html", "doc/html/man3/OSSL_CMP_CTX_new.html", "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html", + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html", "doc/html/man3/OSSL_CMP_ITAV_set0.html", "doc/html/man3/OSSL_CMP_MSG_get0_header.html", "doc/html/man3/OSSL_CMP_MSG_http_perform.html", @@ -16838,18 +19461,27 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_CTX.html", "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html", "doc/html/man3/OSSL_ENCODER_to_bio.html", + "doc/html/man3/OSSL_ERR_STATE_save.html", "doc/html/man3/OSSL_ESS_check_signing_certs.html", + "doc/html/man3/OSSL_GENERAL_NAMES_print.html", + "doc/html/man3/OSSL_HPKE_CTX_new.html", "doc/html/man3/OSSL_HTTP_REQ_CTX.html", "doc/html/man3/OSSL_HTTP_parse_url.html", "doc/html/man3/OSSL_HTTP_transfer.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html", + "doc/html/man3/OSSL_INDICATOR_set_callback.html", "doc/html/man3/OSSL_ITEM.html", "doc/html/man3/OSSL_LIB_CTX.html", + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html", "doc/html/man3/OSSL_PARAM.html", "doc/html/man3/OSSL_PARAM_BLD.html", "doc/html/man3/OSSL_PARAM_allocate_from_text.html", "doc/html/man3/OSSL_PARAM_dup.html", "doc/html/man3/OSSL_PARAM_int.html", + "doc/html/man3/OSSL_PARAM_print_to_bio.html", "doc/html/man3/OSSL_PROVIDER.html", + "doc/html/man3/OSSL_QUIC_client_method.html", "doc/html/man3/OSSL_SELF_TEST_new.html", "doc/html/man3/OSSL_SELF_TEST_set_callback.html", "doc/html/man3/OSSL_STORE_INFO.html", @@ -16858,11 +19490,13 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_attach.html", "doc/html/man3/OSSL_STORE_expect.html", "doc/html/man3/OSSL_STORE_open.html", + "doc/html/man3/OSSL_sleep.html", "doc/html/man3/OSSL_trace_enabled.html", "doc/html/man3/OSSL_trace_get_category_num.html", "doc/html/man3/OSSL_trace_set_channel.html", "doc/html/man3/OpenSSL_add_all_algorithms.html", "doc/html/man3/OpenSSL_version.html", + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html", "doc/html/man3/PEM_X509_INFO_read_bio_ex.html", "doc/html/man3/PEM_bytes_read_bio.html", "doc/html/man3/PEM_read.html", @@ -16875,6 +19509,7 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_create_cert.html", "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html", "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html", + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html", "doc/html/man3/PKCS12_add1_attr_by_NID.html", "doc/html/man3/PKCS12_add_CSPName_asc.html", "doc/html/man3/PKCS12_add_cert.html", @@ -16966,6 +19601,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_sess_set_get_cb.html", "doc/html/man3/SSL_CTX_sessions.html", "doc/html/man3/SSL_CTX_set0_CA_list.html", + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html", "doc/html/man3/SSL_CTX_set1_curves.html", "doc/html/man3/SSL_CTX_set1_sigalgs.html", "doc/html/man3/SSL_CTX_set1_verify_cert_store.html", @@ -16979,6 +19615,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_ct_validation_callback.html", "doc/html/man3/SSL_CTX_set_ctlog_list_file.html", "doc/html/man3/SSL_CTX_set_default_passwd_cb.html", + "doc/html/man3/SSL_CTX_set_domain_flags.html", "doc/html/man3/SSL_CTX_set_generate_session_id.html", "doc/html/man3/SSL_CTX_set_info_callback.html", "doc/html/man3/SSL_CTX_set_keylog_callback.html", @@ -16986,6 +19623,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_min_proto_version.html", "doc/html/man3/SSL_CTX_set_mode.html", "doc/html/man3/SSL_CTX_set_msg_callback.html", + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html", "doc/html/man3/SSL_CTX_set_num_tickets.html", "doc/html/man3/SSL_CTX_set_options.html", "doc/html/man3/SSL_CTX_set_psk_client_callback.html", @@ -17024,6 +19662,7 @@ our %unified_info = ( "doc/html/man3/SSL_SESSION_print.html", "doc/html/man3/SSL_SESSION_set1_id.html", "doc/html/man3/SSL_accept.html", + "doc/html/man3/SSL_accept_stream.html", "doc/html/man3/SSL_alert_type_string.html", "doc/html/man3/SSL_alloc_buffers.html", "doc/html/man3/SSL_check_chain.html", @@ -17033,59 +19672,90 @@ our %unified_info = ( "doc/html/man3/SSL_export_keying_material.html", "doc/html/man3/SSL_extension_supported.html", "doc/html/man3/SSL_free.html", + "doc/html/man3/SSL_get0_connection.html", + "doc/html/man3/SSL_get0_group_name.html", + "doc/html/man3/SSL_get0_peer_rpk.html", "doc/html/man3/SSL_get0_peer_scts.html", + "doc/html/man3/SSL_get1_builtin_sigalgs.html", "doc/html/man3/SSL_get_SSL_CTX.html", "doc/html/man3/SSL_get_all_async_fds.html", "doc/html/man3/SSL_get_certificate.html", "doc/html/man3/SSL_get_ciphers.html", "doc/html/man3/SSL_get_client_random.html", + "doc/html/man3/SSL_get_conn_close_info.html", "doc/html/man3/SSL_get_current_cipher.html", "doc/html/man3/SSL_get_default_timeout.html", "doc/html/man3/SSL_get_error.html", + "doc/html/man3/SSL_get_event_timeout.html", "doc/html/man3/SSL_get_extms_support.html", "doc/html/man3/SSL_get_fd.html", + "doc/html/man3/SSL_get_handshake_rtt.html", "doc/html/man3/SSL_get_peer_cert_chain.html", "doc/html/man3/SSL_get_peer_certificate.html", "doc/html/man3/SSL_get_peer_signature_nid.html", "doc/html/man3/SSL_get_peer_tmp_key.html", "doc/html/man3/SSL_get_psk_identity.html", "doc/html/man3/SSL_get_rbio.html", + "doc/html/man3/SSL_get_rpoll_descriptor.html", "doc/html/man3/SSL_get_session.html", "doc/html/man3/SSL_get_shared_sigalgs.html", + "doc/html/man3/SSL_get_stream_id.html", + "doc/html/man3/SSL_get_stream_read_state.html", + "doc/html/man3/SSL_get_value_uint.html", "doc/html/man3/SSL_get_verify_result.html", "doc/html/man3/SSL_get_version.html", "doc/html/man3/SSL_group_to_name.html", + "doc/html/man3/SSL_handle_events.html", "doc/html/man3/SSL_in_init.html", + "doc/html/man3/SSL_inject_net_dgram.html", "doc/html/man3/SSL_key_update.html", "doc/html/man3/SSL_library_init.html", "doc/html/man3/SSL_load_client_CA_file.html", "doc/html/man3/SSL_new.html", + "doc/html/man3/SSL_new_domain.html", + "doc/html/man3/SSL_new_listener.html", + "doc/html/man3/SSL_new_stream.html", "doc/html/man3/SSL_pending.html", + "doc/html/man3/SSL_poll.html", "doc/html/man3/SSL_read.html", "doc/html/man3/SSL_read_early_data.html", "doc/html/man3/SSL_rstate_string.html", "doc/html/man3/SSL_session_reused.html", "doc/html/man3/SSL_set1_host.html", + "doc/html/man3/SSL_set1_initial_peer_addr.html", + "doc/html/man3/SSL_set1_server_cert_type.html", "doc/html/man3/SSL_set_async_callback.html", "doc/html/man3/SSL_set_bio.html", + "doc/html/man3/SSL_set_blocking_mode.html", "doc/html/man3/SSL_set_connect_state.html", + "doc/html/man3/SSL_set_default_stream_mode.html", "doc/html/man3/SSL_set_fd.html", + "doc/html/man3/SSL_set_incoming_stream_policy.html", + "doc/html/man3/SSL_set_quic_tls_cbs.html", "doc/html/man3/SSL_set_retry_verify.html", "doc/html/man3/SSL_set_session.html", + "doc/html/man3/SSL_set_session_secret_cb.html", "doc/html/man3/SSL_set_shutdown.html", "doc/html/man3/SSL_set_verify_result.html", "doc/html/man3/SSL_shutdown.html", "doc/html/man3/SSL_state_string.html", + "doc/html/man3/SSL_stream_conclude.html", + "doc/html/man3/SSL_stream_reset.html", "doc/html/man3/SSL_want.html", "doc/html/man3/SSL_write.html", "doc/html/man3/TS_RESP_CTX_new.html", - "doc/html/man3/TS_VERIFY_CTX_set_certs.html", + "doc/html/man3/TS_VERIFY_CTX.html", "doc/html/man3/UI_STRING.html", "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", + "doc/html/man3/X509_ACERT_add1_attr.html", + "doc/html/man3/X509_ACERT_add_attr_nconf.html", + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html", + "doc/html/man3/X509_ACERT_get_attr.html", + "doc/html/man3/X509_ACERT_print_ex.html", "doc/html/man3/X509_ALGOR_dup.html", "doc/html/man3/X509_ATTRIBUTE.html", "doc/html/man3/X509_CRL_get0_by_serial.html", @@ -17102,6 +19772,7 @@ our %unified_info = ( "doc/html/man3/X509_REQ_get_attr.html", "doc/html/man3/X509_REQ_get_extensions.html", "doc/html/man3/X509_SIG_get0.html", + "doc/html/man3/X509_STORE_CTX_get_by_subject.html", "doc/html/man3/X509_STORE_CTX_get_error.html", "doc/html/man3/X509_STORE_CTX_new.html", "doc/html/man3/X509_STORE_CTX_set_verify_cb.html", @@ -17124,6 +19795,7 @@ our %unified_info = ( "doc/html/man3/X509_get0_notBefore.html", "doc/html/man3/X509_get0_signature.html", "doc/html/man3/X509_get0_uids.html", + "doc/html/man3/X509_get_default_cert_file.html", "doc/html/man3/X509_get_extension_flags.html", "doc/html/man3/X509_get_pubkey.html", "doc/html/man3/X509_get_serialNumber.html", @@ -17169,12 +19841,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-RC5.html", "doc/html/man7/EVP_CIPHER-SEED.html", "doc/html/man7/EVP_CIPHER-SM4.html", + "doc/html/man7/EVP_KDF-ARGON2.html", "doc/html/man7/EVP_KDF-HKDF.html", + "doc/html/man7/EVP_KDF-HMAC-DRBG.html", "doc/html/man7/EVP_KDF-KB.html", "doc/html/man7/EVP_KDF-KRB5KDF.html", "doc/html/man7/EVP_KDF-PBKDF1.html", "doc/html/man7/EVP_KDF-PBKDF2.html", "doc/html/man7/EVP_KDF-PKCS12KDF.html", + "doc/html/man7/EVP_KDF-PVKKDF.html", "doc/html/man7/EVP_KDF-SCRYPT.html", "doc/html/man7/EVP_KDF-SS.html", "doc/html/man7/EVP_KDF-SSHKDF.html", @@ -17183,7 +19858,10 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X942-ASN1.html", "doc/html/man7/EVP_KDF-X942-CONCAT.html", "doc/html/man7/EVP_KDF-X963.html", + "doc/html/man7/EVP_KEM-EC.html", + "doc/html/man7/EVP_KEM-ML-KEM.html", "doc/html/man7/EVP_KEM-RSA.html", + "doc/html/man7/EVP_KEM-X25519.html", "doc/html/man7/EVP_KEYEXCH-DH.html", "doc/html/man7/EVP_KEYEXCH-ECDH.html", "doc/html/man7/EVP_KEYEXCH-X25519.html", @@ -17195,6 +19873,7 @@ our %unified_info = ( "doc/html/man7/EVP_MAC-Poly1305.html", "doc/html/man7/EVP_MAC-Siphash.html", "doc/html/man7/EVP_MD-BLAKE2.html", + "doc/html/man7/EVP_MD-KECCAK.html", "doc/html/man7/EVP_MD-MD2.html", "doc/html/man7/EVP_MD-MD4.html", "doc/html/man7/EVP_MD-MD5-SHA1.html", @@ -17214,12 +19893,17 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-EC.html", "doc/html/man7/EVP_PKEY-FFC.html", "doc/html/man7/EVP_PKEY-HMAC.html", + "doc/html/man7/EVP_PKEY-ML-DSA.html", + "doc/html/man7/EVP_PKEY-ML-KEM.html", "doc/html/man7/EVP_PKEY-RSA.html", + "doc/html/man7/EVP_PKEY-SLH-DSA.html", "doc/html/man7/EVP_PKEY-SM2.html", "doc/html/man7/EVP_PKEY-X25519.html", + "doc/html/man7/EVP_RAND-CRNG-TEST.html", "doc/html/man7/EVP_RAND-CTR-DRBG.html", "doc/html/man7/EVP_RAND-HASH-DRBG.html", "doc/html/man7/EVP_RAND-HMAC-DRBG.html", + "doc/html/man7/EVP_RAND-JITTER.html", "doc/html/man7/EVP_RAND-SEED-SRC.html", "doc/html/man7/EVP_RAND-TEST-RAND.html", "doc/html/man7/EVP_RAND.html", @@ -17227,17 +19911,19 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-ECDSA.html", "doc/html/man7/EVP_SIGNATURE-ED25519.html", "doc/html/man7/EVP_SIGNATURE-HMAC.html", + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html", "doc/html/man7/EVP_SIGNATURE-RSA.html", + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html", "doc/html/man7/OSSL_PROVIDER-FIPS.html", "doc/html/man7/OSSL_PROVIDER-base.html", "doc/html/man7/OSSL_PROVIDER-default.html", "doc/html/man7/OSSL_PROVIDER-legacy.html", "doc/html/man7/OSSL_PROVIDER-null.html", + "doc/html/man7/OSSL_STORE-winstore.html", "doc/html/man7/RAND.html", "doc/html/man7/RSA-PSS.html", "doc/html/man7/X25519.html", "doc/html/man7/bio.html", - "doc/html/man7/crypto.html", "doc/html/man7/ct.html", "doc/html/man7/des_modes.html", "doc/html/man7/evp.html", @@ -17248,14 +19934,31 @@ our %unified_info = ( "doc/html/man7/life_cycle-mac.html", "doc/html/man7/life_cycle-pkey.html", "doc/html/man7/life_cycle-rand.html", - "doc/html/man7/migration_guide.html", "doc/html/man7/openssl-core.h.html", "doc/html/man7/openssl-core_dispatch.h.html", "doc/html/man7/openssl-core_names.h.html", "doc/html/man7/openssl-env.html", "doc/html/man7/openssl-glossary.html", + "doc/html/man7/openssl-qlog.html", + "doc/html/man7/openssl-quic-concurrency.html", + "doc/html/man7/openssl-quic.html", "doc/html/man7/openssl-threads.html", "doc/html/man7/openssl_user_macros.html", + "doc/html/man7/ossl-guide-introduction.html", + "doc/html/man7/ossl-guide-libcrypto-introduction.html", + "doc/html/man7/ossl-guide-libraries-introduction.html", + "doc/html/man7/ossl-guide-libssl-introduction.html", + "doc/html/man7/ossl-guide-migration.html", + "doc/html/man7/ossl-guide-quic-client-block.html", + "doc/html/man7/ossl-guide-quic-client-non-block.html", + "doc/html/man7/ossl-guide-quic-introduction.html", + "doc/html/man7/ossl-guide-quic-multi-stream.html", + "doc/html/man7/ossl-guide-quic-server-block.html", + "doc/html/man7/ossl-guide-quic-server-non-block.html", + "doc/html/man7/ossl-guide-tls-client-block.html", + "doc/html/man7/ossl-guide-tls-client-non-block.html", + "doc/html/man7/ossl-guide-tls-introduction.html", + "doc/html/man7/ossl-guide-tls-server-block.html", "doc/html/man7/ossl_store-file.html", "doc/html/man7/ossl_store.html", "doc/html/man7/passphrase-encoding.html", @@ -17274,10 +19977,10 @@ our %unified_info = ( "doc/html/man7/provider-object.html", "doc/html/man7/provider-rand.html", "doc/html/man7/provider-signature.html", + "doc/html/man7/provider-skeymgmt.html", "doc/html/man7/provider-storemgmt.html", "doc/html/man7/provider.html", "doc/html/man7/proxy-certificates.html", - "doc/html/man7/ssl.html", "doc/html/man7/x509.html" ] }, @@ -17292,12 +19995,21 @@ our %unified_info = ( ] }, "includes" => { + "OpenSSLConfig.cmake" => [ + "." + ], + "OpenSSLConfigVersion.cmake" => [ + "." + ], "apps/asn1parse.o" => [ "apps" ], "apps/ca.o" => [ "apps" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps" + ], "apps/ciphers.o" => [ "apps" ], @@ -17524,6 +20236,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps" + ], "apps/openssl-bin-smime.o" => [ "apps" ], @@ -17611,6 +20326,9 @@ our %unified_info = ( "apps/sess_id.o" => [ "apps" ], + "apps/skeyutl.o" => [ + "apps" + ], "apps/smime.o" => [ "apps" ], @@ -17662,6 +20380,12 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.o" => [ "crypto" ], + "crypto/aes/vpaes-armv8.o" => [ + "crypto" + ], + "crypto/aes/vpaes-loongarch64.o" => [ + "crypto" + ], "crypto/arm64cpuid.o" => [ "crypto" ], @@ -17713,9 +20437,15 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.o" => [ "crypto" ], + "crypto/chacha/chacha-armv8-sve.o" => [ + "crypto" + ], "crypto/chacha/chacha-armv8.o" => [ "crypto" ], + "crypto/chacha/chacha-loongarch64.o" => [ + "crypto" + ], "crypto/chacha/chacha-s390x.o" => [ "crypto" ], @@ -17740,15 +20470,27 @@ our %unified_info = ( "crypto/ec/ecp_s390x_nistp.o" => [ "crypto" ], + "crypto/ec/ecp_sm2p256-armv8.o" => [ + "crypto" + ], + "crypto/ec/ecx_key.o" => [ + "crypto" + ], "crypto/ec/ecx_meth.o" => [ "crypto" ], "crypto/ec/ecx_s390x.o" => [ "crypto" ], + "crypto/ec/libcrypto-lib-ecx_key.o" => [ + "crypto" + ], "crypto/ec/libcrypto-lib-ecx_meth.o" => [ "crypto" ], + "crypto/ec/libfips-lib-ecx_key.o" => [ + "crypto" + ], "crypto/evp/e_aes.o" => [ "crypto", "crypto/modes" @@ -17820,9 +20562,18 @@ our %unified_info = ( "crypto/libfips-lib-cpuid.o" => [ "." ], + "crypto/md5/md5-aarch64.o" => [ + "crypto" + ], + "crypto/md5/md5-loongarch64.o" => [ + "crypto" + ], "crypto/md5/md5-sparcv9.o" => [ "crypto" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.o" => [ + "crypto" + ], "crypto/modes/aes-gcm-armv8_64.o" => [ "crypto" ], @@ -17847,6 +20598,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-gcm128.o" => [ "crypto" ], + "crypto/params_idx.c" => [ + "util/perl" + ], "crypto/poly1305/poly1305-armv4.o" => [ "crypto" ], @@ -17868,6 +20622,9 @@ our %unified_info = ( "crypto/sha/keccak1600-armv4.o" => [ "crypto" ], + "crypto/sha/keccak1600-armv8.o" => [ + "crypto" + ], "crypto/sha/sha1-armv4-large.o" => [ "crypto" ], @@ -17913,6 +20670,18 @@ our %unified_info = ( "crypto/sha/sha512-sparcv9.o" => [ "crypto" ], + "crypto/sm3/sm3-armv8.o" => [ + "crypto" + ], + "crypto/sm4/sm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4_ex-armv8.o" => [ + "crypto" + ], "doc/man1/openssl-asn1parse.pod" => [ "doc" ], @@ -18045,6 +20814,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc" + ], "doc/man1/openssl-smime.pod" => [ "doc" ], @@ -18072,6 +20844,24 @@ our %unified_info = ( "doc/man1/openssl-x509.pod" => [ "doc" ], + "exporters/OpenSSLConfig.cmake" => [ + "." + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "." + ], + "exporters/libcrypto.pc" => [ + "." + ], + "exporters/libssl.pc" => [ + "." + ], + "exporters/openssl.pc" => [ + "." + ], + "fuzz/acert-test" => [ + "include" + ], "fuzz/asn1-test" => [ "include" ], @@ -18102,12 +20892,69 @@ our %unified_info = ( "fuzz/ct-test" => [ "include" ], + "fuzz/decoder-test" => [ + "include" + ], + "fuzz/dtlsclient-test" => [ + "include" + ], + "fuzz/dtlsserver-test" => [ + "include" + ], + "fuzz/hashtable-test" => [ + "include" + ], + "fuzz/ml-dsa-test" => [ + "include" + ], + "fuzz/ml-kem-test" => [ + "include" + ], + "fuzz/pem-test" => [ + "include" + ], + "fuzz/provider-test" => [ + "include" + ], + "fuzz/punycode-test" => [ + "include" + ], + "fuzz/quic-client-test" => [ + "include" + ], + "fuzz/quic-lcidm-test" => [ + "include" + ], + "fuzz/quic-rcidm-test" => [ + "include" + ], + "fuzz/quic-server-test" => [ + "include" + ], + "fuzz/quic-srtm-test" => [ + "include" + ], "fuzz/server-test" => [ "include" ], + "fuzz/slh-dsa-test" => [ + "include" + ], + "fuzz/smime-test" => [ + "include" + ], + "fuzz/v3name-test" => [ + "include" + ], "fuzz/x509-test" => [ "include" ], + "include/internal/param_names.h" => [ + "util/perl" + ], + "include/openssl/core_names.h" => [ + "util/perl" + ], "libcrypto" => [ ".", "include", @@ -18118,6 +20965,9 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libcrypto.pc" => [ + "." + ], "libcrypto.rc" => [ "." ], @@ -18129,9 +20979,15 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libssl.pc" => [ + "." + ], "libssl.rc" => [ "." ], + "openssl.pc" => [ + "." + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der" ], @@ -18171,6 +21027,15 @@ our %unified_info = ( "providers/common/der/der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der" ], @@ -18183,6 +21048,15 @@ our %unified_info = ( "providers/common/der/der_rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der" ], @@ -18228,12 +21102,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov" ], @@ -18264,9 +21150,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der" ], @@ -18309,9 +21201,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18324,12 +21222,24 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18342,28 +21252,39 @@ our %unified_info = ( "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libdefault.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libfips.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/liblegacy.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" + ], + "providers/libtemplate.a" => [ + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" ], "test/aborttest" => [ "include", @@ -18432,6 +21353,14 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_addr_test" => [ + "include", + "apps/include" + ], + "test/bio_base64_test" => [ + "include", + "apps/include" + ], "test/bio_callback_test" => [ "include", "apps/include" @@ -18440,6 +21369,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_dgram_test" => [ + "include", + "apps/include", + "." + ], "test/bio_enc_test" => [ "include", "apps/include" @@ -18448,6 +21382,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_meth_test" => [ + "include", + "apps/include" + ], "test/bio_prefix_text" => [ ".", "include", @@ -18461,6 +21399,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_tfo_test" => [ + "include", + "apps/include", + "." + ], "test/bioprinttest" => [ "include", "apps/include" @@ -18475,6 +21418,9 @@ our %unified_info = ( "include", "apps/include" ], + "test/build_wincrypt_test" => [ + "include" + ], "test/buildtest_c_aes" => [ "include" ], @@ -18490,6 +21436,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => [ "include" ], + "test/buildtest_c_byteorder" => [ + "include" + ], "test/buildtest_c_camellia" => [ "include" ], @@ -18514,9 +21463,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => [ "include" ], - "test/buildtest_c_core_names" => [ - "include" - ], "test/buildtest_c_core_object" => [ "include" ], @@ -18541,6 +21487,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => [ "include" ], + "test/buildtest_c_e_ostime" => [ + "include" + ], "test/buildtest_c_ebcdic" => [ "include" ], @@ -18568,12 +21517,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => [ "include" ], + "test/buildtest_c_hpke" => [ + "include" + ], "test/buildtest_c_http" => [ "include" ], "test/buildtest_c_idea" => [ "include" ], + "test/buildtest_c_indicator" => [ + "include" + ], "test/buildtest_c_kdf" => [ "include" ], @@ -18589,6 +21544,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => [ "include" ], + "test/buildtest_c_ml_kem" => [ + "include" + ], "test/buildtest_c_modes" => [ "include" ], @@ -18619,6 +21577,9 @@ our %unified_info = ( "test/buildtest_c_provider" => [ "include" ], + "test/buildtest_c_quic" => [ + "include" + ], "test/buildtest_c_rand" => [ "include" ], @@ -18661,6 +21622,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => [ "include" ], + "test/buildtest_c_thread" => [ + "include" + ], "test/buildtest_c_tls1" => [ "include" ], @@ -18676,10 +21640,24 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => [ "include" ], + "test/byteorder_test" => [ + "include", + "apps/include" + ], + "test/ca_internals_test" => [ + ".", + "include", + "apps/include" + ], "test/casttest" => [ "include", "apps/include" ], + "test/cert_comp_test" => [ + "include", + "apps/include", + "." + ], "test/chacha_internal_test" => [ ".", "include", @@ -18803,6 +21781,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/decoder_propq_test" => [ + ".", + "include", + "apps/include" + ], "test/defltfips_test" => [ "include", "apps/include" @@ -18818,7 +21801,8 @@ our %unified_info = ( "test/drbgtest" => [ "include", "apps/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "test/dsa_no_digest_size_test" => [ "include", @@ -18861,7 +21845,9 @@ our %unified_info = ( "test/endecode_test" => [ ".", "include", - "apps/include" + "apps/include", + "providers/common/include", + "providers/implementations/include" ], "test/endecoder_legacy_test" => [ ".", @@ -18906,6 +21892,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_pkey_dhkem_test" => [ + "include", + "apps/include" + ], "test/evp_pkey_dparams_test" => [ "include", "apps/include" @@ -18914,10 +21904,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_skey_test" => [ + "include", + "apps/include" + ], "test/evp_test" => [ "include", "apps/include" ], + "test/evp_xof_test" => [ + "include", + "apps/include" + ], "test/exdatatest" => [ "include", "apps/include" @@ -19018,22 +22016,62 @@ our %unified_info = ( ".", "include" ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/pkcs12.o" => [ ".", "include" ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + ".", + "include" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ ".", "include" ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/ssl_test-bin-handshake.o" => [ ".", "include" @@ -19067,6 +22105,10 @@ our %unified_info = ( ".", "include" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/hexstr_test" => [ ".", "include", @@ -19076,6 +22118,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/hpke_test" => [ + "include", + "apps/include" + ], "test/http_test" => [ "include", "apps/include" @@ -19088,6 +22134,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/json_test" => [ + "include", + "apps/include" + ], "test/keymgmt_internal_test" => [ ".", "include", @@ -19102,6 +22152,10 @@ our %unified_info = ( "apps/include", "." ], + "test/list_test" => [ + "include", + "apps/include" + ], "test/localetest" => [ "include", "apps/include" @@ -19115,10 +22169,27 @@ our %unified_info = ( "include", "apps/include" ], + "test/membio_test" => [ + "include", + "apps/include", + "." + ], "test/memleaktest" => [ "include", "apps/include" ], + "test/ml_dsa_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_evp_extra_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_internal_test" => [ + "include", + "apps/include" + ], "test/modes_internal_test" => [ ".", "include", @@ -19153,6 +22224,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pairwise_fail_test" => [ + "include", + "apps/include" + ], "test/param_build_test" => [ "include", "apps/include" @@ -19186,6 +22261,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pkcs12_api_test" => [ + "include", + "apps/include" + ], "test/pkcs12_format_test" => [ "include", "apps/include" @@ -19207,6 +22286,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/priority_queue_test" => [ + "include", + "apps/include" + ], "test/property_test" => [ ".", "include", @@ -19220,6 +22303,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/provider_default_search_path_test" => [ + "include", + "apps/include" + ], "test/provider_fallback_test" => [ "include", "apps/include" @@ -19246,6 +22333,97 @@ our %unified_info = ( "include", "apps/include" ], + "test/quic_ackm_test" => [ + "include", + "apps/include" + ], + "test/quic_cc_test" => [ + "include", + "apps/include" + ], + "test/quic_cfq_test" => [ + "include", + "apps/include" + ], + "test/quic_client_test" => [ + "include", + "apps/include" + ], + "test/quic_fc_test" => [ + "include", + "apps/include" + ], + "test/quic_fifd_test" => [ + "include", + "apps/include" + ], + "test/quic_lcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_multistream_test" => [ + "include", + "apps/include" + ], + "test/quic_newcid_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_qlog_test" => [ + "include", + "apps/include" + ], + "test/quic_radix_test" => [ + "include", + "apps/include" + ], + "test/quic_rcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_record_test" => [ + "include", + "apps/include" + ], + "test/quic_srt_gen_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_srtm_test" => [ + "include", + "apps/include" + ], + "test/quic_stream_test" => [ + "include", + "apps/include" + ], + "test/quic_tserver_test" => [ + "include", + "apps/include" + ], + "test/quic_txp_test" => [ + "include", + "apps/include" + ], + "test/quic_txpim_test" => [ + "include", + "apps/include" + ], + "test/quic_wire_test" => [ + "include", + "apps/include" + ], + "test/quicapitest" => [ + "include", + "apps/include" + ], + "test/quicfaultstest" => [ + "include", + "apps/include", + "." + ], "test/rand_status_test" => [ "include", "apps/include" @@ -19266,14 +22444,20 @@ our %unified_info = ( "include", "apps/include" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "include", - "apps/include" + "apps/include", + "crypto" ], "test/recordlentest" => [ "include", "apps/include" ], + "test/rpktest" => [ + "include", + "apps/include", + "." + ], "test/rsa_complex" => [ "include", "apps/include" @@ -19292,6 +22476,15 @@ our %unified_info = ( "include", "apps/include" ], + "test/rsa_x931_test" => [ + ".", + "include", + "apps/include" + ], + "test/safe_math_test" => [ + "include", + "apps/include" + ], "test/sanitytest" => [ "include", "apps/include" @@ -19313,6 +22506,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/slh_dsa_test" => [ + "include", + "apps/include" + ], "test/sm2_internal_test" => [ "include", "apps/include" @@ -19343,6 +22540,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/ssl_handshake_rtt_test" => [ + "include", + "apps/include", + "." + ], "test/ssl_old_test" => [ ".", "include", @@ -19359,6 +22561,7 @@ our %unified_info = ( "test/sslapitest" => [ "include", "apps/include", + "providers/common/include", "." ], "test/sslbuffertest" => [ @@ -19373,6 +22576,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/strtoultest" => [ + "include", + "apps/include" + ], "test/sysdefaulttest" => [ "include", "apps/include" @@ -19381,7 +22588,13 @@ our %unified_info = ( "include", "apps/include" ], + "test/threadpool_test" => [ + ".", + "include", + "apps/include" + ], "test/threadstest" => [ + ".", "include", "apps/include" ], @@ -19393,6 +22606,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/time_test" => [ + "include", + "apps/include" + ], "test/tls13ccstest" => [ "include", "apps/include" @@ -19402,6 +22619,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/tls13groupselection_test" => [ + "include", + "apps/include" + ], "test/trace_api_test" => [ ".", "include", @@ -19440,6 +22661,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_acert_test" => [ + "include", + "apps/include" + ], "test/x509_check_cert_pkey_test" => [ "include", "apps/include" @@ -19453,6 +22678,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_load_cert_file_test" => [ + "include", + "apps/include" + ], + "test/x509_req_test" => [ + "include", + "apps/include" + ], + "test/x509_test" => [ + "include", + "apps/include" + ], "test/x509_time_test" => [ "include", "apps/include" @@ -19474,6 +22711,7 @@ our %unified_info = ( "providers/libdefault.a", "providers/libfips.a", "providers/liblegacy.a", + "providers/libtemplate.a", "test/libtestutil.a" ], "mandocs" => { @@ -19526,6 +22764,7 @@ our %unified_info = ( "doc/man/man1/openssl-s_server.1", "doc/man/man1/openssl-s_time.1", "doc/man/man1/openssl-sess_id.1", + "doc/man/man1/openssl-skeyutl.1", "doc/man/man1/openssl-smime.1", "doc/man/man1/openssl-speed.1", "doc/man/man1/openssl-spkac.1", @@ -19575,6 +22814,7 @@ our %unified_info = ( "doc/man/man3/BIO_find_type.3", "doc/man/man3/BIO_get_data.3", "doc/man/man3/BIO_get_ex_new_index.3", + "doc/man/man3/BIO_get_rpoll_descriptor.3", "doc/man/man3/BIO_meth_new.3", "doc/man/man3/BIO_new.3", "doc/man/man3/BIO_new_CMS.3", @@ -19587,11 +22827,13 @@ our %unified_info = ( "doc/man/man3/BIO_s_connect.3", "doc/man/man3/BIO_s_core.3", "doc/man/man3/BIO_s_datagram.3", + "doc/man/man3/BIO_s_dgram_pair.3", "doc/man/man3/BIO_s_fd.3", "doc/man/man3/BIO_s_file.3", "doc/man/man3/BIO_s_mem.3", "doc/man/man3/BIO_s_null.3", "doc/man/man3/BIO_s_socket.3", + "doc/man/man3/BIO_sendmmsg.3", "doc/man/man3/BIO_set_callback.3", "doc/man/man3/BIO_should_retry.3", "doc/man/man3/BIO_socket_wait.3", @@ -19616,6 +22858,7 @@ our %unified_info = ( "doc/man/man3/BN_swap.3", "doc/man/man3/BN_zero.3", "doc/man/man3/BUF_MEM_new.3", + "doc/man/man3/CMAC_CTX.3", "doc/man/man3/CMS_EncryptedData_decrypt.3", "doc/man/man3/CMS_EncryptedData_encrypt.3", "doc/man/man3/CMS_EnvelopedData_create.3", @@ -19638,6 +22881,7 @@ our %unified_info = ( "doc/man/man3/CMS_uncompress.3", "doc/man/man3/CMS_verify.3", "doc/man/man3/CMS_verify_receipt.3", + "doc/man/man3/COMP_CTX_new.3", "doc/man/man3/CONF_modules_free.3", "doc/man/man3/CONF_modules_load_file.3", "doc/man/man3/CRYPTO_THREAD_run_once.3", @@ -19671,6 +22915,8 @@ our %unified_info = ( "doc/man/man3/DSA_size.3", "doc/man/man3/DTLS_get_data_mtu.3", "doc/man/man3/DTLS_set_timer_cb.3", + "doc/man/man3/DTLSv1_get_timeout.3", + "doc/man/man3/DTLSv1_handle_timeout.3", "doc/man/man3/DTLSv1_listen.3", "doc/man/man3/ECDSA_SIG_new.3", "doc/man/man3/ECDSA_sign.3", @@ -19717,6 +22963,7 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_ctrl.3", "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3", "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3", + "doc/man/man3/EVP_PKEY_CTX_get_algor.3", "doc/man/man3/EVP_PKEY_CTX_new.3", "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3", "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3", @@ -19756,6 +23003,8 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_verify_recover.3", "doc/man/man3/EVP_RAND.3", "doc/man/man3/EVP_SIGNATURE.3", + "doc/man/man3/EVP_SKEY.3", + "doc/man/man3/EVP_SKEYMGMT.3", "doc/man/man3/EVP_SealInit.3", "doc/man/man3/EVP_SignInit.3", "doc/man/man3/EVP_VerifyInit.3", @@ -19785,6 +23034,7 @@ our %unified_info = ( "doc/man/man3/EVP_sm3.3", "doc/man/man3/EVP_sm4_cbc.3", "doc/man/man3/EVP_whirlpool.3", + "doc/man/man3/GENERAL_NAME.3", "doc/man/man3/HMAC.3", "doc/man/man3/MD5.3", "doc/man/man3/MDC2_Init.3", @@ -19809,14 +23059,18 @@ our %unified_info = ( "doc/man/man3/OPENSSL_init_ssl.3", "doc/man/man3/OPENSSL_instrument_bus.3", "doc/man/man3/OPENSSL_load_builtin_modules.3", + "doc/man/man3/OPENSSL_load_u16_le.3", "doc/man/man3/OPENSSL_malloc.3", + "doc/man/man3/OPENSSL_riscvcap.3", "doc/man/man3/OPENSSL_s390xcap.3", "doc/man/man3/OPENSSL_secure_malloc.3", "doc/man/man3/OPENSSL_strcasecmp.3", "doc/man/man3/OSSL_ALGORITHM.3", "doc/man/man3/OSSL_CALLBACK.3", + "doc/man/man3/OSSL_CMP_ATAV_set0.3", "doc/man/man3/OSSL_CMP_CTX_new.3", "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3", + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3", "doc/man/man3/OSSL_CMP_ITAV_set0.3", "doc/man/man3/OSSL_CMP_MSG_get0_header.3", "doc/man/man3/OSSL_CMP_MSG_http_perform.3", @@ -19840,18 +23094,27 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_CTX.3", "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3", "doc/man/man3/OSSL_ENCODER_to_bio.3", + "doc/man/man3/OSSL_ERR_STATE_save.3", "doc/man/man3/OSSL_ESS_check_signing_certs.3", + "doc/man/man3/OSSL_GENERAL_NAMES_print.3", + "doc/man/man3/OSSL_HPKE_CTX_new.3", "doc/man/man3/OSSL_HTTP_REQ_CTX.3", "doc/man/man3/OSSL_HTTP_parse_url.3", "doc/man/man3/OSSL_HTTP_transfer.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3", + "doc/man/man3/OSSL_INDICATOR_set_callback.3", "doc/man/man3/OSSL_ITEM.3", "doc/man/man3/OSSL_LIB_CTX.3", + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3", "doc/man/man3/OSSL_PARAM.3", "doc/man/man3/OSSL_PARAM_BLD.3", "doc/man/man3/OSSL_PARAM_allocate_from_text.3", "doc/man/man3/OSSL_PARAM_dup.3", "doc/man/man3/OSSL_PARAM_int.3", + "doc/man/man3/OSSL_PARAM_print_to_bio.3", "doc/man/man3/OSSL_PROVIDER.3", + "doc/man/man3/OSSL_QUIC_client_method.3", "doc/man/man3/OSSL_SELF_TEST_new.3", "doc/man/man3/OSSL_SELF_TEST_set_callback.3", "doc/man/man3/OSSL_STORE_INFO.3", @@ -19860,11 +23123,13 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_attach.3", "doc/man/man3/OSSL_STORE_expect.3", "doc/man/man3/OSSL_STORE_open.3", + "doc/man/man3/OSSL_sleep.3", "doc/man/man3/OSSL_trace_enabled.3", "doc/man/man3/OSSL_trace_get_category_num.3", "doc/man/man3/OSSL_trace_set_channel.3", "doc/man/man3/OpenSSL_add_all_algorithms.3", "doc/man/man3/OpenSSL_version.3", + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3", "doc/man/man3/PEM_X509_INFO_read_bio_ex.3", "doc/man/man3/PEM_bytes_read_bio.3", "doc/man/man3/PEM_read.3", @@ -19877,6 +23142,7 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_create_cert.3", "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3", "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3", + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3", "doc/man/man3/PKCS12_add1_attr_by_NID.3", "doc/man/man3/PKCS12_add_CSPName_asc.3", "doc/man/man3/PKCS12_add_cert.3", @@ -19968,6 +23234,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_sess_set_get_cb.3", "doc/man/man3/SSL_CTX_sessions.3", "doc/man/man3/SSL_CTX_set0_CA_list.3", + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3", "doc/man/man3/SSL_CTX_set1_curves.3", "doc/man/man3/SSL_CTX_set1_sigalgs.3", "doc/man/man3/SSL_CTX_set1_verify_cert_store.3", @@ -19981,6 +23248,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_ct_validation_callback.3", "doc/man/man3/SSL_CTX_set_ctlog_list_file.3", "doc/man/man3/SSL_CTX_set_default_passwd_cb.3", + "doc/man/man3/SSL_CTX_set_domain_flags.3", "doc/man/man3/SSL_CTX_set_generate_session_id.3", "doc/man/man3/SSL_CTX_set_info_callback.3", "doc/man/man3/SSL_CTX_set_keylog_callback.3", @@ -19988,6 +23256,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_min_proto_version.3", "doc/man/man3/SSL_CTX_set_mode.3", "doc/man/man3/SSL_CTX_set_msg_callback.3", + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3", "doc/man/man3/SSL_CTX_set_num_tickets.3", "doc/man/man3/SSL_CTX_set_options.3", "doc/man/man3/SSL_CTX_set_psk_client_callback.3", @@ -20026,6 +23295,7 @@ our %unified_info = ( "doc/man/man3/SSL_SESSION_print.3", "doc/man/man3/SSL_SESSION_set1_id.3", "doc/man/man3/SSL_accept.3", + "doc/man/man3/SSL_accept_stream.3", "doc/man/man3/SSL_alert_type_string.3", "doc/man/man3/SSL_alloc_buffers.3", "doc/man/man3/SSL_check_chain.3", @@ -20035,59 +23305,90 @@ our %unified_info = ( "doc/man/man3/SSL_export_keying_material.3", "doc/man/man3/SSL_extension_supported.3", "doc/man/man3/SSL_free.3", + "doc/man/man3/SSL_get0_connection.3", + "doc/man/man3/SSL_get0_group_name.3", + "doc/man/man3/SSL_get0_peer_rpk.3", "doc/man/man3/SSL_get0_peer_scts.3", + "doc/man/man3/SSL_get1_builtin_sigalgs.3", "doc/man/man3/SSL_get_SSL_CTX.3", "doc/man/man3/SSL_get_all_async_fds.3", "doc/man/man3/SSL_get_certificate.3", "doc/man/man3/SSL_get_ciphers.3", "doc/man/man3/SSL_get_client_random.3", + "doc/man/man3/SSL_get_conn_close_info.3", "doc/man/man3/SSL_get_current_cipher.3", "doc/man/man3/SSL_get_default_timeout.3", "doc/man/man3/SSL_get_error.3", + "doc/man/man3/SSL_get_event_timeout.3", "doc/man/man3/SSL_get_extms_support.3", "doc/man/man3/SSL_get_fd.3", + "doc/man/man3/SSL_get_handshake_rtt.3", "doc/man/man3/SSL_get_peer_cert_chain.3", "doc/man/man3/SSL_get_peer_certificate.3", "doc/man/man3/SSL_get_peer_signature_nid.3", "doc/man/man3/SSL_get_peer_tmp_key.3", "doc/man/man3/SSL_get_psk_identity.3", "doc/man/man3/SSL_get_rbio.3", + "doc/man/man3/SSL_get_rpoll_descriptor.3", "doc/man/man3/SSL_get_session.3", "doc/man/man3/SSL_get_shared_sigalgs.3", + "doc/man/man3/SSL_get_stream_id.3", + "doc/man/man3/SSL_get_stream_read_state.3", + "doc/man/man3/SSL_get_value_uint.3", "doc/man/man3/SSL_get_verify_result.3", "doc/man/man3/SSL_get_version.3", "doc/man/man3/SSL_group_to_name.3", + "doc/man/man3/SSL_handle_events.3", "doc/man/man3/SSL_in_init.3", + "doc/man/man3/SSL_inject_net_dgram.3", "doc/man/man3/SSL_key_update.3", "doc/man/man3/SSL_library_init.3", "doc/man/man3/SSL_load_client_CA_file.3", "doc/man/man3/SSL_new.3", + "doc/man/man3/SSL_new_domain.3", + "doc/man/man3/SSL_new_listener.3", + "doc/man/man3/SSL_new_stream.3", "doc/man/man3/SSL_pending.3", + "doc/man/man3/SSL_poll.3", "doc/man/man3/SSL_read.3", "doc/man/man3/SSL_read_early_data.3", "doc/man/man3/SSL_rstate_string.3", "doc/man/man3/SSL_session_reused.3", "doc/man/man3/SSL_set1_host.3", + "doc/man/man3/SSL_set1_initial_peer_addr.3", + "doc/man/man3/SSL_set1_server_cert_type.3", "doc/man/man3/SSL_set_async_callback.3", "doc/man/man3/SSL_set_bio.3", + "doc/man/man3/SSL_set_blocking_mode.3", "doc/man/man3/SSL_set_connect_state.3", + "doc/man/man3/SSL_set_default_stream_mode.3", "doc/man/man3/SSL_set_fd.3", + "doc/man/man3/SSL_set_incoming_stream_policy.3", + "doc/man/man3/SSL_set_quic_tls_cbs.3", "doc/man/man3/SSL_set_retry_verify.3", "doc/man/man3/SSL_set_session.3", + "doc/man/man3/SSL_set_session_secret_cb.3", "doc/man/man3/SSL_set_shutdown.3", "doc/man/man3/SSL_set_verify_result.3", "doc/man/man3/SSL_shutdown.3", "doc/man/man3/SSL_state_string.3", + "doc/man/man3/SSL_stream_conclude.3", + "doc/man/man3/SSL_stream_reset.3", "doc/man/man3/SSL_want.3", "doc/man/man3/SSL_write.3", "doc/man/man3/TS_RESP_CTX_new.3", - "doc/man/man3/TS_VERIFY_CTX_set_certs.3", + "doc/man/man3/TS_VERIFY_CTX.3", "doc/man/man3/UI_STRING.3", "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", + "doc/man/man3/X509_ACERT_add1_attr.3", + "doc/man/man3/X509_ACERT_add_attr_nconf.3", + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3", + "doc/man/man3/X509_ACERT_get_attr.3", + "doc/man/man3/X509_ACERT_print_ex.3", "doc/man/man3/X509_ALGOR_dup.3", "doc/man/man3/X509_ATTRIBUTE.3", "doc/man/man3/X509_CRL_get0_by_serial.3", @@ -20104,6 +23405,7 @@ our %unified_info = ( "doc/man/man3/X509_REQ_get_attr.3", "doc/man/man3/X509_REQ_get_extensions.3", "doc/man/man3/X509_SIG_get0.3", + "doc/man/man3/X509_STORE_CTX_get_by_subject.3", "doc/man/man3/X509_STORE_CTX_get_error.3", "doc/man/man3/X509_STORE_CTX_new.3", "doc/man/man3/X509_STORE_CTX_set_verify_cb.3", @@ -20126,6 +23428,7 @@ our %unified_info = ( "doc/man/man3/X509_get0_notBefore.3", "doc/man/man3/X509_get0_signature.3", "doc/man/man3/X509_get0_uids.3", + "doc/man/man3/X509_get_default_cert_file.3", "doc/man/man3/X509_get_extension_flags.3", "doc/man/man3/X509_get_pubkey.3", "doc/man/man3/X509_get_serialNumber.3", @@ -20171,12 +23474,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-RC5.7", "doc/man/man7/EVP_CIPHER-SEED.7", "doc/man/man7/EVP_CIPHER-SM4.7", + "doc/man/man7/EVP_KDF-ARGON2.7", "doc/man/man7/EVP_KDF-HKDF.7", + "doc/man/man7/EVP_KDF-HMAC-DRBG.7", "doc/man/man7/EVP_KDF-KB.7", "doc/man/man7/EVP_KDF-KRB5KDF.7", "doc/man/man7/EVP_KDF-PBKDF1.7", "doc/man/man7/EVP_KDF-PBKDF2.7", "doc/man/man7/EVP_KDF-PKCS12KDF.7", + "doc/man/man7/EVP_KDF-PVKKDF.7", "doc/man/man7/EVP_KDF-SCRYPT.7", "doc/man/man7/EVP_KDF-SS.7", "doc/man/man7/EVP_KDF-SSHKDF.7", @@ -20185,7 +23491,10 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X942-ASN1.7", "doc/man/man7/EVP_KDF-X942-CONCAT.7", "doc/man/man7/EVP_KDF-X963.7", + "doc/man/man7/EVP_KEM-EC.7", + "doc/man/man7/EVP_KEM-ML-KEM.7", "doc/man/man7/EVP_KEM-RSA.7", + "doc/man/man7/EVP_KEM-X25519.7", "doc/man/man7/EVP_KEYEXCH-DH.7", "doc/man/man7/EVP_KEYEXCH-ECDH.7", "doc/man/man7/EVP_KEYEXCH-X25519.7", @@ -20197,6 +23506,7 @@ our %unified_info = ( "doc/man/man7/EVP_MAC-Poly1305.7", "doc/man/man7/EVP_MAC-Siphash.7", "doc/man/man7/EVP_MD-BLAKE2.7", + "doc/man/man7/EVP_MD-KECCAK.7", "doc/man/man7/EVP_MD-MD2.7", "doc/man/man7/EVP_MD-MD4.7", "doc/man/man7/EVP_MD-MD5-SHA1.7", @@ -20216,12 +23526,17 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-EC.7", "doc/man/man7/EVP_PKEY-FFC.7", "doc/man/man7/EVP_PKEY-HMAC.7", + "doc/man/man7/EVP_PKEY-ML-DSA.7", + "doc/man/man7/EVP_PKEY-ML-KEM.7", "doc/man/man7/EVP_PKEY-RSA.7", + "doc/man/man7/EVP_PKEY-SLH-DSA.7", "doc/man/man7/EVP_PKEY-SM2.7", "doc/man/man7/EVP_PKEY-X25519.7", + "doc/man/man7/EVP_RAND-CRNG-TEST.7", "doc/man/man7/EVP_RAND-CTR-DRBG.7", "doc/man/man7/EVP_RAND-HASH-DRBG.7", "doc/man/man7/EVP_RAND-HMAC-DRBG.7", + "doc/man/man7/EVP_RAND-JITTER.7", "doc/man/man7/EVP_RAND-SEED-SRC.7", "doc/man/man7/EVP_RAND-TEST-RAND.7", "doc/man/man7/EVP_RAND.7", @@ -20229,17 +23544,19 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-ECDSA.7", "doc/man/man7/EVP_SIGNATURE-ED25519.7", "doc/man/man7/EVP_SIGNATURE-HMAC.7", + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7", "doc/man/man7/EVP_SIGNATURE-RSA.7", + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7", "doc/man/man7/OSSL_PROVIDER-FIPS.7", "doc/man/man7/OSSL_PROVIDER-base.7", "doc/man/man7/OSSL_PROVIDER-default.7", "doc/man/man7/OSSL_PROVIDER-legacy.7", "doc/man/man7/OSSL_PROVIDER-null.7", + "doc/man/man7/OSSL_STORE-winstore.7", "doc/man/man7/RAND.7", "doc/man/man7/RSA-PSS.7", "doc/man/man7/X25519.7", "doc/man/man7/bio.7", - "doc/man/man7/crypto.7", "doc/man/man7/ct.7", "doc/man/man7/des_modes.7", "doc/man/man7/evp.7", @@ -20250,14 +23567,31 @@ our %unified_info = ( "doc/man/man7/life_cycle-mac.7", "doc/man/man7/life_cycle-pkey.7", "doc/man/man7/life_cycle-rand.7", - "doc/man/man7/migration_guide.7", "doc/man/man7/openssl-core.h.7", "doc/man/man7/openssl-core_dispatch.h.7", "doc/man/man7/openssl-core_names.h.7", "doc/man/man7/openssl-env.7", "doc/man/man7/openssl-glossary.7", + "doc/man/man7/openssl-qlog.7", + "doc/man/man7/openssl-quic-concurrency.7", + "doc/man/man7/openssl-quic.7", "doc/man/man7/openssl-threads.7", "doc/man/man7/openssl_user_macros.7", + "doc/man/man7/ossl-guide-introduction.7", + "doc/man/man7/ossl-guide-libcrypto-introduction.7", + "doc/man/man7/ossl-guide-libraries-introduction.7", + "doc/man/man7/ossl-guide-libssl-introduction.7", + "doc/man/man7/ossl-guide-migration.7", + "doc/man/man7/ossl-guide-quic-client-block.7", + "doc/man/man7/ossl-guide-quic-client-non-block.7", + "doc/man/man7/ossl-guide-quic-introduction.7", + "doc/man/man7/ossl-guide-quic-multi-stream.7", + "doc/man/man7/ossl-guide-quic-server-block.7", + "doc/man/man7/ossl-guide-quic-server-non-block.7", + "doc/man/man7/ossl-guide-tls-client-block.7", + "doc/man/man7/ossl-guide-tls-client-non-block.7", + "doc/man/man7/ossl-guide-tls-introduction.7", + "doc/man/man7/ossl-guide-tls-server-block.7", "doc/man/man7/ossl_store-file.7", "doc/man/man7/ossl_store.7", "doc/man/man7/passphrase-encoding.7", @@ -20276,10 +23610,10 @@ our %unified_info = ( "doc/man/man7/provider-object.7", "doc/man/man7/provider-rand.7", "doc/man/man7/provider-signature.7", + "doc/man/man7/provider-skeymgmt.7", "doc/man/man7/provider-storemgmt.7", "doc/man/man7/provider.7", "doc/man/man7/proxy-certificates.7", - "doc/man/man7/ssl.7", "doc/man/man7/x509.7" ] }, @@ -20291,6 +23625,7 @@ our %unified_info = ( ], "programs" => [ "apps/openssl", + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -20301,7 +23636,24 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test", "test/aborttest", "test/acvp_test", @@ -20319,21 +23671,28 @@ our %unified_info = ( "test/asynctest", "test/bad_dtls_test", "test/bftest", + "test/bio_addr_test", + "test/bio_base64_test", "test/bio_callback_test", "test/bio_core_test", + "test/bio_dgram_test", "test/bio_enc_test", "test/bio_memleak_test", + "test/bio_meth_test", "test/bio_prefix_text", "test/bio_pw_callback_test", "test/bio_readbuffer_test", + "test/bio_tfo_test", "test/bioprinttest", "test/bn_internal_test", "test/bntest", + "test/build_wincrypt_test", "test/buildtest_c_aes", "test/buildtest_c_async", "test/buildtest_c_blowfish", "test/buildtest_c_bn", "test/buildtest_c_buffer", + "test/buildtest_c_byteorder", "test/buildtest_c_camellia", "test/buildtest_c_cast", "test/buildtest_c_cmac", @@ -20342,7 +23701,6 @@ our %unified_info = ( "test/buildtest_c_conftypes", "test/buildtest_c_core", "test/buildtest_c_core_dispatch", - "test/buildtest_c_core_names", "test/buildtest_c_core_object", "test/buildtest_c_cryptoerr_legacy", "test/buildtest_c_decoder", @@ -20351,6 +23709,7 @@ our %unified_info = ( "test/buildtest_c_dsa", "test/buildtest_c_dtls1", "test/buildtest_c_e_os2", + "test/buildtest_c_e_ostime", "test/buildtest_c_ebcdic", "test/buildtest_c_ec", "test/buildtest_c_ecdh", @@ -20360,13 +23719,16 @@ our %unified_info = ( "test/buildtest_c_evp", "test/buildtest_c_fips_names", "test/buildtest_c_hmac", + "test/buildtest_c_hpke", "test/buildtest_c_http", "test/buildtest_c_idea", + "test/buildtest_c_indicator", "test/buildtest_c_kdf", "test/buildtest_c_macros", "test/buildtest_c_md4", "test/buildtest_c_md5", "test/buildtest_c_mdc2", + "test/buildtest_c_ml_kem", "test/buildtest_c_modes", "test/buildtest_c_obj_mac", "test/buildtest_c_objects", @@ -20377,6 +23739,7 @@ our %unified_info = ( "test/buildtest_c_pem2", "test/buildtest_c_prov_ssl", "test/buildtest_c_provider", + "test/buildtest_c_quic", "test/buildtest_c_rand", "test/buildtest_c_rc2", "test/buildtest_c_rc4", @@ -20391,11 +23754,14 @@ our %unified_info = ( "test/buildtest_c_stack", "test/buildtest_c_store", "test/buildtest_c_symhacks", + "test/buildtest_c_thread", "test/buildtest_c_tls1", "test/buildtest_c_ts", "test/buildtest_c_txt_db", "test/buildtest_c_types", "test/buildtest_c_whrlpool", + "test/byteorder_test", + "test/ca_internals_test", "test/casttest", "test/chacha_internal_test", "test/cipher_overhead_test", @@ -20424,6 +23790,7 @@ our %unified_info = ( "test/curve448_internal_test", "test/d2i_test", "test/danetest", + "test/decoder_propq_test", "test/defltfips_test", "test/destest", "test/dhtest", @@ -20448,9 +23815,12 @@ our %unified_info = ( "test/evp_kdf_test", "test/evp_libctx_test", "test/evp_pkey_ctx_new_from_name", + "test/evp_pkey_dhkem_test", "test/evp_pkey_dparams_test", "test/evp_pkey_provided_test", + "test/evp_skey_test", "test/evp_test", + "test/evp_xof_test", "test/exdatatest", "test/exptest", "test/ext_internal_test", @@ -20460,21 +23830,29 @@ our %unified_info = ( "test/gmdifftest", "test/hexstr_test", "test/hmactest", + "test/hpke_test", "test/http_test", "test/ideatest", "test/igetest", + "test/json_test", "test/keymgmt_internal_test", "test/lhash_test", + "test/list_test", "test/localetest", "test/mdc2_internal_test", "test/mdc2test", + "test/membio_test", "test/memleaktest", + "test/ml_dsa_test", + "test/ml_kem_evp_extra_test", + "test/ml_kem_internal_test", "test/modes_internal_test", "test/namemap_internal_test", "test/nodefltctxtest", "test/ocspapitest", "test/ossl_store_test", "test/packettest", + "test/pairwise_fail_test", "test/param_build_test", "test/params_api_test", "test/params_conversion_test", @@ -20483,36 +23861,65 @@ our %unified_info = ( "test/pbetest", "test/pem_read_depr_test", "test/pemtest", + "test/pkcs12_api_test", "test/pkcs12_format_test", "test/pkcs7_test", "test/pkey_meth_kdf_test", "test/pkey_meth_test", "test/poly1305_internal_test", + "test/priority_queue_test", "test/property_test", "test/prov_config_test", "test/provfetchtest", + "test/provider_default_search_path_test", "test/provider_fallback_test", "test/provider_internal_test", "test/provider_pkey_test", "test/provider_status_test", "test/provider_test", "test/punycode_test", + "test/quic_ackm_test", + "test/quic_cc_test", + "test/quic_cfq_test", + "test/quic_client_test", + "test/quic_fc_test", + "test/quic_fifd_test", + "test/quic_lcidm_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_qlog_test", + "test/quic_radix_test", + "test/quic_rcidm_test", + "test/quic_record_test", + "test/quic_srt_gen_test", + "test/quic_srtm_test", + "test/quic_stream_test", + "test/quic_tserver_test", + "test/quic_txp_test", + "test/quic_txpim_test", + "test/quic_wire_test", + "test/quicapitest", + "test/quicfaultstest", "test/rand_status_test", "test/rand_test", "test/rc2test", "test/rc4test", "test/rc5test", - "test/rdrand_sanitytest", + "test/rdcpu_sanitytest", "test/recordlentest", + "test/rpktest", "test/rsa_complex", "test/rsa_mp_test", "test/rsa_sp800_56b_test", "test/rsa_test", + "test/rsa_x931_test", + "test/safe_math_test", "test/sanitytest", "test/secmemtest", "test/servername_test", "test/sha_test", "test/siphash_internal_test", + "test/slh_dsa_test", "test/sm2_internal_test", "test/sm3_internal_test", "test/sm4_internal_test", @@ -20520,6 +23927,7 @@ our %unified_info = ( "test/srptest", "test/ssl_cert_table_internal_test", "test/ssl_ctx_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", @@ -20527,13 +23935,17 @@ our %unified_info = ( "test/sslbuffertest", "test/sslcorrupttest", "test/stack_test", + "test/strtoultest", "test/sysdefaulttest", "test/test_test", + "test/threadpool_test", "test/threadstest", "test/threadstest_fips", "test/time_offset_test", + "test/time_test", "test/tls13ccstest", "test/tls13encryptiontest", + "test/tls13groupselection_test", "test/trace_api_test", "test/uitest", "test/upcallstest", @@ -20543,9 +23955,13 @@ our %unified_info = ( "test/verify_extra_test", "test/versions", "test/wpackettest", + "test/x509_acert_test", "test/x509_check_cert_pkey_test", "test/x509_dup_cert_test", "test/x509_internal_test", + "test/x509_load_cert_file_test", + "test/x509_req_test", + "test/x509_test", "test/x509_time_test", "test/x509aux" ], @@ -20560,6 +23976,33 @@ our %unified_info = ( "apps/CA.pl" => [ "apps/CA.pl.in" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/ca.c" + ], + "apps/lib/ca_internals_test-bin-app_libctx.o" => [ + "apps/lib/app_libctx.c" + ], + "apps/lib/ca_internals_test-bin-app_provider.o" => [ + "apps/lib/app_provider.c" + ], + "apps/lib/ca_internals_test-bin-app_rand.o" => [ + "apps/lib/app_rand.c" + ], + "apps/lib/ca_internals_test-bin-app_x509.o" => [ + "apps/lib/app_x509.c" + ], + "apps/lib/ca_internals_test-bin-apps.o" => [ + "apps/lib/apps.c" + ], + "apps/lib/ca_internals_test-bin-apps_ui.o" => [ + "apps/lib/apps_ui.c" + ], + "apps/lib/ca_internals_test-bin-engine.o" => [ + "apps/lib/engine.c" + ], + "apps/lib/ca_internals_test-bin-fmt.o" => [ + "apps/lib/fmt.c" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/lib/cmp_mock_srv.c" ], @@ -20581,6 +24024,9 @@ our %unified_info = ( "apps/lib/libapps-lib-apps.o" => [ "apps/lib/apps.c" ], + "apps/lib/libapps-lib-apps_opt_printf.o" => [ + "apps/lib/apps_opt_printf.c" + ], "apps/lib/libapps-lib-apps_ui.o" => [ "apps/lib/apps_ui.c" ], @@ -20599,6 +24045,9 @@ our %unified_info = ( "apps/lib/libapps-lib-http_server.o" => [ "apps/lib/http_server.c" ], + "apps/lib/libapps-lib-log.o" => [ + "apps/lib/log.c" + ], "apps/lib/libapps-lib-names.o" => [ "apps/lib/names.c" ], @@ -20636,12 +24085,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -20697,6 +24148,7 @@ our %unified_info = ( "apps/openssl-bin-s_server.o", "apps/openssl-bin-s_time.o", "apps/openssl-bin-sess_id.o", + "apps/openssl-bin-skeyutl.o", "apps/openssl-bin-smime.o", "apps/openssl-bin-speed.o", "apps/openssl-bin-spkac.o", @@ -20845,6 +24297,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/sess_id.c" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/skeyutl.c" + ], "apps/openssl-bin-smime.o" => [ "apps/smime.c" ], @@ -20908,6 +24363,9 @@ our %unified_info = ( "crypto/aes/libcrypto-lib-aesni-x86_64.o" => [ "crypto/aes/aesni-x86_64.s" ], + "crypto/aes/libcrypto-lib-aesni-xts-avx512.o" => [ + "crypto/aes/aesni-xts-avx512.s" + ], "crypto/aes/libcrypto-lib-bsaes-x86_64.o" => [ "crypto/aes/bsaes-x86_64.s" ], @@ -20935,6 +24393,9 @@ our %unified_info = ( "crypto/aes/libfips-lib-aesni-x86_64.o" => [ "crypto/aes/aesni-x86_64.s" ], + "crypto/aes/libfips-lib-aesni-xts-avx512.o" => [ + "crypto/aes/aesni-xts-avx512.s" + ], "crypto/aes/libfips-lib-bsaes-x86_64.o" => [ "crypto/aes/bsaes-x86_64.s" ], @@ -20944,6 +24405,12 @@ our %unified_info = ( "crypto/aria/libcrypto-lib-aria.o" => [ "crypto/aria/aria.c" ], + "crypto/asn1/asn1_time_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], + "crypto/asn1/ca_internals_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], "crypto/asn1/libcrypto-lib-a_bitstr.o" => [ "crypto/asn1/a_bitstr.c" ], @@ -21136,6 +24603,9 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" => [ "crypto/asn1/x_val.c" ], + "crypto/asn1_time_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/async/arch/libcrypto-lib-async_null.o" => [ "crypto/async/arch/async_null.c" ], @@ -21229,6 +24699,9 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_dgram.o" => [ "crypto/bio/bss_dgram.c" ], + "crypto/bio/libcrypto-lib-bss_dgram_pair.o" => [ + "crypto/bio/bss_dgram_pair.c" + ], "crypto/bio/libcrypto-lib-bss_fd.o" => [ "crypto/bio/bss_fd.c" ], @@ -21349,12 +24822,27 @@ our %unified_info = ( "crypto/bn/libcrypto-lib-bn_x931p.o" => [ "crypto/bn/bn_x931p.c" ], + "crypto/bn/libcrypto-lib-rsaz-2k-avx512.o" => [ + "crypto/bn/rsaz-2k-avx512.s" + ], + "crypto/bn/libcrypto-lib-rsaz-2k-avxifma.o" => [ + "crypto/bn/rsaz-2k-avxifma.s" + ], + "crypto/bn/libcrypto-lib-rsaz-3k-avx512.o" => [ + "crypto/bn/rsaz-3k-avx512.s" + ], + "crypto/bn/libcrypto-lib-rsaz-3k-avxifma.o" => [ + "crypto/bn/rsaz-3k-avxifma.s" + ], + "crypto/bn/libcrypto-lib-rsaz-4k-avx512.o" => [ + "crypto/bn/rsaz-4k-avx512.s" + ], + "crypto/bn/libcrypto-lib-rsaz-4k-avxifma.o" => [ + "crypto/bn/rsaz-4k-avxifma.s" + ], "crypto/bn/libcrypto-lib-rsaz-avx2.o" => [ "crypto/bn/rsaz-avx2.s" ], - "crypto/bn/libcrypto-lib-rsaz-avx512.o" => [ - "crypto/bn/rsaz-avx512.s" - ], "crypto/bn/libcrypto-lib-rsaz-x86_64.o" => [ "crypto/bn/rsaz-x86_64.s" ], @@ -21457,12 +24945,27 @@ our %unified_info = ( "crypto/bn/libfips-lib-bn_word.o" => [ "crypto/bn/bn_word.c" ], + "crypto/bn/libfips-lib-rsaz-2k-avx512.o" => [ + "crypto/bn/rsaz-2k-avx512.s" + ], + "crypto/bn/libfips-lib-rsaz-2k-avxifma.o" => [ + "crypto/bn/rsaz-2k-avxifma.s" + ], + "crypto/bn/libfips-lib-rsaz-3k-avx512.o" => [ + "crypto/bn/rsaz-3k-avx512.s" + ], + "crypto/bn/libfips-lib-rsaz-3k-avxifma.o" => [ + "crypto/bn/rsaz-3k-avxifma.s" + ], + "crypto/bn/libfips-lib-rsaz-4k-avx512.o" => [ + "crypto/bn/rsaz-4k-avx512.s" + ], + "crypto/bn/libfips-lib-rsaz-4k-avxifma.o" => [ + "crypto/bn/rsaz-4k-avxifma.s" + ], "crypto/bn/libfips-lib-rsaz-avx2.o" => [ "crypto/bn/rsaz-avx2.s" ], - "crypto/bn/libfips-lib-rsaz-avx512.o" => [ - "crypto/bn/rsaz-avx512.s" - ], "crypto/bn/libfips-lib-rsaz-x86_64.o" => [ "crypto/bn/rsaz-x86_64.s" ], @@ -21490,6 +24993,9 @@ our %unified_info = ( "crypto/buffer/libfips-lib-buffer.o" => [ "crypto/buffer/buffer.c" ], + "crypto/ca_internals_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/camellia/libcrypto-lib-cmll-x86_64.o" => [ "crypto/camellia/cmll-x86_64.s" ], @@ -21544,6 +25050,9 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_err.o" => [ "crypto/cmp/cmp_err.c" ], + "crypto/cmp/libcrypto-lib-cmp_genm.o" => [ + "crypto/cmp/cmp_genm.c" + ], "crypto/cmp/libcrypto-lib-cmp_hdr.o" => [ "crypto/cmp/cmp_hdr.c" ], @@ -22237,9 +25746,15 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_blocks.o" => [ "crypto/err/err_blocks.c" ], + "crypto/err/libcrypto-lib-err_mark.o" => [ + "crypto/err/err_mark.c" + ], "crypto/err/libcrypto-lib-err_prn.o" => [ "crypto/err/err_prn.c" ], + "crypto/err/libcrypto-lib-err_save.o" => [ + "crypto/err/err_save.c" + ], "crypto/ess/libcrypto-lib-ess_asn1.o" => [ "crypto/ess/ess_asn1.c" ], @@ -22486,9 +26001,15 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libcrypto-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libcrypto-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libcrypto-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/evp/libfips-lib-asymcipher.o" => [ "crypto/evp/asymcipher.c" ], @@ -22534,9 +26055,6 @@ our %unified_info = ( "crypto/evp/libfips-lib-keymgmt_meth.o" => [ "crypto/evp/keymgmt_meth.c" ], - "crypto/evp/libfips-lib-m_sigver.o" => [ - "crypto/evp/m_sigver.c" - ], "crypto/evp/libfips-lib-mac_lib.o" => [ "crypto/evp/mac_lib.c" ], @@ -22555,9 +26073,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libfips-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libfips-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libfips-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/ffc/libcrypto-lib-ffc_backend.o" => [ "crypto/ffc/ffc_backend.c" ], @@ -22600,12 +26124,30 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params_validate.o" => [ "crypto/ffc/ffc_params_validate.c" ], + "crypto/hashtable/libcrypto-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libcrypto-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], + "crypto/hashtable/libfips-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libfips-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], "crypto/hmac/libcrypto-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], "crypto/hmac/libfips-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], + "crypto/hpke/libcrypto-lib-hpke.o" => [ + "crypto/hpke/hpke.c" + ], + "crypto/hpke/libcrypto-lib-hpke_util.o" => [ + "crypto/hpke/hpke_util.c" + ], "crypto/http/libcrypto-lib-http_client.o" => [ "crypto/http/http_client.c" ], @@ -22648,6 +26190,9 @@ our %unified_info = ( "crypto/libcrypto-lib-bsearch.o" => [ "crypto/bsearch.c" ], + "crypto/libcrypto-lib-comp_methods.o" => [ + "crypto/comp_methods.c" + ], "crypto/libcrypto-lib-context.o" => [ "crypto/context.c" ], @@ -22675,9 +26220,15 @@ our %unified_info = ( "crypto/libcrypto-lib-cversion.o" => [ "crypto/cversion.c" ], + "crypto/libcrypto-lib-defaults.o" => [ + "crypto/defaults.c" + ], "crypto/libcrypto-lib-der_writer.o" => [ "crypto/der_writer.c" ], + "crypto/libcrypto-lib-deterministic_nonce.o" => [ + "crypto/deterministic_nonce.c" + ], "crypto/libcrypto-lib-ebcdic.o" => [ "crypto/ebcdic.c" ], @@ -22687,6 +26238,9 @@ our %unified_info = ( "crypto/libcrypto-lib-getenv.o" => [ "crypto/getenv.c" ], + "crypto/libcrypto-lib-indicator_core.o" => [ + "crypto/indicator_core.c" + ], "crypto/libcrypto-lib-info.o" => [ "crypto/info.c" ], @@ -22735,6 +26289,9 @@ our %unified_info = ( "crypto/libcrypto-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libcrypto-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libcrypto-lib-passphrase.o" => [ "crypto/passphrase.c" ], @@ -22756,12 +26313,21 @@ our %unified_info = ( "crypto/libcrypto-lib-punycode.o" => [ "crypto/punycode.c" ], + "crypto/libcrypto-lib-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/libcrypto-lib-self_test_core.o" => [ "crypto/self_test_core.c" ], + "crypto/libcrypto-lib-sleep.o" => [ + "crypto/sleep.c" + ], "crypto/libcrypto-lib-sparse_array.o" => [ "crypto/sparse_array.c" ], + "crypto/libcrypto-lib-ssl_err.o" => [ + "crypto/ssl_err.c" + ], "crypto/libcrypto-lib-threads_lib.o" => [ "crypto/threads_lib.c" ], @@ -22774,6 +26340,9 @@ our %unified_info = ( "crypto/libcrypto-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libcrypto-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libcrypto-lib-trace.o" => [ "crypto/trace.c" ], @@ -22840,6 +26409,9 @@ our %unified_info = ( "crypto/libfips-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libfips-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libfips-lib-provider_core.o" => [ "crypto/provider_core.c" ], @@ -22864,6 +26436,9 @@ our %unified_info = ( "crypto/libfips-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libfips-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libfips-lib-x86_64cpuid.o" => [ "crypto/x86_64cpuid.s" ], @@ -22891,6 +26466,63 @@ our %unified_info = ( "crypto/mdc2/libcrypto-lib-mdc2dgst.o" => [ "crypto/mdc2/mdc2dgst.c" ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_kem/libcrypto-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], + "crypto/ml_kem/libfips-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], + "crypto/modes/libcrypto-lib-aes-gcm-avx512.o" => [ + "crypto/modes/aes-gcm-avx512.s" + ], "crypto/modes/libcrypto-lib-aesni-gcm-x86_64.o" => [ "crypto/modes/aesni-gcm-x86_64.s" ], @@ -22930,6 +26562,12 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libcrypto-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], + "crypto/modes/libfips-lib-aes-gcm-avx512.o" => [ + "crypto/modes/aes-gcm-avx512.s" + ], "crypto/modes/libfips-lib-aesni-gcm-x86_64.o" => [ "crypto/modes/aesni-gcm-x86_64.s" ], @@ -22960,6 +26598,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libfips-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/objects/libcrypto-lib-o_names.o" => [ "crypto/objects/o_names.c" ], @@ -23005,6 +26646,9 @@ our %unified_info = ( "crypto/ocsp/libcrypto-lib-v3_ocsp.o" => [ "crypto/ocsp/v3_ocsp.c" ], + "crypto/packettest-bin-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/pem/libcrypto-lib-pem_all.o" => [ "crypto/pem/pem_all.c" ], @@ -23167,6 +26811,9 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_pool.o" => [ "crypto/rand/rand_pool.c" ], + "crypto/rand/libcrypto-lib-rand_uniform.o" => [ + "crypto/rand/rand_uniform.c" + ], "crypto/rand/libcrypto-lib-randfile.o" => [ "crypto/rand/randfile.c" ], @@ -23410,6 +27057,66 @@ our %unified_info = ( "crypto/siphash/libcrypto-lib-siphash.o" => [ "crypto/siphash/siphash.c" ], + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], + "crypto/slh_dsa/libfips-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libfips-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libfips-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libfips-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libfips-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], "crypto/sm2/libcrypto-lib-sm2_crypt.o" => [ "crypto/sm2/sm2_crypt.c" ], @@ -23464,6 +27171,42 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_strings.o" => [ "crypto/store/store_strings.c" ], + "crypto/thread/arch/libcrypto-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/arch/libfips-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libfips-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libfips-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/libcrypto-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libcrypto-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libcrypto-lib-internal.o" => [ + "crypto/thread/internal.c" + ], + "crypto/thread/libfips-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libfips-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libfips-lib-internal.o" => [ + "crypto/thread/internal.c" + ], "crypto/ts/libcrypto-lib-ts_asn1.o" => [ "crypto/ts/ts_asn1.c" ], @@ -23548,6 +27291,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_tree.o" => [ "crypto/x509/pcy_tree.c" ], + "crypto/x509/libcrypto-lib-t_acert.o" => [ + "crypto/x509/t_acert.c" + ], "crypto/x509/libcrypto-lib-t_crl.o" => [ "crypto/x509/t_crl.c" ], @@ -23557,6 +27303,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-t_x509.o" => [ "crypto/x509/t_x509.c" ], + "crypto/x509/libcrypto-lib-v3_aaa.o" => [ + "crypto/x509/v3_aaa.c" + ], + "crypto/x509/libcrypto-lib-v3_ac_tgt.o" => [ + "crypto/x509/v3_ac_tgt.c" + ], "crypto/x509/libcrypto-lib-v3_addr.o" => [ "crypto/x509/v3_addr.c" ], @@ -23572,6 +27324,21 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_asid.o" => [ "crypto/x509/v3_asid.c" ], + "crypto/x509/libcrypto-lib-v3_attrdesc.o" => [ + "crypto/x509/v3_attrdesc.c" + ], + "crypto/x509/libcrypto-lib-v3_attrmap.o" => [ + "crypto/x509/v3_attrmap.c" + ], + "crypto/x509/libcrypto-lib-v3_audit_id.o" => [ + "crypto/x509/v3_audit_id.c" + ], + "crypto/x509/libcrypto-lib-v3_authattid.o" => [ + "crypto/x509/v3_authattid.c" + ], + "crypto/x509/libcrypto-lib-v3_battcons.o" => [ + "crypto/x509/v3_battcons.c" + ], "crypto/x509/libcrypto-lib-v3_bcons.o" => [ "crypto/x509/v3_bcons.c" ], @@ -23596,15 +27363,24 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_genn.o" => [ "crypto/x509/v3_genn.c" ], + "crypto/x509/libcrypto-lib-v3_group_ac.o" => [ + "crypto/x509/v3_group_ac.c" + ], "crypto/x509/libcrypto-lib-v3_ia5.o" => [ "crypto/x509/v3_ia5.c" ], + "crypto/x509/libcrypto-lib-v3_ind_iss.o" => [ + "crypto/x509/v3_ind_iss.c" + ], "crypto/x509/libcrypto-lib-v3_info.o" => [ "crypto/x509/v3_info.c" ], "crypto/x509/libcrypto-lib-v3_int.o" => [ "crypto/x509/v3_int.c" ], + "crypto/x509/libcrypto-lib-v3_iobo.o" => [ + "crypto/x509/v3_iobo.c" + ], "crypto/x509/libcrypto-lib-v3_ist.o" => [ "crypto/x509/v3_ist.c" ], @@ -23614,6 +27390,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_ncons.o" => [ "crypto/x509/v3_ncons.c" ], + "crypto/x509/libcrypto-lib-v3_no_ass.o" => [ + "crypto/x509/v3_no_ass.c" + ], + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o" => [ + "crypto/x509/v3_no_rev_avail.c" + ], "crypto/x509/libcrypto-lib-v3_pci.o" => [ "crypto/x509/v3_pci.c" ], @@ -23635,18 +27417,36 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_purp.o" => [ "crypto/x509/v3_purp.c" ], + "crypto/x509/libcrypto-lib-v3_rolespec.o" => [ + "crypto/x509/v3_rolespec.c" + ], "crypto/x509/libcrypto-lib-v3_san.o" => [ "crypto/x509/v3_san.c" ], + "crypto/x509/libcrypto-lib-v3_sda.o" => [ + "crypto/x509/v3_sda.c" + ], + "crypto/x509/libcrypto-lib-v3_single_use.o" => [ + "crypto/x509/v3_single_use.c" + ], "crypto/x509/libcrypto-lib-v3_skid.o" => [ "crypto/x509/v3_skid.c" ], + "crypto/x509/libcrypto-lib-v3_soa_id.o" => [ + "crypto/x509/v3_soa_id.c" + ], "crypto/x509/libcrypto-lib-v3_sxnet.o" => [ "crypto/x509/v3_sxnet.c" ], + "crypto/x509/libcrypto-lib-v3_timespec.o" => [ + "crypto/x509/v3_timespec.c" + ], "crypto/x509/libcrypto-lib-v3_tlsf.o" => [ "crypto/x509/v3_tlsf.c" ], + "crypto/x509/libcrypto-lib-v3_usernotice.o" => [ + "crypto/x509/v3_usernotice.c" + ], "crypto/x509/libcrypto-lib-v3_utf8.o" => [ "crypto/x509/v3_utf8.c" ], @@ -23656,6 +27456,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3err.o" => [ "crypto/x509/v3err.c" ], + "crypto/x509/libcrypto-lib-x509_acert.o" => [ + "crypto/x509/x509_acert.c" + ], "crypto/x509/libcrypto-lib-x509_att.o" => [ "crypto/x509/x509_att.c" ], @@ -23707,6 +27510,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_vpm.o" => [ "crypto/x509/x509_vpm.c" ], + "crypto/x509/libcrypto-lib-x509aset.o" => [ + "crypto/x509/x509aset.c" + ], "crypto/x509/libcrypto-lib-x509cset.o" => [ "crypto/x509/x509cset.c" ], @@ -23734,6 +27540,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_exten.o" => [ "crypto/x509/x_exten.c" ], + "crypto/x509/libcrypto-lib-x_ietfatt.o" => [ + "crypto/x509/x_ietfatt.c" + ], "crypto/x509/libcrypto-lib-x_name.o" => [ "crypto/x509/x_name.c" ], @@ -23758,6 +27567,16 @@ our %unified_info = ( "engines/libcrypto-lib-e_padlock.o" => [ "engines/e_padlock.c" ], + "fuzz/acert-test" => [ + "fuzz/acert-test-bin-acert.o", + "fuzz/acert-test-bin-test-corpus.o" + ], + "fuzz/acert-test-bin-acert.o" => [ + "fuzz/acert.c" + ], + "fuzz/acert-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/asn1-test" => [ "fuzz/asn1-test-bin-asn1.o", "fuzz/asn1-test-bin-fuzz_rand.o", @@ -23870,6 +27689,190 @@ our %unified_info = ( "fuzz/ct-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/decoder-test" => [ + "fuzz/decoder-test-bin-decoder.o", + "fuzz/decoder-test-bin-fuzz_rand.o", + "fuzz/decoder-test-bin-test-corpus.o" + ], + "fuzz/decoder-test-bin-decoder.o" => [ + "fuzz/decoder.c" + ], + "fuzz/decoder-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/decoder-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsclient-test" => [ + "fuzz/dtlsclient-test-bin-dtlsclient.o", + "fuzz/dtlsclient-test-bin-fuzz_rand.o", + "fuzz/dtlsclient-test-bin-test-corpus.o" + ], + "fuzz/dtlsclient-test-bin-dtlsclient.o" => [ + "fuzz/dtlsclient.c" + ], + "fuzz/dtlsclient-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsclient-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsserver-test" => [ + "fuzz/dtlsserver-test-bin-dtlsserver.o", + "fuzz/dtlsserver-test-bin-fuzz_rand.o", + "fuzz/dtlsserver-test-bin-test-corpus.o" + ], + "fuzz/dtlsserver-test-bin-dtlsserver.o" => [ + "fuzz/dtlsserver.c" + ], + "fuzz/dtlsserver-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsserver-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/hashtable-test" => [ + "fuzz/hashtable-test-bin-fuzz_rand.o", + "fuzz/hashtable-test-bin-hashtable.o", + "fuzz/hashtable-test-bin-test-corpus.o" + ], + "fuzz/hashtable-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/hashtable-test-bin-hashtable.o" => [ + "fuzz/hashtable.c" + ], + "fuzz/hashtable-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-dsa-test" => [ + "fuzz/ml-dsa-test-bin-fuzz_rand.o", + "fuzz/ml-dsa-test-bin-ml-dsa.o", + "fuzz/ml-dsa-test-bin-test-corpus.o" + ], + "fuzz/ml-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-dsa-test-bin-ml-dsa.o" => [ + "fuzz/ml-dsa.c" + ], + "fuzz/ml-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-kem-test" => [ + "fuzz/ml-kem-test-bin-fuzz_rand.o", + "fuzz/ml-kem-test-bin-ml-kem.o", + "fuzz/ml-kem-test-bin-test-corpus.o" + ], + "fuzz/ml-kem-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-kem-test-bin-ml-kem.o" => [ + "fuzz/ml-kem.c" + ], + "fuzz/ml-kem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/pem-test" => [ + "fuzz/pem-test-bin-pem.o", + "fuzz/pem-test-bin-test-corpus.o" + ], + "fuzz/pem-test-bin-pem.o" => [ + "fuzz/pem.c" + ], + "fuzz/pem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/provider-test" => [ + "fuzz/provider-test-bin-provider.o", + "fuzz/provider-test-bin-test-corpus.o" + ], + "fuzz/provider-test-bin-provider.o" => [ + "fuzz/provider.c" + ], + "fuzz/provider-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/punycode-test" => [ + "fuzz/punycode-test-bin-punycode.o", + "fuzz/punycode-test-bin-test-corpus.o" + ], + "fuzz/punycode-test-bin-punycode.o" => [ + "fuzz/punycode.c" + ], + "fuzz/punycode-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-client-test" => [ + "fuzz/quic-client-test-bin-fuzz_rand.o", + "fuzz/quic-client-test-bin-quic-client.o", + "fuzz/quic-client-test-bin-test-corpus.o" + ], + "fuzz/quic-client-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-client-test-bin-quic-client.o" => [ + "fuzz/quic-client.c" + ], + "fuzz/quic-client-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-lcidm-test" => [ + "fuzz/quic-lcidm-test-bin-fuzz_rand.o", + "fuzz/quic-lcidm-test-bin-quic-lcidm.o", + "fuzz/quic-lcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-lcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-lcidm-test-bin-quic-lcidm.o" => [ + "fuzz/quic-lcidm.c" + ], + "fuzz/quic-lcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-rcidm-test" => [ + "fuzz/quic-rcidm-test-bin-fuzz_rand.o", + "fuzz/quic-rcidm-test-bin-quic-rcidm.o", + "fuzz/quic-rcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-rcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-rcidm-test-bin-quic-rcidm.o" => [ + "fuzz/quic-rcidm.c" + ], + "fuzz/quic-rcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-server-test" => [ + "fuzz/quic-server-test-bin-fuzz_rand.o", + "fuzz/quic-server-test-bin-quic-server.o", + "fuzz/quic-server-test-bin-test-corpus.o" + ], + "fuzz/quic-server-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-server-test-bin-quic-server.o" => [ + "fuzz/quic-server.c" + ], + "fuzz/quic-server-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-srtm-test" => [ + "fuzz/quic-srtm-test-bin-fuzz_rand.o", + "fuzz/quic-srtm-test-bin-quic-srtm.o", + "fuzz/quic-srtm-test-bin-test-corpus.o" + ], + "fuzz/quic-srtm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-srtm-test-bin-quic-srtm.o" => [ + "fuzz/quic-srtm.c" + ], + "fuzz/quic-srtm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/server-test" => [ "fuzz/server-test-bin-fuzz_rand.o", "fuzz/server-test-bin-server.o", @@ -23884,6 +27887,40 @@ our %unified_info = ( "fuzz/server-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/slh-dsa-test" => [ + "fuzz/slh-dsa-test-bin-fuzz_rand.o", + "fuzz/slh-dsa-test-bin-slh-dsa.o", + "fuzz/slh-dsa-test-bin-test-corpus.o" + ], + "fuzz/slh-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/slh-dsa-test-bin-slh-dsa.o" => [ + "fuzz/slh-dsa.c" + ], + "fuzz/slh-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/smime-test" => [ + "fuzz/smime-test-bin-smime.o", + "fuzz/smime-test-bin-test-corpus.o" + ], + "fuzz/smime-test-bin-smime.o" => [ + "fuzz/smime.c" + ], + "fuzz/smime-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test" => [ + "fuzz/v3name-test-bin-test-corpus.o", + "fuzz/v3name-test-bin-v3name.o" + ], + "fuzz/v3name-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test-bin-v3name.o" => [ + "fuzz/v3name.c" + ], "fuzz/x509-test" => [ "fuzz/x509-test-bin-fuzz_rand.o", "fuzz/x509-test-bin-test-corpus.o", @@ -23910,6 +27947,7 @@ our %unified_info = ( "crypto/aes/libcrypto-lib-aesni-sha1-x86_64.o", "crypto/aes/libcrypto-lib-aesni-sha256-x86_64.o", "crypto/aes/libcrypto-lib-aesni-x86_64.o", + "crypto/aes/libcrypto-lib-aesni-xts-avx512.o", "crypto/aes/libcrypto-lib-bsaes-x86_64.o", "crypto/aes/libcrypto-lib-vpaes-x86_64.o", "crypto/aria/libcrypto-lib-aria.o", @@ -24008,6 +28046,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -24048,8 +28087,13 @@ our %unified_info = ( "crypto/bn/libcrypto-lib-bn_srp.o", "crypto/bn/libcrypto-lib-bn_word.o", "crypto/bn/libcrypto-lib-bn_x931p.o", + "crypto/bn/libcrypto-lib-rsaz-2k-avx512.o", + "crypto/bn/libcrypto-lib-rsaz-2k-avxifma.o", + "crypto/bn/libcrypto-lib-rsaz-3k-avx512.o", + "crypto/bn/libcrypto-lib-rsaz-3k-avxifma.o", + "crypto/bn/libcrypto-lib-rsaz-4k-avx512.o", + "crypto/bn/libcrypto-lib-rsaz-4k-avxifma.o", "crypto/bn/libcrypto-lib-rsaz-avx2.o", - "crypto/bn/libcrypto-lib-rsaz-avx512.o", "crypto/bn/libcrypto-lib-rsaz-x86_64.o", "crypto/bn/libcrypto-lib-rsaz_exp.o", "crypto/bn/libcrypto-lib-rsaz_exp_x2.o", @@ -24075,6 +28119,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -24253,7 +28298,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", + "crypto/err/libcrypto-lib-err_mark.o", "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o", "crypto/ess/libcrypto-lib-ess_asn1.o", "crypto/ess/libcrypto-lib-ess_err.o", "crypto/ess/libcrypto-lib-ess_lib.o", @@ -24336,7 +28383,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/ffc/libcrypto-lib-ffc_backend.o", "crypto/ffc/libcrypto-lib-ffc_dh.o", "crypto/ffc/libcrypto-lib-ffc_key_generate.o", @@ -24344,7 +28393,11 @@ our %unified_info = ( "crypto/ffc/libcrypto-lib-ffc_params.o", "crypto/ffc/libcrypto-lib-ffc_params_generate.o", "crypto/ffc/libcrypto-lib-ffc_params_validate.o", + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", "crypto/hmac/libcrypto-lib-hmac.o", + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o", "crypto/http/libcrypto-lib-http_client.o", "crypto/http/libcrypto-lib-http_err.o", "crypto/http/libcrypto-lib-http_lib.o", @@ -24358,6 +28411,7 @@ our %unified_info = ( "crypto/lhash/libcrypto-lib-lhash.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -24367,10 +28421,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -24387,6 +28444,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -24394,12 +28452,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libcrypto-lib-x86_64cpuid.o", @@ -24411,6 +28473,16 @@ our %unified_info = ( "crypto/md5/libcrypto-lib-md5_sha1.o", "crypto/mdc2/libcrypto-lib-mdc2_one.o", "crypto/mdc2/libcrypto-lib-mdc2dgst.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_kem/libcrypto-lib-ml_kem.o", + "crypto/modes/libcrypto-lib-aes-gcm-avx512.o", "crypto/modes/libcrypto-lib-aesni-gcm-x86_64.o", "crypto/modes/libcrypto-lib-cbc128.o", "crypto/modes/libcrypto-lib-ccm128.o", @@ -24424,6 +28496,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/objects/libcrypto-lib-o_names.o", "crypto/objects/libcrypto-lib-obj_dat.o", "crypto/objects/libcrypto-lib-obj_err.o", @@ -24488,6 +28561,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rc2/libcrypto-lib-rc2_cbc.o", "crypto/rc2/libcrypto-lib-rc2_ecb.o", @@ -24541,6 +28615,16 @@ our %unified_info = ( "crypto/sha/libcrypto-lib-sha512-x86_64.o", "crypto/sha/libcrypto-lib-sha512.o", "crypto/siphash/libcrypto-lib-siphash.o", + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", "crypto/sm2/libcrypto-lib-sm2_crypt.o", "crypto/sm2/libcrypto-lib-sm2_err.o", "crypto/sm2/libcrypto-lib-sm2_key.o", @@ -24558,6 +28642,12 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_register.o", "crypto/store/libcrypto-lib-store_result.o", "crypto/store/libcrypto-lib-store_strings.o", + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", "crypto/ts/libcrypto-lib-ts_asn1.o", "crypto/ts/libcrypto-lib-ts_conf.o", "crypto/ts/libcrypto-lib-ts_err.o", @@ -24586,14 +28676,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -24602,12 +28700,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -24615,13 +28718,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -24639,6 +28749,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -24648,6 +28759,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -24669,14 +28781,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -24693,12 +28806,60 @@ our %unified_info = ( "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", "ssl/libssl-lib-tls_srp.o", - "ssl/record/libssl-lib-dtls1_bitmap.o", + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o", "ssl/record/libssl-lib-rec_layer_d1.o", "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o", "ssl/statem/libssl-lib-extensions.o", "ssl/statem/libssl-lib-extensions_clnt.o", "ssl/statem/libssl-lib-extensions_cust.o", @@ -24736,12 +28897,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/der/der_ecx_key.c" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/der/der_ml_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/der/der_ml_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/der/der_rsa_gen.c" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/der/der_rsa_key.c" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/der/der_slh_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/der/der_slh_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/der/der_wrap_gen.c" ], @@ -24808,6 +28981,9 @@ our %unified_info = ( "providers/common/libfips-lib-securitycheck_fips.o" => [ "providers/common/securitycheck_fips.c" ], + "providers/endecode_test-bin-legacyprov.o" => [ + "providers/legacyprov.c" + ], "providers/evp_extra_test-bin-legacyprov.o" => [ "providers/legacyprov.c" ], @@ -24822,6 +28998,9 @@ our %unified_info = ( "providers/fips/fips-dso-fips_entry.o" => [ "providers/fips/fips_entry.c" ], + "providers/fips/libfips-lib-fipsindicator.o" => [ + "providers/fips/fipsindicator.c" + ], "providers/fips/libfips-lib-fipsprov.o" => [ "providers/fips/fipsprov.c" ], @@ -24885,6 +29064,15 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o" => [ "providers/implementations/ciphers/cipher_aes_gcm_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o" => [ "providers/implementations/ciphers/cipher_aes_hw.c" ], @@ -24957,9 +29145,27 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o" => [ "providers/implementations/ciphers/cipher_sm4.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o" => [ "providers/implementations/ciphers/cipher_sm4_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o" => [ "providers/implementations/ciphers/cipher_tdes.c" ], @@ -25179,6 +29385,15 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" => [ "providers/implementations/encode_decode/endecoder_common.c" ], + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o" => [ + "providers/implementations/encode_decode/ml_common_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o" => [ + "providers/implementations/encode_decode/ml_dsa_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" => [ + "providers/implementations/encode_decode/ml_kem_codecs.c" + ], "providers/implementations/exchange/libdefault-lib-dh_exch.o" => [ "providers/implementations/exchange/dh_exch.c" ], @@ -25203,9 +29418,15 @@ our %unified_info = ( "providers/implementations/exchange/libfips-lib-kdf_exch.o" => [ "providers/implementations/exchange/kdf_exch.c" ], + "providers/implementations/kdfs/libdefault-lib-argon2.o" => [ + "providers/implementations/kdfs/argon2.c" + ], "providers/implementations/kdfs/libdefault-lib-hkdf.o" => [ "providers/implementations/kdfs/hkdf.c" ], + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o" => [ + "providers/implementations/kdfs/hmacdrbg_kdf.c" + ], "providers/implementations/kdfs/libdefault-lib-kbkdf.o" => [ "providers/implementations/kdfs/kbkdf.c" ], @@ -25263,12 +29484,39 @@ our %unified_info = ( "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" => [ "providers/implementations/kdfs/pbkdf1.c" ], + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" => [ + "providers/implementations/kdfs/pvkkdf.c" + ], + "providers/implementations/kem/libdefault-lib-ec_kem.o" => [ + "providers/implementations/kem/ec_kem.c" + ], + "providers/implementations/kem/libdefault-lib-ecx_kem.o" => [ + "providers/implementations/kem/ecx_kem.c" + ], + "providers/implementations/kem/libdefault-lib-kem_util.o" => [ + "providers/implementations/kem/kem_util.c" + ], + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libdefault-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libdefault-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libfips-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libfips-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libfips-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libtemplate-lib-template_kem.o" => [ + "providers/implementations/kem/template_kem.c" + ], "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25287,9 +29535,21 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25308,9 +29568,24 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" => [ + "providers/implementations/keymgmt/template_kmgmt.c" + ], "providers/implementations/macs/libdefault-lib-blake2b_mac.o" => [ "providers/implementations/macs/blake2b_mac.c" ], @@ -25347,9 +29622,6 @@ our %unified_info = ( "providers/implementations/macs/libfips-lib-kmac_prov.o" => [ "providers/implementations/macs/kmac_prov.c" ], - "providers/implementations/rands/libdefault-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libdefault-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25365,12 +29637,12 @@ our %unified_info = ( "providers/implementations/rands/libdefault-lib-seed_src.o" => [ "providers/implementations/rands/seed_src.c" ], + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o" => [ + "providers/implementations/rands/seed_src_jitter.c" + ], "providers/implementations/rands/libdefault-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], - "providers/implementations/rands/libfips-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libfips-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25383,6 +29655,9 @@ our %unified_info = ( "providers/implementations/rands/libfips-lib-drbg_hmac.o" => [ "providers/implementations/rands/drbg_hmac.c" ], + "providers/implementations/rands/libfips-lib-fips_crng_test.o" => [ + "providers/implementations/rands/fips_crng_test.c" + ], "providers/implementations/rands/libfips-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], @@ -25410,9 +29685,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/implementations/signature/sm2_sig.c" ], @@ -25428,15 +29709,36 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libfips-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], "providers/implementations/storemgmt/libdefault-lib-file_store.o" => [ "providers/implementations/storemgmt/file_store.c" ], "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o" => [ "providers/implementations/storemgmt/file_store_any2obj.c" ], + "providers/implementations/storemgmt/libdefault-lib-winstore_store.o" => [ + "providers/implementations/storemgmt/winstore_store.c" + ], "providers/legacy" => [ "providers/legacy-dso-legacy.res", "providers/legacy-dso-legacyprov.o", @@ -25458,8 +29760,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/libcommon-lib-provider_ctx.o", "providers/common/libcommon-lib-provider_err.o", @@ -25471,7 +29777,7 @@ our %unified_info = ( "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", "providers/implementations/digests/libcommon-lib-digestcommon.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/methods/libcommon-lib-tls_pad.o" ], "providers/libcrypto-lib-baseprov.o" => [ "providers/baseprov.c" @@ -25507,6 +29813,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -25531,7 +29840,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -25560,11 +29875,16 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o", "providers/implementations/exchange/libdefault-lib-dh_exch.o", "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", "providers/implementations/exchange/libdefault-lib-ecx_exch.o", "providers/implementations/exchange/libdefault-lib-kdf_exch.o", + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -25575,6 +29895,11 @@ our %unified_info = ( "providers/implementations/kdfs/libdefault-lib-sskdf.o", "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", "providers/implementations/kdfs/libdefault-lib-x942kdf.o", + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", @@ -25582,7 +29907,11 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libdefault-lib-blake2b_mac.o", "providers/implementations/macs/libdefault-lib-blake2s_mac.o", "providers/implementations/macs/libdefault-lib-cmac_prov.o", @@ -25591,12 +29920,12 @@ our %unified_info = ( "providers/implementations/macs/libdefault-lib-kmac_prov.o", "providers/implementations/macs/libdefault-lib-poly1305_prov.o", "providers/implementations/macs/libdefault-lib-siphash_prov.o", - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", @@ -25606,11 +29935,16 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", "providers/implementations/storemgmt/libdefault-lib-file_store.o", "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", - "ssl/libdefault-lib-s3_cbc.o" + "providers/implementations/storemgmt/libdefault-lib-winstore_store.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" ], "providers/libfips.a" => [ "crypto/aes/libfips-lib-aes-x86_64.o", @@ -25620,6 +29954,7 @@ our %unified_info = ( "crypto/aes/libfips-lib-aesni-sha1-x86_64.o", "crypto/aes/libfips-lib-aesni-sha256-x86_64.o", "crypto/aes/libfips-lib-aesni-x86_64.o", + "crypto/aes/libfips-lib-aesni-xts-avx512.o", "crypto/aes/libfips-lib-bsaes-x86_64.o", "crypto/aes/libfips-lib-vpaes-x86_64.o", "crypto/bn/libfips-lib-bn_add.o", @@ -25650,8 +29985,13 @@ our %unified_info = ( "crypto/bn/libfips-lib-bn_sqr.o", "crypto/bn/libfips-lib-bn_sqrt.o", "crypto/bn/libfips-lib-bn_word.o", + "crypto/bn/libfips-lib-rsaz-2k-avx512.o", + "crypto/bn/libfips-lib-rsaz-2k-avxifma.o", + "crypto/bn/libfips-lib-rsaz-3k-avx512.o", + "crypto/bn/libfips-lib-rsaz-3k-avxifma.o", + "crypto/bn/libfips-lib-rsaz-4k-avx512.o", + "crypto/bn/libfips-lib-rsaz-4k-avxifma.o", "crypto/bn/libfips-lib-rsaz-avx2.o", - "crypto/bn/libfips-lib-rsaz-avx512.o", "crypto/bn/libfips-lib-rsaz-x86_64.o", "crypto/bn/libfips-lib-rsaz_exp.o", "crypto/bn/libfips-lib-rsaz_exp_x2.o", @@ -25728,14 +30068,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", + "crypto/evp/libfips-lib-s_lib.o", "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o", "crypto/ffc/libfips-lib-ffc_backend.o", "crypto/ffc/libfips-lib-ffc_dh.o", "crypto/ffc/libfips-lib-ffc_key_generate.o", @@ -25743,6 +30084,8 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params.o", "crypto/ffc/libfips-lib-ffc_params_generate.o", "crypto/ffc/libfips-lib-ffc_params_validate.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o", "crypto/hmac/libfips-lib-hmac.o", "crypto/lhash/libfips-lib-lhash.o", "crypto/libfips-lib-asn1_dsa.o", @@ -25764,6 +30107,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -25772,7 +30116,18 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", "crypto/libfips-lib-x86_64cpuid.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o", + "crypto/ml_kem/libfips-lib-ml_kem.o", + "crypto/modes/libfips-lib-aes-gcm-avx512.o", "crypto/modes/libfips-lib-aesni-gcm-x86_64.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", @@ -25783,6 +30138,7 @@ our %unified_info = ( "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o", "crypto/property/libfips-lib-defn_cache.o", "crypto/property/libfips-lib-property.o", "crypto/property/libfips-lib-property_parse.o", @@ -25816,7 +30172,23 @@ our %unified_info = ( "crypto/sha/libfips-lib-sha3.o", "crypto/sha/libfips-lib-sha512-x86_64.o", "crypto/sha/libfips-lib-sha512.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o", "crypto/stack/libfips-lib-stack.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o", "providers/common/der/libfips-lib-der_rsa_sig.o", "providers/common/libfips-lib-bio_prov.o", "providers/common/libfips-lib-capabilities.o", @@ -25825,6 +30197,7 @@ our %unified_info = ( "providers/common/libfips-lib-provider_util.o", "providers/common/libfips-lib-securitycheck.o", "providers/common/libfips-lib-securitycheck_fips.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o", @@ -25862,6 +30235,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", "providers/implementations/kem/libfips-lib-rsa_kem.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", @@ -25869,24 +30244,32 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libfips-lib-cmac_prov.o", "providers/implementations/macs/libfips-lib-gmac_prov.o", "providers/implementations/macs/libfips-lib-hmac_prov.o", "providers/implementations/macs/libfips-lib-kmac_prov.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o", "providers/libcommon.a", - "ssl/libfips-lib-s3_cbc.o" + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "providers/liblegacy-lib-prov_running.o" => [ "providers/prov_running.c" @@ -25916,13 +30299,12 @@ our %unified_info = ( "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", "providers/implementations/digests/liblegacy-lib-wp_prov.o", "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o", "providers/liblegacy-lib-prov_running.o" ], - "ssl/libdefault-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" - ], - "ssl/libfips-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" + "providers/libtemplate.a" => [ + "providers/implementations/kem/libtemplate-lib-template_kem.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "ssl/libssl-lib-bio_ssl.o" => [ "ssl/bio_ssl.c" @@ -25942,6 +30324,9 @@ our %unified_info = ( "ssl/libssl-lib-pqueue.o" => [ "ssl/pqueue.c" ], + "ssl/libssl-lib-priority_queue.o" => [ + "ssl/priority_queue.c" + ], "ssl/libssl-lib-s3_enc.o" => [ "ssl/s3_enc.c" ], @@ -25957,15 +30342,15 @@ our %unified_info = ( "ssl/libssl-lib-ssl_cert.o" => [ "ssl/ssl_cert.c" ], + "ssl/libssl-lib-ssl_cert_comp.o" => [ + "ssl/ssl_cert_comp.c" + ], "ssl/libssl-lib-ssl_ciph.o" => [ "ssl/ssl_ciph.c" ], "ssl/libssl-lib-ssl_conf.o" => [ "ssl/ssl_conf.c" ], - "ssl/libssl-lib-ssl_err.o" => [ - "ssl/ssl_err.c" - ], "ssl/libssl-lib-ssl_err_legacy.o" => [ "ssl/ssl_err_legacy.c" ], @@ -26014,11 +30399,131 @@ our %unified_info = ( "ssl/libssl-lib-tls_srp.o" => [ "ssl/tls_srp.c" ], - "ssl/record/libcommon-lib-tls_pad.o" => [ - "ssl/record/tls_pad.c" + "ssl/quic/libssl-lib-cc_newreno.o" => [ + "ssl/quic/cc_newreno.c" + ], + "ssl/quic/libssl-lib-json_enc.o" => [ + "ssl/quic/json_enc.c" + ], + "ssl/quic/libssl-lib-qlog.o" => [ + "ssl/quic/qlog.c" + ], + "ssl/quic/libssl-lib-qlog_event_helpers.o" => [ + "ssl/quic/qlog_event_helpers.c" + ], + "ssl/quic/libssl-lib-quic_ackm.o" => [ + "ssl/quic/quic_ackm.c" + ], + "ssl/quic/libssl-lib-quic_cfq.o" => [ + "ssl/quic/quic_cfq.c" + ], + "ssl/quic/libssl-lib-quic_channel.o" => [ + "ssl/quic/quic_channel.c" + ], + "ssl/quic/libssl-lib-quic_demux.o" => [ + "ssl/quic/quic_demux.c" + ], + "ssl/quic/libssl-lib-quic_engine.o" => [ + "ssl/quic/quic_engine.c" + ], + "ssl/quic/libssl-lib-quic_fc.o" => [ + "ssl/quic/quic_fc.c" + ], + "ssl/quic/libssl-lib-quic_fifd.o" => [ + "ssl/quic/quic_fifd.c" + ], + "ssl/quic/libssl-lib-quic_impl.o" => [ + "ssl/quic/quic_impl.c" + ], + "ssl/quic/libssl-lib-quic_lcidm.o" => [ + "ssl/quic/quic_lcidm.c" + ], + "ssl/quic/libssl-lib-quic_method.o" => [ + "ssl/quic/quic_method.c" + ], + "ssl/quic/libssl-lib-quic_obj.o" => [ + "ssl/quic/quic_obj.c" + ], + "ssl/quic/libssl-lib-quic_port.o" => [ + "ssl/quic/quic_port.c" + ], + "ssl/quic/libssl-lib-quic_rcidm.o" => [ + "ssl/quic/quic_rcidm.c" + ], + "ssl/quic/libssl-lib-quic_reactor.o" => [ + "ssl/quic/quic_reactor.c" + ], + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o" => [ + "ssl/quic/quic_reactor_wait_ctx.c" + ], + "ssl/quic/libssl-lib-quic_record_rx.o" => [ + "ssl/quic/quic_record_rx.c" + ], + "ssl/quic/libssl-lib-quic_record_shared.o" => [ + "ssl/quic/quic_record_shared.c" + ], + "ssl/quic/libssl-lib-quic_record_tx.o" => [ + "ssl/quic/quic_record_tx.c" + ], + "ssl/quic/libssl-lib-quic_record_util.o" => [ + "ssl/quic/quic_record_util.c" ], - "ssl/record/libssl-lib-dtls1_bitmap.o" => [ - "ssl/record/dtls1_bitmap.c" + "ssl/quic/libssl-lib-quic_rstream.o" => [ + "ssl/quic/quic_rstream.c" + ], + "ssl/quic/libssl-lib-quic_rx_depack.o" => [ + "ssl/quic/quic_rx_depack.c" + ], + "ssl/quic/libssl-lib-quic_sf_list.o" => [ + "ssl/quic/quic_sf_list.c" + ], + "ssl/quic/libssl-lib-quic_srt_gen.o" => [ + "ssl/quic/quic_srt_gen.c" + ], + "ssl/quic/libssl-lib-quic_srtm.o" => [ + "ssl/quic/quic_srtm.c" + ], + "ssl/quic/libssl-lib-quic_sstream.o" => [ + "ssl/quic/quic_sstream.c" + ], + "ssl/quic/libssl-lib-quic_statm.o" => [ + "ssl/quic/quic_statm.c" + ], + "ssl/quic/libssl-lib-quic_stream_map.o" => [ + "ssl/quic/quic_stream_map.c" + ], + "ssl/quic/libssl-lib-quic_thread_assist.o" => [ + "ssl/quic/quic_thread_assist.c" + ], + "ssl/quic/libssl-lib-quic_tls.o" => [ + "ssl/quic/quic_tls.c" + ], + "ssl/quic/libssl-lib-quic_tls_api.o" => [ + "ssl/quic/quic_tls_api.c" + ], + "ssl/quic/libssl-lib-quic_trace.o" => [ + "ssl/quic/quic_trace.c" + ], + "ssl/quic/libssl-lib-quic_tserver.o" => [ + "ssl/quic/quic_tserver.c" + ], + "ssl/quic/libssl-lib-quic_txp.o" => [ + "ssl/quic/quic_txp.c" + ], + "ssl/quic/libssl-lib-quic_txpim.o" => [ + "ssl/quic/quic_txpim.c" + ], + "ssl/quic/libssl-lib-quic_types.o" => [ + "ssl/quic/quic_types.c" + ], + "ssl/quic/libssl-lib-quic_wire.o" => [ + "ssl/quic/quic_wire.c" + ], + "ssl/quic/libssl-lib-quic_wire_pkt.o" => [ + "ssl/quic/quic_wire_pkt.c" + ], + "ssl/quic/libssl-lib-uint_set.o" => [ + "ssl/quic/uint_set.c" ], "ssl/record/libssl-lib-rec_layer_d1.o" => [ "ssl/record/rec_layer_d1.c" @@ -26026,14 +30531,44 @@ our %unified_info = ( "ssl/record/libssl-lib-rec_layer_s3.o" => [ "ssl/record/rec_layer_s3.c" ], - "ssl/record/libssl-lib-ssl3_buffer.o" => [ - "ssl/record/ssl3_buffer.c" + "ssl/record/methods/libcommon-lib-tls_pad.o" => [ + "ssl/record/methods/tls_pad.c" + ], + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libfips-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libssl-lib-dtls_meth.o" => [ + "ssl/record/methods/dtls_meth.c" + ], + "ssl/record/methods/libssl-lib-ssl3_meth.o" => [ + "ssl/record/methods/ssl3_meth.c" + ], + "ssl/record/methods/libssl-lib-tls13_meth.o" => [ + "ssl/record/methods/tls13_meth.c" + ], + "ssl/record/methods/libssl-lib-tls1_meth.o" => [ + "ssl/record/methods/tls1_meth.c" ], - "ssl/record/libssl-lib-ssl3_record.o" => [ - "ssl/record/ssl3_record.c" + "ssl/record/methods/libssl-lib-tls_common.o" => [ + "ssl/record/methods/tls_common.c" ], - "ssl/record/libssl-lib-ssl3_record_tls13.o" => [ - "ssl/record/ssl3_record_tls13.c" + "ssl/record/methods/libssl-lib-tls_multib.o" => [ + "ssl/record/methods/tls_multib.c" + ], + "ssl/record/methods/libssl-lib-tlsany_meth.o" => [ + "ssl/record/methods/tlsany_meth.c" + ], + "ssl/rio/libssl-lib-poll_builder.o" => [ + "ssl/rio/poll_builder.c" + ], + "ssl/rio/libssl-lib-poll_immediate.o" => [ + "ssl/rio/poll_immediate.c" + ], + "ssl/rio/libssl-lib-rio_notifier.o" => [ + "ssl/rio/rio_notifier.c" ], "ssl/statem/libssl-lib-extensions.o" => [ "ssl/statem/extensions.c" @@ -26129,6 +30664,8 @@ our %unified_info = ( "test/asn1_string_table_test.c" ], "test/asn1_time_test" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1_time_test-bin-ctype.o", "test/asn1_time_test-bin-asn1_time_test.o" ], "test/asn1_time_test-bin-asn1_time_test.o" => [ @@ -26159,6 +30696,18 @@ our %unified_info = ( "test/bftest-bin-bftest.o" => [ "test/bftest.c" ], + "test/bio_addr_test" => [ + "test/bio_addr_test-bin-bio_addr_test.o" + ], + "test/bio_addr_test-bin-bio_addr_test.o" => [ + "test/bio_addr_test.c" + ], + "test/bio_base64_test" => [ + "test/bio_base64_test-bin-bio_base64_test.o" + ], + "test/bio_base64_test-bin-bio_base64_test.o" => [ + "test/bio_base64_test.c" + ], "test/bio_callback_test" => [ "test/bio_callback_test-bin-bio_callback_test.o" ], @@ -26171,6 +30720,12 @@ our %unified_info = ( "test/bio_core_test-bin-bio_core_test.o" => [ "test/bio_core_test.c" ], + "test/bio_dgram_test" => [ + "test/bio_dgram_test-bin-bio_dgram_test.o" + ], + "test/bio_dgram_test-bin-bio_dgram_test.o" => [ + "test/bio_dgram_test.c" + ], "test/bio_enc_test" => [ "test/bio_enc_test-bin-bio_enc_test.o" ], @@ -26183,6 +30738,12 @@ our %unified_info = ( "test/bio_memleak_test-bin-bio_memleak_test.o" => [ "test/bio_memleak_test.c" ], + "test/bio_meth_test" => [ + "test/bio_meth_test-bin-bio_meth_test.o" + ], + "test/bio_meth_test-bin-bio_meth_test.o" => [ + "test/bio_meth_test.c" + ], "test/bio_prefix_text" => [ "test/bio_prefix_text-bin-bio_prefix_text.o" ], @@ -26201,6 +30762,12 @@ our %unified_info = ( "test/bio_readbuffer_test-bin-bio_readbuffer_test.o" => [ "test/bio_readbuffer_test.c" ], + "test/bio_tfo_test" => [ + "test/bio_tfo_test-bin-bio_tfo_test.o" + ], + "test/bio_tfo_test-bin-bio_tfo_test.o" => [ + "test/bio_tfo_test.c" + ], "test/bioprinttest" => [ "test/bioprinttest-bin-bioprinttest.o" ], @@ -26219,6 +30786,12 @@ our %unified_info = ( "test/bntest-bin-bntest.o" => [ "test/bntest.c" ], + "test/build_wincrypt_test" => [ + "test/build_wincrypt_test-bin-build_wincrypt_test.o" + ], + "test/build_wincrypt_test-bin-build_wincrypt_test.o" => [ + "test/build_wincrypt_test.c" + ], "test/buildtest_c_aes" => [ "test/buildtest_c_aes-bin-buildtest_aes.o" ], @@ -26249,6 +30822,12 @@ our %unified_info = ( "test/buildtest_c_buffer-bin-buildtest_buffer.o" => [ "test/buildtest_buffer.c" ], + "test/buildtest_c_byteorder" => [ + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" + ], + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" => [ + "test/buildtest_byteorder.c" + ], "test/buildtest_c_camellia" => [ "test/buildtest_c_camellia-bin-buildtest_camellia.o" ], @@ -26297,12 +30876,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch-bin-buildtest_core_dispatch.o" => [ "test/buildtest_core_dispatch.c" ], - "test/buildtest_c_core_names" => [ - "test/buildtest_c_core_names-bin-buildtest_core_names.o" - ], - "test/buildtest_c_core_names-bin-buildtest_core_names.o" => [ - "test/buildtest_core_names.c" - ], "test/buildtest_c_core_object" => [ "test/buildtest_c_core_object-bin-buildtest_core_object.o" ], @@ -26351,6 +30924,12 @@ our %unified_info = ( "test/buildtest_c_e_os2-bin-buildtest_e_os2.o" => [ "test/buildtest_e_os2.c" ], + "test/buildtest_c_e_ostime" => [ + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" + ], + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" => [ + "test/buildtest_e_ostime.c" + ], "test/buildtest_c_ebcdic" => [ "test/buildtest_c_ebcdic-bin-buildtest_ebcdic.o" ], @@ -26405,6 +30984,12 @@ our %unified_info = ( "test/buildtest_c_hmac-bin-buildtest_hmac.o" => [ "test/buildtest_hmac.c" ], + "test/buildtest_c_hpke" => [ + "test/buildtest_c_hpke-bin-buildtest_hpke.o" + ], + "test/buildtest_c_hpke-bin-buildtest_hpke.o" => [ + "test/buildtest_hpke.c" + ], "test/buildtest_c_http" => [ "test/buildtest_c_http-bin-buildtest_http.o" ], @@ -26417,6 +31002,12 @@ our %unified_info = ( "test/buildtest_c_idea-bin-buildtest_idea.o" => [ "test/buildtest_idea.c" ], + "test/buildtest_c_indicator" => [ + "test/buildtest_c_indicator-bin-buildtest_indicator.o" + ], + "test/buildtest_c_indicator-bin-buildtest_indicator.o" => [ + "test/buildtest_indicator.c" + ], "test/buildtest_c_kdf" => [ "test/buildtest_c_kdf-bin-buildtest_kdf.o" ], @@ -26447,6 +31038,12 @@ our %unified_info = ( "test/buildtest_c_mdc2-bin-buildtest_mdc2.o" => [ "test/buildtest_mdc2.c" ], + "test/buildtest_c_ml_kem" => [ + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" + ], + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" => [ + "test/buildtest_ml_kem.c" + ], "test/buildtest_c_modes" => [ "test/buildtest_c_modes-bin-buildtest_modes.o" ], @@ -26507,6 +31104,12 @@ our %unified_info = ( "test/buildtest_c_provider-bin-buildtest_provider.o" => [ "test/buildtest_provider.c" ], + "test/buildtest_c_quic" => [ + "test/buildtest_c_quic-bin-buildtest_quic.o" + ], + "test/buildtest_c_quic-bin-buildtest_quic.o" => [ + "test/buildtest_quic.c" + ], "test/buildtest_c_rand" => [ "test/buildtest_c_rand-bin-buildtest_rand.o" ], @@ -26591,6 +31194,12 @@ our %unified_info = ( "test/buildtest_c_symhacks-bin-buildtest_symhacks.o" => [ "test/buildtest_symhacks.c" ], + "test/buildtest_c_thread" => [ + "test/buildtest_c_thread-bin-buildtest_thread.o" + ], + "test/buildtest_c_thread-bin-buildtest_thread.o" => [ + "test/buildtest_thread.c" + ], "test/buildtest_c_tls1" => [ "test/buildtest_c_tls1-bin-buildtest_tls1.o" ], @@ -26621,6 +31230,29 @@ our %unified_info = ( "test/buildtest_c_whrlpool-bin-buildtest_whrlpool.o" => [ "test/buildtest_whrlpool.c" ], + "test/byteorder_test" => [ + "test/byteorder_test-bin-byteorder_test.o" + ], + "test/byteorder_test-bin-byteorder_test.o" => [ + "test/byteorder_test.c" + ], + "test/ca_internals_test" => [ + "apps/ca_internals_test-bin-ca.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", + "crypto/ca_internals_test-bin-ctype.o", + "test/ca_internals_test-bin-ca_internals_test.o" + ], + "test/ca_internals_test-bin-ca_internals_test.o" => [ + "test/ca_internals_test.c" + ], "test/casttest" => [ "test/casttest-bin-casttest.o" ], @@ -26799,6 +31431,12 @@ our %unified_info = ( "test/danetest-bin-danetest.o" => [ "test/danetest.c" ], + "test/decoder_propq_test" => [ + "test/decoder_propq_test-bin-decoder_propq_test.o" + ], + "test/decoder_propq_test-bin-decoder_propq_test.o" => [ + "test/decoder_propq_test.c" + ], "test/defltfips_test" => [ "test/defltfips_test-bin-defltfips_test.o" ], @@ -26880,6 +31518,7 @@ our %unified_info = ( "test/ectest.c" ], "test/endecode_test" => [ + "providers/endecode_test-bin-legacyprov.o", "test/endecode_test-bin-endecode_test.o", "test/helpers/endecode_test-bin-predefined_dhparams.o" ], @@ -26912,17 +31551,29 @@ our %unified_info = ( ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", - "test/evp_extra_test-bin-evp_extra_test.o" + "test/evp_extra_test-bin-evp_extra_test.o", + "test/evp_extra_test-bin-fake_pipelineprov.o", + "test/evp_extra_test-bin-fake_rsaprov.o" ], "test/evp_extra_test-bin-evp_extra_test.o" => [ "test/evp_extra_test.c" ], + "test/evp_extra_test-bin-fake_pipelineprov.o" => [ + "test/fake_pipelineprov.c" + ], + "test/evp_extra_test-bin-fake_rsaprov.o" => [ + "test/fake_rsaprov.c" + ], "test/evp_extra_test2" => [ - "test/evp_extra_test2-bin-evp_extra_test2.o" + "test/evp_extra_test2-bin-evp_extra_test2.o", + "test/evp_extra_test2-bin-tls-provider.o" ], "test/evp_extra_test2-bin-evp_extra_test2.o" => [ "test/evp_extra_test2.c" ], + "test/evp_extra_test2-bin-tls-provider.o" => [ + "test/tls-provider.c" + ], "test/evp_fetch_prov_test" => [ "test/evp_fetch_prov_test-bin-evp_fetch_prov_test.o" ], @@ -26947,6 +31598,12 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name-bin-evp_pkey_ctx_new_from_name.o" => [ "test/evp_pkey_ctx_new_from_name.c" ], + "test/evp_pkey_dhkem_test" => [ + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" + ], + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" => [ + "test/evp_pkey_dhkem_test.c" + ], "test/evp_pkey_dparams_test" => [ "test/evp_pkey_dparams_test-bin-evp_pkey_dparams_test.o" ], @@ -26959,12 +31616,28 @@ our %unified_info = ( "test/evp_pkey_provided_test-bin-evp_pkey_provided_test.o" => [ "test/evp_pkey_provided_test.c" ], + "test/evp_skey_test" => [ + "test/evp_skey_test-bin-evp_skey_test.o", + "test/evp_skey_test-bin-fake_cipherprov.o" + ], + "test/evp_skey_test-bin-evp_skey_test.o" => [ + "test/evp_skey_test.c" + ], + "test/evp_skey_test-bin-fake_cipherprov.o" => [ + "test/fake_cipherprov.c" + ], "test/evp_test" => [ "test/evp_test-bin-evp_test.o" ], "test/evp_test-bin-evp_test.o" => [ "test/evp_test.c" ], + "test/evp_xof_test" => [ + "test/evp_xof_test-bin-evp_xof_test.o" + ], + "test/evp_xof_test-bin-evp_xof_test.o" => [ + "test/evp_xof_test.c" + ], "test/exdatatest" => [ "test/exdatatest-bin-exdatatest.o" ], @@ -27050,15 +31723,108 @@ our %unified_info = ( "test/helpers/fatalerrtest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/json_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/json_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/json_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + "test/helpers/pkcs12.c" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ "test/helpers/pkcs12.c" ], + "test/helpers/quic_multistream_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_multistream_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_multistream_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_newcid_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_newcid_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_newcid_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_radix_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_radix_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_radix_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_srt_gen_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicapitest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicapitest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicapitest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicfaultstest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicfaultstest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicfaultstest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/ssl_old_test-bin-predefined_dhparams.o" => [ "test/helpers/predefined_dhparams.c" ], @@ -27086,6 +31852,9 @@ our %unified_info = ( "test/helpers/tls13ccstest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/hexstr_test" => [ "test/hexstr_test-bin-hexstr_test.o" ], @@ -27098,6 +31867,12 @@ our %unified_info = ( "test/hmactest-bin-hmactest.o" => [ "test/hmactest.c" ], + "test/hpke_test" => [ + "test/hpke_test-bin-hpke_test.o" + ], + "test/hpke_test-bin-hpke_test.o" => [ + "test/hpke_test.c" + ], "test/http_test" => [ "test/http_test-bin-http_test.o" ], @@ -27116,6 +31891,16 @@ our %unified_info = ( "test/igetest-bin-igetest.o" => [ "test/igetest.c" ], + "test/json_test" => [ + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/json_test-bin-json_test.o" + ], + "test/json_test-bin-json_test.o" => [ + "test/json_test.c" + ], "test/keymgmt_internal_test" => [ "test/keymgmt_internal_test-bin-keymgmt_internal_test.o" ], @@ -27137,6 +31922,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -27149,6 +31935,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-tests.o", "test/testutil/libtestutil-lib-testutil_init.o" ], + "test/list_test" => [ + "test/list_test-bin-list_test.o" + ], + "test/list_test-bin-list_test.o" => [ + "test/list_test.c" + ], "test/localetest" => [ "test/localetest-bin-localetest.o" ], @@ -27167,12 +31959,36 @@ our %unified_info = ( "test/mdc2test-bin-mdc2test.o" => [ "test/mdc2test.c" ], + "test/membio_test" => [ + "test/membio_test-bin-membio_test.o" + ], + "test/membio_test-bin-membio_test.o" => [ + "test/membio_test.c" + ], "test/memleaktest" => [ "test/memleaktest-bin-memleaktest.o" ], "test/memleaktest-bin-memleaktest.o" => [ "test/memleaktest.c" ], + "test/ml_dsa_test" => [ + "test/ml_dsa_test-bin-ml_dsa_test.o" + ], + "test/ml_dsa_test-bin-ml_dsa_test.o" => [ + "test/ml_dsa_test.c" + ], + "test/ml_kem_evp_extra_test" => [ + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" + ], + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" => [ + "test/ml_kem_evp_extra_test.c" + ], + "test/ml_kem_internal_test" => [ + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" + ], + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" => [ + "test/ml_kem_internal_test.c" + ], "test/modes_internal_test" => [ "test/modes_internal_test-bin-modes_internal_test.o" ], @@ -27218,11 +32034,18 @@ our %unified_info = ( "test/p_test.c" ], "test/packettest" => [ + "crypto/packettest-bin-quic_vlint.o", "test/packettest-bin-packettest.o" ], "test/packettest-bin-packettest.o" => [ "test/packettest.c" ], + "test/pairwise_fail_test" => [ + "test/pairwise_fail_test-bin-pairwise_fail_test.o" + ], + "test/pairwise_fail_test-bin-pairwise_fail_test.o" => [ + "test/pairwise_fail_test.c" + ], "test/param_build_test" => [ "test/param_build_test-bin-param_build_test.o" ], @@ -27271,6 +32094,13 @@ our %unified_info = ( "test/pemtest-bin-pemtest.o" => [ "test/pemtest.c" ], + "test/pkcs12_api_test" => [ + "test/helpers/pkcs12_api_test-bin-pkcs12.o", + "test/pkcs12_api_test-bin-pkcs12_api_test.o" + ], + "test/pkcs12_api_test-bin-pkcs12_api_test.o" => [ + "test/pkcs12_api_test.c" + ], "test/pkcs12_format_test" => [ "test/helpers/pkcs12_format_test-bin-pkcs12.o", "test/pkcs12_format_test-bin-pkcs12_format_test.o" @@ -27302,6 +32132,12 @@ our %unified_info = ( "test/poly1305_internal_test-bin-poly1305_internal_test.o" => [ "test/poly1305_internal_test.c" ], + "test/priority_queue_test" => [ + "test/priority_queue_test-bin-priority_queue_test.o" + ], + "test/priority_queue_test-bin-priority_queue_test.o" => [ + "test/priority_queue_test.c" + ], "test/property_test" => [ "test/property_test-bin-property_test.o" ], @@ -27320,6 +32156,12 @@ our %unified_info = ( "test/provfetchtest-bin-provfetchtest.o" => [ "test/provfetchtest.c" ], + "test/provider_default_search_path_test" => [ + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" + ], + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" => [ + "test/provider_default_search_path_test.c" + ], "test/provider_fallback_test" => [ "test/provider_fallback_test-bin-provider_fallback_test.o" ], @@ -27368,6 +32210,174 @@ our %unified_info = ( "test/punycode_test-bin-punycode_test.o" => [ "test/punycode_test.c" ], + "test/quic_ackm_test" => [ + "test/quic_ackm_test-bin-cc_dummy.o", + "test/quic_ackm_test-bin-quic_ackm_test.o" + ], + "test/quic_ackm_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_ackm_test-bin-quic_ackm_test.o" => [ + "test/quic_ackm_test.c" + ], + "test/quic_cc_test" => [ + "test/quic_cc_test-bin-quic_cc_test.o" + ], + "test/quic_cc_test-bin-quic_cc_test.o" => [ + "test/quic_cc_test.c" + ], + "test/quic_cfq_test" => [ + "test/quic_cfq_test-bin-quic_cfq_test.o" + ], + "test/quic_cfq_test-bin-quic_cfq_test.o" => [ + "test/quic_cfq_test.c" + ], + "test/quic_client_test" => [ + "test/quic_client_test-bin-quic_client_test.o" + ], + "test/quic_client_test-bin-quic_client_test.o" => [ + "test/quic_client_test.c" + ], + "test/quic_fc_test" => [ + "test/quic_fc_test-bin-quic_fc_test.o" + ], + "test/quic_fc_test-bin-quic_fc_test.o" => [ + "test/quic_fc_test.c" + ], + "test/quic_fifd_test" => [ + "test/quic_fifd_test-bin-cc_dummy.o", + "test/quic_fifd_test-bin-quic_fifd_test.o" + ], + "test/quic_fifd_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_fifd_test-bin-quic_fifd_test.o" => [ + "test/quic_fifd_test.c" + ], + "test/quic_lcidm_test" => [ + "test/quic_lcidm_test-bin-quic_lcidm_test.o" + ], + "test/quic_lcidm_test-bin-quic_lcidm_test.o" => [ + "test/quic_lcidm_test.c" + ], + "test/quic_multistream_test" => [ + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/quic_multistream_test-bin-quic_multistream_test.o" + ], + "test/quic_multistream_test-bin-quic_multistream_test.o" => [ + "test/quic_multistream_test.c" + ], + "test/quic_newcid_test" => [ + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/quic_newcid_test-bin-quic_newcid_test.o" + ], + "test/quic_newcid_test-bin-quic_newcid_test.o" => [ + "test/quic_newcid_test.c" + ], + "test/quic_qlog_test" => [ + "test/quic_qlog_test-bin-quic_qlog_test.o" + ], + "test/quic_qlog_test-bin-quic_qlog_test.o" => [ + "test/quic_qlog_test.c" + ], + "test/quic_radix_test" => [ + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "test/quic_rcidm_test" => [ + "test/quic_rcidm_test-bin-quic_rcidm_test.o" + ], + "test/quic_rcidm_test-bin-quic_rcidm_test.o" => [ + "test/quic_rcidm_test.c" + ], + "test/quic_record_test" => [ + "test/quic_record_test-bin-quic_record_test.o" + ], + "test/quic_record_test-bin-quic_record_test.o" => [ + "test/quic_record_test.c" + ], + "test/quic_srt_gen_test" => [ + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" + ], + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" => [ + "test/quic_srt_gen_test.c" + ], + "test/quic_srtm_test" => [ + "test/quic_srtm_test-bin-quic_srtm_test.o" + ], + "test/quic_srtm_test-bin-quic_srtm_test.o" => [ + "test/quic_srtm_test.c" + ], + "test/quic_stream_test" => [ + "test/quic_stream_test-bin-quic_stream_test.o" + ], + "test/quic_stream_test-bin-quic_stream_test.o" => [ + "test/quic_stream_test.c" + ], + "test/quic_tserver_test" => [ + "test/quic_tserver_test-bin-quic_tserver_test.o" + ], + "test/quic_tserver_test-bin-quic_tserver_test.o" => [ + "test/quic_tserver_test.c" + ], + "test/quic_txp_test" => [ + "test/quic_txp_test-bin-cc_dummy.o", + "test/quic_txp_test-bin-quic_txp_test.o" + ], + "test/quic_txp_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_txp_test-bin-quic_txp_test.o" => [ + "test/quic_txp_test.c" + ], + "test/quic_txpim_test" => [ + "test/quic_txpim_test-bin-quic_txpim_test.o" + ], + "test/quic_txpim_test-bin-quic_txpim_test.o" => [ + "test/quic_txpim_test.c" + ], + "test/quic_wire_test" => [ + "test/quic_wire_test-bin-quic_wire_test.o" + ], + "test/quic_wire_test-bin-quic_wire_test.o" => [ + "test/quic_wire_test.c" + ], + "test/quicapitest" => [ + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/quicapitest-bin-quicapitest.o" + ], + "test/quicapitest-bin-quicapitest.o" => [ + "test/quicapitest.c" + ], + "test/quicfaultstest" => [ + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", + "test/quicfaultstest-bin-quicfaultstest.o" + ], + "test/quicfaultstest-bin-quicfaultstest.o" => [ + "test/quicfaultstest.c" + ], + "test/radix/quic_radix_test-bin-quic_radix.o" => [ + "test/radix/quic_radix.c" + ], "test/rand_status_test" => [ "test/rand_status_test-bin-rand_status_test.o" ], @@ -27398,11 +32408,11 @@ our %unified_info = ( "test/rc5test-bin-rc5test.o" => [ "test/rc5test.c" ], - "test/rdrand_sanitytest" => [ - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" + "test/rdcpu_sanitytest" => [ + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" ], - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" => [ - "test/rdrand_sanitytest.c" + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" => [ + "test/rdcpu_sanitytest.c" ], "test/recordlentest" => [ "test/helpers/recordlentest-bin-ssltestlib.o", @@ -27411,6 +32421,13 @@ our %unified_info = ( "test/recordlentest-bin-recordlentest.o" => [ "test/recordlentest.c" ], + "test/rpktest" => [ + "test/helpers/rpktest-bin-ssltestlib.o", + "test/rpktest-bin-rpktest.o" + ], + "test/rpktest-bin-rpktest.o" => [ + "test/rpktest.c" + ], "test/rsa_complex" => [ "test/rsa_complex-bin-rsa_complex.o" ], @@ -27435,6 +32452,18 @@ our %unified_info = ( "test/rsa_test-bin-rsa_test.o" => [ "test/rsa_test.c" ], + "test/rsa_x931_test" => [ + "test/rsa_x931_test-bin-rsa_x931_test.o" + ], + "test/rsa_x931_test-bin-rsa_x931_test.o" => [ + "test/rsa_x931_test.c" + ], + "test/safe_math_test" => [ + "test/safe_math_test-bin-safe_math_test.o" + ], + "test/safe_math_test-bin-safe_math_test.o" => [ + "test/safe_math_test.c" + ], "test/sanitytest" => [ "test/sanitytest-bin-sanitytest.o" ], @@ -27466,6 +32495,12 @@ our %unified_info = ( "test/siphash_internal_test-bin-siphash_internal_test.o" => [ "test/siphash_internal_test.c" ], + "test/slh_dsa_test" => [ + "test/slh_dsa_test-bin-slh_dsa_test.o" + ], + "test/slh_dsa_test-bin-slh_dsa_test.o" => [ + "test/slh_dsa_test.c" + ], "test/sm2_internal_test" => [ "test/sm2_internal_test-bin-sm2_internal_test.o" ], @@ -27508,6 +32543,13 @@ our %unified_info = ( "test/ssl_ctx_test-bin-ssl_ctx_test.o" => [ "test/ssl_ctx_test.c" ], + "test/ssl_handshake_rtt_test" => [ + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" + ], + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" => [ + "test/ssl_handshake_rtt_test.c" + ], "test/ssl_old_test" => [ "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/ssl_old_test-bin-ssl_old_test.o" @@ -27566,6 +32608,12 @@ our %unified_info = ( "test/stack_test-bin-stack_test.o" => [ "test/stack_test.c" ], + "test/strtoultest" => [ + "test/strtoultest-bin-strtoultest.o" + ], + "test/strtoultest-bin-strtoultest.o" => [ + "test/strtoultest.c" + ], "test/sysdefaulttest" => [ "test/sysdefaulttest-bin-sysdefaulttest.o" ], @@ -27596,6 +32644,9 @@ our %unified_info = ( "test/testutil/libtestutil-lib-format_output.o" => [ "test/testutil/format_output.c" ], + "test/testutil/libtestutil-lib-helper.o" => [ + "test/testutil/helper.c" + ], "test/testutil/libtestutil-lib-load.o" => [ "test/testutil/load.c" ], @@ -27629,6 +32680,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-testutil_init.o" => [ "test/testutil/testutil_init.c" ], + "test/threadpool_test" => [ + "test/threadpool_test-bin-threadpool_test.o" + ], + "test/threadpool_test-bin-threadpool_test.o" => [ + "test/threadpool_test.c" + ], "test/threadstest" => [ "test/threadstest-bin-threadstest.o" ], @@ -27647,6 +32704,12 @@ our %unified_info = ( "test/time_offset_test-bin-time_offset_test.o" => [ "test/time_offset_test.c" ], + "test/time_test" => [ + "test/time_test-bin-time_test.o" + ], + "test/time_test-bin-time_test.o" => [ + "test/time_test.c" + ], "test/tls13ccstest" => [ "test/helpers/tls13ccstest-bin-ssltestlib.o", "test/tls13ccstest-bin-tls13ccstest.o" @@ -27660,6 +32723,13 @@ our %unified_info = ( "test/tls13encryptiontest-bin-tls13encryptiontest.o" => [ "test/tls13encryptiontest.c" ], + "test/tls13groupselection_test" => [ + "test/helpers/tls13groupselection_test-bin-ssltestlib.o", + "test/tls13groupselection_test-bin-tls13groupselection_test.o" + ], + "test/tls13groupselection_test-bin-tls13groupselection_test.o" => [ + "test/tls13groupselection_test.c" + ], "test/trace_api_test" => [ "test/trace_api_test-bin-trace_api_test.o" ], @@ -27715,6 +32785,12 @@ our %unified_info = ( "test/wpackettest-bin-wpackettest.o" => [ "test/wpackettest.c" ], + "test/x509_acert_test" => [ + "test/x509_acert_test-bin-x509_acert_test.o" + ], + "test/x509_acert_test-bin-x509_acert_test.o" => [ + "test/x509_acert_test.c" + ], "test/x509_check_cert_pkey_test" => [ "test/x509_check_cert_pkey_test-bin-x509_check_cert_pkey_test.o" ], @@ -27733,6 +32809,24 @@ our %unified_info = ( "test/x509_internal_test-bin-x509_internal_test.o" => [ "test/x509_internal_test.c" ], + "test/x509_load_cert_file_test" => [ + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" + ], + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" => [ + "test/x509_load_cert_file_test.c" + ], + "test/x509_req_test" => [ + "test/x509_req_test-bin-x509_req_test.o" + ], + "test/x509_req_test-bin-x509_req_test.o" => [ + "test/x509_req_test.c" + ], + "test/x509_test" => [ + "test/x509_test-bin-x509_test.o" + ], + "test/x509_test-bin-x509_test.o" => [ + "test/x509_test.c" + ], "test/x509_time_test" => [ "test/x509_time_test-bin-x509_time_test.o" ], @@ -27793,6 +32887,7 @@ my @makevars = ( "LDLIBS", "MT", "MTFLAGS", + "OBJCOPY", "PERL", "RANLIB", "RC", @@ -27806,6 +32901,12 @@ my %disabled_info = ( "asan" => { "macro" => "OPENSSL_NO_ASAN" }, + "brotli" => { + "macro" => "OPENSSL_NO_BROTLI" + }, + "brotli-dynamic" => { + "macro" => "OPENSSL_NO_BROTLI_DYNAMIC" + }, "comp" => { "macro" => "OPENSSL_NO_COMP", "skipped" => [ @@ -27818,6 +32919,9 @@ my %disabled_info = ( "crypto-mdebug-backtrace" => { "macro" => "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE" }, + "demos" => { + "macro" => "OPENSSL_NO_DEMOS" + }, "devcryptoeng" => { "macro" => "OPENSSL_NO_DEVCRYPTOENG" }, @@ -27830,12 +32934,24 @@ my %disabled_info = ( "external-tests" => { "macro" => "OPENSSL_NO_EXTERNAL_TESTS" }, + "fips-jitter" => { + "macro" => "OPENSSL_NO_FIPS_JITTER" + }, "fuzz-afl" => { "macro" => "OPENSSL_NO_FUZZ_AFL" }, "fuzz-libfuzzer" => { "macro" => "OPENSSL_NO_FUZZ_LIBFUZZER" }, + "h3demo" => { + "macro" => "OPENSSL_NO_H3DEMO" + }, + "hqinterop" => { + "macro" => "OPENSSL_NO_HQINTEROP" + }, + "jitter" => { + "macro" => "OPENSSL_NO_JITTER" + }, "ktls" => { "macro" => "OPENSSL_NO_KTLS" }, @@ -27851,6 +32967,9 @@ my %disabled_info = ( "msan" => { "macro" => "OPENSSL_NO_MSAN" }, + "pie" => { + "macro" => "OPENSSL_NO_PIE" + }, "rc5" => { "macro" => "OPENSSL_NO_RC5", "skipped" => [ @@ -27866,6 +32985,12 @@ my %disabled_info = ( "ssl3-method" => { "macro" => "OPENSSL_NO_SSL3_METHOD" }, + "sslkeylog" => { + "macro" => "OPENSSL_NO_SSLKEYLOG" + }, + "tfo" => { + "macro" => "OPENSSL_NO_TFO" + }, "trace" => { "macro" => "OPENSSL_NO_TRACE" }, @@ -27880,6 +33005,18 @@ my %disabled_info = ( }, "weak-ssl-ciphers" => { "macro" => "OPENSSL_NO_WEAK_SSL_CIPHERS" + }, + "zlib" => { + "macro" => "OPENSSL_NO_ZLIB" + }, + "zlib-dynamic" => { + "macro" => "OPENSSL_NO_ZLIB_DYNAMIC" + }, + "zstd" => { + "macro" => "OPENSSL_NO_ZSTD" + }, + "zstd-dynamic" => { + "macro" => "OPENSSL_NO_ZSTD_DYNAMIC" } ); my @user_crossable = qw( AR AS CC CXX CPP LD MT RANLIB RC ); @@ -27893,15 +33030,15 @@ unless (caller) { use File::Copy; use Pod::Usage; - use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; - use OpenSSL::fallback '/home/runner/work/node/node/deps/openssl/openssl/external/perl/MODULES.txt'; + use lib '/node/deps/openssl/openssl/util/perl'; + use OpenSSL::fallback '/node/deps/openssl/openssl/external/perl/MODULES.txt'; my $here = dirname($0); if (scalar @ARGV == 0) { # With no arguments, re-create the build file # We do that in two steps, where the first step emits perl - # snipets. + # snippets. my $buildfile = $config{build_file}; my $buildfile_template = "$buildfile.in"; @@ -27921,7 +33058,7 @@ unless (caller) { ); use lib '.'; - use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; + use lib '/node/deps/openssl/openssl/Configurations'; use gentemplate; open my $buildfile_template_fh, ">$buildfile_template" @@ -27938,8 +33075,8 @@ unless (caller) { my $prepend = <<'_____'; use File::Spec::Functions; -use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; -use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; +use lib '/node/deps/openssl/openssl/util/perl'; +use lib '/node/deps/openssl/openssl/Configurations'; use lib '.'; use platform; _____ diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/aes-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/aes-x86_64.asm index 32e49db2b9cbc6..61e7c0a9fada60 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/aes-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/aes-x86_64.asm @@ -1915,6 +1915,7 @@ $L$cbc_epilogue: DB 0F3h,0C3h ;repret $L$SEH_end_AES_cbc_encrypt: +section .rdata rdata align=64 ALIGN 64 $L$AES_Te: DD 0xa56363c6,0xa56363c6 @@ -2704,6 +2705,7 @@ DB 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 DB 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 DB 62,0 ALIGN 64 +section .text EXTERN __imp_RtlVirtualUnwind ALIGN 16 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/aesni-sha1-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/aesni-sha1-x86_64.asm index ac71215c45e2dc..a842bfa5e5cbe2 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/aesni-sha1-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/aesni-sha1-x86_64.asm @@ -2781,6 +2781,7 @@ $L$epilogue_avx: DB 0F3h,0C3h ;repret $L$SEH_end_aesni_cbc_sha1_enc_avx: +section .rdata rdata align=64 ALIGN 64 K_XX_XX: DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999 @@ -2796,6 +2797,7 @@ DB 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32 DB 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111 DB 114,103,62,0 ALIGN 64 +section .text ALIGN 32 aesni_cbc_sha1_enc_shaext: diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/aesni-sha256-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/aesni-sha256-x86_64.asm index 17e571d38b1846..39a88bc72d1930 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/aesni-sha256-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/aesni-sha256-x86_64.asm @@ -39,6 +39,7 @@ $L$probe: +section .rdata rdata align=64 ALIGN 64 K256: @@ -85,6 +86,7 @@ DB 54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98 DB 121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108 DB 46,111,114,103,62,0 ALIGN 64 +section .text ALIGN 64 aesni_cbc_sha256_enc_xop: diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/aesni-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/aesni-x86_64.asm index b590ecea7d5a49..8058ea319e20c6 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/aesni-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/aesni-x86_64.asm @@ -4762,6 +4762,7 @@ $L$key_expansion_256b: +section .rdata rdata align=64 ALIGN 64 $L$bswap_mask: DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 @@ -4787,6 +4788,7 @@ DB 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 DB 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 DB 115,108,46,111,114,103,62,0 ALIGN 64 +section .text EXTERN __imp_RtlVirtualUnwind ALIGN 16 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/aesni-xts-avx512.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/aesni-xts-avx512.asm new file mode 100644 index 00000000000000..1e8bcc6b6f7543 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/aesni-xts-avx512.asm @@ -0,0 +1,8350 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + +EXTERN OPENSSL_ia32cap_P +global aesni_xts_avx512_eligible + +ALIGN 32 +aesni_xts_avx512_eligible: + mov ecx,DWORD[((OPENSSL_ia32cap_P+8))] + xor eax,eax + + and ecx,0xc0030000 + cmp ecx,0xc0030000 + jne NEAR $L$_done + mov ecx,DWORD[((OPENSSL_ia32cap_P+12))] + + and ecx,0x640 + cmp ecx,0x640 + cmove eax,ecx +$L$_done: + DB 0F3h,0C3h ;repret + +global aesni_xts_128_encrypt_avx512 + + +ALIGN 32 +aesni_xts_128_encrypt_avx512: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_xts_128_encrypt_avx512: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + +DB 243,15,30,250 + push rbp + mov rbp,rsp + sub rsp,312 + and rsp,0xffffffffffffffc0 + mov QWORD[288+rsp],rbx + mov QWORD[((288 + 8))+rsp],rdi + mov QWORD[((288 + 16))+rsp],rsi + vmovdqa XMMWORD[(128 + 0)+rsp],xmm6 + vmovdqa XMMWORD[(128 + 16)+rsp],xmm7 + vmovdqa XMMWORD[(128 + 32)+rsp],xmm8 + vmovdqa XMMWORD[(128 + 48)+rsp],xmm9 + vmovdqa XMMWORD[(128 + 64)+rsp],xmm10 + vmovdqa XMMWORD[(128 + 80)+rsp],xmm11 + vmovdqa XMMWORD[(128 + 96)+rsp],xmm12 + vmovdqa XMMWORD[(128 + 112)+rsp],xmm13 + vmovdqa XMMWORD[(128 + 128)+rsp],xmm14 + vmovdqa XMMWORD[(128 + 144)+rsp],xmm15 + mov r10,0x87 + vmovdqu xmm1,XMMWORD[r9] + vpxor xmm1,xmm1,XMMWORD[r8] + vaesenc xmm1,xmm1,XMMWORD[16+r8] + vaesenc xmm1,xmm1,XMMWORD[32+r8] + vaesenc xmm1,xmm1,XMMWORD[48+r8] + vaesenc xmm1,xmm1,XMMWORD[64+r8] + vaesenc xmm1,xmm1,XMMWORD[80+r8] + vaesenc xmm1,xmm1,XMMWORD[96+r8] + vaesenc xmm1,xmm1,XMMWORD[112+r8] + vaesenc xmm1,xmm1,XMMWORD[128+r8] + vaesenc xmm1,xmm1,XMMWORD[144+r8] + vaesenclast xmm1,xmm1,XMMWORD[160+r8] + vmovdqa XMMWORD[rsp],xmm1 + mov QWORD[((8 + 40))+rbp],rdi + mov QWORD[((8 + 48))+rbp],rsi + + cmp rdx,0x80 + jl NEAR $L$_less_than_128_bytes_hEgxyDlCngwrfFe + vpbroadcastq zmm25,r10 + cmp rdx,0x100 + jge NEAR $L$_start_by16_hEgxyDlCngwrfFe + cmp rdx,0x80 + jge NEAR $L$_start_by8_hEgxyDlCngwrfFe + +$L$_do_n_blocks_hEgxyDlCngwrfFe: + cmp rdx,0x0 + je NEAR $L$_ret_hEgxyDlCngwrfFe + cmp rdx,0x70 + jge NEAR $L$_remaining_num_blocks_is_7_hEgxyDlCngwrfFe + cmp rdx,0x60 + jge NEAR $L$_remaining_num_blocks_is_6_hEgxyDlCngwrfFe + cmp rdx,0x50 + jge NEAR $L$_remaining_num_blocks_is_5_hEgxyDlCngwrfFe + cmp rdx,0x40 + jge NEAR $L$_remaining_num_blocks_is_4_hEgxyDlCngwrfFe + cmp rdx,0x30 + jge NEAR $L$_remaining_num_blocks_is_3_hEgxyDlCngwrfFe + cmp rdx,0x20 + jge NEAR $L$_remaining_num_blocks_is_2_hEgxyDlCngwrfFe + cmp rdx,0x10 + jge NEAR $L$_remaining_num_blocks_is_1_hEgxyDlCngwrfFe + vmovdqa xmm8,xmm0 + vmovdqa xmm0,xmm9 + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe + +$L$_remaining_num_blocks_is_7_hEgxyDlCngwrfFe: + mov r8,0x0000ffffffffffff + kmovq k1,r8 + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2{k1},[64+rdi] + add rdi,0x70 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi]{k1},zmm2 + add rsi,0x70 + vextracti32x4 xmm8,zmm2,0x2 + vextracti32x4 xmm0,zmm10,0x3 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe + +$L$_remaining_num_blocks_is_6_hEgxyDlCngwrfFe: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 ymm2,YMMWORD[64+rdi] + add rdi,0x60 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 YMMWORD[64+rsi],ymm2 + add rsi,0x60 + vextracti32x4 xmm8,zmm2,0x1 + vextracti32x4 xmm0,zmm10,0x2 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe + +$L$_remaining_num_blocks_is_5_hEgxyDlCngwrfFe: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu xmm2,XMMWORD[64+rdi] + add rdi,0x50 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu XMMWORD[64+rsi],xmm2 + add rsi,0x50 + vmovdqa xmm8,xmm2 + vextracti32x4 xmm0,zmm10,0x1 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe + +$L$_remaining_num_blocks_is_4_hEgxyDlCngwrfFe: + vmovdqu8 zmm1,ZMMWORD[rdi] + add rdi,0x40 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenclast zmm1,zmm1,zmm0 + vpxorq zmm1,zmm1,zmm9 + vmovdqu8 ZMMWORD[rsi],zmm1 + add rsi,0x40 + vextracti32x4 xmm8,zmm1,0x3 + vmovdqa64 xmm0,xmm10 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe +$L$_remaining_num_blocks_is_3_hEgxyDlCngwrfFe: + mov r8,-1 + shr r8,0x10 + kmovq k1,r8 + vmovdqu8 zmm1{k1},[rdi] + add rdi,0x30 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenclast zmm1,zmm1,zmm0 + vpxorq zmm1,zmm1,zmm9 + vmovdqu8 ZMMWORD[rsi]{k1},zmm1 + add rsi,0x30 + vextracti32x4 xmm8,zmm1,0x2 + vextracti32x4 xmm0,zmm9,0x3 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe +$L$_remaining_num_blocks_is_2_hEgxyDlCngwrfFe: + vmovdqu8 ymm1,YMMWORD[rdi] + add rdi,0x20 + vbroadcasti32x4 ymm0,YMMWORD[rcx] + vpternlogq ymm1,ymm9,ymm0,0x96 + vbroadcasti32x4 ymm0,YMMWORD[16+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[32+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[48+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[64+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[80+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[96+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[112+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[128+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[144+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[160+rcx] + vaesenclast ymm1,ymm1,ymm0 + vpxorq ymm1,ymm1,ymm9 + vmovdqu YMMWORD[rsi],ymm1 + add rsi,0x20 + vextracti32x4 xmm8,zmm1,0x1 + vextracti32x4 xmm0,zmm9,0x2 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe +$L$_remaining_num_blocks_is_1_hEgxyDlCngwrfFe: + vmovdqu xmm1,XMMWORD[rdi] + add rdi,0x10 + vpxor xmm1,xmm1,xmm9 + vpxor xmm1,xmm1,XMMWORD[rcx] + vaesenc xmm1,xmm1,XMMWORD[16+rcx] + vaesenc xmm1,xmm1,XMMWORD[32+rcx] + vaesenc xmm1,xmm1,XMMWORD[48+rcx] + vaesenc xmm1,xmm1,XMMWORD[64+rcx] + vaesenc xmm1,xmm1,XMMWORD[80+rcx] + vaesenc xmm1,xmm1,XMMWORD[96+rcx] + vaesenc xmm1,xmm1,XMMWORD[112+rcx] + vaesenc xmm1,xmm1,XMMWORD[128+rcx] + vaesenc xmm1,xmm1,XMMWORD[144+rcx] + vaesenclast xmm1,xmm1,XMMWORD[160+rcx] + vpxor xmm1,xmm1,xmm9 + vmovdqu XMMWORD[rsi],xmm1 + add rsi,0x10 + vmovdqa xmm8,xmm1 + vextracti32x4 xmm0,zmm9,0x1 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe + + +$L$_start_by16_hEgxyDlCngwrfFe: + vbroadcasti32x4 zmm0,ZMMWORD[rsp] + vbroadcasti32x4 zmm8,ZMMWORD[shufb_15_7] + mov r8,0xaa + kmovq k2,r8 + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x0 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x0 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + vpsrldq zmm13,zmm9,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm11,zmm9,0x1 + vpxord zmm11,zmm11,zmm14 + vpsrldq zmm15,zmm10,0xf + vpclmulqdq zmm16,zmm15,zmm25,0x0 + vpslldq zmm12,zmm10,0x1 + vpxord zmm12,zmm12,zmm16 + +$L$_main_loop_run_16_hEgxyDlCngwrfFe: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2,ZMMWORD[64+rdi] + vmovdqu8 zmm3,ZMMWORD[128+rdi] + vmovdqu8 zmm4,ZMMWORD[192+rdi] + add rdi,0x100 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vpxorq zmm3,zmm3,zmm11 + vpxorq zmm4,zmm4,zmm12 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vpxorq zmm3,zmm3,zmm0 + vpxorq zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm11,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm15,zmm11,0x1 + vpxord zmm15,zmm15,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm12,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm16,zmm12,0x1 + vpxord zmm16,zmm16,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm15,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm17,zmm15,0x1 + vpxord zmm17,zmm17,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm16,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm18,zmm16,0x1 + vpxord zmm18,zmm18,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vaesenclast zmm3,zmm3,zmm0 + vaesenclast zmm4,zmm4,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vpxorq zmm3,zmm3,zmm11 + vpxorq zmm4,zmm4,zmm12 + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqa32 zmm11,zmm17 + vmovdqa32 zmm12,zmm18 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi],zmm2 + vmovdqu8 ZMMWORD[128+rsi],zmm3 + vmovdqu8 ZMMWORD[192+rsi],zmm4 + add rsi,0x100 + sub rdx,0x100 + cmp rdx,0x100 + jae NEAR $L$_main_loop_run_16_hEgxyDlCngwrfFe + cmp rdx,0x80 + jae NEAR $L$_main_loop_run_8_hEgxyDlCngwrfFe + vextracti32x4 xmm0,zmm4,0x3 + jmp NEAR $L$_do_n_blocks_hEgxyDlCngwrfFe + +$L$_start_by8_hEgxyDlCngwrfFe: + vbroadcasti32x4 zmm0,ZMMWORD[rsp] + vbroadcasti32x4 zmm8,ZMMWORD[shufb_15_7] + mov r8,0xaa + kmovq k2,r8 + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x0 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x0 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + +$L$_main_loop_run_8_hEgxyDlCngwrfFe: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2,ZMMWORD[64+rdi] + add rdi,0x80 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vpsrldq zmm13,zmm9,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm15,zmm9,0x1 + vpxord zmm15,zmm15,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vpsrldq zmm13,zmm10,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm16,zmm10,0x1 + vpxord zmm16,zmm16,zmm14 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi],zmm2 + add rsi,0x80 + sub rdx,0x80 + cmp rdx,0x80 + jae NEAR $L$_main_loop_run_8_hEgxyDlCngwrfFe + vextracti32x4 xmm0,zmm2,0x3 + jmp NEAR $L$_do_n_blocks_hEgxyDlCngwrfFe + +$L$_steal_cipher_hEgxyDlCngwrfFe: + vmovdqa xmm2,xmm8 + lea rax,[vpshufb_shf_table] + vmovdqu xmm10,XMMWORD[rdx*1+rax] + vpshufb xmm8,xmm8,xmm10 + vmovdqu xmm3,XMMWORD[((-16))+rdx*1+rdi] + vmovdqu XMMWORD[(-16)+rdx*1+rsi],xmm8 + lea rax,[vpshufb_shf_table] + add rax,16 + sub rax,rdx + vmovdqu xmm10,XMMWORD[rax] + vpxor xmm10,xmm10,XMMWORD[mask1] + vpshufb xmm3,xmm3,xmm10 + vpblendvb xmm3,xmm3,xmm2,xmm10 + vpxor xmm8,xmm3,xmm0 + vpxor xmm8,xmm8,XMMWORD[rcx] + vaesenc xmm8,xmm8,XMMWORD[16+rcx] + vaesenc xmm8,xmm8,XMMWORD[32+rcx] + vaesenc xmm8,xmm8,XMMWORD[48+rcx] + vaesenc xmm8,xmm8,XMMWORD[64+rcx] + vaesenc xmm8,xmm8,XMMWORD[80+rcx] + vaesenc xmm8,xmm8,XMMWORD[96+rcx] + vaesenc xmm8,xmm8,XMMWORD[112+rcx] + vaesenc xmm8,xmm8,XMMWORD[128+rcx] + vaesenc xmm8,xmm8,XMMWORD[144+rcx] + vaesenclast xmm8,xmm8,XMMWORD[160+rcx] + vpxor xmm8,xmm8,xmm0 + vmovdqu XMMWORD[(-16)+rsi],xmm8 +$L$_ret_hEgxyDlCngwrfFe: + mov rbx,QWORD[288+rsp] + xor r8,r8 + mov QWORD[288+rsp],r8 + + vpxorq zmm0,zmm0,zmm0 + mov rdi,QWORD[((288 + 8))+rsp] + mov QWORD[((288 + 8))+rsp],r8 + mov rsi,QWORD[((288 + 16))+rsp] + mov QWORD[((288 + 16))+rsp],r8 + + vmovdqa xmm6,XMMWORD[((128 + 0))+rsp] + vmovdqa xmm7,XMMWORD[((128 + 16))+rsp] + vmovdqa xmm8,XMMWORD[((128 + 32))+rsp] + vmovdqa xmm9,XMMWORD[((128 + 48))+rsp] + + + vmovdqa64 ZMMWORD[128+rsp],zmm0 + + vmovdqa xmm10,XMMWORD[((128 + 64))+rsp] + vmovdqa xmm11,XMMWORD[((128 + 80))+rsp] + vmovdqa xmm12,XMMWORD[((128 + 96))+rsp] + vmovdqa xmm13,XMMWORD[((128 + 112))+rsp] + + + vmovdqa64 ZMMWORD[(128 + 64)+rsp],zmm0 + + vmovdqa xmm14,XMMWORD[((128 + 128))+rsp] + vmovdqa xmm15,XMMWORD[((128 + 144))+rsp] + + + + vmovdqa YMMWORD[(128 + 128)+rsp],ymm0 + mov rsp,rbp + pop rbp + vzeroupper + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$_less_than_128_bytes_hEgxyDlCngwrfFe: + vpbroadcastq zmm25,r10 + cmp rdx,0x10 + jb NEAR $L$_ret_hEgxyDlCngwrfFe + vbroadcasti32x4 zmm0,ZMMWORD[rsp] + vbroadcasti32x4 zmm8,ZMMWORD[shufb_15_7] + mov r8d,0xaa + kmovq k2,r8 + mov r8,rdx + and r8,0x70 + cmp r8,0x60 + je NEAR $L$_num_blocks_is_6_hEgxyDlCngwrfFe + cmp r8,0x50 + je NEAR $L$_num_blocks_is_5_hEgxyDlCngwrfFe + cmp r8,0x40 + je NEAR $L$_num_blocks_is_4_hEgxyDlCngwrfFe + cmp r8,0x30 + je NEAR $L$_num_blocks_is_3_hEgxyDlCngwrfFe + cmp r8,0x20 + je NEAR $L$_num_blocks_is_2_hEgxyDlCngwrfFe + cmp r8,0x10 + je NEAR $L$_num_blocks_is_1_hEgxyDlCngwrfFe + +$L$_num_blocks_is_7_hEgxyDlCngwrfFe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x00 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + mov r8,0x0000ffffffffffff + kmovq k1,r8 + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2{k1},[64+rdi] + + add rdi,0x70 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi]{k1},zmm2 + add rsi,0x70 + vextracti32x4 xmm8,zmm2,0x2 + vextracti32x4 xmm0,zmm10,0x3 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe +$L$_num_blocks_is_6_hEgxyDlCngwrfFe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x00 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 ymm2,YMMWORD[64+rdi] + add rdi,96 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 YMMWORD[64+rsi],ymm2 + add rsi,96 + + vextracti32x4 xmm8,ymm2,0x1 + vextracti32x4 xmm0,zmm10,0x2 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe +$L$_num_blocks_is_5_hEgxyDlCngwrfFe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x00 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 xmm2,XMMWORD[64+rdi] + add rdi,80 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 XMMWORD[64+rsi],xmm2 + add rsi,80 + + vmovdqa xmm8,xmm2 + vextracti32x4 xmm0,zmm10,0x1 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe +$L$_num_blocks_is_4_hEgxyDlCngwrfFe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x00 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + vmovdqu8 zmm1,ZMMWORD[rdi] + add rdi,64 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenclast zmm1,zmm1,zmm0 + vpxorq zmm1,zmm1,zmm9 + vmovdqu8 ZMMWORD[rsi],zmm1 + add rsi,64 + vextracti32x4 xmm8,zmm1,0x3 + vmovdqa xmm0,xmm10 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe +$L$_num_blocks_is_3_hEgxyDlCngwrfFe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + mov r8,0x0000ffffffffffff + kmovq k1,r8 + vmovdqu8 zmm1{k1},[rdi] + add rdi,48 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenclast zmm1,zmm1,zmm0 + vpxorq zmm1,zmm1,zmm9 + vmovdqu8 ZMMWORD[rsi]{k1},zmm1 + add rsi,48 + vextracti32x4 xmm8,zmm1,2 + vextracti32x4 xmm0,zmm9,3 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe +$L$_num_blocks_is_2_hEgxyDlCngwrfFe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + + vmovdqu8 ymm1,YMMWORD[rdi] + add rdi,32 + vbroadcasti32x4 ymm0,YMMWORD[rcx] + vpternlogq ymm1,ymm9,ymm0,0x96 + vbroadcasti32x4 ymm0,YMMWORD[16+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[32+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[48+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[64+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[80+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[96+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[112+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[128+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[144+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[160+rcx] + vaesenclast ymm1,ymm1,ymm0 + vpxorq ymm1,ymm1,ymm9 + vmovdqu8 YMMWORD[rsi],ymm1 + add rsi,32 + + vextracti32x4 xmm8,ymm1,1 + vextracti32x4 xmm0,zmm9,2 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe +$L$_num_blocks_is_1_hEgxyDlCngwrfFe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + + vmovdqu8 xmm1,XMMWORD[rdi] + add rdi,16 + vbroadcasti32x4 ymm0,YMMWORD[rcx] + vpternlogq ymm1,ymm9,ymm0,0x96 + vbroadcasti32x4 ymm0,YMMWORD[16+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[32+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[48+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[64+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[80+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[96+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[112+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[128+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[144+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[160+rcx] + vaesenclast ymm1,ymm1,ymm0 + vpxorq ymm1,ymm1,ymm9 + vmovdqu8 XMMWORD[rsi],xmm1 + add rsi,16 + + vmovdqa xmm8,xmm1 + vextracti32x4 xmm0,zmm9,1 + and rdx,0xf + je NEAR $L$_ret_hEgxyDlCngwrfFe + jmp NEAR $L$_steal_cipher_hEgxyDlCngwrfFe + +global aesni_xts_128_decrypt_avx512 + + +ALIGN 32 +aesni_xts_128_decrypt_avx512: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_xts_128_decrypt_avx512: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + +DB 243,15,30,250 + push rbp + mov rbp,rsp + sub rsp,312 + and rsp,0xffffffffffffffc0 + mov QWORD[288+rsp],rbx + mov QWORD[((288 + 8))+rsp],rdi + mov QWORD[((288 + 16))+rsp],rsi + vmovdqa XMMWORD[(128 + 0)+rsp],xmm6 + vmovdqa XMMWORD[(128 + 16)+rsp],xmm7 + vmovdqa XMMWORD[(128 + 32)+rsp],xmm8 + vmovdqa XMMWORD[(128 + 48)+rsp],xmm9 + vmovdqa XMMWORD[(128 + 64)+rsp],xmm10 + vmovdqa XMMWORD[(128 + 80)+rsp],xmm11 + vmovdqa XMMWORD[(128 + 96)+rsp],xmm12 + vmovdqa XMMWORD[(128 + 112)+rsp],xmm13 + vmovdqa XMMWORD[(128 + 128)+rsp],xmm14 + vmovdqa XMMWORD[(128 + 144)+rsp],xmm15 + mov r10,0x87 + vmovdqu xmm1,XMMWORD[r9] + vpxor xmm1,xmm1,XMMWORD[r8] + vaesenc xmm1,xmm1,XMMWORD[16+r8] + vaesenc xmm1,xmm1,XMMWORD[32+r8] + vaesenc xmm1,xmm1,XMMWORD[48+r8] + vaesenc xmm1,xmm1,XMMWORD[64+r8] + vaesenc xmm1,xmm1,XMMWORD[80+r8] + vaesenc xmm1,xmm1,XMMWORD[96+r8] + vaesenc xmm1,xmm1,XMMWORD[112+r8] + vaesenc xmm1,xmm1,XMMWORD[128+r8] + vaesenc xmm1,xmm1,XMMWORD[144+r8] + vaesenclast xmm1,xmm1,XMMWORD[160+r8] + vmovdqa XMMWORD[rsp],xmm1 + mov QWORD[((8 + 40))+rbp],rdi + mov QWORD[((8 + 48))+rbp],rsi + + cmp rdx,0x80 + jb NEAR $L$_less_than_128_bytes_amivrujEyduiFoi + vpbroadcastq zmm25,r10 + cmp rdx,0x100 + jge NEAR $L$_start_by16_amivrujEyduiFoi + jmp NEAR $L$_start_by8_amivrujEyduiFoi + +$L$_do_n_blocks_amivrujEyduiFoi: + cmp rdx,0x0 + je NEAR $L$_ret_amivrujEyduiFoi + cmp rdx,0x70 + jge NEAR $L$_remaining_num_blocks_is_7_amivrujEyduiFoi + cmp rdx,0x60 + jge NEAR $L$_remaining_num_blocks_is_6_amivrujEyduiFoi + cmp rdx,0x50 + jge NEAR $L$_remaining_num_blocks_is_5_amivrujEyduiFoi + cmp rdx,0x40 + jge NEAR $L$_remaining_num_blocks_is_4_amivrujEyduiFoi + cmp rdx,0x30 + jge NEAR $L$_remaining_num_blocks_is_3_amivrujEyduiFoi + cmp rdx,0x20 + jge NEAR $L$_remaining_num_blocks_is_2_amivrujEyduiFoi + cmp rdx,0x10 + jge NEAR $L$_remaining_num_blocks_is_1_amivrujEyduiFoi + + + vmovdqu xmm1,xmm5 + + vpxor xmm1,xmm1,xmm9 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vpxor xmm1,xmm1,xmm9 + vmovdqu XMMWORD[(-16)+rsi],xmm1 + vmovdqa xmm8,xmm1 + + + mov r8,0x1 + kmovq k1,r8 + vpsllq xmm13,xmm9,0x3f + vpsraq xmm14,xmm13,0x3f + vpandq xmm5,xmm14,xmm25 + vpxorq xmm9{k1},xmm9,xmm5 + vpsrldq xmm10,xmm9,0x8 +DB 98,211,181,8,115,194,1 + vpslldq xmm13,xmm13,0x8 + vpxorq xmm0,xmm0,xmm13 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_remaining_num_blocks_is_7_amivrujEyduiFoi: + mov r8,0xffffffffffffffff + shr r8,0x10 + kmovq k1,r8 + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2{k1},[64+rdi] + add rdi,0x70 + and rdx,0xf + je NEAR $L$_done_7_remain_amivrujEyduiFoi + vextracti32x4 xmm12,zmm10,0x2 + vextracti32x4 xmm13,zmm10,0x3 + vinserti32x4 zmm10,zmm10,xmm13,0x2 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi]{k1},zmm2 + add rsi,0x70 + vextracti32x4 xmm8,zmm2,0x2 + vmovdqa xmm0,xmm12 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_7_remain_amivrujEyduiFoi: + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi]{k1},zmm2 + jmp NEAR $L$_ret_amivrujEyduiFoi + +$L$_remaining_num_blocks_is_6_amivrujEyduiFoi: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 ymm2,YMMWORD[64+rdi] + add rdi,0x60 + and rdx,0xf + je NEAR $L$_done_6_remain_amivrujEyduiFoi + vextracti32x4 xmm12,zmm10,0x1 + vextracti32x4 xmm13,zmm10,0x2 + vinserti32x4 zmm10,zmm10,xmm13,0x1 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 YMMWORD[64+rsi],ymm2 + add rsi,0x60 + vextracti32x4 xmm8,zmm2,0x1 + vmovdqa xmm0,xmm12 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_6_remain_amivrujEyduiFoi: + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 YMMWORD[64+rsi],ymm2 + jmp NEAR $L$_ret_amivrujEyduiFoi + +$L$_remaining_num_blocks_is_5_amivrujEyduiFoi: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu xmm2,XMMWORD[64+rdi] + add rdi,0x50 + and rdx,0xf + je NEAR $L$_done_5_remain_amivrujEyduiFoi + vmovdqa xmm12,xmm10 + vextracti32x4 xmm10,zmm10,0x1 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu XMMWORD[64+rsi],xmm2 + add rsi,0x50 + vmovdqa xmm8,xmm2 + vmovdqa xmm0,xmm12 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_5_remain_amivrujEyduiFoi: + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 XMMWORD[64+rsi],xmm2 + jmp NEAR $L$_ret_amivrujEyduiFoi + +$L$_remaining_num_blocks_is_4_amivrujEyduiFoi: + vmovdqu8 zmm1,ZMMWORD[rdi] + add rdi,0x40 + and rdx,0xf + je NEAR $L$_done_4_remain_amivrujEyduiFoi + vextracti32x4 xmm12,zmm9,0x3 + vinserti32x4 zmm9,zmm9,xmm10,0x3 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + add rsi,0x40 + vextracti32x4 xmm8,zmm1,0x3 + vmovdqa xmm0,xmm12 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_4_remain_amivrujEyduiFoi: + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + jmp NEAR $L$_ret_amivrujEyduiFoi + +$L$_remaining_num_blocks_is_3_amivrujEyduiFoi: + vmovdqu xmm1,XMMWORD[rdi] + vmovdqu xmm2,XMMWORD[16+rdi] + vmovdqu xmm3,XMMWORD[32+rdi] + add rdi,0x30 + and rdx,0xf + je NEAR $L$_done_3_remain_amivrujEyduiFoi + vextracti32x4 xmm13,zmm9,0x2 + vextracti32x4 xmm10,zmm9,0x1 + vextracti32x4 xmm11,zmm9,0x3 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + add rsi,0x30 + vmovdqa xmm8,xmm3 + vmovdqa xmm0,xmm13 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_3_remain_amivrujEyduiFoi: + vextracti32x4 xmm10,zmm9,0x1 + vextracti32x4 xmm11,zmm9,0x2 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + jmp NEAR $L$_ret_amivrujEyduiFoi + +$L$_remaining_num_blocks_is_2_amivrujEyduiFoi: + vmovdqu xmm1,XMMWORD[rdi] + vmovdqu xmm2,XMMWORD[16+rdi] + add rdi,0x20 + and rdx,0xf + je NEAR $L$_done_2_remain_amivrujEyduiFoi + vextracti32x4 xmm10,zmm9,0x2 + vextracti32x4 xmm12,zmm9,0x1 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + add rsi,0x20 + vmovdqa xmm8,xmm2 + vmovdqa xmm0,xmm12 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_2_remain_amivrujEyduiFoi: + vextracti32x4 xmm10,zmm9,0x1 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + jmp NEAR $L$_ret_amivrujEyduiFoi + +$L$_remaining_num_blocks_is_1_amivrujEyduiFoi: + vmovdqu xmm1,XMMWORD[rdi] + add rdi,0x10 + and rdx,0xf + je NEAR $L$_done_1_remain_amivrujEyduiFoi + vextracti32x4 xmm11,zmm9,0x1 + vpxor xmm1,xmm1,xmm11 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vpxor xmm1,xmm1,xmm11 + vmovdqu XMMWORD[rsi],xmm1 + add rsi,0x10 + vmovdqa xmm8,xmm1 + vmovdqa xmm0,xmm9 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_1_remain_amivrujEyduiFoi: + vpxor xmm1,xmm1,xmm9 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vpxor xmm1,xmm1,xmm9 + vmovdqu XMMWORD[rsi],xmm1 + jmp NEAR $L$_ret_amivrujEyduiFoi + +$L$_start_by16_amivrujEyduiFoi: + vbroadcasti32x4 zmm0,ZMMWORD[rsp] + vbroadcasti32x4 zmm8,ZMMWORD[shufb_15_7] + mov r8,0xaa + kmovq k2,r8 + + + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x0 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + + + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x0 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + + + vpsrldq zmm13,zmm9,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm11,zmm9,0x1 + vpxord zmm11,zmm11,zmm14 + + vpsrldq zmm15,zmm10,0xf + vpclmulqdq zmm16,zmm15,zmm25,0x0 + vpslldq zmm12,zmm10,0x1 + vpxord zmm12,zmm12,zmm16 + +$L$_main_loop_run_16_amivrujEyduiFoi: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2,ZMMWORD[64+rdi] + vmovdqu8 zmm3,ZMMWORD[128+rdi] + vmovdqu8 zmm4,ZMMWORD[192+rdi] + vmovdqu8 xmm5,XMMWORD[240+rdi] + add rdi,0x100 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vpxorq zmm3,zmm3,zmm11 + vpxorq zmm4,zmm4,zmm12 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vpxorq zmm3,zmm3,zmm0 + vpxorq zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm11,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm15,zmm11,0x1 + vpxord zmm15,zmm15,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm12,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm16,zmm12,0x1 + vpxord zmm16,zmm16,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm15,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm17,zmm15,0x1 + vpxord zmm17,zmm17,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm16,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm18,zmm16,0x1 + vpxord zmm18,zmm18,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + vaesdeclast zmm3,zmm3,zmm0 + vaesdeclast zmm4,zmm4,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vpxorq zmm3,zmm3,zmm11 + vpxorq zmm4,zmm4,zmm12 + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqa32 zmm11,zmm17 + vmovdqa32 zmm12,zmm18 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi],zmm2 + vmovdqu8 ZMMWORD[128+rsi],zmm3 + vmovdqu8 ZMMWORD[192+rsi],zmm4 + add rsi,0x100 + sub rdx,0x100 + cmp rdx,0x100 + jge NEAR $L$_main_loop_run_16_amivrujEyduiFoi + + cmp rdx,0x80 + jge NEAR $L$_main_loop_run_8_amivrujEyduiFoi + jmp NEAR $L$_do_n_blocks_amivrujEyduiFoi + +$L$_start_by8_amivrujEyduiFoi: + + vbroadcasti32x4 zmm0,ZMMWORD[rsp] + vbroadcasti32x4 zmm8,ZMMWORD[shufb_15_7] + mov r8,0xaa + kmovq k2,r8 + + + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x0 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + + + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x0 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + +$L$_main_loop_run_8_amivrujEyduiFoi: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2,ZMMWORD[64+rdi] + vmovdqu8 xmm5,XMMWORD[112+rdi] + add rdi,0x80 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vpsrldq zmm13,zmm9,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm15,zmm9,0x1 + vpxord zmm15,zmm15,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vpsrldq zmm13,zmm10,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm16,zmm10,0x1 + vpxord zmm16,zmm16,zmm14 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi],zmm2 + add rsi,0x80 + sub rdx,0x80 + cmp rdx,0x80 + jge NEAR $L$_main_loop_run_8_amivrujEyduiFoi + jmp NEAR $L$_do_n_blocks_amivrujEyduiFoi + +$L$_steal_cipher_amivrujEyduiFoi: + + vmovdqa xmm2,xmm8 + + + lea rax,[vpshufb_shf_table] + vmovdqu xmm10,XMMWORD[rdx*1+rax] + vpshufb xmm8,xmm8,xmm10 + + + vmovdqu xmm3,XMMWORD[((-16))+rdx*1+rdi] + vmovdqu XMMWORD[(-16)+rdx*1+rsi],xmm8 + + + lea rax,[vpshufb_shf_table] + add rax,16 + sub rax,rdx + vmovdqu xmm10,XMMWORD[rax] + vpxor xmm10,xmm10,XMMWORD[mask1] + vpshufb xmm3,xmm3,xmm10 + + vpblendvb xmm3,xmm3,xmm2,xmm10 + + + vpxor xmm8,xmm3,xmm0 + + + vpxor xmm8,xmm8,XMMWORD[rcx] + vaesdec xmm8,xmm8,XMMWORD[16+rcx] + vaesdec xmm8,xmm8,XMMWORD[32+rcx] + vaesdec xmm8,xmm8,XMMWORD[48+rcx] + vaesdec xmm8,xmm8,XMMWORD[64+rcx] + vaesdec xmm8,xmm8,XMMWORD[80+rcx] + vaesdec xmm8,xmm8,XMMWORD[96+rcx] + vaesdec xmm8,xmm8,XMMWORD[112+rcx] + vaesdec xmm8,xmm8,XMMWORD[128+rcx] + vaesdec xmm8,xmm8,XMMWORD[144+rcx] + vaesdeclast xmm8,xmm8,XMMWORD[160+rcx] + + vpxor xmm8,xmm8,xmm0 + +$L$_done_amivrujEyduiFoi: + + vmovdqu XMMWORD[(-16)+rsi],xmm8 +$L$_ret_amivrujEyduiFoi: + mov rbx,QWORD[288+rsp] + xor r8,r8 + mov QWORD[288+rsp],r8 + + vpxorq zmm0,zmm0,zmm0 + mov rdi,QWORD[((288 + 8))+rsp] + mov QWORD[((288 + 8))+rsp],r8 + mov rsi,QWORD[((288 + 16))+rsp] + mov QWORD[((288 + 16))+rsp],r8 + + vmovdqa xmm6,XMMWORD[((128 + 0))+rsp] + vmovdqa xmm7,XMMWORD[((128 + 16))+rsp] + vmovdqa xmm8,XMMWORD[((128 + 32))+rsp] + vmovdqa xmm9,XMMWORD[((128 + 48))+rsp] + + + vmovdqa64 ZMMWORD[128+rsp],zmm0 + + vmovdqa xmm10,XMMWORD[((128 + 64))+rsp] + vmovdqa xmm11,XMMWORD[((128 + 80))+rsp] + vmovdqa xmm12,XMMWORD[((128 + 96))+rsp] + vmovdqa xmm13,XMMWORD[((128 + 112))+rsp] + + + vmovdqa64 ZMMWORD[(128 + 64)+rsp],zmm0 + + vmovdqa xmm14,XMMWORD[((128 + 128))+rsp] + vmovdqa xmm15,XMMWORD[((128 + 144))+rsp] + + + + vmovdqa YMMWORD[(128 + 128)+rsp],ymm0 + mov rsp,rbp + pop rbp + vzeroupper + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$_less_than_128_bytes_amivrujEyduiFoi: + cmp rdx,0x10 + jb NEAR $L$_ret_amivrujEyduiFoi + + mov r8,rdx + and r8,0x70 + cmp r8,0x60 + je NEAR $L$_num_blocks_is_6_amivrujEyduiFoi + cmp r8,0x50 + je NEAR $L$_num_blocks_is_5_amivrujEyduiFoi + cmp r8,0x40 + je NEAR $L$_num_blocks_is_4_amivrujEyduiFoi + cmp r8,0x30 + je NEAR $L$_num_blocks_is_3_amivrujEyduiFoi + cmp r8,0x20 + je NEAR $L$_num_blocks_is_2_amivrujEyduiFoi + cmp r8,0x10 + je NEAR $L$_num_blocks_is_1_amivrujEyduiFoi + +$L$_num_blocks_is_7_amivrujEyduiFoi: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[((16 + 8))+rsp],rbx + vmovdqa xmm10,XMMWORD[16+rsp] + vmovdqu xmm2,XMMWORD[16+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[32+rsp],rax + mov QWORD[((32 + 8))+rsp],rbx + vmovdqa xmm11,XMMWORD[32+rsp] + vmovdqu xmm3,XMMWORD[32+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[48+rsp],rax + mov QWORD[((48 + 8))+rsp],rbx + vmovdqa xmm12,XMMWORD[48+rsp] + vmovdqu xmm4,XMMWORD[48+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[64+rsp],rax + mov QWORD[((64 + 8))+rsp],rbx + vmovdqa xmm13,XMMWORD[64+rsp] + vmovdqu xmm5,XMMWORD[64+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[80+rsp],rax + mov QWORD[((80 + 8))+rsp],rbx + vmovdqa xmm14,XMMWORD[80+rsp] + vmovdqu xmm6,XMMWORD[80+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[96+rsp],rax + mov QWORD[((96 + 8))+rsp],rbx + vmovdqa xmm15,XMMWORD[96+rsp] + vmovdqu xmm7,XMMWORD[96+rdi] + add rdi,0x70 + and rdx,0xf + je NEAR $L$_done_7_amivrujEyduiFoi + +$L$_steal_cipher_7_amivrujEyduiFoi: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm16,xmm15 + vmovdqa xmm15,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vpxor xmm7,xmm7,xmm15 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vpxor xmm5,xmm5,xmm0 + vpxor xmm6,xmm6,xmm0 + vpxor xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vaesdeclast xmm5,xmm5,xmm0 + vaesdeclast xmm6,xmm6,xmm0 + vaesdeclast xmm7,xmm7,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vpxor xmm7,xmm7,xmm15 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + vmovdqu XMMWORD[48+rsi],xmm4 + vmovdqu XMMWORD[64+rsi],xmm5 + vmovdqu XMMWORD[80+rsi],xmm6 + add rsi,0x70 + vmovdqa64 xmm0,xmm16 + vmovdqa xmm8,xmm7 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_7_amivrujEyduiFoi: + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vpxor xmm7,xmm7,xmm15 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vpxor xmm5,xmm5,xmm0 + vpxor xmm6,xmm6,xmm0 + vpxor xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vaesdeclast xmm5,xmm5,xmm0 + vaesdeclast xmm6,xmm6,xmm0 + vaesdeclast xmm7,xmm7,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vpxor xmm7,xmm7,xmm15 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + vmovdqu XMMWORD[48+rsi],xmm4 + vmovdqu XMMWORD[64+rsi],xmm5 + vmovdqu XMMWORD[80+rsi],xmm6 + add rsi,0x70 + vmovdqa xmm8,xmm7 + jmp NEAR $L$_done_amivrujEyduiFoi + +$L$_num_blocks_is_6_amivrujEyduiFoi: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[((16 + 8))+rsp],rbx + vmovdqa xmm10,XMMWORD[16+rsp] + vmovdqu xmm2,XMMWORD[16+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[32+rsp],rax + mov QWORD[((32 + 8))+rsp],rbx + vmovdqa xmm11,XMMWORD[32+rsp] + vmovdqu xmm3,XMMWORD[32+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[48+rsp],rax + mov QWORD[((48 + 8))+rsp],rbx + vmovdqa xmm12,XMMWORD[48+rsp] + vmovdqu xmm4,XMMWORD[48+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[64+rsp],rax + mov QWORD[((64 + 8))+rsp],rbx + vmovdqa xmm13,XMMWORD[64+rsp] + vmovdqu xmm5,XMMWORD[64+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[80+rsp],rax + mov QWORD[((80 + 8))+rsp],rbx + vmovdqa xmm14,XMMWORD[80+rsp] + vmovdqu xmm6,XMMWORD[80+rdi] + add rdi,0x60 + and rdx,0xf + je NEAR $L$_done_6_amivrujEyduiFoi + +$L$_steal_cipher_6_amivrujEyduiFoi: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm15,xmm14 + vmovdqa xmm14,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vpxor xmm5,xmm5,xmm0 + vpxor xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vaesdeclast xmm5,xmm5,xmm0 + vaesdeclast xmm6,xmm6,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + vmovdqu XMMWORD[48+rsi],xmm4 + vmovdqu XMMWORD[64+rsi],xmm5 + add rsi,0x60 + vmovdqa xmm0,xmm15 + vmovdqa xmm8,xmm6 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_6_amivrujEyduiFoi: + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vpxor xmm5,xmm5,xmm0 + vpxor xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vaesdeclast xmm5,xmm5,xmm0 + vaesdeclast xmm6,xmm6,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + vmovdqu XMMWORD[48+rsi],xmm4 + vmovdqu XMMWORD[64+rsi],xmm5 + add rsi,0x60 + vmovdqa xmm8,xmm6 + jmp NEAR $L$_done_amivrujEyduiFoi + +$L$_num_blocks_is_5_amivrujEyduiFoi: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[((16 + 8))+rsp],rbx + vmovdqa xmm10,XMMWORD[16+rsp] + vmovdqu xmm2,XMMWORD[16+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[32+rsp],rax + mov QWORD[((32 + 8))+rsp],rbx + vmovdqa xmm11,XMMWORD[32+rsp] + vmovdqu xmm3,XMMWORD[32+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[48+rsp],rax + mov QWORD[((48 + 8))+rsp],rbx + vmovdqa xmm12,XMMWORD[48+rsp] + vmovdqu xmm4,XMMWORD[48+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[64+rsp],rax + mov QWORD[((64 + 8))+rsp],rbx + vmovdqa xmm13,XMMWORD[64+rsp] + vmovdqu xmm5,XMMWORD[64+rdi] + add rdi,0x50 + and rdx,0xf + je NEAR $L$_done_5_amivrujEyduiFoi + +$L$_steal_cipher_5_amivrujEyduiFoi: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm14,xmm13 + vmovdqa xmm13,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vpxor xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vaesdeclast xmm5,xmm5,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + vmovdqu XMMWORD[48+rsi],xmm4 + add rsi,0x50 + vmovdqa xmm0,xmm14 + vmovdqa xmm8,xmm5 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_5_amivrujEyduiFoi: + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vpxor xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vaesdeclast xmm5,xmm5,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + vmovdqu XMMWORD[48+rsi],xmm4 + add rsi,0x50 + vmovdqa xmm8,xmm5 + jmp NEAR $L$_done_amivrujEyduiFoi + +$L$_num_blocks_is_4_amivrujEyduiFoi: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[((16 + 8))+rsp],rbx + vmovdqa xmm10,XMMWORD[16+rsp] + vmovdqu xmm2,XMMWORD[16+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[32+rsp],rax + mov QWORD[((32 + 8))+rsp],rbx + vmovdqa xmm11,XMMWORD[32+rsp] + vmovdqu xmm3,XMMWORD[32+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[48+rsp],rax + mov QWORD[((48 + 8))+rsp],rbx + vmovdqa xmm12,XMMWORD[48+rsp] + vmovdqu xmm4,XMMWORD[48+rdi] + add rdi,0x40 + and rdx,0xf + je NEAR $L$_done_4_amivrujEyduiFoi + +$L$_steal_cipher_4_amivrujEyduiFoi: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm13,xmm12 + vmovdqa xmm12,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + add rsi,0x40 + vmovdqa xmm0,xmm13 + vmovdqa xmm8,xmm4 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_4_amivrujEyduiFoi: + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + add rsi,0x40 + vmovdqa xmm8,xmm4 + jmp NEAR $L$_done_amivrujEyduiFoi + +$L$_num_blocks_is_3_amivrujEyduiFoi: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[((16 + 8))+rsp],rbx + vmovdqa xmm10,XMMWORD[16+rsp] + vmovdqu xmm2,XMMWORD[16+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[32+rsp],rax + mov QWORD[((32 + 8))+rsp],rbx + vmovdqa xmm11,XMMWORD[32+rsp] + vmovdqu xmm3,XMMWORD[32+rdi] + add rdi,0x30 + and rdx,0xf + je NEAR $L$_done_3_amivrujEyduiFoi + +$L$_steal_cipher_3_amivrujEyduiFoi: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm12,xmm11 + vmovdqa xmm11,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + add rsi,0x30 + vmovdqa xmm0,xmm12 + vmovdqa xmm8,xmm3 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_3_amivrujEyduiFoi: + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + add rsi,0x30 + vmovdqa xmm8,xmm3 + jmp NEAR $L$_done_amivrujEyduiFoi + +$L$_num_blocks_is_2_amivrujEyduiFoi: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[((16 + 8))+rsp],rbx + vmovdqa xmm10,XMMWORD[16+rsp] + vmovdqu xmm2,XMMWORD[16+rdi] + add rdi,0x20 + and rdx,0xf + je NEAR $L$_done_2_amivrujEyduiFoi + +$L$_steal_cipher_2_amivrujEyduiFoi: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm11,xmm10 + vmovdqa xmm10,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu XMMWORD[rsi],xmm1 + add rsi,0x20 + vmovdqa xmm0,xmm11 + vmovdqa xmm8,xmm2 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_2_amivrujEyduiFoi: + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu XMMWORD[rsi],xmm1 + add rsi,0x20 + vmovdqa xmm8,xmm2 + jmp NEAR $L$_done_amivrujEyduiFoi + +$L$_num_blocks_is_1_amivrujEyduiFoi: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + add rdi,0x10 + and rdx,0xf + je NEAR $L$_done_1_amivrujEyduiFoi + +$L$_steal_cipher_1_amivrujEyduiFoi: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm10,xmm9 + vmovdqa xmm9,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vpxor xmm1,xmm1,xmm9 + add rsi,0x10 + vmovdqa xmm0,xmm10 + vmovdqa xmm8,xmm1 + jmp NEAR $L$_steal_cipher_amivrujEyduiFoi + +$L$_done_1_amivrujEyduiFoi: + vpxor xmm1,xmm1,xmm9 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vpxor xmm1,xmm1,xmm9 + add rsi,0x10 + vmovdqa xmm8,xmm1 + jmp NEAR $L$_done_amivrujEyduiFoi + +global aesni_xts_256_encrypt_avx512 + + +ALIGN 32 +aesni_xts_256_encrypt_avx512: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_xts_256_encrypt_avx512: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + +DB 243,15,30,250 + push rbp + mov rbp,rsp + sub rsp,312 + and rsp,0xffffffffffffffc0 + mov QWORD[288+rsp],rbx + mov QWORD[((288 + 8))+rsp],rdi + mov QWORD[((288 + 16))+rsp],rsi + vmovdqa XMMWORD[(128 + 0)+rsp],xmm6 + vmovdqa XMMWORD[(128 + 16)+rsp],xmm7 + vmovdqa XMMWORD[(128 + 32)+rsp],xmm8 + vmovdqa XMMWORD[(128 + 48)+rsp],xmm9 + vmovdqa XMMWORD[(128 + 64)+rsp],xmm10 + vmovdqa XMMWORD[(128 + 80)+rsp],xmm11 + vmovdqa XMMWORD[(128 + 96)+rsp],xmm12 + vmovdqa XMMWORD[(128 + 112)+rsp],xmm13 + vmovdqa XMMWORD[(128 + 128)+rsp],xmm14 + vmovdqa XMMWORD[(128 + 144)+rsp],xmm15 + mov r10,0x87 + vmovdqu xmm1,XMMWORD[r9] + vpxor xmm1,xmm1,XMMWORD[r8] + vaesenc xmm1,xmm1,XMMWORD[16+r8] + vaesenc xmm1,xmm1,XMMWORD[32+r8] + vaesenc xmm1,xmm1,XMMWORD[48+r8] + vaesenc xmm1,xmm1,XMMWORD[64+r8] + vaesenc xmm1,xmm1,XMMWORD[80+r8] + vaesenc xmm1,xmm1,XMMWORD[96+r8] + vaesenc xmm1,xmm1,XMMWORD[112+r8] + vaesenc xmm1,xmm1,XMMWORD[128+r8] + vaesenc xmm1,xmm1,XMMWORD[144+r8] + vaesenc xmm1,xmm1,XMMWORD[160+r8] + vaesenc xmm1,xmm1,XMMWORD[176+r8] + vaesenc xmm1,xmm1,XMMWORD[192+r8] + vaesenc xmm1,xmm1,XMMWORD[208+r8] + vaesenclast xmm1,xmm1,XMMWORD[224+r8] + vmovdqa XMMWORD[rsp],xmm1 + mov QWORD[((8 + 40))+rbp],rdi + mov QWORD[((8 + 48))+rbp],rsi + + cmp rdx,0x80 + jl NEAR $L$_less_than_128_bytes_wcpqaDvsGlbjGoe + vpbroadcastq zmm25,r10 + cmp rdx,0x100 + jge NEAR $L$_start_by16_wcpqaDvsGlbjGoe + cmp rdx,0x80 + jge NEAR $L$_start_by8_wcpqaDvsGlbjGoe + +$L$_do_n_blocks_wcpqaDvsGlbjGoe: + cmp rdx,0x0 + je NEAR $L$_ret_wcpqaDvsGlbjGoe + cmp rdx,0x70 + jge NEAR $L$_remaining_num_blocks_is_7_wcpqaDvsGlbjGoe + cmp rdx,0x60 + jge NEAR $L$_remaining_num_blocks_is_6_wcpqaDvsGlbjGoe + cmp rdx,0x50 + jge NEAR $L$_remaining_num_blocks_is_5_wcpqaDvsGlbjGoe + cmp rdx,0x40 + jge NEAR $L$_remaining_num_blocks_is_4_wcpqaDvsGlbjGoe + cmp rdx,0x30 + jge NEAR $L$_remaining_num_blocks_is_3_wcpqaDvsGlbjGoe + cmp rdx,0x20 + jge NEAR $L$_remaining_num_blocks_is_2_wcpqaDvsGlbjGoe + cmp rdx,0x10 + jge NEAR $L$_remaining_num_blocks_is_1_wcpqaDvsGlbjGoe + vmovdqa xmm8,xmm0 + vmovdqa xmm0,xmm9 + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe + +$L$_remaining_num_blocks_is_7_wcpqaDvsGlbjGoe: + mov r8,0x0000ffffffffffff + kmovq k1,r8 + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2{k1},[64+rdi] + add rdi,0x70 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi]{k1},zmm2 + add rsi,0x70 + vextracti32x4 xmm8,zmm2,0x2 + vextracti32x4 xmm0,zmm10,0x3 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe + +$L$_remaining_num_blocks_is_6_wcpqaDvsGlbjGoe: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 ymm2,YMMWORD[64+rdi] + add rdi,0x60 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 YMMWORD[64+rsi],ymm2 + add rsi,0x60 + vextracti32x4 xmm8,zmm2,0x1 + vextracti32x4 xmm0,zmm10,0x2 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe + +$L$_remaining_num_blocks_is_5_wcpqaDvsGlbjGoe: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu xmm2,XMMWORD[64+rdi] + add rdi,0x50 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu XMMWORD[64+rsi],xmm2 + add rsi,0x50 + vmovdqa xmm8,xmm2 + vextracti32x4 xmm0,zmm10,0x1 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe + +$L$_remaining_num_blocks_is_4_wcpqaDvsGlbjGoe: + vmovdqu8 zmm1,ZMMWORD[rdi] + add rdi,0x40 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesenclast zmm1,zmm1,zmm0 + vpxorq zmm1,zmm1,zmm9 + vmovdqu8 ZMMWORD[rsi],zmm1 + add rsi,0x40 + vextracti32x4 xmm8,zmm1,0x3 + vmovdqa64 xmm0,xmm10 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe +$L$_remaining_num_blocks_is_3_wcpqaDvsGlbjGoe: + mov r8,-1 + shr r8,0x10 + kmovq k1,r8 + vmovdqu8 zmm1{k1},[rdi] + add rdi,0x30 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesenclast zmm1,zmm1,zmm0 + vpxorq zmm1,zmm1,zmm9 + vmovdqu8 ZMMWORD[rsi]{k1},zmm1 + add rsi,0x30 + vextracti32x4 xmm8,zmm1,0x2 + vextracti32x4 xmm0,zmm9,0x3 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe +$L$_remaining_num_blocks_is_2_wcpqaDvsGlbjGoe: + vmovdqu8 ymm1,YMMWORD[rdi] + add rdi,0x20 + vbroadcasti32x4 ymm0,YMMWORD[rcx] + vpternlogq ymm1,ymm9,ymm0,0x96 + vbroadcasti32x4 ymm0,YMMWORD[16+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[32+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[48+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[64+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[80+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[96+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[112+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[128+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[144+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[160+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[176+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[192+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[208+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[224+rcx] + vaesenclast ymm1,ymm1,ymm0 + vpxorq ymm1,ymm1,ymm9 + vmovdqu YMMWORD[rsi],ymm1 + add rsi,0x20 + vextracti32x4 xmm8,zmm1,0x1 + vextracti32x4 xmm0,zmm9,0x2 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe +$L$_remaining_num_blocks_is_1_wcpqaDvsGlbjGoe: + vmovdqu xmm1,XMMWORD[rdi] + add rdi,0x10 + vpxor xmm1,xmm1,xmm9 + vpxor xmm1,xmm1,XMMWORD[rcx] + vaesenc xmm1,xmm1,XMMWORD[16+rcx] + vaesenc xmm1,xmm1,XMMWORD[32+rcx] + vaesenc xmm1,xmm1,XMMWORD[48+rcx] + vaesenc xmm1,xmm1,XMMWORD[64+rcx] + vaesenc xmm1,xmm1,XMMWORD[80+rcx] + vaesenc xmm1,xmm1,XMMWORD[96+rcx] + vaesenc xmm1,xmm1,XMMWORD[112+rcx] + vaesenc xmm1,xmm1,XMMWORD[128+rcx] + vaesenc xmm1,xmm1,XMMWORD[144+rcx] + vaesenc xmm1,xmm1,XMMWORD[160+rcx] + vaesenc xmm1,xmm1,XMMWORD[176+rcx] + vaesenc xmm1,xmm1,XMMWORD[192+rcx] + vaesenc xmm1,xmm1,XMMWORD[208+rcx] + vaesenclast xmm1,xmm1,XMMWORD[224+rcx] + vpxor xmm1,xmm1,xmm9 + vmovdqu XMMWORD[rsi],xmm1 + add rsi,0x10 + vmovdqa xmm8,xmm1 + vextracti32x4 xmm0,zmm9,0x1 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe + + +$L$_start_by16_wcpqaDvsGlbjGoe: + vbroadcasti32x4 zmm0,ZMMWORD[rsp] + vbroadcasti32x4 zmm8,ZMMWORD[shufb_15_7] + mov r8,0xaa + kmovq k2,r8 + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x0 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x0 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + vpsrldq zmm13,zmm9,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm11,zmm9,0x1 + vpxord zmm11,zmm11,zmm14 + vpsrldq zmm15,zmm10,0xf + vpclmulqdq zmm16,zmm15,zmm25,0x0 + vpslldq zmm12,zmm10,0x1 + vpxord zmm12,zmm12,zmm16 + +$L$_main_loop_run_16_wcpqaDvsGlbjGoe: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2,ZMMWORD[64+rdi] + vmovdqu8 zmm3,ZMMWORD[128+rdi] + vmovdqu8 zmm4,ZMMWORD[192+rdi] + add rdi,0x100 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vpxorq zmm3,zmm3,zmm11 + vpxorq zmm4,zmm4,zmm12 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vpxorq zmm3,zmm3,zmm0 + vpxorq zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm11,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm15,zmm11,0x1 + vpxord zmm15,zmm15,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm12,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm16,zmm12,0x1 + vpxord zmm16,zmm16,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm15,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm17,zmm15,0x1 + vpxord zmm17,zmm17,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm16,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm18,zmm16,0x1 + vpxord zmm18,zmm18,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vaesenc zmm3,zmm3,zmm0 + vaesenc zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vaesenclast zmm3,zmm3,zmm0 + vaesenclast zmm4,zmm4,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vpxorq zmm3,zmm3,zmm11 + vpxorq zmm4,zmm4,zmm12 + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqa32 zmm11,zmm17 + vmovdqa32 zmm12,zmm18 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi],zmm2 + vmovdqu8 ZMMWORD[128+rsi],zmm3 + vmovdqu8 ZMMWORD[192+rsi],zmm4 + add rsi,0x100 + sub rdx,0x100 + cmp rdx,0x100 + jae NEAR $L$_main_loop_run_16_wcpqaDvsGlbjGoe + cmp rdx,0x80 + jae NEAR $L$_main_loop_run_8_wcpqaDvsGlbjGoe + vextracti32x4 xmm0,zmm4,0x3 + jmp NEAR $L$_do_n_blocks_wcpqaDvsGlbjGoe + +$L$_start_by8_wcpqaDvsGlbjGoe: + vbroadcasti32x4 zmm0,ZMMWORD[rsp] + vbroadcasti32x4 zmm8,ZMMWORD[shufb_15_7] + mov r8,0xaa + kmovq k2,r8 + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x0 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x0 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + +$L$_main_loop_run_8_wcpqaDvsGlbjGoe: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2,ZMMWORD[64+rdi] + add rdi,0x80 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vpsrldq zmm13,zmm9,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm15,zmm9,0x1 + vpxord zmm15,zmm15,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + vpsrldq zmm13,zmm10,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm16,zmm10,0x1 + vpxord zmm16,zmm16,zmm14 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi],zmm2 + add rsi,0x80 + sub rdx,0x80 + cmp rdx,0x80 + jae NEAR $L$_main_loop_run_8_wcpqaDvsGlbjGoe + vextracti32x4 xmm0,zmm2,0x3 + jmp NEAR $L$_do_n_blocks_wcpqaDvsGlbjGoe + +$L$_steal_cipher_wcpqaDvsGlbjGoe: + vmovdqa xmm2,xmm8 + lea rax,[vpshufb_shf_table] + vmovdqu xmm10,XMMWORD[rdx*1+rax] + vpshufb xmm8,xmm8,xmm10 + vmovdqu xmm3,XMMWORD[((-16))+rdx*1+rdi] + vmovdqu XMMWORD[(-16)+rdx*1+rsi],xmm8 + lea rax,[vpshufb_shf_table] + add rax,16 + sub rax,rdx + vmovdqu xmm10,XMMWORD[rax] + vpxor xmm10,xmm10,XMMWORD[mask1] + vpshufb xmm3,xmm3,xmm10 + vpblendvb xmm3,xmm3,xmm2,xmm10 + vpxor xmm8,xmm3,xmm0 + vpxor xmm8,xmm8,XMMWORD[rcx] + vaesenc xmm8,xmm8,XMMWORD[16+rcx] + vaesenc xmm8,xmm8,XMMWORD[32+rcx] + vaesenc xmm8,xmm8,XMMWORD[48+rcx] + vaesenc xmm8,xmm8,XMMWORD[64+rcx] + vaesenc xmm8,xmm8,XMMWORD[80+rcx] + vaesenc xmm8,xmm8,XMMWORD[96+rcx] + vaesenc xmm8,xmm8,XMMWORD[112+rcx] + vaesenc xmm8,xmm8,XMMWORD[128+rcx] + vaesenc xmm8,xmm8,XMMWORD[144+rcx] + vaesenc xmm8,xmm8,XMMWORD[160+rcx] + vaesenc xmm8,xmm8,XMMWORD[176+rcx] + vaesenc xmm8,xmm8,XMMWORD[192+rcx] + vaesenc xmm8,xmm8,XMMWORD[208+rcx] + vaesenclast xmm8,xmm8,XMMWORD[224+rcx] + vpxor xmm8,xmm8,xmm0 + vmovdqu XMMWORD[(-16)+rsi],xmm8 +$L$_ret_wcpqaDvsGlbjGoe: + mov rbx,QWORD[288+rsp] + xor r8,r8 + mov QWORD[288+rsp],r8 + + vpxorq zmm0,zmm0,zmm0 + mov rdi,QWORD[((288 + 8))+rsp] + mov QWORD[((288 + 8))+rsp],r8 + mov rsi,QWORD[((288 + 16))+rsp] + mov QWORD[((288 + 16))+rsp],r8 + + vmovdqa xmm6,XMMWORD[((128 + 0))+rsp] + vmovdqa xmm7,XMMWORD[((128 + 16))+rsp] + vmovdqa xmm8,XMMWORD[((128 + 32))+rsp] + vmovdqa xmm9,XMMWORD[((128 + 48))+rsp] + + + vmovdqa64 ZMMWORD[128+rsp],zmm0 + + vmovdqa xmm10,XMMWORD[((128 + 64))+rsp] + vmovdqa xmm11,XMMWORD[((128 + 80))+rsp] + vmovdqa xmm12,XMMWORD[((128 + 96))+rsp] + vmovdqa xmm13,XMMWORD[((128 + 112))+rsp] + + + vmovdqa64 ZMMWORD[(128 + 64)+rsp],zmm0 + + vmovdqa xmm14,XMMWORD[((128 + 128))+rsp] + vmovdqa xmm15,XMMWORD[((128 + 144))+rsp] + + + + vmovdqa YMMWORD[(128 + 128)+rsp],ymm0 + mov rsp,rbp + pop rbp + vzeroupper + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$_less_than_128_bytes_wcpqaDvsGlbjGoe: + vpbroadcastq zmm25,r10 + cmp rdx,0x10 + jb NEAR $L$_ret_wcpqaDvsGlbjGoe + vbroadcasti32x4 zmm0,ZMMWORD[rsp] + vbroadcasti32x4 zmm8,ZMMWORD[shufb_15_7] + mov r8d,0xaa + kmovq k2,r8 + mov r8,rdx + and r8,0x70 + cmp r8,0x60 + je NEAR $L$_num_blocks_is_6_wcpqaDvsGlbjGoe + cmp r8,0x50 + je NEAR $L$_num_blocks_is_5_wcpqaDvsGlbjGoe + cmp r8,0x40 + je NEAR $L$_num_blocks_is_4_wcpqaDvsGlbjGoe + cmp r8,0x30 + je NEAR $L$_num_blocks_is_3_wcpqaDvsGlbjGoe + cmp r8,0x20 + je NEAR $L$_num_blocks_is_2_wcpqaDvsGlbjGoe + cmp r8,0x10 + je NEAR $L$_num_blocks_is_1_wcpqaDvsGlbjGoe + +$L$_num_blocks_is_7_wcpqaDvsGlbjGoe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x00 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + mov r8,0x0000ffffffffffff + kmovq k1,r8 + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2{k1},[64+rdi] + + add rdi,0x70 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi]{k1},zmm2 + add rsi,0x70 + vextracti32x4 xmm8,zmm2,0x2 + vextracti32x4 xmm0,zmm10,0x3 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe +$L$_num_blocks_is_6_wcpqaDvsGlbjGoe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x00 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 ymm2,YMMWORD[64+rdi] + add rdi,96 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 YMMWORD[64+rsi],ymm2 + add rsi,96 + + vextracti32x4 xmm8,ymm2,0x1 + vextracti32x4 xmm0,zmm10,0x2 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe +$L$_num_blocks_is_5_wcpqaDvsGlbjGoe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x00 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 xmm2,XMMWORD[64+rdi] + add rdi,80 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vpternlogq zmm2,zmm10,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesenc zmm1,zmm1,zmm0 + vaesenc zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesenclast zmm1,zmm1,zmm0 + vaesenclast zmm2,zmm2,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 XMMWORD[64+rsi],xmm2 + add rsi,80 + + vmovdqa xmm8,xmm2 + vextracti32x4 xmm0,zmm10,0x1 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe +$L$_num_blocks_is_4_wcpqaDvsGlbjGoe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x00 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + vmovdqu8 zmm1,ZMMWORD[rdi] + add rdi,64 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesenclast zmm1,zmm1,zmm0 + vpxorq zmm1,zmm1,zmm9 + vmovdqu8 ZMMWORD[rsi],zmm1 + add rsi,64 + vextracti32x4 xmm8,zmm1,0x3 + vmovdqa xmm0,xmm10 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe +$L$_num_blocks_is_3_wcpqaDvsGlbjGoe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + mov r8,0x0000ffffffffffff + kmovq k1,r8 + vmovdqu8 zmm1{k1},[rdi] + add rdi,48 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpternlogq zmm1,zmm9,zmm0,0x96 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesenc zmm1,zmm1,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesenclast zmm1,zmm1,zmm0 + vpxorq zmm1,zmm1,zmm9 + vmovdqu8 ZMMWORD[rsi]{k1},zmm1 + add rsi,48 + vextracti32x4 xmm8,zmm1,2 + vextracti32x4 xmm0,zmm9,3 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe +$L$_num_blocks_is_2_wcpqaDvsGlbjGoe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + + vmovdqu8 ymm1,YMMWORD[rdi] + add rdi,32 + vbroadcasti32x4 ymm0,YMMWORD[rcx] + vpternlogq ymm1,ymm9,ymm0,0x96 + vbroadcasti32x4 ymm0,YMMWORD[16+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[32+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[48+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[64+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[80+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[96+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[112+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[128+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[144+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[160+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[176+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[192+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[208+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[224+rcx] + vaesenclast ymm1,ymm1,ymm0 + vpxorq ymm1,ymm1,ymm9 + vmovdqu8 YMMWORD[rsi],ymm1 + add rsi,32 + + vextracti32x4 xmm8,ymm1,1 + vextracti32x4 xmm0,zmm9,2 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe +$L$_num_blocks_is_1_wcpqaDvsGlbjGoe: + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x00 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + + vmovdqu8 xmm1,XMMWORD[rdi] + add rdi,16 + vbroadcasti32x4 ymm0,YMMWORD[rcx] + vpternlogq ymm1,ymm9,ymm0,0x96 + vbroadcasti32x4 ymm0,YMMWORD[16+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[32+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[48+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[64+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[80+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[96+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[112+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[128+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[144+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[160+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[176+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[192+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[208+rcx] + vaesenc ymm1,ymm1,ymm0 + vbroadcasti32x4 ymm0,YMMWORD[224+rcx] + vaesenclast ymm1,ymm1,ymm0 + vpxorq ymm1,ymm1,ymm9 + vmovdqu8 XMMWORD[rsi],xmm1 + add rsi,16 + + vmovdqa xmm8,xmm1 + vextracti32x4 xmm0,zmm9,1 + and rdx,0xf + je NEAR $L$_ret_wcpqaDvsGlbjGoe + jmp NEAR $L$_steal_cipher_wcpqaDvsGlbjGoe + +global aesni_xts_256_decrypt_avx512 + + +ALIGN 32 +aesni_xts_256_decrypt_avx512: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_xts_256_decrypt_avx512: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + +DB 243,15,30,250 + push rbp + mov rbp,rsp + sub rsp,312 + and rsp,0xffffffffffffffc0 + mov QWORD[288+rsp],rbx + mov QWORD[((288 + 8))+rsp],rdi + mov QWORD[((288 + 16))+rsp],rsi + vmovdqa XMMWORD[(128 + 0)+rsp],xmm6 + vmovdqa XMMWORD[(128 + 16)+rsp],xmm7 + vmovdqa XMMWORD[(128 + 32)+rsp],xmm8 + vmovdqa XMMWORD[(128 + 48)+rsp],xmm9 + vmovdqa XMMWORD[(128 + 64)+rsp],xmm10 + vmovdqa XMMWORD[(128 + 80)+rsp],xmm11 + vmovdqa XMMWORD[(128 + 96)+rsp],xmm12 + vmovdqa XMMWORD[(128 + 112)+rsp],xmm13 + vmovdqa XMMWORD[(128 + 128)+rsp],xmm14 + vmovdqa XMMWORD[(128 + 144)+rsp],xmm15 + mov r10,0x87 + vmovdqu xmm1,XMMWORD[r9] + vpxor xmm1,xmm1,XMMWORD[r8] + vaesenc xmm1,xmm1,XMMWORD[16+r8] + vaesenc xmm1,xmm1,XMMWORD[32+r8] + vaesenc xmm1,xmm1,XMMWORD[48+r8] + vaesenc xmm1,xmm1,XMMWORD[64+r8] + vaesenc xmm1,xmm1,XMMWORD[80+r8] + vaesenc xmm1,xmm1,XMMWORD[96+r8] + vaesenc xmm1,xmm1,XMMWORD[112+r8] + vaesenc xmm1,xmm1,XMMWORD[128+r8] + vaesenc xmm1,xmm1,XMMWORD[144+r8] + vaesenc xmm1,xmm1,XMMWORD[160+r8] + vaesenc xmm1,xmm1,XMMWORD[176+r8] + vaesenc xmm1,xmm1,XMMWORD[192+r8] + vaesenc xmm1,xmm1,XMMWORD[208+r8] + vaesenclast xmm1,xmm1,XMMWORD[224+r8] + vmovdqa XMMWORD[rsp],xmm1 + mov QWORD[((8 + 40))+rbp],rdi + mov QWORD[((8 + 48))+rbp],rsi + + cmp rdx,0x80 + jb NEAR $L$_less_than_128_bytes_EmbgEptodyewbFa + vpbroadcastq zmm25,r10 + cmp rdx,0x100 + jge NEAR $L$_start_by16_EmbgEptodyewbFa + jmp NEAR $L$_start_by8_EmbgEptodyewbFa + +$L$_do_n_blocks_EmbgEptodyewbFa: + cmp rdx,0x0 + je NEAR $L$_ret_EmbgEptodyewbFa + cmp rdx,0x70 + jge NEAR $L$_remaining_num_blocks_is_7_EmbgEptodyewbFa + cmp rdx,0x60 + jge NEAR $L$_remaining_num_blocks_is_6_EmbgEptodyewbFa + cmp rdx,0x50 + jge NEAR $L$_remaining_num_blocks_is_5_EmbgEptodyewbFa + cmp rdx,0x40 + jge NEAR $L$_remaining_num_blocks_is_4_EmbgEptodyewbFa + cmp rdx,0x30 + jge NEAR $L$_remaining_num_blocks_is_3_EmbgEptodyewbFa + cmp rdx,0x20 + jge NEAR $L$_remaining_num_blocks_is_2_EmbgEptodyewbFa + cmp rdx,0x10 + jge NEAR $L$_remaining_num_blocks_is_1_EmbgEptodyewbFa + + + vmovdqu xmm1,xmm5 + + vpxor xmm1,xmm1,xmm9 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vpxor xmm1,xmm1,xmm9 + vmovdqu XMMWORD[(-16)+rsi],xmm1 + vmovdqa xmm8,xmm1 + + + mov r8,0x1 + kmovq k1,r8 + vpsllq xmm13,xmm9,0x3f + vpsraq xmm14,xmm13,0x3f + vpandq xmm5,xmm14,xmm25 + vpxorq xmm9{k1},xmm9,xmm5 + vpsrldq xmm10,xmm9,0x8 +DB 98,211,181,8,115,194,1 + vpslldq xmm13,xmm13,0x8 + vpxorq xmm0,xmm0,xmm13 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_remaining_num_blocks_is_7_EmbgEptodyewbFa: + mov r8,0xffffffffffffffff + shr r8,0x10 + kmovq k1,r8 + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2{k1},[64+rdi] + add rdi,0x70 + and rdx,0xf + je NEAR $L$_done_7_remain_EmbgEptodyewbFa + vextracti32x4 xmm12,zmm10,0x2 + vextracti32x4 xmm13,zmm10,0x3 + vinserti32x4 zmm10,zmm10,xmm13,0x2 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi]{k1},zmm2 + add rsi,0x70 + vextracti32x4 xmm8,zmm2,0x2 + vmovdqa xmm0,xmm12 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_7_remain_EmbgEptodyewbFa: + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi]{k1},zmm2 + jmp NEAR $L$_ret_EmbgEptodyewbFa + +$L$_remaining_num_blocks_is_6_EmbgEptodyewbFa: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 ymm2,YMMWORD[64+rdi] + add rdi,0x60 + and rdx,0xf + je NEAR $L$_done_6_remain_EmbgEptodyewbFa + vextracti32x4 xmm12,zmm10,0x1 + vextracti32x4 xmm13,zmm10,0x2 + vinserti32x4 zmm10,zmm10,xmm13,0x1 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 YMMWORD[64+rsi],ymm2 + add rsi,0x60 + vextracti32x4 xmm8,zmm2,0x1 + vmovdqa xmm0,xmm12 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_6_remain_EmbgEptodyewbFa: + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 YMMWORD[64+rsi],ymm2 + jmp NEAR $L$_ret_EmbgEptodyewbFa + +$L$_remaining_num_blocks_is_5_EmbgEptodyewbFa: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu xmm2,XMMWORD[64+rdi] + add rdi,0x50 + and rdx,0xf + je NEAR $L$_done_5_remain_EmbgEptodyewbFa + vmovdqa xmm12,xmm10 + vextracti32x4 xmm10,zmm10,0x1 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu XMMWORD[64+rsi],xmm2 + add rsi,0x50 + vmovdqa xmm8,xmm2 + vmovdqa xmm0,xmm12 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_5_remain_EmbgEptodyewbFa: + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 XMMWORD[64+rsi],xmm2 + jmp NEAR $L$_ret_EmbgEptodyewbFa + +$L$_remaining_num_blocks_is_4_EmbgEptodyewbFa: + vmovdqu8 zmm1,ZMMWORD[rdi] + add rdi,0x40 + and rdx,0xf + je NEAR $L$_done_4_remain_EmbgEptodyewbFa + vextracti32x4 xmm12,zmm9,0x3 + vinserti32x4 zmm9,zmm9,xmm10,0x3 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + add rsi,0x40 + vextracti32x4 xmm8,zmm1,0x3 + vmovdqa xmm0,xmm12 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_4_remain_EmbgEptodyewbFa: + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + jmp NEAR $L$_ret_EmbgEptodyewbFa + +$L$_remaining_num_blocks_is_3_EmbgEptodyewbFa: + vmovdqu xmm1,XMMWORD[rdi] + vmovdqu xmm2,XMMWORD[16+rdi] + vmovdqu xmm3,XMMWORD[32+rdi] + add rdi,0x30 + and rdx,0xf + je NEAR $L$_done_3_remain_EmbgEptodyewbFa + vextracti32x4 xmm13,zmm9,0x2 + vextracti32x4 xmm10,zmm9,0x1 + vextracti32x4 xmm11,zmm9,0x3 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + add rsi,0x30 + vmovdqa xmm8,xmm3 + vmovdqa xmm0,xmm13 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_3_remain_EmbgEptodyewbFa: + vextracti32x4 xmm10,zmm9,0x1 + vextracti32x4 xmm11,zmm9,0x2 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + jmp NEAR $L$_ret_EmbgEptodyewbFa + +$L$_remaining_num_blocks_is_2_EmbgEptodyewbFa: + vmovdqu xmm1,XMMWORD[rdi] + vmovdqu xmm2,XMMWORD[16+rdi] + add rdi,0x20 + and rdx,0xf + je NEAR $L$_done_2_remain_EmbgEptodyewbFa + vextracti32x4 xmm10,zmm9,0x2 + vextracti32x4 xmm12,zmm9,0x1 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + add rsi,0x20 + vmovdqa xmm8,xmm2 + vmovdqa xmm0,xmm12 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_2_remain_EmbgEptodyewbFa: + vextracti32x4 xmm10,zmm9,0x1 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + jmp NEAR $L$_ret_EmbgEptodyewbFa + +$L$_remaining_num_blocks_is_1_EmbgEptodyewbFa: + vmovdqu xmm1,XMMWORD[rdi] + add rdi,0x10 + and rdx,0xf + je NEAR $L$_done_1_remain_EmbgEptodyewbFa + vextracti32x4 xmm11,zmm9,0x1 + vpxor xmm1,xmm1,xmm11 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vpxor xmm1,xmm1,xmm11 + vmovdqu XMMWORD[rsi],xmm1 + add rsi,0x10 + vmovdqa xmm8,xmm1 + vmovdqa xmm0,xmm9 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_1_remain_EmbgEptodyewbFa: + vpxor xmm1,xmm1,xmm9 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vpxor xmm1,xmm1,xmm9 + vmovdqu XMMWORD[rsi],xmm1 + jmp NEAR $L$_ret_EmbgEptodyewbFa + +$L$_start_by16_EmbgEptodyewbFa: + vbroadcasti32x4 zmm0,ZMMWORD[rsp] + vbroadcasti32x4 zmm8,ZMMWORD[shufb_15_7] + mov r8,0xaa + kmovq k2,r8 + + + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x0 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + + + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x0 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + + + vpsrldq zmm13,zmm9,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm11,zmm9,0x1 + vpxord zmm11,zmm11,zmm14 + + vpsrldq zmm15,zmm10,0xf + vpclmulqdq zmm16,zmm15,zmm25,0x0 + vpslldq zmm12,zmm10,0x1 + vpxord zmm12,zmm12,zmm16 + +$L$_main_loop_run_16_EmbgEptodyewbFa: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2,ZMMWORD[64+rdi] + vmovdqu8 zmm3,ZMMWORD[128+rdi] + vmovdqu8 zmm4,ZMMWORD[192+rdi] + vmovdqu8 xmm5,XMMWORD[240+rdi] + add rdi,0x100 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vpxorq zmm3,zmm3,zmm11 + vpxorq zmm4,zmm4,zmm12 + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vpxorq zmm3,zmm3,zmm0 + vpxorq zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm11,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm15,zmm11,0x1 + vpxord zmm15,zmm15,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm12,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm16,zmm12,0x1 + vpxord zmm16,zmm16,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm15,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm17,zmm15,0x1 + vpxord zmm17,zmm17,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vpsrldq zmm13,zmm16,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm18,zmm16,0x1 + vpxord zmm18,zmm18,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vaesdec zmm3,zmm3,zmm0 + vaesdec zmm4,zmm4,zmm0 + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + vaesdeclast zmm3,zmm3,zmm0 + vaesdeclast zmm4,zmm4,zmm0 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + vpxorq zmm3,zmm3,zmm11 + vpxorq zmm4,zmm4,zmm12 + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqa32 zmm11,zmm17 + vmovdqa32 zmm12,zmm18 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi],zmm2 + vmovdqu8 ZMMWORD[128+rsi],zmm3 + vmovdqu8 ZMMWORD[192+rsi],zmm4 + add rsi,0x100 + sub rdx,0x100 + cmp rdx,0x100 + jge NEAR $L$_main_loop_run_16_EmbgEptodyewbFa + + cmp rdx,0x80 + jge NEAR $L$_main_loop_run_8_EmbgEptodyewbFa + jmp NEAR $L$_do_n_blocks_EmbgEptodyewbFa + +$L$_start_by8_EmbgEptodyewbFa: + + vbroadcasti32x4 zmm0,ZMMWORD[rsp] + vbroadcasti32x4 zmm8,ZMMWORD[shufb_15_7] + mov r8,0xaa + kmovq k2,r8 + + + vpshufb zmm1,zmm0,zmm8 + vpsllvq zmm4,zmm0,ZMMWORD[const_dq3210] + vpsrlvq zmm2,zmm1,ZMMWORD[const_dq5678] + vpclmulqdq zmm3,zmm2,zmm25,0x0 + vpxorq zmm4{k2},zmm4,zmm2 + vpxord zmm9,zmm3,zmm4 + + + vpsllvq zmm5,zmm0,ZMMWORD[const_dq7654] + vpsrlvq zmm6,zmm1,ZMMWORD[const_dq1234] + vpclmulqdq zmm7,zmm6,zmm25,0x0 + vpxorq zmm5{k2},zmm5,zmm6 + vpxord zmm10,zmm7,zmm5 + +$L$_main_loop_run_8_EmbgEptodyewbFa: + vmovdqu8 zmm1,ZMMWORD[rdi] + vmovdqu8 zmm2,ZMMWORD[64+rdi] + vmovdqu8 xmm5,XMMWORD[112+rdi] + add rdi,0x80 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vbroadcasti32x4 zmm0,ZMMWORD[rcx] + vpxorq zmm1,zmm1,zmm0 + vpxorq zmm2,zmm2,zmm0 + vpsrldq zmm13,zmm9,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm15,zmm9,0x1 + vpxord zmm15,zmm15,zmm14 + vbroadcasti32x4 zmm0,ZMMWORD[16+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[32+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[48+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + vpsrldq zmm13,zmm10,0xf + vpclmulqdq zmm14,zmm13,zmm25,0x0 + vpslldq zmm16,zmm10,0x1 + vpxord zmm16,zmm16,zmm14 + + vbroadcasti32x4 zmm0,ZMMWORD[64+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[80+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[96+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[112+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[128+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[144+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[160+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[176+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[192+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[208+rcx] + vaesdec zmm1,zmm1,zmm0 + vaesdec zmm2,zmm2,zmm0 + + + vbroadcasti32x4 zmm0,ZMMWORD[224+rcx] + vaesdeclast zmm1,zmm1,zmm0 + vaesdeclast zmm2,zmm2,zmm0 + + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm2,zmm2,zmm10 + + + vmovdqa32 zmm9,zmm15 + vmovdqa32 zmm10,zmm16 + vmovdqu8 ZMMWORD[rsi],zmm1 + vmovdqu8 ZMMWORD[64+rsi],zmm2 + add rsi,0x80 + sub rdx,0x80 + cmp rdx,0x80 + jge NEAR $L$_main_loop_run_8_EmbgEptodyewbFa + jmp NEAR $L$_do_n_blocks_EmbgEptodyewbFa + +$L$_steal_cipher_EmbgEptodyewbFa: + + vmovdqa xmm2,xmm8 + + + lea rax,[vpshufb_shf_table] + vmovdqu xmm10,XMMWORD[rdx*1+rax] + vpshufb xmm8,xmm8,xmm10 + + + vmovdqu xmm3,XMMWORD[((-16))+rdx*1+rdi] + vmovdqu XMMWORD[(-16)+rdx*1+rsi],xmm8 + + + lea rax,[vpshufb_shf_table] + add rax,16 + sub rax,rdx + vmovdqu xmm10,XMMWORD[rax] + vpxor xmm10,xmm10,XMMWORD[mask1] + vpshufb xmm3,xmm3,xmm10 + + vpblendvb xmm3,xmm3,xmm2,xmm10 + + + vpxor xmm8,xmm3,xmm0 + + + vpxor xmm8,xmm8,XMMWORD[rcx] + vaesdec xmm8,xmm8,XMMWORD[16+rcx] + vaesdec xmm8,xmm8,XMMWORD[32+rcx] + vaesdec xmm8,xmm8,XMMWORD[48+rcx] + vaesdec xmm8,xmm8,XMMWORD[64+rcx] + vaesdec xmm8,xmm8,XMMWORD[80+rcx] + vaesdec xmm8,xmm8,XMMWORD[96+rcx] + vaesdec xmm8,xmm8,XMMWORD[112+rcx] + vaesdec xmm8,xmm8,XMMWORD[128+rcx] + vaesdec xmm8,xmm8,XMMWORD[144+rcx] + vaesdec xmm8,xmm8,XMMWORD[160+rcx] + vaesdec xmm8,xmm8,XMMWORD[176+rcx] + vaesdec xmm8,xmm8,XMMWORD[192+rcx] + vaesdec xmm8,xmm8,XMMWORD[208+rcx] + vaesdeclast xmm8,xmm8,XMMWORD[224+rcx] + + vpxor xmm8,xmm8,xmm0 + +$L$_done_EmbgEptodyewbFa: + + vmovdqu XMMWORD[(-16)+rsi],xmm8 +$L$_ret_EmbgEptodyewbFa: + mov rbx,QWORD[288+rsp] + xor r8,r8 + mov QWORD[288+rsp],r8 + + vpxorq zmm0,zmm0,zmm0 + mov rdi,QWORD[((288 + 8))+rsp] + mov QWORD[((288 + 8))+rsp],r8 + mov rsi,QWORD[((288 + 16))+rsp] + mov QWORD[((288 + 16))+rsp],r8 + + vmovdqa xmm6,XMMWORD[((128 + 0))+rsp] + vmovdqa xmm7,XMMWORD[((128 + 16))+rsp] + vmovdqa xmm8,XMMWORD[((128 + 32))+rsp] + vmovdqa xmm9,XMMWORD[((128 + 48))+rsp] + + + vmovdqa64 ZMMWORD[128+rsp],zmm0 + + vmovdqa xmm10,XMMWORD[((128 + 64))+rsp] + vmovdqa xmm11,XMMWORD[((128 + 80))+rsp] + vmovdqa xmm12,XMMWORD[((128 + 96))+rsp] + vmovdqa xmm13,XMMWORD[((128 + 112))+rsp] + + + vmovdqa64 ZMMWORD[(128 + 64)+rsp],zmm0 + + vmovdqa xmm14,XMMWORD[((128 + 128))+rsp] + vmovdqa xmm15,XMMWORD[((128 + 144))+rsp] + + + + vmovdqa YMMWORD[(128 + 128)+rsp],ymm0 + mov rsp,rbp + pop rbp + vzeroupper + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$_less_than_128_bytes_EmbgEptodyewbFa: + cmp rdx,0x10 + jb NEAR $L$_ret_EmbgEptodyewbFa + + mov r8,rdx + and r8,0x70 + cmp r8,0x60 + je NEAR $L$_num_blocks_is_6_EmbgEptodyewbFa + cmp r8,0x50 + je NEAR $L$_num_blocks_is_5_EmbgEptodyewbFa + cmp r8,0x40 + je NEAR $L$_num_blocks_is_4_EmbgEptodyewbFa + cmp r8,0x30 + je NEAR $L$_num_blocks_is_3_EmbgEptodyewbFa + cmp r8,0x20 + je NEAR $L$_num_blocks_is_2_EmbgEptodyewbFa + cmp r8,0x10 + je NEAR $L$_num_blocks_is_1_EmbgEptodyewbFa + +$L$_num_blocks_is_7_EmbgEptodyewbFa: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[((16 + 8))+rsp],rbx + vmovdqa xmm10,XMMWORD[16+rsp] + vmovdqu xmm2,XMMWORD[16+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[32+rsp],rax + mov QWORD[((32 + 8))+rsp],rbx + vmovdqa xmm11,XMMWORD[32+rsp] + vmovdqu xmm3,XMMWORD[32+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[48+rsp],rax + mov QWORD[((48 + 8))+rsp],rbx + vmovdqa xmm12,XMMWORD[48+rsp] + vmovdqu xmm4,XMMWORD[48+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[64+rsp],rax + mov QWORD[((64 + 8))+rsp],rbx + vmovdqa xmm13,XMMWORD[64+rsp] + vmovdqu xmm5,XMMWORD[64+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[80+rsp],rax + mov QWORD[((80 + 8))+rsp],rbx + vmovdqa xmm14,XMMWORD[80+rsp] + vmovdqu xmm6,XMMWORD[80+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[96+rsp],rax + mov QWORD[((96 + 8))+rsp],rbx + vmovdqa xmm15,XMMWORD[96+rsp] + vmovdqu xmm7,XMMWORD[96+rdi] + add rdi,0x70 + and rdx,0xf + je NEAR $L$_done_7_EmbgEptodyewbFa + +$L$_steal_cipher_7_EmbgEptodyewbFa: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm16,xmm15 + vmovdqa xmm15,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vpxor xmm7,xmm7,xmm15 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vpxor xmm5,xmm5,xmm0 + vpxor xmm6,xmm6,xmm0 + vpxor xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vaesdeclast xmm5,xmm5,xmm0 + vaesdeclast xmm6,xmm6,xmm0 + vaesdeclast xmm7,xmm7,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vpxor xmm7,xmm7,xmm15 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + vmovdqu XMMWORD[48+rsi],xmm4 + vmovdqu XMMWORD[64+rsi],xmm5 + vmovdqu XMMWORD[80+rsi],xmm6 + add rsi,0x70 + vmovdqa64 xmm0,xmm16 + vmovdqa xmm8,xmm7 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_7_EmbgEptodyewbFa: + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vpxor xmm7,xmm7,xmm15 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vpxor xmm5,xmm5,xmm0 + vpxor xmm6,xmm6,xmm0 + vpxor xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vaesdeclast xmm5,xmm5,xmm0 + vaesdeclast xmm6,xmm6,xmm0 + vaesdeclast xmm7,xmm7,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vpxor xmm7,xmm7,xmm15 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + vmovdqu XMMWORD[48+rsi],xmm4 + vmovdqu XMMWORD[64+rsi],xmm5 + vmovdqu XMMWORD[80+rsi],xmm6 + add rsi,0x70 + vmovdqa xmm8,xmm7 + jmp NEAR $L$_done_EmbgEptodyewbFa + +$L$_num_blocks_is_6_EmbgEptodyewbFa: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[((16 + 8))+rsp],rbx + vmovdqa xmm10,XMMWORD[16+rsp] + vmovdqu xmm2,XMMWORD[16+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[32+rsp],rax + mov QWORD[((32 + 8))+rsp],rbx + vmovdqa xmm11,XMMWORD[32+rsp] + vmovdqu xmm3,XMMWORD[32+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[48+rsp],rax + mov QWORD[((48 + 8))+rsp],rbx + vmovdqa xmm12,XMMWORD[48+rsp] + vmovdqu xmm4,XMMWORD[48+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[64+rsp],rax + mov QWORD[((64 + 8))+rsp],rbx + vmovdqa xmm13,XMMWORD[64+rsp] + vmovdqu xmm5,XMMWORD[64+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[80+rsp],rax + mov QWORD[((80 + 8))+rsp],rbx + vmovdqa xmm14,XMMWORD[80+rsp] + vmovdqu xmm6,XMMWORD[80+rdi] + add rdi,0x60 + and rdx,0xf + je NEAR $L$_done_6_EmbgEptodyewbFa + +$L$_steal_cipher_6_EmbgEptodyewbFa: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm15,xmm14 + vmovdqa xmm14,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vpxor xmm5,xmm5,xmm0 + vpxor xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vaesdeclast xmm5,xmm5,xmm0 + vaesdeclast xmm6,xmm6,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + vmovdqu XMMWORD[48+rsi],xmm4 + vmovdqu XMMWORD[64+rsi],xmm5 + add rsi,0x60 + vmovdqa xmm0,xmm15 + vmovdqa xmm8,xmm6 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_6_EmbgEptodyewbFa: + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vpxor xmm5,xmm5,xmm0 + vpxor xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vaesdeclast xmm5,xmm5,xmm0 + vaesdeclast xmm6,xmm6,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vpxor xmm6,xmm6,xmm14 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + vmovdqu XMMWORD[48+rsi],xmm4 + vmovdqu XMMWORD[64+rsi],xmm5 + add rsi,0x60 + vmovdqa xmm8,xmm6 + jmp NEAR $L$_done_EmbgEptodyewbFa + +$L$_num_blocks_is_5_EmbgEptodyewbFa: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[((16 + 8))+rsp],rbx + vmovdqa xmm10,XMMWORD[16+rsp] + vmovdqu xmm2,XMMWORD[16+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[32+rsp],rax + mov QWORD[((32 + 8))+rsp],rbx + vmovdqa xmm11,XMMWORD[32+rsp] + vmovdqu xmm3,XMMWORD[32+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[48+rsp],rax + mov QWORD[((48 + 8))+rsp],rbx + vmovdqa xmm12,XMMWORD[48+rsp] + vmovdqu xmm4,XMMWORD[48+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[64+rsp],rax + mov QWORD[((64 + 8))+rsp],rbx + vmovdqa xmm13,XMMWORD[64+rsp] + vmovdqu xmm5,XMMWORD[64+rdi] + add rdi,0x50 + and rdx,0xf + je NEAR $L$_done_5_EmbgEptodyewbFa + +$L$_steal_cipher_5_EmbgEptodyewbFa: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm14,xmm13 + vmovdqa xmm13,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vpxor xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vaesdeclast xmm5,xmm5,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + vmovdqu XMMWORD[48+rsi],xmm4 + add rsi,0x50 + vmovdqa xmm0,xmm14 + vmovdqa xmm8,xmm5 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_5_EmbgEptodyewbFa: + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vpxor xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vaesdeclast xmm5,xmm5,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vpxor xmm5,xmm5,xmm13 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + vmovdqu XMMWORD[48+rsi],xmm4 + add rsi,0x50 + vmovdqa xmm8,xmm5 + jmp NEAR $L$_done_EmbgEptodyewbFa + +$L$_num_blocks_is_4_EmbgEptodyewbFa: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[((16 + 8))+rsp],rbx + vmovdqa xmm10,XMMWORD[16+rsp] + vmovdqu xmm2,XMMWORD[16+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[32+rsp],rax + mov QWORD[((32 + 8))+rsp],rbx + vmovdqa xmm11,XMMWORD[32+rsp] + vmovdqu xmm3,XMMWORD[32+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[48+rsp],rax + mov QWORD[((48 + 8))+rsp],rbx + vmovdqa xmm12,XMMWORD[48+rsp] + vmovdqu xmm4,XMMWORD[48+rdi] + add rdi,0x40 + and rdx,0xf + je NEAR $L$_done_4_EmbgEptodyewbFa + +$L$_steal_cipher_4_EmbgEptodyewbFa: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm13,xmm12 + vmovdqa xmm12,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + add rsi,0x40 + vmovdqa xmm0,xmm13 + vmovdqa xmm8,xmm4 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_4_EmbgEptodyewbFa: + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vpxor xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vaesdeclast xmm4,xmm4,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vpxor xmm4,xmm4,xmm12 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + vmovdqu XMMWORD[32+rsi],xmm3 + add rsi,0x40 + vmovdqa xmm8,xmm4 + jmp NEAR $L$_done_EmbgEptodyewbFa + +$L$_num_blocks_is_3_EmbgEptodyewbFa: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[((16 + 8))+rsp],rbx + vmovdqa xmm10,XMMWORD[16+rsp] + vmovdqu xmm2,XMMWORD[16+rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[32+rsp],rax + mov QWORD[((32 + 8))+rsp],rbx + vmovdqa xmm11,XMMWORD[32+rsp] + vmovdqu xmm3,XMMWORD[32+rdi] + add rdi,0x30 + and rdx,0xf + je NEAR $L$_done_3_EmbgEptodyewbFa + +$L$_steal_cipher_3_EmbgEptodyewbFa: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm12,xmm11 + vmovdqa xmm11,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + add rsi,0x30 + vmovdqa xmm0,xmm12 + vmovdqa xmm8,xmm3 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_3_EmbgEptodyewbFa: + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vpxor xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vaesdeclast xmm3,xmm3,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vpxor xmm3,xmm3,xmm11 + vmovdqu XMMWORD[rsi],xmm1 + vmovdqu XMMWORD[16+rsi],xmm2 + add rsi,0x30 + vmovdqa xmm8,xmm3 + jmp NEAR $L$_done_EmbgEptodyewbFa + +$L$_num_blocks_is_2_EmbgEptodyewbFa: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[((16 + 8))+rsp],rbx + vmovdqa xmm10,XMMWORD[16+rsp] + vmovdqu xmm2,XMMWORD[16+rdi] + add rdi,0x20 + and rdx,0xf + je NEAR $L$_done_2_EmbgEptodyewbFa + +$L$_steal_cipher_2_EmbgEptodyewbFa: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm11,xmm10 + vmovdqa xmm10,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu XMMWORD[rsi],xmm1 + add rsi,0x20 + vmovdqa xmm0,xmm11 + vmovdqa xmm8,xmm2 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_2_EmbgEptodyewbFa: + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vpxor xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vaesdec xmm2,xmm2,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vaesdeclast xmm2,xmm2,xmm0 + vpxor xmm1,xmm1,xmm9 + vpxor xmm2,xmm2,xmm10 + vmovdqu XMMWORD[rsi],xmm1 + add rsi,0x20 + vmovdqa xmm8,xmm2 + jmp NEAR $L$_done_EmbgEptodyewbFa + +$L$_num_blocks_is_1_EmbgEptodyewbFa: + vmovdqa xmm9,XMMWORD[rsp] + mov rax,QWORD[rsp] + mov rbx,QWORD[8+rsp] + vmovdqu xmm1,XMMWORD[rdi] + add rdi,0x10 + and rdx,0xf + je NEAR $L$_done_1_EmbgEptodyewbFa + +$L$_steal_cipher_1_EmbgEptodyewbFa: + xor r11,r11 + shl rax,1 + adc rbx,rbx + cmovc r11,r10 + xor rax,r11 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rbx + vmovdqa64 xmm10,xmm9 + vmovdqa xmm9,XMMWORD[16+rsp] + vpxor xmm1,xmm1,xmm9 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vpxor xmm1,xmm1,xmm9 + add rsi,0x10 + vmovdqa xmm0,xmm10 + vmovdqa xmm8,xmm1 + jmp NEAR $L$_steal_cipher_EmbgEptodyewbFa + +$L$_done_1_EmbgEptodyewbFa: + vpxor xmm1,xmm1,xmm9 + vmovdqu xmm0,XMMWORD[rcx] + vpxor xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[16+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[32+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[48+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[64+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[80+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[96+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[112+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[128+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[144+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[160+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[176+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[192+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[208+rcx] + vaesdec xmm1,xmm1,xmm0 + vmovdqu xmm0,XMMWORD[224+rcx] + vaesdeclast xmm1,xmm1,xmm0 + vpxor xmm1,xmm1,xmm9 + add rsi,0x10 + vmovdqa xmm8,xmm1 + jmp NEAR $L$_done_EmbgEptodyewbFa + +section .rdata rdata align=8 +ALIGN 16 + +vpshufb_shf_table: + DQ 0x8786858483828100,0x8f8e8d8c8b8a8988 + DQ 0x0706050403020100,0x000e0d0c0b0a0908 + +mask1: + DQ 0x8080808080808080,0x8080808080808080 + +const_dq3210: + DQ 0,0,1,1,2,2,3,3 +const_dq5678: + DQ 8,8,7,7,6,6,5,5 +const_dq7654: + DQ 4,4,5,5,6,6,7,7 +const_dq1234: + DQ 4,4,3,3,2,2,1,1 + +shufb_15_7: +DB 15,0xff,0xff,0xff,0xff,0xff,0xff,0xff,7,0xff,0xff +DB 0xff,0xff,0xff,0xff,0xff + +section .text code align=64 + diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/bsaes-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/bsaes-x86_64.asm index 0755ee4346daea..a10e7650b3ab3c 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/bsaes-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/bsaes-x86_64.asm @@ -1615,6 +1615,7 @@ global ossl_bsaes_xts_encrypt ALIGN 16 ossl_bsaes_xts_encrypt: +DB 243,15,30,250 mov rax,rsp $L$xts_enc_prologue: push rbp @@ -2110,6 +2111,7 @@ global ossl_bsaes_xts_decrypt ALIGN 16 ossl_bsaes_xts_decrypt: +DB 243,15,30,250 mov rax,rsp $L$xts_dec_prologue: push rbp @@ -2625,6 +2627,7 @@ $L$xts_dec_epilogue: +section .rdata rdata align=64 ALIGN 64 _bsaes_const: $L$M0ISR: @@ -2676,13 +2679,13 @@ $L$M0: DQ 0x02060a0e03070b0f,0x0004080c0105090d $L$63: DQ 0x6363636363636363,0x6363636363636363 +ALIGN 64 + DB 66,105,116,45,115,108,105,99,101,100,32,65,69,83,32,102 DB 111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44 DB 32,69,109,105,108,105,97,32,75,195,164,115,112,101,114,44 DB 32,80,101,116,101,114,32,83,99,104,119,97,98,101,44,32 DB 65,110,100,121,32,80,111,108,121,97,107,111,118,0 -ALIGN 64 - EXTERN __imp_RtlVirtualUnwind ALIGN 16 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/vpaes-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/vpaes-x86_64.asm index 8fb98f25d2d6f5..8321f694c79c4d 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/vpaes-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/aes/vpaes-x86_64.asm @@ -941,6 +941,7 @@ _vpaes_preheat: +section .rdata rdata align=64 ALIGN 64 _vpaes_consts: $L$k_inv: @@ -1036,13 +1037,13 @@ $L$k_dsbe: $L$k_dsbo: DQ 0x1387EA537EF94000,0xC7AA6DB9D4943E2D DQ 0x12D7560F93441D00,0xCA4B8159D8C58E9C +ALIGN 64 + DB 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 DB 111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54 DB 52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97 DB 109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32 DB 85,110,105,118,101,114,115,105,116,121,41,0 -ALIGN 64 - EXTERN __imp_RtlVirtualUnwind ALIGN 16 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-2k-avx512.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-2k-avx512.asm new file mode 100644 index 00000000000000..553761ef2f1cc3 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-2k-avx512.asm @@ -0,0 +1,1024 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +EXTERN OPENSSL_ia32cap_P +global ossl_rsaz_avx512ifma_eligible + +ALIGN 32 +ossl_rsaz_avx512ifma_eligible: + mov ecx,DWORD[((OPENSSL_ia32cap_P+8))] + xor eax,eax + and ecx,2149777408 + cmp ecx,2149777408 + cmove eax,ecx + DB 0F3h,0C3h ;repret + +section .text code align=64 + + +global ossl_rsaz_amm52x20_x1_ifma256 + +ALIGN 32 +ossl_rsaz_amm52x20_x1_ifma256: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ossl_rsaz_amm52x20_x1_ifma256: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + +DB 243,15,30,250 + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + +$L$ossl_rsaz_amm52x20_x1_ifma256_body: + + + vpxord ymm0,ymm0,ymm0 + vmovdqa64 ymm3,ymm0 + vmovdqa64 ymm16,ymm0 + vmovdqa64 ymm17,ymm0 + vmovdqa64 ymm18,ymm0 + vmovdqa64 ymm19,ymm0 + + xor r9d,r9d + + mov r11,rdx + mov rax,0xfffffffffffff + + + mov ebx,5 + +ALIGN 32 +$L$loop5: + mov r13,QWORD[r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm16,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm17,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm18,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm19,ymm1,YMMWORD[128+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm16,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm17,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm18,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm19,ymm2,YMMWORD[128+rcx] + + + valignq ymm3,ymm16,ymm3,1 + valignq ymm16,ymm17,ymm16,1 + valignq ymm17,ymm18,ymm17,1 + valignq ymm18,ymm19,ymm18,1 + valignq ymm19,ymm0,ymm19,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm16,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm17,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm18,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm19,ymm1,YMMWORD[128+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm16,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm17,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm18,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm19,ymm2,YMMWORD[128+rcx] + mov r13,QWORD[8+r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm16,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm17,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm18,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm19,ymm1,YMMWORD[128+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm16,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm17,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm18,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm19,ymm2,YMMWORD[128+rcx] + + + valignq ymm3,ymm16,ymm3,1 + valignq ymm16,ymm17,ymm16,1 + valignq ymm17,ymm18,ymm17,1 + valignq ymm18,ymm19,ymm18,1 + valignq ymm19,ymm0,ymm19,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm16,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm17,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm18,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm19,ymm1,YMMWORD[128+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm16,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm17,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm18,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm19,ymm2,YMMWORD[128+rcx] + mov r13,QWORD[16+r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm16,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm17,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm18,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm19,ymm1,YMMWORD[128+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm16,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm17,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm18,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm19,ymm2,YMMWORD[128+rcx] + + + valignq ymm3,ymm16,ymm3,1 + valignq ymm16,ymm17,ymm16,1 + valignq ymm17,ymm18,ymm17,1 + valignq ymm18,ymm19,ymm18,1 + valignq ymm19,ymm0,ymm19,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm16,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm17,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm18,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm19,ymm1,YMMWORD[128+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm16,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm17,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm18,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm19,ymm2,YMMWORD[128+rcx] + mov r13,QWORD[24+r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm16,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm17,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm18,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm19,ymm1,YMMWORD[128+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm16,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm17,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm18,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm19,ymm2,YMMWORD[128+rcx] + + + valignq ymm3,ymm16,ymm3,1 + valignq ymm16,ymm17,ymm16,1 + valignq ymm17,ymm18,ymm17,1 + valignq ymm18,ymm19,ymm18,1 + valignq ymm19,ymm0,ymm19,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm16,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm17,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm18,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm19,ymm1,YMMWORD[128+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm16,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm17,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm18,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm19,ymm2,YMMWORD[128+rcx] + lea r11,[32+r11] + dec ebx + jne NEAR $L$loop5 + + vpbroadcastq ymm0,r9 + vpblendd ymm3,ymm3,ymm0,3 + + + + vpsrlq ymm0,ymm3,52 + vpsrlq ymm1,ymm16,52 + vpsrlq ymm2,ymm17,52 + vpsrlq ymm25,ymm18,52 + vpsrlq ymm26,ymm19,52 + + + valignq ymm26,ymm26,ymm25,3 + valignq ymm25,ymm25,ymm2,3 + valignq ymm2,ymm2,ymm1,3 + valignq ymm1,ymm1,ymm0,3 + valignq ymm0,ymm0,YMMWORD[$L$zeros],3 + + + vpandq ymm3,ymm3,YMMWORD[$L$mask52x4] + vpandq ymm16,ymm16,YMMWORD[$L$mask52x4] + vpandq ymm17,ymm17,YMMWORD[$L$mask52x4] + vpandq ymm18,ymm18,YMMWORD[$L$mask52x4] + vpandq ymm19,ymm19,YMMWORD[$L$mask52x4] + + + vpaddq ymm3,ymm3,ymm0 + vpaddq ymm16,ymm16,ymm1 + vpaddq ymm17,ymm17,ymm2 + vpaddq ymm18,ymm18,ymm25 + vpaddq ymm19,ymm19,ymm26 + + + + vpcmpuq k1,ymm3,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm16,YMMWORD[$L$mask52x4],6 + vpcmpuq k3,ymm17,YMMWORD[$L$mask52x4],6 + vpcmpuq k4,ymm18,YMMWORD[$L$mask52x4],6 + vpcmpuq k5,ymm19,YMMWORD[$L$mask52x4],6 + kmovb r14d,k1 + kmovb r13d,k2 + kmovb r12d,k3 + kmovb r11d,k4 + kmovb r10d,k5 + + + vpcmpuq k1,ymm3,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm16,YMMWORD[$L$mask52x4],0 + vpcmpuq k3,ymm17,YMMWORD[$L$mask52x4],0 + vpcmpuq k4,ymm18,YMMWORD[$L$mask52x4],0 + vpcmpuq k5,ymm19,YMMWORD[$L$mask52x4],0 + kmovb r9d,k1 + kmovb r8d,k2 + kmovb ebx,k3 + kmovb ecx,k4 + kmovb edx,k5 + + + + shl r13b,4 + or r14b,r13b + shl r11b,4 + or r12b,r11b + + add r14b,r14b + adc r12b,r12b + adc r10b,r10b + + shl r8b,4 + or r9b,r8b + shl cl,4 + or bl,cl + + add r14b,r9b + adc r12b,bl + adc r10b,dl + + xor r14b,r9b + xor r12b,bl + xor r10b,dl + + kmovb k1,r14d + shr r14b,4 + kmovb k2,r14d + kmovb k3,r12d + shr r12b,4 + kmovb k4,r12d + kmovb k5,r10d + + + vpsubq ymm3{k1},ymm3,YMMWORD[$L$mask52x4] + vpsubq ymm16{k2},ymm16,YMMWORD[$L$mask52x4] + vpsubq ymm17{k3},ymm17,YMMWORD[$L$mask52x4] + vpsubq ymm18{k4},ymm18,YMMWORD[$L$mask52x4] + vpsubq ymm19{k5},ymm19,YMMWORD[$L$mask52x4] + + vpandq ymm3,ymm3,YMMWORD[$L$mask52x4] + vpandq ymm16,ymm16,YMMWORD[$L$mask52x4] + vpandq ymm17,ymm17,YMMWORD[$L$mask52x4] + vpandq ymm18,ymm18,YMMWORD[$L$mask52x4] + vpandq ymm19,ymm19,YMMWORD[$L$mask52x4] + + vmovdqu64 YMMWORD[rdi],ymm3 + vmovdqu64 YMMWORD[32+rdi],ymm16 + vmovdqu64 YMMWORD[64+rdi],ymm17 + vmovdqu64 YMMWORD[96+rdi],ymm18 + vmovdqu64 YMMWORD[128+rdi],ymm19 + + vzeroupper + mov r15,QWORD[rsp] + + mov r14,QWORD[8+rsp] + + mov r13,QWORD[16+rsp] + + mov r12,QWORD[24+rsp] + + mov rbp,QWORD[32+rsp] + + mov rbx,QWORD[40+rsp] + + lea rsp,[48+rsp] + +$L$ossl_rsaz_amm52x20_x1_ifma256_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ossl_rsaz_amm52x20_x1_ifma256: +section .rdata rdata align=32 +ALIGN 32 +$L$mask52x4: + DQ 0xfffffffffffff + DQ 0xfffffffffffff + DQ 0xfffffffffffff + DQ 0xfffffffffffff +section .text code align=64 + + +global ossl_rsaz_amm52x20_x2_ifma256 + +ALIGN 32 +ossl_rsaz_amm52x20_x2_ifma256: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ossl_rsaz_amm52x20_x2_ifma256: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + +DB 243,15,30,250 + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + +$L$ossl_rsaz_amm52x20_x2_ifma256_body: + + + vpxord ymm0,ymm0,ymm0 + vmovdqa64 ymm3,ymm0 + vmovdqa64 ymm16,ymm0 + vmovdqa64 ymm17,ymm0 + vmovdqa64 ymm18,ymm0 + vmovdqa64 ymm19,ymm0 + vmovdqa64 ymm4,ymm0 + vmovdqa64 ymm20,ymm0 + vmovdqa64 ymm21,ymm0 + vmovdqa64 ymm22,ymm0 + vmovdqa64 ymm23,ymm0 + + xor r9d,r9d + xor r15d,r15d + + mov r11,rdx + mov rax,0xfffffffffffff + + mov ebx,20 + +ALIGN 32 +$L$loop20: + mov r13,QWORD[r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,QWORD[r8] + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm16,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm17,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm18,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm19,ymm1,YMMWORD[128+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm16,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm17,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm18,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm19,ymm2,YMMWORD[128+rcx] + + + valignq ymm3,ymm16,ymm3,1 + valignq ymm16,ymm17,ymm16,1 + valignq ymm17,ymm18,ymm17,1 + valignq ymm18,ymm19,ymm18,1 + valignq ymm19,ymm0,ymm19,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm16,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm17,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm18,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm19,ymm1,YMMWORD[128+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm16,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm17,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm18,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm19,ymm2,YMMWORD[128+rcx] + mov r13,QWORD[160+r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[160+rsi] + mulx r12,r13,r13 + add r15,r13 + mov r10,r12 + adc r10,0 + + mov r13,QWORD[8+r8] + imul r13,r15 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[160+rcx] + mulx r12,r13,r13 + add r15,r13 + adc r10,r12 + + shr r15,52 + sal r10,12 + or r15,r10 + + vpmadd52luq ymm4,ymm1,YMMWORD[160+rsi] + vpmadd52luq ymm20,ymm1,YMMWORD[192+rsi] + vpmadd52luq ymm21,ymm1,YMMWORD[224+rsi] + vpmadd52luq ymm22,ymm1,YMMWORD[256+rsi] + vpmadd52luq ymm23,ymm1,YMMWORD[288+rsi] + + vpmadd52luq ymm4,ymm2,YMMWORD[160+rcx] + vpmadd52luq ymm20,ymm2,YMMWORD[192+rcx] + vpmadd52luq ymm21,ymm2,YMMWORD[224+rcx] + vpmadd52luq ymm22,ymm2,YMMWORD[256+rcx] + vpmadd52luq ymm23,ymm2,YMMWORD[288+rcx] + + + valignq ymm4,ymm20,ymm4,1 + valignq ymm20,ymm21,ymm20,1 + valignq ymm21,ymm22,ymm21,1 + valignq ymm22,ymm23,ymm22,1 + valignq ymm23,ymm0,ymm23,1 + + vmovq r13,xmm4 + add r15,r13 + + vpmadd52huq ymm4,ymm1,YMMWORD[160+rsi] + vpmadd52huq ymm20,ymm1,YMMWORD[192+rsi] + vpmadd52huq ymm21,ymm1,YMMWORD[224+rsi] + vpmadd52huq ymm22,ymm1,YMMWORD[256+rsi] + vpmadd52huq ymm23,ymm1,YMMWORD[288+rsi] + + vpmadd52huq ymm4,ymm2,YMMWORD[160+rcx] + vpmadd52huq ymm20,ymm2,YMMWORD[192+rcx] + vpmadd52huq ymm21,ymm2,YMMWORD[224+rcx] + vpmadd52huq ymm22,ymm2,YMMWORD[256+rcx] + vpmadd52huq ymm23,ymm2,YMMWORD[288+rcx] + lea r11,[8+r11] + dec ebx + jne NEAR $L$loop20 + + vpbroadcastq ymm0,r9 + vpblendd ymm3,ymm3,ymm0,3 + + + + vpsrlq ymm0,ymm3,52 + vpsrlq ymm1,ymm16,52 + vpsrlq ymm2,ymm17,52 + vpsrlq ymm25,ymm18,52 + vpsrlq ymm26,ymm19,52 + + + valignq ymm26,ymm26,ymm25,3 + valignq ymm25,ymm25,ymm2,3 + valignq ymm2,ymm2,ymm1,3 + valignq ymm1,ymm1,ymm0,3 + valignq ymm0,ymm0,YMMWORD[$L$zeros],3 + + + vpandq ymm3,ymm3,YMMWORD[$L$mask52x4] + vpandq ymm16,ymm16,YMMWORD[$L$mask52x4] + vpandq ymm17,ymm17,YMMWORD[$L$mask52x4] + vpandq ymm18,ymm18,YMMWORD[$L$mask52x4] + vpandq ymm19,ymm19,YMMWORD[$L$mask52x4] + + + vpaddq ymm3,ymm3,ymm0 + vpaddq ymm16,ymm16,ymm1 + vpaddq ymm17,ymm17,ymm2 + vpaddq ymm18,ymm18,ymm25 + vpaddq ymm19,ymm19,ymm26 + + + + vpcmpuq k1,ymm3,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm16,YMMWORD[$L$mask52x4],6 + vpcmpuq k3,ymm17,YMMWORD[$L$mask52x4],6 + vpcmpuq k4,ymm18,YMMWORD[$L$mask52x4],6 + vpcmpuq k5,ymm19,YMMWORD[$L$mask52x4],6 + kmovb r14d,k1 + kmovb r13d,k2 + kmovb r12d,k3 + kmovb r11d,k4 + kmovb r10d,k5 + + + vpcmpuq k1,ymm3,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm16,YMMWORD[$L$mask52x4],0 + vpcmpuq k3,ymm17,YMMWORD[$L$mask52x4],0 + vpcmpuq k4,ymm18,YMMWORD[$L$mask52x4],0 + vpcmpuq k5,ymm19,YMMWORD[$L$mask52x4],0 + kmovb r9d,k1 + kmovb r8d,k2 + kmovb ebx,k3 + kmovb ecx,k4 + kmovb edx,k5 + + + + shl r13b,4 + or r14b,r13b + shl r11b,4 + or r12b,r11b + + add r14b,r14b + adc r12b,r12b + adc r10b,r10b + + shl r8b,4 + or r9b,r8b + shl cl,4 + or bl,cl + + add r14b,r9b + adc r12b,bl + adc r10b,dl + + xor r14b,r9b + xor r12b,bl + xor r10b,dl + + kmovb k1,r14d + shr r14b,4 + kmovb k2,r14d + kmovb k3,r12d + shr r12b,4 + kmovb k4,r12d + kmovb k5,r10d + + + vpsubq ymm3{k1},ymm3,YMMWORD[$L$mask52x4] + vpsubq ymm16{k2},ymm16,YMMWORD[$L$mask52x4] + vpsubq ymm17{k3},ymm17,YMMWORD[$L$mask52x4] + vpsubq ymm18{k4},ymm18,YMMWORD[$L$mask52x4] + vpsubq ymm19{k5},ymm19,YMMWORD[$L$mask52x4] + + vpandq ymm3,ymm3,YMMWORD[$L$mask52x4] + vpandq ymm16,ymm16,YMMWORD[$L$mask52x4] + vpandq ymm17,ymm17,YMMWORD[$L$mask52x4] + vpandq ymm18,ymm18,YMMWORD[$L$mask52x4] + vpandq ymm19,ymm19,YMMWORD[$L$mask52x4] + + vpbroadcastq ymm0,r15 + vpblendd ymm4,ymm4,ymm0,3 + + + + vpsrlq ymm0,ymm4,52 + vpsrlq ymm1,ymm20,52 + vpsrlq ymm2,ymm21,52 + vpsrlq ymm25,ymm22,52 + vpsrlq ymm26,ymm23,52 + + + valignq ymm26,ymm26,ymm25,3 + valignq ymm25,ymm25,ymm2,3 + valignq ymm2,ymm2,ymm1,3 + valignq ymm1,ymm1,ymm0,3 + valignq ymm0,ymm0,YMMWORD[$L$zeros],3 + + + vpandq ymm4,ymm4,YMMWORD[$L$mask52x4] + vpandq ymm20,ymm20,YMMWORD[$L$mask52x4] + vpandq ymm21,ymm21,YMMWORD[$L$mask52x4] + vpandq ymm22,ymm22,YMMWORD[$L$mask52x4] + vpandq ymm23,ymm23,YMMWORD[$L$mask52x4] + + + vpaddq ymm4,ymm4,ymm0 + vpaddq ymm20,ymm20,ymm1 + vpaddq ymm21,ymm21,ymm2 + vpaddq ymm22,ymm22,ymm25 + vpaddq ymm23,ymm23,ymm26 + + + + vpcmpuq k1,ymm4,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm20,YMMWORD[$L$mask52x4],6 + vpcmpuq k3,ymm21,YMMWORD[$L$mask52x4],6 + vpcmpuq k4,ymm22,YMMWORD[$L$mask52x4],6 + vpcmpuq k5,ymm23,YMMWORD[$L$mask52x4],6 + kmovb r14d,k1 + kmovb r13d,k2 + kmovb r12d,k3 + kmovb r11d,k4 + kmovb r10d,k5 + + + vpcmpuq k1,ymm4,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm20,YMMWORD[$L$mask52x4],0 + vpcmpuq k3,ymm21,YMMWORD[$L$mask52x4],0 + vpcmpuq k4,ymm22,YMMWORD[$L$mask52x4],0 + vpcmpuq k5,ymm23,YMMWORD[$L$mask52x4],0 + kmovb r9d,k1 + kmovb r8d,k2 + kmovb ebx,k3 + kmovb ecx,k4 + kmovb edx,k5 + + + + shl r13b,4 + or r14b,r13b + shl r11b,4 + or r12b,r11b + + add r14b,r14b + adc r12b,r12b + adc r10b,r10b + + shl r8b,4 + or r9b,r8b + shl cl,4 + or bl,cl + + add r14b,r9b + adc r12b,bl + adc r10b,dl + + xor r14b,r9b + xor r12b,bl + xor r10b,dl + + kmovb k1,r14d + shr r14b,4 + kmovb k2,r14d + kmovb k3,r12d + shr r12b,4 + kmovb k4,r12d + kmovb k5,r10d + + + vpsubq ymm4{k1},ymm4,YMMWORD[$L$mask52x4] + vpsubq ymm20{k2},ymm20,YMMWORD[$L$mask52x4] + vpsubq ymm21{k3},ymm21,YMMWORD[$L$mask52x4] + vpsubq ymm22{k4},ymm22,YMMWORD[$L$mask52x4] + vpsubq ymm23{k5},ymm23,YMMWORD[$L$mask52x4] + + vpandq ymm4,ymm4,YMMWORD[$L$mask52x4] + vpandq ymm20,ymm20,YMMWORD[$L$mask52x4] + vpandq ymm21,ymm21,YMMWORD[$L$mask52x4] + vpandq ymm22,ymm22,YMMWORD[$L$mask52x4] + vpandq ymm23,ymm23,YMMWORD[$L$mask52x4] + + vmovdqu64 YMMWORD[rdi],ymm3 + vmovdqu64 YMMWORD[32+rdi],ymm16 + vmovdqu64 YMMWORD[64+rdi],ymm17 + vmovdqu64 YMMWORD[96+rdi],ymm18 + vmovdqu64 YMMWORD[128+rdi],ymm19 + + vmovdqu64 YMMWORD[160+rdi],ymm4 + vmovdqu64 YMMWORD[192+rdi],ymm20 + vmovdqu64 YMMWORD[224+rdi],ymm21 + vmovdqu64 YMMWORD[256+rdi],ymm22 + vmovdqu64 YMMWORD[288+rdi],ymm23 + + vzeroupper + mov r15,QWORD[rsp] + + mov r14,QWORD[8+rsp] + + mov r13,QWORD[16+rsp] + + mov r12,QWORD[24+rsp] + + mov rbp,QWORD[32+rsp] + + mov rbx,QWORD[40+rsp] + + lea rsp,[48+rsp] + +$L$ossl_rsaz_amm52x20_x2_ifma256_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ossl_rsaz_amm52x20_x2_ifma256: +section .text code align=64 + + +ALIGN 32 +global ossl_extract_multiplier_2x20_win5 + +ossl_extract_multiplier_2x20_win5: + +DB 243,15,30,250 + vmovdqa64 ymm24,YMMWORD[$L$ones] + vpbroadcastq ymm22,r8 + vpbroadcastq ymm23,r9 + lea rax,[10240+rdx] + + + vpxor xmm0,xmm0,xmm0 + vmovdqa64 ymm21,ymm0 + vmovdqa64 ymm1,ymm0 + vmovdqa64 ymm2,ymm0 + vmovdqa64 ymm3,ymm0 + vmovdqa64 ymm4,ymm0 + vmovdqa64 ymm5,ymm0 + vmovdqa64 ymm16,ymm0 + vmovdqa64 ymm17,ymm0 + vmovdqa64 ymm18,ymm0 + vmovdqa64 ymm19,ymm0 + +ALIGN 32 +$L$loop: + vpcmpq k1,ymm22,ymm21,0 + vpcmpq k2,ymm23,ymm21,0 + vmovdqu64 ymm20,YMMWORD[rdx] + vpblendmq ymm0{k1},ymm0,ymm20 + vmovdqu64 ymm20,YMMWORD[32+rdx] + vpblendmq ymm1{k1},ymm1,ymm20 + vmovdqu64 ymm20,YMMWORD[64+rdx] + vpblendmq ymm2{k1},ymm2,ymm20 + vmovdqu64 ymm20,YMMWORD[96+rdx] + vpblendmq ymm3{k1},ymm3,ymm20 + vmovdqu64 ymm20,YMMWORD[128+rdx] + vpblendmq ymm4{k1},ymm4,ymm20 + vmovdqu64 ymm20,YMMWORD[160+rdx] + vpblendmq ymm5{k2},ymm5,ymm20 + vmovdqu64 ymm20,YMMWORD[192+rdx] + vpblendmq ymm16{k2},ymm16,ymm20 + vmovdqu64 ymm20,YMMWORD[224+rdx] + vpblendmq ymm17{k2},ymm17,ymm20 + vmovdqu64 ymm20,YMMWORD[256+rdx] + vpblendmq ymm18{k2},ymm18,ymm20 + vmovdqu64 ymm20,YMMWORD[288+rdx] + vpblendmq ymm19{k2},ymm19,ymm20 + vpaddq ymm21,ymm21,ymm24 + add rdx,320 + cmp rax,rdx + jne NEAR $L$loop + vmovdqu64 YMMWORD[rcx],ymm0 + vmovdqu64 YMMWORD[32+rcx],ymm1 + vmovdqu64 YMMWORD[64+rcx],ymm2 + vmovdqu64 YMMWORD[96+rcx],ymm3 + vmovdqu64 YMMWORD[128+rcx],ymm4 + vmovdqu64 YMMWORD[160+rcx],ymm5 + vmovdqu64 YMMWORD[192+rcx],ymm16 + vmovdqu64 YMMWORD[224+rcx],ymm17 + vmovdqu64 YMMWORD[256+rcx],ymm18 + vmovdqu64 YMMWORD[288+rcx],ymm19 + DB 0F3h,0C3h ;repret + + +section .rdata rdata align=32 +ALIGN 32 +$L$ones: + DQ 1,1,1,1 +$L$zeros: + DQ 0,0,0,0 +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +rsaz_def_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov rax,QWORD[152+r8] + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + + lea rax,[48+rax] + + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + mov r15,QWORD[((-48))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + +$L$common_seh_tail: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_ossl_rsaz_amm52x20_x1_ifma256 wrt ..imagebase + DD $L$SEH_end_ossl_rsaz_amm52x20_x1_ifma256 wrt ..imagebase + DD $L$SEH_info_ossl_rsaz_amm52x20_x1_ifma256 wrt ..imagebase + + DD $L$SEH_begin_ossl_rsaz_amm52x20_x2_ifma256 wrt ..imagebase + DD $L$SEH_end_ossl_rsaz_amm52x20_x2_ifma256 wrt ..imagebase + DD $L$SEH_info_ossl_rsaz_amm52x20_x2_ifma256 wrt ..imagebase + +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_ossl_rsaz_amm52x20_x1_ifma256: +DB 9,0,0,0 + DD rsaz_def_handler wrt ..imagebase + DD $L$ossl_rsaz_amm52x20_x1_ifma256_body wrt ..imagebase,$L$ossl_rsaz_amm52x20_x1_ifma256_epilogue wrt ..imagebase +$L$SEH_info_ossl_rsaz_amm52x20_x2_ifma256: +DB 9,0,0,0 + DD rsaz_def_handler wrt ..imagebase + DD $L$ossl_rsaz_amm52x20_x2_ifma256_body wrt ..imagebase,$L$ossl_rsaz_amm52x20_x2_ifma256_epilogue wrt ..imagebase diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-2k-avxifma.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-2k-avxifma.asm new file mode 100644 index 00000000000000..0041c71f3d0b62 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-2k-avxifma.asm @@ -0,0 +1,24 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + +global ossl_rsaz_avxifma_eligible + +ossl_rsaz_avxifma_eligible: + xor eax,eax + DB 0F3h,0C3h ;repret + + +global ossl_rsaz_amm52x20_x1_avxifma256 +global ossl_rsaz_amm52x20_x2_avxifma256 +global ossl_extract_multiplier_2x20_win5_avx + +ossl_rsaz_amm52x20_x1_avxifma256: +ossl_rsaz_amm52x20_x2_avxifma256: +ossl_extract_multiplier_2x20_win5_avx: +DB 0x0f,0x0b + DB 0F3h,0C3h ;repret + diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-3k-avx512.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-3k-avx512.asm new file mode 100644 index 00000000000000..0865c61efbc872 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-3k-avx512.asm @@ -0,0 +1,1490 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + +global ossl_rsaz_amm52x30_x1_ifma256 + +ALIGN 32 +ossl_rsaz_amm52x30_x1_ifma256: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ossl_rsaz_amm52x30_x1_ifma256: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + +DB 243,15,30,250 + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + lea rsp,[((-168))+rsp] + vmovdqa64 XMMWORD[rsp],xmm6 + vmovdqa64 XMMWORD[16+rsp],xmm7 + vmovdqa64 XMMWORD[32+rsp],xmm8 + vmovdqa64 XMMWORD[48+rsp],xmm9 + vmovdqa64 XMMWORD[64+rsp],xmm10 + vmovdqa64 XMMWORD[80+rsp],xmm11 + vmovdqa64 XMMWORD[96+rsp],xmm12 + vmovdqa64 XMMWORD[112+rsp],xmm13 + vmovdqa64 XMMWORD[128+rsp],xmm14 + vmovdqa64 XMMWORD[144+rsp],xmm15 +$L$ossl_rsaz_amm52x30_x1_ifma256_body: + + vpxord ymm0,ymm0,ymm0 + vmovdqa64 ymm3,ymm0 + vmovdqa64 ymm4,ymm0 + vmovdqa64 ymm5,ymm0 + vmovdqa64 ymm6,ymm0 + vmovdqa64 ymm7,ymm0 + vmovdqa64 ymm8,ymm0 + vmovdqa64 ymm9,ymm0 + vmovdqa64 ymm10,ymm0 + + xor r9d,r9d + + mov r11,rdx + mov rax,0xfffffffffffff + + + mov ebx,7 + +ALIGN 32 +$L$loop7: + mov r13,QWORD[r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52luq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52luq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52luq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52luq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52luq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52luq ymm10,ymm2,YMMWORD[224+rcx] + + + valignq ymm3,ymm4,ymm3,1 + valignq ymm4,ymm5,ymm4,1 + valignq ymm5,ymm6,ymm5,1 + valignq ymm6,ymm7,ymm6,1 + valignq ymm7,ymm8,ymm7,1 + valignq ymm8,ymm9,ymm8,1 + valignq ymm9,ymm10,ymm9,1 + valignq ymm10,ymm0,ymm10,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52huq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52huq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52huq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52huq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52huq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52huq ymm10,ymm2,YMMWORD[224+rcx] + mov r13,QWORD[8+r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52luq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52luq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52luq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52luq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52luq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52luq ymm10,ymm2,YMMWORD[224+rcx] + + + valignq ymm3,ymm4,ymm3,1 + valignq ymm4,ymm5,ymm4,1 + valignq ymm5,ymm6,ymm5,1 + valignq ymm6,ymm7,ymm6,1 + valignq ymm7,ymm8,ymm7,1 + valignq ymm8,ymm9,ymm8,1 + valignq ymm9,ymm10,ymm9,1 + valignq ymm10,ymm0,ymm10,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52huq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52huq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52huq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52huq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52huq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52huq ymm10,ymm2,YMMWORD[224+rcx] + mov r13,QWORD[16+r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52luq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52luq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52luq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52luq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52luq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52luq ymm10,ymm2,YMMWORD[224+rcx] + + + valignq ymm3,ymm4,ymm3,1 + valignq ymm4,ymm5,ymm4,1 + valignq ymm5,ymm6,ymm5,1 + valignq ymm6,ymm7,ymm6,1 + valignq ymm7,ymm8,ymm7,1 + valignq ymm8,ymm9,ymm8,1 + valignq ymm9,ymm10,ymm9,1 + valignq ymm10,ymm0,ymm10,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52huq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52huq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52huq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52huq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52huq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52huq ymm10,ymm2,YMMWORD[224+rcx] + mov r13,QWORD[24+r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52luq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52luq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52luq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52luq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52luq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52luq ymm10,ymm2,YMMWORD[224+rcx] + + + valignq ymm3,ymm4,ymm3,1 + valignq ymm4,ymm5,ymm4,1 + valignq ymm5,ymm6,ymm5,1 + valignq ymm6,ymm7,ymm6,1 + valignq ymm7,ymm8,ymm7,1 + valignq ymm8,ymm9,ymm8,1 + valignq ymm9,ymm10,ymm9,1 + valignq ymm10,ymm0,ymm10,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52huq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52huq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52huq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52huq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52huq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52huq ymm10,ymm2,YMMWORD[224+rcx] + lea r11,[32+r11] + dec ebx + jne NEAR $L$loop7 + mov r13,QWORD[r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52luq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52luq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52luq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52luq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52luq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52luq ymm10,ymm2,YMMWORD[224+rcx] + + + valignq ymm3,ymm4,ymm3,1 + valignq ymm4,ymm5,ymm4,1 + valignq ymm5,ymm6,ymm5,1 + valignq ymm6,ymm7,ymm6,1 + valignq ymm7,ymm8,ymm7,1 + valignq ymm8,ymm9,ymm8,1 + valignq ymm9,ymm10,ymm9,1 + valignq ymm10,ymm0,ymm10,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52huq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52huq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52huq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52huq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52huq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52huq ymm10,ymm2,YMMWORD[224+rcx] + mov r13,QWORD[8+r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52luq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52luq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52luq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52luq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52luq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52luq ymm10,ymm2,YMMWORD[224+rcx] + + + valignq ymm3,ymm4,ymm3,1 + valignq ymm4,ymm5,ymm4,1 + valignq ymm5,ymm6,ymm5,1 + valignq ymm6,ymm7,ymm6,1 + valignq ymm7,ymm8,ymm7,1 + valignq ymm8,ymm9,ymm8,1 + valignq ymm9,ymm10,ymm9,1 + valignq ymm10,ymm0,ymm10,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52huq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52huq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52huq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52huq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52huq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52huq ymm10,ymm2,YMMWORD[224+rcx] + + vpbroadcastq ymm0,r9 + vpblendd ymm3,ymm3,ymm0,3 + + + + vpsrlq ymm0,ymm3,52 + vpsrlq ymm1,ymm4,52 + vpsrlq ymm2,ymm5,52 + vpsrlq ymm19,ymm6,52 + vpsrlq ymm20,ymm7,52 + vpsrlq ymm21,ymm8,52 + vpsrlq ymm22,ymm9,52 + vpsrlq ymm23,ymm10,52 + + + valignq ymm23,ymm23,ymm22,3 + valignq ymm22,ymm22,ymm21,3 + valignq ymm21,ymm21,ymm20,3 + valignq ymm20,ymm20,ymm19,3 + valignq ymm19,ymm19,ymm2,3 + valignq ymm2,ymm2,ymm1,3 + valignq ymm1,ymm1,ymm0,3 + valignq ymm0,ymm0,YMMWORD[$L$zeros],3 + + + vpandq ymm3,ymm3,YMMWORD[$L$mask52x4] + vpandq ymm4,ymm4,YMMWORD[$L$mask52x4] + vpandq ymm5,ymm5,YMMWORD[$L$mask52x4] + vpandq ymm6,ymm6,YMMWORD[$L$mask52x4] + vpandq ymm7,ymm7,YMMWORD[$L$mask52x4] + vpandq ymm8,ymm8,YMMWORD[$L$mask52x4] + vpandq ymm9,ymm9,YMMWORD[$L$mask52x4] + vpandq ymm10,ymm10,YMMWORD[$L$mask52x4] + + + vpaddq ymm3,ymm3,ymm0 + vpaddq ymm4,ymm4,ymm1 + vpaddq ymm5,ymm5,ymm2 + vpaddq ymm6,ymm6,ymm19 + vpaddq ymm7,ymm7,ymm20 + vpaddq ymm8,ymm8,ymm21 + vpaddq ymm9,ymm9,ymm22 + vpaddq ymm10,ymm10,ymm23 + + + + vpcmpuq k1,ymm3,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm4,YMMWORD[$L$mask52x4],6 + kmovb r14d,k1 + kmovb r13d,k2 + shl r13b,4 + or r14b,r13b + + vpcmpuq k1,ymm5,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm6,YMMWORD[$L$mask52x4],6 + kmovb r13d,k1 + kmovb r12d,k2 + shl r12b,4 + or r13b,r12b + + vpcmpuq k1,ymm7,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm8,YMMWORD[$L$mask52x4],6 + kmovb r12d,k1 + kmovb r11d,k2 + shl r11b,4 + or r12b,r11b + + vpcmpuq k1,ymm9,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm10,YMMWORD[$L$mask52x4],6 + kmovb r11d,k1 + kmovb r10d,k2 + shl r10b,4 + or r11b,r10b + + add r14b,r14b + adc r13b,r13b + adc r12b,r12b + adc r11b,r11b + + + vpcmpuq k1,ymm3,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm4,YMMWORD[$L$mask52x4],0 + kmovb r9d,k1 + kmovb r8d,k2 + shl r8b,4 + or r9b,r8b + + vpcmpuq k1,ymm5,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm6,YMMWORD[$L$mask52x4],0 + kmovb r8d,k1 + kmovb edx,k2 + shl dl,4 + or r8b,dl + + vpcmpuq k1,ymm7,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm8,YMMWORD[$L$mask52x4],0 + kmovb edx,k1 + kmovb ecx,k2 + shl cl,4 + or dl,cl + + vpcmpuq k1,ymm9,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm10,YMMWORD[$L$mask52x4],0 + kmovb ecx,k1 + kmovb ebx,k2 + shl bl,4 + or cl,bl + + add r14b,r9b + adc r13b,r8b + adc r12b,dl + adc r11b,cl + + xor r14b,r9b + xor r13b,r8b + xor r12b,dl + xor r11b,cl + + kmovb k1,r14d + shr r14b,4 + kmovb k2,r14d + kmovb k3,r13d + shr r13b,4 + kmovb k4,r13d + kmovb k5,r12d + shr r12b,4 + kmovb k6,r12d + kmovb k7,r11d + + vpsubq ymm3{k1},ymm3,YMMWORD[$L$mask52x4] + vpsubq ymm4{k2},ymm4,YMMWORD[$L$mask52x4] + vpsubq ymm5{k3},ymm5,YMMWORD[$L$mask52x4] + vpsubq ymm6{k4},ymm6,YMMWORD[$L$mask52x4] + vpsubq ymm7{k5},ymm7,YMMWORD[$L$mask52x4] + vpsubq ymm8{k6},ymm8,YMMWORD[$L$mask52x4] + vpsubq ymm9{k7},ymm9,YMMWORD[$L$mask52x4] + + vpandq ymm3,ymm3,YMMWORD[$L$mask52x4] + vpandq ymm4,ymm4,YMMWORD[$L$mask52x4] + vpandq ymm5,ymm5,YMMWORD[$L$mask52x4] + vpandq ymm6,ymm6,YMMWORD[$L$mask52x4] + vpandq ymm7,ymm7,YMMWORD[$L$mask52x4] + vpandq ymm8,ymm8,YMMWORD[$L$mask52x4] + vpandq ymm9,ymm9,YMMWORD[$L$mask52x4] + + shr r11b,4 + kmovb k1,r11d + + vpsubq ymm10{k1},ymm10,YMMWORD[$L$mask52x4] + + vpandq ymm10,ymm10,YMMWORD[$L$mask52x4] + + vmovdqu64 YMMWORD[rdi],ymm3 + vmovdqu64 YMMWORD[32+rdi],ymm4 + vmovdqu64 YMMWORD[64+rdi],ymm5 + vmovdqu64 YMMWORD[96+rdi],ymm6 + vmovdqu64 YMMWORD[128+rdi],ymm7 + vmovdqu64 YMMWORD[160+rdi],ymm8 + vmovdqu64 YMMWORD[192+rdi],ymm9 + vmovdqu64 YMMWORD[224+rdi],ymm10 + + vzeroupper + lea rax,[rsp] + + vmovdqa64 xmm6,XMMWORD[rax] + vmovdqa64 xmm7,XMMWORD[16+rax] + vmovdqa64 xmm8,XMMWORD[32+rax] + vmovdqa64 xmm9,XMMWORD[48+rax] + vmovdqa64 xmm10,XMMWORD[64+rax] + vmovdqa64 xmm11,XMMWORD[80+rax] + vmovdqa64 xmm12,XMMWORD[96+rax] + vmovdqa64 xmm13,XMMWORD[112+rax] + vmovdqa64 xmm14,XMMWORD[128+rax] + vmovdqa64 xmm15,XMMWORD[144+rax] + lea rax,[168+rsp] + mov r15,QWORD[rax] + + mov r14,QWORD[8+rax] + + mov r13,QWORD[16+rax] + + mov r12,QWORD[24+rax] + + mov rbp,QWORD[32+rax] + + mov rbx,QWORD[40+rax] + + lea rsp,[48+rax] + +$L$ossl_rsaz_amm52x30_x1_ifma256_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ossl_rsaz_amm52x30_x1_ifma256: +section .rdata rdata align=32 +ALIGN 32 +$L$mask52x4: + DQ 0xfffffffffffff + DQ 0xfffffffffffff + DQ 0xfffffffffffff + DQ 0xfffffffffffff +section .text code align=64 + + +global ossl_rsaz_amm52x30_x2_ifma256 + +ALIGN 32 +ossl_rsaz_amm52x30_x2_ifma256: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ossl_rsaz_amm52x30_x2_ifma256: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + +DB 243,15,30,250 + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + lea rsp,[((-168))+rsp] + vmovdqa64 XMMWORD[rsp],xmm6 + vmovdqa64 XMMWORD[16+rsp],xmm7 + vmovdqa64 XMMWORD[32+rsp],xmm8 + vmovdqa64 XMMWORD[48+rsp],xmm9 + vmovdqa64 XMMWORD[64+rsp],xmm10 + vmovdqa64 XMMWORD[80+rsp],xmm11 + vmovdqa64 XMMWORD[96+rsp],xmm12 + vmovdqa64 XMMWORD[112+rsp],xmm13 + vmovdqa64 XMMWORD[128+rsp],xmm14 + vmovdqa64 XMMWORD[144+rsp],xmm15 +$L$ossl_rsaz_amm52x30_x2_ifma256_body: + + vpxord ymm0,ymm0,ymm0 + vmovdqa64 ymm3,ymm0 + vmovdqa64 ymm4,ymm0 + vmovdqa64 ymm5,ymm0 + vmovdqa64 ymm6,ymm0 + vmovdqa64 ymm7,ymm0 + vmovdqa64 ymm8,ymm0 + vmovdqa64 ymm9,ymm0 + vmovdqa64 ymm10,ymm0 + + vmovdqa64 ymm11,ymm0 + vmovdqa64 ymm12,ymm0 + vmovdqa64 ymm13,ymm0 + vmovdqa64 ymm14,ymm0 + vmovdqa64 ymm15,ymm0 + vmovdqa64 ymm16,ymm0 + vmovdqa64 ymm17,ymm0 + vmovdqa64 ymm18,ymm0 + + + xor r9d,r9d + xor r15d,r15d + + mov r11,rdx + mov rax,0xfffffffffffff + + mov ebx,30 + +ALIGN 32 +$L$loop30: + mov r13,QWORD[r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,QWORD[r8] + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52luq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52luq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52luq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52luq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52luq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52luq ymm10,ymm2,YMMWORD[224+rcx] + + + valignq ymm3,ymm4,ymm3,1 + valignq ymm4,ymm5,ymm4,1 + valignq ymm5,ymm6,ymm5,1 + valignq ymm6,ymm7,ymm6,1 + valignq ymm7,ymm8,ymm7,1 + valignq ymm8,ymm9,ymm8,1 + valignq ymm9,ymm10,ymm9,1 + valignq ymm10,ymm0,ymm10,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52huq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52huq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52huq ymm10,ymm1,YMMWORD[224+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52huq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52huq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52huq ymm10,ymm2,YMMWORD[224+rcx] + mov r13,QWORD[256+r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[256+rsi] + mulx r12,r13,r13 + add r15,r13 + mov r10,r12 + adc r10,0 + + mov r13,QWORD[8+r8] + imul r13,r15 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[256+rcx] + mulx r12,r13,r13 + add r15,r13 + adc r10,r12 + + shr r15,52 + sal r10,12 + or r15,r10 + + vpmadd52luq ymm11,ymm1,YMMWORD[256+rsi] + vpmadd52luq ymm12,ymm1,YMMWORD[288+rsi] + vpmadd52luq ymm13,ymm1,YMMWORD[320+rsi] + vpmadd52luq ymm14,ymm1,YMMWORD[352+rsi] + vpmadd52luq ymm15,ymm1,YMMWORD[384+rsi] + vpmadd52luq ymm16,ymm1,YMMWORD[416+rsi] + vpmadd52luq ymm17,ymm1,YMMWORD[448+rsi] + vpmadd52luq ymm18,ymm1,YMMWORD[480+rsi] + + vpmadd52luq ymm11,ymm2,YMMWORD[256+rcx] + vpmadd52luq ymm12,ymm2,YMMWORD[288+rcx] + vpmadd52luq ymm13,ymm2,YMMWORD[320+rcx] + vpmadd52luq ymm14,ymm2,YMMWORD[352+rcx] + vpmadd52luq ymm15,ymm2,YMMWORD[384+rcx] + vpmadd52luq ymm16,ymm2,YMMWORD[416+rcx] + vpmadd52luq ymm17,ymm2,YMMWORD[448+rcx] + vpmadd52luq ymm18,ymm2,YMMWORD[480+rcx] + + + valignq ymm11,ymm12,ymm11,1 + valignq ymm12,ymm13,ymm12,1 + valignq ymm13,ymm14,ymm13,1 + valignq ymm14,ymm15,ymm14,1 + valignq ymm15,ymm16,ymm15,1 + valignq ymm16,ymm17,ymm16,1 + valignq ymm17,ymm18,ymm17,1 + valignq ymm18,ymm0,ymm18,1 + + vmovq r13,xmm11 + add r15,r13 + + vpmadd52huq ymm11,ymm1,YMMWORD[256+rsi] + vpmadd52huq ymm12,ymm1,YMMWORD[288+rsi] + vpmadd52huq ymm13,ymm1,YMMWORD[320+rsi] + vpmadd52huq ymm14,ymm1,YMMWORD[352+rsi] + vpmadd52huq ymm15,ymm1,YMMWORD[384+rsi] + vpmadd52huq ymm16,ymm1,YMMWORD[416+rsi] + vpmadd52huq ymm17,ymm1,YMMWORD[448+rsi] + vpmadd52huq ymm18,ymm1,YMMWORD[480+rsi] + + vpmadd52huq ymm11,ymm2,YMMWORD[256+rcx] + vpmadd52huq ymm12,ymm2,YMMWORD[288+rcx] + vpmadd52huq ymm13,ymm2,YMMWORD[320+rcx] + vpmadd52huq ymm14,ymm2,YMMWORD[352+rcx] + vpmadd52huq ymm15,ymm2,YMMWORD[384+rcx] + vpmadd52huq ymm16,ymm2,YMMWORD[416+rcx] + vpmadd52huq ymm17,ymm2,YMMWORD[448+rcx] + vpmadd52huq ymm18,ymm2,YMMWORD[480+rcx] + lea r11,[8+r11] + dec ebx + jne NEAR $L$loop30 + + vpbroadcastq ymm0,r9 + vpblendd ymm3,ymm3,ymm0,3 + + + + vpsrlq ymm0,ymm3,52 + vpsrlq ymm1,ymm4,52 + vpsrlq ymm2,ymm5,52 + vpsrlq ymm19,ymm6,52 + vpsrlq ymm20,ymm7,52 + vpsrlq ymm21,ymm8,52 + vpsrlq ymm22,ymm9,52 + vpsrlq ymm23,ymm10,52 + + + valignq ymm23,ymm23,ymm22,3 + valignq ymm22,ymm22,ymm21,3 + valignq ymm21,ymm21,ymm20,3 + valignq ymm20,ymm20,ymm19,3 + valignq ymm19,ymm19,ymm2,3 + valignq ymm2,ymm2,ymm1,3 + valignq ymm1,ymm1,ymm0,3 + valignq ymm0,ymm0,YMMWORD[$L$zeros],3 + + + vpandq ymm3,ymm3,YMMWORD[$L$mask52x4] + vpandq ymm4,ymm4,YMMWORD[$L$mask52x4] + vpandq ymm5,ymm5,YMMWORD[$L$mask52x4] + vpandq ymm6,ymm6,YMMWORD[$L$mask52x4] + vpandq ymm7,ymm7,YMMWORD[$L$mask52x4] + vpandq ymm8,ymm8,YMMWORD[$L$mask52x4] + vpandq ymm9,ymm9,YMMWORD[$L$mask52x4] + vpandq ymm10,ymm10,YMMWORD[$L$mask52x4] + + + vpaddq ymm3,ymm3,ymm0 + vpaddq ymm4,ymm4,ymm1 + vpaddq ymm5,ymm5,ymm2 + vpaddq ymm6,ymm6,ymm19 + vpaddq ymm7,ymm7,ymm20 + vpaddq ymm8,ymm8,ymm21 + vpaddq ymm9,ymm9,ymm22 + vpaddq ymm10,ymm10,ymm23 + + + + vpcmpuq k1,ymm3,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm4,YMMWORD[$L$mask52x4],6 + kmovb r14d,k1 + kmovb r13d,k2 + shl r13b,4 + or r14b,r13b + + vpcmpuq k1,ymm5,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm6,YMMWORD[$L$mask52x4],6 + kmovb r13d,k1 + kmovb r12d,k2 + shl r12b,4 + or r13b,r12b + + vpcmpuq k1,ymm7,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm8,YMMWORD[$L$mask52x4],6 + kmovb r12d,k1 + kmovb r11d,k2 + shl r11b,4 + or r12b,r11b + + vpcmpuq k1,ymm9,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm10,YMMWORD[$L$mask52x4],6 + kmovb r11d,k1 + kmovb r10d,k2 + shl r10b,4 + or r11b,r10b + + add r14b,r14b + adc r13b,r13b + adc r12b,r12b + adc r11b,r11b + + + vpcmpuq k1,ymm3,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm4,YMMWORD[$L$mask52x4],0 + kmovb r9d,k1 + kmovb r8d,k2 + shl r8b,4 + or r9b,r8b + + vpcmpuq k1,ymm5,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm6,YMMWORD[$L$mask52x4],0 + kmovb r8d,k1 + kmovb edx,k2 + shl dl,4 + or r8b,dl + + vpcmpuq k1,ymm7,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm8,YMMWORD[$L$mask52x4],0 + kmovb edx,k1 + kmovb ecx,k2 + shl cl,4 + or dl,cl + + vpcmpuq k1,ymm9,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm10,YMMWORD[$L$mask52x4],0 + kmovb ecx,k1 + kmovb ebx,k2 + shl bl,4 + or cl,bl + + add r14b,r9b + adc r13b,r8b + adc r12b,dl + adc r11b,cl + + xor r14b,r9b + xor r13b,r8b + xor r12b,dl + xor r11b,cl + + kmovb k1,r14d + shr r14b,4 + kmovb k2,r14d + kmovb k3,r13d + shr r13b,4 + kmovb k4,r13d + kmovb k5,r12d + shr r12b,4 + kmovb k6,r12d + kmovb k7,r11d + + vpsubq ymm3{k1},ymm3,YMMWORD[$L$mask52x4] + vpsubq ymm4{k2},ymm4,YMMWORD[$L$mask52x4] + vpsubq ymm5{k3},ymm5,YMMWORD[$L$mask52x4] + vpsubq ymm6{k4},ymm6,YMMWORD[$L$mask52x4] + vpsubq ymm7{k5},ymm7,YMMWORD[$L$mask52x4] + vpsubq ymm8{k6},ymm8,YMMWORD[$L$mask52x4] + vpsubq ymm9{k7},ymm9,YMMWORD[$L$mask52x4] + + vpandq ymm3,ymm3,YMMWORD[$L$mask52x4] + vpandq ymm4,ymm4,YMMWORD[$L$mask52x4] + vpandq ymm5,ymm5,YMMWORD[$L$mask52x4] + vpandq ymm6,ymm6,YMMWORD[$L$mask52x4] + vpandq ymm7,ymm7,YMMWORD[$L$mask52x4] + vpandq ymm8,ymm8,YMMWORD[$L$mask52x4] + vpandq ymm9,ymm9,YMMWORD[$L$mask52x4] + + shr r11b,4 + kmovb k1,r11d + + vpsubq ymm10{k1},ymm10,YMMWORD[$L$mask52x4] + + vpandq ymm10,ymm10,YMMWORD[$L$mask52x4] + + vpbroadcastq ymm0,r15 + vpblendd ymm11,ymm11,ymm0,3 + + + + vpsrlq ymm0,ymm11,52 + vpsrlq ymm1,ymm12,52 + vpsrlq ymm2,ymm13,52 + vpsrlq ymm19,ymm14,52 + vpsrlq ymm20,ymm15,52 + vpsrlq ymm21,ymm16,52 + vpsrlq ymm22,ymm17,52 + vpsrlq ymm23,ymm18,52 + + + valignq ymm23,ymm23,ymm22,3 + valignq ymm22,ymm22,ymm21,3 + valignq ymm21,ymm21,ymm20,3 + valignq ymm20,ymm20,ymm19,3 + valignq ymm19,ymm19,ymm2,3 + valignq ymm2,ymm2,ymm1,3 + valignq ymm1,ymm1,ymm0,3 + valignq ymm0,ymm0,YMMWORD[$L$zeros],3 + + + vpandq ymm11,ymm11,YMMWORD[$L$mask52x4] + vpandq ymm12,ymm12,YMMWORD[$L$mask52x4] + vpandq ymm13,ymm13,YMMWORD[$L$mask52x4] + vpandq ymm14,ymm14,YMMWORD[$L$mask52x4] + vpandq ymm15,ymm15,YMMWORD[$L$mask52x4] + vpandq ymm16,ymm16,YMMWORD[$L$mask52x4] + vpandq ymm17,ymm17,YMMWORD[$L$mask52x4] + vpandq ymm18,ymm18,YMMWORD[$L$mask52x4] + + + vpaddq ymm11,ymm11,ymm0 + vpaddq ymm12,ymm12,ymm1 + vpaddq ymm13,ymm13,ymm2 + vpaddq ymm14,ymm14,ymm19 + vpaddq ymm15,ymm15,ymm20 + vpaddq ymm16,ymm16,ymm21 + vpaddq ymm17,ymm17,ymm22 + vpaddq ymm18,ymm18,ymm23 + + + + vpcmpuq k1,ymm11,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm12,YMMWORD[$L$mask52x4],6 + kmovb r14d,k1 + kmovb r13d,k2 + shl r13b,4 + or r14b,r13b + + vpcmpuq k1,ymm13,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm14,YMMWORD[$L$mask52x4],6 + kmovb r13d,k1 + kmovb r12d,k2 + shl r12b,4 + or r13b,r12b + + vpcmpuq k1,ymm15,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm16,YMMWORD[$L$mask52x4],6 + kmovb r12d,k1 + kmovb r11d,k2 + shl r11b,4 + or r12b,r11b + + vpcmpuq k1,ymm17,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm18,YMMWORD[$L$mask52x4],6 + kmovb r11d,k1 + kmovb r10d,k2 + shl r10b,4 + or r11b,r10b + + add r14b,r14b + adc r13b,r13b + adc r12b,r12b + adc r11b,r11b + + + vpcmpuq k1,ymm11,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm12,YMMWORD[$L$mask52x4],0 + kmovb r9d,k1 + kmovb r8d,k2 + shl r8b,4 + or r9b,r8b + + vpcmpuq k1,ymm13,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm14,YMMWORD[$L$mask52x4],0 + kmovb r8d,k1 + kmovb edx,k2 + shl dl,4 + or r8b,dl + + vpcmpuq k1,ymm15,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm16,YMMWORD[$L$mask52x4],0 + kmovb edx,k1 + kmovb ecx,k2 + shl cl,4 + or dl,cl + + vpcmpuq k1,ymm17,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm18,YMMWORD[$L$mask52x4],0 + kmovb ecx,k1 + kmovb ebx,k2 + shl bl,4 + or cl,bl + + add r14b,r9b + adc r13b,r8b + adc r12b,dl + adc r11b,cl + + xor r14b,r9b + xor r13b,r8b + xor r12b,dl + xor r11b,cl + + kmovb k1,r14d + shr r14b,4 + kmovb k2,r14d + kmovb k3,r13d + shr r13b,4 + kmovb k4,r13d + kmovb k5,r12d + shr r12b,4 + kmovb k6,r12d + kmovb k7,r11d + + vpsubq ymm11{k1},ymm11,YMMWORD[$L$mask52x4] + vpsubq ymm12{k2},ymm12,YMMWORD[$L$mask52x4] + vpsubq ymm13{k3},ymm13,YMMWORD[$L$mask52x4] + vpsubq ymm14{k4},ymm14,YMMWORD[$L$mask52x4] + vpsubq ymm15{k5},ymm15,YMMWORD[$L$mask52x4] + vpsubq ymm16{k6},ymm16,YMMWORD[$L$mask52x4] + vpsubq ymm17{k7},ymm17,YMMWORD[$L$mask52x4] + + vpandq ymm11,ymm11,YMMWORD[$L$mask52x4] + vpandq ymm12,ymm12,YMMWORD[$L$mask52x4] + vpandq ymm13,ymm13,YMMWORD[$L$mask52x4] + vpandq ymm14,ymm14,YMMWORD[$L$mask52x4] + vpandq ymm15,ymm15,YMMWORD[$L$mask52x4] + vpandq ymm16,ymm16,YMMWORD[$L$mask52x4] + vpandq ymm17,ymm17,YMMWORD[$L$mask52x4] + + shr r11b,4 + kmovb k1,r11d + + vpsubq ymm18{k1},ymm18,YMMWORD[$L$mask52x4] + + vpandq ymm18,ymm18,YMMWORD[$L$mask52x4] + + vmovdqu64 YMMWORD[rdi],ymm3 + vmovdqu64 YMMWORD[32+rdi],ymm4 + vmovdqu64 YMMWORD[64+rdi],ymm5 + vmovdqu64 YMMWORD[96+rdi],ymm6 + vmovdqu64 YMMWORD[128+rdi],ymm7 + vmovdqu64 YMMWORD[160+rdi],ymm8 + vmovdqu64 YMMWORD[192+rdi],ymm9 + vmovdqu64 YMMWORD[224+rdi],ymm10 + + vmovdqu64 YMMWORD[256+rdi],ymm11 + vmovdqu64 YMMWORD[288+rdi],ymm12 + vmovdqu64 YMMWORD[320+rdi],ymm13 + vmovdqu64 YMMWORD[352+rdi],ymm14 + vmovdqu64 YMMWORD[384+rdi],ymm15 + vmovdqu64 YMMWORD[416+rdi],ymm16 + vmovdqu64 YMMWORD[448+rdi],ymm17 + vmovdqu64 YMMWORD[480+rdi],ymm18 + + vzeroupper + lea rax,[rsp] + + vmovdqa64 xmm6,XMMWORD[rax] + vmovdqa64 xmm7,XMMWORD[16+rax] + vmovdqa64 xmm8,XMMWORD[32+rax] + vmovdqa64 xmm9,XMMWORD[48+rax] + vmovdqa64 xmm10,XMMWORD[64+rax] + vmovdqa64 xmm11,XMMWORD[80+rax] + vmovdqa64 xmm12,XMMWORD[96+rax] + vmovdqa64 xmm13,XMMWORD[112+rax] + vmovdqa64 xmm14,XMMWORD[128+rax] + vmovdqa64 xmm15,XMMWORD[144+rax] + lea rax,[168+rsp] + mov r15,QWORD[rax] + + mov r14,QWORD[8+rax] + + mov r13,QWORD[16+rax] + + mov r12,QWORD[24+rax] + + mov rbp,QWORD[32+rax] + + mov rbx,QWORD[40+rax] + + lea rsp,[48+rax] + +$L$ossl_rsaz_amm52x30_x2_ifma256_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ossl_rsaz_amm52x30_x2_ifma256: +section .text code align=64 + + +ALIGN 32 +global ossl_extract_multiplier_2x30_win5 + +ossl_extract_multiplier_2x30_win5: + +DB 243,15,30,250 + vmovdqa64 ymm30,YMMWORD[$L$ones] + vpbroadcastq ymm28,r8 + vpbroadcastq ymm29,r9 + lea rax,[16384+rdx] + + + vpxor xmm0,xmm0,xmm0 + vmovdqa64 ymm27,ymm0 + vmovdqa64 ymm1,ymm0 + vmovdqa64 ymm2,ymm0 + vmovdqa64 ymm3,ymm0 + vmovdqa64 ymm4,ymm0 + vmovdqa64 ymm5,ymm0 + vmovdqa64 ymm16,ymm0 + vmovdqa64 ymm17,ymm0 + vmovdqa64 ymm18,ymm0 + vmovdqa64 ymm19,ymm0 + vmovdqa64 ymm20,ymm0 + vmovdqa64 ymm21,ymm0 + vmovdqa64 ymm22,ymm0 + vmovdqa64 ymm23,ymm0 + vmovdqa64 ymm24,ymm0 + vmovdqa64 ymm25,ymm0 + +ALIGN 32 +$L$loop: + vpcmpq k1,ymm28,ymm27,0 + vpcmpq k2,ymm29,ymm27,0 + vmovdqu64 ymm26,YMMWORD[rdx] + vpblendmq ymm0{k1},ymm0,ymm26 + vmovdqu64 ymm26,YMMWORD[32+rdx] + vpblendmq ymm1{k1},ymm1,ymm26 + vmovdqu64 ymm26,YMMWORD[64+rdx] + vpblendmq ymm2{k1},ymm2,ymm26 + vmovdqu64 ymm26,YMMWORD[96+rdx] + vpblendmq ymm3{k1},ymm3,ymm26 + vmovdqu64 ymm26,YMMWORD[128+rdx] + vpblendmq ymm4{k1},ymm4,ymm26 + vmovdqu64 ymm26,YMMWORD[160+rdx] + vpblendmq ymm5{k1},ymm5,ymm26 + vmovdqu64 ymm26,YMMWORD[192+rdx] + vpblendmq ymm16{k1},ymm16,ymm26 + vmovdqu64 ymm26,YMMWORD[224+rdx] + vpblendmq ymm17{k1},ymm17,ymm26 + vmovdqu64 ymm26,YMMWORD[256+rdx] + vpblendmq ymm18{k2},ymm18,ymm26 + vmovdqu64 ymm26,YMMWORD[288+rdx] + vpblendmq ymm19{k2},ymm19,ymm26 + vmovdqu64 ymm26,YMMWORD[320+rdx] + vpblendmq ymm20{k2},ymm20,ymm26 + vmovdqu64 ymm26,YMMWORD[352+rdx] + vpblendmq ymm21{k2},ymm21,ymm26 + vmovdqu64 ymm26,YMMWORD[384+rdx] + vpblendmq ymm22{k2},ymm22,ymm26 + vmovdqu64 ymm26,YMMWORD[416+rdx] + vpblendmq ymm23{k2},ymm23,ymm26 + vmovdqu64 ymm26,YMMWORD[448+rdx] + vpblendmq ymm24{k2},ymm24,ymm26 + vmovdqu64 ymm26,YMMWORD[480+rdx] + vpblendmq ymm25{k2},ymm25,ymm26 + vpaddq ymm27,ymm27,ymm30 + add rdx,512 + cmp rax,rdx + jne NEAR $L$loop + vmovdqu64 YMMWORD[rcx],ymm0 + vmovdqu64 YMMWORD[32+rcx],ymm1 + vmovdqu64 YMMWORD[64+rcx],ymm2 + vmovdqu64 YMMWORD[96+rcx],ymm3 + vmovdqu64 YMMWORD[128+rcx],ymm4 + vmovdqu64 YMMWORD[160+rcx],ymm5 + vmovdqu64 YMMWORD[192+rcx],ymm16 + vmovdqu64 YMMWORD[224+rcx],ymm17 + vmovdqu64 YMMWORD[256+rcx],ymm18 + vmovdqu64 YMMWORD[288+rcx],ymm19 + vmovdqu64 YMMWORD[320+rcx],ymm20 + vmovdqu64 YMMWORD[352+rcx],ymm21 + vmovdqu64 YMMWORD[384+rcx],ymm22 + vmovdqu64 YMMWORD[416+rcx],ymm23 + vmovdqu64 YMMWORD[448+rcx],ymm24 + vmovdqu64 YMMWORD[480+rcx],ymm25 + + DB 0F3h,0C3h ;repret + + +section .rdata rdata align=32 +ALIGN 32 +$L$ones: + DQ 1,1,1,1 +$L$zeros: + DQ 0,0,0,0 +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +rsaz_avx_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + + mov rax,QWORD[152+r8] + + lea rsi,[rax] + lea rdi,[512+r8] + mov ecx,20 + DD 0xa548f3fc + + lea rax,[216+rax] + + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + mov r15,QWORD[((-48))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + +$L$common_seh_tail: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_ossl_rsaz_amm52x30_x1_ifma256 wrt ..imagebase + DD $L$SEH_end_ossl_rsaz_amm52x30_x1_ifma256 wrt ..imagebase + DD $L$SEH_info_ossl_rsaz_amm52x30_x1_ifma256 wrt ..imagebase + + DD $L$SEH_begin_ossl_rsaz_amm52x30_x2_ifma256 wrt ..imagebase + DD $L$SEH_end_ossl_rsaz_amm52x30_x2_ifma256 wrt ..imagebase + DD $L$SEH_info_ossl_rsaz_amm52x30_x2_ifma256 wrt ..imagebase + +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_ossl_rsaz_amm52x30_x1_ifma256: +DB 9,0,0,0 + DD rsaz_avx_handler wrt ..imagebase + DD $L$ossl_rsaz_amm52x30_x1_ifma256_body wrt ..imagebase,$L$ossl_rsaz_amm52x30_x1_ifma256_epilogue wrt ..imagebase +$L$SEH_info_ossl_rsaz_amm52x30_x2_ifma256: +DB 9,0,0,0 + DD rsaz_avx_handler wrt ..imagebase + DD $L$ossl_rsaz_amm52x30_x2_ifma256_body wrt ..imagebase,$L$ossl_rsaz_amm52x30_x2_ifma256_epilogue wrt ..imagebase diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-3k-avxifma.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-3k-avxifma.asm new file mode 100644 index 00000000000000..b7dc264139e7ad --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-3k-avxifma.asm @@ -0,0 +1,17 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + +global ossl_rsaz_amm52x30_x1_avxifma256 +global ossl_rsaz_amm52x30_x2_avxifma256 +global ossl_extract_multiplier_2x30_win5_avx + +ossl_rsaz_amm52x30_x1_avxifma256: +ossl_rsaz_amm52x30_x2_avxifma256: +ossl_extract_multiplier_2x30_win5_avx: +DB 0x0f,0x0b + DB 0F3h,0C3h ;repret + diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-4k-avx512.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-4k-avx512.asm new file mode 100644 index 00000000000000..4e11925db699e6 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-4k-avx512.asm @@ -0,0 +1,1533 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + +global ossl_rsaz_amm52x40_x1_ifma256 + +ALIGN 32 +ossl_rsaz_amm52x40_x1_ifma256: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ossl_rsaz_amm52x40_x1_ifma256: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + +DB 243,15,30,250 + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + lea rsp,[((-168))+rsp] + vmovdqa64 XMMWORD[rsp],xmm6 + vmovdqa64 XMMWORD[16+rsp],xmm7 + vmovdqa64 XMMWORD[32+rsp],xmm8 + vmovdqa64 XMMWORD[48+rsp],xmm9 + vmovdqa64 XMMWORD[64+rsp],xmm10 + vmovdqa64 XMMWORD[80+rsp],xmm11 + vmovdqa64 XMMWORD[96+rsp],xmm12 + vmovdqa64 XMMWORD[112+rsp],xmm13 + vmovdqa64 XMMWORD[128+rsp],xmm14 + vmovdqa64 XMMWORD[144+rsp],xmm15 +$L$ossl_rsaz_amm52x40_x1_ifma256_body: + + vpxord ymm0,ymm0,ymm0 + vmovdqa64 ymm3,ymm0 + vmovdqa64 ymm4,ymm0 + vmovdqa64 ymm5,ymm0 + vmovdqa64 ymm6,ymm0 + vmovdqa64 ymm7,ymm0 + vmovdqa64 ymm8,ymm0 + vmovdqa64 ymm9,ymm0 + vmovdqa64 ymm10,ymm0 + vmovdqa64 ymm11,ymm0 + vmovdqa64 ymm12,ymm0 + + xor r9d,r9d + + mov r11,rdx + mov rax,0xfffffffffffff + + + mov ebx,10 + +ALIGN 32 +$L$loop10: + mov r13,QWORD[r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52luq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52luq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52luq ymm10,ymm1,YMMWORD[224+rsi] + vpmadd52luq ymm11,ymm1,YMMWORD[256+rsi] + vpmadd52luq ymm12,ymm1,YMMWORD[288+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52luq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52luq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52luq ymm10,ymm2,YMMWORD[224+rcx] + vpmadd52luq ymm11,ymm2,YMMWORD[256+rcx] + vpmadd52luq ymm12,ymm2,YMMWORD[288+rcx] + + + valignq ymm3,ymm4,ymm3,1 + valignq ymm4,ymm5,ymm4,1 + valignq ymm5,ymm6,ymm5,1 + valignq ymm6,ymm7,ymm6,1 + valignq ymm7,ymm8,ymm7,1 + valignq ymm8,ymm9,ymm8,1 + valignq ymm9,ymm10,ymm9,1 + valignq ymm10,ymm11,ymm10,1 + valignq ymm11,ymm12,ymm11,1 + valignq ymm12,ymm0,ymm12,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52huq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52huq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52huq ymm10,ymm1,YMMWORD[224+rsi] + vpmadd52huq ymm11,ymm1,YMMWORD[256+rsi] + vpmadd52huq ymm12,ymm1,YMMWORD[288+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52huq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52huq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52huq ymm10,ymm2,YMMWORD[224+rcx] + vpmadd52huq ymm11,ymm2,YMMWORD[256+rcx] + vpmadd52huq ymm12,ymm2,YMMWORD[288+rcx] + mov r13,QWORD[8+r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52luq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52luq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52luq ymm10,ymm1,YMMWORD[224+rsi] + vpmadd52luq ymm11,ymm1,YMMWORD[256+rsi] + vpmadd52luq ymm12,ymm1,YMMWORD[288+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52luq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52luq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52luq ymm10,ymm2,YMMWORD[224+rcx] + vpmadd52luq ymm11,ymm2,YMMWORD[256+rcx] + vpmadd52luq ymm12,ymm2,YMMWORD[288+rcx] + + + valignq ymm3,ymm4,ymm3,1 + valignq ymm4,ymm5,ymm4,1 + valignq ymm5,ymm6,ymm5,1 + valignq ymm6,ymm7,ymm6,1 + valignq ymm7,ymm8,ymm7,1 + valignq ymm8,ymm9,ymm8,1 + valignq ymm9,ymm10,ymm9,1 + valignq ymm10,ymm11,ymm10,1 + valignq ymm11,ymm12,ymm11,1 + valignq ymm12,ymm0,ymm12,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52huq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52huq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52huq ymm10,ymm1,YMMWORD[224+rsi] + vpmadd52huq ymm11,ymm1,YMMWORD[256+rsi] + vpmadd52huq ymm12,ymm1,YMMWORD[288+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52huq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52huq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52huq ymm10,ymm2,YMMWORD[224+rcx] + vpmadd52huq ymm11,ymm2,YMMWORD[256+rcx] + vpmadd52huq ymm12,ymm2,YMMWORD[288+rcx] + mov r13,QWORD[16+r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52luq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52luq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52luq ymm10,ymm1,YMMWORD[224+rsi] + vpmadd52luq ymm11,ymm1,YMMWORD[256+rsi] + vpmadd52luq ymm12,ymm1,YMMWORD[288+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52luq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52luq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52luq ymm10,ymm2,YMMWORD[224+rcx] + vpmadd52luq ymm11,ymm2,YMMWORD[256+rcx] + vpmadd52luq ymm12,ymm2,YMMWORD[288+rcx] + + + valignq ymm3,ymm4,ymm3,1 + valignq ymm4,ymm5,ymm4,1 + valignq ymm5,ymm6,ymm5,1 + valignq ymm6,ymm7,ymm6,1 + valignq ymm7,ymm8,ymm7,1 + valignq ymm8,ymm9,ymm8,1 + valignq ymm9,ymm10,ymm9,1 + valignq ymm10,ymm11,ymm10,1 + valignq ymm11,ymm12,ymm11,1 + valignq ymm12,ymm0,ymm12,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52huq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52huq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52huq ymm10,ymm1,YMMWORD[224+rsi] + vpmadd52huq ymm11,ymm1,YMMWORD[256+rsi] + vpmadd52huq ymm12,ymm1,YMMWORD[288+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52huq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52huq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52huq ymm10,ymm2,YMMWORD[224+rcx] + vpmadd52huq ymm11,ymm2,YMMWORD[256+rcx] + vpmadd52huq ymm12,ymm2,YMMWORD[288+rcx] + mov r13,QWORD[24+r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,r8 + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52luq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52luq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52luq ymm10,ymm1,YMMWORD[224+rsi] + vpmadd52luq ymm11,ymm1,YMMWORD[256+rsi] + vpmadd52luq ymm12,ymm1,YMMWORD[288+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52luq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52luq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52luq ymm10,ymm2,YMMWORD[224+rcx] + vpmadd52luq ymm11,ymm2,YMMWORD[256+rcx] + vpmadd52luq ymm12,ymm2,YMMWORD[288+rcx] + + + valignq ymm3,ymm4,ymm3,1 + valignq ymm4,ymm5,ymm4,1 + valignq ymm5,ymm6,ymm5,1 + valignq ymm6,ymm7,ymm6,1 + valignq ymm7,ymm8,ymm7,1 + valignq ymm8,ymm9,ymm8,1 + valignq ymm9,ymm10,ymm9,1 + valignq ymm10,ymm11,ymm10,1 + valignq ymm11,ymm12,ymm11,1 + valignq ymm12,ymm0,ymm12,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52huq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52huq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52huq ymm10,ymm1,YMMWORD[224+rsi] + vpmadd52huq ymm11,ymm1,YMMWORD[256+rsi] + vpmadd52huq ymm12,ymm1,YMMWORD[288+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52huq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52huq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52huq ymm10,ymm2,YMMWORD[224+rcx] + vpmadd52huq ymm11,ymm2,YMMWORD[256+rcx] + vpmadd52huq ymm12,ymm2,YMMWORD[288+rcx] + lea r11,[32+r11] + dec ebx + jne NEAR $L$loop10 + + vpbroadcastq ymm0,r9 + vpblendd ymm3,ymm3,ymm0,3 + + + + vpsrlq ymm0,ymm3,52 + vpsrlq ymm1,ymm4,52 + vpsrlq ymm2,ymm5,52 + vpsrlq ymm23,ymm6,52 + vpsrlq ymm24,ymm7,52 + vpsrlq ymm25,ymm8,52 + vpsrlq ymm26,ymm9,52 + vpsrlq ymm27,ymm10,52 + vpsrlq ymm28,ymm11,52 + vpsrlq ymm29,ymm12,52 + + + valignq ymm29,ymm29,ymm28,3 + valignq ymm28,ymm28,ymm27,3 + valignq ymm27,ymm27,ymm26,3 + valignq ymm26,ymm26,ymm25,3 + valignq ymm25,ymm25,ymm24,3 + valignq ymm24,ymm24,ymm23,3 + valignq ymm23,ymm23,ymm2,3 + valignq ymm2,ymm2,ymm1,3 + valignq ymm1,ymm1,ymm0,3 + valignq ymm0,ymm0,YMMWORD[$L$zeros],3 + + + vpandq ymm3,ymm3,YMMWORD[$L$mask52x4] + vpandq ymm4,ymm4,YMMWORD[$L$mask52x4] + vpandq ymm5,ymm5,YMMWORD[$L$mask52x4] + vpandq ymm6,ymm6,YMMWORD[$L$mask52x4] + vpandq ymm7,ymm7,YMMWORD[$L$mask52x4] + vpandq ymm8,ymm8,YMMWORD[$L$mask52x4] + vpandq ymm9,ymm9,YMMWORD[$L$mask52x4] + vpandq ymm10,ymm10,YMMWORD[$L$mask52x4] + vpandq ymm11,ymm11,YMMWORD[$L$mask52x4] + vpandq ymm12,ymm12,YMMWORD[$L$mask52x4] + + + vpaddq ymm3,ymm3,ymm0 + vpaddq ymm4,ymm4,ymm1 + vpaddq ymm5,ymm5,ymm2 + vpaddq ymm6,ymm6,ymm23 + vpaddq ymm7,ymm7,ymm24 + vpaddq ymm8,ymm8,ymm25 + vpaddq ymm9,ymm9,ymm26 + vpaddq ymm10,ymm10,ymm27 + vpaddq ymm11,ymm11,ymm28 + vpaddq ymm12,ymm12,ymm29 + + + + vpcmpuq k1,ymm3,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm4,YMMWORD[$L$mask52x4],6 + kmovb r14d,k1 + kmovb r13d,k2 + shl r13b,4 + or r14b,r13b + + vpcmpuq k1,ymm5,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm6,YMMWORD[$L$mask52x4],6 + kmovb r13d,k1 + kmovb r12d,k2 + shl r12b,4 + or r13b,r12b + + vpcmpuq k1,ymm7,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm8,YMMWORD[$L$mask52x4],6 + kmovb r12d,k1 + kmovb r11d,k2 + shl r11b,4 + or r12b,r11b + + vpcmpuq k1,ymm9,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm10,YMMWORD[$L$mask52x4],6 + kmovb r11d,k1 + kmovb r10d,k2 + shl r10b,4 + or r11b,r10b + + vpcmpuq k1,ymm11,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm12,YMMWORD[$L$mask52x4],6 + kmovb r10d,k1 + kmovb r9d,k2 + shl r9b,4 + or r10b,r9b + + add r14b,r14b + adc r13b,r13b + adc r12b,r12b + adc r11b,r11b + adc r10b,r10b + + + vpcmpuq k1,ymm3,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm4,YMMWORD[$L$mask52x4],0 + kmovb r9d,k1 + kmovb r8d,k2 + shl r8b,4 + or r9b,r8b + + vpcmpuq k1,ymm5,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm6,YMMWORD[$L$mask52x4],0 + kmovb r8d,k1 + kmovb edx,k2 + shl dl,4 + or r8b,dl + + vpcmpuq k1,ymm7,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm8,YMMWORD[$L$mask52x4],0 + kmovb edx,k1 + kmovb ecx,k2 + shl cl,4 + or dl,cl + + vpcmpuq k1,ymm9,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm10,YMMWORD[$L$mask52x4],0 + kmovb ecx,k1 + kmovb ebx,k2 + shl bl,4 + or cl,bl + + vpcmpuq k1,ymm11,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm12,YMMWORD[$L$mask52x4],0 + kmovb ebx,k1 + kmovb eax,k2 + shl al,4 + or bl,al + + add r14b,r9b + adc r13b,r8b + adc r12b,dl + adc r11b,cl + adc r10b,bl + + xor r14b,r9b + xor r13b,r8b + xor r12b,dl + xor r11b,cl + xor r10b,bl + + kmovb k1,r14d + shr r14b,4 + kmovb k2,r14d + kmovb k3,r13d + shr r13b,4 + kmovb k4,r13d + kmovb k5,r12d + shr r12b,4 + kmovb k6,r12d + kmovb k7,r11d + + vpsubq ymm3{k1},ymm3,YMMWORD[$L$mask52x4] + vpsubq ymm4{k2},ymm4,YMMWORD[$L$mask52x4] + vpsubq ymm5{k3},ymm5,YMMWORD[$L$mask52x4] + vpsubq ymm6{k4},ymm6,YMMWORD[$L$mask52x4] + vpsubq ymm7{k5},ymm7,YMMWORD[$L$mask52x4] + vpsubq ymm8{k6},ymm8,YMMWORD[$L$mask52x4] + vpsubq ymm9{k7},ymm9,YMMWORD[$L$mask52x4] + + vpandq ymm3,ymm3,YMMWORD[$L$mask52x4] + vpandq ymm4,ymm4,YMMWORD[$L$mask52x4] + vpandq ymm5,ymm5,YMMWORD[$L$mask52x4] + vpandq ymm6,ymm6,YMMWORD[$L$mask52x4] + vpandq ymm7,ymm7,YMMWORD[$L$mask52x4] + vpandq ymm8,ymm8,YMMWORD[$L$mask52x4] + vpandq ymm9,ymm9,YMMWORD[$L$mask52x4] + + shr r11b,4 + kmovb k1,r11d + kmovb k2,r10d + shr r10b,4 + kmovb k3,r10d + + vpsubq ymm10{k1},ymm10,YMMWORD[$L$mask52x4] + vpsubq ymm11{k2},ymm11,YMMWORD[$L$mask52x4] + vpsubq ymm12{k3},ymm12,YMMWORD[$L$mask52x4] + + vpandq ymm10,ymm10,YMMWORD[$L$mask52x4] + vpandq ymm11,ymm11,YMMWORD[$L$mask52x4] + vpandq ymm12,ymm12,YMMWORD[$L$mask52x4] + + vmovdqu64 YMMWORD[rdi],ymm3 + vmovdqu64 YMMWORD[32+rdi],ymm4 + vmovdqu64 YMMWORD[64+rdi],ymm5 + vmovdqu64 YMMWORD[96+rdi],ymm6 + vmovdqu64 YMMWORD[128+rdi],ymm7 + vmovdqu64 YMMWORD[160+rdi],ymm8 + vmovdqu64 YMMWORD[192+rdi],ymm9 + vmovdqu64 YMMWORD[224+rdi],ymm10 + vmovdqu64 YMMWORD[256+rdi],ymm11 + vmovdqu64 YMMWORD[288+rdi],ymm12 + + vzeroupper + lea rax,[rsp] + + vmovdqa64 xmm6,XMMWORD[rax] + vmovdqa64 xmm7,XMMWORD[16+rax] + vmovdqa64 xmm8,XMMWORD[32+rax] + vmovdqa64 xmm9,XMMWORD[48+rax] + vmovdqa64 xmm10,XMMWORD[64+rax] + vmovdqa64 xmm11,XMMWORD[80+rax] + vmovdqa64 xmm12,XMMWORD[96+rax] + vmovdqa64 xmm13,XMMWORD[112+rax] + vmovdqa64 xmm14,XMMWORD[128+rax] + vmovdqa64 xmm15,XMMWORD[144+rax] + lea rax,[168+rsp] + mov r15,QWORD[rax] + + mov r14,QWORD[8+rax] + + mov r13,QWORD[16+rax] + + mov r12,QWORD[24+rax] + + mov rbp,QWORD[32+rax] + + mov rbx,QWORD[40+rax] + + lea rsp,[48+rax] + +$L$ossl_rsaz_amm52x40_x1_ifma256_epilogue: + + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ossl_rsaz_amm52x40_x1_ifma256: +section .rdata rdata align=32 +ALIGN 32 +$L$mask52x4: + DQ 0xfffffffffffff + DQ 0xfffffffffffff + DQ 0xfffffffffffff + DQ 0xfffffffffffff +section .text code align=64 + + +global ossl_rsaz_amm52x40_x2_ifma256 + +ALIGN 32 +ossl_rsaz_amm52x40_x2_ifma256: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ossl_rsaz_amm52x40_x2_ifma256: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + +DB 243,15,30,250 + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + lea rsp,[((-168))+rsp] + vmovdqa64 XMMWORD[rsp],xmm6 + vmovdqa64 XMMWORD[16+rsp],xmm7 + vmovdqa64 XMMWORD[32+rsp],xmm8 + vmovdqa64 XMMWORD[48+rsp],xmm9 + vmovdqa64 XMMWORD[64+rsp],xmm10 + vmovdqa64 XMMWORD[80+rsp],xmm11 + vmovdqa64 XMMWORD[96+rsp],xmm12 + vmovdqa64 XMMWORD[112+rsp],xmm13 + vmovdqa64 XMMWORD[128+rsp],xmm14 + vmovdqa64 XMMWORD[144+rsp],xmm15 +$L$ossl_rsaz_amm52x40_x2_ifma256_body: + + vpxord ymm0,ymm0,ymm0 + vmovdqa64 ymm3,ymm0 + vmovdqa64 ymm4,ymm0 + vmovdqa64 ymm5,ymm0 + vmovdqa64 ymm6,ymm0 + vmovdqa64 ymm7,ymm0 + vmovdqa64 ymm8,ymm0 + vmovdqa64 ymm9,ymm0 + vmovdqa64 ymm10,ymm0 + vmovdqa64 ymm11,ymm0 + vmovdqa64 ymm12,ymm0 + + vmovdqa64 ymm13,ymm0 + vmovdqa64 ymm14,ymm0 + vmovdqa64 ymm15,ymm0 + vmovdqa64 ymm16,ymm0 + vmovdqa64 ymm17,ymm0 + vmovdqa64 ymm18,ymm0 + vmovdqa64 ymm19,ymm0 + vmovdqa64 ymm20,ymm0 + vmovdqa64 ymm21,ymm0 + vmovdqa64 ymm22,ymm0 + + + xor r9d,r9d + xor r15d,r15d + + mov r11,rdx + mov rax,0xfffffffffffff + + mov ebx,40 + +ALIGN 32 +$L$loop40: + mov r13,QWORD[r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[rsi] + mulx r12,r13,r13 + add r9,r13 + mov r10,r12 + adc r10,0 + + mov r13,QWORD[r8] + imul r13,r9 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[rcx] + mulx r12,r13,r13 + add r9,r13 + adc r10,r12 + + shr r9,52 + sal r10,12 + or r9,r10 + + vpmadd52luq ymm3,ymm1,YMMWORD[rsi] + vpmadd52luq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52luq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52luq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52luq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52luq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52luq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52luq ymm10,ymm1,YMMWORD[224+rsi] + vpmadd52luq ymm11,ymm1,YMMWORD[256+rsi] + vpmadd52luq ymm12,ymm1,YMMWORD[288+rsi] + + vpmadd52luq ymm3,ymm2,YMMWORD[rcx] + vpmadd52luq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52luq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52luq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52luq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52luq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52luq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52luq ymm10,ymm2,YMMWORD[224+rcx] + vpmadd52luq ymm11,ymm2,YMMWORD[256+rcx] + vpmadd52luq ymm12,ymm2,YMMWORD[288+rcx] + + + valignq ymm3,ymm4,ymm3,1 + valignq ymm4,ymm5,ymm4,1 + valignq ymm5,ymm6,ymm5,1 + valignq ymm6,ymm7,ymm6,1 + valignq ymm7,ymm8,ymm7,1 + valignq ymm8,ymm9,ymm8,1 + valignq ymm9,ymm10,ymm9,1 + valignq ymm10,ymm11,ymm10,1 + valignq ymm11,ymm12,ymm11,1 + valignq ymm12,ymm0,ymm12,1 + + vmovq r13,xmm3 + add r9,r13 + + vpmadd52huq ymm3,ymm1,YMMWORD[rsi] + vpmadd52huq ymm4,ymm1,YMMWORD[32+rsi] + vpmadd52huq ymm5,ymm1,YMMWORD[64+rsi] + vpmadd52huq ymm6,ymm1,YMMWORD[96+rsi] + vpmadd52huq ymm7,ymm1,YMMWORD[128+rsi] + vpmadd52huq ymm8,ymm1,YMMWORD[160+rsi] + vpmadd52huq ymm9,ymm1,YMMWORD[192+rsi] + vpmadd52huq ymm10,ymm1,YMMWORD[224+rsi] + vpmadd52huq ymm11,ymm1,YMMWORD[256+rsi] + vpmadd52huq ymm12,ymm1,YMMWORD[288+rsi] + + vpmadd52huq ymm3,ymm2,YMMWORD[rcx] + vpmadd52huq ymm4,ymm2,YMMWORD[32+rcx] + vpmadd52huq ymm5,ymm2,YMMWORD[64+rcx] + vpmadd52huq ymm6,ymm2,YMMWORD[96+rcx] + vpmadd52huq ymm7,ymm2,YMMWORD[128+rcx] + vpmadd52huq ymm8,ymm2,YMMWORD[160+rcx] + vpmadd52huq ymm9,ymm2,YMMWORD[192+rcx] + vpmadd52huq ymm10,ymm2,YMMWORD[224+rcx] + vpmadd52huq ymm11,ymm2,YMMWORD[256+rcx] + vpmadd52huq ymm12,ymm2,YMMWORD[288+rcx] + mov r13,QWORD[320+r11] + + vpbroadcastq ymm1,r13 + mov rdx,QWORD[320+rsi] + mulx r12,r13,r13 + add r15,r13 + mov r10,r12 + adc r10,0 + + mov r13,QWORD[8+r8] + imul r13,r15 + and r13,rax + + vpbroadcastq ymm2,r13 + mov rdx,QWORD[320+rcx] + mulx r12,r13,r13 + add r15,r13 + adc r10,r12 + + shr r15,52 + sal r10,12 + or r15,r10 + + vpmadd52luq ymm13,ymm1,YMMWORD[320+rsi] + vpmadd52luq ymm14,ymm1,YMMWORD[352+rsi] + vpmadd52luq ymm15,ymm1,YMMWORD[384+rsi] + vpmadd52luq ymm16,ymm1,YMMWORD[416+rsi] + vpmadd52luq ymm17,ymm1,YMMWORD[448+rsi] + vpmadd52luq ymm18,ymm1,YMMWORD[480+rsi] + vpmadd52luq ymm19,ymm1,YMMWORD[512+rsi] + vpmadd52luq ymm20,ymm1,YMMWORD[544+rsi] + vpmadd52luq ymm21,ymm1,YMMWORD[576+rsi] + vpmadd52luq ymm22,ymm1,YMMWORD[608+rsi] + + vpmadd52luq ymm13,ymm2,YMMWORD[320+rcx] + vpmadd52luq ymm14,ymm2,YMMWORD[352+rcx] + vpmadd52luq ymm15,ymm2,YMMWORD[384+rcx] + vpmadd52luq ymm16,ymm2,YMMWORD[416+rcx] + vpmadd52luq ymm17,ymm2,YMMWORD[448+rcx] + vpmadd52luq ymm18,ymm2,YMMWORD[480+rcx] + vpmadd52luq ymm19,ymm2,YMMWORD[512+rcx] + vpmadd52luq ymm20,ymm2,YMMWORD[544+rcx] + vpmadd52luq ymm21,ymm2,YMMWORD[576+rcx] + vpmadd52luq ymm22,ymm2,YMMWORD[608+rcx] + + + valignq ymm13,ymm14,ymm13,1 + valignq ymm14,ymm15,ymm14,1 + valignq ymm15,ymm16,ymm15,1 + valignq ymm16,ymm17,ymm16,1 + valignq ymm17,ymm18,ymm17,1 + valignq ymm18,ymm19,ymm18,1 + valignq ymm19,ymm20,ymm19,1 + valignq ymm20,ymm21,ymm20,1 + valignq ymm21,ymm22,ymm21,1 + valignq ymm22,ymm0,ymm22,1 + + vmovq r13,xmm13 + add r15,r13 + + vpmadd52huq ymm13,ymm1,YMMWORD[320+rsi] + vpmadd52huq ymm14,ymm1,YMMWORD[352+rsi] + vpmadd52huq ymm15,ymm1,YMMWORD[384+rsi] + vpmadd52huq ymm16,ymm1,YMMWORD[416+rsi] + vpmadd52huq ymm17,ymm1,YMMWORD[448+rsi] + vpmadd52huq ymm18,ymm1,YMMWORD[480+rsi] + vpmadd52huq ymm19,ymm1,YMMWORD[512+rsi] + vpmadd52huq ymm20,ymm1,YMMWORD[544+rsi] + vpmadd52huq ymm21,ymm1,YMMWORD[576+rsi] + vpmadd52huq ymm22,ymm1,YMMWORD[608+rsi] + + vpmadd52huq ymm13,ymm2,YMMWORD[320+rcx] + vpmadd52huq ymm14,ymm2,YMMWORD[352+rcx] + vpmadd52huq ymm15,ymm2,YMMWORD[384+rcx] + vpmadd52huq ymm16,ymm2,YMMWORD[416+rcx] + vpmadd52huq ymm17,ymm2,YMMWORD[448+rcx] + vpmadd52huq ymm18,ymm2,YMMWORD[480+rcx] + vpmadd52huq ymm19,ymm2,YMMWORD[512+rcx] + vpmadd52huq ymm20,ymm2,YMMWORD[544+rcx] + vpmadd52huq ymm21,ymm2,YMMWORD[576+rcx] + vpmadd52huq ymm22,ymm2,YMMWORD[608+rcx] + lea r11,[8+r11] + dec ebx + jne NEAR $L$loop40 + + vpbroadcastq ymm0,r9 + vpblendd ymm3,ymm3,ymm0,3 + + + + vpsrlq ymm0,ymm3,52 + vpsrlq ymm1,ymm4,52 + vpsrlq ymm2,ymm5,52 + vpsrlq ymm23,ymm6,52 + vpsrlq ymm24,ymm7,52 + vpsrlq ymm25,ymm8,52 + vpsrlq ymm26,ymm9,52 + vpsrlq ymm27,ymm10,52 + vpsrlq ymm28,ymm11,52 + vpsrlq ymm29,ymm12,52 + + + valignq ymm29,ymm29,ymm28,3 + valignq ymm28,ymm28,ymm27,3 + valignq ymm27,ymm27,ymm26,3 + valignq ymm26,ymm26,ymm25,3 + valignq ymm25,ymm25,ymm24,3 + valignq ymm24,ymm24,ymm23,3 + valignq ymm23,ymm23,ymm2,3 + valignq ymm2,ymm2,ymm1,3 + valignq ymm1,ymm1,ymm0,3 + valignq ymm0,ymm0,YMMWORD[$L$zeros],3 + + + vpandq ymm3,ymm3,YMMWORD[$L$mask52x4] + vpandq ymm4,ymm4,YMMWORD[$L$mask52x4] + vpandq ymm5,ymm5,YMMWORD[$L$mask52x4] + vpandq ymm6,ymm6,YMMWORD[$L$mask52x4] + vpandq ymm7,ymm7,YMMWORD[$L$mask52x4] + vpandq ymm8,ymm8,YMMWORD[$L$mask52x4] + vpandq ymm9,ymm9,YMMWORD[$L$mask52x4] + vpandq ymm10,ymm10,YMMWORD[$L$mask52x4] + vpandq ymm11,ymm11,YMMWORD[$L$mask52x4] + vpandq ymm12,ymm12,YMMWORD[$L$mask52x4] + + + vpaddq ymm3,ymm3,ymm0 + vpaddq ymm4,ymm4,ymm1 + vpaddq ymm5,ymm5,ymm2 + vpaddq ymm6,ymm6,ymm23 + vpaddq ymm7,ymm7,ymm24 + vpaddq ymm8,ymm8,ymm25 + vpaddq ymm9,ymm9,ymm26 + vpaddq ymm10,ymm10,ymm27 + vpaddq ymm11,ymm11,ymm28 + vpaddq ymm12,ymm12,ymm29 + + + + vpcmpuq k1,ymm3,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm4,YMMWORD[$L$mask52x4],6 + kmovb r14d,k1 + kmovb r13d,k2 + shl r13b,4 + or r14b,r13b + + vpcmpuq k1,ymm5,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm6,YMMWORD[$L$mask52x4],6 + kmovb r13d,k1 + kmovb r12d,k2 + shl r12b,4 + or r13b,r12b + + vpcmpuq k1,ymm7,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm8,YMMWORD[$L$mask52x4],6 + kmovb r12d,k1 + kmovb r11d,k2 + shl r11b,4 + or r12b,r11b + + vpcmpuq k1,ymm9,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm10,YMMWORD[$L$mask52x4],6 + kmovb r11d,k1 + kmovb r10d,k2 + shl r10b,4 + or r11b,r10b + + vpcmpuq k1,ymm11,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm12,YMMWORD[$L$mask52x4],6 + kmovb r10d,k1 + kmovb r9d,k2 + shl r9b,4 + or r10b,r9b + + add r14b,r14b + adc r13b,r13b + adc r12b,r12b + adc r11b,r11b + adc r10b,r10b + + + vpcmpuq k1,ymm3,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm4,YMMWORD[$L$mask52x4],0 + kmovb r9d,k1 + kmovb r8d,k2 + shl r8b,4 + or r9b,r8b + + vpcmpuq k1,ymm5,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm6,YMMWORD[$L$mask52x4],0 + kmovb r8d,k1 + kmovb edx,k2 + shl dl,4 + or r8b,dl + + vpcmpuq k1,ymm7,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm8,YMMWORD[$L$mask52x4],0 + kmovb edx,k1 + kmovb ecx,k2 + shl cl,4 + or dl,cl + + vpcmpuq k1,ymm9,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm10,YMMWORD[$L$mask52x4],0 + kmovb ecx,k1 + kmovb ebx,k2 + shl bl,4 + or cl,bl + + vpcmpuq k1,ymm11,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm12,YMMWORD[$L$mask52x4],0 + kmovb ebx,k1 + kmovb eax,k2 + shl al,4 + or bl,al + + add r14b,r9b + adc r13b,r8b + adc r12b,dl + adc r11b,cl + adc r10b,bl + + xor r14b,r9b + xor r13b,r8b + xor r12b,dl + xor r11b,cl + xor r10b,bl + + kmovb k1,r14d + shr r14b,4 + kmovb k2,r14d + kmovb k3,r13d + shr r13b,4 + kmovb k4,r13d + kmovb k5,r12d + shr r12b,4 + kmovb k6,r12d + kmovb k7,r11d + + vpsubq ymm3{k1},ymm3,YMMWORD[$L$mask52x4] + vpsubq ymm4{k2},ymm4,YMMWORD[$L$mask52x4] + vpsubq ymm5{k3},ymm5,YMMWORD[$L$mask52x4] + vpsubq ymm6{k4},ymm6,YMMWORD[$L$mask52x4] + vpsubq ymm7{k5},ymm7,YMMWORD[$L$mask52x4] + vpsubq ymm8{k6},ymm8,YMMWORD[$L$mask52x4] + vpsubq ymm9{k7},ymm9,YMMWORD[$L$mask52x4] + + vpandq ymm3,ymm3,YMMWORD[$L$mask52x4] + vpandq ymm4,ymm4,YMMWORD[$L$mask52x4] + vpandq ymm5,ymm5,YMMWORD[$L$mask52x4] + vpandq ymm6,ymm6,YMMWORD[$L$mask52x4] + vpandq ymm7,ymm7,YMMWORD[$L$mask52x4] + vpandq ymm8,ymm8,YMMWORD[$L$mask52x4] + vpandq ymm9,ymm9,YMMWORD[$L$mask52x4] + + shr r11b,4 + kmovb k1,r11d + kmovb k2,r10d + shr r10b,4 + kmovb k3,r10d + + vpsubq ymm10{k1},ymm10,YMMWORD[$L$mask52x4] + vpsubq ymm11{k2},ymm11,YMMWORD[$L$mask52x4] + vpsubq ymm12{k3},ymm12,YMMWORD[$L$mask52x4] + + vpandq ymm10,ymm10,YMMWORD[$L$mask52x4] + vpandq ymm11,ymm11,YMMWORD[$L$mask52x4] + vpandq ymm12,ymm12,YMMWORD[$L$mask52x4] + + vpbroadcastq ymm0,r15 + vpblendd ymm13,ymm13,ymm0,3 + + + + vpsrlq ymm0,ymm13,52 + vpsrlq ymm1,ymm14,52 + vpsrlq ymm2,ymm15,52 + vpsrlq ymm23,ymm16,52 + vpsrlq ymm24,ymm17,52 + vpsrlq ymm25,ymm18,52 + vpsrlq ymm26,ymm19,52 + vpsrlq ymm27,ymm20,52 + vpsrlq ymm28,ymm21,52 + vpsrlq ymm29,ymm22,52 + + + valignq ymm29,ymm29,ymm28,3 + valignq ymm28,ymm28,ymm27,3 + valignq ymm27,ymm27,ymm26,3 + valignq ymm26,ymm26,ymm25,3 + valignq ymm25,ymm25,ymm24,3 + valignq ymm24,ymm24,ymm23,3 + valignq ymm23,ymm23,ymm2,3 + valignq ymm2,ymm2,ymm1,3 + valignq ymm1,ymm1,ymm0,3 + valignq ymm0,ymm0,YMMWORD[$L$zeros],3 + + + vpandq ymm13,ymm13,YMMWORD[$L$mask52x4] + vpandq ymm14,ymm14,YMMWORD[$L$mask52x4] + vpandq ymm15,ymm15,YMMWORD[$L$mask52x4] + vpandq ymm16,ymm16,YMMWORD[$L$mask52x4] + vpandq ymm17,ymm17,YMMWORD[$L$mask52x4] + vpandq ymm18,ymm18,YMMWORD[$L$mask52x4] + vpandq ymm19,ymm19,YMMWORD[$L$mask52x4] + vpandq ymm20,ymm20,YMMWORD[$L$mask52x4] + vpandq ymm21,ymm21,YMMWORD[$L$mask52x4] + vpandq ymm22,ymm22,YMMWORD[$L$mask52x4] + + + vpaddq ymm13,ymm13,ymm0 + vpaddq ymm14,ymm14,ymm1 + vpaddq ymm15,ymm15,ymm2 + vpaddq ymm16,ymm16,ymm23 + vpaddq ymm17,ymm17,ymm24 + vpaddq ymm18,ymm18,ymm25 + vpaddq ymm19,ymm19,ymm26 + vpaddq ymm20,ymm20,ymm27 + vpaddq ymm21,ymm21,ymm28 + vpaddq ymm22,ymm22,ymm29 + + + + vpcmpuq k1,ymm13,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm14,YMMWORD[$L$mask52x4],6 + kmovb r14d,k1 + kmovb r13d,k2 + shl r13b,4 + or r14b,r13b + + vpcmpuq k1,ymm15,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm16,YMMWORD[$L$mask52x4],6 + kmovb r13d,k1 + kmovb r12d,k2 + shl r12b,4 + or r13b,r12b + + vpcmpuq k1,ymm17,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm18,YMMWORD[$L$mask52x4],6 + kmovb r12d,k1 + kmovb r11d,k2 + shl r11b,4 + or r12b,r11b + + vpcmpuq k1,ymm19,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm20,YMMWORD[$L$mask52x4],6 + kmovb r11d,k1 + kmovb r10d,k2 + shl r10b,4 + or r11b,r10b + + vpcmpuq k1,ymm21,YMMWORD[$L$mask52x4],6 + vpcmpuq k2,ymm22,YMMWORD[$L$mask52x4],6 + kmovb r10d,k1 + kmovb r9d,k2 + shl r9b,4 + or r10b,r9b + + add r14b,r14b + adc r13b,r13b + adc r12b,r12b + adc r11b,r11b + adc r10b,r10b + + + vpcmpuq k1,ymm13,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm14,YMMWORD[$L$mask52x4],0 + kmovb r9d,k1 + kmovb r8d,k2 + shl r8b,4 + or r9b,r8b + + vpcmpuq k1,ymm15,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm16,YMMWORD[$L$mask52x4],0 + kmovb r8d,k1 + kmovb edx,k2 + shl dl,4 + or r8b,dl + + vpcmpuq k1,ymm17,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm18,YMMWORD[$L$mask52x4],0 + kmovb edx,k1 + kmovb ecx,k2 + shl cl,4 + or dl,cl + + vpcmpuq k1,ymm19,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm20,YMMWORD[$L$mask52x4],0 + kmovb ecx,k1 + kmovb ebx,k2 + shl bl,4 + or cl,bl + + vpcmpuq k1,ymm21,YMMWORD[$L$mask52x4],0 + vpcmpuq k2,ymm22,YMMWORD[$L$mask52x4],0 + kmovb ebx,k1 + kmovb eax,k2 + shl al,4 + or bl,al + + add r14b,r9b + adc r13b,r8b + adc r12b,dl + adc r11b,cl + adc r10b,bl + + xor r14b,r9b + xor r13b,r8b + xor r12b,dl + xor r11b,cl + xor r10b,bl + + kmovb k1,r14d + shr r14b,4 + kmovb k2,r14d + kmovb k3,r13d + shr r13b,4 + kmovb k4,r13d + kmovb k5,r12d + shr r12b,4 + kmovb k6,r12d + kmovb k7,r11d + + vpsubq ymm13{k1},ymm13,YMMWORD[$L$mask52x4] + vpsubq ymm14{k2},ymm14,YMMWORD[$L$mask52x4] + vpsubq ymm15{k3},ymm15,YMMWORD[$L$mask52x4] + vpsubq ymm16{k4},ymm16,YMMWORD[$L$mask52x4] + vpsubq ymm17{k5},ymm17,YMMWORD[$L$mask52x4] + vpsubq ymm18{k6},ymm18,YMMWORD[$L$mask52x4] + vpsubq ymm19{k7},ymm19,YMMWORD[$L$mask52x4] + + vpandq ymm13,ymm13,YMMWORD[$L$mask52x4] + vpandq ymm14,ymm14,YMMWORD[$L$mask52x4] + vpandq ymm15,ymm15,YMMWORD[$L$mask52x4] + vpandq ymm16,ymm16,YMMWORD[$L$mask52x4] + vpandq ymm17,ymm17,YMMWORD[$L$mask52x4] + vpandq ymm18,ymm18,YMMWORD[$L$mask52x4] + vpandq ymm19,ymm19,YMMWORD[$L$mask52x4] + + shr r11b,4 + kmovb k1,r11d + kmovb k2,r10d + shr r10b,4 + kmovb k3,r10d + + vpsubq ymm20{k1},ymm20,YMMWORD[$L$mask52x4] + vpsubq ymm21{k2},ymm21,YMMWORD[$L$mask52x4] + vpsubq ymm22{k3},ymm22,YMMWORD[$L$mask52x4] + + vpandq ymm20,ymm20,YMMWORD[$L$mask52x4] + vpandq ymm21,ymm21,YMMWORD[$L$mask52x4] + vpandq ymm22,ymm22,YMMWORD[$L$mask52x4] + + vmovdqu64 YMMWORD[rdi],ymm3 + vmovdqu64 YMMWORD[32+rdi],ymm4 + vmovdqu64 YMMWORD[64+rdi],ymm5 + vmovdqu64 YMMWORD[96+rdi],ymm6 + vmovdqu64 YMMWORD[128+rdi],ymm7 + vmovdqu64 YMMWORD[160+rdi],ymm8 + vmovdqu64 YMMWORD[192+rdi],ymm9 + vmovdqu64 YMMWORD[224+rdi],ymm10 + vmovdqu64 YMMWORD[256+rdi],ymm11 + vmovdqu64 YMMWORD[288+rdi],ymm12 + + vmovdqu64 YMMWORD[320+rdi],ymm13 + vmovdqu64 YMMWORD[352+rdi],ymm14 + vmovdqu64 YMMWORD[384+rdi],ymm15 + vmovdqu64 YMMWORD[416+rdi],ymm16 + vmovdqu64 YMMWORD[448+rdi],ymm17 + vmovdqu64 YMMWORD[480+rdi],ymm18 + vmovdqu64 YMMWORD[512+rdi],ymm19 + vmovdqu64 YMMWORD[544+rdi],ymm20 + vmovdqu64 YMMWORD[576+rdi],ymm21 + vmovdqu64 YMMWORD[608+rdi],ymm22 + + vzeroupper + lea rax,[rsp] + + vmovdqa64 xmm6,XMMWORD[rax] + vmovdqa64 xmm7,XMMWORD[16+rax] + vmovdqa64 xmm8,XMMWORD[32+rax] + vmovdqa64 xmm9,XMMWORD[48+rax] + vmovdqa64 xmm10,XMMWORD[64+rax] + vmovdqa64 xmm11,XMMWORD[80+rax] + vmovdqa64 xmm12,XMMWORD[96+rax] + vmovdqa64 xmm13,XMMWORD[112+rax] + vmovdqa64 xmm14,XMMWORD[128+rax] + vmovdqa64 xmm15,XMMWORD[144+rax] + lea rax,[168+rsp] + mov r15,QWORD[rax] + + mov r14,QWORD[8+rax] + + mov r13,QWORD[16+rax] + + mov r12,QWORD[24+rax] + + mov rbp,QWORD[32+rax] + + mov rbx,QWORD[40+rax] + + lea rsp,[48+rax] + +$L$ossl_rsaz_amm52x40_x2_ifma256_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ossl_rsaz_amm52x40_x2_ifma256: +section .text code align=64 + + +ALIGN 32 +global ossl_extract_multiplier_2x40_win5 + +ossl_extract_multiplier_2x40_win5: + +DB 243,15,30,250 + vmovdqa64 ymm24,YMMWORD[$L$ones] + vpbroadcastq ymm22,r8 + vpbroadcastq ymm23,r9 + lea rax,[20480+rdx] + + + mov r10,rdx + + + vpxor xmm0,xmm0,xmm0 + vmovdqa64 ymm1,ymm0 + vmovdqa64 ymm2,ymm0 + vmovdqa64 ymm3,ymm0 + vmovdqa64 ymm4,ymm0 + vmovdqa64 ymm5,ymm0 + vmovdqa64 ymm16,ymm0 + vmovdqa64 ymm17,ymm0 + vmovdqa64 ymm18,ymm0 + vmovdqa64 ymm19,ymm0 + vpxorq ymm21,ymm21,ymm21 +ALIGN 32 +$L$loop_0: + vpcmpq k1,ymm22,ymm21,0 + vmovdqu64 ymm20,YMMWORD[rdx] + vpblendmq ymm0{k1},ymm0,ymm20 + vmovdqu64 ymm20,YMMWORD[32+rdx] + vpblendmq ymm1{k1},ymm1,ymm20 + vmovdqu64 ymm20,YMMWORD[64+rdx] + vpblendmq ymm2{k1},ymm2,ymm20 + vmovdqu64 ymm20,YMMWORD[96+rdx] + vpblendmq ymm3{k1},ymm3,ymm20 + vmovdqu64 ymm20,YMMWORD[128+rdx] + vpblendmq ymm4{k1},ymm4,ymm20 + vmovdqu64 ymm20,YMMWORD[160+rdx] + vpblendmq ymm5{k1},ymm5,ymm20 + vmovdqu64 ymm20,YMMWORD[192+rdx] + vpblendmq ymm16{k1},ymm16,ymm20 + vmovdqu64 ymm20,YMMWORD[224+rdx] + vpblendmq ymm17{k1},ymm17,ymm20 + vmovdqu64 ymm20,YMMWORD[256+rdx] + vpblendmq ymm18{k1},ymm18,ymm20 + vmovdqu64 ymm20,YMMWORD[288+rdx] + vpblendmq ymm19{k1},ymm19,ymm20 + vpaddq ymm21,ymm21,ymm24 + add rdx,640 + cmp rax,rdx + jne NEAR $L$loop_0 + vmovdqu64 YMMWORD[rcx],ymm0 + vmovdqu64 YMMWORD[32+rcx],ymm1 + vmovdqu64 YMMWORD[64+rcx],ymm2 + vmovdqu64 YMMWORD[96+rcx],ymm3 + vmovdqu64 YMMWORD[128+rcx],ymm4 + vmovdqu64 YMMWORD[160+rcx],ymm5 + vmovdqu64 YMMWORD[192+rcx],ymm16 + vmovdqu64 YMMWORD[224+rcx],ymm17 + vmovdqu64 YMMWORD[256+rcx],ymm18 + vmovdqu64 YMMWORD[288+rcx],ymm19 + mov rdx,r10 + vpxorq ymm21,ymm21,ymm21 +ALIGN 32 +$L$loop_320: + vpcmpq k1,ymm23,ymm21,0 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpblendmq ymm0{k1},ymm0,ymm20 + vmovdqu64 ymm20,YMMWORD[352+rdx] + vpblendmq ymm1{k1},ymm1,ymm20 + vmovdqu64 ymm20,YMMWORD[384+rdx] + vpblendmq ymm2{k1},ymm2,ymm20 + vmovdqu64 ymm20,YMMWORD[416+rdx] + vpblendmq ymm3{k1},ymm3,ymm20 + vmovdqu64 ymm20,YMMWORD[448+rdx] + vpblendmq ymm4{k1},ymm4,ymm20 + vmovdqu64 ymm20,YMMWORD[480+rdx] + vpblendmq ymm5{k1},ymm5,ymm20 + vmovdqu64 ymm20,YMMWORD[512+rdx] + vpblendmq ymm16{k1},ymm16,ymm20 + vmovdqu64 ymm20,YMMWORD[544+rdx] + vpblendmq ymm17{k1},ymm17,ymm20 + vmovdqu64 ymm20,YMMWORD[576+rdx] + vpblendmq ymm18{k1},ymm18,ymm20 + vmovdqu64 ymm20,YMMWORD[608+rdx] + vpblendmq ymm19{k1},ymm19,ymm20 + vpaddq ymm21,ymm21,ymm24 + add rdx,640 + cmp rax,rdx + jne NEAR $L$loop_320 + vmovdqu64 YMMWORD[320+rcx],ymm0 + vmovdqu64 YMMWORD[352+rcx],ymm1 + vmovdqu64 YMMWORD[384+rcx],ymm2 + vmovdqu64 YMMWORD[416+rcx],ymm3 + vmovdqu64 YMMWORD[448+rcx],ymm4 + vmovdqu64 YMMWORD[480+rcx],ymm5 + vmovdqu64 YMMWORD[512+rcx],ymm16 + vmovdqu64 YMMWORD[544+rcx],ymm17 + vmovdqu64 YMMWORD[576+rcx],ymm18 + vmovdqu64 YMMWORD[608+rcx],ymm19 + + DB 0F3h,0C3h ;repret + + +section .rdata rdata align=32 +ALIGN 32 +$L$ones: + DQ 1,1,1,1 +$L$zeros: + DQ 0,0,0,0 +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +rsaz_avx_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + + mov rax,QWORD[152+r8] + + lea rsi,[rax] + lea rdi,[512+r8] + mov ecx,20 + DD 0xa548f3fc + + lea rax,[216+rax] + + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + mov r15,QWORD[((-48))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + +$L$common_seh_tail: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_ossl_rsaz_amm52x40_x1_ifma256 wrt ..imagebase + DD $L$SEH_end_ossl_rsaz_amm52x40_x1_ifma256 wrt ..imagebase + DD $L$SEH_info_ossl_rsaz_amm52x40_x1_ifma256 wrt ..imagebase + + DD $L$SEH_begin_ossl_rsaz_amm52x40_x2_ifma256 wrt ..imagebase + DD $L$SEH_end_ossl_rsaz_amm52x40_x2_ifma256 wrt ..imagebase + DD $L$SEH_info_ossl_rsaz_amm52x40_x2_ifma256 wrt ..imagebase + +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_ossl_rsaz_amm52x40_x1_ifma256: +DB 9,0,0,0 + DD rsaz_avx_handler wrt ..imagebase + DD $L$ossl_rsaz_amm52x40_x1_ifma256_body wrt ..imagebase,$L$ossl_rsaz_amm52x40_x1_ifma256_epilogue wrt ..imagebase +$L$SEH_info_ossl_rsaz_amm52x40_x2_ifma256: +DB 9,0,0,0 + DD rsaz_avx_handler wrt ..imagebase + DD $L$ossl_rsaz_amm52x40_x2_ifma256_body wrt ..imagebase,$L$ossl_rsaz_amm52x40_x2_ifma256_epilogue wrt ..imagebase diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-4k-avxifma.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-4k-avxifma.asm new file mode 100644 index 00000000000000..dd22db0064b9c6 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-4k-avxifma.asm @@ -0,0 +1,17 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + +global ossl_rsaz_amm52x40_x1_avxifma256 +global ossl_rsaz_amm52x40_x2_avxifma256 +global ossl_extract_multiplier_2x40_win5_avx + +ossl_rsaz_amm52x40_x1_avxifma256: +ossl_rsaz_amm52x40_x2_avxifma256: +ossl_extract_multiplier_2x40_win5_avx: +DB 0x0f,0x0b + DB 0F3h,0C3h ;repret + diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-avx2.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-avx2.asm index f854d1783d1687..9d58c4fd0148e5 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-avx2.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-avx2.asm @@ -1832,6 +1832,7 @@ rsaz_avx2_eligible: DB 0F3h,0C3h ;repret +section .rdata rdata align=64 ALIGN 64 $L$and_mask: DQ 0x1fffffff,0x1fffffff,0x1fffffff,0x1fffffff @@ -1843,6 +1844,7 @@ $L$inc: DD 0,0,0,0,1,1,1,1 DD 2,2,2,2,3,3,3,3 DD 4,4,4,4,4,4,4,4 +section .text ALIGN 64 EXTERN __imp_RtlVirtualUnwind diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-avx512.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-avx512.asm deleted file mode 100644 index 8bedb848d91107..00000000000000 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-avx512.asm +++ /dev/null @@ -1,1031 +0,0 @@ -default rel -%define XMMWORD -%define YMMWORD -%define ZMMWORD -EXTERN OPENSSL_ia32cap_P -global ossl_rsaz_avx512ifma_eligible - -ALIGN 32 -ossl_rsaz_avx512ifma_eligible: - mov ecx,DWORD[((OPENSSL_ia32cap_P+8))] - xor eax,eax - and ecx,2149777408 - cmp ecx,2149777408 - cmove eax,ecx - DB 0F3h,0C3h ;repret - -section .text code align=64 - - -global ossl_rsaz_amm52x20_x1_256 - -ALIGN 32 -ossl_rsaz_amm52x20_x1_256: - mov QWORD[8+rsp],rdi ;WIN64 prologue - mov QWORD[16+rsp],rsi - mov rax,rsp -$L$SEH_begin_ossl_rsaz_amm52x20_x1_256: - mov rdi,rcx - mov rsi,rdx - mov rdx,r8 - mov rcx,r9 - mov r8,QWORD[40+rsp] - - - -DB 243,15,30,250 - push rbx - - push rbp - - push r12 - - push r13 - - push r14 - - push r15 - -$L$rsaz_amm52x20_x1_256_body: - - - vpxord ymm0,ymm0,ymm0 - vmovdqa64 ymm1,ymm0 - vmovdqa64 ymm16,ymm0 - vmovdqa64 ymm17,ymm0 - vmovdqa64 ymm18,ymm0 - vmovdqa64 ymm19,ymm0 - - xor r9d,r9d - - mov r11,rdx - mov rax,0xfffffffffffff - - - mov ebx,5 - -ALIGN 32 -$L$loop5: - mov r13,QWORD[r11] - - vpbroadcastq ymm3,r13 - mov rdx,QWORD[rsi] - mulx r12,r13,r13 - add r9,r13 - mov r10,r12 - adc r10,0 - - mov r13,r8 - imul r13,r9 - and r13,rax - - vpbroadcastq ymm4,r13 - mov rdx,QWORD[rcx] - mulx r12,r13,r13 - add r9,r13 - adc r10,r12 - - shr r9,52 - sal r10,12 - or r9,r10 - - vpmadd52luq ymm1,ymm3,YMMWORD[rsi] - vpmadd52luq ymm16,ymm3,YMMWORD[32+rsi] - vpmadd52luq ymm17,ymm3,YMMWORD[64+rsi] - vpmadd52luq ymm18,ymm3,YMMWORD[96+rsi] - vpmadd52luq ymm19,ymm3,YMMWORD[128+rsi] - - vpmadd52luq ymm1,ymm4,YMMWORD[rcx] - vpmadd52luq ymm16,ymm4,YMMWORD[32+rcx] - vpmadd52luq ymm17,ymm4,YMMWORD[64+rcx] - vpmadd52luq ymm18,ymm4,YMMWORD[96+rcx] - vpmadd52luq ymm19,ymm4,YMMWORD[128+rcx] - - - valignq ymm1,ymm16,ymm1,1 - valignq ymm16,ymm17,ymm16,1 - valignq ymm17,ymm18,ymm17,1 - valignq ymm18,ymm19,ymm18,1 - valignq ymm19,ymm0,ymm19,1 - - vmovq r13,xmm1 - add r9,r13 - - vpmadd52huq ymm1,ymm3,YMMWORD[rsi] - vpmadd52huq ymm16,ymm3,YMMWORD[32+rsi] - vpmadd52huq ymm17,ymm3,YMMWORD[64+rsi] - vpmadd52huq ymm18,ymm3,YMMWORD[96+rsi] - vpmadd52huq ymm19,ymm3,YMMWORD[128+rsi] - - vpmadd52huq ymm1,ymm4,YMMWORD[rcx] - vpmadd52huq ymm16,ymm4,YMMWORD[32+rcx] - vpmadd52huq ymm17,ymm4,YMMWORD[64+rcx] - vpmadd52huq ymm18,ymm4,YMMWORD[96+rcx] - vpmadd52huq ymm19,ymm4,YMMWORD[128+rcx] - mov r13,QWORD[8+r11] - - vpbroadcastq ymm3,r13 - mov rdx,QWORD[rsi] - mulx r12,r13,r13 - add r9,r13 - mov r10,r12 - adc r10,0 - - mov r13,r8 - imul r13,r9 - and r13,rax - - vpbroadcastq ymm4,r13 - mov rdx,QWORD[rcx] - mulx r12,r13,r13 - add r9,r13 - adc r10,r12 - - shr r9,52 - sal r10,12 - or r9,r10 - - vpmadd52luq ymm1,ymm3,YMMWORD[rsi] - vpmadd52luq ymm16,ymm3,YMMWORD[32+rsi] - vpmadd52luq ymm17,ymm3,YMMWORD[64+rsi] - vpmadd52luq ymm18,ymm3,YMMWORD[96+rsi] - vpmadd52luq ymm19,ymm3,YMMWORD[128+rsi] - - vpmadd52luq ymm1,ymm4,YMMWORD[rcx] - vpmadd52luq ymm16,ymm4,YMMWORD[32+rcx] - vpmadd52luq ymm17,ymm4,YMMWORD[64+rcx] - vpmadd52luq ymm18,ymm4,YMMWORD[96+rcx] - vpmadd52luq ymm19,ymm4,YMMWORD[128+rcx] - - - valignq ymm1,ymm16,ymm1,1 - valignq ymm16,ymm17,ymm16,1 - valignq ymm17,ymm18,ymm17,1 - valignq ymm18,ymm19,ymm18,1 - valignq ymm19,ymm0,ymm19,1 - - vmovq r13,xmm1 - add r9,r13 - - vpmadd52huq ymm1,ymm3,YMMWORD[rsi] - vpmadd52huq ymm16,ymm3,YMMWORD[32+rsi] - vpmadd52huq ymm17,ymm3,YMMWORD[64+rsi] - vpmadd52huq ymm18,ymm3,YMMWORD[96+rsi] - vpmadd52huq ymm19,ymm3,YMMWORD[128+rsi] - - vpmadd52huq ymm1,ymm4,YMMWORD[rcx] - vpmadd52huq ymm16,ymm4,YMMWORD[32+rcx] - vpmadd52huq ymm17,ymm4,YMMWORD[64+rcx] - vpmadd52huq ymm18,ymm4,YMMWORD[96+rcx] - vpmadd52huq ymm19,ymm4,YMMWORD[128+rcx] - mov r13,QWORD[16+r11] - - vpbroadcastq ymm3,r13 - mov rdx,QWORD[rsi] - mulx r12,r13,r13 - add r9,r13 - mov r10,r12 - adc r10,0 - - mov r13,r8 - imul r13,r9 - and r13,rax - - vpbroadcastq ymm4,r13 - mov rdx,QWORD[rcx] - mulx r12,r13,r13 - add r9,r13 - adc r10,r12 - - shr r9,52 - sal r10,12 - or r9,r10 - - vpmadd52luq ymm1,ymm3,YMMWORD[rsi] - vpmadd52luq ymm16,ymm3,YMMWORD[32+rsi] - vpmadd52luq ymm17,ymm3,YMMWORD[64+rsi] - vpmadd52luq ymm18,ymm3,YMMWORD[96+rsi] - vpmadd52luq ymm19,ymm3,YMMWORD[128+rsi] - - vpmadd52luq ymm1,ymm4,YMMWORD[rcx] - vpmadd52luq ymm16,ymm4,YMMWORD[32+rcx] - vpmadd52luq ymm17,ymm4,YMMWORD[64+rcx] - vpmadd52luq ymm18,ymm4,YMMWORD[96+rcx] - vpmadd52luq ymm19,ymm4,YMMWORD[128+rcx] - - - valignq ymm1,ymm16,ymm1,1 - valignq ymm16,ymm17,ymm16,1 - valignq ymm17,ymm18,ymm17,1 - valignq ymm18,ymm19,ymm18,1 - valignq ymm19,ymm0,ymm19,1 - - vmovq r13,xmm1 - add r9,r13 - - vpmadd52huq ymm1,ymm3,YMMWORD[rsi] - vpmadd52huq ymm16,ymm3,YMMWORD[32+rsi] - vpmadd52huq ymm17,ymm3,YMMWORD[64+rsi] - vpmadd52huq ymm18,ymm3,YMMWORD[96+rsi] - vpmadd52huq ymm19,ymm3,YMMWORD[128+rsi] - - vpmadd52huq ymm1,ymm4,YMMWORD[rcx] - vpmadd52huq ymm16,ymm4,YMMWORD[32+rcx] - vpmadd52huq ymm17,ymm4,YMMWORD[64+rcx] - vpmadd52huq ymm18,ymm4,YMMWORD[96+rcx] - vpmadd52huq ymm19,ymm4,YMMWORD[128+rcx] - mov r13,QWORD[24+r11] - - vpbroadcastq ymm3,r13 - mov rdx,QWORD[rsi] - mulx r12,r13,r13 - add r9,r13 - mov r10,r12 - adc r10,0 - - mov r13,r8 - imul r13,r9 - and r13,rax - - vpbroadcastq ymm4,r13 - mov rdx,QWORD[rcx] - mulx r12,r13,r13 - add r9,r13 - adc r10,r12 - - shr r9,52 - sal r10,12 - or r9,r10 - - vpmadd52luq ymm1,ymm3,YMMWORD[rsi] - vpmadd52luq ymm16,ymm3,YMMWORD[32+rsi] - vpmadd52luq ymm17,ymm3,YMMWORD[64+rsi] - vpmadd52luq ymm18,ymm3,YMMWORD[96+rsi] - vpmadd52luq ymm19,ymm3,YMMWORD[128+rsi] - - vpmadd52luq ymm1,ymm4,YMMWORD[rcx] - vpmadd52luq ymm16,ymm4,YMMWORD[32+rcx] - vpmadd52luq ymm17,ymm4,YMMWORD[64+rcx] - vpmadd52luq ymm18,ymm4,YMMWORD[96+rcx] - vpmadd52luq ymm19,ymm4,YMMWORD[128+rcx] - - - valignq ymm1,ymm16,ymm1,1 - valignq ymm16,ymm17,ymm16,1 - valignq ymm17,ymm18,ymm17,1 - valignq ymm18,ymm19,ymm18,1 - valignq ymm19,ymm0,ymm19,1 - - vmovq r13,xmm1 - add r9,r13 - - vpmadd52huq ymm1,ymm3,YMMWORD[rsi] - vpmadd52huq ymm16,ymm3,YMMWORD[32+rsi] - vpmadd52huq ymm17,ymm3,YMMWORD[64+rsi] - vpmadd52huq ymm18,ymm3,YMMWORD[96+rsi] - vpmadd52huq ymm19,ymm3,YMMWORD[128+rsi] - - vpmadd52huq ymm1,ymm4,YMMWORD[rcx] - vpmadd52huq ymm16,ymm4,YMMWORD[32+rcx] - vpmadd52huq ymm17,ymm4,YMMWORD[64+rcx] - vpmadd52huq ymm18,ymm4,YMMWORD[96+rcx] - vpmadd52huq ymm19,ymm4,YMMWORD[128+rcx] - lea r11,[32+r11] - dec ebx - jne NEAR $L$loop5 - - vmovdqa64 ymm4,YMMWORD[$L$mask52x4] - - vpbroadcastq ymm3,r9 - vpblendd ymm1,ymm1,ymm3,3 - - - - vpsrlq ymm24,ymm1,52 - vpsrlq ymm25,ymm16,52 - vpsrlq ymm26,ymm17,52 - vpsrlq ymm27,ymm18,52 - vpsrlq ymm28,ymm19,52 - - - valignq ymm28,ymm28,ymm27,3 - valignq ymm27,ymm27,ymm26,3 - valignq ymm26,ymm26,ymm25,3 - valignq ymm25,ymm25,ymm24,3 - valignq ymm24,ymm24,ymm0,3 - - - vpandq ymm1,ymm1,ymm4 - vpandq ymm16,ymm16,ymm4 - vpandq ymm17,ymm17,ymm4 - vpandq ymm18,ymm18,ymm4 - vpandq ymm19,ymm19,ymm4 - - - vpaddq ymm1,ymm1,ymm24 - vpaddq ymm16,ymm16,ymm25 - vpaddq ymm17,ymm17,ymm26 - vpaddq ymm18,ymm18,ymm27 - vpaddq ymm19,ymm19,ymm28 - - - - vpcmpuq k1,ymm4,ymm1,1 - vpcmpuq k2,ymm4,ymm16,1 - vpcmpuq k3,ymm4,ymm17,1 - vpcmpuq k4,ymm4,ymm18,1 - vpcmpuq k5,ymm4,ymm19,1 - kmovb r14d,k1 - kmovb r13d,k2 - kmovb r12d,k3 - kmovb r11d,k4 - kmovb r10d,k5 - - - vpcmpuq k1,ymm4,ymm1,0 - vpcmpuq k2,ymm4,ymm16,0 - vpcmpuq k3,ymm4,ymm17,0 - vpcmpuq k4,ymm4,ymm18,0 - vpcmpuq k5,ymm4,ymm19,0 - kmovb r9d,k1 - kmovb r8d,k2 - kmovb ebx,k3 - kmovb ecx,k4 - kmovb edx,k5 - - - - shl r13b,4 - or r14b,r13b - shl r11b,4 - or r12b,r11b - - add r14b,r14b - adc r12b,r12b - adc r10b,r10b - - shl r8b,4 - or r9b,r8b - shl cl,4 - or bl,cl - - add r14b,r9b - adc r12b,bl - adc r10b,dl - - xor r14b,r9b - xor r12b,bl - xor r10b,dl - - kmovb k1,r14d - shr r14b,4 - kmovb k2,r14d - kmovb k3,r12d - shr r12b,4 - kmovb k4,r12d - kmovb k5,r10d - - - vpsubq ymm1{k1},ymm1,ymm4 - vpsubq ymm16{k2},ymm16,ymm4 - vpsubq ymm17{k3},ymm17,ymm4 - vpsubq ymm18{k4},ymm18,ymm4 - vpsubq ymm19{k5},ymm19,ymm4 - - vpandq ymm1,ymm1,ymm4 - vpandq ymm16,ymm16,ymm4 - vpandq ymm17,ymm17,ymm4 - vpandq ymm18,ymm18,ymm4 - vpandq ymm19,ymm19,ymm4 - - vmovdqu64 YMMWORD[rdi],ymm1 - vmovdqu64 YMMWORD[32+rdi],ymm16 - vmovdqu64 YMMWORD[64+rdi],ymm17 - vmovdqu64 YMMWORD[96+rdi],ymm18 - vmovdqu64 YMMWORD[128+rdi],ymm19 - - vzeroupper - mov r15,QWORD[rsp] - - mov r14,QWORD[8+rsp] - - mov r13,QWORD[16+rsp] - - mov r12,QWORD[24+rsp] - - mov rbp,QWORD[32+rsp] - - mov rbx,QWORD[40+rsp] - - lea rsp,[48+rsp] - -$L$rsaz_amm52x20_x1_256_epilogue: - mov rdi,QWORD[8+rsp] ;WIN64 epilogue - mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret - -$L$SEH_end_ossl_rsaz_amm52x20_x1_256: -section .data data align=8 - -ALIGN 32 -$L$mask52x4: - DQ 0xfffffffffffff - DQ 0xfffffffffffff - DQ 0xfffffffffffff - DQ 0xfffffffffffff -section .text code align=64 - - -global ossl_rsaz_amm52x20_x2_256 - -ALIGN 32 -ossl_rsaz_amm52x20_x2_256: - mov QWORD[8+rsp],rdi ;WIN64 prologue - mov QWORD[16+rsp],rsi - mov rax,rsp -$L$SEH_begin_ossl_rsaz_amm52x20_x2_256: - mov rdi,rcx - mov rsi,rdx - mov rdx,r8 - mov rcx,r9 - mov r8,QWORD[40+rsp] - - - -DB 243,15,30,250 - push rbx - - push rbp - - push r12 - - push r13 - - push r14 - - push r15 - -$L$rsaz_amm52x20_x2_256_body: - - - vpxord ymm0,ymm0,ymm0 - vmovdqa64 ymm1,ymm0 - vmovdqa64 ymm16,ymm0 - vmovdqa64 ymm17,ymm0 - vmovdqa64 ymm18,ymm0 - vmovdqa64 ymm19,ymm0 - vmovdqa64 ymm2,ymm0 - vmovdqa64 ymm20,ymm0 - vmovdqa64 ymm21,ymm0 - vmovdqa64 ymm22,ymm0 - vmovdqa64 ymm23,ymm0 - - xor r9d,r9d - xor r15d,r15d - - mov r11,rdx - mov rax,0xfffffffffffff - - mov ebx,20 - -ALIGN 32 -$L$loop20: - mov r13,QWORD[r11] - - vpbroadcastq ymm3,r13 - mov rdx,QWORD[rsi] - mulx r12,r13,r13 - add r9,r13 - mov r10,r12 - adc r10,0 - - mov r13,QWORD[r8] - imul r13,r9 - and r13,rax - - vpbroadcastq ymm4,r13 - mov rdx,QWORD[rcx] - mulx r12,r13,r13 - add r9,r13 - adc r10,r12 - - shr r9,52 - sal r10,12 - or r9,r10 - - vpmadd52luq ymm1,ymm3,YMMWORD[rsi] - vpmadd52luq ymm16,ymm3,YMMWORD[32+rsi] - vpmadd52luq ymm17,ymm3,YMMWORD[64+rsi] - vpmadd52luq ymm18,ymm3,YMMWORD[96+rsi] - vpmadd52luq ymm19,ymm3,YMMWORD[128+rsi] - - vpmadd52luq ymm1,ymm4,YMMWORD[rcx] - vpmadd52luq ymm16,ymm4,YMMWORD[32+rcx] - vpmadd52luq ymm17,ymm4,YMMWORD[64+rcx] - vpmadd52luq ymm18,ymm4,YMMWORD[96+rcx] - vpmadd52luq ymm19,ymm4,YMMWORD[128+rcx] - - - valignq ymm1,ymm16,ymm1,1 - valignq ymm16,ymm17,ymm16,1 - valignq ymm17,ymm18,ymm17,1 - valignq ymm18,ymm19,ymm18,1 - valignq ymm19,ymm0,ymm19,1 - - vmovq r13,xmm1 - add r9,r13 - - vpmadd52huq ymm1,ymm3,YMMWORD[rsi] - vpmadd52huq ymm16,ymm3,YMMWORD[32+rsi] - vpmadd52huq ymm17,ymm3,YMMWORD[64+rsi] - vpmadd52huq ymm18,ymm3,YMMWORD[96+rsi] - vpmadd52huq ymm19,ymm3,YMMWORD[128+rsi] - - vpmadd52huq ymm1,ymm4,YMMWORD[rcx] - vpmadd52huq ymm16,ymm4,YMMWORD[32+rcx] - vpmadd52huq ymm17,ymm4,YMMWORD[64+rcx] - vpmadd52huq ymm18,ymm4,YMMWORD[96+rcx] - vpmadd52huq ymm19,ymm4,YMMWORD[128+rcx] - mov r13,QWORD[160+r11] - - vpbroadcastq ymm3,r13 - mov rdx,QWORD[160+rsi] - mulx r12,r13,r13 - add r15,r13 - mov r10,r12 - adc r10,0 - - mov r13,QWORD[8+r8] - imul r13,r15 - and r13,rax - - vpbroadcastq ymm4,r13 - mov rdx,QWORD[160+rcx] - mulx r12,r13,r13 - add r15,r13 - adc r10,r12 - - shr r15,52 - sal r10,12 - or r15,r10 - - vpmadd52luq ymm2,ymm3,YMMWORD[160+rsi] - vpmadd52luq ymm20,ymm3,YMMWORD[192+rsi] - vpmadd52luq ymm21,ymm3,YMMWORD[224+rsi] - vpmadd52luq ymm22,ymm3,YMMWORD[256+rsi] - vpmadd52luq ymm23,ymm3,YMMWORD[288+rsi] - - vpmadd52luq ymm2,ymm4,YMMWORD[160+rcx] - vpmadd52luq ymm20,ymm4,YMMWORD[192+rcx] - vpmadd52luq ymm21,ymm4,YMMWORD[224+rcx] - vpmadd52luq ymm22,ymm4,YMMWORD[256+rcx] - vpmadd52luq ymm23,ymm4,YMMWORD[288+rcx] - - - valignq ymm2,ymm20,ymm2,1 - valignq ymm20,ymm21,ymm20,1 - valignq ymm21,ymm22,ymm21,1 - valignq ymm22,ymm23,ymm22,1 - valignq ymm23,ymm0,ymm23,1 - - vmovq r13,xmm2 - add r15,r13 - - vpmadd52huq ymm2,ymm3,YMMWORD[160+rsi] - vpmadd52huq ymm20,ymm3,YMMWORD[192+rsi] - vpmadd52huq ymm21,ymm3,YMMWORD[224+rsi] - vpmadd52huq ymm22,ymm3,YMMWORD[256+rsi] - vpmadd52huq ymm23,ymm3,YMMWORD[288+rsi] - - vpmadd52huq ymm2,ymm4,YMMWORD[160+rcx] - vpmadd52huq ymm20,ymm4,YMMWORD[192+rcx] - vpmadd52huq ymm21,ymm4,YMMWORD[224+rcx] - vpmadd52huq ymm22,ymm4,YMMWORD[256+rcx] - vpmadd52huq ymm23,ymm4,YMMWORD[288+rcx] - lea r11,[8+r11] - dec ebx - jne NEAR $L$loop20 - - vmovdqa64 ymm4,YMMWORD[$L$mask52x4] - - vpbroadcastq ymm3,r9 - vpblendd ymm1,ymm1,ymm3,3 - - - - vpsrlq ymm24,ymm1,52 - vpsrlq ymm25,ymm16,52 - vpsrlq ymm26,ymm17,52 - vpsrlq ymm27,ymm18,52 - vpsrlq ymm28,ymm19,52 - - - valignq ymm28,ymm28,ymm27,3 - valignq ymm27,ymm27,ymm26,3 - valignq ymm26,ymm26,ymm25,3 - valignq ymm25,ymm25,ymm24,3 - valignq ymm24,ymm24,ymm0,3 - - - vpandq ymm1,ymm1,ymm4 - vpandq ymm16,ymm16,ymm4 - vpandq ymm17,ymm17,ymm4 - vpandq ymm18,ymm18,ymm4 - vpandq ymm19,ymm19,ymm4 - - - vpaddq ymm1,ymm1,ymm24 - vpaddq ymm16,ymm16,ymm25 - vpaddq ymm17,ymm17,ymm26 - vpaddq ymm18,ymm18,ymm27 - vpaddq ymm19,ymm19,ymm28 - - - - vpcmpuq k1,ymm4,ymm1,1 - vpcmpuq k2,ymm4,ymm16,1 - vpcmpuq k3,ymm4,ymm17,1 - vpcmpuq k4,ymm4,ymm18,1 - vpcmpuq k5,ymm4,ymm19,1 - kmovb r14d,k1 - kmovb r13d,k2 - kmovb r12d,k3 - kmovb r11d,k4 - kmovb r10d,k5 - - - vpcmpuq k1,ymm4,ymm1,0 - vpcmpuq k2,ymm4,ymm16,0 - vpcmpuq k3,ymm4,ymm17,0 - vpcmpuq k4,ymm4,ymm18,0 - vpcmpuq k5,ymm4,ymm19,0 - kmovb r9d,k1 - kmovb r8d,k2 - kmovb ebx,k3 - kmovb ecx,k4 - kmovb edx,k5 - - - - shl r13b,4 - or r14b,r13b - shl r11b,4 - or r12b,r11b - - add r14b,r14b - adc r12b,r12b - adc r10b,r10b - - shl r8b,4 - or r9b,r8b - shl cl,4 - or bl,cl - - add r14b,r9b - adc r12b,bl - adc r10b,dl - - xor r14b,r9b - xor r12b,bl - xor r10b,dl - - kmovb k1,r14d - shr r14b,4 - kmovb k2,r14d - kmovb k3,r12d - shr r12b,4 - kmovb k4,r12d - kmovb k5,r10d - - - vpsubq ymm1{k1},ymm1,ymm4 - vpsubq ymm16{k2},ymm16,ymm4 - vpsubq ymm17{k3},ymm17,ymm4 - vpsubq ymm18{k4},ymm18,ymm4 - vpsubq ymm19{k5},ymm19,ymm4 - - vpandq ymm1,ymm1,ymm4 - vpandq ymm16,ymm16,ymm4 - vpandq ymm17,ymm17,ymm4 - vpandq ymm18,ymm18,ymm4 - vpandq ymm19,ymm19,ymm4 - - vpbroadcastq ymm3,r15 - vpblendd ymm2,ymm2,ymm3,3 - - - - vpsrlq ymm24,ymm2,52 - vpsrlq ymm25,ymm20,52 - vpsrlq ymm26,ymm21,52 - vpsrlq ymm27,ymm22,52 - vpsrlq ymm28,ymm23,52 - - - valignq ymm28,ymm28,ymm27,3 - valignq ymm27,ymm27,ymm26,3 - valignq ymm26,ymm26,ymm25,3 - valignq ymm25,ymm25,ymm24,3 - valignq ymm24,ymm24,ymm0,3 - - - vpandq ymm2,ymm2,ymm4 - vpandq ymm20,ymm20,ymm4 - vpandq ymm21,ymm21,ymm4 - vpandq ymm22,ymm22,ymm4 - vpandq ymm23,ymm23,ymm4 - - - vpaddq ymm2,ymm2,ymm24 - vpaddq ymm20,ymm20,ymm25 - vpaddq ymm21,ymm21,ymm26 - vpaddq ymm22,ymm22,ymm27 - vpaddq ymm23,ymm23,ymm28 - - - - vpcmpuq k1,ymm4,ymm2,1 - vpcmpuq k2,ymm4,ymm20,1 - vpcmpuq k3,ymm4,ymm21,1 - vpcmpuq k4,ymm4,ymm22,1 - vpcmpuq k5,ymm4,ymm23,1 - kmovb r14d,k1 - kmovb r13d,k2 - kmovb r12d,k3 - kmovb r11d,k4 - kmovb r10d,k5 - - - vpcmpuq k1,ymm4,ymm2,0 - vpcmpuq k2,ymm4,ymm20,0 - vpcmpuq k3,ymm4,ymm21,0 - vpcmpuq k4,ymm4,ymm22,0 - vpcmpuq k5,ymm4,ymm23,0 - kmovb r9d,k1 - kmovb r8d,k2 - kmovb ebx,k3 - kmovb ecx,k4 - kmovb edx,k5 - - - - shl r13b,4 - or r14b,r13b - shl r11b,4 - or r12b,r11b - - add r14b,r14b - adc r12b,r12b - adc r10b,r10b - - shl r8b,4 - or r9b,r8b - shl cl,4 - or bl,cl - - add r14b,r9b - adc r12b,bl - adc r10b,dl - - xor r14b,r9b - xor r12b,bl - xor r10b,dl - - kmovb k1,r14d - shr r14b,4 - kmovb k2,r14d - kmovb k3,r12d - shr r12b,4 - kmovb k4,r12d - kmovb k5,r10d - - - vpsubq ymm2{k1},ymm2,ymm4 - vpsubq ymm20{k2},ymm20,ymm4 - vpsubq ymm21{k3},ymm21,ymm4 - vpsubq ymm22{k4},ymm22,ymm4 - vpsubq ymm23{k5},ymm23,ymm4 - - vpandq ymm2,ymm2,ymm4 - vpandq ymm20,ymm20,ymm4 - vpandq ymm21,ymm21,ymm4 - vpandq ymm22,ymm22,ymm4 - vpandq ymm23,ymm23,ymm4 - - vmovdqu64 YMMWORD[rdi],ymm1 - vmovdqu64 YMMWORD[32+rdi],ymm16 - vmovdqu64 YMMWORD[64+rdi],ymm17 - vmovdqu64 YMMWORD[96+rdi],ymm18 - vmovdqu64 YMMWORD[128+rdi],ymm19 - - vmovdqu64 YMMWORD[160+rdi],ymm2 - vmovdqu64 YMMWORD[192+rdi],ymm20 - vmovdqu64 YMMWORD[224+rdi],ymm21 - vmovdqu64 YMMWORD[256+rdi],ymm22 - vmovdqu64 YMMWORD[288+rdi],ymm23 - - vzeroupper - mov r15,QWORD[rsp] - - mov r14,QWORD[8+rsp] - - mov r13,QWORD[16+rsp] - - mov r12,QWORD[24+rsp] - - mov rbp,QWORD[32+rsp] - - mov rbx,QWORD[40+rsp] - - lea rsp,[48+rsp] - -$L$rsaz_amm52x20_x2_256_epilogue: - mov rdi,QWORD[8+rsp] ;WIN64 epilogue - mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret - -$L$SEH_end_ossl_rsaz_amm52x20_x2_256: -section .text code align=64 - - -ALIGN 32 -global ossl_extract_multiplier_2x20_win5 - -ossl_extract_multiplier_2x20_win5: - mov QWORD[8+rsp],rdi ;WIN64 prologue - mov QWORD[16+rsp],rsi - mov rax,rsp -$L$SEH_begin_ossl_extract_multiplier_2x20_win5: - mov rdi,rcx - mov rsi,rdx - mov rdx,r8 - mov rcx,r9 - - - -DB 243,15,30,250 - lea rax,[rcx*4+rcx] - sal rax,5 - add rsi,rax - - vmovdqa64 ymm23,YMMWORD[$L$ones] - vpbroadcastq ymm22,rdx - lea rax,[10240+rsi] - - vpxor xmm4,xmm4,xmm4 - vmovdqa64 ymm3,ymm4 - vmovdqa64 ymm2,ymm4 - vmovdqa64 ymm1,ymm4 - vmovdqa64 ymm0,ymm4 - vmovdqa64 ymm21,ymm4 - -ALIGN 32 -$L$loop: - vpcmpq k1,ymm22,ymm21,0 - add rsi,320 - vpaddq ymm21,ymm21,ymm23 - vmovdqu64 ymm16,YMMWORD[((-320))+rsi] - vmovdqu64 ymm17,YMMWORD[((-288))+rsi] - vmovdqu64 ymm18,YMMWORD[((-256))+rsi] - vmovdqu64 ymm19,YMMWORD[((-224))+rsi] - vmovdqu64 ymm20,YMMWORD[((-192))+rsi] - vpblendmq ymm0{k1},ymm0,ymm16 - vpblendmq ymm1{k1},ymm1,ymm17 - vpblendmq ymm2{k1},ymm2,ymm18 - vpblendmq ymm3{k1},ymm3,ymm19 - vpblendmq ymm4{k1},ymm4,ymm20 - cmp rax,rsi - jne NEAR $L$loop - - vmovdqu64 YMMWORD[rdi],ymm0 - vmovdqu64 YMMWORD[32+rdi],ymm1 - vmovdqu64 YMMWORD[64+rdi],ymm2 - vmovdqu64 YMMWORD[96+rdi],ymm3 - vmovdqu64 YMMWORD[128+rdi],ymm4 - - mov rdi,QWORD[8+rsp] ;WIN64 epilogue - mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret - -$L$SEH_end_ossl_extract_multiplier_2x20_win5: -section .data data align=8 - -ALIGN 32 -$L$ones: - DQ 1,1,1,1 -EXTERN __imp_RtlVirtualUnwind - -ALIGN 16 -rsaz_def_handler: - push rsi - push rdi - push rbx - push rbp - push r12 - push r13 - push r14 - push r15 - pushfq - sub rsp,64 - - mov rax,QWORD[120+r8] - mov rbx,QWORD[248+r8] - - mov rsi,QWORD[8+r9] - mov r11,QWORD[56+r9] - - mov r10d,DWORD[r11] - lea r10,[r10*1+rsi] - cmp rbx,r10 - jb NEAR $L$common_seh_tail - - mov rax,QWORD[152+r8] - - mov r10d,DWORD[4+r11] - lea r10,[r10*1+rsi] - cmp rbx,r10 - jae NEAR $L$common_seh_tail - - lea rax,[48+rax] - - mov rbx,QWORD[((-8))+rax] - mov rbp,QWORD[((-16))+rax] - mov r12,QWORD[((-24))+rax] - mov r13,QWORD[((-32))+rax] - mov r14,QWORD[((-40))+rax] - mov r15,QWORD[((-48))+rax] - mov QWORD[144+r8],rbx - mov QWORD[160+r8],rbp - mov QWORD[216+r8],r12 - mov QWORD[224+r8],r13 - mov QWORD[232+r8],r14 - mov QWORD[240+r8],r15 - -$L$common_seh_tail: - mov rdi,QWORD[8+rax] - mov rsi,QWORD[16+rax] - mov QWORD[152+r8],rax - mov QWORD[168+r8],rsi - mov QWORD[176+r8],rdi - - mov rdi,QWORD[40+r9] - mov rsi,r8 - mov ecx,154 - DD 0xa548f3fc - - mov rsi,r9 - xor rcx,rcx - mov rdx,QWORD[8+rsi] - mov r8,QWORD[rsi] - mov r9,QWORD[16+rsi] - mov r10,QWORD[40+rsi] - lea r11,[56+rsi] - lea r12,[24+rsi] - mov QWORD[32+rsp],r10 - mov QWORD[40+rsp],r11 - mov QWORD[48+rsp],r12 - mov QWORD[56+rsp],rcx - call QWORD[__imp_RtlVirtualUnwind] - - mov eax,1 - add rsp,64 - popfq - pop r15 - pop r14 - pop r13 - pop r12 - pop rbp - pop rbx - pop rdi - pop rsi - DB 0F3h,0C3h ;repret - - -section .pdata rdata align=4 -ALIGN 4 - DD $L$SEH_begin_ossl_rsaz_amm52x20_x1_256 wrt ..imagebase - DD $L$SEH_end_ossl_rsaz_amm52x20_x1_256 wrt ..imagebase - DD $L$SEH_info_ossl_rsaz_amm52x20_x1_256 wrt ..imagebase - - DD $L$SEH_begin_ossl_rsaz_amm52x20_x2_256 wrt ..imagebase - DD $L$SEH_end_ossl_rsaz_amm52x20_x2_256 wrt ..imagebase - DD $L$SEH_info_ossl_rsaz_amm52x20_x2_256 wrt ..imagebase - - DD $L$SEH_begin_ossl_extract_multiplier_2x20_win5 wrt ..imagebase - DD $L$SEH_end_ossl_extract_multiplier_2x20_win5 wrt ..imagebase - DD $L$SEH_info_ossl_extract_multiplier_2x20_win5 wrt ..imagebase - -section .xdata rdata align=8 -ALIGN 8 -$L$SEH_info_ossl_rsaz_amm52x20_x1_256: -DB 9,0,0,0 - DD rsaz_def_handler wrt ..imagebase - DD $L$rsaz_amm52x20_x1_256_body wrt ..imagebase,$L$rsaz_amm52x20_x1_256_epilogue wrt ..imagebase -$L$SEH_info_ossl_rsaz_amm52x20_x2_256: -DB 9,0,0,0 - DD rsaz_def_handler wrt ..imagebase - DD $L$rsaz_amm52x20_x2_256_body wrt ..imagebase,$L$rsaz_amm52x20_x2_256_epilogue wrt ..imagebase -$L$SEH_info_ossl_extract_multiplier_2x20_win5: -DB 9,0,0,0 - DD rsaz_def_handler wrt ..imagebase - DD $L$SEH_begin_ossl_extract_multiplier_2x20_win5 wrt ..imagebase,$L$SEH_begin_ossl_extract_multiplier_2x20_win5 wrt ..imagebase diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-x86_64.asm index a474c5d9a68c9f..46cc66d8cfcc52 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-x86_64.asm @@ -2094,10 +2094,12 @@ $L$SEH_end_rsaz_512_gather4: +section .rdata rdata align=64 ALIGN 64 $L$inc: DD 0,0,1,1 DD 2,2,2,2 +section .text EXTERN __imp_RtlVirtualUnwind ALIGN 16 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/x86_64-mont5.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/x86_64-mont5.asm index 118676455aa6be..871263ef45cbdd 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/x86_64-mont5.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/x86_64-mont5.asm @@ -3671,6 +3671,7 @@ $L$gather: $L$SEH_end_bn_gather5: +section .rdata rdata align=64 ALIGN 64 $L$inc: DD 0,0,1,1 @@ -3681,6 +3682,7 @@ DB 99,97,116,116,101,114,47,103,97,116,104,101,114,32,102,111 DB 114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79 DB 71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111 DB 112,101,110,115,115,108,46,111,114,103,62,0 +section .text EXTERN __imp_RtlVirtualUnwind ALIGN 16 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h index 4271571db24d0a..91f213b66cadd0 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: " -#define DATE "built on: Sun Jul 20 00:55:27 2025 UTC" +#define DATE "built on: Tue Aug 5 17:23:17 2025 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/camellia/cmll-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/camellia/cmll-x86_64.asm index ac057de920beb0..491d84f8812181 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/camellia/cmll-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/camellia/cmll-x86_64.asm @@ -1169,6 +1169,7 @@ $L$key_epilogue: DB 0F3h,0C3h ;repret $L$SEH_end_Camellia_Ekeygen: +section .rdata rdata align=64 ALIGN 64 $L$Camellia_SIGMA: DD 0x3bcc908b,0xa09e667f,0x4caa73b2,0xb67ae858 @@ -1688,6 +1689,8 @@ $L$Camellia_SBOX: DD 0x008f8f8f,0xe300e3e3 DD 0x00010101,0x40004040 DD 0x003d3d3d,0x4f004f4f +section .text code align=64 + global Camellia_cbc_encrypt ALIGN 16 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/chacha/chacha-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/chacha/chacha-x86_64.asm index 4ae3fe31a63414..47cb8a3db4cd35 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/chacha/chacha-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/chacha/chacha-x86_64.asm @@ -7,6 +7,7 @@ section .text code align=64 EXTERN OPENSSL_ia32cap_P +section .rdata rdata align=64 ALIGN 64 $L$zero: DD 0,0,0,0 @@ -42,6 +43,7 @@ DB 67,104,97,67,104,97,50,48,32,102,111,114,32,120,56,54 DB 95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32 DB 98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115 DB 108,46,111,114,103,62,0 +section .text global ChaCha20_ctr32 ALIGN 64 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/ec/ecp_nistz256-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/ec/ecp_nistz256-x86_64.asm index 9930dadce66880..746041b3c9e7f4 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/ec/ecp_nistz256-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/ec/ecp_nistz256-x86_64.asm @@ -2,8 +2,7 @@ default rel %define XMMWORD %define YMMWORD %define ZMMWORD -section .text code align=64 - +section .rdata rdata align=4096 global ecp_nistz256_precomputed ALIGN 4096 @@ -2382,6 +2381,7 @@ section .text code align=64 EXTERN OPENSSL_ia32cap_P +section .rdata rdata align=4096 ALIGN 64 $L$poly: DQ 0xffffffffffffffff,0x00000000ffffffff,0x0000000000000000,0xffffffff00000001 @@ -2404,6 +2404,7 @@ $L$ord: DQ 0xf3b9cac2fc632551,0xbce6faada7179e84,0xffffffffffffffff,0xffffffff00000000 $L$ordK: DQ 0xccd1c8aaee00bc4f +section .text global ecp_nistz256_mul_by_2 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/md5/md5-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/md5/md5-x86_64.asm index 666c54a4be937d..416ea1c0bf89ce 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/md5/md5-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/md5/md5-x86_64.asm @@ -210,7 +210,7 @@ $L$loop: lea eax,[((-165796510))+r10*1+rax] and r11d,ecx mov r10d,DWORD[24+rsi] - or r12d,r11d + add eax,r11d mov r11d,ecx add eax,r12d mov r12d,ecx @@ -221,7 +221,7 @@ $L$loop: lea edx,[((-1069501632))+r10*1+rdx] and r11d,ebx mov r10d,DWORD[44+rsi] - or r12d,r11d + add edx,r11d mov r11d,ebx add edx,r12d mov r12d,ebx @@ -232,7 +232,7 @@ $L$loop: lea ecx,[643717713+r10*1+rcx] and r11d,eax mov r10d,DWORD[rsi] - or r12d,r11d + add ecx,r11d mov r11d,eax add ecx,r12d mov r12d,eax @@ -243,7 +243,7 @@ $L$loop: lea ebx,[((-373897302))+r10*1+rbx] and r11d,edx mov r10d,DWORD[20+rsi] - or r12d,r11d + add ebx,r11d mov r11d,edx add ebx,r12d mov r12d,edx @@ -254,7 +254,7 @@ $L$loop: lea eax,[((-701558691))+r10*1+rax] and r11d,ecx mov r10d,DWORD[40+rsi] - or r12d,r11d + add eax,r11d mov r11d,ecx add eax,r12d mov r12d,ecx @@ -265,7 +265,7 @@ $L$loop: lea edx,[38016083+r10*1+rdx] and r11d,ebx mov r10d,DWORD[60+rsi] - or r12d,r11d + add edx,r11d mov r11d,ebx add edx,r12d mov r12d,ebx @@ -276,7 +276,7 @@ $L$loop: lea ecx,[((-660478335))+r10*1+rcx] and r11d,eax mov r10d,DWORD[16+rsi] - or r12d,r11d + add ecx,r11d mov r11d,eax add ecx,r12d mov r12d,eax @@ -287,7 +287,7 @@ $L$loop: lea ebx,[((-405537848))+r10*1+rbx] and r11d,edx mov r10d,DWORD[36+rsi] - or r12d,r11d + add ebx,r11d mov r11d,edx add ebx,r12d mov r12d,edx @@ -298,7 +298,7 @@ $L$loop: lea eax,[568446438+r10*1+rax] and r11d,ecx mov r10d,DWORD[56+rsi] - or r12d,r11d + add eax,r11d mov r11d,ecx add eax,r12d mov r12d,ecx @@ -309,7 +309,7 @@ $L$loop: lea edx,[((-1019803690))+r10*1+rdx] and r11d,ebx mov r10d,DWORD[12+rsi] - or r12d,r11d + add edx,r11d mov r11d,ebx add edx,r12d mov r12d,ebx @@ -320,7 +320,7 @@ $L$loop: lea ecx,[((-187363961))+r10*1+rcx] and r11d,eax mov r10d,DWORD[32+rsi] - or r12d,r11d + add ecx,r11d mov r11d,eax add ecx,r12d mov r12d,eax @@ -331,7 +331,7 @@ $L$loop: lea ebx,[1163531501+r10*1+rbx] and r11d,edx mov r10d,DWORD[52+rsi] - or r12d,r11d + add ebx,r11d mov r11d,edx add ebx,r12d mov r12d,edx @@ -342,7 +342,7 @@ $L$loop: lea eax,[((-1444681467))+r10*1+rax] and r11d,ecx mov r10d,DWORD[8+rsi] - or r12d,r11d + add eax,r11d mov r11d,ecx add eax,r12d mov r12d,ecx @@ -353,7 +353,7 @@ $L$loop: lea edx,[((-51403784))+r10*1+rdx] and r11d,ebx mov r10d,DWORD[28+rsi] - or r12d,r11d + add edx,r11d mov r11d,ebx add edx,r12d mov r12d,ebx @@ -364,7 +364,7 @@ $L$loop: lea ecx,[1735328473+r10*1+rcx] and r11d,eax mov r10d,DWORD[48+rsi] - or r12d,r11d + add ecx,r11d mov r11d,eax add ecx,r12d mov r12d,eax @@ -375,7 +375,7 @@ $L$loop: lea ebx,[((-1926607734))+r10*1+rbx] and r11d,edx mov r10d,DWORD[20+rsi] - or r12d,r11d + add ebx,r11d mov r11d,edx add ebx,r12d mov r12d,edx diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/modes/aes-gcm-avx512.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/modes/aes-gcm-avx512.asm new file mode 100644 index 00000000000000..563af63a5564e8 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/modes/aes-gcm-avx512.asm @@ -0,0 +1,136520 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +EXTERN OPENSSL_ia32cap_P +global ossl_vaes_vpclmulqdq_capable + +ALIGN 32 +ossl_vaes_vpclmulqdq_capable: + mov rcx,QWORD[((OPENSSL_ia32cap_P+8))] + + mov rdx,6600291188736 + xor eax,eax + and rcx,rdx + cmp rcx,rdx + cmove rax,rcx + DB 0F3h,0C3h ;repret + +section .text code align=64 + +global ossl_aes_gcm_init_avx512 + +ALIGN 32 +ossl_aes_gcm_init_avx512: + +DB 243,15,30,250 + vpxorq xmm16,xmm16,xmm16 + + + mov eax,DWORD[240+rcx] + cmp eax,9 + je NEAR $L$aes_128_0 + cmp eax,11 + je NEAR $L$aes_192_0 + cmp eax,13 + je NEAR $L$aes_256_0 + jmp NEAR $L$exit_aes_0 +ALIGN 32 +$L$aes_128_0: + vpxorq xmm16,xmm16,XMMWORD[rcx] + + vaesenc xmm16,xmm16,XMMWORD[16+rcx] + + vaesenc xmm16,xmm16,XMMWORD[32+rcx] + + vaesenc xmm16,xmm16,XMMWORD[48+rcx] + + vaesenc xmm16,xmm16,XMMWORD[64+rcx] + + vaesenc xmm16,xmm16,XMMWORD[80+rcx] + + vaesenc xmm16,xmm16,XMMWORD[96+rcx] + + vaesenc xmm16,xmm16,XMMWORD[112+rcx] + + vaesenc xmm16,xmm16,XMMWORD[128+rcx] + + vaesenc xmm16,xmm16,XMMWORD[144+rcx] + + vaesenclast xmm16,xmm16,XMMWORD[160+rcx] + jmp NEAR $L$exit_aes_0 +ALIGN 32 +$L$aes_192_0: + vpxorq xmm16,xmm16,XMMWORD[rcx] + + vaesenc xmm16,xmm16,XMMWORD[16+rcx] + + vaesenc xmm16,xmm16,XMMWORD[32+rcx] + + vaesenc xmm16,xmm16,XMMWORD[48+rcx] + + vaesenc xmm16,xmm16,XMMWORD[64+rcx] + + vaesenc xmm16,xmm16,XMMWORD[80+rcx] + + vaesenc xmm16,xmm16,XMMWORD[96+rcx] + + vaesenc xmm16,xmm16,XMMWORD[112+rcx] + + vaesenc xmm16,xmm16,XMMWORD[128+rcx] + + vaesenc xmm16,xmm16,XMMWORD[144+rcx] + + vaesenc xmm16,xmm16,XMMWORD[160+rcx] + + vaesenc xmm16,xmm16,XMMWORD[176+rcx] + + vaesenclast xmm16,xmm16,XMMWORD[192+rcx] + jmp NEAR $L$exit_aes_0 +ALIGN 32 +$L$aes_256_0: + vpxorq xmm16,xmm16,XMMWORD[rcx] + + vaesenc xmm16,xmm16,XMMWORD[16+rcx] + + vaesenc xmm16,xmm16,XMMWORD[32+rcx] + + vaesenc xmm16,xmm16,XMMWORD[48+rcx] + + vaesenc xmm16,xmm16,XMMWORD[64+rcx] + + vaesenc xmm16,xmm16,XMMWORD[80+rcx] + + vaesenc xmm16,xmm16,XMMWORD[96+rcx] + + vaesenc xmm16,xmm16,XMMWORD[112+rcx] + + vaesenc xmm16,xmm16,XMMWORD[128+rcx] + + vaesenc xmm16,xmm16,XMMWORD[144+rcx] + + vaesenc xmm16,xmm16,XMMWORD[160+rcx] + + vaesenc xmm16,xmm16,XMMWORD[176+rcx] + + vaesenc xmm16,xmm16,XMMWORD[192+rcx] + + vaesenc xmm16,xmm16,XMMWORD[208+rcx] + + vaesenclast xmm16,xmm16,XMMWORD[224+rcx] + jmp NEAR $L$exit_aes_0 +$L$exit_aes_0: + + vpshufb xmm16,xmm16,XMMWORD[SHUF_MASK] + + vmovdqa64 xmm2,xmm16 + vpsllq xmm16,xmm16,1 + vpsrlq xmm2,xmm2,63 + vmovdqa xmm1,xmm2 + vpslldq xmm2,xmm2,8 + vpsrldq xmm1,xmm1,8 + vporq xmm16,xmm16,xmm2 + + vpshufd xmm2,xmm1,36 + vpcmpeqd xmm2,xmm2,XMMWORD[TWOONE] + vpand xmm2,xmm2,XMMWORD[POLY] + vpxorq xmm16,xmm16,xmm2 + + vmovdqu64 XMMWORD[336+rdx],xmm16 + vshufi32x4 ymm4,ymm16,ymm16,0x00 + vmovdqa ymm3,ymm4 + + vpclmulqdq ymm0,ymm3,ymm4,0x11 + vpclmulqdq ymm1,ymm3,ymm4,0x00 + vpclmulqdq ymm2,ymm3,ymm4,0x01 + vpclmulqdq ymm3,ymm3,ymm4,0x10 + vpxorq ymm3,ymm3,ymm2 + + vpsrldq ymm2,ymm3,8 + vpslldq ymm3,ymm3,8 + vpxorq ymm0,ymm0,ymm2 + vpxorq ymm3,ymm3,ymm1 + + + + vmovdqu64 ymm2,YMMWORD[POLY2] + + vpclmulqdq ymm1,ymm2,ymm3,0x01 + vpslldq ymm1,ymm1,8 + vpxorq ymm3,ymm3,ymm1 + + + + vpclmulqdq ymm1,ymm2,ymm3,0x00 + vpsrldq ymm1,ymm1,4 + vpclmulqdq ymm3,ymm2,ymm3,0x10 + vpslldq ymm3,ymm3,4 + + vpternlogq ymm3,ymm0,ymm1,0x96 + + vmovdqu64 XMMWORD[320+rdx],xmm3 + vinserti64x2 ymm4,ymm3,xmm16,1 + vmovdqa64 ymm5,ymm4 + + vpclmulqdq ymm0,ymm4,ymm3,0x11 + vpclmulqdq ymm1,ymm4,ymm3,0x00 + vpclmulqdq ymm2,ymm4,ymm3,0x01 + vpclmulqdq ymm4,ymm4,ymm3,0x10 + vpxorq ymm4,ymm4,ymm2 + + vpsrldq ymm2,ymm4,8 + vpslldq ymm4,ymm4,8 + vpxorq ymm0,ymm0,ymm2 + vpxorq ymm4,ymm4,ymm1 + + + + vmovdqu64 ymm2,YMMWORD[POLY2] + + vpclmulqdq ymm1,ymm2,ymm4,0x01 + vpslldq ymm1,ymm1,8 + vpxorq ymm4,ymm4,ymm1 + + + + vpclmulqdq ymm1,ymm2,ymm4,0x00 + vpsrldq ymm1,ymm1,4 + vpclmulqdq ymm4,ymm2,ymm4,0x10 + vpslldq ymm4,ymm4,4 + + vpternlogq ymm4,ymm0,ymm1,0x96 + + vmovdqu64 YMMWORD[288+rdx],ymm4 + + vinserti64x4 zmm4,zmm4,ymm5,1 + + + vshufi64x2 zmm3,zmm4,zmm4,0x00 + vmovdqa64 zmm5,zmm4 + + vpclmulqdq zmm0,zmm4,zmm3,0x11 + vpclmulqdq zmm1,zmm4,zmm3,0x00 + vpclmulqdq zmm2,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm2 + + vpsrldq zmm2,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm0,zmm0,zmm2 + vpxorq zmm4,zmm4,zmm1 + + + + vmovdqu64 zmm2,ZMMWORD[POLY2] + + vpclmulqdq zmm1,zmm2,zmm4,0x01 + vpslldq zmm1,zmm1,8 + vpxorq zmm4,zmm4,zmm1 + + + + vpclmulqdq zmm1,zmm2,zmm4,0x00 + vpsrldq zmm1,zmm1,4 + vpclmulqdq zmm4,zmm2,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm0,zmm1,0x96 + + vmovdqu64 ZMMWORD[224+rdx],zmm4 + vshufi64x2 zmm3,zmm4,zmm4,0x00 + + vpclmulqdq zmm0,zmm5,zmm3,0x11 + vpclmulqdq zmm1,zmm5,zmm3,0x00 + vpclmulqdq zmm2,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm2 + + vpsrldq zmm2,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm0,zmm0,zmm2 + vpxorq zmm5,zmm5,zmm1 + + + + vmovdqu64 zmm2,ZMMWORD[POLY2] + + vpclmulqdq zmm1,zmm2,zmm5,0x01 + vpslldq zmm1,zmm1,8 + vpxorq zmm5,zmm5,zmm1 + + + + vpclmulqdq zmm1,zmm2,zmm5,0x00 + vpsrldq zmm1,zmm1,4 + vpclmulqdq zmm5,zmm2,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm0,zmm1,0x96 + + vmovdqu64 ZMMWORD[160+rdx],zmm5 + + vpclmulqdq zmm0,zmm4,zmm3,0x11 + vpclmulqdq zmm1,zmm4,zmm3,0x00 + vpclmulqdq zmm2,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm2 + + vpsrldq zmm2,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm0,zmm0,zmm2 + vpxorq zmm4,zmm4,zmm1 + + + + vmovdqu64 zmm2,ZMMWORD[POLY2] + + vpclmulqdq zmm1,zmm2,zmm4,0x01 + vpslldq zmm1,zmm1,8 + vpxorq zmm4,zmm4,zmm1 + + + + vpclmulqdq zmm1,zmm2,zmm4,0x00 + vpsrldq zmm1,zmm1,4 + vpclmulqdq zmm4,zmm2,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm0,zmm1,0x96 + + vmovdqu64 ZMMWORD[96+rdx],zmm4 + vzeroupper +$L$abort_init: + DB 0F3h,0C3h ;repret + + +global ossl_aes_gcm_setiv_avx512 + +ALIGN 32 +ossl_aes_gcm_setiv_avx512: + +$L$setiv_seh_begin: +DB 243,15,30,250 + push rbx + +$L$setiv_seh_push_rbx: + push rbp + +$L$setiv_seh_push_rbp: + push r12 + +$L$setiv_seh_push_r12: + push r13 + +$L$setiv_seh_push_r13: + push r14 + +$L$setiv_seh_push_r14: + push r15 + +$L$setiv_seh_push_r15: + push rdi +$L$setiv_seh_push_rdi: + push rsi +$L$setiv_seh_push_rsi: + + sub rsp,168 +$L$setiv_seh_allocstack_xmm: + + + + + + + + + + + lea rbp,[160+rsp] + +$L$setiv_seh_setfp: + vmovdqu XMMWORD[rsp],xmm6 +$L$setiv_seh_save_xmm6: + vmovdqu XMMWORD[16+rsp],xmm7 +$L$setiv_seh_save_xmm7: + vmovdqu XMMWORD[32+rsp],xmm8 +$L$setiv_seh_save_xmm8: + vmovdqu XMMWORD[48+rsp],xmm9 +$L$setiv_seh_save_xmm9: + vmovdqu XMMWORD[64+rsp],xmm10 +$L$setiv_seh_save_xmm10: + vmovdqu XMMWORD[80+rsp],xmm11 +$L$setiv_seh_save_xmm11: + vmovdqu XMMWORD[96+rsp],xmm12 +$L$setiv_seh_save_xmm12: + vmovdqu XMMWORD[112+rsp],xmm13 +$L$setiv_seh_save_xmm13: + vmovdqu XMMWORD[128+rsp],xmm14 +$L$setiv_seh_save_xmm14: + vmovdqu XMMWORD[144+rsp],xmm15 +$L$setiv_seh_save_xmm15: + +$L$setiv_seh_prolog_end: + sub rsp,816 + and rsp,(-64) + cmp r9,12 + je NEAR iv_len_12_init_IV + vpxor xmm2,xmm2,xmm2 + mov r10,r8 + mov r11,r9 + or r11,r11 + jz NEAR $L$_CALC_AAD_done_1 + + xor rbx,rbx + vmovdqa64 zmm16,ZMMWORD[SHUF_MASK] + +$L$_get_AAD_loop48x16_1: + cmp r11,768 + jl NEAR $L$_exit_AAD_loop48x16_1 + vmovdqu64 zmm11,ZMMWORD[r10] + vmovdqu64 zmm3,ZMMWORD[64+r10] + vmovdqu64 zmm4,ZMMWORD[128+r10] + vmovdqu64 zmm5,ZMMWORD[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + test rbx,rbx + jnz NEAR $L$_skip_hkeys_precomputation_2 + + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vmovdqu64 ZMMWORD[704+rsp],zmm1 + + vmovdqu64 zmm9,ZMMWORD[224+rdx] + vmovdqu64 ZMMWORD[640+rsp],zmm9 + + + vshufi64x2 zmm9,zmm9,zmm9,0x00 + + vmovdqu64 zmm10,ZMMWORD[160+rdx] + vmovdqu64 ZMMWORD[576+rsp],zmm10 + + vmovdqu64 zmm12,ZMMWORD[96+rdx] + vmovdqu64 ZMMWORD[512+rsp],zmm12 + + vpclmulqdq zmm13,zmm10,zmm9,0x11 + vpclmulqdq zmm15,zmm10,zmm9,0x00 + vpclmulqdq zmm17,zmm10,zmm9,0x01 + vpclmulqdq zmm10,zmm10,zmm9,0x10 + vpxorq zmm10,zmm10,zmm17 + + vpsrldq zmm17,zmm10,8 + vpslldq zmm10,zmm10,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm10,zmm10,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm10,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm10,zmm10,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm10,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm10,zmm17,zmm10,0x10 + vpslldq zmm10,zmm10,4 + + vpternlogq zmm10,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm10 + + vpclmulqdq zmm13,zmm12,zmm9,0x11 + vpclmulqdq zmm15,zmm12,zmm9,0x00 + vpclmulqdq zmm17,zmm12,zmm9,0x01 + vpclmulqdq zmm12,zmm12,zmm9,0x10 + vpxorq zmm12,zmm12,zmm17 + + vpsrldq zmm17,zmm12,8 + vpslldq zmm12,zmm12,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm12,zmm12,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm12,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm12,zmm12,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm12,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm12,zmm17,zmm12,0x10 + vpslldq zmm12,zmm12,4 + + vpternlogq zmm12,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm12 + + vpclmulqdq zmm13,zmm10,zmm9,0x11 + vpclmulqdq zmm15,zmm10,zmm9,0x00 + vpclmulqdq zmm17,zmm10,zmm9,0x01 + vpclmulqdq zmm10,zmm10,zmm9,0x10 + vpxorq zmm10,zmm10,zmm17 + + vpsrldq zmm17,zmm10,8 + vpslldq zmm10,zmm10,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm10,zmm10,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm10,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm10,zmm10,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm10,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm10,zmm17,zmm10,0x10 + vpslldq zmm10,zmm10,4 + + vpternlogq zmm10,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm10 + + vpclmulqdq zmm13,zmm12,zmm9,0x11 + vpclmulqdq zmm15,zmm12,zmm9,0x00 + vpclmulqdq zmm17,zmm12,zmm9,0x01 + vpclmulqdq zmm12,zmm12,zmm9,0x10 + vpxorq zmm12,zmm12,zmm17 + + vpsrldq zmm17,zmm12,8 + vpslldq zmm12,zmm12,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm12,zmm12,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm12,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm12,zmm12,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm12,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm12,zmm17,zmm12,0x10 + vpslldq zmm12,zmm12,4 + + vpternlogq zmm12,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm12 + + vpclmulqdq zmm13,zmm10,zmm9,0x11 + vpclmulqdq zmm15,zmm10,zmm9,0x00 + vpclmulqdq zmm17,zmm10,zmm9,0x01 + vpclmulqdq zmm10,zmm10,zmm9,0x10 + vpxorq zmm10,zmm10,zmm17 + + vpsrldq zmm17,zmm10,8 + vpslldq zmm10,zmm10,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm10,zmm10,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm10,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm10,zmm10,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm10,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm10,zmm17,zmm10,0x10 + vpslldq zmm10,zmm10,4 + + vpternlogq zmm10,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[192+rsp],zmm10 + + vpclmulqdq zmm13,zmm12,zmm9,0x11 + vpclmulqdq zmm15,zmm12,zmm9,0x00 + vpclmulqdq zmm17,zmm12,zmm9,0x01 + vpclmulqdq zmm12,zmm12,zmm9,0x10 + vpxorq zmm12,zmm12,zmm17 + + vpsrldq zmm17,zmm12,8 + vpslldq zmm12,zmm12,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm12,zmm12,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm12,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm12,zmm12,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm12,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm12,zmm17,zmm12,0x10 + vpslldq zmm12,zmm12,4 + + vpternlogq zmm12,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[128+rsp],zmm12 + + vpclmulqdq zmm13,zmm10,zmm9,0x11 + vpclmulqdq zmm15,zmm10,zmm9,0x00 + vpclmulqdq zmm17,zmm10,zmm9,0x01 + vpclmulqdq zmm10,zmm10,zmm9,0x10 + vpxorq zmm10,zmm10,zmm17 + + vpsrldq zmm17,zmm10,8 + vpslldq zmm10,zmm10,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm10,zmm10,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm10,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm10,zmm10,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm10,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm10,zmm17,zmm10,0x10 + vpslldq zmm10,zmm10,4 + + vpternlogq zmm10,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[64+rsp],zmm10 + + vpclmulqdq zmm13,zmm12,zmm9,0x11 + vpclmulqdq zmm15,zmm12,zmm9,0x00 + vpclmulqdq zmm17,zmm12,zmm9,0x01 + vpclmulqdq zmm12,zmm12,zmm9,0x10 + vpxorq zmm12,zmm12,zmm17 + + vpsrldq zmm17,zmm12,8 + vpslldq zmm12,zmm12,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm12,zmm12,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm12,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm12,zmm12,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm12,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm12,zmm17,zmm12,0x10 + vpslldq zmm12,zmm12,4 + + vpternlogq zmm12,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[rsp],zmm12 +$L$_skip_hkeys_precomputation_2: + mov rbx,1 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm19,ZMMWORD[rsp] + vpclmulqdq zmm1,zmm11,zmm19,0x11 + vpclmulqdq zmm9,zmm11,zmm19,0x00 + vpclmulqdq zmm10,zmm11,zmm19,0x01 + vpclmulqdq zmm12,zmm11,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[64+rsp] + vpclmulqdq zmm13,zmm3,zmm19,0x11 + vpclmulqdq zmm15,zmm3,zmm19,0x00 + vpclmulqdq zmm17,zmm3,zmm19,0x01 + vpclmulqdq zmm18,zmm3,zmm19,0x10 + vpxorq zmm7,zmm10,zmm17 + vpxorq zmm6,zmm1,zmm13 + vpxorq zmm8,zmm9,zmm15 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm19,ZMMWORD[128+rsp] + vpclmulqdq zmm1,zmm4,zmm19,0x11 + vpclmulqdq zmm9,zmm4,zmm19,0x00 + vpclmulqdq zmm10,zmm4,zmm19,0x01 + vpclmulqdq zmm12,zmm4,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[192+rsp] + vpclmulqdq zmm13,zmm5,zmm19,0x11 + vpclmulqdq zmm15,zmm5,zmm19,0x00 + vpclmulqdq zmm17,zmm5,zmm19,0x01 + vpclmulqdq zmm18,zmm5,zmm19,0x10 + + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm11,ZMMWORD[256+r10] + vmovdqu64 zmm3,ZMMWORD[320+r10] + vmovdqu64 zmm4,ZMMWORD[384+r10] + vmovdqu64 zmm5,ZMMWORD[448+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + vmovdqu64 zmm19,ZMMWORD[256+rsp] + vpclmulqdq zmm1,zmm11,zmm19,0x11 + vpclmulqdq zmm9,zmm11,zmm19,0x00 + vpclmulqdq zmm10,zmm11,zmm19,0x01 + vpclmulqdq zmm12,zmm11,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[320+rsp] + vpclmulqdq zmm13,zmm3,zmm19,0x11 + vpclmulqdq zmm15,zmm3,zmm19,0x00 + vpclmulqdq zmm17,zmm3,zmm19,0x01 + vpclmulqdq zmm18,zmm3,zmm19,0x10 + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm19,ZMMWORD[384+rsp] + vpclmulqdq zmm1,zmm4,zmm19,0x11 + vpclmulqdq zmm9,zmm4,zmm19,0x00 + vpclmulqdq zmm10,zmm4,zmm19,0x01 + vpclmulqdq zmm12,zmm4,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[448+rsp] + vpclmulqdq zmm13,zmm5,zmm19,0x11 + vpclmulqdq zmm15,zmm5,zmm19,0x00 + vpclmulqdq zmm17,zmm5,zmm19,0x01 + vpclmulqdq zmm18,zmm5,zmm19,0x10 + + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm11,ZMMWORD[512+r10] + vmovdqu64 zmm3,ZMMWORD[576+r10] + vmovdqu64 zmm4,ZMMWORD[640+r10] + vmovdqu64 zmm5,ZMMWORD[704+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + vmovdqu64 zmm19,ZMMWORD[512+rsp] + vpclmulqdq zmm1,zmm11,zmm19,0x11 + vpclmulqdq zmm9,zmm11,zmm19,0x00 + vpclmulqdq zmm10,zmm11,zmm19,0x01 + vpclmulqdq zmm12,zmm11,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[576+rsp] + vpclmulqdq zmm13,zmm3,zmm19,0x11 + vpclmulqdq zmm15,zmm3,zmm19,0x00 + vpclmulqdq zmm17,zmm3,zmm19,0x01 + vpclmulqdq zmm18,zmm3,zmm19,0x10 + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm19,ZMMWORD[640+rsp] + vpclmulqdq zmm1,zmm4,zmm19,0x11 + vpclmulqdq zmm9,zmm4,zmm19,0x00 + vpclmulqdq zmm10,zmm4,zmm19,0x01 + vpclmulqdq zmm12,zmm4,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[704+rsp] + vpclmulqdq zmm13,zmm5,zmm19,0x11 + vpclmulqdq zmm15,zmm5,zmm19,0x00 + vpclmulqdq zmm17,zmm5,zmm19,0x01 + vpclmulqdq zmm18,zmm5,zmm19,0x10 + + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + + vpsrldq zmm1,zmm7,8 + vpslldq zmm9,zmm7,8 + vpxorq zmm6,zmm6,zmm1 + vpxorq zmm8,zmm8,zmm9 + vextracti64x4 ymm1,zmm6,1 + vpxorq ymm6,ymm6,ymm1 + vextracti32x4 xmm1,ymm6,1 + vpxorq xmm6,xmm6,xmm1 + vextracti64x4 ymm9,zmm8,1 + vpxorq ymm8,ymm8,ymm9 + vextracti32x4 xmm9,ymm8,1 + vpxorq xmm8,xmm8,xmm9 + vmovdqa64 xmm10,XMMWORD[POLY2] + + + vpclmulqdq xmm1,xmm10,xmm8,0x01 + vpslldq xmm1,xmm1,8 + vpxorq xmm1,xmm8,xmm1 + + + vpclmulqdq xmm9,xmm10,xmm1,0x00 + vpsrldq xmm9,xmm9,4 + vpclmulqdq xmm2,xmm10,xmm1,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm9,xmm6,0x96 + + sub r11,768 + je NEAR $L$_CALC_AAD_done_1 + + add r10,768 + jmp NEAR $L$_get_AAD_loop48x16_1 + +$L$_exit_AAD_loop48x16_1: + + cmp r11,512 + jl NEAR $L$_less_than_32x16_1 + + vmovdqu64 zmm11,ZMMWORD[r10] + vmovdqu64 zmm3,ZMMWORD[64+r10] + vmovdqu64 zmm4,ZMMWORD[128+r10] + vmovdqu64 zmm5,ZMMWORD[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + test rbx,rbx + jnz NEAR $L$_skip_hkeys_precomputation_3 + + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vmovdqu64 ZMMWORD[704+rsp],zmm1 + + vmovdqu64 zmm9,ZMMWORD[224+rdx] + vmovdqu64 ZMMWORD[640+rsp],zmm9 + + + vshufi64x2 zmm9,zmm9,zmm9,0x00 + + vmovdqu64 zmm10,ZMMWORD[160+rdx] + vmovdqu64 ZMMWORD[576+rsp],zmm10 + + vmovdqu64 zmm12,ZMMWORD[96+rdx] + vmovdqu64 ZMMWORD[512+rsp],zmm12 + + vpclmulqdq zmm13,zmm10,zmm9,0x11 + vpclmulqdq zmm15,zmm10,zmm9,0x00 + vpclmulqdq zmm17,zmm10,zmm9,0x01 + vpclmulqdq zmm10,zmm10,zmm9,0x10 + vpxorq zmm10,zmm10,zmm17 + + vpsrldq zmm17,zmm10,8 + vpslldq zmm10,zmm10,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm10,zmm10,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm10,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm10,zmm10,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm10,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm10,zmm17,zmm10,0x10 + vpslldq zmm10,zmm10,4 + + vpternlogq zmm10,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm10 + + vpclmulqdq zmm13,zmm12,zmm9,0x11 + vpclmulqdq zmm15,zmm12,zmm9,0x00 + vpclmulqdq zmm17,zmm12,zmm9,0x01 + vpclmulqdq zmm12,zmm12,zmm9,0x10 + vpxorq zmm12,zmm12,zmm17 + + vpsrldq zmm17,zmm12,8 + vpslldq zmm12,zmm12,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm12,zmm12,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm12,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm12,zmm12,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm12,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm12,zmm17,zmm12,0x10 + vpslldq zmm12,zmm12,4 + + vpternlogq zmm12,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm12 + + vpclmulqdq zmm13,zmm10,zmm9,0x11 + vpclmulqdq zmm15,zmm10,zmm9,0x00 + vpclmulqdq zmm17,zmm10,zmm9,0x01 + vpclmulqdq zmm10,zmm10,zmm9,0x10 + vpxorq zmm10,zmm10,zmm17 + + vpsrldq zmm17,zmm10,8 + vpslldq zmm10,zmm10,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm10,zmm10,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm10,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm10,zmm10,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm10,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm10,zmm17,zmm10,0x10 + vpslldq zmm10,zmm10,4 + + vpternlogq zmm10,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm10 + + vpclmulqdq zmm13,zmm12,zmm9,0x11 + vpclmulqdq zmm15,zmm12,zmm9,0x00 + vpclmulqdq zmm17,zmm12,zmm9,0x01 + vpclmulqdq zmm12,zmm12,zmm9,0x10 + vpxorq zmm12,zmm12,zmm17 + + vpsrldq zmm17,zmm12,8 + vpslldq zmm12,zmm12,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm12,zmm12,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm12,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm12,zmm12,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm12,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm12,zmm17,zmm12,0x10 + vpslldq zmm12,zmm12,4 + + vpternlogq zmm12,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm12 +$L$_skip_hkeys_precomputation_3: + mov rbx,1 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm19,ZMMWORD[256+rsp] + vpclmulqdq zmm1,zmm11,zmm19,0x11 + vpclmulqdq zmm9,zmm11,zmm19,0x00 + vpclmulqdq zmm10,zmm11,zmm19,0x01 + vpclmulqdq zmm12,zmm11,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[320+rsp] + vpclmulqdq zmm13,zmm3,zmm19,0x11 + vpclmulqdq zmm15,zmm3,zmm19,0x00 + vpclmulqdq zmm17,zmm3,zmm19,0x01 + vpclmulqdq zmm18,zmm3,zmm19,0x10 + vpxorq zmm7,zmm10,zmm17 + vpxorq zmm6,zmm1,zmm13 + vpxorq zmm8,zmm9,zmm15 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm19,ZMMWORD[384+rsp] + vpclmulqdq zmm1,zmm4,zmm19,0x11 + vpclmulqdq zmm9,zmm4,zmm19,0x00 + vpclmulqdq zmm10,zmm4,zmm19,0x01 + vpclmulqdq zmm12,zmm4,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[448+rsp] + vpclmulqdq zmm13,zmm5,zmm19,0x11 + vpclmulqdq zmm15,zmm5,zmm19,0x00 + vpclmulqdq zmm17,zmm5,zmm19,0x01 + vpclmulqdq zmm18,zmm5,zmm19,0x10 + + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm11,ZMMWORD[256+r10] + vmovdqu64 zmm3,ZMMWORD[320+r10] + vmovdqu64 zmm4,ZMMWORD[384+r10] + vmovdqu64 zmm5,ZMMWORD[448+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + vmovdqu64 zmm19,ZMMWORD[512+rsp] + vpclmulqdq zmm1,zmm11,zmm19,0x11 + vpclmulqdq zmm9,zmm11,zmm19,0x00 + vpclmulqdq zmm10,zmm11,zmm19,0x01 + vpclmulqdq zmm12,zmm11,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[576+rsp] + vpclmulqdq zmm13,zmm3,zmm19,0x11 + vpclmulqdq zmm15,zmm3,zmm19,0x00 + vpclmulqdq zmm17,zmm3,zmm19,0x01 + vpclmulqdq zmm18,zmm3,zmm19,0x10 + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm19,ZMMWORD[640+rsp] + vpclmulqdq zmm1,zmm4,zmm19,0x11 + vpclmulqdq zmm9,zmm4,zmm19,0x00 + vpclmulqdq zmm10,zmm4,zmm19,0x01 + vpclmulqdq zmm12,zmm4,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[704+rsp] + vpclmulqdq zmm13,zmm5,zmm19,0x11 + vpclmulqdq zmm15,zmm5,zmm19,0x00 + vpclmulqdq zmm17,zmm5,zmm19,0x01 + vpclmulqdq zmm18,zmm5,zmm19,0x10 + + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + + vpsrldq zmm1,zmm7,8 + vpslldq zmm9,zmm7,8 + vpxorq zmm6,zmm6,zmm1 + vpxorq zmm8,zmm8,zmm9 + vextracti64x4 ymm1,zmm6,1 + vpxorq ymm6,ymm6,ymm1 + vextracti32x4 xmm1,ymm6,1 + vpxorq xmm6,xmm6,xmm1 + vextracti64x4 ymm9,zmm8,1 + vpxorq ymm8,ymm8,ymm9 + vextracti32x4 xmm9,ymm8,1 + vpxorq xmm8,xmm8,xmm9 + vmovdqa64 xmm10,XMMWORD[POLY2] + + + vpclmulqdq xmm1,xmm10,xmm8,0x01 + vpslldq xmm1,xmm1,8 + vpxorq xmm1,xmm8,xmm1 + + + vpclmulqdq xmm9,xmm10,xmm1,0x00 + vpsrldq xmm9,xmm9,4 + vpclmulqdq xmm2,xmm10,xmm1,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm9,xmm6,0x96 + + sub r11,512 + je NEAR $L$_CALC_AAD_done_1 + + add r10,512 + jmp NEAR $L$_less_than_16x16_1 + +$L$_less_than_32x16_1: + cmp r11,256 + jl NEAR $L$_less_than_16x16_1 + + vmovdqu64 zmm11,ZMMWORD[r10] + vmovdqu64 zmm3,ZMMWORD[64+r10] + vmovdqu64 zmm4,ZMMWORD[128+r10] + vmovdqu64 zmm5,ZMMWORD[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm19,ZMMWORD[96+rdx] + vpclmulqdq zmm1,zmm11,zmm19,0x11 + vpclmulqdq zmm9,zmm11,zmm19,0x00 + vpclmulqdq zmm10,zmm11,zmm19,0x01 + vpclmulqdq zmm12,zmm11,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[160+rdx] + vpclmulqdq zmm13,zmm3,zmm19,0x11 + vpclmulqdq zmm15,zmm3,zmm19,0x00 + vpclmulqdq zmm17,zmm3,zmm19,0x01 + vpclmulqdq zmm18,zmm3,zmm19,0x10 + vpxorq zmm7,zmm10,zmm17 + vpxorq zmm6,zmm1,zmm13 + vpxorq zmm8,zmm9,zmm15 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm19,ZMMWORD[224+rdx] + vpclmulqdq zmm1,zmm4,zmm19,0x11 + vpclmulqdq zmm9,zmm4,zmm19,0x00 + vpclmulqdq zmm10,zmm4,zmm19,0x01 + vpclmulqdq zmm12,zmm4,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[288+rdx] + vpclmulqdq zmm13,zmm5,zmm19,0x11 + vpclmulqdq zmm15,zmm5,zmm19,0x00 + vpclmulqdq zmm17,zmm5,zmm19,0x01 + vpclmulqdq zmm18,zmm5,zmm19,0x10 + + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + + vpsrldq zmm1,zmm7,8 + vpslldq zmm9,zmm7,8 + vpxorq zmm6,zmm6,zmm1 + vpxorq zmm8,zmm8,zmm9 + vextracti64x4 ymm1,zmm6,1 + vpxorq ymm6,ymm6,ymm1 + vextracti32x4 xmm1,ymm6,1 + vpxorq xmm6,xmm6,xmm1 + vextracti64x4 ymm9,zmm8,1 + vpxorq ymm8,ymm8,ymm9 + vextracti32x4 xmm9,ymm8,1 + vpxorq xmm8,xmm8,xmm9 + vmovdqa64 xmm10,XMMWORD[POLY2] + + + vpclmulqdq xmm1,xmm10,xmm8,0x01 + vpslldq xmm1,xmm1,8 + vpxorq xmm1,xmm8,xmm1 + + + vpclmulqdq xmm9,xmm10,xmm1,0x00 + vpsrldq xmm9,xmm9,4 + vpclmulqdq xmm2,xmm10,xmm1,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm9,xmm6,0x96 + + sub r11,256 + je NEAR $L$_CALC_AAD_done_1 + + add r10,256 + +$L$_less_than_16x16_1: + + lea r12,[byte64_len_to_mask_table] + lea r12,[r11*8+r12] + + + add r11d,15 + shr r11d,4 + cmp r11d,2 + jb NEAR $L$_AAD_blocks_1_1 + je NEAR $L$_AAD_blocks_2_1 + cmp r11d,4 + jb NEAR $L$_AAD_blocks_3_1 + je NEAR $L$_AAD_blocks_4_1 + cmp r11d,6 + jb NEAR $L$_AAD_blocks_5_1 + je NEAR $L$_AAD_blocks_6_1 + cmp r11d,8 + jb NEAR $L$_AAD_blocks_7_1 + je NEAR $L$_AAD_blocks_8_1 + cmp r11d,10 + jb NEAR $L$_AAD_blocks_9_1 + je NEAR $L$_AAD_blocks_10_1 + cmp r11d,12 + jb NEAR $L$_AAD_blocks_11_1 + je NEAR $L$_AAD_blocks_12_1 + cmp r11d,14 + jb NEAR $L$_AAD_blocks_13_1 + je NEAR $L$_AAD_blocks_14_1 + cmp r11d,15 + je NEAR $L$_AAD_blocks_15_1 +$L$_AAD_blocks_16_1: + sub r12,1536 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 zmm4,ZMMWORD[128+r10] + vmovdqu8 zmm5{k1}{z},[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm15,ZMMWORD[96+rdx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[160+rdx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[224+rdx] + vpclmulqdq zmm11,zmm4,zmm15,0x11 + vpclmulqdq zmm3,zmm4,zmm15,0x00 + vpternlogq zmm1,zmm11,zmm9,0x96 + vpternlogq zmm6,zmm3,zmm10,0x96 + vpclmulqdq zmm11,zmm4,zmm15,0x01 + vpclmulqdq zmm3,zmm4,zmm15,0x10 + vpternlogq zmm7,zmm11,zmm12,0x96 + vpternlogq zmm8,zmm3,zmm13,0x96 + vmovdqu64 zmm15,ZMMWORD[288+rdx] + vpclmulqdq zmm9,zmm5,zmm15,0x11 + vpclmulqdq zmm10,zmm5,zmm15,0x00 + vpclmulqdq zmm12,zmm5,zmm15,0x01 + vpclmulqdq zmm13,zmm5,zmm15,0x10 + vpxorq zmm9,zmm1,zmm9 + vpxorq zmm10,zmm6,zmm10 + vpxorq zmm12,zmm7,zmm12 + vpxorq zmm13,zmm8,zmm13 + + vpxorq zmm12,zmm12,zmm13 + vpsrldq zmm7,zmm12,8 + vpslldq zmm8,zmm12,8 + vpxorq zmm1,zmm9,zmm7 + vpxorq zmm6,zmm10,zmm8 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_15_1: + sub r12,1536 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 zmm4,ZMMWORD[128+r10] + vmovdqu8 zmm5{k1}{z},[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm15,ZMMWORD[112+rdx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[176+rdx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[240+rdx] + vpclmulqdq zmm11,zmm4,zmm15,0x11 + vpclmulqdq zmm3,zmm4,zmm15,0x00 + vpternlogq zmm9,zmm11,zmm1,0x96 + vpternlogq zmm10,zmm3,zmm6,0x96 + vpclmulqdq zmm11,zmm4,zmm15,0x01 + vpclmulqdq zmm3,zmm4,zmm15,0x10 + vpternlogq zmm12,zmm11,zmm7,0x96 + vpternlogq zmm13,zmm3,zmm8,0x96 + vmovdqu64 ymm15,YMMWORD[304+rdx] + vinserti64x2 zmm15,zmm15,ZMMWORD[336+rdx],2 + vpclmulqdq zmm7,zmm5,zmm15,0x01 + vpclmulqdq zmm8,zmm5,zmm15,0x10 + vpclmulqdq zmm1,zmm5,zmm15,0x11 + vpclmulqdq zmm6,zmm5,zmm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_14_1: + sub r12,1536 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 zmm4,ZMMWORD[128+r10] + vmovdqu8 ymm5{k1}{z},[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb ymm5,ymm5,ymm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm15,ZMMWORD[128+rdx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[192+rdx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[256+rdx] + vpclmulqdq zmm11,zmm4,zmm15,0x11 + vpclmulqdq zmm3,zmm4,zmm15,0x00 + vpternlogq zmm9,zmm11,zmm1,0x96 + vpternlogq zmm10,zmm3,zmm6,0x96 + vpclmulqdq zmm11,zmm4,zmm15,0x01 + vpclmulqdq zmm3,zmm4,zmm15,0x10 + vpternlogq zmm12,zmm11,zmm7,0x96 + vpternlogq zmm13,zmm3,zmm8,0x96 + vmovdqu64 ymm15,YMMWORD[320+rdx] + vpclmulqdq ymm7,ymm5,ymm15,0x01 + vpclmulqdq ymm8,ymm5,ymm15,0x10 + vpclmulqdq ymm1,ymm5,ymm15,0x11 + vpclmulqdq ymm6,ymm5,ymm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_13_1: + sub r12,1536 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 zmm4,ZMMWORD[128+r10] + vmovdqu8 xmm5{k1}{z},[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb xmm5,xmm5,xmm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm15,ZMMWORD[144+rdx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[208+rdx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[272+rdx] + vpclmulqdq zmm11,zmm4,zmm15,0x11 + vpclmulqdq zmm3,zmm4,zmm15,0x00 + vpternlogq zmm9,zmm11,zmm1,0x96 + vpternlogq zmm10,zmm3,zmm6,0x96 + vpclmulqdq zmm11,zmm4,zmm15,0x01 + vpclmulqdq zmm3,zmm4,zmm15,0x10 + vpternlogq zmm12,zmm11,zmm7,0x96 + vpternlogq zmm13,zmm3,zmm8,0x96 + vmovdqu64 xmm15,XMMWORD[336+rdx] + vpclmulqdq xmm7,xmm5,xmm15,0x01 + vpclmulqdq xmm8,xmm5,xmm15,0x10 + vpclmulqdq xmm1,xmm5,xmm15,0x11 + vpclmulqdq xmm6,xmm5,xmm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_12_1: + sub r12,1024 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 zmm4{k1}{z},[128+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm15,ZMMWORD[160+rdx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[224+rdx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[288+rdx] + vpclmulqdq zmm11,zmm4,zmm15,0x11 + vpclmulqdq zmm3,zmm4,zmm15,0x00 + vpternlogq zmm9,zmm11,zmm1,0x96 + vpternlogq zmm10,zmm3,zmm6,0x96 + vpclmulqdq zmm11,zmm4,zmm15,0x01 + vpclmulqdq zmm3,zmm4,zmm15,0x10 + vpternlogq zmm12,zmm11,zmm7,0x96 + vpternlogq zmm13,zmm3,zmm8,0x96 + + vpxorq zmm12,zmm12,zmm13 + vpsrldq zmm7,zmm12,8 + vpslldq zmm8,zmm12,8 + vpxorq zmm1,zmm9,zmm7 + vpxorq zmm6,zmm10,zmm8 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_11_1: + sub r12,1024 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 zmm4{k1}{z},[128+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm15,ZMMWORD[176+rdx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[240+rdx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vpxorq zmm9,zmm1,zmm9 + vpxorq zmm10,zmm6,zmm10 + vpxorq zmm12,zmm7,zmm12 + vpxorq zmm13,zmm8,zmm13 + vmovdqu64 ymm15,YMMWORD[304+rdx] + vinserti64x2 zmm15,zmm15,ZMMWORD[336+rdx],2 + vpclmulqdq zmm7,zmm4,zmm15,0x01 + vpclmulqdq zmm8,zmm4,zmm15,0x10 + vpclmulqdq zmm1,zmm4,zmm15,0x11 + vpclmulqdq zmm6,zmm4,zmm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_10_1: + sub r12,1024 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 ymm4{k1}{z},[128+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb ymm4,ymm4,ymm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm15,ZMMWORD[192+rdx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[256+rdx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vpxorq zmm9,zmm1,zmm9 + vpxorq zmm10,zmm6,zmm10 + vpxorq zmm12,zmm7,zmm12 + vpxorq zmm13,zmm8,zmm13 + vmovdqu64 ymm15,YMMWORD[320+rdx] + vpclmulqdq ymm7,ymm4,ymm15,0x01 + vpclmulqdq ymm8,ymm4,ymm15,0x10 + vpclmulqdq ymm1,ymm4,ymm15,0x11 + vpclmulqdq ymm6,ymm4,ymm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_9_1: + sub r12,1024 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 xmm4{k1}{z},[128+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb xmm4,xmm4,xmm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm15,ZMMWORD[208+rdx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[272+rdx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vpxorq zmm9,zmm1,zmm9 + vpxorq zmm10,zmm6,zmm10 + vpxorq zmm12,zmm7,zmm12 + vpxorq zmm13,zmm8,zmm13 + vmovdqu64 xmm15,XMMWORD[336+rdx] + vpclmulqdq xmm7,xmm4,xmm15,0x01 + vpclmulqdq xmm8,xmm4,xmm15,0x10 + vpclmulqdq xmm1,xmm4,xmm15,0x11 + vpclmulqdq xmm6,xmm4,xmm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_8_1: + sub r12,512 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3{k1}{z},[64+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm15,ZMMWORD[224+rdx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[288+rdx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vpxorq zmm9,zmm1,zmm9 + vpxorq zmm10,zmm6,zmm10 + vpxorq zmm12,zmm7,zmm12 + vpxorq zmm13,zmm8,zmm13 + + vpxorq zmm12,zmm12,zmm13 + vpsrldq zmm7,zmm12,8 + vpslldq zmm8,zmm12,8 + vpxorq zmm1,zmm9,zmm7 + vpxorq zmm6,zmm10,zmm8 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_7_1: + sub r12,512 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3{k1}{z},[64+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm15,ZMMWORD[240+rdx] + vpclmulqdq zmm9,zmm11,zmm15,0x11 + vpclmulqdq zmm10,zmm11,zmm15,0x00 + vpclmulqdq zmm12,zmm11,zmm15,0x01 + vpclmulqdq zmm13,zmm11,zmm15,0x10 + vmovdqu64 ymm15,YMMWORD[304+rdx] + vinserti64x2 zmm15,zmm15,ZMMWORD[336+rdx],2 + vpclmulqdq zmm7,zmm3,zmm15,0x01 + vpclmulqdq zmm8,zmm3,zmm15,0x10 + vpclmulqdq zmm1,zmm3,zmm15,0x11 + vpclmulqdq zmm6,zmm3,zmm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_6_1: + sub r12,512 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 ymm3{k1}{z},[64+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb ymm3,ymm3,ymm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm15,ZMMWORD[256+rdx] + vpclmulqdq zmm9,zmm11,zmm15,0x11 + vpclmulqdq zmm10,zmm11,zmm15,0x00 + vpclmulqdq zmm12,zmm11,zmm15,0x01 + vpclmulqdq zmm13,zmm11,zmm15,0x10 + vmovdqu64 ymm15,YMMWORD[320+rdx] + vpclmulqdq ymm7,ymm3,ymm15,0x01 + vpclmulqdq ymm8,ymm3,ymm15,0x10 + vpclmulqdq ymm1,ymm3,ymm15,0x11 + vpclmulqdq ymm6,ymm3,ymm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_5_1: + sub r12,512 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 xmm3{k1}{z},[64+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb xmm3,xmm3,xmm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm15,ZMMWORD[272+rdx] + vpclmulqdq zmm9,zmm11,zmm15,0x11 + vpclmulqdq zmm10,zmm11,zmm15,0x00 + vpclmulqdq zmm12,zmm11,zmm15,0x01 + vpclmulqdq zmm13,zmm11,zmm15,0x10 + vmovdqu64 xmm15,XMMWORD[336+rdx] + vpclmulqdq xmm7,xmm3,xmm15,0x01 + vpclmulqdq xmm8,xmm3,xmm15,0x10 + vpclmulqdq xmm1,xmm3,xmm15,0x11 + vpclmulqdq xmm6,xmm3,xmm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_4_1: + kmovq k1,[r12] + vmovdqu8 zmm11{k1}{z},[r10] + vpshufb zmm11,zmm11,zmm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 zmm15,ZMMWORD[288+rdx] + vpclmulqdq zmm9,zmm11,zmm15,0x11 + vpclmulqdq zmm10,zmm11,zmm15,0x00 + vpclmulqdq zmm12,zmm11,zmm15,0x01 + vpclmulqdq zmm13,zmm11,zmm15,0x10 + + vpxorq zmm12,zmm12,zmm13 + vpsrldq zmm7,zmm12,8 + vpslldq zmm8,zmm12,8 + vpxorq zmm1,zmm9,zmm7 + vpxorq zmm6,zmm10,zmm8 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_3_1: + kmovq k1,[r12] + vmovdqu8 zmm11{k1}{z},[r10] + vpshufb zmm11,zmm11,zmm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 ymm15,YMMWORD[304+rdx] + vinserti64x2 zmm15,zmm15,ZMMWORD[336+rdx],2 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_2_1: + kmovq k1,[r12] + vmovdqu8 ymm11{k1}{z},[r10] + vpshufb ymm11,ymm11,ymm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 ymm15,YMMWORD[320+rdx] + vpclmulqdq ymm7,ymm11,ymm15,0x01 + vpclmulqdq ymm8,ymm11,ymm15,0x10 + vpclmulqdq ymm1,ymm11,ymm15,0x11 + vpclmulqdq ymm6,ymm11,ymm15,0x00 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_1 +$L$_AAD_blocks_1_1: + kmovq k1,[r12] + vmovdqu8 xmm11{k1}{z},[r10] + vpshufb xmm11,xmm11,xmm16 + vpxorq zmm11,zmm11,zmm2 + vmovdqu64 xmm15,XMMWORD[336+rdx] + vpclmulqdq xmm7,xmm11,xmm15,0x01 + vpclmulqdq xmm8,xmm11,xmm15,0x10 + vpclmulqdq xmm1,xmm11,xmm15,0x11 + vpclmulqdq xmm6,xmm11,xmm15,0x00 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm2,xmm15,xmm7,0x10 + vpslldq xmm2,xmm2,4 + vpternlogq xmm2,xmm8,xmm1,0x96 + +$L$_CALC_AAD_done_1: + mov r10,r9 + shl r10,3 + vmovq xmm3,r10 + + + vpxorq xmm2,xmm3,xmm2 + + vmovdqu64 xmm1,XMMWORD[336+rdx] + + vpclmulqdq xmm11,xmm2,xmm1,0x11 + vpclmulqdq xmm3,xmm2,xmm1,0x00 + vpclmulqdq xmm4,xmm2,xmm1,0x01 + vpclmulqdq xmm2,xmm2,xmm1,0x10 + vpxorq xmm2,xmm2,xmm4 + + vpsrldq xmm4,xmm2,8 + vpslldq xmm2,xmm2,8 + vpxorq xmm11,xmm11,xmm4 + vpxorq xmm2,xmm2,xmm3 + + + + vmovdqu64 xmm4,XMMWORD[POLY2] + + vpclmulqdq xmm3,xmm4,xmm2,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm2,xmm2,xmm3 + + + + vpclmulqdq xmm3,xmm4,xmm2,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm2,xmm4,xmm2,0x10 + vpslldq xmm2,xmm2,4 + + vpternlogq xmm2,xmm11,xmm3,0x96 + + vpshufb xmm2,xmm2,XMMWORD[SHUF_MASK] + jmp NEAR skip_iv_len_12_init_IV +iv_len_12_init_IV: + + vmovdqu8 xmm2,XMMWORD[ONEf] + mov r11,r8 + mov r10d,0x0000000000000fff + kmovq k1,r10 + vmovdqu8 xmm2{k1},[r11] +skip_iv_len_12_init_IV: + vmovdqu xmm1,xmm2 + + + mov r10d,DWORD[240+rcx] + cmp r10d,9 + je NEAR $L$aes_128_4 + cmp r10d,11 + je NEAR $L$aes_192_4 + cmp r10d,13 + je NEAR $L$aes_256_4 + jmp NEAR $L$exit_aes_4 +ALIGN 32 +$L$aes_128_4: + vpxorq xmm1,xmm1,XMMWORD[rcx] + + vaesenc xmm1,xmm1,XMMWORD[16+rcx] + + vaesenc xmm1,xmm1,XMMWORD[32+rcx] + + vaesenc xmm1,xmm1,XMMWORD[48+rcx] + + vaesenc xmm1,xmm1,XMMWORD[64+rcx] + + vaesenc xmm1,xmm1,XMMWORD[80+rcx] + + vaesenc xmm1,xmm1,XMMWORD[96+rcx] + + vaesenc xmm1,xmm1,XMMWORD[112+rcx] + + vaesenc xmm1,xmm1,XMMWORD[128+rcx] + + vaesenc xmm1,xmm1,XMMWORD[144+rcx] + + vaesenclast xmm1,xmm1,XMMWORD[160+rcx] + jmp NEAR $L$exit_aes_4 +ALIGN 32 +$L$aes_192_4: + vpxorq xmm1,xmm1,XMMWORD[rcx] + + vaesenc xmm1,xmm1,XMMWORD[16+rcx] + + vaesenc xmm1,xmm1,XMMWORD[32+rcx] + + vaesenc xmm1,xmm1,XMMWORD[48+rcx] + + vaesenc xmm1,xmm1,XMMWORD[64+rcx] + + vaesenc xmm1,xmm1,XMMWORD[80+rcx] + + vaesenc xmm1,xmm1,XMMWORD[96+rcx] + + vaesenc xmm1,xmm1,XMMWORD[112+rcx] + + vaesenc xmm1,xmm1,XMMWORD[128+rcx] + + vaesenc xmm1,xmm1,XMMWORD[144+rcx] + + vaesenc xmm1,xmm1,XMMWORD[160+rcx] + + vaesenc xmm1,xmm1,XMMWORD[176+rcx] + + vaesenclast xmm1,xmm1,XMMWORD[192+rcx] + jmp NEAR $L$exit_aes_4 +ALIGN 32 +$L$aes_256_4: + vpxorq xmm1,xmm1,XMMWORD[rcx] + + vaesenc xmm1,xmm1,XMMWORD[16+rcx] + + vaesenc xmm1,xmm1,XMMWORD[32+rcx] + + vaesenc xmm1,xmm1,XMMWORD[48+rcx] + + vaesenc xmm1,xmm1,XMMWORD[64+rcx] + + vaesenc xmm1,xmm1,XMMWORD[80+rcx] + + vaesenc xmm1,xmm1,XMMWORD[96+rcx] + + vaesenc xmm1,xmm1,XMMWORD[112+rcx] + + vaesenc xmm1,xmm1,XMMWORD[128+rcx] + + vaesenc xmm1,xmm1,XMMWORD[144+rcx] + + vaesenc xmm1,xmm1,XMMWORD[160+rcx] + + vaesenc xmm1,xmm1,XMMWORD[176+rcx] + + vaesenc xmm1,xmm1,XMMWORD[192+rcx] + + vaesenc xmm1,xmm1,XMMWORD[208+rcx] + + vaesenclast xmm1,xmm1,XMMWORD[224+rcx] + jmp NEAR $L$exit_aes_4 +$L$exit_aes_4: + + vmovdqu XMMWORD[32+rdx],xmm1 + + + vpshufb xmm2,xmm2,XMMWORD[SHUF_MASK] + vmovdqu XMMWORD[rdx],xmm2 + cmp r9,256 + jbe NEAR $L$skip_hkeys_cleanup_5 + vpxor xmm0,xmm0,xmm0 + vmovdqa64 ZMMWORD[rsp],zmm0 + vmovdqa64 ZMMWORD[64+rsp],zmm0 + vmovdqa64 ZMMWORD[128+rsp],zmm0 + vmovdqa64 ZMMWORD[192+rsp],zmm0 + vmovdqa64 ZMMWORD[256+rsp],zmm0 + vmovdqa64 ZMMWORD[320+rsp],zmm0 + vmovdqa64 ZMMWORD[384+rsp],zmm0 + vmovdqa64 ZMMWORD[448+rsp],zmm0 + vmovdqa64 ZMMWORD[512+rsp],zmm0 + vmovdqa64 ZMMWORD[576+rsp],zmm0 + vmovdqa64 ZMMWORD[640+rsp],zmm0 + vmovdqa64 ZMMWORD[704+rsp],zmm0 +$L$skip_hkeys_cleanup_5: + vzeroupper + vmovdqu xmm15,XMMWORD[((-16))+rbp] + vmovdqu xmm14,XMMWORD[((-32))+rbp] + vmovdqu xmm13,XMMWORD[((-48))+rbp] + vmovdqu xmm12,XMMWORD[((-64))+rbp] + vmovdqu xmm11,XMMWORD[((-80))+rbp] + vmovdqu xmm10,XMMWORD[((-96))+rbp] + vmovdqu xmm9,XMMWORD[((-112))+rbp] + vmovdqu xmm8,XMMWORD[((-128))+rbp] + vmovdqu xmm7,XMMWORD[((-144))+rbp] + vmovdqu xmm6,XMMWORD[((-160))+rbp] + lea rsp,[8+rbp] + pop rsi + + pop rdi + + pop r15 + + pop r14 + + pop r13 + + pop r12 + + pop rbp + + pop rbx + +$L$abort_setiv: + DB 0F3h,0C3h ;repret +$L$setiv_seh_end: + + +global ossl_aes_gcm_update_aad_avx512 + +ALIGN 32 +ossl_aes_gcm_update_aad_avx512: + +$L$ghash_seh_begin: +DB 243,15,30,250 + push rbx + +$L$ghash_seh_push_rbx: + push rbp + +$L$ghash_seh_push_rbp: + push r12 + +$L$ghash_seh_push_r12: + push r13 + +$L$ghash_seh_push_r13: + push r14 + +$L$ghash_seh_push_r14: + push r15 + +$L$ghash_seh_push_r15: + push rdi +$L$ghash_seh_push_rdi: + push rsi +$L$ghash_seh_push_rsi: + + sub rsp,168 +$L$ghash_seh_allocstack_xmm: + + + + + + + + + + + lea rbp,[160+rsp] + +$L$ghash_seh_setfp: + vmovdqu XMMWORD[rsp],xmm6 +$L$ghash_seh_save_xmm6: + vmovdqu XMMWORD[16+rsp],xmm7 +$L$ghash_seh_save_xmm7: + vmovdqu XMMWORD[32+rsp],xmm8 +$L$ghash_seh_save_xmm8: + vmovdqu XMMWORD[48+rsp],xmm9 +$L$ghash_seh_save_xmm9: + vmovdqu XMMWORD[64+rsp],xmm10 +$L$ghash_seh_save_xmm10: + vmovdqu XMMWORD[80+rsp],xmm11 +$L$ghash_seh_save_xmm11: + vmovdqu XMMWORD[96+rsp],xmm12 +$L$ghash_seh_save_xmm12: + vmovdqu XMMWORD[112+rsp],xmm13 +$L$ghash_seh_save_xmm13: + vmovdqu XMMWORD[128+rsp],xmm14 +$L$ghash_seh_save_xmm14: + vmovdqu XMMWORD[144+rsp],xmm15 +$L$ghash_seh_save_xmm15: + +$L$ghash_seh_prolog_end: + sub rsp,816 + and rsp,(-64) + vmovdqu64 xmm14,XMMWORD[64+rcx] + mov r10,rdx + mov r11,r8 + or r11,r11 + jz NEAR $L$_CALC_AAD_done_6 + + xor rbx,rbx + vmovdqa64 zmm16,ZMMWORD[SHUF_MASK] + +$L$_get_AAD_loop48x16_6: + cmp r11,768 + jl NEAR $L$_exit_AAD_loop48x16_6 + vmovdqu64 zmm11,ZMMWORD[r10] + vmovdqu64 zmm3,ZMMWORD[64+r10] + vmovdqu64 zmm4,ZMMWORD[128+r10] + vmovdqu64 zmm5,ZMMWORD[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + test rbx,rbx + jnz NEAR $L$_skip_hkeys_precomputation_7 + + vmovdqu64 zmm1,ZMMWORD[288+rcx] + vmovdqu64 ZMMWORD[704+rsp],zmm1 + + vmovdqu64 zmm9,ZMMWORD[224+rcx] + vmovdqu64 ZMMWORD[640+rsp],zmm9 + + + vshufi64x2 zmm9,zmm9,zmm9,0x00 + + vmovdqu64 zmm10,ZMMWORD[160+rcx] + vmovdqu64 ZMMWORD[576+rsp],zmm10 + + vmovdqu64 zmm12,ZMMWORD[96+rcx] + vmovdqu64 ZMMWORD[512+rsp],zmm12 + + vpclmulqdq zmm13,zmm10,zmm9,0x11 + vpclmulqdq zmm15,zmm10,zmm9,0x00 + vpclmulqdq zmm17,zmm10,zmm9,0x01 + vpclmulqdq zmm10,zmm10,zmm9,0x10 + vpxorq zmm10,zmm10,zmm17 + + vpsrldq zmm17,zmm10,8 + vpslldq zmm10,zmm10,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm10,zmm10,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm10,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm10,zmm10,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm10,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm10,zmm17,zmm10,0x10 + vpslldq zmm10,zmm10,4 + + vpternlogq zmm10,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm10 + + vpclmulqdq zmm13,zmm12,zmm9,0x11 + vpclmulqdq zmm15,zmm12,zmm9,0x00 + vpclmulqdq zmm17,zmm12,zmm9,0x01 + vpclmulqdq zmm12,zmm12,zmm9,0x10 + vpxorq zmm12,zmm12,zmm17 + + vpsrldq zmm17,zmm12,8 + vpslldq zmm12,zmm12,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm12,zmm12,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm12,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm12,zmm12,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm12,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm12,zmm17,zmm12,0x10 + vpslldq zmm12,zmm12,4 + + vpternlogq zmm12,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm12 + + vpclmulqdq zmm13,zmm10,zmm9,0x11 + vpclmulqdq zmm15,zmm10,zmm9,0x00 + vpclmulqdq zmm17,zmm10,zmm9,0x01 + vpclmulqdq zmm10,zmm10,zmm9,0x10 + vpxorq zmm10,zmm10,zmm17 + + vpsrldq zmm17,zmm10,8 + vpslldq zmm10,zmm10,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm10,zmm10,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm10,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm10,zmm10,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm10,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm10,zmm17,zmm10,0x10 + vpslldq zmm10,zmm10,4 + + vpternlogq zmm10,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm10 + + vpclmulqdq zmm13,zmm12,zmm9,0x11 + vpclmulqdq zmm15,zmm12,zmm9,0x00 + vpclmulqdq zmm17,zmm12,zmm9,0x01 + vpclmulqdq zmm12,zmm12,zmm9,0x10 + vpxorq zmm12,zmm12,zmm17 + + vpsrldq zmm17,zmm12,8 + vpslldq zmm12,zmm12,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm12,zmm12,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm12,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm12,zmm12,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm12,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm12,zmm17,zmm12,0x10 + vpslldq zmm12,zmm12,4 + + vpternlogq zmm12,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm12 + + vpclmulqdq zmm13,zmm10,zmm9,0x11 + vpclmulqdq zmm15,zmm10,zmm9,0x00 + vpclmulqdq zmm17,zmm10,zmm9,0x01 + vpclmulqdq zmm10,zmm10,zmm9,0x10 + vpxorq zmm10,zmm10,zmm17 + + vpsrldq zmm17,zmm10,8 + vpslldq zmm10,zmm10,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm10,zmm10,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm10,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm10,zmm10,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm10,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm10,zmm17,zmm10,0x10 + vpslldq zmm10,zmm10,4 + + vpternlogq zmm10,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[192+rsp],zmm10 + + vpclmulqdq zmm13,zmm12,zmm9,0x11 + vpclmulqdq zmm15,zmm12,zmm9,0x00 + vpclmulqdq zmm17,zmm12,zmm9,0x01 + vpclmulqdq zmm12,zmm12,zmm9,0x10 + vpxorq zmm12,zmm12,zmm17 + + vpsrldq zmm17,zmm12,8 + vpslldq zmm12,zmm12,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm12,zmm12,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm12,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm12,zmm12,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm12,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm12,zmm17,zmm12,0x10 + vpslldq zmm12,zmm12,4 + + vpternlogq zmm12,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[128+rsp],zmm12 + + vpclmulqdq zmm13,zmm10,zmm9,0x11 + vpclmulqdq zmm15,zmm10,zmm9,0x00 + vpclmulqdq zmm17,zmm10,zmm9,0x01 + vpclmulqdq zmm10,zmm10,zmm9,0x10 + vpxorq zmm10,zmm10,zmm17 + + vpsrldq zmm17,zmm10,8 + vpslldq zmm10,zmm10,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm10,zmm10,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm10,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm10,zmm10,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm10,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm10,zmm17,zmm10,0x10 + vpslldq zmm10,zmm10,4 + + vpternlogq zmm10,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[64+rsp],zmm10 + + vpclmulqdq zmm13,zmm12,zmm9,0x11 + vpclmulqdq zmm15,zmm12,zmm9,0x00 + vpclmulqdq zmm17,zmm12,zmm9,0x01 + vpclmulqdq zmm12,zmm12,zmm9,0x10 + vpxorq zmm12,zmm12,zmm17 + + vpsrldq zmm17,zmm12,8 + vpslldq zmm12,zmm12,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm12,zmm12,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm12,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm12,zmm12,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm12,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm12,zmm17,zmm12,0x10 + vpslldq zmm12,zmm12,4 + + vpternlogq zmm12,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[rsp],zmm12 +$L$_skip_hkeys_precomputation_7: + mov rbx,1 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm19,ZMMWORD[rsp] + vpclmulqdq zmm1,zmm11,zmm19,0x11 + vpclmulqdq zmm9,zmm11,zmm19,0x00 + vpclmulqdq zmm10,zmm11,zmm19,0x01 + vpclmulqdq zmm12,zmm11,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[64+rsp] + vpclmulqdq zmm13,zmm3,zmm19,0x11 + vpclmulqdq zmm15,zmm3,zmm19,0x00 + vpclmulqdq zmm17,zmm3,zmm19,0x01 + vpclmulqdq zmm18,zmm3,zmm19,0x10 + vpxorq zmm7,zmm10,zmm17 + vpxorq zmm6,zmm1,zmm13 + vpxorq zmm8,zmm9,zmm15 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm19,ZMMWORD[128+rsp] + vpclmulqdq zmm1,zmm4,zmm19,0x11 + vpclmulqdq zmm9,zmm4,zmm19,0x00 + vpclmulqdq zmm10,zmm4,zmm19,0x01 + vpclmulqdq zmm12,zmm4,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[192+rsp] + vpclmulqdq zmm13,zmm5,zmm19,0x11 + vpclmulqdq zmm15,zmm5,zmm19,0x00 + vpclmulqdq zmm17,zmm5,zmm19,0x01 + vpclmulqdq zmm18,zmm5,zmm19,0x10 + + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm11,ZMMWORD[256+r10] + vmovdqu64 zmm3,ZMMWORD[320+r10] + vmovdqu64 zmm4,ZMMWORD[384+r10] + vmovdqu64 zmm5,ZMMWORD[448+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + vmovdqu64 zmm19,ZMMWORD[256+rsp] + vpclmulqdq zmm1,zmm11,zmm19,0x11 + vpclmulqdq zmm9,zmm11,zmm19,0x00 + vpclmulqdq zmm10,zmm11,zmm19,0x01 + vpclmulqdq zmm12,zmm11,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[320+rsp] + vpclmulqdq zmm13,zmm3,zmm19,0x11 + vpclmulqdq zmm15,zmm3,zmm19,0x00 + vpclmulqdq zmm17,zmm3,zmm19,0x01 + vpclmulqdq zmm18,zmm3,zmm19,0x10 + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm19,ZMMWORD[384+rsp] + vpclmulqdq zmm1,zmm4,zmm19,0x11 + vpclmulqdq zmm9,zmm4,zmm19,0x00 + vpclmulqdq zmm10,zmm4,zmm19,0x01 + vpclmulqdq zmm12,zmm4,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[448+rsp] + vpclmulqdq zmm13,zmm5,zmm19,0x11 + vpclmulqdq zmm15,zmm5,zmm19,0x00 + vpclmulqdq zmm17,zmm5,zmm19,0x01 + vpclmulqdq zmm18,zmm5,zmm19,0x10 + + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm11,ZMMWORD[512+r10] + vmovdqu64 zmm3,ZMMWORD[576+r10] + vmovdqu64 zmm4,ZMMWORD[640+r10] + vmovdqu64 zmm5,ZMMWORD[704+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + vmovdqu64 zmm19,ZMMWORD[512+rsp] + vpclmulqdq zmm1,zmm11,zmm19,0x11 + vpclmulqdq zmm9,zmm11,zmm19,0x00 + vpclmulqdq zmm10,zmm11,zmm19,0x01 + vpclmulqdq zmm12,zmm11,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[576+rsp] + vpclmulqdq zmm13,zmm3,zmm19,0x11 + vpclmulqdq zmm15,zmm3,zmm19,0x00 + vpclmulqdq zmm17,zmm3,zmm19,0x01 + vpclmulqdq zmm18,zmm3,zmm19,0x10 + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm19,ZMMWORD[640+rsp] + vpclmulqdq zmm1,zmm4,zmm19,0x11 + vpclmulqdq zmm9,zmm4,zmm19,0x00 + vpclmulqdq zmm10,zmm4,zmm19,0x01 + vpclmulqdq zmm12,zmm4,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[704+rsp] + vpclmulqdq zmm13,zmm5,zmm19,0x11 + vpclmulqdq zmm15,zmm5,zmm19,0x00 + vpclmulqdq zmm17,zmm5,zmm19,0x01 + vpclmulqdq zmm18,zmm5,zmm19,0x10 + + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + + vpsrldq zmm1,zmm7,8 + vpslldq zmm9,zmm7,8 + vpxorq zmm6,zmm6,zmm1 + vpxorq zmm8,zmm8,zmm9 + vextracti64x4 ymm1,zmm6,1 + vpxorq ymm6,ymm6,ymm1 + vextracti32x4 xmm1,ymm6,1 + vpxorq xmm6,xmm6,xmm1 + vextracti64x4 ymm9,zmm8,1 + vpxorq ymm8,ymm8,ymm9 + vextracti32x4 xmm9,ymm8,1 + vpxorq xmm8,xmm8,xmm9 + vmovdqa64 xmm10,XMMWORD[POLY2] + + + vpclmulqdq xmm1,xmm10,xmm8,0x01 + vpslldq xmm1,xmm1,8 + vpxorq xmm1,xmm8,xmm1 + + + vpclmulqdq xmm9,xmm10,xmm1,0x00 + vpsrldq xmm9,xmm9,4 + vpclmulqdq xmm14,xmm10,xmm1,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm9,xmm6,0x96 + + sub r11,768 + je NEAR $L$_CALC_AAD_done_6 + + add r10,768 + jmp NEAR $L$_get_AAD_loop48x16_6 + +$L$_exit_AAD_loop48x16_6: + + cmp r11,512 + jl NEAR $L$_less_than_32x16_6 + + vmovdqu64 zmm11,ZMMWORD[r10] + vmovdqu64 zmm3,ZMMWORD[64+r10] + vmovdqu64 zmm4,ZMMWORD[128+r10] + vmovdqu64 zmm5,ZMMWORD[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + test rbx,rbx + jnz NEAR $L$_skip_hkeys_precomputation_8 + + vmovdqu64 zmm1,ZMMWORD[288+rcx] + vmovdqu64 ZMMWORD[704+rsp],zmm1 + + vmovdqu64 zmm9,ZMMWORD[224+rcx] + vmovdqu64 ZMMWORD[640+rsp],zmm9 + + + vshufi64x2 zmm9,zmm9,zmm9,0x00 + + vmovdqu64 zmm10,ZMMWORD[160+rcx] + vmovdqu64 ZMMWORD[576+rsp],zmm10 + + vmovdqu64 zmm12,ZMMWORD[96+rcx] + vmovdqu64 ZMMWORD[512+rsp],zmm12 + + vpclmulqdq zmm13,zmm10,zmm9,0x11 + vpclmulqdq zmm15,zmm10,zmm9,0x00 + vpclmulqdq zmm17,zmm10,zmm9,0x01 + vpclmulqdq zmm10,zmm10,zmm9,0x10 + vpxorq zmm10,zmm10,zmm17 + + vpsrldq zmm17,zmm10,8 + vpslldq zmm10,zmm10,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm10,zmm10,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm10,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm10,zmm10,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm10,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm10,zmm17,zmm10,0x10 + vpslldq zmm10,zmm10,4 + + vpternlogq zmm10,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm10 + + vpclmulqdq zmm13,zmm12,zmm9,0x11 + vpclmulqdq zmm15,zmm12,zmm9,0x00 + vpclmulqdq zmm17,zmm12,zmm9,0x01 + vpclmulqdq zmm12,zmm12,zmm9,0x10 + vpxorq zmm12,zmm12,zmm17 + + vpsrldq zmm17,zmm12,8 + vpslldq zmm12,zmm12,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm12,zmm12,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm12,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm12,zmm12,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm12,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm12,zmm17,zmm12,0x10 + vpslldq zmm12,zmm12,4 + + vpternlogq zmm12,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm12 + + vpclmulqdq zmm13,zmm10,zmm9,0x11 + vpclmulqdq zmm15,zmm10,zmm9,0x00 + vpclmulqdq zmm17,zmm10,zmm9,0x01 + vpclmulqdq zmm10,zmm10,zmm9,0x10 + vpxorq zmm10,zmm10,zmm17 + + vpsrldq zmm17,zmm10,8 + vpslldq zmm10,zmm10,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm10,zmm10,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm10,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm10,zmm10,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm10,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm10,zmm17,zmm10,0x10 + vpslldq zmm10,zmm10,4 + + vpternlogq zmm10,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm10 + + vpclmulqdq zmm13,zmm12,zmm9,0x11 + vpclmulqdq zmm15,zmm12,zmm9,0x00 + vpclmulqdq zmm17,zmm12,zmm9,0x01 + vpclmulqdq zmm12,zmm12,zmm9,0x10 + vpxorq zmm12,zmm12,zmm17 + + vpsrldq zmm17,zmm12,8 + vpslldq zmm12,zmm12,8 + vpxorq zmm13,zmm13,zmm17 + vpxorq zmm12,zmm12,zmm15 + + + + vmovdqu64 zmm17,ZMMWORD[POLY2] + + vpclmulqdq zmm15,zmm17,zmm12,0x01 + vpslldq zmm15,zmm15,8 + vpxorq zmm12,zmm12,zmm15 + + + + vpclmulqdq zmm15,zmm17,zmm12,0x00 + vpsrldq zmm15,zmm15,4 + vpclmulqdq zmm12,zmm17,zmm12,0x10 + vpslldq zmm12,zmm12,4 + + vpternlogq zmm12,zmm13,zmm15,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm12 +$L$_skip_hkeys_precomputation_8: + mov rbx,1 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm19,ZMMWORD[256+rsp] + vpclmulqdq zmm1,zmm11,zmm19,0x11 + vpclmulqdq zmm9,zmm11,zmm19,0x00 + vpclmulqdq zmm10,zmm11,zmm19,0x01 + vpclmulqdq zmm12,zmm11,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[320+rsp] + vpclmulqdq zmm13,zmm3,zmm19,0x11 + vpclmulqdq zmm15,zmm3,zmm19,0x00 + vpclmulqdq zmm17,zmm3,zmm19,0x01 + vpclmulqdq zmm18,zmm3,zmm19,0x10 + vpxorq zmm7,zmm10,zmm17 + vpxorq zmm6,zmm1,zmm13 + vpxorq zmm8,zmm9,zmm15 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm19,ZMMWORD[384+rsp] + vpclmulqdq zmm1,zmm4,zmm19,0x11 + vpclmulqdq zmm9,zmm4,zmm19,0x00 + vpclmulqdq zmm10,zmm4,zmm19,0x01 + vpclmulqdq zmm12,zmm4,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[448+rsp] + vpclmulqdq zmm13,zmm5,zmm19,0x11 + vpclmulqdq zmm15,zmm5,zmm19,0x00 + vpclmulqdq zmm17,zmm5,zmm19,0x01 + vpclmulqdq zmm18,zmm5,zmm19,0x10 + + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm11,ZMMWORD[256+r10] + vmovdqu64 zmm3,ZMMWORD[320+r10] + vmovdqu64 zmm4,ZMMWORD[384+r10] + vmovdqu64 zmm5,ZMMWORD[448+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + vmovdqu64 zmm19,ZMMWORD[512+rsp] + vpclmulqdq zmm1,zmm11,zmm19,0x11 + vpclmulqdq zmm9,zmm11,zmm19,0x00 + vpclmulqdq zmm10,zmm11,zmm19,0x01 + vpclmulqdq zmm12,zmm11,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[576+rsp] + vpclmulqdq zmm13,zmm3,zmm19,0x11 + vpclmulqdq zmm15,zmm3,zmm19,0x00 + vpclmulqdq zmm17,zmm3,zmm19,0x01 + vpclmulqdq zmm18,zmm3,zmm19,0x10 + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm19,ZMMWORD[640+rsp] + vpclmulqdq zmm1,zmm4,zmm19,0x11 + vpclmulqdq zmm9,zmm4,zmm19,0x00 + vpclmulqdq zmm10,zmm4,zmm19,0x01 + vpclmulqdq zmm12,zmm4,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[704+rsp] + vpclmulqdq zmm13,zmm5,zmm19,0x11 + vpclmulqdq zmm15,zmm5,zmm19,0x00 + vpclmulqdq zmm17,zmm5,zmm19,0x01 + vpclmulqdq zmm18,zmm5,zmm19,0x10 + + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + + vpsrldq zmm1,zmm7,8 + vpslldq zmm9,zmm7,8 + vpxorq zmm6,zmm6,zmm1 + vpxorq zmm8,zmm8,zmm9 + vextracti64x4 ymm1,zmm6,1 + vpxorq ymm6,ymm6,ymm1 + vextracti32x4 xmm1,ymm6,1 + vpxorq xmm6,xmm6,xmm1 + vextracti64x4 ymm9,zmm8,1 + vpxorq ymm8,ymm8,ymm9 + vextracti32x4 xmm9,ymm8,1 + vpxorq xmm8,xmm8,xmm9 + vmovdqa64 xmm10,XMMWORD[POLY2] + + + vpclmulqdq xmm1,xmm10,xmm8,0x01 + vpslldq xmm1,xmm1,8 + vpxorq xmm1,xmm8,xmm1 + + + vpclmulqdq xmm9,xmm10,xmm1,0x00 + vpsrldq xmm9,xmm9,4 + vpclmulqdq xmm14,xmm10,xmm1,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm9,xmm6,0x96 + + sub r11,512 + je NEAR $L$_CALC_AAD_done_6 + + add r10,512 + jmp NEAR $L$_less_than_16x16_6 + +$L$_less_than_32x16_6: + cmp r11,256 + jl NEAR $L$_less_than_16x16_6 + + vmovdqu64 zmm11,ZMMWORD[r10] + vmovdqu64 zmm3,ZMMWORD[64+r10] + vmovdqu64 zmm4,ZMMWORD[128+r10] + vmovdqu64 zmm5,ZMMWORD[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm19,ZMMWORD[96+rcx] + vpclmulqdq zmm1,zmm11,zmm19,0x11 + vpclmulqdq zmm9,zmm11,zmm19,0x00 + vpclmulqdq zmm10,zmm11,zmm19,0x01 + vpclmulqdq zmm12,zmm11,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[160+rcx] + vpclmulqdq zmm13,zmm3,zmm19,0x11 + vpclmulqdq zmm15,zmm3,zmm19,0x00 + vpclmulqdq zmm17,zmm3,zmm19,0x01 + vpclmulqdq zmm18,zmm3,zmm19,0x10 + vpxorq zmm7,zmm10,zmm17 + vpxorq zmm6,zmm1,zmm13 + vpxorq zmm8,zmm9,zmm15 + vpternlogq zmm7,zmm12,zmm18,0x96 + vmovdqu64 zmm19,ZMMWORD[224+rcx] + vpclmulqdq zmm1,zmm4,zmm19,0x11 + vpclmulqdq zmm9,zmm4,zmm19,0x00 + vpclmulqdq zmm10,zmm4,zmm19,0x01 + vpclmulqdq zmm12,zmm4,zmm19,0x10 + vmovdqu64 zmm19,ZMMWORD[288+rcx] + vpclmulqdq zmm13,zmm5,zmm19,0x11 + vpclmulqdq zmm15,zmm5,zmm19,0x00 + vpclmulqdq zmm17,zmm5,zmm19,0x01 + vpclmulqdq zmm18,zmm5,zmm19,0x10 + + vpternlogq zmm7,zmm10,zmm17,0x96 + vpternlogq zmm6,zmm1,zmm13,0x96 + vpternlogq zmm8,zmm9,zmm15,0x96 + vpternlogq zmm7,zmm12,zmm18,0x96 + + vpsrldq zmm1,zmm7,8 + vpslldq zmm9,zmm7,8 + vpxorq zmm6,zmm6,zmm1 + vpxorq zmm8,zmm8,zmm9 + vextracti64x4 ymm1,zmm6,1 + vpxorq ymm6,ymm6,ymm1 + vextracti32x4 xmm1,ymm6,1 + vpxorq xmm6,xmm6,xmm1 + vextracti64x4 ymm9,zmm8,1 + vpxorq ymm8,ymm8,ymm9 + vextracti32x4 xmm9,ymm8,1 + vpxorq xmm8,xmm8,xmm9 + vmovdqa64 xmm10,XMMWORD[POLY2] + + + vpclmulqdq xmm1,xmm10,xmm8,0x01 + vpslldq xmm1,xmm1,8 + vpxorq xmm1,xmm8,xmm1 + + + vpclmulqdq xmm9,xmm10,xmm1,0x00 + vpsrldq xmm9,xmm9,4 + vpclmulqdq xmm14,xmm10,xmm1,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm9,xmm6,0x96 + + sub r11,256 + je NEAR $L$_CALC_AAD_done_6 + + add r10,256 + +$L$_less_than_16x16_6: + + lea r12,[byte64_len_to_mask_table] + lea r12,[r11*8+r12] + + + add r11d,15 + shr r11d,4 + cmp r11d,2 + jb NEAR $L$_AAD_blocks_1_6 + je NEAR $L$_AAD_blocks_2_6 + cmp r11d,4 + jb NEAR $L$_AAD_blocks_3_6 + je NEAR $L$_AAD_blocks_4_6 + cmp r11d,6 + jb NEAR $L$_AAD_blocks_5_6 + je NEAR $L$_AAD_blocks_6_6 + cmp r11d,8 + jb NEAR $L$_AAD_blocks_7_6 + je NEAR $L$_AAD_blocks_8_6 + cmp r11d,10 + jb NEAR $L$_AAD_blocks_9_6 + je NEAR $L$_AAD_blocks_10_6 + cmp r11d,12 + jb NEAR $L$_AAD_blocks_11_6 + je NEAR $L$_AAD_blocks_12_6 + cmp r11d,14 + jb NEAR $L$_AAD_blocks_13_6 + je NEAR $L$_AAD_blocks_14_6 + cmp r11d,15 + je NEAR $L$_AAD_blocks_15_6 +$L$_AAD_blocks_16_6: + sub r12,1536 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 zmm4,ZMMWORD[128+r10] + vmovdqu8 zmm5{k1}{z},[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm15,ZMMWORD[96+rcx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[160+rcx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[224+rcx] + vpclmulqdq zmm11,zmm4,zmm15,0x11 + vpclmulqdq zmm3,zmm4,zmm15,0x00 + vpternlogq zmm1,zmm11,zmm9,0x96 + vpternlogq zmm6,zmm3,zmm10,0x96 + vpclmulqdq zmm11,zmm4,zmm15,0x01 + vpclmulqdq zmm3,zmm4,zmm15,0x10 + vpternlogq zmm7,zmm11,zmm12,0x96 + vpternlogq zmm8,zmm3,zmm13,0x96 + vmovdqu64 zmm15,ZMMWORD[288+rcx] + vpclmulqdq zmm9,zmm5,zmm15,0x11 + vpclmulqdq zmm10,zmm5,zmm15,0x00 + vpclmulqdq zmm12,zmm5,zmm15,0x01 + vpclmulqdq zmm13,zmm5,zmm15,0x10 + vpxorq zmm9,zmm1,zmm9 + vpxorq zmm10,zmm6,zmm10 + vpxorq zmm12,zmm7,zmm12 + vpxorq zmm13,zmm8,zmm13 + + vpxorq zmm12,zmm12,zmm13 + vpsrldq zmm7,zmm12,8 + vpslldq zmm8,zmm12,8 + vpxorq zmm1,zmm9,zmm7 + vpxorq zmm6,zmm10,zmm8 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_15_6: + sub r12,1536 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 zmm4,ZMMWORD[128+r10] + vmovdqu8 zmm5{k1}{z},[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb zmm5,zmm5,zmm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm15,ZMMWORD[112+rcx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[176+rcx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[240+rcx] + vpclmulqdq zmm11,zmm4,zmm15,0x11 + vpclmulqdq zmm3,zmm4,zmm15,0x00 + vpternlogq zmm9,zmm11,zmm1,0x96 + vpternlogq zmm10,zmm3,zmm6,0x96 + vpclmulqdq zmm11,zmm4,zmm15,0x01 + vpclmulqdq zmm3,zmm4,zmm15,0x10 + vpternlogq zmm12,zmm11,zmm7,0x96 + vpternlogq zmm13,zmm3,zmm8,0x96 + vmovdqu64 ymm15,YMMWORD[304+rcx] + vinserti64x2 zmm15,zmm15,ZMMWORD[336+rcx],2 + vpclmulqdq zmm7,zmm5,zmm15,0x01 + vpclmulqdq zmm8,zmm5,zmm15,0x10 + vpclmulqdq zmm1,zmm5,zmm15,0x11 + vpclmulqdq zmm6,zmm5,zmm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_14_6: + sub r12,1536 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 zmm4,ZMMWORD[128+r10] + vmovdqu8 ymm5{k1}{z},[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb ymm5,ymm5,ymm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm15,ZMMWORD[128+rcx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[192+rcx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[256+rcx] + vpclmulqdq zmm11,zmm4,zmm15,0x11 + vpclmulqdq zmm3,zmm4,zmm15,0x00 + vpternlogq zmm9,zmm11,zmm1,0x96 + vpternlogq zmm10,zmm3,zmm6,0x96 + vpclmulqdq zmm11,zmm4,zmm15,0x01 + vpclmulqdq zmm3,zmm4,zmm15,0x10 + vpternlogq zmm12,zmm11,zmm7,0x96 + vpternlogq zmm13,zmm3,zmm8,0x96 + vmovdqu64 ymm15,YMMWORD[320+rcx] + vpclmulqdq ymm7,ymm5,ymm15,0x01 + vpclmulqdq ymm8,ymm5,ymm15,0x10 + vpclmulqdq ymm1,ymm5,ymm15,0x11 + vpclmulqdq ymm6,ymm5,ymm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_13_6: + sub r12,1536 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 zmm4,ZMMWORD[128+r10] + vmovdqu8 xmm5{k1}{z},[192+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpshufb xmm5,xmm5,xmm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm15,ZMMWORD[144+rcx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[208+rcx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[272+rcx] + vpclmulqdq zmm11,zmm4,zmm15,0x11 + vpclmulqdq zmm3,zmm4,zmm15,0x00 + vpternlogq zmm9,zmm11,zmm1,0x96 + vpternlogq zmm10,zmm3,zmm6,0x96 + vpclmulqdq zmm11,zmm4,zmm15,0x01 + vpclmulqdq zmm3,zmm4,zmm15,0x10 + vpternlogq zmm12,zmm11,zmm7,0x96 + vpternlogq zmm13,zmm3,zmm8,0x96 + vmovdqu64 xmm15,XMMWORD[336+rcx] + vpclmulqdq xmm7,xmm5,xmm15,0x01 + vpclmulqdq xmm8,xmm5,xmm15,0x10 + vpclmulqdq xmm1,xmm5,xmm15,0x11 + vpclmulqdq xmm6,xmm5,xmm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_12_6: + sub r12,1024 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 zmm4{k1}{z},[128+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm15,ZMMWORD[160+rcx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[224+rcx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[288+rcx] + vpclmulqdq zmm11,zmm4,zmm15,0x11 + vpclmulqdq zmm3,zmm4,zmm15,0x00 + vpternlogq zmm9,zmm11,zmm1,0x96 + vpternlogq zmm10,zmm3,zmm6,0x96 + vpclmulqdq zmm11,zmm4,zmm15,0x01 + vpclmulqdq zmm3,zmm4,zmm15,0x10 + vpternlogq zmm12,zmm11,zmm7,0x96 + vpternlogq zmm13,zmm3,zmm8,0x96 + + vpxorq zmm12,zmm12,zmm13 + vpsrldq zmm7,zmm12,8 + vpslldq zmm8,zmm12,8 + vpxorq zmm1,zmm9,zmm7 + vpxorq zmm6,zmm10,zmm8 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_11_6: + sub r12,1024 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 zmm4{k1}{z},[128+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb zmm4,zmm4,zmm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm15,ZMMWORD[176+rcx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[240+rcx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vpxorq zmm9,zmm1,zmm9 + vpxorq zmm10,zmm6,zmm10 + vpxorq zmm12,zmm7,zmm12 + vpxorq zmm13,zmm8,zmm13 + vmovdqu64 ymm15,YMMWORD[304+rcx] + vinserti64x2 zmm15,zmm15,ZMMWORD[336+rcx],2 + vpclmulqdq zmm7,zmm4,zmm15,0x01 + vpclmulqdq zmm8,zmm4,zmm15,0x10 + vpclmulqdq zmm1,zmm4,zmm15,0x11 + vpclmulqdq zmm6,zmm4,zmm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_10_6: + sub r12,1024 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 ymm4{k1}{z},[128+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb ymm4,ymm4,ymm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm15,ZMMWORD[192+rcx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[256+rcx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vpxorq zmm9,zmm1,zmm9 + vpxorq zmm10,zmm6,zmm10 + vpxorq zmm12,zmm7,zmm12 + vpxorq zmm13,zmm8,zmm13 + vmovdqu64 ymm15,YMMWORD[320+rcx] + vpclmulqdq ymm7,ymm4,ymm15,0x01 + vpclmulqdq ymm8,ymm4,ymm15,0x10 + vpclmulqdq ymm1,ymm4,ymm15,0x11 + vpclmulqdq ymm6,ymm4,ymm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_9_6: + sub r12,1024 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3,ZMMWORD[64+r10] + vmovdqu8 xmm4{k1}{z},[128+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpshufb xmm4,xmm4,xmm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm15,ZMMWORD[208+rcx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[272+rcx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vpxorq zmm9,zmm1,zmm9 + vpxorq zmm10,zmm6,zmm10 + vpxorq zmm12,zmm7,zmm12 + vpxorq zmm13,zmm8,zmm13 + vmovdqu64 xmm15,XMMWORD[336+rcx] + vpclmulqdq xmm7,xmm4,xmm15,0x01 + vpclmulqdq xmm8,xmm4,xmm15,0x10 + vpclmulqdq xmm1,xmm4,xmm15,0x11 + vpclmulqdq xmm6,xmm4,xmm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_8_6: + sub r12,512 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3{k1}{z},[64+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm15,ZMMWORD[224+rcx] + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vmovdqu64 zmm15,ZMMWORD[288+rcx] + vpclmulqdq zmm9,zmm3,zmm15,0x11 + vpclmulqdq zmm10,zmm3,zmm15,0x00 + vpclmulqdq zmm12,zmm3,zmm15,0x01 + vpclmulqdq zmm13,zmm3,zmm15,0x10 + vpxorq zmm9,zmm1,zmm9 + vpxorq zmm10,zmm6,zmm10 + vpxorq zmm12,zmm7,zmm12 + vpxorq zmm13,zmm8,zmm13 + + vpxorq zmm12,zmm12,zmm13 + vpsrldq zmm7,zmm12,8 + vpslldq zmm8,zmm12,8 + vpxorq zmm1,zmm9,zmm7 + vpxorq zmm6,zmm10,zmm8 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_7_6: + sub r12,512 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 zmm3{k1}{z},[64+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb zmm3,zmm3,zmm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm15,ZMMWORD[240+rcx] + vpclmulqdq zmm9,zmm11,zmm15,0x11 + vpclmulqdq zmm10,zmm11,zmm15,0x00 + vpclmulqdq zmm12,zmm11,zmm15,0x01 + vpclmulqdq zmm13,zmm11,zmm15,0x10 + vmovdqu64 ymm15,YMMWORD[304+rcx] + vinserti64x2 zmm15,zmm15,ZMMWORD[336+rcx],2 + vpclmulqdq zmm7,zmm3,zmm15,0x01 + vpclmulqdq zmm8,zmm3,zmm15,0x10 + vpclmulqdq zmm1,zmm3,zmm15,0x11 + vpclmulqdq zmm6,zmm3,zmm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_6_6: + sub r12,512 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 ymm3{k1}{z},[64+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb ymm3,ymm3,ymm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm15,ZMMWORD[256+rcx] + vpclmulqdq zmm9,zmm11,zmm15,0x11 + vpclmulqdq zmm10,zmm11,zmm15,0x00 + vpclmulqdq zmm12,zmm11,zmm15,0x01 + vpclmulqdq zmm13,zmm11,zmm15,0x10 + vmovdqu64 ymm15,YMMWORD[320+rcx] + vpclmulqdq ymm7,ymm3,ymm15,0x01 + vpclmulqdq ymm8,ymm3,ymm15,0x10 + vpclmulqdq ymm1,ymm3,ymm15,0x11 + vpclmulqdq ymm6,ymm3,ymm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_5_6: + sub r12,512 + kmovq k1,[r12] + vmovdqu8 zmm11,ZMMWORD[r10] + vmovdqu8 xmm3{k1}{z},[64+r10] + vpshufb zmm11,zmm11,zmm16 + vpshufb xmm3,xmm3,xmm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm15,ZMMWORD[272+rcx] + vpclmulqdq zmm9,zmm11,zmm15,0x11 + vpclmulqdq zmm10,zmm11,zmm15,0x00 + vpclmulqdq zmm12,zmm11,zmm15,0x01 + vpclmulqdq zmm13,zmm11,zmm15,0x10 + vmovdqu64 xmm15,XMMWORD[336+rcx] + vpclmulqdq xmm7,xmm3,xmm15,0x01 + vpclmulqdq xmm8,xmm3,xmm15,0x10 + vpclmulqdq xmm1,xmm3,xmm15,0x11 + vpclmulqdq xmm6,xmm3,xmm15,0x00 + + vpxorq zmm7,zmm7,zmm12 + vpxorq zmm8,zmm8,zmm13 + vpxorq zmm1,zmm1,zmm9 + vpxorq zmm6,zmm6,zmm10 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_4_6: + kmovq k1,[r12] + vmovdqu8 zmm11{k1}{z},[r10] + vpshufb zmm11,zmm11,zmm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 zmm15,ZMMWORD[288+rcx] + vpclmulqdq zmm9,zmm11,zmm15,0x11 + vpclmulqdq zmm10,zmm11,zmm15,0x00 + vpclmulqdq zmm12,zmm11,zmm15,0x01 + vpclmulqdq zmm13,zmm11,zmm15,0x10 + + vpxorq zmm12,zmm12,zmm13 + vpsrldq zmm7,zmm12,8 + vpslldq zmm8,zmm12,8 + vpxorq zmm1,zmm9,zmm7 + vpxorq zmm6,zmm10,zmm8 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_3_6: + kmovq k1,[r12] + vmovdqu8 zmm11{k1}{z},[r10] + vpshufb zmm11,zmm11,zmm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 ymm15,YMMWORD[304+rcx] + vinserti64x2 zmm15,zmm15,ZMMWORD[336+rcx],2 + vpclmulqdq zmm7,zmm11,zmm15,0x01 + vpclmulqdq zmm8,zmm11,zmm15,0x10 + vpclmulqdq zmm1,zmm11,zmm15,0x11 + vpclmulqdq zmm6,zmm11,zmm15,0x00 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_2_6: + kmovq k1,[r12] + vmovdqu8 ymm11{k1}{z},[r10] + vpshufb ymm11,ymm11,ymm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 ymm15,YMMWORD[320+rcx] + vpclmulqdq ymm7,ymm11,ymm15,0x01 + vpclmulqdq ymm8,ymm11,ymm15,0x10 + vpclmulqdq ymm1,ymm11,ymm15,0x11 + vpclmulqdq ymm6,ymm11,ymm15,0x00 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + + jmp NEAR $L$_CALC_AAD_done_6 +$L$_AAD_blocks_1_6: + kmovq k1,[r12] + vmovdqu8 xmm11{k1}{z},[r10] + vpshufb xmm11,xmm11,xmm16 + vpxorq zmm11,zmm11,zmm14 + vmovdqu64 xmm15,XMMWORD[336+rcx] + vpclmulqdq xmm7,xmm11,xmm15,0x01 + vpclmulqdq xmm8,xmm11,xmm15,0x10 + vpclmulqdq xmm1,xmm11,xmm15,0x11 + vpclmulqdq xmm6,xmm11,xmm15,0x00 + + vpxorq zmm7,zmm7,zmm8 + vpsrldq zmm12,zmm7,8 + vpslldq zmm13,zmm7,8 + vpxorq zmm1,zmm1,zmm12 + vpxorq zmm6,zmm6,zmm13 + vextracti64x4 ymm12,zmm1,1 + vpxorq ymm1,ymm1,ymm12 + vextracti32x4 xmm12,ymm1,1 + vpxorq xmm1,xmm1,xmm12 + vextracti64x4 ymm13,zmm6,1 + vpxorq ymm6,ymm6,ymm13 + vextracti32x4 xmm13,ymm6,1 + vpxorq xmm6,xmm6,xmm13 + vmovdqa64 xmm15,XMMWORD[POLY2] + + + vpclmulqdq xmm7,xmm15,xmm6,0x01 + vpslldq xmm7,xmm7,8 + vpxorq xmm7,xmm6,xmm7 + + + vpclmulqdq xmm8,xmm15,xmm7,0x00 + vpsrldq xmm8,xmm8,4 + vpclmulqdq xmm14,xmm15,xmm7,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm8,xmm1,0x96 + +$L$_CALC_AAD_done_6: + vmovdqu64 XMMWORD[64+rcx],xmm14 + cmp r8,256 + jbe NEAR $L$skip_hkeys_cleanup_9 + vpxor xmm0,xmm0,xmm0 + vmovdqa64 ZMMWORD[rsp],zmm0 + vmovdqa64 ZMMWORD[64+rsp],zmm0 + vmovdqa64 ZMMWORD[128+rsp],zmm0 + vmovdqa64 ZMMWORD[192+rsp],zmm0 + vmovdqa64 ZMMWORD[256+rsp],zmm0 + vmovdqa64 ZMMWORD[320+rsp],zmm0 + vmovdqa64 ZMMWORD[384+rsp],zmm0 + vmovdqa64 ZMMWORD[448+rsp],zmm0 + vmovdqa64 ZMMWORD[512+rsp],zmm0 + vmovdqa64 ZMMWORD[576+rsp],zmm0 + vmovdqa64 ZMMWORD[640+rsp],zmm0 + vmovdqa64 ZMMWORD[704+rsp],zmm0 +$L$skip_hkeys_cleanup_9: + vzeroupper + vmovdqu xmm15,XMMWORD[((-16))+rbp] + vmovdqu xmm14,XMMWORD[((-32))+rbp] + vmovdqu xmm13,XMMWORD[((-48))+rbp] + vmovdqu xmm12,XMMWORD[((-64))+rbp] + vmovdqu xmm11,XMMWORD[((-80))+rbp] + vmovdqu xmm10,XMMWORD[((-96))+rbp] + vmovdqu xmm9,XMMWORD[((-112))+rbp] + vmovdqu xmm8,XMMWORD[((-128))+rbp] + vmovdqu xmm7,XMMWORD[((-144))+rbp] + vmovdqu xmm6,XMMWORD[((-160))+rbp] + lea rsp,[8+rbp] + pop rsi + + pop rdi + + pop r15 + + pop r14 + + pop r13 + + pop r12 + + pop rbp + + pop rbx + +$L$exit_update_aad: + DB 0F3h,0C3h ;repret +$L$ghash_seh_end: + + +global ossl_aes_gcm_encrypt_avx512 + +ALIGN 32 +ossl_aes_gcm_encrypt_avx512: + +$L$encrypt_seh_begin: +DB 243,15,30,250 + push rbx + +$L$encrypt_seh_push_rbx: + push rbp + +$L$encrypt_seh_push_rbp: + push r12 + +$L$encrypt_seh_push_r12: + push r13 + +$L$encrypt_seh_push_r13: + push r14 + +$L$encrypt_seh_push_r14: + push r15 + +$L$encrypt_seh_push_r15: + push rdi +$L$encrypt_seh_push_rdi: + push rsi +$L$encrypt_seh_push_rsi: + + sub rsp,168 +$L$encrypt_seh_allocstack_xmm: + + + + + + + + + + + lea rbp,[160+rsp] + +$L$encrypt_seh_setfp: + vmovdqu XMMWORD[rsp],xmm6 +$L$encrypt_seh_save_xmm6: + vmovdqu XMMWORD[16+rsp],xmm7 +$L$encrypt_seh_save_xmm7: + vmovdqu XMMWORD[32+rsp],xmm8 +$L$encrypt_seh_save_xmm8: + vmovdqu XMMWORD[48+rsp],xmm9 +$L$encrypt_seh_save_xmm9: + vmovdqu XMMWORD[64+rsp],xmm10 +$L$encrypt_seh_save_xmm10: + vmovdqu XMMWORD[80+rsp],xmm11 +$L$encrypt_seh_save_xmm11: + vmovdqu XMMWORD[96+rsp],xmm12 +$L$encrypt_seh_save_xmm12: + vmovdqu XMMWORD[112+rsp],xmm13 +$L$encrypt_seh_save_xmm13: + vmovdqu XMMWORD[128+rsp],xmm14 +$L$encrypt_seh_save_xmm14: + vmovdqu XMMWORD[144+rsp],xmm15 +$L$encrypt_seh_save_xmm15: + +$L$encrypt_seh_prolog_end: + sub rsp,1584 + and rsp,(-64) + + + mov eax,DWORD[240+rcx] + cmp eax,9 + je NEAR $L$aes_gcm_encrypt_128_avx512 + cmp eax,11 + je NEAR $L$aes_gcm_encrypt_192_avx512 + cmp eax,13 + je NEAR $L$aes_gcm_encrypt_256_avx512 + xor eax,eax + jmp NEAR $L$exit_gcm_encrypt +ALIGN 32 +$L$aes_gcm_encrypt_128_avx512: + cmp QWORD[112+rbp],0 + je NEAR $L$_enc_dec_done_10 + xor r14,r14 + vmovdqu64 xmm14,XMMWORD[64+rdx] + + mov r11,QWORD[r8] + or r11,r11 + je NEAR $L$_partial_block_done_11 + mov r10d,16 + lea r12,[byte_len_to_mask_table] + cmp QWORD[112+rbp],r10 + cmovc r10,QWORD[112+rbp] + add r12,r10 + add r12,r10 + kmovw k1,[r12] + vmovdqu8 xmm0{k1}{z},[r9] + + vmovdqu64 xmm3,XMMWORD[16+rdx] + vmovdqu64 xmm4,XMMWORD[336+rdx] + + + + lea r12,[SHIFT_MASK] + add r12,r11 + vmovdqu64 xmm5,XMMWORD[r12] + vpshufb xmm3,xmm3,xmm5 + vpxorq xmm3,xmm3,xmm0 + + + mov r13,QWORD[112+rbp] + add r13,r11 + sub r13,16 + jge NEAR $L$_no_extra_mask_11 + sub r12,r13 +$L$_no_extra_mask_11: + + + + vmovdqu64 xmm0,XMMWORD[16+r12] + vpand xmm3,xmm3,xmm0 + vpshufb xmm3,xmm3,XMMWORD[SHUF_MASK] + vpshufb xmm3,xmm3,xmm5 + vpxorq xmm14,xmm14,xmm3 + cmp r13,0 + jl NEAR $L$_partial_incomplete_11 + + vpclmulqdq xmm7,xmm14,xmm4,0x11 + vpclmulqdq xmm10,xmm14,xmm4,0x00 + vpclmulqdq xmm11,xmm14,xmm4,0x01 + vpclmulqdq xmm14,xmm14,xmm4,0x10 + vpxorq xmm14,xmm14,xmm11 + + vpsrldq xmm11,xmm14,8 + vpslldq xmm14,xmm14,8 + vpxorq xmm7,xmm7,xmm11 + vpxorq xmm14,xmm14,xmm10 + + + + vmovdqu64 xmm11,XMMWORD[POLY2] + + vpclmulqdq xmm10,xmm11,xmm14,0x01 + vpslldq xmm10,xmm10,8 + vpxorq xmm14,xmm14,xmm10 + + + + vpclmulqdq xmm10,xmm11,xmm14,0x00 + vpsrldq xmm10,xmm10,4 + vpclmulqdq xmm14,xmm11,xmm14,0x10 + vpslldq xmm14,xmm14,4 + + vpternlogq xmm14,xmm7,xmm10,0x96 + + mov QWORD[r8],0 + + mov r12,r11 + mov r11,16 + sub r11,r12 + jmp NEAR $L$_enc_dec_done_11 + +$L$_partial_incomplete_11: + mov r12,QWORD[112+rbp] + add QWORD[r8],r12 + mov r11,QWORD[112+rbp] + +$L$_enc_dec_done_11: + + + lea r12,[byte_len_to_mask_table] + kmovw k1,[r11*2+r12] + vmovdqu64 XMMWORD[64+rdx],xmm14 + + vpshufb xmm3,xmm3,XMMWORD[SHUF_MASK] + vpshufb xmm3,xmm3,xmm5 + mov r12,QWORD[120+rbp] + vmovdqu8 XMMWORD[r12]{k1},xmm3 +$L$_partial_block_done_11: + vmovdqu64 xmm2,XMMWORD[rdx] + mov r13,QWORD[112+rbp] + sub r13,r11 + je NEAR $L$_enc_dec_done_10 + cmp r13,256 + jbe NEAR $L$_message_below_equal_16_blocks_10 + + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vmovdqa64 zmm27,ZMMWORD[ddq_addbe_4444] + vmovdqa64 zmm28,ZMMWORD[ddq_addbe_1234] + + + + + + + vmovd r15d,xmm2 + and r15d,255 + + vshufi64x2 zmm2,zmm2,zmm2,0 + vpshufb zmm2,zmm2,zmm29 + + + + cmp r15b,240 + jae NEAR $L$_next_16_overflow_12 + vpaddd zmm7,zmm2,zmm28 + vpaddd zmm10,zmm7,zmm27 + vpaddd zmm11,zmm10,zmm27 + vpaddd zmm12,zmm11,zmm27 + jmp NEAR $L$_next_16_ok_12 +$L$_next_16_overflow_12: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm12,ZMMWORD[ddq_add_4444] + vpaddd zmm7,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm10,zmm7,zmm12 + vpaddd zmm11,zmm10,zmm12 + vpaddd zmm12,zmm11,zmm12 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 +$L$_next_16_ok_12: + vshufi64x2 zmm2,zmm12,zmm12,255 + add r15b,16 + + vmovdqu8 zmm0,ZMMWORD[r11*1+r9] + vmovdqu8 zmm3,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm4,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm5,ZMMWORD[192+r11*1+r9] + + + vbroadcastf64x2 zmm6,ZMMWORD[rcx] + vpxorq zmm7,zmm7,zmm6 + vpxorq zmm10,zmm10,zmm6 + vpxorq zmm11,zmm11,zmm6 + vpxorq zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[16+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[32+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[48+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[64+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[80+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[96+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[112+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[128+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[144+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[160+rcx] + vaesenclast zmm7,zmm7,zmm6 + vaesenclast zmm10,zmm10,zmm6 + vaesenclast zmm11,zmm11,zmm6 + vaesenclast zmm12,zmm12,zmm6 + + + vpxorq zmm7,zmm7,zmm0 + vpxorq zmm10,zmm10,zmm3 + vpxorq zmm11,zmm11,zmm4 + vpxorq zmm12,zmm12,zmm5 + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm7 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm10 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm11 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm12 + + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm7 + vmovdqa64 ZMMWORD[832+rsp],zmm10 + vmovdqa64 ZMMWORD[896+rsp],zmm11 + vmovdqa64 ZMMWORD[960+rsp],zmm12 + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_13 + + vmovdqu64 zmm0,ZMMWORD[288+rdx] + vmovdqu64 ZMMWORD[704+rsp],zmm0 + + vmovdqu64 zmm3,ZMMWORD[224+rdx] + vmovdqu64 ZMMWORD[640+rsp],zmm3 + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[160+rdx] + vmovdqu64 ZMMWORD[576+rsp],zmm4 + + vmovdqu64 zmm5,ZMMWORD[96+rdx] + vmovdqu64 ZMMWORD[512+rsp],zmm5 +$L$_skip_hkeys_precomputation_13: + cmp r13,512 + jb NEAR $L$_message_below_32_blocks_10 + + + + cmp r15b,240 + jae NEAR $L$_next_16_overflow_14 + vpaddd zmm7,zmm2,zmm28 + vpaddd zmm10,zmm7,zmm27 + vpaddd zmm11,zmm10,zmm27 + vpaddd zmm12,zmm11,zmm27 + jmp NEAR $L$_next_16_ok_14 +$L$_next_16_overflow_14: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm12,ZMMWORD[ddq_add_4444] + vpaddd zmm7,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm10,zmm7,zmm12 + vpaddd zmm11,zmm10,zmm12 + vpaddd zmm12,zmm11,zmm12 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 +$L$_next_16_ok_14: + vshufi64x2 zmm2,zmm12,zmm12,255 + add r15b,16 + + vmovdqu8 zmm0,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm3,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm4,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm5,ZMMWORD[448+r11*1+r9] + + + vbroadcastf64x2 zmm6,ZMMWORD[rcx] + vpxorq zmm7,zmm7,zmm6 + vpxorq zmm10,zmm10,zmm6 + vpxorq zmm11,zmm11,zmm6 + vpxorq zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[16+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[32+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[48+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[64+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[80+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[96+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[112+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[128+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[144+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[160+rcx] + vaesenclast zmm7,zmm7,zmm6 + vaesenclast zmm10,zmm10,zmm6 + vaesenclast zmm11,zmm11,zmm6 + vaesenclast zmm12,zmm12,zmm6 + + + vpxorq zmm7,zmm7,zmm0 + vpxorq zmm10,zmm10,zmm3 + vpxorq zmm11,zmm11,zmm4 + vpxorq zmm12,zmm12,zmm5 + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm7 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm10 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm11 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm12 + + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 + vmovdqa64 ZMMWORD[1024+rsp],zmm7 + vmovdqa64 ZMMWORD[1088+rsp],zmm10 + vmovdqa64 ZMMWORD[1152+rsp],zmm11 + vmovdqa64 ZMMWORD[1216+rsp],zmm12 + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_15 + vmovdqu64 zmm3,ZMMWORD[640+rsp] + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[576+rsp] + vmovdqu64 zmm5,ZMMWORD[512+rsp] + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[192+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[128+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[64+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[rsp],zmm5 +$L$_skip_hkeys_precomputation_15: + mov r14,1 + add r11,512 + sub r13,512 + + cmp r13,768 + jb NEAR $L$_no_more_big_nblocks_10 +$L$_encrypt_big_nblocks_10: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_16 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_16 +$L$_16_blocks_overflow_16: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_16: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_17 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_17 +$L$_16_blocks_overflow_17: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_17: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[256+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[320+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[384+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[448+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[448+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vpternlogq zmm24,zmm6,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm0 + vmovdqa64 ZMMWORD[832+rsp],zmm3 + vmovdqa64 ZMMWORD[896+rsp],zmm4 + vmovdqa64 ZMMWORD[960+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_18 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_18 +$L$_16_blocks_overflow_18: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_18: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[512+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[576+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[640+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[704+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + + + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpternlogq zmm6,zmm12,zmm15,0x96 + vpxorq zmm6,zmm6,zmm24 + vpternlogq zmm7,zmm13,zmm10,0x96 + vpxorq zmm7,zmm7,zmm25 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vextracti64x4 ymm12,zmm6,1 + vpxorq ymm6,ymm6,ymm12 + vextracti32x4 xmm12,ymm6,1 + vpxorq xmm6,xmm6,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm6,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[512+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[576+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[640+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[704+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[1024+rsp],zmm0 + vmovdqa64 ZMMWORD[1088+rsp],zmm3 + vmovdqa64 ZMMWORD[1152+rsp],zmm4 + vmovdqa64 ZMMWORD[1216+rsp],zmm5 + vmovdqa64 zmm14,zmm6 + + add r11,768 + sub r13,768 + cmp r13,768 + jae NEAR $L$_encrypt_big_nblocks_10 + +$L$_no_more_big_nblocks_10: + + cmp r13,512 + jae NEAR $L$_encrypt_32_blocks_10 + + cmp r13,256 + jae NEAR $L$_encrypt_16_blocks_10 +$L$_encrypt_0_blocks_ghash_32_10: + mov r10d,r13d + and r10d,~15 + mov ebx,256 + sub ebx,r10d + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + add ebx,256 + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_19 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_19 + jb NEAR $L$_last_num_blocks_is_7_1_19 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_19 + jb NEAR $L$_last_num_blocks_is_11_9_19 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_19 + ja NEAR $L$_last_num_blocks_is_16_19 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_19 + jmp NEAR $L$_last_num_blocks_is_13_19 + +$L$_last_num_blocks_is_11_9_19: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_19 + ja NEAR $L$_last_num_blocks_is_11_19 + jmp NEAR $L$_last_num_blocks_is_9_19 + +$L$_last_num_blocks_is_7_1_19: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_19 + jb NEAR $L$_last_num_blocks_is_3_1_19 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_19 + je NEAR $L$_last_num_blocks_is_6_19 + jmp NEAR $L$_last_num_blocks_is_5_19 + +$L$_last_num_blocks_is_3_1_19: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_19 + je NEAR $L$_last_num_blocks_is_2_19 +$L$_last_num_blocks_is_1_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_20 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_20 + +$L$_16_blocks_overflow_20: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_20: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm17,xmm0,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_21 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_21 +$L$_small_initial_partial_block_21: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_21 +$L$_small_initial_compute_done_21: +$L$_after_reduction_21: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_2_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_22 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_22 + +$L$_16_blocks_overflow_22: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_22: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm17,ymm0,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_23 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_23 +$L$_small_initial_partial_block_23: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_23: + + or r13,r13 + je NEAR $L$_after_reduction_23 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_23: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_3_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_24 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_24 + +$L$_16_blocks_overflow_24: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_24: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_25 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_25 +$L$_small_initial_partial_block_25: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_25: + + or r13,r13 + je NEAR $L$_after_reduction_25 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_25: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_4_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_26 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_26 + +$L$_16_blocks_overflow_26: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_26: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_27 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_27 +$L$_small_initial_partial_block_27: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_27: + + or r13,r13 + je NEAR $L$_after_reduction_27 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_27: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_5_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_28 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_28 + +$L$_16_blocks_overflow_28: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_28: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb xmm19,xmm3,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_29 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_29 +$L$_small_initial_partial_block_29: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_29: + + or r13,r13 + je NEAR $L$_after_reduction_29 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_29: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_6_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_30 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_30 + +$L$_16_blocks_overflow_30: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_30: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb ymm19,ymm3,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_31 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_31 +$L$_small_initial_partial_block_31: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_31: + + or r13,r13 + je NEAR $L$_after_reduction_31 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_31: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_7_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_32 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_32 + +$L$_16_blocks_overflow_32: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_32: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_33 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_33 +$L$_small_initial_partial_block_33: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_33: + + or r13,r13 + je NEAR $L$_after_reduction_33 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_33: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_8_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_34 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_34 + +$L$_16_blocks_overflow_34: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_34: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_35 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_35 +$L$_small_initial_partial_block_35: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_35: + + or r13,r13 + je NEAR $L$_after_reduction_35 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_35: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_9_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_36 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_36 + +$L$_16_blocks_overflow_36: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_36: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb xmm20,xmm4,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_37 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_37 +$L$_small_initial_partial_block_37: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_37: + + or r13,r13 + je NEAR $L$_after_reduction_37 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_37: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_10_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_38 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_38 + +$L$_16_blocks_overflow_38: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_38: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb ymm20,ymm4,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_39 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_39 +$L$_small_initial_partial_block_39: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_39: + + or r13,r13 + je NEAR $L$_after_reduction_39 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_39: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_11_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_40 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_40 + +$L$_16_blocks_overflow_40: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_40: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_41 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_41 +$L$_small_initial_partial_block_41: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_41: + + or r13,r13 + je NEAR $L$_after_reduction_41 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_41: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_12_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_42 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_42 + +$L$_16_blocks_overflow_42: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_42: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_43 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_43 +$L$_small_initial_partial_block_43: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_43: + + or r13,r13 + je NEAR $L$_after_reduction_43 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_43: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_13_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_44 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_44 + +$L$_16_blocks_overflow_44: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_44: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb xmm21,xmm5,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_45 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_45 +$L$_small_initial_partial_block_45: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_45: + + or r13,r13 + je NEAR $L$_after_reduction_45 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_45: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_14_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_46 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_46 + +$L$_16_blocks_overflow_46: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_46: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb ymm21,ymm5,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_47 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_47 +$L$_small_initial_partial_block_47: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_47: + + or r13,r13 + je NEAR $L$_after_reduction_47 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_47: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_15_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_48 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_48 + +$L$_16_blocks_overflow_48: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_48: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_49 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_49 +$L$_small_initial_partial_block_49: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_49: + + or r13,r13 + je NEAR $L$_after_reduction_49 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_49: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_16_19: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_50 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_50 + +$L$_16_blocks_overflow_50: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_50: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_51: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_51: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_51: + jmp NEAR $L$_last_blocks_done_19 +$L$_last_num_blocks_is_0_19: + vmovdqa64 zmm13,ZMMWORD[1024+rsp] + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1088+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1152+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1216+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_19: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_10 +$L$_encrypt_32_blocks_10: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_52 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_52 +$L$_16_blocks_overflow_52: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_52: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_53 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_53 +$L$_16_blocks_overflow_53: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_53: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[256+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[320+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[384+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[448+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[448+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vpternlogq zmm24,zmm6,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm0 + vmovdqa64 ZMMWORD[832+rsp],zmm3 + vmovdqa64 ZMMWORD[896+rsp],zmm4 + vmovdqa64 ZMMWORD[960+rsp],zmm5 + vmovdqa64 zmm13,ZMMWORD[1280+rsp] + vmovdqu64 zmm12,ZMMWORD[512+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1344+rsp] + vmovdqu64 zmm12,ZMMWORD[576+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1408+rsp] + vmovdqu64 zmm12,ZMMWORD[640+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1472+rsp] + vmovdqu64 zmm12,ZMMWORD[704+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + + sub r13,512 + add r11,512 + mov r10d,r13d + and r10d,~15 + mov ebx,512 + sub ebx,r10d + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_54 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_54 + jb NEAR $L$_last_num_blocks_is_7_1_54 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_54 + jb NEAR $L$_last_num_blocks_is_11_9_54 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_54 + ja NEAR $L$_last_num_blocks_is_16_54 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_54 + jmp NEAR $L$_last_num_blocks_is_13_54 + +$L$_last_num_blocks_is_11_9_54: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_54 + ja NEAR $L$_last_num_blocks_is_11_54 + jmp NEAR $L$_last_num_blocks_is_9_54 + +$L$_last_num_blocks_is_7_1_54: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_54 + jb NEAR $L$_last_num_blocks_is_3_1_54 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_54 + je NEAR $L$_last_num_blocks_is_6_54 + jmp NEAR $L$_last_num_blocks_is_5_54 + +$L$_last_num_blocks_is_3_1_54: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_54 + je NEAR $L$_last_num_blocks_is_2_54 +$L$_last_num_blocks_is_1_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_55 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_55 + +$L$_16_blocks_overflow_55: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_55: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm17,xmm0,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_56 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_56 +$L$_small_initial_partial_block_56: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_56 +$L$_small_initial_compute_done_56: +$L$_after_reduction_56: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_2_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_57 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_57 + +$L$_16_blocks_overflow_57: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_57: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm17,ymm0,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_58 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_58 +$L$_small_initial_partial_block_58: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_58: + + or r13,r13 + je NEAR $L$_after_reduction_58 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_58: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_3_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_59 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_59 + +$L$_16_blocks_overflow_59: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_59: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_60 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_60 +$L$_small_initial_partial_block_60: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_60: + + or r13,r13 + je NEAR $L$_after_reduction_60 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_60: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_4_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_61 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_61 + +$L$_16_blocks_overflow_61: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_61: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_62 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_62 +$L$_small_initial_partial_block_62: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_62: + + or r13,r13 + je NEAR $L$_after_reduction_62 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_62: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_5_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_63 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_63 + +$L$_16_blocks_overflow_63: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_63: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb xmm19,xmm3,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_64 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_64 +$L$_small_initial_partial_block_64: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_64: + + or r13,r13 + je NEAR $L$_after_reduction_64 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_64: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_6_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_65 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_65 + +$L$_16_blocks_overflow_65: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_65: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb ymm19,ymm3,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_66 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_66 +$L$_small_initial_partial_block_66: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_66: + + or r13,r13 + je NEAR $L$_after_reduction_66 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_66: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_7_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_67 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_67 + +$L$_16_blocks_overflow_67: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_67: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_68 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_68 +$L$_small_initial_partial_block_68: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_68: + + or r13,r13 + je NEAR $L$_after_reduction_68 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_68: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_8_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_69 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_69 + +$L$_16_blocks_overflow_69: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_69: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_70 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_70 +$L$_small_initial_partial_block_70: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_70: + + or r13,r13 + je NEAR $L$_after_reduction_70 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_70: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_9_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_71 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_71 + +$L$_16_blocks_overflow_71: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_71: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb xmm20,xmm4,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_72 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_72 +$L$_small_initial_partial_block_72: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_72: + + or r13,r13 + je NEAR $L$_after_reduction_72 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_72: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_10_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_73 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_73 + +$L$_16_blocks_overflow_73: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_73: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb ymm20,ymm4,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_74 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_74 +$L$_small_initial_partial_block_74: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_74: + + or r13,r13 + je NEAR $L$_after_reduction_74 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_74: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_11_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_75 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_75 + +$L$_16_blocks_overflow_75: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_75: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_76 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_76 +$L$_small_initial_partial_block_76: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_76: + + or r13,r13 + je NEAR $L$_after_reduction_76 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_76: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_12_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_77 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_77 + +$L$_16_blocks_overflow_77: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_77: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_78 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_78 +$L$_small_initial_partial_block_78: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_78: + + or r13,r13 + je NEAR $L$_after_reduction_78 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_78: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_13_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_79 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_79 + +$L$_16_blocks_overflow_79: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_79: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb xmm21,xmm5,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_80 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_80 +$L$_small_initial_partial_block_80: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_80: + + or r13,r13 + je NEAR $L$_after_reduction_80 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_80: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_14_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_81 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_81 + +$L$_16_blocks_overflow_81: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_81: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb ymm21,ymm5,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_82 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_82 +$L$_small_initial_partial_block_82: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_82: + + or r13,r13 + je NEAR $L$_after_reduction_82 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_82: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_15_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_83 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_83 + +$L$_16_blocks_overflow_83: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_83: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_84 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_84 +$L$_small_initial_partial_block_84: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_84: + + or r13,r13 + je NEAR $L$_after_reduction_84 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_84: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_16_54: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_85 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_85 + +$L$_16_blocks_overflow_85: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_85: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_86: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_86: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_86: + jmp NEAR $L$_last_blocks_done_54 +$L$_last_num_blocks_is_0_54: + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_54: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_10 +$L$_encrypt_16_blocks_10: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_87 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_87 +$L$_16_blocks_overflow_87: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_87: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + vmovdqa64 zmm13,ZMMWORD[1024+rsp] + vmovdqu64 zmm12,ZMMWORD[256+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1088+rsp] + vmovdqu64 zmm12,ZMMWORD[320+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1152+rsp] + vmovdqu64 zmm12,ZMMWORD[384+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1216+rsp] + vmovdqu64 zmm12,ZMMWORD[448+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + sub r13,256 + add r11,256 + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_88 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_88 + jb NEAR $L$_last_num_blocks_is_7_1_88 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_88 + jb NEAR $L$_last_num_blocks_is_11_9_88 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_88 + ja NEAR $L$_last_num_blocks_is_16_88 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_88 + jmp NEAR $L$_last_num_blocks_is_13_88 + +$L$_last_num_blocks_is_11_9_88: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_88 + ja NEAR $L$_last_num_blocks_is_11_88 + jmp NEAR $L$_last_num_blocks_is_9_88 + +$L$_last_num_blocks_is_7_1_88: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_88 + jb NEAR $L$_last_num_blocks_is_3_1_88 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_88 + je NEAR $L$_last_num_blocks_is_6_88 + jmp NEAR $L$_last_num_blocks_is_5_88 + +$L$_last_num_blocks_is_3_1_88: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_88 + je NEAR $L$_last_num_blocks_is_2_88 +$L$_last_num_blocks_is_1_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_89 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_89 + +$L$_16_blocks_overflow_89: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_89: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc xmm0,xmm0,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm17,xmm0,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_90 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_90 +$L$_small_initial_partial_block_90: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_90 +$L$_small_initial_compute_done_90: +$L$_after_reduction_90: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_2_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_91 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_91 + +$L$_16_blocks_overflow_91: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_91: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc ymm0,ymm0,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm17,ymm0,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_92 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_92 +$L$_small_initial_partial_block_92: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_92: + + or r13,r13 + je NEAR $L$_after_reduction_92 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_92: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_3_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_93 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_93 + +$L$_16_blocks_overflow_93: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_93: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_94 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_94 +$L$_small_initial_partial_block_94: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_94: + + or r13,r13 + je NEAR $L$_after_reduction_94 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_94: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_4_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_95 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_95 + +$L$_16_blocks_overflow_95: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_95: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_96 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_96 +$L$_small_initial_partial_block_96: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_96: + + or r13,r13 + je NEAR $L$_after_reduction_96 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_96: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_5_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_97 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_97 + +$L$_16_blocks_overflow_97: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_97: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb xmm19,xmm3,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_98 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_98 +$L$_small_initial_partial_block_98: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_98: + + or r13,r13 + je NEAR $L$_after_reduction_98 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_98: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_6_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_99 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_99 + +$L$_16_blocks_overflow_99: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_99: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb ymm19,ymm3,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_100 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_100 +$L$_small_initial_partial_block_100: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_100: + + or r13,r13 + je NEAR $L$_after_reduction_100 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_100: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_7_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_101 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_101 + +$L$_16_blocks_overflow_101: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_101: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_102 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_102 +$L$_small_initial_partial_block_102: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_102: + + or r13,r13 + je NEAR $L$_after_reduction_102 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_102: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_8_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_103 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_103 + +$L$_16_blocks_overflow_103: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_103: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_104 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_104 +$L$_small_initial_partial_block_104: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_104: + + or r13,r13 + je NEAR $L$_after_reduction_104 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_104: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_9_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_105 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_105 + +$L$_16_blocks_overflow_105: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_105: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb xmm20,xmm4,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_106 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_106 +$L$_small_initial_partial_block_106: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_106: + + or r13,r13 + je NEAR $L$_after_reduction_106 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_106: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_10_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_107 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_107 + +$L$_16_blocks_overflow_107: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_107: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb ymm20,ymm4,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_108 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_108 +$L$_small_initial_partial_block_108: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_108: + + or r13,r13 + je NEAR $L$_after_reduction_108 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_108: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_11_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_109 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_109 + +$L$_16_blocks_overflow_109: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_109: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_110 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_110 +$L$_small_initial_partial_block_110: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_110: + + or r13,r13 + je NEAR $L$_after_reduction_110 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_110: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_12_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_111 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_111 + +$L$_16_blocks_overflow_111: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_111: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_112 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_112 +$L$_small_initial_partial_block_112: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_112: + + or r13,r13 + je NEAR $L$_after_reduction_112 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_112: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_13_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_113 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_113 + +$L$_16_blocks_overflow_113: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_113: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb xmm21,xmm5,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_114 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_114 +$L$_small_initial_partial_block_114: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_114: + + or r13,r13 + je NEAR $L$_after_reduction_114 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_114: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_14_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_115 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_115 + +$L$_16_blocks_overflow_115: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_115: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb ymm21,ymm5,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_116 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_116 +$L$_small_initial_partial_block_116: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_116: + + or r13,r13 + je NEAR $L$_after_reduction_116 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_116: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_15_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_117 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_117 + +$L$_16_blocks_overflow_117: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_117: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_118 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_118 +$L$_small_initial_partial_block_118: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_118: + + or r13,r13 + je NEAR $L$_after_reduction_118 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_118: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_16_88: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_119 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_119 + +$L$_16_blocks_overflow_119: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_119: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_120: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_120: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_120: + jmp NEAR $L$_last_blocks_done_88 +$L$_last_num_blocks_is_0_88: + vmovdqa64 zmm13,ZMMWORD[1280+rsp] + vmovdqu64 zmm12,ZMMWORD[512+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1344+rsp] + vmovdqu64 zmm12,ZMMWORD[576+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1408+rsp] + vmovdqu64 zmm12,ZMMWORD[640+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1472+rsp] + vmovdqu64 zmm12,ZMMWORD[704+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_88: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_10 + +$L$_message_below_32_blocks_10: + + + sub r13,256 + add r11,256 + mov r10d,r13d + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_121 + vmovdqu64 zmm3,ZMMWORD[640+rsp] + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[576+rsp] + vmovdqu64 zmm5,ZMMWORD[512+rsp] + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm5 +$L$_skip_hkeys_precomputation_121: + mov r14,1 + and r10d,~15 + mov ebx,512 + sub ebx,r10d + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_122 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_122 + jb NEAR $L$_last_num_blocks_is_7_1_122 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_122 + jb NEAR $L$_last_num_blocks_is_11_9_122 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_122 + ja NEAR $L$_last_num_blocks_is_16_122 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_122 + jmp NEAR $L$_last_num_blocks_is_13_122 + +$L$_last_num_blocks_is_11_9_122: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_122 + ja NEAR $L$_last_num_blocks_is_11_122 + jmp NEAR $L$_last_num_blocks_is_9_122 + +$L$_last_num_blocks_is_7_1_122: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_122 + jb NEAR $L$_last_num_blocks_is_3_1_122 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_122 + je NEAR $L$_last_num_blocks_is_6_122 + jmp NEAR $L$_last_num_blocks_is_5_122 + +$L$_last_num_blocks_is_3_1_122: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_122 + je NEAR $L$_last_num_blocks_is_2_122 +$L$_last_num_blocks_is_1_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_123 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_123 + +$L$_16_blocks_overflow_123: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_123: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm17,xmm0,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_124 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_124 +$L$_small_initial_partial_block_124: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_124 +$L$_small_initial_compute_done_124: +$L$_after_reduction_124: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_2_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_125 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_125 + +$L$_16_blocks_overflow_125: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_125: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm17,ymm0,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_126 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_126 +$L$_small_initial_partial_block_126: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_126: + + or r13,r13 + je NEAR $L$_after_reduction_126 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_126: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_3_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_127 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_127 + +$L$_16_blocks_overflow_127: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_127: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_128 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_128 +$L$_small_initial_partial_block_128: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_128: + + or r13,r13 + je NEAR $L$_after_reduction_128 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_128: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_4_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_129 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_129 + +$L$_16_blocks_overflow_129: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_129: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_130 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_130 +$L$_small_initial_partial_block_130: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_130: + + or r13,r13 + je NEAR $L$_after_reduction_130 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_130: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_5_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_131 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_131 + +$L$_16_blocks_overflow_131: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_131: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb xmm19,xmm3,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_132 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_132 +$L$_small_initial_partial_block_132: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_132: + + or r13,r13 + je NEAR $L$_after_reduction_132 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_132: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_6_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_133 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_133 + +$L$_16_blocks_overflow_133: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_133: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb ymm19,ymm3,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_134 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_134 +$L$_small_initial_partial_block_134: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_134: + + or r13,r13 + je NEAR $L$_after_reduction_134 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_134: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_7_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_135 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_135 + +$L$_16_blocks_overflow_135: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_135: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_136 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_136 +$L$_small_initial_partial_block_136: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_136: + + or r13,r13 + je NEAR $L$_after_reduction_136 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_136: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_8_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_137 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_137 + +$L$_16_blocks_overflow_137: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_137: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_138 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_138 +$L$_small_initial_partial_block_138: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_138: + + or r13,r13 + je NEAR $L$_after_reduction_138 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_138: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_9_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_139 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_139 + +$L$_16_blocks_overflow_139: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_139: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb xmm20,xmm4,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_140 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_140 +$L$_small_initial_partial_block_140: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_140: + + or r13,r13 + je NEAR $L$_after_reduction_140 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_140: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_10_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_141 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_141 + +$L$_16_blocks_overflow_141: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_141: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb ymm20,ymm4,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_142 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_142 +$L$_small_initial_partial_block_142: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_142: + + or r13,r13 + je NEAR $L$_after_reduction_142 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_142: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_11_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_143 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_143 + +$L$_16_blocks_overflow_143: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_143: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_144 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_144 +$L$_small_initial_partial_block_144: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_144: + + or r13,r13 + je NEAR $L$_after_reduction_144 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_144: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_12_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_145 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_145 + +$L$_16_blocks_overflow_145: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_145: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_146 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_146 +$L$_small_initial_partial_block_146: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_146: + + or r13,r13 + je NEAR $L$_after_reduction_146 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_146: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_13_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_147 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_147 + +$L$_16_blocks_overflow_147: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_147: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb xmm21,xmm5,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_148 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_148 +$L$_small_initial_partial_block_148: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_148: + + or r13,r13 + je NEAR $L$_after_reduction_148 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_148: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_14_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_149 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_149 + +$L$_16_blocks_overflow_149: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_149: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb ymm21,ymm5,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_150 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_150 +$L$_small_initial_partial_block_150: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_150: + + or r13,r13 + je NEAR $L$_after_reduction_150 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_150: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_15_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_151 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_151 + +$L$_16_blocks_overflow_151: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_151: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_152 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_152 +$L$_small_initial_partial_block_152: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_152: + + or r13,r13 + je NEAR $L$_after_reduction_152 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_152: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_16_122: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_153 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_153 + +$L$_16_blocks_overflow_153: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_153: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_154: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_154: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_154: + jmp NEAR $L$_last_blocks_done_122 +$L$_last_num_blocks_is_0_122: + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_122: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_10 + +$L$_message_below_equal_16_blocks_10: + + + mov r12d,r13d + add r12d,15 + shr r12d,4 + cmp r12,8 + je NEAR $L$_small_initial_num_blocks_is_8_155 + jl NEAR $L$_small_initial_num_blocks_is_7_1_155 + + + cmp r12,12 + je NEAR $L$_small_initial_num_blocks_is_12_155 + jl NEAR $L$_small_initial_num_blocks_is_11_9_155 + + + cmp r12,16 + je NEAR $L$_small_initial_num_blocks_is_16_155 + cmp r12,15 + je NEAR $L$_small_initial_num_blocks_is_15_155 + cmp r12,14 + je NEAR $L$_small_initial_num_blocks_is_14_155 + jmp NEAR $L$_small_initial_num_blocks_is_13_155 + +$L$_small_initial_num_blocks_is_11_9_155: + + cmp r12,11 + je NEAR $L$_small_initial_num_blocks_is_11_155 + cmp r12,10 + je NEAR $L$_small_initial_num_blocks_is_10_155 + jmp NEAR $L$_small_initial_num_blocks_is_9_155 + +$L$_small_initial_num_blocks_is_7_1_155: + cmp r12,4 + je NEAR $L$_small_initial_num_blocks_is_4_155 + jl NEAR $L$_small_initial_num_blocks_is_3_1_155 + + cmp r12,7 + je NEAR $L$_small_initial_num_blocks_is_7_155 + cmp r12,6 + je NEAR $L$_small_initial_num_blocks_is_6_155 + jmp NEAR $L$_small_initial_num_blocks_is_5_155 + +$L$_small_initial_num_blocks_is_3_1_155: + + cmp r12,3 + je NEAR $L$_small_initial_num_blocks_is_3_155 + cmp r12,2 + je NEAR $L$_small_initial_num_blocks_is_2_155 + + + + + +$L$_small_initial_num_blocks_is_1_155: + vmovdqa64 xmm29,XMMWORD[SHUF_MASK] + vpaddd xmm0,xmm2,XMMWORD[ONE] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,0 + vpshufb xmm0,xmm0,xmm29 + vmovdqu8 xmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast xmm0,xmm0,xmm15 + vpxorq xmm0,xmm0,xmm6 + vextracti32x4 xmm12,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm6,xmm0,xmm29 + vextracti32x4 xmm13,zmm6,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_156 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm6,xmm20,0x01 + vpclmulqdq xmm5,xmm6,xmm20,0x10 + vpclmulqdq xmm0,xmm6,xmm20,0x11 + vpclmulqdq xmm3,xmm6,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_156 +$L$_small_initial_partial_block_156: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm13 + + jmp NEAR $L$_after_reduction_156 +$L$_small_initial_compute_done_156: +$L$_after_reduction_156: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_2_155: + vmovdqa64 ymm29,YMMWORD[SHUF_MASK] + vshufi64x2 ymm0,ymm2,ymm2,0 + vpaddd ymm0,ymm0,YMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,1 + vpshufb ymm0,ymm0,ymm29 + vmovdqu8 ymm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast ymm0,ymm0,ymm15 + vpxorq ymm0,ymm0,ymm6 + vextracti32x4 xmm12,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm6,ymm0,ymm29 + vextracti32x4 xmm13,zmm6,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_157 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm6,ymm20,0x01 + vpclmulqdq ymm5,ymm6,ymm20,0x10 + vpclmulqdq ymm0,ymm6,ymm20,0x11 + vpclmulqdq ymm3,ymm6,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_157 +$L$_small_initial_partial_block_157: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm6,xmm20,0x01 + vpclmulqdq xmm5,xmm6,xmm20,0x10 + vpclmulqdq xmm0,xmm6,xmm20,0x11 + vpclmulqdq xmm3,xmm6,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_157: + + or r13,r13 + je NEAR $L$_after_reduction_157 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_157: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_3_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,2 + vpshufb zmm0,zmm0,zmm29 + vmovdqu8 zmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vpxorq zmm0,zmm0,zmm6 + vextracti32x4 xmm12,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm6,zmm0,zmm29 + vextracti32x4 xmm13,zmm6,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_158 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_158 +$L$_small_initial_partial_block_158: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm6,ymm20,0x01 + vpclmulqdq ymm5,ymm6,ymm20,0x10 + vpclmulqdq ymm0,ymm6,ymm20,0x11 + vpclmulqdq ymm3,ymm6,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_158: + + or r13,r13 + je NEAR $L$_after_reduction_158 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_158: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_4_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,3 + vpshufb zmm0,zmm0,zmm29 + vmovdqu8 zmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vpxorq zmm0,zmm0,zmm6 + vextracti32x4 xmm12,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm6,zmm0,zmm29 + vextracti32x4 xmm13,zmm6,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_159 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_159 +$L$_small_initial_partial_block_159: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_159: + + or r13,r13 + je NEAR $L$_after_reduction_159 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_159: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_5_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 xmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast xmm3,xmm3,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq xmm3,xmm3,xmm7 + vextracti32x4 xmm12,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm0,zmm29 + vpshufb xmm7,xmm3,xmm29 + vextracti32x4 xmm13,zmm7,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_160 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm7,xmm20,0x01 + vpclmulqdq xmm5,xmm7,xmm20,0x10 + vpclmulqdq xmm0,xmm7,xmm20,0x11 + vpclmulqdq xmm3,xmm7,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_160 +$L$_small_initial_partial_block_160: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_160: + + or r13,r13 + je NEAR $L$_after_reduction_160 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_160: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_6_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 ymm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast ymm3,ymm3,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq ymm3,ymm3,ymm7 + vextracti32x4 xmm12,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm0,zmm29 + vpshufb ymm7,ymm3,ymm29 + vextracti32x4 xmm13,zmm7,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_161 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm7,ymm20,0x01 + vpclmulqdq ymm5,ymm7,ymm20,0x10 + vpclmulqdq ymm0,ymm7,ymm20,0x11 + vpclmulqdq ymm3,ymm7,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_161 +$L$_small_initial_partial_block_161: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm7,xmm20,0x01 + vpclmulqdq xmm5,xmm7,xmm20,0x10 + vpclmulqdq xmm0,xmm7,xmm20,0x11 + vpclmulqdq xmm3,xmm7,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_161: + + or r13,r13 + je NEAR $L$_after_reduction_161 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_161: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_7_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vextracti32x4 xmm12,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vextracti32x4 xmm13,zmm7,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_162 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm7,zmm20,0x01 + vpclmulqdq zmm5,zmm7,zmm20,0x10 + vpclmulqdq zmm0,zmm7,zmm20,0x11 + vpclmulqdq zmm3,zmm7,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_162 +$L$_small_initial_partial_block_162: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm7,ymm20,0x01 + vpclmulqdq ymm5,ymm7,ymm20,0x10 + vpclmulqdq ymm0,ymm7,ymm20,0x11 + vpclmulqdq ymm3,ymm7,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_162: + + or r13,r13 + je NEAR $L$_after_reduction_162 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_162: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_8_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vextracti32x4 xmm12,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vextracti32x4 xmm13,zmm7,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_163 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_163 +$L$_small_initial_partial_block_163: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm7,zmm20,0x01 + vpclmulqdq zmm5,zmm7,zmm20,0x10 + vpclmulqdq zmm0,zmm7,zmm20,0x11 + vpclmulqdq zmm3,zmm7,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_163: + + or r13,r13 + je NEAR $L$_after_reduction_163 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_163: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_9_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast xmm4,xmm4,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq xmm4,xmm4,xmm10 + vextracti32x4 xmm12,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb xmm10,xmm4,xmm29 + vextracti32x4 xmm13,zmm10,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_164 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm10,xmm20,0x01 + vpclmulqdq xmm5,xmm10,xmm20,0x10 + vpclmulqdq xmm0,xmm10,xmm20,0x11 + vpclmulqdq xmm3,xmm10,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_164 +$L$_small_initial_partial_block_164: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_164: + + or r13,r13 + je NEAR $L$_after_reduction_164 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_164: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_10_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast ymm4,ymm4,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq ymm4,ymm4,ymm10 + vextracti32x4 xmm12,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb ymm10,ymm4,ymm29 + vextracti32x4 xmm13,zmm10,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_165 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm10,ymm20,0x01 + vpclmulqdq ymm5,ymm10,ymm20,0x10 + vpclmulqdq ymm0,ymm10,ymm20,0x11 + vpclmulqdq ymm3,ymm10,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_165 +$L$_small_initial_partial_block_165: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm10,xmm20,0x01 + vpclmulqdq xmm5,xmm10,xmm20,0x10 + vpclmulqdq xmm0,xmm10,xmm20,0x11 + vpclmulqdq xmm3,xmm10,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_165: + + or r13,r13 + je NEAR $L$_after_reduction_165 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_165: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_11_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vextracti32x4 xmm12,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vextracti32x4 xmm13,zmm10,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_166 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm10,zmm20,0x01 + vpclmulqdq zmm5,zmm10,zmm20,0x10 + vpclmulqdq zmm0,zmm10,zmm20,0x11 + vpclmulqdq zmm3,zmm10,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_166 +$L$_small_initial_partial_block_166: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm10,ymm20,0x01 + vpclmulqdq ymm5,ymm10,ymm20,0x10 + vpclmulqdq ymm0,ymm10,ymm20,0x11 + vpclmulqdq ymm3,ymm10,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_166: + + or r13,r13 + je NEAR $L$_after_reduction_166 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_166: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_12_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vextracti32x4 xmm12,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vextracti32x4 xmm13,zmm10,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_167 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_167 +$L$_small_initial_partial_block_167: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm10,zmm20,0x01 + vpclmulqdq zmm5,zmm10,zmm20,0x10 + vpclmulqdq zmm0,zmm10,zmm20,0x11 + vpclmulqdq zmm3,zmm10,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_167: + + or r13,r13 + je NEAR $L$_after_reduction_167 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_167: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_13_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast xmm5,xmm5,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq xmm5,xmm5,xmm11 + vextracti32x4 xmm12,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vpshufb xmm11,xmm5,xmm29 + vextracti32x4 xmm13,zmm11,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_168 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm11,xmm20,0x01 + vpclmulqdq xmm5,xmm11,xmm20,0x10 + vpclmulqdq xmm0,xmm11,xmm20,0x11 + vpclmulqdq xmm3,xmm11,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_168 +$L$_small_initial_partial_block_168: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_168: + + or r13,r13 + je NEAR $L$_after_reduction_168 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_168: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_14_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast ymm5,ymm5,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq ymm5,ymm5,ymm11 + vextracti32x4 xmm12,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vpshufb ymm11,ymm5,ymm29 + vextracti32x4 xmm13,zmm11,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_169 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm11,ymm20,0x01 + vpclmulqdq ymm5,ymm11,ymm20,0x10 + vpclmulqdq ymm0,ymm11,ymm20,0x11 + vpclmulqdq ymm3,ymm11,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_169 +$L$_small_initial_partial_block_169: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm11,xmm20,0x01 + vpclmulqdq xmm5,xmm11,xmm20,0x10 + vpclmulqdq xmm0,xmm11,xmm20,0x11 + vpclmulqdq xmm3,xmm11,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_169: + + or r13,r13 + je NEAR $L$_after_reduction_169 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_169: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_15_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast zmm5,zmm5,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq zmm5,zmm5,zmm11 + vextracti32x4 xmm12,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vpshufb zmm11,zmm5,zmm29 + vextracti32x4 xmm13,zmm11,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_170 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm11,zmm20,0x01 + vpclmulqdq zmm5,zmm11,zmm20,0x10 + vpclmulqdq zmm0,zmm11,zmm20,0x11 + vpclmulqdq zmm3,zmm11,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_170 +$L$_small_initial_partial_block_170: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm11,ymm20,0x01 + vpclmulqdq ymm5,ymm11,ymm20,0x10 + vpclmulqdq ymm0,ymm11,ymm20,0x11 + vpclmulqdq ymm3,ymm11,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_170: + + or r13,r13 + je NEAR $L$_after_reduction_170 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_170: + jmp NEAR $L$_small_initial_blocks_encrypted_155 +$L$_small_initial_num_blocks_is_16_155: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast zmm5,zmm5,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq zmm5,zmm5,zmm11 + vextracti32x4 xmm12,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vpshufb zmm11,zmm5,zmm29 + vextracti32x4 xmm13,zmm11,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_171: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm11,zmm20,0x01 + vpclmulqdq zmm5,zmm11,zmm20,0x10 + vpclmulqdq zmm0,zmm11,zmm20,0x11 + vpclmulqdq zmm3,zmm11,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_171: + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_171: +$L$_small_initial_blocks_encrypted_155: +$L$_ghash_done_10: + vmovdqu64 XMMWORD[rdx],xmm2 + vmovdqu64 XMMWORD[64+rdx],xmm14 +$L$_enc_dec_done_10: + jmp NEAR $L$exit_gcm_encrypt +ALIGN 32 +$L$aes_gcm_encrypt_192_avx512: + cmp QWORD[112+rbp],0 + je NEAR $L$_enc_dec_done_172 + xor r14,r14 + vmovdqu64 xmm14,XMMWORD[64+rdx] + + mov r11,QWORD[r8] + or r11,r11 + je NEAR $L$_partial_block_done_173 + mov r10d,16 + lea r12,[byte_len_to_mask_table] + cmp QWORD[112+rbp],r10 + cmovc r10,QWORD[112+rbp] + add r12,r10 + add r12,r10 + kmovw k1,[r12] + vmovdqu8 xmm0{k1}{z},[r9] + + vmovdqu64 xmm3,XMMWORD[16+rdx] + vmovdqu64 xmm4,XMMWORD[336+rdx] + + + + lea r12,[SHIFT_MASK] + add r12,r11 + vmovdqu64 xmm5,XMMWORD[r12] + vpshufb xmm3,xmm3,xmm5 + vpxorq xmm3,xmm3,xmm0 + + + mov r13,QWORD[112+rbp] + add r13,r11 + sub r13,16 + jge NEAR $L$_no_extra_mask_173 + sub r12,r13 +$L$_no_extra_mask_173: + + + + vmovdqu64 xmm0,XMMWORD[16+r12] + vpand xmm3,xmm3,xmm0 + vpshufb xmm3,xmm3,XMMWORD[SHUF_MASK] + vpshufb xmm3,xmm3,xmm5 + vpxorq xmm14,xmm14,xmm3 + cmp r13,0 + jl NEAR $L$_partial_incomplete_173 + + vpclmulqdq xmm7,xmm14,xmm4,0x11 + vpclmulqdq xmm10,xmm14,xmm4,0x00 + vpclmulqdq xmm11,xmm14,xmm4,0x01 + vpclmulqdq xmm14,xmm14,xmm4,0x10 + vpxorq xmm14,xmm14,xmm11 + + vpsrldq xmm11,xmm14,8 + vpslldq xmm14,xmm14,8 + vpxorq xmm7,xmm7,xmm11 + vpxorq xmm14,xmm14,xmm10 + + + + vmovdqu64 xmm11,XMMWORD[POLY2] + + vpclmulqdq xmm10,xmm11,xmm14,0x01 + vpslldq xmm10,xmm10,8 + vpxorq xmm14,xmm14,xmm10 + + + + vpclmulqdq xmm10,xmm11,xmm14,0x00 + vpsrldq xmm10,xmm10,4 + vpclmulqdq xmm14,xmm11,xmm14,0x10 + vpslldq xmm14,xmm14,4 + + vpternlogq xmm14,xmm7,xmm10,0x96 + + mov QWORD[r8],0 + + mov r12,r11 + mov r11,16 + sub r11,r12 + jmp NEAR $L$_enc_dec_done_173 + +$L$_partial_incomplete_173: + mov r12,QWORD[112+rbp] + add QWORD[r8],r12 + mov r11,QWORD[112+rbp] + +$L$_enc_dec_done_173: + + + lea r12,[byte_len_to_mask_table] + kmovw k1,[r11*2+r12] + vmovdqu64 XMMWORD[64+rdx],xmm14 + + vpshufb xmm3,xmm3,XMMWORD[SHUF_MASK] + vpshufb xmm3,xmm3,xmm5 + mov r12,QWORD[120+rbp] + vmovdqu8 XMMWORD[r12]{k1},xmm3 +$L$_partial_block_done_173: + vmovdqu64 xmm2,XMMWORD[rdx] + mov r13,QWORD[112+rbp] + sub r13,r11 + je NEAR $L$_enc_dec_done_172 + cmp r13,256 + jbe NEAR $L$_message_below_equal_16_blocks_172 + + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vmovdqa64 zmm27,ZMMWORD[ddq_addbe_4444] + vmovdqa64 zmm28,ZMMWORD[ddq_addbe_1234] + + + + + + + vmovd r15d,xmm2 + and r15d,255 + + vshufi64x2 zmm2,zmm2,zmm2,0 + vpshufb zmm2,zmm2,zmm29 + + + + cmp r15b,240 + jae NEAR $L$_next_16_overflow_174 + vpaddd zmm7,zmm2,zmm28 + vpaddd zmm10,zmm7,zmm27 + vpaddd zmm11,zmm10,zmm27 + vpaddd zmm12,zmm11,zmm27 + jmp NEAR $L$_next_16_ok_174 +$L$_next_16_overflow_174: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm12,ZMMWORD[ddq_add_4444] + vpaddd zmm7,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm10,zmm7,zmm12 + vpaddd zmm11,zmm10,zmm12 + vpaddd zmm12,zmm11,zmm12 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 +$L$_next_16_ok_174: + vshufi64x2 zmm2,zmm12,zmm12,255 + add r15b,16 + + vmovdqu8 zmm0,ZMMWORD[r11*1+r9] + vmovdqu8 zmm3,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm4,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm5,ZMMWORD[192+r11*1+r9] + + + vbroadcastf64x2 zmm6,ZMMWORD[rcx] + vpxorq zmm7,zmm7,zmm6 + vpxorq zmm10,zmm10,zmm6 + vpxorq zmm11,zmm11,zmm6 + vpxorq zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[16+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[32+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[48+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[64+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[80+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[96+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[112+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[128+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[144+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[160+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[176+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[192+rcx] + vaesenclast zmm7,zmm7,zmm6 + vaesenclast zmm10,zmm10,zmm6 + vaesenclast zmm11,zmm11,zmm6 + vaesenclast zmm12,zmm12,zmm6 + + + vpxorq zmm7,zmm7,zmm0 + vpxorq zmm10,zmm10,zmm3 + vpxorq zmm11,zmm11,zmm4 + vpxorq zmm12,zmm12,zmm5 + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm7 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm10 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm11 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm12 + + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm7 + vmovdqa64 ZMMWORD[832+rsp],zmm10 + vmovdqa64 ZMMWORD[896+rsp],zmm11 + vmovdqa64 ZMMWORD[960+rsp],zmm12 + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_175 + + vmovdqu64 zmm0,ZMMWORD[288+rdx] + vmovdqu64 ZMMWORD[704+rsp],zmm0 + + vmovdqu64 zmm3,ZMMWORD[224+rdx] + vmovdqu64 ZMMWORD[640+rsp],zmm3 + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[160+rdx] + vmovdqu64 ZMMWORD[576+rsp],zmm4 + + vmovdqu64 zmm5,ZMMWORD[96+rdx] + vmovdqu64 ZMMWORD[512+rsp],zmm5 +$L$_skip_hkeys_precomputation_175: + cmp r13,512 + jb NEAR $L$_message_below_32_blocks_172 + + + + cmp r15b,240 + jae NEAR $L$_next_16_overflow_176 + vpaddd zmm7,zmm2,zmm28 + vpaddd zmm10,zmm7,zmm27 + vpaddd zmm11,zmm10,zmm27 + vpaddd zmm12,zmm11,zmm27 + jmp NEAR $L$_next_16_ok_176 +$L$_next_16_overflow_176: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm12,ZMMWORD[ddq_add_4444] + vpaddd zmm7,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm10,zmm7,zmm12 + vpaddd zmm11,zmm10,zmm12 + vpaddd zmm12,zmm11,zmm12 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 +$L$_next_16_ok_176: + vshufi64x2 zmm2,zmm12,zmm12,255 + add r15b,16 + + vmovdqu8 zmm0,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm3,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm4,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm5,ZMMWORD[448+r11*1+r9] + + + vbroadcastf64x2 zmm6,ZMMWORD[rcx] + vpxorq zmm7,zmm7,zmm6 + vpxorq zmm10,zmm10,zmm6 + vpxorq zmm11,zmm11,zmm6 + vpxorq zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[16+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[32+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[48+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[64+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[80+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[96+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[112+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[128+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[144+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[160+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[176+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[192+rcx] + vaesenclast zmm7,zmm7,zmm6 + vaesenclast zmm10,zmm10,zmm6 + vaesenclast zmm11,zmm11,zmm6 + vaesenclast zmm12,zmm12,zmm6 + + + vpxorq zmm7,zmm7,zmm0 + vpxorq zmm10,zmm10,zmm3 + vpxorq zmm11,zmm11,zmm4 + vpxorq zmm12,zmm12,zmm5 + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm7 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm10 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm11 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm12 + + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 + vmovdqa64 ZMMWORD[1024+rsp],zmm7 + vmovdqa64 ZMMWORD[1088+rsp],zmm10 + vmovdqa64 ZMMWORD[1152+rsp],zmm11 + vmovdqa64 ZMMWORD[1216+rsp],zmm12 + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_177 + vmovdqu64 zmm3,ZMMWORD[640+rsp] + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[576+rsp] + vmovdqu64 zmm5,ZMMWORD[512+rsp] + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[192+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[128+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[64+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[rsp],zmm5 +$L$_skip_hkeys_precomputation_177: + mov r14,1 + add r11,512 + sub r13,512 + + cmp r13,768 + jb NEAR $L$_no_more_big_nblocks_172 +$L$_encrypt_big_nblocks_172: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_178 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_178 +$L$_16_blocks_overflow_178: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_178: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_179 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_179 +$L$_16_blocks_overflow_179: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_179: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[256+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[320+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[384+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[448+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[448+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vpternlogq zmm24,zmm6,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm0 + vmovdqa64 ZMMWORD[832+rsp],zmm3 + vmovdqa64 ZMMWORD[896+rsp],zmm4 + vmovdqa64 ZMMWORD[960+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_180 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_180 +$L$_16_blocks_overflow_180: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_180: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[512+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[576+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[640+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[704+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + + + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpternlogq zmm6,zmm12,zmm15,0x96 + vpxorq zmm6,zmm6,zmm24 + vpternlogq zmm7,zmm13,zmm10,0x96 + vpxorq zmm7,zmm7,zmm25 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vextracti64x4 ymm12,zmm6,1 + vpxorq ymm6,ymm6,ymm12 + vextracti32x4 xmm12,ymm6,1 + vpxorq xmm6,xmm6,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm6,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[512+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[576+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[640+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[704+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[1024+rsp],zmm0 + vmovdqa64 ZMMWORD[1088+rsp],zmm3 + vmovdqa64 ZMMWORD[1152+rsp],zmm4 + vmovdqa64 ZMMWORD[1216+rsp],zmm5 + vmovdqa64 zmm14,zmm6 + + add r11,768 + sub r13,768 + cmp r13,768 + jae NEAR $L$_encrypt_big_nblocks_172 + +$L$_no_more_big_nblocks_172: + + cmp r13,512 + jae NEAR $L$_encrypt_32_blocks_172 + + cmp r13,256 + jae NEAR $L$_encrypt_16_blocks_172 +$L$_encrypt_0_blocks_ghash_32_172: + mov r10d,r13d + and r10d,~15 + mov ebx,256 + sub ebx,r10d + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + add ebx,256 + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_181 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_181 + jb NEAR $L$_last_num_blocks_is_7_1_181 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_181 + jb NEAR $L$_last_num_blocks_is_11_9_181 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_181 + ja NEAR $L$_last_num_blocks_is_16_181 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_181 + jmp NEAR $L$_last_num_blocks_is_13_181 + +$L$_last_num_blocks_is_11_9_181: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_181 + ja NEAR $L$_last_num_blocks_is_11_181 + jmp NEAR $L$_last_num_blocks_is_9_181 + +$L$_last_num_blocks_is_7_1_181: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_181 + jb NEAR $L$_last_num_blocks_is_3_1_181 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_181 + je NEAR $L$_last_num_blocks_is_6_181 + jmp NEAR $L$_last_num_blocks_is_5_181 + +$L$_last_num_blocks_is_3_1_181: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_181 + je NEAR $L$_last_num_blocks_is_2_181 +$L$_last_num_blocks_is_1_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_182 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_182 + +$L$_16_blocks_overflow_182: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_182: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm17,xmm0,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_183 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_183 +$L$_small_initial_partial_block_183: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_183 +$L$_small_initial_compute_done_183: +$L$_after_reduction_183: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_2_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_184 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_184 + +$L$_16_blocks_overflow_184: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_184: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm17,ymm0,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_185 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_185 +$L$_small_initial_partial_block_185: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_185: + + or r13,r13 + je NEAR $L$_after_reduction_185 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_185: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_3_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_186 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_186 + +$L$_16_blocks_overflow_186: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_186: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_187 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_187 +$L$_small_initial_partial_block_187: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_187: + + or r13,r13 + je NEAR $L$_after_reduction_187 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_187: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_4_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_188 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_188 + +$L$_16_blocks_overflow_188: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_188: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_189 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_189 +$L$_small_initial_partial_block_189: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_189: + + or r13,r13 + je NEAR $L$_after_reduction_189 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_189: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_5_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_190 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_190 + +$L$_16_blocks_overflow_190: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_190: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb xmm19,xmm3,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_191 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_191 +$L$_small_initial_partial_block_191: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_191: + + or r13,r13 + je NEAR $L$_after_reduction_191 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_191: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_6_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_192 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_192 + +$L$_16_blocks_overflow_192: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_192: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb ymm19,ymm3,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_193 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_193 +$L$_small_initial_partial_block_193: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_193: + + or r13,r13 + je NEAR $L$_after_reduction_193 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_193: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_7_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_194 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_194 + +$L$_16_blocks_overflow_194: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_194: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_195 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_195 +$L$_small_initial_partial_block_195: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_195: + + or r13,r13 + je NEAR $L$_after_reduction_195 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_195: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_8_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_196 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_196 + +$L$_16_blocks_overflow_196: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_196: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_197 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_197 +$L$_small_initial_partial_block_197: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_197: + + or r13,r13 + je NEAR $L$_after_reduction_197 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_197: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_9_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_198 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_198 + +$L$_16_blocks_overflow_198: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_198: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb xmm20,xmm4,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_199 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_199 +$L$_small_initial_partial_block_199: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_199: + + or r13,r13 + je NEAR $L$_after_reduction_199 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_199: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_10_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_200 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_200 + +$L$_16_blocks_overflow_200: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_200: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb ymm20,ymm4,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_201 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_201 +$L$_small_initial_partial_block_201: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_201: + + or r13,r13 + je NEAR $L$_after_reduction_201 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_201: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_11_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_202 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_202 + +$L$_16_blocks_overflow_202: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_202: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_203 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_203 +$L$_small_initial_partial_block_203: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_203: + + or r13,r13 + je NEAR $L$_after_reduction_203 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_203: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_12_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_204 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_204 + +$L$_16_blocks_overflow_204: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_204: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_205 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_205 +$L$_small_initial_partial_block_205: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_205: + + or r13,r13 + je NEAR $L$_after_reduction_205 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_205: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_13_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_206 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_206 + +$L$_16_blocks_overflow_206: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_206: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb xmm21,xmm5,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_207 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_207 +$L$_small_initial_partial_block_207: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_207: + + or r13,r13 + je NEAR $L$_after_reduction_207 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_207: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_14_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_208 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_208 + +$L$_16_blocks_overflow_208: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_208: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb ymm21,ymm5,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_209 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_209 +$L$_small_initial_partial_block_209: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_209: + + or r13,r13 + je NEAR $L$_after_reduction_209 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_209: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_15_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_210 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_210 + +$L$_16_blocks_overflow_210: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_210: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_211 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_211 +$L$_small_initial_partial_block_211: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_211: + + or r13,r13 + je NEAR $L$_after_reduction_211 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_211: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_16_181: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_212 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_212 + +$L$_16_blocks_overflow_212: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_212: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_213: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_213: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_213: + jmp NEAR $L$_last_blocks_done_181 +$L$_last_num_blocks_is_0_181: + vmovdqa64 zmm13,ZMMWORD[1024+rsp] + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1088+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1152+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1216+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_181: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_172 +$L$_encrypt_32_blocks_172: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_214 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_214 +$L$_16_blocks_overflow_214: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_214: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_215 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_215 +$L$_16_blocks_overflow_215: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_215: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[256+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[320+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[384+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[448+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[448+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vpternlogq zmm24,zmm6,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm0 + vmovdqa64 ZMMWORD[832+rsp],zmm3 + vmovdqa64 ZMMWORD[896+rsp],zmm4 + vmovdqa64 ZMMWORD[960+rsp],zmm5 + vmovdqa64 zmm13,ZMMWORD[1280+rsp] + vmovdqu64 zmm12,ZMMWORD[512+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1344+rsp] + vmovdqu64 zmm12,ZMMWORD[576+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1408+rsp] + vmovdqu64 zmm12,ZMMWORD[640+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1472+rsp] + vmovdqu64 zmm12,ZMMWORD[704+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + + sub r13,512 + add r11,512 + mov r10d,r13d + and r10d,~15 + mov ebx,512 + sub ebx,r10d + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_216 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_216 + jb NEAR $L$_last_num_blocks_is_7_1_216 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_216 + jb NEAR $L$_last_num_blocks_is_11_9_216 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_216 + ja NEAR $L$_last_num_blocks_is_16_216 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_216 + jmp NEAR $L$_last_num_blocks_is_13_216 + +$L$_last_num_blocks_is_11_9_216: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_216 + ja NEAR $L$_last_num_blocks_is_11_216 + jmp NEAR $L$_last_num_blocks_is_9_216 + +$L$_last_num_blocks_is_7_1_216: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_216 + jb NEAR $L$_last_num_blocks_is_3_1_216 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_216 + je NEAR $L$_last_num_blocks_is_6_216 + jmp NEAR $L$_last_num_blocks_is_5_216 + +$L$_last_num_blocks_is_3_1_216: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_216 + je NEAR $L$_last_num_blocks_is_2_216 +$L$_last_num_blocks_is_1_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_217 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_217 + +$L$_16_blocks_overflow_217: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_217: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm17,xmm0,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_218 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_218 +$L$_small_initial_partial_block_218: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_218 +$L$_small_initial_compute_done_218: +$L$_after_reduction_218: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_2_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_219 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_219 + +$L$_16_blocks_overflow_219: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_219: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm17,ymm0,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_220 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_220 +$L$_small_initial_partial_block_220: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_220: + + or r13,r13 + je NEAR $L$_after_reduction_220 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_220: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_3_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_221 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_221 + +$L$_16_blocks_overflow_221: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_221: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_222 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_222 +$L$_small_initial_partial_block_222: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_222: + + or r13,r13 + je NEAR $L$_after_reduction_222 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_222: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_4_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_223 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_223 + +$L$_16_blocks_overflow_223: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_223: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_224 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_224 +$L$_small_initial_partial_block_224: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_224: + + or r13,r13 + je NEAR $L$_after_reduction_224 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_224: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_5_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_225 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_225 + +$L$_16_blocks_overflow_225: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_225: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb xmm19,xmm3,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_226 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_226 +$L$_small_initial_partial_block_226: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_226: + + or r13,r13 + je NEAR $L$_after_reduction_226 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_226: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_6_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_227 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_227 + +$L$_16_blocks_overflow_227: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_227: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb ymm19,ymm3,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_228 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_228 +$L$_small_initial_partial_block_228: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_228: + + or r13,r13 + je NEAR $L$_after_reduction_228 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_228: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_7_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_229 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_229 + +$L$_16_blocks_overflow_229: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_229: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_230 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_230 +$L$_small_initial_partial_block_230: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_230: + + or r13,r13 + je NEAR $L$_after_reduction_230 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_230: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_8_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_231 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_231 + +$L$_16_blocks_overflow_231: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_231: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_232 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_232 +$L$_small_initial_partial_block_232: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_232: + + or r13,r13 + je NEAR $L$_after_reduction_232 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_232: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_9_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_233 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_233 + +$L$_16_blocks_overflow_233: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_233: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb xmm20,xmm4,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_234 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_234 +$L$_small_initial_partial_block_234: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_234: + + or r13,r13 + je NEAR $L$_after_reduction_234 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_234: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_10_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_235 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_235 + +$L$_16_blocks_overflow_235: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_235: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb ymm20,ymm4,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_236 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_236 +$L$_small_initial_partial_block_236: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_236: + + or r13,r13 + je NEAR $L$_after_reduction_236 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_236: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_11_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_237 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_237 + +$L$_16_blocks_overflow_237: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_237: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_238 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_238 +$L$_small_initial_partial_block_238: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_238: + + or r13,r13 + je NEAR $L$_after_reduction_238 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_238: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_12_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_239 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_239 + +$L$_16_blocks_overflow_239: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_239: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_240 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_240 +$L$_small_initial_partial_block_240: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_240: + + or r13,r13 + je NEAR $L$_after_reduction_240 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_240: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_13_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_241 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_241 + +$L$_16_blocks_overflow_241: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_241: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb xmm21,xmm5,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_242 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_242 +$L$_small_initial_partial_block_242: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_242: + + or r13,r13 + je NEAR $L$_after_reduction_242 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_242: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_14_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_243 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_243 + +$L$_16_blocks_overflow_243: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_243: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb ymm21,ymm5,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_244 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_244 +$L$_small_initial_partial_block_244: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_244: + + or r13,r13 + je NEAR $L$_after_reduction_244 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_244: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_15_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_245 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_245 + +$L$_16_blocks_overflow_245: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_245: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_246 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_246 +$L$_small_initial_partial_block_246: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_246: + + or r13,r13 + je NEAR $L$_after_reduction_246 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_246: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_16_216: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_247 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_247 + +$L$_16_blocks_overflow_247: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_247: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_248: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_248: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_248: + jmp NEAR $L$_last_blocks_done_216 +$L$_last_num_blocks_is_0_216: + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_216: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_172 +$L$_encrypt_16_blocks_172: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_249 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_249 +$L$_16_blocks_overflow_249: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_249: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + vmovdqa64 zmm13,ZMMWORD[1024+rsp] + vmovdqu64 zmm12,ZMMWORD[256+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1088+rsp] + vmovdqu64 zmm12,ZMMWORD[320+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1152+rsp] + vmovdqu64 zmm12,ZMMWORD[384+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1216+rsp] + vmovdqu64 zmm12,ZMMWORD[448+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + sub r13,256 + add r11,256 + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_250 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_250 + jb NEAR $L$_last_num_blocks_is_7_1_250 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_250 + jb NEAR $L$_last_num_blocks_is_11_9_250 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_250 + ja NEAR $L$_last_num_blocks_is_16_250 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_250 + jmp NEAR $L$_last_num_blocks_is_13_250 + +$L$_last_num_blocks_is_11_9_250: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_250 + ja NEAR $L$_last_num_blocks_is_11_250 + jmp NEAR $L$_last_num_blocks_is_9_250 + +$L$_last_num_blocks_is_7_1_250: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_250 + jb NEAR $L$_last_num_blocks_is_3_1_250 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_250 + je NEAR $L$_last_num_blocks_is_6_250 + jmp NEAR $L$_last_num_blocks_is_5_250 + +$L$_last_num_blocks_is_3_1_250: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_250 + je NEAR $L$_last_num_blocks_is_2_250 +$L$_last_num_blocks_is_1_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_251 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_251 + +$L$_16_blocks_overflow_251: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_251: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc xmm0,xmm0,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm17,xmm0,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_252 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_252 +$L$_small_initial_partial_block_252: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_252 +$L$_small_initial_compute_done_252: +$L$_after_reduction_252: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_2_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_253 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_253 + +$L$_16_blocks_overflow_253: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_253: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc ymm0,ymm0,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm17,ymm0,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_254 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_254 +$L$_small_initial_partial_block_254: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_254: + + or r13,r13 + je NEAR $L$_after_reduction_254 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_254: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_3_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_255 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_255 + +$L$_16_blocks_overflow_255: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_255: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_256 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_256 +$L$_small_initial_partial_block_256: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_256: + + or r13,r13 + je NEAR $L$_after_reduction_256 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_256: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_4_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_257 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_257 + +$L$_16_blocks_overflow_257: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_257: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_258 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_258 +$L$_small_initial_partial_block_258: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_258: + + or r13,r13 + je NEAR $L$_after_reduction_258 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_258: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_5_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_259 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_259 + +$L$_16_blocks_overflow_259: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_259: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb xmm19,xmm3,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_260 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_260 +$L$_small_initial_partial_block_260: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_260: + + or r13,r13 + je NEAR $L$_after_reduction_260 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_260: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_6_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_261 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_261 + +$L$_16_blocks_overflow_261: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_261: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb ymm19,ymm3,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_262 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_262 +$L$_small_initial_partial_block_262: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_262: + + or r13,r13 + je NEAR $L$_after_reduction_262 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_262: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_7_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_263 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_263 + +$L$_16_blocks_overflow_263: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_263: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_264 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_264 +$L$_small_initial_partial_block_264: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_264: + + or r13,r13 + je NEAR $L$_after_reduction_264 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_264: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_8_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_265 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_265 + +$L$_16_blocks_overflow_265: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_265: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_266 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_266 +$L$_small_initial_partial_block_266: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_266: + + or r13,r13 + je NEAR $L$_after_reduction_266 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_266: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_9_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_267 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_267 + +$L$_16_blocks_overflow_267: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_267: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb xmm20,xmm4,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_268 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_268 +$L$_small_initial_partial_block_268: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_268: + + or r13,r13 + je NEAR $L$_after_reduction_268 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_268: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_10_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_269 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_269 + +$L$_16_blocks_overflow_269: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_269: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb ymm20,ymm4,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_270 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_270 +$L$_small_initial_partial_block_270: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_270: + + or r13,r13 + je NEAR $L$_after_reduction_270 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_270: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_11_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_271 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_271 + +$L$_16_blocks_overflow_271: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_271: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_272 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_272 +$L$_small_initial_partial_block_272: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_272: + + or r13,r13 + je NEAR $L$_after_reduction_272 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_272: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_12_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_273 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_273 + +$L$_16_blocks_overflow_273: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_273: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_274 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_274 +$L$_small_initial_partial_block_274: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_274: + + or r13,r13 + je NEAR $L$_after_reduction_274 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_274: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_13_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_275 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_275 + +$L$_16_blocks_overflow_275: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_275: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb xmm21,xmm5,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_276 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_276 +$L$_small_initial_partial_block_276: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_276: + + or r13,r13 + je NEAR $L$_after_reduction_276 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_276: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_14_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_277 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_277 + +$L$_16_blocks_overflow_277: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_277: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb ymm21,ymm5,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_278 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_278 +$L$_small_initial_partial_block_278: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_278: + + or r13,r13 + je NEAR $L$_after_reduction_278 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_278: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_15_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_279 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_279 + +$L$_16_blocks_overflow_279: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_279: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_280 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_280 +$L$_small_initial_partial_block_280: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_280: + + or r13,r13 + je NEAR $L$_after_reduction_280 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_280: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_16_250: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_281 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_281 + +$L$_16_blocks_overflow_281: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_281: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_282: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_282: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_282: + jmp NEAR $L$_last_blocks_done_250 +$L$_last_num_blocks_is_0_250: + vmovdqa64 zmm13,ZMMWORD[1280+rsp] + vmovdqu64 zmm12,ZMMWORD[512+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1344+rsp] + vmovdqu64 zmm12,ZMMWORD[576+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1408+rsp] + vmovdqu64 zmm12,ZMMWORD[640+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1472+rsp] + vmovdqu64 zmm12,ZMMWORD[704+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_250: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_172 + +$L$_message_below_32_blocks_172: + + + sub r13,256 + add r11,256 + mov r10d,r13d + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_283 + vmovdqu64 zmm3,ZMMWORD[640+rsp] + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[576+rsp] + vmovdqu64 zmm5,ZMMWORD[512+rsp] + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm5 +$L$_skip_hkeys_precomputation_283: + mov r14,1 + and r10d,~15 + mov ebx,512 + sub ebx,r10d + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_284 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_284 + jb NEAR $L$_last_num_blocks_is_7_1_284 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_284 + jb NEAR $L$_last_num_blocks_is_11_9_284 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_284 + ja NEAR $L$_last_num_blocks_is_16_284 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_284 + jmp NEAR $L$_last_num_blocks_is_13_284 + +$L$_last_num_blocks_is_11_9_284: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_284 + ja NEAR $L$_last_num_blocks_is_11_284 + jmp NEAR $L$_last_num_blocks_is_9_284 + +$L$_last_num_blocks_is_7_1_284: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_284 + jb NEAR $L$_last_num_blocks_is_3_1_284 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_284 + je NEAR $L$_last_num_blocks_is_6_284 + jmp NEAR $L$_last_num_blocks_is_5_284 + +$L$_last_num_blocks_is_3_1_284: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_284 + je NEAR $L$_last_num_blocks_is_2_284 +$L$_last_num_blocks_is_1_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_285 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_285 + +$L$_16_blocks_overflow_285: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_285: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm17,xmm0,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_286 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_286 +$L$_small_initial_partial_block_286: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_286 +$L$_small_initial_compute_done_286: +$L$_after_reduction_286: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_2_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_287 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_287 + +$L$_16_blocks_overflow_287: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_287: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm17,ymm0,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_288 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_288 +$L$_small_initial_partial_block_288: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_288: + + or r13,r13 + je NEAR $L$_after_reduction_288 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_288: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_3_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_289 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_289 + +$L$_16_blocks_overflow_289: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_289: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_290 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_290 +$L$_small_initial_partial_block_290: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_290: + + or r13,r13 + je NEAR $L$_after_reduction_290 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_290: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_4_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_291 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_291 + +$L$_16_blocks_overflow_291: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_291: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_292 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_292 +$L$_small_initial_partial_block_292: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_292: + + or r13,r13 + je NEAR $L$_after_reduction_292 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_292: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_5_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_293 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_293 + +$L$_16_blocks_overflow_293: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_293: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb xmm19,xmm3,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_294 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_294 +$L$_small_initial_partial_block_294: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_294: + + or r13,r13 + je NEAR $L$_after_reduction_294 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_294: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_6_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_295 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_295 + +$L$_16_blocks_overflow_295: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_295: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb ymm19,ymm3,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_296 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_296 +$L$_small_initial_partial_block_296: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_296: + + or r13,r13 + je NEAR $L$_after_reduction_296 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_296: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_7_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_297 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_297 + +$L$_16_blocks_overflow_297: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_297: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_298 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_298 +$L$_small_initial_partial_block_298: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_298: + + or r13,r13 + je NEAR $L$_after_reduction_298 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_298: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_8_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_299 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_299 + +$L$_16_blocks_overflow_299: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_299: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_300 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_300 +$L$_small_initial_partial_block_300: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_300: + + or r13,r13 + je NEAR $L$_after_reduction_300 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_300: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_9_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_301 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_301 + +$L$_16_blocks_overflow_301: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_301: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb xmm20,xmm4,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_302 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_302 +$L$_small_initial_partial_block_302: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_302: + + or r13,r13 + je NEAR $L$_after_reduction_302 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_302: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_10_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_303 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_303 + +$L$_16_blocks_overflow_303: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_303: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb ymm20,ymm4,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_304 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_304 +$L$_small_initial_partial_block_304: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_304: + + or r13,r13 + je NEAR $L$_after_reduction_304 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_304: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_11_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_305 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_305 + +$L$_16_blocks_overflow_305: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_305: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_306 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_306 +$L$_small_initial_partial_block_306: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_306: + + or r13,r13 + je NEAR $L$_after_reduction_306 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_306: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_12_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_307 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_307 + +$L$_16_blocks_overflow_307: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_307: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_308 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_308 +$L$_small_initial_partial_block_308: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_308: + + or r13,r13 + je NEAR $L$_after_reduction_308 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_308: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_13_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_309 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_309 + +$L$_16_blocks_overflow_309: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_309: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb xmm21,xmm5,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_310 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_310 +$L$_small_initial_partial_block_310: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_310: + + or r13,r13 + je NEAR $L$_after_reduction_310 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_310: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_14_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_311 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_311 + +$L$_16_blocks_overflow_311: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_311: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb ymm21,ymm5,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_312 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_312 +$L$_small_initial_partial_block_312: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_312: + + or r13,r13 + je NEAR $L$_after_reduction_312 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_312: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_15_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_313 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_313 + +$L$_16_blocks_overflow_313: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_313: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_314 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_314 +$L$_small_initial_partial_block_314: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_314: + + or r13,r13 + je NEAR $L$_after_reduction_314 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_314: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_16_284: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_315 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_315 + +$L$_16_blocks_overflow_315: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_315: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_316: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_316: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_316: + jmp NEAR $L$_last_blocks_done_284 +$L$_last_num_blocks_is_0_284: + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_284: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_172 + +$L$_message_below_equal_16_blocks_172: + + + mov r12d,r13d + add r12d,15 + shr r12d,4 + cmp r12,8 + je NEAR $L$_small_initial_num_blocks_is_8_317 + jl NEAR $L$_small_initial_num_blocks_is_7_1_317 + + + cmp r12,12 + je NEAR $L$_small_initial_num_blocks_is_12_317 + jl NEAR $L$_small_initial_num_blocks_is_11_9_317 + + + cmp r12,16 + je NEAR $L$_small_initial_num_blocks_is_16_317 + cmp r12,15 + je NEAR $L$_small_initial_num_blocks_is_15_317 + cmp r12,14 + je NEAR $L$_small_initial_num_blocks_is_14_317 + jmp NEAR $L$_small_initial_num_blocks_is_13_317 + +$L$_small_initial_num_blocks_is_11_9_317: + + cmp r12,11 + je NEAR $L$_small_initial_num_blocks_is_11_317 + cmp r12,10 + je NEAR $L$_small_initial_num_blocks_is_10_317 + jmp NEAR $L$_small_initial_num_blocks_is_9_317 + +$L$_small_initial_num_blocks_is_7_1_317: + cmp r12,4 + je NEAR $L$_small_initial_num_blocks_is_4_317 + jl NEAR $L$_small_initial_num_blocks_is_3_1_317 + + cmp r12,7 + je NEAR $L$_small_initial_num_blocks_is_7_317 + cmp r12,6 + je NEAR $L$_small_initial_num_blocks_is_6_317 + jmp NEAR $L$_small_initial_num_blocks_is_5_317 + +$L$_small_initial_num_blocks_is_3_1_317: + + cmp r12,3 + je NEAR $L$_small_initial_num_blocks_is_3_317 + cmp r12,2 + je NEAR $L$_small_initial_num_blocks_is_2_317 + + + + + +$L$_small_initial_num_blocks_is_1_317: + vmovdqa64 xmm29,XMMWORD[SHUF_MASK] + vpaddd xmm0,xmm2,XMMWORD[ONE] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,0 + vpshufb xmm0,xmm0,xmm29 + vmovdqu8 xmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast xmm0,xmm0,xmm15 + vpxorq xmm0,xmm0,xmm6 + vextracti32x4 xmm12,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm6,xmm0,xmm29 + vextracti32x4 xmm13,zmm6,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_318 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm6,xmm20,0x01 + vpclmulqdq xmm5,xmm6,xmm20,0x10 + vpclmulqdq xmm0,xmm6,xmm20,0x11 + vpclmulqdq xmm3,xmm6,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_318 +$L$_small_initial_partial_block_318: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm13 + + jmp NEAR $L$_after_reduction_318 +$L$_small_initial_compute_done_318: +$L$_after_reduction_318: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_2_317: + vmovdqa64 ymm29,YMMWORD[SHUF_MASK] + vshufi64x2 ymm0,ymm2,ymm2,0 + vpaddd ymm0,ymm0,YMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,1 + vpshufb ymm0,ymm0,ymm29 + vmovdqu8 ymm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast ymm0,ymm0,ymm15 + vpxorq ymm0,ymm0,ymm6 + vextracti32x4 xmm12,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm6,ymm0,ymm29 + vextracti32x4 xmm13,zmm6,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_319 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm6,ymm20,0x01 + vpclmulqdq ymm5,ymm6,ymm20,0x10 + vpclmulqdq ymm0,ymm6,ymm20,0x11 + vpclmulqdq ymm3,ymm6,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_319 +$L$_small_initial_partial_block_319: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm6,xmm20,0x01 + vpclmulqdq xmm5,xmm6,xmm20,0x10 + vpclmulqdq xmm0,xmm6,xmm20,0x11 + vpclmulqdq xmm3,xmm6,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_319: + + or r13,r13 + je NEAR $L$_after_reduction_319 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_319: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_3_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,2 + vpshufb zmm0,zmm0,zmm29 + vmovdqu8 zmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vpxorq zmm0,zmm0,zmm6 + vextracti32x4 xmm12,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm6,zmm0,zmm29 + vextracti32x4 xmm13,zmm6,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_320 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_320 +$L$_small_initial_partial_block_320: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm6,ymm20,0x01 + vpclmulqdq ymm5,ymm6,ymm20,0x10 + vpclmulqdq ymm0,ymm6,ymm20,0x11 + vpclmulqdq ymm3,ymm6,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_320: + + or r13,r13 + je NEAR $L$_after_reduction_320 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_320: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_4_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,3 + vpshufb zmm0,zmm0,zmm29 + vmovdqu8 zmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vpxorq zmm0,zmm0,zmm6 + vextracti32x4 xmm12,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm6,zmm0,zmm29 + vextracti32x4 xmm13,zmm6,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_321 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_321 +$L$_small_initial_partial_block_321: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_321: + + or r13,r13 + je NEAR $L$_after_reduction_321 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_321: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_5_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 xmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast xmm3,xmm3,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq xmm3,xmm3,xmm7 + vextracti32x4 xmm12,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm0,zmm29 + vpshufb xmm7,xmm3,xmm29 + vextracti32x4 xmm13,zmm7,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_322 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm7,xmm20,0x01 + vpclmulqdq xmm5,xmm7,xmm20,0x10 + vpclmulqdq xmm0,xmm7,xmm20,0x11 + vpclmulqdq xmm3,xmm7,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_322 +$L$_small_initial_partial_block_322: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_322: + + or r13,r13 + je NEAR $L$_after_reduction_322 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_322: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_6_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 ymm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast ymm3,ymm3,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq ymm3,ymm3,ymm7 + vextracti32x4 xmm12,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm0,zmm29 + vpshufb ymm7,ymm3,ymm29 + vextracti32x4 xmm13,zmm7,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_323 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm7,ymm20,0x01 + vpclmulqdq ymm5,ymm7,ymm20,0x10 + vpclmulqdq ymm0,ymm7,ymm20,0x11 + vpclmulqdq ymm3,ymm7,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_323 +$L$_small_initial_partial_block_323: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm7,xmm20,0x01 + vpclmulqdq xmm5,xmm7,xmm20,0x10 + vpclmulqdq xmm0,xmm7,xmm20,0x11 + vpclmulqdq xmm3,xmm7,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_323: + + or r13,r13 + je NEAR $L$_after_reduction_323 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_323: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_7_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vextracti32x4 xmm12,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vextracti32x4 xmm13,zmm7,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_324 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm7,zmm20,0x01 + vpclmulqdq zmm5,zmm7,zmm20,0x10 + vpclmulqdq zmm0,zmm7,zmm20,0x11 + vpclmulqdq zmm3,zmm7,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_324 +$L$_small_initial_partial_block_324: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm7,ymm20,0x01 + vpclmulqdq ymm5,ymm7,ymm20,0x10 + vpclmulqdq ymm0,ymm7,ymm20,0x11 + vpclmulqdq ymm3,ymm7,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_324: + + or r13,r13 + je NEAR $L$_after_reduction_324 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_324: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_8_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vextracti32x4 xmm12,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vextracti32x4 xmm13,zmm7,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_325 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_325 +$L$_small_initial_partial_block_325: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm7,zmm20,0x01 + vpclmulqdq zmm5,zmm7,zmm20,0x10 + vpclmulqdq zmm0,zmm7,zmm20,0x11 + vpclmulqdq zmm3,zmm7,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_325: + + or r13,r13 + je NEAR $L$_after_reduction_325 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_325: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_9_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast xmm4,xmm4,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq xmm4,xmm4,xmm10 + vextracti32x4 xmm12,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb xmm10,xmm4,xmm29 + vextracti32x4 xmm13,zmm10,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_326 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm10,xmm20,0x01 + vpclmulqdq xmm5,xmm10,xmm20,0x10 + vpclmulqdq xmm0,xmm10,xmm20,0x11 + vpclmulqdq xmm3,xmm10,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_326 +$L$_small_initial_partial_block_326: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_326: + + or r13,r13 + je NEAR $L$_after_reduction_326 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_326: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_10_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast ymm4,ymm4,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq ymm4,ymm4,ymm10 + vextracti32x4 xmm12,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb ymm10,ymm4,ymm29 + vextracti32x4 xmm13,zmm10,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_327 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm10,ymm20,0x01 + vpclmulqdq ymm5,ymm10,ymm20,0x10 + vpclmulqdq ymm0,ymm10,ymm20,0x11 + vpclmulqdq ymm3,ymm10,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_327 +$L$_small_initial_partial_block_327: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm10,xmm20,0x01 + vpclmulqdq xmm5,xmm10,xmm20,0x10 + vpclmulqdq xmm0,xmm10,xmm20,0x11 + vpclmulqdq xmm3,xmm10,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_327: + + or r13,r13 + je NEAR $L$_after_reduction_327 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_327: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_11_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vextracti32x4 xmm12,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vextracti32x4 xmm13,zmm10,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_328 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm10,zmm20,0x01 + vpclmulqdq zmm5,zmm10,zmm20,0x10 + vpclmulqdq zmm0,zmm10,zmm20,0x11 + vpclmulqdq zmm3,zmm10,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_328 +$L$_small_initial_partial_block_328: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm10,ymm20,0x01 + vpclmulqdq ymm5,ymm10,ymm20,0x10 + vpclmulqdq ymm0,ymm10,ymm20,0x11 + vpclmulqdq ymm3,ymm10,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_328: + + or r13,r13 + je NEAR $L$_after_reduction_328 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_328: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_12_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vextracti32x4 xmm12,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vextracti32x4 xmm13,zmm10,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_329 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_329 +$L$_small_initial_partial_block_329: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm10,zmm20,0x01 + vpclmulqdq zmm5,zmm10,zmm20,0x10 + vpclmulqdq zmm0,zmm10,zmm20,0x11 + vpclmulqdq zmm3,zmm10,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_329: + + or r13,r13 + je NEAR $L$_after_reduction_329 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_329: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_13_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast xmm5,xmm5,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq xmm5,xmm5,xmm11 + vextracti32x4 xmm12,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vpshufb xmm11,xmm5,xmm29 + vextracti32x4 xmm13,zmm11,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_330 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm11,xmm20,0x01 + vpclmulqdq xmm5,xmm11,xmm20,0x10 + vpclmulqdq xmm0,xmm11,xmm20,0x11 + vpclmulqdq xmm3,xmm11,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_330 +$L$_small_initial_partial_block_330: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_330: + + or r13,r13 + je NEAR $L$_after_reduction_330 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_330: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_14_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast ymm5,ymm5,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq ymm5,ymm5,ymm11 + vextracti32x4 xmm12,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vpshufb ymm11,ymm5,ymm29 + vextracti32x4 xmm13,zmm11,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_331 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm11,ymm20,0x01 + vpclmulqdq ymm5,ymm11,ymm20,0x10 + vpclmulqdq ymm0,ymm11,ymm20,0x11 + vpclmulqdq ymm3,ymm11,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_331 +$L$_small_initial_partial_block_331: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm11,xmm20,0x01 + vpclmulqdq xmm5,xmm11,xmm20,0x10 + vpclmulqdq xmm0,xmm11,xmm20,0x11 + vpclmulqdq xmm3,xmm11,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_331: + + or r13,r13 + je NEAR $L$_after_reduction_331 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_331: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_15_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast zmm5,zmm5,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq zmm5,zmm5,zmm11 + vextracti32x4 xmm12,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vpshufb zmm11,zmm5,zmm29 + vextracti32x4 xmm13,zmm11,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_332 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm11,zmm20,0x01 + vpclmulqdq zmm5,zmm11,zmm20,0x10 + vpclmulqdq zmm0,zmm11,zmm20,0x11 + vpclmulqdq zmm3,zmm11,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_332 +$L$_small_initial_partial_block_332: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm11,ymm20,0x01 + vpclmulqdq ymm5,ymm11,ymm20,0x10 + vpclmulqdq ymm0,ymm11,ymm20,0x11 + vpclmulqdq ymm3,ymm11,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_332: + + or r13,r13 + je NEAR $L$_after_reduction_332 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_332: + jmp NEAR $L$_small_initial_blocks_encrypted_317 +$L$_small_initial_num_blocks_is_16_317: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast zmm5,zmm5,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq zmm5,zmm5,zmm11 + vextracti32x4 xmm12,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vpshufb zmm11,zmm5,zmm29 + vextracti32x4 xmm13,zmm11,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_333: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm11,zmm20,0x01 + vpclmulqdq zmm5,zmm11,zmm20,0x10 + vpclmulqdq zmm0,zmm11,zmm20,0x11 + vpclmulqdq zmm3,zmm11,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_333: + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_333: +$L$_small_initial_blocks_encrypted_317: +$L$_ghash_done_172: + vmovdqu64 XMMWORD[rdx],xmm2 + vmovdqu64 XMMWORD[64+rdx],xmm14 +$L$_enc_dec_done_172: + jmp NEAR $L$exit_gcm_encrypt +ALIGN 32 +$L$aes_gcm_encrypt_256_avx512: + cmp QWORD[112+rbp],0 + je NEAR $L$_enc_dec_done_334 + xor r14,r14 + vmovdqu64 xmm14,XMMWORD[64+rdx] + + mov r11,QWORD[r8] + or r11,r11 + je NEAR $L$_partial_block_done_335 + mov r10d,16 + lea r12,[byte_len_to_mask_table] + cmp QWORD[112+rbp],r10 + cmovc r10,QWORD[112+rbp] + add r12,r10 + add r12,r10 + kmovw k1,[r12] + vmovdqu8 xmm0{k1}{z},[r9] + + vmovdqu64 xmm3,XMMWORD[16+rdx] + vmovdqu64 xmm4,XMMWORD[336+rdx] + + + + lea r12,[SHIFT_MASK] + add r12,r11 + vmovdqu64 xmm5,XMMWORD[r12] + vpshufb xmm3,xmm3,xmm5 + vpxorq xmm3,xmm3,xmm0 + + + mov r13,QWORD[112+rbp] + add r13,r11 + sub r13,16 + jge NEAR $L$_no_extra_mask_335 + sub r12,r13 +$L$_no_extra_mask_335: + + + + vmovdqu64 xmm0,XMMWORD[16+r12] + vpand xmm3,xmm3,xmm0 + vpshufb xmm3,xmm3,XMMWORD[SHUF_MASK] + vpshufb xmm3,xmm3,xmm5 + vpxorq xmm14,xmm14,xmm3 + cmp r13,0 + jl NEAR $L$_partial_incomplete_335 + + vpclmulqdq xmm7,xmm14,xmm4,0x11 + vpclmulqdq xmm10,xmm14,xmm4,0x00 + vpclmulqdq xmm11,xmm14,xmm4,0x01 + vpclmulqdq xmm14,xmm14,xmm4,0x10 + vpxorq xmm14,xmm14,xmm11 + + vpsrldq xmm11,xmm14,8 + vpslldq xmm14,xmm14,8 + vpxorq xmm7,xmm7,xmm11 + vpxorq xmm14,xmm14,xmm10 + + + + vmovdqu64 xmm11,XMMWORD[POLY2] + + vpclmulqdq xmm10,xmm11,xmm14,0x01 + vpslldq xmm10,xmm10,8 + vpxorq xmm14,xmm14,xmm10 + + + + vpclmulqdq xmm10,xmm11,xmm14,0x00 + vpsrldq xmm10,xmm10,4 + vpclmulqdq xmm14,xmm11,xmm14,0x10 + vpslldq xmm14,xmm14,4 + + vpternlogq xmm14,xmm7,xmm10,0x96 + + mov QWORD[r8],0 + + mov r12,r11 + mov r11,16 + sub r11,r12 + jmp NEAR $L$_enc_dec_done_335 + +$L$_partial_incomplete_335: + mov r12,QWORD[112+rbp] + add QWORD[r8],r12 + mov r11,QWORD[112+rbp] + +$L$_enc_dec_done_335: + + + lea r12,[byte_len_to_mask_table] + kmovw k1,[r11*2+r12] + vmovdqu64 XMMWORD[64+rdx],xmm14 + + vpshufb xmm3,xmm3,XMMWORD[SHUF_MASK] + vpshufb xmm3,xmm3,xmm5 + mov r12,QWORD[120+rbp] + vmovdqu8 XMMWORD[r12]{k1},xmm3 +$L$_partial_block_done_335: + vmovdqu64 xmm2,XMMWORD[rdx] + mov r13,QWORD[112+rbp] + sub r13,r11 + je NEAR $L$_enc_dec_done_334 + cmp r13,256 + jbe NEAR $L$_message_below_equal_16_blocks_334 + + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vmovdqa64 zmm27,ZMMWORD[ddq_addbe_4444] + vmovdqa64 zmm28,ZMMWORD[ddq_addbe_1234] + + + + + + + vmovd r15d,xmm2 + and r15d,255 + + vshufi64x2 zmm2,zmm2,zmm2,0 + vpshufb zmm2,zmm2,zmm29 + + + + cmp r15b,240 + jae NEAR $L$_next_16_overflow_336 + vpaddd zmm7,zmm2,zmm28 + vpaddd zmm10,zmm7,zmm27 + vpaddd zmm11,zmm10,zmm27 + vpaddd zmm12,zmm11,zmm27 + jmp NEAR $L$_next_16_ok_336 +$L$_next_16_overflow_336: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm12,ZMMWORD[ddq_add_4444] + vpaddd zmm7,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm10,zmm7,zmm12 + vpaddd zmm11,zmm10,zmm12 + vpaddd zmm12,zmm11,zmm12 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 +$L$_next_16_ok_336: + vshufi64x2 zmm2,zmm12,zmm12,255 + add r15b,16 + + vmovdqu8 zmm0,ZMMWORD[r11*1+r9] + vmovdqu8 zmm3,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm4,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm5,ZMMWORD[192+r11*1+r9] + + + vbroadcastf64x2 zmm6,ZMMWORD[rcx] + vpxorq zmm7,zmm7,zmm6 + vpxorq zmm10,zmm10,zmm6 + vpxorq zmm11,zmm11,zmm6 + vpxorq zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[16+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[32+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[48+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[64+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[80+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[96+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[112+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[128+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[144+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[160+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[176+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[192+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[208+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[224+rcx] + vaesenclast zmm7,zmm7,zmm6 + vaesenclast zmm10,zmm10,zmm6 + vaesenclast zmm11,zmm11,zmm6 + vaesenclast zmm12,zmm12,zmm6 + + + vpxorq zmm7,zmm7,zmm0 + vpxorq zmm10,zmm10,zmm3 + vpxorq zmm11,zmm11,zmm4 + vpxorq zmm12,zmm12,zmm5 + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm7 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm10 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm11 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm12 + + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm7 + vmovdqa64 ZMMWORD[832+rsp],zmm10 + vmovdqa64 ZMMWORD[896+rsp],zmm11 + vmovdqa64 ZMMWORD[960+rsp],zmm12 + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_337 + + vmovdqu64 zmm0,ZMMWORD[288+rdx] + vmovdqu64 ZMMWORD[704+rsp],zmm0 + + vmovdqu64 zmm3,ZMMWORD[224+rdx] + vmovdqu64 ZMMWORD[640+rsp],zmm3 + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[160+rdx] + vmovdqu64 ZMMWORD[576+rsp],zmm4 + + vmovdqu64 zmm5,ZMMWORD[96+rdx] + vmovdqu64 ZMMWORD[512+rsp],zmm5 +$L$_skip_hkeys_precomputation_337: + cmp r13,512 + jb NEAR $L$_message_below_32_blocks_334 + + + + cmp r15b,240 + jae NEAR $L$_next_16_overflow_338 + vpaddd zmm7,zmm2,zmm28 + vpaddd zmm10,zmm7,zmm27 + vpaddd zmm11,zmm10,zmm27 + vpaddd zmm12,zmm11,zmm27 + jmp NEAR $L$_next_16_ok_338 +$L$_next_16_overflow_338: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm12,ZMMWORD[ddq_add_4444] + vpaddd zmm7,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm10,zmm7,zmm12 + vpaddd zmm11,zmm10,zmm12 + vpaddd zmm12,zmm11,zmm12 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 +$L$_next_16_ok_338: + vshufi64x2 zmm2,zmm12,zmm12,255 + add r15b,16 + + vmovdqu8 zmm0,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm3,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm4,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm5,ZMMWORD[448+r11*1+r9] + + + vbroadcastf64x2 zmm6,ZMMWORD[rcx] + vpxorq zmm7,zmm7,zmm6 + vpxorq zmm10,zmm10,zmm6 + vpxorq zmm11,zmm11,zmm6 + vpxorq zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[16+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[32+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[48+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[64+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[80+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[96+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[112+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[128+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[144+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[160+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[176+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[192+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[208+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[224+rcx] + vaesenclast zmm7,zmm7,zmm6 + vaesenclast zmm10,zmm10,zmm6 + vaesenclast zmm11,zmm11,zmm6 + vaesenclast zmm12,zmm12,zmm6 + + + vpxorq zmm7,zmm7,zmm0 + vpxorq zmm10,zmm10,zmm3 + vpxorq zmm11,zmm11,zmm4 + vpxorq zmm12,zmm12,zmm5 + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm7 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm10 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm11 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm12 + + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 + vmovdqa64 ZMMWORD[1024+rsp],zmm7 + vmovdqa64 ZMMWORD[1088+rsp],zmm10 + vmovdqa64 ZMMWORD[1152+rsp],zmm11 + vmovdqa64 ZMMWORD[1216+rsp],zmm12 + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_339 + vmovdqu64 zmm3,ZMMWORD[640+rsp] + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[576+rsp] + vmovdqu64 zmm5,ZMMWORD[512+rsp] + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[192+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[128+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[64+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[rsp],zmm5 +$L$_skip_hkeys_precomputation_339: + mov r14,1 + add r11,512 + sub r13,512 + + cmp r13,768 + jb NEAR $L$_no_more_big_nblocks_334 +$L$_encrypt_big_nblocks_334: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_340 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_340 +$L$_16_blocks_overflow_340: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_340: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_341 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_341 +$L$_16_blocks_overflow_341: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_341: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[256+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[320+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[384+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[448+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[448+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vpternlogq zmm24,zmm6,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm0 + vmovdqa64 ZMMWORD[832+rsp],zmm3 + vmovdqa64 ZMMWORD[896+rsp],zmm4 + vmovdqa64 ZMMWORD[960+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_342 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_342 +$L$_16_blocks_overflow_342: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_342: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[512+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[576+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[640+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[704+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + + + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpternlogq zmm6,zmm12,zmm15,0x96 + vpxorq zmm6,zmm6,zmm24 + vpternlogq zmm7,zmm13,zmm10,0x96 + vpxorq zmm7,zmm7,zmm25 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vextracti64x4 ymm12,zmm6,1 + vpxorq ymm6,ymm6,ymm12 + vextracti32x4 xmm12,ymm6,1 + vpxorq xmm6,xmm6,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm6,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[512+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[576+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[640+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[704+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[1024+rsp],zmm0 + vmovdqa64 ZMMWORD[1088+rsp],zmm3 + vmovdqa64 ZMMWORD[1152+rsp],zmm4 + vmovdqa64 ZMMWORD[1216+rsp],zmm5 + vmovdqa64 zmm14,zmm6 + + add r11,768 + sub r13,768 + cmp r13,768 + jae NEAR $L$_encrypt_big_nblocks_334 + +$L$_no_more_big_nblocks_334: + + cmp r13,512 + jae NEAR $L$_encrypt_32_blocks_334 + + cmp r13,256 + jae NEAR $L$_encrypt_16_blocks_334 +$L$_encrypt_0_blocks_ghash_32_334: + mov r10d,r13d + and r10d,~15 + mov ebx,256 + sub ebx,r10d + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + add ebx,256 + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_343 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_343 + jb NEAR $L$_last_num_blocks_is_7_1_343 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_343 + jb NEAR $L$_last_num_blocks_is_11_9_343 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_343 + ja NEAR $L$_last_num_blocks_is_16_343 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_343 + jmp NEAR $L$_last_num_blocks_is_13_343 + +$L$_last_num_blocks_is_11_9_343: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_343 + ja NEAR $L$_last_num_blocks_is_11_343 + jmp NEAR $L$_last_num_blocks_is_9_343 + +$L$_last_num_blocks_is_7_1_343: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_343 + jb NEAR $L$_last_num_blocks_is_3_1_343 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_343 + je NEAR $L$_last_num_blocks_is_6_343 + jmp NEAR $L$_last_num_blocks_is_5_343 + +$L$_last_num_blocks_is_3_1_343: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_343 + je NEAR $L$_last_num_blocks_is_2_343 +$L$_last_num_blocks_is_1_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_344 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_344 + +$L$_16_blocks_overflow_344: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_344: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm17,xmm0,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_345 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_345 +$L$_small_initial_partial_block_345: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_345 +$L$_small_initial_compute_done_345: +$L$_after_reduction_345: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_2_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_346 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_346 + +$L$_16_blocks_overflow_346: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_346: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm17,ymm0,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_347 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_347 +$L$_small_initial_partial_block_347: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_347: + + or r13,r13 + je NEAR $L$_after_reduction_347 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_347: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_3_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_348 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_348 + +$L$_16_blocks_overflow_348: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_348: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_349 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_349 +$L$_small_initial_partial_block_349: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_349: + + or r13,r13 + je NEAR $L$_after_reduction_349 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_349: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_4_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_350 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_350 + +$L$_16_blocks_overflow_350: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_350: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_351 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_351 +$L$_small_initial_partial_block_351: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_351: + + or r13,r13 + je NEAR $L$_after_reduction_351 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_351: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_5_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_352 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_352 + +$L$_16_blocks_overflow_352: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_352: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb xmm19,xmm3,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_353 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_353 +$L$_small_initial_partial_block_353: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_353: + + or r13,r13 + je NEAR $L$_after_reduction_353 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_353: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_6_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_354 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_354 + +$L$_16_blocks_overflow_354: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_354: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb ymm19,ymm3,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_355 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_355 +$L$_small_initial_partial_block_355: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_355: + + or r13,r13 + je NEAR $L$_after_reduction_355 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_355: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_7_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_356 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_356 + +$L$_16_blocks_overflow_356: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_356: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_357 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_357 +$L$_small_initial_partial_block_357: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_357: + + or r13,r13 + je NEAR $L$_after_reduction_357 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_357: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_8_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_358 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_358 + +$L$_16_blocks_overflow_358: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_358: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_359 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_359 +$L$_small_initial_partial_block_359: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_359: + + or r13,r13 + je NEAR $L$_after_reduction_359 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_359: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_9_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_360 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_360 + +$L$_16_blocks_overflow_360: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_360: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb xmm20,xmm4,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_361 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_361 +$L$_small_initial_partial_block_361: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_361: + + or r13,r13 + je NEAR $L$_after_reduction_361 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_361: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_10_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_362 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_362 + +$L$_16_blocks_overflow_362: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_362: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb ymm20,ymm4,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_363 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_363 +$L$_small_initial_partial_block_363: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_363: + + or r13,r13 + je NEAR $L$_after_reduction_363 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_363: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_11_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_364 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_364 + +$L$_16_blocks_overflow_364: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_364: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_365 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_365 +$L$_small_initial_partial_block_365: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_365: + + or r13,r13 + je NEAR $L$_after_reduction_365 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_365: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_12_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_366 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_366 + +$L$_16_blocks_overflow_366: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_366: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_367 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_367 +$L$_small_initial_partial_block_367: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_367: + + or r13,r13 + je NEAR $L$_after_reduction_367 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_367: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_13_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_368 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_368 + +$L$_16_blocks_overflow_368: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_368: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb xmm21,xmm5,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_369 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_369 +$L$_small_initial_partial_block_369: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_369: + + or r13,r13 + je NEAR $L$_after_reduction_369 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_369: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_14_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_370 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_370 + +$L$_16_blocks_overflow_370: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_370: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb ymm21,ymm5,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_371 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_371 +$L$_small_initial_partial_block_371: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_371: + + or r13,r13 + je NEAR $L$_after_reduction_371 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_371: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_15_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_372 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_372 + +$L$_16_blocks_overflow_372: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_372: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_373 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_373 +$L$_small_initial_partial_block_373: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_373: + + or r13,r13 + je NEAR $L$_after_reduction_373 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_373: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_16_343: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_374 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_374 + +$L$_16_blocks_overflow_374: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_374: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_375: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_375: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_375: + jmp NEAR $L$_last_blocks_done_343 +$L$_last_num_blocks_is_0_343: + vmovdqa64 zmm13,ZMMWORD[1024+rsp] + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1088+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1152+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1216+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_343: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_334 +$L$_encrypt_32_blocks_334: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_376 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_376 +$L$_16_blocks_overflow_376: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_376: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_377 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_377 +$L$_16_blocks_overflow_377: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_377: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[256+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[320+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[384+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[448+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[448+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vpternlogq zmm24,zmm6,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm0 + vmovdqa64 ZMMWORD[832+rsp],zmm3 + vmovdqa64 ZMMWORD[896+rsp],zmm4 + vmovdqa64 ZMMWORD[960+rsp],zmm5 + vmovdqa64 zmm13,ZMMWORD[1280+rsp] + vmovdqu64 zmm12,ZMMWORD[512+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1344+rsp] + vmovdqu64 zmm12,ZMMWORD[576+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1408+rsp] + vmovdqu64 zmm12,ZMMWORD[640+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1472+rsp] + vmovdqu64 zmm12,ZMMWORD[704+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + + sub r13,512 + add r11,512 + mov r10d,r13d + and r10d,~15 + mov ebx,512 + sub ebx,r10d + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_378 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_378 + jb NEAR $L$_last_num_blocks_is_7_1_378 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_378 + jb NEAR $L$_last_num_blocks_is_11_9_378 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_378 + ja NEAR $L$_last_num_blocks_is_16_378 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_378 + jmp NEAR $L$_last_num_blocks_is_13_378 + +$L$_last_num_blocks_is_11_9_378: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_378 + ja NEAR $L$_last_num_blocks_is_11_378 + jmp NEAR $L$_last_num_blocks_is_9_378 + +$L$_last_num_blocks_is_7_1_378: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_378 + jb NEAR $L$_last_num_blocks_is_3_1_378 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_378 + je NEAR $L$_last_num_blocks_is_6_378 + jmp NEAR $L$_last_num_blocks_is_5_378 + +$L$_last_num_blocks_is_3_1_378: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_378 + je NEAR $L$_last_num_blocks_is_2_378 +$L$_last_num_blocks_is_1_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_379 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_379 + +$L$_16_blocks_overflow_379: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_379: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm17,xmm0,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_380 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_380 +$L$_small_initial_partial_block_380: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_380 +$L$_small_initial_compute_done_380: +$L$_after_reduction_380: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_2_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_381 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_381 + +$L$_16_blocks_overflow_381: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_381: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm17,ymm0,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_382 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_382 +$L$_small_initial_partial_block_382: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_382: + + or r13,r13 + je NEAR $L$_after_reduction_382 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_382: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_3_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_383 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_383 + +$L$_16_blocks_overflow_383: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_383: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_384 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_384 +$L$_small_initial_partial_block_384: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_384: + + or r13,r13 + je NEAR $L$_after_reduction_384 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_384: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_4_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_385 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_385 + +$L$_16_blocks_overflow_385: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_385: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_386 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_386 +$L$_small_initial_partial_block_386: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_386: + + or r13,r13 + je NEAR $L$_after_reduction_386 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_386: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_5_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_387 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_387 + +$L$_16_blocks_overflow_387: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_387: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb xmm19,xmm3,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_388 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_388 +$L$_small_initial_partial_block_388: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_388: + + or r13,r13 + je NEAR $L$_after_reduction_388 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_388: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_6_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_389 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_389 + +$L$_16_blocks_overflow_389: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_389: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb ymm19,ymm3,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_390 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_390 +$L$_small_initial_partial_block_390: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_390: + + or r13,r13 + je NEAR $L$_after_reduction_390 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_390: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_7_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_391 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_391 + +$L$_16_blocks_overflow_391: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_391: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_392 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_392 +$L$_small_initial_partial_block_392: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_392: + + or r13,r13 + je NEAR $L$_after_reduction_392 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_392: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_8_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_393 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_393 + +$L$_16_blocks_overflow_393: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_393: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_394 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_394 +$L$_small_initial_partial_block_394: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_394: + + or r13,r13 + je NEAR $L$_after_reduction_394 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_394: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_9_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_395 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_395 + +$L$_16_blocks_overflow_395: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_395: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb xmm20,xmm4,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_396 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_396 +$L$_small_initial_partial_block_396: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_396: + + or r13,r13 + je NEAR $L$_after_reduction_396 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_396: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_10_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_397 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_397 + +$L$_16_blocks_overflow_397: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_397: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb ymm20,ymm4,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_398 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_398 +$L$_small_initial_partial_block_398: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_398: + + or r13,r13 + je NEAR $L$_after_reduction_398 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_398: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_11_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_399 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_399 + +$L$_16_blocks_overflow_399: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_399: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_400 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_400 +$L$_small_initial_partial_block_400: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_400: + + or r13,r13 + je NEAR $L$_after_reduction_400 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_400: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_12_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_401 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_401 + +$L$_16_blocks_overflow_401: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_401: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_402 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_402 +$L$_small_initial_partial_block_402: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_402: + + or r13,r13 + je NEAR $L$_after_reduction_402 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_402: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_13_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_403 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_403 + +$L$_16_blocks_overflow_403: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_403: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb xmm21,xmm5,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_404 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_404 +$L$_small_initial_partial_block_404: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_404: + + or r13,r13 + je NEAR $L$_after_reduction_404 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_404: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_14_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_405 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_405 + +$L$_16_blocks_overflow_405: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_405: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb ymm21,ymm5,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_406 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_406 +$L$_small_initial_partial_block_406: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_406: + + or r13,r13 + je NEAR $L$_after_reduction_406 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_406: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_15_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_407 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_407 + +$L$_16_blocks_overflow_407: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_407: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_408 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_408 +$L$_small_initial_partial_block_408: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_408: + + or r13,r13 + je NEAR $L$_after_reduction_408 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_408: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_16_378: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_409 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_409 + +$L$_16_blocks_overflow_409: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_409: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_410: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_410: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_410: + jmp NEAR $L$_last_blocks_done_378 +$L$_last_num_blocks_is_0_378: + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_378: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_334 +$L$_encrypt_16_blocks_334: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_411 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_411 +$L$_16_blocks_overflow_411: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_411: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + vmovdqa64 zmm13,ZMMWORD[1024+rsp] + vmovdqu64 zmm12,ZMMWORD[256+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1088+rsp] + vmovdqu64 zmm12,ZMMWORD[320+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1152+rsp] + vmovdqu64 zmm12,ZMMWORD[384+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1216+rsp] + vmovdqu64 zmm12,ZMMWORD[448+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + sub r13,256 + add r11,256 + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_412 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_412 + jb NEAR $L$_last_num_blocks_is_7_1_412 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_412 + jb NEAR $L$_last_num_blocks_is_11_9_412 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_412 + ja NEAR $L$_last_num_blocks_is_16_412 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_412 + jmp NEAR $L$_last_num_blocks_is_13_412 + +$L$_last_num_blocks_is_11_9_412: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_412 + ja NEAR $L$_last_num_blocks_is_11_412 + jmp NEAR $L$_last_num_blocks_is_9_412 + +$L$_last_num_blocks_is_7_1_412: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_412 + jb NEAR $L$_last_num_blocks_is_3_1_412 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_412 + je NEAR $L$_last_num_blocks_is_6_412 + jmp NEAR $L$_last_num_blocks_is_5_412 + +$L$_last_num_blocks_is_3_1_412: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_412 + je NEAR $L$_last_num_blocks_is_2_412 +$L$_last_num_blocks_is_1_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_413 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_413 + +$L$_16_blocks_overflow_413: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_413: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc xmm0,xmm0,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc xmm0,xmm0,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm17,xmm0,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_414 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_414 +$L$_small_initial_partial_block_414: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_414 +$L$_small_initial_compute_done_414: +$L$_after_reduction_414: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_2_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_415 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_415 + +$L$_16_blocks_overflow_415: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_415: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc ymm0,ymm0,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc ymm0,ymm0,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm17,ymm0,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_416 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_416 +$L$_small_initial_partial_block_416: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_416: + + or r13,r13 + je NEAR $L$_after_reduction_416 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_416: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_3_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_417 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_417 + +$L$_16_blocks_overflow_417: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_417: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_418 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_418 +$L$_small_initial_partial_block_418: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_418: + + or r13,r13 + je NEAR $L$_after_reduction_418 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_418: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_4_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_419 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_419 + +$L$_16_blocks_overflow_419: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_419: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_420 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_420 +$L$_small_initial_partial_block_420: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_420: + + or r13,r13 + je NEAR $L$_after_reduction_420 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_420: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_5_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_421 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_421 + +$L$_16_blocks_overflow_421: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_421: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb xmm19,xmm3,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_422 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_422 +$L$_small_initial_partial_block_422: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_422: + + or r13,r13 + je NEAR $L$_after_reduction_422 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_422: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_6_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_423 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_423 + +$L$_16_blocks_overflow_423: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_423: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb ymm19,ymm3,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_424 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_424 +$L$_small_initial_partial_block_424: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_424: + + or r13,r13 + je NEAR $L$_after_reduction_424 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_424: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_7_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_425 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_425 + +$L$_16_blocks_overflow_425: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_425: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_426 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_426 +$L$_small_initial_partial_block_426: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_426: + + or r13,r13 + je NEAR $L$_after_reduction_426 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_426: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_8_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_427 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_427 + +$L$_16_blocks_overflow_427: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_427: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_428 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_428 +$L$_small_initial_partial_block_428: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_428: + + or r13,r13 + je NEAR $L$_after_reduction_428 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_428: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_9_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_429 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_429 + +$L$_16_blocks_overflow_429: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_429: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb xmm20,xmm4,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_430 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_430 +$L$_small_initial_partial_block_430: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_430: + + or r13,r13 + je NEAR $L$_after_reduction_430 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_430: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_10_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_431 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_431 + +$L$_16_blocks_overflow_431: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_431: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb ymm20,ymm4,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_432 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_432 +$L$_small_initial_partial_block_432: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_432: + + or r13,r13 + je NEAR $L$_after_reduction_432 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_432: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_11_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_433 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_433 + +$L$_16_blocks_overflow_433: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_433: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_434 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_434 +$L$_small_initial_partial_block_434: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_434: + + or r13,r13 + je NEAR $L$_after_reduction_434 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_434: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_12_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_435 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_435 + +$L$_16_blocks_overflow_435: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_435: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_436 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_436 +$L$_small_initial_partial_block_436: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_436: + + or r13,r13 + je NEAR $L$_after_reduction_436 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_436: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_13_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_437 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_437 + +$L$_16_blocks_overflow_437: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_437: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb xmm21,xmm5,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_438 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_438 +$L$_small_initial_partial_block_438: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_438: + + or r13,r13 + je NEAR $L$_after_reduction_438 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_438: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_14_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_439 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_439 + +$L$_16_blocks_overflow_439: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_439: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb ymm21,ymm5,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_440 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_440 +$L$_small_initial_partial_block_440: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_440: + + or r13,r13 + je NEAR $L$_after_reduction_440 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_440: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_15_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_441 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_441 + +$L$_16_blocks_overflow_441: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_441: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_442 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_442 +$L$_small_initial_partial_block_442: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_442: + + or r13,r13 + je NEAR $L$_after_reduction_442 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_442: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_16_412: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_443 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_443 + +$L$_16_blocks_overflow_443: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_443: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_444: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_444: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_444: + jmp NEAR $L$_last_blocks_done_412 +$L$_last_num_blocks_is_0_412: + vmovdqa64 zmm13,ZMMWORD[1280+rsp] + vmovdqu64 zmm12,ZMMWORD[512+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1344+rsp] + vmovdqu64 zmm12,ZMMWORD[576+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1408+rsp] + vmovdqu64 zmm12,ZMMWORD[640+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1472+rsp] + vmovdqu64 zmm12,ZMMWORD[704+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_412: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_334 + +$L$_message_below_32_blocks_334: + + + sub r13,256 + add r11,256 + mov r10d,r13d + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_445 + vmovdqu64 zmm3,ZMMWORD[640+rsp] + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[576+rsp] + vmovdqu64 zmm5,ZMMWORD[512+rsp] + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm5 +$L$_skip_hkeys_precomputation_445: + mov r14,1 + and r10d,~15 + mov ebx,512 + sub ebx,r10d + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_446 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_446 + jb NEAR $L$_last_num_blocks_is_7_1_446 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_446 + jb NEAR $L$_last_num_blocks_is_11_9_446 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_446 + ja NEAR $L$_last_num_blocks_is_16_446 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_446 + jmp NEAR $L$_last_num_blocks_is_13_446 + +$L$_last_num_blocks_is_11_9_446: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_446 + ja NEAR $L$_last_num_blocks_is_11_446 + jmp NEAR $L$_last_num_blocks_is_9_446 + +$L$_last_num_blocks_is_7_1_446: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_446 + jb NEAR $L$_last_num_blocks_is_3_1_446 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_446 + je NEAR $L$_last_num_blocks_is_6_446 + jmp NEAR $L$_last_num_blocks_is_5_446 + +$L$_last_num_blocks_is_3_1_446: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_446 + je NEAR $L$_last_num_blocks_is_2_446 +$L$_last_num_blocks_is_1_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_447 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_447 + +$L$_16_blocks_overflow_447: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_447: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm17,xmm0,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_448 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_448 +$L$_small_initial_partial_block_448: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_448 +$L$_small_initial_compute_done_448: +$L$_after_reduction_448: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_2_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_449 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_449 + +$L$_16_blocks_overflow_449: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_449: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm17,ymm0,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_450 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_450 +$L$_small_initial_partial_block_450: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_450: + + or r13,r13 + je NEAR $L$_after_reduction_450 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_450: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_3_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_451 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_451 + +$L$_16_blocks_overflow_451: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_451: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_452 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_452 +$L$_small_initial_partial_block_452: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_452: + + or r13,r13 + je NEAR $L$_after_reduction_452 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_452: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_4_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_453 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_453 + +$L$_16_blocks_overflow_453: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_453: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm17,zmm0,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_454 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_454 +$L$_small_initial_partial_block_454: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_454: + + or r13,r13 + je NEAR $L$_after_reduction_454 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_454: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_5_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_455 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_455 + +$L$_16_blocks_overflow_455: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_455: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb xmm19,xmm3,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_456 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_456 +$L$_small_initial_partial_block_456: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_456: + + or r13,r13 + je NEAR $L$_after_reduction_456 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_456: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_6_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_457 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_457 + +$L$_16_blocks_overflow_457: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_457: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb ymm19,ymm3,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_458 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_458 +$L$_small_initial_partial_block_458: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_458: + + or r13,r13 + je NEAR $L$_after_reduction_458 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_458: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_7_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_459 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_459 + +$L$_16_blocks_overflow_459: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_459: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_460 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_460 +$L$_small_initial_partial_block_460: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_460: + + or r13,r13 + je NEAR $L$_after_reduction_460 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_460: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_8_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_461 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_461 + +$L$_16_blocks_overflow_461: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_461: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_462 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_462 +$L$_small_initial_partial_block_462: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_462: + + or r13,r13 + je NEAR $L$_after_reduction_462 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_462: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_9_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_463 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_463 + +$L$_16_blocks_overflow_463: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_463: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb xmm20,xmm4,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_464 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_464 +$L$_small_initial_partial_block_464: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_464: + + or r13,r13 + je NEAR $L$_after_reduction_464 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_464: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_10_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_465 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_465 + +$L$_16_blocks_overflow_465: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_465: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb ymm20,ymm4,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_466 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_466 +$L$_small_initial_partial_block_466: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_466: + + or r13,r13 + je NEAR $L$_after_reduction_466 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_466: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_11_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_467 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_467 + +$L$_16_blocks_overflow_467: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_467: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_468 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_468 +$L$_small_initial_partial_block_468: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_468: + + or r13,r13 + je NEAR $L$_after_reduction_468 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_468: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_12_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_469 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_469 + +$L$_16_blocks_overflow_469: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_469: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_470 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_470 +$L$_small_initial_partial_block_470: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_470: + + or r13,r13 + je NEAR $L$_after_reduction_470 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_470: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_13_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_471 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_471 + +$L$_16_blocks_overflow_471: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_471: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb xmm21,xmm5,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_472 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_472 +$L$_small_initial_partial_block_472: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_472: + + or r13,r13 + je NEAR $L$_after_reduction_472 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_472: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_14_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_473 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_473 + +$L$_16_blocks_overflow_473: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_473: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb ymm21,ymm5,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_474 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_474 +$L$_small_initial_partial_block_474: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_474: + + or r13,r13 + je NEAR $L$_after_reduction_474 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_474: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_15_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_475 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_475 + +$L$_16_blocks_overflow_475: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_475: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_476 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_476 +$L$_small_initial_partial_block_476: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_476: + + or r13,r13 + je NEAR $L$_after_reduction_476 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_476: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_16_446: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_477 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_477 + +$L$_16_blocks_overflow_477: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_477: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm17,zmm0,zmm29 + vpshufb zmm19,zmm3,zmm29 + vpshufb zmm20,zmm4,zmm29 + vpshufb zmm21,zmm5,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_478: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_478: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_478: + jmp NEAR $L$_last_blocks_done_446 +$L$_last_num_blocks_is_0_446: + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_446: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_334 + +$L$_message_below_equal_16_blocks_334: + + + mov r12d,r13d + add r12d,15 + shr r12d,4 + cmp r12,8 + je NEAR $L$_small_initial_num_blocks_is_8_479 + jl NEAR $L$_small_initial_num_blocks_is_7_1_479 + + + cmp r12,12 + je NEAR $L$_small_initial_num_blocks_is_12_479 + jl NEAR $L$_small_initial_num_blocks_is_11_9_479 + + + cmp r12,16 + je NEAR $L$_small_initial_num_blocks_is_16_479 + cmp r12,15 + je NEAR $L$_small_initial_num_blocks_is_15_479 + cmp r12,14 + je NEAR $L$_small_initial_num_blocks_is_14_479 + jmp NEAR $L$_small_initial_num_blocks_is_13_479 + +$L$_small_initial_num_blocks_is_11_9_479: + + cmp r12,11 + je NEAR $L$_small_initial_num_blocks_is_11_479 + cmp r12,10 + je NEAR $L$_small_initial_num_blocks_is_10_479 + jmp NEAR $L$_small_initial_num_blocks_is_9_479 + +$L$_small_initial_num_blocks_is_7_1_479: + cmp r12,4 + je NEAR $L$_small_initial_num_blocks_is_4_479 + jl NEAR $L$_small_initial_num_blocks_is_3_1_479 + + cmp r12,7 + je NEAR $L$_small_initial_num_blocks_is_7_479 + cmp r12,6 + je NEAR $L$_small_initial_num_blocks_is_6_479 + jmp NEAR $L$_small_initial_num_blocks_is_5_479 + +$L$_small_initial_num_blocks_is_3_1_479: + + cmp r12,3 + je NEAR $L$_small_initial_num_blocks_is_3_479 + cmp r12,2 + je NEAR $L$_small_initial_num_blocks_is_2_479 + + + + + +$L$_small_initial_num_blocks_is_1_479: + vmovdqa64 xmm29,XMMWORD[SHUF_MASK] + vpaddd xmm0,xmm2,XMMWORD[ONE] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,0 + vpshufb xmm0,xmm0,xmm29 + vmovdqu8 xmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast xmm0,xmm0,xmm15 + vpxorq xmm0,xmm0,xmm6 + vextracti32x4 xmm12,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm6,xmm0,xmm29 + vextracti32x4 xmm13,zmm6,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_480 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm6,xmm20,0x01 + vpclmulqdq xmm5,xmm6,xmm20,0x10 + vpclmulqdq xmm0,xmm6,xmm20,0x11 + vpclmulqdq xmm3,xmm6,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_480 +$L$_small_initial_partial_block_480: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm13 + + jmp NEAR $L$_after_reduction_480 +$L$_small_initial_compute_done_480: +$L$_after_reduction_480: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_2_479: + vmovdqa64 ymm29,YMMWORD[SHUF_MASK] + vshufi64x2 ymm0,ymm2,ymm2,0 + vpaddd ymm0,ymm0,YMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,1 + vpshufb ymm0,ymm0,ymm29 + vmovdqu8 ymm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast ymm0,ymm0,ymm15 + vpxorq ymm0,ymm0,ymm6 + vextracti32x4 xmm12,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm6,ymm0,ymm29 + vextracti32x4 xmm13,zmm6,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_481 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm6,ymm20,0x01 + vpclmulqdq ymm5,ymm6,ymm20,0x10 + vpclmulqdq ymm0,ymm6,ymm20,0x11 + vpclmulqdq ymm3,ymm6,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_481 +$L$_small_initial_partial_block_481: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm6,xmm20,0x01 + vpclmulqdq xmm5,xmm6,xmm20,0x10 + vpclmulqdq xmm0,xmm6,xmm20,0x11 + vpclmulqdq xmm3,xmm6,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_481: + + or r13,r13 + je NEAR $L$_after_reduction_481 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_481: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_3_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,2 + vpshufb zmm0,zmm0,zmm29 + vmovdqu8 zmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vpxorq zmm0,zmm0,zmm6 + vextracti32x4 xmm12,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm6,zmm0,zmm29 + vextracti32x4 xmm13,zmm6,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_482 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_482 +$L$_small_initial_partial_block_482: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm6,ymm20,0x01 + vpclmulqdq ymm5,ymm6,ymm20,0x10 + vpclmulqdq ymm0,ymm6,ymm20,0x11 + vpclmulqdq ymm3,ymm6,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_482: + + or r13,r13 + je NEAR $L$_after_reduction_482 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_482: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_4_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,3 + vpshufb zmm0,zmm0,zmm29 + vmovdqu8 zmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vpxorq zmm0,zmm0,zmm6 + vextracti32x4 xmm12,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm6,zmm0,zmm29 + vextracti32x4 xmm13,zmm6,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_483 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_483 +$L$_small_initial_partial_block_483: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_483: + + or r13,r13 + je NEAR $L$_after_reduction_483 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_483: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_5_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 xmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast xmm3,xmm3,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq xmm3,xmm3,xmm7 + vextracti32x4 xmm12,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm0,zmm29 + vpshufb xmm7,xmm3,xmm29 + vextracti32x4 xmm13,zmm7,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_484 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm7,xmm20,0x01 + vpclmulqdq xmm5,xmm7,xmm20,0x10 + vpclmulqdq xmm0,xmm7,xmm20,0x11 + vpclmulqdq xmm3,xmm7,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_484 +$L$_small_initial_partial_block_484: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_484: + + or r13,r13 + je NEAR $L$_after_reduction_484 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_484: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_6_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 ymm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast ymm3,ymm3,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq ymm3,ymm3,ymm7 + vextracti32x4 xmm12,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm0,zmm29 + vpshufb ymm7,ymm3,ymm29 + vextracti32x4 xmm13,zmm7,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_485 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm7,ymm20,0x01 + vpclmulqdq ymm5,ymm7,ymm20,0x10 + vpclmulqdq ymm0,ymm7,ymm20,0x11 + vpclmulqdq ymm3,ymm7,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_485 +$L$_small_initial_partial_block_485: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm7,xmm20,0x01 + vpclmulqdq xmm5,xmm7,xmm20,0x10 + vpclmulqdq xmm0,xmm7,xmm20,0x11 + vpclmulqdq xmm3,xmm7,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_485: + + or r13,r13 + je NEAR $L$_after_reduction_485 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_485: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_7_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vextracti32x4 xmm12,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vextracti32x4 xmm13,zmm7,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_486 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm7,zmm20,0x01 + vpclmulqdq zmm5,zmm7,zmm20,0x10 + vpclmulqdq zmm0,zmm7,zmm20,0x11 + vpclmulqdq zmm3,zmm7,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_486 +$L$_small_initial_partial_block_486: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm7,ymm20,0x01 + vpclmulqdq ymm5,ymm7,ymm20,0x10 + vpclmulqdq ymm0,ymm7,ymm20,0x11 + vpclmulqdq ymm3,ymm7,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_486: + + or r13,r13 + je NEAR $L$_after_reduction_486 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_486: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_8_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vextracti32x4 xmm12,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vextracti32x4 xmm13,zmm7,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_487 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_487 +$L$_small_initial_partial_block_487: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm7,zmm20,0x01 + vpclmulqdq zmm5,zmm7,zmm20,0x10 + vpclmulqdq zmm0,zmm7,zmm20,0x11 + vpclmulqdq zmm3,zmm7,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_487: + + or r13,r13 + je NEAR $L$_after_reduction_487 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_487: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_9_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast xmm4,xmm4,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq xmm4,xmm4,xmm10 + vextracti32x4 xmm12,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb xmm10,xmm4,xmm29 + vextracti32x4 xmm13,zmm10,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_488 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm10,xmm20,0x01 + vpclmulqdq xmm5,xmm10,xmm20,0x10 + vpclmulqdq xmm0,xmm10,xmm20,0x11 + vpclmulqdq xmm3,xmm10,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_488 +$L$_small_initial_partial_block_488: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_488: + + or r13,r13 + je NEAR $L$_after_reduction_488 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_488: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_10_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast ymm4,ymm4,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq ymm4,ymm4,ymm10 + vextracti32x4 xmm12,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb ymm10,ymm4,ymm29 + vextracti32x4 xmm13,zmm10,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_489 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm10,ymm20,0x01 + vpclmulqdq ymm5,ymm10,ymm20,0x10 + vpclmulqdq ymm0,ymm10,ymm20,0x11 + vpclmulqdq ymm3,ymm10,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_489 +$L$_small_initial_partial_block_489: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm10,xmm20,0x01 + vpclmulqdq xmm5,xmm10,xmm20,0x10 + vpclmulqdq xmm0,xmm10,xmm20,0x11 + vpclmulqdq xmm3,xmm10,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_489: + + or r13,r13 + je NEAR $L$_after_reduction_489 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_489: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_11_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vextracti32x4 xmm12,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vextracti32x4 xmm13,zmm10,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_490 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm10,zmm20,0x01 + vpclmulqdq zmm5,zmm10,zmm20,0x10 + vpclmulqdq zmm0,zmm10,zmm20,0x11 + vpclmulqdq zmm3,zmm10,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_490 +$L$_small_initial_partial_block_490: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm10,ymm20,0x01 + vpclmulqdq ymm5,ymm10,ymm20,0x10 + vpclmulqdq ymm0,ymm10,ymm20,0x11 + vpclmulqdq ymm3,ymm10,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_490: + + or r13,r13 + je NEAR $L$_after_reduction_490 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_490: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_12_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vextracti32x4 xmm12,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vextracti32x4 xmm13,zmm10,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_491 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_491 +$L$_small_initial_partial_block_491: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm10,zmm20,0x01 + vpclmulqdq zmm5,zmm10,zmm20,0x10 + vpclmulqdq zmm0,zmm10,zmm20,0x11 + vpclmulqdq zmm3,zmm10,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_491: + + or r13,r13 + je NEAR $L$_after_reduction_491 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_491: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_13_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast xmm5,xmm5,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq xmm5,xmm5,xmm11 + vextracti32x4 xmm12,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vpshufb xmm11,xmm5,xmm29 + vextracti32x4 xmm13,zmm11,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_492 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm11,xmm20,0x01 + vpclmulqdq xmm5,xmm11,xmm20,0x10 + vpclmulqdq xmm0,xmm11,xmm20,0x11 + vpclmulqdq xmm3,xmm11,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_492 +$L$_small_initial_partial_block_492: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_492: + + or r13,r13 + je NEAR $L$_after_reduction_492 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_492: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_14_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast ymm5,ymm5,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq ymm5,ymm5,ymm11 + vextracti32x4 xmm12,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vpshufb ymm11,ymm5,ymm29 + vextracti32x4 xmm13,zmm11,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_493 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm11,ymm20,0x01 + vpclmulqdq ymm5,ymm11,ymm20,0x10 + vpclmulqdq ymm0,ymm11,ymm20,0x11 + vpclmulqdq ymm3,ymm11,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_493 +$L$_small_initial_partial_block_493: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm11,xmm20,0x01 + vpclmulqdq xmm5,xmm11,xmm20,0x10 + vpclmulqdq xmm0,xmm11,xmm20,0x11 + vpclmulqdq xmm3,xmm11,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_493: + + or r13,r13 + je NEAR $L$_after_reduction_493 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_493: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_15_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast zmm5,zmm5,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq zmm5,zmm5,zmm11 + vextracti32x4 xmm12,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vpshufb zmm11,zmm5,zmm29 + vextracti32x4 xmm13,zmm11,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_494 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm11,zmm20,0x01 + vpclmulqdq zmm5,zmm11,zmm20,0x10 + vpclmulqdq zmm0,zmm11,zmm20,0x11 + vpclmulqdq zmm3,zmm11,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_494 +$L$_small_initial_partial_block_494: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm11,ymm20,0x01 + vpclmulqdq ymm5,ymm11,ymm20,0x10 + vpclmulqdq ymm0,ymm11,ymm20,0x11 + vpclmulqdq ymm3,ymm11,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_494: + + or r13,r13 + je NEAR $L$_after_reduction_494 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_494: + jmp NEAR $L$_small_initial_blocks_encrypted_479 +$L$_small_initial_num_blocks_is_16_479: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast zmm5,zmm5,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq zmm5,zmm5,zmm11 + vextracti32x4 xmm12,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm0,zmm29 + vpshufb zmm7,zmm3,zmm29 + vpshufb zmm10,zmm4,zmm29 + vpshufb zmm11,zmm5,zmm29 + vextracti32x4 xmm13,zmm11,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_495: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm11,zmm20,0x01 + vpclmulqdq zmm5,zmm11,zmm20,0x10 + vpclmulqdq zmm0,zmm11,zmm20,0x11 + vpclmulqdq zmm3,zmm11,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_495: + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_495: +$L$_small_initial_blocks_encrypted_479: +$L$_ghash_done_334: + vmovdqu64 XMMWORD[rdx],xmm2 + vmovdqu64 XMMWORD[64+rdx],xmm14 +$L$_enc_dec_done_334: + jmp NEAR $L$exit_gcm_encrypt +$L$exit_gcm_encrypt: + cmp QWORD[112+rbp],256 + jbe NEAR $L$skip_hkeys_cleanup_496 + vpxor xmm0,xmm0,xmm0 + vmovdqa64 ZMMWORD[rsp],zmm0 + vmovdqa64 ZMMWORD[64+rsp],zmm0 + vmovdqa64 ZMMWORD[128+rsp],zmm0 + vmovdqa64 ZMMWORD[192+rsp],zmm0 + vmovdqa64 ZMMWORD[256+rsp],zmm0 + vmovdqa64 ZMMWORD[320+rsp],zmm0 + vmovdqa64 ZMMWORD[384+rsp],zmm0 + vmovdqa64 ZMMWORD[448+rsp],zmm0 + vmovdqa64 ZMMWORD[512+rsp],zmm0 + vmovdqa64 ZMMWORD[576+rsp],zmm0 + vmovdqa64 ZMMWORD[640+rsp],zmm0 + vmovdqa64 ZMMWORD[704+rsp],zmm0 +$L$skip_hkeys_cleanup_496: + vzeroupper + vmovdqu xmm15,XMMWORD[((-16))+rbp] + vmovdqu xmm14,XMMWORD[((-32))+rbp] + vmovdqu xmm13,XMMWORD[((-48))+rbp] + vmovdqu xmm12,XMMWORD[((-64))+rbp] + vmovdqu xmm11,XMMWORD[((-80))+rbp] + vmovdqu xmm10,XMMWORD[((-96))+rbp] + vmovdqu xmm9,XMMWORD[((-112))+rbp] + vmovdqu xmm8,XMMWORD[((-128))+rbp] + vmovdqu xmm7,XMMWORD[((-144))+rbp] + vmovdqu xmm6,XMMWORD[((-160))+rbp] + lea rsp,[8+rbp] + pop rsi + + pop rdi + + pop r15 + + pop r14 + + pop r13 + + pop r12 + + pop rbp + + pop rbx + + DB 0F3h,0C3h ;repret +$L$encrypt_seh_end: + + +global ossl_aes_gcm_decrypt_avx512 + +ALIGN 32 +ossl_aes_gcm_decrypt_avx512: + +$L$decrypt_seh_begin: +DB 243,15,30,250 + push rbx + +$L$decrypt_seh_push_rbx: + push rbp + +$L$decrypt_seh_push_rbp: + push r12 + +$L$decrypt_seh_push_r12: + push r13 + +$L$decrypt_seh_push_r13: + push r14 + +$L$decrypt_seh_push_r14: + push r15 + +$L$decrypt_seh_push_r15: + push rdi +$L$decrypt_seh_push_rdi: + push rsi +$L$decrypt_seh_push_rsi: + + sub rsp,168 +$L$decrypt_seh_allocstack_xmm: + + + + + + + + + + + lea rbp,[160+rsp] + +$L$decrypt_seh_setfp: + vmovdqu XMMWORD[rsp],xmm6 +$L$decrypt_seh_save_xmm6: + vmovdqu XMMWORD[16+rsp],xmm7 +$L$decrypt_seh_save_xmm7: + vmovdqu XMMWORD[32+rsp],xmm8 +$L$decrypt_seh_save_xmm8: + vmovdqu XMMWORD[48+rsp],xmm9 +$L$decrypt_seh_save_xmm9: + vmovdqu XMMWORD[64+rsp],xmm10 +$L$decrypt_seh_save_xmm10: + vmovdqu XMMWORD[80+rsp],xmm11 +$L$decrypt_seh_save_xmm11: + vmovdqu XMMWORD[96+rsp],xmm12 +$L$decrypt_seh_save_xmm12: + vmovdqu XMMWORD[112+rsp],xmm13 +$L$decrypt_seh_save_xmm13: + vmovdqu XMMWORD[128+rsp],xmm14 +$L$decrypt_seh_save_xmm14: + vmovdqu XMMWORD[144+rsp],xmm15 +$L$decrypt_seh_save_xmm15: + +$L$decrypt_seh_prolog_end: + sub rsp,1584 + and rsp,(-64) + + + mov eax,DWORD[240+rcx] + cmp eax,9 + je NEAR $L$aes_gcm_decrypt_128_avx512 + cmp eax,11 + je NEAR $L$aes_gcm_decrypt_192_avx512 + cmp eax,13 + je NEAR $L$aes_gcm_decrypt_256_avx512 + xor eax,eax + jmp NEAR $L$exit_gcm_decrypt +ALIGN 32 +$L$aes_gcm_decrypt_128_avx512: + cmp QWORD[112+rbp],0 + je NEAR $L$_enc_dec_done_497 + xor r14,r14 + vmovdqu64 xmm14,XMMWORD[64+rdx] + + mov r11,QWORD[r8] + or r11,r11 + je NEAR $L$_partial_block_done_498 + mov r10d,16 + lea r12,[byte_len_to_mask_table] + cmp QWORD[112+rbp],r10 + cmovc r10,QWORD[112+rbp] + add r12,r10 + add r12,r10 + kmovw k1,[r12] + vmovdqu8 xmm0{k1}{z},[r9] + + vmovdqu64 xmm3,XMMWORD[16+rdx] + vmovdqu64 xmm4,XMMWORD[336+rdx] + + + + lea r12,[SHIFT_MASK] + add r12,r11 + vmovdqu64 xmm5,XMMWORD[r12] + vpshufb xmm3,xmm3,xmm5 + + vmovdqa64 xmm6,xmm0 + vpxorq xmm3,xmm3,xmm0 + + + mov r13,QWORD[112+rbp] + add r13,r11 + sub r13,16 + jge NEAR $L$_no_extra_mask_498 + sub r12,r13 +$L$_no_extra_mask_498: + + + + vmovdqu64 xmm0,XMMWORD[16+r12] + vpand xmm3,xmm3,xmm0 + vpand xmm6,xmm6,xmm0 + vpshufb xmm6,xmm6,XMMWORD[SHUF_MASK] + vpshufb xmm6,xmm6,xmm5 + vpxorq xmm14,xmm14,xmm6 + cmp r13,0 + jl NEAR $L$_partial_incomplete_498 + + vpclmulqdq xmm7,xmm14,xmm4,0x11 + vpclmulqdq xmm10,xmm14,xmm4,0x00 + vpclmulqdq xmm11,xmm14,xmm4,0x01 + vpclmulqdq xmm14,xmm14,xmm4,0x10 + vpxorq xmm14,xmm14,xmm11 + + vpsrldq xmm11,xmm14,8 + vpslldq xmm14,xmm14,8 + vpxorq xmm7,xmm7,xmm11 + vpxorq xmm14,xmm14,xmm10 + + + + vmovdqu64 xmm11,XMMWORD[POLY2] + + vpclmulqdq xmm10,xmm11,xmm14,0x01 + vpslldq xmm10,xmm10,8 + vpxorq xmm14,xmm14,xmm10 + + + + vpclmulqdq xmm10,xmm11,xmm14,0x00 + vpsrldq xmm10,xmm10,4 + vpclmulqdq xmm14,xmm11,xmm14,0x10 + vpslldq xmm14,xmm14,4 + + vpternlogq xmm14,xmm7,xmm10,0x96 + + mov QWORD[r8],0 + + mov r12,r11 + mov r11,16 + sub r11,r12 + jmp NEAR $L$_enc_dec_done_498 + +$L$_partial_incomplete_498: + mov r12,QWORD[112+rbp] + add QWORD[r8],r12 + mov r11,QWORD[112+rbp] + +$L$_enc_dec_done_498: + + + lea r12,[byte_len_to_mask_table] + kmovw k1,[r11*2+r12] + vmovdqu64 XMMWORD[64+rdx],xmm14 + mov r12,QWORD[120+rbp] + vmovdqu8 XMMWORD[r12]{k1},xmm3 +$L$_partial_block_done_498: + vmovdqu64 xmm2,XMMWORD[rdx] + mov r13,QWORD[112+rbp] + sub r13,r11 + je NEAR $L$_enc_dec_done_497 + cmp r13,256 + jbe NEAR $L$_message_below_equal_16_blocks_497 + + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vmovdqa64 zmm27,ZMMWORD[ddq_addbe_4444] + vmovdqa64 zmm28,ZMMWORD[ddq_addbe_1234] + + + + + + + vmovd r15d,xmm2 + and r15d,255 + + vshufi64x2 zmm2,zmm2,zmm2,0 + vpshufb zmm2,zmm2,zmm29 + + + + cmp r15b,240 + jae NEAR $L$_next_16_overflow_499 + vpaddd zmm7,zmm2,zmm28 + vpaddd zmm10,zmm7,zmm27 + vpaddd zmm11,zmm10,zmm27 + vpaddd zmm12,zmm11,zmm27 + jmp NEAR $L$_next_16_ok_499 +$L$_next_16_overflow_499: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm12,ZMMWORD[ddq_add_4444] + vpaddd zmm7,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm10,zmm7,zmm12 + vpaddd zmm11,zmm10,zmm12 + vpaddd zmm12,zmm11,zmm12 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 +$L$_next_16_ok_499: + vshufi64x2 zmm2,zmm12,zmm12,255 + add r15b,16 + + vmovdqu8 zmm0,ZMMWORD[r11*1+r9] + vmovdqu8 zmm3,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm4,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm5,ZMMWORD[192+r11*1+r9] + + + vbroadcastf64x2 zmm6,ZMMWORD[rcx] + vpxorq zmm7,zmm7,zmm6 + vpxorq zmm10,zmm10,zmm6 + vpxorq zmm11,zmm11,zmm6 + vpxorq zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[16+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[32+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[48+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[64+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[80+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[96+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[112+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[128+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[144+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[160+rcx] + vaesenclast zmm7,zmm7,zmm6 + vaesenclast zmm10,zmm10,zmm6 + vaesenclast zmm11,zmm11,zmm6 + vaesenclast zmm12,zmm12,zmm6 + + + vpxorq zmm7,zmm7,zmm0 + vpxorq zmm10,zmm10,zmm3 + vpxorq zmm11,zmm11,zmm4 + vpxorq zmm12,zmm12,zmm5 + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm7 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm10 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm11 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm12 + + vpshufb zmm7,zmm0,zmm29 + vpshufb zmm10,zmm3,zmm29 + vpshufb zmm11,zmm4,zmm29 + vpshufb zmm12,zmm5,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm7 + vmovdqa64 ZMMWORD[832+rsp],zmm10 + vmovdqa64 ZMMWORD[896+rsp],zmm11 + vmovdqa64 ZMMWORD[960+rsp],zmm12 + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_500 + + vmovdqu64 zmm0,ZMMWORD[288+rdx] + vmovdqu64 ZMMWORD[704+rsp],zmm0 + + vmovdqu64 zmm3,ZMMWORD[224+rdx] + vmovdqu64 ZMMWORD[640+rsp],zmm3 + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[160+rdx] + vmovdqu64 ZMMWORD[576+rsp],zmm4 + + vmovdqu64 zmm5,ZMMWORD[96+rdx] + vmovdqu64 ZMMWORD[512+rsp],zmm5 +$L$_skip_hkeys_precomputation_500: + cmp r13,512 + jb NEAR $L$_message_below_32_blocks_497 + + + + cmp r15b,240 + jae NEAR $L$_next_16_overflow_501 + vpaddd zmm7,zmm2,zmm28 + vpaddd zmm10,zmm7,zmm27 + vpaddd zmm11,zmm10,zmm27 + vpaddd zmm12,zmm11,zmm27 + jmp NEAR $L$_next_16_ok_501 +$L$_next_16_overflow_501: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm12,ZMMWORD[ddq_add_4444] + vpaddd zmm7,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm10,zmm7,zmm12 + vpaddd zmm11,zmm10,zmm12 + vpaddd zmm12,zmm11,zmm12 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 +$L$_next_16_ok_501: + vshufi64x2 zmm2,zmm12,zmm12,255 + add r15b,16 + + vmovdqu8 zmm0,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm3,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm4,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm5,ZMMWORD[448+r11*1+r9] + + + vbroadcastf64x2 zmm6,ZMMWORD[rcx] + vpxorq zmm7,zmm7,zmm6 + vpxorq zmm10,zmm10,zmm6 + vpxorq zmm11,zmm11,zmm6 + vpxorq zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[16+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[32+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[48+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[64+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[80+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[96+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[112+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[128+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[144+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[160+rcx] + vaesenclast zmm7,zmm7,zmm6 + vaesenclast zmm10,zmm10,zmm6 + vaesenclast zmm11,zmm11,zmm6 + vaesenclast zmm12,zmm12,zmm6 + + + vpxorq zmm7,zmm7,zmm0 + vpxorq zmm10,zmm10,zmm3 + vpxorq zmm11,zmm11,zmm4 + vpxorq zmm12,zmm12,zmm5 + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm7 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm10 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm11 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm12 + + vpshufb zmm7,zmm0,zmm29 + vpshufb zmm10,zmm3,zmm29 + vpshufb zmm11,zmm4,zmm29 + vpshufb zmm12,zmm5,zmm29 + vmovdqa64 ZMMWORD[1024+rsp],zmm7 + vmovdqa64 ZMMWORD[1088+rsp],zmm10 + vmovdqa64 ZMMWORD[1152+rsp],zmm11 + vmovdqa64 ZMMWORD[1216+rsp],zmm12 + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_502 + vmovdqu64 zmm3,ZMMWORD[640+rsp] + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[576+rsp] + vmovdqu64 zmm5,ZMMWORD[512+rsp] + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[192+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[128+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[64+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[rsp],zmm5 +$L$_skip_hkeys_precomputation_502: + mov r14,1 + add r11,512 + sub r13,512 + + cmp r13,768 + jb NEAR $L$_no_more_big_nblocks_497 +$L$_encrypt_big_nblocks_497: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_503 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_503 +$L$_16_blocks_overflow_503: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_503: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_504 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_504 +$L$_16_blocks_overflow_504: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_504: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[256+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[320+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[384+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[448+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[448+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vpternlogq zmm24,zmm6,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm0 + vmovdqa64 ZMMWORD[832+rsp],zmm3 + vmovdqa64 ZMMWORD[896+rsp],zmm4 + vmovdqa64 ZMMWORD[960+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_505 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_505 +$L$_16_blocks_overflow_505: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_505: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[512+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[576+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[640+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[704+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + + + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpternlogq zmm6,zmm12,zmm15,0x96 + vpxorq zmm6,zmm6,zmm24 + vpternlogq zmm7,zmm13,zmm10,0x96 + vpxorq zmm7,zmm7,zmm25 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vextracti64x4 ymm12,zmm6,1 + vpxorq ymm6,ymm6,ymm12 + vextracti32x4 xmm12,ymm6,1 + vpxorq xmm6,xmm6,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm6,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[512+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[576+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[640+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[704+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[1024+rsp],zmm0 + vmovdqa64 ZMMWORD[1088+rsp],zmm3 + vmovdqa64 ZMMWORD[1152+rsp],zmm4 + vmovdqa64 ZMMWORD[1216+rsp],zmm5 + vmovdqa64 zmm14,zmm6 + + add r11,768 + sub r13,768 + cmp r13,768 + jae NEAR $L$_encrypt_big_nblocks_497 + +$L$_no_more_big_nblocks_497: + + cmp r13,512 + jae NEAR $L$_encrypt_32_blocks_497 + + cmp r13,256 + jae NEAR $L$_encrypt_16_blocks_497 +$L$_encrypt_0_blocks_ghash_32_497: + mov r10d,r13d + and r10d,~15 + mov ebx,256 + sub ebx,r10d + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + add ebx,256 + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_506 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_506 + jb NEAR $L$_last_num_blocks_is_7_1_506 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_506 + jb NEAR $L$_last_num_blocks_is_11_9_506 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_506 + ja NEAR $L$_last_num_blocks_is_16_506 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_506 + jmp NEAR $L$_last_num_blocks_is_13_506 + +$L$_last_num_blocks_is_11_9_506: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_506 + ja NEAR $L$_last_num_blocks_is_11_506 + jmp NEAR $L$_last_num_blocks_is_9_506 + +$L$_last_num_blocks_is_7_1_506: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_506 + jb NEAR $L$_last_num_blocks_is_3_1_506 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_506 + je NEAR $L$_last_num_blocks_is_6_506 + jmp NEAR $L$_last_num_blocks_is_5_506 + +$L$_last_num_blocks_is_3_1_506: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_506 + je NEAR $L$_last_num_blocks_is_2_506 +$L$_last_num_blocks_is_1_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_507 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_507 + +$L$_16_blocks_overflow_507: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_507: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb xmm17,xmm17,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_508 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_508 +$L$_small_initial_partial_block_508: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_508 +$L$_small_initial_compute_done_508: +$L$_after_reduction_508: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_2_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_509 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_509 + +$L$_16_blocks_overflow_509: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_509: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb ymm17,ymm17,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_510 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_510 +$L$_small_initial_partial_block_510: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_510: + + or r13,r13 + je NEAR $L$_after_reduction_510 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_510: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_3_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_511 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_511 + +$L$_16_blocks_overflow_511: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_511: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_512 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_512 +$L$_small_initial_partial_block_512: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_512: + + or r13,r13 + je NEAR $L$_after_reduction_512 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_512: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_4_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_513 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_513 + +$L$_16_blocks_overflow_513: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_513: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_514 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_514 +$L$_small_initial_partial_block_514: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_514: + + or r13,r13 + je NEAR $L$_after_reduction_514 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_514: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_5_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_515 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_515 + +$L$_16_blocks_overflow_515: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_515: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb xmm19,xmm19,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_516 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_516 +$L$_small_initial_partial_block_516: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_516: + + or r13,r13 + je NEAR $L$_after_reduction_516 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_516: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_6_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_517 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_517 + +$L$_16_blocks_overflow_517: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_517: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb ymm19,ymm19,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_518 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_518 +$L$_small_initial_partial_block_518: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_518: + + or r13,r13 + je NEAR $L$_after_reduction_518 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_518: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_7_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_519 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_519 + +$L$_16_blocks_overflow_519: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_519: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_520 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_520 +$L$_small_initial_partial_block_520: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_520: + + or r13,r13 + je NEAR $L$_after_reduction_520 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_520: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_8_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_521 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_521 + +$L$_16_blocks_overflow_521: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_521: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_522 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_522 +$L$_small_initial_partial_block_522: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_522: + + or r13,r13 + je NEAR $L$_after_reduction_522 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_522: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_9_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_523 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_523 + +$L$_16_blocks_overflow_523: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_523: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb xmm20,xmm20,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_524 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_524 +$L$_small_initial_partial_block_524: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_524: + + or r13,r13 + je NEAR $L$_after_reduction_524 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_524: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_10_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_525 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_525 + +$L$_16_blocks_overflow_525: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_525: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb ymm20,ymm20,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_526 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_526 +$L$_small_initial_partial_block_526: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_526: + + or r13,r13 + je NEAR $L$_after_reduction_526 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_526: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_11_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_527 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_527 + +$L$_16_blocks_overflow_527: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_527: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_528 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_528 +$L$_small_initial_partial_block_528: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_528: + + or r13,r13 + je NEAR $L$_after_reduction_528 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_528: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_12_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_529 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_529 + +$L$_16_blocks_overflow_529: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_529: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_530 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_530 +$L$_small_initial_partial_block_530: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_530: + + or r13,r13 + je NEAR $L$_after_reduction_530 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_530: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_13_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_531 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_531 + +$L$_16_blocks_overflow_531: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_531: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb xmm21,xmm21,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_532 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_532 +$L$_small_initial_partial_block_532: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_532: + + or r13,r13 + je NEAR $L$_after_reduction_532 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_532: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_14_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_533 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_533 + +$L$_16_blocks_overflow_533: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_533: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb ymm21,ymm21,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_534 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_534 +$L$_small_initial_partial_block_534: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_534: + + or r13,r13 + je NEAR $L$_after_reduction_534 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_534: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_15_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_535 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_535 + +$L$_16_blocks_overflow_535: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_535: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_536 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_536 +$L$_small_initial_partial_block_536: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_536: + + or r13,r13 + je NEAR $L$_after_reduction_536 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_536: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_16_506: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_537 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_537 + +$L$_16_blocks_overflow_537: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_537: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_538: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_538: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_538: + jmp NEAR $L$_last_blocks_done_506 +$L$_last_num_blocks_is_0_506: + vmovdqa64 zmm13,ZMMWORD[1024+rsp] + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1088+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1152+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1216+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_506: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_497 +$L$_encrypt_32_blocks_497: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_539 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_539 +$L$_16_blocks_overflow_539: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_539: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_540 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_540 +$L$_16_blocks_overflow_540: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_540: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[256+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[320+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[384+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[448+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[448+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vpternlogq zmm24,zmm6,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm0 + vmovdqa64 ZMMWORD[832+rsp],zmm3 + vmovdqa64 ZMMWORD[896+rsp],zmm4 + vmovdqa64 ZMMWORD[960+rsp],zmm5 + vmovdqa64 zmm13,ZMMWORD[1280+rsp] + vmovdqu64 zmm12,ZMMWORD[512+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1344+rsp] + vmovdqu64 zmm12,ZMMWORD[576+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1408+rsp] + vmovdqu64 zmm12,ZMMWORD[640+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1472+rsp] + vmovdqu64 zmm12,ZMMWORD[704+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + + sub r13,512 + add r11,512 + mov r10d,r13d + and r10d,~15 + mov ebx,512 + sub ebx,r10d + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_541 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_541 + jb NEAR $L$_last_num_blocks_is_7_1_541 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_541 + jb NEAR $L$_last_num_blocks_is_11_9_541 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_541 + ja NEAR $L$_last_num_blocks_is_16_541 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_541 + jmp NEAR $L$_last_num_blocks_is_13_541 + +$L$_last_num_blocks_is_11_9_541: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_541 + ja NEAR $L$_last_num_blocks_is_11_541 + jmp NEAR $L$_last_num_blocks_is_9_541 + +$L$_last_num_blocks_is_7_1_541: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_541 + jb NEAR $L$_last_num_blocks_is_3_1_541 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_541 + je NEAR $L$_last_num_blocks_is_6_541 + jmp NEAR $L$_last_num_blocks_is_5_541 + +$L$_last_num_blocks_is_3_1_541: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_541 + je NEAR $L$_last_num_blocks_is_2_541 +$L$_last_num_blocks_is_1_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_542 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_542 + +$L$_16_blocks_overflow_542: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_542: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb xmm17,xmm17,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_543 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_543 +$L$_small_initial_partial_block_543: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_543 +$L$_small_initial_compute_done_543: +$L$_after_reduction_543: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_2_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_544 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_544 + +$L$_16_blocks_overflow_544: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_544: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb ymm17,ymm17,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_545 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_545 +$L$_small_initial_partial_block_545: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_545: + + or r13,r13 + je NEAR $L$_after_reduction_545 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_545: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_3_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_546 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_546 + +$L$_16_blocks_overflow_546: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_546: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_547 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_547 +$L$_small_initial_partial_block_547: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_547: + + or r13,r13 + je NEAR $L$_after_reduction_547 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_547: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_4_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_548 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_548 + +$L$_16_blocks_overflow_548: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_548: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_549 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_549 +$L$_small_initial_partial_block_549: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_549: + + or r13,r13 + je NEAR $L$_after_reduction_549 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_549: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_5_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_550 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_550 + +$L$_16_blocks_overflow_550: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_550: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb xmm19,xmm19,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_551 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_551 +$L$_small_initial_partial_block_551: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_551: + + or r13,r13 + je NEAR $L$_after_reduction_551 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_551: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_6_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_552 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_552 + +$L$_16_blocks_overflow_552: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_552: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb ymm19,ymm19,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_553 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_553 +$L$_small_initial_partial_block_553: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_553: + + or r13,r13 + je NEAR $L$_after_reduction_553 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_553: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_7_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_554 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_554 + +$L$_16_blocks_overflow_554: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_554: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_555 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_555 +$L$_small_initial_partial_block_555: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_555: + + or r13,r13 + je NEAR $L$_after_reduction_555 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_555: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_8_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_556 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_556 + +$L$_16_blocks_overflow_556: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_556: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_557 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_557 +$L$_small_initial_partial_block_557: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_557: + + or r13,r13 + je NEAR $L$_after_reduction_557 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_557: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_9_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_558 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_558 + +$L$_16_blocks_overflow_558: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_558: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb xmm20,xmm20,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_559 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_559 +$L$_small_initial_partial_block_559: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_559: + + or r13,r13 + je NEAR $L$_after_reduction_559 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_559: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_10_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_560 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_560 + +$L$_16_blocks_overflow_560: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_560: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb ymm20,ymm20,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_561 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_561 +$L$_small_initial_partial_block_561: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_561: + + or r13,r13 + je NEAR $L$_after_reduction_561 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_561: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_11_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_562 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_562 + +$L$_16_blocks_overflow_562: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_562: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_563 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_563 +$L$_small_initial_partial_block_563: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_563: + + or r13,r13 + je NEAR $L$_after_reduction_563 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_563: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_12_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_564 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_564 + +$L$_16_blocks_overflow_564: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_564: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_565 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_565 +$L$_small_initial_partial_block_565: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_565: + + or r13,r13 + je NEAR $L$_after_reduction_565 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_565: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_13_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_566 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_566 + +$L$_16_blocks_overflow_566: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_566: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb xmm21,xmm21,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_567 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_567 +$L$_small_initial_partial_block_567: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_567: + + or r13,r13 + je NEAR $L$_after_reduction_567 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_567: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_14_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_568 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_568 + +$L$_16_blocks_overflow_568: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_568: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb ymm21,ymm21,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_569 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_569 +$L$_small_initial_partial_block_569: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_569: + + or r13,r13 + je NEAR $L$_after_reduction_569 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_569: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_15_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_570 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_570 + +$L$_16_blocks_overflow_570: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_570: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_571 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_571 +$L$_small_initial_partial_block_571: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_571: + + or r13,r13 + je NEAR $L$_after_reduction_571 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_571: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_16_541: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_572 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_572 + +$L$_16_blocks_overflow_572: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_572: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_573: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_573: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_573: + jmp NEAR $L$_last_blocks_done_541 +$L$_last_num_blocks_is_0_541: + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_541: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_497 +$L$_encrypt_16_blocks_497: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_574 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_574 +$L$_16_blocks_overflow_574: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_574: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + vmovdqa64 zmm13,ZMMWORD[1024+rsp] + vmovdqu64 zmm12,ZMMWORD[256+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1088+rsp] + vmovdqu64 zmm12,ZMMWORD[320+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1152+rsp] + vmovdqu64 zmm12,ZMMWORD[384+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1216+rsp] + vmovdqu64 zmm12,ZMMWORD[448+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + sub r13,256 + add r11,256 + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_575 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_575 + jb NEAR $L$_last_num_blocks_is_7_1_575 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_575 + jb NEAR $L$_last_num_blocks_is_11_9_575 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_575 + ja NEAR $L$_last_num_blocks_is_16_575 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_575 + jmp NEAR $L$_last_num_blocks_is_13_575 + +$L$_last_num_blocks_is_11_9_575: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_575 + ja NEAR $L$_last_num_blocks_is_11_575 + jmp NEAR $L$_last_num_blocks_is_9_575 + +$L$_last_num_blocks_is_7_1_575: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_575 + jb NEAR $L$_last_num_blocks_is_3_1_575 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_575 + je NEAR $L$_last_num_blocks_is_6_575 + jmp NEAR $L$_last_num_blocks_is_5_575 + +$L$_last_num_blocks_is_3_1_575: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_575 + je NEAR $L$_last_num_blocks_is_2_575 +$L$_last_num_blocks_is_1_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_576 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_576 + +$L$_16_blocks_overflow_576: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_576: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc xmm0,xmm0,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb xmm17,xmm17,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_577 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_577 +$L$_small_initial_partial_block_577: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_577 +$L$_small_initial_compute_done_577: +$L$_after_reduction_577: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_2_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_578 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_578 + +$L$_16_blocks_overflow_578: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_578: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc ymm0,ymm0,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb ymm17,ymm17,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_579 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_579 +$L$_small_initial_partial_block_579: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_579: + + or r13,r13 + je NEAR $L$_after_reduction_579 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_579: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_3_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_580 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_580 + +$L$_16_blocks_overflow_580: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_580: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_581 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_581 +$L$_small_initial_partial_block_581: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_581: + + or r13,r13 + je NEAR $L$_after_reduction_581 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_581: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_4_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_582 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_582 + +$L$_16_blocks_overflow_582: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_582: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_583 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_583 +$L$_small_initial_partial_block_583: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_583: + + or r13,r13 + je NEAR $L$_after_reduction_583 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_583: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_5_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_584 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_584 + +$L$_16_blocks_overflow_584: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_584: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb xmm19,xmm19,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_585 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_585 +$L$_small_initial_partial_block_585: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_585: + + or r13,r13 + je NEAR $L$_after_reduction_585 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_585: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_6_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_586 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_586 + +$L$_16_blocks_overflow_586: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_586: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb ymm19,ymm19,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_587 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_587 +$L$_small_initial_partial_block_587: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_587: + + or r13,r13 + je NEAR $L$_after_reduction_587 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_587: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_7_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_588 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_588 + +$L$_16_blocks_overflow_588: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_588: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_589 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_589 +$L$_small_initial_partial_block_589: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_589: + + or r13,r13 + je NEAR $L$_after_reduction_589 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_589: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_8_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_590 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_590 + +$L$_16_blocks_overflow_590: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_590: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_591 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_591 +$L$_small_initial_partial_block_591: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_591: + + or r13,r13 + je NEAR $L$_after_reduction_591 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_591: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_9_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_592 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_592 + +$L$_16_blocks_overflow_592: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_592: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb xmm20,xmm20,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_593 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_593 +$L$_small_initial_partial_block_593: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_593: + + or r13,r13 + je NEAR $L$_after_reduction_593 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_593: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_10_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_594 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_594 + +$L$_16_blocks_overflow_594: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_594: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb ymm20,ymm20,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_595 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_595 +$L$_small_initial_partial_block_595: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_595: + + or r13,r13 + je NEAR $L$_after_reduction_595 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_595: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_11_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_596 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_596 + +$L$_16_blocks_overflow_596: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_596: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_597 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_597 +$L$_small_initial_partial_block_597: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_597: + + or r13,r13 + je NEAR $L$_after_reduction_597 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_597: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_12_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_598 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_598 + +$L$_16_blocks_overflow_598: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_598: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_599 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_599 +$L$_small_initial_partial_block_599: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_599: + + or r13,r13 + je NEAR $L$_after_reduction_599 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_599: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_13_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_600 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_600 + +$L$_16_blocks_overflow_600: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_600: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb xmm21,xmm21,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_601 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_601 +$L$_small_initial_partial_block_601: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_601: + + or r13,r13 + je NEAR $L$_after_reduction_601 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_601: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_14_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_602 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_602 + +$L$_16_blocks_overflow_602: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_602: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb ymm21,ymm21,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_603 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_603 +$L$_small_initial_partial_block_603: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_603: + + or r13,r13 + je NEAR $L$_after_reduction_603 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_603: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_15_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_604 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_604 + +$L$_16_blocks_overflow_604: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_604: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_605 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_605 +$L$_small_initial_partial_block_605: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_605: + + or r13,r13 + je NEAR $L$_after_reduction_605 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_605: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_16_575: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_606 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_606 + +$L$_16_blocks_overflow_606: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_606: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_607: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_607: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_607: + jmp NEAR $L$_last_blocks_done_575 +$L$_last_num_blocks_is_0_575: + vmovdqa64 zmm13,ZMMWORD[1280+rsp] + vmovdqu64 zmm12,ZMMWORD[512+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1344+rsp] + vmovdqu64 zmm12,ZMMWORD[576+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1408+rsp] + vmovdqu64 zmm12,ZMMWORD[640+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1472+rsp] + vmovdqu64 zmm12,ZMMWORD[704+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_575: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_497 + +$L$_message_below_32_blocks_497: + + + sub r13,256 + add r11,256 + mov r10d,r13d + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_608 + vmovdqu64 zmm3,ZMMWORD[640+rsp] + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[576+rsp] + vmovdqu64 zmm5,ZMMWORD[512+rsp] + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm5 +$L$_skip_hkeys_precomputation_608: + mov r14,1 + and r10d,~15 + mov ebx,512 + sub ebx,r10d + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_609 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_609 + jb NEAR $L$_last_num_blocks_is_7_1_609 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_609 + jb NEAR $L$_last_num_blocks_is_11_9_609 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_609 + ja NEAR $L$_last_num_blocks_is_16_609 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_609 + jmp NEAR $L$_last_num_blocks_is_13_609 + +$L$_last_num_blocks_is_11_9_609: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_609 + ja NEAR $L$_last_num_blocks_is_11_609 + jmp NEAR $L$_last_num_blocks_is_9_609 + +$L$_last_num_blocks_is_7_1_609: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_609 + jb NEAR $L$_last_num_blocks_is_3_1_609 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_609 + je NEAR $L$_last_num_blocks_is_6_609 + jmp NEAR $L$_last_num_blocks_is_5_609 + +$L$_last_num_blocks_is_3_1_609: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_609 + je NEAR $L$_last_num_blocks_is_2_609 +$L$_last_num_blocks_is_1_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_610 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_610 + +$L$_16_blocks_overflow_610: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_610: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb xmm17,xmm17,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_611 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_611 +$L$_small_initial_partial_block_611: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_611 +$L$_small_initial_compute_done_611: +$L$_after_reduction_611: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_2_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_612 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_612 + +$L$_16_blocks_overflow_612: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_612: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb ymm17,ymm17,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_613 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_613 +$L$_small_initial_partial_block_613: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_613: + + or r13,r13 + je NEAR $L$_after_reduction_613 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_613: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_3_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_614 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_614 + +$L$_16_blocks_overflow_614: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_614: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_615 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_615 +$L$_small_initial_partial_block_615: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_615: + + or r13,r13 + je NEAR $L$_after_reduction_615 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_615: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_4_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_616 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_616 + +$L$_16_blocks_overflow_616: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_616: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_617 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_617 +$L$_small_initial_partial_block_617: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_617: + + or r13,r13 + je NEAR $L$_after_reduction_617 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_617: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_5_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_618 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_618 + +$L$_16_blocks_overflow_618: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_618: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb xmm19,xmm19,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_619 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_619 +$L$_small_initial_partial_block_619: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_619: + + or r13,r13 + je NEAR $L$_after_reduction_619 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_619: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_6_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_620 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_620 + +$L$_16_blocks_overflow_620: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_620: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb ymm19,ymm19,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_621 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_621 +$L$_small_initial_partial_block_621: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_621: + + or r13,r13 + je NEAR $L$_after_reduction_621 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_621: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_7_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_622 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_622 + +$L$_16_blocks_overflow_622: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_622: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_623 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_623 +$L$_small_initial_partial_block_623: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_623: + + or r13,r13 + je NEAR $L$_after_reduction_623 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_623: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_8_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_624 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_624 + +$L$_16_blocks_overflow_624: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_624: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_625 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_625 +$L$_small_initial_partial_block_625: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_625: + + or r13,r13 + je NEAR $L$_after_reduction_625 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_625: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_9_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_626 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_626 + +$L$_16_blocks_overflow_626: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_626: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb xmm20,xmm20,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_627 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_627 +$L$_small_initial_partial_block_627: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_627: + + or r13,r13 + je NEAR $L$_after_reduction_627 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_627: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_10_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_628 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_628 + +$L$_16_blocks_overflow_628: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_628: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb ymm20,ymm20,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_629 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_629 +$L$_small_initial_partial_block_629: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_629: + + or r13,r13 + je NEAR $L$_after_reduction_629 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_629: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_11_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_630 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_630 + +$L$_16_blocks_overflow_630: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_630: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_631 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_631 +$L$_small_initial_partial_block_631: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_631: + + or r13,r13 + je NEAR $L$_after_reduction_631 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_631: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_12_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_632 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_632 + +$L$_16_blocks_overflow_632: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_632: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_633 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_633 +$L$_small_initial_partial_block_633: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_633: + + or r13,r13 + je NEAR $L$_after_reduction_633 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_633: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_13_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_634 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_634 + +$L$_16_blocks_overflow_634: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_634: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb xmm21,xmm21,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_635 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_635 +$L$_small_initial_partial_block_635: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_635: + + or r13,r13 + je NEAR $L$_after_reduction_635 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_635: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_14_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_636 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_636 + +$L$_16_blocks_overflow_636: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_636: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb ymm21,ymm21,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_637 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_637 +$L$_small_initial_partial_block_637: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_637: + + or r13,r13 + je NEAR $L$_after_reduction_637 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_637: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_15_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_638 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_638 + +$L$_16_blocks_overflow_638: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_638: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_639 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_639 +$L$_small_initial_partial_block_639: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_639: + + or r13,r13 + je NEAR $L$_after_reduction_639 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_639: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_16_609: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_640 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_640 + +$L$_16_blocks_overflow_640: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_640: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_641: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_641: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_641: + jmp NEAR $L$_last_blocks_done_609 +$L$_last_num_blocks_is_0_609: + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_609: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_497 + +$L$_message_below_equal_16_blocks_497: + + + mov r12d,r13d + add r12d,15 + shr r12d,4 + cmp r12,8 + je NEAR $L$_small_initial_num_blocks_is_8_642 + jl NEAR $L$_small_initial_num_blocks_is_7_1_642 + + + cmp r12,12 + je NEAR $L$_small_initial_num_blocks_is_12_642 + jl NEAR $L$_small_initial_num_blocks_is_11_9_642 + + + cmp r12,16 + je NEAR $L$_small_initial_num_blocks_is_16_642 + cmp r12,15 + je NEAR $L$_small_initial_num_blocks_is_15_642 + cmp r12,14 + je NEAR $L$_small_initial_num_blocks_is_14_642 + jmp NEAR $L$_small_initial_num_blocks_is_13_642 + +$L$_small_initial_num_blocks_is_11_9_642: + + cmp r12,11 + je NEAR $L$_small_initial_num_blocks_is_11_642 + cmp r12,10 + je NEAR $L$_small_initial_num_blocks_is_10_642 + jmp NEAR $L$_small_initial_num_blocks_is_9_642 + +$L$_small_initial_num_blocks_is_7_1_642: + cmp r12,4 + je NEAR $L$_small_initial_num_blocks_is_4_642 + jl NEAR $L$_small_initial_num_blocks_is_3_1_642 + + cmp r12,7 + je NEAR $L$_small_initial_num_blocks_is_7_642 + cmp r12,6 + je NEAR $L$_small_initial_num_blocks_is_6_642 + jmp NEAR $L$_small_initial_num_blocks_is_5_642 + +$L$_small_initial_num_blocks_is_3_1_642: + + cmp r12,3 + je NEAR $L$_small_initial_num_blocks_is_3_642 + cmp r12,2 + je NEAR $L$_small_initial_num_blocks_is_2_642 + + + + + +$L$_small_initial_num_blocks_is_1_642: + vmovdqa64 xmm29,XMMWORD[SHUF_MASK] + vpaddd xmm0,xmm2,XMMWORD[ONE] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,0 + vpshufb xmm0,xmm0,xmm29 + vmovdqu8 xmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast xmm0,xmm0,xmm15 + vpxorq xmm0,xmm0,xmm6 + vextracti32x4 xmm12,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm6,xmm6,xmm29 + vextracti32x4 xmm13,zmm6,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_643 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm6,xmm20,0x01 + vpclmulqdq xmm5,xmm6,xmm20,0x10 + vpclmulqdq xmm0,xmm6,xmm20,0x11 + vpclmulqdq xmm3,xmm6,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_643 +$L$_small_initial_partial_block_643: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm13 + + jmp NEAR $L$_after_reduction_643 +$L$_small_initial_compute_done_643: +$L$_after_reduction_643: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_2_642: + vmovdqa64 ymm29,YMMWORD[SHUF_MASK] + vshufi64x2 ymm0,ymm2,ymm2,0 + vpaddd ymm0,ymm0,YMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,1 + vpshufb ymm0,ymm0,ymm29 + vmovdqu8 ymm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast ymm0,ymm0,ymm15 + vpxorq ymm0,ymm0,ymm6 + vextracti32x4 xmm12,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm6,ymm6,ymm29 + vextracti32x4 xmm13,zmm6,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_644 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm6,ymm20,0x01 + vpclmulqdq ymm5,ymm6,ymm20,0x10 + vpclmulqdq ymm0,ymm6,ymm20,0x11 + vpclmulqdq ymm3,ymm6,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_644 +$L$_small_initial_partial_block_644: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm6,xmm20,0x01 + vpclmulqdq xmm5,xmm6,xmm20,0x10 + vpclmulqdq xmm0,xmm6,xmm20,0x11 + vpclmulqdq xmm3,xmm6,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_644: + + or r13,r13 + je NEAR $L$_after_reduction_644 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_644: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_3_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,2 + vpshufb zmm0,zmm0,zmm29 + vmovdqu8 zmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vpxorq zmm0,zmm0,zmm6 + vextracti32x4 xmm12,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm6,zmm6,zmm29 + vextracti32x4 xmm13,zmm6,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_645 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_645 +$L$_small_initial_partial_block_645: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm6,ymm20,0x01 + vpclmulqdq ymm5,ymm6,ymm20,0x10 + vpclmulqdq ymm0,ymm6,ymm20,0x11 + vpclmulqdq ymm3,ymm6,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_645: + + or r13,r13 + je NEAR $L$_after_reduction_645 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_645: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_4_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,3 + vpshufb zmm0,zmm0,zmm29 + vmovdqu8 zmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vpxorq zmm0,zmm0,zmm6 + vextracti32x4 xmm12,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm6,zmm6,zmm29 + vextracti32x4 xmm13,zmm6,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_646 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_646 +$L$_small_initial_partial_block_646: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_646: + + or r13,r13 + je NEAR $L$_after_reduction_646 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_646: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_5_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 xmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast xmm3,xmm3,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq xmm3,xmm3,xmm7 + vextracti32x4 xmm12,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm6,zmm29 + vpshufb xmm7,xmm7,xmm29 + vextracti32x4 xmm13,zmm7,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_647 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm7,xmm20,0x01 + vpclmulqdq xmm5,xmm7,xmm20,0x10 + vpclmulqdq xmm0,xmm7,xmm20,0x11 + vpclmulqdq xmm3,xmm7,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_647 +$L$_small_initial_partial_block_647: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_647: + + or r13,r13 + je NEAR $L$_after_reduction_647 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_647: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_6_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 ymm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast ymm3,ymm3,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq ymm3,ymm3,ymm7 + vextracti32x4 xmm12,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm6,zmm29 + vpshufb ymm7,ymm7,ymm29 + vextracti32x4 xmm13,zmm7,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_648 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm7,ymm20,0x01 + vpclmulqdq ymm5,ymm7,ymm20,0x10 + vpclmulqdq ymm0,ymm7,ymm20,0x11 + vpclmulqdq ymm3,ymm7,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_648 +$L$_small_initial_partial_block_648: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm7,xmm20,0x01 + vpclmulqdq xmm5,xmm7,xmm20,0x10 + vpclmulqdq xmm0,xmm7,xmm20,0x11 + vpclmulqdq xmm3,xmm7,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_648: + + or r13,r13 + je NEAR $L$_after_reduction_648 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_648: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_7_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vextracti32x4 xmm12,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vextracti32x4 xmm13,zmm7,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_649 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm7,zmm20,0x01 + vpclmulqdq zmm5,zmm7,zmm20,0x10 + vpclmulqdq zmm0,zmm7,zmm20,0x11 + vpclmulqdq zmm3,zmm7,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_649 +$L$_small_initial_partial_block_649: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm7,ymm20,0x01 + vpclmulqdq ymm5,ymm7,ymm20,0x10 + vpclmulqdq ymm0,ymm7,ymm20,0x11 + vpclmulqdq ymm3,ymm7,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_649: + + or r13,r13 + je NEAR $L$_after_reduction_649 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_649: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_8_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vextracti32x4 xmm12,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vextracti32x4 xmm13,zmm7,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_650 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_650 +$L$_small_initial_partial_block_650: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm7,zmm20,0x01 + vpclmulqdq zmm5,zmm7,zmm20,0x10 + vpclmulqdq zmm0,zmm7,zmm20,0x11 + vpclmulqdq zmm3,zmm7,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_650: + + or r13,r13 + je NEAR $L$_after_reduction_650 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_650: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_9_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast xmm4,xmm4,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq xmm4,xmm4,xmm10 + vextracti32x4 xmm12,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb xmm10,xmm10,xmm29 + vextracti32x4 xmm13,zmm10,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_651 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm10,xmm20,0x01 + vpclmulqdq xmm5,xmm10,xmm20,0x10 + vpclmulqdq xmm0,xmm10,xmm20,0x11 + vpclmulqdq xmm3,xmm10,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_651 +$L$_small_initial_partial_block_651: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_651: + + or r13,r13 + je NEAR $L$_after_reduction_651 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_651: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_10_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast ymm4,ymm4,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq ymm4,ymm4,ymm10 + vextracti32x4 xmm12,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb ymm10,ymm10,ymm29 + vextracti32x4 xmm13,zmm10,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_652 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm10,ymm20,0x01 + vpclmulqdq ymm5,ymm10,ymm20,0x10 + vpclmulqdq ymm0,ymm10,ymm20,0x11 + vpclmulqdq ymm3,ymm10,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_652 +$L$_small_initial_partial_block_652: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm10,xmm20,0x01 + vpclmulqdq xmm5,xmm10,xmm20,0x10 + vpclmulqdq xmm0,xmm10,xmm20,0x11 + vpclmulqdq xmm3,xmm10,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_652: + + or r13,r13 + je NEAR $L$_after_reduction_652 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_652: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_11_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vextracti32x4 xmm12,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vextracti32x4 xmm13,zmm10,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_653 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm10,zmm20,0x01 + vpclmulqdq zmm5,zmm10,zmm20,0x10 + vpclmulqdq zmm0,zmm10,zmm20,0x11 + vpclmulqdq zmm3,zmm10,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_653 +$L$_small_initial_partial_block_653: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm10,ymm20,0x01 + vpclmulqdq ymm5,ymm10,ymm20,0x10 + vpclmulqdq ymm0,ymm10,ymm20,0x11 + vpclmulqdq ymm3,ymm10,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_653: + + or r13,r13 + je NEAR $L$_after_reduction_653 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_653: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_12_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vextracti32x4 xmm12,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vextracti32x4 xmm13,zmm10,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_654 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_654 +$L$_small_initial_partial_block_654: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm10,zmm20,0x01 + vpclmulqdq zmm5,zmm10,zmm20,0x10 + vpclmulqdq zmm0,zmm10,zmm20,0x11 + vpclmulqdq zmm3,zmm10,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_654: + + or r13,r13 + je NEAR $L$_after_reduction_654 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_654: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_13_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast xmm5,xmm5,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq xmm5,xmm5,xmm11 + vextracti32x4 xmm12,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb xmm11,xmm11,xmm29 + vextracti32x4 xmm13,zmm11,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_655 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm11,xmm20,0x01 + vpclmulqdq xmm5,xmm11,xmm20,0x10 + vpclmulqdq xmm0,xmm11,xmm20,0x11 + vpclmulqdq xmm3,xmm11,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_655 +$L$_small_initial_partial_block_655: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_655: + + or r13,r13 + je NEAR $L$_after_reduction_655 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_655: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_14_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast ymm5,ymm5,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq ymm5,ymm5,ymm11 + vextracti32x4 xmm12,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb ymm11,ymm11,ymm29 + vextracti32x4 xmm13,zmm11,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_656 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm11,ymm20,0x01 + vpclmulqdq ymm5,ymm11,ymm20,0x10 + vpclmulqdq ymm0,ymm11,ymm20,0x11 + vpclmulqdq ymm3,ymm11,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_656 +$L$_small_initial_partial_block_656: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm11,xmm20,0x01 + vpclmulqdq xmm5,xmm11,xmm20,0x10 + vpclmulqdq xmm0,xmm11,xmm20,0x11 + vpclmulqdq xmm3,xmm11,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_656: + + or r13,r13 + je NEAR $L$_after_reduction_656 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_656: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_15_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast zmm5,zmm5,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq zmm5,zmm5,zmm11 + vextracti32x4 xmm12,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vextracti32x4 xmm13,zmm11,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_657 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm11,zmm20,0x01 + vpclmulqdq zmm5,zmm11,zmm20,0x10 + vpclmulqdq zmm0,zmm11,zmm20,0x11 + vpclmulqdq zmm3,zmm11,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_657 +$L$_small_initial_partial_block_657: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm11,ymm20,0x01 + vpclmulqdq ymm5,ymm11,ymm20,0x10 + vpclmulqdq ymm0,ymm11,ymm20,0x11 + vpclmulqdq ymm3,ymm11,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_657: + + or r13,r13 + je NEAR $L$_after_reduction_657 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_657: + jmp NEAR $L$_small_initial_blocks_encrypted_642 +$L$_small_initial_num_blocks_is_16_642: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast zmm5,zmm5,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq zmm5,zmm5,zmm11 + vextracti32x4 xmm12,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vextracti32x4 xmm13,zmm11,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_658: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm11,zmm20,0x01 + vpclmulqdq zmm5,zmm11,zmm20,0x10 + vpclmulqdq zmm0,zmm11,zmm20,0x11 + vpclmulqdq zmm3,zmm11,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_658: + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_658: +$L$_small_initial_blocks_encrypted_642: +$L$_ghash_done_497: + vmovdqu64 XMMWORD[rdx],xmm2 + vmovdqu64 XMMWORD[64+rdx],xmm14 +$L$_enc_dec_done_497: + jmp NEAR $L$exit_gcm_decrypt +ALIGN 32 +$L$aes_gcm_decrypt_192_avx512: + cmp QWORD[112+rbp],0 + je NEAR $L$_enc_dec_done_659 + xor r14,r14 + vmovdqu64 xmm14,XMMWORD[64+rdx] + + mov r11,QWORD[r8] + or r11,r11 + je NEAR $L$_partial_block_done_660 + mov r10d,16 + lea r12,[byte_len_to_mask_table] + cmp QWORD[112+rbp],r10 + cmovc r10,QWORD[112+rbp] + add r12,r10 + add r12,r10 + kmovw k1,[r12] + vmovdqu8 xmm0{k1}{z},[r9] + + vmovdqu64 xmm3,XMMWORD[16+rdx] + vmovdqu64 xmm4,XMMWORD[336+rdx] + + + + lea r12,[SHIFT_MASK] + add r12,r11 + vmovdqu64 xmm5,XMMWORD[r12] + vpshufb xmm3,xmm3,xmm5 + + vmovdqa64 xmm6,xmm0 + vpxorq xmm3,xmm3,xmm0 + + + mov r13,QWORD[112+rbp] + add r13,r11 + sub r13,16 + jge NEAR $L$_no_extra_mask_660 + sub r12,r13 +$L$_no_extra_mask_660: + + + + vmovdqu64 xmm0,XMMWORD[16+r12] + vpand xmm3,xmm3,xmm0 + vpand xmm6,xmm6,xmm0 + vpshufb xmm6,xmm6,XMMWORD[SHUF_MASK] + vpshufb xmm6,xmm6,xmm5 + vpxorq xmm14,xmm14,xmm6 + cmp r13,0 + jl NEAR $L$_partial_incomplete_660 + + vpclmulqdq xmm7,xmm14,xmm4,0x11 + vpclmulqdq xmm10,xmm14,xmm4,0x00 + vpclmulqdq xmm11,xmm14,xmm4,0x01 + vpclmulqdq xmm14,xmm14,xmm4,0x10 + vpxorq xmm14,xmm14,xmm11 + + vpsrldq xmm11,xmm14,8 + vpslldq xmm14,xmm14,8 + vpxorq xmm7,xmm7,xmm11 + vpxorq xmm14,xmm14,xmm10 + + + + vmovdqu64 xmm11,XMMWORD[POLY2] + + vpclmulqdq xmm10,xmm11,xmm14,0x01 + vpslldq xmm10,xmm10,8 + vpxorq xmm14,xmm14,xmm10 + + + + vpclmulqdq xmm10,xmm11,xmm14,0x00 + vpsrldq xmm10,xmm10,4 + vpclmulqdq xmm14,xmm11,xmm14,0x10 + vpslldq xmm14,xmm14,4 + + vpternlogq xmm14,xmm7,xmm10,0x96 + + mov QWORD[r8],0 + + mov r12,r11 + mov r11,16 + sub r11,r12 + jmp NEAR $L$_enc_dec_done_660 + +$L$_partial_incomplete_660: + mov r12,QWORD[112+rbp] + add QWORD[r8],r12 + mov r11,QWORD[112+rbp] + +$L$_enc_dec_done_660: + + + lea r12,[byte_len_to_mask_table] + kmovw k1,[r11*2+r12] + vmovdqu64 XMMWORD[64+rdx],xmm14 + mov r12,QWORD[120+rbp] + vmovdqu8 XMMWORD[r12]{k1},xmm3 +$L$_partial_block_done_660: + vmovdqu64 xmm2,XMMWORD[rdx] + mov r13,QWORD[112+rbp] + sub r13,r11 + je NEAR $L$_enc_dec_done_659 + cmp r13,256 + jbe NEAR $L$_message_below_equal_16_blocks_659 + + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vmovdqa64 zmm27,ZMMWORD[ddq_addbe_4444] + vmovdqa64 zmm28,ZMMWORD[ddq_addbe_1234] + + + + + + + vmovd r15d,xmm2 + and r15d,255 + + vshufi64x2 zmm2,zmm2,zmm2,0 + vpshufb zmm2,zmm2,zmm29 + + + + cmp r15b,240 + jae NEAR $L$_next_16_overflow_661 + vpaddd zmm7,zmm2,zmm28 + vpaddd zmm10,zmm7,zmm27 + vpaddd zmm11,zmm10,zmm27 + vpaddd zmm12,zmm11,zmm27 + jmp NEAR $L$_next_16_ok_661 +$L$_next_16_overflow_661: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm12,ZMMWORD[ddq_add_4444] + vpaddd zmm7,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm10,zmm7,zmm12 + vpaddd zmm11,zmm10,zmm12 + vpaddd zmm12,zmm11,zmm12 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 +$L$_next_16_ok_661: + vshufi64x2 zmm2,zmm12,zmm12,255 + add r15b,16 + + vmovdqu8 zmm0,ZMMWORD[r11*1+r9] + vmovdqu8 zmm3,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm4,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm5,ZMMWORD[192+r11*1+r9] + + + vbroadcastf64x2 zmm6,ZMMWORD[rcx] + vpxorq zmm7,zmm7,zmm6 + vpxorq zmm10,zmm10,zmm6 + vpxorq zmm11,zmm11,zmm6 + vpxorq zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[16+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[32+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[48+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[64+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[80+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[96+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[112+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[128+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[144+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[160+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[176+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[192+rcx] + vaesenclast zmm7,zmm7,zmm6 + vaesenclast zmm10,zmm10,zmm6 + vaesenclast zmm11,zmm11,zmm6 + vaesenclast zmm12,zmm12,zmm6 + + + vpxorq zmm7,zmm7,zmm0 + vpxorq zmm10,zmm10,zmm3 + vpxorq zmm11,zmm11,zmm4 + vpxorq zmm12,zmm12,zmm5 + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm7 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm10 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm11 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm12 + + vpshufb zmm7,zmm0,zmm29 + vpshufb zmm10,zmm3,zmm29 + vpshufb zmm11,zmm4,zmm29 + vpshufb zmm12,zmm5,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm7 + vmovdqa64 ZMMWORD[832+rsp],zmm10 + vmovdqa64 ZMMWORD[896+rsp],zmm11 + vmovdqa64 ZMMWORD[960+rsp],zmm12 + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_662 + + vmovdqu64 zmm0,ZMMWORD[288+rdx] + vmovdqu64 ZMMWORD[704+rsp],zmm0 + + vmovdqu64 zmm3,ZMMWORD[224+rdx] + vmovdqu64 ZMMWORD[640+rsp],zmm3 + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[160+rdx] + vmovdqu64 ZMMWORD[576+rsp],zmm4 + + vmovdqu64 zmm5,ZMMWORD[96+rdx] + vmovdqu64 ZMMWORD[512+rsp],zmm5 +$L$_skip_hkeys_precomputation_662: + cmp r13,512 + jb NEAR $L$_message_below_32_blocks_659 + + + + cmp r15b,240 + jae NEAR $L$_next_16_overflow_663 + vpaddd zmm7,zmm2,zmm28 + vpaddd zmm10,zmm7,zmm27 + vpaddd zmm11,zmm10,zmm27 + vpaddd zmm12,zmm11,zmm27 + jmp NEAR $L$_next_16_ok_663 +$L$_next_16_overflow_663: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm12,ZMMWORD[ddq_add_4444] + vpaddd zmm7,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm10,zmm7,zmm12 + vpaddd zmm11,zmm10,zmm12 + vpaddd zmm12,zmm11,zmm12 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 +$L$_next_16_ok_663: + vshufi64x2 zmm2,zmm12,zmm12,255 + add r15b,16 + + vmovdqu8 zmm0,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm3,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm4,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm5,ZMMWORD[448+r11*1+r9] + + + vbroadcastf64x2 zmm6,ZMMWORD[rcx] + vpxorq zmm7,zmm7,zmm6 + vpxorq zmm10,zmm10,zmm6 + vpxorq zmm11,zmm11,zmm6 + vpxorq zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[16+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[32+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[48+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[64+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[80+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[96+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[112+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[128+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[144+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[160+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[176+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[192+rcx] + vaesenclast zmm7,zmm7,zmm6 + vaesenclast zmm10,zmm10,zmm6 + vaesenclast zmm11,zmm11,zmm6 + vaesenclast zmm12,zmm12,zmm6 + + + vpxorq zmm7,zmm7,zmm0 + vpxorq zmm10,zmm10,zmm3 + vpxorq zmm11,zmm11,zmm4 + vpxorq zmm12,zmm12,zmm5 + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm7 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm10 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm11 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm12 + + vpshufb zmm7,zmm0,zmm29 + vpshufb zmm10,zmm3,zmm29 + vpshufb zmm11,zmm4,zmm29 + vpshufb zmm12,zmm5,zmm29 + vmovdqa64 ZMMWORD[1024+rsp],zmm7 + vmovdqa64 ZMMWORD[1088+rsp],zmm10 + vmovdqa64 ZMMWORD[1152+rsp],zmm11 + vmovdqa64 ZMMWORD[1216+rsp],zmm12 + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_664 + vmovdqu64 zmm3,ZMMWORD[640+rsp] + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[576+rsp] + vmovdqu64 zmm5,ZMMWORD[512+rsp] + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[192+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[128+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[64+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[rsp],zmm5 +$L$_skip_hkeys_precomputation_664: + mov r14,1 + add r11,512 + sub r13,512 + + cmp r13,768 + jb NEAR $L$_no_more_big_nblocks_659 +$L$_encrypt_big_nblocks_659: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_665 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_665 +$L$_16_blocks_overflow_665: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_665: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_666 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_666 +$L$_16_blocks_overflow_666: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_666: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[256+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[320+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[384+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[448+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[448+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vpternlogq zmm24,zmm6,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm0 + vmovdqa64 ZMMWORD[832+rsp],zmm3 + vmovdqa64 ZMMWORD[896+rsp],zmm4 + vmovdqa64 ZMMWORD[960+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_667 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_667 +$L$_16_blocks_overflow_667: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_667: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[512+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[576+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[640+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[704+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + + + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpternlogq zmm6,zmm12,zmm15,0x96 + vpxorq zmm6,zmm6,zmm24 + vpternlogq zmm7,zmm13,zmm10,0x96 + vpxorq zmm7,zmm7,zmm25 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vextracti64x4 ymm12,zmm6,1 + vpxorq ymm6,ymm6,ymm12 + vextracti32x4 xmm12,ymm6,1 + vpxorq xmm6,xmm6,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm6,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[512+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[576+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[640+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[704+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[1024+rsp],zmm0 + vmovdqa64 ZMMWORD[1088+rsp],zmm3 + vmovdqa64 ZMMWORD[1152+rsp],zmm4 + vmovdqa64 ZMMWORD[1216+rsp],zmm5 + vmovdqa64 zmm14,zmm6 + + add r11,768 + sub r13,768 + cmp r13,768 + jae NEAR $L$_encrypt_big_nblocks_659 + +$L$_no_more_big_nblocks_659: + + cmp r13,512 + jae NEAR $L$_encrypt_32_blocks_659 + + cmp r13,256 + jae NEAR $L$_encrypt_16_blocks_659 +$L$_encrypt_0_blocks_ghash_32_659: + mov r10d,r13d + and r10d,~15 + mov ebx,256 + sub ebx,r10d + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + add ebx,256 + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_668 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_668 + jb NEAR $L$_last_num_blocks_is_7_1_668 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_668 + jb NEAR $L$_last_num_blocks_is_11_9_668 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_668 + ja NEAR $L$_last_num_blocks_is_16_668 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_668 + jmp NEAR $L$_last_num_blocks_is_13_668 + +$L$_last_num_blocks_is_11_9_668: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_668 + ja NEAR $L$_last_num_blocks_is_11_668 + jmp NEAR $L$_last_num_blocks_is_9_668 + +$L$_last_num_blocks_is_7_1_668: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_668 + jb NEAR $L$_last_num_blocks_is_3_1_668 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_668 + je NEAR $L$_last_num_blocks_is_6_668 + jmp NEAR $L$_last_num_blocks_is_5_668 + +$L$_last_num_blocks_is_3_1_668: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_668 + je NEAR $L$_last_num_blocks_is_2_668 +$L$_last_num_blocks_is_1_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_669 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_669 + +$L$_16_blocks_overflow_669: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_669: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb xmm17,xmm17,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_670 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_670 +$L$_small_initial_partial_block_670: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_670 +$L$_small_initial_compute_done_670: +$L$_after_reduction_670: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_2_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_671 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_671 + +$L$_16_blocks_overflow_671: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_671: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb ymm17,ymm17,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_672 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_672 +$L$_small_initial_partial_block_672: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_672: + + or r13,r13 + je NEAR $L$_after_reduction_672 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_672: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_3_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_673 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_673 + +$L$_16_blocks_overflow_673: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_673: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_674 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_674 +$L$_small_initial_partial_block_674: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_674: + + or r13,r13 + je NEAR $L$_after_reduction_674 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_674: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_4_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_675 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_675 + +$L$_16_blocks_overflow_675: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_675: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_676 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_676 +$L$_small_initial_partial_block_676: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_676: + + or r13,r13 + je NEAR $L$_after_reduction_676 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_676: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_5_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_677 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_677 + +$L$_16_blocks_overflow_677: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_677: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb xmm19,xmm19,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_678 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_678 +$L$_small_initial_partial_block_678: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_678: + + or r13,r13 + je NEAR $L$_after_reduction_678 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_678: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_6_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_679 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_679 + +$L$_16_blocks_overflow_679: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_679: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb ymm19,ymm19,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_680 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_680 +$L$_small_initial_partial_block_680: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_680: + + or r13,r13 + je NEAR $L$_after_reduction_680 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_680: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_7_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_681 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_681 + +$L$_16_blocks_overflow_681: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_681: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_682 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_682 +$L$_small_initial_partial_block_682: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_682: + + or r13,r13 + je NEAR $L$_after_reduction_682 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_682: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_8_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_683 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_683 + +$L$_16_blocks_overflow_683: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_683: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_684 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_684 +$L$_small_initial_partial_block_684: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_684: + + or r13,r13 + je NEAR $L$_after_reduction_684 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_684: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_9_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_685 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_685 + +$L$_16_blocks_overflow_685: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_685: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb xmm20,xmm20,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_686 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_686 +$L$_small_initial_partial_block_686: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_686: + + or r13,r13 + je NEAR $L$_after_reduction_686 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_686: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_10_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_687 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_687 + +$L$_16_blocks_overflow_687: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_687: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb ymm20,ymm20,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_688 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_688 +$L$_small_initial_partial_block_688: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_688: + + or r13,r13 + je NEAR $L$_after_reduction_688 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_688: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_11_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_689 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_689 + +$L$_16_blocks_overflow_689: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_689: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_690 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_690 +$L$_small_initial_partial_block_690: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_690: + + or r13,r13 + je NEAR $L$_after_reduction_690 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_690: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_12_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_691 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_691 + +$L$_16_blocks_overflow_691: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_691: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_692 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_692 +$L$_small_initial_partial_block_692: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_692: + + or r13,r13 + je NEAR $L$_after_reduction_692 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_692: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_13_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_693 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_693 + +$L$_16_blocks_overflow_693: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_693: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb xmm21,xmm21,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_694 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_694 +$L$_small_initial_partial_block_694: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_694: + + or r13,r13 + je NEAR $L$_after_reduction_694 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_694: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_14_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_695 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_695 + +$L$_16_blocks_overflow_695: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_695: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb ymm21,ymm21,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_696 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_696 +$L$_small_initial_partial_block_696: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_696: + + or r13,r13 + je NEAR $L$_after_reduction_696 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_696: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_15_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_697 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_697 + +$L$_16_blocks_overflow_697: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_697: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_698 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_698 +$L$_small_initial_partial_block_698: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_698: + + or r13,r13 + je NEAR $L$_after_reduction_698 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_698: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_16_668: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_699 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_699 + +$L$_16_blocks_overflow_699: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_699: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_700: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_700: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_700: + jmp NEAR $L$_last_blocks_done_668 +$L$_last_num_blocks_is_0_668: + vmovdqa64 zmm13,ZMMWORD[1024+rsp] + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1088+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1152+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1216+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_668: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_659 +$L$_encrypt_32_blocks_659: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_701 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_701 +$L$_16_blocks_overflow_701: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_701: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_702 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_702 +$L$_16_blocks_overflow_702: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_702: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[256+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[320+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[384+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[448+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[448+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vpternlogq zmm24,zmm6,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm0 + vmovdqa64 ZMMWORD[832+rsp],zmm3 + vmovdqa64 ZMMWORD[896+rsp],zmm4 + vmovdqa64 ZMMWORD[960+rsp],zmm5 + vmovdqa64 zmm13,ZMMWORD[1280+rsp] + vmovdqu64 zmm12,ZMMWORD[512+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1344+rsp] + vmovdqu64 zmm12,ZMMWORD[576+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1408+rsp] + vmovdqu64 zmm12,ZMMWORD[640+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1472+rsp] + vmovdqu64 zmm12,ZMMWORD[704+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + + sub r13,512 + add r11,512 + mov r10d,r13d + and r10d,~15 + mov ebx,512 + sub ebx,r10d + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_703 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_703 + jb NEAR $L$_last_num_blocks_is_7_1_703 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_703 + jb NEAR $L$_last_num_blocks_is_11_9_703 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_703 + ja NEAR $L$_last_num_blocks_is_16_703 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_703 + jmp NEAR $L$_last_num_blocks_is_13_703 + +$L$_last_num_blocks_is_11_9_703: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_703 + ja NEAR $L$_last_num_blocks_is_11_703 + jmp NEAR $L$_last_num_blocks_is_9_703 + +$L$_last_num_blocks_is_7_1_703: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_703 + jb NEAR $L$_last_num_blocks_is_3_1_703 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_703 + je NEAR $L$_last_num_blocks_is_6_703 + jmp NEAR $L$_last_num_blocks_is_5_703 + +$L$_last_num_blocks_is_3_1_703: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_703 + je NEAR $L$_last_num_blocks_is_2_703 +$L$_last_num_blocks_is_1_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_704 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_704 + +$L$_16_blocks_overflow_704: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_704: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb xmm17,xmm17,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_705 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_705 +$L$_small_initial_partial_block_705: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_705 +$L$_small_initial_compute_done_705: +$L$_after_reduction_705: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_2_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_706 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_706 + +$L$_16_blocks_overflow_706: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_706: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb ymm17,ymm17,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_707 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_707 +$L$_small_initial_partial_block_707: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_707: + + or r13,r13 + je NEAR $L$_after_reduction_707 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_707: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_3_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_708 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_708 + +$L$_16_blocks_overflow_708: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_708: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_709 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_709 +$L$_small_initial_partial_block_709: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_709: + + or r13,r13 + je NEAR $L$_after_reduction_709 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_709: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_4_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_710 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_710 + +$L$_16_blocks_overflow_710: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_710: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_711 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_711 +$L$_small_initial_partial_block_711: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_711: + + or r13,r13 + je NEAR $L$_after_reduction_711 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_711: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_5_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_712 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_712 + +$L$_16_blocks_overflow_712: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_712: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb xmm19,xmm19,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_713 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_713 +$L$_small_initial_partial_block_713: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_713: + + or r13,r13 + je NEAR $L$_after_reduction_713 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_713: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_6_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_714 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_714 + +$L$_16_blocks_overflow_714: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_714: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb ymm19,ymm19,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_715 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_715 +$L$_small_initial_partial_block_715: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_715: + + or r13,r13 + je NEAR $L$_after_reduction_715 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_715: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_7_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_716 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_716 + +$L$_16_blocks_overflow_716: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_716: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_717 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_717 +$L$_small_initial_partial_block_717: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_717: + + or r13,r13 + je NEAR $L$_after_reduction_717 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_717: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_8_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_718 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_718 + +$L$_16_blocks_overflow_718: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_718: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_719 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_719 +$L$_small_initial_partial_block_719: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_719: + + or r13,r13 + je NEAR $L$_after_reduction_719 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_719: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_9_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_720 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_720 + +$L$_16_blocks_overflow_720: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_720: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb xmm20,xmm20,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_721 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_721 +$L$_small_initial_partial_block_721: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_721: + + or r13,r13 + je NEAR $L$_after_reduction_721 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_721: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_10_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_722 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_722 + +$L$_16_blocks_overflow_722: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_722: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb ymm20,ymm20,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_723 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_723 +$L$_small_initial_partial_block_723: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_723: + + or r13,r13 + je NEAR $L$_after_reduction_723 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_723: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_11_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_724 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_724 + +$L$_16_blocks_overflow_724: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_724: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_725 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_725 +$L$_small_initial_partial_block_725: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_725: + + or r13,r13 + je NEAR $L$_after_reduction_725 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_725: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_12_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_726 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_726 + +$L$_16_blocks_overflow_726: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_726: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_727 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_727 +$L$_small_initial_partial_block_727: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_727: + + or r13,r13 + je NEAR $L$_after_reduction_727 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_727: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_13_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_728 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_728 + +$L$_16_blocks_overflow_728: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_728: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb xmm21,xmm21,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_729 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_729 +$L$_small_initial_partial_block_729: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_729: + + or r13,r13 + je NEAR $L$_after_reduction_729 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_729: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_14_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_730 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_730 + +$L$_16_blocks_overflow_730: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_730: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb ymm21,ymm21,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_731 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_731 +$L$_small_initial_partial_block_731: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_731: + + or r13,r13 + je NEAR $L$_after_reduction_731 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_731: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_15_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_732 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_732 + +$L$_16_blocks_overflow_732: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_732: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_733 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_733 +$L$_small_initial_partial_block_733: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_733: + + or r13,r13 + je NEAR $L$_after_reduction_733 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_733: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_16_703: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_734 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_734 + +$L$_16_blocks_overflow_734: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_734: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_735: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_735: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_735: + jmp NEAR $L$_last_blocks_done_703 +$L$_last_num_blocks_is_0_703: + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_703: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_659 +$L$_encrypt_16_blocks_659: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_736 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_736 +$L$_16_blocks_overflow_736: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_736: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + vmovdqa64 zmm13,ZMMWORD[1024+rsp] + vmovdqu64 zmm12,ZMMWORD[256+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1088+rsp] + vmovdqu64 zmm12,ZMMWORD[320+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1152+rsp] + vmovdqu64 zmm12,ZMMWORD[384+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1216+rsp] + vmovdqu64 zmm12,ZMMWORD[448+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + sub r13,256 + add r11,256 + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_737 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_737 + jb NEAR $L$_last_num_blocks_is_7_1_737 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_737 + jb NEAR $L$_last_num_blocks_is_11_9_737 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_737 + ja NEAR $L$_last_num_blocks_is_16_737 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_737 + jmp NEAR $L$_last_num_blocks_is_13_737 + +$L$_last_num_blocks_is_11_9_737: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_737 + ja NEAR $L$_last_num_blocks_is_11_737 + jmp NEAR $L$_last_num_blocks_is_9_737 + +$L$_last_num_blocks_is_7_1_737: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_737 + jb NEAR $L$_last_num_blocks_is_3_1_737 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_737 + je NEAR $L$_last_num_blocks_is_6_737 + jmp NEAR $L$_last_num_blocks_is_5_737 + +$L$_last_num_blocks_is_3_1_737: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_737 + je NEAR $L$_last_num_blocks_is_2_737 +$L$_last_num_blocks_is_1_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_738 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_738 + +$L$_16_blocks_overflow_738: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_738: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc xmm0,xmm0,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb xmm17,xmm17,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_739 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_739 +$L$_small_initial_partial_block_739: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_739 +$L$_small_initial_compute_done_739: +$L$_after_reduction_739: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_2_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_740 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_740 + +$L$_16_blocks_overflow_740: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_740: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc ymm0,ymm0,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb ymm17,ymm17,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_741 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_741 +$L$_small_initial_partial_block_741: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_741: + + or r13,r13 + je NEAR $L$_after_reduction_741 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_741: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_3_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_742 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_742 + +$L$_16_blocks_overflow_742: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_742: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_743 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_743 +$L$_small_initial_partial_block_743: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_743: + + or r13,r13 + je NEAR $L$_after_reduction_743 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_743: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_4_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_744 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_744 + +$L$_16_blocks_overflow_744: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_744: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_745 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_745 +$L$_small_initial_partial_block_745: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_745: + + or r13,r13 + je NEAR $L$_after_reduction_745 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_745: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_5_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_746 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_746 + +$L$_16_blocks_overflow_746: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_746: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb xmm19,xmm19,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_747 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_747 +$L$_small_initial_partial_block_747: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_747: + + or r13,r13 + je NEAR $L$_after_reduction_747 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_747: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_6_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_748 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_748 + +$L$_16_blocks_overflow_748: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_748: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb ymm19,ymm19,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_749 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_749 +$L$_small_initial_partial_block_749: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_749: + + or r13,r13 + je NEAR $L$_after_reduction_749 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_749: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_7_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_750 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_750 + +$L$_16_blocks_overflow_750: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_750: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_751 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_751 +$L$_small_initial_partial_block_751: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_751: + + or r13,r13 + je NEAR $L$_after_reduction_751 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_751: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_8_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_752 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_752 + +$L$_16_blocks_overflow_752: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_752: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_753 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_753 +$L$_small_initial_partial_block_753: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_753: + + or r13,r13 + je NEAR $L$_after_reduction_753 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_753: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_9_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_754 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_754 + +$L$_16_blocks_overflow_754: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_754: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb xmm20,xmm20,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_755 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_755 +$L$_small_initial_partial_block_755: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_755: + + or r13,r13 + je NEAR $L$_after_reduction_755 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_755: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_10_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_756 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_756 + +$L$_16_blocks_overflow_756: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_756: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb ymm20,ymm20,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_757 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_757 +$L$_small_initial_partial_block_757: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_757: + + or r13,r13 + je NEAR $L$_after_reduction_757 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_757: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_11_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_758 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_758 + +$L$_16_blocks_overflow_758: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_758: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_759 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_759 +$L$_small_initial_partial_block_759: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_759: + + or r13,r13 + je NEAR $L$_after_reduction_759 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_759: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_12_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_760 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_760 + +$L$_16_blocks_overflow_760: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_760: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_761 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_761 +$L$_small_initial_partial_block_761: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_761: + + or r13,r13 + je NEAR $L$_after_reduction_761 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_761: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_13_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_762 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_762 + +$L$_16_blocks_overflow_762: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_762: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb xmm21,xmm21,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_763 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_763 +$L$_small_initial_partial_block_763: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_763: + + or r13,r13 + je NEAR $L$_after_reduction_763 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_763: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_14_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_764 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_764 + +$L$_16_blocks_overflow_764: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_764: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb ymm21,ymm21,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_765 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_765 +$L$_small_initial_partial_block_765: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_765: + + or r13,r13 + je NEAR $L$_after_reduction_765 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_765: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_15_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_766 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_766 + +$L$_16_blocks_overflow_766: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_766: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_767 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_767 +$L$_small_initial_partial_block_767: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_767: + + or r13,r13 + je NEAR $L$_after_reduction_767 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_767: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_16_737: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_768 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_768 + +$L$_16_blocks_overflow_768: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_768: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_769: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_769: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_769: + jmp NEAR $L$_last_blocks_done_737 +$L$_last_num_blocks_is_0_737: + vmovdqa64 zmm13,ZMMWORD[1280+rsp] + vmovdqu64 zmm12,ZMMWORD[512+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1344+rsp] + vmovdqu64 zmm12,ZMMWORD[576+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1408+rsp] + vmovdqu64 zmm12,ZMMWORD[640+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1472+rsp] + vmovdqu64 zmm12,ZMMWORD[704+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_737: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_659 + +$L$_message_below_32_blocks_659: + + + sub r13,256 + add r11,256 + mov r10d,r13d + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_770 + vmovdqu64 zmm3,ZMMWORD[640+rsp] + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[576+rsp] + vmovdqu64 zmm5,ZMMWORD[512+rsp] + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm5 +$L$_skip_hkeys_precomputation_770: + mov r14,1 + and r10d,~15 + mov ebx,512 + sub ebx,r10d + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_771 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_771 + jb NEAR $L$_last_num_blocks_is_7_1_771 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_771 + jb NEAR $L$_last_num_blocks_is_11_9_771 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_771 + ja NEAR $L$_last_num_blocks_is_16_771 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_771 + jmp NEAR $L$_last_num_blocks_is_13_771 + +$L$_last_num_blocks_is_11_9_771: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_771 + ja NEAR $L$_last_num_blocks_is_11_771 + jmp NEAR $L$_last_num_blocks_is_9_771 + +$L$_last_num_blocks_is_7_1_771: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_771 + jb NEAR $L$_last_num_blocks_is_3_1_771 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_771 + je NEAR $L$_last_num_blocks_is_6_771 + jmp NEAR $L$_last_num_blocks_is_5_771 + +$L$_last_num_blocks_is_3_1_771: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_771 + je NEAR $L$_last_num_blocks_is_2_771 +$L$_last_num_blocks_is_1_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_772 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_772 + +$L$_16_blocks_overflow_772: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_772: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb xmm17,xmm17,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_773 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_773 +$L$_small_initial_partial_block_773: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_773 +$L$_small_initial_compute_done_773: +$L$_after_reduction_773: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_2_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_774 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_774 + +$L$_16_blocks_overflow_774: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_774: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb ymm17,ymm17,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_775 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_775 +$L$_small_initial_partial_block_775: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_775: + + or r13,r13 + je NEAR $L$_after_reduction_775 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_775: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_3_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_776 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_776 + +$L$_16_blocks_overflow_776: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_776: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_777 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_777 +$L$_small_initial_partial_block_777: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_777: + + or r13,r13 + je NEAR $L$_after_reduction_777 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_777: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_4_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_778 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_778 + +$L$_16_blocks_overflow_778: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_778: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_779 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_779 +$L$_small_initial_partial_block_779: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_779: + + or r13,r13 + je NEAR $L$_after_reduction_779 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_779: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_5_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_780 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_780 + +$L$_16_blocks_overflow_780: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_780: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb xmm19,xmm19,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_781 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_781 +$L$_small_initial_partial_block_781: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_781: + + or r13,r13 + je NEAR $L$_after_reduction_781 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_781: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_6_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_782 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_782 + +$L$_16_blocks_overflow_782: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_782: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb ymm19,ymm19,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_783 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_783 +$L$_small_initial_partial_block_783: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_783: + + or r13,r13 + je NEAR $L$_after_reduction_783 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_783: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_7_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_784 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_784 + +$L$_16_blocks_overflow_784: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_784: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_785 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_785 +$L$_small_initial_partial_block_785: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_785: + + or r13,r13 + je NEAR $L$_after_reduction_785 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_785: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_8_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_786 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_786 + +$L$_16_blocks_overflow_786: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_786: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_787 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_787 +$L$_small_initial_partial_block_787: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_787: + + or r13,r13 + je NEAR $L$_after_reduction_787 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_787: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_9_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_788 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_788 + +$L$_16_blocks_overflow_788: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_788: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb xmm20,xmm20,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_789 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_789 +$L$_small_initial_partial_block_789: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_789: + + or r13,r13 + je NEAR $L$_after_reduction_789 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_789: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_10_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_790 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_790 + +$L$_16_blocks_overflow_790: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_790: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb ymm20,ymm20,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_791 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_791 +$L$_small_initial_partial_block_791: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_791: + + or r13,r13 + je NEAR $L$_after_reduction_791 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_791: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_11_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_792 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_792 + +$L$_16_blocks_overflow_792: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_792: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_793 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_793 +$L$_small_initial_partial_block_793: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_793: + + or r13,r13 + je NEAR $L$_after_reduction_793 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_793: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_12_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_794 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_794 + +$L$_16_blocks_overflow_794: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_794: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_795 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_795 +$L$_small_initial_partial_block_795: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_795: + + or r13,r13 + je NEAR $L$_after_reduction_795 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_795: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_13_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_796 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_796 + +$L$_16_blocks_overflow_796: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_796: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb xmm21,xmm21,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_797 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_797 +$L$_small_initial_partial_block_797: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_797: + + or r13,r13 + je NEAR $L$_after_reduction_797 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_797: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_14_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_798 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_798 + +$L$_16_blocks_overflow_798: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_798: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb ymm21,ymm21,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_799 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_799 +$L$_small_initial_partial_block_799: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_799: + + or r13,r13 + je NEAR $L$_after_reduction_799 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_799: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_15_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_800 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_800 + +$L$_16_blocks_overflow_800: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_800: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_801 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_801 +$L$_small_initial_partial_block_801: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_801: + + or r13,r13 + je NEAR $L$_after_reduction_801 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_801: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_16_771: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_802 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_802 + +$L$_16_blocks_overflow_802: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_802: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_803: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_803: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_803: + jmp NEAR $L$_last_blocks_done_771 +$L$_last_num_blocks_is_0_771: + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_771: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_659 + +$L$_message_below_equal_16_blocks_659: + + + mov r12d,r13d + add r12d,15 + shr r12d,4 + cmp r12,8 + je NEAR $L$_small_initial_num_blocks_is_8_804 + jl NEAR $L$_small_initial_num_blocks_is_7_1_804 + + + cmp r12,12 + je NEAR $L$_small_initial_num_blocks_is_12_804 + jl NEAR $L$_small_initial_num_blocks_is_11_9_804 + + + cmp r12,16 + je NEAR $L$_small_initial_num_blocks_is_16_804 + cmp r12,15 + je NEAR $L$_small_initial_num_blocks_is_15_804 + cmp r12,14 + je NEAR $L$_small_initial_num_blocks_is_14_804 + jmp NEAR $L$_small_initial_num_blocks_is_13_804 + +$L$_small_initial_num_blocks_is_11_9_804: + + cmp r12,11 + je NEAR $L$_small_initial_num_blocks_is_11_804 + cmp r12,10 + je NEAR $L$_small_initial_num_blocks_is_10_804 + jmp NEAR $L$_small_initial_num_blocks_is_9_804 + +$L$_small_initial_num_blocks_is_7_1_804: + cmp r12,4 + je NEAR $L$_small_initial_num_blocks_is_4_804 + jl NEAR $L$_small_initial_num_blocks_is_3_1_804 + + cmp r12,7 + je NEAR $L$_small_initial_num_blocks_is_7_804 + cmp r12,6 + je NEAR $L$_small_initial_num_blocks_is_6_804 + jmp NEAR $L$_small_initial_num_blocks_is_5_804 + +$L$_small_initial_num_blocks_is_3_1_804: + + cmp r12,3 + je NEAR $L$_small_initial_num_blocks_is_3_804 + cmp r12,2 + je NEAR $L$_small_initial_num_blocks_is_2_804 + + + + + +$L$_small_initial_num_blocks_is_1_804: + vmovdqa64 xmm29,XMMWORD[SHUF_MASK] + vpaddd xmm0,xmm2,XMMWORD[ONE] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,0 + vpshufb xmm0,xmm0,xmm29 + vmovdqu8 xmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast xmm0,xmm0,xmm15 + vpxorq xmm0,xmm0,xmm6 + vextracti32x4 xmm12,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm6,xmm6,xmm29 + vextracti32x4 xmm13,zmm6,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_805 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm6,xmm20,0x01 + vpclmulqdq xmm5,xmm6,xmm20,0x10 + vpclmulqdq xmm0,xmm6,xmm20,0x11 + vpclmulqdq xmm3,xmm6,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_805 +$L$_small_initial_partial_block_805: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm13 + + jmp NEAR $L$_after_reduction_805 +$L$_small_initial_compute_done_805: +$L$_after_reduction_805: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_2_804: + vmovdqa64 ymm29,YMMWORD[SHUF_MASK] + vshufi64x2 ymm0,ymm2,ymm2,0 + vpaddd ymm0,ymm0,YMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,1 + vpshufb ymm0,ymm0,ymm29 + vmovdqu8 ymm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast ymm0,ymm0,ymm15 + vpxorq ymm0,ymm0,ymm6 + vextracti32x4 xmm12,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm6,ymm6,ymm29 + vextracti32x4 xmm13,zmm6,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_806 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm6,ymm20,0x01 + vpclmulqdq ymm5,ymm6,ymm20,0x10 + vpclmulqdq ymm0,ymm6,ymm20,0x11 + vpclmulqdq ymm3,ymm6,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_806 +$L$_small_initial_partial_block_806: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm6,xmm20,0x01 + vpclmulqdq xmm5,xmm6,xmm20,0x10 + vpclmulqdq xmm0,xmm6,xmm20,0x11 + vpclmulqdq xmm3,xmm6,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_806: + + or r13,r13 + je NEAR $L$_after_reduction_806 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_806: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_3_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,2 + vpshufb zmm0,zmm0,zmm29 + vmovdqu8 zmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vpxorq zmm0,zmm0,zmm6 + vextracti32x4 xmm12,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm6,zmm6,zmm29 + vextracti32x4 xmm13,zmm6,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_807 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_807 +$L$_small_initial_partial_block_807: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm6,ymm20,0x01 + vpclmulqdq ymm5,ymm6,ymm20,0x10 + vpclmulqdq ymm0,ymm6,ymm20,0x11 + vpclmulqdq ymm3,ymm6,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_807: + + or r13,r13 + je NEAR $L$_after_reduction_807 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_807: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_4_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,3 + vpshufb zmm0,zmm0,zmm29 + vmovdqu8 zmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vpxorq zmm0,zmm0,zmm6 + vextracti32x4 xmm12,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm6,zmm6,zmm29 + vextracti32x4 xmm13,zmm6,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_808 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_808 +$L$_small_initial_partial_block_808: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_808: + + or r13,r13 + je NEAR $L$_after_reduction_808 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_808: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_5_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 xmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast xmm3,xmm3,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq xmm3,xmm3,xmm7 + vextracti32x4 xmm12,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm6,zmm29 + vpshufb xmm7,xmm7,xmm29 + vextracti32x4 xmm13,zmm7,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_809 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm7,xmm20,0x01 + vpclmulqdq xmm5,xmm7,xmm20,0x10 + vpclmulqdq xmm0,xmm7,xmm20,0x11 + vpclmulqdq xmm3,xmm7,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_809 +$L$_small_initial_partial_block_809: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_809: + + or r13,r13 + je NEAR $L$_after_reduction_809 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_809: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_6_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 ymm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast ymm3,ymm3,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq ymm3,ymm3,ymm7 + vextracti32x4 xmm12,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm6,zmm29 + vpshufb ymm7,ymm7,ymm29 + vextracti32x4 xmm13,zmm7,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_810 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm7,ymm20,0x01 + vpclmulqdq ymm5,ymm7,ymm20,0x10 + vpclmulqdq ymm0,ymm7,ymm20,0x11 + vpclmulqdq ymm3,ymm7,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_810 +$L$_small_initial_partial_block_810: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm7,xmm20,0x01 + vpclmulqdq xmm5,xmm7,xmm20,0x10 + vpclmulqdq xmm0,xmm7,xmm20,0x11 + vpclmulqdq xmm3,xmm7,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_810: + + or r13,r13 + je NEAR $L$_after_reduction_810 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_810: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_7_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vextracti32x4 xmm12,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vextracti32x4 xmm13,zmm7,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_811 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm7,zmm20,0x01 + vpclmulqdq zmm5,zmm7,zmm20,0x10 + vpclmulqdq zmm0,zmm7,zmm20,0x11 + vpclmulqdq zmm3,zmm7,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_811 +$L$_small_initial_partial_block_811: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm7,ymm20,0x01 + vpclmulqdq ymm5,ymm7,ymm20,0x10 + vpclmulqdq ymm0,ymm7,ymm20,0x11 + vpclmulqdq ymm3,ymm7,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_811: + + or r13,r13 + je NEAR $L$_after_reduction_811 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_811: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_8_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vextracti32x4 xmm12,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vextracti32x4 xmm13,zmm7,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_812 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_812 +$L$_small_initial_partial_block_812: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm7,zmm20,0x01 + vpclmulqdq zmm5,zmm7,zmm20,0x10 + vpclmulqdq zmm0,zmm7,zmm20,0x11 + vpclmulqdq zmm3,zmm7,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_812: + + or r13,r13 + je NEAR $L$_after_reduction_812 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_812: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_9_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast xmm4,xmm4,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq xmm4,xmm4,xmm10 + vextracti32x4 xmm12,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb xmm10,xmm10,xmm29 + vextracti32x4 xmm13,zmm10,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_813 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm10,xmm20,0x01 + vpclmulqdq xmm5,xmm10,xmm20,0x10 + vpclmulqdq xmm0,xmm10,xmm20,0x11 + vpclmulqdq xmm3,xmm10,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_813 +$L$_small_initial_partial_block_813: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_813: + + or r13,r13 + je NEAR $L$_after_reduction_813 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_813: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_10_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast ymm4,ymm4,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq ymm4,ymm4,ymm10 + vextracti32x4 xmm12,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb ymm10,ymm10,ymm29 + vextracti32x4 xmm13,zmm10,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_814 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm10,ymm20,0x01 + vpclmulqdq ymm5,ymm10,ymm20,0x10 + vpclmulqdq ymm0,ymm10,ymm20,0x11 + vpclmulqdq ymm3,ymm10,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_814 +$L$_small_initial_partial_block_814: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm10,xmm20,0x01 + vpclmulqdq xmm5,xmm10,xmm20,0x10 + vpclmulqdq xmm0,xmm10,xmm20,0x11 + vpclmulqdq xmm3,xmm10,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_814: + + or r13,r13 + je NEAR $L$_after_reduction_814 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_814: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_11_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vextracti32x4 xmm12,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vextracti32x4 xmm13,zmm10,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_815 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm10,zmm20,0x01 + vpclmulqdq zmm5,zmm10,zmm20,0x10 + vpclmulqdq zmm0,zmm10,zmm20,0x11 + vpclmulqdq zmm3,zmm10,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_815 +$L$_small_initial_partial_block_815: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm10,ymm20,0x01 + vpclmulqdq ymm5,ymm10,ymm20,0x10 + vpclmulqdq ymm0,ymm10,ymm20,0x11 + vpclmulqdq ymm3,ymm10,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_815: + + or r13,r13 + je NEAR $L$_after_reduction_815 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_815: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_12_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vextracti32x4 xmm12,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vextracti32x4 xmm13,zmm10,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_816 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_816 +$L$_small_initial_partial_block_816: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm10,zmm20,0x01 + vpclmulqdq zmm5,zmm10,zmm20,0x10 + vpclmulqdq zmm0,zmm10,zmm20,0x11 + vpclmulqdq zmm3,zmm10,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_816: + + or r13,r13 + je NEAR $L$_after_reduction_816 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_816: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_13_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast xmm5,xmm5,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq xmm5,xmm5,xmm11 + vextracti32x4 xmm12,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb xmm11,xmm11,xmm29 + vextracti32x4 xmm13,zmm11,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_817 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm11,xmm20,0x01 + vpclmulqdq xmm5,xmm11,xmm20,0x10 + vpclmulqdq xmm0,xmm11,xmm20,0x11 + vpclmulqdq xmm3,xmm11,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_817 +$L$_small_initial_partial_block_817: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_817: + + or r13,r13 + je NEAR $L$_after_reduction_817 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_817: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_14_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast ymm5,ymm5,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq ymm5,ymm5,ymm11 + vextracti32x4 xmm12,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb ymm11,ymm11,ymm29 + vextracti32x4 xmm13,zmm11,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_818 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm11,ymm20,0x01 + vpclmulqdq ymm5,ymm11,ymm20,0x10 + vpclmulqdq ymm0,ymm11,ymm20,0x11 + vpclmulqdq ymm3,ymm11,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_818 +$L$_small_initial_partial_block_818: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm11,xmm20,0x01 + vpclmulqdq xmm5,xmm11,xmm20,0x10 + vpclmulqdq xmm0,xmm11,xmm20,0x11 + vpclmulqdq xmm3,xmm11,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_818: + + or r13,r13 + je NEAR $L$_after_reduction_818 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_818: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_15_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast zmm5,zmm5,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq zmm5,zmm5,zmm11 + vextracti32x4 xmm12,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vextracti32x4 xmm13,zmm11,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_819 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm11,zmm20,0x01 + vpclmulqdq zmm5,zmm11,zmm20,0x10 + vpclmulqdq zmm0,zmm11,zmm20,0x11 + vpclmulqdq zmm3,zmm11,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_819 +$L$_small_initial_partial_block_819: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm11,ymm20,0x01 + vpclmulqdq ymm5,ymm11,ymm20,0x10 + vpclmulqdq ymm0,ymm11,ymm20,0x11 + vpclmulqdq ymm3,ymm11,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_819: + + or r13,r13 + je NEAR $L$_after_reduction_819 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_819: + jmp NEAR $L$_small_initial_blocks_encrypted_804 +$L$_small_initial_num_blocks_is_16_804: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast zmm5,zmm5,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq zmm5,zmm5,zmm11 + vextracti32x4 xmm12,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vextracti32x4 xmm13,zmm11,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_820: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm11,zmm20,0x01 + vpclmulqdq zmm5,zmm11,zmm20,0x10 + vpclmulqdq zmm0,zmm11,zmm20,0x11 + vpclmulqdq zmm3,zmm11,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_820: + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_820: +$L$_small_initial_blocks_encrypted_804: +$L$_ghash_done_659: + vmovdqu64 XMMWORD[rdx],xmm2 + vmovdqu64 XMMWORD[64+rdx],xmm14 +$L$_enc_dec_done_659: + jmp NEAR $L$exit_gcm_decrypt +ALIGN 32 +$L$aes_gcm_decrypt_256_avx512: + cmp QWORD[112+rbp],0 + je NEAR $L$_enc_dec_done_821 + xor r14,r14 + vmovdqu64 xmm14,XMMWORD[64+rdx] + + mov r11,QWORD[r8] + or r11,r11 + je NEAR $L$_partial_block_done_822 + mov r10d,16 + lea r12,[byte_len_to_mask_table] + cmp QWORD[112+rbp],r10 + cmovc r10,QWORD[112+rbp] + add r12,r10 + add r12,r10 + kmovw k1,[r12] + vmovdqu8 xmm0{k1}{z},[r9] + + vmovdqu64 xmm3,XMMWORD[16+rdx] + vmovdqu64 xmm4,XMMWORD[336+rdx] + + + + lea r12,[SHIFT_MASK] + add r12,r11 + vmovdqu64 xmm5,XMMWORD[r12] + vpshufb xmm3,xmm3,xmm5 + + vmovdqa64 xmm6,xmm0 + vpxorq xmm3,xmm3,xmm0 + + + mov r13,QWORD[112+rbp] + add r13,r11 + sub r13,16 + jge NEAR $L$_no_extra_mask_822 + sub r12,r13 +$L$_no_extra_mask_822: + + + + vmovdqu64 xmm0,XMMWORD[16+r12] + vpand xmm3,xmm3,xmm0 + vpand xmm6,xmm6,xmm0 + vpshufb xmm6,xmm6,XMMWORD[SHUF_MASK] + vpshufb xmm6,xmm6,xmm5 + vpxorq xmm14,xmm14,xmm6 + cmp r13,0 + jl NEAR $L$_partial_incomplete_822 + + vpclmulqdq xmm7,xmm14,xmm4,0x11 + vpclmulqdq xmm10,xmm14,xmm4,0x00 + vpclmulqdq xmm11,xmm14,xmm4,0x01 + vpclmulqdq xmm14,xmm14,xmm4,0x10 + vpxorq xmm14,xmm14,xmm11 + + vpsrldq xmm11,xmm14,8 + vpslldq xmm14,xmm14,8 + vpxorq xmm7,xmm7,xmm11 + vpxorq xmm14,xmm14,xmm10 + + + + vmovdqu64 xmm11,XMMWORD[POLY2] + + vpclmulqdq xmm10,xmm11,xmm14,0x01 + vpslldq xmm10,xmm10,8 + vpxorq xmm14,xmm14,xmm10 + + + + vpclmulqdq xmm10,xmm11,xmm14,0x00 + vpsrldq xmm10,xmm10,4 + vpclmulqdq xmm14,xmm11,xmm14,0x10 + vpslldq xmm14,xmm14,4 + + vpternlogq xmm14,xmm7,xmm10,0x96 + + mov QWORD[r8],0 + + mov r12,r11 + mov r11,16 + sub r11,r12 + jmp NEAR $L$_enc_dec_done_822 + +$L$_partial_incomplete_822: + mov r12,QWORD[112+rbp] + add QWORD[r8],r12 + mov r11,QWORD[112+rbp] + +$L$_enc_dec_done_822: + + + lea r12,[byte_len_to_mask_table] + kmovw k1,[r11*2+r12] + vmovdqu64 XMMWORD[64+rdx],xmm14 + mov r12,QWORD[120+rbp] + vmovdqu8 XMMWORD[r12]{k1},xmm3 +$L$_partial_block_done_822: + vmovdqu64 xmm2,XMMWORD[rdx] + mov r13,QWORD[112+rbp] + sub r13,r11 + je NEAR $L$_enc_dec_done_821 + cmp r13,256 + jbe NEAR $L$_message_below_equal_16_blocks_821 + + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vmovdqa64 zmm27,ZMMWORD[ddq_addbe_4444] + vmovdqa64 zmm28,ZMMWORD[ddq_addbe_1234] + + + + + + + vmovd r15d,xmm2 + and r15d,255 + + vshufi64x2 zmm2,zmm2,zmm2,0 + vpshufb zmm2,zmm2,zmm29 + + + + cmp r15b,240 + jae NEAR $L$_next_16_overflow_823 + vpaddd zmm7,zmm2,zmm28 + vpaddd zmm10,zmm7,zmm27 + vpaddd zmm11,zmm10,zmm27 + vpaddd zmm12,zmm11,zmm27 + jmp NEAR $L$_next_16_ok_823 +$L$_next_16_overflow_823: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm12,ZMMWORD[ddq_add_4444] + vpaddd zmm7,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm10,zmm7,zmm12 + vpaddd zmm11,zmm10,zmm12 + vpaddd zmm12,zmm11,zmm12 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 +$L$_next_16_ok_823: + vshufi64x2 zmm2,zmm12,zmm12,255 + add r15b,16 + + vmovdqu8 zmm0,ZMMWORD[r11*1+r9] + vmovdqu8 zmm3,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm4,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm5,ZMMWORD[192+r11*1+r9] + + + vbroadcastf64x2 zmm6,ZMMWORD[rcx] + vpxorq zmm7,zmm7,zmm6 + vpxorq zmm10,zmm10,zmm6 + vpxorq zmm11,zmm11,zmm6 + vpxorq zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[16+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[32+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[48+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[64+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[80+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[96+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[112+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[128+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[144+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[160+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[176+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[192+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[208+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[224+rcx] + vaesenclast zmm7,zmm7,zmm6 + vaesenclast zmm10,zmm10,zmm6 + vaesenclast zmm11,zmm11,zmm6 + vaesenclast zmm12,zmm12,zmm6 + + + vpxorq zmm7,zmm7,zmm0 + vpxorq zmm10,zmm10,zmm3 + vpxorq zmm11,zmm11,zmm4 + vpxorq zmm12,zmm12,zmm5 + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm7 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm10 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm11 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm12 + + vpshufb zmm7,zmm0,zmm29 + vpshufb zmm10,zmm3,zmm29 + vpshufb zmm11,zmm4,zmm29 + vpshufb zmm12,zmm5,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm7 + vmovdqa64 ZMMWORD[832+rsp],zmm10 + vmovdqa64 ZMMWORD[896+rsp],zmm11 + vmovdqa64 ZMMWORD[960+rsp],zmm12 + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_824 + + vmovdqu64 zmm0,ZMMWORD[288+rdx] + vmovdqu64 ZMMWORD[704+rsp],zmm0 + + vmovdqu64 zmm3,ZMMWORD[224+rdx] + vmovdqu64 ZMMWORD[640+rsp],zmm3 + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[160+rdx] + vmovdqu64 ZMMWORD[576+rsp],zmm4 + + vmovdqu64 zmm5,ZMMWORD[96+rdx] + vmovdqu64 ZMMWORD[512+rsp],zmm5 +$L$_skip_hkeys_precomputation_824: + cmp r13,512 + jb NEAR $L$_message_below_32_blocks_821 + + + + cmp r15b,240 + jae NEAR $L$_next_16_overflow_825 + vpaddd zmm7,zmm2,zmm28 + vpaddd zmm10,zmm7,zmm27 + vpaddd zmm11,zmm10,zmm27 + vpaddd zmm12,zmm11,zmm27 + jmp NEAR $L$_next_16_ok_825 +$L$_next_16_overflow_825: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm12,ZMMWORD[ddq_add_4444] + vpaddd zmm7,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm10,zmm7,zmm12 + vpaddd zmm11,zmm10,zmm12 + vpaddd zmm12,zmm11,zmm12 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vpshufb zmm12,zmm12,zmm29 +$L$_next_16_ok_825: + vshufi64x2 zmm2,zmm12,zmm12,255 + add r15b,16 + + vmovdqu8 zmm0,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm3,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm4,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm5,ZMMWORD[448+r11*1+r9] + + + vbroadcastf64x2 zmm6,ZMMWORD[rcx] + vpxorq zmm7,zmm7,zmm6 + vpxorq zmm10,zmm10,zmm6 + vpxorq zmm11,zmm11,zmm6 + vpxorq zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[16+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[32+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[48+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[64+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[80+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[96+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[112+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[128+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[144+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[160+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[176+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[192+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[208+rcx] + vaesenc zmm7,zmm7,zmm6 + vaesenc zmm10,zmm10,zmm6 + vaesenc zmm11,zmm11,zmm6 + vaesenc zmm12,zmm12,zmm6 + vbroadcastf64x2 zmm6,ZMMWORD[224+rcx] + vaesenclast zmm7,zmm7,zmm6 + vaesenclast zmm10,zmm10,zmm6 + vaesenclast zmm11,zmm11,zmm6 + vaesenclast zmm12,zmm12,zmm6 + + + vpxorq zmm7,zmm7,zmm0 + vpxorq zmm10,zmm10,zmm3 + vpxorq zmm11,zmm11,zmm4 + vpxorq zmm12,zmm12,zmm5 + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm7 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm10 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm11 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm12 + + vpshufb zmm7,zmm0,zmm29 + vpshufb zmm10,zmm3,zmm29 + vpshufb zmm11,zmm4,zmm29 + vpshufb zmm12,zmm5,zmm29 + vmovdqa64 ZMMWORD[1024+rsp],zmm7 + vmovdqa64 ZMMWORD[1088+rsp],zmm10 + vmovdqa64 ZMMWORD[1152+rsp],zmm11 + vmovdqa64 ZMMWORD[1216+rsp],zmm12 + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_826 + vmovdqu64 zmm3,ZMMWORD[640+rsp] + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[576+rsp] + vmovdqu64 zmm5,ZMMWORD[512+rsp] + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[192+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[128+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[64+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[rsp],zmm5 +$L$_skip_hkeys_precomputation_826: + mov r14,1 + add r11,512 + sub r13,512 + + cmp r13,768 + jb NEAR $L$_no_more_big_nblocks_821 +$L$_encrypt_big_nblocks_821: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_827 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_827 +$L$_16_blocks_overflow_827: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_827: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_828 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_828 +$L$_16_blocks_overflow_828: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_828: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[256+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[320+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[384+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[448+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[448+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vpternlogq zmm24,zmm6,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm0 + vmovdqa64 ZMMWORD[832+rsp],zmm3 + vmovdqa64 ZMMWORD[896+rsp],zmm4 + vmovdqa64 ZMMWORD[960+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_829 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_829 +$L$_16_blocks_overflow_829: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_829: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[512+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[576+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[640+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[704+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + + + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpternlogq zmm6,zmm12,zmm15,0x96 + vpxorq zmm6,zmm6,zmm24 + vpternlogq zmm7,zmm13,zmm10,0x96 + vpxorq zmm7,zmm7,zmm25 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vextracti64x4 ymm12,zmm6,1 + vpxorq ymm6,ymm6,ymm12 + vextracti32x4 xmm12,ymm6,1 + vpxorq xmm6,xmm6,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm6,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[512+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[576+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[640+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[704+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[1024+rsp],zmm0 + vmovdqa64 ZMMWORD[1088+rsp],zmm3 + vmovdqa64 ZMMWORD[1152+rsp],zmm4 + vmovdqa64 ZMMWORD[1216+rsp],zmm5 + vmovdqa64 zmm14,zmm6 + + add r11,768 + sub r13,768 + cmp r13,768 + jae NEAR $L$_encrypt_big_nblocks_821 + +$L$_no_more_big_nblocks_821: + + cmp r13,512 + jae NEAR $L$_encrypt_32_blocks_821 + + cmp r13,256 + jae NEAR $L$_encrypt_16_blocks_821 +$L$_encrypt_0_blocks_ghash_32_821: + mov r10d,r13d + and r10d,~15 + mov ebx,256 + sub ebx,r10d + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + add ebx,256 + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_830 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_830 + jb NEAR $L$_last_num_blocks_is_7_1_830 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_830 + jb NEAR $L$_last_num_blocks_is_11_9_830 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_830 + ja NEAR $L$_last_num_blocks_is_16_830 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_830 + jmp NEAR $L$_last_num_blocks_is_13_830 + +$L$_last_num_blocks_is_11_9_830: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_830 + ja NEAR $L$_last_num_blocks_is_11_830 + jmp NEAR $L$_last_num_blocks_is_9_830 + +$L$_last_num_blocks_is_7_1_830: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_830 + jb NEAR $L$_last_num_blocks_is_3_1_830 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_830 + je NEAR $L$_last_num_blocks_is_6_830 + jmp NEAR $L$_last_num_blocks_is_5_830 + +$L$_last_num_blocks_is_3_1_830: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_830 + je NEAR $L$_last_num_blocks_is_2_830 +$L$_last_num_blocks_is_1_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_831 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_831 + +$L$_16_blocks_overflow_831: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_831: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb xmm17,xmm17,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_832 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_832 +$L$_small_initial_partial_block_832: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_832 +$L$_small_initial_compute_done_832: +$L$_after_reduction_832: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_2_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_833 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_833 + +$L$_16_blocks_overflow_833: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_833: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb ymm17,ymm17,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_834 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_834 +$L$_small_initial_partial_block_834: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_834: + + or r13,r13 + je NEAR $L$_after_reduction_834 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_834: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_3_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_835 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_835 + +$L$_16_blocks_overflow_835: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_835: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_836 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_836 +$L$_small_initial_partial_block_836: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_836: + + or r13,r13 + je NEAR $L$_after_reduction_836 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_836: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_4_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_837 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_837 + +$L$_16_blocks_overflow_837: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_837: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_838 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_838 +$L$_small_initial_partial_block_838: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_838: + + or r13,r13 + je NEAR $L$_after_reduction_838 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_838: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_5_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_839 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_839 + +$L$_16_blocks_overflow_839: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_839: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb xmm19,xmm19,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_840 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_840 +$L$_small_initial_partial_block_840: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_840: + + or r13,r13 + je NEAR $L$_after_reduction_840 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_840: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_6_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_841 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_841 + +$L$_16_blocks_overflow_841: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_841: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb ymm19,ymm19,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_842 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_842 +$L$_small_initial_partial_block_842: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_842: + + or r13,r13 + je NEAR $L$_after_reduction_842 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_842: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_7_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_843 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_843 + +$L$_16_blocks_overflow_843: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_843: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_844 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_844 +$L$_small_initial_partial_block_844: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_844: + + or r13,r13 + je NEAR $L$_after_reduction_844 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_844: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_8_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_845 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_845 + +$L$_16_blocks_overflow_845: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_845: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_846 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_846 +$L$_small_initial_partial_block_846: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_846: + + or r13,r13 + je NEAR $L$_after_reduction_846 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_846: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_9_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_847 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_847 + +$L$_16_blocks_overflow_847: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_847: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb xmm20,xmm20,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_848 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_848 +$L$_small_initial_partial_block_848: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_848: + + or r13,r13 + je NEAR $L$_after_reduction_848 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_848: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_10_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_849 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_849 + +$L$_16_blocks_overflow_849: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_849: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb ymm20,ymm20,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_850 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_850 +$L$_small_initial_partial_block_850: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_850: + + or r13,r13 + je NEAR $L$_after_reduction_850 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_850: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_11_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_851 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_851 + +$L$_16_blocks_overflow_851: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_851: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_852 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_852 +$L$_small_initial_partial_block_852: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_852: + + or r13,r13 + je NEAR $L$_after_reduction_852 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_852: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_12_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_853 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_853 + +$L$_16_blocks_overflow_853: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_853: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_854 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_854 +$L$_small_initial_partial_block_854: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_854: + + or r13,r13 + je NEAR $L$_after_reduction_854 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_854: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_13_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_855 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_855 + +$L$_16_blocks_overflow_855: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_855: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb xmm21,xmm21,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_856 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_856 +$L$_small_initial_partial_block_856: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_856: + + or r13,r13 + je NEAR $L$_after_reduction_856 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_856: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_14_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_857 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_857 + +$L$_16_blocks_overflow_857: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_857: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb ymm21,ymm21,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_858 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_858 +$L$_small_initial_partial_block_858: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_858: + + or r13,r13 + je NEAR $L$_after_reduction_858 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_858: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_15_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_859 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_859 + +$L$_16_blocks_overflow_859: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_859: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_860 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_860 +$L$_small_initial_partial_block_860: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_860: + + or r13,r13 + je NEAR $L$_after_reduction_860 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_860: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_16_830: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_861 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_861 + +$L$_16_blocks_overflow_861: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_861: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm24,zmm14,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_862: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_862: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_862: + jmp NEAR $L$_last_blocks_done_830 +$L$_last_num_blocks_is_0_830: + vmovdqa64 zmm13,ZMMWORD[1024+rsp] + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1088+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1152+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1216+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_830: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_821 +$L$_encrypt_32_blocks_821: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_863 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_863 +$L$_16_blocks_overflow_863: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_863: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_864 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_864 +$L$_16_blocks_overflow_864: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_864: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1024+rsp] + vmovdqu64 zmm1,ZMMWORD[256+rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[320+rsp] + vmovdqa64 zmm22,ZMMWORD[1088+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[384+rsp] + vmovdqa64 zmm8,ZMMWORD[1152+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[448+rsp] + vmovdqa64 zmm22,ZMMWORD[1216+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[256+r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[320+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[384+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[448+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm26,zmm10,zmm15,0x96 + vpternlogq zmm24,zmm6,zmm12,0x96 + vpternlogq zmm25,zmm7,zmm13,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[256+r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[320+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[384+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[448+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[768+rsp],zmm0 + vmovdqa64 ZMMWORD[832+rsp],zmm3 + vmovdqa64 ZMMWORD[896+rsp],zmm4 + vmovdqa64 ZMMWORD[960+rsp],zmm5 + vmovdqa64 zmm13,ZMMWORD[1280+rsp] + vmovdqu64 zmm12,ZMMWORD[512+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1344+rsp] + vmovdqu64 zmm12,ZMMWORD[576+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1408+rsp] + vmovdqu64 zmm12,ZMMWORD[640+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1472+rsp] + vmovdqu64 zmm12,ZMMWORD[704+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + + sub r13,512 + add r11,512 + mov r10d,r13d + and r10d,~15 + mov ebx,512 + sub ebx,r10d + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_865 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_865 + jb NEAR $L$_last_num_blocks_is_7_1_865 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_865 + jb NEAR $L$_last_num_blocks_is_11_9_865 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_865 + ja NEAR $L$_last_num_blocks_is_16_865 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_865 + jmp NEAR $L$_last_num_blocks_is_13_865 + +$L$_last_num_blocks_is_11_9_865: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_865 + ja NEAR $L$_last_num_blocks_is_11_865 + jmp NEAR $L$_last_num_blocks_is_9_865 + +$L$_last_num_blocks_is_7_1_865: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_865 + jb NEAR $L$_last_num_blocks_is_3_1_865 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_865 + je NEAR $L$_last_num_blocks_is_6_865 + jmp NEAR $L$_last_num_blocks_is_5_865 + +$L$_last_num_blocks_is_3_1_865: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_865 + je NEAR $L$_last_num_blocks_is_2_865 +$L$_last_num_blocks_is_1_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_866 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_866 + +$L$_16_blocks_overflow_866: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_866: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb xmm17,xmm17,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_867 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_867 +$L$_small_initial_partial_block_867: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_867 +$L$_small_initial_compute_done_867: +$L$_after_reduction_867: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_2_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_868 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_868 + +$L$_16_blocks_overflow_868: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_868: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb ymm17,ymm17,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_869 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_869 +$L$_small_initial_partial_block_869: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_869: + + or r13,r13 + je NEAR $L$_after_reduction_869 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_869: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_3_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_870 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_870 + +$L$_16_blocks_overflow_870: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_870: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_871 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_871 +$L$_small_initial_partial_block_871: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_871: + + or r13,r13 + je NEAR $L$_after_reduction_871 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_871: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_4_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_872 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_872 + +$L$_16_blocks_overflow_872: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_872: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_873 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_873 +$L$_small_initial_partial_block_873: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_873: + + or r13,r13 + je NEAR $L$_after_reduction_873 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_873: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_5_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_874 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_874 + +$L$_16_blocks_overflow_874: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_874: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb xmm19,xmm19,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_875 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_875 +$L$_small_initial_partial_block_875: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_875: + + or r13,r13 + je NEAR $L$_after_reduction_875 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_875: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_6_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_876 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_876 + +$L$_16_blocks_overflow_876: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_876: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb ymm19,ymm19,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_877 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_877 +$L$_small_initial_partial_block_877: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_877: + + or r13,r13 + je NEAR $L$_after_reduction_877 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_877: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_7_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_878 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_878 + +$L$_16_blocks_overflow_878: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_878: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_879 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_879 +$L$_small_initial_partial_block_879: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_879: + + or r13,r13 + je NEAR $L$_after_reduction_879 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_879: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_8_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_880 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_880 + +$L$_16_blocks_overflow_880: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_880: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_881 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_881 +$L$_small_initial_partial_block_881: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_881: + + or r13,r13 + je NEAR $L$_after_reduction_881 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_881: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_9_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_882 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_882 + +$L$_16_blocks_overflow_882: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_882: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb xmm20,xmm20,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_883 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_883 +$L$_small_initial_partial_block_883: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_883: + + or r13,r13 + je NEAR $L$_after_reduction_883 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_883: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_10_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_884 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_884 + +$L$_16_blocks_overflow_884: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_884: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb ymm20,ymm20,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_885 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_885 +$L$_small_initial_partial_block_885: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_885: + + or r13,r13 + je NEAR $L$_after_reduction_885 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_885: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_11_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_886 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_886 + +$L$_16_blocks_overflow_886: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_886: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_887 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_887 +$L$_small_initial_partial_block_887: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_887: + + or r13,r13 + je NEAR $L$_after_reduction_887 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_887: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_12_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_888 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_888 + +$L$_16_blocks_overflow_888: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_888: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_889 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_889 +$L$_small_initial_partial_block_889: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_889: + + or r13,r13 + je NEAR $L$_after_reduction_889 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_889: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_13_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_890 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_890 + +$L$_16_blocks_overflow_890: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_890: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb xmm21,xmm21,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_891 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_891 +$L$_small_initial_partial_block_891: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_891: + + or r13,r13 + je NEAR $L$_after_reduction_891 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_891: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_14_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_892 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_892 + +$L$_16_blocks_overflow_892: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_892: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb ymm21,ymm21,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_893 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_893 +$L$_small_initial_partial_block_893: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_893: + + or r13,r13 + je NEAR $L$_after_reduction_893 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_893: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_15_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_894 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_894 + +$L$_16_blocks_overflow_894: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_894: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_895 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_895 +$L$_small_initial_partial_block_895: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_895: + + or r13,r13 + je NEAR $L$_after_reduction_895 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_895: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_16_865: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_896 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_896 + +$L$_16_blocks_overflow_896: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_896: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_897: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_897: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_897: + jmp NEAR $L$_last_blocks_done_865 +$L$_last_num_blocks_is_0_865: + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_865: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_821 +$L$_encrypt_16_blocks_821: + cmp r15b,240 + jae NEAR $L$_16_blocks_overflow_898 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_898 +$L$_16_blocks_overflow_898: + vpshufb zmm2,zmm2,zmm29 + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_898: + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rsp] + + + + + vshufi64x2 zmm2,zmm5,zmm5,255 + add r15b,16 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + + + + + + + + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + + vpclmulqdq zmm6,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + + vpternlogq zmm6,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + + + + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21,ZMMWORD[192+r11*1+r9] + + + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm26,zmm10,zmm15 + vpxorq zmm24,zmm6,zmm12 + vpxorq zmm25,zmm7,zmm13 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + + + + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + + + + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10],zmm5 + vpshufb zmm0,zmm17,zmm29 + vpshufb zmm3,zmm19,zmm29 + vpshufb zmm4,zmm20,zmm29 + vpshufb zmm5,zmm21,zmm29 + vmovdqa64 ZMMWORD[1280+rsp],zmm0 + vmovdqa64 ZMMWORD[1344+rsp],zmm3 + vmovdqa64 ZMMWORD[1408+rsp],zmm4 + vmovdqa64 ZMMWORD[1472+rsp],zmm5 + vmovdqa64 zmm13,ZMMWORD[1024+rsp] + vmovdqu64 zmm12,ZMMWORD[256+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1088+rsp] + vmovdqu64 zmm12,ZMMWORD[320+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1152+rsp] + vmovdqu64 zmm12,ZMMWORD[384+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1216+rsp] + vmovdqu64 zmm12,ZMMWORD[448+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + sub r13,256 + add r11,256 + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_899 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_899 + jb NEAR $L$_last_num_blocks_is_7_1_899 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_899 + jb NEAR $L$_last_num_blocks_is_11_9_899 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_899 + ja NEAR $L$_last_num_blocks_is_16_899 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_899 + jmp NEAR $L$_last_num_blocks_is_13_899 + +$L$_last_num_blocks_is_11_9_899: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_899 + ja NEAR $L$_last_num_blocks_is_11_899 + jmp NEAR $L$_last_num_blocks_is_9_899 + +$L$_last_num_blocks_is_7_1_899: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_899 + jb NEAR $L$_last_num_blocks_is_3_1_899 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_899 + je NEAR $L$_last_num_blocks_is_6_899 + jmp NEAR $L$_last_num_blocks_is_5_899 + +$L$_last_num_blocks_is_3_1_899: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_899 + je NEAR $L$_last_num_blocks_is_2_899 +$L$_last_num_blocks_is_1_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_900 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_900 + +$L$_16_blocks_overflow_900: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_900: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc xmm0,xmm0,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc xmm0,xmm0,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb xmm17,xmm17,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_901 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_901 +$L$_small_initial_partial_block_901: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_901 +$L$_small_initial_compute_done_901: +$L$_after_reduction_901: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_2_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_902 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_902 + +$L$_16_blocks_overflow_902: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_902: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc ymm0,ymm0,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc ymm0,ymm0,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb ymm17,ymm17,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_903 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_903 +$L$_small_initial_partial_block_903: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_903: + + or r13,r13 + je NEAR $L$_after_reduction_903 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_903: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_3_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_904 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_904 + +$L$_16_blocks_overflow_904: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_904: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_905 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_905 +$L$_small_initial_partial_block_905: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_905: + + or r13,r13 + je NEAR $L$_after_reduction_905 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_905: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_4_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_906 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_906 + +$L$_16_blocks_overflow_906: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_906: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_907 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_907 +$L$_small_initial_partial_block_907: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_907: + + or r13,r13 + je NEAR $L$_after_reduction_907 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_907: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_5_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_908 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_908 + +$L$_16_blocks_overflow_908: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_908: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb xmm19,xmm19,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_909 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_909 +$L$_small_initial_partial_block_909: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_909: + + or r13,r13 + je NEAR $L$_after_reduction_909 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_909: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_6_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_910 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_910 + +$L$_16_blocks_overflow_910: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_910: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb ymm19,ymm19,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_911 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_911 +$L$_small_initial_partial_block_911: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_911: + + or r13,r13 + je NEAR $L$_after_reduction_911 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_911: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_7_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_912 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_912 + +$L$_16_blocks_overflow_912: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_912: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_913 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_913 +$L$_small_initial_partial_block_913: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_913: + + or r13,r13 + je NEAR $L$_after_reduction_913 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_913: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_8_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_914 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_914 + +$L$_16_blocks_overflow_914: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_914: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_915 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_915 +$L$_small_initial_partial_block_915: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_915: + + or r13,r13 + je NEAR $L$_after_reduction_915 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_915: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_9_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_916 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_916 + +$L$_16_blocks_overflow_916: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_916: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb xmm20,xmm20,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_917 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_917 +$L$_small_initial_partial_block_917: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_917: + + or r13,r13 + je NEAR $L$_after_reduction_917 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_917: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_10_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_918 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_918 + +$L$_16_blocks_overflow_918: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_918: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb ymm20,ymm20,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_919 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_919 +$L$_small_initial_partial_block_919: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_919: + + or r13,r13 + je NEAR $L$_after_reduction_919 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_919: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_11_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_920 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_920 + +$L$_16_blocks_overflow_920: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_920: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_921 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_921 +$L$_small_initial_partial_block_921: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_921: + + or r13,r13 + je NEAR $L$_after_reduction_921 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_921: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_12_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_922 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_922 + +$L$_16_blocks_overflow_922: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_922: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_923 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_923 +$L$_small_initial_partial_block_923: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_923: + + or r13,r13 + je NEAR $L$_after_reduction_923 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_923: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_13_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_924 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_924 + +$L$_16_blocks_overflow_924: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_924: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb xmm21,xmm21,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_925 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_925 +$L$_small_initial_partial_block_925: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_925: + + or r13,r13 + je NEAR $L$_after_reduction_925 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_925: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_14_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_926 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_926 + +$L$_16_blocks_overflow_926: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_926: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb ymm21,ymm21,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_927 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_927 +$L$_small_initial_partial_block_927: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_927: + + or r13,r13 + je NEAR $L$_after_reduction_927 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_927: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_15_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_928 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_928 + +$L$_16_blocks_overflow_928: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_928: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_929 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_929 +$L$_small_initial_partial_block_929: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_929: + + or r13,r13 + je NEAR $L$_after_reduction_929 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_929: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_16_899: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_930 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_930 + +$L$_16_blocks_overflow_930: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_930: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vmovdqa64 zmm8,ZMMWORD[1280+rsp] + vmovdqu64 zmm1,ZMMWORD[512+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[576+rsp] + vmovdqa64 zmm22,ZMMWORD[1344+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[640+rsp] + vmovdqa64 zmm8,ZMMWORD[1408+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[704+rsp] + vmovdqa64 zmm22,ZMMWORD[1472+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpternlogq zmm14,zmm24,zmm12,0x96 + vpternlogq zmm7,zmm25,zmm13,0x96 + vpternlogq zmm10,zmm26,zmm15,0x96 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vpsrldq zmm15,zmm10,8 + vpslldq zmm10,zmm10,8 + + vmovdqa64 xmm16,XMMWORD[POLY2] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vpxorq zmm14,zmm14,zmm15 + vpxorq zmm7,zmm7,zmm10 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vextracti64x4 ymm12,zmm14,1 + vpxorq ymm14,ymm14,ymm12 + vextracti32x4 xmm12,ymm14,1 + vpxorq xmm14,xmm14,xmm12 + vextracti64x4 ymm13,zmm7,1 + vpxorq ymm7,ymm7,ymm13 + vextracti32x4 xmm13,ymm7,1 + vpxorq xmm7,xmm7,xmm13 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vpclmulqdq xmm13,xmm16,xmm7,0x01 + vpslldq xmm13,xmm13,8 + vpxorq xmm13,xmm7,xmm13 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vpclmulqdq xmm12,xmm16,xmm13,0x00 + vpsrldq xmm12,xmm12,4 + vpclmulqdq xmm15,xmm16,xmm13,0x10 + vpslldq xmm15,xmm15,4 + + vpternlogq xmm14,xmm15,xmm12,0x96 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_931: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vpxorq zmm17,zmm17,zmm14 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm31 + vpxorq zmm0,zmm0,zmm8 + vpxorq zmm3,zmm3,zmm22 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_931: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_931: + jmp NEAR $L$_last_blocks_done_899 +$L$_last_num_blocks_is_0_899: + vmovdqa64 zmm13,ZMMWORD[1280+rsp] + vmovdqu64 zmm12,ZMMWORD[512+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1344+rsp] + vmovdqu64 zmm12,ZMMWORD[576+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[1408+rsp] + vmovdqu64 zmm12,ZMMWORD[640+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[1472+rsp] + vmovdqu64 zmm12,ZMMWORD[704+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_899: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_821 + +$L$_message_below_32_blocks_821: + + + sub r13,256 + add r11,256 + mov r10d,r13d + test r14,r14 + jnz NEAR $L$_skip_hkeys_precomputation_932 + vmovdqu64 zmm3,ZMMWORD[640+rsp] + + + vshufi64x2 zmm3,zmm3,zmm3,0x00 + + vmovdqu64 zmm4,ZMMWORD[576+rsp] + vmovdqu64 zmm5,ZMMWORD[512+rsp] + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[448+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[384+rsp],zmm5 + + vpclmulqdq zmm6,zmm4,zmm3,0x11 + vpclmulqdq zmm7,zmm4,zmm3,0x00 + vpclmulqdq zmm10,zmm4,zmm3,0x01 + vpclmulqdq zmm4,zmm4,zmm3,0x10 + vpxorq zmm4,zmm4,zmm10 + + vpsrldq zmm10,zmm4,8 + vpslldq zmm4,zmm4,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm4,zmm4,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm4,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm4,zmm4,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm4,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm4,zmm10,zmm4,0x10 + vpslldq zmm4,zmm4,4 + + vpternlogq zmm4,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[320+rsp],zmm4 + + vpclmulqdq zmm6,zmm5,zmm3,0x11 + vpclmulqdq zmm7,zmm5,zmm3,0x00 + vpclmulqdq zmm10,zmm5,zmm3,0x01 + vpclmulqdq zmm5,zmm5,zmm3,0x10 + vpxorq zmm5,zmm5,zmm10 + + vpsrldq zmm10,zmm5,8 + vpslldq zmm5,zmm5,8 + vpxorq zmm6,zmm6,zmm10 + vpxorq zmm5,zmm5,zmm7 + + + + vmovdqu64 zmm10,ZMMWORD[POLY2] + + vpclmulqdq zmm7,zmm10,zmm5,0x01 + vpslldq zmm7,zmm7,8 + vpxorq zmm5,zmm5,zmm7 + + + + vpclmulqdq zmm7,zmm10,zmm5,0x00 + vpsrldq zmm7,zmm7,4 + vpclmulqdq zmm5,zmm10,zmm5,0x10 + vpslldq zmm5,zmm5,4 + + vpternlogq zmm5,zmm6,zmm7,0x96 + + vmovdqu64 ZMMWORD[256+rsp],zmm5 +$L$_skip_hkeys_precomputation_932: + mov r14,1 + and r10d,~15 + mov ebx,512 + sub ebx,r10d + mov r10d,r13d + add r10d,15 + shr r10d,4 + je NEAR $L$_last_num_blocks_is_0_933 + + cmp r10d,8 + je NEAR $L$_last_num_blocks_is_8_933 + jb NEAR $L$_last_num_blocks_is_7_1_933 + + + cmp r10d,12 + je NEAR $L$_last_num_blocks_is_12_933 + jb NEAR $L$_last_num_blocks_is_11_9_933 + + + cmp r10d,15 + je NEAR $L$_last_num_blocks_is_15_933 + ja NEAR $L$_last_num_blocks_is_16_933 + cmp r10d,14 + je NEAR $L$_last_num_blocks_is_14_933 + jmp NEAR $L$_last_num_blocks_is_13_933 + +$L$_last_num_blocks_is_11_9_933: + + cmp r10d,10 + je NEAR $L$_last_num_blocks_is_10_933 + ja NEAR $L$_last_num_blocks_is_11_933 + jmp NEAR $L$_last_num_blocks_is_9_933 + +$L$_last_num_blocks_is_7_1_933: + cmp r10d,4 + je NEAR $L$_last_num_blocks_is_4_933 + jb NEAR $L$_last_num_blocks_is_3_1_933 + + cmp r10d,6 + ja NEAR $L$_last_num_blocks_is_7_933 + je NEAR $L$_last_num_blocks_is_6_933 + jmp NEAR $L$_last_num_blocks_is_5_933 + +$L$_last_num_blocks_is_3_1_933: + + cmp r10d,2 + ja NEAR $L$_last_num_blocks_is_3_933 + je NEAR $L$_last_num_blocks_is_2_933 +$L$_last_num_blocks_is_1_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,255 + jae NEAR $L$_16_blocks_overflow_934 + vpaddd xmm0,xmm2,xmm28 + jmp NEAR $L$_16_blocks_ok_934 + +$L$_16_blocks_overflow_934: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb xmm0,xmm0,xmm29 +$L$_16_blocks_ok_934: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 xmm17{k1}{z},[r11*1+r9] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc xmm0,xmm0,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc xmm0,xmm0,xmm31 + vaesenclast xmm0,xmm0,xmm30 + vpxorq xmm0,xmm0,xmm17 + vextracti32x4 xmm11,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb xmm17,xmm17,xmm29 + vextracti32x4 xmm7,zmm17,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_935 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_935 +$L$_small_initial_partial_block_935: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm0,XMMWORD[POLY2] + + + vpclmulqdq xmm3,xmm0,xmm25,0x01 + vpslldq xmm3,xmm3,8 + vpxorq xmm3,xmm25,xmm3 + + + vpclmulqdq xmm4,xmm0,xmm3,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm14,xmm0,xmm3,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm4,xmm24,0x96 + + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm7 + + jmp NEAR $L$_after_reduction_935 +$L$_small_initial_compute_done_935: +$L$_after_reduction_935: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_2_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,254 + jae NEAR $L$_16_blocks_overflow_936 + vpaddd ymm0,ymm2,ymm28 + jmp NEAR $L$_16_blocks_ok_936 + +$L$_16_blocks_overflow_936: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb ymm0,ymm0,ymm29 +$L$_16_blocks_ok_936: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 ymm17{k1}{z},[r11*1+r9] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc ymm0,ymm0,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc ymm0,ymm0,ymm31 + vaesenclast ymm0,ymm0,ymm30 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm11,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb ymm17,ymm17,ymm29 + vextracti32x4 xmm7,zmm17,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_937 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_937 +$L$_small_initial_partial_block_937: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm17,xmm1,0x01 + vpclmulqdq xmm5,xmm17,xmm1,0x10 + vpclmulqdq xmm0,xmm17,xmm1,0x11 + vpclmulqdq xmm3,xmm17,xmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_937: + + or r13,r13 + je NEAR $L$_after_reduction_937 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_937: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_3_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,253 + jae NEAR $L$_16_blocks_overflow_938 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_938 + +$L$_16_blocks_overflow_938: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_938: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_939 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_939 +$L$_small_initial_partial_block_939: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm17,ymm1,0x01 + vpclmulqdq ymm5,ymm17,ymm1,0x10 + vpclmulqdq ymm0,ymm17,ymm1,0x11 + vpclmulqdq ymm3,ymm17,ymm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_939: + + or r13,r13 + je NEAR $L$_after_reduction_939 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_939: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_4_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + kmovq k1,[rax*8+r10] + cmp r15d,252 + jae NEAR $L$_16_blocks_overflow_940 + vpaddd zmm0,zmm2,zmm28 + jmp NEAR $L$_16_blocks_ok_940 + +$L$_16_blocks_overflow_940: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpshufb zmm0,zmm0,zmm29 +$L$_16_blocks_ok_940: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm0,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17{k1}{z},[r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vpxorq zmm0,zmm0,zmm17 + vextracti32x4 xmm11,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm17{k1}{z},zmm17 + vpshufb zmm17,zmm17,zmm29 + vextracti32x4 xmm7,zmm17,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_941 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_941 +$L$_small_initial_partial_block_941: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpxorq zmm4,zmm4,zmm26 + vpxorq zmm0,zmm0,zmm24 + vpxorq zmm3,zmm3,zmm25 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_941: + + or r13,r13 + je NEAR $L$_after_reduction_941 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_941: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_5_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,251 + jae NEAR $L$_16_blocks_overflow_942 + vpaddd zmm0,zmm2,zmm28 + vpaddd xmm3,xmm0,xmm27 + jmp NEAR $L$_16_blocks_ok_942 + +$L$_16_blocks_overflow_942: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 +$L$_16_blocks_ok_942: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 xmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc xmm3,xmm3,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc xmm3,xmm3,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast xmm3,xmm3,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq xmm3,xmm3,xmm19 + vextracti32x4 xmm11,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb xmm19,xmm19,xmm29 + vextracti32x4 xmm7,zmm19,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_943 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_943 +$L$_small_initial_partial_block_943: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_943: + + or r13,r13 + je NEAR $L$_after_reduction_943 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_943: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_6_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,250 + jae NEAR $L$_16_blocks_overflow_944 + vpaddd zmm0,zmm2,zmm28 + vpaddd ymm3,ymm0,ymm27 + jmp NEAR $L$_16_blocks_ok_944 + +$L$_16_blocks_overflow_944: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 +$L$_16_blocks_ok_944: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 ymm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc ymm3,ymm3,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc ymm3,ymm3,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast ymm3,ymm3,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm11,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb ymm19,ymm19,ymm29 + vextracti32x4 xmm7,zmm19,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_945 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_945 +$L$_small_initial_partial_block_945: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm19,xmm1,0x01 + vpclmulqdq xmm5,xmm19,xmm1,0x10 + vpclmulqdq xmm0,xmm19,xmm1,0x11 + vpclmulqdq xmm3,xmm19,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_945: + + or r13,r13 + je NEAR $L$_after_reduction_945 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_945: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_7_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,249 + jae NEAR $L$_16_blocks_overflow_946 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_946 + +$L$_16_blocks_overflow_946: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_946: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_947 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_947 +$L$_small_initial_partial_block_947: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm19,ymm1,0x01 + vpclmulqdq ymm5,ymm19,ymm1,0x10 + vpclmulqdq ymm0,ymm19,ymm1,0x11 + vpclmulqdq ymm3,ymm19,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_947: + + or r13,r13 + je NEAR $L$_after_reduction_947 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_947: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_8_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,64 + kmovq k1,[rax*8+r10] + cmp r15d,248 + jae NEAR $L$_16_blocks_overflow_948 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + jmp NEAR $L$_16_blocks_ok_948 + +$L$_16_blocks_overflow_948: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 +$L$_16_blocks_ok_948: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm3,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19{k1}{z},[64+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti32x4 xmm11,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm19{k1}{z},zmm19 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vextracti32x4 xmm7,zmm19,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_949 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_949 +$L$_small_initial_partial_block_949: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm17,zmm1,0x11 + vpclmulqdq zmm22,zmm17,zmm1,0x00 + vpclmulqdq zmm30,zmm17,zmm1,0x01 + vpclmulqdq zmm31,zmm17,zmm1,0x10 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm19,zmm1,0x01 + vpclmulqdq zmm5,zmm19,zmm1,0x10 + vpclmulqdq zmm0,zmm19,zmm1,0x11 + vpclmulqdq zmm3,zmm19,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_949: + + or r13,r13 + je NEAR $L$_after_reduction_949 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_949: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_9_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,247 + jae NEAR $L$_16_blocks_overflow_950 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd xmm4,xmm3,xmm27 + jmp NEAR $L$_16_blocks_ok_950 + +$L$_16_blocks_overflow_950: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 +$L$_16_blocks_ok_950: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc xmm4,xmm4,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc xmm4,xmm4,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast xmm4,xmm4,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq xmm4,xmm4,xmm20 + vextracti32x4 xmm11,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb xmm20,xmm20,xmm29 + vextracti32x4 xmm7,zmm20,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_951 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_951 +$L$_small_initial_partial_block_951: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_951: + + or r13,r13 + je NEAR $L$_after_reduction_951 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_951: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_10_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,246 + jae NEAR $L$_16_blocks_overflow_952 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd ymm4,ymm3,ymm27 + jmp NEAR $L$_16_blocks_ok_952 + +$L$_16_blocks_overflow_952: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 +$L$_16_blocks_ok_952: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc ymm4,ymm4,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc ymm4,ymm4,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast ymm4,ymm4,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq ymm4,ymm4,ymm20 + vextracti32x4 xmm11,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb ymm20,ymm20,ymm29 + vextracti32x4 xmm7,zmm20,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_953 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_953 +$L$_small_initial_partial_block_953: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm20,xmm1,0x01 + vpclmulqdq xmm5,xmm20,xmm1,0x10 + vpclmulqdq xmm0,xmm20,xmm1,0x11 + vpclmulqdq xmm3,xmm20,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_953: + + or r13,r13 + je NEAR $L$_after_reduction_953 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_953: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_11_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,245 + jae NEAR $L$_16_blocks_overflow_954 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_954 + +$L$_16_blocks_overflow_954: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_954: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_955 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_955 +$L$_small_initial_partial_block_955: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm20,ymm1,0x01 + vpclmulqdq ymm5,ymm20,ymm1,0x10 + vpclmulqdq ymm0,ymm20,ymm1,0x11 + vpclmulqdq ymm3,ymm20,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_955: + + or r13,r13 + je NEAR $L$_after_reduction_955 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_955: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_12_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,128 + kmovq k1,[rax*8+r10] + cmp r15d,244 + jae NEAR $L$_16_blocks_overflow_956 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + jmp NEAR $L$_16_blocks_ok_956 + +$L$_16_blocks_overflow_956: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 +$L$_16_blocks_ok_956: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm4,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20{k1}{z},[128+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vextracti32x4 xmm11,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm20{k1}{z},zmm20 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vextracti32x4 xmm7,zmm20,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_957 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_957 +$L$_small_initial_partial_block_957: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vpxorq zmm8,zmm0,zmm8 + vpxorq zmm22,zmm3,zmm22 + vpxorq zmm30,zmm4,zmm30 + vpxorq zmm31,zmm5,zmm31 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm20,zmm1,0x01 + vpclmulqdq zmm5,zmm20,zmm1,0x10 + vpclmulqdq zmm0,zmm20,zmm1,0x11 + vpclmulqdq zmm3,zmm20,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_957: + + or r13,r13 + je NEAR $L$_after_reduction_957 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_957: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_13_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,243 + jae NEAR $L$_16_blocks_overflow_958 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd xmm5,xmm4,xmm27 + jmp NEAR $L$_16_blocks_ok_958 + +$L$_16_blocks_overflow_958: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 +$L$_16_blocks_ok_958: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,0 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc xmm5,xmm5,xmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc xmm5,xmm5,xmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast xmm5,xmm5,xmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq xmm5,xmm5,xmm21 + vextracti32x4 xmm11,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb xmm21,xmm21,xmm29 + vextracti32x4 xmm7,zmm21,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_959 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_959 +$L$_small_initial_partial_block_959: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[224+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[288+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + + vpxorq zmm30,zmm30,zmm26 + vpxorq zmm8,zmm8,zmm24 + vpxorq zmm22,zmm22,zmm25 + + vpxorq zmm30,zmm30,zmm31 + vpsrldq zmm4,zmm30,8 + vpslldq zmm5,zmm30,8 + vpxorq zmm0,zmm8,zmm4 + vpxorq zmm3,zmm22,zmm5 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_959: + + or r13,r13 + je NEAR $L$_after_reduction_959 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_959: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_14_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,242 + jae NEAR $L$_16_blocks_overflow_960 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd ymm5,ymm4,ymm27 + jmp NEAR $L$_16_blocks_ok_960 + +$L$_16_blocks_overflow_960: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 +$L$_16_blocks_ok_960: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,1 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc ymm5,ymm5,ymm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc ymm5,ymm5,ymm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast ymm5,ymm5,ymm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq ymm5,ymm5,ymm21 + vextracti32x4 xmm11,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb ymm21,ymm21,ymm29 + vextracti32x4 xmm7,zmm21,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_961 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_961 +$L$_small_initial_partial_block_961: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[208+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[272+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 xmm1,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm21,xmm1,0x01 + vpclmulqdq xmm5,xmm21,xmm1,0x10 + vpclmulqdq xmm0,xmm21,xmm1,0x11 + vpclmulqdq xmm3,xmm21,xmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_961: + + or r13,r13 + je NEAR $L$_after_reduction_961 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_961: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_15_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,241 + jae NEAR $L$_16_blocks_overflow_962 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_962 + +$L$_16_blocks_overflow_962: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_962: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,2 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_963 + + + + + + sub r13,16 + mov QWORD[r8],0 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_963 +$L$_small_initial_partial_block_963: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[192+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[256+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm21,ymm1,0x01 + vpclmulqdq ymm5,ymm21,ymm1,0x10 + vpclmulqdq ymm0,ymm21,ymm1,0x11 + vpclmulqdq ymm3,ymm21,ymm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_963: + + or r13,r13 + je NEAR $L$_after_reduction_963 + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_963: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_16_933: + lea r10,[byte64_len_to_mask_table] + mov rax,r13 + sub rax,192 + kmovq k1,[rax*8+r10] + cmp r15d,240 + jae NEAR $L$_16_blocks_overflow_964 + vpaddd zmm0,zmm2,zmm28 + vpaddd zmm3,zmm0,zmm27 + vpaddd zmm4,zmm3,zmm27 + vpaddd zmm5,zmm4,zmm27 + jmp NEAR $L$_16_blocks_ok_964 + +$L$_16_blocks_overflow_964: + vpshufb zmm2,zmm2,zmm29 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vmovdqa64 zmm5,ZMMWORD[ddq_add_4444] + vpaddd zmm3,zmm0,zmm5 + vpaddd zmm4,zmm3,zmm5 + vpaddd zmm5,zmm4,zmm5 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 +$L$_16_blocks_ok_964: + + + + + vbroadcastf64x2 zmm30,ZMMWORD[rcx] + vpxorq zmm8,zmm14,ZMMWORD[768+rsp] + vmovdqu64 zmm1,ZMMWORD[rbx*1+rsp] + vextracti32x4 xmm2,zmm5,3 + vshufi64x2 zmm2,zmm2,zmm2,0 + + + vbroadcastf64x2 zmm31,ZMMWORD[16+rcx] + vmovdqu64 zmm18,ZMMWORD[64+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[832+rsp] + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm30 + vpxorq zmm4,zmm4,zmm30 + vpxorq zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[32+rcx] + + + vpclmulqdq zmm14,zmm8,zmm1,0x11 + vpclmulqdq zmm7,zmm8,zmm1,0x00 + vpclmulqdq zmm10,zmm8,zmm1,0x01 + vpclmulqdq zmm11,zmm8,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[128+rbx*1+rsp] + vmovdqa64 zmm8,ZMMWORD[896+rsp] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[48+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vmovdqu64 zmm18,ZMMWORD[192+rbx*1+rsp] + vmovdqa64 zmm22,ZMMWORD[960+rsp] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[64+rcx] + + + vpclmulqdq zmm20,zmm8,zmm1,0x10 + vpclmulqdq zmm21,zmm8,zmm1,0x01 + vpclmulqdq zmm17,zmm8,zmm1,0x11 + vpclmulqdq zmm19,zmm8,zmm1,0x00 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[80+rcx] + + + vpternlogq zmm14,zmm12,zmm17,0x96 + vpternlogq zmm7,zmm13,zmm19,0x96 + vpternlogq zmm11,zmm16,zmm21,0x96 + vpternlogq zmm10,zmm15,zmm20,0x96 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[96+rcx] + vmovdqu8 zmm17,ZMMWORD[r11*1+r9] + vmovdqu8 zmm19,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm20,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm21{k1}{z},[192+r11*1+r9] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[112+rcx] + + + vpclmulqdq zmm15,zmm22,zmm18,0x10 + vpclmulqdq zmm16,zmm22,zmm18,0x01 + vpclmulqdq zmm12,zmm22,zmm18,0x11 + vpclmulqdq zmm13,zmm22,zmm18,0x00 + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[128+rcx] + vpternlogq zmm10,zmm11,zmm16,0x96 + vpxorq zmm24,zmm14,zmm12 + vpxorq zmm25,zmm7,zmm13 + vpxorq zmm26,zmm10,zmm15 + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vbroadcastf64x2 zmm31,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm30 + vaesenc zmm3,zmm3,zmm30 + vaesenc zmm4,zmm4,zmm30 + vaesenc zmm5,zmm5,zmm30 + vbroadcastf64x2 zmm30,ZMMWORD[224+rcx] + vaesenc zmm0,zmm0,zmm31 + vaesenc zmm3,zmm3,zmm31 + vaesenc zmm4,zmm4,zmm31 + vaesenc zmm5,zmm5,zmm31 + vaesenclast zmm0,zmm0,zmm30 + vaesenclast zmm3,zmm3,zmm30 + vaesenclast zmm4,zmm4,zmm30 + vaesenclast zmm5,zmm5,zmm30 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vpxorq zmm4,zmm4,zmm20 + vpxorq zmm5,zmm5,zmm21 + vextracti32x4 xmm11,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm21{k1}{z},zmm21 + vpshufb zmm17,zmm17,zmm29 + vpshufb zmm19,zmm19,zmm29 + vpshufb zmm20,zmm20,zmm29 + vpshufb zmm21,zmm21,zmm29 + vextracti32x4 xmm7,zmm21,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_965: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm11 + vmovdqu64 zmm1,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm17,zmm1,0x11 + vpclmulqdq zmm3,zmm17,zmm1,0x00 + vpclmulqdq zmm4,zmm17,zmm1,0x01 + vpclmulqdq zmm5,zmm17,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[176+rdx] + vpclmulqdq zmm8,zmm19,zmm1,0x11 + vpclmulqdq zmm22,zmm19,zmm1,0x00 + vpclmulqdq zmm30,zmm19,zmm1,0x01 + vpclmulqdq zmm31,zmm19,zmm1,0x10 + vmovdqu64 zmm1,ZMMWORD[240+rdx] + vpclmulqdq zmm17,zmm20,zmm1,0x11 + vpclmulqdq zmm19,zmm20,zmm1,0x00 + vpternlogq zmm8,zmm17,zmm0,0x96 + vpternlogq zmm22,zmm19,zmm3,0x96 + vpclmulqdq zmm17,zmm20,zmm1,0x01 + vpclmulqdq zmm19,zmm20,zmm1,0x10 + vpternlogq zmm30,zmm17,zmm4,0x96 + vpternlogq zmm31,zmm19,zmm5,0x96 + vmovdqu64 ymm1,YMMWORD[304+rdx] + vinserti64x2 zmm1,zmm1,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm21,zmm1,0x01 + vpclmulqdq zmm5,zmm21,zmm1,0x10 + vpclmulqdq zmm0,zmm21,zmm1,0x11 + vpclmulqdq zmm3,zmm21,zmm1,0x00 + + vpxorq zmm4,zmm4,zmm30 + vpternlogq zmm5,zmm26,zmm31,0x96 + vpternlogq zmm0,zmm24,zmm8,0x96 + vpternlogq zmm3,zmm25,zmm22,0x96 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm30,zmm4,8 + vpslldq zmm31,zmm4,8 + vpxorq zmm0,zmm0,zmm30 + vpxorq zmm3,zmm3,zmm31 + vextracti64x4 ymm30,zmm0,1 + vpxorq ymm0,ymm0,ymm30 + vextracti32x4 xmm30,ymm0,1 + vpxorq xmm0,xmm0,xmm30 + vextracti64x4 ymm31,zmm3,1 + vpxorq ymm3,ymm3,ymm31 + vextracti32x4 xmm31,ymm3,1 + vpxorq xmm3,xmm3,xmm31 + vmovdqa64 xmm1,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm1,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm1,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm1,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_965: + vpxorq xmm14,xmm14,xmm7 +$L$_after_reduction_965: + jmp NEAR $L$_last_blocks_done_933 +$L$_last_num_blocks_is_0_933: + vmovdqa64 zmm13,ZMMWORD[768+rsp] + vpxorq zmm13,zmm13,zmm14 + vmovdqu64 zmm12,ZMMWORD[rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[832+rsp] + vmovdqu64 zmm12,ZMMWORD[64+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + vpxorq zmm26,zmm4,zmm10 + vpxorq zmm24,zmm0,zmm6 + vpxorq zmm25,zmm3,zmm7 + vpternlogq zmm26,zmm5,zmm11,0x96 + vmovdqa64 zmm13,ZMMWORD[896+rsp] + vmovdqu64 zmm12,ZMMWORD[128+rbx*1+rsp] + vpclmulqdq zmm0,zmm13,zmm12,0x11 + vpclmulqdq zmm3,zmm13,zmm12,0x00 + vpclmulqdq zmm4,zmm13,zmm12,0x01 + vpclmulqdq zmm5,zmm13,zmm12,0x10 + vmovdqa64 zmm13,ZMMWORD[960+rsp] + vmovdqu64 zmm12,ZMMWORD[192+rbx*1+rsp] + vpclmulqdq zmm6,zmm13,zmm12,0x11 + vpclmulqdq zmm7,zmm13,zmm12,0x00 + vpclmulqdq zmm10,zmm13,zmm12,0x01 + vpclmulqdq zmm11,zmm13,zmm12,0x10 + + vpternlogq zmm26,zmm4,zmm10,0x96 + vpternlogq zmm24,zmm0,zmm6,0x96 + vpternlogq zmm25,zmm3,zmm7,0x96 + vpternlogq zmm26,zmm5,zmm11,0x96 + + vpsrldq zmm0,zmm26,8 + vpslldq zmm3,zmm26,8 + vpxorq zmm24,zmm24,zmm0 + vpxorq zmm25,zmm25,zmm3 + vextracti64x4 ymm0,zmm24,1 + vpxorq ymm24,ymm24,ymm0 + vextracti32x4 xmm0,ymm24,1 + vpxorq xmm24,xmm24,xmm0 + vextracti64x4 ymm3,zmm25,1 + vpxorq ymm25,ymm25,ymm3 + vextracti32x4 xmm3,ymm25,1 + vpxorq xmm25,xmm25,xmm3 + vmovdqa64 xmm4,XMMWORD[POLY2] + + + vpclmulqdq xmm0,xmm4,xmm25,0x01 + vpslldq xmm0,xmm0,8 + vpxorq xmm0,xmm25,xmm0 + + + vpclmulqdq xmm3,xmm4,xmm0,0x00 + vpsrldq xmm3,xmm3,4 + vpclmulqdq xmm14,xmm4,xmm0,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm3,xmm24,0x96 + +$L$_last_blocks_done_933: + vpshufb xmm2,xmm2,xmm29 + jmp NEAR $L$_ghash_done_821 + +$L$_message_below_equal_16_blocks_821: + + + mov r12d,r13d + add r12d,15 + shr r12d,4 + cmp r12,8 + je NEAR $L$_small_initial_num_blocks_is_8_966 + jl NEAR $L$_small_initial_num_blocks_is_7_1_966 + + + cmp r12,12 + je NEAR $L$_small_initial_num_blocks_is_12_966 + jl NEAR $L$_small_initial_num_blocks_is_11_9_966 + + + cmp r12,16 + je NEAR $L$_small_initial_num_blocks_is_16_966 + cmp r12,15 + je NEAR $L$_small_initial_num_blocks_is_15_966 + cmp r12,14 + je NEAR $L$_small_initial_num_blocks_is_14_966 + jmp NEAR $L$_small_initial_num_blocks_is_13_966 + +$L$_small_initial_num_blocks_is_11_9_966: + + cmp r12,11 + je NEAR $L$_small_initial_num_blocks_is_11_966 + cmp r12,10 + je NEAR $L$_small_initial_num_blocks_is_10_966 + jmp NEAR $L$_small_initial_num_blocks_is_9_966 + +$L$_small_initial_num_blocks_is_7_1_966: + cmp r12,4 + je NEAR $L$_small_initial_num_blocks_is_4_966 + jl NEAR $L$_small_initial_num_blocks_is_3_1_966 + + cmp r12,7 + je NEAR $L$_small_initial_num_blocks_is_7_966 + cmp r12,6 + je NEAR $L$_small_initial_num_blocks_is_6_966 + jmp NEAR $L$_small_initial_num_blocks_is_5_966 + +$L$_small_initial_num_blocks_is_3_1_966: + + cmp r12,3 + je NEAR $L$_small_initial_num_blocks_is_3_966 + cmp r12,2 + je NEAR $L$_small_initial_num_blocks_is_2_966 + + + + + +$L$_small_initial_num_blocks_is_1_966: + vmovdqa64 xmm29,XMMWORD[SHUF_MASK] + vpaddd xmm0,xmm2,XMMWORD[ONE] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,0 + vpshufb xmm0,xmm0,xmm29 + vmovdqu8 xmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc xmm0,xmm0,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast xmm0,xmm0,xmm15 + vpxorq xmm0,xmm0,xmm6 + vextracti32x4 xmm12,zmm0,0 + mov r10,QWORD[120+rbp] + vmovdqu8 XMMWORD[r11*1+r10]{k1},xmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb xmm6,xmm6,xmm29 + vextracti32x4 xmm13,zmm6,0 + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_967 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm6,xmm20,0x01 + vpclmulqdq xmm5,xmm6,xmm20,0x10 + vpclmulqdq xmm0,xmm6,xmm20,0x11 + vpclmulqdq xmm3,xmm6,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_967 +$L$_small_initial_partial_block_967: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + + + + + + + + + + + + vpxorq xmm14,xmm14,xmm13 + + jmp NEAR $L$_after_reduction_967 +$L$_small_initial_compute_done_967: +$L$_after_reduction_967: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_2_966: + vmovdqa64 ymm29,YMMWORD[SHUF_MASK] + vshufi64x2 ymm0,ymm2,ymm2,0 + vpaddd ymm0,ymm0,YMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,1 + vpshufb ymm0,ymm0,ymm29 + vmovdqu8 ymm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc ymm0,ymm0,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast ymm0,ymm0,ymm15 + vpxorq ymm0,ymm0,ymm6 + vextracti32x4 xmm12,zmm0,1 + mov r10,QWORD[120+rbp] + vmovdqu8 YMMWORD[r11*1+r10]{k1},ymm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb ymm6,ymm6,ymm29 + vextracti32x4 xmm13,zmm6,1 + sub r13,16 * (2 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_968 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm6,ymm20,0x01 + vpclmulqdq ymm5,ymm6,ymm20,0x10 + vpclmulqdq ymm0,ymm6,ymm20,0x11 + vpclmulqdq ymm3,ymm6,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_968 +$L$_small_initial_partial_block_968: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm6,xmm20,0x01 + vpclmulqdq xmm5,xmm6,xmm20,0x10 + vpclmulqdq xmm0,xmm6,xmm20,0x11 + vpclmulqdq xmm3,xmm6,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_968: + + or r13,r13 + je NEAR $L$_after_reduction_968 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_968: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_3_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,2 + vpshufb zmm0,zmm0,zmm29 + vmovdqu8 zmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vpxorq zmm0,zmm0,zmm6 + vextracti32x4 xmm12,zmm0,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm6,zmm6,zmm29 + vextracti32x4 xmm13,zmm6,2 + sub r13,16 * (3 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_969 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_969 +$L$_small_initial_partial_block_969: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm6,ymm20,0x01 + vpclmulqdq ymm5,ymm6,ymm20,0x10 + vpclmulqdq ymm0,ymm6,ymm20,0x11 + vpclmulqdq ymm3,ymm6,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_969: + + or r13,r13 + je NEAR $L$_after_reduction_969 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_969: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_4_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm0,3 + vpshufb zmm0,zmm0,zmm29 + vmovdqu8 zmm6{k1}{z},[r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vpxorq zmm0,zmm0,zmm6 + vextracti32x4 xmm12,zmm0,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10]{k1},zmm0 + vmovdqu8 zmm0{k1}{z},zmm0 + vpshufb zmm6,zmm6,zmm29 + vextracti32x4 xmm13,zmm6,3 + sub r13,16 * (4 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_970 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_970 +$L$_small_initial_partial_block_970: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_970: + + or r13,r13 + je NEAR $L$_after_reduction_970 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_970: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_5_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb xmm3,xmm3,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 xmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc xmm3,xmm3,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast xmm3,xmm3,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq xmm3,xmm3,xmm7 + vextracti32x4 xmm12,zmm3,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 XMMWORD[64+r11*1+r10]{k1},xmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm6,zmm29 + vpshufb xmm7,xmm7,xmm29 + vextracti32x4 xmm13,zmm7,0 + sub r13,16 * (5 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_971 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm7,xmm20,0x01 + vpclmulqdq xmm5,xmm7,xmm20,0x10 + vpclmulqdq xmm0,xmm7,xmm20,0x11 + vpclmulqdq xmm3,xmm7,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_971 +$L$_small_initial_partial_block_971: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_971: + + or r13,r13 + je NEAR $L$_after_reduction_971 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_971: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_6_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb ymm3,ymm3,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 ymm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc ymm3,ymm3,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast ymm3,ymm3,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq ymm3,ymm3,ymm7 + vextracti32x4 xmm12,zmm3,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 YMMWORD[64+r11*1+r10]{k1},ymm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm6,zmm29 + vpshufb ymm7,ymm7,ymm29 + vextracti32x4 xmm13,zmm7,1 + sub r13,16 * (6 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_972 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm7,ymm20,0x01 + vpclmulqdq ymm5,ymm7,ymm20,0x10 + vpclmulqdq ymm0,ymm7,ymm20,0x11 + vpclmulqdq ymm3,ymm7,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_972 +$L$_small_initial_partial_block_972: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm7,xmm20,0x01 + vpclmulqdq xmm5,xmm7,xmm20,0x10 + vpclmulqdq xmm0,xmm7,xmm20,0x11 + vpclmulqdq xmm3,xmm7,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_972: + + or r13,r13 + je NEAR $L$_after_reduction_972 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_972: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_7_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vextracti32x4 xmm12,zmm3,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vextracti32x4 xmm13,zmm7,2 + sub r13,16 * (7 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_973 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm7,zmm20,0x01 + vpclmulqdq zmm5,zmm7,zmm20,0x10 + vpclmulqdq zmm0,zmm7,zmm20,0x11 + vpclmulqdq zmm3,zmm7,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_973 +$L$_small_initial_partial_block_973: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm7,ymm20,0x01 + vpclmulqdq ymm5,ymm7,ymm20,0x10 + vpclmulqdq ymm0,ymm7,ymm20,0x11 + vpclmulqdq ymm3,ymm7,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_973: + + or r13,r13 + je NEAR $L$_after_reduction_973 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_973: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_8_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,64 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm3,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7{k1}{z},[64+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vextracti32x4 xmm12,zmm3,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10]{k1},zmm3 + vmovdqu8 zmm3{k1}{z},zmm3 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vextracti32x4 xmm13,zmm7,3 + sub r13,16 * (8 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_974 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_974 +$L$_small_initial_partial_block_974: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm6,zmm20,0x11 + vpclmulqdq zmm16,zmm6,zmm20,0x00 + vpclmulqdq zmm17,zmm6,zmm20,0x01 + vpclmulqdq zmm19,zmm6,zmm20,0x10 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm7,zmm20,0x01 + vpclmulqdq zmm5,zmm7,zmm20,0x10 + vpclmulqdq zmm0,zmm7,zmm20,0x11 + vpclmulqdq zmm3,zmm7,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_974: + + or r13,r13 + je NEAR $L$_after_reduction_974 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_974: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_9_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb xmm4,xmm4,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 xmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc xmm4,xmm4,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast xmm4,xmm4,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq xmm4,xmm4,xmm10 + vextracti32x4 xmm12,zmm4,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 XMMWORD[128+r11*1+r10]{k1},xmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb xmm10,xmm10,xmm29 + vextracti32x4 xmm13,zmm10,0 + sub r13,16 * (9 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_975 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm10,xmm20,0x01 + vpclmulqdq xmm5,xmm10,xmm20,0x10 + vpclmulqdq xmm0,xmm10,xmm20,0x11 + vpclmulqdq xmm3,xmm10,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_975 +$L$_small_initial_partial_block_975: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_975: + + or r13,r13 + je NEAR $L$_after_reduction_975 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_975: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_10_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb ymm4,ymm4,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 ymm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc ymm4,ymm4,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast ymm4,ymm4,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq ymm4,ymm4,ymm10 + vextracti32x4 xmm12,zmm4,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 YMMWORD[128+r11*1+r10]{k1},ymm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb ymm10,ymm10,ymm29 + vextracti32x4 xmm13,zmm10,1 + sub r13,16 * (10 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_976 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm10,ymm20,0x01 + vpclmulqdq ymm5,ymm10,ymm20,0x10 + vpclmulqdq ymm0,ymm10,ymm20,0x11 + vpclmulqdq ymm3,ymm10,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_976 +$L$_small_initial_partial_block_976: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm10,xmm20,0x01 + vpclmulqdq xmm5,xmm10,xmm20,0x10 + vpclmulqdq xmm0,xmm10,xmm20,0x11 + vpclmulqdq xmm3,xmm10,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_976: + + or r13,r13 + je NEAR $L$_after_reduction_976 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_976: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_11_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vextracti32x4 xmm12,zmm4,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vextracti32x4 xmm13,zmm10,2 + sub r13,16 * (11 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_977 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm10,zmm20,0x01 + vpclmulqdq zmm5,zmm10,zmm20,0x10 + vpclmulqdq zmm0,zmm10,zmm20,0x11 + vpclmulqdq zmm3,zmm10,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_977 +$L$_small_initial_partial_block_977: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm10,ymm20,0x01 + vpclmulqdq ymm5,ymm10,ymm20,0x10 + vpclmulqdq ymm0,ymm10,ymm20,0x11 + vpclmulqdq ymm3,ymm10,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_977: + + or r13,r13 + je NEAR $L$_after_reduction_977 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_977: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_12_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,128 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm4,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10{k1}{z},[128+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vextracti32x4 xmm12,zmm4,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10]{k1},zmm4 + vmovdqu8 zmm4{k1}{z},zmm4 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vextracti32x4 xmm13,zmm10,3 + sub r13,16 * (12 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_978 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_978 +$L$_small_initial_partial_block_978: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vpxorq zmm15,zmm0,zmm15 + vpxorq zmm16,zmm3,zmm16 + vpxorq zmm17,zmm4,zmm17 + vpxorq zmm19,zmm5,zmm19 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm10,zmm20,0x01 + vpclmulqdq zmm5,zmm10,zmm20,0x10 + vpclmulqdq zmm0,zmm10,zmm20,0x11 + vpclmulqdq zmm3,zmm10,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_978: + + or r13,r13 + je NEAR $L$_after_reduction_978 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_978: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_13_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,0 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb xmm5,xmm5,xmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 xmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc xmm5,xmm5,xmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast xmm5,xmm5,xmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq xmm5,xmm5,xmm11 + vextracti32x4 xmm12,zmm5,0 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 XMMWORD[192+r11*1+r10]{k1},xmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb xmm11,xmm11,xmm29 + vextracti32x4 xmm13,zmm11,0 + sub r13,16 * (13 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_979 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm11,xmm20,0x01 + vpclmulqdq xmm5,xmm11,xmm20,0x10 + vpclmulqdq xmm0,xmm11,xmm20,0x11 + vpclmulqdq xmm3,xmm11,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_979 +$L$_small_initial_partial_block_979: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[160+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[224+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[288+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + + vpxorq zmm17,zmm17,zmm19 + vpsrldq zmm4,zmm17,8 + vpslldq zmm5,zmm17,8 + vpxorq zmm0,zmm15,zmm4 + vpxorq zmm3,zmm16,zmm5 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_979: + + or r13,r13 + je NEAR $L$_after_reduction_979 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_979: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_14_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,1 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb ymm5,ymm5,ymm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 ymm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc ymm5,ymm5,ymm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast ymm5,ymm5,ymm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq ymm5,ymm5,ymm11 + vextracti32x4 xmm12,zmm5,1 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 YMMWORD[192+r11*1+r10]{k1},ymm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb ymm11,ymm11,ymm29 + vextracti32x4 xmm13,zmm11,1 + sub r13,16 * (14 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_980 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm11,ymm20,0x01 + vpclmulqdq ymm5,ymm11,ymm20,0x10 + vpclmulqdq ymm0,ymm11,ymm20,0x11 + vpclmulqdq ymm3,ymm11,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_980 +$L$_small_initial_partial_block_980: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[144+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[208+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[272+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 xmm20,XMMWORD[336+rdx] + vpclmulqdq xmm4,xmm11,xmm20,0x01 + vpclmulqdq xmm5,xmm11,xmm20,0x10 + vpclmulqdq xmm0,xmm11,xmm20,0x11 + vpclmulqdq xmm3,xmm11,xmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_980: + + or r13,r13 + je NEAR $L$_after_reduction_980 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_980: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_15_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,2 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast zmm5,zmm5,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq zmm5,zmm5,zmm11 + vextracti32x4 xmm12,zmm5,2 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vextracti32x4 xmm13,zmm11,2 + sub r13,16 * (15 - 1) + + + cmp r13,16 + jl NEAR $L$_small_initial_partial_block_981 + + + + + + sub r13,16 + mov QWORD[r8],0 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm11,zmm20,0x01 + vpclmulqdq zmm5,zmm11,zmm20,0x10 + vpclmulqdq zmm0,zmm11,zmm20,0x11 + vpclmulqdq zmm3,zmm11,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + + jmp NEAR $L$_small_initial_compute_done_981 +$L$_small_initial_partial_block_981: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[128+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[192+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[256+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[320+rdx] + vpclmulqdq ymm4,ymm11,ymm20,0x01 + vpclmulqdq ymm5,ymm11,ymm20,0x10 + vpclmulqdq ymm0,ymm11,ymm20,0x11 + vpclmulqdq ymm3,ymm11,ymm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_981: + + or r13,r13 + je NEAR $L$_after_reduction_981 + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_981: + jmp NEAR $L$_small_initial_blocks_encrypted_966 +$L$_small_initial_num_blocks_is_16_966: + vmovdqa64 zmm29,ZMMWORD[SHUF_MASK] + vshufi64x2 zmm2,zmm2,zmm2,0 + vpaddd zmm0,zmm2,ZMMWORD[ddq_add_1234] + vpaddd zmm3,zmm2,ZMMWORD[ddq_add_5678] + vpaddd zmm4,zmm0,ZMMWORD[ddq_add_8888] + vpaddd zmm5,zmm3,ZMMWORD[ddq_add_8888] + lea r10,[byte64_len_to_mask_table] + mov r15,r13 + sub r15,192 + kmovq k1,[r15*8+r10] + vextracti32x4 xmm2,zmm5,3 + vpshufb zmm0,zmm0,zmm29 + vpshufb zmm3,zmm3,zmm29 + vpshufb zmm4,zmm4,zmm29 + vpshufb zmm5,zmm5,zmm29 + vmovdqu8 zmm6,ZMMWORD[r11*1+r9] + vmovdqu8 zmm7,ZMMWORD[64+r11*1+r9] + vmovdqu8 zmm10,ZMMWORD[128+r11*1+r9] + vmovdqu8 zmm11{k1}{z},[192+r11*1+r9] + vbroadcastf64x2 zmm15,ZMMWORD[rcx] + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm15 + vpxorq zmm4,zmm4,zmm15 + vpxorq zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[16+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[32+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[48+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[64+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[80+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[96+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[112+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[128+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[144+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[160+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[176+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[192+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[208+rcx] + vaesenc zmm0,zmm0,zmm15 + vaesenc zmm3,zmm3,zmm15 + vaesenc zmm4,zmm4,zmm15 + vaesenc zmm5,zmm5,zmm15 + vbroadcastf64x2 zmm15,ZMMWORD[224+rcx] + vaesenclast zmm0,zmm0,zmm15 + vaesenclast zmm3,zmm3,zmm15 + vaesenclast zmm4,zmm4,zmm15 + vaesenclast zmm5,zmm5,zmm15 + vpxorq zmm0,zmm0,zmm6 + vpxorq zmm3,zmm3,zmm7 + vpxorq zmm4,zmm4,zmm10 + vpxorq zmm5,zmm5,zmm11 + vextracti32x4 xmm12,zmm5,3 + mov r10,QWORD[120+rbp] + vmovdqu8 ZMMWORD[r11*1+r10],zmm0 + vmovdqu8 ZMMWORD[64+r11*1+r10],zmm3 + vmovdqu8 ZMMWORD[128+r11*1+r10],zmm4 + vmovdqu8 ZMMWORD[192+r11*1+r10]{k1},zmm5 + vmovdqu8 zmm5{k1}{z},zmm5 + vpshufb zmm6,zmm6,zmm29 + vpshufb zmm7,zmm7,zmm29 + vpshufb zmm10,zmm10,zmm29 + vpshufb zmm11,zmm11,zmm29 + vextracti32x4 xmm13,zmm11,3 + sub r13,16 * (16 - 1) +$L$_small_initial_partial_block_982: + + + + + + + + + mov QWORD[r8],r13 + vmovdqu64 XMMWORD[16+rdx],xmm12 + vpxorq zmm6,zmm6,zmm14 + vmovdqu64 zmm20,ZMMWORD[112+rdx] + vpclmulqdq zmm0,zmm6,zmm20,0x11 + vpclmulqdq zmm3,zmm6,zmm20,0x00 + vpclmulqdq zmm4,zmm6,zmm20,0x01 + vpclmulqdq zmm5,zmm6,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[176+rdx] + vpclmulqdq zmm15,zmm7,zmm20,0x11 + vpclmulqdq zmm16,zmm7,zmm20,0x00 + vpclmulqdq zmm17,zmm7,zmm20,0x01 + vpclmulqdq zmm19,zmm7,zmm20,0x10 + vmovdqu64 zmm20,ZMMWORD[240+rdx] + vpclmulqdq zmm6,zmm10,zmm20,0x11 + vpclmulqdq zmm7,zmm10,zmm20,0x00 + vpternlogq zmm15,zmm6,zmm0,0x96 + vpternlogq zmm16,zmm7,zmm3,0x96 + vpclmulqdq zmm6,zmm10,zmm20,0x01 + vpclmulqdq zmm7,zmm10,zmm20,0x10 + vpternlogq zmm17,zmm6,zmm4,0x96 + vpternlogq zmm19,zmm7,zmm5,0x96 + vmovdqu64 ymm20,YMMWORD[304+rdx] + vinserti64x2 zmm20,zmm20,ZMMWORD[336+rdx],2 + vpclmulqdq zmm4,zmm11,zmm20,0x01 + vpclmulqdq zmm5,zmm11,zmm20,0x10 + vpclmulqdq zmm0,zmm11,zmm20,0x11 + vpclmulqdq zmm3,zmm11,zmm20,0x00 + + vpxorq zmm4,zmm4,zmm17 + vpxorq zmm5,zmm5,zmm19 + vpxorq zmm0,zmm0,zmm15 + vpxorq zmm3,zmm3,zmm16 + + vpxorq zmm4,zmm4,zmm5 + vpsrldq zmm17,zmm4,8 + vpslldq zmm19,zmm4,8 + vpxorq zmm0,zmm0,zmm17 + vpxorq zmm3,zmm3,zmm19 + vextracti64x4 ymm17,zmm0,1 + vpxorq ymm0,ymm0,ymm17 + vextracti32x4 xmm17,ymm0,1 + vpxorq xmm0,xmm0,xmm17 + vextracti64x4 ymm19,zmm3,1 + vpxorq ymm3,ymm3,ymm19 + vextracti32x4 xmm19,ymm3,1 + vpxorq xmm3,xmm3,xmm19 + vmovdqa64 xmm20,XMMWORD[POLY2] + + + vpclmulqdq xmm4,xmm20,xmm3,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm4,xmm3,xmm4 + + + vpclmulqdq xmm5,xmm20,xmm4,0x00 + vpsrldq xmm5,xmm5,4 + vpclmulqdq xmm14,xmm20,xmm4,0x10 + vpslldq xmm14,xmm14,4 + vpternlogq xmm14,xmm5,xmm0,0x96 + +$L$_small_initial_compute_done_982: + vpxorq xmm14,xmm14,xmm13 +$L$_after_reduction_982: +$L$_small_initial_blocks_encrypted_966: +$L$_ghash_done_821: + vmovdqu64 XMMWORD[rdx],xmm2 + vmovdqu64 XMMWORD[64+rdx],xmm14 +$L$_enc_dec_done_821: + jmp NEAR $L$exit_gcm_decrypt +$L$exit_gcm_decrypt: + cmp QWORD[112+rbp],256 + jbe NEAR $L$skip_hkeys_cleanup_983 + vpxor xmm0,xmm0,xmm0 + vmovdqa64 ZMMWORD[rsp],zmm0 + vmovdqa64 ZMMWORD[64+rsp],zmm0 + vmovdqa64 ZMMWORD[128+rsp],zmm0 + vmovdqa64 ZMMWORD[192+rsp],zmm0 + vmovdqa64 ZMMWORD[256+rsp],zmm0 + vmovdqa64 ZMMWORD[320+rsp],zmm0 + vmovdqa64 ZMMWORD[384+rsp],zmm0 + vmovdqa64 ZMMWORD[448+rsp],zmm0 + vmovdqa64 ZMMWORD[512+rsp],zmm0 + vmovdqa64 ZMMWORD[576+rsp],zmm0 + vmovdqa64 ZMMWORD[640+rsp],zmm0 + vmovdqa64 ZMMWORD[704+rsp],zmm0 +$L$skip_hkeys_cleanup_983: + vzeroupper + vmovdqu xmm15,XMMWORD[((-16))+rbp] + vmovdqu xmm14,XMMWORD[((-32))+rbp] + vmovdqu xmm13,XMMWORD[((-48))+rbp] + vmovdqu xmm12,XMMWORD[((-64))+rbp] + vmovdqu xmm11,XMMWORD[((-80))+rbp] + vmovdqu xmm10,XMMWORD[((-96))+rbp] + vmovdqu xmm9,XMMWORD[((-112))+rbp] + vmovdqu xmm8,XMMWORD[((-128))+rbp] + vmovdqu xmm7,XMMWORD[((-144))+rbp] + vmovdqu xmm6,XMMWORD[((-160))+rbp] + lea rsp,[8+rbp] + pop rsi + + pop rdi + + pop r15 + + pop r14 + + pop r13 + + pop r12 + + pop rbp + + pop rbx + + DB 0F3h,0C3h ;repret +$L$decrypt_seh_end: + + +global ossl_aes_gcm_finalize_avx512 + +ALIGN 32 +ossl_aes_gcm_finalize_avx512: + +DB 243,15,30,250 + vmovdqu xmm2,XMMWORD[336+rcx] + vmovdqu xmm3,XMMWORD[32+rcx] + vmovdqu xmm4,XMMWORD[64+rcx] + + + cmp rdx,0 + je NEAR $L$_partial_done_984 + + vpclmulqdq xmm0,xmm4,xmm2,0x11 + vpclmulqdq xmm16,xmm4,xmm2,0x00 + vpclmulqdq xmm17,xmm4,xmm2,0x01 + vpclmulqdq xmm4,xmm4,xmm2,0x10 + vpxorq xmm4,xmm4,xmm17 + + vpsrldq xmm17,xmm4,8 + vpslldq xmm4,xmm4,8 + vpxorq xmm0,xmm0,xmm17 + vpxorq xmm4,xmm4,xmm16 + + + + vmovdqu64 xmm17,XMMWORD[POLY2] + + vpclmulqdq xmm16,xmm17,xmm4,0x01 + vpslldq xmm16,xmm16,8 + vpxorq xmm4,xmm4,xmm16 + + + + vpclmulqdq xmm16,xmm17,xmm4,0x00 + vpsrldq xmm16,xmm16,4 + vpclmulqdq xmm4,xmm17,xmm4,0x10 + vpslldq xmm4,xmm4,4 + + vpternlogq xmm4,xmm0,xmm16,0x96 + +$L$_partial_done_984: + vmovq xmm5,QWORD[56+rcx] + vpinsrq xmm5,xmm5,QWORD[48+rcx],1 + vpsllq xmm5,xmm5,3 + + vpxor xmm4,xmm4,xmm5 + + vpclmulqdq xmm0,xmm4,xmm2,0x11 + vpclmulqdq xmm16,xmm4,xmm2,0x00 + vpclmulqdq xmm17,xmm4,xmm2,0x01 + vpclmulqdq xmm4,xmm4,xmm2,0x10 + vpxorq xmm4,xmm4,xmm17 + + vpsrldq xmm17,xmm4,8 + vpslldq xmm4,xmm4,8 + vpxorq xmm0,xmm0,xmm17 + vpxorq xmm4,xmm4,xmm16 + + + + vmovdqu64 xmm17,XMMWORD[POLY2] + + vpclmulqdq xmm16,xmm17,xmm4,0x01 + vpslldq xmm16,xmm16,8 + vpxorq xmm4,xmm4,xmm16 + + + + vpclmulqdq xmm16,xmm17,xmm4,0x00 + vpsrldq xmm16,xmm16,4 + vpclmulqdq xmm4,xmm17,xmm4,0x10 + vpslldq xmm4,xmm4,4 + + vpternlogq xmm4,xmm0,xmm16,0x96 + + vpshufb xmm4,xmm4,XMMWORD[SHUF_MASK] + vpxor xmm3,xmm3,xmm4 + +$L$_return_T_984: + vmovdqu XMMWORD[64+rcx],xmm3 +$L$abort_finalize: + DB 0F3h,0C3h ;repret + + +global ossl_gcm_gmult_avx512 + + +ALIGN 32 +ossl_gcm_gmult_avx512: + +DB 243,15,30,250 + vmovdqu64 xmm1,XMMWORD[rcx] + vmovdqu64 xmm2,XMMWORD[336+rdx] + + vpclmulqdq xmm3,xmm1,xmm2,0x11 + vpclmulqdq xmm4,xmm1,xmm2,0x00 + vpclmulqdq xmm5,xmm1,xmm2,0x01 + vpclmulqdq xmm1,xmm1,xmm2,0x10 + vpxorq xmm1,xmm1,xmm5 + + vpsrldq xmm5,xmm1,8 + vpslldq xmm1,xmm1,8 + vpxorq xmm3,xmm3,xmm5 + vpxorq xmm1,xmm1,xmm4 + + + + vmovdqu64 xmm5,XMMWORD[POLY2] + + vpclmulqdq xmm4,xmm5,xmm1,0x01 + vpslldq xmm4,xmm4,8 + vpxorq xmm1,xmm1,xmm4 + + + + vpclmulqdq xmm4,xmm5,xmm1,0x00 + vpsrldq xmm4,xmm4,4 + vpclmulqdq xmm1,xmm5,xmm1,0x10 + vpslldq xmm1,xmm1,4 + + vpternlogq xmm1,xmm3,xmm4,0x96 + + vmovdqu64 XMMWORD[rcx],xmm1 + vzeroupper +$L$abort_gmult: + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$setiv_seh_begin wrt ..imagebase + DD $L$setiv_seh_end wrt ..imagebase + DD $L$setiv_seh_info wrt ..imagebase + + DD $L$ghash_seh_begin wrt ..imagebase + DD $L$ghash_seh_end wrt ..imagebase + DD $L$ghash_seh_info wrt ..imagebase + + DD $L$encrypt_seh_begin wrt ..imagebase + DD $L$encrypt_seh_end wrt ..imagebase + DD $L$encrypt_seh_info wrt ..imagebase + + DD $L$decrypt_seh_begin wrt ..imagebase + DD $L$decrypt_seh_end wrt ..imagebase + DD $L$decrypt_seh_info wrt ..imagebase + +section .xdata rdata align=8 +ALIGN 8 +$L$setiv_seh_info: +DB 1 +DB $L$setiv_seh_prolog_end-$L$setiv_seh_begin +DB 31 + +DB 165 +DB $L$setiv_seh_save_xmm15-$L$setiv_seh_begin +DB 248 + DW 9 +DB $L$setiv_seh_save_xmm14-$L$setiv_seh_begin +DB 232 + DW 8 +DB $L$setiv_seh_save_xmm13-$L$setiv_seh_begin +DB 216 + DW 7 +DB $L$setiv_seh_save_xmm12-$L$setiv_seh_begin +DB 200 + DW 6 +DB $L$setiv_seh_save_xmm11-$L$setiv_seh_begin +DB 184 + DW 5 +DB $L$setiv_seh_save_xmm10-$L$setiv_seh_begin +DB 168 + DW 4 +DB $L$setiv_seh_save_xmm9-$L$setiv_seh_begin +DB 152 + DW 3 +DB $L$setiv_seh_save_xmm8-$L$setiv_seh_begin +DB 136 + DW 2 +DB $L$setiv_seh_save_xmm7-$L$setiv_seh_begin +DB 120 + DW 1 +DB $L$setiv_seh_save_xmm6-$L$setiv_seh_begin +DB 104 + DW 0 + +DB $L$setiv_seh_setfp-$L$setiv_seh_begin +DB 3 + + +DB $L$setiv_seh_allocstack_xmm-$L$setiv_seh_begin +DB 1 + DW 21 +DB $L$setiv_seh_push_rsi-$L$setiv_seh_begin +DB 96 +DB $L$setiv_seh_push_rdi-$L$setiv_seh_begin +DB 112 +DB $L$setiv_seh_push_r15-$L$setiv_seh_begin +DB 240 +DB $L$setiv_seh_push_r14-$L$setiv_seh_begin +DB 224 +DB $L$setiv_seh_push_r13-$L$setiv_seh_begin +DB 208 +DB $L$setiv_seh_push_r12-$L$setiv_seh_begin +DB 192 +DB $L$setiv_seh_push_rbp-$L$setiv_seh_begin +DB 80 +DB $L$setiv_seh_push_rbx-$L$setiv_seh_begin +DB 48 +ALIGN 8 +$L$ghash_seh_info: +DB 1 +DB $L$ghash_seh_prolog_end-$L$ghash_seh_begin +DB 31 + +DB 165 +DB $L$ghash_seh_save_xmm15-$L$ghash_seh_begin +DB 248 + DW 9 +DB $L$ghash_seh_save_xmm14-$L$ghash_seh_begin +DB 232 + DW 8 +DB $L$ghash_seh_save_xmm13-$L$ghash_seh_begin +DB 216 + DW 7 +DB $L$ghash_seh_save_xmm12-$L$ghash_seh_begin +DB 200 + DW 6 +DB $L$ghash_seh_save_xmm11-$L$ghash_seh_begin +DB 184 + DW 5 +DB $L$ghash_seh_save_xmm10-$L$ghash_seh_begin +DB 168 + DW 4 +DB $L$ghash_seh_save_xmm9-$L$ghash_seh_begin +DB 152 + DW 3 +DB $L$ghash_seh_save_xmm8-$L$ghash_seh_begin +DB 136 + DW 2 +DB $L$ghash_seh_save_xmm7-$L$ghash_seh_begin +DB 120 + DW 1 +DB $L$ghash_seh_save_xmm6-$L$ghash_seh_begin +DB 104 + DW 0 + +DB $L$ghash_seh_setfp-$L$ghash_seh_begin +DB 3 + + +DB $L$ghash_seh_allocstack_xmm-$L$ghash_seh_begin +DB 1 + DW 21 +DB $L$ghash_seh_push_rsi-$L$ghash_seh_begin +DB 96 +DB $L$ghash_seh_push_rdi-$L$ghash_seh_begin +DB 112 +DB $L$ghash_seh_push_r15-$L$ghash_seh_begin +DB 240 +DB $L$ghash_seh_push_r14-$L$ghash_seh_begin +DB 224 +DB $L$ghash_seh_push_r13-$L$ghash_seh_begin +DB 208 +DB $L$ghash_seh_push_r12-$L$ghash_seh_begin +DB 192 +DB $L$ghash_seh_push_rbp-$L$ghash_seh_begin +DB 80 +DB $L$ghash_seh_push_rbx-$L$ghash_seh_begin +DB 48 +ALIGN 8 +$L$encrypt_seh_info: +DB 1 +DB $L$encrypt_seh_prolog_end-$L$encrypt_seh_begin +DB 31 + +DB 165 +DB $L$encrypt_seh_save_xmm15-$L$encrypt_seh_begin +DB 248 + DW 9 +DB $L$encrypt_seh_save_xmm14-$L$encrypt_seh_begin +DB 232 + DW 8 +DB $L$encrypt_seh_save_xmm13-$L$encrypt_seh_begin +DB 216 + DW 7 +DB $L$encrypt_seh_save_xmm12-$L$encrypt_seh_begin +DB 200 + DW 6 +DB $L$encrypt_seh_save_xmm11-$L$encrypt_seh_begin +DB 184 + DW 5 +DB $L$encrypt_seh_save_xmm10-$L$encrypt_seh_begin +DB 168 + DW 4 +DB $L$encrypt_seh_save_xmm9-$L$encrypt_seh_begin +DB 152 + DW 3 +DB $L$encrypt_seh_save_xmm8-$L$encrypt_seh_begin +DB 136 + DW 2 +DB $L$encrypt_seh_save_xmm7-$L$encrypt_seh_begin +DB 120 + DW 1 +DB $L$encrypt_seh_save_xmm6-$L$encrypt_seh_begin +DB 104 + DW 0 + +DB $L$encrypt_seh_setfp-$L$encrypt_seh_begin +DB 3 + + +DB $L$encrypt_seh_allocstack_xmm-$L$encrypt_seh_begin +DB 1 + DW 21 +DB $L$encrypt_seh_push_rsi-$L$encrypt_seh_begin +DB 96 +DB $L$encrypt_seh_push_rdi-$L$encrypt_seh_begin +DB 112 +DB $L$encrypt_seh_push_r15-$L$encrypt_seh_begin +DB 240 +DB $L$encrypt_seh_push_r14-$L$encrypt_seh_begin +DB 224 +DB $L$encrypt_seh_push_r13-$L$encrypt_seh_begin +DB 208 +DB $L$encrypt_seh_push_r12-$L$encrypt_seh_begin +DB 192 +DB $L$encrypt_seh_push_rbp-$L$encrypt_seh_begin +DB 80 +DB $L$encrypt_seh_push_rbx-$L$encrypt_seh_begin +DB 48 +ALIGN 8 +$L$decrypt_seh_info: +DB 1 +DB $L$decrypt_seh_prolog_end-$L$decrypt_seh_begin +DB 31 + +DB 165 +DB $L$decrypt_seh_save_xmm15-$L$decrypt_seh_begin +DB 248 + DW 9 +DB $L$decrypt_seh_save_xmm14-$L$decrypt_seh_begin +DB 232 + DW 8 +DB $L$decrypt_seh_save_xmm13-$L$decrypt_seh_begin +DB 216 + DW 7 +DB $L$decrypt_seh_save_xmm12-$L$decrypt_seh_begin +DB 200 + DW 6 +DB $L$decrypt_seh_save_xmm11-$L$decrypt_seh_begin +DB 184 + DW 5 +DB $L$decrypt_seh_save_xmm10-$L$decrypt_seh_begin +DB 168 + DW 4 +DB $L$decrypt_seh_save_xmm9-$L$decrypt_seh_begin +DB 152 + DW 3 +DB $L$decrypt_seh_save_xmm8-$L$decrypt_seh_begin +DB 136 + DW 2 +DB $L$decrypt_seh_save_xmm7-$L$decrypt_seh_begin +DB 120 + DW 1 +DB $L$decrypt_seh_save_xmm6-$L$decrypt_seh_begin +DB 104 + DW 0 + +DB $L$decrypt_seh_setfp-$L$decrypt_seh_begin +DB 3 + + +DB $L$decrypt_seh_allocstack_xmm-$L$decrypt_seh_begin +DB 1 + DW 21 +DB $L$decrypt_seh_push_rsi-$L$decrypt_seh_begin +DB 96 +DB $L$decrypt_seh_push_rdi-$L$decrypt_seh_begin +DB 112 +DB $L$decrypt_seh_push_r15-$L$decrypt_seh_begin +DB 240 +DB $L$decrypt_seh_push_r14-$L$decrypt_seh_begin +DB 224 +DB $L$decrypt_seh_push_r13-$L$decrypt_seh_begin +DB 208 +DB $L$decrypt_seh_push_r12-$L$decrypt_seh_begin +DB 192 +DB $L$decrypt_seh_push_rbp-$L$decrypt_seh_begin +DB 80 +DB $L$decrypt_seh_push_rbx-$L$decrypt_seh_begin +DB 48 +section .rdata rdata align=16 +ALIGN 16 +POLY: DQ 0x0000000000000001,0xC200000000000000 + +ALIGN 64 +POLY2: + DQ 0x00000001C2000000,0xC200000000000000 + DQ 0x00000001C2000000,0xC200000000000000 + DQ 0x00000001C2000000,0xC200000000000000 + DQ 0x00000001C2000000,0xC200000000000000 + +ALIGN 16 +TWOONE: DQ 0x0000000000000001,0x0000000100000000 + + + +ALIGN 64 +SHUF_MASK: + DQ 0x08090A0B0C0D0E0F,0x0001020304050607 + DQ 0x08090A0B0C0D0E0F,0x0001020304050607 + DQ 0x08090A0B0C0D0E0F,0x0001020304050607 + DQ 0x08090A0B0C0D0E0F,0x0001020304050607 + +ALIGN 16 +SHIFT_MASK: + DQ 0x0706050403020100,0x0f0e0d0c0b0a0908 + +ALL_F: + DQ 0xffffffffffffffff,0xffffffffffffffff + +ZERO: + DQ 0x0000000000000000,0x0000000000000000 + +ALIGN 16 +ONE: + DQ 0x0000000000000001,0x0000000000000000 + +ALIGN 16 +ONEf: + DQ 0x0000000000000000,0x0100000000000000 + +ALIGN 64 +ddq_add_1234: + DQ 0x0000000000000001,0x0000000000000000 + DQ 0x0000000000000002,0x0000000000000000 + DQ 0x0000000000000003,0x0000000000000000 + DQ 0x0000000000000004,0x0000000000000000 + +ALIGN 64 +ddq_add_5678: + DQ 0x0000000000000005,0x0000000000000000 + DQ 0x0000000000000006,0x0000000000000000 + DQ 0x0000000000000007,0x0000000000000000 + DQ 0x0000000000000008,0x0000000000000000 + +ALIGN 64 +ddq_add_4444: + DQ 0x0000000000000004,0x0000000000000000 + DQ 0x0000000000000004,0x0000000000000000 + DQ 0x0000000000000004,0x0000000000000000 + DQ 0x0000000000000004,0x0000000000000000 + +ALIGN 64 +ddq_add_8888: + DQ 0x0000000000000008,0x0000000000000000 + DQ 0x0000000000000008,0x0000000000000000 + DQ 0x0000000000000008,0x0000000000000000 + DQ 0x0000000000000008,0x0000000000000000 + +ALIGN 64 +ddq_addbe_1234: + DQ 0x0000000000000000,0x0100000000000000 + DQ 0x0000000000000000,0x0200000000000000 + DQ 0x0000000000000000,0x0300000000000000 + DQ 0x0000000000000000,0x0400000000000000 + +ALIGN 64 +ddq_addbe_4444: + DQ 0x0000000000000000,0x0400000000000000 + DQ 0x0000000000000000,0x0400000000000000 + DQ 0x0000000000000000,0x0400000000000000 + DQ 0x0000000000000000,0x0400000000000000 + +ALIGN 64 +byte_len_to_mask_table: + DW 0x0000,0x0001,0x0003,0x0007 + DW 0x000f,0x001f,0x003f,0x007f + DW 0x00ff,0x01ff,0x03ff,0x07ff + DW 0x0fff,0x1fff,0x3fff,0x7fff + DW 0xffff + +ALIGN 64 +byte64_len_to_mask_table: + DQ 0x0000000000000000,0x0000000000000001 + DQ 0x0000000000000003,0x0000000000000007 + DQ 0x000000000000000f,0x000000000000001f + DQ 0x000000000000003f,0x000000000000007f + DQ 0x00000000000000ff,0x00000000000001ff + DQ 0x00000000000003ff,0x00000000000007ff + DQ 0x0000000000000fff,0x0000000000001fff + DQ 0x0000000000003fff,0x0000000000007fff + DQ 0x000000000000ffff,0x000000000001ffff + DQ 0x000000000003ffff,0x000000000007ffff + DQ 0x00000000000fffff,0x00000000001fffff + DQ 0x00000000003fffff,0x00000000007fffff + DQ 0x0000000000ffffff,0x0000000001ffffff + DQ 0x0000000003ffffff,0x0000000007ffffff + DQ 0x000000000fffffff,0x000000001fffffff + DQ 0x000000003fffffff,0x000000007fffffff + DQ 0x00000000ffffffff,0x00000001ffffffff + DQ 0x00000003ffffffff,0x00000007ffffffff + DQ 0x0000000fffffffff,0x0000001fffffffff + DQ 0x0000003fffffffff,0x0000007fffffffff + DQ 0x000000ffffffffff,0x000001ffffffffff + DQ 0x000003ffffffffff,0x000007ffffffffff + DQ 0x00000fffffffffff,0x00001fffffffffff + DQ 0x00003fffffffffff,0x00007fffffffffff + DQ 0x0000ffffffffffff,0x0001ffffffffffff + DQ 0x0003ffffffffffff,0x0007ffffffffffff + DQ 0x000fffffffffffff,0x001fffffffffffff + DQ 0x003fffffffffffff,0x007fffffffffffff + DQ 0x00ffffffffffffff,0x01ffffffffffffff + DQ 0x03ffffffffffffff,0x07ffffffffffffff + DQ 0x0fffffffffffffff,0x1fffffffffffffff + DQ 0x3fffffffffffffff,0x7fffffffffffffff + DQ 0xffffffffffffffff diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/modes/aesni-gcm-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/modes/aesni-gcm-x86_64.asm index 9fba32b883a6ba..b9b1b5256142ad 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/modes/aesni-gcm-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/modes/aesni-gcm-x86_64.asm @@ -851,6 +851,7 @@ $L$gcm_enc_abort: DB 0F3h,0C3h ;repret $L$SEH_end_aesni_gcm_encrypt: +section .rdata rdata align=64 ALIGN 64 $L$bswap_mask: DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 @@ -866,6 +867,7 @@ DB 65,69,83,45,78,73,32,71,67,77,32,109,111,100,117,108 DB 101,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82 DB 89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112 DB 114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +section .text ALIGN 64 EXTERN __imp_RtlVirtualUnwind diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/modes/ghash-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/modes/ghash-x86_64.asm index 639672d87b00b4..e68d6e5228e7b8 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/modes/ghash-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/modes/ghash-x86_64.asm @@ -723,6 +723,7 @@ global gcm_init_clmul ALIGN 16 gcm_init_clmul: +DB 243,15,30,250 $L$_init_clmul: $L$SEH_begin_gcm_init_clmul: @@ -1354,6 +1355,7 @@ global gcm_init_avx ALIGN 32 gcm_init_avx: +DB 243,15,30,250 $L$SEH_begin_gcm_init_avx: DB 0x48,0x83,0xec,0x18 @@ -1879,6 +1881,7 @@ $L$SEH_end_gcm_ghash_avx: DB 0F3h,0C3h ;repret +section .rdata rdata align=64 ALIGN 64 $L$bswap_mask: DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 @@ -1935,6 +1938,7 @@ DB 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32 DB 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111 DB 114,103,62,0 ALIGN 64 +section .text EXTERN __imp_RtlVirtualUnwind ALIGN 16 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/params_idx.c b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/params_idx.c new file mode 100644 index 00000000000000..874125eb57a17c --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/params_idx.c @@ -0,0 +1,3366 @@ +/* + * WARNING: do not edit! + * Generated by makefile from crypto/params_idx.c.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#include "internal/e_os.h" +#include "internal/param_names.h" +#include + +/* Machine generated TRIE -- generated by util/perl/OpenSSL/paramnames.pm */ +int ossl_param_find_pidx(const char *s) +{ + switch(s[0]) { + default: + break; + case 'a': + switch(s[1]) { + default: + break; + case 'c': + if (strcmp("vp-info", s + 2) == 0) + return PIDX_KDF_PARAM_X942_ACVPINFO; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'd': + if (strcmp("itional-random", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_ADD_RANDOM; + break; + case '\0': + return PIDX_KDF_PARAM_ARGON2_AD; + } + break; + case 'e': + if (strcmp("ad", s + 2) == 0) + return PIDX_CIPHER_PARAM_AEAD; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("id_param", s + 4) == 0) + return PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD; + break; + case 'i': + if (strcmp("d-absent", s + 4) == 0) + return PIDX_DIGEST_PARAM_ALGID_ABSENT; + break; + case 'o': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'h': + switch(s[8]) { + default: + break; + case 'm': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '-': + if (strcmp("params", s + 13) == 0) + return PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS; + break; + case '\0': + return PIDX_ALG_PARAM_ALGORITHM_ID; + } + } + } + } + } + } + } + } + } + } + break; + case 'i': + if (strcmp("as", s + 3) == 0) + return PIDX_STORE_PARAM_ALIAS; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_A; + } + break; + case 'b': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("sis-type", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_CHAR2_TYPE; + break; + case 'i': + if (strcmp("ts", s + 2) == 0) + return PIDX_PKEY_PARAM_BITS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("size", s + 6) == 0) + return PIDX_MAC_PARAM_BLOCK_SIZE; + break; + case '_': + if (strcmp("padding", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING; + break; + case 's': + if (strcmp("ize", s + 6) == 0) + return PIDX_DIGEST_PARAM_BLOCK_SIZE; + } + } + } + } + break; + case 'u': + if (strcmp("ildinfo", s + 2) == 0) + return PIDX_PROV_PARAM_BUILDINFO; + break; + case '\0': + return PIDX_PKEY_PARAM_EC_B; + } + break; + case 'c': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_C_ROUNDS; + break; + case 'e': + if (strcmp("kalg", s + 2) == 0) + return PIDX_KDF_PARAM_CEK_ALG; + break; + case 'i': + if (strcmp("pher", s + 2) == 0) + return PIDX_ALG_PARAM_CIPHER; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("actor", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_COFACTOR; + break; + case 'n': + switch(s[3]) { + default: + break; + case 's': + if (strcmp("tant", s + 4) == 0) + return PIDX_KDF_PARAM_CONSTANT; + break; + case 't': + if (strcmp("ext-string", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_CONTEXT_STRING; + } + } + break; + case 't': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("mode", s + 4) == 0) + return PIDX_CIPHER_PARAM_CTS_MODE; + break; + case '\0': + return PIDX_CIPHER_PARAM_CTS; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '-': + if (strcmp("iv", s + 7) == 0) + return PIDX_CIPHER_PARAM_CUSTOM_IV; + break; + case '\0': + return PIDX_MAC_PARAM_CUSTOM; + } + } + } + } + } + } + break; + case 'd': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_D_ROUNDS; + break; + case 'a': + switch(s[2]) { + default: + break; + case 't': + switch(s[3]) { + default: + break; + case 'a': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 's': + if (strcmp("tructure", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_STRUCTURE; + break; + case 't': + if (strcmp("ype", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_TYPE; + } + break; + case '\0': + return PIDX_OBJECT_PARAM_DATA; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + if (strcmp("ded-from-explicit", s + 4) == 0) + return PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS; + break; + case 'r': + if (strcmp("ypt-only", s + 4) == 0) + return PIDX_CIPHER_PARAM_DECRYPT_ONLY; + } + break; + case 'f': + if (strcmp("ault-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_DEFAULT_DIGEST; + break; + case 's': + if (strcmp("c", s + 3) == 0) + return PIDX_OBJECT_PARAM_DESC; + break; + case 't': + if (strcmp("erministic", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_DETERMINISTIC; + } + break; + case 'h': + if (strcmp("kem-ikm", s + 2) == 0) + return PIDX_PKEY_PARAM_DHKEM_IKM; + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("heck", s + 8) == 0) + return PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK; + break; + case 'n': + if (strcmp("oinit", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_NOINIT; + break; + case 'o': + if (strcmp("neshot", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_ONESHOT; + break; + case 'p': + if (strcmp("rops", s + 8) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS; + break; + case 's': + if (strcmp("ize", s + 8) == 0) + return PIDX_PKEY_PARAM_DIGEST_SIZE; + } + break; + case '\0': + return PIDX_STORE_PARAM_DIGEST; + } + } + } + } + break; + case 's': + if (strcmp("tid", s + 3) == 0) + return PIDX_PKEY_PARAM_DIST_ID; + } + break; + case 'r': + if (strcmp("bg-no-trunc-md", s + 2) == 0) + return PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST; + break; + case 's': + if (strcmp("a-sign-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_DSA_SIGN_DISABLED; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_D; + } + break; + case 'e': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("rly_clean", s + 2) == 0) + return PIDX_KDF_PARAM_EARLY_CLEAN; + break; + case 'c': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'h': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'a': + switch(s[9]) { + default: + break; + case 'c': + switch(s[10]) { + default: + break; + case 't': + switch(s[11]) { + default: + break; + case 'o': + switch(s[12]) { + default: + break; + case 'r': + switch(s[13]) { + default: + break; + case '-': + switch(s[14]) { + default: + break; + case 'c': + if (strcmp("heck", s + 15) == 0) + return PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK; + break; + case 'm': + if (strcmp("ode", s + 15) == 0) + return PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE; + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'm': + if (strcmp("s_check", s + 2) == 0) + return PIDX_KDF_PARAM_FIPS_EMS_CHECK; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("d-pub-key", s + 6) == 0) + return PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY; + break; + case 'i': + if (strcmp("ng", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_ENCODING; + } + } + break; + case 'r': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'c': + if (strcmp("heck", s + 9) == 0) + return PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK; + break; + case 'l': + if (strcmp("evel", s + 9) == 0) + return PIDX_ENCODER_PARAM_ENCRYPT_LEVEL; + } + } + } + } + } + } + break; + case 'g': + if (strcmp("ine", s + 3) == 0) + return PIDX_ALG_PARAM_ENGINE; + break; + case 't': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'y': + switch(s[7]) { + default: + break; + case '_': + if (strcmp("required", s + 8) == 0) + return PIDX_DRBG_PARAM_ENTROPY_REQUIRED; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_ENTROPY; + } + } + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_E; + break; + case 'x': + if (strcmp("pect", s + 2) == 0) + return PIDX_STORE_PARAM_EXPECT; + } + break; + case 'f': + switch(s[1]) { + default: + break; + case 'i': + switch(s[2]) { + default: + break; + case 'e': + if (strcmp("ld-type", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_FIELD_TYPE; + break; + case 'n': + if (strcmp("gerprint", s + 3) == 0) + return PIDX_STORE_PARAM_FINGERPRINT; + break; + case 'p': + if (strcmp("s-indicator", s + 3) == 0) + return PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR; + } + } + break; + case 'g': + switch(s[1]) { + default: + break; + case 'e': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_GENERATE; + } + break; + case 'o': + if (strcmp("r", s + 8) == 0) + return PIDX_PKEY_PARAM_EC_GENERATOR; + } + } + } + } + } + } + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_GINDEX; + break; + case 'r': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'u': + switch(s[4]) { + default: + break; + case 'p': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("check", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE; + break; + case '\0': + return PIDX_PKEY_PARAM_GROUP_NAME; + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_G; + } + break; + case 'h': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("s-randkey", s + 2) == 0) + return PIDX_CIPHER_PARAM_HAS_RAND_KEY; + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_H; + break; + case 'k': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'f': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_KEY_CHECK; + } + } + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_HMAC_KEY_CHECK; + break; + case 's': + if (strcmp("_padding", s + 2) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING; + } + break; + case 'i': + switch(s[1]) { + default: + break; + case 'd': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_PKCS12_ID; + } + break; + case 'k': + if (strcmp("me", s + 2) == 0) + return PIDX_KEM_PARAM_IKME; + break; + case 'm': + if (strcmp("plicit-rejection", s + 2) == 0) + return PIDX_PKEY_PARAM_IMPLICIT_REJECTION; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("lude-public", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC; + break; + case 'f': + if (strcmp("o", s + 3) == 0) + return PIDX_PASSPHRASE_PARAM_INFO; + break; + case 'p': + if (strcmp("ut-type", s + 3) == 0) + return PIDX_STORE_PARAM_INPUT_TYPE; + break; + case 's': + if (strcmp("tance", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_INSTANCE; + } + break; + case 't': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("tion", s + 5) == 0) + return PIDX_GEN_PARAM_ITERATION; + break; + case '\0': + return PIDX_KDF_PARAM_ITER; + } + } + } + break; + case 'v': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("generated", s + 3) == 0) + return PIDX_CIPHER_PARAM_AEAD_IV_GENERATED; + break; + case 'l': + if (strcmp("en", s + 3) == 0) + return PIDX_CIPHER_PARAM_IVLEN; + break; + case '\0': + return PIDX_MAC_PARAM_IV; + } + } + break; + case 'j': + switch(s[1]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_COFACTOR; + } + break; + case 'k': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K2; + } + break; + case '3': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K3; + } + break; + case 'a': + if (strcmp("t", s + 2) == 0) + return PIDX_SIGNATURE_PARAM_KAT; + break; + case 'b': + if (strcmp("kdf-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KBKDF_KEY_CHECK; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case 's': + switch(s[9]) { + default: + break; + case 't': + switch(s[10]) { + default: + break; + case '-': + if (strcmp("props", s + 11) == 0) + return PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_KDF_DIGEST; + } + } + } + } + } + } + break; + case 'o': + if (strcmp("utlen", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_OUTLEN; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_TYPE; + break; + case 'u': + if (strcmp("km", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_UKM; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'y': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("heck", s + 5) == 0) + return PIDX_PKEY_PARAM_FIPS_KEY_CHECK; + break; + case 'l': + if (strcmp("ength", s + 5) == 0) + return PIDX_SKEY_PARAM_KEY_LENGTH; + } + break; + case 'b': + if (strcmp("its", s + 4) == 0) + return PIDX_CIPHER_PARAM_RC2_KEYBITS; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_KEYLEN; + break; + case '\0': + return PIDX_MAC_PARAM_KEY; + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KMAC_KEY_CHECK; + } + break; + case 'l': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("el", s + 3) == 0) + return PIDX_KDF_PARAM_LABEL; + break; + case 'n': + if (strcmp("es", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_LANES; + } + } + break; + case 'm': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'k': + if (strcmp("ey", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_MAC_KEY; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_KDF_PARAM_MAC_SIZE; + break; + case '\0': + return PIDX_ALG_PARAM_MAC; + } + break; + case 'n': + if (strcmp("datory-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_MANDATORY_DIGEST; + break; + case 'x': + switch(s[3]) { + default: + break; + case '-': + if (strcmp("size", s + 4) == 0) + return PIDX_PKEY_PARAM_MAX_SIZE; + break; + case '_': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("dinlen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_ADINLEN; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("rly_data", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA; + break; + case 'n': + if (strcmp("tropylen", s + 6) == 0) + return PIDX_DRBG_PARAM_MAX_ENTROPYLEN; + } + break; + case 'f': + if (strcmp("rag_len", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_NONCELEN; + break; + case 'p': + if (strcmp("erslen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_PERSLEN; + break; + case 'r': + if (strcmp("equest", s + 5) == 0) + return PIDX_RAND_PARAM_MAX_REQUEST; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MAX_LENGTH; + break; + case 'm': + if (strcmp("em_bytes", s + 4) == 0) + return PIDX_KDF_PARAM_SCRYPT_MAXMEM; + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'm': + if (strcmp("cost", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_MEMCOST; + break; + case 's': + if (strcmp("sage-encoding", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING; + } + break; + case 'g': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_DIGEST; + break; + case 'p': + if (strcmp("roperties", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_PROPERTIES; + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_MASKGENFUNC; + } + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("alg", s + 3) == 0) + return PIDX_DIGEST_PARAM_MICALG; + break; + case 'n': + switch(s[3]) { + default: + break; + case '_': + switch(s[4]) { + default: + break; + case 'e': + if (strcmp("ntropylen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_ENTROPYLEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_NONCELEN; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MIN_LENGTH; + } + } + break; + case 'l': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + if (strcmp("nput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS; + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED; + } + } + } + } + break; + case 'k': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + switch(s[8]) { + default: + break; + case 'm': + if (strcmp("port_pct_type", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE; + break; + case 'n': + if (strcmp("put_formats", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS; + } + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED; + } + } + } + } + } + } + break; + case 'o': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case '\0': + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE; + } + break; + case 'u': + if (strcmp("le-filename", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_MODULE_FILENAME; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_SIGNATURE_PARAM_MU; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_M; + } + break; + case 'n': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("me", s + 2) == 0) + return PIDX_STORE_PARAM_ISSUER; + break; + case 'o': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("short-mac", s + 3) == 0) + return PIDX_PROV_PARAM_NO_SHORT_MAC; + break; + case 'n': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("type", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_NONCE_TYPE; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_NONCE; + } + } + } + } + break; + case 'u': + if (strcmp("m", s + 2) == 0) + return PIDX_CIPHER_PARAM_NUM; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_N; + } + break; + case 'o': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("ep-label", s + 2) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL; + break; + case 'p': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'n': + if (strcmp("ssl-version", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_VERSION; + break; + case 'r': + if (strcmp("ation", s + 4) == 0) + return PIDX_KEM_PARAM_OPERATION; + } + break; + case 't': + if (strcmp("ions", s + 3) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS; + } + break; + case 'r': + if (strcmp("der", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_ORDER; + } + break; + case 'p': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P2; + } + break; + case 'a': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'm': + if (strcmp("ode", s + 5) == 0) + return PIDX_PKEY_PARAM_PAD_MODE; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_DIGEST_PARAM_PAD_TYPE; + } + break; + case 'd': + if (strcmp("ing", s + 4) == 0) + return PIDX_CIPHER_PARAM_PADDING; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_PAD; + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'u': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYUINFO; + break; + case 'v': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYVINFO; + } + } + } + break; + case 's': + if (strcmp("s", s + 3) == 0) + return PIDX_KDF_PARAM_PASSWORD; + } + break; + case 'b': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("ts", s + 3) == 0) + return PIDX_PKEY_PARAM_FFC_PBITS; + break; + case 'k': + if (strcmp("df2-lower-bound-check", s + 3) == 0) + return PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK; + } + break; + case 'c': + if (strcmp("ounter", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_PCOUNTER; + break; + case 'i': + if (strcmp("peline-tag", s + 2) == 0) + return PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG; + break; + case 'k': + if (strcmp("cs5", s + 2) == 0) + return PIDX_KDF_PARAM_PKCS5; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("nt-format", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT; + break; + case 't': + if (strcmp("ential", s + 3) == 0) + return PIDX_GEN_PARAM_POTENTIAL; + } + break; + case 'r': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("iction_resistance", s + 4) == 0) + return PIDX_DRBG_PARAM_PREDICTION_RESISTANCE; + break; + case 'f': + if (strcmp("ix", s + 4) == 0) + return PIDX_KDF_PARAM_PREFIX; + } + break; + case 'i': + switch(s[3]) { + default: + break; + case 'm': + if (strcmp("es", s + 4) == 0) + return PIDX_PKEY_PARAM_RSA_PRIMES; + break; + case 'v': + switch(s[4]) { + default: + break; + case '_': + if (strcmp("len", s + 5) == 0) + return PIDX_PKEY_PARAM_DH_PRIV_LEN; + break; + case '\0': + return PIDX_PKEY_PARAM_PRIV_KEY; + } + } + break; + case 'o': + switch(s[3]) { + default: + break; + case 'p': + if (strcmp("erties", s + 4) == 0) + return PIDX_STORE_PARAM_PROPERTIES; + break; + case 'v': + if (strcmp("ider-name", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_PROV_NAME; + } + } + break; + case 'u': + if (strcmp("b", s + 2) == 0) + return PIDX_PKEY_PARAM_PUB_KEY; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_P; + } + break; + case 'q': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q2; + } + break; + case 'b': + if (strcmp("its", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_QBITS; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_Q; + break; + case 'x': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_X; + } + break; + case 'y': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_Y; + } + } + break; + case 'r': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'k': + if (strcmp("ey", s + 5) == 0) + return PIDX_CIPHER_PARAM_RANDOM_KEY; + break; + case 'o': + if (strcmp("m_data", s + 5) == 0) + return PIDX_DRBG_PARAM_RANDOM_DATA; + } + } + break; + case 'w': + if (strcmp("-bytes", s + 3) == 0) + return PIDX_SKEY_PARAM_RAW_BYTES; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case '_': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("head", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD; + break; + case 'b': + if (strcmp("uffer_len", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN; + } + } + } + break; + case 'f': + if (strcmp("erence", s + 3) == 0) + return PIDX_OBJECT_PARAM_REFERENCE; + break; + case 's': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case '_': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("ounter", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_COUNTER; + break; + case 'r': + if (strcmp("equests", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_REQUESTS; + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case 'm': + switch(s[10]) { + default: + break; + case 'e': + switch(s[11]) { + default: + break; + case '_': + if (strcmp("interval", s + 12) == 0) + return PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL; + break; + case '\0': + return PIDX_DRBG_PARAM_RESEED_TIME; + } + } + } + } + } + } + } + } + } + } + break; + case 'o': + if (strcmp("unds", s + 2) == 0) + return PIDX_CIPHER_PARAM_ROUNDS; + break; + case 's': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + switch(s[5]) { + default: + break; + case 'o': + switch(s[6]) { + default: + break; + case 'e': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case 'i': + switch(s[10]) { + default: + break; + case 'c': + switch(s[11]) { + default: + break; + case 'i': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'n': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case '1': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT1; + } + break; + case '2': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT2; + } + break; + case '3': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT3; + } + break; + case '4': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT4; + } + break; + case '5': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT5; + } + break; + case '6': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT6; + } + break; + case '7': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT7; + } + break; + case '8': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT8; + } + break; + case '9': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'd': + if (strcmp("erive-from-pq", s + 5) == 0) + return PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'x': + switch(s[6]) { + default: + break; + case 'p': + switch(s[7]) { + default: + break; + case 'o': + switch(s[8]) { + default: + break; + case 'n': + switch(s[9]) { + default: + break; + case 'e': + switch(s[10]) { + default: + break; + case 'n': + switch(s[11]) { + default: + break; + case 't': + switch(s[12]) { + default: + break; + case '1': + switch(s[13]) { + default: + break; + case '0': + switch(s[14]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT1; + } + break; + case '2': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT2; + } + break; + case '3': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT3; + } + break; + case '4': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT4; + } + break; + case '5': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT5; + } + break; + case '6': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT6; + } + break; + case '7': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT7; + } + break; + case '8': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT8; + } + break; + case '9': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT; + } + } + } + } + } + } + } + } + break; + case 'f': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'o': + switch(s[9]) { + default: + break; + case 'r': + switch(s[10]) { + default: + break; + case '1': + switch(s[11]) { + default: + break; + case '0': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR1; + } + break; + case '2': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR2; + } + break; + case '3': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR3; + } + break; + case '4': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR4; + } + break; + case '5': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR5; + } + break; + case '6': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR6; + } + break; + case '7': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR7; + } + break; + case '8': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR8; + } + break; + case '9': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR; + } + } + } + } + } + } + break; + case 'p': + switch(s[5]) { + default: + break; + case 'k': + if (strcmp("cs15-pad-disabled", s + 6) == 0) + return PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED; + break; + case 's': + if (strcmp("s-saltlen-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK; + } + break; + case 's': + if (strcmp("ign-x931-pad-disabled", s + 5) == 0) + return PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED; + } + } + } + break; + case '\0': + return PIDX_KDF_PARAM_SCRYPT_R; + } + break; + case 's': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("eprime-generator", s + 3) == 0) + return PIDX_PKEY_PARAM_DH_GENERATOR; + break; + case 'l': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'l': + if (strcmp("en", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_PSS_SALTLEN; + break; + case '\0': + return PIDX_MAC_PARAM_SALT; + } + } + break; + case 'v': + if (strcmp("e-parameters", s + 3) == 0) + return PIDX_ENCODER_PARAM_SAVE_PARAMETERS; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'r': + if (strcmp("et", s + 4) == 0) + return PIDX_KDF_PARAM_SECRET; + break; + case 'u': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'y': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'b': + if (strcmp("its", s + 10) == 0) + return PIDX_PKEY_PARAM_SECURITY_BITS; + break; + case 'c': + if (strcmp("hecks", s + 10) == 0) + return PIDX_PROV_PARAM_SECURITY_CHECKS; + } + } + } + } + } + } + } + break; + case 'e': + if (strcmp("d", s + 3) == 0) + return PIDX_PKEY_PARAM_SLH_DSA_SEED; + break; + case 'r': + if (strcmp("ial", s + 3) == 0) + return PIDX_STORE_PARAM_SERIAL; + break; + case 's': + if (strcmp("sion_id", s + 3) == 0) + return PIDX_KDF_PARAM_SSHKDF_SESSION_ID; + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'n': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + if (strcmp("heck", s + 6) == 0) + return PIDX_PKEY_PARAM_FIPS_SIGN_CHECK; + break; + case 'x': + if (strcmp("931-pad-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK; + } + break; + case 'a': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case 'u': + switch(s[7]) { + default: + break; + case 'r': + switch(s[8]) { + default: + break; + case 'e': + switch(s[9]) { + default: + break; + case '-': + if (strcmp("digest-check", s + 10) == 0) + return PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK; + break; + case '\0': + return PIDX_SIGNATURE_PARAM_SIGNATURE; + } + } + } + } + } + } + } + break; + case 'z': + if (strcmp("e", s + 3) == 0) + return PIDX_MAC_PARAM_SIZE; + } + break; + case 'p': + if (strcmp("eed", s + 2) == 0) + return PIDX_CIPHER_PARAM_SPEED; + break; + case 's': + switch(s[2]) { + default: + break; + case 'h': + switch(s[3]) { + default: + break; + case 'k': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'f': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_KEY_CHECK; + } + } + } + } + } + break; + case 'k': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'f': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_KEY_CHECK; + } + } + } + } + break; + case 'l': + if (strcmp("3-ms", s + 3) == 0) + return PIDX_DIGEST_PARAM_SSL3_MS; + } + break; + case 't': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("esc", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_DESC; + break; + case 'p': + if (strcmp("hase", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_PHASE; + break; + case 't': + if (strcmp("ype", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_TYPE; + } + break; + case 'a': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_STATE; + } + break; + case 'u': + if (strcmp("s", s + 5) == 0) + return PIDX_PROV_PARAM_STATUS; + } + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("m_mac", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC; + break; + case 'n': + if (strcmp("gth", s + 5) == 0) + return PIDX_RAND_PARAM_STRENGTH; + } + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("ject", s + 3) == 0) + return PIDX_STORE_PARAM_SUBJECT; + break; + case 'p': + switch(s[3]) { + default: + break; + case 'p': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + if (strcmp("ivinfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PRIVINFO; + break; + case 'u': + if (strcmp("binfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PUBINFO; + } + } + } + } + } + } + break; + case 't': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_TAGLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TAG; + } + } + break; + case 'd': + if (strcmp("es-encrypt-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED; + break; + case 'e': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case '-': + if (strcmp("entropy", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_TEST_ENTROPY; + break; + case '_': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("ntropy", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_ENTROPY; + break; + case 'n': + if (strcmp("once", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_NONCE; + } + } + } + } + break; + case 'h': + if (strcmp("reads", s + 2) == 0) + return PIDX_KDF_PARAM_THREADS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("lient-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION; + break; + case 'd': + if (strcmp("ata-size", s + 5) == 0) + return PIDX_MAC_PARAM_TLS_DATA_SIZE; + break; + case 'g': + switch(s[5]) { + default: + break; + case 'r': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'u': + switch(s[8]) { + default: + break; + case 'p': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'a': + if (strcmp("lg", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_ALG; + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_ID; + } + break; + case 's': + if (strcmp("-kem", s + 12) == 0) + return PIDX_CAPABILITY_TLS_GROUP_IS_KEM; + } + break; + case 'n': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'm': + switch(s[13]) { + default: + break; + case 'e': + switch(s[14]) { + default: + break; + case '-': + if (strcmp("internal", s + 15) == 0) + return PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL; + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_NAME; + } + } + } + } + break; + case 's': + if (strcmp("ec-bits", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case '-': + if (strcmp("size", s + 8) == 0) + return PIDX_CIPHER_PARAM_TLS_MAC_SIZE; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS_MAC; + } + break; + case 'x': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS; + } + } + } + break; + case 'i': + switch(s[6]) { + default: + break; + case 'n': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS; + } + } + } + break; + case 'u': + if (strcmp("lti", s + 6) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK; + } + break; + case 'n': + if (strcmp("egotiated-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION; + break; + case 's': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'a': + switch(s[8]) { + default: + break; + case 'l': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '-': + switch(s[11]) { + default: + break; + case 'c': + if (strcmp("ode-point", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT; + break; + case 'h': + switch(s[12]) { + default: + break; + case 'a': + switch(s[13]) { + default: + break; + case 's': + switch(s[14]) { + default: + break; + case 'h': + switch(s[15]) { + default: + break; + case '-': + switch(s[16]) { + default: + break; + case 'n': + if (strcmp("ame", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME; + break; + case 'o': + if (strcmp("id", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_OID; + } + } + } + } + } + break; + case 'i': + if (strcmp("ana-name", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME; + break; + case 'k': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'y': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case 'y': + switch(s[16]) { + default: + break; + case 'p': + switch(s[17]) { + default: + break; + case 'e': + switch(s[18]) { + default: + break; + case '-': + if (strcmp("oid", s + 19) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID; + break; + case '\0': + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE; + } + } + } + } + } + } + } + break; + case 'n': + if (strcmp("ame", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_NAME; + break; + case 'o': + if (strcmp("id", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_OID; + break; + case 's': + switch(s[12]) { + default: + break; + case 'e': + if (strcmp("c-bits", s + 13) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS; + break; + case 'i': + switch(s[13]) { + default: + break; + case 'g': + switch(s[14]) { + default: + break; + case '-': + switch(s[15]) { + default: + break; + case 'n': + if (strcmp("ame", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME; + break; + case 'o': + if (strcmp("id", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_OID; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'v': + if (strcmp("ersion", s + 5) == 0) + return PIDX_CIPHER_PARAM_TLS_VERSION; + } + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK; + break; + case 'e': + if (strcmp("ms-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK; + } + } + } + } + } + break; + case '3': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'k': + switch(s[7]) { + default: + break; + case 'd': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'u': + switch(s[6]) { + default: + break; + case 'l': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case '_': + switch(s[10]) { + default: + break; + case 'a': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'd': + switch(s[13]) { + default: + break; + case 'p': + if (strcmp("acklen", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD; + } + } + } + break; + case 'e': + switch(s[11]) { + default: + break; + case 'n': + switch(s[12]) { + default: + break; + case 'c': + switch(s[13]) { + default: + break; + case 'i': + if (strcmp("n", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN; + break; + case 'l': + if (strcmp("en", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC; + } + } + } + break; + case 'i': + if (strcmp("nterleave", s + 11) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE; + break; + case 'm': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'x': + switch(s[13]) { + default: + break; + case 'b': + if (strcmp("ufsz", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE; + break; + case 's': + if (strcmp("ndfrag", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT; + } + } + } + } + } + } + } + } + } + } + break; + case 'a': + switch(s[4]) { + default: + break; + case 'a': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'p': + if (strcmp("ad", s + 7) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD; + } + } + } + break; + case 'i': + switch(s[4]) { + default: + break; + case 'v': + switch(s[5]) { + default: + break; + case 'f': + if (strcmp("ixed", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED; + break; + case 'g': + if (strcmp("en", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN; + break; + case 'i': + if (strcmp("nv", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV; + } + } + break; + case 't': + if (strcmp("ree", s + 4) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS; + } + break; + case 'y': + if (strcmp("pe", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_TYPE; + } + break; + case 'u': + switch(s[1]) { + default: + break; + case 'k': + if (strcmp("m", s + 2) == 0) + return PIDX_KDF_PARAM_UKM; + break; + case 'p': + if (strcmp("dated-iv", s + 2) == 0) + return PIDX_CIPHER_PARAM_UPDATED_IV; + break; + case 's': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'b': + if (strcmp("its", s + 5) == 0) + return PIDX_CIPHER_PARAM_USE_BITS; + break; + case 'c': + if (strcmp("ofactor-flag", s + 5) == 0) + return PIDX_PKEY_PARAM_USE_COFACTOR_FLAG; + break; + case 'k': + if (strcmp("eybits", s + 5) == 0) + return PIDX_KDF_PARAM_X942_USE_KEYBITS; + break; + case 'l': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_KBKDF_USE_L; + } + break; + case 's': + if (strcmp("eparator", s + 5) == 0) + return PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR; + } + break; + case '_': + switch(s[4]) { + default: + break; + case 'd': + if (strcmp("erivation_function", s + 5) == 0) + return PIDX_DRBG_PARAM_USE_DF; + break; + case 'e': + if (strcmp("tm", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM; + } + } + } + } + break; + case 'v': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'l': + switch(s[3]) { + default: + break; + case 'i': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_VALIDATE_G; + } + break; + case 'l': + if (strcmp("egacy", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY; + break; + case 'p': + if (strcmp("q", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_PQ; + } + } + } + } + } + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'r': + switch(s[3]) { + default: + break; + case 'i': + if (strcmp("fy-message", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE; + break; + case 's': + if (strcmp("ion", s + 4) == 0) + return PIDX_PROV_PARAM_VERSION; + } + } + } + break; + case 'x': + switch(s[1]) { + default: + break; + case '9': + switch(s[2]) { + default: + break; + case '4': + if (strcmp("2kdf-key-check", s + 3) == 0) + return PIDX_PROV_PARAM_X942KDF_KEY_CHECK; + break; + case '6': + switch(s[3]) { + default: + break; + case '3': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'f': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_KEY_CHECK; + } + } + } + } + } + } + } + break; + case 'c': + if (strcmp("ghash", s + 2) == 0) + return PIDX_KDF_PARAM_SSHKDF_XCGHASH; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_DIGEST_PARAM_XOFLEN; + break; + case '\0': + return PIDX_MAC_PARAM_XOF; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP; + } + break; + case 'q': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ; + } + break; + case 't': + if (strcmp("s_standard", s + 2) == 0) + return PIDX_CIPHER_PARAM_XTS_STANDARD; + } + } + return -1; +} + +/* End of TRIE */ diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/poly1305/poly1305-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/poly1305/poly1305-x86_64.asm index fb3823608c949b..9b026665fe1e89 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/poly1305/poly1305-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/poly1305/poly1305-x86_64.asm @@ -76,6 +76,7 @@ $L$SEH_begin_poly1305_blocks: +DB 243,15,30,250 $L$blocks: shr rdx,4 jz NEAR $L$no_data @@ -196,6 +197,7 @@ $L$SEH_begin_poly1305_emit: +DB 243,15,30,250 $L$emit: mov r8,QWORD[rdi] mov r9,QWORD[8+rdi] @@ -444,6 +446,7 @@ $L$SEH_begin_poly1305_blocks_avx: +DB 243,15,30,250 mov r8d,DWORD[20+rdi] cmp rdx,128 jae NEAR $L$blocks_avx @@ -1300,6 +1303,7 @@ $L$SEH_begin_poly1305_emit_avx: +DB 243,15,30,250 cmp DWORD[20+rdi],0 je NEAR $L$emit @@ -1368,6 +1372,7 @@ $L$SEH_begin_poly1305_blocks_avx2: +DB 243,15,30,250 mov r8d,DWORD[20+rdi] cmp rdx,128 jae NEAR $L$blocks_avx2 @@ -2040,6 +2045,7 @@ $L$SEH_begin_poly1305_blocks_avx512: +DB 243,15,30,250 $L$blocks_avx512: mov eax,15 kmovw k2,eax @@ -2600,6 +2606,7 @@ $L$do_avx512_epilogue: DB 0F3h,0C3h ;repret $L$SEH_end_poly1305_blocks_avx512: +section .rdata rdata align=64 ALIGN 64 $L$const: $L$mask24: @@ -2631,6 +2638,7 @@ $L$x_mask44: $L$x_mask42: DQ 0x3ffffffffff,0x3ffffffffff,0x3ffffffffff,0x3ffffffffff DQ 0x3ffffffffff,0x3ffffffffff,0x3ffffffffff,0x3ffffffffff +section .text DB 80,111,108,121,49,51,48,53,32,102,111,114,32,120,56,54 DB 95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32 DB 98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/sha/keccak1600-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/sha/keccak1600-x86_64.asm index fdab35d95c2f29..69c5eea5b16e80 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/sha/keccak1600-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/sha/keccak1600-x86_64.asm @@ -436,6 +436,7 @@ $L$SEH_begin_SHA3_squeeze: mov rsi,rdx mov rdx,r8 mov rcx,r9 + mov r8,QWORD[40+rsp] @@ -447,10 +448,12 @@ $L$SEH_begin_SHA3_squeeze: shr rcx,3 - mov r8,rdi + mov r9,rdi mov r12,rsi mov r13,rdx mov r14,rcx + bt r8d,0 + jc NEAR $L$next_block jmp NEAR $L$oop_squeeze ALIGN 32 @@ -458,8 +461,8 @@ $L$oop_squeeze: cmp r13,8 jb NEAR $L$tail_squeeze - mov rax,QWORD[r8] - lea r8,[8+r8] + mov rax,QWORD[r9] + lea r9,[8+r9] mov QWORD[r12],rax lea r12,[8+r12] sub r13,8 @@ -467,14 +470,14 @@ $L$oop_squeeze: sub rcx,1 jnz NEAR $L$oop_squeeze - +$L$next_block: call KeccakF1600 - mov r8,rdi + mov r9,rdi mov rcx,r14 jmp NEAR $L$oop_squeeze $L$tail_squeeze: - mov rsi,r8 + mov rsi,r9 mov rdi,r12 mov rcx,r13 DB 0xf3,0xa4 @@ -491,6 +494,7 @@ $L$done_squeeze: DB 0F3h,0C3h ;repret $L$SEH_end_SHA3_squeeze: +section .rdata rdata align=256 ALIGN 256 DQ 0,0,0,0,0,0,0,0 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/sha/sha1-mb-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/sha/sha1-mb-x86_64.asm index 49e6a41c9ce87e..266be0f957c718 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/sha/sha1-mb-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/sha/sha1-mb-x86_64.asm @@ -7419,7 +7419,7 @@ $L$epilogue_avx2: DB 0F3h,0C3h ;repret $L$SEH_end_sha1_multi_block_avx2: - +section .rdata rdata align=256 ALIGN 256 DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999 DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999 @@ -7438,6 +7438,7 @@ DB 32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120 DB 56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77 DB 83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110 DB 115,115,108,46,111,114,103,62,0 +section .text EXTERN __imp_RtlVirtualUnwind ALIGN 16 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/sha/sha1-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/sha/sha1-x86_64.asm index 1b60a7ce75cae0..37fa9a8ee866de 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/sha/sha1-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/sha/sha1-x86_64.asm @@ -5545,6 +5545,7 @@ $L$epilogue_avx2: DB 0F3h,0C3h ;repret $L$SEH_end_sha1_block_data_order_avx2: +section .rdata rdata align=64 ALIGN 64 K_XX_XX: DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999 @@ -5558,6 +5559,7 @@ K_XX_XX: DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f DB 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0 +section .text DB 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115 DB 102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44 DB 32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/sha/sha256-mb-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/sha/sha256-mb-x86_64.asm index 201994b04ca970..bbdbac6b65e1c6 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/sha/sha256-mb-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/sha/sha256-mb-x86_64.asm @@ -7964,6 +7964,7 @@ $L$epilogue_avx2: DB 0F3h,0C3h ;repret $L$SEH_end_sha256_multi_block_avx2: +section .rdata rdata align=256 ALIGN 256 K256: DD 1116352408,1116352408,1116352408,1116352408 @@ -8119,6 +8120,7 @@ DB 99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114 DB 32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71 DB 65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112 DB 101,110,115,115,108,46,111,114,103,62,0 +section .text EXTERN __imp_RtlVirtualUnwind ALIGN 16 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/sha/sha256-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/sha/sha256-x86_64.asm index 9ff3cbb92b5df1..b4a869f67ba116 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/sha/sha256-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/sha/sha256-x86_64.asm @@ -1744,6 +1744,7 @@ $L$epilogue: DB 0F3h,0C3h ;repret $L$SEH_end_sha256_block_data_order: +section .rdata rdata align=64 ALIGN 64 K256: @@ -1791,6 +1792,7 @@ DB 110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54 DB 52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 DB 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 DB 111,114,103,62,0 +section .text ALIGN 64 sha256_block_data_order_shaext: diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/sha/sha512-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/sha/sha512-x86_64.asm index fc2269c8435930..30f1640b5e5d8d 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/sha/sha512-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/sha/sha512-x86_64.asm @@ -1742,6 +1742,7 @@ $L$epilogue: DB 0F3h,0C3h ;repret $L$SEH_end_sha512_block_data_order: +section .rdata rdata align=64 ALIGN 64 K512: @@ -1833,6 +1834,7 @@ DB 110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54 DB 52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 DB 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 DB 111,114,103,62,0 +section .text ALIGN 64 sha512_block_data_order_xop: diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/whrlpool/wp-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/whrlpool/wp-x86_64.asm index 76f7b07678a7ef..6f64ab15115884 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/whrlpool/wp-x86_64.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/whrlpool/wp-x86_64.asm @@ -624,6 +624,7 @@ $L$epilogue: $L$SEH_end_whirlpool_block: +section .rdata rdata align=64 ALIGN 64 $L$table: diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/x86_64cpuid.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/x86_64cpuid.asm index d929065b02cbe9..1b15ab48f01cc6 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/x86_64cpuid.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/x86_64cpuid.asm @@ -2,14 +2,14 @@ default rel %define XMMWORD %define YMMWORD %define ZMMWORD + EXTERN OPENSSL_cpuid_setup section .CRT$XCU rdata align=8 DQ OPENSSL_cpuid_setup -common OPENSSL_ia32cap_P 16 - +common OPENSSL_ia32cap_P 40 section .text code align=64 @@ -175,6 +175,7 @@ $L$generic: mov eax,7 xor ecx,ecx cpuid + movd xmm1,eax bt r9d,26 jc NEAR $L$notknights and ebx,0xfff7ffff @@ -185,9 +186,31 @@ $L$notknights: jne NEAR $L$notskylakex and ebx,0xfffeffff + $L$notskylakex: mov DWORD[8+rdi],ebx mov DWORD[12+rdi],ecx + mov DWORD[16+rdi],edx + + movd eax,xmm1 + cmp eax,0x1 + jb NEAR $L$no_extended_info + mov eax,0x7 + mov ecx,0x1 + cpuid + mov DWORD[20+rdi],eax + mov DWORD[24+rdi],edx + mov DWORD[28+rdi],ebx + mov DWORD[32+rdi],ecx + + and edx,0x80000 + cmp edx,0x0 + je NEAR $L$no_extended_info + mov eax,0x24 + mov ecx,0x0 + cpuid + mov DWORD[36+rdi],ebx + $L$no_extended_info: bt r9d,27 @@ -206,6 +229,9 @@ DB 0x0f,0x01,0xd0 cmp eax,6 je NEAR $L$done $L$clear_avx: + and DWORD[20+rdi],0xff7fffff + + mov eax,0xefffe7ff and r9d,eax mov eax,0x3fdeffdf diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/internal/param_names.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/internal/param_names.h new file mode 100644 index 00000000000000..ec5bff6e31c126 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/internal/param_names.h @@ -0,0 +1,469 @@ +/* + * WARNING: do not edit! + * Generated by makefile from include/internal/param_names.h.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +int ossl_param_find_pidx(const char *s); + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +#define NUM_PIDX 346 + +#define PIDX_ALG_PARAM_ALGORITHM_ID 0 +#define PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS 1 +#define PIDX_ALG_PARAM_CIPHER 2 +#define PIDX_ALG_PARAM_DIGEST 3 +#define PIDX_ALG_PARAM_ENGINE 4 +#define PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR 5 +#define PIDX_ALG_PARAM_MAC 6 +#define PIDX_ALG_PARAM_PROPERTIES 7 +#define PIDX_ASYM_CIPHER_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_ENGINE PIDX_PKEY_PARAM_ENGINE +#define PIDX_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +#define PIDX_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS 9 +#define PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL 10 +#define PIDX_ASYM_CIPHER_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_ASYM_CIPHER_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION 11 +#define PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION 12 +#define PIDX_CAPABILITY_TLS_GROUP_ALG 13 +#define PIDX_CAPABILITY_TLS_GROUP_ID 14 +#define PIDX_CAPABILITY_TLS_GROUP_IS_KEM 15 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_GROUP_NAME 20 +#define PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL 21 +#define PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS 22 +#define PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT 23 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME 24 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_OID 25 +#define PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME 26 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE 27 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID 28 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_SIGALG_NAME 29 +#define PIDX_CAPABILITY_TLS_SIGALG_OID 30 +#define PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS 31 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME 32 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_OID 33 +#define PIDX_CIPHER_PARAM_AEAD 34 +#define PIDX_CIPHER_PARAM_AEAD_IVLEN PIDX_CIPHER_PARAM_IVLEN +#define PIDX_CIPHER_PARAM_AEAD_IV_GENERATED 35 +#define PIDX_CIPHER_PARAM_AEAD_MAC_KEY 36 +#define PIDX_CIPHER_PARAM_AEAD_TAG 37 +#define PIDX_CIPHER_PARAM_AEAD_TAGLEN 38 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD 39 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD 40 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN 41 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED 42 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV 43 +#define PIDX_CIPHER_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD 44 +#define PIDX_CIPHER_PARAM_BLOCK_SIZE 45 +#define PIDX_CIPHER_PARAM_CTS 46 +#define PIDX_CIPHER_PARAM_CTS_MODE 47 +#define PIDX_CIPHER_PARAM_CUSTOM_IV 48 +#define PIDX_CIPHER_PARAM_DECRYPT_ONLY 49 +#define PIDX_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK 50 +#define PIDX_CIPHER_PARAM_HAS_RAND_KEY 51 +#define PIDX_CIPHER_PARAM_IV 52 +#define PIDX_CIPHER_PARAM_IVLEN 53 +#define PIDX_CIPHER_PARAM_KEYLEN 54 +#define PIDX_CIPHER_PARAM_MODE 55 +#define PIDX_CIPHER_PARAM_NUM 56 +#define PIDX_CIPHER_PARAM_PADDING 57 +#define PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG 58 +#define PIDX_CIPHER_PARAM_RANDOM_KEY 59 +#define PIDX_CIPHER_PARAM_RC2_KEYBITS 60 +#define PIDX_CIPHER_PARAM_ROUNDS 61 +#define PIDX_CIPHER_PARAM_SPEED 62 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK 63 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD 64 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN 65 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC 66 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN 67 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN 68 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE 69 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE 70 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT 71 +#define PIDX_CIPHER_PARAM_TLS_MAC 72 +#define PIDX_CIPHER_PARAM_TLS_MAC_SIZE 73 +#define PIDX_CIPHER_PARAM_TLS_VERSION 74 +#define PIDX_CIPHER_PARAM_UPDATED_IV 75 +#define PIDX_CIPHER_PARAM_USE_BITS 76 +#define PIDX_CIPHER_PARAM_XTS_STANDARD 77 +#define PIDX_DECODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DIGEST_PARAM_ALGID_ABSENT 78 +#define PIDX_DIGEST_PARAM_BLOCK_SIZE 45 +#define PIDX_DIGEST_PARAM_MICALG 79 +#define PIDX_DIGEST_PARAM_PAD_TYPE 80 +#define PIDX_DIGEST_PARAM_SIZE 81 +#define PIDX_DIGEST_PARAM_SSL3_MS 82 +#define PIDX_DIGEST_PARAM_XOF 83 +#define PIDX_DIGEST_PARAM_XOFLEN 84 +#define PIDX_DRBG_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_DRBG_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_DRBG_PARAM_ENTROPY_REQUIRED 85 +#define PIDX_DRBG_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_DRBG_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_DRBG_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_DRBG_PARAM_MAX_ADINLEN 86 +#define PIDX_DRBG_PARAM_MAX_ENTROPYLEN 87 +#define PIDX_DRBG_PARAM_MAX_LENGTH 88 +#define PIDX_DRBG_PARAM_MAX_NONCELEN 89 +#define PIDX_DRBG_PARAM_MAX_PERSLEN 90 +#define PIDX_DRBG_PARAM_MIN_ENTROPYLEN 91 +#define PIDX_DRBG_PARAM_MIN_LENGTH 92 +#define PIDX_DRBG_PARAM_MIN_NONCELEN 93 +#define PIDX_DRBG_PARAM_PREDICTION_RESISTANCE 94 +#define PIDX_DRBG_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DRBG_PARAM_RANDOM_DATA 95 +#define PIDX_DRBG_PARAM_RESEED_COUNTER 96 +#define PIDX_DRBG_PARAM_RESEED_REQUESTS 97 +#define PIDX_DRBG_PARAM_RESEED_TIME 98 +#define PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL 99 +#define PIDX_DRBG_PARAM_SIZE 81 +#define PIDX_DRBG_PARAM_USE_DF 100 +#define PIDX_ENCODER_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_ENCODER_PARAM_ENCRYPT_LEVEL 101 +#define PIDX_ENCODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_ENCODER_PARAM_SAVE_PARAMETERS 102 +#define PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE 103 +#define PIDX_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_EXCHANGE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST 104 +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS 105 +#define PIDX_EXCHANGE_PARAM_KDF_OUTLEN 106 +#define PIDX_EXCHANGE_PARAM_KDF_TYPE 107 +#define PIDX_EXCHANGE_PARAM_KDF_UKM 108 +#define PIDX_EXCHANGE_PARAM_PAD 109 +#define PIDX_GEN_PARAM_ITERATION 110 +#define PIDX_GEN_PARAM_POTENTIAL 111 +#define PIDX_KDF_PARAM_ARGON2_AD 112 +#define PIDX_KDF_PARAM_ARGON2_LANES 113 +#define PIDX_KDF_PARAM_ARGON2_MEMCOST 114 +#define PIDX_KDF_PARAM_ARGON2_VERSION 115 +#define PIDX_KDF_PARAM_CEK_ALG 116 +#define PIDX_KDF_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_KDF_PARAM_CONSTANT 117 +#define PIDX_KDF_PARAM_DATA 118 +#define PIDX_KDF_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_KDF_PARAM_EARLY_CLEAN 119 +#define PIDX_KDF_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KDF_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_KDF_PARAM_FIPS_EMS_CHECK 120 +#define PIDX_KDF_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KDF_PARAM_HMACDRBG_ENTROPY 121 +#define PIDX_KDF_PARAM_HMACDRBG_NONCE 122 +#define PIDX_KDF_PARAM_INFO 123 +#define PIDX_KDF_PARAM_ITER 124 +#define PIDX_KDF_PARAM_KBKDF_R 125 +#define PIDX_KDF_PARAM_KBKDF_USE_L 126 +#define PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR 127 +#define PIDX_KDF_PARAM_KEY 128 +#define PIDX_KDF_PARAM_LABEL 129 +#define PIDX_KDF_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_KDF_PARAM_MAC_SIZE 130 +#define PIDX_KDF_PARAM_MODE 55 +#define PIDX_KDF_PARAM_PASSWORD 131 +#define PIDX_KDF_PARAM_PKCS12_ID 132 +#define PIDX_KDF_PARAM_PKCS5 133 +#define PIDX_KDF_PARAM_PREFIX 134 +#define PIDX_KDF_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_KDF_PARAM_SALT 135 +#define PIDX_KDF_PARAM_SCRYPT_MAXMEM 136 +#define PIDX_KDF_PARAM_SCRYPT_N 137 +#define PIDX_KDF_PARAM_SCRYPT_P 138 +#define PIDX_KDF_PARAM_SCRYPT_R 125 +#define PIDX_KDF_PARAM_SECRET 139 +#define PIDX_KDF_PARAM_SEED 140 +#define PIDX_KDF_PARAM_SIZE 81 +#define PIDX_KDF_PARAM_SSHKDF_SESSION_ID 141 +#define PIDX_KDF_PARAM_SSHKDF_TYPE 142 +#define PIDX_KDF_PARAM_SSHKDF_XCGHASH 143 +#define PIDX_KDF_PARAM_THREADS 144 +#define PIDX_KDF_PARAM_UKM 145 +#define PIDX_KDF_PARAM_X942_ACVPINFO 146 +#define PIDX_KDF_PARAM_X942_PARTYUINFO 147 +#define PIDX_KDF_PARAM_X942_PARTYVINFO 148 +#define PIDX_KDF_PARAM_X942_SUPP_PRIVINFO 149 +#define PIDX_KDF_PARAM_X942_SUPP_PUBINFO 150 +#define PIDX_KDF_PARAM_X942_USE_KEYBITS 151 +#define PIDX_KEM_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KEM_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KEM_PARAM_IKME 152 +#define PIDX_KEM_PARAM_OPERATION 153 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING 154 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING 155 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA 156 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN 157 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE 55 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS 158 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD 159 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC 160 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE 161 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM 162 +#define PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN 163 +#define PIDX_MAC_PARAM_BLOCK_SIZE 164 +#define PIDX_MAC_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_MAC_PARAM_CUSTOM 165 +#define PIDX_MAC_PARAM_C_ROUNDS 166 +#define PIDX_MAC_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_MAC_PARAM_DIGEST_NOINIT 167 +#define PIDX_MAC_PARAM_DIGEST_ONESHOT 168 +#define PIDX_MAC_PARAM_D_ROUNDS 169 +#define PIDX_MAC_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_MAC_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_MAC_PARAM_FIPS_NO_SHORT_MAC PIDX_PROV_PARAM_NO_SHORT_MAC +#define PIDX_MAC_PARAM_IV 52 +#define PIDX_MAC_PARAM_KEY 128 +#define PIDX_MAC_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_MAC_PARAM_SALT 135 +#define PIDX_MAC_PARAM_SIZE 81 +#define PIDX_MAC_PARAM_TLS_DATA_SIZE 170 +#define PIDX_MAC_PARAM_XOF 83 +#define PIDX_OBJECT_PARAM_DATA 118 +#define PIDX_OBJECT_PARAM_DATA_STRUCTURE 171 +#define PIDX_OBJECT_PARAM_DATA_TYPE 172 +#define PIDX_OBJECT_PARAM_DESC 173 +#define PIDX_OBJECT_PARAM_INPUT_TYPE 174 +#define PIDX_OBJECT_PARAM_REFERENCE 175 +#define PIDX_OBJECT_PARAM_TYPE 142 +#define PIDX_PASSPHRASE_PARAM_INFO 123 +#define PIDX_PKEY_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_PKEY_PARAM_BITS 176 +#define PIDX_PKEY_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_PKEY_PARAM_DEFAULT_DIGEST 177 +#define PIDX_PKEY_PARAM_DHKEM_IKM 178 +#define PIDX_PKEY_PARAM_DH_GENERATOR 179 +#define PIDX_PKEY_PARAM_DH_PRIV_LEN 180 +#define PIDX_PKEY_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_PKEY_PARAM_DIGEST_SIZE 181 +#define PIDX_PKEY_PARAM_DIST_ID 182 +#define PIDX_PKEY_PARAM_EC_A 183 +#define PIDX_PKEY_PARAM_EC_B 184 +#define PIDX_PKEY_PARAM_EC_CHAR2_M 185 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K1 186 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K2 187 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K3 188 +#define PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS 189 +#define PIDX_PKEY_PARAM_EC_CHAR2_TYPE 190 +#define PIDX_PKEY_PARAM_EC_COFACTOR 191 +#define PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS 192 +#define PIDX_PKEY_PARAM_EC_ENCODING 193 +#define PIDX_PKEY_PARAM_EC_FIELD_TYPE 194 +#define PIDX_PKEY_PARAM_EC_GENERATOR 195 +#define PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE 196 +#define PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC 197 +#define PIDX_PKEY_PARAM_EC_ORDER 198 +#define PIDX_PKEY_PARAM_EC_P 138 +#define PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT 199 +#define PIDX_PKEY_PARAM_EC_PUB_X 200 +#define PIDX_PKEY_PARAM_EC_PUB_Y 201 +#define PIDX_PKEY_PARAM_EC_SEED 140 +#define PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY 202 +#define PIDX_PKEY_PARAM_ENGINE PIDX_ALG_PARAM_ENGINE +#define PIDX_PKEY_PARAM_FFC_COFACTOR 203 +#define PIDX_PKEY_PARAM_FFC_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_FFC_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_FFC_G 204 +#define PIDX_PKEY_PARAM_FFC_GINDEX 205 +#define PIDX_PKEY_PARAM_FFC_H 206 +#define PIDX_PKEY_PARAM_FFC_P 138 +#define PIDX_PKEY_PARAM_FFC_PBITS 207 +#define PIDX_PKEY_PARAM_FFC_PCOUNTER 208 +#define PIDX_PKEY_PARAM_FFC_Q 209 +#define PIDX_PKEY_PARAM_FFC_QBITS 210 +#define PIDX_PKEY_PARAM_FFC_SEED 140 +#define PIDX_PKEY_PARAM_FFC_TYPE 142 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_G 211 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY 212 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_PQ 213 +#define PIDX_PKEY_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK 214 +#define PIDX_PKEY_PARAM_FIPS_KEY_CHECK 215 +#define PIDX_PKEY_PARAM_FIPS_SIGN_CHECK 216 +#define PIDX_PKEY_PARAM_GROUP_NAME 217 +#define PIDX_PKEY_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_PKEY_PARAM_MANDATORY_DIGEST 218 +#define PIDX_PKEY_PARAM_MASKGENFUNC 219 +#define PIDX_PKEY_PARAM_MAX_SIZE 220 +#define PIDX_PKEY_PARAM_MGF1_DIGEST 221 +#define PIDX_PKEY_PARAM_MGF1_PROPERTIES 222 +#define PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS 223 +#define PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS 224 +#define PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED 225 +#define PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED 226 +#define PIDX_PKEY_PARAM_ML_DSA_SEED 140 +#define PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE 227 +#define PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS 228 +#define PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS 229 +#define PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED 230 +#define PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED 231 +#define PIDX_PKEY_PARAM_ML_KEM_SEED 140 +#define PIDX_PKEY_PARAM_PAD_MODE 232 +#define PIDX_PKEY_PARAM_PRIV_KEY 233 +#define PIDX_PKEY_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_PUB_KEY 234 +#define PIDX_PKEY_PARAM_RSA_BITS PIDX_PKEY_PARAM_BITS +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT 235 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT1 236 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT2 237 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT3 238 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT4 239 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT5 240 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT6 241 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT7 242 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT8 243 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT9 244 +#define PIDX_PKEY_PARAM_RSA_D 245 +#define PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ 246 +#define PIDX_PKEY_PARAM_RSA_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_RSA_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_RSA_E 247 +#define PIDX_PKEY_PARAM_RSA_EXPONENT 248 +#define PIDX_PKEY_PARAM_RSA_EXPONENT1 249 +#define PIDX_PKEY_PARAM_RSA_EXPONENT10 250 +#define PIDX_PKEY_PARAM_RSA_EXPONENT2 251 +#define PIDX_PKEY_PARAM_RSA_EXPONENT3 252 +#define PIDX_PKEY_PARAM_RSA_EXPONENT4 253 +#define PIDX_PKEY_PARAM_RSA_EXPONENT5 254 +#define PIDX_PKEY_PARAM_RSA_EXPONENT6 255 +#define PIDX_PKEY_PARAM_RSA_EXPONENT7 256 +#define PIDX_PKEY_PARAM_RSA_EXPONENT8 257 +#define PIDX_PKEY_PARAM_RSA_EXPONENT9 258 +#define PIDX_PKEY_PARAM_RSA_FACTOR 259 +#define PIDX_PKEY_PARAM_RSA_FACTOR1 260 +#define PIDX_PKEY_PARAM_RSA_FACTOR10 261 +#define PIDX_PKEY_PARAM_RSA_FACTOR2 262 +#define PIDX_PKEY_PARAM_RSA_FACTOR3 263 +#define PIDX_PKEY_PARAM_RSA_FACTOR4 264 +#define PIDX_PKEY_PARAM_RSA_FACTOR5 265 +#define PIDX_PKEY_PARAM_RSA_FACTOR6 266 +#define PIDX_PKEY_PARAM_RSA_FACTOR7 267 +#define PIDX_PKEY_PARAM_RSA_FACTOR8 268 +#define PIDX_PKEY_PARAM_RSA_FACTOR9 269 +#define PIDX_PKEY_PARAM_RSA_MASKGENFUNC PIDX_PKEY_PARAM_MASKGENFUNC +#define PIDX_PKEY_PARAM_RSA_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_PKEY_PARAM_RSA_N 137 +#define PIDX_PKEY_PARAM_RSA_PRIMES 270 +#define PIDX_PKEY_PARAM_RSA_PSS_SALTLEN 271 +#define PIDX_PKEY_PARAM_RSA_TEST_P1 272 +#define PIDX_PKEY_PARAM_RSA_TEST_P2 273 +#define PIDX_PKEY_PARAM_RSA_TEST_Q1 274 +#define PIDX_PKEY_PARAM_RSA_TEST_Q2 275 +#define PIDX_PKEY_PARAM_RSA_TEST_XP 276 +#define PIDX_PKEY_PARAM_RSA_TEST_XP1 277 +#define PIDX_PKEY_PARAM_RSA_TEST_XP2 278 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ 279 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ1 280 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ2 281 +#define PIDX_PKEY_PARAM_SECURITY_BITS 282 +#define PIDX_PKEY_PARAM_SLH_DSA_SEED 140 +#define PIDX_PKEY_PARAM_USE_COFACTOR_ECDH PIDX_PKEY_PARAM_USE_COFACTOR_FLAG +#define PIDX_PKEY_PARAM_USE_COFACTOR_FLAG 283 +#define PIDX_PROV_PARAM_BUILDINFO 284 +#define PIDX_PROV_PARAM_CORE_MODULE_FILENAME 285 +#define PIDX_PROV_PARAM_CORE_PROV_NAME 286 +#define PIDX_PROV_PARAM_CORE_VERSION 287 +#define PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST 288 +#define PIDX_PROV_PARAM_DSA_SIGN_DISABLED 289 +#define PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK 290 +#define PIDX_PROV_PARAM_HKDF_DIGEST_CHECK 291 +#define PIDX_PROV_PARAM_HKDF_KEY_CHECK 292 +#define PIDX_PROV_PARAM_HMAC_KEY_CHECK 293 +#define PIDX_PROV_PARAM_KBKDF_KEY_CHECK 294 +#define PIDX_PROV_PARAM_KMAC_KEY_CHECK 295 +#define PIDX_PROV_PARAM_NAME 296 +#define PIDX_PROV_PARAM_NO_SHORT_MAC 297 +#define PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK 298 +#define PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED 299 +#define PIDX_PROV_PARAM_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED 301 +#define PIDX_PROV_PARAM_SECURITY_CHECKS 302 +#define PIDX_PROV_PARAM_SELF_TEST_DESC 303 +#define PIDX_PROV_PARAM_SELF_TEST_PHASE 304 +#define PIDX_PROV_PARAM_SELF_TEST_TYPE 305 +#define PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK 306 +#define PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK 307 +#define PIDX_PROV_PARAM_SSHKDF_KEY_CHECK 308 +#define PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK 309 +#define PIDX_PROV_PARAM_SSKDF_KEY_CHECK 310 +#define PIDX_PROV_PARAM_STATUS 311 +#define PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED 312 +#define PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK 313 +#define PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK 314 +#define PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK 315 +#define PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK 316 +#define PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK 317 +#define PIDX_PROV_PARAM_VERSION 115 +#define PIDX_PROV_PARAM_X942KDF_KEY_CHECK 318 +#define PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK 319 +#define PIDX_PROV_PARAM_X963KDF_KEY_CHECK 320 +#define PIDX_RAND_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_RAND_PARAM_GENERATE 321 +#define PIDX_RAND_PARAM_MAX_REQUEST 322 +#define PIDX_RAND_PARAM_STATE 323 +#define PIDX_RAND_PARAM_STRENGTH 324 +#define PIDX_RAND_PARAM_TEST_ENTROPY 325 +#define PIDX_RAND_PARAM_TEST_NONCE 326 +#define PIDX_SIGNATURE_PARAM_ADD_RANDOM 327 +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID PIDX_PKEY_PARAM_ALGORITHM_ID +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_SIGNATURE_PARAM_CONTEXT_STRING 328 +#define PIDX_SIGNATURE_PARAM_DETERMINISTIC 329 +#define PIDX_SIGNATURE_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_SIGNATURE_PARAM_DIGEST_SIZE PIDX_PKEY_PARAM_DIGEST_SIZE +#define PIDX_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_SIGNATURE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_CHECK PIDX_PKEY_PARAM_FIPS_SIGN_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK 330 +#define PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE 331 +#define PIDX_SIGNATURE_PARAM_INSTANCE 332 +#define PIDX_SIGNATURE_PARAM_KAT 333 +#define PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING 334 +#define PIDX_SIGNATURE_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_SIGNATURE_PARAM_MGF1_PROPERTIES PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_SIGNATURE_PARAM_MU 335 +#define PIDX_SIGNATURE_PARAM_NONCE_TYPE 336 +#define PIDX_SIGNATURE_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_SIGNATURE_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_SIGNATURE_PARAM_PSS_SALTLEN 271 +#define PIDX_SIGNATURE_PARAM_SIGNATURE 337 +#define PIDX_SIGNATURE_PARAM_TEST_ENTROPY 338 +#define PIDX_SKEY_PARAM_KEY_LENGTH 339 +#define PIDX_SKEY_PARAM_RAW_BYTES 340 +#define PIDX_STORE_PARAM_ALIAS 341 +#define PIDX_STORE_PARAM_DIGEST 3 +#define PIDX_STORE_PARAM_EXPECT 342 +#define PIDX_STORE_PARAM_FINGERPRINT 343 +#define PIDX_STORE_PARAM_INPUT_TYPE 174 +#define PIDX_STORE_PARAM_ISSUER 296 +#define PIDX_STORE_PARAM_PROPERTIES 7 +#define PIDX_STORE_PARAM_SERIAL 344 +#define PIDX_STORE_PARAM_SUBJECT 345 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/asn1.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/asn1.h index e28efbbb718e2b..5129217b2e0977 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/asn1.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/asn1.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/asn1.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -21,6 +21,9 @@ # define HEADER_ASN1_H # endif +# ifndef OPENSSL_NO_STDIO +# include +# endif # include # include # include @@ -50,14 +53,14 @@ extern "C" { # define V_ASN1_PRIMITIVE_TAG 0x1f # define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG -# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ -# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ -# define V_ASN1_ANY -4/* used in ASN1 template code */ +# define V_ASN1_APP_CHOOSE -2 /* let the recipient choose */ +# define V_ASN1_OTHER -3 /* used in ASN1_TYPE */ +# define V_ASN1_ANY -4 /* used in ASN1 template code */ # define V_ASN1_UNDEF -1 /* ASN.1 tag values */ # define V_ASN1_EOC 0 -# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_BOOLEAN 1 # define V_ASN1_INTEGER 2 # define V_ASN1_BIT_STRING 3 # define V_ASN1_OCTET_STRING 4 @@ -70,19 +73,19 @@ extern "C" { # define V_ASN1_UTF8STRING 12 # define V_ASN1_SEQUENCE 16 # define V_ASN1_SET 17 -# define V_ASN1_NUMERICSTRING 18 /**/ +# define V_ASN1_NUMERICSTRING 18 # define V_ASN1_PRINTABLESTRING 19 # define V_ASN1_T61STRING 20 -# define V_ASN1_TELETEXSTRING 20/* alias */ -# define V_ASN1_VIDEOTEXSTRING 21 /**/ +# define V_ASN1_TELETEXSTRING 20 /* alias */ +# define V_ASN1_VIDEOTEXSTRING 21 # define V_ASN1_IA5STRING 22 # define V_ASN1_UTCTIME 23 -# define V_ASN1_GENERALIZEDTIME 24 /**/ -# define V_ASN1_GRAPHICSTRING 25 /**/ -# define V_ASN1_ISO64STRING 26 /**/ -# define V_ASN1_VISIBLESTRING 26/* alias */ -# define V_ASN1_GENERALSTRING 27 /**/ -# define V_ASN1_UNIVERSALSTRING 28 /**/ +# define V_ASN1_GENERALIZEDTIME 24 +# define V_ASN1_GRAPHICSTRING 25 +# define V_ASN1_ISO64STRING 26 +# define V_ASN1_VISIBLESTRING 26 /* alias */ +# define V_ASN1_GENERALSTRING 27 +# define V_ASN1_UNIVERSALSTRING 28 # define V_ASN1_BMPSTRING 30 /* @@ -155,7 +158,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) -# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +# define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */ /* * This indicates that the ASN1_STRING is not a real value but just a place * holder for the location where indefinite length constructed data should be @@ -275,7 +278,7 @@ typedef struct ASN1_TLC_st ASN1_TLC; /* This is just an opaque pointer */ typedef struct ASN1_VALUE_st ASN1_VALUE; -/* Declare ASN1 functions: the implement macro in in asn1t.h */ +/* Declare ASN1 functions: the implement macro is in asn1t.h */ /* * The mysterious 'extern' that's passed to some macros is innocuous, @@ -368,6 +371,7 @@ typedef struct ASN1_VALUE_st ASN1_VALUE; typedef void *d2i_of_void(void **, const unsigned char **, long); typedef int i2d_of_void(const void *, unsigned char **); +typedef int OSSL_i2d_of_void_ctx(const void *, unsigned char **, void *vctx); /*- * The following macros and typedefs allow an ASN1_ITEM @@ -996,6 +1000,8 @@ int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, unsigned char *data, int max_len); void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/bio.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/bio.h index d094af47b73f1c..be24d086a54013 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/bio.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/bio.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/bio.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -67,8 +67,13 @@ extern "C" { # define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) # endif # define BIO_TYPE_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_PAIR (26|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_MEM (27|BIO_TYPE_SOURCE_SINK) +/* Custom type starting index returned by BIO_get_new_index() */ #define BIO_TYPE_START 128 +/* Custom type maximum index that can be returned by BIO_get_new_index() */ +#define BIO_TYPE_MASK 0xFF /* * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. @@ -171,6 +176,31 @@ extern "C" { # define BIO_CTRL_SET_INDENT 80 # define BIO_CTRL_GET_INDENT 81 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +# define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +# define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +# define BIO_CTRL_DGRAM_GET_CAPS 86 +# define BIO_CTRL_DGRAM_SET_CAPS 87 +# define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +# define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +# define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +# define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +# define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 +# define BIO_CTRL_DGRAM_SET0_LOCAL_ADDR 94 + +# define BIO_DGRAM_CAP_NONE 0U +# define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +# define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +# define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +# define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + # ifndef OPENSSL_NO_KTLS # define BIO_get_ktls_send(b) \ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) @@ -208,7 +238,7 @@ extern "C" { # define BIO_FLAGS_NONCLEAR_RST 0x400 # define BIO_FLAGS_IN_EOF 0x800 -/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */ +/* the BIO FLAGS values 0x1000 to 0x8000 are reserved for internal KTLS flags */ typedef union bio_addr_st BIO_ADDR; typedef struct bio_addrinfo_st BIO_ADDRINFO; @@ -256,12 +286,14 @@ void BIO_clear_flags(BIO *b, int flags); # define BIO_RR_ACCEPT 0x03 /* These are passed by the BIO callback */ -# define BIO_CB_FREE 0x01 -# define BIO_CB_READ 0x02 -# define BIO_CB_WRITE 0x03 -# define BIO_CB_PUTS 0x04 -# define BIO_CB_GETS 0x05 -# define BIO_CB_CTRL 0x06 +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 +# define BIO_CB_RECVMMSG 0x07 +# define BIO_CB_SENDMMSG 0x08 /* * The callback is called before and after the underling operation, The @@ -362,6 +394,36 @@ struct bio_dgram_sctp_prinfo { }; # endif +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_TYPE_SSL 2 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + SSL *ssl; + } value; +} BIO_POLL_DESCRIPTOR; + /* * #define BIO_CONN_get_param_hostname BIO_ctrl */ @@ -428,10 +490,17 @@ struct bio_dgram_sctp_prinfo { # define BIO_C_SET_CONNECT_MODE 155 +# define BIO_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +# define BIO_C_SET_SOCK_TYPE 157 +# define BIO_C_GET_SOCK_TYPE 158 +# define BIO_C_GET_DGRAM_BIO 159 + # define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) # define BIO_get_app_data(s) BIO_get_ex_data(s,0) -# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_tfo(b,n) BIO_ctrl(b,BIO_C_SET_TFO,(n),NULL) # ifndef OPENSSL_NO_SOCK /* IP families we support, for BIO_s_connect() and BIO_s_accept() */ @@ -452,7 +521,11 @@ struct bio_dgram_sctp_prinfo { # define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) # define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) # define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_get_conn_mode(b) BIO_ctrl(b,BIO_C_GET_CONNECT,4,NULL) # define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) +# define BIO_set_sock_type(b,t) BIO_ctrl(b,BIO_C_SET_SOCK_TYPE,(t),NULL) +# define BIO_get_sock_type(b) BIO_ctrl(b,BIO_C_GET_SOCK_TYPE,0,NULL) +# define BIO_get0_dgram_bio(b, p) BIO_ctrl(b,BIO_C_GET_DGRAM_BIO,0,(void *)(BIO **)(p)) /* BIO_s_accept() */ # define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ @@ -469,6 +542,7 @@ struct bio_dgram_sctp_prinfo { (char *)(bio)) # define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) # define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) +# define BIO_set_tfo_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,5,(n)?(void *)"a":NULL) /* Aliases kept for backward compatibility */ # define BIO_BIND_NORMAL 0 @@ -596,8 +670,32 @@ int BIO_ctrl_reset_read_request(BIO *b); (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) # define BIO_dgram_set_peer(b,peer) \ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_detect_peer_addr(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) # define BIO_dgram_get_mtu_overhead(b) \ (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +# define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +# define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +# define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +# define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +# define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +# define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +# define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +# define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +# define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +# define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) +# define BIO_dgram_set0_local_addr(b, addr) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET0_LOCAL_ADDR, 0, (addr)) /* ctrl macros for BIO_f_prefix */ # define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) @@ -640,10 +738,18 @@ void BIO_vfree(BIO *a); int BIO_up_ref(BIO *a); int BIO_read(BIO *b, void *data, int dlen); int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); int BIO_gets(BIO *bp, char *buf, int size); int BIO_get_line(BIO *bio, char *buf, int size); int BIO_write(BIO *b, const void *data, int dlen); int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); int BIO_puts(BIO *bp, const char *buf); int BIO_indent(BIO *b, int indent, int max); long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); @@ -667,6 +773,9 @@ int BIO_nwrite0(BIO *bio, char **buf); int BIO_nwrite(BIO *bio, char **buf, int num); const BIO_METHOD *BIO_s_mem(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +# endif const BIO_METHOD *BIO_s_secmem(void); BIO *BIO_new_mem_buf(const void *buf, int len); # ifndef OPENSSL_NO_SOCK @@ -686,6 +795,7 @@ const BIO_METHOD *BIO_f_nbio_test(void); const BIO_METHOD *BIO_f_prefix(void); const BIO_METHOD *BIO_s_core(void); # ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_pair(void); const BIO_METHOD *BIO_s_datagram(void); int BIO_dgram_non_fatal_error(int error); BIO *BIO_new_dgram(int fd, int close_flag); @@ -704,6 +814,7 @@ int BIO_dgram_sctp_msg_waiting(BIO *b); # ifndef OPENSSL_NO_SOCK int BIO_sock_should_retry(int i); int BIO_sock_non_fatal_error(int error); +int BIO_err_is_non_fatal(unsigned int errcode); int BIO_socket_wait(int fd, int for_read, time_t max_time); # endif int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); @@ -726,6 +837,8 @@ int BIO_hex_string(BIO *out, int indent, int width, const void *data, # ifndef OPENSSL_NO_SOCK BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, const void *where, size_t wherelen, unsigned short port); void BIO_ADDR_free(BIO_ADDR *); @@ -788,6 +901,7 @@ int BIO_sock_info(int sock, # define BIO_SOCK_KEEPALIVE 0x04 # define BIO_SOCK_NONBLOCK 0x08 # define BIO_SOCK_NODELAY 0x10 +# define BIO_SOCK_TFO 0x20 int BIO_socket(int domain, int socktype, int protocol, int options); int BIO_connect(int sock, const BIO_ADDR *addr, int options); @@ -805,6 +919,11 @@ BIO *BIO_new_fd(int fd, int close_flag); int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, BIO **bio2, size_t writebuf2); +# ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +# endif + /* * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default @@ -849,38 +968,54 @@ ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); BIO_METHOD *BIO_meth_new(int type, const char *name); void BIO_meth_free(BIO_METHOD *biom); -int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int); -int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t, - size_t *); int BIO_meth_set_write(BIO_METHOD *biom, int (*write) (BIO *, const char *, int)); int BIO_meth_set_write_ex(BIO_METHOD *biom, int (*bwrite) (BIO *, const char *, size_t, size_t *)); -int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); -int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); +int BIO_meth_set_sendmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_read(BIO_METHOD *biom, int (*read) (BIO *, char *, int)); int BIO_meth_set_read_ex(BIO_METHOD *biom, int (*bread) (BIO *, char *, size_t, size_t *)); -int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +int BIO_meth_set_recvmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_puts(BIO_METHOD *biom, int (*puts) (BIO *, const char *)); -int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); int BIO_meth_set_gets(BIO_METHOD *biom, int (*ossl_gets) (BIO *, char *, int)); -long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); int BIO_meth_set_ctrl(BIO_METHOD *biom, long (*ctrl) (BIO *, int, long, void *)); -int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); -int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); -long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) - (BIO *, int, BIO_info_cb *); int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, long (*callback_ctrl) (BIO *, int, BIO_info_cb *)); - +# ifndef OPENSSL_NO_DEPRECATED_3_5 +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, + int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, + long, void *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) (BIO *, int, + BIO_info_cb *); +# endif # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/cmp.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/cmp.h index f0e768e01baacd..ded2dd2905f756 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/cmp.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/cmp.h.in * - * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -35,7 +35,9 @@ extern "C" { # endif -# define OSSL_CMP_PVNO 2 +# define OSSL_CMP_PVNO_2 2 +# define OSSL_CMP_PVNO_3 3 +# define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ /*- * PKIFailureInfo ::= BIT STRING { @@ -137,7 +139,6 @@ extern "C" { # if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX # error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int # endif - typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) @@ -203,8 +204,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_PKISTATUS_revocationWarning 4 # define OSSL_CMP_PKISTATUS_revocationNotification 5 # define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 - typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; + DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) # define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 @@ -274,6 +275,46 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) #define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) #define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) + +typedef struct ossl_cmp_crlstatus_st OSSL_CMP_CRLSTATUS; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS) +#define sk_OSSL_CMP_CRLSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_value(sk, idx) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CRLSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CRLSTATUS_new_null() ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CRLSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CRLSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CRLSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_delete(sk, i) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CRLSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_pop(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_shift(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CRLSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CRLSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CRLSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CRLSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CRLSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) + + +typedef OSSL_CRMF_ATTRIBUTETYPEANDVALUE OSSL_CMP_ATAV; +# define OSSL_CMP_ATAV_free OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free +typedef STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) OSSL_CMP_ATAVS; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_ATAVS) +# define stack_st_OSSL_CMP_ATAV stack_st_OSSL_CRMF_ATTRIBUTETYPEANDVALUE +# define sk_OSSL_CMP_ATAV_num sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num +# define sk_OSSL_CMP_ATAV_value sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value +# define sk_OSSL_CMP_ATAV_push sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push +# define sk_OSSL_CMP_ATAV_pop_free sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free + typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT; typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI; DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI) @@ -375,21 +416,75 @@ void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type, ASN1_TYPE *value); ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav); ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); -int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p, +int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **sk_p, OSSL_CMP_ITAV *itav); void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new0_certProfile(STACK_OF(ASN1_UTF8STRING) + *certProfile); +int OSSL_CMP_ITAV_get0_certProfile(const OSSL_CMP_ITAV *itav, + STACK_OF(ASN1_UTF8STRING) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_create(const X509_CRL *crl, + const X509 *cert, int only_DN); +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_new1(const DIST_POINT_NAME *dpn, + const GENERAL_NAMES *issuer, + const ASN1_TIME *thisUpdate); +int OSSL_CMP_CRLSTATUS_get0(const OSSL_CMP_CRLSTATUS *crlstatus, + DIST_POINT_NAME **dpn, GENERAL_NAMES **issuer, + ASN1_TIME **thisUpdate); +void OSSL_CMP_CRLSTATUS_free(OSSL_CMP_CRLSTATUS *crlstatus); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_crlStatusList(STACK_OF(OSSL_CMP_CRLSTATUS) *crlStatusList); +int OSSL_CMP_ITAV_get0_crlStatusList(const OSSL_CMP_ITAV *itav, + STACK_OF(OSSL_CMP_CRLSTATUS) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_crls(const X509_CRL *crls); +int OSSL_CMP_ITAV_get0_crls(const OSSL_CMP_ITAV *it, STACK_OF(X509_CRL) **out); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_certReqTemplate(OSSL_CRMF_CERTTEMPLATE *certTemplate, + OSSL_CMP_ATAVS *keySpec); +int OSSL_CMP_ITAV_get1_certReqTemplate(const OSSL_CMP_ITAV *itav, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +OSSL_CMP_ATAV *OSSL_CMP_ATAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ATAV_set0(OSSL_CMP_ATAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ATAV_get0_type(const OSSL_CMP_ATAV *itav); +ASN1_TYPE *OSSL_CMP_ATAV_get0_value(const OSSL_CMP_ATAV *itav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_algId(const X509_ALGOR *alg); +X509_ALGOR *OSSL_CMP_ATAV_get0_algId(const OSSL_CMP_ATAV *atav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_rsaKeyLen(int len); +int OSSL_CMP_ATAV_get_rsaKeyLen(const OSSL_CMP_ATAV *atav); +int OSSL_CMP_ATAV_push1(OSSL_CMP_ATAVS **sk_p, const OSSL_CMP_ATAV *atav); + void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); /* from cmp_ctx.c */ OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const OSSL_CMP_CTX *ctx); /* CMP general options: */ # define OSSL_CMP_OPT_LOG_VERBOSITY 0 /* CMP transfer options: */ -# define OSSL_CMP_OPT_KEEP_ALIVE 10 -# define OSSL_CMP_OPT_MSG_TIMEOUT 11 +# define OSSL_CMP_OPT_KEEP_ALIVE 10 +# define OSSL_CMP_OPT_MSG_TIMEOUT 11 # define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 +# define OSSL_CMP_OPT_USE_TLS 13 /* CMP request options: */ # define OSSL_CMP_OPT_VALIDITY_DAYS 20 # define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 @@ -407,6 +502,7 @@ int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); # define OSSL_CMP_OPT_DIGEST_ALGNID 34 # define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35 # define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36 +# define OSSL_CMP_OPT_NO_CACHE_EXTRACERTS 37 int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val); int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt); /* CMP-specific callback for logging and outputting the error queue: */ @@ -420,9 +516,11 @@ int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); +# ifndef OPENSSL_NO_HTTP int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); +# endif typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); @@ -432,7 +530,9 @@ void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); +# define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +# define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); /* client authentication: */ @@ -448,12 +548,15 @@ int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx, int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); int OSSL_CMP_CTX_reset_geninfo_ITAVs(OSSL_CMP_CTX *ctx); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_CTX_get0_geninfo_ITAVs(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, STACK_OF(X509) *extraCertsOut); /* certificate template: */ int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set1_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, const GENERAL_NAME *name); @@ -477,6 +580,7 @@ int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); # define OSSL_CMP_PKISI_BUFLEN 1024 +X509 *OSSL_CMP_CTX_get0_validatedSrvCert(const OSSL_CMP_CTX *ctx); X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); @@ -498,10 +602,13 @@ OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const OSSL_CMP_PKIHEADER *hdr); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_HDR_get0_geninfo_ITAVs(const OSSL_CMP_PKIHEADER *hdr); /* from cmp_msg.c */ OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg); +X509_PUBKEY *OSSL_CMP_MSG_get0_certreq_publickey(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_recipNonce(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid); @@ -517,8 +624,10 @@ int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, X509_STORE *trusted_store, X509 *cert); /* from cmp_http.c */ +# ifndef OPENSSL_NO_HTTP OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); +# endif /* from cmp_server.c */ typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; @@ -561,6 +670,13 @@ int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx, OSSL_CMP_SRV_error_cb_t process_error, OSSL_CMP_SRV_certConf_cb_t process_certConf, OSSL_CMP_SRV_pollReq_cb_t process_pollReq); +typedef int (*OSSL_CMP_SRV_delayed_delivery_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +typedef int (*OSSL_CMP_SRV_clean_transaction_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_SRV_CTX_init_trans(OSSL_CMP_SRV_CTX *srv_ctx, + OSSL_CMP_SRV_delayed_delivery_cb_t delay, + OSSL_CMP_SRV_clean_transaction_cb_t clean); OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx, @@ -577,6 +693,8 @@ X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type, # define OSSL_CMP_CR 2 # define OSSL_CMP_P10CR 4 # define OSSL_CMP_KUR 7 +# define OSSL_CMP_GENM 21 +# define OSSL_CMP_ERROR 23 # define OSSL_CMP_exec_IR_ses(ctx) \ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL) # define OSSL_CMP_exec_CR_ses(ctx) \ @@ -590,6 +708,18 @@ int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); +int OSSL_CMP_get1_crlUpdate(OSSL_CMP_CTX *ctx, const X509 *crlcert, + const X509_CRL *last_crl, + X509_CRL **crl); +int OSSL_CMP_get1_certReqTemplate(OSSL_CMP_CTX *ctx, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/cms.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/cms.h index 03ce6ab07aac44..1a51921256fea4 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/cms.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/cms.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/cms.h.in * - * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2008-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -31,8 +31,10 @@ extern "C" { # endif +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; typedef struct CMS_ContentInfo_st CMS_ContentInfo; typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; typedef struct CMS_CertificateChoices CMS_CertificateChoices; typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; @@ -147,10 +149,14 @@ SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, #define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) +DECLARE_ASN1_DUP_FUNCTION(CMS_EnvelopedData) + CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq); # define CMS_SIGNERINFO_ISSUER_SERIAL 0 @@ -190,6 +196,7 @@ CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq) # define CMS_ASCIICRLF 0x80000 # define CMS_CADES 0x100000 # define CMS_USE_ORIGINATOR_KEYID 0x200000 +# define CMS_NO_SIGNING_TIME 0x400000 const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms); @@ -217,13 +224,16 @@ int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, unsigned int flags); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, BIO *dcont, + unsigned int flags); CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, unsigned int flags); CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, @@ -233,27 +243,26 @@ CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, unsigned int flags); CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, const unsigned char *key, size_t keylen, BIO *dcont, BIO *out, unsigned int flags); - CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags); CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, @@ -272,7 +281,7 @@ CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags); CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, BIO *dcont, BIO *out, unsigned int flags); @@ -291,12 +300,16 @@ int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo * -CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx, +CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags); @@ -385,6 +398,11 @@ ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); int CMS_SignerInfo_sign(CMS_SignerInfo *si); int CMS_SignerInfo_verify(CMS_SignerInfo *si); int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, @@ -441,7 +459,7 @@ CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( unsigned char *id, int idlen, int allorfirst, STACK_OF(GENERAL_NAMES) *receiptList, STACK_OF(GENERAL_NAMES) *receiptsTo, - OSSL_LIB_CTX *ctx); + OSSL_LIB_CTX *libctx); int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/comp.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/comp.h new file mode 100644 index 00000000000000..90e39511fe8d28 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/comp.h @@ -0,0 +1,98 @@ +/* + * Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_COMP_H +# define OPENSSL_COMP_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_COMP_H +# endif + +# include + +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + + +# ifndef OPENSSL_NO_COMP + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX* comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); + +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); + +COMP_METHOD *COMP_zlib(void); +COMP_METHOD *COMP_zlib_oneshot(void); +COMP_METHOD *COMP_brotli(void); +COMP_METHOD *COMP_brotli_oneshot(void); +COMP_METHOD *COMP_zstd(void); +COMP_METHOD *COMP_zstd_oneshot(void); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define COMP_zlib_cleanup() while(0) continue +# endif + +# ifdef OPENSSL_BIO_H +const BIO_METHOD *BIO_f_zlib(void); +const BIO_METHOD *BIO_f_brotli(void); +const BIO_METHOD *BIO_f_zstd(void); +# endif + +# endif + +typedef struct ssl_comp_st SSL_COMP; + +SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) +#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) +#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) +#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) +#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) +#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) +#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) +#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) +#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) +#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) +#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) +#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) + + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/conf.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/conf.h index 994e573a957435..ffa9ced71e8b26 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/conf.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/conf.h @@ -27,6 +27,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -65,7 +68,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) #define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) #define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); -#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp))) +#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp)), lh_CONF_VALUE_hash_thunk, lh_CONF_VALUE_comp_thunk, lh_CONF_VALUE_doall_thunk, lh_CONF_VALUE_doall_arg_thunk)) #define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/configuration.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/configuration.h index 6a413341de2587..c3090e2efeff08 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/configuration.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/configuration.h @@ -29,7 +29,7 @@ extern "C" { # ifndef OPENSSL_SYS_WIN64A # define OPENSSL_SYS_WIN64A 1 # endif -# define OPENSSL_CONFIGURED_API 30000 +# define OPENSSL_CONFIGURED_API 30500 # ifndef OPENSSL_RAND_SEED_OS # define OPENSSL_RAND_SEED_OS # endif @@ -42,6 +42,12 @@ extern "C" { # ifndef OPENSSL_NO_ASAN # define OPENSSL_NO_ASAN # endif +# ifndef OPENSSL_NO_BROTLI +# define OPENSSL_NO_BROTLI +# endif +# ifndef OPENSSL_NO_BROTLI_DYNAMIC +# define OPENSSL_NO_BROTLI_DYNAMIC +# endif # ifndef OPENSSL_NO_COMP # define OPENSSL_NO_COMP # endif @@ -51,6 +57,9 @@ extern "C" { # ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # endif +# ifndef OPENSSL_NO_DEMOS +# define OPENSSL_NO_DEMOS +# endif # ifndef OPENSSL_NO_DEVCRYPTOENG # define OPENSSL_NO_DEVCRYPTOENG # endif @@ -63,12 +72,24 @@ extern "C" { # ifndef OPENSSL_NO_EXTERNAL_TESTS # define OPENSSL_NO_EXTERNAL_TESTS # endif +# ifndef OPENSSL_NO_FIPS_JITTER +# define OPENSSL_NO_FIPS_JITTER +# endif # ifndef OPENSSL_NO_FUZZ_AFL # define OPENSSL_NO_FUZZ_AFL # endif # ifndef OPENSSL_NO_FUZZ_LIBFUZZER # define OPENSSL_NO_FUZZ_LIBFUZZER # endif +# ifndef OPENSSL_NO_H3DEMO +# define OPENSSL_NO_H3DEMO +# endif +# ifndef OPENSSL_NO_HQINTEROP +# define OPENSSL_NO_HQINTEROP +# endif +# ifndef OPENSSL_NO_JITTER +# define OPENSSL_NO_JITTER +# endif # ifndef OPENSSL_NO_KTLS # define OPENSSL_NO_KTLS # endif @@ -81,6 +102,9 @@ extern "C" { # ifndef OPENSSL_NO_MSAN # define OPENSSL_NO_MSAN # endif +# ifndef OPENSSL_NO_PIE +# define OPENSSL_NO_PIE +# endif # ifndef OPENSSL_NO_RC5 # define OPENSSL_NO_RC5 # endif @@ -93,6 +117,12 @@ extern "C" { # ifndef OPENSSL_NO_SSL3_METHOD # define OPENSSL_NO_SSL3_METHOD # endif +# ifndef OPENSSL_NO_SSLKEYLOG +# define OPENSSL_NO_SSLKEYLOG +# endif +# ifndef OPENSSL_NO_TFO +# define OPENSSL_NO_TFO +# endif # ifndef OPENSSL_NO_TRACE # define OPENSSL_NO_TRACE # endif @@ -108,6 +138,18 @@ extern "C" { # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS # define OPENSSL_NO_WEAK_SSL_CIPHERS # endif +# ifndef OPENSSL_NO_ZLIB +# define OPENSSL_NO_ZLIB +# endif +# ifndef OPENSSL_NO_ZLIB_DYNAMIC +# define OPENSSL_NO_ZLIB_DYNAMIC +# endif +# ifndef OPENSSL_NO_ZSTD +# define OPENSSL_NO_ZSTD +# endif +# ifndef OPENSSL_NO_ZSTD_DYNAMIC +# define OPENSSL_NO_ZSTD_DYNAMIC +# endif # ifndef OPENSSL_NO_DYNAMIC_ENGINE # define OPENSSL_NO_DYNAMIC_ENGINE # endif @@ -129,6 +171,12 @@ extern "C" { # define RC4_INT unsigned int +# if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +# define OPENSSL_NO_COMP_ALG +# else +# undef OPENSSL_NO_COMP_ALG +# endif + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/core_names.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/core_names.h new file mode 100644 index 00000000000000..aaca6051c81b53 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/core_names.h @@ -0,0 +1,575 @@ +/* + * WARNING: do not edit! + * Generated by makefile from include/openssl/core_names.h.in + * + * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#ifndef OPENSSL_CORE_NAMES_H +# define OPENSSL_CORE_NAMES_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +/* OSSL_CIPHER_PARAM_CTS_MODE Values */ +# define OSSL_CIPHER_CTS_MODE_CS1 "CS1" +# define OSSL_CIPHER_CTS_MODE_CS2 "CS2" +# define OSSL_CIPHER_CTS_MODE_CS3 "CS3" + +/* Known CIPHER names (not a complete list) */ +# define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" + +/* Known DIGEST names (not a complete list) */ +# define OSSL_DIGEST_NAME_MD5 "MD5" +# define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" +# define OSSL_DIGEST_NAME_SHA1 "SHA1" +# define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" +# define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" +# define OSSL_DIGEST_NAME_SHA2_256_192 "SHA2-256/192" +# define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" +# define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" +# define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" +# define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" +# define OSSL_DIGEST_NAME_MD2 "MD2" +# define OSSL_DIGEST_NAME_MD4 "MD4" +# define OSSL_DIGEST_NAME_MDC2 "MDC2" +# define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" +# define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" +# define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" +# define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" +# define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" +# define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" +# define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" +# define OSSL_DIGEST_NAME_SM3 "SM3" + +/* Known MAC names */ +# define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" +# define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" +# define OSSL_MAC_NAME_CMAC "CMAC" +# define OSSL_MAC_NAME_GMAC "GMAC" +# define OSSL_MAC_NAME_HMAC "HMAC" +# define OSSL_MAC_NAME_KMAC128 "KMAC128" +# define OSSL_MAC_NAME_KMAC256 "KMAC256" +# define OSSL_MAC_NAME_POLY1305 "POLY1305" +# define OSSL_MAC_NAME_SIPHASH "SIPHASH" + +/* Known KDF names */ +# define OSSL_KDF_NAME_HKDF "HKDF" +# define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" +# define OSSL_KDF_NAME_PBKDF1 "PBKDF1" +# define OSSL_KDF_NAME_PBKDF2 "PBKDF2" +# define OSSL_KDF_NAME_SCRYPT "SCRYPT" +# define OSSL_KDF_NAME_SSHKDF "SSHKDF" +# define OSSL_KDF_NAME_SSKDF "SSKDF" +# define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" +# define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" +# define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" +# define OSSL_KDF_NAME_X963KDF "X963KDF" +# define OSSL_KDF_NAME_KBKDF "KBKDF" +# define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" +# define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" + +/* RSA padding modes */ +# define OSSL_PKEY_RSA_PAD_MODE_NONE "none" +# define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" +# define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" +# define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" +# define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" + +/* RSA pss padding salt length */ +# define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" + +/* OSSL_PKEY_PARAM_EC_ENCODING values */ +# define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" +# define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" + +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" + +# define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" + +/* PROV_SKEY well known key types */ +# define OSSL_SKEY_TYPE_GENERIC "GENERIC-SECRET" +# define OSSL_SKEY_TYPE_AES "AES" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" + +/* Provider configuration variables */ +#define OSSL_PKEY_RETAIN_SEED "pkey_retain_seed" + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +# define OSSL_ALG_PARAM_ALGORITHM_ID "algorithm-id" +# define OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS "algorithm-id-params" +# define OSSL_ALG_PARAM_CIPHER "cipher" +# define OSSL_ALG_PARAM_DIGEST "digest" +# define OSSL_ALG_PARAM_ENGINE "engine" +# define OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR "fips-indicator" +# define OSSL_ALG_PARAM_MAC "mac" +# define OSSL_ALG_PARAM_PROPERTIES "properties" +# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +# define OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props" +# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" +# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name" +# define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal" +# define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name" +# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid" +# define OSSL_CIPHER_PARAM_AEAD "aead" +# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +# define OSSL_CIPHER_PARAM_AEAD_IV_GENERATED "iv-generated" +# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" +# define OSSL_CIPHER_PARAM_AEAD_TAG "tag" +# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" +# define OSSL_CIPHER_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD "alg_id_param" +# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_CIPHER_PARAM_CTS "cts" +# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" +# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" +# define OSSL_CIPHER_PARAM_DECRYPT_ONLY "decrypt-only" +# define OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK "encrypt-check" +# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" +# define OSSL_CIPHER_PARAM_IV "iv" +# define OSSL_CIPHER_PARAM_IVLEN "ivlen" +# define OSSL_CIPHER_PARAM_KEYLEN "keylen" +# define OSSL_CIPHER_PARAM_MODE "mode" +# define OSSL_CIPHER_PARAM_NUM "num" +# define OSSL_CIPHER_PARAM_PADDING "padding" +# define OSSL_CIPHER_PARAM_PIPELINE_AEAD_TAG "pipeline-tag" +# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" +# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" +# define OSSL_CIPHER_PARAM_ROUNDS "rounds" +# define OSSL_CIPHER_PARAM_SPEED "speed" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag" +# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" +# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" +# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" +# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" +# define OSSL_CIPHER_PARAM_USE_BITS "use-bits" +# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard" +# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" +# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_DIGEST_PARAM_MICALG "micalg" +# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" +# define OSSL_DIGEST_PARAM_SIZE "size" +# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" +# define OSSL_DIGEST_PARAM_XOF "xof" +# define OSSL_DIGEST_PARAM_XOFLEN "xoflen" +# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +# define OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +# define OSSL_DRBG_PARAM_SIZE "size" +# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" +# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" +# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" +# define OSSL_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_EXCHANGE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" +# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" +# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" +# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" +# define OSSL_EXCHANGE_PARAM_PAD "pad" +# define OSSL_GEN_PARAM_ITERATION "iteration" +# define OSSL_GEN_PARAM_POTENTIAL "potential" +# define OSSL_KDF_PARAM_ARGON2_AD "ad" +# define OSSL_KDF_PARAM_ARGON2_LANES "lanes" +# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost" +# define OSSL_KDF_PARAM_ARGON2_VERSION "version" +# define OSSL_KDF_PARAM_CEK_ALG "cekalg" +# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_KDF_PARAM_CONSTANT "constant" +# define OSSL_KDF_PARAM_DATA "data" +# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean" +# define OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KDF_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_KDF_PARAM_FIPS_EMS_CHECK "ems_check" +# define OSSL_KDF_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy" +# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce" +# define OSSL_KDF_PARAM_INFO "info" +# define OSSL_KDF_PARAM_ITER "iter" +# define OSSL_KDF_PARAM_KBKDF_R "r" +# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" +# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" +# define OSSL_KDF_PARAM_KEY "key" +# define OSSL_KDF_PARAM_LABEL "label" +# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_KDF_PARAM_MAC_SIZE "maclen" +# define OSSL_KDF_PARAM_MODE "mode" +# define OSSL_KDF_PARAM_PASSWORD "pass" +# define OSSL_KDF_PARAM_PKCS12_ID "id" +# define OSSL_KDF_PARAM_PKCS5 "pkcs5" +# define OSSL_KDF_PARAM_PREFIX "prefix" +# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_KDF_PARAM_SALT "salt" +# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" +# define OSSL_KDF_PARAM_SCRYPT_N "n" +# define OSSL_KDF_PARAM_SCRYPT_P "p" +# define OSSL_KDF_PARAM_SCRYPT_R "r" +# define OSSL_KDF_PARAM_SECRET "secret" +# define OSSL_KDF_PARAM_SEED "seed" +# define OSSL_KDF_PARAM_SIZE "size" +# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" +# define OSSL_KDF_PARAM_SSHKDF_TYPE "type" +# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" +# define OSSL_KDF_PARAM_THREADS "threads" +# define OSSL_KDF_PARAM_UKM "ukm" +# define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info" +# define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info" +# define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info" +# define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo" +# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_KEM_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KEM_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KEM_PARAM_IKME "ikme" +# define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING "hs_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm" +# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len" +# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" +# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_MAC_PARAM_CUSTOM "custom" +# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" +# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" +# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" +# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" +# define OSSL_MAC_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_MAC_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_MAC_PARAM_FIPS_NO_SHORT_MAC OSSL_PROV_PARAM_NO_SHORT_MAC +# define OSSL_MAC_PARAM_IV "iv" +# define OSSL_MAC_PARAM_KEY "key" +# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_MAC_PARAM_SALT "salt" +# define OSSL_MAC_PARAM_SIZE "size" +# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" +# define OSSL_MAC_PARAM_XOF "xof" +# define OSSL_OBJECT_PARAM_DATA "data" +# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" +# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" +# define OSSL_OBJECT_PARAM_DESC "desc" +# define OSSL_OBJECT_PARAM_INPUT_TYPE "input-type" +# define OSSL_OBJECT_PARAM_REFERENCE "reference" +# define OSSL_OBJECT_PARAM_TYPE "type" +# define OSSL_PASSPHRASE_PARAM_INFO "info" +# define OSSL_PKEY_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_PKEY_PARAM_BITS "bits" +# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" +# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm" +# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" +# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +# define OSSL_PKEY_PARAM_DIST_ID "distid" +# define OSSL_PKEY_PARAM_EC_A "a" +# define OSSL_PKEY_PARAM_EC_B "b" +# define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3" +# define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp" +# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" +# define OSSL_PKEY_PARAM_EC_ENCODING "encoding" +# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +# define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_PARAM_EC_ORDER "order" +# define OSSL_PKEY_PARAM_EC_P "p" +# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +# define OSSL_PKEY_PARAM_EC_PUB_X "qx" +# define OSSL_PKEY_PARAM_EC_PUB_Y "qy" +# define OSSL_PKEY_PARAM_EC_SEED "seed" +# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE +# define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +# define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_FFC_G "g" +# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +# define OSSL_PKEY_PARAM_FFC_H "hindex" +# define OSSL_PKEY_PARAM_FFC_P "p" +# define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +# define OSSL_PKEY_PARAM_FFC_Q "q" +# define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +# define OSSL_PKEY_PARAM_FFC_SEED "seed" +# define OSSL_PKEY_PARAM_FFC_TYPE "type" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +# define OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK "digest-check" +# define OSSL_PKEY_PARAM_FIPS_KEY_CHECK "key-check" +# define OSSL_PKEY_PARAM_FIPS_SIGN_CHECK "sign-check" +# define OSSL_PKEY_PARAM_GROUP_NAME "group" +# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" +# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +# define OSSL_PKEY_PARAM_MAX_SIZE "max-size" +# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +# define OSSL_PKEY_PARAM_ML_DSA_INPUT_FORMATS "ml-dsa.input_formats" +# define OSSL_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS "ml-dsa.output_formats" +# define OSSL_PKEY_PARAM_ML_DSA_PREFER_SEED "ml-dsa.prefer_seed" +# define OSSL_PKEY_PARAM_ML_DSA_RETAIN_SEED "ml-dsa.retain_seed" +# define OSSL_PKEY_PARAM_ML_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE "ml-kem.import_pct_type" +# define OSSL_PKEY_PARAM_ML_KEM_INPUT_FORMATS "ml-kem.input_formats" +# define OSSL_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS "ml-kem.output_formats" +# define OSSL_PKEY_PARAM_ML_KEM_PREFER_SEED "ml-kem.prefer_seed" +# define OSSL_PKEY_PARAM_ML_KEM_RETAIN_SEED "ml-kem.retain_seed" +# define OSSL_PKEY_PARAM_ML_KEM_SEED "seed" +# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +# define OSSL_PKEY_PARAM_PRIV_KEY "priv" +# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_PUB_KEY "pub" +# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9" +# define OSSL_PKEY_PARAM_RSA_D "d" +# define OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ "rsa-derive-from-pq" +# define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_RSA_E "e" +# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1" +# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10" +# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2" +# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3" +# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4" +# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5" +# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6" +# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7" +# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8" +# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9" +# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1" +# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10" +# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2" +# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3" +# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4" +# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5" +# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6" +# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7" +# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8" +# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9" +# define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC +# define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_PKEY_PARAM_RSA_N "n" +# define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" +# define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1" +# define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2" +# define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1" +# define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2" +# define OSSL_PKEY_PARAM_RSA_TEST_XP "xp" +# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" +# define OSSL_PKEY_PARAM_SLH_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG +# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +# define OSSL_PROV_PARAM_BUILDINFO "buildinfo" +# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" +# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" +# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" +# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" +# define OSSL_PROV_PARAM_DSA_SIGN_DISABLED "dsa-sign-disabled" +# define OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK "ecdh-cofactor-check" +# define OSSL_PROV_PARAM_HKDF_DIGEST_CHECK "hkdf-digest-check" +# define OSSL_PROV_PARAM_HKDF_KEY_CHECK "hkdf-key-check" +# define OSSL_PROV_PARAM_HMAC_KEY_CHECK "hmac-key-check" +# define OSSL_PROV_PARAM_KBKDF_KEY_CHECK "kbkdf-key-check" +# define OSSL_PROV_PARAM_KMAC_KEY_CHECK "kmac-key-check" +# define OSSL_PROV_PARAM_NAME "name" +# define OSSL_PROV_PARAM_NO_SHORT_MAC "no-short-mac" +# define OSSL_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK "pbkdf2-lower-bound-check" +# define OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED "rsa-pkcs15-pad-disabled" +# define OSSL_PROV_PARAM_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED "rsa-sign-x931-pad-disabled" +# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" +# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" +# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" +# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" +# define OSSL_PROV_PARAM_SIGNATURE_DIGEST_CHECK "signature-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_DIGEST_CHECK "sshkdf-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_KEY_CHECK "sshkdf-key-check" +# define OSSL_PROV_PARAM_SSKDF_DIGEST_CHECK "sskdf-digest-check" +# define OSSL_PROV_PARAM_SSKDF_KEY_CHECK "sskdf-key-check" +# define OSSL_PROV_PARAM_STATUS "status" +# define OSSL_PROV_PARAM_TDES_ENCRYPT_DISABLED "tdes-encrypt-disabled" +# define OSSL_PROV_PARAM_TLS13_KDF_DIGEST_CHECK "tls13-kdf-digest-check" +# define OSSL_PROV_PARAM_TLS13_KDF_KEY_CHECK "tls13-kdf-key-check" +# define OSSL_PROV_PARAM_TLS1_PRF_DIGEST_CHECK "tls1-prf-digest-check" +# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" +# define OSSL_PROV_PARAM_TLS1_PRF_KEY_CHECK "tls1-prf-key-check" +# define OSSL_PROV_PARAM_VERSION "version" +# define OSSL_PROV_PARAM_X942KDF_KEY_CHECK "x942kdf-key-check" +# define OSSL_PROV_PARAM_X963KDF_DIGEST_CHECK "x963kdf-digest-check" +# define OSSL_PROV_PARAM_X963KDF_KEY_CHECK "x963kdf-key-check" +# define OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_RAND_PARAM_GENERATE "generate" +# define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +# define OSSL_RAND_PARAM_STATE "state" +# define OSSL_RAND_PARAM_STRENGTH "strength" +# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" +# define OSSL_SIGNATURE_PARAM_ADD_RANDOM "additional-random" +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID OSSL_PKEY_PARAM_ALGORITHM_ID +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string" +# define OSSL_SIGNATURE_PARAM_DETERMINISTIC "deterministic" +# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE +# define OSSL_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_SIGNATURE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_CHECK OSSL_PKEY_PARAM_FIPS_SIGN_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK "sign-x931-pad-check" +# define OSSL_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE "verify-message" +# define OSSL_SIGNATURE_PARAM_INSTANCE "instance" +# define OSSL_SIGNATURE_PARAM_KAT "kat" +# define OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING "message-encoding" +# define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_SIGNATURE_PARAM_MU "mu" +# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type" +# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +# define OSSL_SIGNATURE_PARAM_SIGNATURE "signature" +# define OSSL_SIGNATURE_PARAM_TEST_ENTROPY "test-entropy" +# define OSSL_SKEY_PARAM_KEY_LENGTH "key-length" +# define OSSL_SKEY_PARAM_RAW_BYTES "raw-bytes" +# define OSSL_STORE_PARAM_ALIAS "alias" +# define OSSL_STORE_PARAM_DIGEST "digest" +# define OSSL_STORE_PARAM_EXPECT "expect" +# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" +# define OSSL_STORE_PARAM_INPUT_TYPE "input-type" +# define OSSL_STORE_PARAM_ISSUER "name" +# define OSSL_STORE_PARAM_PROPERTIES "properties" +# define OSSL_STORE_PARAM_SERIAL "serial" +# define OSSL_STORE_PARAM_SUBJECT "subject" + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/crmf.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/crmf.h index 0419170bb99974..9b6f13fac240b2 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/crmf.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/crmf.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/crmf.h.in * - * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -26,6 +26,7 @@ # include # include # include /* for GENERAL_NAME etc. */ +# include /* explicit #includes not strictly needed since implied by the above: */ # include @@ -43,9 +44,12 @@ extern "C" { # define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 # define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 - typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) + +typedef struct ossl_crmf_encryptedkey_st OSSL_CRMF_ENCRYPTEDKEY; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDKEY) + typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) @@ -77,6 +81,36 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) #define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; +void OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(OSSL_CRMF_ATTRIBUTETYPEANDVALUE *v); +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value(sk, idx) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new(cmp) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_null() ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (n)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete(sk, i) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (i))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete_ptr(sk, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_shift(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk),ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), (idx)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set(sk, idx, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), pnum) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup(sk) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) + + typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER) typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY; @@ -118,6 +152,7 @@ typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO) typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTTEMPLATE) typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS) @@ -198,12 +233,14 @@ int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, int rid, int acceptRAVerified, OSSL_LIB_CTX *libctx, const char *propq); OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); -const ASN1_INTEGER -*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const ASN1_INTEGER +*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); X509_EXTENSIONS *OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME @@ -215,10 +252,24 @@ int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl, const X509_NAME *subject, const X509_NAME *issuer, const ASN1_INTEGER *serial); -X509 -*OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, - OSSL_LIB_CTX *libctx, const char *propq, - EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDKEY_get1_encCert(const OSSL_CRMF_ENCRYPTEDKEY *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, unsigned int flags); +unsigned char +*OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *enc, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, int *outlen); +EVP_PKEY *OSSL_CRMF_ENCRYPTEDKEY_get1_pkey(const OSSL_CRMF_ENCRYPTEDKEY *encryptedKey, + X509_STORE *ts, STACK_OF(X509) *extra, EVP_PKEY *pkey, + X509 *cert, ASN1_OCTET_STRING *secret, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSG_centralkeygen_requested(const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr); +# ifndef OPENSSL_NO_CMS +OSSL_CRMF_ENCRYPTEDKEY *OSSL_CRMF_ENCRYPTEDKEY_init_envdata(CMS_EnvelopedData *envdata); +# endif # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/crypto.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/crypto.h index 668c52cfee1f15..2a825986bf3a55 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/crypto.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/crypto.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/crypto.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -85,9 +85,15 @@ int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock); void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock); int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_add64(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_and(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, CRYPTO_RWLOCK *lock); int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, CRYPTO_RWLOCK *lock); /* No longer needed, so this is a no-op */ #define OPENSSL_malloc_init() while(0) continue @@ -96,6 +102,9 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_zalloc(num) \ CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_aligned_alloc(num, alignment, freeptr) \ + CRYPTO_aligned_alloc(num, alignment, freeptr, \ + OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_realloc(addr, num) \ CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_clear_realloc(addr, old_num, num) \ @@ -124,6 +133,7 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); size_t OPENSSL_strnlen(const char *str, size_t maxlen); +int OPENSSL_strtoul(const char *str, char **endptr, int base, unsigned long *num); int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength, const unsigned char *buf, size_t buflen, const char sep); @@ -160,6 +170,7 @@ const char *OpenSSL_version(int type); # define OPENSSL_FULL_VERSION_STRING 7 # define OPENSSL_MODULES_DIR 8 # define OPENSSL_CPU_INFO 9 +# define OPENSSL_WINCTX 10 const char *OPENSSL_info(int type); /* @@ -174,6 +185,7 @@ const char *OPENSSL_info(int type); # define OPENSSL_INFO_LIST_SEPARATOR 1006 # define OPENSSL_INFO_SEED_SOURCE 1007 # define OPENSSL_INFO_CPU_SETTINGS 1008 +# define OPENSSL_INFO_WINDOWS_CONTEXT 1009 int OPENSSL_issetugid(void); @@ -341,11 +353,14 @@ void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn, CRYPTO_realloc_fn *realloc_fn, CRYPTO_free_fn *free_fn); -void *CRYPTO_malloc(size_t num, const char *file, int line); -void *CRYPTO_zalloc(size_t num, const char *file, int line); -void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); -char *CRYPTO_strdup(const char *str, const char *file, int line); -char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc(size_t num, size_t align, + void **freeptr, const char *file, + int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strdup(const char *str, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); void CRYPTO_free(void *ptr, const char *file, int line); void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line); void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); @@ -354,8 +369,8 @@ void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, int CRYPTO_secure_malloc_init(size_t sz, size_t minsize); int CRYPTO_secure_malloc_done(void); -void *CRYPTO_secure_malloc(size_t num, const char *file, int line); -void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); void CRYPTO_secure_free(void *ptr, const char *file, int line); void CRYPTO_secure_clear_free(void *ptr, size_t num, const char *file, int line); @@ -376,6 +391,9 @@ void OPENSSL_cleanse(void *ptr, size_t len); # define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */ # define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */ +/* max allowed length for value of OPENSSL_MALLOC_FAILURES env var. */ +# define CRYPTO_MEM_CHECK_MAX_FS 256 + void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); # ifndef OPENSSL_NO_DEPRECATED_3_0 # define OPENSSL_mem_debug_push(info) \ @@ -551,6 +569,13 @@ int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file); void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); +int OSSL_LIB_CTX_get_conf_diagnostics(OSSL_LIB_CTX *ctx); +void OSSL_LIB_CTX_set_conf_diagnostics(OSSL_LIB_CTX *ctx, int value); + +void OSSL_sleep(uint64_t millis); + + +void *OSSL_LIB_CTX_get_data(OSSL_LIB_CTX *ctx, int index); # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/ct.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/ct.h index 15a276e33ff7ca..d29dbc78997c0b 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/ct.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/ct.h @@ -133,7 +133,7 @@ typedef enum { */ CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); - + /* * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library * context and property query string is used. diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/err.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/err.h index 2abf2483488181..daca18e7b757b0 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/err.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/err.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -372,7 +372,7 @@ typedef struct ERR_string_data_st { } ERR_STRING_DATA; DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); -#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp))) +#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp)), lh_ERR_STRING_DATA_hash_thunk, lh_ERR_STRING_DATA_comp_thunk, lh_ERR_STRING_DATA_doall_thunk, lh_ERR_STRING_DATA_doall_arg_thunk)) #define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) @@ -496,6 +496,14 @@ int ERR_get_next_error_library(void); int ERR_set_mark(void); int ERR_pop_to_mark(void); int ERR_clear_last_mark(void); +int ERR_count_to_mark(void); +int ERR_pop(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); #ifdef __cplusplus } diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/fipskey.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/fipskey.h index bf03682482fdd5..6939fd3c55ba6e 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/fipskey.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/fipskey.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/fipskey.h.in * - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -29,6 +29,11 @@ extern "C" { */ #define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" +/* + * The FIPS provider vendor name, as a string. + */ +#define FIPS_VENDOR "OpenSSL FIPS Provider" + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/lhash.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/lhash.h index 39dd6254acdeb6..62c55b20fd9716 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/lhash.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/lhash.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -24,6 +24,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -31,9 +34,13 @@ extern "C" { typedef struct lhash_node_st OPENSSL_LH_NODE; typedef int (*OPENSSL_LH_COMPFUNC) (const void *, const void *); +typedef int (*OPENSSL_LH_COMPFUNCTHUNK) (const void *, const void *, OPENSSL_LH_COMPFUNC cfn); typedef unsigned long (*OPENSSL_LH_HASHFUNC) (const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNCTHUNK) (const void *, OPENSSL_LH_HASHFUNC hfn); typedef void (*OPENSSL_LH_DOALL_FUNC) (void *); +typedef void (*OPENSSL_LH_DOALL_FUNC_THUNK) (void *, OPENSSL_LH_DOALL_FUNC doall); typedef void (*OPENSSL_LH_DOALL_FUNCARG) (void *, void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG_THUNK) (void *, void *, OPENSSL_LH_DOALL_FUNCARG doall); typedef struct lhash_st OPENSSL_LHASH; /* @@ -79,26 +86,40 @@ typedef struct lhash_st OPENSSL_LHASH; int OPENSSL_LH_error(OPENSSL_LHASH *lh); OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +OPENSSL_LHASH *OPENSSL_LH_set_thunks(OPENSSL_LHASH *lh, + OPENSSL_LH_HASHFUNCTHUNK hw, + OPENSSL_LH_COMPFUNCTHUNK cw, + OPENSSL_LH_DOALL_FUNC_THUNK daw, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw); void OPENSSL_LH_free(OPENSSL_LHASH *lh); void OPENSSL_LH_flush(OPENSSL_LHASH *lh); void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); -void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg_thunk(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw, + OPENSSL_LH_DOALL_FUNCARG fn, void *arg); + unsigned long OPENSSL_LH_strhash(const char *c); unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); # ifndef OPENSSL_NO_STDIO -void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# endif +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # endif -void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define _LHASH OPENSSL_LHASH @@ -129,110 +150,190 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); /* Helper macro for internal use */ # define DEFINE_LHASH_OF_INTERNAL(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ typedef void (*lh_##type##_doallfunc)(type *a); \ - static ossl_unused ossl_inline type *ossl_check_##type##_lh_plain_type(type *ptr) \ + static ossl_inline unsigned long lh_##type##_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static ossl_inline int lh_##type##_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_inline void lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_inline void lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline type *\ + ossl_check_##type##_lh_plain_type(type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const type *ossl_check_const_##type##_lh_plain_type(const type *ptr) \ + static ossl_unused ossl_inline const type * \ + ossl_check_const_##type##_lh_plain_type(const type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const OPENSSL_LHASH *ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline const OPENSSL_LHASH * \ + ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ { \ return (const OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LHASH *ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline OPENSSL_LHASH * \ + ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ { \ return (OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ + static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC \ + ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ { \ return (OPENSSL_LH_COMPFUNC)cmp; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ + static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC \ + ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ { \ return (OPENSSL_LH_HASHFUNC)hfn; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ + static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC \ + ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ { \ return (OPENSSL_LH_DOALL_FUNC)dfn; \ } \ LHASH_OF(type) -# define DEFINE_LHASH_OF(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ - static ossl_unused ossl_inline LHASH_OF(type) *lh_##type##_new(unsigned long (*hfn)(const type *), \ - int (*cfn)(const type *, const type *)) \ +# ifndef OPENSSL_NO_DEPRECATED_3_1 +# define DEFINE_LHASH_OF_DEPRECATED(type) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ - return (LHASH_OF(type) *) \ - OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ - static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } +# else +# define DEFINE_LHASH_OF_DEPRECATED(type) +# endif + +# define DEFINE_LHASH_OF_EX(type) \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ + static unsigned long \ + lh_##type##_hfn_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static int lh_##type##_cfn_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_free(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_flush(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_flush(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ { \ return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline int \ + lh_##type##_error(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_num_items(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_get_down_load(LHASH_OF(type) *lh) \ { \ - OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ { \ - OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ } \ - static ossl_unused ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ { \ - OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ { \ - return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ } \ - static ossl_unused ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall(LHASH_OF(type) *lh, void (*doall)(type *)) \ { \ - OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ - void (*doall)(type *)) \ + static ossl_unused ossl_inline LHASH_OF(type) * \ + lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ { \ - OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \ + lh_##type##_hfn_thunk, lh_##type##_cfn_thunk, \ + lh_##type##_doall_thunk, \ + lh_##type##_doall_arg_thunk); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall_arg(LHASH_OF(type) *lh, \ - void (*doallarg)(type *, void *), \ - void *arg) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg(LHASH_OF(type) *lh, \ + void (*doallarg)(type *, void *), void *arg) \ { \ OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ } \ LHASH_OF(type) +# define DEFINE_LHASH_OF(type) \ + DEFINE_LHASH_OF_EX(type); \ + DEFINE_LHASH_OF_DEPRECATED(type) \ + LHASH_OF(type) + #define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ int_implement_lhash_doall(type, argtype, const type) @@ -240,17 +341,26 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); int_implement_lhash_doall(type, argtype, type) #define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype##_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG fn) \ + { \ + void (*fn_conv)(cbargtype *, argtype *) = (void (*)(cbargtype *, argtype *))fn; \ + fn_conv((cbargtype *)node, (argtype *)arg); \ + } \ static ossl_unused ossl_inline void \ lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ void (*fn)(cbargtype *, argtype *), \ argtype *arg) \ { \ - OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNCARG)fn, (void *)arg); \ + OPENSSL_LH_doall_arg_thunk((OPENSSL_LHASH *)lh, \ + lh_##type##_doall_##argtype##_thunk, \ + (OPENSSL_LH_DOALL_FUNCARG)fn, \ + (void *)arg); \ } \ LHASH_OF(type) DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); -#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp)), lh_OPENSSL_STRING_hash_thunk, lh_OPENSSL_STRING_comp_thunk, lh_OPENSSL_STRING_doall_thunk, lh_OPENSSL_STRING_doall_arg_thunk)) #define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) @@ -265,7 +375,7 @@ DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); #define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) #define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); -#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp)), lh_OPENSSL_CSTRING_hash_thunk, lh_OPENSSL_CSTRING_comp_thunk, lh_OPENSSL_CSTRING_doall_thunk, lh_OPENSSL_CSTRING_doall_arg_thunk)) #define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/opensslv.h index 94f44daf376f8e..8f0439fc042ad0 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/opensslv.h @@ -28,8 +28,8 @@ extern "C" { * These macros express version number MAJOR.MINOR.PATCH exactly */ # define OPENSSL_VERSION_MAJOR 3 -# define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 17 +# define OPENSSL_VERSION_MINOR 5 +# define OPENSSL_VERSION_PATCH 2 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.17" -# define OPENSSL_FULL_VERSION_STR "3.0.17" +# define OPENSSL_VERSION_STR "3.5.2" +# define OPENSSL_FULL_VERSION_STR "3.5.2" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "1 Jul 2025" +# define OPENSSL_RELEASE_DATE "5 Aug 2025" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.17 1 Jul 2025" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.2 5 Aug 2025" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/pkcs12.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/pkcs12.h index 80369818c8ecdc..35d04f039366ce 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/pkcs12.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/pkcs12.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/pkcs12.h.in * - * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -41,6 +44,7 @@ extern "C" { # define PKCS12_MAC_KEY_LENGTH 20 +/* The macro is expected to be used only internally. Kept for backwards compatibility. */ # define PKCS12_SALT_LEN 8 /* It's not clear if these are actually needed... */ @@ -130,7 +134,9 @@ int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); const STACK_OF(PKCS12_SAFEBAG) * PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); @@ -218,6 +224,7 @@ ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); const STACK_OF(X509_ATTRIBUTE) * PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, const char *pass, int passlen, const unsigned char *in, int inlen, @@ -285,6 +292,9 @@ int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, unsigned char *salt, int saltlen, int iter, const EVP_MD *md_type); +int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type, const char *prf_md_name); int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, int saltlen, const EVP_MD *md_type); unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, @@ -305,6 +315,7 @@ DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) void PKCS12_PBE_add(void); int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype); @@ -312,6 +323,11 @@ PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype, OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/pkcs7.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/pkcs7.h index 0a95a93e59e262..641d9411a47354 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/pkcs7.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/pkcs7.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/pkcs7.h.in * - * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -28,6 +28,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -131,8 +134,8 @@ SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INF typedef struct pkcs7_signed_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; struct pkcs7_st *contents; } PKCS7_SIGNED; @@ -158,8 +161,8 @@ typedef struct pkcs7_enveloped_st { typedef struct pkcs7_signedandenveloped_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; PKCS7_ENC_CONTENT *enc_data; STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; @@ -200,7 +203,7 @@ typedef struct pkcs7_st { /* NID_pkcs7_data */ ASN1_OCTET_STRING *data; /* NID_pkcs7_signed */ - PKCS7_SIGNED *sign; + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ /* NID_pkcs7_enveloped */ PKCS7_ENVELOPE *enveloped; /* NID_pkcs7_signedAndEnveloped */ @@ -341,13 +344,13 @@ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, const EVP_MD *dgst); int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); -int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); -int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); int PKCS7_content_new(PKCS7 *p7, int nid); int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, - X509 *x509); + X509 *signer); BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/ssl.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/ssl.h index 7e9ca09bbf39f0..6396681867d76c 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/ssl.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/ssl.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/ssl.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -24,6 +24,7 @@ # endif # include +# include # include # include # include @@ -42,6 +43,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -231,10 +235,8 @@ typedef struct ssl_cipher_st SSL_CIPHER; typedef struct ssl_session_st SSL_SESSION; typedef struct tls_sigalgs_st TLS_SIGALGS; typedef struct ssl_conf_ctx_st SSL_CONF_CTX; -typedef struct ssl_comp_st SSL_COMP; STACK_OF(SSL_CIPHER); -STACK_OF(SSL_COMP); /* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ typedef struct srtp_protection_profile_st { @@ -278,28 +280,31 @@ typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, /* Extension context codes */ /* This extension is only allowed in TLS */ -#define SSL_EXT_TLS_ONLY 0x0001 +#define SSL_EXT_TLS_ONLY 0x00001 /* This extension is only allowed in DTLS */ -#define SSL_EXT_DTLS_ONLY 0x0002 +#define SSL_EXT_DTLS_ONLY 0x00002 /* Some extensions may be allowed in DTLS but we don't implement them for it */ -#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 /* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ -#define SSL_EXT_SSL3_ALLOWED 0x0008 +#define SSL_EXT_SSL3_ALLOWED 0x00008 /* Extension is only defined for TLS1.2 and below */ -#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 /* Extension is only defined for TLS1.3 and above */ -#define SSL_EXT_TLS1_3_ONLY 0x0020 +#define SSL_EXT_TLS1_3_ONLY 0x00020 /* Ignore this extension during parsing if we are resuming */ -#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 -#define SSL_EXT_CLIENT_HELLO 0x0080 +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 /* Really means TLS1.2 or below */ -#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 -#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 -#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 -#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 -#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 -#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 -#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 /* Typedefs for handling custom extensions */ @@ -404,7 +409,7 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); */ # define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_BIT(22) /* - * If set, a server will allow a client to issue a SSLv3.0 version + * If set, a server will allow a client to issue an SSLv3.0 version * number as latest version supported in the premaster secret, even when * TLSv1.0 (version 3.1) was announced in the client hello. Normally * this is forbidden to prevent version rollback attacks. @@ -430,6 +435,19 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); * interoperability with CryptoPro CSP 3.x */ # define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +# define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +# define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) + /* Enable KTLS TX zerocopy on Linux */ +# define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) + +#define SSL_OP_PREFER_NO_DHE_KEX SSL_OP_BIT(35) /* * Option "collections." @@ -574,6 +592,8 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); # define CERT_PKEY_CERT_TYPE 0x400 /* Cert chain suitable to Suite B */ # define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +# define CERT_PKEY_RPK 0x1000 # define SSL_CONF_FLAG_CMDLINE 0x1 # define SSL_CONF_FLAG_FILE 0x2 @@ -965,6 +985,7 @@ uint32_t SSL_get_recv_max_early_data(const SSL *s); # include /* This is mostly sslv3 with a few tweaks */ # include /* Datagram TLS */ # include /* Support for the use_srtp extension */ +# include #ifdef __cplusplus extern "C" { @@ -1000,32 +1021,6 @@ SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) #define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) #define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) #define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) -SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) -#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) -#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) -#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) -#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) -#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) -#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) -#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) -#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) -#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) -#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) -#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) /* compatibility */ @@ -1066,6 +1061,7 @@ typedef enum { DTLS_ST_CR_HELLO_VERIFY_REQUEST, TLS_ST_CR_SRVR_HELLO, TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, TLS_ST_CR_CERT_STATUS, TLS_ST_CR_KEY_EXCH, TLS_ST_CR_CERT_REQ, @@ -1075,6 +1071,7 @@ typedef enum { TLS_ST_CR_FINISHED, TLS_ST_CW_CLNT_HELLO, TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, TLS_ST_CW_KEY_EXCH, TLS_ST_CW_CERT_VRFY, TLS_ST_CW_CHANGE, @@ -1085,10 +1082,12 @@ typedef enum { DTLS_ST_SW_HELLO_VERIFY_REQUEST, TLS_ST_SW_SRVR_HELLO, TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, TLS_ST_SW_KEY_EXCH, TLS_ST_SW_CERT_REQ, TLS_ST_SW_SRVR_DONE, TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, TLS_ST_SR_KEY_EXCH, TLS_ST_SR_CERT_VRFY, TLS_ST_SR_NEXT_PROTO, @@ -1380,9 +1379,13 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_CTRL_GET_SIGNATURE_NID 132 # define SSL_CTRL_GET_TMP_KEY 133 # define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +# define SSL_CTRL_GET_IANA_GROUPS 135 # define SSL_CTRL_SET_RETRY_VERIFY 136 # define SSL_CTRL_GET_VERIFY_CERT_STORE 137 # define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +# define SSL_CTRL_GET0_IMPLEMENTED_GROUPS 139 +# define SSL_CTRL_GET_SIGNATURE_NAME 140 +# define SSL_CTRL_GET_PEER_SIGNATURE_NAME 141 # define SSL_CERT_SET_FIRST 1 # define SSL_CERT_SET_NEXT 2 # define SSL_CERT_SET_SERVER 3 @@ -1485,10 +1488,15 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get1_groups(s, glist) \ SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_IANA_GROUPS,0,(uint16_t **)(plst)) # define SSL_CTX_set1_groups(ctx, glist, glistlen) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) # define SSL_CTX_set1_groups_list(ctx, s) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s)) +# define SSL_CTX_get0_implemented_groups(ctx, all, out) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET0_IMPLEMENTED_GROUPS, all, \ + (STACK_OF(OPENSSL_CSTRING) *)(out)) # define SSL_set1_groups(s, glist, glistlen) \ SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist)) # define SSL_set1_groups_list(s, str) \ @@ -1520,8 +1528,12 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) (char *)(clist)) # define SSL_set1_client_certificate_types(s, clist, clistlen) \ SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist)) +# define SSL_get0_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn) +# define SSL_get0_peer_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_peer_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) # define SSL_get_peer_tmp_key(s, pk) \ @@ -1549,6 +1561,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get_max_proto_version(s) \ SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +const char *SSL_get0_group_name(SSL *s); const char *SSL_group_to_name(SSL *s, int id); /* Backwards compatibility, original 1.1.0 names */ @@ -1613,7 +1626,11 @@ void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); __owur int SSL_want(const SSL *s); __owur int SSL_clear(SSL *s); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()") void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); +#endif +void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm); __owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); __owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); @@ -1725,13 +1742,21 @@ __owur const char *SSL_state_string(const SSL *s); __owur const char *SSL_rstate_string(const SSL *s); __owur const char *SSL_state_string_long(const SSL *s); __owur const char *SSL_rstate_string_long(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_get_time_ex()") __owur long SSL_SESSION_get_time(const SSL_SESSION *s); +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_set_time_ex()") __owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +#endif __owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); __owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); __owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); __owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); +__owur time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s); +__owur time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t); + __owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); __owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, @@ -1783,6 +1808,9 @@ __owur int SSL_has_matching_session_id(const SSL *s, unsigned int id_len); SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); # ifdef OPENSSL_X509_H __owur X509 *SSL_get0_peer_certificate(const SSL *s); @@ -1840,6 +1868,8 @@ __owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, SSL *SSL_new(SSL_CTX *ctx); int SSL_up_ref(SSL *s); int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); __owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, unsigned int sid_ctx_len); @@ -1848,8 +1878,8 @@ __owur int SSL_set_purpose(SSL *ssl, int purpose); __owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); __owur int SSL_set_trust(SSL *ssl, int trust); -__owur int SSL_set1_host(SSL *s, const char *hostname); -__owur int SSL_add1_host(SSL *s, const char *hostname); +__owur int SSL_set1_host(SSL *s, const char *host); +__owur int SSL_add1_host(SSL *s, const char *host); __owur const char *SSL_get0_peername(SSL *s); void SSL_set_hostflags(SSL *s, unsigned int flags); @@ -1924,6 +1954,11 @@ OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg); void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, void *arg); +typedef int (*SSL_new_pending_conn_cb_fn) (SSL_CTX *ctx, SSL *new_ssl, + void *arg); +void SSL_CTX_set_new_pending_conn_cb(SSL_CTX *c, SSL_new_pending_conn_cb_fn cb, + void *arg); + int SSL_client_hello_isv2(SSL *s); unsigned int SSL_client_hello_get0_legacy_version(SSL *s); size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); @@ -1932,6 +1967,8 @@ size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); size_t SSL_client_hello_get0_compression_methods(SSL *s, const unsigned char **out); int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); int SSL_client_hello_get0_ext(SSL *s, unsigned int type, const unsigned char **out, size_t *outlen); @@ -1978,6 +2015,12 @@ long SSL_callback_ctrl(SSL *, int, void (*)(void)); long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); +# define SSL_WRITE_FLAG_CONCLUDE (1U << 0) + +__owur int SSL_write_ex2(SSL *s, const void *buf, size_t num, + uint64_t flags, + size_t *written); + # define SSL_EARLY_DATA_NOT_SENT 0 # define SSL_EARLY_DATA_REJECTED 1 # define SSL_EARLY_DATA_ACCEPTED 2 @@ -1986,6 +2029,7 @@ __owur int SSL_get_early_data_status(const SSL *s); __owur int SSL_get_error(const SSL *s, int ret_code); __owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); /* This sets the 'default' SSL version that SSL_new() will create */ # ifndef OPENSSL_NO_DEPRECATED_3_0 @@ -2281,6 +2325,8 @@ void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); +int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size, + size_t hs_block_size); int SSL_set_record_padding_callback(SSL *ssl, size_t (*cb) (SSL *ssl, int type, @@ -2288,12 +2334,255 @@ int SSL_set_record_padding_callback(SSL *ssl, void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); void *SSL_get_record_padding_callback_arg(const SSL *ssl); int SSL_set_block_padding(SSL *ssl, size_t block_size); - +int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size, + size_t hs_block_size); int SSL_set_num_tickets(SSL *s, size_t num_tickets); size_t SSL_get_num_tickets(const SSL *s); int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +__owur int SSL_is_listener(SSL *ssl); +__owur SSL *SSL_get0_listener(SSL *s); +#define SSL_LISTENER_FLAG_NO_VALIDATE (1UL << 1) +__owur SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags); +__owur SSL *SSL_new_listener_from(SSL *ssl, uint64_t flags); +__owur SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags); +#define SSL_ACCEPT_CONNECTION_NO_BLOCK (1UL << 0) +__owur SSL *SSL_accept_connection(SSL *ssl, uint64_t flags); +__owur size_t SSL_get_accept_connection_queue_len(SSL *ssl); +__owur int SSL_listen(SSL *ssl); + +__owur int SSL_is_domain(SSL *s); +__owur SSL *SSL_get0_domain(SSL *s); +__owur SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags); + +#define SSL_DOMAIN_FLAG_SINGLE_THREAD (1U << 0) +#define SSL_DOMAIN_FLAG_MULTI_THREAD (1U << 1) +#define SSL_DOMAIN_FLAG_THREAD_ASSISTED (1U << 2) +#define SSL_DOMAIN_FLAG_BLOCKING (1U << 3) +#define SSL_DOMAIN_FLAG_LEGACY_BLOCKING (1U << 4) + +__owur int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t domain_flags); +__owur int SSL_CTX_get_domain_flags(const SSL_CTX *ctx, uint64_t *domain_flags); +__owur int SSL_get_domain_flags(const SSL *ssl, uint64_t *domain_flags); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +# ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +# endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + +# define SSL_VALUE_CLASS_GENERIC 0 +# define SSL_VALUE_CLASS_FEATURE_REQUEST 1 +# define SSL_VALUE_CLASS_FEATURE_PEER_REQUEST 2 +# define SSL_VALUE_CLASS_FEATURE_NEGOTIATED 3 + +# define SSL_VALUE_NONE 0 +# define SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL 1 +# define SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL 2 +# define SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL 3 +# define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL 4 +# define SSL_VALUE_QUIC_IDLE_TIMEOUT 5 +# define SSL_VALUE_EVENT_HANDLING_MODE 6 +# define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7 +# define SSL_VALUE_STREAM_WRITE_BUF_USED 8 +# define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9 + +# define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0 +# define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1 +# define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT 2 + +int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v); +int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v); + +# define SSL_get_generic_value_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_set_generic_value_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_get_feature_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_set_feature_request_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_get_feature_peer_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, (id), (v)) +# define SSL_get_feature_negotiated_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_NEGOTIATED, (id), (v)) + +# define SSL_get_quic_stream_bidi_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_bidi_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, \ + (value)) + +# define SSL_get_event_handling_mode(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) +# define SSL_set_event_handling_mode(ssl, value) \ + SSL_set_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) + +# define SSL_get_stream_write_buf_size(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_SIZE, \ + (value)) +# define SSL_get_stream_write_buf_used(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_USED, \ + (value)) +# define SSL_get_stream_write_buf_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_AVAIL, \ + (value)) + +# define SSL_POLL_EVENT_NONE 0 + +# define SSL_POLL_EVENT_F (1U << 0) /* F (Failure) */ +# define SSL_POLL_EVENT_EL (1U << 1) /* EL (Exception on Listener) */ +# define SSL_POLL_EVENT_EC (1U << 2) /* EC (Exception on Conn) */ +# define SSL_POLL_EVENT_ECD (1U << 3) /* ECD (Exception on Conn Drained) */ +# define SSL_POLL_EVENT_ER (1U << 4) /* ER (Exception on Read) */ +# define SSL_POLL_EVENT_EW (1U << 5) /* EW (Exception on Write) */ +# define SSL_POLL_EVENT_R (1U << 6) /* R (Readable) */ +# define SSL_POLL_EVENT_W (1U << 7) /* W (Writable) */ +# define SSL_POLL_EVENT_IC (1U << 8) /* IC (Incoming Connection) */ +# define SSL_POLL_EVENT_ISB (1U << 9) /* ISB (Incoming Stream: Bidi) */ +# define SSL_POLL_EVENT_ISU (1U << 10) /* ISU (Incoming Stream: Uni) */ +# define SSL_POLL_EVENT_OSB (1U << 11) /* OSB (Outgoing Stream: Bidi) */ +# define SSL_POLL_EVENT_OSU (1U << 12) /* OSU (Outgoing Stream: Uni) */ + +# define SSL_POLL_EVENT_RW (SSL_POLL_EVENT_R | SSL_POLL_EVENT_W) +# define SSL_POLL_EVENT_RE (SSL_POLL_EVENT_R | SSL_POLL_EVENT_ER) +# define SSL_POLL_EVENT_WE (SSL_POLL_EVENT_W | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_RWE (SSL_POLL_EVENT_RE | SSL_POLL_EVENT_WE) +# define SSL_POLL_EVENT_E (SSL_POLL_EVENT_EL | SSL_POLL_EVENT_EC \ + | SSL_POLL_EVENT_ER | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_IS (SSL_POLL_EVENT_ISB | SSL_POLL_EVENT_ISU) +# define SSL_POLL_EVENT_ISE (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_EC) +# define SSL_POLL_EVENT_I (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_IC) +# define SSL_POLL_EVENT_OS (SSL_POLL_EVENT_OSB | SSL_POLL_EVENT_OSU) +# define SSL_POLL_EVENT_OSE (SSL_POLL_EVENT_OS | SSL_POLL_EVENT_EC) + +typedef struct ssl_poll_item_st { + BIO_POLL_DESCRIPTOR desc; + uint64_t events, revents; +} SSL_POLL_ITEM; + +# define SSL_POLL_FLAG_NO_HANDLE_EVENTS (1U << 0) + +__owur int SSL_poll(SSL_POLL_ITEM *items, + size_t num_items, + size_t stride, + const struct timeval *timeout, + uint64_t flags, + size_t *result_count); + +static ossl_inline ossl_unused BIO_POLL_DESCRIPTOR +SSL_as_poll_descriptor(SSL *s) +{ + BIO_POLL_DESCRIPTOR d; + + d.type = BIO_POLL_DESCRIPTOR_TYPE_SSL; + d.value.ssl = s; + return d; +} + # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define SSL_cache_hit(s) SSL_session_reused(s) # endif @@ -2593,6 +2882,51 @@ void SSL_set_allow_early_data_cb(SSL *s, const char *OSSL_default_cipher_list(void); const char *OSSL_default_ciphersuites(void); +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + +/* + * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used. + */ +# define OSSL_RECORD_PROTECTION_LEVEL_NONE 0 +# define OSSL_RECORD_PROTECTION_LEVEL_EARLY 1 +# define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE 2 +# define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3 + +int SSL_set_quic_tls_cbs(SSL *s, const OSSL_DISPATCH *qtdis, void *arg); +int SSL_set_quic_tls_transport_params(SSL *s, + const unsigned char *params, + size_t params_len); + +int SSL_set_quic_tls_early_data_enabled(SSL *s, int enabled); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/x509.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/x509.h index 0f2353c821aa9b..5e9c548c48d65b 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/x509.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/x509.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/x509.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -40,6 +40,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -162,16 +165,24 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) # define X509_FILETYPE_ASN1 2 # define X509_FILETYPE_DEFAULT 3 -# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 -# define X509v3_KU_NON_REPUDIATION 0x0040 -# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 -# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 -# define X509v3_KU_KEY_AGREEMENT 0x0008 -# define X509v3_KU_KEY_CERT_SIGN 0x0004 -# define X509v3_KU_CRL_SIGN 0x0002 -# define X509v3_KU_ENCIPHER_ONLY 0x0001 -# define X509v3_KU_DECIPHER_ONLY 0x8000 -# define X509v3_KU_UNDEF 0xffff +/*- + * : + * The KeyUsage BITSTRING is treated as a little-endian integer, hence bit `0` + * is 0x80, while bit `7` is 0x01 (the LSB of the integer value), bit `8` is + * then the MSB of the second octet, or 0x8000. + */ +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 /* (0) */ +# define X509v3_KU_NON_REPUDIATION 0x0040 /* (1) */ +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 /* (2) */ +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 /* (3) */ +# define X509v3_KU_KEY_AGREEMENT 0x0008 /* (4) */ +# define X509v3_KU_KEY_CERT_SIGN 0x0004 /* (5) */ +# define X509v3_KU_CRL_SIGN 0x0002 /* (6) */ +# define X509v3_KU_ENCIPHER_ONLY 0x0001 /* (7) */ +# define X509v3_KU_DECIPHER_ONLY 0x8000 /* (8) */ +# ifndef OPENSSL_NO_DEPRECATED_3_4 +# define X509v3_KU_UNDEF 0xffff /* vestigial, not used */ +# endif struct X509_algor_st { ASN1_OBJECT *algorithm; @@ -462,7 +473,12 @@ typedef struct PBKDF2PARAM_st { X509_ALGOR *prf; } PBKDF2PARAM; -#ifndef OPENSSL_NO_SCRYPT +typedef struct { + X509_ALGOR *keyDerivationFunc; + X509_ALGOR *messageAuthScheme; +} PBMAC1PARAM; + +# ifndef OPENSSL_NO_SCRYPT typedef struct SCRYPT_PARAMS_st { ASN1_OCTET_STRING *salt; ASN1_INTEGER *costParameter; @@ -470,7 +486,7 @@ typedef struct SCRYPT_PARAMS_st { ASN1_INTEGER *parallelizationParameter; ASN1_INTEGER *keyLength; } SCRYPT_PARAMS; -#endif +# endif #ifdef __cplusplus } @@ -603,6 +619,8 @@ EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); # endif @@ -651,6 +669,8 @@ EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); DECLARE_ASN1_DUP_FUNCTION(X509) @@ -884,12 +904,12 @@ int X509_REQ_get_signature_nid(const X509_REQ *req); int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); -EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); int X509_REQ_extension_nid(int nid); int *X509_REQ_get_extension_nids(void); void X509_REQ_set_extension_nids(int *nids); -STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(OSSL_FUTURE_CONST X509_REQ *req); int X509_REQ_add_extensions_nid(X509_REQ *req, const STACK_OF(X509_EXTENSION) *exts, int nid); int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); @@ -950,13 +970,14 @@ X509_REVOKED_get0_extensions(const X509_REVOKED *r); X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); -int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); -int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey); +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); int X509_chain_check_suiteb(int *perror_depth, X509 *x, STACK_OF(X509) *chain, unsigned long flags); int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); @@ -1077,6 +1098,8 @@ X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, X509_EXTENSION *ex, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_extensions(STACK_OF(X509_EXTENSION) **target, + const STACK_OF(X509_EXTENSION) *exts); int X509_get_ext_count(const X509 *x); int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); @@ -1198,9 +1221,10 @@ X509 *X509_find_by_subject(STACK_OF(X509) *sk, const X509_NAME *name); DECLARE_ASN1_FUNCTIONS(PBEPARAM) DECLARE_ASN1_FUNCTIONS(PBE2PARAM) DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) -#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(PBMAC1PARAM) +# ifndef OPENSSL_NO_SCRYPT DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) -#endif +# endif int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, const unsigned char *salt, int saltlen); @@ -1237,6 +1261,7 @@ X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, int prf_nid, int keylen, OSSL_LIB_CTX *libctx); +PBKDF2PARAM *PBMAC1_get1_pbkdf2_param(const X509_ALGOR *macalg); /* PKCS#8 utilities */ DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) @@ -1262,6 +1287,8 @@ int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len); +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, int ptype, void *pval, unsigned char *penc, int penclen); diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/x509_acert.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/x509_acert.h new file mode 100644 index 00000000000000..efae82c8f6b635 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/x509_acert.h @@ -0,0 +1,294 @@ +/* + * WARNING: do not edit! + * Generated by makefile from include/openssl/x509_acert.h.in + * + * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_X509_ACERT_H +# define OPENSSL_X509_ACERT_H +# pragma once + +# include +# include +# include + +typedef struct X509_acert_st X509_ACERT; +typedef struct X509_acert_info_st X509_ACERT_INFO; +typedef struct ossl_object_digest_info_st OSSL_OBJECT_DIGEST_INFO; +typedef struct ossl_issuer_serial_st OSSL_ISSUER_SERIAL; +typedef struct X509_acert_issuer_v2form_st X509_ACERT_ISSUER_V2FORM; + +DECLARE_ASN1_FUNCTIONS(X509_ACERT) +DECLARE_ASN1_DUP_FUNCTION(X509_ACERT) +DECLARE_ASN1_ITEM(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_OBJECT_DIGEST_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_ISSUER_SERIAL) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_ISSUER_V2FORM) + +# ifndef OPENSSL_NO_STDIO +X509_ACERT *d2i_X509_ACERT_fp(FILE *fp, X509_ACERT **acert); +int i2d_X509_ACERT_fp(FILE *fp, const X509_ACERT *acert); +# endif + +DECLARE_PEM_rw(X509_ACERT, X509_ACERT) + +X509_ACERT *d2i_X509_ACERT_bio(BIO *bp, X509_ACERT **acert); +int i2d_X509_ACERT_bio(BIO *bp, const X509_ACERT *acert); + +int X509_ACERT_sign(X509_ACERT *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_ACERT_sign_ctx(X509_ACERT *x, EVP_MD_CTX *ctx); +int X509_ACERT_verify(X509_ACERT *a, EVP_PKEY *r); + +# define X509_ACERT_VERSION_2 1 + +const GENERAL_NAMES *X509_ACERT_get0_holder_entityName(const X509_ACERT *x); +const OSSL_ISSUER_SERIAL *X509_ACERT_get0_holder_baseCertId(const X509_ACERT *x); +const OSSL_OBJECT_DIGEST_INFO * X509_ACERT_get0_holder_digest(const X509_ACERT *x); +const X509_NAME *X509_ACERT_get0_issuerName(const X509_ACERT *x); +long X509_ACERT_get_version(const X509_ACERT *x); +void X509_ACERT_get0_signature(const X509_ACERT *x, + const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_ACERT_get_signature_nid(const X509_ACERT *x); +const X509_ALGOR *X509_ACERT_get0_info_sigalg(const X509_ACERT *x); +const ASN1_INTEGER *X509_ACERT_get0_serialNumber(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notBefore(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notAfter(const X509_ACERT *x); +const ASN1_BIT_STRING *X509_ACERT_get0_issuerUID(const X509_ACERT *x); + +int X509_ACERT_print(BIO *bp, X509_ACERT *x); +int X509_ACERT_print_ex(BIO *bp, X509_ACERT *x, unsigned long nmflags, + unsigned long cflag); + +int X509_ACERT_get_attr_count(const X509_ACERT *x); +int X509_ACERT_get_attr_by_NID(const X509_ACERT *x, int nid, int lastpos); +int X509_ACERT_get_attr_by_OBJ(const X509_ACERT *x, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_ACERT_get_attr(const X509_ACERT *x, int loc); +X509_ATTRIBUTE *X509_ACERT_delete_attr(X509_ACERT *x, int loc); + +void *X509_ACERT_get_ext_d2i(const X509_ACERT *x, int nid, int *crit, int *idx); +int X509_ACERT_add1_ext_i2d(X509_ACERT *x, int nid, void *value, int crit, + unsigned long flags); +const STACK_OF(X509_EXTENSION) *X509_ACERT_get0_extensions(const X509_ACERT *x); + +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY 0 +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY_CERT 1 +# define OSSL_OBJECT_DIGEST_INFO_OTHER 2 /* must not be used in RFC 5755 profile */ +int X509_ACERT_set_version(X509_ACERT *x, long version); +void X509_ACERT_set0_holder_entityName(X509_ACERT *x, GENERAL_NAMES *name); +void X509_ACERT_set0_holder_baseCertId(X509_ACERT *x, OSSL_ISSUER_SERIAL *isss); +void X509_ACERT_set0_holder_digest(X509_ACERT *x, + OSSL_OBJECT_DIGEST_INFO *dinfo); + +int X509_ACERT_add1_attr(X509_ACERT *x, X509_ATTRIBUTE *attr); +int X509_ACERT_add1_attr_by_OBJ(X509_ACERT *x, const ASN1_OBJECT *obj, + int type, const void *bytes, int len); +int X509_ACERT_add1_attr_by_NID(X509_ACERT *x, int nid, int type, + const void *bytes, int len); +int X509_ACERT_add1_attr_by_txt(X509_ACERT *x, const char *attrname, int type, + const unsigned char *bytes, int len); +int X509_ACERT_add_attr_nconf(CONF *conf, const char *section, + X509_ACERT *acert); + +int X509_ACERT_set1_issuerName(X509_ACERT *x, const X509_NAME *name); +int X509_ACERT_set1_serialNumber(X509_ACERT *x, const ASN1_INTEGER *serial); +int X509_ACERT_set1_notBefore(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); +int X509_ACERT_set1_notAfter(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); + +void OSSL_OBJECT_DIGEST_INFO_get0_digest(const OSSL_OBJECT_DIGEST_INFO *o, + int *digestedObjectType, + const X509_ALGOR **digestAlgorithm, + const ASN1_BIT_STRING **digest); + +int OSSL_OBJECT_DIGEST_INFO_set1_digest(OSSL_OBJECT_DIGEST_INFO *o, + int digestedObjectType, + X509_ALGOR *digestAlgorithm, + ASN1_BIT_STRING *digest); + +const X509_NAME *OSSL_ISSUER_SERIAL_get0_issuer(const OSSL_ISSUER_SERIAL *isss); +const ASN1_INTEGER *OSSL_ISSUER_SERIAL_get0_serial(const OSSL_ISSUER_SERIAL *isss); +const ASN1_BIT_STRING *OSSL_ISSUER_SERIAL_get0_issuerUID(const OSSL_ISSUER_SERIAL *isss); + +int OSSL_ISSUER_SERIAL_set1_issuer(OSSL_ISSUER_SERIAL *isss, + const X509_NAME *issuer); +int OSSL_ISSUER_SERIAL_set1_serial(OSSL_ISSUER_SERIAL *isss, + const ASN1_INTEGER *serial); +int OSSL_ISSUER_SERIAL_set1_issuerUID(OSSL_ISSUER_SERIAL *isss, + const ASN1_BIT_STRING *uid); + +# define OSSL_IETFAS_OCTETS 0 +# define OSSL_IETFAS_OID 1 +# define OSSL_IETFAS_STRING 2 + +typedef struct OSSL_IETF_ATTR_SYNTAX_VALUE_st OSSL_IETF_ATTR_SYNTAX_VALUE; +typedef struct OSSL_IETF_ATTR_SYNTAX_st OSSL_IETF_ATTR_SYNTAX; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_value(sk, idx) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new(cmp) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_null() ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (n)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete(sk, i) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (i))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete_ptr(sk, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_pop(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_shift(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_shift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk),ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), (idx)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set(sk, idx, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_set(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), pnum) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_dup(sk) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_copyfunc_type(copyfunc), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set_cmp_func(sk, cmp) ((sk_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) + + +DECLARE_ASN1_ITEM(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX) + +const GENERAL_NAMES * +OSSL_IETF_ATTR_SYNTAX_get0_policyAuthority(const OSSL_IETF_ATTR_SYNTAX *a); +void OSSL_IETF_ATTR_SYNTAX_set0_policyAuthority(OSSL_IETF_ATTR_SYNTAX *a, + GENERAL_NAMES *names); + +int OSSL_IETF_ATTR_SYNTAX_get_value_num(const OSSL_IETF_ATTR_SYNTAX *a); +void *OSSL_IETF_ATTR_SYNTAX_get0_value(const OSSL_IETF_ATTR_SYNTAX *a, + int ind, int *type); +int OSSL_IETF_ATTR_SYNTAX_add1_value(OSSL_IETF_ATTR_SYNTAX *a, int type, + void *data); +int OSSL_IETF_ATTR_SYNTAX_print(BIO *bp, OSSL_IETF_ATTR_SYNTAX *a, int indent); + +struct TARGET_CERT_st { + OSSL_ISSUER_SERIAL *targetCertificate; + GENERAL_NAME *targetName; + OSSL_OBJECT_DIGEST_INFO *certDigestInfo; +}; + +typedef struct TARGET_CERT_st OSSL_TARGET_CERT; + +# define OSSL_TGT_TARGET_NAME 0 +# define OSSL_TGT_TARGET_GROUP 1 +# define OSSL_TGT_TARGET_CERT 2 + +typedef struct TARGET_st { + int type; + union { + GENERAL_NAME *targetName; + GENERAL_NAME *targetGroup; + OSSL_TARGET_CERT *targetCert; + } choice; +} OSSL_TARGET; + +typedef STACK_OF(OSSL_TARGET) OSSL_TARGETS; +typedef STACK_OF(OSSL_TARGETS) OSSL_TARGETING_INFORMATION; + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGET, OSSL_TARGET, OSSL_TARGET) +#define sk_OSSL_TARGET_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_value(sk, idx) ((OSSL_TARGET *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGET_sk_type(sk), (idx))) +#define sk_OSSL_TARGET_new(cmp) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new(ossl_check_OSSL_TARGET_compfunc_type(cmp))) +#define sk_OSSL_TARGET_new_null() ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGET_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGET_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGET_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGET_sk_type(sk), (n)) +#define sk_OSSL_TARGET_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_delete(sk, i) ((OSSL_TARGET *)OPENSSL_sk_delete(ossl_check_OSSL_TARGET_sk_type(sk), (i))) +#define sk_OSSL_TARGET_delete_ptr(sk, ptr) ((OSSL_TARGET *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_pop(sk) ((OSSL_TARGET *)OPENSSL_sk_pop(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_shift(sk) ((OSSL_TARGET *)OPENSSL_sk_shift(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGET_sk_type(sk),ossl_check_OSSL_TARGET_freefunc_type(freefunc)) +#define sk_OSSL_TARGET_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), (idx)) +#define sk_OSSL_TARGET_set(sk, idx, ptr) ((OSSL_TARGET *)OPENSSL_sk_set(ossl_check_OSSL_TARGET_sk_type(sk), (idx), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), pnum) +#define sk_OSSL_TARGET_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_dup(sk) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_copyfunc_type(copyfunc), ossl_check_OSSL_TARGET_freefunc_type(freefunc))) +#define sk_OSSL_TARGET_set_cmp_func(sk, cmp) ((sk_OSSL_TARGET_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGETS, OSSL_TARGETS, OSSL_TARGETS) +#define sk_OSSL_TARGETS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_value(sk, idx) ((OSSL_TARGETS *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGETS_sk_type(sk), (idx))) +#define sk_OSSL_TARGETS_new(cmp) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new(ossl_check_OSSL_TARGETS_compfunc_type(cmp))) +#define sk_OSSL_TARGETS_new_null() ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGETS_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGETS_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGETS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGETS_sk_type(sk), (n)) +#define sk_OSSL_TARGETS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_delete(sk, i) ((OSSL_TARGETS *)OPENSSL_sk_delete(ossl_check_OSSL_TARGETS_sk_type(sk), (i))) +#define sk_OSSL_TARGETS_delete_ptr(sk, ptr) ((OSSL_TARGETS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_pop(sk) ((OSSL_TARGETS *)OPENSSL_sk_pop(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_shift(sk) ((OSSL_TARGETS *)OPENSSL_sk_shift(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGETS_sk_type(sk),ossl_check_OSSL_TARGETS_freefunc_type(freefunc)) +#define sk_OSSL_TARGETS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), (idx)) +#define sk_OSSL_TARGETS_set(sk, idx, ptr) ((OSSL_TARGETS *)OPENSSL_sk_set(ossl_check_OSSL_TARGETS_sk_type(sk), (idx), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), pnum) +#define sk_OSSL_TARGETS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_dup(sk) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_copyfunc_type(copyfunc), ossl_check_OSSL_TARGETS_freefunc_type(freefunc))) +#define sk_OSSL_TARGETS_set_cmp_func(sk, cmp) ((sk_OSSL_TARGETS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_compfunc_type(cmp))) + + +DECLARE_ASN1_FUNCTIONS(OSSL_TARGET) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETS) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETING_INFORMATION) + +typedef STACK_OF(OSSL_ISSUER_SERIAL) OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL) +#define sk_OSSL_ISSUER_SERIAL_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_value(sk, idx) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_value(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), (idx))) +#define sk_OSSL_ISSUER_SERIAL_new(cmp) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) +#define sk_OSSL_ISSUER_SERIAL_new_null() ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ISSUER_SERIAL_new_reserve(cmp, n) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp), (n))) +#define sk_OSSL_ISSUER_SERIAL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (n)) +#define sk_OSSL_ISSUER_SERIAL_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_delete(sk, i) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (i))) +#define sk_OSSL_ISSUER_SERIAL_delete_ptr(sk, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_pop(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_pop(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_shift(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_shift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk),ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc)) +#define sk_OSSL_ISSUER_SERIAL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), (idx)) +#define sk_OSSL_ISSUER_SERIAL_set(sk, idx, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_set(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (idx), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), pnum) +#define sk_OSSL_ISSUER_SERIAL_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_dup(sk) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_copyfunc_type(copyfunc), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc))) +#define sk_OSSL_ISSUER_SERIAL_set_cmp_func(sk, cmp) ((sk_OSSL_ISSUER_SERIAL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) + + +#endif diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/x509_vfy.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/x509_vfy.h index f571187265cfc9..f08a134b17b7db 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/x509_vfy.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/x509_vfy.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/x509_vfy.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -411,6 +411,7 @@ X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ # define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 # define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 # define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +# define X509_V_ERR_RPK_UNTRUSTED 95 /* Certificate verify flags */ # ifndef OPENSSL_NO_DEPRECATED_1_1_0 @@ -491,71 +492,72 @@ int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); X509_STORE *X509_STORE_new(void); -void X509_STORE_free(X509_STORE *v); -int X509_STORE_lock(X509_STORE *ctx); -int X509_STORE_unlock(X509_STORE *ctx); -int X509_STORE_up_ref(X509_STORE *v); -STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *v); -STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *st); -STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get1_objects(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, const X509_NAME *nm); STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, const X509_NAME *nm); -int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); -int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); -int X509_STORE_set_trust(X509_STORE *ctx, int trust); -int X509_STORE_set1_param(X509_STORE *ctx, const X509_VERIFY_PARAM *pm); -X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *ctx); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); -void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); #define X509_STORE_set_verify_func(ctx, func) \ X509_STORE_set_verify((ctx),(func)) void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, X509_STORE_CTX_verify_fn verify); -X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *ctx); -void X509_STORE_set_verify_cb(X509_STORE *ctx, +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, X509_STORE_CTX_verify_cb verify_cb); # define X509_STORE_set_verify_cb_func(ctx,func) \ X509_STORE_set_verify_cb((ctx),(func)) -X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *ctx); -void X509_STORE_set_get_issuer(X509_STORE *ctx, +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, X509_STORE_CTX_get_issuer_fn get_issuer); -X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *ctx); -void X509_STORE_set_check_issued(X509_STORE *ctx, +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, X509_STORE_CTX_check_issued_fn check_issued); -X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *ctx); -void X509_STORE_set_check_revocation(X509_STORE *ctx, +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, X509_STORE_CTX_check_revocation_fn check_revocation); X509_STORE_CTX_check_revocation_fn - X509_STORE_get_check_revocation(const X509_STORE *ctx); -void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, X509_STORE_CTX_get_crl_fn get_crl); -X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *ctx); -void X509_STORE_set_check_crl(X509_STORE *ctx, +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, X509_STORE_CTX_check_crl_fn check_crl); -X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *ctx); -void X509_STORE_set_cert_crl(X509_STORE *ctx, +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, X509_STORE_CTX_cert_crl_fn cert_crl); -X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *ctx); -void X509_STORE_set_check_policy(X509_STORE *ctx, +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, X509_STORE_CTX_check_policy_fn check_policy); -X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *ctx); -void X509_STORE_set_lookup_certs(X509_STORE *ctx, +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, X509_STORE_CTX_lookup_certs_fn lookup_certs); -X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *ctx); -void X509_STORE_set_lookup_crls(X509_STORE *ctx, +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, X509_STORE_CTX_lookup_crls_fn lookup_crls); #define X509_STORE_set_lookup_crls_cb(ctx, func) \ X509_STORE_set_lookup_crls((ctx), (func)) -X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *ctx); -void X509_STORE_set_cleanup(X509_STORE *ctx, +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, X509_STORE_CTX_cleanup_fn cleanup); -X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); #define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) -int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); -void *X509_STORE_get_ex_data(const X509_STORE *ctx, int idx); +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); X509_STORE_CTX *X509_STORE_CTX_new(void); @@ -565,11 +567,14 @@ int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); void X509_STORE_CTX_free(X509_STORE_CTX *ctx); int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY* rpk); void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, @@ -579,6 +584,8 @@ X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); @@ -600,7 +607,7 @@ X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); # define X509_STORE_get1_crl X509_STORE_CTX_get1_crls #endif -X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); X509_LOOKUP_METHOD *X509_LOOKUP_file(void); X509_LOOKUP_METHOD *X509_LOOKUP_store(void); @@ -685,8 +692,8 @@ X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( const X509_LOOKUP_METHOD *method); -int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); -int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, @@ -730,23 +737,21 @@ void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); -int X509_STORE_load_file(X509_STORE *ctx, const char *file); -int X509_STORE_load_path(X509_STORE *ctx, const char *path); -int X509_STORE_load_store(X509_STORE *ctx, const char *store); -int X509_STORE_load_locations(X509_STORE *ctx, - const char *file, - const char *dir); -int X509_STORE_set_default_paths(X509_STORE *ctx); +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); -int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file, +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_store_ex(X509_STORE *ctx, const char *store, +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file, - const char *dir, OSSL_LIB_CTX *libctx, - const char *propq); -int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OSSL_LIB_CTX *libctx, - const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); #define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) @@ -764,6 +769,7 @@ X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); @@ -773,6 +779,8 @@ int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); @@ -804,6 +812,7 @@ int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, unsigned long flags); unsigned long X509_VERIFY_PARAM_get_flags(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_get_purpose(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/x509v3.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/x509v3.h index ed08a546f9813d..362ce3fb4387f7 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/x509v3.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/x509v3.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/x509v3.h.in * - * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -146,6 +149,11 @@ typedef struct BASIC_CONSTRAINTS_st { ASN1_INTEGER *pathlen; } BASIC_CONSTRAINTS; +typedef struct OSSL_BASIC_ATTR_CONSTRAINTS_st { + int authority; + ASN1_INTEGER *pathlen; +} OSSL_BASIC_ATTR_CONSTRAINTS; + typedef struct PKEY_USAGE_PERIOD_st { ASN1_GENERALIZEDTIME *notBefore; ASN1_GENERALIZEDTIME *notAfter; @@ -198,6 +206,8 @@ typedef struct ACCESS_DESCRIPTION_st { GENERAL_NAME *location; } ACCESS_DESCRIPTION; +int GENERAL_NAME_set1_X509_NAME(GENERAL_NAME **tgt, const X509_NAME *src); + SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) #define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) #define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) @@ -294,6 +304,7 @@ typedef struct DIST_POINT_NAME_st { /* If relativename then this contains the full distribution point name */ X509_NAME *dpname; } DIST_POINT_NAME; +DECLARE_ASN1_DUP_FUNCTION(DIST_POINT_NAME) /* All existing reasons */ # define CRLDP_ALL_REASONS 0x807f @@ -659,15 +670,16 @@ struct ISSUING_DIST_POINT_st { # define EXFLAG_SAN_CRITICAL 0x80000 # define EXFLAG_NO_FINGERPRINT 0x100000 -# define KU_DIGITAL_SIGNATURE 0x0080 -# define KU_NON_REPUDIATION 0x0040 -# define KU_KEY_ENCIPHERMENT 0x0020 -# define KU_DATA_ENCIPHERMENT 0x0010 -# define KU_KEY_AGREEMENT 0x0008 -# define KU_KEY_CERT_SIGN 0x0004 -# define KU_CRL_SIGN 0x0002 -# define KU_ENCIPHER_ONLY 0x0001 -# define KU_DECIPHER_ONLY 0x8000 +/* https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3 */ +# define KU_DIGITAL_SIGNATURE X509v3_KU_DIGITAL_SIGNATURE +# define KU_NON_REPUDIATION X509v3_KU_NON_REPUDIATION +# define KU_KEY_ENCIPHERMENT X509v3_KU_KEY_ENCIPHERMENT +# define KU_DATA_ENCIPHERMENT X509v3_KU_DATA_ENCIPHERMENT +# define KU_KEY_AGREEMENT X509v3_KU_KEY_AGREEMENT +# define KU_KEY_CERT_SIGN X509v3_KU_KEY_CERT_SIGN +# define KU_CRL_SIGN X509v3_KU_CRL_SIGN +# define KU_ENCIPHER_ONLY X509v3_KU_ENCIPHER_ONLY +# define KU_DECIPHER_ONLY X509v3_KU_DECIPHER_ONLY # define NS_SSL_CLIENT 0x80 # define NS_SSL_SERVER 0x40 @@ -729,7 +741,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) #define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) - +# define X509_PURPOSE_DEFAULT_ANY 0 # define X509_PURPOSE_SSL_CLIENT 1 # define X509_PURPOSE_SSL_SERVER 2 # define X509_PURPOSE_NS_SSL_SERVER 3 @@ -739,9 +751,10 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509_PURPOSE_ANY 7 # define X509_PURPOSE_OCSP_HELPER 8 # define X509_PURPOSE_TIMESTAMP_SIGN 9 +# define X509_PURPOSE_CODE_SIGN 10 # define X509_PURPOSE_MIN 1 -# define X509_PURPOSE_MAX 9 +# define X509_PURPOSE_MAX 10 /* Flags for X509V3_EXT_print() */ @@ -767,6 +780,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509V3_ADD_SILENT 0x10 DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) +DECLARE_ASN1_FUNCTIONS(OSSL_BASIC_ATTR_CONSTRAINTS) DECLARE_ASN1_FUNCTIONS(SXNET) DECLARE_ASN1_FUNCTIONS(SXNETID) @@ -976,7 +990,6 @@ int X509V3_extensions_print(BIO *out, const char *title, int X509_check_ca(X509 *x); int X509_check_purpose(X509 *x, int id, int ca); int X509_supported_extension(X509_EXTENSION *ex); -int X509_PURPOSE_set(int *p, int purpose); int X509_check_issued(X509 *issuer, X509 *subject); int X509_check_akid(const X509 *issuer, const AUTHORITY_KEYID *akid); void X509_set_proxy_flag(X509 *x); @@ -992,22 +1005,26 @@ const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); int X509_PURPOSE_get_count(void); -X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_unused_id(OSSL_LIB_CTX *libctx); int X509_PURPOSE_get_by_sname(const char *sname); int X509_PURPOSE_get_by_id(int id); int X509_PURPOSE_add(int id, int trust, int flags, int (*ck) (const X509_PURPOSE *, const X509 *, int), const char *name, const char *sname, void *arg); +void X509_PURPOSE_cleanup(void); + +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_id(const X509_PURPOSE *); char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); -void X509_PURPOSE_cleanup(void); -int X509_PURPOSE_get_id(const X509_PURPOSE *); +int X509_PURPOSE_set(int *p, int purpose); STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); + /* Flags for X509_check_* functions */ /* @@ -1444,6 +1461,507 @@ const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( void PROFESSION_INFO_set0_registrationNumber( PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); +int OSSL_GENERAL_NAMES_print(BIO *out, GENERAL_NAMES *gens, int indent); + +typedef STACK_OF(X509_ATTRIBUTE) OSSL_ATTRIBUTES_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTES_SYNTAX) + +typedef STACK_OF(USERNOTICE) OSSL_USER_NOTICE_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_USER_NOTICE_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(USERNOTICE, USERNOTICE, USERNOTICE) +#define sk_USERNOTICE_num(sk) OPENSSL_sk_num(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_value(sk, idx) ((USERNOTICE *)OPENSSL_sk_value(ossl_check_const_USERNOTICE_sk_type(sk), (idx))) +#define sk_USERNOTICE_new(cmp) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new(ossl_check_USERNOTICE_compfunc_type(cmp))) +#define sk_USERNOTICE_new_null() ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_null()) +#define sk_USERNOTICE_new_reserve(cmp, n) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_reserve(ossl_check_USERNOTICE_compfunc_type(cmp), (n))) +#define sk_USERNOTICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_USERNOTICE_sk_type(sk), (n)) +#define sk_USERNOTICE_free(sk) OPENSSL_sk_free(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_zero(sk) OPENSSL_sk_zero(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_delete(sk, i) ((USERNOTICE *)OPENSSL_sk_delete(ossl_check_USERNOTICE_sk_type(sk), (i))) +#define sk_USERNOTICE_delete_ptr(sk, ptr) ((USERNOTICE *)OPENSSL_sk_delete_ptr(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_pop(sk) ((USERNOTICE *)OPENSSL_sk_pop(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_shift(sk) ((USERNOTICE *)OPENSSL_sk_shift(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_USERNOTICE_sk_type(sk),ossl_check_USERNOTICE_freefunc_type(freefunc)) +#define sk_USERNOTICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), (idx)) +#define sk_USERNOTICE_set(sk, idx, ptr) ((USERNOTICE *)OPENSSL_sk_set(ossl_check_USERNOTICE_sk_type(sk), (idx), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), pnum) +#define sk_USERNOTICE_sort(sk) OPENSSL_sk_sort(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_dup(sk) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_dup(ossl_check_const_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_deep_copy(ossl_check_const_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_copyfunc_type(copyfunc), ossl_check_USERNOTICE_freefunc_type(freefunc))) +#define sk_USERNOTICE_set_cmp_func(sk, cmp) ((sk_USERNOTICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_compfunc_type(cmp))) + + +typedef struct OSSL_ROLE_SPEC_CERT_ID_st { + GENERAL_NAME *roleName; + GENERAL_NAME *roleCertIssuer; + ASN1_INTEGER *roleCertSerialNumber; + GENERAL_NAMES *roleCertLocator; +} OSSL_ROLE_SPEC_CERT_ID; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID) +#define sk_OSSL_ROLE_SPEC_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_value(sk, idx) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_value(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new(cmp) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_null() ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_reserve(cmp, n) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp), (n))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (n)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete(sk, i) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (i))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete_ptr(sk, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_pop(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_shift(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_shift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk),ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), (idx)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set(sk, idx, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_set(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), pnum) +#define sk_OSSL_ROLE_SPEC_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_dup(sk) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_copyfunc_type(copyfunc), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set_cmp_func(sk, cmp) ((sk_OSSL_ROLE_SPEC_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) + + +typedef STACK_OF(OSSL_ROLE_SPEC_CERT_ID) OSSL_ROLE_SPEC_CERT_ID_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID_SYNTAX) +typedef struct OSSL_HASH_st { + X509_ALGOR *algorithmIdentifier; + ASN1_BIT_STRING *hashValue; +} OSSL_HASH; + +typedef struct OSSL_INFO_SYNTAX_POINTER_st { + GENERAL_NAMES *name; + OSSL_HASH *hash; +} OSSL_INFO_SYNTAX_POINTER; + +# define OSSL_INFO_SYNTAX_TYPE_CONTENT 0 +# define OSSL_INFO_SYNTAX_TYPE_POINTER 1 + +typedef struct OSSL_INFO_SYNTAX_st { + int type; + union { + ASN1_STRING *content; + OSSL_INFO_SYNTAX_POINTER *pointer; + } choice; +} OSSL_INFO_SYNTAX; + +typedef struct OSSL_PRIVILEGE_POLICY_ID_st { + ASN1_OBJECT *privilegePolicy; + OSSL_INFO_SYNTAX *privPolSyntax; +} OSSL_PRIVILEGE_POLICY_ID; + +typedef struct OSSL_ATTRIBUTE_DESCRIPTOR_st { + ASN1_OBJECT *identifier; + ASN1_STRING *attributeSyntax; + ASN1_UTF8STRING *name; + ASN1_UTF8STRING *description; + OSSL_PRIVILEGE_POLICY_ID *dominationRule; +} OSSL_ATTRIBUTE_DESCRIPTOR; + +DECLARE_ASN1_FUNCTIONS(OSSL_HASH) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX_POINTER) +DECLARE_ASN1_FUNCTIONS(OSSL_PRIVILEGE_POLICY_ID) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_DESCRIPTOR) + +typedef struct OSSL_TIME_SPEC_ABSOLUTE_st { + ASN1_GENERALIZEDTIME *startTime; + ASN1_GENERALIZEDTIME *endTime; +} OSSL_TIME_SPEC_ABSOLUTE; + +typedef struct OSSL_DAY_TIME_st { + ASN1_INTEGER *hour; + ASN1_INTEGER *minute; + ASN1_INTEGER *second; +} OSSL_DAY_TIME; + +typedef struct OSSL_DAY_TIME_BAND_st { + OSSL_DAY_TIME *startDayTime; + OSSL_DAY_TIME *endDayTime; +} OSSL_DAY_TIME_BAND; + +# define OSSL_NAMED_DAY_TYPE_INT 0 +# define OSSL_NAMED_DAY_TYPE_BIT 1 +# define OSSL_NAMED_DAY_INT_SUN 1 +# define OSSL_NAMED_DAY_INT_MON 2 +# define OSSL_NAMED_DAY_INT_TUE 3 +# define OSSL_NAMED_DAY_INT_WED 4 +# define OSSL_NAMED_DAY_INT_THU 5 +# define OSSL_NAMED_DAY_INT_FRI 6 +# define OSSL_NAMED_DAY_INT_SAT 7 +# define OSSL_NAMED_DAY_BIT_SUN 0 +# define OSSL_NAMED_DAY_BIT_MON 1 +# define OSSL_NAMED_DAY_BIT_TUE 2 +# define OSSL_NAMED_DAY_BIT_WED 3 +# define OSSL_NAMED_DAY_BIT_THU 4 +# define OSSL_NAMED_DAY_BIT_FRI 5 +# define OSSL_NAMED_DAY_BIT_SAT 6 + +typedef struct OSSL_NAMED_DAY_st { + int type; + union { + ASN1_INTEGER *intNamedDays; + ASN1_BIT_STRING *bitNamedDays; + } choice; +} OSSL_NAMED_DAY; + +# define OSSL_TIME_SPEC_X_DAY_OF_FIRST 0 +# define OSSL_TIME_SPEC_X_DAY_OF_SECOND 1 +# define OSSL_TIME_SPEC_X_DAY_OF_THIRD 2 +# define OSSL_TIME_SPEC_X_DAY_OF_FOURTH 3 +# define OSSL_TIME_SPEC_X_DAY_OF_FIFTH 4 + +typedef struct OSSL_TIME_SPEC_X_DAY_OF_st { + int type; + union { + OSSL_NAMED_DAY *first; + OSSL_NAMED_DAY *second; + OSSL_NAMED_DAY *third; + OSSL_NAMED_DAY *fourth; + OSSL_NAMED_DAY *fifth; + } choice; +} OSSL_TIME_SPEC_X_DAY_OF; + +# define OSSL_TIME_SPEC_DAY_TYPE_INT 0 +# define OSSL_TIME_SPEC_DAY_TYPE_BIT 1 +# define OSSL_TIME_SPEC_DAY_TYPE_DAY_OF 2 +# define OSSL_TIME_SPEC_DAY_BIT_SUN 0 +# define OSSL_TIME_SPEC_DAY_BIT_MON 1 +# define OSSL_TIME_SPEC_DAY_BIT_TUE 2 +# define OSSL_TIME_SPEC_DAY_BIT_WED 3 +# define OSSL_TIME_SPEC_DAY_BIT_THU 4 +# define OSSL_TIME_SPEC_DAY_BIT_FRI 5 +# define OSSL_TIME_SPEC_DAY_BIT_SAT 6 +# define OSSL_TIME_SPEC_DAY_INT_SUN 1 +# define OSSL_TIME_SPEC_DAY_INT_MON 2 +# define OSSL_TIME_SPEC_DAY_INT_TUE 3 +# define OSSL_TIME_SPEC_DAY_INT_WED 4 +# define OSSL_TIME_SPEC_DAY_INT_THU 5 +# define OSSL_TIME_SPEC_DAY_INT_FRI 6 +# define OSSL_TIME_SPEC_DAY_INT_SAT 7 + +typedef struct OSSL_TIME_SPEC_DAY_st { + int type; + union { + STACK_OF(ASN1_INTEGER) *intDay; + ASN1_BIT_STRING *bitDay; + OSSL_TIME_SPEC_X_DAY_OF *dayOf; + } choice; +} OSSL_TIME_SPEC_DAY; + +# define OSSL_TIME_SPEC_WEEKS_TYPE_ALL 0 +# define OSSL_TIME_SPEC_WEEKS_TYPE_INT 1 +# define OSSL_TIME_SPEC_WEEKS_TYPE_BIT 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_1 0 +# define OSSL_TIME_SPEC_BIT_WEEKS_2 1 +# define OSSL_TIME_SPEC_BIT_WEEKS_3 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_4 3 +# define OSSL_TIME_SPEC_BIT_WEEKS_5 4 + +typedef struct OSSL_TIME_SPEC_WEEKS_st { + int type; + union { + ASN1_NULL *allWeeks; + STACK_OF(ASN1_INTEGER) *intWeek; + ASN1_BIT_STRING *bitWeek; + } choice; +} OSSL_TIME_SPEC_WEEKS; + +# define OSSL_TIME_SPEC_MONTH_TYPE_ALL 0 +# define OSSL_TIME_SPEC_MONTH_TYPE_INT 1 +# define OSSL_TIME_SPEC_MONTH_TYPE_BIT 2 +# define OSSL_TIME_SPEC_INT_MONTH_JAN 1 +# define OSSL_TIME_SPEC_INT_MONTH_FEB 2 +# define OSSL_TIME_SPEC_INT_MONTH_MAR 3 +# define OSSL_TIME_SPEC_INT_MONTH_APR 4 +# define OSSL_TIME_SPEC_INT_MONTH_MAY 5 +# define OSSL_TIME_SPEC_INT_MONTH_JUN 6 +# define OSSL_TIME_SPEC_INT_MONTH_JUL 7 +# define OSSL_TIME_SPEC_INT_MONTH_AUG 8 +# define OSSL_TIME_SPEC_INT_MONTH_SEP 9 +# define OSSL_TIME_SPEC_INT_MONTH_OCT 10 +# define OSSL_TIME_SPEC_INT_MONTH_NOV 11 +# define OSSL_TIME_SPEC_INT_MONTH_DEC 12 +# define OSSL_TIME_SPEC_BIT_MONTH_JAN 0 +# define OSSL_TIME_SPEC_BIT_MONTH_FEB 1 +# define OSSL_TIME_SPEC_BIT_MONTH_MAR 2 +# define OSSL_TIME_SPEC_BIT_MONTH_APR 3 +# define OSSL_TIME_SPEC_BIT_MONTH_MAY 4 +# define OSSL_TIME_SPEC_BIT_MONTH_JUN 5 +# define OSSL_TIME_SPEC_BIT_MONTH_JUL 6 +# define OSSL_TIME_SPEC_BIT_MONTH_AUG 7 +# define OSSL_TIME_SPEC_BIT_MONTH_SEP 8 +# define OSSL_TIME_SPEC_BIT_MONTH_OCT 9 +# define OSSL_TIME_SPEC_BIT_MONTH_NOV 10 +# define OSSL_TIME_SPEC_BIT_MONTH_DEC 11 + +typedef struct OSSL_TIME_SPEC_MONTH_st { + int type; + union { + ASN1_NULL *allMonths; + STACK_OF(ASN1_INTEGER) *intMonth; + ASN1_BIT_STRING *bitMonth; + } choice; +} OSSL_TIME_SPEC_MONTH; + +typedef struct OSSL_TIME_PERIOD_st { + STACK_OF(OSSL_DAY_TIME_BAND) *timesOfDay; + OSSL_TIME_SPEC_DAY *days; + OSSL_TIME_SPEC_WEEKS *weeks; + OSSL_TIME_SPEC_MONTH *months; + STACK_OF(ASN1_INTEGER) *years; +} OSSL_TIME_PERIOD; + +# define OSSL_TIME_SPEC_TIME_TYPE_ABSOLUTE 0 +# define OSSL_TIME_SPEC_TIME_TYPE_PERIODIC 1 + +typedef struct OSSL_TIME_SPEC_TIME_st { + int type; + union { + OSSL_TIME_SPEC_ABSOLUTE *absolute; + STACK_OF(OSSL_TIME_PERIOD) *periodic; + } choice; +} OSSL_TIME_SPEC_TIME; + +typedef struct OSSL_TIME_SPEC_st { + OSSL_TIME_SPEC_TIME *time; + ASN1_BOOLEAN notThisTime; + ASN1_INTEGER *timeZone; +} OSSL_TIME_SPEC; + +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME_BAND) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_WEEKS) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_MONTH) +DECLARE_ASN1_FUNCTIONS(OSSL_NAMED_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_X_DAY_OF) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_ABSOLUTE) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_PERIOD) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TIME_PERIOD, OSSL_TIME_PERIOD, OSSL_TIME_PERIOD) +#define sk_OSSL_TIME_PERIOD_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_value(sk, idx) ((OSSL_TIME_PERIOD *)OPENSSL_sk_value(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), (idx))) +#define sk_OSSL_TIME_PERIOD_new(cmp) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) +#define sk_OSSL_TIME_PERIOD_new_null() ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TIME_PERIOD_new_reserve(cmp, n) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp), (n))) +#define sk_OSSL_TIME_PERIOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (n)) +#define sk_OSSL_TIME_PERIOD_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_delete(sk, i) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (i))) +#define sk_OSSL_TIME_PERIOD_delete_ptr(sk, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_pop(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_pop(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_shift(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_shift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk),ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc)) +#define sk_OSSL_TIME_PERIOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), (idx)) +#define sk_OSSL_TIME_PERIOD_set(sk, idx, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_set(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (idx), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), pnum) +#define sk_OSSL_TIME_PERIOD_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_dup(sk) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_copyfunc_type(copyfunc), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc))) +#define sk_OSSL_TIME_PERIOD_set_cmp_func(sk, cmp) ((sk_OSSL_TIME_PERIOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND) +#define sk_OSSL_DAY_TIME_BAND_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_value(sk, idx) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_value(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), (idx))) +#define sk_OSSL_DAY_TIME_BAND_new(cmp) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) +#define sk_OSSL_DAY_TIME_BAND_new_null() ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_null()) +#define sk_OSSL_DAY_TIME_BAND_new_reserve(cmp, n) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp), (n))) +#define sk_OSSL_DAY_TIME_BAND_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (n)) +#define sk_OSSL_DAY_TIME_BAND_free(sk) OPENSSL_sk_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_delete(sk, i) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (i))) +#define sk_OSSL_DAY_TIME_BAND_delete_ptr(sk, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_pop(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_pop(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_shift(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_shift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk),ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc)) +#define sk_OSSL_DAY_TIME_BAND_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), (idx)) +#define sk_OSSL_DAY_TIME_BAND_set(sk, idx, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_set(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (idx), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), pnum) +#define sk_OSSL_DAY_TIME_BAND_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_dup(sk) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_dup(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_copyfunc_type(copyfunc), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc))) +#define sk_OSSL_DAY_TIME_BAND_set_cmp_func(sk, cmp) ((sk_OSSL_DAY_TIME_BAND_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) + + +/* Attribute Type and Value */ +typedef struct atav_st { + ASN1_OBJECT *type; + ASN1_TYPE *value; +} OSSL_ATAV; + +typedef struct ATTRIBUTE_TYPE_MAPPING_st { + ASN1_OBJECT *local; + ASN1_OBJECT *remote; +} OSSL_ATTRIBUTE_TYPE_MAPPING; + +typedef struct ATTRIBUTE_VALUE_MAPPING_st { + OSSL_ATAV *local; + OSSL_ATAV *remote; +} OSSL_ATTRIBUTE_VALUE_MAPPING; + +# define OSSL_ATTR_MAP_TYPE 0 +# define OSSL_ATTR_MAP_VALUE 1 + +typedef struct ATTRIBUTE_MAPPING_st { + int type; + union { + OSSL_ATTRIBUTE_TYPE_MAPPING *typeMappings; + OSSL_ATTRIBUTE_VALUE_MAPPING *typeValueMappings; + } choice; +} OSSL_ATTRIBUTE_MAPPING; + +typedef STACK_OF(OSSL_ATTRIBUTE_MAPPING) OSSL_ATTRIBUTE_MAPPINGS; +DECLARE_ASN1_FUNCTIONS(OSSL_ATAV) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_TYPE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_VALUE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPINGS) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING) +#define sk_OSSL_ATTRIBUTE_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_value(sk, idx) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_value(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new(cmp) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_null() ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_reserve(cmp, n) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp), (n))) +#define sk_OSSL_ATTRIBUTE_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (n)) +#define sk_OSSL_ATTRIBUTE_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete(sk, i) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (i))) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete_ptr(sk, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_pop(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_shift(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_shift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk),ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc)) +#define sk_OSSL_ATTRIBUTE_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), (idx)) +#define sk_OSSL_ATTRIBUTE_MAPPING_set(sk, idx, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_set(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), pnum) +#define sk_OSSL_ATTRIBUTE_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_dup(sk) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_copyfunc_type(copyfunc), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc))) +#define sk_OSSL_ATTRIBUTE_MAPPING_set_cmp_func(sk, cmp) ((sk_OSSL_ATTRIBUTE_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) + + +# define OSSL_AAA_ATTRIBUTE_TYPE 0 +# define OSSL_AAA_ATTRIBUTE_VALUES 1 + +typedef struct ALLOWED_ATTRIBUTES_CHOICE_st { + int type; + union { + ASN1_OBJECT *attributeType; + X509_ATTRIBUTE *attributeTypeandValues; + } choice; +} OSSL_ALLOWED_ATTRIBUTES_CHOICE; + +typedef struct ALLOWED_ATTRIBUTES_ITEM_st { + STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *attributes; + GENERAL_NAME *holderDomain; +} OSSL_ALLOWED_ATTRIBUTES_ITEM; + +typedef STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) OSSL_ALLOWED_ATTRIBUTES_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_CHOICE) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_ITEM) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) + + +typedef struct AA_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + int dp_reasons; + ASN1_BOOLEAN indirectCRL; + ASN1_BOOLEAN containsUserAttributeCerts; + ASN1_BOOLEAN containsAACerts; + ASN1_BOOLEAN containsSOAPublicKeyCerts; +} OSSL_AA_DIST_POINT; + +DECLARE_ASN1_FUNCTIONS(OSSL_AA_DIST_POINT) + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/progs.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/progs.h index be55f61503d405..1b62ec37dec130 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/progs.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/progs.h @@ -56,6 +56,7 @@ extern int s_client_main(int argc, char *argv[]); extern int s_server_main(int argc, char *argv[]); extern int s_time_main(int argc, char *argv[]); extern int sess_id_main(int argc, char *argv[]); +extern int skeyutl_main(int argc, char *argv[]); extern int smime_main(int argc, char *argv[]); extern int speed_main(int argc, char *argv[]); extern int spkac_main(int argc, char *argv[]); @@ -110,6 +111,7 @@ extern const OPTIONS s_client_options[]; extern const OPTIONS s_server_options[]; extern const OPTIONS s_time_options[]; extern const OPTIONS sess_id_options[]; +extern const OPTIONS skeyutl_options[]; extern const OPTIONS smime_options[]; extern const OPTIONS speed_options[]; extern const OPTIONS spkac_options[]; diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/openssl-cl.gypi b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/openssl-cl.gypi index 5eafa74db33530..b157348b51b406 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/openssl-cl.gypi +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/openssl-cl.gypi @@ -88,6 +88,7 @@ 'openssl/apps/s_server.c', 'openssl/apps/s_time.c', 'openssl/apps/sess_id.c', + 'openssl/apps/skeyutl.c', 'openssl/apps/smime.c', 'openssl/apps/speed.c', 'openssl/apps/spkac.c', @@ -103,12 +104,14 @@ 'openssl/apps/lib/app_rand.c', 'openssl/apps/lib/app_x509.c', 'openssl/apps/lib/apps.c', + 'openssl/apps/lib/apps_opt_printf.c', 'openssl/apps/lib/apps_ui.c', 'openssl/apps/lib/columns.c', 'openssl/apps/lib/engine.c', 'openssl/apps/lib/engine_loader.c', 'openssl/apps/lib/fmt.c', 'openssl/apps/lib/http_server.c', + 'openssl/apps/lib/log.c', 'openssl/apps/lib/names.c', 'openssl/apps/lib/opt.c', 'openssl/apps/lib/s_cb.c', diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/openssl-fips.gypi b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/openssl-fips.gypi index 205df43d3ce86a..b7d8cbbfab1747 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/openssl-fips.gypi +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/openssl-fips.gypi @@ -101,14 +101,15 @@ 'openssl/crypto/evp/kem.c', 'openssl/crypto/evp/keymgmt_lib.c', 'openssl/crypto/evp/keymgmt_meth.c', - 'openssl/crypto/evp/m_sigver.c', 'openssl/crypto/evp/mac_lib.c', 'openssl/crypto/evp/mac_meth.c', 'openssl/crypto/evp/p_lib.c', 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -116,6 +117,8 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', @@ -145,6 +148,16 @@ 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -153,6 +166,7 @@ 'openssl/crypto/modes/ofb128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/property/defn_cache.c', 'openssl/crypto/property/property.c', 'openssl/crypto/property/property_parse.c', @@ -180,7 +194,23 @@ 'openssl/crypto/sha/sha256.c', 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/stack/stack.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/providers/common/der/der_rsa_sig.c', 'openssl/providers/common/bio_prov.c', 'openssl/providers/common/capabilities.c', @@ -189,6 +219,7 @@ 'openssl/providers/common/provider_util.c', 'openssl/providers/common/securitycheck.c', 'openssl/providers/common/securitycheck_fips.c', + 'openssl/providers/fips/fipsindicator.c', 'openssl/providers/fips/fipsprov.c', 'openssl/providers/fips/self_test.c', 'openssl/providers/fips/self_test_kats.c', @@ -226,6 +257,8 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -233,29 +266,39 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/cmac_prov.c', 'openssl/providers/implementations/macs/gmac_prov.c', 'openssl/providers/implementations/macs/hmac_prov.c', 'openssl/providers/implementations/macs/kmac_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', + 'openssl/providers/implementations/rands/fips_crng_test.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/signature/dsa_sig.c', 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -266,7 +309,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/fips/fips_entry.c', ], @@ -276,10 +319,16 @@ './config/archs/VC-WIN64A/asm_avx2/crypto/aes/aesni-sha1-x86_64.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/aes/aesni-sha256-x86_64.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/aes/aesni-x86_64.asm', + './config/archs/VC-WIN64A/asm_avx2/crypto/aes/aesni-xts-avx512.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/aes/bsaes-x86_64.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/aes/vpaes-x86_64.asm', + './config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-2k-avx512.asm', + './config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-2k-avxifma.asm', + './config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-3k-avx512.asm', + './config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-3k-avxifma.asm', + './config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-4k-avx512.asm', + './config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-4k-avxifma.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-avx2.asm', - './config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-avx512.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-x86_64.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/bn/x86_64-gf2m.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/bn/x86_64-mont.asm', @@ -288,8 +337,10 @@ './config/archs/VC-WIN64A/asm_avx2/crypto/chacha/chacha-x86_64.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/ec/ecp_nistz256-x86_64.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/ec/x25519-x86_64.asm', + './config/archs/VC-WIN64A/asm_avx2/crypto/params_idx.c', './config/archs/VC-WIN64A/asm_avx2/crypto/x86_64cpuid.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/md5/md5-x86_64.asm', + './config/archs/VC-WIN64A/asm_avx2/crypto/modes/aes-gcm-avx512.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/modes/aesni-gcm-x86_64.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/modes/ghash-x86_64.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/poly1305/poly1305-x86_64.asm', @@ -308,7 +359,9 @@ './config/archs/VC-WIN64A/asm_avx2/providers/common/der/der_dsa_gen.c', './config/archs/VC-WIN64A/asm_avx2/providers/common/der/der_ec_gen.c', './config/archs/VC-WIN64A/asm_avx2/providers/common/der/der_ecx_gen.c', + './config/archs/VC-WIN64A/asm_avx2/providers/common/der/der_ml_dsa_gen.c', './config/archs/VC-WIN64A/asm_avx2/providers/common/der/der_rsa_gen.c', + './config/archs/VC-WIN64A/asm_avx2/providers/common/der/der_slh_dsa_gen.c', './config/archs/VC-WIN64A/asm_avx2/providers/common/der/der_wrap_gen.c', ], diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/openssl.gypi b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/openssl.gypi index 89b4bcd47f1180..ad55f0a83204fe 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/openssl.gypi +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/openssl.gypi @@ -7,14 +7,15 @@ 'openssl/ssl/d1_srtp.c', 'openssl/ssl/methods.c', 'openssl/ssl/pqueue.c', + 'openssl/ssl/priority_queue.c', 'openssl/ssl/s3_enc.c', 'openssl/ssl/s3_lib.c', 'openssl/ssl/s3_msg.c', 'openssl/ssl/ssl_asn1.c', 'openssl/ssl/ssl_cert.c', + 'openssl/ssl/ssl_cert_comp.c', 'openssl/ssl/ssl_ciph.c', 'openssl/ssl/ssl_conf.c', - 'openssl/ssl/ssl_err.c', 'openssl/ssl/ssl_err_legacy.c', 'openssl/ssl/ssl_init.c', 'openssl/ssl/ssl_lib.c', @@ -31,12 +32,60 @@ 'openssl/ssl/tls13_enc.c', 'openssl/ssl/tls_depr.c', 'openssl/ssl/tls_srp.c', - 'openssl/ssl/record/dtls1_bitmap.c', + 'openssl/ssl/quic/cc_newreno.c', + 'openssl/ssl/quic/json_enc.c', + 'openssl/ssl/quic/qlog.c', + 'openssl/ssl/quic/qlog_event_helpers.c', + 'openssl/ssl/quic/quic_ackm.c', + 'openssl/ssl/quic/quic_cfq.c', + 'openssl/ssl/quic/quic_channel.c', + 'openssl/ssl/quic/quic_demux.c', + 'openssl/ssl/quic/quic_engine.c', + 'openssl/ssl/quic/quic_fc.c', + 'openssl/ssl/quic/quic_fifd.c', + 'openssl/ssl/quic/quic_impl.c', + 'openssl/ssl/quic/quic_lcidm.c', + 'openssl/ssl/quic/quic_method.c', + 'openssl/ssl/quic/quic_obj.c', + 'openssl/ssl/quic/quic_port.c', + 'openssl/ssl/quic/quic_rcidm.c', + 'openssl/ssl/quic/quic_reactor.c', + 'openssl/ssl/quic/quic_reactor_wait_ctx.c', + 'openssl/ssl/quic/quic_record_rx.c', + 'openssl/ssl/quic/quic_record_shared.c', + 'openssl/ssl/quic/quic_record_tx.c', + 'openssl/ssl/quic/quic_record_util.c', + 'openssl/ssl/quic/quic_rstream.c', + 'openssl/ssl/quic/quic_rx_depack.c', + 'openssl/ssl/quic/quic_sf_list.c', + 'openssl/ssl/quic/quic_srt_gen.c', + 'openssl/ssl/quic/quic_srtm.c', + 'openssl/ssl/quic/quic_sstream.c', + 'openssl/ssl/quic/quic_statm.c', + 'openssl/ssl/quic/quic_stream_map.c', + 'openssl/ssl/quic/quic_thread_assist.c', + 'openssl/ssl/quic/quic_tls.c', + 'openssl/ssl/quic/quic_tls_api.c', + 'openssl/ssl/quic/quic_trace.c', + 'openssl/ssl/quic/quic_tserver.c', + 'openssl/ssl/quic/quic_txp.c', + 'openssl/ssl/quic/quic_txpim.c', + 'openssl/ssl/quic/quic_types.c', + 'openssl/ssl/quic/quic_wire.c', + 'openssl/ssl/quic/quic_wire_pkt.c', + 'openssl/ssl/quic/uint_set.c', 'openssl/ssl/record/rec_layer_d1.c', 'openssl/ssl/record/rec_layer_s3.c', - 'openssl/ssl/record/ssl3_buffer.c', - 'openssl/ssl/record/ssl3_record.c', - 'openssl/ssl/record/ssl3_record_tls13.c', + 'openssl/ssl/record/methods/dtls_meth.c', + 'openssl/ssl/record/methods/ssl3_meth.c', + 'openssl/ssl/record/methods/tls13_meth.c', + 'openssl/ssl/record/methods/tls1_meth.c', + 'openssl/ssl/record/methods/tls_common.c', + 'openssl/ssl/record/methods/tls_multib.c', + 'openssl/ssl/record/methods/tlsany_meth.c', + 'openssl/ssl/rio/poll_builder.c', + 'openssl/ssl/rio/poll_immediate.c', + 'openssl/ssl/rio/rio_notifier.c', 'openssl/ssl/statem/extensions.c', 'openssl/ssl/statem/extensions_clnt.c', 'openssl/ssl/statem/extensions_cust.c', @@ -148,6 +197,7 @@ 'openssl/crypto/bio/bss_conn.c', 'openssl/crypto/bio/bss_core.c', 'openssl/crypto/bio/bss_dgram.c', + 'openssl/crypto/bio/bss_dgram_pair.c', 'openssl/crypto/bio/bss_fd.c', 'openssl/crypto/bio/bss_file.c', 'openssl/crypto/bio/bss_log.c', @@ -207,6 +257,7 @@ 'openssl/crypto/cmp/cmp_client.c', 'openssl/crypto/cmp/cmp_ctx.c', 'openssl/crypto/cmp/cmp_err.c', + 'openssl/crypto/cmp/cmp_genm.c', 'openssl/crypto/cmp/cmp_hdr.c', 'openssl/crypto/cmp/cmp_http.c', 'openssl/crypto/cmp/cmp_msg.c', @@ -383,7 +434,9 @@ 'openssl/crypto/err/err_all.c', 'openssl/crypto/err/err_all_legacy.c', 'openssl/crypto/err/err_blocks.c', + 'openssl/crypto/err/err_mark.c', 'openssl/crypto/err/err_prn.c', + 'openssl/crypto/err/err_save.c', 'openssl/crypto/ess/ess_asn1.c', 'openssl/crypto/ess/ess_err.c', 'openssl/crypto/ess/ess_lib.c', @@ -466,7 +519,9 @@ 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -474,7 +529,11 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', + 'openssl/crypto/hpke/hpke.c', + 'openssl/crypto/hpke/hpke_util.c', 'openssl/crypto/http/http_client.c', 'openssl/crypto/http/http_err.c', 'openssl/crypto/http/http_lib.c', @@ -488,6 +547,7 @@ 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', 'openssl/crypto/bsearch.c', + 'openssl/crypto/comp_methods.c', 'openssl/crypto/context.c', 'openssl/crypto/core_algorithm.c', 'openssl/crypto/core_fetch.c', @@ -497,10 +557,13 @@ 'openssl/crypto/cryptlib.c', 'openssl/crypto/ctype.c', 'openssl/crypto/cversion.c', + 'openssl/crypto/defaults.c', 'openssl/crypto/der_writer.c', + 'openssl/crypto/deterministic_nonce.c', 'openssl/crypto/ebcdic.c', 'openssl/crypto/ex_data.c', 'openssl/crypto/getenv.c', + 'openssl/crypto/indicator_core.c', 'openssl/crypto/info.c', 'openssl/crypto/init.c', 'openssl/crypto/initthread.c', @@ -524,12 +587,16 @@ 'openssl/crypto/provider_core.c', 'openssl/crypto/provider_predefined.c', 'openssl/crypto/punycode.c', + 'openssl/crypto/quic_vlint.c', 'openssl/crypto/self_test_core.c', + 'openssl/crypto/sleep.c', 'openssl/crypto/sparse_array.c', + 'openssl/crypto/ssl_err.c', 'openssl/crypto/threads_lib.c', 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', 'openssl/crypto/trace.c', 'openssl/crypto/uid.c', 'openssl/crypto/md4/md4_dgst.c', @@ -539,6 +606,15 @@ 'openssl/crypto/md5/md5_sha1.c', 'openssl/crypto/mdc2/mdc2_one.c', 'openssl/crypto/mdc2/mdc2dgst.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -550,6 +626,7 @@ 'openssl/crypto/modes/siv128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/objects/o_names.c', 'openssl/crypto/objects/obj_dat.c', 'openssl/crypto/objects/obj_err.c', @@ -613,6 +690,7 @@ 'openssl/crypto/rand/rand_lib.c', 'openssl/crypto/rand/rand_meth.c', 'openssl/crypto/rand/rand_pool.c', + 'openssl/crypto/rand/rand_uniform.c', 'openssl/crypto/rand/randfile.c', 'openssl/crypto/rc2/rc2_cbc.c', 'openssl/crypto/rc2/rc2_ecb.c', @@ -658,6 +736,16 @@ 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', 'openssl/crypto/siphash/siphash.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/sm2/sm2_crypt.c', 'openssl/crypto/sm2/sm2_err.c', 'openssl/crypto/sm2/sm2_key.c', @@ -675,6 +763,12 @@ 'openssl/crypto/store/store_register.c', 'openssl/crypto/store/store_result.c', 'openssl/crypto/store/store_strings.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/crypto/ts/ts_asn1.c', 'openssl/crypto/ts/ts_conf.c', 'openssl/crypto/ts/ts_err.c', @@ -702,14 +796,22 @@ 'openssl/crypto/x509/pcy_map.c', 'openssl/crypto/x509/pcy_node.c', 'openssl/crypto/x509/pcy_tree.c', + 'openssl/crypto/x509/t_acert.c', 'openssl/crypto/x509/t_crl.c', 'openssl/crypto/x509/t_req.c', 'openssl/crypto/x509/t_x509.c', + 'openssl/crypto/x509/v3_aaa.c', + 'openssl/crypto/x509/v3_ac_tgt.c', 'openssl/crypto/x509/v3_addr.c', 'openssl/crypto/x509/v3_admis.c', 'openssl/crypto/x509/v3_akeya.c', 'openssl/crypto/x509/v3_akid.c', 'openssl/crypto/x509/v3_asid.c', + 'openssl/crypto/x509/v3_attrdesc.c', + 'openssl/crypto/x509/v3_attrmap.c', + 'openssl/crypto/x509/v3_audit_id.c', + 'openssl/crypto/x509/v3_authattid.c', + 'openssl/crypto/x509/v3_battcons.c', 'openssl/crypto/x509/v3_bcons.c', 'openssl/crypto/x509/v3_bitst.c', 'openssl/crypto/x509/v3_conf.c', @@ -718,12 +820,17 @@ 'openssl/crypto/x509/v3_enum.c', 'openssl/crypto/x509/v3_extku.c', 'openssl/crypto/x509/v3_genn.c', + 'openssl/crypto/x509/v3_group_ac.c', 'openssl/crypto/x509/v3_ia5.c', + 'openssl/crypto/x509/v3_ind_iss.c', 'openssl/crypto/x509/v3_info.c', 'openssl/crypto/x509/v3_int.c', + 'openssl/crypto/x509/v3_iobo.c', 'openssl/crypto/x509/v3_ist.c', 'openssl/crypto/x509/v3_lib.c', 'openssl/crypto/x509/v3_ncons.c', + 'openssl/crypto/x509/v3_no_ass.c', + 'openssl/crypto/x509/v3_no_rev_avail.c', 'openssl/crypto/x509/v3_pci.c', 'openssl/crypto/x509/v3_pcia.c', 'openssl/crypto/x509/v3_pcons.c', @@ -731,13 +838,20 @@ 'openssl/crypto/x509/v3_pmaps.c', 'openssl/crypto/x509/v3_prn.c', 'openssl/crypto/x509/v3_purp.c', + 'openssl/crypto/x509/v3_rolespec.c', 'openssl/crypto/x509/v3_san.c', + 'openssl/crypto/x509/v3_sda.c', + 'openssl/crypto/x509/v3_single_use.c', 'openssl/crypto/x509/v3_skid.c', + 'openssl/crypto/x509/v3_soa_id.c', 'openssl/crypto/x509/v3_sxnet.c', + 'openssl/crypto/x509/v3_timespec.c', 'openssl/crypto/x509/v3_tlsf.c', + 'openssl/crypto/x509/v3_usernotice.c', 'openssl/crypto/x509/v3_utf8.c', 'openssl/crypto/x509/v3_utl.c', 'openssl/crypto/x509/v3err.c', + 'openssl/crypto/x509/x509_acert.c', 'openssl/crypto/x509/x509_att.c', 'openssl/crypto/x509/x509_cmp.c', 'openssl/crypto/x509/x509_d2.c', @@ -755,6 +869,7 @@ 'openssl/crypto/x509/x509_v3.c', 'openssl/crypto/x509/x509_vfy.c', 'openssl/crypto/x509/x509_vpm.c', + 'openssl/crypto/x509/x509aset.c', 'openssl/crypto/x509/x509cset.c', 'openssl/crypto/x509/x509name.c', 'openssl/crypto/x509/x509rset.c', @@ -764,6 +879,7 @@ 'openssl/crypto/x509/x_attrib.c', 'openssl/crypto/x509/x_crl.c', 'openssl/crypto/x509/x_exten.c', + 'openssl/crypto/x509/x_ietfatt.c', 'openssl/crypto/x509/x_name.c', 'openssl/crypto/x509/x_pubkey.c', 'openssl/crypto/x509/x_req.c', @@ -795,6 +911,9 @@ 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c', 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', @@ -819,7 +938,13 @@ 'openssl/providers/implementations/ciphers/cipher_cts.c', 'openssl/providers/implementations/ciphers/cipher_null.c', 'openssl/providers/implementations/ciphers/cipher_sm4.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm_hw.c', 'openssl/providers/implementations/ciphers/cipher_sm4_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts_hw.c', 'openssl/providers/implementations/ciphers/cipher_tdes.c', 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', 'openssl/providers/implementations/ciphers/cipher_tdes_default.c', @@ -848,11 +973,16 @@ 'openssl/providers/implementations/encode_decode/encode_key2ms.c', 'openssl/providers/implementations/encode_decode/encode_key2text.c', 'openssl/providers/implementations/encode_decode/endecoder_common.c', + 'openssl/providers/implementations/encode_decode/ml_common_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_dsa_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_kem_codecs.c', 'openssl/providers/implementations/exchange/dh_exch.c', 'openssl/providers/implementations/exchange/ecdh_exch.c', 'openssl/providers/implementations/exchange/ecx_exch.c', 'openssl/providers/implementations/exchange/kdf_exch.c', + 'openssl/providers/implementations/kdfs/argon2.c', 'openssl/providers/implementations/kdfs/hkdf.c', + 'openssl/providers/implementations/kdfs/hmacdrbg_kdf.c', 'openssl/providers/implementations/kdfs/kbkdf.c', 'openssl/providers/implementations/kdfs/krb5kdf.c', 'openssl/providers/implementations/kdfs/pbkdf2.c', @@ -863,6 +993,11 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ec_kem.c', + 'openssl/providers/implementations/kem/ecx_kem.c', + 'openssl/providers/implementations/kem/kem_util.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -870,7 +1005,11 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/blake2b_mac.c', 'openssl/providers/implementations/macs/blake2s_mac.c', 'openssl/providers/implementations/macs/cmac_prov.c', @@ -879,12 +1018,12 @@ 'openssl/providers/implementations/macs/kmac_prov.c', 'openssl/providers/implementations/macs/poly1305_prov.c', 'openssl/providers/implementations/macs/siphash_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', 'openssl/providers/implementations/rands/seed_src.c', + 'openssl/providers/implementations/rands/seed_src_jitter.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/rands/seeding/rand_cpu_x86.c', 'openssl/providers/implementations/rands/seeding/rand_tsc.c', @@ -894,17 +1033,24 @@ 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', 'openssl/providers/implementations/signature/sm2_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', 'openssl/providers/implementations/storemgmt/file_store.c', 'openssl/providers/implementations/storemgmt/file_store_any2obj.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/providers/implementations/storemgmt/winstore_store.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -915,7 +1061,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/implementations/ciphers/cipher_blowfish.c', 'openssl/providers/implementations/ciphers/cipher_blowfish_hw.c', 'openssl/providers/implementations/ciphers/cipher_cast5.c', @@ -940,6 +1086,7 @@ 'openssl/providers/implementations/digests/ripemd_prov.c', 'openssl/providers/implementations/digests/wp_prov.c', 'openssl/providers/implementations/kdfs/pbkdf1.c', + 'openssl/providers/implementations/kdfs/pvkkdf.c', 'openssl/providers/prov_running.c', 'openssl/providers/legacyprov.c', ], @@ -949,10 +1096,16 @@ './config/archs/VC-WIN64A/asm_avx2/crypto/aes/aesni-sha1-x86_64.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/aes/aesni-sha256-x86_64.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/aes/aesni-x86_64.asm', + './config/archs/VC-WIN64A/asm_avx2/crypto/aes/aesni-xts-avx512.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/aes/bsaes-x86_64.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/aes/vpaes-x86_64.asm', + './config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-2k-avx512.asm', + './config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-2k-avxifma.asm', + './config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-3k-avx512.asm', + './config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-3k-avxifma.asm', + './config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-4k-avx512.asm', + './config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-4k-avxifma.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-avx2.asm', - './config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-avx512.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/bn/rsaz-x86_64.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/bn/x86_64-gf2m.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/bn/x86_64-mont.asm', @@ -961,8 +1114,10 @@ './config/archs/VC-WIN64A/asm_avx2/crypto/chacha/chacha-x86_64.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/ec/ecp_nistz256-x86_64.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/ec/x25519-x86_64.asm', + './config/archs/VC-WIN64A/asm_avx2/crypto/params_idx.c', './config/archs/VC-WIN64A/asm_avx2/crypto/x86_64cpuid.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/md5/md5-x86_64.asm', + './config/archs/VC-WIN64A/asm_avx2/crypto/modes/aes-gcm-avx512.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/modes/aesni-gcm-x86_64.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/modes/ghash-x86_64.asm', './config/archs/VC-WIN64A/asm_avx2/crypto/poly1305/poly1305-x86_64.asm', @@ -981,7 +1136,9 @@ './config/archs/VC-WIN64A/asm_avx2/providers/common/der/der_dsa_gen.c', './config/archs/VC-WIN64A/asm_avx2/providers/common/der/der_ec_gen.c', './config/archs/VC-WIN64A/asm_avx2/providers/common/der/der_ecx_gen.c', + './config/archs/VC-WIN64A/asm_avx2/providers/common/der/der_ml_dsa_gen.c', './config/archs/VC-WIN64A/asm_avx2/providers/common/der/der_rsa_gen.c', + './config/archs/VC-WIN64A/asm_avx2/providers/common/der/der_slh_dsa_gen.c', './config/archs/VC-WIN64A/asm_avx2/providers/common/der/der_wrap_gen.c', ], 'openssl_defines_VC-WIN64A': [ diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/providers/common/der/der_ml_dsa_gen.c b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/providers/common/der/der_ml_dsa_gen.c new file mode 100644 index 00000000000000..4a8a113a268578 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/providers/common/der/der_ml_dsa_gen.c @@ -0,0 +1,37 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_ml_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44] = { + DER_OID_V_id_ml_dsa_44 +}; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65] = { + DER_OID_V_id_ml_dsa_65 +}; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87] = { + DER_OID_V_id_ml_dsa_87 +}; + diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/providers/common/der/der_slh_dsa_gen.c b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/providers/common/der/der_slh_dsa_gen.c new file mode 100644 index 00000000000000..1419a9515097dd --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/providers/common/der/der_slh_dsa_gen.c @@ -0,0 +1,100 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_slh_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s] = { + DER_OID_V_id_slh_dsa_sha2_128s +}; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f] = { + DER_OID_V_id_slh_dsa_sha2_128f +}; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s] = { + DER_OID_V_id_slh_dsa_sha2_192s +}; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f] = { + DER_OID_V_id_slh_dsa_sha2_192f +}; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s] = { + DER_OID_V_id_slh_dsa_sha2_256s +}; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f] = { + DER_OID_V_id_slh_dsa_sha2_256f +}; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s] = { + DER_OID_V_id_slh_dsa_shake_128s +}; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f] = { + DER_OID_V_id_slh_dsa_shake_128f +}; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s] = { + DER_OID_V_id_slh_dsa_shake_192s +}; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f] = { + DER_OID_V_id_slh_dsa_shake_192f +}; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s] = { + DER_OID_V_id_slh_dsa_shake_256s +}; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f] = { + DER_OID_V_id_slh_dsa_shake_256f +}; + diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/providers/common/include/prov/der_ml_dsa.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/providers/common/include/prov/der_ml_dsa.h new file mode 100644 index 00000000000000..c55f780ab4527c --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/providers/common/include/prov/der_ml_dsa.h @@ -0,0 +1,40 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_ml_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +#define DER_OID_V_id_ml_dsa_44 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x11 +#define DER_OID_SZ_id_ml_dsa_44 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44]; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +#define DER_OID_V_id_ml_dsa_65 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x12 +#define DER_OID_SZ_id_ml_dsa_65 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65]; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +#define DER_OID_V_id_ml_dsa_87 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x13 +#define DER_OID_SZ_id_ml_dsa_87 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87]; + + +int ossl_DER_w_algorithmIdentifier_ML_DSA(WPACKET *pkt, int tag, ML_DSA_KEY *key); diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/providers/common/include/prov/der_slh_dsa.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/providers/common/include/prov/der_slh_dsa.h new file mode 100644 index 00000000000000..760f8e7699be72 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/providers/common/include/prov/der_slh_dsa.h @@ -0,0 +1,103 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_slh_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x14 +#define DER_OID_SZ_id_slh_dsa_sha2_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s]; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x15 +#define DER_OID_SZ_id_slh_dsa_sha2_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f]; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x16 +#define DER_OID_SZ_id_slh_dsa_sha2_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s]; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x17 +#define DER_OID_SZ_id_slh_dsa_sha2_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f]; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x18 +#define DER_OID_SZ_id_slh_dsa_sha2_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s]; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x19 +#define DER_OID_SZ_id_slh_dsa_sha2_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f]; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +#define DER_OID_V_id_slh_dsa_shake_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1A +#define DER_OID_SZ_id_slh_dsa_shake_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s]; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +#define DER_OID_V_id_slh_dsa_shake_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1B +#define DER_OID_SZ_id_slh_dsa_shake_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f]; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +#define DER_OID_V_id_slh_dsa_shake_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1C +#define DER_OID_SZ_id_slh_dsa_shake_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s]; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +#define DER_OID_V_id_slh_dsa_shake_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1D +#define DER_OID_SZ_id_slh_dsa_shake_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f]; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +#define DER_OID_V_id_slh_dsa_shake_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1E +#define DER_OID_SZ_id_slh_dsa_shake_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s]; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +#define DER_OID_V_id_slh_dsa_shake_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1F +#define DER_OID_SZ_id_slh_dsa_shake_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f]; + + +int ossl_DER_w_algorithmIdentifier_SLH_DSA(WPACKET *pkt, int tag, SLH_DSA_KEY *key); diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/apps/progs.c b/deps/openssl/config/archs/VC-WIN64A/no-asm/apps/progs.c index 43cef00799b86e..acc204a3e6e781 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/apps/progs.c +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/apps/progs.c @@ -89,6 +89,7 @@ FUNCTION functions[] = { {FT_general, "s_time", s_time_main, s_time_options, NULL, NULL}, #endif {FT_general, "sess_id", sess_id_main, sess_id_options, NULL, NULL}, + {FT_general, "skeyutl", skeyutl_main, skeyutl_options, NULL, NULL}, {FT_general, "smime", smime_main, smime_options, NULL, NULL}, {FT_general, "speed", speed_main, speed_options, NULL, NULL}, {FT_general, "spkac", spkac_main, spkac_options, NULL, NULL}, @@ -225,9 +226,15 @@ FUNCTION functions[] = { {FT_cipher, "camellia-256-ecb", enc_main, enc_options, NULL}, #endif {FT_cipher, "base64", enc_main, enc_options, NULL}, -#ifdef ZLIB +#ifndef OPENSSL_NO_ZLIB {FT_cipher, "zlib", enc_main, enc_options, NULL}, #endif +#ifndef OPENSSL_NO_BROTLI + {FT_cipher, "brotli", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ZSTD + {FT_cipher, "zstd", enc_main, enc_options, NULL}, +#endif #ifndef OPENSSL_NO_DES {FT_cipher, "des", enc_main, enc_options, NULL}, #endif diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm b/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm index 854195aa427b28..5314c4fea23351 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm @@ -32,6 +32,7 @@ our %config = ( "CPPINCLUDES" => [], "CXXFLAGS" => [], "FIPSKEY" => "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813", + "FIPS_VENDOR" => "OpenSSL FIPS Provider", "HASHBANGPERL" => "/usr/bin/env perl", "LD" => "link", "LDFLAGS" => [ @@ -46,7 +47,7 @@ our %config = ( "RANLIB" => "ranlib", "RC" => "rc", "RCFLAGS" => [], - "api" => "30000", + "api" => "30500", "b32" => "0", "b64" => "1", "b64l" => "0", @@ -68,11 +69,13 @@ our %config = ( "doc/build.info", "test/build.info", "engines/build.info", + "exporters/build.info", "crypto/objects/build.info", "crypto/buffer/build.info", "crypto/bio/build.info", "crypto/stack/build.info", "crypto/lhash/build.info", + "crypto/hashtable/build.info", "crypto/rand/build.info", "crypto/evp/build.info", "crypto/asn1/build.info", @@ -90,6 +93,7 @@ our %config = ( "crypto/md5/build.info", "crypto/sha/build.info", "crypto/mdc2/build.info", + "crypto/ml_kem/build.info", "crypto/hmac/build.info", "crypto/ripemd/build.info", "crypto/whrlpool/build.info", @@ -131,11 +135,19 @@ our %config = ( "crypto/cmp/build.info", "crypto/encode_decode/build.info", "crypto/ffc/build.info", + "crypto/hpke/build.info", + "crypto/thread/build.info", + "crypto/ml_dsa/build.info", + "crypto/slh_dsa/build.info", + "ssl/record/build.info", + "ssl/rio/build.info", + "ssl/quic/build.info", "apps/lib/build.info", "providers/common/build.info", "providers/implementations/build.info", "providers/fips/build.info", "doc/man1/build.info", + "ssl/record/methods/build.info", "providers/common/der/build.info", "providers/implementations/digests/build.info", "providers/implementations/ciphers/build.info", @@ -149,6 +161,7 @@ our %config = ( "providers/implementations/encode_decode/build.info", "providers/implementations/storemgmt/build.info", "providers/implementations/kem/build.info", + "providers/implementations/skeymgmt/build.info", "providers/implementations/rands/seeding/build.info" ], "build_metadata" => "", @@ -166,7 +179,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.17", + "full_version" => "3.5.2", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -176,9 +189,9 @@ our %config = ( "major" => "3", "makedep_scheme" => "VC", "makedepcmd" => "\$(CC) /Zs /showIncludes", - "minor" => "0", + "minor" => "5", "openssl_api_defines" => [ - "OPENSSL_CONFIGURED_API=30000" + "OPENSSL_CONFIGURED_API=30500" ], "openssl_feature_defines" => [ "OPENSSL_RAND_SEED_OS", @@ -186,28 +199,42 @@ our %config = ( "OPENSSL_NO_AFALGENG", "OPENSSL_NO_ASAN", "OPENSSL_NO_ASM", + "OPENSSL_NO_BROTLI", + "OPENSSL_NO_BROTLI_DYNAMIC", "OPENSSL_NO_COMP", "OPENSSL_NO_CRYPTO_MDEBUG", "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE", + "OPENSSL_NO_DEMOS", "OPENSSL_NO_DEVCRYPTOENG", "OPENSSL_NO_EC_NISTP_64_GCC_128", "OPENSSL_NO_EGD", "OPENSSL_NO_EXTERNAL_TESTS", + "OPENSSL_NO_FIPS_JITTER", "OPENSSL_NO_FUZZ_AFL", "OPENSSL_NO_FUZZ_LIBFUZZER", + "OPENSSL_NO_H3DEMO", + "OPENSSL_NO_HQINTEROP", + "OPENSSL_NO_JITTER", "OPENSSL_NO_KTLS", "OPENSSL_NO_LOADERENG", "OPENSSL_NO_MD2", "OPENSSL_NO_MSAN", + "OPENSSL_NO_PIE", "OPENSSL_NO_RC5", "OPENSSL_NO_SCTP", "OPENSSL_NO_SSL3", "OPENSSL_NO_SSL3_METHOD", + "OPENSSL_NO_SSLKEYLOG", + "OPENSSL_NO_TFO", "OPENSSL_NO_TRACE", "OPENSSL_NO_UBSAN", "OPENSSL_NO_UNIT_TEST", "OPENSSL_NO_UPLINK", "OPENSSL_NO_WEAK_SSL_CIPHERS", + "OPENSSL_NO_ZLIB", + "OPENSSL_NO_ZLIB_DYNAMIC", + "OPENSSL_NO_ZSTD", + "OPENSSL_NO_ZSTD_DYNAMIC", "OPENSSL_NO_DYNAMIC_ENGINE" ], "openssl_other_defines" => [ @@ -217,11 +244,11 @@ our %config = ( "OPENSSL_SYS_WIN64A" ], "openssldir" => "", - "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "17", + "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", + "patch" => "2", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", - "perl_version" => "5.38.2", + "perl_version" => "5.34.0", "perlargv" => [ "no-comp", "no-shared", @@ -252,6 +279,7 @@ our %config = ( "LDLIBS" => undef, "MT" => undef, "MTFLAGS" => undef, + "OBJCOPY" => undef, "OPENSSL_LOCAL_CONFIG_DIR" => undef, "PERL" => undef, "RANLIB" => undef, @@ -271,11 +299,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "1 Jul 2025", + "release_date" => "5 Aug 2025", "shlib_version" => "3", "sourcedir" => ".", "target" => "VC-WIN64A", - "version" => "3.0.17" + "version" => "3.5.2" ); our %target = ( "AR" => "lib", @@ -290,7 +318,7 @@ our %target = ( "LDFLAGS" => "/nologo /debug", "MT" => "mt", "MTFLAGS" => "-nologo", - "RANLIB" => "CODE(0x562f363ed508)", + "RANLIB" => "CODE(0x55b8adae0460)", "RC" => "rc", "_conf_fname_int" => [ "Configurations/00-base-templates.conf", @@ -374,6 +402,8 @@ our %target = ( our @disablables = ( "acvp-tests", "afalgeng", + "apps", + "argon2", "aria", "asan", "asm", @@ -384,11 +414,14 @@ our @disablables = ( "autoload-config", "bf", "blake2", + "brotli", + "brotli-dynamic", "buildtest-c++", "bulk", "cached-fetch", "camellia", "capieng", + "winstore", "cast", "chacha", "cmac", @@ -397,11 +430,16 @@ our @disablables = ( "comp", "crypto-mdebug", "ct", + "default-thread-pool", + "demos", + "h3demo", + "hqinterop", "deprecated", "des", "devcryptoeng", "dgram", "dh", + "docs", "dsa", "dso", "dtls", @@ -411,6 +449,7 @@ our @disablables = ( "ec_nistp_64_gcc_128", "ecdh", "ecdsa", + "ecx", "egd", "engine", "err", @@ -418,10 +457,15 @@ our @disablables = ( "filenames", "fips", "fips-securitychecks", + "fips-post", + "fips-jitter", "fuzz-afl", "fuzz-libfuzzer", "gost", + "http", "idea", + "integrity-only-ciphers", + "jitter", "ktls", "legacy", "loadereng", @@ -429,6 +473,8 @@ our @disablables = ( "md2", "md4", "mdc2", + "ml-dsa", + "ml-kem", "module", "msan", "multiblock", @@ -437,10 +483,13 @@ our @disablables = ( "ocsp", "padlockeng", "pic", + "pie", "pinshared", "poly1305", "posix-io", "psk", + "quic", + "unstable-qlog", "rc2", "rc4", "rc5", @@ -454,7 +503,9 @@ our @disablables = ( "shared", "siphash", "siv", + "slh-dsa", "sm2", + "sm2-precomp", "sm3", "sm4", "sock", @@ -465,9 +516,13 @@ our @disablables = ( "ssl-trace", "static-engine", "stdio", + "sslkeylog", "tests", + "tfo", + "thread-pool", "threads", "tls", + "tls-deprecated-ec", "trace", "ts", "ubsan", @@ -478,6 +533,8 @@ our @disablables = ( "whirlpool", "zlib", "zlib-dynamic", + "zstd", + "zstd-dynamic", "ssl3", "ssl3-method", "tls1", @@ -499,33 +556,45 @@ our %disabled = ( "afalgeng" => "option", "asan" => "default", "asm" => "option", + "brotli" => "default", + "brotli-dynamic" => "default", "buildtest-c++" => "default", "comp" => "option", "crypto-mdebug" => "default", "crypto-mdebug-backtrace" => "default", + "demos" => "default", "devcryptoeng" => "default", "dynamic-engine" => "cascade", "ec_nistp_64_gcc_128" => "default", "egd" => "default", "external-tests" => "default", + "fips-jitter" => "default", "fuzz-afl" => "default", "fuzz-libfuzzer" => "default", + "h3demo" => "default", + "hqinterop" => "default", + "jitter" => "default", "ktls" => "default", "loadereng" => "cascade", "md2" => "default", "msan" => "default", + "pie" => "default", "rc5" => "default", "sctp" => "default", "shared" => "option", "ssl3" => "default", "ssl3-method" => "default", + "sslkeylog" => "default", + "tfo" => "default", "trace" => "default", "ubsan" => "default", "unit-test" => "default", "uplink" => "cascade", "weak-ssl-ciphers" => "default", "zlib" => "default", - "zlib-dynamic" => "default" + "zlib-dynamic" => "default", + "zstd" => "default", + "zstd-dynamic" => "default" ); our %withargs = (); our %unified_info = ( @@ -751,6 +820,11 @@ our %unified_info = ( "pod" => "1" } }, + "doc/man1/openssl-skeyutl.pod" => { + "doc/man1/openssl-skeyutl.pod.in" => { + "pod" => "1" + } + }, "doc/man1/openssl-smime.pod" => { "doc/man1/openssl-smime.pod.in" => { "pod" => "1" @@ -808,6 +882,21 @@ our %unified_info = ( } }, "generate" => { + "exporters/OpenSSLConfig.cmake" => { + "exporter" => "cmake" + }, + "exporters/OpenSSLConfigVersion.cmake" => { + "exporter" => "cmake" + }, + "exporters/libcrypto.pc" => { + "exporter" => "pkg-config" + }, + "exporters/libssl.pc" => { + "exporter" => "pkg-config" + }, + "exporters/openssl.pc" => { + "exporter" => "pkg-config" + }, "include/openssl/configuration.h" => { "skip" => "1" } @@ -828,6 +917,9 @@ our %unified_info = ( "providers/liblegacy.a" => { "noinst" => "1" }, + "providers/libtemplate.a" => { + "noinst" => "1" + }, "test/libtestutil.a" => { "has_main" => "1", "noinst" => "1" @@ -845,6 +937,9 @@ our %unified_info = ( } }, "programs" => { + "fuzz/acert-test" => { + "noinst" => "1" + }, "fuzz/asn1-test" => { "noinst" => "1" }, @@ -875,9 +970,60 @@ our %unified_info = ( "fuzz/ct-test" => { "noinst" => "1" }, + "fuzz/decoder-test" => { + "noinst" => "1" + }, + "fuzz/dtlsclient-test" => { + "noinst" => "1" + }, + "fuzz/dtlsserver-test" => { + "noinst" => "1" + }, + "fuzz/hashtable-test" => { + "noinst" => "1" + }, + "fuzz/ml-dsa-test" => { + "noinst" => "1" + }, + "fuzz/ml-kem-test" => { + "noinst" => "1" + }, + "fuzz/pem-test" => { + "noinst" => "1" + }, + "fuzz/provider-test" => { + "noinst" => "1" + }, + "fuzz/punycode-test" => { + "noinst" => "1" + }, + "fuzz/quic-client-test" => { + "noinst" => "1" + }, + "fuzz/quic-lcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-rcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-server-test" => { + "noinst" => "1" + }, + "fuzz/quic-srtm-test" => { + "noinst" => "1" + }, "fuzz/server-test" => { "noinst" => "1" }, + "fuzz/slh-dsa-test" => { + "noinst" => "1" + }, + "fuzz/smime-test" => { + "noinst" => "1" + }, + "fuzz/v3name-test" => { + "noinst" => "1" + }, "fuzz/x509-test" => { "noinst" => "1" }, @@ -929,18 +1075,30 @@ our %unified_info = ( "test/bftest" => { "noinst" => "1" }, + "test/bio_addr_test" => { + "noinst" => "1" + }, + "test/bio_base64_test" => { + "noinst" => "1" + }, "test/bio_callback_test" => { "noinst" => "1" }, "test/bio_core_test" => { "noinst" => "1" }, + "test/bio_dgram_test" => { + "noinst" => "1" + }, "test/bio_enc_test" => { "noinst" => "1" }, "test/bio_memleak_test" => { "noinst" => "1" }, + "test/bio_meth_test" => { + "noinst" => "1" + }, "test/bio_prefix_text" => { "noinst" => "1" }, @@ -950,6 +1108,9 @@ our %unified_info = ( "test/bio_readbuffer_test" => { "noinst" => "1" }, + "test/bio_tfo_test" => { + "noinst" => "1" + }, "test/bioprinttest" => { "noinst" => "1" }, @@ -959,6 +1120,9 @@ our %unified_info = ( "test/bntest" => { "noinst" => "1" }, + "test/build_wincrypt_test" => { + "noinst" => "1" + }, "test/buildtest_c_aes" => { "noinst" => "1" }, @@ -974,6 +1138,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => { "noinst" => "1" }, + "test/buildtest_c_byteorder" => { + "noinst" => "1" + }, "test/buildtest_c_camellia" => { "noinst" => "1" }, @@ -998,9 +1165,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => { "noinst" => "1" }, - "test/buildtest_c_core_names" => { - "noinst" => "1" - }, "test/buildtest_c_core_object" => { "noinst" => "1" }, @@ -1025,6 +1189,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => { "noinst" => "1" }, + "test/buildtest_c_e_ostime" => { + "noinst" => "1" + }, "test/buildtest_c_ebcdic" => { "noinst" => "1" }, @@ -1052,12 +1219,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => { "noinst" => "1" }, + "test/buildtest_c_hpke" => { + "noinst" => "1" + }, "test/buildtest_c_http" => { "noinst" => "1" }, "test/buildtest_c_idea" => { "noinst" => "1" }, + "test/buildtest_c_indicator" => { + "noinst" => "1" + }, "test/buildtest_c_kdf" => { "noinst" => "1" }, @@ -1073,6 +1246,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => { "noinst" => "1" }, + "test/buildtest_c_ml_kem" => { + "noinst" => "1" + }, "test/buildtest_c_modes" => { "noinst" => "1" }, @@ -1103,6 +1279,9 @@ our %unified_info = ( "test/buildtest_c_provider" => { "noinst" => "1" }, + "test/buildtest_c_quic" => { + "noinst" => "1" + }, "test/buildtest_c_rand" => { "noinst" => "1" }, @@ -1145,6 +1324,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => { "noinst" => "1" }, + "test/buildtest_c_thread" => { + "noinst" => "1" + }, "test/buildtest_c_tls1" => { "noinst" => "1" }, @@ -1160,6 +1342,12 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => { "noinst" => "1" }, + "test/byteorder_test" => { + "noinst" => "1" + }, + "test/ca_internals_test" => { + "noinst" => "1" + }, "test/casttest" => { "noinst" => "1" }, @@ -1244,6 +1432,9 @@ our %unified_info = ( "test/danetest" => { "noinst" => "1" }, + "test/decoder_propq_test" => { + "noinst" => "1" + }, "test/defltfips_test" => { "noinst" => "1" }, @@ -1316,15 +1507,24 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => { "noinst" => "1" }, + "test/evp_pkey_dhkem_test" => { + "noinst" => "1" + }, "test/evp_pkey_dparams_test" => { "noinst" => "1" }, "test/evp_pkey_provided_test" => { "noinst" => "1" }, + "test/evp_skey_test" => { + "noinst" => "1" + }, "test/evp_test" => { "noinst" => "1" }, + "test/evp_xof_test" => { + "noinst" => "1" + }, "test/exdatatest" => { "noinst" => "1" }, @@ -1352,6 +1552,9 @@ our %unified_info = ( "test/hmactest" => { "noinst" => "1" }, + "test/hpke_test" => { + "noinst" => "1" + }, "test/http_test" => { "noinst" => "1" }, @@ -1361,12 +1564,18 @@ our %unified_info = ( "test/igetest" => { "noinst" => "1" }, + "test/json_test" => { + "noinst" => "1" + }, "test/keymgmt_internal_test" => { "noinst" => "1" }, "test/lhash_test" => { "noinst" => "1" }, + "test/list_test" => { + "noinst" => "1" + }, "test/localetest" => { "noinst" => "1" }, @@ -1376,9 +1585,21 @@ our %unified_info = ( "test/mdc2test" => { "noinst" => "1" }, + "test/membio_test" => { + "noinst" => "1" + }, "test/memleaktest" => { "noinst" => "1" }, + "test/ml_dsa_test" => { + "noinst" => "1" + }, + "test/ml_kem_evp_extra_test" => { + "noinst" => "1" + }, + "test/ml_kem_internal_test" => { + "noinst" => "1" + }, "test/modes_internal_test" => { "noinst" => "1" }, @@ -1397,6 +1618,9 @@ our %unified_info = ( "test/packettest" => { "noinst" => "1" }, + "test/pairwise_fail_test" => { + "noinst" => "1" + }, "test/param_build_test" => { "noinst" => "1" }, @@ -1421,6 +1645,9 @@ our %unified_info = ( "test/pemtest" => { "noinst" => "1" }, + "test/pkcs12_api_test" => { + "noinst" => "1" + }, "test/pkcs12_format_test" => { "noinst" => "1" }, @@ -1436,6 +1663,9 @@ our %unified_info = ( "test/poly1305_internal_test" => { "noinst" => "1" }, + "test/priority_queue_test" => { + "noinst" => "1" + }, "test/property_test" => { "noinst" => "1" }, @@ -1445,6 +1675,9 @@ our %unified_info = ( "test/provfetchtest" => { "noinst" => "1" }, + "test/provider_default_search_path_test" => { + "noinst" => "1" + }, "test/provider_fallback_test" => { "noinst" => "1" }, @@ -1463,6 +1696,72 @@ our %unified_info = ( "test/punycode_test" => { "noinst" => "1" }, + "test/quic_ackm_test" => { + "noinst" => "1" + }, + "test/quic_cc_test" => { + "noinst" => "1" + }, + "test/quic_cfq_test" => { + "noinst" => "1" + }, + "test/quic_client_test" => { + "noinst" => "1" + }, + "test/quic_fc_test" => { + "noinst" => "1" + }, + "test/quic_fifd_test" => { + "noinst" => "1" + }, + "test/quic_lcidm_test" => { + "noinst" => "1" + }, + "test/quic_multistream_test" => { + "noinst" => "1" + }, + "test/quic_newcid_test" => { + "noinst" => "1" + }, + "test/quic_qlog_test" => { + "noinst" => "1" + }, + "test/quic_radix_test" => { + "noinst" => "1" + }, + "test/quic_rcidm_test" => { + "noinst" => "1" + }, + "test/quic_record_test" => { + "noinst" => "1" + }, + "test/quic_srt_gen_test" => { + "noinst" => "1" + }, + "test/quic_srtm_test" => { + "noinst" => "1" + }, + "test/quic_stream_test" => { + "noinst" => "1" + }, + "test/quic_tserver_test" => { + "noinst" => "1" + }, + "test/quic_txp_test" => { + "noinst" => "1" + }, + "test/quic_txpim_test" => { + "noinst" => "1" + }, + "test/quic_wire_test" => { + "noinst" => "1" + }, + "test/quicapitest" => { + "noinst" => "1" + }, + "test/quicfaultstest" => { + "noinst" => "1" + }, "test/rand_status_test" => { "noinst" => "1" }, @@ -1478,12 +1777,15 @@ our %unified_info = ( "test/rc5test" => { "noinst" => "1" }, - "test/rdrand_sanitytest" => { + "test/rdcpu_sanitytest" => { "noinst" => "1" }, "test/recordlentest" => { "noinst" => "1" }, + "test/rpktest" => { + "noinst" => "1" + }, "test/rsa_complex" => { "noinst" => "1" }, @@ -1496,6 +1798,12 @@ our %unified_info = ( "test/rsa_test" => { "noinst" => "1" }, + "test/rsa_x931_test" => { + "noinst" => "1" + }, + "test/safe_math_test" => { + "noinst" => "1" + }, "test/sanitytest" => { "noinst" => "1" }, @@ -1511,6 +1819,9 @@ our %unified_info = ( "test/siphash_internal_test" => { "noinst" => "1" }, + "test/slh_dsa_test" => { + "noinst" => "1" + }, "test/sm2_internal_test" => { "noinst" => "1" }, @@ -1532,6 +1843,9 @@ our %unified_info = ( "test/ssl_ctx_test" => { "noinst" => "1" }, + "test/ssl_handshake_rtt_test" => { + "noinst" => "1" + }, "test/ssl_old_test" => { "noinst" => "1" }, @@ -1553,12 +1867,18 @@ our %unified_info = ( "test/stack_test" => { "noinst" => "1" }, + "test/strtoultest" => { + "noinst" => "1" + }, "test/sysdefaulttest" => { "noinst" => "1" }, "test/test_test" => { "noinst" => "1" }, + "test/threadpool_test" => { + "noinst" => "1" + }, "test/threadstest" => { "noinst" => "1" }, @@ -1568,12 +1888,18 @@ our %unified_info = ( "test/time_offset_test" => { "noinst" => "1" }, + "test/time_test" => { + "noinst" => "1" + }, "test/tls13ccstest" => { "noinst" => "1" }, "test/tls13encryptiontest" => { "noinst" => "1" }, + "test/tls13groupselection_test" => { + "noinst" => "1" + }, "test/trace_api_test" => { "noinst" => "1" }, @@ -1601,6 +1927,9 @@ our %unified_info = ( "test/wpackettest" => { "noinst" => "1" }, + "test/x509_acert_test" => { + "noinst" => "1" + }, "test/x509_check_cert_pkey_test" => { "noinst" => "1" }, @@ -1610,6 +1939,15 @@ our %unified_info = ( "test/x509_internal_test" => { "noinst" => "1" }, + "test/x509_load_cert_file_test" => { + "noinst" => "1" + }, + "test/x509_req_test" => { + "noinst" => "1" + }, + "test/x509_test" => { + "noinst" => "1" + }, "test/x509_time_test" => { "noinst" => "1" }, @@ -1650,6 +1988,9 @@ our %unified_info = ( "providers/libfips.a" => [ "FIPS_MODULE" ], + "test/endecode_test" => [ + "STATIC_LEGACY" + ], "test/evp_extra_test" => [ "STATIC_LEGACY" ], @@ -1662,14 +2003,21 @@ our %unified_info = ( }, "depends" => { "" => [ + "OpenSSLConfigVersion.cmake", + "crypto/params_idx.c", + "exporters/OpenSSLConfigVersion.cmake", + "exporters/openssl.pc", "include/crypto/bn_conf.h", "include/crypto/dso_conf.h", + "include/internal/param_names.h", "include/openssl/asn1.h", "include/openssl/asn1t.h", "include/openssl/bio.h", "include/openssl/cmp.h", "include/openssl/cms.h", + "include/openssl/comp.h", "include/openssl/conf.h", + "include/openssl/core_names.h", "include/openssl/crmf.h", "include/openssl/crypto.h", "include/openssl/ct.h", @@ -1686,10 +2034,22 @@ our %unified_info = ( "include/openssl/ssl.h", "include/openssl/ui.h", "include/openssl/x509.h", + "include/openssl/x509_acert.h", "include/openssl/x509_vfy.h", "include/openssl/x509v3.h", + "openssl.pc", "test/provider_internal_test.cnf" ], + "OpenSSLConfig.cmake" => [ + "builddata.pm" + ], + "OpenSSLConfigVersion.cmake" => [ + "OpenSSLConfig.cmake", + "builddata.pm" + ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/progs.h" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/progs.h" ], @@ -1835,6 +2195,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/progs.h" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/progs.h" + ], "apps/openssl-bin-smime.o" => [ "apps/progs.h" ], @@ -1923,6 +2286,9 @@ our %unified_info = ( "crypto/libcrypto-lib-info.o" => [ "crypto/buildinf.h" ], + "crypto/params_idx.c" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "crypto/rc4/rc4-586.S" => [ "crypto/perlasm/x86asm.pl" ], @@ -2088,6 +2454,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -2229,6 +2598,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -2265,6 +2637,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -2280,6 +2655,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -2352,6 +2730,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -2418,6 +2799,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -2517,6 +2901,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -2655,6 +3045,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -2772,6 +3165,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -2859,6 +3258,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -2931,9 +3333,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -2949,12 +3357,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -3024,9 +3438,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -3036,12 +3459,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -3057,9 +3492,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -3084,6 +3525,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -3099,6 +3543,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -3135,6 +3582,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -3408,6 +3858,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -3447,6 +3900,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -3468,6 +3924,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -3582,6 +4041,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -3609,9 +4071,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -3627,6 +4101,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -3636,12 +4113,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -3660,12 +4143,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -3675,9 +4170,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -3690,9 +4191,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -3708,24 +4221,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -3738,6 +4272,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -3747,8 +4287,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -3768,6 +4308,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -3816,6 +4371,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -3882,6 +4440,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -4005,9 +4566,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -4023,6 +4590,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -4047,9 +4617,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -4083,6 +4662,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -4140,15 +4722,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -4158,6 +4752,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -4179,9 +4776,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -4197,6 +4800,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -4209,9 +4815,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -4242,9 +4845,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -4260,12 +4860,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -4320,6 +4974,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -4329,9 +4986,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -4479,6 +5133,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -4620,6 +5277,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -4656,6 +5316,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -4671,6 +5334,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -4743,6 +5409,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -4809,6 +5478,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -4908,6 +5580,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -5046,6 +5724,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -5163,6 +5844,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -5250,6 +5937,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -5322,9 +6012,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -5340,12 +6036,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -5415,9 +6117,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -5427,12 +6138,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -5448,9 +6171,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -5475,6 +6204,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -5490,6 +6222,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -5526,6 +6261,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -5799,6 +6537,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -5838,6 +6579,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -5859,6 +6603,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -5973,6 +6720,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -6000,9 +6750,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -6018,6 +6780,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -6027,12 +6792,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -6051,12 +6822,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -6066,9 +6849,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -6081,9 +6870,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -6099,24 +6900,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -6129,6 +6951,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -6138,8 +6966,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -6159,6 +6987,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -6207,6 +7050,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -6273,6 +7119,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -6396,9 +7245,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -6414,6 +7269,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -6438,9 +7296,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -6474,6 +7341,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -6531,15 +7401,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -6549,6 +7431,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -6570,9 +7455,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -6588,6 +7479,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -6600,9 +7494,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -6633,9 +7524,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -6651,12 +7539,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -6711,6 +7653,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -6720,9 +7665,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -6902,6 +7844,10 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod.in", "doc/perlvars.pm" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in", + "doc/perlvars.pm" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in", "doc/perlvars.pm" @@ -6941,6 +7887,27 @@ our %unified_info = ( "doc/man7/openssl_user_macros.pod" => [ "doc/man7/openssl_user_macros.pod.in" ], + "exporters/OpenSSLConfig.cmake" => [ + "installdata.pm" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/OpenSSLConfig.cmake", + "installdata.pm" + ], + "exporters/libcrypto.pc" => [ + "installdata.pm" + ], + "exporters/libssl.pc" => [ + "installdata.pm" + ], + "exporters/openssl.pc" => [ + "exporters/libcrypto.pc", + "exporters/libssl.pc", + "installdata.pm" + ], + "fuzz/acert-test" => [ + "libcrypto" + ], "fuzz/asn1-test" => [ "libcrypto", "libssl" @@ -6973,17 +7940,85 @@ our %unified_info = ( "fuzz/ct-test" => [ "libcrypto" ], + "fuzz/decoder-test" => [ + "libcrypto" + ], + "fuzz/dtlsclient-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/dtlsserver-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/hashtable-test" => [ + "libcrypto.a" + ], + "fuzz/ml-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/ml-kem-test" => [ + "libcrypto.a" + ], + "fuzz/pem-test" => [ + "libcrypto.a" + ], + "fuzz/provider-test" => [ + "libcrypto" + ], + "fuzz/punycode-test" => [ + "libcrypto.a" + ], + "fuzz/quic-client-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-lcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-rcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-server-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-srtm-test" => [ + "libcrypto.a", + "libssl.a" + ], "fuzz/server-test" => [ "libcrypto", "libssl" ], + "fuzz/slh-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/smime-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/v3name-test" => [ + "libcrypto.a" + ], "fuzz/x509-test" => [ "libcrypto" ], + "include/internal/param_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], + "include/openssl/core_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "libcrypto.ld" => [ "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libcrypto.pc" => [ + "builddata.pm" + ], "libcrypto.rc" => [ "configdata.pm" ], @@ -6994,9 +8029,17 @@ our %unified_info = ( "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libssl.pc" => [ + "builddata.pm" + ], "libssl.rc" => [ "configdata.pm" ], + "openssl.pc" => [ + "builddata.pm", + "libcrypto.pc", + "libssl.pc" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/DIGESTS.asn1", "providers/common/der/NIST.asn1", @@ -7014,11 +8057,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7058,6 +8109,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov/der_rsa.h" ], @@ -7065,6 +8122,12 @@ our %unified_info = ( "providers/common/include/prov/der_digests.h", "providers/common/include/prov/der_rsa.h" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov/der_wrap.h" ], @@ -7104,11 +8167,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7141,9 +8212,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov/der_sm2.h" ], @@ -7156,9 +8233,15 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/legacy" => [ "libcrypto", "providers/liblegacy.a" @@ -7236,6 +8319,14 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_addr_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/bio_base64_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_callback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7244,6 +8335,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_dgram_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_enc_test" => [ "libcrypto", "test/libtestutil.a" @@ -7252,6 +8347,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_meth_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_prefix_text" => [ "libcrypto", "test/libtestutil.a" @@ -7264,6 +8363,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_tfo_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bioprinttest" => [ "libcrypto", "test/libtestutil.a" @@ -7276,6 +8379,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/build_wincrypt_test" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_aes" => [ "libcrypto", "libssl" @@ -7296,6 +8403,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_byteorder" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_camellia" => [ "libcrypto", "libssl" @@ -7328,10 +8439,6 @@ our %unified_info = ( "libcrypto", "libssl" ], - "test/buildtest_c_core_names" => [ - "libcrypto", - "libssl" - ], "test/buildtest_c_core_object" => [ "libcrypto", "libssl" @@ -7364,6 +8471,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_e_ostime" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_ebcdic" => [ "libcrypto", "libssl" @@ -7400,6 +8511,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_hpke" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_http" => [ "libcrypto", "libssl" @@ -7408,6 +8523,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_indicator" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_kdf" => [ "libcrypto", "libssl" @@ -7428,6 +8547,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_ml_kem" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_modes" => [ "libcrypto", "libssl" @@ -7468,6 +8591,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_quic" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_rand" => [ "libcrypto", "libssl" @@ -7524,6 +8651,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_thread" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_tls1" => [ "libcrypto", "libssl" @@ -7544,10 +8675,23 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/byteorder_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ca_internals_test" => [ + "libssl", + "test/libtestutil.a" + ], "test/casttest" => [ "libcrypto", "test/libtestutil.a" ], + "test/cert_comp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/chacha_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7661,7 +8805,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], - "test/defltfips_test" => [ + "test/decoder_propq_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/defltfips_test" => [ "libcrypto", "test/libtestutil.a" ], @@ -7717,6 +8865,8 @@ our %unified_info = ( ], "test/endecode_test" => [ "libcrypto.a", + "providers/libcommon.a", + "providers/liblegacy.a", "test/libtestutil.a" ], "test/endecoder_legacy_test" => [ @@ -7760,6 +8910,10 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => [ "libcrypto" ], + "test/evp_pkey_dhkem_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/evp_pkey_dparams_test" => [ "libcrypto", "test/libtestutil.a" @@ -7768,10 +8922,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/evp_skey_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/evp_xof_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/exdatatest" => [ "libcrypto", "test/libtestutil.a" @@ -7810,6 +8972,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/hpke_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/http_test" => [ "libcrypto", "test/libtestutil.a" @@ -7822,17 +8988,25 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/json_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/keymgmt_internal_test" => [ "libcrypto.a", "test/libtestutil.a" ], "test/lhash_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/libtestutil.a" => [ "libcrypto" ], + "test/list_test" => [ + "test/libtestutil.a" + ], "test/localetest" => [ "libcrypto", "test/libtestutil.a" @@ -7845,10 +9019,26 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/membio_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/memleaktest" => [ "libcrypto", "test/libtestutil.a" ], + "test/ml_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_evp_extra_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_internal_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/modes_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7873,6 +9063,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pairwise_fail_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/param_build_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7905,6 +9099,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pkcs12_api_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/pkcs12_format_test" => [ "libcrypto", "test/libtestutil.a" @@ -7925,6 +9123,11 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/priority_queue_test" => [ + "libcrypto", + "libssl.a", + "test/libtestutil.a" + ], "test/property_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7937,6 +9140,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/provider_default_search_path_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/provider_fallback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7961,12 +9168,122 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/quic_ackm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cfq_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_client_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fifd_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_lcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_multistream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_newcid_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_qlog_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_radix_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_rcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_record_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srt_gen_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srtm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_stream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_tserver_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txpim_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_wire_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicapitest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicfaultstest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/rand_status_test" => [ "libcrypto", "test/libtestutil.a" ], "test/rand_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/rc2test" => [ @@ -7981,7 +9298,7 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "libcrypto.a", "test/libtestutil.a" ], @@ -7990,6 +9307,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/rpktest" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/rsa_mp_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8002,10 +9324,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/sanitytest" => [ + "test/rsa_x931_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/safe_math_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/sanitytest" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/secmemtest" => [ "libcrypto", "test/libtestutil.a" @@ -8023,6 +9353,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/slh_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/sm2_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8052,6 +9386,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/ssl_handshake_rtt_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/ssl_old_test" => [ "libcrypto.a", "libssl.a", @@ -8068,8 +9407,8 @@ our %unified_info = ( "test/libtestutil.a" ], "test/sslapitest" => [ - "libcrypto", - "libssl", + "libcrypto.a", + "libssl.a", "test/libtestutil.a" ], "test/sslbuffertest" => [ @@ -8086,6 +9425,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/strtoultest" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/sysdefaulttest" => [ "libcrypto", "libssl", @@ -8095,8 +9438,12 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/threadpool_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/threadstest" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/threadstest_fips" => [ @@ -8107,6 +9454,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/time_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/tls13ccstest" => [ "libcrypto", "libssl", @@ -8117,6 +9468,11 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/tls13groupselection_test" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/trace_api_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8154,6 +9510,10 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/x509_acert_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_check_cert_pkey_test" => [ "libcrypto", "test/libtestutil.a" @@ -8166,6 +9526,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/x509_load_cert_file_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_req_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_time_test" => [ "libcrypto", "test/libtestutil.a" @@ -8180,9 +9552,13 @@ our %unified_info = ( }, "dirinfo" => { "apps" => { + "deps" => [ + "apps/ca_internals_test-bin-ca.o" + ], "products" => { "bin" => [ - "apps/openssl" + "apps/openssl", + "test/ca_internals_test" ], "script" => [ "apps/CA.pl", @@ -8193,6 +9569,14 @@ our %unified_info = ( "apps/lib" => { "deps" => [ "apps/lib/openssl-bin-cmp_mock_srv.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", "apps/lib/cmp_client_test-bin-cmp_mock_srv.o", "apps/lib/uitest-bin-apps_ui.o", "apps/lib/libapps-lib-app_libctx.o", @@ -8201,12 +9585,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -8219,6 +9605,7 @@ our %unified_info = ( "products" => { "bin" => [ "apps/openssl", + "test/ca_internals_test", "test/cmp_client_test", "test/uitest" ], @@ -8230,8 +9617,12 @@ our %unified_info = ( }, "crypto" => { "deps" => [ + "crypto/asn1_time_test-bin-ctype.o", + "crypto/ca_internals_test-bin-ctype.o", + "crypto/packettest-bin-quic_vlint.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -8241,10 +9632,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -8262,6 +9656,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -8269,12 +9664,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libfips-lib-asn1_dsa.o", @@ -8297,6 +9696,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -8304,9 +9704,15 @@ our %unified_info = ( "crypto/libfips-lib-threads_lib.o", "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", - "crypto/libfips-lib-threads_win.o" + "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test", + "test/packettest" + ], "lib" => [ "libcrypto", "providers/libfips.a" @@ -8347,6 +9753,8 @@ our %unified_info = ( }, "crypto/asn1" => { "deps" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", "crypto/asn1/libcrypto-lib-a_bitstr.o", "crypto/asn1/libcrypto-lib-a_d2i_fp.o", "crypto/asn1/libcrypto-lib-a_digest.o", @@ -8413,6 +9821,10 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test" + ], "lib" => [ "libcrypto" ] @@ -8478,6 +9890,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -8634,6 +10047,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -9001,7 +10415,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", - "crypto/err/libcrypto-lib-err_prn.o" + "crypto/err/libcrypto-lib-err_mark.o", + "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o" ], "products" => { "lib" => [ @@ -9102,7 +10518,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/evp/libfips-lib-asymcipher.o", "crypto/evp/libfips-lib-dh_support.o", "crypto/evp/libfips-lib-digest.o", @@ -9118,14 +10536,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", - "crypto/evp/libfips-lib-signature.o" + "crypto/evp/libfips-lib-s_lib.o", + "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o" ], "products" => { "lib" => [ @@ -9158,6 +10577,20 @@ our %unified_info = ( ] } }, + "crypto/hashtable" => { + "deps" => [ + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/hmac" => { "deps" => [ "crypto/hmac/libcrypto-lib-hmac.o", @@ -9170,6 +10603,17 @@ our %unified_info = ( ] } }, + "crypto/hpke" => { + "deps" => [ + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, "crypto/http" => { "deps" => [ "crypto/http/libcrypto-lib-http_client.o", @@ -9253,6 +10697,44 @@ our %unified_info = ( ] } }, + "crypto/ml_dsa" => { + "deps" => [ + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ml_kem" => { + "deps" => [ + "crypto/ml_kem/libcrypto-lib-ml_kem.o", + "crypto/ml_kem/libfips-lib-ml_kem.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/modes" => { "deps" => [ "crypto/modes/libcrypto-lib-cbc128.o", @@ -9266,6 +10748,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -9273,7 +10756,8 @@ our %unified_info = ( "crypto/modes/libfips-lib-gcm128.o", "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", - "crypto/modes/libfips-lib-xts128.o" + "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o" ], "products" => { "lib" => [ @@ -9416,6 +10900,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rand/libfips-lib-rand_lib.o" ], @@ -9560,6 +11045,36 @@ our %unified_info = ( ] } }, + "crypto/slh_dsa" => { + "deps" => [ + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/sm2" => { "deps" => [ "crypto/sm2/libcrypto-lib-sm2_crypt.o", @@ -9633,6 +11148,38 @@ our %unified_info = ( ] } }, + "crypto/thread" => { + "deps" => [ + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/thread/arch" => { + "deps" => [ + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/ts" => { "deps" => [ "crypto/ts/libcrypto-lib-ts_asn1.o", @@ -9699,14 +11246,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -9715,12 +11270,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -9728,13 +11288,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -9752,6 +11319,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -9761,6 +11329,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -9787,6 +11356,7 @@ our %unified_info = ( "fuzz" => { "products" => { "bin" => [ + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -9797,13 +11367,31 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test" ] } }, "providers" => { "deps" => [ + "providers/endecode_test-bin-legacyprov.o", "providers/evp_extra_test-bin-legacyprov.o", "providers/libcrypto-lib-baseprov.o", "providers/libcrypto-lib-defltprov.o", @@ -9813,6 +11401,7 @@ our %unified_info = ( ], "products" => { "bin" => [ + "test/endecode_test", "test/evp_extra_test" ], "dso" => [ @@ -9864,8 +11453,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/der/libdefault-lib-der_rsa_sig.o", "providers/common/der/libdefault-lib-der_sm2_gen.o", @@ -9884,6 +11477,7 @@ our %unified_info = ( "providers/fips" => { "deps" => [ "providers/fips/fips-dso-fips_entry.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o" @@ -9927,6 +11521,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -9951,7 +11548,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -10048,7 +11651,10 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", - "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" + "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" ], "products" => { "lib" => [ @@ -10076,7 +11682,9 @@ our %unified_info = ( }, "providers/implementations/kdfs" => { "deps" => [ + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -10095,7 +11703,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", - "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" + "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" ], "products" => { "lib" => [ @@ -10107,13 +11716,22 @@ our %unified_info = ( }, "providers/implementations/kem" => { "deps" => [ + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", - "providers/implementations/kem/libfips-lib-rsa_kem.o" + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", + "providers/implementations/kem/libfips-lib-rsa_kem.o", + "providers/implementations/kem/libtemplate-lib-template_kem.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10125,19 +11743,29 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", - "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10165,18 +11793,18 @@ our %unified_info = ( }, "providers/implementations/rands" => { "deps" => [ - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o" ], "products" => { @@ -10205,13 +11833,31 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", - "providers/implementations/signature/libfips-lib-rsa_sig.o" + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", + "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/skeymgmt" => { + "deps" => [ + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o" ], "products" => { "lib" => [ @@ -10223,7 +11869,8 @@ our %unified_info = ( "providers/implementations/storemgmt" => { "deps" => [ "providers/implementations/storemgmt/libdefault-lib-file_store.o", - "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o" + "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", + "providers/implementations/storemgmt/libdefault-lib-winstore_store.o" ], "products" => { "lib" => [ @@ -10239,14 +11886,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -10262,32 +11910,107 @@ our %unified_info = ( "ssl/libssl-lib-t1_trce.o", "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", - "ssl/libssl-lib-tls_srp.o", - "ssl/libdefault-lib-s3_cbc.o", - "ssl/libfips-lib-s3_cbc.o" + "ssl/libssl-lib-tls_srp.o" ], "products" => { "lib" => [ - "libssl", - "providers/libdefault.a", - "providers/libfips.a" + "libssl" + ] + } + }, + "ssl/quic" => { + "deps" => [ + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, "ssl/record" => { "deps" => [ - "ssl/record/libssl-lib-dtls1_bitmap.o", "ssl/record/libssl-lib-rec_layer_d1.o", - "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/libssl-lib-rec_layer_s3.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "ssl/record/methods" => { + "deps" => [ + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/record/methods/libcommon-lib-tls_pad.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o", + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "products" => { "lib" => [ "libssl", - "providers/libcommon.a" + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "ssl/rio" => { + "deps" => [ + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, @@ -10325,9 +12048,40 @@ our %unified_info = ( "test/helpers/dtlstest-bin-ssltestlib.o", "test/helpers/endecode_test-bin-predefined_dhparams.o", "test/helpers/fatalerrtest-bin-ssltestlib.o", + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/helpers/pkcs12_api_test-bin-pkcs12.o", "test/helpers/pkcs12_format_test-bin-pkcs12.o", + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", "test/helpers/recordlentest-bin-ssltestlib.o", + "test/helpers/rpktest-bin-ssltestlib.o", "test/helpers/servername_test-bin-ssltestlib.o", + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/helpers/ssl_test-bin-handshake.o", "test/helpers/ssl_test-bin-handshake_srp.o", @@ -10336,7 +12090,8 @@ our %unified_info = ( "test/helpers/sslapitest-bin-ssltestlib.o", "test/helpers/sslbuffertest-bin-ssltestlib.o", "test/helpers/sslcorrupttest-bin-ssltestlib.o", - "test/helpers/tls13ccstest-bin-ssltestlib.o" + "test/helpers/tls13ccstest-bin-ssltestlib.o", + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" ], "products" => { "bin" => [ @@ -10354,16 +12109,37 @@ our %unified_info = ( "test/dtlstest", "test/endecode_test", "test/fatalerrtest", + "test/json_test", + "test/pkcs12_api_test", "test/pkcs12_format_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_radix_test", + "test/quic_srt_gen_test", + "test/quicapitest", + "test/quicfaultstest", "test/recordlentest", + "test/rpktest", "test/servername_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", "test/sslapitest", "test/sslbuffertest", "test/sslcorrupttest", - "test/tls13ccstest" + "test/tls13ccstest", + "test/tls13groupselection_test" + ] + } + }, + "test/radix" => { + "deps" => [ + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "products" => { + "bin" => [ + "test/quic_radix_test" ] } }, @@ -10375,6 +12151,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -10409,6 +12186,12 @@ our %unified_info = ( } }, "generate" => { + "OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], "apps/openssl.rc" => [ "util/mkrc.pl", "openssl" @@ -10423,6 +12206,19 @@ our %unified_info = ( "\"-H\"", "\$(APPS_OPENSSL)" ], + "builddata.pm" => [ + "util/mkinstallvars.pl", + "PREFIX=.", + "BINDIR=apps", + "APPLINKDIR=ms", + "LIBDIR=", + "INCLUDEDIR=include", + "\"INCLUDEDIR=\$(SRCDIR)/include\"", + "ENGINESDIR=engines", + "MODULESDIR=providers", + "\"VERSION=\$(VERSION)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"" + ], "crypto/aes/aes-586.S" => [ "crypto/aes/asm/aes-586.pl" ], @@ -10444,6 +12240,24 @@ our %unified_info = ( "crypto/aes/aes-ppc.s" => [ "crypto/aes/asm/aes-ppc.pl" ], + "crypto/aes/aes-riscv32-zkn.s" => [ + "crypto/aes/asm/aes-riscv32-zkn.pl" + ], + "crypto/aes/aes-riscv64-zkn.s" => [ + "crypto/aes/asm/aes-riscv64-zkn.pl" + ], + "crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvbb-zvkg-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkb-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkb-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkned.pl" + ], + "crypto/aes/aes-riscv64.s" => [ + "crypto/aes/asm/aes-riscv64.pl" + ], "crypto/aes/aes-s390x.S" => [ "crypto/aes/asm/aes-s390x.pl" ], @@ -10471,6 +12285,9 @@ our %unified_info = ( "crypto/aes/aesni-x86_64.s" => [ "crypto/aes/asm/aesni-x86_64.pl" ], + "crypto/aes/aesni-xts-avx512.s" => [ + "crypto/aes/asm/aesni-xts-avx512.pl" + ], "crypto/aes/aesp8-ppc.s" => [ "crypto/aes/asm/aesp8-ppc.pl" ], @@ -10483,12 +12300,18 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.S" => [ "crypto/aes/asm/bsaes-armv7.pl" ], + "crypto/aes/bsaes-armv8.S" => [ + "crypto/aes/asm/bsaes-armv8.pl" + ], "crypto/aes/bsaes-x86_64.s" => [ "crypto/aes/asm/bsaes-x86_64.pl" ], "crypto/aes/vpaes-armv8.S" => [ "crypto/aes/asm/vpaes-armv8.pl" ], + "crypto/aes/vpaes-loongarch64.S" => [ + "crypto/aes/asm/vpaes-loongarch64.pl" + ], "crypto/aes/vpaes-ppc.s" => [ "crypto/aes/asm/vpaes-ppc.pl" ], @@ -10549,15 +12372,33 @@ our %unified_info = ( "crypto/bn/ppc-mont.s" => [ "crypto/bn/asm/ppc-mont.pl" ], + "crypto/bn/ppc64-mont-fixed.s" => [ + "crypto/bn/asm/ppc64-mont-fixed.pl" + ], "crypto/bn/ppc64-mont.s" => [ "crypto/bn/asm/ppc64-mont.pl" ], + "crypto/bn/rsaz-2k-avx512.s" => [ + "crypto/bn/asm/rsaz-2k-avx512.pl" + ], + "crypto/bn/rsaz-2k-avxifma.s" => [ + "crypto/bn/asm/rsaz-2k-avxifma.pl" + ], + "crypto/bn/rsaz-3k-avx512.s" => [ + "crypto/bn/asm/rsaz-3k-avx512.pl" + ], + "crypto/bn/rsaz-3k-avxifma.s" => [ + "crypto/bn/asm/rsaz-3k-avxifma.pl" + ], + "crypto/bn/rsaz-4k-avx512.s" => [ + "crypto/bn/asm/rsaz-4k-avx512.pl" + ], + "crypto/bn/rsaz-4k-avxifma.s" => [ + "crypto/bn/asm/rsaz-4k-avxifma.pl" + ], "crypto/bn/rsaz-avx2.s" => [ "crypto/bn/asm/rsaz-avx2.pl" ], - "crypto/bn/rsaz-avx512.s" => [ - "crypto/bn/asm/rsaz-avx512.pl" - ], "crypto/bn/rsaz-x86_64.s" => [ "crypto/bn/asm/rsaz-x86_64.pl" ], @@ -10619,6 +12460,9 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.S" => [ "crypto/chacha/asm/chacha-armv4.pl" ], + "crypto/chacha/chacha-armv8-sve.S" => [ + "crypto/chacha/asm/chacha-armv8-sve.pl" + ], "crypto/chacha/chacha-armv8.S" => [ "crypto/chacha/asm/chacha-armv8.pl" ], @@ -10631,9 +12475,19 @@ our %unified_info = ( "crypto/chacha/chacha-ia64.s" => [ "crypto/chacha/chacha-ia64.S" ], + "crypto/chacha/chacha-loongarch64.S" => [ + "crypto/chacha/asm/chacha-loongarch64.pl" + ], "crypto/chacha/chacha-ppc.s" => [ "crypto/chacha/asm/chacha-ppc.pl" ], + "crypto/chacha/chacha-riscv64-v-zbb-zvkb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl", + "zvkb" + ], + "crypto/chacha/chacha-riscv64-v-zbb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl" + ], "crypto/chacha/chacha-s390x.S" => [ "crypto/chacha/asm/chacha-s390x.pl" ], @@ -10643,6 +12497,9 @@ our %unified_info = ( "crypto/chacha/chacha-x86_64.s" => [ "crypto/chacha/asm/chacha-x86_64.pl" ], + "crypto/chacha/chachap10-ppc.s" => [ + "crypto/chacha/asm/chachap10-ppc.pl" + ], "crypto/des/crypt586.S" => [ "crypto/des/asm/crypt586.pl" ], @@ -10655,6 +12512,9 @@ our %unified_info = ( "crypto/des/dest4-sparcv9.S" => [ "crypto/des/asm/dest4-sparcv9.pl" ], + "crypto/ec/ecp_nistp384-ppc64.s" => [ + "crypto/ec/asm/ecp_nistp384-ppc64.pl" + ], "crypto/ec/ecp_nistp521-ppc64.s" => [ "crypto/ec/asm/ecp_nistp521-ppc64.pl" ], @@ -10679,6 +12539,9 @@ our %unified_info = ( "crypto/ec/ecp_nistz256-x86_64.s" => [ "crypto/ec/asm/ecp_nistz256-x86_64.pl" ], + "crypto/ec/ecp_sm2p256-armv8.S" => [ + "crypto/ec/asm/ecp_sm2p256-armv8.pl" + ], "crypto/ec/x25519-ppc64.s" => [ "crypto/ec/asm/x25519-ppc64.pl" ], @@ -10688,18 +12551,39 @@ our %unified_info = ( "crypto/ia64cpuid.s" => [ "crypto/ia64cpuid.S" ], + "crypto/loongarch64cpuid.s" => [ + "crypto/loongarch64cpuid.pl" + ], "crypto/md5/md5-586.S" => [ "crypto/md5/asm/md5-586.pl" ], + "crypto/md5/md5-aarch64.S" => [ + "crypto/md5/asm/md5-aarch64.pl" + ], + "crypto/md5/md5-loongarch64.S" => [ + "crypto/md5/asm/md5-loongarch64.pl" + ], "crypto/md5/md5-sparcv9.S" => [ "crypto/md5/asm/md5-sparcv9.pl" ], "crypto/md5/md5-x86_64.s" => [ "crypto/md5/asm/md5-x86_64.pl" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.S" => [ + "crypto/modes/asm/aes-gcm-armv8-unroll8_64.pl" + ], "crypto/modes/aes-gcm-armv8_64.S" => [ "crypto/modes/asm/aes-gcm-armv8_64.pl" ], + "crypto/modes/aes-gcm-avx512.s" => [ + "crypto/modes/asm/aes-gcm-avx512.pl" + ], + "crypto/modes/aes-gcm-ppc.s" => [ + "crypto/modes/asm/aes-gcm-ppc.pl" + ], + "crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s" => [ + "crypto/modes/asm/aes-gcm-riscv64-zvkb-zvkg-zvkned.pl" + ], "crypto/modes/aesni-gcm-x86_64.s" => [ "crypto/modes/asm/aesni-gcm-x86_64.pl" ], @@ -10718,6 +12602,15 @@ our %unified_info = ( "crypto/modes/ghash-parisc.s" => [ "crypto/modes/asm/ghash-parisc.pl" ], + "crypto/modes/ghash-riscv64-zvkb-zvbc.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkb-zvbc.pl" + ], + "crypto/modes/ghash-riscv64-zvkg.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkg.pl" + ], + "crypto/modes/ghash-riscv64.s" => [ + "crypto/modes/asm/ghash-riscv64.pl" + ], "crypto/modes/ghash-s390x.S" => [ "crypto/modes/asm/ghash-s390x.pl" ], @@ -10736,6 +12629,9 @@ our %unified_info = ( "crypto/modes/ghashv8-armx.S" => [ "crypto/modes/asm/ghashv8-armx.pl" ], + "crypto/params_idx.c" => [ + "crypto/params_idx.c.in" + ], "crypto/pariscid.s" => [ "crypto/pariscid.pl" ], @@ -10796,6 +12692,12 @@ our %unified_info = ( "crypto/ripemd/rmd-586.S" => [ "crypto/ripemd/asm/rmd-586.pl" ], + "crypto/riscv32cpuid.s" => [ + "crypto/riscv32cpuid.pl" + ], + "crypto/riscv64cpuid.s" => [ + "crypto/riscv64cpuid.pl" + ], "crypto/s390xcpuid.S" => [ "crypto/s390xcpuid.pl" ], @@ -10904,6 +12806,9 @@ our %unified_info = ( "crypto/sha/sha256-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S" => [ + "crypto/sha/asm/sha256-riscv64-zvkb-zvknha_or_zvknhb.pl" + ], "crypto/sha/sha256-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -10940,6 +12845,9 @@ our %unified_info = ( "crypto/sha/sha512-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha512-riscv64-zvkb-zvknhb.S" => [ + "crypto/sha/asm/sha512-riscv64-zvkb-zvknhb.pl" + ], "crypto/sha/sha512-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -10952,6 +12860,24 @@ our %unified_info = ( "crypto/sha/sha512p8-ppc.s" => [ "crypto/sha/asm/sha512p8-ppc.pl" ], + "crypto/sm3/sm3-armv8.S" => [ + "crypto/sm3/asm/sm3-armv8.pl" + ], + "crypto/sm3/sm3-riscv64-zvksh.S" => [ + "crypto/sm3/asm/sm3-riscv64-zvksh.pl" + ], + "crypto/sm4/sm4-armv8.S" => [ + "crypto/sm4/asm/sm4-armv8.pl" + ], + "crypto/sm4/sm4-riscv64-zvksed.s" => [ + "crypto/sm4/asm/sm4-riscv64-zvksed.pl" + ], + "crypto/sm4/vpsm4-armv8.S" => [ + "crypto/sm4/asm/vpsm4-armv8.pl" + ], + "crypto/sm4/vpsm4_ex-armv8.S" => [ + "crypto/sm4/asm/vpsm4_ex-armv8.pl" + ], "crypto/uplink-ia64.s" => [ "ms/uplink-ia64.pl" ], @@ -11117,6 +13043,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -11258,6 +13187,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -11294,6 +13226,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -11309,6 +13244,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -11381,6 +13319,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -11447,6 +13388,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -11546,6 +13490,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -11684,6 +13634,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -11801,6 +13754,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -11888,6 +13847,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -11960,9 +13922,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -11978,12 +13946,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -12053,9 +14027,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -12065,12 +14048,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -12086,9 +14081,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -12113,6 +14114,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -12128,6 +14132,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -12164,6 +14171,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -12437,6 +14447,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -12476,6 +14489,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -12497,6 +14513,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -12611,6 +14630,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -12638,9 +14660,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -12656,6 +14690,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -12665,12 +14702,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -12689,12 +14732,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -12704,9 +14759,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -12719,9 +14780,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -12737,24 +14810,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -12767,6 +14861,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -12776,8 +14876,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -12797,6 +14897,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -12845,6 +14960,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -12911,6 +15029,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -13034,9 +15155,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -13052,6 +15179,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -13076,9 +15206,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -13112,6 +15251,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -13169,15 +15311,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -13187,6 +15341,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -13208,9 +15365,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -13226,6 +15389,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -13238,9 +15404,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -13271,9 +15434,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -13289,12 +15449,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -13349,6 +15563,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -13358,9 +15575,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -13508,6 +15722,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -13649,6 +15866,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -13685,6 +15905,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -13700,6 +15923,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -13772,6 +15998,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -13838,6 +16067,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -13937,6 +16169,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -14075,6 +16313,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -14192,6 +16433,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -14279,6 +16526,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -14351,9 +16601,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -14369,12 +16625,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -14444,9 +16706,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -14456,12 +16727,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -14477,9 +16760,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -14504,6 +16793,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -14519,6 +16811,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -14555,6 +16850,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -14828,6 +17126,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -14867,6 +17168,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -14888,6 +17192,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -15002,6 +17309,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -15029,9 +17339,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -15047,6 +17369,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -15056,12 +17381,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -15080,11 +17411,23 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], - "doc/man/man3/SSL_get_shared_sigalgs.3" => [ - "doc/man3/SSL_get_shared_sigalgs.pod" + "doc/man/man3/SSL_get_shared_sigalgs.3" => [ + "doc/man3/SSL_get_shared_sigalgs.pod" + ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" @@ -15095,9 +17438,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -15110,9 +17459,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -15128,24 +17489,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -15158,6 +17540,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -15167,8 +17555,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -15188,6 +17576,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -15236,6 +17639,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -15302,6 +17708,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -15425,9 +17834,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -15443,6 +17858,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -15467,9 +17885,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -15503,6 +17930,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -15560,15 +17990,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -15578,6 +18020,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -15599,9 +18044,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -15617,6 +18068,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -15629,9 +18083,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -15662,9 +18113,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -15680,12 +18128,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -15740,6 +18242,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -15749,9 +18254,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -15887,6 +18389,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc/man1/openssl-sess_id.pod.in" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in" ], @@ -15923,12 +18428,30 @@ our %unified_info = ( "engines/e_padlock-x86_64.s" => [ "engines/asm/e_padlock-x86_64.pl" ], + "exporters/OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], + "exporters/libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], + "exporters/libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "exporters/openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "include/crypto/bn_conf.h" => [ "include/crypto/bn_conf.h.in" ], "include/crypto/dso_conf.h" => [ "include/crypto/dso_conf.h.in" ], + "include/internal/param_names.h" => [ + "include/internal/param_names.h.in" + ], "include/openssl/asn1.h" => [ "include/openssl/asn1.h.in" ], @@ -15944,12 +18467,18 @@ our %unified_info = ( "include/openssl/cms.h" => [ "include/openssl/cms.h.in" ], + "include/openssl/comp.h" => [ + "include/openssl/comp.h.in" + ], "include/openssl/conf.h" => [ "include/openssl/conf.h.in" ], "include/openssl/configuration.h" => [ "include/openssl/configuration.h.in" ], + "include/openssl/core_names.h" => [ + "include/openssl/core_names.h.in" + ], "include/openssl/crmf.h" => [ "include/openssl/crmf.h.in" ], @@ -15998,16 +18527,37 @@ our %unified_info = ( "include/openssl/x509.h" => [ "include/openssl/x509.h.in" ], + "include/openssl/x509_acert.h" => [ + "include/openssl/x509_acert.h.in" + ], "include/openssl/x509_vfy.h" => [ "include/openssl/x509_vfy.h.in" ], "include/openssl/x509v3.h" => [ "include/openssl/x509v3.h.in" ], + "installdata.pm" => [ + "util/mkinstallvars.pl", + "\"PREFIX=\$(INSTALLTOP)\"", + "BINDIR=bin", + "\"LIBDIR=\$(LIBDIR)\"", + "\"libdir=\$(libdir)\"", + "INCLUDEDIR=include", + "APPLINKDIR=include/openssl", + "\"ENGINESDIR=\$(ENGINESDIR)\"", + "\"MODULESDIR=\$(MODULESDIR)\"", + "\"PKGCONFIGDIR=\$(PKGCONFIGDIR)\"", + "\"CMAKECONFIGDIR=\$(CMAKECONFIGDIR)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"", + "\"VERSION=\$(VERSION)\"" + ], "libcrypto.ld" => [ "util/libcrypto.num", "libcrypto" ], + "libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], "libcrypto.rc" => [ "util/mkrc.pl", "libcrypto" @@ -16016,10 +18566,16 @@ our %unified_info = ( "util/libssl.num", "libssl" ], + "libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], "libssl.rc" => [ "util/mkrc.pl", "libssl" ], + "openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/der_digests_gen.c.in" ], @@ -16032,9 +18588,15 @@ our %unified_info = ( "providers/common/der/der_ecx_gen.c" => [ "providers/common/der/der_ecx_gen.c.in" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/der_ml_dsa_gen.c.in" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/der_rsa_gen.c.in" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/der_slh_dsa_gen.c.in" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/der_sm2_gen.c.in" ], @@ -16053,9 +18615,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/include/prov/der_ecx.h.in" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/include/prov/der_ml_dsa.h.in" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/include/prov/der_rsa.h.in" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/include/prov/der_slh_dsa.h.in" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/include/prov/der_sm2.h.in" ], @@ -16105,6 +18673,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "buffer" ], + "test/buildtest_byteorder.c" => [ + "test/generate_buildtest.pl", + "byteorder" + ], "test/buildtest_camellia.c" => [ "test/generate_buildtest.pl", "camellia" @@ -16137,10 +18709,6 @@ our %unified_info = ( "test/generate_buildtest.pl", "core_dispatch" ], - "test/buildtest_core_names.c" => [ - "test/generate_buildtest.pl", - "core_names" - ], "test/buildtest_core_object.c" => [ "test/generate_buildtest.pl", "core_object" @@ -16173,6 +18741,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "e_os2" ], + "test/buildtest_e_ostime.c" => [ + "test/generate_buildtest.pl", + "e_ostime" + ], "test/buildtest_ebcdic.c" => [ "test/generate_buildtest.pl", "ebcdic" @@ -16209,6 +18781,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "hmac" ], + "test/buildtest_hpke.c" => [ + "test/generate_buildtest.pl", + "hpke" + ], "test/buildtest_http.c" => [ "test/generate_buildtest.pl", "http" @@ -16217,6 +18793,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "idea" ], + "test/buildtest_indicator.c" => [ + "test/generate_buildtest.pl", + "indicator" + ], "test/buildtest_kdf.c" => [ "test/generate_buildtest.pl", "kdf" @@ -16237,6 +18817,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "mdc2" ], + "test/buildtest_ml_kem.c" => [ + "test/generate_buildtest.pl", + "ml_kem" + ], "test/buildtest_modes.c" => [ "test/generate_buildtest.pl", "modes" @@ -16277,6 +18861,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "provider" ], + "test/buildtest_quic.c" => [ + "test/generate_buildtest.pl", + "quic" + ], "test/buildtest_rand.c" => [ "test/generate_buildtest.pl", "rand" @@ -16333,6 +18921,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "symhacks" ], + "test/buildtest_thread.c" => [ + "test/generate_buildtest.pl", + "thread" + ], "test/buildtest_tls1.c" => [ "test/generate_buildtest.pl", "tls1" @@ -16413,6 +19005,7 @@ our %unified_info = ( "doc/html/man1/openssl-s_server.html", "doc/html/man1/openssl-s_time.html", "doc/html/man1/openssl-sess_id.html", + "doc/html/man1/openssl-skeyutl.html", "doc/html/man1/openssl-smime.html", "doc/html/man1/openssl-speed.html", "doc/html/man1/openssl-spkac.html", @@ -16462,6 +19055,7 @@ our %unified_info = ( "doc/html/man3/BIO_find_type.html", "doc/html/man3/BIO_get_data.html", "doc/html/man3/BIO_get_ex_new_index.html", + "doc/html/man3/BIO_get_rpoll_descriptor.html", "doc/html/man3/BIO_meth_new.html", "doc/html/man3/BIO_new.html", "doc/html/man3/BIO_new_CMS.html", @@ -16474,11 +19068,13 @@ our %unified_info = ( "doc/html/man3/BIO_s_connect.html", "doc/html/man3/BIO_s_core.html", "doc/html/man3/BIO_s_datagram.html", + "doc/html/man3/BIO_s_dgram_pair.html", "doc/html/man3/BIO_s_fd.html", "doc/html/man3/BIO_s_file.html", "doc/html/man3/BIO_s_mem.html", "doc/html/man3/BIO_s_null.html", "doc/html/man3/BIO_s_socket.html", + "doc/html/man3/BIO_sendmmsg.html", "doc/html/man3/BIO_set_callback.html", "doc/html/man3/BIO_should_retry.html", "doc/html/man3/BIO_socket_wait.html", @@ -16503,6 +19099,7 @@ our %unified_info = ( "doc/html/man3/BN_swap.html", "doc/html/man3/BN_zero.html", "doc/html/man3/BUF_MEM_new.html", + "doc/html/man3/CMAC_CTX.html", "doc/html/man3/CMS_EncryptedData_decrypt.html", "doc/html/man3/CMS_EncryptedData_encrypt.html", "doc/html/man3/CMS_EnvelopedData_create.html", @@ -16525,6 +19122,7 @@ our %unified_info = ( "doc/html/man3/CMS_uncompress.html", "doc/html/man3/CMS_verify.html", "doc/html/man3/CMS_verify_receipt.html", + "doc/html/man3/COMP_CTX_new.html", "doc/html/man3/CONF_modules_free.html", "doc/html/man3/CONF_modules_load_file.html", "doc/html/man3/CRYPTO_THREAD_run_once.html", @@ -16558,6 +19156,8 @@ our %unified_info = ( "doc/html/man3/DSA_size.html", "doc/html/man3/DTLS_get_data_mtu.html", "doc/html/man3/DTLS_set_timer_cb.html", + "doc/html/man3/DTLSv1_get_timeout.html", + "doc/html/man3/DTLSv1_handle_timeout.html", "doc/html/man3/DTLSv1_listen.html", "doc/html/man3/ECDSA_SIG_new.html", "doc/html/man3/ECDSA_sign.html", @@ -16604,6 +19204,7 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_ctrl.html", "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html", "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html", + "doc/html/man3/EVP_PKEY_CTX_get_algor.html", "doc/html/man3/EVP_PKEY_CTX_new.html", "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html", "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html", @@ -16643,6 +19244,8 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_verify_recover.html", "doc/html/man3/EVP_RAND.html", "doc/html/man3/EVP_SIGNATURE.html", + "doc/html/man3/EVP_SKEY.html", + "doc/html/man3/EVP_SKEYMGMT.html", "doc/html/man3/EVP_SealInit.html", "doc/html/man3/EVP_SignInit.html", "doc/html/man3/EVP_VerifyInit.html", @@ -16672,6 +19275,7 @@ our %unified_info = ( "doc/html/man3/EVP_sm3.html", "doc/html/man3/EVP_sm4_cbc.html", "doc/html/man3/EVP_whirlpool.html", + "doc/html/man3/GENERAL_NAME.html", "doc/html/man3/HMAC.html", "doc/html/man3/MD5.html", "doc/html/man3/MDC2_Init.html", @@ -16696,14 +19300,18 @@ our %unified_info = ( "doc/html/man3/OPENSSL_init_ssl.html", "doc/html/man3/OPENSSL_instrument_bus.html", "doc/html/man3/OPENSSL_load_builtin_modules.html", + "doc/html/man3/OPENSSL_load_u16_le.html", "doc/html/man3/OPENSSL_malloc.html", + "doc/html/man3/OPENSSL_riscvcap.html", "doc/html/man3/OPENSSL_s390xcap.html", "doc/html/man3/OPENSSL_secure_malloc.html", "doc/html/man3/OPENSSL_strcasecmp.html", "doc/html/man3/OSSL_ALGORITHM.html", "doc/html/man3/OSSL_CALLBACK.html", + "doc/html/man3/OSSL_CMP_ATAV_set0.html", "doc/html/man3/OSSL_CMP_CTX_new.html", "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html", + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html", "doc/html/man3/OSSL_CMP_ITAV_set0.html", "doc/html/man3/OSSL_CMP_MSG_get0_header.html", "doc/html/man3/OSSL_CMP_MSG_http_perform.html", @@ -16727,18 +19335,27 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_CTX.html", "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html", "doc/html/man3/OSSL_ENCODER_to_bio.html", + "doc/html/man3/OSSL_ERR_STATE_save.html", "doc/html/man3/OSSL_ESS_check_signing_certs.html", + "doc/html/man3/OSSL_GENERAL_NAMES_print.html", + "doc/html/man3/OSSL_HPKE_CTX_new.html", "doc/html/man3/OSSL_HTTP_REQ_CTX.html", "doc/html/man3/OSSL_HTTP_parse_url.html", "doc/html/man3/OSSL_HTTP_transfer.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html", + "doc/html/man3/OSSL_INDICATOR_set_callback.html", "doc/html/man3/OSSL_ITEM.html", "doc/html/man3/OSSL_LIB_CTX.html", + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html", "doc/html/man3/OSSL_PARAM.html", "doc/html/man3/OSSL_PARAM_BLD.html", "doc/html/man3/OSSL_PARAM_allocate_from_text.html", "doc/html/man3/OSSL_PARAM_dup.html", "doc/html/man3/OSSL_PARAM_int.html", + "doc/html/man3/OSSL_PARAM_print_to_bio.html", "doc/html/man3/OSSL_PROVIDER.html", + "doc/html/man3/OSSL_QUIC_client_method.html", "doc/html/man3/OSSL_SELF_TEST_new.html", "doc/html/man3/OSSL_SELF_TEST_set_callback.html", "doc/html/man3/OSSL_STORE_INFO.html", @@ -16747,11 +19364,13 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_attach.html", "doc/html/man3/OSSL_STORE_expect.html", "doc/html/man3/OSSL_STORE_open.html", + "doc/html/man3/OSSL_sleep.html", "doc/html/man3/OSSL_trace_enabled.html", "doc/html/man3/OSSL_trace_get_category_num.html", "doc/html/man3/OSSL_trace_set_channel.html", "doc/html/man3/OpenSSL_add_all_algorithms.html", "doc/html/man3/OpenSSL_version.html", + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html", "doc/html/man3/PEM_X509_INFO_read_bio_ex.html", "doc/html/man3/PEM_bytes_read_bio.html", "doc/html/man3/PEM_read.html", @@ -16764,6 +19383,7 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_create_cert.html", "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html", "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html", + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html", "doc/html/man3/PKCS12_add1_attr_by_NID.html", "doc/html/man3/PKCS12_add_CSPName_asc.html", "doc/html/man3/PKCS12_add_cert.html", @@ -16855,6 +19475,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_sess_set_get_cb.html", "doc/html/man3/SSL_CTX_sessions.html", "doc/html/man3/SSL_CTX_set0_CA_list.html", + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html", "doc/html/man3/SSL_CTX_set1_curves.html", "doc/html/man3/SSL_CTX_set1_sigalgs.html", "doc/html/man3/SSL_CTX_set1_verify_cert_store.html", @@ -16868,6 +19489,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_ct_validation_callback.html", "doc/html/man3/SSL_CTX_set_ctlog_list_file.html", "doc/html/man3/SSL_CTX_set_default_passwd_cb.html", + "doc/html/man3/SSL_CTX_set_domain_flags.html", "doc/html/man3/SSL_CTX_set_generate_session_id.html", "doc/html/man3/SSL_CTX_set_info_callback.html", "doc/html/man3/SSL_CTX_set_keylog_callback.html", @@ -16875,6 +19497,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_min_proto_version.html", "doc/html/man3/SSL_CTX_set_mode.html", "doc/html/man3/SSL_CTX_set_msg_callback.html", + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html", "doc/html/man3/SSL_CTX_set_num_tickets.html", "doc/html/man3/SSL_CTX_set_options.html", "doc/html/man3/SSL_CTX_set_psk_client_callback.html", @@ -16913,6 +19536,7 @@ our %unified_info = ( "doc/html/man3/SSL_SESSION_print.html", "doc/html/man3/SSL_SESSION_set1_id.html", "doc/html/man3/SSL_accept.html", + "doc/html/man3/SSL_accept_stream.html", "doc/html/man3/SSL_alert_type_string.html", "doc/html/man3/SSL_alloc_buffers.html", "doc/html/man3/SSL_check_chain.html", @@ -16922,59 +19546,90 @@ our %unified_info = ( "doc/html/man3/SSL_export_keying_material.html", "doc/html/man3/SSL_extension_supported.html", "doc/html/man3/SSL_free.html", + "doc/html/man3/SSL_get0_connection.html", + "doc/html/man3/SSL_get0_group_name.html", + "doc/html/man3/SSL_get0_peer_rpk.html", "doc/html/man3/SSL_get0_peer_scts.html", + "doc/html/man3/SSL_get1_builtin_sigalgs.html", "doc/html/man3/SSL_get_SSL_CTX.html", "doc/html/man3/SSL_get_all_async_fds.html", "doc/html/man3/SSL_get_certificate.html", "doc/html/man3/SSL_get_ciphers.html", "doc/html/man3/SSL_get_client_random.html", + "doc/html/man3/SSL_get_conn_close_info.html", "doc/html/man3/SSL_get_current_cipher.html", "doc/html/man3/SSL_get_default_timeout.html", "doc/html/man3/SSL_get_error.html", + "doc/html/man3/SSL_get_event_timeout.html", "doc/html/man3/SSL_get_extms_support.html", "doc/html/man3/SSL_get_fd.html", + "doc/html/man3/SSL_get_handshake_rtt.html", "doc/html/man3/SSL_get_peer_cert_chain.html", "doc/html/man3/SSL_get_peer_certificate.html", "doc/html/man3/SSL_get_peer_signature_nid.html", "doc/html/man3/SSL_get_peer_tmp_key.html", "doc/html/man3/SSL_get_psk_identity.html", "doc/html/man3/SSL_get_rbio.html", + "doc/html/man3/SSL_get_rpoll_descriptor.html", "doc/html/man3/SSL_get_session.html", "doc/html/man3/SSL_get_shared_sigalgs.html", + "doc/html/man3/SSL_get_stream_id.html", + "doc/html/man3/SSL_get_stream_read_state.html", + "doc/html/man3/SSL_get_value_uint.html", "doc/html/man3/SSL_get_verify_result.html", "doc/html/man3/SSL_get_version.html", "doc/html/man3/SSL_group_to_name.html", + "doc/html/man3/SSL_handle_events.html", "doc/html/man3/SSL_in_init.html", + "doc/html/man3/SSL_inject_net_dgram.html", "doc/html/man3/SSL_key_update.html", "doc/html/man3/SSL_library_init.html", "doc/html/man3/SSL_load_client_CA_file.html", "doc/html/man3/SSL_new.html", + "doc/html/man3/SSL_new_domain.html", + "doc/html/man3/SSL_new_listener.html", + "doc/html/man3/SSL_new_stream.html", "doc/html/man3/SSL_pending.html", + "doc/html/man3/SSL_poll.html", "doc/html/man3/SSL_read.html", "doc/html/man3/SSL_read_early_data.html", "doc/html/man3/SSL_rstate_string.html", "doc/html/man3/SSL_session_reused.html", "doc/html/man3/SSL_set1_host.html", + "doc/html/man3/SSL_set1_initial_peer_addr.html", + "doc/html/man3/SSL_set1_server_cert_type.html", "doc/html/man3/SSL_set_async_callback.html", "doc/html/man3/SSL_set_bio.html", + "doc/html/man3/SSL_set_blocking_mode.html", "doc/html/man3/SSL_set_connect_state.html", + "doc/html/man3/SSL_set_default_stream_mode.html", "doc/html/man3/SSL_set_fd.html", + "doc/html/man3/SSL_set_incoming_stream_policy.html", + "doc/html/man3/SSL_set_quic_tls_cbs.html", "doc/html/man3/SSL_set_retry_verify.html", "doc/html/man3/SSL_set_session.html", + "doc/html/man3/SSL_set_session_secret_cb.html", "doc/html/man3/SSL_set_shutdown.html", "doc/html/man3/SSL_set_verify_result.html", "doc/html/man3/SSL_shutdown.html", "doc/html/man3/SSL_state_string.html", + "doc/html/man3/SSL_stream_conclude.html", + "doc/html/man3/SSL_stream_reset.html", "doc/html/man3/SSL_want.html", "doc/html/man3/SSL_write.html", "doc/html/man3/TS_RESP_CTX_new.html", - "doc/html/man3/TS_VERIFY_CTX_set_certs.html", + "doc/html/man3/TS_VERIFY_CTX.html", "doc/html/man3/UI_STRING.html", "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", + "doc/html/man3/X509_ACERT_add1_attr.html", + "doc/html/man3/X509_ACERT_add_attr_nconf.html", + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html", + "doc/html/man3/X509_ACERT_get_attr.html", + "doc/html/man3/X509_ACERT_print_ex.html", "doc/html/man3/X509_ALGOR_dup.html", "doc/html/man3/X509_ATTRIBUTE.html", "doc/html/man3/X509_CRL_get0_by_serial.html", @@ -16991,6 +19646,7 @@ our %unified_info = ( "doc/html/man3/X509_REQ_get_attr.html", "doc/html/man3/X509_REQ_get_extensions.html", "doc/html/man3/X509_SIG_get0.html", + "doc/html/man3/X509_STORE_CTX_get_by_subject.html", "doc/html/man3/X509_STORE_CTX_get_error.html", "doc/html/man3/X509_STORE_CTX_new.html", "doc/html/man3/X509_STORE_CTX_set_verify_cb.html", @@ -17013,6 +19669,7 @@ our %unified_info = ( "doc/html/man3/X509_get0_notBefore.html", "doc/html/man3/X509_get0_signature.html", "doc/html/man3/X509_get0_uids.html", + "doc/html/man3/X509_get_default_cert_file.html", "doc/html/man3/X509_get_extension_flags.html", "doc/html/man3/X509_get_pubkey.html", "doc/html/man3/X509_get_serialNumber.html", @@ -17058,12 +19715,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-RC5.html", "doc/html/man7/EVP_CIPHER-SEED.html", "doc/html/man7/EVP_CIPHER-SM4.html", + "doc/html/man7/EVP_KDF-ARGON2.html", "doc/html/man7/EVP_KDF-HKDF.html", + "doc/html/man7/EVP_KDF-HMAC-DRBG.html", "doc/html/man7/EVP_KDF-KB.html", "doc/html/man7/EVP_KDF-KRB5KDF.html", "doc/html/man7/EVP_KDF-PBKDF1.html", "doc/html/man7/EVP_KDF-PBKDF2.html", "doc/html/man7/EVP_KDF-PKCS12KDF.html", + "doc/html/man7/EVP_KDF-PVKKDF.html", "doc/html/man7/EVP_KDF-SCRYPT.html", "doc/html/man7/EVP_KDF-SS.html", "doc/html/man7/EVP_KDF-SSHKDF.html", @@ -17072,7 +19732,10 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X942-ASN1.html", "doc/html/man7/EVP_KDF-X942-CONCAT.html", "doc/html/man7/EVP_KDF-X963.html", + "doc/html/man7/EVP_KEM-EC.html", + "doc/html/man7/EVP_KEM-ML-KEM.html", "doc/html/man7/EVP_KEM-RSA.html", + "doc/html/man7/EVP_KEM-X25519.html", "doc/html/man7/EVP_KEYEXCH-DH.html", "doc/html/man7/EVP_KEYEXCH-ECDH.html", "doc/html/man7/EVP_KEYEXCH-X25519.html", @@ -17084,6 +19747,7 @@ our %unified_info = ( "doc/html/man7/EVP_MAC-Poly1305.html", "doc/html/man7/EVP_MAC-Siphash.html", "doc/html/man7/EVP_MD-BLAKE2.html", + "doc/html/man7/EVP_MD-KECCAK.html", "doc/html/man7/EVP_MD-MD2.html", "doc/html/man7/EVP_MD-MD4.html", "doc/html/man7/EVP_MD-MD5-SHA1.html", @@ -17103,12 +19767,17 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-EC.html", "doc/html/man7/EVP_PKEY-FFC.html", "doc/html/man7/EVP_PKEY-HMAC.html", + "doc/html/man7/EVP_PKEY-ML-DSA.html", + "doc/html/man7/EVP_PKEY-ML-KEM.html", "doc/html/man7/EVP_PKEY-RSA.html", + "doc/html/man7/EVP_PKEY-SLH-DSA.html", "doc/html/man7/EVP_PKEY-SM2.html", "doc/html/man7/EVP_PKEY-X25519.html", + "doc/html/man7/EVP_RAND-CRNG-TEST.html", "doc/html/man7/EVP_RAND-CTR-DRBG.html", "doc/html/man7/EVP_RAND-HASH-DRBG.html", "doc/html/man7/EVP_RAND-HMAC-DRBG.html", + "doc/html/man7/EVP_RAND-JITTER.html", "doc/html/man7/EVP_RAND-SEED-SRC.html", "doc/html/man7/EVP_RAND-TEST-RAND.html", "doc/html/man7/EVP_RAND.html", @@ -17116,17 +19785,19 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-ECDSA.html", "doc/html/man7/EVP_SIGNATURE-ED25519.html", "doc/html/man7/EVP_SIGNATURE-HMAC.html", + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html", "doc/html/man7/EVP_SIGNATURE-RSA.html", + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html", "doc/html/man7/OSSL_PROVIDER-FIPS.html", "doc/html/man7/OSSL_PROVIDER-base.html", "doc/html/man7/OSSL_PROVIDER-default.html", "doc/html/man7/OSSL_PROVIDER-legacy.html", "doc/html/man7/OSSL_PROVIDER-null.html", + "doc/html/man7/OSSL_STORE-winstore.html", "doc/html/man7/RAND.html", "doc/html/man7/RSA-PSS.html", "doc/html/man7/X25519.html", "doc/html/man7/bio.html", - "doc/html/man7/crypto.html", "doc/html/man7/ct.html", "doc/html/man7/des_modes.html", "doc/html/man7/evp.html", @@ -17137,14 +19808,31 @@ our %unified_info = ( "doc/html/man7/life_cycle-mac.html", "doc/html/man7/life_cycle-pkey.html", "doc/html/man7/life_cycle-rand.html", - "doc/html/man7/migration_guide.html", "doc/html/man7/openssl-core.h.html", "doc/html/man7/openssl-core_dispatch.h.html", "doc/html/man7/openssl-core_names.h.html", "doc/html/man7/openssl-env.html", "doc/html/man7/openssl-glossary.html", + "doc/html/man7/openssl-qlog.html", + "doc/html/man7/openssl-quic-concurrency.html", + "doc/html/man7/openssl-quic.html", "doc/html/man7/openssl-threads.html", "doc/html/man7/openssl_user_macros.html", + "doc/html/man7/ossl-guide-introduction.html", + "doc/html/man7/ossl-guide-libcrypto-introduction.html", + "doc/html/man7/ossl-guide-libraries-introduction.html", + "doc/html/man7/ossl-guide-libssl-introduction.html", + "doc/html/man7/ossl-guide-migration.html", + "doc/html/man7/ossl-guide-quic-client-block.html", + "doc/html/man7/ossl-guide-quic-client-non-block.html", + "doc/html/man7/ossl-guide-quic-introduction.html", + "doc/html/man7/ossl-guide-quic-multi-stream.html", + "doc/html/man7/ossl-guide-quic-server-block.html", + "doc/html/man7/ossl-guide-quic-server-non-block.html", + "doc/html/man7/ossl-guide-tls-client-block.html", + "doc/html/man7/ossl-guide-tls-client-non-block.html", + "doc/html/man7/ossl-guide-tls-introduction.html", + "doc/html/man7/ossl-guide-tls-server-block.html", "doc/html/man7/ossl_store-file.html", "doc/html/man7/ossl_store.html", "doc/html/man7/passphrase-encoding.html", @@ -17163,10 +19851,10 @@ our %unified_info = ( "doc/html/man7/provider-object.html", "doc/html/man7/provider-rand.html", "doc/html/man7/provider-signature.html", + "doc/html/man7/provider-skeymgmt.html", "doc/html/man7/provider-storemgmt.html", "doc/html/man7/provider.html", "doc/html/man7/proxy-certificates.html", - "doc/html/man7/ssl.html", "doc/html/man7/x509.html" ] }, @@ -17181,12 +19869,21 @@ our %unified_info = ( ] }, "includes" => { + "OpenSSLConfig.cmake" => [ + "." + ], + "OpenSSLConfigVersion.cmake" => [ + "." + ], "apps/asn1parse.o" => [ "apps" ], "apps/ca.o" => [ "apps" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps" + ], "apps/ciphers.o" => [ "apps" ], @@ -17413,6 +20110,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps" + ], "apps/openssl-bin-smime.o" => [ "apps" ], @@ -17500,6 +20200,9 @@ our %unified_info = ( "apps/sess_id.o" => [ "apps" ], + "apps/skeyutl.o" => [ + "apps" + ], "apps/smime.o" => [ "apps" ], @@ -17551,6 +20254,12 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.o" => [ "crypto" ], + "crypto/aes/vpaes-armv8.o" => [ + "crypto" + ], + "crypto/aes/vpaes-loongarch64.o" => [ + "crypto" + ], "crypto/arm64cpuid.o" => [ "crypto" ], @@ -17602,9 +20311,15 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.o" => [ "crypto" ], + "crypto/chacha/chacha-armv8-sve.o" => [ + "crypto" + ], "crypto/chacha/chacha-armv8.o" => [ "crypto" ], + "crypto/chacha/chacha-loongarch64.o" => [ + "crypto" + ], "crypto/chacha/chacha-s390x.o" => [ "crypto" ], @@ -17629,15 +20344,24 @@ our %unified_info = ( "crypto/ec/ecp_s390x_nistp.o" => [ "crypto" ], + "crypto/ec/ecp_sm2p256-armv8.o" => [ + "crypto" + ], + "crypto/ec/ecx_key.o" => [ + "crypto" + ], "crypto/ec/ecx_meth.o" => [ "crypto" ], - "crypto/ec/ecx_s390x.o" => [ + "crypto/ec/libcrypto-lib-ecx_key.o" => [ "crypto" ], "crypto/ec/libcrypto-lib-ecx_meth.o" => [ "crypto" ], + "crypto/ec/libfips-lib-ecx_key.o" => [ + "crypto" + ], "crypto/evp/e_aes.o" => [ "crypto", "crypto/modes" @@ -17709,9 +20433,18 @@ our %unified_info = ( "crypto/libfips-lib-cpuid.o" => [ "." ], + "crypto/md5/md5-aarch64.o" => [ + "crypto" + ], + "crypto/md5/md5-loongarch64.o" => [ + "crypto" + ], "crypto/md5/md5-sparcv9.o" => [ "crypto" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.o" => [ + "crypto" + ], "crypto/modes/aes-gcm-armv8_64.o" => [ "crypto" ], @@ -17736,6 +20469,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-gcm128.o" => [ "crypto" ], + "crypto/params_idx.c" => [ + "util/perl" + ], "crypto/poly1305/poly1305-armv4.o" => [ "crypto" ], @@ -17757,6 +20493,9 @@ our %unified_info = ( "crypto/sha/keccak1600-armv4.o" => [ "crypto" ], + "crypto/sha/keccak1600-armv8.o" => [ + "crypto" + ], "crypto/sha/sha1-armv4-large.o" => [ "crypto" ], @@ -17802,6 +20541,18 @@ our %unified_info = ( "crypto/sha/sha512-sparcv9.o" => [ "crypto" ], + "crypto/sm3/sm3-armv8.o" => [ + "crypto" + ], + "crypto/sm4/sm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4_ex-armv8.o" => [ + "crypto" + ], "doc/man1/openssl-asn1parse.pod" => [ "doc" ], @@ -17934,6 +20685,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc" + ], "doc/man1/openssl-smime.pod" => [ "doc" ], @@ -17961,6 +20715,24 @@ our %unified_info = ( "doc/man1/openssl-x509.pod" => [ "doc" ], + "exporters/OpenSSLConfig.cmake" => [ + "." + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "." + ], + "exporters/libcrypto.pc" => [ + "." + ], + "exporters/libssl.pc" => [ + "." + ], + "exporters/openssl.pc" => [ + "." + ], + "fuzz/acert-test" => [ + "include" + ], "fuzz/asn1-test" => [ "include" ], @@ -17991,12 +20763,69 @@ our %unified_info = ( "fuzz/ct-test" => [ "include" ], + "fuzz/decoder-test" => [ + "include" + ], + "fuzz/dtlsclient-test" => [ + "include" + ], + "fuzz/dtlsserver-test" => [ + "include" + ], + "fuzz/hashtable-test" => [ + "include" + ], + "fuzz/ml-dsa-test" => [ + "include" + ], + "fuzz/ml-kem-test" => [ + "include" + ], + "fuzz/pem-test" => [ + "include" + ], + "fuzz/provider-test" => [ + "include" + ], + "fuzz/punycode-test" => [ + "include" + ], + "fuzz/quic-client-test" => [ + "include" + ], + "fuzz/quic-lcidm-test" => [ + "include" + ], + "fuzz/quic-rcidm-test" => [ + "include" + ], + "fuzz/quic-server-test" => [ + "include" + ], + "fuzz/quic-srtm-test" => [ + "include" + ], "fuzz/server-test" => [ "include" ], + "fuzz/slh-dsa-test" => [ + "include" + ], + "fuzz/smime-test" => [ + "include" + ], + "fuzz/v3name-test" => [ + "include" + ], "fuzz/x509-test" => [ "include" ], + "include/internal/param_names.h" => [ + "util/perl" + ], + "include/openssl/core_names.h" => [ + "util/perl" + ], "libcrypto" => [ ".", "include", @@ -18007,6 +20836,9 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libcrypto.pc" => [ + "." + ], "libcrypto.rc" => [ "." ], @@ -18018,9 +20850,15 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libssl.pc" => [ + "." + ], "libssl.rc" => [ "." ], + "openssl.pc" => [ + "." + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der" ], @@ -18060,6 +20898,15 @@ our %unified_info = ( "providers/common/der/der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der" ], @@ -18072,6 +20919,15 @@ our %unified_info = ( "providers/common/der/der_rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der" ], @@ -18117,12 +20973,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov" ], @@ -18153,9 +21021,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der" ], @@ -18198,9 +21072,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18213,12 +21093,24 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18231,28 +21123,39 @@ our %unified_info = ( "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libdefault.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libfips.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/liblegacy.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" + ], + "providers/libtemplate.a" => [ + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" ], "test/aborttest" => [ "include", @@ -18321,6 +21224,14 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_addr_test" => [ + "include", + "apps/include" + ], + "test/bio_base64_test" => [ + "include", + "apps/include" + ], "test/bio_callback_test" => [ "include", "apps/include" @@ -18329,11 +21240,20 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_dgram_test" => [ + "include", + "apps/include", + "." + ], "test/bio_enc_test" => [ "include", "apps/include" ], - "test/bio_memleak_test" => [ + "test/bio_memleak_test" => [ + "include", + "apps/include" + ], + "test/bio_meth_test" => [ "include", "apps/include" ], @@ -18350,6 +21270,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_tfo_test" => [ + "include", + "apps/include", + "." + ], "test/bioprinttest" => [ "include", "apps/include" @@ -18364,6 +21289,9 @@ our %unified_info = ( "include", "apps/include" ], + "test/build_wincrypt_test" => [ + "include" + ], "test/buildtest_c_aes" => [ "include" ], @@ -18379,6 +21307,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => [ "include" ], + "test/buildtest_c_byteorder" => [ + "include" + ], "test/buildtest_c_camellia" => [ "include" ], @@ -18403,9 +21334,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => [ "include" ], - "test/buildtest_c_core_names" => [ - "include" - ], "test/buildtest_c_core_object" => [ "include" ], @@ -18430,6 +21358,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => [ "include" ], + "test/buildtest_c_e_ostime" => [ + "include" + ], "test/buildtest_c_ebcdic" => [ "include" ], @@ -18457,12 +21388,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => [ "include" ], + "test/buildtest_c_hpke" => [ + "include" + ], "test/buildtest_c_http" => [ "include" ], "test/buildtest_c_idea" => [ "include" ], + "test/buildtest_c_indicator" => [ + "include" + ], "test/buildtest_c_kdf" => [ "include" ], @@ -18478,6 +21415,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => [ "include" ], + "test/buildtest_c_ml_kem" => [ + "include" + ], "test/buildtest_c_modes" => [ "include" ], @@ -18508,6 +21448,9 @@ our %unified_info = ( "test/buildtest_c_provider" => [ "include" ], + "test/buildtest_c_quic" => [ + "include" + ], "test/buildtest_c_rand" => [ "include" ], @@ -18550,6 +21493,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => [ "include" ], + "test/buildtest_c_thread" => [ + "include" + ], "test/buildtest_c_tls1" => [ "include" ], @@ -18565,10 +21511,24 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => [ "include" ], + "test/byteorder_test" => [ + "include", + "apps/include" + ], + "test/ca_internals_test" => [ + ".", + "include", + "apps/include" + ], "test/casttest" => [ "include", "apps/include" ], + "test/cert_comp_test" => [ + "include", + "apps/include", + "." + ], "test/chacha_internal_test" => [ ".", "include", @@ -18692,6 +21652,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/decoder_propq_test" => [ + ".", + "include", + "apps/include" + ], "test/defltfips_test" => [ "include", "apps/include" @@ -18707,7 +21672,8 @@ our %unified_info = ( "test/drbgtest" => [ "include", "apps/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "test/dsa_no_digest_size_test" => [ "include", @@ -18750,7 +21716,9 @@ our %unified_info = ( "test/endecode_test" => [ ".", "include", - "apps/include" + "apps/include", + "providers/common/include", + "providers/implementations/include" ], "test/endecoder_legacy_test" => [ ".", @@ -18795,6 +21763,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_pkey_dhkem_test" => [ + "include", + "apps/include" + ], "test/evp_pkey_dparams_test" => [ "include", "apps/include" @@ -18803,10 +21775,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_skey_test" => [ + "include", + "apps/include" + ], "test/evp_test" => [ "include", "apps/include" ], + "test/evp_xof_test" => [ + "include", + "apps/include" + ], "test/exdatatest" => [ "include", "apps/include" @@ -18907,22 +21887,62 @@ our %unified_info = ( ".", "include" ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/pkcs12.o" => [ ".", "include" ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + ".", + "include" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ ".", "include" ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/ssl_test-bin-handshake.o" => [ ".", "include" @@ -18956,6 +21976,10 @@ our %unified_info = ( ".", "include" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/hexstr_test" => [ ".", "include", @@ -18965,6 +21989,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/hpke_test" => [ + "include", + "apps/include" + ], "test/http_test" => [ "include", "apps/include" @@ -18977,6 +22005,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/json_test" => [ + "include", + "apps/include" + ], "test/keymgmt_internal_test" => [ ".", "include", @@ -18991,6 +22023,10 @@ our %unified_info = ( "apps/include", "." ], + "test/list_test" => [ + "include", + "apps/include" + ], "test/localetest" => [ "include", "apps/include" @@ -19004,10 +22040,27 @@ our %unified_info = ( "include", "apps/include" ], + "test/membio_test" => [ + "include", + "apps/include", + "." + ], "test/memleaktest" => [ "include", "apps/include" ], + "test/ml_dsa_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_evp_extra_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_internal_test" => [ + "include", + "apps/include" + ], "test/modes_internal_test" => [ ".", "include", @@ -19042,6 +22095,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pairwise_fail_test" => [ + "include", + "apps/include" + ], "test/param_build_test" => [ "include", "apps/include" @@ -19075,6 +22132,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pkcs12_api_test" => [ + "include", + "apps/include" + ], "test/pkcs12_format_test" => [ "include", "apps/include" @@ -19096,6 +22157,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/priority_queue_test" => [ + "include", + "apps/include" + ], "test/property_test" => [ ".", "include", @@ -19109,6 +22174,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/provider_default_search_path_test" => [ + "include", + "apps/include" + ], "test/provider_fallback_test" => [ "include", "apps/include" @@ -19135,6 +22204,97 @@ our %unified_info = ( "include", "apps/include" ], + "test/quic_ackm_test" => [ + "include", + "apps/include" + ], + "test/quic_cc_test" => [ + "include", + "apps/include" + ], + "test/quic_cfq_test" => [ + "include", + "apps/include" + ], + "test/quic_client_test" => [ + "include", + "apps/include" + ], + "test/quic_fc_test" => [ + "include", + "apps/include" + ], + "test/quic_fifd_test" => [ + "include", + "apps/include" + ], + "test/quic_lcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_multistream_test" => [ + "include", + "apps/include" + ], + "test/quic_newcid_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_qlog_test" => [ + "include", + "apps/include" + ], + "test/quic_radix_test" => [ + "include", + "apps/include" + ], + "test/quic_rcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_record_test" => [ + "include", + "apps/include" + ], + "test/quic_srt_gen_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_srtm_test" => [ + "include", + "apps/include" + ], + "test/quic_stream_test" => [ + "include", + "apps/include" + ], + "test/quic_tserver_test" => [ + "include", + "apps/include" + ], + "test/quic_txp_test" => [ + "include", + "apps/include" + ], + "test/quic_txpim_test" => [ + "include", + "apps/include" + ], + "test/quic_wire_test" => [ + "include", + "apps/include" + ], + "test/quicapitest" => [ + "include", + "apps/include" + ], + "test/quicfaultstest" => [ + "include", + "apps/include", + "." + ], "test/rand_status_test" => [ "include", "apps/include" @@ -19155,14 +22315,20 @@ our %unified_info = ( "include", "apps/include" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "include", - "apps/include" + "apps/include", + "crypto" ], "test/recordlentest" => [ "include", "apps/include" ], + "test/rpktest" => [ + "include", + "apps/include", + "." + ], "test/rsa_complex" => [ "include", "apps/include" @@ -19181,6 +22347,15 @@ our %unified_info = ( "include", "apps/include" ], + "test/rsa_x931_test" => [ + ".", + "include", + "apps/include" + ], + "test/safe_math_test" => [ + "include", + "apps/include" + ], "test/sanitytest" => [ "include", "apps/include" @@ -19202,6 +22377,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/slh_dsa_test" => [ + "include", + "apps/include" + ], "test/sm2_internal_test" => [ "include", "apps/include" @@ -19232,6 +22411,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/ssl_handshake_rtt_test" => [ + "include", + "apps/include", + "." + ], "test/ssl_old_test" => [ ".", "include", @@ -19248,6 +22432,7 @@ our %unified_info = ( "test/sslapitest" => [ "include", "apps/include", + "providers/common/include", "." ], "test/sslbuffertest" => [ @@ -19262,6 +22447,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/strtoultest" => [ + "include", + "apps/include" + ], "test/sysdefaulttest" => [ "include", "apps/include" @@ -19270,7 +22459,13 @@ our %unified_info = ( "include", "apps/include" ], + "test/threadpool_test" => [ + ".", + "include", + "apps/include" + ], "test/threadstest" => [ + ".", "include", "apps/include" ], @@ -19282,6 +22477,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/time_test" => [ + "include", + "apps/include" + ], "test/tls13ccstest" => [ "include", "apps/include" @@ -19291,6 +22490,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/tls13groupselection_test" => [ + "include", + "apps/include" + ], "test/trace_api_test" => [ ".", "include", @@ -19329,6 +22532,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_acert_test" => [ + "include", + "apps/include" + ], "test/x509_check_cert_pkey_test" => [ "include", "apps/include" @@ -19342,6 +22549,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_load_cert_file_test" => [ + "include", + "apps/include" + ], + "test/x509_req_test" => [ + "include", + "apps/include" + ], + "test/x509_test" => [ + "include", + "apps/include" + ], "test/x509_time_test" => [ "include", "apps/include" @@ -19363,6 +22582,7 @@ our %unified_info = ( "providers/libdefault.a", "providers/libfips.a", "providers/liblegacy.a", + "providers/libtemplate.a", "test/libtestutil.a" ], "mandocs" => { @@ -19415,6 +22635,7 @@ our %unified_info = ( "doc/man/man1/openssl-s_server.1", "doc/man/man1/openssl-s_time.1", "doc/man/man1/openssl-sess_id.1", + "doc/man/man1/openssl-skeyutl.1", "doc/man/man1/openssl-smime.1", "doc/man/man1/openssl-speed.1", "doc/man/man1/openssl-spkac.1", @@ -19464,6 +22685,7 @@ our %unified_info = ( "doc/man/man3/BIO_find_type.3", "doc/man/man3/BIO_get_data.3", "doc/man/man3/BIO_get_ex_new_index.3", + "doc/man/man3/BIO_get_rpoll_descriptor.3", "doc/man/man3/BIO_meth_new.3", "doc/man/man3/BIO_new.3", "doc/man/man3/BIO_new_CMS.3", @@ -19476,11 +22698,13 @@ our %unified_info = ( "doc/man/man3/BIO_s_connect.3", "doc/man/man3/BIO_s_core.3", "doc/man/man3/BIO_s_datagram.3", + "doc/man/man3/BIO_s_dgram_pair.3", "doc/man/man3/BIO_s_fd.3", "doc/man/man3/BIO_s_file.3", "doc/man/man3/BIO_s_mem.3", "doc/man/man3/BIO_s_null.3", "doc/man/man3/BIO_s_socket.3", + "doc/man/man3/BIO_sendmmsg.3", "doc/man/man3/BIO_set_callback.3", "doc/man/man3/BIO_should_retry.3", "doc/man/man3/BIO_socket_wait.3", @@ -19505,6 +22729,7 @@ our %unified_info = ( "doc/man/man3/BN_swap.3", "doc/man/man3/BN_zero.3", "doc/man/man3/BUF_MEM_new.3", + "doc/man/man3/CMAC_CTX.3", "doc/man/man3/CMS_EncryptedData_decrypt.3", "doc/man/man3/CMS_EncryptedData_encrypt.3", "doc/man/man3/CMS_EnvelopedData_create.3", @@ -19527,6 +22752,7 @@ our %unified_info = ( "doc/man/man3/CMS_uncompress.3", "doc/man/man3/CMS_verify.3", "doc/man/man3/CMS_verify_receipt.3", + "doc/man/man3/COMP_CTX_new.3", "doc/man/man3/CONF_modules_free.3", "doc/man/man3/CONF_modules_load_file.3", "doc/man/man3/CRYPTO_THREAD_run_once.3", @@ -19560,6 +22786,8 @@ our %unified_info = ( "doc/man/man3/DSA_size.3", "doc/man/man3/DTLS_get_data_mtu.3", "doc/man/man3/DTLS_set_timer_cb.3", + "doc/man/man3/DTLSv1_get_timeout.3", + "doc/man/man3/DTLSv1_handle_timeout.3", "doc/man/man3/DTLSv1_listen.3", "doc/man/man3/ECDSA_SIG_new.3", "doc/man/man3/ECDSA_sign.3", @@ -19606,6 +22834,7 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_ctrl.3", "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3", "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3", + "doc/man/man3/EVP_PKEY_CTX_get_algor.3", "doc/man/man3/EVP_PKEY_CTX_new.3", "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3", "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3", @@ -19645,6 +22874,8 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_verify_recover.3", "doc/man/man3/EVP_RAND.3", "doc/man/man3/EVP_SIGNATURE.3", + "doc/man/man3/EVP_SKEY.3", + "doc/man/man3/EVP_SKEYMGMT.3", "doc/man/man3/EVP_SealInit.3", "doc/man/man3/EVP_SignInit.3", "doc/man/man3/EVP_VerifyInit.3", @@ -19674,6 +22905,7 @@ our %unified_info = ( "doc/man/man3/EVP_sm3.3", "doc/man/man3/EVP_sm4_cbc.3", "doc/man/man3/EVP_whirlpool.3", + "doc/man/man3/GENERAL_NAME.3", "doc/man/man3/HMAC.3", "doc/man/man3/MD5.3", "doc/man/man3/MDC2_Init.3", @@ -19698,14 +22930,18 @@ our %unified_info = ( "doc/man/man3/OPENSSL_init_ssl.3", "doc/man/man3/OPENSSL_instrument_bus.3", "doc/man/man3/OPENSSL_load_builtin_modules.3", + "doc/man/man3/OPENSSL_load_u16_le.3", "doc/man/man3/OPENSSL_malloc.3", + "doc/man/man3/OPENSSL_riscvcap.3", "doc/man/man3/OPENSSL_s390xcap.3", "doc/man/man3/OPENSSL_secure_malloc.3", "doc/man/man3/OPENSSL_strcasecmp.3", "doc/man/man3/OSSL_ALGORITHM.3", "doc/man/man3/OSSL_CALLBACK.3", + "doc/man/man3/OSSL_CMP_ATAV_set0.3", "doc/man/man3/OSSL_CMP_CTX_new.3", "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3", + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3", "doc/man/man3/OSSL_CMP_ITAV_set0.3", "doc/man/man3/OSSL_CMP_MSG_get0_header.3", "doc/man/man3/OSSL_CMP_MSG_http_perform.3", @@ -19729,18 +22965,27 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_CTX.3", "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3", "doc/man/man3/OSSL_ENCODER_to_bio.3", + "doc/man/man3/OSSL_ERR_STATE_save.3", "doc/man/man3/OSSL_ESS_check_signing_certs.3", + "doc/man/man3/OSSL_GENERAL_NAMES_print.3", + "doc/man/man3/OSSL_HPKE_CTX_new.3", "doc/man/man3/OSSL_HTTP_REQ_CTX.3", "doc/man/man3/OSSL_HTTP_parse_url.3", "doc/man/man3/OSSL_HTTP_transfer.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3", + "doc/man/man3/OSSL_INDICATOR_set_callback.3", "doc/man/man3/OSSL_ITEM.3", "doc/man/man3/OSSL_LIB_CTX.3", + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3", "doc/man/man3/OSSL_PARAM.3", "doc/man/man3/OSSL_PARAM_BLD.3", "doc/man/man3/OSSL_PARAM_allocate_from_text.3", "doc/man/man3/OSSL_PARAM_dup.3", "doc/man/man3/OSSL_PARAM_int.3", + "doc/man/man3/OSSL_PARAM_print_to_bio.3", "doc/man/man3/OSSL_PROVIDER.3", + "doc/man/man3/OSSL_QUIC_client_method.3", "doc/man/man3/OSSL_SELF_TEST_new.3", "doc/man/man3/OSSL_SELF_TEST_set_callback.3", "doc/man/man3/OSSL_STORE_INFO.3", @@ -19749,11 +22994,13 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_attach.3", "doc/man/man3/OSSL_STORE_expect.3", "doc/man/man3/OSSL_STORE_open.3", + "doc/man/man3/OSSL_sleep.3", "doc/man/man3/OSSL_trace_enabled.3", "doc/man/man3/OSSL_trace_get_category_num.3", "doc/man/man3/OSSL_trace_set_channel.3", "doc/man/man3/OpenSSL_add_all_algorithms.3", "doc/man/man3/OpenSSL_version.3", + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3", "doc/man/man3/PEM_X509_INFO_read_bio_ex.3", "doc/man/man3/PEM_bytes_read_bio.3", "doc/man/man3/PEM_read.3", @@ -19766,6 +23013,7 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_create_cert.3", "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3", "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3", + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3", "doc/man/man3/PKCS12_add1_attr_by_NID.3", "doc/man/man3/PKCS12_add_CSPName_asc.3", "doc/man/man3/PKCS12_add_cert.3", @@ -19857,6 +23105,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_sess_set_get_cb.3", "doc/man/man3/SSL_CTX_sessions.3", "doc/man/man3/SSL_CTX_set0_CA_list.3", + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3", "doc/man/man3/SSL_CTX_set1_curves.3", "doc/man/man3/SSL_CTX_set1_sigalgs.3", "doc/man/man3/SSL_CTX_set1_verify_cert_store.3", @@ -19870,6 +23119,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_ct_validation_callback.3", "doc/man/man3/SSL_CTX_set_ctlog_list_file.3", "doc/man/man3/SSL_CTX_set_default_passwd_cb.3", + "doc/man/man3/SSL_CTX_set_domain_flags.3", "doc/man/man3/SSL_CTX_set_generate_session_id.3", "doc/man/man3/SSL_CTX_set_info_callback.3", "doc/man/man3/SSL_CTX_set_keylog_callback.3", @@ -19877,6 +23127,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_min_proto_version.3", "doc/man/man3/SSL_CTX_set_mode.3", "doc/man/man3/SSL_CTX_set_msg_callback.3", + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3", "doc/man/man3/SSL_CTX_set_num_tickets.3", "doc/man/man3/SSL_CTX_set_options.3", "doc/man/man3/SSL_CTX_set_psk_client_callback.3", @@ -19915,6 +23166,7 @@ our %unified_info = ( "doc/man/man3/SSL_SESSION_print.3", "doc/man/man3/SSL_SESSION_set1_id.3", "doc/man/man3/SSL_accept.3", + "doc/man/man3/SSL_accept_stream.3", "doc/man/man3/SSL_alert_type_string.3", "doc/man/man3/SSL_alloc_buffers.3", "doc/man/man3/SSL_check_chain.3", @@ -19924,59 +23176,90 @@ our %unified_info = ( "doc/man/man3/SSL_export_keying_material.3", "doc/man/man3/SSL_extension_supported.3", "doc/man/man3/SSL_free.3", + "doc/man/man3/SSL_get0_connection.3", + "doc/man/man3/SSL_get0_group_name.3", + "doc/man/man3/SSL_get0_peer_rpk.3", "doc/man/man3/SSL_get0_peer_scts.3", + "doc/man/man3/SSL_get1_builtin_sigalgs.3", "doc/man/man3/SSL_get_SSL_CTX.3", "doc/man/man3/SSL_get_all_async_fds.3", "doc/man/man3/SSL_get_certificate.3", "doc/man/man3/SSL_get_ciphers.3", "doc/man/man3/SSL_get_client_random.3", + "doc/man/man3/SSL_get_conn_close_info.3", "doc/man/man3/SSL_get_current_cipher.3", "doc/man/man3/SSL_get_default_timeout.3", "doc/man/man3/SSL_get_error.3", + "doc/man/man3/SSL_get_event_timeout.3", "doc/man/man3/SSL_get_extms_support.3", "doc/man/man3/SSL_get_fd.3", + "doc/man/man3/SSL_get_handshake_rtt.3", "doc/man/man3/SSL_get_peer_cert_chain.3", "doc/man/man3/SSL_get_peer_certificate.3", "doc/man/man3/SSL_get_peer_signature_nid.3", "doc/man/man3/SSL_get_peer_tmp_key.3", "doc/man/man3/SSL_get_psk_identity.3", "doc/man/man3/SSL_get_rbio.3", + "doc/man/man3/SSL_get_rpoll_descriptor.3", "doc/man/man3/SSL_get_session.3", "doc/man/man3/SSL_get_shared_sigalgs.3", + "doc/man/man3/SSL_get_stream_id.3", + "doc/man/man3/SSL_get_stream_read_state.3", + "doc/man/man3/SSL_get_value_uint.3", "doc/man/man3/SSL_get_verify_result.3", "doc/man/man3/SSL_get_version.3", "doc/man/man3/SSL_group_to_name.3", + "doc/man/man3/SSL_handle_events.3", "doc/man/man3/SSL_in_init.3", + "doc/man/man3/SSL_inject_net_dgram.3", "doc/man/man3/SSL_key_update.3", "doc/man/man3/SSL_library_init.3", "doc/man/man3/SSL_load_client_CA_file.3", "doc/man/man3/SSL_new.3", + "doc/man/man3/SSL_new_domain.3", + "doc/man/man3/SSL_new_listener.3", + "doc/man/man3/SSL_new_stream.3", "doc/man/man3/SSL_pending.3", + "doc/man/man3/SSL_poll.3", "doc/man/man3/SSL_read.3", "doc/man/man3/SSL_read_early_data.3", "doc/man/man3/SSL_rstate_string.3", "doc/man/man3/SSL_session_reused.3", "doc/man/man3/SSL_set1_host.3", + "doc/man/man3/SSL_set1_initial_peer_addr.3", + "doc/man/man3/SSL_set1_server_cert_type.3", "doc/man/man3/SSL_set_async_callback.3", "doc/man/man3/SSL_set_bio.3", + "doc/man/man3/SSL_set_blocking_mode.3", "doc/man/man3/SSL_set_connect_state.3", + "doc/man/man3/SSL_set_default_stream_mode.3", "doc/man/man3/SSL_set_fd.3", + "doc/man/man3/SSL_set_incoming_stream_policy.3", + "doc/man/man3/SSL_set_quic_tls_cbs.3", "doc/man/man3/SSL_set_retry_verify.3", "doc/man/man3/SSL_set_session.3", + "doc/man/man3/SSL_set_session_secret_cb.3", "doc/man/man3/SSL_set_shutdown.3", "doc/man/man3/SSL_set_verify_result.3", "doc/man/man3/SSL_shutdown.3", "doc/man/man3/SSL_state_string.3", + "doc/man/man3/SSL_stream_conclude.3", + "doc/man/man3/SSL_stream_reset.3", "doc/man/man3/SSL_want.3", "doc/man/man3/SSL_write.3", "doc/man/man3/TS_RESP_CTX_new.3", - "doc/man/man3/TS_VERIFY_CTX_set_certs.3", + "doc/man/man3/TS_VERIFY_CTX.3", "doc/man/man3/UI_STRING.3", "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", + "doc/man/man3/X509_ACERT_add1_attr.3", + "doc/man/man3/X509_ACERT_add_attr_nconf.3", + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3", + "doc/man/man3/X509_ACERT_get_attr.3", + "doc/man/man3/X509_ACERT_print_ex.3", "doc/man/man3/X509_ALGOR_dup.3", "doc/man/man3/X509_ATTRIBUTE.3", "doc/man/man3/X509_CRL_get0_by_serial.3", @@ -19993,6 +23276,7 @@ our %unified_info = ( "doc/man/man3/X509_REQ_get_attr.3", "doc/man/man3/X509_REQ_get_extensions.3", "doc/man/man3/X509_SIG_get0.3", + "doc/man/man3/X509_STORE_CTX_get_by_subject.3", "doc/man/man3/X509_STORE_CTX_get_error.3", "doc/man/man3/X509_STORE_CTX_new.3", "doc/man/man3/X509_STORE_CTX_set_verify_cb.3", @@ -20015,6 +23299,7 @@ our %unified_info = ( "doc/man/man3/X509_get0_notBefore.3", "doc/man/man3/X509_get0_signature.3", "doc/man/man3/X509_get0_uids.3", + "doc/man/man3/X509_get_default_cert_file.3", "doc/man/man3/X509_get_extension_flags.3", "doc/man/man3/X509_get_pubkey.3", "doc/man/man3/X509_get_serialNumber.3", @@ -20060,12 +23345,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-RC5.7", "doc/man/man7/EVP_CIPHER-SEED.7", "doc/man/man7/EVP_CIPHER-SM4.7", + "doc/man/man7/EVP_KDF-ARGON2.7", "doc/man/man7/EVP_KDF-HKDF.7", + "doc/man/man7/EVP_KDF-HMAC-DRBG.7", "doc/man/man7/EVP_KDF-KB.7", "doc/man/man7/EVP_KDF-KRB5KDF.7", "doc/man/man7/EVP_KDF-PBKDF1.7", "doc/man/man7/EVP_KDF-PBKDF2.7", "doc/man/man7/EVP_KDF-PKCS12KDF.7", + "doc/man/man7/EVP_KDF-PVKKDF.7", "doc/man/man7/EVP_KDF-SCRYPT.7", "doc/man/man7/EVP_KDF-SS.7", "doc/man/man7/EVP_KDF-SSHKDF.7", @@ -20074,7 +23362,10 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X942-ASN1.7", "doc/man/man7/EVP_KDF-X942-CONCAT.7", "doc/man/man7/EVP_KDF-X963.7", + "doc/man/man7/EVP_KEM-EC.7", + "doc/man/man7/EVP_KEM-ML-KEM.7", "doc/man/man7/EVP_KEM-RSA.7", + "doc/man/man7/EVP_KEM-X25519.7", "doc/man/man7/EVP_KEYEXCH-DH.7", "doc/man/man7/EVP_KEYEXCH-ECDH.7", "doc/man/man7/EVP_KEYEXCH-X25519.7", @@ -20086,6 +23377,7 @@ our %unified_info = ( "doc/man/man7/EVP_MAC-Poly1305.7", "doc/man/man7/EVP_MAC-Siphash.7", "doc/man/man7/EVP_MD-BLAKE2.7", + "doc/man/man7/EVP_MD-KECCAK.7", "doc/man/man7/EVP_MD-MD2.7", "doc/man/man7/EVP_MD-MD4.7", "doc/man/man7/EVP_MD-MD5-SHA1.7", @@ -20105,12 +23397,17 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-EC.7", "doc/man/man7/EVP_PKEY-FFC.7", "doc/man/man7/EVP_PKEY-HMAC.7", + "doc/man/man7/EVP_PKEY-ML-DSA.7", + "doc/man/man7/EVP_PKEY-ML-KEM.7", "doc/man/man7/EVP_PKEY-RSA.7", + "doc/man/man7/EVP_PKEY-SLH-DSA.7", "doc/man/man7/EVP_PKEY-SM2.7", "doc/man/man7/EVP_PKEY-X25519.7", + "doc/man/man7/EVP_RAND-CRNG-TEST.7", "doc/man/man7/EVP_RAND-CTR-DRBG.7", "doc/man/man7/EVP_RAND-HASH-DRBG.7", "doc/man/man7/EVP_RAND-HMAC-DRBG.7", + "doc/man/man7/EVP_RAND-JITTER.7", "doc/man/man7/EVP_RAND-SEED-SRC.7", "doc/man/man7/EVP_RAND-TEST-RAND.7", "doc/man/man7/EVP_RAND.7", @@ -20118,17 +23415,19 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-ECDSA.7", "doc/man/man7/EVP_SIGNATURE-ED25519.7", "doc/man/man7/EVP_SIGNATURE-HMAC.7", + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7", "doc/man/man7/EVP_SIGNATURE-RSA.7", + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7", "doc/man/man7/OSSL_PROVIDER-FIPS.7", "doc/man/man7/OSSL_PROVIDER-base.7", "doc/man/man7/OSSL_PROVIDER-default.7", "doc/man/man7/OSSL_PROVIDER-legacy.7", "doc/man/man7/OSSL_PROVIDER-null.7", + "doc/man/man7/OSSL_STORE-winstore.7", "doc/man/man7/RAND.7", "doc/man/man7/RSA-PSS.7", "doc/man/man7/X25519.7", "doc/man/man7/bio.7", - "doc/man/man7/crypto.7", "doc/man/man7/ct.7", "doc/man/man7/des_modes.7", "doc/man/man7/evp.7", @@ -20139,14 +23438,31 @@ our %unified_info = ( "doc/man/man7/life_cycle-mac.7", "doc/man/man7/life_cycle-pkey.7", "doc/man/man7/life_cycle-rand.7", - "doc/man/man7/migration_guide.7", "doc/man/man7/openssl-core.h.7", "doc/man/man7/openssl-core_dispatch.h.7", "doc/man/man7/openssl-core_names.h.7", "doc/man/man7/openssl-env.7", "doc/man/man7/openssl-glossary.7", + "doc/man/man7/openssl-qlog.7", + "doc/man/man7/openssl-quic-concurrency.7", + "doc/man/man7/openssl-quic.7", "doc/man/man7/openssl-threads.7", "doc/man/man7/openssl_user_macros.7", + "doc/man/man7/ossl-guide-introduction.7", + "doc/man/man7/ossl-guide-libcrypto-introduction.7", + "doc/man/man7/ossl-guide-libraries-introduction.7", + "doc/man/man7/ossl-guide-libssl-introduction.7", + "doc/man/man7/ossl-guide-migration.7", + "doc/man/man7/ossl-guide-quic-client-block.7", + "doc/man/man7/ossl-guide-quic-client-non-block.7", + "doc/man/man7/ossl-guide-quic-introduction.7", + "doc/man/man7/ossl-guide-quic-multi-stream.7", + "doc/man/man7/ossl-guide-quic-server-block.7", + "doc/man/man7/ossl-guide-quic-server-non-block.7", + "doc/man/man7/ossl-guide-tls-client-block.7", + "doc/man/man7/ossl-guide-tls-client-non-block.7", + "doc/man/man7/ossl-guide-tls-introduction.7", + "doc/man/man7/ossl-guide-tls-server-block.7", "doc/man/man7/ossl_store-file.7", "doc/man/man7/ossl_store.7", "doc/man/man7/passphrase-encoding.7", @@ -20165,10 +23481,10 @@ our %unified_info = ( "doc/man/man7/provider-object.7", "doc/man/man7/provider-rand.7", "doc/man/man7/provider-signature.7", + "doc/man/man7/provider-skeymgmt.7", "doc/man/man7/provider-storemgmt.7", "doc/man/man7/provider.7", "doc/man/man7/proxy-certificates.7", - "doc/man/man7/ssl.7", "doc/man/man7/x509.7" ] }, @@ -20180,6 +23496,7 @@ our %unified_info = ( ], "programs" => [ "apps/openssl", + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -20190,7 +23507,24 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test", "test/aborttest", "test/acvp_test", @@ -20208,21 +23542,28 @@ our %unified_info = ( "test/asynctest", "test/bad_dtls_test", "test/bftest", + "test/bio_addr_test", + "test/bio_base64_test", "test/bio_callback_test", "test/bio_core_test", + "test/bio_dgram_test", "test/bio_enc_test", "test/bio_memleak_test", + "test/bio_meth_test", "test/bio_prefix_text", "test/bio_pw_callback_test", "test/bio_readbuffer_test", + "test/bio_tfo_test", "test/bioprinttest", "test/bn_internal_test", "test/bntest", + "test/build_wincrypt_test", "test/buildtest_c_aes", "test/buildtest_c_async", "test/buildtest_c_blowfish", "test/buildtest_c_bn", "test/buildtest_c_buffer", + "test/buildtest_c_byteorder", "test/buildtest_c_camellia", "test/buildtest_c_cast", "test/buildtest_c_cmac", @@ -20231,7 +23572,6 @@ our %unified_info = ( "test/buildtest_c_conftypes", "test/buildtest_c_core", "test/buildtest_c_core_dispatch", - "test/buildtest_c_core_names", "test/buildtest_c_core_object", "test/buildtest_c_cryptoerr_legacy", "test/buildtest_c_decoder", @@ -20240,6 +23580,7 @@ our %unified_info = ( "test/buildtest_c_dsa", "test/buildtest_c_dtls1", "test/buildtest_c_e_os2", + "test/buildtest_c_e_ostime", "test/buildtest_c_ebcdic", "test/buildtest_c_ec", "test/buildtest_c_ecdh", @@ -20249,13 +23590,16 @@ our %unified_info = ( "test/buildtest_c_evp", "test/buildtest_c_fips_names", "test/buildtest_c_hmac", + "test/buildtest_c_hpke", "test/buildtest_c_http", "test/buildtest_c_idea", + "test/buildtest_c_indicator", "test/buildtest_c_kdf", "test/buildtest_c_macros", "test/buildtest_c_md4", "test/buildtest_c_md5", "test/buildtest_c_mdc2", + "test/buildtest_c_ml_kem", "test/buildtest_c_modes", "test/buildtest_c_obj_mac", "test/buildtest_c_objects", @@ -20266,6 +23610,7 @@ our %unified_info = ( "test/buildtest_c_pem2", "test/buildtest_c_prov_ssl", "test/buildtest_c_provider", + "test/buildtest_c_quic", "test/buildtest_c_rand", "test/buildtest_c_rc2", "test/buildtest_c_rc4", @@ -20280,11 +23625,14 @@ our %unified_info = ( "test/buildtest_c_stack", "test/buildtest_c_store", "test/buildtest_c_symhacks", + "test/buildtest_c_thread", "test/buildtest_c_tls1", "test/buildtest_c_ts", "test/buildtest_c_txt_db", "test/buildtest_c_types", "test/buildtest_c_whrlpool", + "test/byteorder_test", + "test/ca_internals_test", "test/casttest", "test/chacha_internal_test", "test/cipher_overhead_test", @@ -20313,6 +23661,7 @@ our %unified_info = ( "test/curve448_internal_test", "test/d2i_test", "test/danetest", + "test/decoder_propq_test", "test/defltfips_test", "test/destest", "test/dhtest", @@ -20337,9 +23686,12 @@ our %unified_info = ( "test/evp_kdf_test", "test/evp_libctx_test", "test/evp_pkey_ctx_new_from_name", + "test/evp_pkey_dhkem_test", "test/evp_pkey_dparams_test", "test/evp_pkey_provided_test", + "test/evp_skey_test", "test/evp_test", + "test/evp_xof_test", "test/exdatatest", "test/exptest", "test/ext_internal_test", @@ -20349,21 +23701,29 @@ our %unified_info = ( "test/gmdifftest", "test/hexstr_test", "test/hmactest", + "test/hpke_test", "test/http_test", "test/ideatest", "test/igetest", + "test/json_test", "test/keymgmt_internal_test", "test/lhash_test", + "test/list_test", "test/localetest", "test/mdc2_internal_test", "test/mdc2test", + "test/membio_test", "test/memleaktest", + "test/ml_dsa_test", + "test/ml_kem_evp_extra_test", + "test/ml_kem_internal_test", "test/modes_internal_test", "test/namemap_internal_test", "test/nodefltctxtest", "test/ocspapitest", "test/ossl_store_test", "test/packettest", + "test/pairwise_fail_test", "test/param_build_test", "test/params_api_test", "test/params_conversion_test", @@ -20372,36 +23732,65 @@ our %unified_info = ( "test/pbetest", "test/pem_read_depr_test", "test/pemtest", + "test/pkcs12_api_test", "test/pkcs12_format_test", "test/pkcs7_test", "test/pkey_meth_kdf_test", "test/pkey_meth_test", "test/poly1305_internal_test", + "test/priority_queue_test", "test/property_test", "test/prov_config_test", "test/provfetchtest", + "test/provider_default_search_path_test", "test/provider_fallback_test", "test/provider_internal_test", "test/provider_pkey_test", "test/provider_status_test", "test/provider_test", "test/punycode_test", + "test/quic_ackm_test", + "test/quic_cc_test", + "test/quic_cfq_test", + "test/quic_client_test", + "test/quic_fc_test", + "test/quic_fifd_test", + "test/quic_lcidm_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_qlog_test", + "test/quic_radix_test", + "test/quic_rcidm_test", + "test/quic_record_test", + "test/quic_srt_gen_test", + "test/quic_srtm_test", + "test/quic_stream_test", + "test/quic_tserver_test", + "test/quic_txp_test", + "test/quic_txpim_test", + "test/quic_wire_test", + "test/quicapitest", + "test/quicfaultstest", "test/rand_status_test", "test/rand_test", "test/rc2test", "test/rc4test", "test/rc5test", - "test/rdrand_sanitytest", + "test/rdcpu_sanitytest", "test/recordlentest", + "test/rpktest", "test/rsa_complex", "test/rsa_mp_test", "test/rsa_sp800_56b_test", "test/rsa_test", + "test/rsa_x931_test", + "test/safe_math_test", "test/sanitytest", "test/secmemtest", "test/servername_test", "test/sha_test", "test/siphash_internal_test", + "test/slh_dsa_test", "test/sm2_internal_test", "test/sm3_internal_test", "test/sm4_internal_test", @@ -20409,6 +23798,7 @@ our %unified_info = ( "test/srptest", "test/ssl_cert_table_internal_test", "test/ssl_ctx_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", @@ -20416,13 +23806,17 @@ our %unified_info = ( "test/sslbuffertest", "test/sslcorrupttest", "test/stack_test", + "test/strtoultest", "test/sysdefaulttest", "test/test_test", + "test/threadpool_test", "test/threadstest", "test/threadstest_fips", "test/time_offset_test", + "test/time_test", "test/tls13ccstest", "test/tls13encryptiontest", + "test/tls13groupselection_test", "test/trace_api_test", "test/uitest", "test/upcallstest", @@ -20432,9 +23826,13 @@ our %unified_info = ( "test/verify_extra_test", "test/versions", "test/wpackettest", + "test/x509_acert_test", "test/x509_check_cert_pkey_test", "test/x509_dup_cert_test", "test/x509_internal_test", + "test/x509_load_cert_file_test", + "test/x509_req_test", + "test/x509_test", "test/x509_time_test", "test/x509aux" ], @@ -20449,6 +23847,33 @@ our %unified_info = ( "apps/CA.pl" => [ "apps/CA.pl.in" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/ca.c" + ], + "apps/lib/ca_internals_test-bin-app_libctx.o" => [ + "apps/lib/app_libctx.c" + ], + "apps/lib/ca_internals_test-bin-app_provider.o" => [ + "apps/lib/app_provider.c" + ], + "apps/lib/ca_internals_test-bin-app_rand.o" => [ + "apps/lib/app_rand.c" + ], + "apps/lib/ca_internals_test-bin-app_x509.o" => [ + "apps/lib/app_x509.c" + ], + "apps/lib/ca_internals_test-bin-apps.o" => [ + "apps/lib/apps.c" + ], + "apps/lib/ca_internals_test-bin-apps_ui.o" => [ + "apps/lib/apps_ui.c" + ], + "apps/lib/ca_internals_test-bin-engine.o" => [ + "apps/lib/engine.c" + ], + "apps/lib/ca_internals_test-bin-fmt.o" => [ + "apps/lib/fmt.c" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/lib/cmp_mock_srv.c" ], @@ -20470,6 +23895,9 @@ our %unified_info = ( "apps/lib/libapps-lib-apps.o" => [ "apps/lib/apps.c" ], + "apps/lib/libapps-lib-apps_opt_printf.o" => [ + "apps/lib/apps_opt_printf.c" + ], "apps/lib/libapps-lib-apps_ui.o" => [ "apps/lib/apps_ui.c" ], @@ -20488,6 +23916,9 @@ our %unified_info = ( "apps/lib/libapps-lib-http_server.o" => [ "apps/lib/http_server.c" ], + "apps/lib/libapps-lib-log.o" => [ + "apps/lib/log.c" + ], "apps/lib/libapps-lib-names.o" => [ "apps/lib/names.c" ], @@ -20525,12 +23956,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -20586,6 +24019,7 @@ our %unified_info = ( "apps/openssl-bin-s_server.o", "apps/openssl-bin-s_time.o", "apps/openssl-bin-sess_id.o", + "apps/openssl-bin-skeyutl.o", "apps/openssl-bin-smime.o", "apps/openssl-bin-speed.o", "apps/openssl-bin-spkac.o", @@ -20734,6 +24168,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/sess_id.c" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/skeyutl.c" + ], "apps/openssl-bin-smime.o" => [ "apps/smime.c" ], @@ -20803,6 +24240,12 @@ our %unified_info = ( "crypto/aria/libcrypto-lib-aria.o" => [ "crypto/aria/aria.c" ], + "crypto/asn1/asn1_time_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], + "crypto/asn1/ca_internals_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], "crypto/asn1/libcrypto-lib-a_bitstr.o" => [ "crypto/asn1/a_bitstr.c" ], @@ -20995,6 +24438,9 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" => [ "crypto/asn1/x_val.c" ], + "crypto/asn1_time_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/async/arch/libcrypto-lib-async_null.o" => [ "crypto/async/arch/async_null.c" ], @@ -21088,6 +24534,9 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_dgram.o" => [ "crypto/bio/bss_dgram.c" ], + "crypto/bio/libcrypto-lib-bss_dgram_pair.o" => [ + "crypto/bio/bss_dgram_pair.c" + ], "crypto/bio/libcrypto-lib-bss_fd.o" => [ "crypto/bio/bss_fd.c" ], @@ -21301,6 +24750,9 @@ our %unified_info = ( "crypto/buffer/libfips-lib-buffer.o" => [ "crypto/buffer/buffer.c" ], + "crypto/ca_internals_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/camellia/libcrypto-lib-camellia.o" => [ "crypto/camellia/camellia.c" ], @@ -21358,6 +24810,9 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_err.o" => [ "crypto/cmp/cmp_err.c" ], + "crypto/cmp/libcrypto-lib-cmp_genm.o" => [ + "crypto/cmp/cmp_genm.c" + ], "crypto/cmp/libcrypto-lib-cmp_hdr.o" => [ "crypto/cmp/cmp_hdr.c" ], @@ -22033,9 +25488,15 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_blocks.o" => [ "crypto/err/err_blocks.c" ], + "crypto/err/libcrypto-lib-err_mark.o" => [ + "crypto/err/err_mark.c" + ], "crypto/err/libcrypto-lib-err_prn.o" => [ "crypto/err/err_prn.c" ], + "crypto/err/libcrypto-lib-err_save.o" => [ + "crypto/err/err_save.c" + ], "crypto/ess/libcrypto-lib-ess_asn1.o" => [ "crypto/ess/ess_asn1.c" ], @@ -22282,9 +25743,15 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libcrypto-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libcrypto-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libcrypto-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/evp/libfips-lib-asymcipher.o" => [ "crypto/evp/asymcipher.c" ], @@ -22330,9 +25797,6 @@ our %unified_info = ( "crypto/evp/libfips-lib-keymgmt_meth.o" => [ "crypto/evp/keymgmt_meth.c" ], - "crypto/evp/libfips-lib-m_sigver.o" => [ - "crypto/evp/m_sigver.c" - ], "crypto/evp/libfips-lib-mac_lib.o" => [ "crypto/evp/mac_lib.c" ], @@ -22351,9 +25815,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libfips-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libfips-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libfips-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/ffc/libcrypto-lib-ffc_backend.o" => [ "crypto/ffc/ffc_backend.c" ], @@ -22396,12 +25866,30 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params_validate.o" => [ "crypto/ffc/ffc_params_validate.c" ], + "crypto/hashtable/libcrypto-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libcrypto-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], + "crypto/hashtable/libfips-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libfips-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], "crypto/hmac/libcrypto-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], "crypto/hmac/libfips-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], + "crypto/hpke/libcrypto-lib-hpke.o" => [ + "crypto/hpke/hpke.c" + ], + "crypto/hpke/libcrypto-lib-hpke_util.o" => [ + "crypto/hpke/hpke_util.c" + ], "crypto/http/libcrypto-lib-http_client.o" => [ "crypto/http/http_client.c" ], @@ -22444,6 +25932,9 @@ our %unified_info = ( "crypto/libcrypto-lib-bsearch.o" => [ "crypto/bsearch.c" ], + "crypto/libcrypto-lib-comp_methods.o" => [ + "crypto/comp_methods.c" + ], "crypto/libcrypto-lib-context.o" => [ "crypto/context.c" ], @@ -22471,9 +25962,15 @@ our %unified_info = ( "crypto/libcrypto-lib-cversion.o" => [ "crypto/cversion.c" ], + "crypto/libcrypto-lib-defaults.o" => [ + "crypto/defaults.c" + ], "crypto/libcrypto-lib-der_writer.o" => [ "crypto/der_writer.c" ], + "crypto/libcrypto-lib-deterministic_nonce.o" => [ + "crypto/deterministic_nonce.c" + ], "crypto/libcrypto-lib-ebcdic.o" => [ "crypto/ebcdic.c" ], @@ -22483,6 +25980,9 @@ our %unified_info = ( "crypto/libcrypto-lib-getenv.o" => [ "crypto/getenv.c" ], + "crypto/libcrypto-lib-indicator_core.o" => [ + "crypto/indicator_core.c" + ], "crypto/libcrypto-lib-info.o" => [ "crypto/info.c" ], @@ -22534,6 +26034,9 @@ our %unified_info = ( "crypto/libcrypto-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libcrypto-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libcrypto-lib-passphrase.o" => [ "crypto/passphrase.c" ], @@ -22555,12 +26058,21 @@ our %unified_info = ( "crypto/libcrypto-lib-punycode.o" => [ "crypto/punycode.c" ], + "crypto/libcrypto-lib-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/libcrypto-lib-self_test_core.o" => [ "crypto/self_test_core.c" ], + "crypto/libcrypto-lib-sleep.o" => [ + "crypto/sleep.c" + ], "crypto/libcrypto-lib-sparse_array.o" => [ "crypto/sparse_array.c" ], + "crypto/libcrypto-lib-ssl_err.o" => [ + "crypto/ssl_err.c" + ], "crypto/libcrypto-lib-threads_lib.o" => [ "crypto/threads_lib.c" ], @@ -22573,6 +26085,9 @@ our %unified_info = ( "crypto/libcrypto-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libcrypto-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libcrypto-lib-trace.o" => [ "crypto/trace.c" ], @@ -22639,6 +26154,9 @@ our %unified_info = ( "crypto/libfips-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libfips-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libfips-lib-provider_core.o" => [ "crypto/provider_core.c" ], @@ -22663,6 +26181,9 @@ our %unified_info = ( "crypto/libfips-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libfips-lib-time.o" => [ + "crypto/time.c" + ], "crypto/md4/libcrypto-lib-md4_dgst.o" => [ "crypto/md4/md4_dgst.c" ], @@ -22684,6 +26205,60 @@ our %unified_info = ( "crypto/mdc2/libcrypto-lib-mdc2dgst.o" => [ "crypto/mdc2/mdc2dgst.c" ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_kem/libcrypto-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], + "crypto/ml_kem/libfips-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], "crypto/modes/libcrypto-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22717,6 +26292,9 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libcrypto-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/modes/libfips-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22741,6 +26319,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libfips-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/objects/libcrypto-lib-o_names.o" => [ "crypto/objects/o_names.c" ], @@ -22786,6 +26367,9 @@ our %unified_info = ( "crypto/ocsp/libcrypto-lib-v3_ocsp.o" => [ "crypto/ocsp/v3_ocsp.c" ], + "crypto/packettest-bin-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/pem/libcrypto-lib-pem_all.o" => [ "crypto/pem/pem_all.c" ], @@ -22945,6 +26529,9 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_pool.o" => [ "crypto/rand/rand_pool.c" ], + "crypto/rand/libcrypto-lib-rand_uniform.o" => [ + "crypto/rand/rand_uniform.c" + ], "crypto/rand/libcrypto-lib-randfile.o" => [ "crypto/rand/randfile.c" ], @@ -23158,6 +26745,66 @@ our %unified_info = ( "crypto/siphash/libcrypto-lib-siphash.o" => [ "crypto/siphash/siphash.c" ], + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], + "crypto/slh_dsa/libfips-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libfips-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libfips-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libfips-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libfips-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], "crypto/sm2/libcrypto-lib-sm2_crypt.o" => [ "crypto/sm2/sm2_crypt.c" ], @@ -23212,6 +26859,42 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_strings.o" => [ "crypto/store/store_strings.c" ], + "crypto/thread/arch/libcrypto-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/arch/libfips-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libfips-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libfips-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/libcrypto-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libcrypto-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libcrypto-lib-internal.o" => [ + "crypto/thread/internal.c" + ], + "crypto/thread/libfips-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libfips-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libfips-lib-internal.o" => [ + "crypto/thread/internal.c" + ], "crypto/ts/libcrypto-lib-ts_asn1.o" => [ "crypto/ts/ts_asn1.c" ], @@ -23296,6 +26979,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_tree.o" => [ "crypto/x509/pcy_tree.c" ], + "crypto/x509/libcrypto-lib-t_acert.o" => [ + "crypto/x509/t_acert.c" + ], "crypto/x509/libcrypto-lib-t_crl.o" => [ "crypto/x509/t_crl.c" ], @@ -23305,6 +26991,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-t_x509.o" => [ "crypto/x509/t_x509.c" ], + "crypto/x509/libcrypto-lib-v3_aaa.o" => [ + "crypto/x509/v3_aaa.c" + ], + "crypto/x509/libcrypto-lib-v3_ac_tgt.o" => [ + "crypto/x509/v3_ac_tgt.c" + ], "crypto/x509/libcrypto-lib-v3_addr.o" => [ "crypto/x509/v3_addr.c" ], @@ -23320,6 +27012,21 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_asid.o" => [ "crypto/x509/v3_asid.c" ], + "crypto/x509/libcrypto-lib-v3_attrdesc.o" => [ + "crypto/x509/v3_attrdesc.c" + ], + "crypto/x509/libcrypto-lib-v3_attrmap.o" => [ + "crypto/x509/v3_attrmap.c" + ], + "crypto/x509/libcrypto-lib-v3_audit_id.o" => [ + "crypto/x509/v3_audit_id.c" + ], + "crypto/x509/libcrypto-lib-v3_authattid.o" => [ + "crypto/x509/v3_authattid.c" + ], + "crypto/x509/libcrypto-lib-v3_battcons.o" => [ + "crypto/x509/v3_battcons.c" + ], "crypto/x509/libcrypto-lib-v3_bcons.o" => [ "crypto/x509/v3_bcons.c" ], @@ -23344,15 +27051,24 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_genn.o" => [ "crypto/x509/v3_genn.c" ], + "crypto/x509/libcrypto-lib-v3_group_ac.o" => [ + "crypto/x509/v3_group_ac.c" + ], "crypto/x509/libcrypto-lib-v3_ia5.o" => [ "crypto/x509/v3_ia5.c" ], + "crypto/x509/libcrypto-lib-v3_ind_iss.o" => [ + "crypto/x509/v3_ind_iss.c" + ], "crypto/x509/libcrypto-lib-v3_info.o" => [ "crypto/x509/v3_info.c" ], "crypto/x509/libcrypto-lib-v3_int.o" => [ "crypto/x509/v3_int.c" ], + "crypto/x509/libcrypto-lib-v3_iobo.o" => [ + "crypto/x509/v3_iobo.c" + ], "crypto/x509/libcrypto-lib-v3_ist.o" => [ "crypto/x509/v3_ist.c" ], @@ -23362,6 +27078,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_ncons.o" => [ "crypto/x509/v3_ncons.c" ], + "crypto/x509/libcrypto-lib-v3_no_ass.o" => [ + "crypto/x509/v3_no_ass.c" + ], + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o" => [ + "crypto/x509/v3_no_rev_avail.c" + ], "crypto/x509/libcrypto-lib-v3_pci.o" => [ "crypto/x509/v3_pci.c" ], @@ -23383,18 +27105,36 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_purp.o" => [ "crypto/x509/v3_purp.c" ], + "crypto/x509/libcrypto-lib-v3_rolespec.o" => [ + "crypto/x509/v3_rolespec.c" + ], "crypto/x509/libcrypto-lib-v3_san.o" => [ "crypto/x509/v3_san.c" ], + "crypto/x509/libcrypto-lib-v3_sda.o" => [ + "crypto/x509/v3_sda.c" + ], + "crypto/x509/libcrypto-lib-v3_single_use.o" => [ + "crypto/x509/v3_single_use.c" + ], "crypto/x509/libcrypto-lib-v3_skid.o" => [ "crypto/x509/v3_skid.c" ], + "crypto/x509/libcrypto-lib-v3_soa_id.o" => [ + "crypto/x509/v3_soa_id.c" + ], "crypto/x509/libcrypto-lib-v3_sxnet.o" => [ "crypto/x509/v3_sxnet.c" ], + "crypto/x509/libcrypto-lib-v3_timespec.o" => [ + "crypto/x509/v3_timespec.c" + ], "crypto/x509/libcrypto-lib-v3_tlsf.o" => [ "crypto/x509/v3_tlsf.c" ], + "crypto/x509/libcrypto-lib-v3_usernotice.o" => [ + "crypto/x509/v3_usernotice.c" + ], "crypto/x509/libcrypto-lib-v3_utf8.o" => [ "crypto/x509/v3_utf8.c" ], @@ -23404,6 +27144,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3err.o" => [ "crypto/x509/v3err.c" ], + "crypto/x509/libcrypto-lib-x509_acert.o" => [ + "crypto/x509/x509_acert.c" + ], "crypto/x509/libcrypto-lib-x509_att.o" => [ "crypto/x509/x509_att.c" ], @@ -23455,6 +27198,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_vpm.o" => [ "crypto/x509/x509_vpm.c" ], + "crypto/x509/libcrypto-lib-x509aset.o" => [ + "crypto/x509/x509aset.c" + ], "crypto/x509/libcrypto-lib-x509cset.o" => [ "crypto/x509/x509cset.c" ], @@ -23482,6 +27228,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_exten.o" => [ "crypto/x509/x_exten.c" ], + "crypto/x509/libcrypto-lib-x_ietfatt.o" => [ + "crypto/x509/x_ietfatt.c" + ], "crypto/x509/libcrypto-lib-x_name.o" => [ "crypto/x509/x_name.c" ], @@ -23503,6 +27252,16 @@ our %unified_info = ( "engines/libcrypto-lib-e_padlock.o" => [ "engines/e_padlock.c" ], + "fuzz/acert-test" => [ + "fuzz/acert-test-bin-acert.o", + "fuzz/acert-test-bin-test-corpus.o" + ], + "fuzz/acert-test-bin-acert.o" => [ + "fuzz/acert.c" + ], + "fuzz/acert-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/asn1-test" => [ "fuzz/asn1-test-bin-asn1.o", "fuzz/asn1-test-bin-fuzz_rand.o", @@ -23615,6 +27374,190 @@ our %unified_info = ( "fuzz/ct-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/decoder-test" => [ + "fuzz/decoder-test-bin-decoder.o", + "fuzz/decoder-test-bin-fuzz_rand.o", + "fuzz/decoder-test-bin-test-corpus.o" + ], + "fuzz/decoder-test-bin-decoder.o" => [ + "fuzz/decoder.c" + ], + "fuzz/decoder-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/decoder-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsclient-test" => [ + "fuzz/dtlsclient-test-bin-dtlsclient.o", + "fuzz/dtlsclient-test-bin-fuzz_rand.o", + "fuzz/dtlsclient-test-bin-test-corpus.o" + ], + "fuzz/dtlsclient-test-bin-dtlsclient.o" => [ + "fuzz/dtlsclient.c" + ], + "fuzz/dtlsclient-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsclient-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsserver-test" => [ + "fuzz/dtlsserver-test-bin-dtlsserver.o", + "fuzz/dtlsserver-test-bin-fuzz_rand.o", + "fuzz/dtlsserver-test-bin-test-corpus.o" + ], + "fuzz/dtlsserver-test-bin-dtlsserver.o" => [ + "fuzz/dtlsserver.c" + ], + "fuzz/dtlsserver-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsserver-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/hashtable-test" => [ + "fuzz/hashtable-test-bin-fuzz_rand.o", + "fuzz/hashtable-test-bin-hashtable.o", + "fuzz/hashtable-test-bin-test-corpus.o" + ], + "fuzz/hashtable-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/hashtable-test-bin-hashtable.o" => [ + "fuzz/hashtable.c" + ], + "fuzz/hashtable-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-dsa-test" => [ + "fuzz/ml-dsa-test-bin-fuzz_rand.o", + "fuzz/ml-dsa-test-bin-ml-dsa.o", + "fuzz/ml-dsa-test-bin-test-corpus.o" + ], + "fuzz/ml-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-dsa-test-bin-ml-dsa.o" => [ + "fuzz/ml-dsa.c" + ], + "fuzz/ml-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-kem-test" => [ + "fuzz/ml-kem-test-bin-fuzz_rand.o", + "fuzz/ml-kem-test-bin-ml-kem.o", + "fuzz/ml-kem-test-bin-test-corpus.o" + ], + "fuzz/ml-kem-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-kem-test-bin-ml-kem.o" => [ + "fuzz/ml-kem.c" + ], + "fuzz/ml-kem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/pem-test" => [ + "fuzz/pem-test-bin-pem.o", + "fuzz/pem-test-bin-test-corpus.o" + ], + "fuzz/pem-test-bin-pem.o" => [ + "fuzz/pem.c" + ], + "fuzz/pem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/provider-test" => [ + "fuzz/provider-test-bin-provider.o", + "fuzz/provider-test-bin-test-corpus.o" + ], + "fuzz/provider-test-bin-provider.o" => [ + "fuzz/provider.c" + ], + "fuzz/provider-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/punycode-test" => [ + "fuzz/punycode-test-bin-punycode.o", + "fuzz/punycode-test-bin-test-corpus.o" + ], + "fuzz/punycode-test-bin-punycode.o" => [ + "fuzz/punycode.c" + ], + "fuzz/punycode-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-client-test" => [ + "fuzz/quic-client-test-bin-fuzz_rand.o", + "fuzz/quic-client-test-bin-quic-client.o", + "fuzz/quic-client-test-bin-test-corpus.o" + ], + "fuzz/quic-client-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-client-test-bin-quic-client.o" => [ + "fuzz/quic-client.c" + ], + "fuzz/quic-client-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-lcidm-test" => [ + "fuzz/quic-lcidm-test-bin-fuzz_rand.o", + "fuzz/quic-lcidm-test-bin-quic-lcidm.o", + "fuzz/quic-lcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-lcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-lcidm-test-bin-quic-lcidm.o" => [ + "fuzz/quic-lcidm.c" + ], + "fuzz/quic-lcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-rcidm-test" => [ + "fuzz/quic-rcidm-test-bin-fuzz_rand.o", + "fuzz/quic-rcidm-test-bin-quic-rcidm.o", + "fuzz/quic-rcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-rcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-rcidm-test-bin-quic-rcidm.o" => [ + "fuzz/quic-rcidm.c" + ], + "fuzz/quic-rcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-server-test" => [ + "fuzz/quic-server-test-bin-fuzz_rand.o", + "fuzz/quic-server-test-bin-quic-server.o", + "fuzz/quic-server-test-bin-test-corpus.o" + ], + "fuzz/quic-server-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-server-test-bin-quic-server.o" => [ + "fuzz/quic-server.c" + ], + "fuzz/quic-server-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-srtm-test" => [ + "fuzz/quic-srtm-test-bin-fuzz_rand.o", + "fuzz/quic-srtm-test-bin-quic-srtm.o", + "fuzz/quic-srtm-test-bin-test-corpus.o" + ], + "fuzz/quic-srtm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-srtm-test-bin-quic-srtm.o" => [ + "fuzz/quic-srtm.c" + ], + "fuzz/quic-srtm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/server-test" => [ "fuzz/server-test-bin-fuzz_rand.o", "fuzz/server-test-bin-server.o", @@ -23629,6 +27572,40 @@ our %unified_info = ( "fuzz/server-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/slh-dsa-test" => [ + "fuzz/slh-dsa-test-bin-fuzz_rand.o", + "fuzz/slh-dsa-test-bin-slh-dsa.o", + "fuzz/slh-dsa-test-bin-test-corpus.o" + ], + "fuzz/slh-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/slh-dsa-test-bin-slh-dsa.o" => [ + "fuzz/slh-dsa.c" + ], + "fuzz/slh-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/smime-test" => [ + "fuzz/smime-test-bin-smime.o", + "fuzz/smime-test-bin-test-corpus.o" + ], + "fuzz/smime-test-bin-smime.o" => [ + "fuzz/smime.c" + ], + "fuzz/smime-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test" => [ + "fuzz/v3name-test-bin-test-corpus.o", + "fuzz/v3name-test-bin-v3name.o" + ], + "fuzz/v3name-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test-bin-v3name.o" => [ + "fuzz/v3name.c" + ], "fuzz/x509-test" => [ "fuzz/x509-test-bin-fuzz_rand.o", "fuzz/x509-test-bin-test-corpus.o", @@ -23748,6 +27725,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -23808,6 +27786,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -23983,7 +27962,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", + "crypto/err/libcrypto-lib-err_mark.o", "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o", "crypto/ess/libcrypto-lib-ess_asn1.o", "crypto/ess/libcrypto-lib-ess_err.o", "crypto/ess/libcrypto-lib-ess_lib.o", @@ -24066,7 +28047,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/ffc/libcrypto-lib-ffc_backend.o", "crypto/ffc/libcrypto-lib-ffc_dh.o", "crypto/ffc/libcrypto-lib-ffc_key_generate.o", @@ -24074,7 +28057,11 @@ our %unified_info = ( "crypto/ffc/libcrypto-lib-ffc_params.o", "crypto/ffc/libcrypto-lib-ffc_params_generate.o", "crypto/ffc/libcrypto-lib-ffc_params_validate.o", + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", "crypto/hmac/libcrypto-lib-hmac.o", + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o", "crypto/http/libcrypto-lib-http_client.o", "crypto/http/libcrypto-lib-http_err.o", "crypto/http/libcrypto-lib-http_lib.o", @@ -24088,6 +28075,7 @@ our %unified_info = ( "crypto/lhash/libcrypto-lib-lhash.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -24097,10 +28085,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -24118,6 +28109,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -24125,12 +28117,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/md4/libcrypto-lib-md4_dgst.o", @@ -24140,6 +28136,15 @@ our %unified_info = ( "crypto/md5/libcrypto-lib-md5_sha1.o", "crypto/mdc2/libcrypto-lib-mdc2_one.o", "crypto/mdc2/libcrypto-lib-mdc2dgst.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_kem/libcrypto-lib-ml_kem.o", "crypto/modes/libcrypto-lib-cbc128.o", "crypto/modes/libcrypto-lib-ccm128.o", "crypto/modes/libcrypto-lib-cfb128.o", @@ -24151,6 +28156,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/objects/libcrypto-lib-o_names.o", "crypto/objects/libcrypto-lib-obj_dat.o", "crypto/objects/libcrypto-lib-obj_err.o", @@ -24214,6 +28220,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rc2/libcrypto-lib-rc2_cbc.o", "crypto/rc2/libcrypto-lib-rc2_ecb.o", @@ -24262,6 +28269,16 @@ our %unified_info = ( "crypto/sha/libcrypto-lib-sha3.o", "crypto/sha/libcrypto-lib-sha512.o", "crypto/siphash/libcrypto-lib-siphash.o", + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", "crypto/sm2/libcrypto-lib-sm2_crypt.o", "crypto/sm2/libcrypto-lib-sm2_err.o", "crypto/sm2/libcrypto-lib-sm2_key.o", @@ -24279,6 +28296,12 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_register.o", "crypto/store/libcrypto-lib-store_result.o", "crypto/store/libcrypto-lib-store_strings.o", + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", "crypto/ts/libcrypto-lib-ts_asn1.o", "crypto/ts/libcrypto-lib-ts_conf.o", "crypto/ts/libcrypto-lib-ts_err.o", @@ -24307,14 +28330,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -24323,12 +28354,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -24336,13 +28372,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -24360,6 +28403,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -24369,6 +28413,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -24389,14 +28434,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -24413,12 +28459,60 @@ our %unified_info = ( "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", "ssl/libssl-lib-tls_srp.o", - "ssl/record/libssl-lib-dtls1_bitmap.o", + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o", "ssl/record/libssl-lib-rec_layer_d1.o", "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o", "ssl/statem/libssl-lib-extensions.o", "ssl/statem/libssl-lib-extensions_clnt.o", "ssl/statem/libssl-lib-extensions_cust.o", @@ -24456,12 +28550,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/der/der_ecx_key.c" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/der/der_ml_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/der/der_ml_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/der/der_rsa_gen.c" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/der/der_rsa_key.c" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/der/der_slh_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/der/der_slh_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/der/der_wrap_gen.c" ], @@ -24528,6 +28634,9 @@ our %unified_info = ( "providers/common/libfips-lib-securitycheck_fips.o" => [ "providers/common/securitycheck_fips.c" ], + "providers/endecode_test-bin-legacyprov.o" => [ + "providers/legacyprov.c" + ], "providers/evp_extra_test-bin-legacyprov.o" => [ "providers/legacyprov.c" ], @@ -24542,6 +28651,9 @@ our %unified_info = ( "providers/fips/fips-dso-fips_entry.o" => [ "providers/fips/fips_entry.c" ], + "providers/fips/libfips-lib-fipsindicator.o" => [ + "providers/fips/fipsindicator.c" + ], "providers/fips/libfips-lib-fipsprov.o" => [ "providers/fips/fipsprov.c" ], @@ -24605,6 +28717,15 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o" => [ "providers/implementations/ciphers/cipher_aes_gcm_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o" => [ "providers/implementations/ciphers/cipher_aes_hw.c" ], @@ -24677,9 +28798,27 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o" => [ "providers/implementations/ciphers/cipher_sm4.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o" => [ "providers/implementations/ciphers/cipher_sm4_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o" => [ "providers/implementations/ciphers/cipher_tdes.c" ], @@ -24899,6 +29038,15 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" => [ "providers/implementations/encode_decode/endecoder_common.c" ], + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o" => [ + "providers/implementations/encode_decode/ml_common_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o" => [ + "providers/implementations/encode_decode/ml_dsa_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" => [ + "providers/implementations/encode_decode/ml_kem_codecs.c" + ], "providers/implementations/exchange/libdefault-lib-dh_exch.o" => [ "providers/implementations/exchange/dh_exch.c" ], @@ -24923,9 +29071,15 @@ our %unified_info = ( "providers/implementations/exchange/libfips-lib-kdf_exch.o" => [ "providers/implementations/exchange/kdf_exch.c" ], + "providers/implementations/kdfs/libdefault-lib-argon2.o" => [ + "providers/implementations/kdfs/argon2.c" + ], "providers/implementations/kdfs/libdefault-lib-hkdf.o" => [ "providers/implementations/kdfs/hkdf.c" ], + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o" => [ + "providers/implementations/kdfs/hmacdrbg_kdf.c" + ], "providers/implementations/kdfs/libdefault-lib-kbkdf.o" => [ "providers/implementations/kdfs/kbkdf.c" ], @@ -24983,12 +29137,39 @@ our %unified_info = ( "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" => [ "providers/implementations/kdfs/pbkdf1.c" ], + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" => [ + "providers/implementations/kdfs/pvkkdf.c" + ], + "providers/implementations/kem/libdefault-lib-ec_kem.o" => [ + "providers/implementations/kem/ec_kem.c" + ], + "providers/implementations/kem/libdefault-lib-ecx_kem.o" => [ + "providers/implementations/kem/ecx_kem.c" + ], + "providers/implementations/kem/libdefault-lib-kem_util.o" => [ + "providers/implementations/kem/kem_util.c" + ], + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libdefault-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libdefault-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libfips-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libfips-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libfips-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libtemplate-lib-template_kem.o" => [ + "providers/implementations/kem/template_kem.c" + ], "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25007,9 +29188,21 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25028,9 +29221,24 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" => [ + "providers/implementations/keymgmt/template_kmgmt.c" + ], "providers/implementations/macs/libdefault-lib-blake2b_mac.o" => [ "providers/implementations/macs/blake2b_mac.c" ], @@ -25067,9 +29275,6 @@ our %unified_info = ( "providers/implementations/macs/libfips-lib-kmac_prov.o" => [ "providers/implementations/macs/kmac_prov.c" ], - "providers/implementations/rands/libdefault-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libdefault-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25085,12 +29290,12 @@ our %unified_info = ( "providers/implementations/rands/libdefault-lib-seed_src.o" => [ "providers/implementations/rands/seed_src.c" ], + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o" => [ + "providers/implementations/rands/seed_src_jitter.c" + ], "providers/implementations/rands/libdefault-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], - "providers/implementations/rands/libfips-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libfips-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25103,6 +29308,9 @@ our %unified_info = ( "providers/implementations/rands/libfips-lib-drbg_hmac.o" => [ "providers/implementations/rands/drbg_hmac.c" ], + "providers/implementations/rands/libfips-lib-fips_crng_test.o" => [ + "providers/implementations/rands/fips_crng_test.c" + ], "providers/implementations/rands/libfips-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], @@ -25130,9 +29338,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/implementations/signature/sm2_sig.c" ], @@ -25148,15 +29362,36 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libfips-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], "providers/implementations/storemgmt/libdefault-lib-file_store.o" => [ "providers/implementations/storemgmt/file_store.c" ], "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o" => [ "providers/implementations/storemgmt/file_store_any2obj.c" ], + "providers/implementations/storemgmt/libdefault-lib-winstore_store.o" => [ + "providers/implementations/storemgmt/winstore_store.c" + ], "providers/legacy" => [ "providers/legacy-dso-legacy.res", "providers/legacy-dso-legacyprov.o", @@ -25178,8 +29413,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/libcommon-lib-provider_ctx.o", "providers/common/libcommon-lib-provider_err.o", @@ -25191,7 +29430,7 @@ our %unified_info = ( "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", "providers/implementations/digests/libcommon-lib-digestcommon.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/methods/libcommon-lib-tls_pad.o" ], "providers/libcrypto-lib-baseprov.o" => [ "providers/baseprov.c" @@ -25227,6 +29466,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -25251,7 +29493,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -25280,11 +29528,16 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o", "providers/implementations/exchange/libdefault-lib-dh_exch.o", "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", "providers/implementations/exchange/libdefault-lib-ecx_exch.o", "providers/implementations/exchange/libdefault-lib-kdf_exch.o", + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -25295,6 +29548,11 @@ our %unified_info = ( "providers/implementations/kdfs/libdefault-lib-sskdf.o", "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", "providers/implementations/kdfs/libdefault-lib-x942kdf.o", + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", @@ -25302,7 +29560,11 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libdefault-lib-blake2b_mac.o", "providers/implementations/macs/libdefault-lib-blake2s_mac.o", "providers/implementations/macs/libdefault-lib-cmac_prov.o", @@ -25311,12 +29573,12 @@ our %unified_info = ( "providers/implementations/macs/libdefault-lib-kmac_prov.o", "providers/implementations/macs/libdefault-lib-poly1305_prov.o", "providers/implementations/macs/libdefault-lib-siphash_prov.o", - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", @@ -25326,11 +29588,16 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", "providers/implementations/storemgmt/libdefault-lib-file_store.o", "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", - "ssl/libdefault-lib-s3_cbc.o" + "providers/implementations/storemgmt/libdefault-lib-winstore_store.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" ], "providers/libfips.a" => [ "crypto/aes/libfips-lib-aes_cbc.o", @@ -25432,14 +29699,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", + "crypto/evp/libfips-lib-s_lib.o", "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o", "crypto/ffc/libfips-lib-ffc_backend.o", "crypto/ffc/libfips-lib-ffc_dh.o", "crypto/ffc/libfips-lib-ffc_key_generate.o", @@ -25447,6 +29715,8 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params.o", "crypto/ffc/libfips-lib-ffc_params_generate.o", "crypto/ffc/libfips-lib-ffc_params_validate.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o", "crypto/hmac/libfips-lib-hmac.o", "crypto/lhash/libfips-lib-lhash.o", "crypto/libfips-lib-asn1_dsa.o", @@ -25469,6 +29739,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -25477,6 +29748,16 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o", + "crypto/ml_kem/libfips-lib-ml_kem.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -25485,6 +29766,7 @@ our %unified_info = ( "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o", "crypto/property/libfips-lib-defn_cache.o", "crypto/property/libfips-lib-property.o", "crypto/property/libfips-lib-property_parse.o", @@ -25513,7 +29795,23 @@ our %unified_info = ( "crypto/sha/libfips-lib-sha256.o", "crypto/sha/libfips-lib-sha3.o", "crypto/sha/libfips-lib-sha512.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o", "crypto/stack/libfips-lib-stack.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o", "providers/common/der/libfips-lib-der_rsa_sig.o", "providers/common/libfips-lib-bio_prov.o", "providers/common/libfips-lib-capabilities.o", @@ -25522,6 +29820,7 @@ our %unified_info = ( "providers/common/libfips-lib-provider_util.o", "providers/common/libfips-lib-securitycheck.o", "providers/common/libfips-lib-securitycheck_fips.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o", @@ -25559,6 +29858,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", "providers/implementations/kem/libfips-lib-rsa_kem.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", @@ -25566,24 +29867,32 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libfips-lib-cmac_prov.o", "providers/implementations/macs/libfips-lib-gmac_prov.o", "providers/implementations/macs/libfips-lib-hmac_prov.o", "providers/implementations/macs/libfips-lib-kmac_prov.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o", "providers/libcommon.a", - "ssl/libfips-lib-s3_cbc.o" + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "providers/liblegacy-lib-prov_running.o" => [ "providers/prov_running.c" @@ -25613,13 +29922,12 @@ our %unified_info = ( "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", "providers/implementations/digests/liblegacy-lib-wp_prov.o", "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o", "providers/liblegacy-lib-prov_running.o" ], - "ssl/libdefault-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" - ], - "ssl/libfips-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" + "providers/libtemplate.a" => [ + "providers/implementations/kem/libtemplate-lib-template_kem.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "ssl/libssl-lib-bio_ssl.o" => [ "ssl/bio_ssl.c" @@ -25639,6 +29947,9 @@ our %unified_info = ( "ssl/libssl-lib-pqueue.o" => [ "ssl/pqueue.c" ], + "ssl/libssl-lib-priority_queue.o" => [ + "ssl/priority_queue.c" + ], "ssl/libssl-lib-s3_enc.o" => [ "ssl/s3_enc.c" ], @@ -25654,15 +29965,15 @@ our %unified_info = ( "ssl/libssl-lib-ssl_cert.o" => [ "ssl/ssl_cert.c" ], + "ssl/libssl-lib-ssl_cert_comp.o" => [ + "ssl/ssl_cert_comp.c" + ], "ssl/libssl-lib-ssl_ciph.o" => [ "ssl/ssl_ciph.c" ], "ssl/libssl-lib-ssl_conf.o" => [ "ssl/ssl_conf.c" ], - "ssl/libssl-lib-ssl_err.o" => [ - "ssl/ssl_err.c" - ], "ssl/libssl-lib-ssl_err_legacy.o" => [ "ssl/ssl_err_legacy.c" ], @@ -25711,11 +30022,131 @@ our %unified_info = ( "ssl/libssl-lib-tls_srp.o" => [ "ssl/tls_srp.c" ], - "ssl/record/libcommon-lib-tls_pad.o" => [ - "ssl/record/tls_pad.c" + "ssl/quic/libssl-lib-cc_newreno.o" => [ + "ssl/quic/cc_newreno.c" + ], + "ssl/quic/libssl-lib-json_enc.o" => [ + "ssl/quic/json_enc.c" + ], + "ssl/quic/libssl-lib-qlog.o" => [ + "ssl/quic/qlog.c" + ], + "ssl/quic/libssl-lib-qlog_event_helpers.o" => [ + "ssl/quic/qlog_event_helpers.c" + ], + "ssl/quic/libssl-lib-quic_ackm.o" => [ + "ssl/quic/quic_ackm.c" + ], + "ssl/quic/libssl-lib-quic_cfq.o" => [ + "ssl/quic/quic_cfq.c" + ], + "ssl/quic/libssl-lib-quic_channel.o" => [ + "ssl/quic/quic_channel.c" + ], + "ssl/quic/libssl-lib-quic_demux.o" => [ + "ssl/quic/quic_demux.c" + ], + "ssl/quic/libssl-lib-quic_engine.o" => [ + "ssl/quic/quic_engine.c" + ], + "ssl/quic/libssl-lib-quic_fc.o" => [ + "ssl/quic/quic_fc.c" + ], + "ssl/quic/libssl-lib-quic_fifd.o" => [ + "ssl/quic/quic_fifd.c" + ], + "ssl/quic/libssl-lib-quic_impl.o" => [ + "ssl/quic/quic_impl.c" + ], + "ssl/quic/libssl-lib-quic_lcidm.o" => [ + "ssl/quic/quic_lcidm.c" + ], + "ssl/quic/libssl-lib-quic_method.o" => [ + "ssl/quic/quic_method.c" + ], + "ssl/quic/libssl-lib-quic_obj.o" => [ + "ssl/quic/quic_obj.c" + ], + "ssl/quic/libssl-lib-quic_port.o" => [ + "ssl/quic/quic_port.c" + ], + "ssl/quic/libssl-lib-quic_rcidm.o" => [ + "ssl/quic/quic_rcidm.c" + ], + "ssl/quic/libssl-lib-quic_reactor.o" => [ + "ssl/quic/quic_reactor.c" + ], + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o" => [ + "ssl/quic/quic_reactor_wait_ctx.c" + ], + "ssl/quic/libssl-lib-quic_record_rx.o" => [ + "ssl/quic/quic_record_rx.c" + ], + "ssl/quic/libssl-lib-quic_record_shared.o" => [ + "ssl/quic/quic_record_shared.c" + ], + "ssl/quic/libssl-lib-quic_record_tx.o" => [ + "ssl/quic/quic_record_tx.c" + ], + "ssl/quic/libssl-lib-quic_record_util.o" => [ + "ssl/quic/quic_record_util.c" ], - "ssl/record/libssl-lib-dtls1_bitmap.o" => [ - "ssl/record/dtls1_bitmap.c" + "ssl/quic/libssl-lib-quic_rstream.o" => [ + "ssl/quic/quic_rstream.c" + ], + "ssl/quic/libssl-lib-quic_rx_depack.o" => [ + "ssl/quic/quic_rx_depack.c" + ], + "ssl/quic/libssl-lib-quic_sf_list.o" => [ + "ssl/quic/quic_sf_list.c" + ], + "ssl/quic/libssl-lib-quic_srt_gen.o" => [ + "ssl/quic/quic_srt_gen.c" + ], + "ssl/quic/libssl-lib-quic_srtm.o" => [ + "ssl/quic/quic_srtm.c" + ], + "ssl/quic/libssl-lib-quic_sstream.o" => [ + "ssl/quic/quic_sstream.c" + ], + "ssl/quic/libssl-lib-quic_statm.o" => [ + "ssl/quic/quic_statm.c" + ], + "ssl/quic/libssl-lib-quic_stream_map.o" => [ + "ssl/quic/quic_stream_map.c" + ], + "ssl/quic/libssl-lib-quic_thread_assist.o" => [ + "ssl/quic/quic_thread_assist.c" + ], + "ssl/quic/libssl-lib-quic_tls.o" => [ + "ssl/quic/quic_tls.c" + ], + "ssl/quic/libssl-lib-quic_tls_api.o" => [ + "ssl/quic/quic_tls_api.c" + ], + "ssl/quic/libssl-lib-quic_trace.o" => [ + "ssl/quic/quic_trace.c" + ], + "ssl/quic/libssl-lib-quic_tserver.o" => [ + "ssl/quic/quic_tserver.c" + ], + "ssl/quic/libssl-lib-quic_txp.o" => [ + "ssl/quic/quic_txp.c" + ], + "ssl/quic/libssl-lib-quic_txpim.o" => [ + "ssl/quic/quic_txpim.c" + ], + "ssl/quic/libssl-lib-quic_types.o" => [ + "ssl/quic/quic_types.c" + ], + "ssl/quic/libssl-lib-quic_wire.o" => [ + "ssl/quic/quic_wire.c" + ], + "ssl/quic/libssl-lib-quic_wire_pkt.o" => [ + "ssl/quic/quic_wire_pkt.c" + ], + "ssl/quic/libssl-lib-uint_set.o" => [ + "ssl/quic/uint_set.c" ], "ssl/record/libssl-lib-rec_layer_d1.o" => [ "ssl/record/rec_layer_d1.c" @@ -25723,14 +30154,44 @@ our %unified_info = ( "ssl/record/libssl-lib-rec_layer_s3.o" => [ "ssl/record/rec_layer_s3.c" ], - "ssl/record/libssl-lib-ssl3_buffer.o" => [ - "ssl/record/ssl3_buffer.c" + "ssl/record/methods/libcommon-lib-tls_pad.o" => [ + "ssl/record/methods/tls_pad.c" + ], + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libfips-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libssl-lib-dtls_meth.o" => [ + "ssl/record/methods/dtls_meth.c" + ], + "ssl/record/methods/libssl-lib-ssl3_meth.o" => [ + "ssl/record/methods/ssl3_meth.c" + ], + "ssl/record/methods/libssl-lib-tls13_meth.o" => [ + "ssl/record/methods/tls13_meth.c" + ], + "ssl/record/methods/libssl-lib-tls1_meth.o" => [ + "ssl/record/methods/tls1_meth.c" ], - "ssl/record/libssl-lib-ssl3_record.o" => [ - "ssl/record/ssl3_record.c" + "ssl/record/methods/libssl-lib-tls_common.o" => [ + "ssl/record/methods/tls_common.c" ], - "ssl/record/libssl-lib-ssl3_record_tls13.o" => [ - "ssl/record/ssl3_record_tls13.c" + "ssl/record/methods/libssl-lib-tls_multib.o" => [ + "ssl/record/methods/tls_multib.c" + ], + "ssl/record/methods/libssl-lib-tlsany_meth.o" => [ + "ssl/record/methods/tlsany_meth.c" + ], + "ssl/rio/libssl-lib-poll_builder.o" => [ + "ssl/rio/poll_builder.c" + ], + "ssl/rio/libssl-lib-poll_immediate.o" => [ + "ssl/rio/poll_immediate.c" + ], + "ssl/rio/libssl-lib-rio_notifier.o" => [ + "ssl/rio/rio_notifier.c" ], "ssl/statem/libssl-lib-extensions.o" => [ "ssl/statem/extensions.c" @@ -25826,6 +30287,8 @@ our %unified_info = ( "test/asn1_string_table_test.c" ], "test/asn1_time_test" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1_time_test-bin-ctype.o", "test/asn1_time_test-bin-asn1_time_test.o" ], "test/asn1_time_test-bin-asn1_time_test.o" => [ @@ -25856,6 +30319,18 @@ our %unified_info = ( "test/bftest-bin-bftest.o" => [ "test/bftest.c" ], + "test/bio_addr_test" => [ + "test/bio_addr_test-bin-bio_addr_test.o" + ], + "test/bio_addr_test-bin-bio_addr_test.o" => [ + "test/bio_addr_test.c" + ], + "test/bio_base64_test" => [ + "test/bio_base64_test-bin-bio_base64_test.o" + ], + "test/bio_base64_test-bin-bio_base64_test.o" => [ + "test/bio_base64_test.c" + ], "test/bio_callback_test" => [ "test/bio_callback_test-bin-bio_callback_test.o" ], @@ -25868,6 +30343,12 @@ our %unified_info = ( "test/bio_core_test-bin-bio_core_test.o" => [ "test/bio_core_test.c" ], + "test/bio_dgram_test" => [ + "test/bio_dgram_test-bin-bio_dgram_test.o" + ], + "test/bio_dgram_test-bin-bio_dgram_test.o" => [ + "test/bio_dgram_test.c" + ], "test/bio_enc_test" => [ "test/bio_enc_test-bin-bio_enc_test.o" ], @@ -25880,6 +30361,12 @@ our %unified_info = ( "test/bio_memleak_test-bin-bio_memleak_test.o" => [ "test/bio_memleak_test.c" ], + "test/bio_meth_test" => [ + "test/bio_meth_test-bin-bio_meth_test.o" + ], + "test/bio_meth_test-bin-bio_meth_test.o" => [ + "test/bio_meth_test.c" + ], "test/bio_prefix_text" => [ "test/bio_prefix_text-bin-bio_prefix_text.o" ], @@ -25898,6 +30385,12 @@ our %unified_info = ( "test/bio_readbuffer_test-bin-bio_readbuffer_test.o" => [ "test/bio_readbuffer_test.c" ], + "test/bio_tfo_test" => [ + "test/bio_tfo_test-bin-bio_tfo_test.o" + ], + "test/bio_tfo_test-bin-bio_tfo_test.o" => [ + "test/bio_tfo_test.c" + ], "test/bioprinttest" => [ "test/bioprinttest-bin-bioprinttest.o" ], @@ -25916,6 +30409,12 @@ our %unified_info = ( "test/bntest-bin-bntest.o" => [ "test/bntest.c" ], + "test/build_wincrypt_test" => [ + "test/build_wincrypt_test-bin-build_wincrypt_test.o" + ], + "test/build_wincrypt_test-bin-build_wincrypt_test.o" => [ + "test/build_wincrypt_test.c" + ], "test/buildtest_c_aes" => [ "test/buildtest_c_aes-bin-buildtest_aes.o" ], @@ -25946,6 +30445,12 @@ our %unified_info = ( "test/buildtest_c_buffer-bin-buildtest_buffer.o" => [ "test/buildtest_buffer.c" ], + "test/buildtest_c_byteorder" => [ + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" + ], + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" => [ + "test/buildtest_byteorder.c" + ], "test/buildtest_c_camellia" => [ "test/buildtest_c_camellia-bin-buildtest_camellia.o" ], @@ -25994,12 +30499,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch-bin-buildtest_core_dispatch.o" => [ "test/buildtest_core_dispatch.c" ], - "test/buildtest_c_core_names" => [ - "test/buildtest_c_core_names-bin-buildtest_core_names.o" - ], - "test/buildtest_c_core_names-bin-buildtest_core_names.o" => [ - "test/buildtest_core_names.c" - ], "test/buildtest_c_core_object" => [ "test/buildtest_c_core_object-bin-buildtest_core_object.o" ], @@ -26048,6 +30547,12 @@ our %unified_info = ( "test/buildtest_c_e_os2-bin-buildtest_e_os2.o" => [ "test/buildtest_e_os2.c" ], + "test/buildtest_c_e_ostime" => [ + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" + ], + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" => [ + "test/buildtest_e_ostime.c" + ], "test/buildtest_c_ebcdic" => [ "test/buildtest_c_ebcdic-bin-buildtest_ebcdic.o" ], @@ -26102,6 +30607,12 @@ our %unified_info = ( "test/buildtest_c_hmac-bin-buildtest_hmac.o" => [ "test/buildtest_hmac.c" ], + "test/buildtest_c_hpke" => [ + "test/buildtest_c_hpke-bin-buildtest_hpke.o" + ], + "test/buildtest_c_hpke-bin-buildtest_hpke.o" => [ + "test/buildtest_hpke.c" + ], "test/buildtest_c_http" => [ "test/buildtest_c_http-bin-buildtest_http.o" ], @@ -26114,6 +30625,12 @@ our %unified_info = ( "test/buildtest_c_idea-bin-buildtest_idea.o" => [ "test/buildtest_idea.c" ], + "test/buildtest_c_indicator" => [ + "test/buildtest_c_indicator-bin-buildtest_indicator.o" + ], + "test/buildtest_c_indicator-bin-buildtest_indicator.o" => [ + "test/buildtest_indicator.c" + ], "test/buildtest_c_kdf" => [ "test/buildtest_c_kdf-bin-buildtest_kdf.o" ], @@ -26144,6 +30661,12 @@ our %unified_info = ( "test/buildtest_c_mdc2-bin-buildtest_mdc2.o" => [ "test/buildtest_mdc2.c" ], + "test/buildtest_c_ml_kem" => [ + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" + ], + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" => [ + "test/buildtest_ml_kem.c" + ], "test/buildtest_c_modes" => [ "test/buildtest_c_modes-bin-buildtest_modes.o" ], @@ -26204,6 +30727,12 @@ our %unified_info = ( "test/buildtest_c_provider-bin-buildtest_provider.o" => [ "test/buildtest_provider.c" ], + "test/buildtest_c_quic" => [ + "test/buildtest_c_quic-bin-buildtest_quic.o" + ], + "test/buildtest_c_quic-bin-buildtest_quic.o" => [ + "test/buildtest_quic.c" + ], "test/buildtest_c_rand" => [ "test/buildtest_c_rand-bin-buildtest_rand.o" ], @@ -26288,6 +30817,12 @@ our %unified_info = ( "test/buildtest_c_symhacks-bin-buildtest_symhacks.o" => [ "test/buildtest_symhacks.c" ], + "test/buildtest_c_thread" => [ + "test/buildtest_c_thread-bin-buildtest_thread.o" + ], + "test/buildtest_c_thread-bin-buildtest_thread.o" => [ + "test/buildtest_thread.c" + ], "test/buildtest_c_tls1" => [ "test/buildtest_c_tls1-bin-buildtest_tls1.o" ], @@ -26318,6 +30853,29 @@ our %unified_info = ( "test/buildtest_c_whrlpool-bin-buildtest_whrlpool.o" => [ "test/buildtest_whrlpool.c" ], + "test/byteorder_test" => [ + "test/byteorder_test-bin-byteorder_test.o" + ], + "test/byteorder_test-bin-byteorder_test.o" => [ + "test/byteorder_test.c" + ], + "test/ca_internals_test" => [ + "apps/ca_internals_test-bin-ca.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", + "crypto/ca_internals_test-bin-ctype.o", + "test/ca_internals_test-bin-ca_internals_test.o" + ], + "test/ca_internals_test-bin-ca_internals_test.o" => [ + "test/ca_internals_test.c" + ], "test/casttest" => [ "test/casttest-bin-casttest.o" ], @@ -26496,6 +31054,12 @@ our %unified_info = ( "test/danetest-bin-danetest.o" => [ "test/danetest.c" ], + "test/decoder_propq_test" => [ + "test/decoder_propq_test-bin-decoder_propq_test.o" + ], + "test/decoder_propq_test-bin-decoder_propq_test.o" => [ + "test/decoder_propq_test.c" + ], "test/defltfips_test" => [ "test/defltfips_test-bin-defltfips_test.o" ], @@ -26577,6 +31141,7 @@ our %unified_info = ( "test/ectest.c" ], "test/endecode_test" => [ + "providers/endecode_test-bin-legacyprov.o", "test/endecode_test-bin-endecode_test.o", "test/helpers/endecode_test-bin-predefined_dhparams.o" ], @@ -26609,17 +31174,29 @@ our %unified_info = ( ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", - "test/evp_extra_test-bin-evp_extra_test.o" + "test/evp_extra_test-bin-evp_extra_test.o", + "test/evp_extra_test-bin-fake_pipelineprov.o", + "test/evp_extra_test-bin-fake_rsaprov.o" ], "test/evp_extra_test-bin-evp_extra_test.o" => [ "test/evp_extra_test.c" ], + "test/evp_extra_test-bin-fake_pipelineprov.o" => [ + "test/fake_pipelineprov.c" + ], + "test/evp_extra_test-bin-fake_rsaprov.o" => [ + "test/fake_rsaprov.c" + ], "test/evp_extra_test2" => [ - "test/evp_extra_test2-bin-evp_extra_test2.o" + "test/evp_extra_test2-bin-evp_extra_test2.o", + "test/evp_extra_test2-bin-tls-provider.o" ], "test/evp_extra_test2-bin-evp_extra_test2.o" => [ "test/evp_extra_test2.c" ], + "test/evp_extra_test2-bin-tls-provider.o" => [ + "test/tls-provider.c" + ], "test/evp_fetch_prov_test" => [ "test/evp_fetch_prov_test-bin-evp_fetch_prov_test.o" ], @@ -26644,6 +31221,12 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name-bin-evp_pkey_ctx_new_from_name.o" => [ "test/evp_pkey_ctx_new_from_name.c" ], + "test/evp_pkey_dhkem_test" => [ + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" + ], + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" => [ + "test/evp_pkey_dhkem_test.c" + ], "test/evp_pkey_dparams_test" => [ "test/evp_pkey_dparams_test-bin-evp_pkey_dparams_test.o" ], @@ -26656,12 +31239,28 @@ our %unified_info = ( "test/evp_pkey_provided_test-bin-evp_pkey_provided_test.o" => [ "test/evp_pkey_provided_test.c" ], + "test/evp_skey_test" => [ + "test/evp_skey_test-bin-evp_skey_test.o", + "test/evp_skey_test-bin-fake_cipherprov.o" + ], + "test/evp_skey_test-bin-evp_skey_test.o" => [ + "test/evp_skey_test.c" + ], + "test/evp_skey_test-bin-fake_cipherprov.o" => [ + "test/fake_cipherprov.c" + ], "test/evp_test" => [ "test/evp_test-bin-evp_test.o" ], "test/evp_test-bin-evp_test.o" => [ "test/evp_test.c" ], + "test/evp_xof_test" => [ + "test/evp_xof_test-bin-evp_xof_test.o" + ], + "test/evp_xof_test-bin-evp_xof_test.o" => [ + "test/evp_xof_test.c" + ], "test/exdatatest" => [ "test/exdatatest-bin-exdatatest.o" ], @@ -26747,15 +31346,108 @@ our %unified_info = ( "test/helpers/fatalerrtest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/json_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/json_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/json_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + "test/helpers/pkcs12.c" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ "test/helpers/pkcs12.c" ], + "test/helpers/quic_multistream_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_multistream_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_multistream_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_newcid_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_newcid_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_newcid_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_radix_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_radix_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_radix_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_srt_gen_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicapitest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicapitest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicapitest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicfaultstest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicfaultstest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicfaultstest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/ssl_old_test-bin-predefined_dhparams.o" => [ "test/helpers/predefined_dhparams.c" ], @@ -26783,6 +31475,9 @@ our %unified_info = ( "test/helpers/tls13ccstest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/hexstr_test" => [ "test/hexstr_test-bin-hexstr_test.o" ], @@ -26795,6 +31490,12 @@ our %unified_info = ( "test/hmactest-bin-hmactest.o" => [ "test/hmactest.c" ], + "test/hpke_test" => [ + "test/hpke_test-bin-hpke_test.o" + ], + "test/hpke_test-bin-hpke_test.o" => [ + "test/hpke_test.c" + ], "test/http_test" => [ "test/http_test-bin-http_test.o" ], @@ -26813,6 +31514,16 @@ our %unified_info = ( "test/igetest-bin-igetest.o" => [ "test/igetest.c" ], + "test/json_test" => [ + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/json_test-bin-json_test.o" + ], + "test/json_test-bin-json_test.o" => [ + "test/json_test.c" + ], "test/keymgmt_internal_test" => [ "test/keymgmt_internal_test-bin-keymgmt_internal_test.o" ], @@ -26834,6 +31545,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -26846,6 +31558,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-tests.o", "test/testutil/libtestutil-lib-testutil_init.o" ], + "test/list_test" => [ + "test/list_test-bin-list_test.o" + ], + "test/list_test-bin-list_test.o" => [ + "test/list_test.c" + ], "test/localetest" => [ "test/localetest-bin-localetest.o" ], @@ -26864,12 +31582,36 @@ our %unified_info = ( "test/mdc2test-bin-mdc2test.o" => [ "test/mdc2test.c" ], + "test/membio_test" => [ + "test/membio_test-bin-membio_test.o" + ], + "test/membio_test-bin-membio_test.o" => [ + "test/membio_test.c" + ], "test/memleaktest" => [ "test/memleaktest-bin-memleaktest.o" ], "test/memleaktest-bin-memleaktest.o" => [ "test/memleaktest.c" ], + "test/ml_dsa_test" => [ + "test/ml_dsa_test-bin-ml_dsa_test.o" + ], + "test/ml_dsa_test-bin-ml_dsa_test.o" => [ + "test/ml_dsa_test.c" + ], + "test/ml_kem_evp_extra_test" => [ + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" + ], + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" => [ + "test/ml_kem_evp_extra_test.c" + ], + "test/ml_kem_internal_test" => [ + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" + ], + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" => [ + "test/ml_kem_internal_test.c" + ], "test/modes_internal_test" => [ "test/modes_internal_test-bin-modes_internal_test.o" ], @@ -26915,11 +31657,18 @@ our %unified_info = ( "test/p_test.c" ], "test/packettest" => [ + "crypto/packettest-bin-quic_vlint.o", "test/packettest-bin-packettest.o" ], "test/packettest-bin-packettest.o" => [ "test/packettest.c" ], + "test/pairwise_fail_test" => [ + "test/pairwise_fail_test-bin-pairwise_fail_test.o" + ], + "test/pairwise_fail_test-bin-pairwise_fail_test.o" => [ + "test/pairwise_fail_test.c" + ], "test/param_build_test" => [ "test/param_build_test-bin-param_build_test.o" ], @@ -26968,6 +31717,13 @@ our %unified_info = ( "test/pemtest-bin-pemtest.o" => [ "test/pemtest.c" ], + "test/pkcs12_api_test" => [ + "test/helpers/pkcs12_api_test-bin-pkcs12.o", + "test/pkcs12_api_test-bin-pkcs12_api_test.o" + ], + "test/pkcs12_api_test-bin-pkcs12_api_test.o" => [ + "test/pkcs12_api_test.c" + ], "test/pkcs12_format_test" => [ "test/helpers/pkcs12_format_test-bin-pkcs12.o", "test/pkcs12_format_test-bin-pkcs12_format_test.o" @@ -26999,6 +31755,12 @@ our %unified_info = ( "test/poly1305_internal_test-bin-poly1305_internal_test.o" => [ "test/poly1305_internal_test.c" ], + "test/priority_queue_test" => [ + "test/priority_queue_test-bin-priority_queue_test.o" + ], + "test/priority_queue_test-bin-priority_queue_test.o" => [ + "test/priority_queue_test.c" + ], "test/property_test" => [ "test/property_test-bin-property_test.o" ], @@ -27017,6 +31779,12 @@ our %unified_info = ( "test/provfetchtest-bin-provfetchtest.o" => [ "test/provfetchtest.c" ], + "test/provider_default_search_path_test" => [ + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" + ], + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" => [ + "test/provider_default_search_path_test.c" + ], "test/provider_fallback_test" => [ "test/provider_fallback_test-bin-provider_fallback_test.o" ], @@ -27065,6 +31833,174 @@ our %unified_info = ( "test/punycode_test-bin-punycode_test.o" => [ "test/punycode_test.c" ], + "test/quic_ackm_test" => [ + "test/quic_ackm_test-bin-cc_dummy.o", + "test/quic_ackm_test-bin-quic_ackm_test.o" + ], + "test/quic_ackm_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_ackm_test-bin-quic_ackm_test.o" => [ + "test/quic_ackm_test.c" + ], + "test/quic_cc_test" => [ + "test/quic_cc_test-bin-quic_cc_test.o" + ], + "test/quic_cc_test-bin-quic_cc_test.o" => [ + "test/quic_cc_test.c" + ], + "test/quic_cfq_test" => [ + "test/quic_cfq_test-bin-quic_cfq_test.o" + ], + "test/quic_cfq_test-bin-quic_cfq_test.o" => [ + "test/quic_cfq_test.c" + ], + "test/quic_client_test" => [ + "test/quic_client_test-bin-quic_client_test.o" + ], + "test/quic_client_test-bin-quic_client_test.o" => [ + "test/quic_client_test.c" + ], + "test/quic_fc_test" => [ + "test/quic_fc_test-bin-quic_fc_test.o" + ], + "test/quic_fc_test-bin-quic_fc_test.o" => [ + "test/quic_fc_test.c" + ], + "test/quic_fifd_test" => [ + "test/quic_fifd_test-bin-cc_dummy.o", + "test/quic_fifd_test-bin-quic_fifd_test.o" + ], + "test/quic_fifd_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_fifd_test-bin-quic_fifd_test.o" => [ + "test/quic_fifd_test.c" + ], + "test/quic_lcidm_test" => [ + "test/quic_lcidm_test-bin-quic_lcidm_test.o" + ], + "test/quic_lcidm_test-bin-quic_lcidm_test.o" => [ + "test/quic_lcidm_test.c" + ], + "test/quic_multistream_test" => [ + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/quic_multistream_test-bin-quic_multistream_test.o" + ], + "test/quic_multistream_test-bin-quic_multistream_test.o" => [ + "test/quic_multistream_test.c" + ], + "test/quic_newcid_test" => [ + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/quic_newcid_test-bin-quic_newcid_test.o" + ], + "test/quic_newcid_test-bin-quic_newcid_test.o" => [ + "test/quic_newcid_test.c" + ], + "test/quic_qlog_test" => [ + "test/quic_qlog_test-bin-quic_qlog_test.o" + ], + "test/quic_qlog_test-bin-quic_qlog_test.o" => [ + "test/quic_qlog_test.c" + ], + "test/quic_radix_test" => [ + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "test/quic_rcidm_test" => [ + "test/quic_rcidm_test-bin-quic_rcidm_test.o" + ], + "test/quic_rcidm_test-bin-quic_rcidm_test.o" => [ + "test/quic_rcidm_test.c" + ], + "test/quic_record_test" => [ + "test/quic_record_test-bin-quic_record_test.o" + ], + "test/quic_record_test-bin-quic_record_test.o" => [ + "test/quic_record_test.c" + ], + "test/quic_srt_gen_test" => [ + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" + ], + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" => [ + "test/quic_srt_gen_test.c" + ], + "test/quic_srtm_test" => [ + "test/quic_srtm_test-bin-quic_srtm_test.o" + ], + "test/quic_srtm_test-bin-quic_srtm_test.o" => [ + "test/quic_srtm_test.c" + ], + "test/quic_stream_test" => [ + "test/quic_stream_test-bin-quic_stream_test.o" + ], + "test/quic_stream_test-bin-quic_stream_test.o" => [ + "test/quic_stream_test.c" + ], + "test/quic_tserver_test" => [ + "test/quic_tserver_test-bin-quic_tserver_test.o" + ], + "test/quic_tserver_test-bin-quic_tserver_test.o" => [ + "test/quic_tserver_test.c" + ], + "test/quic_txp_test" => [ + "test/quic_txp_test-bin-cc_dummy.o", + "test/quic_txp_test-bin-quic_txp_test.o" + ], + "test/quic_txp_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_txp_test-bin-quic_txp_test.o" => [ + "test/quic_txp_test.c" + ], + "test/quic_txpim_test" => [ + "test/quic_txpim_test-bin-quic_txpim_test.o" + ], + "test/quic_txpim_test-bin-quic_txpim_test.o" => [ + "test/quic_txpim_test.c" + ], + "test/quic_wire_test" => [ + "test/quic_wire_test-bin-quic_wire_test.o" + ], + "test/quic_wire_test-bin-quic_wire_test.o" => [ + "test/quic_wire_test.c" + ], + "test/quicapitest" => [ + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/quicapitest-bin-quicapitest.o" + ], + "test/quicapitest-bin-quicapitest.o" => [ + "test/quicapitest.c" + ], + "test/quicfaultstest" => [ + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", + "test/quicfaultstest-bin-quicfaultstest.o" + ], + "test/quicfaultstest-bin-quicfaultstest.o" => [ + "test/quicfaultstest.c" + ], + "test/radix/quic_radix_test-bin-quic_radix.o" => [ + "test/radix/quic_radix.c" + ], "test/rand_status_test" => [ "test/rand_status_test-bin-rand_status_test.o" ], @@ -27095,11 +32031,11 @@ our %unified_info = ( "test/rc5test-bin-rc5test.o" => [ "test/rc5test.c" ], - "test/rdrand_sanitytest" => [ - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" + "test/rdcpu_sanitytest" => [ + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" ], - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" => [ - "test/rdrand_sanitytest.c" + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" => [ + "test/rdcpu_sanitytest.c" ], "test/recordlentest" => [ "test/helpers/recordlentest-bin-ssltestlib.o", @@ -27108,6 +32044,13 @@ our %unified_info = ( "test/recordlentest-bin-recordlentest.o" => [ "test/recordlentest.c" ], + "test/rpktest" => [ + "test/helpers/rpktest-bin-ssltestlib.o", + "test/rpktest-bin-rpktest.o" + ], + "test/rpktest-bin-rpktest.o" => [ + "test/rpktest.c" + ], "test/rsa_complex" => [ "test/rsa_complex-bin-rsa_complex.o" ], @@ -27132,6 +32075,18 @@ our %unified_info = ( "test/rsa_test-bin-rsa_test.o" => [ "test/rsa_test.c" ], + "test/rsa_x931_test" => [ + "test/rsa_x931_test-bin-rsa_x931_test.o" + ], + "test/rsa_x931_test-bin-rsa_x931_test.o" => [ + "test/rsa_x931_test.c" + ], + "test/safe_math_test" => [ + "test/safe_math_test-bin-safe_math_test.o" + ], + "test/safe_math_test-bin-safe_math_test.o" => [ + "test/safe_math_test.c" + ], "test/sanitytest" => [ "test/sanitytest-bin-sanitytest.o" ], @@ -27163,6 +32118,12 @@ our %unified_info = ( "test/siphash_internal_test-bin-siphash_internal_test.o" => [ "test/siphash_internal_test.c" ], + "test/slh_dsa_test" => [ + "test/slh_dsa_test-bin-slh_dsa_test.o" + ], + "test/slh_dsa_test-bin-slh_dsa_test.o" => [ + "test/slh_dsa_test.c" + ], "test/sm2_internal_test" => [ "test/sm2_internal_test-bin-sm2_internal_test.o" ], @@ -27205,6 +32166,13 @@ our %unified_info = ( "test/ssl_ctx_test-bin-ssl_ctx_test.o" => [ "test/ssl_ctx_test.c" ], + "test/ssl_handshake_rtt_test" => [ + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" + ], + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" => [ + "test/ssl_handshake_rtt_test.c" + ], "test/ssl_old_test" => [ "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/ssl_old_test-bin-ssl_old_test.o" @@ -27263,6 +32231,12 @@ our %unified_info = ( "test/stack_test-bin-stack_test.o" => [ "test/stack_test.c" ], + "test/strtoultest" => [ + "test/strtoultest-bin-strtoultest.o" + ], + "test/strtoultest-bin-strtoultest.o" => [ + "test/strtoultest.c" + ], "test/sysdefaulttest" => [ "test/sysdefaulttest-bin-sysdefaulttest.o" ], @@ -27293,6 +32267,9 @@ our %unified_info = ( "test/testutil/libtestutil-lib-format_output.o" => [ "test/testutil/format_output.c" ], + "test/testutil/libtestutil-lib-helper.o" => [ + "test/testutil/helper.c" + ], "test/testutil/libtestutil-lib-load.o" => [ "test/testutil/load.c" ], @@ -27326,6 +32303,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-testutil_init.o" => [ "test/testutil/testutil_init.c" ], + "test/threadpool_test" => [ + "test/threadpool_test-bin-threadpool_test.o" + ], + "test/threadpool_test-bin-threadpool_test.o" => [ + "test/threadpool_test.c" + ], "test/threadstest" => [ "test/threadstest-bin-threadstest.o" ], @@ -27344,6 +32327,12 @@ our %unified_info = ( "test/time_offset_test-bin-time_offset_test.o" => [ "test/time_offset_test.c" ], + "test/time_test" => [ + "test/time_test-bin-time_test.o" + ], + "test/time_test-bin-time_test.o" => [ + "test/time_test.c" + ], "test/tls13ccstest" => [ "test/helpers/tls13ccstest-bin-ssltestlib.o", "test/tls13ccstest-bin-tls13ccstest.o" @@ -27357,6 +32346,13 @@ our %unified_info = ( "test/tls13encryptiontest-bin-tls13encryptiontest.o" => [ "test/tls13encryptiontest.c" ], + "test/tls13groupselection_test" => [ + "test/helpers/tls13groupselection_test-bin-ssltestlib.o", + "test/tls13groupselection_test-bin-tls13groupselection_test.o" + ], + "test/tls13groupselection_test-bin-tls13groupselection_test.o" => [ + "test/tls13groupselection_test.c" + ], "test/trace_api_test" => [ "test/trace_api_test-bin-trace_api_test.o" ], @@ -27412,6 +32408,12 @@ our %unified_info = ( "test/wpackettest-bin-wpackettest.o" => [ "test/wpackettest.c" ], + "test/x509_acert_test" => [ + "test/x509_acert_test-bin-x509_acert_test.o" + ], + "test/x509_acert_test-bin-x509_acert_test.o" => [ + "test/x509_acert_test.c" + ], "test/x509_check_cert_pkey_test" => [ "test/x509_check_cert_pkey_test-bin-x509_check_cert_pkey_test.o" ], @@ -27430,6 +32432,24 @@ our %unified_info = ( "test/x509_internal_test-bin-x509_internal_test.o" => [ "test/x509_internal_test.c" ], + "test/x509_load_cert_file_test" => [ + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" + ], + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" => [ + "test/x509_load_cert_file_test.c" + ], + "test/x509_req_test" => [ + "test/x509_req_test-bin-x509_req_test.o" + ], + "test/x509_req_test-bin-x509_req_test.o" => [ + "test/x509_req_test.c" + ], + "test/x509_test" => [ + "test/x509_test-bin-x509_test.o" + ], + "test/x509_test-bin-x509_test.o" => [ + "test/x509_test.c" + ], "test/x509_time_test" => [ "test/x509_time_test-bin-x509_time_test.o" ], @@ -27490,6 +32510,7 @@ my @makevars = ( "LDLIBS", "MT", "MTFLAGS", + "OBJCOPY", "PERL", "RANLIB", "RC", @@ -27506,6 +32527,12 @@ my %disabled_info = ( "asm" => { "macro" => "OPENSSL_NO_ASM" }, + "brotli" => { + "macro" => "OPENSSL_NO_BROTLI" + }, + "brotli-dynamic" => { + "macro" => "OPENSSL_NO_BROTLI_DYNAMIC" + }, "comp" => { "macro" => "OPENSSL_NO_COMP", "skipped" => [ @@ -27518,6 +32545,9 @@ my %disabled_info = ( "crypto-mdebug-backtrace" => { "macro" => "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE" }, + "demos" => { + "macro" => "OPENSSL_NO_DEMOS" + }, "devcryptoeng" => { "macro" => "OPENSSL_NO_DEVCRYPTOENG" }, @@ -27530,12 +32560,24 @@ my %disabled_info = ( "external-tests" => { "macro" => "OPENSSL_NO_EXTERNAL_TESTS" }, + "fips-jitter" => { + "macro" => "OPENSSL_NO_FIPS_JITTER" + }, "fuzz-afl" => { "macro" => "OPENSSL_NO_FUZZ_AFL" }, "fuzz-libfuzzer" => { "macro" => "OPENSSL_NO_FUZZ_LIBFUZZER" }, + "h3demo" => { + "macro" => "OPENSSL_NO_H3DEMO" + }, + "hqinterop" => { + "macro" => "OPENSSL_NO_HQINTEROP" + }, + "jitter" => { + "macro" => "OPENSSL_NO_JITTER" + }, "ktls" => { "macro" => "OPENSSL_NO_KTLS" }, @@ -27551,6 +32593,9 @@ my %disabled_info = ( "msan" => { "macro" => "OPENSSL_NO_MSAN" }, + "pie" => { + "macro" => "OPENSSL_NO_PIE" + }, "rc5" => { "macro" => "OPENSSL_NO_RC5", "skipped" => [ @@ -27566,6 +32611,12 @@ my %disabled_info = ( "ssl3-method" => { "macro" => "OPENSSL_NO_SSL3_METHOD" }, + "sslkeylog" => { + "macro" => "OPENSSL_NO_SSLKEYLOG" + }, + "tfo" => { + "macro" => "OPENSSL_NO_TFO" + }, "trace" => { "macro" => "OPENSSL_NO_TRACE" }, @@ -27580,6 +32631,18 @@ my %disabled_info = ( }, "weak-ssl-ciphers" => { "macro" => "OPENSSL_NO_WEAK_SSL_CIPHERS" + }, + "zlib" => { + "macro" => "OPENSSL_NO_ZLIB" + }, + "zlib-dynamic" => { + "macro" => "OPENSSL_NO_ZLIB_DYNAMIC" + }, + "zstd" => { + "macro" => "OPENSSL_NO_ZSTD" + }, + "zstd-dynamic" => { + "macro" => "OPENSSL_NO_ZSTD_DYNAMIC" } ); my @user_crossable = qw( AR AS CC CXX CPP LD MT RANLIB RC ); @@ -27593,15 +32656,15 @@ unless (caller) { use File::Copy; use Pod::Usage; - use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; - use OpenSSL::fallback '/home/runner/work/node/node/deps/openssl/openssl/external/perl/MODULES.txt'; + use lib '/node/deps/openssl/openssl/util/perl'; + use OpenSSL::fallback '/node/deps/openssl/openssl/external/perl/MODULES.txt'; my $here = dirname($0); if (scalar @ARGV == 0) { # With no arguments, re-create the build file # We do that in two steps, where the first step emits perl - # snipets. + # snippets. my $buildfile = $config{build_file}; my $buildfile_template = "$buildfile.in"; @@ -27621,7 +32684,7 @@ unless (caller) { ); use lib '.'; - use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; + use lib '/node/deps/openssl/openssl/Configurations'; use gentemplate; open my $buildfile_template_fh, ">$buildfile_template" @@ -27638,8 +32701,8 @@ unless (caller) { my $prepend = <<'_____'; use File::Spec::Functions; -use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; -use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; +use lib '/node/deps/openssl/openssl/util/perl'; +use lib '/node/deps/openssl/openssl/Configurations'; use lib '.'; use platform; _____ diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h index 2c32ce450f283c..d9348ab60f3fb1 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: " -#define DATE "built on: Sun Jul 20 00:55:41 2025 UTC" +#define DATE "built on: Tue Aug 5 17:23:40 2025 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/params_idx.c b/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/params_idx.c new file mode 100644 index 00000000000000..874125eb57a17c --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/params_idx.c @@ -0,0 +1,3366 @@ +/* + * WARNING: do not edit! + * Generated by makefile from crypto/params_idx.c.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#include "internal/e_os.h" +#include "internal/param_names.h" +#include + +/* Machine generated TRIE -- generated by util/perl/OpenSSL/paramnames.pm */ +int ossl_param_find_pidx(const char *s) +{ + switch(s[0]) { + default: + break; + case 'a': + switch(s[1]) { + default: + break; + case 'c': + if (strcmp("vp-info", s + 2) == 0) + return PIDX_KDF_PARAM_X942_ACVPINFO; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'd': + if (strcmp("itional-random", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_ADD_RANDOM; + break; + case '\0': + return PIDX_KDF_PARAM_ARGON2_AD; + } + break; + case 'e': + if (strcmp("ad", s + 2) == 0) + return PIDX_CIPHER_PARAM_AEAD; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("id_param", s + 4) == 0) + return PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD; + break; + case 'i': + if (strcmp("d-absent", s + 4) == 0) + return PIDX_DIGEST_PARAM_ALGID_ABSENT; + break; + case 'o': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'h': + switch(s[8]) { + default: + break; + case 'm': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '-': + if (strcmp("params", s + 13) == 0) + return PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS; + break; + case '\0': + return PIDX_ALG_PARAM_ALGORITHM_ID; + } + } + } + } + } + } + } + } + } + } + break; + case 'i': + if (strcmp("as", s + 3) == 0) + return PIDX_STORE_PARAM_ALIAS; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_A; + } + break; + case 'b': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("sis-type", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_CHAR2_TYPE; + break; + case 'i': + if (strcmp("ts", s + 2) == 0) + return PIDX_PKEY_PARAM_BITS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("size", s + 6) == 0) + return PIDX_MAC_PARAM_BLOCK_SIZE; + break; + case '_': + if (strcmp("padding", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING; + break; + case 's': + if (strcmp("ize", s + 6) == 0) + return PIDX_DIGEST_PARAM_BLOCK_SIZE; + } + } + } + } + break; + case 'u': + if (strcmp("ildinfo", s + 2) == 0) + return PIDX_PROV_PARAM_BUILDINFO; + break; + case '\0': + return PIDX_PKEY_PARAM_EC_B; + } + break; + case 'c': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_C_ROUNDS; + break; + case 'e': + if (strcmp("kalg", s + 2) == 0) + return PIDX_KDF_PARAM_CEK_ALG; + break; + case 'i': + if (strcmp("pher", s + 2) == 0) + return PIDX_ALG_PARAM_CIPHER; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("actor", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_COFACTOR; + break; + case 'n': + switch(s[3]) { + default: + break; + case 's': + if (strcmp("tant", s + 4) == 0) + return PIDX_KDF_PARAM_CONSTANT; + break; + case 't': + if (strcmp("ext-string", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_CONTEXT_STRING; + } + } + break; + case 't': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("mode", s + 4) == 0) + return PIDX_CIPHER_PARAM_CTS_MODE; + break; + case '\0': + return PIDX_CIPHER_PARAM_CTS; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '-': + if (strcmp("iv", s + 7) == 0) + return PIDX_CIPHER_PARAM_CUSTOM_IV; + break; + case '\0': + return PIDX_MAC_PARAM_CUSTOM; + } + } + } + } + } + } + break; + case 'd': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_D_ROUNDS; + break; + case 'a': + switch(s[2]) { + default: + break; + case 't': + switch(s[3]) { + default: + break; + case 'a': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 's': + if (strcmp("tructure", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_STRUCTURE; + break; + case 't': + if (strcmp("ype", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_TYPE; + } + break; + case '\0': + return PIDX_OBJECT_PARAM_DATA; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + if (strcmp("ded-from-explicit", s + 4) == 0) + return PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS; + break; + case 'r': + if (strcmp("ypt-only", s + 4) == 0) + return PIDX_CIPHER_PARAM_DECRYPT_ONLY; + } + break; + case 'f': + if (strcmp("ault-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_DEFAULT_DIGEST; + break; + case 's': + if (strcmp("c", s + 3) == 0) + return PIDX_OBJECT_PARAM_DESC; + break; + case 't': + if (strcmp("erministic", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_DETERMINISTIC; + } + break; + case 'h': + if (strcmp("kem-ikm", s + 2) == 0) + return PIDX_PKEY_PARAM_DHKEM_IKM; + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("heck", s + 8) == 0) + return PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK; + break; + case 'n': + if (strcmp("oinit", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_NOINIT; + break; + case 'o': + if (strcmp("neshot", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_ONESHOT; + break; + case 'p': + if (strcmp("rops", s + 8) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS; + break; + case 's': + if (strcmp("ize", s + 8) == 0) + return PIDX_PKEY_PARAM_DIGEST_SIZE; + } + break; + case '\0': + return PIDX_STORE_PARAM_DIGEST; + } + } + } + } + break; + case 's': + if (strcmp("tid", s + 3) == 0) + return PIDX_PKEY_PARAM_DIST_ID; + } + break; + case 'r': + if (strcmp("bg-no-trunc-md", s + 2) == 0) + return PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST; + break; + case 's': + if (strcmp("a-sign-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_DSA_SIGN_DISABLED; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_D; + } + break; + case 'e': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("rly_clean", s + 2) == 0) + return PIDX_KDF_PARAM_EARLY_CLEAN; + break; + case 'c': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'h': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'a': + switch(s[9]) { + default: + break; + case 'c': + switch(s[10]) { + default: + break; + case 't': + switch(s[11]) { + default: + break; + case 'o': + switch(s[12]) { + default: + break; + case 'r': + switch(s[13]) { + default: + break; + case '-': + switch(s[14]) { + default: + break; + case 'c': + if (strcmp("heck", s + 15) == 0) + return PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK; + break; + case 'm': + if (strcmp("ode", s + 15) == 0) + return PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE; + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'm': + if (strcmp("s_check", s + 2) == 0) + return PIDX_KDF_PARAM_FIPS_EMS_CHECK; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("d-pub-key", s + 6) == 0) + return PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY; + break; + case 'i': + if (strcmp("ng", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_ENCODING; + } + } + break; + case 'r': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'c': + if (strcmp("heck", s + 9) == 0) + return PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK; + break; + case 'l': + if (strcmp("evel", s + 9) == 0) + return PIDX_ENCODER_PARAM_ENCRYPT_LEVEL; + } + } + } + } + } + } + break; + case 'g': + if (strcmp("ine", s + 3) == 0) + return PIDX_ALG_PARAM_ENGINE; + break; + case 't': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'y': + switch(s[7]) { + default: + break; + case '_': + if (strcmp("required", s + 8) == 0) + return PIDX_DRBG_PARAM_ENTROPY_REQUIRED; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_ENTROPY; + } + } + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_E; + break; + case 'x': + if (strcmp("pect", s + 2) == 0) + return PIDX_STORE_PARAM_EXPECT; + } + break; + case 'f': + switch(s[1]) { + default: + break; + case 'i': + switch(s[2]) { + default: + break; + case 'e': + if (strcmp("ld-type", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_FIELD_TYPE; + break; + case 'n': + if (strcmp("gerprint", s + 3) == 0) + return PIDX_STORE_PARAM_FINGERPRINT; + break; + case 'p': + if (strcmp("s-indicator", s + 3) == 0) + return PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR; + } + } + break; + case 'g': + switch(s[1]) { + default: + break; + case 'e': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_GENERATE; + } + break; + case 'o': + if (strcmp("r", s + 8) == 0) + return PIDX_PKEY_PARAM_EC_GENERATOR; + } + } + } + } + } + } + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_GINDEX; + break; + case 'r': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'u': + switch(s[4]) { + default: + break; + case 'p': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("check", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE; + break; + case '\0': + return PIDX_PKEY_PARAM_GROUP_NAME; + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_G; + } + break; + case 'h': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("s-randkey", s + 2) == 0) + return PIDX_CIPHER_PARAM_HAS_RAND_KEY; + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_H; + break; + case 'k': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'f': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_KEY_CHECK; + } + } + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_HMAC_KEY_CHECK; + break; + case 's': + if (strcmp("_padding", s + 2) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING; + } + break; + case 'i': + switch(s[1]) { + default: + break; + case 'd': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_PKCS12_ID; + } + break; + case 'k': + if (strcmp("me", s + 2) == 0) + return PIDX_KEM_PARAM_IKME; + break; + case 'm': + if (strcmp("plicit-rejection", s + 2) == 0) + return PIDX_PKEY_PARAM_IMPLICIT_REJECTION; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("lude-public", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC; + break; + case 'f': + if (strcmp("o", s + 3) == 0) + return PIDX_PASSPHRASE_PARAM_INFO; + break; + case 'p': + if (strcmp("ut-type", s + 3) == 0) + return PIDX_STORE_PARAM_INPUT_TYPE; + break; + case 's': + if (strcmp("tance", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_INSTANCE; + } + break; + case 't': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("tion", s + 5) == 0) + return PIDX_GEN_PARAM_ITERATION; + break; + case '\0': + return PIDX_KDF_PARAM_ITER; + } + } + } + break; + case 'v': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("generated", s + 3) == 0) + return PIDX_CIPHER_PARAM_AEAD_IV_GENERATED; + break; + case 'l': + if (strcmp("en", s + 3) == 0) + return PIDX_CIPHER_PARAM_IVLEN; + break; + case '\0': + return PIDX_MAC_PARAM_IV; + } + } + break; + case 'j': + switch(s[1]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_COFACTOR; + } + break; + case 'k': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K2; + } + break; + case '3': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K3; + } + break; + case 'a': + if (strcmp("t", s + 2) == 0) + return PIDX_SIGNATURE_PARAM_KAT; + break; + case 'b': + if (strcmp("kdf-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KBKDF_KEY_CHECK; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case 's': + switch(s[9]) { + default: + break; + case 't': + switch(s[10]) { + default: + break; + case '-': + if (strcmp("props", s + 11) == 0) + return PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_KDF_DIGEST; + } + } + } + } + } + } + break; + case 'o': + if (strcmp("utlen", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_OUTLEN; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_TYPE; + break; + case 'u': + if (strcmp("km", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_UKM; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'y': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("heck", s + 5) == 0) + return PIDX_PKEY_PARAM_FIPS_KEY_CHECK; + break; + case 'l': + if (strcmp("ength", s + 5) == 0) + return PIDX_SKEY_PARAM_KEY_LENGTH; + } + break; + case 'b': + if (strcmp("its", s + 4) == 0) + return PIDX_CIPHER_PARAM_RC2_KEYBITS; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_KEYLEN; + break; + case '\0': + return PIDX_MAC_PARAM_KEY; + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KMAC_KEY_CHECK; + } + break; + case 'l': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("el", s + 3) == 0) + return PIDX_KDF_PARAM_LABEL; + break; + case 'n': + if (strcmp("es", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_LANES; + } + } + break; + case 'm': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'k': + if (strcmp("ey", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_MAC_KEY; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_KDF_PARAM_MAC_SIZE; + break; + case '\0': + return PIDX_ALG_PARAM_MAC; + } + break; + case 'n': + if (strcmp("datory-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_MANDATORY_DIGEST; + break; + case 'x': + switch(s[3]) { + default: + break; + case '-': + if (strcmp("size", s + 4) == 0) + return PIDX_PKEY_PARAM_MAX_SIZE; + break; + case '_': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("dinlen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_ADINLEN; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("rly_data", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA; + break; + case 'n': + if (strcmp("tropylen", s + 6) == 0) + return PIDX_DRBG_PARAM_MAX_ENTROPYLEN; + } + break; + case 'f': + if (strcmp("rag_len", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_NONCELEN; + break; + case 'p': + if (strcmp("erslen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_PERSLEN; + break; + case 'r': + if (strcmp("equest", s + 5) == 0) + return PIDX_RAND_PARAM_MAX_REQUEST; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MAX_LENGTH; + break; + case 'm': + if (strcmp("em_bytes", s + 4) == 0) + return PIDX_KDF_PARAM_SCRYPT_MAXMEM; + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'm': + if (strcmp("cost", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_MEMCOST; + break; + case 's': + if (strcmp("sage-encoding", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING; + } + break; + case 'g': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_DIGEST; + break; + case 'p': + if (strcmp("roperties", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_PROPERTIES; + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_MASKGENFUNC; + } + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("alg", s + 3) == 0) + return PIDX_DIGEST_PARAM_MICALG; + break; + case 'n': + switch(s[3]) { + default: + break; + case '_': + switch(s[4]) { + default: + break; + case 'e': + if (strcmp("ntropylen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_ENTROPYLEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_NONCELEN; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MIN_LENGTH; + } + } + break; + case 'l': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + if (strcmp("nput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS; + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED; + } + } + } + } + break; + case 'k': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + switch(s[8]) { + default: + break; + case 'm': + if (strcmp("port_pct_type", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE; + break; + case 'n': + if (strcmp("put_formats", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS; + } + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED; + } + } + } + } + } + } + break; + case 'o': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case '\0': + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE; + } + break; + case 'u': + if (strcmp("le-filename", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_MODULE_FILENAME; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_SIGNATURE_PARAM_MU; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_M; + } + break; + case 'n': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("me", s + 2) == 0) + return PIDX_STORE_PARAM_ISSUER; + break; + case 'o': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("short-mac", s + 3) == 0) + return PIDX_PROV_PARAM_NO_SHORT_MAC; + break; + case 'n': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("type", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_NONCE_TYPE; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_NONCE; + } + } + } + } + break; + case 'u': + if (strcmp("m", s + 2) == 0) + return PIDX_CIPHER_PARAM_NUM; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_N; + } + break; + case 'o': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("ep-label", s + 2) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL; + break; + case 'p': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'n': + if (strcmp("ssl-version", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_VERSION; + break; + case 'r': + if (strcmp("ation", s + 4) == 0) + return PIDX_KEM_PARAM_OPERATION; + } + break; + case 't': + if (strcmp("ions", s + 3) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS; + } + break; + case 'r': + if (strcmp("der", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_ORDER; + } + break; + case 'p': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P2; + } + break; + case 'a': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'm': + if (strcmp("ode", s + 5) == 0) + return PIDX_PKEY_PARAM_PAD_MODE; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_DIGEST_PARAM_PAD_TYPE; + } + break; + case 'd': + if (strcmp("ing", s + 4) == 0) + return PIDX_CIPHER_PARAM_PADDING; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_PAD; + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'u': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYUINFO; + break; + case 'v': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYVINFO; + } + } + } + break; + case 's': + if (strcmp("s", s + 3) == 0) + return PIDX_KDF_PARAM_PASSWORD; + } + break; + case 'b': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("ts", s + 3) == 0) + return PIDX_PKEY_PARAM_FFC_PBITS; + break; + case 'k': + if (strcmp("df2-lower-bound-check", s + 3) == 0) + return PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK; + } + break; + case 'c': + if (strcmp("ounter", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_PCOUNTER; + break; + case 'i': + if (strcmp("peline-tag", s + 2) == 0) + return PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG; + break; + case 'k': + if (strcmp("cs5", s + 2) == 0) + return PIDX_KDF_PARAM_PKCS5; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("nt-format", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT; + break; + case 't': + if (strcmp("ential", s + 3) == 0) + return PIDX_GEN_PARAM_POTENTIAL; + } + break; + case 'r': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("iction_resistance", s + 4) == 0) + return PIDX_DRBG_PARAM_PREDICTION_RESISTANCE; + break; + case 'f': + if (strcmp("ix", s + 4) == 0) + return PIDX_KDF_PARAM_PREFIX; + } + break; + case 'i': + switch(s[3]) { + default: + break; + case 'm': + if (strcmp("es", s + 4) == 0) + return PIDX_PKEY_PARAM_RSA_PRIMES; + break; + case 'v': + switch(s[4]) { + default: + break; + case '_': + if (strcmp("len", s + 5) == 0) + return PIDX_PKEY_PARAM_DH_PRIV_LEN; + break; + case '\0': + return PIDX_PKEY_PARAM_PRIV_KEY; + } + } + break; + case 'o': + switch(s[3]) { + default: + break; + case 'p': + if (strcmp("erties", s + 4) == 0) + return PIDX_STORE_PARAM_PROPERTIES; + break; + case 'v': + if (strcmp("ider-name", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_PROV_NAME; + } + } + break; + case 'u': + if (strcmp("b", s + 2) == 0) + return PIDX_PKEY_PARAM_PUB_KEY; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_P; + } + break; + case 'q': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q2; + } + break; + case 'b': + if (strcmp("its", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_QBITS; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_Q; + break; + case 'x': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_X; + } + break; + case 'y': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_Y; + } + } + break; + case 'r': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'k': + if (strcmp("ey", s + 5) == 0) + return PIDX_CIPHER_PARAM_RANDOM_KEY; + break; + case 'o': + if (strcmp("m_data", s + 5) == 0) + return PIDX_DRBG_PARAM_RANDOM_DATA; + } + } + break; + case 'w': + if (strcmp("-bytes", s + 3) == 0) + return PIDX_SKEY_PARAM_RAW_BYTES; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case '_': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("head", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD; + break; + case 'b': + if (strcmp("uffer_len", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN; + } + } + } + break; + case 'f': + if (strcmp("erence", s + 3) == 0) + return PIDX_OBJECT_PARAM_REFERENCE; + break; + case 's': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case '_': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("ounter", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_COUNTER; + break; + case 'r': + if (strcmp("equests", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_REQUESTS; + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case 'm': + switch(s[10]) { + default: + break; + case 'e': + switch(s[11]) { + default: + break; + case '_': + if (strcmp("interval", s + 12) == 0) + return PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL; + break; + case '\0': + return PIDX_DRBG_PARAM_RESEED_TIME; + } + } + } + } + } + } + } + } + } + } + break; + case 'o': + if (strcmp("unds", s + 2) == 0) + return PIDX_CIPHER_PARAM_ROUNDS; + break; + case 's': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + switch(s[5]) { + default: + break; + case 'o': + switch(s[6]) { + default: + break; + case 'e': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case 'i': + switch(s[10]) { + default: + break; + case 'c': + switch(s[11]) { + default: + break; + case 'i': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'n': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case '1': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT1; + } + break; + case '2': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT2; + } + break; + case '3': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT3; + } + break; + case '4': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT4; + } + break; + case '5': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT5; + } + break; + case '6': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT6; + } + break; + case '7': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT7; + } + break; + case '8': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT8; + } + break; + case '9': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'd': + if (strcmp("erive-from-pq", s + 5) == 0) + return PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'x': + switch(s[6]) { + default: + break; + case 'p': + switch(s[7]) { + default: + break; + case 'o': + switch(s[8]) { + default: + break; + case 'n': + switch(s[9]) { + default: + break; + case 'e': + switch(s[10]) { + default: + break; + case 'n': + switch(s[11]) { + default: + break; + case 't': + switch(s[12]) { + default: + break; + case '1': + switch(s[13]) { + default: + break; + case '0': + switch(s[14]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT1; + } + break; + case '2': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT2; + } + break; + case '3': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT3; + } + break; + case '4': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT4; + } + break; + case '5': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT5; + } + break; + case '6': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT6; + } + break; + case '7': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT7; + } + break; + case '8': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT8; + } + break; + case '9': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT; + } + } + } + } + } + } + } + } + break; + case 'f': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'o': + switch(s[9]) { + default: + break; + case 'r': + switch(s[10]) { + default: + break; + case '1': + switch(s[11]) { + default: + break; + case '0': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR1; + } + break; + case '2': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR2; + } + break; + case '3': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR3; + } + break; + case '4': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR4; + } + break; + case '5': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR5; + } + break; + case '6': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR6; + } + break; + case '7': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR7; + } + break; + case '8': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR8; + } + break; + case '9': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR; + } + } + } + } + } + } + break; + case 'p': + switch(s[5]) { + default: + break; + case 'k': + if (strcmp("cs15-pad-disabled", s + 6) == 0) + return PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED; + break; + case 's': + if (strcmp("s-saltlen-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK; + } + break; + case 's': + if (strcmp("ign-x931-pad-disabled", s + 5) == 0) + return PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED; + } + } + } + break; + case '\0': + return PIDX_KDF_PARAM_SCRYPT_R; + } + break; + case 's': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("eprime-generator", s + 3) == 0) + return PIDX_PKEY_PARAM_DH_GENERATOR; + break; + case 'l': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'l': + if (strcmp("en", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_PSS_SALTLEN; + break; + case '\0': + return PIDX_MAC_PARAM_SALT; + } + } + break; + case 'v': + if (strcmp("e-parameters", s + 3) == 0) + return PIDX_ENCODER_PARAM_SAVE_PARAMETERS; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'r': + if (strcmp("et", s + 4) == 0) + return PIDX_KDF_PARAM_SECRET; + break; + case 'u': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'y': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'b': + if (strcmp("its", s + 10) == 0) + return PIDX_PKEY_PARAM_SECURITY_BITS; + break; + case 'c': + if (strcmp("hecks", s + 10) == 0) + return PIDX_PROV_PARAM_SECURITY_CHECKS; + } + } + } + } + } + } + } + break; + case 'e': + if (strcmp("d", s + 3) == 0) + return PIDX_PKEY_PARAM_SLH_DSA_SEED; + break; + case 'r': + if (strcmp("ial", s + 3) == 0) + return PIDX_STORE_PARAM_SERIAL; + break; + case 's': + if (strcmp("sion_id", s + 3) == 0) + return PIDX_KDF_PARAM_SSHKDF_SESSION_ID; + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'n': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + if (strcmp("heck", s + 6) == 0) + return PIDX_PKEY_PARAM_FIPS_SIGN_CHECK; + break; + case 'x': + if (strcmp("931-pad-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK; + } + break; + case 'a': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case 'u': + switch(s[7]) { + default: + break; + case 'r': + switch(s[8]) { + default: + break; + case 'e': + switch(s[9]) { + default: + break; + case '-': + if (strcmp("digest-check", s + 10) == 0) + return PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK; + break; + case '\0': + return PIDX_SIGNATURE_PARAM_SIGNATURE; + } + } + } + } + } + } + } + break; + case 'z': + if (strcmp("e", s + 3) == 0) + return PIDX_MAC_PARAM_SIZE; + } + break; + case 'p': + if (strcmp("eed", s + 2) == 0) + return PIDX_CIPHER_PARAM_SPEED; + break; + case 's': + switch(s[2]) { + default: + break; + case 'h': + switch(s[3]) { + default: + break; + case 'k': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'f': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_KEY_CHECK; + } + } + } + } + } + break; + case 'k': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'f': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_KEY_CHECK; + } + } + } + } + break; + case 'l': + if (strcmp("3-ms", s + 3) == 0) + return PIDX_DIGEST_PARAM_SSL3_MS; + } + break; + case 't': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("esc", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_DESC; + break; + case 'p': + if (strcmp("hase", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_PHASE; + break; + case 't': + if (strcmp("ype", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_TYPE; + } + break; + case 'a': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_STATE; + } + break; + case 'u': + if (strcmp("s", s + 5) == 0) + return PIDX_PROV_PARAM_STATUS; + } + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("m_mac", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC; + break; + case 'n': + if (strcmp("gth", s + 5) == 0) + return PIDX_RAND_PARAM_STRENGTH; + } + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("ject", s + 3) == 0) + return PIDX_STORE_PARAM_SUBJECT; + break; + case 'p': + switch(s[3]) { + default: + break; + case 'p': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + if (strcmp("ivinfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PRIVINFO; + break; + case 'u': + if (strcmp("binfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PUBINFO; + } + } + } + } + } + } + break; + case 't': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_TAGLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TAG; + } + } + break; + case 'd': + if (strcmp("es-encrypt-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED; + break; + case 'e': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case '-': + if (strcmp("entropy", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_TEST_ENTROPY; + break; + case '_': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("ntropy", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_ENTROPY; + break; + case 'n': + if (strcmp("once", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_NONCE; + } + } + } + } + break; + case 'h': + if (strcmp("reads", s + 2) == 0) + return PIDX_KDF_PARAM_THREADS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("lient-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION; + break; + case 'd': + if (strcmp("ata-size", s + 5) == 0) + return PIDX_MAC_PARAM_TLS_DATA_SIZE; + break; + case 'g': + switch(s[5]) { + default: + break; + case 'r': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'u': + switch(s[8]) { + default: + break; + case 'p': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'a': + if (strcmp("lg", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_ALG; + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_ID; + } + break; + case 's': + if (strcmp("-kem", s + 12) == 0) + return PIDX_CAPABILITY_TLS_GROUP_IS_KEM; + } + break; + case 'n': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'm': + switch(s[13]) { + default: + break; + case 'e': + switch(s[14]) { + default: + break; + case '-': + if (strcmp("internal", s + 15) == 0) + return PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL; + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_NAME; + } + } + } + } + break; + case 's': + if (strcmp("ec-bits", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case '-': + if (strcmp("size", s + 8) == 0) + return PIDX_CIPHER_PARAM_TLS_MAC_SIZE; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS_MAC; + } + break; + case 'x': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS; + } + } + } + break; + case 'i': + switch(s[6]) { + default: + break; + case 'n': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS; + } + } + } + break; + case 'u': + if (strcmp("lti", s + 6) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK; + } + break; + case 'n': + if (strcmp("egotiated-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION; + break; + case 's': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'a': + switch(s[8]) { + default: + break; + case 'l': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '-': + switch(s[11]) { + default: + break; + case 'c': + if (strcmp("ode-point", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT; + break; + case 'h': + switch(s[12]) { + default: + break; + case 'a': + switch(s[13]) { + default: + break; + case 's': + switch(s[14]) { + default: + break; + case 'h': + switch(s[15]) { + default: + break; + case '-': + switch(s[16]) { + default: + break; + case 'n': + if (strcmp("ame", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME; + break; + case 'o': + if (strcmp("id", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_OID; + } + } + } + } + } + break; + case 'i': + if (strcmp("ana-name", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME; + break; + case 'k': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'y': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case 'y': + switch(s[16]) { + default: + break; + case 'p': + switch(s[17]) { + default: + break; + case 'e': + switch(s[18]) { + default: + break; + case '-': + if (strcmp("oid", s + 19) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID; + break; + case '\0': + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE; + } + } + } + } + } + } + } + break; + case 'n': + if (strcmp("ame", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_NAME; + break; + case 'o': + if (strcmp("id", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_OID; + break; + case 's': + switch(s[12]) { + default: + break; + case 'e': + if (strcmp("c-bits", s + 13) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS; + break; + case 'i': + switch(s[13]) { + default: + break; + case 'g': + switch(s[14]) { + default: + break; + case '-': + switch(s[15]) { + default: + break; + case 'n': + if (strcmp("ame", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME; + break; + case 'o': + if (strcmp("id", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_OID; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'v': + if (strcmp("ersion", s + 5) == 0) + return PIDX_CIPHER_PARAM_TLS_VERSION; + } + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK; + break; + case 'e': + if (strcmp("ms-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK; + } + } + } + } + } + break; + case '3': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'k': + switch(s[7]) { + default: + break; + case 'd': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'u': + switch(s[6]) { + default: + break; + case 'l': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case '_': + switch(s[10]) { + default: + break; + case 'a': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'd': + switch(s[13]) { + default: + break; + case 'p': + if (strcmp("acklen", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD; + } + } + } + break; + case 'e': + switch(s[11]) { + default: + break; + case 'n': + switch(s[12]) { + default: + break; + case 'c': + switch(s[13]) { + default: + break; + case 'i': + if (strcmp("n", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN; + break; + case 'l': + if (strcmp("en", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC; + } + } + } + break; + case 'i': + if (strcmp("nterleave", s + 11) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE; + break; + case 'm': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'x': + switch(s[13]) { + default: + break; + case 'b': + if (strcmp("ufsz", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE; + break; + case 's': + if (strcmp("ndfrag", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT; + } + } + } + } + } + } + } + } + } + } + break; + case 'a': + switch(s[4]) { + default: + break; + case 'a': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'p': + if (strcmp("ad", s + 7) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD; + } + } + } + break; + case 'i': + switch(s[4]) { + default: + break; + case 'v': + switch(s[5]) { + default: + break; + case 'f': + if (strcmp("ixed", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED; + break; + case 'g': + if (strcmp("en", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN; + break; + case 'i': + if (strcmp("nv", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV; + } + } + break; + case 't': + if (strcmp("ree", s + 4) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS; + } + break; + case 'y': + if (strcmp("pe", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_TYPE; + } + break; + case 'u': + switch(s[1]) { + default: + break; + case 'k': + if (strcmp("m", s + 2) == 0) + return PIDX_KDF_PARAM_UKM; + break; + case 'p': + if (strcmp("dated-iv", s + 2) == 0) + return PIDX_CIPHER_PARAM_UPDATED_IV; + break; + case 's': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'b': + if (strcmp("its", s + 5) == 0) + return PIDX_CIPHER_PARAM_USE_BITS; + break; + case 'c': + if (strcmp("ofactor-flag", s + 5) == 0) + return PIDX_PKEY_PARAM_USE_COFACTOR_FLAG; + break; + case 'k': + if (strcmp("eybits", s + 5) == 0) + return PIDX_KDF_PARAM_X942_USE_KEYBITS; + break; + case 'l': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_KBKDF_USE_L; + } + break; + case 's': + if (strcmp("eparator", s + 5) == 0) + return PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR; + } + break; + case '_': + switch(s[4]) { + default: + break; + case 'd': + if (strcmp("erivation_function", s + 5) == 0) + return PIDX_DRBG_PARAM_USE_DF; + break; + case 'e': + if (strcmp("tm", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM; + } + } + } + } + break; + case 'v': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'l': + switch(s[3]) { + default: + break; + case 'i': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_VALIDATE_G; + } + break; + case 'l': + if (strcmp("egacy", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY; + break; + case 'p': + if (strcmp("q", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_PQ; + } + } + } + } + } + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'r': + switch(s[3]) { + default: + break; + case 'i': + if (strcmp("fy-message", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE; + break; + case 's': + if (strcmp("ion", s + 4) == 0) + return PIDX_PROV_PARAM_VERSION; + } + } + } + break; + case 'x': + switch(s[1]) { + default: + break; + case '9': + switch(s[2]) { + default: + break; + case '4': + if (strcmp("2kdf-key-check", s + 3) == 0) + return PIDX_PROV_PARAM_X942KDF_KEY_CHECK; + break; + case '6': + switch(s[3]) { + default: + break; + case '3': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'f': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_KEY_CHECK; + } + } + } + } + } + } + } + break; + case 'c': + if (strcmp("ghash", s + 2) == 0) + return PIDX_KDF_PARAM_SSHKDF_XCGHASH; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_DIGEST_PARAM_XOFLEN; + break; + case '\0': + return PIDX_MAC_PARAM_XOF; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP; + } + break; + case 'q': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ; + } + break; + case 't': + if (strcmp("s_standard", s + 2) == 0) + return PIDX_CIPHER_PARAM_XTS_STANDARD; + } + } + return -1; +} + +/* End of TRIE */ diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/internal/param_names.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/internal/param_names.h new file mode 100644 index 00000000000000..ec5bff6e31c126 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/internal/param_names.h @@ -0,0 +1,469 @@ +/* + * WARNING: do not edit! + * Generated by makefile from include/internal/param_names.h.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +int ossl_param_find_pidx(const char *s); + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +#define NUM_PIDX 346 + +#define PIDX_ALG_PARAM_ALGORITHM_ID 0 +#define PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS 1 +#define PIDX_ALG_PARAM_CIPHER 2 +#define PIDX_ALG_PARAM_DIGEST 3 +#define PIDX_ALG_PARAM_ENGINE 4 +#define PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR 5 +#define PIDX_ALG_PARAM_MAC 6 +#define PIDX_ALG_PARAM_PROPERTIES 7 +#define PIDX_ASYM_CIPHER_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_ENGINE PIDX_PKEY_PARAM_ENGINE +#define PIDX_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +#define PIDX_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS 9 +#define PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL 10 +#define PIDX_ASYM_CIPHER_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_ASYM_CIPHER_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION 11 +#define PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION 12 +#define PIDX_CAPABILITY_TLS_GROUP_ALG 13 +#define PIDX_CAPABILITY_TLS_GROUP_ID 14 +#define PIDX_CAPABILITY_TLS_GROUP_IS_KEM 15 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_GROUP_NAME 20 +#define PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL 21 +#define PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS 22 +#define PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT 23 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME 24 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_OID 25 +#define PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME 26 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE 27 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID 28 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_SIGALG_NAME 29 +#define PIDX_CAPABILITY_TLS_SIGALG_OID 30 +#define PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS 31 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME 32 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_OID 33 +#define PIDX_CIPHER_PARAM_AEAD 34 +#define PIDX_CIPHER_PARAM_AEAD_IVLEN PIDX_CIPHER_PARAM_IVLEN +#define PIDX_CIPHER_PARAM_AEAD_IV_GENERATED 35 +#define PIDX_CIPHER_PARAM_AEAD_MAC_KEY 36 +#define PIDX_CIPHER_PARAM_AEAD_TAG 37 +#define PIDX_CIPHER_PARAM_AEAD_TAGLEN 38 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD 39 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD 40 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN 41 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED 42 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV 43 +#define PIDX_CIPHER_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD 44 +#define PIDX_CIPHER_PARAM_BLOCK_SIZE 45 +#define PIDX_CIPHER_PARAM_CTS 46 +#define PIDX_CIPHER_PARAM_CTS_MODE 47 +#define PIDX_CIPHER_PARAM_CUSTOM_IV 48 +#define PIDX_CIPHER_PARAM_DECRYPT_ONLY 49 +#define PIDX_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK 50 +#define PIDX_CIPHER_PARAM_HAS_RAND_KEY 51 +#define PIDX_CIPHER_PARAM_IV 52 +#define PIDX_CIPHER_PARAM_IVLEN 53 +#define PIDX_CIPHER_PARAM_KEYLEN 54 +#define PIDX_CIPHER_PARAM_MODE 55 +#define PIDX_CIPHER_PARAM_NUM 56 +#define PIDX_CIPHER_PARAM_PADDING 57 +#define PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG 58 +#define PIDX_CIPHER_PARAM_RANDOM_KEY 59 +#define PIDX_CIPHER_PARAM_RC2_KEYBITS 60 +#define PIDX_CIPHER_PARAM_ROUNDS 61 +#define PIDX_CIPHER_PARAM_SPEED 62 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK 63 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD 64 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN 65 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC 66 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN 67 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN 68 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE 69 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE 70 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT 71 +#define PIDX_CIPHER_PARAM_TLS_MAC 72 +#define PIDX_CIPHER_PARAM_TLS_MAC_SIZE 73 +#define PIDX_CIPHER_PARAM_TLS_VERSION 74 +#define PIDX_CIPHER_PARAM_UPDATED_IV 75 +#define PIDX_CIPHER_PARAM_USE_BITS 76 +#define PIDX_CIPHER_PARAM_XTS_STANDARD 77 +#define PIDX_DECODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DIGEST_PARAM_ALGID_ABSENT 78 +#define PIDX_DIGEST_PARAM_BLOCK_SIZE 45 +#define PIDX_DIGEST_PARAM_MICALG 79 +#define PIDX_DIGEST_PARAM_PAD_TYPE 80 +#define PIDX_DIGEST_PARAM_SIZE 81 +#define PIDX_DIGEST_PARAM_SSL3_MS 82 +#define PIDX_DIGEST_PARAM_XOF 83 +#define PIDX_DIGEST_PARAM_XOFLEN 84 +#define PIDX_DRBG_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_DRBG_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_DRBG_PARAM_ENTROPY_REQUIRED 85 +#define PIDX_DRBG_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_DRBG_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_DRBG_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_DRBG_PARAM_MAX_ADINLEN 86 +#define PIDX_DRBG_PARAM_MAX_ENTROPYLEN 87 +#define PIDX_DRBG_PARAM_MAX_LENGTH 88 +#define PIDX_DRBG_PARAM_MAX_NONCELEN 89 +#define PIDX_DRBG_PARAM_MAX_PERSLEN 90 +#define PIDX_DRBG_PARAM_MIN_ENTROPYLEN 91 +#define PIDX_DRBG_PARAM_MIN_LENGTH 92 +#define PIDX_DRBG_PARAM_MIN_NONCELEN 93 +#define PIDX_DRBG_PARAM_PREDICTION_RESISTANCE 94 +#define PIDX_DRBG_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DRBG_PARAM_RANDOM_DATA 95 +#define PIDX_DRBG_PARAM_RESEED_COUNTER 96 +#define PIDX_DRBG_PARAM_RESEED_REQUESTS 97 +#define PIDX_DRBG_PARAM_RESEED_TIME 98 +#define PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL 99 +#define PIDX_DRBG_PARAM_SIZE 81 +#define PIDX_DRBG_PARAM_USE_DF 100 +#define PIDX_ENCODER_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_ENCODER_PARAM_ENCRYPT_LEVEL 101 +#define PIDX_ENCODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_ENCODER_PARAM_SAVE_PARAMETERS 102 +#define PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE 103 +#define PIDX_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_EXCHANGE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST 104 +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS 105 +#define PIDX_EXCHANGE_PARAM_KDF_OUTLEN 106 +#define PIDX_EXCHANGE_PARAM_KDF_TYPE 107 +#define PIDX_EXCHANGE_PARAM_KDF_UKM 108 +#define PIDX_EXCHANGE_PARAM_PAD 109 +#define PIDX_GEN_PARAM_ITERATION 110 +#define PIDX_GEN_PARAM_POTENTIAL 111 +#define PIDX_KDF_PARAM_ARGON2_AD 112 +#define PIDX_KDF_PARAM_ARGON2_LANES 113 +#define PIDX_KDF_PARAM_ARGON2_MEMCOST 114 +#define PIDX_KDF_PARAM_ARGON2_VERSION 115 +#define PIDX_KDF_PARAM_CEK_ALG 116 +#define PIDX_KDF_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_KDF_PARAM_CONSTANT 117 +#define PIDX_KDF_PARAM_DATA 118 +#define PIDX_KDF_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_KDF_PARAM_EARLY_CLEAN 119 +#define PIDX_KDF_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KDF_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_KDF_PARAM_FIPS_EMS_CHECK 120 +#define PIDX_KDF_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KDF_PARAM_HMACDRBG_ENTROPY 121 +#define PIDX_KDF_PARAM_HMACDRBG_NONCE 122 +#define PIDX_KDF_PARAM_INFO 123 +#define PIDX_KDF_PARAM_ITER 124 +#define PIDX_KDF_PARAM_KBKDF_R 125 +#define PIDX_KDF_PARAM_KBKDF_USE_L 126 +#define PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR 127 +#define PIDX_KDF_PARAM_KEY 128 +#define PIDX_KDF_PARAM_LABEL 129 +#define PIDX_KDF_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_KDF_PARAM_MAC_SIZE 130 +#define PIDX_KDF_PARAM_MODE 55 +#define PIDX_KDF_PARAM_PASSWORD 131 +#define PIDX_KDF_PARAM_PKCS12_ID 132 +#define PIDX_KDF_PARAM_PKCS5 133 +#define PIDX_KDF_PARAM_PREFIX 134 +#define PIDX_KDF_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_KDF_PARAM_SALT 135 +#define PIDX_KDF_PARAM_SCRYPT_MAXMEM 136 +#define PIDX_KDF_PARAM_SCRYPT_N 137 +#define PIDX_KDF_PARAM_SCRYPT_P 138 +#define PIDX_KDF_PARAM_SCRYPT_R 125 +#define PIDX_KDF_PARAM_SECRET 139 +#define PIDX_KDF_PARAM_SEED 140 +#define PIDX_KDF_PARAM_SIZE 81 +#define PIDX_KDF_PARAM_SSHKDF_SESSION_ID 141 +#define PIDX_KDF_PARAM_SSHKDF_TYPE 142 +#define PIDX_KDF_PARAM_SSHKDF_XCGHASH 143 +#define PIDX_KDF_PARAM_THREADS 144 +#define PIDX_KDF_PARAM_UKM 145 +#define PIDX_KDF_PARAM_X942_ACVPINFO 146 +#define PIDX_KDF_PARAM_X942_PARTYUINFO 147 +#define PIDX_KDF_PARAM_X942_PARTYVINFO 148 +#define PIDX_KDF_PARAM_X942_SUPP_PRIVINFO 149 +#define PIDX_KDF_PARAM_X942_SUPP_PUBINFO 150 +#define PIDX_KDF_PARAM_X942_USE_KEYBITS 151 +#define PIDX_KEM_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KEM_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KEM_PARAM_IKME 152 +#define PIDX_KEM_PARAM_OPERATION 153 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING 154 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING 155 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA 156 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN 157 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE 55 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS 158 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD 159 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC 160 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE 161 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM 162 +#define PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN 163 +#define PIDX_MAC_PARAM_BLOCK_SIZE 164 +#define PIDX_MAC_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_MAC_PARAM_CUSTOM 165 +#define PIDX_MAC_PARAM_C_ROUNDS 166 +#define PIDX_MAC_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_MAC_PARAM_DIGEST_NOINIT 167 +#define PIDX_MAC_PARAM_DIGEST_ONESHOT 168 +#define PIDX_MAC_PARAM_D_ROUNDS 169 +#define PIDX_MAC_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_MAC_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_MAC_PARAM_FIPS_NO_SHORT_MAC PIDX_PROV_PARAM_NO_SHORT_MAC +#define PIDX_MAC_PARAM_IV 52 +#define PIDX_MAC_PARAM_KEY 128 +#define PIDX_MAC_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_MAC_PARAM_SALT 135 +#define PIDX_MAC_PARAM_SIZE 81 +#define PIDX_MAC_PARAM_TLS_DATA_SIZE 170 +#define PIDX_MAC_PARAM_XOF 83 +#define PIDX_OBJECT_PARAM_DATA 118 +#define PIDX_OBJECT_PARAM_DATA_STRUCTURE 171 +#define PIDX_OBJECT_PARAM_DATA_TYPE 172 +#define PIDX_OBJECT_PARAM_DESC 173 +#define PIDX_OBJECT_PARAM_INPUT_TYPE 174 +#define PIDX_OBJECT_PARAM_REFERENCE 175 +#define PIDX_OBJECT_PARAM_TYPE 142 +#define PIDX_PASSPHRASE_PARAM_INFO 123 +#define PIDX_PKEY_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_PKEY_PARAM_BITS 176 +#define PIDX_PKEY_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_PKEY_PARAM_DEFAULT_DIGEST 177 +#define PIDX_PKEY_PARAM_DHKEM_IKM 178 +#define PIDX_PKEY_PARAM_DH_GENERATOR 179 +#define PIDX_PKEY_PARAM_DH_PRIV_LEN 180 +#define PIDX_PKEY_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_PKEY_PARAM_DIGEST_SIZE 181 +#define PIDX_PKEY_PARAM_DIST_ID 182 +#define PIDX_PKEY_PARAM_EC_A 183 +#define PIDX_PKEY_PARAM_EC_B 184 +#define PIDX_PKEY_PARAM_EC_CHAR2_M 185 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K1 186 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K2 187 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K3 188 +#define PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS 189 +#define PIDX_PKEY_PARAM_EC_CHAR2_TYPE 190 +#define PIDX_PKEY_PARAM_EC_COFACTOR 191 +#define PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS 192 +#define PIDX_PKEY_PARAM_EC_ENCODING 193 +#define PIDX_PKEY_PARAM_EC_FIELD_TYPE 194 +#define PIDX_PKEY_PARAM_EC_GENERATOR 195 +#define PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE 196 +#define PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC 197 +#define PIDX_PKEY_PARAM_EC_ORDER 198 +#define PIDX_PKEY_PARAM_EC_P 138 +#define PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT 199 +#define PIDX_PKEY_PARAM_EC_PUB_X 200 +#define PIDX_PKEY_PARAM_EC_PUB_Y 201 +#define PIDX_PKEY_PARAM_EC_SEED 140 +#define PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY 202 +#define PIDX_PKEY_PARAM_ENGINE PIDX_ALG_PARAM_ENGINE +#define PIDX_PKEY_PARAM_FFC_COFACTOR 203 +#define PIDX_PKEY_PARAM_FFC_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_FFC_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_FFC_G 204 +#define PIDX_PKEY_PARAM_FFC_GINDEX 205 +#define PIDX_PKEY_PARAM_FFC_H 206 +#define PIDX_PKEY_PARAM_FFC_P 138 +#define PIDX_PKEY_PARAM_FFC_PBITS 207 +#define PIDX_PKEY_PARAM_FFC_PCOUNTER 208 +#define PIDX_PKEY_PARAM_FFC_Q 209 +#define PIDX_PKEY_PARAM_FFC_QBITS 210 +#define PIDX_PKEY_PARAM_FFC_SEED 140 +#define PIDX_PKEY_PARAM_FFC_TYPE 142 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_G 211 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY 212 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_PQ 213 +#define PIDX_PKEY_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK 214 +#define PIDX_PKEY_PARAM_FIPS_KEY_CHECK 215 +#define PIDX_PKEY_PARAM_FIPS_SIGN_CHECK 216 +#define PIDX_PKEY_PARAM_GROUP_NAME 217 +#define PIDX_PKEY_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_PKEY_PARAM_MANDATORY_DIGEST 218 +#define PIDX_PKEY_PARAM_MASKGENFUNC 219 +#define PIDX_PKEY_PARAM_MAX_SIZE 220 +#define PIDX_PKEY_PARAM_MGF1_DIGEST 221 +#define PIDX_PKEY_PARAM_MGF1_PROPERTIES 222 +#define PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS 223 +#define PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS 224 +#define PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED 225 +#define PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED 226 +#define PIDX_PKEY_PARAM_ML_DSA_SEED 140 +#define PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE 227 +#define PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS 228 +#define PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS 229 +#define PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED 230 +#define PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED 231 +#define PIDX_PKEY_PARAM_ML_KEM_SEED 140 +#define PIDX_PKEY_PARAM_PAD_MODE 232 +#define PIDX_PKEY_PARAM_PRIV_KEY 233 +#define PIDX_PKEY_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_PUB_KEY 234 +#define PIDX_PKEY_PARAM_RSA_BITS PIDX_PKEY_PARAM_BITS +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT 235 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT1 236 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT2 237 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT3 238 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT4 239 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT5 240 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT6 241 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT7 242 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT8 243 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT9 244 +#define PIDX_PKEY_PARAM_RSA_D 245 +#define PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ 246 +#define PIDX_PKEY_PARAM_RSA_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_RSA_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_RSA_E 247 +#define PIDX_PKEY_PARAM_RSA_EXPONENT 248 +#define PIDX_PKEY_PARAM_RSA_EXPONENT1 249 +#define PIDX_PKEY_PARAM_RSA_EXPONENT10 250 +#define PIDX_PKEY_PARAM_RSA_EXPONENT2 251 +#define PIDX_PKEY_PARAM_RSA_EXPONENT3 252 +#define PIDX_PKEY_PARAM_RSA_EXPONENT4 253 +#define PIDX_PKEY_PARAM_RSA_EXPONENT5 254 +#define PIDX_PKEY_PARAM_RSA_EXPONENT6 255 +#define PIDX_PKEY_PARAM_RSA_EXPONENT7 256 +#define PIDX_PKEY_PARAM_RSA_EXPONENT8 257 +#define PIDX_PKEY_PARAM_RSA_EXPONENT9 258 +#define PIDX_PKEY_PARAM_RSA_FACTOR 259 +#define PIDX_PKEY_PARAM_RSA_FACTOR1 260 +#define PIDX_PKEY_PARAM_RSA_FACTOR10 261 +#define PIDX_PKEY_PARAM_RSA_FACTOR2 262 +#define PIDX_PKEY_PARAM_RSA_FACTOR3 263 +#define PIDX_PKEY_PARAM_RSA_FACTOR4 264 +#define PIDX_PKEY_PARAM_RSA_FACTOR5 265 +#define PIDX_PKEY_PARAM_RSA_FACTOR6 266 +#define PIDX_PKEY_PARAM_RSA_FACTOR7 267 +#define PIDX_PKEY_PARAM_RSA_FACTOR8 268 +#define PIDX_PKEY_PARAM_RSA_FACTOR9 269 +#define PIDX_PKEY_PARAM_RSA_MASKGENFUNC PIDX_PKEY_PARAM_MASKGENFUNC +#define PIDX_PKEY_PARAM_RSA_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_PKEY_PARAM_RSA_N 137 +#define PIDX_PKEY_PARAM_RSA_PRIMES 270 +#define PIDX_PKEY_PARAM_RSA_PSS_SALTLEN 271 +#define PIDX_PKEY_PARAM_RSA_TEST_P1 272 +#define PIDX_PKEY_PARAM_RSA_TEST_P2 273 +#define PIDX_PKEY_PARAM_RSA_TEST_Q1 274 +#define PIDX_PKEY_PARAM_RSA_TEST_Q2 275 +#define PIDX_PKEY_PARAM_RSA_TEST_XP 276 +#define PIDX_PKEY_PARAM_RSA_TEST_XP1 277 +#define PIDX_PKEY_PARAM_RSA_TEST_XP2 278 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ 279 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ1 280 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ2 281 +#define PIDX_PKEY_PARAM_SECURITY_BITS 282 +#define PIDX_PKEY_PARAM_SLH_DSA_SEED 140 +#define PIDX_PKEY_PARAM_USE_COFACTOR_ECDH PIDX_PKEY_PARAM_USE_COFACTOR_FLAG +#define PIDX_PKEY_PARAM_USE_COFACTOR_FLAG 283 +#define PIDX_PROV_PARAM_BUILDINFO 284 +#define PIDX_PROV_PARAM_CORE_MODULE_FILENAME 285 +#define PIDX_PROV_PARAM_CORE_PROV_NAME 286 +#define PIDX_PROV_PARAM_CORE_VERSION 287 +#define PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST 288 +#define PIDX_PROV_PARAM_DSA_SIGN_DISABLED 289 +#define PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK 290 +#define PIDX_PROV_PARAM_HKDF_DIGEST_CHECK 291 +#define PIDX_PROV_PARAM_HKDF_KEY_CHECK 292 +#define PIDX_PROV_PARAM_HMAC_KEY_CHECK 293 +#define PIDX_PROV_PARAM_KBKDF_KEY_CHECK 294 +#define PIDX_PROV_PARAM_KMAC_KEY_CHECK 295 +#define PIDX_PROV_PARAM_NAME 296 +#define PIDX_PROV_PARAM_NO_SHORT_MAC 297 +#define PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK 298 +#define PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED 299 +#define PIDX_PROV_PARAM_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED 301 +#define PIDX_PROV_PARAM_SECURITY_CHECKS 302 +#define PIDX_PROV_PARAM_SELF_TEST_DESC 303 +#define PIDX_PROV_PARAM_SELF_TEST_PHASE 304 +#define PIDX_PROV_PARAM_SELF_TEST_TYPE 305 +#define PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK 306 +#define PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK 307 +#define PIDX_PROV_PARAM_SSHKDF_KEY_CHECK 308 +#define PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK 309 +#define PIDX_PROV_PARAM_SSKDF_KEY_CHECK 310 +#define PIDX_PROV_PARAM_STATUS 311 +#define PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED 312 +#define PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK 313 +#define PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK 314 +#define PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK 315 +#define PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK 316 +#define PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK 317 +#define PIDX_PROV_PARAM_VERSION 115 +#define PIDX_PROV_PARAM_X942KDF_KEY_CHECK 318 +#define PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK 319 +#define PIDX_PROV_PARAM_X963KDF_KEY_CHECK 320 +#define PIDX_RAND_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_RAND_PARAM_GENERATE 321 +#define PIDX_RAND_PARAM_MAX_REQUEST 322 +#define PIDX_RAND_PARAM_STATE 323 +#define PIDX_RAND_PARAM_STRENGTH 324 +#define PIDX_RAND_PARAM_TEST_ENTROPY 325 +#define PIDX_RAND_PARAM_TEST_NONCE 326 +#define PIDX_SIGNATURE_PARAM_ADD_RANDOM 327 +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID PIDX_PKEY_PARAM_ALGORITHM_ID +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_SIGNATURE_PARAM_CONTEXT_STRING 328 +#define PIDX_SIGNATURE_PARAM_DETERMINISTIC 329 +#define PIDX_SIGNATURE_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_SIGNATURE_PARAM_DIGEST_SIZE PIDX_PKEY_PARAM_DIGEST_SIZE +#define PIDX_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_SIGNATURE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_CHECK PIDX_PKEY_PARAM_FIPS_SIGN_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK 330 +#define PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE 331 +#define PIDX_SIGNATURE_PARAM_INSTANCE 332 +#define PIDX_SIGNATURE_PARAM_KAT 333 +#define PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING 334 +#define PIDX_SIGNATURE_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_SIGNATURE_PARAM_MGF1_PROPERTIES PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_SIGNATURE_PARAM_MU 335 +#define PIDX_SIGNATURE_PARAM_NONCE_TYPE 336 +#define PIDX_SIGNATURE_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_SIGNATURE_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_SIGNATURE_PARAM_PSS_SALTLEN 271 +#define PIDX_SIGNATURE_PARAM_SIGNATURE 337 +#define PIDX_SIGNATURE_PARAM_TEST_ENTROPY 338 +#define PIDX_SKEY_PARAM_KEY_LENGTH 339 +#define PIDX_SKEY_PARAM_RAW_BYTES 340 +#define PIDX_STORE_PARAM_ALIAS 341 +#define PIDX_STORE_PARAM_DIGEST 3 +#define PIDX_STORE_PARAM_EXPECT 342 +#define PIDX_STORE_PARAM_FINGERPRINT 343 +#define PIDX_STORE_PARAM_INPUT_TYPE 174 +#define PIDX_STORE_PARAM_ISSUER 296 +#define PIDX_STORE_PARAM_PROPERTIES 7 +#define PIDX_STORE_PARAM_SERIAL 344 +#define PIDX_STORE_PARAM_SUBJECT 345 diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/asn1.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/asn1.h index e28efbbb718e2b..5129217b2e0977 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/asn1.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/asn1.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/asn1.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -21,6 +21,9 @@ # define HEADER_ASN1_H # endif +# ifndef OPENSSL_NO_STDIO +# include +# endif # include # include # include @@ -50,14 +53,14 @@ extern "C" { # define V_ASN1_PRIMITIVE_TAG 0x1f # define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG -# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ -# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ -# define V_ASN1_ANY -4/* used in ASN1 template code */ +# define V_ASN1_APP_CHOOSE -2 /* let the recipient choose */ +# define V_ASN1_OTHER -3 /* used in ASN1_TYPE */ +# define V_ASN1_ANY -4 /* used in ASN1 template code */ # define V_ASN1_UNDEF -1 /* ASN.1 tag values */ # define V_ASN1_EOC 0 -# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_BOOLEAN 1 # define V_ASN1_INTEGER 2 # define V_ASN1_BIT_STRING 3 # define V_ASN1_OCTET_STRING 4 @@ -70,19 +73,19 @@ extern "C" { # define V_ASN1_UTF8STRING 12 # define V_ASN1_SEQUENCE 16 # define V_ASN1_SET 17 -# define V_ASN1_NUMERICSTRING 18 /**/ +# define V_ASN1_NUMERICSTRING 18 # define V_ASN1_PRINTABLESTRING 19 # define V_ASN1_T61STRING 20 -# define V_ASN1_TELETEXSTRING 20/* alias */ -# define V_ASN1_VIDEOTEXSTRING 21 /**/ +# define V_ASN1_TELETEXSTRING 20 /* alias */ +# define V_ASN1_VIDEOTEXSTRING 21 # define V_ASN1_IA5STRING 22 # define V_ASN1_UTCTIME 23 -# define V_ASN1_GENERALIZEDTIME 24 /**/ -# define V_ASN1_GRAPHICSTRING 25 /**/ -# define V_ASN1_ISO64STRING 26 /**/ -# define V_ASN1_VISIBLESTRING 26/* alias */ -# define V_ASN1_GENERALSTRING 27 /**/ -# define V_ASN1_UNIVERSALSTRING 28 /**/ +# define V_ASN1_GENERALIZEDTIME 24 +# define V_ASN1_GRAPHICSTRING 25 +# define V_ASN1_ISO64STRING 26 +# define V_ASN1_VISIBLESTRING 26 /* alias */ +# define V_ASN1_GENERALSTRING 27 +# define V_ASN1_UNIVERSALSTRING 28 # define V_ASN1_BMPSTRING 30 /* @@ -155,7 +158,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) -# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +# define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */ /* * This indicates that the ASN1_STRING is not a real value but just a place * holder for the location where indefinite length constructed data should be @@ -275,7 +278,7 @@ typedef struct ASN1_TLC_st ASN1_TLC; /* This is just an opaque pointer */ typedef struct ASN1_VALUE_st ASN1_VALUE; -/* Declare ASN1 functions: the implement macro in in asn1t.h */ +/* Declare ASN1 functions: the implement macro is in asn1t.h */ /* * The mysterious 'extern' that's passed to some macros is innocuous, @@ -368,6 +371,7 @@ typedef struct ASN1_VALUE_st ASN1_VALUE; typedef void *d2i_of_void(void **, const unsigned char **, long); typedef int i2d_of_void(const void *, unsigned char **); +typedef int OSSL_i2d_of_void_ctx(const void *, unsigned char **, void *vctx); /*- * The following macros and typedefs allow an ASN1_ITEM @@ -996,6 +1000,8 @@ int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, unsigned char *data, int max_len); void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/bio.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/bio.h index d094af47b73f1c..be24d086a54013 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/bio.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/bio.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/bio.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -67,8 +67,13 @@ extern "C" { # define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) # endif # define BIO_TYPE_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_PAIR (26|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_MEM (27|BIO_TYPE_SOURCE_SINK) +/* Custom type starting index returned by BIO_get_new_index() */ #define BIO_TYPE_START 128 +/* Custom type maximum index that can be returned by BIO_get_new_index() */ +#define BIO_TYPE_MASK 0xFF /* * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. @@ -171,6 +176,31 @@ extern "C" { # define BIO_CTRL_SET_INDENT 80 # define BIO_CTRL_GET_INDENT 81 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +# define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +# define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +# define BIO_CTRL_DGRAM_GET_CAPS 86 +# define BIO_CTRL_DGRAM_SET_CAPS 87 +# define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +# define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +# define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +# define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +# define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 +# define BIO_CTRL_DGRAM_SET0_LOCAL_ADDR 94 + +# define BIO_DGRAM_CAP_NONE 0U +# define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +# define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +# define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +# define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + # ifndef OPENSSL_NO_KTLS # define BIO_get_ktls_send(b) \ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) @@ -208,7 +238,7 @@ extern "C" { # define BIO_FLAGS_NONCLEAR_RST 0x400 # define BIO_FLAGS_IN_EOF 0x800 -/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */ +/* the BIO FLAGS values 0x1000 to 0x8000 are reserved for internal KTLS flags */ typedef union bio_addr_st BIO_ADDR; typedef struct bio_addrinfo_st BIO_ADDRINFO; @@ -256,12 +286,14 @@ void BIO_clear_flags(BIO *b, int flags); # define BIO_RR_ACCEPT 0x03 /* These are passed by the BIO callback */ -# define BIO_CB_FREE 0x01 -# define BIO_CB_READ 0x02 -# define BIO_CB_WRITE 0x03 -# define BIO_CB_PUTS 0x04 -# define BIO_CB_GETS 0x05 -# define BIO_CB_CTRL 0x06 +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 +# define BIO_CB_RECVMMSG 0x07 +# define BIO_CB_SENDMMSG 0x08 /* * The callback is called before and after the underling operation, The @@ -362,6 +394,36 @@ struct bio_dgram_sctp_prinfo { }; # endif +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_TYPE_SSL 2 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + SSL *ssl; + } value; +} BIO_POLL_DESCRIPTOR; + /* * #define BIO_CONN_get_param_hostname BIO_ctrl */ @@ -428,10 +490,17 @@ struct bio_dgram_sctp_prinfo { # define BIO_C_SET_CONNECT_MODE 155 +# define BIO_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +# define BIO_C_SET_SOCK_TYPE 157 +# define BIO_C_GET_SOCK_TYPE 158 +# define BIO_C_GET_DGRAM_BIO 159 + # define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) # define BIO_get_app_data(s) BIO_get_ex_data(s,0) -# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_tfo(b,n) BIO_ctrl(b,BIO_C_SET_TFO,(n),NULL) # ifndef OPENSSL_NO_SOCK /* IP families we support, for BIO_s_connect() and BIO_s_accept() */ @@ -452,7 +521,11 @@ struct bio_dgram_sctp_prinfo { # define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) # define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) # define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_get_conn_mode(b) BIO_ctrl(b,BIO_C_GET_CONNECT,4,NULL) # define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) +# define BIO_set_sock_type(b,t) BIO_ctrl(b,BIO_C_SET_SOCK_TYPE,(t),NULL) +# define BIO_get_sock_type(b) BIO_ctrl(b,BIO_C_GET_SOCK_TYPE,0,NULL) +# define BIO_get0_dgram_bio(b, p) BIO_ctrl(b,BIO_C_GET_DGRAM_BIO,0,(void *)(BIO **)(p)) /* BIO_s_accept() */ # define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ @@ -469,6 +542,7 @@ struct bio_dgram_sctp_prinfo { (char *)(bio)) # define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) # define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) +# define BIO_set_tfo_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,5,(n)?(void *)"a":NULL) /* Aliases kept for backward compatibility */ # define BIO_BIND_NORMAL 0 @@ -596,8 +670,32 @@ int BIO_ctrl_reset_read_request(BIO *b); (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) # define BIO_dgram_set_peer(b,peer) \ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_detect_peer_addr(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) # define BIO_dgram_get_mtu_overhead(b) \ (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +# define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +# define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +# define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +# define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +# define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +# define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +# define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +# define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +# define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +# define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) +# define BIO_dgram_set0_local_addr(b, addr) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET0_LOCAL_ADDR, 0, (addr)) /* ctrl macros for BIO_f_prefix */ # define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) @@ -640,10 +738,18 @@ void BIO_vfree(BIO *a); int BIO_up_ref(BIO *a); int BIO_read(BIO *b, void *data, int dlen); int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); int BIO_gets(BIO *bp, char *buf, int size); int BIO_get_line(BIO *bio, char *buf, int size); int BIO_write(BIO *b, const void *data, int dlen); int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); int BIO_puts(BIO *bp, const char *buf); int BIO_indent(BIO *b, int indent, int max); long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); @@ -667,6 +773,9 @@ int BIO_nwrite0(BIO *bio, char **buf); int BIO_nwrite(BIO *bio, char **buf, int num); const BIO_METHOD *BIO_s_mem(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +# endif const BIO_METHOD *BIO_s_secmem(void); BIO *BIO_new_mem_buf(const void *buf, int len); # ifndef OPENSSL_NO_SOCK @@ -686,6 +795,7 @@ const BIO_METHOD *BIO_f_nbio_test(void); const BIO_METHOD *BIO_f_prefix(void); const BIO_METHOD *BIO_s_core(void); # ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_pair(void); const BIO_METHOD *BIO_s_datagram(void); int BIO_dgram_non_fatal_error(int error); BIO *BIO_new_dgram(int fd, int close_flag); @@ -704,6 +814,7 @@ int BIO_dgram_sctp_msg_waiting(BIO *b); # ifndef OPENSSL_NO_SOCK int BIO_sock_should_retry(int i); int BIO_sock_non_fatal_error(int error); +int BIO_err_is_non_fatal(unsigned int errcode); int BIO_socket_wait(int fd, int for_read, time_t max_time); # endif int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); @@ -726,6 +837,8 @@ int BIO_hex_string(BIO *out, int indent, int width, const void *data, # ifndef OPENSSL_NO_SOCK BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, const void *where, size_t wherelen, unsigned short port); void BIO_ADDR_free(BIO_ADDR *); @@ -788,6 +901,7 @@ int BIO_sock_info(int sock, # define BIO_SOCK_KEEPALIVE 0x04 # define BIO_SOCK_NONBLOCK 0x08 # define BIO_SOCK_NODELAY 0x10 +# define BIO_SOCK_TFO 0x20 int BIO_socket(int domain, int socktype, int protocol, int options); int BIO_connect(int sock, const BIO_ADDR *addr, int options); @@ -805,6 +919,11 @@ BIO *BIO_new_fd(int fd, int close_flag); int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, BIO **bio2, size_t writebuf2); +# ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +# endif + /* * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default @@ -849,38 +968,54 @@ ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); BIO_METHOD *BIO_meth_new(int type, const char *name); void BIO_meth_free(BIO_METHOD *biom); -int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int); -int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t, - size_t *); int BIO_meth_set_write(BIO_METHOD *biom, int (*write) (BIO *, const char *, int)); int BIO_meth_set_write_ex(BIO_METHOD *biom, int (*bwrite) (BIO *, const char *, size_t, size_t *)); -int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); -int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); +int BIO_meth_set_sendmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_read(BIO_METHOD *biom, int (*read) (BIO *, char *, int)); int BIO_meth_set_read_ex(BIO_METHOD *biom, int (*bread) (BIO *, char *, size_t, size_t *)); -int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +int BIO_meth_set_recvmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_puts(BIO_METHOD *biom, int (*puts) (BIO *, const char *)); -int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); int BIO_meth_set_gets(BIO_METHOD *biom, int (*ossl_gets) (BIO *, char *, int)); -long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); int BIO_meth_set_ctrl(BIO_METHOD *biom, long (*ctrl) (BIO *, int, long, void *)); -int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); -int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); -long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) - (BIO *, int, BIO_info_cb *); int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, long (*callback_ctrl) (BIO *, int, BIO_info_cb *)); - +# ifndef OPENSSL_NO_DEPRECATED_3_5 +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, + int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, + long, void *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) (BIO *, int, + BIO_info_cb *); +# endif # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/cmp.h index f0e768e01baacd..ded2dd2905f756 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/cmp.h.in * - * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -35,7 +35,9 @@ extern "C" { # endif -# define OSSL_CMP_PVNO 2 +# define OSSL_CMP_PVNO_2 2 +# define OSSL_CMP_PVNO_3 3 +# define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ /*- * PKIFailureInfo ::= BIT STRING { @@ -137,7 +139,6 @@ extern "C" { # if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX # error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int # endif - typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) @@ -203,8 +204,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_PKISTATUS_revocationWarning 4 # define OSSL_CMP_PKISTATUS_revocationNotification 5 # define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 - typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; + DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) # define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 @@ -274,6 +275,46 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) #define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) #define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) + +typedef struct ossl_cmp_crlstatus_st OSSL_CMP_CRLSTATUS; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS) +#define sk_OSSL_CMP_CRLSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_value(sk, idx) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CRLSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CRLSTATUS_new_null() ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CRLSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CRLSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CRLSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_delete(sk, i) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CRLSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_pop(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_shift(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CRLSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CRLSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CRLSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CRLSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CRLSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) + + +typedef OSSL_CRMF_ATTRIBUTETYPEANDVALUE OSSL_CMP_ATAV; +# define OSSL_CMP_ATAV_free OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free +typedef STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) OSSL_CMP_ATAVS; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_ATAVS) +# define stack_st_OSSL_CMP_ATAV stack_st_OSSL_CRMF_ATTRIBUTETYPEANDVALUE +# define sk_OSSL_CMP_ATAV_num sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num +# define sk_OSSL_CMP_ATAV_value sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value +# define sk_OSSL_CMP_ATAV_push sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push +# define sk_OSSL_CMP_ATAV_pop_free sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free + typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT; typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI; DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI) @@ -375,21 +416,75 @@ void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type, ASN1_TYPE *value); ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav); ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); -int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p, +int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **sk_p, OSSL_CMP_ITAV *itav); void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new0_certProfile(STACK_OF(ASN1_UTF8STRING) + *certProfile); +int OSSL_CMP_ITAV_get0_certProfile(const OSSL_CMP_ITAV *itav, + STACK_OF(ASN1_UTF8STRING) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_create(const X509_CRL *crl, + const X509 *cert, int only_DN); +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_new1(const DIST_POINT_NAME *dpn, + const GENERAL_NAMES *issuer, + const ASN1_TIME *thisUpdate); +int OSSL_CMP_CRLSTATUS_get0(const OSSL_CMP_CRLSTATUS *crlstatus, + DIST_POINT_NAME **dpn, GENERAL_NAMES **issuer, + ASN1_TIME **thisUpdate); +void OSSL_CMP_CRLSTATUS_free(OSSL_CMP_CRLSTATUS *crlstatus); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_crlStatusList(STACK_OF(OSSL_CMP_CRLSTATUS) *crlStatusList); +int OSSL_CMP_ITAV_get0_crlStatusList(const OSSL_CMP_ITAV *itav, + STACK_OF(OSSL_CMP_CRLSTATUS) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_crls(const X509_CRL *crls); +int OSSL_CMP_ITAV_get0_crls(const OSSL_CMP_ITAV *it, STACK_OF(X509_CRL) **out); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_certReqTemplate(OSSL_CRMF_CERTTEMPLATE *certTemplate, + OSSL_CMP_ATAVS *keySpec); +int OSSL_CMP_ITAV_get1_certReqTemplate(const OSSL_CMP_ITAV *itav, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +OSSL_CMP_ATAV *OSSL_CMP_ATAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ATAV_set0(OSSL_CMP_ATAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ATAV_get0_type(const OSSL_CMP_ATAV *itav); +ASN1_TYPE *OSSL_CMP_ATAV_get0_value(const OSSL_CMP_ATAV *itav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_algId(const X509_ALGOR *alg); +X509_ALGOR *OSSL_CMP_ATAV_get0_algId(const OSSL_CMP_ATAV *atav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_rsaKeyLen(int len); +int OSSL_CMP_ATAV_get_rsaKeyLen(const OSSL_CMP_ATAV *atav); +int OSSL_CMP_ATAV_push1(OSSL_CMP_ATAVS **sk_p, const OSSL_CMP_ATAV *atav); + void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); /* from cmp_ctx.c */ OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const OSSL_CMP_CTX *ctx); /* CMP general options: */ # define OSSL_CMP_OPT_LOG_VERBOSITY 0 /* CMP transfer options: */ -# define OSSL_CMP_OPT_KEEP_ALIVE 10 -# define OSSL_CMP_OPT_MSG_TIMEOUT 11 +# define OSSL_CMP_OPT_KEEP_ALIVE 10 +# define OSSL_CMP_OPT_MSG_TIMEOUT 11 # define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 +# define OSSL_CMP_OPT_USE_TLS 13 /* CMP request options: */ # define OSSL_CMP_OPT_VALIDITY_DAYS 20 # define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 @@ -407,6 +502,7 @@ int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); # define OSSL_CMP_OPT_DIGEST_ALGNID 34 # define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35 # define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36 +# define OSSL_CMP_OPT_NO_CACHE_EXTRACERTS 37 int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val); int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt); /* CMP-specific callback for logging and outputting the error queue: */ @@ -420,9 +516,11 @@ int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); +# ifndef OPENSSL_NO_HTTP int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); +# endif typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); @@ -432,7 +530,9 @@ void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); +# define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +# define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); /* client authentication: */ @@ -448,12 +548,15 @@ int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx, int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); int OSSL_CMP_CTX_reset_geninfo_ITAVs(OSSL_CMP_CTX *ctx); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_CTX_get0_geninfo_ITAVs(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, STACK_OF(X509) *extraCertsOut); /* certificate template: */ int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set1_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, const GENERAL_NAME *name); @@ -477,6 +580,7 @@ int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); # define OSSL_CMP_PKISI_BUFLEN 1024 +X509 *OSSL_CMP_CTX_get0_validatedSrvCert(const OSSL_CMP_CTX *ctx); X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); @@ -498,10 +602,13 @@ OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const OSSL_CMP_PKIHEADER *hdr); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_HDR_get0_geninfo_ITAVs(const OSSL_CMP_PKIHEADER *hdr); /* from cmp_msg.c */ OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg); +X509_PUBKEY *OSSL_CMP_MSG_get0_certreq_publickey(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_recipNonce(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid); @@ -517,8 +624,10 @@ int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, X509_STORE *trusted_store, X509 *cert); /* from cmp_http.c */ +# ifndef OPENSSL_NO_HTTP OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); +# endif /* from cmp_server.c */ typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; @@ -561,6 +670,13 @@ int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx, OSSL_CMP_SRV_error_cb_t process_error, OSSL_CMP_SRV_certConf_cb_t process_certConf, OSSL_CMP_SRV_pollReq_cb_t process_pollReq); +typedef int (*OSSL_CMP_SRV_delayed_delivery_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +typedef int (*OSSL_CMP_SRV_clean_transaction_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_SRV_CTX_init_trans(OSSL_CMP_SRV_CTX *srv_ctx, + OSSL_CMP_SRV_delayed_delivery_cb_t delay, + OSSL_CMP_SRV_clean_transaction_cb_t clean); OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx, @@ -577,6 +693,8 @@ X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type, # define OSSL_CMP_CR 2 # define OSSL_CMP_P10CR 4 # define OSSL_CMP_KUR 7 +# define OSSL_CMP_GENM 21 +# define OSSL_CMP_ERROR 23 # define OSSL_CMP_exec_IR_ses(ctx) \ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL) # define OSSL_CMP_exec_CR_ses(ctx) \ @@ -590,6 +708,18 @@ int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); +int OSSL_CMP_get1_crlUpdate(OSSL_CMP_CTX *ctx, const X509 *crlcert, + const X509_CRL *last_crl, + X509_CRL **crl); +int OSSL_CMP_get1_certReqTemplate(OSSL_CMP_CTX *ctx, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/cms.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/cms.h index 03ce6ab07aac44..1a51921256fea4 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/cms.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/cms.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/cms.h.in * - * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2008-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -31,8 +31,10 @@ extern "C" { # endif +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; typedef struct CMS_ContentInfo_st CMS_ContentInfo; typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; typedef struct CMS_CertificateChoices CMS_CertificateChoices; typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; @@ -147,10 +149,14 @@ SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, #define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) +DECLARE_ASN1_DUP_FUNCTION(CMS_EnvelopedData) + CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq); # define CMS_SIGNERINFO_ISSUER_SERIAL 0 @@ -190,6 +196,7 @@ CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq) # define CMS_ASCIICRLF 0x80000 # define CMS_CADES 0x100000 # define CMS_USE_ORIGINATOR_KEYID 0x200000 +# define CMS_NO_SIGNING_TIME 0x400000 const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms); @@ -217,13 +224,16 @@ int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, unsigned int flags); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, BIO *dcont, + unsigned int flags); CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, unsigned int flags); CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, @@ -233,27 +243,26 @@ CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, unsigned int flags); CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, const unsigned char *key, size_t keylen, BIO *dcont, BIO *out, unsigned int flags); - CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags); CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, @@ -272,7 +281,7 @@ CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags); CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, BIO *dcont, BIO *out, unsigned int flags); @@ -291,12 +300,16 @@ int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo * -CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx, +CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags); @@ -385,6 +398,11 @@ ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); int CMS_SignerInfo_sign(CMS_SignerInfo *si); int CMS_SignerInfo_verify(CMS_SignerInfo *si); int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, @@ -441,7 +459,7 @@ CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( unsigned char *id, int idlen, int allorfirst, STACK_OF(GENERAL_NAMES) *receiptList, STACK_OF(GENERAL_NAMES) *receiptsTo, - OSSL_LIB_CTX *ctx); + OSSL_LIB_CTX *libctx); int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/comp.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/comp.h new file mode 100644 index 00000000000000..90e39511fe8d28 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/comp.h @@ -0,0 +1,98 @@ +/* + * Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_COMP_H +# define OPENSSL_COMP_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_COMP_H +# endif + +# include + +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + + +# ifndef OPENSSL_NO_COMP + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX* comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); + +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); + +COMP_METHOD *COMP_zlib(void); +COMP_METHOD *COMP_zlib_oneshot(void); +COMP_METHOD *COMP_brotli(void); +COMP_METHOD *COMP_brotli_oneshot(void); +COMP_METHOD *COMP_zstd(void); +COMP_METHOD *COMP_zstd_oneshot(void); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define COMP_zlib_cleanup() while(0) continue +# endif + +# ifdef OPENSSL_BIO_H +const BIO_METHOD *BIO_f_zlib(void); +const BIO_METHOD *BIO_f_brotli(void); +const BIO_METHOD *BIO_f_zstd(void); +# endif + +# endif + +typedef struct ssl_comp_st SSL_COMP; + +SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) +#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) +#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) +#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) +#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) +#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) +#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) +#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) +#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) +#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) +#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) +#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) + + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/conf.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/conf.h index 994e573a957435..ffa9ced71e8b26 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/conf.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/conf.h @@ -27,6 +27,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -65,7 +68,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) #define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) #define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); -#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp))) +#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp)), lh_CONF_VALUE_hash_thunk, lh_CONF_VALUE_comp_thunk, lh_CONF_VALUE_doall_thunk, lh_CONF_VALUE_doall_arg_thunk)) #define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/configuration.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/configuration.h index 46b2c1e7028f3d..cf1dc32122280e 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/configuration.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/configuration.h @@ -29,7 +29,7 @@ extern "C" { # ifndef OPENSSL_SYS_WIN64A # define OPENSSL_SYS_WIN64A 1 # endif -# define OPENSSL_CONFIGURED_API 30000 +# define OPENSSL_CONFIGURED_API 30500 # ifndef OPENSSL_RAND_SEED_OS # define OPENSSL_RAND_SEED_OS # endif @@ -45,6 +45,12 @@ extern "C" { # ifndef OPENSSL_NO_ASM # define OPENSSL_NO_ASM # endif +# ifndef OPENSSL_NO_BROTLI +# define OPENSSL_NO_BROTLI +# endif +# ifndef OPENSSL_NO_BROTLI_DYNAMIC +# define OPENSSL_NO_BROTLI_DYNAMIC +# endif # ifndef OPENSSL_NO_COMP # define OPENSSL_NO_COMP # endif @@ -54,6 +60,9 @@ extern "C" { # ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # endif +# ifndef OPENSSL_NO_DEMOS +# define OPENSSL_NO_DEMOS +# endif # ifndef OPENSSL_NO_DEVCRYPTOENG # define OPENSSL_NO_DEVCRYPTOENG # endif @@ -66,12 +75,24 @@ extern "C" { # ifndef OPENSSL_NO_EXTERNAL_TESTS # define OPENSSL_NO_EXTERNAL_TESTS # endif +# ifndef OPENSSL_NO_FIPS_JITTER +# define OPENSSL_NO_FIPS_JITTER +# endif # ifndef OPENSSL_NO_FUZZ_AFL # define OPENSSL_NO_FUZZ_AFL # endif # ifndef OPENSSL_NO_FUZZ_LIBFUZZER # define OPENSSL_NO_FUZZ_LIBFUZZER # endif +# ifndef OPENSSL_NO_H3DEMO +# define OPENSSL_NO_H3DEMO +# endif +# ifndef OPENSSL_NO_HQINTEROP +# define OPENSSL_NO_HQINTEROP +# endif +# ifndef OPENSSL_NO_JITTER +# define OPENSSL_NO_JITTER +# endif # ifndef OPENSSL_NO_KTLS # define OPENSSL_NO_KTLS # endif @@ -84,6 +105,9 @@ extern "C" { # ifndef OPENSSL_NO_MSAN # define OPENSSL_NO_MSAN # endif +# ifndef OPENSSL_NO_PIE +# define OPENSSL_NO_PIE +# endif # ifndef OPENSSL_NO_RC5 # define OPENSSL_NO_RC5 # endif @@ -96,6 +120,12 @@ extern "C" { # ifndef OPENSSL_NO_SSL3_METHOD # define OPENSSL_NO_SSL3_METHOD # endif +# ifndef OPENSSL_NO_SSLKEYLOG +# define OPENSSL_NO_SSLKEYLOG +# endif +# ifndef OPENSSL_NO_TFO +# define OPENSSL_NO_TFO +# endif # ifndef OPENSSL_NO_TRACE # define OPENSSL_NO_TRACE # endif @@ -111,6 +141,18 @@ extern "C" { # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS # define OPENSSL_NO_WEAK_SSL_CIPHERS # endif +# ifndef OPENSSL_NO_ZLIB +# define OPENSSL_NO_ZLIB +# endif +# ifndef OPENSSL_NO_ZLIB_DYNAMIC +# define OPENSSL_NO_ZLIB_DYNAMIC +# endif +# ifndef OPENSSL_NO_ZSTD +# define OPENSSL_NO_ZSTD +# endif +# ifndef OPENSSL_NO_ZSTD_DYNAMIC +# define OPENSSL_NO_ZSTD_DYNAMIC +# endif # ifndef OPENSSL_NO_DYNAMIC_ENGINE # define OPENSSL_NO_DYNAMIC_ENGINE # endif @@ -132,6 +174,12 @@ extern "C" { # define RC4_INT unsigned int +# if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +# define OPENSSL_NO_COMP_ALG +# else +# undef OPENSSL_NO_COMP_ALG +# endif + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/core_names.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/core_names.h new file mode 100644 index 00000000000000..aaca6051c81b53 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/core_names.h @@ -0,0 +1,575 @@ +/* + * WARNING: do not edit! + * Generated by makefile from include/openssl/core_names.h.in + * + * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#ifndef OPENSSL_CORE_NAMES_H +# define OPENSSL_CORE_NAMES_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +/* OSSL_CIPHER_PARAM_CTS_MODE Values */ +# define OSSL_CIPHER_CTS_MODE_CS1 "CS1" +# define OSSL_CIPHER_CTS_MODE_CS2 "CS2" +# define OSSL_CIPHER_CTS_MODE_CS3 "CS3" + +/* Known CIPHER names (not a complete list) */ +# define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" + +/* Known DIGEST names (not a complete list) */ +# define OSSL_DIGEST_NAME_MD5 "MD5" +# define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" +# define OSSL_DIGEST_NAME_SHA1 "SHA1" +# define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" +# define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" +# define OSSL_DIGEST_NAME_SHA2_256_192 "SHA2-256/192" +# define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" +# define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" +# define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" +# define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" +# define OSSL_DIGEST_NAME_MD2 "MD2" +# define OSSL_DIGEST_NAME_MD4 "MD4" +# define OSSL_DIGEST_NAME_MDC2 "MDC2" +# define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" +# define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" +# define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" +# define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" +# define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" +# define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" +# define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" +# define OSSL_DIGEST_NAME_SM3 "SM3" + +/* Known MAC names */ +# define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" +# define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" +# define OSSL_MAC_NAME_CMAC "CMAC" +# define OSSL_MAC_NAME_GMAC "GMAC" +# define OSSL_MAC_NAME_HMAC "HMAC" +# define OSSL_MAC_NAME_KMAC128 "KMAC128" +# define OSSL_MAC_NAME_KMAC256 "KMAC256" +# define OSSL_MAC_NAME_POLY1305 "POLY1305" +# define OSSL_MAC_NAME_SIPHASH "SIPHASH" + +/* Known KDF names */ +# define OSSL_KDF_NAME_HKDF "HKDF" +# define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" +# define OSSL_KDF_NAME_PBKDF1 "PBKDF1" +# define OSSL_KDF_NAME_PBKDF2 "PBKDF2" +# define OSSL_KDF_NAME_SCRYPT "SCRYPT" +# define OSSL_KDF_NAME_SSHKDF "SSHKDF" +# define OSSL_KDF_NAME_SSKDF "SSKDF" +# define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" +# define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" +# define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" +# define OSSL_KDF_NAME_X963KDF "X963KDF" +# define OSSL_KDF_NAME_KBKDF "KBKDF" +# define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" +# define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" + +/* RSA padding modes */ +# define OSSL_PKEY_RSA_PAD_MODE_NONE "none" +# define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" +# define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" +# define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" +# define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" + +/* RSA pss padding salt length */ +# define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" + +/* OSSL_PKEY_PARAM_EC_ENCODING values */ +# define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" +# define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" + +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" + +# define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" + +/* PROV_SKEY well known key types */ +# define OSSL_SKEY_TYPE_GENERIC "GENERIC-SECRET" +# define OSSL_SKEY_TYPE_AES "AES" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" + +/* Provider configuration variables */ +#define OSSL_PKEY_RETAIN_SEED "pkey_retain_seed" + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +# define OSSL_ALG_PARAM_ALGORITHM_ID "algorithm-id" +# define OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS "algorithm-id-params" +# define OSSL_ALG_PARAM_CIPHER "cipher" +# define OSSL_ALG_PARAM_DIGEST "digest" +# define OSSL_ALG_PARAM_ENGINE "engine" +# define OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR "fips-indicator" +# define OSSL_ALG_PARAM_MAC "mac" +# define OSSL_ALG_PARAM_PROPERTIES "properties" +# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +# define OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props" +# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" +# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name" +# define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal" +# define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name" +# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid" +# define OSSL_CIPHER_PARAM_AEAD "aead" +# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +# define OSSL_CIPHER_PARAM_AEAD_IV_GENERATED "iv-generated" +# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" +# define OSSL_CIPHER_PARAM_AEAD_TAG "tag" +# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" +# define OSSL_CIPHER_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD "alg_id_param" +# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_CIPHER_PARAM_CTS "cts" +# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" +# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" +# define OSSL_CIPHER_PARAM_DECRYPT_ONLY "decrypt-only" +# define OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK "encrypt-check" +# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" +# define OSSL_CIPHER_PARAM_IV "iv" +# define OSSL_CIPHER_PARAM_IVLEN "ivlen" +# define OSSL_CIPHER_PARAM_KEYLEN "keylen" +# define OSSL_CIPHER_PARAM_MODE "mode" +# define OSSL_CIPHER_PARAM_NUM "num" +# define OSSL_CIPHER_PARAM_PADDING "padding" +# define OSSL_CIPHER_PARAM_PIPELINE_AEAD_TAG "pipeline-tag" +# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" +# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" +# define OSSL_CIPHER_PARAM_ROUNDS "rounds" +# define OSSL_CIPHER_PARAM_SPEED "speed" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag" +# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" +# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" +# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" +# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" +# define OSSL_CIPHER_PARAM_USE_BITS "use-bits" +# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard" +# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" +# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_DIGEST_PARAM_MICALG "micalg" +# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" +# define OSSL_DIGEST_PARAM_SIZE "size" +# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" +# define OSSL_DIGEST_PARAM_XOF "xof" +# define OSSL_DIGEST_PARAM_XOFLEN "xoflen" +# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +# define OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +# define OSSL_DRBG_PARAM_SIZE "size" +# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" +# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" +# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" +# define OSSL_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_EXCHANGE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" +# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" +# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" +# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" +# define OSSL_EXCHANGE_PARAM_PAD "pad" +# define OSSL_GEN_PARAM_ITERATION "iteration" +# define OSSL_GEN_PARAM_POTENTIAL "potential" +# define OSSL_KDF_PARAM_ARGON2_AD "ad" +# define OSSL_KDF_PARAM_ARGON2_LANES "lanes" +# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost" +# define OSSL_KDF_PARAM_ARGON2_VERSION "version" +# define OSSL_KDF_PARAM_CEK_ALG "cekalg" +# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_KDF_PARAM_CONSTANT "constant" +# define OSSL_KDF_PARAM_DATA "data" +# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean" +# define OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KDF_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_KDF_PARAM_FIPS_EMS_CHECK "ems_check" +# define OSSL_KDF_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy" +# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce" +# define OSSL_KDF_PARAM_INFO "info" +# define OSSL_KDF_PARAM_ITER "iter" +# define OSSL_KDF_PARAM_KBKDF_R "r" +# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" +# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" +# define OSSL_KDF_PARAM_KEY "key" +# define OSSL_KDF_PARAM_LABEL "label" +# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_KDF_PARAM_MAC_SIZE "maclen" +# define OSSL_KDF_PARAM_MODE "mode" +# define OSSL_KDF_PARAM_PASSWORD "pass" +# define OSSL_KDF_PARAM_PKCS12_ID "id" +# define OSSL_KDF_PARAM_PKCS5 "pkcs5" +# define OSSL_KDF_PARAM_PREFIX "prefix" +# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_KDF_PARAM_SALT "salt" +# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" +# define OSSL_KDF_PARAM_SCRYPT_N "n" +# define OSSL_KDF_PARAM_SCRYPT_P "p" +# define OSSL_KDF_PARAM_SCRYPT_R "r" +# define OSSL_KDF_PARAM_SECRET "secret" +# define OSSL_KDF_PARAM_SEED "seed" +# define OSSL_KDF_PARAM_SIZE "size" +# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" +# define OSSL_KDF_PARAM_SSHKDF_TYPE "type" +# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" +# define OSSL_KDF_PARAM_THREADS "threads" +# define OSSL_KDF_PARAM_UKM "ukm" +# define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info" +# define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info" +# define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info" +# define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo" +# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_KEM_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KEM_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KEM_PARAM_IKME "ikme" +# define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING "hs_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm" +# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len" +# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" +# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_MAC_PARAM_CUSTOM "custom" +# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" +# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" +# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" +# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" +# define OSSL_MAC_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_MAC_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_MAC_PARAM_FIPS_NO_SHORT_MAC OSSL_PROV_PARAM_NO_SHORT_MAC +# define OSSL_MAC_PARAM_IV "iv" +# define OSSL_MAC_PARAM_KEY "key" +# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_MAC_PARAM_SALT "salt" +# define OSSL_MAC_PARAM_SIZE "size" +# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" +# define OSSL_MAC_PARAM_XOF "xof" +# define OSSL_OBJECT_PARAM_DATA "data" +# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" +# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" +# define OSSL_OBJECT_PARAM_DESC "desc" +# define OSSL_OBJECT_PARAM_INPUT_TYPE "input-type" +# define OSSL_OBJECT_PARAM_REFERENCE "reference" +# define OSSL_OBJECT_PARAM_TYPE "type" +# define OSSL_PASSPHRASE_PARAM_INFO "info" +# define OSSL_PKEY_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_PKEY_PARAM_BITS "bits" +# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" +# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm" +# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" +# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +# define OSSL_PKEY_PARAM_DIST_ID "distid" +# define OSSL_PKEY_PARAM_EC_A "a" +# define OSSL_PKEY_PARAM_EC_B "b" +# define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3" +# define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp" +# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" +# define OSSL_PKEY_PARAM_EC_ENCODING "encoding" +# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +# define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_PARAM_EC_ORDER "order" +# define OSSL_PKEY_PARAM_EC_P "p" +# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +# define OSSL_PKEY_PARAM_EC_PUB_X "qx" +# define OSSL_PKEY_PARAM_EC_PUB_Y "qy" +# define OSSL_PKEY_PARAM_EC_SEED "seed" +# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE +# define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +# define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_FFC_G "g" +# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +# define OSSL_PKEY_PARAM_FFC_H "hindex" +# define OSSL_PKEY_PARAM_FFC_P "p" +# define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +# define OSSL_PKEY_PARAM_FFC_Q "q" +# define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +# define OSSL_PKEY_PARAM_FFC_SEED "seed" +# define OSSL_PKEY_PARAM_FFC_TYPE "type" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +# define OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK "digest-check" +# define OSSL_PKEY_PARAM_FIPS_KEY_CHECK "key-check" +# define OSSL_PKEY_PARAM_FIPS_SIGN_CHECK "sign-check" +# define OSSL_PKEY_PARAM_GROUP_NAME "group" +# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" +# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +# define OSSL_PKEY_PARAM_MAX_SIZE "max-size" +# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +# define OSSL_PKEY_PARAM_ML_DSA_INPUT_FORMATS "ml-dsa.input_formats" +# define OSSL_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS "ml-dsa.output_formats" +# define OSSL_PKEY_PARAM_ML_DSA_PREFER_SEED "ml-dsa.prefer_seed" +# define OSSL_PKEY_PARAM_ML_DSA_RETAIN_SEED "ml-dsa.retain_seed" +# define OSSL_PKEY_PARAM_ML_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE "ml-kem.import_pct_type" +# define OSSL_PKEY_PARAM_ML_KEM_INPUT_FORMATS "ml-kem.input_formats" +# define OSSL_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS "ml-kem.output_formats" +# define OSSL_PKEY_PARAM_ML_KEM_PREFER_SEED "ml-kem.prefer_seed" +# define OSSL_PKEY_PARAM_ML_KEM_RETAIN_SEED "ml-kem.retain_seed" +# define OSSL_PKEY_PARAM_ML_KEM_SEED "seed" +# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +# define OSSL_PKEY_PARAM_PRIV_KEY "priv" +# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_PUB_KEY "pub" +# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9" +# define OSSL_PKEY_PARAM_RSA_D "d" +# define OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ "rsa-derive-from-pq" +# define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_RSA_E "e" +# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1" +# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10" +# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2" +# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3" +# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4" +# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5" +# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6" +# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7" +# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8" +# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9" +# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1" +# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10" +# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2" +# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3" +# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4" +# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5" +# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6" +# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7" +# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8" +# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9" +# define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC +# define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_PKEY_PARAM_RSA_N "n" +# define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" +# define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1" +# define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2" +# define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1" +# define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2" +# define OSSL_PKEY_PARAM_RSA_TEST_XP "xp" +# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" +# define OSSL_PKEY_PARAM_SLH_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG +# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +# define OSSL_PROV_PARAM_BUILDINFO "buildinfo" +# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" +# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" +# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" +# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" +# define OSSL_PROV_PARAM_DSA_SIGN_DISABLED "dsa-sign-disabled" +# define OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK "ecdh-cofactor-check" +# define OSSL_PROV_PARAM_HKDF_DIGEST_CHECK "hkdf-digest-check" +# define OSSL_PROV_PARAM_HKDF_KEY_CHECK "hkdf-key-check" +# define OSSL_PROV_PARAM_HMAC_KEY_CHECK "hmac-key-check" +# define OSSL_PROV_PARAM_KBKDF_KEY_CHECK "kbkdf-key-check" +# define OSSL_PROV_PARAM_KMAC_KEY_CHECK "kmac-key-check" +# define OSSL_PROV_PARAM_NAME "name" +# define OSSL_PROV_PARAM_NO_SHORT_MAC "no-short-mac" +# define OSSL_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK "pbkdf2-lower-bound-check" +# define OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED "rsa-pkcs15-pad-disabled" +# define OSSL_PROV_PARAM_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED "rsa-sign-x931-pad-disabled" +# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" +# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" +# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" +# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" +# define OSSL_PROV_PARAM_SIGNATURE_DIGEST_CHECK "signature-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_DIGEST_CHECK "sshkdf-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_KEY_CHECK "sshkdf-key-check" +# define OSSL_PROV_PARAM_SSKDF_DIGEST_CHECK "sskdf-digest-check" +# define OSSL_PROV_PARAM_SSKDF_KEY_CHECK "sskdf-key-check" +# define OSSL_PROV_PARAM_STATUS "status" +# define OSSL_PROV_PARAM_TDES_ENCRYPT_DISABLED "tdes-encrypt-disabled" +# define OSSL_PROV_PARAM_TLS13_KDF_DIGEST_CHECK "tls13-kdf-digest-check" +# define OSSL_PROV_PARAM_TLS13_KDF_KEY_CHECK "tls13-kdf-key-check" +# define OSSL_PROV_PARAM_TLS1_PRF_DIGEST_CHECK "tls1-prf-digest-check" +# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" +# define OSSL_PROV_PARAM_TLS1_PRF_KEY_CHECK "tls1-prf-key-check" +# define OSSL_PROV_PARAM_VERSION "version" +# define OSSL_PROV_PARAM_X942KDF_KEY_CHECK "x942kdf-key-check" +# define OSSL_PROV_PARAM_X963KDF_DIGEST_CHECK "x963kdf-digest-check" +# define OSSL_PROV_PARAM_X963KDF_KEY_CHECK "x963kdf-key-check" +# define OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_RAND_PARAM_GENERATE "generate" +# define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +# define OSSL_RAND_PARAM_STATE "state" +# define OSSL_RAND_PARAM_STRENGTH "strength" +# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" +# define OSSL_SIGNATURE_PARAM_ADD_RANDOM "additional-random" +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID OSSL_PKEY_PARAM_ALGORITHM_ID +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string" +# define OSSL_SIGNATURE_PARAM_DETERMINISTIC "deterministic" +# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE +# define OSSL_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_SIGNATURE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_CHECK OSSL_PKEY_PARAM_FIPS_SIGN_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK "sign-x931-pad-check" +# define OSSL_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE "verify-message" +# define OSSL_SIGNATURE_PARAM_INSTANCE "instance" +# define OSSL_SIGNATURE_PARAM_KAT "kat" +# define OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING "message-encoding" +# define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_SIGNATURE_PARAM_MU "mu" +# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type" +# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +# define OSSL_SIGNATURE_PARAM_SIGNATURE "signature" +# define OSSL_SIGNATURE_PARAM_TEST_ENTROPY "test-entropy" +# define OSSL_SKEY_PARAM_KEY_LENGTH "key-length" +# define OSSL_SKEY_PARAM_RAW_BYTES "raw-bytes" +# define OSSL_STORE_PARAM_ALIAS "alias" +# define OSSL_STORE_PARAM_DIGEST "digest" +# define OSSL_STORE_PARAM_EXPECT "expect" +# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" +# define OSSL_STORE_PARAM_INPUT_TYPE "input-type" +# define OSSL_STORE_PARAM_ISSUER "name" +# define OSSL_STORE_PARAM_PROPERTIES "properties" +# define OSSL_STORE_PARAM_SERIAL "serial" +# define OSSL_STORE_PARAM_SUBJECT "subject" + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/crmf.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/crmf.h index 0419170bb99974..9b6f13fac240b2 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/crmf.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/crmf.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/crmf.h.in * - * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -26,6 +26,7 @@ # include # include # include /* for GENERAL_NAME etc. */ +# include /* explicit #includes not strictly needed since implied by the above: */ # include @@ -43,9 +44,12 @@ extern "C" { # define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 # define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 - typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) + +typedef struct ossl_crmf_encryptedkey_st OSSL_CRMF_ENCRYPTEDKEY; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDKEY) + typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) @@ -77,6 +81,36 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) #define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; +void OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(OSSL_CRMF_ATTRIBUTETYPEANDVALUE *v); +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value(sk, idx) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new(cmp) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_null() ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (n)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete(sk, i) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (i))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete_ptr(sk, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_shift(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk),ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), (idx)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set(sk, idx, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), pnum) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup(sk) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) + + typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER) typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY; @@ -118,6 +152,7 @@ typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO) typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTTEMPLATE) typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS) @@ -198,12 +233,14 @@ int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, int rid, int acceptRAVerified, OSSL_LIB_CTX *libctx, const char *propq); OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); -const ASN1_INTEGER -*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const ASN1_INTEGER +*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); X509_EXTENSIONS *OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME @@ -215,10 +252,24 @@ int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl, const X509_NAME *subject, const X509_NAME *issuer, const ASN1_INTEGER *serial); -X509 -*OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, - OSSL_LIB_CTX *libctx, const char *propq, - EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDKEY_get1_encCert(const OSSL_CRMF_ENCRYPTEDKEY *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, unsigned int flags); +unsigned char +*OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *enc, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, int *outlen); +EVP_PKEY *OSSL_CRMF_ENCRYPTEDKEY_get1_pkey(const OSSL_CRMF_ENCRYPTEDKEY *encryptedKey, + X509_STORE *ts, STACK_OF(X509) *extra, EVP_PKEY *pkey, + X509 *cert, ASN1_OCTET_STRING *secret, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSG_centralkeygen_requested(const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr); +# ifndef OPENSSL_NO_CMS +OSSL_CRMF_ENCRYPTEDKEY *OSSL_CRMF_ENCRYPTEDKEY_init_envdata(CMS_EnvelopedData *envdata); +# endif # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/crypto.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/crypto.h index 668c52cfee1f15..2a825986bf3a55 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/crypto.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/crypto.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/crypto.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -85,9 +85,15 @@ int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock); void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock); int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_add64(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_and(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, CRYPTO_RWLOCK *lock); int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, CRYPTO_RWLOCK *lock); /* No longer needed, so this is a no-op */ #define OPENSSL_malloc_init() while(0) continue @@ -96,6 +102,9 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_zalloc(num) \ CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_aligned_alloc(num, alignment, freeptr) \ + CRYPTO_aligned_alloc(num, alignment, freeptr, \ + OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_realloc(addr, num) \ CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_clear_realloc(addr, old_num, num) \ @@ -124,6 +133,7 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); size_t OPENSSL_strnlen(const char *str, size_t maxlen); +int OPENSSL_strtoul(const char *str, char **endptr, int base, unsigned long *num); int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength, const unsigned char *buf, size_t buflen, const char sep); @@ -160,6 +170,7 @@ const char *OpenSSL_version(int type); # define OPENSSL_FULL_VERSION_STRING 7 # define OPENSSL_MODULES_DIR 8 # define OPENSSL_CPU_INFO 9 +# define OPENSSL_WINCTX 10 const char *OPENSSL_info(int type); /* @@ -174,6 +185,7 @@ const char *OPENSSL_info(int type); # define OPENSSL_INFO_LIST_SEPARATOR 1006 # define OPENSSL_INFO_SEED_SOURCE 1007 # define OPENSSL_INFO_CPU_SETTINGS 1008 +# define OPENSSL_INFO_WINDOWS_CONTEXT 1009 int OPENSSL_issetugid(void); @@ -341,11 +353,14 @@ void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn, CRYPTO_realloc_fn *realloc_fn, CRYPTO_free_fn *free_fn); -void *CRYPTO_malloc(size_t num, const char *file, int line); -void *CRYPTO_zalloc(size_t num, const char *file, int line); -void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); -char *CRYPTO_strdup(const char *str, const char *file, int line); -char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc(size_t num, size_t align, + void **freeptr, const char *file, + int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strdup(const char *str, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); void CRYPTO_free(void *ptr, const char *file, int line); void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line); void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); @@ -354,8 +369,8 @@ void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, int CRYPTO_secure_malloc_init(size_t sz, size_t minsize); int CRYPTO_secure_malloc_done(void); -void *CRYPTO_secure_malloc(size_t num, const char *file, int line); -void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); void CRYPTO_secure_free(void *ptr, const char *file, int line); void CRYPTO_secure_clear_free(void *ptr, size_t num, const char *file, int line); @@ -376,6 +391,9 @@ void OPENSSL_cleanse(void *ptr, size_t len); # define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */ # define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */ +/* max allowed length for value of OPENSSL_MALLOC_FAILURES env var. */ +# define CRYPTO_MEM_CHECK_MAX_FS 256 + void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); # ifndef OPENSSL_NO_DEPRECATED_3_0 # define OPENSSL_mem_debug_push(info) \ @@ -551,6 +569,13 @@ int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file); void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); +int OSSL_LIB_CTX_get_conf_diagnostics(OSSL_LIB_CTX *ctx); +void OSSL_LIB_CTX_set_conf_diagnostics(OSSL_LIB_CTX *ctx, int value); + +void OSSL_sleep(uint64_t millis); + + +void *OSSL_LIB_CTX_get_data(OSSL_LIB_CTX *ctx, int index); # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/ct.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/ct.h index 15a276e33ff7ca..d29dbc78997c0b 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/ct.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/ct.h @@ -133,7 +133,7 @@ typedef enum { */ CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); - + /* * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library * context and property query string is used. diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/err.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/err.h index 2abf2483488181..daca18e7b757b0 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/err.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/err.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -372,7 +372,7 @@ typedef struct ERR_string_data_st { } ERR_STRING_DATA; DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); -#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp))) +#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp)), lh_ERR_STRING_DATA_hash_thunk, lh_ERR_STRING_DATA_comp_thunk, lh_ERR_STRING_DATA_doall_thunk, lh_ERR_STRING_DATA_doall_arg_thunk)) #define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) @@ -496,6 +496,14 @@ int ERR_get_next_error_library(void); int ERR_set_mark(void); int ERR_pop_to_mark(void); int ERR_clear_last_mark(void); +int ERR_count_to_mark(void); +int ERR_pop(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); #ifdef __cplusplus } diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/fipskey.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/fipskey.h index bf03682482fdd5..6939fd3c55ba6e 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/fipskey.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/fipskey.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/fipskey.h.in * - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -29,6 +29,11 @@ extern "C" { */ #define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" +/* + * The FIPS provider vendor name, as a string. + */ +#define FIPS_VENDOR "OpenSSL FIPS Provider" + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/lhash.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/lhash.h index 39dd6254acdeb6..62c55b20fd9716 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/lhash.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/lhash.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -24,6 +24,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -31,9 +34,13 @@ extern "C" { typedef struct lhash_node_st OPENSSL_LH_NODE; typedef int (*OPENSSL_LH_COMPFUNC) (const void *, const void *); +typedef int (*OPENSSL_LH_COMPFUNCTHUNK) (const void *, const void *, OPENSSL_LH_COMPFUNC cfn); typedef unsigned long (*OPENSSL_LH_HASHFUNC) (const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNCTHUNK) (const void *, OPENSSL_LH_HASHFUNC hfn); typedef void (*OPENSSL_LH_DOALL_FUNC) (void *); +typedef void (*OPENSSL_LH_DOALL_FUNC_THUNK) (void *, OPENSSL_LH_DOALL_FUNC doall); typedef void (*OPENSSL_LH_DOALL_FUNCARG) (void *, void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG_THUNK) (void *, void *, OPENSSL_LH_DOALL_FUNCARG doall); typedef struct lhash_st OPENSSL_LHASH; /* @@ -79,26 +86,40 @@ typedef struct lhash_st OPENSSL_LHASH; int OPENSSL_LH_error(OPENSSL_LHASH *lh); OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +OPENSSL_LHASH *OPENSSL_LH_set_thunks(OPENSSL_LHASH *lh, + OPENSSL_LH_HASHFUNCTHUNK hw, + OPENSSL_LH_COMPFUNCTHUNK cw, + OPENSSL_LH_DOALL_FUNC_THUNK daw, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw); void OPENSSL_LH_free(OPENSSL_LHASH *lh); void OPENSSL_LH_flush(OPENSSL_LHASH *lh); void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); -void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg_thunk(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw, + OPENSSL_LH_DOALL_FUNCARG fn, void *arg); + unsigned long OPENSSL_LH_strhash(const char *c); unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); # ifndef OPENSSL_NO_STDIO -void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# endif +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # endif -void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define _LHASH OPENSSL_LHASH @@ -129,110 +150,190 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); /* Helper macro for internal use */ # define DEFINE_LHASH_OF_INTERNAL(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ typedef void (*lh_##type##_doallfunc)(type *a); \ - static ossl_unused ossl_inline type *ossl_check_##type##_lh_plain_type(type *ptr) \ + static ossl_inline unsigned long lh_##type##_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static ossl_inline int lh_##type##_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_inline void lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_inline void lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline type *\ + ossl_check_##type##_lh_plain_type(type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const type *ossl_check_const_##type##_lh_plain_type(const type *ptr) \ + static ossl_unused ossl_inline const type * \ + ossl_check_const_##type##_lh_plain_type(const type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const OPENSSL_LHASH *ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline const OPENSSL_LHASH * \ + ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ { \ return (const OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LHASH *ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline OPENSSL_LHASH * \ + ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ { \ return (OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ + static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC \ + ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ { \ return (OPENSSL_LH_COMPFUNC)cmp; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ + static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC \ + ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ { \ return (OPENSSL_LH_HASHFUNC)hfn; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ + static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC \ + ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ { \ return (OPENSSL_LH_DOALL_FUNC)dfn; \ } \ LHASH_OF(type) -# define DEFINE_LHASH_OF(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ - static ossl_unused ossl_inline LHASH_OF(type) *lh_##type##_new(unsigned long (*hfn)(const type *), \ - int (*cfn)(const type *, const type *)) \ +# ifndef OPENSSL_NO_DEPRECATED_3_1 +# define DEFINE_LHASH_OF_DEPRECATED(type) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ - return (LHASH_OF(type) *) \ - OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ - static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } +# else +# define DEFINE_LHASH_OF_DEPRECATED(type) +# endif + +# define DEFINE_LHASH_OF_EX(type) \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ + static unsigned long \ + lh_##type##_hfn_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static int lh_##type##_cfn_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_free(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_flush(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_flush(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ { \ return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline int \ + lh_##type##_error(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_num_items(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_get_down_load(LHASH_OF(type) *lh) \ { \ - OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ { \ - OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ } \ - static ossl_unused ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ { \ - OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ { \ - return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ } \ - static ossl_unused ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall(LHASH_OF(type) *lh, void (*doall)(type *)) \ { \ - OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ - void (*doall)(type *)) \ + static ossl_unused ossl_inline LHASH_OF(type) * \ + lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ { \ - OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \ + lh_##type##_hfn_thunk, lh_##type##_cfn_thunk, \ + lh_##type##_doall_thunk, \ + lh_##type##_doall_arg_thunk); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall_arg(LHASH_OF(type) *lh, \ - void (*doallarg)(type *, void *), \ - void *arg) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg(LHASH_OF(type) *lh, \ + void (*doallarg)(type *, void *), void *arg) \ { \ OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ } \ LHASH_OF(type) +# define DEFINE_LHASH_OF(type) \ + DEFINE_LHASH_OF_EX(type); \ + DEFINE_LHASH_OF_DEPRECATED(type) \ + LHASH_OF(type) + #define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ int_implement_lhash_doall(type, argtype, const type) @@ -240,17 +341,26 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); int_implement_lhash_doall(type, argtype, type) #define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype##_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG fn) \ + { \ + void (*fn_conv)(cbargtype *, argtype *) = (void (*)(cbargtype *, argtype *))fn; \ + fn_conv((cbargtype *)node, (argtype *)arg); \ + } \ static ossl_unused ossl_inline void \ lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ void (*fn)(cbargtype *, argtype *), \ argtype *arg) \ { \ - OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNCARG)fn, (void *)arg); \ + OPENSSL_LH_doall_arg_thunk((OPENSSL_LHASH *)lh, \ + lh_##type##_doall_##argtype##_thunk, \ + (OPENSSL_LH_DOALL_FUNCARG)fn, \ + (void *)arg); \ } \ LHASH_OF(type) DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); -#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp)), lh_OPENSSL_STRING_hash_thunk, lh_OPENSSL_STRING_comp_thunk, lh_OPENSSL_STRING_doall_thunk, lh_OPENSSL_STRING_doall_arg_thunk)) #define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) @@ -265,7 +375,7 @@ DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); #define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) #define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); -#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp)), lh_OPENSSL_CSTRING_hash_thunk, lh_OPENSSL_CSTRING_comp_thunk, lh_OPENSSL_CSTRING_doall_thunk, lh_OPENSSL_CSTRING_doall_arg_thunk)) #define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/opensslv.h index 94f44daf376f8e..8f0439fc042ad0 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/opensslv.h @@ -28,8 +28,8 @@ extern "C" { * These macros express version number MAJOR.MINOR.PATCH exactly */ # define OPENSSL_VERSION_MAJOR 3 -# define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 17 +# define OPENSSL_VERSION_MINOR 5 +# define OPENSSL_VERSION_PATCH 2 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.17" -# define OPENSSL_FULL_VERSION_STR "3.0.17" +# define OPENSSL_VERSION_STR "3.5.2" +# define OPENSSL_FULL_VERSION_STR "3.5.2" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "1 Jul 2025" +# define OPENSSL_RELEASE_DATE "5 Aug 2025" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.17 1 Jul 2025" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.2 5 Aug 2025" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/pkcs12.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/pkcs12.h index 80369818c8ecdc..35d04f039366ce 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/pkcs12.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/pkcs12.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/pkcs12.h.in * - * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -41,6 +44,7 @@ extern "C" { # define PKCS12_MAC_KEY_LENGTH 20 +/* The macro is expected to be used only internally. Kept for backwards compatibility. */ # define PKCS12_SALT_LEN 8 /* It's not clear if these are actually needed... */ @@ -130,7 +134,9 @@ int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); const STACK_OF(PKCS12_SAFEBAG) * PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); @@ -218,6 +224,7 @@ ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); const STACK_OF(X509_ATTRIBUTE) * PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, const char *pass, int passlen, const unsigned char *in, int inlen, @@ -285,6 +292,9 @@ int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, unsigned char *salt, int saltlen, int iter, const EVP_MD *md_type); +int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type, const char *prf_md_name); int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, int saltlen, const EVP_MD *md_type); unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, @@ -305,6 +315,7 @@ DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) void PKCS12_PBE_add(void); int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype); @@ -312,6 +323,11 @@ PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype, OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/pkcs7.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/pkcs7.h index 0a95a93e59e262..641d9411a47354 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/pkcs7.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/pkcs7.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/pkcs7.h.in * - * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -28,6 +28,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -131,8 +134,8 @@ SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INF typedef struct pkcs7_signed_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; struct pkcs7_st *contents; } PKCS7_SIGNED; @@ -158,8 +161,8 @@ typedef struct pkcs7_enveloped_st { typedef struct pkcs7_signedandenveloped_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; PKCS7_ENC_CONTENT *enc_data; STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; @@ -200,7 +203,7 @@ typedef struct pkcs7_st { /* NID_pkcs7_data */ ASN1_OCTET_STRING *data; /* NID_pkcs7_signed */ - PKCS7_SIGNED *sign; + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ /* NID_pkcs7_enveloped */ PKCS7_ENVELOPE *enveloped; /* NID_pkcs7_signedAndEnveloped */ @@ -341,13 +344,13 @@ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, const EVP_MD *dgst); int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); -int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); -int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); int PKCS7_content_new(PKCS7 *p7, int nid); int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, - X509 *x509); + X509 *signer); BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/ssl.h index 7e9ca09bbf39f0..6396681867d76c 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/ssl.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/ssl.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/ssl.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -24,6 +24,7 @@ # endif # include +# include # include # include # include @@ -42,6 +43,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -231,10 +235,8 @@ typedef struct ssl_cipher_st SSL_CIPHER; typedef struct ssl_session_st SSL_SESSION; typedef struct tls_sigalgs_st TLS_SIGALGS; typedef struct ssl_conf_ctx_st SSL_CONF_CTX; -typedef struct ssl_comp_st SSL_COMP; STACK_OF(SSL_CIPHER); -STACK_OF(SSL_COMP); /* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ typedef struct srtp_protection_profile_st { @@ -278,28 +280,31 @@ typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, /* Extension context codes */ /* This extension is only allowed in TLS */ -#define SSL_EXT_TLS_ONLY 0x0001 +#define SSL_EXT_TLS_ONLY 0x00001 /* This extension is only allowed in DTLS */ -#define SSL_EXT_DTLS_ONLY 0x0002 +#define SSL_EXT_DTLS_ONLY 0x00002 /* Some extensions may be allowed in DTLS but we don't implement them for it */ -#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 /* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ -#define SSL_EXT_SSL3_ALLOWED 0x0008 +#define SSL_EXT_SSL3_ALLOWED 0x00008 /* Extension is only defined for TLS1.2 and below */ -#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 /* Extension is only defined for TLS1.3 and above */ -#define SSL_EXT_TLS1_3_ONLY 0x0020 +#define SSL_EXT_TLS1_3_ONLY 0x00020 /* Ignore this extension during parsing if we are resuming */ -#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 -#define SSL_EXT_CLIENT_HELLO 0x0080 +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 /* Really means TLS1.2 or below */ -#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 -#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 -#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 -#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 -#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 -#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 -#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 /* Typedefs for handling custom extensions */ @@ -404,7 +409,7 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); */ # define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_BIT(22) /* - * If set, a server will allow a client to issue a SSLv3.0 version + * If set, a server will allow a client to issue an SSLv3.0 version * number as latest version supported in the premaster secret, even when * TLSv1.0 (version 3.1) was announced in the client hello. Normally * this is forbidden to prevent version rollback attacks. @@ -430,6 +435,19 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); * interoperability with CryptoPro CSP 3.x */ # define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +# define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +# define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) + /* Enable KTLS TX zerocopy on Linux */ +# define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) + +#define SSL_OP_PREFER_NO_DHE_KEX SSL_OP_BIT(35) /* * Option "collections." @@ -574,6 +592,8 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); # define CERT_PKEY_CERT_TYPE 0x400 /* Cert chain suitable to Suite B */ # define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +# define CERT_PKEY_RPK 0x1000 # define SSL_CONF_FLAG_CMDLINE 0x1 # define SSL_CONF_FLAG_FILE 0x2 @@ -965,6 +985,7 @@ uint32_t SSL_get_recv_max_early_data(const SSL *s); # include /* This is mostly sslv3 with a few tweaks */ # include /* Datagram TLS */ # include /* Support for the use_srtp extension */ +# include #ifdef __cplusplus extern "C" { @@ -1000,32 +1021,6 @@ SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) #define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) #define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) #define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) -SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) -#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) -#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) -#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) -#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) -#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) -#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) -#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) -#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) -#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) -#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) -#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) /* compatibility */ @@ -1066,6 +1061,7 @@ typedef enum { DTLS_ST_CR_HELLO_VERIFY_REQUEST, TLS_ST_CR_SRVR_HELLO, TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, TLS_ST_CR_CERT_STATUS, TLS_ST_CR_KEY_EXCH, TLS_ST_CR_CERT_REQ, @@ -1075,6 +1071,7 @@ typedef enum { TLS_ST_CR_FINISHED, TLS_ST_CW_CLNT_HELLO, TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, TLS_ST_CW_KEY_EXCH, TLS_ST_CW_CERT_VRFY, TLS_ST_CW_CHANGE, @@ -1085,10 +1082,12 @@ typedef enum { DTLS_ST_SW_HELLO_VERIFY_REQUEST, TLS_ST_SW_SRVR_HELLO, TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, TLS_ST_SW_KEY_EXCH, TLS_ST_SW_CERT_REQ, TLS_ST_SW_SRVR_DONE, TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, TLS_ST_SR_KEY_EXCH, TLS_ST_SR_CERT_VRFY, TLS_ST_SR_NEXT_PROTO, @@ -1380,9 +1379,13 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_CTRL_GET_SIGNATURE_NID 132 # define SSL_CTRL_GET_TMP_KEY 133 # define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +# define SSL_CTRL_GET_IANA_GROUPS 135 # define SSL_CTRL_SET_RETRY_VERIFY 136 # define SSL_CTRL_GET_VERIFY_CERT_STORE 137 # define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +# define SSL_CTRL_GET0_IMPLEMENTED_GROUPS 139 +# define SSL_CTRL_GET_SIGNATURE_NAME 140 +# define SSL_CTRL_GET_PEER_SIGNATURE_NAME 141 # define SSL_CERT_SET_FIRST 1 # define SSL_CERT_SET_NEXT 2 # define SSL_CERT_SET_SERVER 3 @@ -1485,10 +1488,15 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get1_groups(s, glist) \ SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_IANA_GROUPS,0,(uint16_t **)(plst)) # define SSL_CTX_set1_groups(ctx, glist, glistlen) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) # define SSL_CTX_set1_groups_list(ctx, s) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s)) +# define SSL_CTX_get0_implemented_groups(ctx, all, out) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET0_IMPLEMENTED_GROUPS, all, \ + (STACK_OF(OPENSSL_CSTRING) *)(out)) # define SSL_set1_groups(s, glist, glistlen) \ SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist)) # define SSL_set1_groups_list(s, str) \ @@ -1520,8 +1528,12 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) (char *)(clist)) # define SSL_set1_client_certificate_types(s, clist, clistlen) \ SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist)) +# define SSL_get0_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn) +# define SSL_get0_peer_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_peer_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) # define SSL_get_peer_tmp_key(s, pk) \ @@ -1549,6 +1561,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get_max_proto_version(s) \ SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +const char *SSL_get0_group_name(SSL *s); const char *SSL_group_to_name(SSL *s, int id); /* Backwards compatibility, original 1.1.0 names */ @@ -1613,7 +1626,11 @@ void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); __owur int SSL_want(const SSL *s); __owur int SSL_clear(SSL *s); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()") void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); +#endif +void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm); __owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); __owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); @@ -1725,13 +1742,21 @@ __owur const char *SSL_state_string(const SSL *s); __owur const char *SSL_rstate_string(const SSL *s); __owur const char *SSL_state_string_long(const SSL *s); __owur const char *SSL_rstate_string_long(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_get_time_ex()") __owur long SSL_SESSION_get_time(const SSL_SESSION *s); +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_set_time_ex()") __owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +#endif __owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); __owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); __owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); __owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); +__owur time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s); +__owur time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t); + __owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); __owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, @@ -1783,6 +1808,9 @@ __owur int SSL_has_matching_session_id(const SSL *s, unsigned int id_len); SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); # ifdef OPENSSL_X509_H __owur X509 *SSL_get0_peer_certificate(const SSL *s); @@ -1840,6 +1868,8 @@ __owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, SSL *SSL_new(SSL_CTX *ctx); int SSL_up_ref(SSL *s); int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); __owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, unsigned int sid_ctx_len); @@ -1848,8 +1878,8 @@ __owur int SSL_set_purpose(SSL *ssl, int purpose); __owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); __owur int SSL_set_trust(SSL *ssl, int trust); -__owur int SSL_set1_host(SSL *s, const char *hostname); -__owur int SSL_add1_host(SSL *s, const char *hostname); +__owur int SSL_set1_host(SSL *s, const char *host); +__owur int SSL_add1_host(SSL *s, const char *host); __owur const char *SSL_get0_peername(SSL *s); void SSL_set_hostflags(SSL *s, unsigned int flags); @@ -1924,6 +1954,11 @@ OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg); void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, void *arg); +typedef int (*SSL_new_pending_conn_cb_fn) (SSL_CTX *ctx, SSL *new_ssl, + void *arg); +void SSL_CTX_set_new_pending_conn_cb(SSL_CTX *c, SSL_new_pending_conn_cb_fn cb, + void *arg); + int SSL_client_hello_isv2(SSL *s); unsigned int SSL_client_hello_get0_legacy_version(SSL *s); size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); @@ -1932,6 +1967,8 @@ size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); size_t SSL_client_hello_get0_compression_methods(SSL *s, const unsigned char **out); int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); int SSL_client_hello_get0_ext(SSL *s, unsigned int type, const unsigned char **out, size_t *outlen); @@ -1978,6 +2015,12 @@ long SSL_callback_ctrl(SSL *, int, void (*)(void)); long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); +# define SSL_WRITE_FLAG_CONCLUDE (1U << 0) + +__owur int SSL_write_ex2(SSL *s, const void *buf, size_t num, + uint64_t flags, + size_t *written); + # define SSL_EARLY_DATA_NOT_SENT 0 # define SSL_EARLY_DATA_REJECTED 1 # define SSL_EARLY_DATA_ACCEPTED 2 @@ -1986,6 +2029,7 @@ __owur int SSL_get_early_data_status(const SSL *s); __owur int SSL_get_error(const SSL *s, int ret_code); __owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); /* This sets the 'default' SSL version that SSL_new() will create */ # ifndef OPENSSL_NO_DEPRECATED_3_0 @@ -2281,6 +2325,8 @@ void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); +int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size, + size_t hs_block_size); int SSL_set_record_padding_callback(SSL *ssl, size_t (*cb) (SSL *ssl, int type, @@ -2288,12 +2334,255 @@ int SSL_set_record_padding_callback(SSL *ssl, void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); void *SSL_get_record_padding_callback_arg(const SSL *ssl); int SSL_set_block_padding(SSL *ssl, size_t block_size); - +int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size, + size_t hs_block_size); int SSL_set_num_tickets(SSL *s, size_t num_tickets); size_t SSL_get_num_tickets(const SSL *s); int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +__owur int SSL_is_listener(SSL *ssl); +__owur SSL *SSL_get0_listener(SSL *s); +#define SSL_LISTENER_FLAG_NO_VALIDATE (1UL << 1) +__owur SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags); +__owur SSL *SSL_new_listener_from(SSL *ssl, uint64_t flags); +__owur SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags); +#define SSL_ACCEPT_CONNECTION_NO_BLOCK (1UL << 0) +__owur SSL *SSL_accept_connection(SSL *ssl, uint64_t flags); +__owur size_t SSL_get_accept_connection_queue_len(SSL *ssl); +__owur int SSL_listen(SSL *ssl); + +__owur int SSL_is_domain(SSL *s); +__owur SSL *SSL_get0_domain(SSL *s); +__owur SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags); + +#define SSL_DOMAIN_FLAG_SINGLE_THREAD (1U << 0) +#define SSL_DOMAIN_FLAG_MULTI_THREAD (1U << 1) +#define SSL_DOMAIN_FLAG_THREAD_ASSISTED (1U << 2) +#define SSL_DOMAIN_FLAG_BLOCKING (1U << 3) +#define SSL_DOMAIN_FLAG_LEGACY_BLOCKING (1U << 4) + +__owur int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t domain_flags); +__owur int SSL_CTX_get_domain_flags(const SSL_CTX *ctx, uint64_t *domain_flags); +__owur int SSL_get_domain_flags(const SSL *ssl, uint64_t *domain_flags); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +# ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +# endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + +# define SSL_VALUE_CLASS_GENERIC 0 +# define SSL_VALUE_CLASS_FEATURE_REQUEST 1 +# define SSL_VALUE_CLASS_FEATURE_PEER_REQUEST 2 +# define SSL_VALUE_CLASS_FEATURE_NEGOTIATED 3 + +# define SSL_VALUE_NONE 0 +# define SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL 1 +# define SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL 2 +# define SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL 3 +# define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL 4 +# define SSL_VALUE_QUIC_IDLE_TIMEOUT 5 +# define SSL_VALUE_EVENT_HANDLING_MODE 6 +# define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7 +# define SSL_VALUE_STREAM_WRITE_BUF_USED 8 +# define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9 + +# define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0 +# define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1 +# define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT 2 + +int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v); +int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v); + +# define SSL_get_generic_value_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_set_generic_value_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_get_feature_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_set_feature_request_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_get_feature_peer_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, (id), (v)) +# define SSL_get_feature_negotiated_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_NEGOTIATED, (id), (v)) + +# define SSL_get_quic_stream_bidi_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_bidi_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, \ + (value)) + +# define SSL_get_event_handling_mode(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) +# define SSL_set_event_handling_mode(ssl, value) \ + SSL_set_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) + +# define SSL_get_stream_write_buf_size(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_SIZE, \ + (value)) +# define SSL_get_stream_write_buf_used(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_USED, \ + (value)) +# define SSL_get_stream_write_buf_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_AVAIL, \ + (value)) + +# define SSL_POLL_EVENT_NONE 0 + +# define SSL_POLL_EVENT_F (1U << 0) /* F (Failure) */ +# define SSL_POLL_EVENT_EL (1U << 1) /* EL (Exception on Listener) */ +# define SSL_POLL_EVENT_EC (1U << 2) /* EC (Exception on Conn) */ +# define SSL_POLL_EVENT_ECD (1U << 3) /* ECD (Exception on Conn Drained) */ +# define SSL_POLL_EVENT_ER (1U << 4) /* ER (Exception on Read) */ +# define SSL_POLL_EVENT_EW (1U << 5) /* EW (Exception on Write) */ +# define SSL_POLL_EVENT_R (1U << 6) /* R (Readable) */ +# define SSL_POLL_EVENT_W (1U << 7) /* W (Writable) */ +# define SSL_POLL_EVENT_IC (1U << 8) /* IC (Incoming Connection) */ +# define SSL_POLL_EVENT_ISB (1U << 9) /* ISB (Incoming Stream: Bidi) */ +# define SSL_POLL_EVENT_ISU (1U << 10) /* ISU (Incoming Stream: Uni) */ +# define SSL_POLL_EVENT_OSB (1U << 11) /* OSB (Outgoing Stream: Bidi) */ +# define SSL_POLL_EVENT_OSU (1U << 12) /* OSU (Outgoing Stream: Uni) */ + +# define SSL_POLL_EVENT_RW (SSL_POLL_EVENT_R | SSL_POLL_EVENT_W) +# define SSL_POLL_EVENT_RE (SSL_POLL_EVENT_R | SSL_POLL_EVENT_ER) +# define SSL_POLL_EVENT_WE (SSL_POLL_EVENT_W | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_RWE (SSL_POLL_EVENT_RE | SSL_POLL_EVENT_WE) +# define SSL_POLL_EVENT_E (SSL_POLL_EVENT_EL | SSL_POLL_EVENT_EC \ + | SSL_POLL_EVENT_ER | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_IS (SSL_POLL_EVENT_ISB | SSL_POLL_EVENT_ISU) +# define SSL_POLL_EVENT_ISE (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_EC) +# define SSL_POLL_EVENT_I (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_IC) +# define SSL_POLL_EVENT_OS (SSL_POLL_EVENT_OSB | SSL_POLL_EVENT_OSU) +# define SSL_POLL_EVENT_OSE (SSL_POLL_EVENT_OS | SSL_POLL_EVENT_EC) + +typedef struct ssl_poll_item_st { + BIO_POLL_DESCRIPTOR desc; + uint64_t events, revents; +} SSL_POLL_ITEM; + +# define SSL_POLL_FLAG_NO_HANDLE_EVENTS (1U << 0) + +__owur int SSL_poll(SSL_POLL_ITEM *items, + size_t num_items, + size_t stride, + const struct timeval *timeout, + uint64_t flags, + size_t *result_count); + +static ossl_inline ossl_unused BIO_POLL_DESCRIPTOR +SSL_as_poll_descriptor(SSL *s) +{ + BIO_POLL_DESCRIPTOR d; + + d.type = BIO_POLL_DESCRIPTOR_TYPE_SSL; + d.value.ssl = s; + return d; +} + # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define SSL_cache_hit(s) SSL_session_reused(s) # endif @@ -2593,6 +2882,51 @@ void SSL_set_allow_early_data_cb(SSL *s, const char *OSSL_default_cipher_list(void); const char *OSSL_default_ciphersuites(void); +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + +/* + * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used. + */ +# define OSSL_RECORD_PROTECTION_LEVEL_NONE 0 +# define OSSL_RECORD_PROTECTION_LEVEL_EARLY 1 +# define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE 2 +# define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3 + +int SSL_set_quic_tls_cbs(SSL *s, const OSSL_DISPATCH *qtdis, void *arg); +int SSL_set_quic_tls_transport_params(SSL *s, + const unsigned char *params, + size_t params_len); + +int SSL_set_quic_tls_early_data_enabled(SSL *s, int enabled); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/x509.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/x509.h index 0f2353c821aa9b..5e9c548c48d65b 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/x509.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/x509.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/x509.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -40,6 +40,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -162,16 +165,24 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) # define X509_FILETYPE_ASN1 2 # define X509_FILETYPE_DEFAULT 3 -# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 -# define X509v3_KU_NON_REPUDIATION 0x0040 -# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 -# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 -# define X509v3_KU_KEY_AGREEMENT 0x0008 -# define X509v3_KU_KEY_CERT_SIGN 0x0004 -# define X509v3_KU_CRL_SIGN 0x0002 -# define X509v3_KU_ENCIPHER_ONLY 0x0001 -# define X509v3_KU_DECIPHER_ONLY 0x8000 -# define X509v3_KU_UNDEF 0xffff +/*- + * : + * The KeyUsage BITSTRING is treated as a little-endian integer, hence bit `0` + * is 0x80, while bit `7` is 0x01 (the LSB of the integer value), bit `8` is + * then the MSB of the second octet, or 0x8000. + */ +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 /* (0) */ +# define X509v3_KU_NON_REPUDIATION 0x0040 /* (1) */ +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 /* (2) */ +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 /* (3) */ +# define X509v3_KU_KEY_AGREEMENT 0x0008 /* (4) */ +# define X509v3_KU_KEY_CERT_SIGN 0x0004 /* (5) */ +# define X509v3_KU_CRL_SIGN 0x0002 /* (6) */ +# define X509v3_KU_ENCIPHER_ONLY 0x0001 /* (7) */ +# define X509v3_KU_DECIPHER_ONLY 0x8000 /* (8) */ +# ifndef OPENSSL_NO_DEPRECATED_3_4 +# define X509v3_KU_UNDEF 0xffff /* vestigial, not used */ +# endif struct X509_algor_st { ASN1_OBJECT *algorithm; @@ -462,7 +473,12 @@ typedef struct PBKDF2PARAM_st { X509_ALGOR *prf; } PBKDF2PARAM; -#ifndef OPENSSL_NO_SCRYPT +typedef struct { + X509_ALGOR *keyDerivationFunc; + X509_ALGOR *messageAuthScheme; +} PBMAC1PARAM; + +# ifndef OPENSSL_NO_SCRYPT typedef struct SCRYPT_PARAMS_st { ASN1_OCTET_STRING *salt; ASN1_INTEGER *costParameter; @@ -470,7 +486,7 @@ typedef struct SCRYPT_PARAMS_st { ASN1_INTEGER *parallelizationParameter; ASN1_INTEGER *keyLength; } SCRYPT_PARAMS; -#endif +# endif #ifdef __cplusplus } @@ -603,6 +619,8 @@ EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); # endif @@ -651,6 +669,8 @@ EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); DECLARE_ASN1_DUP_FUNCTION(X509) @@ -884,12 +904,12 @@ int X509_REQ_get_signature_nid(const X509_REQ *req); int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); -EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); int X509_REQ_extension_nid(int nid); int *X509_REQ_get_extension_nids(void); void X509_REQ_set_extension_nids(int *nids); -STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(OSSL_FUTURE_CONST X509_REQ *req); int X509_REQ_add_extensions_nid(X509_REQ *req, const STACK_OF(X509_EXTENSION) *exts, int nid); int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); @@ -950,13 +970,14 @@ X509_REVOKED_get0_extensions(const X509_REVOKED *r); X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); -int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); -int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey); +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); int X509_chain_check_suiteb(int *perror_depth, X509 *x, STACK_OF(X509) *chain, unsigned long flags); int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); @@ -1077,6 +1098,8 @@ X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, X509_EXTENSION *ex, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_extensions(STACK_OF(X509_EXTENSION) **target, + const STACK_OF(X509_EXTENSION) *exts); int X509_get_ext_count(const X509 *x); int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); @@ -1198,9 +1221,10 @@ X509 *X509_find_by_subject(STACK_OF(X509) *sk, const X509_NAME *name); DECLARE_ASN1_FUNCTIONS(PBEPARAM) DECLARE_ASN1_FUNCTIONS(PBE2PARAM) DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) -#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(PBMAC1PARAM) +# ifndef OPENSSL_NO_SCRYPT DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) -#endif +# endif int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, const unsigned char *salt, int saltlen); @@ -1237,6 +1261,7 @@ X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, int prf_nid, int keylen, OSSL_LIB_CTX *libctx); +PBKDF2PARAM *PBMAC1_get1_pbkdf2_param(const X509_ALGOR *macalg); /* PKCS#8 utilities */ DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) @@ -1262,6 +1287,8 @@ int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len); +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, int ptype, void *pval, unsigned char *penc, int penclen); diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/x509_acert.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/x509_acert.h new file mode 100644 index 00000000000000..efae82c8f6b635 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/x509_acert.h @@ -0,0 +1,294 @@ +/* + * WARNING: do not edit! + * Generated by makefile from include/openssl/x509_acert.h.in + * + * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_X509_ACERT_H +# define OPENSSL_X509_ACERT_H +# pragma once + +# include +# include +# include + +typedef struct X509_acert_st X509_ACERT; +typedef struct X509_acert_info_st X509_ACERT_INFO; +typedef struct ossl_object_digest_info_st OSSL_OBJECT_DIGEST_INFO; +typedef struct ossl_issuer_serial_st OSSL_ISSUER_SERIAL; +typedef struct X509_acert_issuer_v2form_st X509_ACERT_ISSUER_V2FORM; + +DECLARE_ASN1_FUNCTIONS(X509_ACERT) +DECLARE_ASN1_DUP_FUNCTION(X509_ACERT) +DECLARE_ASN1_ITEM(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_OBJECT_DIGEST_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_ISSUER_SERIAL) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_ISSUER_V2FORM) + +# ifndef OPENSSL_NO_STDIO +X509_ACERT *d2i_X509_ACERT_fp(FILE *fp, X509_ACERT **acert); +int i2d_X509_ACERT_fp(FILE *fp, const X509_ACERT *acert); +# endif + +DECLARE_PEM_rw(X509_ACERT, X509_ACERT) + +X509_ACERT *d2i_X509_ACERT_bio(BIO *bp, X509_ACERT **acert); +int i2d_X509_ACERT_bio(BIO *bp, const X509_ACERT *acert); + +int X509_ACERT_sign(X509_ACERT *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_ACERT_sign_ctx(X509_ACERT *x, EVP_MD_CTX *ctx); +int X509_ACERT_verify(X509_ACERT *a, EVP_PKEY *r); + +# define X509_ACERT_VERSION_2 1 + +const GENERAL_NAMES *X509_ACERT_get0_holder_entityName(const X509_ACERT *x); +const OSSL_ISSUER_SERIAL *X509_ACERT_get0_holder_baseCertId(const X509_ACERT *x); +const OSSL_OBJECT_DIGEST_INFO * X509_ACERT_get0_holder_digest(const X509_ACERT *x); +const X509_NAME *X509_ACERT_get0_issuerName(const X509_ACERT *x); +long X509_ACERT_get_version(const X509_ACERT *x); +void X509_ACERT_get0_signature(const X509_ACERT *x, + const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_ACERT_get_signature_nid(const X509_ACERT *x); +const X509_ALGOR *X509_ACERT_get0_info_sigalg(const X509_ACERT *x); +const ASN1_INTEGER *X509_ACERT_get0_serialNumber(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notBefore(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notAfter(const X509_ACERT *x); +const ASN1_BIT_STRING *X509_ACERT_get0_issuerUID(const X509_ACERT *x); + +int X509_ACERT_print(BIO *bp, X509_ACERT *x); +int X509_ACERT_print_ex(BIO *bp, X509_ACERT *x, unsigned long nmflags, + unsigned long cflag); + +int X509_ACERT_get_attr_count(const X509_ACERT *x); +int X509_ACERT_get_attr_by_NID(const X509_ACERT *x, int nid, int lastpos); +int X509_ACERT_get_attr_by_OBJ(const X509_ACERT *x, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_ACERT_get_attr(const X509_ACERT *x, int loc); +X509_ATTRIBUTE *X509_ACERT_delete_attr(X509_ACERT *x, int loc); + +void *X509_ACERT_get_ext_d2i(const X509_ACERT *x, int nid, int *crit, int *idx); +int X509_ACERT_add1_ext_i2d(X509_ACERT *x, int nid, void *value, int crit, + unsigned long flags); +const STACK_OF(X509_EXTENSION) *X509_ACERT_get0_extensions(const X509_ACERT *x); + +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY 0 +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY_CERT 1 +# define OSSL_OBJECT_DIGEST_INFO_OTHER 2 /* must not be used in RFC 5755 profile */ +int X509_ACERT_set_version(X509_ACERT *x, long version); +void X509_ACERT_set0_holder_entityName(X509_ACERT *x, GENERAL_NAMES *name); +void X509_ACERT_set0_holder_baseCertId(X509_ACERT *x, OSSL_ISSUER_SERIAL *isss); +void X509_ACERT_set0_holder_digest(X509_ACERT *x, + OSSL_OBJECT_DIGEST_INFO *dinfo); + +int X509_ACERT_add1_attr(X509_ACERT *x, X509_ATTRIBUTE *attr); +int X509_ACERT_add1_attr_by_OBJ(X509_ACERT *x, const ASN1_OBJECT *obj, + int type, const void *bytes, int len); +int X509_ACERT_add1_attr_by_NID(X509_ACERT *x, int nid, int type, + const void *bytes, int len); +int X509_ACERT_add1_attr_by_txt(X509_ACERT *x, const char *attrname, int type, + const unsigned char *bytes, int len); +int X509_ACERT_add_attr_nconf(CONF *conf, const char *section, + X509_ACERT *acert); + +int X509_ACERT_set1_issuerName(X509_ACERT *x, const X509_NAME *name); +int X509_ACERT_set1_serialNumber(X509_ACERT *x, const ASN1_INTEGER *serial); +int X509_ACERT_set1_notBefore(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); +int X509_ACERT_set1_notAfter(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); + +void OSSL_OBJECT_DIGEST_INFO_get0_digest(const OSSL_OBJECT_DIGEST_INFO *o, + int *digestedObjectType, + const X509_ALGOR **digestAlgorithm, + const ASN1_BIT_STRING **digest); + +int OSSL_OBJECT_DIGEST_INFO_set1_digest(OSSL_OBJECT_DIGEST_INFO *o, + int digestedObjectType, + X509_ALGOR *digestAlgorithm, + ASN1_BIT_STRING *digest); + +const X509_NAME *OSSL_ISSUER_SERIAL_get0_issuer(const OSSL_ISSUER_SERIAL *isss); +const ASN1_INTEGER *OSSL_ISSUER_SERIAL_get0_serial(const OSSL_ISSUER_SERIAL *isss); +const ASN1_BIT_STRING *OSSL_ISSUER_SERIAL_get0_issuerUID(const OSSL_ISSUER_SERIAL *isss); + +int OSSL_ISSUER_SERIAL_set1_issuer(OSSL_ISSUER_SERIAL *isss, + const X509_NAME *issuer); +int OSSL_ISSUER_SERIAL_set1_serial(OSSL_ISSUER_SERIAL *isss, + const ASN1_INTEGER *serial); +int OSSL_ISSUER_SERIAL_set1_issuerUID(OSSL_ISSUER_SERIAL *isss, + const ASN1_BIT_STRING *uid); + +# define OSSL_IETFAS_OCTETS 0 +# define OSSL_IETFAS_OID 1 +# define OSSL_IETFAS_STRING 2 + +typedef struct OSSL_IETF_ATTR_SYNTAX_VALUE_st OSSL_IETF_ATTR_SYNTAX_VALUE; +typedef struct OSSL_IETF_ATTR_SYNTAX_st OSSL_IETF_ATTR_SYNTAX; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_value(sk, idx) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new(cmp) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_null() ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (n)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete(sk, i) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (i))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete_ptr(sk, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_pop(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_shift(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_shift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk),ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), (idx)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set(sk, idx, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_set(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), pnum) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_dup(sk) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_copyfunc_type(copyfunc), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set_cmp_func(sk, cmp) ((sk_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) + + +DECLARE_ASN1_ITEM(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX) + +const GENERAL_NAMES * +OSSL_IETF_ATTR_SYNTAX_get0_policyAuthority(const OSSL_IETF_ATTR_SYNTAX *a); +void OSSL_IETF_ATTR_SYNTAX_set0_policyAuthority(OSSL_IETF_ATTR_SYNTAX *a, + GENERAL_NAMES *names); + +int OSSL_IETF_ATTR_SYNTAX_get_value_num(const OSSL_IETF_ATTR_SYNTAX *a); +void *OSSL_IETF_ATTR_SYNTAX_get0_value(const OSSL_IETF_ATTR_SYNTAX *a, + int ind, int *type); +int OSSL_IETF_ATTR_SYNTAX_add1_value(OSSL_IETF_ATTR_SYNTAX *a, int type, + void *data); +int OSSL_IETF_ATTR_SYNTAX_print(BIO *bp, OSSL_IETF_ATTR_SYNTAX *a, int indent); + +struct TARGET_CERT_st { + OSSL_ISSUER_SERIAL *targetCertificate; + GENERAL_NAME *targetName; + OSSL_OBJECT_DIGEST_INFO *certDigestInfo; +}; + +typedef struct TARGET_CERT_st OSSL_TARGET_CERT; + +# define OSSL_TGT_TARGET_NAME 0 +# define OSSL_TGT_TARGET_GROUP 1 +# define OSSL_TGT_TARGET_CERT 2 + +typedef struct TARGET_st { + int type; + union { + GENERAL_NAME *targetName; + GENERAL_NAME *targetGroup; + OSSL_TARGET_CERT *targetCert; + } choice; +} OSSL_TARGET; + +typedef STACK_OF(OSSL_TARGET) OSSL_TARGETS; +typedef STACK_OF(OSSL_TARGETS) OSSL_TARGETING_INFORMATION; + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGET, OSSL_TARGET, OSSL_TARGET) +#define sk_OSSL_TARGET_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_value(sk, idx) ((OSSL_TARGET *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGET_sk_type(sk), (idx))) +#define sk_OSSL_TARGET_new(cmp) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new(ossl_check_OSSL_TARGET_compfunc_type(cmp))) +#define sk_OSSL_TARGET_new_null() ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGET_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGET_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGET_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGET_sk_type(sk), (n)) +#define sk_OSSL_TARGET_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_delete(sk, i) ((OSSL_TARGET *)OPENSSL_sk_delete(ossl_check_OSSL_TARGET_sk_type(sk), (i))) +#define sk_OSSL_TARGET_delete_ptr(sk, ptr) ((OSSL_TARGET *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_pop(sk) ((OSSL_TARGET *)OPENSSL_sk_pop(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_shift(sk) ((OSSL_TARGET *)OPENSSL_sk_shift(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGET_sk_type(sk),ossl_check_OSSL_TARGET_freefunc_type(freefunc)) +#define sk_OSSL_TARGET_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), (idx)) +#define sk_OSSL_TARGET_set(sk, idx, ptr) ((OSSL_TARGET *)OPENSSL_sk_set(ossl_check_OSSL_TARGET_sk_type(sk), (idx), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), pnum) +#define sk_OSSL_TARGET_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_dup(sk) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_copyfunc_type(copyfunc), ossl_check_OSSL_TARGET_freefunc_type(freefunc))) +#define sk_OSSL_TARGET_set_cmp_func(sk, cmp) ((sk_OSSL_TARGET_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGETS, OSSL_TARGETS, OSSL_TARGETS) +#define sk_OSSL_TARGETS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_value(sk, idx) ((OSSL_TARGETS *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGETS_sk_type(sk), (idx))) +#define sk_OSSL_TARGETS_new(cmp) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new(ossl_check_OSSL_TARGETS_compfunc_type(cmp))) +#define sk_OSSL_TARGETS_new_null() ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGETS_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGETS_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGETS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGETS_sk_type(sk), (n)) +#define sk_OSSL_TARGETS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_delete(sk, i) ((OSSL_TARGETS *)OPENSSL_sk_delete(ossl_check_OSSL_TARGETS_sk_type(sk), (i))) +#define sk_OSSL_TARGETS_delete_ptr(sk, ptr) ((OSSL_TARGETS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_pop(sk) ((OSSL_TARGETS *)OPENSSL_sk_pop(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_shift(sk) ((OSSL_TARGETS *)OPENSSL_sk_shift(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGETS_sk_type(sk),ossl_check_OSSL_TARGETS_freefunc_type(freefunc)) +#define sk_OSSL_TARGETS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), (idx)) +#define sk_OSSL_TARGETS_set(sk, idx, ptr) ((OSSL_TARGETS *)OPENSSL_sk_set(ossl_check_OSSL_TARGETS_sk_type(sk), (idx), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), pnum) +#define sk_OSSL_TARGETS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_dup(sk) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_copyfunc_type(copyfunc), ossl_check_OSSL_TARGETS_freefunc_type(freefunc))) +#define sk_OSSL_TARGETS_set_cmp_func(sk, cmp) ((sk_OSSL_TARGETS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_compfunc_type(cmp))) + + +DECLARE_ASN1_FUNCTIONS(OSSL_TARGET) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETS) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETING_INFORMATION) + +typedef STACK_OF(OSSL_ISSUER_SERIAL) OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL) +#define sk_OSSL_ISSUER_SERIAL_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_value(sk, idx) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_value(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), (idx))) +#define sk_OSSL_ISSUER_SERIAL_new(cmp) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) +#define sk_OSSL_ISSUER_SERIAL_new_null() ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ISSUER_SERIAL_new_reserve(cmp, n) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp), (n))) +#define sk_OSSL_ISSUER_SERIAL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (n)) +#define sk_OSSL_ISSUER_SERIAL_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_delete(sk, i) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (i))) +#define sk_OSSL_ISSUER_SERIAL_delete_ptr(sk, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_pop(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_pop(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_shift(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_shift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk),ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc)) +#define sk_OSSL_ISSUER_SERIAL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), (idx)) +#define sk_OSSL_ISSUER_SERIAL_set(sk, idx, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_set(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (idx), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), pnum) +#define sk_OSSL_ISSUER_SERIAL_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_dup(sk) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_copyfunc_type(copyfunc), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc))) +#define sk_OSSL_ISSUER_SERIAL_set_cmp_func(sk, cmp) ((sk_OSSL_ISSUER_SERIAL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) + + +#endif diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/x509_vfy.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/x509_vfy.h index f571187265cfc9..f08a134b17b7db 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/x509_vfy.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/x509_vfy.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/x509_vfy.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -411,6 +411,7 @@ X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ # define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 # define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 # define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +# define X509_V_ERR_RPK_UNTRUSTED 95 /* Certificate verify flags */ # ifndef OPENSSL_NO_DEPRECATED_1_1_0 @@ -491,71 +492,72 @@ int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); X509_STORE *X509_STORE_new(void); -void X509_STORE_free(X509_STORE *v); -int X509_STORE_lock(X509_STORE *ctx); -int X509_STORE_unlock(X509_STORE *ctx); -int X509_STORE_up_ref(X509_STORE *v); -STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *v); -STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *st); -STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get1_objects(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, const X509_NAME *nm); STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, const X509_NAME *nm); -int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); -int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); -int X509_STORE_set_trust(X509_STORE *ctx, int trust); -int X509_STORE_set1_param(X509_STORE *ctx, const X509_VERIFY_PARAM *pm); -X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *ctx); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); -void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); #define X509_STORE_set_verify_func(ctx, func) \ X509_STORE_set_verify((ctx),(func)) void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, X509_STORE_CTX_verify_fn verify); -X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *ctx); -void X509_STORE_set_verify_cb(X509_STORE *ctx, +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, X509_STORE_CTX_verify_cb verify_cb); # define X509_STORE_set_verify_cb_func(ctx,func) \ X509_STORE_set_verify_cb((ctx),(func)) -X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *ctx); -void X509_STORE_set_get_issuer(X509_STORE *ctx, +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, X509_STORE_CTX_get_issuer_fn get_issuer); -X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *ctx); -void X509_STORE_set_check_issued(X509_STORE *ctx, +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, X509_STORE_CTX_check_issued_fn check_issued); -X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *ctx); -void X509_STORE_set_check_revocation(X509_STORE *ctx, +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, X509_STORE_CTX_check_revocation_fn check_revocation); X509_STORE_CTX_check_revocation_fn - X509_STORE_get_check_revocation(const X509_STORE *ctx); -void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, X509_STORE_CTX_get_crl_fn get_crl); -X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *ctx); -void X509_STORE_set_check_crl(X509_STORE *ctx, +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, X509_STORE_CTX_check_crl_fn check_crl); -X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *ctx); -void X509_STORE_set_cert_crl(X509_STORE *ctx, +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, X509_STORE_CTX_cert_crl_fn cert_crl); -X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *ctx); -void X509_STORE_set_check_policy(X509_STORE *ctx, +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, X509_STORE_CTX_check_policy_fn check_policy); -X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *ctx); -void X509_STORE_set_lookup_certs(X509_STORE *ctx, +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, X509_STORE_CTX_lookup_certs_fn lookup_certs); -X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *ctx); -void X509_STORE_set_lookup_crls(X509_STORE *ctx, +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, X509_STORE_CTX_lookup_crls_fn lookup_crls); #define X509_STORE_set_lookup_crls_cb(ctx, func) \ X509_STORE_set_lookup_crls((ctx), (func)) -X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *ctx); -void X509_STORE_set_cleanup(X509_STORE *ctx, +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, X509_STORE_CTX_cleanup_fn cleanup); -X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); #define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) -int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); -void *X509_STORE_get_ex_data(const X509_STORE *ctx, int idx); +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); X509_STORE_CTX *X509_STORE_CTX_new(void); @@ -565,11 +567,14 @@ int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); void X509_STORE_CTX_free(X509_STORE_CTX *ctx); int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY* rpk); void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, @@ -579,6 +584,8 @@ X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); @@ -600,7 +607,7 @@ X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); # define X509_STORE_get1_crl X509_STORE_CTX_get1_crls #endif -X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); X509_LOOKUP_METHOD *X509_LOOKUP_file(void); X509_LOOKUP_METHOD *X509_LOOKUP_store(void); @@ -685,8 +692,8 @@ X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( const X509_LOOKUP_METHOD *method); -int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); -int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, @@ -730,23 +737,21 @@ void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); -int X509_STORE_load_file(X509_STORE *ctx, const char *file); -int X509_STORE_load_path(X509_STORE *ctx, const char *path); -int X509_STORE_load_store(X509_STORE *ctx, const char *store); -int X509_STORE_load_locations(X509_STORE *ctx, - const char *file, - const char *dir); -int X509_STORE_set_default_paths(X509_STORE *ctx); +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); -int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file, +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_store_ex(X509_STORE *ctx, const char *store, +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file, - const char *dir, OSSL_LIB_CTX *libctx, - const char *propq); -int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OSSL_LIB_CTX *libctx, - const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); #define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) @@ -764,6 +769,7 @@ X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); @@ -773,6 +779,8 @@ int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); @@ -804,6 +812,7 @@ int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, unsigned long flags); unsigned long X509_VERIFY_PARAM_get_flags(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_get_purpose(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/x509v3.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/x509v3.h index ed08a546f9813d..362ce3fb4387f7 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/x509v3.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/x509v3.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/x509v3.h.in * - * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -146,6 +149,11 @@ typedef struct BASIC_CONSTRAINTS_st { ASN1_INTEGER *pathlen; } BASIC_CONSTRAINTS; +typedef struct OSSL_BASIC_ATTR_CONSTRAINTS_st { + int authority; + ASN1_INTEGER *pathlen; +} OSSL_BASIC_ATTR_CONSTRAINTS; + typedef struct PKEY_USAGE_PERIOD_st { ASN1_GENERALIZEDTIME *notBefore; ASN1_GENERALIZEDTIME *notAfter; @@ -198,6 +206,8 @@ typedef struct ACCESS_DESCRIPTION_st { GENERAL_NAME *location; } ACCESS_DESCRIPTION; +int GENERAL_NAME_set1_X509_NAME(GENERAL_NAME **tgt, const X509_NAME *src); + SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) #define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) #define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) @@ -294,6 +304,7 @@ typedef struct DIST_POINT_NAME_st { /* If relativename then this contains the full distribution point name */ X509_NAME *dpname; } DIST_POINT_NAME; +DECLARE_ASN1_DUP_FUNCTION(DIST_POINT_NAME) /* All existing reasons */ # define CRLDP_ALL_REASONS 0x807f @@ -659,15 +670,16 @@ struct ISSUING_DIST_POINT_st { # define EXFLAG_SAN_CRITICAL 0x80000 # define EXFLAG_NO_FINGERPRINT 0x100000 -# define KU_DIGITAL_SIGNATURE 0x0080 -# define KU_NON_REPUDIATION 0x0040 -# define KU_KEY_ENCIPHERMENT 0x0020 -# define KU_DATA_ENCIPHERMENT 0x0010 -# define KU_KEY_AGREEMENT 0x0008 -# define KU_KEY_CERT_SIGN 0x0004 -# define KU_CRL_SIGN 0x0002 -# define KU_ENCIPHER_ONLY 0x0001 -# define KU_DECIPHER_ONLY 0x8000 +/* https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3 */ +# define KU_DIGITAL_SIGNATURE X509v3_KU_DIGITAL_SIGNATURE +# define KU_NON_REPUDIATION X509v3_KU_NON_REPUDIATION +# define KU_KEY_ENCIPHERMENT X509v3_KU_KEY_ENCIPHERMENT +# define KU_DATA_ENCIPHERMENT X509v3_KU_DATA_ENCIPHERMENT +# define KU_KEY_AGREEMENT X509v3_KU_KEY_AGREEMENT +# define KU_KEY_CERT_SIGN X509v3_KU_KEY_CERT_SIGN +# define KU_CRL_SIGN X509v3_KU_CRL_SIGN +# define KU_ENCIPHER_ONLY X509v3_KU_ENCIPHER_ONLY +# define KU_DECIPHER_ONLY X509v3_KU_DECIPHER_ONLY # define NS_SSL_CLIENT 0x80 # define NS_SSL_SERVER 0x40 @@ -729,7 +741,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) #define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) - +# define X509_PURPOSE_DEFAULT_ANY 0 # define X509_PURPOSE_SSL_CLIENT 1 # define X509_PURPOSE_SSL_SERVER 2 # define X509_PURPOSE_NS_SSL_SERVER 3 @@ -739,9 +751,10 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509_PURPOSE_ANY 7 # define X509_PURPOSE_OCSP_HELPER 8 # define X509_PURPOSE_TIMESTAMP_SIGN 9 +# define X509_PURPOSE_CODE_SIGN 10 # define X509_PURPOSE_MIN 1 -# define X509_PURPOSE_MAX 9 +# define X509_PURPOSE_MAX 10 /* Flags for X509V3_EXT_print() */ @@ -767,6 +780,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509V3_ADD_SILENT 0x10 DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) +DECLARE_ASN1_FUNCTIONS(OSSL_BASIC_ATTR_CONSTRAINTS) DECLARE_ASN1_FUNCTIONS(SXNET) DECLARE_ASN1_FUNCTIONS(SXNETID) @@ -976,7 +990,6 @@ int X509V3_extensions_print(BIO *out, const char *title, int X509_check_ca(X509 *x); int X509_check_purpose(X509 *x, int id, int ca); int X509_supported_extension(X509_EXTENSION *ex); -int X509_PURPOSE_set(int *p, int purpose); int X509_check_issued(X509 *issuer, X509 *subject); int X509_check_akid(const X509 *issuer, const AUTHORITY_KEYID *akid); void X509_set_proxy_flag(X509 *x); @@ -992,22 +1005,26 @@ const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); int X509_PURPOSE_get_count(void); -X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_unused_id(OSSL_LIB_CTX *libctx); int X509_PURPOSE_get_by_sname(const char *sname); int X509_PURPOSE_get_by_id(int id); int X509_PURPOSE_add(int id, int trust, int flags, int (*ck) (const X509_PURPOSE *, const X509 *, int), const char *name, const char *sname, void *arg); +void X509_PURPOSE_cleanup(void); + +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_id(const X509_PURPOSE *); char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); -void X509_PURPOSE_cleanup(void); -int X509_PURPOSE_get_id(const X509_PURPOSE *); +int X509_PURPOSE_set(int *p, int purpose); STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); + /* Flags for X509_check_* functions */ /* @@ -1444,6 +1461,507 @@ const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( void PROFESSION_INFO_set0_registrationNumber( PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); +int OSSL_GENERAL_NAMES_print(BIO *out, GENERAL_NAMES *gens, int indent); + +typedef STACK_OF(X509_ATTRIBUTE) OSSL_ATTRIBUTES_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTES_SYNTAX) + +typedef STACK_OF(USERNOTICE) OSSL_USER_NOTICE_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_USER_NOTICE_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(USERNOTICE, USERNOTICE, USERNOTICE) +#define sk_USERNOTICE_num(sk) OPENSSL_sk_num(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_value(sk, idx) ((USERNOTICE *)OPENSSL_sk_value(ossl_check_const_USERNOTICE_sk_type(sk), (idx))) +#define sk_USERNOTICE_new(cmp) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new(ossl_check_USERNOTICE_compfunc_type(cmp))) +#define sk_USERNOTICE_new_null() ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_null()) +#define sk_USERNOTICE_new_reserve(cmp, n) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_reserve(ossl_check_USERNOTICE_compfunc_type(cmp), (n))) +#define sk_USERNOTICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_USERNOTICE_sk_type(sk), (n)) +#define sk_USERNOTICE_free(sk) OPENSSL_sk_free(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_zero(sk) OPENSSL_sk_zero(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_delete(sk, i) ((USERNOTICE *)OPENSSL_sk_delete(ossl_check_USERNOTICE_sk_type(sk), (i))) +#define sk_USERNOTICE_delete_ptr(sk, ptr) ((USERNOTICE *)OPENSSL_sk_delete_ptr(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_pop(sk) ((USERNOTICE *)OPENSSL_sk_pop(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_shift(sk) ((USERNOTICE *)OPENSSL_sk_shift(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_USERNOTICE_sk_type(sk),ossl_check_USERNOTICE_freefunc_type(freefunc)) +#define sk_USERNOTICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), (idx)) +#define sk_USERNOTICE_set(sk, idx, ptr) ((USERNOTICE *)OPENSSL_sk_set(ossl_check_USERNOTICE_sk_type(sk), (idx), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), pnum) +#define sk_USERNOTICE_sort(sk) OPENSSL_sk_sort(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_dup(sk) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_dup(ossl_check_const_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_deep_copy(ossl_check_const_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_copyfunc_type(copyfunc), ossl_check_USERNOTICE_freefunc_type(freefunc))) +#define sk_USERNOTICE_set_cmp_func(sk, cmp) ((sk_USERNOTICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_compfunc_type(cmp))) + + +typedef struct OSSL_ROLE_SPEC_CERT_ID_st { + GENERAL_NAME *roleName; + GENERAL_NAME *roleCertIssuer; + ASN1_INTEGER *roleCertSerialNumber; + GENERAL_NAMES *roleCertLocator; +} OSSL_ROLE_SPEC_CERT_ID; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID) +#define sk_OSSL_ROLE_SPEC_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_value(sk, idx) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_value(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new(cmp) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_null() ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_reserve(cmp, n) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp), (n))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (n)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete(sk, i) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (i))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete_ptr(sk, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_pop(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_shift(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_shift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk),ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), (idx)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set(sk, idx, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_set(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), pnum) +#define sk_OSSL_ROLE_SPEC_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_dup(sk) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_copyfunc_type(copyfunc), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set_cmp_func(sk, cmp) ((sk_OSSL_ROLE_SPEC_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) + + +typedef STACK_OF(OSSL_ROLE_SPEC_CERT_ID) OSSL_ROLE_SPEC_CERT_ID_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID_SYNTAX) +typedef struct OSSL_HASH_st { + X509_ALGOR *algorithmIdentifier; + ASN1_BIT_STRING *hashValue; +} OSSL_HASH; + +typedef struct OSSL_INFO_SYNTAX_POINTER_st { + GENERAL_NAMES *name; + OSSL_HASH *hash; +} OSSL_INFO_SYNTAX_POINTER; + +# define OSSL_INFO_SYNTAX_TYPE_CONTENT 0 +# define OSSL_INFO_SYNTAX_TYPE_POINTER 1 + +typedef struct OSSL_INFO_SYNTAX_st { + int type; + union { + ASN1_STRING *content; + OSSL_INFO_SYNTAX_POINTER *pointer; + } choice; +} OSSL_INFO_SYNTAX; + +typedef struct OSSL_PRIVILEGE_POLICY_ID_st { + ASN1_OBJECT *privilegePolicy; + OSSL_INFO_SYNTAX *privPolSyntax; +} OSSL_PRIVILEGE_POLICY_ID; + +typedef struct OSSL_ATTRIBUTE_DESCRIPTOR_st { + ASN1_OBJECT *identifier; + ASN1_STRING *attributeSyntax; + ASN1_UTF8STRING *name; + ASN1_UTF8STRING *description; + OSSL_PRIVILEGE_POLICY_ID *dominationRule; +} OSSL_ATTRIBUTE_DESCRIPTOR; + +DECLARE_ASN1_FUNCTIONS(OSSL_HASH) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX_POINTER) +DECLARE_ASN1_FUNCTIONS(OSSL_PRIVILEGE_POLICY_ID) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_DESCRIPTOR) + +typedef struct OSSL_TIME_SPEC_ABSOLUTE_st { + ASN1_GENERALIZEDTIME *startTime; + ASN1_GENERALIZEDTIME *endTime; +} OSSL_TIME_SPEC_ABSOLUTE; + +typedef struct OSSL_DAY_TIME_st { + ASN1_INTEGER *hour; + ASN1_INTEGER *minute; + ASN1_INTEGER *second; +} OSSL_DAY_TIME; + +typedef struct OSSL_DAY_TIME_BAND_st { + OSSL_DAY_TIME *startDayTime; + OSSL_DAY_TIME *endDayTime; +} OSSL_DAY_TIME_BAND; + +# define OSSL_NAMED_DAY_TYPE_INT 0 +# define OSSL_NAMED_DAY_TYPE_BIT 1 +# define OSSL_NAMED_DAY_INT_SUN 1 +# define OSSL_NAMED_DAY_INT_MON 2 +# define OSSL_NAMED_DAY_INT_TUE 3 +# define OSSL_NAMED_DAY_INT_WED 4 +# define OSSL_NAMED_DAY_INT_THU 5 +# define OSSL_NAMED_DAY_INT_FRI 6 +# define OSSL_NAMED_DAY_INT_SAT 7 +# define OSSL_NAMED_DAY_BIT_SUN 0 +# define OSSL_NAMED_DAY_BIT_MON 1 +# define OSSL_NAMED_DAY_BIT_TUE 2 +# define OSSL_NAMED_DAY_BIT_WED 3 +# define OSSL_NAMED_DAY_BIT_THU 4 +# define OSSL_NAMED_DAY_BIT_FRI 5 +# define OSSL_NAMED_DAY_BIT_SAT 6 + +typedef struct OSSL_NAMED_DAY_st { + int type; + union { + ASN1_INTEGER *intNamedDays; + ASN1_BIT_STRING *bitNamedDays; + } choice; +} OSSL_NAMED_DAY; + +# define OSSL_TIME_SPEC_X_DAY_OF_FIRST 0 +# define OSSL_TIME_SPEC_X_DAY_OF_SECOND 1 +# define OSSL_TIME_SPEC_X_DAY_OF_THIRD 2 +# define OSSL_TIME_SPEC_X_DAY_OF_FOURTH 3 +# define OSSL_TIME_SPEC_X_DAY_OF_FIFTH 4 + +typedef struct OSSL_TIME_SPEC_X_DAY_OF_st { + int type; + union { + OSSL_NAMED_DAY *first; + OSSL_NAMED_DAY *second; + OSSL_NAMED_DAY *third; + OSSL_NAMED_DAY *fourth; + OSSL_NAMED_DAY *fifth; + } choice; +} OSSL_TIME_SPEC_X_DAY_OF; + +# define OSSL_TIME_SPEC_DAY_TYPE_INT 0 +# define OSSL_TIME_SPEC_DAY_TYPE_BIT 1 +# define OSSL_TIME_SPEC_DAY_TYPE_DAY_OF 2 +# define OSSL_TIME_SPEC_DAY_BIT_SUN 0 +# define OSSL_TIME_SPEC_DAY_BIT_MON 1 +# define OSSL_TIME_SPEC_DAY_BIT_TUE 2 +# define OSSL_TIME_SPEC_DAY_BIT_WED 3 +# define OSSL_TIME_SPEC_DAY_BIT_THU 4 +# define OSSL_TIME_SPEC_DAY_BIT_FRI 5 +# define OSSL_TIME_SPEC_DAY_BIT_SAT 6 +# define OSSL_TIME_SPEC_DAY_INT_SUN 1 +# define OSSL_TIME_SPEC_DAY_INT_MON 2 +# define OSSL_TIME_SPEC_DAY_INT_TUE 3 +# define OSSL_TIME_SPEC_DAY_INT_WED 4 +# define OSSL_TIME_SPEC_DAY_INT_THU 5 +# define OSSL_TIME_SPEC_DAY_INT_FRI 6 +# define OSSL_TIME_SPEC_DAY_INT_SAT 7 + +typedef struct OSSL_TIME_SPEC_DAY_st { + int type; + union { + STACK_OF(ASN1_INTEGER) *intDay; + ASN1_BIT_STRING *bitDay; + OSSL_TIME_SPEC_X_DAY_OF *dayOf; + } choice; +} OSSL_TIME_SPEC_DAY; + +# define OSSL_TIME_SPEC_WEEKS_TYPE_ALL 0 +# define OSSL_TIME_SPEC_WEEKS_TYPE_INT 1 +# define OSSL_TIME_SPEC_WEEKS_TYPE_BIT 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_1 0 +# define OSSL_TIME_SPEC_BIT_WEEKS_2 1 +# define OSSL_TIME_SPEC_BIT_WEEKS_3 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_4 3 +# define OSSL_TIME_SPEC_BIT_WEEKS_5 4 + +typedef struct OSSL_TIME_SPEC_WEEKS_st { + int type; + union { + ASN1_NULL *allWeeks; + STACK_OF(ASN1_INTEGER) *intWeek; + ASN1_BIT_STRING *bitWeek; + } choice; +} OSSL_TIME_SPEC_WEEKS; + +# define OSSL_TIME_SPEC_MONTH_TYPE_ALL 0 +# define OSSL_TIME_SPEC_MONTH_TYPE_INT 1 +# define OSSL_TIME_SPEC_MONTH_TYPE_BIT 2 +# define OSSL_TIME_SPEC_INT_MONTH_JAN 1 +# define OSSL_TIME_SPEC_INT_MONTH_FEB 2 +# define OSSL_TIME_SPEC_INT_MONTH_MAR 3 +# define OSSL_TIME_SPEC_INT_MONTH_APR 4 +# define OSSL_TIME_SPEC_INT_MONTH_MAY 5 +# define OSSL_TIME_SPEC_INT_MONTH_JUN 6 +# define OSSL_TIME_SPEC_INT_MONTH_JUL 7 +# define OSSL_TIME_SPEC_INT_MONTH_AUG 8 +# define OSSL_TIME_SPEC_INT_MONTH_SEP 9 +# define OSSL_TIME_SPEC_INT_MONTH_OCT 10 +# define OSSL_TIME_SPEC_INT_MONTH_NOV 11 +# define OSSL_TIME_SPEC_INT_MONTH_DEC 12 +# define OSSL_TIME_SPEC_BIT_MONTH_JAN 0 +# define OSSL_TIME_SPEC_BIT_MONTH_FEB 1 +# define OSSL_TIME_SPEC_BIT_MONTH_MAR 2 +# define OSSL_TIME_SPEC_BIT_MONTH_APR 3 +# define OSSL_TIME_SPEC_BIT_MONTH_MAY 4 +# define OSSL_TIME_SPEC_BIT_MONTH_JUN 5 +# define OSSL_TIME_SPEC_BIT_MONTH_JUL 6 +# define OSSL_TIME_SPEC_BIT_MONTH_AUG 7 +# define OSSL_TIME_SPEC_BIT_MONTH_SEP 8 +# define OSSL_TIME_SPEC_BIT_MONTH_OCT 9 +# define OSSL_TIME_SPEC_BIT_MONTH_NOV 10 +# define OSSL_TIME_SPEC_BIT_MONTH_DEC 11 + +typedef struct OSSL_TIME_SPEC_MONTH_st { + int type; + union { + ASN1_NULL *allMonths; + STACK_OF(ASN1_INTEGER) *intMonth; + ASN1_BIT_STRING *bitMonth; + } choice; +} OSSL_TIME_SPEC_MONTH; + +typedef struct OSSL_TIME_PERIOD_st { + STACK_OF(OSSL_DAY_TIME_BAND) *timesOfDay; + OSSL_TIME_SPEC_DAY *days; + OSSL_TIME_SPEC_WEEKS *weeks; + OSSL_TIME_SPEC_MONTH *months; + STACK_OF(ASN1_INTEGER) *years; +} OSSL_TIME_PERIOD; + +# define OSSL_TIME_SPEC_TIME_TYPE_ABSOLUTE 0 +# define OSSL_TIME_SPEC_TIME_TYPE_PERIODIC 1 + +typedef struct OSSL_TIME_SPEC_TIME_st { + int type; + union { + OSSL_TIME_SPEC_ABSOLUTE *absolute; + STACK_OF(OSSL_TIME_PERIOD) *periodic; + } choice; +} OSSL_TIME_SPEC_TIME; + +typedef struct OSSL_TIME_SPEC_st { + OSSL_TIME_SPEC_TIME *time; + ASN1_BOOLEAN notThisTime; + ASN1_INTEGER *timeZone; +} OSSL_TIME_SPEC; + +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME_BAND) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_WEEKS) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_MONTH) +DECLARE_ASN1_FUNCTIONS(OSSL_NAMED_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_X_DAY_OF) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_ABSOLUTE) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_PERIOD) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TIME_PERIOD, OSSL_TIME_PERIOD, OSSL_TIME_PERIOD) +#define sk_OSSL_TIME_PERIOD_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_value(sk, idx) ((OSSL_TIME_PERIOD *)OPENSSL_sk_value(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), (idx))) +#define sk_OSSL_TIME_PERIOD_new(cmp) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) +#define sk_OSSL_TIME_PERIOD_new_null() ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TIME_PERIOD_new_reserve(cmp, n) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp), (n))) +#define sk_OSSL_TIME_PERIOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (n)) +#define sk_OSSL_TIME_PERIOD_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_delete(sk, i) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (i))) +#define sk_OSSL_TIME_PERIOD_delete_ptr(sk, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_pop(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_pop(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_shift(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_shift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk),ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc)) +#define sk_OSSL_TIME_PERIOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), (idx)) +#define sk_OSSL_TIME_PERIOD_set(sk, idx, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_set(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (idx), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), pnum) +#define sk_OSSL_TIME_PERIOD_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_dup(sk) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_copyfunc_type(copyfunc), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc))) +#define sk_OSSL_TIME_PERIOD_set_cmp_func(sk, cmp) ((sk_OSSL_TIME_PERIOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND) +#define sk_OSSL_DAY_TIME_BAND_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_value(sk, idx) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_value(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), (idx))) +#define sk_OSSL_DAY_TIME_BAND_new(cmp) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) +#define sk_OSSL_DAY_TIME_BAND_new_null() ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_null()) +#define sk_OSSL_DAY_TIME_BAND_new_reserve(cmp, n) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp), (n))) +#define sk_OSSL_DAY_TIME_BAND_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (n)) +#define sk_OSSL_DAY_TIME_BAND_free(sk) OPENSSL_sk_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_delete(sk, i) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (i))) +#define sk_OSSL_DAY_TIME_BAND_delete_ptr(sk, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_pop(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_pop(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_shift(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_shift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk),ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc)) +#define sk_OSSL_DAY_TIME_BAND_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), (idx)) +#define sk_OSSL_DAY_TIME_BAND_set(sk, idx, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_set(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (idx), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), pnum) +#define sk_OSSL_DAY_TIME_BAND_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_dup(sk) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_dup(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_copyfunc_type(copyfunc), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc))) +#define sk_OSSL_DAY_TIME_BAND_set_cmp_func(sk, cmp) ((sk_OSSL_DAY_TIME_BAND_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) + + +/* Attribute Type and Value */ +typedef struct atav_st { + ASN1_OBJECT *type; + ASN1_TYPE *value; +} OSSL_ATAV; + +typedef struct ATTRIBUTE_TYPE_MAPPING_st { + ASN1_OBJECT *local; + ASN1_OBJECT *remote; +} OSSL_ATTRIBUTE_TYPE_MAPPING; + +typedef struct ATTRIBUTE_VALUE_MAPPING_st { + OSSL_ATAV *local; + OSSL_ATAV *remote; +} OSSL_ATTRIBUTE_VALUE_MAPPING; + +# define OSSL_ATTR_MAP_TYPE 0 +# define OSSL_ATTR_MAP_VALUE 1 + +typedef struct ATTRIBUTE_MAPPING_st { + int type; + union { + OSSL_ATTRIBUTE_TYPE_MAPPING *typeMappings; + OSSL_ATTRIBUTE_VALUE_MAPPING *typeValueMappings; + } choice; +} OSSL_ATTRIBUTE_MAPPING; + +typedef STACK_OF(OSSL_ATTRIBUTE_MAPPING) OSSL_ATTRIBUTE_MAPPINGS; +DECLARE_ASN1_FUNCTIONS(OSSL_ATAV) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_TYPE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_VALUE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPINGS) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING) +#define sk_OSSL_ATTRIBUTE_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_value(sk, idx) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_value(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new(cmp) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_null() ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_reserve(cmp, n) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp), (n))) +#define sk_OSSL_ATTRIBUTE_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (n)) +#define sk_OSSL_ATTRIBUTE_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete(sk, i) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (i))) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete_ptr(sk, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_pop(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_shift(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_shift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk),ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc)) +#define sk_OSSL_ATTRIBUTE_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), (idx)) +#define sk_OSSL_ATTRIBUTE_MAPPING_set(sk, idx, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_set(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), pnum) +#define sk_OSSL_ATTRIBUTE_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_dup(sk) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_copyfunc_type(copyfunc), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc))) +#define sk_OSSL_ATTRIBUTE_MAPPING_set_cmp_func(sk, cmp) ((sk_OSSL_ATTRIBUTE_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) + + +# define OSSL_AAA_ATTRIBUTE_TYPE 0 +# define OSSL_AAA_ATTRIBUTE_VALUES 1 + +typedef struct ALLOWED_ATTRIBUTES_CHOICE_st { + int type; + union { + ASN1_OBJECT *attributeType; + X509_ATTRIBUTE *attributeTypeandValues; + } choice; +} OSSL_ALLOWED_ATTRIBUTES_CHOICE; + +typedef struct ALLOWED_ATTRIBUTES_ITEM_st { + STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *attributes; + GENERAL_NAME *holderDomain; +} OSSL_ALLOWED_ATTRIBUTES_ITEM; + +typedef STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) OSSL_ALLOWED_ATTRIBUTES_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_CHOICE) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_ITEM) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) + + +typedef struct AA_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + int dp_reasons; + ASN1_BOOLEAN indirectCRL; + ASN1_BOOLEAN containsUserAttributeCerts; + ASN1_BOOLEAN containsAACerts; + ASN1_BOOLEAN containsSOAPublicKeyCerts; +} OSSL_AA_DIST_POINT; + +DECLARE_ASN1_FUNCTIONS(OSSL_AA_DIST_POINT) + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/progs.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/progs.h index be55f61503d405..1b62ec37dec130 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/progs.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/progs.h @@ -56,6 +56,7 @@ extern int s_client_main(int argc, char *argv[]); extern int s_server_main(int argc, char *argv[]); extern int s_time_main(int argc, char *argv[]); extern int sess_id_main(int argc, char *argv[]); +extern int skeyutl_main(int argc, char *argv[]); extern int smime_main(int argc, char *argv[]); extern int speed_main(int argc, char *argv[]); extern int spkac_main(int argc, char *argv[]); @@ -110,6 +111,7 @@ extern const OPTIONS s_client_options[]; extern const OPTIONS s_server_options[]; extern const OPTIONS s_time_options[]; extern const OPTIONS sess_id_options[]; +extern const OPTIONS skeyutl_options[]; extern const OPTIONS smime_options[]; extern const OPTIONS speed_options[]; extern const OPTIONS spkac_options[]; diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/openssl-cl.gypi b/deps/openssl/config/archs/VC-WIN64A/no-asm/openssl-cl.gypi index 51ab6b0ed07ddd..ff7f1a59ed7849 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/openssl-cl.gypi +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/openssl-cl.gypi @@ -66,6 +66,7 @@ 'openssl/apps/s_server.c', 'openssl/apps/s_time.c', 'openssl/apps/sess_id.c', + 'openssl/apps/skeyutl.c', 'openssl/apps/smime.c', 'openssl/apps/speed.c', 'openssl/apps/spkac.c', @@ -81,12 +82,14 @@ 'openssl/apps/lib/app_rand.c', 'openssl/apps/lib/app_x509.c', 'openssl/apps/lib/apps.c', + 'openssl/apps/lib/apps_opt_printf.c', 'openssl/apps/lib/apps_ui.c', 'openssl/apps/lib/columns.c', 'openssl/apps/lib/engine.c', 'openssl/apps/lib/engine_loader.c', 'openssl/apps/lib/fmt.c', 'openssl/apps/lib/http_server.c', + 'openssl/apps/lib/log.c', 'openssl/apps/lib/names.c', 'openssl/apps/lib/opt.c', 'openssl/apps/lib/s_cb.c', diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/openssl-fips.gypi b/deps/openssl/config/archs/VC-WIN64A/no-asm/openssl-fips.gypi index 8da150aab54f0c..b55a20cd59d795 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/openssl-fips.gypi +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/openssl-fips.gypi @@ -100,14 +100,15 @@ 'openssl/crypto/evp/kem.c', 'openssl/crypto/evp/keymgmt_lib.c', 'openssl/crypto/evp/keymgmt_meth.c', - 'openssl/crypto/evp/m_sigver.c', 'openssl/crypto/evp/mac_lib.c', 'openssl/crypto/evp/mac_meth.c', 'openssl/crypto/evp/p_lib.c', 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -115,6 +116,8 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', @@ -145,6 +148,16 @@ 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -153,6 +166,7 @@ 'openssl/crypto/modes/ofb128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/property/defn_cache.c', 'openssl/crypto/property/property.c', 'openssl/crypto/property/property_parse.c', @@ -181,7 +195,23 @@ 'openssl/crypto/sha/sha256.c', 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/stack/stack.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/providers/common/der/der_rsa_sig.c', 'openssl/providers/common/bio_prov.c', 'openssl/providers/common/capabilities.c', @@ -190,6 +220,7 @@ 'openssl/providers/common/provider_util.c', 'openssl/providers/common/securitycheck.c', 'openssl/providers/common/securitycheck_fips.c', + 'openssl/providers/fips/fipsindicator.c', 'openssl/providers/fips/fipsprov.c', 'openssl/providers/fips/self_test.c', 'openssl/providers/fips/self_test_kats.c', @@ -227,6 +258,8 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -234,29 +267,39 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/cmac_prov.c', 'openssl/providers/implementations/macs/gmac_prov.c', 'openssl/providers/implementations/macs/hmac_prov.c', 'openssl/providers/implementations/macs/kmac_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', + 'openssl/providers/implementations/rands/fips_crng_test.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/signature/dsa_sig.c', 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -267,17 +310,20 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/fips/fips_entry.c', ], 'openssl_sources_VC-WIN64A': [ + './config/archs/VC-WIN64A/no-asm/crypto/params_idx.c', './config/archs/VC-WIN64A/no-asm/providers/common/der/der_sm2_gen.c', './config/archs/VC-WIN64A/no-asm/providers/common/der/der_digests_gen.c', './config/archs/VC-WIN64A/no-asm/providers/common/der/der_dsa_gen.c', './config/archs/VC-WIN64A/no-asm/providers/common/der/der_ec_gen.c', './config/archs/VC-WIN64A/no-asm/providers/common/der/der_ecx_gen.c', + './config/archs/VC-WIN64A/no-asm/providers/common/der/der_ml_dsa_gen.c', './config/archs/VC-WIN64A/no-asm/providers/common/der/der_rsa_gen.c', + './config/archs/VC-WIN64A/no-asm/providers/common/der/der_slh_dsa_gen.c', './config/archs/VC-WIN64A/no-asm/providers/common/der/der_wrap_gen.c', ], diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/openssl.gypi b/deps/openssl/config/archs/VC-WIN64A/no-asm/openssl.gypi index 3cdefe6bdde202..7a39f9337fe074 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/openssl.gypi +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/openssl.gypi @@ -7,14 +7,15 @@ 'openssl/ssl/d1_srtp.c', 'openssl/ssl/methods.c', 'openssl/ssl/pqueue.c', + 'openssl/ssl/priority_queue.c', 'openssl/ssl/s3_enc.c', 'openssl/ssl/s3_lib.c', 'openssl/ssl/s3_msg.c', 'openssl/ssl/ssl_asn1.c', 'openssl/ssl/ssl_cert.c', + 'openssl/ssl/ssl_cert_comp.c', 'openssl/ssl/ssl_ciph.c', 'openssl/ssl/ssl_conf.c', - 'openssl/ssl/ssl_err.c', 'openssl/ssl/ssl_err_legacy.c', 'openssl/ssl/ssl_init.c', 'openssl/ssl/ssl_lib.c', @@ -31,12 +32,60 @@ 'openssl/ssl/tls13_enc.c', 'openssl/ssl/tls_depr.c', 'openssl/ssl/tls_srp.c', - 'openssl/ssl/record/dtls1_bitmap.c', + 'openssl/ssl/quic/cc_newreno.c', + 'openssl/ssl/quic/json_enc.c', + 'openssl/ssl/quic/qlog.c', + 'openssl/ssl/quic/qlog_event_helpers.c', + 'openssl/ssl/quic/quic_ackm.c', + 'openssl/ssl/quic/quic_cfq.c', + 'openssl/ssl/quic/quic_channel.c', + 'openssl/ssl/quic/quic_demux.c', + 'openssl/ssl/quic/quic_engine.c', + 'openssl/ssl/quic/quic_fc.c', + 'openssl/ssl/quic/quic_fifd.c', + 'openssl/ssl/quic/quic_impl.c', + 'openssl/ssl/quic/quic_lcidm.c', + 'openssl/ssl/quic/quic_method.c', + 'openssl/ssl/quic/quic_obj.c', + 'openssl/ssl/quic/quic_port.c', + 'openssl/ssl/quic/quic_rcidm.c', + 'openssl/ssl/quic/quic_reactor.c', + 'openssl/ssl/quic/quic_reactor_wait_ctx.c', + 'openssl/ssl/quic/quic_record_rx.c', + 'openssl/ssl/quic/quic_record_shared.c', + 'openssl/ssl/quic/quic_record_tx.c', + 'openssl/ssl/quic/quic_record_util.c', + 'openssl/ssl/quic/quic_rstream.c', + 'openssl/ssl/quic/quic_rx_depack.c', + 'openssl/ssl/quic/quic_sf_list.c', + 'openssl/ssl/quic/quic_srt_gen.c', + 'openssl/ssl/quic/quic_srtm.c', + 'openssl/ssl/quic/quic_sstream.c', + 'openssl/ssl/quic/quic_statm.c', + 'openssl/ssl/quic/quic_stream_map.c', + 'openssl/ssl/quic/quic_thread_assist.c', + 'openssl/ssl/quic/quic_tls.c', + 'openssl/ssl/quic/quic_tls_api.c', + 'openssl/ssl/quic/quic_trace.c', + 'openssl/ssl/quic/quic_tserver.c', + 'openssl/ssl/quic/quic_txp.c', + 'openssl/ssl/quic/quic_txpim.c', + 'openssl/ssl/quic/quic_types.c', + 'openssl/ssl/quic/quic_wire.c', + 'openssl/ssl/quic/quic_wire_pkt.c', + 'openssl/ssl/quic/uint_set.c', 'openssl/ssl/record/rec_layer_d1.c', 'openssl/ssl/record/rec_layer_s3.c', - 'openssl/ssl/record/ssl3_buffer.c', - 'openssl/ssl/record/ssl3_record.c', - 'openssl/ssl/record/ssl3_record_tls13.c', + 'openssl/ssl/record/methods/dtls_meth.c', + 'openssl/ssl/record/methods/ssl3_meth.c', + 'openssl/ssl/record/methods/tls13_meth.c', + 'openssl/ssl/record/methods/tls1_meth.c', + 'openssl/ssl/record/methods/tls_common.c', + 'openssl/ssl/record/methods/tls_multib.c', + 'openssl/ssl/record/methods/tlsany_meth.c', + 'openssl/ssl/rio/poll_builder.c', + 'openssl/ssl/rio/poll_immediate.c', + 'openssl/ssl/rio/rio_notifier.c', 'openssl/ssl/statem/extensions.c', 'openssl/ssl/statem/extensions_clnt.c', 'openssl/ssl/statem/extensions_cust.c', @@ -150,6 +199,7 @@ 'openssl/crypto/bio/bss_conn.c', 'openssl/crypto/bio/bss_core.c', 'openssl/crypto/bio/bss_dgram.c', + 'openssl/crypto/bio/bss_dgram_pair.c', 'openssl/crypto/bio/bss_fd.c', 'openssl/crypto/bio/bss_file.c', 'openssl/crypto/bio/bss_log.c', @@ -210,6 +260,7 @@ 'openssl/crypto/cmp/cmp_client.c', 'openssl/crypto/cmp/cmp_ctx.c', 'openssl/crypto/cmp/cmp_err.c', + 'openssl/crypto/cmp/cmp_genm.c', 'openssl/crypto/cmp/cmp_hdr.c', 'openssl/crypto/cmp/cmp_http.c', 'openssl/crypto/cmp/cmp_msg.c', @@ -385,7 +436,9 @@ 'openssl/crypto/err/err_all.c', 'openssl/crypto/err/err_all_legacy.c', 'openssl/crypto/err/err_blocks.c', + 'openssl/crypto/err/err_mark.c', 'openssl/crypto/err/err_prn.c', + 'openssl/crypto/err/err_save.c', 'openssl/crypto/ess/ess_asn1.c', 'openssl/crypto/ess/ess_err.c', 'openssl/crypto/ess/ess_lib.c', @@ -468,7 +521,9 @@ 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -476,7 +531,11 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', + 'openssl/crypto/hpke/hpke.c', + 'openssl/crypto/hpke/hpke_util.c', 'openssl/crypto/http/http_client.c', 'openssl/crypto/http/http_err.c', 'openssl/crypto/http/http_lib.c', @@ -490,6 +549,7 @@ 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', 'openssl/crypto/bsearch.c', + 'openssl/crypto/comp_methods.c', 'openssl/crypto/context.c', 'openssl/crypto/core_algorithm.c', 'openssl/crypto/core_fetch.c', @@ -499,10 +559,13 @@ 'openssl/crypto/cryptlib.c', 'openssl/crypto/ctype.c', 'openssl/crypto/cversion.c', + 'openssl/crypto/defaults.c', 'openssl/crypto/der_writer.c', + 'openssl/crypto/deterministic_nonce.c', 'openssl/crypto/ebcdic.c', 'openssl/crypto/ex_data.c', 'openssl/crypto/getenv.c', + 'openssl/crypto/indicator_core.c', 'openssl/crypto/info.c', 'openssl/crypto/init.c', 'openssl/crypto/initthread.c', @@ -527,12 +590,16 @@ 'openssl/crypto/provider_core.c', 'openssl/crypto/provider_predefined.c', 'openssl/crypto/punycode.c', + 'openssl/crypto/quic_vlint.c', 'openssl/crypto/self_test_core.c', + 'openssl/crypto/sleep.c', 'openssl/crypto/sparse_array.c', + 'openssl/crypto/ssl_err.c', 'openssl/crypto/threads_lib.c', 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', 'openssl/crypto/trace.c', 'openssl/crypto/uid.c', 'openssl/crypto/md4/md4_dgst.c', @@ -542,6 +609,15 @@ 'openssl/crypto/md5/md5_sha1.c', 'openssl/crypto/mdc2/mdc2_one.c', 'openssl/crypto/mdc2/mdc2dgst.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -553,6 +629,7 @@ 'openssl/crypto/modes/siv128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/objects/o_names.c', 'openssl/crypto/objects/obj_dat.c', 'openssl/crypto/objects/obj_err.c', @@ -616,6 +693,7 @@ 'openssl/crypto/rand/rand_lib.c', 'openssl/crypto/rand/rand_meth.c', 'openssl/crypto/rand/rand_pool.c', + 'openssl/crypto/rand/rand_uniform.c', 'openssl/crypto/rand/randfile.c', 'openssl/crypto/rc2/rc2_cbc.c', 'openssl/crypto/rc2/rc2_ecb.c', @@ -664,6 +742,16 @@ 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', 'openssl/crypto/siphash/siphash.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/sm2/sm2_crypt.c', 'openssl/crypto/sm2/sm2_err.c', 'openssl/crypto/sm2/sm2_key.c', @@ -681,6 +769,12 @@ 'openssl/crypto/store/store_register.c', 'openssl/crypto/store/store_result.c', 'openssl/crypto/store/store_strings.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/crypto/ts/ts_asn1.c', 'openssl/crypto/ts/ts_conf.c', 'openssl/crypto/ts/ts_err.c', @@ -709,14 +803,22 @@ 'openssl/crypto/x509/pcy_map.c', 'openssl/crypto/x509/pcy_node.c', 'openssl/crypto/x509/pcy_tree.c', + 'openssl/crypto/x509/t_acert.c', 'openssl/crypto/x509/t_crl.c', 'openssl/crypto/x509/t_req.c', 'openssl/crypto/x509/t_x509.c', + 'openssl/crypto/x509/v3_aaa.c', + 'openssl/crypto/x509/v3_ac_tgt.c', 'openssl/crypto/x509/v3_addr.c', 'openssl/crypto/x509/v3_admis.c', 'openssl/crypto/x509/v3_akeya.c', 'openssl/crypto/x509/v3_akid.c', 'openssl/crypto/x509/v3_asid.c', + 'openssl/crypto/x509/v3_attrdesc.c', + 'openssl/crypto/x509/v3_attrmap.c', + 'openssl/crypto/x509/v3_audit_id.c', + 'openssl/crypto/x509/v3_authattid.c', + 'openssl/crypto/x509/v3_battcons.c', 'openssl/crypto/x509/v3_bcons.c', 'openssl/crypto/x509/v3_bitst.c', 'openssl/crypto/x509/v3_conf.c', @@ -725,12 +827,17 @@ 'openssl/crypto/x509/v3_enum.c', 'openssl/crypto/x509/v3_extku.c', 'openssl/crypto/x509/v3_genn.c', + 'openssl/crypto/x509/v3_group_ac.c', 'openssl/crypto/x509/v3_ia5.c', + 'openssl/crypto/x509/v3_ind_iss.c', 'openssl/crypto/x509/v3_info.c', 'openssl/crypto/x509/v3_int.c', + 'openssl/crypto/x509/v3_iobo.c', 'openssl/crypto/x509/v3_ist.c', 'openssl/crypto/x509/v3_lib.c', 'openssl/crypto/x509/v3_ncons.c', + 'openssl/crypto/x509/v3_no_ass.c', + 'openssl/crypto/x509/v3_no_rev_avail.c', 'openssl/crypto/x509/v3_pci.c', 'openssl/crypto/x509/v3_pcia.c', 'openssl/crypto/x509/v3_pcons.c', @@ -738,13 +845,20 @@ 'openssl/crypto/x509/v3_pmaps.c', 'openssl/crypto/x509/v3_prn.c', 'openssl/crypto/x509/v3_purp.c', + 'openssl/crypto/x509/v3_rolespec.c', 'openssl/crypto/x509/v3_san.c', + 'openssl/crypto/x509/v3_sda.c', + 'openssl/crypto/x509/v3_single_use.c', 'openssl/crypto/x509/v3_skid.c', + 'openssl/crypto/x509/v3_soa_id.c', 'openssl/crypto/x509/v3_sxnet.c', + 'openssl/crypto/x509/v3_timespec.c', 'openssl/crypto/x509/v3_tlsf.c', + 'openssl/crypto/x509/v3_usernotice.c', 'openssl/crypto/x509/v3_utf8.c', 'openssl/crypto/x509/v3_utl.c', 'openssl/crypto/x509/v3err.c', + 'openssl/crypto/x509/x509_acert.c', 'openssl/crypto/x509/x509_att.c', 'openssl/crypto/x509/x509_cmp.c', 'openssl/crypto/x509/x509_d2.c', @@ -762,6 +876,7 @@ 'openssl/crypto/x509/x509_v3.c', 'openssl/crypto/x509/x509_vfy.c', 'openssl/crypto/x509/x509_vpm.c', + 'openssl/crypto/x509/x509aset.c', 'openssl/crypto/x509/x509cset.c', 'openssl/crypto/x509/x509name.c', 'openssl/crypto/x509/x509rset.c', @@ -771,6 +886,7 @@ 'openssl/crypto/x509/x_attrib.c', 'openssl/crypto/x509/x_crl.c', 'openssl/crypto/x509/x_exten.c', + 'openssl/crypto/x509/x_ietfatt.c', 'openssl/crypto/x509/x_name.c', 'openssl/crypto/x509/x_pubkey.c', 'openssl/crypto/x509/x_req.c', @@ -802,6 +918,9 @@ 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c', 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', @@ -826,7 +945,13 @@ 'openssl/providers/implementations/ciphers/cipher_cts.c', 'openssl/providers/implementations/ciphers/cipher_null.c', 'openssl/providers/implementations/ciphers/cipher_sm4.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm_hw.c', 'openssl/providers/implementations/ciphers/cipher_sm4_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts_hw.c', 'openssl/providers/implementations/ciphers/cipher_tdes.c', 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', 'openssl/providers/implementations/ciphers/cipher_tdes_default.c', @@ -855,11 +980,16 @@ 'openssl/providers/implementations/encode_decode/encode_key2ms.c', 'openssl/providers/implementations/encode_decode/encode_key2text.c', 'openssl/providers/implementations/encode_decode/endecoder_common.c', + 'openssl/providers/implementations/encode_decode/ml_common_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_dsa_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_kem_codecs.c', 'openssl/providers/implementations/exchange/dh_exch.c', 'openssl/providers/implementations/exchange/ecdh_exch.c', 'openssl/providers/implementations/exchange/ecx_exch.c', 'openssl/providers/implementations/exchange/kdf_exch.c', + 'openssl/providers/implementations/kdfs/argon2.c', 'openssl/providers/implementations/kdfs/hkdf.c', + 'openssl/providers/implementations/kdfs/hmacdrbg_kdf.c', 'openssl/providers/implementations/kdfs/kbkdf.c', 'openssl/providers/implementations/kdfs/krb5kdf.c', 'openssl/providers/implementations/kdfs/pbkdf2.c', @@ -870,6 +1000,11 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ec_kem.c', + 'openssl/providers/implementations/kem/ecx_kem.c', + 'openssl/providers/implementations/kem/kem_util.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -877,7 +1012,11 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/blake2b_mac.c', 'openssl/providers/implementations/macs/blake2s_mac.c', 'openssl/providers/implementations/macs/cmac_prov.c', @@ -886,12 +1025,12 @@ 'openssl/providers/implementations/macs/kmac_prov.c', 'openssl/providers/implementations/macs/poly1305_prov.c', 'openssl/providers/implementations/macs/siphash_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', 'openssl/providers/implementations/rands/seed_src.c', + 'openssl/providers/implementations/rands/seed_src_jitter.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/rands/seeding/rand_cpu_x86.c', 'openssl/providers/implementations/rands/seeding/rand_tsc.c', @@ -901,17 +1040,24 @@ 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', 'openssl/providers/implementations/signature/sm2_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', 'openssl/providers/implementations/storemgmt/file_store.c', 'openssl/providers/implementations/storemgmt/file_store_any2obj.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/providers/implementations/storemgmt/winstore_store.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -922,7 +1068,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/implementations/ciphers/cipher_blowfish.c', 'openssl/providers/implementations/ciphers/cipher_blowfish_hw.c', 'openssl/providers/implementations/ciphers/cipher_cast5.c', @@ -947,16 +1093,20 @@ 'openssl/providers/implementations/digests/ripemd_prov.c', 'openssl/providers/implementations/digests/wp_prov.c', 'openssl/providers/implementations/kdfs/pbkdf1.c', + 'openssl/providers/implementations/kdfs/pvkkdf.c', 'openssl/providers/prov_running.c', 'openssl/providers/legacyprov.c', ], 'openssl_sources_VC-WIN64A': [ + './config/archs/VC-WIN64A/no-asm/crypto/params_idx.c', './config/archs/VC-WIN64A/no-asm/providers/common/der/der_sm2_gen.c', './config/archs/VC-WIN64A/no-asm/providers/common/der/der_digests_gen.c', './config/archs/VC-WIN64A/no-asm/providers/common/der/der_dsa_gen.c', './config/archs/VC-WIN64A/no-asm/providers/common/der/der_ec_gen.c', './config/archs/VC-WIN64A/no-asm/providers/common/der/der_ecx_gen.c', + './config/archs/VC-WIN64A/no-asm/providers/common/der/der_ml_dsa_gen.c', './config/archs/VC-WIN64A/no-asm/providers/common/der/der_rsa_gen.c', + './config/archs/VC-WIN64A/no-asm/providers/common/der/der_slh_dsa_gen.c', './config/archs/VC-WIN64A/no-asm/providers/common/der/der_wrap_gen.c', ], 'openssl_defines_VC-WIN64A': [ diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/providers/common/der/der_ml_dsa_gen.c b/deps/openssl/config/archs/VC-WIN64A/no-asm/providers/common/der/der_ml_dsa_gen.c new file mode 100644 index 00000000000000..4a8a113a268578 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/providers/common/der/der_ml_dsa_gen.c @@ -0,0 +1,37 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_ml_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44] = { + DER_OID_V_id_ml_dsa_44 +}; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65] = { + DER_OID_V_id_ml_dsa_65 +}; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87] = { + DER_OID_V_id_ml_dsa_87 +}; + diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/providers/common/der/der_slh_dsa_gen.c b/deps/openssl/config/archs/VC-WIN64A/no-asm/providers/common/der/der_slh_dsa_gen.c new file mode 100644 index 00000000000000..1419a9515097dd --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/providers/common/der/der_slh_dsa_gen.c @@ -0,0 +1,100 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_slh_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s] = { + DER_OID_V_id_slh_dsa_sha2_128s +}; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f] = { + DER_OID_V_id_slh_dsa_sha2_128f +}; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s] = { + DER_OID_V_id_slh_dsa_sha2_192s +}; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f] = { + DER_OID_V_id_slh_dsa_sha2_192f +}; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s] = { + DER_OID_V_id_slh_dsa_sha2_256s +}; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f] = { + DER_OID_V_id_slh_dsa_sha2_256f +}; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s] = { + DER_OID_V_id_slh_dsa_shake_128s +}; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f] = { + DER_OID_V_id_slh_dsa_shake_128f +}; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s] = { + DER_OID_V_id_slh_dsa_shake_192s +}; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f] = { + DER_OID_V_id_slh_dsa_shake_192f +}; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s] = { + DER_OID_V_id_slh_dsa_shake_256s +}; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f] = { + DER_OID_V_id_slh_dsa_shake_256f +}; + diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/providers/common/include/prov/der_ml_dsa.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/providers/common/include/prov/der_ml_dsa.h new file mode 100644 index 00000000000000..c55f780ab4527c --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/providers/common/include/prov/der_ml_dsa.h @@ -0,0 +1,40 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_ml_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +#define DER_OID_V_id_ml_dsa_44 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x11 +#define DER_OID_SZ_id_ml_dsa_44 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44]; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +#define DER_OID_V_id_ml_dsa_65 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x12 +#define DER_OID_SZ_id_ml_dsa_65 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65]; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +#define DER_OID_V_id_ml_dsa_87 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x13 +#define DER_OID_SZ_id_ml_dsa_87 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87]; + + +int ossl_DER_w_algorithmIdentifier_ML_DSA(WPACKET *pkt, int tag, ML_DSA_KEY *key); diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/providers/common/include/prov/der_slh_dsa.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/providers/common/include/prov/der_slh_dsa.h new file mode 100644 index 00000000000000..760f8e7699be72 --- /dev/null +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/providers/common/include/prov/der_slh_dsa.h @@ -0,0 +1,103 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_slh_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x14 +#define DER_OID_SZ_id_slh_dsa_sha2_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s]; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x15 +#define DER_OID_SZ_id_slh_dsa_sha2_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f]; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x16 +#define DER_OID_SZ_id_slh_dsa_sha2_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s]; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x17 +#define DER_OID_SZ_id_slh_dsa_sha2_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f]; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x18 +#define DER_OID_SZ_id_slh_dsa_sha2_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s]; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x19 +#define DER_OID_SZ_id_slh_dsa_sha2_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f]; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +#define DER_OID_V_id_slh_dsa_shake_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1A +#define DER_OID_SZ_id_slh_dsa_shake_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s]; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +#define DER_OID_V_id_slh_dsa_shake_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1B +#define DER_OID_SZ_id_slh_dsa_shake_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f]; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +#define DER_OID_V_id_slh_dsa_shake_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1C +#define DER_OID_SZ_id_slh_dsa_shake_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s]; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +#define DER_OID_V_id_slh_dsa_shake_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1D +#define DER_OID_SZ_id_slh_dsa_shake_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f]; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +#define DER_OID_V_id_slh_dsa_shake_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1E +#define DER_OID_SZ_id_slh_dsa_shake_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s]; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +#define DER_OID_V_id_slh_dsa_shake_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1F +#define DER_OID_SZ_id_slh_dsa_shake_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f]; + + +int ossl_DER_w_algorithmIdentifier_SLH_DSA(WPACKET *pkt, int tag, SLH_DSA_KEY *key); diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/apps/progs.c b/deps/openssl/config/archs/aix64-gcc-as/asm/apps/progs.c index 43cef00799b86e..acc204a3e6e781 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/apps/progs.c +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/apps/progs.c @@ -89,6 +89,7 @@ FUNCTION functions[] = { {FT_general, "s_time", s_time_main, s_time_options, NULL, NULL}, #endif {FT_general, "sess_id", sess_id_main, sess_id_options, NULL, NULL}, + {FT_general, "skeyutl", skeyutl_main, skeyutl_options, NULL, NULL}, {FT_general, "smime", smime_main, smime_options, NULL, NULL}, {FT_general, "speed", speed_main, speed_options, NULL, NULL}, {FT_general, "spkac", spkac_main, spkac_options, NULL, NULL}, @@ -225,9 +226,15 @@ FUNCTION functions[] = { {FT_cipher, "camellia-256-ecb", enc_main, enc_options, NULL}, #endif {FT_cipher, "base64", enc_main, enc_options, NULL}, -#ifdef ZLIB +#ifndef OPENSSL_NO_ZLIB {FT_cipher, "zlib", enc_main, enc_options, NULL}, #endif +#ifndef OPENSSL_NO_BROTLI + {FT_cipher, "brotli", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ZSTD + {FT_cipher, "zstd", enc_main, enc_options, NULL}, +#endif #ifndef OPENSSL_NO_DES {FT_cipher, "des", enc_main, enc_options, NULL}, #endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/configdata.pm b/deps/openssl/config/archs/aix64-gcc-as/asm/configdata.pm index 400d206fd0c3f7..3820dffd9401c8 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/configdata.pm +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/configdata.pm @@ -18,6 +18,7 @@ our %config = ( "ARFLAGS" => [ "qc" ], + "ASFLAGS" => [], "CC" => "gcc", "CFLAGS" => [ "-O" @@ -27,14 +28,16 @@ our %config = ( "CPPINCLUDES" => [], "CXXFLAGS" => [], "FIPSKEY" => "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813", + "FIPS_VENDOR" => "OpenSSL FIPS Provider", "HASHBANGPERL" => "/usr/bin/env perl", "LDFLAGS" => [], "LDLIBS" => [], + "OBJCOPY" => "objcopy", "PERL" => "/usr/bin/perl", "RANLIB" => "ranlib -X64", "RC" => "windres", "RCFLAGS" => [], - "api" => "30000", + "api" => "30500", "b32" => "0", "b64" => "0", "b64l" => "1", @@ -56,11 +59,13 @@ our %config = ( "doc/build.info", "test/build.info", "engines/build.info", + "exporters/build.info", "crypto/objects/build.info", "crypto/buffer/build.info", "crypto/bio/build.info", "crypto/stack/build.info", "crypto/lhash/build.info", + "crypto/hashtable/build.info", "crypto/rand/build.info", "crypto/evp/build.info", "crypto/asn1/build.info", @@ -78,6 +83,7 @@ our %config = ( "crypto/md5/build.info", "crypto/sha/build.info", "crypto/mdc2/build.info", + "crypto/ml_kem/build.info", "crypto/hmac/build.info", "crypto/ripemd/build.info", "crypto/whrlpool/build.info", @@ -119,11 +125,19 @@ our %config = ( "crypto/cmp/build.info", "crypto/encode_decode/build.info", "crypto/ffc/build.info", + "crypto/hpke/build.info", + "crypto/thread/build.info", + "crypto/ml_dsa/build.info", + "crypto/slh_dsa/build.info", + "ssl/record/build.info", + "ssl/rio/build.info", + "ssl/quic/build.info", "apps/lib/build.info", "providers/common/build.info", "providers/implementations/build.info", "providers/fips/build.info", "doc/man1/build.info", + "ssl/record/methods/build.info", "providers/common/der/build.info", "providers/implementations/digests/build.info", "providers/implementations/ciphers/build.info", @@ -137,6 +151,7 @@ our %config = ( "providers/implementations/encode_decode/build.info", "providers/implementations/storemgmt/build.info", "providers/implementations/kem/build.info", + "providers/implementations/skeymgmt/build.info", "providers/implementations/rands/seeding/build.info" ], "build_metadata" => "", @@ -156,7 +171,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.17", + "full_version" => "3.5.2", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -165,37 +180,52 @@ our %config = ( "libdir" => "", "major" => "3", "makedep_scheme" => "gcc", - "minor" => "0", + "minor" => "5", "openssl_api_defines" => [ - "OPENSSL_CONFIGURED_API=30000" + "OPENSSL_CONFIGURED_API=30500" ], "openssl_feature_defines" => [ "OPENSSL_RAND_SEED_OS", "OPENSSL_THREADS", "OPENSSL_NO_AFALGENG", "OPENSSL_NO_ASAN", + "OPENSSL_NO_BROTLI", + "OPENSSL_NO_BROTLI_DYNAMIC", "OPENSSL_NO_COMP", "OPENSSL_NO_CRYPTO_MDEBUG", "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE", + "OPENSSL_NO_DEMOS", "OPENSSL_NO_DEVCRYPTOENG", "OPENSSL_NO_EC_NISTP_64_GCC_128", "OPENSSL_NO_EGD", "OPENSSL_NO_EXTERNAL_TESTS", + "OPENSSL_NO_FIPS_JITTER", "OPENSSL_NO_FUZZ_AFL", "OPENSSL_NO_FUZZ_LIBFUZZER", + "OPENSSL_NO_H3DEMO", + "OPENSSL_NO_HQINTEROP", + "OPENSSL_NO_JITTER", "OPENSSL_NO_KTLS", "OPENSSL_NO_LOADERENG", "OPENSSL_NO_MD2", "OPENSSL_NO_MSAN", + "OPENSSL_NO_PIE", "OPENSSL_NO_RC5", "OPENSSL_NO_SCTP", "OPENSSL_NO_SSL3", "OPENSSL_NO_SSL3_METHOD", + "OPENSSL_NO_SSLKEYLOG", + "OPENSSL_NO_TFO", "OPENSSL_NO_TRACE", "OPENSSL_NO_UBSAN", "OPENSSL_NO_UNIT_TEST", "OPENSSL_NO_UPLINK", "OPENSSL_NO_WEAK_SSL_CIPHERS", + "OPENSSL_NO_WINSTORE", + "OPENSSL_NO_ZLIB", + "OPENSSL_NO_ZLIB_DYNAMIC", + "OPENSSL_NO_ZSTD", + "OPENSSL_NO_ZSTD_DYNAMIC", "OPENSSL_NO_DYNAMIC_ENGINE" ], "openssl_other_defines" => [ @@ -205,11 +235,11 @@ our %config = ( "OPENSSL_SYS_AIX" ], "openssldir" => "", - "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "17", + "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", + "patch" => "2", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", - "perl_version" => "5.38.2", + "perl_version" => "5.34.0", "perlargv" => [ "no-comp", "no-shared", @@ -239,6 +269,7 @@ our %config = ( "LDLIBS" => undef, "MT" => undef, "MTFLAGS" => undef, + "OBJCOPY" => undef, "OPENSSL_LOCAL_CONFIG_DIR" => undef, "PERL" => undef, "RANLIB" => undef, @@ -258,11 +289,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "1 Jul 2025", + "release_date" => "5 Aug 2025", "shlib_version" => "3", "sourcedir" => ".", "target" => "aix64-gcc-as", - "version" => "3.0.17" + "version" => "3.5.2" ); our %target = ( "AR" => "ar -X64", @@ -270,6 +301,7 @@ our %target = ( "CC" => "gcc", "CFLAGS" => "-O", "HASHBANGPERL" => "/usr/bin/env perl", + "OBJCOPY" => "objcopy", "RANLIB" => "ranlib -X64", "RC" => "windres", "_conf_fname_int" => [ @@ -281,6 +313,8 @@ our %target = ( "Configurations/shared-info.pl" ], "asm_arch" => "ppc64", + "bin_cflags" => "", + "bin_lflags" => "", "bn_ops" => "SIXTY_FOUR_BIT_LONG RC4_CHAR", "build_file" => "Makefile", "build_scheme" => [ @@ -323,6 +357,8 @@ our %target = ( our @disablables = ( "acvp-tests", "afalgeng", + "apps", + "argon2", "aria", "asan", "asm", @@ -333,11 +369,14 @@ our @disablables = ( "autoload-config", "bf", "blake2", + "brotli", + "brotli-dynamic", "buildtest-c++", "bulk", "cached-fetch", "camellia", "capieng", + "winstore", "cast", "chacha", "cmac", @@ -346,11 +385,16 @@ our @disablables = ( "comp", "crypto-mdebug", "ct", + "default-thread-pool", + "demos", + "h3demo", + "hqinterop", "deprecated", "des", "devcryptoeng", "dgram", "dh", + "docs", "dsa", "dso", "dtls", @@ -360,6 +404,7 @@ our @disablables = ( "ec_nistp_64_gcc_128", "ecdh", "ecdsa", + "ecx", "egd", "engine", "err", @@ -367,10 +412,15 @@ our @disablables = ( "filenames", "fips", "fips-securitychecks", + "fips-post", + "fips-jitter", "fuzz-afl", "fuzz-libfuzzer", "gost", + "http", "idea", + "integrity-only-ciphers", + "jitter", "ktls", "legacy", "loadereng", @@ -378,6 +428,8 @@ our @disablables = ( "md2", "md4", "mdc2", + "ml-dsa", + "ml-kem", "module", "msan", "multiblock", @@ -386,10 +438,13 @@ our @disablables = ( "ocsp", "padlockeng", "pic", + "pie", "pinshared", "poly1305", "posix-io", "psk", + "quic", + "unstable-qlog", "rc2", "rc4", "rc5", @@ -403,7 +458,9 @@ our @disablables = ( "shared", "siphash", "siv", + "slh-dsa", "sm2", + "sm2-precomp", "sm3", "sm4", "sock", @@ -414,9 +471,13 @@ our @disablables = ( "ssl-trace", "static-engine", "stdio", + "sslkeylog", "tests", + "tfo", + "thread-pool", "threads", "tls", + "tls-deprecated-ec", "trace", "ts", "ubsan", @@ -427,6 +488,8 @@ our @disablables = ( "whirlpool", "zlib", "zlib-dynamic", + "zstd", + "zstd-dynamic", "ssl3", "ssl3-method", "tls1", @@ -447,33 +510,46 @@ our @disablables_int = ( our %disabled = ( "afalgeng" => "option", "asan" => "default", + "brotli" => "default", + "brotli-dynamic" => "default", "buildtest-c++" => "default", "comp" => "option", "crypto-mdebug" => "default", "crypto-mdebug-backtrace" => "default", + "demos" => "default", "devcryptoeng" => "default", "dynamic-engine" => "cascade", "ec_nistp_64_gcc_128" => "default", "egd" => "default", "external-tests" => "default", + "fips-jitter" => "default", "fuzz-afl" => "default", "fuzz-libfuzzer" => "default", + "h3demo" => "default", + "hqinterop" => "default", + "jitter" => "default", "ktls" => "default", "loadereng" => "cascade", "md2" => "default", "msan" => "default", + "pie" => "default", "rc5" => "default", "sctp" => "default", "shared" => "option", "ssl3" => "default", "ssl3-method" => "default", + "sslkeylog" => "default", + "tfo" => "default", "trace" => "default", "ubsan" => "default", "unit-test" => "default", "uplink" => "no uplink_arch", "weak-ssl-ciphers" => "default", + "winstore" => "not-windows", "zlib" => "default", - "zlib-dynamic" => "default" + "zlib-dynamic" => "default", + "zstd" => "default", + "zstd-dynamic" => "default" ); our %withargs = (); our %unified_info = ( @@ -699,6 +775,11 @@ our %unified_info = ( "pod" => "1" } }, + "doc/man1/openssl-skeyutl.pod" => { + "doc/man1/openssl-skeyutl.pod.in" => { + "pod" => "1" + } + }, "doc/man1/openssl-smime.pod" => { "doc/man1/openssl-smime.pod.in" => { "pod" => "1" @@ -756,6 +837,21 @@ our %unified_info = ( } }, "generate" => { + "exporters/OpenSSLConfig.cmake" => { + "exporter" => "cmake" + }, + "exporters/OpenSSLConfigVersion.cmake" => { + "exporter" => "cmake" + }, + "exporters/libcrypto.pc" => { + "exporter" => "pkg-config" + }, + "exporters/libssl.pc" => { + "exporter" => "pkg-config" + }, + "exporters/openssl.pc" => { + "exporter" => "pkg-config" + }, "include/openssl/configuration.h" => { "skip" => "1" } @@ -776,6 +872,9 @@ our %unified_info = ( "providers/liblegacy.a" => { "noinst" => "1" }, + "providers/libtemplate.a" => { + "noinst" => "1" + }, "test/libtestutil.a" => { "has_main" => "1", "noinst" => "1" @@ -793,6 +892,9 @@ our %unified_info = ( } }, "programs" => { + "fuzz/acert-test" => { + "noinst" => "1" + }, "fuzz/asn1-test" => { "noinst" => "1" }, @@ -823,9 +925,60 @@ our %unified_info = ( "fuzz/ct-test" => { "noinst" => "1" }, + "fuzz/decoder-test" => { + "noinst" => "1" + }, + "fuzz/dtlsclient-test" => { + "noinst" => "1" + }, + "fuzz/dtlsserver-test" => { + "noinst" => "1" + }, + "fuzz/hashtable-test" => { + "noinst" => "1" + }, + "fuzz/ml-dsa-test" => { + "noinst" => "1" + }, + "fuzz/ml-kem-test" => { + "noinst" => "1" + }, + "fuzz/pem-test" => { + "noinst" => "1" + }, + "fuzz/provider-test" => { + "noinst" => "1" + }, + "fuzz/punycode-test" => { + "noinst" => "1" + }, + "fuzz/quic-client-test" => { + "noinst" => "1" + }, + "fuzz/quic-lcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-rcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-server-test" => { + "noinst" => "1" + }, + "fuzz/quic-srtm-test" => { + "noinst" => "1" + }, "fuzz/server-test" => { "noinst" => "1" }, + "fuzz/slh-dsa-test" => { + "noinst" => "1" + }, + "fuzz/smime-test" => { + "noinst" => "1" + }, + "fuzz/v3name-test" => { + "noinst" => "1" + }, "fuzz/x509-test" => { "noinst" => "1" }, @@ -877,18 +1030,30 @@ our %unified_info = ( "test/bftest" => { "noinst" => "1" }, + "test/bio_addr_test" => { + "noinst" => "1" + }, + "test/bio_base64_test" => { + "noinst" => "1" + }, "test/bio_callback_test" => { "noinst" => "1" }, "test/bio_core_test" => { "noinst" => "1" }, + "test/bio_dgram_test" => { + "noinst" => "1" + }, "test/bio_enc_test" => { "noinst" => "1" }, "test/bio_memleak_test" => { "noinst" => "1" }, + "test/bio_meth_test" => { + "noinst" => "1" + }, "test/bio_prefix_text" => { "noinst" => "1" }, @@ -898,6 +1063,9 @@ our %unified_info = ( "test/bio_readbuffer_test" => { "noinst" => "1" }, + "test/bio_tfo_test" => { + "noinst" => "1" + }, "test/bioprinttest" => { "noinst" => "1" }, @@ -907,6 +1075,9 @@ our %unified_info = ( "test/bntest" => { "noinst" => "1" }, + "test/build_wincrypt_test" => { + "noinst" => "1" + }, "test/buildtest_c_aes" => { "noinst" => "1" }, @@ -922,6 +1093,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => { "noinst" => "1" }, + "test/buildtest_c_byteorder" => { + "noinst" => "1" + }, "test/buildtest_c_camellia" => { "noinst" => "1" }, @@ -946,9 +1120,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => { "noinst" => "1" }, - "test/buildtest_c_core_names" => { - "noinst" => "1" - }, "test/buildtest_c_core_object" => { "noinst" => "1" }, @@ -973,6 +1144,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => { "noinst" => "1" }, + "test/buildtest_c_e_ostime" => { + "noinst" => "1" + }, "test/buildtest_c_ebcdic" => { "noinst" => "1" }, @@ -1000,12 +1174,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => { "noinst" => "1" }, + "test/buildtest_c_hpke" => { + "noinst" => "1" + }, "test/buildtest_c_http" => { "noinst" => "1" }, "test/buildtest_c_idea" => { "noinst" => "1" }, + "test/buildtest_c_indicator" => { + "noinst" => "1" + }, "test/buildtest_c_kdf" => { "noinst" => "1" }, @@ -1021,6 +1201,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => { "noinst" => "1" }, + "test/buildtest_c_ml_kem" => { + "noinst" => "1" + }, "test/buildtest_c_modes" => { "noinst" => "1" }, @@ -1051,6 +1234,9 @@ our %unified_info = ( "test/buildtest_c_provider" => { "noinst" => "1" }, + "test/buildtest_c_quic" => { + "noinst" => "1" + }, "test/buildtest_c_rand" => { "noinst" => "1" }, @@ -1093,6 +1279,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => { "noinst" => "1" }, + "test/buildtest_c_thread" => { + "noinst" => "1" + }, "test/buildtest_c_tls1" => { "noinst" => "1" }, @@ -1108,6 +1297,12 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => { "noinst" => "1" }, + "test/byteorder_test" => { + "noinst" => "1" + }, + "test/ca_internals_test" => { + "noinst" => "1" + }, "test/casttest" => { "noinst" => "1" }, @@ -1192,6 +1387,9 @@ our %unified_info = ( "test/danetest" => { "noinst" => "1" }, + "test/decoder_propq_test" => { + "noinst" => "1" + }, "test/defltfips_test" => { "noinst" => "1" }, @@ -1264,15 +1462,24 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => { "noinst" => "1" }, + "test/evp_pkey_dhkem_test" => { + "noinst" => "1" + }, "test/evp_pkey_dparams_test" => { "noinst" => "1" }, "test/evp_pkey_provided_test" => { "noinst" => "1" }, + "test/evp_skey_test" => { + "noinst" => "1" + }, "test/evp_test" => { "noinst" => "1" }, + "test/evp_xof_test" => { + "noinst" => "1" + }, "test/exdatatest" => { "noinst" => "1" }, @@ -1300,6 +1507,9 @@ our %unified_info = ( "test/hmactest" => { "noinst" => "1" }, + "test/hpke_test" => { + "noinst" => "1" + }, "test/http_test" => { "noinst" => "1" }, @@ -1309,12 +1519,18 @@ our %unified_info = ( "test/igetest" => { "noinst" => "1" }, + "test/json_test" => { + "noinst" => "1" + }, "test/keymgmt_internal_test" => { "noinst" => "1" }, "test/lhash_test" => { "noinst" => "1" }, + "test/list_test" => { + "noinst" => "1" + }, "test/localetest" => { "noinst" => "1" }, @@ -1324,9 +1540,21 @@ our %unified_info = ( "test/mdc2test" => { "noinst" => "1" }, + "test/membio_test" => { + "noinst" => "1" + }, "test/memleaktest" => { "noinst" => "1" }, + "test/ml_dsa_test" => { + "noinst" => "1" + }, + "test/ml_kem_evp_extra_test" => { + "noinst" => "1" + }, + "test/ml_kem_internal_test" => { + "noinst" => "1" + }, "test/modes_internal_test" => { "noinst" => "1" }, @@ -1345,6 +1573,9 @@ our %unified_info = ( "test/packettest" => { "noinst" => "1" }, + "test/pairwise_fail_test" => { + "noinst" => "1" + }, "test/param_build_test" => { "noinst" => "1" }, @@ -1369,6 +1600,9 @@ our %unified_info = ( "test/pemtest" => { "noinst" => "1" }, + "test/pkcs12_api_test" => { + "noinst" => "1" + }, "test/pkcs12_format_test" => { "noinst" => "1" }, @@ -1384,6 +1618,9 @@ our %unified_info = ( "test/poly1305_internal_test" => { "noinst" => "1" }, + "test/priority_queue_test" => { + "noinst" => "1" + }, "test/property_test" => { "noinst" => "1" }, @@ -1393,6 +1630,9 @@ our %unified_info = ( "test/provfetchtest" => { "noinst" => "1" }, + "test/provider_default_search_path_test" => { + "noinst" => "1" + }, "test/provider_fallback_test" => { "noinst" => "1" }, @@ -1411,6 +1651,72 @@ our %unified_info = ( "test/punycode_test" => { "noinst" => "1" }, + "test/quic_ackm_test" => { + "noinst" => "1" + }, + "test/quic_cc_test" => { + "noinst" => "1" + }, + "test/quic_cfq_test" => { + "noinst" => "1" + }, + "test/quic_client_test" => { + "noinst" => "1" + }, + "test/quic_fc_test" => { + "noinst" => "1" + }, + "test/quic_fifd_test" => { + "noinst" => "1" + }, + "test/quic_lcidm_test" => { + "noinst" => "1" + }, + "test/quic_multistream_test" => { + "noinst" => "1" + }, + "test/quic_newcid_test" => { + "noinst" => "1" + }, + "test/quic_qlog_test" => { + "noinst" => "1" + }, + "test/quic_radix_test" => { + "noinst" => "1" + }, + "test/quic_rcidm_test" => { + "noinst" => "1" + }, + "test/quic_record_test" => { + "noinst" => "1" + }, + "test/quic_srt_gen_test" => { + "noinst" => "1" + }, + "test/quic_srtm_test" => { + "noinst" => "1" + }, + "test/quic_stream_test" => { + "noinst" => "1" + }, + "test/quic_tserver_test" => { + "noinst" => "1" + }, + "test/quic_txp_test" => { + "noinst" => "1" + }, + "test/quic_txpim_test" => { + "noinst" => "1" + }, + "test/quic_wire_test" => { + "noinst" => "1" + }, + "test/quicapitest" => { + "noinst" => "1" + }, + "test/quicfaultstest" => { + "noinst" => "1" + }, "test/rand_status_test" => { "noinst" => "1" }, @@ -1426,12 +1732,15 @@ our %unified_info = ( "test/rc5test" => { "noinst" => "1" }, - "test/rdrand_sanitytest" => { + "test/rdcpu_sanitytest" => { "noinst" => "1" }, "test/recordlentest" => { "noinst" => "1" }, + "test/rpktest" => { + "noinst" => "1" + }, "test/rsa_complex" => { "noinst" => "1" }, @@ -1444,6 +1753,12 @@ our %unified_info = ( "test/rsa_test" => { "noinst" => "1" }, + "test/rsa_x931_test" => { + "noinst" => "1" + }, + "test/safe_math_test" => { + "noinst" => "1" + }, "test/sanitytest" => { "noinst" => "1" }, @@ -1459,6 +1774,9 @@ our %unified_info = ( "test/siphash_internal_test" => { "noinst" => "1" }, + "test/slh_dsa_test" => { + "noinst" => "1" + }, "test/sm2_internal_test" => { "noinst" => "1" }, @@ -1480,6 +1798,9 @@ our %unified_info = ( "test/ssl_ctx_test" => { "noinst" => "1" }, + "test/ssl_handshake_rtt_test" => { + "noinst" => "1" + }, "test/ssl_old_test" => { "noinst" => "1" }, @@ -1501,12 +1822,18 @@ our %unified_info = ( "test/stack_test" => { "noinst" => "1" }, + "test/strtoultest" => { + "noinst" => "1" + }, "test/sysdefaulttest" => { "noinst" => "1" }, "test/test_test" => { "noinst" => "1" }, + "test/threadpool_test" => { + "noinst" => "1" + }, "test/threadstest" => { "noinst" => "1" }, @@ -1516,12 +1843,18 @@ our %unified_info = ( "test/time_offset_test" => { "noinst" => "1" }, + "test/time_test" => { + "noinst" => "1" + }, "test/tls13ccstest" => { "noinst" => "1" }, "test/tls13encryptiontest" => { "noinst" => "1" }, + "test/tls13groupselection_test" => { + "noinst" => "1" + }, "test/trace_api_test" => { "noinst" => "1" }, @@ -1549,6 +1882,9 @@ our %unified_info = ( "test/wpackettest" => { "noinst" => "1" }, + "test/x509_acert_test" => { + "noinst" => "1" + }, "test/x509_check_cert_pkey_test" => { "noinst" => "1" }, @@ -1558,6 +1894,15 @@ our %unified_info = ( "test/x509_internal_test" => { "noinst" => "1" }, + "test/x509_load_cert_file_test" => { + "noinst" => "1" + }, + "test/x509_req_test" => { + "noinst" => "1" + }, + "test/x509_test" => { + "noinst" => "1" + }, "test/x509_time_test" => { "noinst" => "1" }, @@ -1639,6 +1984,9 @@ our %unified_info = ( "VPAES_ASM", "X25519_ASM" ], + "test/endecode_test" => [ + "STATIC_LEGACY" + ], "test/evp_extra_test" => [ "STATIC_LEGACY" ], @@ -1651,14 +1999,21 @@ our %unified_info = ( }, "depends" => { "" => [ + "OpenSSLConfigVersion.cmake", + "crypto/params_idx.c", + "exporters/OpenSSLConfigVersion.cmake", + "exporters/openssl.pc", "include/crypto/bn_conf.h", "include/crypto/dso_conf.h", + "include/internal/param_names.h", "include/openssl/asn1.h", "include/openssl/asn1t.h", "include/openssl/bio.h", "include/openssl/cmp.h", "include/openssl/cms.h", + "include/openssl/comp.h", "include/openssl/conf.h", + "include/openssl/core_names.h", "include/openssl/crmf.h", "include/openssl/crypto.h", "include/openssl/ct.h", @@ -1675,10 +2030,22 @@ our %unified_info = ( "include/openssl/ssl.h", "include/openssl/ui.h", "include/openssl/x509.h", + "include/openssl/x509_acert.h", "include/openssl/x509_vfy.h", "include/openssl/x509v3.h", + "openssl.pc", "test/provider_internal_test.cnf" ], + "OpenSSLConfig.cmake" => [ + "builddata.pm" + ], + "OpenSSLConfigVersion.cmake" => [ + "OpenSSLConfig.cmake", + "builddata.pm" + ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/progs.h" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/progs.h" ], @@ -1824,6 +2191,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/progs.h" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/progs.h" + ], "apps/openssl-bin-smime.o" => [ "apps/progs.h" ], @@ -1912,6 +2282,9 @@ our %unified_info = ( "crypto/libcrypto-lib-info.o" => [ "crypto/buildinf.h" ], + "crypto/params_idx.c" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "crypto/rc4/rc4-586.S" => [ "crypto/perlasm/x86asm.pl" ], @@ -2077,6 +2450,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -2218,6 +2594,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -2254,6 +2633,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -2269,6 +2651,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -2341,6 +2726,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -2407,6 +2795,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -2506,6 +2897,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -2644,6 +3041,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -2761,6 +3161,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -2848,6 +3254,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -2920,9 +3329,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -2938,12 +3353,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -3013,9 +3434,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -3025,12 +3455,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -3046,9 +3488,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -3073,6 +3521,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -3088,6 +3539,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -3124,6 +3578,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -3397,6 +3854,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -3436,6 +3896,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -3457,6 +3920,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -3571,6 +4037,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -3598,9 +4067,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -3616,6 +4097,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -3625,12 +4109,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -3649,12 +4139,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -3664,9 +4166,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -3679,9 +4187,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -3697,24 +4217,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -3727,6 +4268,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -3736,8 +4283,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -3757,6 +4304,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -3805,6 +4367,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -3871,6 +4436,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -3994,9 +4562,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -4012,6 +4586,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -4036,9 +4613,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -4072,6 +4658,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -4129,15 +4718,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -4147,6 +4748,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -4168,9 +4772,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -4186,6 +4796,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -4198,9 +4811,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -4231,9 +4841,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -4249,12 +4856,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -4309,6 +4970,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -4318,9 +4982,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -4468,6 +5129,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -4609,6 +5273,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -4645,6 +5312,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -4660,6 +5330,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -4732,6 +5405,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -4798,6 +5474,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -4897,6 +5576,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -5035,6 +5720,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -5152,6 +5840,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -5239,6 +5933,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -5311,9 +6008,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -5329,12 +6032,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -5404,9 +6113,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -5416,12 +6134,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -5437,9 +6167,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -5464,6 +6200,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -5479,6 +6218,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -5515,6 +6257,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -5788,6 +6533,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -5827,6 +6575,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -5848,6 +6599,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -5962,6 +6716,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -5989,9 +6746,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -6007,6 +6776,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -6016,12 +6788,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -6040,12 +6818,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -6055,9 +6845,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -6070,9 +6866,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -6088,24 +6896,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -6118,6 +6947,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -6127,8 +6962,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -6148,6 +6983,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -6196,6 +7046,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -6262,6 +7115,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -6385,9 +7241,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -6403,6 +7265,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -6427,9 +7292,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -6463,6 +7337,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -6520,15 +7397,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -6538,6 +7427,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -6559,9 +7451,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -6577,6 +7475,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -6589,9 +7490,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -6622,9 +7520,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -6640,12 +7535,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -6700,6 +7649,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -6709,9 +7661,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -6891,6 +7840,10 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod.in", "doc/perlvars.pm" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in", + "doc/perlvars.pm" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in", "doc/perlvars.pm" @@ -6930,6 +7883,27 @@ our %unified_info = ( "doc/man7/openssl_user_macros.pod" => [ "doc/man7/openssl_user_macros.pod.in" ], + "exporters/OpenSSLConfig.cmake" => [ + "installdata.pm" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/OpenSSLConfig.cmake", + "installdata.pm" + ], + "exporters/libcrypto.pc" => [ + "installdata.pm" + ], + "exporters/libssl.pc" => [ + "installdata.pm" + ], + "exporters/openssl.pc" => [ + "exporters/libcrypto.pc", + "exporters/libssl.pc", + "installdata.pm" + ], + "fuzz/acert-test" => [ + "libcrypto" + ], "fuzz/asn1-test" => [ "libcrypto", "libssl" @@ -6962,17 +7936,85 @@ our %unified_info = ( "fuzz/ct-test" => [ "libcrypto" ], + "fuzz/decoder-test" => [ + "libcrypto" + ], + "fuzz/dtlsclient-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/dtlsserver-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/hashtable-test" => [ + "libcrypto.a" + ], + "fuzz/ml-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/ml-kem-test" => [ + "libcrypto.a" + ], + "fuzz/pem-test" => [ + "libcrypto.a" + ], + "fuzz/provider-test" => [ + "libcrypto" + ], + "fuzz/punycode-test" => [ + "libcrypto.a" + ], + "fuzz/quic-client-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-lcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-rcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-server-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-srtm-test" => [ + "libcrypto.a", + "libssl.a" + ], "fuzz/server-test" => [ "libcrypto", "libssl" ], + "fuzz/slh-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/smime-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/v3name-test" => [ + "libcrypto.a" + ], "fuzz/x509-test" => [ "libcrypto" ], + "include/internal/param_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], + "include/openssl/core_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "libcrypto.ld" => [ "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libcrypto.pc" => [ + "builddata.pm" + ], "libssl" => [ "libcrypto" ], @@ -6980,6 +8022,14 @@ our %unified_info = ( "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libssl.pc" => [ + "builddata.pm" + ], + "openssl.pc" => [ + "builddata.pm", + "libcrypto.pc", + "libssl.pc" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/DIGESTS.asn1", "providers/common/der/NIST.asn1", @@ -6997,11 +8047,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7041,6 +8099,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov/der_rsa.h" ], @@ -7048,6 +8112,12 @@ our %unified_info = ( "providers/common/include/prov/der_digests.h", "providers/common/include/prov/der_rsa.h" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov/der_wrap.h" ], @@ -7087,11 +8157,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7124,9 +8202,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov/der_sm2.h" ], @@ -7139,9 +8223,15 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/legacy" => [ "libcrypto", "providers/liblegacy.a" @@ -7219,6 +8309,14 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_addr_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/bio_base64_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_callback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7227,6 +8325,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_dgram_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_enc_test" => [ "libcrypto", "test/libtestutil.a" @@ -7235,6 +8337,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_meth_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_prefix_text" => [ "libcrypto", "test/libtestutil.a" @@ -7247,6 +8353,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_tfo_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bioprinttest" => [ "libcrypto", "test/libtestutil.a" @@ -7259,6 +8369,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/build_wincrypt_test" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_aes" => [ "libcrypto", "libssl" @@ -7279,6 +8393,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_byteorder" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_camellia" => [ "libcrypto", "libssl" @@ -7311,10 +8429,6 @@ our %unified_info = ( "libcrypto", "libssl" ], - "test/buildtest_c_core_names" => [ - "libcrypto", - "libssl" - ], "test/buildtest_c_core_object" => [ "libcrypto", "libssl" @@ -7347,6 +8461,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_e_ostime" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_ebcdic" => [ "libcrypto", "libssl" @@ -7383,6 +8501,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_hpke" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_http" => [ "libcrypto", "libssl" @@ -7391,6 +8513,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_indicator" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_kdf" => [ "libcrypto", "libssl" @@ -7411,6 +8537,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_ml_kem" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_modes" => [ "libcrypto", "libssl" @@ -7451,6 +8581,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_quic" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_rand" => [ "libcrypto", "libssl" @@ -7507,6 +8641,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_thread" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_tls1" => [ "libcrypto", "libssl" @@ -7527,10 +8665,23 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/byteorder_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ca_internals_test" => [ + "libssl", + "test/libtestutil.a" + ], "test/casttest" => [ "libcrypto", "test/libtestutil.a" ], + "test/cert_comp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/chacha_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7644,7 +8795,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], - "test/defltfips_test" => [ + "test/decoder_propq_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/defltfips_test" => [ "libcrypto", "test/libtestutil.a" ], @@ -7700,6 +8855,8 @@ our %unified_info = ( ], "test/endecode_test" => [ "libcrypto.a", + "providers/libcommon.a", + "providers/liblegacy.a", "test/libtestutil.a" ], "test/endecoder_legacy_test" => [ @@ -7743,6 +8900,10 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => [ "libcrypto" ], + "test/evp_pkey_dhkem_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/evp_pkey_dparams_test" => [ "libcrypto", "test/libtestutil.a" @@ -7751,10 +8912,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/evp_skey_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/evp_xof_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/exdatatest" => [ "libcrypto", "test/libtestutil.a" @@ -7793,6 +8962,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/hpke_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/http_test" => [ "libcrypto", "test/libtestutil.a" @@ -7805,17 +8978,25 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/json_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/keymgmt_internal_test" => [ "libcrypto.a", "test/libtestutil.a" ], "test/lhash_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/libtestutil.a" => [ "libcrypto" ], + "test/list_test" => [ + "test/libtestutil.a" + ], "test/localetest" => [ "libcrypto", "test/libtestutil.a" @@ -7828,10 +9009,26 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/membio_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/memleaktest" => [ "libcrypto", "test/libtestutil.a" ], + "test/ml_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_evp_extra_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_internal_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/modes_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7856,6 +9053,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pairwise_fail_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/param_build_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7888,6 +9089,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pkcs12_api_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/pkcs12_format_test" => [ "libcrypto", "test/libtestutil.a" @@ -7908,6 +9113,11 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/priority_queue_test" => [ + "libcrypto", + "libssl.a", + "test/libtestutil.a" + ], "test/property_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7920,6 +9130,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/provider_default_search_path_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/provider_fallback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7944,12 +9158,122 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/quic_ackm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cfq_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_client_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fifd_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_lcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_multistream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_newcid_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_qlog_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_radix_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_rcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_record_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srt_gen_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srtm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_stream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_tserver_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txpim_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_wire_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicapitest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicfaultstest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/rand_status_test" => [ "libcrypto", "test/libtestutil.a" ], "test/rand_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/rc2test" => [ @@ -7964,7 +9288,7 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "libcrypto.a", "test/libtestutil.a" ], @@ -7973,6 +9297,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/rpktest" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/rsa_mp_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7985,10 +9314,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/sanitytest" => [ + "test/rsa_x931_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/safe_math_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/sanitytest" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/secmemtest" => [ "libcrypto", "test/libtestutil.a" @@ -8006,6 +9343,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/slh_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/sm2_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8035,6 +9376,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/ssl_handshake_rtt_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/ssl_old_test" => [ "libcrypto.a", "libssl.a", @@ -8051,8 +9397,8 @@ our %unified_info = ( "test/libtestutil.a" ], "test/sslapitest" => [ - "libcrypto", - "libssl", + "libcrypto.a", + "libssl.a", "test/libtestutil.a" ], "test/sslbuffertest" => [ @@ -8069,6 +9415,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/strtoultest" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/sysdefaulttest" => [ "libcrypto", "libssl", @@ -8078,8 +9428,12 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/threadpool_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/threadstest" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/threadstest_fips" => [ @@ -8090,6 +9444,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/time_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/tls13ccstest" => [ "libcrypto", "libssl", @@ -8100,6 +9458,11 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/tls13groupselection_test" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/trace_api_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8137,6 +9500,10 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/x509_acert_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_check_cert_pkey_test" => [ "libcrypto", "test/libtestutil.a" @@ -8149,6 +9516,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/x509_load_cert_file_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_req_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_time_test" => [ "libcrypto", "test/libtestutil.a" @@ -8163,9 +9542,13 @@ our %unified_info = ( }, "dirinfo" => { "apps" => { + "deps" => [ + "apps/ca_internals_test-bin-ca.o" + ], "products" => { "bin" => [ - "apps/openssl" + "apps/openssl", + "test/ca_internals_test" ], "script" => [ "apps/CA.pl", @@ -8176,6 +9559,14 @@ our %unified_info = ( "apps/lib" => { "deps" => [ "apps/lib/openssl-bin-cmp_mock_srv.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", "apps/lib/cmp_client_test-bin-cmp_mock_srv.o", "apps/lib/uitest-bin-apps_ui.o", "apps/lib/libapps-lib-app_libctx.o", @@ -8184,12 +9575,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -8200,6 +9593,7 @@ our %unified_info = ( "products" => { "bin" => [ "apps/openssl", + "test/ca_internals_test", "test/cmp_client_test", "test/uitest" ], @@ -8211,8 +9605,12 @@ our %unified_info = ( }, "crypto" => { "deps" => [ + "crypto/asn1_time_test-bin-ctype.o", + "crypto/ca_internals_test-bin-ctype.o", + "crypto/packettest-bin-quic_vlint.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -8222,10 +9620,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -8242,6 +9643,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-ppccap.o", "crypto/libcrypto-lib-ppccpuid.o", @@ -8251,12 +9653,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libfips-lib-asn1_dsa.o", @@ -8278,6 +9684,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-ppccap.o", "crypto/libfips-lib-ppccpuid.o", "crypto/libfips-lib-provider_core.o", @@ -8287,9 +9694,15 @@ our %unified_info = ( "crypto/libfips-lib-threads_lib.o", "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", - "crypto/libfips-lib-threads_win.o" + "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test", + "test/packettest" + ], "lib" => [ "libcrypto", "providers/libfips.a" @@ -8336,6 +9749,8 @@ our %unified_info = ( }, "crypto/asn1" => { "deps" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", "crypto/asn1/libcrypto-lib-a_bitstr.o", "crypto/asn1/libcrypto-lib-a_d2i_fp.o", "crypto/asn1/libcrypto-lib-a_digest.o", @@ -8402,6 +9817,10 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test" + ], "lib" => [ "libcrypto" ] @@ -8467,6 +9886,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -8518,6 +9938,7 @@ our %unified_info = ( "crypto/bn/libcrypto-lib-bn_word.o", "crypto/bn/libcrypto-lib-bn_x931p.o", "crypto/bn/libcrypto-lib-ppc-mont.o", + "crypto/bn/libcrypto-lib-ppc64-mont-fixed.o", "crypto/bn/libfips-lib-bn-ppc.o", "crypto/bn/libfips-lib-bn_add.o", "crypto/bn/libfips-lib-bn_blind.o", @@ -8547,7 +9968,8 @@ our %unified_info = ( "crypto/bn/libfips-lib-bn_sqr.o", "crypto/bn/libfips-lib-bn_sqrt.o", "crypto/bn/libfips-lib-bn_word.o", - "crypto/bn/libfips-lib-ppc-mont.o" + "crypto/bn/libfips-lib-ppc-mont.o", + "crypto/bn/libfips-lib-ppc64-mont-fixed.o" ], "products" => { "lib" => [ @@ -8628,6 +10050,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -9003,7 +10426,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", - "crypto/err/libcrypto-lib-err_prn.o" + "crypto/err/libcrypto-lib-err_mark.o", + "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o" ], "products" => { "lib" => [ @@ -9104,7 +10529,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/evp/libfips-lib-asymcipher.o", "crypto/evp/libfips-lib-dh_support.o", "crypto/evp/libfips-lib-digest.o", @@ -9120,14 +10547,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", - "crypto/evp/libfips-lib-signature.o" + "crypto/evp/libfips-lib-s_lib.o", + "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o" ], "products" => { "lib" => [ @@ -9160,6 +10588,20 @@ our %unified_info = ( ] } }, + "crypto/hashtable" => { + "deps" => [ + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/hmac" => { "deps" => [ "crypto/hmac/libcrypto-lib-hmac.o", @@ -9172,6 +10614,17 @@ our %unified_info = ( ] } }, + "crypto/hpke" => { + "deps" => [ + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, "crypto/http" => { "deps" => [ "crypto/http/libcrypto-lib-http_client.o", @@ -9255,6 +10708,44 @@ our %unified_info = ( ] } }, + "crypto/ml_dsa" => { + "deps" => [ + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ml_kem" => { + "deps" => [ + "crypto/ml_kem/libcrypto-lib-ml_kem.o", + "crypto/ml_kem/libfips-lib-ml_kem.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/modes" => { "deps" => [ "crypto/modes/libcrypto-lib-cbc128.o", @@ -9269,6 +10760,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -9277,7 +10769,8 @@ our %unified_info = ( "crypto/modes/libfips-lib-ghashp8-ppc.o", "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", - "crypto/modes/libfips-lib-xts128.o" + "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o" ], "products" => { "lib" => [ @@ -9423,6 +10916,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rand/libfips-lib-rand_lib.o" ], @@ -9579,6 +11073,36 @@ our %unified_info = ( ] } }, + "crypto/slh_dsa" => { + "deps" => [ + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/sm2" => { "deps" => [ "crypto/sm2/libcrypto-lib-sm2_crypt.o", @@ -9652,6 +11176,38 @@ our %unified_info = ( ] } }, + "crypto/thread" => { + "deps" => [ + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/thread/arch" => { + "deps" => [ + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/ts" => { "deps" => [ "crypto/ts/libcrypto-lib-ts_asn1.o", @@ -9718,14 +11274,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -9734,12 +11298,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -9747,13 +11316,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -9771,6 +11347,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -9780,6 +11357,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -9806,6 +11384,7 @@ our %unified_info = ( "fuzz" => { "products" => { "bin" => [ + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -9816,13 +11395,31 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test" ] } }, "providers" => { "deps" => [ + "providers/endecode_test-bin-legacyprov.o", "providers/evp_extra_test-bin-legacyprov.o", "providers/libcrypto-lib-baseprov.o", "providers/libcrypto-lib-defltprov.o", @@ -9832,6 +11429,7 @@ our %unified_info = ( ], "products" => { "bin" => [ + "test/endecode_test", "test/evp_extra_test" ], "dso" => [ @@ -9883,8 +11481,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/der/libdefault-lib-der_rsa_sig.o", "providers/common/der/libdefault-lib-der_sm2_gen.o", @@ -9903,6 +11505,7 @@ our %unified_info = ( "providers/fips" => { "deps" => [ "providers/fips/fips-dso-fips_entry.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o" @@ -9946,6 +11549,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -9970,7 +11576,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -10067,7 +11679,10 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", - "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" + "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" ], "products" => { "lib" => [ @@ -10095,7 +11710,9 @@ our %unified_info = ( }, "providers/implementations/kdfs" => { "deps" => [ + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -10114,7 +11731,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", - "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" + "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" ], "products" => { "lib" => [ @@ -10126,13 +11744,22 @@ our %unified_info = ( }, "providers/implementations/kem" => { "deps" => [ + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", - "providers/implementations/kem/libfips-lib-rsa_kem.o" + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", + "providers/implementations/kem/libfips-lib-rsa_kem.o", + "providers/implementations/kem/libtemplate-lib-template_kem.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10144,19 +11771,29 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", - "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10184,18 +11821,18 @@ our %unified_info = ( }, "providers/implementations/rands" => { "deps" => [ - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o" ], "products" => { @@ -10224,13 +11861,31 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", - "providers/implementations/signature/libfips-lib-rsa_sig.o" + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", + "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/skeymgmt" => { + "deps" => [ + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o" ], "products" => { "lib" => [ @@ -10258,14 +11913,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -10281,32 +11937,107 @@ our %unified_info = ( "ssl/libssl-lib-t1_trce.o", "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", - "ssl/libssl-lib-tls_srp.o", - "ssl/libdefault-lib-s3_cbc.o", - "ssl/libfips-lib-s3_cbc.o" + "ssl/libssl-lib-tls_srp.o" ], "products" => { "lib" => [ - "libssl", - "providers/libdefault.a", - "providers/libfips.a" + "libssl" + ] + } + }, + "ssl/quic" => { + "deps" => [ + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, "ssl/record" => { "deps" => [ - "ssl/record/libssl-lib-dtls1_bitmap.o", "ssl/record/libssl-lib-rec_layer_d1.o", - "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/libssl-lib-rec_layer_s3.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "ssl/record/methods" => { + "deps" => [ + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/record/methods/libcommon-lib-tls_pad.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o", + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "products" => { "lib" => [ "libssl", - "providers/libcommon.a" + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "ssl/rio" => { + "deps" => [ + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, @@ -10344,9 +12075,40 @@ our %unified_info = ( "test/helpers/dtlstest-bin-ssltestlib.o", "test/helpers/endecode_test-bin-predefined_dhparams.o", "test/helpers/fatalerrtest-bin-ssltestlib.o", + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/helpers/pkcs12_api_test-bin-pkcs12.o", "test/helpers/pkcs12_format_test-bin-pkcs12.o", + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", "test/helpers/recordlentest-bin-ssltestlib.o", + "test/helpers/rpktest-bin-ssltestlib.o", "test/helpers/servername_test-bin-ssltestlib.o", + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/helpers/ssl_test-bin-handshake.o", "test/helpers/ssl_test-bin-handshake_srp.o", @@ -10355,7 +12117,8 @@ our %unified_info = ( "test/helpers/sslapitest-bin-ssltestlib.o", "test/helpers/sslbuffertest-bin-ssltestlib.o", "test/helpers/sslcorrupttest-bin-ssltestlib.o", - "test/helpers/tls13ccstest-bin-ssltestlib.o" + "test/helpers/tls13ccstest-bin-ssltestlib.o", + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" ], "products" => { "bin" => [ @@ -10373,16 +12136,37 @@ our %unified_info = ( "test/dtlstest", "test/endecode_test", "test/fatalerrtest", + "test/json_test", + "test/pkcs12_api_test", "test/pkcs12_format_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_radix_test", + "test/quic_srt_gen_test", + "test/quicapitest", + "test/quicfaultstest", "test/recordlentest", + "test/rpktest", "test/servername_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", "test/sslapitest", "test/sslbuffertest", "test/sslcorrupttest", - "test/tls13ccstest" + "test/tls13ccstest", + "test/tls13groupselection_test" + ] + } + }, + "test/radix" => { + "deps" => [ + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "products" => { + "bin" => [ + "test/quic_radix_test" ] } }, @@ -10394,6 +12178,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -10429,6 +12214,12 @@ our %unified_info = ( } }, "generate" => { + "OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], "apps/progs.c" => [ "apps/progs.pl", "\"-C\"", @@ -10439,6 +12230,19 @@ our %unified_info = ( "\"-H\"", "\$(APPS_OPENSSL)" ], + "builddata.pm" => [ + "util/mkinstallvars.pl", + "PREFIX=.", + "BINDIR=apps", + "APPLINKDIR=ms", + "LIBDIR=", + "INCLUDEDIR=include", + "\"INCLUDEDIR=\$(SRCDIR)/include\"", + "ENGINESDIR=engines", + "MODULESDIR=providers", + "\"VERSION=\$(VERSION)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"" + ], "crypto/aes/aes-586.S" => [ "crypto/aes/asm/aes-586.pl" ], @@ -10460,6 +12264,24 @@ our %unified_info = ( "crypto/aes/aes-ppc.s" => [ "crypto/aes/asm/aes-ppc.pl" ], + "crypto/aes/aes-riscv32-zkn.s" => [ + "crypto/aes/asm/aes-riscv32-zkn.pl" + ], + "crypto/aes/aes-riscv64-zkn.s" => [ + "crypto/aes/asm/aes-riscv64-zkn.pl" + ], + "crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvbb-zvkg-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkb-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkb-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkned.pl" + ], + "crypto/aes/aes-riscv64.s" => [ + "crypto/aes/asm/aes-riscv64.pl" + ], "crypto/aes/aes-s390x.S" => [ "crypto/aes/asm/aes-s390x.pl" ], @@ -10487,6 +12309,9 @@ our %unified_info = ( "crypto/aes/aesni-x86_64.s" => [ "crypto/aes/asm/aesni-x86_64.pl" ], + "crypto/aes/aesni-xts-avx512.s" => [ + "crypto/aes/asm/aesni-xts-avx512.pl" + ], "crypto/aes/aesp8-ppc.s" => [ "crypto/aes/asm/aesp8-ppc.pl" ], @@ -10499,12 +12324,18 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.S" => [ "crypto/aes/asm/bsaes-armv7.pl" ], + "crypto/aes/bsaes-armv8.S" => [ + "crypto/aes/asm/bsaes-armv8.pl" + ], "crypto/aes/bsaes-x86_64.s" => [ "crypto/aes/asm/bsaes-x86_64.pl" ], "crypto/aes/vpaes-armv8.S" => [ "crypto/aes/asm/vpaes-armv8.pl" ], + "crypto/aes/vpaes-loongarch64.S" => [ + "crypto/aes/asm/vpaes-loongarch64.pl" + ], "crypto/aes/vpaes-ppc.s" => [ "crypto/aes/asm/vpaes-ppc.pl" ], @@ -10565,15 +12396,33 @@ our %unified_info = ( "crypto/bn/ppc-mont.s" => [ "crypto/bn/asm/ppc-mont.pl" ], + "crypto/bn/ppc64-mont-fixed.s" => [ + "crypto/bn/asm/ppc64-mont-fixed.pl" + ], "crypto/bn/ppc64-mont.s" => [ "crypto/bn/asm/ppc64-mont.pl" ], + "crypto/bn/rsaz-2k-avx512.s" => [ + "crypto/bn/asm/rsaz-2k-avx512.pl" + ], + "crypto/bn/rsaz-2k-avxifma.s" => [ + "crypto/bn/asm/rsaz-2k-avxifma.pl" + ], + "crypto/bn/rsaz-3k-avx512.s" => [ + "crypto/bn/asm/rsaz-3k-avx512.pl" + ], + "crypto/bn/rsaz-3k-avxifma.s" => [ + "crypto/bn/asm/rsaz-3k-avxifma.pl" + ], + "crypto/bn/rsaz-4k-avx512.s" => [ + "crypto/bn/asm/rsaz-4k-avx512.pl" + ], + "crypto/bn/rsaz-4k-avxifma.s" => [ + "crypto/bn/asm/rsaz-4k-avxifma.pl" + ], "crypto/bn/rsaz-avx2.s" => [ "crypto/bn/asm/rsaz-avx2.pl" ], - "crypto/bn/rsaz-avx512.s" => [ - "crypto/bn/asm/rsaz-avx512.pl" - ], "crypto/bn/rsaz-x86_64.s" => [ "crypto/bn/asm/rsaz-x86_64.pl" ], @@ -10635,6 +12484,9 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.S" => [ "crypto/chacha/asm/chacha-armv4.pl" ], + "crypto/chacha/chacha-armv8-sve.S" => [ + "crypto/chacha/asm/chacha-armv8-sve.pl" + ], "crypto/chacha/chacha-armv8.S" => [ "crypto/chacha/asm/chacha-armv8.pl" ], @@ -10647,9 +12499,19 @@ our %unified_info = ( "crypto/chacha/chacha-ia64.s" => [ "crypto/chacha/chacha-ia64.S" ], + "crypto/chacha/chacha-loongarch64.S" => [ + "crypto/chacha/asm/chacha-loongarch64.pl" + ], "crypto/chacha/chacha-ppc.s" => [ "crypto/chacha/asm/chacha-ppc.pl" ], + "crypto/chacha/chacha-riscv64-v-zbb-zvkb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl", + "zvkb" + ], + "crypto/chacha/chacha-riscv64-v-zbb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl" + ], "crypto/chacha/chacha-s390x.S" => [ "crypto/chacha/asm/chacha-s390x.pl" ], @@ -10659,6 +12521,9 @@ our %unified_info = ( "crypto/chacha/chacha-x86_64.s" => [ "crypto/chacha/asm/chacha-x86_64.pl" ], + "crypto/chacha/chachap10-ppc.s" => [ + "crypto/chacha/asm/chachap10-ppc.pl" + ], "crypto/des/crypt586.S" => [ "crypto/des/asm/crypt586.pl" ], @@ -10671,6 +12536,9 @@ our %unified_info = ( "crypto/des/dest4-sparcv9.S" => [ "crypto/des/asm/dest4-sparcv9.pl" ], + "crypto/ec/ecp_nistp384-ppc64.s" => [ + "crypto/ec/asm/ecp_nistp384-ppc64.pl" + ], "crypto/ec/ecp_nistp521-ppc64.s" => [ "crypto/ec/asm/ecp_nistp521-ppc64.pl" ], @@ -10695,6 +12563,9 @@ our %unified_info = ( "crypto/ec/ecp_nistz256-x86_64.s" => [ "crypto/ec/asm/ecp_nistz256-x86_64.pl" ], + "crypto/ec/ecp_sm2p256-armv8.S" => [ + "crypto/ec/asm/ecp_sm2p256-armv8.pl" + ], "crypto/ec/x25519-ppc64.s" => [ "crypto/ec/asm/x25519-ppc64.pl" ], @@ -10704,18 +12575,39 @@ our %unified_info = ( "crypto/ia64cpuid.s" => [ "crypto/ia64cpuid.S" ], + "crypto/loongarch64cpuid.s" => [ + "crypto/loongarch64cpuid.pl" + ], "crypto/md5/md5-586.S" => [ "crypto/md5/asm/md5-586.pl" ], + "crypto/md5/md5-aarch64.S" => [ + "crypto/md5/asm/md5-aarch64.pl" + ], + "crypto/md5/md5-loongarch64.S" => [ + "crypto/md5/asm/md5-loongarch64.pl" + ], "crypto/md5/md5-sparcv9.S" => [ "crypto/md5/asm/md5-sparcv9.pl" ], "crypto/md5/md5-x86_64.s" => [ "crypto/md5/asm/md5-x86_64.pl" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.S" => [ + "crypto/modes/asm/aes-gcm-armv8-unroll8_64.pl" + ], "crypto/modes/aes-gcm-armv8_64.S" => [ "crypto/modes/asm/aes-gcm-armv8_64.pl" ], + "crypto/modes/aes-gcm-avx512.s" => [ + "crypto/modes/asm/aes-gcm-avx512.pl" + ], + "crypto/modes/aes-gcm-ppc.s" => [ + "crypto/modes/asm/aes-gcm-ppc.pl" + ], + "crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s" => [ + "crypto/modes/asm/aes-gcm-riscv64-zvkb-zvkg-zvkned.pl" + ], "crypto/modes/aesni-gcm-x86_64.s" => [ "crypto/modes/asm/aesni-gcm-x86_64.pl" ], @@ -10734,6 +12626,15 @@ our %unified_info = ( "crypto/modes/ghash-parisc.s" => [ "crypto/modes/asm/ghash-parisc.pl" ], + "crypto/modes/ghash-riscv64-zvkb-zvbc.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkb-zvbc.pl" + ], + "crypto/modes/ghash-riscv64-zvkg.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkg.pl" + ], + "crypto/modes/ghash-riscv64.s" => [ + "crypto/modes/asm/ghash-riscv64.pl" + ], "crypto/modes/ghash-s390x.S" => [ "crypto/modes/asm/ghash-s390x.pl" ], @@ -10752,6 +12653,9 @@ our %unified_info = ( "crypto/modes/ghashv8-armx.S" => [ "crypto/modes/asm/ghashv8-armx.pl" ], + "crypto/params_idx.c" => [ + "crypto/params_idx.c.in" + ], "crypto/pariscid.s" => [ "crypto/pariscid.pl" ], @@ -10812,6 +12716,12 @@ our %unified_info = ( "crypto/ripemd/rmd-586.S" => [ "crypto/ripemd/asm/rmd-586.pl" ], + "crypto/riscv32cpuid.s" => [ + "crypto/riscv32cpuid.pl" + ], + "crypto/riscv64cpuid.s" => [ + "crypto/riscv64cpuid.pl" + ], "crypto/s390xcpuid.S" => [ "crypto/s390xcpuid.pl" ], @@ -10920,6 +12830,9 @@ our %unified_info = ( "crypto/sha/sha256-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S" => [ + "crypto/sha/asm/sha256-riscv64-zvkb-zvknha_or_zvknhb.pl" + ], "crypto/sha/sha256-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -10956,6 +12869,9 @@ our %unified_info = ( "crypto/sha/sha512-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha512-riscv64-zvkb-zvknhb.S" => [ + "crypto/sha/asm/sha512-riscv64-zvkb-zvknhb.pl" + ], "crypto/sha/sha512-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -10968,6 +12884,24 @@ our %unified_info = ( "crypto/sha/sha512p8-ppc.s" => [ "crypto/sha/asm/sha512p8-ppc.pl" ], + "crypto/sm3/sm3-armv8.S" => [ + "crypto/sm3/asm/sm3-armv8.pl" + ], + "crypto/sm3/sm3-riscv64-zvksh.S" => [ + "crypto/sm3/asm/sm3-riscv64-zvksh.pl" + ], + "crypto/sm4/sm4-armv8.S" => [ + "crypto/sm4/asm/sm4-armv8.pl" + ], + "crypto/sm4/sm4-riscv64-zvksed.s" => [ + "crypto/sm4/asm/sm4-riscv64-zvksed.pl" + ], + "crypto/sm4/vpsm4-armv8.S" => [ + "crypto/sm4/asm/vpsm4-armv8.pl" + ], + "crypto/sm4/vpsm4_ex-armv8.S" => [ + "crypto/sm4/asm/vpsm4_ex-armv8.pl" + ], "crypto/uplink-ia64.s" => [ "ms/uplink-ia64.pl" ], @@ -11133,6 +13067,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -11274,6 +13211,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -11310,6 +13250,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -11325,6 +13268,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -11397,6 +13343,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -11463,6 +13412,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -11562,6 +13514,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -11700,6 +13658,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -11817,6 +13778,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -11904,6 +13871,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -11976,9 +13946,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -11994,12 +13970,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -12069,9 +14051,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -12081,12 +14072,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -12102,9 +14105,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -12129,6 +14138,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -12144,6 +14156,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -12180,6 +14195,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -12453,6 +14471,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -12492,6 +14513,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -12513,6 +14537,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -12627,6 +14654,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -12654,9 +14684,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -12672,6 +14714,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -12681,12 +14726,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -12705,12 +14756,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -12720,9 +14783,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -12735,9 +14804,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -12753,24 +14834,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -12783,6 +14885,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -12792,8 +14900,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -12813,6 +14921,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -12861,6 +14984,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -12927,6 +15053,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -13050,9 +15179,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -13068,6 +15203,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -13092,9 +15230,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -13128,6 +15275,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -13185,15 +15335,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -13203,6 +15365,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -13224,9 +15389,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -13242,6 +15413,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -13254,9 +15428,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -13287,9 +15458,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -13305,12 +15473,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -13365,6 +15587,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -13374,9 +15599,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -13524,6 +15746,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -13665,6 +15890,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -13701,6 +15929,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -13716,6 +15947,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -13788,6 +16022,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -13854,6 +16091,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -13953,6 +16193,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -14091,6 +16337,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -14208,6 +16457,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -14295,6 +16550,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -14367,9 +16625,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -14385,12 +16649,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -14460,9 +16730,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -14472,12 +16751,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -14493,9 +16784,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -14520,6 +16817,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -14535,6 +16835,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -14571,6 +16874,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -14844,6 +17150,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -14883,6 +17192,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -14904,6 +17216,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -15018,6 +17333,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -15045,9 +17363,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -15063,6 +17393,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -15072,12 +17405,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -15096,12 +17435,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -15111,9 +17462,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -15126,9 +17483,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -15144,24 +17513,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -15174,6 +17564,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -15183,8 +17579,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -15204,6 +17600,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -15252,6 +17663,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -15318,6 +17732,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -15441,9 +17858,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -15459,6 +17882,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -15483,9 +17909,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -15519,6 +17954,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -15576,15 +18014,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -15594,6 +18044,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -15615,9 +18068,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -15633,6 +18092,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -15645,9 +18107,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -15678,9 +18137,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -15696,12 +18152,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -15756,6 +18266,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -15765,9 +18278,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -15903,6 +18413,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc/man1/openssl-sess_id.pod.in" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in" ], @@ -15939,12 +18452,30 @@ our %unified_info = ( "engines/e_padlock-x86_64.s" => [ "engines/asm/e_padlock-x86_64.pl" ], + "exporters/OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], + "exporters/libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], + "exporters/libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "exporters/openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "include/crypto/bn_conf.h" => [ "include/crypto/bn_conf.h.in" ], "include/crypto/dso_conf.h" => [ "include/crypto/dso_conf.h.in" ], + "include/internal/param_names.h" => [ + "include/internal/param_names.h.in" + ], "include/openssl/asn1.h" => [ "include/openssl/asn1.h.in" ], @@ -15960,12 +18491,18 @@ our %unified_info = ( "include/openssl/cms.h" => [ "include/openssl/cms.h.in" ], + "include/openssl/comp.h" => [ + "include/openssl/comp.h.in" + ], "include/openssl/conf.h" => [ "include/openssl/conf.h.in" ], "include/openssl/configuration.h" => [ "include/openssl/configuration.h.in" ], + "include/openssl/core_names.h" => [ + "include/openssl/core_names.h.in" + ], "include/openssl/crmf.h" => [ "include/openssl/crmf.h.in" ], @@ -16014,20 +18551,47 @@ our %unified_info = ( "include/openssl/x509.h" => [ "include/openssl/x509.h.in" ], + "include/openssl/x509_acert.h" => [ + "include/openssl/x509_acert.h.in" + ], "include/openssl/x509_vfy.h" => [ "include/openssl/x509_vfy.h.in" ], "include/openssl/x509v3.h" => [ "include/openssl/x509v3.h.in" ], + "installdata.pm" => [ + "util/mkinstallvars.pl", + "\"PREFIX=\$(INSTALLTOP)\"", + "BINDIR=bin", + "\"LIBDIR=\$(LIBDIR)\"", + "\"libdir=\$(libdir)\"", + "INCLUDEDIR=include", + "APPLINKDIR=include/openssl", + "\"ENGINESDIR=\$(ENGINESDIR)\"", + "\"MODULESDIR=\$(MODULESDIR)\"", + "\"PKGCONFIGDIR=\$(PKGCONFIGDIR)\"", + "\"CMAKECONFIGDIR=\$(CMAKECONFIGDIR)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"", + "\"VERSION=\$(VERSION)\"" + ], "libcrypto.ld" => [ "util/libcrypto.num", "libcrypto" ], + "libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], "libssl.ld" => [ "util/libssl.num", "libssl" ], + "libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/der_digests_gen.c.in" ], @@ -16040,9 +18604,15 @@ our %unified_info = ( "providers/common/der/der_ecx_gen.c" => [ "providers/common/der/der_ecx_gen.c.in" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/der_ml_dsa_gen.c.in" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/der_rsa_gen.c.in" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/der_slh_dsa_gen.c.in" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/der_sm2_gen.c.in" ], @@ -16061,9 +18631,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/include/prov/der_ecx.h.in" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/include/prov/der_ml_dsa.h.in" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/include/prov/der_rsa.h.in" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/include/prov/der_slh_dsa.h.in" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/include/prov/der_sm2.h.in" ], @@ -16105,6 +18681,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "buffer" ], + "test/buildtest_byteorder.c" => [ + "test/generate_buildtest.pl", + "byteorder" + ], "test/buildtest_camellia.c" => [ "test/generate_buildtest.pl", "camellia" @@ -16137,10 +18717,6 @@ our %unified_info = ( "test/generate_buildtest.pl", "core_dispatch" ], - "test/buildtest_core_names.c" => [ - "test/generate_buildtest.pl", - "core_names" - ], "test/buildtest_core_object.c" => [ "test/generate_buildtest.pl", "core_object" @@ -16173,6 +18749,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "e_os2" ], + "test/buildtest_e_ostime.c" => [ + "test/generate_buildtest.pl", + "e_ostime" + ], "test/buildtest_ebcdic.c" => [ "test/generate_buildtest.pl", "ebcdic" @@ -16209,6 +18789,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "hmac" ], + "test/buildtest_hpke.c" => [ + "test/generate_buildtest.pl", + "hpke" + ], "test/buildtest_http.c" => [ "test/generate_buildtest.pl", "http" @@ -16217,6 +18801,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "idea" ], + "test/buildtest_indicator.c" => [ + "test/generate_buildtest.pl", + "indicator" + ], "test/buildtest_kdf.c" => [ "test/generate_buildtest.pl", "kdf" @@ -16237,6 +18825,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "mdc2" ], + "test/buildtest_ml_kem.c" => [ + "test/generate_buildtest.pl", + "ml_kem" + ], "test/buildtest_modes.c" => [ "test/generate_buildtest.pl", "modes" @@ -16277,6 +18869,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "provider" ], + "test/buildtest_quic.c" => [ + "test/generate_buildtest.pl", + "quic" + ], "test/buildtest_rand.c" => [ "test/generate_buildtest.pl", "rand" @@ -16333,6 +18929,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "symhacks" ], + "test/buildtest_thread.c" => [ + "test/generate_buildtest.pl", + "thread" + ], "test/buildtest_tls1.c" => [ "test/generate_buildtest.pl", "tls1" @@ -16413,6 +19013,7 @@ our %unified_info = ( "doc/html/man1/openssl-s_server.html", "doc/html/man1/openssl-s_time.html", "doc/html/man1/openssl-sess_id.html", + "doc/html/man1/openssl-skeyutl.html", "doc/html/man1/openssl-smime.html", "doc/html/man1/openssl-speed.html", "doc/html/man1/openssl-spkac.html", @@ -16462,6 +19063,7 @@ our %unified_info = ( "doc/html/man3/BIO_find_type.html", "doc/html/man3/BIO_get_data.html", "doc/html/man3/BIO_get_ex_new_index.html", + "doc/html/man3/BIO_get_rpoll_descriptor.html", "doc/html/man3/BIO_meth_new.html", "doc/html/man3/BIO_new.html", "doc/html/man3/BIO_new_CMS.html", @@ -16474,11 +19076,13 @@ our %unified_info = ( "doc/html/man3/BIO_s_connect.html", "doc/html/man3/BIO_s_core.html", "doc/html/man3/BIO_s_datagram.html", + "doc/html/man3/BIO_s_dgram_pair.html", "doc/html/man3/BIO_s_fd.html", "doc/html/man3/BIO_s_file.html", "doc/html/man3/BIO_s_mem.html", "doc/html/man3/BIO_s_null.html", "doc/html/man3/BIO_s_socket.html", + "doc/html/man3/BIO_sendmmsg.html", "doc/html/man3/BIO_set_callback.html", "doc/html/man3/BIO_should_retry.html", "doc/html/man3/BIO_socket_wait.html", @@ -16503,6 +19107,7 @@ our %unified_info = ( "doc/html/man3/BN_swap.html", "doc/html/man3/BN_zero.html", "doc/html/man3/BUF_MEM_new.html", + "doc/html/man3/CMAC_CTX.html", "doc/html/man3/CMS_EncryptedData_decrypt.html", "doc/html/man3/CMS_EncryptedData_encrypt.html", "doc/html/man3/CMS_EnvelopedData_create.html", @@ -16525,6 +19130,7 @@ our %unified_info = ( "doc/html/man3/CMS_uncompress.html", "doc/html/man3/CMS_verify.html", "doc/html/man3/CMS_verify_receipt.html", + "doc/html/man3/COMP_CTX_new.html", "doc/html/man3/CONF_modules_free.html", "doc/html/man3/CONF_modules_load_file.html", "doc/html/man3/CRYPTO_THREAD_run_once.html", @@ -16558,6 +19164,8 @@ our %unified_info = ( "doc/html/man3/DSA_size.html", "doc/html/man3/DTLS_get_data_mtu.html", "doc/html/man3/DTLS_set_timer_cb.html", + "doc/html/man3/DTLSv1_get_timeout.html", + "doc/html/man3/DTLSv1_handle_timeout.html", "doc/html/man3/DTLSv1_listen.html", "doc/html/man3/ECDSA_SIG_new.html", "doc/html/man3/ECDSA_sign.html", @@ -16604,6 +19212,7 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_ctrl.html", "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html", "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html", + "doc/html/man3/EVP_PKEY_CTX_get_algor.html", "doc/html/man3/EVP_PKEY_CTX_new.html", "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html", "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html", @@ -16643,6 +19252,8 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_verify_recover.html", "doc/html/man3/EVP_RAND.html", "doc/html/man3/EVP_SIGNATURE.html", + "doc/html/man3/EVP_SKEY.html", + "doc/html/man3/EVP_SKEYMGMT.html", "doc/html/man3/EVP_SealInit.html", "doc/html/man3/EVP_SignInit.html", "doc/html/man3/EVP_VerifyInit.html", @@ -16672,6 +19283,7 @@ our %unified_info = ( "doc/html/man3/EVP_sm3.html", "doc/html/man3/EVP_sm4_cbc.html", "doc/html/man3/EVP_whirlpool.html", + "doc/html/man3/GENERAL_NAME.html", "doc/html/man3/HMAC.html", "doc/html/man3/MD5.html", "doc/html/man3/MDC2_Init.html", @@ -16696,14 +19308,18 @@ our %unified_info = ( "doc/html/man3/OPENSSL_init_ssl.html", "doc/html/man3/OPENSSL_instrument_bus.html", "doc/html/man3/OPENSSL_load_builtin_modules.html", + "doc/html/man3/OPENSSL_load_u16_le.html", "doc/html/man3/OPENSSL_malloc.html", + "doc/html/man3/OPENSSL_riscvcap.html", "doc/html/man3/OPENSSL_s390xcap.html", "doc/html/man3/OPENSSL_secure_malloc.html", "doc/html/man3/OPENSSL_strcasecmp.html", "doc/html/man3/OSSL_ALGORITHM.html", "doc/html/man3/OSSL_CALLBACK.html", + "doc/html/man3/OSSL_CMP_ATAV_set0.html", "doc/html/man3/OSSL_CMP_CTX_new.html", "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html", + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html", "doc/html/man3/OSSL_CMP_ITAV_set0.html", "doc/html/man3/OSSL_CMP_MSG_get0_header.html", "doc/html/man3/OSSL_CMP_MSG_http_perform.html", @@ -16727,18 +19343,27 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_CTX.html", "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html", "doc/html/man3/OSSL_ENCODER_to_bio.html", + "doc/html/man3/OSSL_ERR_STATE_save.html", "doc/html/man3/OSSL_ESS_check_signing_certs.html", + "doc/html/man3/OSSL_GENERAL_NAMES_print.html", + "doc/html/man3/OSSL_HPKE_CTX_new.html", "doc/html/man3/OSSL_HTTP_REQ_CTX.html", "doc/html/man3/OSSL_HTTP_parse_url.html", "doc/html/man3/OSSL_HTTP_transfer.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html", + "doc/html/man3/OSSL_INDICATOR_set_callback.html", "doc/html/man3/OSSL_ITEM.html", "doc/html/man3/OSSL_LIB_CTX.html", + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html", "doc/html/man3/OSSL_PARAM.html", "doc/html/man3/OSSL_PARAM_BLD.html", "doc/html/man3/OSSL_PARAM_allocate_from_text.html", "doc/html/man3/OSSL_PARAM_dup.html", "doc/html/man3/OSSL_PARAM_int.html", + "doc/html/man3/OSSL_PARAM_print_to_bio.html", "doc/html/man3/OSSL_PROVIDER.html", + "doc/html/man3/OSSL_QUIC_client_method.html", "doc/html/man3/OSSL_SELF_TEST_new.html", "doc/html/man3/OSSL_SELF_TEST_set_callback.html", "doc/html/man3/OSSL_STORE_INFO.html", @@ -16747,11 +19372,13 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_attach.html", "doc/html/man3/OSSL_STORE_expect.html", "doc/html/man3/OSSL_STORE_open.html", + "doc/html/man3/OSSL_sleep.html", "doc/html/man3/OSSL_trace_enabled.html", "doc/html/man3/OSSL_trace_get_category_num.html", "doc/html/man3/OSSL_trace_set_channel.html", "doc/html/man3/OpenSSL_add_all_algorithms.html", "doc/html/man3/OpenSSL_version.html", + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html", "doc/html/man3/PEM_X509_INFO_read_bio_ex.html", "doc/html/man3/PEM_bytes_read_bio.html", "doc/html/man3/PEM_read.html", @@ -16764,6 +19391,7 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_create_cert.html", "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html", "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html", + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html", "doc/html/man3/PKCS12_add1_attr_by_NID.html", "doc/html/man3/PKCS12_add_CSPName_asc.html", "doc/html/man3/PKCS12_add_cert.html", @@ -16855,6 +19483,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_sess_set_get_cb.html", "doc/html/man3/SSL_CTX_sessions.html", "doc/html/man3/SSL_CTX_set0_CA_list.html", + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html", "doc/html/man3/SSL_CTX_set1_curves.html", "doc/html/man3/SSL_CTX_set1_sigalgs.html", "doc/html/man3/SSL_CTX_set1_verify_cert_store.html", @@ -16868,6 +19497,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_ct_validation_callback.html", "doc/html/man3/SSL_CTX_set_ctlog_list_file.html", "doc/html/man3/SSL_CTX_set_default_passwd_cb.html", + "doc/html/man3/SSL_CTX_set_domain_flags.html", "doc/html/man3/SSL_CTX_set_generate_session_id.html", "doc/html/man3/SSL_CTX_set_info_callback.html", "doc/html/man3/SSL_CTX_set_keylog_callback.html", @@ -16875,6 +19505,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_min_proto_version.html", "doc/html/man3/SSL_CTX_set_mode.html", "doc/html/man3/SSL_CTX_set_msg_callback.html", + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html", "doc/html/man3/SSL_CTX_set_num_tickets.html", "doc/html/man3/SSL_CTX_set_options.html", "doc/html/man3/SSL_CTX_set_psk_client_callback.html", @@ -16913,6 +19544,7 @@ our %unified_info = ( "doc/html/man3/SSL_SESSION_print.html", "doc/html/man3/SSL_SESSION_set1_id.html", "doc/html/man3/SSL_accept.html", + "doc/html/man3/SSL_accept_stream.html", "doc/html/man3/SSL_alert_type_string.html", "doc/html/man3/SSL_alloc_buffers.html", "doc/html/man3/SSL_check_chain.html", @@ -16922,59 +19554,90 @@ our %unified_info = ( "doc/html/man3/SSL_export_keying_material.html", "doc/html/man3/SSL_extension_supported.html", "doc/html/man3/SSL_free.html", + "doc/html/man3/SSL_get0_connection.html", + "doc/html/man3/SSL_get0_group_name.html", + "doc/html/man3/SSL_get0_peer_rpk.html", "doc/html/man3/SSL_get0_peer_scts.html", + "doc/html/man3/SSL_get1_builtin_sigalgs.html", "doc/html/man3/SSL_get_SSL_CTX.html", "doc/html/man3/SSL_get_all_async_fds.html", "doc/html/man3/SSL_get_certificate.html", "doc/html/man3/SSL_get_ciphers.html", "doc/html/man3/SSL_get_client_random.html", + "doc/html/man3/SSL_get_conn_close_info.html", "doc/html/man3/SSL_get_current_cipher.html", "doc/html/man3/SSL_get_default_timeout.html", "doc/html/man3/SSL_get_error.html", + "doc/html/man3/SSL_get_event_timeout.html", "doc/html/man3/SSL_get_extms_support.html", "doc/html/man3/SSL_get_fd.html", + "doc/html/man3/SSL_get_handshake_rtt.html", "doc/html/man3/SSL_get_peer_cert_chain.html", "doc/html/man3/SSL_get_peer_certificate.html", "doc/html/man3/SSL_get_peer_signature_nid.html", "doc/html/man3/SSL_get_peer_tmp_key.html", "doc/html/man3/SSL_get_psk_identity.html", "doc/html/man3/SSL_get_rbio.html", + "doc/html/man3/SSL_get_rpoll_descriptor.html", "doc/html/man3/SSL_get_session.html", "doc/html/man3/SSL_get_shared_sigalgs.html", + "doc/html/man3/SSL_get_stream_id.html", + "doc/html/man3/SSL_get_stream_read_state.html", + "doc/html/man3/SSL_get_value_uint.html", "doc/html/man3/SSL_get_verify_result.html", "doc/html/man3/SSL_get_version.html", "doc/html/man3/SSL_group_to_name.html", + "doc/html/man3/SSL_handle_events.html", "doc/html/man3/SSL_in_init.html", + "doc/html/man3/SSL_inject_net_dgram.html", "doc/html/man3/SSL_key_update.html", "doc/html/man3/SSL_library_init.html", "doc/html/man3/SSL_load_client_CA_file.html", "doc/html/man3/SSL_new.html", + "doc/html/man3/SSL_new_domain.html", + "doc/html/man3/SSL_new_listener.html", + "doc/html/man3/SSL_new_stream.html", "doc/html/man3/SSL_pending.html", + "doc/html/man3/SSL_poll.html", "doc/html/man3/SSL_read.html", "doc/html/man3/SSL_read_early_data.html", "doc/html/man3/SSL_rstate_string.html", "doc/html/man3/SSL_session_reused.html", "doc/html/man3/SSL_set1_host.html", + "doc/html/man3/SSL_set1_initial_peer_addr.html", + "doc/html/man3/SSL_set1_server_cert_type.html", "doc/html/man3/SSL_set_async_callback.html", "doc/html/man3/SSL_set_bio.html", + "doc/html/man3/SSL_set_blocking_mode.html", "doc/html/man3/SSL_set_connect_state.html", + "doc/html/man3/SSL_set_default_stream_mode.html", "doc/html/man3/SSL_set_fd.html", + "doc/html/man3/SSL_set_incoming_stream_policy.html", + "doc/html/man3/SSL_set_quic_tls_cbs.html", "doc/html/man3/SSL_set_retry_verify.html", "doc/html/man3/SSL_set_session.html", + "doc/html/man3/SSL_set_session_secret_cb.html", "doc/html/man3/SSL_set_shutdown.html", "doc/html/man3/SSL_set_verify_result.html", "doc/html/man3/SSL_shutdown.html", "doc/html/man3/SSL_state_string.html", + "doc/html/man3/SSL_stream_conclude.html", + "doc/html/man3/SSL_stream_reset.html", "doc/html/man3/SSL_want.html", "doc/html/man3/SSL_write.html", "doc/html/man3/TS_RESP_CTX_new.html", - "doc/html/man3/TS_VERIFY_CTX_set_certs.html", + "doc/html/man3/TS_VERIFY_CTX.html", "doc/html/man3/UI_STRING.html", "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", + "doc/html/man3/X509_ACERT_add1_attr.html", + "doc/html/man3/X509_ACERT_add_attr_nconf.html", + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html", + "doc/html/man3/X509_ACERT_get_attr.html", + "doc/html/man3/X509_ACERT_print_ex.html", "doc/html/man3/X509_ALGOR_dup.html", "doc/html/man3/X509_ATTRIBUTE.html", "doc/html/man3/X509_CRL_get0_by_serial.html", @@ -16991,6 +19654,7 @@ our %unified_info = ( "doc/html/man3/X509_REQ_get_attr.html", "doc/html/man3/X509_REQ_get_extensions.html", "doc/html/man3/X509_SIG_get0.html", + "doc/html/man3/X509_STORE_CTX_get_by_subject.html", "doc/html/man3/X509_STORE_CTX_get_error.html", "doc/html/man3/X509_STORE_CTX_new.html", "doc/html/man3/X509_STORE_CTX_set_verify_cb.html", @@ -17013,6 +19677,7 @@ our %unified_info = ( "doc/html/man3/X509_get0_notBefore.html", "doc/html/man3/X509_get0_signature.html", "doc/html/man3/X509_get0_uids.html", + "doc/html/man3/X509_get_default_cert_file.html", "doc/html/man3/X509_get_extension_flags.html", "doc/html/man3/X509_get_pubkey.html", "doc/html/man3/X509_get_serialNumber.html", @@ -17058,12 +19723,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-RC5.html", "doc/html/man7/EVP_CIPHER-SEED.html", "doc/html/man7/EVP_CIPHER-SM4.html", + "doc/html/man7/EVP_KDF-ARGON2.html", "doc/html/man7/EVP_KDF-HKDF.html", + "doc/html/man7/EVP_KDF-HMAC-DRBG.html", "doc/html/man7/EVP_KDF-KB.html", "doc/html/man7/EVP_KDF-KRB5KDF.html", "doc/html/man7/EVP_KDF-PBKDF1.html", "doc/html/man7/EVP_KDF-PBKDF2.html", "doc/html/man7/EVP_KDF-PKCS12KDF.html", + "doc/html/man7/EVP_KDF-PVKKDF.html", "doc/html/man7/EVP_KDF-SCRYPT.html", "doc/html/man7/EVP_KDF-SS.html", "doc/html/man7/EVP_KDF-SSHKDF.html", @@ -17072,7 +19740,10 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X942-ASN1.html", "doc/html/man7/EVP_KDF-X942-CONCAT.html", "doc/html/man7/EVP_KDF-X963.html", + "doc/html/man7/EVP_KEM-EC.html", + "doc/html/man7/EVP_KEM-ML-KEM.html", "doc/html/man7/EVP_KEM-RSA.html", + "doc/html/man7/EVP_KEM-X25519.html", "doc/html/man7/EVP_KEYEXCH-DH.html", "doc/html/man7/EVP_KEYEXCH-ECDH.html", "doc/html/man7/EVP_KEYEXCH-X25519.html", @@ -17084,6 +19755,7 @@ our %unified_info = ( "doc/html/man7/EVP_MAC-Poly1305.html", "doc/html/man7/EVP_MAC-Siphash.html", "doc/html/man7/EVP_MD-BLAKE2.html", + "doc/html/man7/EVP_MD-KECCAK.html", "doc/html/man7/EVP_MD-MD2.html", "doc/html/man7/EVP_MD-MD4.html", "doc/html/man7/EVP_MD-MD5-SHA1.html", @@ -17103,12 +19775,17 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-EC.html", "doc/html/man7/EVP_PKEY-FFC.html", "doc/html/man7/EVP_PKEY-HMAC.html", + "doc/html/man7/EVP_PKEY-ML-DSA.html", + "doc/html/man7/EVP_PKEY-ML-KEM.html", "doc/html/man7/EVP_PKEY-RSA.html", + "doc/html/man7/EVP_PKEY-SLH-DSA.html", "doc/html/man7/EVP_PKEY-SM2.html", "doc/html/man7/EVP_PKEY-X25519.html", + "doc/html/man7/EVP_RAND-CRNG-TEST.html", "doc/html/man7/EVP_RAND-CTR-DRBG.html", "doc/html/man7/EVP_RAND-HASH-DRBG.html", "doc/html/man7/EVP_RAND-HMAC-DRBG.html", + "doc/html/man7/EVP_RAND-JITTER.html", "doc/html/man7/EVP_RAND-SEED-SRC.html", "doc/html/man7/EVP_RAND-TEST-RAND.html", "doc/html/man7/EVP_RAND.html", @@ -17116,17 +19793,19 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-ECDSA.html", "doc/html/man7/EVP_SIGNATURE-ED25519.html", "doc/html/man7/EVP_SIGNATURE-HMAC.html", + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html", "doc/html/man7/EVP_SIGNATURE-RSA.html", + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html", "doc/html/man7/OSSL_PROVIDER-FIPS.html", "doc/html/man7/OSSL_PROVIDER-base.html", "doc/html/man7/OSSL_PROVIDER-default.html", "doc/html/man7/OSSL_PROVIDER-legacy.html", "doc/html/man7/OSSL_PROVIDER-null.html", + "doc/html/man7/OSSL_STORE-winstore.html", "doc/html/man7/RAND.html", "doc/html/man7/RSA-PSS.html", "doc/html/man7/X25519.html", "doc/html/man7/bio.html", - "doc/html/man7/crypto.html", "doc/html/man7/ct.html", "doc/html/man7/des_modes.html", "doc/html/man7/evp.html", @@ -17137,14 +19816,31 @@ our %unified_info = ( "doc/html/man7/life_cycle-mac.html", "doc/html/man7/life_cycle-pkey.html", "doc/html/man7/life_cycle-rand.html", - "doc/html/man7/migration_guide.html", "doc/html/man7/openssl-core.h.html", "doc/html/man7/openssl-core_dispatch.h.html", "doc/html/man7/openssl-core_names.h.html", "doc/html/man7/openssl-env.html", "doc/html/man7/openssl-glossary.html", + "doc/html/man7/openssl-qlog.html", + "doc/html/man7/openssl-quic-concurrency.html", + "doc/html/man7/openssl-quic.html", "doc/html/man7/openssl-threads.html", "doc/html/man7/openssl_user_macros.html", + "doc/html/man7/ossl-guide-introduction.html", + "doc/html/man7/ossl-guide-libcrypto-introduction.html", + "doc/html/man7/ossl-guide-libraries-introduction.html", + "doc/html/man7/ossl-guide-libssl-introduction.html", + "doc/html/man7/ossl-guide-migration.html", + "doc/html/man7/ossl-guide-quic-client-block.html", + "doc/html/man7/ossl-guide-quic-client-non-block.html", + "doc/html/man7/ossl-guide-quic-introduction.html", + "doc/html/man7/ossl-guide-quic-multi-stream.html", + "doc/html/man7/ossl-guide-quic-server-block.html", + "doc/html/man7/ossl-guide-quic-server-non-block.html", + "doc/html/man7/ossl-guide-tls-client-block.html", + "doc/html/man7/ossl-guide-tls-client-non-block.html", + "doc/html/man7/ossl-guide-tls-introduction.html", + "doc/html/man7/ossl-guide-tls-server-block.html", "doc/html/man7/ossl_store-file.html", "doc/html/man7/ossl_store.html", "doc/html/man7/passphrase-encoding.html", @@ -17163,10 +19859,10 @@ our %unified_info = ( "doc/html/man7/provider-object.html", "doc/html/man7/provider-rand.html", "doc/html/man7/provider-signature.html", + "doc/html/man7/provider-skeymgmt.html", "doc/html/man7/provider-storemgmt.html", "doc/html/man7/provider.html", "doc/html/man7/proxy-certificates.html", - "doc/html/man7/ssl.html", "doc/html/man7/x509.html" ] }, @@ -17181,12 +19877,21 @@ our %unified_info = ( ] }, "includes" => { + "OpenSSLConfig.cmake" => [ + "." + ], + "OpenSSLConfigVersion.cmake" => [ + "." + ], "apps/asn1parse.o" => [ "apps" ], "apps/ca.o" => [ "apps" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps" + ], "apps/ciphers.o" => [ "apps" ], @@ -17413,6 +20118,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps" + ], "apps/openssl-bin-smime.o" => [ "apps" ], @@ -17500,6 +20208,9 @@ our %unified_info = ( "apps/sess_id.o" => [ "apps" ], + "apps/skeyutl.o" => [ + "apps" + ], "apps/smime.o" => [ "apps" ], @@ -17551,6 +20262,12 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.o" => [ "crypto" ], + "crypto/aes/vpaes-armv8.o" => [ + "crypto" + ], + "crypto/aes/vpaes-loongarch64.o" => [ + "crypto" + ], "crypto/arm64cpuid.o" => [ "crypto" ], @@ -17602,9 +20319,15 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.o" => [ "crypto" ], + "crypto/chacha/chacha-armv8-sve.o" => [ + "crypto" + ], "crypto/chacha/chacha-armv8.o" => [ "crypto" ], + "crypto/chacha/chacha-loongarch64.o" => [ + "crypto" + ], "crypto/chacha/chacha-s390x.o" => [ "crypto" ], @@ -17629,15 +20352,27 @@ our %unified_info = ( "crypto/ec/ecp_s390x_nistp.o" => [ "crypto" ], + "crypto/ec/ecp_sm2p256-armv8.o" => [ + "crypto" + ], + "crypto/ec/ecx_key.o" => [ + "crypto" + ], "crypto/ec/ecx_meth.o" => [ "crypto" ], "crypto/ec/ecx_s390x.o" => [ "crypto" ], + "crypto/ec/libcrypto-lib-ecx_key.o" => [ + "crypto" + ], "crypto/ec/libcrypto-lib-ecx_meth.o" => [ "crypto" ], + "crypto/ec/libfips-lib-ecx_key.o" => [ + "crypto" + ], "crypto/evp/e_aes.o" => [ "crypto", "crypto/modes" @@ -17709,9 +20444,18 @@ our %unified_info = ( "crypto/libfips-lib-cpuid.o" => [ "." ], + "crypto/md5/md5-aarch64.o" => [ + "crypto" + ], + "crypto/md5/md5-loongarch64.o" => [ + "crypto" + ], "crypto/md5/md5-sparcv9.o" => [ "crypto" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.o" => [ + "crypto" + ], "crypto/modes/aes-gcm-armv8_64.o" => [ "crypto" ], @@ -17736,6 +20480,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-gcm128.o" => [ "crypto" ], + "crypto/params_idx.c" => [ + "util/perl" + ], "crypto/poly1305/poly1305-armv4.o" => [ "crypto" ], @@ -17757,6 +20504,9 @@ our %unified_info = ( "crypto/sha/keccak1600-armv4.o" => [ "crypto" ], + "crypto/sha/keccak1600-armv8.o" => [ + "crypto" + ], "crypto/sha/sha1-armv4-large.o" => [ "crypto" ], @@ -17802,6 +20552,18 @@ our %unified_info = ( "crypto/sha/sha512-sparcv9.o" => [ "crypto" ], + "crypto/sm3/sm3-armv8.o" => [ + "crypto" + ], + "crypto/sm4/sm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4_ex-armv8.o" => [ + "crypto" + ], "doc/man1/openssl-asn1parse.pod" => [ "doc" ], @@ -17934,6 +20696,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc" + ], "doc/man1/openssl-smime.pod" => [ "doc" ], @@ -17961,6 +20726,24 @@ our %unified_info = ( "doc/man1/openssl-x509.pod" => [ "doc" ], + "exporters/OpenSSLConfig.cmake" => [ + "." + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "." + ], + "exporters/libcrypto.pc" => [ + "." + ], + "exporters/libssl.pc" => [ + "." + ], + "exporters/openssl.pc" => [ + "." + ], + "fuzz/acert-test" => [ + "include" + ], "fuzz/asn1-test" => [ "include" ], @@ -17991,12 +20774,69 @@ our %unified_info = ( "fuzz/ct-test" => [ "include" ], + "fuzz/decoder-test" => [ + "include" + ], + "fuzz/dtlsclient-test" => [ + "include" + ], + "fuzz/dtlsserver-test" => [ + "include" + ], + "fuzz/hashtable-test" => [ + "include" + ], + "fuzz/ml-dsa-test" => [ + "include" + ], + "fuzz/ml-kem-test" => [ + "include" + ], + "fuzz/pem-test" => [ + "include" + ], + "fuzz/provider-test" => [ + "include" + ], + "fuzz/punycode-test" => [ + "include" + ], + "fuzz/quic-client-test" => [ + "include" + ], + "fuzz/quic-lcidm-test" => [ + "include" + ], + "fuzz/quic-rcidm-test" => [ + "include" + ], + "fuzz/quic-server-test" => [ + "include" + ], + "fuzz/quic-srtm-test" => [ + "include" + ], "fuzz/server-test" => [ "include" ], + "fuzz/slh-dsa-test" => [ + "include" + ], + "fuzz/smime-test" => [ + "include" + ], + "fuzz/v3name-test" => [ + "include" + ], "fuzz/x509-test" => [ "include" ], + "include/internal/param_names.h" => [ + "util/perl" + ], + "include/openssl/core_names.h" => [ + "util/perl" + ], "libcrypto" => [ ".", "include", @@ -18007,6 +20847,9 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libcrypto.pc" => [ + "." + ], "libssl" => [ ".", "include" @@ -18015,6 +20858,12 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libssl.pc" => [ + "." + ], + "openssl.pc" => [ + "." + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der" ], @@ -18054,6 +20903,15 @@ our %unified_info = ( "providers/common/der/der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der" ], @@ -18066,6 +20924,15 @@ our %unified_info = ( "providers/common/der/der_rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der" ], @@ -18111,12 +20978,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov" ], @@ -18147,9 +21026,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der" ], @@ -18192,9 +21077,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18207,12 +21098,24 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18225,28 +21128,39 @@ our %unified_info = ( "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libdefault.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libfips.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/liblegacy.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" + ], + "providers/libtemplate.a" => [ + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" ], "test/aborttest" => [ "include", @@ -18315,6 +21229,14 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_addr_test" => [ + "include", + "apps/include" + ], + "test/bio_base64_test" => [ + "include", + "apps/include" + ], "test/bio_callback_test" => [ "include", "apps/include" @@ -18323,6 +21245,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_dgram_test" => [ + "include", + "apps/include", + "." + ], "test/bio_enc_test" => [ "include", "apps/include" @@ -18331,6 +21258,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_meth_test" => [ + "include", + "apps/include" + ], "test/bio_prefix_text" => [ ".", "include", @@ -18344,6 +21275,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_tfo_test" => [ + "include", + "apps/include", + "." + ], "test/bioprinttest" => [ "include", "apps/include" @@ -18358,6 +21294,9 @@ our %unified_info = ( "include", "apps/include" ], + "test/build_wincrypt_test" => [ + "include" + ], "test/buildtest_c_aes" => [ "include" ], @@ -18373,6 +21312,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => [ "include" ], + "test/buildtest_c_byteorder" => [ + "include" + ], "test/buildtest_c_camellia" => [ "include" ], @@ -18397,9 +21339,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => [ "include" ], - "test/buildtest_c_core_names" => [ - "include" - ], "test/buildtest_c_core_object" => [ "include" ], @@ -18424,6 +21363,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => [ "include" ], + "test/buildtest_c_e_ostime" => [ + "include" + ], "test/buildtest_c_ebcdic" => [ "include" ], @@ -18451,12 +21393,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => [ "include" ], + "test/buildtest_c_hpke" => [ + "include" + ], "test/buildtest_c_http" => [ "include" ], "test/buildtest_c_idea" => [ "include" ], + "test/buildtest_c_indicator" => [ + "include" + ], "test/buildtest_c_kdf" => [ "include" ], @@ -18472,6 +21420,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => [ "include" ], + "test/buildtest_c_ml_kem" => [ + "include" + ], "test/buildtest_c_modes" => [ "include" ], @@ -18502,6 +21453,9 @@ our %unified_info = ( "test/buildtest_c_provider" => [ "include" ], + "test/buildtest_c_quic" => [ + "include" + ], "test/buildtest_c_rand" => [ "include" ], @@ -18544,6 +21498,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => [ "include" ], + "test/buildtest_c_thread" => [ + "include" + ], "test/buildtest_c_tls1" => [ "include" ], @@ -18559,10 +21516,24 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => [ "include" ], + "test/byteorder_test" => [ + "include", + "apps/include" + ], + "test/ca_internals_test" => [ + ".", + "include", + "apps/include" + ], "test/casttest" => [ "include", "apps/include" ], + "test/cert_comp_test" => [ + "include", + "apps/include", + "." + ], "test/chacha_internal_test" => [ ".", "include", @@ -18686,6 +21657,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/decoder_propq_test" => [ + ".", + "include", + "apps/include" + ], "test/defltfips_test" => [ "include", "apps/include" @@ -18701,7 +21677,8 @@ our %unified_info = ( "test/drbgtest" => [ "include", "apps/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "test/dsa_no_digest_size_test" => [ "include", @@ -18744,7 +21721,9 @@ our %unified_info = ( "test/endecode_test" => [ ".", "include", - "apps/include" + "apps/include", + "providers/common/include", + "providers/implementations/include" ], "test/endecoder_legacy_test" => [ ".", @@ -18789,6 +21768,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_pkey_dhkem_test" => [ + "include", + "apps/include" + ], "test/evp_pkey_dparams_test" => [ "include", "apps/include" @@ -18797,10 +21780,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_skey_test" => [ + "include", + "apps/include" + ], "test/evp_test" => [ "include", "apps/include" ], + "test/evp_xof_test" => [ + "include", + "apps/include" + ], "test/exdatatest" => [ "include", "apps/include" @@ -18901,22 +21892,62 @@ our %unified_info = ( ".", "include" ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/pkcs12.o" => [ ".", "include" ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + ".", + "include" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ ".", "include" ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/ssl_test-bin-handshake.o" => [ ".", "include" @@ -18950,6 +21981,10 @@ our %unified_info = ( ".", "include" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/hexstr_test" => [ ".", "include", @@ -18959,6 +21994,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/hpke_test" => [ + "include", + "apps/include" + ], "test/http_test" => [ "include", "apps/include" @@ -18971,6 +22010,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/json_test" => [ + "include", + "apps/include" + ], "test/keymgmt_internal_test" => [ ".", "include", @@ -18985,6 +22028,10 @@ our %unified_info = ( "apps/include", "." ], + "test/list_test" => [ + "include", + "apps/include" + ], "test/localetest" => [ "include", "apps/include" @@ -18998,10 +22045,27 @@ our %unified_info = ( "include", "apps/include" ], + "test/membio_test" => [ + "include", + "apps/include", + "." + ], "test/memleaktest" => [ "include", "apps/include" ], + "test/ml_dsa_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_evp_extra_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_internal_test" => [ + "include", + "apps/include" + ], "test/modes_internal_test" => [ ".", "include", @@ -19036,6 +22100,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pairwise_fail_test" => [ + "include", + "apps/include" + ], "test/param_build_test" => [ "include", "apps/include" @@ -19069,6 +22137,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pkcs12_api_test" => [ + "include", + "apps/include" + ], "test/pkcs12_format_test" => [ "include", "apps/include" @@ -19090,6 +22162,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/priority_queue_test" => [ + "include", + "apps/include" + ], "test/property_test" => [ ".", "include", @@ -19103,6 +22179,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/provider_default_search_path_test" => [ + "include", + "apps/include" + ], "test/provider_fallback_test" => [ "include", "apps/include" @@ -19129,6 +22209,97 @@ our %unified_info = ( "include", "apps/include" ], + "test/quic_ackm_test" => [ + "include", + "apps/include" + ], + "test/quic_cc_test" => [ + "include", + "apps/include" + ], + "test/quic_cfq_test" => [ + "include", + "apps/include" + ], + "test/quic_client_test" => [ + "include", + "apps/include" + ], + "test/quic_fc_test" => [ + "include", + "apps/include" + ], + "test/quic_fifd_test" => [ + "include", + "apps/include" + ], + "test/quic_lcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_multistream_test" => [ + "include", + "apps/include" + ], + "test/quic_newcid_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_qlog_test" => [ + "include", + "apps/include" + ], + "test/quic_radix_test" => [ + "include", + "apps/include" + ], + "test/quic_rcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_record_test" => [ + "include", + "apps/include" + ], + "test/quic_srt_gen_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_srtm_test" => [ + "include", + "apps/include" + ], + "test/quic_stream_test" => [ + "include", + "apps/include" + ], + "test/quic_tserver_test" => [ + "include", + "apps/include" + ], + "test/quic_txp_test" => [ + "include", + "apps/include" + ], + "test/quic_txpim_test" => [ + "include", + "apps/include" + ], + "test/quic_wire_test" => [ + "include", + "apps/include" + ], + "test/quicapitest" => [ + "include", + "apps/include" + ], + "test/quicfaultstest" => [ + "include", + "apps/include", + "." + ], "test/rand_status_test" => [ "include", "apps/include" @@ -19149,14 +22320,20 @@ our %unified_info = ( "include", "apps/include" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "include", - "apps/include" + "apps/include", + "crypto" ], "test/recordlentest" => [ "include", "apps/include" ], + "test/rpktest" => [ + "include", + "apps/include", + "." + ], "test/rsa_complex" => [ "include", "apps/include" @@ -19175,6 +22352,15 @@ our %unified_info = ( "include", "apps/include" ], + "test/rsa_x931_test" => [ + ".", + "include", + "apps/include" + ], + "test/safe_math_test" => [ + "include", + "apps/include" + ], "test/sanitytest" => [ "include", "apps/include" @@ -19196,6 +22382,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/slh_dsa_test" => [ + "include", + "apps/include" + ], "test/sm2_internal_test" => [ "include", "apps/include" @@ -19226,6 +22416,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/ssl_handshake_rtt_test" => [ + "include", + "apps/include", + "." + ], "test/ssl_old_test" => [ ".", "include", @@ -19242,6 +22437,7 @@ our %unified_info = ( "test/sslapitest" => [ "include", "apps/include", + "providers/common/include", "." ], "test/sslbuffertest" => [ @@ -19256,6 +22452,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/strtoultest" => [ + "include", + "apps/include" + ], "test/sysdefaulttest" => [ "include", "apps/include" @@ -19264,7 +22464,13 @@ our %unified_info = ( "include", "apps/include" ], + "test/threadpool_test" => [ + ".", + "include", + "apps/include" + ], "test/threadstest" => [ + ".", "include", "apps/include" ], @@ -19276,6 +22482,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/time_test" => [ + "include", + "apps/include" + ], "test/tls13ccstest" => [ "include", "apps/include" @@ -19285,6 +22495,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/tls13groupselection_test" => [ + "include", + "apps/include" + ], "test/trace_api_test" => [ ".", "include", @@ -19323,6 +22537,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_acert_test" => [ + "include", + "apps/include" + ], "test/x509_check_cert_pkey_test" => [ "include", "apps/include" @@ -19336,6 +22554,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_load_cert_file_test" => [ + "include", + "apps/include" + ], + "test/x509_req_test" => [ + "include", + "apps/include" + ], + "test/x509_test" => [ + "include", + "apps/include" + ], "test/x509_time_test" => [ "include", "apps/include" @@ -19357,6 +22587,7 @@ our %unified_info = ( "providers/libdefault.a", "providers/libfips.a", "providers/liblegacy.a", + "providers/libtemplate.a", "test/libtestutil.a" ], "mandocs" => { @@ -19409,6 +22640,7 @@ our %unified_info = ( "doc/man/man1/openssl-s_server.1", "doc/man/man1/openssl-s_time.1", "doc/man/man1/openssl-sess_id.1", + "doc/man/man1/openssl-skeyutl.1", "doc/man/man1/openssl-smime.1", "doc/man/man1/openssl-speed.1", "doc/man/man1/openssl-spkac.1", @@ -19458,6 +22690,7 @@ our %unified_info = ( "doc/man/man3/BIO_find_type.3", "doc/man/man3/BIO_get_data.3", "doc/man/man3/BIO_get_ex_new_index.3", + "doc/man/man3/BIO_get_rpoll_descriptor.3", "doc/man/man3/BIO_meth_new.3", "doc/man/man3/BIO_new.3", "doc/man/man3/BIO_new_CMS.3", @@ -19470,11 +22703,13 @@ our %unified_info = ( "doc/man/man3/BIO_s_connect.3", "doc/man/man3/BIO_s_core.3", "doc/man/man3/BIO_s_datagram.3", + "doc/man/man3/BIO_s_dgram_pair.3", "doc/man/man3/BIO_s_fd.3", "doc/man/man3/BIO_s_file.3", "doc/man/man3/BIO_s_mem.3", "doc/man/man3/BIO_s_null.3", "doc/man/man3/BIO_s_socket.3", + "doc/man/man3/BIO_sendmmsg.3", "doc/man/man3/BIO_set_callback.3", "doc/man/man3/BIO_should_retry.3", "doc/man/man3/BIO_socket_wait.3", @@ -19499,6 +22734,7 @@ our %unified_info = ( "doc/man/man3/BN_swap.3", "doc/man/man3/BN_zero.3", "doc/man/man3/BUF_MEM_new.3", + "doc/man/man3/CMAC_CTX.3", "doc/man/man3/CMS_EncryptedData_decrypt.3", "doc/man/man3/CMS_EncryptedData_encrypt.3", "doc/man/man3/CMS_EnvelopedData_create.3", @@ -19521,6 +22757,7 @@ our %unified_info = ( "doc/man/man3/CMS_uncompress.3", "doc/man/man3/CMS_verify.3", "doc/man/man3/CMS_verify_receipt.3", + "doc/man/man3/COMP_CTX_new.3", "doc/man/man3/CONF_modules_free.3", "doc/man/man3/CONF_modules_load_file.3", "doc/man/man3/CRYPTO_THREAD_run_once.3", @@ -19554,6 +22791,8 @@ our %unified_info = ( "doc/man/man3/DSA_size.3", "doc/man/man3/DTLS_get_data_mtu.3", "doc/man/man3/DTLS_set_timer_cb.3", + "doc/man/man3/DTLSv1_get_timeout.3", + "doc/man/man3/DTLSv1_handle_timeout.3", "doc/man/man3/DTLSv1_listen.3", "doc/man/man3/ECDSA_SIG_new.3", "doc/man/man3/ECDSA_sign.3", @@ -19600,6 +22839,7 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_ctrl.3", "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3", "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3", + "doc/man/man3/EVP_PKEY_CTX_get_algor.3", "doc/man/man3/EVP_PKEY_CTX_new.3", "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3", "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3", @@ -19639,6 +22879,8 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_verify_recover.3", "doc/man/man3/EVP_RAND.3", "doc/man/man3/EVP_SIGNATURE.3", + "doc/man/man3/EVP_SKEY.3", + "doc/man/man3/EVP_SKEYMGMT.3", "doc/man/man3/EVP_SealInit.3", "doc/man/man3/EVP_SignInit.3", "doc/man/man3/EVP_VerifyInit.3", @@ -19668,6 +22910,7 @@ our %unified_info = ( "doc/man/man3/EVP_sm3.3", "doc/man/man3/EVP_sm4_cbc.3", "doc/man/man3/EVP_whirlpool.3", + "doc/man/man3/GENERAL_NAME.3", "doc/man/man3/HMAC.3", "doc/man/man3/MD5.3", "doc/man/man3/MDC2_Init.3", @@ -19692,14 +22935,18 @@ our %unified_info = ( "doc/man/man3/OPENSSL_init_ssl.3", "doc/man/man3/OPENSSL_instrument_bus.3", "doc/man/man3/OPENSSL_load_builtin_modules.3", + "doc/man/man3/OPENSSL_load_u16_le.3", "doc/man/man3/OPENSSL_malloc.3", + "doc/man/man3/OPENSSL_riscvcap.3", "doc/man/man3/OPENSSL_s390xcap.3", "doc/man/man3/OPENSSL_secure_malloc.3", "doc/man/man3/OPENSSL_strcasecmp.3", "doc/man/man3/OSSL_ALGORITHM.3", "doc/man/man3/OSSL_CALLBACK.3", + "doc/man/man3/OSSL_CMP_ATAV_set0.3", "doc/man/man3/OSSL_CMP_CTX_new.3", "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3", + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3", "doc/man/man3/OSSL_CMP_ITAV_set0.3", "doc/man/man3/OSSL_CMP_MSG_get0_header.3", "doc/man/man3/OSSL_CMP_MSG_http_perform.3", @@ -19723,18 +22970,27 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_CTX.3", "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3", "doc/man/man3/OSSL_ENCODER_to_bio.3", + "doc/man/man3/OSSL_ERR_STATE_save.3", "doc/man/man3/OSSL_ESS_check_signing_certs.3", + "doc/man/man3/OSSL_GENERAL_NAMES_print.3", + "doc/man/man3/OSSL_HPKE_CTX_new.3", "doc/man/man3/OSSL_HTTP_REQ_CTX.3", "doc/man/man3/OSSL_HTTP_parse_url.3", "doc/man/man3/OSSL_HTTP_transfer.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3", + "doc/man/man3/OSSL_INDICATOR_set_callback.3", "doc/man/man3/OSSL_ITEM.3", "doc/man/man3/OSSL_LIB_CTX.3", + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3", "doc/man/man3/OSSL_PARAM.3", "doc/man/man3/OSSL_PARAM_BLD.3", "doc/man/man3/OSSL_PARAM_allocate_from_text.3", "doc/man/man3/OSSL_PARAM_dup.3", "doc/man/man3/OSSL_PARAM_int.3", + "doc/man/man3/OSSL_PARAM_print_to_bio.3", "doc/man/man3/OSSL_PROVIDER.3", + "doc/man/man3/OSSL_QUIC_client_method.3", "doc/man/man3/OSSL_SELF_TEST_new.3", "doc/man/man3/OSSL_SELF_TEST_set_callback.3", "doc/man/man3/OSSL_STORE_INFO.3", @@ -19743,11 +22999,13 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_attach.3", "doc/man/man3/OSSL_STORE_expect.3", "doc/man/man3/OSSL_STORE_open.3", + "doc/man/man3/OSSL_sleep.3", "doc/man/man3/OSSL_trace_enabled.3", "doc/man/man3/OSSL_trace_get_category_num.3", "doc/man/man3/OSSL_trace_set_channel.3", "doc/man/man3/OpenSSL_add_all_algorithms.3", "doc/man/man3/OpenSSL_version.3", + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3", "doc/man/man3/PEM_X509_INFO_read_bio_ex.3", "doc/man/man3/PEM_bytes_read_bio.3", "doc/man/man3/PEM_read.3", @@ -19760,6 +23018,7 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_create_cert.3", "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3", "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3", + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3", "doc/man/man3/PKCS12_add1_attr_by_NID.3", "doc/man/man3/PKCS12_add_CSPName_asc.3", "doc/man/man3/PKCS12_add_cert.3", @@ -19851,6 +23110,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_sess_set_get_cb.3", "doc/man/man3/SSL_CTX_sessions.3", "doc/man/man3/SSL_CTX_set0_CA_list.3", + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3", "doc/man/man3/SSL_CTX_set1_curves.3", "doc/man/man3/SSL_CTX_set1_sigalgs.3", "doc/man/man3/SSL_CTX_set1_verify_cert_store.3", @@ -19864,6 +23124,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_ct_validation_callback.3", "doc/man/man3/SSL_CTX_set_ctlog_list_file.3", "doc/man/man3/SSL_CTX_set_default_passwd_cb.3", + "doc/man/man3/SSL_CTX_set_domain_flags.3", "doc/man/man3/SSL_CTX_set_generate_session_id.3", "doc/man/man3/SSL_CTX_set_info_callback.3", "doc/man/man3/SSL_CTX_set_keylog_callback.3", @@ -19871,6 +23132,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_min_proto_version.3", "doc/man/man3/SSL_CTX_set_mode.3", "doc/man/man3/SSL_CTX_set_msg_callback.3", + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3", "doc/man/man3/SSL_CTX_set_num_tickets.3", "doc/man/man3/SSL_CTX_set_options.3", "doc/man/man3/SSL_CTX_set_psk_client_callback.3", @@ -19909,6 +23171,7 @@ our %unified_info = ( "doc/man/man3/SSL_SESSION_print.3", "doc/man/man3/SSL_SESSION_set1_id.3", "doc/man/man3/SSL_accept.3", + "doc/man/man3/SSL_accept_stream.3", "doc/man/man3/SSL_alert_type_string.3", "doc/man/man3/SSL_alloc_buffers.3", "doc/man/man3/SSL_check_chain.3", @@ -19918,59 +23181,90 @@ our %unified_info = ( "doc/man/man3/SSL_export_keying_material.3", "doc/man/man3/SSL_extension_supported.3", "doc/man/man3/SSL_free.3", + "doc/man/man3/SSL_get0_connection.3", + "doc/man/man3/SSL_get0_group_name.3", + "doc/man/man3/SSL_get0_peer_rpk.3", "doc/man/man3/SSL_get0_peer_scts.3", + "doc/man/man3/SSL_get1_builtin_sigalgs.3", "doc/man/man3/SSL_get_SSL_CTX.3", "doc/man/man3/SSL_get_all_async_fds.3", "doc/man/man3/SSL_get_certificate.3", "doc/man/man3/SSL_get_ciphers.3", "doc/man/man3/SSL_get_client_random.3", + "doc/man/man3/SSL_get_conn_close_info.3", "doc/man/man3/SSL_get_current_cipher.3", "doc/man/man3/SSL_get_default_timeout.3", "doc/man/man3/SSL_get_error.3", + "doc/man/man3/SSL_get_event_timeout.3", "doc/man/man3/SSL_get_extms_support.3", "doc/man/man3/SSL_get_fd.3", + "doc/man/man3/SSL_get_handshake_rtt.3", "doc/man/man3/SSL_get_peer_cert_chain.3", "doc/man/man3/SSL_get_peer_certificate.3", "doc/man/man3/SSL_get_peer_signature_nid.3", "doc/man/man3/SSL_get_peer_tmp_key.3", "doc/man/man3/SSL_get_psk_identity.3", "doc/man/man3/SSL_get_rbio.3", + "doc/man/man3/SSL_get_rpoll_descriptor.3", "doc/man/man3/SSL_get_session.3", "doc/man/man3/SSL_get_shared_sigalgs.3", + "doc/man/man3/SSL_get_stream_id.3", + "doc/man/man3/SSL_get_stream_read_state.3", + "doc/man/man3/SSL_get_value_uint.3", "doc/man/man3/SSL_get_verify_result.3", "doc/man/man3/SSL_get_version.3", "doc/man/man3/SSL_group_to_name.3", + "doc/man/man3/SSL_handle_events.3", "doc/man/man3/SSL_in_init.3", + "doc/man/man3/SSL_inject_net_dgram.3", "doc/man/man3/SSL_key_update.3", "doc/man/man3/SSL_library_init.3", "doc/man/man3/SSL_load_client_CA_file.3", "doc/man/man3/SSL_new.3", + "doc/man/man3/SSL_new_domain.3", + "doc/man/man3/SSL_new_listener.3", + "doc/man/man3/SSL_new_stream.3", "doc/man/man3/SSL_pending.3", + "doc/man/man3/SSL_poll.3", "doc/man/man3/SSL_read.3", "doc/man/man3/SSL_read_early_data.3", "doc/man/man3/SSL_rstate_string.3", "doc/man/man3/SSL_session_reused.3", "doc/man/man3/SSL_set1_host.3", + "doc/man/man3/SSL_set1_initial_peer_addr.3", + "doc/man/man3/SSL_set1_server_cert_type.3", "doc/man/man3/SSL_set_async_callback.3", "doc/man/man3/SSL_set_bio.3", + "doc/man/man3/SSL_set_blocking_mode.3", "doc/man/man3/SSL_set_connect_state.3", + "doc/man/man3/SSL_set_default_stream_mode.3", "doc/man/man3/SSL_set_fd.3", + "doc/man/man3/SSL_set_incoming_stream_policy.3", + "doc/man/man3/SSL_set_quic_tls_cbs.3", "doc/man/man3/SSL_set_retry_verify.3", "doc/man/man3/SSL_set_session.3", + "doc/man/man3/SSL_set_session_secret_cb.3", "doc/man/man3/SSL_set_shutdown.3", "doc/man/man3/SSL_set_verify_result.3", "doc/man/man3/SSL_shutdown.3", "doc/man/man3/SSL_state_string.3", + "doc/man/man3/SSL_stream_conclude.3", + "doc/man/man3/SSL_stream_reset.3", "doc/man/man3/SSL_want.3", "doc/man/man3/SSL_write.3", "doc/man/man3/TS_RESP_CTX_new.3", - "doc/man/man3/TS_VERIFY_CTX_set_certs.3", + "doc/man/man3/TS_VERIFY_CTX.3", "doc/man/man3/UI_STRING.3", "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", + "doc/man/man3/X509_ACERT_add1_attr.3", + "doc/man/man3/X509_ACERT_add_attr_nconf.3", + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3", + "doc/man/man3/X509_ACERT_get_attr.3", + "doc/man/man3/X509_ACERT_print_ex.3", "doc/man/man3/X509_ALGOR_dup.3", "doc/man/man3/X509_ATTRIBUTE.3", "doc/man/man3/X509_CRL_get0_by_serial.3", @@ -19987,6 +23281,7 @@ our %unified_info = ( "doc/man/man3/X509_REQ_get_attr.3", "doc/man/man3/X509_REQ_get_extensions.3", "doc/man/man3/X509_SIG_get0.3", + "doc/man/man3/X509_STORE_CTX_get_by_subject.3", "doc/man/man3/X509_STORE_CTX_get_error.3", "doc/man/man3/X509_STORE_CTX_new.3", "doc/man/man3/X509_STORE_CTX_set_verify_cb.3", @@ -20009,6 +23304,7 @@ our %unified_info = ( "doc/man/man3/X509_get0_notBefore.3", "doc/man/man3/X509_get0_signature.3", "doc/man/man3/X509_get0_uids.3", + "doc/man/man3/X509_get_default_cert_file.3", "doc/man/man3/X509_get_extension_flags.3", "doc/man/man3/X509_get_pubkey.3", "doc/man/man3/X509_get_serialNumber.3", @@ -20054,12 +23350,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-RC5.7", "doc/man/man7/EVP_CIPHER-SEED.7", "doc/man/man7/EVP_CIPHER-SM4.7", + "doc/man/man7/EVP_KDF-ARGON2.7", "doc/man/man7/EVP_KDF-HKDF.7", + "doc/man/man7/EVP_KDF-HMAC-DRBG.7", "doc/man/man7/EVP_KDF-KB.7", "doc/man/man7/EVP_KDF-KRB5KDF.7", "doc/man/man7/EVP_KDF-PBKDF1.7", "doc/man/man7/EVP_KDF-PBKDF2.7", "doc/man/man7/EVP_KDF-PKCS12KDF.7", + "doc/man/man7/EVP_KDF-PVKKDF.7", "doc/man/man7/EVP_KDF-SCRYPT.7", "doc/man/man7/EVP_KDF-SS.7", "doc/man/man7/EVP_KDF-SSHKDF.7", @@ -20068,7 +23367,10 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X942-ASN1.7", "doc/man/man7/EVP_KDF-X942-CONCAT.7", "doc/man/man7/EVP_KDF-X963.7", + "doc/man/man7/EVP_KEM-EC.7", + "doc/man/man7/EVP_KEM-ML-KEM.7", "doc/man/man7/EVP_KEM-RSA.7", + "doc/man/man7/EVP_KEM-X25519.7", "doc/man/man7/EVP_KEYEXCH-DH.7", "doc/man/man7/EVP_KEYEXCH-ECDH.7", "doc/man/man7/EVP_KEYEXCH-X25519.7", @@ -20080,6 +23382,7 @@ our %unified_info = ( "doc/man/man7/EVP_MAC-Poly1305.7", "doc/man/man7/EVP_MAC-Siphash.7", "doc/man/man7/EVP_MD-BLAKE2.7", + "doc/man/man7/EVP_MD-KECCAK.7", "doc/man/man7/EVP_MD-MD2.7", "doc/man/man7/EVP_MD-MD4.7", "doc/man/man7/EVP_MD-MD5-SHA1.7", @@ -20099,12 +23402,17 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-EC.7", "doc/man/man7/EVP_PKEY-FFC.7", "doc/man/man7/EVP_PKEY-HMAC.7", + "doc/man/man7/EVP_PKEY-ML-DSA.7", + "doc/man/man7/EVP_PKEY-ML-KEM.7", "doc/man/man7/EVP_PKEY-RSA.7", + "doc/man/man7/EVP_PKEY-SLH-DSA.7", "doc/man/man7/EVP_PKEY-SM2.7", "doc/man/man7/EVP_PKEY-X25519.7", + "doc/man/man7/EVP_RAND-CRNG-TEST.7", "doc/man/man7/EVP_RAND-CTR-DRBG.7", "doc/man/man7/EVP_RAND-HASH-DRBG.7", "doc/man/man7/EVP_RAND-HMAC-DRBG.7", + "doc/man/man7/EVP_RAND-JITTER.7", "doc/man/man7/EVP_RAND-SEED-SRC.7", "doc/man/man7/EVP_RAND-TEST-RAND.7", "doc/man/man7/EVP_RAND.7", @@ -20112,17 +23420,19 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-ECDSA.7", "doc/man/man7/EVP_SIGNATURE-ED25519.7", "doc/man/man7/EVP_SIGNATURE-HMAC.7", + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7", "doc/man/man7/EVP_SIGNATURE-RSA.7", + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7", "doc/man/man7/OSSL_PROVIDER-FIPS.7", "doc/man/man7/OSSL_PROVIDER-base.7", "doc/man/man7/OSSL_PROVIDER-default.7", "doc/man/man7/OSSL_PROVIDER-legacy.7", "doc/man/man7/OSSL_PROVIDER-null.7", + "doc/man/man7/OSSL_STORE-winstore.7", "doc/man/man7/RAND.7", "doc/man/man7/RSA-PSS.7", "doc/man/man7/X25519.7", "doc/man/man7/bio.7", - "doc/man/man7/crypto.7", "doc/man/man7/ct.7", "doc/man/man7/des_modes.7", "doc/man/man7/evp.7", @@ -20133,14 +23443,31 @@ our %unified_info = ( "doc/man/man7/life_cycle-mac.7", "doc/man/man7/life_cycle-pkey.7", "doc/man/man7/life_cycle-rand.7", - "doc/man/man7/migration_guide.7", "doc/man/man7/openssl-core.h.7", "doc/man/man7/openssl-core_dispatch.h.7", "doc/man/man7/openssl-core_names.h.7", "doc/man/man7/openssl-env.7", "doc/man/man7/openssl-glossary.7", + "doc/man/man7/openssl-qlog.7", + "doc/man/man7/openssl-quic-concurrency.7", + "doc/man/man7/openssl-quic.7", "doc/man/man7/openssl-threads.7", "doc/man/man7/openssl_user_macros.7", + "doc/man/man7/ossl-guide-introduction.7", + "doc/man/man7/ossl-guide-libcrypto-introduction.7", + "doc/man/man7/ossl-guide-libraries-introduction.7", + "doc/man/man7/ossl-guide-libssl-introduction.7", + "doc/man/man7/ossl-guide-migration.7", + "doc/man/man7/ossl-guide-quic-client-block.7", + "doc/man/man7/ossl-guide-quic-client-non-block.7", + "doc/man/man7/ossl-guide-quic-introduction.7", + "doc/man/man7/ossl-guide-quic-multi-stream.7", + "doc/man/man7/ossl-guide-quic-server-block.7", + "doc/man/man7/ossl-guide-quic-server-non-block.7", + "doc/man/man7/ossl-guide-tls-client-block.7", + "doc/man/man7/ossl-guide-tls-client-non-block.7", + "doc/man/man7/ossl-guide-tls-introduction.7", + "doc/man/man7/ossl-guide-tls-server-block.7", "doc/man/man7/ossl_store-file.7", "doc/man/man7/ossl_store.7", "doc/man/man7/passphrase-encoding.7", @@ -20159,10 +23486,10 @@ our %unified_info = ( "doc/man/man7/provider-object.7", "doc/man/man7/provider-rand.7", "doc/man/man7/provider-signature.7", + "doc/man/man7/provider-skeymgmt.7", "doc/man/man7/provider-storemgmt.7", "doc/man/man7/provider.7", "doc/man/man7/proxy-certificates.7", - "doc/man/man7/ssl.7", "doc/man/man7/x509.7" ] }, @@ -20174,6 +23501,7 @@ our %unified_info = ( ], "programs" => [ "apps/openssl", + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -20184,7 +23512,24 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test", "test/aborttest", "test/acvp_test", @@ -20202,21 +23547,28 @@ our %unified_info = ( "test/asynctest", "test/bad_dtls_test", "test/bftest", + "test/bio_addr_test", + "test/bio_base64_test", "test/bio_callback_test", "test/bio_core_test", + "test/bio_dgram_test", "test/bio_enc_test", "test/bio_memleak_test", + "test/bio_meth_test", "test/bio_prefix_text", "test/bio_pw_callback_test", "test/bio_readbuffer_test", + "test/bio_tfo_test", "test/bioprinttest", "test/bn_internal_test", "test/bntest", + "test/build_wincrypt_test", "test/buildtest_c_aes", "test/buildtest_c_async", "test/buildtest_c_blowfish", "test/buildtest_c_bn", "test/buildtest_c_buffer", + "test/buildtest_c_byteorder", "test/buildtest_c_camellia", "test/buildtest_c_cast", "test/buildtest_c_cmac", @@ -20225,7 +23577,6 @@ our %unified_info = ( "test/buildtest_c_conftypes", "test/buildtest_c_core", "test/buildtest_c_core_dispatch", - "test/buildtest_c_core_names", "test/buildtest_c_core_object", "test/buildtest_c_cryptoerr_legacy", "test/buildtest_c_decoder", @@ -20234,6 +23585,7 @@ our %unified_info = ( "test/buildtest_c_dsa", "test/buildtest_c_dtls1", "test/buildtest_c_e_os2", + "test/buildtest_c_e_ostime", "test/buildtest_c_ebcdic", "test/buildtest_c_ec", "test/buildtest_c_ecdh", @@ -20243,13 +23595,16 @@ our %unified_info = ( "test/buildtest_c_evp", "test/buildtest_c_fips_names", "test/buildtest_c_hmac", + "test/buildtest_c_hpke", "test/buildtest_c_http", "test/buildtest_c_idea", + "test/buildtest_c_indicator", "test/buildtest_c_kdf", "test/buildtest_c_macros", "test/buildtest_c_md4", "test/buildtest_c_md5", "test/buildtest_c_mdc2", + "test/buildtest_c_ml_kem", "test/buildtest_c_modes", "test/buildtest_c_obj_mac", "test/buildtest_c_objects", @@ -20260,6 +23615,7 @@ our %unified_info = ( "test/buildtest_c_pem2", "test/buildtest_c_prov_ssl", "test/buildtest_c_provider", + "test/buildtest_c_quic", "test/buildtest_c_rand", "test/buildtest_c_rc2", "test/buildtest_c_rc4", @@ -20274,11 +23630,14 @@ our %unified_info = ( "test/buildtest_c_stack", "test/buildtest_c_store", "test/buildtest_c_symhacks", + "test/buildtest_c_thread", "test/buildtest_c_tls1", "test/buildtest_c_ts", "test/buildtest_c_txt_db", "test/buildtest_c_types", "test/buildtest_c_whrlpool", + "test/byteorder_test", + "test/ca_internals_test", "test/casttest", "test/chacha_internal_test", "test/cipher_overhead_test", @@ -20307,6 +23666,7 @@ our %unified_info = ( "test/curve448_internal_test", "test/d2i_test", "test/danetest", + "test/decoder_propq_test", "test/defltfips_test", "test/destest", "test/dhtest", @@ -20331,9 +23691,12 @@ our %unified_info = ( "test/evp_kdf_test", "test/evp_libctx_test", "test/evp_pkey_ctx_new_from_name", + "test/evp_pkey_dhkem_test", "test/evp_pkey_dparams_test", "test/evp_pkey_provided_test", + "test/evp_skey_test", "test/evp_test", + "test/evp_xof_test", "test/exdatatest", "test/exptest", "test/ext_internal_test", @@ -20343,21 +23706,29 @@ our %unified_info = ( "test/gmdifftest", "test/hexstr_test", "test/hmactest", + "test/hpke_test", "test/http_test", "test/ideatest", "test/igetest", + "test/json_test", "test/keymgmt_internal_test", "test/lhash_test", + "test/list_test", "test/localetest", "test/mdc2_internal_test", "test/mdc2test", + "test/membio_test", "test/memleaktest", + "test/ml_dsa_test", + "test/ml_kem_evp_extra_test", + "test/ml_kem_internal_test", "test/modes_internal_test", "test/namemap_internal_test", "test/nodefltctxtest", "test/ocspapitest", "test/ossl_store_test", "test/packettest", + "test/pairwise_fail_test", "test/param_build_test", "test/params_api_test", "test/params_conversion_test", @@ -20366,36 +23737,65 @@ our %unified_info = ( "test/pbetest", "test/pem_read_depr_test", "test/pemtest", + "test/pkcs12_api_test", "test/pkcs12_format_test", "test/pkcs7_test", "test/pkey_meth_kdf_test", "test/pkey_meth_test", "test/poly1305_internal_test", + "test/priority_queue_test", "test/property_test", "test/prov_config_test", "test/provfetchtest", + "test/provider_default_search_path_test", "test/provider_fallback_test", "test/provider_internal_test", "test/provider_pkey_test", "test/provider_status_test", "test/provider_test", "test/punycode_test", + "test/quic_ackm_test", + "test/quic_cc_test", + "test/quic_cfq_test", + "test/quic_client_test", + "test/quic_fc_test", + "test/quic_fifd_test", + "test/quic_lcidm_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_qlog_test", + "test/quic_radix_test", + "test/quic_rcidm_test", + "test/quic_record_test", + "test/quic_srt_gen_test", + "test/quic_srtm_test", + "test/quic_stream_test", + "test/quic_tserver_test", + "test/quic_txp_test", + "test/quic_txpim_test", + "test/quic_wire_test", + "test/quicapitest", + "test/quicfaultstest", "test/rand_status_test", "test/rand_test", "test/rc2test", "test/rc4test", "test/rc5test", - "test/rdrand_sanitytest", + "test/rdcpu_sanitytest", "test/recordlentest", + "test/rpktest", "test/rsa_complex", "test/rsa_mp_test", "test/rsa_sp800_56b_test", "test/rsa_test", + "test/rsa_x931_test", + "test/safe_math_test", "test/sanitytest", "test/secmemtest", "test/servername_test", "test/sha_test", "test/siphash_internal_test", + "test/slh_dsa_test", "test/sm2_internal_test", "test/sm3_internal_test", "test/sm4_internal_test", @@ -20403,6 +23803,7 @@ our %unified_info = ( "test/srptest", "test/ssl_cert_table_internal_test", "test/ssl_ctx_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", @@ -20410,13 +23811,17 @@ our %unified_info = ( "test/sslbuffertest", "test/sslcorrupttest", "test/stack_test", + "test/strtoultest", "test/sysdefaulttest", "test/test_test", + "test/threadpool_test", "test/threadstest", "test/threadstest_fips", "test/time_offset_test", + "test/time_test", "test/tls13ccstest", "test/tls13encryptiontest", + "test/tls13groupselection_test", "test/trace_api_test", "test/uitest", "test/upcallstest", @@ -20426,9 +23831,13 @@ our %unified_info = ( "test/verify_extra_test", "test/versions", "test/wpackettest", + "test/x509_acert_test", "test/x509_check_cert_pkey_test", "test/x509_dup_cert_test", "test/x509_internal_test", + "test/x509_load_cert_file_test", + "test/x509_req_test", + "test/x509_test", "test/x509_time_test", "test/x509aux" ], @@ -20444,6 +23853,33 @@ our %unified_info = ( "apps/CA.pl" => [ "apps/CA.pl.in" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/ca.c" + ], + "apps/lib/ca_internals_test-bin-app_libctx.o" => [ + "apps/lib/app_libctx.c" + ], + "apps/lib/ca_internals_test-bin-app_provider.o" => [ + "apps/lib/app_provider.c" + ], + "apps/lib/ca_internals_test-bin-app_rand.o" => [ + "apps/lib/app_rand.c" + ], + "apps/lib/ca_internals_test-bin-app_x509.o" => [ + "apps/lib/app_x509.c" + ], + "apps/lib/ca_internals_test-bin-apps.o" => [ + "apps/lib/apps.c" + ], + "apps/lib/ca_internals_test-bin-apps_ui.o" => [ + "apps/lib/apps_ui.c" + ], + "apps/lib/ca_internals_test-bin-engine.o" => [ + "apps/lib/engine.c" + ], + "apps/lib/ca_internals_test-bin-fmt.o" => [ + "apps/lib/fmt.c" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/lib/cmp_mock_srv.c" ], @@ -20465,6 +23901,9 @@ our %unified_info = ( "apps/lib/libapps-lib-apps.o" => [ "apps/lib/apps.c" ], + "apps/lib/libapps-lib-apps_opt_printf.o" => [ + "apps/lib/apps_opt_printf.c" + ], "apps/lib/libapps-lib-apps_ui.o" => [ "apps/lib/apps_ui.c" ], @@ -20483,6 +23922,9 @@ our %unified_info = ( "apps/lib/libapps-lib-http_server.o" => [ "apps/lib/http_server.c" ], + "apps/lib/libapps-lib-log.o" => [ + "apps/lib/log.c" + ], "apps/lib/libapps-lib-names.o" => [ "apps/lib/names.c" ], @@ -20514,12 +23956,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -20573,6 +24017,7 @@ our %unified_info = ( "apps/openssl-bin-s_server.o", "apps/openssl-bin-s_time.o", "apps/openssl-bin-sess_id.o", + "apps/openssl-bin-skeyutl.o", "apps/openssl-bin-smime.o", "apps/openssl-bin-speed.o", "apps/openssl-bin-spkac.o", @@ -20718,6 +24163,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/sess_id.c" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/skeyutl.c" + ], "apps/openssl-bin-smime.o" => [ "apps/smime.c" ], @@ -20805,6 +24253,12 @@ our %unified_info = ( "crypto/aria/libcrypto-lib-aria.o" => [ "crypto/aria/aria.c" ], + "crypto/asn1/asn1_time_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], + "crypto/asn1/ca_internals_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], "crypto/asn1/libcrypto-lib-a_bitstr.o" => [ "crypto/asn1/a_bitstr.c" ], @@ -20997,6 +24451,9 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" => [ "crypto/asn1/x_val.c" ], + "crypto/asn1_time_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/async/arch/libcrypto-lib-async_null.o" => [ "crypto/async/arch/async_null.c" ], @@ -21090,6 +24547,9 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_dgram.o" => [ "crypto/bio/bss_dgram.c" ], + "crypto/bio/libcrypto-lib-bss_dgram_pair.o" => [ + "crypto/bio/bss_dgram_pair.c" + ], "crypto/bio/libcrypto-lib-bss_fd.o" => [ "crypto/bio/bss_fd.c" ], @@ -21216,6 +24676,9 @@ our %unified_info = ( "crypto/bn/libcrypto-lib-ppc-mont.o" => [ "crypto/bn/ppc-mont.s" ], + "crypto/bn/libcrypto-lib-ppc64-mont-fixed.o" => [ + "crypto/bn/ppc64-mont-fixed.s" + ], "crypto/bn/libfips-lib-bn-ppc.o" => [ "crypto/bn/bn-ppc.s" ], @@ -21306,6 +24769,9 @@ our %unified_info = ( "crypto/bn/libfips-lib-ppc-mont.o" => [ "crypto/bn/ppc-mont.s" ], + "crypto/bn/libfips-lib-ppc64-mont-fixed.o" => [ + "crypto/bn/ppc64-mont-fixed.s" + ], "crypto/buffer/libcrypto-lib-buf_err.o" => [ "crypto/buffer/buf_err.c" ], @@ -21315,6 +24781,9 @@ our %unified_info = ( "crypto/buffer/libfips-lib-buffer.o" => [ "crypto/buffer/buffer.c" ], + "crypto/ca_internals_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/camellia/libcrypto-lib-camellia.o" => [ "crypto/camellia/camellia.c" ], @@ -21375,6 +24844,9 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_err.o" => [ "crypto/cmp/cmp_err.c" ], + "crypto/cmp/libcrypto-lib-cmp_genm.o" => [ + "crypto/cmp/cmp_genm.c" + ], "crypto/cmp/libcrypto-lib-cmp_hdr.o" => [ "crypto/cmp/cmp_hdr.c" ], @@ -22074,9 +25546,15 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_blocks.o" => [ "crypto/err/err_blocks.c" ], + "crypto/err/libcrypto-lib-err_mark.o" => [ + "crypto/err/err_mark.c" + ], "crypto/err/libcrypto-lib-err_prn.o" => [ "crypto/err/err_prn.c" ], + "crypto/err/libcrypto-lib-err_save.o" => [ + "crypto/err/err_save.c" + ], "crypto/ess/libcrypto-lib-ess_asn1.o" => [ "crypto/ess/ess_asn1.c" ], @@ -22323,9 +25801,15 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libcrypto-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libcrypto-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libcrypto-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/evp/libfips-lib-asymcipher.o" => [ "crypto/evp/asymcipher.c" ], @@ -22371,9 +25855,6 @@ our %unified_info = ( "crypto/evp/libfips-lib-keymgmt_meth.o" => [ "crypto/evp/keymgmt_meth.c" ], - "crypto/evp/libfips-lib-m_sigver.o" => [ - "crypto/evp/m_sigver.c" - ], "crypto/evp/libfips-lib-mac_lib.o" => [ "crypto/evp/mac_lib.c" ], @@ -22392,9 +25873,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libfips-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libfips-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libfips-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/ffc/libcrypto-lib-ffc_backend.o" => [ "crypto/ffc/ffc_backend.c" ], @@ -22437,12 +25924,30 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params_validate.o" => [ "crypto/ffc/ffc_params_validate.c" ], + "crypto/hashtable/libcrypto-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libcrypto-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], + "crypto/hashtable/libfips-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libfips-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], "crypto/hmac/libcrypto-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], "crypto/hmac/libfips-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], + "crypto/hpke/libcrypto-lib-hpke.o" => [ + "crypto/hpke/hpke.c" + ], + "crypto/hpke/libcrypto-lib-hpke_util.o" => [ + "crypto/hpke/hpke_util.c" + ], "crypto/http/libcrypto-lib-http_client.o" => [ "crypto/http/http_client.c" ], @@ -22485,6 +25990,9 @@ our %unified_info = ( "crypto/libcrypto-lib-bsearch.o" => [ "crypto/bsearch.c" ], + "crypto/libcrypto-lib-comp_methods.o" => [ + "crypto/comp_methods.c" + ], "crypto/libcrypto-lib-context.o" => [ "crypto/context.c" ], @@ -22512,9 +26020,15 @@ our %unified_info = ( "crypto/libcrypto-lib-cversion.o" => [ "crypto/cversion.c" ], + "crypto/libcrypto-lib-defaults.o" => [ + "crypto/defaults.c" + ], "crypto/libcrypto-lib-der_writer.o" => [ "crypto/der_writer.c" ], + "crypto/libcrypto-lib-deterministic_nonce.o" => [ + "crypto/deterministic_nonce.c" + ], "crypto/libcrypto-lib-ebcdic.o" => [ "crypto/ebcdic.c" ], @@ -22524,6 +26038,9 @@ our %unified_info = ( "crypto/libcrypto-lib-getenv.o" => [ "crypto/getenv.c" ], + "crypto/libcrypto-lib-indicator_core.o" => [ + "crypto/indicator_core.c" + ], "crypto/libcrypto-lib-info.o" => [ "crypto/info.c" ], @@ -22572,6 +26089,9 @@ our %unified_info = ( "crypto/libcrypto-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libcrypto-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libcrypto-lib-passphrase.o" => [ "crypto/passphrase.c" ], @@ -22599,12 +26119,21 @@ our %unified_info = ( "crypto/libcrypto-lib-punycode.o" => [ "crypto/punycode.c" ], + "crypto/libcrypto-lib-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/libcrypto-lib-self_test_core.o" => [ "crypto/self_test_core.c" ], + "crypto/libcrypto-lib-sleep.o" => [ + "crypto/sleep.c" + ], "crypto/libcrypto-lib-sparse_array.o" => [ "crypto/sparse_array.c" ], + "crypto/libcrypto-lib-ssl_err.o" => [ + "crypto/ssl_err.c" + ], "crypto/libcrypto-lib-threads_lib.o" => [ "crypto/threads_lib.c" ], @@ -22617,6 +26146,9 @@ our %unified_info = ( "crypto/libcrypto-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libcrypto-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libcrypto-lib-trace.o" => [ "crypto/trace.c" ], @@ -22680,6 +26212,9 @@ our %unified_info = ( "crypto/libfips-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libfips-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libfips-lib-ppccap.o" => [ "crypto/ppccap.c" ], @@ -22710,6 +26245,9 @@ our %unified_info = ( "crypto/libfips-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libfips-lib-time.o" => [ + "crypto/time.c" + ], "crypto/md4/libcrypto-lib-md4_dgst.o" => [ "crypto/md4/md4_dgst.c" ], @@ -22731,6 +26269,60 @@ our %unified_info = ( "crypto/mdc2/libcrypto-lib-mdc2dgst.o" => [ "crypto/mdc2/mdc2dgst.c" ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_kem/libcrypto-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], + "crypto/ml_kem/libfips-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], "crypto/modes/libcrypto-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22767,6 +26359,9 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libcrypto-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/modes/libfips-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22794,6 +26389,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libfips-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/objects/libcrypto-lib-o_names.o" => [ "crypto/objects/o_names.c" ], @@ -22839,6 +26437,9 @@ our %unified_info = ( "crypto/ocsp/libcrypto-lib-v3_ocsp.o" => [ "crypto/ocsp/v3_ocsp.c" ], + "crypto/packettest-bin-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/pem/libcrypto-lib-pem_all.o" => [ "crypto/pem/pem_all.c" ], @@ -23007,6 +26608,9 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_pool.o" => [ "crypto/rand/rand_pool.c" ], + "crypto/rand/libcrypto-lib-rand_uniform.o" => [ + "crypto/rand/rand_uniform.c" + ], "crypto/rand/libcrypto-lib-randfile.o" => [ "crypto/rand/randfile.c" ], @@ -23256,6 +26860,66 @@ our %unified_info = ( "crypto/siphash/libcrypto-lib-siphash.o" => [ "crypto/siphash/siphash.c" ], + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], + "crypto/slh_dsa/libfips-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libfips-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libfips-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libfips-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libfips-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], "crypto/sm2/libcrypto-lib-sm2_crypt.o" => [ "crypto/sm2/sm2_crypt.c" ], @@ -23310,6 +26974,42 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_strings.o" => [ "crypto/store/store_strings.c" ], + "crypto/thread/arch/libcrypto-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/arch/libfips-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libfips-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libfips-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/libcrypto-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libcrypto-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libcrypto-lib-internal.o" => [ + "crypto/thread/internal.c" + ], + "crypto/thread/libfips-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libfips-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libfips-lib-internal.o" => [ + "crypto/thread/internal.c" + ], "crypto/ts/libcrypto-lib-ts_asn1.o" => [ "crypto/ts/ts_asn1.c" ], @@ -23394,6 +27094,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_tree.o" => [ "crypto/x509/pcy_tree.c" ], + "crypto/x509/libcrypto-lib-t_acert.o" => [ + "crypto/x509/t_acert.c" + ], "crypto/x509/libcrypto-lib-t_crl.o" => [ "crypto/x509/t_crl.c" ], @@ -23403,6 +27106,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-t_x509.o" => [ "crypto/x509/t_x509.c" ], + "crypto/x509/libcrypto-lib-v3_aaa.o" => [ + "crypto/x509/v3_aaa.c" + ], + "crypto/x509/libcrypto-lib-v3_ac_tgt.o" => [ + "crypto/x509/v3_ac_tgt.c" + ], "crypto/x509/libcrypto-lib-v3_addr.o" => [ "crypto/x509/v3_addr.c" ], @@ -23418,6 +27127,21 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_asid.o" => [ "crypto/x509/v3_asid.c" ], + "crypto/x509/libcrypto-lib-v3_attrdesc.o" => [ + "crypto/x509/v3_attrdesc.c" + ], + "crypto/x509/libcrypto-lib-v3_attrmap.o" => [ + "crypto/x509/v3_attrmap.c" + ], + "crypto/x509/libcrypto-lib-v3_audit_id.o" => [ + "crypto/x509/v3_audit_id.c" + ], + "crypto/x509/libcrypto-lib-v3_authattid.o" => [ + "crypto/x509/v3_authattid.c" + ], + "crypto/x509/libcrypto-lib-v3_battcons.o" => [ + "crypto/x509/v3_battcons.c" + ], "crypto/x509/libcrypto-lib-v3_bcons.o" => [ "crypto/x509/v3_bcons.c" ], @@ -23442,15 +27166,24 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_genn.o" => [ "crypto/x509/v3_genn.c" ], + "crypto/x509/libcrypto-lib-v3_group_ac.o" => [ + "crypto/x509/v3_group_ac.c" + ], "crypto/x509/libcrypto-lib-v3_ia5.o" => [ "crypto/x509/v3_ia5.c" ], + "crypto/x509/libcrypto-lib-v3_ind_iss.o" => [ + "crypto/x509/v3_ind_iss.c" + ], "crypto/x509/libcrypto-lib-v3_info.o" => [ "crypto/x509/v3_info.c" ], "crypto/x509/libcrypto-lib-v3_int.o" => [ "crypto/x509/v3_int.c" ], + "crypto/x509/libcrypto-lib-v3_iobo.o" => [ + "crypto/x509/v3_iobo.c" + ], "crypto/x509/libcrypto-lib-v3_ist.o" => [ "crypto/x509/v3_ist.c" ], @@ -23460,6 +27193,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_ncons.o" => [ "crypto/x509/v3_ncons.c" ], + "crypto/x509/libcrypto-lib-v3_no_ass.o" => [ + "crypto/x509/v3_no_ass.c" + ], + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o" => [ + "crypto/x509/v3_no_rev_avail.c" + ], "crypto/x509/libcrypto-lib-v3_pci.o" => [ "crypto/x509/v3_pci.c" ], @@ -23481,18 +27220,36 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_purp.o" => [ "crypto/x509/v3_purp.c" ], + "crypto/x509/libcrypto-lib-v3_rolespec.o" => [ + "crypto/x509/v3_rolespec.c" + ], "crypto/x509/libcrypto-lib-v3_san.o" => [ "crypto/x509/v3_san.c" ], + "crypto/x509/libcrypto-lib-v3_sda.o" => [ + "crypto/x509/v3_sda.c" + ], + "crypto/x509/libcrypto-lib-v3_single_use.o" => [ + "crypto/x509/v3_single_use.c" + ], "crypto/x509/libcrypto-lib-v3_skid.o" => [ "crypto/x509/v3_skid.c" ], + "crypto/x509/libcrypto-lib-v3_soa_id.o" => [ + "crypto/x509/v3_soa_id.c" + ], "crypto/x509/libcrypto-lib-v3_sxnet.o" => [ "crypto/x509/v3_sxnet.c" ], + "crypto/x509/libcrypto-lib-v3_timespec.o" => [ + "crypto/x509/v3_timespec.c" + ], "crypto/x509/libcrypto-lib-v3_tlsf.o" => [ "crypto/x509/v3_tlsf.c" ], + "crypto/x509/libcrypto-lib-v3_usernotice.o" => [ + "crypto/x509/v3_usernotice.c" + ], "crypto/x509/libcrypto-lib-v3_utf8.o" => [ "crypto/x509/v3_utf8.c" ], @@ -23502,6 +27259,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3err.o" => [ "crypto/x509/v3err.c" ], + "crypto/x509/libcrypto-lib-x509_acert.o" => [ + "crypto/x509/x509_acert.c" + ], "crypto/x509/libcrypto-lib-x509_att.o" => [ "crypto/x509/x509_att.c" ], @@ -23553,6 +27313,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_vpm.o" => [ "crypto/x509/x509_vpm.c" ], + "crypto/x509/libcrypto-lib-x509aset.o" => [ + "crypto/x509/x509aset.c" + ], "crypto/x509/libcrypto-lib-x509cset.o" => [ "crypto/x509/x509cset.c" ], @@ -23580,6 +27343,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_exten.o" => [ "crypto/x509/x_exten.c" ], + "crypto/x509/libcrypto-lib-x_ietfatt.o" => [ + "crypto/x509/x_ietfatt.c" + ], "crypto/x509/libcrypto-lib-x_name.o" => [ "crypto/x509/x_name.c" ], @@ -23601,6 +27367,16 @@ our %unified_info = ( "engines/libcrypto-lib-e_padlock.o" => [ "engines/e_padlock.c" ], + "fuzz/acert-test" => [ + "fuzz/acert-test-bin-acert.o", + "fuzz/acert-test-bin-test-corpus.o" + ], + "fuzz/acert-test-bin-acert.o" => [ + "fuzz/acert.c" + ], + "fuzz/acert-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/asn1-test" => [ "fuzz/asn1-test-bin-asn1.o", "fuzz/asn1-test-bin-fuzz_rand.o", @@ -23713,6 +27489,190 @@ our %unified_info = ( "fuzz/ct-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/decoder-test" => [ + "fuzz/decoder-test-bin-decoder.o", + "fuzz/decoder-test-bin-fuzz_rand.o", + "fuzz/decoder-test-bin-test-corpus.o" + ], + "fuzz/decoder-test-bin-decoder.o" => [ + "fuzz/decoder.c" + ], + "fuzz/decoder-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/decoder-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsclient-test" => [ + "fuzz/dtlsclient-test-bin-dtlsclient.o", + "fuzz/dtlsclient-test-bin-fuzz_rand.o", + "fuzz/dtlsclient-test-bin-test-corpus.o" + ], + "fuzz/dtlsclient-test-bin-dtlsclient.o" => [ + "fuzz/dtlsclient.c" + ], + "fuzz/dtlsclient-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsclient-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsserver-test" => [ + "fuzz/dtlsserver-test-bin-dtlsserver.o", + "fuzz/dtlsserver-test-bin-fuzz_rand.o", + "fuzz/dtlsserver-test-bin-test-corpus.o" + ], + "fuzz/dtlsserver-test-bin-dtlsserver.o" => [ + "fuzz/dtlsserver.c" + ], + "fuzz/dtlsserver-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsserver-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/hashtable-test" => [ + "fuzz/hashtable-test-bin-fuzz_rand.o", + "fuzz/hashtable-test-bin-hashtable.o", + "fuzz/hashtable-test-bin-test-corpus.o" + ], + "fuzz/hashtable-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/hashtable-test-bin-hashtable.o" => [ + "fuzz/hashtable.c" + ], + "fuzz/hashtable-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-dsa-test" => [ + "fuzz/ml-dsa-test-bin-fuzz_rand.o", + "fuzz/ml-dsa-test-bin-ml-dsa.o", + "fuzz/ml-dsa-test-bin-test-corpus.o" + ], + "fuzz/ml-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-dsa-test-bin-ml-dsa.o" => [ + "fuzz/ml-dsa.c" + ], + "fuzz/ml-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-kem-test" => [ + "fuzz/ml-kem-test-bin-fuzz_rand.o", + "fuzz/ml-kem-test-bin-ml-kem.o", + "fuzz/ml-kem-test-bin-test-corpus.o" + ], + "fuzz/ml-kem-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-kem-test-bin-ml-kem.o" => [ + "fuzz/ml-kem.c" + ], + "fuzz/ml-kem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/pem-test" => [ + "fuzz/pem-test-bin-pem.o", + "fuzz/pem-test-bin-test-corpus.o" + ], + "fuzz/pem-test-bin-pem.o" => [ + "fuzz/pem.c" + ], + "fuzz/pem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/provider-test" => [ + "fuzz/provider-test-bin-provider.o", + "fuzz/provider-test-bin-test-corpus.o" + ], + "fuzz/provider-test-bin-provider.o" => [ + "fuzz/provider.c" + ], + "fuzz/provider-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/punycode-test" => [ + "fuzz/punycode-test-bin-punycode.o", + "fuzz/punycode-test-bin-test-corpus.o" + ], + "fuzz/punycode-test-bin-punycode.o" => [ + "fuzz/punycode.c" + ], + "fuzz/punycode-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-client-test" => [ + "fuzz/quic-client-test-bin-fuzz_rand.o", + "fuzz/quic-client-test-bin-quic-client.o", + "fuzz/quic-client-test-bin-test-corpus.o" + ], + "fuzz/quic-client-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-client-test-bin-quic-client.o" => [ + "fuzz/quic-client.c" + ], + "fuzz/quic-client-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-lcidm-test" => [ + "fuzz/quic-lcidm-test-bin-fuzz_rand.o", + "fuzz/quic-lcidm-test-bin-quic-lcidm.o", + "fuzz/quic-lcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-lcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-lcidm-test-bin-quic-lcidm.o" => [ + "fuzz/quic-lcidm.c" + ], + "fuzz/quic-lcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-rcidm-test" => [ + "fuzz/quic-rcidm-test-bin-fuzz_rand.o", + "fuzz/quic-rcidm-test-bin-quic-rcidm.o", + "fuzz/quic-rcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-rcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-rcidm-test-bin-quic-rcidm.o" => [ + "fuzz/quic-rcidm.c" + ], + "fuzz/quic-rcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-server-test" => [ + "fuzz/quic-server-test-bin-fuzz_rand.o", + "fuzz/quic-server-test-bin-quic-server.o", + "fuzz/quic-server-test-bin-test-corpus.o" + ], + "fuzz/quic-server-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-server-test-bin-quic-server.o" => [ + "fuzz/quic-server.c" + ], + "fuzz/quic-server-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-srtm-test" => [ + "fuzz/quic-srtm-test-bin-fuzz_rand.o", + "fuzz/quic-srtm-test-bin-quic-srtm.o", + "fuzz/quic-srtm-test-bin-test-corpus.o" + ], + "fuzz/quic-srtm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-srtm-test-bin-quic-srtm.o" => [ + "fuzz/quic-srtm.c" + ], + "fuzz/quic-srtm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/server-test" => [ "fuzz/server-test-bin-fuzz_rand.o", "fuzz/server-test-bin-server.o", @@ -23727,6 +27687,40 @@ our %unified_info = ( "fuzz/server-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/slh-dsa-test" => [ + "fuzz/slh-dsa-test-bin-fuzz_rand.o", + "fuzz/slh-dsa-test-bin-slh-dsa.o", + "fuzz/slh-dsa-test-bin-test-corpus.o" + ], + "fuzz/slh-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/slh-dsa-test-bin-slh-dsa.o" => [ + "fuzz/slh-dsa.c" + ], + "fuzz/slh-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/smime-test" => [ + "fuzz/smime-test-bin-smime.o", + "fuzz/smime-test-bin-test-corpus.o" + ], + "fuzz/smime-test-bin-smime.o" => [ + "fuzz/smime.c" + ], + "fuzz/smime-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test" => [ + "fuzz/v3name-test-bin-test-corpus.o", + "fuzz/v3name-test-bin-v3name.o" + ], + "fuzz/v3name-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test-bin-v3name.o" => [ + "fuzz/v3name.c" + ], "fuzz/x509-test" => [ "fuzz/x509-test-bin-fuzz_rand.o", "fuzz/x509-test-bin-test-corpus.o", @@ -23849,6 +27843,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -23891,6 +27886,7 @@ our %unified_info = ( "crypto/bn/libcrypto-lib-bn_word.o", "crypto/bn/libcrypto-lib-bn_x931p.o", "crypto/bn/libcrypto-lib-ppc-mont.o", + "crypto/bn/libcrypto-lib-ppc64-mont-fixed.o", "crypto/buffer/libcrypto-lib-buf_err.o", "crypto/buffer/libcrypto-lib-buffer.o", "crypto/camellia/libcrypto-lib-camellia.o", @@ -23912,6 +27908,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -24091,7 +28088,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", + "crypto/err/libcrypto-lib-err_mark.o", "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o", "crypto/ess/libcrypto-lib-ess_asn1.o", "crypto/ess/libcrypto-lib-ess_err.o", "crypto/ess/libcrypto-lib-ess_lib.o", @@ -24174,7 +28173,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/ffc/libcrypto-lib-ffc_backend.o", "crypto/ffc/libcrypto-lib-ffc_dh.o", "crypto/ffc/libcrypto-lib-ffc_key_generate.o", @@ -24182,7 +28183,11 @@ our %unified_info = ( "crypto/ffc/libcrypto-lib-ffc_params.o", "crypto/ffc/libcrypto-lib-ffc_params_generate.o", "crypto/ffc/libcrypto-lib-ffc_params_validate.o", + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", "crypto/hmac/libcrypto-lib-hmac.o", + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o", "crypto/http/libcrypto-lib-http_client.o", "crypto/http/libcrypto-lib-http_err.o", "crypto/http/libcrypto-lib-http_lib.o", @@ -24196,6 +28201,7 @@ our %unified_info = ( "crypto/lhash/libcrypto-lib-lhash.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -24205,10 +28211,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -24225,6 +28234,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-ppccap.o", "crypto/libcrypto-lib-ppccpuid.o", @@ -24234,12 +28244,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/md4/libcrypto-lib-md4_dgst.o", @@ -24249,6 +28263,15 @@ our %unified_info = ( "crypto/md5/libcrypto-lib-md5_sha1.o", "crypto/mdc2/libcrypto-lib-mdc2_one.o", "crypto/mdc2/libcrypto-lib-mdc2dgst.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_kem/libcrypto-lib-ml_kem.o", "crypto/modes/libcrypto-lib-cbc128.o", "crypto/modes/libcrypto-lib-ccm128.o", "crypto/modes/libcrypto-lib-cfb128.o", @@ -24261,6 +28284,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/objects/libcrypto-lib-o_names.o", "crypto/objects/libcrypto-lib-obj_dat.o", "crypto/objects/libcrypto-lib-obj_err.o", @@ -24327,6 +28351,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rc2/libcrypto-lib-rc2_cbc.o", "crypto/rc2/libcrypto-lib-rc2_ecb.o", @@ -24381,6 +28406,16 @@ our %unified_info = ( "crypto/sha/libcrypto-lib-sha512p8-ppc.o", "crypto/sha/libcrypto-lib-sha_ppc.o", "crypto/siphash/libcrypto-lib-siphash.o", + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", "crypto/sm2/libcrypto-lib-sm2_crypt.o", "crypto/sm2/libcrypto-lib-sm2_err.o", "crypto/sm2/libcrypto-lib-sm2_key.o", @@ -24398,6 +28433,12 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_register.o", "crypto/store/libcrypto-lib-store_result.o", "crypto/store/libcrypto-lib-store_strings.o", + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", "crypto/ts/libcrypto-lib-ts_asn1.o", "crypto/ts/libcrypto-lib-ts_conf.o", "crypto/ts/libcrypto-lib-ts_err.o", @@ -24426,14 +28467,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -24442,12 +28491,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -24455,13 +28509,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -24479,6 +28540,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -24488,6 +28550,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -24508,14 +28571,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -24532,12 +28596,60 @@ our %unified_info = ( "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", "ssl/libssl-lib-tls_srp.o", - "ssl/record/libssl-lib-dtls1_bitmap.o", + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o", "ssl/record/libssl-lib-rec_layer_d1.o", "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o", "ssl/statem/libssl-lib-extensions.o", "ssl/statem/libssl-lib-extensions_clnt.o", "ssl/statem/libssl-lib-extensions_cust.o", @@ -24575,12 +28687,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/der/der_ecx_key.c" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/der/der_ml_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/der/der_ml_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/der/der_rsa_gen.c" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/der/der_rsa_key.c" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/der/der_slh_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/der/der_slh_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/der/der_wrap_gen.c" ], @@ -24647,6 +28771,9 @@ our %unified_info = ( "providers/common/libfips-lib-securitycheck_fips.o" => [ "providers/common/securitycheck_fips.c" ], + "providers/endecode_test-bin-legacyprov.o" => [ + "providers/legacyprov.c" + ], "providers/evp_extra_test-bin-legacyprov.o" => [ "providers/legacyprov.c" ], @@ -24657,6 +28784,9 @@ our %unified_info = ( "providers/fips/fips-dso-fips_entry.o" => [ "providers/fips/fips_entry.c" ], + "providers/fips/libfips-lib-fipsindicator.o" => [ + "providers/fips/fipsindicator.c" + ], "providers/fips/libfips-lib-fipsprov.o" => [ "providers/fips/fipsprov.c" ], @@ -24720,6 +28850,15 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o" => [ "providers/implementations/ciphers/cipher_aes_gcm_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o" => [ "providers/implementations/ciphers/cipher_aes_hw.c" ], @@ -24792,9 +28931,27 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o" => [ "providers/implementations/ciphers/cipher_sm4.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o" => [ "providers/implementations/ciphers/cipher_sm4_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o" => [ "providers/implementations/ciphers/cipher_tdes.c" ], @@ -25014,6 +29171,15 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" => [ "providers/implementations/encode_decode/endecoder_common.c" ], + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o" => [ + "providers/implementations/encode_decode/ml_common_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o" => [ + "providers/implementations/encode_decode/ml_dsa_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" => [ + "providers/implementations/encode_decode/ml_kem_codecs.c" + ], "providers/implementations/exchange/libdefault-lib-dh_exch.o" => [ "providers/implementations/exchange/dh_exch.c" ], @@ -25038,9 +29204,15 @@ our %unified_info = ( "providers/implementations/exchange/libfips-lib-kdf_exch.o" => [ "providers/implementations/exchange/kdf_exch.c" ], + "providers/implementations/kdfs/libdefault-lib-argon2.o" => [ + "providers/implementations/kdfs/argon2.c" + ], "providers/implementations/kdfs/libdefault-lib-hkdf.o" => [ "providers/implementations/kdfs/hkdf.c" ], + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o" => [ + "providers/implementations/kdfs/hmacdrbg_kdf.c" + ], "providers/implementations/kdfs/libdefault-lib-kbkdf.o" => [ "providers/implementations/kdfs/kbkdf.c" ], @@ -25098,12 +29270,39 @@ our %unified_info = ( "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" => [ "providers/implementations/kdfs/pbkdf1.c" ], + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" => [ + "providers/implementations/kdfs/pvkkdf.c" + ], + "providers/implementations/kem/libdefault-lib-ec_kem.o" => [ + "providers/implementations/kem/ec_kem.c" + ], + "providers/implementations/kem/libdefault-lib-ecx_kem.o" => [ + "providers/implementations/kem/ecx_kem.c" + ], + "providers/implementations/kem/libdefault-lib-kem_util.o" => [ + "providers/implementations/kem/kem_util.c" + ], + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libdefault-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libdefault-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libfips-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libfips-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libfips-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libtemplate-lib-template_kem.o" => [ + "providers/implementations/kem/template_kem.c" + ], "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25122,9 +29321,21 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25143,9 +29354,24 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" => [ + "providers/implementations/keymgmt/template_kmgmt.c" + ], "providers/implementations/macs/libdefault-lib-blake2b_mac.o" => [ "providers/implementations/macs/blake2b_mac.c" ], @@ -25182,9 +29408,6 @@ our %unified_info = ( "providers/implementations/macs/libfips-lib-kmac_prov.o" => [ "providers/implementations/macs/kmac_prov.c" ], - "providers/implementations/rands/libdefault-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libdefault-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25200,12 +29423,12 @@ our %unified_info = ( "providers/implementations/rands/libdefault-lib-seed_src.o" => [ "providers/implementations/rands/seed_src.c" ], + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o" => [ + "providers/implementations/rands/seed_src_jitter.c" + ], "providers/implementations/rands/libdefault-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], - "providers/implementations/rands/libfips-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libfips-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25218,6 +29441,9 @@ our %unified_info = ( "providers/implementations/rands/libfips-lib-drbg_hmac.o" => [ "providers/implementations/rands/drbg_hmac.c" ], + "providers/implementations/rands/libfips-lib-fips_crng_test.o" => [ + "providers/implementations/rands/fips_crng_test.c" + ], "providers/implementations/rands/libfips-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], @@ -25245,9 +29471,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/implementations/signature/sm2_sig.c" ], @@ -25263,9 +29495,27 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libfips-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], "providers/implementations/storemgmt/libdefault-lib-file_store.o" => [ "providers/implementations/storemgmt/file_store.c" ], @@ -25289,8 +29539,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/libcommon-lib-provider_ctx.o", "providers/common/libcommon-lib-provider_err.o", @@ -25302,7 +29556,7 @@ our %unified_info = ( "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", "providers/implementations/digests/libcommon-lib-digestcommon.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/methods/libcommon-lib-tls_pad.o" ], "providers/libcrypto-lib-baseprov.o" => [ "providers/baseprov.c" @@ -25338,6 +29592,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -25362,7 +29619,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -25391,11 +29654,16 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o", "providers/implementations/exchange/libdefault-lib-dh_exch.o", "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", "providers/implementations/exchange/libdefault-lib-ecx_exch.o", "providers/implementations/exchange/libdefault-lib-kdf_exch.o", + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -25406,6 +29674,11 @@ our %unified_info = ( "providers/implementations/kdfs/libdefault-lib-sskdf.o", "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", "providers/implementations/kdfs/libdefault-lib-x942kdf.o", + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", @@ -25413,7 +29686,11 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libdefault-lib-blake2b_mac.o", "providers/implementations/macs/libdefault-lib-blake2s_mac.o", "providers/implementations/macs/libdefault-lib-cmac_prov.o", @@ -25422,12 +29699,12 @@ our %unified_info = ( "providers/implementations/macs/libdefault-lib-kmac_prov.o", "providers/implementations/macs/libdefault-lib-poly1305_prov.o", "providers/implementations/macs/libdefault-lib-siphash_prov.o", - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", @@ -25437,11 +29714,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", "providers/implementations/storemgmt/libdefault-lib-file_store.o", "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", - "ssl/libdefault-lib-s3_cbc.o" + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" ], "providers/libfips.a" => [ "crypto/aes/libfips-lib-aes-ppc.o", @@ -25481,6 +29762,7 @@ our %unified_info = ( "crypto/bn/libfips-lib-bn_sqrt.o", "crypto/bn/libfips-lib-bn_word.o", "crypto/bn/libfips-lib-ppc-mont.o", + "crypto/bn/libfips-lib-ppc64-mont-fixed.o", "crypto/buffer/libfips-lib-buffer.o", "crypto/cmac/libfips-lib-cmac.o", "crypto/des/libfips-lib-des_enc.o", @@ -25552,14 +29834,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", + "crypto/evp/libfips-lib-s_lib.o", "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o", "crypto/ffc/libfips-lib-ffc_backend.o", "crypto/ffc/libfips-lib-ffc_dh.o", "crypto/ffc/libfips-lib-ffc_key_generate.o", @@ -25567,6 +29850,8 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params.o", "crypto/ffc/libfips-lib-ffc_params_generate.o", "crypto/ffc/libfips-lib-ffc_params_validate.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o", "crypto/hmac/libfips-lib-hmac.o", "crypto/lhash/libfips-lib-lhash.o", "crypto/libfips-lib-asn1_dsa.o", @@ -25588,6 +29873,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-ppccap.o", "crypto/libfips-lib-ppccpuid.o", "crypto/libfips-lib-provider_core.o", @@ -25598,6 +29884,16 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o", + "crypto/ml_kem/libfips-lib-ml_kem.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -25607,6 +29903,7 @@ our %unified_info = ( "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o", "crypto/property/libfips-lib-defn_cache.o", "crypto/property/libfips-lib-property.o", "crypto/property/libfips-lib-property_parse.o", @@ -25641,7 +29938,23 @@ our %unified_info = ( "crypto/sha/libfips-lib-sha512.o", "crypto/sha/libfips-lib-sha512p8-ppc.o", "crypto/sha/libfips-lib-sha_ppc.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o", "crypto/stack/libfips-lib-stack.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o", "providers/common/der/libfips-lib-der_rsa_sig.o", "providers/common/libfips-lib-bio_prov.o", "providers/common/libfips-lib-capabilities.o", @@ -25650,6 +29963,7 @@ our %unified_info = ( "providers/common/libfips-lib-provider_util.o", "providers/common/libfips-lib-securitycheck.o", "providers/common/libfips-lib-securitycheck_fips.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o", @@ -25687,6 +30001,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", "providers/implementations/kem/libfips-lib-rsa_kem.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", @@ -25694,24 +30010,32 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libfips-lib-cmac_prov.o", "providers/implementations/macs/libfips-lib-gmac_prov.o", "providers/implementations/macs/libfips-lib-hmac_prov.o", "providers/implementations/macs/libfips-lib-kmac_prov.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o", "providers/libcommon.a", - "ssl/libfips-lib-s3_cbc.o" + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "providers/liblegacy-lib-prov_running.o" => [ "providers/prov_running.c" @@ -25741,13 +30065,12 @@ our %unified_info = ( "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", "providers/implementations/digests/liblegacy-lib-wp_prov.o", "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o", "providers/liblegacy-lib-prov_running.o" ], - "ssl/libdefault-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" - ], - "ssl/libfips-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" + "providers/libtemplate.a" => [ + "providers/implementations/kem/libtemplate-lib-template_kem.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "ssl/libssl-lib-bio_ssl.o" => [ "ssl/bio_ssl.c" @@ -25767,6 +30090,9 @@ our %unified_info = ( "ssl/libssl-lib-pqueue.o" => [ "ssl/pqueue.c" ], + "ssl/libssl-lib-priority_queue.o" => [ + "ssl/priority_queue.c" + ], "ssl/libssl-lib-s3_enc.o" => [ "ssl/s3_enc.c" ], @@ -25782,15 +30108,15 @@ our %unified_info = ( "ssl/libssl-lib-ssl_cert.o" => [ "ssl/ssl_cert.c" ], + "ssl/libssl-lib-ssl_cert_comp.o" => [ + "ssl/ssl_cert_comp.c" + ], "ssl/libssl-lib-ssl_ciph.o" => [ "ssl/ssl_ciph.c" ], "ssl/libssl-lib-ssl_conf.o" => [ "ssl/ssl_conf.c" ], - "ssl/libssl-lib-ssl_err.o" => [ - "ssl/ssl_err.c" - ], "ssl/libssl-lib-ssl_err_legacy.o" => [ "ssl/ssl_err_legacy.c" ], @@ -25839,11 +30165,131 @@ our %unified_info = ( "ssl/libssl-lib-tls_srp.o" => [ "ssl/tls_srp.c" ], - "ssl/record/libcommon-lib-tls_pad.o" => [ - "ssl/record/tls_pad.c" + "ssl/quic/libssl-lib-cc_newreno.o" => [ + "ssl/quic/cc_newreno.c" + ], + "ssl/quic/libssl-lib-json_enc.o" => [ + "ssl/quic/json_enc.c" + ], + "ssl/quic/libssl-lib-qlog.o" => [ + "ssl/quic/qlog.c" + ], + "ssl/quic/libssl-lib-qlog_event_helpers.o" => [ + "ssl/quic/qlog_event_helpers.c" + ], + "ssl/quic/libssl-lib-quic_ackm.o" => [ + "ssl/quic/quic_ackm.c" + ], + "ssl/quic/libssl-lib-quic_cfq.o" => [ + "ssl/quic/quic_cfq.c" + ], + "ssl/quic/libssl-lib-quic_channel.o" => [ + "ssl/quic/quic_channel.c" + ], + "ssl/quic/libssl-lib-quic_demux.o" => [ + "ssl/quic/quic_demux.c" + ], + "ssl/quic/libssl-lib-quic_engine.o" => [ + "ssl/quic/quic_engine.c" + ], + "ssl/quic/libssl-lib-quic_fc.o" => [ + "ssl/quic/quic_fc.c" + ], + "ssl/quic/libssl-lib-quic_fifd.o" => [ + "ssl/quic/quic_fifd.c" + ], + "ssl/quic/libssl-lib-quic_impl.o" => [ + "ssl/quic/quic_impl.c" + ], + "ssl/quic/libssl-lib-quic_lcidm.o" => [ + "ssl/quic/quic_lcidm.c" + ], + "ssl/quic/libssl-lib-quic_method.o" => [ + "ssl/quic/quic_method.c" + ], + "ssl/quic/libssl-lib-quic_obj.o" => [ + "ssl/quic/quic_obj.c" + ], + "ssl/quic/libssl-lib-quic_port.o" => [ + "ssl/quic/quic_port.c" + ], + "ssl/quic/libssl-lib-quic_rcidm.o" => [ + "ssl/quic/quic_rcidm.c" + ], + "ssl/quic/libssl-lib-quic_reactor.o" => [ + "ssl/quic/quic_reactor.c" + ], + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o" => [ + "ssl/quic/quic_reactor_wait_ctx.c" + ], + "ssl/quic/libssl-lib-quic_record_rx.o" => [ + "ssl/quic/quic_record_rx.c" + ], + "ssl/quic/libssl-lib-quic_record_shared.o" => [ + "ssl/quic/quic_record_shared.c" + ], + "ssl/quic/libssl-lib-quic_record_tx.o" => [ + "ssl/quic/quic_record_tx.c" + ], + "ssl/quic/libssl-lib-quic_record_util.o" => [ + "ssl/quic/quic_record_util.c" + ], + "ssl/quic/libssl-lib-quic_rstream.o" => [ + "ssl/quic/quic_rstream.c" ], - "ssl/record/libssl-lib-dtls1_bitmap.o" => [ - "ssl/record/dtls1_bitmap.c" + "ssl/quic/libssl-lib-quic_rx_depack.o" => [ + "ssl/quic/quic_rx_depack.c" + ], + "ssl/quic/libssl-lib-quic_sf_list.o" => [ + "ssl/quic/quic_sf_list.c" + ], + "ssl/quic/libssl-lib-quic_srt_gen.o" => [ + "ssl/quic/quic_srt_gen.c" + ], + "ssl/quic/libssl-lib-quic_srtm.o" => [ + "ssl/quic/quic_srtm.c" + ], + "ssl/quic/libssl-lib-quic_sstream.o" => [ + "ssl/quic/quic_sstream.c" + ], + "ssl/quic/libssl-lib-quic_statm.o" => [ + "ssl/quic/quic_statm.c" + ], + "ssl/quic/libssl-lib-quic_stream_map.o" => [ + "ssl/quic/quic_stream_map.c" + ], + "ssl/quic/libssl-lib-quic_thread_assist.o" => [ + "ssl/quic/quic_thread_assist.c" + ], + "ssl/quic/libssl-lib-quic_tls.o" => [ + "ssl/quic/quic_tls.c" + ], + "ssl/quic/libssl-lib-quic_tls_api.o" => [ + "ssl/quic/quic_tls_api.c" + ], + "ssl/quic/libssl-lib-quic_trace.o" => [ + "ssl/quic/quic_trace.c" + ], + "ssl/quic/libssl-lib-quic_tserver.o" => [ + "ssl/quic/quic_tserver.c" + ], + "ssl/quic/libssl-lib-quic_txp.o" => [ + "ssl/quic/quic_txp.c" + ], + "ssl/quic/libssl-lib-quic_txpim.o" => [ + "ssl/quic/quic_txpim.c" + ], + "ssl/quic/libssl-lib-quic_types.o" => [ + "ssl/quic/quic_types.c" + ], + "ssl/quic/libssl-lib-quic_wire.o" => [ + "ssl/quic/quic_wire.c" + ], + "ssl/quic/libssl-lib-quic_wire_pkt.o" => [ + "ssl/quic/quic_wire_pkt.c" + ], + "ssl/quic/libssl-lib-uint_set.o" => [ + "ssl/quic/uint_set.c" ], "ssl/record/libssl-lib-rec_layer_d1.o" => [ "ssl/record/rec_layer_d1.c" @@ -25851,14 +30297,44 @@ our %unified_info = ( "ssl/record/libssl-lib-rec_layer_s3.o" => [ "ssl/record/rec_layer_s3.c" ], - "ssl/record/libssl-lib-ssl3_buffer.o" => [ - "ssl/record/ssl3_buffer.c" + "ssl/record/methods/libcommon-lib-tls_pad.o" => [ + "ssl/record/methods/tls_pad.c" + ], + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libfips-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libssl-lib-dtls_meth.o" => [ + "ssl/record/methods/dtls_meth.c" + ], + "ssl/record/methods/libssl-lib-ssl3_meth.o" => [ + "ssl/record/methods/ssl3_meth.c" + ], + "ssl/record/methods/libssl-lib-tls13_meth.o" => [ + "ssl/record/methods/tls13_meth.c" + ], + "ssl/record/methods/libssl-lib-tls1_meth.o" => [ + "ssl/record/methods/tls1_meth.c" + ], + "ssl/record/methods/libssl-lib-tls_common.o" => [ + "ssl/record/methods/tls_common.c" ], - "ssl/record/libssl-lib-ssl3_record.o" => [ - "ssl/record/ssl3_record.c" + "ssl/record/methods/libssl-lib-tls_multib.o" => [ + "ssl/record/methods/tls_multib.c" ], - "ssl/record/libssl-lib-ssl3_record_tls13.o" => [ - "ssl/record/ssl3_record_tls13.c" + "ssl/record/methods/libssl-lib-tlsany_meth.o" => [ + "ssl/record/methods/tlsany_meth.c" + ], + "ssl/rio/libssl-lib-poll_builder.o" => [ + "ssl/rio/poll_builder.c" + ], + "ssl/rio/libssl-lib-poll_immediate.o" => [ + "ssl/rio/poll_immediate.c" + ], + "ssl/rio/libssl-lib-rio_notifier.o" => [ + "ssl/rio/rio_notifier.c" ], "ssl/statem/libssl-lib-extensions.o" => [ "ssl/statem/extensions.c" @@ -25954,6 +30430,8 @@ our %unified_info = ( "test/asn1_string_table_test.c" ], "test/asn1_time_test" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1_time_test-bin-ctype.o", "test/asn1_time_test-bin-asn1_time_test.o" ], "test/asn1_time_test-bin-asn1_time_test.o" => [ @@ -25984,6 +30462,18 @@ our %unified_info = ( "test/bftest-bin-bftest.o" => [ "test/bftest.c" ], + "test/bio_addr_test" => [ + "test/bio_addr_test-bin-bio_addr_test.o" + ], + "test/bio_addr_test-bin-bio_addr_test.o" => [ + "test/bio_addr_test.c" + ], + "test/bio_base64_test" => [ + "test/bio_base64_test-bin-bio_base64_test.o" + ], + "test/bio_base64_test-bin-bio_base64_test.o" => [ + "test/bio_base64_test.c" + ], "test/bio_callback_test" => [ "test/bio_callback_test-bin-bio_callback_test.o" ], @@ -25996,6 +30486,12 @@ our %unified_info = ( "test/bio_core_test-bin-bio_core_test.o" => [ "test/bio_core_test.c" ], + "test/bio_dgram_test" => [ + "test/bio_dgram_test-bin-bio_dgram_test.o" + ], + "test/bio_dgram_test-bin-bio_dgram_test.o" => [ + "test/bio_dgram_test.c" + ], "test/bio_enc_test" => [ "test/bio_enc_test-bin-bio_enc_test.o" ], @@ -26008,6 +30504,12 @@ our %unified_info = ( "test/bio_memleak_test-bin-bio_memleak_test.o" => [ "test/bio_memleak_test.c" ], + "test/bio_meth_test" => [ + "test/bio_meth_test-bin-bio_meth_test.o" + ], + "test/bio_meth_test-bin-bio_meth_test.o" => [ + "test/bio_meth_test.c" + ], "test/bio_prefix_text" => [ "test/bio_prefix_text-bin-bio_prefix_text.o" ], @@ -26026,6 +30528,12 @@ our %unified_info = ( "test/bio_readbuffer_test-bin-bio_readbuffer_test.o" => [ "test/bio_readbuffer_test.c" ], + "test/bio_tfo_test" => [ + "test/bio_tfo_test-bin-bio_tfo_test.o" + ], + "test/bio_tfo_test-bin-bio_tfo_test.o" => [ + "test/bio_tfo_test.c" + ], "test/bioprinttest" => [ "test/bioprinttest-bin-bioprinttest.o" ], @@ -26044,6 +30552,12 @@ our %unified_info = ( "test/bntest-bin-bntest.o" => [ "test/bntest.c" ], + "test/build_wincrypt_test" => [ + "test/build_wincrypt_test-bin-build_wincrypt_test.o" + ], + "test/build_wincrypt_test-bin-build_wincrypt_test.o" => [ + "test/build_wincrypt_test.c" + ], "test/buildtest_c_aes" => [ "test/buildtest_c_aes-bin-buildtest_aes.o" ], @@ -26074,6 +30588,12 @@ our %unified_info = ( "test/buildtest_c_buffer-bin-buildtest_buffer.o" => [ "test/buildtest_buffer.c" ], + "test/buildtest_c_byteorder" => [ + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" + ], + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" => [ + "test/buildtest_byteorder.c" + ], "test/buildtest_c_camellia" => [ "test/buildtest_c_camellia-bin-buildtest_camellia.o" ], @@ -26122,12 +30642,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch-bin-buildtest_core_dispatch.o" => [ "test/buildtest_core_dispatch.c" ], - "test/buildtest_c_core_names" => [ - "test/buildtest_c_core_names-bin-buildtest_core_names.o" - ], - "test/buildtest_c_core_names-bin-buildtest_core_names.o" => [ - "test/buildtest_core_names.c" - ], "test/buildtest_c_core_object" => [ "test/buildtest_c_core_object-bin-buildtest_core_object.o" ], @@ -26176,6 +30690,12 @@ our %unified_info = ( "test/buildtest_c_e_os2-bin-buildtest_e_os2.o" => [ "test/buildtest_e_os2.c" ], + "test/buildtest_c_e_ostime" => [ + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" + ], + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" => [ + "test/buildtest_e_ostime.c" + ], "test/buildtest_c_ebcdic" => [ "test/buildtest_c_ebcdic-bin-buildtest_ebcdic.o" ], @@ -26230,6 +30750,12 @@ our %unified_info = ( "test/buildtest_c_hmac-bin-buildtest_hmac.o" => [ "test/buildtest_hmac.c" ], + "test/buildtest_c_hpke" => [ + "test/buildtest_c_hpke-bin-buildtest_hpke.o" + ], + "test/buildtest_c_hpke-bin-buildtest_hpke.o" => [ + "test/buildtest_hpke.c" + ], "test/buildtest_c_http" => [ "test/buildtest_c_http-bin-buildtest_http.o" ], @@ -26242,6 +30768,12 @@ our %unified_info = ( "test/buildtest_c_idea-bin-buildtest_idea.o" => [ "test/buildtest_idea.c" ], + "test/buildtest_c_indicator" => [ + "test/buildtest_c_indicator-bin-buildtest_indicator.o" + ], + "test/buildtest_c_indicator-bin-buildtest_indicator.o" => [ + "test/buildtest_indicator.c" + ], "test/buildtest_c_kdf" => [ "test/buildtest_c_kdf-bin-buildtest_kdf.o" ], @@ -26272,6 +30804,12 @@ our %unified_info = ( "test/buildtest_c_mdc2-bin-buildtest_mdc2.o" => [ "test/buildtest_mdc2.c" ], + "test/buildtest_c_ml_kem" => [ + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" + ], + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" => [ + "test/buildtest_ml_kem.c" + ], "test/buildtest_c_modes" => [ "test/buildtest_c_modes-bin-buildtest_modes.o" ], @@ -26332,6 +30870,12 @@ our %unified_info = ( "test/buildtest_c_provider-bin-buildtest_provider.o" => [ "test/buildtest_provider.c" ], + "test/buildtest_c_quic" => [ + "test/buildtest_c_quic-bin-buildtest_quic.o" + ], + "test/buildtest_c_quic-bin-buildtest_quic.o" => [ + "test/buildtest_quic.c" + ], "test/buildtest_c_rand" => [ "test/buildtest_c_rand-bin-buildtest_rand.o" ], @@ -26416,6 +30960,12 @@ our %unified_info = ( "test/buildtest_c_symhacks-bin-buildtest_symhacks.o" => [ "test/buildtest_symhacks.c" ], + "test/buildtest_c_thread" => [ + "test/buildtest_c_thread-bin-buildtest_thread.o" + ], + "test/buildtest_c_thread-bin-buildtest_thread.o" => [ + "test/buildtest_thread.c" + ], "test/buildtest_c_tls1" => [ "test/buildtest_c_tls1-bin-buildtest_tls1.o" ], @@ -26446,6 +30996,29 @@ our %unified_info = ( "test/buildtest_c_whrlpool-bin-buildtest_whrlpool.o" => [ "test/buildtest_whrlpool.c" ], + "test/byteorder_test" => [ + "test/byteorder_test-bin-byteorder_test.o" + ], + "test/byteorder_test-bin-byteorder_test.o" => [ + "test/byteorder_test.c" + ], + "test/ca_internals_test" => [ + "apps/ca_internals_test-bin-ca.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", + "crypto/ca_internals_test-bin-ctype.o", + "test/ca_internals_test-bin-ca_internals_test.o" + ], + "test/ca_internals_test-bin-ca_internals_test.o" => [ + "test/ca_internals_test.c" + ], "test/casttest" => [ "test/casttest-bin-casttest.o" ], @@ -26624,6 +31197,12 @@ our %unified_info = ( "test/danetest-bin-danetest.o" => [ "test/danetest.c" ], + "test/decoder_propq_test" => [ + "test/decoder_propq_test-bin-decoder_propq_test.o" + ], + "test/decoder_propq_test-bin-decoder_propq_test.o" => [ + "test/decoder_propq_test.c" + ], "test/defltfips_test" => [ "test/defltfips_test-bin-defltfips_test.o" ], @@ -26705,6 +31284,7 @@ our %unified_info = ( "test/ectest.c" ], "test/endecode_test" => [ + "providers/endecode_test-bin-legacyprov.o", "test/endecode_test-bin-endecode_test.o", "test/helpers/endecode_test-bin-predefined_dhparams.o" ], @@ -26737,17 +31317,29 @@ our %unified_info = ( ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", - "test/evp_extra_test-bin-evp_extra_test.o" + "test/evp_extra_test-bin-evp_extra_test.o", + "test/evp_extra_test-bin-fake_pipelineprov.o", + "test/evp_extra_test-bin-fake_rsaprov.o" ], "test/evp_extra_test-bin-evp_extra_test.o" => [ "test/evp_extra_test.c" ], + "test/evp_extra_test-bin-fake_pipelineprov.o" => [ + "test/fake_pipelineprov.c" + ], + "test/evp_extra_test-bin-fake_rsaprov.o" => [ + "test/fake_rsaprov.c" + ], "test/evp_extra_test2" => [ - "test/evp_extra_test2-bin-evp_extra_test2.o" + "test/evp_extra_test2-bin-evp_extra_test2.o", + "test/evp_extra_test2-bin-tls-provider.o" ], "test/evp_extra_test2-bin-evp_extra_test2.o" => [ "test/evp_extra_test2.c" ], + "test/evp_extra_test2-bin-tls-provider.o" => [ + "test/tls-provider.c" + ], "test/evp_fetch_prov_test" => [ "test/evp_fetch_prov_test-bin-evp_fetch_prov_test.o" ], @@ -26772,6 +31364,12 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name-bin-evp_pkey_ctx_new_from_name.o" => [ "test/evp_pkey_ctx_new_from_name.c" ], + "test/evp_pkey_dhkem_test" => [ + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" + ], + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" => [ + "test/evp_pkey_dhkem_test.c" + ], "test/evp_pkey_dparams_test" => [ "test/evp_pkey_dparams_test-bin-evp_pkey_dparams_test.o" ], @@ -26784,12 +31382,28 @@ our %unified_info = ( "test/evp_pkey_provided_test-bin-evp_pkey_provided_test.o" => [ "test/evp_pkey_provided_test.c" ], + "test/evp_skey_test" => [ + "test/evp_skey_test-bin-evp_skey_test.o", + "test/evp_skey_test-bin-fake_cipherprov.o" + ], + "test/evp_skey_test-bin-evp_skey_test.o" => [ + "test/evp_skey_test.c" + ], + "test/evp_skey_test-bin-fake_cipherprov.o" => [ + "test/fake_cipherprov.c" + ], "test/evp_test" => [ "test/evp_test-bin-evp_test.o" ], "test/evp_test-bin-evp_test.o" => [ "test/evp_test.c" ], + "test/evp_xof_test" => [ + "test/evp_xof_test-bin-evp_xof_test.o" + ], + "test/evp_xof_test-bin-evp_xof_test.o" => [ + "test/evp_xof_test.c" + ], "test/exdatatest" => [ "test/exdatatest-bin-exdatatest.o" ], @@ -26875,15 +31489,108 @@ our %unified_info = ( "test/helpers/fatalerrtest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/json_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/json_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/json_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + "test/helpers/pkcs12.c" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ "test/helpers/pkcs12.c" ], + "test/helpers/quic_multistream_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_multistream_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_multistream_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_newcid_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_newcid_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_newcid_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_radix_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_radix_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_radix_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_srt_gen_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicapitest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicapitest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicapitest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicfaultstest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicfaultstest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicfaultstest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/ssl_old_test-bin-predefined_dhparams.o" => [ "test/helpers/predefined_dhparams.c" ], @@ -26911,6 +31618,9 @@ our %unified_info = ( "test/helpers/tls13ccstest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/hexstr_test" => [ "test/hexstr_test-bin-hexstr_test.o" ], @@ -26923,6 +31633,12 @@ our %unified_info = ( "test/hmactest-bin-hmactest.o" => [ "test/hmactest.c" ], + "test/hpke_test" => [ + "test/hpke_test-bin-hpke_test.o" + ], + "test/hpke_test-bin-hpke_test.o" => [ + "test/hpke_test.c" + ], "test/http_test" => [ "test/http_test-bin-http_test.o" ], @@ -26941,6 +31657,16 @@ our %unified_info = ( "test/igetest-bin-igetest.o" => [ "test/igetest.c" ], + "test/json_test" => [ + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/json_test-bin-json_test.o" + ], + "test/json_test-bin-json_test.o" => [ + "test/json_test.c" + ], "test/keymgmt_internal_test" => [ "test/keymgmt_internal_test-bin-keymgmt_internal_test.o" ], @@ -26961,6 +31687,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -26973,6 +31700,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-tests.o", "test/testutil/libtestutil-lib-testutil_init.o" ], + "test/list_test" => [ + "test/list_test-bin-list_test.o" + ], + "test/list_test-bin-list_test.o" => [ + "test/list_test.c" + ], "test/localetest" => [ "test/localetest-bin-localetest.o" ], @@ -26991,12 +31724,36 @@ our %unified_info = ( "test/mdc2test-bin-mdc2test.o" => [ "test/mdc2test.c" ], + "test/membio_test" => [ + "test/membio_test-bin-membio_test.o" + ], + "test/membio_test-bin-membio_test.o" => [ + "test/membio_test.c" + ], "test/memleaktest" => [ "test/memleaktest-bin-memleaktest.o" ], "test/memleaktest-bin-memleaktest.o" => [ "test/memleaktest.c" ], + "test/ml_dsa_test" => [ + "test/ml_dsa_test-bin-ml_dsa_test.o" + ], + "test/ml_dsa_test-bin-ml_dsa_test.o" => [ + "test/ml_dsa_test.c" + ], + "test/ml_kem_evp_extra_test" => [ + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" + ], + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" => [ + "test/ml_kem_evp_extra_test.c" + ], + "test/ml_kem_internal_test" => [ + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" + ], + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" => [ + "test/ml_kem_internal_test.c" + ], "test/modes_internal_test" => [ "test/modes_internal_test-bin-modes_internal_test.o" ], @@ -27042,11 +31799,18 @@ our %unified_info = ( "test/p_test.c" ], "test/packettest" => [ + "crypto/packettest-bin-quic_vlint.o", "test/packettest-bin-packettest.o" ], "test/packettest-bin-packettest.o" => [ "test/packettest.c" ], + "test/pairwise_fail_test" => [ + "test/pairwise_fail_test-bin-pairwise_fail_test.o" + ], + "test/pairwise_fail_test-bin-pairwise_fail_test.o" => [ + "test/pairwise_fail_test.c" + ], "test/param_build_test" => [ "test/param_build_test-bin-param_build_test.o" ], @@ -27095,6 +31859,13 @@ our %unified_info = ( "test/pemtest-bin-pemtest.o" => [ "test/pemtest.c" ], + "test/pkcs12_api_test" => [ + "test/helpers/pkcs12_api_test-bin-pkcs12.o", + "test/pkcs12_api_test-bin-pkcs12_api_test.o" + ], + "test/pkcs12_api_test-bin-pkcs12_api_test.o" => [ + "test/pkcs12_api_test.c" + ], "test/pkcs12_format_test" => [ "test/helpers/pkcs12_format_test-bin-pkcs12.o", "test/pkcs12_format_test-bin-pkcs12_format_test.o" @@ -27126,6 +31897,12 @@ our %unified_info = ( "test/poly1305_internal_test-bin-poly1305_internal_test.o" => [ "test/poly1305_internal_test.c" ], + "test/priority_queue_test" => [ + "test/priority_queue_test-bin-priority_queue_test.o" + ], + "test/priority_queue_test-bin-priority_queue_test.o" => [ + "test/priority_queue_test.c" + ], "test/property_test" => [ "test/property_test-bin-property_test.o" ], @@ -27144,6 +31921,12 @@ our %unified_info = ( "test/provfetchtest-bin-provfetchtest.o" => [ "test/provfetchtest.c" ], + "test/provider_default_search_path_test" => [ + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" + ], + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" => [ + "test/provider_default_search_path_test.c" + ], "test/provider_fallback_test" => [ "test/provider_fallback_test-bin-provider_fallback_test.o" ], @@ -27192,6 +31975,174 @@ our %unified_info = ( "test/punycode_test-bin-punycode_test.o" => [ "test/punycode_test.c" ], + "test/quic_ackm_test" => [ + "test/quic_ackm_test-bin-cc_dummy.o", + "test/quic_ackm_test-bin-quic_ackm_test.o" + ], + "test/quic_ackm_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_ackm_test-bin-quic_ackm_test.o" => [ + "test/quic_ackm_test.c" + ], + "test/quic_cc_test" => [ + "test/quic_cc_test-bin-quic_cc_test.o" + ], + "test/quic_cc_test-bin-quic_cc_test.o" => [ + "test/quic_cc_test.c" + ], + "test/quic_cfq_test" => [ + "test/quic_cfq_test-bin-quic_cfq_test.o" + ], + "test/quic_cfq_test-bin-quic_cfq_test.o" => [ + "test/quic_cfq_test.c" + ], + "test/quic_client_test" => [ + "test/quic_client_test-bin-quic_client_test.o" + ], + "test/quic_client_test-bin-quic_client_test.o" => [ + "test/quic_client_test.c" + ], + "test/quic_fc_test" => [ + "test/quic_fc_test-bin-quic_fc_test.o" + ], + "test/quic_fc_test-bin-quic_fc_test.o" => [ + "test/quic_fc_test.c" + ], + "test/quic_fifd_test" => [ + "test/quic_fifd_test-bin-cc_dummy.o", + "test/quic_fifd_test-bin-quic_fifd_test.o" + ], + "test/quic_fifd_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_fifd_test-bin-quic_fifd_test.o" => [ + "test/quic_fifd_test.c" + ], + "test/quic_lcidm_test" => [ + "test/quic_lcidm_test-bin-quic_lcidm_test.o" + ], + "test/quic_lcidm_test-bin-quic_lcidm_test.o" => [ + "test/quic_lcidm_test.c" + ], + "test/quic_multistream_test" => [ + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/quic_multistream_test-bin-quic_multistream_test.o" + ], + "test/quic_multistream_test-bin-quic_multistream_test.o" => [ + "test/quic_multistream_test.c" + ], + "test/quic_newcid_test" => [ + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/quic_newcid_test-bin-quic_newcid_test.o" + ], + "test/quic_newcid_test-bin-quic_newcid_test.o" => [ + "test/quic_newcid_test.c" + ], + "test/quic_qlog_test" => [ + "test/quic_qlog_test-bin-quic_qlog_test.o" + ], + "test/quic_qlog_test-bin-quic_qlog_test.o" => [ + "test/quic_qlog_test.c" + ], + "test/quic_radix_test" => [ + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "test/quic_rcidm_test" => [ + "test/quic_rcidm_test-bin-quic_rcidm_test.o" + ], + "test/quic_rcidm_test-bin-quic_rcidm_test.o" => [ + "test/quic_rcidm_test.c" + ], + "test/quic_record_test" => [ + "test/quic_record_test-bin-quic_record_test.o" + ], + "test/quic_record_test-bin-quic_record_test.o" => [ + "test/quic_record_test.c" + ], + "test/quic_srt_gen_test" => [ + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" + ], + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" => [ + "test/quic_srt_gen_test.c" + ], + "test/quic_srtm_test" => [ + "test/quic_srtm_test-bin-quic_srtm_test.o" + ], + "test/quic_srtm_test-bin-quic_srtm_test.o" => [ + "test/quic_srtm_test.c" + ], + "test/quic_stream_test" => [ + "test/quic_stream_test-bin-quic_stream_test.o" + ], + "test/quic_stream_test-bin-quic_stream_test.o" => [ + "test/quic_stream_test.c" + ], + "test/quic_tserver_test" => [ + "test/quic_tserver_test-bin-quic_tserver_test.o" + ], + "test/quic_tserver_test-bin-quic_tserver_test.o" => [ + "test/quic_tserver_test.c" + ], + "test/quic_txp_test" => [ + "test/quic_txp_test-bin-cc_dummy.o", + "test/quic_txp_test-bin-quic_txp_test.o" + ], + "test/quic_txp_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_txp_test-bin-quic_txp_test.o" => [ + "test/quic_txp_test.c" + ], + "test/quic_txpim_test" => [ + "test/quic_txpim_test-bin-quic_txpim_test.o" + ], + "test/quic_txpim_test-bin-quic_txpim_test.o" => [ + "test/quic_txpim_test.c" + ], + "test/quic_wire_test" => [ + "test/quic_wire_test-bin-quic_wire_test.o" + ], + "test/quic_wire_test-bin-quic_wire_test.o" => [ + "test/quic_wire_test.c" + ], + "test/quicapitest" => [ + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/quicapitest-bin-quicapitest.o" + ], + "test/quicapitest-bin-quicapitest.o" => [ + "test/quicapitest.c" + ], + "test/quicfaultstest" => [ + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", + "test/quicfaultstest-bin-quicfaultstest.o" + ], + "test/quicfaultstest-bin-quicfaultstest.o" => [ + "test/quicfaultstest.c" + ], + "test/radix/quic_radix_test-bin-quic_radix.o" => [ + "test/radix/quic_radix.c" + ], "test/rand_status_test" => [ "test/rand_status_test-bin-rand_status_test.o" ], @@ -27222,11 +32173,11 @@ our %unified_info = ( "test/rc5test-bin-rc5test.o" => [ "test/rc5test.c" ], - "test/rdrand_sanitytest" => [ - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" + "test/rdcpu_sanitytest" => [ + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" ], - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" => [ - "test/rdrand_sanitytest.c" + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" => [ + "test/rdcpu_sanitytest.c" ], "test/recordlentest" => [ "test/helpers/recordlentest-bin-ssltestlib.o", @@ -27235,6 +32186,13 @@ our %unified_info = ( "test/recordlentest-bin-recordlentest.o" => [ "test/recordlentest.c" ], + "test/rpktest" => [ + "test/helpers/rpktest-bin-ssltestlib.o", + "test/rpktest-bin-rpktest.o" + ], + "test/rpktest-bin-rpktest.o" => [ + "test/rpktest.c" + ], "test/rsa_complex" => [ "test/rsa_complex-bin-rsa_complex.o" ], @@ -27259,6 +32217,18 @@ our %unified_info = ( "test/rsa_test-bin-rsa_test.o" => [ "test/rsa_test.c" ], + "test/rsa_x931_test" => [ + "test/rsa_x931_test-bin-rsa_x931_test.o" + ], + "test/rsa_x931_test-bin-rsa_x931_test.o" => [ + "test/rsa_x931_test.c" + ], + "test/safe_math_test" => [ + "test/safe_math_test-bin-safe_math_test.o" + ], + "test/safe_math_test-bin-safe_math_test.o" => [ + "test/safe_math_test.c" + ], "test/sanitytest" => [ "test/sanitytest-bin-sanitytest.o" ], @@ -27290,6 +32260,12 @@ our %unified_info = ( "test/siphash_internal_test-bin-siphash_internal_test.o" => [ "test/siphash_internal_test.c" ], + "test/slh_dsa_test" => [ + "test/slh_dsa_test-bin-slh_dsa_test.o" + ], + "test/slh_dsa_test-bin-slh_dsa_test.o" => [ + "test/slh_dsa_test.c" + ], "test/sm2_internal_test" => [ "test/sm2_internal_test-bin-sm2_internal_test.o" ], @@ -27332,6 +32308,13 @@ our %unified_info = ( "test/ssl_ctx_test-bin-ssl_ctx_test.o" => [ "test/ssl_ctx_test.c" ], + "test/ssl_handshake_rtt_test" => [ + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" + ], + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" => [ + "test/ssl_handshake_rtt_test.c" + ], "test/ssl_old_test" => [ "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/ssl_old_test-bin-ssl_old_test.o" @@ -27390,6 +32373,12 @@ our %unified_info = ( "test/stack_test-bin-stack_test.o" => [ "test/stack_test.c" ], + "test/strtoultest" => [ + "test/strtoultest-bin-strtoultest.o" + ], + "test/strtoultest-bin-strtoultest.o" => [ + "test/strtoultest.c" + ], "test/sysdefaulttest" => [ "test/sysdefaulttest-bin-sysdefaulttest.o" ], @@ -27420,6 +32409,9 @@ our %unified_info = ( "test/testutil/libtestutil-lib-format_output.o" => [ "test/testutil/format_output.c" ], + "test/testutil/libtestutil-lib-helper.o" => [ + "test/testutil/helper.c" + ], "test/testutil/libtestutil-lib-load.o" => [ "test/testutil/load.c" ], @@ -27453,6 +32445,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-testutil_init.o" => [ "test/testutil/testutil_init.c" ], + "test/threadpool_test" => [ + "test/threadpool_test-bin-threadpool_test.o" + ], + "test/threadpool_test-bin-threadpool_test.o" => [ + "test/threadpool_test.c" + ], "test/threadstest" => [ "test/threadstest-bin-threadstest.o" ], @@ -27471,6 +32469,12 @@ our %unified_info = ( "test/time_offset_test-bin-time_offset_test.o" => [ "test/time_offset_test.c" ], + "test/time_test" => [ + "test/time_test-bin-time_test.o" + ], + "test/time_test-bin-time_test.o" => [ + "test/time_test.c" + ], "test/tls13ccstest" => [ "test/helpers/tls13ccstest-bin-ssltestlib.o", "test/tls13ccstest-bin-tls13ccstest.o" @@ -27484,6 +32488,13 @@ our %unified_info = ( "test/tls13encryptiontest-bin-tls13encryptiontest.o" => [ "test/tls13encryptiontest.c" ], + "test/tls13groupselection_test" => [ + "test/helpers/tls13groupselection_test-bin-ssltestlib.o", + "test/tls13groupselection_test-bin-tls13groupselection_test.o" + ], + "test/tls13groupselection_test-bin-tls13groupselection_test.o" => [ + "test/tls13groupselection_test.c" + ], "test/trace_api_test" => [ "test/trace_api_test-bin-trace_api_test.o" ], @@ -27539,6 +32550,12 @@ our %unified_info = ( "test/wpackettest-bin-wpackettest.o" => [ "test/wpackettest.c" ], + "test/x509_acert_test" => [ + "test/x509_acert_test-bin-x509_acert_test.o" + ], + "test/x509_acert_test-bin-x509_acert_test.o" => [ + "test/x509_acert_test.c" + ], "test/x509_check_cert_pkey_test" => [ "test/x509_check_cert_pkey_test-bin-x509_check_cert_pkey_test.o" ], @@ -27557,6 +32574,24 @@ our %unified_info = ( "test/x509_internal_test-bin-x509_internal_test.o" => [ "test/x509_internal_test.c" ], + "test/x509_load_cert_file_test" => [ + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" + ], + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" => [ + "test/x509_load_cert_file_test.c" + ], + "test/x509_req_test" => [ + "test/x509_req_test-bin-x509_req_test.o" + ], + "test/x509_req_test-bin-x509_req_test.o" => [ + "test/x509_req_test.c" + ], + "test/x509_test" => [ + "test/x509_test-bin-x509_test.o" + ], + "test/x509_test-bin-x509_test.o" => [ + "test/x509_test.c" + ], "test/x509_time_test" => [ "test/x509_time_test-bin-x509_time_test.o" ], @@ -27620,6 +32655,7 @@ my @makevars = ( "LDLIBS", "MT", "MTFLAGS", + "OBJCOPY", "PERL", "RANLIB", "RC", @@ -27633,6 +32669,12 @@ my %disabled_info = ( "asan" => { "macro" => "OPENSSL_NO_ASAN" }, + "brotli" => { + "macro" => "OPENSSL_NO_BROTLI" + }, + "brotli-dynamic" => { + "macro" => "OPENSSL_NO_BROTLI_DYNAMIC" + }, "comp" => { "macro" => "OPENSSL_NO_COMP", "skipped" => [ @@ -27645,6 +32687,9 @@ my %disabled_info = ( "crypto-mdebug-backtrace" => { "macro" => "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE" }, + "demos" => { + "macro" => "OPENSSL_NO_DEMOS" + }, "devcryptoeng" => { "macro" => "OPENSSL_NO_DEVCRYPTOENG" }, @@ -27657,12 +32702,24 @@ my %disabled_info = ( "external-tests" => { "macro" => "OPENSSL_NO_EXTERNAL_TESTS" }, + "fips-jitter" => { + "macro" => "OPENSSL_NO_FIPS_JITTER" + }, "fuzz-afl" => { "macro" => "OPENSSL_NO_FUZZ_AFL" }, "fuzz-libfuzzer" => { "macro" => "OPENSSL_NO_FUZZ_LIBFUZZER" }, + "h3demo" => { + "macro" => "OPENSSL_NO_H3DEMO" + }, + "hqinterop" => { + "macro" => "OPENSSL_NO_HQINTEROP" + }, + "jitter" => { + "macro" => "OPENSSL_NO_JITTER" + }, "ktls" => { "macro" => "OPENSSL_NO_KTLS" }, @@ -27678,6 +32735,9 @@ my %disabled_info = ( "msan" => { "macro" => "OPENSSL_NO_MSAN" }, + "pie" => { + "macro" => "OPENSSL_NO_PIE" + }, "rc5" => { "macro" => "OPENSSL_NO_RC5", "skipped" => [ @@ -27693,6 +32753,12 @@ my %disabled_info = ( "ssl3-method" => { "macro" => "OPENSSL_NO_SSL3_METHOD" }, + "sslkeylog" => { + "macro" => "OPENSSL_NO_SSLKEYLOG" + }, + "tfo" => { + "macro" => "OPENSSL_NO_TFO" + }, "trace" => { "macro" => "OPENSSL_NO_TRACE" }, @@ -27707,6 +32773,21 @@ my %disabled_info = ( }, "weak-ssl-ciphers" => { "macro" => "OPENSSL_NO_WEAK_SSL_CIPHERS" + }, + "winstore" => { + "macro" => "OPENSSL_NO_WINSTORE" + }, + "zlib" => { + "macro" => "OPENSSL_NO_ZLIB" + }, + "zlib-dynamic" => { + "macro" => "OPENSSL_NO_ZLIB_DYNAMIC" + }, + "zstd" => { + "macro" => "OPENSSL_NO_ZSTD" + }, + "zstd-dynamic" => { + "macro" => "OPENSSL_NO_ZSTD_DYNAMIC" } ); my @user_crossable = qw( AR AS CC CXX CPP LD MT RANLIB RC ); @@ -27720,15 +32801,15 @@ unless (caller) { use File::Copy; use Pod::Usage; - use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; - use OpenSSL::fallback '/home/runner/work/node/node/deps/openssl/openssl/external/perl/MODULES.txt'; + use lib '/node/deps/openssl/openssl/util/perl'; + use OpenSSL::fallback '/node/deps/openssl/openssl/external/perl/MODULES.txt'; my $here = dirname($0); if (scalar @ARGV == 0) { # With no arguments, re-create the build file # We do that in two steps, where the first step emits perl - # snipets. + # snippets. my $buildfile = $config{build_file}; my $buildfile_template = "$buildfile.in"; @@ -27748,7 +32829,7 @@ unless (caller) { ); use lib '.'; - use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; + use lib '/node/deps/openssl/openssl/Configurations'; use gentemplate; open my $buildfile_template_fh, ">$buildfile_template" @@ -27765,8 +32846,8 @@ unless (caller) { my $prepend = <<'_____'; use File::Spec::Functions; -use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; -use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; +use lib '/node/deps/openssl/openssl/util/perl'; +use lib '/node/deps/openssl/openssl/Configurations'; use lib '.'; use platform; _____ diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/bn/ppc64-mont-fixed.s b/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/bn/ppc64-mont-fixed.s new file mode 100644 index 00000000000000..9c6337035ae184 --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/bn/ppc64-mont-fixed.s @@ -0,0 +1,417 @@ +.machine "any" +.csect .text[PR],7 + +.globl .bn_mul_mont_fixed_n6 +.align 5 +.bn_mul_mont_fixed_n6: + + std 14,-8(1) + std 20,-16(1) + std 21,-24(1) + std 22,-32(1) + std 23,-40(1) + std 24,-48(1) + std 25,-56(1) + std 26,-64(1) + std 27,-72(1) + + li 0,0 + ld 7,0(7) + + ld 11,0(5) + + ld 12,0(4) + mulld 20,12,11 + mulhdu 10,12,11 + + ld 12,8(4) + mulld 14,12,11 + addc 21,14,10 + mulhdu 10,12,11 + addze 10,10 + + ld 12,16(4) + mulld 14,12,11 + addc 22,14,10 + mulhdu 10,12,11 + addze 10,10 + + ld 12,24(4) + mulld 14,12,11 + addc 23,14,10 + mulhdu 10,12,11 + addze 10,10 + + ld 12,32(4) + mulld 14,12,11 + addc 24,14,10 + mulhdu 10,12,11 + addze 10,10 + + ld 12,40(4) + mulld 14,12,11 + addc 25,14,10 + mulhdu 10,12,11 + + addze 26,10 + li 27,0 + + li 9,0 + mtctr 8 + b Lenter_6 + +.align 4 +Louter_6: + ldx 11,5,9 + + ld 12,0(4) + mulld 14,12,11 + addc 20,20,14 + mulhdu 10,12,11 + addze 10,10 + + ld 12,8(4) + mulld 14,12,11 + addc 14,14,10 + mulhdu 10,12,11 + addze 10,10 + addc 21,21,14 + addze 10,10 + + ld 12,16(4) + mulld 14,12,11 + addc 14,14,10 + mulhdu 10,12,11 + addze 10,10 + addc 22,22,14 + addze 10,10 + + ld 12,24(4) + mulld 14,12,11 + addc 14,14,10 + mulhdu 10,12,11 + addze 10,10 + addc 23,23,14 + addze 10,10 + + ld 12,32(4) + mulld 14,12,11 + addc 14,14,10 + mulhdu 10,12,11 + addze 10,10 + addc 24,24,14 + addze 10,10 + + ld 12,40(4) + mulld 14,12,11 + addc 14,14,10 + mulhdu 10,12,11 + addze 10,10 + addc 25,25,14 + addze 10,10 + + addc 26,26,10 + addze 27,0 +.align 4 +Lenter_6: + mulld 11,20,7 + + ld 12,0(6) + mulld 14,11,12 + addc 14,20,14 + mulhdu 10,11,12 + addze 10,10 + + ld 12,8(6) + mulld 14,12,11 + addc 14,14,10 + mulhdu 10,12,11 + addze 10,10 + addc 20,21,14 + addze 10,10 + + ld 12,16(6) + mulld 14,12,11 + addc 14,14,10 + mulhdu 10,12,11 + addze 10,10 + addc 21,22,14 + addze 10,10 + + ld 12,24(6) + mulld 14,12,11 + addc 14,14,10 + mulhdu 10,12,11 + addze 10,10 + addc 22,23,14 + addze 10,10 + + ld 12,32(6) + mulld 14,12,11 + addc 14,14,10 + mulhdu 10,12,11 + addze 10,10 + addc 23,24,14 + addze 10,10 + + ld 12,40(6) + mulld 14,12,11 + addc 14,14,10 + mulhdu 10,12,11 + addze 10,10 + addc 24,25,14 + addze 10,10 + + addc 25,26,10 + addze 26,27 + + addi 9,9,8 + bc 16,0,Louter_6 + + and. 26,26,26 + bne Lsub_6 + + cmpld 25,12 + blt Lcopy_6 + +Lsub_6: + ld 11,0(6) + subfc 14,11,20 + std 14,0(3) + + ld 11,8(6) + subfe 14,11,21 + std 14,8(3) + + ld 11,16(6) + subfe 14,11,22 + std 14,16(3) + + ld 11,24(6) + subfe 14,11,23 + std 14,24(3) + + ld 11,32(6) + subfe 14,11,24 + std 14,32(3) + + subfe 14,12,25 + std 14,40(3) + + addme. 26,26 + beq Lend_6 + +Lcopy_6: + std 20,0(3) + std 21,8(3) + std 22,16(3) + std 23,24(3) + std 24,32(3) + std 25,40(3) + +Lend_6: + ld 14,-8(1) + ld 20,-16(1) + ld 21,-24(1) + ld 22,-32(1) + ld 23,-40(1) + ld 24,-48(1) + ld 25,-56(1) + ld 26,-64(1) + ld 27,-72(1) + + li 3,1 + blr + + +.globl .bn_mul_mont_300_fixed_n6 +.align 5 +.bn_mul_mont_300_fixed_n6: + + std 14,-8(1) + std 20,-16(1) + std 21,-24(1) + std 22,-32(1) + std 23,-40(1) + std 24,-48(1) + std 25,-56(1) + std 26,-64(1) + std 27,-72(1) + + li 0,0 + ld 7,0(7) + + ld 11,0(5) + + ld 12,0(4) + mulld 20,12,11 + mulhdu 10,12,11 + + ld 12,8(4) + .long 0x12AC5AB3 + .long 0x114C5AB1 + + ld 12,16(4) + .long 0x12CC5AB3 + .long 0x114C5AB1 + + ld 12,24(4) + .long 0x12EC5AB3 + .long 0x114C5AB1 + + ld 12,32(4) + .long 0x130C5AB3 + .long 0x114C5AB1 + + ld 12,40(4) + .long 0x132C5AB3 + .long 0x134C5AB1 + + li 27,0 + + li 9,0 + mtctr 8 + b Lenter_300_6 + +.align 4 +Louter_300_6: + ldx 11,5,9 + + ld 12,0(4) + .long 0x11CC5D33 + .long 0x114C5D31 + mr 20,14 + + ld 12,8(4) + .long 0x11CC5AB3 + .long 0x114C5AB1 + addc 21,21,14 + addze 10,10 + + ld 12,16(4) + .long 0x11CC5AB3 + .long 0x114C5AB1 + addc 22,22,14 + addze 10,10 + + ld 12,24(4) + .long 0x11CC5AB3 + .long 0x114C5AB1 + addc 23,23,14 + addze 10,10 + + ld 12,32(4) + .long 0x11CC5AB3 + .long 0x114C5AB1 + addc 24,24,14 + addze 10,10 + + ld 12,40(4) + .long 0x11CC5AB3 + .long 0x114C5AB1 + addc 25,25,14 + addze 10,10 + + addc 26,26,10 + addze 27,0 +.align 4 +Lenter_300_6: + mulld 11,20,7 + + ld 12,0(6) + .long 0x11CB6533 + .long 0x114B6531 + + ld 12,8(6) + .long 0x11CC5AB3 + .long 0x114C5AB1 + addc 20,21,14 + addze 10,10 + + ld 12,16(6) + .long 0x11CC5AB3 + .long 0x114C5AB1 + addc 21,22,14 + addze 10,10 + + ld 12,24(6) + .long 0x11CC5AB3 + .long 0x114C5AB1 + addc 22,23,14 + addze 10,10 + + ld 12,32(6) + .long 0x11CC5AB3 + .long 0x114C5AB1 + addc 23,24,14 + addze 10,10 + + ld 12,40(6) + .long 0x11CC5AB3 + .long 0x114C5AB1 + addc 24,25,14 + addze 10,10 + + addc 25,26,10 + addze 26,27 + + addi 9,9,8 + bc 16,0,Louter_300_6 + + and. 26,26,26 + bne Lsub_300_6 + + cmpld 25,12 + blt Lcopy_300_6 + +Lsub_300_6: + ld 11,0(6) + subfc 14,11,20 + std 14,0(3) + + ld 11,8(6) + subfe 14,11,21 + std 14,8(3) + + ld 11,16(6) + subfe 14,11,22 + std 14,16(3) + + ld 11,24(6) + subfe 14,11,23 + std 14,24(3) + + ld 11,32(6) + subfe 14,11,24 + std 14,32(3) + + subfe 14,12,25 + std 14,40(3) + + addme. 26,26 + beq Lend_300_6 + +Lcopy_300_6: + std 20,0(3) + std 21,8(3) + std 22,16(3) + std 23,24(3) + std 24,32(3) + std 25,40(3) + +Lend_300_6: + ld 14,-8(1) + ld 20,-16(1) + ld 21,-24(1) + ld 22,-32(1) + ld 23,-40(1) + ld 24,-48(1) + ld 25,-56(1) + ld 26,-64(1) + ld 27,-72(1) + + li 3,1 + blr + +.byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,80,80,67,32,98,121,32,60,97,109,105,116,97,121,64,111,122,108,97,98,115,46,111,114,103,62,44,60,97,108,97,115,116,97,105,114,64,100,45,115,105,108,118,97,46,111,114,103,62,0 +.align 2 diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/buildinf.h b/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/buildinf.h index a4b827fcfdb29d..c90a8d543fce30 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: aix64-gcc-as" -#define DATE "built on: Sun Jul 20 00:45:04 2025 UTC" +#define DATE "built on: Tue Aug 5 17:09:24 2025 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/params_idx.c b/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/params_idx.c new file mode 100644 index 00000000000000..9d76ffededc24c --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/params_idx.c @@ -0,0 +1,3366 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from crypto/params_idx.c.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#include "internal/e_os.h" +#include "internal/param_names.h" +#include + +/* Machine generated TRIE -- generated by util/perl/OpenSSL/paramnames.pm */ +int ossl_param_find_pidx(const char *s) +{ + switch(s[0]) { + default: + break; + case 'a': + switch(s[1]) { + default: + break; + case 'c': + if (strcmp("vp-info", s + 2) == 0) + return PIDX_KDF_PARAM_X942_ACVPINFO; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'd': + if (strcmp("itional-random", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_ADD_RANDOM; + break; + case '\0': + return PIDX_KDF_PARAM_ARGON2_AD; + } + break; + case 'e': + if (strcmp("ad", s + 2) == 0) + return PIDX_CIPHER_PARAM_AEAD; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("id_param", s + 4) == 0) + return PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD; + break; + case 'i': + if (strcmp("d-absent", s + 4) == 0) + return PIDX_DIGEST_PARAM_ALGID_ABSENT; + break; + case 'o': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'h': + switch(s[8]) { + default: + break; + case 'm': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '-': + if (strcmp("params", s + 13) == 0) + return PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS; + break; + case '\0': + return PIDX_ALG_PARAM_ALGORITHM_ID; + } + } + } + } + } + } + } + } + } + } + break; + case 'i': + if (strcmp("as", s + 3) == 0) + return PIDX_STORE_PARAM_ALIAS; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_A; + } + break; + case 'b': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("sis-type", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_CHAR2_TYPE; + break; + case 'i': + if (strcmp("ts", s + 2) == 0) + return PIDX_PKEY_PARAM_BITS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("size", s + 6) == 0) + return PIDX_MAC_PARAM_BLOCK_SIZE; + break; + case '_': + if (strcmp("padding", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING; + break; + case 's': + if (strcmp("ize", s + 6) == 0) + return PIDX_DIGEST_PARAM_BLOCK_SIZE; + } + } + } + } + break; + case 'u': + if (strcmp("ildinfo", s + 2) == 0) + return PIDX_PROV_PARAM_BUILDINFO; + break; + case '\0': + return PIDX_PKEY_PARAM_EC_B; + } + break; + case 'c': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_C_ROUNDS; + break; + case 'e': + if (strcmp("kalg", s + 2) == 0) + return PIDX_KDF_PARAM_CEK_ALG; + break; + case 'i': + if (strcmp("pher", s + 2) == 0) + return PIDX_ALG_PARAM_CIPHER; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("actor", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_COFACTOR; + break; + case 'n': + switch(s[3]) { + default: + break; + case 's': + if (strcmp("tant", s + 4) == 0) + return PIDX_KDF_PARAM_CONSTANT; + break; + case 't': + if (strcmp("ext-string", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_CONTEXT_STRING; + } + } + break; + case 't': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("mode", s + 4) == 0) + return PIDX_CIPHER_PARAM_CTS_MODE; + break; + case '\0': + return PIDX_CIPHER_PARAM_CTS; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '-': + if (strcmp("iv", s + 7) == 0) + return PIDX_CIPHER_PARAM_CUSTOM_IV; + break; + case '\0': + return PIDX_MAC_PARAM_CUSTOM; + } + } + } + } + } + } + break; + case 'd': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_D_ROUNDS; + break; + case 'a': + switch(s[2]) { + default: + break; + case 't': + switch(s[3]) { + default: + break; + case 'a': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 's': + if (strcmp("tructure", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_STRUCTURE; + break; + case 't': + if (strcmp("ype", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_TYPE; + } + break; + case '\0': + return PIDX_OBJECT_PARAM_DATA; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + if (strcmp("ded-from-explicit", s + 4) == 0) + return PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS; + break; + case 'r': + if (strcmp("ypt-only", s + 4) == 0) + return PIDX_CIPHER_PARAM_DECRYPT_ONLY; + } + break; + case 'f': + if (strcmp("ault-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_DEFAULT_DIGEST; + break; + case 's': + if (strcmp("c", s + 3) == 0) + return PIDX_OBJECT_PARAM_DESC; + break; + case 't': + if (strcmp("erministic", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_DETERMINISTIC; + } + break; + case 'h': + if (strcmp("kem-ikm", s + 2) == 0) + return PIDX_PKEY_PARAM_DHKEM_IKM; + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("heck", s + 8) == 0) + return PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK; + break; + case 'n': + if (strcmp("oinit", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_NOINIT; + break; + case 'o': + if (strcmp("neshot", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_ONESHOT; + break; + case 'p': + if (strcmp("rops", s + 8) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS; + break; + case 's': + if (strcmp("ize", s + 8) == 0) + return PIDX_PKEY_PARAM_DIGEST_SIZE; + } + break; + case '\0': + return PIDX_STORE_PARAM_DIGEST; + } + } + } + } + break; + case 's': + if (strcmp("tid", s + 3) == 0) + return PIDX_PKEY_PARAM_DIST_ID; + } + break; + case 'r': + if (strcmp("bg-no-trunc-md", s + 2) == 0) + return PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST; + break; + case 's': + if (strcmp("a-sign-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_DSA_SIGN_DISABLED; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_D; + } + break; + case 'e': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("rly_clean", s + 2) == 0) + return PIDX_KDF_PARAM_EARLY_CLEAN; + break; + case 'c': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'h': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'a': + switch(s[9]) { + default: + break; + case 'c': + switch(s[10]) { + default: + break; + case 't': + switch(s[11]) { + default: + break; + case 'o': + switch(s[12]) { + default: + break; + case 'r': + switch(s[13]) { + default: + break; + case '-': + switch(s[14]) { + default: + break; + case 'c': + if (strcmp("heck", s + 15) == 0) + return PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK; + break; + case 'm': + if (strcmp("ode", s + 15) == 0) + return PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE; + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'm': + if (strcmp("s_check", s + 2) == 0) + return PIDX_KDF_PARAM_FIPS_EMS_CHECK; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("d-pub-key", s + 6) == 0) + return PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY; + break; + case 'i': + if (strcmp("ng", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_ENCODING; + } + } + break; + case 'r': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'c': + if (strcmp("heck", s + 9) == 0) + return PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK; + break; + case 'l': + if (strcmp("evel", s + 9) == 0) + return PIDX_ENCODER_PARAM_ENCRYPT_LEVEL; + } + } + } + } + } + } + break; + case 'g': + if (strcmp("ine", s + 3) == 0) + return PIDX_ALG_PARAM_ENGINE; + break; + case 't': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'y': + switch(s[7]) { + default: + break; + case '_': + if (strcmp("required", s + 8) == 0) + return PIDX_DRBG_PARAM_ENTROPY_REQUIRED; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_ENTROPY; + } + } + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_E; + break; + case 'x': + if (strcmp("pect", s + 2) == 0) + return PIDX_STORE_PARAM_EXPECT; + } + break; + case 'f': + switch(s[1]) { + default: + break; + case 'i': + switch(s[2]) { + default: + break; + case 'e': + if (strcmp("ld-type", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_FIELD_TYPE; + break; + case 'n': + if (strcmp("gerprint", s + 3) == 0) + return PIDX_STORE_PARAM_FINGERPRINT; + break; + case 'p': + if (strcmp("s-indicator", s + 3) == 0) + return PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR; + } + } + break; + case 'g': + switch(s[1]) { + default: + break; + case 'e': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_GENERATE; + } + break; + case 'o': + if (strcmp("r", s + 8) == 0) + return PIDX_PKEY_PARAM_EC_GENERATOR; + } + } + } + } + } + } + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_GINDEX; + break; + case 'r': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'u': + switch(s[4]) { + default: + break; + case 'p': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("check", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE; + break; + case '\0': + return PIDX_PKEY_PARAM_GROUP_NAME; + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_G; + } + break; + case 'h': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("s-randkey", s + 2) == 0) + return PIDX_CIPHER_PARAM_HAS_RAND_KEY; + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_H; + break; + case 'k': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'f': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_KEY_CHECK; + } + } + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_HMAC_KEY_CHECK; + break; + case 's': + if (strcmp("_padding", s + 2) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING; + } + break; + case 'i': + switch(s[1]) { + default: + break; + case 'd': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_PKCS12_ID; + } + break; + case 'k': + if (strcmp("me", s + 2) == 0) + return PIDX_KEM_PARAM_IKME; + break; + case 'm': + if (strcmp("plicit-rejection", s + 2) == 0) + return PIDX_PKEY_PARAM_IMPLICIT_REJECTION; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("lude-public", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC; + break; + case 'f': + if (strcmp("o", s + 3) == 0) + return PIDX_PASSPHRASE_PARAM_INFO; + break; + case 'p': + if (strcmp("ut-type", s + 3) == 0) + return PIDX_STORE_PARAM_INPUT_TYPE; + break; + case 's': + if (strcmp("tance", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_INSTANCE; + } + break; + case 't': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("tion", s + 5) == 0) + return PIDX_GEN_PARAM_ITERATION; + break; + case '\0': + return PIDX_KDF_PARAM_ITER; + } + } + } + break; + case 'v': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("generated", s + 3) == 0) + return PIDX_CIPHER_PARAM_AEAD_IV_GENERATED; + break; + case 'l': + if (strcmp("en", s + 3) == 0) + return PIDX_CIPHER_PARAM_IVLEN; + break; + case '\0': + return PIDX_MAC_PARAM_IV; + } + } + break; + case 'j': + switch(s[1]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_COFACTOR; + } + break; + case 'k': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K2; + } + break; + case '3': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K3; + } + break; + case 'a': + if (strcmp("t", s + 2) == 0) + return PIDX_SIGNATURE_PARAM_KAT; + break; + case 'b': + if (strcmp("kdf-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KBKDF_KEY_CHECK; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case 's': + switch(s[9]) { + default: + break; + case 't': + switch(s[10]) { + default: + break; + case '-': + if (strcmp("props", s + 11) == 0) + return PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_KDF_DIGEST; + } + } + } + } + } + } + break; + case 'o': + if (strcmp("utlen", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_OUTLEN; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_TYPE; + break; + case 'u': + if (strcmp("km", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_UKM; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'y': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("heck", s + 5) == 0) + return PIDX_PKEY_PARAM_FIPS_KEY_CHECK; + break; + case 'l': + if (strcmp("ength", s + 5) == 0) + return PIDX_SKEY_PARAM_KEY_LENGTH; + } + break; + case 'b': + if (strcmp("its", s + 4) == 0) + return PIDX_CIPHER_PARAM_RC2_KEYBITS; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_KEYLEN; + break; + case '\0': + return PIDX_MAC_PARAM_KEY; + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KMAC_KEY_CHECK; + } + break; + case 'l': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("el", s + 3) == 0) + return PIDX_KDF_PARAM_LABEL; + break; + case 'n': + if (strcmp("es", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_LANES; + } + } + break; + case 'm': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'k': + if (strcmp("ey", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_MAC_KEY; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_KDF_PARAM_MAC_SIZE; + break; + case '\0': + return PIDX_ALG_PARAM_MAC; + } + break; + case 'n': + if (strcmp("datory-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_MANDATORY_DIGEST; + break; + case 'x': + switch(s[3]) { + default: + break; + case '-': + if (strcmp("size", s + 4) == 0) + return PIDX_PKEY_PARAM_MAX_SIZE; + break; + case '_': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("dinlen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_ADINLEN; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("rly_data", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA; + break; + case 'n': + if (strcmp("tropylen", s + 6) == 0) + return PIDX_DRBG_PARAM_MAX_ENTROPYLEN; + } + break; + case 'f': + if (strcmp("rag_len", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_NONCELEN; + break; + case 'p': + if (strcmp("erslen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_PERSLEN; + break; + case 'r': + if (strcmp("equest", s + 5) == 0) + return PIDX_RAND_PARAM_MAX_REQUEST; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MAX_LENGTH; + break; + case 'm': + if (strcmp("em_bytes", s + 4) == 0) + return PIDX_KDF_PARAM_SCRYPT_MAXMEM; + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'm': + if (strcmp("cost", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_MEMCOST; + break; + case 's': + if (strcmp("sage-encoding", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING; + } + break; + case 'g': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_DIGEST; + break; + case 'p': + if (strcmp("roperties", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_PROPERTIES; + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_MASKGENFUNC; + } + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("alg", s + 3) == 0) + return PIDX_DIGEST_PARAM_MICALG; + break; + case 'n': + switch(s[3]) { + default: + break; + case '_': + switch(s[4]) { + default: + break; + case 'e': + if (strcmp("ntropylen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_ENTROPYLEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_NONCELEN; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MIN_LENGTH; + } + } + break; + case 'l': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + if (strcmp("nput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS; + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED; + } + } + } + } + break; + case 'k': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + switch(s[8]) { + default: + break; + case 'm': + if (strcmp("port_pct_type", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE; + break; + case 'n': + if (strcmp("put_formats", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS; + } + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED; + } + } + } + } + } + } + break; + case 'o': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case '\0': + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE; + } + break; + case 'u': + if (strcmp("le-filename", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_MODULE_FILENAME; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_SIGNATURE_PARAM_MU; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_M; + } + break; + case 'n': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("me", s + 2) == 0) + return PIDX_STORE_PARAM_ISSUER; + break; + case 'o': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("short-mac", s + 3) == 0) + return PIDX_PROV_PARAM_NO_SHORT_MAC; + break; + case 'n': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("type", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_NONCE_TYPE; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_NONCE; + } + } + } + } + break; + case 'u': + if (strcmp("m", s + 2) == 0) + return PIDX_CIPHER_PARAM_NUM; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_N; + } + break; + case 'o': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("ep-label", s + 2) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL; + break; + case 'p': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'n': + if (strcmp("ssl-version", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_VERSION; + break; + case 'r': + if (strcmp("ation", s + 4) == 0) + return PIDX_KEM_PARAM_OPERATION; + } + break; + case 't': + if (strcmp("ions", s + 3) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS; + } + break; + case 'r': + if (strcmp("der", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_ORDER; + } + break; + case 'p': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P2; + } + break; + case 'a': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'm': + if (strcmp("ode", s + 5) == 0) + return PIDX_PKEY_PARAM_PAD_MODE; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_DIGEST_PARAM_PAD_TYPE; + } + break; + case 'd': + if (strcmp("ing", s + 4) == 0) + return PIDX_CIPHER_PARAM_PADDING; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_PAD; + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'u': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYUINFO; + break; + case 'v': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYVINFO; + } + } + } + break; + case 's': + if (strcmp("s", s + 3) == 0) + return PIDX_KDF_PARAM_PASSWORD; + } + break; + case 'b': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("ts", s + 3) == 0) + return PIDX_PKEY_PARAM_FFC_PBITS; + break; + case 'k': + if (strcmp("df2-lower-bound-check", s + 3) == 0) + return PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK; + } + break; + case 'c': + if (strcmp("ounter", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_PCOUNTER; + break; + case 'i': + if (strcmp("peline-tag", s + 2) == 0) + return PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG; + break; + case 'k': + if (strcmp("cs5", s + 2) == 0) + return PIDX_KDF_PARAM_PKCS5; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("nt-format", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT; + break; + case 't': + if (strcmp("ential", s + 3) == 0) + return PIDX_GEN_PARAM_POTENTIAL; + } + break; + case 'r': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("iction_resistance", s + 4) == 0) + return PIDX_DRBG_PARAM_PREDICTION_RESISTANCE; + break; + case 'f': + if (strcmp("ix", s + 4) == 0) + return PIDX_KDF_PARAM_PREFIX; + } + break; + case 'i': + switch(s[3]) { + default: + break; + case 'm': + if (strcmp("es", s + 4) == 0) + return PIDX_PKEY_PARAM_RSA_PRIMES; + break; + case 'v': + switch(s[4]) { + default: + break; + case '_': + if (strcmp("len", s + 5) == 0) + return PIDX_PKEY_PARAM_DH_PRIV_LEN; + break; + case '\0': + return PIDX_PKEY_PARAM_PRIV_KEY; + } + } + break; + case 'o': + switch(s[3]) { + default: + break; + case 'p': + if (strcmp("erties", s + 4) == 0) + return PIDX_STORE_PARAM_PROPERTIES; + break; + case 'v': + if (strcmp("ider-name", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_PROV_NAME; + } + } + break; + case 'u': + if (strcmp("b", s + 2) == 0) + return PIDX_PKEY_PARAM_PUB_KEY; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_P; + } + break; + case 'q': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q2; + } + break; + case 'b': + if (strcmp("its", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_QBITS; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_Q; + break; + case 'x': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_X; + } + break; + case 'y': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_Y; + } + } + break; + case 'r': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'k': + if (strcmp("ey", s + 5) == 0) + return PIDX_CIPHER_PARAM_RANDOM_KEY; + break; + case 'o': + if (strcmp("m_data", s + 5) == 0) + return PIDX_DRBG_PARAM_RANDOM_DATA; + } + } + break; + case 'w': + if (strcmp("-bytes", s + 3) == 0) + return PIDX_SKEY_PARAM_RAW_BYTES; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case '_': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("head", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD; + break; + case 'b': + if (strcmp("uffer_len", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN; + } + } + } + break; + case 'f': + if (strcmp("erence", s + 3) == 0) + return PIDX_OBJECT_PARAM_REFERENCE; + break; + case 's': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case '_': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("ounter", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_COUNTER; + break; + case 'r': + if (strcmp("equests", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_REQUESTS; + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case 'm': + switch(s[10]) { + default: + break; + case 'e': + switch(s[11]) { + default: + break; + case '_': + if (strcmp("interval", s + 12) == 0) + return PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL; + break; + case '\0': + return PIDX_DRBG_PARAM_RESEED_TIME; + } + } + } + } + } + } + } + } + } + } + break; + case 'o': + if (strcmp("unds", s + 2) == 0) + return PIDX_CIPHER_PARAM_ROUNDS; + break; + case 's': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + switch(s[5]) { + default: + break; + case 'o': + switch(s[6]) { + default: + break; + case 'e': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case 'i': + switch(s[10]) { + default: + break; + case 'c': + switch(s[11]) { + default: + break; + case 'i': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'n': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case '1': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT1; + } + break; + case '2': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT2; + } + break; + case '3': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT3; + } + break; + case '4': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT4; + } + break; + case '5': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT5; + } + break; + case '6': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT6; + } + break; + case '7': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT7; + } + break; + case '8': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT8; + } + break; + case '9': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'd': + if (strcmp("erive-from-pq", s + 5) == 0) + return PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'x': + switch(s[6]) { + default: + break; + case 'p': + switch(s[7]) { + default: + break; + case 'o': + switch(s[8]) { + default: + break; + case 'n': + switch(s[9]) { + default: + break; + case 'e': + switch(s[10]) { + default: + break; + case 'n': + switch(s[11]) { + default: + break; + case 't': + switch(s[12]) { + default: + break; + case '1': + switch(s[13]) { + default: + break; + case '0': + switch(s[14]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT1; + } + break; + case '2': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT2; + } + break; + case '3': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT3; + } + break; + case '4': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT4; + } + break; + case '5': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT5; + } + break; + case '6': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT6; + } + break; + case '7': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT7; + } + break; + case '8': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT8; + } + break; + case '9': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT; + } + } + } + } + } + } + } + } + break; + case 'f': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'o': + switch(s[9]) { + default: + break; + case 'r': + switch(s[10]) { + default: + break; + case '1': + switch(s[11]) { + default: + break; + case '0': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR1; + } + break; + case '2': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR2; + } + break; + case '3': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR3; + } + break; + case '4': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR4; + } + break; + case '5': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR5; + } + break; + case '6': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR6; + } + break; + case '7': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR7; + } + break; + case '8': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR8; + } + break; + case '9': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR; + } + } + } + } + } + } + break; + case 'p': + switch(s[5]) { + default: + break; + case 'k': + if (strcmp("cs15-pad-disabled", s + 6) == 0) + return PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED; + break; + case 's': + if (strcmp("s-saltlen-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK; + } + break; + case 's': + if (strcmp("ign-x931-pad-disabled", s + 5) == 0) + return PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED; + } + } + } + break; + case '\0': + return PIDX_KDF_PARAM_SCRYPT_R; + } + break; + case 's': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("eprime-generator", s + 3) == 0) + return PIDX_PKEY_PARAM_DH_GENERATOR; + break; + case 'l': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'l': + if (strcmp("en", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_PSS_SALTLEN; + break; + case '\0': + return PIDX_MAC_PARAM_SALT; + } + } + break; + case 'v': + if (strcmp("e-parameters", s + 3) == 0) + return PIDX_ENCODER_PARAM_SAVE_PARAMETERS; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'r': + if (strcmp("et", s + 4) == 0) + return PIDX_KDF_PARAM_SECRET; + break; + case 'u': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'y': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'b': + if (strcmp("its", s + 10) == 0) + return PIDX_PKEY_PARAM_SECURITY_BITS; + break; + case 'c': + if (strcmp("hecks", s + 10) == 0) + return PIDX_PROV_PARAM_SECURITY_CHECKS; + } + } + } + } + } + } + } + break; + case 'e': + if (strcmp("d", s + 3) == 0) + return PIDX_PKEY_PARAM_SLH_DSA_SEED; + break; + case 'r': + if (strcmp("ial", s + 3) == 0) + return PIDX_STORE_PARAM_SERIAL; + break; + case 's': + if (strcmp("sion_id", s + 3) == 0) + return PIDX_KDF_PARAM_SSHKDF_SESSION_ID; + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'n': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + if (strcmp("heck", s + 6) == 0) + return PIDX_PKEY_PARAM_FIPS_SIGN_CHECK; + break; + case 'x': + if (strcmp("931-pad-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK; + } + break; + case 'a': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case 'u': + switch(s[7]) { + default: + break; + case 'r': + switch(s[8]) { + default: + break; + case 'e': + switch(s[9]) { + default: + break; + case '-': + if (strcmp("digest-check", s + 10) == 0) + return PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK; + break; + case '\0': + return PIDX_SIGNATURE_PARAM_SIGNATURE; + } + } + } + } + } + } + } + break; + case 'z': + if (strcmp("e", s + 3) == 0) + return PIDX_MAC_PARAM_SIZE; + } + break; + case 'p': + if (strcmp("eed", s + 2) == 0) + return PIDX_CIPHER_PARAM_SPEED; + break; + case 's': + switch(s[2]) { + default: + break; + case 'h': + switch(s[3]) { + default: + break; + case 'k': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'f': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_KEY_CHECK; + } + } + } + } + } + break; + case 'k': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'f': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_KEY_CHECK; + } + } + } + } + break; + case 'l': + if (strcmp("3-ms", s + 3) == 0) + return PIDX_DIGEST_PARAM_SSL3_MS; + } + break; + case 't': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("esc", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_DESC; + break; + case 'p': + if (strcmp("hase", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_PHASE; + break; + case 't': + if (strcmp("ype", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_TYPE; + } + break; + case 'a': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_STATE; + } + break; + case 'u': + if (strcmp("s", s + 5) == 0) + return PIDX_PROV_PARAM_STATUS; + } + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("m_mac", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC; + break; + case 'n': + if (strcmp("gth", s + 5) == 0) + return PIDX_RAND_PARAM_STRENGTH; + } + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("ject", s + 3) == 0) + return PIDX_STORE_PARAM_SUBJECT; + break; + case 'p': + switch(s[3]) { + default: + break; + case 'p': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + if (strcmp("ivinfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PRIVINFO; + break; + case 'u': + if (strcmp("binfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PUBINFO; + } + } + } + } + } + } + break; + case 't': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_TAGLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TAG; + } + } + break; + case 'd': + if (strcmp("es-encrypt-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED; + break; + case 'e': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case '-': + if (strcmp("entropy", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_TEST_ENTROPY; + break; + case '_': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("ntropy", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_ENTROPY; + break; + case 'n': + if (strcmp("once", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_NONCE; + } + } + } + } + break; + case 'h': + if (strcmp("reads", s + 2) == 0) + return PIDX_KDF_PARAM_THREADS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("lient-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION; + break; + case 'd': + if (strcmp("ata-size", s + 5) == 0) + return PIDX_MAC_PARAM_TLS_DATA_SIZE; + break; + case 'g': + switch(s[5]) { + default: + break; + case 'r': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'u': + switch(s[8]) { + default: + break; + case 'p': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'a': + if (strcmp("lg", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_ALG; + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_ID; + } + break; + case 's': + if (strcmp("-kem", s + 12) == 0) + return PIDX_CAPABILITY_TLS_GROUP_IS_KEM; + } + break; + case 'n': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'm': + switch(s[13]) { + default: + break; + case 'e': + switch(s[14]) { + default: + break; + case '-': + if (strcmp("internal", s + 15) == 0) + return PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL; + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_NAME; + } + } + } + } + break; + case 's': + if (strcmp("ec-bits", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case '-': + if (strcmp("size", s + 8) == 0) + return PIDX_CIPHER_PARAM_TLS_MAC_SIZE; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS_MAC; + } + break; + case 'x': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS; + } + } + } + break; + case 'i': + switch(s[6]) { + default: + break; + case 'n': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS; + } + } + } + break; + case 'u': + if (strcmp("lti", s + 6) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK; + } + break; + case 'n': + if (strcmp("egotiated-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION; + break; + case 's': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'a': + switch(s[8]) { + default: + break; + case 'l': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '-': + switch(s[11]) { + default: + break; + case 'c': + if (strcmp("ode-point", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT; + break; + case 'h': + switch(s[12]) { + default: + break; + case 'a': + switch(s[13]) { + default: + break; + case 's': + switch(s[14]) { + default: + break; + case 'h': + switch(s[15]) { + default: + break; + case '-': + switch(s[16]) { + default: + break; + case 'n': + if (strcmp("ame", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME; + break; + case 'o': + if (strcmp("id", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_OID; + } + } + } + } + } + break; + case 'i': + if (strcmp("ana-name", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME; + break; + case 'k': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'y': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case 'y': + switch(s[16]) { + default: + break; + case 'p': + switch(s[17]) { + default: + break; + case 'e': + switch(s[18]) { + default: + break; + case '-': + if (strcmp("oid", s + 19) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID; + break; + case '\0': + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE; + } + } + } + } + } + } + } + break; + case 'n': + if (strcmp("ame", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_NAME; + break; + case 'o': + if (strcmp("id", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_OID; + break; + case 's': + switch(s[12]) { + default: + break; + case 'e': + if (strcmp("c-bits", s + 13) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS; + break; + case 'i': + switch(s[13]) { + default: + break; + case 'g': + switch(s[14]) { + default: + break; + case '-': + switch(s[15]) { + default: + break; + case 'n': + if (strcmp("ame", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME; + break; + case 'o': + if (strcmp("id", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_OID; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'v': + if (strcmp("ersion", s + 5) == 0) + return PIDX_CIPHER_PARAM_TLS_VERSION; + } + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK; + break; + case 'e': + if (strcmp("ms-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK; + } + } + } + } + } + break; + case '3': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'k': + switch(s[7]) { + default: + break; + case 'd': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'u': + switch(s[6]) { + default: + break; + case 'l': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case '_': + switch(s[10]) { + default: + break; + case 'a': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'd': + switch(s[13]) { + default: + break; + case 'p': + if (strcmp("acklen", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD; + } + } + } + break; + case 'e': + switch(s[11]) { + default: + break; + case 'n': + switch(s[12]) { + default: + break; + case 'c': + switch(s[13]) { + default: + break; + case 'i': + if (strcmp("n", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN; + break; + case 'l': + if (strcmp("en", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC; + } + } + } + break; + case 'i': + if (strcmp("nterleave", s + 11) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE; + break; + case 'm': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'x': + switch(s[13]) { + default: + break; + case 'b': + if (strcmp("ufsz", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE; + break; + case 's': + if (strcmp("ndfrag", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT; + } + } + } + } + } + } + } + } + } + } + break; + case 'a': + switch(s[4]) { + default: + break; + case 'a': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'p': + if (strcmp("ad", s + 7) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD; + } + } + } + break; + case 'i': + switch(s[4]) { + default: + break; + case 'v': + switch(s[5]) { + default: + break; + case 'f': + if (strcmp("ixed", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED; + break; + case 'g': + if (strcmp("en", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN; + break; + case 'i': + if (strcmp("nv", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV; + } + } + break; + case 't': + if (strcmp("ree", s + 4) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS; + } + break; + case 'y': + if (strcmp("pe", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_TYPE; + } + break; + case 'u': + switch(s[1]) { + default: + break; + case 'k': + if (strcmp("m", s + 2) == 0) + return PIDX_KDF_PARAM_UKM; + break; + case 'p': + if (strcmp("dated-iv", s + 2) == 0) + return PIDX_CIPHER_PARAM_UPDATED_IV; + break; + case 's': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'b': + if (strcmp("its", s + 5) == 0) + return PIDX_CIPHER_PARAM_USE_BITS; + break; + case 'c': + if (strcmp("ofactor-flag", s + 5) == 0) + return PIDX_PKEY_PARAM_USE_COFACTOR_FLAG; + break; + case 'k': + if (strcmp("eybits", s + 5) == 0) + return PIDX_KDF_PARAM_X942_USE_KEYBITS; + break; + case 'l': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_KBKDF_USE_L; + } + break; + case 's': + if (strcmp("eparator", s + 5) == 0) + return PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR; + } + break; + case '_': + switch(s[4]) { + default: + break; + case 'd': + if (strcmp("erivation_function", s + 5) == 0) + return PIDX_DRBG_PARAM_USE_DF; + break; + case 'e': + if (strcmp("tm", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM; + } + } + } + } + break; + case 'v': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'l': + switch(s[3]) { + default: + break; + case 'i': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_VALIDATE_G; + } + break; + case 'l': + if (strcmp("egacy", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY; + break; + case 'p': + if (strcmp("q", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_PQ; + } + } + } + } + } + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'r': + switch(s[3]) { + default: + break; + case 'i': + if (strcmp("fy-message", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE; + break; + case 's': + if (strcmp("ion", s + 4) == 0) + return PIDX_PROV_PARAM_VERSION; + } + } + } + break; + case 'x': + switch(s[1]) { + default: + break; + case '9': + switch(s[2]) { + default: + break; + case '4': + if (strcmp("2kdf-key-check", s + 3) == 0) + return PIDX_PROV_PARAM_X942KDF_KEY_CHECK; + break; + case '6': + switch(s[3]) { + default: + break; + case '3': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'f': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_KEY_CHECK; + } + } + } + } + } + } + } + break; + case 'c': + if (strcmp("ghash", s + 2) == 0) + return PIDX_KDF_PARAM_SSHKDF_XCGHASH; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_DIGEST_PARAM_XOFLEN; + break; + case '\0': + return PIDX_MAC_PARAM_XOF; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP; + } + break; + case 'q': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ; + } + break; + case 't': + if (strcmp("s_standard", s + 2) == 0) + return PIDX_CIPHER_PARAM_XTS_STANDARD; + } + } + return -1; +} + +/* End of TRIE */ diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/ppccpuid.s b/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/ppccpuid.s index 63f902770d32de..a75defcc768384 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/ppccpuid.s +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/ppccpuid.s @@ -48,6 +48,17 @@ .long 0 .byte 0,12,0x14,0,0,0,0,0 +.globl .OPENSSL_brd31_probe +.align 4 +.OPENSSL_brd31_probe: + xor 0,0,0 + .long 0x7C030176 + blr +.long 0 +.byte 0,12,0x14,0,0,0,0,0 + + + .globl .OPENSSL_wipe_cpu .align 4 .OPENSSL_wipe_cpu: diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/sha/keccak1600-ppc64.s b/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/sha/keccak1600-ppc64.s index 28c8e62f664cce..625f8d2ff102dd 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/sha/keccak1600-ppc64.s +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/sha/keccak1600-ppc64.s @@ -293,7 +293,6 @@ KeccakF1600: .long 0 - .align 5 dword_le_load: lbz 0,1(3) @@ -316,7 +315,6 @@ dword_le_load: .byte 0,12,0x14,0,0,0,1,0 .long 0 - .globl .SHA3_absorb .align 5 @@ -557,6 +555,8 @@ Labsorbed: subi 29,4,1 mr 30,5 mr 31,6 + cmplwi 7,0 + bne Lnext_block b Loop_squeeze .align 4 @@ -587,6 +587,7 @@ Loop_squeeze: subic. 6,6,8 bgt Loop_squeeze +Lnext_block: mr 3,28 bl KeccakF1600 subi 3,28,8 diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/internal/param_names.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/internal/param_names.h new file mode 100644 index 00000000000000..0a0404a57e82b9 --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/internal/param_names.h @@ -0,0 +1,469 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/internal/param_names.h.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +int ossl_param_find_pidx(const char *s); + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +#define NUM_PIDX 346 + +#define PIDX_ALG_PARAM_ALGORITHM_ID 0 +#define PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS 1 +#define PIDX_ALG_PARAM_CIPHER 2 +#define PIDX_ALG_PARAM_DIGEST 3 +#define PIDX_ALG_PARAM_ENGINE 4 +#define PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR 5 +#define PIDX_ALG_PARAM_MAC 6 +#define PIDX_ALG_PARAM_PROPERTIES 7 +#define PIDX_ASYM_CIPHER_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_ENGINE PIDX_PKEY_PARAM_ENGINE +#define PIDX_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +#define PIDX_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS 9 +#define PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL 10 +#define PIDX_ASYM_CIPHER_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_ASYM_CIPHER_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION 11 +#define PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION 12 +#define PIDX_CAPABILITY_TLS_GROUP_ALG 13 +#define PIDX_CAPABILITY_TLS_GROUP_ID 14 +#define PIDX_CAPABILITY_TLS_GROUP_IS_KEM 15 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_GROUP_NAME 20 +#define PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL 21 +#define PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS 22 +#define PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT 23 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME 24 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_OID 25 +#define PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME 26 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE 27 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID 28 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_SIGALG_NAME 29 +#define PIDX_CAPABILITY_TLS_SIGALG_OID 30 +#define PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS 31 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME 32 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_OID 33 +#define PIDX_CIPHER_PARAM_AEAD 34 +#define PIDX_CIPHER_PARAM_AEAD_IVLEN PIDX_CIPHER_PARAM_IVLEN +#define PIDX_CIPHER_PARAM_AEAD_IV_GENERATED 35 +#define PIDX_CIPHER_PARAM_AEAD_MAC_KEY 36 +#define PIDX_CIPHER_PARAM_AEAD_TAG 37 +#define PIDX_CIPHER_PARAM_AEAD_TAGLEN 38 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD 39 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD 40 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN 41 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED 42 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV 43 +#define PIDX_CIPHER_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD 44 +#define PIDX_CIPHER_PARAM_BLOCK_SIZE 45 +#define PIDX_CIPHER_PARAM_CTS 46 +#define PIDX_CIPHER_PARAM_CTS_MODE 47 +#define PIDX_CIPHER_PARAM_CUSTOM_IV 48 +#define PIDX_CIPHER_PARAM_DECRYPT_ONLY 49 +#define PIDX_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK 50 +#define PIDX_CIPHER_PARAM_HAS_RAND_KEY 51 +#define PIDX_CIPHER_PARAM_IV 52 +#define PIDX_CIPHER_PARAM_IVLEN 53 +#define PIDX_CIPHER_PARAM_KEYLEN 54 +#define PIDX_CIPHER_PARAM_MODE 55 +#define PIDX_CIPHER_PARAM_NUM 56 +#define PIDX_CIPHER_PARAM_PADDING 57 +#define PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG 58 +#define PIDX_CIPHER_PARAM_RANDOM_KEY 59 +#define PIDX_CIPHER_PARAM_RC2_KEYBITS 60 +#define PIDX_CIPHER_PARAM_ROUNDS 61 +#define PIDX_CIPHER_PARAM_SPEED 62 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK 63 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD 64 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN 65 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC 66 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN 67 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN 68 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE 69 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE 70 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT 71 +#define PIDX_CIPHER_PARAM_TLS_MAC 72 +#define PIDX_CIPHER_PARAM_TLS_MAC_SIZE 73 +#define PIDX_CIPHER_PARAM_TLS_VERSION 74 +#define PIDX_CIPHER_PARAM_UPDATED_IV 75 +#define PIDX_CIPHER_PARAM_USE_BITS 76 +#define PIDX_CIPHER_PARAM_XTS_STANDARD 77 +#define PIDX_DECODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DIGEST_PARAM_ALGID_ABSENT 78 +#define PIDX_DIGEST_PARAM_BLOCK_SIZE 45 +#define PIDX_DIGEST_PARAM_MICALG 79 +#define PIDX_DIGEST_PARAM_PAD_TYPE 80 +#define PIDX_DIGEST_PARAM_SIZE 81 +#define PIDX_DIGEST_PARAM_SSL3_MS 82 +#define PIDX_DIGEST_PARAM_XOF 83 +#define PIDX_DIGEST_PARAM_XOFLEN 84 +#define PIDX_DRBG_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_DRBG_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_DRBG_PARAM_ENTROPY_REQUIRED 85 +#define PIDX_DRBG_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_DRBG_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_DRBG_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_DRBG_PARAM_MAX_ADINLEN 86 +#define PIDX_DRBG_PARAM_MAX_ENTROPYLEN 87 +#define PIDX_DRBG_PARAM_MAX_LENGTH 88 +#define PIDX_DRBG_PARAM_MAX_NONCELEN 89 +#define PIDX_DRBG_PARAM_MAX_PERSLEN 90 +#define PIDX_DRBG_PARAM_MIN_ENTROPYLEN 91 +#define PIDX_DRBG_PARAM_MIN_LENGTH 92 +#define PIDX_DRBG_PARAM_MIN_NONCELEN 93 +#define PIDX_DRBG_PARAM_PREDICTION_RESISTANCE 94 +#define PIDX_DRBG_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DRBG_PARAM_RANDOM_DATA 95 +#define PIDX_DRBG_PARAM_RESEED_COUNTER 96 +#define PIDX_DRBG_PARAM_RESEED_REQUESTS 97 +#define PIDX_DRBG_PARAM_RESEED_TIME 98 +#define PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL 99 +#define PIDX_DRBG_PARAM_SIZE 81 +#define PIDX_DRBG_PARAM_USE_DF 100 +#define PIDX_ENCODER_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_ENCODER_PARAM_ENCRYPT_LEVEL 101 +#define PIDX_ENCODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_ENCODER_PARAM_SAVE_PARAMETERS 102 +#define PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE 103 +#define PIDX_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_EXCHANGE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST 104 +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS 105 +#define PIDX_EXCHANGE_PARAM_KDF_OUTLEN 106 +#define PIDX_EXCHANGE_PARAM_KDF_TYPE 107 +#define PIDX_EXCHANGE_PARAM_KDF_UKM 108 +#define PIDX_EXCHANGE_PARAM_PAD 109 +#define PIDX_GEN_PARAM_ITERATION 110 +#define PIDX_GEN_PARAM_POTENTIAL 111 +#define PIDX_KDF_PARAM_ARGON2_AD 112 +#define PIDX_KDF_PARAM_ARGON2_LANES 113 +#define PIDX_KDF_PARAM_ARGON2_MEMCOST 114 +#define PIDX_KDF_PARAM_ARGON2_VERSION 115 +#define PIDX_KDF_PARAM_CEK_ALG 116 +#define PIDX_KDF_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_KDF_PARAM_CONSTANT 117 +#define PIDX_KDF_PARAM_DATA 118 +#define PIDX_KDF_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_KDF_PARAM_EARLY_CLEAN 119 +#define PIDX_KDF_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KDF_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_KDF_PARAM_FIPS_EMS_CHECK 120 +#define PIDX_KDF_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KDF_PARAM_HMACDRBG_ENTROPY 121 +#define PIDX_KDF_PARAM_HMACDRBG_NONCE 122 +#define PIDX_KDF_PARAM_INFO 123 +#define PIDX_KDF_PARAM_ITER 124 +#define PIDX_KDF_PARAM_KBKDF_R 125 +#define PIDX_KDF_PARAM_KBKDF_USE_L 126 +#define PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR 127 +#define PIDX_KDF_PARAM_KEY 128 +#define PIDX_KDF_PARAM_LABEL 129 +#define PIDX_KDF_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_KDF_PARAM_MAC_SIZE 130 +#define PIDX_KDF_PARAM_MODE 55 +#define PIDX_KDF_PARAM_PASSWORD 131 +#define PIDX_KDF_PARAM_PKCS12_ID 132 +#define PIDX_KDF_PARAM_PKCS5 133 +#define PIDX_KDF_PARAM_PREFIX 134 +#define PIDX_KDF_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_KDF_PARAM_SALT 135 +#define PIDX_KDF_PARAM_SCRYPT_MAXMEM 136 +#define PIDX_KDF_PARAM_SCRYPT_N 137 +#define PIDX_KDF_PARAM_SCRYPT_P 138 +#define PIDX_KDF_PARAM_SCRYPT_R 125 +#define PIDX_KDF_PARAM_SECRET 139 +#define PIDX_KDF_PARAM_SEED 140 +#define PIDX_KDF_PARAM_SIZE 81 +#define PIDX_KDF_PARAM_SSHKDF_SESSION_ID 141 +#define PIDX_KDF_PARAM_SSHKDF_TYPE 142 +#define PIDX_KDF_PARAM_SSHKDF_XCGHASH 143 +#define PIDX_KDF_PARAM_THREADS 144 +#define PIDX_KDF_PARAM_UKM 145 +#define PIDX_KDF_PARAM_X942_ACVPINFO 146 +#define PIDX_KDF_PARAM_X942_PARTYUINFO 147 +#define PIDX_KDF_PARAM_X942_PARTYVINFO 148 +#define PIDX_KDF_PARAM_X942_SUPP_PRIVINFO 149 +#define PIDX_KDF_PARAM_X942_SUPP_PUBINFO 150 +#define PIDX_KDF_PARAM_X942_USE_KEYBITS 151 +#define PIDX_KEM_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KEM_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KEM_PARAM_IKME 152 +#define PIDX_KEM_PARAM_OPERATION 153 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING 154 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING 155 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA 156 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN 157 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE 55 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS 158 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD 159 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC 160 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE 161 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM 162 +#define PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN 163 +#define PIDX_MAC_PARAM_BLOCK_SIZE 164 +#define PIDX_MAC_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_MAC_PARAM_CUSTOM 165 +#define PIDX_MAC_PARAM_C_ROUNDS 166 +#define PIDX_MAC_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_MAC_PARAM_DIGEST_NOINIT 167 +#define PIDX_MAC_PARAM_DIGEST_ONESHOT 168 +#define PIDX_MAC_PARAM_D_ROUNDS 169 +#define PIDX_MAC_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_MAC_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_MAC_PARAM_FIPS_NO_SHORT_MAC PIDX_PROV_PARAM_NO_SHORT_MAC +#define PIDX_MAC_PARAM_IV 52 +#define PIDX_MAC_PARAM_KEY 128 +#define PIDX_MAC_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_MAC_PARAM_SALT 135 +#define PIDX_MAC_PARAM_SIZE 81 +#define PIDX_MAC_PARAM_TLS_DATA_SIZE 170 +#define PIDX_MAC_PARAM_XOF 83 +#define PIDX_OBJECT_PARAM_DATA 118 +#define PIDX_OBJECT_PARAM_DATA_STRUCTURE 171 +#define PIDX_OBJECT_PARAM_DATA_TYPE 172 +#define PIDX_OBJECT_PARAM_DESC 173 +#define PIDX_OBJECT_PARAM_INPUT_TYPE 174 +#define PIDX_OBJECT_PARAM_REFERENCE 175 +#define PIDX_OBJECT_PARAM_TYPE 142 +#define PIDX_PASSPHRASE_PARAM_INFO 123 +#define PIDX_PKEY_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_PKEY_PARAM_BITS 176 +#define PIDX_PKEY_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_PKEY_PARAM_DEFAULT_DIGEST 177 +#define PIDX_PKEY_PARAM_DHKEM_IKM 178 +#define PIDX_PKEY_PARAM_DH_GENERATOR 179 +#define PIDX_PKEY_PARAM_DH_PRIV_LEN 180 +#define PIDX_PKEY_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_PKEY_PARAM_DIGEST_SIZE 181 +#define PIDX_PKEY_PARAM_DIST_ID 182 +#define PIDX_PKEY_PARAM_EC_A 183 +#define PIDX_PKEY_PARAM_EC_B 184 +#define PIDX_PKEY_PARAM_EC_CHAR2_M 185 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K1 186 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K2 187 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K3 188 +#define PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS 189 +#define PIDX_PKEY_PARAM_EC_CHAR2_TYPE 190 +#define PIDX_PKEY_PARAM_EC_COFACTOR 191 +#define PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS 192 +#define PIDX_PKEY_PARAM_EC_ENCODING 193 +#define PIDX_PKEY_PARAM_EC_FIELD_TYPE 194 +#define PIDX_PKEY_PARAM_EC_GENERATOR 195 +#define PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE 196 +#define PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC 197 +#define PIDX_PKEY_PARAM_EC_ORDER 198 +#define PIDX_PKEY_PARAM_EC_P 138 +#define PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT 199 +#define PIDX_PKEY_PARAM_EC_PUB_X 200 +#define PIDX_PKEY_PARAM_EC_PUB_Y 201 +#define PIDX_PKEY_PARAM_EC_SEED 140 +#define PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY 202 +#define PIDX_PKEY_PARAM_ENGINE PIDX_ALG_PARAM_ENGINE +#define PIDX_PKEY_PARAM_FFC_COFACTOR 203 +#define PIDX_PKEY_PARAM_FFC_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_FFC_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_FFC_G 204 +#define PIDX_PKEY_PARAM_FFC_GINDEX 205 +#define PIDX_PKEY_PARAM_FFC_H 206 +#define PIDX_PKEY_PARAM_FFC_P 138 +#define PIDX_PKEY_PARAM_FFC_PBITS 207 +#define PIDX_PKEY_PARAM_FFC_PCOUNTER 208 +#define PIDX_PKEY_PARAM_FFC_Q 209 +#define PIDX_PKEY_PARAM_FFC_QBITS 210 +#define PIDX_PKEY_PARAM_FFC_SEED 140 +#define PIDX_PKEY_PARAM_FFC_TYPE 142 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_G 211 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY 212 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_PQ 213 +#define PIDX_PKEY_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK 214 +#define PIDX_PKEY_PARAM_FIPS_KEY_CHECK 215 +#define PIDX_PKEY_PARAM_FIPS_SIGN_CHECK 216 +#define PIDX_PKEY_PARAM_GROUP_NAME 217 +#define PIDX_PKEY_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_PKEY_PARAM_MANDATORY_DIGEST 218 +#define PIDX_PKEY_PARAM_MASKGENFUNC 219 +#define PIDX_PKEY_PARAM_MAX_SIZE 220 +#define PIDX_PKEY_PARAM_MGF1_DIGEST 221 +#define PIDX_PKEY_PARAM_MGF1_PROPERTIES 222 +#define PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS 223 +#define PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS 224 +#define PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED 225 +#define PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED 226 +#define PIDX_PKEY_PARAM_ML_DSA_SEED 140 +#define PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE 227 +#define PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS 228 +#define PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS 229 +#define PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED 230 +#define PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED 231 +#define PIDX_PKEY_PARAM_ML_KEM_SEED 140 +#define PIDX_PKEY_PARAM_PAD_MODE 232 +#define PIDX_PKEY_PARAM_PRIV_KEY 233 +#define PIDX_PKEY_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_PUB_KEY 234 +#define PIDX_PKEY_PARAM_RSA_BITS PIDX_PKEY_PARAM_BITS +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT 235 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT1 236 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT2 237 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT3 238 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT4 239 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT5 240 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT6 241 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT7 242 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT8 243 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT9 244 +#define PIDX_PKEY_PARAM_RSA_D 245 +#define PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ 246 +#define PIDX_PKEY_PARAM_RSA_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_RSA_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_RSA_E 247 +#define PIDX_PKEY_PARAM_RSA_EXPONENT 248 +#define PIDX_PKEY_PARAM_RSA_EXPONENT1 249 +#define PIDX_PKEY_PARAM_RSA_EXPONENT10 250 +#define PIDX_PKEY_PARAM_RSA_EXPONENT2 251 +#define PIDX_PKEY_PARAM_RSA_EXPONENT3 252 +#define PIDX_PKEY_PARAM_RSA_EXPONENT4 253 +#define PIDX_PKEY_PARAM_RSA_EXPONENT5 254 +#define PIDX_PKEY_PARAM_RSA_EXPONENT6 255 +#define PIDX_PKEY_PARAM_RSA_EXPONENT7 256 +#define PIDX_PKEY_PARAM_RSA_EXPONENT8 257 +#define PIDX_PKEY_PARAM_RSA_EXPONENT9 258 +#define PIDX_PKEY_PARAM_RSA_FACTOR 259 +#define PIDX_PKEY_PARAM_RSA_FACTOR1 260 +#define PIDX_PKEY_PARAM_RSA_FACTOR10 261 +#define PIDX_PKEY_PARAM_RSA_FACTOR2 262 +#define PIDX_PKEY_PARAM_RSA_FACTOR3 263 +#define PIDX_PKEY_PARAM_RSA_FACTOR4 264 +#define PIDX_PKEY_PARAM_RSA_FACTOR5 265 +#define PIDX_PKEY_PARAM_RSA_FACTOR6 266 +#define PIDX_PKEY_PARAM_RSA_FACTOR7 267 +#define PIDX_PKEY_PARAM_RSA_FACTOR8 268 +#define PIDX_PKEY_PARAM_RSA_FACTOR9 269 +#define PIDX_PKEY_PARAM_RSA_MASKGENFUNC PIDX_PKEY_PARAM_MASKGENFUNC +#define PIDX_PKEY_PARAM_RSA_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_PKEY_PARAM_RSA_N 137 +#define PIDX_PKEY_PARAM_RSA_PRIMES 270 +#define PIDX_PKEY_PARAM_RSA_PSS_SALTLEN 271 +#define PIDX_PKEY_PARAM_RSA_TEST_P1 272 +#define PIDX_PKEY_PARAM_RSA_TEST_P2 273 +#define PIDX_PKEY_PARAM_RSA_TEST_Q1 274 +#define PIDX_PKEY_PARAM_RSA_TEST_Q2 275 +#define PIDX_PKEY_PARAM_RSA_TEST_XP 276 +#define PIDX_PKEY_PARAM_RSA_TEST_XP1 277 +#define PIDX_PKEY_PARAM_RSA_TEST_XP2 278 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ 279 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ1 280 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ2 281 +#define PIDX_PKEY_PARAM_SECURITY_BITS 282 +#define PIDX_PKEY_PARAM_SLH_DSA_SEED 140 +#define PIDX_PKEY_PARAM_USE_COFACTOR_ECDH PIDX_PKEY_PARAM_USE_COFACTOR_FLAG +#define PIDX_PKEY_PARAM_USE_COFACTOR_FLAG 283 +#define PIDX_PROV_PARAM_BUILDINFO 284 +#define PIDX_PROV_PARAM_CORE_MODULE_FILENAME 285 +#define PIDX_PROV_PARAM_CORE_PROV_NAME 286 +#define PIDX_PROV_PARAM_CORE_VERSION 287 +#define PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST 288 +#define PIDX_PROV_PARAM_DSA_SIGN_DISABLED 289 +#define PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK 290 +#define PIDX_PROV_PARAM_HKDF_DIGEST_CHECK 291 +#define PIDX_PROV_PARAM_HKDF_KEY_CHECK 292 +#define PIDX_PROV_PARAM_HMAC_KEY_CHECK 293 +#define PIDX_PROV_PARAM_KBKDF_KEY_CHECK 294 +#define PIDX_PROV_PARAM_KMAC_KEY_CHECK 295 +#define PIDX_PROV_PARAM_NAME 296 +#define PIDX_PROV_PARAM_NO_SHORT_MAC 297 +#define PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK 298 +#define PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED 299 +#define PIDX_PROV_PARAM_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED 301 +#define PIDX_PROV_PARAM_SECURITY_CHECKS 302 +#define PIDX_PROV_PARAM_SELF_TEST_DESC 303 +#define PIDX_PROV_PARAM_SELF_TEST_PHASE 304 +#define PIDX_PROV_PARAM_SELF_TEST_TYPE 305 +#define PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK 306 +#define PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK 307 +#define PIDX_PROV_PARAM_SSHKDF_KEY_CHECK 308 +#define PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK 309 +#define PIDX_PROV_PARAM_SSKDF_KEY_CHECK 310 +#define PIDX_PROV_PARAM_STATUS 311 +#define PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED 312 +#define PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK 313 +#define PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK 314 +#define PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK 315 +#define PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK 316 +#define PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK 317 +#define PIDX_PROV_PARAM_VERSION 115 +#define PIDX_PROV_PARAM_X942KDF_KEY_CHECK 318 +#define PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK 319 +#define PIDX_PROV_PARAM_X963KDF_KEY_CHECK 320 +#define PIDX_RAND_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_RAND_PARAM_GENERATE 321 +#define PIDX_RAND_PARAM_MAX_REQUEST 322 +#define PIDX_RAND_PARAM_STATE 323 +#define PIDX_RAND_PARAM_STRENGTH 324 +#define PIDX_RAND_PARAM_TEST_ENTROPY 325 +#define PIDX_RAND_PARAM_TEST_NONCE 326 +#define PIDX_SIGNATURE_PARAM_ADD_RANDOM 327 +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID PIDX_PKEY_PARAM_ALGORITHM_ID +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_SIGNATURE_PARAM_CONTEXT_STRING 328 +#define PIDX_SIGNATURE_PARAM_DETERMINISTIC 329 +#define PIDX_SIGNATURE_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_SIGNATURE_PARAM_DIGEST_SIZE PIDX_PKEY_PARAM_DIGEST_SIZE +#define PIDX_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_SIGNATURE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_CHECK PIDX_PKEY_PARAM_FIPS_SIGN_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK 330 +#define PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE 331 +#define PIDX_SIGNATURE_PARAM_INSTANCE 332 +#define PIDX_SIGNATURE_PARAM_KAT 333 +#define PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING 334 +#define PIDX_SIGNATURE_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_SIGNATURE_PARAM_MGF1_PROPERTIES PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_SIGNATURE_PARAM_MU 335 +#define PIDX_SIGNATURE_PARAM_NONCE_TYPE 336 +#define PIDX_SIGNATURE_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_SIGNATURE_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_SIGNATURE_PARAM_PSS_SALTLEN 271 +#define PIDX_SIGNATURE_PARAM_SIGNATURE 337 +#define PIDX_SIGNATURE_PARAM_TEST_ENTROPY 338 +#define PIDX_SKEY_PARAM_KEY_LENGTH 339 +#define PIDX_SKEY_PARAM_RAW_BYTES 340 +#define PIDX_STORE_PARAM_ALIAS 341 +#define PIDX_STORE_PARAM_DIGEST 3 +#define PIDX_STORE_PARAM_EXPECT 342 +#define PIDX_STORE_PARAM_FINGERPRINT 343 +#define PIDX_STORE_PARAM_INPUT_TYPE 174 +#define PIDX_STORE_PARAM_ISSUER 296 +#define PIDX_STORE_PARAM_PROPERTIES 7 +#define PIDX_STORE_PARAM_SERIAL 344 +#define PIDX_STORE_PARAM_SUBJECT 345 diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/asn1.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/asn1.h index 21ff58e3d803d4..15e9e44674b0f3 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/asn1.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/asn1.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/asn1.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -21,6 +21,9 @@ # define HEADER_ASN1_H # endif +# ifndef OPENSSL_NO_STDIO +# include +# endif # include # include # include @@ -50,14 +53,14 @@ extern "C" { # define V_ASN1_PRIMITIVE_TAG 0x1f # define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG -# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ -# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ -# define V_ASN1_ANY -4/* used in ASN1 template code */ +# define V_ASN1_APP_CHOOSE -2 /* let the recipient choose */ +# define V_ASN1_OTHER -3 /* used in ASN1_TYPE */ +# define V_ASN1_ANY -4 /* used in ASN1 template code */ # define V_ASN1_UNDEF -1 /* ASN.1 tag values */ # define V_ASN1_EOC 0 -# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_BOOLEAN 1 # define V_ASN1_INTEGER 2 # define V_ASN1_BIT_STRING 3 # define V_ASN1_OCTET_STRING 4 @@ -70,19 +73,19 @@ extern "C" { # define V_ASN1_UTF8STRING 12 # define V_ASN1_SEQUENCE 16 # define V_ASN1_SET 17 -# define V_ASN1_NUMERICSTRING 18 /**/ +# define V_ASN1_NUMERICSTRING 18 # define V_ASN1_PRINTABLESTRING 19 # define V_ASN1_T61STRING 20 -# define V_ASN1_TELETEXSTRING 20/* alias */ -# define V_ASN1_VIDEOTEXSTRING 21 /**/ +# define V_ASN1_TELETEXSTRING 20 /* alias */ +# define V_ASN1_VIDEOTEXSTRING 21 # define V_ASN1_IA5STRING 22 # define V_ASN1_UTCTIME 23 -# define V_ASN1_GENERALIZEDTIME 24 /**/ -# define V_ASN1_GRAPHICSTRING 25 /**/ -# define V_ASN1_ISO64STRING 26 /**/ -# define V_ASN1_VISIBLESTRING 26/* alias */ -# define V_ASN1_GENERALSTRING 27 /**/ -# define V_ASN1_UNIVERSALSTRING 28 /**/ +# define V_ASN1_GENERALIZEDTIME 24 +# define V_ASN1_GRAPHICSTRING 25 +# define V_ASN1_ISO64STRING 26 +# define V_ASN1_VISIBLESTRING 26 /* alias */ +# define V_ASN1_GENERALSTRING 27 +# define V_ASN1_UNIVERSALSTRING 28 # define V_ASN1_BMPSTRING 30 /* @@ -155,7 +158,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) -# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +# define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */ /* * This indicates that the ASN1_STRING is not a real value but just a place * holder for the location where indefinite length constructed data should be @@ -275,7 +278,7 @@ typedef struct ASN1_TLC_st ASN1_TLC; /* This is just an opaque pointer */ typedef struct ASN1_VALUE_st ASN1_VALUE; -/* Declare ASN1 functions: the implement macro in in asn1t.h */ +/* Declare ASN1 functions: the implement macro is in asn1t.h */ /* * The mysterious 'extern' that's passed to some macros is innocuous, @@ -368,6 +371,7 @@ typedef struct ASN1_VALUE_st ASN1_VALUE; typedef void *d2i_of_void(void **, const unsigned char **, long); typedef int i2d_of_void(const void *, unsigned char **); +typedef int OSSL_i2d_of_void_ctx(const void *, unsigned char **, void *vctx); /*- * The following macros and typedefs allow an ASN1_ITEM @@ -996,6 +1000,8 @@ int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, unsigned char *data, int max_len); void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/bio.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/bio.h index f9aa74731c833c..e02f867beb0ec0 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/bio.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/bio.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/bio.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -67,8 +67,13 @@ extern "C" { # define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) # endif # define BIO_TYPE_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_PAIR (26|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_MEM (27|BIO_TYPE_SOURCE_SINK) +/* Custom type starting index returned by BIO_get_new_index() */ #define BIO_TYPE_START 128 +/* Custom type maximum index that can be returned by BIO_get_new_index() */ +#define BIO_TYPE_MASK 0xFF /* * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. @@ -171,6 +176,31 @@ extern "C" { # define BIO_CTRL_SET_INDENT 80 # define BIO_CTRL_GET_INDENT 81 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +# define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +# define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +# define BIO_CTRL_DGRAM_GET_CAPS 86 +# define BIO_CTRL_DGRAM_SET_CAPS 87 +# define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +# define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +# define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +# define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +# define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 +# define BIO_CTRL_DGRAM_SET0_LOCAL_ADDR 94 + +# define BIO_DGRAM_CAP_NONE 0U +# define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +# define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +# define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +# define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + # ifndef OPENSSL_NO_KTLS # define BIO_get_ktls_send(b) \ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) @@ -208,7 +238,7 @@ extern "C" { # define BIO_FLAGS_NONCLEAR_RST 0x400 # define BIO_FLAGS_IN_EOF 0x800 -/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */ +/* the BIO FLAGS values 0x1000 to 0x8000 are reserved for internal KTLS flags */ typedef union bio_addr_st BIO_ADDR; typedef struct bio_addrinfo_st BIO_ADDRINFO; @@ -256,12 +286,14 @@ void BIO_clear_flags(BIO *b, int flags); # define BIO_RR_ACCEPT 0x03 /* These are passed by the BIO callback */ -# define BIO_CB_FREE 0x01 -# define BIO_CB_READ 0x02 -# define BIO_CB_WRITE 0x03 -# define BIO_CB_PUTS 0x04 -# define BIO_CB_GETS 0x05 -# define BIO_CB_CTRL 0x06 +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 +# define BIO_CB_RECVMMSG 0x07 +# define BIO_CB_SENDMMSG 0x08 /* * The callback is called before and after the underling operation, The @@ -362,6 +394,36 @@ struct bio_dgram_sctp_prinfo { }; # endif +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_TYPE_SSL 2 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + SSL *ssl; + } value; +} BIO_POLL_DESCRIPTOR; + /* * #define BIO_CONN_get_param_hostname BIO_ctrl */ @@ -428,10 +490,17 @@ struct bio_dgram_sctp_prinfo { # define BIO_C_SET_CONNECT_MODE 155 +# define BIO_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +# define BIO_C_SET_SOCK_TYPE 157 +# define BIO_C_GET_SOCK_TYPE 158 +# define BIO_C_GET_DGRAM_BIO 159 + # define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) # define BIO_get_app_data(s) BIO_get_ex_data(s,0) -# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_tfo(b,n) BIO_ctrl(b,BIO_C_SET_TFO,(n),NULL) # ifndef OPENSSL_NO_SOCK /* IP families we support, for BIO_s_connect() and BIO_s_accept() */ @@ -452,7 +521,11 @@ struct bio_dgram_sctp_prinfo { # define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) # define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) # define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_get_conn_mode(b) BIO_ctrl(b,BIO_C_GET_CONNECT,4,NULL) # define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) +# define BIO_set_sock_type(b,t) BIO_ctrl(b,BIO_C_SET_SOCK_TYPE,(t),NULL) +# define BIO_get_sock_type(b) BIO_ctrl(b,BIO_C_GET_SOCK_TYPE,0,NULL) +# define BIO_get0_dgram_bio(b, p) BIO_ctrl(b,BIO_C_GET_DGRAM_BIO,0,(void *)(BIO **)(p)) /* BIO_s_accept() */ # define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ @@ -469,6 +542,7 @@ struct bio_dgram_sctp_prinfo { (char *)(bio)) # define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) # define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) +# define BIO_set_tfo_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,5,(n)?(void *)"a":NULL) /* Aliases kept for backward compatibility */ # define BIO_BIND_NORMAL 0 @@ -596,8 +670,32 @@ int BIO_ctrl_reset_read_request(BIO *b); (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) # define BIO_dgram_set_peer(b,peer) \ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_detect_peer_addr(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) # define BIO_dgram_get_mtu_overhead(b) \ (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +# define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +# define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +# define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +# define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +# define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +# define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +# define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +# define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +# define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +# define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) +# define BIO_dgram_set0_local_addr(b, addr) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET0_LOCAL_ADDR, 0, (addr)) /* ctrl macros for BIO_f_prefix */ # define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) @@ -640,10 +738,18 @@ void BIO_vfree(BIO *a); int BIO_up_ref(BIO *a); int BIO_read(BIO *b, void *data, int dlen); int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); int BIO_gets(BIO *bp, char *buf, int size); int BIO_get_line(BIO *bio, char *buf, int size); int BIO_write(BIO *b, const void *data, int dlen); int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); int BIO_puts(BIO *bp, const char *buf); int BIO_indent(BIO *b, int indent, int max); long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); @@ -667,6 +773,9 @@ int BIO_nwrite0(BIO *bio, char **buf); int BIO_nwrite(BIO *bio, char **buf, int num); const BIO_METHOD *BIO_s_mem(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +# endif const BIO_METHOD *BIO_s_secmem(void); BIO *BIO_new_mem_buf(const void *buf, int len); # ifndef OPENSSL_NO_SOCK @@ -686,6 +795,7 @@ const BIO_METHOD *BIO_f_nbio_test(void); const BIO_METHOD *BIO_f_prefix(void); const BIO_METHOD *BIO_s_core(void); # ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_pair(void); const BIO_METHOD *BIO_s_datagram(void); int BIO_dgram_non_fatal_error(int error); BIO *BIO_new_dgram(int fd, int close_flag); @@ -704,6 +814,7 @@ int BIO_dgram_sctp_msg_waiting(BIO *b); # ifndef OPENSSL_NO_SOCK int BIO_sock_should_retry(int i); int BIO_sock_non_fatal_error(int error); +int BIO_err_is_non_fatal(unsigned int errcode); int BIO_socket_wait(int fd, int for_read, time_t max_time); # endif int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); @@ -726,6 +837,8 @@ int BIO_hex_string(BIO *out, int indent, int width, const void *data, # ifndef OPENSSL_NO_SOCK BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, const void *where, size_t wherelen, unsigned short port); void BIO_ADDR_free(BIO_ADDR *); @@ -788,6 +901,7 @@ int BIO_sock_info(int sock, # define BIO_SOCK_KEEPALIVE 0x04 # define BIO_SOCK_NONBLOCK 0x08 # define BIO_SOCK_NODELAY 0x10 +# define BIO_SOCK_TFO 0x20 int BIO_socket(int domain, int socktype, int protocol, int options); int BIO_connect(int sock, const BIO_ADDR *addr, int options); @@ -805,6 +919,11 @@ BIO *BIO_new_fd(int fd, int close_flag); int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, BIO **bio2, size_t writebuf2); +# ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +# endif + /* * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default @@ -849,38 +968,54 @@ ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); BIO_METHOD *BIO_meth_new(int type, const char *name); void BIO_meth_free(BIO_METHOD *biom); -int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int); -int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t, - size_t *); int BIO_meth_set_write(BIO_METHOD *biom, int (*write) (BIO *, const char *, int)); int BIO_meth_set_write_ex(BIO_METHOD *biom, int (*bwrite) (BIO *, const char *, size_t, size_t *)); -int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); -int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); +int BIO_meth_set_sendmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_read(BIO_METHOD *biom, int (*read) (BIO *, char *, int)); int BIO_meth_set_read_ex(BIO_METHOD *biom, int (*bread) (BIO *, char *, size_t, size_t *)); -int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +int BIO_meth_set_recvmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_puts(BIO_METHOD *biom, int (*puts) (BIO *, const char *)); -int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); int BIO_meth_set_gets(BIO_METHOD *biom, int (*ossl_gets) (BIO *, char *, int)); -long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); int BIO_meth_set_ctrl(BIO_METHOD *biom, long (*ctrl) (BIO *, int, long, void *)); -int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); -int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); -long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) - (BIO *, int, BIO_info_cb *); int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, long (*callback_ctrl) (BIO *, int, BIO_info_cb *)); - +# ifndef OPENSSL_NO_DEPRECATED_3_5 +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, + int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, + long, void *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) (BIO *, int, + BIO_info_cb *); +# endif # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/cmp.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/cmp.h index 49825570d8c303..05aed3029d594c 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -35,7 +35,9 @@ extern "C" { # endif -# define OSSL_CMP_PVNO 2 +# define OSSL_CMP_PVNO_2 2 +# define OSSL_CMP_PVNO_3 3 +# define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ /*- * PKIFailureInfo ::= BIT STRING { @@ -137,7 +139,6 @@ extern "C" { # if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX # error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int # endif - typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) @@ -203,8 +204,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_PKISTATUS_revocationWarning 4 # define OSSL_CMP_PKISTATUS_revocationNotification 5 # define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 - typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; + DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) # define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 @@ -274,6 +275,46 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) #define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) #define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) + +typedef struct ossl_cmp_crlstatus_st OSSL_CMP_CRLSTATUS; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS) +#define sk_OSSL_CMP_CRLSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_value(sk, idx) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CRLSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CRLSTATUS_new_null() ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CRLSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CRLSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CRLSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_delete(sk, i) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CRLSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_pop(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_shift(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CRLSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CRLSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CRLSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CRLSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CRLSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) + + +typedef OSSL_CRMF_ATTRIBUTETYPEANDVALUE OSSL_CMP_ATAV; +# define OSSL_CMP_ATAV_free OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free +typedef STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) OSSL_CMP_ATAVS; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_ATAVS) +# define stack_st_OSSL_CMP_ATAV stack_st_OSSL_CRMF_ATTRIBUTETYPEANDVALUE +# define sk_OSSL_CMP_ATAV_num sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num +# define sk_OSSL_CMP_ATAV_value sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value +# define sk_OSSL_CMP_ATAV_push sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push +# define sk_OSSL_CMP_ATAV_pop_free sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free + typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT; typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI; DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI) @@ -375,21 +416,75 @@ void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type, ASN1_TYPE *value); ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav); ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); -int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p, +int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **sk_p, OSSL_CMP_ITAV *itav); void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new0_certProfile(STACK_OF(ASN1_UTF8STRING) + *certProfile); +int OSSL_CMP_ITAV_get0_certProfile(const OSSL_CMP_ITAV *itav, + STACK_OF(ASN1_UTF8STRING) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_create(const X509_CRL *crl, + const X509 *cert, int only_DN); +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_new1(const DIST_POINT_NAME *dpn, + const GENERAL_NAMES *issuer, + const ASN1_TIME *thisUpdate); +int OSSL_CMP_CRLSTATUS_get0(const OSSL_CMP_CRLSTATUS *crlstatus, + DIST_POINT_NAME **dpn, GENERAL_NAMES **issuer, + ASN1_TIME **thisUpdate); +void OSSL_CMP_CRLSTATUS_free(OSSL_CMP_CRLSTATUS *crlstatus); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_crlStatusList(STACK_OF(OSSL_CMP_CRLSTATUS) *crlStatusList); +int OSSL_CMP_ITAV_get0_crlStatusList(const OSSL_CMP_ITAV *itav, + STACK_OF(OSSL_CMP_CRLSTATUS) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_crls(const X509_CRL *crls); +int OSSL_CMP_ITAV_get0_crls(const OSSL_CMP_ITAV *it, STACK_OF(X509_CRL) **out); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_certReqTemplate(OSSL_CRMF_CERTTEMPLATE *certTemplate, + OSSL_CMP_ATAVS *keySpec); +int OSSL_CMP_ITAV_get1_certReqTemplate(const OSSL_CMP_ITAV *itav, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +OSSL_CMP_ATAV *OSSL_CMP_ATAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ATAV_set0(OSSL_CMP_ATAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ATAV_get0_type(const OSSL_CMP_ATAV *itav); +ASN1_TYPE *OSSL_CMP_ATAV_get0_value(const OSSL_CMP_ATAV *itav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_algId(const X509_ALGOR *alg); +X509_ALGOR *OSSL_CMP_ATAV_get0_algId(const OSSL_CMP_ATAV *atav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_rsaKeyLen(int len); +int OSSL_CMP_ATAV_get_rsaKeyLen(const OSSL_CMP_ATAV *atav); +int OSSL_CMP_ATAV_push1(OSSL_CMP_ATAVS **sk_p, const OSSL_CMP_ATAV *atav); + void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); /* from cmp_ctx.c */ OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const OSSL_CMP_CTX *ctx); /* CMP general options: */ # define OSSL_CMP_OPT_LOG_VERBOSITY 0 /* CMP transfer options: */ -# define OSSL_CMP_OPT_KEEP_ALIVE 10 -# define OSSL_CMP_OPT_MSG_TIMEOUT 11 +# define OSSL_CMP_OPT_KEEP_ALIVE 10 +# define OSSL_CMP_OPT_MSG_TIMEOUT 11 # define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 +# define OSSL_CMP_OPT_USE_TLS 13 /* CMP request options: */ # define OSSL_CMP_OPT_VALIDITY_DAYS 20 # define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 @@ -407,6 +502,7 @@ int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); # define OSSL_CMP_OPT_DIGEST_ALGNID 34 # define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35 # define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36 +# define OSSL_CMP_OPT_NO_CACHE_EXTRACERTS 37 int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val); int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt); /* CMP-specific callback for logging and outputting the error queue: */ @@ -420,9 +516,11 @@ int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); +# ifndef OPENSSL_NO_HTTP int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); +# endif typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); @@ -432,7 +530,9 @@ void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); +# define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +# define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); /* client authentication: */ @@ -448,12 +548,15 @@ int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx, int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); int OSSL_CMP_CTX_reset_geninfo_ITAVs(OSSL_CMP_CTX *ctx); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_CTX_get0_geninfo_ITAVs(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, STACK_OF(X509) *extraCertsOut); /* certificate template: */ int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set1_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, const GENERAL_NAME *name); @@ -477,6 +580,7 @@ int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); # define OSSL_CMP_PKISI_BUFLEN 1024 +X509 *OSSL_CMP_CTX_get0_validatedSrvCert(const OSSL_CMP_CTX *ctx); X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); @@ -498,10 +602,13 @@ OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const OSSL_CMP_PKIHEADER *hdr); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_HDR_get0_geninfo_ITAVs(const OSSL_CMP_PKIHEADER *hdr); /* from cmp_msg.c */ OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg); +X509_PUBKEY *OSSL_CMP_MSG_get0_certreq_publickey(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_recipNonce(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid); @@ -517,8 +624,10 @@ int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, X509_STORE *trusted_store, X509 *cert); /* from cmp_http.c */ +# ifndef OPENSSL_NO_HTTP OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); +# endif /* from cmp_server.c */ typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; @@ -561,6 +670,13 @@ int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx, OSSL_CMP_SRV_error_cb_t process_error, OSSL_CMP_SRV_certConf_cb_t process_certConf, OSSL_CMP_SRV_pollReq_cb_t process_pollReq); +typedef int (*OSSL_CMP_SRV_delayed_delivery_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +typedef int (*OSSL_CMP_SRV_clean_transaction_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_SRV_CTX_init_trans(OSSL_CMP_SRV_CTX *srv_ctx, + OSSL_CMP_SRV_delayed_delivery_cb_t delay, + OSSL_CMP_SRV_clean_transaction_cb_t clean); OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx, @@ -577,6 +693,8 @@ X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type, # define OSSL_CMP_CR 2 # define OSSL_CMP_P10CR 4 # define OSSL_CMP_KUR 7 +# define OSSL_CMP_GENM 21 +# define OSSL_CMP_ERROR 23 # define OSSL_CMP_exec_IR_ses(ctx) \ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL) # define OSSL_CMP_exec_CR_ses(ctx) \ @@ -590,6 +708,18 @@ int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); +int OSSL_CMP_get1_crlUpdate(OSSL_CMP_CTX *ctx, const X509 *crlcert, + const X509_CRL *last_crl, + X509_CRL **crl); +int OSSL_CMP_get1_certReqTemplate(OSSL_CMP_CTX *ctx, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/cms.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/cms.h index 3b453e6a2187a2..63afab563557b0 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/cms.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/cms.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cms.h.in * - * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2008-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -31,8 +31,10 @@ extern "C" { # endif +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; typedef struct CMS_ContentInfo_st CMS_ContentInfo; typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; typedef struct CMS_CertificateChoices CMS_CertificateChoices; typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; @@ -147,10 +149,14 @@ SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, #define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) +DECLARE_ASN1_DUP_FUNCTION(CMS_EnvelopedData) + CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq); # define CMS_SIGNERINFO_ISSUER_SERIAL 0 @@ -190,6 +196,7 @@ CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq) # define CMS_ASCIICRLF 0x80000 # define CMS_CADES 0x100000 # define CMS_USE_ORIGINATOR_KEYID 0x200000 +# define CMS_NO_SIGNING_TIME 0x400000 const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms); @@ -217,13 +224,16 @@ int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, unsigned int flags); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, BIO *dcont, + unsigned int flags); CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, unsigned int flags); CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, @@ -233,27 +243,26 @@ CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, unsigned int flags); CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, const unsigned char *key, size_t keylen, BIO *dcont, BIO *out, unsigned int flags); - CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags); CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, @@ -272,7 +281,7 @@ CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags); CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, BIO *dcont, BIO *out, unsigned int flags); @@ -291,12 +300,16 @@ int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo * -CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx, +CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags); @@ -385,6 +398,11 @@ ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); int CMS_SignerInfo_sign(CMS_SignerInfo *si); int CMS_SignerInfo_verify(CMS_SignerInfo *si); int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, @@ -441,7 +459,7 @@ CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( unsigned char *id, int idlen, int allorfirst, STACK_OF(GENERAL_NAMES) *receiptList, STACK_OF(GENERAL_NAMES) *receiptsTo, - OSSL_LIB_CTX *ctx); + OSSL_LIB_CTX *libctx); int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/comp.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/comp.h new file mode 100644 index 00000000000000..90e39511fe8d28 --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/comp.h @@ -0,0 +1,98 @@ +/* + * Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_COMP_H +# define OPENSSL_COMP_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_COMP_H +# endif + +# include + +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + + +# ifndef OPENSSL_NO_COMP + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX* comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); + +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); + +COMP_METHOD *COMP_zlib(void); +COMP_METHOD *COMP_zlib_oneshot(void); +COMP_METHOD *COMP_brotli(void); +COMP_METHOD *COMP_brotli_oneshot(void); +COMP_METHOD *COMP_zstd(void); +COMP_METHOD *COMP_zstd_oneshot(void); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define COMP_zlib_cleanup() while(0) continue +# endif + +# ifdef OPENSSL_BIO_H +const BIO_METHOD *BIO_f_zlib(void); +const BIO_METHOD *BIO_f_brotli(void); +const BIO_METHOD *BIO_f_zstd(void); +# endif + +# endif + +typedef struct ssl_comp_st SSL_COMP; + +SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) +#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) +#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) +#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) +#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) +#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) +#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) +#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) +#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) +#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) +#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) +#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) + + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/conf.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/conf.h index 44989929f6c84a..38576290bf641b 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/conf.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/conf.h @@ -27,6 +27,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -65,7 +68,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) #define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) #define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); -#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp))) +#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp)), lh_CONF_VALUE_hash_thunk, lh_CONF_VALUE_comp_thunk, lh_CONF_VALUE_doall_thunk, lh_CONF_VALUE_doall_arg_thunk)) #define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/configuration.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/configuration.h index 0ab00d8834b215..ac8c22a725f3d4 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/configuration.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/configuration.h @@ -30,7 +30,7 @@ extern "C" { # ifndef OPENSSL_SYS_AIX # define OPENSSL_SYS_AIX 1 # endif -# define OPENSSL_CONFIGURED_API 30000 +# define OPENSSL_CONFIGURED_API 30500 # ifndef OPENSSL_RAND_SEED_OS # define OPENSSL_RAND_SEED_OS # endif @@ -43,6 +43,12 @@ extern "C" { # ifndef OPENSSL_NO_ASAN # define OPENSSL_NO_ASAN # endif +# ifndef OPENSSL_NO_BROTLI +# define OPENSSL_NO_BROTLI +# endif +# ifndef OPENSSL_NO_BROTLI_DYNAMIC +# define OPENSSL_NO_BROTLI_DYNAMIC +# endif # ifndef OPENSSL_NO_COMP # define OPENSSL_NO_COMP # endif @@ -52,6 +58,9 @@ extern "C" { # ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # endif +# ifndef OPENSSL_NO_DEMOS +# define OPENSSL_NO_DEMOS +# endif # ifndef OPENSSL_NO_DEVCRYPTOENG # define OPENSSL_NO_DEVCRYPTOENG # endif @@ -64,12 +73,24 @@ extern "C" { # ifndef OPENSSL_NO_EXTERNAL_TESTS # define OPENSSL_NO_EXTERNAL_TESTS # endif +# ifndef OPENSSL_NO_FIPS_JITTER +# define OPENSSL_NO_FIPS_JITTER +# endif # ifndef OPENSSL_NO_FUZZ_AFL # define OPENSSL_NO_FUZZ_AFL # endif # ifndef OPENSSL_NO_FUZZ_LIBFUZZER # define OPENSSL_NO_FUZZ_LIBFUZZER # endif +# ifndef OPENSSL_NO_H3DEMO +# define OPENSSL_NO_H3DEMO +# endif +# ifndef OPENSSL_NO_HQINTEROP +# define OPENSSL_NO_HQINTEROP +# endif +# ifndef OPENSSL_NO_JITTER +# define OPENSSL_NO_JITTER +# endif # ifndef OPENSSL_NO_KTLS # define OPENSSL_NO_KTLS # endif @@ -82,6 +103,9 @@ extern "C" { # ifndef OPENSSL_NO_MSAN # define OPENSSL_NO_MSAN # endif +# ifndef OPENSSL_NO_PIE +# define OPENSSL_NO_PIE +# endif # ifndef OPENSSL_NO_RC5 # define OPENSSL_NO_RC5 # endif @@ -94,6 +118,12 @@ extern "C" { # ifndef OPENSSL_NO_SSL3_METHOD # define OPENSSL_NO_SSL3_METHOD # endif +# ifndef OPENSSL_NO_SSLKEYLOG +# define OPENSSL_NO_SSLKEYLOG +# endif +# ifndef OPENSSL_NO_TFO +# define OPENSSL_NO_TFO +# endif # ifndef OPENSSL_NO_TRACE # define OPENSSL_NO_TRACE # endif @@ -109,6 +139,21 @@ extern "C" { # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS # define OPENSSL_NO_WEAK_SSL_CIPHERS # endif +# ifndef OPENSSL_NO_WINSTORE +# define OPENSSL_NO_WINSTORE +# endif +# ifndef OPENSSL_NO_ZLIB +# define OPENSSL_NO_ZLIB +# endif +# ifndef OPENSSL_NO_ZLIB_DYNAMIC +# define OPENSSL_NO_ZLIB_DYNAMIC +# endif +# ifndef OPENSSL_NO_ZSTD +# define OPENSSL_NO_ZSTD +# endif +# ifndef OPENSSL_NO_ZSTD_DYNAMIC +# define OPENSSL_NO_ZSTD_DYNAMIC +# endif # ifndef OPENSSL_NO_DYNAMIC_ENGINE # define OPENSSL_NO_DYNAMIC_ENGINE # endif @@ -130,6 +175,12 @@ extern "C" { # define RC4_INT unsigned char +# if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +# define OPENSSL_NO_COMP_ALG +# else +# undef OPENSSL_NO_COMP_ALG +# endif + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/core_names.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/core_names.h new file mode 100644 index 00000000000000..e93e79a52bc910 --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/core_names.h @@ -0,0 +1,575 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/core_names.h.in + * + * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#ifndef OPENSSL_CORE_NAMES_H +# define OPENSSL_CORE_NAMES_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +/* OSSL_CIPHER_PARAM_CTS_MODE Values */ +# define OSSL_CIPHER_CTS_MODE_CS1 "CS1" +# define OSSL_CIPHER_CTS_MODE_CS2 "CS2" +# define OSSL_CIPHER_CTS_MODE_CS3 "CS3" + +/* Known CIPHER names (not a complete list) */ +# define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" + +/* Known DIGEST names (not a complete list) */ +# define OSSL_DIGEST_NAME_MD5 "MD5" +# define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" +# define OSSL_DIGEST_NAME_SHA1 "SHA1" +# define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" +# define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" +# define OSSL_DIGEST_NAME_SHA2_256_192 "SHA2-256/192" +# define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" +# define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" +# define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" +# define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" +# define OSSL_DIGEST_NAME_MD2 "MD2" +# define OSSL_DIGEST_NAME_MD4 "MD4" +# define OSSL_DIGEST_NAME_MDC2 "MDC2" +# define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" +# define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" +# define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" +# define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" +# define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" +# define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" +# define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" +# define OSSL_DIGEST_NAME_SM3 "SM3" + +/* Known MAC names */ +# define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" +# define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" +# define OSSL_MAC_NAME_CMAC "CMAC" +# define OSSL_MAC_NAME_GMAC "GMAC" +# define OSSL_MAC_NAME_HMAC "HMAC" +# define OSSL_MAC_NAME_KMAC128 "KMAC128" +# define OSSL_MAC_NAME_KMAC256 "KMAC256" +# define OSSL_MAC_NAME_POLY1305 "POLY1305" +# define OSSL_MAC_NAME_SIPHASH "SIPHASH" + +/* Known KDF names */ +# define OSSL_KDF_NAME_HKDF "HKDF" +# define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" +# define OSSL_KDF_NAME_PBKDF1 "PBKDF1" +# define OSSL_KDF_NAME_PBKDF2 "PBKDF2" +# define OSSL_KDF_NAME_SCRYPT "SCRYPT" +# define OSSL_KDF_NAME_SSHKDF "SSHKDF" +# define OSSL_KDF_NAME_SSKDF "SSKDF" +# define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" +# define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" +# define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" +# define OSSL_KDF_NAME_X963KDF "X963KDF" +# define OSSL_KDF_NAME_KBKDF "KBKDF" +# define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" +# define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" + +/* RSA padding modes */ +# define OSSL_PKEY_RSA_PAD_MODE_NONE "none" +# define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" +# define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" +# define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" +# define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" + +/* RSA pss padding salt length */ +# define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" + +/* OSSL_PKEY_PARAM_EC_ENCODING values */ +# define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" +# define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" + +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" + +# define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" + +/* PROV_SKEY well known key types */ +# define OSSL_SKEY_TYPE_GENERIC "GENERIC-SECRET" +# define OSSL_SKEY_TYPE_AES "AES" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" + +/* Provider configuration variables */ +#define OSSL_PKEY_RETAIN_SEED "pkey_retain_seed" + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +# define OSSL_ALG_PARAM_ALGORITHM_ID "algorithm-id" +# define OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS "algorithm-id-params" +# define OSSL_ALG_PARAM_CIPHER "cipher" +# define OSSL_ALG_PARAM_DIGEST "digest" +# define OSSL_ALG_PARAM_ENGINE "engine" +# define OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR "fips-indicator" +# define OSSL_ALG_PARAM_MAC "mac" +# define OSSL_ALG_PARAM_PROPERTIES "properties" +# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +# define OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props" +# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" +# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name" +# define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal" +# define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name" +# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid" +# define OSSL_CIPHER_PARAM_AEAD "aead" +# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +# define OSSL_CIPHER_PARAM_AEAD_IV_GENERATED "iv-generated" +# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" +# define OSSL_CIPHER_PARAM_AEAD_TAG "tag" +# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" +# define OSSL_CIPHER_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD "alg_id_param" +# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_CIPHER_PARAM_CTS "cts" +# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" +# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" +# define OSSL_CIPHER_PARAM_DECRYPT_ONLY "decrypt-only" +# define OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK "encrypt-check" +# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" +# define OSSL_CIPHER_PARAM_IV "iv" +# define OSSL_CIPHER_PARAM_IVLEN "ivlen" +# define OSSL_CIPHER_PARAM_KEYLEN "keylen" +# define OSSL_CIPHER_PARAM_MODE "mode" +# define OSSL_CIPHER_PARAM_NUM "num" +# define OSSL_CIPHER_PARAM_PADDING "padding" +# define OSSL_CIPHER_PARAM_PIPELINE_AEAD_TAG "pipeline-tag" +# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" +# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" +# define OSSL_CIPHER_PARAM_ROUNDS "rounds" +# define OSSL_CIPHER_PARAM_SPEED "speed" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag" +# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" +# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" +# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" +# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" +# define OSSL_CIPHER_PARAM_USE_BITS "use-bits" +# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard" +# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" +# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_DIGEST_PARAM_MICALG "micalg" +# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" +# define OSSL_DIGEST_PARAM_SIZE "size" +# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" +# define OSSL_DIGEST_PARAM_XOF "xof" +# define OSSL_DIGEST_PARAM_XOFLEN "xoflen" +# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +# define OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +# define OSSL_DRBG_PARAM_SIZE "size" +# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" +# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" +# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" +# define OSSL_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_EXCHANGE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" +# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" +# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" +# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" +# define OSSL_EXCHANGE_PARAM_PAD "pad" +# define OSSL_GEN_PARAM_ITERATION "iteration" +# define OSSL_GEN_PARAM_POTENTIAL "potential" +# define OSSL_KDF_PARAM_ARGON2_AD "ad" +# define OSSL_KDF_PARAM_ARGON2_LANES "lanes" +# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost" +# define OSSL_KDF_PARAM_ARGON2_VERSION "version" +# define OSSL_KDF_PARAM_CEK_ALG "cekalg" +# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_KDF_PARAM_CONSTANT "constant" +# define OSSL_KDF_PARAM_DATA "data" +# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean" +# define OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KDF_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_KDF_PARAM_FIPS_EMS_CHECK "ems_check" +# define OSSL_KDF_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy" +# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce" +# define OSSL_KDF_PARAM_INFO "info" +# define OSSL_KDF_PARAM_ITER "iter" +# define OSSL_KDF_PARAM_KBKDF_R "r" +# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" +# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" +# define OSSL_KDF_PARAM_KEY "key" +# define OSSL_KDF_PARAM_LABEL "label" +# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_KDF_PARAM_MAC_SIZE "maclen" +# define OSSL_KDF_PARAM_MODE "mode" +# define OSSL_KDF_PARAM_PASSWORD "pass" +# define OSSL_KDF_PARAM_PKCS12_ID "id" +# define OSSL_KDF_PARAM_PKCS5 "pkcs5" +# define OSSL_KDF_PARAM_PREFIX "prefix" +# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_KDF_PARAM_SALT "salt" +# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" +# define OSSL_KDF_PARAM_SCRYPT_N "n" +# define OSSL_KDF_PARAM_SCRYPT_P "p" +# define OSSL_KDF_PARAM_SCRYPT_R "r" +# define OSSL_KDF_PARAM_SECRET "secret" +# define OSSL_KDF_PARAM_SEED "seed" +# define OSSL_KDF_PARAM_SIZE "size" +# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" +# define OSSL_KDF_PARAM_SSHKDF_TYPE "type" +# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" +# define OSSL_KDF_PARAM_THREADS "threads" +# define OSSL_KDF_PARAM_UKM "ukm" +# define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info" +# define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info" +# define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info" +# define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo" +# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_KEM_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KEM_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KEM_PARAM_IKME "ikme" +# define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING "hs_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm" +# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len" +# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" +# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_MAC_PARAM_CUSTOM "custom" +# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" +# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" +# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" +# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" +# define OSSL_MAC_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_MAC_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_MAC_PARAM_FIPS_NO_SHORT_MAC OSSL_PROV_PARAM_NO_SHORT_MAC +# define OSSL_MAC_PARAM_IV "iv" +# define OSSL_MAC_PARAM_KEY "key" +# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_MAC_PARAM_SALT "salt" +# define OSSL_MAC_PARAM_SIZE "size" +# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" +# define OSSL_MAC_PARAM_XOF "xof" +# define OSSL_OBJECT_PARAM_DATA "data" +# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" +# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" +# define OSSL_OBJECT_PARAM_DESC "desc" +# define OSSL_OBJECT_PARAM_INPUT_TYPE "input-type" +# define OSSL_OBJECT_PARAM_REFERENCE "reference" +# define OSSL_OBJECT_PARAM_TYPE "type" +# define OSSL_PASSPHRASE_PARAM_INFO "info" +# define OSSL_PKEY_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_PKEY_PARAM_BITS "bits" +# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" +# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm" +# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" +# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +# define OSSL_PKEY_PARAM_DIST_ID "distid" +# define OSSL_PKEY_PARAM_EC_A "a" +# define OSSL_PKEY_PARAM_EC_B "b" +# define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3" +# define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp" +# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" +# define OSSL_PKEY_PARAM_EC_ENCODING "encoding" +# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +# define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_PARAM_EC_ORDER "order" +# define OSSL_PKEY_PARAM_EC_P "p" +# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +# define OSSL_PKEY_PARAM_EC_PUB_X "qx" +# define OSSL_PKEY_PARAM_EC_PUB_Y "qy" +# define OSSL_PKEY_PARAM_EC_SEED "seed" +# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE +# define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +# define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_FFC_G "g" +# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +# define OSSL_PKEY_PARAM_FFC_H "hindex" +# define OSSL_PKEY_PARAM_FFC_P "p" +# define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +# define OSSL_PKEY_PARAM_FFC_Q "q" +# define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +# define OSSL_PKEY_PARAM_FFC_SEED "seed" +# define OSSL_PKEY_PARAM_FFC_TYPE "type" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +# define OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK "digest-check" +# define OSSL_PKEY_PARAM_FIPS_KEY_CHECK "key-check" +# define OSSL_PKEY_PARAM_FIPS_SIGN_CHECK "sign-check" +# define OSSL_PKEY_PARAM_GROUP_NAME "group" +# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" +# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +# define OSSL_PKEY_PARAM_MAX_SIZE "max-size" +# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +# define OSSL_PKEY_PARAM_ML_DSA_INPUT_FORMATS "ml-dsa.input_formats" +# define OSSL_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS "ml-dsa.output_formats" +# define OSSL_PKEY_PARAM_ML_DSA_PREFER_SEED "ml-dsa.prefer_seed" +# define OSSL_PKEY_PARAM_ML_DSA_RETAIN_SEED "ml-dsa.retain_seed" +# define OSSL_PKEY_PARAM_ML_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE "ml-kem.import_pct_type" +# define OSSL_PKEY_PARAM_ML_KEM_INPUT_FORMATS "ml-kem.input_formats" +# define OSSL_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS "ml-kem.output_formats" +# define OSSL_PKEY_PARAM_ML_KEM_PREFER_SEED "ml-kem.prefer_seed" +# define OSSL_PKEY_PARAM_ML_KEM_RETAIN_SEED "ml-kem.retain_seed" +# define OSSL_PKEY_PARAM_ML_KEM_SEED "seed" +# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +# define OSSL_PKEY_PARAM_PRIV_KEY "priv" +# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_PUB_KEY "pub" +# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9" +# define OSSL_PKEY_PARAM_RSA_D "d" +# define OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ "rsa-derive-from-pq" +# define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_RSA_E "e" +# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1" +# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10" +# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2" +# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3" +# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4" +# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5" +# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6" +# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7" +# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8" +# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9" +# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1" +# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10" +# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2" +# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3" +# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4" +# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5" +# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6" +# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7" +# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8" +# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9" +# define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC +# define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_PKEY_PARAM_RSA_N "n" +# define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" +# define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1" +# define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2" +# define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1" +# define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2" +# define OSSL_PKEY_PARAM_RSA_TEST_XP "xp" +# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" +# define OSSL_PKEY_PARAM_SLH_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG +# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +# define OSSL_PROV_PARAM_BUILDINFO "buildinfo" +# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" +# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" +# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" +# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" +# define OSSL_PROV_PARAM_DSA_SIGN_DISABLED "dsa-sign-disabled" +# define OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK "ecdh-cofactor-check" +# define OSSL_PROV_PARAM_HKDF_DIGEST_CHECK "hkdf-digest-check" +# define OSSL_PROV_PARAM_HKDF_KEY_CHECK "hkdf-key-check" +# define OSSL_PROV_PARAM_HMAC_KEY_CHECK "hmac-key-check" +# define OSSL_PROV_PARAM_KBKDF_KEY_CHECK "kbkdf-key-check" +# define OSSL_PROV_PARAM_KMAC_KEY_CHECK "kmac-key-check" +# define OSSL_PROV_PARAM_NAME "name" +# define OSSL_PROV_PARAM_NO_SHORT_MAC "no-short-mac" +# define OSSL_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK "pbkdf2-lower-bound-check" +# define OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED "rsa-pkcs15-pad-disabled" +# define OSSL_PROV_PARAM_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED "rsa-sign-x931-pad-disabled" +# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" +# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" +# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" +# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" +# define OSSL_PROV_PARAM_SIGNATURE_DIGEST_CHECK "signature-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_DIGEST_CHECK "sshkdf-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_KEY_CHECK "sshkdf-key-check" +# define OSSL_PROV_PARAM_SSKDF_DIGEST_CHECK "sskdf-digest-check" +# define OSSL_PROV_PARAM_SSKDF_KEY_CHECK "sskdf-key-check" +# define OSSL_PROV_PARAM_STATUS "status" +# define OSSL_PROV_PARAM_TDES_ENCRYPT_DISABLED "tdes-encrypt-disabled" +# define OSSL_PROV_PARAM_TLS13_KDF_DIGEST_CHECK "tls13-kdf-digest-check" +# define OSSL_PROV_PARAM_TLS13_KDF_KEY_CHECK "tls13-kdf-key-check" +# define OSSL_PROV_PARAM_TLS1_PRF_DIGEST_CHECK "tls1-prf-digest-check" +# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" +# define OSSL_PROV_PARAM_TLS1_PRF_KEY_CHECK "tls1-prf-key-check" +# define OSSL_PROV_PARAM_VERSION "version" +# define OSSL_PROV_PARAM_X942KDF_KEY_CHECK "x942kdf-key-check" +# define OSSL_PROV_PARAM_X963KDF_DIGEST_CHECK "x963kdf-digest-check" +# define OSSL_PROV_PARAM_X963KDF_KEY_CHECK "x963kdf-key-check" +# define OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_RAND_PARAM_GENERATE "generate" +# define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +# define OSSL_RAND_PARAM_STATE "state" +# define OSSL_RAND_PARAM_STRENGTH "strength" +# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" +# define OSSL_SIGNATURE_PARAM_ADD_RANDOM "additional-random" +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID OSSL_PKEY_PARAM_ALGORITHM_ID +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string" +# define OSSL_SIGNATURE_PARAM_DETERMINISTIC "deterministic" +# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE +# define OSSL_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_SIGNATURE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_CHECK OSSL_PKEY_PARAM_FIPS_SIGN_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK "sign-x931-pad-check" +# define OSSL_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE "verify-message" +# define OSSL_SIGNATURE_PARAM_INSTANCE "instance" +# define OSSL_SIGNATURE_PARAM_KAT "kat" +# define OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING "message-encoding" +# define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_SIGNATURE_PARAM_MU "mu" +# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type" +# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +# define OSSL_SIGNATURE_PARAM_SIGNATURE "signature" +# define OSSL_SIGNATURE_PARAM_TEST_ENTROPY "test-entropy" +# define OSSL_SKEY_PARAM_KEY_LENGTH "key-length" +# define OSSL_SKEY_PARAM_RAW_BYTES "raw-bytes" +# define OSSL_STORE_PARAM_ALIAS "alias" +# define OSSL_STORE_PARAM_DIGEST "digest" +# define OSSL_STORE_PARAM_EXPECT "expect" +# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" +# define OSSL_STORE_PARAM_INPUT_TYPE "input-type" +# define OSSL_STORE_PARAM_ISSUER "name" +# define OSSL_STORE_PARAM_PROPERTIES "properties" +# define OSSL_STORE_PARAM_SERIAL "serial" +# define OSSL_STORE_PARAM_SUBJECT "subject" + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/crmf.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/crmf.h index 71b747ed33d239..4bf550fd47daa9 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/crmf.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/crmf.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/crmf.h.in * - * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -26,6 +26,7 @@ # include # include # include /* for GENERAL_NAME etc. */ +# include /* explicit #includes not strictly needed since implied by the above: */ # include @@ -43,9 +44,12 @@ extern "C" { # define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 # define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 - typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) + +typedef struct ossl_crmf_encryptedkey_st OSSL_CRMF_ENCRYPTEDKEY; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDKEY) + typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) @@ -77,6 +81,36 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) #define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; +void OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(OSSL_CRMF_ATTRIBUTETYPEANDVALUE *v); +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value(sk, idx) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new(cmp) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_null() ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (n)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete(sk, i) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (i))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete_ptr(sk, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_shift(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk),ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), (idx)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set(sk, idx, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), pnum) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup(sk) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) + + typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER) typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY; @@ -118,6 +152,7 @@ typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO) typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTTEMPLATE) typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS) @@ -198,12 +233,14 @@ int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, int rid, int acceptRAVerified, OSSL_LIB_CTX *libctx, const char *propq); OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); -const ASN1_INTEGER -*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const ASN1_INTEGER +*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); X509_EXTENSIONS *OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME @@ -215,10 +252,24 @@ int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl, const X509_NAME *subject, const X509_NAME *issuer, const ASN1_INTEGER *serial); -X509 -*OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, - OSSL_LIB_CTX *libctx, const char *propq, - EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDKEY_get1_encCert(const OSSL_CRMF_ENCRYPTEDKEY *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, unsigned int flags); +unsigned char +*OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *enc, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, int *outlen); +EVP_PKEY *OSSL_CRMF_ENCRYPTEDKEY_get1_pkey(const OSSL_CRMF_ENCRYPTEDKEY *encryptedKey, + X509_STORE *ts, STACK_OF(X509) *extra, EVP_PKEY *pkey, + X509 *cert, ASN1_OCTET_STRING *secret, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSG_centralkeygen_requested(const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr); +# ifndef OPENSSL_NO_CMS +OSSL_CRMF_ENCRYPTEDKEY *OSSL_CRMF_ENCRYPTEDKEY_init_envdata(CMS_EnvelopedData *envdata); +# endif # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/crypto.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/crypto.h index 3f40be6d8c61d5..fd2cfd3e5a9ac4 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/crypto.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/crypto.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/crypto.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -85,9 +85,15 @@ int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock); void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock); int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_add64(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_and(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, CRYPTO_RWLOCK *lock); int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, CRYPTO_RWLOCK *lock); /* No longer needed, so this is a no-op */ #define OPENSSL_malloc_init() while(0) continue @@ -96,6 +102,9 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_zalloc(num) \ CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_aligned_alloc(num, alignment, freeptr) \ + CRYPTO_aligned_alloc(num, alignment, freeptr, \ + OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_realloc(addr, num) \ CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_clear_realloc(addr, old_num, num) \ @@ -124,6 +133,7 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); size_t OPENSSL_strnlen(const char *str, size_t maxlen); +int OPENSSL_strtoul(const char *str, char **endptr, int base, unsigned long *num); int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength, const unsigned char *buf, size_t buflen, const char sep); @@ -160,6 +170,7 @@ const char *OpenSSL_version(int type); # define OPENSSL_FULL_VERSION_STRING 7 # define OPENSSL_MODULES_DIR 8 # define OPENSSL_CPU_INFO 9 +# define OPENSSL_WINCTX 10 const char *OPENSSL_info(int type); /* @@ -174,6 +185,7 @@ const char *OPENSSL_info(int type); # define OPENSSL_INFO_LIST_SEPARATOR 1006 # define OPENSSL_INFO_SEED_SOURCE 1007 # define OPENSSL_INFO_CPU_SETTINGS 1008 +# define OPENSSL_INFO_WINDOWS_CONTEXT 1009 int OPENSSL_issetugid(void); @@ -341,11 +353,14 @@ void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn, CRYPTO_realloc_fn *realloc_fn, CRYPTO_free_fn *free_fn); -void *CRYPTO_malloc(size_t num, const char *file, int line); -void *CRYPTO_zalloc(size_t num, const char *file, int line); -void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); -char *CRYPTO_strdup(const char *str, const char *file, int line); -char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc(size_t num, size_t align, + void **freeptr, const char *file, + int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strdup(const char *str, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); void CRYPTO_free(void *ptr, const char *file, int line); void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line); void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); @@ -354,8 +369,8 @@ void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, int CRYPTO_secure_malloc_init(size_t sz, size_t minsize); int CRYPTO_secure_malloc_done(void); -void *CRYPTO_secure_malloc(size_t num, const char *file, int line); -void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); void CRYPTO_secure_free(void *ptr, const char *file, int line); void CRYPTO_secure_clear_free(void *ptr, size_t num, const char *file, int line); @@ -376,6 +391,9 @@ void OPENSSL_cleanse(void *ptr, size_t len); # define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */ # define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */ +/* max allowed length for value of OPENSSL_MALLOC_FAILURES env var. */ +# define CRYPTO_MEM_CHECK_MAX_FS 256 + void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); # ifndef OPENSSL_NO_DEPRECATED_3_0 # define OPENSSL_mem_debug_push(info) \ @@ -551,6 +569,13 @@ int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file); void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); +int OSSL_LIB_CTX_get_conf_diagnostics(OSSL_LIB_CTX *ctx); +void OSSL_LIB_CTX_set_conf_diagnostics(OSSL_LIB_CTX *ctx, int value); + +void OSSL_sleep(uint64_t millis); + + +void *OSSL_LIB_CTX_get_data(OSSL_LIB_CTX *ctx, int index); # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/ct.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/ct.h index b6dd8c3547710a..e6dd1192a4e0b3 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/ct.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/ct.h @@ -133,7 +133,7 @@ typedef enum { */ CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); - + /* * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library * context and property query string is used. diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/err.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/err.h index 2abf2483488181..daca18e7b757b0 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/err.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/err.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -372,7 +372,7 @@ typedef struct ERR_string_data_st { } ERR_STRING_DATA; DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); -#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp))) +#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp)), lh_ERR_STRING_DATA_hash_thunk, lh_ERR_STRING_DATA_comp_thunk, lh_ERR_STRING_DATA_doall_thunk, lh_ERR_STRING_DATA_doall_arg_thunk)) #define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) @@ -496,6 +496,14 @@ int ERR_get_next_error_library(void); int ERR_set_mark(void); int ERR_pop_to_mark(void); int ERR_clear_last_mark(void); +int ERR_count_to_mark(void); +int ERR_pop(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); #ifdef __cplusplus } diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/fipskey.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/fipskey.h index 42ba014b313ba8..929db18c678364 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/fipskey.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/fipskey.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/fipskey.h.in * - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -29,6 +29,11 @@ extern "C" { */ #define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" +/* + * The FIPS provider vendor name, as a string. + */ +#define FIPS_VENDOR "OpenSSL FIPS Provider" + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/lhash.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/lhash.h index 39dd6254acdeb6..62c55b20fd9716 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/lhash.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/lhash.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -24,6 +24,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -31,9 +34,13 @@ extern "C" { typedef struct lhash_node_st OPENSSL_LH_NODE; typedef int (*OPENSSL_LH_COMPFUNC) (const void *, const void *); +typedef int (*OPENSSL_LH_COMPFUNCTHUNK) (const void *, const void *, OPENSSL_LH_COMPFUNC cfn); typedef unsigned long (*OPENSSL_LH_HASHFUNC) (const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNCTHUNK) (const void *, OPENSSL_LH_HASHFUNC hfn); typedef void (*OPENSSL_LH_DOALL_FUNC) (void *); +typedef void (*OPENSSL_LH_DOALL_FUNC_THUNK) (void *, OPENSSL_LH_DOALL_FUNC doall); typedef void (*OPENSSL_LH_DOALL_FUNCARG) (void *, void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG_THUNK) (void *, void *, OPENSSL_LH_DOALL_FUNCARG doall); typedef struct lhash_st OPENSSL_LHASH; /* @@ -79,26 +86,40 @@ typedef struct lhash_st OPENSSL_LHASH; int OPENSSL_LH_error(OPENSSL_LHASH *lh); OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +OPENSSL_LHASH *OPENSSL_LH_set_thunks(OPENSSL_LHASH *lh, + OPENSSL_LH_HASHFUNCTHUNK hw, + OPENSSL_LH_COMPFUNCTHUNK cw, + OPENSSL_LH_DOALL_FUNC_THUNK daw, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw); void OPENSSL_LH_free(OPENSSL_LHASH *lh); void OPENSSL_LH_flush(OPENSSL_LHASH *lh); void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); -void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg_thunk(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw, + OPENSSL_LH_DOALL_FUNCARG fn, void *arg); + unsigned long OPENSSL_LH_strhash(const char *c); unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); # ifndef OPENSSL_NO_STDIO -void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# endif +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # endif -void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define _LHASH OPENSSL_LHASH @@ -129,110 +150,190 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); /* Helper macro for internal use */ # define DEFINE_LHASH_OF_INTERNAL(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ typedef void (*lh_##type##_doallfunc)(type *a); \ - static ossl_unused ossl_inline type *ossl_check_##type##_lh_plain_type(type *ptr) \ + static ossl_inline unsigned long lh_##type##_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static ossl_inline int lh_##type##_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_inline void lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_inline void lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline type *\ + ossl_check_##type##_lh_plain_type(type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const type *ossl_check_const_##type##_lh_plain_type(const type *ptr) \ + static ossl_unused ossl_inline const type * \ + ossl_check_const_##type##_lh_plain_type(const type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const OPENSSL_LHASH *ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline const OPENSSL_LHASH * \ + ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ { \ return (const OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LHASH *ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline OPENSSL_LHASH * \ + ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ { \ return (OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ + static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC \ + ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ { \ return (OPENSSL_LH_COMPFUNC)cmp; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ + static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC \ + ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ { \ return (OPENSSL_LH_HASHFUNC)hfn; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ + static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC \ + ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ { \ return (OPENSSL_LH_DOALL_FUNC)dfn; \ } \ LHASH_OF(type) -# define DEFINE_LHASH_OF(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ - static ossl_unused ossl_inline LHASH_OF(type) *lh_##type##_new(unsigned long (*hfn)(const type *), \ - int (*cfn)(const type *, const type *)) \ +# ifndef OPENSSL_NO_DEPRECATED_3_1 +# define DEFINE_LHASH_OF_DEPRECATED(type) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ - return (LHASH_OF(type) *) \ - OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ - static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } +# else +# define DEFINE_LHASH_OF_DEPRECATED(type) +# endif + +# define DEFINE_LHASH_OF_EX(type) \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ + static unsigned long \ + lh_##type##_hfn_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static int lh_##type##_cfn_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_free(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_flush(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_flush(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ { \ return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline int \ + lh_##type##_error(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_num_items(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_get_down_load(LHASH_OF(type) *lh) \ { \ - OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ { \ - OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ } \ - static ossl_unused ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ { \ - OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ { \ - return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ } \ - static ossl_unused ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall(LHASH_OF(type) *lh, void (*doall)(type *)) \ { \ - OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ - void (*doall)(type *)) \ + static ossl_unused ossl_inline LHASH_OF(type) * \ + lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ { \ - OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \ + lh_##type##_hfn_thunk, lh_##type##_cfn_thunk, \ + lh_##type##_doall_thunk, \ + lh_##type##_doall_arg_thunk); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall_arg(LHASH_OF(type) *lh, \ - void (*doallarg)(type *, void *), \ - void *arg) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg(LHASH_OF(type) *lh, \ + void (*doallarg)(type *, void *), void *arg) \ { \ OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ } \ LHASH_OF(type) +# define DEFINE_LHASH_OF(type) \ + DEFINE_LHASH_OF_EX(type); \ + DEFINE_LHASH_OF_DEPRECATED(type) \ + LHASH_OF(type) + #define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ int_implement_lhash_doall(type, argtype, const type) @@ -240,17 +341,26 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); int_implement_lhash_doall(type, argtype, type) #define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype##_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG fn) \ + { \ + void (*fn_conv)(cbargtype *, argtype *) = (void (*)(cbargtype *, argtype *))fn; \ + fn_conv((cbargtype *)node, (argtype *)arg); \ + } \ static ossl_unused ossl_inline void \ lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ void (*fn)(cbargtype *, argtype *), \ argtype *arg) \ { \ - OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNCARG)fn, (void *)arg); \ + OPENSSL_LH_doall_arg_thunk((OPENSSL_LHASH *)lh, \ + lh_##type##_doall_##argtype##_thunk, \ + (OPENSSL_LH_DOALL_FUNCARG)fn, \ + (void *)arg); \ } \ LHASH_OF(type) DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); -#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp)), lh_OPENSSL_STRING_hash_thunk, lh_OPENSSL_STRING_comp_thunk, lh_OPENSSL_STRING_doall_thunk, lh_OPENSSL_STRING_doall_arg_thunk)) #define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) @@ -265,7 +375,7 @@ DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); #define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) #define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); -#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp)), lh_OPENSSL_CSTRING_hash_thunk, lh_OPENSSL_CSTRING_comp_thunk, lh_OPENSSL_CSTRING_doall_thunk, lh_OPENSSL_CSTRING_doall_arg_thunk)) #define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/opensslv.h index 5fb5bc63056fe0..71a357701fd5e3 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/opensslv.h @@ -28,8 +28,8 @@ extern "C" { * These macros express version number MAJOR.MINOR.PATCH exactly */ # define OPENSSL_VERSION_MAJOR 3 -# define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 17 +# define OPENSSL_VERSION_MINOR 5 +# define OPENSSL_VERSION_PATCH 2 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.17" -# define OPENSSL_FULL_VERSION_STR "3.0.17" +# define OPENSSL_VERSION_STR "3.5.2" +# define OPENSSL_FULL_VERSION_STR "3.5.2" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "1 Jul 2025" +# define OPENSSL_RELEASE_DATE "5 Aug 2025" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.17 1 Jul 2025" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.2 5 Aug 2025" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/pkcs12.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/pkcs12.h index c5e0cab06491ec..0809645dad0bbf 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/pkcs12.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/pkcs12.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/pkcs12.h.in * - * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -41,6 +44,7 @@ extern "C" { # define PKCS12_MAC_KEY_LENGTH 20 +/* The macro is expected to be used only internally. Kept for backwards compatibility. */ # define PKCS12_SALT_LEN 8 /* It's not clear if these are actually needed... */ @@ -130,7 +134,9 @@ int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); const STACK_OF(PKCS12_SAFEBAG) * PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); @@ -218,6 +224,7 @@ ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); const STACK_OF(X509_ATTRIBUTE) * PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, const char *pass, int passlen, const unsigned char *in, int inlen, @@ -285,6 +292,9 @@ int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, unsigned char *salt, int saltlen, int iter, const EVP_MD *md_type); +int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type, const char *prf_md_name); int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, int saltlen, const EVP_MD *md_type); unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, @@ -305,6 +315,7 @@ DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) void PKCS12_PBE_add(void); int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype); @@ -312,6 +323,11 @@ PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype, OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/pkcs7.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/pkcs7.h index 0ce79bf4fa160e..fa68462aff973b 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/pkcs7.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/pkcs7.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/pkcs7.h.in * - * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -28,6 +28,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -131,8 +134,8 @@ SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INF typedef struct pkcs7_signed_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; struct pkcs7_st *contents; } PKCS7_SIGNED; @@ -158,8 +161,8 @@ typedef struct pkcs7_enveloped_st { typedef struct pkcs7_signedandenveloped_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; PKCS7_ENC_CONTENT *enc_data; STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; @@ -200,7 +203,7 @@ typedef struct pkcs7_st { /* NID_pkcs7_data */ ASN1_OCTET_STRING *data; /* NID_pkcs7_signed */ - PKCS7_SIGNED *sign; + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ /* NID_pkcs7_enveloped */ PKCS7_ENVELOPE *enveloped; /* NID_pkcs7_signedAndEnveloped */ @@ -341,13 +344,13 @@ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, const EVP_MD *dgst); int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); -int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); -int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); int PKCS7_content_new(PKCS7 *p7, int nid); int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, - X509 *x509); + X509 *signer); BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/ssl.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/ssl.h index 3df725c56d6c5e..7e3d89c7ef3dc9 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/ssl.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/ssl.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/ssl.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -24,6 +24,7 @@ # endif # include +# include # include # include # include @@ -42,6 +43,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -231,10 +235,8 @@ typedef struct ssl_cipher_st SSL_CIPHER; typedef struct ssl_session_st SSL_SESSION; typedef struct tls_sigalgs_st TLS_SIGALGS; typedef struct ssl_conf_ctx_st SSL_CONF_CTX; -typedef struct ssl_comp_st SSL_COMP; STACK_OF(SSL_CIPHER); -STACK_OF(SSL_COMP); /* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ typedef struct srtp_protection_profile_st { @@ -278,28 +280,31 @@ typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, /* Extension context codes */ /* This extension is only allowed in TLS */ -#define SSL_EXT_TLS_ONLY 0x0001 +#define SSL_EXT_TLS_ONLY 0x00001 /* This extension is only allowed in DTLS */ -#define SSL_EXT_DTLS_ONLY 0x0002 +#define SSL_EXT_DTLS_ONLY 0x00002 /* Some extensions may be allowed in DTLS but we don't implement them for it */ -#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 /* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ -#define SSL_EXT_SSL3_ALLOWED 0x0008 +#define SSL_EXT_SSL3_ALLOWED 0x00008 /* Extension is only defined for TLS1.2 and below */ -#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 /* Extension is only defined for TLS1.3 and above */ -#define SSL_EXT_TLS1_3_ONLY 0x0020 +#define SSL_EXT_TLS1_3_ONLY 0x00020 /* Ignore this extension during parsing if we are resuming */ -#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 -#define SSL_EXT_CLIENT_HELLO 0x0080 +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 /* Really means TLS1.2 or below */ -#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 -#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 -#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 -#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 -#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 -#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 -#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 /* Typedefs for handling custom extensions */ @@ -404,7 +409,7 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); */ # define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_BIT(22) /* - * If set, a server will allow a client to issue a SSLv3.0 version + * If set, a server will allow a client to issue an SSLv3.0 version * number as latest version supported in the premaster secret, even when * TLSv1.0 (version 3.1) was announced in the client hello. Normally * this is forbidden to prevent version rollback attacks. @@ -430,6 +435,19 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); * interoperability with CryptoPro CSP 3.x */ # define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +# define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +# define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) + /* Enable KTLS TX zerocopy on Linux */ +# define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) + +#define SSL_OP_PREFER_NO_DHE_KEX SSL_OP_BIT(35) /* * Option "collections." @@ -574,6 +592,8 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); # define CERT_PKEY_CERT_TYPE 0x400 /* Cert chain suitable to Suite B */ # define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +# define CERT_PKEY_RPK 0x1000 # define SSL_CONF_FLAG_CMDLINE 0x1 # define SSL_CONF_FLAG_FILE 0x2 @@ -965,6 +985,7 @@ uint32_t SSL_get_recv_max_early_data(const SSL *s); # include /* This is mostly sslv3 with a few tweaks */ # include /* Datagram TLS */ # include /* Support for the use_srtp extension */ +# include #ifdef __cplusplus extern "C" { @@ -1000,32 +1021,6 @@ SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) #define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) #define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) #define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) -SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) -#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) -#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) -#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) -#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) -#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) -#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) -#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) -#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) -#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) -#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) -#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) /* compatibility */ @@ -1066,6 +1061,7 @@ typedef enum { DTLS_ST_CR_HELLO_VERIFY_REQUEST, TLS_ST_CR_SRVR_HELLO, TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, TLS_ST_CR_CERT_STATUS, TLS_ST_CR_KEY_EXCH, TLS_ST_CR_CERT_REQ, @@ -1075,6 +1071,7 @@ typedef enum { TLS_ST_CR_FINISHED, TLS_ST_CW_CLNT_HELLO, TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, TLS_ST_CW_KEY_EXCH, TLS_ST_CW_CERT_VRFY, TLS_ST_CW_CHANGE, @@ -1085,10 +1082,12 @@ typedef enum { DTLS_ST_SW_HELLO_VERIFY_REQUEST, TLS_ST_SW_SRVR_HELLO, TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, TLS_ST_SW_KEY_EXCH, TLS_ST_SW_CERT_REQ, TLS_ST_SW_SRVR_DONE, TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, TLS_ST_SR_KEY_EXCH, TLS_ST_SR_CERT_VRFY, TLS_ST_SR_NEXT_PROTO, @@ -1380,9 +1379,13 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_CTRL_GET_SIGNATURE_NID 132 # define SSL_CTRL_GET_TMP_KEY 133 # define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +# define SSL_CTRL_GET_IANA_GROUPS 135 # define SSL_CTRL_SET_RETRY_VERIFY 136 # define SSL_CTRL_GET_VERIFY_CERT_STORE 137 # define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +# define SSL_CTRL_GET0_IMPLEMENTED_GROUPS 139 +# define SSL_CTRL_GET_SIGNATURE_NAME 140 +# define SSL_CTRL_GET_PEER_SIGNATURE_NAME 141 # define SSL_CERT_SET_FIRST 1 # define SSL_CERT_SET_NEXT 2 # define SSL_CERT_SET_SERVER 3 @@ -1485,10 +1488,15 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get1_groups(s, glist) \ SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_IANA_GROUPS,0,(uint16_t **)(plst)) # define SSL_CTX_set1_groups(ctx, glist, glistlen) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) # define SSL_CTX_set1_groups_list(ctx, s) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s)) +# define SSL_CTX_get0_implemented_groups(ctx, all, out) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET0_IMPLEMENTED_GROUPS, all, \ + (STACK_OF(OPENSSL_CSTRING) *)(out)) # define SSL_set1_groups(s, glist, glistlen) \ SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist)) # define SSL_set1_groups_list(s, str) \ @@ -1520,8 +1528,12 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) (char *)(clist)) # define SSL_set1_client_certificate_types(s, clist, clistlen) \ SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist)) +# define SSL_get0_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn) +# define SSL_get0_peer_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_peer_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) # define SSL_get_peer_tmp_key(s, pk) \ @@ -1549,6 +1561,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get_max_proto_version(s) \ SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +const char *SSL_get0_group_name(SSL *s); const char *SSL_group_to_name(SSL *s, int id); /* Backwards compatibility, original 1.1.0 names */ @@ -1613,7 +1626,11 @@ void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); __owur int SSL_want(const SSL *s); __owur int SSL_clear(SSL *s); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()") void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); +#endif +void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm); __owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); __owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); @@ -1725,13 +1742,21 @@ __owur const char *SSL_state_string(const SSL *s); __owur const char *SSL_rstate_string(const SSL *s); __owur const char *SSL_state_string_long(const SSL *s); __owur const char *SSL_rstate_string_long(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_get_time_ex()") __owur long SSL_SESSION_get_time(const SSL_SESSION *s); +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_set_time_ex()") __owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +#endif __owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); __owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); __owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); __owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); +__owur time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s); +__owur time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t); + __owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); __owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, @@ -1783,6 +1808,9 @@ __owur int SSL_has_matching_session_id(const SSL *s, unsigned int id_len); SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); # ifdef OPENSSL_X509_H __owur X509 *SSL_get0_peer_certificate(const SSL *s); @@ -1840,6 +1868,8 @@ __owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, SSL *SSL_new(SSL_CTX *ctx); int SSL_up_ref(SSL *s); int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); __owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, unsigned int sid_ctx_len); @@ -1848,8 +1878,8 @@ __owur int SSL_set_purpose(SSL *ssl, int purpose); __owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); __owur int SSL_set_trust(SSL *ssl, int trust); -__owur int SSL_set1_host(SSL *s, const char *hostname); -__owur int SSL_add1_host(SSL *s, const char *hostname); +__owur int SSL_set1_host(SSL *s, const char *host); +__owur int SSL_add1_host(SSL *s, const char *host); __owur const char *SSL_get0_peername(SSL *s); void SSL_set_hostflags(SSL *s, unsigned int flags); @@ -1924,6 +1954,11 @@ OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg); void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, void *arg); +typedef int (*SSL_new_pending_conn_cb_fn) (SSL_CTX *ctx, SSL *new_ssl, + void *arg); +void SSL_CTX_set_new_pending_conn_cb(SSL_CTX *c, SSL_new_pending_conn_cb_fn cb, + void *arg); + int SSL_client_hello_isv2(SSL *s); unsigned int SSL_client_hello_get0_legacy_version(SSL *s); size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); @@ -1932,6 +1967,8 @@ size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); size_t SSL_client_hello_get0_compression_methods(SSL *s, const unsigned char **out); int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); int SSL_client_hello_get0_ext(SSL *s, unsigned int type, const unsigned char **out, size_t *outlen); @@ -1978,6 +2015,12 @@ long SSL_callback_ctrl(SSL *, int, void (*)(void)); long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); +# define SSL_WRITE_FLAG_CONCLUDE (1U << 0) + +__owur int SSL_write_ex2(SSL *s, const void *buf, size_t num, + uint64_t flags, + size_t *written); + # define SSL_EARLY_DATA_NOT_SENT 0 # define SSL_EARLY_DATA_REJECTED 1 # define SSL_EARLY_DATA_ACCEPTED 2 @@ -1986,6 +2029,7 @@ __owur int SSL_get_early_data_status(const SSL *s); __owur int SSL_get_error(const SSL *s, int ret_code); __owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); /* This sets the 'default' SSL version that SSL_new() will create */ # ifndef OPENSSL_NO_DEPRECATED_3_0 @@ -2281,6 +2325,8 @@ void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); +int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size, + size_t hs_block_size); int SSL_set_record_padding_callback(SSL *ssl, size_t (*cb) (SSL *ssl, int type, @@ -2288,12 +2334,255 @@ int SSL_set_record_padding_callback(SSL *ssl, void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); void *SSL_get_record_padding_callback_arg(const SSL *ssl); int SSL_set_block_padding(SSL *ssl, size_t block_size); - +int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size, + size_t hs_block_size); int SSL_set_num_tickets(SSL *s, size_t num_tickets); size_t SSL_get_num_tickets(const SSL *s); int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +__owur int SSL_is_listener(SSL *ssl); +__owur SSL *SSL_get0_listener(SSL *s); +#define SSL_LISTENER_FLAG_NO_VALIDATE (1UL << 1) +__owur SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags); +__owur SSL *SSL_new_listener_from(SSL *ssl, uint64_t flags); +__owur SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags); +#define SSL_ACCEPT_CONNECTION_NO_BLOCK (1UL << 0) +__owur SSL *SSL_accept_connection(SSL *ssl, uint64_t flags); +__owur size_t SSL_get_accept_connection_queue_len(SSL *ssl); +__owur int SSL_listen(SSL *ssl); + +__owur int SSL_is_domain(SSL *s); +__owur SSL *SSL_get0_domain(SSL *s); +__owur SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags); + +#define SSL_DOMAIN_FLAG_SINGLE_THREAD (1U << 0) +#define SSL_DOMAIN_FLAG_MULTI_THREAD (1U << 1) +#define SSL_DOMAIN_FLAG_THREAD_ASSISTED (1U << 2) +#define SSL_DOMAIN_FLAG_BLOCKING (1U << 3) +#define SSL_DOMAIN_FLAG_LEGACY_BLOCKING (1U << 4) + +__owur int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t domain_flags); +__owur int SSL_CTX_get_domain_flags(const SSL_CTX *ctx, uint64_t *domain_flags); +__owur int SSL_get_domain_flags(const SSL *ssl, uint64_t *domain_flags); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +# ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +# endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + +# define SSL_VALUE_CLASS_GENERIC 0 +# define SSL_VALUE_CLASS_FEATURE_REQUEST 1 +# define SSL_VALUE_CLASS_FEATURE_PEER_REQUEST 2 +# define SSL_VALUE_CLASS_FEATURE_NEGOTIATED 3 + +# define SSL_VALUE_NONE 0 +# define SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL 1 +# define SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL 2 +# define SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL 3 +# define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL 4 +# define SSL_VALUE_QUIC_IDLE_TIMEOUT 5 +# define SSL_VALUE_EVENT_HANDLING_MODE 6 +# define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7 +# define SSL_VALUE_STREAM_WRITE_BUF_USED 8 +# define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9 + +# define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0 +# define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1 +# define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT 2 + +int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v); +int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v); + +# define SSL_get_generic_value_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_set_generic_value_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_get_feature_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_set_feature_request_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_get_feature_peer_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, (id), (v)) +# define SSL_get_feature_negotiated_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_NEGOTIATED, (id), (v)) + +# define SSL_get_quic_stream_bidi_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_bidi_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, \ + (value)) + +# define SSL_get_event_handling_mode(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) +# define SSL_set_event_handling_mode(ssl, value) \ + SSL_set_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) + +# define SSL_get_stream_write_buf_size(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_SIZE, \ + (value)) +# define SSL_get_stream_write_buf_used(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_USED, \ + (value)) +# define SSL_get_stream_write_buf_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_AVAIL, \ + (value)) + +# define SSL_POLL_EVENT_NONE 0 + +# define SSL_POLL_EVENT_F (1U << 0) /* F (Failure) */ +# define SSL_POLL_EVENT_EL (1U << 1) /* EL (Exception on Listener) */ +# define SSL_POLL_EVENT_EC (1U << 2) /* EC (Exception on Conn) */ +# define SSL_POLL_EVENT_ECD (1U << 3) /* ECD (Exception on Conn Drained) */ +# define SSL_POLL_EVENT_ER (1U << 4) /* ER (Exception on Read) */ +# define SSL_POLL_EVENT_EW (1U << 5) /* EW (Exception on Write) */ +# define SSL_POLL_EVENT_R (1U << 6) /* R (Readable) */ +# define SSL_POLL_EVENT_W (1U << 7) /* W (Writable) */ +# define SSL_POLL_EVENT_IC (1U << 8) /* IC (Incoming Connection) */ +# define SSL_POLL_EVENT_ISB (1U << 9) /* ISB (Incoming Stream: Bidi) */ +# define SSL_POLL_EVENT_ISU (1U << 10) /* ISU (Incoming Stream: Uni) */ +# define SSL_POLL_EVENT_OSB (1U << 11) /* OSB (Outgoing Stream: Bidi) */ +# define SSL_POLL_EVENT_OSU (1U << 12) /* OSU (Outgoing Stream: Uni) */ + +# define SSL_POLL_EVENT_RW (SSL_POLL_EVENT_R | SSL_POLL_EVENT_W) +# define SSL_POLL_EVENT_RE (SSL_POLL_EVENT_R | SSL_POLL_EVENT_ER) +# define SSL_POLL_EVENT_WE (SSL_POLL_EVENT_W | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_RWE (SSL_POLL_EVENT_RE | SSL_POLL_EVENT_WE) +# define SSL_POLL_EVENT_E (SSL_POLL_EVENT_EL | SSL_POLL_EVENT_EC \ + | SSL_POLL_EVENT_ER | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_IS (SSL_POLL_EVENT_ISB | SSL_POLL_EVENT_ISU) +# define SSL_POLL_EVENT_ISE (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_EC) +# define SSL_POLL_EVENT_I (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_IC) +# define SSL_POLL_EVENT_OS (SSL_POLL_EVENT_OSB | SSL_POLL_EVENT_OSU) +# define SSL_POLL_EVENT_OSE (SSL_POLL_EVENT_OS | SSL_POLL_EVENT_EC) + +typedef struct ssl_poll_item_st { + BIO_POLL_DESCRIPTOR desc; + uint64_t events, revents; +} SSL_POLL_ITEM; + +# define SSL_POLL_FLAG_NO_HANDLE_EVENTS (1U << 0) + +__owur int SSL_poll(SSL_POLL_ITEM *items, + size_t num_items, + size_t stride, + const struct timeval *timeout, + uint64_t flags, + size_t *result_count); + +static ossl_inline ossl_unused BIO_POLL_DESCRIPTOR +SSL_as_poll_descriptor(SSL *s) +{ + BIO_POLL_DESCRIPTOR d; + + d.type = BIO_POLL_DESCRIPTOR_TYPE_SSL; + d.value.ssl = s; + return d; +} + # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define SSL_cache_hit(s) SSL_session_reused(s) # endif @@ -2593,6 +2882,51 @@ void SSL_set_allow_early_data_cb(SSL *s, const char *OSSL_default_cipher_list(void); const char *OSSL_default_ciphersuites(void); +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + +/* + * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used. + */ +# define OSSL_RECORD_PROTECTION_LEVEL_NONE 0 +# define OSSL_RECORD_PROTECTION_LEVEL_EARLY 1 +# define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE 2 +# define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3 + +int SSL_set_quic_tls_cbs(SSL *s, const OSSL_DISPATCH *qtdis, void *arg); +int SSL_set_quic_tls_transport_params(SSL *s, + const unsigned char *params, + size_t params_len); + +int SSL_set_quic_tls_early_data_enabled(SSL *s, int enabled); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/x509.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/x509.h index 1f7755e5b69c75..d013458c226461 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/x509.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/x509.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -40,6 +40,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -162,16 +165,24 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) # define X509_FILETYPE_ASN1 2 # define X509_FILETYPE_DEFAULT 3 -# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 -# define X509v3_KU_NON_REPUDIATION 0x0040 -# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 -# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 -# define X509v3_KU_KEY_AGREEMENT 0x0008 -# define X509v3_KU_KEY_CERT_SIGN 0x0004 -# define X509v3_KU_CRL_SIGN 0x0002 -# define X509v3_KU_ENCIPHER_ONLY 0x0001 -# define X509v3_KU_DECIPHER_ONLY 0x8000 -# define X509v3_KU_UNDEF 0xffff +/*- + * : + * The KeyUsage BITSTRING is treated as a little-endian integer, hence bit `0` + * is 0x80, while bit `7` is 0x01 (the LSB of the integer value), bit `8` is + * then the MSB of the second octet, or 0x8000. + */ +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 /* (0) */ +# define X509v3_KU_NON_REPUDIATION 0x0040 /* (1) */ +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 /* (2) */ +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 /* (3) */ +# define X509v3_KU_KEY_AGREEMENT 0x0008 /* (4) */ +# define X509v3_KU_KEY_CERT_SIGN 0x0004 /* (5) */ +# define X509v3_KU_CRL_SIGN 0x0002 /* (6) */ +# define X509v3_KU_ENCIPHER_ONLY 0x0001 /* (7) */ +# define X509v3_KU_DECIPHER_ONLY 0x8000 /* (8) */ +# ifndef OPENSSL_NO_DEPRECATED_3_4 +# define X509v3_KU_UNDEF 0xffff /* vestigial, not used */ +# endif struct X509_algor_st { ASN1_OBJECT *algorithm; @@ -462,7 +473,12 @@ typedef struct PBKDF2PARAM_st { X509_ALGOR *prf; } PBKDF2PARAM; -#ifndef OPENSSL_NO_SCRYPT +typedef struct { + X509_ALGOR *keyDerivationFunc; + X509_ALGOR *messageAuthScheme; +} PBMAC1PARAM; + +# ifndef OPENSSL_NO_SCRYPT typedef struct SCRYPT_PARAMS_st { ASN1_OCTET_STRING *salt; ASN1_INTEGER *costParameter; @@ -470,7 +486,7 @@ typedef struct SCRYPT_PARAMS_st { ASN1_INTEGER *parallelizationParameter; ASN1_INTEGER *keyLength; } SCRYPT_PARAMS; -#endif +# endif #ifdef __cplusplus } @@ -603,6 +619,8 @@ EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); # endif @@ -651,6 +669,8 @@ EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); DECLARE_ASN1_DUP_FUNCTION(X509) @@ -884,12 +904,12 @@ int X509_REQ_get_signature_nid(const X509_REQ *req); int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); -EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); int X509_REQ_extension_nid(int nid); int *X509_REQ_get_extension_nids(void); void X509_REQ_set_extension_nids(int *nids); -STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(OSSL_FUTURE_CONST X509_REQ *req); int X509_REQ_add_extensions_nid(X509_REQ *req, const STACK_OF(X509_EXTENSION) *exts, int nid); int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); @@ -950,13 +970,14 @@ X509_REVOKED_get0_extensions(const X509_REVOKED *r); X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); -int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); -int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey); +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); int X509_chain_check_suiteb(int *perror_depth, X509 *x, STACK_OF(X509) *chain, unsigned long flags); int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); @@ -1077,6 +1098,8 @@ X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, X509_EXTENSION *ex, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_extensions(STACK_OF(X509_EXTENSION) **target, + const STACK_OF(X509_EXTENSION) *exts); int X509_get_ext_count(const X509 *x); int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); @@ -1198,9 +1221,10 @@ X509 *X509_find_by_subject(STACK_OF(X509) *sk, const X509_NAME *name); DECLARE_ASN1_FUNCTIONS(PBEPARAM) DECLARE_ASN1_FUNCTIONS(PBE2PARAM) DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) -#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(PBMAC1PARAM) +# ifndef OPENSSL_NO_SCRYPT DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) -#endif +# endif int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, const unsigned char *salt, int saltlen); @@ -1237,6 +1261,7 @@ X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, int prf_nid, int keylen, OSSL_LIB_CTX *libctx); +PBKDF2PARAM *PBMAC1_get1_pbkdf2_param(const X509_ALGOR *macalg); /* PKCS#8 utilities */ DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) @@ -1262,6 +1287,8 @@ int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len); +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, int ptype, void *pval, unsigned char *penc, int penclen); diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/x509_acert.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/x509_acert.h new file mode 100644 index 00000000000000..9dde625677f9a9 --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/x509_acert.h @@ -0,0 +1,294 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/x509_acert.h.in + * + * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_X509_ACERT_H +# define OPENSSL_X509_ACERT_H +# pragma once + +# include +# include +# include + +typedef struct X509_acert_st X509_ACERT; +typedef struct X509_acert_info_st X509_ACERT_INFO; +typedef struct ossl_object_digest_info_st OSSL_OBJECT_DIGEST_INFO; +typedef struct ossl_issuer_serial_st OSSL_ISSUER_SERIAL; +typedef struct X509_acert_issuer_v2form_st X509_ACERT_ISSUER_V2FORM; + +DECLARE_ASN1_FUNCTIONS(X509_ACERT) +DECLARE_ASN1_DUP_FUNCTION(X509_ACERT) +DECLARE_ASN1_ITEM(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_OBJECT_DIGEST_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_ISSUER_SERIAL) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_ISSUER_V2FORM) + +# ifndef OPENSSL_NO_STDIO +X509_ACERT *d2i_X509_ACERT_fp(FILE *fp, X509_ACERT **acert); +int i2d_X509_ACERT_fp(FILE *fp, const X509_ACERT *acert); +# endif + +DECLARE_PEM_rw(X509_ACERT, X509_ACERT) + +X509_ACERT *d2i_X509_ACERT_bio(BIO *bp, X509_ACERT **acert); +int i2d_X509_ACERT_bio(BIO *bp, const X509_ACERT *acert); + +int X509_ACERT_sign(X509_ACERT *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_ACERT_sign_ctx(X509_ACERT *x, EVP_MD_CTX *ctx); +int X509_ACERT_verify(X509_ACERT *a, EVP_PKEY *r); + +# define X509_ACERT_VERSION_2 1 + +const GENERAL_NAMES *X509_ACERT_get0_holder_entityName(const X509_ACERT *x); +const OSSL_ISSUER_SERIAL *X509_ACERT_get0_holder_baseCertId(const X509_ACERT *x); +const OSSL_OBJECT_DIGEST_INFO * X509_ACERT_get0_holder_digest(const X509_ACERT *x); +const X509_NAME *X509_ACERT_get0_issuerName(const X509_ACERT *x); +long X509_ACERT_get_version(const X509_ACERT *x); +void X509_ACERT_get0_signature(const X509_ACERT *x, + const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_ACERT_get_signature_nid(const X509_ACERT *x); +const X509_ALGOR *X509_ACERT_get0_info_sigalg(const X509_ACERT *x); +const ASN1_INTEGER *X509_ACERT_get0_serialNumber(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notBefore(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notAfter(const X509_ACERT *x); +const ASN1_BIT_STRING *X509_ACERT_get0_issuerUID(const X509_ACERT *x); + +int X509_ACERT_print(BIO *bp, X509_ACERT *x); +int X509_ACERT_print_ex(BIO *bp, X509_ACERT *x, unsigned long nmflags, + unsigned long cflag); + +int X509_ACERT_get_attr_count(const X509_ACERT *x); +int X509_ACERT_get_attr_by_NID(const X509_ACERT *x, int nid, int lastpos); +int X509_ACERT_get_attr_by_OBJ(const X509_ACERT *x, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_ACERT_get_attr(const X509_ACERT *x, int loc); +X509_ATTRIBUTE *X509_ACERT_delete_attr(X509_ACERT *x, int loc); + +void *X509_ACERT_get_ext_d2i(const X509_ACERT *x, int nid, int *crit, int *idx); +int X509_ACERT_add1_ext_i2d(X509_ACERT *x, int nid, void *value, int crit, + unsigned long flags); +const STACK_OF(X509_EXTENSION) *X509_ACERT_get0_extensions(const X509_ACERT *x); + +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY 0 +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY_CERT 1 +# define OSSL_OBJECT_DIGEST_INFO_OTHER 2 /* must not be used in RFC 5755 profile */ +int X509_ACERT_set_version(X509_ACERT *x, long version); +void X509_ACERT_set0_holder_entityName(X509_ACERT *x, GENERAL_NAMES *name); +void X509_ACERT_set0_holder_baseCertId(X509_ACERT *x, OSSL_ISSUER_SERIAL *isss); +void X509_ACERT_set0_holder_digest(X509_ACERT *x, + OSSL_OBJECT_DIGEST_INFO *dinfo); + +int X509_ACERT_add1_attr(X509_ACERT *x, X509_ATTRIBUTE *attr); +int X509_ACERT_add1_attr_by_OBJ(X509_ACERT *x, const ASN1_OBJECT *obj, + int type, const void *bytes, int len); +int X509_ACERT_add1_attr_by_NID(X509_ACERT *x, int nid, int type, + const void *bytes, int len); +int X509_ACERT_add1_attr_by_txt(X509_ACERT *x, const char *attrname, int type, + const unsigned char *bytes, int len); +int X509_ACERT_add_attr_nconf(CONF *conf, const char *section, + X509_ACERT *acert); + +int X509_ACERT_set1_issuerName(X509_ACERT *x, const X509_NAME *name); +int X509_ACERT_set1_serialNumber(X509_ACERT *x, const ASN1_INTEGER *serial); +int X509_ACERT_set1_notBefore(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); +int X509_ACERT_set1_notAfter(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); + +void OSSL_OBJECT_DIGEST_INFO_get0_digest(const OSSL_OBJECT_DIGEST_INFO *o, + int *digestedObjectType, + const X509_ALGOR **digestAlgorithm, + const ASN1_BIT_STRING **digest); + +int OSSL_OBJECT_DIGEST_INFO_set1_digest(OSSL_OBJECT_DIGEST_INFO *o, + int digestedObjectType, + X509_ALGOR *digestAlgorithm, + ASN1_BIT_STRING *digest); + +const X509_NAME *OSSL_ISSUER_SERIAL_get0_issuer(const OSSL_ISSUER_SERIAL *isss); +const ASN1_INTEGER *OSSL_ISSUER_SERIAL_get0_serial(const OSSL_ISSUER_SERIAL *isss); +const ASN1_BIT_STRING *OSSL_ISSUER_SERIAL_get0_issuerUID(const OSSL_ISSUER_SERIAL *isss); + +int OSSL_ISSUER_SERIAL_set1_issuer(OSSL_ISSUER_SERIAL *isss, + const X509_NAME *issuer); +int OSSL_ISSUER_SERIAL_set1_serial(OSSL_ISSUER_SERIAL *isss, + const ASN1_INTEGER *serial); +int OSSL_ISSUER_SERIAL_set1_issuerUID(OSSL_ISSUER_SERIAL *isss, + const ASN1_BIT_STRING *uid); + +# define OSSL_IETFAS_OCTETS 0 +# define OSSL_IETFAS_OID 1 +# define OSSL_IETFAS_STRING 2 + +typedef struct OSSL_IETF_ATTR_SYNTAX_VALUE_st OSSL_IETF_ATTR_SYNTAX_VALUE; +typedef struct OSSL_IETF_ATTR_SYNTAX_st OSSL_IETF_ATTR_SYNTAX; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_value(sk, idx) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new(cmp) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_null() ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (n)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete(sk, i) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (i))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete_ptr(sk, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_pop(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_shift(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_shift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk),ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), (idx)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set(sk, idx, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_set(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), pnum) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_dup(sk) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_copyfunc_type(copyfunc), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set_cmp_func(sk, cmp) ((sk_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) + + +DECLARE_ASN1_ITEM(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX) + +const GENERAL_NAMES * +OSSL_IETF_ATTR_SYNTAX_get0_policyAuthority(const OSSL_IETF_ATTR_SYNTAX *a); +void OSSL_IETF_ATTR_SYNTAX_set0_policyAuthority(OSSL_IETF_ATTR_SYNTAX *a, + GENERAL_NAMES *names); + +int OSSL_IETF_ATTR_SYNTAX_get_value_num(const OSSL_IETF_ATTR_SYNTAX *a); +void *OSSL_IETF_ATTR_SYNTAX_get0_value(const OSSL_IETF_ATTR_SYNTAX *a, + int ind, int *type); +int OSSL_IETF_ATTR_SYNTAX_add1_value(OSSL_IETF_ATTR_SYNTAX *a, int type, + void *data); +int OSSL_IETF_ATTR_SYNTAX_print(BIO *bp, OSSL_IETF_ATTR_SYNTAX *a, int indent); + +struct TARGET_CERT_st { + OSSL_ISSUER_SERIAL *targetCertificate; + GENERAL_NAME *targetName; + OSSL_OBJECT_DIGEST_INFO *certDigestInfo; +}; + +typedef struct TARGET_CERT_st OSSL_TARGET_CERT; + +# define OSSL_TGT_TARGET_NAME 0 +# define OSSL_TGT_TARGET_GROUP 1 +# define OSSL_TGT_TARGET_CERT 2 + +typedef struct TARGET_st { + int type; + union { + GENERAL_NAME *targetName; + GENERAL_NAME *targetGroup; + OSSL_TARGET_CERT *targetCert; + } choice; +} OSSL_TARGET; + +typedef STACK_OF(OSSL_TARGET) OSSL_TARGETS; +typedef STACK_OF(OSSL_TARGETS) OSSL_TARGETING_INFORMATION; + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGET, OSSL_TARGET, OSSL_TARGET) +#define sk_OSSL_TARGET_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_value(sk, idx) ((OSSL_TARGET *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGET_sk_type(sk), (idx))) +#define sk_OSSL_TARGET_new(cmp) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new(ossl_check_OSSL_TARGET_compfunc_type(cmp))) +#define sk_OSSL_TARGET_new_null() ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGET_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGET_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGET_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGET_sk_type(sk), (n)) +#define sk_OSSL_TARGET_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_delete(sk, i) ((OSSL_TARGET *)OPENSSL_sk_delete(ossl_check_OSSL_TARGET_sk_type(sk), (i))) +#define sk_OSSL_TARGET_delete_ptr(sk, ptr) ((OSSL_TARGET *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_pop(sk) ((OSSL_TARGET *)OPENSSL_sk_pop(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_shift(sk) ((OSSL_TARGET *)OPENSSL_sk_shift(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGET_sk_type(sk),ossl_check_OSSL_TARGET_freefunc_type(freefunc)) +#define sk_OSSL_TARGET_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), (idx)) +#define sk_OSSL_TARGET_set(sk, idx, ptr) ((OSSL_TARGET *)OPENSSL_sk_set(ossl_check_OSSL_TARGET_sk_type(sk), (idx), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), pnum) +#define sk_OSSL_TARGET_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_dup(sk) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_copyfunc_type(copyfunc), ossl_check_OSSL_TARGET_freefunc_type(freefunc))) +#define sk_OSSL_TARGET_set_cmp_func(sk, cmp) ((sk_OSSL_TARGET_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGETS, OSSL_TARGETS, OSSL_TARGETS) +#define sk_OSSL_TARGETS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_value(sk, idx) ((OSSL_TARGETS *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGETS_sk_type(sk), (idx))) +#define sk_OSSL_TARGETS_new(cmp) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new(ossl_check_OSSL_TARGETS_compfunc_type(cmp))) +#define sk_OSSL_TARGETS_new_null() ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGETS_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGETS_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGETS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGETS_sk_type(sk), (n)) +#define sk_OSSL_TARGETS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_delete(sk, i) ((OSSL_TARGETS *)OPENSSL_sk_delete(ossl_check_OSSL_TARGETS_sk_type(sk), (i))) +#define sk_OSSL_TARGETS_delete_ptr(sk, ptr) ((OSSL_TARGETS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_pop(sk) ((OSSL_TARGETS *)OPENSSL_sk_pop(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_shift(sk) ((OSSL_TARGETS *)OPENSSL_sk_shift(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGETS_sk_type(sk),ossl_check_OSSL_TARGETS_freefunc_type(freefunc)) +#define sk_OSSL_TARGETS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), (idx)) +#define sk_OSSL_TARGETS_set(sk, idx, ptr) ((OSSL_TARGETS *)OPENSSL_sk_set(ossl_check_OSSL_TARGETS_sk_type(sk), (idx), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), pnum) +#define sk_OSSL_TARGETS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_dup(sk) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_copyfunc_type(copyfunc), ossl_check_OSSL_TARGETS_freefunc_type(freefunc))) +#define sk_OSSL_TARGETS_set_cmp_func(sk, cmp) ((sk_OSSL_TARGETS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_compfunc_type(cmp))) + + +DECLARE_ASN1_FUNCTIONS(OSSL_TARGET) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETS) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETING_INFORMATION) + +typedef STACK_OF(OSSL_ISSUER_SERIAL) OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL) +#define sk_OSSL_ISSUER_SERIAL_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_value(sk, idx) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_value(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), (idx))) +#define sk_OSSL_ISSUER_SERIAL_new(cmp) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) +#define sk_OSSL_ISSUER_SERIAL_new_null() ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ISSUER_SERIAL_new_reserve(cmp, n) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp), (n))) +#define sk_OSSL_ISSUER_SERIAL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (n)) +#define sk_OSSL_ISSUER_SERIAL_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_delete(sk, i) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (i))) +#define sk_OSSL_ISSUER_SERIAL_delete_ptr(sk, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_pop(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_pop(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_shift(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_shift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk),ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc)) +#define sk_OSSL_ISSUER_SERIAL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), (idx)) +#define sk_OSSL_ISSUER_SERIAL_set(sk, idx, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_set(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (idx), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), pnum) +#define sk_OSSL_ISSUER_SERIAL_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_dup(sk) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_copyfunc_type(copyfunc), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc))) +#define sk_OSSL_ISSUER_SERIAL_set_cmp_func(sk, cmp) ((sk_OSSL_ISSUER_SERIAL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) + + +#endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/x509_vfy.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/x509_vfy.h index 29b0e147adcab1..c9bdc3b39d685d 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/x509_vfy.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/x509_vfy.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509_vfy.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -411,6 +411,7 @@ X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ # define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 # define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 # define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +# define X509_V_ERR_RPK_UNTRUSTED 95 /* Certificate verify flags */ # ifndef OPENSSL_NO_DEPRECATED_1_1_0 @@ -491,71 +492,72 @@ int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); X509_STORE *X509_STORE_new(void); -void X509_STORE_free(X509_STORE *v); -int X509_STORE_lock(X509_STORE *ctx); -int X509_STORE_unlock(X509_STORE *ctx); -int X509_STORE_up_ref(X509_STORE *v); -STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *v); -STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *st); -STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get1_objects(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, const X509_NAME *nm); STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, const X509_NAME *nm); -int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); -int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); -int X509_STORE_set_trust(X509_STORE *ctx, int trust); -int X509_STORE_set1_param(X509_STORE *ctx, const X509_VERIFY_PARAM *pm); -X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *ctx); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); -void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); #define X509_STORE_set_verify_func(ctx, func) \ X509_STORE_set_verify((ctx),(func)) void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, X509_STORE_CTX_verify_fn verify); -X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *ctx); -void X509_STORE_set_verify_cb(X509_STORE *ctx, +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, X509_STORE_CTX_verify_cb verify_cb); # define X509_STORE_set_verify_cb_func(ctx,func) \ X509_STORE_set_verify_cb((ctx),(func)) -X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *ctx); -void X509_STORE_set_get_issuer(X509_STORE *ctx, +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, X509_STORE_CTX_get_issuer_fn get_issuer); -X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *ctx); -void X509_STORE_set_check_issued(X509_STORE *ctx, +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, X509_STORE_CTX_check_issued_fn check_issued); -X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *ctx); -void X509_STORE_set_check_revocation(X509_STORE *ctx, +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, X509_STORE_CTX_check_revocation_fn check_revocation); X509_STORE_CTX_check_revocation_fn - X509_STORE_get_check_revocation(const X509_STORE *ctx); -void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, X509_STORE_CTX_get_crl_fn get_crl); -X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *ctx); -void X509_STORE_set_check_crl(X509_STORE *ctx, +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, X509_STORE_CTX_check_crl_fn check_crl); -X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *ctx); -void X509_STORE_set_cert_crl(X509_STORE *ctx, +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, X509_STORE_CTX_cert_crl_fn cert_crl); -X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *ctx); -void X509_STORE_set_check_policy(X509_STORE *ctx, +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, X509_STORE_CTX_check_policy_fn check_policy); -X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *ctx); -void X509_STORE_set_lookup_certs(X509_STORE *ctx, +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, X509_STORE_CTX_lookup_certs_fn lookup_certs); -X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *ctx); -void X509_STORE_set_lookup_crls(X509_STORE *ctx, +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, X509_STORE_CTX_lookup_crls_fn lookup_crls); #define X509_STORE_set_lookup_crls_cb(ctx, func) \ X509_STORE_set_lookup_crls((ctx), (func)) -X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *ctx); -void X509_STORE_set_cleanup(X509_STORE *ctx, +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, X509_STORE_CTX_cleanup_fn cleanup); -X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); #define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) -int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); -void *X509_STORE_get_ex_data(const X509_STORE *ctx, int idx); +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); X509_STORE_CTX *X509_STORE_CTX_new(void); @@ -565,11 +567,14 @@ int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); void X509_STORE_CTX_free(X509_STORE_CTX *ctx); int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY* rpk); void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, @@ -579,6 +584,8 @@ X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); @@ -600,7 +607,7 @@ X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); # define X509_STORE_get1_crl X509_STORE_CTX_get1_crls #endif -X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); X509_LOOKUP_METHOD *X509_LOOKUP_file(void); X509_LOOKUP_METHOD *X509_LOOKUP_store(void); @@ -685,8 +692,8 @@ X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( const X509_LOOKUP_METHOD *method); -int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); -int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, @@ -730,23 +737,21 @@ void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); -int X509_STORE_load_file(X509_STORE *ctx, const char *file); -int X509_STORE_load_path(X509_STORE *ctx, const char *path); -int X509_STORE_load_store(X509_STORE *ctx, const char *store); -int X509_STORE_load_locations(X509_STORE *ctx, - const char *file, - const char *dir); -int X509_STORE_set_default_paths(X509_STORE *ctx); +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); -int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file, +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_store_ex(X509_STORE *ctx, const char *store, +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file, - const char *dir, OSSL_LIB_CTX *libctx, - const char *propq); -int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OSSL_LIB_CTX *libctx, - const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); #define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) @@ -764,6 +769,7 @@ X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); @@ -773,6 +779,8 @@ int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); @@ -804,6 +812,7 @@ int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, unsigned long flags); unsigned long X509_VERIFY_PARAM_get_flags(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_get_purpose(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/x509v3.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/x509v3.h index 20b67455f2061d..b8dabac35a4915 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/x509v3.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/x509v3.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509v3.h.in * - * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -146,6 +149,11 @@ typedef struct BASIC_CONSTRAINTS_st { ASN1_INTEGER *pathlen; } BASIC_CONSTRAINTS; +typedef struct OSSL_BASIC_ATTR_CONSTRAINTS_st { + int authority; + ASN1_INTEGER *pathlen; +} OSSL_BASIC_ATTR_CONSTRAINTS; + typedef struct PKEY_USAGE_PERIOD_st { ASN1_GENERALIZEDTIME *notBefore; ASN1_GENERALIZEDTIME *notAfter; @@ -198,6 +206,8 @@ typedef struct ACCESS_DESCRIPTION_st { GENERAL_NAME *location; } ACCESS_DESCRIPTION; +int GENERAL_NAME_set1_X509_NAME(GENERAL_NAME **tgt, const X509_NAME *src); + SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) #define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) #define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) @@ -294,6 +304,7 @@ typedef struct DIST_POINT_NAME_st { /* If relativename then this contains the full distribution point name */ X509_NAME *dpname; } DIST_POINT_NAME; +DECLARE_ASN1_DUP_FUNCTION(DIST_POINT_NAME) /* All existing reasons */ # define CRLDP_ALL_REASONS 0x807f @@ -659,15 +670,16 @@ struct ISSUING_DIST_POINT_st { # define EXFLAG_SAN_CRITICAL 0x80000 # define EXFLAG_NO_FINGERPRINT 0x100000 -# define KU_DIGITAL_SIGNATURE 0x0080 -# define KU_NON_REPUDIATION 0x0040 -# define KU_KEY_ENCIPHERMENT 0x0020 -# define KU_DATA_ENCIPHERMENT 0x0010 -# define KU_KEY_AGREEMENT 0x0008 -# define KU_KEY_CERT_SIGN 0x0004 -# define KU_CRL_SIGN 0x0002 -# define KU_ENCIPHER_ONLY 0x0001 -# define KU_DECIPHER_ONLY 0x8000 +/* https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3 */ +# define KU_DIGITAL_SIGNATURE X509v3_KU_DIGITAL_SIGNATURE +# define KU_NON_REPUDIATION X509v3_KU_NON_REPUDIATION +# define KU_KEY_ENCIPHERMENT X509v3_KU_KEY_ENCIPHERMENT +# define KU_DATA_ENCIPHERMENT X509v3_KU_DATA_ENCIPHERMENT +# define KU_KEY_AGREEMENT X509v3_KU_KEY_AGREEMENT +# define KU_KEY_CERT_SIGN X509v3_KU_KEY_CERT_SIGN +# define KU_CRL_SIGN X509v3_KU_CRL_SIGN +# define KU_ENCIPHER_ONLY X509v3_KU_ENCIPHER_ONLY +# define KU_DECIPHER_ONLY X509v3_KU_DECIPHER_ONLY # define NS_SSL_CLIENT 0x80 # define NS_SSL_SERVER 0x40 @@ -729,7 +741,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) #define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) - +# define X509_PURPOSE_DEFAULT_ANY 0 # define X509_PURPOSE_SSL_CLIENT 1 # define X509_PURPOSE_SSL_SERVER 2 # define X509_PURPOSE_NS_SSL_SERVER 3 @@ -739,9 +751,10 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509_PURPOSE_ANY 7 # define X509_PURPOSE_OCSP_HELPER 8 # define X509_PURPOSE_TIMESTAMP_SIGN 9 +# define X509_PURPOSE_CODE_SIGN 10 # define X509_PURPOSE_MIN 1 -# define X509_PURPOSE_MAX 9 +# define X509_PURPOSE_MAX 10 /* Flags for X509V3_EXT_print() */ @@ -767,6 +780,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509V3_ADD_SILENT 0x10 DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) +DECLARE_ASN1_FUNCTIONS(OSSL_BASIC_ATTR_CONSTRAINTS) DECLARE_ASN1_FUNCTIONS(SXNET) DECLARE_ASN1_FUNCTIONS(SXNETID) @@ -976,7 +990,6 @@ int X509V3_extensions_print(BIO *out, const char *title, int X509_check_ca(X509 *x); int X509_check_purpose(X509 *x, int id, int ca); int X509_supported_extension(X509_EXTENSION *ex); -int X509_PURPOSE_set(int *p, int purpose); int X509_check_issued(X509 *issuer, X509 *subject); int X509_check_akid(const X509 *issuer, const AUTHORITY_KEYID *akid); void X509_set_proxy_flag(X509 *x); @@ -992,22 +1005,26 @@ const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); int X509_PURPOSE_get_count(void); -X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_unused_id(OSSL_LIB_CTX *libctx); int X509_PURPOSE_get_by_sname(const char *sname); int X509_PURPOSE_get_by_id(int id); int X509_PURPOSE_add(int id, int trust, int flags, int (*ck) (const X509_PURPOSE *, const X509 *, int), const char *name, const char *sname, void *arg); +void X509_PURPOSE_cleanup(void); + +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_id(const X509_PURPOSE *); char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); -void X509_PURPOSE_cleanup(void); -int X509_PURPOSE_get_id(const X509_PURPOSE *); +int X509_PURPOSE_set(int *p, int purpose); STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); + /* Flags for X509_check_* functions */ /* @@ -1444,6 +1461,507 @@ const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( void PROFESSION_INFO_set0_registrationNumber( PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); +int OSSL_GENERAL_NAMES_print(BIO *out, GENERAL_NAMES *gens, int indent); + +typedef STACK_OF(X509_ATTRIBUTE) OSSL_ATTRIBUTES_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTES_SYNTAX) + +typedef STACK_OF(USERNOTICE) OSSL_USER_NOTICE_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_USER_NOTICE_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(USERNOTICE, USERNOTICE, USERNOTICE) +#define sk_USERNOTICE_num(sk) OPENSSL_sk_num(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_value(sk, idx) ((USERNOTICE *)OPENSSL_sk_value(ossl_check_const_USERNOTICE_sk_type(sk), (idx))) +#define sk_USERNOTICE_new(cmp) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new(ossl_check_USERNOTICE_compfunc_type(cmp))) +#define sk_USERNOTICE_new_null() ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_null()) +#define sk_USERNOTICE_new_reserve(cmp, n) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_reserve(ossl_check_USERNOTICE_compfunc_type(cmp), (n))) +#define sk_USERNOTICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_USERNOTICE_sk_type(sk), (n)) +#define sk_USERNOTICE_free(sk) OPENSSL_sk_free(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_zero(sk) OPENSSL_sk_zero(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_delete(sk, i) ((USERNOTICE *)OPENSSL_sk_delete(ossl_check_USERNOTICE_sk_type(sk), (i))) +#define sk_USERNOTICE_delete_ptr(sk, ptr) ((USERNOTICE *)OPENSSL_sk_delete_ptr(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_pop(sk) ((USERNOTICE *)OPENSSL_sk_pop(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_shift(sk) ((USERNOTICE *)OPENSSL_sk_shift(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_USERNOTICE_sk_type(sk),ossl_check_USERNOTICE_freefunc_type(freefunc)) +#define sk_USERNOTICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), (idx)) +#define sk_USERNOTICE_set(sk, idx, ptr) ((USERNOTICE *)OPENSSL_sk_set(ossl_check_USERNOTICE_sk_type(sk), (idx), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), pnum) +#define sk_USERNOTICE_sort(sk) OPENSSL_sk_sort(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_dup(sk) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_dup(ossl_check_const_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_deep_copy(ossl_check_const_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_copyfunc_type(copyfunc), ossl_check_USERNOTICE_freefunc_type(freefunc))) +#define sk_USERNOTICE_set_cmp_func(sk, cmp) ((sk_USERNOTICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_compfunc_type(cmp))) + + +typedef struct OSSL_ROLE_SPEC_CERT_ID_st { + GENERAL_NAME *roleName; + GENERAL_NAME *roleCertIssuer; + ASN1_INTEGER *roleCertSerialNumber; + GENERAL_NAMES *roleCertLocator; +} OSSL_ROLE_SPEC_CERT_ID; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID) +#define sk_OSSL_ROLE_SPEC_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_value(sk, idx) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_value(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new(cmp) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_null() ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_reserve(cmp, n) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp), (n))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (n)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete(sk, i) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (i))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete_ptr(sk, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_pop(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_shift(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_shift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk),ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), (idx)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set(sk, idx, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_set(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), pnum) +#define sk_OSSL_ROLE_SPEC_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_dup(sk) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_copyfunc_type(copyfunc), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set_cmp_func(sk, cmp) ((sk_OSSL_ROLE_SPEC_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) + + +typedef STACK_OF(OSSL_ROLE_SPEC_CERT_ID) OSSL_ROLE_SPEC_CERT_ID_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID_SYNTAX) +typedef struct OSSL_HASH_st { + X509_ALGOR *algorithmIdentifier; + ASN1_BIT_STRING *hashValue; +} OSSL_HASH; + +typedef struct OSSL_INFO_SYNTAX_POINTER_st { + GENERAL_NAMES *name; + OSSL_HASH *hash; +} OSSL_INFO_SYNTAX_POINTER; + +# define OSSL_INFO_SYNTAX_TYPE_CONTENT 0 +# define OSSL_INFO_SYNTAX_TYPE_POINTER 1 + +typedef struct OSSL_INFO_SYNTAX_st { + int type; + union { + ASN1_STRING *content; + OSSL_INFO_SYNTAX_POINTER *pointer; + } choice; +} OSSL_INFO_SYNTAX; + +typedef struct OSSL_PRIVILEGE_POLICY_ID_st { + ASN1_OBJECT *privilegePolicy; + OSSL_INFO_SYNTAX *privPolSyntax; +} OSSL_PRIVILEGE_POLICY_ID; + +typedef struct OSSL_ATTRIBUTE_DESCRIPTOR_st { + ASN1_OBJECT *identifier; + ASN1_STRING *attributeSyntax; + ASN1_UTF8STRING *name; + ASN1_UTF8STRING *description; + OSSL_PRIVILEGE_POLICY_ID *dominationRule; +} OSSL_ATTRIBUTE_DESCRIPTOR; + +DECLARE_ASN1_FUNCTIONS(OSSL_HASH) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX_POINTER) +DECLARE_ASN1_FUNCTIONS(OSSL_PRIVILEGE_POLICY_ID) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_DESCRIPTOR) + +typedef struct OSSL_TIME_SPEC_ABSOLUTE_st { + ASN1_GENERALIZEDTIME *startTime; + ASN1_GENERALIZEDTIME *endTime; +} OSSL_TIME_SPEC_ABSOLUTE; + +typedef struct OSSL_DAY_TIME_st { + ASN1_INTEGER *hour; + ASN1_INTEGER *minute; + ASN1_INTEGER *second; +} OSSL_DAY_TIME; + +typedef struct OSSL_DAY_TIME_BAND_st { + OSSL_DAY_TIME *startDayTime; + OSSL_DAY_TIME *endDayTime; +} OSSL_DAY_TIME_BAND; + +# define OSSL_NAMED_DAY_TYPE_INT 0 +# define OSSL_NAMED_DAY_TYPE_BIT 1 +# define OSSL_NAMED_DAY_INT_SUN 1 +# define OSSL_NAMED_DAY_INT_MON 2 +# define OSSL_NAMED_DAY_INT_TUE 3 +# define OSSL_NAMED_DAY_INT_WED 4 +# define OSSL_NAMED_DAY_INT_THU 5 +# define OSSL_NAMED_DAY_INT_FRI 6 +# define OSSL_NAMED_DAY_INT_SAT 7 +# define OSSL_NAMED_DAY_BIT_SUN 0 +# define OSSL_NAMED_DAY_BIT_MON 1 +# define OSSL_NAMED_DAY_BIT_TUE 2 +# define OSSL_NAMED_DAY_BIT_WED 3 +# define OSSL_NAMED_DAY_BIT_THU 4 +# define OSSL_NAMED_DAY_BIT_FRI 5 +# define OSSL_NAMED_DAY_BIT_SAT 6 + +typedef struct OSSL_NAMED_DAY_st { + int type; + union { + ASN1_INTEGER *intNamedDays; + ASN1_BIT_STRING *bitNamedDays; + } choice; +} OSSL_NAMED_DAY; + +# define OSSL_TIME_SPEC_X_DAY_OF_FIRST 0 +# define OSSL_TIME_SPEC_X_DAY_OF_SECOND 1 +# define OSSL_TIME_SPEC_X_DAY_OF_THIRD 2 +# define OSSL_TIME_SPEC_X_DAY_OF_FOURTH 3 +# define OSSL_TIME_SPEC_X_DAY_OF_FIFTH 4 + +typedef struct OSSL_TIME_SPEC_X_DAY_OF_st { + int type; + union { + OSSL_NAMED_DAY *first; + OSSL_NAMED_DAY *second; + OSSL_NAMED_DAY *third; + OSSL_NAMED_DAY *fourth; + OSSL_NAMED_DAY *fifth; + } choice; +} OSSL_TIME_SPEC_X_DAY_OF; + +# define OSSL_TIME_SPEC_DAY_TYPE_INT 0 +# define OSSL_TIME_SPEC_DAY_TYPE_BIT 1 +# define OSSL_TIME_SPEC_DAY_TYPE_DAY_OF 2 +# define OSSL_TIME_SPEC_DAY_BIT_SUN 0 +# define OSSL_TIME_SPEC_DAY_BIT_MON 1 +# define OSSL_TIME_SPEC_DAY_BIT_TUE 2 +# define OSSL_TIME_SPEC_DAY_BIT_WED 3 +# define OSSL_TIME_SPEC_DAY_BIT_THU 4 +# define OSSL_TIME_SPEC_DAY_BIT_FRI 5 +# define OSSL_TIME_SPEC_DAY_BIT_SAT 6 +# define OSSL_TIME_SPEC_DAY_INT_SUN 1 +# define OSSL_TIME_SPEC_DAY_INT_MON 2 +# define OSSL_TIME_SPEC_DAY_INT_TUE 3 +# define OSSL_TIME_SPEC_DAY_INT_WED 4 +# define OSSL_TIME_SPEC_DAY_INT_THU 5 +# define OSSL_TIME_SPEC_DAY_INT_FRI 6 +# define OSSL_TIME_SPEC_DAY_INT_SAT 7 + +typedef struct OSSL_TIME_SPEC_DAY_st { + int type; + union { + STACK_OF(ASN1_INTEGER) *intDay; + ASN1_BIT_STRING *bitDay; + OSSL_TIME_SPEC_X_DAY_OF *dayOf; + } choice; +} OSSL_TIME_SPEC_DAY; + +# define OSSL_TIME_SPEC_WEEKS_TYPE_ALL 0 +# define OSSL_TIME_SPEC_WEEKS_TYPE_INT 1 +# define OSSL_TIME_SPEC_WEEKS_TYPE_BIT 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_1 0 +# define OSSL_TIME_SPEC_BIT_WEEKS_2 1 +# define OSSL_TIME_SPEC_BIT_WEEKS_3 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_4 3 +# define OSSL_TIME_SPEC_BIT_WEEKS_5 4 + +typedef struct OSSL_TIME_SPEC_WEEKS_st { + int type; + union { + ASN1_NULL *allWeeks; + STACK_OF(ASN1_INTEGER) *intWeek; + ASN1_BIT_STRING *bitWeek; + } choice; +} OSSL_TIME_SPEC_WEEKS; + +# define OSSL_TIME_SPEC_MONTH_TYPE_ALL 0 +# define OSSL_TIME_SPEC_MONTH_TYPE_INT 1 +# define OSSL_TIME_SPEC_MONTH_TYPE_BIT 2 +# define OSSL_TIME_SPEC_INT_MONTH_JAN 1 +# define OSSL_TIME_SPEC_INT_MONTH_FEB 2 +# define OSSL_TIME_SPEC_INT_MONTH_MAR 3 +# define OSSL_TIME_SPEC_INT_MONTH_APR 4 +# define OSSL_TIME_SPEC_INT_MONTH_MAY 5 +# define OSSL_TIME_SPEC_INT_MONTH_JUN 6 +# define OSSL_TIME_SPEC_INT_MONTH_JUL 7 +# define OSSL_TIME_SPEC_INT_MONTH_AUG 8 +# define OSSL_TIME_SPEC_INT_MONTH_SEP 9 +# define OSSL_TIME_SPEC_INT_MONTH_OCT 10 +# define OSSL_TIME_SPEC_INT_MONTH_NOV 11 +# define OSSL_TIME_SPEC_INT_MONTH_DEC 12 +# define OSSL_TIME_SPEC_BIT_MONTH_JAN 0 +# define OSSL_TIME_SPEC_BIT_MONTH_FEB 1 +# define OSSL_TIME_SPEC_BIT_MONTH_MAR 2 +# define OSSL_TIME_SPEC_BIT_MONTH_APR 3 +# define OSSL_TIME_SPEC_BIT_MONTH_MAY 4 +# define OSSL_TIME_SPEC_BIT_MONTH_JUN 5 +# define OSSL_TIME_SPEC_BIT_MONTH_JUL 6 +# define OSSL_TIME_SPEC_BIT_MONTH_AUG 7 +# define OSSL_TIME_SPEC_BIT_MONTH_SEP 8 +# define OSSL_TIME_SPEC_BIT_MONTH_OCT 9 +# define OSSL_TIME_SPEC_BIT_MONTH_NOV 10 +# define OSSL_TIME_SPEC_BIT_MONTH_DEC 11 + +typedef struct OSSL_TIME_SPEC_MONTH_st { + int type; + union { + ASN1_NULL *allMonths; + STACK_OF(ASN1_INTEGER) *intMonth; + ASN1_BIT_STRING *bitMonth; + } choice; +} OSSL_TIME_SPEC_MONTH; + +typedef struct OSSL_TIME_PERIOD_st { + STACK_OF(OSSL_DAY_TIME_BAND) *timesOfDay; + OSSL_TIME_SPEC_DAY *days; + OSSL_TIME_SPEC_WEEKS *weeks; + OSSL_TIME_SPEC_MONTH *months; + STACK_OF(ASN1_INTEGER) *years; +} OSSL_TIME_PERIOD; + +# define OSSL_TIME_SPEC_TIME_TYPE_ABSOLUTE 0 +# define OSSL_TIME_SPEC_TIME_TYPE_PERIODIC 1 + +typedef struct OSSL_TIME_SPEC_TIME_st { + int type; + union { + OSSL_TIME_SPEC_ABSOLUTE *absolute; + STACK_OF(OSSL_TIME_PERIOD) *periodic; + } choice; +} OSSL_TIME_SPEC_TIME; + +typedef struct OSSL_TIME_SPEC_st { + OSSL_TIME_SPEC_TIME *time; + ASN1_BOOLEAN notThisTime; + ASN1_INTEGER *timeZone; +} OSSL_TIME_SPEC; + +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME_BAND) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_WEEKS) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_MONTH) +DECLARE_ASN1_FUNCTIONS(OSSL_NAMED_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_X_DAY_OF) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_ABSOLUTE) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_PERIOD) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TIME_PERIOD, OSSL_TIME_PERIOD, OSSL_TIME_PERIOD) +#define sk_OSSL_TIME_PERIOD_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_value(sk, idx) ((OSSL_TIME_PERIOD *)OPENSSL_sk_value(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), (idx))) +#define sk_OSSL_TIME_PERIOD_new(cmp) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) +#define sk_OSSL_TIME_PERIOD_new_null() ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TIME_PERIOD_new_reserve(cmp, n) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp), (n))) +#define sk_OSSL_TIME_PERIOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (n)) +#define sk_OSSL_TIME_PERIOD_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_delete(sk, i) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (i))) +#define sk_OSSL_TIME_PERIOD_delete_ptr(sk, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_pop(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_pop(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_shift(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_shift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk),ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc)) +#define sk_OSSL_TIME_PERIOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), (idx)) +#define sk_OSSL_TIME_PERIOD_set(sk, idx, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_set(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (idx), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), pnum) +#define sk_OSSL_TIME_PERIOD_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_dup(sk) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_copyfunc_type(copyfunc), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc))) +#define sk_OSSL_TIME_PERIOD_set_cmp_func(sk, cmp) ((sk_OSSL_TIME_PERIOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND) +#define sk_OSSL_DAY_TIME_BAND_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_value(sk, idx) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_value(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), (idx))) +#define sk_OSSL_DAY_TIME_BAND_new(cmp) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) +#define sk_OSSL_DAY_TIME_BAND_new_null() ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_null()) +#define sk_OSSL_DAY_TIME_BAND_new_reserve(cmp, n) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp), (n))) +#define sk_OSSL_DAY_TIME_BAND_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (n)) +#define sk_OSSL_DAY_TIME_BAND_free(sk) OPENSSL_sk_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_delete(sk, i) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (i))) +#define sk_OSSL_DAY_TIME_BAND_delete_ptr(sk, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_pop(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_pop(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_shift(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_shift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk),ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc)) +#define sk_OSSL_DAY_TIME_BAND_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), (idx)) +#define sk_OSSL_DAY_TIME_BAND_set(sk, idx, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_set(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (idx), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), pnum) +#define sk_OSSL_DAY_TIME_BAND_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_dup(sk) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_dup(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_copyfunc_type(copyfunc), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc))) +#define sk_OSSL_DAY_TIME_BAND_set_cmp_func(sk, cmp) ((sk_OSSL_DAY_TIME_BAND_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) + + +/* Attribute Type and Value */ +typedef struct atav_st { + ASN1_OBJECT *type; + ASN1_TYPE *value; +} OSSL_ATAV; + +typedef struct ATTRIBUTE_TYPE_MAPPING_st { + ASN1_OBJECT *local; + ASN1_OBJECT *remote; +} OSSL_ATTRIBUTE_TYPE_MAPPING; + +typedef struct ATTRIBUTE_VALUE_MAPPING_st { + OSSL_ATAV *local; + OSSL_ATAV *remote; +} OSSL_ATTRIBUTE_VALUE_MAPPING; + +# define OSSL_ATTR_MAP_TYPE 0 +# define OSSL_ATTR_MAP_VALUE 1 + +typedef struct ATTRIBUTE_MAPPING_st { + int type; + union { + OSSL_ATTRIBUTE_TYPE_MAPPING *typeMappings; + OSSL_ATTRIBUTE_VALUE_MAPPING *typeValueMappings; + } choice; +} OSSL_ATTRIBUTE_MAPPING; + +typedef STACK_OF(OSSL_ATTRIBUTE_MAPPING) OSSL_ATTRIBUTE_MAPPINGS; +DECLARE_ASN1_FUNCTIONS(OSSL_ATAV) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_TYPE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_VALUE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPINGS) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING) +#define sk_OSSL_ATTRIBUTE_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_value(sk, idx) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_value(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new(cmp) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_null() ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_reserve(cmp, n) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp), (n))) +#define sk_OSSL_ATTRIBUTE_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (n)) +#define sk_OSSL_ATTRIBUTE_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete(sk, i) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (i))) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete_ptr(sk, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_pop(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_shift(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_shift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk),ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc)) +#define sk_OSSL_ATTRIBUTE_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), (idx)) +#define sk_OSSL_ATTRIBUTE_MAPPING_set(sk, idx, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_set(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), pnum) +#define sk_OSSL_ATTRIBUTE_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_dup(sk) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_copyfunc_type(copyfunc), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc))) +#define sk_OSSL_ATTRIBUTE_MAPPING_set_cmp_func(sk, cmp) ((sk_OSSL_ATTRIBUTE_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) + + +# define OSSL_AAA_ATTRIBUTE_TYPE 0 +# define OSSL_AAA_ATTRIBUTE_VALUES 1 + +typedef struct ALLOWED_ATTRIBUTES_CHOICE_st { + int type; + union { + ASN1_OBJECT *attributeType; + X509_ATTRIBUTE *attributeTypeandValues; + } choice; +} OSSL_ALLOWED_ATTRIBUTES_CHOICE; + +typedef struct ALLOWED_ATTRIBUTES_ITEM_st { + STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *attributes; + GENERAL_NAME *holderDomain; +} OSSL_ALLOWED_ATTRIBUTES_ITEM; + +typedef STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) OSSL_ALLOWED_ATTRIBUTES_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_CHOICE) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_ITEM) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) + + +typedef struct AA_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + int dp_reasons; + ASN1_BOOLEAN indirectCRL; + ASN1_BOOLEAN containsUserAttributeCerts; + ASN1_BOOLEAN containsAACerts; + ASN1_BOOLEAN containsSOAPublicKeyCerts; +} OSSL_AA_DIST_POINT; + +DECLARE_ASN1_FUNCTIONS(OSSL_AA_DIST_POINT) + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/progs.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/progs.h index be55f61503d405..1b62ec37dec130 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/include/progs.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/progs.h @@ -56,6 +56,7 @@ extern int s_client_main(int argc, char *argv[]); extern int s_server_main(int argc, char *argv[]); extern int s_time_main(int argc, char *argv[]); extern int sess_id_main(int argc, char *argv[]); +extern int skeyutl_main(int argc, char *argv[]); extern int smime_main(int argc, char *argv[]); extern int speed_main(int argc, char *argv[]); extern int spkac_main(int argc, char *argv[]); @@ -110,6 +111,7 @@ extern const OPTIONS s_client_options[]; extern const OPTIONS s_server_options[]; extern const OPTIONS s_time_options[]; extern const OPTIONS sess_id_options[]; +extern const OPTIONS skeyutl_options[]; extern const OPTIONS smime_options[]; extern const OPTIONS speed_options[]; extern const OPTIONS spkac_options[]; diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/openssl-cl.gypi b/deps/openssl/config/archs/aix64-gcc-as/asm/openssl-cl.gypi index 435cf2453e4c05..6e716704b82718 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/openssl-cl.gypi +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/openssl-cl.gypi @@ -72,6 +72,7 @@ 'openssl/apps/s_server.c', 'openssl/apps/s_time.c', 'openssl/apps/sess_id.c', + 'openssl/apps/skeyutl.c', 'openssl/apps/smime.c', 'openssl/apps/speed.c', 'openssl/apps/spkac.c', @@ -87,12 +88,14 @@ 'openssl/apps/lib/app_rand.c', 'openssl/apps/lib/app_x509.c', 'openssl/apps/lib/apps.c', + 'openssl/apps/lib/apps_opt_printf.c', 'openssl/apps/lib/apps_ui.c', 'openssl/apps/lib/columns.c', 'openssl/apps/lib/engine.c', 'openssl/apps/lib/engine_loader.c', 'openssl/apps/lib/fmt.c', 'openssl/apps/lib/http_server.c', + 'openssl/apps/lib/log.c', 'openssl/apps/lib/names.c', 'openssl/apps/lib/opt.c', 'openssl/apps/lib/s_cb.c', diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/openssl-fips.gypi b/deps/openssl/config/archs/aix64-gcc-as/asm/openssl-fips.gypi index 834f45768009b6..42565428a601a2 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/openssl-fips.gypi +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/openssl-fips.gypi @@ -102,14 +102,15 @@ 'openssl/crypto/evp/kem.c', 'openssl/crypto/evp/keymgmt_lib.c', 'openssl/crypto/evp/keymgmt_meth.c', - 'openssl/crypto/evp/m_sigver.c', 'openssl/crypto/evp/mac_lib.c', 'openssl/crypto/evp/mac_meth.c', 'openssl/crypto/evp/p_lib.c', 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -117,6 +118,8 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', @@ -147,6 +150,16 @@ 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -155,6 +168,7 @@ 'openssl/crypto/modes/ofb128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/property/defn_cache.c', 'openssl/crypto/property/property.c', 'openssl/crypto/property/property_parse.c', @@ -183,7 +197,23 @@ 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', 'openssl/crypto/sha/sha_ppc.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/stack/stack.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/providers/common/der/der_rsa_sig.c', 'openssl/providers/common/bio_prov.c', 'openssl/providers/common/capabilities.c', @@ -192,6 +222,7 @@ 'openssl/providers/common/provider_util.c', 'openssl/providers/common/securitycheck.c', 'openssl/providers/common/securitycheck_fips.c', + 'openssl/providers/fips/fipsindicator.c', 'openssl/providers/fips/fipsprov.c', 'openssl/providers/fips/self_test.c', 'openssl/providers/fips/self_test_kats.c', @@ -229,6 +260,8 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -236,29 +269,39 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/cmac_prov.c', 'openssl/providers/implementations/macs/gmac_prov.c', 'openssl/providers/implementations/macs/hmac_prov.c', 'openssl/providers/implementations/macs/kmac_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', + 'openssl/providers/implementations/rands/fips_crng_test.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/signature/dsa_sig.c', 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -269,7 +312,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/fips/fips_entry.c', ], @@ -279,9 +322,11 @@ './config/archs/aix64-gcc-as/asm/crypto/aes/vpaes-ppc.s', './config/archs/aix64-gcc-as/asm/crypto/bn/bn-ppc.s', './config/archs/aix64-gcc-as/asm/crypto/bn/ppc-mont.s', + './config/archs/aix64-gcc-as/asm/crypto/bn/ppc64-mont-fixed.s', './config/archs/aix64-gcc-as/asm/crypto/chacha/chacha-ppc.s', './config/archs/aix64-gcc-as/asm/crypto/ec/ecp_nistz256-ppc64.s', './config/archs/aix64-gcc-as/asm/crypto/ec/x25519-ppc64.s', + './config/archs/aix64-gcc-as/asm/crypto/params_idx.c', './config/archs/aix64-gcc-as/asm/crypto/ppccpuid.s', './config/archs/aix64-gcc-as/asm/crypto/modes/ghashp8-ppc.s', './config/archs/aix64-gcc-as/asm/crypto/poly1305/poly1305-ppc.s', @@ -297,7 +342,9 @@ './config/archs/aix64-gcc-as/asm/providers/common/der/der_dsa_gen.c', './config/archs/aix64-gcc-as/asm/providers/common/der/der_ec_gen.c', './config/archs/aix64-gcc-as/asm/providers/common/der/der_ecx_gen.c', + './config/archs/aix64-gcc-as/asm/providers/common/der/der_ml_dsa_gen.c', './config/archs/aix64-gcc-as/asm/providers/common/der/der_rsa_gen.c', + './config/archs/aix64-gcc-as/asm/providers/common/der/der_slh_dsa_gen.c', './config/archs/aix64-gcc-as/asm/providers/common/der/der_wrap_gen.c', './config/archs/aix64-gcc-as/asm/providers/legacy.ld', './config/archs/aix64-gcc-as/asm/providers/fips.ld', diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/openssl.gypi b/deps/openssl/config/archs/aix64-gcc-as/asm/openssl.gypi index 93acbf01f5373a..2c9de18b950e59 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/openssl.gypi +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/openssl.gypi @@ -7,14 +7,15 @@ 'openssl/ssl/d1_srtp.c', 'openssl/ssl/methods.c', 'openssl/ssl/pqueue.c', + 'openssl/ssl/priority_queue.c', 'openssl/ssl/s3_enc.c', 'openssl/ssl/s3_lib.c', 'openssl/ssl/s3_msg.c', 'openssl/ssl/ssl_asn1.c', 'openssl/ssl/ssl_cert.c', + 'openssl/ssl/ssl_cert_comp.c', 'openssl/ssl/ssl_ciph.c', 'openssl/ssl/ssl_conf.c', - 'openssl/ssl/ssl_err.c', 'openssl/ssl/ssl_err_legacy.c', 'openssl/ssl/ssl_init.c', 'openssl/ssl/ssl_lib.c', @@ -31,12 +32,60 @@ 'openssl/ssl/tls13_enc.c', 'openssl/ssl/tls_depr.c', 'openssl/ssl/tls_srp.c', - 'openssl/ssl/record/dtls1_bitmap.c', + 'openssl/ssl/quic/cc_newreno.c', + 'openssl/ssl/quic/json_enc.c', + 'openssl/ssl/quic/qlog.c', + 'openssl/ssl/quic/qlog_event_helpers.c', + 'openssl/ssl/quic/quic_ackm.c', + 'openssl/ssl/quic/quic_cfq.c', + 'openssl/ssl/quic/quic_channel.c', + 'openssl/ssl/quic/quic_demux.c', + 'openssl/ssl/quic/quic_engine.c', + 'openssl/ssl/quic/quic_fc.c', + 'openssl/ssl/quic/quic_fifd.c', + 'openssl/ssl/quic/quic_impl.c', + 'openssl/ssl/quic/quic_lcidm.c', + 'openssl/ssl/quic/quic_method.c', + 'openssl/ssl/quic/quic_obj.c', + 'openssl/ssl/quic/quic_port.c', + 'openssl/ssl/quic/quic_rcidm.c', + 'openssl/ssl/quic/quic_reactor.c', + 'openssl/ssl/quic/quic_reactor_wait_ctx.c', + 'openssl/ssl/quic/quic_record_rx.c', + 'openssl/ssl/quic/quic_record_shared.c', + 'openssl/ssl/quic/quic_record_tx.c', + 'openssl/ssl/quic/quic_record_util.c', + 'openssl/ssl/quic/quic_rstream.c', + 'openssl/ssl/quic/quic_rx_depack.c', + 'openssl/ssl/quic/quic_sf_list.c', + 'openssl/ssl/quic/quic_srt_gen.c', + 'openssl/ssl/quic/quic_srtm.c', + 'openssl/ssl/quic/quic_sstream.c', + 'openssl/ssl/quic/quic_statm.c', + 'openssl/ssl/quic/quic_stream_map.c', + 'openssl/ssl/quic/quic_thread_assist.c', + 'openssl/ssl/quic/quic_tls.c', + 'openssl/ssl/quic/quic_tls_api.c', + 'openssl/ssl/quic/quic_trace.c', + 'openssl/ssl/quic/quic_tserver.c', + 'openssl/ssl/quic/quic_txp.c', + 'openssl/ssl/quic/quic_txpim.c', + 'openssl/ssl/quic/quic_types.c', + 'openssl/ssl/quic/quic_wire.c', + 'openssl/ssl/quic/quic_wire_pkt.c', + 'openssl/ssl/quic/uint_set.c', 'openssl/ssl/record/rec_layer_d1.c', 'openssl/ssl/record/rec_layer_s3.c', - 'openssl/ssl/record/ssl3_buffer.c', - 'openssl/ssl/record/ssl3_record.c', - 'openssl/ssl/record/ssl3_record_tls13.c', + 'openssl/ssl/record/methods/dtls_meth.c', + 'openssl/ssl/record/methods/ssl3_meth.c', + 'openssl/ssl/record/methods/tls13_meth.c', + 'openssl/ssl/record/methods/tls1_meth.c', + 'openssl/ssl/record/methods/tls_common.c', + 'openssl/ssl/record/methods/tls_multib.c', + 'openssl/ssl/record/methods/tlsany_meth.c', + 'openssl/ssl/rio/poll_builder.c', + 'openssl/ssl/rio/poll_immediate.c', + 'openssl/ssl/rio/rio_notifier.c', 'openssl/ssl/statem/extensions.c', 'openssl/ssl/statem/extensions_clnt.c', 'openssl/ssl/statem/extensions_cust.c', @@ -150,6 +199,7 @@ 'openssl/crypto/bio/bss_conn.c', 'openssl/crypto/bio/bss_core.c', 'openssl/crypto/bio/bss_dgram.c', + 'openssl/crypto/bio/bss_dgram_pair.c', 'openssl/crypto/bio/bss_fd.c', 'openssl/crypto/bio/bss_file.c', 'openssl/crypto/bio/bss_log.c', @@ -210,6 +260,7 @@ 'openssl/crypto/cmp/cmp_client.c', 'openssl/crypto/cmp/cmp_ctx.c', 'openssl/crypto/cmp/cmp_err.c', + 'openssl/crypto/cmp/cmp_genm.c', 'openssl/crypto/cmp/cmp_hdr.c', 'openssl/crypto/cmp/cmp_http.c', 'openssl/crypto/cmp/cmp_msg.c', @@ -387,7 +438,9 @@ 'openssl/crypto/err/err_all.c', 'openssl/crypto/err/err_all_legacy.c', 'openssl/crypto/err/err_blocks.c', + 'openssl/crypto/err/err_mark.c', 'openssl/crypto/err/err_prn.c', + 'openssl/crypto/err/err_save.c', 'openssl/crypto/ess/ess_asn1.c', 'openssl/crypto/ess/ess_err.c', 'openssl/crypto/ess/ess_lib.c', @@ -470,7 +523,9 @@ 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -478,7 +533,11 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', + 'openssl/crypto/hpke/hpke.c', + 'openssl/crypto/hpke/hpke_util.c', 'openssl/crypto/http/http_client.c', 'openssl/crypto/http/http_err.c', 'openssl/crypto/http/http_lib.c', @@ -492,6 +551,7 @@ 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', 'openssl/crypto/bsearch.c', + 'openssl/crypto/comp_methods.c', 'openssl/crypto/context.c', 'openssl/crypto/core_algorithm.c', 'openssl/crypto/core_fetch.c', @@ -501,10 +561,13 @@ 'openssl/crypto/cryptlib.c', 'openssl/crypto/ctype.c', 'openssl/crypto/cversion.c', + 'openssl/crypto/defaults.c', 'openssl/crypto/der_writer.c', + 'openssl/crypto/deterministic_nonce.c', 'openssl/crypto/ebcdic.c', 'openssl/crypto/ex_data.c', 'openssl/crypto/getenv.c', + 'openssl/crypto/indicator_core.c', 'openssl/crypto/info.c', 'openssl/crypto/init.c', 'openssl/crypto/initthread.c', @@ -529,12 +592,16 @@ 'openssl/crypto/provider_core.c', 'openssl/crypto/provider_predefined.c', 'openssl/crypto/punycode.c', + 'openssl/crypto/quic_vlint.c', 'openssl/crypto/self_test_core.c', + 'openssl/crypto/sleep.c', 'openssl/crypto/sparse_array.c', + 'openssl/crypto/ssl_err.c', 'openssl/crypto/threads_lib.c', 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', 'openssl/crypto/trace.c', 'openssl/crypto/uid.c', 'openssl/crypto/md4/md4_dgst.c', @@ -544,6 +611,15 @@ 'openssl/crypto/md5/md5_sha1.c', 'openssl/crypto/mdc2/mdc2_one.c', 'openssl/crypto/mdc2/mdc2dgst.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -555,6 +631,7 @@ 'openssl/crypto/modes/siv128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/objects/o_names.c', 'openssl/crypto/objects/obj_dat.c', 'openssl/crypto/objects/obj_err.c', @@ -619,6 +696,7 @@ 'openssl/crypto/rand/rand_lib.c', 'openssl/crypto/rand/rand_meth.c', 'openssl/crypto/rand/rand_pool.c', + 'openssl/crypto/rand/rand_uniform.c', 'openssl/crypto/rand/randfile.c', 'openssl/crypto/rc2/rc2_cbc.c', 'openssl/crypto/rc2/rc2_ecb.c', @@ -667,6 +745,16 @@ 'openssl/crypto/sha/sha512.c', 'openssl/crypto/sha/sha_ppc.c', 'openssl/crypto/siphash/siphash.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/sm2/sm2_crypt.c', 'openssl/crypto/sm2/sm2_err.c', 'openssl/crypto/sm2/sm2_key.c', @@ -684,6 +772,12 @@ 'openssl/crypto/store/store_register.c', 'openssl/crypto/store/store_result.c', 'openssl/crypto/store/store_strings.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/crypto/ts/ts_asn1.c', 'openssl/crypto/ts/ts_conf.c', 'openssl/crypto/ts/ts_err.c', @@ -712,14 +806,22 @@ 'openssl/crypto/x509/pcy_map.c', 'openssl/crypto/x509/pcy_node.c', 'openssl/crypto/x509/pcy_tree.c', + 'openssl/crypto/x509/t_acert.c', 'openssl/crypto/x509/t_crl.c', 'openssl/crypto/x509/t_req.c', 'openssl/crypto/x509/t_x509.c', + 'openssl/crypto/x509/v3_aaa.c', + 'openssl/crypto/x509/v3_ac_tgt.c', 'openssl/crypto/x509/v3_addr.c', 'openssl/crypto/x509/v3_admis.c', 'openssl/crypto/x509/v3_akeya.c', 'openssl/crypto/x509/v3_akid.c', 'openssl/crypto/x509/v3_asid.c', + 'openssl/crypto/x509/v3_attrdesc.c', + 'openssl/crypto/x509/v3_attrmap.c', + 'openssl/crypto/x509/v3_audit_id.c', + 'openssl/crypto/x509/v3_authattid.c', + 'openssl/crypto/x509/v3_battcons.c', 'openssl/crypto/x509/v3_bcons.c', 'openssl/crypto/x509/v3_bitst.c', 'openssl/crypto/x509/v3_conf.c', @@ -728,12 +830,17 @@ 'openssl/crypto/x509/v3_enum.c', 'openssl/crypto/x509/v3_extku.c', 'openssl/crypto/x509/v3_genn.c', + 'openssl/crypto/x509/v3_group_ac.c', 'openssl/crypto/x509/v3_ia5.c', + 'openssl/crypto/x509/v3_ind_iss.c', 'openssl/crypto/x509/v3_info.c', 'openssl/crypto/x509/v3_int.c', + 'openssl/crypto/x509/v3_iobo.c', 'openssl/crypto/x509/v3_ist.c', 'openssl/crypto/x509/v3_lib.c', 'openssl/crypto/x509/v3_ncons.c', + 'openssl/crypto/x509/v3_no_ass.c', + 'openssl/crypto/x509/v3_no_rev_avail.c', 'openssl/crypto/x509/v3_pci.c', 'openssl/crypto/x509/v3_pcia.c', 'openssl/crypto/x509/v3_pcons.c', @@ -741,13 +848,20 @@ 'openssl/crypto/x509/v3_pmaps.c', 'openssl/crypto/x509/v3_prn.c', 'openssl/crypto/x509/v3_purp.c', + 'openssl/crypto/x509/v3_rolespec.c', 'openssl/crypto/x509/v3_san.c', + 'openssl/crypto/x509/v3_sda.c', + 'openssl/crypto/x509/v3_single_use.c', 'openssl/crypto/x509/v3_skid.c', + 'openssl/crypto/x509/v3_soa_id.c', 'openssl/crypto/x509/v3_sxnet.c', + 'openssl/crypto/x509/v3_timespec.c', 'openssl/crypto/x509/v3_tlsf.c', + 'openssl/crypto/x509/v3_usernotice.c', 'openssl/crypto/x509/v3_utf8.c', 'openssl/crypto/x509/v3_utl.c', 'openssl/crypto/x509/v3err.c', + 'openssl/crypto/x509/x509_acert.c', 'openssl/crypto/x509/x509_att.c', 'openssl/crypto/x509/x509_cmp.c', 'openssl/crypto/x509/x509_d2.c', @@ -765,6 +879,7 @@ 'openssl/crypto/x509/x509_v3.c', 'openssl/crypto/x509/x509_vfy.c', 'openssl/crypto/x509/x509_vpm.c', + 'openssl/crypto/x509/x509aset.c', 'openssl/crypto/x509/x509cset.c', 'openssl/crypto/x509/x509name.c', 'openssl/crypto/x509/x509rset.c', @@ -774,6 +889,7 @@ 'openssl/crypto/x509/x_attrib.c', 'openssl/crypto/x509/x_crl.c', 'openssl/crypto/x509/x_exten.c', + 'openssl/crypto/x509/x_ietfatt.c', 'openssl/crypto/x509/x_name.c', 'openssl/crypto/x509/x_pubkey.c', 'openssl/crypto/x509/x_req.c', @@ -805,6 +921,9 @@ 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c', 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', @@ -829,7 +948,13 @@ 'openssl/providers/implementations/ciphers/cipher_cts.c', 'openssl/providers/implementations/ciphers/cipher_null.c', 'openssl/providers/implementations/ciphers/cipher_sm4.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm_hw.c', 'openssl/providers/implementations/ciphers/cipher_sm4_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts_hw.c', 'openssl/providers/implementations/ciphers/cipher_tdes.c', 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', 'openssl/providers/implementations/ciphers/cipher_tdes_default.c', @@ -858,11 +983,16 @@ 'openssl/providers/implementations/encode_decode/encode_key2ms.c', 'openssl/providers/implementations/encode_decode/encode_key2text.c', 'openssl/providers/implementations/encode_decode/endecoder_common.c', + 'openssl/providers/implementations/encode_decode/ml_common_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_dsa_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_kem_codecs.c', 'openssl/providers/implementations/exchange/dh_exch.c', 'openssl/providers/implementations/exchange/ecdh_exch.c', 'openssl/providers/implementations/exchange/ecx_exch.c', 'openssl/providers/implementations/exchange/kdf_exch.c', + 'openssl/providers/implementations/kdfs/argon2.c', 'openssl/providers/implementations/kdfs/hkdf.c', + 'openssl/providers/implementations/kdfs/hmacdrbg_kdf.c', 'openssl/providers/implementations/kdfs/kbkdf.c', 'openssl/providers/implementations/kdfs/krb5kdf.c', 'openssl/providers/implementations/kdfs/pbkdf2.c', @@ -873,6 +1003,11 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ec_kem.c', + 'openssl/providers/implementations/kem/ecx_kem.c', + 'openssl/providers/implementations/kem/kem_util.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -880,7 +1015,11 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/blake2b_mac.c', 'openssl/providers/implementations/macs/blake2s_mac.c', 'openssl/providers/implementations/macs/cmac_prov.c', @@ -889,12 +1028,12 @@ 'openssl/providers/implementations/macs/kmac_prov.c', 'openssl/providers/implementations/macs/poly1305_prov.c', 'openssl/providers/implementations/macs/siphash_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', 'openssl/providers/implementations/rands/seed_src.c', + 'openssl/providers/implementations/rands/seed_src_jitter.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/rands/seeding/rand_cpu_x86.c', 'openssl/providers/implementations/rands/seeding/rand_tsc.c', @@ -904,17 +1043,23 @@ 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', 'openssl/providers/implementations/signature/sm2_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', 'openssl/providers/implementations/storemgmt/file_store.c', 'openssl/providers/implementations/storemgmt/file_store_any2obj.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -925,7 +1070,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/implementations/ciphers/cipher_blowfish.c', 'openssl/providers/implementations/ciphers/cipher_blowfish_hw.c', 'openssl/providers/implementations/ciphers/cipher_cast5.c', @@ -950,6 +1095,7 @@ 'openssl/providers/implementations/digests/ripemd_prov.c', 'openssl/providers/implementations/digests/wp_prov.c', 'openssl/providers/implementations/kdfs/pbkdf1.c', + 'openssl/providers/implementations/kdfs/pvkkdf.c', 'openssl/providers/prov_running.c', 'openssl/providers/legacyprov.c', ], @@ -959,9 +1105,11 @@ './config/archs/aix64-gcc-as/asm/crypto/aes/vpaes-ppc.s', './config/archs/aix64-gcc-as/asm/crypto/bn/bn-ppc.s', './config/archs/aix64-gcc-as/asm/crypto/bn/ppc-mont.s', + './config/archs/aix64-gcc-as/asm/crypto/bn/ppc64-mont-fixed.s', './config/archs/aix64-gcc-as/asm/crypto/chacha/chacha-ppc.s', './config/archs/aix64-gcc-as/asm/crypto/ec/ecp_nistz256-ppc64.s', './config/archs/aix64-gcc-as/asm/crypto/ec/x25519-ppc64.s', + './config/archs/aix64-gcc-as/asm/crypto/params_idx.c', './config/archs/aix64-gcc-as/asm/crypto/ppccpuid.s', './config/archs/aix64-gcc-as/asm/crypto/modes/ghashp8-ppc.s', './config/archs/aix64-gcc-as/asm/crypto/poly1305/poly1305-ppc.s', @@ -977,7 +1125,9 @@ './config/archs/aix64-gcc-as/asm/providers/common/der/der_dsa_gen.c', './config/archs/aix64-gcc-as/asm/providers/common/der/der_ec_gen.c', './config/archs/aix64-gcc-as/asm/providers/common/der/der_ecx_gen.c', + './config/archs/aix64-gcc-as/asm/providers/common/der/der_ml_dsa_gen.c', './config/archs/aix64-gcc-as/asm/providers/common/der/der_rsa_gen.c', + './config/archs/aix64-gcc-as/asm/providers/common/der/der_slh_dsa_gen.c', './config/archs/aix64-gcc-as/asm/providers/common/der/der_wrap_gen.c', './config/archs/aix64-gcc-as/asm/providers/legacy.ld', './config/archs/aix64-gcc-as/asm/providers/fips.ld', diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/providers/common/der/der_ml_dsa_gen.c b/deps/openssl/config/archs/aix64-gcc-as/asm/providers/common/der/der_ml_dsa_gen.c new file mode 100644 index 00000000000000..4a8a113a268578 --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/providers/common/der/der_ml_dsa_gen.c @@ -0,0 +1,37 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_ml_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44] = { + DER_OID_V_id_ml_dsa_44 +}; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65] = { + DER_OID_V_id_ml_dsa_65 +}; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87] = { + DER_OID_V_id_ml_dsa_87 +}; + diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/providers/common/der/der_slh_dsa_gen.c b/deps/openssl/config/archs/aix64-gcc-as/asm/providers/common/der/der_slh_dsa_gen.c new file mode 100644 index 00000000000000..1419a9515097dd --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/providers/common/der/der_slh_dsa_gen.c @@ -0,0 +1,100 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_slh_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s] = { + DER_OID_V_id_slh_dsa_sha2_128s +}; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f] = { + DER_OID_V_id_slh_dsa_sha2_128f +}; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s] = { + DER_OID_V_id_slh_dsa_sha2_192s +}; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f] = { + DER_OID_V_id_slh_dsa_sha2_192f +}; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s] = { + DER_OID_V_id_slh_dsa_sha2_256s +}; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f] = { + DER_OID_V_id_slh_dsa_sha2_256f +}; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s] = { + DER_OID_V_id_slh_dsa_shake_128s +}; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f] = { + DER_OID_V_id_slh_dsa_shake_128f +}; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s] = { + DER_OID_V_id_slh_dsa_shake_192s +}; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f] = { + DER_OID_V_id_slh_dsa_shake_192f +}; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s] = { + DER_OID_V_id_slh_dsa_shake_256s +}; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f] = { + DER_OID_V_id_slh_dsa_shake_256f +}; + diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/providers/common/include/prov/der_ml_dsa.h b/deps/openssl/config/archs/aix64-gcc-as/asm/providers/common/include/prov/der_ml_dsa.h new file mode 100644 index 00000000000000..c55f780ab4527c --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/providers/common/include/prov/der_ml_dsa.h @@ -0,0 +1,40 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_ml_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +#define DER_OID_V_id_ml_dsa_44 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x11 +#define DER_OID_SZ_id_ml_dsa_44 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44]; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +#define DER_OID_V_id_ml_dsa_65 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x12 +#define DER_OID_SZ_id_ml_dsa_65 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65]; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +#define DER_OID_V_id_ml_dsa_87 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x13 +#define DER_OID_SZ_id_ml_dsa_87 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87]; + + +int ossl_DER_w_algorithmIdentifier_ML_DSA(WPACKET *pkt, int tag, ML_DSA_KEY *key); diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/providers/common/include/prov/der_slh_dsa.h b/deps/openssl/config/archs/aix64-gcc-as/asm/providers/common/include/prov/der_slh_dsa.h new file mode 100644 index 00000000000000..760f8e7699be72 --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/providers/common/include/prov/der_slh_dsa.h @@ -0,0 +1,103 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_slh_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x14 +#define DER_OID_SZ_id_slh_dsa_sha2_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s]; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x15 +#define DER_OID_SZ_id_slh_dsa_sha2_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f]; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x16 +#define DER_OID_SZ_id_slh_dsa_sha2_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s]; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x17 +#define DER_OID_SZ_id_slh_dsa_sha2_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f]; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x18 +#define DER_OID_SZ_id_slh_dsa_sha2_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s]; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x19 +#define DER_OID_SZ_id_slh_dsa_sha2_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f]; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +#define DER_OID_V_id_slh_dsa_shake_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1A +#define DER_OID_SZ_id_slh_dsa_shake_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s]; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +#define DER_OID_V_id_slh_dsa_shake_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1B +#define DER_OID_SZ_id_slh_dsa_shake_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f]; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +#define DER_OID_V_id_slh_dsa_shake_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1C +#define DER_OID_SZ_id_slh_dsa_shake_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s]; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +#define DER_OID_V_id_slh_dsa_shake_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1D +#define DER_OID_SZ_id_slh_dsa_shake_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f]; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +#define DER_OID_V_id_slh_dsa_shake_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1E +#define DER_OID_SZ_id_slh_dsa_shake_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s]; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +#define DER_OID_V_id_slh_dsa_shake_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1F +#define DER_OID_SZ_id_slh_dsa_shake_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f]; + + +int ossl_DER_w_algorithmIdentifier_SLH_DSA(WPACKET *pkt, int tag, SLH_DSA_KEY *key); diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/apps/progs.c b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/apps/progs.c index 43cef00799b86e..acc204a3e6e781 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/apps/progs.c +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/apps/progs.c @@ -89,6 +89,7 @@ FUNCTION functions[] = { {FT_general, "s_time", s_time_main, s_time_options, NULL, NULL}, #endif {FT_general, "sess_id", sess_id_main, sess_id_options, NULL, NULL}, + {FT_general, "skeyutl", skeyutl_main, skeyutl_options, NULL, NULL}, {FT_general, "smime", smime_main, smime_options, NULL, NULL}, {FT_general, "speed", speed_main, speed_options, NULL, NULL}, {FT_general, "spkac", spkac_main, spkac_options, NULL, NULL}, @@ -225,9 +226,15 @@ FUNCTION functions[] = { {FT_cipher, "camellia-256-ecb", enc_main, enc_options, NULL}, #endif {FT_cipher, "base64", enc_main, enc_options, NULL}, -#ifdef ZLIB +#ifndef OPENSSL_NO_ZLIB {FT_cipher, "zlib", enc_main, enc_options, NULL}, #endif +#ifndef OPENSSL_NO_BROTLI + {FT_cipher, "brotli", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ZSTD + {FT_cipher, "zstd", enc_main, enc_options, NULL}, +#endif #ifndef OPENSSL_NO_DES {FT_cipher, "des", enc_main, enc_options, NULL}, #endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/configdata.pm b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/configdata.pm index 393fad24afa5b7..22701a7f0e675b 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/configdata.pm @@ -18,6 +18,7 @@ our %config = ( "ARFLAGS" => [ "qc" ], + "ASFLAGS" => [], "CC" => "../config/fake_gcc.pl", "CFLAGS" => [ "-O" @@ -27,14 +28,16 @@ our %config = ( "CPPINCLUDES" => [], "CXXFLAGS" => [], "FIPSKEY" => "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813", + "FIPS_VENDOR" => "OpenSSL FIPS Provider", "HASHBANGPERL" => "/usr/bin/env perl", "LDFLAGS" => [], "LDLIBS" => [], + "OBJCOPY" => "objcopy", "PERL" => "/usr/bin/perl", "RANLIB" => "ranlib -X64", "RC" => "windres", "RCFLAGS" => [], - "api" => "30000", + "api" => "30500", "b32" => "0", "b64" => "0", "b64l" => "1", @@ -56,11 +59,13 @@ our %config = ( "doc/build.info", "test/build.info", "engines/build.info", + "exporters/build.info", "crypto/objects/build.info", "crypto/buffer/build.info", "crypto/bio/build.info", "crypto/stack/build.info", "crypto/lhash/build.info", + "crypto/hashtable/build.info", "crypto/rand/build.info", "crypto/evp/build.info", "crypto/asn1/build.info", @@ -78,6 +83,7 @@ our %config = ( "crypto/md5/build.info", "crypto/sha/build.info", "crypto/mdc2/build.info", + "crypto/ml_kem/build.info", "crypto/hmac/build.info", "crypto/ripemd/build.info", "crypto/whrlpool/build.info", @@ -119,11 +125,19 @@ our %config = ( "crypto/cmp/build.info", "crypto/encode_decode/build.info", "crypto/ffc/build.info", + "crypto/hpke/build.info", + "crypto/thread/build.info", + "crypto/ml_dsa/build.info", + "crypto/slh_dsa/build.info", + "ssl/record/build.info", + "ssl/rio/build.info", + "ssl/quic/build.info", "apps/lib/build.info", "providers/common/build.info", "providers/implementations/build.info", "providers/fips/build.info", "doc/man1/build.info", + "ssl/record/methods/build.info", "providers/common/der/build.info", "providers/implementations/digests/build.info", "providers/implementations/ciphers/build.info", @@ -137,6 +151,7 @@ our %config = ( "providers/implementations/encode_decode/build.info", "providers/implementations/storemgmt/build.info", "providers/implementations/kem/build.info", + "providers/implementations/skeymgmt/build.info", "providers/implementations/rands/seeding/build.info" ], "build_metadata" => "", @@ -156,7 +171,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.17", + "full_version" => "3.5.2", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -165,37 +180,52 @@ our %config = ( "libdir" => "", "major" => "3", "makedep_scheme" => "gcc", - "minor" => "0", + "minor" => "5", "openssl_api_defines" => [ - "OPENSSL_CONFIGURED_API=30000" + "OPENSSL_CONFIGURED_API=30500" ], "openssl_feature_defines" => [ "OPENSSL_RAND_SEED_OS", "OPENSSL_THREADS", "OPENSSL_NO_AFALGENG", "OPENSSL_NO_ASAN", + "OPENSSL_NO_BROTLI", + "OPENSSL_NO_BROTLI_DYNAMIC", "OPENSSL_NO_COMP", "OPENSSL_NO_CRYPTO_MDEBUG", "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE", + "OPENSSL_NO_DEMOS", "OPENSSL_NO_DEVCRYPTOENG", "OPENSSL_NO_EC_NISTP_64_GCC_128", "OPENSSL_NO_EGD", "OPENSSL_NO_EXTERNAL_TESTS", + "OPENSSL_NO_FIPS_JITTER", "OPENSSL_NO_FUZZ_AFL", "OPENSSL_NO_FUZZ_LIBFUZZER", + "OPENSSL_NO_H3DEMO", + "OPENSSL_NO_HQINTEROP", + "OPENSSL_NO_JITTER", "OPENSSL_NO_KTLS", "OPENSSL_NO_LOADERENG", "OPENSSL_NO_MD2", "OPENSSL_NO_MSAN", + "OPENSSL_NO_PIE", "OPENSSL_NO_RC5", "OPENSSL_NO_SCTP", "OPENSSL_NO_SSL3", "OPENSSL_NO_SSL3_METHOD", + "OPENSSL_NO_SSLKEYLOG", + "OPENSSL_NO_TFO", "OPENSSL_NO_TRACE", "OPENSSL_NO_UBSAN", "OPENSSL_NO_UNIT_TEST", "OPENSSL_NO_UPLINK", "OPENSSL_NO_WEAK_SSL_CIPHERS", + "OPENSSL_NO_WINSTORE", + "OPENSSL_NO_ZLIB", + "OPENSSL_NO_ZLIB_DYNAMIC", + "OPENSSL_NO_ZSTD", + "OPENSSL_NO_ZSTD_DYNAMIC", "OPENSSL_NO_DYNAMIC_ENGINE" ], "openssl_other_defines" => [ @@ -205,11 +235,11 @@ our %config = ( "OPENSSL_SYS_AIX" ], "openssldir" => "", - "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "17", + "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", + "patch" => "2", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", - "perl_version" => "5.38.2", + "perl_version" => "5.34.0", "perlargv" => [ "no-comp", "no-shared", @@ -239,6 +269,7 @@ our %config = ( "LDLIBS" => undef, "MT" => undef, "MTFLAGS" => undef, + "OBJCOPY" => undef, "OPENSSL_LOCAL_CONFIG_DIR" => undef, "PERL" => undef, "RANLIB" => undef, @@ -258,11 +289,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "1 Jul 2025", + "release_date" => "5 Aug 2025", "shlib_version" => "3", "sourcedir" => ".", "target" => "aix64-gcc-as", - "version" => "3.0.17" + "version" => "3.5.2" ); our %target = ( "AR" => "ar -X64", @@ -270,6 +301,7 @@ our %target = ( "CC" => "gcc", "CFLAGS" => "-O", "HASHBANGPERL" => "/usr/bin/env perl", + "OBJCOPY" => "objcopy", "RANLIB" => "ranlib -X64", "RC" => "windres", "_conf_fname_int" => [ @@ -281,6 +313,8 @@ our %target = ( "Configurations/shared-info.pl" ], "asm_arch" => "ppc64", + "bin_cflags" => "", + "bin_lflags" => "", "bn_ops" => "SIXTY_FOUR_BIT_LONG RC4_CHAR", "build_file" => "Makefile", "build_scheme" => [ @@ -323,6 +357,8 @@ our %target = ( our @disablables = ( "acvp-tests", "afalgeng", + "apps", + "argon2", "aria", "asan", "asm", @@ -333,11 +369,14 @@ our @disablables = ( "autoload-config", "bf", "blake2", + "brotli", + "brotli-dynamic", "buildtest-c++", "bulk", "cached-fetch", "camellia", "capieng", + "winstore", "cast", "chacha", "cmac", @@ -346,11 +385,16 @@ our @disablables = ( "comp", "crypto-mdebug", "ct", + "default-thread-pool", + "demos", + "h3demo", + "hqinterop", "deprecated", "des", "devcryptoeng", "dgram", "dh", + "docs", "dsa", "dso", "dtls", @@ -360,6 +404,7 @@ our @disablables = ( "ec_nistp_64_gcc_128", "ecdh", "ecdsa", + "ecx", "egd", "engine", "err", @@ -367,10 +412,15 @@ our @disablables = ( "filenames", "fips", "fips-securitychecks", + "fips-post", + "fips-jitter", "fuzz-afl", "fuzz-libfuzzer", "gost", + "http", "idea", + "integrity-only-ciphers", + "jitter", "ktls", "legacy", "loadereng", @@ -378,6 +428,8 @@ our @disablables = ( "md2", "md4", "mdc2", + "ml-dsa", + "ml-kem", "module", "msan", "multiblock", @@ -386,10 +438,13 @@ our @disablables = ( "ocsp", "padlockeng", "pic", + "pie", "pinshared", "poly1305", "posix-io", "psk", + "quic", + "unstable-qlog", "rc2", "rc4", "rc5", @@ -403,7 +458,9 @@ our @disablables = ( "shared", "siphash", "siv", + "slh-dsa", "sm2", + "sm2-precomp", "sm3", "sm4", "sock", @@ -414,9 +471,13 @@ our @disablables = ( "ssl-trace", "static-engine", "stdio", + "sslkeylog", "tests", + "tfo", + "thread-pool", "threads", "tls", + "tls-deprecated-ec", "trace", "ts", "ubsan", @@ -427,6 +488,8 @@ our @disablables = ( "whirlpool", "zlib", "zlib-dynamic", + "zstd", + "zstd-dynamic", "ssl3", "ssl3-method", "tls1", @@ -447,33 +510,46 @@ our @disablables_int = ( our %disabled = ( "afalgeng" => "option", "asan" => "default", + "brotli" => "default", + "brotli-dynamic" => "default", "buildtest-c++" => "default", "comp" => "option", "crypto-mdebug" => "default", "crypto-mdebug-backtrace" => "default", + "demos" => "default", "devcryptoeng" => "default", "dynamic-engine" => "cascade", "ec_nistp_64_gcc_128" => "default", "egd" => "default", "external-tests" => "default", + "fips-jitter" => "default", "fuzz-afl" => "default", "fuzz-libfuzzer" => "default", + "h3demo" => "default", + "hqinterop" => "default", + "jitter" => "default", "ktls" => "default", "loadereng" => "cascade", "md2" => "default", "msan" => "default", + "pie" => "default", "rc5" => "default", "sctp" => "default", "shared" => "option", "ssl3" => "default", "ssl3-method" => "default", + "sslkeylog" => "default", + "tfo" => "default", "trace" => "default", "ubsan" => "default", "unit-test" => "default", "uplink" => "no uplink_arch", "weak-ssl-ciphers" => "default", + "winstore" => "not-windows", "zlib" => "default", - "zlib-dynamic" => "default" + "zlib-dynamic" => "default", + "zstd" => "default", + "zstd-dynamic" => "default" ); our %withargs = (); our %unified_info = ( @@ -699,6 +775,11 @@ our %unified_info = ( "pod" => "1" } }, + "doc/man1/openssl-skeyutl.pod" => { + "doc/man1/openssl-skeyutl.pod.in" => { + "pod" => "1" + } + }, "doc/man1/openssl-smime.pod" => { "doc/man1/openssl-smime.pod.in" => { "pod" => "1" @@ -756,6 +837,21 @@ our %unified_info = ( } }, "generate" => { + "exporters/OpenSSLConfig.cmake" => { + "exporter" => "cmake" + }, + "exporters/OpenSSLConfigVersion.cmake" => { + "exporter" => "cmake" + }, + "exporters/libcrypto.pc" => { + "exporter" => "pkg-config" + }, + "exporters/libssl.pc" => { + "exporter" => "pkg-config" + }, + "exporters/openssl.pc" => { + "exporter" => "pkg-config" + }, "include/openssl/configuration.h" => { "skip" => "1" } @@ -776,6 +872,9 @@ our %unified_info = ( "providers/liblegacy.a" => { "noinst" => "1" }, + "providers/libtemplate.a" => { + "noinst" => "1" + }, "test/libtestutil.a" => { "has_main" => "1", "noinst" => "1" @@ -793,6 +892,9 @@ our %unified_info = ( } }, "programs" => { + "fuzz/acert-test" => { + "noinst" => "1" + }, "fuzz/asn1-test" => { "noinst" => "1" }, @@ -823,9 +925,60 @@ our %unified_info = ( "fuzz/ct-test" => { "noinst" => "1" }, + "fuzz/decoder-test" => { + "noinst" => "1" + }, + "fuzz/dtlsclient-test" => { + "noinst" => "1" + }, + "fuzz/dtlsserver-test" => { + "noinst" => "1" + }, + "fuzz/hashtable-test" => { + "noinst" => "1" + }, + "fuzz/ml-dsa-test" => { + "noinst" => "1" + }, + "fuzz/ml-kem-test" => { + "noinst" => "1" + }, + "fuzz/pem-test" => { + "noinst" => "1" + }, + "fuzz/provider-test" => { + "noinst" => "1" + }, + "fuzz/punycode-test" => { + "noinst" => "1" + }, + "fuzz/quic-client-test" => { + "noinst" => "1" + }, + "fuzz/quic-lcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-rcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-server-test" => { + "noinst" => "1" + }, + "fuzz/quic-srtm-test" => { + "noinst" => "1" + }, "fuzz/server-test" => { "noinst" => "1" }, + "fuzz/slh-dsa-test" => { + "noinst" => "1" + }, + "fuzz/smime-test" => { + "noinst" => "1" + }, + "fuzz/v3name-test" => { + "noinst" => "1" + }, "fuzz/x509-test" => { "noinst" => "1" }, @@ -877,18 +1030,30 @@ our %unified_info = ( "test/bftest" => { "noinst" => "1" }, + "test/bio_addr_test" => { + "noinst" => "1" + }, + "test/bio_base64_test" => { + "noinst" => "1" + }, "test/bio_callback_test" => { "noinst" => "1" }, "test/bio_core_test" => { "noinst" => "1" }, + "test/bio_dgram_test" => { + "noinst" => "1" + }, "test/bio_enc_test" => { "noinst" => "1" }, "test/bio_memleak_test" => { "noinst" => "1" }, + "test/bio_meth_test" => { + "noinst" => "1" + }, "test/bio_prefix_text" => { "noinst" => "1" }, @@ -898,6 +1063,9 @@ our %unified_info = ( "test/bio_readbuffer_test" => { "noinst" => "1" }, + "test/bio_tfo_test" => { + "noinst" => "1" + }, "test/bioprinttest" => { "noinst" => "1" }, @@ -907,6 +1075,9 @@ our %unified_info = ( "test/bntest" => { "noinst" => "1" }, + "test/build_wincrypt_test" => { + "noinst" => "1" + }, "test/buildtest_c_aes" => { "noinst" => "1" }, @@ -922,6 +1093,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => { "noinst" => "1" }, + "test/buildtest_c_byteorder" => { + "noinst" => "1" + }, "test/buildtest_c_camellia" => { "noinst" => "1" }, @@ -946,9 +1120,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => { "noinst" => "1" }, - "test/buildtest_c_core_names" => { - "noinst" => "1" - }, "test/buildtest_c_core_object" => { "noinst" => "1" }, @@ -973,6 +1144,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => { "noinst" => "1" }, + "test/buildtest_c_e_ostime" => { + "noinst" => "1" + }, "test/buildtest_c_ebcdic" => { "noinst" => "1" }, @@ -1000,12 +1174,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => { "noinst" => "1" }, + "test/buildtest_c_hpke" => { + "noinst" => "1" + }, "test/buildtest_c_http" => { "noinst" => "1" }, "test/buildtest_c_idea" => { "noinst" => "1" }, + "test/buildtest_c_indicator" => { + "noinst" => "1" + }, "test/buildtest_c_kdf" => { "noinst" => "1" }, @@ -1021,6 +1201,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => { "noinst" => "1" }, + "test/buildtest_c_ml_kem" => { + "noinst" => "1" + }, "test/buildtest_c_modes" => { "noinst" => "1" }, @@ -1051,6 +1234,9 @@ our %unified_info = ( "test/buildtest_c_provider" => { "noinst" => "1" }, + "test/buildtest_c_quic" => { + "noinst" => "1" + }, "test/buildtest_c_rand" => { "noinst" => "1" }, @@ -1093,6 +1279,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => { "noinst" => "1" }, + "test/buildtest_c_thread" => { + "noinst" => "1" + }, "test/buildtest_c_tls1" => { "noinst" => "1" }, @@ -1108,6 +1297,12 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => { "noinst" => "1" }, + "test/byteorder_test" => { + "noinst" => "1" + }, + "test/ca_internals_test" => { + "noinst" => "1" + }, "test/casttest" => { "noinst" => "1" }, @@ -1192,6 +1387,9 @@ our %unified_info = ( "test/danetest" => { "noinst" => "1" }, + "test/decoder_propq_test" => { + "noinst" => "1" + }, "test/defltfips_test" => { "noinst" => "1" }, @@ -1264,15 +1462,24 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => { "noinst" => "1" }, + "test/evp_pkey_dhkem_test" => { + "noinst" => "1" + }, "test/evp_pkey_dparams_test" => { "noinst" => "1" }, "test/evp_pkey_provided_test" => { "noinst" => "1" }, + "test/evp_skey_test" => { + "noinst" => "1" + }, "test/evp_test" => { "noinst" => "1" }, + "test/evp_xof_test" => { + "noinst" => "1" + }, "test/exdatatest" => { "noinst" => "1" }, @@ -1300,6 +1507,9 @@ our %unified_info = ( "test/hmactest" => { "noinst" => "1" }, + "test/hpke_test" => { + "noinst" => "1" + }, "test/http_test" => { "noinst" => "1" }, @@ -1309,12 +1519,18 @@ our %unified_info = ( "test/igetest" => { "noinst" => "1" }, + "test/json_test" => { + "noinst" => "1" + }, "test/keymgmt_internal_test" => { "noinst" => "1" }, "test/lhash_test" => { "noinst" => "1" }, + "test/list_test" => { + "noinst" => "1" + }, "test/localetest" => { "noinst" => "1" }, @@ -1324,9 +1540,21 @@ our %unified_info = ( "test/mdc2test" => { "noinst" => "1" }, + "test/membio_test" => { + "noinst" => "1" + }, "test/memleaktest" => { "noinst" => "1" }, + "test/ml_dsa_test" => { + "noinst" => "1" + }, + "test/ml_kem_evp_extra_test" => { + "noinst" => "1" + }, + "test/ml_kem_internal_test" => { + "noinst" => "1" + }, "test/modes_internal_test" => { "noinst" => "1" }, @@ -1345,6 +1573,9 @@ our %unified_info = ( "test/packettest" => { "noinst" => "1" }, + "test/pairwise_fail_test" => { + "noinst" => "1" + }, "test/param_build_test" => { "noinst" => "1" }, @@ -1369,6 +1600,9 @@ our %unified_info = ( "test/pemtest" => { "noinst" => "1" }, + "test/pkcs12_api_test" => { + "noinst" => "1" + }, "test/pkcs12_format_test" => { "noinst" => "1" }, @@ -1384,6 +1618,9 @@ our %unified_info = ( "test/poly1305_internal_test" => { "noinst" => "1" }, + "test/priority_queue_test" => { + "noinst" => "1" + }, "test/property_test" => { "noinst" => "1" }, @@ -1393,6 +1630,9 @@ our %unified_info = ( "test/provfetchtest" => { "noinst" => "1" }, + "test/provider_default_search_path_test" => { + "noinst" => "1" + }, "test/provider_fallback_test" => { "noinst" => "1" }, @@ -1411,6 +1651,72 @@ our %unified_info = ( "test/punycode_test" => { "noinst" => "1" }, + "test/quic_ackm_test" => { + "noinst" => "1" + }, + "test/quic_cc_test" => { + "noinst" => "1" + }, + "test/quic_cfq_test" => { + "noinst" => "1" + }, + "test/quic_client_test" => { + "noinst" => "1" + }, + "test/quic_fc_test" => { + "noinst" => "1" + }, + "test/quic_fifd_test" => { + "noinst" => "1" + }, + "test/quic_lcidm_test" => { + "noinst" => "1" + }, + "test/quic_multistream_test" => { + "noinst" => "1" + }, + "test/quic_newcid_test" => { + "noinst" => "1" + }, + "test/quic_qlog_test" => { + "noinst" => "1" + }, + "test/quic_radix_test" => { + "noinst" => "1" + }, + "test/quic_rcidm_test" => { + "noinst" => "1" + }, + "test/quic_record_test" => { + "noinst" => "1" + }, + "test/quic_srt_gen_test" => { + "noinst" => "1" + }, + "test/quic_srtm_test" => { + "noinst" => "1" + }, + "test/quic_stream_test" => { + "noinst" => "1" + }, + "test/quic_tserver_test" => { + "noinst" => "1" + }, + "test/quic_txp_test" => { + "noinst" => "1" + }, + "test/quic_txpim_test" => { + "noinst" => "1" + }, + "test/quic_wire_test" => { + "noinst" => "1" + }, + "test/quicapitest" => { + "noinst" => "1" + }, + "test/quicfaultstest" => { + "noinst" => "1" + }, "test/rand_status_test" => { "noinst" => "1" }, @@ -1426,12 +1732,15 @@ our %unified_info = ( "test/rc5test" => { "noinst" => "1" }, - "test/rdrand_sanitytest" => { + "test/rdcpu_sanitytest" => { "noinst" => "1" }, "test/recordlentest" => { "noinst" => "1" }, + "test/rpktest" => { + "noinst" => "1" + }, "test/rsa_complex" => { "noinst" => "1" }, @@ -1444,6 +1753,12 @@ our %unified_info = ( "test/rsa_test" => { "noinst" => "1" }, + "test/rsa_x931_test" => { + "noinst" => "1" + }, + "test/safe_math_test" => { + "noinst" => "1" + }, "test/sanitytest" => { "noinst" => "1" }, @@ -1459,6 +1774,9 @@ our %unified_info = ( "test/siphash_internal_test" => { "noinst" => "1" }, + "test/slh_dsa_test" => { + "noinst" => "1" + }, "test/sm2_internal_test" => { "noinst" => "1" }, @@ -1480,6 +1798,9 @@ our %unified_info = ( "test/ssl_ctx_test" => { "noinst" => "1" }, + "test/ssl_handshake_rtt_test" => { + "noinst" => "1" + }, "test/ssl_old_test" => { "noinst" => "1" }, @@ -1501,12 +1822,18 @@ our %unified_info = ( "test/stack_test" => { "noinst" => "1" }, + "test/strtoultest" => { + "noinst" => "1" + }, "test/sysdefaulttest" => { "noinst" => "1" }, "test/test_test" => { "noinst" => "1" }, + "test/threadpool_test" => { + "noinst" => "1" + }, "test/threadstest" => { "noinst" => "1" }, @@ -1516,12 +1843,18 @@ our %unified_info = ( "test/time_offset_test" => { "noinst" => "1" }, + "test/time_test" => { + "noinst" => "1" + }, "test/tls13ccstest" => { "noinst" => "1" }, "test/tls13encryptiontest" => { "noinst" => "1" }, + "test/tls13groupselection_test" => { + "noinst" => "1" + }, "test/trace_api_test" => { "noinst" => "1" }, @@ -1549,6 +1882,9 @@ our %unified_info = ( "test/wpackettest" => { "noinst" => "1" }, + "test/x509_acert_test" => { + "noinst" => "1" + }, "test/x509_check_cert_pkey_test" => { "noinst" => "1" }, @@ -1558,6 +1894,15 @@ our %unified_info = ( "test/x509_internal_test" => { "noinst" => "1" }, + "test/x509_load_cert_file_test" => { + "noinst" => "1" + }, + "test/x509_req_test" => { + "noinst" => "1" + }, + "test/x509_test" => { + "noinst" => "1" + }, "test/x509_time_test" => { "noinst" => "1" }, @@ -1639,6 +1984,9 @@ our %unified_info = ( "VPAES_ASM", "X25519_ASM" ], + "test/endecode_test" => [ + "STATIC_LEGACY" + ], "test/evp_extra_test" => [ "STATIC_LEGACY" ], @@ -1651,14 +1999,21 @@ our %unified_info = ( }, "depends" => { "" => [ + "OpenSSLConfigVersion.cmake", + "crypto/params_idx.c", + "exporters/OpenSSLConfigVersion.cmake", + "exporters/openssl.pc", "include/crypto/bn_conf.h", "include/crypto/dso_conf.h", + "include/internal/param_names.h", "include/openssl/asn1.h", "include/openssl/asn1t.h", "include/openssl/bio.h", "include/openssl/cmp.h", "include/openssl/cms.h", + "include/openssl/comp.h", "include/openssl/conf.h", + "include/openssl/core_names.h", "include/openssl/crmf.h", "include/openssl/crypto.h", "include/openssl/ct.h", @@ -1675,10 +2030,22 @@ our %unified_info = ( "include/openssl/ssl.h", "include/openssl/ui.h", "include/openssl/x509.h", + "include/openssl/x509_acert.h", "include/openssl/x509_vfy.h", "include/openssl/x509v3.h", + "openssl.pc", "test/provider_internal_test.cnf" ], + "OpenSSLConfig.cmake" => [ + "builddata.pm" + ], + "OpenSSLConfigVersion.cmake" => [ + "OpenSSLConfig.cmake", + "builddata.pm" + ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/progs.h" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/progs.h" ], @@ -1824,6 +2191,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/progs.h" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/progs.h" + ], "apps/openssl-bin-smime.o" => [ "apps/progs.h" ], @@ -1912,6 +2282,9 @@ our %unified_info = ( "crypto/libcrypto-lib-info.o" => [ "crypto/buildinf.h" ], + "crypto/params_idx.c" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "crypto/rc4/rc4-586.S" => [ "crypto/perlasm/x86asm.pl" ], @@ -2077,6 +2450,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -2218,6 +2594,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -2254,6 +2633,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -2269,6 +2651,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -2341,6 +2726,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -2407,6 +2795,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -2506,6 +2897,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -2644,6 +3041,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -2761,6 +3161,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -2848,6 +3254,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -2920,9 +3329,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -2938,12 +3353,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -3013,9 +3434,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -3025,12 +3455,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -3046,9 +3488,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -3073,6 +3521,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -3088,6 +3539,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -3124,6 +3578,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -3397,6 +3854,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -3436,6 +3896,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -3457,6 +3920,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -3571,6 +4037,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -3598,9 +4067,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -3616,6 +4097,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -3625,12 +4109,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -3649,12 +4139,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -3664,9 +4166,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -3679,9 +4187,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -3697,24 +4217,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -3727,6 +4268,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -3736,8 +4283,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -3757,6 +4304,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -3805,6 +4367,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -3871,6 +4436,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -3994,9 +4562,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -4012,6 +4586,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -4036,9 +4613,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -4072,6 +4658,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -4129,15 +4718,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -4147,6 +4748,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -4168,9 +4772,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -4186,6 +4796,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -4198,9 +4811,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -4231,9 +4841,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -4249,12 +4856,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -4309,6 +4970,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -4318,9 +4982,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -4468,6 +5129,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -4609,6 +5273,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -4645,6 +5312,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -4660,6 +5330,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -4732,6 +5405,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -4798,6 +5474,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -4897,6 +5576,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -5035,6 +5720,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -5152,6 +5840,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -5239,6 +5933,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -5311,9 +6008,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -5329,12 +6032,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -5404,9 +6113,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -5416,12 +6134,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -5437,9 +6167,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -5464,6 +6200,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -5479,6 +6218,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -5515,6 +6257,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -5788,6 +6533,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -5827,6 +6575,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -5848,6 +6599,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -5962,6 +6716,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -5989,9 +6746,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -6007,6 +6776,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -6016,12 +6788,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -6040,12 +6818,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -6055,9 +6845,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -6070,9 +6866,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -6088,24 +6896,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -6118,6 +6947,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -6127,8 +6962,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -6148,6 +6983,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -6196,6 +7046,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -6262,6 +7115,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -6385,9 +7241,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -6403,6 +7265,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -6427,9 +7292,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -6463,6 +7337,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -6520,15 +7397,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -6538,6 +7427,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -6559,9 +7451,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -6577,6 +7475,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -6589,9 +7490,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -6622,9 +7520,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -6640,12 +7535,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -6700,6 +7649,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -6709,9 +7661,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -6891,6 +7840,10 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod.in", "doc/perlvars.pm" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in", + "doc/perlvars.pm" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in", "doc/perlvars.pm" @@ -6930,6 +7883,27 @@ our %unified_info = ( "doc/man7/openssl_user_macros.pod" => [ "doc/man7/openssl_user_macros.pod.in" ], + "exporters/OpenSSLConfig.cmake" => [ + "installdata.pm" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/OpenSSLConfig.cmake", + "installdata.pm" + ], + "exporters/libcrypto.pc" => [ + "installdata.pm" + ], + "exporters/libssl.pc" => [ + "installdata.pm" + ], + "exporters/openssl.pc" => [ + "exporters/libcrypto.pc", + "exporters/libssl.pc", + "installdata.pm" + ], + "fuzz/acert-test" => [ + "libcrypto" + ], "fuzz/asn1-test" => [ "libcrypto", "libssl" @@ -6962,17 +7936,85 @@ our %unified_info = ( "fuzz/ct-test" => [ "libcrypto" ], + "fuzz/decoder-test" => [ + "libcrypto" + ], + "fuzz/dtlsclient-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/dtlsserver-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/hashtable-test" => [ + "libcrypto.a" + ], + "fuzz/ml-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/ml-kem-test" => [ + "libcrypto.a" + ], + "fuzz/pem-test" => [ + "libcrypto.a" + ], + "fuzz/provider-test" => [ + "libcrypto" + ], + "fuzz/punycode-test" => [ + "libcrypto.a" + ], + "fuzz/quic-client-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-lcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-rcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-server-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-srtm-test" => [ + "libcrypto.a", + "libssl.a" + ], "fuzz/server-test" => [ "libcrypto", "libssl" ], + "fuzz/slh-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/smime-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/v3name-test" => [ + "libcrypto.a" + ], "fuzz/x509-test" => [ "libcrypto" ], + "include/internal/param_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], + "include/openssl/core_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "libcrypto.ld" => [ "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libcrypto.pc" => [ + "builddata.pm" + ], "libssl" => [ "libcrypto" ], @@ -6980,6 +8022,14 @@ our %unified_info = ( "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libssl.pc" => [ + "builddata.pm" + ], + "openssl.pc" => [ + "builddata.pm", + "libcrypto.pc", + "libssl.pc" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/DIGESTS.asn1", "providers/common/der/NIST.asn1", @@ -6997,11 +8047,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7041,6 +8099,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov/der_rsa.h" ], @@ -7048,6 +8112,12 @@ our %unified_info = ( "providers/common/include/prov/der_digests.h", "providers/common/include/prov/der_rsa.h" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov/der_wrap.h" ], @@ -7087,11 +8157,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7124,9 +8202,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov/der_sm2.h" ], @@ -7139,9 +8223,15 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/legacy" => [ "libcrypto", "providers/liblegacy.a" @@ -7219,6 +8309,14 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_addr_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/bio_base64_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_callback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7227,6 +8325,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_dgram_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_enc_test" => [ "libcrypto", "test/libtestutil.a" @@ -7235,6 +8337,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_meth_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_prefix_text" => [ "libcrypto", "test/libtestutil.a" @@ -7247,6 +8353,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_tfo_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bioprinttest" => [ "libcrypto", "test/libtestutil.a" @@ -7259,6 +8369,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/build_wincrypt_test" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_aes" => [ "libcrypto", "libssl" @@ -7279,6 +8393,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_byteorder" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_camellia" => [ "libcrypto", "libssl" @@ -7311,10 +8429,6 @@ our %unified_info = ( "libcrypto", "libssl" ], - "test/buildtest_c_core_names" => [ - "libcrypto", - "libssl" - ], "test/buildtest_c_core_object" => [ "libcrypto", "libssl" @@ -7347,6 +8461,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_e_ostime" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_ebcdic" => [ "libcrypto", "libssl" @@ -7383,6 +8501,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_hpke" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_http" => [ "libcrypto", "libssl" @@ -7391,6 +8513,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_indicator" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_kdf" => [ "libcrypto", "libssl" @@ -7411,6 +8537,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_ml_kem" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_modes" => [ "libcrypto", "libssl" @@ -7451,6 +8581,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_quic" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_rand" => [ "libcrypto", "libssl" @@ -7507,6 +8641,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_thread" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_tls1" => [ "libcrypto", "libssl" @@ -7527,10 +8665,23 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/byteorder_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ca_internals_test" => [ + "libssl", + "test/libtestutil.a" + ], "test/casttest" => [ "libcrypto", "test/libtestutil.a" ], + "test/cert_comp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/chacha_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7644,7 +8795,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], - "test/defltfips_test" => [ + "test/decoder_propq_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/defltfips_test" => [ "libcrypto", "test/libtestutil.a" ], @@ -7700,6 +8855,8 @@ our %unified_info = ( ], "test/endecode_test" => [ "libcrypto.a", + "providers/libcommon.a", + "providers/liblegacy.a", "test/libtestutil.a" ], "test/endecoder_legacy_test" => [ @@ -7743,6 +8900,10 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => [ "libcrypto" ], + "test/evp_pkey_dhkem_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/evp_pkey_dparams_test" => [ "libcrypto", "test/libtestutil.a" @@ -7751,10 +8912,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/evp_skey_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/evp_xof_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/exdatatest" => [ "libcrypto", "test/libtestutil.a" @@ -7793,6 +8962,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/hpke_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/http_test" => [ "libcrypto", "test/libtestutil.a" @@ -7805,17 +8978,25 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/json_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/keymgmt_internal_test" => [ "libcrypto.a", "test/libtestutil.a" ], "test/lhash_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/libtestutil.a" => [ "libcrypto" ], + "test/list_test" => [ + "test/libtestutil.a" + ], "test/localetest" => [ "libcrypto", "test/libtestutil.a" @@ -7828,10 +9009,26 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/membio_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/memleaktest" => [ "libcrypto", "test/libtestutil.a" ], + "test/ml_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_evp_extra_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_internal_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/modes_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7856,6 +9053,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pairwise_fail_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/param_build_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7888,6 +9089,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pkcs12_api_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/pkcs12_format_test" => [ "libcrypto", "test/libtestutil.a" @@ -7908,6 +9113,11 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/priority_queue_test" => [ + "libcrypto", + "libssl.a", + "test/libtestutil.a" + ], "test/property_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7920,6 +9130,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/provider_default_search_path_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/provider_fallback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7944,12 +9158,122 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/quic_ackm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cfq_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_client_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fifd_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_lcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_multistream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_newcid_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_qlog_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_radix_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_rcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_record_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srt_gen_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srtm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_stream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_tserver_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txpim_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_wire_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicapitest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicfaultstest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/rand_status_test" => [ "libcrypto", "test/libtestutil.a" ], "test/rand_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/rc2test" => [ @@ -7964,7 +9288,7 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "libcrypto.a", "test/libtestutil.a" ], @@ -7973,6 +9297,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/rpktest" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/rsa_mp_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7985,10 +9314,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/sanitytest" => [ + "test/rsa_x931_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/safe_math_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/sanitytest" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/secmemtest" => [ "libcrypto", "test/libtestutil.a" @@ -8006,6 +9343,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/slh_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/sm2_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8035,6 +9376,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/ssl_handshake_rtt_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/ssl_old_test" => [ "libcrypto.a", "libssl.a", @@ -8051,8 +9397,8 @@ our %unified_info = ( "test/libtestutil.a" ], "test/sslapitest" => [ - "libcrypto", - "libssl", + "libcrypto.a", + "libssl.a", "test/libtestutil.a" ], "test/sslbuffertest" => [ @@ -8069,6 +9415,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/strtoultest" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/sysdefaulttest" => [ "libcrypto", "libssl", @@ -8078,8 +9428,12 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/threadpool_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/threadstest" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/threadstest_fips" => [ @@ -8090,6 +9444,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/time_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/tls13ccstest" => [ "libcrypto", "libssl", @@ -8100,6 +9458,11 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/tls13groupselection_test" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/trace_api_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8137,6 +9500,10 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/x509_acert_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_check_cert_pkey_test" => [ "libcrypto", "test/libtestutil.a" @@ -8149,6 +9516,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/x509_load_cert_file_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_req_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_time_test" => [ "libcrypto", "test/libtestutil.a" @@ -8163,9 +9542,13 @@ our %unified_info = ( }, "dirinfo" => { "apps" => { + "deps" => [ + "apps/ca_internals_test-bin-ca.o" + ], "products" => { "bin" => [ - "apps/openssl" + "apps/openssl", + "test/ca_internals_test" ], "script" => [ "apps/CA.pl", @@ -8176,6 +9559,14 @@ our %unified_info = ( "apps/lib" => { "deps" => [ "apps/lib/openssl-bin-cmp_mock_srv.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", "apps/lib/cmp_client_test-bin-cmp_mock_srv.o", "apps/lib/uitest-bin-apps_ui.o", "apps/lib/libapps-lib-app_libctx.o", @@ -8184,12 +9575,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -8200,6 +9593,7 @@ our %unified_info = ( "products" => { "bin" => [ "apps/openssl", + "test/ca_internals_test", "test/cmp_client_test", "test/uitest" ], @@ -8211,8 +9605,12 @@ our %unified_info = ( }, "crypto" => { "deps" => [ + "crypto/asn1_time_test-bin-ctype.o", + "crypto/ca_internals_test-bin-ctype.o", + "crypto/packettest-bin-quic_vlint.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -8222,10 +9620,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -8242,6 +9643,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-ppccap.o", "crypto/libcrypto-lib-ppccpuid.o", @@ -8251,12 +9653,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libfips-lib-asn1_dsa.o", @@ -8278,6 +9684,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-ppccap.o", "crypto/libfips-lib-ppccpuid.o", "crypto/libfips-lib-provider_core.o", @@ -8287,9 +9694,15 @@ our %unified_info = ( "crypto/libfips-lib-threads_lib.o", "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", - "crypto/libfips-lib-threads_win.o" + "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test", + "test/packettest" + ], "lib" => [ "libcrypto", "providers/libfips.a" @@ -8336,6 +9749,8 @@ our %unified_info = ( }, "crypto/asn1" => { "deps" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", "crypto/asn1/libcrypto-lib-a_bitstr.o", "crypto/asn1/libcrypto-lib-a_d2i_fp.o", "crypto/asn1/libcrypto-lib-a_digest.o", @@ -8402,6 +9817,10 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test" + ], "lib" => [ "libcrypto" ] @@ -8467,6 +9886,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -8518,6 +9938,7 @@ our %unified_info = ( "crypto/bn/libcrypto-lib-bn_word.o", "crypto/bn/libcrypto-lib-bn_x931p.o", "crypto/bn/libcrypto-lib-ppc-mont.o", + "crypto/bn/libcrypto-lib-ppc64-mont-fixed.o", "crypto/bn/libfips-lib-bn-ppc.o", "crypto/bn/libfips-lib-bn_add.o", "crypto/bn/libfips-lib-bn_blind.o", @@ -8547,7 +9968,8 @@ our %unified_info = ( "crypto/bn/libfips-lib-bn_sqr.o", "crypto/bn/libfips-lib-bn_sqrt.o", "crypto/bn/libfips-lib-bn_word.o", - "crypto/bn/libfips-lib-ppc-mont.o" + "crypto/bn/libfips-lib-ppc-mont.o", + "crypto/bn/libfips-lib-ppc64-mont-fixed.o" ], "products" => { "lib" => [ @@ -8628,6 +10050,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -9003,7 +10426,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", - "crypto/err/libcrypto-lib-err_prn.o" + "crypto/err/libcrypto-lib-err_mark.o", + "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o" ], "products" => { "lib" => [ @@ -9104,7 +10529,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/evp/libfips-lib-asymcipher.o", "crypto/evp/libfips-lib-dh_support.o", "crypto/evp/libfips-lib-digest.o", @@ -9120,14 +10547,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", - "crypto/evp/libfips-lib-signature.o" + "crypto/evp/libfips-lib-s_lib.o", + "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o" ], "products" => { "lib" => [ @@ -9160,6 +10588,20 @@ our %unified_info = ( ] } }, + "crypto/hashtable" => { + "deps" => [ + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/hmac" => { "deps" => [ "crypto/hmac/libcrypto-lib-hmac.o", @@ -9172,6 +10614,17 @@ our %unified_info = ( ] } }, + "crypto/hpke" => { + "deps" => [ + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, "crypto/http" => { "deps" => [ "crypto/http/libcrypto-lib-http_client.o", @@ -9255,6 +10708,44 @@ our %unified_info = ( ] } }, + "crypto/ml_dsa" => { + "deps" => [ + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ml_kem" => { + "deps" => [ + "crypto/ml_kem/libcrypto-lib-ml_kem.o", + "crypto/ml_kem/libfips-lib-ml_kem.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/modes" => { "deps" => [ "crypto/modes/libcrypto-lib-cbc128.o", @@ -9269,6 +10760,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -9277,7 +10769,8 @@ our %unified_info = ( "crypto/modes/libfips-lib-ghashp8-ppc.o", "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", - "crypto/modes/libfips-lib-xts128.o" + "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o" ], "products" => { "lib" => [ @@ -9423,6 +10916,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rand/libfips-lib-rand_lib.o" ], @@ -9579,6 +11073,36 @@ our %unified_info = ( ] } }, + "crypto/slh_dsa" => { + "deps" => [ + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/sm2" => { "deps" => [ "crypto/sm2/libcrypto-lib-sm2_crypt.o", @@ -9652,6 +11176,38 @@ our %unified_info = ( ] } }, + "crypto/thread" => { + "deps" => [ + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/thread/arch" => { + "deps" => [ + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/ts" => { "deps" => [ "crypto/ts/libcrypto-lib-ts_asn1.o", @@ -9718,14 +11274,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -9734,12 +11298,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -9747,13 +11316,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -9771,6 +11347,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -9780,6 +11357,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -9806,6 +11384,7 @@ our %unified_info = ( "fuzz" => { "products" => { "bin" => [ + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -9816,13 +11395,31 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test" ] } }, "providers" => { "deps" => [ + "providers/endecode_test-bin-legacyprov.o", "providers/evp_extra_test-bin-legacyprov.o", "providers/libcrypto-lib-baseprov.o", "providers/libcrypto-lib-defltprov.o", @@ -9832,6 +11429,7 @@ our %unified_info = ( ], "products" => { "bin" => [ + "test/endecode_test", "test/evp_extra_test" ], "dso" => [ @@ -9883,8 +11481,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/der/libdefault-lib-der_rsa_sig.o", "providers/common/der/libdefault-lib-der_sm2_gen.o", @@ -9903,6 +11505,7 @@ our %unified_info = ( "providers/fips" => { "deps" => [ "providers/fips/fips-dso-fips_entry.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o" @@ -9946,6 +11549,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -9970,7 +11576,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -10067,7 +11679,10 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", - "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" + "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" ], "products" => { "lib" => [ @@ -10095,7 +11710,9 @@ our %unified_info = ( }, "providers/implementations/kdfs" => { "deps" => [ + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -10114,7 +11731,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", - "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" + "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" ], "products" => { "lib" => [ @@ -10126,13 +11744,22 @@ our %unified_info = ( }, "providers/implementations/kem" => { "deps" => [ + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", - "providers/implementations/kem/libfips-lib-rsa_kem.o" + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", + "providers/implementations/kem/libfips-lib-rsa_kem.o", + "providers/implementations/kem/libtemplate-lib-template_kem.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10144,19 +11771,29 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", - "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10184,18 +11821,18 @@ our %unified_info = ( }, "providers/implementations/rands" => { "deps" => [ - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o" ], "products" => { @@ -10224,13 +11861,31 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", - "providers/implementations/signature/libfips-lib-rsa_sig.o" + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", + "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/skeymgmt" => { + "deps" => [ + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o" ], "products" => { "lib" => [ @@ -10258,14 +11913,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -10281,32 +11937,107 @@ our %unified_info = ( "ssl/libssl-lib-t1_trce.o", "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", - "ssl/libssl-lib-tls_srp.o", - "ssl/libdefault-lib-s3_cbc.o", - "ssl/libfips-lib-s3_cbc.o" + "ssl/libssl-lib-tls_srp.o" ], "products" => { "lib" => [ - "libssl", - "providers/libdefault.a", - "providers/libfips.a" + "libssl" + ] + } + }, + "ssl/quic" => { + "deps" => [ + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, "ssl/record" => { "deps" => [ - "ssl/record/libssl-lib-dtls1_bitmap.o", "ssl/record/libssl-lib-rec_layer_d1.o", - "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/libssl-lib-rec_layer_s3.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "ssl/record/methods" => { + "deps" => [ + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/record/methods/libcommon-lib-tls_pad.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o", + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "products" => { "lib" => [ "libssl", - "providers/libcommon.a" + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "ssl/rio" => { + "deps" => [ + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, @@ -10344,9 +12075,40 @@ our %unified_info = ( "test/helpers/dtlstest-bin-ssltestlib.o", "test/helpers/endecode_test-bin-predefined_dhparams.o", "test/helpers/fatalerrtest-bin-ssltestlib.o", + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/helpers/pkcs12_api_test-bin-pkcs12.o", "test/helpers/pkcs12_format_test-bin-pkcs12.o", + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", "test/helpers/recordlentest-bin-ssltestlib.o", + "test/helpers/rpktest-bin-ssltestlib.o", "test/helpers/servername_test-bin-ssltestlib.o", + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/helpers/ssl_test-bin-handshake.o", "test/helpers/ssl_test-bin-handshake_srp.o", @@ -10355,7 +12117,8 @@ our %unified_info = ( "test/helpers/sslapitest-bin-ssltestlib.o", "test/helpers/sslbuffertest-bin-ssltestlib.o", "test/helpers/sslcorrupttest-bin-ssltestlib.o", - "test/helpers/tls13ccstest-bin-ssltestlib.o" + "test/helpers/tls13ccstest-bin-ssltestlib.o", + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" ], "products" => { "bin" => [ @@ -10373,16 +12136,37 @@ our %unified_info = ( "test/dtlstest", "test/endecode_test", "test/fatalerrtest", + "test/json_test", + "test/pkcs12_api_test", "test/pkcs12_format_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_radix_test", + "test/quic_srt_gen_test", + "test/quicapitest", + "test/quicfaultstest", "test/recordlentest", + "test/rpktest", "test/servername_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", "test/sslapitest", "test/sslbuffertest", "test/sslcorrupttest", - "test/tls13ccstest" + "test/tls13ccstest", + "test/tls13groupselection_test" + ] + } + }, + "test/radix" => { + "deps" => [ + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "products" => { + "bin" => [ + "test/quic_radix_test" ] } }, @@ -10394,6 +12178,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -10429,6 +12214,12 @@ our %unified_info = ( } }, "generate" => { + "OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], "apps/progs.c" => [ "apps/progs.pl", "\"-C\"", @@ -10439,6 +12230,19 @@ our %unified_info = ( "\"-H\"", "\$(APPS_OPENSSL)" ], + "builddata.pm" => [ + "util/mkinstallvars.pl", + "PREFIX=.", + "BINDIR=apps", + "APPLINKDIR=ms", + "LIBDIR=", + "INCLUDEDIR=include", + "\"INCLUDEDIR=\$(SRCDIR)/include\"", + "ENGINESDIR=engines", + "MODULESDIR=providers", + "\"VERSION=\$(VERSION)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"" + ], "crypto/aes/aes-586.S" => [ "crypto/aes/asm/aes-586.pl" ], @@ -10460,6 +12264,24 @@ our %unified_info = ( "crypto/aes/aes-ppc.s" => [ "crypto/aes/asm/aes-ppc.pl" ], + "crypto/aes/aes-riscv32-zkn.s" => [ + "crypto/aes/asm/aes-riscv32-zkn.pl" + ], + "crypto/aes/aes-riscv64-zkn.s" => [ + "crypto/aes/asm/aes-riscv64-zkn.pl" + ], + "crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvbb-zvkg-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkb-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkb-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkned.pl" + ], + "crypto/aes/aes-riscv64.s" => [ + "crypto/aes/asm/aes-riscv64.pl" + ], "crypto/aes/aes-s390x.S" => [ "crypto/aes/asm/aes-s390x.pl" ], @@ -10487,6 +12309,9 @@ our %unified_info = ( "crypto/aes/aesni-x86_64.s" => [ "crypto/aes/asm/aesni-x86_64.pl" ], + "crypto/aes/aesni-xts-avx512.s" => [ + "crypto/aes/asm/aesni-xts-avx512.pl" + ], "crypto/aes/aesp8-ppc.s" => [ "crypto/aes/asm/aesp8-ppc.pl" ], @@ -10499,12 +12324,18 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.S" => [ "crypto/aes/asm/bsaes-armv7.pl" ], + "crypto/aes/bsaes-armv8.S" => [ + "crypto/aes/asm/bsaes-armv8.pl" + ], "crypto/aes/bsaes-x86_64.s" => [ "crypto/aes/asm/bsaes-x86_64.pl" ], "crypto/aes/vpaes-armv8.S" => [ "crypto/aes/asm/vpaes-armv8.pl" ], + "crypto/aes/vpaes-loongarch64.S" => [ + "crypto/aes/asm/vpaes-loongarch64.pl" + ], "crypto/aes/vpaes-ppc.s" => [ "crypto/aes/asm/vpaes-ppc.pl" ], @@ -10565,15 +12396,33 @@ our %unified_info = ( "crypto/bn/ppc-mont.s" => [ "crypto/bn/asm/ppc-mont.pl" ], + "crypto/bn/ppc64-mont-fixed.s" => [ + "crypto/bn/asm/ppc64-mont-fixed.pl" + ], "crypto/bn/ppc64-mont.s" => [ "crypto/bn/asm/ppc64-mont.pl" ], + "crypto/bn/rsaz-2k-avx512.s" => [ + "crypto/bn/asm/rsaz-2k-avx512.pl" + ], + "crypto/bn/rsaz-2k-avxifma.s" => [ + "crypto/bn/asm/rsaz-2k-avxifma.pl" + ], + "crypto/bn/rsaz-3k-avx512.s" => [ + "crypto/bn/asm/rsaz-3k-avx512.pl" + ], + "crypto/bn/rsaz-3k-avxifma.s" => [ + "crypto/bn/asm/rsaz-3k-avxifma.pl" + ], + "crypto/bn/rsaz-4k-avx512.s" => [ + "crypto/bn/asm/rsaz-4k-avx512.pl" + ], + "crypto/bn/rsaz-4k-avxifma.s" => [ + "crypto/bn/asm/rsaz-4k-avxifma.pl" + ], "crypto/bn/rsaz-avx2.s" => [ "crypto/bn/asm/rsaz-avx2.pl" ], - "crypto/bn/rsaz-avx512.s" => [ - "crypto/bn/asm/rsaz-avx512.pl" - ], "crypto/bn/rsaz-x86_64.s" => [ "crypto/bn/asm/rsaz-x86_64.pl" ], @@ -10635,6 +12484,9 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.S" => [ "crypto/chacha/asm/chacha-armv4.pl" ], + "crypto/chacha/chacha-armv8-sve.S" => [ + "crypto/chacha/asm/chacha-armv8-sve.pl" + ], "crypto/chacha/chacha-armv8.S" => [ "crypto/chacha/asm/chacha-armv8.pl" ], @@ -10647,9 +12499,19 @@ our %unified_info = ( "crypto/chacha/chacha-ia64.s" => [ "crypto/chacha/chacha-ia64.S" ], + "crypto/chacha/chacha-loongarch64.S" => [ + "crypto/chacha/asm/chacha-loongarch64.pl" + ], "crypto/chacha/chacha-ppc.s" => [ "crypto/chacha/asm/chacha-ppc.pl" ], + "crypto/chacha/chacha-riscv64-v-zbb-zvkb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl", + "zvkb" + ], + "crypto/chacha/chacha-riscv64-v-zbb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl" + ], "crypto/chacha/chacha-s390x.S" => [ "crypto/chacha/asm/chacha-s390x.pl" ], @@ -10659,6 +12521,9 @@ our %unified_info = ( "crypto/chacha/chacha-x86_64.s" => [ "crypto/chacha/asm/chacha-x86_64.pl" ], + "crypto/chacha/chachap10-ppc.s" => [ + "crypto/chacha/asm/chachap10-ppc.pl" + ], "crypto/des/crypt586.S" => [ "crypto/des/asm/crypt586.pl" ], @@ -10671,6 +12536,9 @@ our %unified_info = ( "crypto/des/dest4-sparcv9.S" => [ "crypto/des/asm/dest4-sparcv9.pl" ], + "crypto/ec/ecp_nistp384-ppc64.s" => [ + "crypto/ec/asm/ecp_nistp384-ppc64.pl" + ], "crypto/ec/ecp_nistp521-ppc64.s" => [ "crypto/ec/asm/ecp_nistp521-ppc64.pl" ], @@ -10695,6 +12563,9 @@ our %unified_info = ( "crypto/ec/ecp_nistz256-x86_64.s" => [ "crypto/ec/asm/ecp_nistz256-x86_64.pl" ], + "crypto/ec/ecp_sm2p256-armv8.S" => [ + "crypto/ec/asm/ecp_sm2p256-armv8.pl" + ], "crypto/ec/x25519-ppc64.s" => [ "crypto/ec/asm/x25519-ppc64.pl" ], @@ -10704,18 +12575,39 @@ our %unified_info = ( "crypto/ia64cpuid.s" => [ "crypto/ia64cpuid.S" ], + "crypto/loongarch64cpuid.s" => [ + "crypto/loongarch64cpuid.pl" + ], "crypto/md5/md5-586.S" => [ "crypto/md5/asm/md5-586.pl" ], + "crypto/md5/md5-aarch64.S" => [ + "crypto/md5/asm/md5-aarch64.pl" + ], + "crypto/md5/md5-loongarch64.S" => [ + "crypto/md5/asm/md5-loongarch64.pl" + ], "crypto/md5/md5-sparcv9.S" => [ "crypto/md5/asm/md5-sparcv9.pl" ], "crypto/md5/md5-x86_64.s" => [ "crypto/md5/asm/md5-x86_64.pl" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.S" => [ + "crypto/modes/asm/aes-gcm-armv8-unroll8_64.pl" + ], "crypto/modes/aes-gcm-armv8_64.S" => [ "crypto/modes/asm/aes-gcm-armv8_64.pl" ], + "crypto/modes/aes-gcm-avx512.s" => [ + "crypto/modes/asm/aes-gcm-avx512.pl" + ], + "crypto/modes/aes-gcm-ppc.s" => [ + "crypto/modes/asm/aes-gcm-ppc.pl" + ], + "crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s" => [ + "crypto/modes/asm/aes-gcm-riscv64-zvkb-zvkg-zvkned.pl" + ], "crypto/modes/aesni-gcm-x86_64.s" => [ "crypto/modes/asm/aesni-gcm-x86_64.pl" ], @@ -10734,6 +12626,15 @@ our %unified_info = ( "crypto/modes/ghash-parisc.s" => [ "crypto/modes/asm/ghash-parisc.pl" ], + "crypto/modes/ghash-riscv64-zvkb-zvbc.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkb-zvbc.pl" + ], + "crypto/modes/ghash-riscv64-zvkg.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkg.pl" + ], + "crypto/modes/ghash-riscv64.s" => [ + "crypto/modes/asm/ghash-riscv64.pl" + ], "crypto/modes/ghash-s390x.S" => [ "crypto/modes/asm/ghash-s390x.pl" ], @@ -10752,6 +12653,9 @@ our %unified_info = ( "crypto/modes/ghashv8-armx.S" => [ "crypto/modes/asm/ghashv8-armx.pl" ], + "crypto/params_idx.c" => [ + "crypto/params_idx.c.in" + ], "crypto/pariscid.s" => [ "crypto/pariscid.pl" ], @@ -10812,6 +12716,12 @@ our %unified_info = ( "crypto/ripemd/rmd-586.S" => [ "crypto/ripemd/asm/rmd-586.pl" ], + "crypto/riscv32cpuid.s" => [ + "crypto/riscv32cpuid.pl" + ], + "crypto/riscv64cpuid.s" => [ + "crypto/riscv64cpuid.pl" + ], "crypto/s390xcpuid.S" => [ "crypto/s390xcpuid.pl" ], @@ -10920,6 +12830,9 @@ our %unified_info = ( "crypto/sha/sha256-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S" => [ + "crypto/sha/asm/sha256-riscv64-zvkb-zvknha_or_zvknhb.pl" + ], "crypto/sha/sha256-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -10956,6 +12869,9 @@ our %unified_info = ( "crypto/sha/sha512-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha512-riscv64-zvkb-zvknhb.S" => [ + "crypto/sha/asm/sha512-riscv64-zvkb-zvknhb.pl" + ], "crypto/sha/sha512-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -10968,6 +12884,24 @@ our %unified_info = ( "crypto/sha/sha512p8-ppc.s" => [ "crypto/sha/asm/sha512p8-ppc.pl" ], + "crypto/sm3/sm3-armv8.S" => [ + "crypto/sm3/asm/sm3-armv8.pl" + ], + "crypto/sm3/sm3-riscv64-zvksh.S" => [ + "crypto/sm3/asm/sm3-riscv64-zvksh.pl" + ], + "crypto/sm4/sm4-armv8.S" => [ + "crypto/sm4/asm/sm4-armv8.pl" + ], + "crypto/sm4/sm4-riscv64-zvksed.s" => [ + "crypto/sm4/asm/sm4-riscv64-zvksed.pl" + ], + "crypto/sm4/vpsm4-armv8.S" => [ + "crypto/sm4/asm/vpsm4-armv8.pl" + ], + "crypto/sm4/vpsm4_ex-armv8.S" => [ + "crypto/sm4/asm/vpsm4_ex-armv8.pl" + ], "crypto/uplink-ia64.s" => [ "ms/uplink-ia64.pl" ], @@ -11133,6 +13067,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -11274,6 +13211,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -11310,6 +13250,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -11325,6 +13268,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -11397,6 +13343,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -11463,6 +13412,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -11562,6 +13514,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -11700,6 +13658,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -11817,6 +13778,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -11904,6 +13871,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -11976,9 +13946,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -11994,12 +13970,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -12069,9 +14051,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -12081,12 +14072,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -12102,9 +14105,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -12129,6 +14138,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -12144,6 +14156,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -12180,6 +14195,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -12453,6 +14471,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -12492,6 +14513,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -12513,6 +14537,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -12627,6 +14654,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -12654,9 +14684,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -12672,6 +14714,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -12681,12 +14726,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -12705,12 +14756,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -12720,9 +14783,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -12735,9 +14804,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -12753,24 +14834,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -12783,6 +14885,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -12792,8 +14900,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -12813,6 +14921,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -12861,6 +14984,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -12927,6 +15053,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -13050,9 +15179,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -13068,6 +15203,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -13092,9 +15230,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -13128,6 +15275,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -13185,15 +15335,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -13203,6 +15365,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -13224,9 +15389,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -13242,6 +15413,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -13254,9 +15428,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -13287,9 +15458,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -13305,12 +15473,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -13365,6 +15587,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -13374,9 +15599,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -13524,6 +15746,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -13665,6 +15890,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -13701,6 +15929,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -13716,6 +15947,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -13788,6 +16022,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -13854,6 +16091,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -13953,6 +16193,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -14091,6 +16337,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -14208,6 +16457,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -14295,6 +16550,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -14367,9 +16625,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -14385,12 +16649,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -14460,9 +16730,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -14472,12 +16751,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -14493,9 +16784,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -14520,6 +16817,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -14535,6 +16835,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -14571,6 +16874,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -14844,6 +17150,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -14883,6 +17192,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -14904,6 +17216,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -15018,6 +17333,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -15045,9 +17363,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -15063,6 +17393,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -15072,12 +17405,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -15096,12 +17435,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -15111,9 +17462,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -15126,9 +17483,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -15144,24 +17513,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -15174,6 +17564,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -15183,8 +17579,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -15204,6 +17600,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -15252,6 +17663,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -15318,6 +17732,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -15441,9 +17858,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -15459,6 +17882,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -15483,9 +17909,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -15519,6 +17954,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -15576,15 +18014,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -15594,6 +18044,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -15615,9 +18068,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -15633,6 +18092,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -15645,9 +18107,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -15678,9 +18137,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -15696,12 +18152,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -15756,6 +18266,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -15765,9 +18278,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -15903,6 +18413,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc/man1/openssl-sess_id.pod.in" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in" ], @@ -15939,12 +18452,30 @@ our %unified_info = ( "engines/e_padlock-x86_64.s" => [ "engines/asm/e_padlock-x86_64.pl" ], + "exporters/OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], + "exporters/libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], + "exporters/libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "exporters/openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "include/crypto/bn_conf.h" => [ "include/crypto/bn_conf.h.in" ], "include/crypto/dso_conf.h" => [ "include/crypto/dso_conf.h.in" ], + "include/internal/param_names.h" => [ + "include/internal/param_names.h.in" + ], "include/openssl/asn1.h" => [ "include/openssl/asn1.h.in" ], @@ -15960,12 +18491,18 @@ our %unified_info = ( "include/openssl/cms.h" => [ "include/openssl/cms.h.in" ], + "include/openssl/comp.h" => [ + "include/openssl/comp.h.in" + ], "include/openssl/conf.h" => [ "include/openssl/conf.h.in" ], "include/openssl/configuration.h" => [ "include/openssl/configuration.h.in" ], + "include/openssl/core_names.h" => [ + "include/openssl/core_names.h.in" + ], "include/openssl/crmf.h" => [ "include/openssl/crmf.h.in" ], @@ -16014,20 +18551,47 @@ our %unified_info = ( "include/openssl/x509.h" => [ "include/openssl/x509.h.in" ], + "include/openssl/x509_acert.h" => [ + "include/openssl/x509_acert.h.in" + ], "include/openssl/x509_vfy.h" => [ "include/openssl/x509_vfy.h.in" ], "include/openssl/x509v3.h" => [ "include/openssl/x509v3.h.in" ], + "installdata.pm" => [ + "util/mkinstallvars.pl", + "\"PREFIX=\$(INSTALLTOP)\"", + "BINDIR=bin", + "\"LIBDIR=\$(LIBDIR)\"", + "\"libdir=\$(libdir)\"", + "INCLUDEDIR=include", + "APPLINKDIR=include/openssl", + "\"ENGINESDIR=\$(ENGINESDIR)\"", + "\"MODULESDIR=\$(MODULESDIR)\"", + "\"PKGCONFIGDIR=\$(PKGCONFIGDIR)\"", + "\"CMAKECONFIGDIR=\$(CMAKECONFIGDIR)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"", + "\"VERSION=\$(VERSION)\"" + ], "libcrypto.ld" => [ "util/libcrypto.num", "libcrypto" ], + "libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], "libssl.ld" => [ "util/libssl.num", "libssl" ], + "libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/der_digests_gen.c.in" ], @@ -16040,9 +18604,15 @@ our %unified_info = ( "providers/common/der/der_ecx_gen.c" => [ "providers/common/der/der_ecx_gen.c.in" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/der_ml_dsa_gen.c.in" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/der_rsa_gen.c.in" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/der_slh_dsa_gen.c.in" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/der_sm2_gen.c.in" ], @@ -16061,9 +18631,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/include/prov/der_ecx.h.in" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/include/prov/der_ml_dsa.h.in" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/include/prov/der_rsa.h.in" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/include/prov/der_slh_dsa.h.in" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/include/prov/der_sm2.h.in" ], @@ -16105,6 +18681,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "buffer" ], + "test/buildtest_byteorder.c" => [ + "test/generate_buildtest.pl", + "byteorder" + ], "test/buildtest_camellia.c" => [ "test/generate_buildtest.pl", "camellia" @@ -16137,10 +18717,6 @@ our %unified_info = ( "test/generate_buildtest.pl", "core_dispatch" ], - "test/buildtest_core_names.c" => [ - "test/generate_buildtest.pl", - "core_names" - ], "test/buildtest_core_object.c" => [ "test/generate_buildtest.pl", "core_object" @@ -16173,6 +18749,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "e_os2" ], + "test/buildtest_e_ostime.c" => [ + "test/generate_buildtest.pl", + "e_ostime" + ], "test/buildtest_ebcdic.c" => [ "test/generate_buildtest.pl", "ebcdic" @@ -16209,6 +18789,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "hmac" ], + "test/buildtest_hpke.c" => [ + "test/generate_buildtest.pl", + "hpke" + ], "test/buildtest_http.c" => [ "test/generate_buildtest.pl", "http" @@ -16217,6 +18801,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "idea" ], + "test/buildtest_indicator.c" => [ + "test/generate_buildtest.pl", + "indicator" + ], "test/buildtest_kdf.c" => [ "test/generate_buildtest.pl", "kdf" @@ -16237,6 +18825,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "mdc2" ], + "test/buildtest_ml_kem.c" => [ + "test/generate_buildtest.pl", + "ml_kem" + ], "test/buildtest_modes.c" => [ "test/generate_buildtest.pl", "modes" @@ -16277,6 +18869,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "provider" ], + "test/buildtest_quic.c" => [ + "test/generate_buildtest.pl", + "quic" + ], "test/buildtest_rand.c" => [ "test/generate_buildtest.pl", "rand" @@ -16333,6 +18929,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "symhacks" ], + "test/buildtest_thread.c" => [ + "test/generate_buildtest.pl", + "thread" + ], "test/buildtest_tls1.c" => [ "test/generate_buildtest.pl", "tls1" @@ -16413,6 +19013,7 @@ our %unified_info = ( "doc/html/man1/openssl-s_server.html", "doc/html/man1/openssl-s_time.html", "doc/html/man1/openssl-sess_id.html", + "doc/html/man1/openssl-skeyutl.html", "doc/html/man1/openssl-smime.html", "doc/html/man1/openssl-speed.html", "doc/html/man1/openssl-spkac.html", @@ -16462,6 +19063,7 @@ our %unified_info = ( "doc/html/man3/BIO_find_type.html", "doc/html/man3/BIO_get_data.html", "doc/html/man3/BIO_get_ex_new_index.html", + "doc/html/man3/BIO_get_rpoll_descriptor.html", "doc/html/man3/BIO_meth_new.html", "doc/html/man3/BIO_new.html", "doc/html/man3/BIO_new_CMS.html", @@ -16474,11 +19076,13 @@ our %unified_info = ( "doc/html/man3/BIO_s_connect.html", "doc/html/man3/BIO_s_core.html", "doc/html/man3/BIO_s_datagram.html", + "doc/html/man3/BIO_s_dgram_pair.html", "doc/html/man3/BIO_s_fd.html", "doc/html/man3/BIO_s_file.html", "doc/html/man3/BIO_s_mem.html", "doc/html/man3/BIO_s_null.html", "doc/html/man3/BIO_s_socket.html", + "doc/html/man3/BIO_sendmmsg.html", "doc/html/man3/BIO_set_callback.html", "doc/html/man3/BIO_should_retry.html", "doc/html/man3/BIO_socket_wait.html", @@ -16503,6 +19107,7 @@ our %unified_info = ( "doc/html/man3/BN_swap.html", "doc/html/man3/BN_zero.html", "doc/html/man3/BUF_MEM_new.html", + "doc/html/man3/CMAC_CTX.html", "doc/html/man3/CMS_EncryptedData_decrypt.html", "doc/html/man3/CMS_EncryptedData_encrypt.html", "doc/html/man3/CMS_EnvelopedData_create.html", @@ -16525,6 +19130,7 @@ our %unified_info = ( "doc/html/man3/CMS_uncompress.html", "doc/html/man3/CMS_verify.html", "doc/html/man3/CMS_verify_receipt.html", + "doc/html/man3/COMP_CTX_new.html", "doc/html/man3/CONF_modules_free.html", "doc/html/man3/CONF_modules_load_file.html", "doc/html/man3/CRYPTO_THREAD_run_once.html", @@ -16558,6 +19164,8 @@ our %unified_info = ( "doc/html/man3/DSA_size.html", "doc/html/man3/DTLS_get_data_mtu.html", "doc/html/man3/DTLS_set_timer_cb.html", + "doc/html/man3/DTLSv1_get_timeout.html", + "doc/html/man3/DTLSv1_handle_timeout.html", "doc/html/man3/DTLSv1_listen.html", "doc/html/man3/ECDSA_SIG_new.html", "doc/html/man3/ECDSA_sign.html", @@ -16604,6 +19212,7 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_ctrl.html", "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html", "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html", + "doc/html/man3/EVP_PKEY_CTX_get_algor.html", "doc/html/man3/EVP_PKEY_CTX_new.html", "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html", "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html", @@ -16643,6 +19252,8 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_verify_recover.html", "doc/html/man3/EVP_RAND.html", "doc/html/man3/EVP_SIGNATURE.html", + "doc/html/man3/EVP_SKEY.html", + "doc/html/man3/EVP_SKEYMGMT.html", "doc/html/man3/EVP_SealInit.html", "doc/html/man3/EVP_SignInit.html", "doc/html/man3/EVP_VerifyInit.html", @@ -16672,6 +19283,7 @@ our %unified_info = ( "doc/html/man3/EVP_sm3.html", "doc/html/man3/EVP_sm4_cbc.html", "doc/html/man3/EVP_whirlpool.html", + "doc/html/man3/GENERAL_NAME.html", "doc/html/man3/HMAC.html", "doc/html/man3/MD5.html", "doc/html/man3/MDC2_Init.html", @@ -16696,14 +19308,18 @@ our %unified_info = ( "doc/html/man3/OPENSSL_init_ssl.html", "doc/html/man3/OPENSSL_instrument_bus.html", "doc/html/man3/OPENSSL_load_builtin_modules.html", + "doc/html/man3/OPENSSL_load_u16_le.html", "doc/html/man3/OPENSSL_malloc.html", + "doc/html/man3/OPENSSL_riscvcap.html", "doc/html/man3/OPENSSL_s390xcap.html", "doc/html/man3/OPENSSL_secure_malloc.html", "doc/html/man3/OPENSSL_strcasecmp.html", "doc/html/man3/OSSL_ALGORITHM.html", "doc/html/man3/OSSL_CALLBACK.html", + "doc/html/man3/OSSL_CMP_ATAV_set0.html", "doc/html/man3/OSSL_CMP_CTX_new.html", "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html", + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html", "doc/html/man3/OSSL_CMP_ITAV_set0.html", "doc/html/man3/OSSL_CMP_MSG_get0_header.html", "doc/html/man3/OSSL_CMP_MSG_http_perform.html", @@ -16727,18 +19343,27 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_CTX.html", "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html", "doc/html/man3/OSSL_ENCODER_to_bio.html", + "doc/html/man3/OSSL_ERR_STATE_save.html", "doc/html/man3/OSSL_ESS_check_signing_certs.html", + "doc/html/man3/OSSL_GENERAL_NAMES_print.html", + "doc/html/man3/OSSL_HPKE_CTX_new.html", "doc/html/man3/OSSL_HTTP_REQ_CTX.html", "doc/html/man3/OSSL_HTTP_parse_url.html", "doc/html/man3/OSSL_HTTP_transfer.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html", + "doc/html/man3/OSSL_INDICATOR_set_callback.html", "doc/html/man3/OSSL_ITEM.html", "doc/html/man3/OSSL_LIB_CTX.html", + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html", "doc/html/man3/OSSL_PARAM.html", "doc/html/man3/OSSL_PARAM_BLD.html", "doc/html/man3/OSSL_PARAM_allocate_from_text.html", "doc/html/man3/OSSL_PARAM_dup.html", "doc/html/man3/OSSL_PARAM_int.html", + "doc/html/man3/OSSL_PARAM_print_to_bio.html", "doc/html/man3/OSSL_PROVIDER.html", + "doc/html/man3/OSSL_QUIC_client_method.html", "doc/html/man3/OSSL_SELF_TEST_new.html", "doc/html/man3/OSSL_SELF_TEST_set_callback.html", "doc/html/man3/OSSL_STORE_INFO.html", @@ -16747,11 +19372,13 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_attach.html", "doc/html/man3/OSSL_STORE_expect.html", "doc/html/man3/OSSL_STORE_open.html", + "doc/html/man3/OSSL_sleep.html", "doc/html/man3/OSSL_trace_enabled.html", "doc/html/man3/OSSL_trace_get_category_num.html", "doc/html/man3/OSSL_trace_set_channel.html", "doc/html/man3/OpenSSL_add_all_algorithms.html", "doc/html/man3/OpenSSL_version.html", + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html", "doc/html/man3/PEM_X509_INFO_read_bio_ex.html", "doc/html/man3/PEM_bytes_read_bio.html", "doc/html/man3/PEM_read.html", @@ -16764,6 +19391,7 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_create_cert.html", "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html", "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html", + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html", "doc/html/man3/PKCS12_add1_attr_by_NID.html", "doc/html/man3/PKCS12_add_CSPName_asc.html", "doc/html/man3/PKCS12_add_cert.html", @@ -16855,6 +19483,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_sess_set_get_cb.html", "doc/html/man3/SSL_CTX_sessions.html", "doc/html/man3/SSL_CTX_set0_CA_list.html", + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html", "doc/html/man3/SSL_CTX_set1_curves.html", "doc/html/man3/SSL_CTX_set1_sigalgs.html", "doc/html/man3/SSL_CTX_set1_verify_cert_store.html", @@ -16868,6 +19497,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_ct_validation_callback.html", "doc/html/man3/SSL_CTX_set_ctlog_list_file.html", "doc/html/man3/SSL_CTX_set_default_passwd_cb.html", + "doc/html/man3/SSL_CTX_set_domain_flags.html", "doc/html/man3/SSL_CTX_set_generate_session_id.html", "doc/html/man3/SSL_CTX_set_info_callback.html", "doc/html/man3/SSL_CTX_set_keylog_callback.html", @@ -16875,6 +19505,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_min_proto_version.html", "doc/html/man3/SSL_CTX_set_mode.html", "doc/html/man3/SSL_CTX_set_msg_callback.html", + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html", "doc/html/man3/SSL_CTX_set_num_tickets.html", "doc/html/man3/SSL_CTX_set_options.html", "doc/html/man3/SSL_CTX_set_psk_client_callback.html", @@ -16913,6 +19544,7 @@ our %unified_info = ( "doc/html/man3/SSL_SESSION_print.html", "doc/html/man3/SSL_SESSION_set1_id.html", "doc/html/man3/SSL_accept.html", + "doc/html/man3/SSL_accept_stream.html", "doc/html/man3/SSL_alert_type_string.html", "doc/html/man3/SSL_alloc_buffers.html", "doc/html/man3/SSL_check_chain.html", @@ -16922,59 +19554,90 @@ our %unified_info = ( "doc/html/man3/SSL_export_keying_material.html", "doc/html/man3/SSL_extension_supported.html", "doc/html/man3/SSL_free.html", + "doc/html/man3/SSL_get0_connection.html", + "doc/html/man3/SSL_get0_group_name.html", + "doc/html/man3/SSL_get0_peer_rpk.html", "doc/html/man3/SSL_get0_peer_scts.html", + "doc/html/man3/SSL_get1_builtin_sigalgs.html", "doc/html/man3/SSL_get_SSL_CTX.html", "doc/html/man3/SSL_get_all_async_fds.html", "doc/html/man3/SSL_get_certificate.html", "doc/html/man3/SSL_get_ciphers.html", "doc/html/man3/SSL_get_client_random.html", + "doc/html/man3/SSL_get_conn_close_info.html", "doc/html/man3/SSL_get_current_cipher.html", "doc/html/man3/SSL_get_default_timeout.html", "doc/html/man3/SSL_get_error.html", + "doc/html/man3/SSL_get_event_timeout.html", "doc/html/man3/SSL_get_extms_support.html", "doc/html/man3/SSL_get_fd.html", + "doc/html/man3/SSL_get_handshake_rtt.html", "doc/html/man3/SSL_get_peer_cert_chain.html", "doc/html/man3/SSL_get_peer_certificate.html", "doc/html/man3/SSL_get_peer_signature_nid.html", "doc/html/man3/SSL_get_peer_tmp_key.html", "doc/html/man3/SSL_get_psk_identity.html", "doc/html/man3/SSL_get_rbio.html", + "doc/html/man3/SSL_get_rpoll_descriptor.html", "doc/html/man3/SSL_get_session.html", "doc/html/man3/SSL_get_shared_sigalgs.html", + "doc/html/man3/SSL_get_stream_id.html", + "doc/html/man3/SSL_get_stream_read_state.html", + "doc/html/man3/SSL_get_value_uint.html", "doc/html/man3/SSL_get_verify_result.html", "doc/html/man3/SSL_get_version.html", "doc/html/man3/SSL_group_to_name.html", + "doc/html/man3/SSL_handle_events.html", "doc/html/man3/SSL_in_init.html", + "doc/html/man3/SSL_inject_net_dgram.html", "doc/html/man3/SSL_key_update.html", "doc/html/man3/SSL_library_init.html", "doc/html/man3/SSL_load_client_CA_file.html", "doc/html/man3/SSL_new.html", + "doc/html/man3/SSL_new_domain.html", + "doc/html/man3/SSL_new_listener.html", + "doc/html/man3/SSL_new_stream.html", "doc/html/man3/SSL_pending.html", + "doc/html/man3/SSL_poll.html", "doc/html/man3/SSL_read.html", "doc/html/man3/SSL_read_early_data.html", "doc/html/man3/SSL_rstate_string.html", "doc/html/man3/SSL_session_reused.html", "doc/html/man3/SSL_set1_host.html", + "doc/html/man3/SSL_set1_initial_peer_addr.html", + "doc/html/man3/SSL_set1_server_cert_type.html", "doc/html/man3/SSL_set_async_callback.html", "doc/html/man3/SSL_set_bio.html", + "doc/html/man3/SSL_set_blocking_mode.html", "doc/html/man3/SSL_set_connect_state.html", + "doc/html/man3/SSL_set_default_stream_mode.html", "doc/html/man3/SSL_set_fd.html", + "doc/html/man3/SSL_set_incoming_stream_policy.html", + "doc/html/man3/SSL_set_quic_tls_cbs.html", "doc/html/man3/SSL_set_retry_verify.html", "doc/html/man3/SSL_set_session.html", + "doc/html/man3/SSL_set_session_secret_cb.html", "doc/html/man3/SSL_set_shutdown.html", "doc/html/man3/SSL_set_verify_result.html", "doc/html/man3/SSL_shutdown.html", "doc/html/man3/SSL_state_string.html", + "doc/html/man3/SSL_stream_conclude.html", + "doc/html/man3/SSL_stream_reset.html", "doc/html/man3/SSL_want.html", "doc/html/man3/SSL_write.html", "doc/html/man3/TS_RESP_CTX_new.html", - "doc/html/man3/TS_VERIFY_CTX_set_certs.html", + "doc/html/man3/TS_VERIFY_CTX.html", "doc/html/man3/UI_STRING.html", "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", + "doc/html/man3/X509_ACERT_add1_attr.html", + "doc/html/man3/X509_ACERT_add_attr_nconf.html", + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html", + "doc/html/man3/X509_ACERT_get_attr.html", + "doc/html/man3/X509_ACERT_print_ex.html", "doc/html/man3/X509_ALGOR_dup.html", "doc/html/man3/X509_ATTRIBUTE.html", "doc/html/man3/X509_CRL_get0_by_serial.html", @@ -16991,6 +19654,7 @@ our %unified_info = ( "doc/html/man3/X509_REQ_get_attr.html", "doc/html/man3/X509_REQ_get_extensions.html", "doc/html/man3/X509_SIG_get0.html", + "doc/html/man3/X509_STORE_CTX_get_by_subject.html", "doc/html/man3/X509_STORE_CTX_get_error.html", "doc/html/man3/X509_STORE_CTX_new.html", "doc/html/man3/X509_STORE_CTX_set_verify_cb.html", @@ -17013,6 +19677,7 @@ our %unified_info = ( "doc/html/man3/X509_get0_notBefore.html", "doc/html/man3/X509_get0_signature.html", "doc/html/man3/X509_get0_uids.html", + "doc/html/man3/X509_get_default_cert_file.html", "doc/html/man3/X509_get_extension_flags.html", "doc/html/man3/X509_get_pubkey.html", "doc/html/man3/X509_get_serialNumber.html", @@ -17058,12 +19723,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-RC5.html", "doc/html/man7/EVP_CIPHER-SEED.html", "doc/html/man7/EVP_CIPHER-SM4.html", + "doc/html/man7/EVP_KDF-ARGON2.html", "doc/html/man7/EVP_KDF-HKDF.html", + "doc/html/man7/EVP_KDF-HMAC-DRBG.html", "doc/html/man7/EVP_KDF-KB.html", "doc/html/man7/EVP_KDF-KRB5KDF.html", "doc/html/man7/EVP_KDF-PBKDF1.html", "doc/html/man7/EVP_KDF-PBKDF2.html", "doc/html/man7/EVP_KDF-PKCS12KDF.html", + "doc/html/man7/EVP_KDF-PVKKDF.html", "doc/html/man7/EVP_KDF-SCRYPT.html", "doc/html/man7/EVP_KDF-SS.html", "doc/html/man7/EVP_KDF-SSHKDF.html", @@ -17072,7 +19740,10 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X942-ASN1.html", "doc/html/man7/EVP_KDF-X942-CONCAT.html", "doc/html/man7/EVP_KDF-X963.html", + "doc/html/man7/EVP_KEM-EC.html", + "doc/html/man7/EVP_KEM-ML-KEM.html", "doc/html/man7/EVP_KEM-RSA.html", + "doc/html/man7/EVP_KEM-X25519.html", "doc/html/man7/EVP_KEYEXCH-DH.html", "doc/html/man7/EVP_KEYEXCH-ECDH.html", "doc/html/man7/EVP_KEYEXCH-X25519.html", @@ -17084,6 +19755,7 @@ our %unified_info = ( "doc/html/man7/EVP_MAC-Poly1305.html", "doc/html/man7/EVP_MAC-Siphash.html", "doc/html/man7/EVP_MD-BLAKE2.html", + "doc/html/man7/EVP_MD-KECCAK.html", "doc/html/man7/EVP_MD-MD2.html", "doc/html/man7/EVP_MD-MD4.html", "doc/html/man7/EVP_MD-MD5-SHA1.html", @@ -17103,12 +19775,17 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-EC.html", "doc/html/man7/EVP_PKEY-FFC.html", "doc/html/man7/EVP_PKEY-HMAC.html", + "doc/html/man7/EVP_PKEY-ML-DSA.html", + "doc/html/man7/EVP_PKEY-ML-KEM.html", "doc/html/man7/EVP_PKEY-RSA.html", + "doc/html/man7/EVP_PKEY-SLH-DSA.html", "doc/html/man7/EVP_PKEY-SM2.html", "doc/html/man7/EVP_PKEY-X25519.html", + "doc/html/man7/EVP_RAND-CRNG-TEST.html", "doc/html/man7/EVP_RAND-CTR-DRBG.html", "doc/html/man7/EVP_RAND-HASH-DRBG.html", "doc/html/man7/EVP_RAND-HMAC-DRBG.html", + "doc/html/man7/EVP_RAND-JITTER.html", "doc/html/man7/EVP_RAND-SEED-SRC.html", "doc/html/man7/EVP_RAND-TEST-RAND.html", "doc/html/man7/EVP_RAND.html", @@ -17116,17 +19793,19 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-ECDSA.html", "doc/html/man7/EVP_SIGNATURE-ED25519.html", "doc/html/man7/EVP_SIGNATURE-HMAC.html", + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html", "doc/html/man7/EVP_SIGNATURE-RSA.html", + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html", "doc/html/man7/OSSL_PROVIDER-FIPS.html", "doc/html/man7/OSSL_PROVIDER-base.html", "doc/html/man7/OSSL_PROVIDER-default.html", "doc/html/man7/OSSL_PROVIDER-legacy.html", "doc/html/man7/OSSL_PROVIDER-null.html", + "doc/html/man7/OSSL_STORE-winstore.html", "doc/html/man7/RAND.html", "doc/html/man7/RSA-PSS.html", "doc/html/man7/X25519.html", "doc/html/man7/bio.html", - "doc/html/man7/crypto.html", "doc/html/man7/ct.html", "doc/html/man7/des_modes.html", "doc/html/man7/evp.html", @@ -17137,14 +19816,31 @@ our %unified_info = ( "doc/html/man7/life_cycle-mac.html", "doc/html/man7/life_cycle-pkey.html", "doc/html/man7/life_cycle-rand.html", - "doc/html/man7/migration_guide.html", "doc/html/man7/openssl-core.h.html", "doc/html/man7/openssl-core_dispatch.h.html", "doc/html/man7/openssl-core_names.h.html", "doc/html/man7/openssl-env.html", "doc/html/man7/openssl-glossary.html", + "doc/html/man7/openssl-qlog.html", + "doc/html/man7/openssl-quic-concurrency.html", + "doc/html/man7/openssl-quic.html", "doc/html/man7/openssl-threads.html", "doc/html/man7/openssl_user_macros.html", + "doc/html/man7/ossl-guide-introduction.html", + "doc/html/man7/ossl-guide-libcrypto-introduction.html", + "doc/html/man7/ossl-guide-libraries-introduction.html", + "doc/html/man7/ossl-guide-libssl-introduction.html", + "doc/html/man7/ossl-guide-migration.html", + "doc/html/man7/ossl-guide-quic-client-block.html", + "doc/html/man7/ossl-guide-quic-client-non-block.html", + "doc/html/man7/ossl-guide-quic-introduction.html", + "doc/html/man7/ossl-guide-quic-multi-stream.html", + "doc/html/man7/ossl-guide-quic-server-block.html", + "doc/html/man7/ossl-guide-quic-server-non-block.html", + "doc/html/man7/ossl-guide-tls-client-block.html", + "doc/html/man7/ossl-guide-tls-client-non-block.html", + "doc/html/man7/ossl-guide-tls-introduction.html", + "doc/html/man7/ossl-guide-tls-server-block.html", "doc/html/man7/ossl_store-file.html", "doc/html/man7/ossl_store.html", "doc/html/man7/passphrase-encoding.html", @@ -17163,10 +19859,10 @@ our %unified_info = ( "doc/html/man7/provider-object.html", "doc/html/man7/provider-rand.html", "doc/html/man7/provider-signature.html", + "doc/html/man7/provider-skeymgmt.html", "doc/html/man7/provider-storemgmt.html", "doc/html/man7/provider.html", "doc/html/man7/proxy-certificates.html", - "doc/html/man7/ssl.html", "doc/html/man7/x509.html" ] }, @@ -17181,12 +19877,21 @@ our %unified_info = ( ] }, "includes" => { + "OpenSSLConfig.cmake" => [ + "." + ], + "OpenSSLConfigVersion.cmake" => [ + "." + ], "apps/asn1parse.o" => [ "apps" ], "apps/ca.o" => [ "apps" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps" + ], "apps/ciphers.o" => [ "apps" ], @@ -17413,6 +20118,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps" + ], "apps/openssl-bin-smime.o" => [ "apps" ], @@ -17500,6 +20208,9 @@ our %unified_info = ( "apps/sess_id.o" => [ "apps" ], + "apps/skeyutl.o" => [ + "apps" + ], "apps/smime.o" => [ "apps" ], @@ -17551,6 +20262,12 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.o" => [ "crypto" ], + "crypto/aes/vpaes-armv8.o" => [ + "crypto" + ], + "crypto/aes/vpaes-loongarch64.o" => [ + "crypto" + ], "crypto/arm64cpuid.o" => [ "crypto" ], @@ -17602,9 +20319,15 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.o" => [ "crypto" ], + "crypto/chacha/chacha-armv8-sve.o" => [ + "crypto" + ], "crypto/chacha/chacha-armv8.o" => [ "crypto" ], + "crypto/chacha/chacha-loongarch64.o" => [ + "crypto" + ], "crypto/chacha/chacha-s390x.o" => [ "crypto" ], @@ -17629,15 +20352,27 @@ our %unified_info = ( "crypto/ec/ecp_s390x_nistp.o" => [ "crypto" ], + "crypto/ec/ecp_sm2p256-armv8.o" => [ + "crypto" + ], + "crypto/ec/ecx_key.o" => [ + "crypto" + ], "crypto/ec/ecx_meth.o" => [ "crypto" ], "crypto/ec/ecx_s390x.o" => [ "crypto" ], + "crypto/ec/libcrypto-lib-ecx_key.o" => [ + "crypto" + ], "crypto/ec/libcrypto-lib-ecx_meth.o" => [ "crypto" ], + "crypto/ec/libfips-lib-ecx_key.o" => [ + "crypto" + ], "crypto/evp/e_aes.o" => [ "crypto", "crypto/modes" @@ -17709,9 +20444,18 @@ our %unified_info = ( "crypto/libfips-lib-cpuid.o" => [ "." ], + "crypto/md5/md5-aarch64.o" => [ + "crypto" + ], + "crypto/md5/md5-loongarch64.o" => [ + "crypto" + ], "crypto/md5/md5-sparcv9.o" => [ "crypto" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.o" => [ + "crypto" + ], "crypto/modes/aes-gcm-armv8_64.o" => [ "crypto" ], @@ -17736,6 +20480,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-gcm128.o" => [ "crypto" ], + "crypto/params_idx.c" => [ + "util/perl" + ], "crypto/poly1305/poly1305-armv4.o" => [ "crypto" ], @@ -17757,6 +20504,9 @@ our %unified_info = ( "crypto/sha/keccak1600-armv4.o" => [ "crypto" ], + "crypto/sha/keccak1600-armv8.o" => [ + "crypto" + ], "crypto/sha/sha1-armv4-large.o" => [ "crypto" ], @@ -17802,6 +20552,18 @@ our %unified_info = ( "crypto/sha/sha512-sparcv9.o" => [ "crypto" ], + "crypto/sm3/sm3-armv8.o" => [ + "crypto" + ], + "crypto/sm4/sm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4_ex-armv8.o" => [ + "crypto" + ], "doc/man1/openssl-asn1parse.pod" => [ "doc" ], @@ -17934,6 +20696,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc" + ], "doc/man1/openssl-smime.pod" => [ "doc" ], @@ -17961,6 +20726,24 @@ our %unified_info = ( "doc/man1/openssl-x509.pod" => [ "doc" ], + "exporters/OpenSSLConfig.cmake" => [ + "." + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "." + ], + "exporters/libcrypto.pc" => [ + "." + ], + "exporters/libssl.pc" => [ + "." + ], + "exporters/openssl.pc" => [ + "." + ], + "fuzz/acert-test" => [ + "include" + ], "fuzz/asn1-test" => [ "include" ], @@ -17991,12 +20774,69 @@ our %unified_info = ( "fuzz/ct-test" => [ "include" ], + "fuzz/decoder-test" => [ + "include" + ], + "fuzz/dtlsclient-test" => [ + "include" + ], + "fuzz/dtlsserver-test" => [ + "include" + ], + "fuzz/hashtable-test" => [ + "include" + ], + "fuzz/ml-dsa-test" => [ + "include" + ], + "fuzz/ml-kem-test" => [ + "include" + ], + "fuzz/pem-test" => [ + "include" + ], + "fuzz/provider-test" => [ + "include" + ], + "fuzz/punycode-test" => [ + "include" + ], + "fuzz/quic-client-test" => [ + "include" + ], + "fuzz/quic-lcidm-test" => [ + "include" + ], + "fuzz/quic-rcidm-test" => [ + "include" + ], + "fuzz/quic-server-test" => [ + "include" + ], + "fuzz/quic-srtm-test" => [ + "include" + ], "fuzz/server-test" => [ "include" ], + "fuzz/slh-dsa-test" => [ + "include" + ], + "fuzz/smime-test" => [ + "include" + ], + "fuzz/v3name-test" => [ + "include" + ], "fuzz/x509-test" => [ "include" ], + "include/internal/param_names.h" => [ + "util/perl" + ], + "include/openssl/core_names.h" => [ + "util/perl" + ], "libcrypto" => [ ".", "include", @@ -18007,6 +20847,9 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libcrypto.pc" => [ + "." + ], "libssl" => [ ".", "include" @@ -18015,6 +20858,12 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libssl.pc" => [ + "." + ], + "openssl.pc" => [ + "." + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der" ], @@ -18054,6 +20903,15 @@ our %unified_info = ( "providers/common/der/der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der" ], @@ -18066,6 +20924,15 @@ our %unified_info = ( "providers/common/der/der_rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der" ], @@ -18111,12 +20978,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov" ], @@ -18147,9 +21026,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der" ], @@ -18192,9 +21077,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18207,12 +21098,24 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18225,28 +21128,39 @@ our %unified_info = ( "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libdefault.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libfips.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/liblegacy.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" + ], + "providers/libtemplate.a" => [ + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" ], "test/aborttest" => [ "include", @@ -18315,6 +21229,14 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_addr_test" => [ + "include", + "apps/include" + ], + "test/bio_base64_test" => [ + "include", + "apps/include" + ], "test/bio_callback_test" => [ "include", "apps/include" @@ -18323,6 +21245,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_dgram_test" => [ + "include", + "apps/include", + "." + ], "test/bio_enc_test" => [ "include", "apps/include" @@ -18331,6 +21258,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_meth_test" => [ + "include", + "apps/include" + ], "test/bio_prefix_text" => [ ".", "include", @@ -18344,6 +21275,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_tfo_test" => [ + "include", + "apps/include", + "." + ], "test/bioprinttest" => [ "include", "apps/include" @@ -18358,6 +21294,9 @@ our %unified_info = ( "include", "apps/include" ], + "test/build_wincrypt_test" => [ + "include" + ], "test/buildtest_c_aes" => [ "include" ], @@ -18373,6 +21312,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => [ "include" ], + "test/buildtest_c_byteorder" => [ + "include" + ], "test/buildtest_c_camellia" => [ "include" ], @@ -18397,9 +21339,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => [ "include" ], - "test/buildtest_c_core_names" => [ - "include" - ], "test/buildtest_c_core_object" => [ "include" ], @@ -18424,6 +21363,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => [ "include" ], + "test/buildtest_c_e_ostime" => [ + "include" + ], "test/buildtest_c_ebcdic" => [ "include" ], @@ -18451,12 +21393,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => [ "include" ], + "test/buildtest_c_hpke" => [ + "include" + ], "test/buildtest_c_http" => [ "include" ], "test/buildtest_c_idea" => [ "include" ], + "test/buildtest_c_indicator" => [ + "include" + ], "test/buildtest_c_kdf" => [ "include" ], @@ -18472,6 +21420,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => [ "include" ], + "test/buildtest_c_ml_kem" => [ + "include" + ], "test/buildtest_c_modes" => [ "include" ], @@ -18502,6 +21453,9 @@ our %unified_info = ( "test/buildtest_c_provider" => [ "include" ], + "test/buildtest_c_quic" => [ + "include" + ], "test/buildtest_c_rand" => [ "include" ], @@ -18544,6 +21498,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => [ "include" ], + "test/buildtest_c_thread" => [ + "include" + ], "test/buildtest_c_tls1" => [ "include" ], @@ -18559,10 +21516,24 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => [ "include" ], + "test/byteorder_test" => [ + "include", + "apps/include" + ], + "test/ca_internals_test" => [ + ".", + "include", + "apps/include" + ], "test/casttest" => [ "include", "apps/include" ], + "test/cert_comp_test" => [ + "include", + "apps/include", + "." + ], "test/chacha_internal_test" => [ ".", "include", @@ -18686,6 +21657,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/decoder_propq_test" => [ + ".", + "include", + "apps/include" + ], "test/defltfips_test" => [ "include", "apps/include" @@ -18701,7 +21677,8 @@ our %unified_info = ( "test/drbgtest" => [ "include", "apps/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "test/dsa_no_digest_size_test" => [ "include", @@ -18744,7 +21721,9 @@ our %unified_info = ( "test/endecode_test" => [ ".", "include", - "apps/include" + "apps/include", + "providers/common/include", + "providers/implementations/include" ], "test/endecoder_legacy_test" => [ ".", @@ -18789,6 +21768,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_pkey_dhkem_test" => [ + "include", + "apps/include" + ], "test/evp_pkey_dparams_test" => [ "include", "apps/include" @@ -18797,10 +21780,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_skey_test" => [ + "include", + "apps/include" + ], "test/evp_test" => [ "include", "apps/include" ], + "test/evp_xof_test" => [ + "include", + "apps/include" + ], "test/exdatatest" => [ "include", "apps/include" @@ -18901,22 +21892,62 @@ our %unified_info = ( ".", "include" ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/pkcs12.o" => [ ".", "include" ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + ".", + "include" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ ".", "include" ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/ssl_test-bin-handshake.o" => [ ".", "include" @@ -18950,6 +21981,10 @@ our %unified_info = ( ".", "include" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/hexstr_test" => [ ".", "include", @@ -18959,6 +21994,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/hpke_test" => [ + "include", + "apps/include" + ], "test/http_test" => [ "include", "apps/include" @@ -18971,6 +22010,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/json_test" => [ + "include", + "apps/include" + ], "test/keymgmt_internal_test" => [ ".", "include", @@ -18985,6 +22028,10 @@ our %unified_info = ( "apps/include", "." ], + "test/list_test" => [ + "include", + "apps/include" + ], "test/localetest" => [ "include", "apps/include" @@ -18998,10 +22045,27 @@ our %unified_info = ( "include", "apps/include" ], + "test/membio_test" => [ + "include", + "apps/include", + "." + ], "test/memleaktest" => [ "include", "apps/include" ], + "test/ml_dsa_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_evp_extra_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_internal_test" => [ + "include", + "apps/include" + ], "test/modes_internal_test" => [ ".", "include", @@ -19036,6 +22100,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pairwise_fail_test" => [ + "include", + "apps/include" + ], "test/param_build_test" => [ "include", "apps/include" @@ -19069,6 +22137,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pkcs12_api_test" => [ + "include", + "apps/include" + ], "test/pkcs12_format_test" => [ "include", "apps/include" @@ -19090,6 +22162,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/priority_queue_test" => [ + "include", + "apps/include" + ], "test/property_test" => [ ".", "include", @@ -19103,6 +22179,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/provider_default_search_path_test" => [ + "include", + "apps/include" + ], "test/provider_fallback_test" => [ "include", "apps/include" @@ -19129,6 +22209,97 @@ our %unified_info = ( "include", "apps/include" ], + "test/quic_ackm_test" => [ + "include", + "apps/include" + ], + "test/quic_cc_test" => [ + "include", + "apps/include" + ], + "test/quic_cfq_test" => [ + "include", + "apps/include" + ], + "test/quic_client_test" => [ + "include", + "apps/include" + ], + "test/quic_fc_test" => [ + "include", + "apps/include" + ], + "test/quic_fifd_test" => [ + "include", + "apps/include" + ], + "test/quic_lcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_multistream_test" => [ + "include", + "apps/include" + ], + "test/quic_newcid_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_qlog_test" => [ + "include", + "apps/include" + ], + "test/quic_radix_test" => [ + "include", + "apps/include" + ], + "test/quic_rcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_record_test" => [ + "include", + "apps/include" + ], + "test/quic_srt_gen_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_srtm_test" => [ + "include", + "apps/include" + ], + "test/quic_stream_test" => [ + "include", + "apps/include" + ], + "test/quic_tserver_test" => [ + "include", + "apps/include" + ], + "test/quic_txp_test" => [ + "include", + "apps/include" + ], + "test/quic_txpim_test" => [ + "include", + "apps/include" + ], + "test/quic_wire_test" => [ + "include", + "apps/include" + ], + "test/quicapitest" => [ + "include", + "apps/include" + ], + "test/quicfaultstest" => [ + "include", + "apps/include", + "." + ], "test/rand_status_test" => [ "include", "apps/include" @@ -19149,14 +22320,20 @@ our %unified_info = ( "include", "apps/include" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "include", - "apps/include" + "apps/include", + "crypto" ], "test/recordlentest" => [ "include", "apps/include" ], + "test/rpktest" => [ + "include", + "apps/include", + "." + ], "test/rsa_complex" => [ "include", "apps/include" @@ -19175,6 +22352,15 @@ our %unified_info = ( "include", "apps/include" ], + "test/rsa_x931_test" => [ + ".", + "include", + "apps/include" + ], + "test/safe_math_test" => [ + "include", + "apps/include" + ], "test/sanitytest" => [ "include", "apps/include" @@ -19196,6 +22382,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/slh_dsa_test" => [ + "include", + "apps/include" + ], "test/sm2_internal_test" => [ "include", "apps/include" @@ -19226,6 +22416,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/ssl_handshake_rtt_test" => [ + "include", + "apps/include", + "." + ], "test/ssl_old_test" => [ ".", "include", @@ -19242,6 +22437,7 @@ our %unified_info = ( "test/sslapitest" => [ "include", "apps/include", + "providers/common/include", "." ], "test/sslbuffertest" => [ @@ -19256,6 +22452,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/strtoultest" => [ + "include", + "apps/include" + ], "test/sysdefaulttest" => [ "include", "apps/include" @@ -19264,7 +22464,13 @@ our %unified_info = ( "include", "apps/include" ], + "test/threadpool_test" => [ + ".", + "include", + "apps/include" + ], "test/threadstest" => [ + ".", "include", "apps/include" ], @@ -19276,6 +22482,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/time_test" => [ + "include", + "apps/include" + ], "test/tls13ccstest" => [ "include", "apps/include" @@ -19285,6 +22495,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/tls13groupselection_test" => [ + "include", + "apps/include" + ], "test/trace_api_test" => [ ".", "include", @@ -19323,6 +22537,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_acert_test" => [ + "include", + "apps/include" + ], "test/x509_check_cert_pkey_test" => [ "include", "apps/include" @@ -19336,6 +22554,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_load_cert_file_test" => [ + "include", + "apps/include" + ], + "test/x509_req_test" => [ + "include", + "apps/include" + ], + "test/x509_test" => [ + "include", + "apps/include" + ], "test/x509_time_test" => [ "include", "apps/include" @@ -19357,6 +22587,7 @@ our %unified_info = ( "providers/libdefault.a", "providers/libfips.a", "providers/liblegacy.a", + "providers/libtemplate.a", "test/libtestutil.a" ], "mandocs" => { @@ -19409,6 +22640,7 @@ our %unified_info = ( "doc/man/man1/openssl-s_server.1", "doc/man/man1/openssl-s_time.1", "doc/man/man1/openssl-sess_id.1", + "doc/man/man1/openssl-skeyutl.1", "doc/man/man1/openssl-smime.1", "doc/man/man1/openssl-speed.1", "doc/man/man1/openssl-spkac.1", @@ -19458,6 +22690,7 @@ our %unified_info = ( "doc/man/man3/BIO_find_type.3", "doc/man/man3/BIO_get_data.3", "doc/man/man3/BIO_get_ex_new_index.3", + "doc/man/man3/BIO_get_rpoll_descriptor.3", "doc/man/man3/BIO_meth_new.3", "doc/man/man3/BIO_new.3", "doc/man/man3/BIO_new_CMS.3", @@ -19470,11 +22703,13 @@ our %unified_info = ( "doc/man/man3/BIO_s_connect.3", "doc/man/man3/BIO_s_core.3", "doc/man/man3/BIO_s_datagram.3", + "doc/man/man3/BIO_s_dgram_pair.3", "doc/man/man3/BIO_s_fd.3", "doc/man/man3/BIO_s_file.3", "doc/man/man3/BIO_s_mem.3", "doc/man/man3/BIO_s_null.3", "doc/man/man3/BIO_s_socket.3", + "doc/man/man3/BIO_sendmmsg.3", "doc/man/man3/BIO_set_callback.3", "doc/man/man3/BIO_should_retry.3", "doc/man/man3/BIO_socket_wait.3", @@ -19499,6 +22734,7 @@ our %unified_info = ( "doc/man/man3/BN_swap.3", "doc/man/man3/BN_zero.3", "doc/man/man3/BUF_MEM_new.3", + "doc/man/man3/CMAC_CTX.3", "doc/man/man3/CMS_EncryptedData_decrypt.3", "doc/man/man3/CMS_EncryptedData_encrypt.3", "doc/man/man3/CMS_EnvelopedData_create.3", @@ -19521,6 +22757,7 @@ our %unified_info = ( "doc/man/man3/CMS_uncompress.3", "doc/man/man3/CMS_verify.3", "doc/man/man3/CMS_verify_receipt.3", + "doc/man/man3/COMP_CTX_new.3", "doc/man/man3/CONF_modules_free.3", "doc/man/man3/CONF_modules_load_file.3", "doc/man/man3/CRYPTO_THREAD_run_once.3", @@ -19554,6 +22791,8 @@ our %unified_info = ( "doc/man/man3/DSA_size.3", "doc/man/man3/DTLS_get_data_mtu.3", "doc/man/man3/DTLS_set_timer_cb.3", + "doc/man/man3/DTLSv1_get_timeout.3", + "doc/man/man3/DTLSv1_handle_timeout.3", "doc/man/man3/DTLSv1_listen.3", "doc/man/man3/ECDSA_SIG_new.3", "doc/man/man3/ECDSA_sign.3", @@ -19600,6 +22839,7 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_ctrl.3", "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3", "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3", + "doc/man/man3/EVP_PKEY_CTX_get_algor.3", "doc/man/man3/EVP_PKEY_CTX_new.3", "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3", "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3", @@ -19639,6 +22879,8 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_verify_recover.3", "doc/man/man3/EVP_RAND.3", "doc/man/man3/EVP_SIGNATURE.3", + "doc/man/man3/EVP_SKEY.3", + "doc/man/man3/EVP_SKEYMGMT.3", "doc/man/man3/EVP_SealInit.3", "doc/man/man3/EVP_SignInit.3", "doc/man/man3/EVP_VerifyInit.3", @@ -19668,6 +22910,7 @@ our %unified_info = ( "doc/man/man3/EVP_sm3.3", "doc/man/man3/EVP_sm4_cbc.3", "doc/man/man3/EVP_whirlpool.3", + "doc/man/man3/GENERAL_NAME.3", "doc/man/man3/HMAC.3", "doc/man/man3/MD5.3", "doc/man/man3/MDC2_Init.3", @@ -19692,14 +22935,18 @@ our %unified_info = ( "doc/man/man3/OPENSSL_init_ssl.3", "doc/man/man3/OPENSSL_instrument_bus.3", "doc/man/man3/OPENSSL_load_builtin_modules.3", + "doc/man/man3/OPENSSL_load_u16_le.3", "doc/man/man3/OPENSSL_malloc.3", + "doc/man/man3/OPENSSL_riscvcap.3", "doc/man/man3/OPENSSL_s390xcap.3", "doc/man/man3/OPENSSL_secure_malloc.3", "doc/man/man3/OPENSSL_strcasecmp.3", "doc/man/man3/OSSL_ALGORITHM.3", "doc/man/man3/OSSL_CALLBACK.3", + "doc/man/man3/OSSL_CMP_ATAV_set0.3", "doc/man/man3/OSSL_CMP_CTX_new.3", "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3", + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3", "doc/man/man3/OSSL_CMP_ITAV_set0.3", "doc/man/man3/OSSL_CMP_MSG_get0_header.3", "doc/man/man3/OSSL_CMP_MSG_http_perform.3", @@ -19723,18 +22970,27 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_CTX.3", "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3", "doc/man/man3/OSSL_ENCODER_to_bio.3", + "doc/man/man3/OSSL_ERR_STATE_save.3", "doc/man/man3/OSSL_ESS_check_signing_certs.3", + "doc/man/man3/OSSL_GENERAL_NAMES_print.3", + "doc/man/man3/OSSL_HPKE_CTX_new.3", "doc/man/man3/OSSL_HTTP_REQ_CTX.3", "doc/man/man3/OSSL_HTTP_parse_url.3", "doc/man/man3/OSSL_HTTP_transfer.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3", + "doc/man/man3/OSSL_INDICATOR_set_callback.3", "doc/man/man3/OSSL_ITEM.3", "doc/man/man3/OSSL_LIB_CTX.3", + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3", "doc/man/man3/OSSL_PARAM.3", "doc/man/man3/OSSL_PARAM_BLD.3", "doc/man/man3/OSSL_PARAM_allocate_from_text.3", "doc/man/man3/OSSL_PARAM_dup.3", "doc/man/man3/OSSL_PARAM_int.3", + "doc/man/man3/OSSL_PARAM_print_to_bio.3", "doc/man/man3/OSSL_PROVIDER.3", + "doc/man/man3/OSSL_QUIC_client_method.3", "doc/man/man3/OSSL_SELF_TEST_new.3", "doc/man/man3/OSSL_SELF_TEST_set_callback.3", "doc/man/man3/OSSL_STORE_INFO.3", @@ -19743,11 +22999,13 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_attach.3", "doc/man/man3/OSSL_STORE_expect.3", "doc/man/man3/OSSL_STORE_open.3", + "doc/man/man3/OSSL_sleep.3", "doc/man/man3/OSSL_trace_enabled.3", "doc/man/man3/OSSL_trace_get_category_num.3", "doc/man/man3/OSSL_trace_set_channel.3", "doc/man/man3/OpenSSL_add_all_algorithms.3", "doc/man/man3/OpenSSL_version.3", + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3", "doc/man/man3/PEM_X509_INFO_read_bio_ex.3", "doc/man/man3/PEM_bytes_read_bio.3", "doc/man/man3/PEM_read.3", @@ -19760,6 +23018,7 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_create_cert.3", "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3", "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3", + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3", "doc/man/man3/PKCS12_add1_attr_by_NID.3", "doc/man/man3/PKCS12_add_CSPName_asc.3", "doc/man/man3/PKCS12_add_cert.3", @@ -19851,6 +23110,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_sess_set_get_cb.3", "doc/man/man3/SSL_CTX_sessions.3", "doc/man/man3/SSL_CTX_set0_CA_list.3", + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3", "doc/man/man3/SSL_CTX_set1_curves.3", "doc/man/man3/SSL_CTX_set1_sigalgs.3", "doc/man/man3/SSL_CTX_set1_verify_cert_store.3", @@ -19864,6 +23124,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_ct_validation_callback.3", "doc/man/man3/SSL_CTX_set_ctlog_list_file.3", "doc/man/man3/SSL_CTX_set_default_passwd_cb.3", + "doc/man/man3/SSL_CTX_set_domain_flags.3", "doc/man/man3/SSL_CTX_set_generate_session_id.3", "doc/man/man3/SSL_CTX_set_info_callback.3", "doc/man/man3/SSL_CTX_set_keylog_callback.3", @@ -19871,6 +23132,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_min_proto_version.3", "doc/man/man3/SSL_CTX_set_mode.3", "doc/man/man3/SSL_CTX_set_msg_callback.3", + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3", "doc/man/man3/SSL_CTX_set_num_tickets.3", "doc/man/man3/SSL_CTX_set_options.3", "doc/man/man3/SSL_CTX_set_psk_client_callback.3", @@ -19909,6 +23171,7 @@ our %unified_info = ( "doc/man/man3/SSL_SESSION_print.3", "doc/man/man3/SSL_SESSION_set1_id.3", "doc/man/man3/SSL_accept.3", + "doc/man/man3/SSL_accept_stream.3", "doc/man/man3/SSL_alert_type_string.3", "doc/man/man3/SSL_alloc_buffers.3", "doc/man/man3/SSL_check_chain.3", @@ -19918,59 +23181,90 @@ our %unified_info = ( "doc/man/man3/SSL_export_keying_material.3", "doc/man/man3/SSL_extension_supported.3", "doc/man/man3/SSL_free.3", + "doc/man/man3/SSL_get0_connection.3", + "doc/man/man3/SSL_get0_group_name.3", + "doc/man/man3/SSL_get0_peer_rpk.3", "doc/man/man3/SSL_get0_peer_scts.3", + "doc/man/man3/SSL_get1_builtin_sigalgs.3", "doc/man/man3/SSL_get_SSL_CTX.3", "doc/man/man3/SSL_get_all_async_fds.3", "doc/man/man3/SSL_get_certificate.3", "doc/man/man3/SSL_get_ciphers.3", "doc/man/man3/SSL_get_client_random.3", + "doc/man/man3/SSL_get_conn_close_info.3", "doc/man/man3/SSL_get_current_cipher.3", "doc/man/man3/SSL_get_default_timeout.3", "doc/man/man3/SSL_get_error.3", + "doc/man/man3/SSL_get_event_timeout.3", "doc/man/man3/SSL_get_extms_support.3", "doc/man/man3/SSL_get_fd.3", + "doc/man/man3/SSL_get_handshake_rtt.3", "doc/man/man3/SSL_get_peer_cert_chain.3", "doc/man/man3/SSL_get_peer_certificate.3", "doc/man/man3/SSL_get_peer_signature_nid.3", "doc/man/man3/SSL_get_peer_tmp_key.3", "doc/man/man3/SSL_get_psk_identity.3", "doc/man/man3/SSL_get_rbio.3", + "doc/man/man3/SSL_get_rpoll_descriptor.3", "doc/man/man3/SSL_get_session.3", "doc/man/man3/SSL_get_shared_sigalgs.3", + "doc/man/man3/SSL_get_stream_id.3", + "doc/man/man3/SSL_get_stream_read_state.3", + "doc/man/man3/SSL_get_value_uint.3", "doc/man/man3/SSL_get_verify_result.3", "doc/man/man3/SSL_get_version.3", "doc/man/man3/SSL_group_to_name.3", + "doc/man/man3/SSL_handle_events.3", "doc/man/man3/SSL_in_init.3", + "doc/man/man3/SSL_inject_net_dgram.3", "doc/man/man3/SSL_key_update.3", "doc/man/man3/SSL_library_init.3", "doc/man/man3/SSL_load_client_CA_file.3", "doc/man/man3/SSL_new.3", + "doc/man/man3/SSL_new_domain.3", + "doc/man/man3/SSL_new_listener.3", + "doc/man/man3/SSL_new_stream.3", "doc/man/man3/SSL_pending.3", + "doc/man/man3/SSL_poll.3", "doc/man/man3/SSL_read.3", "doc/man/man3/SSL_read_early_data.3", "doc/man/man3/SSL_rstate_string.3", "doc/man/man3/SSL_session_reused.3", "doc/man/man3/SSL_set1_host.3", + "doc/man/man3/SSL_set1_initial_peer_addr.3", + "doc/man/man3/SSL_set1_server_cert_type.3", "doc/man/man3/SSL_set_async_callback.3", "doc/man/man3/SSL_set_bio.3", + "doc/man/man3/SSL_set_blocking_mode.3", "doc/man/man3/SSL_set_connect_state.3", + "doc/man/man3/SSL_set_default_stream_mode.3", "doc/man/man3/SSL_set_fd.3", + "doc/man/man3/SSL_set_incoming_stream_policy.3", + "doc/man/man3/SSL_set_quic_tls_cbs.3", "doc/man/man3/SSL_set_retry_verify.3", "doc/man/man3/SSL_set_session.3", + "doc/man/man3/SSL_set_session_secret_cb.3", "doc/man/man3/SSL_set_shutdown.3", "doc/man/man3/SSL_set_verify_result.3", "doc/man/man3/SSL_shutdown.3", "doc/man/man3/SSL_state_string.3", + "doc/man/man3/SSL_stream_conclude.3", + "doc/man/man3/SSL_stream_reset.3", "doc/man/man3/SSL_want.3", "doc/man/man3/SSL_write.3", "doc/man/man3/TS_RESP_CTX_new.3", - "doc/man/man3/TS_VERIFY_CTX_set_certs.3", + "doc/man/man3/TS_VERIFY_CTX.3", "doc/man/man3/UI_STRING.3", "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", + "doc/man/man3/X509_ACERT_add1_attr.3", + "doc/man/man3/X509_ACERT_add_attr_nconf.3", + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3", + "doc/man/man3/X509_ACERT_get_attr.3", + "doc/man/man3/X509_ACERT_print_ex.3", "doc/man/man3/X509_ALGOR_dup.3", "doc/man/man3/X509_ATTRIBUTE.3", "doc/man/man3/X509_CRL_get0_by_serial.3", @@ -19987,6 +23281,7 @@ our %unified_info = ( "doc/man/man3/X509_REQ_get_attr.3", "doc/man/man3/X509_REQ_get_extensions.3", "doc/man/man3/X509_SIG_get0.3", + "doc/man/man3/X509_STORE_CTX_get_by_subject.3", "doc/man/man3/X509_STORE_CTX_get_error.3", "doc/man/man3/X509_STORE_CTX_new.3", "doc/man/man3/X509_STORE_CTX_set_verify_cb.3", @@ -20009,6 +23304,7 @@ our %unified_info = ( "doc/man/man3/X509_get0_notBefore.3", "doc/man/man3/X509_get0_signature.3", "doc/man/man3/X509_get0_uids.3", + "doc/man/man3/X509_get_default_cert_file.3", "doc/man/man3/X509_get_extension_flags.3", "doc/man/man3/X509_get_pubkey.3", "doc/man/man3/X509_get_serialNumber.3", @@ -20054,12 +23350,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-RC5.7", "doc/man/man7/EVP_CIPHER-SEED.7", "doc/man/man7/EVP_CIPHER-SM4.7", + "doc/man/man7/EVP_KDF-ARGON2.7", "doc/man/man7/EVP_KDF-HKDF.7", + "doc/man/man7/EVP_KDF-HMAC-DRBG.7", "doc/man/man7/EVP_KDF-KB.7", "doc/man/man7/EVP_KDF-KRB5KDF.7", "doc/man/man7/EVP_KDF-PBKDF1.7", "doc/man/man7/EVP_KDF-PBKDF2.7", "doc/man/man7/EVP_KDF-PKCS12KDF.7", + "doc/man/man7/EVP_KDF-PVKKDF.7", "doc/man/man7/EVP_KDF-SCRYPT.7", "doc/man/man7/EVP_KDF-SS.7", "doc/man/man7/EVP_KDF-SSHKDF.7", @@ -20068,7 +23367,10 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X942-ASN1.7", "doc/man/man7/EVP_KDF-X942-CONCAT.7", "doc/man/man7/EVP_KDF-X963.7", + "doc/man/man7/EVP_KEM-EC.7", + "doc/man/man7/EVP_KEM-ML-KEM.7", "doc/man/man7/EVP_KEM-RSA.7", + "doc/man/man7/EVP_KEM-X25519.7", "doc/man/man7/EVP_KEYEXCH-DH.7", "doc/man/man7/EVP_KEYEXCH-ECDH.7", "doc/man/man7/EVP_KEYEXCH-X25519.7", @@ -20080,6 +23382,7 @@ our %unified_info = ( "doc/man/man7/EVP_MAC-Poly1305.7", "doc/man/man7/EVP_MAC-Siphash.7", "doc/man/man7/EVP_MD-BLAKE2.7", + "doc/man/man7/EVP_MD-KECCAK.7", "doc/man/man7/EVP_MD-MD2.7", "doc/man/man7/EVP_MD-MD4.7", "doc/man/man7/EVP_MD-MD5-SHA1.7", @@ -20099,12 +23402,17 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-EC.7", "doc/man/man7/EVP_PKEY-FFC.7", "doc/man/man7/EVP_PKEY-HMAC.7", + "doc/man/man7/EVP_PKEY-ML-DSA.7", + "doc/man/man7/EVP_PKEY-ML-KEM.7", "doc/man/man7/EVP_PKEY-RSA.7", + "doc/man/man7/EVP_PKEY-SLH-DSA.7", "doc/man/man7/EVP_PKEY-SM2.7", "doc/man/man7/EVP_PKEY-X25519.7", + "doc/man/man7/EVP_RAND-CRNG-TEST.7", "doc/man/man7/EVP_RAND-CTR-DRBG.7", "doc/man/man7/EVP_RAND-HASH-DRBG.7", "doc/man/man7/EVP_RAND-HMAC-DRBG.7", + "doc/man/man7/EVP_RAND-JITTER.7", "doc/man/man7/EVP_RAND-SEED-SRC.7", "doc/man/man7/EVP_RAND-TEST-RAND.7", "doc/man/man7/EVP_RAND.7", @@ -20112,17 +23420,19 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-ECDSA.7", "doc/man/man7/EVP_SIGNATURE-ED25519.7", "doc/man/man7/EVP_SIGNATURE-HMAC.7", + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7", "doc/man/man7/EVP_SIGNATURE-RSA.7", + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7", "doc/man/man7/OSSL_PROVIDER-FIPS.7", "doc/man/man7/OSSL_PROVIDER-base.7", "doc/man/man7/OSSL_PROVIDER-default.7", "doc/man/man7/OSSL_PROVIDER-legacy.7", "doc/man/man7/OSSL_PROVIDER-null.7", + "doc/man/man7/OSSL_STORE-winstore.7", "doc/man/man7/RAND.7", "doc/man/man7/RSA-PSS.7", "doc/man/man7/X25519.7", "doc/man/man7/bio.7", - "doc/man/man7/crypto.7", "doc/man/man7/ct.7", "doc/man/man7/des_modes.7", "doc/man/man7/evp.7", @@ -20133,14 +23443,31 @@ our %unified_info = ( "doc/man/man7/life_cycle-mac.7", "doc/man/man7/life_cycle-pkey.7", "doc/man/man7/life_cycle-rand.7", - "doc/man/man7/migration_guide.7", "doc/man/man7/openssl-core.h.7", "doc/man/man7/openssl-core_dispatch.h.7", "doc/man/man7/openssl-core_names.h.7", "doc/man/man7/openssl-env.7", "doc/man/man7/openssl-glossary.7", + "doc/man/man7/openssl-qlog.7", + "doc/man/man7/openssl-quic-concurrency.7", + "doc/man/man7/openssl-quic.7", "doc/man/man7/openssl-threads.7", "doc/man/man7/openssl_user_macros.7", + "doc/man/man7/ossl-guide-introduction.7", + "doc/man/man7/ossl-guide-libcrypto-introduction.7", + "doc/man/man7/ossl-guide-libraries-introduction.7", + "doc/man/man7/ossl-guide-libssl-introduction.7", + "doc/man/man7/ossl-guide-migration.7", + "doc/man/man7/ossl-guide-quic-client-block.7", + "doc/man/man7/ossl-guide-quic-client-non-block.7", + "doc/man/man7/ossl-guide-quic-introduction.7", + "doc/man/man7/ossl-guide-quic-multi-stream.7", + "doc/man/man7/ossl-guide-quic-server-block.7", + "doc/man/man7/ossl-guide-quic-server-non-block.7", + "doc/man/man7/ossl-guide-tls-client-block.7", + "doc/man/man7/ossl-guide-tls-client-non-block.7", + "doc/man/man7/ossl-guide-tls-introduction.7", + "doc/man/man7/ossl-guide-tls-server-block.7", "doc/man/man7/ossl_store-file.7", "doc/man/man7/ossl_store.7", "doc/man/man7/passphrase-encoding.7", @@ -20159,10 +23486,10 @@ our %unified_info = ( "doc/man/man7/provider-object.7", "doc/man/man7/provider-rand.7", "doc/man/man7/provider-signature.7", + "doc/man/man7/provider-skeymgmt.7", "doc/man/man7/provider-storemgmt.7", "doc/man/man7/provider.7", "doc/man/man7/proxy-certificates.7", - "doc/man/man7/ssl.7", "doc/man/man7/x509.7" ] }, @@ -20174,6 +23501,7 @@ our %unified_info = ( ], "programs" => [ "apps/openssl", + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -20184,7 +23512,24 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test", "test/aborttest", "test/acvp_test", @@ -20202,21 +23547,28 @@ our %unified_info = ( "test/asynctest", "test/bad_dtls_test", "test/bftest", + "test/bio_addr_test", + "test/bio_base64_test", "test/bio_callback_test", "test/bio_core_test", + "test/bio_dgram_test", "test/bio_enc_test", "test/bio_memleak_test", + "test/bio_meth_test", "test/bio_prefix_text", "test/bio_pw_callback_test", "test/bio_readbuffer_test", + "test/bio_tfo_test", "test/bioprinttest", "test/bn_internal_test", "test/bntest", + "test/build_wincrypt_test", "test/buildtest_c_aes", "test/buildtest_c_async", "test/buildtest_c_blowfish", "test/buildtest_c_bn", "test/buildtest_c_buffer", + "test/buildtest_c_byteorder", "test/buildtest_c_camellia", "test/buildtest_c_cast", "test/buildtest_c_cmac", @@ -20225,7 +23577,6 @@ our %unified_info = ( "test/buildtest_c_conftypes", "test/buildtest_c_core", "test/buildtest_c_core_dispatch", - "test/buildtest_c_core_names", "test/buildtest_c_core_object", "test/buildtest_c_cryptoerr_legacy", "test/buildtest_c_decoder", @@ -20234,6 +23585,7 @@ our %unified_info = ( "test/buildtest_c_dsa", "test/buildtest_c_dtls1", "test/buildtest_c_e_os2", + "test/buildtest_c_e_ostime", "test/buildtest_c_ebcdic", "test/buildtest_c_ec", "test/buildtest_c_ecdh", @@ -20243,13 +23595,16 @@ our %unified_info = ( "test/buildtest_c_evp", "test/buildtest_c_fips_names", "test/buildtest_c_hmac", + "test/buildtest_c_hpke", "test/buildtest_c_http", "test/buildtest_c_idea", + "test/buildtest_c_indicator", "test/buildtest_c_kdf", "test/buildtest_c_macros", "test/buildtest_c_md4", "test/buildtest_c_md5", "test/buildtest_c_mdc2", + "test/buildtest_c_ml_kem", "test/buildtest_c_modes", "test/buildtest_c_obj_mac", "test/buildtest_c_objects", @@ -20260,6 +23615,7 @@ our %unified_info = ( "test/buildtest_c_pem2", "test/buildtest_c_prov_ssl", "test/buildtest_c_provider", + "test/buildtest_c_quic", "test/buildtest_c_rand", "test/buildtest_c_rc2", "test/buildtest_c_rc4", @@ -20274,11 +23630,14 @@ our %unified_info = ( "test/buildtest_c_stack", "test/buildtest_c_store", "test/buildtest_c_symhacks", + "test/buildtest_c_thread", "test/buildtest_c_tls1", "test/buildtest_c_ts", "test/buildtest_c_txt_db", "test/buildtest_c_types", "test/buildtest_c_whrlpool", + "test/byteorder_test", + "test/ca_internals_test", "test/casttest", "test/chacha_internal_test", "test/cipher_overhead_test", @@ -20307,6 +23666,7 @@ our %unified_info = ( "test/curve448_internal_test", "test/d2i_test", "test/danetest", + "test/decoder_propq_test", "test/defltfips_test", "test/destest", "test/dhtest", @@ -20331,9 +23691,12 @@ our %unified_info = ( "test/evp_kdf_test", "test/evp_libctx_test", "test/evp_pkey_ctx_new_from_name", + "test/evp_pkey_dhkem_test", "test/evp_pkey_dparams_test", "test/evp_pkey_provided_test", + "test/evp_skey_test", "test/evp_test", + "test/evp_xof_test", "test/exdatatest", "test/exptest", "test/ext_internal_test", @@ -20343,21 +23706,29 @@ our %unified_info = ( "test/gmdifftest", "test/hexstr_test", "test/hmactest", + "test/hpke_test", "test/http_test", "test/ideatest", "test/igetest", + "test/json_test", "test/keymgmt_internal_test", "test/lhash_test", + "test/list_test", "test/localetest", "test/mdc2_internal_test", "test/mdc2test", + "test/membio_test", "test/memleaktest", + "test/ml_dsa_test", + "test/ml_kem_evp_extra_test", + "test/ml_kem_internal_test", "test/modes_internal_test", "test/namemap_internal_test", "test/nodefltctxtest", "test/ocspapitest", "test/ossl_store_test", "test/packettest", + "test/pairwise_fail_test", "test/param_build_test", "test/params_api_test", "test/params_conversion_test", @@ -20366,36 +23737,65 @@ our %unified_info = ( "test/pbetest", "test/pem_read_depr_test", "test/pemtest", + "test/pkcs12_api_test", "test/pkcs12_format_test", "test/pkcs7_test", "test/pkey_meth_kdf_test", "test/pkey_meth_test", "test/poly1305_internal_test", + "test/priority_queue_test", "test/property_test", "test/prov_config_test", "test/provfetchtest", + "test/provider_default_search_path_test", "test/provider_fallback_test", "test/provider_internal_test", "test/provider_pkey_test", "test/provider_status_test", "test/provider_test", "test/punycode_test", + "test/quic_ackm_test", + "test/quic_cc_test", + "test/quic_cfq_test", + "test/quic_client_test", + "test/quic_fc_test", + "test/quic_fifd_test", + "test/quic_lcidm_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_qlog_test", + "test/quic_radix_test", + "test/quic_rcidm_test", + "test/quic_record_test", + "test/quic_srt_gen_test", + "test/quic_srtm_test", + "test/quic_stream_test", + "test/quic_tserver_test", + "test/quic_txp_test", + "test/quic_txpim_test", + "test/quic_wire_test", + "test/quicapitest", + "test/quicfaultstest", "test/rand_status_test", "test/rand_test", "test/rc2test", "test/rc4test", "test/rc5test", - "test/rdrand_sanitytest", + "test/rdcpu_sanitytest", "test/recordlentest", + "test/rpktest", "test/rsa_complex", "test/rsa_mp_test", "test/rsa_sp800_56b_test", "test/rsa_test", + "test/rsa_x931_test", + "test/safe_math_test", "test/sanitytest", "test/secmemtest", "test/servername_test", "test/sha_test", "test/siphash_internal_test", + "test/slh_dsa_test", "test/sm2_internal_test", "test/sm3_internal_test", "test/sm4_internal_test", @@ -20403,6 +23803,7 @@ our %unified_info = ( "test/srptest", "test/ssl_cert_table_internal_test", "test/ssl_ctx_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", @@ -20410,13 +23811,17 @@ our %unified_info = ( "test/sslbuffertest", "test/sslcorrupttest", "test/stack_test", + "test/strtoultest", "test/sysdefaulttest", "test/test_test", + "test/threadpool_test", "test/threadstest", "test/threadstest_fips", "test/time_offset_test", + "test/time_test", "test/tls13ccstest", "test/tls13encryptiontest", + "test/tls13groupselection_test", "test/trace_api_test", "test/uitest", "test/upcallstest", @@ -20426,9 +23831,13 @@ our %unified_info = ( "test/verify_extra_test", "test/versions", "test/wpackettest", + "test/x509_acert_test", "test/x509_check_cert_pkey_test", "test/x509_dup_cert_test", "test/x509_internal_test", + "test/x509_load_cert_file_test", + "test/x509_req_test", + "test/x509_test", "test/x509_time_test", "test/x509aux" ], @@ -20444,6 +23853,33 @@ our %unified_info = ( "apps/CA.pl" => [ "apps/CA.pl.in" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/ca.c" + ], + "apps/lib/ca_internals_test-bin-app_libctx.o" => [ + "apps/lib/app_libctx.c" + ], + "apps/lib/ca_internals_test-bin-app_provider.o" => [ + "apps/lib/app_provider.c" + ], + "apps/lib/ca_internals_test-bin-app_rand.o" => [ + "apps/lib/app_rand.c" + ], + "apps/lib/ca_internals_test-bin-app_x509.o" => [ + "apps/lib/app_x509.c" + ], + "apps/lib/ca_internals_test-bin-apps.o" => [ + "apps/lib/apps.c" + ], + "apps/lib/ca_internals_test-bin-apps_ui.o" => [ + "apps/lib/apps_ui.c" + ], + "apps/lib/ca_internals_test-bin-engine.o" => [ + "apps/lib/engine.c" + ], + "apps/lib/ca_internals_test-bin-fmt.o" => [ + "apps/lib/fmt.c" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/lib/cmp_mock_srv.c" ], @@ -20465,6 +23901,9 @@ our %unified_info = ( "apps/lib/libapps-lib-apps.o" => [ "apps/lib/apps.c" ], + "apps/lib/libapps-lib-apps_opt_printf.o" => [ + "apps/lib/apps_opt_printf.c" + ], "apps/lib/libapps-lib-apps_ui.o" => [ "apps/lib/apps_ui.c" ], @@ -20483,6 +23922,9 @@ our %unified_info = ( "apps/lib/libapps-lib-http_server.o" => [ "apps/lib/http_server.c" ], + "apps/lib/libapps-lib-log.o" => [ + "apps/lib/log.c" + ], "apps/lib/libapps-lib-names.o" => [ "apps/lib/names.c" ], @@ -20514,12 +23956,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -20573,6 +24017,7 @@ our %unified_info = ( "apps/openssl-bin-s_server.o", "apps/openssl-bin-s_time.o", "apps/openssl-bin-sess_id.o", + "apps/openssl-bin-skeyutl.o", "apps/openssl-bin-smime.o", "apps/openssl-bin-speed.o", "apps/openssl-bin-spkac.o", @@ -20718,6 +24163,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/sess_id.c" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/skeyutl.c" + ], "apps/openssl-bin-smime.o" => [ "apps/smime.c" ], @@ -20805,6 +24253,12 @@ our %unified_info = ( "crypto/aria/libcrypto-lib-aria.o" => [ "crypto/aria/aria.c" ], + "crypto/asn1/asn1_time_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], + "crypto/asn1/ca_internals_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], "crypto/asn1/libcrypto-lib-a_bitstr.o" => [ "crypto/asn1/a_bitstr.c" ], @@ -20997,6 +24451,9 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" => [ "crypto/asn1/x_val.c" ], + "crypto/asn1_time_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/async/arch/libcrypto-lib-async_null.o" => [ "crypto/async/arch/async_null.c" ], @@ -21090,6 +24547,9 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_dgram.o" => [ "crypto/bio/bss_dgram.c" ], + "crypto/bio/libcrypto-lib-bss_dgram_pair.o" => [ + "crypto/bio/bss_dgram_pair.c" + ], "crypto/bio/libcrypto-lib-bss_fd.o" => [ "crypto/bio/bss_fd.c" ], @@ -21216,6 +24676,9 @@ our %unified_info = ( "crypto/bn/libcrypto-lib-ppc-mont.o" => [ "crypto/bn/ppc-mont.s" ], + "crypto/bn/libcrypto-lib-ppc64-mont-fixed.o" => [ + "crypto/bn/ppc64-mont-fixed.s" + ], "crypto/bn/libfips-lib-bn-ppc.o" => [ "crypto/bn/bn-ppc.s" ], @@ -21306,6 +24769,9 @@ our %unified_info = ( "crypto/bn/libfips-lib-ppc-mont.o" => [ "crypto/bn/ppc-mont.s" ], + "crypto/bn/libfips-lib-ppc64-mont-fixed.o" => [ + "crypto/bn/ppc64-mont-fixed.s" + ], "crypto/buffer/libcrypto-lib-buf_err.o" => [ "crypto/buffer/buf_err.c" ], @@ -21315,6 +24781,9 @@ our %unified_info = ( "crypto/buffer/libfips-lib-buffer.o" => [ "crypto/buffer/buffer.c" ], + "crypto/ca_internals_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/camellia/libcrypto-lib-camellia.o" => [ "crypto/camellia/camellia.c" ], @@ -21375,6 +24844,9 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_err.o" => [ "crypto/cmp/cmp_err.c" ], + "crypto/cmp/libcrypto-lib-cmp_genm.o" => [ + "crypto/cmp/cmp_genm.c" + ], "crypto/cmp/libcrypto-lib-cmp_hdr.o" => [ "crypto/cmp/cmp_hdr.c" ], @@ -22074,9 +25546,15 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_blocks.o" => [ "crypto/err/err_blocks.c" ], + "crypto/err/libcrypto-lib-err_mark.o" => [ + "crypto/err/err_mark.c" + ], "crypto/err/libcrypto-lib-err_prn.o" => [ "crypto/err/err_prn.c" ], + "crypto/err/libcrypto-lib-err_save.o" => [ + "crypto/err/err_save.c" + ], "crypto/ess/libcrypto-lib-ess_asn1.o" => [ "crypto/ess/ess_asn1.c" ], @@ -22323,9 +25801,15 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libcrypto-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libcrypto-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libcrypto-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/evp/libfips-lib-asymcipher.o" => [ "crypto/evp/asymcipher.c" ], @@ -22371,9 +25855,6 @@ our %unified_info = ( "crypto/evp/libfips-lib-keymgmt_meth.o" => [ "crypto/evp/keymgmt_meth.c" ], - "crypto/evp/libfips-lib-m_sigver.o" => [ - "crypto/evp/m_sigver.c" - ], "crypto/evp/libfips-lib-mac_lib.o" => [ "crypto/evp/mac_lib.c" ], @@ -22392,9 +25873,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libfips-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libfips-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libfips-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/ffc/libcrypto-lib-ffc_backend.o" => [ "crypto/ffc/ffc_backend.c" ], @@ -22437,12 +25924,30 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params_validate.o" => [ "crypto/ffc/ffc_params_validate.c" ], + "crypto/hashtable/libcrypto-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libcrypto-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], + "crypto/hashtable/libfips-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libfips-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], "crypto/hmac/libcrypto-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], "crypto/hmac/libfips-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], + "crypto/hpke/libcrypto-lib-hpke.o" => [ + "crypto/hpke/hpke.c" + ], + "crypto/hpke/libcrypto-lib-hpke_util.o" => [ + "crypto/hpke/hpke_util.c" + ], "crypto/http/libcrypto-lib-http_client.o" => [ "crypto/http/http_client.c" ], @@ -22485,6 +25990,9 @@ our %unified_info = ( "crypto/libcrypto-lib-bsearch.o" => [ "crypto/bsearch.c" ], + "crypto/libcrypto-lib-comp_methods.o" => [ + "crypto/comp_methods.c" + ], "crypto/libcrypto-lib-context.o" => [ "crypto/context.c" ], @@ -22512,9 +26020,15 @@ our %unified_info = ( "crypto/libcrypto-lib-cversion.o" => [ "crypto/cversion.c" ], + "crypto/libcrypto-lib-defaults.o" => [ + "crypto/defaults.c" + ], "crypto/libcrypto-lib-der_writer.o" => [ "crypto/der_writer.c" ], + "crypto/libcrypto-lib-deterministic_nonce.o" => [ + "crypto/deterministic_nonce.c" + ], "crypto/libcrypto-lib-ebcdic.o" => [ "crypto/ebcdic.c" ], @@ -22524,6 +26038,9 @@ our %unified_info = ( "crypto/libcrypto-lib-getenv.o" => [ "crypto/getenv.c" ], + "crypto/libcrypto-lib-indicator_core.o" => [ + "crypto/indicator_core.c" + ], "crypto/libcrypto-lib-info.o" => [ "crypto/info.c" ], @@ -22572,6 +26089,9 @@ our %unified_info = ( "crypto/libcrypto-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libcrypto-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libcrypto-lib-passphrase.o" => [ "crypto/passphrase.c" ], @@ -22599,12 +26119,21 @@ our %unified_info = ( "crypto/libcrypto-lib-punycode.o" => [ "crypto/punycode.c" ], + "crypto/libcrypto-lib-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/libcrypto-lib-self_test_core.o" => [ "crypto/self_test_core.c" ], + "crypto/libcrypto-lib-sleep.o" => [ + "crypto/sleep.c" + ], "crypto/libcrypto-lib-sparse_array.o" => [ "crypto/sparse_array.c" ], + "crypto/libcrypto-lib-ssl_err.o" => [ + "crypto/ssl_err.c" + ], "crypto/libcrypto-lib-threads_lib.o" => [ "crypto/threads_lib.c" ], @@ -22617,6 +26146,9 @@ our %unified_info = ( "crypto/libcrypto-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libcrypto-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libcrypto-lib-trace.o" => [ "crypto/trace.c" ], @@ -22680,6 +26212,9 @@ our %unified_info = ( "crypto/libfips-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libfips-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libfips-lib-ppccap.o" => [ "crypto/ppccap.c" ], @@ -22710,6 +26245,9 @@ our %unified_info = ( "crypto/libfips-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libfips-lib-time.o" => [ + "crypto/time.c" + ], "crypto/md4/libcrypto-lib-md4_dgst.o" => [ "crypto/md4/md4_dgst.c" ], @@ -22731,6 +26269,60 @@ our %unified_info = ( "crypto/mdc2/libcrypto-lib-mdc2dgst.o" => [ "crypto/mdc2/mdc2dgst.c" ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_kem/libcrypto-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], + "crypto/ml_kem/libfips-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], "crypto/modes/libcrypto-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22767,6 +26359,9 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libcrypto-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/modes/libfips-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22794,6 +26389,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libfips-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/objects/libcrypto-lib-o_names.o" => [ "crypto/objects/o_names.c" ], @@ -22839,6 +26437,9 @@ our %unified_info = ( "crypto/ocsp/libcrypto-lib-v3_ocsp.o" => [ "crypto/ocsp/v3_ocsp.c" ], + "crypto/packettest-bin-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/pem/libcrypto-lib-pem_all.o" => [ "crypto/pem/pem_all.c" ], @@ -23007,6 +26608,9 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_pool.o" => [ "crypto/rand/rand_pool.c" ], + "crypto/rand/libcrypto-lib-rand_uniform.o" => [ + "crypto/rand/rand_uniform.c" + ], "crypto/rand/libcrypto-lib-randfile.o" => [ "crypto/rand/randfile.c" ], @@ -23256,6 +26860,66 @@ our %unified_info = ( "crypto/siphash/libcrypto-lib-siphash.o" => [ "crypto/siphash/siphash.c" ], + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], + "crypto/slh_dsa/libfips-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libfips-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libfips-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libfips-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libfips-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], "crypto/sm2/libcrypto-lib-sm2_crypt.o" => [ "crypto/sm2/sm2_crypt.c" ], @@ -23310,6 +26974,42 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_strings.o" => [ "crypto/store/store_strings.c" ], + "crypto/thread/arch/libcrypto-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/arch/libfips-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libfips-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libfips-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/libcrypto-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libcrypto-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libcrypto-lib-internal.o" => [ + "crypto/thread/internal.c" + ], + "crypto/thread/libfips-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libfips-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libfips-lib-internal.o" => [ + "crypto/thread/internal.c" + ], "crypto/ts/libcrypto-lib-ts_asn1.o" => [ "crypto/ts/ts_asn1.c" ], @@ -23394,6 +27094,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_tree.o" => [ "crypto/x509/pcy_tree.c" ], + "crypto/x509/libcrypto-lib-t_acert.o" => [ + "crypto/x509/t_acert.c" + ], "crypto/x509/libcrypto-lib-t_crl.o" => [ "crypto/x509/t_crl.c" ], @@ -23403,6 +27106,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-t_x509.o" => [ "crypto/x509/t_x509.c" ], + "crypto/x509/libcrypto-lib-v3_aaa.o" => [ + "crypto/x509/v3_aaa.c" + ], + "crypto/x509/libcrypto-lib-v3_ac_tgt.o" => [ + "crypto/x509/v3_ac_tgt.c" + ], "crypto/x509/libcrypto-lib-v3_addr.o" => [ "crypto/x509/v3_addr.c" ], @@ -23418,6 +27127,21 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_asid.o" => [ "crypto/x509/v3_asid.c" ], + "crypto/x509/libcrypto-lib-v3_attrdesc.o" => [ + "crypto/x509/v3_attrdesc.c" + ], + "crypto/x509/libcrypto-lib-v3_attrmap.o" => [ + "crypto/x509/v3_attrmap.c" + ], + "crypto/x509/libcrypto-lib-v3_audit_id.o" => [ + "crypto/x509/v3_audit_id.c" + ], + "crypto/x509/libcrypto-lib-v3_authattid.o" => [ + "crypto/x509/v3_authattid.c" + ], + "crypto/x509/libcrypto-lib-v3_battcons.o" => [ + "crypto/x509/v3_battcons.c" + ], "crypto/x509/libcrypto-lib-v3_bcons.o" => [ "crypto/x509/v3_bcons.c" ], @@ -23442,15 +27166,24 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_genn.o" => [ "crypto/x509/v3_genn.c" ], + "crypto/x509/libcrypto-lib-v3_group_ac.o" => [ + "crypto/x509/v3_group_ac.c" + ], "crypto/x509/libcrypto-lib-v3_ia5.o" => [ "crypto/x509/v3_ia5.c" ], + "crypto/x509/libcrypto-lib-v3_ind_iss.o" => [ + "crypto/x509/v3_ind_iss.c" + ], "crypto/x509/libcrypto-lib-v3_info.o" => [ "crypto/x509/v3_info.c" ], "crypto/x509/libcrypto-lib-v3_int.o" => [ "crypto/x509/v3_int.c" ], + "crypto/x509/libcrypto-lib-v3_iobo.o" => [ + "crypto/x509/v3_iobo.c" + ], "crypto/x509/libcrypto-lib-v3_ist.o" => [ "crypto/x509/v3_ist.c" ], @@ -23460,6 +27193,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_ncons.o" => [ "crypto/x509/v3_ncons.c" ], + "crypto/x509/libcrypto-lib-v3_no_ass.o" => [ + "crypto/x509/v3_no_ass.c" + ], + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o" => [ + "crypto/x509/v3_no_rev_avail.c" + ], "crypto/x509/libcrypto-lib-v3_pci.o" => [ "crypto/x509/v3_pci.c" ], @@ -23481,18 +27220,36 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_purp.o" => [ "crypto/x509/v3_purp.c" ], + "crypto/x509/libcrypto-lib-v3_rolespec.o" => [ + "crypto/x509/v3_rolespec.c" + ], "crypto/x509/libcrypto-lib-v3_san.o" => [ "crypto/x509/v3_san.c" ], + "crypto/x509/libcrypto-lib-v3_sda.o" => [ + "crypto/x509/v3_sda.c" + ], + "crypto/x509/libcrypto-lib-v3_single_use.o" => [ + "crypto/x509/v3_single_use.c" + ], "crypto/x509/libcrypto-lib-v3_skid.o" => [ "crypto/x509/v3_skid.c" ], + "crypto/x509/libcrypto-lib-v3_soa_id.o" => [ + "crypto/x509/v3_soa_id.c" + ], "crypto/x509/libcrypto-lib-v3_sxnet.o" => [ "crypto/x509/v3_sxnet.c" ], + "crypto/x509/libcrypto-lib-v3_timespec.o" => [ + "crypto/x509/v3_timespec.c" + ], "crypto/x509/libcrypto-lib-v3_tlsf.o" => [ "crypto/x509/v3_tlsf.c" ], + "crypto/x509/libcrypto-lib-v3_usernotice.o" => [ + "crypto/x509/v3_usernotice.c" + ], "crypto/x509/libcrypto-lib-v3_utf8.o" => [ "crypto/x509/v3_utf8.c" ], @@ -23502,6 +27259,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3err.o" => [ "crypto/x509/v3err.c" ], + "crypto/x509/libcrypto-lib-x509_acert.o" => [ + "crypto/x509/x509_acert.c" + ], "crypto/x509/libcrypto-lib-x509_att.o" => [ "crypto/x509/x509_att.c" ], @@ -23553,6 +27313,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_vpm.o" => [ "crypto/x509/x509_vpm.c" ], + "crypto/x509/libcrypto-lib-x509aset.o" => [ + "crypto/x509/x509aset.c" + ], "crypto/x509/libcrypto-lib-x509cset.o" => [ "crypto/x509/x509cset.c" ], @@ -23580,6 +27343,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_exten.o" => [ "crypto/x509/x_exten.c" ], + "crypto/x509/libcrypto-lib-x_ietfatt.o" => [ + "crypto/x509/x_ietfatt.c" + ], "crypto/x509/libcrypto-lib-x_name.o" => [ "crypto/x509/x_name.c" ], @@ -23601,6 +27367,16 @@ our %unified_info = ( "engines/libcrypto-lib-e_padlock.o" => [ "engines/e_padlock.c" ], + "fuzz/acert-test" => [ + "fuzz/acert-test-bin-acert.o", + "fuzz/acert-test-bin-test-corpus.o" + ], + "fuzz/acert-test-bin-acert.o" => [ + "fuzz/acert.c" + ], + "fuzz/acert-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/asn1-test" => [ "fuzz/asn1-test-bin-asn1.o", "fuzz/asn1-test-bin-fuzz_rand.o", @@ -23713,6 +27489,190 @@ our %unified_info = ( "fuzz/ct-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/decoder-test" => [ + "fuzz/decoder-test-bin-decoder.o", + "fuzz/decoder-test-bin-fuzz_rand.o", + "fuzz/decoder-test-bin-test-corpus.o" + ], + "fuzz/decoder-test-bin-decoder.o" => [ + "fuzz/decoder.c" + ], + "fuzz/decoder-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/decoder-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsclient-test" => [ + "fuzz/dtlsclient-test-bin-dtlsclient.o", + "fuzz/dtlsclient-test-bin-fuzz_rand.o", + "fuzz/dtlsclient-test-bin-test-corpus.o" + ], + "fuzz/dtlsclient-test-bin-dtlsclient.o" => [ + "fuzz/dtlsclient.c" + ], + "fuzz/dtlsclient-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsclient-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsserver-test" => [ + "fuzz/dtlsserver-test-bin-dtlsserver.o", + "fuzz/dtlsserver-test-bin-fuzz_rand.o", + "fuzz/dtlsserver-test-bin-test-corpus.o" + ], + "fuzz/dtlsserver-test-bin-dtlsserver.o" => [ + "fuzz/dtlsserver.c" + ], + "fuzz/dtlsserver-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsserver-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/hashtable-test" => [ + "fuzz/hashtable-test-bin-fuzz_rand.o", + "fuzz/hashtable-test-bin-hashtable.o", + "fuzz/hashtable-test-bin-test-corpus.o" + ], + "fuzz/hashtable-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/hashtable-test-bin-hashtable.o" => [ + "fuzz/hashtable.c" + ], + "fuzz/hashtable-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-dsa-test" => [ + "fuzz/ml-dsa-test-bin-fuzz_rand.o", + "fuzz/ml-dsa-test-bin-ml-dsa.o", + "fuzz/ml-dsa-test-bin-test-corpus.o" + ], + "fuzz/ml-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-dsa-test-bin-ml-dsa.o" => [ + "fuzz/ml-dsa.c" + ], + "fuzz/ml-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-kem-test" => [ + "fuzz/ml-kem-test-bin-fuzz_rand.o", + "fuzz/ml-kem-test-bin-ml-kem.o", + "fuzz/ml-kem-test-bin-test-corpus.o" + ], + "fuzz/ml-kem-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-kem-test-bin-ml-kem.o" => [ + "fuzz/ml-kem.c" + ], + "fuzz/ml-kem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/pem-test" => [ + "fuzz/pem-test-bin-pem.o", + "fuzz/pem-test-bin-test-corpus.o" + ], + "fuzz/pem-test-bin-pem.o" => [ + "fuzz/pem.c" + ], + "fuzz/pem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/provider-test" => [ + "fuzz/provider-test-bin-provider.o", + "fuzz/provider-test-bin-test-corpus.o" + ], + "fuzz/provider-test-bin-provider.o" => [ + "fuzz/provider.c" + ], + "fuzz/provider-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/punycode-test" => [ + "fuzz/punycode-test-bin-punycode.o", + "fuzz/punycode-test-bin-test-corpus.o" + ], + "fuzz/punycode-test-bin-punycode.o" => [ + "fuzz/punycode.c" + ], + "fuzz/punycode-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-client-test" => [ + "fuzz/quic-client-test-bin-fuzz_rand.o", + "fuzz/quic-client-test-bin-quic-client.o", + "fuzz/quic-client-test-bin-test-corpus.o" + ], + "fuzz/quic-client-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-client-test-bin-quic-client.o" => [ + "fuzz/quic-client.c" + ], + "fuzz/quic-client-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-lcidm-test" => [ + "fuzz/quic-lcidm-test-bin-fuzz_rand.o", + "fuzz/quic-lcidm-test-bin-quic-lcidm.o", + "fuzz/quic-lcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-lcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-lcidm-test-bin-quic-lcidm.o" => [ + "fuzz/quic-lcidm.c" + ], + "fuzz/quic-lcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-rcidm-test" => [ + "fuzz/quic-rcidm-test-bin-fuzz_rand.o", + "fuzz/quic-rcidm-test-bin-quic-rcidm.o", + "fuzz/quic-rcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-rcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-rcidm-test-bin-quic-rcidm.o" => [ + "fuzz/quic-rcidm.c" + ], + "fuzz/quic-rcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-server-test" => [ + "fuzz/quic-server-test-bin-fuzz_rand.o", + "fuzz/quic-server-test-bin-quic-server.o", + "fuzz/quic-server-test-bin-test-corpus.o" + ], + "fuzz/quic-server-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-server-test-bin-quic-server.o" => [ + "fuzz/quic-server.c" + ], + "fuzz/quic-server-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-srtm-test" => [ + "fuzz/quic-srtm-test-bin-fuzz_rand.o", + "fuzz/quic-srtm-test-bin-quic-srtm.o", + "fuzz/quic-srtm-test-bin-test-corpus.o" + ], + "fuzz/quic-srtm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-srtm-test-bin-quic-srtm.o" => [ + "fuzz/quic-srtm.c" + ], + "fuzz/quic-srtm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/server-test" => [ "fuzz/server-test-bin-fuzz_rand.o", "fuzz/server-test-bin-server.o", @@ -23727,6 +27687,40 @@ our %unified_info = ( "fuzz/server-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/slh-dsa-test" => [ + "fuzz/slh-dsa-test-bin-fuzz_rand.o", + "fuzz/slh-dsa-test-bin-slh-dsa.o", + "fuzz/slh-dsa-test-bin-test-corpus.o" + ], + "fuzz/slh-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/slh-dsa-test-bin-slh-dsa.o" => [ + "fuzz/slh-dsa.c" + ], + "fuzz/slh-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/smime-test" => [ + "fuzz/smime-test-bin-smime.o", + "fuzz/smime-test-bin-test-corpus.o" + ], + "fuzz/smime-test-bin-smime.o" => [ + "fuzz/smime.c" + ], + "fuzz/smime-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test" => [ + "fuzz/v3name-test-bin-test-corpus.o", + "fuzz/v3name-test-bin-v3name.o" + ], + "fuzz/v3name-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test-bin-v3name.o" => [ + "fuzz/v3name.c" + ], "fuzz/x509-test" => [ "fuzz/x509-test-bin-fuzz_rand.o", "fuzz/x509-test-bin-test-corpus.o", @@ -23849,6 +27843,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -23891,6 +27886,7 @@ our %unified_info = ( "crypto/bn/libcrypto-lib-bn_word.o", "crypto/bn/libcrypto-lib-bn_x931p.o", "crypto/bn/libcrypto-lib-ppc-mont.o", + "crypto/bn/libcrypto-lib-ppc64-mont-fixed.o", "crypto/buffer/libcrypto-lib-buf_err.o", "crypto/buffer/libcrypto-lib-buffer.o", "crypto/camellia/libcrypto-lib-camellia.o", @@ -23912,6 +27908,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -24091,7 +28088,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", + "crypto/err/libcrypto-lib-err_mark.o", "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o", "crypto/ess/libcrypto-lib-ess_asn1.o", "crypto/ess/libcrypto-lib-ess_err.o", "crypto/ess/libcrypto-lib-ess_lib.o", @@ -24174,7 +28173,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/ffc/libcrypto-lib-ffc_backend.o", "crypto/ffc/libcrypto-lib-ffc_dh.o", "crypto/ffc/libcrypto-lib-ffc_key_generate.o", @@ -24182,7 +28183,11 @@ our %unified_info = ( "crypto/ffc/libcrypto-lib-ffc_params.o", "crypto/ffc/libcrypto-lib-ffc_params_generate.o", "crypto/ffc/libcrypto-lib-ffc_params_validate.o", + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", "crypto/hmac/libcrypto-lib-hmac.o", + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o", "crypto/http/libcrypto-lib-http_client.o", "crypto/http/libcrypto-lib-http_err.o", "crypto/http/libcrypto-lib-http_lib.o", @@ -24196,6 +28201,7 @@ our %unified_info = ( "crypto/lhash/libcrypto-lib-lhash.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -24205,10 +28211,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -24225,6 +28234,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-ppccap.o", "crypto/libcrypto-lib-ppccpuid.o", @@ -24234,12 +28244,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/md4/libcrypto-lib-md4_dgst.o", @@ -24249,6 +28263,15 @@ our %unified_info = ( "crypto/md5/libcrypto-lib-md5_sha1.o", "crypto/mdc2/libcrypto-lib-mdc2_one.o", "crypto/mdc2/libcrypto-lib-mdc2dgst.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_kem/libcrypto-lib-ml_kem.o", "crypto/modes/libcrypto-lib-cbc128.o", "crypto/modes/libcrypto-lib-ccm128.o", "crypto/modes/libcrypto-lib-cfb128.o", @@ -24261,6 +28284,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/objects/libcrypto-lib-o_names.o", "crypto/objects/libcrypto-lib-obj_dat.o", "crypto/objects/libcrypto-lib-obj_err.o", @@ -24327,6 +28351,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rc2/libcrypto-lib-rc2_cbc.o", "crypto/rc2/libcrypto-lib-rc2_ecb.o", @@ -24381,6 +28406,16 @@ our %unified_info = ( "crypto/sha/libcrypto-lib-sha512p8-ppc.o", "crypto/sha/libcrypto-lib-sha_ppc.o", "crypto/siphash/libcrypto-lib-siphash.o", + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", "crypto/sm2/libcrypto-lib-sm2_crypt.o", "crypto/sm2/libcrypto-lib-sm2_err.o", "crypto/sm2/libcrypto-lib-sm2_key.o", @@ -24398,6 +28433,12 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_register.o", "crypto/store/libcrypto-lib-store_result.o", "crypto/store/libcrypto-lib-store_strings.o", + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", "crypto/ts/libcrypto-lib-ts_asn1.o", "crypto/ts/libcrypto-lib-ts_conf.o", "crypto/ts/libcrypto-lib-ts_err.o", @@ -24426,14 +28467,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -24442,12 +28491,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -24455,13 +28509,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -24479,6 +28540,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -24488,6 +28550,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -24508,14 +28571,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -24532,12 +28596,60 @@ our %unified_info = ( "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", "ssl/libssl-lib-tls_srp.o", - "ssl/record/libssl-lib-dtls1_bitmap.o", + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o", "ssl/record/libssl-lib-rec_layer_d1.o", "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o", "ssl/statem/libssl-lib-extensions.o", "ssl/statem/libssl-lib-extensions_clnt.o", "ssl/statem/libssl-lib-extensions_cust.o", @@ -24575,12 +28687,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/der/der_ecx_key.c" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/der/der_ml_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/der/der_ml_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/der/der_rsa_gen.c" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/der/der_rsa_key.c" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/der/der_slh_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/der/der_slh_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/der/der_wrap_gen.c" ], @@ -24647,6 +28771,9 @@ our %unified_info = ( "providers/common/libfips-lib-securitycheck_fips.o" => [ "providers/common/securitycheck_fips.c" ], + "providers/endecode_test-bin-legacyprov.o" => [ + "providers/legacyprov.c" + ], "providers/evp_extra_test-bin-legacyprov.o" => [ "providers/legacyprov.c" ], @@ -24657,6 +28784,9 @@ our %unified_info = ( "providers/fips/fips-dso-fips_entry.o" => [ "providers/fips/fips_entry.c" ], + "providers/fips/libfips-lib-fipsindicator.o" => [ + "providers/fips/fipsindicator.c" + ], "providers/fips/libfips-lib-fipsprov.o" => [ "providers/fips/fipsprov.c" ], @@ -24720,6 +28850,15 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o" => [ "providers/implementations/ciphers/cipher_aes_gcm_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o" => [ "providers/implementations/ciphers/cipher_aes_hw.c" ], @@ -24792,9 +28931,27 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o" => [ "providers/implementations/ciphers/cipher_sm4.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o" => [ "providers/implementations/ciphers/cipher_sm4_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o" => [ "providers/implementations/ciphers/cipher_tdes.c" ], @@ -25014,6 +29171,15 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" => [ "providers/implementations/encode_decode/endecoder_common.c" ], + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o" => [ + "providers/implementations/encode_decode/ml_common_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o" => [ + "providers/implementations/encode_decode/ml_dsa_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" => [ + "providers/implementations/encode_decode/ml_kem_codecs.c" + ], "providers/implementations/exchange/libdefault-lib-dh_exch.o" => [ "providers/implementations/exchange/dh_exch.c" ], @@ -25038,9 +29204,15 @@ our %unified_info = ( "providers/implementations/exchange/libfips-lib-kdf_exch.o" => [ "providers/implementations/exchange/kdf_exch.c" ], + "providers/implementations/kdfs/libdefault-lib-argon2.o" => [ + "providers/implementations/kdfs/argon2.c" + ], "providers/implementations/kdfs/libdefault-lib-hkdf.o" => [ "providers/implementations/kdfs/hkdf.c" ], + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o" => [ + "providers/implementations/kdfs/hmacdrbg_kdf.c" + ], "providers/implementations/kdfs/libdefault-lib-kbkdf.o" => [ "providers/implementations/kdfs/kbkdf.c" ], @@ -25098,12 +29270,39 @@ our %unified_info = ( "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" => [ "providers/implementations/kdfs/pbkdf1.c" ], + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" => [ + "providers/implementations/kdfs/pvkkdf.c" + ], + "providers/implementations/kem/libdefault-lib-ec_kem.o" => [ + "providers/implementations/kem/ec_kem.c" + ], + "providers/implementations/kem/libdefault-lib-ecx_kem.o" => [ + "providers/implementations/kem/ecx_kem.c" + ], + "providers/implementations/kem/libdefault-lib-kem_util.o" => [ + "providers/implementations/kem/kem_util.c" + ], + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libdefault-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libdefault-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libfips-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libfips-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libfips-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libtemplate-lib-template_kem.o" => [ + "providers/implementations/kem/template_kem.c" + ], "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25122,9 +29321,21 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25143,9 +29354,24 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" => [ + "providers/implementations/keymgmt/template_kmgmt.c" + ], "providers/implementations/macs/libdefault-lib-blake2b_mac.o" => [ "providers/implementations/macs/blake2b_mac.c" ], @@ -25182,9 +29408,6 @@ our %unified_info = ( "providers/implementations/macs/libfips-lib-kmac_prov.o" => [ "providers/implementations/macs/kmac_prov.c" ], - "providers/implementations/rands/libdefault-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libdefault-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25200,12 +29423,12 @@ our %unified_info = ( "providers/implementations/rands/libdefault-lib-seed_src.o" => [ "providers/implementations/rands/seed_src.c" ], + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o" => [ + "providers/implementations/rands/seed_src_jitter.c" + ], "providers/implementations/rands/libdefault-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], - "providers/implementations/rands/libfips-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libfips-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25218,6 +29441,9 @@ our %unified_info = ( "providers/implementations/rands/libfips-lib-drbg_hmac.o" => [ "providers/implementations/rands/drbg_hmac.c" ], + "providers/implementations/rands/libfips-lib-fips_crng_test.o" => [ + "providers/implementations/rands/fips_crng_test.c" + ], "providers/implementations/rands/libfips-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], @@ -25245,9 +29471,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/implementations/signature/sm2_sig.c" ], @@ -25263,9 +29495,27 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libfips-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], "providers/implementations/storemgmt/libdefault-lib-file_store.o" => [ "providers/implementations/storemgmt/file_store.c" ], @@ -25289,8 +29539,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/libcommon-lib-provider_ctx.o", "providers/common/libcommon-lib-provider_err.o", @@ -25302,7 +29556,7 @@ our %unified_info = ( "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", "providers/implementations/digests/libcommon-lib-digestcommon.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/methods/libcommon-lib-tls_pad.o" ], "providers/libcrypto-lib-baseprov.o" => [ "providers/baseprov.c" @@ -25338,6 +29592,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -25362,7 +29619,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -25391,11 +29654,16 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o", "providers/implementations/exchange/libdefault-lib-dh_exch.o", "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", "providers/implementations/exchange/libdefault-lib-ecx_exch.o", "providers/implementations/exchange/libdefault-lib-kdf_exch.o", + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -25406,6 +29674,11 @@ our %unified_info = ( "providers/implementations/kdfs/libdefault-lib-sskdf.o", "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", "providers/implementations/kdfs/libdefault-lib-x942kdf.o", + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", @@ -25413,7 +29686,11 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libdefault-lib-blake2b_mac.o", "providers/implementations/macs/libdefault-lib-blake2s_mac.o", "providers/implementations/macs/libdefault-lib-cmac_prov.o", @@ -25422,12 +29699,12 @@ our %unified_info = ( "providers/implementations/macs/libdefault-lib-kmac_prov.o", "providers/implementations/macs/libdefault-lib-poly1305_prov.o", "providers/implementations/macs/libdefault-lib-siphash_prov.o", - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", @@ -25437,11 +29714,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", "providers/implementations/storemgmt/libdefault-lib-file_store.o", "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", - "ssl/libdefault-lib-s3_cbc.o" + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" ], "providers/libfips.a" => [ "crypto/aes/libfips-lib-aes-ppc.o", @@ -25481,6 +29762,7 @@ our %unified_info = ( "crypto/bn/libfips-lib-bn_sqrt.o", "crypto/bn/libfips-lib-bn_word.o", "crypto/bn/libfips-lib-ppc-mont.o", + "crypto/bn/libfips-lib-ppc64-mont-fixed.o", "crypto/buffer/libfips-lib-buffer.o", "crypto/cmac/libfips-lib-cmac.o", "crypto/des/libfips-lib-des_enc.o", @@ -25552,14 +29834,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", + "crypto/evp/libfips-lib-s_lib.o", "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o", "crypto/ffc/libfips-lib-ffc_backend.o", "crypto/ffc/libfips-lib-ffc_dh.o", "crypto/ffc/libfips-lib-ffc_key_generate.o", @@ -25567,6 +29850,8 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params.o", "crypto/ffc/libfips-lib-ffc_params_generate.o", "crypto/ffc/libfips-lib-ffc_params_validate.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o", "crypto/hmac/libfips-lib-hmac.o", "crypto/lhash/libfips-lib-lhash.o", "crypto/libfips-lib-asn1_dsa.o", @@ -25588,6 +29873,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-ppccap.o", "crypto/libfips-lib-ppccpuid.o", "crypto/libfips-lib-provider_core.o", @@ -25598,6 +29884,16 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o", + "crypto/ml_kem/libfips-lib-ml_kem.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -25607,6 +29903,7 @@ our %unified_info = ( "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o", "crypto/property/libfips-lib-defn_cache.o", "crypto/property/libfips-lib-property.o", "crypto/property/libfips-lib-property_parse.o", @@ -25641,7 +29938,23 @@ our %unified_info = ( "crypto/sha/libfips-lib-sha512.o", "crypto/sha/libfips-lib-sha512p8-ppc.o", "crypto/sha/libfips-lib-sha_ppc.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o", "crypto/stack/libfips-lib-stack.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o", "providers/common/der/libfips-lib-der_rsa_sig.o", "providers/common/libfips-lib-bio_prov.o", "providers/common/libfips-lib-capabilities.o", @@ -25650,6 +29963,7 @@ our %unified_info = ( "providers/common/libfips-lib-provider_util.o", "providers/common/libfips-lib-securitycheck.o", "providers/common/libfips-lib-securitycheck_fips.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o", @@ -25687,6 +30001,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", "providers/implementations/kem/libfips-lib-rsa_kem.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", @@ -25694,24 +30010,32 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libfips-lib-cmac_prov.o", "providers/implementations/macs/libfips-lib-gmac_prov.o", "providers/implementations/macs/libfips-lib-hmac_prov.o", "providers/implementations/macs/libfips-lib-kmac_prov.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o", "providers/libcommon.a", - "ssl/libfips-lib-s3_cbc.o" + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "providers/liblegacy-lib-prov_running.o" => [ "providers/prov_running.c" @@ -25741,13 +30065,12 @@ our %unified_info = ( "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", "providers/implementations/digests/liblegacy-lib-wp_prov.o", "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o", "providers/liblegacy-lib-prov_running.o" ], - "ssl/libdefault-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" - ], - "ssl/libfips-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" + "providers/libtemplate.a" => [ + "providers/implementations/kem/libtemplate-lib-template_kem.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "ssl/libssl-lib-bio_ssl.o" => [ "ssl/bio_ssl.c" @@ -25767,6 +30090,9 @@ our %unified_info = ( "ssl/libssl-lib-pqueue.o" => [ "ssl/pqueue.c" ], + "ssl/libssl-lib-priority_queue.o" => [ + "ssl/priority_queue.c" + ], "ssl/libssl-lib-s3_enc.o" => [ "ssl/s3_enc.c" ], @@ -25782,15 +30108,15 @@ our %unified_info = ( "ssl/libssl-lib-ssl_cert.o" => [ "ssl/ssl_cert.c" ], + "ssl/libssl-lib-ssl_cert_comp.o" => [ + "ssl/ssl_cert_comp.c" + ], "ssl/libssl-lib-ssl_ciph.o" => [ "ssl/ssl_ciph.c" ], "ssl/libssl-lib-ssl_conf.o" => [ "ssl/ssl_conf.c" ], - "ssl/libssl-lib-ssl_err.o" => [ - "ssl/ssl_err.c" - ], "ssl/libssl-lib-ssl_err_legacy.o" => [ "ssl/ssl_err_legacy.c" ], @@ -25839,11 +30165,131 @@ our %unified_info = ( "ssl/libssl-lib-tls_srp.o" => [ "ssl/tls_srp.c" ], - "ssl/record/libcommon-lib-tls_pad.o" => [ - "ssl/record/tls_pad.c" + "ssl/quic/libssl-lib-cc_newreno.o" => [ + "ssl/quic/cc_newreno.c" + ], + "ssl/quic/libssl-lib-json_enc.o" => [ + "ssl/quic/json_enc.c" + ], + "ssl/quic/libssl-lib-qlog.o" => [ + "ssl/quic/qlog.c" + ], + "ssl/quic/libssl-lib-qlog_event_helpers.o" => [ + "ssl/quic/qlog_event_helpers.c" + ], + "ssl/quic/libssl-lib-quic_ackm.o" => [ + "ssl/quic/quic_ackm.c" + ], + "ssl/quic/libssl-lib-quic_cfq.o" => [ + "ssl/quic/quic_cfq.c" + ], + "ssl/quic/libssl-lib-quic_channel.o" => [ + "ssl/quic/quic_channel.c" + ], + "ssl/quic/libssl-lib-quic_demux.o" => [ + "ssl/quic/quic_demux.c" + ], + "ssl/quic/libssl-lib-quic_engine.o" => [ + "ssl/quic/quic_engine.c" + ], + "ssl/quic/libssl-lib-quic_fc.o" => [ + "ssl/quic/quic_fc.c" + ], + "ssl/quic/libssl-lib-quic_fifd.o" => [ + "ssl/quic/quic_fifd.c" + ], + "ssl/quic/libssl-lib-quic_impl.o" => [ + "ssl/quic/quic_impl.c" + ], + "ssl/quic/libssl-lib-quic_lcidm.o" => [ + "ssl/quic/quic_lcidm.c" + ], + "ssl/quic/libssl-lib-quic_method.o" => [ + "ssl/quic/quic_method.c" + ], + "ssl/quic/libssl-lib-quic_obj.o" => [ + "ssl/quic/quic_obj.c" + ], + "ssl/quic/libssl-lib-quic_port.o" => [ + "ssl/quic/quic_port.c" + ], + "ssl/quic/libssl-lib-quic_rcidm.o" => [ + "ssl/quic/quic_rcidm.c" + ], + "ssl/quic/libssl-lib-quic_reactor.o" => [ + "ssl/quic/quic_reactor.c" + ], + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o" => [ + "ssl/quic/quic_reactor_wait_ctx.c" + ], + "ssl/quic/libssl-lib-quic_record_rx.o" => [ + "ssl/quic/quic_record_rx.c" + ], + "ssl/quic/libssl-lib-quic_record_shared.o" => [ + "ssl/quic/quic_record_shared.c" + ], + "ssl/quic/libssl-lib-quic_record_tx.o" => [ + "ssl/quic/quic_record_tx.c" + ], + "ssl/quic/libssl-lib-quic_record_util.o" => [ + "ssl/quic/quic_record_util.c" + ], + "ssl/quic/libssl-lib-quic_rstream.o" => [ + "ssl/quic/quic_rstream.c" ], - "ssl/record/libssl-lib-dtls1_bitmap.o" => [ - "ssl/record/dtls1_bitmap.c" + "ssl/quic/libssl-lib-quic_rx_depack.o" => [ + "ssl/quic/quic_rx_depack.c" + ], + "ssl/quic/libssl-lib-quic_sf_list.o" => [ + "ssl/quic/quic_sf_list.c" + ], + "ssl/quic/libssl-lib-quic_srt_gen.o" => [ + "ssl/quic/quic_srt_gen.c" + ], + "ssl/quic/libssl-lib-quic_srtm.o" => [ + "ssl/quic/quic_srtm.c" + ], + "ssl/quic/libssl-lib-quic_sstream.o" => [ + "ssl/quic/quic_sstream.c" + ], + "ssl/quic/libssl-lib-quic_statm.o" => [ + "ssl/quic/quic_statm.c" + ], + "ssl/quic/libssl-lib-quic_stream_map.o" => [ + "ssl/quic/quic_stream_map.c" + ], + "ssl/quic/libssl-lib-quic_thread_assist.o" => [ + "ssl/quic/quic_thread_assist.c" + ], + "ssl/quic/libssl-lib-quic_tls.o" => [ + "ssl/quic/quic_tls.c" + ], + "ssl/quic/libssl-lib-quic_tls_api.o" => [ + "ssl/quic/quic_tls_api.c" + ], + "ssl/quic/libssl-lib-quic_trace.o" => [ + "ssl/quic/quic_trace.c" + ], + "ssl/quic/libssl-lib-quic_tserver.o" => [ + "ssl/quic/quic_tserver.c" + ], + "ssl/quic/libssl-lib-quic_txp.o" => [ + "ssl/quic/quic_txp.c" + ], + "ssl/quic/libssl-lib-quic_txpim.o" => [ + "ssl/quic/quic_txpim.c" + ], + "ssl/quic/libssl-lib-quic_types.o" => [ + "ssl/quic/quic_types.c" + ], + "ssl/quic/libssl-lib-quic_wire.o" => [ + "ssl/quic/quic_wire.c" + ], + "ssl/quic/libssl-lib-quic_wire_pkt.o" => [ + "ssl/quic/quic_wire_pkt.c" + ], + "ssl/quic/libssl-lib-uint_set.o" => [ + "ssl/quic/uint_set.c" ], "ssl/record/libssl-lib-rec_layer_d1.o" => [ "ssl/record/rec_layer_d1.c" @@ -25851,14 +30297,44 @@ our %unified_info = ( "ssl/record/libssl-lib-rec_layer_s3.o" => [ "ssl/record/rec_layer_s3.c" ], - "ssl/record/libssl-lib-ssl3_buffer.o" => [ - "ssl/record/ssl3_buffer.c" + "ssl/record/methods/libcommon-lib-tls_pad.o" => [ + "ssl/record/methods/tls_pad.c" + ], + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libfips-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libssl-lib-dtls_meth.o" => [ + "ssl/record/methods/dtls_meth.c" + ], + "ssl/record/methods/libssl-lib-ssl3_meth.o" => [ + "ssl/record/methods/ssl3_meth.c" + ], + "ssl/record/methods/libssl-lib-tls13_meth.o" => [ + "ssl/record/methods/tls13_meth.c" + ], + "ssl/record/methods/libssl-lib-tls1_meth.o" => [ + "ssl/record/methods/tls1_meth.c" + ], + "ssl/record/methods/libssl-lib-tls_common.o" => [ + "ssl/record/methods/tls_common.c" ], - "ssl/record/libssl-lib-ssl3_record.o" => [ - "ssl/record/ssl3_record.c" + "ssl/record/methods/libssl-lib-tls_multib.o" => [ + "ssl/record/methods/tls_multib.c" ], - "ssl/record/libssl-lib-ssl3_record_tls13.o" => [ - "ssl/record/ssl3_record_tls13.c" + "ssl/record/methods/libssl-lib-tlsany_meth.o" => [ + "ssl/record/methods/tlsany_meth.c" + ], + "ssl/rio/libssl-lib-poll_builder.o" => [ + "ssl/rio/poll_builder.c" + ], + "ssl/rio/libssl-lib-poll_immediate.o" => [ + "ssl/rio/poll_immediate.c" + ], + "ssl/rio/libssl-lib-rio_notifier.o" => [ + "ssl/rio/rio_notifier.c" ], "ssl/statem/libssl-lib-extensions.o" => [ "ssl/statem/extensions.c" @@ -25954,6 +30430,8 @@ our %unified_info = ( "test/asn1_string_table_test.c" ], "test/asn1_time_test" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1_time_test-bin-ctype.o", "test/asn1_time_test-bin-asn1_time_test.o" ], "test/asn1_time_test-bin-asn1_time_test.o" => [ @@ -25984,6 +30462,18 @@ our %unified_info = ( "test/bftest-bin-bftest.o" => [ "test/bftest.c" ], + "test/bio_addr_test" => [ + "test/bio_addr_test-bin-bio_addr_test.o" + ], + "test/bio_addr_test-bin-bio_addr_test.o" => [ + "test/bio_addr_test.c" + ], + "test/bio_base64_test" => [ + "test/bio_base64_test-bin-bio_base64_test.o" + ], + "test/bio_base64_test-bin-bio_base64_test.o" => [ + "test/bio_base64_test.c" + ], "test/bio_callback_test" => [ "test/bio_callback_test-bin-bio_callback_test.o" ], @@ -25996,6 +30486,12 @@ our %unified_info = ( "test/bio_core_test-bin-bio_core_test.o" => [ "test/bio_core_test.c" ], + "test/bio_dgram_test" => [ + "test/bio_dgram_test-bin-bio_dgram_test.o" + ], + "test/bio_dgram_test-bin-bio_dgram_test.o" => [ + "test/bio_dgram_test.c" + ], "test/bio_enc_test" => [ "test/bio_enc_test-bin-bio_enc_test.o" ], @@ -26008,6 +30504,12 @@ our %unified_info = ( "test/bio_memleak_test-bin-bio_memleak_test.o" => [ "test/bio_memleak_test.c" ], + "test/bio_meth_test" => [ + "test/bio_meth_test-bin-bio_meth_test.o" + ], + "test/bio_meth_test-bin-bio_meth_test.o" => [ + "test/bio_meth_test.c" + ], "test/bio_prefix_text" => [ "test/bio_prefix_text-bin-bio_prefix_text.o" ], @@ -26026,6 +30528,12 @@ our %unified_info = ( "test/bio_readbuffer_test-bin-bio_readbuffer_test.o" => [ "test/bio_readbuffer_test.c" ], + "test/bio_tfo_test" => [ + "test/bio_tfo_test-bin-bio_tfo_test.o" + ], + "test/bio_tfo_test-bin-bio_tfo_test.o" => [ + "test/bio_tfo_test.c" + ], "test/bioprinttest" => [ "test/bioprinttest-bin-bioprinttest.o" ], @@ -26044,6 +30552,12 @@ our %unified_info = ( "test/bntest-bin-bntest.o" => [ "test/bntest.c" ], + "test/build_wincrypt_test" => [ + "test/build_wincrypt_test-bin-build_wincrypt_test.o" + ], + "test/build_wincrypt_test-bin-build_wincrypt_test.o" => [ + "test/build_wincrypt_test.c" + ], "test/buildtest_c_aes" => [ "test/buildtest_c_aes-bin-buildtest_aes.o" ], @@ -26074,6 +30588,12 @@ our %unified_info = ( "test/buildtest_c_buffer-bin-buildtest_buffer.o" => [ "test/buildtest_buffer.c" ], + "test/buildtest_c_byteorder" => [ + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" + ], + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" => [ + "test/buildtest_byteorder.c" + ], "test/buildtest_c_camellia" => [ "test/buildtest_c_camellia-bin-buildtest_camellia.o" ], @@ -26122,12 +30642,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch-bin-buildtest_core_dispatch.o" => [ "test/buildtest_core_dispatch.c" ], - "test/buildtest_c_core_names" => [ - "test/buildtest_c_core_names-bin-buildtest_core_names.o" - ], - "test/buildtest_c_core_names-bin-buildtest_core_names.o" => [ - "test/buildtest_core_names.c" - ], "test/buildtest_c_core_object" => [ "test/buildtest_c_core_object-bin-buildtest_core_object.o" ], @@ -26176,6 +30690,12 @@ our %unified_info = ( "test/buildtest_c_e_os2-bin-buildtest_e_os2.o" => [ "test/buildtest_e_os2.c" ], + "test/buildtest_c_e_ostime" => [ + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" + ], + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" => [ + "test/buildtest_e_ostime.c" + ], "test/buildtest_c_ebcdic" => [ "test/buildtest_c_ebcdic-bin-buildtest_ebcdic.o" ], @@ -26230,6 +30750,12 @@ our %unified_info = ( "test/buildtest_c_hmac-bin-buildtest_hmac.o" => [ "test/buildtest_hmac.c" ], + "test/buildtest_c_hpke" => [ + "test/buildtest_c_hpke-bin-buildtest_hpke.o" + ], + "test/buildtest_c_hpke-bin-buildtest_hpke.o" => [ + "test/buildtest_hpke.c" + ], "test/buildtest_c_http" => [ "test/buildtest_c_http-bin-buildtest_http.o" ], @@ -26242,6 +30768,12 @@ our %unified_info = ( "test/buildtest_c_idea-bin-buildtest_idea.o" => [ "test/buildtest_idea.c" ], + "test/buildtest_c_indicator" => [ + "test/buildtest_c_indicator-bin-buildtest_indicator.o" + ], + "test/buildtest_c_indicator-bin-buildtest_indicator.o" => [ + "test/buildtest_indicator.c" + ], "test/buildtest_c_kdf" => [ "test/buildtest_c_kdf-bin-buildtest_kdf.o" ], @@ -26272,6 +30804,12 @@ our %unified_info = ( "test/buildtest_c_mdc2-bin-buildtest_mdc2.o" => [ "test/buildtest_mdc2.c" ], + "test/buildtest_c_ml_kem" => [ + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" + ], + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" => [ + "test/buildtest_ml_kem.c" + ], "test/buildtest_c_modes" => [ "test/buildtest_c_modes-bin-buildtest_modes.o" ], @@ -26332,6 +30870,12 @@ our %unified_info = ( "test/buildtest_c_provider-bin-buildtest_provider.o" => [ "test/buildtest_provider.c" ], + "test/buildtest_c_quic" => [ + "test/buildtest_c_quic-bin-buildtest_quic.o" + ], + "test/buildtest_c_quic-bin-buildtest_quic.o" => [ + "test/buildtest_quic.c" + ], "test/buildtest_c_rand" => [ "test/buildtest_c_rand-bin-buildtest_rand.o" ], @@ -26416,6 +30960,12 @@ our %unified_info = ( "test/buildtest_c_symhacks-bin-buildtest_symhacks.o" => [ "test/buildtest_symhacks.c" ], + "test/buildtest_c_thread" => [ + "test/buildtest_c_thread-bin-buildtest_thread.o" + ], + "test/buildtest_c_thread-bin-buildtest_thread.o" => [ + "test/buildtest_thread.c" + ], "test/buildtest_c_tls1" => [ "test/buildtest_c_tls1-bin-buildtest_tls1.o" ], @@ -26446,6 +30996,29 @@ our %unified_info = ( "test/buildtest_c_whrlpool-bin-buildtest_whrlpool.o" => [ "test/buildtest_whrlpool.c" ], + "test/byteorder_test" => [ + "test/byteorder_test-bin-byteorder_test.o" + ], + "test/byteorder_test-bin-byteorder_test.o" => [ + "test/byteorder_test.c" + ], + "test/ca_internals_test" => [ + "apps/ca_internals_test-bin-ca.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", + "crypto/ca_internals_test-bin-ctype.o", + "test/ca_internals_test-bin-ca_internals_test.o" + ], + "test/ca_internals_test-bin-ca_internals_test.o" => [ + "test/ca_internals_test.c" + ], "test/casttest" => [ "test/casttest-bin-casttest.o" ], @@ -26624,6 +31197,12 @@ our %unified_info = ( "test/danetest-bin-danetest.o" => [ "test/danetest.c" ], + "test/decoder_propq_test" => [ + "test/decoder_propq_test-bin-decoder_propq_test.o" + ], + "test/decoder_propq_test-bin-decoder_propq_test.o" => [ + "test/decoder_propq_test.c" + ], "test/defltfips_test" => [ "test/defltfips_test-bin-defltfips_test.o" ], @@ -26705,6 +31284,7 @@ our %unified_info = ( "test/ectest.c" ], "test/endecode_test" => [ + "providers/endecode_test-bin-legacyprov.o", "test/endecode_test-bin-endecode_test.o", "test/helpers/endecode_test-bin-predefined_dhparams.o" ], @@ -26737,17 +31317,29 @@ our %unified_info = ( ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", - "test/evp_extra_test-bin-evp_extra_test.o" + "test/evp_extra_test-bin-evp_extra_test.o", + "test/evp_extra_test-bin-fake_pipelineprov.o", + "test/evp_extra_test-bin-fake_rsaprov.o" ], "test/evp_extra_test-bin-evp_extra_test.o" => [ "test/evp_extra_test.c" ], + "test/evp_extra_test-bin-fake_pipelineprov.o" => [ + "test/fake_pipelineprov.c" + ], + "test/evp_extra_test-bin-fake_rsaprov.o" => [ + "test/fake_rsaprov.c" + ], "test/evp_extra_test2" => [ - "test/evp_extra_test2-bin-evp_extra_test2.o" + "test/evp_extra_test2-bin-evp_extra_test2.o", + "test/evp_extra_test2-bin-tls-provider.o" ], "test/evp_extra_test2-bin-evp_extra_test2.o" => [ "test/evp_extra_test2.c" ], + "test/evp_extra_test2-bin-tls-provider.o" => [ + "test/tls-provider.c" + ], "test/evp_fetch_prov_test" => [ "test/evp_fetch_prov_test-bin-evp_fetch_prov_test.o" ], @@ -26772,6 +31364,12 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name-bin-evp_pkey_ctx_new_from_name.o" => [ "test/evp_pkey_ctx_new_from_name.c" ], + "test/evp_pkey_dhkem_test" => [ + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" + ], + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" => [ + "test/evp_pkey_dhkem_test.c" + ], "test/evp_pkey_dparams_test" => [ "test/evp_pkey_dparams_test-bin-evp_pkey_dparams_test.o" ], @@ -26784,12 +31382,28 @@ our %unified_info = ( "test/evp_pkey_provided_test-bin-evp_pkey_provided_test.o" => [ "test/evp_pkey_provided_test.c" ], + "test/evp_skey_test" => [ + "test/evp_skey_test-bin-evp_skey_test.o", + "test/evp_skey_test-bin-fake_cipherprov.o" + ], + "test/evp_skey_test-bin-evp_skey_test.o" => [ + "test/evp_skey_test.c" + ], + "test/evp_skey_test-bin-fake_cipherprov.o" => [ + "test/fake_cipherprov.c" + ], "test/evp_test" => [ "test/evp_test-bin-evp_test.o" ], "test/evp_test-bin-evp_test.o" => [ "test/evp_test.c" ], + "test/evp_xof_test" => [ + "test/evp_xof_test-bin-evp_xof_test.o" + ], + "test/evp_xof_test-bin-evp_xof_test.o" => [ + "test/evp_xof_test.c" + ], "test/exdatatest" => [ "test/exdatatest-bin-exdatatest.o" ], @@ -26875,15 +31489,108 @@ our %unified_info = ( "test/helpers/fatalerrtest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/json_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/json_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/json_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + "test/helpers/pkcs12.c" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ "test/helpers/pkcs12.c" ], + "test/helpers/quic_multistream_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_multistream_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_multistream_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_newcid_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_newcid_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_newcid_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_radix_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_radix_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_radix_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_srt_gen_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicapitest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicapitest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicapitest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicfaultstest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicfaultstest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicfaultstest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/ssl_old_test-bin-predefined_dhparams.o" => [ "test/helpers/predefined_dhparams.c" ], @@ -26911,6 +31618,9 @@ our %unified_info = ( "test/helpers/tls13ccstest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/hexstr_test" => [ "test/hexstr_test-bin-hexstr_test.o" ], @@ -26923,6 +31633,12 @@ our %unified_info = ( "test/hmactest-bin-hmactest.o" => [ "test/hmactest.c" ], + "test/hpke_test" => [ + "test/hpke_test-bin-hpke_test.o" + ], + "test/hpke_test-bin-hpke_test.o" => [ + "test/hpke_test.c" + ], "test/http_test" => [ "test/http_test-bin-http_test.o" ], @@ -26941,6 +31657,16 @@ our %unified_info = ( "test/igetest-bin-igetest.o" => [ "test/igetest.c" ], + "test/json_test" => [ + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/json_test-bin-json_test.o" + ], + "test/json_test-bin-json_test.o" => [ + "test/json_test.c" + ], "test/keymgmt_internal_test" => [ "test/keymgmt_internal_test-bin-keymgmt_internal_test.o" ], @@ -26961,6 +31687,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -26973,6 +31700,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-tests.o", "test/testutil/libtestutil-lib-testutil_init.o" ], + "test/list_test" => [ + "test/list_test-bin-list_test.o" + ], + "test/list_test-bin-list_test.o" => [ + "test/list_test.c" + ], "test/localetest" => [ "test/localetest-bin-localetest.o" ], @@ -26991,12 +31724,36 @@ our %unified_info = ( "test/mdc2test-bin-mdc2test.o" => [ "test/mdc2test.c" ], + "test/membio_test" => [ + "test/membio_test-bin-membio_test.o" + ], + "test/membio_test-bin-membio_test.o" => [ + "test/membio_test.c" + ], "test/memleaktest" => [ "test/memleaktest-bin-memleaktest.o" ], "test/memleaktest-bin-memleaktest.o" => [ "test/memleaktest.c" ], + "test/ml_dsa_test" => [ + "test/ml_dsa_test-bin-ml_dsa_test.o" + ], + "test/ml_dsa_test-bin-ml_dsa_test.o" => [ + "test/ml_dsa_test.c" + ], + "test/ml_kem_evp_extra_test" => [ + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" + ], + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" => [ + "test/ml_kem_evp_extra_test.c" + ], + "test/ml_kem_internal_test" => [ + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" + ], + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" => [ + "test/ml_kem_internal_test.c" + ], "test/modes_internal_test" => [ "test/modes_internal_test-bin-modes_internal_test.o" ], @@ -27042,11 +31799,18 @@ our %unified_info = ( "test/p_test.c" ], "test/packettest" => [ + "crypto/packettest-bin-quic_vlint.o", "test/packettest-bin-packettest.o" ], "test/packettest-bin-packettest.o" => [ "test/packettest.c" ], + "test/pairwise_fail_test" => [ + "test/pairwise_fail_test-bin-pairwise_fail_test.o" + ], + "test/pairwise_fail_test-bin-pairwise_fail_test.o" => [ + "test/pairwise_fail_test.c" + ], "test/param_build_test" => [ "test/param_build_test-bin-param_build_test.o" ], @@ -27095,6 +31859,13 @@ our %unified_info = ( "test/pemtest-bin-pemtest.o" => [ "test/pemtest.c" ], + "test/pkcs12_api_test" => [ + "test/helpers/pkcs12_api_test-bin-pkcs12.o", + "test/pkcs12_api_test-bin-pkcs12_api_test.o" + ], + "test/pkcs12_api_test-bin-pkcs12_api_test.o" => [ + "test/pkcs12_api_test.c" + ], "test/pkcs12_format_test" => [ "test/helpers/pkcs12_format_test-bin-pkcs12.o", "test/pkcs12_format_test-bin-pkcs12_format_test.o" @@ -27126,6 +31897,12 @@ our %unified_info = ( "test/poly1305_internal_test-bin-poly1305_internal_test.o" => [ "test/poly1305_internal_test.c" ], + "test/priority_queue_test" => [ + "test/priority_queue_test-bin-priority_queue_test.o" + ], + "test/priority_queue_test-bin-priority_queue_test.o" => [ + "test/priority_queue_test.c" + ], "test/property_test" => [ "test/property_test-bin-property_test.o" ], @@ -27144,6 +31921,12 @@ our %unified_info = ( "test/provfetchtest-bin-provfetchtest.o" => [ "test/provfetchtest.c" ], + "test/provider_default_search_path_test" => [ + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" + ], + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" => [ + "test/provider_default_search_path_test.c" + ], "test/provider_fallback_test" => [ "test/provider_fallback_test-bin-provider_fallback_test.o" ], @@ -27192,6 +31975,174 @@ our %unified_info = ( "test/punycode_test-bin-punycode_test.o" => [ "test/punycode_test.c" ], + "test/quic_ackm_test" => [ + "test/quic_ackm_test-bin-cc_dummy.o", + "test/quic_ackm_test-bin-quic_ackm_test.o" + ], + "test/quic_ackm_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_ackm_test-bin-quic_ackm_test.o" => [ + "test/quic_ackm_test.c" + ], + "test/quic_cc_test" => [ + "test/quic_cc_test-bin-quic_cc_test.o" + ], + "test/quic_cc_test-bin-quic_cc_test.o" => [ + "test/quic_cc_test.c" + ], + "test/quic_cfq_test" => [ + "test/quic_cfq_test-bin-quic_cfq_test.o" + ], + "test/quic_cfq_test-bin-quic_cfq_test.o" => [ + "test/quic_cfq_test.c" + ], + "test/quic_client_test" => [ + "test/quic_client_test-bin-quic_client_test.o" + ], + "test/quic_client_test-bin-quic_client_test.o" => [ + "test/quic_client_test.c" + ], + "test/quic_fc_test" => [ + "test/quic_fc_test-bin-quic_fc_test.o" + ], + "test/quic_fc_test-bin-quic_fc_test.o" => [ + "test/quic_fc_test.c" + ], + "test/quic_fifd_test" => [ + "test/quic_fifd_test-bin-cc_dummy.o", + "test/quic_fifd_test-bin-quic_fifd_test.o" + ], + "test/quic_fifd_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_fifd_test-bin-quic_fifd_test.o" => [ + "test/quic_fifd_test.c" + ], + "test/quic_lcidm_test" => [ + "test/quic_lcidm_test-bin-quic_lcidm_test.o" + ], + "test/quic_lcidm_test-bin-quic_lcidm_test.o" => [ + "test/quic_lcidm_test.c" + ], + "test/quic_multistream_test" => [ + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/quic_multistream_test-bin-quic_multistream_test.o" + ], + "test/quic_multistream_test-bin-quic_multistream_test.o" => [ + "test/quic_multistream_test.c" + ], + "test/quic_newcid_test" => [ + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/quic_newcid_test-bin-quic_newcid_test.o" + ], + "test/quic_newcid_test-bin-quic_newcid_test.o" => [ + "test/quic_newcid_test.c" + ], + "test/quic_qlog_test" => [ + "test/quic_qlog_test-bin-quic_qlog_test.o" + ], + "test/quic_qlog_test-bin-quic_qlog_test.o" => [ + "test/quic_qlog_test.c" + ], + "test/quic_radix_test" => [ + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "test/quic_rcidm_test" => [ + "test/quic_rcidm_test-bin-quic_rcidm_test.o" + ], + "test/quic_rcidm_test-bin-quic_rcidm_test.o" => [ + "test/quic_rcidm_test.c" + ], + "test/quic_record_test" => [ + "test/quic_record_test-bin-quic_record_test.o" + ], + "test/quic_record_test-bin-quic_record_test.o" => [ + "test/quic_record_test.c" + ], + "test/quic_srt_gen_test" => [ + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" + ], + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" => [ + "test/quic_srt_gen_test.c" + ], + "test/quic_srtm_test" => [ + "test/quic_srtm_test-bin-quic_srtm_test.o" + ], + "test/quic_srtm_test-bin-quic_srtm_test.o" => [ + "test/quic_srtm_test.c" + ], + "test/quic_stream_test" => [ + "test/quic_stream_test-bin-quic_stream_test.o" + ], + "test/quic_stream_test-bin-quic_stream_test.o" => [ + "test/quic_stream_test.c" + ], + "test/quic_tserver_test" => [ + "test/quic_tserver_test-bin-quic_tserver_test.o" + ], + "test/quic_tserver_test-bin-quic_tserver_test.o" => [ + "test/quic_tserver_test.c" + ], + "test/quic_txp_test" => [ + "test/quic_txp_test-bin-cc_dummy.o", + "test/quic_txp_test-bin-quic_txp_test.o" + ], + "test/quic_txp_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_txp_test-bin-quic_txp_test.o" => [ + "test/quic_txp_test.c" + ], + "test/quic_txpim_test" => [ + "test/quic_txpim_test-bin-quic_txpim_test.o" + ], + "test/quic_txpim_test-bin-quic_txpim_test.o" => [ + "test/quic_txpim_test.c" + ], + "test/quic_wire_test" => [ + "test/quic_wire_test-bin-quic_wire_test.o" + ], + "test/quic_wire_test-bin-quic_wire_test.o" => [ + "test/quic_wire_test.c" + ], + "test/quicapitest" => [ + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/quicapitest-bin-quicapitest.o" + ], + "test/quicapitest-bin-quicapitest.o" => [ + "test/quicapitest.c" + ], + "test/quicfaultstest" => [ + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", + "test/quicfaultstest-bin-quicfaultstest.o" + ], + "test/quicfaultstest-bin-quicfaultstest.o" => [ + "test/quicfaultstest.c" + ], + "test/radix/quic_radix_test-bin-quic_radix.o" => [ + "test/radix/quic_radix.c" + ], "test/rand_status_test" => [ "test/rand_status_test-bin-rand_status_test.o" ], @@ -27222,11 +32173,11 @@ our %unified_info = ( "test/rc5test-bin-rc5test.o" => [ "test/rc5test.c" ], - "test/rdrand_sanitytest" => [ - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" + "test/rdcpu_sanitytest" => [ + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" ], - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" => [ - "test/rdrand_sanitytest.c" + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" => [ + "test/rdcpu_sanitytest.c" ], "test/recordlentest" => [ "test/helpers/recordlentest-bin-ssltestlib.o", @@ -27235,6 +32186,13 @@ our %unified_info = ( "test/recordlentest-bin-recordlentest.o" => [ "test/recordlentest.c" ], + "test/rpktest" => [ + "test/helpers/rpktest-bin-ssltestlib.o", + "test/rpktest-bin-rpktest.o" + ], + "test/rpktest-bin-rpktest.o" => [ + "test/rpktest.c" + ], "test/rsa_complex" => [ "test/rsa_complex-bin-rsa_complex.o" ], @@ -27259,6 +32217,18 @@ our %unified_info = ( "test/rsa_test-bin-rsa_test.o" => [ "test/rsa_test.c" ], + "test/rsa_x931_test" => [ + "test/rsa_x931_test-bin-rsa_x931_test.o" + ], + "test/rsa_x931_test-bin-rsa_x931_test.o" => [ + "test/rsa_x931_test.c" + ], + "test/safe_math_test" => [ + "test/safe_math_test-bin-safe_math_test.o" + ], + "test/safe_math_test-bin-safe_math_test.o" => [ + "test/safe_math_test.c" + ], "test/sanitytest" => [ "test/sanitytest-bin-sanitytest.o" ], @@ -27290,6 +32260,12 @@ our %unified_info = ( "test/siphash_internal_test-bin-siphash_internal_test.o" => [ "test/siphash_internal_test.c" ], + "test/slh_dsa_test" => [ + "test/slh_dsa_test-bin-slh_dsa_test.o" + ], + "test/slh_dsa_test-bin-slh_dsa_test.o" => [ + "test/slh_dsa_test.c" + ], "test/sm2_internal_test" => [ "test/sm2_internal_test-bin-sm2_internal_test.o" ], @@ -27332,6 +32308,13 @@ our %unified_info = ( "test/ssl_ctx_test-bin-ssl_ctx_test.o" => [ "test/ssl_ctx_test.c" ], + "test/ssl_handshake_rtt_test" => [ + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" + ], + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" => [ + "test/ssl_handshake_rtt_test.c" + ], "test/ssl_old_test" => [ "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/ssl_old_test-bin-ssl_old_test.o" @@ -27390,6 +32373,12 @@ our %unified_info = ( "test/stack_test-bin-stack_test.o" => [ "test/stack_test.c" ], + "test/strtoultest" => [ + "test/strtoultest-bin-strtoultest.o" + ], + "test/strtoultest-bin-strtoultest.o" => [ + "test/strtoultest.c" + ], "test/sysdefaulttest" => [ "test/sysdefaulttest-bin-sysdefaulttest.o" ], @@ -27420,6 +32409,9 @@ our %unified_info = ( "test/testutil/libtestutil-lib-format_output.o" => [ "test/testutil/format_output.c" ], + "test/testutil/libtestutil-lib-helper.o" => [ + "test/testutil/helper.c" + ], "test/testutil/libtestutil-lib-load.o" => [ "test/testutil/load.c" ], @@ -27453,6 +32445,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-testutil_init.o" => [ "test/testutil/testutil_init.c" ], + "test/threadpool_test" => [ + "test/threadpool_test-bin-threadpool_test.o" + ], + "test/threadpool_test-bin-threadpool_test.o" => [ + "test/threadpool_test.c" + ], "test/threadstest" => [ "test/threadstest-bin-threadstest.o" ], @@ -27471,6 +32469,12 @@ our %unified_info = ( "test/time_offset_test-bin-time_offset_test.o" => [ "test/time_offset_test.c" ], + "test/time_test" => [ + "test/time_test-bin-time_test.o" + ], + "test/time_test-bin-time_test.o" => [ + "test/time_test.c" + ], "test/tls13ccstest" => [ "test/helpers/tls13ccstest-bin-ssltestlib.o", "test/tls13ccstest-bin-tls13ccstest.o" @@ -27484,6 +32488,13 @@ our %unified_info = ( "test/tls13encryptiontest-bin-tls13encryptiontest.o" => [ "test/tls13encryptiontest.c" ], + "test/tls13groupselection_test" => [ + "test/helpers/tls13groupselection_test-bin-ssltestlib.o", + "test/tls13groupselection_test-bin-tls13groupselection_test.o" + ], + "test/tls13groupselection_test-bin-tls13groupselection_test.o" => [ + "test/tls13groupselection_test.c" + ], "test/trace_api_test" => [ "test/trace_api_test-bin-trace_api_test.o" ], @@ -27539,6 +32550,12 @@ our %unified_info = ( "test/wpackettest-bin-wpackettest.o" => [ "test/wpackettest.c" ], + "test/x509_acert_test" => [ + "test/x509_acert_test-bin-x509_acert_test.o" + ], + "test/x509_acert_test-bin-x509_acert_test.o" => [ + "test/x509_acert_test.c" + ], "test/x509_check_cert_pkey_test" => [ "test/x509_check_cert_pkey_test-bin-x509_check_cert_pkey_test.o" ], @@ -27557,6 +32574,24 @@ our %unified_info = ( "test/x509_internal_test-bin-x509_internal_test.o" => [ "test/x509_internal_test.c" ], + "test/x509_load_cert_file_test" => [ + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" + ], + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" => [ + "test/x509_load_cert_file_test.c" + ], + "test/x509_req_test" => [ + "test/x509_req_test-bin-x509_req_test.o" + ], + "test/x509_req_test-bin-x509_req_test.o" => [ + "test/x509_req_test.c" + ], + "test/x509_test" => [ + "test/x509_test-bin-x509_test.o" + ], + "test/x509_test-bin-x509_test.o" => [ + "test/x509_test.c" + ], "test/x509_time_test" => [ "test/x509_time_test-bin-x509_time_test.o" ], @@ -27620,6 +32655,7 @@ my @makevars = ( "LDLIBS", "MT", "MTFLAGS", + "OBJCOPY", "PERL", "RANLIB", "RC", @@ -27633,6 +32669,12 @@ my %disabled_info = ( "asan" => { "macro" => "OPENSSL_NO_ASAN" }, + "brotli" => { + "macro" => "OPENSSL_NO_BROTLI" + }, + "brotli-dynamic" => { + "macro" => "OPENSSL_NO_BROTLI_DYNAMIC" + }, "comp" => { "macro" => "OPENSSL_NO_COMP", "skipped" => [ @@ -27645,6 +32687,9 @@ my %disabled_info = ( "crypto-mdebug-backtrace" => { "macro" => "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE" }, + "demos" => { + "macro" => "OPENSSL_NO_DEMOS" + }, "devcryptoeng" => { "macro" => "OPENSSL_NO_DEVCRYPTOENG" }, @@ -27657,12 +32702,24 @@ my %disabled_info = ( "external-tests" => { "macro" => "OPENSSL_NO_EXTERNAL_TESTS" }, + "fips-jitter" => { + "macro" => "OPENSSL_NO_FIPS_JITTER" + }, "fuzz-afl" => { "macro" => "OPENSSL_NO_FUZZ_AFL" }, "fuzz-libfuzzer" => { "macro" => "OPENSSL_NO_FUZZ_LIBFUZZER" }, + "h3demo" => { + "macro" => "OPENSSL_NO_H3DEMO" + }, + "hqinterop" => { + "macro" => "OPENSSL_NO_HQINTEROP" + }, + "jitter" => { + "macro" => "OPENSSL_NO_JITTER" + }, "ktls" => { "macro" => "OPENSSL_NO_KTLS" }, @@ -27678,6 +32735,9 @@ my %disabled_info = ( "msan" => { "macro" => "OPENSSL_NO_MSAN" }, + "pie" => { + "macro" => "OPENSSL_NO_PIE" + }, "rc5" => { "macro" => "OPENSSL_NO_RC5", "skipped" => [ @@ -27693,6 +32753,12 @@ my %disabled_info = ( "ssl3-method" => { "macro" => "OPENSSL_NO_SSL3_METHOD" }, + "sslkeylog" => { + "macro" => "OPENSSL_NO_SSLKEYLOG" + }, + "tfo" => { + "macro" => "OPENSSL_NO_TFO" + }, "trace" => { "macro" => "OPENSSL_NO_TRACE" }, @@ -27707,6 +32773,21 @@ my %disabled_info = ( }, "weak-ssl-ciphers" => { "macro" => "OPENSSL_NO_WEAK_SSL_CIPHERS" + }, + "winstore" => { + "macro" => "OPENSSL_NO_WINSTORE" + }, + "zlib" => { + "macro" => "OPENSSL_NO_ZLIB" + }, + "zlib-dynamic" => { + "macro" => "OPENSSL_NO_ZLIB_DYNAMIC" + }, + "zstd" => { + "macro" => "OPENSSL_NO_ZSTD" + }, + "zstd-dynamic" => { + "macro" => "OPENSSL_NO_ZSTD_DYNAMIC" } ); my @user_crossable = qw( AR AS CC CXX CPP LD MT RANLIB RC ); @@ -27720,15 +32801,15 @@ unless (caller) { use File::Copy; use Pod::Usage; - use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; - use OpenSSL::fallback '/home/runner/work/node/node/deps/openssl/openssl/external/perl/MODULES.txt'; + use lib '/node/deps/openssl/openssl/util/perl'; + use OpenSSL::fallback '/node/deps/openssl/openssl/external/perl/MODULES.txt'; my $here = dirname($0); if (scalar @ARGV == 0) { # With no arguments, re-create the build file # We do that in two steps, where the first step emits perl - # snipets. + # snippets. my $buildfile = $config{build_file}; my $buildfile_template = "$buildfile.in"; @@ -27748,7 +32829,7 @@ unless (caller) { ); use lib '.'; - use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; + use lib '/node/deps/openssl/openssl/Configurations'; use gentemplate; open my $buildfile_template_fh, ">$buildfile_template" @@ -27765,8 +32846,8 @@ unless (caller) { my $prepend = <<'_____'; use File::Spec::Functions; -use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; -use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; +use lib '/node/deps/openssl/openssl/util/perl'; +use lib '/node/deps/openssl/openssl/Configurations'; use lib '.'; use platform; _____ diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/bn/ppc64-mont-fixed.s b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/bn/ppc64-mont-fixed.s new file mode 100644 index 00000000000000..9c6337035ae184 --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/bn/ppc64-mont-fixed.s @@ -0,0 +1,417 @@ +.machine "any" +.csect .text[PR],7 + +.globl .bn_mul_mont_fixed_n6 +.align 5 +.bn_mul_mont_fixed_n6: + + std 14,-8(1) + std 20,-16(1) + std 21,-24(1) + std 22,-32(1) + std 23,-40(1) + std 24,-48(1) + std 25,-56(1) + std 26,-64(1) + std 27,-72(1) + + li 0,0 + ld 7,0(7) + + ld 11,0(5) + + ld 12,0(4) + mulld 20,12,11 + mulhdu 10,12,11 + + ld 12,8(4) + mulld 14,12,11 + addc 21,14,10 + mulhdu 10,12,11 + addze 10,10 + + ld 12,16(4) + mulld 14,12,11 + addc 22,14,10 + mulhdu 10,12,11 + addze 10,10 + + ld 12,24(4) + mulld 14,12,11 + addc 23,14,10 + mulhdu 10,12,11 + addze 10,10 + + ld 12,32(4) + mulld 14,12,11 + addc 24,14,10 + mulhdu 10,12,11 + addze 10,10 + + ld 12,40(4) + mulld 14,12,11 + addc 25,14,10 + mulhdu 10,12,11 + + addze 26,10 + li 27,0 + + li 9,0 + mtctr 8 + b Lenter_6 + +.align 4 +Louter_6: + ldx 11,5,9 + + ld 12,0(4) + mulld 14,12,11 + addc 20,20,14 + mulhdu 10,12,11 + addze 10,10 + + ld 12,8(4) + mulld 14,12,11 + addc 14,14,10 + mulhdu 10,12,11 + addze 10,10 + addc 21,21,14 + addze 10,10 + + ld 12,16(4) + mulld 14,12,11 + addc 14,14,10 + mulhdu 10,12,11 + addze 10,10 + addc 22,22,14 + addze 10,10 + + ld 12,24(4) + mulld 14,12,11 + addc 14,14,10 + mulhdu 10,12,11 + addze 10,10 + addc 23,23,14 + addze 10,10 + + ld 12,32(4) + mulld 14,12,11 + addc 14,14,10 + mulhdu 10,12,11 + addze 10,10 + addc 24,24,14 + addze 10,10 + + ld 12,40(4) + mulld 14,12,11 + addc 14,14,10 + mulhdu 10,12,11 + addze 10,10 + addc 25,25,14 + addze 10,10 + + addc 26,26,10 + addze 27,0 +.align 4 +Lenter_6: + mulld 11,20,7 + + ld 12,0(6) + mulld 14,11,12 + addc 14,20,14 + mulhdu 10,11,12 + addze 10,10 + + ld 12,8(6) + mulld 14,12,11 + addc 14,14,10 + mulhdu 10,12,11 + addze 10,10 + addc 20,21,14 + addze 10,10 + + ld 12,16(6) + mulld 14,12,11 + addc 14,14,10 + mulhdu 10,12,11 + addze 10,10 + addc 21,22,14 + addze 10,10 + + ld 12,24(6) + mulld 14,12,11 + addc 14,14,10 + mulhdu 10,12,11 + addze 10,10 + addc 22,23,14 + addze 10,10 + + ld 12,32(6) + mulld 14,12,11 + addc 14,14,10 + mulhdu 10,12,11 + addze 10,10 + addc 23,24,14 + addze 10,10 + + ld 12,40(6) + mulld 14,12,11 + addc 14,14,10 + mulhdu 10,12,11 + addze 10,10 + addc 24,25,14 + addze 10,10 + + addc 25,26,10 + addze 26,27 + + addi 9,9,8 + bc 16,0,Louter_6 + + and. 26,26,26 + bne Lsub_6 + + cmpld 25,12 + blt Lcopy_6 + +Lsub_6: + ld 11,0(6) + subfc 14,11,20 + std 14,0(3) + + ld 11,8(6) + subfe 14,11,21 + std 14,8(3) + + ld 11,16(6) + subfe 14,11,22 + std 14,16(3) + + ld 11,24(6) + subfe 14,11,23 + std 14,24(3) + + ld 11,32(6) + subfe 14,11,24 + std 14,32(3) + + subfe 14,12,25 + std 14,40(3) + + addme. 26,26 + beq Lend_6 + +Lcopy_6: + std 20,0(3) + std 21,8(3) + std 22,16(3) + std 23,24(3) + std 24,32(3) + std 25,40(3) + +Lend_6: + ld 14,-8(1) + ld 20,-16(1) + ld 21,-24(1) + ld 22,-32(1) + ld 23,-40(1) + ld 24,-48(1) + ld 25,-56(1) + ld 26,-64(1) + ld 27,-72(1) + + li 3,1 + blr + + +.globl .bn_mul_mont_300_fixed_n6 +.align 5 +.bn_mul_mont_300_fixed_n6: + + std 14,-8(1) + std 20,-16(1) + std 21,-24(1) + std 22,-32(1) + std 23,-40(1) + std 24,-48(1) + std 25,-56(1) + std 26,-64(1) + std 27,-72(1) + + li 0,0 + ld 7,0(7) + + ld 11,0(5) + + ld 12,0(4) + mulld 20,12,11 + mulhdu 10,12,11 + + ld 12,8(4) + .long 0x12AC5AB3 + .long 0x114C5AB1 + + ld 12,16(4) + .long 0x12CC5AB3 + .long 0x114C5AB1 + + ld 12,24(4) + .long 0x12EC5AB3 + .long 0x114C5AB1 + + ld 12,32(4) + .long 0x130C5AB3 + .long 0x114C5AB1 + + ld 12,40(4) + .long 0x132C5AB3 + .long 0x134C5AB1 + + li 27,0 + + li 9,0 + mtctr 8 + b Lenter_300_6 + +.align 4 +Louter_300_6: + ldx 11,5,9 + + ld 12,0(4) + .long 0x11CC5D33 + .long 0x114C5D31 + mr 20,14 + + ld 12,8(4) + .long 0x11CC5AB3 + .long 0x114C5AB1 + addc 21,21,14 + addze 10,10 + + ld 12,16(4) + .long 0x11CC5AB3 + .long 0x114C5AB1 + addc 22,22,14 + addze 10,10 + + ld 12,24(4) + .long 0x11CC5AB3 + .long 0x114C5AB1 + addc 23,23,14 + addze 10,10 + + ld 12,32(4) + .long 0x11CC5AB3 + .long 0x114C5AB1 + addc 24,24,14 + addze 10,10 + + ld 12,40(4) + .long 0x11CC5AB3 + .long 0x114C5AB1 + addc 25,25,14 + addze 10,10 + + addc 26,26,10 + addze 27,0 +.align 4 +Lenter_300_6: + mulld 11,20,7 + + ld 12,0(6) + .long 0x11CB6533 + .long 0x114B6531 + + ld 12,8(6) + .long 0x11CC5AB3 + .long 0x114C5AB1 + addc 20,21,14 + addze 10,10 + + ld 12,16(6) + .long 0x11CC5AB3 + .long 0x114C5AB1 + addc 21,22,14 + addze 10,10 + + ld 12,24(6) + .long 0x11CC5AB3 + .long 0x114C5AB1 + addc 22,23,14 + addze 10,10 + + ld 12,32(6) + .long 0x11CC5AB3 + .long 0x114C5AB1 + addc 23,24,14 + addze 10,10 + + ld 12,40(6) + .long 0x11CC5AB3 + .long 0x114C5AB1 + addc 24,25,14 + addze 10,10 + + addc 25,26,10 + addze 26,27 + + addi 9,9,8 + bc 16,0,Louter_300_6 + + and. 26,26,26 + bne Lsub_300_6 + + cmpld 25,12 + blt Lcopy_300_6 + +Lsub_300_6: + ld 11,0(6) + subfc 14,11,20 + std 14,0(3) + + ld 11,8(6) + subfe 14,11,21 + std 14,8(3) + + ld 11,16(6) + subfe 14,11,22 + std 14,16(3) + + ld 11,24(6) + subfe 14,11,23 + std 14,24(3) + + ld 11,32(6) + subfe 14,11,24 + std 14,32(3) + + subfe 14,12,25 + std 14,40(3) + + addme. 26,26 + beq Lend_300_6 + +Lcopy_300_6: + std 20,0(3) + std 21,8(3) + std 22,16(3) + std 23,24(3) + std 24,32(3) + std 25,40(3) + +Lend_300_6: + ld 14,-8(1) + ld 20,-16(1) + ld 21,-24(1) + ld 22,-32(1) + ld 23,-40(1) + ld 24,-48(1) + ld 25,-56(1) + ld 26,-64(1) + ld 27,-72(1) + + li 3,1 + blr + +.byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,80,80,67,32,98,121,32,60,97,109,105,116,97,121,64,111,122,108,97,98,115,46,111,114,103,62,44,60,97,108,97,115,116,97,105,114,64,100,45,115,105,108,118,97,46,111,114,103,62,0 +.align 2 diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/buildinf.h index 4bf187469f24fe..206d40f6265c63 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: aix64-gcc-as" -#define DATE "built on: Sun Jul 20 00:45:17 2025 UTC" +#define DATE "built on: Tue Aug 5 17:09:41 2025 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/params_idx.c b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/params_idx.c new file mode 100644 index 00000000000000..9d76ffededc24c --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/params_idx.c @@ -0,0 +1,3366 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from crypto/params_idx.c.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#include "internal/e_os.h" +#include "internal/param_names.h" +#include + +/* Machine generated TRIE -- generated by util/perl/OpenSSL/paramnames.pm */ +int ossl_param_find_pidx(const char *s) +{ + switch(s[0]) { + default: + break; + case 'a': + switch(s[1]) { + default: + break; + case 'c': + if (strcmp("vp-info", s + 2) == 0) + return PIDX_KDF_PARAM_X942_ACVPINFO; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'd': + if (strcmp("itional-random", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_ADD_RANDOM; + break; + case '\0': + return PIDX_KDF_PARAM_ARGON2_AD; + } + break; + case 'e': + if (strcmp("ad", s + 2) == 0) + return PIDX_CIPHER_PARAM_AEAD; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("id_param", s + 4) == 0) + return PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD; + break; + case 'i': + if (strcmp("d-absent", s + 4) == 0) + return PIDX_DIGEST_PARAM_ALGID_ABSENT; + break; + case 'o': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'h': + switch(s[8]) { + default: + break; + case 'm': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '-': + if (strcmp("params", s + 13) == 0) + return PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS; + break; + case '\0': + return PIDX_ALG_PARAM_ALGORITHM_ID; + } + } + } + } + } + } + } + } + } + } + break; + case 'i': + if (strcmp("as", s + 3) == 0) + return PIDX_STORE_PARAM_ALIAS; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_A; + } + break; + case 'b': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("sis-type", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_CHAR2_TYPE; + break; + case 'i': + if (strcmp("ts", s + 2) == 0) + return PIDX_PKEY_PARAM_BITS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("size", s + 6) == 0) + return PIDX_MAC_PARAM_BLOCK_SIZE; + break; + case '_': + if (strcmp("padding", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING; + break; + case 's': + if (strcmp("ize", s + 6) == 0) + return PIDX_DIGEST_PARAM_BLOCK_SIZE; + } + } + } + } + break; + case 'u': + if (strcmp("ildinfo", s + 2) == 0) + return PIDX_PROV_PARAM_BUILDINFO; + break; + case '\0': + return PIDX_PKEY_PARAM_EC_B; + } + break; + case 'c': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_C_ROUNDS; + break; + case 'e': + if (strcmp("kalg", s + 2) == 0) + return PIDX_KDF_PARAM_CEK_ALG; + break; + case 'i': + if (strcmp("pher", s + 2) == 0) + return PIDX_ALG_PARAM_CIPHER; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("actor", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_COFACTOR; + break; + case 'n': + switch(s[3]) { + default: + break; + case 's': + if (strcmp("tant", s + 4) == 0) + return PIDX_KDF_PARAM_CONSTANT; + break; + case 't': + if (strcmp("ext-string", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_CONTEXT_STRING; + } + } + break; + case 't': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("mode", s + 4) == 0) + return PIDX_CIPHER_PARAM_CTS_MODE; + break; + case '\0': + return PIDX_CIPHER_PARAM_CTS; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '-': + if (strcmp("iv", s + 7) == 0) + return PIDX_CIPHER_PARAM_CUSTOM_IV; + break; + case '\0': + return PIDX_MAC_PARAM_CUSTOM; + } + } + } + } + } + } + break; + case 'd': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_D_ROUNDS; + break; + case 'a': + switch(s[2]) { + default: + break; + case 't': + switch(s[3]) { + default: + break; + case 'a': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 's': + if (strcmp("tructure", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_STRUCTURE; + break; + case 't': + if (strcmp("ype", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_TYPE; + } + break; + case '\0': + return PIDX_OBJECT_PARAM_DATA; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + if (strcmp("ded-from-explicit", s + 4) == 0) + return PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS; + break; + case 'r': + if (strcmp("ypt-only", s + 4) == 0) + return PIDX_CIPHER_PARAM_DECRYPT_ONLY; + } + break; + case 'f': + if (strcmp("ault-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_DEFAULT_DIGEST; + break; + case 's': + if (strcmp("c", s + 3) == 0) + return PIDX_OBJECT_PARAM_DESC; + break; + case 't': + if (strcmp("erministic", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_DETERMINISTIC; + } + break; + case 'h': + if (strcmp("kem-ikm", s + 2) == 0) + return PIDX_PKEY_PARAM_DHKEM_IKM; + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("heck", s + 8) == 0) + return PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK; + break; + case 'n': + if (strcmp("oinit", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_NOINIT; + break; + case 'o': + if (strcmp("neshot", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_ONESHOT; + break; + case 'p': + if (strcmp("rops", s + 8) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS; + break; + case 's': + if (strcmp("ize", s + 8) == 0) + return PIDX_PKEY_PARAM_DIGEST_SIZE; + } + break; + case '\0': + return PIDX_STORE_PARAM_DIGEST; + } + } + } + } + break; + case 's': + if (strcmp("tid", s + 3) == 0) + return PIDX_PKEY_PARAM_DIST_ID; + } + break; + case 'r': + if (strcmp("bg-no-trunc-md", s + 2) == 0) + return PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST; + break; + case 's': + if (strcmp("a-sign-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_DSA_SIGN_DISABLED; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_D; + } + break; + case 'e': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("rly_clean", s + 2) == 0) + return PIDX_KDF_PARAM_EARLY_CLEAN; + break; + case 'c': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'h': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'a': + switch(s[9]) { + default: + break; + case 'c': + switch(s[10]) { + default: + break; + case 't': + switch(s[11]) { + default: + break; + case 'o': + switch(s[12]) { + default: + break; + case 'r': + switch(s[13]) { + default: + break; + case '-': + switch(s[14]) { + default: + break; + case 'c': + if (strcmp("heck", s + 15) == 0) + return PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK; + break; + case 'm': + if (strcmp("ode", s + 15) == 0) + return PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE; + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'm': + if (strcmp("s_check", s + 2) == 0) + return PIDX_KDF_PARAM_FIPS_EMS_CHECK; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("d-pub-key", s + 6) == 0) + return PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY; + break; + case 'i': + if (strcmp("ng", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_ENCODING; + } + } + break; + case 'r': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'c': + if (strcmp("heck", s + 9) == 0) + return PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK; + break; + case 'l': + if (strcmp("evel", s + 9) == 0) + return PIDX_ENCODER_PARAM_ENCRYPT_LEVEL; + } + } + } + } + } + } + break; + case 'g': + if (strcmp("ine", s + 3) == 0) + return PIDX_ALG_PARAM_ENGINE; + break; + case 't': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'y': + switch(s[7]) { + default: + break; + case '_': + if (strcmp("required", s + 8) == 0) + return PIDX_DRBG_PARAM_ENTROPY_REQUIRED; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_ENTROPY; + } + } + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_E; + break; + case 'x': + if (strcmp("pect", s + 2) == 0) + return PIDX_STORE_PARAM_EXPECT; + } + break; + case 'f': + switch(s[1]) { + default: + break; + case 'i': + switch(s[2]) { + default: + break; + case 'e': + if (strcmp("ld-type", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_FIELD_TYPE; + break; + case 'n': + if (strcmp("gerprint", s + 3) == 0) + return PIDX_STORE_PARAM_FINGERPRINT; + break; + case 'p': + if (strcmp("s-indicator", s + 3) == 0) + return PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR; + } + } + break; + case 'g': + switch(s[1]) { + default: + break; + case 'e': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_GENERATE; + } + break; + case 'o': + if (strcmp("r", s + 8) == 0) + return PIDX_PKEY_PARAM_EC_GENERATOR; + } + } + } + } + } + } + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_GINDEX; + break; + case 'r': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'u': + switch(s[4]) { + default: + break; + case 'p': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("check", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE; + break; + case '\0': + return PIDX_PKEY_PARAM_GROUP_NAME; + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_G; + } + break; + case 'h': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("s-randkey", s + 2) == 0) + return PIDX_CIPHER_PARAM_HAS_RAND_KEY; + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_H; + break; + case 'k': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'f': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_KEY_CHECK; + } + } + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_HMAC_KEY_CHECK; + break; + case 's': + if (strcmp("_padding", s + 2) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING; + } + break; + case 'i': + switch(s[1]) { + default: + break; + case 'd': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_PKCS12_ID; + } + break; + case 'k': + if (strcmp("me", s + 2) == 0) + return PIDX_KEM_PARAM_IKME; + break; + case 'm': + if (strcmp("plicit-rejection", s + 2) == 0) + return PIDX_PKEY_PARAM_IMPLICIT_REJECTION; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("lude-public", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC; + break; + case 'f': + if (strcmp("o", s + 3) == 0) + return PIDX_PASSPHRASE_PARAM_INFO; + break; + case 'p': + if (strcmp("ut-type", s + 3) == 0) + return PIDX_STORE_PARAM_INPUT_TYPE; + break; + case 's': + if (strcmp("tance", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_INSTANCE; + } + break; + case 't': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("tion", s + 5) == 0) + return PIDX_GEN_PARAM_ITERATION; + break; + case '\0': + return PIDX_KDF_PARAM_ITER; + } + } + } + break; + case 'v': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("generated", s + 3) == 0) + return PIDX_CIPHER_PARAM_AEAD_IV_GENERATED; + break; + case 'l': + if (strcmp("en", s + 3) == 0) + return PIDX_CIPHER_PARAM_IVLEN; + break; + case '\0': + return PIDX_MAC_PARAM_IV; + } + } + break; + case 'j': + switch(s[1]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_COFACTOR; + } + break; + case 'k': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K2; + } + break; + case '3': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K3; + } + break; + case 'a': + if (strcmp("t", s + 2) == 0) + return PIDX_SIGNATURE_PARAM_KAT; + break; + case 'b': + if (strcmp("kdf-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KBKDF_KEY_CHECK; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case 's': + switch(s[9]) { + default: + break; + case 't': + switch(s[10]) { + default: + break; + case '-': + if (strcmp("props", s + 11) == 0) + return PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_KDF_DIGEST; + } + } + } + } + } + } + break; + case 'o': + if (strcmp("utlen", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_OUTLEN; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_TYPE; + break; + case 'u': + if (strcmp("km", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_UKM; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'y': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("heck", s + 5) == 0) + return PIDX_PKEY_PARAM_FIPS_KEY_CHECK; + break; + case 'l': + if (strcmp("ength", s + 5) == 0) + return PIDX_SKEY_PARAM_KEY_LENGTH; + } + break; + case 'b': + if (strcmp("its", s + 4) == 0) + return PIDX_CIPHER_PARAM_RC2_KEYBITS; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_KEYLEN; + break; + case '\0': + return PIDX_MAC_PARAM_KEY; + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KMAC_KEY_CHECK; + } + break; + case 'l': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("el", s + 3) == 0) + return PIDX_KDF_PARAM_LABEL; + break; + case 'n': + if (strcmp("es", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_LANES; + } + } + break; + case 'm': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'k': + if (strcmp("ey", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_MAC_KEY; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_KDF_PARAM_MAC_SIZE; + break; + case '\0': + return PIDX_ALG_PARAM_MAC; + } + break; + case 'n': + if (strcmp("datory-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_MANDATORY_DIGEST; + break; + case 'x': + switch(s[3]) { + default: + break; + case '-': + if (strcmp("size", s + 4) == 0) + return PIDX_PKEY_PARAM_MAX_SIZE; + break; + case '_': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("dinlen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_ADINLEN; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("rly_data", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA; + break; + case 'n': + if (strcmp("tropylen", s + 6) == 0) + return PIDX_DRBG_PARAM_MAX_ENTROPYLEN; + } + break; + case 'f': + if (strcmp("rag_len", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_NONCELEN; + break; + case 'p': + if (strcmp("erslen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_PERSLEN; + break; + case 'r': + if (strcmp("equest", s + 5) == 0) + return PIDX_RAND_PARAM_MAX_REQUEST; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MAX_LENGTH; + break; + case 'm': + if (strcmp("em_bytes", s + 4) == 0) + return PIDX_KDF_PARAM_SCRYPT_MAXMEM; + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'm': + if (strcmp("cost", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_MEMCOST; + break; + case 's': + if (strcmp("sage-encoding", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING; + } + break; + case 'g': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_DIGEST; + break; + case 'p': + if (strcmp("roperties", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_PROPERTIES; + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_MASKGENFUNC; + } + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("alg", s + 3) == 0) + return PIDX_DIGEST_PARAM_MICALG; + break; + case 'n': + switch(s[3]) { + default: + break; + case '_': + switch(s[4]) { + default: + break; + case 'e': + if (strcmp("ntropylen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_ENTROPYLEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_NONCELEN; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MIN_LENGTH; + } + } + break; + case 'l': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + if (strcmp("nput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS; + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED; + } + } + } + } + break; + case 'k': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + switch(s[8]) { + default: + break; + case 'm': + if (strcmp("port_pct_type", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE; + break; + case 'n': + if (strcmp("put_formats", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS; + } + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED; + } + } + } + } + } + } + break; + case 'o': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case '\0': + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE; + } + break; + case 'u': + if (strcmp("le-filename", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_MODULE_FILENAME; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_SIGNATURE_PARAM_MU; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_M; + } + break; + case 'n': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("me", s + 2) == 0) + return PIDX_STORE_PARAM_ISSUER; + break; + case 'o': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("short-mac", s + 3) == 0) + return PIDX_PROV_PARAM_NO_SHORT_MAC; + break; + case 'n': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("type", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_NONCE_TYPE; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_NONCE; + } + } + } + } + break; + case 'u': + if (strcmp("m", s + 2) == 0) + return PIDX_CIPHER_PARAM_NUM; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_N; + } + break; + case 'o': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("ep-label", s + 2) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL; + break; + case 'p': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'n': + if (strcmp("ssl-version", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_VERSION; + break; + case 'r': + if (strcmp("ation", s + 4) == 0) + return PIDX_KEM_PARAM_OPERATION; + } + break; + case 't': + if (strcmp("ions", s + 3) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS; + } + break; + case 'r': + if (strcmp("der", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_ORDER; + } + break; + case 'p': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P2; + } + break; + case 'a': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'm': + if (strcmp("ode", s + 5) == 0) + return PIDX_PKEY_PARAM_PAD_MODE; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_DIGEST_PARAM_PAD_TYPE; + } + break; + case 'd': + if (strcmp("ing", s + 4) == 0) + return PIDX_CIPHER_PARAM_PADDING; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_PAD; + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'u': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYUINFO; + break; + case 'v': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYVINFO; + } + } + } + break; + case 's': + if (strcmp("s", s + 3) == 0) + return PIDX_KDF_PARAM_PASSWORD; + } + break; + case 'b': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("ts", s + 3) == 0) + return PIDX_PKEY_PARAM_FFC_PBITS; + break; + case 'k': + if (strcmp("df2-lower-bound-check", s + 3) == 0) + return PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK; + } + break; + case 'c': + if (strcmp("ounter", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_PCOUNTER; + break; + case 'i': + if (strcmp("peline-tag", s + 2) == 0) + return PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG; + break; + case 'k': + if (strcmp("cs5", s + 2) == 0) + return PIDX_KDF_PARAM_PKCS5; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("nt-format", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT; + break; + case 't': + if (strcmp("ential", s + 3) == 0) + return PIDX_GEN_PARAM_POTENTIAL; + } + break; + case 'r': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("iction_resistance", s + 4) == 0) + return PIDX_DRBG_PARAM_PREDICTION_RESISTANCE; + break; + case 'f': + if (strcmp("ix", s + 4) == 0) + return PIDX_KDF_PARAM_PREFIX; + } + break; + case 'i': + switch(s[3]) { + default: + break; + case 'm': + if (strcmp("es", s + 4) == 0) + return PIDX_PKEY_PARAM_RSA_PRIMES; + break; + case 'v': + switch(s[4]) { + default: + break; + case '_': + if (strcmp("len", s + 5) == 0) + return PIDX_PKEY_PARAM_DH_PRIV_LEN; + break; + case '\0': + return PIDX_PKEY_PARAM_PRIV_KEY; + } + } + break; + case 'o': + switch(s[3]) { + default: + break; + case 'p': + if (strcmp("erties", s + 4) == 0) + return PIDX_STORE_PARAM_PROPERTIES; + break; + case 'v': + if (strcmp("ider-name", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_PROV_NAME; + } + } + break; + case 'u': + if (strcmp("b", s + 2) == 0) + return PIDX_PKEY_PARAM_PUB_KEY; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_P; + } + break; + case 'q': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q2; + } + break; + case 'b': + if (strcmp("its", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_QBITS; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_Q; + break; + case 'x': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_X; + } + break; + case 'y': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_Y; + } + } + break; + case 'r': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'k': + if (strcmp("ey", s + 5) == 0) + return PIDX_CIPHER_PARAM_RANDOM_KEY; + break; + case 'o': + if (strcmp("m_data", s + 5) == 0) + return PIDX_DRBG_PARAM_RANDOM_DATA; + } + } + break; + case 'w': + if (strcmp("-bytes", s + 3) == 0) + return PIDX_SKEY_PARAM_RAW_BYTES; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case '_': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("head", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD; + break; + case 'b': + if (strcmp("uffer_len", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN; + } + } + } + break; + case 'f': + if (strcmp("erence", s + 3) == 0) + return PIDX_OBJECT_PARAM_REFERENCE; + break; + case 's': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case '_': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("ounter", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_COUNTER; + break; + case 'r': + if (strcmp("equests", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_REQUESTS; + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case 'm': + switch(s[10]) { + default: + break; + case 'e': + switch(s[11]) { + default: + break; + case '_': + if (strcmp("interval", s + 12) == 0) + return PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL; + break; + case '\0': + return PIDX_DRBG_PARAM_RESEED_TIME; + } + } + } + } + } + } + } + } + } + } + break; + case 'o': + if (strcmp("unds", s + 2) == 0) + return PIDX_CIPHER_PARAM_ROUNDS; + break; + case 's': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + switch(s[5]) { + default: + break; + case 'o': + switch(s[6]) { + default: + break; + case 'e': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case 'i': + switch(s[10]) { + default: + break; + case 'c': + switch(s[11]) { + default: + break; + case 'i': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'n': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case '1': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT1; + } + break; + case '2': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT2; + } + break; + case '3': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT3; + } + break; + case '4': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT4; + } + break; + case '5': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT5; + } + break; + case '6': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT6; + } + break; + case '7': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT7; + } + break; + case '8': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT8; + } + break; + case '9': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'd': + if (strcmp("erive-from-pq", s + 5) == 0) + return PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'x': + switch(s[6]) { + default: + break; + case 'p': + switch(s[7]) { + default: + break; + case 'o': + switch(s[8]) { + default: + break; + case 'n': + switch(s[9]) { + default: + break; + case 'e': + switch(s[10]) { + default: + break; + case 'n': + switch(s[11]) { + default: + break; + case 't': + switch(s[12]) { + default: + break; + case '1': + switch(s[13]) { + default: + break; + case '0': + switch(s[14]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT1; + } + break; + case '2': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT2; + } + break; + case '3': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT3; + } + break; + case '4': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT4; + } + break; + case '5': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT5; + } + break; + case '6': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT6; + } + break; + case '7': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT7; + } + break; + case '8': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT8; + } + break; + case '9': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT; + } + } + } + } + } + } + } + } + break; + case 'f': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'o': + switch(s[9]) { + default: + break; + case 'r': + switch(s[10]) { + default: + break; + case '1': + switch(s[11]) { + default: + break; + case '0': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR1; + } + break; + case '2': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR2; + } + break; + case '3': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR3; + } + break; + case '4': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR4; + } + break; + case '5': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR5; + } + break; + case '6': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR6; + } + break; + case '7': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR7; + } + break; + case '8': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR8; + } + break; + case '9': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR; + } + } + } + } + } + } + break; + case 'p': + switch(s[5]) { + default: + break; + case 'k': + if (strcmp("cs15-pad-disabled", s + 6) == 0) + return PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED; + break; + case 's': + if (strcmp("s-saltlen-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK; + } + break; + case 's': + if (strcmp("ign-x931-pad-disabled", s + 5) == 0) + return PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED; + } + } + } + break; + case '\0': + return PIDX_KDF_PARAM_SCRYPT_R; + } + break; + case 's': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("eprime-generator", s + 3) == 0) + return PIDX_PKEY_PARAM_DH_GENERATOR; + break; + case 'l': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'l': + if (strcmp("en", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_PSS_SALTLEN; + break; + case '\0': + return PIDX_MAC_PARAM_SALT; + } + } + break; + case 'v': + if (strcmp("e-parameters", s + 3) == 0) + return PIDX_ENCODER_PARAM_SAVE_PARAMETERS; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'r': + if (strcmp("et", s + 4) == 0) + return PIDX_KDF_PARAM_SECRET; + break; + case 'u': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'y': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'b': + if (strcmp("its", s + 10) == 0) + return PIDX_PKEY_PARAM_SECURITY_BITS; + break; + case 'c': + if (strcmp("hecks", s + 10) == 0) + return PIDX_PROV_PARAM_SECURITY_CHECKS; + } + } + } + } + } + } + } + break; + case 'e': + if (strcmp("d", s + 3) == 0) + return PIDX_PKEY_PARAM_SLH_DSA_SEED; + break; + case 'r': + if (strcmp("ial", s + 3) == 0) + return PIDX_STORE_PARAM_SERIAL; + break; + case 's': + if (strcmp("sion_id", s + 3) == 0) + return PIDX_KDF_PARAM_SSHKDF_SESSION_ID; + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'n': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + if (strcmp("heck", s + 6) == 0) + return PIDX_PKEY_PARAM_FIPS_SIGN_CHECK; + break; + case 'x': + if (strcmp("931-pad-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK; + } + break; + case 'a': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case 'u': + switch(s[7]) { + default: + break; + case 'r': + switch(s[8]) { + default: + break; + case 'e': + switch(s[9]) { + default: + break; + case '-': + if (strcmp("digest-check", s + 10) == 0) + return PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK; + break; + case '\0': + return PIDX_SIGNATURE_PARAM_SIGNATURE; + } + } + } + } + } + } + } + break; + case 'z': + if (strcmp("e", s + 3) == 0) + return PIDX_MAC_PARAM_SIZE; + } + break; + case 'p': + if (strcmp("eed", s + 2) == 0) + return PIDX_CIPHER_PARAM_SPEED; + break; + case 's': + switch(s[2]) { + default: + break; + case 'h': + switch(s[3]) { + default: + break; + case 'k': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'f': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_KEY_CHECK; + } + } + } + } + } + break; + case 'k': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'f': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_KEY_CHECK; + } + } + } + } + break; + case 'l': + if (strcmp("3-ms", s + 3) == 0) + return PIDX_DIGEST_PARAM_SSL3_MS; + } + break; + case 't': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("esc", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_DESC; + break; + case 'p': + if (strcmp("hase", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_PHASE; + break; + case 't': + if (strcmp("ype", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_TYPE; + } + break; + case 'a': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_STATE; + } + break; + case 'u': + if (strcmp("s", s + 5) == 0) + return PIDX_PROV_PARAM_STATUS; + } + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("m_mac", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC; + break; + case 'n': + if (strcmp("gth", s + 5) == 0) + return PIDX_RAND_PARAM_STRENGTH; + } + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("ject", s + 3) == 0) + return PIDX_STORE_PARAM_SUBJECT; + break; + case 'p': + switch(s[3]) { + default: + break; + case 'p': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + if (strcmp("ivinfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PRIVINFO; + break; + case 'u': + if (strcmp("binfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PUBINFO; + } + } + } + } + } + } + break; + case 't': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_TAGLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TAG; + } + } + break; + case 'd': + if (strcmp("es-encrypt-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED; + break; + case 'e': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case '-': + if (strcmp("entropy", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_TEST_ENTROPY; + break; + case '_': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("ntropy", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_ENTROPY; + break; + case 'n': + if (strcmp("once", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_NONCE; + } + } + } + } + break; + case 'h': + if (strcmp("reads", s + 2) == 0) + return PIDX_KDF_PARAM_THREADS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("lient-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION; + break; + case 'd': + if (strcmp("ata-size", s + 5) == 0) + return PIDX_MAC_PARAM_TLS_DATA_SIZE; + break; + case 'g': + switch(s[5]) { + default: + break; + case 'r': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'u': + switch(s[8]) { + default: + break; + case 'p': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'a': + if (strcmp("lg", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_ALG; + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_ID; + } + break; + case 's': + if (strcmp("-kem", s + 12) == 0) + return PIDX_CAPABILITY_TLS_GROUP_IS_KEM; + } + break; + case 'n': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'm': + switch(s[13]) { + default: + break; + case 'e': + switch(s[14]) { + default: + break; + case '-': + if (strcmp("internal", s + 15) == 0) + return PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL; + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_NAME; + } + } + } + } + break; + case 's': + if (strcmp("ec-bits", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case '-': + if (strcmp("size", s + 8) == 0) + return PIDX_CIPHER_PARAM_TLS_MAC_SIZE; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS_MAC; + } + break; + case 'x': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS; + } + } + } + break; + case 'i': + switch(s[6]) { + default: + break; + case 'n': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS; + } + } + } + break; + case 'u': + if (strcmp("lti", s + 6) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK; + } + break; + case 'n': + if (strcmp("egotiated-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION; + break; + case 's': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'a': + switch(s[8]) { + default: + break; + case 'l': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '-': + switch(s[11]) { + default: + break; + case 'c': + if (strcmp("ode-point", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT; + break; + case 'h': + switch(s[12]) { + default: + break; + case 'a': + switch(s[13]) { + default: + break; + case 's': + switch(s[14]) { + default: + break; + case 'h': + switch(s[15]) { + default: + break; + case '-': + switch(s[16]) { + default: + break; + case 'n': + if (strcmp("ame", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME; + break; + case 'o': + if (strcmp("id", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_OID; + } + } + } + } + } + break; + case 'i': + if (strcmp("ana-name", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME; + break; + case 'k': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'y': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case 'y': + switch(s[16]) { + default: + break; + case 'p': + switch(s[17]) { + default: + break; + case 'e': + switch(s[18]) { + default: + break; + case '-': + if (strcmp("oid", s + 19) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID; + break; + case '\0': + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE; + } + } + } + } + } + } + } + break; + case 'n': + if (strcmp("ame", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_NAME; + break; + case 'o': + if (strcmp("id", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_OID; + break; + case 's': + switch(s[12]) { + default: + break; + case 'e': + if (strcmp("c-bits", s + 13) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS; + break; + case 'i': + switch(s[13]) { + default: + break; + case 'g': + switch(s[14]) { + default: + break; + case '-': + switch(s[15]) { + default: + break; + case 'n': + if (strcmp("ame", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME; + break; + case 'o': + if (strcmp("id", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_OID; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'v': + if (strcmp("ersion", s + 5) == 0) + return PIDX_CIPHER_PARAM_TLS_VERSION; + } + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK; + break; + case 'e': + if (strcmp("ms-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK; + } + } + } + } + } + break; + case '3': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'k': + switch(s[7]) { + default: + break; + case 'd': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'u': + switch(s[6]) { + default: + break; + case 'l': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case '_': + switch(s[10]) { + default: + break; + case 'a': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'd': + switch(s[13]) { + default: + break; + case 'p': + if (strcmp("acklen", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD; + } + } + } + break; + case 'e': + switch(s[11]) { + default: + break; + case 'n': + switch(s[12]) { + default: + break; + case 'c': + switch(s[13]) { + default: + break; + case 'i': + if (strcmp("n", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN; + break; + case 'l': + if (strcmp("en", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC; + } + } + } + break; + case 'i': + if (strcmp("nterleave", s + 11) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE; + break; + case 'm': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'x': + switch(s[13]) { + default: + break; + case 'b': + if (strcmp("ufsz", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE; + break; + case 's': + if (strcmp("ndfrag", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT; + } + } + } + } + } + } + } + } + } + } + break; + case 'a': + switch(s[4]) { + default: + break; + case 'a': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'p': + if (strcmp("ad", s + 7) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD; + } + } + } + break; + case 'i': + switch(s[4]) { + default: + break; + case 'v': + switch(s[5]) { + default: + break; + case 'f': + if (strcmp("ixed", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED; + break; + case 'g': + if (strcmp("en", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN; + break; + case 'i': + if (strcmp("nv", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV; + } + } + break; + case 't': + if (strcmp("ree", s + 4) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS; + } + break; + case 'y': + if (strcmp("pe", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_TYPE; + } + break; + case 'u': + switch(s[1]) { + default: + break; + case 'k': + if (strcmp("m", s + 2) == 0) + return PIDX_KDF_PARAM_UKM; + break; + case 'p': + if (strcmp("dated-iv", s + 2) == 0) + return PIDX_CIPHER_PARAM_UPDATED_IV; + break; + case 's': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'b': + if (strcmp("its", s + 5) == 0) + return PIDX_CIPHER_PARAM_USE_BITS; + break; + case 'c': + if (strcmp("ofactor-flag", s + 5) == 0) + return PIDX_PKEY_PARAM_USE_COFACTOR_FLAG; + break; + case 'k': + if (strcmp("eybits", s + 5) == 0) + return PIDX_KDF_PARAM_X942_USE_KEYBITS; + break; + case 'l': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_KBKDF_USE_L; + } + break; + case 's': + if (strcmp("eparator", s + 5) == 0) + return PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR; + } + break; + case '_': + switch(s[4]) { + default: + break; + case 'd': + if (strcmp("erivation_function", s + 5) == 0) + return PIDX_DRBG_PARAM_USE_DF; + break; + case 'e': + if (strcmp("tm", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM; + } + } + } + } + break; + case 'v': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'l': + switch(s[3]) { + default: + break; + case 'i': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_VALIDATE_G; + } + break; + case 'l': + if (strcmp("egacy", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY; + break; + case 'p': + if (strcmp("q", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_PQ; + } + } + } + } + } + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'r': + switch(s[3]) { + default: + break; + case 'i': + if (strcmp("fy-message", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE; + break; + case 's': + if (strcmp("ion", s + 4) == 0) + return PIDX_PROV_PARAM_VERSION; + } + } + } + break; + case 'x': + switch(s[1]) { + default: + break; + case '9': + switch(s[2]) { + default: + break; + case '4': + if (strcmp("2kdf-key-check", s + 3) == 0) + return PIDX_PROV_PARAM_X942KDF_KEY_CHECK; + break; + case '6': + switch(s[3]) { + default: + break; + case '3': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'f': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_KEY_CHECK; + } + } + } + } + } + } + } + break; + case 'c': + if (strcmp("ghash", s + 2) == 0) + return PIDX_KDF_PARAM_SSHKDF_XCGHASH; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_DIGEST_PARAM_XOFLEN; + break; + case '\0': + return PIDX_MAC_PARAM_XOF; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP; + } + break; + case 'q': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ; + } + break; + case 't': + if (strcmp("s_standard", s + 2) == 0) + return PIDX_CIPHER_PARAM_XTS_STANDARD; + } + } + return -1; +} + +/* End of TRIE */ diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/ppccpuid.s b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/ppccpuid.s index 63f902770d32de..a75defcc768384 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/ppccpuid.s +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/ppccpuid.s @@ -48,6 +48,17 @@ .long 0 .byte 0,12,0x14,0,0,0,0,0 +.globl .OPENSSL_brd31_probe +.align 4 +.OPENSSL_brd31_probe: + xor 0,0,0 + .long 0x7C030176 + blr +.long 0 +.byte 0,12,0x14,0,0,0,0,0 + + + .globl .OPENSSL_wipe_cpu .align 4 .OPENSSL_wipe_cpu: diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/sha/keccak1600-ppc64.s b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/sha/keccak1600-ppc64.s index 28c8e62f664cce..625f8d2ff102dd 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/sha/keccak1600-ppc64.s +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/sha/keccak1600-ppc64.s @@ -293,7 +293,6 @@ KeccakF1600: .long 0 - .align 5 dword_le_load: lbz 0,1(3) @@ -316,7 +315,6 @@ dword_le_load: .byte 0,12,0x14,0,0,0,1,0 .long 0 - .globl .SHA3_absorb .align 5 @@ -557,6 +555,8 @@ Labsorbed: subi 29,4,1 mr 30,5 mr 31,6 + cmplwi 7,0 + bne Lnext_block b Loop_squeeze .align 4 @@ -587,6 +587,7 @@ Loop_squeeze: subic. 6,6,8 bgt Loop_squeeze +Lnext_block: mr 3,28 bl KeccakF1600 subi 3,28,8 diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/internal/param_names.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/internal/param_names.h new file mode 100644 index 00000000000000..0a0404a57e82b9 --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/internal/param_names.h @@ -0,0 +1,469 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/internal/param_names.h.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +int ossl_param_find_pidx(const char *s); + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +#define NUM_PIDX 346 + +#define PIDX_ALG_PARAM_ALGORITHM_ID 0 +#define PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS 1 +#define PIDX_ALG_PARAM_CIPHER 2 +#define PIDX_ALG_PARAM_DIGEST 3 +#define PIDX_ALG_PARAM_ENGINE 4 +#define PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR 5 +#define PIDX_ALG_PARAM_MAC 6 +#define PIDX_ALG_PARAM_PROPERTIES 7 +#define PIDX_ASYM_CIPHER_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_ENGINE PIDX_PKEY_PARAM_ENGINE +#define PIDX_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +#define PIDX_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS 9 +#define PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL 10 +#define PIDX_ASYM_CIPHER_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_ASYM_CIPHER_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION 11 +#define PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION 12 +#define PIDX_CAPABILITY_TLS_GROUP_ALG 13 +#define PIDX_CAPABILITY_TLS_GROUP_ID 14 +#define PIDX_CAPABILITY_TLS_GROUP_IS_KEM 15 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_GROUP_NAME 20 +#define PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL 21 +#define PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS 22 +#define PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT 23 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME 24 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_OID 25 +#define PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME 26 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE 27 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID 28 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_SIGALG_NAME 29 +#define PIDX_CAPABILITY_TLS_SIGALG_OID 30 +#define PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS 31 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME 32 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_OID 33 +#define PIDX_CIPHER_PARAM_AEAD 34 +#define PIDX_CIPHER_PARAM_AEAD_IVLEN PIDX_CIPHER_PARAM_IVLEN +#define PIDX_CIPHER_PARAM_AEAD_IV_GENERATED 35 +#define PIDX_CIPHER_PARAM_AEAD_MAC_KEY 36 +#define PIDX_CIPHER_PARAM_AEAD_TAG 37 +#define PIDX_CIPHER_PARAM_AEAD_TAGLEN 38 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD 39 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD 40 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN 41 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED 42 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV 43 +#define PIDX_CIPHER_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD 44 +#define PIDX_CIPHER_PARAM_BLOCK_SIZE 45 +#define PIDX_CIPHER_PARAM_CTS 46 +#define PIDX_CIPHER_PARAM_CTS_MODE 47 +#define PIDX_CIPHER_PARAM_CUSTOM_IV 48 +#define PIDX_CIPHER_PARAM_DECRYPT_ONLY 49 +#define PIDX_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK 50 +#define PIDX_CIPHER_PARAM_HAS_RAND_KEY 51 +#define PIDX_CIPHER_PARAM_IV 52 +#define PIDX_CIPHER_PARAM_IVLEN 53 +#define PIDX_CIPHER_PARAM_KEYLEN 54 +#define PIDX_CIPHER_PARAM_MODE 55 +#define PIDX_CIPHER_PARAM_NUM 56 +#define PIDX_CIPHER_PARAM_PADDING 57 +#define PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG 58 +#define PIDX_CIPHER_PARAM_RANDOM_KEY 59 +#define PIDX_CIPHER_PARAM_RC2_KEYBITS 60 +#define PIDX_CIPHER_PARAM_ROUNDS 61 +#define PIDX_CIPHER_PARAM_SPEED 62 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK 63 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD 64 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN 65 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC 66 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN 67 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN 68 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE 69 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE 70 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT 71 +#define PIDX_CIPHER_PARAM_TLS_MAC 72 +#define PIDX_CIPHER_PARAM_TLS_MAC_SIZE 73 +#define PIDX_CIPHER_PARAM_TLS_VERSION 74 +#define PIDX_CIPHER_PARAM_UPDATED_IV 75 +#define PIDX_CIPHER_PARAM_USE_BITS 76 +#define PIDX_CIPHER_PARAM_XTS_STANDARD 77 +#define PIDX_DECODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DIGEST_PARAM_ALGID_ABSENT 78 +#define PIDX_DIGEST_PARAM_BLOCK_SIZE 45 +#define PIDX_DIGEST_PARAM_MICALG 79 +#define PIDX_DIGEST_PARAM_PAD_TYPE 80 +#define PIDX_DIGEST_PARAM_SIZE 81 +#define PIDX_DIGEST_PARAM_SSL3_MS 82 +#define PIDX_DIGEST_PARAM_XOF 83 +#define PIDX_DIGEST_PARAM_XOFLEN 84 +#define PIDX_DRBG_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_DRBG_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_DRBG_PARAM_ENTROPY_REQUIRED 85 +#define PIDX_DRBG_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_DRBG_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_DRBG_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_DRBG_PARAM_MAX_ADINLEN 86 +#define PIDX_DRBG_PARAM_MAX_ENTROPYLEN 87 +#define PIDX_DRBG_PARAM_MAX_LENGTH 88 +#define PIDX_DRBG_PARAM_MAX_NONCELEN 89 +#define PIDX_DRBG_PARAM_MAX_PERSLEN 90 +#define PIDX_DRBG_PARAM_MIN_ENTROPYLEN 91 +#define PIDX_DRBG_PARAM_MIN_LENGTH 92 +#define PIDX_DRBG_PARAM_MIN_NONCELEN 93 +#define PIDX_DRBG_PARAM_PREDICTION_RESISTANCE 94 +#define PIDX_DRBG_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DRBG_PARAM_RANDOM_DATA 95 +#define PIDX_DRBG_PARAM_RESEED_COUNTER 96 +#define PIDX_DRBG_PARAM_RESEED_REQUESTS 97 +#define PIDX_DRBG_PARAM_RESEED_TIME 98 +#define PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL 99 +#define PIDX_DRBG_PARAM_SIZE 81 +#define PIDX_DRBG_PARAM_USE_DF 100 +#define PIDX_ENCODER_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_ENCODER_PARAM_ENCRYPT_LEVEL 101 +#define PIDX_ENCODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_ENCODER_PARAM_SAVE_PARAMETERS 102 +#define PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE 103 +#define PIDX_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_EXCHANGE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST 104 +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS 105 +#define PIDX_EXCHANGE_PARAM_KDF_OUTLEN 106 +#define PIDX_EXCHANGE_PARAM_KDF_TYPE 107 +#define PIDX_EXCHANGE_PARAM_KDF_UKM 108 +#define PIDX_EXCHANGE_PARAM_PAD 109 +#define PIDX_GEN_PARAM_ITERATION 110 +#define PIDX_GEN_PARAM_POTENTIAL 111 +#define PIDX_KDF_PARAM_ARGON2_AD 112 +#define PIDX_KDF_PARAM_ARGON2_LANES 113 +#define PIDX_KDF_PARAM_ARGON2_MEMCOST 114 +#define PIDX_KDF_PARAM_ARGON2_VERSION 115 +#define PIDX_KDF_PARAM_CEK_ALG 116 +#define PIDX_KDF_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_KDF_PARAM_CONSTANT 117 +#define PIDX_KDF_PARAM_DATA 118 +#define PIDX_KDF_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_KDF_PARAM_EARLY_CLEAN 119 +#define PIDX_KDF_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KDF_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_KDF_PARAM_FIPS_EMS_CHECK 120 +#define PIDX_KDF_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KDF_PARAM_HMACDRBG_ENTROPY 121 +#define PIDX_KDF_PARAM_HMACDRBG_NONCE 122 +#define PIDX_KDF_PARAM_INFO 123 +#define PIDX_KDF_PARAM_ITER 124 +#define PIDX_KDF_PARAM_KBKDF_R 125 +#define PIDX_KDF_PARAM_KBKDF_USE_L 126 +#define PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR 127 +#define PIDX_KDF_PARAM_KEY 128 +#define PIDX_KDF_PARAM_LABEL 129 +#define PIDX_KDF_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_KDF_PARAM_MAC_SIZE 130 +#define PIDX_KDF_PARAM_MODE 55 +#define PIDX_KDF_PARAM_PASSWORD 131 +#define PIDX_KDF_PARAM_PKCS12_ID 132 +#define PIDX_KDF_PARAM_PKCS5 133 +#define PIDX_KDF_PARAM_PREFIX 134 +#define PIDX_KDF_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_KDF_PARAM_SALT 135 +#define PIDX_KDF_PARAM_SCRYPT_MAXMEM 136 +#define PIDX_KDF_PARAM_SCRYPT_N 137 +#define PIDX_KDF_PARAM_SCRYPT_P 138 +#define PIDX_KDF_PARAM_SCRYPT_R 125 +#define PIDX_KDF_PARAM_SECRET 139 +#define PIDX_KDF_PARAM_SEED 140 +#define PIDX_KDF_PARAM_SIZE 81 +#define PIDX_KDF_PARAM_SSHKDF_SESSION_ID 141 +#define PIDX_KDF_PARAM_SSHKDF_TYPE 142 +#define PIDX_KDF_PARAM_SSHKDF_XCGHASH 143 +#define PIDX_KDF_PARAM_THREADS 144 +#define PIDX_KDF_PARAM_UKM 145 +#define PIDX_KDF_PARAM_X942_ACVPINFO 146 +#define PIDX_KDF_PARAM_X942_PARTYUINFO 147 +#define PIDX_KDF_PARAM_X942_PARTYVINFO 148 +#define PIDX_KDF_PARAM_X942_SUPP_PRIVINFO 149 +#define PIDX_KDF_PARAM_X942_SUPP_PUBINFO 150 +#define PIDX_KDF_PARAM_X942_USE_KEYBITS 151 +#define PIDX_KEM_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KEM_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KEM_PARAM_IKME 152 +#define PIDX_KEM_PARAM_OPERATION 153 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING 154 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING 155 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA 156 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN 157 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE 55 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS 158 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD 159 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC 160 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE 161 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM 162 +#define PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN 163 +#define PIDX_MAC_PARAM_BLOCK_SIZE 164 +#define PIDX_MAC_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_MAC_PARAM_CUSTOM 165 +#define PIDX_MAC_PARAM_C_ROUNDS 166 +#define PIDX_MAC_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_MAC_PARAM_DIGEST_NOINIT 167 +#define PIDX_MAC_PARAM_DIGEST_ONESHOT 168 +#define PIDX_MAC_PARAM_D_ROUNDS 169 +#define PIDX_MAC_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_MAC_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_MAC_PARAM_FIPS_NO_SHORT_MAC PIDX_PROV_PARAM_NO_SHORT_MAC +#define PIDX_MAC_PARAM_IV 52 +#define PIDX_MAC_PARAM_KEY 128 +#define PIDX_MAC_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_MAC_PARAM_SALT 135 +#define PIDX_MAC_PARAM_SIZE 81 +#define PIDX_MAC_PARAM_TLS_DATA_SIZE 170 +#define PIDX_MAC_PARAM_XOF 83 +#define PIDX_OBJECT_PARAM_DATA 118 +#define PIDX_OBJECT_PARAM_DATA_STRUCTURE 171 +#define PIDX_OBJECT_PARAM_DATA_TYPE 172 +#define PIDX_OBJECT_PARAM_DESC 173 +#define PIDX_OBJECT_PARAM_INPUT_TYPE 174 +#define PIDX_OBJECT_PARAM_REFERENCE 175 +#define PIDX_OBJECT_PARAM_TYPE 142 +#define PIDX_PASSPHRASE_PARAM_INFO 123 +#define PIDX_PKEY_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_PKEY_PARAM_BITS 176 +#define PIDX_PKEY_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_PKEY_PARAM_DEFAULT_DIGEST 177 +#define PIDX_PKEY_PARAM_DHKEM_IKM 178 +#define PIDX_PKEY_PARAM_DH_GENERATOR 179 +#define PIDX_PKEY_PARAM_DH_PRIV_LEN 180 +#define PIDX_PKEY_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_PKEY_PARAM_DIGEST_SIZE 181 +#define PIDX_PKEY_PARAM_DIST_ID 182 +#define PIDX_PKEY_PARAM_EC_A 183 +#define PIDX_PKEY_PARAM_EC_B 184 +#define PIDX_PKEY_PARAM_EC_CHAR2_M 185 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K1 186 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K2 187 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K3 188 +#define PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS 189 +#define PIDX_PKEY_PARAM_EC_CHAR2_TYPE 190 +#define PIDX_PKEY_PARAM_EC_COFACTOR 191 +#define PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS 192 +#define PIDX_PKEY_PARAM_EC_ENCODING 193 +#define PIDX_PKEY_PARAM_EC_FIELD_TYPE 194 +#define PIDX_PKEY_PARAM_EC_GENERATOR 195 +#define PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE 196 +#define PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC 197 +#define PIDX_PKEY_PARAM_EC_ORDER 198 +#define PIDX_PKEY_PARAM_EC_P 138 +#define PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT 199 +#define PIDX_PKEY_PARAM_EC_PUB_X 200 +#define PIDX_PKEY_PARAM_EC_PUB_Y 201 +#define PIDX_PKEY_PARAM_EC_SEED 140 +#define PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY 202 +#define PIDX_PKEY_PARAM_ENGINE PIDX_ALG_PARAM_ENGINE +#define PIDX_PKEY_PARAM_FFC_COFACTOR 203 +#define PIDX_PKEY_PARAM_FFC_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_FFC_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_FFC_G 204 +#define PIDX_PKEY_PARAM_FFC_GINDEX 205 +#define PIDX_PKEY_PARAM_FFC_H 206 +#define PIDX_PKEY_PARAM_FFC_P 138 +#define PIDX_PKEY_PARAM_FFC_PBITS 207 +#define PIDX_PKEY_PARAM_FFC_PCOUNTER 208 +#define PIDX_PKEY_PARAM_FFC_Q 209 +#define PIDX_PKEY_PARAM_FFC_QBITS 210 +#define PIDX_PKEY_PARAM_FFC_SEED 140 +#define PIDX_PKEY_PARAM_FFC_TYPE 142 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_G 211 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY 212 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_PQ 213 +#define PIDX_PKEY_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK 214 +#define PIDX_PKEY_PARAM_FIPS_KEY_CHECK 215 +#define PIDX_PKEY_PARAM_FIPS_SIGN_CHECK 216 +#define PIDX_PKEY_PARAM_GROUP_NAME 217 +#define PIDX_PKEY_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_PKEY_PARAM_MANDATORY_DIGEST 218 +#define PIDX_PKEY_PARAM_MASKGENFUNC 219 +#define PIDX_PKEY_PARAM_MAX_SIZE 220 +#define PIDX_PKEY_PARAM_MGF1_DIGEST 221 +#define PIDX_PKEY_PARAM_MGF1_PROPERTIES 222 +#define PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS 223 +#define PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS 224 +#define PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED 225 +#define PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED 226 +#define PIDX_PKEY_PARAM_ML_DSA_SEED 140 +#define PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE 227 +#define PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS 228 +#define PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS 229 +#define PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED 230 +#define PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED 231 +#define PIDX_PKEY_PARAM_ML_KEM_SEED 140 +#define PIDX_PKEY_PARAM_PAD_MODE 232 +#define PIDX_PKEY_PARAM_PRIV_KEY 233 +#define PIDX_PKEY_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_PUB_KEY 234 +#define PIDX_PKEY_PARAM_RSA_BITS PIDX_PKEY_PARAM_BITS +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT 235 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT1 236 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT2 237 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT3 238 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT4 239 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT5 240 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT6 241 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT7 242 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT8 243 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT9 244 +#define PIDX_PKEY_PARAM_RSA_D 245 +#define PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ 246 +#define PIDX_PKEY_PARAM_RSA_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_RSA_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_RSA_E 247 +#define PIDX_PKEY_PARAM_RSA_EXPONENT 248 +#define PIDX_PKEY_PARAM_RSA_EXPONENT1 249 +#define PIDX_PKEY_PARAM_RSA_EXPONENT10 250 +#define PIDX_PKEY_PARAM_RSA_EXPONENT2 251 +#define PIDX_PKEY_PARAM_RSA_EXPONENT3 252 +#define PIDX_PKEY_PARAM_RSA_EXPONENT4 253 +#define PIDX_PKEY_PARAM_RSA_EXPONENT5 254 +#define PIDX_PKEY_PARAM_RSA_EXPONENT6 255 +#define PIDX_PKEY_PARAM_RSA_EXPONENT7 256 +#define PIDX_PKEY_PARAM_RSA_EXPONENT8 257 +#define PIDX_PKEY_PARAM_RSA_EXPONENT9 258 +#define PIDX_PKEY_PARAM_RSA_FACTOR 259 +#define PIDX_PKEY_PARAM_RSA_FACTOR1 260 +#define PIDX_PKEY_PARAM_RSA_FACTOR10 261 +#define PIDX_PKEY_PARAM_RSA_FACTOR2 262 +#define PIDX_PKEY_PARAM_RSA_FACTOR3 263 +#define PIDX_PKEY_PARAM_RSA_FACTOR4 264 +#define PIDX_PKEY_PARAM_RSA_FACTOR5 265 +#define PIDX_PKEY_PARAM_RSA_FACTOR6 266 +#define PIDX_PKEY_PARAM_RSA_FACTOR7 267 +#define PIDX_PKEY_PARAM_RSA_FACTOR8 268 +#define PIDX_PKEY_PARAM_RSA_FACTOR9 269 +#define PIDX_PKEY_PARAM_RSA_MASKGENFUNC PIDX_PKEY_PARAM_MASKGENFUNC +#define PIDX_PKEY_PARAM_RSA_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_PKEY_PARAM_RSA_N 137 +#define PIDX_PKEY_PARAM_RSA_PRIMES 270 +#define PIDX_PKEY_PARAM_RSA_PSS_SALTLEN 271 +#define PIDX_PKEY_PARAM_RSA_TEST_P1 272 +#define PIDX_PKEY_PARAM_RSA_TEST_P2 273 +#define PIDX_PKEY_PARAM_RSA_TEST_Q1 274 +#define PIDX_PKEY_PARAM_RSA_TEST_Q2 275 +#define PIDX_PKEY_PARAM_RSA_TEST_XP 276 +#define PIDX_PKEY_PARAM_RSA_TEST_XP1 277 +#define PIDX_PKEY_PARAM_RSA_TEST_XP2 278 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ 279 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ1 280 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ2 281 +#define PIDX_PKEY_PARAM_SECURITY_BITS 282 +#define PIDX_PKEY_PARAM_SLH_DSA_SEED 140 +#define PIDX_PKEY_PARAM_USE_COFACTOR_ECDH PIDX_PKEY_PARAM_USE_COFACTOR_FLAG +#define PIDX_PKEY_PARAM_USE_COFACTOR_FLAG 283 +#define PIDX_PROV_PARAM_BUILDINFO 284 +#define PIDX_PROV_PARAM_CORE_MODULE_FILENAME 285 +#define PIDX_PROV_PARAM_CORE_PROV_NAME 286 +#define PIDX_PROV_PARAM_CORE_VERSION 287 +#define PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST 288 +#define PIDX_PROV_PARAM_DSA_SIGN_DISABLED 289 +#define PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK 290 +#define PIDX_PROV_PARAM_HKDF_DIGEST_CHECK 291 +#define PIDX_PROV_PARAM_HKDF_KEY_CHECK 292 +#define PIDX_PROV_PARAM_HMAC_KEY_CHECK 293 +#define PIDX_PROV_PARAM_KBKDF_KEY_CHECK 294 +#define PIDX_PROV_PARAM_KMAC_KEY_CHECK 295 +#define PIDX_PROV_PARAM_NAME 296 +#define PIDX_PROV_PARAM_NO_SHORT_MAC 297 +#define PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK 298 +#define PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED 299 +#define PIDX_PROV_PARAM_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED 301 +#define PIDX_PROV_PARAM_SECURITY_CHECKS 302 +#define PIDX_PROV_PARAM_SELF_TEST_DESC 303 +#define PIDX_PROV_PARAM_SELF_TEST_PHASE 304 +#define PIDX_PROV_PARAM_SELF_TEST_TYPE 305 +#define PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK 306 +#define PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK 307 +#define PIDX_PROV_PARAM_SSHKDF_KEY_CHECK 308 +#define PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK 309 +#define PIDX_PROV_PARAM_SSKDF_KEY_CHECK 310 +#define PIDX_PROV_PARAM_STATUS 311 +#define PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED 312 +#define PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK 313 +#define PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK 314 +#define PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK 315 +#define PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK 316 +#define PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK 317 +#define PIDX_PROV_PARAM_VERSION 115 +#define PIDX_PROV_PARAM_X942KDF_KEY_CHECK 318 +#define PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK 319 +#define PIDX_PROV_PARAM_X963KDF_KEY_CHECK 320 +#define PIDX_RAND_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_RAND_PARAM_GENERATE 321 +#define PIDX_RAND_PARAM_MAX_REQUEST 322 +#define PIDX_RAND_PARAM_STATE 323 +#define PIDX_RAND_PARAM_STRENGTH 324 +#define PIDX_RAND_PARAM_TEST_ENTROPY 325 +#define PIDX_RAND_PARAM_TEST_NONCE 326 +#define PIDX_SIGNATURE_PARAM_ADD_RANDOM 327 +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID PIDX_PKEY_PARAM_ALGORITHM_ID +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_SIGNATURE_PARAM_CONTEXT_STRING 328 +#define PIDX_SIGNATURE_PARAM_DETERMINISTIC 329 +#define PIDX_SIGNATURE_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_SIGNATURE_PARAM_DIGEST_SIZE PIDX_PKEY_PARAM_DIGEST_SIZE +#define PIDX_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_SIGNATURE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_CHECK PIDX_PKEY_PARAM_FIPS_SIGN_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK 330 +#define PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE 331 +#define PIDX_SIGNATURE_PARAM_INSTANCE 332 +#define PIDX_SIGNATURE_PARAM_KAT 333 +#define PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING 334 +#define PIDX_SIGNATURE_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_SIGNATURE_PARAM_MGF1_PROPERTIES PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_SIGNATURE_PARAM_MU 335 +#define PIDX_SIGNATURE_PARAM_NONCE_TYPE 336 +#define PIDX_SIGNATURE_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_SIGNATURE_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_SIGNATURE_PARAM_PSS_SALTLEN 271 +#define PIDX_SIGNATURE_PARAM_SIGNATURE 337 +#define PIDX_SIGNATURE_PARAM_TEST_ENTROPY 338 +#define PIDX_SKEY_PARAM_KEY_LENGTH 339 +#define PIDX_SKEY_PARAM_RAW_BYTES 340 +#define PIDX_STORE_PARAM_ALIAS 341 +#define PIDX_STORE_PARAM_DIGEST 3 +#define PIDX_STORE_PARAM_EXPECT 342 +#define PIDX_STORE_PARAM_FINGERPRINT 343 +#define PIDX_STORE_PARAM_INPUT_TYPE 174 +#define PIDX_STORE_PARAM_ISSUER 296 +#define PIDX_STORE_PARAM_PROPERTIES 7 +#define PIDX_STORE_PARAM_SERIAL 344 +#define PIDX_STORE_PARAM_SUBJECT 345 diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/asn1.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/asn1.h index 21ff58e3d803d4..15e9e44674b0f3 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/asn1.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/asn1.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/asn1.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -21,6 +21,9 @@ # define HEADER_ASN1_H # endif +# ifndef OPENSSL_NO_STDIO +# include +# endif # include # include # include @@ -50,14 +53,14 @@ extern "C" { # define V_ASN1_PRIMITIVE_TAG 0x1f # define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG -# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ -# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ -# define V_ASN1_ANY -4/* used in ASN1 template code */ +# define V_ASN1_APP_CHOOSE -2 /* let the recipient choose */ +# define V_ASN1_OTHER -3 /* used in ASN1_TYPE */ +# define V_ASN1_ANY -4 /* used in ASN1 template code */ # define V_ASN1_UNDEF -1 /* ASN.1 tag values */ # define V_ASN1_EOC 0 -# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_BOOLEAN 1 # define V_ASN1_INTEGER 2 # define V_ASN1_BIT_STRING 3 # define V_ASN1_OCTET_STRING 4 @@ -70,19 +73,19 @@ extern "C" { # define V_ASN1_UTF8STRING 12 # define V_ASN1_SEQUENCE 16 # define V_ASN1_SET 17 -# define V_ASN1_NUMERICSTRING 18 /**/ +# define V_ASN1_NUMERICSTRING 18 # define V_ASN1_PRINTABLESTRING 19 # define V_ASN1_T61STRING 20 -# define V_ASN1_TELETEXSTRING 20/* alias */ -# define V_ASN1_VIDEOTEXSTRING 21 /**/ +# define V_ASN1_TELETEXSTRING 20 /* alias */ +# define V_ASN1_VIDEOTEXSTRING 21 # define V_ASN1_IA5STRING 22 # define V_ASN1_UTCTIME 23 -# define V_ASN1_GENERALIZEDTIME 24 /**/ -# define V_ASN1_GRAPHICSTRING 25 /**/ -# define V_ASN1_ISO64STRING 26 /**/ -# define V_ASN1_VISIBLESTRING 26/* alias */ -# define V_ASN1_GENERALSTRING 27 /**/ -# define V_ASN1_UNIVERSALSTRING 28 /**/ +# define V_ASN1_GENERALIZEDTIME 24 +# define V_ASN1_GRAPHICSTRING 25 +# define V_ASN1_ISO64STRING 26 +# define V_ASN1_VISIBLESTRING 26 /* alias */ +# define V_ASN1_GENERALSTRING 27 +# define V_ASN1_UNIVERSALSTRING 28 # define V_ASN1_BMPSTRING 30 /* @@ -155,7 +158,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) -# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +# define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */ /* * This indicates that the ASN1_STRING is not a real value but just a place * holder for the location where indefinite length constructed data should be @@ -275,7 +278,7 @@ typedef struct ASN1_TLC_st ASN1_TLC; /* This is just an opaque pointer */ typedef struct ASN1_VALUE_st ASN1_VALUE; -/* Declare ASN1 functions: the implement macro in in asn1t.h */ +/* Declare ASN1 functions: the implement macro is in asn1t.h */ /* * The mysterious 'extern' that's passed to some macros is innocuous, @@ -368,6 +371,7 @@ typedef struct ASN1_VALUE_st ASN1_VALUE; typedef void *d2i_of_void(void **, const unsigned char **, long); typedef int i2d_of_void(const void *, unsigned char **); +typedef int OSSL_i2d_of_void_ctx(const void *, unsigned char **, void *vctx); /*- * The following macros and typedefs allow an ASN1_ITEM @@ -996,6 +1000,8 @@ int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, unsigned char *data, int max_len); void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/bio.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/bio.h index f9aa74731c833c..e02f867beb0ec0 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/bio.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/bio.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/bio.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -67,8 +67,13 @@ extern "C" { # define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) # endif # define BIO_TYPE_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_PAIR (26|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_MEM (27|BIO_TYPE_SOURCE_SINK) +/* Custom type starting index returned by BIO_get_new_index() */ #define BIO_TYPE_START 128 +/* Custom type maximum index that can be returned by BIO_get_new_index() */ +#define BIO_TYPE_MASK 0xFF /* * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. @@ -171,6 +176,31 @@ extern "C" { # define BIO_CTRL_SET_INDENT 80 # define BIO_CTRL_GET_INDENT 81 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +# define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +# define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +# define BIO_CTRL_DGRAM_GET_CAPS 86 +# define BIO_CTRL_DGRAM_SET_CAPS 87 +# define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +# define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +# define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +# define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +# define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 +# define BIO_CTRL_DGRAM_SET0_LOCAL_ADDR 94 + +# define BIO_DGRAM_CAP_NONE 0U +# define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +# define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +# define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +# define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + # ifndef OPENSSL_NO_KTLS # define BIO_get_ktls_send(b) \ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) @@ -208,7 +238,7 @@ extern "C" { # define BIO_FLAGS_NONCLEAR_RST 0x400 # define BIO_FLAGS_IN_EOF 0x800 -/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */ +/* the BIO FLAGS values 0x1000 to 0x8000 are reserved for internal KTLS flags */ typedef union bio_addr_st BIO_ADDR; typedef struct bio_addrinfo_st BIO_ADDRINFO; @@ -256,12 +286,14 @@ void BIO_clear_flags(BIO *b, int flags); # define BIO_RR_ACCEPT 0x03 /* These are passed by the BIO callback */ -# define BIO_CB_FREE 0x01 -# define BIO_CB_READ 0x02 -# define BIO_CB_WRITE 0x03 -# define BIO_CB_PUTS 0x04 -# define BIO_CB_GETS 0x05 -# define BIO_CB_CTRL 0x06 +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 +# define BIO_CB_RECVMMSG 0x07 +# define BIO_CB_SENDMMSG 0x08 /* * The callback is called before and after the underling operation, The @@ -362,6 +394,36 @@ struct bio_dgram_sctp_prinfo { }; # endif +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_TYPE_SSL 2 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + SSL *ssl; + } value; +} BIO_POLL_DESCRIPTOR; + /* * #define BIO_CONN_get_param_hostname BIO_ctrl */ @@ -428,10 +490,17 @@ struct bio_dgram_sctp_prinfo { # define BIO_C_SET_CONNECT_MODE 155 +# define BIO_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +# define BIO_C_SET_SOCK_TYPE 157 +# define BIO_C_GET_SOCK_TYPE 158 +# define BIO_C_GET_DGRAM_BIO 159 + # define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) # define BIO_get_app_data(s) BIO_get_ex_data(s,0) -# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_tfo(b,n) BIO_ctrl(b,BIO_C_SET_TFO,(n),NULL) # ifndef OPENSSL_NO_SOCK /* IP families we support, for BIO_s_connect() and BIO_s_accept() */ @@ -452,7 +521,11 @@ struct bio_dgram_sctp_prinfo { # define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) # define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) # define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_get_conn_mode(b) BIO_ctrl(b,BIO_C_GET_CONNECT,4,NULL) # define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) +# define BIO_set_sock_type(b,t) BIO_ctrl(b,BIO_C_SET_SOCK_TYPE,(t),NULL) +# define BIO_get_sock_type(b) BIO_ctrl(b,BIO_C_GET_SOCK_TYPE,0,NULL) +# define BIO_get0_dgram_bio(b, p) BIO_ctrl(b,BIO_C_GET_DGRAM_BIO,0,(void *)(BIO **)(p)) /* BIO_s_accept() */ # define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ @@ -469,6 +542,7 @@ struct bio_dgram_sctp_prinfo { (char *)(bio)) # define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) # define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) +# define BIO_set_tfo_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,5,(n)?(void *)"a":NULL) /* Aliases kept for backward compatibility */ # define BIO_BIND_NORMAL 0 @@ -596,8 +670,32 @@ int BIO_ctrl_reset_read_request(BIO *b); (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) # define BIO_dgram_set_peer(b,peer) \ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_detect_peer_addr(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) # define BIO_dgram_get_mtu_overhead(b) \ (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +# define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +# define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +# define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +# define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +# define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +# define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +# define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +# define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +# define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +# define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) +# define BIO_dgram_set0_local_addr(b, addr) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET0_LOCAL_ADDR, 0, (addr)) /* ctrl macros for BIO_f_prefix */ # define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) @@ -640,10 +738,18 @@ void BIO_vfree(BIO *a); int BIO_up_ref(BIO *a); int BIO_read(BIO *b, void *data, int dlen); int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); int BIO_gets(BIO *bp, char *buf, int size); int BIO_get_line(BIO *bio, char *buf, int size); int BIO_write(BIO *b, const void *data, int dlen); int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); int BIO_puts(BIO *bp, const char *buf); int BIO_indent(BIO *b, int indent, int max); long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); @@ -667,6 +773,9 @@ int BIO_nwrite0(BIO *bio, char **buf); int BIO_nwrite(BIO *bio, char **buf, int num); const BIO_METHOD *BIO_s_mem(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +# endif const BIO_METHOD *BIO_s_secmem(void); BIO *BIO_new_mem_buf(const void *buf, int len); # ifndef OPENSSL_NO_SOCK @@ -686,6 +795,7 @@ const BIO_METHOD *BIO_f_nbio_test(void); const BIO_METHOD *BIO_f_prefix(void); const BIO_METHOD *BIO_s_core(void); # ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_pair(void); const BIO_METHOD *BIO_s_datagram(void); int BIO_dgram_non_fatal_error(int error); BIO *BIO_new_dgram(int fd, int close_flag); @@ -704,6 +814,7 @@ int BIO_dgram_sctp_msg_waiting(BIO *b); # ifndef OPENSSL_NO_SOCK int BIO_sock_should_retry(int i); int BIO_sock_non_fatal_error(int error); +int BIO_err_is_non_fatal(unsigned int errcode); int BIO_socket_wait(int fd, int for_read, time_t max_time); # endif int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); @@ -726,6 +837,8 @@ int BIO_hex_string(BIO *out, int indent, int width, const void *data, # ifndef OPENSSL_NO_SOCK BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, const void *where, size_t wherelen, unsigned short port); void BIO_ADDR_free(BIO_ADDR *); @@ -788,6 +901,7 @@ int BIO_sock_info(int sock, # define BIO_SOCK_KEEPALIVE 0x04 # define BIO_SOCK_NONBLOCK 0x08 # define BIO_SOCK_NODELAY 0x10 +# define BIO_SOCK_TFO 0x20 int BIO_socket(int domain, int socktype, int protocol, int options); int BIO_connect(int sock, const BIO_ADDR *addr, int options); @@ -805,6 +919,11 @@ BIO *BIO_new_fd(int fd, int close_flag); int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, BIO **bio2, size_t writebuf2); +# ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +# endif + /* * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default @@ -849,38 +968,54 @@ ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); BIO_METHOD *BIO_meth_new(int type, const char *name); void BIO_meth_free(BIO_METHOD *biom); -int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int); -int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t, - size_t *); int BIO_meth_set_write(BIO_METHOD *biom, int (*write) (BIO *, const char *, int)); int BIO_meth_set_write_ex(BIO_METHOD *biom, int (*bwrite) (BIO *, const char *, size_t, size_t *)); -int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); -int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); +int BIO_meth_set_sendmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_read(BIO_METHOD *biom, int (*read) (BIO *, char *, int)); int BIO_meth_set_read_ex(BIO_METHOD *biom, int (*bread) (BIO *, char *, size_t, size_t *)); -int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +int BIO_meth_set_recvmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_puts(BIO_METHOD *biom, int (*puts) (BIO *, const char *)); -int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); int BIO_meth_set_gets(BIO_METHOD *biom, int (*ossl_gets) (BIO *, char *, int)); -long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); int BIO_meth_set_ctrl(BIO_METHOD *biom, long (*ctrl) (BIO *, int, long, void *)); -int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); -int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); -long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) - (BIO *, int, BIO_info_cb *); int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, long (*callback_ctrl) (BIO *, int, BIO_info_cb *)); - +# ifndef OPENSSL_NO_DEPRECATED_3_5 +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, + int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, + long, void *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) (BIO *, int, + BIO_info_cb *); +# endif # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/cmp.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/cmp.h index 49825570d8c303..05aed3029d594c 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/cmp.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -35,7 +35,9 @@ extern "C" { # endif -# define OSSL_CMP_PVNO 2 +# define OSSL_CMP_PVNO_2 2 +# define OSSL_CMP_PVNO_3 3 +# define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ /*- * PKIFailureInfo ::= BIT STRING { @@ -137,7 +139,6 @@ extern "C" { # if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX # error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int # endif - typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) @@ -203,8 +204,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_PKISTATUS_revocationWarning 4 # define OSSL_CMP_PKISTATUS_revocationNotification 5 # define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 - typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; + DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) # define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 @@ -274,6 +275,46 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) #define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) #define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) + +typedef struct ossl_cmp_crlstatus_st OSSL_CMP_CRLSTATUS; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS) +#define sk_OSSL_CMP_CRLSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_value(sk, idx) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CRLSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CRLSTATUS_new_null() ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CRLSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CRLSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CRLSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_delete(sk, i) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CRLSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_pop(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_shift(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CRLSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CRLSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CRLSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CRLSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CRLSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) + + +typedef OSSL_CRMF_ATTRIBUTETYPEANDVALUE OSSL_CMP_ATAV; +# define OSSL_CMP_ATAV_free OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free +typedef STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) OSSL_CMP_ATAVS; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_ATAVS) +# define stack_st_OSSL_CMP_ATAV stack_st_OSSL_CRMF_ATTRIBUTETYPEANDVALUE +# define sk_OSSL_CMP_ATAV_num sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num +# define sk_OSSL_CMP_ATAV_value sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value +# define sk_OSSL_CMP_ATAV_push sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push +# define sk_OSSL_CMP_ATAV_pop_free sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free + typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT; typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI; DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI) @@ -375,21 +416,75 @@ void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type, ASN1_TYPE *value); ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav); ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); -int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p, +int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **sk_p, OSSL_CMP_ITAV *itav); void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new0_certProfile(STACK_OF(ASN1_UTF8STRING) + *certProfile); +int OSSL_CMP_ITAV_get0_certProfile(const OSSL_CMP_ITAV *itav, + STACK_OF(ASN1_UTF8STRING) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_create(const X509_CRL *crl, + const X509 *cert, int only_DN); +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_new1(const DIST_POINT_NAME *dpn, + const GENERAL_NAMES *issuer, + const ASN1_TIME *thisUpdate); +int OSSL_CMP_CRLSTATUS_get0(const OSSL_CMP_CRLSTATUS *crlstatus, + DIST_POINT_NAME **dpn, GENERAL_NAMES **issuer, + ASN1_TIME **thisUpdate); +void OSSL_CMP_CRLSTATUS_free(OSSL_CMP_CRLSTATUS *crlstatus); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_crlStatusList(STACK_OF(OSSL_CMP_CRLSTATUS) *crlStatusList); +int OSSL_CMP_ITAV_get0_crlStatusList(const OSSL_CMP_ITAV *itav, + STACK_OF(OSSL_CMP_CRLSTATUS) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_crls(const X509_CRL *crls); +int OSSL_CMP_ITAV_get0_crls(const OSSL_CMP_ITAV *it, STACK_OF(X509_CRL) **out); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_certReqTemplate(OSSL_CRMF_CERTTEMPLATE *certTemplate, + OSSL_CMP_ATAVS *keySpec); +int OSSL_CMP_ITAV_get1_certReqTemplate(const OSSL_CMP_ITAV *itav, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +OSSL_CMP_ATAV *OSSL_CMP_ATAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ATAV_set0(OSSL_CMP_ATAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ATAV_get0_type(const OSSL_CMP_ATAV *itav); +ASN1_TYPE *OSSL_CMP_ATAV_get0_value(const OSSL_CMP_ATAV *itav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_algId(const X509_ALGOR *alg); +X509_ALGOR *OSSL_CMP_ATAV_get0_algId(const OSSL_CMP_ATAV *atav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_rsaKeyLen(int len); +int OSSL_CMP_ATAV_get_rsaKeyLen(const OSSL_CMP_ATAV *atav); +int OSSL_CMP_ATAV_push1(OSSL_CMP_ATAVS **sk_p, const OSSL_CMP_ATAV *atav); + void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); /* from cmp_ctx.c */ OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const OSSL_CMP_CTX *ctx); /* CMP general options: */ # define OSSL_CMP_OPT_LOG_VERBOSITY 0 /* CMP transfer options: */ -# define OSSL_CMP_OPT_KEEP_ALIVE 10 -# define OSSL_CMP_OPT_MSG_TIMEOUT 11 +# define OSSL_CMP_OPT_KEEP_ALIVE 10 +# define OSSL_CMP_OPT_MSG_TIMEOUT 11 # define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 +# define OSSL_CMP_OPT_USE_TLS 13 /* CMP request options: */ # define OSSL_CMP_OPT_VALIDITY_DAYS 20 # define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 @@ -407,6 +502,7 @@ int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); # define OSSL_CMP_OPT_DIGEST_ALGNID 34 # define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35 # define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36 +# define OSSL_CMP_OPT_NO_CACHE_EXTRACERTS 37 int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val); int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt); /* CMP-specific callback for logging and outputting the error queue: */ @@ -420,9 +516,11 @@ int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); +# ifndef OPENSSL_NO_HTTP int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); +# endif typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); @@ -432,7 +530,9 @@ void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); +# define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +# define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); /* client authentication: */ @@ -448,12 +548,15 @@ int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx, int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); int OSSL_CMP_CTX_reset_geninfo_ITAVs(OSSL_CMP_CTX *ctx); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_CTX_get0_geninfo_ITAVs(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, STACK_OF(X509) *extraCertsOut); /* certificate template: */ int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set1_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, const GENERAL_NAME *name); @@ -477,6 +580,7 @@ int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); # define OSSL_CMP_PKISI_BUFLEN 1024 +X509 *OSSL_CMP_CTX_get0_validatedSrvCert(const OSSL_CMP_CTX *ctx); X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); @@ -498,10 +602,13 @@ OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const OSSL_CMP_PKIHEADER *hdr); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_HDR_get0_geninfo_ITAVs(const OSSL_CMP_PKIHEADER *hdr); /* from cmp_msg.c */ OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg); +X509_PUBKEY *OSSL_CMP_MSG_get0_certreq_publickey(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_recipNonce(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid); @@ -517,8 +624,10 @@ int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, X509_STORE *trusted_store, X509 *cert); /* from cmp_http.c */ +# ifndef OPENSSL_NO_HTTP OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); +# endif /* from cmp_server.c */ typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; @@ -561,6 +670,13 @@ int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx, OSSL_CMP_SRV_error_cb_t process_error, OSSL_CMP_SRV_certConf_cb_t process_certConf, OSSL_CMP_SRV_pollReq_cb_t process_pollReq); +typedef int (*OSSL_CMP_SRV_delayed_delivery_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +typedef int (*OSSL_CMP_SRV_clean_transaction_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_SRV_CTX_init_trans(OSSL_CMP_SRV_CTX *srv_ctx, + OSSL_CMP_SRV_delayed_delivery_cb_t delay, + OSSL_CMP_SRV_clean_transaction_cb_t clean); OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx, @@ -577,6 +693,8 @@ X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type, # define OSSL_CMP_CR 2 # define OSSL_CMP_P10CR 4 # define OSSL_CMP_KUR 7 +# define OSSL_CMP_GENM 21 +# define OSSL_CMP_ERROR 23 # define OSSL_CMP_exec_IR_ses(ctx) \ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL) # define OSSL_CMP_exec_CR_ses(ctx) \ @@ -590,6 +708,18 @@ int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); +int OSSL_CMP_get1_crlUpdate(OSSL_CMP_CTX *ctx, const X509 *crlcert, + const X509_CRL *last_crl, + X509_CRL **crl); +int OSSL_CMP_get1_certReqTemplate(OSSL_CMP_CTX *ctx, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/cms.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/cms.h index 3b453e6a2187a2..63afab563557b0 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/cms.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/cms.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cms.h.in * - * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2008-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -31,8 +31,10 @@ extern "C" { # endif +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; typedef struct CMS_ContentInfo_st CMS_ContentInfo; typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; typedef struct CMS_CertificateChoices CMS_CertificateChoices; typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; @@ -147,10 +149,14 @@ SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, #define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) +DECLARE_ASN1_DUP_FUNCTION(CMS_EnvelopedData) + CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq); # define CMS_SIGNERINFO_ISSUER_SERIAL 0 @@ -190,6 +196,7 @@ CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq) # define CMS_ASCIICRLF 0x80000 # define CMS_CADES 0x100000 # define CMS_USE_ORIGINATOR_KEYID 0x200000 +# define CMS_NO_SIGNING_TIME 0x400000 const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms); @@ -217,13 +224,16 @@ int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, unsigned int flags); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, BIO *dcont, + unsigned int flags); CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, unsigned int flags); CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, @@ -233,27 +243,26 @@ CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, unsigned int flags); CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, const unsigned char *key, size_t keylen, BIO *dcont, BIO *out, unsigned int flags); - CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags); CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, @@ -272,7 +281,7 @@ CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags); CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, BIO *dcont, BIO *out, unsigned int flags); @@ -291,12 +300,16 @@ int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo * -CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx, +CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags); @@ -385,6 +398,11 @@ ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); int CMS_SignerInfo_sign(CMS_SignerInfo *si); int CMS_SignerInfo_verify(CMS_SignerInfo *si); int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, @@ -441,7 +459,7 @@ CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( unsigned char *id, int idlen, int allorfirst, STACK_OF(GENERAL_NAMES) *receiptList, STACK_OF(GENERAL_NAMES) *receiptsTo, - OSSL_LIB_CTX *ctx); + OSSL_LIB_CTX *libctx); int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/comp.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/comp.h new file mode 100644 index 00000000000000..90e39511fe8d28 --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/comp.h @@ -0,0 +1,98 @@ +/* + * Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_COMP_H +# define OPENSSL_COMP_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_COMP_H +# endif + +# include + +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + + +# ifndef OPENSSL_NO_COMP + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX* comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); + +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); + +COMP_METHOD *COMP_zlib(void); +COMP_METHOD *COMP_zlib_oneshot(void); +COMP_METHOD *COMP_brotli(void); +COMP_METHOD *COMP_brotli_oneshot(void); +COMP_METHOD *COMP_zstd(void); +COMP_METHOD *COMP_zstd_oneshot(void); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define COMP_zlib_cleanup() while(0) continue +# endif + +# ifdef OPENSSL_BIO_H +const BIO_METHOD *BIO_f_zlib(void); +const BIO_METHOD *BIO_f_brotli(void); +const BIO_METHOD *BIO_f_zstd(void); +# endif + +# endif + +typedef struct ssl_comp_st SSL_COMP; + +SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) +#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) +#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) +#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) +#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) +#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) +#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) +#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) +#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) +#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) +#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) +#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) + + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/conf.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/conf.h index 44989929f6c84a..38576290bf641b 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/conf.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/conf.h @@ -27,6 +27,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -65,7 +68,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) #define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) #define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); -#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp))) +#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp)), lh_CONF_VALUE_hash_thunk, lh_CONF_VALUE_comp_thunk, lh_CONF_VALUE_doall_thunk, lh_CONF_VALUE_doall_arg_thunk)) #define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/configuration.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/configuration.h index 0ab00d8834b215..ac8c22a725f3d4 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/configuration.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/configuration.h @@ -30,7 +30,7 @@ extern "C" { # ifndef OPENSSL_SYS_AIX # define OPENSSL_SYS_AIX 1 # endif -# define OPENSSL_CONFIGURED_API 30000 +# define OPENSSL_CONFIGURED_API 30500 # ifndef OPENSSL_RAND_SEED_OS # define OPENSSL_RAND_SEED_OS # endif @@ -43,6 +43,12 @@ extern "C" { # ifndef OPENSSL_NO_ASAN # define OPENSSL_NO_ASAN # endif +# ifndef OPENSSL_NO_BROTLI +# define OPENSSL_NO_BROTLI +# endif +# ifndef OPENSSL_NO_BROTLI_DYNAMIC +# define OPENSSL_NO_BROTLI_DYNAMIC +# endif # ifndef OPENSSL_NO_COMP # define OPENSSL_NO_COMP # endif @@ -52,6 +58,9 @@ extern "C" { # ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # endif +# ifndef OPENSSL_NO_DEMOS +# define OPENSSL_NO_DEMOS +# endif # ifndef OPENSSL_NO_DEVCRYPTOENG # define OPENSSL_NO_DEVCRYPTOENG # endif @@ -64,12 +73,24 @@ extern "C" { # ifndef OPENSSL_NO_EXTERNAL_TESTS # define OPENSSL_NO_EXTERNAL_TESTS # endif +# ifndef OPENSSL_NO_FIPS_JITTER +# define OPENSSL_NO_FIPS_JITTER +# endif # ifndef OPENSSL_NO_FUZZ_AFL # define OPENSSL_NO_FUZZ_AFL # endif # ifndef OPENSSL_NO_FUZZ_LIBFUZZER # define OPENSSL_NO_FUZZ_LIBFUZZER # endif +# ifndef OPENSSL_NO_H3DEMO +# define OPENSSL_NO_H3DEMO +# endif +# ifndef OPENSSL_NO_HQINTEROP +# define OPENSSL_NO_HQINTEROP +# endif +# ifndef OPENSSL_NO_JITTER +# define OPENSSL_NO_JITTER +# endif # ifndef OPENSSL_NO_KTLS # define OPENSSL_NO_KTLS # endif @@ -82,6 +103,9 @@ extern "C" { # ifndef OPENSSL_NO_MSAN # define OPENSSL_NO_MSAN # endif +# ifndef OPENSSL_NO_PIE +# define OPENSSL_NO_PIE +# endif # ifndef OPENSSL_NO_RC5 # define OPENSSL_NO_RC5 # endif @@ -94,6 +118,12 @@ extern "C" { # ifndef OPENSSL_NO_SSL3_METHOD # define OPENSSL_NO_SSL3_METHOD # endif +# ifndef OPENSSL_NO_SSLKEYLOG +# define OPENSSL_NO_SSLKEYLOG +# endif +# ifndef OPENSSL_NO_TFO +# define OPENSSL_NO_TFO +# endif # ifndef OPENSSL_NO_TRACE # define OPENSSL_NO_TRACE # endif @@ -109,6 +139,21 @@ extern "C" { # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS # define OPENSSL_NO_WEAK_SSL_CIPHERS # endif +# ifndef OPENSSL_NO_WINSTORE +# define OPENSSL_NO_WINSTORE +# endif +# ifndef OPENSSL_NO_ZLIB +# define OPENSSL_NO_ZLIB +# endif +# ifndef OPENSSL_NO_ZLIB_DYNAMIC +# define OPENSSL_NO_ZLIB_DYNAMIC +# endif +# ifndef OPENSSL_NO_ZSTD +# define OPENSSL_NO_ZSTD +# endif +# ifndef OPENSSL_NO_ZSTD_DYNAMIC +# define OPENSSL_NO_ZSTD_DYNAMIC +# endif # ifndef OPENSSL_NO_DYNAMIC_ENGINE # define OPENSSL_NO_DYNAMIC_ENGINE # endif @@ -130,6 +175,12 @@ extern "C" { # define RC4_INT unsigned char +# if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +# define OPENSSL_NO_COMP_ALG +# else +# undef OPENSSL_NO_COMP_ALG +# endif + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/core_names.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/core_names.h new file mode 100644 index 00000000000000..e93e79a52bc910 --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/core_names.h @@ -0,0 +1,575 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/core_names.h.in + * + * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#ifndef OPENSSL_CORE_NAMES_H +# define OPENSSL_CORE_NAMES_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +/* OSSL_CIPHER_PARAM_CTS_MODE Values */ +# define OSSL_CIPHER_CTS_MODE_CS1 "CS1" +# define OSSL_CIPHER_CTS_MODE_CS2 "CS2" +# define OSSL_CIPHER_CTS_MODE_CS3 "CS3" + +/* Known CIPHER names (not a complete list) */ +# define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" + +/* Known DIGEST names (not a complete list) */ +# define OSSL_DIGEST_NAME_MD5 "MD5" +# define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" +# define OSSL_DIGEST_NAME_SHA1 "SHA1" +# define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" +# define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" +# define OSSL_DIGEST_NAME_SHA2_256_192 "SHA2-256/192" +# define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" +# define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" +# define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" +# define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" +# define OSSL_DIGEST_NAME_MD2 "MD2" +# define OSSL_DIGEST_NAME_MD4 "MD4" +# define OSSL_DIGEST_NAME_MDC2 "MDC2" +# define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" +# define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" +# define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" +# define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" +# define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" +# define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" +# define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" +# define OSSL_DIGEST_NAME_SM3 "SM3" + +/* Known MAC names */ +# define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" +# define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" +# define OSSL_MAC_NAME_CMAC "CMAC" +# define OSSL_MAC_NAME_GMAC "GMAC" +# define OSSL_MAC_NAME_HMAC "HMAC" +# define OSSL_MAC_NAME_KMAC128 "KMAC128" +# define OSSL_MAC_NAME_KMAC256 "KMAC256" +# define OSSL_MAC_NAME_POLY1305 "POLY1305" +# define OSSL_MAC_NAME_SIPHASH "SIPHASH" + +/* Known KDF names */ +# define OSSL_KDF_NAME_HKDF "HKDF" +# define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" +# define OSSL_KDF_NAME_PBKDF1 "PBKDF1" +# define OSSL_KDF_NAME_PBKDF2 "PBKDF2" +# define OSSL_KDF_NAME_SCRYPT "SCRYPT" +# define OSSL_KDF_NAME_SSHKDF "SSHKDF" +# define OSSL_KDF_NAME_SSKDF "SSKDF" +# define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" +# define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" +# define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" +# define OSSL_KDF_NAME_X963KDF "X963KDF" +# define OSSL_KDF_NAME_KBKDF "KBKDF" +# define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" +# define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" + +/* RSA padding modes */ +# define OSSL_PKEY_RSA_PAD_MODE_NONE "none" +# define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" +# define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" +# define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" +# define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" + +/* RSA pss padding salt length */ +# define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" + +/* OSSL_PKEY_PARAM_EC_ENCODING values */ +# define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" +# define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" + +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" + +# define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" + +/* PROV_SKEY well known key types */ +# define OSSL_SKEY_TYPE_GENERIC "GENERIC-SECRET" +# define OSSL_SKEY_TYPE_AES "AES" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" + +/* Provider configuration variables */ +#define OSSL_PKEY_RETAIN_SEED "pkey_retain_seed" + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +# define OSSL_ALG_PARAM_ALGORITHM_ID "algorithm-id" +# define OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS "algorithm-id-params" +# define OSSL_ALG_PARAM_CIPHER "cipher" +# define OSSL_ALG_PARAM_DIGEST "digest" +# define OSSL_ALG_PARAM_ENGINE "engine" +# define OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR "fips-indicator" +# define OSSL_ALG_PARAM_MAC "mac" +# define OSSL_ALG_PARAM_PROPERTIES "properties" +# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +# define OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props" +# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" +# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name" +# define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal" +# define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name" +# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid" +# define OSSL_CIPHER_PARAM_AEAD "aead" +# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +# define OSSL_CIPHER_PARAM_AEAD_IV_GENERATED "iv-generated" +# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" +# define OSSL_CIPHER_PARAM_AEAD_TAG "tag" +# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" +# define OSSL_CIPHER_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD "alg_id_param" +# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_CIPHER_PARAM_CTS "cts" +# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" +# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" +# define OSSL_CIPHER_PARAM_DECRYPT_ONLY "decrypt-only" +# define OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK "encrypt-check" +# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" +# define OSSL_CIPHER_PARAM_IV "iv" +# define OSSL_CIPHER_PARAM_IVLEN "ivlen" +# define OSSL_CIPHER_PARAM_KEYLEN "keylen" +# define OSSL_CIPHER_PARAM_MODE "mode" +# define OSSL_CIPHER_PARAM_NUM "num" +# define OSSL_CIPHER_PARAM_PADDING "padding" +# define OSSL_CIPHER_PARAM_PIPELINE_AEAD_TAG "pipeline-tag" +# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" +# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" +# define OSSL_CIPHER_PARAM_ROUNDS "rounds" +# define OSSL_CIPHER_PARAM_SPEED "speed" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag" +# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" +# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" +# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" +# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" +# define OSSL_CIPHER_PARAM_USE_BITS "use-bits" +# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard" +# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" +# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_DIGEST_PARAM_MICALG "micalg" +# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" +# define OSSL_DIGEST_PARAM_SIZE "size" +# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" +# define OSSL_DIGEST_PARAM_XOF "xof" +# define OSSL_DIGEST_PARAM_XOFLEN "xoflen" +# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +# define OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +# define OSSL_DRBG_PARAM_SIZE "size" +# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" +# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" +# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" +# define OSSL_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_EXCHANGE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" +# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" +# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" +# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" +# define OSSL_EXCHANGE_PARAM_PAD "pad" +# define OSSL_GEN_PARAM_ITERATION "iteration" +# define OSSL_GEN_PARAM_POTENTIAL "potential" +# define OSSL_KDF_PARAM_ARGON2_AD "ad" +# define OSSL_KDF_PARAM_ARGON2_LANES "lanes" +# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost" +# define OSSL_KDF_PARAM_ARGON2_VERSION "version" +# define OSSL_KDF_PARAM_CEK_ALG "cekalg" +# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_KDF_PARAM_CONSTANT "constant" +# define OSSL_KDF_PARAM_DATA "data" +# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean" +# define OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KDF_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_KDF_PARAM_FIPS_EMS_CHECK "ems_check" +# define OSSL_KDF_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy" +# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce" +# define OSSL_KDF_PARAM_INFO "info" +# define OSSL_KDF_PARAM_ITER "iter" +# define OSSL_KDF_PARAM_KBKDF_R "r" +# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" +# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" +# define OSSL_KDF_PARAM_KEY "key" +# define OSSL_KDF_PARAM_LABEL "label" +# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_KDF_PARAM_MAC_SIZE "maclen" +# define OSSL_KDF_PARAM_MODE "mode" +# define OSSL_KDF_PARAM_PASSWORD "pass" +# define OSSL_KDF_PARAM_PKCS12_ID "id" +# define OSSL_KDF_PARAM_PKCS5 "pkcs5" +# define OSSL_KDF_PARAM_PREFIX "prefix" +# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_KDF_PARAM_SALT "salt" +# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" +# define OSSL_KDF_PARAM_SCRYPT_N "n" +# define OSSL_KDF_PARAM_SCRYPT_P "p" +# define OSSL_KDF_PARAM_SCRYPT_R "r" +# define OSSL_KDF_PARAM_SECRET "secret" +# define OSSL_KDF_PARAM_SEED "seed" +# define OSSL_KDF_PARAM_SIZE "size" +# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" +# define OSSL_KDF_PARAM_SSHKDF_TYPE "type" +# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" +# define OSSL_KDF_PARAM_THREADS "threads" +# define OSSL_KDF_PARAM_UKM "ukm" +# define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info" +# define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info" +# define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info" +# define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo" +# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_KEM_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KEM_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KEM_PARAM_IKME "ikme" +# define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING "hs_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm" +# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len" +# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" +# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_MAC_PARAM_CUSTOM "custom" +# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" +# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" +# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" +# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" +# define OSSL_MAC_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_MAC_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_MAC_PARAM_FIPS_NO_SHORT_MAC OSSL_PROV_PARAM_NO_SHORT_MAC +# define OSSL_MAC_PARAM_IV "iv" +# define OSSL_MAC_PARAM_KEY "key" +# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_MAC_PARAM_SALT "salt" +# define OSSL_MAC_PARAM_SIZE "size" +# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" +# define OSSL_MAC_PARAM_XOF "xof" +# define OSSL_OBJECT_PARAM_DATA "data" +# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" +# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" +# define OSSL_OBJECT_PARAM_DESC "desc" +# define OSSL_OBJECT_PARAM_INPUT_TYPE "input-type" +# define OSSL_OBJECT_PARAM_REFERENCE "reference" +# define OSSL_OBJECT_PARAM_TYPE "type" +# define OSSL_PASSPHRASE_PARAM_INFO "info" +# define OSSL_PKEY_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_PKEY_PARAM_BITS "bits" +# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" +# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm" +# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" +# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +# define OSSL_PKEY_PARAM_DIST_ID "distid" +# define OSSL_PKEY_PARAM_EC_A "a" +# define OSSL_PKEY_PARAM_EC_B "b" +# define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3" +# define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp" +# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" +# define OSSL_PKEY_PARAM_EC_ENCODING "encoding" +# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +# define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_PARAM_EC_ORDER "order" +# define OSSL_PKEY_PARAM_EC_P "p" +# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +# define OSSL_PKEY_PARAM_EC_PUB_X "qx" +# define OSSL_PKEY_PARAM_EC_PUB_Y "qy" +# define OSSL_PKEY_PARAM_EC_SEED "seed" +# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE +# define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +# define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_FFC_G "g" +# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +# define OSSL_PKEY_PARAM_FFC_H "hindex" +# define OSSL_PKEY_PARAM_FFC_P "p" +# define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +# define OSSL_PKEY_PARAM_FFC_Q "q" +# define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +# define OSSL_PKEY_PARAM_FFC_SEED "seed" +# define OSSL_PKEY_PARAM_FFC_TYPE "type" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +# define OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK "digest-check" +# define OSSL_PKEY_PARAM_FIPS_KEY_CHECK "key-check" +# define OSSL_PKEY_PARAM_FIPS_SIGN_CHECK "sign-check" +# define OSSL_PKEY_PARAM_GROUP_NAME "group" +# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" +# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +# define OSSL_PKEY_PARAM_MAX_SIZE "max-size" +# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +# define OSSL_PKEY_PARAM_ML_DSA_INPUT_FORMATS "ml-dsa.input_formats" +# define OSSL_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS "ml-dsa.output_formats" +# define OSSL_PKEY_PARAM_ML_DSA_PREFER_SEED "ml-dsa.prefer_seed" +# define OSSL_PKEY_PARAM_ML_DSA_RETAIN_SEED "ml-dsa.retain_seed" +# define OSSL_PKEY_PARAM_ML_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE "ml-kem.import_pct_type" +# define OSSL_PKEY_PARAM_ML_KEM_INPUT_FORMATS "ml-kem.input_formats" +# define OSSL_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS "ml-kem.output_formats" +# define OSSL_PKEY_PARAM_ML_KEM_PREFER_SEED "ml-kem.prefer_seed" +# define OSSL_PKEY_PARAM_ML_KEM_RETAIN_SEED "ml-kem.retain_seed" +# define OSSL_PKEY_PARAM_ML_KEM_SEED "seed" +# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +# define OSSL_PKEY_PARAM_PRIV_KEY "priv" +# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_PUB_KEY "pub" +# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9" +# define OSSL_PKEY_PARAM_RSA_D "d" +# define OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ "rsa-derive-from-pq" +# define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_RSA_E "e" +# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1" +# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10" +# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2" +# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3" +# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4" +# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5" +# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6" +# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7" +# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8" +# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9" +# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1" +# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10" +# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2" +# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3" +# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4" +# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5" +# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6" +# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7" +# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8" +# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9" +# define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC +# define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_PKEY_PARAM_RSA_N "n" +# define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" +# define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1" +# define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2" +# define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1" +# define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2" +# define OSSL_PKEY_PARAM_RSA_TEST_XP "xp" +# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" +# define OSSL_PKEY_PARAM_SLH_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG +# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +# define OSSL_PROV_PARAM_BUILDINFO "buildinfo" +# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" +# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" +# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" +# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" +# define OSSL_PROV_PARAM_DSA_SIGN_DISABLED "dsa-sign-disabled" +# define OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK "ecdh-cofactor-check" +# define OSSL_PROV_PARAM_HKDF_DIGEST_CHECK "hkdf-digest-check" +# define OSSL_PROV_PARAM_HKDF_KEY_CHECK "hkdf-key-check" +# define OSSL_PROV_PARAM_HMAC_KEY_CHECK "hmac-key-check" +# define OSSL_PROV_PARAM_KBKDF_KEY_CHECK "kbkdf-key-check" +# define OSSL_PROV_PARAM_KMAC_KEY_CHECK "kmac-key-check" +# define OSSL_PROV_PARAM_NAME "name" +# define OSSL_PROV_PARAM_NO_SHORT_MAC "no-short-mac" +# define OSSL_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK "pbkdf2-lower-bound-check" +# define OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED "rsa-pkcs15-pad-disabled" +# define OSSL_PROV_PARAM_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED "rsa-sign-x931-pad-disabled" +# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" +# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" +# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" +# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" +# define OSSL_PROV_PARAM_SIGNATURE_DIGEST_CHECK "signature-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_DIGEST_CHECK "sshkdf-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_KEY_CHECK "sshkdf-key-check" +# define OSSL_PROV_PARAM_SSKDF_DIGEST_CHECK "sskdf-digest-check" +# define OSSL_PROV_PARAM_SSKDF_KEY_CHECK "sskdf-key-check" +# define OSSL_PROV_PARAM_STATUS "status" +# define OSSL_PROV_PARAM_TDES_ENCRYPT_DISABLED "tdes-encrypt-disabled" +# define OSSL_PROV_PARAM_TLS13_KDF_DIGEST_CHECK "tls13-kdf-digest-check" +# define OSSL_PROV_PARAM_TLS13_KDF_KEY_CHECK "tls13-kdf-key-check" +# define OSSL_PROV_PARAM_TLS1_PRF_DIGEST_CHECK "tls1-prf-digest-check" +# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" +# define OSSL_PROV_PARAM_TLS1_PRF_KEY_CHECK "tls1-prf-key-check" +# define OSSL_PROV_PARAM_VERSION "version" +# define OSSL_PROV_PARAM_X942KDF_KEY_CHECK "x942kdf-key-check" +# define OSSL_PROV_PARAM_X963KDF_DIGEST_CHECK "x963kdf-digest-check" +# define OSSL_PROV_PARAM_X963KDF_KEY_CHECK "x963kdf-key-check" +# define OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_RAND_PARAM_GENERATE "generate" +# define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +# define OSSL_RAND_PARAM_STATE "state" +# define OSSL_RAND_PARAM_STRENGTH "strength" +# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" +# define OSSL_SIGNATURE_PARAM_ADD_RANDOM "additional-random" +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID OSSL_PKEY_PARAM_ALGORITHM_ID +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string" +# define OSSL_SIGNATURE_PARAM_DETERMINISTIC "deterministic" +# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE +# define OSSL_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_SIGNATURE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_CHECK OSSL_PKEY_PARAM_FIPS_SIGN_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK "sign-x931-pad-check" +# define OSSL_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE "verify-message" +# define OSSL_SIGNATURE_PARAM_INSTANCE "instance" +# define OSSL_SIGNATURE_PARAM_KAT "kat" +# define OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING "message-encoding" +# define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_SIGNATURE_PARAM_MU "mu" +# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type" +# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +# define OSSL_SIGNATURE_PARAM_SIGNATURE "signature" +# define OSSL_SIGNATURE_PARAM_TEST_ENTROPY "test-entropy" +# define OSSL_SKEY_PARAM_KEY_LENGTH "key-length" +# define OSSL_SKEY_PARAM_RAW_BYTES "raw-bytes" +# define OSSL_STORE_PARAM_ALIAS "alias" +# define OSSL_STORE_PARAM_DIGEST "digest" +# define OSSL_STORE_PARAM_EXPECT "expect" +# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" +# define OSSL_STORE_PARAM_INPUT_TYPE "input-type" +# define OSSL_STORE_PARAM_ISSUER "name" +# define OSSL_STORE_PARAM_PROPERTIES "properties" +# define OSSL_STORE_PARAM_SERIAL "serial" +# define OSSL_STORE_PARAM_SUBJECT "subject" + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/crmf.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/crmf.h index 71b747ed33d239..4bf550fd47daa9 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/crmf.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/crmf.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/crmf.h.in * - * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -26,6 +26,7 @@ # include # include # include /* for GENERAL_NAME etc. */ +# include /* explicit #includes not strictly needed since implied by the above: */ # include @@ -43,9 +44,12 @@ extern "C" { # define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 # define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 - typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) + +typedef struct ossl_crmf_encryptedkey_st OSSL_CRMF_ENCRYPTEDKEY; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDKEY) + typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) @@ -77,6 +81,36 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) #define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; +void OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(OSSL_CRMF_ATTRIBUTETYPEANDVALUE *v); +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value(sk, idx) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new(cmp) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_null() ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (n)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete(sk, i) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (i))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete_ptr(sk, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_shift(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk),ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), (idx)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set(sk, idx, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), pnum) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup(sk) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) + + typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER) typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY; @@ -118,6 +152,7 @@ typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO) typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTTEMPLATE) typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS) @@ -198,12 +233,14 @@ int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, int rid, int acceptRAVerified, OSSL_LIB_CTX *libctx, const char *propq); OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); -const ASN1_INTEGER -*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const ASN1_INTEGER +*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); X509_EXTENSIONS *OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME @@ -215,10 +252,24 @@ int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl, const X509_NAME *subject, const X509_NAME *issuer, const ASN1_INTEGER *serial); -X509 -*OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, - OSSL_LIB_CTX *libctx, const char *propq, - EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDKEY_get1_encCert(const OSSL_CRMF_ENCRYPTEDKEY *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, unsigned int flags); +unsigned char +*OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *enc, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, int *outlen); +EVP_PKEY *OSSL_CRMF_ENCRYPTEDKEY_get1_pkey(const OSSL_CRMF_ENCRYPTEDKEY *encryptedKey, + X509_STORE *ts, STACK_OF(X509) *extra, EVP_PKEY *pkey, + X509 *cert, ASN1_OCTET_STRING *secret, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSG_centralkeygen_requested(const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr); +# ifndef OPENSSL_NO_CMS +OSSL_CRMF_ENCRYPTEDKEY *OSSL_CRMF_ENCRYPTEDKEY_init_envdata(CMS_EnvelopedData *envdata); +# endif # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/crypto.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/crypto.h index 3f40be6d8c61d5..fd2cfd3e5a9ac4 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/crypto.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/crypto.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/crypto.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -85,9 +85,15 @@ int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock); void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock); int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_add64(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_and(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, CRYPTO_RWLOCK *lock); int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, CRYPTO_RWLOCK *lock); /* No longer needed, so this is a no-op */ #define OPENSSL_malloc_init() while(0) continue @@ -96,6 +102,9 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_zalloc(num) \ CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_aligned_alloc(num, alignment, freeptr) \ + CRYPTO_aligned_alloc(num, alignment, freeptr, \ + OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_realloc(addr, num) \ CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_clear_realloc(addr, old_num, num) \ @@ -124,6 +133,7 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); size_t OPENSSL_strnlen(const char *str, size_t maxlen); +int OPENSSL_strtoul(const char *str, char **endptr, int base, unsigned long *num); int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength, const unsigned char *buf, size_t buflen, const char sep); @@ -160,6 +170,7 @@ const char *OpenSSL_version(int type); # define OPENSSL_FULL_VERSION_STRING 7 # define OPENSSL_MODULES_DIR 8 # define OPENSSL_CPU_INFO 9 +# define OPENSSL_WINCTX 10 const char *OPENSSL_info(int type); /* @@ -174,6 +185,7 @@ const char *OPENSSL_info(int type); # define OPENSSL_INFO_LIST_SEPARATOR 1006 # define OPENSSL_INFO_SEED_SOURCE 1007 # define OPENSSL_INFO_CPU_SETTINGS 1008 +# define OPENSSL_INFO_WINDOWS_CONTEXT 1009 int OPENSSL_issetugid(void); @@ -341,11 +353,14 @@ void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn, CRYPTO_realloc_fn *realloc_fn, CRYPTO_free_fn *free_fn); -void *CRYPTO_malloc(size_t num, const char *file, int line); -void *CRYPTO_zalloc(size_t num, const char *file, int line); -void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); -char *CRYPTO_strdup(const char *str, const char *file, int line); -char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc(size_t num, size_t align, + void **freeptr, const char *file, + int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strdup(const char *str, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); void CRYPTO_free(void *ptr, const char *file, int line); void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line); void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); @@ -354,8 +369,8 @@ void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, int CRYPTO_secure_malloc_init(size_t sz, size_t minsize); int CRYPTO_secure_malloc_done(void); -void *CRYPTO_secure_malloc(size_t num, const char *file, int line); -void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); void CRYPTO_secure_free(void *ptr, const char *file, int line); void CRYPTO_secure_clear_free(void *ptr, size_t num, const char *file, int line); @@ -376,6 +391,9 @@ void OPENSSL_cleanse(void *ptr, size_t len); # define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */ # define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */ +/* max allowed length for value of OPENSSL_MALLOC_FAILURES env var. */ +# define CRYPTO_MEM_CHECK_MAX_FS 256 + void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); # ifndef OPENSSL_NO_DEPRECATED_3_0 # define OPENSSL_mem_debug_push(info) \ @@ -551,6 +569,13 @@ int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file); void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); +int OSSL_LIB_CTX_get_conf_diagnostics(OSSL_LIB_CTX *ctx); +void OSSL_LIB_CTX_set_conf_diagnostics(OSSL_LIB_CTX *ctx, int value); + +void OSSL_sleep(uint64_t millis); + + +void *OSSL_LIB_CTX_get_data(OSSL_LIB_CTX *ctx, int index); # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/ct.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/ct.h index b6dd8c3547710a..e6dd1192a4e0b3 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/ct.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/ct.h @@ -133,7 +133,7 @@ typedef enum { */ CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); - + /* * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library * context and property query string is used. diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/err.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/err.h index 2abf2483488181..daca18e7b757b0 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/err.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/err.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -372,7 +372,7 @@ typedef struct ERR_string_data_st { } ERR_STRING_DATA; DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); -#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp))) +#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp)), lh_ERR_STRING_DATA_hash_thunk, lh_ERR_STRING_DATA_comp_thunk, lh_ERR_STRING_DATA_doall_thunk, lh_ERR_STRING_DATA_doall_arg_thunk)) #define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) @@ -496,6 +496,14 @@ int ERR_get_next_error_library(void); int ERR_set_mark(void); int ERR_pop_to_mark(void); int ERR_clear_last_mark(void); +int ERR_count_to_mark(void); +int ERR_pop(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); #ifdef __cplusplus } diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/fipskey.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/fipskey.h index 42ba014b313ba8..929db18c678364 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/fipskey.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/fipskey.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/fipskey.h.in * - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -29,6 +29,11 @@ extern "C" { */ #define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" +/* + * The FIPS provider vendor name, as a string. + */ +#define FIPS_VENDOR "OpenSSL FIPS Provider" + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/lhash.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/lhash.h index 39dd6254acdeb6..62c55b20fd9716 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/lhash.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/lhash.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -24,6 +24,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -31,9 +34,13 @@ extern "C" { typedef struct lhash_node_st OPENSSL_LH_NODE; typedef int (*OPENSSL_LH_COMPFUNC) (const void *, const void *); +typedef int (*OPENSSL_LH_COMPFUNCTHUNK) (const void *, const void *, OPENSSL_LH_COMPFUNC cfn); typedef unsigned long (*OPENSSL_LH_HASHFUNC) (const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNCTHUNK) (const void *, OPENSSL_LH_HASHFUNC hfn); typedef void (*OPENSSL_LH_DOALL_FUNC) (void *); +typedef void (*OPENSSL_LH_DOALL_FUNC_THUNK) (void *, OPENSSL_LH_DOALL_FUNC doall); typedef void (*OPENSSL_LH_DOALL_FUNCARG) (void *, void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG_THUNK) (void *, void *, OPENSSL_LH_DOALL_FUNCARG doall); typedef struct lhash_st OPENSSL_LHASH; /* @@ -79,26 +86,40 @@ typedef struct lhash_st OPENSSL_LHASH; int OPENSSL_LH_error(OPENSSL_LHASH *lh); OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +OPENSSL_LHASH *OPENSSL_LH_set_thunks(OPENSSL_LHASH *lh, + OPENSSL_LH_HASHFUNCTHUNK hw, + OPENSSL_LH_COMPFUNCTHUNK cw, + OPENSSL_LH_DOALL_FUNC_THUNK daw, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw); void OPENSSL_LH_free(OPENSSL_LHASH *lh); void OPENSSL_LH_flush(OPENSSL_LHASH *lh); void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); -void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg_thunk(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw, + OPENSSL_LH_DOALL_FUNCARG fn, void *arg); + unsigned long OPENSSL_LH_strhash(const char *c); unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); # ifndef OPENSSL_NO_STDIO -void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# endif +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # endif -void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define _LHASH OPENSSL_LHASH @@ -129,110 +150,190 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); /* Helper macro for internal use */ # define DEFINE_LHASH_OF_INTERNAL(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ typedef void (*lh_##type##_doallfunc)(type *a); \ - static ossl_unused ossl_inline type *ossl_check_##type##_lh_plain_type(type *ptr) \ + static ossl_inline unsigned long lh_##type##_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static ossl_inline int lh_##type##_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_inline void lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_inline void lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline type *\ + ossl_check_##type##_lh_plain_type(type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const type *ossl_check_const_##type##_lh_plain_type(const type *ptr) \ + static ossl_unused ossl_inline const type * \ + ossl_check_const_##type##_lh_plain_type(const type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const OPENSSL_LHASH *ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline const OPENSSL_LHASH * \ + ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ { \ return (const OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LHASH *ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline OPENSSL_LHASH * \ + ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ { \ return (OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ + static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC \ + ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ { \ return (OPENSSL_LH_COMPFUNC)cmp; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ + static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC \ + ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ { \ return (OPENSSL_LH_HASHFUNC)hfn; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ + static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC \ + ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ { \ return (OPENSSL_LH_DOALL_FUNC)dfn; \ } \ LHASH_OF(type) -# define DEFINE_LHASH_OF(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ - static ossl_unused ossl_inline LHASH_OF(type) *lh_##type##_new(unsigned long (*hfn)(const type *), \ - int (*cfn)(const type *, const type *)) \ +# ifndef OPENSSL_NO_DEPRECATED_3_1 +# define DEFINE_LHASH_OF_DEPRECATED(type) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ - return (LHASH_OF(type) *) \ - OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ - static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } +# else +# define DEFINE_LHASH_OF_DEPRECATED(type) +# endif + +# define DEFINE_LHASH_OF_EX(type) \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ + static unsigned long \ + lh_##type##_hfn_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static int lh_##type##_cfn_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_free(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_flush(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_flush(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ { \ return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline int \ + lh_##type##_error(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_num_items(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_get_down_load(LHASH_OF(type) *lh) \ { \ - OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ { \ - OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ } \ - static ossl_unused ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ { \ - OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ { \ - return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ } \ - static ossl_unused ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall(LHASH_OF(type) *lh, void (*doall)(type *)) \ { \ - OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ - void (*doall)(type *)) \ + static ossl_unused ossl_inline LHASH_OF(type) * \ + lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ { \ - OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \ + lh_##type##_hfn_thunk, lh_##type##_cfn_thunk, \ + lh_##type##_doall_thunk, \ + lh_##type##_doall_arg_thunk); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall_arg(LHASH_OF(type) *lh, \ - void (*doallarg)(type *, void *), \ - void *arg) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg(LHASH_OF(type) *lh, \ + void (*doallarg)(type *, void *), void *arg) \ { \ OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ } \ LHASH_OF(type) +# define DEFINE_LHASH_OF(type) \ + DEFINE_LHASH_OF_EX(type); \ + DEFINE_LHASH_OF_DEPRECATED(type) \ + LHASH_OF(type) + #define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ int_implement_lhash_doall(type, argtype, const type) @@ -240,17 +341,26 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); int_implement_lhash_doall(type, argtype, type) #define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype##_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG fn) \ + { \ + void (*fn_conv)(cbargtype *, argtype *) = (void (*)(cbargtype *, argtype *))fn; \ + fn_conv((cbargtype *)node, (argtype *)arg); \ + } \ static ossl_unused ossl_inline void \ lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ void (*fn)(cbargtype *, argtype *), \ argtype *arg) \ { \ - OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNCARG)fn, (void *)arg); \ + OPENSSL_LH_doall_arg_thunk((OPENSSL_LHASH *)lh, \ + lh_##type##_doall_##argtype##_thunk, \ + (OPENSSL_LH_DOALL_FUNCARG)fn, \ + (void *)arg); \ } \ LHASH_OF(type) DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); -#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp)), lh_OPENSSL_STRING_hash_thunk, lh_OPENSSL_STRING_comp_thunk, lh_OPENSSL_STRING_doall_thunk, lh_OPENSSL_STRING_doall_arg_thunk)) #define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) @@ -265,7 +375,7 @@ DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); #define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) #define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); -#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp)), lh_OPENSSL_CSTRING_hash_thunk, lh_OPENSSL_CSTRING_comp_thunk, lh_OPENSSL_CSTRING_doall_thunk, lh_OPENSSL_CSTRING_doall_arg_thunk)) #define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/opensslv.h index 5fb5bc63056fe0..71a357701fd5e3 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/opensslv.h @@ -28,8 +28,8 @@ extern "C" { * These macros express version number MAJOR.MINOR.PATCH exactly */ # define OPENSSL_VERSION_MAJOR 3 -# define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 17 +# define OPENSSL_VERSION_MINOR 5 +# define OPENSSL_VERSION_PATCH 2 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.17" -# define OPENSSL_FULL_VERSION_STR "3.0.17" +# define OPENSSL_VERSION_STR "3.5.2" +# define OPENSSL_FULL_VERSION_STR "3.5.2" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "1 Jul 2025" +# define OPENSSL_RELEASE_DATE "5 Aug 2025" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.17 1 Jul 2025" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.2 5 Aug 2025" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/pkcs12.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/pkcs12.h index c5e0cab06491ec..0809645dad0bbf 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/pkcs12.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/pkcs12.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/pkcs12.h.in * - * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -41,6 +44,7 @@ extern "C" { # define PKCS12_MAC_KEY_LENGTH 20 +/* The macro is expected to be used only internally. Kept for backwards compatibility. */ # define PKCS12_SALT_LEN 8 /* It's not clear if these are actually needed... */ @@ -130,7 +134,9 @@ int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); const STACK_OF(PKCS12_SAFEBAG) * PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); @@ -218,6 +224,7 @@ ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); const STACK_OF(X509_ATTRIBUTE) * PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, const char *pass, int passlen, const unsigned char *in, int inlen, @@ -285,6 +292,9 @@ int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, unsigned char *salt, int saltlen, int iter, const EVP_MD *md_type); +int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type, const char *prf_md_name); int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, int saltlen, const EVP_MD *md_type); unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, @@ -305,6 +315,7 @@ DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) void PKCS12_PBE_add(void); int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype); @@ -312,6 +323,11 @@ PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype, OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/pkcs7.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/pkcs7.h index 0ce79bf4fa160e..fa68462aff973b 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/pkcs7.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/pkcs7.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/pkcs7.h.in * - * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -28,6 +28,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -131,8 +134,8 @@ SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INF typedef struct pkcs7_signed_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; struct pkcs7_st *contents; } PKCS7_SIGNED; @@ -158,8 +161,8 @@ typedef struct pkcs7_enveloped_st { typedef struct pkcs7_signedandenveloped_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; PKCS7_ENC_CONTENT *enc_data; STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; @@ -200,7 +203,7 @@ typedef struct pkcs7_st { /* NID_pkcs7_data */ ASN1_OCTET_STRING *data; /* NID_pkcs7_signed */ - PKCS7_SIGNED *sign; + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ /* NID_pkcs7_enveloped */ PKCS7_ENVELOPE *enveloped; /* NID_pkcs7_signedAndEnveloped */ @@ -341,13 +344,13 @@ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, const EVP_MD *dgst); int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); -int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); -int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); int PKCS7_content_new(PKCS7 *p7, int nid); int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, - X509 *x509); + X509 *signer); BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/ssl.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/ssl.h index 3df725c56d6c5e..7e3d89c7ef3dc9 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/ssl.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/ssl.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/ssl.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -24,6 +24,7 @@ # endif # include +# include # include # include # include @@ -42,6 +43,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -231,10 +235,8 @@ typedef struct ssl_cipher_st SSL_CIPHER; typedef struct ssl_session_st SSL_SESSION; typedef struct tls_sigalgs_st TLS_SIGALGS; typedef struct ssl_conf_ctx_st SSL_CONF_CTX; -typedef struct ssl_comp_st SSL_COMP; STACK_OF(SSL_CIPHER); -STACK_OF(SSL_COMP); /* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ typedef struct srtp_protection_profile_st { @@ -278,28 +280,31 @@ typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, /* Extension context codes */ /* This extension is only allowed in TLS */ -#define SSL_EXT_TLS_ONLY 0x0001 +#define SSL_EXT_TLS_ONLY 0x00001 /* This extension is only allowed in DTLS */ -#define SSL_EXT_DTLS_ONLY 0x0002 +#define SSL_EXT_DTLS_ONLY 0x00002 /* Some extensions may be allowed in DTLS but we don't implement them for it */ -#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 /* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ -#define SSL_EXT_SSL3_ALLOWED 0x0008 +#define SSL_EXT_SSL3_ALLOWED 0x00008 /* Extension is only defined for TLS1.2 and below */ -#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 /* Extension is only defined for TLS1.3 and above */ -#define SSL_EXT_TLS1_3_ONLY 0x0020 +#define SSL_EXT_TLS1_3_ONLY 0x00020 /* Ignore this extension during parsing if we are resuming */ -#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 -#define SSL_EXT_CLIENT_HELLO 0x0080 +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 /* Really means TLS1.2 or below */ -#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 -#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 -#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 -#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 -#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 -#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 -#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 /* Typedefs for handling custom extensions */ @@ -404,7 +409,7 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); */ # define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_BIT(22) /* - * If set, a server will allow a client to issue a SSLv3.0 version + * If set, a server will allow a client to issue an SSLv3.0 version * number as latest version supported in the premaster secret, even when * TLSv1.0 (version 3.1) was announced in the client hello. Normally * this is forbidden to prevent version rollback attacks. @@ -430,6 +435,19 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); * interoperability with CryptoPro CSP 3.x */ # define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +# define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +# define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) + /* Enable KTLS TX zerocopy on Linux */ +# define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) + +#define SSL_OP_PREFER_NO_DHE_KEX SSL_OP_BIT(35) /* * Option "collections." @@ -574,6 +592,8 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); # define CERT_PKEY_CERT_TYPE 0x400 /* Cert chain suitable to Suite B */ # define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +# define CERT_PKEY_RPK 0x1000 # define SSL_CONF_FLAG_CMDLINE 0x1 # define SSL_CONF_FLAG_FILE 0x2 @@ -965,6 +985,7 @@ uint32_t SSL_get_recv_max_early_data(const SSL *s); # include /* This is mostly sslv3 with a few tweaks */ # include /* Datagram TLS */ # include /* Support for the use_srtp extension */ +# include #ifdef __cplusplus extern "C" { @@ -1000,32 +1021,6 @@ SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) #define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) #define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) #define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) -SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) -#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) -#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) -#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) -#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) -#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) -#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) -#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) -#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) -#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) -#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) -#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) /* compatibility */ @@ -1066,6 +1061,7 @@ typedef enum { DTLS_ST_CR_HELLO_VERIFY_REQUEST, TLS_ST_CR_SRVR_HELLO, TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, TLS_ST_CR_CERT_STATUS, TLS_ST_CR_KEY_EXCH, TLS_ST_CR_CERT_REQ, @@ -1075,6 +1071,7 @@ typedef enum { TLS_ST_CR_FINISHED, TLS_ST_CW_CLNT_HELLO, TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, TLS_ST_CW_KEY_EXCH, TLS_ST_CW_CERT_VRFY, TLS_ST_CW_CHANGE, @@ -1085,10 +1082,12 @@ typedef enum { DTLS_ST_SW_HELLO_VERIFY_REQUEST, TLS_ST_SW_SRVR_HELLO, TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, TLS_ST_SW_KEY_EXCH, TLS_ST_SW_CERT_REQ, TLS_ST_SW_SRVR_DONE, TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, TLS_ST_SR_KEY_EXCH, TLS_ST_SR_CERT_VRFY, TLS_ST_SR_NEXT_PROTO, @@ -1380,9 +1379,13 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_CTRL_GET_SIGNATURE_NID 132 # define SSL_CTRL_GET_TMP_KEY 133 # define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +# define SSL_CTRL_GET_IANA_GROUPS 135 # define SSL_CTRL_SET_RETRY_VERIFY 136 # define SSL_CTRL_GET_VERIFY_CERT_STORE 137 # define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +# define SSL_CTRL_GET0_IMPLEMENTED_GROUPS 139 +# define SSL_CTRL_GET_SIGNATURE_NAME 140 +# define SSL_CTRL_GET_PEER_SIGNATURE_NAME 141 # define SSL_CERT_SET_FIRST 1 # define SSL_CERT_SET_NEXT 2 # define SSL_CERT_SET_SERVER 3 @@ -1485,10 +1488,15 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get1_groups(s, glist) \ SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_IANA_GROUPS,0,(uint16_t **)(plst)) # define SSL_CTX_set1_groups(ctx, glist, glistlen) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) # define SSL_CTX_set1_groups_list(ctx, s) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s)) +# define SSL_CTX_get0_implemented_groups(ctx, all, out) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET0_IMPLEMENTED_GROUPS, all, \ + (STACK_OF(OPENSSL_CSTRING) *)(out)) # define SSL_set1_groups(s, glist, glistlen) \ SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist)) # define SSL_set1_groups_list(s, str) \ @@ -1520,8 +1528,12 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) (char *)(clist)) # define SSL_set1_client_certificate_types(s, clist, clistlen) \ SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist)) +# define SSL_get0_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn) +# define SSL_get0_peer_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_peer_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) # define SSL_get_peer_tmp_key(s, pk) \ @@ -1549,6 +1561,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get_max_proto_version(s) \ SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +const char *SSL_get0_group_name(SSL *s); const char *SSL_group_to_name(SSL *s, int id); /* Backwards compatibility, original 1.1.0 names */ @@ -1613,7 +1626,11 @@ void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); __owur int SSL_want(const SSL *s); __owur int SSL_clear(SSL *s); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()") void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); +#endif +void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm); __owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); __owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); @@ -1725,13 +1742,21 @@ __owur const char *SSL_state_string(const SSL *s); __owur const char *SSL_rstate_string(const SSL *s); __owur const char *SSL_state_string_long(const SSL *s); __owur const char *SSL_rstate_string_long(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_get_time_ex()") __owur long SSL_SESSION_get_time(const SSL_SESSION *s); +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_set_time_ex()") __owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +#endif __owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); __owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); __owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); __owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); +__owur time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s); +__owur time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t); + __owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); __owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, @@ -1783,6 +1808,9 @@ __owur int SSL_has_matching_session_id(const SSL *s, unsigned int id_len); SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); # ifdef OPENSSL_X509_H __owur X509 *SSL_get0_peer_certificate(const SSL *s); @@ -1840,6 +1868,8 @@ __owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, SSL *SSL_new(SSL_CTX *ctx); int SSL_up_ref(SSL *s); int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); __owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, unsigned int sid_ctx_len); @@ -1848,8 +1878,8 @@ __owur int SSL_set_purpose(SSL *ssl, int purpose); __owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); __owur int SSL_set_trust(SSL *ssl, int trust); -__owur int SSL_set1_host(SSL *s, const char *hostname); -__owur int SSL_add1_host(SSL *s, const char *hostname); +__owur int SSL_set1_host(SSL *s, const char *host); +__owur int SSL_add1_host(SSL *s, const char *host); __owur const char *SSL_get0_peername(SSL *s); void SSL_set_hostflags(SSL *s, unsigned int flags); @@ -1924,6 +1954,11 @@ OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg); void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, void *arg); +typedef int (*SSL_new_pending_conn_cb_fn) (SSL_CTX *ctx, SSL *new_ssl, + void *arg); +void SSL_CTX_set_new_pending_conn_cb(SSL_CTX *c, SSL_new_pending_conn_cb_fn cb, + void *arg); + int SSL_client_hello_isv2(SSL *s); unsigned int SSL_client_hello_get0_legacy_version(SSL *s); size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); @@ -1932,6 +1967,8 @@ size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); size_t SSL_client_hello_get0_compression_methods(SSL *s, const unsigned char **out); int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); int SSL_client_hello_get0_ext(SSL *s, unsigned int type, const unsigned char **out, size_t *outlen); @@ -1978,6 +2015,12 @@ long SSL_callback_ctrl(SSL *, int, void (*)(void)); long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); +# define SSL_WRITE_FLAG_CONCLUDE (1U << 0) + +__owur int SSL_write_ex2(SSL *s, const void *buf, size_t num, + uint64_t flags, + size_t *written); + # define SSL_EARLY_DATA_NOT_SENT 0 # define SSL_EARLY_DATA_REJECTED 1 # define SSL_EARLY_DATA_ACCEPTED 2 @@ -1986,6 +2029,7 @@ __owur int SSL_get_early_data_status(const SSL *s); __owur int SSL_get_error(const SSL *s, int ret_code); __owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); /* This sets the 'default' SSL version that SSL_new() will create */ # ifndef OPENSSL_NO_DEPRECATED_3_0 @@ -2281,6 +2325,8 @@ void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); +int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size, + size_t hs_block_size); int SSL_set_record_padding_callback(SSL *ssl, size_t (*cb) (SSL *ssl, int type, @@ -2288,12 +2334,255 @@ int SSL_set_record_padding_callback(SSL *ssl, void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); void *SSL_get_record_padding_callback_arg(const SSL *ssl); int SSL_set_block_padding(SSL *ssl, size_t block_size); - +int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size, + size_t hs_block_size); int SSL_set_num_tickets(SSL *s, size_t num_tickets); size_t SSL_get_num_tickets(const SSL *s); int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +__owur int SSL_is_listener(SSL *ssl); +__owur SSL *SSL_get0_listener(SSL *s); +#define SSL_LISTENER_FLAG_NO_VALIDATE (1UL << 1) +__owur SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags); +__owur SSL *SSL_new_listener_from(SSL *ssl, uint64_t flags); +__owur SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags); +#define SSL_ACCEPT_CONNECTION_NO_BLOCK (1UL << 0) +__owur SSL *SSL_accept_connection(SSL *ssl, uint64_t flags); +__owur size_t SSL_get_accept_connection_queue_len(SSL *ssl); +__owur int SSL_listen(SSL *ssl); + +__owur int SSL_is_domain(SSL *s); +__owur SSL *SSL_get0_domain(SSL *s); +__owur SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags); + +#define SSL_DOMAIN_FLAG_SINGLE_THREAD (1U << 0) +#define SSL_DOMAIN_FLAG_MULTI_THREAD (1U << 1) +#define SSL_DOMAIN_FLAG_THREAD_ASSISTED (1U << 2) +#define SSL_DOMAIN_FLAG_BLOCKING (1U << 3) +#define SSL_DOMAIN_FLAG_LEGACY_BLOCKING (1U << 4) + +__owur int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t domain_flags); +__owur int SSL_CTX_get_domain_flags(const SSL_CTX *ctx, uint64_t *domain_flags); +__owur int SSL_get_domain_flags(const SSL *ssl, uint64_t *domain_flags); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +# ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +# endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + +# define SSL_VALUE_CLASS_GENERIC 0 +# define SSL_VALUE_CLASS_FEATURE_REQUEST 1 +# define SSL_VALUE_CLASS_FEATURE_PEER_REQUEST 2 +# define SSL_VALUE_CLASS_FEATURE_NEGOTIATED 3 + +# define SSL_VALUE_NONE 0 +# define SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL 1 +# define SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL 2 +# define SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL 3 +# define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL 4 +# define SSL_VALUE_QUIC_IDLE_TIMEOUT 5 +# define SSL_VALUE_EVENT_HANDLING_MODE 6 +# define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7 +# define SSL_VALUE_STREAM_WRITE_BUF_USED 8 +# define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9 + +# define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0 +# define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1 +# define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT 2 + +int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v); +int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v); + +# define SSL_get_generic_value_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_set_generic_value_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_get_feature_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_set_feature_request_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_get_feature_peer_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, (id), (v)) +# define SSL_get_feature_negotiated_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_NEGOTIATED, (id), (v)) + +# define SSL_get_quic_stream_bidi_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_bidi_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, \ + (value)) + +# define SSL_get_event_handling_mode(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) +# define SSL_set_event_handling_mode(ssl, value) \ + SSL_set_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) + +# define SSL_get_stream_write_buf_size(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_SIZE, \ + (value)) +# define SSL_get_stream_write_buf_used(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_USED, \ + (value)) +# define SSL_get_stream_write_buf_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_AVAIL, \ + (value)) + +# define SSL_POLL_EVENT_NONE 0 + +# define SSL_POLL_EVENT_F (1U << 0) /* F (Failure) */ +# define SSL_POLL_EVENT_EL (1U << 1) /* EL (Exception on Listener) */ +# define SSL_POLL_EVENT_EC (1U << 2) /* EC (Exception on Conn) */ +# define SSL_POLL_EVENT_ECD (1U << 3) /* ECD (Exception on Conn Drained) */ +# define SSL_POLL_EVENT_ER (1U << 4) /* ER (Exception on Read) */ +# define SSL_POLL_EVENT_EW (1U << 5) /* EW (Exception on Write) */ +# define SSL_POLL_EVENT_R (1U << 6) /* R (Readable) */ +# define SSL_POLL_EVENT_W (1U << 7) /* W (Writable) */ +# define SSL_POLL_EVENT_IC (1U << 8) /* IC (Incoming Connection) */ +# define SSL_POLL_EVENT_ISB (1U << 9) /* ISB (Incoming Stream: Bidi) */ +# define SSL_POLL_EVENT_ISU (1U << 10) /* ISU (Incoming Stream: Uni) */ +# define SSL_POLL_EVENT_OSB (1U << 11) /* OSB (Outgoing Stream: Bidi) */ +# define SSL_POLL_EVENT_OSU (1U << 12) /* OSU (Outgoing Stream: Uni) */ + +# define SSL_POLL_EVENT_RW (SSL_POLL_EVENT_R | SSL_POLL_EVENT_W) +# define SSL_POLL_EVENT_RE (SSL_POLL_EVENT_R | SSL_POLL_EVENT_ER) +# define SSL_POLL_EVENT_WE (SSL_POLL_EVENT_W | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_RWE (SSL_POLL_EVENT_RE | SSL_POLL_EVENT_WE) +# define SSL_POLL_EVENT_E (SSL_POLL_EVENT_EL | SSL_POLL_EVENT_EC \ + | SSL_POLL_EVENT_ER | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_IS (SSL_POLL_EVENT_ISB | SSL_POLL_EVENT_ISU) +# define SSL_POLL_EVENT_ISE (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_EC) +# define SSL_POLL_EVENT_I (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_IC) +# define SSL_POLL_EVENT_OS (SSL_POLL_EVENT_OSB | SSL_POLL_EVENT_OSU) +# define SSL_POLL_EVENT_OSE (SSL_POLL_EVENT_OS | SSL_POLL_EVENT_EC) + +typedef struct ssl_poll_item_st { + BIO_POLL_DESCRIPTOR desc; + uint64_t events, revents; +} SSL_POLL_ITEM; + +# define SSL_POLL_FLAG_NO_HANDLE_EVENTS (1U << 0) + +__owur int SSL_poll(SSL_POLL_ITEM *items, + size_t num_items, + size_t stride, + const struct timeval *timeout, + uint64_t flags, + size_t *result_count); + +static ossl_inline ossl_unused BIO_POLL_DESCRIPTOR +SSL_as_poll_descriptor(SSL *s) +{ + BIO_POLL_DESCRIPTOR d; + + d.type = BIO_POLL_DESCRIPTOR_TYPE_SSL; + d.value.ssl = s; + return d; +} + # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define SSL_cache_hit(s) SSL_session_reused(s) # endif @@ -2593,6 +2882,51 @@ void SSL_set_allow_early_data_cb(SSL *s, const char *OSSL_default_cipher_list(void); const char *OSSL_default_ciphersuites(void); +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + +/* + * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used. + */ +# define OSSL_RECORD_PROTECTION_LEVEL_NONE 0 +# define OSSL_RECORD_PROTECTION_LEVEL_EARLY 1 +# define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE 2 +# define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3 + +int SSL_set_quic_tls_cbs(SSL *s, const OSSL_DISPATCH *qtdis, void *arg); +int SSL_set_quic_tls_transport_params(SSL *s, + const unsigned char *params, + size_t params_len); + +int SSL_set_quic_tls_early_data_enabled(SSL *s, int enabled); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/x509.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/x509.h index 1f7755e5b69c75..d013458c226461 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/x509.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/x509.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -40,6 +40,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -162,16 +165,24 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) # define X509_FILETYPE_ASN1 2 # define X509_FILETYPE_DEFAULT 3 -# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 -# define X509v3_KU_NON_REPUDIATION 0x0040 -# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 -# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 -# define X509v3_KU_KEY_AGREEMENT 0x0008 -# define X509v3_KU_KEY_CERT_SIGN 0x0004 -# define X509v3_KU_CRL_SIGN 0x0002 -# define X509v3_KU_ENCIPHER_ONLY 0x0001 -# define X509v3_KU_DECIPHER_ONLY 0x8000 -# define X509v3_KU_UNDEF 0xffff +/*- + * : + * The KeyUsage BITSTRING is treated as a little-endian integer, hence bit `0` + * is 0x80, while bit `7` is 0x01 (the LSB of the integer value), bit `8` is + * then the MSB of the second octet, or 0x8000. + */ +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 /* (0) */ +# define X509v3_KU_NON_REPUDIATION 0x0040 /* (1) */ +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 /* (2) */ +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 /* (3) */ +# define X509v3_KU_KEY_AGREEMENT 0x0008 /* (4) */ +# define X509v3_KU_KEY_CERT_SIGN 0x0004 /* (5) */ +# define X509v3_KU_CRL_SIGN 0x0002 /* (6) */ +# define X509v3_KU_ENCIPHER_ONLY 0x0001 /* (7) */ +# define X509v3_KU_DECIPHER_ONLY 0x8000 /* (8) */ +# ifndef OPENSSL_NO_DEPRECATED_3_4 +# define X509v3_KU_UNDEF 0xffff /* vestigial, not used */ +# endif struct X509_algor_st { ASN1_OBJECT *algorithm; @@ -462,7 +473,12 @@ typedef struct PBKDF2PARAM_st { X509_ALGOR *prf; } PBKDF2PARAM; -#ifndef OPENSSL_NO_SCRYPT +typedef struct { + X509_ALGOR *keyDerivationFunc; + X509_ALGOR *messageAuthScheme; +} PBMAC1PARAM; + +# ifndef OPENSSL_NO_SCRYPT typedef struct SCRYPT_PARAMS_st { ASN1_OCTET_STRING *salt; ASN1_INTEGER *costParameter; @@ -470,7 +486,7 @@ typedef struct SCRYPT_PARAMS_st { ASN1_INTEGER *parallelizationParameter; ASN1_INTEGER *keyLength; } SCRYPT_PARAMS; -#endif +# endif #ifdef __cplusplus } @@ -603,6 +619,8 @@ EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); # endif @@ -651,6 +669,8 @@ EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); DECLARE_ASN1_DUP_FUNCTION(X509) @@ -884,12 +904,12 @@ int X509_REQ_get_signature_nid(const X509_REQ *req); int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); -EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); int X509_REQ_extension_nid(int nid); int *X509_REQ_get_extension_nids(void); void X509_REQ_set_extension_nids(int *nids); -STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(OSSL_FUTURE_CONST X509_REQ *req); int X509_REQ_add_extensions_nid(X509_REQ *req, const STACK_OF(X509_EXTENSION) *exts, int nid); int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); @@ -950,13 +970,14 @@ X509_REVOKED_get0_extensions(const X509_REVOKED *r); X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); -int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); -int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey); +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); int X509_chain_check_suiteb(int *perror_depth, X509 *x, STACK_OF(X509) *chain, unsigned long flags); int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); @@ -1077,6 +1098,8 @@ X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, X509_EXTENSION *ex, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_extensions(STACK_OF(X509_EXTENSION) **target, + const STACK_OF(X509_EXTENSION) *exts); int X509_get_ext_count(const X509 *x); int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); @@ -1198,9 +1221,10 @@ X509 *X509_find_by_subject(STACK_OF(X509) *sk, const X509_NAME *name); DECLARE_ASN1_FUNCTIONS(PBEPARAM) DECLARE_ASN1_FUNCTIONS(PBE2PARAM) DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) -#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(PBMAC1PARAM) +# ifndef OPENSSL_NO_SCRYPT DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) -#endif +# endif int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, const unsigned char *salt, int saltlen); @@ -1237,6 +1261,7 @@ X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, int prf_nid, int keylen, OSSL_LIB_CTX *libctx); +PBKDF2PARAM *PBMAC1_get1_pbkdf2_param(const X509_ALGOR *macalg); /* PKCS#8 utilities */ DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) @@ -1262,6 +1287,8 @@ int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len); +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, int ptype, void *pval, unsigned char *penc, int penclen); diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/x509_acert.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/x509_acert.h new file mode 100644 index 00000000000000..9dde625677f9a9 --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/x509_acert.h @@ -0,0 +1,294 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/x509_acert.h.in + * + * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_X509_ACERT_H +# define OPENSSL_X509_ACERT_H +# pragma once + +# include +# include +# include + +typedef struct X509_acert_st X509_ACERT; +typedef struct X509_acert_info_st X509_ACERT_INFO; +typedef struct ossl_object_digest_info_st OSSL_OBJECT_DIGEST_INFO; +typedef struct ossl_issuer_serial_st OSSL_ISSUER_SERIAL; +typedef struct X509_acert_issuer_v2form_st X509_ACERT_ISSUER_V2FORM; + +DECLARE_ASN1_FUNCTIONS(X509_ACERT) +DECLARE_ASN1_DUP_FUNCTION(X509_ACERT) +DECLARE_ASN1_ITEM(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_OBJECT_DIGEST_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_ISSUER_SERIAL) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_ISSUER_V2FORM) + +# ifndef OPENSSL_NO_STDIO +X509_ACERT *d2i_X509_ACERT_fp(FILE *fp, X509_ACERT **acert); +int i2d_X509_ACERT_fp(FILE *fp, const X509_ACERT *acert); +# endif + +DECLARE_PEM_rw(X509_ACERT, X509_ACERT) + +X509_ACERT *d2i_X509_ACERT_bio(BIO *bp, X509_ACERT **acert); +int i2d_X509_ACERT_bio(BIO *bp, const X509_ACERT *acert); + +int X509_ACERT_sign(X509_ACERT *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_ACERT_sign_ctx(X509_ACERT *x, EVP_MD_CTX *ctx); +int X509_ACERT_verify(X509_ACERT *a, EVP_PKEY *r); + +# define X509_ACERT_VERSION_2 1 + +const GENERAL_NAMES *X509_ACERT_get0_holder_entityName(const X509_ACERT *x); +const OSSL_ISSUER_SERIAL *X509_ACERT_get0_holder_baseCertId(const X509_ACERT *x); +const OSSL_OBJECT_DIGEST_INFO * X509_ACERT_get0_holder_digest(const X509_ACERT *x); +const X509_NAME *X509_ACERT_get0_issuerName(const X509_ACERT *x); +long X509_ACERT_get_version(const X509_ACERT *x); +void X509_ACERT_get0_signature(const X509_ACERT *x, + const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_ACERT_get_signature_nid(const X509_ACERT *x); +const X509_ALGOR *X509_ACERT_get0_info_sigalg(const X509_ACERT *x); +const ASN1_INTEGER *X509_ACERT_get0_serialNumber(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notBefore(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notAfter(const X509_ACERT *x); +const ASN1_BIT_STRING *X509_ACERT_get0_issuerUID(const X509_ACERT *x); + +int X509_ACERT_print(BIO *bp, X509_ACERT *x); +int X509_ACERT_print_ex(BIO *bp, X509_ACERT *x, unsigned long nmflags, + unsigned long cflag); + +int X509_ACERT_get_attr_count(const X509_ACERT *x); +int X509_ACERT_get_attr_by_NID(const X509_ACERT *x, int nid, int lastpos); +int X509_ACERT_get_attr_by_OBJ(const X509_ACERT *x, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_ACERT_get_attr(const X509_ACERT *x, int loc); +X509_ATTRIBUTE *X509_ACERT_delete_attr(X509_ACERT *x, int loc); + +void *X509_ACERT_get_ext_d2i(const X509_ACERT *x, int nid, int *crit, int *idx); +int X509_ACERT_add1_ext_i2d(X509_ACERT *x, int nid, void *value, int crit, + unsigned long flags); +const STACK_OF(X509_EXTENSION) *X509_ACERT_get0_extensions(const X509_ACERT *x); + +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY 0 +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY_CERT 1 +# define OSSL_OBJECT_DIGEST_INFO_OTHER 2 /* must not be used in RFC 5755 profile */ +int X509_ACERT_set_version(X509_ACERT *x, long version); +void X509_ACERT_set0_holder_entityName(X509_ACERT *x, GENERAL_NAMES *name); +void X509_ACERT_set0_holder_baseCertId(X509_ACERT *x, OSSL_ISSUER_SERIAL *isss); +void X509_ACERT_set0_holder_digest(X509_ACERT *x, + OSSL_OBJECT_DIGEST_INFO *dinfo); + +int X509_ACERT_add1_attr(X509_ACERT *x, X509_ATTRIBUTE *attr); +int X509_ACERT_add1_attr_by_OBJ(X509_ACERT *x, const ASN1_OBJECT *obj, + int type, const void *bytes, int len); +int X509_ACERT_add1_attr_by_NID(X509_ACERT *x, int nid, int type, + const void *bytes, int len); +int X509_ACERT_add1_attr_by_txt(X509_ACERT *x, const char *attrname, int type, + const unsigned char *bytes, int len); +int X509_ACERT_add_attr_nconf(CONF *conf, const char *section, + X509_ACERT *acert); + +int X509_ACERT_set1_issuerName(X509_ACERT *x, const X509_NAME *name); +int X509_ACERT_set1_serialNumber(X509_ACERT *x, const ASN1_INTEGER *serial); +int X509_ACERT_set1_notBefore(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); +int X509_ACERT_set1_notAfter(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); + +void OSSL_OBJECT_DIGEST_INFO_get0_digest(const OSSL_OBJECT_DIGEST_INFO *o, + int *digestedObjectType, + const X509_ALGOR **digestAlgorithm, + const ASN1_BIT_STRING **digest); + +int OSSL_OBJECT_DIGEST_INFO_set1_digest(OSSL_OBJECT_DIGEST_INFO *o, + int digestedObjectType, + X509_ALGOR *digestAlgorithm, + ASN1_BIT_STRING *digest); + +const X509_NAME *OSSL_ISSUER_SERIAL_get0_issuer(const OSSL_ISSUER_SERIAL *isss); +const ASN1_INTEGER *OSSL_ISSUER_SERIAL_get0_serial(const OSSL_ISSUER_SERIAL *isss); +const ASN1_BIT_STRING *OSSL_ISSUER_SERIAL_get0_issuerUID(const OSSL_ISSUER_SERIAL *isss); + +int OSSL_ISSUER_SERIAL_set1_issuer(OSSL_ISSUER_SERIAL *isss, + const X509_NAME *issuer); +int OSSL_ISSUER_SERIAL_set1_serial(OSSL_ISSUER_SERIAL *isss, + const ASN1_INTEGER *serial); +int OSSL_ISSUER_SERIAL_set1_issuerUID(OSSL_ISSUER_SERIAL *isss, + const ASN1_BIT_STRING *uid); + +# define OSSL_IETFAS_OCTETS 0 +# define OSSL_IETFAS_OID 1 +# define OSSL_IETFAS_STRING 2 + +typedef struct OSSL_IETF_ATTR_SYNTAX_VALUE_st OSSL_IETF_ATTR_SYNTAX_VALUE; +typedef struct OSSL_IETF_ATTR_SYNTAX_st OSSL_IETF_ATTR_SYNTAX; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_value(sk, idx) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new(cmp) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_null() ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (n)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete(sk, i) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (i))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete_ptr(sk, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_pop(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_shift(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_shift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk),ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), (idx)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set(sk, idx, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_set(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), pnum) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_dup(sk) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_copyfunc_type(copyfunc), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set_cmp_func(sk, cmp) ((sk_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) + + +DECLARE_ASN1_ITEM(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX) + +const GENERAL_NAMES * +OSSL_IETF_ATTR_SYNTAX_get0_policyAuthority(const OSSL_IETF_ATTR_SYNTAX *a); +void OSSL_IETF_ATTR_SYNTAX_set0_policyAuthority(OSSL_IETF_ATTR_SYNTAX *a, + GENERAL_NAMES *names); + +int OSSL_IETF_ATTR_SYNTAX_get_value_num(const OSSL_IETF_ATTR_SYNTAX *a); +void *OSSL_IETF_ATTR_SYNTAX_get0_value(const OSSL_IETF_ATTR_SYNTAX *a, + int ind, int *type); +int OSSL_IETF_ATTR_SYNTAX_add1_value(OSSL_IETF_ATTR_SYNTAX *a, int type, + void *data); +int OSSL_IETF_ATTR_SYNTAX_print(BIO *bp, OSSL_IETF_ATTR_SYNTAX *a, int indent); + +struct TARGET_CERT_st { + OSSL_ISSUER_SERIAL *targetCertificate; + GENERAL_NAME *targetName; + OSSL_OBJECT_DIGEST_INFO *certDigestInfo; +}; + +typedef struct TARGET_CERT_st OSSL_TARGET_CERT; + +# define OSSL_TGT_TARGET_NAME 0 +# define OSSL_TGT_TARGET_GROUP 1 +# define OSSL_TGT_TARGET_CERT 2 + +typedef struct TARGET_st { + int type; + union { + GENERAL_NAME *targetName; + GENERAL_NAME *targetGroup; + OSSL_TARGET_CERT *targetCert; + } choice; +} OSSL_TARGET; + +typedef STACK_OF(OSSL_TARGET) OSSL_TARGETS; +typedef STACK_OF(OSSL_TARGETS) OSSL_TARGETING_INFORMATION; + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGET, OSSL_TARGET, OSSL_TARGET) +#define sk_OSSL_TARGET_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_value(sk, idx) ((OSSL_TARGET *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGET_sk_type(sk), (idx))) +#define sk_OSSL_TARGET_new(cmp) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new(ossl_check_OSSL_TARGET_compfunc_type(cmp))) +#define sk_OSSL_TARGET_new_null() ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGET_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGET_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGET_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGET_sk_type(sk), (n)) +#define sk_OSSL_TARGET_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_delete(sk, i) ((OSSL_TARGET *)OPENSSL_sk_delete(ossl_check_OSSL_TARGET_sk_type(sk), (i))) +#define sk_OSSL_TARGET_delete_ptr(sk, ptr) ((OSSL_TARGET *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_pop(sk) ((OSSL_TARGET *)OPENSSL_sk_pop(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_shift(sk) ((OSSL_TARGET *)OPENSSL_sk_shift(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGET_sk_type(sk),ossl_check_OSSL_TARGET_freefunc_type(freefunc)) +#define sk_OSSL_TARGET_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), (idx)) +#define sk_OSSL_TARGET_set(sk, idx, ptr) ((OSSL_TARGET *)OPENSSL_sk_set(ossl_check_OSSL_TARGET_sk_type(sk), (idx), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), pnum) +#define sk_OSSL_TARGET_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_dup(sk) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_copyfunc_type(copyfunc), ossl_check_OSSL_TARGET_freefunc_type(freefunc))) +#define sk_OSSL_TARGET_set_cmp_func(sk, cmp) ((sk_OSSL_TARGET_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGETS, OSSL_TARGETS, OSSL_TARGETS) +#define sk_OSSL_TARGETS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_value(sk, idx) ((OSSL_TARGETS *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGETS_sk_type(sk), (idx))) +#define sk_OSSL_TARGETS_new(cmp) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new(ossl_check_OSSL_TARGETS_compfunc_type(cmp))) +#define sk_OSSL_TARGETS_new_null() ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGETS_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGETS_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGETS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGETS_sk_type(sk), (n)) +#define sk_OSSL_TARGETS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_delete(sk, i) ((OSSL_TARGETS *)OPENSSL_sk_delete(ossl_check_OSSL_TARGETS_sk_type(sk), (i))) +#define sk_OSSL_TARGETS_delete_ptr(sk, ptr) ((OSSL_TARGETS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_pop(sk) ((OSSL_TARGETS *)OPENSSL_sk_pop(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_shift(sk) ((OSSL_TARGETS *)OPENSSL_sk_shift(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGETS_sk_type(sk),ossl_check_OSSL_TARGETS_freefunc_type(freefunc)) +#define sk_OSSL_TARGETS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), (idx)) +#define sk_OSSL_TARGETS_set(sk, idx, ptr) ((OSSL_TARGETS *)OPENSSL_sk_set(ossl_check_OSSL_TARGETS_sk_type(sk), (idx), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), pnum) +#define sk_OSSL_TARGETS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_dup(sk) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_copyfunc_type(copyfunc), ossl_check_OSSL_TARGETS_freefunc_type(freefunc))) +#define sk_OSSL_TARGETS_set_cmp_func(sk, cmp) ((sk_OSSL_TARGETS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_compfunc_type(cmp))) + + +DECLARE_ASN1_FUNCTIONS(OSSL_TARGET) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETS) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETING_INFORMATION) + +typedef STACK_OF(OSSL_ISSUER_SERIAL) OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL) +#define sk_OSSL_ISSUER_SERIAL_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_value(sk, idx) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_value(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), (idx))) +#define sk_OSSL_ISSUER_SERIAL_new(cmp) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) +#define sk_OSSL_ISSUER_SERIAL_new_null() ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ISSUER_SERIAL_new_reserve(cmp, n) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp), (n))) +#define sk_OSSL_ISSUER_SERIAL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (n)) +#define sk_OSSL_ISSUER_SERIAL_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_delete(sk, i) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (i))) +#define sk_OSSL_ISSUER_SERIAL_delete_ptr(sk, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_pop(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_pop(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_shift(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_shift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk),ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc)) +#define sk_OSSL_ISSUER_SERIAL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), (idx)) +#define sk_OSSL_ISSUER_SERIAL_set(sk, idx, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_set(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (idx), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), pnum) +#define sk_OSSL_ISSUER_SERIAL_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_dup(sk) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_copyfunc_type(copyfunc), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc))) +#define sk_OSSL_ISSUER_SERIAL_set_cmp_func(sk, cmp) ((sk_OSSL_ISSUER_SERIAL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) + + +#endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/x509_vfy.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/x509_vfy.h index 29b0e147adcab1..c9bdc3b39d685d 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/x509_vfy.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/x509_vfy.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509_vfy.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -411,6 +411,7 @@ X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ # define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 # define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 # define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +# define X509_V_ERR_RPK_UNTRUSTED 95 /* Certificate verify flags */ # ifndef OPENSSL_NO_DEPRECATED_1_1_0 @@ -491,71 +492,72 @@ int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); X509_STORE *X509_STORE_new(void); -void X509_STORE_free(X509_STORE *v); -int X509_STORE_lock(X509_STORE *ctx); -int X509_STORE_unlock(X509_STORE *ctx); -int X509_STORE_up_ref(X509_STORE *v); -STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *v); -STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *st); -STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get1_objects(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, const X509_NAME *nm); STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, const X509_NAME *nm); -int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); -int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); -int X509_STORE_set_trust(X509_STORE *ctx, int trust); -int X509_STORE_set1_param(X509_STORE *ctx, const X509_VERIFY_PARAM *pm); -X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *ctx); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); -void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); #define X509_STORE_set_verify_func(ctx, func) \ X509_STORE_set_verify((ctx),(func)) void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, X509_STORE_CTX_verify_fn verify); -X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *ctx); -void X509_STORE_set_verify_cb(X509_STORE *ctx, +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, X509_STORE_CTX_verify_cb verify_cb); # define X509_STORE_set_verify_cb_func(ctx,func) \ X509_STORE_set_verify_cb((ctx),(func)) -X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *ctx); -void X509_STORE_set_get_issuer(X509_STORE *ctx, +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, X509_STORE_CTX_get_issuer_fn get_issuer); -X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *ctx); -void X509_STORE_set_check_issued(X509_STORE *ctx, +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, X509_STORE_CTX_check_issued_fn check_issued); -X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *ctx); -void X509_STORE_set_check_revocation(X509_STORE *ctx, +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, X509_STORE_CTX_check_revocation_fn check_revocation); X509_STORE_CTX_check_revocation_fn - X509_STORE_get_check_revocation(const X509_STORE *ctx); -void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, X509_STORE_CTX_get_crl_fn get_crl); -X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *ctx); -void X509_STORE_set_check_crl(X509_STORE *ctx, +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, X509_STORE_CTX_check_crl_fn check_crl); -X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *ctx); -void X509_STORE_set_cert_crl(X509_STORE *ctx, +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, X509_STORE_CTX_cert_crl_fn cert_crl); -X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *ctx); -void X509_STORE_set_check_policy(X509_STORE *ctx, +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, X509_STORE_CTX_check_policy_fn check_policy); -X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *ctx); -void X509_STORE_set_lookup_certs(X509_STORE *ctx, +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, X509_STORE_CTX_lookup_certs_fn lookup_certs); -X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *ctx); -void X509_STORE_set_lookup_crls(X509_STORE *ctx, +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, X509_STORE_CTX_lookup_crls_fn lookup_crls); #define X509_STORE_set_lookup_crls_cb(ctx, func) \ X509_STORE_set_lookup_crls((ctx), (func)) -X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *ctx); -void X509_STORE_set_cleanup(X509_STORE *ctx, +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, X509_STORE_CTX_cleanup_fn cleanup); -X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); #define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) -int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); -void *X509_STORE_get_ex_data(const X509_STORE *ctx, int idx); +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); X509_STORE_CTX *X509_STORE_CTX_new(void); @@ -565,11 +567,14 @@ int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); void X509_STORE_CTX_free(X509_STORE_CTX *ctx); int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY* rpk); void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, @@ -579,6 +584,8 @@ X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); @@ -600,7 +607,7 @@ X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); # define X509_STORE_get1_crl X509_STORE_CTX_get1_crls #endif -X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); X509_LOOKUP_METHOD *X509_LOOKUP_file(void); X509_LOOKUP_METHOD *X509_LOOKUP_store(void); @@ -685,8 +692,8 @@ X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( const X509_LOOKUP_METHOD *method); -int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); -int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, @@ -730,23 +737,21 @@ void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); -int X509_STORE_load_file(X509_STORE *ctx, const char *file); -int X509_STORE_load_path(X509_STORE *ctx, const char *path); -int X509_STORE_load_store(X509_STORE *ctx, const char *store); -int X509_STORE_load_locations(X509_STORE *ctx, - const char *file, - const char *dir); -int X509_STORE_set_default_paths(X509_STORE *ctx); +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); -int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file, +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_store_ex(X509_STORE *ctx, const char *store, +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file, - const char *dir, OSSL_LIB_CTX *libctx, - const char *propq); -int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OSSL_LIB_CTX *libctx, - const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); #define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) @@ -764,6 +769,7 @@ X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); @@ -773,6 +779,8 @@ int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); @@ -804,6 +812,7 @@ int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, unsigned long flags); unsigned long X509_VERIFY_PARAM_get_flags(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_get_purpose(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/x509v3.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/x509v3.h index 20b67455f2061d..b8dabac35a4915 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/x509v3.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/x509v3.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509v3.h.in * - * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -146,6 +149,11 @@ typedef struct BASIC_CONSTRAINTS_st { ASN1_INTEGER *pathlen; } BASIC_CONSTRAINTS; +typedef struct OSSL_BASIC_ATTR_CONSTRAINTS_st { + int authority; + ASN1_INTEGER *pathlen; +} OSSL_BASIC_ATTR_CONSTRAINTS; + typedef struct PKEY_USAGE_PERIOD_st { ASN1_GENERALIZEDTIME *notBefore; ASN1_GENERALIZEDTIME *notAfter; @@ -198,6 +206,8 @@ typedef struct ACCESS_DESCRIPTION_st { GENERAL_NAME *location; } ACCESS_DESCRIPTION; +int GENERAL_NAME_set1_X509_NAME(GENERAL_NAME **tgt, const X509_NAME *src); + SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) #define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) #define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) @@ -294,6 +304,7 @@ typedef struct DIST_POINT_NAME_st { /* If relativename then this contains the full distribution point name */ X509_NAME *dpname; } DIST_POINT_NAME; +DECLARE_ASN1_DUP_FUNCTION(DIST_POINT_NAME) /* All existing reasons */ # define CRLDP_ALL_REASONS 0x807f @@ -659,15 +670,16 @@ struct ISSUING_DIST_POINT_st { # define EXFLAG_SAN_CRITICAL 0x80000 # define EXFLAG_NO_FINGERPRINT 0x100000 -# define KU_DIGITAL_SIGNATURE 0x0080 -# define KU_NON_REPUDIATION 0x0040 -# define KU_KEY_ENCIPHERMENT 0x0020 -# define KU_DATA_ENCIPHERMENT 0x0010 -# define KU_KEY_AGREEMENT 0x0008 -# define KU_KEY_CERT_SIGN 0x0004 -# define KU_CRL_SIGN 0x0002 -# define KU_ENCIPHER_ONLY 0x0001 -# define KU_DECIPHER_ONLY 0x8000 +/* https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3 */ +# define KU_DIGITAL_SIGNATURE X509v3_KU_DIGITAL_SIGNATURE +# define KU_NON_REPUDIATION X509v3_KU_NON_REPUDIATION +# define KU_KEY_ENCIPHERMENT X509v3_KU_KEY_ENCIPHERMENT +# define KU_DATA_ENCIPHERMENT X509v3_KU_DATA_ENCIPHERMENT +# define KU_KEY_AGREEMENT X509v3_KU_KEY_AGREEMENT +# define KU_KEY_CERT_SIGN X509v3_KU_KEY_CERT_SIGN +# define KU_CRL_SIGN X509v3_KU_CRL_SIGN +# define KU_ENCIPHER_ONLY X509v3_KU_ENCIPHER_ONLY +# define KU_DECIPHER_ONLY X509v3_KU_DECIPHER_ONLY # define NS_SSL_CLIENT 0x80 # define NS_SSL_SERVER 0x40 @@ -729,7 +741,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) #define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) - +# define X509_PURPOSE_DEFAULT_ANY 0 # define X509_PURPOSE_SSL_CLIENT 1 # define X509_PURPOSE_SSL_SERVER 2 # define X509_PURPOSE_NS_SSL_SERVER 3 @@ -739,9 +751,10 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509_PURPOSE_ANY 7 # define X509_PURPOSE_OCSP_HELPER 8 # define X509_PURPOSE_TIMESTAMP_SIGN 9 +# define X509_PURPOSE_CODE_SIGN 10 # define X509_PURPOSE_MIN 1 -# define X509_PURPOSE_MAX 9 +# define X509_PURPOSE_MAX 10 /* Flags for X509V3_EXT_print() */ @@ -767,6 +780,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509V3_ADD_SILENT 0x10 DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) +DECLARE_ASN1_FUNCTIONS(OSSL_BASIC_ATTR_CONSTRAINTS) DECLARE_ASN1_FUNCTIONS(SXNET) DECLARE_ASN1_FUNCTIONS(SXNETID) @@ -976,7 +990,6 @@ int X509V3_extensions_print(BIO *out, const char *title, int X509_check_ca(X509 *x); int X509_check_purpose(X509 *x, int id, int ca); int X509_supported_extension(X509_EXTENSION *ex); -int X509_PURPOSE_set(int *p, int purpose); int X509_check_issued(X509 *issuer, X509 *subject); int X509_check_akid(const X509 *issuer, const AUTHORITY_KEYID *akid); void X509_set_proxy_flag(X509 *x); @@ -992,22 +1005,26 @@ const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); int X509_PURPOSE_get_count(void); -X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_unused_id(OSSL_LIB_CTX *libctx); int X509_PURPOSE_get_by_sname(const char *sname); int X509_PURPOSE_get_by_id(int id); int X509_PURPOSE_add(int id, int trust, int flags, int (*ck) (const X509_PURPOSE *, const X509 *, int), const char *name, const char *sname, void *arg); +void X509_PURPOSE_cleanup(void); + +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_id(const X509_PURPOSE *); char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); -void X509_PURPOSE_cleanup(void); -int X509_PURPOSE_get_id(const X509_PURPOSE *); +int X509_PURPOSE_set(int *p, int purpose); STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); + /* Flags for X509_check_* functions */ /* @@ -1444,6 +1461,507 @@ const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( void PROFESSION_INFO_set0_registrationNumber( PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); +int OSSL_GENERAL_NAMES_print(BIO *out, GENERAL_NAMES *gens, int indent); + +typedef STACK_OF(X509_ATTRIBUTE) OSSL_ATTRIBUTES_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTES_SYNTAX) + +typedef STACK_OF(USERNOTICE) OSSL_USER_NOTICE_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_USER_NOTICE_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(USERNOTICE, USERNOTICE, USERNOTICE) +#define sk_USERNOTICE_num(sk) OPENSSL_sk_num(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_value(sk, idx) ((USERNOTICE *)OPENSSL_sk_value(ossl_check_const_USERNOTICE_sk_type(sk), (idx))) +#define sk_USERNOTICE_new(cmp) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new(ossl_check_USERNOTICE_compfunc_type(cmp))) +#define sk_USERNOTICE_new_null() ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_null()) +#define sk_USERNOTICE_new_reserve(cmp, n) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_reserve(ossl_check_USERNOTICE_compfunc_type(cmp), (n))) +#define sk_USERNOTICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_USERNOTICE_sk_type(sk), (n)) +#define sk_USERNOTICE_free(sk) OPENSSL_sk_free(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_zero(sk) OPENSSL_sk_zero(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_delete(sk, i) ((USERNOTICE *)OPENSSL_sk_delete(ossl_check_USERNOTICE_sk_type(sk), (i))) +#define sk_USERNOTICE_delete_ptr(sk, ptr) ((USERNOTICE *)OPENSSL_sk_delete_ptr(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_pop(sk) ((USERNOTICE *)OPENSSL_sk_pop(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_shift(sk) ((USERNOTICE *)OPENSSL_sk_shift(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_USERNOTICE_sk_type(sk),ossl_check_USERNOTICE_freefunc_type(freefunc)) +#define sk_USERNOTICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), (idx)) +#define sk_USERNOTICE_set(sk, idx, ptr) ((USERNOTICE *)OPENSSL_sk_set(ossl_check_USERNOTICE_sk_type(sk), (idx), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), pnum) +#define sk_USERNOTICE_sort(sk) OPENSSL_sk_sort(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_dup(sk) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_dup(ossl_check_const_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_deep_copy(ossl_check_const_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_copyfunc_type(copyfunc), ossl_check_USERNOTICE_freefunc_type(freefunc))) +#define sk_USERNOTICE_set_cmp_func(sk, cmp) ((sk_USERNOTICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_compfunc_type(cmp))) + + +typedef struct OSSL_ROLE_SPEC_CERT_ID_st { + GENERAL_NAME *roleName; + GENERAL_NAME *roleCertIssuer; + ASN1_INTEGER *roleCertSerialNumber; + GENERAL_NAMES *roleCertLocator; +} OSSL_ROLE_SPEC_CERT_ID; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID) +#define sk_OSSL_ROLE_SPEC_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_value(sk, idx) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_value(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new(cmp) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_null() ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_reserve(cmp, n) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp), (n))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (n)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete(sk, i) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (i))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete_ptr(sk, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_pop(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_shift(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_shift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk),ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), (idx)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set(sk, idx, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_set(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), pnum) +#define sk_OSSL_ROLE_SPEC_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_dup(sk) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_copyfunc_type(copyfunc), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set_cmp_func(sk, cmp) ((sk_OSSL_ROLE_SPEC_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) + + +typedef STACK_OF(OSSL_ROLE_SPEC_CERT_ID) OSSL_ROLE_SPEC_CERT_ID_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID_SYNTAX) +typedef struct OSSL_HASH_st { + X509_ALGOR *algorithmIdentifier; + ASN1_BIT_STRING *hashValue; +} OSSL_HASH; + +typedef struct OSSL_INFO_SYNTAX_POINTER_st { + GENERAL_NAMES *name; + OSSL_HASH *hash; +} OSSL_INFO_SYNTAX_POINTER; + +# define OSSL_INFO_SYNTAX_TYPE_CONTENT 0 +# define OSSL_INFO_SYNTAX_TYPE_POINTER 1 + +typedef struct OSSL_INFO_SYNTAX_st { + int type; + union { + ASN1_STRING *content; + OSSL_INFO_SYNTAX_POINTER *pointer; + } choice; +} OSSL_INFO_SYNTAX; + +typedef struct OSSL_PRIVILEGE_POLICY_ID_st { + ASN1_OBJECT *privilegePolicy; + OSSL_INFO_SYNTAX *privPolSyntax; +} OSSL_PRIVILEGE_POLICY_ID; + +typedef struct OSSL_ATTRIBUTE_DESCRIPTOR_st { + ASN1_OBJECT *identifier; + ASN1_STRING *attributeSyntax; + ASN1_UTF8STRING *name; + ASN1_UTF8STRING *description; + OSSL_PRIVILEGE_POLICY_ID *dominationRule; +} OSSL_ATTRIBUTE_DESCRIPTOR; + +DECLARE_ASN1_FUNCTIONS(OSSL_HASH) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX_POINTER) +DECLARE_ASN1_FUNCTIONS(OSSL_PRIVILEGE_POLICY_ID) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_DESCRIPTOR) + +typedef struct OSSL_TIME_SPEC_ABSOLUTE_st { + ASN1_GENERALIZEDTIME *startTime; + ASN1_GENERALIZEDTIME *endTime; +} OSSL_TIME_SPEC_ABSOLUTE; + +typedef struct OSSL_DAY_TIME_st { + ASN1_INTEGER *hour; + ASN1_INTEGER *minute; + ASN1_INTEGER *second; +} OSSL_DAY_TIME; + +typedef struct OSSL_DAY_TIME_BAND_st { + OSSL_DAY_TIME *startDayTime; + OSSL_DAY_TIME *endDayTime; +} OSSL_DAY_TIME_BAND; + +# define OSSL_NAMED_DAY_TYPE_INT 0 +# define OSSL_NAMED_DAY_TYPE_BIT 1 +# define OSSL_NAMED_DAY_INT_SUN 1 +# define OSSL_NAMED_DAY_INT_MON 2 +# define OSSL_NAMED_DAY_INT_TUE 3 +# define OSSL_NAMED_DAY_INT_WED 4 +# define OSSL_NAMED_DAY_INT_THU 5 +# define OSSL_NAMED_DAY_INT_FRI 6 +# define OSSL_NAMED_DAY_INT_SAT 7 +# define OSSL_NAMED_DAY_BIT_SUN 0 +# define OSSL_NAMED_DAY_BIT_MON 1 +# define OSSL_NAMED_DAY_BIT_TUE 2 +# define OSSL_NAMED_DAY_BIT_WED 3 +# define OSSL_NAMED_DAY_BIT_THU 4 +# define OSSL_NAMED_DAY_BIT_FRI 5 +# define OSSL_NAMED_DAY_BIT_SAT 6 + +typedef struct OSSL_NAMED_DAY_st { + int type; + union { + ASN1_INTEGER *intNamedDays; + ASN1_BIT_STRING *bitNamedDays; + } choice; +} OSSL_NAMED_DAY; + +# define OSSL_TIME_SPEC_X_DAY_OF_FIRST 0 +# define OSSL_TIME_SPEC_X_DAY_OF_SECOND 1 +# define OSSL_TIME_SPEC_X_DAY_OF_THIRD 2 +# define OSSL_TIME_SPEC_X_DAY_OF_FOURTH 3 +# define OSSL_TIME_SPEC_X_DAY_OF_FIFTH 4 + +typedef struct OSSL_TIME_SPEC_X_DAY_OF_st { + int type; + union { + OSSL_NAMED_DAY *first; + OSSL_NAMED_DAY *second; + OSSL_NAMED_DAY *third; + OSSL_NAMED_DAY *fourth; + OSSL_NAMED_DAY *fifth; + } choice; +} OSSL_TIME_SPEC_X_DAY_OF; + +# define OSSL_TIME_SPEC_DAY_TYPE_INT 0 +# define OSSL_TIME_SPEC_DAY_TYPE_BIT 1 +# define OSSL_TIME_SPEC_DAY_TYPE_DAY_OF 2 +# define OSSL_TIME_SPEC_DAY_BIT_SUN 0 +# define OSSL_TIME_SPEC_DAY_BIT_MON 1 +# define OSSL_TIME_SPEC_DAY_BIT_TUE 2 +# define OSSL_TIME_SPEC_DAY_BIT_WED 3 +# define OSSL_TIME_SPEC_DAY_BIT_THU 4 +# define OSSL_TIME_SPEC_DAY_BIT_FRI 5 +# define OSSL_TIME_SPEC_DAY_BIT_SAT 6 +# define OSSL_TIME_SPEC_DAY_INT_SUN 1 +# define OSSL_TIME_SPEC_DAY_INT_MON 2 +# define OSSL_TIME_SPEC_DAY_INT_TUE 3 +# define OSSL_TIME_SPEC_DAY_INT_WED 4 +# define OSSL_TIME_SPEC_DAY_INT_THU 5 +# define OSSL_TIME_SPEC_DAY_INT_FRI 6 +# define OSSL_TIME_SPEC_DAY_INT_SAT 7 + +typedef struct OSSL_TIME_SPEC_DAY_st { + int type; + union { + STACK_OF(ASN1_INTEGER) *intDay; + ASN1_BIT_STRING *bitDay; + OSSL_TIME_SPEC_X_DAY_OF *dayOf; + } choice; +} OSSL_TIME_SPEC_DAY; + +# define OSSL_TIME_SPEC_WEEKS_TYPE_ALL 0 +# define OSSL_TIME_SPEC_WEEKS_TYPE_INT 1 +# define OSSL_TIME_SPEC_WEEKS_TYPE_BIT 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_1 0 +# define OSSL_TIME_SPEC_BIT_WEEKS_2 1 +# define OSSL_TIME_SPEC_BIT_WEEKS_3 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_4 3 +# define OSSL_TIME_SPEC_BIT_WEEKS_5 4 + +typedef struct OSSL_TIME_SPEC_WEEKS_st { + int type; + union { + ASN1_NULL *allWeeks; + STACK_OF(ASN1_INTEGER) *intWeek; + ASN1_BIT_STRING *bitWeek; + } choice; +} OSSL_TIME_SPEC_WEEKS; + +# define OSSL_TIME_SPEC_MONTH_TYPE_ALL 0 +# define OSSL_TIME_SPEC_MONTH_TYPE_INT 1 +# define OSSL_TIME_SPEC_MONTH_TYPE_BIT 2 +# define OSSL_TIME_SPEC_INT_MONTH_JAN 1 +# define OSSL_TIME_SPEC_INT_MONTH_FEB 2 +# define OSSL_TIME_SPEC_INT_MONTH_MAR 3 +# define OSSL_TIME_SPEC_INT_MONTH_APR 4 +# define OSSL_TIME_SPEC_INT_MONTH_MAY 5 +# define OSSL_TIME_SPEC_INT_MONTH_JUN 6 +# define OSSL_TIME_SPEC_INT_MONTH_JUL 7 +# define OSSL_TIME_SPEC_INT_MONTH_AUG 8 +# define OSSL_TIME_SPEC_INT_MONTH_SEP 9 +# define OSSL_TIME_SPEC_INT_MONTH_OCT 10 +# define OSSL_TIME_SPEC_INT_MONTH_NOV 11 +# define OSSL_TIME_SPEC_INT_MONTH_DEC 12 +# define OSSL_TIME_SPEC_BIT_MONTH_JAN 0 +# define OSSL_TIME_SPEC_BIT_MONTH_FEB 1 +# define OSSL_TIME_SPEC_BIT_MONTH_MAR 2 +# define OSSL_TIME_SPEC_BIT_MONTH_APR 3 +# define OSSL_TIME_SPEC_BIT_MONTH_MAY 4 +# define OSSL_TIME_SPEC_BIT_MONTH_JUN 5 +# define OSSL_TIME_SPEC_BIT_MONTH_JUL 6 +# define OSSL_TIME_SPEC_BIT_MONTH_AUG 7 +# define OSSL_TIME_SPEC_BIT_MONTH_SEP 8 +# define OSSL_TIME_SPEC_BIT_MONTH_OCT 9 +# define OSSL_TIME_SPEC_BIT_MONTH_NOV 10 +# define OSSL_TIME_SPEC_BIT_MONTH_DEC 11 + +typedef struct OSSL_TIME_SPEC_MONTH_st { + int type; + union { + ASN1_NULL *allMonths; + STACK_OF(ASN1_INTEGER) *intMonth; + ASN1_BIT_STRING *bitMonth; + } choice; +} OSSL_TIME_SPEC_MONTH; + +typedef struct OSSL_TIME_PERIOD_st { + STACK_OF(OSSL_DAY_TIME_BAND) *timesOfDay; + OSSL_TIME_SPEC_DAY *days; + OSSL_TIME_SPEC_WEEKS *weeks; + OSSL_TIME_SPEC_MONTH *months; + STACK_OF(ASN1_INTEGER) *years; +} OSSL_TIME_PERIOD; + +# define OSSL_TIME_SPEC_TIME_TYPE_ABSOLUTE 0 +# define OSSL_TIME_SPEC_TIME_TYPE_PERIODIC 1 + +typedef struct OSSL_TIME_SPEC_TIME_st { + int type; + union { + OSSL_TIME_SPEC_ABSOLUTE *absolute; + STACK_OF(OSSL_TIME_PERIOD) *periodic; + } choice; +} OSSL_TIME_SPEC_TIME; + +typedef struct OSSL_TIME_SPEC_st { + OSSL_TIME_SPEC_TIME *time; + ASN1_BOOLEAN notThisTime; + ASN1_INTEGER *timeZone; +} OSSL_TIME_SPEC; + +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME_BAND) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_WEEKS) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_MONTH) +DECLARE_ASN1_FUNCTIONS(OSSL_NAMED_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_X_DAY_OF) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_ABSOLUTE) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_PERIOD) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TIME_PERIOD, OSSL_TIME_PERIOD, OSSL_TIME_PERIOD) +#define sk_OSSL_TIME_PERIOD_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_value(sk, idx) ((OSSL_TIME_PERIOD *)OPENSSL_sk_value(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), (idx))) +#define sk_OSSL_TIME_PERIOD_new(cmp) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) +#define sk_OSSL_TIME_PERIOD_new_null() ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TIME_PERIOD_new_reserve(cmp, n) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp), (n))) +#define sk_OSSL_TIME_PERIOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (n)) +#define sk_OSSL_TIME_PERIOD_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_delete(sk, i) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (i))) +#define sk_OSSL_TIME_PERIOD_delete_ptr(sk, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_pop(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_pop(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_shift(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_shift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk),ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc)) +#define sk_OSSL_TIME_PERIOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), (idx)) +#define sk_OSSL_TIME_PERIOD_set(sk, idx, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_set(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (idx), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), pnum) +#define sk_OSSL_TIME_PERIOD_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_dup(sk) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_copyfunc_type(copyfunc), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc))) +#define sk_OSSL_TIME_PERIOD_set_cmp_func(sk, cmp) ((sk_OSSL_TIME_PERIOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND) +#define sk_OSSL_DAY_TIME_BAND_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_value(sk, idx) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_value(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), (idx))) +#define sk_OSSL_DAY_TIME_BAND_new(cmp) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) +#define sk_OSSL_DAY_TIME_BAND_new_null() ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_null()) +#define sk_OSSL_DAY_TIME_BAND_new_reserve(cmp, n) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp), (n))) +#define sk_OSSL_DAY_TIME_BAND_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (n)) +#define sk_OSSL_DAY_TIME_BAND_free(sk) OPENSSL_sk_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_delete(sk, i) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (i))) +#define sk_OSSL_DAY_TIME_BAND_delete_ptr(sk, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_pop(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_pop(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_shift(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_shift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk),ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc)) +#define sk_OSSL_DAY_TIME_BAND_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), (idx)) +#define sk_OSSL_DAY_TIME_BAND_set(sk, idx, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_set(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (idx), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), pnum) +#define sk_OSSL_DAY_TIME_BAND_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_dup(sk) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_dup(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_copyfunc_type(copyfunc), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc))) +#define sk_OSSL_DAY_TIME_BAND_set_cmp_func(sk, cmp) ((sk_OSSL_DAY_TIME_BAND_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) + + +/* Attribute Type and Value */ +typedef struct atav_st { + ASN1_OBJECT *type; + ASN1_TYPE *value; +} OSSL_ATAV; + +typedef struct ATTRIBUTE_TYPE_MAPPING_st { + ASN1_OBJECT *local; + ASN1_OBJECT *remote; +} OSSL_ATTRIBUTE_TYPE_MAPPING; + +typedef struct ATTRIBUTE_VALUE_MAPPING_st { + OSSL_ATAV *local; + OSSL_ATAV *remote; +} OSSL_ATTRIBUTE_VALUE_MAPPING; + +# define OSSL_ATTR_MAP_TYPE 0 +# define OSSL_ATTR_MAP_VALUE 1 + +typedef struct ATTRIBUTE_MAPPING_st { + int type; + union { + OSSL_ATTRIBUTE_TYPE_MAPPING *typeMappings; + OSSL_ATTRIBUTE_VALUE_MAPPING *typeValueMappings; + } choice; +} OSSL_ATTRIBUTE_MAPPING; + +typedef STACK_OF(OSSL_ATTRIBUTE_MAPPING) OSSL_ATTRIBUTE_MAPPINGS; +DECLARE_ASN1_FUNCTIONS(OSSL_ATAV) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_TYPE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_VALUE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPINGS) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING) +#define sk_OSSL_ATTRIBUTE_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_value(sk, idx) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_value(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new(cmp) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_null() ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_reserve(cmp, n) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp), (n))) +#define sk_OSSL_ATTRIBUTE_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (n)) +#define sk_OSSL_ATTRIBUTE_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete(sk, i) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (i))) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete_ptr(sk, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_pop(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_shift(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_shift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk),ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc)) +#define sk_OSSL_ATTRIBUTE_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), (idx)) +#define sk_OSSL_ATTRIBUTE_MAPPING_set(sk, idx, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_set(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), pnum) +#define sk_OSSL_ATTRIBUTE_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_dup(sk) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_copyfunc_type(copyfunc), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc))) +#define sk_OSSL_ATTRIBUTE_MAPPING_set_cmp_func(sk, cmp) ((sk_OSSL_ATTRIBUTE_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) + + +# define OSSL_AAA_ATTRIBUTE_TYPE 0 +# define OSSL_AAA_ATTRIBUTE_VALUES 1 + +typedef struct ALLOWED_ATTRIBUTES_CHOICE_st { + int type; + union { + ASN1_OBJECT *attributeType; + X509_ATTRIBUTE *attributeTypeandValues; + } choice; +} OSSL_ALLOWED_ATTRIBUTES_CHOICE; + +typedef struct ALLOWED_ATTRIBUTES_ITEM_st { + STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *attributes; + GENERAL_NAME *holderDomain; +} OSSL_ALLOWED_ATTRIBUTES_ITEM; + +typedef STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) OSSL_ALLOWED_ATTRIBUTES_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_CHOICE) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_ITEM) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) + + +typedef struct AA_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + int dp_reasons; + ASN1_BOOLEAN indirectCRL; + ASN1_BOOLEAN containsUserAttributeCerts; + ASN1_BOOLEAN containsAACerts; + ASN1_BOOLEAN containsSOAPublicKeyCerts; +} OSSL_AA_DIST_POINT; + +DECLARE_ASN1_FUNCTIONS(OSSL_AA_DIST_POINT) + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/progs.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/progs.h index be55f61503d405..1b62ec37dec130 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/progs.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/progs.h @@ -56,6 +56,7 @@ extern int s_client_main(int argc, char *argv[]); extern int s_server_main(int argc, char *argv[]); extern int s_time_main(int argc, char *argv[]); extern int sess_id_main(int argc, char *argv[]); +extern int skeyutl_main(int argc, char *argv[]); extern int smime_main(int argc, char *argv[]); extern int speed_main(int argc, char *argv[]); extern int spkac_main(int argc, char *argv[]); @@ -110,6 +111,7 @@ extern const OPTIONS s_client_options[]; extern const OPTIONS s_server_options[]; extern const OPTIONS s_time_options[]; extern const OPTIONS sess_id_options[]; +extern const OPTIONS skeyutl_options[]; extern const OPTIONS smime_options[]; extern const OPTIONS speed_options[]; extern const OPTIONS spkac_options[]; diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/openssl-cl.gypi b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/openssl-cl.gypi index 0a8c078a8c59ba..81147b9497d640 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/openssl-cl.gypi +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/openssl-cl.gypi @@ -72,6 +72,7 @@ 'openssl/apps/s_server.c', 'openssl/apps/s_time.c', 'openssl/apps/sess_id.c', + 'openssl/apps/skeyutl.c', 'openssl/apps/smime.c', 'openssl/apps/speed.c', 'openssl/apps/spkac.c', @@ -87,12 +88,14 @@ 'openssl/apps/lib/app_rand.c', 'openssl/apps/lib/app_x509.c', 'openssl/apps/lib/apps.c', + 'openssl/apps/lib/apps_opt_printf.c', 'openssl/apps/lib/apps_ui.c', 'openssl/apps/lib/columns.c', 'openssl/apps/lib/engine.c', 'openssl/apps/lib/engine_loader.c', 'openssl/apps/lib/fmt.c', 'openssl/apps/lib/http_server.c', + 'openssl/apps/lib/log.c', 'openssl/apps/lib/names.c', 'openssl/apps/lib/opt.c', 'openssl/apps/lib/s_cb.c', diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/openssl-fips.gypi b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/openssl-fips.gypi index 275d88b584e7a5..cc4851d83f0c9d 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/openssl-fips.gypi +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/openssl-fips.gypi @@ -102,14 +102,15 @@ 'openssl/crypto/evp/kem.c', 'openssl/crypto/evp/keymgmt_lib.c', 'openssl/crypto/evp/keymgmt_meth.c', - 'openssl/crypto/evp/m_sigver.c', 'openssl/crypto/evp/mac_lib.c', 'openssl/crypto/evp/mac_meth.c', 'openssl/crypto/evp/p_lib.c', 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -117,6 +118,8 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', @@ -147,6 +150,16 @@ 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -155,6 +168,7 @@ 'openssl/crypto/modes/ofb128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/property/defn_cache.c', 'openssl/crypto/property/property.c', 'openssl/crypto/property/property_parse.c', @@ -183,7 +197,23 @@ 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', 'openssl/crypto/sha/sha_ppc.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/stack/stack.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/providers/common/der/der_rsa_sig.c', 'openssl/providers/common/bio_prov.c', 'openssl/providers/common/capabilities.c', @@ -192,6 +222,7 @@ 'openssl/providers/common/provider_util.c', 'openssl/providers/common/securitycheck.c', 'openssl/providers/common/securitycheck_fips.c', + 'openssl/providers/fips/fipsindicator.c', 'openssl/providers/fips/fipsprov.c', 'openssl/providers/fips/self_test.c', 'openssl/providers/fips/self_test_kats.c', @@ -229,6 +260,8 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -236,29 +269,39 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/cmac_prov.c', 'openssl/providers/implementations/macs/gmac_prov.c', 'openssl/providers/implementations/macs/hmac_prov.c', 'openssl/providers/implementations/macs/kmac_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', + 'openssl/providers/implementations/rands/fips_crng_test.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/signature/dsa_sig.c', 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -269,7 +312,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/fips/fips_entry.c', ], @@ -279,9 +322,11 @@ './config/archs/aix64-gcc-as/asm_avx2/crypto/aes/vpaes-ppc.s', './config/archs/aix64-gcc-as/asm_avx2/crypto/bn/bn-ppc.s', './config/archs/aix64-gcc-as/asm_avx2/crypto/bn/ppc-mont.s', + './config/archs/aix64-gcc-as/asm_avx2/crypto/bn/ppc64-mont-fixed.s', './config/archs/aix64-gcc-as/asm_avx2/crypto/chacha/chacha-ppc.s', './config/archs/aix64-gcc-as/asm_avx2/crypto/ec/ecp_nistz256-ppc64.s', './config/archs/aix64-gcc-as/asm_avx2/crypto/ec/x25519-ppc64.s', + './config/archs/aix64-gcc-as/asm_avx2/crypto/params_idx.c', './config/archs/aix64-gcc-as/asm_avx2/crypto/ppccpuid.s', './config/archs/aix64-gcc-as/asm_avx2/crypto/modes/ghashp8-ppc.s', './config/archs/aix64-gcc-as/asm_avx2/crypto/poly1305/poly1305-ppc.s', @@ -297,7 +342,9 @@ './config/archs/aix64-gcc-as/asm_avx2/providers/common/der/der_dsa_gen.c', './config/archs/aix64-gcc-as/asm_avx2/providers/common/der/der_ec_gen.c', './config/archs/aix64-gcc-as/asm_avx2/providers/common/der/der_ecx_gen.c', + './config/archs/aix64-gcc-as/asm_avx2/providers/common/der/der_ml_dsa_gen.c', './config/archs/aix64-gcc-as/asm_avx2/providers/common/der/der_rsa_gen.c', + './config/archs/aix64-gcc-as/asm_avx2/providers/common/der/der_slh_dsa_gen.c', './config/archs/aix64-gcc-as/asm_avx2/providers/common/der/der_wrap_gen.c', './config/archs/aix64-gcc-as/asm_avx2/providers/legacy.ld', './config/archs/aix64-gcc-as/asm_avx2/providers/fips.ld', diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/openssl.gypi b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/openssl.gypi index 912a5ae1d06017..e600553fcedaa7 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/openssl.gypi +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/openssl.gypi @@ -7,14 +7,15 @@ 'openssl/ssl/d1_srtp.c', 'openssl/ssl/methods.c', 'openssl/ssl/pqueue.c', + 'openssl/ssl/priority_queue.c', 'openssl/ssl/s3_enc.c', 'openssl/ssl/s3_lib.c', 'openssl/ssl/s3_msg.c', 'openssl/ssl/ssl_asn1.c', 'openssl/ssl/ssl_cert.c', + 'openssl/ssl/ssl_cert_comp.c', 'openssl/ssl/ssl_ciph.c', 'openssl/ssl/ssl_conf.c', - 'openssl/ssl/ssl_err.c', 'openssl/ssl/ssl_err_legacy.c', 'openssl/ssl/ssl_init.c', 'openssl/ssl/ssl_lib.c', @@ -31,12 +32,60 @@ 'openssl/ssl/tls13_enc.c', 'openssl/ssl/tls_depr.c', 'openssl/ssl/tls_srp.c', - 'openssl/ssl/record/dtls1_bitmap.c', + 'openssl/ssl/quic/cc_newreno.c', + 'openssl/ssl/quic/json_enc.c', + 'openssl/ssl/quic/qlog.c', + 'openssl/ssl/quic/qlog_event_helpers.c', + 'openssl/ssl/quic/quic_ackm.c', + 'openssl/ssl/quic/quic_cfq.c', + 'openssl/ssl/quic/quic_channel.c', + 'openssl/ssl/quic/quic_demux.c', + 'openssl/ssl/quic/quic_engine.c', + 'openssl/ssl/quic/quic_fc.c', + 'openssl/ssl/quic/quic_fifd.c', + 'openssl/ssl/quic/quic_impl.c', + 'openssl/ssl/quic/quic_lcidm.c', + 'openssl/ssl/quic/quic_method.c', + 'openssl/ssl/quic/quic_obj.c', + 'openssl/ssl/quic/quic_port.c', + 'openssl/ssl/quic/quic_rcidm.c', + 'openssl/ssl/quic/quic_reactor.c', + 'openssl/ssl/quic/quic_reactor_wait_ctx.c', + 'openssl/ssl/quic/quic_record_rx.c', + 'openssl/ssl/quic/quic_record_shared.c', + 'openssl/ssl/quic/quic_record_tx.c', + 'openssl/ssl/quic/quic_record_util.c', + 'openssl/ssl/quic/quic_rstream.c', + 'openssl/ssl/quic/quic_rx_depack.c', + 'openssl/ssl/quic/quic_sf_list.c', + 'openssl/ssl/quic/quic_srt_gen.c', + 'openssl/ssl/quic/quic_srtm.c', + 'openssl/ssl/quic/quic_sstream.c', + 'openssl/ssl/quic/quic_statm.c', + 'openssl/ssl/quic/quic_stream_map.c', + 'openssl/ssl/quic/quic_thread_assist.c', + 'openssl/ssl/quic/quic_tls.c', + 'openssl/ssl/quic/quic_tls_api.c', + 'openssl/ssl/quic/quic_trace.c', + 'openssl/ssl/quic/quic_tserver.c', + 'openssl/ssl/quic/quic_txp.c', + 'openssl/ssl/quic/quic_txpim.c', + 'openssl/ssl/quic/quic_types.c', + 'openssl/ssl/quic/quic_wire.c', + 'openssl/ssl/quic/quic_wire_pkt.c', + 'openssl/ssl/quic/uint_set.c', 'openssl/ssl/record/rec_layer_d1.c', 'openssl/ssl/record/rec_layer_s3.c', - 'openssl/ssl/record/ssl3_buffer.c', - 'openssl/ssl/record/ssl3_record.c', - 'openssl/ssl/record/ssl3_record_tls13.c', + 'openssl/ssl/record/methods/dtls_meth.c', + 'openssl/ssl/record/methods/ssl3_meth.c', + 'openssl/ssl/record/methods/tls13_meth.c', + 'openssl/ssl/record/methods/tls1_meth.c', + 'openssl/ssl/record/methods/tls_common.c', + 'openssl/ssl/record/methods/tls_multib.c', + 'openssl/ssl/record/methods/tlsany_meth.c', + 'openssl/ssl/rio/poll_builder.c', + 'openssl/ssl/rio/poll_immediate.c', + 'openssl/ssl/rio/rio_notifier.c', 'openssl/ssl/statem/extensions.c', 'openssl/ssl/statem/extensions_clnt.c', 'openssl/ssl/statem/extensions_cust.c', @@ -150,6 +199,7 @@ 'openssl/crypto/bio/bss_conn.c', 'openssl/crypto/bio/bss_core.c', 'openssl/crypto/bio/bss_dgram.c', + 'openssl/crypto/bio/bss_dgram_pair.c', 'openssl/crypto/bio/bss_fd.c', 'openssl/crypto/bio/bss_file.c', 'openssl/crypto/bio/bss_log.c', @@ -210,6 +260,7 @@ 'openssl/crypto/cmp/cmp_client.c', 'openssl/crypto/cmp/cmp_ctx.c', 'openssl/crypto/cmp/cmp_err.c', + 'openssl/crypto/cmp/cmp_genm.c', 'openssl/crypto/cmp/cmp_hdr.c', 'openssl/crypto/cmp/cmp_http.c', 'openssl/crypto/cmp/cmp_msg.c', @@ -387,7 +438,9 @@ 'openssl/crypto/err/err_all.c', 'openssl/crypto/err/err_all_legacy.c', 'openssl/crypto/err/err_blocks.c', + 'openssl/crypto/err/err_mark.c', 'openssl/crypto/err/err_prn.c', + 'openssl/crypto/err/err_save.c', 'openssl/crypto/ess/ess_asn1.c', 'openssl/crypto/ess/ess_err.c', 'openssl/crypto/ess/ess_lib.c', @@ -470,7 +523,9 @@ 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -478,7 +533,11 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', + 'openssl/crypto/hpke/hpke.c', + 'openssl/crypto/hpke/hpke_util.c', 'openssl/crypto/http/http_client.c', 'openssl/crypto/http/http_err.c', 'openssl/crypto/http/http_lib.c', @@ -492,6 +551,7 @@ 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', 'openssl/crypto/bsearch.c', + 'openssl/crypto/comp_methods.c', 'openssl/crypto/context.c', 'openssl/crypto/core_algorithm.c', 'openssl/crypto/core_fetch.c', @@ -501,10 +561,13 @@ 'openssl/crypto/cryptlib.c', 'openssl/crypto/ctype.c', 'openssl/crypto/cversion.c', + 'openssl/crypto/defaults.c', 'openssl/crypto/der_writer.c', + 'openssl/crypto/deterministic_nonce.c', 'openssl/crypto/ebcdic.c', 'openssl/crypto/ex_data.c', 'openssl/crypto/getenv.c', + 'openssl/crypto/indicator_core.c', 'openssl/crypto/info.c', 'openssl/crypto/init.c', 'openssl/crypto/initthread.c', @@ -529,12 +592,16 @@ 'openssl/crypto/provider_core.c', 'openssl/crypto/provider_predefined.c', 'openssl/crypto/punycode.c', + 'openssl/crypto/quic_vlint.c', 'openssl/crypto/self_test_core.c', + 'openssl/crypto/sleep.c', 'openssl/crypto/sparse_array.c', + 'openssl/crypto/ssl_err.c', 'openssl/crypto/threads_lib.c', 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', 'openssl/crypto/trace.c', 'openssl/crypto/uid.c', 'openssl/crypto/md4/md4_dgst.c', @@ -544,6 +611,15 @@ 'openssl/crypto/md5/md5_sha1.c', 'openssl/crypto/mdc2/mdc2_one.c', 'openssl/crypto/mdc2/mdc2dgst.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -555,6 +631,7 @@ 'openssl/crypto/modes/siv128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/objects/o_names.c', 'openssl/crypto/objects/obj_dat.c', 'openssl/crypto/objects/obj_err.c', @@ -619,6 +696,7 @@ 'openssl/crypto/rand/rand_lib.c', 'openssl/crypto/rand/rand_meth.c', 'openssl/crypto/rand/rand_pool.c', + 'openssl/crypto/rand/rand_uniform.c', 'openssl/crypto/rand/randfile.c', 'openssl/crypto/rc2/rc2_cbc.c', 'openssl/crypto/rc2/rc2_ecb.c', @@ -667,6 +745,16 @@ 'openssl/crypto/sha/sha512.c', 'openssl/crypto/sha/sha_ppc.c', 'openssl/crypto/siphash/siphash.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/sm2/sm2_crypt.c', 'openssl/crypto/sm2/sm2_err.c', 'openssl/crypto/sm2/sm2_key.c', @@ -684,6 +772,12 @@ 'openssl/crypto/store/store_register.c', 'openssl/crypto/store/store_result.c', 'openssl/crypto/store/store_strings.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/crypto/ts/ts_asn1.c', 'openssl/crypto/ts/ts_conf.c', 'openssl/crypto/ts/ts_err.c', @@ -712,14 +806,22 @@ 'openssl/crypto/x509/pcy_map.c', 'openssl/crypto/x509/pcy_node.c', 'openssl/crypto/x509/pcy_tree.c', + 'openssl/crypto/x509/t_acert.c', 'openssl/crypto/x509/t_crl.c', 'openssl/crypto/x509/t_req.c', 'openssl/crypto/x509/t_x509.c', + 'openssl/crypto/x509/v3_aaa.c', + 'openssl/crypto/x509/v3_ac_tgt.c', 'openssl/crypto/x509/v3_addr.c', 'openssl/crypto/x509/v3_admis.c', 'openssl/crypto/x509/v3_akeya.c', 'openssl/crypto/x509/v3_akid.c', 'openssl/crypto/x509/v3_asid.c', + 'openssl/crypto/x509/v3_attrdesc.c', + 'openssl/crypto/x509/v3_attrmap.c', + 'openssl/crypto/x509/v3_audit_id.c', + 'openssl/crypto/x509/v3_authattid.c', + 'openssl/crypto/x509/v3_battcons.c', 'openssl/crypto/x509/v3_bcons.c', 'openssl/crypto/x509/v3_bitst.c', 'openssl/crypto/x509/v3_conf.c', @@ -728,12 +830,17 @@ 'openssl/crypto/x509/v3_enum.c', 'openssl/crypto/x509/v3_extku.c', 'openssl/crypto/x509/v3_genn.c', + 'openssl/crypto/x509/v3_group_ac.c', 'openssl/crypto/x509/v3_ia5.c', + 'openssl/crypto/x509/v3_ind_iss.c', 'openssl/crypto/x509/v3_info.c', 'openssl/crypto/x509/v3_int.c', + 'openssl/crypto/x509/v3_iobo.c', 'openssl/crypto/x509/v3_ist.c', 'openssl/crypto/x509/v3_lib.c', 'openssl/crypto/x509/v3_ncons.c', + 'openssl/crypto/x509/v3_no_ass.c', + 'openssl/crypto/x509/v3_no_rev_avail.c', 'openssl/crypto/x509/v3_pci.c', 'openssl/crypto/x509/v3_pcia.c', 'openssl/crypto/x509/v3_pcons.c', @@ -741,13 +848,20 @@ 'openssl/crypto/x509/v3_pmaps.c', 'openssl/crypto/x509/v3_prn.c', 'openssl/crypto/x509/v3_purp.c', + 'openssl/crypto/x509/v3_rolespec.c', 'openssl/crypto/x509/v3_san.c', + 'openssl/crypto/x509/v3_sda.c', + 'openssl/crypto/x509/v3_single_use.c', 'openssl/crypto/x509/v3_skid.c', + 'openssl/crypto/x509/v3_soa_id.c', 'openssl/crypto/x509/v3_sxnet.c', + 'openssl/crypto/x509/v3_timespec.c', 'openssl/crypto/x509/v3_tlsf.c', + 'openssl/crypto/x509/v3_usernotice.c', 'openssl/crypto/x509/v3_utf8.c', 'openssl/crypto/x509/v3_utl.c', 'openssl/crypto/x509/v3err.c', + 'openssl/crypto/x509/x509_acert.c', 'openssl/crypto/x509/x509_att.c', 'openssl/crypto/x509/x509_cmp.c', 'openssl/crypto/x509/x509_d2.c', @@ -765,6 +879,7 @@ 'openssl/crypto/x509/x509_v3.c', 'openssl/crypto/x509/x509_vfy.c', 'openssl/crypto/x509/x509_vpm.c', + 'openssl/crypto/x509/x509aset.c', 'openssl/crypto/x509/x509cset.c', 'openssl/crypto/x509/x509name.c', 'openssl/crypto/x509/x509rset.c', @@ -774,6 +889,7 @@ 'openssl/crypto/x509/x_attrib.c', 'openssl/crypto/x509/x_crl.c', 'openssl/crypto/x509/x_exten.c', + 'openssl/crypto/x509/x_ietfatt.c', 'openssl/crypto/x509/x_name.c', 'openssl/crypto/x509/x_pubkey.c', 'openssl/crypto/x509/x_req.c', @@ -805,6 +921,9 @@ 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c', 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', @@ -829,7 +948,13 @@ 'openssl/providers/implementations/ciphers/cipher_cts.c', 'openssl/providers/implementations/ciphers/cipher_null.c', 'openssl/providers/implementations/ciphers/cipher_sm4.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm_hw.c', 'openssl/providers/implementations/ciphers/cipher_sm4_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts_hw.c', 'openssl/providers/implementations/ciphers/cipher_tdes.c', 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', 'openssl/providers/implementations/ciphers/cipher_tdes_default.c', @@ -858,11 +983,16 @@ 'openssl/providers/implementations/encode_decode/encode_key2ms.c', 'openssl/providers/implementations/encode_decode/encode_key2text.c', 'openssl/providers/implementations/encode_decode/endecoder_common.c', + 'openssl/providers/implementations/encode_decode/ml_common_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_dsa_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_kem_codecs.c', 'openssl/providers/implementations/exchange/dh_exch.c', 'openssl/providers/implementations/exchange/ecdh_exch.c', 'openssl/providers/implementations/exchange/ecx_exch.c', 'openssl/providers/implementations/exchange/kdf_exch.c', + 'openssl/providers/implementations/kdfs/argon2.c', 'openssl/providers/implementations/kdfs/hkdf.c', + 'openssl/providers/implementations/kdfs/hmacdrbg_kdf.c', 'openssl/providers/implementations/kdfs/kbkdf.c', 'openssl/providers/implementations/kdfs/krb5kdf.c', 'openssl/providers/implementations/kdfs/pbkdf2.c', @@ -873,6 +1003,11 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ec_kem.c', + 'openssl/providers/implementations/kem/ecx_kem.c', + 'openssl/providers/implementations/kem/kem_util.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -880,7 +1015,11 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/blake2b_mac.c', 'openssl/providers/implementations/macs/blake2s_mac.c', 'openssl/providers/implementations/macs/cmac_prov.c', @@ -889,12 +1028,12 @@ 'openssl/providers/implementations/macs/kmac_prov.c', 'openssl/providers/implementations/macs/poly1305_prov.c', 'openssl/providers/implementations/macs/siphash_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', 'openssl/providers/implementations/rands/seed_src.c', + 'openssl/providers/implementations/rands/seed_src_jitter.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/rands/seeding/rand_cpu_x86.c', 'openssl/providers/implementations/rands/seeding/rand_tsc.c', @@ -904,17 +1043,23 @@ 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', 'openssl/providers/implementations/signature/sm2_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', 'openssl/providers/implementations/storemgmt/file_store.c', 'openssl/providers/implementations/storemgmt/file_store_any2obj.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -925,7 +1070,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/implementations/ciphers/cipher_blowfish.c', 'openssl/providers/implementations/ciphers/cipher_blowfish_hw.c', 'openssl/providers/implementations/ciphers/cipher_cast5.c', @@ -950,6 +1095,7 @@ 'openssl/providers/implementations/digests/ripemd_prov.c', 'openssl/providers/implementations/digests/wp_prov.c', 'openssl/providers/implementations/kdfs/pbkdf1.c', + 'openssl/providers/implementations/kdfs/pvkkdf.c', 'openssl/providers/prov_running.c', 'openssl/providers/legacyprov.c', ], @@ -959,9 +1105,11 @@ './config/archs/aix64-gcc-as/asm_avx2/crypto/aes/vpaes-ppc.s', './config/archs/aix64-gcc-as/asm_avx2/crypto/bn/bn-ppc.s', './config/archs/aix64-gcc-as/asm_avx2/crypto/bn/ppc-mont.s', + './config/archs/aix64-gcc-as/asm_avx2/crypto/bn/ppc64-mont-fixed.s', './config/archs/aix64-gcc-as/asm_avx2/crypto/chacha/chacha-ppc.s', './config/archs/aix64-gcc-as/asm_avx2/crypto/ec/ecp_nistz256-ppc64.s', './config/archs/aix64-gcc-as/asm_avx2/crypto/ec/x25519-ppc64.s', + './config/archs/aix64-gcc-as/asm_avx2/crypto/params_idx.c', './config/archs/aix64-gcc-as/asm_avx2/crypto/ppccpuid.s', './config/archs/aix64-gcc-as/asm_avx2/crypto/modes/ghashp8-ppc.s', './config/archs/aix64-gcc-as/asm_avx2/crypto/poly1305/poly1305-ppc.s', @@ -977,7 +1125,9 @@ './config/archs/aix64-gcc-as/asm_avx2/providers/common/der/der_dsa_gen.c', './config/archs/aix64-gcc-as/asm_avx2/providers/common/der/der_ec_gen.c', './config/archs/aix64-gcc-as/asm_avx2/providers/common/der/der_ecx_gen.c', + './config/archs/aix64-gcc-as/asm_avx2/providers/common/der/der_ml_dsa_gen.c', './config/archs/aix64-gcc-as/asm_avx2/providers/common/der/der_rsa_gen.c', + './config/archs/aix64-gcc-as/asm_avx2/providers/common/der/der_slh_dsa_gen.c', './config/archs/aix64-gcc-as/asm_avx2/providers/common/der/der_wrap_gen.c', './config/archs/aix64-gcc-as/asm_avx2/providers/legacy.ld', './config/archs/aix64-gcc-as/asm_avx2/providers/fips.ld', diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/providers/common/der/der_ml_dsa_gen.c b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/providers/common/der/der_ml_dsa_gen.c new file mode 100644 index 00000000000000..4a8a113a268578 --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/providers/common/der/der_ml_dsa_gen.c @@ -0,0 +1,37 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_ml_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44] = { + DER_OID_V_id_ml_dsa_44 +}; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65] = { + DER_OID_V_id_ml_dsa_65 +}; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87] = { + DER_OID_V_id_ml_dsa_87 +}; + diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/providers/common/der/der_slh_dsa_gen.c b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/providers/common/der/der_slh_dsa_gen.c new file mode 100644 index 00000000000000..1419a9515097dd --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/providers/common/der/der_slh_dsa_gen.c @@ -0,0 +1,100 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_slh_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s] = { + DER_OID_V_id_slh_dsa_sha2_128s +}; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f] = { + DER_OID_V_id_slh_dsa_sha2_128f +}; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s] = { + DER_OID_V_id_slh_dsa_sha2_192s +}; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f] = { + DER_OID_V_id_slh_dsa_sha2_192f +}; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s] = { + DER_OID_V_id_slh_dsa_sha2_256s +}; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f] = { + DER_OID_V_id_slh_dsa_sha2_256f +}; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s] = { + DER_OID_V_id_slh_dsa_shake_128s +}; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f] = { + DER_OID_V_id_slh_dsa_shake_128f +}; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s] = { + DER_OID_V_id_slh_dsa_shake_192s +}; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f] = { + DER_OID_V_id_slh_dsa_shake_192f +}; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s] = { + DER_OID_V_id_slh_dsa_shake_256s +}; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f] = { + DER_OID_V_id_slh_dsa_shake_256f +}; + diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/providers/common/include/prov/der_ml_dsa.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/providers/common/include/prov/der_ml_dsa.h new file mode 100644 index 00000000000000..c55f780ab4527c --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/providers/common/include/prov/der_ml_dsa.h @@ -0,0 +1,40 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_ml_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +#define DER_OID_V_id_ml_dsa_44 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x11 +#define DER_OID_SZ_id_ml_dsa_44 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44]; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +#define DER_OID_V_id_ml_dsa_65 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x12 +#define DER_OID_SZ_id_ml_dsa_65 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65]; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +#define DER_OID_V_id_ml_dsa_87 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x13 +#define DER_OID_SZ_id_ml_dsa_87 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87]; + + +int ossl_DER_w_algorithmIdentifier_ML_DSA(WPACKET *pkt, int tag, ML_DSA_KEY *key); diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/providers/common/include/prov/der_slh_dsa.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/providers/common/include/prov/der_slh_dsa.h new file mode 100644 index 00000000000000..760f8e7699be72 --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/providers/common/include/prov/der_slh_dsa.h @@ -0,0 +1,103 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_slh_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x14 +#define DER_OID_SZ_id_slh_dsa_sha2_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s]; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x15 +#define DER_OID_SZ_id_slh_dsa_sha2_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f]; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x16 +#define DER_OID_SZ_id_slh_dsa_sha2_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s]; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x17 +#define DER_OID_SZ_id_slh_dsa_sha2_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f]; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x18 +#define DER_OID_SZ_id_slh_dsa_sha2_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s]; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x19 +#define DER_OID_SZ_id_slh_dsa_sha2_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f]; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +#define DER_OID_V_id_slh_dsa_shake_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1A +#define DER_OID_SZ_id_slh_dsa_shake_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s]; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +#define DER_OID_V_id_slh_dsa_shake_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1B +#define DER_OID_SZ_id_slh_dsa_shake_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f]; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +#define DER_OID_V_id_slh_dsa_shake_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1C +#define DER_OID_SZ_id_slh_dsa_shake_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s]; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +#define DER_OID_V_id_slh_dsa_shake_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1D +#define DER_OID_SZ_id_slh_dsa_shake_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f]; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +#define DER_OID_V_id_slh_dsa_shake_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1E +#define DER_OID_SZ_id_slh_dsa_shake_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s]; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +#define DER_OID_V_id_slh_dsa_shake_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1F +#define DER_OID_SZ_id_slh_dsa_shake_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f]; + + +int ossl_DER_w_algorithmIdentifier_SLH_DSA(WPACKET *pkt, int tag, SLH_DSA_KEY *key); diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/apps/progs.c b/deps/openssl/config/archs/aix64-gcc-as/no-asm/apps/progs.c index 43cef00799b86e..acc204a3e6e781 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/apps/progs.c +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/apps/progs.c @@ -89,6 +89,7 @@ FUNCTION functions[] = { {FT_general, "s_time", s_time_main, s_time_options, NULL, NULL}, #endif {FT_general, "sess_id", sess_id_main, sess_id_options, NULL, NULL}, + {FT_general, "skeyutl", skeyutl_main, skeyutl_options, NULL, NULL}, {FT_general, "smime", smime_main, smime_options, NULL, NULL}, {FT_general, "speed", speed_main, speed_options, NULL, NULL}, {FT_general, "spkac", spkac_main, spkac_options, NULL, NULL}, @@ -225,9 +226,15 @@ FUNCTION functions[] = { {FT_cipher, "camellia-256-ecb", enc_main, enc_options, NULL}, #endif {FT_cipher, "base64", enc_main, enc_options, NULL}, -#ifdef ZLIB +#ifndef OPENSSL_NO_ZLIB {FT_cipher, "zlib", enc_main, enc_options, NULL}, #endif +#ifndef OPENSSL_NO_BROTLI + {FT_cipher, "brotli", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ZSTD + {FT_cipher, "zstd", enc_main, enc_options, NULL}, +#endif #ifndef OPENSSL_NO_DES {FT_cipher, "des", enc_main, enc_options, NULL}, #endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/configdata.pm b/deps/openssl/config/archs/aix64-gcc-as/no-asm/configdata.pm index c291a8d8d7550a..b43d57a75d55d2 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/configdata.pm +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/configdata.pm @@ -18,6 +18,7 @@ our %config = ( "ARFLAGS" => [ "qc" ], + "ASFLAGS" => [], "CC" => "gcc", "CFLAGS" => [ "-O" @@ -27,14 +28,16 @@ our %config = ( "CPPINCLUDES" => [], "CXXFLAGS" => [], "FIPSKEY" => "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813", + "FIPS_VENDOR" => "OpenSSL FIPS Provider", "HASHBANGPERL" => "/usr/bin/env perl", "LDFLAGS" => [], "LDLIBS" => [], + "OBJCOPY" => "objcopy", "PERL" => "/usr/bin/perl", "RANLIB" => "ranlib -X64", "RC" => "windres", "RCFLAGS" => [], - "api" => "30000", + "api" => "30500", "b32" => "0", "b64" => "0", "b64l" => "1", @@ -56,11 +59,13 @@ our %config = ( "doc/build.info", "test/build.info", "engines/build.info", + "exporters/build.info", "crypto/objects/build.info", "crypto/buffer/build.info", "crypto/bio/build.info", "crypto/stack/build.info", "crypto/lhash/build.info", + "crypto/hashtable/build.info", "crypto/rand/build.info", "crypto/evp/build.info", "crypto/asn1/build.info", @@ -78,6 +83,7 @@ our %config = ( "crypto/md5/build.info", "crypto/sha/build.info", "crypto/mdc2/build.info", + "crypto/ml_kem/build.info", "crypto/hmac/build.info", "crypto/ripemd/build.info", "crypto/whrlpool/build.info", @@ -119,11 +125,19 @@ our %config = ( "crypto/cmp/build.info", "crypto/encode_decode/build.info", "crypto/ffc/build.info", + "crypto/hpke/build.info", + "crypto/thread/build.info", + "crypto/ml_dsa/build.info", + "crypto/slh_dsa/build.info", + "ssl/record/build.info", + "ssl/rio/build.info", + "ssl/quic/build.info", "apps/lib/build.info", "providers/common/build.info", "providers/implementations/build.info", "providers/fips/build.info", "doc/man1/build.info", + "ssl/record/methods/build.info", "providers/common/der/build.info", "providers/implementations/digests/build.info", "providers/implementations/ciphers/build.info", @@ -137,6 +151,7 @@ our %config = ( "providers/implementations/encode_decode/build.info", "providers/implementations/storemgmt/build.info", "providers/implementations/kem/build.info", + "providers/implementations/skeymgmt/build.info", "providers/implementations/rands/seeding/build.info" ], "build_metadata" => "", @@ -154,7 +169,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.17", + "full_version" => "3.5.2", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -163,9 +178,9 @@ our %config = ( "libdir" => "", "major" => "3", "makedep_scheme" => "gcc", - "minor" => "0", + "minor" => "5", "openssl_api_defines" => [ - "OPENSSL_CONFIGURED_API=30000" + "OPENSSL_CONFIGURED_API=30500" ], "openssl_feature_defines" => [ "OPENSSL_RAND_SEED_OS", @@ -173,28 +188,43 @@ our %config = ( "OPENSSL_NO_AFALGENG", "OPENSSL_NO_ASAN", "OPENSSL_NO_ASM", + "OPENSSL_NO_BROTLI", + "OPENSSL_NO_BROTLI_DYNAMIC", "OPENSSL_NO_COMP", "OPENSSL_NO_CRYPTO_MDEBUG", "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE", + "OPENSSL_NO_DEMOS", "OPENSSL_NO_DEVCRYPTOENG", "OPENSSL_NO_EC_NISTP_64_GCC_128", "OPENSSL_NO_EGD", "OPENSSL_NO_EXTERNAL_TESTS", + "OPENSSL_NO_FIPS_JITTER", "OPENSSL_NO_FUZZ_AFL", "OPENSSL_NO_FUZZ_LIBFUZZER", + "OPENSSL_NO_H3DEMO", + "OPENSSL_NO_HQINTEROP", + "OPENSSL_NO_JITTER", "OPENSSL_NO_KTLS", "OPENSSL_NO_LOADERENG", "OPENSSL_NO_MD2", "OPENSSL_NO_MSAN", + "OPENSSL_NO_PIE", "OPENSSL_NO_RC5", "OPENSSL_NO_SCTP", "OPENSSL_NO_SSL3", "OPENSSL_NO_SSL3_METHOD", + "OPENSSL_NO_SSLKEYLOG", + "OPENSSL_NO_TFO", "OPENSSL_NO_TRACE", "OPENSSL_NO_UBSAN", "OPENSSL_NO_UNIT_TEST", "OPENSSL_NO_UPLINK", "OPENSSL_NO_WEAK_SSL_CIPHERS", + "OPENSSL_NO_WINSTORE", + "OPENSSL_NO_ZLIB", + "OPENSSL_NO_ZLIB_DYNAMIC", + "OPENSSL_NO_ZSTD", + "OPENSSL_NO_ZSTD_DYNAMIC", "OPENSSL_NO_DYNAMIC_ENGINE" ], "openssl_other_defines" => [ @@ -204,11 +234,11 @@ our %config = ( "OPENSSL_SYS_AIX" ], "openssldir" => "", - "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "17", + "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", + "patch" => "2", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", - "perl_version" => "5.38.2", + "perl_version" => "5.34.0", "perlargv" => [ "no-comp", "no-shared", @@ -239,6 +269,7 @@ our %config = ( "LDLIBS" => undef, "MT" => undef, "MTFLAGS" => undef, + "OBJCOPY" => undef, "OPENSSL_LOCAL_CONFIG_DIR" => undef, "PERL" => undef, "RANLIB" => undef, @@ -258,11 +289,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "1 Jul 2025", + "release_date" => "5 Aug 2025", "shlib_version" => "3", "sourcedir" => ".", "target" => "aix64-gcc-as", - "version" => "3.0.17" + "version" => "3.5.2" ); our %target = ( "AR" => "ar -X64", @@ -270,6 +301,7 @@ our %target = ( "CC" => "gcc", "CFLAGS" => "-O", "HASHBANGPERL" => "/usr/bin/env perl", + "OBJCOPY" => "objcopy", "RANLIB" => "ranlib -X64", "RC" => "windres", "_conf_fname_int" => [ @@ -281,6 +313,8 @@ our %target = ( "Configurations/shared-info.pl" ], "asm_arch" => "ppc64", + "bin_cflags" => "", + "bin_lflags" => "", "bn_ops" => "SIXTY_FOUR_BIT_LONG RC4_CHAR", "build_file" => "Makefile", "build_scheme" => [ @@ -323,6 +357,8 @@ our %target = ( our @disablables = ( "acvp-tests", "afalgeng", + "apps", + "argon2", "aria", "asan", "asm", @@ -333,11 +369,14 @@ our @disablables = ( "autoload-config", "bf", "blake2", + "brotli", + "brotli-dynamic", "buildtest-c++", "bulk", "cached-fetch", "camellia", "capieng", + "winstore", "cast", "chacha", "cmac", @@ -346,11 +385,16 @@ our @disablables = ( "comp", "crypto-mdebug", "ct", + "default-thread-pool", + "demos", + "h3demo", + "hqinterop", "deprecated", "des", "devcryptoeng", "dgram", "dh", + "docs", "dsa", "dso", "dtls", @@ -360,6 +404,7 @@ our @disablables = ( "ec_nistp_64_gcc_128", "ecdh", "ecdsa", + "ecx", "egd", "engine", "err", @@ -367,10 +412,15 @@ our @disablables = ( "filenames", "fips", "fips-securitychecks", + "fips-post", + "fips-jitter", "fuzz-afl", "fuzz-libfuzzer", "gost", + "http", "idea", + "integrity-only-ciphers", + "jitter", "ktls", "legacy", "loadereng", @@ -378,6 +428,8 @@ our @disablables = ( "md2", "md4", "mdc2", + "ml-dsa", + "ml-kem", "module", "msan", "multiblock", @@ -386,10 +438,13 @@ our @disablables = ( "ocsp", "padlockeng", "pic", + "pie", "pinshared", "poly1305", "posix-io", "psk", + "quic", + "unstable-qlog", "rc2", "rc4", "rc5", @@ -403,7 +458,9 @@ our @disablables = ( "shared", "siphash", "siv", + "slh-dsa", "sm2", + "sm2-precomp", "sm3", "sm4", "sock", @@ -414,9 +471,13 @@ our @disablables = ( "ssl-trace", "static-engine", "stdio", + "sslkeylog", "tests", + "tfo", + "thread-pool", "threads", "tls", + "tls-deprecated-ec", "trace", "ts", "ubsan", @@ -427,6 +488,8 @@ our @disablables = ( "whirlpool", "zlib", "zlib-dynamic", + "zstd", + "zstd-dynamic", "ssl3", "ssl3-method", "tls1", @@ -448,33 +511,46 @@ our %disabled = ( "afalgeng" => "option", "asan" => "default", "asm" => "option", + "brotli" => "default", + "brotli-dynamic" => "default", "buildtest-c++" => "default", "comp" => "option", "crypto-mdebug" => "default", "crypto-mdebug-backtrace" => "default", + "demos" => "default", "devcryptoeng" => "default", "dynamic-engine" => "cascade", "ec_nistp_64_gcc_128" => "default", "egd" => "default", "external-tests" => "default", + "fips-jitter" => "default", "fuzz-afl" => "default", "fuzz-libfuzzer" => "default", + "h3demo" => "default", + "hqinterop" => "default", + "jitter" => "default", "ktls" => "default", "loadereng" => "cascade", "md2" => "default", "msan" => "default", + "pie" => "default", "rc5" => "default", "sctp" => "default", "shared" => "option", "ssl3" => "default", "ssl3-method" => "default", + "sslkeylog" => "default", + "tfo" => "default", "trace" => "default", "ubsan" => "default", "unit-test" => "default", "uplink" => "no uplink_arch", "weak-ssl-ciphers" => "default", + "winstore" => "not-windows", "zlib" => "default", - "zlib-dynamic" => "default" + "zlib-dynamic" => "default", + "zstd" => "default", + "zstd-dynamic" => "default" ); our %withargs = (); our %unified_info = ( @@ -700,6 +776,11 @@ our %unified_info = ( "pod" => "1" } }, + "doc/man1/openssl-skeyutl.pod" => { + "doc/man1/openssl-skeyutl.pod.in" => { + "pod" => "1" + } + }, "doc/man1/openssl-smime.pod" => { "doc/man1/openssl-smime.pod.in" => { "pod" => "1" @@ -757,6 +838,21 @@ our %unified_info = ( } }, "generate" => { + "exporters/OpenSSLConfig.cmake" => { + "exporter" => "cmake" + }, + "exporters/OpenSSLConfigVersion.cmake" => { + "exporter" => "cmake" + }, + "exporters/libcrypto.pc" => { + "exporter" => "pkg-config" + }, + "exporters/libssl.pc" => { + "exporter" => "pkg-config" + }, + "exporters/openssl.pc" => { + "exporter" => "pkg-config" + }, "include/openssl/configuration.h" => { "skip" => "1" } @@ -777,6 +873,9 @@ our %unified_info = ( "providers/liblegacy.a" => { "noinst" => "1" }, + "providers/libtemplate.a" => { + "noinst" => "1" + }, "test/libtestutil.a" => { "has_main" => "1", "noinst" => "1" @@ -794,6 +893,9 @@ our %unified_info = ( } }, "programs" => { + "fuzz/acert-test" => { + "noinst" => "1" + }, "fuzz/asn1-test" => { "noinst" => "1" }, @@ -824,9 +926,60 @@ our %unified_info = ( "fuzz/ct-test" => { "noinst" => "1" }, + "fuzz/decoder-test" => { + "noinst" => "1" + }, + "fuzz/dtlsclient-test" => { + "noinst" => "1" + }, + "fuzz/dtlsserver-test" => { + "noinst" => "1" + }, + "fuzz/hashtable-test" => { + "noinst" => "1" + }, + "fuzz/ml-dsa-test" => { + "noinst" => "1" + }, + "fuzz/ml-kem-test" => { + "noinst" => "1" + }, + "fuzz/pem-test" => { + "noinst" => "1" + }, + "fuzz/provider-test" => { + "noinst" => "1" + }, + "fuzz/punycode-test" => { + "noinst" => "1" + }, + "fuzz/quic-client-test" => { + "noinst" => "1" + }, + "fuzz/quic-lcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-rcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-server-test" => { + "noinst" => "1" + }, + "fuzz/quic-srtm-test" => { + "noinst" => "1" + }, "fuzz/server-test" => { "noinst" => "1" }, + "fuzz/slh-dsa-test" => { + "noinst" => "1" + }, + "fuzz/smime-test" => { + "noinst" => "1" + }, + "fuzz/v3name-test" => { + "noinst" => "1" + }, "fuzz/x509-test" => { "noinst" => "1" }, @@ -878,18 +1031,30 @@ our %unified_info = ( "test/bftest" => { "noinst" => "1" }, + "test/bio_addr_test" => { + "noinst" => "1" + }, + "test/bio_base64_test" => { + "noinst" => "1" + }, "test/bio_callback_test" => { "noinst" => "1" }, "test/bio_core_test" => { "noinst" => "1" }, + "test/bio_dgram_test" => { + "noinst" => "1" + }, "test/bio_enc_test" => { "noinst" => "1" }, "test/bio_memleak_test" => { "noinst" => "1" }, + "test/bio_meth_test" => { + "noinst" => "1" + }, "test/bio_prefix_text" => { "noinst" => "1" }, @@ -899,6 +1064,9 @@ our %unified_info = ( "test/bio_readbuffer_test" => { "noinst" => "1" }, + "test/bio_tfo_test" => { + "noinst" => "1" + }, "test/bioprinttest" => { "noinst" => "1" }, @@ -908,6 +1076,9 @@ our %unified_info = ( "test/bntest" => { "noinst" => "1" }, + "test/build_wincrypt_test" => { + "noinst" => "1" + }, "test/buildtest_c_aes" => { "noinst" => "1" }, @@ -923,6 +1094,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => { "noinst" => "1" }, + "test/buildtest_c_byteorder" => { + "noinst" => "1" + }, "test/buildtest_c_camellia" => { "noinst" => "1" }, @@ -947,9 +1121,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => { "noinst" => "1" }, - "test/buildtest_c_core_names" => { - "noinst" => "1" - }, "test/buildtest_c_core_object" => { "noinst" => "1" }, @@ -974,6 +1145,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => { "noinst" => "1" }, + "test/buildtest_c_e_ostime" => { + "noinst" => "1" + }, "test/buildtest_c_ebcdic" => { "noinst" => "1" }, @@ -1001,12 +1175,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => { "noinst" => "1" }, + "test/buildtest_c_hpke" => { + "noinst" => "1" + }, "test/buildtest_c_http" => { "noinst" => "1" }, "test/buildtest_c_idea" => { "noinst" => "1" }, + "test/buildtest_c_indicator" => { + "noinst" => "1" + }, "test/buildtest_c_kdf" => { "noinst" => "1" }, @@ -1022,6 +1202,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => { "noinst" => "1" }, + "test/buildtest_c_ml_kem" => { + "noinst" => "1" + }, "test/buildtest_c_modes" => { "noinst" => "1" }, @@ -1052,6 +1235,9 @@ our %unified_info = ( "test/buildtest_c_provider" => { "noinst" => "1" }, + "test/buildtest_c_quic" => { + "noinst" => "1" + }, "test/buildtest_c_rand" => { "noinst" => "1" }, @@ -1094,6 +1280,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => { "noinst" => "1" }, + "test/buildtest_c_thread" => { + "noinst" => "1" + }, "test/buildtest_c_tls1" => { "noinst" => "1" }, @@ -1109,6 +1298,12 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => { "noinst" => "1" }, + "test/byteorder_test" => { + "noinst" => "1" + }, + "test/ca_internals_test" => { + "noinst" => "1" + }, "test/casttest" => { "noinst" => "1" }, @@ -1193,6 +1388,9 @@ our %unified_info = ( "test/danetest" => { "noinst" => "1" }, + "test/decoder_propq_test" => { + "noinst" => "1" + }, "test/defltfips_test" => { "noinst" => "1" }, @@ -1265,15 +1463,24 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => { "noinst" => "1" }, + "test/evp_pkey_dhkem_test" => { + "noinst" => "1" + }, "test/evp_pkey_dparams_test" => { "noinst" => "1" }, "test/evp_pkey_provided_test" => { "noinst" => "1" }, + "test/evp_skey_test" => { + "noinst" => "1" + }, "test/evp_test" => { "noinst" => "1" }, + "test/evp_xof_test" => { + "noinst" => "1" + }, "test/exdatatest" => { "noinst" => "1" }, @@ -1301,6 +1508,9 @@ our %unified_info = ( "test/hmactest" => { "noinst" => "1" }, + "test/hpke_test" => { + "noinst" => "1" + }, "test/http_test" => { "noinst" => "1" }, @@ -1310,12 +1520,18 @@ our %unified_info = ( "test/igetest" => { "noinst" => "1" }, + "test/json_test" => { + "noinst" => "1" + }, "test/keymgmt_internal_test" => { "noinst" => "1" }, "test/lhash_test" => { "noinst" => "1" }, + "test/list_test" => { + "noinst" => "1" + }, "test/localetest" => { "noinst" => "1" }, @@ -1325,9 +1541,21 @@ our %unified_info = ( "test/mdc2test" => { "noinst" => "1" }, + "test/membio_test" => { + "noinst" => "1" + }, "test/memleaktest" => { "noinst" => "1" }, + "test/ml_dsa_test" => { + "noinst" => "1" + }, + "test/ml_kem_evp_extra_test" => { + "noinst" => "1" + }, + "test/ml_kem_internal_test" => { + "noinst" => "1" + }, "test/modes_internal_test" => { "noinst" => "1" }, @@ -1346,6 +1574,9 @@ our %unified_info = ( "test/packettest" => { "noinst" => "1" }, + "test/pairwise_fail_test" => { + "noinst" => "1" + }, "test/param_build_test" => { "noinst" => "1" }, @@ -1370,6 +1601,9 @@ our %unified_info = ( "test/pemtest" => { "noinst" => "1" }, + "test/pkcs12_api_test" => { + "noinst" => "1" + }, "test/pkcs12_format_test" => { "noinst" => "1" }, @@ -1385,6 +1619,9 @@ our %unified_info = ( "test/poly1305_internal_test" => { "noinst" => "1" }, + "test/priority_queue_test" => { + "noinst" => "1" + }, "test/property_test" => { "noinst" => "1" }, @@ -1394,6 +1631,9 @@ our %unified_info = ( "test/provfetchtest" => { "noinst" => "1" }, + "test/provider_default_search_path_test" => { + "noinst" => "1" + }, "test/provider_fallback_test" => { "noinst" => "1" }, @@ -1412,6 +1652,72 @@ our %unified_info = ( "test/punycode_test" => { "noinst" => "1" }, + "test/quic_ackm_test" => { + "noinst" => "1" + }, + "test/quic_cc_test" => { + "noinst" => "1" + }, + "test/quic_cfq_test" => { + "noinst" => "1" + }, + "test/quic_client_test" => { + "noinst" => "1" + }, + "test/quic_fc_test" => { + "noinst" => "1" + }, + "test/quic_fifd_test" => { + "noinst" => "1" + }, + "test/quic_lcidm_test" => { + "noinst" => "1" + }, + "test/quic_multistream_test" => { + "noinst" => "1" + }, + "test/quic_newcid_test" => { + "noinst" => "1" + }, + "test/quic_qlog_test" => { + "noinst" => "1" + }, + "test/quic_radix_test" => { + "noinst" => "1" + }, + "test/quic_rcidm_test" => { + "noinst" => "1" + }, + "test/quic_record_test" => { + "noinst" => "1" + }, + "test/quic_srt_gen_test" => { + "noinst" => "1" + }, + "test/quic_srtm_test" => { + "noinst" => "1" + }, + "test/quic_stream_test" => { + "noinst" => "1" + }, + "test/quic_tserver_test" => { + "noinst" => "1" + }, + "test/quic_txp_test" => { + "noinst" => "1" + }, + "test/quic_txpim_test" => { + "noinst" => "1" + }, + "test/quic_wire_test" => { + "noinst" => "1" + }, + "test/quicapitest" => { + "noinst" => "1" + }, + "test/quicfaultstest" => { + "noinst" => "1" + }, "test/rand_status_test" => { "noinst" => "1" }, @@ -1427,12 +1733,15 @@ our %unified_info = ( "test/rc5test" => { "noinst" => "1" }, - "test/rdrand_sanitytest" => { + "test/rdcpu_sanitytest" => { "noinst" => "1" }, "test/recordlentest" => { "noinst" => "1" }, + "test/rpktest" => { + "noinst" => "1" + }, "test/rsa_complex" => { "noinst" => "1" }, @@ -1445,6 +1754,12 @@ our %unified_info = ( "test/rsa_test" => { "noinst" => "1" }, + "test/rsa_x931_test" => { + "noinst" => "1" + }, + "test/safe_math_test" => { + "noinst" => "1" + }, "test/sanitytest" => { "noinst" => "1" }, @@ -1460,6 +1775,9 @@ our %unified_info = ( "test/siphash_internal_test" => { "noinst" => "1" }, + "test/slh_dsa_test" => { + "noinst" => "1" + }, "test/sm2_internal_test" => { "noinst" => "1" }, @@ -1481,6 +1799,9 @@ our %unified_info = ( "test/ssl_ctx_test" => { "noinst" => "1" }, + "test/ssl_handshake_rtt_test" => { + "noinst" => "1" + }, "test/ssl_old_test" => { "noinst" => "1" }, @@ -1502,12 +1823,18 @@ our %unified_info = ( "test/stack_test" => { "noinst" => "1" }, + "test/strtoultest" => { + "noinst" => "1" + }, "test/sysdefaulttest" => { "noinst" => "1" }, "test/test_test" => { "noinst" => "1" }, + "test/threadpool_test" => { + "noinst" => "1" + }, "test/threadstest" => { "noinst" => "1" }, @@ -1517,12 +1844,18 @@ our %unified_info = ( "test/time_offset_test" => { "noinst" => "1" }, + "test/time_test" => { + "noinst" => "1" + }, "test/tls13ccstest" => { "noinst" => "1" }, "test/tls13encryptiontest" => { "noinst" => "1" }, + "test/tls13groupselection_test" => { + "noinst" => "1" + }, "test/trace_api_test" => { "noinst" => "1" }, @@ -1550,6 +1883,9 @@ our %unified_info = ( "test/wpackettest" => { "noinst" => "1" }, + "test/x509_acert_test" => { + "noinst" => "1" + }, "test/x509_check_cert_pkey_test" => { "noinst" => "1" }, @@ -1559,6 +1895,15 @@ our %unified_info = ( "test/x509_internal_test" => { "noinst" => "1" }, + "test/x509_load_cert_file_test" => { + "noinst" => "1" + }, + "test/x509_req_test" => { + "noinst" => "1" + }, + "test/x509_test" => { + "noinst" => "1" + }, "test/x509_time_test" => { "noinst" => "1" }, @@ -1602,6 +1947,9 @@ our %unified_info = ( "providers/libfips.a" => [ "FIPS_MODULE" ], + "test/endecode_test" => [ + "STATIC_LEGACY" + ], "test/evp_extra_test" => [ "STATIC_LEGACY" ], @@ -1614,14 +1962,21 @@ our %unified_info = ( }, "depends" => { "" => [ + "OpenSSLConfigVersion.cmake", + "crypto/params_idx.c", + "exporters/OpenSSLConfigVersion.cmake", + "exporters/openssl.pc", "include/crypto/bn_conf.h", "include/crypto/dso_conf.h", + "include/internal/param_names.h", "include/openssl/asn1.h", "include/openssl/asn1t.h", "include/openssl/bio.h", "include/openssl/cmp.h", "include/openssl/cms.h", + "include/openssl/comp.h", "include/openssl/conf.h", + "include/openssl/core_names.h", "include/openssl/crmf.h", "include/openssl/crypto.h", "include/openssl/ct.h", @@ -1638,10 +1993,22 @@ our %unified_info = ( "include/openssl/ssl.h", "include/openssl/ui.h", "include/openssl/x509.h", + "include/openssl/x509_acert.h", "include/openssl/x509_vfy.h", "include/openssl/x509v3.h", + "openssl.pc", "test/provider_internal_test.cnf" ], + "OpenSSLConfig.cmake" => [ + "builddata.pm" + ], + "OpenSSLConfigVersion.cmake" => [ + "OpenSSLConfig.cmake", + "builddata.pm" + ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/progs.h" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/progs.h" ], @@ -1787,6 +2154,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/progs.h" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/progs.h" + ], "apps/openssl-bin-smime.o" => [ "apps/progs.h" ], @@ -1875,6 +2245,9 @@ our %unified_info = ( "crypto/libcrypto-lib-info.o" => [ "crypto/buildinf.h" ], + "crypto/params_idx.c" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "crypto/rc4/rc4-586.S" => [ "crypto/perlasm/x86asm.pl" ], @@ -2040,6 +2413,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -2181,6 +2557,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -2217,6 +2596,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -2232,6 +2614,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -2304,6 +2689,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -2370,6 +2758,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -2469,6 +2860,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -2607,6 +3004,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -2724,6 +3124,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -2811,6 +3217,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -2883,9 +3292,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -2901,12 +3316,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -2976,9 +3397,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -2988,12 +3418,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -3009,9 +3451,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -3036,6 +3484,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -3051,6 +3502,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -3087,6 +3541,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -3360,6 +3817,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -3399,6 +3859,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -3420,6 +3883,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -3534,6 +4000,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -3561,9 +4030,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -3579,6 +4060,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -3588,12 +4072,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -3612,12 +4102,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -3627,9 +4129,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -3642,9 +4150,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -3660,24 +4180,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -3690,6 +4231,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -3699,8 +4246,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -3720,6 +4267,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -3768,6 +4330,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -3834,6 +4399,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -3957,9 +4525,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -3975,6 +4549,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -3999,9 +4576,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -4035,6 +4621,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -4092,15 +4681,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -4110,6 +4711,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -4131,9 +4735,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -4149,6 +4759,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -4161,9 +4774,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -4194,9 +4804,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -4212,12 +4819,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -4272,6 +4933,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -4281,9 +4945,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -4431,6 +5092,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -4572,6 +5236,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -4608,6 +5275,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -4623,6 +5293,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -4695,6 +5368,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -4761,6 +5437,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -4860,6 +5539,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -4998,6 +5683,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -5115,6 +5803,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -5202,6 +5896,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -5274,9 +5971,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -5292,12 +5995,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -5367,9 +6076,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -5379,12 +6097,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -5400,9 +6130,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -5427,6 +6163,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -5442,6 +6181,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -5478,6 +6220,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -5751,6 +6496,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -5790,6 +6538,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -5811,6 +6562,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -5925,6 +6679,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -5952,9 +6709,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -5970,6 +6739,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -5979,12 +6751,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -6003,12 +6781,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -6018,9 +6808,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -6033,9 +6829,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -6051,24 +6859,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -6081,6 +6910,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -6090,8 +6925,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -6111,6 +6946,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -6159,6 +7009,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -6225,6 +7078,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -6348,9 +7204,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -6366,6 +7228,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -6390,9 +7255,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -6426,6 +7300,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -6483,15 +7360,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -6501,6 +7390,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -6522,9 +7414,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -6540,6 +7438,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -6552,9 +7453,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -6585,9 +7483,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -6603,12 +7498,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -6663,6 +7612,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -6672,9 +7624,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -6854,6 +7803,10 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod.in", "doc/perlvars.pm" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in", + "doc/perlvars.pm" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in", "doc/perlvars.pm" @@ -6893,6 +7846,27 @@ our %unified_info = ( "doc/man7/openssl_user_macros.pod" => [ "doc/man7/openssl_user_macros.pod.in" ], + "exporters/OpenSSLConfig.cmake" => [ + "installdata.pm" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/OpenSSLConfig.cmake", + "installdata.pm" + ], + "exporters/libcrypto.pc" => [ + "installdata.pm" + ], + "exporters/libssl.pc" => [ + "installdata.pm" + ], + "exporters/openssl.pc" => [ + "exporters/libcrypto.pc", + "exporters/libssl.pc", + "installdata.pm" + ], + "fuzz/acert-test" => [ + "libcrypto" + ], "fuzz/asn1-test" => [ "libcrypto", "libssl" @@ -6925,17 +7899,85 @@ our %unified_info = ( "fuzz/ct-test" => [ "libcrypto" ], + "fuzz/decoder-test" => [ + "libcrypto" + ], + "fuzz/dtlsclient-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/dtlsserver-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/hashtable-test" => [ + "libcrypto.a" + ], + "fuzz/ml-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/ml-kem-test" => [ + "libcrypto.a" + ], + "fuzz/pem-test" => [ + "libcrypto.a" + ], + "fuzz/provider-test" => [ + "libcrypto" + ], + "fuzz/punycode-test" => [ + "libcrypto.a" + ], + "fuzz/quic-client-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-lcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-rcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-server-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-srtm-test" => [ + "libcrypto.a", + "libssl.a" + ], "fuzz/server-test" => [ "libcrypto", "libssl" ], + "fuzz/slh-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/smime-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/v3name-test" => [ + "libcrypto.a" + ], "fuzz/x509-test" => [ "libcrypto" ], + "include/internal/param_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], + "include/openssl/core_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "libcrypto.ld" => [ "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libcrypto.pc" => [ + "builddata.pm" + ], "libssl" => [ "libcrypto" ], @@ -6943,6 +7985,14 @@ our %unified_info = ( "configdata.pm", "util/perl/OpenSSL/Ordinals.pm" ], + "libssl.pc" => [ + "builddata.pm" + ], + "openssl.pc" => [ + "builddata.pm", + "libcrypto.pc", + "libssl.pc" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/DIGESTS.asn1", "providers/common/der/NIST.asn1", @@ -6960,11 +8010,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7004,6 +8062,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov/der_rsa.h" ], @@ -7011,6 +8075,12 @@ our %unified_info = ( "providers/common/include/prov/der_digests.h", "providers/common/include/prov/der_rsa.h" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov/der_wrap.h" ], @@ -7050,11 +8120,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7087,9 +8165,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov/der_sm2.h" ], @@ -7102,9 +8186,15 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/legacy" => [ "libcrypto", "providers/liblegacy.a" @@ -7182,6 +8272,14 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_addr_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/bio_base64_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_callback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7190,6 +8288,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_dgram_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_enc_test" => [ "libcrypto", "test/libtestutil.a" @@ -7198,6 +8300,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_meth_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_prefix_text" => [ "libcrypto", "test/libtestutil.a" @@ -7210,6 +8316,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_tfo_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bioprinttest" => [ "libcrypto", "test/libtestutil.a" @@ -7222,6 +8332,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/build_wincrypt_test" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_aes" => [ "libcrypto", "libssl" @@ -7242,6 +8356,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_byteorder" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_camellia" => [ "libcrypto", "libssl" @@ -7274,10 +8392,6 @@ our %unified_info = ( "libcrypto", "libssl" ], - "test/buildtest_c_core_names" => [ - "libcrypto", - "libssl" - ], "test/buildtest_c_core_object" => [ "libcrypto", "libssl" @@ -7310,6 +8424,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_e_ostime" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_ebcdic" => [ "libcrypto", "libssl" @@ -7346,6 +8464,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_hpke" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_http" => [ "libcrypto", "libssl" @@ -7354,6 +8476,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_indicator" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_kdf" => [ "libcrypto", "libssl" @@ -7374,6 +8500,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_ml_kem" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_modes" => [ "libcrypto", "libssl" @@ -7414,6 +8544,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_quic" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_rand" => [ "libcrypto", "libssl" @@ -7470,6 +8604,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_thread" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_tls1" => [ "libcrypto", "libssl" @@ -7490,10 +8628,23 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/byteorder_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ca_internals_test" => [ + "libssl", + "test/libtestutil.a" + ], "test/casttest" => [ "libcrypto", "test/libtestutil.a" ], + "test/cert_comp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/chacha_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7607,7 +8758,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], - "test/defltfips_test" => [ + "test/decoder_propq_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/defltfips_test" => [ "libcrypto", "test/libtestutil.a" ], @@ -7663,6 +8818,8 @@ our %unified_info = ( ], "test/endecode_test" => [ "libcrypto.a", + "providers/libcommon.a", + "providers/liblegacy.a", "test/libtestutil.a" ], "test/endecoder_legacy_test" => [ @@ -7706,6 +8863,10 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => [ "libcrypto" ], + "test/evp_pkey_dhkem_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/evp_pkey_dparams_test" => [ "libcrypto", "test/libtestutil.a" @@ -7714,10 +8875,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/evp_skey_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/evp_xof_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/exdatatest" => [ "libcrypto", "test/libtestutil.a" @@ -7756,6 +8925,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/hpke_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/http_test" => [ "libcrypto", "test/libtestutil.a" @@ -7768,17 +8941,25 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/json_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/keymgmt_internal_test" => [ "libcrypto.a", "test/libtestutil.a" ], "test/lhash_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/libtestutil.a" => [ "libcrypto" ], + "test/list_test" => [ + "test/libtestutil.a" + ], "test/localetest" => [ "libcrypto", "test/libtestutil.a" @@ -7791,10 +8972,26 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/membio_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/memleaktest" => [ "libcrypto", "test/libtestutil.a" ], + "test/ml_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_evp_extra_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_internal_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/modes_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7819,6 +9016,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pairwise_fail_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/param_build_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7851,6 +9052,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pkcs12_api_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/pkcs12_format_test" => [ "libcrypto", "test/libtestutil.a" @@ -7871,6 +9076,11 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/priority_queue_test" => [ + "libcrypto", + "libssl.a", + "test/libtestutil.a" + ], "test/property_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7883,6 +9093,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/provider_default_search_path_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/provider_fallback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7907,12 +9121,122 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/quic_ackm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cfq_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_client_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fifd_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_lcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_multistream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_newcid_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_qlog_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_radix_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_rcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_record_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srt_gen_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srtm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_stream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_tserver_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txpim_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_wire_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicapitest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicfaultstest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/rand_status_test" => [ "libcrypto", "test/libtestutil.a" ], "test/rand_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/rc2test" => [ @@ -7927,7 +9251,7 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "libcrypto.a", "test/libtestutil.a" ], @@ -7936,6 +9260,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/rpktest" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/rsa_mp_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7948,10 +9277,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/sanitytest" => [ + "test/rsa_x931_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/safe_math_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/sanitytest" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/secmemtest" => [ "libcrypto", "test/libtestutil.a" @@ -7969,6 +9306,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/slh_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/sm2_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7998,6 +9339,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/ssl_handshake_rtt_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/ssl_old_test" => [ "libcrypto.a", "libssl.a", @@ -8014,8 +9360,8 @@ our %unified_info = ( "test/libtestutil.a" ], "test/sslapitest" => [ - "libcrypto", - "libssl", + "libcrypto.a", + "libssl.a", "test/libtestutil.a" ], "test/sslbuffertest" => [ @@ -8032,6 +9378,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/strtoultest" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/sysdefaulttest" => [ "libcrypto", "libssl", @@ -8041,8 +9391,12 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/threadpool_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/threadstest" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/threadstest_fips" => [ @@ -8053,6 +9407,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/time_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/tls13ccstest" => [ "libcrypto", "libssl", @@ -8063,6 +9421,11 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/tls13groupselection_test" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/trace_api_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8100,6 +9463,10 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/x509_acert_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_check_cert_pkey_test" => [ "libcrypto", "test/libtestutil.a" @@ -8112,6 +9479,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/x509_load_cert_file_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_req_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_time_test" => [ "libcrypto", "test/libtestutil.a" @@ -8126,9 +9505,13 @@ our %unified_info = ( }, "dirinfo" => { "apps" => { + "deps" => [ + "apps/ca_internals_test-bin-ca.o" + ], "products" => { "bin" => [ - "apps/openssl" + "apps/openssl", + "test/ca_internals_test" ], "script" => [ "apps/CA.pl", @@ -8139,6 +9522,14 @@ our %unified_info = ( "apps/lib" => { "deps" => [ "apps/lib/openssl-bin-cmp_mock_srv.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", "apps/lib/cmp_client_test-bin-cmp_mock_srv.o", "apps/lib/uitest-bin-apps_ui.o", "apps/lib/libapps-lib-app_libctx.o", @@ -8147,12 +9538,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -8163,6 +9556,7 @@ our %unified_info = ( "products" => { "bin" => [ "apps/openssl", + "test/ca_internals_test", "test/cmp_client_test", "test/uitest" ], @@ -8174,8 +9568,12 @@ our %unified_info = ( }, "crypto" => { "deps" => [ + "crypto/asn1_time_test-bin-ctype.o", + "crypto/ca_internals_test-bin-ctype.o", + "crypto/packettest-bin-quic_vlint.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -8185,10 +9583,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -8206,6 +9607,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -8213,12 +9615,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libfips-lib-asn1_dsa.o", @@ -8241,6 +9647,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -8248,9 +9655,15 @@ our %unified_info = ( "crypto/libfips-lib-threads_lib.o", "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", - "crypto/libfips-lib-threads_win.o" + "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test", + "test/packettest" + ], "lib" => [ "libcrypto", "providers/libfips.a" @@ -8291,6 +9704,8 @@ our %unified_info = ( }, "crypto/asn1" => { "deps" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", "crypto/asn1/libcrypto-lib-a_bitstr.o", "crypto/asn1/libcrypto-lib-a_d2i_fp.o", "crypto/asn1/libcrypto-lib-a_digest.o", @@ -8357,6 +9772,10 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test" + ], "lib" => [ "libcrypto" ] @@ -8422,6 +9841,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -8578,6 +9998,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -8945,7 +10366,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", - "crypto/err/libcrypto-lib-err_prn.o" + "crypto/err/libcrypto-lib-err_mark.o", + "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o" ], "products" => { "lib" => [ @@ -9046,7 +10469,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/evp/libfips-lib-asymcipher.o", "crypto/evp/libfips-lib-dh_support.o", "crypto/evp/libfips-lib-digest.o", @@ -9062,14 +10487,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", - "crypto/evp/libfips-lib-signature.o" + "crypto/evp/libfips-lib-s_lib.o", + "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o" ], "products" => { "lib" => [ @@ -9102,6 +10528,20 @@ our %unified_info = ( ] } }, + "crypto/hashtable" => { + "deps" => [ + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/hmac" => { "deps" => [ "crypto/hmac/libcrypto-lib-hmac.o", @@ -9114,6 +10554,17 @@ our %unified_info = ( ] } }, + "crypto/hpke" => { + "deps" => [ + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, "crypto/http" => { "deps" => [ "crypto/http/libcrypto-lib-http_client.o", @@ -9197,6 +10648,44 @@ our %unified_info = ( ] } }, + "crypto/ml_dsa" => { + "deps" => [ + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ml_kem" => { + "deps" => [ + "crypto/ml_kem/libcrypto-lib-ml_kem.o", + "crypto/ml_kem/libfips-lib-ml_kem.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/modes" => { "deps" => [ "crypto/modes/libcrypto-lib-cbc128.o", @@ -9210,6 +10699,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -9217,7 +10707,8 @@ our %unified_info = ( "crypto/modes/libfips-lib-gcm128.o", "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", - "crypto/modes/libfips-lib-xts128.o" + "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o" ], "products" => { "lib" => [ @@ -9360,6 +10851,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rand/libfips-lib-rand_lib.o" ], @@ -9504,6 +10996,36 @@ our %unified_info = ( ] } }, + "crypto/slh_dsa" => { + "deps" => [ + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/sm2" => { "deps" => [ "crypto/sm2/libcrypto-lib-sm2_crypt.o", @@ -9577,6 +11099,38 @@ our %unified_info = ( ] } }, + "crypto/thread" => { + "deps" => [ + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/thread/arch" => { + "deps" => [ + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/ts" => { "deps" => [ "crypto/ts/libcrypto-lib-ts_asn1.o", @@ -9643,14 +11197,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -9659,12 +11221,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -9672,13 +11239,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -9696,6 +11270,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -9705,6 +11280,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -9731,6 +11307,7 @@ our %unified_info = ( "fuzz" => { "products" => { "bin" => [ + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -9741,13 +11318,31 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test" ] } }, "providers" => { "deps" => [ + "providers/endecode_test-bin-legacyprov.o", "providers/evp_extra_test-bin-legacyprov.o", "providers/libcrypto-lib-baseprov.o", "providers/libcrypto-lib-defltprov.o", @@ -9757,6 +11352,7 @@ our %unified_info = ( ], "products" => { "bin" => [ + "test/endecode_test", "test/evp_extra_test" ], "dso" => [ @@ -9808,8 +11404,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/der/libdefault-lib-der_rsa_sig.o", "providers/common/der/libdefault-lib-der_sm2_gen.o", @@ -9828,6 +11428,7 @@ our %unified_info = ( "providers/fips" => { "deps" => [ "providers/fips/fips-dso-fips_entry.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o" @@ -9871,6 +11472,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -9895,7 +11499,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -9992,7 +11602,10 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", - "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" + "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" ], "products" => { "lib" => [ @@ -10020,7 +11633,9 @@ our %unified_info = ( }, "providers/implementations/kdfs" => { "deps" => [ + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -10039,7 +11654,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", - "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" + "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" ], "products" => { "lib" => [ @@ -10051,13 +11667,22 @@ our %unified_info = ( }, "providers/implementations/kem" => { "deps" => [ + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", - "providers/implementations/kem/libfips-lib-rsa_kem.o" + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", + "providers/implementations/kem/libfips-lib-rsa_kem.o", + "providers/implementations/kem/libtemplate-lib-template_kem.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10069,19 +11694,29 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", - "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10109,18 +11744,18 @@ our %unified_info = ( }, "providers/implementations/rands" => { "deps" => [ - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o" ], "products" => { @@ -10149,13 +11784,31 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", - "providers/implementations/signature/libfips-lib-rsa_sig.o" + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", + "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/skeymgmt" => { + "deps" => [ + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o" ], "products" => { "lib" => [ @@ -10183,14 +11836,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -10206,32 +11860,107 @@ our %unified_info = ( "ssl/libssl-lib-t1_trce.o", "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", - "ssl/libssl-lib-tls_srp.o", - "ssl/libdefault-lib-s3_cbc.o", - "ssl/libfips-lib-s3_cbc.o" + "ssl/libssl-lib-tls_srp.o" ], "products" => { "lib" => [ - "libssl", - "providers/libdefault.a", - "providers/libfips.a" + "libssl" + ] + } + }, + "ssl/quic" => { + "deps" => [ + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, "ssl/record" => { "deps" => [ - "ssl/record/libssl-lib-dtls1_bitmap.o", "ssl/record/libssl-lib-rec_layer_d1.o", - "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/libssl-lib-rec_layer_s3.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "ssl/record/methods" => { + "deps" => [ + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/record/methods/libcommon-lib-tls_pad.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o", + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "products" => { "lib" => [ "libssl", - "providers/libcommon.a" + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "ssl/rio" => { + "deps" => [ + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, @@ -10269,9 +11998,40 @@ our %unified_info = ( "test/helpers/dtlstest-bin-ssltestlib.o", "test/helpers/endecode_test-bin-predefined_dhparams.o", "test/helpers/fatalerrtest-bin-ssltestlib.o", + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/helpers/pkcs12_api_test-bin-pkcs12.o", "test/helpers/pkcs12_format_test-bin-pkcs12.o", + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", "test/helpers/recordlentest-bin-ssltestlib.o", + "test/helpers/rpktest-bin-ssltestlib.o", "test/helpers/servername_test-bin-ssltestlib.o", + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/helpers/ssl_test-bin-handshake.o", "test/helpers/ssl_test-bin-handshake_srp.o", @@ -10280,7 +12040,8 @@ our %unified_info = ( "test/helpers/sslapitest-bin-ssltestlib.o", "test/helpers/sslbuffertest-bin-ssltestlib.o", "test/helpers/sslcorrupttest-bin-ssltestlib.o", - "test/helpers/tls13ccstest-bin-ssltestlib.o" + "test/helpers/tls13ccstest-bin-ssltestlib.o", + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" ], "products" => { "bin" => [ @@ -10298,16 +12059,37 @@ our %unified_info = ( "test/dtlstest", "test/endecode_test", "test/fatalerrtest", + "test/json_test", + "test/pkcs12_api_test", "test/pkcs12_format_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_radix_test", + "test/quic_srt_gen_test", + "test/quicapitest", + "test/quicfaultstest", "test/recordlentest", + "test/rpktest", "test/servername_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", "test/sslapitest", "test/sslbuffertest", "test/sslcorrupttest", - "test/tls13ccstest" + "test/tls13ccstest", + "test/tls13groupselection_test" + ] + } + }, + "test/radix" => { + "deps" => [ + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "products" => { + "bin" => [ + "test/quic_radix_test" ] } }, @@ -10319,6 +12101,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -10354,6 +12137,12 @@ our %unified_info = ( } }, "generate" => { + "OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], "apps/progs.c" => [ "apps/progs.pl", "\"-C\"", @@ -10364,6 +12153,19 @@ our %unified_info = ( "\"-H\"", "\$(APPS_OPENSSL)" ], + "builddata.pm" => [ + "util/mkinstallvars.pl", + "PREFIX=.", + "BINDIR=apps", + "APPLINKDIR=ms", + "LIBDIR=", + "INCLUDEDIR=include", + "\"INCLUDEDIR=\$(SRCDIR)/include\"", + "ENGINESDIR=engines", + "MODULESDIR=providers", + "\"VERSION=\$(VERSION)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"" + ], "crypto/aes/aes-586.S" => [ "crypto/aes/asm/aes-586.pl" ], @@ -10385,6 +12187,24 @@ our %unified_info = ( "crypto/aes/aes-ppc.s" => [ "crypto/aes/asm/aes-ppc.pl" ], + "crypto/aes/aes-riscv32-zkn.s" => [ + "crypto/aes/asm/aes-riscv32-zkn.pl" + ], + "crypto/aes/aes-riscv64-zkn.s" => [ + "crypto/aes/asm/aes-riscv64-zkn.pl" + ], + "crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvbb-zvkg-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkb-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkb-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkned.pl" + ], + "crypto/aes/aes-riscv64.s" => [ + "crypto/aes/asm/aes-riscv64.pl" + ], "crypto/aes/aes-s390x.S" => [ "crypto/aes/asm/aes-s390x.pl" ], @@ -10412,6 +12232,9 @@ our %unified_info = ( "crypto/aes/aesni-x86_64.s" => [ "crypto/aes/asm/aesni-x86_64.pl" ], + "crypto/aes/aesni-xts-avx512.s" => [ + "crypto/aes/asm/aesni-xts-avx512.pl" + ], "crypto/aes/aesp8-ppc.s" => [ "crypto/aes/asm/aesp8-ppc.pl" ], @@ -10424,12 +12247,18 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.S" => [ "crypto/aes/asm/bsaes-armv7.pl" ], + "crypto/aes/bsaes-armv8.S" => [ + "crypto/aes/asm/bsaes-armv8.pl" + ], "crypto/aes/bsaes-x86_64.s" => [ "crypto/aes/asm/bsaes-x86_64.pl" ], "crypto/aes/vpaes-armv8.S" => [ "crypto/aes/asm/vpaes-armv8.pl" ], + "crypto/aes/vpaes-loongarch64.S" => [ + "crypto/aes/asm/vpaes-loongarch64.pl" + ], "crypto/aes/vpaes-ppc.s" => [ "crypto/aes/asm/vpaes-ppc.pl" ], @@ -10490,15 +12319,33 @@ our %unified_info = ( "crypto/bn/ppc-mont.s" => [ "crypto/bn/asm/ppc-mont.pl" ], + "crypto/bn/ppc64-mont-fixed.s" => [ + "crypto/bn/asm/ppc64-mont-fixed.pl" + ], "crypto/bn/ppc64-mont.s" => [ "crypto/bn/asm/ppc64-mont.pl" ], + "crypto/bn/rsaz-2k-avx512.s" => [ + "crypto/bn/asm/rsaz-2k-avx512.pl" + ], + "crypto/bn/rsaz-2k-avxifma.s" => [ + "crypto/bn/asm/rsaz-2k-avxifma.pl" + ], + "crypto/bn/rsaz-3k-avx512.s" => [ + "crypto/bn/asm/rsaz-3k-avx512.pl" + ], + "crypto/bn/rsaz-3k-avxifma.s" => [ + "crypto/bn/asm/rsaz-3k-avxifma.pl" + ], + "crypto/bn/rsaz-4k-avx512.s" => [ + "crypto/bn/asm/rsaz-4k-avx512.pl" + ], + "crypto/bn/rsaz-4k-avxifma.s" => [ + "crypto/bn/asm/rsaz-4k-avxifma.pl" + ], "crypto/bn/rsaz-avx2.s" => [ "crypto/bn/asm/rsaz-avx2.pl" ], - "crypto/bn/rsaz-avx512.s" => [ - "crypto/bn/asm/rsaz-avx512.pl" - ], "crypto/bn/rsaz-x86_64.s" => [ "crypto/bn/asm/rsaz-x86_64.pl" ], @@ -10560,6 +12407,9 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.S" => [ "crypto/chacha/asm/chacha-armv4.pl" ], + "crypto/chacha/chacha-armv8-sve.S" => [ + "crypto/chacha/asm/chacha-armv8-sve.pl" + ], "crypto/chacha/chacha-armv8.S" => [ "crypto/chacha/asm/chacha-armv8.pl" ], @@ -10572,9 +12422,19 @@ our %unified_info = ( "crypto/chacha/chacha-ia64.s" => [ "crypto/chacha/chacha-ia64.S" ], + "crypto/chacha/chacha-loongarch64.S" => [ + "crypto/chacha/asm/chacha-loongarch64.pl" + ], "crypto/chacha/chacha-ppc.s" => [ "crypto/chacha/asm/chacha-ppc.pl" ], + "crypto/chacha/chacha-riscv64-v-zbb-zvkb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl", + "zvkb" + ], + "crypto/chacha/chacha-riscv64-v-zbb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl" + ], "crypto/chacha/chacha-s390x.S" => [ "crypto/chacha/asm/chacha-s390x.pl" ], @@ -10584,6 +12444,9 @@ our %unified_info = ( "crypto/chacha/chacha-x86_64.s" => [ "crypto/chacha/asm/chacha-x86_64.pl" ], + "crypto/chacha/chachap10-ppc.s" => [ + "crypto/chacha/asm/chachap10-ppc.pl" + ], "crypto/des/crypt586.S" => [ "crypto/des/asm/crypt586.pl" ], @@ -10596,6 +12459,9 @@ our %unified_info = ( "crypto/des/dest4-sparcv9.S" => [ "crypto/des/asm/dest4-sparcv9.pl" ], + "crypto/ec/ecp_nistp384-ppc64.s" => [ + "crypto/ec/asm/ecp_nistp384-ppc64.pl" + ], "crypto/ec/ecp_nistp521-ppc64.s" => [ "crypto/ec/asm/ecp_nistp521-ppc64.pl" ], @@ -10620,6 +12486,9 @@ our %unified_info = ( "crypto/ec/ecp_nistz256-x86_64.s" => [ "crypto/ec/asm/ecp_nistz256-x86_64.pl" ], + "crypto/ec/ecp_sm2p256-armv8.S" => [ + "crypto/ec/asm/ecp_sm2p256-armv8.pl" + ], "crypto/ec/x25519-ppc64.s" => [ "crypto/ec/asm/x25519-ppc64.pl" ], @@ -10629,18 +12498,39 @@ our %unified_info = ( "crypto/ia64cpuid.s" => [ "crypto/ia64cpuid.S" ], + "crypto/loongarch64cpuid.s" => [ + "crypto/loongarch64cpuid.pl" + ], "crypto/md5/md5-586.S" => [ "crypto/md5/asm/md5-586.pl" ], + "crypto/md5/md5-aarch64.S" => [ + "crypto/md5/asm/md5-aarch64.pl" + ], + "crypto/md5/md5-loongarch64.S" => [ + "crypto/md5/asm/md5-loongarch64.pl" + ], "crypto/md5/md5-sparcv9.S" => [ "crypto/md5/asm/md5-sparcv9.pl" ], "crypto/md5/md5-x86_64.s" => [ "crypto/md5/asm/md5-x86_64.pl" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.S" => [ + "crypto/modes/asm/aes-gcm-armv8-unroll8_64.pl" + ], "crypto/modes/aes-gcm-armv8_64.S" => [ "crypto/modes/asm/aes-gcm-armv8_64.pl" ], + "crypto/modes/aes-gcm-avx512.s" => [ + "crypto/modes/asm/aes-gcm-avx512.pl" + ], + "crypto/modes/aes-gcm-ppc.s" => [ + "crypto/modes/asm/aes-gcm-ppc.pl" + ], + "crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s" => [ + "crypto/modes/asm/aes-gcm-riscv64-zvkb-zvkg-zvkned.pl" + ], "crypto/modes/aesni-gcm-x86_64.s" => [ "crypto/modes/asm/aesni-gcm-x86_64.pl" ], @@ -10659,6 +12549,15 @@ our %unified_info = ( "crypto/modes/ghash-parisc.s" => [ "crypto/modes/asm/ghash-parisc.pl" ], + "crypto/modes/ghash-riscv64-zvkb-zvbc.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkb-zvbc.pl" + ], + "crypto/modes/ghash-riscv64-zvkg.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkg.pl" + ], + "crypto/modes/ghash-riscv64.s" => [ + "crypto/modes/asm/ghash-riscv64.pl" + ], "crypto/modes/ghash-s390x.S" => [ "crypto/modes/asm/ghash-s390x.pl" ], @@ -10677,6 +12576,9 @@ our %unified_info = ( "crypto/modes/ghashv8-armx.S" => [ "crypto/modes/asm/ghashv8-armx.pl" ], + "crypto/params_idx.c" => [ + "crypto/params_idx.c.in" + ], "crypto/pariscid.s" => [ "crypto/pariscid.pl" ], @@ -10737,6 +12639,12 @@ our %unified_info = ( "crypto/ripemd/rmd-586.S" => [ "crypto/ripemd/asm/rmd-586.pl" ], + "crypto/riscv32cpuid.s" => [ + "crypto/riscv32cpuid.pl" + ], + "crypto/riscv64cpuid.s" => [ + "crypto/riscv64cpuid.pl" + ], "crypto/s390xcpuid.S" => [ "crypto/s390xcpuid.pl" ], @@ -10845,6 +12753,9 @@ our %unified_info = ( "crypto/sha/sha256-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S" => [ + "crypto/sha/asm/sha256-riscv64-zvkb-zvknha_or_zvknhb.pl" + ], "crypto/sha/sha256-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -10881,6 +12792,9 @@ our %unified_info = ( "crypto/sha/sha512-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha512-riscv64-zvkb-zvknhb.S" => [ + "crypto/sha/asm/sha512-riscv64-zvkb-zvknhb.pl" + ], "crypto/sha/sha512-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -10893,6 +12807,24 @@ our %unified_info = ( "crypto/sha/sha512p8-ppc.s" => [ "crypto/sha/asm/sha512p8-ppc.pl" ], + "crypto/sm3/sm3-armv8.S" => [ + "crypto/sm3/asm/sm3-armv8.pl" + ], + "crypto/sm3/sm3-riscv64-zvksh.S" => [ + "crypto/sm3/asm/sm3-riscv64-zvksh.pl" + ], + "crypto/sm4/sm4-armv8.S" => [ + "crypto/sm4/asm/sm4-armv8.pl" + ], + "crypto/sm4/sm4-riscv64-zvksed.s" => [ + "crypto/sm4/asm/sm4-riscv64-zvksed.pl" + ], + "crypto/sm4/vpsm4-armv8.S" => [ + "crypto/sm4/asm/vpsm4-armv8.pl" + ], + "crypto/sm4/vpsm4_ex-armv8.S" => [ + "crypto/sm4/asm/vpsm4_ex-armv8.pl" + ], "crypto/uplink-ia64.s" => [ "ms/uplink-ia64.pl" ], @@ -11058,6 +12990,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -11199,6 +13134,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -11235,6 +13173,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -11250,6 +13191,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -11322,6 +13266,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -11388,6 +13335,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -11487,6 +13437,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -11625,6 +13581,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -11742,6 +13701,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -11829,6 +13794,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -11901,9 +13869,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -11919,12 +13893,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -11994,9 +13974,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -12006,12 +13995,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -12027,9 +14028,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -12054,6 +14061,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -12069,6 +14079,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -12105,6 +14118,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -12378,6 +14394,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -12417,6 +14436,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -12438,6 +14460,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -12552,6 +14577,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -12579,9 +14607,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -12597,6 +14637,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -12606,12 +14649,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -12630,12 +14679,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -12645,9 +14706,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -12660,9 +14727,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -12678,24 +14757,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -12708,6 +14808,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -12717,8 +14823,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -12738,6 +14844,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -12786,6 +14907,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -12852,6 +14976,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -12975,9 +15102,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -12993,6 +15126,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -13017,9 +15153,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -13053,6 +15198,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -13110,15 +15258,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -13128,6 +15288,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -13149,9 +15312,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -13167,6 +15336,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -13179,9 +15351,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -13212,9 +15381,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -13230,12 +15396,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -13290,6 +15510,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -13299,9 +15522,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -13449,6 +15669,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -13590,6 +15813,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -13626,6 +15852,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -13641,6 +15870,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -13713,6 +15945,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -13779,6 +16014,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -13878,6 +16116,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -14016,6 +16260,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -14133,6 +16380,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -14220,6 +16473,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -14292,9 +16548,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -14310,12 +16572,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -14385,9 +16653,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -14397,12 +16674,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -14418,9 +16707,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -14445,6 +16740,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -14460,6 +16758,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -14496,6 +16797,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -14769,6 +17073,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -14808,6 +17115,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -14829,6 +17139,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -14943,6 +17256,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -14970,9 +17286,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -14988,6 +17316,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -14997,12 +17328,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -15021,11 +17358,23 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], - "doc/man/man3/SSL_get_shared_sigalgs.3" => [ - "doc/man3/SSL_get_shared_sigalgs.pod" + "doc/man/man3/SSL_get_shared_sigalgs.3" => [ + "doc/man3/SSL_get_shared_sigalgs.pod" + ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" @@ -15036,9 +17385,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -15051,9 +17406,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -15069,24 +17436,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -15099,6 +17487,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -15108,8 +17502,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -15129,6 +17523,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -15177,6 +17586,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -15243,6 +17655,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -15366,9 +17781,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -15384,6 +17805,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -15408,9 +17832,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -15444,6 +17877,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -15501,15 +17937,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -15519,6 +17967,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -15540,9 +17991,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -15558,6 +18015,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -15570,9 +18030,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -15603,9 +18060,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -15621,12 +18075,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -15681,6 +18189,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -15690,9 +18201,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -15828,6 +18336,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc/man1/openssl-sess_id.pod.in" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in" ], @@ -15864,12 +18375,30 @@ our %unified_info = ( "engines/e_padlock-x86_64.s" => [ "engines/asm/e_padlock-x86_64.pl" ], + "exporters/OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], + "exporters/libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], + "exporters/libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "exporters/openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "include/crypto/bn_conf.h" => [ "include/crypto/bn_conf.h.in" ], "include/crypto/dso_conf.h" => [ "include/crypto/dso_conf.h.in" ], + "include/internal/param_names.h" => [ + "include/internal/param_names.h.in" + ], "include/openssl/asn1.h" => [ "include/openssl/asn1.h.in" ], @@ -15885,12 +18414,18 @@ our %unified_info = ( "include/openssl/cms.h" => [ "include/openssl/cms.h.in" ], + "include/openssl/comp.h" => [ + "include/openssl/comp.h.in" + ], "include/openssl/conf.h" => [ "include/openssl/conf.h.in" ], "include/openssl/configuration.h" => [ "include/openssl/configuration.h.in" ], + "include/openssl/core_names.h" => [ + "include/openssl/core_names.h.in" + ], "include/openssl/crmf.h" => [ "include/openssl/crmf.h.in" ], @@ -15939,20 +18474,47 @@ our %unified_info = ( "include/openssl/x509.h" => [ "include/openssl/x509.h.in" ], + "include/openssl/x509_acert.h" => [ + "include/openssl/x509_acert.h.in" + ], "include/openssl/x509_vfy.h" => [ "include/openssl/x509_vfy.h.in" ], "include/openssl/x509v3.h" => [ "include/openssl/x509v3.h.in" ], + "installdata.pm" => [ + "util/mkinstallvars.pl", + "\"PREFIX=\$(INSTALLTOP)\"", + "BINDIR=bin", + "\"LIBDIR=\$(LIBDIR)\"", + "\"libdir=\$(libdir)\"", + "INCLUDEDIR=include", + "APPLINKDIR=include/openssl", + "\"ENGINESDIR=\$(ENGINESDIR)\"", + "\"MODULESDIR=\$(MODULESDIR)\"", + "\"PKGCONFIGDIR=\$(PKGCONFIGDIR)\"", + "\"CMAKECONFIGDIR=\$(CMAKECONFIGDIR)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"", + "\"VERSION=\$(VERSION)\"" + ], "libcrypto.ld" => [ "util/libcrypto.num", "libcrypto" ], + "libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], "libssl.ld" => [ "util/libssl.num", "libssl" ], + "libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/der_digests_gen.c.in" ], @@ -15965,9 +18527,15 @@ our %unified_info = ( "providers/common/der/der_ecx_gen.c" => [ "providers/common/der/der_ecx_gen.c.in" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/der_ml_dsa_gen.c.in" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/der_rsa_gen.c.in" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/der_slh_dsa_gen.c.in" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/der_sm2_gen.c.in" ], @@ -15986,9 +18554,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/include/prov/der_ecx.h.in" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/include/prov/der_ml_dsa.h.in" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/include/prov/der_rsa.h.in" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/include/prov/der_slh_dsa.h.in" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/include/prov/der_sm2.h.in" ], @@ -16030,6 +18604,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "buffer" ], + "test/buildtest_byteorder.c" => [ + "test/generate_buildtest.pl", + "byteorder" + ], "test/buildtest_camellia.c" => [ "test/generate_buildtest.pl", "camellia" @@ -16062,10 +18640,6 @@ our %unified_info = ( "test/generate_buildtest.pl", "core_dispatch" ], - "test/buildtest_core_names.c" => [ - "test/generate_buildtest.pl", - "core_names" - ], "test/buildtest_core_object.c" => [ "test/generate_buildtest.pl", "core_object" @@ -16098,6 +18672,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "e_os2" ], + "test/buildtest_e_ostime.c" => [ + "test/generate_buildtest.pl", + "e_ostime" + ], "test/buildtest_ebcdic.c" => [ "test/generate_buildtest.pl", "ebcdic" @@ -16134,6 +18712,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "hmac" ], + "test/buildtest_hpke.c" => [ + "test/generate_buildtest.pl", + "hpke" + ], "test/buildtest_http.c" => [ "test/generate_buildtest.pl", "http" @@ -16142,6 +18724,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "idea" ], + "test/buildtest_indicator.c" => [ + "test/generate_buildtest.pl", + "indicator" + ], "test/buildtest_kdf.c" => [ "test/generate_buildtest.pl", "kdf" @@ -16162,6 +18748,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "mdc2" ], + "test/buildtest_ml_kem.c" => [ + "test/generate_buildtest.pl", + "ml_kem" + ], "test/buildtest_modes.c" => [ "test/generate_buildtest.pl", "modes" @@ -16202,6 +18792,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "provider" ], + "test/buildtest_quic.c" => [ + "test/generate_buildtest.pl", + "quic" + ], "test/buildtest_rand.c" => [ "test/generate_buildtest.pl", "rand" @@ -16258,6 +18852,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "symhacks" ], + "test/buildtest_thread.c" => [ + "test/generate_buildtest.pl", + "thread" + ], "test/buildtest_tls1.c" => [ "test/generate_buildtest.pl", "tls1" @@ -16338,6 +18936,7 @@ our %unified_info = ( "doc/html/man1/openssl-s_server.html", "doc/html/man1/openssl-s_time.html", "doc/html/man1/openssl-sess_id.html", + "doc/html/man1/openssl-skeyutl.html", "doc/html/man1/openssl-smime.html", "doc/html/man1/openssl-speed.html", "doc/html/man1/openssl-spkac.html", @@ -16387,6 +18986,7 @@ our %unified_info = ( "doc/html/man3/BIO_find_type.html", "doc/html/man3/BIO_get_data.html", "doc/html/man3/BIO_get_ex_new_index.html", + "doc/html/man3/BIO_get_rpoll_descriptor.html", "doc/html/man3/BIO_meth_new.html", "doc/html/man3/BIO_new.html", "doc/html/man3/BIO_new_CMS.html", @@ -16399,11 +18999,13 @@ our %unified_info = ( "doc/html/man3/BIO_s_connect.html", "doc/html/man3/BIO_s_core.html", "doc/html/man3/BIO_s_datagram.html", + "doc/html/man3/BIO_s_dgram_pair.html", "doc/html/man3/BIO_s_fd.html", "doc/html/man3/BIO_s_file.html", "doc/html/man3/BIO_s_mem.html", "doc/html/man3/BIO_s_null.html", "doc/html/man3/BIO_s_socket.html", + "doc/html/man3/BIO_sendmmsg.html", "doc/html/man3/BIO_set_callback.html", "doc/html/man3/BIO_should_retry.html", "doc/html/man3/BIO_socket_wait.html", @@ -16428,6 +19030,7 @@ our %unified_info = ( "doc/html/man3/BN_swap.html", "doc/html/man3/BN_zero.html", "doc/html/man3/BUF_MEM_new.html", + "doc/html/man3/CMAC_CTX.html", "doc/html/man3/CMS_EncryptedData_decrypt.html", "doc/html/man3/CMS_EncryptedData_encrypt.html", "doc/html/man3/CMS_EnvelopedData_create.html", @@ -16450,6 +19053,7 @@ our %unified_info = ( "doc/html/man3/CMS_uncompress.html", "doc/html/man3/CMS_verify.html", "doc/html/man3/CMS_verify_receipt.html", + "doc/html/man3/COMP_CTX_new.html", "doc/html/man3/CONF_modules_free.html", "doc/html/man3/CONF_modules_load_file.html", "doc/html/man3/CRYPTO_THREAD_run_once.html", @@ -16483,6 +19087,8 @@ our %unified_info = ( "doc/html/man3/DSA_size.html", "doc/html/man3/DTLS_get_data_mtu.html", "doc/html/man3/DTLS_set_timer_cb.html", + "doc/html/man3/DTLSv1_get_timeout.html", + "doc/html/man3/DTLSv1_handle_timeout.html", "doc/html/man3/DTLSv1_listen.html", "doc/html/man3/ECDSA_SIG_new.html", "doc/html/man3/ECDSA_sign.html", @@ -16529,6 +19135,7 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_ctrl.html", "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html", "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html", + "doc/html/man3/EVP_PKEY_CTX_get_algor.html", "doc/html/man3/EVP_PKEY_CTX_new.html", "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html", "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html", @@ -16568,6 +19175,8 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_verify_recover.html", "doc/html/man3/EVP_RAND.html", "doc/html/man3/EVP_SIGNATURE.html", + "doc/html/man3/EVP_SKEY.html", + "doc/html/man3/EVP_SKEYMGMT.html", "doc/html/man3/EVP_SealInit.html", "doc/html/man3/EVP_SignInit.html", "doc/html/man3/EVP_VerifyInit.html", @@ -16597,6 +19206,7 @@ our %unified_info = ( "doc/html/man3/EVP_sm3.html", "doc/html/man3/EVP_sm4_cbc.html", "doc/html/man3/EVP_whirlpool.html", + "doc/html/man3/GENERAL_NAME.html", "doc/html/man3/HMAC.html", "doc/html/man3/MD5.html", "doc/html/man3/MDC2_Init.html", @@ -16621,14 +19231,18 @@ our %unified_info = ( "doc/html/man3/OPENSSL_init_ssl.html", "doc/html/man3/OPENSSL_instrument_bus.html", "doc/html/man3/OPENSSL_load_builtin_modules.html", + "doc/html/man3/OPENSSL_load_u16_le.html", "doc/html/man3/OPENSSL_malloc.html", + "doc/html/man3/OPENSSL_riscvcap.html", "doc/html/man3/OPENSSL_s390xcap.html", "doc/html/man3/OPENSSL_secure_malloc.html", "doc/html/man3/OPENSSL_strcasecmp.html", "doc/html/man3/OSSL_ALGORITHM.html", "doc/html/man3/OSSL_CALLBACK.html", + "doc/html/man3/OSSL_CMP_ATAV_set0.html", "doc/html/man3/OSSL_CMP_CTX_new.html", "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html", + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html", "doc/html/man3/OSSL_CMP_ITAV_set0.html", "doc/html/man3/OSSL_CMP_MSG_get0_header.html", "doc/html/man3/OSSL_CMP_MSG_http_perform.html", @@ -16652,18 +19266,27 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_CTX.html", "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html", "doc/html/man3/OSSL_ENCODER_to_bio.html", + "doc/html/man3/OSSL_ERR_STATE_save.html", "doc/html/man3/OSSL_ESS_check_signing_certs.html", + "doc/html/man3/OSSL_GENERAL_NAMES_print.html", + "doc/html/man3/OSSL_HPKE_CTX_new.html", "doc/html/man3/OSSL_HTTP_REQ_CTX.html", "doc/html/man3/OSSL_HTTP_parse_url.html", "doc/html/man3/OSSL_HTTP_transfer.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html", + "doc/html/man3/OSSL_INDICATOR_set_callback.html", "doc/html/man3/OSSL_ITEM.html", "doc/html/man3/OSSL_LIB_CTX.html", + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html", "doc/html/man3/OSSL_PARAM.html", "doc/html/man3/OSSL_PARAM_BLD.html", "doc/html/man3/OSSL_PARAM_allocate_from_text.html", "doc/html/man3/OSSL_PARAM_dup.html", "doc/html/man3/OSSL_PARAM_int.html", + "doc/html/man3/OSSL_PARAM_print_to_bio.html", "doc/html/man3/OSSL_PROVIDER.html", + "doc/html/man3/OSSL_QUIC_client_method.html", "doc/html/man3/OSSL_SELF_TEST_new.html", "doc/html/man3/OSSL_SELF_TEST_set_callback.html", "doc/html/man3/OSSL_STORE_INFO.html", @@ -16672,11 +19295,13 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_attach.html", "doc/html/man3/OSSL_STORE_expect.html", "doc/html/man3/OSSL_STORE_open.html", + "doc/html/man3/OSSL_sleep.html", "doc/html/man3/OSSL_trace_enabled.html", "doc/html/man3/OSSL_trace_get_category_num.html", "doc/html/man3/OSSL_trace_set_channel.html", "doc/html/man3/OpenSSL_add_all_algorithms.html", "doc/html/man3/OpenSSL_version.html", + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html", "doc/html/man3/PEM_X509_INFO_read_bio_ex.html", "doc/html/man3/PEM_bytes_read_bio.html", "doc/html/man3/PEM_read.html", @@ -16689,6 +19314,7 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_create_cert.html", "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html", "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html", + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html", "doc/html/man3/PKCS12_add1_attr_by_NID.html", "doc/html/man3/PKCS12_add_CSPName_asc.html", "doc/html/man3/PKCS12_add_cert.html", @@ -16780,6 +19406,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_sess_set_get_cb.html", "doc/html/man3/SSL_CTX_sessions.html", "doc/html/man3/SSL_CTX_set0_CA_list.html", + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html", "doc/html/man3/SSL_CTX_set1_curves.html", "doc/html/man3/SSL_CTX_set1_sigalgs.html", "doc/html/man3/SSL_CTX_set1_verify_cert_store.html", @@ -16793,6 +19420,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_ct_validation_callback.html", "doc/html/man3/SSL_CTX_set_ctlog_list_file.html", "doc/html/man3/SSL_CTX_set_default_passwd_cb.html", + "doc/html/man3/SSL_CTX_set_domain_flags.html", "doc/html/man3/SSL_CTX_set_generate_session_id.html", "doc/html/man3/SSL_CTX_set_info_callback.html", "doc/html/man3/SSL_CTX_set_keylog_callback.html", @@ -16800,6 +19428,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_min_proto_version.html", "doc/html/man3/SSL_CTX_set_mode.html", "doc/html/man3/SSL_CTX_set_msg_callback.html", + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html", "doc/html/man3/SSL_CTX_set_num_tickets.html", "doc/html/man3/SSL_CTX_set_options.html", "doc/html/man3/SSL_CTX_set_psk_client_callback.html", @@ -16838,6 +19467,7 @@ our %unified_info = ( "doc/html/man3/SSL_SESSION_print.html", "doc/html/man3/SSL_SESSION_set1_id.html", "doc/html/man3/SSL_accept.html", + "doc/html/man3/SSL_accept_stream.html", "doc/html/man3/SSL_alert_type_string.html", "doc/html/man3/SSL_alloc_buffers.html", "doc/html/man3/SSL_check_chain.html", @@ -16847,59 +19477,90 @@ our %unified_info = ( "doc/html/man3/SSL_export_keying_material.html", "doc/html/man3/SSL_extension_supported.html", "doc/html/man3/SSL_free.html", + "doc/html/man3/SSL_get0_connection.html", + "doc/html/man3/SSL_get0_group_name.html", + "doc/html/man3/SSL_get0_peer_rpk.html", "doc/html/man3/SSL_get0_peer_scts.html", + "doc/html/man3/SSL_get1_builtin_sigalgs.html", "doc/html/man3/SSL_get_SSL_CTX.html", "doc/html/man3/SSL_get_all_async_fds.html", "doc/html/man3/SSL_get_certificate.html", "doc/html/man3/SSL_get_ciphers.html", "doc/html/man3/SSL_get_client_random.html", + "doc/html/man3/SSL_get_conn_close_info.html", "doc/html/man3/SSL_get_current_cipher.html", "doc/html/man3/SSL_get_default_timeout.html", "doc/html/man3/SSL_get_error.html", + "doc/html/man3/SSL_get_event_timeout.html", "doc/html/man3/SSL_get_extms_support.html", "doc/html/man3/SSL_get_fd.html", + "doc/html/man3/SSL_get_handshake_rtt.html", "doc/html/man3/SSL_get_peer_cert_chain.html", "doc/html/man3/SSL_get_peer_certificate.html", "doc/html/man3/SSL_get_peer_signature_nid.html", "doc/html/man3/SSL_get_peer_tmp_key.html", "doc/html/man3/SSL_get_psk_identity.html", "doc/html/man3/SSL_get_rbio.html", + "doc/html/man3/SSL_get_rpoll_descriptor.html", "doc/html/man3/SSL_get_session.html", "doc/html/man3/SSL_get_shared_sigalgs.html", + "doc/html/man3/SSL_get_stream_id.html", + "doc/html/man3/SSL_get_stream_read_state.html", + "doc/html/man3/SSL_get_value_uint.html", "doc/html/man3/SSL_get_verify_result.html", "doc/html/man3/SSL_get_version.html", "doc/html/man3/SSL_group_to_name.html", + "doc/html/man3/SSL_handle_events.html", "doc/html/man3/SSL_in_init.html", + "doc/html/man3/SSL_inject_net_dgram.html", "doc/html/man3/SSL_key_update.html", "doc/html/man3/SSL_library_init.html", "doc/html/man3/SSL_load_client_CA_file.html", "doc/html/man3/SSL_new.html", + "doc/html/man3/SSL_new_domain.html", + "doc/html/man3/SSL_new_listener.html", + "doc/html/man3/SSL_new_stream.html", "doc/html/man3/SSL_pending.html", + "doc/html/man3/SSL_poll.html", "doc/html/man3/SSL_read.html", "doc/html/man3/SSL_read_early_data.html", "doc/html/man3/SSL_rstate_string.html", "doc/html/man3/SSL_session_reused.html", "doc/html/man3/SSL_set1_host.html", + "doc/html/man3/SSL_set1_initial_peer_addr.html", + "doc/html/man3/SSL_set1_server_cert_type.html", "doc/html/man3/SSL_set_async_callback.html", "doc/html/man3/SSL_set_bio.html", + "doc/html/man3/SSL_set_blocking_mode.html", "doc/html/man3/SSL_set_connect_state.html", + "doc/html/man3/SSL_set_default_stream_mode.html", "doc/html/man3/SSL_set_fd.html", + "doc/html/man3/SSL_set_incoming_stream_policy.html", + "doc/html/man3/SSL_set_quic_tls_cbs.html", "doc/html/man3/SSL_set_retry_verify.html", "doc/html/man3/SSL_set_session.html", + "doc/html/man3/SSL_set_session_secret_cb.html", "doc/html/man3/SSL_set_shutdown.html", "doc/html/man3/SSL_set_verify_result.html", "doc/html/man3/SSL_shutdown.html", "doc/html/man3/SSL_state_string.html", + "doc/html/man3/SSL_stream_conclude.html", + "doc/html/man3/SSL_stream_reset.html", "doc/html/man3/SSL_want.html", "doc/html/man3/SSL_write.html", "doc/html/man3/TS_RESP_CTX_new.html", - "doc/html/man3/TS_VERIFY_CTX_set_certs.html", + "doc/html/man3/TS_VERIFY_CTX.html", "doc/html/man3/UI_STRING.html", "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", + "doc/html/man3/X509_ACERT_add1_attr.html", + "doc/html/man3/X509_ACERT_add_attr_nconf.html", + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html", + "doc/html/man3/X509_ACERT_get_attr.html", + "doc/html/man3/X509_ACERT_print_ex.html", "doc/html/man3/X509_ALGOR_dup.html", "doc/html/man3/X509_ATTRIBUTE.html", "doc/html/man3/X509_CRL_get0_by_serial.html", @@ -16916,6 +19577,7 @@ our %unified_info = ( "doc/html/man3/X509_REQ_get_attr.html", "doc/html/man3/X509_REQ_get_extensions.html", "doc/html/man3/X509_SIG_get0.html", + "doc/html/man3/X509_STORE_CTX_get_by_subject.html", "doc/html/man3/X509_STORE_CTX_get_error.html", "doc/html/man3/X509_STORE_CTX_new.html", "doc/html/man3/X509_STORE_CTX_set_verify_cb.html", @@ -16938,6 +19600,7 @@ our %unified_info = ( "doc/html/man3/X509_get0_notBefore.html", "doc/html/man3/X509_get0_signature.html", "doc/html/man3/X509_get0_uids.html", + "doc/html/man3/X509_get_default_cert_file.html", "doc/html/man3/X509_get_extension_flags.html", "doc/html/man3/X509_get_pubkey.html", "doc/html/man3/X509_get_serialNumber.html", @@ -16983,12 +19646,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-RC5.html", "doc/html/man7/EVP_CIPHER-SEED.html", "doc/html/man7/EVP_CIPHER-SM4.html", + "doc/html/man7/EVP_KDF-ARGON2.html", "doc/html/man7/EVP_KDF-HKDF.html", + "doc/html/man7/EVP_KDF-HMAC-DRBG.html", "doc/html/man7/EVP_KDF-KB.html", "doc/html/man7/EVP_KDF-KRB5KDF.html", "doc/html/man7/EVP_KDF-PBKDF1.html", "doc/html/man7/EVP_KDF-PBKDF2.html", "doc/html/man7/EVP_KDF-PKCS12KDF.html", + "doc/html/man7/EVP_KDF-PVKKDF.html", "doc/html/man7/EVP_KDF-SCRYPT.html", "doc/html/man7/EVP_KDF-SS.html", "doc/html/man7/EVP_KDF-SSHKDF.html", @@ -16997,7 +19663,10 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X942-ASN1.html", "doc/html/man7/EVP_KDF-X942-CONCAT.html", "doc/html/man7/EVP_KDF-X963.html", + "doc/html/man7/EVP_KEM-EC.html", + "doc/html/man7/EVP_KEM-ML-KEM.html", "doc/html/man7/EVP_KEM-RSA.html", + "doc/html/man7/EVP_KEM-X25519.html", "doc/html/man7/EVP_KEYEXCH-DH.html", "doc/html/man7/EVP_KEYEXCH-ECDH.html", "doc/html/man7/EVP_KEYEXCH-X25519.html", @@ -17009,6 +19678,7 @@ our %unified_info = ( "doc/html/man7/EVP_MAC-Poly1305.html", "doc/html/man7/EVP_MAC-Siphash.html", "doc/html/man7/EVP_MD-BLAKE2.html", + "doc/html/man7/EVP_MD-KECCAK.html", "doc/html/man7/EVP_MD-MD2.html", "doc/html/man7/EVP_MD-MD4.html", "doc/html/man7/EVP_MD-MD5-SHA1.html", @@ -17028,12 +19698,17 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-EC.html", "doc/html/man7/EVP_PKEY-FFC.html", "doc/html/man7/EVP_PKEY-HMAC.html", + "doc/html/man7/EVP_PKEY-ML-DSA.html", + "doc/html/man7/EVP_PKEY-ML-KEM.html", "doc/html/man7/EVP_PKEY-RSA.html", + "doc/html/man7/EVP_PKEY-SLH-DSA.html", "doc/html/man7/EVP_PKEY-SM2.html", "doc/html/man7/EVP_PKEY-X25519.html", + "doc/html/man7/EVP_RAND-CRNG-TEST.html", "doc/html/man7/EVP_RAND-CTR-DRBG.html", "doc/html/man7/EVP_RAND-HASH-DRBG.html", "doc/html/man7/EVP_RAND-HMAC-DRBG.html", + "doc/html/man7/EVP_RAND-JITTER.html", "doc/html/man7/EVP_RAND-SEED-SRC.html", "doc/html/man7/EVP_RAND-TEST-RAND.html", "doc/html/man7/EVP_RAND.html", @@ -17041,17 +19716,19 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-ECDSA.html", "doc/html/man7/EVP_SIGNATURE-ED25519.html", "doc/html/man7/EVP_SIGNATURE-HMAC.html", + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html", "doc/html/man7/EVP_SIGNATURE-RSA.html", + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html", "doc/html/man7/OSSL_PROVIDER-FIPS.html", "doc/html/man7/OSSL_PROVIDER-base.html", "doc/html/man7/OSSL_PROVIDER-default.html", "doc/html/man7/OSSL_PROVIDER-legacy.html", "doc/html/man7/OSSL_PROVIDER-null.html", + "doc/html/man7/OSSL_STORE-winstore.html", "doc/html/man7/RAND.html", "doc/html/man7/RSA-PSS.html", "doc/html/man7/X25519.html", "doc/html/man7/bio.html", - "doc/html/man7/crypto.html", "doc/html/man7/ct.html", "doc/html/man7/des_modes.html", "doc/html/man7/evp.html", @@ -17062,14 +19739,31 @@ our %unified_info = ( "doc/html/man7/life_cycle-mac.html", "doc/html/man7/life_cycle-pkey.html", "doc/html/man7/life_cycle-rand.html", - "doc/html/man7/migration_guide.html", "doc/html/man7/openssl-core.h.html", "doc/html/man7/openssl-core_dispatch.h.html", "doc/html/man7/openssl-core_names.h.html", "doc/html/man7/openssl-env.html", "doc/html/man7/openssl-glossary.html", + "doc/html/man7/openssl-qlog.html", + "doc/html/man7/openssl-quic-concurrency.html", + "doc/html/man7/openssl-quic.html", "doc/html/man7/openssl-threads.html", "doc/html/man7/openssl_user_macros.html", + "doc/html/man7/ossl-guide-introduction.html", + "doc/html/man7/ossl-guide-libcrypto-introduction.html", + "doc/html/man7/ossl-guide-libraries-introduction.html", + "doc/html/man7/ossl-guide-libssl-introduction.html", + "doc/html/man7/ossl-guide-migration.html", + "doc/html/man7/ossl-guide-quic-client-block.html", + "doc/html/man7/ossl-guide-quic-client-non-block.html", + "doc/html/man7/ossl-guide-quic-introduction.html", + "doc/html/man7/ossl-guide-quic-multi-stream.html", + "doc/html/man7/ossl-guide-quic-server-block.html", + "doc/html/man7/ossl-guide-quic-server-non-block.html", + "doc/html/man7/ossl-guide-tls-client-block.html", + "doc/html/man7/ossl-guide-tls-client-non-block.html", + "doc/html/man7/ossl-guide-tls-introduction.html", + "doc/html/man7/ossl-guide-tls-server-block.html", "doc/html/man7/ossl_store-file.html", "doc/html/man7/ossl_store.html", "doc/html/man7/passphrase-encoding.html", @@ -17088,10 +19782,10 @@ our %unified_info = ( "doc/html/man7/provider-object.html", "doc/html/man7/provider-rand.html", "doc/html/man7/provider-signature.html", + "doc/html/man7/provider-skeymgmt.html", "doc/html/man7/provider-storemgmt.html", "doc/html/man7/provider.html", "doc/html/man7/proxy-certificates.html", - "doc/html/man7/ssl.html", "doc/html/man7/x509.html" ] }, @@ -17106,12 +19800,21 @@ our %unified_info = ( ] }, "includes" => { + "OpenSSLConfig.cmake" => [ + "." + ], + "OpenSSLConfigVersion.cmake" => [ + "." + ], "apps/asn1parse.o" => [ "apps" ], "apps/ca.o" => [ "apps" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps" + ], "apps/ciphers.o" => [ "apps" ], @@ -17338,6 +20041,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps" + ], "apps/openssl-bin-smime.o" => [ "apps" ], @@ -17425,6 +20131,9 @@ our %unified_info = ( "apps/sess_id.o" => [ "apps" ], + "apps/skeyutl.o" => [ + "apps" + ], "apps/smime.o" => [ "apps" ], @@ -17476,6 +20185,12 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.o" => [ "crypto" ], + "crypto/aes/vpaes-armv8.o" => [ + "crypto" + ], + "crypto/aes/vpaes-loongarch64.o" => [ + "crypto" + ], "crypto/arm64cpuid.o" => [ "crypto" ], @@ -17527,9 +20242,15 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.o" => [ "crypto" ], + "crypto/chacha/chacha-armv8-sve.o" => [ + "crypto" + ], "crypto/chacha/chacha-armv8.o" => [ "crypto" ], + "crypto/chacha/chacha-loongarch64.o" => [ + "crypto" + ], "crypto/chacha/chacha-s390x.o" => [ "crypto" ], @@ -17554,15 +20275,24 @@ our %unified_info = ( "crypto/ec/ecp_s390x_nistp.o" => [ "crypto" ], + "crypto/ec/ecp_sm2p256-armv8.o" => [ + "crypto" + ], + "crypto/ec/ecx_key.o" => [ + "crypto" + ], "crypto/ec/ecx_meth.o" => [ "crypto" ], - "crypto/ec/ecx_s390x.o" => [ + "crypto/ec/libcrypto-lib-ecx_key.o" => [ "crypto" ], "crypto/ec/libcrypto-lib-ecx_meth.o" => [ "crypto" ], + "crypto/ec/libfips-lib-ecx_key.o" => [ + "crypto" + ], "crypto/evp/e_aes.o" => [ "crypto", "crypto/modes" @@ -17634,9 +20364,18 @@ our %unified_info = ( "crypto/libfips-lib-cpuid.o" => [ "." ], + "crypto/md5/md5-aarch64.o" => [ + "crypto" + ], + "crypto/md5/md5-loongarch64.o" => [ + "crypto" + ], "crypto/md5/md5-sparcv9.o" => [ "crypto" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.o" => [ + "crypto" + ], "crypto/modes/aes-gcm-armv8_64.o" => [ "crypto" ], @@ -17661,6 +20400,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-gcm128.o" => [ "crypto" ], + "crypto/params_idx.c" => [ + "util/perl" + ], "crypto/poly1305/poly1305-armv4.o" => [ "crypto" ], @@ -17682,6 +20424,9 @@ our %unified_info = ( "crypto/sha/keccak1600-armv4.o" => [ "crypto" ], + "crypto/sha/keccak1600-armv8.o" => [ + "crypto" + ], "crypto/sha/sha1-armv4-large.o" => [ "crypto" ], @@ -17727,6 +20472,18 @@ our %unified_info = ( "crypto/sha/sha512-sparcv9.o" => [ "crypto" ], + "crypto/sm3/sm3-armv8.o" => [ + "crypto" + ], + "crypto/sm4/sm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4_ex-armv8.o" => [ + "crypto" + ], "doc/man1/openssl-asn1parse.pod" => [ "doc" ], @@ -17859,6 +20616,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc" + ], "doc/man1/openssl-smime.pod" => [ "doc" ], @@ -17886,6 +20646,24 @@ our %unified_info = ( "doc/man1/openssl-x509.pod" => [ "doc" ], + "exporters/OpenSSLConfig.cmake" => [ + "." + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "." + ], + "exporters/libcrypto.pc" => [ + "." + ], + "exporters/libssl.pc" => [ + "." + ], + "exporters/openssl.pc" => [ + "." + ], + "fuzz/acert-test" => [ + "include" + ], "fuzz/asn1-test" => [ "include" ], @@ -17916,12 +20694,69 @@ our %unified_info = ( "fuzz/ct-test" => [ "include" ], + "fuzz/decoder-test" => [ + "include" + ], + "fuzz/dtlsclient-test" => [ + "include" + ], + "fuzz/dtlsserver-test" => [ + "include" + ], + "fuzz/hashtable-test" => [ + "include" + ], + "fuzz/ml-dsa-test" => [ + "include" + ], + "fuzz/ml-kem-test" => [ + "include" + ], + "fuzz/pem-test" => [ + "include" + ], + "fuzz/provider-test" => [ + "include" + ], + "fuzz/punycode-test" => [ + "include" + ], + "fuzz/quic-client-test" => [ + "include" + ], + "fuzz/quic-lcidm-test" => [ + "include" + ], + "fuzz/quic-rcidm-test" => [ + "include" + ], + "fuzz/quic-server-test" => [ + "include" + ], + "fuzz/quic-srtm-test" => [ + "include" + ], "fuzz/server-test" => [ "include" ], + "fuzz/slh-dsa-test" => [ + "include" + ], + "fuzz/smime-test" => [ + "include" + ], + "fuzz/v3name-test" => [ + "include" + ], "fuzz/x509-test" => [ "include" ], + "include/internal/param_names.h" => [ + "util/perl" + ], + "include/openssl/core_names.h" => [ + "util/perl" + ], "libcrypto" => [ ".", "include", @@ -17932,6 +20767,9 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libcrypto.pc" => [ + "." + ], "libssl" => [ ".", "include" @@ -17940,6 +20778,12 @@ our %unified_info = ( ".", "util/perl/OpenSSL" ], + "libssl.pc" => [ + "." + ], + "openssl.pc" => [ + "." + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der" ], @@ -17979,6 +20823,15 @@ our %unified_info = ( "providers/common/der/der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der" ], @@ -17991,6 +20844,15 @@ our %unified_info = ( "providers/common/der/der_rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der" ], @@ -18036,12 +20898,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov" ], @@ -18072,9 +20946,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der" ], @@ -18117,9 +20997,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18132,12 +21018,24 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18150,28 +21048,39 @@ our %unified_info = ( "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libdefault.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libfips.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/liblegacy.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" + ], + "providers/libtemplate.a" => [ + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" ], "test/aborttest" => [ "include", @@ -18240,6 +21149,14 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_addr_test" => [ + "include", + "apps/include" + ], + "test/bio_base64_test" => [ + "include", + "apps/include" + ], "test/bio_callback_test" => [ "include", "apps/include" @@ -18248,11 +21165,20 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_dgram_test" => [ + "include", + "apps/include", + "." + ], "test/bio_enc_test" => [ "include", "apps/include" ], - "test/bio_memleak_test" => [ + "test/bio_memleak_test" => [ + "include", + "apps/include" + ], + "test/bio_meth_test" => [ "include", "apps/include" ], @@ -18269,6 +21195,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_tfo_test" => [ + "include", + "apps/include", + "." + ], "test/bioprinttest" => [ "include", "apps/include" @@ -18283,6 +21214,9 @@ our %unified_info = ( "include", "apps/include" ], + "test/build_wincrypt_test" => [ + "include" + ], "test/buildtest_c_aes" => [ "include" ], @@ -18298,6 +21232,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => [ "include" ], + "test/buildtest_c_byteorder" => [ + "include" + ], "test/buildtest_c_camellia" => [ "include" ], @@ -18322,9 +21259,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => [ "include" ], - "test/buildtest_c_core_names" => [ - "include" - ], "test/buildtest_c_core_object" => [ "include" ], @@ -18349,6 +21283,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => [ "include" ], + "test/buildtest_c_e_ostime" => [ + "include" + ], "test/buildtest_c_ebcdic" => [ "include" ], @@ -18376,12 +21313,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => [ "include" ], + "test/buildtest_c_hpke" => [ + "include" + ], "test/buildtest_c_http" => [ "include" ], "test/buildtest_c_idea" => [ "include" ], + "test/buildtest_c_indicator" => [ + "include" + ], "test/buildtest_c_kdf" => [ "include" ], @@ -18397,6 +21340,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => [ "include" ], + "test/buildtest_c_ml_kem" => [ + "include" + ], "test/buildtest_c_modes" => [ "include" ], @@ -18427,6 +21373,9 @@ our %unified_info = ( "test/buildtest_c_provider" => [ "include" ], + "test/buildtest_c_quic" => [ + "include" + ], "test/buildtest_c_rand" => [ "include" ], @@ -18469,6 +21418,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => [ "include" ], + "test/buildtest_c_thread" => [ + "include" + ], "test/buildtest_c_tls1" => [ "include" ], @@ -18484,10 +21436,24 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => [ "include" ], + "test/byteorder_test" => [ + "include", + "apps/include" + ], + "test/ca_internals_test" => [ + ".", + "include", + "apps/include" + ], "test/casttest" => [ "include", "apps/include" ], + "test/cert_comp_test" => [ + "include", + "apps/include", + "." + ], "test/chacha_internal_test" => [ ".", "include", @@ -18611,6 +21577,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/decoder_propq_test" => [ + ".", + "include", + "apps/include" + ], "test/defltfips_test" => [ "include", "apps/include" @@ -18626,7 +21597,8 @@ our %unified_info = ( "test/drbgtest" => [ "include", "apps/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "test/dsa_no_digest_size_test" => [ "include", @@ -18669,7 +21641,9 @@ our %unified_info = ( "test/endecode_test" => [ ".", "include", - "apps/include" + "apps/include", + "providers/common/include", + "providers/implementations/include" ], "test/endecoder_legacy_test" => [ ".", @@ -18714,6 +21688,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_pkey_dhkem_test" => [ + "include", + "apps/include" + ], "test/evp_pkey_dparams_test" => [ "include", "apps/include" @@ -18722,10 +21700,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_skey_test" => [ + "include", + "apps/include" + ], "test/evp_test" => [ "include", "apps/include" ], + "test/evp_xof_test" => [ + "include", + "apps/include" + ], "test/exdatatest" => [ "include", "apps/include" @@ -18826,22 +21812,62 @@ our %unified_info = ( ".", "include" ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/pkcs12.o" => [ ".", "include" ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + ".", + "include" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ ".", "include" ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/ssl_test-bin-handshake.o" => [ ".", "include" @@ -18875,6 +21901,10 @@ our %unified_info = ( ".", "include" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/hexstr_test" => [ ".", "include", @@ -18884,6 +21914,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/hpke_test" => [ + "include", + "apps/include" + ], "test/http_test" => [ "include", "apps/include" @@ -18896,6 +21930,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/json_test" => [ + "include", + "apps/include" + ], "test/keymgmt_internal_test" => [ ".", "include", @@ -18910,6 +21948,10 @@ our %unified_info = ( "apps/include", "." ], + "test/list_test" => [ + "include", + "apps/include" + ], "test/localetest" => [ "include", "apps/include" @@ -18923,10 +21965,27 @@ our %unified_info = ( "include", "apps/include" ], + "test/membio_test" => [ + "include", + "apps/include", + "." + ], "test/memleaktest" => [ "include", "apps/include" ], + "test/ml_dsa_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_evp_extra_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_internal_test" => [ + "include", + "apps/include" + ], "test/modes_internal_test" => [ ".", "include", @@ -18961,6 +22020,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pairwise_fail_test" => [ + "include", + "apps/include" + ], "test/param_build_test" => [ "include", "apps/include" @@ -18994,6 +22057,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pkcs12_api_test" => [ + "include", + "apps/include" + ], "test/pkcs12_format_test" => [ "include", "apps/include" @@ -19015,6 +22082,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/priority_queue_test" => [ + "include", + "apps/include" + ], "test/property_test" => [ ".", "include", @@ -19028,6 +22099,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/provider_default_search_path_test" => [ + "include", + "apps/include" + ], "test/provider_fallback_test" => [ "include", "apps/include" @@ -19054,6 +22129,97 @@ our %unified_info = ( "include", "apps/include" ], + "test/quic_ackm_test" => [ + "include", + "apps/include" + ], + "test/quic_cc_test" => [ + "include", + "apps/include" + ], + "test/quic_cfq_test" => [ + "include", + "apps/include" + ], + "test/quic_client_test" => [ + "include", + "apps/include" + ], + "test/quic_fc_test" => [ + "include", + "apps/include" + ], + "test/quic_fifd_test" => [ + "include", + "apps/include" + ], + "test/quic_lcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_multistream_test" => [ + "include", + "apps/include" + ], + "test/quic_newcid_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_qlog_test" => [ + "include", + "apps/include" + ], + "test/quic_radix_test" => [ + "include", + "apps/include" + ], + "test/quic_rcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_record_test" => [ + "include", + "apps/include" + ], + "test/quic_srt_gen_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_srtm_test" => [ + "include", + "apps/include" + ], + "test/quic_stream_test" => [ + "include", + "apps/include" + ], + "test/quic_tserver_test" => [ + "include", + "apps/include" + ], + "test/quic_txp_test" => [ + "include", + "apps/include" + ], + "test/quic_txpim_test" => [ + "include", + "apps/include" + ], + "test/quic_wire_test" => [ + "include", + "apps/include" + ], + "test/quicapitest" => [ + "include", + "apps/include" + ], + "test/quicfaultstest" => [ + "include", + "apps/include", + "." + ], "test/rand_status_test" => [ "include", "apps/include" @@ -19074,14 +22240,20 @@ our %unified_info = ( "include", "apps/include" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "include", - "apps/include" + "apps/include", + "crypto" ], "test/recordlentest" => [ "include", "apps/include" ], + "test/rpktest" => [ + "include", + "apps/include", + "." + ], "test/rsa_complex" => [ "include", "apps/include" @@ -19100,6 +22272,15 @@ our %unified_info = ( "include", "apps/include" ], + "test/rsa_x931_test" => [ + ".", + "include", + "apps/include" + ], + "test/safe_math_test" => [ + "include", + "apps/include" + ], "test/sanitytest" => [ "include", "apps/include" @@ -19121,6 +22302,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/slh_dsa_test" => [ + "include", + "apps/include" + ], "test/sm2_internal_test" => [ "include", "apps/include" @@ -19151,6 +22336,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/ssl_handshake_rtt_test" => [ + "include", + "apps/include", + "." + ], "test/ssl_old_test" => [ ".", "include", @@ -19167,6 +22357,7 @@ our %unified_info = ( "test/sslapitest" => [ "include", "apps/include", + "providers/common/include", "." ], "test/sslbuffertest" => [ @@ -19181,6 +22372,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/strtoultest" => [ + "include", + "apps/include" + ], "test/sysdefaulttest" => [ "include", "apps/include" @@ -19189,7 +22384,13 @@ our %unified_info = ( "include", "apps/include" ], + "test/threadpool_test" => [ + ".", + "include", + "apps/include" + ], "test/threadstest" => [ + ".", "include", "apps/include" ], @@ -19201,6 +22402,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/time_test" => [ + "include", + "apps/include" + ], "test/tls13ccstest" => [ "include", "apps/include" @@ -19210,6 +22415,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/tls13groupselection_test" => [ + "include", + "apps/include" + ], "test/trace_api_test" => [ ".", "include", @@ -19248,6 +22457,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_acert_test" => [ + "include", + "apps/include" + ], "test/x509_check_cert_pkey_test" => [ "include", "apps/include" @@ -19261,6 +22474,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_load_cert_file_test" => [ + "include", + "apps/include" + ], + "test/x509_req_test" => [ + "include", + "apps/include" + ], + "test/x509_test" => [ + "include", + "apps/include" + ], "test/x509_time_test" => [ "include", "apps/include" @@ -19282,6 +22507,7 @@ our %unified_info = ( "providers/libdefault.a", "providers/libfips.a", "providers/liblegacy.a", + "providers/libtemplate.a", "test/libtestutil.a" ], "mandocs" => { @@ -19334,6 +22560,7 @@ our %unified_info = ( "doc/man/man1/openssl-s_server.1", "doc/man/man1/openssl-s_time.1", "doc/man/man1/openssl-sess_id.1", + "doc/man/man1/openssl-skeyutl.1", "doc/man/man1/openssl-smime.1", "doc/man/man1/openssl-speed.1", "doc/man/man1/openssl-spkac.1", @@ -19383,6 +22610,7 @@ our %unified_info = ( "doc/man/man3/BIO_find_type.3", "doc/man/man3/BIO_get_data.3", "doc/man/man3/BIO_get_ex_new_index.3", + "doc/man/man3/BIO_get_rpoll_descriptor.3", "doc/man/man3/BIO_meth_new.3", "doc/man/man3/BIO_new.3", "doc/man/man3/BIO_new_CMS.3", @@ -19395,11 +22623,13 @@ our %unified_info = ( "doc/man/man3/BIO_s_connect.3", "doc/man/man3/BIO_s_core.3", "doc/man/man3/BIO_s_datagram.3", + "doc/man/man3/BIO_s_dgram_pair.3", "doc/man/man3/BIO_s_fd.3", "doc/man/man3/BIO_s_file.3", "doc/man/man3/BIO_s_mem.3", "doc/man/man3/BIO_s_null.3", "doc/man/man3/BIO_s_socket.3", + "doc/man/man3/BIO_sendmmsg.3", "doc/man/man3/BIO_set_callback.3", "doc/man/man3/BIO_should_retry.3", "doc/man/man3/BIO_socket_wait.3", @@ -19424,6 +22654,7 @@ our %unified_info = ( "doc/man/man3/BN_swap.3", "doc/man/man3/BN_zero.3", "doc/man/man3/BUF_MEM_new.3", + "doc/man/man3/CMAC_CTX.3", "doc/man/man3/CMS_EncryptedData_decrypt.3", "doc/man/man3/CMS_EncryptedData_encrypt.3", "doc/man/man3/CMS_EnvelopedData_create.3", @@ -19446,6 +22677,7 @@ our %unified_info = ( "doc/man/man3/CMS_uncompress.3", "doc/man/man3/CMS_verify.3", "doc/man/man3/CMS_verify_receipt.3", + "doc/man/man3/COMP_CTX_new.3", "doc/man/man3/CONF_modules_free.3", "doc/man/man3/CONF_modules_load_file.3", "doc/man/man3/CRYPTO_THREAD_run_once.3", @@ -19479,6 +22711,8 @@ our %unified_info = ( "doc/man/man3/DSA_size.3", "doc/man/man3/DTLS_get_data_mtu.3", "doc/man/man3/DTLS_set_timer_cb.3", + "doc/man/man3/DTLSv1_get_timeout.3", + "doc/man/man3/DTLSv1_handle_timeout.3", "doc/man/man3/DTLSv1_listen.3", "doc/man/man3/ECDSA_SIG_new.3", "doc/man/man3/ECDSA_sign.3", @@ -19525,6 +22759,7 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_ctrl.3", "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3", "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3", + "doc/man/man3/EVP_PKEY_CTX_get_algor.3", "doc/man/man3/EVP_PKEY_CTX_new.3", "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3", "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3", @@ -19564,6 +22799,8 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_verify_recover.3", "doc/man/man3/EVP_RAND.3", "doc/man/man3/EVP_SIGNATURE.3", + "doc/man/man3/EVP_SKEY.3", + "doc/man/man3/EVP_SKEYMGMT.3", "doc/man/man3/EVP_SealInit.3", "doc/man/man3/EVP_SignInit.3", "doc/man/man3/EVP_VerifyInit.3", @@ -19593,6 +22830,7 @@ our %unified_info = ( "doc/man/man3/EVP_sm3.3", "doc/man/man3/EVP_sm4_cbc.3", "doc/man/man3/EVP_whirlpool.3", + "doc/man/man3/GENERAL_NAME.3", "doc/man/man3/HMAC.3", "doc/man/man3/MD5.3", "doc/man/man3/MDC2_Init.3", @@ -19617,14 +22855,18 @@ our %unified_info = ( "doc/man/man3/OPENSSL_init_ssl.3", "doc/man/man3/OPENSSL_instrument_bus.3", "doc/man/man3/OPENSSL_load_builtin_modules.3", + "doc/man/man3/OPENSSL_load_u16_le.3", "doc/man/man3/OPENSSL_malloc.3", + "doc/man/man3/OPENSSL_riscvcap.3", "doc/man/man3/OPENSSL_s390xcap.3", "doc/man/man3/OPENSSL_secure_malloc.3", "doc/man/man3/OPENSSL_strcasecmp.3", "doc/man/man3/OSSL_ALGORITHM.3", "doc/man/man3/OSSL_CALLBACK.3", + "doc/man/man3/OSSL_CMP_ATAV_set0.3", "doc/man/man3/OSSL_CMP_CTX_new.3", "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3", + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3", "doc/man/man3/OSSL_CMP_ITAV_set0.3", "doc/man/man3/OSSL_CMP_MSG_get0_header.3", "doc/man/man3/OSSL_CMP_MSG_http_perform.3", @@ -19648,18 +22890,27 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_CTX.3", "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3", "doc/man/man3/OSSL_ENCODER_to_bio.3", + "doc/man/man3/OSSL_ERR_STATE_save.3", "doc/man/man3/OSSL_ESS_check_signing_certs.3", + "doc/man/man3/OSSL_GENERAL_NAMES_print.3", + "doc/man/man3/OSSL_HPKE_CTX_new.3", "doc/man/man3/OSSL_HTTP_REQ_CTX.3", "doc/man/man3/OSSL_HTTP_parse_url.3", "doc/man/man3/OSSL_HTTP_transfer.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3", + "doc/man/man3/OSSL_INDICATOR_set_callback.3", "doc/man/man3/OSSL_ITEM.3", "doc/man/man3/OSSL_LIB_CTX.3", + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3", "doc/man/man3/OSSL_PARAM.3", "doc/man/man3/OSSL_PARAM_BLD.3", "doc/man/man3/OSSL_PARAM_allocate_from_text.3", "doc/man/man3/OSSL_PARAM_dup.3", "doc/man/man3/OSSL_PARAM_int.3", + "doc/man/man3/OSSL_PARAM_print_to_bio.3", "doc/man/man3/OSSL_PROVIDER.3", + "doc/man/man3/OSSL_QUIC_client_method.3", "doc/man/man3/OSSL_SELF_TEST_new.3", "doc/man/man3/OSSL_SELF_TEST_set_callback.3", "doc/man/man3/OSSL_STORE_INFO.3", @@ -19668,11 +22919,13 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_attach.3", "doc/man/man3/OSSL_STORE_expect.3", "doc/man/man3/OSSL_STORE_open.3", + "doc/man/man3/OSSL_sleep.3", "doc/man/man3/OSSL_trace_enabled.3", "doc/man/man3/OSSL_trace_get_category_num.3", "doc/man/man3/OSSL_trace_set_channel.3", "doc/man/man3/OpenSSL_add_all_algorithms.3", "doc/man/man3/OpenSSL_version.3", + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3", "doc/man/man3/PEM_X509_INFO_read_bio_ex.3", "doc/man/man3/PEM_bytes_read_bio.3", "doc/man/man3/PEM_read.3", @@ -19685,6 +22938,7 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_create_cert.3", "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3", "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3", + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3", "doc/man/man3/PKCS12_add1_attr_by_NID.3", "doc/man/man3/PKCS12_add_CSPName_asc.3", "doc/man/man3/PKCS12_add_cert.3", @@ -19776,6 +23030,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_sess_set_get_cb.3", "doc/man/man3/SSL_CTX_sessions.3", "doc/man/man3/SSL_CTX_set0_CA_list.3", + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3", "doc/man/man3/SSL_CTX_set1_curves.3", "doc/man/man3/SSL_CTX_set1_sigalgs.3", "doc/man/man3/SSL_CTX_set1_verify_cert_store.3", @@ -19789,6 +23044,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_ct_validation_callback.3", "doc/man/man3/SSL_CTX_set_ctlog_list_file.3", "doc/man/man3/SSL_CTX_set_default_passwd_cb.3", + "doc/man/man3/SSL_CTX_set_domain_flags.3", "doc/man/man3/SSL_CTX_set_generate_session_id.3", "doc/man/man3/SSL_CTX_set_info_callback.3", "doc/man/man3/SSL_CTX_set_keylog_callback.3", @@ -19796,6 +23052,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_min_proto_version.3", "doc/man/man3/SSL_CTX_set_mode.3", "doc/man/man3/SSL_CTX_set_msg_callback.3", + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3", "doc/man/man3/SSL_CTX_set_num_tickets.3", "doc/man/man3/SSL_CTX_set_options.3", "doc/man/man3/SSL_CTX_set_psk_client_callback.3", @@ -19834,6 +23091,7 @@ our %unified_info = ( "doc/man/man3/SSL_SESSION_print.3", "doc/man/man3/SSL_SESSION_set1_id.3", "doc/man/man3/SSL_accept.3", + "doc/man/man3/SSL_accept_stream.3", "doc/man/man3/SSL_alert_type_string.3", "doc/man/man3/SSL_alloc_buffers.3", "doc/man/man3/SSL_check_chain.3", @@ -19843,59 +23101,90 @@ our %unified_info = ( "doc/man/man3/SSL_export_keying_material.3", "doc/man/man3/SSL_extension_supported.3", "doc/man/man3/SSL_free.3", + "doc/man/man3/SSL_get0_connection.3", + "doc/man/man3/SSL_get0_group_name.3", + "doc/man/man3/SSL_get0_peer_rpk.3", "doc/man/man3/SSL_get0_peer_scts.3", + "doc/man/man3/SSL_get1_builtin_sigalgs.3", "doc/man/man3/SSL_get_SSL_CTX.3", "doc/man/man3/SSL_get_all_async_fds.3", "doc/man/man3/SSL_get_certificate.3", "doc/man/man3/SSL_get_ciphers.3", "doc/man/man3/SSL_get_client_random.3", + "doc/man/man3/SSL_get_conn_close_info.3", "doc/man/man3/SSL_get_current_cipher.3", "doc/man/man3/SSL_get_default_timeout.3", "doc/man/man3/SSL_get_error.3", + "doc/man/man3/SSL_get_event_timeout.3", "doc/man/man3/SSL_get_extms_support.3", "doc/man/man3/SSL_get_fd.3", + "doc/man/man3/SSL_get_handshake_rtt.3", "doc/man/man3/SSL_get_peer_cert_chain.3", "doc/man/man3/SSL_get_peer_certificate.3", "doc/man/man3/SSL_get_peer_signature_nid.3", "doc/man/man3/SSL_get_peer_tmp_key.3", "doc/man/man3/SSL_get_psk_identity.3", "doc/man/man3/SSL_get_rbio.3", + "doc/man/man3/SSL_get_rpoll_descriptor.3", "doc/man/man3/SSL_get_session.3", "doc/man/man3/SSL_get_shared_sigalgs.3", + "doc/man/man3/SSL_get_stream_id.3", + "doc/man/man3/SSL_get_stream_read_state.3", + "doc/man/man3/SSL_get_value_uint.3", "doc/man/man3/SSL_get_verify_result.3", "doc/man/man3/SSL_get_version.3", "doc/man/man3/SSL_group_to_name.3", + "doc/man/man3/SSL_handle_events.3", "doc/man/man3/SSL_in_init.3", + "doc/man/man3/SSL_inject_net_dgram.3", "doc/man/man3/SSL_key_update.3", "doc/man/man3/SSL_library_init.3", "doc/man/man3/SSL_load_client_CA_file.3", "doc/man/man3/SSL_new.3", + "doc/man/man3/SSL_new_domain.3", + "doc/man/man3/SSL_new_listener.3", + "doc/man/man3/SSL_new_stream.3", "doc/man/man3/SSL_pending.3", + "doc/man/man3/SSL_poll.3", "doc/man/man3/SSL_read.3", "doc/man/man3/SSL_read_early_data.3", "doc/man/man3/SSL_rstate_string.3", "doc/man/man3/SSL_session_reused.3", "doc/man/man3/SSL_set1_host.3", + "doc/man/man3/SSL_set1_initial_peer_addr.3", + "doc/man/man3/SSL_set1_server_cert_type.3", "doc/man/man3/SSL_set_async_callback.3", "doc/man/man3/SSL_set_bio.3", + "doc/man/man3/SSL_set_blocking_mode.3", "doc/man/man3/SSL_set_connect_state.3", + "doc/man/man3/SSL_set_default_stream_mode.3", "doc/man/man3/SSL_set_fd.3", + "doc/man/man3/SSL_set_incoming_stream_policy.3", + "doc/man/man3/SSL_set_quic_tls_cbs.3", "doc/man/man3/SSL_set_retry_verify.3", "doc/man/man3/SSL_set_session.3", + "doc/man/man3/SSL_set_session_secret_cb.3", "doc/man/man3/SSL_set_shutdown.3", "doc/man/man3/SSL_set_verify_result.3", "doc/man/man3/SSL_shutdown.3", "doc/man/man3/SSL_state_string.3", + "doc/man/man3/SSL_stream_conclude.3", + "doc/man/man3/SSL_stream_reset.3", "doc/man/man3/SSL_want.3", "doc/man/man3/SSL_write.3", "doc/man/man3/TS_RESP_CTX_new.3", - "doc/man/man3/TS_VERIFY_CTX_set_certs.3", + "doc/man/man3/TS_VERIFY_CTX.3", "doc/man/man3/UI_STRING.3", "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", + "doc/man/man3/X509_ACERT_add1_attr.3", + "doc/man/man3/X509_ACERT_add_attr_nconf.3", + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3", + "doc/man/man3/X509_ACERT_get_attr.3", + "doc/man/man3/X509_ACERT_print_ex.3", "doc/man/man3/X509_ALGOR_dup.3", "doc/man/man3/X509_ATTRIBUTE.3", "doc/man/man3/X509_CRL_get0_by_serial.3", @@ -19912,6 +23201,7 @@ our %unified_info = ( "doc/man/man3/X509_REQ_get_attr.3", "doc/man/man3/X509_REQ_get_extensions.3", "doc/man/man3/X509_SIG_get0.3", + "doc/man/man3/X509_STORE_CTX_get_by_subject.3", "doc/man/man3/X509_STORE_CTX_get_error.3", "doc/man/man3/X509_STORE_CTX_new.3", "doc/man/man3/X509_STORE_CTX_set_verify_cb.3", @@ -19934,6 +23224,7 @@ our %unified_info = ( "doc/man/man3/X509_get0_notBefore.3", "doc/man/man3/X509_get0_signature.3", "doc/man/man3/X509_get0_uids.3", + "doc/man/man3/X509_get_default_cert_file.3", "doc/man/man3/X509_get_extension_flags.3", "doc/man/man3/X509_get_pubkey.3", "doc/man/man3/X509_get_serialNumber.3", @@ -19979,12 +23270,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-RC5.7", "doc/man/man7/EVP_CIPHER-SEED.7", "doc/man/man7/EVP_CIPHER-SM4.7", + "doc/man/man7/EVP_KDF-ARGON2.7", "doc/man/man7/EVP_KDF-HKDF.7", + "doc/man/man7/EVP_KDF-HMAC-DRBG.7", "doc/man/man7/EVP_KDF-KB.7", "doc/man/man7/EVP_KDF-KRB5KDF.7", "doc/man/man7/EVP_KDF-PBKDF1.7", "doc/man/man7/EVP_KDF-PBKDF2.7", "doc/man/man7/EVP_KDF-PKCS12KDF.7", + "doc/man/man7/EVP_KDF-PVKKDF.7", "doc/man/man7/EVP_KDF-SCRYPT.7", "doc/man/man7/EVP_KDF-SS.7", "doc/man/man7/EVP_KDF-SSHKDF.7", @@ -19993,7 +23287,10 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X942-ASN1.7", "doc/man/man7/EVP_KDF-X942-CONCAT.7", "doc/man/man7/EVP_KDF-X963.7", + "doc/man/man7/EVP_KEM-EC.7", + "doc/man/man7/EVP_KEM-ML-KEM.7", "doc/man/man7/EVP_KEM-RSA.7", + "doc/man/man7/EVP_KEM-X25519.7", "doc/man/man7/EVP_KEYEXCH-DH.7", "doc/man/man7/EVP_KEYEXCH-ECDH.7", "doc/man/man7/EVP_KEYEXCH-X25519.7", @@ -20005,6 +23302,7 @@ our %unified_info = ( "doc/man/man7/EVP_MAC-Poly1305.7", "doc/man/man7/EVP_MAC-Siphash.7", "doc/man/man7/EVP_MD-BLAKE2.7", + "doc/man/man7/EVP_MD-KECCAK.7", "doc/man/man7/EVP_MD-MD2.7", "doc/man/man7/EVP_MD-MD4.7", "doc/man/man7/EVP_MD-MD5-SHA1.7", @@ -20024,12 +23322,17 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-EC.7", "doc/man/man7/EVP_PKEY-FFC.7", "doc/man/man7/EVP_PKEY-HMAC.7", + "doc/man/man7/EVP_PKEY-ML-DSA.7", + "doc/man/man7/EVP_PKEY-ML-KEM.7", "doc/man/man7/EVP_PKEY-RSA.7", + "doc/man/man7/EVP_PKEY-SLH-DSA.7", "doc/man/man7/EVP_PKEY-SM2.7", "doc/man/man7/EVP_PKEY-X25519.7", + "doc/man/man7/EVP_RAND-CRNG-TEST.7", "doc/man/man7/EVP_RAND-CTR-DRBG.7", "doc/man/man7/EVP_RAND-HASH-DRBG.7", "doc/man/man7/EVP_RAND-HMAC-DRBG.7", + "doc/man/man7/EVP_RAND-JITTER.7", "doc/man/man7/EVP_RAND-SEED-SRC.7", "doc/man/man7/EVP_RAND-TEST-RAND.7", "doc/man/man7/EVP_RAND.7", @@ -20037,17 +23340,19 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-ECDSA.7", "doc/man/man7/EVP_SIGNATURE-ED25519.7", "doc/man/man7/EVP_SIGNATURE-HMAC.7", + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7", "doc/man/man7/EVP_SIGNATURE-RSA.7", + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7", "doc/man/man7/OSSL_PROVIDER-FIPS.7", "doc/man/man7/OSSL_PROVIDER-base.7", "doc/man/man7/OSSL_PROVIDER-default.7", "doc/man/man7/OSSL_PROVIDER-legacy.7", "doc/man/man7/OSSL_PROVIDER-null.7", + "doc/man/man7/OSSL_STORE-winstore.7", "doc/man/man7/RAND.7", "doc/man/man7/RSA-PSS.7", "doc/man/man7/X25519.7", "doc/man/man7/bio.7", - "doc/man/man7/crypto.7", "doc/man/man7/ct.7", "doc/man/man7/des_modes.7", "doc/man/man7/evp.7", @@ -20058,14 +23363,31 @@ our %unified_info = ( "doc/man/man7/life_cycle-mac.7", "doc/man/man7/life_cycle-pkey.7", "doc/man/man7/life_cycle-rand.7", - "doc/man/man7/migration_guide.7", "doc/man/man7/openssl-core.h.7", "doc/man/man7/openssl-core_dispatch.h.7", "doc/man/man7/openssl-core_names.h.7", "doc/man/man7/openssl-env.7", "doc/man/man7/openssl-glossary.7", + "doc/man/man7/openssl-qlog.7", + "doc/man/man7/openssl-quic-concurrency.7", + "doc/man/man7/openssl-quic.7", "doc/man/man7/openssl-threads.7", "doc/man/man7/openssl_user_macros.7", + "doc/man/man7/ossl-guide-introduction.7", + "doc/man/man7/ossl-guide-libcrypto-introduction.7", + "doc/man/man7/ossl-guide-libraries-introduction.7", + "doc/man/man7/ossl-guide-libssl-introduction.7", + "doc/man/man7/ossl-guide-migration.7", + "doc/man/man7/ossl-guide-quic-client-block.7", + "doc/man/man7/ossl-guide-quic-client-non-block.7", + "doc/man/man7/ossl-guide-quic-introduction.7", + "doc/man/man7/ossl-guide-quic-multi-stream.7", + "doc/man/man7/ossl-guide-quic-server-block.7", + "doc/man/man7/ossl-guide-quic-server-non-block.7", + "doc/man/man7/ossl-guide-tls-client-block.7", + "doc/man/man7/ossl-guide-tls-client-non-block.7", + "doc/man/man7/ossl-guide-tls-introduction.7", + "doc/man/man7/ossl-guide-tls-server-block.7", "doc/man/man7/ossl_store-file.7", "doc/man/man7/ossl_store.7", "doc/man/man7/passphrase-encoding.7", @@ -20084,10 +23406,10 @@ our %unified_info = ( "doc/man/man7/provider-object.7", "doc/man/man7/provider-rand.7", "doc/man/man7/provider-signature.7", + "doc/man/man7/provider-skeymgmt.7", "doc/man/man7/provider-storemgmt.7", "doc/man/man7/provider.7", "doc/man/man7/proxy-certificates.7", - "doc/man/man7/ssl.7", "doc/man/man7/x509.7" ] }, @@ -20099,6 +23421,7 @@ our %unified_info = ( ], "programs" => [ "apps/openssl", + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -20109,7 +23432,24 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test", "test/aborttest", "test/acvp_test", @@ -20127,21 +23467,28 @@ our %unified_info = ( "test/asynctest", "test/bad_dtls_test", "test/bftest", + "test/bio_addr_test", + "test/bio_base64_test", "test/bio_callback_test", "test/bio_core_test", + "test/bio_dgram_test", "test/bio_enc_test", "test/bio_memleak_test", + "test/bio_meth_test", "test/bio_prefix_text", "test/bio_pw_callback_test", "test/bio_readbuffer_test", + "test/bio_tfo_test", "test/bioprinttest", "test/bn_internal_test", "test/bntest", + "test/build_wincrypt_test", "test/buildtest_c_aes", "test/buildtest_c_async", "test/buildtest_c_blowfish", "test/buildtest_c_bn", "test/buildtest_c_buffer", + "test/buildtest_c_byteorder", "test/buildtest_c_camellia", "test/buildtest_c_cast", "test/buildtest_c_cmac", @@ -20150,7 +23497,6 @@ our %unified_info = ( "test/buildtest_c_conftypes", "test/buildtest_c_core", "test/buildtest_c_core_dispatch", - "test/buildtest_c_core_names", "test/buildtest_c_core_object", "test/buildtest_c_cryptoerr_legacy", "test/buildtest_c_decoder", @@ -20159,6 +23505,7 @@ our %unified_info = ( "test/buildtest_c_dsa", "test/buildtest_c_dtls1", "test/buildtest_c_e_os2", + "test/buildtest_c_e_ostime", "test/buildtest_c_ebcdic", "test/buildtest_c_ec", "test/buildtest_c_ecdh", @@ -20168,13 +23515,16 @@ our %unified_info = ( "test/buildtest_c_evp", "test/buildtest_c_fips_names", "test/buildtest_c_hmac", + "test/buildtest_c_hpke", "test/buildtest_c_http", "test/buildtest_c_idea", + "test/buildtest_c_indicator", "test/buildtest_c_kdf", "test/buildtest_c_macros", "test/buildtest_c_md4", "test/buildtest_c_md5", "test/buildtest_c_mdc2", + "test/buildtest_c_ml_kem", "test/buildtest_c_modes", "test/buildtest_c_obj_mac", "test/buildtest_c_objects", @@ -20185,6 +23535,7 @@ our %unified_info = ( "test/buildtest_c_pem2", "test/buildtest_c_prov_ssl", "test/buildtest_c_provider", + "test/buildtest_c_quic", "test/buildtest_c_rand", "test/buildtest_c_rc2", "test/buildtest_c_rc4", @@ -20199,11 +23550,14 @@ our %unified_info = ( "test/buildtest_c_stack", "test/buildtest_c_store", "test/buildtest_c_symhacks", + "test/buildtest_c_thread", "test/buildtest_c_tls1", "test/buildtest_c_ts", "test/buildtest_c_txt_db", "test/buildtest_c_types", "test/buildtest_c_whrlpool", + "test/byteorder_test", + "test/ca_internals_test", "test/casttest", "test/chacha_internal_test", "test/cipher_overhead_test", @@ -20232,6 +23586,7 @@ our %unified_info = ( "test/curve448_internal_test", "test/d2i_test", "test/danetest", + "test/decoder_propq_test", "test/defltfips_test", "test/destest", "test/dhtest", @@ -20256,9 +23611,12 @@ our %unified_info = ( "test/evp_kdf_test", "test/evp_libctx_test", "test/evp_pkey_ctx_new_from_name", + "test/evp_pkey_dhkem_test", "test/evp_pkey_dparams_test", "test/evp_pkey_provided_test", + "test/evp_skey_test", "test/evp_test", + "test/evp_xof_test", "test/exdatatest", "test/exptest", "test/ext_internal_test", @@ -20268,21 +23626,29 @@ our %unified_info = ( "test/gmdifftest", "test/hexstr_test", "test/hmactest", + "test/hpke_test", "test/http_test", "test/ideatest", "test/igetest", + "test/json_test", "test/keymgmt_internal_test", "test/lhash_test", + "test/list_test", "test/localetest", "test/mdc2_internal_test", "test/mdc2test", + "test/membio_test", "test/memleaktest", + "test/ml_dsa_test", + "test/ml_kem_evp_extra_test", + "test/ml_kem_internal_test", "test/modes_internal_test", "test/namemap_internal_test", "test/nodefltctxtest", "test/ocspapitest", "test/ossl_store_test", "test/packettest", + "test/pairwise_fail_test", "test/param_build_test", "test/params_api_test", "test/params_conversion_test", @@ -20291,36 +23657,65 @@ our %unified_info = ( "test/pbetest", "test/pem_read_depr_test", "test/pemtest", + "test/pkcs12_api_test", "test/pkcs12_format_test", "test/pkcs7_test", "test/pkey_meth_kdf_test", "test/pkey_meth_test", "test/poly1305_internal_test", + "test/priority_queue_test", "test/property_test", "test/prov_config_test", "test/provfetchtest", + "test/provider_default_search_path_test", "test/provider_fallback_test", "test/provider_internal_test", "test/provider_pkey_test", "test/provider_status_test", "test/provider_test", "test/punycode_test", + "test/quic_ackm_test", + "test/quic_cc_test", + "test/quic_cfq_test", + "test/quic_client_test", + "test/quic_fc_test", + "test/quic_fifd_test", + "test/quic_lcidm_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_qlog_test", + "test/quic_radix_test", + "test/quic_rcidm_test", + "test/quic_record_test", + "test/quic_srt_gen_test", + "test/quic_srtm_test", + "test/quic_stream_test", + "test/quic_tserver_test", + "test/quic_txp_test", + "test/quic_txpim_test", + "test/quic_wire_test", + "test/quicapitest", + "test/quicfaultstest", "test/rand_status_test", "test/rand_test", "test/rc2test", "test/rc4test", "test/rc5test", - "test/rdrand_sanitytest", + "test/rdcpu_sanitytest", "test/recordlentest", + "test/rpktest", "test/rsa_complex", "test/rsa_mp_test", "test/rsa_sp800_56b_test", "test/rsa_test", + "test/rsa_x931_test", + "test/safe_math_test", "test/sanitytest", "test/secmemtest", "test/servername_test", "test/sha_test", "test/siphash_internal_test", + "test/slh_dsa_test", "test/sm2_internal_test", "test/sm3_internal_test", "test/sm4_internal_test", @@ -20328,6 +23723,7 @@ our %unified_info = ( "test/srptest", "test/ssl_cert_table_internal_test", "test/ssl_ctx_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", @@ -20335,13 +23731,17 @@ our %unified_info = ( "test/sslbuffertest", "test/sslcorrupttest", "test/stack_test", + "test/strtoultest", "test/sysdefaulttest", "test/test_test", + "test/threadpool_test", "test/threadstest", "test/threadstest_fips", "test/time_offset_test", + "test/time_test", "test/tls13ccstest", "test/tls13encryptiontest", + "test/tls13groupselection_test", "test/trace_api_test", "test/uitest", "test/upcallstest", @@ -20351,9 +23751,13 @@ our %unified_info = ( "test/verify_extra_test", "test/versions", "test/wpackettest", + "test/x509_acert_test", "test/x509_check_cert_pkey_test", "test/x509_dup_cert_test", "test/x509_internal_test", + "test/x509_load_cert_file_test", + "test/x509_req_test", + "test/x509_test", "test/x509_time_test", "test/x509aux" ], @@ -20369,6 +23773,33 @@ our %unified_info = ( "apps/CA.pl" => [ "apps/CA.pl.in" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/ca.c" + ], + "apps/lib/ca_internals_test-bin-app_libctx.o" => [ + "apps/lib/app_libctx.c" + ], + "apps/lib/ca_internals_test-bin-app_provider.o" => [ + "apps/lib/app_provider.c" + ], + "apps/lib/ca_internals_test-bin-app_rand.o" => [ + "apps/lib/app_rand.c" + ], + "apps/lib/ca_internals_test-bin-app_x509.o" => [ + "apps/lib/app_x509.c" + ], + "apps/lib/ca_internals_test-bin-apps.o" => [ + "apps/lib/apps.c" + ], + "apps/lib/ca_internals_test-bin-apps_ui.o" => [ + "apps/lib/apps_ui.c" + ], + "apps/lib/ca_internals_test-bin-engine.o" => [ + "apps/lib/engine.c" + ], + "apps/lib/ca_internals_test-bin-fmt.o" => [ + "apps/lib/fmt.c" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/lib/cmp_mock_srv.c" ], @@ -20390,6 +23821,9 @@ our %unified_info = ( "apps/lib/libapps-lib-apps.o" => [ "apps/lib/apps.c" ], + "apps/lib/libapps-lib-apps_opt_printf.o" => [ + "apps/lib/apps_opt_printf.c" + ], "apps/lib/libapps-lib-apps_ui.o" => [ "apps/lib/apps_ui.c" ], @@ -20408,6 +23842,9 @@ our %unified_info = ( "apps/lib/libapps-lib-http_server.o" => [ "apps/lib/http_server.c" ], + "apps/lib/libapps-lib-log.o" => [ + "apps/lib/log.c" + ], "apps/lib/libapps-lib-names.o" => [ "apps/lib/names.c" ], @@ -20439,12 +23876,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -20498,6 +23937,7 @@ our %unified_info = ( "apps/openssl-bin-s_server.o", "apps/openssl-bin-s_time.o", "apps/openssl-bin-sess_id.o", + "apps/openssl-bin-skeyutl.o", "apps/openssl-bin-smime.o", "apps/openssl-bin-speed.o", "apps/openssl-bin-spkac.o", @@ -20643,6 +24083,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/sess_id.c" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/skeyutl.c" + ], "apps/openssl-bin-smime.o" => [ "apps/smime.c" ], @@ -20712,6 +24155,12 @@ our %unified_info = ( "crypto/aria/libcrypto-lib-aria.o" => [ "crypto/aria/aria.c" ], + "crypto/asn1/asn1_time_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], + "crypto/asn1/ca_internals_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], "crypto/asn1/libcrypto-lib-a_bitstr.o" => [ "crypto/asn1/a_bitstr.c" ], @@ -20904,6 +24353,9 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" => [ "crypto/asn1/x_val.c" ], + "crypto/asn1_time_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/async/arch/libcrypto-lib-async_null.o" => [ "crypto/async/arch/async_null.c" ], @@ -20997,6 +24449,9 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_dgram.o" => [ "crypto/bio/bss_dgram.c" ], + "crypto/bio/libcrypto-lib-bss_dgram_pair.o" => [ + "crypto/bio/bss_dgram_pair.c" + ], "crypto/bio/libcrypto-lib-bss_fd.o" => [ "crypto/bio/bss_fd.c" ], @@ -21210,6 +24665,9 @@ our %unified_info = ( "crypto/buffer/libfips-lib-buffer.o" => [ "crypto/buffer/buffer.c" ], + "crypto/ca_internals_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/camellia/libcrypto-lib-camellia.o" => [ "crypto/camellia/camellia.c" ], @@ -21267,6 +24725,9 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_err.o" => [ "crypto/cmp/cmp_err.c" ], + "crypto/cmp/libcrypto-lib-cmp_genm.o" => [ + "crypto/cmp/cmp_genm.c" + ], "crypto/cmp/libcrypto-lib-cmp_hdr.o" => [ "crypto/cmp/cmp_hdr.c" ], @@ -21942,9 +25403,15 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_blocks.o" => [ "crypto/err/err_blocks.c" ], + "crypto/err/libcrypto-lib-err_mark.o" => [ + "crypto/err/err_mark.c" + ], "crypto/err/libcrypto-lib-err_prn.o" => [ "crypto/err/err_prn.c" ], + "crypto/err/libcrypto-lib-err_save.o" => [ + "crypto/err/err_save.c" + ], "crypto/ess/libcrypto-lib-ess_asn1.o" => [ "crypto/ess/ess_asn1.c" ], @@ -22191,9 +25658,15 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libcrypto-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libcrypto-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libcrypto-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/evp/libfips-lib-asymcipher.o" => [ "crypto/evp/asymcipher.c" ], @@ -22239,9 +25712,6 @@ our %unified_info = ( "crypto/evp/libfips-lib-keymgmt_meth.o" => [ "crypto/evp/keymgmt_meth.c" ], - "crypto/evp/libfips-lib-m_sigver.o" => [ - "crypto/evp/m_sigver.c" - ], "crypto/evp/libfips-lib-mac_lib.o" => [ "crypto/evp/mac_lib.c" ], @@ -22260,9 +25730,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libfips-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libfips-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libfips-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/ffc/libcrypto-lib-ffc_backend.o" => [ "crypto/ffc/ffc_backend.c" ], @@ -22305,12 +25781,30 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params_validate.o" => [ "crypto/ffc/ffc_params_validate.c" ], + "crypto/hashtable/libcrypto-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libcrypto-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], + "crypto/hashtable/libfips-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libfips-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], "crypto/hmac/libcrypto-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], "crypto/hmac/libfips-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], + "crypto/hpke/libcrypto-lib-hpke.o" => [ + "crypto/hpke/hpke.c" + ], + "crypto/hpke/libcrypto-lib-hpke_util.o" => [ + "crypto/hpke/hpke_util.c" + ], "crypto/http/libcrypto-lib-http_client.o" => [ "crypto/http/http_client.c" ], @@ -22353,6 +25847,9 @@ our %unified_info = ( "crypto/libcrypto-lib-bsearch.o" => [ "crypto/bsearch.c" ], + "crypto/libcrypto-lib-comp_methods.o" => [ + "crypto/comp_methods.c" + ], "crypto/libcrypto-lib-context.o" => [ "crypto/context.c" ], @@ -22380,9 +25877,15 @@ our %unified_info = ( "crypto/libcrypto-lib-cversion.o" => [ "crypto/cversion.c" ], + "crypto/libcrypto-lib-defaults.o" => [ + "crypto/defaults.c" + ], "crypto/libcrypto-lib-der_writer.o" => [ "crypto/der_writer.c" ], + "crypto/libcrypto-lib-deterministic_nonce.o" => [ + "crypto/deterministic_nonce.c" + ], "crypto/libcrypto-lib-ebcdic.o" => [ "crypto/ebcdic.c" ], @@ -22392,6 +25895,9 @@ our %unified_info = ( "crypto/libcrypto-lib-getenv.o" => [ "crypto/getenv.c" ], + "crypto/libcrypto-lib-indicator_core.o" => [ + "crypto/indicator_core.c" + ], "crypto/libcrypto-lib-info.o" => [ "crypto/info.c" ], @@ -22443,6 +25949,9 @@ our %unified_info = ( "crypto/libcrypto-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libcrypto-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libcrypto-lib-passphrase.o" => [ "crypto/passphrase.c" ], @@ -22464,12 +25973,21 @@ our %unified_info = ( "crypto/libcrypto-lib-punycode.o" => [ "crypto/punycode.c" ], + "crypto/libcrypto-lib-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/libcrypto-lib-self_test_core.o" => [ "crypto/self_test_core.c" ], + "crypto/libcrypto-lib-sleep.o" => [ + "crypto/sleep.c" + ], "crypto/libcrypto-lib-sparse_array.o" => [ "crypto/sparse_array.c" ], + "crypto/libcrypto-lib-ssl_err.o" => [ + "crypto/ssl_err.c" + ], "crypto/libcrypto-lib-threads_lib.o" => [ "crypto/threads_lib.c" ], @@ -22482,6 +26000,9 @@ our %unified_info = ( "crypto/libcrypto-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libcrypto-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libcrypto-lib-trace.o" => [ "crypto/trace.c" ], @@ -22548,6 +26069,9 @@ our %unified_info = ( "crypto/libfips-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libfips-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libfips-lib-provider_core.o" => [ "crypto/provider_core.c" ], @@ -22572,6 +26096,9 @@ our %unified_info = ( "crypto/libfips-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libfips-lib-time.o" => [ + "crypto/time.c" + ], "crypto/md4/libcrypto-lib-md4_dgst.o" => [ "crypto/md4/md4_dgst.c" ], @@ -22593,6 +26120,60 @@ our %unified_info = ( "crypto/mdc2/libcrypto-lib-mdc2dgst.o" => [ "crypto/mdc2/mdc2dgst.c" ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_kem/libcrypto-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], + "crypto/ml_kem/libfips-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], "crypto/modes/libcrypto-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22626,6 +26207,9 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libcrypto-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/modes/libfips-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22650,6 +26234,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libfips-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/objects/libcrypto-lib-o_names.o" => [ "crypto/objects/o_names.c" ], @@ -22695,6 +26282,9 @@ our %unified_info = ( "crypto/ocsp/libcrypto-lib-v3_ocsp.o" => [ "crypto/ocsp/v3_ocsp.c" ], + "crypto/packettest-bin-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/pem/libcrypto-lib-pem_all.o" => [ "crypto/pem/pem_all.c" ], @@ -22854,6 +26444,9 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_pool.o" => [ "crypto/rand/rand_pool.c" ], + "crypto/rand/libcrypto-lib-rand_uniform.o" => [ + "crypto/rand/rand_uniform.c" + ], "crypto/rand/libcrypto-lib-randfile.o" => [ "crypto/rand/randfile.c" ], @@ -23067,6 +26660,66 @@ our %unified_info = ( "crypto/siphash/libcrypto-lib-siphash.o" => [ "crypto/siphash/siphash.c" ], + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], + "crypto/slh_dsa/libfips-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libfips-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libfips-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libfips-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libfips-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], "crypto/sm2/libcrypto-lib-sm2_crypt.o" => [ "crypto/sm2/sm2_crypt.c" ], @@ -23121,6 +26774,42 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_strings.o" => [ "crypto/store/store_strings.c" ], + "crypto/thread/arch/libcrypto-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/arch/libfips-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libfips-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libfips-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/libcrypto-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libcrypto-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libcrypto-lib-internal.o" => [ + "crypto/thread/internal.c" + ], + "crypto/thread/libfips-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libfips-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libfips-lib-internal.o" => [ + "crypto/thread/internal.c" + ], "crypto/ts/libcrypto-lib-ts_asn1.o" => [ "crypto/ts/ts_asn1.c" ], @@ -23205,6 +26894,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_tree.o" => [ "crypto/x509/pcy_tree.c" ], + "crypto/x509/libcrypto-lib-t_acert.o" => [ + "crypto/x509/t_acert.c" + ], "crypto/x509/libcrypto-lib-t_crl.o" => [ "crypto/x509/t_crl.c" ], @@ -23214,6 +26906,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-t_x509.o" => [ "crypto/x509/t_x509.c" ], + "crypto/x509/libcrypto-lib-v3_aaa.o" => [ + "crypto/x509/v3_aaa.c" + ], + "crypto/x509/libcrypto-lib-v3_ac_tgt.o" => [ + "crypto/x509/v3_ac_tgt.c" + ], "crypto/x509/libcrypto-lib-v3_addr.o" => [ "crypto/x509/v3_addr.c" ], @@ -23229,6 +26927,21 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_asid.o" => [ "crypto/x509/v3_asid.c" ], + "crypto/x509/libcrypto-lib-v3_attrdesc.o" => [ + "crypto/x509/v3_attrdesc.c" + ], + "crypto/x509/libcrypto-lib-v3_attrmap.o" => [ + "crypto/x509/v3_attrmap.c" + ], + "crypto/x509/libcrypto-lib-v3_audit_id.o" => [ + "crypto/x509/v3_audit_id.c" + ], + "crypto/x509/libcrypto-lib-v3_authattid.o" => [ + "crypto/x509/v3_authattid.c" + ], + "crypto/x509/libcrypto-lib-v3_battcons.o" => [ + "crypto/x509/v3_battcons.c" + ], "crypto/x509/libcrypto-lib-v3_bcons.o" => [ "crypto/x509/v3_bcons.c" ], @@ -23253,15 +26966,24 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_genn.o" => [ "crypto/x509/v3_genn.c" ], + "crypto/x509/libcrypto-lib-v3_group_ac.o" => [ + "crypto/x509/v3_group_ac.c" + ], "crypto/x509/libcrypto-lib-v3_ia5.o" => [ "crypto/x509/v3_ia5.c" ], + "crypto/x509/libcrypto-lib-v3_ind_iss.o" => [ + "crypto/x509/v3_ind_iss.c" + ], "crypto/x509/libcrypto-lib-v3_info.o" => [ "crypto/x509/v3_info.c" ], "crypto/x509/libcrypto-lib-v3_int.o" => [ "crypto/x509/v3_int.c" ], + "crypto/x509/libcrypto-lib-v3_iobo.o" => [ + "crypto/x509/v3_iobo.c" + ], "crypto/x509/libcrypto-lib-v3_ist.o" => [ "crypto/x509/v3_ist.c" ], @@ -23271,6 +26993,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_ncons.o" => [ "crypto/x509/v3_ncons.c" ], + "crypto/x509/libcrypto-lib-v3_no_ass.o" => [ + "crypto/x509/v3_no_ass.c" + ], + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o" => [ + "crypto/x509/v3_no_rev_avail.c" + ], "crypto/x509/libcrypto-lib-v3_pci.o" => [ "crypto/x509/v3_pci.c" ], @@ -23292,18 +27020,36 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_purp.o" => [ "crypto/x509/v3_purp.c" ], + "crypto/x509/libcrypto-lib-v3_rolespec.o" => [ + "crypto/x509/v3_rolespec.c" + ], "crypto/x509/libcrypto-lib-v3_san.o" => [ "crypto/x509/v3_san.c" ], + "crypto/x509/libcrypto-lib-v3_sda.o" => [ + "crypto/x509/v3_sda.c" + ], + "crypto/x509/libcrypto-lib-v3_single_use.o" => [ + "crypto/x509/v3_single_use.c" + ], "crypto/x509/libcrypto-lib-v3_skid.o" => [ "crypto/x509/v3_skid.c" ], + "crypto/x509/libcrypto-lib-v3_soa_id.o" => [ + "crypto/x509/v3_soa_id.c" + ], "crypto/x509/libcrypto-lib-v3_sxnet.o" => [ "crypto/x509/v3_sxnet.c" ], + "crypto/x509/libcrypto-lib-v3_timespec.o" => [ + "crypto/x509/v3_timespec.c" + ], "crypto/x509/libcrypto-lib-v3_tlsf.o" => [ "crypto/x509/v3_tlsf.c" ], + "crypto/x509/libcrypto-lib-v3_usernotice.o" => [ + "crypto/x509/v3_usernotice.c" + ], "crypto/x509/libcrypto-lib-v3_utf8.o" => [ "crypto/x509/v3_utf8.c" ], @@ -23313,6 +27059,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3err.o" => [ "crypto/x509/v3err.c" ], + "crypto/x509/libcrypto-lib-x509_acert.o" => [ + "crypto/x509/x509_acert.c" + ], "crypto/x509/libcrypto-lib-x509_att.o" => [ "crypto/x509/x509_att.c" ], @@ -23364,6 +27113,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_vpm.o" => [ "crypto/x509/x509_vpm.c" ], + "crypto/x509/libcrypto-lib-x509aset.o" => [ + "crypto/x509/x509aset.c" + ], "crypto/x509/libcrypto-lib-x509cset.o" => [ "crypto/x509/x509cset.c" ], @@ -23391,6 +27143,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_exten.o" => [ "crypto/x509/x_exten.c" ], + "crypto/x509/libcrypto-lib-x_ietfatt.o" => [ + "crypto/x509/x_ietfatt.c" + ], "crypto/x509/libcrypto-lib-x_name.o" => [ "crypto/x509/x_name.c" ], @@ -23412,6 +27167,16 @@ our %unified_info = ( "engines/libcrypto-lib-e_padlock.o" => [ "engines/e_padlock.c" ], + "fuzz/acert-test" => [ + "fuzz/acert-test-bin-acert.o", + "fuzz/acert-test-bin-test-corpus.o" + ], + "fuzz/acert-test-bin-acert.o" => [ + "fuzz/acert.c" + ], + "fuzz/acert-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/asn1-test" => [ "fuzz/asn1-test-bin-asn1.o", "fuzz/asn1-test-bin-fuzz_rand.o", @@ -23524,6 +27289,190 @@ our %unified_info = ( "fuzz/ct-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/decoder-test" => [ + "fuzz/decoder-test-bin-decoder.o", + "fuzz/decoder-test-bin-fuzz_rand.o", + "fuzz/decoder-test-bin-test-corpus.o" + ], + "fuzz/decoder-test-bin-decoder.o" => [ + "fuzz/decoder.c" + ], + "fuzz/decoder-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/decoder-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsclient-test" => [ + "fuzz/dtlsclient-test-bin-dtlsclient.o", + "fuzz/dtlsclient-test-bin-fuzz_rand.o", + "fuzz/dtlsclient-test-bin-test-corpus.o" + ], + "fuzz/dtlsclient-test-bin-dtlsclient.o" => [ + "fuzz/dtlsclient.c" + ], + "fuzz/dtlsclient-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsclient-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsserver-test" => [ + "fuzz/dtlsserver-test-bin-dtlsserver.o", + "fuzz/dtlsserver-test-bin-fuzz_rand.o", + "fuzz/dtlsserver-test-bin-test-corpus.o" + ], + "fuzz/dtlsserver-test-bin-dtlsserver.o" => [ + "fuzz/dtlsserver.c" + ], + "fuzz/dtlsserver-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsserver-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/hashtable-test" => [ + "fuzz/hashtable-test-bin-fuzz_rand.o", + "fuzz/hashtable-test-bin-hashtable.o", + "fuzz/hashtable-test-bin-test-corpus.o" + ], + "fuzz/hashtable-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/hashtable-test-bin-hashtable.o" => [ + "fuzz/hashtable.c" + ], + "fuzz/hashtable-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-dsa-test" => [ + "fuzz/ml-dsa-test-bin-fuzz_rand.o", + "fuzz/ml-dsa-test-bin-ml-dsa.o", + "fuzz/ml-dsa-test-bin-test-corpus.o" + ], + "fuzz/ml-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-dsa-test-bin-ml-dsa.o" => [ + "fuzz/ml-dsa.c" + ], + "fuzz/ml-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-kem-test" => [ + "fuzz/ml-kem-test-bin-fuzz_rand.o", + "fuzz/ml-kem-test-bin-ml-kem.o", + "fuzz/ml-kem-test-bin-test-corpus.o" + ], + "fuzz/ml-kem-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-kem-test-bin-ml-kem.o" => [ + "fuzz/ml-kem.c" + ], + "fuzz/ml-kem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/pem-test" => [ + "fuzz/pem-test-bin-pem.o", + "fuzz/pem-test-bin-test-corpus.o" + ], + "fuzz/pem-test-bin-pem.o" => [ + "fuzz/pem.c" + ], + "fuzz/pem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/provider-test" => [ + "fuzz/provider-test-bin-provider.o", + "fuzz/provider-test-bin-test-corpus.o" + ], + "fuzz/provider-test-bin-provider.o" => [ + "fuzz/provider.c" + ], + "fuzz/provider-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/punycode-test" => [ + "fuzz/punycode-test-bin-punycode.o", + "fuzz/punycode-test-bin-test-corpus.o" + ], + "fuzz/punycode-test-bin-punycode.o" => [ + "fuzz/punycode.c" + ], + "fuzz/punycode-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-client-test" => [ + "fuzz/quic-client-test-bin-fuzz_rand.o", + "fuzz/quic-client-test-bin-quic-client.o", + "fuzz/quic-client-test-bin-test-corpus.o" + ], + "fuzz/quic-client-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-client-test-bin-quic-client.o" => [ + "fuzz/quic-client.c" + ], + "fuzz/quic-client-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-lcidm-test" => [ + "fuzz/quic-lcidm-test-bin-fuzz_rand.o", + "fuzz/quic-lcidm-test-bin-quic-lcidm.o", + "fuzz/quic-lcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-lcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-lcidm-test-bin-quic-lcidm.o" => [ + "fuzz/quic-lcidm.c" + ], + "fuzz/quic-lcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-rcidm-test" => [ + "fuzz/quic-rcidm-test-bin-fuzz_rand.o", + "fuzz/quic-rcidm-test-bin-quic-rcidm.o", + "fuzz/quic-rcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-rcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-rcidm-test-bin-quic-rcidm.o" => [ + "fuzz/quic-rcidm.c" + ], + "fuzz/quic-rcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-server-test" => [ + "fuzz/quic-server-test-bin-fuzz_rand.o", + "fuzz/quic-server-test-bin-quic-server.o", + "fuzz/quic-server-test-bin-test-corpus.o" + ], + "fuzz/quic-server-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-server-test-bin-quic-server.o" => [ + "fuzz/quic-server.c" + ], + "fuzz/quic-server-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-srtm-test" => [ + "fuzz/quic-srtm-test-bin-fuzz_rand.o", + "fuzz/quic-srtm-test-bin-quic-srtm.o", + "fuzz/quic-srtm-test-bin-test-corpus.o" + ], + "fuzz/quic-srtm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-srtm-test-bin-quic-srtm.o" => [ + "fuzz/quic-srtm.c" + ], + "fuzz/quic-srtm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/server-test" => [ "fuzz/server-test-bin-fuzz_rand.o", "fuzz/server-test-bin-server.o", @@ -23538,6 +27487,40 @@ our %unified_info = ( "fuzz/server-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/slh-dsa-test" => [ + "fuzz/slh-dsa-test-bin-fuzz_rand.o", + "fuzz/slh-dsa-test-bin-slh-dsa.o", + "fuzz/slh-dsa-test-bin-test-corpus.o" + ], + "fuzz/slh-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/slh-dsa-test-bin-slh-dsa.o" => [ + "fuzz/slh-dsa.c" + ], + "fuzz/slh-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/smime-test" => [ + "fuzz/smime-test-bin-smime.o", + "fuzz/smime-test-bin-test-corpus.o" + ], + "fuzz/smime-test-bin-smime.o" => [ + "fuzz/smime.c" + ], + "fuzz/smime-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test" => [ + "fuzz/v3name-test-bin-test-corpus.o", + "fuzz/v3name-test-bin-v3name.o" + ], + "fuzz/v3name-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test-bin-v3name.o" => [ + "fuzz/v3name.c" + ], "fuzz/x509-test" => [ "fuzz/x509-test-bin-fuzz_rand.o", "fuzz/x509-test-bin-test-corpus.o", @@ -23657,6 +27640,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -23717,6 +27701,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -23892,7 +27877,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", + "crypto/err/libcrypto-lib-err_mark.o", "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o", "crypto/ess/libcrypto-lib-ess_asn1.o", "crypto/ess/libcrypto-lib-ess_err.o", "crypto/ess/libcrypto-lib-ess_lib.o", @@ -23975,7 +27962,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/ffc/libcrypto-lib-ffc_backend.o", "crypto/ffc/libcrypto-lib-ffc_dh.o", "crypto/ffc/libcrypto-lib-ffc_key_generate.o", @@ -23983,7 +27972,11 @@ our %unified_info = ( "crypto/ffc/libcrypto-lib-ffc_params.o", "crypto/ffc/libcrypto-lib-ffc_params_generate.o", "crypto/ffc/libcrypto-lib-ffc_params_validate.o", + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", "crypto/hmac/libcrypto-lib-hmac.o", + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o", "crypto/http/libcrypto-lib-http_client.o", "crypto/http/libcrypto-lib-http_err.o", "crypto/http/libcrypto-lib-http_lib.o", @@ -23997,6 +27990,7 @@ our %unified_info = ( "crypto/lhash/libcrypto-lib-lhash.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -24006,10 +28000,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -24027,6 +28024,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -24034,12 +28032,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/md4/libcrypto-lib-md4_dgst.o", @@ -24049,6 +28051,15 @@ our %unified_info = ( "crypto/md5/libcrypto-lib-md5_sha1.o", "crypto/mdc2/libcrypto-lib-mdc2_one.o", "crypto/mdc2/libcrypto-lib-mdc2dgst.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_kem/libcrypto-lib-ml_kem.o", "crypto/modes/libcrypto-lib-cbc128.o", "crypto/modes/libcrypto-lib-ccm128.o", "crypto/modes/libcrypto-lib-cfb128.o", @@ -24060,6 +28071,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/objects/libcrypto-lib-o_names.o", "crypto/objects/libcrypto-lib-obj_dat.o", "crypto/objects/libcrypto-lib-obj_err.o", @@ -24123,6 +28135,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rc2/libcrypto-lib-rc2_cbc.o", "crypto/rc2/libcrypto-lib-rc2_ecb.o", @@ -24171,6 +28184,16 @@ our %unified_info = ( "crypto/sha/libcrypto-lib-sha3.o", "crypto/sha/libcrypto-lib-sha512.o", "crypto/siphash/libcrypto-lib-siphash.o", + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", "crypto/sm2/libcrypto-lib-sm2_crypt.o", "crypto/sm2/libcrypto-lib-sm2_err.o", "crypto/sm2/libcrypto-lib-sm2_key.o", @@ -24188,6 +28211,12 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_register.o", "crypto/store/libcrypto-lib-store_result.o", "crypto/store/libcrypto-lib-store_strings.o", + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", "crypto/ts/libcrypto-lib-ts_asn1.o", "crypto/ts/libcrypto-lib-ts_conf.o", "crypto/ts/libcrypto-lib-ts_err.o", @@ -24216,14 +28245,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -24232,12 +28269,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -24245,13 +28287,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -24269,6 +28318,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -24278,6 +28328,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -24298,14 +28349,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -24322,12 +28374,60 @@ our %unified_info = ( "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", "ssl/libssl-lib-tls_srp.o", - "ssl/record/libssl-lib-dtls1_bitmap.o", + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o", "ssl/record/libssl-lib-rec_layer_d1.o", "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o", "ssl/statem/libssl-lib-extensions.o", "ssl/statem/libssl-lib-extensions_clnt.o", "ssl/statem/libssl-lib-extensions_cust.o", @@ -24365,12 +28465,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/der/der_ecx_key.c" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/der/der_ml_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/der/der_ml_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/der/der_rsa_gen.c" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/der/der_rsa_key.c" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/der/der_slh_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/der/der_slh_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/der/der_wrap_gen.c" ], @@ -24437,6 +28549,9 @@ our %unified_info = ( "providers/common/libfips-lib-securitycheck_fips.o" => [ "providers/common/securitycheck_fips.c" ], + "providers/endecode_test-bin-legacyprov.o" => [ + "providers/legacyprov.c" + ], "providers/evp_extra_test-bin-legacyprov.o" => [ "providers/legacyprov.c" ], @@ -24447,6 +28562,9 @@ our %unified_info = ( "providers/fips/fips-dso-fips_entry.o" => [ "providers/fips/fips_entry.c" ], + "providers/fips/libfips-lib-fipsindicator.o" => [ + "providers/fips/fipsindicator.c" + ], "providers/fips/libfips-lib-fipsprov.o" => [ "providers/fips/fipsprov.c" ], @@ -24510,6 +28628,15 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o" => [ "providers/implementations/ciphers/cipher_aes_gcm_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o" => [ "providers/implementations/ciphers/cipher_aes_hw.c" ], @@ -24582,9 +28709,27 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o" => [ "providers/implementations/ciphers/cipher_sm4.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o" => [ "providers/implementations/ciphers/cipher_sm4_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o" => [ "providers/implementations/ciphers/cipher_tdes.c" ], @@ -24804,6 +28949,15 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" => [ "providers/implementations/encode_decode/endecoder_common.c" ], + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o" => [ + "providers/implementations/encode_decode/ml_common_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o" => [ + "providers/implementations/encode_decode/ml_dsa_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" => [ + "providers/implementations/encode_decode/ml_kem_codecs.c" + ], "providers/implementations/exchange/libdefault-lib-dh_exch.o" => [ "providers/implementations/exchange/dh_exch.c" ], @@ -24828,9 +28982,15 @@ our %unified_info = ( "providers/implementations/exchange/libfips-lib-kdf_exch.o" => [ "providers/implementations/exchange/kdf_exch.c" ], + "providers/implementations/kdfs/libdefault-lib-argon2.o" => [ + "providers/implementations/kdfs/argon2.c" + ], "providers/implementations/kdfs/libdefault-lib-hkdf.o" => [ "providers/implementations/kdfs/hkdf.c" ], + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o" => [ + "providers/implementations/kdfs/hmacdrbg_kdf.c" + ], "providers/implementations/kdfs/libdefault-lib-kbkdf.o" => [ "providers/implementations/kdfs/kbkdf.c" ], @@ -24888,12 +29048,39 @@ our %unified_info = ( "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" => [ "providers/implementations/kdfs/pbkdf1.c" ], + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" => [ + "providers/implementations/kdfs/pvkkdf.c" + ], + "providers/implementations/kem/libdefault-lib-ec_kem.o" => [ + "providers/implementations/kem/ec_kem.c" + ], + "providers/implementations/kem/libdefault-lib-ecx_kem.o" => [ + "providers/implementations/kem/ecx_kem.c" + ], + "providers/implementations/kem/libdefault-lib-kem_util.o" => [ + "providers/implementations/kem/kem_util.c" + ], + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libdefault-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libdefault-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libfips-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libfips-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libfips-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libtemplate-lib-template_kem.o" => [ + "providers/implementations/kem/template_kem.c" + ], "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -24912,9 +29099,21 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -24933,9 +29132,24 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" => [ + "providers/implementations/keymgmt/template_kmgmt.c" + ], "providers/implementations/macs/libdefault-lib-blake2b_mac.o" => [ "providers/implementations/macs/blake2b_mac.c" ], @@ -24972,9 +29186,6 @@ our %unified_info = ( "providers/implementations/macs/libfips-lib-kmac_prov.o" => [ "providers/implementations/macs/kmac_prov.c" ], - "providers/implementations/rands/libdefault-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libdefault-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -24990,12 +29201,12 @@ our %unified_info = ( "providers/implementations/rands/libdefault-lib-seed_src.o" => [ "providers/implementations/rands/seed_src.c" ], + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o" => [ + "providers/implementations/rands/seed_src_jitter.c" + ], "providers/implementations/rands/libdefault-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], - "providers/implementations/rands/libfips-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libfips-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25008,6 +29219,9 @@ our %unified_info = ( "providers/implementations/rands/libfips-lib-drbg_hmac.o" => [ "providers/implementations/rands/drbg_hmac.c" ], + "providers/implementations/rands/libfips-lib-fips_crng_test.o" => [ + "providers/implementations/rands/fips_crng_test.c" + ], "providers/implementations/rands/libfips-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], @@ -25035,9 +29249,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/implementations/signature/sm2_sig.c" ], @@ -25053,9 +29273,27 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libfips-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], "providers/implementations/storemgmt/libdefault-lib-file_store.o" => [ "providers/implementations/storemgmt/file_store.c" ], @@ -25079,8 +29317,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/libcommon-lib-provider_ctx.o", "providers/common/libcommon-lib-provider_err.o", @@ -25092,7 +29334,7 @@ our %unified_info = ( "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", "providers/implementations/digests/libcommon-lib-digestcommon.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/methods/libcommon-lib-tls_pad.o" ], "providers/libcrypto-lib-baseprov.o" => [ "providers/baseprov.c" @@ -25128,6 +29370,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -25152,7 +29397,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -25181,11 +29432,16 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o", "providers/implementations/exchange/libdefault-lib-dh_exch.o", "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", "providers/implementations/exchange/libdefault-lib-ecx_exch.o", "providers/implementations/exchange/libdefault-lib-kdf_exch.o", + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -25196,6 +29452,11 @@ our %unified_info = ( "providers/implementations/kdfs/libdefault-lib-sskdf.o", "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", "providers/implementations/kdfs/libdefault-lib-x942kdf.o", + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", @@ -25203,7 +29464,11 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libdefault-lib-blake2b_mac.o", "providers/implementations/macs/libdefault-lib-blake2s_mac.o", "providers/implementations/macs/libdefault-lib-cmac_prov.o", @@ -25212,12 +29477,12 @@ our %unified_info = ( "providers/implementations/macs/libdefault-lib-kmac_prov.o", "providers/implementations/macs/libdefault-lib-poly1305_prov.o", "providers/implementations/macs/libdefault-lib-siphash_prov.o", - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", @@ -25227,11 +29492,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", "providers/implementations/storemgmt/libdefault-lib-file_store.o", "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", - "ssl/libdefault-lib-s3_cbc.o" + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" ], "providers/libfips.a" => [ "crypto/aes/libfips-lib-aes_cbc.o", @@ -25333,14 +29602,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", + "crypto/evp/libfips-lib-s_lib.o", "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o", "crypto/ffc/libfips-lib-ffc_backend.o", "crypto/ffc/libfips-lib-ffc_dh.o", "crypto/ffc/libfips-lib-ffc_key_generate.o", @@ -25348,6 +29618,8 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params.o", "crypto/ffc/libfips-lib-ffc_params_generate.o", "crypto/ffc/libfips-lib-ffc_params_validate.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o", "crypto/hmac/libfips-lib-hmac.o", "crypto/lhash/libfips-lib-lhash.o", "crypto/libfips-lib-asn1_dsa.o", @@ -25370,6 +29642,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -25378,6 +29651,16 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o", + "crypto/ml_kem/libfips-lib-ml_kem.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -25386,6 +29669,7 @@ our %unified_info = ( "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o", "crypto/property/libfips-lib-defn_cache.o", "crypto/property/libfips-lib-property.o", "crypto/property/libfips-lib-property_parse.o", @@ -25414,7 +29698,23 @@ our %unified_info = ( "crypto/sha/libfips-lib-sha256.o", "crypto/sha/libfips-lib-sha3.o", "crypto/sha/libfips-lib-sha512.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o", "crypto/stack/libfips-lib-stack.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o", "providers/common/der/libfips-lib-der_rsa_sig.o", "providers/common/libfips-lib-bio_prov.o", "providers/common/libfips-lib-capabilities.o", @@ -25423,6 +29723,7 @@ our %unified_info = ( "providers/common/libfips-lib-provider_util.o", "providers/common/libfips-lib-securitycheck.o", "providers/common/libfips-lib-securitycheck_fips.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o", @@ -25460,6 +29761,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", "providers/implementations/kem/libfips-lib-rsa_kem.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", @@ -25467,24 +29770,32 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libfips-lib-cmac_prov.o", "providers/implementations/macs/libfips-lib-gmac_prov.o", "providers/implementations/macs/libfips-lib-hmac_prov.o", "providers/implementations/macs/libfips-lib-kmac_prov.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o", "providers/libcommon.a", - "ssl/libfips-lib-s3_cbc.o" + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "providers/liblegacy-lib-prov_running.o" => [ "providers/prov_running.c" @@ -25514,13 +29825,12 @@ our %unified_info = ( "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", "providers/implementations/digests/liblegacy-lib-wp_prov.o", "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o", "providers/liblegacy-lib-prov_running.o" ], - "ssl/libdefault-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" - ], - "ssl/libfips-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" + "providers/libtemplate.a" => [ + "providers/implementations/kem/libtemplate-lib-template_kem.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "ssl/libssl-lib-bio_ssl.o" => [ "ssl/bio_ssl.c" @@ -25540,6 +29850,9 @@ our %unified_info = ( "ssl/libssl-lib-pqueue.o" => [ "ssl/pqueue.c" ], + "ssl/libssl-lib-priority_queue.o" => [ + "ssl/priority_queue.c" + ], "ssl/libssl-lib-s3_enc.o" => [ "ssl/s3_enc.c" ], @@ -25555,15 +29868,15 @@ our %unified_info = ( "ssl/libssl-lib-ssl_cert.o" => [ "ssl/ssl_cert.c" ], + "ssl/libssl-lib-ssl_cert_comp.o" => [ + "ssl/ssl_cert_comp.c" + ], "ssl/libssl-lib-ssl_ciph.o" => [ "ssl/ssl_ciph.c" ], "ssl/libssl-lib-ssl_conf.o" => [ "ssl/ssl_conf.c" ], - "ssl/libssl-lib-ssl_err.o" => [ - "ssl/ssl_err.c" - ], "ssl/libssl-lib-ssl_err_legacy.o" => [ "ssl/ssl_err_legacy.c" ], @@ -25612,11 +29925,131 @@ our %unified_info = ( "ssl/libssl-lib-tls_srp.o" => [ "ssl/tls_srp.c" ], - "ssl/record/libcommon-lib-tls_pad.o" => [ - "ssl/record/tls_pad.c" + "ssl/quic/libssl-lib-cc_newreno.o" => [ + "ssl/quic/cc_newreno.c" + ], + "ssl/quic/libssl-lib-json_enc.o" => [ + "ssl/quic/json_enc.c" + ], + "ssl/quic/libssl-lib-qlog.o" => [ + "ssl/quic/qlog.c" + ], + "ssl/quic/libssl-lib-qlog_event_helpers.o" => [ + "ssl/quic/qlog_event_helpers.c" + ], + "ssl/quic/libssl-lib-quic_ackm.o" => [ + "ssl/quic/quic_ackm.c" + ], + "ssl/quic/libssl-lib-quic_cfq.o" => [ + "ssl/quic/quic_cfq.c" + ], + "ssl/quic/libssl-lib-quic_channel.o" => [ + "ssl/quic/quic_channel.c" + ], + "ssl/quic/libssl-lib-quic_demux.o" => [ + "ssl/quic/quic_demux.c" + ], + "ssl/quic/libssl-lib-quic_engine.o" => [ + "ssl/quic/quic_engine.c" + ], + "ssl/quic/libssl-lib-quic_fc.o" => [ + "ssl/quic/quic_fc.c" + ], + "ssl/quic/libssl-lib-quic_fifd.o" => [ + "ssl/quic/quic_fifd.c" + ], + "ssl/quic/libssl-lib-quic_impl.o" => [ + "ssl/quic/quic_impl.c" + ], + "ssl/quic/libssl-lib-quic_lcidm.o" => [ + "ssl/quic/quic_lcidm.c" + ], + "ssl/quic/libssl-lib-quic_method.o" => [ + "ssl/quic/quic_method.c" + ], + "ssl/quic/libssl-lib-quic_obj.o" => [ + "ssl/quic/quic_obj.c" + ], + "ssl/quic/libssl-lib-quic_port.o" => [ + "ssl/quic/quic_port.c" + ], + "ssl/quic/libssl-lib-quic_rcidm.o" => [ + "ssl/quic/quic_rcidm.c" + ], + "ssl/quic/libssl-lib-quic_reactor.o" => [ + "ssl/quic/quic_reactor.c" + ], + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o" => [ + "ssl/quic/quic_reactor_wait_ctx.c" + ], + "ssl/quic/libssl-lib-quic_record_rx.o" => [ + "ssl/quic/quic_record_rx.c" + ], + "ssl/quic/libssl-lib-quic_record_shared.o" => [ + "ssl/quic/quic_record_shared.c" + ], + "ssl/quic/libssl-lib-quic_record_tx.o" => [ + "ssl/quic/quic_record_tx.c" + ], + "ssl/quic/libssl-lib-quic_record_util.o" => [ + "ssl/quic/quic_record_util.c" + ], + "ssl/quic/libssl-lib-quic_rstream.o" => [ + "ssl/quic/quic_rstream.c" ], - "ssl/record/libssl-lib-dtls1_bitmap.o" => [ - "ssl/record/dtls1_bitmap.c" + "ssl/quic/libssl-lib-quic_rx_depack.o" => [ + "ssl/quic/quic_rx_depack.c" + ], + "ssl/quic/libssl-lib-quic_sf_list.o" => [ + "ssl/quic/quic_sf_list.c" + ], + "ssl/quic/libssl-lib-quic_srt_gen.o" => [ + "ssl/quic/quic_srt_gen.c" + ], + "ssl/quic/libssl-lib-quic_srtm.o" => [ + "ssl/quic/quic_srtm.c" + ], + "ssl/quic/libssl-lib-quic_sstream.o" => [ + "ssl/quic/quic_sstream.c" + ], + "ssl/quic/libssl-lib-quic_statm.o" => [ + "ssl/quic/quic_statm.c" + ], + "ssl/quic/libssl-lib-quic_stream_map.o" => [ + "ssl/quic/quic_stream_map.c" + ], + "ssl/quic/libssl-lib-quic_thread_assist.o" => [ + "ssl/quic/quic_thread_assist.c" + ], + "ssl/quic/libssl-lib-quic_tls.o" => [ + "ssl/quic/quic_tls.c" + ], + "ssl/quic/libssl-lib-quic_tls_api.o" => [ + "ssl/quic/quic_tls_api.c" + ], + "ssl/quic/libssl-lib-quic_trace.o" => [ + "ssl/quic/quic_trace.c" + ], + "ssl/quic/libssl-lib-quic_tserver.o" => [ + "ssl/quic/quic_tserver.c" + ], + "ssl/quic/libssl-lib-quic_txp.o" => [ + "ssl/quic/quic_txp.c" + ], + "ssl/quic/libssl-lib-quic_txpim.o" => [ + "ssl/quic/quic_txpim.c" + ], + "ssl/quic/libssl-lib-quic_types.o" => [ + "ssl/quic/quic_types.c" + ], + "ssl/quic/libssl-lib-quic_wire.o" => [ + "ssl/quic/quic_wire.c" + ], + "ssl/quic/libssl-lib-quic_wire_pkt.o" => [ + "ssl/quic/quic_wire_pkt.c" + ], + "ssl/quic/libssl-lib-uint_set.o" => [ + "ssl/quic/uint_set.c" ], "ssl/record/libssl-lib-rec_layer_d1.o" => [ "ssl/record/rec_layer_d1.c" @@ -25624,14 +30057,44 @@ our %unified_info = ( "ssl/record/libssl-lib-rec_layer_s3.o" => [ "ssl/record/rec_layer_s3.c" ], - "ssl/record/libssl-lib-ssl3_buffer.o" => [ - "ssl/record/ssl3_buffer.c" + "ssl/record/methods/libcommon-lib-tls_pad.o" => [ + "ssl/record/methods/tls_pad.c" + ], + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libfips-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libssl-lib-dtls_meth.o" => [ + "ssl/record/methods/dtls_meth.c" + ], + "ssl/record/methods/libssl-lib-ssl3_meth.o" => [ + "ssl/record/methods/ssl3_meth.c" + ], + "ssl/record/methods/libssl-lib-tls13_meth.o" => [ + "ssl/record/methods/tls13_meth.c" + ], + "ssl/record/methods/libssl-lib-tls1_meth.o" => [ + "ssl/record/methods/tls1_meth.c" + ], + "ssl/record/methods/libssl-lib-tls_common.o" => [ + "ssl/record/methods/tls_common.c" ], - "ssl/record/libssl-lib-ssl3_record.o" => [ - "ssl/record/ssl3_record.c" + "ssl/record/methods/libssl-lib-tls_multib.o" => [ + "ssl/record/methods/tls_multib.c" ], - "ssl/record/libssl-lib-ssl3_record_tls13.o" => [ - "ssl/record/ssl3_record_tls13.c" + "ssl/record/methods/libssl-lib-tlsany_meth.o" => [ + "ssl/record/methods/tlsany_meth.c" + ], + "ssl/rio/libssl-lib-poll_builder.o" => [ + "ssl/rio/poll_builder.c" + ], + "ssl/rio/libssl-lib-poll_immediate.o" => [ + "ssl/rio/poll_immediate.c" + ], + "ssl/rio/libssl-lib-rio_notifier.o" => [ + "ssl/rio/rio_notifier.c" ], "ssl/statem/libssl-lib-extensions.o" => [ "ssl/statem/extensions.c" @@ -25727,6 +30190,8 @@ our %unified_info = ( "test/asn1_string_table_test.c" ], "test/asn1_time_test" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1_time_test-bin-ctype.o", "test/asn1_time_test-bin-asn1_time_test.o" ], "test/asn1_time_test-bin-asn1_time_test.o" => [ @@ -25757,6 +30222,18 @@ our %unified_info = ( "test/bftest-bin-bftest.o" => [ "test/bftest.c" ], + "test/bio_addr_test" => [ + "test/bio_addr_test-bin-bio_addr_test.o" + ], + "test/bio_addr_test-bin-bio_addr_test.o" => [ + "test/bio_addr_test.c" + ], + "test/bio_base64_test" => [ + "test/bio_base64_test-bin-bio_base64_test.o" + ], + "test/bio_base64_test-bin-bio_base64_test.o" => [ + "test/bio_base64_test.c" + ], "test/bio_callback_test" => [ "test/bio_callback_test-bin-bio_callback_test.o" ], @@ -25769,6 +30246,12 @@ our %unified_info = ( "test/bio_core_test-bin-bio_core_test.o" => [ "test/bio_core_test.c" ], + "test/bio_dgram_test" => [ + "test/bio_dgram_test-bin-bio_dgram_test.o" + ], + "test/bio_dgram_test-bin-bio_dgram_test.o" => [ + "test/bio_dgram_test.c" + ], "test/bio_enc_test" => [ "test/bio_enc_test-bin-bio_enc_test.o" ], @@ -25781,6 +30264,12 @@ our %unified_info = ( "test/bio_memleak_test-bin-bio_memleak_test.o" => [ "test/bio_memleak_test.c" ], + "test/bio_meth_test" => [ + "test/bio_meth_test-bin-bio_meth_test.o" + ], + "test/bio_meth_test-bin-bio_meth_test.o" => [ + "test/bio_meth_test.c" + ], "test/bio_prefix_text" => [ "test/bio_prefix_text-bin-bio_prefix_text.o" ], @@ -25799,6 +30288,12 @@ our %unified_info = ( "test/bio_readbuffer_test-bin-bio_readbuffer_test.o" => [ "test/bio_readbuffer_test.c" ], + "test/bio_tfo_test" => [ + "test/bio_tfo_test-bin-bio_tfo_test.o" + ], + "test/bio_tfo_test-bin-bio_tfo_test.o" => [ + "test/bio_tfo_test.c" + ], "test/bioprinttest" => [ "test/bioprinttest-bin-bioprinttest.o" ], @@ -25817,6 +30312,12 @@ our %unified_info = ( "test/bntest-bin-bntest.o" => [ "test/bntest.c" ], + "test/build_wincrypt_test" => [ + "test/build_wincrypt_test-bin-build_wincrypt_test.o" + ], + "test/build_wincrypt_test-bin-build_wincrypt_test.o" => [ + "test/build_wincrypt_test.c" + ], "test/buildtest_c_aes" => [ "test/buildtest_c_aes-bin-buildtest_aes.o" ], @@ -25847,6 +30348,12 @@ our %unified_info = ( "test/buildtest_c_buffer-bin-buildtest_buffer.o" => [ "test/buildtest_buffer.c" ], + "test/buildtest_c_byteorder" => [ + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" + ], + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" => [ + "test/buildtest_byteorder.c" + ], "test/buildtest_c_camellia" => [ "test/buildtest_c_camellia-bin-buildtest_camellia.o" ], @@ -25895,12 +30402,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch-bin-buildtest_core_dispatch.o" => [ "test/buildtest_core_dispatch.c" ], - "test/buildtest_c_core_names" => [ - "test/buildtest_c_core_names-bin-buildtest_core_names.o" - ], - "test/buildtest_c_core_names-bin-buildtest_core_names.o" => [ - "test/buildtest_core_names.c" - ], "test/buildtest_c_core_object" => [ "test/buildtest_c_core_object-bin-buildtest_core_object.o" ], @@ -25949,6 +30450,12 @@ our %unified_info = ( "test/buildtest_c_e_os2-bin-buildtest_e_os2.o" => [ "test/buildtest_e_os2.c" ], + "test/buildtest_c_e_ostime" => [ + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" + ], + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" => [ + "test/buildtest_e_ostime.c" + ], "test/buildtest_c_ebcdic" => [ "test/buildtest_c_ebcdic-bin-buildtest_ebcdic.o" ], @@ -26003,6 +30510,12 @@ our %unified_info = ( "test/buildtest_c_hmac-bin-buildtest_hmac.o" => [ "test/buildtest_hmac.c" ], + "test/buildtest_c_hpke" => [ + "test/buildtest_c_hpke-bin-buildtest_hpke.o" + ], + "test/buildtest_c_hpke-bin-buildtest_hpke.o" => [ + "test/buildtest_hpke.c" + ], "test/buildtest_c_http" => [ "test/buildtest_c_http-bin-buildtest_http.o" ], @@ -26015,6 +30528,12 @@ our %unified_info = ( "test/buildtest_c_idea-bin-buildtest_idea.o" => [ "test/buildtest_idea.c" ], + "test/buildtest_c_indicator" => [ + "test/buildtest_c_indicator-bin-buildtest_indicator.o" + ], + "test/buildtest_c_indicator-bin-buildtest_indicator.o" => [ + "test/buildtest_indicator.c" + ], "test/buildtest_c_kdf" => [ "test/buildtest_c_kdf-bin-buildtest_kdf.o" ], @@ -26045,6 +30564,12 @@ our %unified_info = ( "test/buildtest_c_mdc2-bin-buildtest_mdc2.o" => [ "test/buildtest_mdc2.c" ], + "test/buildtest_c_ml_kem" => [ + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" + ], + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" => [ + "test/buildtest_ml_kem.c" + ], "test/buildtest_c_modes" => [ "test/buildtest_c_modes-bin-buildtest_modes.o" ], @@ -26105,6 +30630,12 @@ our %unified_info = ( "test/buildtest_c_provider-bin-buildtest_provider.o" => [ "test/buildtest_provider.c" ], + "test/buildtest_c_quic" => [ + "test/buildtest_c_quic-bin-buildtest_quic.o" + ], + "test/buildtest_c_quic-bin-buildtest_quic.o" => [ + "test/buildtest_quic.c" + ], "test/buildtest_c_rand" => [ "test/buildtest_c_rand-bin-buildtest_rand.o" ], @@ -26189,6 +30720,12 @@ our %unified_info = ( "test/buildtest_c_symhacks-bin-buildtest_symhacks.o" => [ "test/buildtest_symhacks.c" ], + "test/buildtest_c_thread" => [ + "test/buildtest_c_thread-bin-buildtest_thread.o" + ], + "test/buildtest_c_thread-bin-buildtest_thread.o" => [ + "test/buildtest_thread.c" + ], "test/buildtest_c_tls1" => [ "test/buildtest_c_tls1-bin-buildtest_tls1.o" ], @@ -26219,6 +30756,29 @@ our %unified_info = ( "test/buildtest_c_whrlpool-bin-buildtest_whrlpool.o" => [ "test/buildtest_whrlpool.c" ], + "test/byteorder_test" => [ + "test/byteorder_test-bin-byteorder_test.o" + ], + "test/byteorder_test-bin-byteorder_test.o" => [ + "test/byteorder_test.c" + ], + "test/ca_internals_test" => [ + "apps/ca_internals_test-bin-ca.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", + "crypto/ca_internals_test-bin-ctype.o", + "test/ca_internals_test-bin-ca_internals_test.o" + ], + "test/ca_internals_test-bin-ca_internals_test.o" => [ + "test/ca_internals_test.c" + ], "test/casttest" => [ "test/casttest-bin-casttest.o" ], @@ -26397,6 +30957,12 @@ our %unified_info = ( "test/danetest-bin-danetest.o" => [ "test/danetest.c" ], + "test/decoder_propq_test" => [ + "test/decoder_propq_test-bin-decoder_propq_test.o" + ], + "test/decoder_propq_test-bin-decoder_propq_test.o" => [ + "test/decoder_propq_test.c" + ], "test/defltfips_test" => [ "test/defltfips_test-bin-defltfips_test.o" ], @@ -26478,6 +31044,7 @@ our %unified_info = ( "test/ectest.c" ], "test/endecode_test" => [ + "providers/endecode_test-bin-legacyprov.o", "test/endecode_test-bin-endecode_test.o", "test/helpers/endecode_test-bin-predefined_dhparams.o" ], @@ -26510,17 +31077,29 @@ our %unified_info = ( ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", - "test/evp_extra_test-bin-evp_extra_test.o" + "test/evp_extra_test-bin-evp_extra_test.o", + "test/evp_extra_test-bin-fake_pipelineprov.o", + "test/evp_extra_test-bin-fake_rsaprov.o" ], "test/evp_extra_test-bin-evp_extra_test.o" => [ "test/evp_extra_test.c" ], + "test/evp_extra_test-bin-fake_pipelineprov.o" => [ + "test/fake_pipelineprov.c" + ], + "test/evp_extra_test-bin-fake_rsaprov.o" => [ + "test/fake_rsaprov.c" + ], "test/evp_extra_test2" => [ - "test/evp_extra_test2-bin-evp_extra_test2.o" + "test/evp_extra_test2-bin-evp_extra_test2.o", + "test/evp_extra_test2-bin-tls-provider.o" ], "test/evp_extra_test2-bin-evp_extra_test2.o" => [ "test/evp_extra_test2.c" ], + "test/evp_extra_test2-bin-tls-provider.o" => [ + "test/tls-provider.c" + ], "test/evp_fetch_prov_test" => [ "test/evp_fetch_prov_test-bin-evp_fetch_prov_test.o" ], @@ -26545,6 +31124,12 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name-bin-evp_pkey_ctx_new_from_name.o" => [ "test/evp_pkey_ctx_new_from_name.c" ], + "test/evp_pkey_dhkem_test" => [ + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" + ], + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" => [ + "test/evp_pkey_dhkem_test.c" + ], "test/evp_pkey_dparams_test" => [ "test/evp_pkey_dparams_test-bin-evp_pkey_dparams_test.o" ], @@ -26557,12 +31142,28 @@ our %unified_info = ( "test/evp_pkey_provided_test-bin-evp_pkey_provided_test.o" => [ "test/evp_pkey_provided_test.c" ], + "test/evp_skey_test" => [ + "test/evp_skey_test-bin-evp_skey_test.o", + "test/evp_skey_test-bin-fake_cipherprov.o" + ], + "test/evp_skey_test-bin-evp_skey_test.o" => [ + "test/evp_skey_test.c" + ], + "test/evp_skey_test-bin-fake_cipherprov.o" => [ + "test/fake_cipherprov.c" + ], "test/evp_test" => [ "test/evp_test-bin-evp_test.o" ], "test/evp_test-bin-evp_test.o" => [ "test/evp_test.c" ], + "test/evp_xof_test" => [ + "test/evp_xof_test-bin-evp_xof_test.o" + ], + "test/evp_xof_test-bin-evp_xof_test.o" => [ + "test/evp_xof_test.c" + ], "test/exdatatest" => [ "test/exdatatest-bin-exdatatest.o" ], @@ -26648,15 +31249,108 @@ our %unified_info = ( "test/helpers/fatalerrtest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/json_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/json_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/json_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + "test/helpers/pkcs12.c" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ "test/helpers/pkcs12.c" ], + "test/helpers/quic_multistream_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_multistream_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_multistream_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_newcid_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_newcid_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_newcid_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_radix_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_radix_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_radix_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_srt_gen_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicapitest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicapitest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicapitest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicfaultstest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicfaultstest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicfaultstest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/ssl_old_test-bin-predefined_dhparams.o" => [ "test/helpers/predefined_dhparams.c" ], @@ -26684,6 +31378,9 @@ our %unified_info = ( "test/helpers/tls13ccstest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/hexstr_test" => [ "test/hexstr_test-bin-hexstr_test.o" ], @@ -26696,6 +31393,12 @@ our %unified_info = ( "test/hmactest-bin-hmactest.o" => [ "test/hmactest.c" ], + "test/hpke_test" => [ + "test/hpke_test-bin-hpke_test.o" + ], + "test/hpke_test-bin-hpke_test.o" => [ + "test/hpke_test.c" + ], "test/http_test" => [ "test/http_test-bin-http_test.o" ], @@ -26714,6 +31417,16 @@ our %unified_info = ( "test/igetest-bin-igetest.o" => [ "test/igetest.c" ], + "test/json_test" => [ + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/json_test-bin-json_test.o" + ], + "test/json_test-bin-json_test.o" => [ + "test/json_test.c" + ], "test/keymgmt_internal_test" => [ "test/keymgmt_internal_test-bin-keymgmt_internal_test.o" ], @@ -26734,6 +31447,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -26746,6 +31460,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-tests.o", "test/testutil/libtestutil-lib-testutil_init.o" ], + "test/list_test" => [ + "test/list_test-bin-list_test.o" + ], + "test/list_test-bin-list_test.o" => [ + "test/list_test.c" + ], "test/localetest" => [ "test/localetest-bin-localetest.o" ], @@ -26764,12 +31484,36 @@ our %unified_info = ( "test/mdc2test-bin-mdc2test.o" => [ "test/mdc2test.c" ], + "test/membio_test" => [ + "test/membio_test-bin-membio_test.o" + ], + "test/membio_test-bin-membio_test.o" => [ + "test/membio_test.c" + ], "test/memleaktest" => [ "test/memleaktest-bin-memleaktest.o" ], "test/memleaktest-bin-memleaktest.o" => [ "test/memleaktest.c" ], + "test/ml_dsa_test" => [ + "test/ml_dsa_test-bin-ml_dsa_test.o" + ], + "test/ml_dsa_test-bin-ml_dsa_test.o" => [ + "test/ml_dsa_test.c" + ], + "test/ml_kem_evp_extra_test" => [ + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" + ], + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" => [ + "test/ml_kem_evp_extra_test.c" + ], + "test/ml_kem_internal_test" => [ + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" + ], + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" => [ + "test/ml_kem_internal_test.c" + ], "test/modes_internal_test" => [ "test/modes_internal_test-bin-modes_internal_test.o" ], @@ -26815,11 +31559,18 @@ our %unified_info = ( "test/p_test.c" ], "test/packettest" => [ + "crypto/packettest-bin-quic_vlint.o", "test/packettest-bin-packettest.o" ], "test/packettest-bin-packettest.o" => [ "test/packettest.c" ], + "test/pairwise_fail_test" => [ + "test/pairwise_fail_test-bin-pairwise_fail_test.o" + ], + "test/pairwise_fail_test-bin-pairwise_fail_test.o" => [ + "test/pairwise_fail_test.c" + ], "test/param_build_test" => [ "test/param_build_test-bin-param_build_test.o" ], @@ -26868,6 +31619,13 @@ our %unified_info = ( "test/pemtest-bin-pemtest.o" => [ "test/pemtest.c" ], + "test/pkcs12_api_test" => [ + "test/helpers/pkcs12_api_test-bin-pkcs12.o", + "test/pkcs12_api_test-bin-pkcs12_api_test.o" + ], + "test/pkcs12_api_test-bin-pkcs12_api_test.o" => [ + "test/pkcs12_api_test.c" + ], "test/pkcs12_format_test" => [ "test/helpers/pkcs12_format_test-bin-pkcs12.o", "test/pkcs12_format_test-bin-pkcs12_format_test.o" @@ -26899,6 +31657,12 @@ our %unified_info = ( "test/poly1305_internal_test-bin-poly1305_internal_test.o" => [ "test/poly1305_internal_test.c" ], + "test/priority_queue_test" => [ + "test/priority_queue_test-bin-priority_queue_test.o" + ], + "test/priority_queue_test-bin-priority_queue_test.o" => [ + "test/priority_queue_test.c" + ], "test/property_test" => [ "test/property_test-bin-property_test.o" ], @@ -26917,6 +31681,12 @@ our %unified_info = ( "test/provfetchtest-bin-provfetchtest.o" => [ "test/provfetchtest.c" ], + "test/provider_default_search_path_test" => [ + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" + ], + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" => [ + "test/provider_default_search_path_test.c" + ], "test/provider_fallback_test" => [ "test/provider_fallback_test-bin-provider_fallback_test.o" ], @@ -26965,6 +31735,174 @@ our %unified_info = ( "test/punycode_test-bin-punycode_test.o" => [ "test/punycode_test.c" ], + "test/quic_ackm_test" => [ + "test/quic_ackm_test-bin-cc_dummy.o", + "test/quic_ackm_test-bin-quic_ackm_test.o" + ], + "test/quic_ackm_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_ackm_test-bin-quic_ackm_test.o" => [ + "test/quic_ackm_test.c" + ], + "test/quic_cc_test" => [ + "test/quic_cc_test-bin-quic_cc_test.o" + ], + "test/quic_cc_test-bin-quic_cc_test.o" => [ + "test/quic_cc_test.c" + ], + "test/quic_cfq_test" => [ + "test/quic_cfq_test-bin-quic_cfq_test.o" + ], + "test/quic_cfq_test-bin-quic_cfq_test.o" => [ + "test/quic_cfq_test.c" + ], + "test/quic_client_test" => [ + "test/quic_client_test-bin-quic_client_test.o" + ], + "test/quic_client_test-bin-quic_client_test.o" => [ + "test/quic_client_test.c" + ], + "test/quic_fc_test" => [ + "test/quic_fc_test-bin-quic_fc_test.o" + ], + "test/quic_fc_test-bin-quic_fc_test.o" => [ + "test/quic_fc_test.c" + ], + "test/quic_fifd_test" => [ + "test/quic_fifd_test-bin-cc_dummy.o", + "test/quic_fifd_test-bin-quic_fifd_test.o" + ], + "test/quic_fifd_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_fifd_test-bin-quic_fifd_test.o" => [ + "test/quic_fifd_test.c" + ], + "test/quic_lcidm_test" => [ + "test/quic_lcidm_test-bin-quic_lcidm_test.o" + ], + "test/quic_lcidm_test-bin-quic_lcidm_test.o" => [ + "test/quic_lcidm_test.c" + ], + "test/quic_multistream_test" => [ + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/quic_multistream_test-bin-quic_multistream_test.o" + ], + "test/quic_multistream_test-bin-quic_multistream_test.o" => [ + "test/quic_multistream_test.c" + ], + "test/quic_newcid_test" => [ + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/quic_newcid_test-bin-quic_newcid_test.o" + ], + "test/quic_newcid_test-bin-quic_newcid_test.o" => [ + "test/quic_newcid_test.c" + ], + "test/quic_qlog_test" => [ + "test/quic_qlog_test-bin-quic_qlog_test.o" + ], + "test/quic_qlog_test-bin-quic_qlog_test.o" => [ + "test/quic_qlog_test.c" + ], + "test/quic_radix_test" => [ + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "test/quic_rcidm_test" => [ + "test/quic_rcidm_test-bin-quic_rcidm_test.o" + ], + "test/quic_rcidm_test-bin-quic_rcidm_test.o" => [ + "test/quic_rcidm_test.c" + ], + "test/quic_record_test" => [ + "test/quic_record_test-bin-quic_record_test.o" + ], + "test/quic_record_test-bin-quic_record_test.o" => [ + "test/quic_record_test.c" + ], + "test/quic_srt_gen_test" => [ + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" + ], + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" => [ + "test/quic_srt_gen_test.c" + ], + "test/quic_srtm_test" => [ + "test/quic_srtm_test-bin-quic_srtm_test.o" + ], + "test/quic_srtm_test-bin-quic_srtm_test.o" => [ + "test/quic_srtm_test.c" + ], + "test/quic_stream_test" => [ + "test/quic_stream_test-bin-quic_stream_test.o" + ], + "test/quic_stream_test-bin-quic_stream_test.o" => [ + "test/quic_stream_test.c" + ], + "test/quic_tserver_test" => [ + "test/quic_tserver_test-bin-quic_tserver_test.o" + ], + "test/quic_tserver_test-bin-quic_tserver_test.o" => [ + "test/quic_tserver_test.c" + ], + "test/quic_txp_test" => [ + "test/quic_txp_test-bin-cc_dummy.o", + "test/quic_txp_test-bin-quic_txp_test.o" + ], + "test/quic_txp_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_txp_test-bin-quic_txp_test.o" => [ + "test/quic_txp_test.c" + ], + "test/quic_txpim_test" => [ + "test/quic_txpim_test-bin-quic_txpim_test.o" + ], + "test/quic_txpim_test-bin-quic_txpim_test.o" => [ + "test/quic_txpim_test.c" + ], + "test/quic_wire_test" => [ + "test/quic_wire_test-bin-quic_wire_test.o" + ], + "test/quic_wire_test-bin-quic_wire_test.o" => [ + "test/quic_wire_test.c" + ], + "test/quicapitest" => [ + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/quicapitest-bin-quicapitest.o" + ], + "test/quicapitest-bin-quicapitest.o" => [ + "test/quicapitest.c" + ], + "test/quicfaultstest" => [ + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", + "test/quicfaultstest-bin-quicfaultstest.o" + ], + "test/quicfaultstest-bin-quicfaultstest.o" => [ + "test/quicfaultstest.c" + ], + "test/radix/quic_radix_test-bin-quic_radix.o" => [ + "test/radix/quic_radix.c" + ], "test/rand_status_test" => [ "test/rand_status_test-bin-rand_status_test.o" ], @@ -26995,11 +31933,11 @@ our %unified_info = ( "test/rc5test-bin-rc5test.o" => [ "test/rc5test.c" ], - "test/rdrand_sanitytest" => [ - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" + "test/rdcpu_sanitytest" => [ + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" ], - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" => [ - "test/rdrand_sanitytest.c" + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" => [ + "test/rdcpu_sanitytest.c" ], "test/recordlentest" => [ "test/helpers/recordlentest-bin-ssltestlib.o", @@ -27008,6 +31946,13 @@ our %unified_info = ( "test/recordlentest-bin-recordlentest.o" => [ "test/recordlentest.c" ], + "test/rpktest" => [ + "test/helpers/rpktest-bin-ssltestlib.o", + "test/rpktest-bin-rpktest.o" + ], + "test/rpktest-bin-rpktest.o" => [ + "test/rpktest.c" + ], "test/rsa_complex" => [ "test/rsa_complex-bin-rsa_complex.o" ], @@ -27032,6 +31977,18 @@ our %unified_info = ( "test/rsa_test-bin-rsa_test.o" => [ "test/rsa_test.c" ], + "test/rsa_x931_test" => [ + "test/rsa_x931_test-bin-rsa_x931_test.o" + ], + "test/rsa_x931_test-bin-rsa_x931_test.o" => [ + "test/rsa_x931_test.c" + ], + "test/safe_math_test" => [ + "test/safe_math_test-bin-safe_math_test.o" + ], + "test/safe_math_test-bin-safe_math_test.o" => [ + "test/safe_math_test.c" + ], "test/sanitytest" => [ "test/sanitytest-bin-sanitytest.o" ], @@ -27063,6 +32020,12 @@ our %unified_info = ( "test/siphash_internal_test-bin-siphash_internal_test.o" => [ "test/siphash_internal_test.c" ], + "test/slh_dsa_test" => [ + "test/slh_dsa_test-bin-slh_dsa_test.o" + ], + "test/slh_dsa_test-bin-slh_dsa_test.o" => [ + "test/slh_dsa_test.c" + ], "test/sm2_internal_test" => [ "test/sm2_internal_test-bin-sm2_internal_test.o" ], @@ -27105,6 +32068,13 @@ our %unified_info = ( "test/ssl_ctx_test-bin-ssl_ctx_test.o" => [ "test/ssl_ctx_test.c" ], + "test/ssl_handshake_rtt_test" => [ + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" + ], + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" => [ + "test/ssl_handshake_rtt_test.c" + ], "test/ssl_old_test" => [ "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/ssl_old_test-bin-ssl_old_test.o" @@ -27163,6 +32133,12 @@ our %unified_info = ( "test/stack_test-bin-stack_test.o" => [ "test/stack_test.c" ], + "test/strtoultest" => [ + "test/strtoultest-bin-strtoultest.o" + ], + "test/strtoultest-bin-strtoultest.o" => [ + "test/strtoultest.c" + ], "test/sysdefaulttest" => [ "test/sysdefaulttest-bin-sysdefaulttest.o" ], @@ -27193,6 +32169,9 @@ our %unified_info = ( "test/testutil/libtestutil-lib-format_output.o" => [ "test/testutil/format_output.c" ], + "test/testutil/libtestutil-lib-helper.o" => [ + "test/testutil/helper.c" + ], "test/testutil/libtestutil-lib-load.o" => [ "test/testutil/load.c" ], @@ -27226,6 +32205,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-testutil_init.o" => [ "test/testutil/testutil_init.c" ], + "test/threadpool_test" => [ + "test/threadpool_test-bin-threadpool_test.o" + ], + "test/threadpool_test-bin-threadpool_test.o" => [ + "test/threadpool_test.c" + ], "test/threadstest" => [ "test/threadstest-bin-threadstest.o" ], @@ -27244,6 +32229,12 @@ our %unified_info = ( "test/time_offset_test-bin-time_offset_test.o" => [ "test/time_offset_test.c" ], + "test/time_test" => [ + "test/time_test-bin-time_test.o" + ], + "test/time_test-bin-time_test.o" => [ + "test/time_test.c" + ], "test/tls13ccstest" => [ "test/helpers/tls13ccstest-bin-ssltestlib.o", "test/tls13ccstest-bin-tls13ccstest.o" @@ -27257,6 +32248,13 @@ our %unified_info = ( "test/tls13encryptiontest-bin-tls13encryptiontest.o" => [ "test/tls13encryptiontest.c" ], + "test/tls13groupselection_test" => [ + "test/helpers/tls13groupselection_test-bin-ssltestlib.o", + "test/tls13groupselection_test-bin-tls13groupselection_test.o" + ], + "test/tls13groupselection_test-bin-tls13groupselection_test.o" => [ + "test/tls13groupselection_test.c" + ], "test/trace_api_test" => [ "test/trace_api_test-bin-trace_api_test.o" ], @@ -27312,6 +32310,12 @@ our %unified_info = ( "test/wpackettest-bin-wpackettest.o" => [ "test/wpackettest.c" ], + "test/x509_acert_test" => [ + "test/x509_acert_test-bin-x509_acert_test.o" + ], + "test/x509_acert_test-bin-x509_acert_test.o" => [ + "test/x509_acert_test.c" + ], "test/x509_check_cert_pkey_test" => [ "test/x509_check_cert_pkey_test-bin-x509_check_cert_pkey_test.o" ], @@ -27330,6 +32334,24 @@ our %unified_info = ( "test/x509_internal_test-bin-x509_internal_test.o" => [ "test/x509_internal_test.c" ], + "test/x509_load_cert_file_test" => [ + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" + ], + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" => [ + "test/x509_load_cert_file_test.c" + ], + "test/x509_req_test" => [ + "test/x509_req_test-bin-x509_req_test.o" + ], + "test/x509_req_test-bin-x509_req_test.o" => [ + "test/x509_req_test.c" + ], + "test/x509_test" => [ + "test/x509_test-bin-x509_test.o" + ], + "test/x509_test-bin-x509_test.o" => [ + "test/x509_test.c" + ], "test/x509_time_test" => [ "test/x509_time_test-bin-x509_time_test.o" ], @@ -27393,6 +32415,7 @@ my @makevars = ( "LDLIBS", "MT", "MTFLAGS", + "OBJCOPY", "PERL", "RANLIB", "RC", @@ -27409,6 +32432,12 @@ my %disabled_info = ( "asm" => { "macro" => "OPENSSL_NO_ASM" }, + "brotli" => { + "macro" => "OPENSSL_NO_BROTLI" + }, + "brotli-dynamic" => { + "macro" => "OPENSSL_NO_BROTLI_DYNAMIC" + }, "comp" => { "macro" => "OPENSSL_NO_COMP", "skipped" => [ @@ -27421,6 +32450,9 @@ my %disabled_info = ( "crypto-mdebug-backtrace" => { "macro" => "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE" }, + "demos" => { + "macro" => "OPENSSL_NO_DEMOS" + }, "devcryptoeng" => { "macro" => "OPENSSL_NO_DEVCRYPTOENG" }, @@ -27433,12 +32465,24 @@ my %disabled_info = ( "external-tests" => { "macro" => "OPENSSL_NO_EXTERNAL_TESTS" }, + "fips-jitter" => { + "macro" => "OPENSSL_NO_FIPS_JITTER" + }, "fuzz-afl" => { "macro" => "OPENSSL_NO_FUZZ_AFL" }, "fuzz-libfuzzer" => { "macro" => "OPENSSL_NO_FUZZ_LIBFUZZER" }, + "h3demo" => { + "macro" => "OPENSSL_NO_H3DEMO" + }, + "hqinterop" => { + "macro" => "OPENSSL_NO_HQINTEROP" + }, + "jitter" => { + "macro" => "OPENSSL_NO_JITTER" + }, "ktls" => { "macro" => "OPENSSL_NO_KTLS" }, @@ -27454,6 +32498,9 @@ my %disabled_info = ( "msan" => { "macro" => "OPENSSL_NO_MSAN" }, + "pie" => { + "macro" => "OPENSSL_NO_PIE" + }, "rc5" => { "macro" => "OPENSSL_NO_RC5", "skipped" => [ @@ -27469,6 +32516,12 @@ my %disabled_info = ( "ssl3-method" => { "macro" => "OPENSSL_NO_SSL3_METHOD" }, + "sslkeylog" => { + "macro" => "OPENSSL_NO_SSLKEYLOG" + }, + "tfo" => { + "macro" => "OPENSSL_NO_TFO" + }, "trace" => { "macro" => "OPENSSL_NO_TRACE" }, @@ -27483,6 +32536,21 @@ my %disabled_info = ( }, "weak-ssl-ciphers" => { "macro" => "OPENSSL_NO_WEAK_SSL_CIPHERS" + }, + "winstore" => { + "macro" => "OPENSSL_NO_WINSTORE" + }, + "zlib" => { + "macro" => "OPENSSL_NO_ZLIB" + }, + "zlib-dynamic" => { + "macro" => "OPENSSL_NO_ZLIB_DYNAMIC" + }, + "zstd" => { + "macro" => "OPENSSL_NO_ZSTD" + }, + "zstd-dynamic" => { + "macro" => "OPENSSL_NO_ZSTD_DYNAMIC" } ); my @user_crossable = qw( AR AS CC CXX CPP LD MT RANLIB RC ); @@ -27496,15 +32564,15 @@ unless (caller) { use File::Copy; use Pod::Usage; - use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; - use OpenSSL::fallback '/home/runner/work/node/node/deps/openssl/openssl/external/perl/MODULES.txt'; + use lib '/node/deps/openssl/openssl/util/perl'; + use OpenSSL::fallback '/node/deps/openssl/openssl/external/perl/MODULES.txt'; my $here = dirname($0); if (scalar @ARGV == 0) { # With no arguments, re-create the build file # We do that in two steps, where the first step emits perl - # snipets. + # snippets. my $buildfile = $config{build_file}; my $buildfile_template = "$buildfile.in"; @@ -27524,7 +32592,7 @@ unless (caller) { ); use lib '.'; - use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; + use lib '/node/deps/openssl/openssl/Configurations'; use gentemplate; open my $buildfile_template_fh, ">$buildfile_template" @@ -27541,8 +32609,8 @@ unless (caller) { my $prepend = <<'_____'; use File::Spec::Functions; -use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; -use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; +use lib '/node/deps/openssl/openssl/util/perl'; +use lib '/node/deps/openssl/openssl/Configurations'; use lib '.'; use platform; _____ diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/crypto/buildinf.h index 28b322a172b0d4..3ab9865c3968c0 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: aix64-gcc-as" -#define DATE "built on: Sun Jul 20 00:45:29 2025 UTC" +#define DATE "built on: Tue Aug 5 17:09:57 2025 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/crypto/params_idx.c b/deps/openssl/config/archs/aix64-gcc-as/no-asm/crypto/params_idx.c new file mode 100644 index 00000000000000..9d76ffededc24c --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/crypto/params_idx.c @@ -0,0 +1,3366 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from crypto/params_idx.c.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#include "internal/e_os.h" +#include "internal/param_names.h" +#include + +/* Machine generated TRIE -- generated by util/perl/OpenSSL/paramnames.pm */ +int ossl_param_find_pidx(const char *s) +{ + switch(s[0]) { + default: + break; + case 'a': + switch(s[1]) { + default: + break; + case 'c': + if (strcmp("vp-info", s + 2) == 0) + return PIDX_KDF_PARAM_X942_ACVPINFO; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'd': + if (strcmp("itional-random", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_ADD_RANDOM; + break; + case '\0': + return PIDX_KDF_PARAM_ARGON2_AD; + } + break; + case 'e': + if (strcmp("ad", s + 2) == 0) + return PIDX_CIPHER_PARAM_AEAD; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("id_param", s + 4) == 0) + return PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD; + break; + case 'i': + if (strcmp("d-absent", s + 4) == 0) + return PIDX_DIGEST_PARAM_ALGID_ABSENT; + break; + case 'o': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'h': + switch(s[8]) { + default: + break; + case 'm': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '-': + if (strcmp("params", s + 13) == 0) + return PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS; + break; + case '\0': + return PIDX_ALG_PARAM_ALGORITHM_ID; + } + } + } + } + } + } + } + } + } + } + break; + case 'i': + if (strcmp("as", s + 3) == 0) + return PIDX_STORE_PARAM_ALIAS; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_A; + } + break; + case 'b': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("sis-type", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_CHAR2_TYPE; + break; + case 'i': + if (strcmp("ts", s + 2) == 0) + return PIDX_PKEY_PARAM_BITS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("size", s + 6) == 0) + return PIDX_MAC_PARAM_BLOCK_SIZE; + break; + case '_': + if (strcmp("padding", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING; + break; + case 's': + if (strcmp("ize", s + 6) == 0) + return PIDX_DIGEST_PARAM_BLOCK_SIZE; + } + } + } + } + break; + case 'u': + if (strcmp("ildinfo", s + 2) == 0) + return PIDX_PROV_PARAM_BUILDINFO; + break; + case '\0': + return PIDX_PKEY_PARAM_EC_B; + } + break; + case 'c': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_C_ROUNDS; + break; + case 'e': + if (strcmp("kalg", s + 2) == 0) + return PIDX_KDF_PARAM_CEK_ALG; + break; + case 'i': + if (strcmp("pher", s + 2) == 0) + return PIDX_ALG_PARAM_CIPHER; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("actor", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_COFACTOR; + break; + case 'n': + switch(s[3]) { + default: + break; + case 's': + if (strcmp("tant", s + 4) == 0) + return PIDX_KDF_PARAM_CONSTANT; + break; + case 't': + if (strcmp("ext-string", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_CONTEXT_STRING; + } + } + break; + case 't': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("mode", s + 4) == 0) + return PIDX_CIPHER_PARAM_CTS_MODE; + break; + case '\0': + return PIDX_CIPHER_PARAM_CTS; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '-': + if (strcmp("iv", s + 7) == 0) + return PIDX_CIPHER_PARAM_CUSTOM_IV; + break; + case '\0': + return PIDX_MAC_PARAM_CUSTOM; + } + } + } + } + } + } + break; + case 'd': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_D_ROUNDS; + break; + case 'a': + switch(s[2]) { + default: + break; + case 't': + switch(s[3]) { + default: + break; + case 'a': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 's': + if (strcmp("tructure", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_STRUCTURE; + break; + case 't': + if (strcmp("ype", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_TYPE; + } + break; + case '\0': + return PIDX_OBJECT_PARAM_DATA; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + if (strcmp("ded-from-explicit", s + 4) == 0) + return PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS; + break; + case 'r': + if (strcmp("ypt-only", s + 4) == 0) + return PIDX_CIPHER_PARAM_DECRYPT_ONLY; + } + break; + case 'f': + if (strcmp("ault-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_DEFAULT_DIGEST; + break; + case 's': + if (strcmp("c", s + 3) == 0) + return PIDX_OBJECT_PARAM_DESC; + break; + case 't': + if (strcmp("erministic", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_DETERMINISTIC; + } + break; + case 'h': + if (strcmp("kem-ikm", s + 2) == 0) + return PIDX_PKEY_PARAM_DHKEM_IKM; + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("heck", s + 8) == 0) + return PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK; + break; + case 'n': + if (strcmp("oinit", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_NOINIT; + break; + case 'o': + if (strcmp("neshot", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_ONESHOT; + break; + case 'p': + if (strcmp("rops", s + 8) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS; + break; + case 's': + if (strcmp("ize", s + 8) == 0) + return PIDX_PKEY_PARAM_DIGEST_SIZE; + } + break; + case '\0': + return PIDX_STORE_PARAM_DIGEST; + } + } + } + } + break; + case 's': + if (strcmp("tid", s + 3) == 0) + return PIDX_PKEY_PARAM_DIST_ID; + } + break; + case 'r': + if (strcmp("bg-no-trunc-md", s + 2) == 0) + return PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST; + break; + case 's': + if (strcmp("a-sign-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_DSA_SIGN_DISABLED; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_D; + } + break; + case 'e': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("rly_clean", s + 2) == 0) + return PIDX_KDF_PARAM_EARLY_CLEAN; + break; + case 'c': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'h': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'a': + switch(s[9]) { + default: + break; + case 'c': + switch(s[10]) { + default: + break; + case 't': + switch(s[11]) { + default: + break; + case 'o': + switch(s[12]) { + default: + break; + case 'r': + switch(s[13]) { + default: + break; + case '-': + switch(s[14]) { + default: + break; + case 'c': + if (strcmp("heck", s + 15) == 0) + return PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK; + break; + case 'm': + if (strcmp("ode", s + 15) == 0) + return PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE; + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'm': + if (strcmp("s_check", s + 2) == 0) + return PIDX_KDF_PARAM_FIPS_EMS_CHECK; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("d-pub-key", s + 6) == 0) + return PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY; + break; + case 'i': + if (strcmp("ng", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_ENCODING; + } + } + break; + case 'r': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'c': + if (strcmp("heck", s + 9) == 0) + return PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK; + break; + case 'l': + if (strcmp("evel", s + 9) == 0) + return PIDX_ENCODER_PARAM_ENCRYPT_LEVEL; + } + } + } + } + } + } + break; + case 'g': + if (strcmp("ine", s + 3) == 0) + return PIDX_ALG_PARAM_ENGINE; + break; + case 't': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'y': + switch(s[7]) { + default: + break; + case '_': + if (strcmp("required", s + 8) == 0) + return PIDX_DRBG_PARAM_ENTROPY_REQUIRED; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_ENTROPY; + } + } + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_E; + break; + case 'x': + if (strcmp("pect", s + 2) == 0) + return PIDX_STORE_PARAM_EXPECT; + } + break; + case 'f': + switch(s[1]) { + default: + break; + case 'i': + switch(s[2]) { + default: + break; + case 'e': + if (strcmp("ld-type", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_FIELD_TYPE; + break; + case 'n': + if (strcmp("gerprint", s + 3) == 0) + return PIDX_STORE_PARAM_FINGERPRINT; + break; + case 'p': + if (strcmp("s-indicator", s + 3) == 0) + return PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR; + } + } + break; + case 'g': + switch(s[1]) { + default: + break; + case 'e': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_GENERATE; + } + break; + case 'o': + if (strcmp("r", s + 8) == 0) + return PIDX_PKEY_PARAM_EC_GENERATOR; + } + } + } + } + } + } + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_GINDEX; + break; + case 'r': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'u': + switch(s[4]) { + default: + break; + case 'p': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("check", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE; + break; + case '\0': + return PIDX_PKEY_PARAM_GROUP_NAME; + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_G; + } + break; + case 'h': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("s-randkey", s + 2) == 0) + return PIDX_CIPHER_PARAM_HAS_RAND_KEY; + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_H; + break; + case 'k': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'f': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_KEY_CHECK; + } + } + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_HMAC_KEY_CHECK; + break; + case 's': + if (strcmp("_padding", s + 2) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING; + } + break; + case 'i': + switch(s[1]) { + default: + break; + case 'd': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_PKCS12_ID; + } + break; + case 'k': + if (strcmp("me", s + 2) == 0) + return PIDX_KEM_PARAM_IKME; + break; + case 'm': + if (strcmp("plicit-rejection", s + 2) == 0) + return PIDX_PKEY_PARAM_IMPLICIT_REJECTION; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("lude-public", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC; + break; + case 'f': + if (strcmp("o", s + 3) == 0) + return PIDX_PASSPHRASE_PARAM_INFO; + break; + case 'p': + if (strcmp("ut-type", s + 3) == 0) + return PIDX_STORE_PARAM_INPUT_TYPE; + break; + case 's': + if (strcmp("tance", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_INSTANCE; + } + break; + case 't': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("tion", s + 5) == 0) + return PIDX_GEN_PARAM_ITERATION; + break; + case '\0': + return PIDX_KDF_PARAM_ITER; + } + } + } + break; + case 'v': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("generated", s + 3) == 0) + return PIDX_CIPHER_PARAM_AEAD_IV_GENERATED; + break; + case 'l': + if (strcmp("en", s + 3) == 0) + return PIDX_CIPHER_PARAM_IVLEN; + break; + case '\0': + return PIDX_MAC_PARAM_IV; + } + } + break; + case 'j': + switch(s[1]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_COFACTOR; + } + break; + case 'k': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K2; + } + break; + case '3': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K3; + } + break; + case 'a': + if (strcmp("t", s + 2) == 0) + return PIDX_SIGNATURE_PARAM_KAT; + break; + case 'b': + if (strcmp("kdf-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KBKDF_KEY_CHECK; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case 's': + switch(s[9]) { + default: + break; + case 't': + switch(s[10]) { + default: + break; + case '-': + if (strcmp("props", s + 11) == 0) + return PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_KDF_DIGEST; + } + } + } + } + } + } + break; + case 'o': + if (strcmp("utlen", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_OUTLEN; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_TYPE; + break; + case 'u': + if (strcmp("km", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_UKM; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'y': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("heck", s + 5) == 0) + return PIDX_PKEY_PARAM_FIPS_KEY_CHECK; + break; + case 'l': + if (strcmp("ength", s + 5) == 0) + return PIDX_SKEY_PARAM_KEY_LENGTH; + } + break; + case 'b': + if (strcmp("its", s + 4) == 0) + return PIDX_CIPHER_PARAM_RC2_KEYBITS; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_KEYLEN; + break; + case '\0': + return PIDX_MAC_PARAM_KEY; + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KMAC_KEY_CHECK; + } + break; + case 'l': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("el", s + 3) == 0) + return PIDX_KDF_PARAM_LABEL; + break; + case 'n': + if (strcmp("es", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_LANES; + } + } + break; + case 'm': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'k': + if (strcmp("ey", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_MAC_KEY; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_KDF_PARAM_MAC_SIZE; + break; + case '\0': + return PIDX_ALG_PARAM_MAC; + } + break; + case 'n': + if (strcmp("datory-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_MANDATORY_DIGEST; + break; + case 'x': + switch(s[3]) { + default: + break; + case '-': + if (strcmp("size", s + 4) == 0) + return PIDX_PKEY_PARAM_MAX_SIZE; + break; + case '_': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("dinlen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_ADINLEN; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("rly_data", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA; + break; + case 'n': + if (strcmp("tropylen", s + 6) == 0) + return PIDX_DRBG_PARAM_MAX_ENTROPYLEN; + } + break; + case 'f': + if (strcmp("rag_len", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_NONCELEN; + break; + case 'p': + if (strcmp("erslen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_PERSLEN; + break; + case 'r': + if (strcmp("equest", s + 5) == 0) + return PIDX_RAND_PARAM_MAX_REQUEST; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MAX_LENGTH; + break; + case 'm': + if (strcmp("em_bytes", s + 4) == 0) + return PIDX_KDF_PARAM_SCRYPT_MAXMEM; + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'm': + if (strcmp("cost", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_MEMCOST; + break; + case 's': + if (strcmp("sage-encoding", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING; + } + break; + case 'g': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_DIGEST; + break; + case 'p': + if (strcmp("roperties", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_PROPERTIES; + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_MASKGENFUNC; + } + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("alg", s + 3) == 0) + return PIDX_DIGEST_PARAM_MICALG; + break; + case 'n': + switch(s[3]) { + default: + break; + case '_': + switch(s[4]) { + default: + break; + case 'e': + if (strcmp("ntropylen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_ENTROPYLEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_NONCELEN; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MIN_LENGTH; + } + } + break; + case 'l': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + if (strcmp("nput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS; + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED; + } + } + } + } + break; + case 'k': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + switch(s[8]) { + default: + break; + case 'm': + if (strcmp("port_pct_type", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE; + break; + case 'n': + if (strcmp("put_formats", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS; + } + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED; + } + } + } + } + } + } + break; + case 'o': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case '\0': + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE; + } + break; + case 'u': + if (strcmp("le-filename", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_MODULE_FILENAME; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_SIGNATURE_PARAM_MU; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_M; + } + break; + case 'n': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("me", s + 2) == 0) + return PIDX_STORE_PARAM_ISSUER; + break; + case 'o': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("short-mac", s + 3) == 0) + return PIDX_PROV_PARAM_NO_SHORT_MAC; + break; + case 'n': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("type", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_NONCE_TYPE; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_NONCE; + } + } + } + } + break; + case 'u': + if (strcmp("m", s + 2) == 0) + return PIDX_CIPHER_PARAM_NUM; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_N; + } + break; + case 'o': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("ep-label", s + 2) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL; + break; + case 'p': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'n': + if (strcmp("ssl-version", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_VERSION; + break; + case 'r': + if (strcmp("ation", s + 4) == 0) + return PIDX_KEM_PARAM_OPERATION; + } + break; + case 't': + if (strcmp("ions", s + 3) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS; + } + break; + case 'r': + if (strcmp("der", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_ORDER; + } + break; + case 'p': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P2; + } + break; + case 'a': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'm': + if (strcmp("ode", s + 5) == 0) + return PIDX_PKEY_PARAM_PAD_MODE; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_DIGEST_PARAM_PAD_TYPE; + } + break; + case 'd': + if (strcmp("ing", s + 4) == 0) + return PIDX_CIPHER_PARAM_PADDING; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_PAD; + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'u': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYUINFO; + break; + case 'v': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYVINFO; + } + } + } + break; + case 's': + if (strcmp("s", s + 3) == 0) + return PIDX_KDF_PARAM_PASSWORD; + } + break; + case 'b': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("ts", s + 3) == 0) + return PIDX_PKEY_PARAM_FFC_PBITS; + break; + case 'k': + if (strcmp("df2-lower-bound-check", s + 3) == 0) + return PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK; + } + break; + case 'c': + if (strcmp("ounter", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_PCOUNTER; + break; + case 'i': + if (strcmp("peline-tag", s + 2) == 0) + return PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG; + break; + case 'k': + if (strcmp("cs5", s + 2) == 0) + return PIDX_KDF_PARAM_PKCS5; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("nt-format", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT; + break; + case 't': + if (strcmp("ential", s + 3) == 0) + return PIDX_GEN_PARAM_POTENTIAL; + } + break; + case 'r': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("iction_resistance", s + 4) == 0) + return PIDX_DRBG_PARAM_PREDICTION_RESISTANCE; + break; + case 'f': + if (strcmp("ix", s + 4) == 0) + return PIDX_KDF_PARAM_PREFIX; + } + break; + case 'i': + switch(s[3]) { + default: + break; + case 'm': + if (strcmp("es", s + 4) == 0) + return PIDX_PKEY_PARAM_RSA_PRIMES; + break; + case 'v': + switch(s[4]) { + default: + break; + case '_': + if (strcmp("len", s + 5) == 0) + return PIDX_PKEY_PARAM_DH_PRIV_LEN; + break; + case '\0': + return PIDX_PKEY_PARAM_PRIV_KEY; + } + } + break; + case 'o': + switch(s[3]) { + default: + break; + case 'p': + if (strcmp("erties", s + 4) == 0) + return PIDX_STORE_PARAM_PROPERTIES; + break; + case 'v': + if (strcmp("ider-name", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_PROV_NAME; + } + } + break; + case 'u': + if (strcmp("b", s + 2) == 0) + return PIDX_PKEY_PARAM_PUB_KEY; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_P; + } + break; + case 'q': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q2; + } + break; + case 'b': + if (strcmp("its", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_QBITS; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_Q; + break; + case 'x': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_X; + } + break; + case 'y': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_Y; + } + } + break; + case 'r': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'k': + if (strcmp("ey", s + 5) == 0) + return PIDX_CIPHER_PARAM_RANDOM_KEY; + break; + case 'o': + if (strcmp("m_data", s + 5) == 0) + return PIDX_DRBG_PARAM_RANDOM_DATA; + } + } + break; + case 'w': + if (strcmp("-bytes", s + 3) == 0) + return PIDX_SKEY_PARAM_RAW_BYTES; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case '_': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("head", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD; + break; + case 'b': + if (strcmp("uffer_len", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN; + } + } + } + break; + case 'f': + if (strcmp("erence", s + 3) == 0) + return PIDX_OBJECT_PARAM_REFERENCE; + break; + case 's': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case '_': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("ounter", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_COUNTER; + break; + case 'r': + if (strcmp("equests", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_REQUESTS; + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case 'm': + switch(s[10]) { + default: + break; + case 'e': + switch(s[11]) { + default: + break; + case '_': + if (strcmp("interval", s + 12) == 0) + return PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL; + break; + case '\0': + return PIDX_DRBG_PARAM_RESEED_TIME; + } + } + } + } + } + } + } + } + } + } + break; + case 'o': + if (strcmp("unds", s + 2) == 0) + return PIDX_CIPHER_PARAM_ROUNDS; + break; + case 's': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + switch(s[5]) { + default: + break; + case 'o': + switch(s[6]) { + default: + break; + case 'e': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case 'i': + switch(s[10]) { + default: + break; + case 'c': + switch(s[11]) { + default: + break; + case 'i': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'n': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case '1': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT1; + } + break; + case '2': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT2; + } + break; + case '3': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT3; + } + break; + case '4': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT4; + } + break; + case '5': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT5; + } + break; + case '6': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT6; + } + break; + case '7': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT7; + } + break; + case '8': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT8; + } + break; + case '9': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'd': + if (strcmp("erive-from-pq", s + 5) == 0) + return PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'x': + switch(s[6]) { + default: + break; + case 'p': + switch(s[7]) { + default: + break; + case 'o': + switch(s[8]) { + default: + break; + case 'n': + switch(s[9]) { + default: + break; + case 'e': + switch(s[10]) { + default: + break; + case 'n': + switch(s[11]) { + default: + break; + case 't': + switch(s[12]) { + default: + break; + case '1': + switch(s[13]) { + default: + break; + case '0': + switch(s[14]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT1; + } + break; + case '2': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT2; + } + break; + case '3': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT3; + } + break; + case '4': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT4; + } + break; + case '5': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT5; + } + break; + case '6': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT6; + } + break; + case '7': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT7; + } + break; + case '8': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT8; + } + break; + case '9': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT; + } + } + } + } + } + } + } + } + break; + case 'f': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'o': + switch(s[9]) { + default: + break; + case 'r': + switch(s[10]) { + default: + break; + case '1': + switch(s[11]) { + default: + break; + case '0': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR1; + } + break; + case '2': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR2; + } + break; + case '3': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR3; + } + break; + case '4': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR4; + } + break; + case '5': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR5; + } + break; + case '6': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR6; + } + break; + case '7': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR7; + } + break; + case '8': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR8; + } + break; + case '9': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR; + } + } + } + } + } + } + break; + case 'p': + switch(s[5]) { + default: + break; + case 'k': + if (strcmp("cs15-pad-disabled", s + 6) == 0) + return PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED; + break; + case 's': + if (strcmp("s-saltlen-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK; + } + break; + case 's': + if (strcmp("ign-x931-pad-disabled", s + 5) == 0) + return PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED; + } + } + } + break; + case '\0': + return PIDX_KDF_PARAM_SCRYPT_R; + } + break; + case 's': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("eprime-generator", s + 3) == 0) + return PIDX_PKEY_PARAM_DH_GENERATOR; + break; + case 'l': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'l': + if (strcmp("en", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_PSS_SALTLEN; + break; + case '\0': + return PIDX_MAC_PARAM_SALT; + } + } + break; + case 'v': + if (strcmp("e-parameters", s + 3) == 0) + return PIDX_ENCODER_PARAM_SAVE_PARAMETERS; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'r': + if (strcmp("et", s + 4) == 0) + return PIDX_KDF_PARAM_SECRET; + break; + case 'u': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'y': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'b': + if (strcmp("its", s + 10) == 0) + return PIDX_PKEY_PARAM_SECURITY_BITS; + break; + case 'c': + if (strcmp("hecks", s + 10) == 0) + return PIDX_PROV_PARAM_SECURITY_CHECKS; + } + } + } + } + } + } + } + break; + case 'e': + if (strcmp("d", s + 3) == 0) + return PIDX_PKEY_PARAM_SLH_DSA_SEED; + break; + case 'r': + if (strcmp("ial", s + 3) == 0) + return PIDX_STORE_PARAM_SERIAL; + break; + case 's': + if (strcmp("sion_id", s + 3) == 0) + return PIDX_KDF_PARAM_SSHKDF_SESSION_ID; + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'n': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + if (strcmp("heck", s + 6) == 0) + return PIDX_PKEY_PARAM_FIPS_SIGN_CHECK; + break; + case 'x': + if (strcmp("931-pad-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK; + } + break; + case 'a': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case 'u': + switch(s[7]) { + default: + break; + case 'r': + switch(s[8]) { + default: + break; + case 'e': + switch(s[9]) { + default: + break; + case '-': + if (strcmp("digest-check", s + 10) == 0) + return PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK; + break; + case '\0': + return PIDX_SIGNATURE_PARAM_SIGNATURE; + } + } + } + } + } + } + } + break; + case 'z': + if (strcmp("e", s + 3) == 0) + return PIDX_MAC_PARAM_SIZE; + } + break; + case 'p': + if (strcmp("eed", s + 2) == 0) + return PIDX_CIPHER_PARAM_SPEED; + break; + case 's': + switch(s[2]) { + default: + break; + case 'h': + switch(s[3]) { + default: + break; + case 'k': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'f': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_KEY_CHECK; + } + } + } + } + } + break; + case 'k': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'f': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_KEY_CHECK; + } + } + } + } + break; + case 'l': + if (strcmp("3-ms", s + 3) == 0) + return PIDX_DIGEST_PARAM_SSL3_MS; + } + break; + case 't': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("esc", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_DESC; + break; + case 'p': + if (strcmp("hase", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_PHASE; + break; + case 't': + if (strcmp("ype", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_TYPE; + } + break; + case 'a': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_STATE; + } + break; + case 'u': + if (strcmp("s", s + 5) == 0) + return PIDX_PROV_PARAM_STATUS; + } + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("m_mac", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC; + break; + case 'n': + if (strcmp("gth", s + 5) == 0) + return PIDX_RAND_PARAM_STRENGTH; + } + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("ject", s + 3) == 0) + return PIDX_STORE_PARAM_SUBJECT; + break; + case 'p': + switch(s[3]) { + default: + break; + case 'p': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + if (strcmp("ivinfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PRIVINFO; + break; + case 'u': + if (strcmp("binfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PUBINFO; + } + } + } + } + } + } + break; + case 't': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_TAGLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TAG; + } + } + break; + case 'd': + if (strcmp("es-encrypt-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED; + break; + case 'e': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case '-': + if (strcmp("entropy", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_TEST_ENTROPY; + break; + case '_': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("ntropy", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_ENTROPY; + break; + case 'n': + if (strcmp("once", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_NONCE; + } + } + } + } + break; + case 'h': + if (strcmp("reads", s + 2) == 0) + return PIDX_KDF_PARAM_THREADS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("lient-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION; + break; + case 'd': + if (strcmp("ata-size", s + 5) == 0) + return PIDX_MAC_PARAM_TLS_DATA_SIZE; + break; + case 'g': + switch(s[5]) { + default: + break; + case 'r': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'u': + switch(s[8]) { + default: + break; + case 'p': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'a': + if (strcmp("lg", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_ALG; + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_ID; + } + break; + case 's': + if (strcmp("-kem", s + 12) == 0) + return PIDX_CAPABILITY_TLS_GROUP_IS_KEM; + } + break; + case 'n': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'm': + switch(s[13]) { + default: + break; + case 'e': + switch(s[14]) { + default: + break; + case '-': + if (strcmp("internal", s + 15) == 0) + return PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL; + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_NAME; + } + } + } + } + break; + case 's': + if (strcmp("ec-bits", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case '-': + if (strcmp("size", s + 8) == 0) + return PIDX_CIPHER_PARAM_TLS_MAC_SIZE; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS_MAC; + } + break; + case 'x': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS; + } + } + } + break; + case 'i': + switch(s[6]) { + default: + break; + case 'n': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS; + } + } + } + break; + case 'u': + if (strcmp("lti", s + 6) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK; + } + break; + case 'n': + if (strcmp("egotiated-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION; + break; + case 's': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'a': + switch(s[8]) { + default: + break; + case 'l': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '-': + switch(s[11]) { + default: + break; + case 'c': + if (strcmp("ode-point", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT; + break; + case 'h': + switch(s[12]) { + default: + break; + case 'a': + switch(s[13]) { + default: + break; + case 's': + switch(s[14]) { + default: + break; + case 'h': + switch(s[15]) { + default: + break; + case '-': + switch(s[16]) { + default: + break; + case 'n': + if (strcmp("ame", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME; + break; + case 'o': + if (strcmp("id", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_OID; + } + } + } + } + } + break; + case 'i': + if (strcmp("ana-name", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME; + break; + case 'k': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'y': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case 'y': + switch(s[16]) { + default: + break; + case 'p': + switch(s[17]) { + default: + break; + case 'e': + switch(s[18]) { + default: + break; + case '-': + if (strcmp("oid", s + 19) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID; + break; + case '\0': + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE; + } + } + } + } + } + } + } + break; + case 'n': + if (strcmp("ame", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_NAME; + break; + case 'o': + if (strcmp("id", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_OID; + break; + case 's': + switch(s[12]) { + default: + break; + case 'e': + if (strcmp("c-bits", s + 13) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS; + break; + case 'i': + switch(s[13]) { + default: + break; + case 'g': + switch(s[14]) { + default: + break; + case '-': + switch(s[15]) { + default: + break; + case 'n': + if (strcmp("ame", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME; + break; + case 'o': + if (strcmp("id", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_OID; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'v': + if (strcmp("ersion", s + 5) == 0) + return PIDX_CIPHER_PARAM_TLS_VERSION; + } + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK; + break; + case 'e': + if (strcmp("ms-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK; + } + } + } + } + } + break; + case '3': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'k': + switch(s[7]) { + default: + break; + case 'd': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'u': + switch(s[6]) { + default: + break; + case 'l': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case '_': + switch(s[10]) { + default: + break; + case 'a': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'd': + switch(s[13]) { + default: + break; + case 'p': + if (strcmp("acklen", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD; + } + } + } + break; + case 'e': + switch(s[11]) { + default: + break; + case 'n': + switch(s[12]) { + default: + break; + case 'c': + switch(s[13]) { + default: + break; + case 'i': + if (strcmp("n", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN; + break; + case 'l': + if (strcmp("en", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC; + } + } + } + break; + case 'i': + if (strcmp("nterleave", s + 11) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE; + break; + case 'm': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'x': + switch(s[13]) { + default: + break; + case 'b': + if (strcmp("ufsz", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE; + break; + case 's': + if (strcmp("ndfrag", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT; + } + } + } + } + } + } + } + } + } + } + break; + case 'a': + switch(s[4]) { + default: + break; + case 'a': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'p': + if (strcmp("ad", s + 7) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD; + } + } + } + break; + case 'i': + switch(s[4]) { + default: + break; + case 'v': + switch(s[5]) { + default: + break; + case 'f': + if (strcmp("ixed", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED; + break; + case 'g': + if (strcmp("en", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN; + break; + case 'i': + if (strcmp("nv", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV; + } + } + break; + case 't': + if (strcmp("ree", s + 4) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS; + } + break; + case 'y': + if (strcmp("pe", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_TYPE; + } + break; + case 'u': + switch(s[1]) { + default: + break; + case 'k': + if (strcmp("m", s + 2) == 0) + return PIDX_KDF_PARAM_UKM; + break; + case 'p': + if (strcmp("dated-iv", s + 2) == 0) + return PIDX_CIPHER_PARAM_UPDATED_IV; + break; + case 's': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'b': + if (strcmp("its", s + 5) == 0) + return PIDX_CIPHER_PARAM_USE_BITS; + break; + case 'c': + if (strcmp("ofactor-flag", s + 5) == 0) + return PIDX_PKEY_PARAM_USE_COFACTOR_FLAG; + break; + case 'k': + if (strcmp("eybits", s + 5) == 0) + return PIDX_KDF_PARAM_X942_USE_KEYBITS; + break; + case 'l': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_KBKDF_USE_L; + } + break; + case 's': + if (strcmp("eparator", s + 5) == 0) + return PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR; + } + break; + case '_': + switch(s[4]) { + default: + break; + case 'd': + if (strcmp("erivation_function", s + 5) == 0) + return PIDX_DRBG_PARAM_USE_DF; + break; + case 'e': + if (strcmp("tm", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM; + } + } + } + } + break; + case 'v': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'l': + switch(s[3]) { + default: + break; + case 'i': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_VALIDATE_G; + } + break; + case 'l': + if (strcmp("egacy", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY; + break; + case 'p': + if (strcmp("q", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_PQ; + } + } + } + } + } + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'r': + switch(s[3]) { + default: + break; + case 'i': + if (strcmp("fy-message", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE; + break; + case 's': + if (strcmp("ion", s + 4) == 0) + return PIDX_PROV_PARAM_VERSION; + } + } + } + break; + case 'x': + switch(s[1]) { + default: + break; + case '9': + switch(s[2]) { + default: + break; + case '4': + if (strcmp("2kdf-key-check", s + 3) == 0) + return PIDX_PROV_PARAM_X942KDF_KEY_CHECK; + break; + case '6': + switch(s[3]) { + default: + break; + case '3': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'f': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_KEY_CHECK; + } + } + } + } + } + } + } + break; + case 'c': + if (strcmp("ghash", s + 2) == 0) + return PIDX_KDF_PARAM_SSHKDF_XCGHASH; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_DIGEST_PARAM_XOFLEN; + break; + case '\0': + return PIDX_MAC_PARAM_XOF; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP; + } + break; + case 'q': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ; + } + break; + case 't': + if (strcmp("s_standard", s + 2) == 0) + return PIDX_CIPHER_PARAM_XTS_STANDARD; + } + } + return -1; +} + +/* End of TRIE */ diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/internal/param_names.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/internal/param_names.h new file mode 100644 index 00000000000000..0a0404a57e82b9 --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/internal/param_names.h @@ -0,0 +1,469 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/internal/param_names.h.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +int ossl_param_find_pidx(const char *s); + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +#define NUM_PIDX 346 + +#define PIDX_ALG_PARAM_ALGORITHM_ID 0 +#define PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS 1 +#define PIDX_ALG_PARAM_CIPHER 2 +#define PIDX_ALG_PARAM_DIGEST 3 +#define PIDX_ALG_PARAM_ENGINE 4 +#define PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR 5 +#define PIDX_ALG_PARAM_MAC 6 +#define PIDX_ALG_PARAM_PROPERTIES 7 +#define PIDX_ASYM_CIPHER_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_ENGINE PIDX_PKEY_PARAM_ENGINE +#define PIDX_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +#define PIDX_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS 9 +#define PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL 10 +#define PIDX_ASYM_CIPHER_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_ASYM_CIPHER_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION 11 +#define PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION 12 +#define PIDX_CAPABILITY_TLS_GROUP_ALG 13 +#define PIDX_CAPABILITY_TLS_GROUP_ID 14 +#define PIDX_CAPABILITY_TLS_GROUP_IS_KEM 15 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_GROUP_NAME 20 +#define PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL 21 +#define PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS 22 +#define PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT 23 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME 24 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_OID 25 +#define PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME 26 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE 27 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID 28 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_SIGALG_NAME 29 +#define PIDX_CAPABILITY_TLS_SIGALG_OID 30 +#define PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS 31 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME 32 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_OID 33 +#define PIDX_CIPHER_PARAM_AEAD 34 +#define PIDX_CIPHER_PARAM_AEAD_IVLEN PIDX_CIPHER_PARAM_IVLEN +#define PIDX_CIPHER_PARAM_AEAD_IV_GENERATED 35 +#define PIDX_CIPHER_PARAM_AEAD_MAC_KEY 36 +#define PIDX_CIPHER_PARAM_AEAD_TAG 37 +#define PIDX_CIPHER_PARAM_AEAD_TAGLEN 38 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD 39 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD 40 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN 41 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED 42 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV 43 +#define PIDX_CIPHER_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD 44 +#define PIDX_CIPHER_PARAM_BLOCK_SIZE 45 +#define PIDX_CIPHER_PARAM_CTS 46 +#define PIDX_CIPHER_PARAM_CTS_MODE 47 +#define PIDX_CIPHER_PARAM_CUSTOM_IV 48 +#define PIDX_CIPHER_PARAM_DECRYPT_ONLY 49 +#define PIDX_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK 50 +#define PIDX_CIPHER_PARAM_HAS_RAND_KEY 51 +#define PIDX_CIPHER_PARAM_IV 52 +#define PIDX_CIPHER_PARAM_IVLEN 53 +#define PIDX_CIPHER_PARAM_KEYLEN 54 +#define PIDX_CIPHER_PARAM_MODE 55 +#define PIDX_CIPHER_PARAM_NUM 56 +#define PIDX_CIPHER_PARAM_PADDING 57 +#define PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG 58 +#define PIDX_CIPHER_PARAM_RANDOM_KEY 59 +#define PIDX_CIPHER_PARAM_RC2_KEYBITS 60 +#define PIDX_CIPHER_PARAM_ROUNDS 61 +#define PIDX_CIPHER_PARAM_SPEED 62 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK 63 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD 64 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN 65 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC 66 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN 67 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN 68 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE 69 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE 70 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT 71 +#define PIDX_CIPHER_PARAM_TLS_MAC 72 +#define PIDX_CIPHER_PARAM_TLS_MAC_SIZE 73 +#define PIDX_CIPHER_PARAM_TLS_VERSION 74 +#define PIDX_CIPHER_PARAM_UPDATED_IV 75 +#define PIDX_CIPHER_PARAM_USE_BITS 76 +#define PIDX_CIPHER_PARAM_XTS_STANDARD 77 +#define PIDX_DECODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DIGEST_PARAM_ALGID_ABSENT 78 +#define PIDX_DIGEST_PARAM_BLOCK_SIZE 45 +#define PIDX_DIGEST_PARAM_MICALG 79 +#define PIDX_DIGEST_PARAM_PAD_TYPE 80 +#define PIDX_DIGEST_PARAM_SIZE 81 +#define PIDX_DIGEST_PARAM_SSL3_MS 82 +#define PIDX_DIGEST_PARAM_XOF 83 +#define PIDX_DIGEST_PARAM_XOFLEN 84 +#define PIDX_DRBG_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_DRBG_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_DRBG_PARAM_ENTROPY_REQUIRED 85 +#define PIDX_DRBG_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_DRBG_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_DRBG_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_DRBG_PARAM_MAX_ADINLEN 86 +#define PIDX_DRBG_PARAM_MAX_ENTROPYLEN 87 +#define PIDX_DRBG_PARAM_MAX_LENGTH 88 +#define PIDX_DRBG_PARAM_MAX_NONCELEN 89 +#define PIDX_DRBG_PARAM_MAX_PERSLEN 90 +#define PIDX_DRBG_PARAM_MIN_ENTROPYLEN 91 +#define PIDX_DRBG_PARAM_MIN_LENGTH 92 +#define PIDX_DRBG_PARAM_MIN_NONCELEN 93 +#define PIDX_DRBG_PARAM_PREDICTION_RESISTANCE 94 +#define PIDX_DRBG_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DRBG_PARAM_RANDOM_DATA 95 +#define PIDX_DRBG_PARAM_RESEED_COUNTER 96 +#define PIDX_DRBG_PARAM_RESEED_REQUESTS 97 +#define PIDX_DRBG_PARAM_RESEED_TIME 98 +#define PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL 99 +#define PIDX_DRBG_PARAM_SIZE 81 +#define PIDX_DRBG_PARAM_USE_DF 100 +#define PIDX_ENCODER_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_ENCODER_PARAM_ENCRYPT_LEVEL 101 +#define PIDX_ENCODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_ENCODER_PARAM_SAVE_PARAMETERS 102 +#define PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE 103 +#define PIDX_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_EXCHANGE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST 104 +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS 105 +#define PIDX_EXCHANGE_PARAM_KDF_OUTLEN 106 +#define PIDX_EXCHANGE_PARAM_KDF_TYPE 107 +#define PIDX_EXCHANGE_PARAM_KDF_UKM 108 +#define PIDX_EXCHANGE_PARAM_PAD 109 +#define PIDX_GEN_PARAM_ITERATION 110 +#define PIDX_GEN_PARAM_POTENTIAL 111 +#define PIDX_KDF_PARAM_ARGON2_AD 112 +#define PIDX_KDF_PARAM_ARGON2_LANES 113 +#define PIDX_KDF_PARAM_ARGON2_MEMCOST 114 +#define PIDX_KDF_PARAM_ARGON2_VERSION 115 +#define PIDX_KDF_PARAM_CEK_ALG 116 +#define PIDX_KDF_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_KDF_PARAM_CONSTANT 117 +#define PIDX_KDF_PARAM_DATA 118 +#define PIDX_KDF_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_KDF_PARAM_EARLY_CLEAN 119 +#define PIDX_KDF_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KDF_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_KDF_PARAM_FIPS_EMS_CHECK 120 +#define PIDX_KDF_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KDF_PARAM_HMACDRBG_ENTROPY 121 +#define PIDX_KDF_PARAM_HMACDRBG_NONCE 122 +#define PIDX_KDF_PARAM_INFO 123 +#define PIDX_KDF_PARAM_ITER 124 +#define PIDX_KDF_PARAM_KBKDF_R 125 +#define PIDX_KDF_PARAM_KBKDF_USE_L 126 +#define PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR 127 +#define PIDX_KDF_PARAM_KEY 128 +#define PIDX_KDF_PARAM_LABEL 129 +#define PIDX_KDF_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_KDF_PARAM_MAC_SIZE 130 +#define PIDX_KDF_PARAM_MODE 55 +#define PIDX_KDF_PARAM_PASSWORD 131 +#define PIDX_KDF_PARAM_PKCS12_ID 132 +#define PIDX_KDF_PARAM_PKCS5 133 +#define PIDX_KDF_PARAM_PREFIX 134 +#define PIDX_KDF_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_KDF_PARAM_SALT 135 +#define PIDX_KDF_PARAM_SCRYPT_MAXMEM 136 +#define PIDX_KDF_PARAM_SCRYPT_N 137 +#define PIDX_KDF_PARAM_SCRYPT_P 138 +#define PIDX_KDF_PARAM_SCRYPT_R 125 +#define PIDX_KDF_PARAM_SECRET 139 +#define PIDX_KDF_PARAM_SEED 140 +#define PIDX_KDF_PARAM_SIZE 81 +#define PIDX_KDF_PARAM_SSHKDF_SESSION_ID 141 +#define PIDX_KDF_PARAM_SSHKDF_TYPE 142 +#define PIDX_KDF_PARAM_SSHKDF_XCGHASH 143 +#define PIDX_KDF_PARAM_THREADS 144 +#define PIDX_KDF_PARAM_UKM 145 +#define PIDX_KDF_PARAM_X942_ACVPINFO 146 +#define PIDX_KDF_PARAM_X942_PARTYUINFO 147 +#define PIDX_KDF_PARAM_X942_PARTYVINFO 148 +#define PIDX_KDF_PARAM_X942_SUPP_PRIVINFO 149 +#define PIDX_KDF_PARAM_X942_SUPP_PUBINFO 150 +#define PIDX_KDF_PARAM_X942_USE_KEYBITS 151 +#define PIDX_KEM_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KEM_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KEM_PARAM_IKME 152 +#define PIDX_KEM_PARAM_OPERATION 153 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING 154 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING 155 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA 156 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN 157 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE 55 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS 158 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD 159 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC 160 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE 161 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM 162 +#define PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN 163 +#define PIDX_MAC_PARAM_BLOCK_SIZE 164 +#define PIDX_MAC_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_MAC_PARAM_CUSTOM 165 +#define PIDX_MAC_PARAM_C_ROUNDS 166 +#define PIDX_MAC_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_MAC_PARAM_DIGEST_NOINIT 167 +#define PIDX_MAC_PARAM_DIGEST_ONESHOT 168 +#define PIDX_MAC_PARAM_D_ROUNDS 169 +#define PIDX_MAC_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_MAC_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_MAC_PARAM_FIPS_NO_SHORT_MAC PIDX_PROV_PARAM_NO_SHORT_MAC +#define PIDX_MAC_PARAM_IV 52 +#define PIDX_MAC_PARAM_KEY 128 +#define PIDX_MAC_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_MAC_PARAM_SALT 135 +#define PIDX_MAC_PARAM_SIZE 81 +#define PIDX_MAC_PARAM_TLS_DATA_SIZE 170 +#define PIDX_MAC_PARAM_XOF 83 +#define PIDX_OBJECT_PARAM_DATA 118 +#define PIDX_OBJECT_PARAM_DATA_STRUCTURE 171 +#define PIDX_OBJECT_PARAM_DATA_TYPE 172 +#define PIDX_OBJECT_PARAM_DESC 173 +#define PIDX_OBJECT_PARAM_INPUT_TYPE 174 +#define PIDX_OBJECT_PARAM_REFERENCE 175 +#define PIDX_OBJECT_PARAM_TYPE 142 +#define PIDX_PASSPHRASE_PARAM_INFO 123 +#define PIDX_PKEY_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_PKEY_PARAM_BITS 176 +#define PIDX_PKEY_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_PKEY_PARAM_DEFAULT_DIGEST 177 +#define PIDX_PKEY_PARAM_DHKEM_IKM 178 +#define PIDX_PKEY_PARAM_DH_GENERATOR 179 +#define PIDX_PKEY_PARAM_DH_PRIV_LEN 180 +#define PIDX_PKEY_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_PKEY_PARAM_DIGEST_SIZE 181 +#define PIDX_PKEY_PARAM_DIST_ID 182 +#define PIDX_PKEY_PARAM_EC_A 183 +#define PIDX_PKEY_PARAM_EC_B 184 +#define PIDX_PKEY_PARAM_EC_CHAR2_M 185 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K1 186 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K2 187 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K3 188 +#define PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS 189 +#define PIDX_PKEY_PARAM_EC_CHAR2_TYPE 190 +#define PIDX_PKEY_PARAM_EC_COFACTOR 191 +#define PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS 192 +#define PIDX_PKEY_PARAM_EC_ENCODING 193 +#define PIDX_PKEY_PARAM_EC_FIELD_TYPE 194 +#define PIDX_PKEY_PARAM_EC_GENERATOR 195 +#define PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE 196 +#define PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC 197 +#define PIDX_PKEY_PARAM_EC_ORDER 198 +#define PIDX_PKEY_PARAM_EC_P 138 +#define PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT 199 +#define PIDX_PKEY_PARAM_EC_PUB_X 200 +#define PIDX_PKEY_PARAM_EC_PUB_Y 201 +#define PIDX_PKEY_PARAM_EC_SEED 140 +#define PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY 202 +#define PIDX_PKEY_PARAM_ENGINE PIDX_ALG_PARAM_ENGINE +#define PIDX_PKEY_PARAM_FFC_COFACTOR 203 +#define PIDX_PKEY_PARAM_FFC_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_FFC_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_FFC_G 204 +#define PIDX_PKEY_PARAM_FFC_GINDEX 205 +#define PIDX_PKEY_PARAM_FFC_H 206 +#define PIDX_PKEY_PARAM_FFC_P 138 +#define PIDX_PKEY_PARAM_FFC_PBITS 207 +#define PIDX_PKEY_PARAM_FFC_PCOUNTER 208 +#define PIDX_PKEY_PARAM_FFC_Q 209 +#define PIDX_PKEY_PARAM_FFC_QBITS 210 +#define PIDX_PKEY_PARAM_FFC_SEED 140 +#define PIDX_PKEY_PARAM_FFC_TYPE 142 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_G 211 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY 212 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_PQ 213 +#define PIDX_PKEY_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK 214 +#define PIDX_PKEY_PARAM_FIPS_KEY_CHECK 215 +#define PIDX_PKEY_PARAM_FIPS_SIGN_CHECK 216 +#define PIDX_PKEY_PARAM_GROUP_NAME 217 +#define PIDX_PKEY_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_PKEY_PARAM_MANDATORY_DIGEST 218 +#define PIDX_PKEY_PARAM_MASKGENFUNC 219 +#define PIDX_PKEY_PARAM_MAX_SIZE 220 +#define PIDX_PKEY_PARAM_MGF1_DIGEST 221 +#define PIDX_PKEY_PARAM_MGF1_PROPERTIES 222 +#define PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS 223 +#define PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS 224 +#define PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED 225 +#define PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED 226 +#define PIDX_PKEY_PARAM_ML_DSA_SEED 140 +#define PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE 227 +#define PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS 228 +#define PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS 229 +#define PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED 230 +#define PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED 231 +#define PIDX_PKEY_PARAM_ML_KEM_SEED 140 +#define PIDX_PKEY_PARAM_PAD_MODE 232 +#define PIDX_PKEY_PARAM_PRIV_KEY 233 +#define PIDX_PKEY_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_PUB_KEY 234 +#define PIDX_PKEY_PARAM_RSA_BITS PIDX_PKEY_PARAM_BITS +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT 235 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT1 236 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT2 237 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT3 238 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT4 239 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT5 240 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT6 241 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT7 242 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT8 243 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT9 244 +#define PIDX_PKEY_PARAM_RSA_D 245 +#define PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ 246 +#define PIDX_PKEY_PARAM_RSA_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_RSA_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_RSA_E 247 +#define PIDX_PKEY_PARAM_RSA_EXPONENT 248 +#define PIDX_PKEY_PARAM_RSA_EXPONENT1 249 +#define PIDX_PKEY_PARAM_RSA_EXPONENT10 250 +#define PIDX_PKEY_PARAM_RSA_EXPONENT2 251 +#define PIDX_PKEY_PARAM_RSA_EXPONENT3 252 +#define PIDX_PKEY_PARAM_RSA_EXPONENT4 253 +#define PIDX_PKEY_PARAM_RSA_EXPONENT5 254 +#define PIDX_PKEY_PARAM_RSA_EXPONENT6 255 +#define PIDX_PKEY_PARAM_RSA_EXPONENT7 256 +#define PIDX_PKEY_PARAM_RSA_EXPONENT8 257 +#define PIDX_PKEY_PARAM_RSA_EXPONENT9 258 +#define PIDX_PKEY_PARAM_RSA_FACTOR 259 +#define PIDX_PKEY_PARAM_RSA_FACTOR1 260 +#define PIDX_PKEY_PARAM_RSA_FACTOR10 261 +#define PIDX_PKEY_PARAM_RSA_FACTOR2 262 +#define PIDX_PKEY_PARAM_RSA_FACTOR3 263 +#define PIDX_PKEY_PARAM_RSA_FACTOR4 264 +#define PIDX_PKEY_PARAM_RSA_FACTOR5 265 +#define PIDX_PKEY_PARAM_RSA_FACTOR6 266 +#define PIDX_PKEY_PARAM_RSA_FACTOR7 267 +#define PIDX_PKEY_PARAM_RSA_FACTOR8 268 +#define PIDX_PKEY_PARAM_RSA_FACTOR9 269 +#define PIDX_PKEY_PARAM_RSA_MASKGENFUNC PIDX_PKEY_PARAM_MASKGENFUNC +#define PIDX_PKEY_PARAM_RSA_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_PKEY_PARAM_RSA_N 137 +#define PIDX_PKEY_PARAM_RSA_PRIMES 270 +#define PIDX_PKEY_PARAM_RSA_PSS_SALTLEN 271 +#define PIDX_PKEY_PARAM_RSA_TEST_P1 272 +#define PIDX_PKEY_PARAM_RSA_TEST_P2 273 +#define PIDX_PKEY_PARAM_RSA_TEST_Q1 274 +#define PIDX_PKEY_PARAM_RSA_TEST_Q2 275 +#define PIDX_PKEY_PARAM_RSA_TEST_XP 276 +#define PIDX_PKEY_PARAM_RSA_TEST_XP1 277 +#define PIDX_PKEY_PARAM_RSA_TEST_XP2 278 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ 279 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ1 280 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ2 281 +#define PIDX_PKEY_PARAM_SECURITY_BITS 282 +#define PIDX_PKEY_PARAM_SLH_DSA_SEED 140 +#define PIDX_PKEY_PARAM_USE_COFACTOR_ECDH PIDX_PKEY_PARAM_USE_COFACTOR_FLAG +#define PIDX_PKEY_PARAM_USE_COFACTOR_FLAG 283 +#define PIDX_PROV_PARAM_BUILDINFO 284 +#define PIDX_PROV_PARAM_CORE_MODULE_FILENAME 285 +#define PIDX_PROV_PARAM_CORE_PROV_NAME 286 +#define PIDX_PROV_PARAM_CORE_VERSION 287 +#define PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST 288 +#define PIDX_PROV_PARAM_DSA_SIGN_DISABLED 289 +#define PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK 290 +#define PIDX_PROV_PARAM_HKDF_DIGEST_CHECK 291 +#define PIDX_PROV_PARAM_HKDF_KEY_CHECK 292 +#define PIDX_PROV_PARAM_HMAC_KEY_CHECK 293 +#define PIDX_PROV_PARAM_KBKDF_KEY_CHECK 294 +#define PIDX_PROV_PARAM_KMAC_KEY_CHECK 295 +#define PIDX_PROV_PARAM_NAME 296 +#define PIDX_PROV_PARAM_NO_SHORT_MAC 297 +#define PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK 298 +#define PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED 299 +#define PIDX_PROV_PARAM_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED 301 +#define PIDX_PROV_PARAM_SECURITY_CHECKS 302 +#define PIDX_PROV_PARAM_SELF_TEST_DESC 303 +#define PIDX_PROV_PARAM_SELF_TEST_PHASE 304 +#define PIDX_PROV_PARAM_SELF_TEST_TYPE 305 +#define PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK 306 +#define PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK 307 +#define PIDX_PROV_PARAM_SSHKDF_KEY_CHECK 308 +#define PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK 309 +#define PIDX_PROV_PARAM_SSKDF_KEY_CHECK 310 +#define PIDX_PROV_PARAM_STATUS 311 +#define PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED 312 +#define PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK 313 +#define PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK 314 +#define PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK 315 +#define PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK 316 +#define PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK 317 +#define PIDX_PROV_PARAM_VERSION 115 +#define PIDX_PROV_PARAM_X942KDF_KEY_CHECK 318 +#define PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK 319 +#define PIDX_PROV_PARAM_X963KDF_KEY_CHECK 320 +#define PIDX_RAND_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_RAND_PARAM_GENERATE 321 +#define PIDX_RAND_PARAM_MAX_REQUEST 322 +#define PIDX_RAND_PARAM_STATE 323 +#define PIDX_RAND_PARAM_STRENGTH 324 +#define PIDX_RAND_PARAM_TEST_ENTROPY 325 +#define PIDX_RAND_PARAM_TEST_NONCE 326 +#define PIDX_SIGNATURE_PARAM_ADD_RANDOM 327 +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID PIDX_PKEY_PARAM_ALGORITHM_ID +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_SIGNATURE_PARAM_CONTEXT_STRING 328 +#define PIDX_SIGNATURE_PARAM_DETERMINISTIC 329 +#define PIDX_SIGNATURE_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_SIGNATURE_PARAM_DIGEST_SIZE PIDX_PKEY_PARAM_DIGEST_SIZE +#define PIDX_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_SIGNATURE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_CHECK PIDX_PKEY_PARAM_FIPS_SIGN_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK 330 +#define PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE 331 +#define PIDX_SIGNATURE_PARAM_INSTANCE 332 +#define PIDX_SIGNATURE_PARAM_KAT 333 +#define PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING 334 +#define PIDX_SIGNATURE_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_SIGNATURE_PARAM_MGF1_PROPERTIES PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_SIGNATURE_PARAM_MU 335 +#define PIDX_SIGNATURE_PARAM_NONCE_TYPE 336 +#define PIDX_SIGNATURE_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_SIGNATURE_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_SIGNATURE_PARAM_PSS_SALTLEN 271 +#define PIDX_SIGNATURE_PARAM_SIGNATURE 337 +#define PIDX_SIGNATURE_PARAM_TEST_ENTROPY 338 +#define PIDX_SKEY_PARAM_KEY_LENGTH 339 +#define PIDX_SKEY_PARAM_RAW_BYTES 340 +#define PIDX_STORE_PARAM_ALIAS 341 +#define PIDX_STORE_PARAM_DIGEST 3 +#define PIDX_STORE_PARAM_EXPECT 342 +#define PIDX_STORE_PARAM_FINGERPRINT 343 +#define PIDX_STORE_PARAM_INPUT_TYPE 174 +#define PIDX_STORE_PARAM_ISSUER 296 +#define PIDX_STORE_PARAM_PROPERTIES 7 +#define PIDX_STORE_PARAM_SERIAL 344 +#define PIDX_STORE_PARAM_SUBJECT 345 diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/asn1.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/asn1.h index 21ff58e3d803d4..15e9e44674b0f3 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/asn1.h +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/asn1.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/asn1.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -21,6 +21,9 @@ # define HEADER_ASN1_H # endif +# ifndef OPENSSL_NO_STDIO +# include +# endif # include # include # include @@ -50,14 +53,14 @@ extern "C" { # define V_ASN1_PRIMITIVE_TAG 0x1f # define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG -# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ -# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ -# define V_ASN1_ANY -4/* used in ASN1 template code */ +# define V_ASN1_APP_CHOOSE -2 /* let the recipient choose */ +# define V_ASN1_OTHER -3 /* used in ASN1_TYPE */ +# define V_ASN1_ANY -4 /* used in ASN1 template code */ # define V_ASN1_UNDEF -1 /* ASN.1 tag values */ # define V_ASN1_EOC 0 -# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_BOOLEAN 1 # define V_ASN1_INTEGER 2 # define V_ASN1_BIT_STRING 3 # define V_ASN1_OCTET_STRING 4 @@ -70,19 +73,19 @@ extern "C" { # define V_ASN1_UTF8STRING 12 # define V_ASN1_SEQUENCE 16 # define V_ASN1_SET 17 -# define V_ASN1_NUMERICSTRING 18 /**/ +# define V_ASN1_NUMERICSTRING 18 # define V_ASN1_PRINTABLESTRING 19 # define V_ASN1_T61STRING 20 -# define V_ASN1_TELETEXSTRING 20/* alias */ -# define V_ASN1_VIDEOTEXSTRING 21 /**/ +# define V_ASN1_TELETEXSTRING 20 /* alias */ +# define V_ASN1_VIDEOTEXSTRING 21 # define V_ASN1_IA5STRING 22 # define V_ASN1_UTCTIME 23 -# define V_ASN1_GENERALIZEDTIME 24 /**/ -# define V_ASN1_GRAPHICSTRING 25 /**/ -# define V_ASN1_ISO64STRING 26 /**/ -# define V_ASN1_VISIBLESTRING 26/* alias */ -# define V_ASN1_GENERALSTRING 27 /**/ -# define V_ASN1_UNIVERSALSTRING 28 /**/ +# define V_ASN1_GENERALIZEDTIME 24 +# define V_ASN1_GRAPHICSTRING 25 +# define V_ASN1_ISO64STRING 26 +# define V_ASN1_VISIBLESTRING 26 /* alias */ +# define V_ASN1_GENERALSTRING 27 +# define V_ASN1_UNIVERSALSTRING 28 # define V_ASN1_BMPSTRING 30 /* @@ -155,7 +158,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) -# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +# define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */ /* * This indicates that the ASN1_STRING is not a real value but just a place * holder for the location where indefinite length constructed data should be @@ -275,7 +278,7 @@ typedef struct ASN1_TLC_st ASN1_TLC; /* This is just an opaque pointer */ typedef struct ASN1_VALUE_st ASN1_VALUE; -/* Declare ASN1 functions: the implement macro in in asn1t.h */ +/* Declare ASN1 functions: the implement macro is in asn1t.h */ /* * The mysterious 'extern' that's passed to some macros is innocuous, @@ -368,6 +371,7 @@ typedef struct ASN1_VALUE_st ASN1_VALUE; typedef void *d2i_of_void(void **, const unsigned char **, long); typedef int i2d_of_void(const void *, unsigned char **); +typedef int OSSL_i2d_of_void_ctx(const void *, unsigned char **, void *vctx); /*- * The following macros and typedefs allow an ASN1_ITEM @@ -996,6 +1000,8 @@ int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, unsigned char *data, int max_len); void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/bio.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/bio.h index f9aa74731c833c..e02f867beb0ec0 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/bio.h +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/bio.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/bio.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -67,8 +67,13 @@ extern "C" { # define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) # endif # define BIO_TYPE_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_PAIR (26|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_MEM (27|BIO_TYPE_SOURCE_SINK) +/* Custom type starting index returned by BIO_get_new_index() */ #define BIO_TYPE_START 128 +/* Custom type maximum index that can be returned by BIO_get_new_index() */ +#define BIO_TYPE_MASK 0xFF /* * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. @@ -171,6 +176,31 @@ extern "C" { # define BIO_CTRL_SET_INDENT 80 # define BIO_CTRL_GET_INDENT 81 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +# define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +# define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +# define BIO_CTRL_DGRAM_GET_CAPS 86 +# define BIO_CTRL_DGRAM_SET_CAPS 87 +# define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +# define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +# define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +# define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +# define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 +# define BIO_CTRL_DGRAM_SET0_LOCAL_ADDR 94 + +# define BIO_DGRAM_CAP_NONE 0U +# define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +# define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +# define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +# define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + # ifndef OPENSSL_NO_KTLS # define BIO_get_ktls_send(b) \ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) @@ -208,7 +238,7 @@ extern "C" { # define BIO_FLAGS_NONCLEAR_RST 0x400 # define BIO_FLAGS_IN_EOF 0x800 -/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */ +/* the BIO FLAGS values 0x1000 to 0x8000 are reserved for internal KTLS flags */ typedef union bio_addr_st BIO_ADDR; typedef struct bio_addrinfo_st BIO_ADDRINFO; @@ -256,12 +286,14 @@ void BIO_clear_flags(BIO *b, int flags); # define BIO_RR_ACCEPT 0x03 /* These are passed by the BIO callback */ -# define BIO_CB_FREE 0x01 -# define BIO_CB_READ 0x02 -# define BIO_CB_WRITE 0x03 -# define BIO_CB_PUTS 0x04 -# define BIO_CB_GETS 0x05 -# define BIO_CB_CTRL 0x06 +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 +# define BIO_CB_RECVMMSG 0x07 +# define BIO_CB_SENDMMSG 0x08 /* * The callback is called before and after the underling operation, The @@ -362,6 +394,36 @@ struct bio_dgram_sctp_prinfo { }; # endif +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_TYPE_SSL 2 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + SSL *ssl; + } value; +} BIO_POLL_DESCRIPTOR; + /* * #define BIO_CONN_get_param_hostname BIO_ctrl */ @@ -428,10 +490,17 @@ struct bio_dgram_sctp_prinfo { # define BIO_C_SET_CONNECT_MODE 155 +# define BIO_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +# define BIO_C_SET_SOCK_TYPE 157 +# define BIO_C_GET_SOCK_TYPE 158 +# define BIO_C_GET_DGRAM_BIO 159 + # define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) # define BIO_get_app_data(s) BIO_get_ex_data(s,0) -# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_tfo(b,n) BIO_ctrl(b,BIO_C_SET_TFO,(n),NULL) # ifndef OPENSSL_NO_SOCK /* IP families we support, for BIO_s_connect() and BIO_s_accept() */ @@ -452,7 +521,11 @@ struct bio_dgram_sctp_prinfo { # define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) # define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) # define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_get_conn_mode(b) BIO_ctrl(b,BIO_C_GET_CONNECT,4,NULL) # define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) +# define BIO_set_sock_type(b,t) BIO_ctrl(b,BIO_C_SET_SOCK_TYPE,(t),NULL) +# define BIO_get_sock_type(b) BIO_ctrl(b,BIO_C_GET_SOCK_TYPE,0,NULL) +# define BIO_get0_dgram_bio(b, p) BIO_ctrl(b,BIO_C_GET_DGRAM_BIO,0,(void *)(BIO **)(p)) /* BIO_s_accept() */ # define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ @@ -469,6 +542,7 @@ struct bio_dgram_sctp_prinfo { (char *)(bio)) # define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) # define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) +# define BIO_set_tfo_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,5,(n)?(void *)"a":NULL) /* Aliases kept for backward compatibility */ # define BIO_BIND_NORMAL 0 @@ -596,8 +670,32 @@ int BIO_ctrl_reset_read_request(BIO *b); (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) # define BIO_dgram_set_peer(b,peer) \ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_detect_peer_addr(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) # define BIO_dgram_get_mtu_overhead(b) \ (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +# define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +# define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +# define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +# define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +# define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +# define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +# define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +# define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +# define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +# define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) +# define BIO_dgram_set0_local_addr(b, addr) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET0_LOCAL_ADDR, 0, (addr)) /* ctrl macros for BIO_f_prefix */ # define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) @@ -640,10 +738,18 @@ void BIO_vfree(BIO *a); int BIO_up_ref(BIO *a); int BIO_read(BIO *b, void *data, int dlen); int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); int BIO_gets(BIO *bp, char *buf, int size); int BIO_get_line(BIO *bio, char *buf, int size); int BIO_write(BIO *b, const void *data, int dlen); int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); int BIO_puts(BIO *bp, const char *buf); int BIO_indent(BIO *b, int indent, int max); long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); @@ -667,6 +773,9 @@ int BIO_nwrite0(BIO *bio, char **buf); int BIO_nwrite(BIO *bio, char **buf, int num); const BIO_METHOD *BIO_s_mem(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +# endif const BIO_METHOD *BIO_s_secmem(void); BIO *BIO_new_mem_buf(const void *buf, int len); # ifndef OPENSSL_NO_SOCK @@ -686,6 +795,7 @@ const BIO_METHOD *BIO_f_nbio_test(void); const BIO_METHOD *BIO_f_prefix(void); const BIO_METHOD *BIO_s_core(void); # ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_pair(void); const BIO_METHOD *BIO_s_datagram(void); int BIO_dgram_non_fatal_error(int error); BIO *BIO_new_dgram(int fd, int close_flag); @@ -704,6 +814,7 @@ int BIO_dgram_sctp_msg_waiting(BIO *b); # ifndef OPENSSL_NO_SOCK int BIO_sock_should_retry(int i); int BIO_sock_non_fatal_error(int error); +int BIO_err_is_non_fatal(unsigned int errcode); int BIO_socket_wait(int fd, int for_read, time_t max_time); # endif int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); @@ -726,6 +837,8 @@ int BIO_hex_string(BIO *out, int indent, int width, const void *data, # ifndef OPENSSL_NO_SOCK BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, const void *where, size_t wherelen, unsigned short port); void BIO_ADDR_free(BIO_ADDR *); @@ -788,6 +901,7 @@ int BIO_sock_info(int sock, # define BIO_SOCK_KEEPALIVE 0x04 # define BIO_SOCK_NONBLOCK 0x08 # define BIO_SOCK_NODELAY 0x10 +# define BIO_SOCK_TFO 0x20 int BIO_socket(int domain, int socktype, int protocol, int options); int BIO_connect(int sock, const BIO_ADDR *addr, int options); @@ -805,6 +919,11 @@ BIO *BIO_new_fd(int fd, int close_flag); int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, BIO **bio2, size_t writebuf2); +# ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +# endif + /* * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default @@ -849,38 +968,54 @@ ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); BIO_METHOD *BIO_meth_new(int type, const char *name); void BIO_meth_free(BIO_METHOD *biom); -int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int); -int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t, - size_t *); int BIO_meth_set_write(BIO_METHOD *biom, int (*write) (BIO *, const char *, int)); int BIO_meth_set_write_ex(BIO_METHOD *biom, int (*bwrite) (BIO *, const char *, size_t, size_t *)); -int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); -int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); +int BIO_meth_set_sendmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_read(BIO_METHOD *biom, int (*read) (BIO *, char *, int)); int BIO_meth_set_read_ex(BIO_METHOD *biom, int (*bread) (BIO *, char *, size_t, size_t *)); -int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +int BIO_meth_set_recvmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_puts(BIO_METHOD *biom, int (*puts) (BIO *, const char *)); -int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); int BIO_meth_set_gets(BIO_METHOD *biom, int (*ossl_gets) (BIO *, char *, int)); -long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); int BIO_meth_set_ctrl(BIO_METHOD *biom, long (*ctrl) (BIO *, int, long, void *)); -int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); -int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); -long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) - (BIO *, int, BIO_info_cb *); int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, long (*callback_ctrl) (BIO *, int, BIO_info_cb *)); - +# ifndef OPENSSL_NO_DEPRECATED_3_5 +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, + int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, + long, void *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) (BIO *, int, + BIO_info_cb *); +# endif # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/cmp.h index 49825570d8c303..05aed3029d594c 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -35,7 +35,9 @@ extern "C" { # endif -# define OSSL_CMP_PVNO 2 +# define OSSL_CMP_PVNO_2 2 +# define OSSL_CMP_PVNO_3 3 +# define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ /*- * PKIFailureInfo ::= BIT STRING { @@ -137,7 +139,6 @@ extern "C" { # if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX # error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int # endif - typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) @@ -203,8 +204,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_PKISTATUS_revocationWarning 4 # define OSSL_CMP_PKISTATUS_revocationNotification 5 # define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 - typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; + DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) # define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 @@ -274,6 +275,46 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) #define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) #define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) + +typedef struct ossl_cmp_crlstatus_st OSSL_CMP_CRLSTATUS; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS) +#define sk_OSSL_CMP_CRLSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_value(sk, idx) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CRLSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CRLSTATUS_new_null() ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CRLSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CRLSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CRLSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_delete(sk, i) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CRLSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_pop(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_shift(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CRLSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CRLSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CRLSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CRLSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CRLSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) + + +typedef OSSL_CRMF_ATTRIBUTETYPEANDVALUE OSSL_CMP_ATAV; +# define OSSL_CMP_ATAV_free OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free +typedef STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) OSSL_CMP_ATAVS; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_ATAVS) +# define stack_st_OSSL_CMP_ATAV stack_st_OSSL_CRMF_ATTRIBUTETYPEANDVALUE +# define sk_OSSL_CMP_ATAV_num sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num +# define sk_OSSL_CMP_ATAV_value sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value +# define sk_OSSL_CMP_ATAV_push sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push +# define sk_OSSL_CMP_ATAV_pop_free sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free + typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT; typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI; DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI) @@ -375,21 +416,75 @@ void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type, ASN1_TYPE *value); ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav); ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); -int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p, +int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **sk_p, OSSL_CMP_ITAV *itav); void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new0_certProfile(STACK_OF(ASN1_UTF8STRING) + *certProfile); +int OSSL_CMP_ITAV_get0_certProfile(const OSSL_CMP_ITAV *itav, + STACK_OF(ASN1_UTF8STRING) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_create(const X509_CRL *crl, + const X509 *cert, int only_DN); +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_new1(const DIST_POINT_NAME *dpn, + const GENERAL_NAMES *issuer, + const ASN1_TIME *thisUpdate); +int OSSL_CMP_CRLSTATUS_get0(const OSSL_CMP_CRLSTATUS *crlstatus, + DIST_POINT_NAME **dpn, GENERAL_NAMES **issuer, + ASN1_TIME **thisUpdate); +void OSSL_CMP_CRLSTATUS_free(OSSL_CMP_CRLSTATUS *crlstatus); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_crlStatusList(STACK_OF(OSSL_CMP_CRLSTATUS) *crlStatusList); +int OSSL_CMP_ITAV_get0_crlStatusList(const OSSL_CMP_ITAV *itav, + STACK_OF(OSSL_CMP_CRLSTATUS) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_crls(const X509_CRL *crls); +int OSSL_CMP_ITAV_get0_crls(const OSSL_CMP_ITAV *it, STACK_OF(X509_CRL) **out); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_certReqTemplate(OSSL_CRMF_CERTTEMPLATE *certTemplate, + OSSL_CMP_ATAVS *keySpec); +int OSSL_CMP_ITAV_get1_certReqTemplate(const OSSL_CMP_ITAV *itav, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +OSSL_CMP_ATAV *OSSL_CMP_ATAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ATAV_set0(OSSL_CMP_ATAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ATAV_get0_type(const OSSL_CMP_ATAV *itav); +ASN1_TYPE *OSSL_CMP_ATAV_get0_value(const OSSL_CMP_ATAV *itav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_algId(const X509_ALGOR *alg); +X509_ALGOR *OSSL_CMP_ATAV_get0_algId(const OSSL_CMP_ATAV *atav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_rsaKeyLen(int len); +int OSSL_CMP_ATAV_get_rsaKeyLen(const OSSL_CMP_ATAV *atav); +int OSSL_CMP_ATAV_push1(OSSL_CMP_ATAVS **sk_p, const OSSL_CMP_ATAV *atav); + void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); /* from cmp_ctx.c */ OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const OSSL_CMP_CTX *ctx); /* CMP general options: */ # define OSSL_CMP_OPT_LOG_VERBOSITY 0 /* CMP transfer options: */ -# define OSSL_CMP_OPT_KEEP_ALIVE 10 -# define OSSL_CMP_OPT_MSG_TIMEOUT 11 +# define OSSL_CMP_OPT_KEEP_ALIVE 10 +# define OSSL_CMP_OPT_MSG_TIMEOUT 11 # define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 +# define OSSL_CMP_OPT_USE_TLS 13 /* CMP request options: */ # define OSSL_CMP_OPT_VALIDITY_DAYS 20 # define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 @@ -407,6 +502,7 @@ int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); # define OSSL_CMP_OPT_DIGEST_ALGNID 34 # define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35 # define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36 +# define OSSL_CMP_OPT_NO_CACHE_EXTRACERTS 37 int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val); int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt); /* CMP-specific callback for logging and outputting the error queue: */ @@ -420,9 +516,11 @@ int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); +# ifndef OPENSSL_NO_HTTP int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); +# endif typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); @@ -432,7 +530,9 @@ void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); +# define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +# define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); /* client authentication: */ @@ -448,12 +548,15 @@ int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx, int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); int OSSL_CMP_CTX_reset_geninfo_ITAVs(OSSL_CMP_CTX *ctx); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_CTX_get0_geninfo_ITAVs(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, STACK_OF(X509) *extraCertsOut); /* certificate template: */ int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set1_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, const GENERAL_NAME *name); @@ -477,6 +580,7 @@ int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); # define OSSL_CMP_PKISI_BUFLEN 1024 +X509 *OSSL_CMP_CTX_get0_validatedSrvCert(const OSSL_CMP_CTX *ctx); X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); @@ -498,10 +602,13 @@ OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const OSSL_CMP_PKIHEADER *hdr); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_HDR_get0_geninfo_ITAVs(const OSSL_CMP_PKIHEADER *hdr); /* from cmp_msg.c */ OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg); +X509_PUBKEY *OSSL_CMP_MSG_get0_certreq_publickey(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_recipNonce(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid); @@ -517,8 +624,10 @@ int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, X509_STORE *trusted_store, X509 *cert); /* from cmp_http.c */ +# ifndef OPENSSL_NO_HTTP OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); +# endif /* from cmp_server.c */ typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; @@ -561,6 +670,13 @@ int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx, OSSL_CMP_SRV_error_cb_t process_error, OSSL_CMP_SRV_certConf_cb_t process_certConf, OSSL_CMP_SRV_pollReq_cb_t process_pollReq); +typedef int (*OSSL_CMP_SRV_delayed_delivery_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +typedef int (*OSSL_CMP_SRV_clean_transaction_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_SRV_CTX_init_trans(OSSL_CMP_SRV_CTX *srv_ctx, + OSSL_CMP_SRV_delayed_delivery_cb_t delay, + OSSL_CMP_SRV_clean_transaction_cb_t clean); OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx, @@ -577,6 +693,8 @@ X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type, # define OSSL_CMP_CR 2 # define OSSL_CMP_P10CR 4 # define OSSL_CMP_KUR 7 +# define OSSL_CMP_GENM 21 +# define OSSL_CMP_ERROR 23 # define OSSL_CMP_exec_IR_ses(ctx) \ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL) # define OSSL_CMP_exec_CR_ses(ctx) \ @@ -590,6 +708,18 @@ int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); +int OSSL_CMP_get1_crlUpdate(OSSL_CMP_CTX *ctx, const X509 *crlcert, + const X509_CRL *last_crl, + X509_CRL **crl); +int OSSL_CMP_get1_certReqTemplate(OSSL_CMP_CTX *ctx, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/cms.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/cms.h index 3b453e6a2187a2..63afab563557b0 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/cms.h +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/cms.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cms.h.in * - * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2008-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -31,8 +31,10 @@ extern "C" { # endif +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; typedef struct CMS_ContentInfo_st CMS_ContentInfo; typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; typedef struct CMS_CertificateChoices CMS_CertificateChoices; typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; @@ -147,10 +149,14 @@ SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, #define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) +DECLARE_ASN1_DUP_FUNCTION(CMS_EnvelopedData) + CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq); # define CMS_SIGNERINFO_ISSUER_SERIAL 0 @@ -190,6 +196,7 @@ CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq) # define CMS_ASCIICRLF 0x80000 # define CMS_CADES 0x100000 # define CMS_USE_ORIGINATOR_KEYID 0x200000 +# define CMS_NO_SIGNING_TIME 0x400000 const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms); @@ -217,13 +224,16 @@ int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, unsigned int flags); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, BIO *dcont, + unsigned int flags); CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, unsigned int flags); CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, @@ -233,27 +243,26 @@ CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, unsigned int flags); CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, const unsigned char *key, size_t keylen, BIO *dcont, BIO *out, unsigned int flags); - CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags); CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, @@ -272,7 +281,7 @@ CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags); CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, BIO *dcont, BIO *out, unsigned int flags); @@ -291,12 +300,16 @@ int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo * -CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx, +CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags); @@ -385,6 +398,11 @@ ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); int CMS_SignerInfo_sign(CMS_SignerInfo *si); int CMS_SignerInfo_verify(CMS_SignerInfo *si); int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, @@ -441,7 +459,7 @@ CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( unsigned char *id, int idlen, int allorfirst, STACK_OF(GENERAL_NAMES) *receiptList, STACK_OF(GENERAL_NAMES) *receiptsTo, - OSSL_LIB_CTX *ctx); + OSSL_LIB_CTX *libctx); int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/comp.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/comp.h new file mode 100644 index 00000000000000..90e39511fe8d28 --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/comp.h @@ -0,0 +1,98 @@ +/* + * Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_COMP_H +# define OPENSSL_COMP_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_COMP_H +# endif + +# include + +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + + +# ifndef OPENSSL_NO_COMP + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX* comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); + +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); + +COMP_METHOD *COMP_zlib(void); +COMP_METHOD *COMP_zlib_oneshot(void); +COMP_METHOD *COMP_brotli(void); +COMP_METHOD *COMP_brotli_oneshot(void); +COMP_METHOD *COMP_zstd(void); +COMP_METHOD *COMP_zstd_oneshot(void); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define COMP_zlib_cleanup() while(0) continue +# endif + +# ifdef OPENSSL_BIO_H +const BIO_METHOD *BIO_f_zlib(void); +const BIO_METHOD *BIO_f_brotli(void); +const BIO_METHOD *BIO_f_zstd(void); +# endif + +# endif + +typedef struct ssl_comp_st SSL_COMP; + +SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) +#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) +#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) +#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) +#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) +#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) +#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) +#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) +#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) +#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) +#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) +#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) + + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/conf.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/conf.h index 44989929f6c84a..38576290bf641b 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/conf.h +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/conf.h @@ -27,6 +27,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -65,7 +68,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) #define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) #define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); -#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp))) +#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp)), lh_CONF_VALUE_hash_thunk, lh_CONF_VALUE_comp_thunk, lh_CONF_VALUE_doall_thunk, lh_CONF_VALUE_doall_arg_thunk)) #define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/configuration.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/configuration.h index 26b93ba38b2162..1af235f6775ea9 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/configuration.h +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/configuration.h @@ -30,7 +30,7 @@ extern "C" { # ifndef OPENSSL_SYS_AIX # define OPENSSL_SYS_AIX 1 # endif -# define OPENSSL_CONFIGURED_API 30000 +# define OPENSSL_CONFIGURED_API 30500 # ifndef OPENSSL_RAND_SEED_OS # define OPENSSL_RAND_SEED_OS # endif @@ -46,6 +46,12 @@ extern "C" { # ifndef OPENSSL_NO_ASM # define OPENSSL_NO_ASM # endif +# ifndef OPENSSL_NO_BROTLI +# define OPENSSL_NO_BROTLI +# endif +# ifndef OPENSSL_NO_BROTLI_DYNAMIC +# define OPENSSL_NO_BROTLI_DYNAMIC +# endif # ifndef OPENSSL_NO_COMP # define OPENSSL_NO_COMP # endif @@ -55,6 +61,9 @@ extern "C" { # ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # endif +# ifndef OPENSSL_NO_DEMOS +# define OPENSSL_NO_DEMOS +# endif # ifndef OPENSSL_NO_DEVCRYPTOENG # define OPENSSL_NO_DEVCRYPTOENG # endif @@ -67,12 +76,24 @@ extern "C" { # ifndef OPENSSL_NO_EXTERNAL_TESTS # define OPENSSL_NO_EXTERNAL_TESTS # endif +# ifndef OPENSSL_NO_FIPS_JITTER +# define OPENSSL_NO_FIPS_JITTER +# endif # ifndef OPENSSL_NO_FUZZ_AFL # define OPENSSL_NO_FUZZ_AFL # endif # ifndef OPENSSL_NO_FUZZ_LIBFUZZER # define OPENSSL_NO_FUZZ_LIBFUZZER # endif +# ifndef OPENSSL_NO_H3DEMO +# define OPENSSL_NO_H3DEMO +# endif +# ifndef OPENSSL_NO_HQINTEROP +# define OPENSSL_NO_HQINTEROP +# endif +# ifndef OPENSSL_NO_JITTER +# define OPENSSL_NO_JITTER +# endif # ifndef OPENSSL_NO_KTLS # define OPENSSL_NO_KTLS # endif @@ -85,6 +106,9 @@ extern "C" { # ifndef OPENSSL_NO_MSAN # define OPENSSL_NO_MSAN # endif +# ifndef OPENSSL_NO_PIE +# define OPENSSL_NO_PIE +# endif # ifndef OPENSSL_NO_RC5 # define OPENSSL_NO_RC5 # endif @@ -97,6 +121,12 @@ extern "C" { # ifndef OPENSSL_NO_SSL3_METHOD # define OPENSSL_NO_SSL3_METHOD # endif +# ifndef OPENSSL_NO_SSLKEYLOG +# define OPENSSL_NO_SSLKEYLOG +# endif +# ifndef OPENSSL_NO_TFO +# define OPENSSL_NO_TFO +# endif # ifndef OPENSSL_NO_TRACE # define OPENSSL_NO_TRACE # endif @@ -112,6 +142,21 @@ extern "C" { # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS # define OPENSSL_NO_WEAK_SSL_CIPHERS # endif +# ifndef OPENSSL_NO_WINSTORE +# define OPENSSL_NO_WINSTORE +# endif +# ifndef OPENSSL_NO_ZLIB +# define OPENSSL_NO_ZLIB +# endif +# ifndef OPENSSL_NO_ZLIB_DYNAMIC +# define OPENSSL_NO_ZLIB_DYNAMIC +# endif +# ifndef OPENSSL_NO_ZSTD +# define OPENSSL_NO_ZSTD +# endif +# ifndef OPENSSL_NO_ZSTD_DYNAMIC +# define OPENSSL_NO_ZSTD_DYNAMIC +# endif # ifndef OPENSSL_NO_DYNAMIC_ENGINE # define OPENSSL_NO_DYNAMIC_ENGINE # endif @@ -133,6 +178,12 @@ extern "C" { # define RC4_INT unsigned char +# if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +# define OPENSSL_NO_COMP_ALG +# else +# undef OPENSSL_NO_COMP_ALG +# endif + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/core_names.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/core_names.h new file mode 100644 index 00000000000000..e93e79a52bc910 --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/core_names.h @@ -0,0 +1,575 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/core_names.h.in + * + * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#ifndef OPENSSL_CORE_NAMES_H +# define OPENSSL_CORE_NAMES_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +/* OSSL_CIPHER_PARAM_CTS_MODE Values */ +# define OSSL_CIPHER_CTS_MODE_CS1 "CS1" +# define OSSL_CIPHER_CTS_MODE_CS2 "CS2" +# define OSSL_CIPHER_CTS_MODE_CS3 "CS3" + +/* Known CIPHER names (not a complete list) */ +# define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" + +/* Known DIGEST names (not a complete list) */ +# define OSSL_DIGEST_NAME_MD5 "MD5" +# define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" +# define OSSL_DIGEST_NAME_SHA1 "SHA1" +# define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" +# define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" +# define OSSL_DIGEST_NAME_SHA2_256_192 "SHA2-256/192" +# define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" +# define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" +# define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" +# define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" +# define OSSL_DIGEST_NAME_MD2 "MD2" +# define OSSL_DIGEST_NAME_MD4 "MD4" +# define OSSL_DIGEST_NAME_MDC2 "MDC2" +# define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" +# define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" +# define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" +# define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" +# define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" +# define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" +# define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" +# define OSSL_DIGEST_NAME_SM3 "SM3" + +/* Known MAC names */ +# define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" +# define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" +# define OSSL_MAC_NAME_CMAC "CMAC" +# define OSSL_MAC_NAME_GMAC "GMAC" +# define OSSL_MAC_NAME_HMAC "HMAC" +# define OSSL_MAC_NAME_KMAC128 "KMAC128" +# define OSSL_MAC_NAME_KMAC256 "KMAC256" +# define OSSL_MAC_NAME_POLY1305 "POLY1305" +# define OSSL_MAC_NAME_SIPHASH "SIPHASH" + +/* Known KDF names */ +# define OSSL_KDF_NAME_HKDF "HKDF" +# define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" +# define OSSL_KDF_NAME_PBKDF1 "PBKDF1" +# define OSSL_KDF_NAME_PBKDF2 "PBKDF2" +# define OSSL_KDF_NAME_SCRYPT "SCRYPT" +# define OSSL_KDF_NAME_SSHKDF "SSHKDF" +# define OSSL_KDF_NAME_SSKDF "SSKDF" +# define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" +# define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" +# define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" +# define OSSL_KDF_NAME_X963KDF "X963KDF" +# define OSSL_KDF_NAME_KBKDF "KBKDF" +# define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" +# define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" + +/* RSA padding modes */ +# define OSSL_PKEY_RSA_PAD_MODE_NONE "none" +# define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" +# define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" +# define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" +# define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" + +/* RSA pss padding salt length */ +# define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" + +/* OSSL_PKEY_PARAM_EC_ENCODING values */ +# define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" +# define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" + +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" + +# define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" + +/* PROV_SKEY well known key types */ +# define OSSL_SKEY_TYPE_GENERIC "GENERIC-SECRET" +# define OSSL_SKEY_TYPE_AES "AES" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" + +/* Provider configuration variables */ +#define OSSL_PKEY_RETAIN_SEED "pkey_retain_seed" + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +# define OSSL_ALG_PARAM_ALGORITHM_ID "algorithm-id" +# define OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS "algorithm-id-params" +# define OSSL_ALG_PARAM_CIPHER "cipher" +# define OSSL_ALG_PARAM_DIGEST "digest" +# define OSSL_ALG_PARAM_ENGINE "engine" +# define OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR "fips-indicator" +# define OSSL_ALG_PARAM_MAC "mac" +# define OSSL_ALG_PARAM_PROPERTIES "properties" +# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +# define OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props" +# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" +# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name" +# define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal" +# define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name" +# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid" +# define OSSL_CIPHER_PARAM_AEAD "aead" +# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +# define OSSL_CIPHER_PARAM_AEAD_IV_GENERATED "iv-generated" +# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" +# define OSSL_CIPHER_PARAM_AEAD_TAG "tag" +# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" +# define OSSL_CIPHER_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD "alg_id_param" +# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_CIPHER_PARAM_CTS "cts" +# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" +# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" +# define OSSL_CIPHER_PARAM_DECRYPT_ONLY "decrypt-only" +# define OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK "encrypt-check" +# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" +# define OSSL_CIPHER_PARAM_IV "iv" +# define OSSL_CIPHER_PARAM_IVLEN "ivlen" +# define OSSL_CIPHER_PARAM_KEYLEN "keylen" +# define OSSL_CIPHER_PARAM_MODE "mode" +# define OSSL_CIPHER_PARAM_NUM "num" +# define OSSL_CIPHER_PARAM_PADDING "padding" +# define OSSL_CIPHER_PARAM_PIPELINE_AEAD_TAG "pipeline-tag" +# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" +# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" +# define OSSL_CIPHER_PARAM_ROUNDS "rounds" +# define OSSL_CIPHER_PARAM_SPEED "speed" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag" +# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" +# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" +# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" +# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" +# define OSSL_CIPHER_PARAM_USE_BITS "use-bits" +# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard" +# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" +# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_DIGEST_PARAM_MICALG "micalg" +# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" +# define OSSL_DIGEST_PARAM_SIZE "size" +# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" +# define OSSL_DIGEST_PARAM_XOF "xof" +# define OSSL_DIGEST_PARAM_XOFLEN "xoflen" +# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +# define OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +# define OSSL_DRBG_PARAM_SIZE "size" +# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" +# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" +# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" +# define OSSL_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_EXCHANGE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" +# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" +# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" +# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" +# define OSSL_EXCHANGE_PARAM_PAD "pad" +# define OSSL_GEN_PARAM_ITERATION "iteration" +# define OSSL_GEN_PARAM_POTENTIAL "potential" +# define OSSL_KDF_PARAM_ARGON2_AD "ad" +# define OSSL_KDF_PARAM_ARGON2_LANES "lanes" +# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost" +# define OSSL_KDF_PARAM_ARGON2_VERSION "version" +# define OSSL_KDF_PARAM_CEK_ALG "cekalg" +# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_KDF_PARAM_CONSTANT "constant" +# define OSSL_KDF_PARAM_DATA "data" +# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean" +# define OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KDF_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_KDF_PARAM_FIPS_EMS_CHECK "ems_check" +# define OSSL_KDF_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy" +# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce" +# define OSSL_KDF_PARAM_INFO "info" +# define OSSL_KDF_PARAM_ITER "iter" +# define OSSL_KDF_PARAM_KBKDF_R "r" +# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" +# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" +# define OSSL_KDF_PARAM_KEY "key" +# define OSSL_KDF_PARAM_LABEL "label" +# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_KDF_PARAM_MAC_SIZE "maclen" +# define OSSL_KDF_PARAM_MODE "mode" +# define OSSL_KDF_PARAM_PASSWORD "pass" +# define OSSL_KDF_PARAM_PKCS12_ID "id" +# define OSSL_KDF_PARAM_PKCS5 "pkcs5" +# define OSSL_KDF_PARAM_PREFIX "prefix" +# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_KDF_PARAM_SALT "salt" +# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" +# define OSSL_KDF_PARAM_SCRYPT_N "n" +# define OSSL_KDF_PARAM_SCRYPT_P "p" +# define OSSL_KDF_PARAM_SCRYPT_R "r" +# define OSSL_KDF_PARAM_SECRET "secret" +# define OSSL_KDF_PARAM_SEED "seed" +# define OSSL_KDF_PARAM_SIZE "size" +# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" +# define OSSL_KDF_PARAM_SSHKDF_TYPE "type" +# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" +# define OSSL_KDF_PARAM_THREADS "threads" +# define OSSL_KDF_PARAM_UKM "ukm" +# define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info" +# define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info" +# define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info" +# define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo" +# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_KEM_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KEM_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KEM_PARAM_IKME "ikme" +# define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING "hs_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm" +# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len" +# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" +# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_MAC_PARAM_CUSTOM "custom" +# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" +# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" +# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" +# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" +# define OSSL_MAC_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_MAC_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_MAC_PARAM_FIPS_NO_SHORT_MAC OSSL_PROV_PARAM_NO_SHORT_MAC +# define OSSL_MAC_PARAM_IV "iv" +# define OSSL_MAC_PARAM_KEY "key" +# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_MAC_PARAM_SALT "salt" +# define OSSL_MAC_PARAM_SIZE "size" +# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" +# define OSSL_MAC_PARAM_XOF "xof" +# define OSSL_OBJECT_PARAM_DATA "data" +# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" +# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" +# define OSSL_OBJECT_PARAM_DESC "desc" +# define OSSL_OBJECT_PARAM_INPUT_TYPE "input-type" +# define OSSL_OBJECT_PARAM_REFERENCE "reference" +# define OSSL_OBJECT_PARAM_TYPE "type" +# define OSSL_PASSPHRASE_PARAM_INFO "info" +# define OSSL_PKEY_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_PKEY_PARAM_BITS "bits" +# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" +# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm" +# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" +# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +# define OSSL_PKEY_PARAM_DIST_ID "distid" +# define OSSL_PKEY_PARAM_EC_A "a" +# define OSSL_PKEY_PARAM_EC_B "b" +# define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3" +# define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp" +# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" +# define OSSL_PKEY_PARAM_EC_ENCODING "encoding" +# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +# define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_PARAM_EC_ORDER "order" +# define OSSL_PKEY_PARAM_EC_P "p" +# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +# define OSSL_PKEY_PARAM_EC_PUB_X "qx" +# define OSSL_PKEY_PARAM_EC_PUB_Y "qy" +# define OSSL_PKEY_PARAM_EC_SEED "seed" +# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE +# define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +# define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_FFC_G "g" +# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +# define OSSL_PKEY_PARAM_FFC_H "hindex" +# define OSSL_PKEY_PARAM_FFC_P "p" +# define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +# define OSSL_PKEY_PARAM_FFC_Q "q" +# define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +# define OSSL_PKEY_PARAM_FFC_SEED "seed" +# define OSSL_PKEY_PARAM_FFC_TYPE "type" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +# define OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK "digest-check" +# define OSSL_PKEY_PARAM_FIPS_KEY_CHECK "key-check" +# define OSSL_PKEY_PARAM_FIPS_SIGN_CHECK "sign-check" +# define OSSL_PKEY_PARAM_GROUP_NAME "group" +# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" +# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +# define OSSL_PKEY_PARAM_MAX_SIZE "max-size" +# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +# define OSSL_PKEY_PARAM_ML_DSA_INPUT_FORMATS "ml-dsa.input_formats" +# define OSSL_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS "ml-dsa.output_formats" +# define OSSL_PKEY_PARAM_ML_DSA_PREFER_SEED "ml-dsa.prefer_seed" +# define OSSL_PKEY_PARAM_ML_DSA_RETAIN_SEED "ml-dsa.retain_seed" +# define OSSL_PKEY_PARAM_ML_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE "ml-kem.import_pct_type" +# define OSSL_PKEY_PARAM_ML_KEM_INPUT_FORMATS "ml-kem.input_formats" +# define OSSL_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS "ml-kem.output_formats" +# define OSSL_PKEY_PARAM_ML_KEM_PREFER_SEED "ml-kem.prefer_seed" +# define OSSL_PKEY_PARAM_ML_KEM_RETAIN_SEED "ml-kem.retain_seed" +# define OSSL_PKEY_PARAM_ML_KEM_SEED "seed" +# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +# define OSSL_PKEY_PARAM_PRIV_KEY "priv" +# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_PUB_KEY "pub" +# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9" +# define OSSL_PKEY_PARAM_RSA_D "d" +# define OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ "rsa-derive-from-pq" +# define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_RSA_E "e" +# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1" +# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10" +# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2" +# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3" +# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4" +# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5" +# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6" +# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7" +# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8" +# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9" +# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1" +# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10" +# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2" +# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3" +# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4" +# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5" +# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6" +# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7" +# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8" +# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9" +# define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC +# define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_PKEY_PARAM_RSA_N "n" +# define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" +# define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1" +# define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2" +# define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1" +# define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2" +# define OSSL_PKEY_PARAM_RSA_TEST_XP "xp" +# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" +# define OSSL_PKEY_PARAM_SLH_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG +# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +# define OSSL_PROV_PARAM_BUILDINFO "buildinfo" +# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" +# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" +# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" +# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" +# define OSSL_PROV_PARAM_DSA_SIGN_DISABLED "dsa-sign-disabled" +# define OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK "ecdh-cofactor-check" +# define OSSL_PROV_PARAM_HKDF_DIGEST_CHECK "hkdf-digest-check" +# define OSSL_PROV_PARAM_HKDF_KEY_CHECK "hkdf-key-check" +# define OSSL_PROV_PARAM_HMAC_KEY_CHECK "hmac-key-check" +# define OSSL_PROV_PARAM_KBKDF_KEY_CHECK "kbkdf-key-check" +# define OSSL_PROV_PARAM_KMAC_KEY_CHECK "kmac-key-check" +# define OSSL_PROV_PARAM_NAME "name" +# define OSSL_PROV_PARAM_NO_SHORT_MAC "no-short-mac" +# define OSSL_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK "pbkdf2-lower-bound-check" +# define OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED "rsa-pkcs15-pad-disabled" +# define OSSL_PROV_PARAM_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED "rsa-sign-x931-pad-disabled" +# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" +# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" +# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" +# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" +# define OSSL_PROV_PARAM_SIGNATURE_DIGEST_CHECK "signature-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_DIGEST_CHECK "sshkdf-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_KEY_CHECK "sshkdf-key-check" +# define OSSL_PROV_PARAM_SSKDF_DIGEST_CHECK "sskdf-digest-check" +# define OSSL_PROV_PARAM_SSKDF_KEY_CHECK "sskdf-key-check" +# define OSSL_PROV_PARAM_STATUS "status" +# define OSSL_PROV_PARAM_TDES_ENCRYPT_DISABLED "tdes-encrypt-disabled" +# define OSSL_PROV_PARAM_TLS13_KDF_DIGEST_CHECK "tls13-kdf-digest-check" +# define OSSL_PROV_PARAM_TLS13_KDF_KEY_CHECK "tls13-kdf-key-check" +# define OSSL_PROV_PARAM_TLS1_PRF_DIGEST_CHECK "tls1-prf-digest-check" +# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" +# define OSSL_PROV_PARAM_TLS1_PRF_KEY_CHECK "tls1-prf-key-check" +# define OSSL_PROV_PARAM_VERSION "version" +# define OSSL_PROV_PARAM_X942KDF_KEY_CHECK "x942kdf-key-check" +# define OSSL_PROV_PARAM_X963KDF_DIGEST_CHECK "x963kdf-digest-check" +# define OSSL_PROV_PARAM_X963KDF_KEY_CHECK "x963kdf-key-check" +# define OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_RAND_PARAM_GENERATE "generate" +# define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +# define OSSL_RAND_PARAM_STATE "state" +# define OSSL_RAND_PARAM_STRENGTH "strength" +# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" +# define OSSL_SIGNATURE_PARAM_ADD_RANDOM "additional-random" +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID OSSL_PKEY_PARAM_ALGORITHM_ID +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string" +# define OSSL_SIGNATURE_PARAM_DETERMINISTIC "deterministic" +# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE +# define OSSL_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_SIGNATURE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_CHECK OSSL_PKEY_PARAM_FIPS_SIGN_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK "sign-x931-pad-check" +# define OSSL_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE "verify-message" +# define OSSL_SIGNATURE_PARAM_INSTANCE "instance" +# define OSSL_SIGNATURE_PARAM_KAT "kat" +# define OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING "message-encoding" +# define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_SIGNATURE_PARAM_MU "mu" +# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type" +# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +# define OSSL_SIGNATURE_PARAM_SIGNATURE "signature" +# define OSSL_SIGNATURE_PARAM_TEST_ENTROPY "test-entropy" +# define OSSL_SKEY_PARAM_KEY_LENGTH "key-length" +# define OSSL_SKEY_PARAM_RAW_BYTES "raw-bytes" +# define OSSL_STORE_PARAM_ALIAS "alias" +# define OSSL_STORE_PARAM_DIGEST "digest" +# define OSSL_STORE_PARAM_EXPECT "expect" +# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" +# define OSSL_STORE_PARAM_INPUT_TYPE "input-type" +# define OSSL_STORE_PARAM_ISSUER "name" +# define OSSL_STORE_PARAM_PROPERTIES "properties" +# define OSSL_STORE_PARAM_SERIAL "serial" +# define OSSL_STORE_PARAM_SUBJECT "subject" + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/crmf.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/crmf.h index 71b747ed33d239..4bf550fd47daa9 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/crmf.h +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/crmf.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/crmf.h.in * - * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -26,6 +26,7 @@ # include # include # include /* for GENERAL_NAME etc. */ +# include /* explicit #includes not strictly needed since implied by the above: */ # include @@ -43,9 +44,12 @@ extern "C" { # define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 # define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 - typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) + +typedef struct ossl_crmf_encryptedkey_st OSSL_CRMF_ENCRYPTEDKEY; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDKEY) + typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) @@ -77,6 +81,36 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) #define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; +void OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(OSSL_CRMF_ATTRIBUTETYPEANDVALUE *v); +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value(sk, idx) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new(cmp) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_null() ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (n)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete(sk, i) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (i))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete_ptr(sk, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_shift(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk),ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), (idx)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set(sk, idx, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), pnum) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup(sk) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) + + typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER) typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY; @@ -118,6 +152,7 @@ typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO) typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTTEMPLATE) typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS) @@ -198,12 +233,14 @@ int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, int rid, int acceptRAVerified, OSSL_LIB_CTX *libctx, const char *propq); OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); -const ASN1_INTEGER -*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const ASN1_INTEGER +*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); X509_EXTENSIONS *OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME @@ -215,10 +252,24 @@ int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl, const X509_NAME *subject, const X509_NAME *issuer, const ASN1_INTEGER *serial); -X509 -*OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, - OSSL_LIB_CTX *libctx, const char *propq, - EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDKEY_get1_encCert(const OSSL_CRMF_ENCRYPTEDKEY *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, unsigned int flags); +unsigned char +*OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *enc, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, int *outlen); +EVP_PKEY *OSSL_CRMF_ENCRYPTEDKEY_get1_pkey(const OSSL_CRMF_ENCRYPTEDKEY *encryptedKey, + X509_STORE *ts, STACK_OF(X509) *extra, EVP_PKEY *pkey, + X509 *cert, ASN1_OCTET_STRING *secret, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSG_centralkeygen_requested(const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr); +# ifndef OPENSSL_NO_CMS +OSSL_CRMF_ENCRYPTEDKEY *OSSL_CRMF_ENCRYPTEDKEY_init_envdata(CMS_EnvelopedData *envdata); +# endif # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/crypto.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/crypto.h index 3f40be6d8c61d5..fd2cfd3e5a9ac4 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/crypto.h +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/crypto.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/crypto.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -85,9 +85,15 @@ int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock); void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock); int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_add64(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_and(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, CRYPTO_RWLOCK *lock); int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, CRYPTO_RWLOCK *lock); /* No longer needed, so this is a no-op */ #define OPENSSL_malloc_init() while(0) continue @@ -96,6 +102,9 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_zalloc(num) \ CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_aligned_alloc(num, alignment, freeptr) \ + CRYPTO_aligned_alloc(num, alignment, freeptr, \ + OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_realloc(addr, num) \ CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_clear_realloc(addr, old_num, num) \ @@ -124,6 +133,7 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); size_t OPENSSL_strnlen(const char *str, size_t maxlen); +int OPENSSL_strtoul(const char *str, char **endptr, int base, unsigned long *num); int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength, const unsigned char *buf, size_t buflen, const char sep); @@ -160,6 +170,7 @@ const char *OpenSSL_version(int type); # define OPENSSL_FULL_VERSION_STRING 7 # define OPENSSL_MODULES_DIR 8 # define OPENSSL_CPU_INFO 9 +# define OPENSSL_WINCTX 10 const char *OPENSSL_info(int type); /* @@ -174,6 +185,7 @@ const char *OPENSSL_info(int type); # define OPENSSL_INFO_LIST_SEPARATOR 1006 # define OPENSSL_INFO_SEED_SOURCE 1007 # define OPENSSL_INFO_CPU_SETTINGS 1008 +# define OPENSSL_INFO_WINDOWS_CONTEXT 1009 int OPENSSL_issetugid(void); @@ -341,11 +353,14 @@ void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn, CRYPTO_realloc_fn *realloc_fn, CRYPTO_free_fn *free_fn); -void *CRYPTO_malloc(size_t num, const char *file, int line); -void *CRYPTO_zalloc(size_t num, const char *file, int line); -void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); -char *CRYPTO_strdup(const char *str, const char *file, int line); -char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc(size_t num, size_t align, + void **freeptr, const char *file, + int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strdup(const char *str, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); void CRYPTO_free(void *ptr, const char *file, int line); void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line); void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); @@ -354,8 +369,8 @@ void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, int CRYPTO_secure_malloc_init(size_t sz, size_t minsize); int CRYPTO_secure_malloc_done(void); -void *CRYPTO_secure_malloc(size_t num, const char *file, int line); -void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); void CRYPTO_secure_free(void *ptr, const char *file, int line); void CRYPTO_secure_clear_free(void *ptr, size_t num, const char *file, int line); @@ -376,6 +391,9 @@ void OPENSSL_cleanse(void *ptr, size_t len); # define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */ # define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */ +/* max allowed length for value of OPENSSL_MALLOC_FAILURES env var. */ +# define CRYPTO_MEM_CHECK_MAX_FS 256 + void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); # ifndef OPENSSL_NO_DEPRECATED_3_0 # define OPENSSL_mem_debug_push(info) \ @@ -551,6 +569,13 @@ int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file); void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); +int OSSL_LIB_CTX_get_conf_diagnostics(OSSL_LIB_CTX *ctx); +void OSSL_LIB_CTX_set_conf_diagnostics(OSSL_LIB_CTX *ctx, int value); + +void OSSL_sleep(uint64_t millis); + + +void *OSSL_LIB_CTX_get_data(OSSL_LIB_CTX *ctx, int index); # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/ct.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/ct.h index b6dd8c3547710a..e6dd1192a4e0b3 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/ct.h +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/ct.h @@ -133,7 +133,7 @@ typedef enum { */ CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); - + /* * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library * context and property query string is used. diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/err.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/err.h index 2abf2483488181..daca18e7b757b0 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/err.h +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/err.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -372,7 +372,7 @@ typedef struct ERR_string_data_st { } ERR_STRING_DATA; DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); -#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp))) +#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp)), lh_ERR_STRING_DATA_hash_thunk, lh_ERR_STRING_DATA_comp_thunk, lh_ERR_STRING_DATA_doall_thunk, lh_ERR_STRING_DATA_doall_arg_thunk)) #define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) @@ -496,6 +496,14 @@ int ERR_get_next_error_library(void); int ERR_set_mark(void); int ERR_pop_to_mark(void); int ERR_clear_last_mark(void); +int ERR_count_to_mark(void); +int ERR_pop(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); #ifdef __cplusplus } diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/fipskey.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/fipskey.h index 42ba014b313ba8..929db18c678364 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/fipskey.h +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/fipskey.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/fipskey.h.in * - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -29,6 +29,11 @@ extern "C" { */ #define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" +/* + * The FIPS provider vendor name, as a string. + */ +#define FIPS_VENDOR "OpenSSL FIPS Provider" + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/lhash.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/lhash.h index 39dd6254acdeb6..62c55b20fd9716 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/lhash.h +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/lhash.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -24,6 +24,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -31,9 +34,13 @@ extern "C" { typedef struct lhash_node_st OPENSSL_LH_NODE; typedef int (*OPENSSL_LH_COMPFUNC) (const void *, const void *); +typedef int (*OPENSSL_LH_COMPFUNCTHUNK) (const void *, const void *, OPENSSL_LH_COMPFUNC cfn); typedef unsigned long (*OPENSSL_LH_HASHFUNC) (const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNCTHUNK) (const void *, OPENSSL_LH_HASHFUNC hfn); typedef void (*OPENSSL_LH_DOALL_FUNC) (void *); +typedef void (*OPENSSL_LH_DOALL_FUNC_THUNK) (void *, OPENSSL_LH_DOALL_FUNC doall); typedef void (*OPENSSL_LH_DOALL_FUNCARG) (void *, void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG_THUNK) (void *, void *, OPENSSL_LH_DOALL_FUNCARG doall); typedef struct lhash_st OPENSSL_LHASH; /* @@ -79,26 +86,40 @@ typedef struct lhash_st OPENSSL_LHASH; int OPENSSL_LH_error(OPENSSL_LHASH *lh); OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +OPENSSL_LHASH *OPENSSL_LH_set_thunks(OPENSSL_LHASH *lh, + OPENSSL_LH_HASHFUNCTHUNK hw, + OPENSSL_LH_COMPFUNCTHUNK cw, + OPENSSL_LH_DOALL_FUNC_THUNK daw, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw); void OPENSSL_LH_free(OPENSSL_LHASH *lh); void OPENSSL_LH_flush(OPENSSL_LHASH *lh); void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); -void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg_thunk(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw, + OPENSSL_LH_DOALL_FUNCARG fn, void *arg); + unsigned long OPENSSL_LH_strhash(const char *c); unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); # ifndef OPENSSL_NO_STDIO -void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# endif +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # endif -void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define _LHASH OPENSSL_LHASH @@ -129,110 +150,190 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); /* Helper macro for internal use */ # define DEFINE_LHASH_OF_INTERNAL(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ typedef void (*lh_##type##_doallfunc)(type *a); \ - static ossl_unused ossl_inline type *ossl_check_##type##_lh_plain_type(type *ptr) \ + static ossl_inline unsigned long lh_##type##_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static ossl_inline int lh_##type##_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_inline void lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_inline void lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline type *\ + ossl_check_##type##_lh_plain_type(type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const type *ossl_check_const_##type##_lh_plain_type(const type *ptr) \ + static ossl_unused ossl_inline const type * \ + ossl_check_const_##type##_lh_plain_type(const type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const OPENSSL_LHASH *ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline const OPENSSL_LHASH * \ + ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ { \ return (const OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LHASH *ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline OPENSSL_LHASH * \ + ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ { \ return (OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ + static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC \ + ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ { \ return (OPENSSL_LH_COMPFUNC)cmp; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ + static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC \ + ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ { \ return (OPENSSL_LH_HASHFUNC)hfn; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ + static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC \ + ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ { \ return (OPENSSL_LH_DOALL_FUNC)dfn; \ } \ LHASH_OF(type) -# define DEFINE_LHASH_OF(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ - static ossl_unused ossl_inline LHASH_OF(type) *lh_##type##_new(unsigned long (*hfn)(const type *), \ - int (*cfn)(const type *, const type *)) \ +# ifndef OPENSSL_NO_DEPRECATED_3_1 +# define DEFINE_LHASH_OF_DEPRECATED(type) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ - return (LHASH_OF(type) *) \ - OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ - static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } +# else +# define DEFINE_LHASH_OF_DEPRECATED(type) +# endif + +# define DEFINE_LHASH_OF_EX(type) \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ + static unsigned long \ + lh_##type##_hfn_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static int lh_##type##_cfn_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_free(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_flush(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_flush(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ { \ return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline int \ + lh_##type##_error(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_num_items(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_get_down_load(LHASH_OF(type) *lh) \ { \ - OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ { \ - OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ } \ - static ossl_unused ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ { \ - OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ { \ - return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ } \ - static ossl_unused ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall(LHASH_OF(type) *lh, void (*doall)(type *)) \ { \ - OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ - void (*doall)(type *)) \ + static ossl_unused ossl_inline LHASH_OF(type) * \ + lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ { \ - OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \ + lh_##type##_hfn_thunk, lh_##type##_cfn_thunk, \ + lh_##type##_doall_thunk, \ + lh_##type##_doall_arg_thunk); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall_arg(LHASH_OF(type) *lh, \ - void (*doallarg)(type *, void *), \ - void *arg) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg(LHASH_OF(type) *lh, \ + void (*doallarg)(type *, void *), void *arg) \ { \ OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ } \ LHASH_OF(type) +# define DEFINE_LHASH_OF(type) \ + DEFINE_LHASH_OF_EX(type); \ + DEFINE_LHASH_OF_DEPRECATED(type) \ + LHASH_OF(type) + #define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ int_implement_lhash_doall(type, argtype, const type) @@ -240,17 +341,26 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); int_implement_lhash_doall(type, argtype, type) #define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype##_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG fn) \ + { \ + void (*fn_conv)(cbargtype *, argtype *) = (void (*)(cbargtype *, argtype *))fn; \ + fn_conv((cbargtype *)node, (argtype *)arg); \ + } \ static ossl_unused ossl_inline void \ lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ void (*fn)(cbargtype *, argtype *), \ argtype *arg) \ { \ - OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNCARG)fn, (void *)arg); \ + OPENSSL_LH_doall_arg_thunk((OPENSSL_LHASH *)lh, \ + lh_##type##_doall_##argtype##_thunk, \ + (OPENSSL_LH_DOALL_FUNCARG)fn, \ + (void *)arg); \ } \ LHASH_OF(type) DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); -#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp)), lh_OPENSSL_STRING_hash_thunk, lh_OPENSSL_STRING_comp_thunk, lh_OPENSSL_STRING_doall_thunk, lh_OPENSSL_STRING_doall_arg_thunk)) #define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) @@ -265,7 +375,7 @@ DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); #define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) #define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); -#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp)), lh_OPENSSL_CSTRING_hash_thunk, lh_OPENSSL_CSTRING_comp_thunk, lh_OPENSSL_CSTRING_doall_thunk, lh_OPENSSL_CSTRING_doall_arg_thunk)) #define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/opensslv.h index 5fb5bc63056fe0..71a357701fd5e3 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/opensslv.h @@ -28,8 +28,8 @@ extern "C" { * These macros express version number MAJOR.MINOR.PATCH exactly */ # define OPENSSL_VERSION_MAJOR 3 -# define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 17 +# define OPENSSL_VERSION_MINOR 5 +# define OPENSSL_VERSION_PATCH 2 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.17" -# define OPENSSL_FULL_VERSION_STR "3.0.17" +# define OPENSSL_VERSION_STR "3.5.2" +# define OPENSSL_FULL_VERSION_STR "3.5.2" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "1 Jul 2025" +# define OPENSSL_RELEASE_DATE "5 Aug 2025" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.17 1 Jul 2025" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.2 5 Aug 2025" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/pkcs12.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/pkcs12.h index c5e0cab06491ec..0809645dad0bbf 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/pkcs12.h +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/pkcs12.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/pkcs12.h.in * - * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -41,6 +44,7 @@ extern "C" { # define PKCS12_MAC_KEY_LENGTH 20 +/* The macro is expected to be used only internally. Kept for backwards compatibility. */ # define PKCS12_SALT_LEN 8 /* It's not clear if these are actually needed... */ @@ -130,7 +134,9 @@ int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); const STACK_OF(PKCS12_SAFEBAG) * PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); @@ -218,6 +224,7 @@ ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); const STACK_OF(X509_ATTRIBUTE) * PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, const char *pass, int passlen, const unsigned char *in, int inlen, @@ -285,6 +292,9 @@ int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, unsigned char *salt, int saltlen, int iter, const EVP_MD *md_type); +int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type, const char *prf_md_name); int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, int saltlen, const EVP_MD *md_type); unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, @@ -305,6 +315,7 @@ DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) void PKCS12_PBE_add(void); int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype); @@ -312,6 +323,11 @@ PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype, OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/pkcs7.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/pkcs7.h index 0ce79bf4fa160e..fa68462aff973b 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/pkcs7.h +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/pkcs7.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/pkcs7.h.in * - * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -28,6 +28,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -131,8 +134,8 @@ SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INF typedef struct pkcs7_signed_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; struct pkcs7_st *contents; } PKCS7_SIGNED; @@ -158,8 +161,8 @@ typedef struct pkcs7_enveloped_st { typedef struct pkcs7_signedandenveloped_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; PKCS7_ENC_CONTENT *enc_data; STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; @@ -200,7 +203,7 @@ typedef struct pkcs7_st { /* NID_pkcs7_data */ ASN1_OCTET_STRING *data; /* NID_pkcs7_signed */ - PKCS7_SIGNED *sign; + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ /* NID_pkcs7_enveloped */ PKCS7_ENVELOPE *enveloped; /* NID_pkcs7_signedAndEnveloped */ @@ -341,13 +344,13 @@ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, const EVP_MD *dgst); int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); -int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); -int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); int PKCS7_content_new(PKCS7 *p7, int nid); int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, - X509 *x509); + X509 *signer); BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/ssl.h index 3df725c56d6c5e..7e3d89c7ef3dc9 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/ssl.h +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/ssl.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/ssl.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -24,6 +24,7 @@ # endif # include +# include # include # include # include @@ -42,6 +43,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -231,10 +235,8 @@ typedef struct ssl_cipher_st SSL_CIPHER; typedef struct ssl_session_st SSL_SESSION; typedef struct tls_sigalgs_st TLS_SIGALGS; typedef struct ssl_conf_ctx_st SSL_CONF_CTX; -typedef struct ssl_comp_st SSL_COMP; STACK_OF(SSL_CIPHER); -STACK_OF(SSL_COMP); /* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ typedef struct srtp_protection_profile_st { @@ -278,28 +280,31 @@ typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, /* Extension context codes */ /* This extension is only allowed in TLS */ -#define SSL_EXT_TLS_ONLY 0x0001 +#define SSL_EXT_TLS_ONLY 0x00001 /* This extension is only allowed in DTLS */ -#define SSL_EXT_DTLS_ONLY 0x0002 +#define SSL_EXT_DTLS_ONLY 0x00002 /* Some extensions may be allowed in DTLS but we don't implement them for it */ -#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 /* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ -#define SSL_EXT_SSL3_ALLOWED 0x0008 +#define SSL_EXT_SSL3_ALLOWED 0x00008 /* Extension is only defined for TLS1.2 and below */ -#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 /* Extension is only defined for TLS1.3 and above */ -#define SSL_EXT_TLS1_3_ONLY 0x0020 +#define SSL_EXT_TLS1_3_ONLY 0x00020 /* Ignore this extension during parsing if we are resuming */ -#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 -#define SSL_EXT_CLIENT_HELLO 0x0080 +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 /* Really means TLS1.2 or below */ -#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 -#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 -#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 -#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 -#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 -#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 -#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 /* Typedefs for handling custom extensions */ @@ -404,7 +409,7 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); */ # define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_BIT(22) /* - * If set, a server will allow a client to issue a SSLv3.0 version + * If set, a server will allow a client to issue an SSLv3.0 version * number as latest version supported in the premaster secret, even when * TLSv1.0 (version 3.1) was announced in the client hello. Normally * this is forbidden to prevent version rollback attacks. @@ -430,6 +435,19 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); * interoperability with CryptoPro CSP 3.x */ # define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +# define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +# define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) + /* Enable KTLS TX zerocopy on Linux */ +# define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) + +#define SSL_OP_PREFER_NO_DHE_KEX SSL_OP_BIT(35) /* * Option "collections." @@ -574,6 +592,8 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); # define CERT_PKEY_CERT_TYPE 0x400 /* Cert chain suitable to Suite B */ # define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +# define CERT_PKEY_RPK 0x1000 # define SSL_CONF_FLAG_CMDLINE 0x1 # define SSL_CONF_FLAG_FILE 0x2 @@ -965,6 +985,7 @@ uint32_t SSL_get_recv_max_early_data(const SSL *s); # include /* This is mostly sslv3 with a few tweaks */ # include /* Datagram TLS */ # include /* Support for the use_srtp extension */ +# include #ifdef __cplusplus extern "C" { @@ -1000,32 +1021,6 @@ SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) #define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) #define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) #define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) -SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) -#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) -#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) -#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) -#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) -#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) -#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) -#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) -#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) -#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) -#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) -#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) /* compatibility */ @@ -1066,6 +1061,7 @@ typedef enum { DTLS_ST_CR_HELLO_VERIFY_REQUEST, TLS_ST_CR_SRVR_HELLO, TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, TLS_ST_CR_CERT_STATUS, TLS_ST_CR_KEY_EXCH, TLS_ST_CR_CERT_REQ, @@ -1075,6 +1071,7 @@ typedef enum { TLS_ST_CR_FINISHED, TLS_ST_CW_CLNT_HELLO, TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, TLS_ST_CW_KEY_EXCH, TLS_ST_CW_CERT_VRFY, TLS_ST_CW_CHANGE, @@ -1085,10 +1082,12 @@ typedef enum { DTLS_ST_SW_HELLO_VERIFY_REQUEST, TLS_ST_SW_SRVR_HELLO, TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, TLS_ST_SW_KEY_EXCH, TLS_ST_SW_CERT_REQ, TLS_ST_SW_SRVR_DONE, TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, TLS_ST_SR_KEY_EXCH, TLS_ST_SR_CERT_VRFY, TLS_ST_SR_NEXT_PROTO, @@ -1380,9 +1379,13 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_CTRL_GET_SIGNATURE_NID 132 # define SSL_CTRL_GET_TMP_KEY 133 # define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +# define SSL_CTRL_GET_IANA_GROUPS 135 # define SSL_CTRL_SET_RETRY_VERIFY 136 # define SSL_CTRL_GET_VERIFY_CERT_STORE 137 # define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +# define SSL_CTRL_GET0_IMPLEMENTED_GROUPS 139 +# define SSL_CTRL_GET_SIGNATURE_NAME 140 +# define SSL_CTRL_GET_PEER_SIGNATURE_NAME 141 # define SSL_CERT_SET_FIRST 1 # define SSL_CERT_SET_NEXT 2 # define SSL_CERT_SET_SERVER 3 @@ -1485,10 +1488,15 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get1_groups(s, glist) \ SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_IANA_GROUPS,0,(uint16_t **)(plst)) # define SSL_CTX_set1_groups(ctx, glist, glistlen) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) # define SSL_CTX_set1_groups_list(ctx, s) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s)) +# define SSL_CTX_get0_implemented_groups(ctx, all, out) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET0_IMPLEMENTED_GROUPS, all, \ + (STACK_OF(OPENSSL_CSTRING) *)(out)) # define SSL_set1_groups(s, glist, glistlen) \ SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist)) # define SSL_set1_groups_list(s, str) \ @@ -1520,8 +1528,12 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) (char *)(clist)) # define SSL_set1_client_certificate_types(s, clist, clistlen) \ SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist)) +# define SSL_get0_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn) +# define SSL_get0_peer_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_peer_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) # define SSL_get_peer_tmp_key(s, pk) \ @@ -1549,6 +1561,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get_max_proto_version(s) \ SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +const char *SSL_get0_group_name(SSL *s); const char *SSL_group_to_name(SSL *s, int id); /* Backwards compatibility, original 1.1.0 names */ @@ -1613,7 +1626,11 @@ void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); __owur int SSL_want(const SSL *s); __owur int SSL_clear(SSL *s); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()") void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); +#endif +void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm); __owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); __owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); @@ -1725,13 +1742,21 @@ __owur const char *SSL_state_string(const SSL *s); __owur const char *SSL_rstate_string(const SSL *s); __owur const char *SSL_state_string_long(const SSL *s); __owur const char *SSL_rstate_string_long(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_get_time_ex()") __owur long SSL_SESSION_get_time(const SSL_SESSION *s); +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_set_time_ex()") __owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +#endif __owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); __owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); __owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); __owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); +__owur time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s); +__owur time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t); + __owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); __owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, @@ -1783,6 +1808,9 @@ __owur int SSL_has_matching_session_id(const SSL *s, unsigned int id_len); SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); # ifdef OPENSSL_X509_H __owur X509 *SSL_get0_peer_certificate(const SSL *s); @@ -1840,6 +1868,8 @@ __owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, SSL *SSL_new(SSL_CTX *ctx); int SSL_up_ref(SSL *s); int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); __owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, unsigned int sid_ctx_len); @@ -1848,8 +1878,8 @@ __owur int SSL_set_purpose(SSL *ssl, int purpose); __owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); __owur int SSL_set_trust(SSL *ssl, int trust); -__owur int SSL_set1_host(SSL *s, const char *hostname); -__owur int SSL_add1_host(SSL *s, const char *hostname); +__owur int SSL_set1_host(SSL *s, const char *host); +__owur int SSL_add1_host(SSL *s, const char *host); __owur const char *SSL_get0_peername(SSL *s); void SSL_set_hostflags(SSL *s, unsigned int flags); @@ -1924,6 +1954,11 @@ OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg); void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, void *arg); +typedef int (*SSL_new_pending_conn_cb_fn) (SSL_CTX *ctx, SSL *new_ssl, + void *arg); +void SSL_CTX_set_new_pending_conn_cb(SSL_CTX *c, SSL_new_pending_conn_cb_fn cb, + void *arg); + int SSL_client_hello_isv2(SSL *s); unsigned int SSL_client_hello_get0_legacy_version(SSL *s); size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); @@ -1932,6 +1967,8 @@ size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); size_t SSL_client_hello_get0_compression_methods(SSL *s, const unsigned char **out); int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); int SSL_client_hello_get0_ext(SSL *s, unsigned int type, const unsigned char **out, size_t *outlen); @@ -1978,6 +2015,12 @@ long SSL_callback_ctrl(SSL *, int, void (*)(void)); long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); +# define SSL_WRITE_FLAG_CONCLUDE (1U << 0) + +__owur int SSL_write_ex2(SSL *s, const void *buf, size_t num, + uint64_t flags, + size_t *written); + # define SSL_EARLY_DATA_NOT_SENT 0 # define SSL_EARLY_DATA_REJECTED 1 # define SSL_EARLY_DATA_ACCEPTED 2 @@ -1986,6 +2029,7 @@ __owur int SSL_get_early_data_status(const SSL *s); __owur int SSL_get_error(const SSL *s, int ret_code); __owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); /* This sets the 'default' SSL version that SSL_new() will create */ # ifndef OPENSSL_NO_DEPRECATED_3_0 @@ -2281,6 +2325,8 @@ void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); +int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size, + size_t hs_block_size); int SSL_set_record_padding_callback(SSL *ssl, size_t (*cb) (SSL *ssl, int type, @@ -2288,12 +2334,255 @@ int SSL_set_record_padding_callback(SSL *ssl, void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); void *SSL_get_record_padding_callback_arg(const SSL *ssl); int SSL_set_block_padding(SSL *ssl, size_t block_size); - +int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size, + size_t hs_block_size); int SSL_set_num_tickets(SSL *s, size_t num_tickets); size_t SSL_get_num_tickets(const SSL *s); int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +__owur int SSL_is_listener(SSL *ssl); +__owur SSL *SSL_get0_listener(SSL *s); +#define SSL_LISTENER_FLAG_NO_VALIDATE (1UL << 1) +__owur SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags); +__owur SSL *SSL_new_listener_from(SSL *ssl, uint64_t flags); +__owur SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags); +#define SSL_ACCEPT_CONNECTION_NO_BLOCK (1UL << 0) +__owur SSL *SSL_accept_connection(SSL *ssl, uint64_t flags); +__owur size_t SSL_get_accept_connection_queue_len(SSL *ssl); +__owur int SSL_listen(SSL *ssl); + +__owur int SSL_is_domain(SSL *s); +__owur SSL *SSL_get0_domain(SSL *s); +__owur SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags); + +#define SSL_DOMAIN_FLAG_SINGLE_THREAD (1U << 0) +#define SSL_DOMAIN_FLAG_MULTI_THREAD (1U << 1) +#define SSL_DOMAIN_FLAG_THREAD_ASSISTED (1U << 2) +#define SSL_DOMAIN_FLAG_BLOCKING (1U << 3) +#define SSL_DOMAIN_FLAG_LEGACY_BLOCKING (1U << 4) + +__owur int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t domain_flags); +__owur int SSL_CTX_get_domain_flags(const SSL_CTX *ctx, uint64_t *domain_flags); +__owur int SSL_get_domain_flags(const SSL *ssl, uint64_t *domain_flags); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +# ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +# endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + +# define SSL_VALUE_CLASS_GENERIC 0 +# define SSL_VALUE_CLASS_FEATURE_REQUEST 1 +# define SSL_VALUE_CLASS_FEATURE_PEER_REQUEST 2 +# define SSL_VALUE_CLASS_FEATURE_NEGOTIATED 3 + +# define SSL_VALUE_NONE 0 +# define SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL 1 +# define SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL 2 +# define SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL 3 +# define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL 4 +# define SSL_VALUE_QUIC_IDLE_TIMEOUT 5 +# define SSL_VALUE_EVENT_HANDLING_MODE 6 +# define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7 +# define SSL_VALUE_STREAM_WRITE_BUF_USED 8 +# define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9 + +# define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0 +# define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1 +# define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT 2 + +int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v); +int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v); + +# define SSL_get_generic_value_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_set_generic_value_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_get_feature_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_set_feature_request_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_get_feature_peer_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, (id), (v)) +# define SSL_get_feature_negotiated_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_NEGOTIATED, (id), (v)) + +# define SSL_get_quic_stream_bidi_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_bidi_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, \ + (value)) + +# define SSL_get_event_handling_mode(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) +# define SSL_set_event_handling_mode(ssl, value) \ + SSL_set_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) + +# define SSL_get_stream_write_buf_size(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_SIZE, \ + (value)) +# define SSL_get_stream_write_buf_used(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_USED, \ + (value)) +# define SSL_get_stream_write_buf_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_AVAIL, \ + (value)) + +# define SSL_POLL_EVENT_NONE 0 + +# define SSL_POLL_EVENT_F (1U << 0) /* F (Failure) */ +# define SSL_POLL_EVENT_EL (1U << 1) /* EL (Exception on Listener) */ +# define SSL_POLL_EVENT_EC (1U << 2) /* EC (Exception on Conn) */ +# define SSL_POLL_EVENT_ECD (1U << 3) /* ECD (Exception on Conn Drained) */ +# define SSL_POLL_EVENT_ER (1U << 4) /* ER (Exception on Read) */ +# define SSL_POLL_EVENT_EW (1U << 5) /* EW (Exception on Write) */ +# define SSL_POLL_EVENT_R (1U << 6) /* R (Readable) */ +# define SSL_POLL_EVENT_W (1U << 7) /* W (Writable) */ +# define SSL_POLL_EVENT_IC (1U << 8) /* IC (Incoming Connection) */ +# define SSL_POLL_EVENT_ISB (1U << 9) /* ISB (Incoming Stream: Bidi) */ +# define SSL_POLL_EVENT_ISU (1U << 10) /* ISU (Incoming Stream: Uni) */ +# define SSL_POLL_EVENT_OSB (1U << 11) /* OSB (Outgoing Stream: Bidi) */ +# define SSL_POLL_EVENT_OSU (1U << 12) /* OSU (Outgoing Stream: Uni) */ + +# define SSL_POLL_EVENT_RW (SSL_POLL_EVENT_R | SSL_POLL_EVENT_W) +# define SSL_POLL_EVENT_RE (SSL_POLL_EVENT_R | SSL_POLL_EVENT_ER) +# define SSL_POLL_EVENT_WE (SSL_POLL_EVENT_W | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_RWE (SSL_POLL_EVENT_RE | SSL_POLL_EVENT_WE) +# define SSL_POLL_EVENT_E (SSL_POLL_EVENT_EL | SSL_POLL_EVENT_EC \ + | SSL_POLL_EVENT_ER | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_IS (SSL_POLL_EVENT_ISB | SSL_POLL_EVENT_ISU) +# define SSL_POLL_EVENT_ISE (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_EC) +# define SSL_POLL_EVENT_I (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_IC) +# define SSL_POLL_EVENT_OS (SSL_POLL_EVENT_OSB | SSL_POLL_EVENT_OSU) +# define SSL_POLL_EVENT_OSE (SSL_POLL_EVENT_OS | SSL_POLL_EVENT_EC) + +typedef struct ssl_poll_item_st { + BIO_POLL_DESCRIPTOR desc; + uint64_t events, revents; +} SSL_POLL_ITEM; + +# define SSL_POLL_FLAG_NO_HANDLE_EVENTS (1U << 0) + +__owur int SSL_poll(SSL_POLL_ITEM *items, + size_t num_items, + size_t stride, + const struct timeval *timeout, + uint64_t flags, + size_t *result_count); + +static ossl_inline ossl_unused BIO_POLL_DESCRIPTOR +SSL_as_poll_descriptor(SSL *s) +{ + BIO_POLL_DESCRIPTOR d; + + d.type = BIO_POLL_DESCRIPTOR_TYPE_SSL; + d.value.ssl = s; + return d; +} + # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define SSL_cache_hit(s) SSL_session_reused(s) # endif @@ -2593,6 +2882,51 @@ void SSL_set_allow_early_data_cb(SSL *s, const char *OSSL_default_cipher_list(void); const char *OSSL_default_ciphersuites(void); +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + +/* + * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used. + */ +# define OSSL_RECORD_PROTECTION_LEVEL_NONE 0 +# define OSSL_RECORD_PROTECTION_LEVEL_EARLY 1 +# define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE 2 +# define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3 + +int SSL_set_quic_tls_cbs(SSL *s, const OSSL_DISPATCH *qtdis, void *arg); +int SSL_set_quic_tls_transport_params(SSL *s, + const unsigned char *params, + size_t params_len); + +int SSL_set_quic_tls_early_data_enabled(SSL *s, int enabled); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/x509.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/x509.h index 1f7755e5b69c75..d013458c226461 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/x509.h +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/x509.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -40,6 +40,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -162,16 +165,24 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) # define X509_FILETYPE_ASN1 2 # define X509_FILETYPE_DEFAULT 3 -# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 -# define X509v3_KU_NON_REPUDIATION 0x0040 -# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 -# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 -# define X509v3_KU_KEY_AGREEMENT 0x0008 -# define X509v3_KU_KEY_CERT_SIGN 0x0004 -# define X509v3_KU_CRL_SIGN 0x0002 -# define X509v3_KU_ENCIPHER_ONLY 0x0001 -# define X509v3_KU_DECIPHER_ONLY 0x8000 -# define X509v3_KU_UNDEF 0xffff +/*- + * : + * The KeyUsage BITSTRING is treated as a little-endian integer, hence bit `0` + * is 0x80, while bit `7` is 0x01 (the LSB of the integer value), bit `8` is + * then the MSB of the second octet, or 0x8000. + */ +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 /* (0) */ +# define X509v3_KU_NON_REPUDIATION 0x0040 /* (1) */ +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 /* (2) */ +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 /* (3) */ +# define X509v3_KU_KEY_AGREEMENT 0x0008 /* (4) */ +# define X509v3_KU_KEY_CERT_SIGN 0x0004 /* (5) */ +# define X509v3_KU_CRL_SIGN 0x0002 /* (6) */ +# define X509v3_KU_ENCIPHER_ONLY 0x0001 /* (7) */ +# define X509v3_KU_DECIPHER_ONLY 0x8000 /* (8) */ +# ifndef OPENSSL_NO_DEPRECATED_3_4 +# define X509v3_KU_UNDEF 0xffff /* vestigial, not used */ +# endif struct X509_algor_st { ASN1_OBJECT *algorithm; @@ -462,7 +473,12 @@ typedef struct PBKDF2PARAM_st { X509_ALGOR *prf; } PBKDF2PARAM; -#ifndef OPENSSL_NO_SCRYPT +typedef struct { + X509_ALGOR *keyDerivationFunc; + X509_ALGOR *messageAuthScheme; +} PBMAC1PARAM; + +# ifndef OPENSSL_NO_SCRYPT typedef struct SCRYPT_PARAMS_st { ASN1_OCTET_STRING *salt; ASN1_INTEGER *costParameter; @@ -470,7 +486,7 @@ typedef struct SCRYPT_PARAMS_st { ASN1_INTEGER *parallelizationParameter; ASN1_INTEGER *keyLength; } SCRYPT_PARAMS; -#endif +# endif #ifdef __cplusplus } @@ -603,6 +619,8 @@ EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); # endif @@ -651,6 +669,8 @@ EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); DECLARE_ASN1_DUP_FUNCTION(X509) @@ -884,12 +904,12 @@ int X509_REQ_get_signature_nid(const X509_REQ *req); int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); -EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); int X509_REQ_extension_nid(int nid); int *X509_REQ_get_extension_nids(void); void X509_REQ_set_extension_nids(int *nids); -STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(OSSL_FUTURE_CONST X509_REQ *req); int X509_REQ_add_extensions_nid(X509_REQ *req, const STACK_OF(X509_EXTENSION) *exts, int nid); int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); @@ -950,13 +970,14 @@ X509_REVOKED_get0_extensions(const X509_REVOKED *r); X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); -int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); -int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey); +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); int X509_chain_check_suiteb(int *perror_depth, X509 *x, STACK_OF(X509) *chain, unsigned long flags); int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); @@ -1077,6 +1098,8 @@ X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, X509_EXTENSION *ex, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_extensions(STACK_OF(X509_EXTENSION) **target, + const STACK_OF(X509_EXTENSION) *exts); int X509_get_ext_count(const X509 *x); int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); @@ -1198,9 +1221,10 @@ X509 *X509_find_by_subject(STACK_OF(X509) *sk, const X509_NAME *name); DECLARE_ASN1_FUNCTIONS(PBEPARAM) DECLARE_ASN1_FUNCTIONS(PBE2PARAM) DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) -#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(PBMAC1PARAM) +# ifndef OPENSSL_NO_SCRYPT DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) -#endif +# endif int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, const unsigned char *salt, int saltlen); @@ -1237,6 +1261,7 @@ X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, int prf_nid, int keylen, OSSL_LIB_CTX *libctx); +PBKDF2PARAM *PBMAC1_get1_pbkdf2_param(const X509_ALGOR *macalg); /* PKCS#8 utilities */ DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) @@ -1262,6 +1287,8 @@ int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len); +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, int ptype, void *pval, unsigned char *penc, int penclen); diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/x509_acert.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/x509_acert.h new file mode 100644 index 00000000000000..9dde625677f9a9 --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/x509_acert.h @@ -0,0 +1,294 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/x509_acert.h.in + * + * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_X509_ACERT_H +# define OPENSSL_X509_ACERT_H +# pragma once + +# include +# include +# include + +typedef struct X509_acert_st X509_ACERT; +typedef struct X509_acert_info_st X509_ACERT_INFO; +typedef struct ossl_object_digest_info_st OSSL_OBJECT_DIGEST_INFO; +typedef struct ossl_issuer_serial_st OSSL_ISSUER_SERIAL; +typedef struct X509_acert_issuer_v2form_st X509_ACERT_ISSUER_V2FORM; + +DECLARE_ASN1_FUNCTIONS(X509_ACERT) +DECLARE_ASN1_DUP_FUNCTION(X509_ACERT) +DECLARE_ASN1_ITEM(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_OBJECT_DIGEST_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_ISSUER_SERIAL) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_ISSUER_V2FORM) + +# ifndef OPENSSL_NO_STDIO +X509_ACERT *d2i_X509_ACERT_fp(FILE *fp, X509_ACERT **acert); +int i2d_X509_ACERT_fp(FILE *fp, const X509_ACERT *acert); +# endif + +DECLARE_PEM_rw(X509_ACERT, X509_ACERT) + +X509_ACERT *d2i_X509_ACERT_bio(BIO *bp, X509_ACERT **acert); +int i2d_X509_ACERT_bio(BIO *bp, const X509_ACERT *acert); + +int X509_ACERT_sign(X509_ACERT *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_ACERT_sign_ctx(X509_ACERT *x, EVP_MD_CTX *ctx); +int X509_ACERT_verify(X509_ACERT *a, EVP_PKEY *r); + +# define X509_ACERT_VERSION_2 1 + +const GENERAL_NAMES *X509_ACERT_get0_holder_entityName(const X509_ACERT *x); +const OSSL_ISSUER_SERIAL *X509_ACERT_get0_holder_baseCertId(const X509_ACERT *x); +const OSSL_OBJECT_DIGEST_INFO * X509_ACERT_get0_holder_digest(const X509_ACERT *x); +const X509_NAME *X509_ACERT_get0_issuerName(const X509_ACERT *x); +long X509_ACERT_get_version(const X509_ACERT *x); +void X509_ACERT_get0_signature(const X509_ACERT *x, + const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_ACERT_get_signature_nid(const X509_ACERT *x); +const X509_ALGOR *X509_ACERT_get0_info_sigalg(const X509_ACERT *x); +const ASN1_INTEGER *X509_ACERT_get0_serialNumber(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notBefore(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notAfter(const X509_ACERT *x); +const ASN1_BIT_STRING *X509_ACERT_get0_issuerUID(const X509_ACERT *x); + +int X509_ACERT_print(BIO *bp, X509_ACERT *x); +int X509_ACERT_print_ex(BIO *bp, X509_ACERT *x, unsigned long nmflags, + unsigned long cflag); + +int X509_ACERT_get_attr_count(const X509_ACERT *x); +int X509_ACERT_get_attr_by_NID(const X509_ACERT *x, int nid, int lastpos); +int X509_ACERT_get_attr_by_OBJ(const X509_ACERT *x, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_ACERT_get_attr(const X509_ACERT *x, int loc); +X509_ATTRIBUTE *X509_ACERT_delete_attr(X509_ACERT *x, int loc); + +void *X509_ACERT_get_ext_d2i(const X509_ACERT *x, int nid, int *crit, int *idx); +int X509_ACERT_add1_ext_i2d(X509_ACERT *x, int nid, void *value, int crit, + unsigned long flags); +const STACK_OF(X509_EXTENSION) *X509_ACERT_get0_extensions(const X509_ACERT *x); + +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY 0 +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY_CERT 1 +# define OSSL_OBJECT_DIGEST_INFO_OTHER 2 /* must not be used in RFC 5755 profile */ +int X509_ACERT_set_version(X509_ACERT *x, long version); +void X509_ACERT_set0_holder_entityName(X509_ACERT *x, GENERAL_NAMES *name); +void X509_ACERT_set0_holder_baseCertId(X509_ACERT *x, OSSL_ISSUER_SERIAL *isss); +void X509_ACERT_set0_holder_digest(X509_ACERT *x, + OSSL_OBJECT_DIGEST_INFO *dinfo); + +int X509_ACERT_add1_attr(X509_ACERT *x, X509_ATTRIBUTE *attr); +int X509_ACERT_add1_attr_by_OBJ(X509_ACERT *x, const ASN1_OBJECT *obj, + int type, const void *bytes, int len); +int X509_ACERT_add1_attr_by_NID(X509_ACERT *x, int nid, int type, + const void *bytes, int len); +int X509_ACERT_add1_attr_by_txt(X509_ACERT *x, const char *attrname, int type, + const unsigned char *bytes, int len); +int X509_ACERT_add_attr_nconf(CONF *conf, const char *section, + X509_ACERT *acert); + +int X509_ACERT_set1_issuerName(X509_ACERT *x, const X509_NAME *name); +int X509_ACERT_set1_serialNumber(X509_ACERT *x, const ASN1_INTEGER *serial); +int X509_ACERT_set1_notBefore(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); +int X509_ACERT_set1_notAfter(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); + +void OSSL_OBJECT_DIGEST_INFO_get0_digest(const OSSL_OBJECT_DIGEST_INFO *o, + int *digestedObjectType, + const X509_ALGOR **digestAlgorithm, + const ASN1_BIT_STRING **digest); + +int OSSL_OBJECT_DIGEST_INFO_set1_digest(OSSL_OBJECT_DIGEST_INFO *o, + int digestedObjectType, + X509_ALGOR *digestAlgorithm, + ASN1_BIT_STRING *digest); + +const X509_NAME *OSSL_ISSUER_SERIAL_get0_issuer(const OSSL_ISSUER_SERIAL *isss); +const ASN1_INTEGER *OSSL_ISSUER_SERIAL_get0_serial(const OSSL_ISSUER_SERIAL *isss); +const ASN1_BIT_STRING *OSSL_ISSUER_SERIAL_get0_issuerUID(const OSSL_ISSUER_SERIAL *isss); + +int OSSL_ISSUER_SERIAL_set1_issuer(OSSL_ISSUER_SERIAL *isss, + const X509_NAME *issuer); +int OSSL_ISSUER_SERIAL_set1_serial(OSSL_ISSUER_SERIAL *isss, + const ASN1_INTEGER *serial); +int OSSL_ISSUER_SERIAL_set1_issuerUID(OSSL_ISSUER_SERIAL *isss, + const ASN1_BIT_STRING *uid); + +# define OSSL_IETFAS_OCTETS 0 +# define OSSL_IETFAS_OID 1 +# define OSSL_IETFAS_STRING 2 + +typedef struct OSSL_IETF_ATTR_SYNTAX_VALUE_st OSSL_IETF_ATTR_SYNTAX_VALUE; +typedef struct OSSL_IETF_ATTR_SYNTAX_st OSSL_IETF_ATTR_SYNTAX; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_value(sk, idx) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new(cmp) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_null() ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (n)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete(sk, i) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (i))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete_ptr(sk, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_pop(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_shift(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_shift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk),ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), (idx)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set(sk, idx, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_set(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), pnum) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_dup(sk) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_copyfunc_type(copyfunc), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set_cmp_func(sk, cmp) ((sk_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) + + +DECLARE_ASN1_ITEM(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX) + +const GENERAL_NAMES * +OSSL_IETF_ATTR_SYNTAX_get0_policyAuthority(const OSSL_IETF_ATTR_SYNTAX *a); +void OSSL_IETF_ATTR_SYNTAX_set0_policyAuthority(OSSL_IETF_ATTR_SYNTAX *a, + GENERAL_NAMES *names); + +int OSSL_IETF_ATTR_SYNTAX_get_value_num(const OSSL_IETF_ATTR_SYNTAX *a); +void *OSSL_IETF_ATTR_SYNTAX_get0_value(const OSSL_IETF_ATTR_SYNTAX *a, + int ind, int *type); +int OSSL_IETF_ATTR_SYNTAX_add1_value(OSSL_IETF_ATTR_SYNTAX *a, int type, + void *data); +int OSSL_IETF_ATTR_SYNTAX_print(BIO *bp, OSSL_IETF_ATTR_SYNTAX *a, int indent); + +struct TARGET_CERT_st { + OSSL_ISSUER_SERIAL *targetCertificate; + GENERAL_NAME *targetName; + OSSL_OBJECT_DIGEST_INFO *certDigestInfo; +}; + +typedef struct TARGET_CERT_st OSSL_TARGET_CERT; + +# define OSSL_TGT_TARGET_NAME 0 +# define OSSL_TGT_TARGET_GROUP 1 +# define OSSL_TGT_TARGET_CERT 2 + +typedef struct TARGET_st { + int type; + union { + GENERAL_NAME *targetName; + GENERAL_NAME *targetGroup; + OSSL_TARGET_CERT *targetCert; + } choice; +} OSSL_TARGET; + +typedef STACK_OF(OSSL_TARGET) OSSL_TARGETS; +typedef STACK_OF(OSSL_TARGETS) OSSL_TARGETING_INFORMATION; + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGET, OSSL_TARGET, OSSL_TARGET) +#define sk_OSSL_TARGET_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_value(sk, idx) ((OSSL_TARGET *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGET_sk_type(sk), (idx))) +#define sk_OSSL_TARGET_new(cmp) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new(ossl_check_OSSL_TARGET_compfunc_type(cmp))) +#define sk_OSSL_TARGET_new_null() ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGET_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGET_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGET_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGET_sk_type(sk), (n)) +#define sk_OSSL_TARGET_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_delete(sk, i) ((OSSL_TARGET *)OPENSSL_sk_delete(ossl_check_OSSL_TARGET_sk_type(sk), (i))) +#define sk_OSSL_TARGET_delete_ptr(sk, ptr) ((OSSL_TARGET *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_pop(sk) ((OSSL_TARGET *)OPENSSL_sk_pop(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_shift(sk) ((OSSL_TARGET *)OPENSSL_sk_shift(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGET_sk_type(sk),ossl_check_OSSL_TARGET_freefunc_type(freefunc)) +#define sk_OSSL_TARGET_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), (idx)) +#define sk_OSSL_TARGET_set(sk, idx, ptr) ((OSSL_TARGET *)OPENSSL_sk_set(ossl_check_OSSL_TARGET_sk_type(sk), (idx), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), pnum) +#define sk_OSSL_TARGET_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_dup(sk) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_copyfunc_type(copyfunc), ossl_check_OSSL_TARGET_freefunc_type(freefunc))) +#define sk_OSSL_TARGET_set_cmp_func(sk, cmp) ((sk_OSSL_TARGET_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGETS, OSSL_TARGETS, OSSL_TARGETS) +#define sk_OSSL_TARGETS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_value(sk, idx) ((OSSL_TARGETS *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGETS_sk_type(sk), (idx))) +#define sk_OSSL_TARGETS_new(cmp) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new(ossl_check_OSSL_TARGETS_compfunc_type(cmp))) +#define sk_OSSL_TARGETS_new_null() ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGETS_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGETS_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGETS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGETS_sk_type(sk), (n)) +#define sk_OSSL_TARGETS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_delete(sk, i) ((OSSL_TARGETS *)OPENSSL_sk_delete(ossl_check_OSSL_TARGETS_sk_type(sk), (i))) +#define sk_OSSL_TARGETS_delete_ptr(sk, ptr) ((OSSL_TARGETS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_pop(sk) ((OSSL_TARGETS *)OPENSSL_sk_pop(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_shift(sk) ((OSSL_TARGETS *)OPENSSL_sk_shift(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGETS_sk_type(sk),ossl_check_OSSL_TARGETS_freefunc_type(freefunc)) +#define sk_OSSL_TARGETS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), (idx)) +#define sk_OSSL_TARGETS_set(sk, idx, ptr) ((OSSL_TARGETS *)OPENSSL_sk_set(ossl_check_OSSL_TARGETS_sk_type(sk), (idx), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), pnum) +#define sk_OSSL_TARGETS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_dup(sk) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_copyfunc_type(copyfunc), ossl_check_OSSL_TARGETS_freefunc_type(freefunc))) +#define sk_OSSL_TARGETS_set_cmp_func(sk, cmp) ((sk_OSSL_TARGETS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_compfunc_type(cmp))) + + +DECLARE_ASN1_FUNCTIONS(OSSL_TARGET) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETS) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETING_INFORMATION) + +typedef STACK_OF(OSSL_ISSUER_SERIAL) OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL) +#define sk_OSSL_ISSUER_SERIAL_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_value(sk, idx) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_value(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), (idx))) +#define sk_OSSL_ISSUER_SERIAL_new(cmp) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) +#define sk_OSSL_ISSUER_SERIAL_new_null() ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ISSUER_SERIAL_new_reserve(cmp, n) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp), (n))) +#define sk_OSSL_ISSUER_SERIAL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (n)) +#define sk_OSSL_ISSUER_SERIAL_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_delete(sk, i) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (i))) +#define sk_OSSL_ISSUER_SERIAL_delete_ptr(sk, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_pop(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_pop(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_shift(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_shift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk),ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc)) +#define sk_OSSL_ISSUER_SERIAL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), (idx)) +#define sk_OSSL_ISSUER_SERIAL_set(sk, idx, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_set(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (idx), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), pnum) +#define sk_OSSL_ISSUER_SERIAL_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_dup(sk) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_copyfunc_type(copyfunc), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc))) +#define sk_OSSL_ISSUER_SERIAL_set_cmp_func(sk, cmp) ((sk_OSSL_ISSUER_SERIAL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) + + +#endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/x509_vfy.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/x509_vfy.h index 29b0e147adcab1..c9bdc3b39d685d 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/x509_vfy.h +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/x509_vfy.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509_vfy.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -411,6 +411,7 @@ X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ # define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 # define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 # define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +# define X509_V_ERR_RPK_UNTRUSTED 95 /* Certificate verify flags */ # ifndef OPENSSL_NO_DEPRECATED_1_1_0 @@ -491,71 +492,72 @@ int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); X509_STORE *X509_STORE_new(void); -void X509_STORE_free(X509_STORE *v); -int X509_STORE_lock(X509_STORE *ctx); -int X509_STORE_unlock(X509_STORE *ctx); -int X509_STORE_up_ref(X509_STORE *v); -STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *v); -STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *st); -STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get1_objects(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, const X509_NAME *nm); STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, const X509_NAME *nm); -int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); -int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); -int X509_STORE_set_trust(X509_STORE *ctx, int trust); -int X509_STORE_set1_param(X509_STORE *ctx, const X509_VERIFY_PARAM *pm); -X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *ctx); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); -void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); #define X509_STORE_set_verify_func(ctx, func) \ X509_STORE_set_verify((ctx),(func)) void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, X509_STORE_CTX_verify_fn verify); -X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *ctx); -void X509_STORE_set_verify_cb(X509_STORE *ctx, +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, X509_STORE_CTX_verify_cb verify_cb); # define X509_STORE_set_verify_cb_func(ctx,func) \ X509_STORE_set_verify_cb((ctx),(func)) -X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *ctx); -void X509_STORE_set_get_issuer(X509_STORE *ctx, +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, X509_STORE_CTX_get_issuer_fn get_issuer); -X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *ctx); -void X509_STORE_set_check_issued(X509_STORE *ctx, +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, X509_STORE_CTX_check_issued_fn check_issued); -X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *ctx); -void X509_STORE_set_check_revocation(X509_STORE *ctx, +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, X509_STORE_CTX_check_revocation_fn check_revocation); X509_STORE_CTX_check_revocation_fn - X509_STORE_get_check_revocation(const X509_STORE *ctx); -void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, X509_STORE_CTX_get_crl_fn get_crl); -X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *ctx); -void X509_STORE_set_check_crl(X509_STORE *ctx, +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, X509_STORE_CTX_check_crl_fn check_crl); -X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *ctx); -void X509_STORE_set_cert_crl(X509_STORE *ctx, +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, X509_STORE_CTX_cert_crl_fn cert_crl); -X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *ctx); -void X509_STORE_set_check_policy(X509_STORE *ctx, +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, X509_STORE_CTX_check_policy_fn check_policy); -X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *ctx); -void X509_STORE_set_lookup_certs(X509_STORE *ctx, +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, X509_STORE_CTX_lookup_certs_fn lookup_certs); -X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *ctx); -void X509_STORE_set_lookup_crls(X509_STORE *ctx, +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, X509_STORE_CTX_lookup_crls_fn lookup_crls); #define X509_STORE_set_lookup_crls_cb(ctx, func) \ X509_STORE_set_lookup_crls((ctx), (func)) -X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *ctx); -void X509_STORE_set_cleanup(X509_STORE *ctx, +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, X509_STORE_CTX_cleanup_fn cleanup); -X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); #define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) -int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); -void *X509_STORE_get_ex_data(const X509_STORE *ctx, int idx); +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); X509_STORE_CTX *X509_STORE_CTX_new(void); @@ -565,11 +567,14 @@ int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); void X509_STORE_CTX_free(X509_STORE_CTX *ctx); int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY* rpk); void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, @@ -579,6 +584,8 @@ X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); @@ -600,7 +607,7 @@ X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); # define X509_STORE_get1_crl X509_STORE_CTX_get1_crls #endif -X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); X509_LOOKUP_METHOD *X509_LOOKUP_file(void); X509_LOOKUP_METHOD *X509_LOOKUP_store(void); @@ -685,8 +692,8 @@ X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( const X509_LOOKUP_METHOD *method); -int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); -int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, @@ -730,23 +737,21 @@ void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); -int X509_STORE_load_file(X509_STORE *ctx, const char *file); -int X509_STORE_load_path(X509_STORE *ctx, const char *path); -int X509_STORE_load_store(X509_STORE *ctx, const char *store); -int X509_STORE_load_locations(X509_STORE *ctx, - const char *file, - const char *dir); -int X509_STORE_set_default_paths(X509_STORE *ctx); +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); -int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file, +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_store_ex(X509_STORE *ctx, const char *store, +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file, - const char *dir, OSSL_LIB_CTX *libctx, - const char *propq); -int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OSSL_LIB_CTX *libctx, - const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); #define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) @@ -764,6 +769,7 @@ X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); @@ -773,6 +779,8 @@ int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); @@ -804,6 +812,7 @@ int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, unsigned long flags); unsigned long X509_VERIFY_PARAM_get_flags(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_get_purpose(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/x509v3.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/x509v3.h index 20b67455f2061d..b8dabac35a4915 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/x509v3.h +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/x509v3.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509v3.h.in * - * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -146,6 +149,11 @@ typedef struct BASIC_CONSTRAINTS_st { ASN1_INTEGER *pathlen; } BASIC_CONSTRAINTS; +typedef struct OSSL_BASIC_ATTR_CONSTRAINTS_st { + int authority; + ASN1_INTEGER *pathlen; +} OSSL_BASIC_ATTR_CONSTRAINTS; + typedef struct PKEY_USAGE_PERIOD_st { ASN1_GENERALIZEDTIME *notBefore; ASN1_GENERALIZEDTIME *notAfter; @@ -198,6 +206,8 @@ typedef struct ACCESS_DESCRIPTION_st { GENERAL_NAME *location; } ACCESS_DESCRIPTION; +int GENERAL_NAME_set1_X509_NAME(GENERAL_NAME **tgt, const X509_NAME *src); + SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) #define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) #define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) @@ -294,6 +304,7 @@ typedef struct DIST_POINT_NAME_st { /* If relativename then this contains the full distribution point name */ X509_NAME *dpname; } DIST_POINT_NAME; +DECLARE_ASN1_DUP_FUNCTION(DIST_POINT_NAME) /* All existing reasons */ # define CRLDP_ALL_REASONS 0x807f @@ -659,15 +670,16 @@ struct ISSUING_DIST_POINT_st { # define EXFLAG_SAN_CRITICAL 0x80000 # define EXFLAG_NO_FINGERPRINT 0x100000 -# define KU_DIGITAL_SIGNATURE 0x0080 -# define KU_NON_REPUDIATION 0x0040 -# define KU_KEY_ENCIPHERMENT 0x0020 -# define KU_DATA_ENCIPHERMENT 0x0010 -# define KU_KEY_AGREEMENT 0x0008 -# define KU_KEY_CERT_SIGN 0x0004 -# define KU_CRL_SIGN 0x0002 -# define KU_ENCIPHER_ONLY 0x0001 -# define KU_DECIPHER_ONLY 0x8000 +/* https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3 */ +# define KU_DIGITAL_SIGNATURE X509v3_KU_DIGITAL_SIGNATURE +# define KU_NON_REPUDIATION X509v3_KU_NON_REPUDIATION +# define KU_KEY_ENCIPHERMENT X509v3_KU_KEY_ENCIPHERMENT +# define KU_DATA_ENCIPHERMENT X509v3_KU_DATA_ENCIPHERMENT +# define KU_KEY_AGREEMENT X509v3_KU_KEY_AGREEMENT +# define KU_KEY_CERT_SIGN X509v3_KU_KEY_CERT_SIGN +# define KU_CRL_SIGN X509v3_KU_CRL_SIGN +# define KU_ENCIPHER_ONLY X509v3_KU_ENCIPHER_ONLY +# define KU_DECIPHER_ONLY X509v3_KU_DECIPHER_ONLY # define NS_SSL_CLIENT 0x80 # define NS_SSL_SERVER 0x40 @@ -729,7 +741,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) #define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) - +# define X509_PURPOSE_DEFAULT_ANY 0 # define X509_PURPOSE_SSL_CLIENT 1 # define X509_PURPOSE_SSL_SERVER 2 # define X509_PURPOSE_NS_SSL_SERVER 3 @@ -739,9 +751,10 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509_PURPOSE_ANY 7 # define X509_PURPOSE_OCSP_HELPER 8 # define X509_PURPOSE_TIMESTAMP_SIGN 9 +# define X509_PURPOSE_CODE_SIGN 10 # define X509_PURPOSE_MIN 1 -# define X509_PURPOSE_MAX 9 +# define X509_PURPOSE_MAX 10 /* Flags for X509V3_EXT_print() */ @@ -767,6 +780,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509V3_ADD_SILENT 0x10 DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) +DECLARE_ASN1_FUNCTIONS(OSSL_BASIC_ATTR_CONSTRAINTS) DECLARE_ASN1_FUNCTIONS(SXNET) DECLARE_ASN1_FUNCTIONS(SXNETID) @@ -976,7 +990,6 @@ int X509V3_extensions_print(BIO *out, const char *title, int X509_check_ca(X509 *x); int X509_check_purpose(X509 *x, int id, int ca); int X509_supported_extension(X509_EXTENSION *ex); -int X509_PURPOSE_set(int *p, int purpose); int X509_check_issued(X509 *issuer, X509 *subject); int X509_check_akid(const X509 *issuer, const AUTHORITY_KEYID *akid); void X509_set_proxy_flag(X509 *x); @@ -992,22 +1005,26 @@ const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); int X509_PURPOSE_get_count(void); -X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_unused_id(OSSL_LIB_CTX *libctx); int X509_PURPOSE_get_by_sname(const char *sname); int X509_PURPOSE_get_by_id(int id); int X509_PURPOSE_add(int id, int trust, int flags, int (*ck) (const X509_PURPOSE *, const X509 *, int), const char *name, const char *sname, void *arg); +void X509_PURPOSE_cleanup(void); + +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_id(const X509_PURPOSE *); char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); -void X509_PURPOSE_cleanup(void); -int X509_PURPOSE_get_id(const X509_PURPOSE *); +int X509_PURPOSE_set(int *p, int purpose); STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); + /* Flags for X509_check_* functions */ /* @@ -1444,6 +1461,507 @@ const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( void PROFESSION_INFO_set0_registrationNumber( PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); +int OSSL_GENERAL_NAMES_print(BIO *out, GENERAL_NAMES *gens, int indent); + +typedef STACK_OF(X509_ATTRIBUTE) OSSL_ATTRIBUTES_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTES_SYNTAX) + +typedef STACK_OF(USERNOTICE) OSSL_USER_NOTICE_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_USER_NOTICE_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(USERNOTICE, USERNOTICE, USERNOTICE) +#define sk_USERNOTICE_num(sk) OPENSSL_sk_num(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_value(sk, idx) ((USERNOTICE *)OPENSSL_sk_value(ossl_check_const_USERNOTICE_sk_type(sk), (idx))) +#define sk_USERNOTICE_new(cmp) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new(ossl_check_USERNOTICE_compfunc_type(cmp))) +#define sk_USERNOTICE_new_null() ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_null()) +#define sk_USERNOTICE_new_reserve(cmp, n) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_reserve(ossl_check_USERNOTICE_compfunc_type(cmp), (n))) +#define sk_USERNOTICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_USERNOTICE_sk_type(sk), (n)) +#define sk_USERNOTICE_free(sk) OPENSSL_sk_free(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_zero(sk) OPENSSL_sk_zero(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_delete(sk, i) ((USERNOTICE *)OPENSSL_sk_delete(ossl_check_USERNOTICE_sk_type(sk), (i))) +#define sk_USERNOTICE_delete_ptr(sk, ptr) ((USERNOTICE *)OPENSSL_sk_delete_ptr(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_pop(sk) ((USERNOTICE *)OPENSSL_sk_pop(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_shift(sk) ((USERNOTICE *)OPENSSL_sk_shift(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_USERNOTICE_sk_type(sk),ossl_check_USERNOTICE_freefunc_type(freefunc)) +#define sk_USERNOTICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), (idx)) +#define sk_USERNOTICE_set(sk, idx, ptr) ((USERNOTICE *)OPENSSL_sk_set(ossl_check_USERNOTICE_sk_type(sk), (idx), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), pnum) +#define sk_USERNOTICE_sort(sk) OPENSSL_sk_sort(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_dup(sk) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_dup(ossl_check_const_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_deep_copy(ossl_check_const_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_copyfunc_type(copyfunc), ossl_check_USERNOTICE_freefunc_type(freefunc))) +#define sk_USERNOTICE_set_cmp_func(sk, cmp) ((sk_USERNOTICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_compfunc_type(cmp))) + + +typedef struct OSSL_ROLE_SPEC_CERT_ID_st { + GENERAL_NAME *roleName; + GENERAL_NAME *roleCertIssuer; + ASN1_INTEGER *roleCertSerialNumber; + GENERAL_NAMES *roleCertLocator; +} OSSL_ROLE_SPEC_CERT_ID; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID) +#define sk_OSSL_ROLE_SPEC_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_value(sk, idx) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_value(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new(cmp) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_null() ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_reserve(cmp, n) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp), (n))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (n)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete(sk, i) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (i))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete_ptr(sk, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_pop(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_shift(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_shift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk),ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), (idx)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set(sk, idx, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_set(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), pnum) +#define sk_OSSL_ROLE_SPEC_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_dup(sk) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_copyfunc_type(copyfunc), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set_cmp_func(sk, cmp) ((sk_OSSL_ROLE_SPEC_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) + + +typedef STACK_OF(OSSL_ROLE_SPEC_CERT_ID) OSSL_ROLE_SPEC_CERT_ID_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID_SYNTAX) +typedef struct OSSL_HASH_st { + X509_ALGOR *algorithmIdentifier; + ASN1_BIT_STRING *hashValue; +} OSSL_HASH; + +typedef struct OSSL_INFO_SYNTAX_POINTER_st { + GENERAL_NAMES *name; + OSSL_HASH *hash; +} OSSL_INFO_SYNTAX_POINTER; + +# define OSSL_INFO_SYNTAX_TYPE_CONTENT 0 +# define OSSL_INFO_SYNTAX_TYPE_POINTER 1 + +typedef struct OSSL_INFO_SYNTAX_st { + int type; + union { + ASN1_STRING *content; + OSSL_INFO_SYNTAX_POINTER *pointer; + } choice; +} OSSL_INFO_SYNTAX; + +typedef struct OSSL_PRIVILEGE_POLICY_ID_st { + ASN1_OBJECT *privilegePolicy; + OSSL_INFO_SYNTAX *privPolSyntax; +} OSSL_PRIVILEGE_POLICY_ID; + +typedef struct OSSL_ATTRIBUTE_DESCRIPTOR_st { + ASN1_OBJECT *identifier; + ASN1_STRING *attributeSyntax; + ASN1_UTF8STRING *name; + ASN1_UTF8STRING *description; + OSSL_PRIVILEGE_POLICY_ID *dominationRule; +} OSSL_ATTRIBUTE_DESCRIPTOR; + +DECLARE_ASN1_FUNCTIONS(OSSL_HASH) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX_POINTER) +DECLARE_ASN1_FUNCTIONS(OSSL_PRIVILEGE_POLICY_ID) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_DESCRIPTOR) + +typedef struct OSSL_TIME_SPEC_ABSOLUTE_st { + ASN1_GENERALIZEDTIME *startTime; + ASN1_GENERALIZEDTIME *endTime; +} OSSL_TIME_SPEC_ABSOLUTE; + +typedef struct OSSL_DAY_TIME_st { + ASN1_INTEGER *hour; + ASN1_INTEGER *minute; + ASN1_INTEGER *second; +} OSSL_DAY_TIME; + +typedef struct OSSL_DAY_TIME_BAND_st { + OSSL_DAY_TIME *startDayTime; + OSSL_DAY_TIME *endDayTime; +} OSSL_DAY_TIME_BAND; + +# define OSSL_NAMED_DAY_TYPE_INT 0 +# define OSSL_NAMED_DAY_TYPE_BIT 1 +# define OSSL_NAMED_DAY_INT_SUN 1 +# define OSSL_NAMED_DAY_INT_MON 2 +# define OSSL_NAMED_DAY_INT_TUE 3 +# define OSSL_NAMED_DAY_INT_WED 4 +# define OSSL_NAMED_DAY_INT_THU 5 +# define OSSL_NAMED_DAY_INT_FRI 6 +# define OSSL_NAMED_DAY_INT_SAT 7 +# define OSSL_NAMED_DAY_BIT_SUN 0 +# define OSSL_NAMED_DAY_BIT_MON 1 +# define OSSL_NAMED_DAY_BIT_TUE 2 +# define OSSL_NAMED_DAY_BIT_WED 3 +# define OSSL_NAMED_DAY_BIT_THU 4 +# define OSSL_NAMED_DAY_BIT_FRI 5 +# define OSSL_NAMED_DAY_BIT_SAT 6 + +typedef struct OSSL_NAMED_DAY_st { + int type; + union { + ASN1_INTEGER *intNamedDays; + ASN1_BIT_STRING *bitNamedDays; + } choice; +} OSSL_NAMED_DAY; + +# define OSSL_TIME_SPEC_X_DAY_OF_FIRST 0 +# define OSSL_TIME_SPEC_X_DAY_OF_SECOND 1 +# define OSSL_TIME_SPEC_X_DAY_OF_THIRD 2 +# define OSSL_TIME_SPEC_X_DAY_OF_FOURTH 3 +# define OSSL_TIME_SPEC_X_DAY_OF_FIFTH 4 + +typedef struct OSSL_TIME_SPEC_X_DAY_OF_st { + int type; + union { + OSSL_NAMED_DAY *first; + OSSL_NAMED_DAY *second; + OSSL_NAMED_DAY *third; + OSSL_NAMED_DAY *fourth; + OSSL_NAMED_DAY *fifth; + } choice; +} OSSL_TIME_SPEC_X_DAY_OF; + +# define OSSL_TIME_SPEC_DAY_TYPE_INT 0 +# define OSSL_TIME_SPEC_DAY_TYPE_BIT 1 +# define OSSL_TIME_SPEC_DAY_TYPE_DAY_OF 2 +# define OSSL_TIME_SPEC_DAY_BIT_SUN 0 +# define OSSL_TIME_SPEC_DAY_BIT_MON 1 +# define OSSL_TIME_SPEC_DAY_BIT_TUE 2 +# define OSSL_TIME_SPEC_DAY_BIT_WED 3 +# define OSSL_TIME_SPEC_DAY_BIT_THU 4 +# define OSSL_TIME_SPEC_DAY_BIT_FRI 5 +# define OSSL_TIME_SPEC_DAY_BIT_SAT 6 +# define OSSL_TIME_SPEC_DAY_INT_SUN 1 +# define OSSL_TIME_SPEC_DAY_INT_MON 2 +# define OSSL_TIME_SPEC_DAY_INT_TUE 3 +# define OSSL_TIME_SPEC_DAY_INT_WED 4 +# define OSSL_TIME_SPEC_DAY_INT_THU 5 +# define OSSL_TIME_SPEC_DAY_INT_FRI 6 +# define OSSL_TIME_SPEC_DAY_INT_SAT 7 + +typedef struct OSSL_TIME_SPEC_DAY_st { + int type; + union { + STACK_OF(ASN1_INTEGER) *intDay; + ASN1_BIT_STRING *bitDay; + OSSL_TIME_SPEC_X_DAY_OF *dayOf; + } choice; +} OSSL_TIME_SPEC_DAY; + +# define OSSL_TIME_SPEC_WEEKS_TYPE_ALL 0 +# define OSSL_TIME_SPEC_WEEKS_TYPE_INT 1 +# define OSSL_TIME_SPEC_WEEKS_TYPE_BIT 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_1 0 +# define OSSL_TIME_SPEC_BIT_WEEKS_2 1 +# define OSSL_TIME_SPEC_BIT_WEEKS_3 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_4 3 +# define OSSL_TIME_SPEC_BIT_WEEKS_5 4 + +typedef struct OSSL_TIME_SPEC_WEEKS_st { + int type; + union { + ASN1_NULL *allWeeks; + STACK_OF(ASN1_INTEGER) *intWeek; + ASN1_BIT_STRING *bitWeek; + } choice; +} OSSL_TIME_SPEC_WEEKS; + +# define OSSL_TIME_SPEC_MONTH_TYPE_ALL 0 +# define OSSL_TIME_SPEC_MONTH_TYPE_INT 1 +# define OSSL_TIME_SPEC_MONTH_TYPE_BIT 2 +# define OSSL_TIME_SPEC_INT_MONTH_JAN 1 +# define OSSL_TIME_SPEC_INT_MONTH_FEB 2 +# define OSSL_TIME_SPEC_INT_MONTH_MAR 3 +# define OSSL_TIME_SPEC_INT_MONTH_APR 4 +# define OSSL_TIME_SPEC_INT_MONTH_MAY 5 +# define OSSL_TIME_SPEC_INT_MONTH_JUN 6 +# define OSSL_TIME_SPEC_INT_MONTH_JUL 7 +# define OSSL_TIME_SPEC_INT_MONTH_AUG 8 +# define OSSL_TIME_SPEC_INT_MONTH_SEP 9 +# define OSSL_TIME_SPEC_INT_MONTH_OCT 10 +# define OSSL_TIME_SPEC_INT_MONTH_NOV 11 +# define OSSL_TIME_SPEC_INT_MONTH_DEC 12 +# define OSSL_TIME_SPEC_BIT_MONTH_JAN 0 +# define OSSL_TIME_SPEC_BIT_MONTH_FEB 1 +# define OSSL_TIME_SPEC_BIT_MONTH_MAR 2 +# define OSSL_TIME_SPEC_BIT_MONTH_APR 3 +# define OSSL_TIME_SPEC_BIT_MONTH_MAY 4 +# define OSSL_TIME_SPEC_BIT_MONTH_JUN 5 +# define OSSL_TIME_SPEC_BIT_MONTH_JUL 6 +# define OSSL_TIME_SPEC_BIT_MONTH_AUG 7 +# define OSSL_TIME_SPEC_BIT_MONTH_SEP 8 +# define OSSL_TIME_SPEC_BIT_MONTH_OCT 9 +# define OSSL_TIME_SPEC_BIT_MONTH_NOV 10 +# define OSSL_TIME_SPEC_BIT_MONTH_DEC 11 + +typedef struct OSSL_TIME_SPEC_MONTH_st { + int type; + union { + ASN1_NULL *allMonths; + STACK_OF(ASN1_INTEGER) *intMonth; + ASN1_BIT_STRING *bitMonth; + } choice; +} OSSL_TIME_SPEC_MONTH; + +typedef struct OSSL_TIME_PERIOD_st { + STACK_OF(OSSL_DAY_TIME_BAND) *timesOfDay; + OSSL_TIME_SPEC_DAY *days; + OSSL_TIME_SPEC_WEEKS *weeks; + OSSL_TIME_SPEC_MONTH *months; + STACK_OF(ASN1_INTEGER) *years; +} OSSL_TIME_PERIOD; + +# define OSSL_TIME_SPEC_TIME_TYPE_ABSOLUTE 0 +# define OSSL_TIME_SPEC_TIME_TYPE_PERIODIC 1 + +typedef struct OSSL_TIME_SPEC_TIME_st { + int type; + union { + OSSL_TIME_SPEC_ABSOLUTE *absolute; + STACK_OF(OSSL_TIME_PERIOD) *periodic; + } choice; +} OSSL_TIME_SPEC_TIME; + +typedef struct OSSL_TIME_SPEC_st { + OSSL_TIME_SPEC_TIME *time; + ASN1_BOOLEAN notThisTime; + ASN1_INTEGER *timeZone; +} OSSL_TIME_SPEC; + +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME_BAND) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_WEEKS) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_MONTH) +DECLARE_ASN1_FUNCTIONS(OSSL_NAMED_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_X_DAY_OF) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_ABSOLUTE) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_PERIOD) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TIME_PERIOD, OSSL_TIME_PERIOD, OSSL_TIME_PERIOD) +#define sk_OSSL_TIME_PERIOD_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_value(sk, idx) ((OSSL_TIME_PERIOD *)OPENSSL_sk_value(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), (idx))) +#define sk_OSSL_TIME_PERIOD_new(cmp) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) +#define sk_OSSL_TIME_PERIOD_new_null() ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TIME_PERIOD_new_reserve(cmp, n) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp), (n))) +#define sk_OSSL_TIME_PERIOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (n)) +#define sk_OSSL_TIME_PERIOD_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_delete(sk, i) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (i))) +#define sk_OSSL_TIME_PERIOD_delete_ptr(sk, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_pop(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_pop(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_shift(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_shift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk),ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc)) +#define sk_OSSL_TIME_PERIOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), (idx)) +#define sk_OSSL_TIME_PERIOD_set(sk, idx, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_set(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (idx), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), pnum) +#define sk_OSSL_TIME_PERIOD_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_dup(sk) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_copyfunc_type(copyfunc), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc))) +#define sk_OSSL_TIME_PERIOD_set_cmp_func(sk, cmp) ((sk_OSSL_TIME_PERIOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND) +#define sk_OSSL_DAY_TIME_BAND_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_value(sk, idx) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_value(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), (idx))) +#define sk_OSSL_DAY_TIME_BAND_new(cmp) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) +#define sk_OSSL_DAY_TIME_BAND_new_null() ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_null()) +#define sk_OSSL_DAY_TIME_BAND_new_reserve(cmp, n) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp), (n))) +#define sk_OSSL_DAY_TIME_BAND_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (n)) +#define sk_OSSL_DAY_TIME_BAND_free(sk) OPENSSL_sk_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_delete(sk, i) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (i))) +#define sk_OSSL_DAY_TIME_BAND_delete_ptr(sk, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_pop(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_pop(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_shift(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_shift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk),ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc)) +#define sk_OSSL_DAY_TIME_BAND_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), (idx)) +#define sk_OSSL_DAY_TIME_BAND_set(sk, idx, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_set(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (idx), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), pnum) +#define sk_OSSL_DAY_TIME_BAND_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_dup(sk) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_dup(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_copyfunc_type(copyfunc), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc))) +#define sk_OSSL_DAY_TIME_BAND_set_cmp_func(sk, cmp) ((sk_OSSL_DAY_TIME_BAND_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) + + +/* Attribute Type and Value */ +typedef struct atav_st { + ASN1_OBJECT *type; + ASN1_TYPE *value; +} OSSL_ATAV; + +typedef struct ATTRIBUTE_TYPE_MAPPING_st { + ASN1_OBJECT *local; + ASN1_OBJECT *remote; +} OSSL_ATTRIBUTE_TYPE_MAPPING; + +typedef struct ATTRIBUTE_VALUE_MAPPING_st { + OSSL_ATAV *local; + OSSL_ATAV *remote; +} OSSL_ATTRIBUTE_VALUE_MAPPING; + +# define OSSL_ATTR_MAP_TYPE 0 +# define OSSL_ATTR_MAP_VALUE 1 + +typedef struct ATTRIBUTE_MAPPING_st { + int type; + union { + OSSL_ATTRIBUTE_TYPE_MAPPING *typeMappings; + OSSL_ATTRIBUTE_VALUE_MAPPING *typeValueMappings; + } choice; +} OSSL_ATTRIBUTE_MAPPING; + +typedef STACK_OF(OSSL_ATTRIBUTE_MAPPING) OSSL_ATTRIBUTE_MAPPINGS; +DECLARE_ASN1_FUNCTIONS(OSSL_ATAV) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_TYPE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_VALUE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPINGS) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING) +#define sk_OSSL_ATTRIBUTE_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_value(sk, idx) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_value(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new(cmp) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_null() ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_reserve(cmp, n) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp), (n))) +#define sk_OSSL_ATTRIBUTE_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (n)) +#define sk_OSSL_ATTRIBUTE_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete(sk, i) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (i))) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete_ptr(sk, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_pop(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_shift(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_shift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk),ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc)) +#define sk_OSSL_ATTRIBUTE_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), (idx)) +#define sk_OSSL_ATTRIBUTE_MAPPING_set(sk, idx, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_set(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), pnum) +#define sk_OSSL_ATTRIBUTE_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_dup(sk) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_copyfunc_type(copyfunc), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc))) +#define sk_OSSL_ATTRIBUTE_MAPPING_set_cmp_func(sk, cmp) ((sk_OSSL_ATTRIBUTE_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) + + +# define OSSL_AAA_ATTRIBUTE_TYPE 0 +# define OSSL_AAA_ATTRIBUTE_VALUES 1 + +typedef struct ALLOWED_ATTRIBUTES_CHOICE_st { + int type; + union { + ASN1_OBJECT *attributeType; + X509_ATTRIBUTE *attributeTypeandValues; + } choice; +} OSSL_ALLOWED_ATTRIBUTES_CHOICE; + +typedef struct ALLOWED_ATTRIBUTES_ITEM_st { + STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *attributes; + GENERAL_NAME *holderDomain; +} OSSL_ALLOWED_ATTRIBUTES_ITEM; + +typedef STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) OSSL_ALLOWED_ATTRIBUTES_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_CHOICE) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_ITEM) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) + + +typedef struct AA_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + int dp_reasons; + ASN1_BOOLEAN indirectCRL; + ASN1_BOOLEAN containsUserAttributeCerts; + ASN1_BOOLEAN containsAACerts; + ASN1_BOOLEAN containsSOAPublicKeyCerts; +} OSSL_AA_DIST_POINT; + +DECLARE_ASN1_FUNCTIONS(OSSL_AA_DIST_POINT) + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/progs.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/progs.h index be55f61503d405..1b62ec37dec130 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/progs.h +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/progs.h @@ -56,6 +56,7 @@ extern int s_client_main(int argc, char *argv[]); extern int s_server_main(int argc, char *argv[]); extern int s_time_main(int argc, char *argv[]); extern int sess_id_main(int argc, char *argv[]); +extern int skeyutl_main(int argc, char *argv[]); extern int smime_main(int argc, char *argv[]); extern int speed_main(int argc, char *argv[]); extern int spkac_main(int argc, char *argv[]); @@ -110,6 +111,7 @@ extern const OPTIONS s_client_options[]; extern const OPTIONS s_server_options[]; extern const OPTIONS s_time_options[]; extern const OPTIONS sess_id_options[]; +extern const OPTIONS skeyutl_options[]; extern const OPTIONS smime_options[]; extern const OPTIONS speed_options[]; extern const OPTIONS spkac_options[]; diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/openssl-cl.gypi b/deps/openssl/config/archs/aix64-gcc-as/no-asm/openssl-cl.gypi index a0ea4dd2056555..e3e7f7eb70e421 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/openssl-cl.gypi +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/openssl-cl.gypi @@ -61,6 +61,7 @@ 'openssl/apps/s_server.c', 'openssl/apps/s_time.c', 'openssl/apps/sess_id.c', + 'openssl/apps/skeyutl.c', 'openssl/apps/smime.c', 'openssl/apps/speed.c', 'openssl/apps/spkac.c', @@ -76,12 +77,14 @@ 'openssl/apps/lib/app_rand.c', 'openssl/apps/lib/app_x509.c', 'openssl/apps/lib/apps.c', + 'openssl/apps/lib/apps_opt_printf.c', 'openssl/apps/lib/apps_ui.c', 'openssl/apps/lib/columns.c', 'openssl/apps/lib/engine.c', 'openssl/apps/lib/engine_loader.c', 'openssl/apps/lib/fmt.c', 'openssl/apps/lib/http_server.c', + 'openssl/apps/lib/log.c', 'openssl/apps/lib/names.c', 'openssl/apps/lib/opt.c', 'openssl/apps/lib/s_cb.c', diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/openssl-fips.gypi b/deps/openssl/config/archs/aix64-gcc-as/no-asm/openssl-fips.gypi index b283040eeec87a..73b6c38c827c60 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/openssl-fips.gypi +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/openssl-fips.gypi @@ -100,14 +100,15 @@ 'openssl/crypto/evp/kem.c', 'openssl/crypto/evp/keymgmt_lib.c', 'openssl/crypto/evp/keymgmt_meth.c', - 'openssl/crypto/evp/m_sigver.c', 'openssl/crypto/evp/mac_lib.c', 'openssl/crypto/evp/mac_meth.c', 'openssl/crypto/evp/p_lib.c', 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -115,6 +116,8 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', @@ -145,6 +148,16 @@ 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -153,6 +166,7 @@ 'openssl/crypto/modes/ofb128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/property/defn_cache.c', 'openssl/crypto/property/property.c', 'openssl/crypto/property/property_parse.c', @@ -181,7 +195,23 @@ 'openssl/crypto/sha/sha256.c', 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/stack/stack.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/providers/common/der/der_rsa_sig.c', 'openssl/providers/common/bio_prov.c', 'openssl/providers/common/capabilities.c', @@ -190,6 +220,7 @@ 'openssl/providers/common/provider_util.c', 'openssl/providers/common/securitycheck.c', 'openssl/providers/common/securitycheck_fips.c', + 'openssl/providers/fips/fipsindicator.c', 'openssl/providers/fips/fipsprov.c', 'openssl/providers/fips/self_test.c', 'openssl/providers/fips/self_test_kats.c', @@ -227,6 +258,8 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -234,29 +267,39 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/cmac_prov.c', 'openssl/providers/implementations/macs/gmac_prov.c', 'openssl/providers/implementations/macs/hmac_prov.c', 'openssl/providers/implementations/macs/kmac_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', + 'openssl/providers/implementations/rands/fips_crng_test.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/signature/dsa_sig.c', 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -267,17 +310,20 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/fips/fips_entry.c', ], 'openssl_sources_aix64-gcc-as': [ + './config/archs/aix64-gcc-as/no-asm/crypto/params_idx.c', './config/archs/aix64-gcc-as/no-asm/providers/common/der/der_sm2_gen.c', './config/archs/aix64-gcc-as/no-asm/providers/common/der/der_digests_gen.c', './config/archs/aix64-gcc-as/no-asm/providers/common/der/der_dsa_gen.c', './config/archs/aix64-gcc-as/no-asm/providers/common/der/der_ec_gen.c', './config/archs/aix64-gcc-as/no-asm/providers/common/der/der_ecx_gen.c', + './config/archs/aix64-gcc-as/no-asm/providers/common/der/der_ml_dsa_gen.c', './config/archs/aix64-gcc-as/no-asm/providers/common/der/der_rsa_gen.c', + './config/archs/aix64-gcc-as/no-asm/providers/common/der/der_slh_dsa_gen.c', './config/archs/aix64-gcc-as/no-asm/providers/common/der/der_wrap_gen.c', './config/archs/aix64-gcc-as/no-asm/providers/legacy.ld', './config/archs/aix64-gcc-as/no-asm/providers/fips.ld', diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/openssl.gypi b/deps/openssl/config/archs/aix64-gcc-as/no-asm/openssl.gypi index 9cc4582197f86d..75ffff2b75fd16 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/openssl.gypi +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/openssl.gypi @@ -7,14 +7,15 @@ 'openssl/ssl/d1_srtp.c', 'openssl/ssl/methods.c', 'openssl/ssl/pqueue.c', + 'openssl/ssl/priority_queue.c', 'openssl/ssl/s3_enc.c', 'openssl/ssl/s3_lib.c', 'openssl/ssl/s3_msg.c', 'openssl/ssl/ssl_asn1.c', 'openssl/ssl/ssl_cert.c', + 'openssl/ssl/ssl_cert_comp.c', 'openssl/ssl/ssl_ciph.c', 'openssl/ssl/ssl_conf.c', - 'openssl/ssl/ssl_err.c', 'openssl/ssl/ssl_err_legacy.c', 'openssl/ssl/ssl_init.c', 'openssl/ssl/ssl_lib.c', @@ -31,12 +32,60 @@ 'openssl/ssl/tls13_enc.c', 'openssl/ssl/tls_depr.c', 'openssl/ssl/tls_srp.c', - 'openssl/ssl/record/dtls1_bitmap.c', + 'openssl/ssl/quic/cc_newreno.c', + 'openssl/ssl/quic/json_enc.c', + 'openssl/ssl/quic/qlog.c', + 'openssl/ssl/quic/qlog_event_helpers.c', + 'openssl/ssl/quic/quic_ackm.c', + 'openssl/ssl/quic/quic_cfq.c', + 'openssl/ssl/quic/quic_channel.c', + 'openssl/ssl/quic/quic_demux.c', + 'openssl/ssl/quic/quic_engine.c', + 'openssl/ssl/quic/quic_fc.c', + 'openssl/ssl/quic/quic_fifd.c', + 'openssl/ssl/quic/quic_impl.c', + 'openssl/ssl/quic/quic_lcidm.c', + 'openssl/ssl/quic/quic_method.c', + 'openssl/ssl/quic/quic_obj.c', + 'openssl/ssl/quic/quic_port.c', + 'openssl/ssl/quic/quic_rcidm.c', + 'openssl/ssl/quic/quic_reactor.c', + 'openssl/ssl/quic/quic_reactor_wait_ctx.c', + 'openssl/ssl/quic/quic_record_rx.c', + 'openssl/ssl/quic/quic_record_shared.c', + 'openssl/ssl/quic/quic_record_tx.c', + 'openssl/ssl/quic/quic_record_util.c', + 'openssl/ssl/quic/quic_rstream.c', + 'openssl/ssl/quic/quic_rx_depack.c', + 'openssl/ssl/quic/quic_sf_list.c', + 'openssl/ssl/quic/quic_srt_gen.c', + 'openssl/ssl/quic/quic_srtm.c', + 'openssl/ssl/quic/quic_sstream.c', + 'openssl/ssl/quic/quic_statm.c', + 'openssl/ssl/quic/quic_stream_map.c', + 'openssl/ssl/quic/quic_thread_assist.c', + 'openssl/ssl/quic/quic_tls.c', + 'openssl/ssl/quic/quic_tls_api.c', + 'openssl/ssl/quic/quic_trace.c', + 'openssl/ssl/quic/quic_tserver.c', + 'openssl/ssl/quic/quic_txp.c', + 'openssl/ssl/quic/quic_txpim.c', + 'openssl/ssl/quic/quic_types.c', + 'openssl/ssl/quic/quic_wire.c', + 'openssl/ssl/quic/quic_wire_pkt.c', + 'openssl/ssl/quic/uint_set.c', 'openssl/ssl/record/rec_layer_d1.c', 'openssl/ssl/record/rec_layer_s3.c', - 'openssl/ssl/record/ssl3_buffer.c', - 'openssl/ssl/record/ssl3_record.c', - 'openssl/ssl/record/ssl3_record_tls13.c', + 'openssl/ssl/record/methods/dtls_meth.c', + 'openssl/ssl/record/methods/ssl3_meth.c', + 'openssl/ssl/record/methods/tls13_meth.c', + 'openssl/ssl/record/methods/tls1_meth.c', + 'openssl/ssl/record/methods/tls_common.c', + 'openssl/ssl/record/methods/tls_multib.c', + 'openssl/ssl/record/methods/tlsany_meth.c', + 'openssl/ssl/rio/poll_builder.c', + 'openssl/ssl/rio/poll_immediate.c', + 'openssl/ssl/rio/rio_notifier.c', 'openssl/ssl/statem/extensions.c', 'openssl/ssl/statem/extensions_clnt.c', 'openssl/ssl/statem/extensions_cust.c', @@ -150,6 +199,7 @@ 'openssl/crypto/bio/bss_conn.c', 'openssl/crypto/bio/bss_core.c', 'openssl/crypto/bio/bss_dgram.c', + 'openssl/crypto/bio/bss_dgram_pair.c', 'openssl/crypto/bio/bss_fd.c', 'openssl/crypto/bio/bss_file.c', 'openssl/crypto/bio/bss_log.c', @@ -210,6 +260,7 @@ 'openssl/crypto/cmp/cmp_client.c', 'openssl/crypto/cmp/cmp_ctx.c', 'openssl/crypto/cmp/cmp_err.c', + 'openssl/crypto/cmp/cmp_genm.c', 'openssl/crypto/cmp/cmp_hdr.c', 'openssl/crypto/cmp/cmp_http.c', 'openssl/crypto/cmp/cmp_msg.c', @@ -385,7 +436,9 @@ 'openssl/crypto/err/err_all.c', 'openssl/crypto/err/err_all_legacy.c', 'openssl/crypto/err/err_blocks.c', + 'openssl/crypto/err/err_mark.c', 'openssl/crypto/err/err_prn.c', + 'openssl/crypto/err/err_save.c', 'openssl/crypto/ess/ess_asn1.c', 'openssl/crypto/ess/ess_err.c', 'openssl/crypto/ess/ess_lib.c', @@ -468,7 +521,9 @@ 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -476,7 +531,11 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', + 'openssl/crypto/hpke/hpke.c', + 'openssl/crypto/hpke/hpke_util.c', 'openssl/crypto/http/http_client.c', 'openssl/crypto/http/http_err.c', 'openssl/crypto/http/http_lib.c', @@ -490,6 +549,7 @@ 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', 'openssl/crypto/bsearch.c', + 'openssl/crypto/comp_methods.c', 'openssl/crypto/context.c', 'openssl/crypto/core_algorithm.c', 'openssl/crypto/core_fetch.c', @@ -499,10 +559,13 @@ 'openssl/crypto/cryptlib.c', 'openssl/crypto/ctype.c', 'openssl/crypto/cversion.c', + 'openssl/crypto/defaults.c', 'openssl/crypto/der_writer.c', + 'openssl/crypto/deterministic_nonce.c', 'openssl/crypto/ebcdic.c', 'openssl/crypto/ex_data.c', 'openssl/crypto/getenv.c', + 'openssl/crypto/indicator_core.c', 'openssl/crypto/info.c', 'openssl/crypto/init.c', 'openssl/crypto/initthread.c', @@ -527,12 +590,16 @@ 'openssl/crypto/provider_core.c', 'openssl/crypto/provider_predefined.c', 'openssl/crypto/punycode.c', + 'openssl/crypto/quic_vlint.c', 'openssl/crypto/self_test_core.c', + 'openssl/crypto/sleep.c', 'openssl/crypto/sparse_array.c', + 'openssl/crypto/ssl_err.c', 'openssl/crypto/threads_lib.c', 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', 'openssl/crypto/trace.c', 'openssl/crypto/uid.c', 'openssl/crypto/md4/md4_dgst.c', @@ -542,6 +609,15 @@ 'openssl/crypto/md5/md5_sha1.c', 'openssl/crypto/mdc2/mdc2_one.c', 'openssl/crypto/mdc2/mdc2dgst.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -553,6 +629,7 @@ 'openssl/crypto/modes/siv128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/objects/o_names.c', 'openssl/crypto/objects/obj_dat.c', 'openssl/crypto/objects/obj_err.c', @@ -616,6 +693,7 @@ 'openssl/crypto/rand/rand_lib.c', 'openssl/crypto/rand/rand_meth.c', 'openssl/crypto/rand/rand_pool.c', + 'openssl/crypto/rand/rand_uniform.c', 'openssl/crypto/rand/randfile.c', 'openssl/crypto/rc2/rc2_cbc.c', 'openssl/crypto/rc2/rc2_ecb.c', @@ -664,6 +742,16 @@ 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', 'openssl/crypto/siphash/siphash.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/sm2/sm2_crypt.c', 'openssl/crypto/sm2/sm2_err.c', 'openssl/crypto/sm2/sm2_key.c', @@ -681,6 +769,12 @@ 'openssl/crypto/store/store_register.c', 'openssl/crypto/store/store_result.c', 'openssl/crypto/store/store_strings.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/crypto/ts/ts_asn1.c', 'openssl/crypto/ts/ts_conf.c', 'openssl/crypto/ts/ts_err.c', @@ -709,14 +803,22 @@ 'openssl/crypto/x509/pcy_map.c', 'openssl/crypto/x509/pcy_node.c', 'openssl/crypto/x509/pcy_tree.c', + 'openssl/crypto/x509/t_acert.c', 'openssl/crypto/x509/t_crl.c', 'openssl/crypto/x509/t_req.c', 'openssl/crypto/x509/t_x509.c', + 'openssl/crypto/x509/v3_aaa.c', + 'openssl/crypto/x509/v3_ac_tgt.c', 'openssl/crypto/x509/v3_addr.c', 'openssl/crypto/x509/v3_admis.c', 'openssl/crypto/x509/v3_akeya.c', 'openssl/crypto/x509/v3_akid.c', 'openssl/crypto/x509/v3_asid.c', + 'openssl/crypto/x509/v3_attrdesc.c', + 'openssl/crypto/x509/v3_attrmap.c', + 'openssl/crypto/x509/v3_audit_id.c', + 'openssl/crypto/x509/v3_authattid.c', + 'openssl/crypto/x509/v3_battcons.c', 'openssl/crypto/x509/v3_bcons.c', 'openssl/crypto/x509/v3_bitst.c', 'openssl/crypto/x509/v3_conf.c', @@ -725,12 +827,17 @@ 'openssl/crypto/x509/v3_enum.c', 'openssl/crypto/x509/v3_extku.c', 'openssl/crypto/x509/v3_genn.c', + 'openssl/crypto/x509/v3_group_ac.c', 'openssl/crypto/x509/v3_ia5.c', + 'openssl/crypto/x509/v3_ind_iss.c', 'openssl/crypto/x509/v3_info.c', 'openssl/crypto/x509/v3_int.c', + 'openssl/crypto/x509/v3_iobo.c', 'openssl/crypto/x509/v3_ist.c', 'openssl/crypto/x509/v3_lib.c', 'openssl/crypto/x509/v3_ncons.c', + 'openssl/crypto/x509/v3_no_ass.c', + 'openssl/crypto/x509/v3_no_rev_avail.c', 'openssl/crypto/x509/v3_pci.c', 'openssl/crypto/x509/v3_pcia.c', 'openssl/crypto/x509/v3_pcons.c', @@ -738,13 +845,20 @@ 'openssl/crypto/x509/v3_pmaps.c', 'openssl/crypto/x509/v3_prn.c', 'openssl/crypto/x509/v3_purp.c', + 'openssl/crypto/x509/v3_rolespec.c', 'openssl/crypto/x509/v3_san.c', + 'openssl/crypto/x509/v3_sda.c', + 'openssl/crypto/x509/v3_single_use.c', 'openssl/crypto/x509/v3_skid.c', + 'openssl/crypto/x509/v3_soa_id.c', 'openssl/crypto/x509/v3_sxnet.c', + 'openssl/crypto/x509/v3_timespec.c', 'openssl/crypto/x509/v3_tlsf.c', + 'openssl/crypto/x509/v3_usernotice.c', 'openssl/crypto/x509/v3_utf8.c', 'openssl/crypto/x509/v3_utl.c', 'openssl/crypto/x509/v3err.c', + 'openssl/crypto/x509/x509_acert.c', 'openssl/crypto/x509/x509_att.c', 'openssl/crypto/x509/x509_cmp.c', 'openssl/crypto/x509/x509_d2.c', @@ -762,6 +876,7 @@ 'openssl/crypto/x509/x509_v3.c', 'openssl/crypto/x509/x509_vfy.c', 'openssl/crypto/x509/x509_vpm.c', + 'openssl/crypto/x509/x509aset.c', 'openssl/crypto/x509/x509cset.c', 'openssl/crypto/x509/x509name.c', 'openssl/crypto/x509/x509rset.c', @@ -771,6 +886,7 @@ 'openssl/crypto/x509/x_attrib.c', 'openssl/crypto/x509/x_crl.c', 'openssl/crypto/x509/x_exten.c', + 'openssl/crypto/x509/x_ietfatt.c', 'openssl/crypto/x509/x_name.c', 'openssl/crypto/x509/x_pubkey.c', 'openssl/crypto/x509/x_req.c', @@ -802,6 +918,9 @@ 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c', 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', @@ -826,7 +945,13 @@ 'openssl/providers/implementations/ciphers/cipher_cts.c', 'openssl/providers/implementations/ciphers/cipher_null.c', 'openssl/providers/implementations/ciphers/cipher_sm4.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm_hw.c', 'openssl/providers/implementations/ciphers/cipher_sm4_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts_hw.c', 'openssl/providers/implementations/ciphers/cipher_tdes.c', 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', 'openssl/providers/implementations/ciphers/cipher_tdes_default.c', @@ -855,11 +980,16 @@ 'openssl/providers/implementations/encode_decode/encode_key2ms.c', 'openssl/providers/implementations/encode_decode/encode_key2text.c', 'openssl/providers/implementations/encode_decode/endecoder_common.c', + 'openssl/providers/implementations/encode_decode/ml_common_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_dsa_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_kem_codecs.c', 'openssl/providers/implementations/exchange/dh_exch.c', 'openssl/providers/implementations/exchange/ecdh_exch.c', 'openssl/providers/implementations/exchange/ecx_exch.c', 'openssl/providers/implementations/exchange/kdf_exch.c', + 'openssl/providers/implementations/kdfs/argon2.c', 'openssl/providers/implementations/kdfs/hkdf.c', + 'openssl/providers/implementations/kdfs/hmacdrbg_kdf.c', 'openssl/providers/implementations/kdfs/kbkdf.c', 'openssl/providers/implementations/kdfs/krb5kdf.c', 'openssl/providers/implementations/kdfs/pbkdf2.c', @@ -870,6 +1000,11 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ec_kem.c', + 'openssl/providers/implementations/kem/ecx_kem.c', + 'openssl/providers/implementations/kem/kem_util.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -877,7 +1012,11 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/blake2b_mac.c', 'openssl/providers/implementations/macs/blake2s_mac.c', 'openssl/providers/implementations/macs/cmac_prov.c', @@ -886,12 +1025,12 @@ 'openssl/providers/implementations/macs/kmac_prov.c', 'openssl/providers/implementations/macs/poly1305_prov.c', 'openssl/providers/implementations/macs/siphash_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', 'openssl/providers/implementations/rands/seed_src.c', + 'openssl/providers/implementations/rands/seed_src_jitter.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/rands/seeding/rand_cpu_x86.c', 'openssl/providers/implementations/rands/seeding/rand_tsc.c', @@ -901,17 +1040,23 @@ 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', 'openssl/providers/implementations/signature/sm2_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', 'openssl/providers/implementations/storemgmt/file_store.c', 'openssl/providers/implementations/storemgmt/file_store_any2obj.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -922,7 +1067,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/implementations/ciphers/cipher_blowfish.c', 'openssl/providers/implementations/ciphers/cipher_blowfish_hw.c', 'openssl/providers/implementations/ciphers/cipher_cast5.c', @@ -947,16 +1092,20 @@ 'openssl/providers/implementations/digests/ripemd_prov.c', 'openssl/providers/implementations/digests/wp_prov.c', 'openssl/providers/implementations/kdfs/pbkdf1.c', + 'openssl/providers/implementations/kdfs/pvkkdf.c', 'openssl/providers/prov_running.c', 'openssl/providers/legacyprov.c', ], 'openssl_sources_aix64-gcc-as': [ + './config/archs/aix64-gcc-as/no-asm/crypto/params_idx.c', './config/archs/aix64-gcc-as/no-asm/providers/common/der/der_sm2_gen.c', './config/archs/aix64-gcc-as/no-asm/providers/common/der/der_digests_gen.c', './config/archs/aix64-gcc-as/no-asm/providers/common/der/der_dsa_gen.c', './config/archs/aix64-gcc-as/no-asm/providers/common/der/der_ec_gen.c', './config/archs/aix64-gcc-as/no-asm/providers/common/der/der_ecx_gen.c', + './config/archs/aix64-gcc-as/no-asm/providers/common/der/der_ml_dsa_gen.c', './config/archs/aix64-gcc-as/no-asm/providers/common/der/der_rsa_gen.c', + './config/archs/aix64-gcc-as/no-asm/providers/common/der/der_slh_dsa_gen.c', './config/archs/aix64-gcc-as/no-asm/providers/common/der/der_wrap_gen.c', './config/archs/aix64-gcc-as/no-asm/providers/legacy.ld', './config/archs/aix64-gcc-as/no-asm/providers/fips.ld', diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/providers/common/der/der_ml_dsa_gen.c b/deps/openssl/config/archs/aix64-gcc-as/no-asm/providers/common/der/der_ml_dsa_gen.c new file mode 100644 index 00000000000000..4a8a113a268578 --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/providers/common/der/der_ml_dsa_gen.c @@ -0,0 +1,37 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_ml_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44] = { + DER_OID_V_id_ml_dsa_44 +}; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65] = { + DER_OID_V_id_ml_dsa_65 +}; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87] = { + DER_OID_V_id_ml_dsa_87 +}; + diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/providers/common/der/der_slh_dsa_gen.c b/deps/openssl/config/archs/aix64-gcc-as/no-asm/providers/common/der/der_slh_dsa_gen.c new file mode 100644 index 00000000000000..1419a9515097dd --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/providers/common/der/der_slh_dsa_gen.c @@ -0,0 +1,100 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_slh_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s] = { + DER_OID_V_id_slh_dsa_sha2_128s +}; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f] = { + DER_OID_V_id_slh_dsa_sha2_128f +}; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s] = { + DER_OID_V_id_slh_dsa_sha2_192s +}; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f] = { + DER_OID_V_id_slh_dsa_sha2_192f +}; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s] = { + DER_OID_V_id_slh_dsa_sha2_256s +}; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f] = { + DER_OID_V_id_slh_dsa_sha2_256f +}; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s] = { + DER_OID_V_id_slh_dsa_shake_128s +}; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f] = { + DER_OID_V_id_slh_dsa_shake_128f +}; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s] = { + DER_OID_V_id_slh_dsa_shake_192s +}; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f] = { + DER_OID_V_id_slh_dsa_shake_192f +}; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s] = { + DER_OID_V_id_slh_dsa_shake_256s +}; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f] = { + DER_OID_V_id_slh_dsa_shake_256f +}; + diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/providers/common/include/prov/der_ml_dsa.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/providers/common/include/prov/der_ml_dsa.h new file mode 100644 index 00000000000000..c55f780ab4527c --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/providers/common/include/prov/der_ml_dsa.h @@ -0,0 +1,40 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_ml_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +#define DER_OID_V_id_ml_dsa_44 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x11 +#define DER_OID_SZ_id_ml_dsa_44 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44]; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +#define DER_OID_V_id_ml_dsa_65 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x12 +#define DER_OID_SZ_id_ml_dsa_65 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65]; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +#define DER_OID_V_id_ml_dsa_87 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x13 +#define DER_OID_SZ_id_ml_dsa_87 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87]; + + +int ossl_DER_w_algorithmIdentifier_ML_DSA(WPACKET *pkt, int tag, ML_DSA_KEY *key); diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/providers/common/include/prov/der_slh_dsa.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/providers/common/include/prov/der_slh_dsa.h new file mode 100644 index 00000000000000..760f8e7699be72 --- /dev/null +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/providers/common/include/prov/der_slh_dsa.h @@ -0,0 +1,103 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_slh_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x14 +#define DER_OID_SZ_id_slh_dsa_sha2_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s]; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x15 +#define DER_OID_SZ_id_slh_dsa_sha2_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f]; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x16 +#define DER_OID_SZ_id_slh_dsa_sha2_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s]; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x17 +#define DER_OID_SZ_id_slh_dsa_sha2_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f]; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x18 +#define DER_OID_SZ_id_slh_dsa_sha2_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s]; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x19 +#define DER_OID_SZ_id_slh_dsa_sha2_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f]; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +#define DER_OID_V_id_slh_dsa_shake_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1A +#define DER_OID_SZ_id_slh_dsa_shake_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s]; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +#define DER_OID_V_id_slh_dsa_shake_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1B +#define DER_OID_SZ_id_slh_dsa_shake_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f]; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +#define DER_OID_V_id_slh_dsa_shake_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1C +#define DER_OID_SZ_id_slh_dsa_shake_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s]; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +#define DER_OID_V_id_slh_dsa_shake_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1D +#define DER_OID_SZ_id_slh_dsa_shake_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f]; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +#define DER_OID_V_id_slh_dsa_shake_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1E +#define DER_OID_SZ_id_slh_dsa_shake_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s]; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +#define DER_OID_V_id_slh_dsa_shake_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1F +#define DER_OID_SZ_id_slh_dsa_shake_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f]; + + +int ossl_DER_w_algorithmIdentifier_SLH_DSA(WPACKET *pkt, int tag, SLH_DSA_KEY *key); diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/apps/progs.c b/deps/openssl/config/archs/darwin-i386-cc/asm/apps/progs.c index 43cef00799b86e..acc204a3e6e781 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/apps/progs.c +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/apps/progs.c @@ -89,6 +89,7 @@ FUNCTION functions[] = { {FT_general, "s_time", s_time_main, s_time_options, NULL, NULL}, #endif {FT_general, "sess_id", sess_id_main, sess_id_options, NULL, NULL}, + {FT_general, "skeyutl", skeyutl_main, skeyutl_options, NULL, NULL}, {FT_general, "smime", smime_main, smime_options, NULL, NULL}, {FT_general, "speed", speed_main, speed_options, NULL, NULL}, {FT_general, "spkac", spkac_main, spkac_options, NULL, NULL}, @@ -225,9 +226,15 @@ FUNCTION functions[] = { {FT_cipher, "camellia-256-ecb", enc_main, enc_options, NULL}, #endif {FT_cipher, "base64", enc_main, enc_options, NULL}, -#ifdef ZLIB +#ifndef OPENSSL_NO_ZLIB {FT_cipher, "zlib", enc_main, enc_options, NULL}, #endif +#ifndef OPENSSL_NO_BROTLI + {FT_cipher, "brotli", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ZSTD + {FT_cipher, "zstd", enc_main, enc_options, NULL}, +#endif #ifndef OPENSSL_NO_DES {FT_cipher, "des", enc_main, enc_options, NULL}, #endif diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm b/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm index 6fe0a303ac84ac..dfc07686cc0841 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm @@ -18,6 +18,7 @@ our %config = ( "ARFLAGS" => [ "qc" ], + "ASFLAGS" => [], "CC" => "gcc", "CFLAGS" => [ "-O3 -fomit-frame-pointer" @@ -27,14 +28,16 @@ our %config = ( "CPPINCLUDES" => [], "CXXFLAGS" => [], "FIPSKEY" => "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813", + "FIPS_VENDOR" => "OpenSSL FIPS Provider", "HASHBANGPERL" => "/usr/bin/env perl", "LDFLAGS" => [], "LDLIBS" => [], + "OBJCOPY" => "objcopy", "PERL" => "/usr/bin/perl", "RANLIB" => "ranlib -c", "RC" => "windres", "RCFLAGS" => [], - "api" => "30000", + "api" => "30500", "b32" => "1", "b64" => "0", "b64l" => "0", @@ -56,11 +59,13 @@ our %config = ( "doc/build.info", "test/build.info", "engines/build.info", + "exporters/build.info", "crypto/objects/build.info", "crypto/buffer/build.info", "crypto/bio/build.info", "crypto/stack/build.info", "crypto/lhash/build.info", + "crypto/hashtable/build.info", "crypto/rand/build.info", "crypto/evp/build.info", "crypto/asn1/build.info", @@ -78,6 +83,7 @@ our %config = ( "crypto/md5/build.info", "crypto/sha/build.info", "crypto/mdc2/build.info", + "crypto/ml_kem/build.info", "crypto/hmac/build.info", "crypto/ripemd/build.info", "crypto/whrlpool/build.info", @@ -119,11 +125,19 @@ our %config = ( "crypto/cmp/build.info", "crypto/encode_decode/build.info", "crypto/ffc/build.info", + "crypto/hpke/build.info", + "crypto/thread/build.info", + "crypto/ml_dsa/build.info", + "crypto/slh_dsa/build.info", + "ssl/record/build.info", + "ssl/rio/build.info", + "ssl/quic/build.info", "apps/lib/build.info", "providers/common/build.info", "providers/implementations/build.info", "providers/fips/build.info", "doc/man1/build.info", + "ssl/record/methods/build.info", "providers/common/der/build.info", "providers/implementations/digests/build.info", "providers/implementations/ciphers/build.info", @@ -137,6 +151,7 @@ our %config = ( "providers/implementations/encode_decode/build.info", "providers/implementations/storemgmt/build.info", "providers/implementations/kem/build.info", + "providers/implementations/skeymgmt/build.info", "providers/implementations/rands/seeding/build.info" ], "build_metadata" => "", @@ -156,7 +171,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.17", + "full_version" => "3.5.2", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -165,37 +180,52 @@ our %config = ( "libdir" => "", "major" => "3", "makedep_scheme" => "gcc", - "minor" => "0", + "minor" => "5", "openssl_api_defines" => [ - "OPENSSL_CONFIGURED_API=30000" + "OPENSSL_CONFIGURED_API=30500" ], "openssl_feature_defines" => [ "OPENSSL_RAND_SEED_OS", "OPENSSL_THREADS", "OPENSSL_NO_AFALGENG", "OPENSSL_NO_ASAN", + "OPENSSL_NO_BROTLI", + "OPENSSL_NO_BROTLI_DYNAMIC", "OPENSSL_NO_COMP", "OPENSSL_NO_CRYPTO_MDEBUG", "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE", + "OPENSSL_NO_DEMOS", "OPENSSL_NO_DEVCRYPTOENG", "OPENSSL_NO_EC_NISTP_64_GCC_128", "OPENSSL_NO_EGD", "OPENSSL_NO_EXTERNAL_TESTS", + "OPENSSL_NO_FIPS_JITTER", "OPENSSL_NO_FUZZ_AFL", "OPENSSL_NO_FUZZ_LIBFUZZER", + "OPENSSL_NO_H3DEMO", + "OPENSSL_NO_HQINTEROP", + "OPENSSL_NO_JITTER", "OPENSSL_NO_KTLS", "OPENSSL_NO_LOADERENG", "OPENSSL_NO_MD2", "OPENSSL_NO_MSAN", + "OPENSSL_NO_PIE", "OPENSSL_NO_RC5", "OPENSSL_NO_SCTP", "OPENSSL_NO_SSL3", "OPENSSL_NO_SSL3_METHOD", + "OPENSSL_NO_SSLKEYLOG", + "OPENSSL_NO_TFO", "OPENSSL_NO_TRACE", "OPENSSL_NO_UBSAN", "OPENSSL_NO_UNIT_TEST", "OPENSSL_NO_UPLINK", "OPENSSL_NO_WEAK_SSL_CIPHERS", + "OPENSSL_NO_WINSTORE", + "OPENSSL_NO_ZLIB", + "OPENSSL_NO_ZLIB_DYNAMIC", + "OPENSSL_NO_ZSTD", + "OPENSSL_NO_ZSTD_DYNAMIC", "OPENSSL_NO_DYNAMIC_ENGINE" ], "openssl_other_defines" => [ @@ -205,11 +235,11 @@ our %config = ( "OPENSSL_SYS_MACOSX" ], "openssldir" => "", - "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "17", + "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", + "patch" => "2", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", - "perl_version" => "5.38.2", + "perl_version" => "5.34.0", "perlargv" => [ "no-comp", "no-shared", @@ -239,6 +269,7 @@ our %config = ( "LDLIBS" => undef, "MT" => undef, "MTFLAGS" => undef, + "OBJCOPY" => undef, "OPENSSL_LOCAL_CONFIG_DIR" => undef, "PERL" => undef, "RANLIB" => undef, @@ -258,11 +289,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "1 Jul 2025", + "release_date" => "5 Aug 2025", "shlib_version" => "3", "sourcedir" => ".", "target" => "darwin-i386-cc", - "version" => "3.0.17" + "version" => "3.5.2" ); our %target = ( "AR" => "ar", @@ -270,6 +301,7 @@ our %target = ( "CC" => "cc", "CFLAGS" => "-O3 -fomit-frame-pointer", "HASHBANGPERL" => "/usr/bin/env perl", + "OBJCOPY" => "objcopy", "RANLIB" => "ranlib -c", "RC" => "windres", "_conf_fname_int" => [ @@ -281,6 +313,8 @@ our %target = ( "Configurations/shared-info.pl" ], "asm_arch" => "x86", + "bin_cflags" => "", + "bin_lflags" => "", "bn_ops" => "BN_LLONG RC4_INT", "build_file" => "Makefile", "build_scheme" => [ @@ -295,6 +329,7 @@ our %target = ( "disable" => [], "dso_scheme" => "dlfcn", "enable" => [], + "ex_libs" => "", "includes" => [], "lflags" => "-Wl,-search_paths_first", "lib_cflags" => "", @@ -321,6 +356,8 @@ our %target = ( our @disablables = ( "acvp-tests", "afalgeng", + "apps", + "argon2", "aria", "asan", "asm", @@ -331,11 +368,14 @@ our @disablables = ( "autoload-config", "bf", "blake2", + "brotli", + "brotli-dynamic", "buildtest-c++", "bulk", "cached-fetch", "camellia", "capieng", + "winstore", "cast", "chacha", "cmac", @@ -344,11 +384,16 @@ our @disablables = ( "comp", "crypto-mdebug", "ct", + "default-thread-pool", + "demos", + "h3demo", + "hqinterop", "deprecated", "des", "devcryptoeng", "dgram", "dh", + "docs", "dsa", "dso", "dtls", @@ -358,6 +403,7 @@ our @disablables = ( "ec_nistp_64_gcc_128", "ecdh", "ecdsa", + "ecx", "egd", "engine", "err", @@ -365,10 +411,15 @@ our @disablables = ( "filenames", "fips", "fips-securitychecks", + "fips-post", + "fips-jitter", "fuzz-afl", "fuzz-libfuzzer", "gost", + "http", "idea", + "integrity-only-ciphers", + "jitter", "ktls", "legacy", "loadereng", @@ -376,6 +427,8 @@ our @disablables = ( "md2", "md4", "mdc2", + "ml-dsa", + "ml-kem", "module", "msan", "multiblock", @@ -384,10 +437,13 @@ our @disablables = ( "ocsp", "padlockeng", "pic", + "pie", "pinshared", "poly1305", "posix-io", "psk", + "quic", + "unstable-qlog", "rc2", "rc4", "rc5", @@ -401,7 +457,9 @@ our @disablables = ( "shared", "siphash", "siv", + "slh-dsa", "sm2", + "sm2-precomp", "sm3", "sm4", "sock", @@ -412,9 +470,13 @@ our @disablables = ( "ssl-trace", "static-engine", "stdio", + "sslkeylog", "tests", + "tfo", + "thread-pool", "threads", "tls", + "tls-deprecated-ec", "trace", "ts", "ubsan", @@ -425,6 +487,8 @@ our @disablables = ( "whirlpool", "zlib", "zlib-dynamic", + "zstd", + "zstd-dynamic", "ssl3", "ssl3-method", "tls1", @@ -445,33 +509,46 @@ our @disablables_int = ( our %disabled = ( "afalgeng" => "option", "asan" => "default", + "brotli" => "default", + "brotli-dynamic" => "default", "buildtest-c++" => "default", "comp" => "option", "crypto-mdebug" => "default", "crypto-mdebug-backtrace" => "default", + "demos" => "default", "devcryptoeng" => "default", "dynamic-engine" => "cascade", "ec_nistp_64_gcc_128" => "default", "egd" => "default", "external-tests" => "default", + "fips-jitter" => "default", "fuzz-afl" => "default", "fuzz-libfuzzer" => "default", + "h3demo" => "default", + "hqinterop" => "default", + "jitter" => "default", "ktls" => "default", "loadereng" => "cascade", "md2" => "default", "msan" => "default", + "pie" => "default", "rc5" => "default", "sctp" => "default", "shared" => "option", "ssl3" => "default", "ssl3-method" => "default", + "sslkeylog" => "default", + "tfo" => "default", "trace" => "default", "ubsan" => "default", "unit-test" => "default", "uplink" => "no uplink_arch", "weak-ssl-ciphers" => "default", + "winstore" => "not-windows", "zlib" => "default", - "zlib-dynamic" => "default" + "zlib-dynamic" => "default", + "zstd" => "default", + "zstd-dynamic" => "default" ); our %withargs = (); our %unified_info = ( @@ -697,6 +774,11 @@ our %unified_info = ( "pod" => "1" } }, + "doc/man1/openssl-skeyutl.pod" => { + "doc/man1/openssl-skeyutl.pod.in" => { + "pod" => "1" + } + }, "doc/man1/openssl-smime.pod" => { "doc/man1/openssl-smime.pod.in" => { "pod" => "1" @@ -754,6 +836,21 @@ our %unified_info = ( } }, "generate" => { + "exporters/OpenSSLConfig.cmake" => { + "exporter" => "cmake" + }, + "exporters/OpenSSLConfigVersion.cmake" => { + "exporter" => "cmake" + }, + "exporters/libcrypto.pc" => { + "exporter" => "pkg-config" + }, + "exporters/libssl.pc" => { + "exporter" => "pkg-config" + }, + "exporters/openssl.pc" => { + "exporter" => "pkg-config" + }, "include/openssl/configuration.h" => { "skip" => "1" } @@ -774,6 +871,9 @@ our %unified_info = ( "providers/liblegacy.a" => { "noinst" => "1" }, + "providers/libtemplate.a" => { + "noinst" => "1" + }, "test/libtestutil.a" => { "has_main" => "1", "noinst" => "1" @@ -791,6 +891,9 @@ our %unified_info = ( } }, "programs" => { + "fuzz/acert-test" => { + "noinst" => "1" + }, "fuzz/asn1-test" => { "noinst" => "1" }, @@ -821,9 +924,60 @@ our %unified_info = ( "fuzz/ct-test" => { "noinst" => "1" }, + "fuzz/decoder-test" => { + "noinst" => "1" + }, + "fuzz/dtlsclient-test" => { + "noinst" => "1" + }, + "fuzz/dtlsserver-test" => { + "noinst" => "1" + }, + "fuzz/hashtable-test" => { + "noinst" => "1" + }, + "fuzz/ml-dsa-test" => { + "noinst" => "1" + }, + "fuzz/ml-kem-test" => { + "noinst" => "1" + }, + "fuzz/pem-test" => { + "noinst" => "1" + }, + "fuzz/provider-test" => { + "noinst" => "1" + }, + "fuzz/punycode-test" => { + "noinst" => "1" + }, + "fuzz/quic-client-test" => { + "noinst" => "1" + }, + "fuzz/quic-lcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-rcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-server-test" => { + "noinst" => "1" + }, + "fuzz/quic-srtm-test" => { + "noinst" => "1" + }, "fuzz/server-test" => { "noinst" => "1" }, + "fuzz/slh-dsa-test" => { + "noinst" => "1" + }, + "fuzz/smime-test" => { + "noinst" => "1" + }, + "fuzz/v3name-test" => { + "noinst" => "1" + }, "fuzz/x509-test" => { "noinst" => "1" }, @@ -875,18 +1029,30 @@ our %unified_info = ( "test/bftest" => { "noinst" => "1" }, + "test/bio_addr_test" => { + "noinst" => "1" + }, + "test/bio_base64_test" => { + "noinst" => "1" + }, "test/bio_callback_test" => { "noinst" => "1" }, "test/bio_core_test" => { "noinst" => "1" }, + "test/bio_dgram_test" => { + "noinst" => "1" + }, "test/bio_enc_test" => { "noinst" => "1" }, "test/bio_memleak_test" => { "noinst" => "1" }, + "test/bio_meth_test" => { + "noinst" => "1" + }, "test/bio_prefix_text" => { "noinst" => "1" }, @@ -896,6 +1062,9 @@ our %unified_info = ( "test/bio_readbuffer_test" => { "noinst" => "1" }, + "test/bio_tfo_test" => { + "noinst" => "1" + }, "test/bioprinttest" => { "noinst" => "1" }, @@ -905,6 +1074,9 @@ our %unified_info = ( "test/bntest" => { "noinst" => "1" }, + "test/build_wincrypt_test" => { + "noinst" => "1" + }, "test/buildtest_c_aes" => { "noinst" => "1" }, @@ -920,6 +1092,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => { "noinst" => "1" }, + "test/buildtest_c_byteorder" => { + "noinst" => "1" + }, "test/buildtest_c_camellia" => { "noinst" => "1" }, @@ -944,9 +1119,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => { "noinst" => "1" }, - "test/buildtest_c_core_names" => { - "noinst" => "1" - }, "test/buildtest_c_core_object" => { "noinst" => "1" }, @@ -971,6 +1143,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => { "noinst" => "1" }, + "test/buildtest_c_e_ostime" => { + "noinst" => "1" + }, "test/buildtest_c_ebcdic" => { "noinst" => "1" }, @@ -998,12 +1173,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => { "noinst" => "1" }, + "test/buildtest_c_hpke" => { + "noinst" => "1" + }, "test/buildtest_c_http" => { "noinst" => "1" }, "test/buildtest_c_idea" => { "noinst" => "1" }, + "test/buildtest_c_indicator" => { + "noinst" => "1" + }, "test/buildtest_c_kdf" => { "noinst" => "1" }, @@ -1019,6 +1200,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => { "noinst" => "1" }, + "test/buildtest_c_ml_kem" => { + "noinst" => "1" + }, "test/buildtest_c_modes" => { "noinst" => "1" }, @@ -1049,6 +1233,9 @@ our %unified_info = ( "test/buildtest_c_provider" => { "noinst" => "1" }, + "test/buildtest_c_quic" => { + "noinst" => "1" + }, "test/buildtest_c_rand" => { "noinst" => "1" }, @@ -1091,6 +1278,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => { "noinst" => "1" }, + "test/buildtest_c_thread" => { + "noinst" => "1" + }, "test/buildtest_c_tls1" => { "noinst" => "1" }, @@ -1106,6 +1296,12 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => { "noinst" => "1" }, + "test/byteorder_test" => { + "noinst" => "1" + }, + "test/ca_internals_test" => { + "noinst" => "1" + }, "test/casttest" => { "noinst" => "1" }, @@ -1190,6 +1386,9 @@ our %unified_info = ( "test/danetest" => { "noinst" => "1" }, + "test/decoder_propq_test" => { + "noinst" => "1" + }, "test/defltfips_test" => { "noinst" => "1" }, @@ -1262,15 +1461,24 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => { "noinst" => "1" }, + "test/evp_pkey_dhkem_test" => { + "noinst" => "1" + }, "test/evp_pkey_dparams_test" => { "noinst" => "1" }, "test/evp_pkey_provided_test" => { "noinst" => "1" }, + "test/evp_skey_test" => { + "noinst" => "1" + }, "test/evp_test" => { "noinst" => "1" }, + "test/evp_xof_test" => { + "noinst" => "1" + }, "test/exdatatest" => { "noinst" => "1" }, @@ -1298,6 +1506,9 @@ our %unified_info = ( "test/hmactest" => { "noinst" => "1" }, + "test/hpke_test" => { + "noinst" => "1" + }, "test/http_test" => { "noinst" => "1" }, @@ -1307,12 +1518,18 @@ our %unified_info = ( "test/igetest" => { "noinst" => "1" }, + "test/json_test" => { + "noinst" => "1" + }, "test/keymgmt_internal_test" => { "noinst" => "1" }, "test/lhash_test" => { "noinst" => "1" }, + "test/list_test" => { + "noinst" => "1" + }, "test/localetest" => { "noinst" => "1" }, @@ -1322,9 +1539,21 @@ our %unified_info = ( "test/mdc2test" => { "noinst" => "1" }, + "test/membio_test" => { + "noinst" => "1" + }, "test/memleaktest" => { "noinst" => "1" }, + "test/ml_dsa_test" => { + "noinst" => "1" + }, + "test/ml_kem_evp_extra_test" => { + "noinst" => "1" + }, + "test/ml_kem_internal_test" => { + "noinst" => "1" + }, "test/modes_internal_test" => { "noinst" => "1" }, @@ -1343,6 +1572,9 @@ our %unified_info = ( "test/packettest" => { "noinst" => "1" }, + "test/pairwise_fail_test" => { + "noinst" => "1" + }, "test/param_build_test" => { "noinst" => "1" }, @@ -1367,6 +1599,9 @@ our %unified_info = ( "test/pemtest" => { "noinst" => "1" }, + "test/pkcs12_api_test" => { + "noinst" => "1" + }, "test/pkcs12_format_test" => { "noinst" => "1" }, @@ -1382,6 +1617,9 @@ our %unified_info = ( "test/poly1305_internal_test" => { "noinst" => "1" }, + "test/priority_queue_test" => { + "noinst" => "1" + }, "test/property_test" => { "noinst" => "1" }, @@ -1391,6 +1629,9 @@ our %unified_info = ( "test/provfetchtest" => { "noinst" => "1" }, + "test/provider_default_search_path_test" => { + "noinst" => "1" + }, "test/provider_fallback_test" => { "noinst" => "1" }, @@ -1409,6 +1650,72 @@ our %unified_info = ( "test/punycode_test" => { "noinst" => "1" }, + "test/quic_ackm_test" => { + "noinst" => "1" + }, + "test/quic_cc_test" => { + "noinst" => "1" + }, + "test/quic_cfq_test" => { + "noinst" => "1" + }, + "test/quic_client_test" => { + "noinst" => "1" + }, + "test/quic_fc_test" => { + "noinst" => "1" + }, + "test/quic_fifd_test" => { + "noinst" => "1" + }, + "test/quic_lcidm_test" => { + "noinst" => "1" + }, + "test/quic_multistream_test" => { + "noinst" => "1" + }, + "test/quic_newcid_test" => { + "noinst" => "1" + }, + "test/quic_qlog_test" => { + "noinst" => "1" + }, + "test/quic_radix_test" => { + "noinst" => "1" + }, + "test/quic_rcidm_test" => { + "noinst" => "1" + }, + "test/quic_record_test" => { + "noinst" => "1" + }, + "test/quic_srt_gen_test" => { + "noinst" => "1" + }, + "test/quic_srtm_test" => { + "noinst" => "1" + }, + "test/quic_stream_test" => { + "noinst" => "1" + }, + "test/quic_tserver_test" => { + "noinst" => "1" + }, + "test/quic_txp_test" => { + "noinst" => "1" + }, + "test/quic_txpim_test" => { + "noinst" => "1" + }, + "test/quic_wire_test" => { + "noinst" => "1" + }, + "test/quicapitest" => { + "noinst" => "1" + }, + "test/quicfaultstest" => { + "noinst" => "1" + }, "test/rand_status_test" => { "noinst" => "1" }, @@ -1424,12 +1731,15 @@ our %unified_info = ( "test/rc5test" => { "noinst" => "1" }, - "test/rdrand_sanitytest" => { + "test/rdcpu_sanitytest" => { "noinst" => "1" }, "test/recordlentest" => { "noinst" => "1" }, + "test/rpktest" => { + "noinst" => "1" + }, "test/rsa_complex" => { "noinst" => "1" }, @@ -1442,6 +1752,12 @@ our %unified_info = ( "test/rsa_test" => { "noinst" => "1" }, + "test/rsa_x931_test" => { + "noinst" => "1" + }, + "test/safe_math_test" => { + "noinst" => "1" + }, "test/sanitytest" => { "noinst" => "1" }, @@ -1457,6 +1773,9 @@ our %unified_info = ( "test/siphash_internal_test" => { "noinst" => "1" }, + "test/slh_dsa_test" => { + "noinst" => "1" + }, "test/sm2_internal_test" => { "noinst" => "1" }, @@ -1478,6 +1797,9 @@ our %unified_info = ( "test/ssl_ctx_test" => { "noinst" => "1" }, + "test/ssl_handshake_rtt_test" => { + "noinst" => "1" + }, "test/ssl_old_test" => { "noinst" => "1" }, @@ -1499,12 +1821,18 @@ our %unified_info = ( "test/stack_test" => { "noinst" => "1" }, + "test/strtoultest" => { + "noinst" => "1" + }, "test/sysdefaulttest" => { "noinst" => "1" }, "test/test_test" => { "noinst" => "1" }, + "test/threadpool_test" => { + "noinst" => "1" + }, "test/threadstest" => { "noinst" => "1" }, @@ -1514,12 +1842,18 @@ our %unified_info = ( "test/time_offset_test" => { "noinst" => "1" }, + "test/time_test" => { + "noinst" => "1" + }, "test/tls13ccstest" => { "noinst" => "1" }, "test/tls13encryptiontest" => { "noinst" => "1" }, + "test/tls13groupselection_test" => { + "noinst" => "1" + }, "test/trace_api_test" => { "noinst" => "1" }, @@ -1547,6 +1881,9 @@ our %unified_info = ( "test/wpackettest" => { "noinst" => "1" }, + "test/x509_acert_test" => { + "noinst" => "1" + }, "test/x509_check_cert_pkey_test" => { "noinst" => "1" }, @@ -1556,6 +1893,15 @@ our %unified_info = ( "test/x509_internal_test" => { "noinst" => "1" }, + "test/x509_load_cert_file_test" => { + "noinst" => "1" + }, + "test/x509_req_test" => { + "noinst" => "1" + }, + "test/x509_test" => { + "noinst" => "1" + }, "test/x509_time_test" => { "noinst" => "1" }, @@ -1658,6 +2004,9 @@ our %unified_info = ( "MD5_ASM", "RC4_ASM" ], + "test/endecode_test" => [ + "STATIC_LEGACY" + ], "test/evp_extra_test" => [ "STATIC_LEGACY" ], @@ -1670,14 +2019,21 @@ our %unified_info = ( }, "depends" => { "" => [ + "OpenSSLConfigVersion.cmake", + "crypto/params_idx.c", + "exporters/OpenSSLConfigVersion.cmake", + "exporters/openssl.pc", "include/crypto/bn_conf.h", "include/crypto/dso_conf.h", + "include/internal/param_names.h", "include/openssl/asn1.h", "include/openssl/asn1t.h", "include/openssl/bio.h", "include/openssl/cmp.h", "include/openssl/cms.h", + "include/openssl/comp.h", "include/openssl/conf.h", + "include/openssl/core_names.h", "include/openssl/crmf.h", "include/openssl/crypto.h", "include/openssl/ct.h", @@ -1694,10 +2050,22 @@ our %unified_info = ( "include/openssl/ssl.h", "include/openssl/ui.h", "include/openssl/x509.h", + "include/openssl/x509_acert.h", "include/openssl/x509_vfy.h", "include/openssl/x509v3.h", + "openssl.pc", "test/provider_internal_test.cnf" ], + "OpenSSLConfig.cmake" => [ + "builddata.pm" + ], + "OpenSSLConfigVersion.cmake" => [ + "OpenSSLConfig.cmake", + "builddata.pm" + ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/progs.h" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/progs.h" ], @@ -1843,6 +2211,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/progs.h" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/progs.h" + ], "apps/openssl-bin-smime.o" => [ "apps/progs.h" ], @@ -1931,6 +2302,9 @@ our %unified_info = ( "crypto/libcrypto-lib-info.o" => [ "crypto/buildinf.h" ], + "crypto/params_idx.c" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "crypto/rc4/rc4-586.S" => [ "crypto/perlasm/x86asm.pl" ], @@ -2096,6 +2470,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -2237,6 +2614,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -2273,6 +2653,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -2288,6 +2671,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -2360,6 +2746,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -2426,6 +2815,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -2525,6 +2917,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -2663,6 +3061,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -2780,6 +3181,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -2867,6 +3274,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -2939,9 +3349,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -2957,12 +3373,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -3032,9 +3454,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -3044,12 +3475,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -3065,9 +3508,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -3092,6 +3541,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -3107,6 +3559,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -3143,6 +3598,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -3416,6 +3874,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -3455,6 +3916,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -3476,6 +3940,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -3590,6 +4057,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -3617,9 +4087,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -3635,6 +4117,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -3644,12 +4129,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -3668,12 +4159,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -3683,9 +4186,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -3698,9 +4207,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -3716,24 +4237,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -3746,6 +4288,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -3755,8 +4303,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -3776,6 +4324,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -3824,6 +4387,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -3890,6 +4456,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -4013,9 +4582,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -4031,6 +4606,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -4055,9 +4633,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -4091,6 +4678,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -4148,15 +4738,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -4166,6 +4768,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -4187,9 +4792,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -4205,6 +4816,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -4217,9 +4831,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -4250,9 +4861,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -4268,12 +4876,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -4328,6 +4990,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -4337,9 +5002,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -4487,6 +5149,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -4628,6 +5293,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -4664,6 +5332,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -4679,6 +5350,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -4751,6 +5425,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -4817,6 +5494,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -4916,6 +5596,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -5054,6 +5740,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -5171,6 +5860,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -5258,6 +5953,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -5330,9 +6028,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -5348,12 +6052,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -5423,9 +6133,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -5435,12 +6154,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -5456,9 +6187,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -5483,6 +6220,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -5498,6 +6238,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -5534,6 +6277,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -5807,6 +6553,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -5846,6 +6595,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -5867,6 +6619,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -5981,6 +6736,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -6008,9 +6766,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -6026,6 +6796,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -6035,12 +6808,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -6059,12 +6838,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -6074,9 +6865,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -6089,9 +6886,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -6107,24 +6916,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -6137,6 +6967,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -6146,8 +6982,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -6167,6 +7003,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -6215,6 +7066,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -6281,6 +7135,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -6404,9 +7261,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -6422,6 +7285,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -6446,9 +7312,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -6482,6 +7357,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -6539,15 +7417,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -6557,6 +7447,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -6578,9 +7471,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -6596,6 +7495,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -6608,9 +7510,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -6641,9 +7540,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -6659,12 +7555,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -6719,6 +7669,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -6728,9 +7681,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -6910,6 +7860,10 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod.in", "doc/perlvars.pm" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in", + "doc/perlvars.pm" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in", "doc/perlvars.pm" @@ -6949,6 +7903,27 @@ our %unified_info = ( "doc/man7/openssl_user_macros.pod" => [ "doc/man7/openssl_user_macros.pod.in" ], + "exporters/OpenSSLConfig.cmake" => [ + "installdata.pm" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/OpenSSLConfig.cmake", + "installdata.pm" + ], + "exporters/libcrypto.pc" => [ + "installdata.pm" + ], + "exporters/libssl.pc" => [ + "installdata.pm" + ], + "exporters/openssl.pc" => [ + "exporters/libcrypto.pc", + "exporters/libssl.pc", + "installdata.pm" + ], + "fuzz/acert-test" => [ + "libcrypto" + ], "fuzz/asn1-test" => [ "libcrypto", "libssl" @@ -6981,16 +7956,92 @@ our %unified_info = ( "fuzz/ct-test" => [ "libcrypto" ], + "fuzz/decoder-test" => [ + "libcrypto" + ], + "fuzz/dtlsclient-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/dtlsserver-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/hashtable-test" => [ + "libcrypto.a" + ], + "fuzz/ml-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/ml-kem-test" => [ + "libcrypto.a" + ], + "fuzz/pem-test" => [ + "libcrypto.a" + ], + "fuzz/provider-test" => [ + "libcrypto" + ], + "fuzz/punycode-test" => [ + "libcrypto.a" + ], + "fuzz/quic-client-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-lcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-rcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-server-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-srtm-test" => [ + "libcrypto.a", + "libssl.a" + ], "fuzz/server-test" => [ "libcrypto", "libssl" ], + "fuzz/slh-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/smime-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/v3name-test" => [ + "libcrypto.a" + ], "fuzz/x509-test" => [ "libcrypto" ], + "include/internal/param_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], + "include/openssl/core_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], + "libcrypto.pc" => [ + "builddata.pm" + ], "libssl" => [ "libcrypto" ], + "libssl.pc" => [ + "builddata.pm" + ], + "openssl.pc" => [ + "builddata.pm", + "libcrypto.pc", + "libssl.pc" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/DIGESTS.asn1", "providers/common/der/NIST.asn1", @@ -7008,11 +8059,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7052,6 +8111,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov/der_rsa.h" ], @@ -7059,6 +8124,12 @@ our %unified_info = ( "providers/common/include/prov/der_digests.h", "providers/common/include/prov/der_rsa.h" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov/der_wrap.h" ], @@ -7098,11 +8169,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7135,9 +8214,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov/der_sm2.h" ], @@ -7150,9 +8235,15 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/legacy" => [ "libcrypto", "providers/liblegacy.a" @@ -7230,6 +8321,14 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_addr_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/bio_base64_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_callback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7238,6 +8337,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_dgram_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_enc_test" => [ "libcrypto", "test/libtestutil.a" @@ -7246,6 +8349,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_meth_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_prefix_text" => [ "libcrypto", "test/libtestutil.a" @@ -7258,6 +8365,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_tfo_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bioprinttest" => [ "libcrypto", "test/libtestutil.a" @@ -7270,6 +8381,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/build_wincrypt_test" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_aes" => [ "libcrypto", "libssl" @@ -7290,6 +8405,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_byteorder" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_camellia" => [ "libcrypto", "libssl" @@ -7322,10 +8441,6 @@ our %unified_info = ( "libcrypto", "libssl" ], - "test/buildtest_c_core_names" => [ - "libcrypto", - "libssl" - ], "test/buildtest_c_core_object" => [ "libcrypto", "libssl" @@ -7358,6 +8473,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_e_ostime" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_ebcdic" => [ "libcrypto", "libssl" @@ -7394,6 +8513,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_hpke" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_http" => [ "libcrypto", "libssl" @@ -7402,6 +8525,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_indicator" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_kdf" => [ "libcrypto", "libssl" @@ -7422,6 +8549,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_ml_kem" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_modes" => [ "libcrypto", "libssl" @@ -7462,6 +8593,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_quic" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_rand" => [ "libcrypto", "libssl" @@ -7518,6 +8653,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_thread" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_tls1" => [ "libcrypto", "libssl" @@ -7538,10 +8677,23 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/byteorder_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ca_internals_test" => [ + "libssl", + "test/libtestutil.a" + ], "test/casttest" => [ "libcrypto", "test/libtestutil.a" ], + "test/cert_comp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/chacha_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7655,7 +8807,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], - "test/defltfips_test" => [ + "test/decoder_propq_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/defltfips_test" => [ "libcrypto", "test/libtestutil.a" ], @@ -7711,6 +8867,8 @@ our %unified_info = ( ], "test/endecode_test" => [ "libcrypto.a", + "providers/libcommon.a", + "providers/liblegacy.a", "test/libtestutil.a" ], "test/endecoder_legacy_test" => [ @@ -7754,6 +8912,10 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => [ "libcrypto" ], + "test/evp_pkey_dhkem_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/evp_pkey_dparams_test" => [ "libcrypto", "test/libtestutil.a" @@ -7762,10 +8924,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/evp_skey_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/evp_xof_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/exdatatest" => [ "libcrypto", "test/libtestutil.a" @@ -7804,6 +8974,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/hpke_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/http_test" => [ "libcrypto", "test/libtestutil.a" @@ -7816,17 +8990,25 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/json_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/keymgmt_internal_test" => [ "libcrypto.a", "test/libtestutil.a" ], "test/lhash_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/libtestutil.a" => [ "libcrypto" ], + "test/list_test" => [ + "test/libtestutil.a" + ], "test/localetest" => [ "libcrypto", "test/libtestutil.a" @@ -7839,10 +9021,26 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/membio_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/memleaktest" => [ "libcrypto", "test/libtestutil.a" ], + "test/ml_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_evp_extra_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_internal_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/modes_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7867,6 +9065,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pairwise_fail_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/param_build_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7899,6 +9101,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pkcs12_api_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/pkcs12_format_test" => [ "libcrypto", "test/libtestutil.a" @@ -7919,6 +9125,11 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/priority_queue_test" => [ + "libcrypto", + "libssl.a", + "test/libtestutil.a" + ], "test/property_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7931,6 +9142,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/provider_default_search_path_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/provider_fallback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7955,12 +9170,122 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/quic_ackm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cfq_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_client_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fifd_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_lcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_multistream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_newcid_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_qlog_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_radix_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_rcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_record_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srt_gen_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srtm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_stream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_tserver_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txpim_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_wire_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicapitest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicfaultstest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/rand_status_test" => [ "libcrypto", "test/libtestutil.a" ], "test/rand_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/rc2test" => [ @@ -7975,7 +9300,7 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "libcrypto.a", "test/libtestutil.a" ], @@ -7984,6 +9309,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/rpktest" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/rsa_mp_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7996,10 +9326,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/sanitytest" => [ + "test/rsa_x931_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/safe_math_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/sanitytest" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/secmemtest" => [ "libcrypto", "test/libtestutil.a" @@ -8017,6 +9355,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/slh_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/sm2_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8046,6 +9388,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/ssl_handshake_rtt_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/ssl_old_test" => [ "libcrypto.a", "libssl.a", @@ -8062,8 +9409,8 @@ our %unified_info = ( "test/libtestutil.a" ], "test/sslapitest" => [ - "libcrypto", - "libssl", + "libcrypto.a", + "libssl.a", "test/libtestutil.a" ], "test/sslbuffertest" => [ @@ -8080,6 +9427,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/strtoultest" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/sysdefaulttest" => [ "libcrypto", "libssl", @@ -8089,8 +9440,12 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/threadpool_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/threadstest" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/threadstest_fips" => [ @@ -8101,6 +9456,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/time_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/tls13ccstest" => [ "libcrypto", "libssl", @@ -8111,6 +9470,11 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/tls13groupselection_test" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/trace_api_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8148,6 +9512,10 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/x509_acert_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_check_cert_pkey_test" => [ "libcrypto", "test/libtestutil.a" @@ -8160,6 +9528,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/x509_load_cert_file_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_req_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_time_test" => [ "libcrypto", "test/libtestutil.a" @@ -8174,9 +9554,13 @@ our %unified_info = ( }, "dirinfo" => { "apps" => { + "deps" => [ + "apps/ca_internals_test-bin-ca.o" + ], "products" => { "bin" => [ - "apps/openssl" + "apps/openssl", + "test/ca_internals_test" ], "script" => [ "apps/CA.pl", @@ -8187,6 +9571,14 @@ our %unified_info = ( "apps/lib" => { "deps" => [ "apps/lib/openssl-bin-cmp_mock_srv.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", "apps/lib/cmp_client_test-bin-cmp_mock_srv.o", "apps/lib/uitest-bin-apps_ui.o", "apps/lib/libapps-lib-app_libctx.o", @@ -8195,12 +9587,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -8211,6 +9605,7 @@ our %unified_info = ( "products" => { "bin" => [ "apps/openssl", + "test/ca_internals_test", "test/cmp_client_test", "test/uitest" ], @@ -8222,8 +9617,12 @@ our %unified_info = ( }, "crypto" => { "deps" => [ + "crypto/asn1_time_test-bin-ctype.o", + "crypto/ca_internals_test-bin-ctype.o", + "crypto/packettest-bin-quic_vlint.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -8233,10 +9632,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -8253,6 +9655,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -8260,12 +9663,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libcrypto-lib-x86cpuid.o", @@ -8288,6 +9695,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -8296,9 +9704,15 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", "crypto/libfips-lib-x86cpuid.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test", + "test/packettest" + ], "lib" => [ "libcrypto", "providers/libfips.a" @@ -8341,6 +9755,8 @@ our %unified_info = ( }, "crypto/asn1" => { "deps" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", "crypto/asn1/libcrypto-lib-a_bitstr.o", "crypto/asn1/libcrypto-lib-a_d2i_fp.o", "crypto/asn1/libcrypto-lib-a_digest.o", @@ -8407,6 +9823,10 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test" + ], "lib" => [ "libcrypto" ] @@ -8472,6 +9892,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -8632,6 +10053,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -9003,7 +10425,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", - "crypto/err/libcrypto-lib-err_prn.o" + "crypto/err/libcrypto-lib-err_mark.o", + "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o" ], "products" => { "lib" => [ @@ -9104,7 +10528,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/evp/libfips-lib-asymcipher.o", "crypto/evp/libfips-lib-dh_support.o", "crypto/evp/libfips-lib-digest.o", @@ -9120,14 +10546,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", - "crypto/evp/libfips-lib-signature.o" + "crypto/evp/libfips-lib-s_lib.o", + "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o" ], "products" => { "lib" => [ @@ -9160,6 +10587,20 @@ our %unified_info = ( ] } }, + "crypto/hashtable" => { + "deps" => [ + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/hmac" => { "deps" => [ "crypto/hmac/libcrypto-lib-hmac.o", @@ -9172,6 +10613,17 @@ our %unified_info = ( ] } }, + "crypto/hpke" => { + "deps" => [ + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, "crypto/http" => { "deps" => [ "crypto/http/libcrypto-lib-http_client.o", @@ -9256,6 +10708,44 @@ our %unified_info = ( ] } }, + "crypto/ml_dsa" => { + "deps" => [ + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ml_kem" => { + "deps" => [ + "crypto/ml_kem/libcrypto-lib-ml_kem.o", + "crypto/ml_kem/libfips-lib-ml_kem.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/modes" => { "deps" => [ "crypto/modes/libcrypto-lib-cbc128.o", @@ -9270,6 +10760,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -9278,7 +10769,8 @@ our %unified_info = ( "crypto/modes/libfips-lib-ghash-x86.o", "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", - "crypto/modes/libfips-lib-xts128.o" + "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o" ], "products" => { "lib" => [ @@ -9422,6 +10914,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rand/libfips-lib-rand_lib.o" ], @@ -9572,6 +11065,36 @@ our %unified_info = ( ] } }, + "crypto/slh_dsa" => { + "deps" => [ + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/sm2" => { "deps" => [ "crypto/sm2/libcrypto-lib-sm2_crypt.o", @@ -9645,6 +11168,38 @@ our %unified_info = ( ] } }, + "crypto/thread" => { + "deps" => [ + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/thread/arch" => { + "deps" => [ + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/ts" => { "deps" => [ "crypto/ts/libcrypto-lib-ts_asn1.o", @@ -9712,14 +11267,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -9728,12 +11291,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -9741,13 +11309,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -9765,6 +11340,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -9774,6 +11350,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -9801,6 +11378,7 @@ our %unified_info = ( "fuzz" => { "products" => { "bin" => [ + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -9811,13 +11389,31 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test" ] } }, "providers" => { "deps" => [ + "providers/endecode_test-bin-legacyprov.o", "providers/evp_extra_test-bin-legacyprov.o", "providers/libcrypto-lib-baseprov.o", "providers/libcrypto-lib-defltprov.o", @@ -9827,6 +11423,7 @@ our %unified_info = ( ], "products" => { "bin" => [ + "test/endecode_test", "test/evp_extra_test" ], "dso" => [ @@ -9877,8 +11474,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/der/libdefault-lib-der_rsa_sig.o", "providers/common/der/libdefault-lib-der_sm2_gen.o", @@ -9897,6 +11498,7 @@ our %unified_info = ( "providers/fips" => { "deps" => [ "providers/fips/fips-dso-fips_entry.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o" @@ -9940,6 +11542,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -9964,7 +11569,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -10061,7 +11672,10 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", - "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" + "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" ], "products" => { "lib" => [ @@ -10089,7 +11703,9 @@ our %unified_info = ( }, "providers/implementations/kdfs" => { "deps" => [ + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -10108,7 +11724,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", - "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" + "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" ], "products" => { "lib" => [ @@ -10120,13 +11737,22 @@ our %unified_info = ( }, "providers/implementations/kem" => { "deps" => [ + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", - "providers/implementations/kem/libfips-lib-rsa_kem.o" + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", + "providers/implementations/kem/libfips-lib-rsa_kem.o", + "providers/implementations/kem/libtemplate-lib-template_kem.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10138,19 +11764,29 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", - "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10178,18 +11814,18 @@ our %unified_info = ( }, "providers/implementations/rands" => { "deps" => [ - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o" ], "products" => { @@ -10218,13 +11854,31 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", - "providers/implementations/signature/libfips-lib-rsa_sig.o" + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", + "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/skeymgmt" => { + "deps" => [ + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o" ], "products" => { "lib" => [ @@ -10252,14 +11906,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -10275,32 +11930,107 @@ our %unified_info = ( "ssl/libssl-lib-t1_trce.o", "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", - "ssl/libssl-lib-tls_srp.o", - "ssl/libdefault-lib-s3_cbc.o", - "ssl/libfips-lib-s3_cbc.o" + "ssl/libssl-lib-tls_srp.o" ], "products" => { "lib" => [ - "libssl", - "providers/libdefault.a", - "providers/libfips.a" + "libssl" + ] + } + }, + "ssl/quic" => { + "deps" => [ + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, "ssl/record" => { "deps" => [ - "ssl/record/libssl-lib-dtls1_bitmap.o", "ssl/record/libssl-lib-rec_layer_d1.o", - "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/libssl-lib-rec_layer_s3.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "ssl/record/methods" => { + "deps" => [ + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/record/methods/libcommon-lib-tls_pad.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o", + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "products" => { "lib" => [ "libssl", - "providers/libcommon.a" + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "ssl/rio" => { + "deps" => [ + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, @@ -10338,9 +12068,40 @@ our %unified_info = ( "test/helpers/dtlstest-bin-ssltestlib.o", "test/helpers/endecode_test-bin-predefined_dhparams.o", "test/helpers/fatalerrtest-bin-ssltestlib.o", + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/helpers/pkcs12_api_test-bin-pkcs12.o", "test/helpers/pkcs12_format_test-bin-pkcs12.o", + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", "test/helpers/recordlentest-bin-ssltestlib.o", + "test/helpers/rpktest-bin-ssltestlib.o", "test/helpers/servername_test-bin-ssltestlib.o", + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/helpers/ssl_test-bin-handshake.o", "test/helpers/ssl_test-bin-handshake_srp.o", @@ -10349,7 +12110,8 @@ our %unified_info = ( "test/helpers/sslapitest-bin-ssltestlib.o", "test/helpers/sslbuffertest-bin-ssltestlib.o", "test/helpers/sslcorrupttest-bin-ssltestlib.o", - "test/helpers/tls13ccstest-bin-ssltestlib.o" + "test/helpers/tls13ccstest-bin-ssltestlib.o", + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" ], "products" => { "bin" => [ @@ -10367,16 +12129,37 @@ our %unified_info = ( "test/dtlstest", "test/endecode_test", "test/fatalerrtest", + "test/json_test", + "test/pkcs12_api_test", "test/pkcs12_format_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_radix_test", + "test/quic_srt_gen_test", + "test/quicapitest", + "test/quicfaultstest", "test/recordlentest", + "test/rpktest", "test/servername_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", "test/sslapitest", "test/sslbuffertest", "test/sslcorrupttest", - "test/tls13ccstest" + "test/tls13ccstest", + "test/tls13groupselection_test" + ] + } + }, + "test/radix" => { + "deps" => [ + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "products" => { + "bin" => [ + "test/quic_radix_test" ] } }, @@ -10388,6 +12171,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -10423,6 +12207,12 @@ our %unified_info = ( } }, "generate" => { + "OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], "apps/progs.c" => [ "apps/progs.pl", "\"-C\"", @@ -10433,6 +12223,19 @@ our %unified_info = ( "\"-H\"", "\$(APPS_OPENSSL)" ], + "builddata.pm" => [ + "util/mkinstallvars.pl", + "PREFIX=.", + "BINDIR=apps", + "APPLINKDIR=ms", + "LIBDIR=", + "INCLUDEDIR=include", + "\"INCLUDEDIR=\$(SRCDIR)/include\"", + "ENGINESDIR=engines", + "MODULESDIR=providers", + "\"VERSION=\$(VERSION)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"" + ], "crypto/aes/aes-586.S" => [ "crypto/aes/asm/aes-586.pl" ], @@ -10454,6 +12257,24 @@ our %unified_info = ( "crypto/aes/aes-ppc.s" => [ "crypto/aes/asm/aes-ppc.pl" ], + "crypto/aes/aes-riscv32-zkn.s" => [ + "crypto/aes/asm/aes-riscv32-zkn.pl" + ], + "crypto/aes/aes-riscv64-zkn.s" => [ + "crypto/aes/asm/aes-riscv64-zkn.pl" + ], + "crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvbb-zvkg-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkb-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkb-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkned.pl" + ], + "crypto/aes/aes-riscv64.s" => [ + "crypto/aes/asm/aes-riscv64.pl" + ], "crypto/aes/aes-s390x.S" => [ "crypto/aes/asm/aes-s390x.pl" ], @@ -10481,6 +12302,9 @@ our %unified_info = ( "crypto/aes/aesni-x86_64.s" => [ "crypto/aes/asm/aesni-x86_64.pl" ], + "crypto/aes/aesni-xts-avx512.s" => [ + "crypto/aes/asm/aesni-xts-avx512.pl" + ], "crypto/aes/aesp8-ppc.s" => [ "crypto/aes/asm/aesp8-ppc.pl" ], @@ -10493,12 +12317,18 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.S" => [ "crypto/aes/asm/bsaes-armv7.pl" ], + "crypto/aes/bsaes-armv8.S" => [ + "crypto/aes/asm/bsaes-armv8.pl" + ], "crypto/aes/bsaes-x86_64.s" => [ "crypto/aes/asm/bsaes-x86_64.pl" ], "crypto/aes/vpaes-armv8.S" => [ "crypto/aes/asm/vpaes-armv8.pl" ], + "crypto/aes/vpaes-loongarch64.S" => [ + "crypto/aes/asm/vpaes-loongarch64.pl" + ], "crypto/aes/vpaes-ppc.s" => [ "crypto/aes/asm/vpaes-ppc.pl" ], @@ -10559,15 +12389,33 @@ our %unified_info = ( "crypto/bn/ppc-mont.s" => [ "crypto/bn/asm/ppc-mont.pl" ], + "crypto/bn/ppc64-mont-fixed.s" => [ + "crypto/bn/asm/ppc64-mont-fixed.pl" + ], "crypto/bn/ppc64-mont.s" => [ "crypto/bn/asm/ppc64-mont.pl" ], + "crypto/bn/rsaz-2k-avx512.s" => [ + "crypto/bn/asm/rsaz-2k-avx512.pl" + ], + "crypto/bn/rsaz-2k-avxifma.s" => [ + "crypto/bn/asm/rsaz-2k-avxifma.pl" + ], + "crypto/bn/rsaz-3k-avx512.s" => [ + "crypto/bn/asm/rsaz-3k-avx512.pl" + ], + "crypto/bn/rsaz-3k-avxifma.s" => [ + "crypto/bn/asm/rsaz-3k-avxifma.pl" + ], + "crypto/bn/rsaz-4k-avx512.s" => [ + "crypto/bn/asm/rsaz-4k-avx512.pl" + ], + "crypto/bn/rsaz-4k-avxifma.s" => [ + "crypto/bn/asm/rsaz-4k-avxifma.pl" + ], "crypto/bn/rsaz-avx2.s" => [ "crypto/bn/asm/rsaz-avx2.pl" ], - "crypto/bn/rsaz-avx512.s" => [ - "crypto/bn/asm/rsaz-avx512.pl" - ], "crypto/bn/rsaz-x86_64.s" => [ "crypto/bn/asm/rsaz-x86_64.pl" ], @@ -10629,6 +12477,9 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.S" => [ "crypto/chacha/asm/chacha-armv4.pl" ], + "crypto/chacha/chacha-armv8-sve.S" => [ + "crypto/chacha/asm/chacha-armv8-sve.pl" + ], "crypto/chacha/chacha-armv8.S" => [ "crypto/chacha/asm/chacha-armv8.pl" ], @@ -10641,9 +12492,19 @@ our %unified_info = ( "crypto/chacha/chacha-ia64.s" => [ "crypto/chacha/chacha-ia64.S" ], + "crypto/chacha/chacha-loongarch64.S" => [ + "crypto/chacha/asm/chacha-loongarch64.pl" + ], "crypto/chacha/chacha-ppc.s" => [ "crypto/chacha/asm/chacha-ppc.pl" ], + "crypto/chacha/chacha-riscv64-v-zbb-zvkb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl", + "zvkb" + ], + "crypto/chacha/chacha-riscv64-v-zbb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl" + ], "crypto/chacha/chacha-s390x.S" => [ "crypto/chacha/asm/chacha-s390x.pl" ], @@ -10653,6 +12514,9 @@ our %unified_info = ( "crypto/chacha/chacha-x86_64.s" => [ "crypto/chacha/asm/chacha-x86_64.pl" ], + "crypto/chacha/chachap10-ppc.s" => [ + "crypto/chacha/asm/chachap10-ppc.pl" + ], "crypto/des/crypt586.S" => [ "crypto/des/asm/crypt586.pl" ], @@ -10665,6 +12529,9 @@ our %unified_info = ( "crypto/des/dest4-sparcv9.S" => [ "crypto/des/asm/dest4-sparcv9.pl" ], + "crypto/ec/ecp_nistp384-ppc64.s" => [ + "crypto/ec/asm/ecp_nistp384-ppc64.pl" + ], "crypto/ec/ecp_nistp521-ppc64.s" => [ "crypto/ec/asm/ecp_nistp521-ppc64.pl" ], @@ -10689,6 +12556,9 @@ our %unified_info = ( "crypto/ec/ecp_nistz256-x86_64.s" => [ "crypto/ec/asm/ecp_nistz256-x86_64.pl" ], + "crypto/ec/ecp_sm2p256-armv8.S" => [ + "crypto/ec/asm/ecp_sm2p256-armv8.pl" + ], "crypto/ec/x25519-ppc64.s" => [ "crypto/ec/asm/x25519-ppc64.pl" ], @@ -10698,18 +12568,39 @@ our %unified_info = ( "crypto/ia64cpuid.s" => [ "crypto/ia64cpuid.S" ], + "crypto/loongarch64cpuid.s" => [ + "crypto/loongarch64cpuid.pl" + ], "crypto/md5/md5-586.S" => [ "crypto/md5/asm/md5-586.pl" ], + "crypto/md5/md5-aarch64.S" => [ + "crypto/md5/asm/md5-aarch64.pl" + ], + "crypto/md5/md5-loongarch64.S" => [ + "crypto/md5/asm/md5-loongarch64.pl" + ], "crypto/md5/md5-sparcv9.S" => [ "crypto/md5/asm/md5-sparcv9.pl" ], "crypto/md5/md5-x86_64.s" => [ "crypto/md5/asm/md5-x86_64.pl" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.S" => [ + "crypto/modes/asm/aes-gcm-armv8-unroll8_64.pl" + ], "crypto/modes/aes-gcm-armv8_64.S" => [ "crypto/modes/asm/aes-gcm-armv8_64.pl" ], + "crypto/modes/aes-gcm-avx512.s" => [ + "crypto/modes/asm/aes-gcm-avx512.pl" + ], + "crypto/modes/aes-gcm-ppc.s" => [ + "crypto/modes/asm/aes-gcm-ppc.pl" + ], + "crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s" => [ + "crypto/modes/asm/aes-gcm-riscv64-zvkb-zvkg-zvkned.pl" + ], "crypto/modes/aesni-gcm-x86_64.s" => [ "crypto/modes/asm/aesni-gcm-x86_64.pl" ], @@ -10728,6 +12619,15 @@ our %unified_info = ( "crypto/modes/ghash-parisc.s" => [ "crypto/modes/asm/ghash-parisc.pl" ], + "crypto/modes/ghash-riscv64-zvkb-zvbc.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkb-zvbc.pl" + ], + "crypto/modes/ghash-riscv64-zvkg.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkg.pl" + ], + "crypto/modes/ghash-riscv64.s" => [ + "crypto/modes/asm/ghash-riscv64.pl" + ], "crypto/modes/ghash-s390x.S" => [ "crypto/modes/asm/ghash-s390x.pl" ], @@ -10746,6 +12646,9 @@ our %unified_info = ( "crypto/modes/ghashv8-armx.S" => [ "crypto/modes/asm/ghashv8-armx.pl" ], + "crypto/params_idx.c" => [ + "crypto/params_idx.c.in" + ], "crypto/pariscid.s" => [ "crypto/pariscid.pl" ], @@ -10806,6 +12709,12 @@ our %unified_info = ( "crypto/ripemd/rmd-586.S" => [ "crypto/ripemd/asm/rmd-586.pl" ], + "crypto/riscv32cpuid.s" => [ + "crypto/riscv32cpuid.pl" + ], + "crypto/riscv64cpuid.s" => [ + "crypto/riscv64cpuid.pl" + ], "crypto/s390xcpuid.S" => [ "crypto/s390xcpuid.pl" ], @@ -10914,6 +12823,9 @@ our %unified_info = ( "crypto/sha/sha256-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S" => [ + "crypto/sha/asm/sha256-riscv64-zvkb-zvknha_or_zvknhb.pl" + ], "crypto/sha/sha256-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -10950,6 +12862,9 @@ our %unified_info = ( "crypto/sha/sha512-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha512-riscv64-zvkb-zvknhb.S" => [ + "crypto/sha/asm/sha512-riscv64-zvkb-zvknhb.pl" + ], "crypto/sha/sha512-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -10962,6 +12877,24 @@ our %unified_info = ( "crypto/sha/sha512p8-ppc.s" => [ "crypto/sha/asm/sha512p8-ppc.pl" ], + "crypto/sm3/sm3-armv8.S" => [ + "crypto/sm3/asm/sm3-armv8.pl" + ], + "crypto/sm3/sm3-riscv64-zvksh.S" => [ + "crypto/sm3/asm/sm3-riscv64-zvksh.pl" + ], + "crypto/sm4/sm4-armv8.S" => [ + "crypto/sm4/asm/sm4-armv8.pl" + ], + "crypto/sm4/sm4-riscv64-zvksed.s" => [ + "crypto/sm4/asm/sm4-riscv64-zvksed.pl" + ], + "crypto/sm4/vpsm4-armv8.S" => [ + "crypto/sm4/asm/vpsm4-armv8.pl" + ], + "crypto/sm4/vpsm4_ex-armv8.S" => [ + "crypto/sm4/asm/vpsm4_ex-armv8.pl" + ], "crypto/uplink-ia64.s" => [ "ms/uplink-ia64.pl" ], @@ -11127,6 +13060,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -11268,6 +13204,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -11304,6 +13243,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -11319,6 +13261,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -11391,6 +13336,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -11457,6 +13405,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -11556,6 +13507,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -11694,6 +13651,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -11811,6 +13771,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -11898,6 +13864,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -11970,9 +13939,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -11988,12 +13963,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -12063,9 +14044,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -12075,12 +14065,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -12096,9 +14098,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -12123,6 +14131,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -12138,6 +14149,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -12174,6 +14188,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -12447,6 +14464,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -12486,6 +14506,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -12507,6 +14530,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -12621,6 +14647,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -12648,9 +14677,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -12666,6 +14707,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -12675,12 +14719,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -12699,12 +14749,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -12714,9 +14776,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -12729,9 +14797,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -12747,24 +14827,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -12777,6 +14878,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -12786,8 +14893,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -12807,6 +14914,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -12855,6 +14977,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -12921,6 +15046,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -13044,9 +15172,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -13062,6 +15196,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -13086,9 +15223,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -13122,6 +15268,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -13179,15 +15328,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -13197,6 +15358,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -13218,9 +15382,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -13236,6 +15406,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -13248,9 +15421,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -13281,9 +15451,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -13299,12 +15466,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -13359,6 +15580,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -13368,9 +15592,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -13518,6 +15739,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -13659,6 +15883,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -13695,6 +15922,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -13710,6 +15940,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -13782,6 +16015,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -13848,6 +16084,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -13947,6 +16186,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -14085,6 +16330,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -14202,6 +16450,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -14289,6 +16543,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -14361,9 +16618,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -14379,12 +16642,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -14454,9 +16723,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -14466,12 +16744,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -14487,9 +16777,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -14514,6 +16810,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -14529,6 +16828,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -14565,6 +16867,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -14838,6 +17143,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -14877,6 +17185,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -14898,6 +17209,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -15012,6 +17326,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -15039,9 +17356,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -15057,6 +17386,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -15066,12 +17398,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -15090,12 +17428,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -15105,9 +17455,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -15120,9 +17476,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -15138,24 +17506,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -15168,6 +17557,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -15177,8 +17572,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -15198,6 +17593,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -15246,6 +17656,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -15312,6 +17725,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -15435,9 +17851,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -15453,6 +17875,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -15477,9 +17902,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -15513,6 +17947,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -15570,15 +18007,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -15588,6 +18037,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -15609,9 +18061,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -15627,6 +18085,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -15639,9 +18100,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -15672,9 +18130,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -15690,12 +18145,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -15750,6 +18259,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -15759,9 +18271,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -15897,6 +18406,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc/man1/openssl-sess_id.pod.in" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in" ], @@ -15933,12 +18445,30 @@ our %unified_info = ( "engines/e_padlock-x86_64.s" => [ "engines/asm/e_padlock-x86_64.pl" ], + "exporters/OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], + "exporters/libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], + "exporters/libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "exporters/openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "include/crypto/bn_conf.h" => [ "include/crypto/bn_conf.h.in" ], "include/crypto/dso_conf.h" => [ "include/crypto/dso_conf.h.in" ], + "include/internal/param_names.h" => [ + "include/internal/param_names.h.in" + ], "include/openssl/asn1.h" => [ "include/openssl/asn1.h.in" ], @@ -15954,12 +18484,18 @@ our %unified_info = ( "include/openssl/cms.h" => [ "include/openssl/cms.h.in" ], + "include/openssl/comp.h" => [ + "include/openssl/comp.h.in" + ], "include/openssl/conf.h" => [ "include/openssl/conf.h.in" ], "include/openssl/configuration.h" => [ "include/openssl/configuration.h.in" ], + "include/openssl/core_names.h" => [ + "include/openssl/core_names.h.in" + ], "include/openssl/crmf.h" => [ "include/openssl/crmf.h.in" ], @@ -16008,12 +18544,39 @@ our %unified_info = ( "include/openssl/x509.h" => [ "include/openssl/x509.h.in" ], + "include/openssl/x509_acert.h" => [ + "include/openssl/x509_acert.h.in" + ], "include/openssl/x509_vfy.h" => [ "include/openssl/x509_vfy.h.in" ], "include/openssl/x509v3.h" => [ "include/openssl/x509v3.h.in" ], + "installdata.pm" => [ + "util/mkinstallvars.pl", + "\"PREFIX=\$(INSTALLTOP)\"", + "BINDIR=bin", + "\"LIBDIR=\$(LIBDIR)\"", + "\"libdir=\$(libdir)\"", + "INCLUDEDIR=include", + "APPLINKDIR=include/openssl", + "\"ENGINESDIR=\$(ENGINESDIR)\"", + "\"MODULESDIR=\$(MODULESDIR)\"", + "\"PKGCONFIGDIR=\$(PKGCONFIGDIR)\"", + "\"CMAKECONFIGDIR=\$(CMAKECONFIGDIR)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"", + "\"VERSION=\$(VERSION)\"" + ], + "libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], + "libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/der_digests_gen.c.in" ], @@ -16026,9 +18589,15 @@ our %unified_info = ( "providers/common/der/der_ecx_gen.c" => [ "providers/common/der/der_ecx_gen.c.in" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/der_ml_dsa_gen.c.in" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/der_rsa_gen.c.in" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/der_slh_dsa_gen.c.in" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/der_sm2_gen.c.in" ], @@ -16047,9 +18616,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/include/prov/der_ecx.h.in" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/include/prov/der_ml_dsa.h.in" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/include/prov/der_rsa.h.in" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/include/prov/der_slh_dsa.h.in" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/include/prov/der_sm2.h.in" ], @@ -16085,6 +18660,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "buffer" ], + "test/buildtest_byteorder.c" => [ + "test/generate_buildtest.pl", + "byteorder" + ], "test/buildtest_camellia.c" => [ "test/generate_buildtest.pl", "camellia" @@ -16117,10 +18696,6 @@ our %unified_info = ( "test/generate_buildtest.pl", "core_dispatch" ], - "test/buildtest_core_names.c" => [ - "test/generate_buildtest.pl", - "core_names" - ], "test/buildtest_core_object.c" => [ "test/generate_buildtest.pl", "core_object" @@ -16153,6 +18728,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "e_os2" ], + "test/buildtest_e_ostime.c" => [ + "test/generate_buildtest.pl", + "e_ostime" + ], "test/buildtest_ebcdic.c" => [ "test/generate_buildtest.pl", "ebcdic" @@ -16189,6 +18768,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "hmac" ], + "test/buildtest_hpke.c" => [ + "test/generate_buildtest.pl", + "hpke" + ], "test/buildtest_http.c" => [ "test/generate_buildtest.pl", "http" @@ -16197,6 +18780,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "idea" ], + "test/buildtest_indicator.c" => [ + "test/generate_buildtest.pl", + "indicator" + ], "test/buildtest_kdf.c" => [ "test/generate_buildtest.pl", "kdf" @@ -16217,6 +18804,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "mdc2" ], + "test/buildtest_ml_kem.c" => [ + "test/generate_buildtest.pl", + "ml_kem" + ], "test/buildtest_modes.c" => [ "test/generate_buildtest.pl", "modes" @@ -16257,6 +18848,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "provider" ], + "test/buildtest_quic.c" => [ + "test/generate_buildtest.pl", + "quic" + ], "test/buildtest_rand.c" => [ "test/generate_buildtest.pl", "rand" @@ -16313,6 +18908,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "symhacks" ], + "test/buildtest_thread.c" => [ + "test/generate_buildtest.pl", + "thread" + ], "test/buildtest_tls1.c" => [ "test/generate_buildtest.pl", "tls1" @@ -16387,6 +18986,7 @@ our %unified_info = ( "doc/html/man1/openssl-s_server.html", "doc/html/man1/openssl-s_time.html", "doc/html/man1/openssl-sess_id.html", + "doc/html/man1/openssl-skeyutl.html", "doc/html/man1/openssl-smime.html", "doc/html/man1/openssl-speed.html", "doc/html/man1/openssl-spkac.html", @@ -16436,6 +19036,7 @@ our %unified_info = ( "doc/html/man3/BIO_find_type.html", "doc/html/man3/BIO_get_data.html", "doc/html/man3/BIO_get_ex_new_index.html", + "doc/html/man3/BIO_get_rpoll_descriptor.html", "doc/html/man3/BIO_meth_new.html", "doc/html/man3/BIO_new.html", "doc/html/man3/BIO_new_CMS.html", @@ -16448,11 +19049,13 @@ our %unified_info = ( "doc/html/man3/BIO_s_connect.html", "doc/html/man3/BIO_s_core.html", "doc/html/man3/BIO_s_datagram.html", + "doc/html/man3/BIO_s_dgram_pair.html", "doc/html/man3/BIO_s_fd.html", "doc/html/man3/BIO_s_file.html", "doc/html/man3/BIO_s_mem.html", "doc/html/man3/BIO_s_null.html", "doc/html/man3/BIO_s_socket.html", + "doc/html/man3/BIO_sendmmsg.html", "doc/html/man3/BIO_set_callback.html", "doc/html/man3/BIO_should_retry.html", "doc/html/man3/BIO_socket_wait.html", @@ -16477,6 +19080,7 @@ our %unified_info = ( "doc/html/man3/BN_swap.html", "doc/html/man3/BN_zero.html", "doc/html/man3/BUF_MEM_new.html", + "doc/html/man3/CMAC_CTX.html", "doc/html/man3/CMS_EncryptedData_decrypt.html", "doc/html/man3/CMS_EncryptedData_encrypt.html", "doc/html/man3/CMS_EnvelopedData_create.html", @@ -16499,6 +19103,7 @@ our %unified_info = ( "doc/html/man3/CMS_uncompress.html", "doc/html/man3/CMS_verify.html", "doc/html/man3/CMS_verify_receipt.html", + "doc/html/man3/COMP_CTX_new.html", "doc/html/man3/CONF_modules_free.html", "doc/html/man3/CONF_modules_load_file.html", "doc/html/man3/CRYPTO_THREAD_run_once.html", @@ -16532,6 +19137,8 @@ our %unified_info = ( "doc/html/man3/DSA_size.html", "doc/html/man3/DTLS_get_data_mtu.html", "doc/html/man3/DTLS_set_timer_cb.html", + "doc/html/man3/DTLSv1_get_timeout.html", + "doc/html/man3/DTLSv1_handle_timeout.html", "doc/html/man3/DTLSv1_listen.html", "doc/html/man3/ECDSA_SIG_new.html", "doc/html/man3/ECDSA_sign.html", @@ -16578,6 +19185,7 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_ctrl.html", "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html", "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html", + "doc/html/man3/EVP_PKEY_CTX_get_algor.html", "doc/html/man3/EVP_PKEY_CTX_new.html", "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html", "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html", @@ -16617,6 +19225,8 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_verify_recover.html", "doc/html/man3/EVP_RAND.html", "doc/html/man3/EVP_SIGNATURE.html", + "doc/html/man3/EVP_SKEY.html", + "doc/html/man3/EVP_SKEYMGMT.html", "doc/html/man3/EVP_SealInit.html", "doc/html/man3/EVP_SignInit.html", "doc/html/man3/EVP_VerifyInit.html", @@ -16646,6 +19256,7 @@ our %unified_info = ( "doc/html/man3/EVP_sm3.html", "doc/html/man3/EVP_sm4_cbc.html", "doc/html/man3/EVP_whirlpool.html", + "doc/html/man3/GENERAL_NAME.html", "doc/html/man3/HMAC.html", "doc/html/man3/MD5.html", "doc/html/man3/MDC2_Init.html", @@ -16670,14 +19281,18 @@ our %unified_info = ( "doc/html/man3/OPENSSL_init_ssl.html", "doc/html/man3/OPENSSL_instrument_bus.html", "doc/html/man3/OPENSSL_load_builtin_modules.html", + "doc/html/man3/OPENSSL_load_u16_le.html", "doc/html/man3/OPENSSL_malloc.html", + "doc/html/man3/OPENSSL_riscvcap.html", "doc/html/man3/OPENSSL_s390xcap.html", "doc/html/man3/OPENSSL_secure_malloc.html", "doc/html/man3/OPENSSL_strcasecmp.html", "doc/html/man3/OSSL_ALGORITHM.html", "doc/html/man3/OSSL_CALLBACK.html", + "doc/html/man3/OSSL_CMP_ATAV_set0.html", "doc/html/man3/OSSL_CMP_CTX_new.html", "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html", + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html", "doc/html/man3/OSSL_CMP_ITAV_set0.html", "doc/html/man3/OSSL_CMP_MSG_get0_header.html", "doc/html/man3/OSSL_CMP_MSG_http_perform.html", @@ -16701,18 +19316,27 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_CTX.html", "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html", "doc/html/man3/OSSL_ENCODER_to_bio.html", + "doc/html/man3/OSSL_ERR_STATE_save.html", "doc/html/man3/OSSL_ESS_check_signing_certs.html", + "doc/html/man3/OSSL_GENERAL_NAMES_print.html", + "doc/html/man3/OSSL_HPKE_CTX_new.html", "doc/html/man3/OSSL_HTTP_REQ_CTX.html", "doc/html/man3/OSSL_HTTP_parse_url.html", "doc/html/man3/OSSL_HTTP_transfer.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html", + "doc/html/man3/OSSL_INDICATOR_set_callback.html", "doc/html/man3/OSSL_ITEM.html", "doc/html/man3/OSSL_LIB_CTX.html", + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html", "doc/html/man3/OSSL_PARAM.html", "doc/html/man3/OSSL_PARAM_BLD.html", "doc/html/man3/OSSL_PARAM_allocate_from_text.html", "doc/html/man3/OSSL_PARAM_dup.html", "doc/html/man3/OSSL_PARAM_int.html", + "doc/html/man3/OSSL_PARAM_print_to_bio.html", "doc/html/man3/OSSL_PROVIDER.html", + "doc/html/man3/OSSL_QUIC_client_method.html", "doc/html/man3/OSSL_SELF_TEST_new.html", "doc/html/man3/OSSL_SELF_TEST_set_callback.html", "doc/html/man3/OSSL_STORE_INFO.html", @@ -16721,11 +19345,13 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_attach.html", "doc/html/man3/OSSL_STORE_expect.html", "doc/html/man3/OSSL_STORE_open.html", + "doc/html/man3/OSSL_sleep.html", "doc/html/man3/OSSL_trace_enabled.html", "doc/html/man3/OSSL_trace_get_category_num.html", "doc/html/man3/OSSL_trace_set_channel.html", "doc/html/man3/OpenSSL_add_all_algorithms.html", "doc/html/man3/OpenSSL_version.html", + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html", "doc/html/man3/PEM_X509_INFO_read_bio_ex.html", "doc/html/man3/PEM_bytes_read_bio.html", "doc/html/man3/PEM_read.html", @@ -16738,6 +19364,7 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_create_cert.html", "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html", "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html", + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html", "doc/html/man3/PKCS12_add1_attr_by_NID.html", "doc/html/man3/PKCS12_add_CSPName_asc.html", "doc/html/man3/PKCS12_add_cert.html", @@ -16829,6 +19456,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_sess_set_get_cb.html", "doc/html/man3/SSL_CTX_sessions.html", "doc/html/man3/SSL_CTX_set0_CA_list.html", + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html", "doc/html/man3/SSL_CTX_set1_curves.html", "doc/html/man3/SSL_CTX_set1_sigalgs.html", "doc/html/man3/SSL_CTX_set1_verify_cert_store.html", @@ -16842,6 +19470,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_ct_validation_callback.html", "doc/html/man3/SSL_CTX_set_ctlog_list_file.html", "doc/html/man3/SSL_CTX_set_default_passwd_cb.html", + "doc/html/man3/SSL_CTX_set_domain_flags.html", "doc/html/man3/SSL_CTX_set_generate_session_id.html", "doc/html/man3/SSL_CTX_set_info_callback.html", "doc/html/man3/SSL_CTX_set_keylog_callback.html", @@ -16849,6 +19478,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_min_proto_version.html", "doc/html/man3/SSL_CTX_set_mode.html", "doc/html/man3/SSL_CTX_set_msg_callback.html", + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html", "doc/html/man3/SSL_CTX_set_num_tickets.html", "doc/html/man3/SSL_CTX_set_options.html", "doc/html/man3/SSL_CTX_set_psk_client_callback.html", @@ -16887,6 +19517,7 @@ our %unified_info = ( "doc/html/man3/SSL_SESSION_print.html", "doc/html/man3/SSL_SESSION_set1_id.html", "doc/html/man3/SSL_accept.html", + "doc/html/man3/SSL_accept_stream.html", "doc/html/man3/SSL_alert_type_string.html", "doc/html/man3/SSL_alloc_buffers.html", "doc/html/man3/SSL_check_chain.html", @@ -16896,59 +19527,90 @@ our %unified_info = ( "doc/html/man3/SSL_export_keying_material.html", "doc/html/man3/SSL_extension_supported.html", "doc/html/man3/SSL_free.html", + "doc/html/man3/SSL_get0_connection.html", + "doc/html/man3/SSL_get0_group_name.html", + "doc/html/man3/SSL_get0_peer_rpk.html", "doc/html/man3/SSL_get0_peer_scts.html", + "doc/html/man3/SSL_get1_builtin_sigalgs.html", "doc/html/man3/SSL_get_SSL_CTX.html", "doc/html/man3/SSL_get_all_async_fds.html", "doc/html/man3/SSL_get_certificate.html", "doc/html/man3/SSL_get_ciphers.html", "doc/html/man3/SSL_get_client_random.html", + "doc/html/man3/SSL_get_conn_close_info.html", "doc/html/man3/SSL_get_current_cipher.html", "doc/html/man3/SSL_get_default_timeout.html", "doc/html/man3/SSL_get_error.html", + "doc/html/man3/SSL_get_event_timeout.html", "doc/html/man3/SSL_get_extms_support.html", "doc/html/man3/SSL_get_fd.html", + "doc/html/man3/SSL_get_handshake_rtt.html", "doc/html/man3/SSL_get_peer_cert_chain.html", "doc/html/man3/SSL_get_peer_certificate.html", "doc/html/man3/SSL_get_peer_signature_nid.html", "doc/html/man3/SSL_get_peer_tmp_key.html", "doc/html/man3/SSL_get_psk_identity.html", "doc/html/man3/SSL_get_rbio.html", + "doc/html/man3/SSL_get_rpoll_descriptor.html", "doc/html/man3/SSL_get_session.html", "doc/html/man3/SSL_get_shared_sigalgs.html", + "doc/html/man3/SSL_get_stream_id.html", + "doc/html/man3/SSL_get_stream_read_state.html", + "doc/html/man3/SSL_get_value_uint.html", "doc/html/man3/SSL_get_verify_result.html", "doc/html/man3/SSL_get_version.html", "doc/html/man3/SSL_group_to_name.html", + "doc/html/man3/SSL_handle_events.html", "doc/html/man3/SSL_in_init.html", + "doc/html/man3/SSL_inject_net_dgram.html", "doc/html/man3/SSL_key_update.html", "doc/html/man3/SSL_library_init.html", "doc/html/man3/SSL_load_client_CA_file.html", "doc/html/man3/SSL_new.html", + "doc/html/man3/SSL_new_domain.html", + "doc/html/man3/SSL_new_listener.html", + "doc/html/man3/SSL_new_stream.html", "doc/html/man3/SSL_pending.html", + "doc/html/man3/SSL_poll.html", "doc/html/man3/SSL_read.html", "doc/html/man3/SSL_read_early_data.html", "doc/html/man3/SSL_rstate_string.html", "doc/html/man3/SSL_session_reused.html", "doc/html/man3/SSL_set1_host.html", + "doc/html/man3/SSL_set1_initial_peer_addr.html", + "doc/html/man3/SSL_set1_server_cert_type.html", "doc/html/man3/SSL_set_async_callback.html", "doc/html/man3/SSL_set_bio.html", + "doc/html/man3/SSL_set_blocking_mode.html", "doc/html/man3/SSL_set_connect_state.html", + "doc/html/man3/SSL_set_default_stream_mode.html", "doc/html/man3/SSL_set_fd.html", + "doc/html/man3/SSL_set_incoming_stream_policy.html", + "doc/html/man3/SSL_set_quic_tls_cbs.html", "doc/html/man3/SSL_set_retry_verify.html", "doc/html/man3/SSL_set_session.html", + "doc/html/man3/SSL_set_session_secret_cb.html", "doc/html/man3/SSL_set_shutdown.html", "doc/html/man3/SSL_set_verify_result.html", "doc/html/man3/SSL_shutdown.html", "doc/html/man3/SSL_state_string.html", + "doc/html/man3/SSL_stream_conclude.html", + "doc/html/man3/SSL_stream_reset.html", "doc/html/man3/SSL_want.html", "doc/html/man3/SSL_write.html", "doc/html/man3/TS_RESP_CTX_new.html", - "doc/html/man3/TS_VERIFY_CTX_set_certs.html", + "doc/html/man3/TS_VERIFY_CTX.html", "doc/html/man3/UI_STRING.html", "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", + "doc/html/man3/X509_ACERT_add1_attr.html", + "doc/html/man3/X509_ACERT_add_attr_nconf.html", + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html", + "doc/html/man3/X509_ACERT_get_attr.html", + "doc/html/man3/X509_ACERT_print_ex.html", "doc/html/man3/X509_ALGOR_dup.html", "doc/html/man3/X509_ATTRIBUTE.html", "doc/html/man3/X509_CRL_get0_by_serial.html", @@ -16965,6 +19627,7 @@ our %unified_info = ( "doc/html/man3/X509_REQ_get_attr.html", "doc/html/man3/X509_REQ_get_extensions.html", "doc/html/man3/X509_SIG_get0.html", + "doc/html/man3/X509_STORE_CTX_get_by_subject.html", "doc/html/man3/X509_STORE_CTX_get_error.html", "doc/html/man3/X509_STORE_CTX_new.html", "doc/html/man3/X509_STORE_CTX_set_verify_cb.html", @@ -16987,6 +19650,7 @@ our %unified_info = ( "doc/html/man3/X509_get0_notBefore.html", "doc/html/man3/X509_get0_signature.html", "doc/html/man3/X509_get0_uids.html", + "doc/html/man3/X509_get_default_cert_file.html", "doc/html/man3/X509_get_extension_flags.html", "doc/html/man3/X509_get_pubkey.html", "doc/html/man3/X509_get_serialNumber.html", @@ -17032,12 +19696,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-RC5.html", "doc/html/man7/EVP_CIPHER-SEED.html", "doc/html/man7/EVP_CIPHER-SM4.html", + "doc/html/man7/EVP_KDF-ARGON2.html", "doc/html/man7/EVP_KDF-HKDF.html", + "doc/html/man7/EVP_KDF-HMAC-DRBG.html", "doc/html/man7/EVP_KDF-KB.html", "doc/html/man7/EVP_KDF-KRB5KDF.html", "doc/html/man7/EVP_KDF-PBKDF1.html", "doc/html/man7/EVP_KDF-PBKDF2.html", "doc/html/man7/EVP_KDF-PKCS12KDF.html", + "doc/html/man7/EVP_KDF-PVKKDF.html", "doc/html/man7/EVP_KDF-SCRYPT.html", "doc/html/man7/EVP_KDF-SS.html", "doc/html/man7/EVP_KDF-SSHKDF.html", @@ -17046,7 +19713,10 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X942-ASN1.html", "doc/html/man7/EVP_KDF-X942-CONCAT.html", "doc/html/man7/EVP_KDF-X963.html", + "doc/html/man7/EVP_KEM-EC.html", + "doc/html/man7/EVP_KEM-ML-KEM.html", "doc/html/man7/EVP_KEM-RSA.html", + "doc/html/man7/EVP_KEM-X25519.html", "doc/html/man7/EVP_KEYEXCH-DH.html", "doc/html/man7/EVP_KEYEXCH-ECDH.html", "doc/html/man7/EVP_KEYEXCH-X25519.html", @@ -17058,6 +19728,7 @@ our %unified_info = ( "doc/html/man7/EVP_MAC-Poly1305.html", "doc/html/man7/EVP_MAC-Siphash.html", "doc/html/man7/EVP_MD-BLAKE2.html", + "doc/html/man7/EVP_MD-KECCAK.html", "doc/html/man7/EVP_MD-MD2.html", "doc/html/man7/EVP_MD-MD4.html", "doc/html/man7/EVP_MD-MD5-SHA1.html", @@ -17077,12 +19748,17 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-EC.html", "doc/html/man7/EVP_PKEY-FFC.html", "doc/html/man7/EVP_PKEY-HMAC.html", + "doc/html/man7/EVP_PKEY-ML-DSA.html", + "doc/html/man7/EVP_PKEY-ML-KEM.html", "doc/html/man7/EVP_PKEY-RSA.html", + "doc/html/man7/EVP_PKEY-SLH-DSA.html", "doc/html/man7/EVP_PKEY-SM2.html", "doc/html/man7/EVP_PKEY-X25519.html", + "doc/html/man7/EVP_RAND-CRNG-TEST.html", "doc/html/man7/EVP_RAND-CTR-DRBG.html", "doc/html/man7/EVP_RAND-HASH-DRBG.html", "doc/html/man7/EVP_RAND-HMAC-DRBG.html", + "doc/html/man7/EVP_RAND-JITTER.html", "doc/html/man7/EVP_RAND-SEED-SRC.html", "doc/html/man7/EVP_RAND-TEST-RAND.html", "doc/html/man7/EVP_RAND.html", @@ -17090,17 +19766,19 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-ECDSA.html", "doc/html/man7/EVP_SIGNATURE-ED25519.html", "doc/html/man7/EVP_SIGNATURE-HMAC.html", + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html", "doc/html/man7/EVP_SIGNATURE-RSA.html", + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html", "doc/html/man7/OSSL_PROVIDER-FIPS.html", "doc/html/man7/OSSL_PROVIDER-base.html", "doc/html/man7/OSSL_PROVIDER-default.html", "doc/html/man7/OSSL_PROVIDER-legacy.html", "doc/html/man7/OSSL_PROVIDER-null.html", + "doc/html/man7/OSSL_STORE-winstore.html", "doc/html/man7/RAND.html", "doc/html/man7/RSA-PSS.html", "doc/html/man7/X25519.html", "doc/html/man7/bio.html", - "doc/html/man7/crypto.html", "doc/html/man7/ct.html", "doc/html/man7/des_modes.html", "doc/html/man7/evp.html", @@ -17111,14 +19789,31 @@ our %unified_info = ( "doc/html/man7/life_cycle-mac.html", "doc/html/man7/life_cycle-pkey.html", "doc/html/man7/life_cycle-rand.html", - "doc/html/man7/migration_guide.html", "doc/html/man7/openssl-core.h.html", "doc/html/man7/openssl-core_dispatch.h.html", "doc/html/man7/openssl-core_names.h.html", "doc/html/man7/openssl-env.html", "doc/html/man7/openssl-glossary.html", + "doc/html/man7/openssl-qlog.html", + "doc/html/man7/openssl-quic-concurrency.html", + "doc/html/man7/openssl-quic.html", "doc/html/man7/openssl-threads.html", "doc/html/man7/openssl_user_macros.html", + "doc/html/man7/ossl-guide-introduction.html", + "doc/html/man7/ossl-guide-libcrypto-introduction.html", + "doc/html/man7/ossl-guide-libraries-introduction.html", + "doc/html/man7/ossl-guide-libssl-introduction.html", + "doc/html/man7/ossl-guide-migration.html", + "doc/html/man7/ossl-guide-quic-client-block.html", + "doc/html/man7/ossl-guide-quic-client-non-block.html", + "doc/html/man7/ossl-guide-quic-introduction.html", + "doc/html/man7/ossl-guide-quic-multi-stream.html", + "doc/html/man7/ossl-guide-quic-server-block.html", + "doc/html/man7/ossl-guide-quic-server-non-block.html", + "doc/html/man7/ossl-guide-tls-client-block.html", + "doc/html/man7/ossl-guide-tls-client-non-block.html", + "doc/html/man7/ossl-guide-tls-introduction.html", + "doc/html/man7/ossl-guide-tls-server-block.html", "doc/html/man7/ossl_store-file.html", "doc/html/man7/ossl_store.html", "doc/html/man7/passphrase-encoding.html", @@ -17137,10 +19832,10 @@ our %unified_info = ( "doc/html/man7/provider-object.html", "doc/html/man7/provider-rand.html", "doc/html/man7/provider-signature.html", + "doc/html/man7/provider-skeymgmt.html", "doc/html/man7/provider-storemgmt.html", "doc/html/man7/provider.html", "doc/html/man7/proxy-certificates.html", - "doc/html/man7/ssl.html", "doc/html/man7/x509.html" ] }, @@ -17155,12 +19850,21 @@ our %unified_info = ( ] }, "includes" => { + "OpenSSLConfig.cmake" => [ + "." + ], + "OpenSSLConfigVersion.cmake" => [ + "." + ], "apps/asn1parse.o" => [ "apps" ], "apps/ca.o" => [ "apps" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps" + ], "apps/ciphers.o" => [ "apps" ], @@ -17387,6 +20091,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps" + ], "apps/openssl-bin-smime.o" => [ "apps" ], @@ -17474,6 +20181,9 @@ our %unified_info = ( "apps/sess_id.o" => [ "apps" ], + "apps/skeyutl.o" => [ + "apps" + ], "apps/smime.o" => [ "apps" ], @@ -17525,6 +20235,12 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.o" => [ "crypto" ], + "crypto/aes/vpaes-armv8.o" => [ + "crypto" + ], + "crypto/aes/vpaes-loongarch64.o" => [ + "crypto" + ], "crypto/arm64cpuid.o" => [ "crypto" ], @@ -17576,9 +20292,15 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.o" => [ "crypto" ], + "crypto/chacha/chacha-armv8-sve.o" => [ + "crypto" + ], "crypto/chacha/chacha-armv8.o" => [ "crypto" ], + "crypto/chacha/chacha-loongarch64.o" => [ + "crypto" + ], "crypto/chacha/chacha-s390x.o" => [ "crypto" ], @@ -17603,15 +20325,27 @@ our %unified_info = ( "crypto/ec/ecp_s390x_nistp.o" => [ "crypto" ], + "crypto/ec/ecp_sm2p256-armv8.o" => [ + "crypto" + ], + "crypto/ec/ecx_key.o" => [ + "crypto" + ], "crypto/ec/ecx_meth.o" => [ "crypto" ], "crypto/ec/ecx_s390x.o" => [ "crypto" ], + "crypto/ec/libcrypto-lib-ecx_key.o" => [ + "crypto" + ], "crypto/ec/libcrypto-lib-ecx_meth.o" => [ "crypto" ], + "crypto/ec/libfips-lib-ecx_key.o" => [ + "crypto" + ], "crypto/evp/e_aes.o" => [ "crypto", "crypto/modes" @@ -17683,9 +20417,18 @@ our %unified_info = ( "crypto/libfips-lib-cpuid.o" => [ "." ], + "crypto/md5/md5-aarch64.o" => [ + "crypto" + ], + "crypto/md5/md5-loongarch64.o" => [ + "crypto" + ], "crypto/md5/md5-sparcv9.o" => [ "crypto" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.o" => [ + "crypto" + ], "crypto/modes/aes-gcm-armv8_64.o" => [ "crypto" ], @@ -17710,6 +20453,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-gcm128.o" => [ "crypto" ], + "crypto/params_idx.c" => [ + "util/perl" + ], "crypto/poly1305/poly1305-armv4.o" => [ "crypto" ], @@ -17731,6 +20477,9 @@ our %unified_info = ( "crypto/sha/keccak1600-armv4.o" => [ "crypto" ], + "crypto/sha/keccak1600-armv8.o" => [ + "crypto" + ], "crypto/sha/sha1-armv4-large.o" => [ "crypto" ], @@ -17776,6 +20525,18 @@ our %unified_info = ( "crypto/sha/sha512-sparcv9.o" => [ "crypto" ], + "crypto/sm3/sm3-armv8.o" => [ + "crypto" + ], + "crypto/sm4/sm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4_ex-armv8.o" => [ + "crypto" + ], "doc/man1/openssl-asn1parse.pod" => [ "doc" ], @@ -17908,6 +20669,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc" + ], "doc/man1/openssl-smime.pod" => [ "doc" ], @@ -17935,6 +20699,24 @@ our %unified_info = ( "doc/man1/openssl-x509.pod" => [ "doc" ], + "exporters/OpenSSLConfig.cmake" => [ + "." + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "." + ], + "exporters/libcrypto.pc" => [ + "." + ], + "exporters/libssl.pc" => [ + "." + ], + "exporters/openssl.pc" => [ + "." + ], + "fuzz/acert-test" => [ + "include" + ], "fuzz/asn1-test" => [ "include" ], @@ -17965,22 +20747,88 @@ our %unified_info = ( "fuzz/ct-test" => [ "include" ], + "fuzz/decoder-test" => [ + "include" + ], + "fuzz/dtlsclient-test" => [ + "include" + ], + "fuzz/dtlsserver-test" => [ + "include" + ], + "fuzz/hashtable-test" => [ + "include" + ], + "fuzz/ml-dsa-test" => [ + "include" + ], + "fuzz/ml-kem-test" => [ + "include" + ], + "fuzz/pem-test" => [ + "include" + ], + "fuzz/provider-test" => [ + "include" + ], + "fuzz/punycode-test" => [ + "include" + ], + "fuzz/quic-client-test" => [ + "include" + ], + "fuzz/quic-lcidm-test" => [ + "include" + ], + "fuzz/quic-rcidm-test" => [ + "include" + ], + "fuzz/quic-server-test" => [ + "include" + ], + "fuzz/quic-srtm-test" => [ + "include" + ], "fuzz/server-test" => [ "include" ], + "fuzz/slh-dsa-test" => [ + "include" + ], + "fuzz/smime-test" => [ + "include" + ], + "fuzz/v3name-test" => [ + "include" + ], "fuzz/x509-test" => [ "include" ], + "include/internal/param_names.h" => [ + "util/perl" + ], + "include/openssl/core_names.h" => [ + "util/perl" + ], "libcrypto" => [ ".", "include", "providers/common/include", "providers/implementations/include" ], + "libcrypto.pc" => [ + "." + ], "libssl" => [ ".", "include" ], + "libssl.pc" => [ + "." + ], + "openssl.pc" => [ + "." + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der" ], @@ -18020,6 +20868,15 @@ our %unified_info = ( "providers/common/der/der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der" ], @@ -18032,6 +20889,15 @@ our %unified_info = ( "providers/common/der/der_rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der" ], @@ -18077,12 +20943,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov" ], @@ -18113,9 +20991,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der" ], @@ -18158,9 +21042,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18173,12 +21063,24 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18191,28 +21093,39 @@ our %unified_info = ( "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libdefault.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libfips.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/liblegacy.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" + ], + "providers/libtemplate.a" => [ + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" ], "test/aborttest" => [ "include", @@ -18281,6 +21194,14 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_addr_test" => [ + "include", + "apps/include" + ], + "test/bio_base64_test" => [ + "include", + "apps/include" + ], "test/bio_callback_test" => [ "include", "apps/include" @@ -18289,11 +21210,20 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_dgram_test" => [ + "include", + "apps/include", + "." + ], "test/bio_enc_test" => [ "include", "apps/include" ], - "test/bio_memleak_test" => [ + "test/bio_memleak_test" => [ + "include", + "apps/include" + ], + "test/bio_meth_test" => [ "include", "apps/include" ], @@ -18310,6 +21240,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_tfo_test" => [ + "include", + "apps/include", + "." + ], "test/bioprinttest" => [ "include", "apps/include" @@ -18324,6 +21259,9 @@ our %unified_info = ( "include", "apps/include" ], + "test/build_wincrypt_test" => [ + "include" + ], "test/buildtest_c_aes" => [ "include" ], @@ -18339,6 +21277,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => [ "include" ], + "test/buildtest_c_byteorder" => [ + "include" + ], "test/buildtest_c_camellia" => [ "include" ], @@ -18363,9 +21304,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => [ "include" ], - "test/buildtest_c_core_names" => [ - "include" - ], "test/buildtest_c_core_object" => [ "include" ], @@ -18390,6 +21328,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => [ "include" ], + "test/buildtest_c_e_ostime" => [ + "include" + ], "test/buildtest_c_ebcdic" => [ "include" ], @@ -18417,12 +21358,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => [ "include" ], + "test/buildtest_c_hpke" => [ + "include" + ], "test/buildtest_c_http" => [ "include" ], "test/buildtest_c_idea" => [ "include" ], + "test/buildtest_c_indicator" => [ + "include" + ], "test/buildtest_c_kdf" => [ "include" ], @@ -18438,6 +21385,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => [ "include" ], + "test/buildtest_c_ml_kem" => [ + "include" + ], "test/buildtest_c_modes" => [ "include" ], @@ -18468,6 +21418,9 @@ our %unified_info = ( "test/buildtest_c_provider" => [ "include" ], + "test/buildtest_c_quic" => [ + "include" + ], "test/buildtest_c_rand" => [ "include" ], @@ -18510,6 +21463,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => [ "include" ], + "test/buildtest_c_thread" => [ + "include" + ], "test/buildtest_c_tls1" => [ "include" ], @@ -18525,10 +21481,24 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => [ "include" ], + "test/byteorder_test" => [ + "include", + "apps/include" + ], + "test/ca_internals_test" => [ + ".", + "include", + "apps/include" + ], "test/casttest" => [ "include", "apps/include" ], + "test/cert_comp_test" => [ + "include", + "apps/include", + "." + ], "test/chacha_internal_test" => [ ".", "include", @@ -18652,6 +21622,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/decoder_propq_test" => [ + ".", + "include", + "apps/include" + ], "test/defltfips_test" => [ "include", "apps/include" @@ -18667,7 +21642,8 @@ our %unified_info = ( "test/drbgtest" => [ "include", "apps/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "test/dsa_no_digest_size_test" => [ "include", @@ -18710,7 +21686,9 @@ our %unified_info = ( "test/endecode_test" => [ ".", "include", - "apps/include" + "apps/include", + "providers/common/include", + "providers/implementations/include" ], "test/endecoder_legacy_test" => [ ".", @@ -18755,6 +21733,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_pkey_dhkem_test" => [ + "include", + "apps/include" + ], "test/evp_pkey_dparams_test" => [ "include", "apps/include" @@ -18763,10 +21745,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_skey_test" => [ + "include", + "apps/include" + ], "test/evp_test" => [ "include", "apps/include" ], + "test/evp_xof_test" => [ + "include", + "apps/include" + ], "test/exdatatest" => [ "include", "apps/include" @@ -18867,22 +21857,62 @@ our %unified_info = ( ".", "include" ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/pkcs12.o" => [ ".", "include" ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + ".", + "include" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ ".", "include" ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/ssl_test-bin-handshake.o" => [ ".", "include" @@ -18916,6 +21946,10 @@ our %unified_info = ( ".", "include" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/hexstr_test" => [ ".", "include", @@ -18925,6 +21959,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/hpke_test" => [ + "include", + "apps/include" + ], "test/http_test" => [ "include", "apps/include" @@ -18937,6 +21975,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/json_test" => [ + "include", + "apps/include" + ], "test/keymgmt_internal_test" => [ ".", "include", @@ -18951,6 +21993,10 @@ our %unified_info = ( "apps/include", "." ], + "test/list_test" => [ + "include", + "apps/include" + ], "test/localetest" => [ "include", "apps/include" @@ -18964,10 +22010,27 @@ our %unified_info = ( "include", "apps/include" ], + "test/membio_test" => [ + "include", + "apps/include", + "." + ], "test/memleaktest" => [ "include", "apps/include" ], + "test/ml_dsa_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_evp_extra_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_internal_test" => [ + "include", + "apps/include" + ], "test/modes_internal_test" => [ ".", "include", @@ -19002,6 +22065,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pairwise_fail_test" => [ + "include", + "apps/include" + ], "test/param_build_test" => [ "include", "apps/include" @@ -19035,6 +22102,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pkcs12_api_test" => [ + "include", + "apps/include" + ], "test/pkcs12_format_test" => [ "include", "apps/include" @@ -19056,6 +22127,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/priority_queue_test" => [ + "include", + "apps/include" + ], "test/property_test" => [ ".", "include", @@ -19069,6 +22144,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/provider_default_search_path_test" => [ + "include", + "apps/include" + ], "test/provider_fallback_test" => [ "include", "apps/include" @@ -19095,6 +22174,97 @@ our %unified_info = ( "include", "apps/include" ], + "test/quic_ackm_test" => [ + "include", + "apps/include" + ], + "test/quic_cc_test" => [ + "include", + "apps/include" + ], + "test/quic_cfq_test" => [ + "include", + "apps/include" + ], + "test/quic_client_test" => [ + "include", + "apps/include" + ], + "test/quic_fc_test" => [ + "include", + "apps/include" + ], + "test/quic_fifd_test" => [ + "include", + "apps/include" + ], + "test/quic_lcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_multistream_test" => [ + "include", + "apps/include" + ], + "test/quic_newcid_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_qlog_test" => [ + "include", + "apps/include" + ], + "test/quic_radix_test" => [ + "include", + "apps/include" + ], + "test/quic_rcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_record_test" => [ + "include", + "apps/include" + ], + "test/quic_srt_gen_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_srtm_test" => [ + "include", + "apps/include" + ], + "test/quic_stream_test" => [ + "include", + "apps/include" + ], + "test/quic_tserver_test" => [ + "include", + "apps/include" + ], + "test/quic_txp_test" => [ + "include", + "apps/include" + ], + "test/quic_txpim_test" => [ + "include", + "apps/include" + ], + "test/quic_wire_test" => [ + "include", + "apps/include" + ], + "test/quicapitest" => [ + "include", + "apps/include" + ], + "test/quicfaultstest" => [ + "include", + "apps/include", + "." + ], "test/rand_status_test" => [ "include", "apps/include" @@ -19115,14 +22285,20 @@ our %unified_info = ( "include", "apps/include" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "include", - "apps/include" + "apps/include", + "crypto" ], "test/recordlentest" => [ "include", "apps/include" ], + "test/rpktest" => [ + "include", + "apps/include", + "." + ], "test/rsa_complex" => [ "include", "apps/include" @@ -19141,6 +22317,15 @@ our %unified_info = ( "include", "apps/include" ], + "test/rsa_x931_test" => [ + ".", + "include", + "apps/include" + ], + "test/safe_math_test" => [ + "include", + "apps/include" + ], "test/sanitytest" => [ "include", "apps/include" @@ -19162,6 +22347,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/slh_dsa_test" => [ + "include", + "apps/include" + ], "test/sm2_internal_test" => [ "include", "apps/include" @@ -19192,6 +22381,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/ssl_handshake_rtt_test" => [ + "include", + "apps/include", + "." + ], "test/ssl_old_test" => [ ".", "include", @@ -19208,6 +22402,7 @@ our %unified_info = ( "test/sslapitest" => [ "include", "apps/include", + "providers/common/include", "." ], "test/sslbuffertest" => [ @@ -19222,6 +22417,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/strtoultest" => [ + "include", + "apps/include" + ], "test/sysdefaulttest" => [ "include", "apps/include" @@ -19230,7 +22429,13 @@ our %unified_info = ( "include", "apps/include" ], + "test/threadpool_test" => [ + ".", + "include", + "apps/include" + ], "test/threadstest" => [ + ".", "include", "apps/include" ], @@ -19242,6 +22447,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/time_test" => [ + "include", + "apps/include" + ], "test/tls13ccstest" => [ "include", "apps/include" @@ -19251,6 +22460,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/tls13groupselection_test" => [ + "include", + "apps/include" + ], "test/trace_api_test" => [ ".", "include", @@ -19289,6 +22502,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_acert_test" => [ + "include", + "apps/include" + ], "test/x509_check_cert_pkey_test" => [ "include", "apps/include" @@ -19302,6 +22519,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_load_cert_file_test" => [ + "include", + "apps/include" + ], + "test/x509_req_test" => [ + "include", + "apps/include" + ], + "test/x509_test" => [ + "include", + "apps/include" + ], "test/x509_time_test" => [ "include", "apps/include" @@ -19323,6 +22552,7 @@ our %unified_info = ( "providers/libdefault.a", "providers/libfips.a", "providers/liblegacy.a", + "providers/libtemplate.a", "test/libtestutil.a" ], "mandocs" => { @@ -19375,6 +22605,7 @@ our %unified_info = ( "doc/man/man1/openssl-s_server.1", "doc/man/man1/openssl-s_time.1", "doc/man/man1/openssl-sess_id.1", + "doc/man/man1/openssl-skeyutl.1", "doc/man/man1/openssl-smime.1", "doc/man/man1/openssl-speed.1", "doc/man/man1/openssl-spkac.1", @@ -19424,6 +22655,7 @@ our %unified_info = ( "doc/man/man3/BIO_find_type.3", "doc/man/man3/BIO_get_data.3", "doc/man/man3/BIO_get_ex_new_index.3", + "doc/man/man3/BIO_get_rpoll_descriptor.3", "doc/man/man3/BIO_meth_new.3", "doc/man/man3/BIO_new.3", "doc/man/man3/BIO_new_CMS.3", @@ -19436,11 +22668,13 @@ our %unified_info = ( "doc/man/man3/BIO_s_connect.3", "doc/man/man3/BIO_s_core.3", "doc/man/man3/BIO_s_datagram.3", + "doc/man/man3/BIO_s_dgram_pair.3", "doc/man/man3/BIO_s_fd.3", "doc/man/man3/BIO_s_file.3", "doc/man/man3/BIO_s_mem.3", "doc/man/man3/BIO_s_null.3", "doc/man/man3/BIO_s_socket.3", + "doc/man/man3/BIO_sendmmsg.3", "doc/man/man3/BIO_set_callback.3", "doc/man/man3/BIO_should_retry.3", "doc/man/man3/BIO_socket_wait.3", @@ -19465,6 +22699,7 @@ our %unified_info = ( "doc/man/man3/BN_swap.3", "doc/man/man3/BN_zero.3", "doc/man/man3/BUF_MEM_new.3", + "doc/man/man3/CMAC_CTX.3", "doc/man/man3/CMS_EncryptedData_decrypt.3", "doc/man/man3/CMS_EncryptedData_encrypt.3", "doc/man/man3/CMS_EnvelopedData_create.3", @@ -19487,6 +22722,7 @@ our %unified_info = ( "doc/man/man3/CMS_uncompress.3", "doc/man/man3/CMS_verify.3", "doc/man/man3/CMS_verify_receipt.3", + "doc/man/man3/COMP_CTX_new.3", "doc/man/man3/CONF_modules_free.3", "doc/man/man3/CONF_modules_load_file.3", "doc/man/man3/CRYPTO_THREAD_run_once.3", @@ -19520,6 +22756,8 @@ our %unified_info = ( "doc/man/man3/DSA_size.3", "doc/man/man3/DTLS_get_data_mtu.3", "doc/man/man3/DTLS_set_timer_cb.3", + "doc/man/man3/DTLSv1_get_timeout.3", + "doc/man/man3/DTLSv1_handle_timeout.3", "doc/man/man3/DTLSv1_listen.3", "doc/man/man3/ECDSA_SIG_new.3", "doc/man/man3/ECDSA_sign.3", @@ -19566,6 +22804,7 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_ctrl.3", "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3", "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3", + "doc/man/man3/EVP_PKEY_CTX_get_algor.3", "doc/man/man3/EVP_PKEY_CTX_new.3", "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3", "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3", @@ -19605,6 +22844,8 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_verify_recover.3", "doc/man/man3/EVP_RAND.3", "doc/man/man3/EVP_SIGNATURE.3", + "doc/man/man3/EVP_SKEY.3", + "doc/man/man3/EVP_SKEYMGMT.3", "doc/man/man3/EVP_SealInit.3", "doc/man/man3/EVP_SignInit.3", "doc/man/man3/EVP_VerifyInit.3", @@ -19634,6 +22875,7 @@ our %unified_info = ( "doc/man/man3/EVP_sm3.3", "doc/man/man3/EVP_sm4_cbc.3", "doc/man/man3/EVP_whirlpool.3", + "doc/man/man3/GENERAL_NAME.3", "doc/man/man3/HMAC.3", "doc/man/man3/MD5.3", "doc/man/man3/MDC2_Init.3", @@ -19658,14 +22900,18 @@ our %unified_info = ( "doc/man/man3/OPENSSL_init_ssl.3", "doc/man/man3/OPENSSL_instrument_bus.3", "doc/man/man3/OPENSSL_load_builtin_modules.3", + "doc/man/man3/OPENSSL_load_u16_le.3", "doc/man/man3/OPENSSL_malloc.3", + "doc/man/man3/OPENSSL_riscvcap.3", "doc/man/man3/OPENSSL_s390xcap.3", "doc/man/man3/OPENSSL_secure_malloc.3", "doc/man/man3/OPENSSL_strcasecmp.3", "doc/man/man3/OSSL_ALGORITHM.3", "doc/man/man3/OSSL_CALLBACK.3", + "doc/man/man3/OSSL_CMP_ATAV_set0.3", "doc/man/man3/OSSL_CMP_CTX_new.3", "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3", + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3", "doc/man/man3/OSSL_CMP_ITAV_set0.3", "doc/man/man3/OSSL_CMP_MSG_get0_header.3", "doc/man/man3/OSSL_CMP_MSG_http_perform.3", @@ -19689,18 +22935,27 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_CTX.3", "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3", "doc/man/man3/OSSL_ENCODER_to_bio.3", + "doc/man/man3/OSSL_ERR_STATE_save.3", "doc/man/man3/OSSL_ESS_check_signing_certs.3", + "doc/man/man3/OSSL_GENERAL_NAMES_print.3", + "doc/man/man3/OSSL_HPKE_CTX_new.3", "doc/man/man3/OSSL_HTTP_REQ_CTX.3", "doc/man/man3/OSSL_HTTP_parse_url.3", "doc/man/man3/OSSL_HTTP_transfer.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3", + "doc/man/man3/OSSL_INDICATOR_set_callback.3", "doc/man/man3/OSSL_ITEM.3", "doc/man/man3/OSSL_LIB_CTX.3", + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3", "doc/man/man3/OSSL_PARAM.3", "doc/man/man3/OSSL_PARAM_BLD.3", "doc/man/man3/OSSL_PARAM_allocate_from_text.3", "doc/man/man3/OSSL_PARAM_dup.3", "doc/man/man3/OSSL_PARAM_int.3", + "doc/man/man3/OSSL_PARAM_print_to_bio.3", "doc/man/man3/OSSL_PROVIDER.3", + "doc/man/man3/OSSL_QUIC_client_method.3", "doc/man/man3/OSSL_SELF_TEST_new.3", "doc/man/man3/OSSL_SELF_TEST_set_callback.3", "doc/man/man3/OSSL_STORE_INFO.3", @@ -19709,11 +22964,13 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_attach.3", "doc/man/man3/OSSL_STORE_expect.3", "doc/man/man3/OSSL_STORE_open.3", + "doc/man/man3/OSSL_sleep.3", "doc/man/man3/OSSL_trace_enabled.3", "doc/man/man3/OSSL_trace_get_category_num.3", "doc/man/man3/OSSL_trace_set_channel.3", "doc/man/man3/OpenSSL_add_all_algorithms.3", "doc/man/man3/OpenSSL_version.3", + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3", "doc/man/man3/PEM_X509_INFO_read_bio_ex.3", "doc/man/man3/PEM_bytes_read_bio.3", "doc/man/man3/PEM_read.3", @@ -19726,6 +22983,7 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_create_cert.3", "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3", "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3", + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3", "doc/man/man3/PKCS12_add1_attr_by_NID.3", "doc/man/man3/PKCS12_add_CSPName_asc.3", "doc/man/man3/PKCS12_add_cert.3", @@ -19817,6 +23075,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_sess_set_get_cb.3", "doc/man/man3/SSL_CTX_sessions.3", "doc/man/man3/SSL_CTX_set0_CA_list.3", + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3", "doc/man/man3/SSL_CTX_set1_curves.3", "doc/man/man3/SSL_CTX_set1_sigalgs.3", "doc/man/man3/SSL_CTX_set1_verify_cert_store.3", @@ -19830,6 +23089,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_ct_validation_callback.3", "doc/man/man3/SSL_CTX_set_ctlog_list_file.3", "doc/man/man3/SSL_CTX_set_default_passwd_cb.3", + "doc/man/man3/SSL_CTX_set_domain_flags.3", "doc/man/man3/SSL_CTX_set_generate_session_id.3", "doc/man/man3/SSL_CTX_set_info_callback.3", "doc/man/man3/SSL_CTX_set_keylog_callback.3", @@ -19837,6 +23097,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_min_proto_version.3", "doc/man/man3/SSL_CTX_set_mode.3", "doc/man/man3/SSL_CTX_set_msg_callback.3", + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3", "doc/man/man3/SSL_CTX_set_num_tickets.3", "doc/man/man3/SSL_CTX_set_options.3", "doc/man/man3/SSL_CTX_set_psk_client_callback.3", @@ -19875,6 +23136,7 @@ our %unified_info = ( "doc/man/man3/SSL_SESSION_print.3", "doc/man/man3/SSL_SESSION_set1_id.3", "doc/man/man3/SSL_accept.3", + "doc/man/man3/SSL_accept_stream.3", "doc/man/man3/SSL_alert_type_string.3", "doc/man/man3/SSL_alloc_buffers.3", "doc/man/man3/SSL_check_chain.3", @@ -19884,59 +23146,90 @@ our %unified_info = ( "doc/man/man3/SSL_export_keying_material.3", "doc/man/man3/SSL_extension_supported.3", "doc/man/man3/SSL_free.3", + "doc/man/man3/SSL_get0_connection.3", + "doc/man/man3/SSL_get0_group_name.3", + "doc/man/man3/SSL_get0_peer_rpk.3", "doc/man/man3/SSL_get0_peer_scts.3", + "doc/man/man3/SSL_get1_builtin_sigalgs.3", "doc/man/man3/SSL_get_SSL_CTX.3", "doc/man/man3/SSL_get_all_async_fds.3", "doc/man/man3/SSL_get_certificate.3", "doc/man/man3/SSL_get_ciphers.3", "doc/man/man3/SSL_get_client_random.3", + "doc/man/man3/SSL_get_conn_close_info.3", "doc/man/man3/SSL_get_current_cipher.3", "doc/man/man3/SSL_get_default_timeout.3", "doc/man/man3/SSL_get_error.3", + "doc/man/man3/SSL_get_event_timeout.3", "doc/man/man3/SSL_get_extms_support.3", "doc/man/man3/SSL_get_fd.3", + "doc/man/man3/SSL_get_handshake_rtt.3", "doc/man/man3/SSL_get_peer_cert_chain.3", "doc/man/man3/SSL_get_peer_certificate.3", "doc/man/man3/SSL_get_peer_signature_nid.3", "doc/man/man3/SSL_get_peer_tmp_key.3", "doc/man/man3/SSL_get_psk_identity.3", "doc/man/man3/SSL_get_rbio.3", + "doc/man/man3/SSL_get_rpoll_descriptor.3", "doc/man/man3/SSL_get_session.3", "doc/man/man3/SSL_get_shared_sigalgs.3", + "doc/man/man3/SSL_get_stream_id.3", + "doc/man/man3/SSL_get_stream_read_state.3", + "doc/man/man3/SSL_get_value_uint.3", "doc/man/man3/SSL_get_verify_result.3", "doc/man/man3/SSL_get_version.3", "doc/man/man3/SSL_group_to_name.3", + "doc/man/man3/SSL_handle_events.3", "doc/man/man3/SSL_in_init.3", + "doc/man/man3/SSL_inject_net_dgram.3", "doc/man/man3/SSL_key_update.3", "doc/man/man3/SSL_library_init.3", "doc/man/man3/SSL_load_client_CA_file.3", "doc/man/man3/SSL_new.3", + "doc/man/man3/SSL_new_domain.3", + "doc/man/man3/SSL_new_listener.3", + "doc/man/man3/SSL_new_stream.3", "doc/man/man3/SSL_pending.3", + "doc/man/man3/SSL_poll.3", "doc/man/man3/SSL_read.3", "doc/man/man3/SSL_read_early_data.3", "doc/man/man3/SSL_rstate_string.3", "doc/man/man3/SSL_session_reused.3", "doc/man/man3/SSL_set1_host.3", + "doc/man/man3/SSL_set1_initial_peer_addr.3", + "doc/man/man3/SSL_set1_server_cert_type.3", "doc/man/man3/SSL_set_async_callback.3", "doc/man/man3/SSL_set_bio.3", + "doc/man/man3/SSL_set_blocking_mode.3", "doc/man/man3/SSL_set_connect_state.3", + "doc/man/man3/SSL_set_default_stream_mode.3", "doc/man/man3/SSL_set_fd.3", + "doc/man/man3/SSL_set_incoming_stream_policy.3", + "doc/man/man3/SSL_set_quic_tls_cbs.3", "doc/man/man3/SSL_set_retry_verify.3", "doc/man/man3/SSL_set_session.3", + "doc/man/man3/SSL_set_session_secret_cb.3", "doc/man/man3/SSL_set_shutdown.3", "doc/man/man3/SSL_set_verify_result.3", "doc/man/man3/SSL_shutdown.3", "doc/man/man3/SSL_state_string.3", + "doc/man/man3/SSL_stream_conclude.3", + "doc/man/man3/SSL_stream_reset.3", "doc/man/man3/SSL_want.3", "doc/man/man3/SSL_write.3", "doc/man/man3/TS_RESP_CTX_new.3", - "doc/man/man3/TS_VERIFY_CTX_set_certs.3", + "doc/man/man3/TS_VERIFY_CTX.3", "doc/man/man3/UI_STRING.3", "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", + "doc/man/man3/X509_ACERT_add1_attr.3", + "doc/man/man3/X509_ACERT_add_attr_nconf.3", + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3", + "doc/man/man3/X509_ACERT_get_attr.3", + "doc/man/man3/X509_ACERT_print_ex.3", "doc/man/man3/X509_ALGOR_dup.3", "doc/man/man3/X509_ATTRIBUTE.3", "doc/man/man3/X509_CRL_get0_by_serial.3", @@ -19953,6 +23246,7 @@ our %unified_info = ( "doc/man/man3/X509_REQ_get_attr.3", "doc/man/man3/X509_REQ_get_extensions.3", "doc/man/man3/X509_SIG_get0.3", + "doc/man/man3/X509_STORE_CTX_get_by_subject.3", "doc/man/man3/X509_STORE_CTX_get_error.3", "doc/man/man3/X509_STORE_CTX_new.3", "doc/man/man3/X509_STORE_CTX_set_verify_cb.3", @@ -19975,6 +23269,7 @@ our %unified_info = ( "doc/man/man3/X509_get0_notBefore.3", "doc/man/man3/X509_get0_signature.3", "doc/man/man3/X509_get0_uids.3", + "doc/man/man3/X509_get_default_cert_file.3", "doc/man/man3/X509_get_extension_flags.3", "doc/man/man3/X509_get_pubkey.3", "doc/man/man3/X509_get_serialNumber.3", @@ -20020,12 +23315,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-RC5.7", "doc/man/man7/EVP_CIPHER-SEED.7", "doc/man/man7/EVP_CIPHER-SM4.7", + "doc/man/man7/EVP_KDF-ARGON2.7", "doc/man/man7/EVP_KDF-HKDF.7", + "doc/man/man7/EVP_KDF-HMAC-DRBG.7", "doc/man/man7/EVP_KDF-KB.7", "doc/man/man7/EVP_KDF-KRB5KDF.7", "doc/man/man7/EVP_KDF-PBKDF1.7", "doc/man/man7/EVP_KDF-PBKDF2.7", "doc/man/man7/EVP_KDF-PKCS12KDF.7", + "doc/man/man7/EVP_KDF-PVKKDF.7", "doc/man/man7/EVP_KDF-SCRYPT.7", "doc/man/man7/EVP_KDF-SS.7", "doc/man/man7/EVP_KDF-SSHKDF.7", @@ -20034,7 +23332,10 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X942-ASN1.7", "doc/man/man7/EVP_KDF-X942-CONCAT.7", "doc/man/man7/EVP_KDF-X963.7", + "doc/man/man7/EVP_KEM-EC.7", + "doc/man/man7/EVP_KEM-ML-KEM.7", "doc/man/man7/EVP_KEM-RSA.7", + "doc/man/man7/EVP_KEM-X25519.7", "doc/man/man7/EVP_KEYEXCH-DH.7", "doc/man/man7/EVP_KEYEXCH-ECDH.7", "doc/man/man7/EVP_KEYEXCH-X25519.7", @@ -20046,6 +23347,7 @@ our %unified_info = ( "doc/man/man7/EVP_MAC-Poly1305.7", "doc/man/man7/EVP_MAC-Siphash.7", "doc/man/man7/EVP_MD-BLAKE2.7", + "doc/man/man7/EVP_MD-KECCAK.7", "doc/man/man7/EVP_MD-MD2.7", "doc/man/man7/EVP_MD-MD4.7", "doc/man/man7/EVP_MD-MD5-SHA1.7", @@ -20065,12 +23367,17 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-EC.7", "doc/man/man7/EVP_PKEY-FFC.7", "doc/man/man7/EVP_PKEY-HMAC.7", + "doc/man/man7/EVP_PKEY-ML-DSA.7", + "doc/man/man7/EVP_PKEY-ML-KEM.7", "doc/man/man7/EVP_PKEY-RSA.7", + "doc/man/man7/EVP_PKEY-SLH-DSA.7", "doc/man/man7/EVP_PKEY-SM2.7", "doc/man/man7/EVP_PKEY-X25519.7", + "doc/man/man7/EVP_RAND-CRNG-TEST.7", "doc/man/man7/EVP_RAND-CTR-DRBG.7", "doc/man/man7/EVP_RAND-HASH-DRBG.7", "doc/man/man7/EVP_RAND-HMAC-DRBG.7", + "doc/man/man7/EVP_RAND-JITTER.7", "doc/man/man7/EVP_RAND-SEED-SRC.7", "doc/man/man7/EVP_RAND-TEST-RAND.7", "doc/man/man7/EVP_RAND.7", @@ -20078,17 +23385,19 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-ECDSA.7", "doc/man/man7/EVP_SIGNATURE-ED25519.7", "doc/man/man7/EVP_SIGNATURE-HMAC.7", + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7", "doc/man/man7/EVP_SIGNATURE-RSA.7", + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7", "doc/man/man7/OSSL_PROVIDER-FIPS.7", "doc/man/man7/OSSL_PROVIDER-base.7", "doc/man/man7/OSSL_PROVIDER-default.7", "doc/man/man7/OSSL_PROVIDER-legacy.7", "doc/man/man7/OSSL_PROVIDER-null.7", + "doc/man/man7/OSSL_STORE-winstore.7", "doc/man/man7/RAND.7", "doc/man/man7/RSA-PSS.7", "doc/man/man7/X25519.7", "doc/man/man7/bio.7", - "doc/man/man7/crypto.7", "doc/man/man7/ct.7", "doc/man/man7/des_modes.7", "doc/man/man7/evp.7", @@ -20099,14 +23408,31 @@ our %unified_info = ( "doc/man/man7/life_cycle-mac.7", "doc/man/man7/life_cycle-pkey.7", "doc/man/man7/life_cycle-rand.7", - "doc/man/man7/migration_guide.7", "doc/man/man7/openssl-core.h.7", "doc/man/man7/openssl-core_dispatch.h.7", "doc/man/man7/openssl-core_names.h.7", "doc/man/man7/openssl-env.7", "doc/man/man7/openssl-glossary.7", + "doc/man/man7/openssl-qlog.7", + "doc/man/man7/openssl-quic-concurrency.7", + "doc/man/man7/openssl-quic.7", "doc/man/man7/openssl-threads.7", "doc/man/man7/openssl_user_macros.7", + "doc/man/man7/ossl-guide-introduction.7", + "doc/man/man7/ossl-guide-libcrypto-introduction.7", + "doc/man/man7/ossl-guide-libraries-introduction.7", + "doc/man/man7/ossl-guide-libssl-introduction.7", + "doc/man/man7/ossl-guide-migration.7", + "doc/man/man7/ossl-guide-quic-client-block.7", + "doc/man/man7/ossl-guide-quic-client-non-block.7", + "doc/man/man7/ossl-guide-quic-introduction.7", + "doc/man/man7/ossl-guide-quic-multi-stream.7", + "doc/man/man7/ossl-guide-quic-server-block.7", + "doc/man/man7/ossl-guide-quic-server-non-block.7", + "doc/man/man7/ossl-guide-tls-client-block.7", + "doc/man/man7/ossl-guide-tls-client-non-block.7", + "doc/man/man7/ossl-guide-tls-introduction.7", + "doc/man/man7/ossl-guide-tls-server-block.7", "doc/man/man7/ossl_store-file.7", "doc/man/man7/ossl_store.7", "doc/man/man7/passphrase-encoding.7", @@ -20125,10 +23451,10 @@ our %unified_info = ( "doc/man/man7/provider-object.7", "doc/man/man7/provider-rand.7", "doc/man/man7/provider-signature.7", + "doc/man/man7/provider-skeymgmt.7", "doc/man/man7/provider-storemgmt.7", "doc/man/man7/provider.7", "doc/man/man7/proxy-certificates.7", - "doc/man/man7/ssl.7", "doc/man/man7/x509.7" ] }, @@ -20140,6 +23466,7 @@ our %unified_info = ( ], "programs" => [ "apps/openssl", + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -20150,7 +23477,24 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test", "test/aborttest", "test/acvp_test", @@ -20168,21 +23512,28 @@ our %unified_info = ( "test/asynctest", "test/bad_dtls_test", "test/bftest", + "test/bio_addr_test", + "test/bio_base64_test", "test/bio_callback_test", "test/bio_core_test", + "test/bio_dgram_test", "test/bio_enc_test", "test/bio_memleak_test", + "test/bio_meth_test", "test/bio_prefix_text", "test/bio_pw_callback_test", "test/bio_readbuffer_test", + "test/bio_tfo_test", "test/bioprinttest", "test/bn_internal_test", "test/bntest", + "test/build_wincrypt_test", "test/buildtest_c_aes", "test/buildtest_c_async", "test/buildtest_c_blowfish", "test/buildtest_c_bn", "test/buildtest_c_buffer", + "test/buildtest_c_byteorder", "test/buildtest_c_camellia", "test/buildtest_c_cast", "test/buildtest_c_cmac", @@ -20191,7 +23542,6 @@ our %unified_info = ( "test/buildtest_c_conftypes", "test/buildtest_c_core", "test/buildtest_c_core_dispatch", - "test/buildtest_c_core_names", "test/buildtest_c_core_object", "test/buildtest_c_cryptoerr_legacy", "test/buildtest_c_decoder", @@ -20200,6 +23550,7 @@ our %unified_info = ( "test/buildtest_c_dsa", "test/buildtest_c_dtls1", "test/buildtest_c_e_os2", + "test/buildtest_c_e_ostime", "test/buildtest_c_ebcdic", "test/buildtest_c_ec", "test/buildtest_c_ecdh", @@ -20209,13 +23560,16 @@ our %unified_info = ( "test/buildtest_c_evp", "test/buildtest_c_fips_names", "test/buildtest_c_hmac", + "test/buildtest_c_hpke", "test/buildtest_c_http", "test/buildtest_c_idea", + "test/buildtest_c_indicator", "test/buildtest_c_kdf", "test/buildtest_c_macros", "test/buildtest_c_md4", "test/buildtest_c_md5", "test/buildtest_c_mdc2", + "test/buildtest_c_ml_kem", "test/buildtest_c_modes", "test/buildtest_c_obj_mac", "test/buildtest_c_objects", @@ -20226,6 +23580,7 @@ our %unified_info = ( "test/buildtest_c_pem2", "test/buildtest_c_prov_ssl", "test/buildtest_c_provider", + "test/buildtest_c_quic", "test/buildtest_c_rand", "test/buildtest_c_rc2", "test/buildtest_c_rc4", @@ -20240,11 +23595,14 @@ our %unified_info = ( "test/buildtest_c_stack", "test/buildtest_c_store", "test/buildtest_c_symhacks", + "test/buildtest_c_thread", "test/buildtest_c_tls1", "test/buildtest_c_ts", "test/buildtest_c_txt_db", "test/buildtest_c_types", "test/buildtest_c_whrlpool", + "test/byteorder_test", + "test/ca_internals_test", "test/casttest", "test/chacha_internal_test", "test/cipher_overhead_test", @@ -20273,6 +23631,7 @@ our %unified_info = ( "test/curve448_internal_test", "test/d2i_test", "test/danetest", + "test/decoder_propq_test", "test/defltfips_test", "test/destest", "test/dhtest", @@ -20297,9 +23656,12 @@ our %unified_info = ( "test/evp_kdf_test", "test/evp_libctx_test", "test/evp_pkey_ctx_new_from_name", + "test/evp_pkey_dhkem_test", "test/evp_pkey_dparams_test", "test/evp_pkey_provided_test", + "test/evp_skey_test", "test/evp_test", + "test/evp_xof_test", "test/exdatatest", "test/exptest", "test/ext_internal_test", @@ -20309,21 +23671,29 @@ our %unified_info = ( "test/gmdifftest", "test/hexstr_test", "test/hmactest", + "test/hpke_test", "test/http_test", "test/ideatest", "test/igetest", + "test/json_test", "test/keymgmt_internal_test", "test/lhash_test", + "test/list_test", "test/localetest", "test/mdc2_internal_test", "test/mdc2test", + "test/membio_test", "test/memleaktest", + "test/ml_dsa_test", + "test/ml_kem_evp_extra_test", + "test/ml_kem_internal_test", "test/modes_internal_test", "test/namemap_internal_test", "test/nodefltctxtest", "test/ocspapitest", "test/ossl_store_test", "test/packettest", + "test/pairwise_fail_test", "test/param_build_test", "test/params_api_test", "test/params_conversion_test", @@ -20332,36 +23702,65 @@ our %unified_info = ( "test/pbetest", "test/pem_read_depr_test", "test/pemtest", + "test/pkcs12_api_test", "test/pkcs12_format_test", "test/pkcs7_test", "test/pkey_meth_kdf_test", "test/pkey_meth_test", "test/poly1305_internal_test", + "test/priority_queue_test", "test/property_test", "test/prov_config_test", "test/provfetchtest", + "test/provider_default_search_path_test", "test/provider_fallback_test", "test/provider_internal_test", "test/provider_pkey_test", "test/provider_status_test", "test/provider_test", "test/punycode_test", + "test/quic_ackm_test", + "test/quic_cc_test", + "test/quic_cfq_test", + "test/quic_client_test", + "test/quic_fc_test", + "test/quic_fifd_test", + "test/quic_lcidm_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_qlog_test", + "test/quic_radix_test", + "test/quic_rcidm_test", + "test/quic_record_test", + "test/quic_srt_gen_test", + "test/quic_srtm_test", + "test/quic_stream_test", + "test/quic_tserver_test", + "test/quic_txp_test", + "test/quic_txpim_test", + "test/quic_wire_test", + "test/quicapitest", + "test/quicfaultstest", "test/rand_status_test", "test/rand_test", "test/rc2test", "test/rc4test", "test/rc5test", - "test/rdrand_sanitytest", + "test/rdcpu_sanitytest", "test/recordlentest", + "test/rpktest", "test/rsa_complex", "test/rsa_mp_test", "test/rsa_sp800_56b_test", "test/rsa_test", + "test/rsa_x931_test", + "test/safe_math_test", "test/sanitytest", "test/secmemtest", "test/servername_test", "test/sha_test", "test/siphash_internal_test", + "test/slh_dsa_test", "test/sm2_internal_test", "test/sm3_internal_test", "test/sm4_internal_test", @@ -20369,6 +23768,7 @@ our %unified_info = ( "test/srptest", "test/ssl_cert_table_internal_test", "test/ssl_ctx_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", @@ -20376,13 +23776,17 @@ our %unified_info = ( "test/sslbuffertest", "test/sslcorrupttest", "test/stack_test", + "test/strtoultest", "test/sysdefaulttest", "test/test_test", + "test/threadpool_test", "test/threadstest", "test/threadstest_fips", "test/time_offset_test", + "test/time_test", "test/tls13ccstest", "test/tls13encryptiontest", + "test/tls13groupselection_test", "test/trace_api_test", "test/uitest", "test/upcallstest", @@ -20392,9 +23796,13 @@ our %unified_info = ( "test/verify_extra_test", "test/versions", "test/wpackettest", + "test/x509_acert_test", "test/x509_check_cert_pkey_test", "test/x509_dup_cert_test", "test/x509_internal_test", + "test/x509_load_cert_file_test", + "test/x509_req_test", + "test/x509_test", "test/x509_time_test", "test/x509aux" ], @@ -20410,6 +23818,33 @@ our %unified_info = ( "apps/CA.pl" => [ "apps/CA.pl.in" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/ca.c" + ], + "apps/lib/ca_internals_test-bin-app_libctx.o" => [ + "apps/lib/app_libctx.c" + ], + "apps/lib/ca_internals_test-bin-app_provider.o" => [ + "apps/lib/app_provider.c" + ], + "apps/lib/ca_internals_test-bin-app_rand.o" => [ + "apps/lib/app_rand.c" + ], + "apps/lib/ca_internals_test-bin-app_x509.o" => [ + "apps/lib/app_x509.c" + ], + "apps/lib/ca_internals_test-bin-apps.o" => [ + "apps/lib/apps.c" + ], + "apps/lib/ca_internals_test-bin-apps_ui.o" => [ + "apps/lib/apps_ui.c" + ], + "apps/lib/ca_internals_test-bin-engine.o" => [ + "apps/lib/engine.c" + ], + "apps/lib/ca_internals_test-bin-fmt.o" => [ + "apps/lib/fmt.c" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/lib/cmp_mock_srv.c" ], @@ -20431,6 +23866,9 @@ our %unified_info = ( "apps/lib/libapps-lib-apps.o" => [ "apps/lib/apps.c" ], + "apps/lib/libapps-lib-apps_opt_printf.o" => [ + "apps/lib/apps_opt_printf.c" + ], "apps/lib/libapps-lib-apps_ui.o" => [ "apps/lib/apps_ui.c" ], @@ -20449,6 +23887,9 @@ our %unified_info = ( "apps/lib/libapps-lib-http_server.o" => [ "apps/lib/http_server.c" ], + "apps/lib/libapps-lib-log.o" => [ + "apps/lib/log.c" + ], "apps/lib/libapps-lib-names.o" => [ "apps/lib/names.c" ], @@ -20480,12 +23921,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -20539,6 +23982,7 @@ our %unified_info = ( "apps/openssl-bin-s_server.o", "apps/openssl-bin-s_time.o", "apps/openssl-bin-sess_id.o", + "apps/openssl-bin-skeyutl.o", "apps/openssl-bin-smime.o", "apps/openssl-bin-speed.o", "apps/openssl-bin-spkac.o", @@ -20684,6 +24128,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/sess_id.c" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/skeyutl.c" + ], "apps/openssl-bin-smime.o" => [ "apps/smime.c" ], @@ -20759,6 +24206,12 @@ our %unified_info = ( "crypto/aria/libcrypto-lib-aria.o" => [ "crypto/aria/aria.c" ], + "crypto/asn1/asn1_time_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], + "crypto/asn1/ca_internals_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], "crypto/asn1/libcrypto-lib-a_bitstr.o" => [ "crypto/asn1/a_bitstr.c" ], @@ -20951,6 +24404,9 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" => [ "crypto/asn1/x_val.c" ], + "crypto/asn1_time_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/async/arch/libcrypto-lib-async_null.o" => [ "crypto/async/arch/async_null.c" ], @@ -21044,6 +24500,9 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_dgram.o" => [ "crypto/bio/bss_dgram.c" ], + "crypto/bio/libcrypto-lib-bss_dgram_pair.o" => [ + "crypto/bio/bss_dgram_pair.c" + ], "crypto/bio/libcrypto-lib-bss_fd.o" => [ "crypto/bio/bss_fd.c" ], @@ -21275,6 +24734,9 @@ our %unified_info = ( "crypto/buffer/libfips-lib-buffer.o" => [ "crypto/buffer/buffer.c" ], + "crypto/ca_internals_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/camellia/libcrypto-lib-cmll-x86.o" => [ "crypto/camellia/cmll-x86.S" ], @@ -21326,6 +24788,9 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_err.o" => [ "crypto/cmp/cmp_err.c" ], + "crypto/cmp/libcrypto-lib-cmp_genm.o" => [ + "crypto/cmp/cmp_genm.c" + ], "crypto/cmp/libcrypto-lib-cmp_hdr.o" => [ "crypto/cmp/cmp_hdr.c" ], @@ -22013,9 +25478,15 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_blocks.o" => [ "crypto/err/err_blocks.c" ], + "crypto/err/libcrypto-lib-err_mark.o" => [ + "crypto/err/err_mark.c" + ], "crypto/err/libcrypto-lib-err_prn.o" => [ "crypto/err/err_prn.c" ], + "crypto/err/libcrypto-lib-err_save.o" => [ + "crypto/err/err_save.c" + ], "crypto/ess/libcrypto-lib-ess_asn1.o" => [ "crypto/ess/ess_asn1.c" ], @@ -22262,9 +25733,15 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libcrypto-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libcrypto-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libcrypto-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/evp/libfips-lib-asymcipher.o" => [ "crypto/evp/asymcipher.c" ], @@ -22310,9 +25787,6 @@ our %unified_info = ( "crypto/evp/libfips-lib-keymgmt_meth.o" => [ "crypto/evp/keymgmt_meth.c" ], - "crypto/evp/libfips-lib-m_sigver.o" => [ - "crypto/evp/m_sigver.c" - ], "crypto/evp/libfips-lib-mac_lib.o" => [ "crypto/evp/mac_lib.c" ], @@ -22331,9 +25805,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libfips-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libfips-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libfips-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/ffc/libcrypto-lib-ffc_backend.o" => [ "crypto/ffc/ffc_backend.c" ], @@ -22376,12 +25856,30 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params_validate.o" => [ "crypto/ffc/ffc_params_validate.c" ], + "crypto/hashtable/libcrypto-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libcrypto-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], + "crypto/hashtable/libfips-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libfips-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], "crypto/hmac/libcrypto-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], "crypto/hmac/libfips-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], + "crypto/hpke/libcrypto-lib-hpke.o" => [ + "crypto/hpke/hpke.c" + ], + "crypto/hpke/libcrypto-lib-hpke_util.o" => [ + "crypto/hpke/hpke_util.c" + ], "crypto/http/libcrypto-lib-http_client.o" => [ "crypto/http/http_client.c" ], @@ -22424,6 +25922,9 @@ our %unified_info = ( "crypto/libcrypto-lib-bsearch.o" => [ "crypto/bsearch.c" ], + "crypto/libcrypto-lib-comp_methods.o" => [ + "crypto/comp_methods.c" + ], "crypto/libcrypto-lib-context.o" => [ "crypto/context.c" ], @@ -22451,9 +25952,15 @@ our %unified_info = ( "crypto/libcrypto-lib-cversion.o" => [ "crypto/cversion.c" ], + "crypto/libcrypto-lib-defaults.o" => [ + "crypto/defaults.c" + ], "crypto/libcrypto-lib-der_writer.o" => [ "crypto/der_writer.c" ], + "crypto/libcrypto-lib-deterministic_nonce.o" => [ + "crypto/deterministic_nonce.c" + ], "crypto/libcrypto-lib-ebcdic.o" => [ "crypto/ebcdic.c" ], @@ -22463,6 +25970,9 @@ our %unified_info = ( "crypto/libcrypto-lib-getenv.o" => [ "crypto/getenv.c" ], + "crypto/libcrypto-lib-indicator_core.o" => [ + "crypto/indicator_core.c" + ], "crypto/libcrypto-lib-info.o" => [ "crypto/info.c" ], @@ -22511,6 +26021,9 @@ our %unified_info = ( "crypto/libcrypto-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libcrypto-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libcrypto-lib-passphrase.o" => [ "crypto/passphrase.c" ], @@ -22532,12 +26045,21 @@ our %unified_info = ( "crypto/libcrypto-lib-punycode.o" => [ "crypto/punycode.c" ], + "crypto/libcrypto-lib-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/libcrypto-lib-self_test_core.o" => [ "crypto/self_test_core.c" ], + "crypto/libcrypto-lib-sleep.o" => [ + "crypto/sleep.c" + ], "crypto/libcrypto-lib-sparse_array.o" => [ "crypto/sparse_array.c" ], + "crypto/libcrypto-lib-ssl_err.o" => [ + "crypto/ssl_err.c" + ], "crypto/libcrypto-lib-threads_lib.o" => [ "crypto/threads_lib.c" ], @@ -22550,6 +26072,9 @@ our %unified_info = ( "crypto/libcrypto-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libcrypto-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libcrypto-lib-trace.o" => [ "crypto/trace.c" ], @@ -22616,6 +26141,9 @@ our %unified_info = ( "crypto/libfips-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libfips-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libfips-lib-provider_core.o" => [ "crypto/provider_core.c" ], @@ -22640,6 +26168,9 @@ our %unified_info = ( "crypto/libfips-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libfips-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libfips-lib-x86cpuid.o" => [ "crypto/x86cpuid.S" ], @@ -22667,6 +26198,60 @@ our %unified_info = ( "crypto/mdc2/libcrypto-lib-mdc2dgst.o" => [ "crypto/mdc2/mdc2dgst.c" ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_kem/libcrypto-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], + "crypto/ml_kem/libfips-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], "crypto/modes/libcrypto-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22703,6 +26288,9 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libcrypto-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/modes/libfips-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22730,6 +26318,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libfips-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/objects/libcrypto-lib-o_names.o" => [ "crypto/objects/o_names.c" ], @@ -22775,6 +26366,9 @@ our %unified_info = ( "crypto/ocsp/libcrypto-lib-v3_ocsp.o" => [ "crypto/ocsp/v3_ocsp.c" ], + "crypto/packettest-bin-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/pem/libcrypto-lib-pem_all.o" => [ "crypto/pem/pem_all.c" ], @@ -22937,6 +26531,9 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_pool.o" => [ "crypto/rand/rand_pool.c" ], + "crypto/rand/libcrypto-lib-rand_uniform.o" => [ + "crypto/rand/rand_uniform.c" + ], "crypto/rand/libcrypto-lib-randfile.o" => [ "crypto/rand/randfile.c" ], @@ -23168,6 +26765,66 @@ our %unified_info = ( "crypto/siphash/libcrypto-lib-siphash.o" => [ "crypto/siphash/siphash.c" ], + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], + "crypto/slh_dsa/libfips-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libfips-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libfips-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libfips-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libfips-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], "crypto/sm2/libcrypto-lib-sm2_crypt.o" => [ "crypto/sm2/sm2_crypt.c" ], @@ -23222,6 +26879,42 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_strings.o" => [ "crypto/store/store_strings.c" ], + "crypto/thread/arch/libcrypto-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/arch/libfips-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libfips-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libfips-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/libcrypto-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libcrypto-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libcrypto-lib-internal.o" => [ + "crypto/thread/internal.c" + ], + "crypto/thread/libfips-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libfips-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libfips-lib-internal.o" => [ + "crypto/thread/internal.c" + ], "crypto/ts/libcrypto-lib-ts_asn1.o" => [ "crypto/ts/ts_asn1.c" ], @@ -23309,6 +27002,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_tree.o" => [ "crypto/x509/pcy_tree.c" ], + "crypto/x509/libcrypto-lib-t_acert.o" => [ + "crypto/x509/t_acert.c" + ], "crypto/x509/libcrypto-lib-t_crl.o" => [ "crypto/x509/t_crl.c" ], @@ -23318,6 +27014,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-t_x509.o" => [ "crypto/x509/t_x509.c" ], + "crypto/x509/libcrypto-lib-v3_aaa.o" => [ + "crypto/x509/v3_aaa.c" + ], + "crypto/x509/libcrypto-lib-v3_ac_tgt.o" => [ + "crypto/x509/v3_ac_tgt.c" + ], "crypto/x509/libcrypto-lib-v3_addr.o" => [ "crypto/x509/v3_addr.c" ], @@ -23333,6 +27035,21 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_asid.o" => [ "crypto/x509/v3_asid.c" ], + "crypto/x509/libcrypto-lib-v3_attrdesc.o" => [ + "crypto/x509/v3_attrdesc.c" + ], + "crypto/x509/libcrypto-lib-v3_attrmap.o" => [ + "crypto/x509/v3_attrmap.c" + ], + "crypto/x509/libcrypto-lib-v3_audit_id.o" => [ + "crypto/x509/v3_audit_id.c" + ], + "crypto/x509/libcrypto-lib-v3_authattid.o" => [ + "crypto/x509/v3_authattid.c" + ], + "crypto/x509/libcrypto-lib-v3_battcons.o" => [ + "crypto/x509/v3_battcons.c" + ], "crypto/x509/libcrypto-lib-v3_bcons.o" => [ "crypto/x509/v3_bcons.c" ], @@ -23357,15 +27074,24 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_genn.o" => [ "crypto/x509/v3_genn.c" ], + "crypto/x509/libcrypto-lib-v3_group_ac.o" => [ + "crypto/x509/v3_group_ac.c" + ], "crypto/x509/libcrypto-lib-v3_ia5.o" => [ "crypto/x509/v3_ia5.c" ], + "crypto/x509/libcrypto-lib-v3_ind_iss.o" => [ + "crypto/x509/v3_ind_iss.c" + ], "crypto/x509/libcrypto-lib-v3_info.o" => [ "crypto/x509/v3_info.c" ], "crypto/x509/libcrypto-lib-v3_int.o" => [ "crypto/x509/v3_int.c" ], + "crypto/x509/libcrypto-lib-v3_iobo.o" => [ + "crypto/x509/v3_iobo.c" + ], "crypto/x509/libcrypto-lib-v3_ist.o" => [ "crypto/x509/v3_ist.c" ], @@ -23375,6 +27101,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_ncons.o" => [ "crypto/x509/v3_ncons.c" ], + "crypto/x509/libcrypto-lib-v3_no_ass.o" => [ + "crypto/x509/v3_no_ass.c" + ], + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o" => [ + "crypto/x509/v3_no_rev_avail.c" + ], "crypto/x509/libcrypto-lib-v3_pci.o" => [ "crypto/x509/v3_pci.c" ], @@ -23396,18 +27128,36 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_purp.o" => [ "crypto/x509/v3_purp.c" ], + "crypto/x509/libcrypto-lib-v3_rolespec.o" => [ + "crypto/x509/v3_rolespec.c" + ], "crypto/x509/libcrypto-lib-v3_san.o" => [ "crypto/x509/v3_san.c" ], + "crypto/x509/libcrypto-lib-v3_sda.o" => [ + "crypto/x509/v3_sda.c" + ], + "crypto/x509/libcrypto-lib-v3_single_use.o" => [ + "crypto/x509/v3_single_use.c" + ], "crypto/x509/libcrypto-lib-v3_skid.o" => [ "crypto/x509/v3_skid.c" ], + "crypto/x509/libcrypto-lib-v3_soa_id.o" => [ + "crypto/x509/v3_soa_id.c" + ], "crypto/x509/libcrypto-lib-v3_sxnet.o" => [ "crypto/x509/v3_sxnet.c" ], + "crypto/x509/libcrypto-lib-v3_timespec.o" => [ + "crypto/x509/v3_timespec.c" + ], "crypto/x509/libcrypto-lib-v3_tlsf.o" => [ "crypto/x509/v3_tlsf.c" ], + "crypto/x509/libcrypto-lib-v3_usernotice.o" => [ + "crypto/x509/v3_usernotice.c" + ], "crypto/x509/libcrypto-lib-v3_utf8.o" => [ "crypto/x509/v3_utf8.c" ], @@ -23417,6 +27167,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3err.o" => [ "crypto/x509/v3err.c" ], + "crypto/x509/libcrypto-lib-x509_acert.o" => [ + "crypto/x509/x509_acert.c" + ], "crypto/x509/libcrypto-lib-x509_att.o" => [ "crypto/x509/x509_att.c" ], @@ -23468,6 +27221,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_vpm.o" => [ "crypto/x509/x509_vpm.c" ], + "crypto/x509/libcrypto-lib-x509aset.o" => [ + "crypto/x509/x509aset.c" + ], "crypto/x509/libcrypto-lib-x509cset.o" => [ "crypto/x509/x509cset.c" ], @@ -23495,6 +27251,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_exten.o" => [ "crypto/x509/x_exten.c" ], + "crypto/x509/libcrypto-lib-x_ietfatt.o" => [ + "crypto/x509/x_ietfatt.c" + ], "crypto/x509/libcrypto-lib-x_name.o" => [ "crypto/x509/x_name.c" ], @@ -23519,6 +27278,16 @@ our %unified_info = ( "engines/libcrypto-lib-e_padlock.o" => [ "engines/e_padlock.c" ], + "fuzz/acert-test" => [ + "fuzz/acert-test-bin-acert.o", + "fuzz/acert-test-bin-test-corpus.o" + ], + "fuzz/acert-test-bin-acert.o" => [ + "fuzz/acert.c" + ], + "fuzz/acert-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/asn1-test" => [ "fuzz/asn1-test-bin-asn1.o", "fuzz/asn1-test-bin-fuzz_rand.o", @@ -23631,6 +27400,190 @@ our %unified_info = ( "fuzz/ct-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/decoder-test" => [ + "fuzz/decoder-test-bin-decoder.o", + "fuzz/decoder-test-bin-fuzz_rand.o", + "fuzz/decoder-test-bin-test-corpus.o" + ], + "fuzz/decoder-test-bin-decoder.o" => [ + "fuzz/decoder.c" + ], + "fuzz/decoder-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/decoder-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsclient-test" => [ + "fuzz/dtlsclient-test-bin-dtlsclient.o", + "fuzz/dtlsclient-test-bin-fuzz_rand.o", + "fuzz/dtlsclient-test-bin-test-corpus.o" + ], + "fuzz/dtlsclient-test-bin-dtlsclient.o" => [ + "fuzz/dtlsclient.c" + ], + "fuzz/dtlsclient-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsclient-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsserver-test" => [ + "fuzz/dtlsserver-test-bin-dtlsserver.o", + "fuzz/dtlsserver-test-bin-fuzz_rand.o", + "fuzz/dtlsserver-test-bin-test-corpus.o" + ], + "fuzz/dtlsserver-test-bin-dtlsserver.o" => [ + "fuzz/dtlsserver.c" + ], + "fuzz/dtlsserver-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsserver-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/hashtable-test" => [ + "fuzz/hashtable-test-bin-fuzz_rand.o", + "fuzz/hashtable-test-bin-hashtable.o", + "fuzz/hashtable-test-bin-test-corpus.o" + ], + "fuzz/hashtable-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/hashtable-test-bin-hashtable.o" => [ + "fuzz/hashtable.c" + ], + "fuzz/hashtable-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-dsa-test" => [ + "fuzz/ml-dsa-test-bin-fuzz_rand.o", + "fuzz/ml-dsa-test-bin-ml-dsa.o", + "fuzz/ml-dsa-test-bin-test-corpus.o" + ], + "fuzz/ml-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-dsa-test-bin-ml-dsa.o" => [ + "fuzz/ml-dsa.c" + ], + "fuzz/ml-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-kem-test" => [ + "fuzz/ml-kem-test-bin-fuzz_rand.o", + "fuzz/ml-kem-test-bin-ml-kem.o", + "fuzz/ml-kem-test-bin-test-corpus.o" + ], + "fuzz/ml-kem-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-kem-test-bin-ml-kem.o" => [ + "fuzz/ml-kem.c" + ], + "fuzz/ml-kem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/pem-test" => [ + "fuzz/pem-test-bin-pem.o", + "fuzz/pem-test-bin-test-corpus.o" + ], + "fuzz/pem-test-bin-pem.o" => [ + "fuzz/pem.c" + ], + "fuzz/pem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/provider-test" => [ + "fuzz/provider-test-bin-provider.o", + "fuzz/provider-test-bin-test-corpus.o" + ], + "fuzz/provider-test-bin-provider.o" => [ + "fuzz/provider.c" + ], + "fuzz/provider-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/punycode-test" => [ + "fuzz/punycode-test-bin-punycode.o", + "fuzz/punycode-test-bin-test-corpus.o" + ], + "fuzz/punycode-test-bin-punycode.o" => [ + "fuzz/punycode.c" + ], + "fuzz/punycode-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-client-test" => [ + "fuzz/quic-client-test-bin-fuzz_rand.o", + "fuzz/quic-client-test-bin-quic-client.o", + "fuzz/quic-client-test-bin-test-corpus.o" + ], + "fuzz/quic-client-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-client-test-bin-quic-client.o" => [ + "fuzz/quic-client.c" + ], + "fuzz/quic-client-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-lcidm-test" => [ + "fuzz/quic-lcidm-test-bin-fuzz_rand.o", + "fuzz/quic-lcidm-test-bin-quic-lcidm.o", + "fuzz/quic-lcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-lcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-lcidm-test-bin-quic-lcidm.o" => [ + "fuzz/quic-lcidm.c" + ], + "fuzz/quic-lcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-rcidm-test" => [ + "fuzz/quic-rcidm-test-bin-fuzz_rand.o", + "fuzz/quic-rcidm-test-bin-quic-rcidm.o", + "fuzz/quic-rcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-rcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-rcidm-test-bin-quic-rcidm.o" => [ + "fuzz/quic-rcidm.c" + ], + "fuzz/quic-rcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-server-test" => [ + "fuzz/quic-server-test-bin-fuzz_rand.o", + "fuzz/quic-server-test-bin-quic-server.o", + "fuzz/quic-server-test-bin-test-corpus.o" + ], + "fuzz/quic-server-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-server-test-bin-quic-server.o" => [ + "fuzz/quic-server.c" + ], + "fuzz/quic-server-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-srtm-test" => [ + "fuzz/quic-srtm-test-bin-fuzz_rand.o", + "fuzz/quic-srtm-test-bin-quic-srtm.o", + "fuzz/quic-srtm-test-bin-test-corpus.o" + ], + "fuzz/quic-srtm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-srtm-test-bin-quic-srtm.o" => [ + "fuzz/quic-srtm.c" + ], + "fuzz/quic-srtm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/server-test" => [ "fuzz/server-test-bin-fuzz_rand.o", "fuzz/server-test-bin-server.o", @@ -23645,6 +27598,40 @@ our %unified_info = ( "fuzz/server-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/slh-dsa-test" => [ + "fuzz/slh-dsa-test-bin-fuzz_rand.o", + "fuzz/slh-dsa-test-bin-slh-dsa.o", + "fuzz/slh-dsa-test-bin-test-corpus.o" + ], + "fuzz/slh-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/slh-dsa-test-bin-slh-dsa.o" => [ + "fuzz/slh-dsa.c" + ], + "fuzz/slh-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/smime-test" => [ + "fuzz/smime-test-bin-smime.o", + "fuzz/smime-test-bin-test-corpus.o" + ], + "fuzz/smime-test-bin-smime.o" => [ + "fuzz/smime.c" + ], + "fuzz/smime-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test" => [ + "fuzz/v3name-test-bin-test-corpus.o", + "fuzz/v3name-test-bin-v3name.o" + ], + "fuzz/v3name-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test-bin-v3name.o" => [ + "fuzz/v3name.c" + ], "fuzz/x509-test" => [ "fuzz/x509-test-bin-fuzz_rand.o", "fuzz/x509-test-bin-test-corpus.o", @@ -23765,6 +27752,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -23826,6 +27814,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -24003,7 +27992,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", + "crypto/err/libcrypto-lib-err_mark.o", "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o", "crypto/ess/libcrypto-lib-ess_asn1.o", "crypto/ess/libcrypto-lib-ess_err.o", "crypto/ess/libcrypto-lib-ess_lib.o", @@ -24086,7 +28077,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/ffc/libcrypto-lib-ffc_backend.o", "crypto/ffc/libcrypto-lib-ffc_dh.o", "crypto/ffc/libcrypto-lib-ffc_key_generate.o", @@ -24094,7 +28087,11 @@ our %unified_info = ( "crypto/ffc/libcrypto-lib-ffc_params.o", "crypto/ffc/libcrypto-lib-ffc_params_generate.o", "crypto/ffc/libcrypto-lib-ffc_params_validate.o", + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", "crypto/hmac/libcrypto-lib-hmac.o", + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o", "crypto/http/libcrypto-lib-http_client.o", "crypto/http/libcrypto-lib-http_err.o", "crypto/http/libcrypto-lib-http_lib.o", @@ -24108,6 +28105,7 @@ our %unified_info = ( "crypto/lhash/libcrypto-lib-lhash.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -24117,10 +28115,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -24137,6 +28138,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -24144,12 +28146,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libcrypto-lib-x86cpuid.o", @@ -24161,6 +28167,15 @@ our %unified_info = ( "crypto/md5/libcrypto-lib-md5_sha1.o", "crypto/mdc2/libcrypto-lib-mdc2_one.o", "crypto/mdc2/libcrypto-lib-mdc2dgst.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_kem/libcrypto-lib-ml_kem.o", "crypto/modes/libcrypto-lib-cbc128.o", "crypto/modes/libcrypto-lib-ccm128.o", "crypto/modes/libcrypto-lib-cfb128.o", @@ -24173,6 +28188,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/objects/libcrypto-lib-o_names.o", "crypto/objects/libcrypto-lib-obj_dat.o", "crypto/objects/libcrypto-lib-obj_err.o", @@ -24237,6 +28253,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rc2/libcrypto-lib-rc2_cbc.o", "crypto/rc2/libcrypto-lib-rc2_ecb.o", @@ -24288,6 +28305,16 @@ our %unified_info = ( "crypto/sha/libcrypto-lib-sha512-586.o", "crypto/sha/libcrypto-lib-sha512.o", "crypto/siphash/libcrypto-lib-siphash.o", + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", "crypto/sm2/libcrypto-lib-sm2_crypt.o", "crypto/sm2/libcrypto-lib-sm2_err.o", "crypto/sm2/libcrypto-lib-sm2_key.o", @@ -24305,6 +28332,12 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_register.o", "crypto/store/libcrypto-lib-store_result.o", "crypto/store/libcrypto-lib-store_strings.o", + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", "crypto/ts/libcrypto-lib-ts_asn1.o", "crypto/ts/libcrypto-lib-ts_conf.o", "crypto/ts/libcrypto-lib-ts_err.o", @@ -24334,14 +28367,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -24350,12 +28391,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -24363,13 +28409,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -24387,6 +28440,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -24396,6 +28450,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -24417,14 +28472,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -24441,12 +28497,60 @@ our %unified_info = ( "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", "ssl/libssl-lib-tls_srp.o", - "ssl/record/libssl-lib-dtls1_bitmap.o", + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o", "ssl/record/libssl-lib-rec_layer_d1.o", "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o", "ssl/statem/libssl-lib-extensions.o", "ssl/statem/libssl-lib-extensions_clnt.o", "ssl/statem/libssl-lib-extensions_cust.o", @@ -24484,12 +28588,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/der/der_ecx_key.c" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/der/der_ml_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/der/der_ml_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/der/der_rsa_gen.c" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/der/der_rsa_key.c" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/der/der_slh_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/der/der_slh_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/der/der_wrap_gen.c" ], @@ -24556,6 +28672,9 @@ our %unified_info = ( "providers/common/libfips-lib-securitycheck_fips.o" => [ "providers/common/securitycheck_fips.c" ], + "providers/endecode_test-bin-legacyprov.o" => [ + "providers/legacyprov.c" + ], "providers/evp_extra_test-bin-legacyprov.o" => [ "providers/legacyprov.c" ], @@ -24565,6 +28684,9 @@ our %unified_info = ( "providers/fips/fips-dso-fips_entry.o" => [ "providers/fips/fips_entry.c" ], + "providers/fips/libfips-lib-fipsindicator.o" => [ + "providers/fips/fipsindicator.c" + ], "providers/fips/libfips-lib-fipsprov.o" => [ "providers/fips/fipsprov.c" ], @@ -24628,6 +28750,15 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o" => [ "providers/implementations/ciphers/cipher_aes_gcm_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o" => [ "providers/implementations/ciphers/cipher_aes_hw.c" ], @@ -24700,9 +28831,27 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o" => [ "providers/implementations/ciphers/cipher_sm4.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o" => [ "providers/implementations/ciphers/cipher_sm4_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o" => [ "providers/implementations/ciphers/cipher_tdes.c" ], @@ -24922,6 +29071,15 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" => [ "providers/implementations/encode_decode/endecoder_common.c" ], + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o" => [ + "providers/implementations/encode_decode/ml_common_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o" => [ + "providers/implementations/encode_decode/ml_dsa_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" => [ + "providers/implementations/encode_decode/ml_kem_codecs.c" + ], "providers/implementations/exchange/libdefault-lib-dh_exch.o" => [ "providers/implementations/exchange/dh_exch.c" ], @@ -24946,9 +29104,15 @@ our %unified_info = ( "providers/implementations/exchange/libfips-lib-kdf_exch.o" => [ "providers/implementations/exchange/kdf_exch.c" ], + "providers/implementations/kdfs/libdefault-lib-argon2.o" => [ + "providers/implementations/kdfs/argon2.c" + ], "providers/implementations/kdfs/libdefault-lib-hkdf.o" => [ "providers/implementations/kdfs/hkdf.c" ], + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o" => [ + "providers/implementations/kdfs/hmacdrbg_kdf.c" + ], "providers/implementations/kdfs/libdefault-lib-kbkdf.o" => [ "providers/implementations/kdfs/kbkdf.c" ], @@ -25006,12 +29170,39 @@ our %unified_info = ( "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" => [ "providers/implementations/kdfs/pbkdf1.c" ], + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" => [ + "providers/implementations/kdfs/pvkkdf.c" + ], + "providers/implementations/kem/libdefault-lib-ec_kem.o" => [ + "providers/implementations/kem/ec_kem.c" + ], + "providers/implementations/kem/libdefault-lib-ecx_kem.o" => [ + "providers/implementations/kem/ecx_kem.c" + ], + "providers/implementations/kem/libdefault-lib-kem_util.o" => [ + "providers/implementations/kem/kem_util.c" + ], + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libdefault-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libdefault-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libfips-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libfips-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libfips-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libtemplate-lib-template_kem.o" => [ + "providers/implementations/kem/template_kem.c" + ], "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25030,9 +29221,21 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25051,9 +29254,24 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" => [ + "providers/implementations/keymgmt/template_kmgmt.c" + ], "providers/implementations/macs/libdefault-lib-blake2b_mac.o" => [ "providers/implementations/macs/blake2b_mac.c" ], @@ -25090,9 +29308,6 @@ our %unified_info = ( "providers/implementations/macs/libfips-lib-kmac_prov.o" => [ "providers/implementations/macs/kmac_prov.c" ], - "providers/implementations/rands/libdefault-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libdefault-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25108,12 +29323,12 @@ our %unified_info = ( "providers/implementations/rands/libdefault-lib-seed_src.o" => [ "providers/implementations/rands/seed_src.c" ], + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o" => [ + "providers/implementations/rands/seed_src_jitter.c" + ], "providers/implementations/rands/libdefault-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], - "providers/implementations/rands/libfips-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libfips-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25126,6 +29341,9 @@ our %unified_info = ( "providers/implementations/rands/libfips-lib-drbg_hmac.o" => [ "providers/implementations/rands/drbg_hmac.c" ], + "providers/implementations/rands/libfips-lib-fips_crng_test.o" => [ + "providers/implementations/rands/fips_crng_test.c" + ], "providers/implementations/rands/libfips-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], @@ -25153,9 +29371,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/implementations/signature/sm2_sig.c" ], @@ -25171,9 +29395,27 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libfips-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], "providers/implementations/storemgmt/libdefault-lib-file_store.o" => [ "providers/implementations/storemgmt/file_store.c" ], @@ -25196,8 +29438,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/libcommon-lib-provider_ctx.o", "providers/common/libcommon-lib-provider_err.o", @@ -25209,7 +29455,7 @@ our %unified_info = ( "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", "providers/implementations/digests/libcommon-lib-digestcommon.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/methods/libcommon-lib-tls_pad.o" ], "providers/libcrypto-lib-baseprov.o" => [ "providers/baseprov.c" @@ -25245,6 +29491,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -25269,7 +29518,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -25298,11 +29553,16 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o", "providers/implementations/exchange/libdefault-lib-dh_exch.o", "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", "providers/implementations/exchange/libdefault-lib-ecx_exch.o", "providers/implementations/exchange/libdefault-lib-kdf_exch.o", + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -25313,6 +29573,11 @@ our %unified_info = ( "providers/implementations/kdfs/libdefault-lib-sskdf.o", "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", "providers/implementations/kdfs/libdefault-lib-x942kdf.o", + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", @@ -25320,7 +29585,11 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libdefault-lib-blake2b_mac.o", "providers/implementations/macs/libdefault-lib-blake2s_mac.o", "providers/implementations/macs/libdefault-lib-cmac_prov.o", @@ -25329,12 +29598,12 @@ our %unified_info = ( "providers/implementations/macs/libdefault-lib-kmac_prov.o", "providers/implementations/macs/libdefault-lib-poly1305_prov.o", "providers/implementations/macs/libdefault-lib-siphash_prov.o", - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", @@ -25344,11 +29613,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", "providers/implementations/storemgmt/libdefault-lib-file_store.o", "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", - "ssl/libdefault-lib-s3_cbc.o" + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" ], "providers/libfips.a" => [ "crypto/aes/libfips-lib-aes-586.o", @@ -25456,14 +29729,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", + "crypto/evp/libfips-lib-s_lib.o", "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o", "crypto/ffc/libfips-lib-ffc_backend.o", "crypto/ffc/libfips-lib-ffc_dh.o", "crypto/ffc/libfips-lib-ffc_key_generate.o", @@ -25471,6 +29745,8 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params.o", "crypto/ffc/libfips-lib-ffc_params_generate.o", "crypto/ffc/libfips-lib-ffc_params_validate.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o", "crypto/hmac/libfips-lib-hmac.o", "crypto/lhash/libfips-lib-lhash.o", "crypto/libfips-lib-asn1_dsa.o", @@ -25492,6 +29768,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -25500,7 +29777,17 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", "crypto/libfips-lib-x86cpuid.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o", + "crypto/ml_kem/libfips-lib-ml_kem.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -25510,6 +29797,7 @@ our %unified_info = ( "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o", "crypto/property/libfips-lib-defn_cache.o", "crypto/property/libfips-lib-property.o", "crypto/property/libfips-lib-property_parse.o", @@ -25541,7 +29829,23 @@ our %unified_info = ( "crypto/sha/libfips-lib-sha3.o", "crypto/sha/libfips-lib-sha512-586.o", "crypto/sha/libfips-lib-sha512.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o", "crypto/stack/libfips-lib-stack.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o", "providers/common/der/libfips-lib-der_rsa_sig.o", "providers/common/libfips-lib-bio_prov.o", "providers/common/libfips-lib-capabilities.o", @@ -25550,6 +29854,7 @@ our %unified_info = ( "providers/common/libfips-lib-provider_util.o", "providers/common/libfips-lib-securitycheck.o", "providers/common/libfips-lib-securitycheck_fips.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o", @@ -25587,6 +29892,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", "providers/implementations/kem/libfips-lib-rsa_kem.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", @@ -25594,24 +29901,32 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libfips-lib-cmac_prov.o", "providers/implementations/macs/libfips-lib-gmac_prov.o", "providers/implementations/macs/libfips-lib-hmac_prov.o", "providers/implementations/macs/libfips-lib-kmac_prov.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o", "providers/libcommon.a", - "ssl/libfips-lib-s3_cbc.o" + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "providers/liblegacy-lib-prov_running.o" => [ "providers/prov_running.c" @@ -25641,13 +29956,12 @@ our %unified_info = ( "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", "providers/implementations/digests/liblegacy-lib-wp_prov.o", "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o", "providers/liblegacy-lib-prov_running.o" ], - "ssl/libdefault-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" - ], - "ssl/libfips-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" + "providers/libtemplate.a" => [ + "providers/implementations/kem/libtemplate-lib-template_kem.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "ssl/libssl-lib-bio_ssl.o" => [ "ssl/bio_ssl.c" @@ -25667,6 +29981,9 @@ our %unified_info = ( "ssl/libssl-lib-pqueue.o" => [ "ssl/pqueue.c" ], + "ssl/libssl-lib-priority_queue.o" => [ + "ssl/priority_queue.c" + ], "ssl/libssl-lib-s3_enc.o" => [ "ssl/s3_enc.c" ], @@ -25682,15 +29999,15 @@ our %unified_info = ( "ssl/libssl-lib-ssl_cert.o" => [ "ssl/ssl_cert.c" ], + "ssl/libssl-lib-ssl_cert_comp.o" => [ + "ssl/ssl_cert_comp.c" + ], "ssl/libssl-lib-ssl_ciph.o" => [ "ssl/ssl_ciph.c" ], "ssl/libssl-lib-ssl_conf.o" => [ "ssl/ssl_conf.c" ], - "ssl/libssl-lib-ssl_err.o" => [ - "ssl/ssl_err.c" - ], "ssl/libssl-lib-ssl_err_legacy.o" => [ "ssl/ssl_err_legacy.c" ], @@ -25739,11 +30056,131 @@ our %unified_info = ( "ssl/libssl-lib-tls_srp.o" => [ "ssl/tls_srp.c" ], - "ssl/record/libcommon-lib-tls_pad.o" => [ - "ssl/record/tls_pad.c" + "ssl/quic/libssl-lib-cc_newreno.o" => [ + "ssl/quic/cc_newreno.c" + ], + "ssl/quic/libssl-lib-json_enc.o" => [ + "ssl/quic/json_enc.c" + ], + "ssl/quic/libssl-lib-qlog.o" => [ + "ssl/quic/qlog.c" + ], + "ssl/quic/libssl-lib-qlog_event_helpers.o" => [ + "ssl/quic/qlog_event_helpers.c" + ], + "ssl/quic/libssl-lib-quic_ackm.o" => [ + "ssl/quic/quic_ackm.c" + ], + "ssl/quic/libssl-lib-quic_cfq.o" => [ + "ssl/quic/quic_cfq.c" + ], + "ssl/quic/libssl-lib-quic_channel.o" => [ + "ssl/quic/quic_channel.c" + ], + "ssl/quic/libssl-lib-quic_demux.o" => [ + "ssl/quic/quic_demux.c" + ], + "ssl/quic/libssl-lib-quic_engine.o" => [ + "ssl/quic/quic_engine.c" + ], + "ssl/quic/libssl-lib-quic_fc.o" => [ + "ssl/quic/quic_fc.c" + ], + "ssl/quic/libssl-lib-quic_fifd.o" => [ + "ssl/quic/quic_fifd.c" + ], + "ssl/quic/libssl-lib-quic_impl.o" => [ + "ssl/quic/quic_impl.c" + ], + "ssl/quic/libssl-lib-quic_lcidm.o" => [ + "ssl/quic/quic_lcidm.c" + ], + "ssl/quic/libssl-lib-quic_method.o" => [ + "ssl/quic/quic_method.c" + ], + "ssl/quic/libssl-lib-quic_obj.o" => [ + "ssl/quic/quic_obj.c" + ], + "ssl/quic/libssl-lib-quic_port.o" => [ + "ssl/quic/quic_port.c" + ], + "ssl/quic/libssl-lib-quic_rcidm.o" => [ + "ssl/quic/quic_rcidm.c" + ], + "ssl/quic/libssl-lib-quic_reactor.o" => [ + "ssl/quic/quic_reactor.c" + ], + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o" => [ + "ssl/quic/quic_reactor_wait_ctx.c" + ], + "ssl/quic/libssl-lib-quic_record_rx.o" => [ + "ssl/quic/quic_record_rx.c" + ], + "ssl/quic/libssl-lib-quic_record_shared.o" => [ + "ssl/quic/quic_record_shared.c" + ], + "ssl/quic/libssl-lib-quic_record_tx.o" => [ + "ssl/quic/quic_record_tx.c" + ], + "ssl/quic/libssl-lib-quic_record_util.o" => [ + "ssl/quic/quic_record_util.c" + ], + "ssl/quic/libssl-lib-quic_rstream.o" => [ + "ssl/quic/quic_rstream.c" ], - "ssl/record/libssl-lib-dtls1_bitmap.o" => [ - "ssl/record/dtls1_bitmap.c" + "ssl/quic/libssl-lib-quic_rx_depack.o" => [ + "ssl/quic/quic_rx_depack.c" + ], + "ssl/quic/libssl-lib-quic_sf_list.o" => [ + "ssl/quic/quic_sf_list.c" + ], + "ssl/quic/libssl-lib-quic_srt_gen.o" => [ + "ssl/quic/quic_srt_gen.c" + ], + "ssl/quic/libssl-lib-quic_srtm.o" => [ + "ssl/quic/quic_srtm.c" + ], + "ssl/quic/libssl-lib-quic_sstream.o" => [ + "ssl/quic/quic_sstream.c" + ], + "ssl/quic/libssl-lib-quic_statm.o" => [ + "ssl/quic/quic_statm.c" + ], + "ssl/quic/libssl-lib-quic_stream_map.o" => [ + "ssl/quic/quic_stream_map.c" + ], + "ssl/quic/libssl-lib-quic_thread_assist.o" => [ + "ssl/quic/quic_thread_assist.c" + ], + "ssl/quic/libssl-lib-quic_tls.o" => [ + "ssl/quic/quic_tls.c" + ], + "ssl/quic/libssl-lib-quic_tls_api.o" => [ + "ssl/quic/quic_tls_api.c" + ], + "ssl/quic/libssl-lib-quic_trace.o" => [ + "ssl/quic/quic_trace.c" + ], + "ssl/quic/libssl-lib-quic_tserver.o" => [ + "ssl/quic/quic_tserver.c" + ], + "ssl/quic/libssl-lib-quic_txp.o" => [ + "ssl/quic/quic_txp.c" + ], + "ssl/quic/libssl-lib-quic_txpim.o" => [ + "ssl/quic/quic_txpim.c" + ], + "ssl/quic/libssl-lib-quic_types.o" => [ + "ssl/quic/quic_types.c" + ], + "ssl/quic/libssl-lib-quic_wire.o" => [ + "ssl/quic/quic_wire.c" + ], + "ssl/quic/libssl-lib-quic_wire_pkt.o" => [ + "ssl/quic/quic_wire_pkt.c" + ], + "ssl/quic/libssl-lib-uint_set.o" => [ + "ssl/quic/uint_set.c" ], "ssl/record/libssl-lib-rec_layer_d1.o" => [ "ssl/record/rec_layer_d1.c" @@ -25751,14 +30188,44 @@ our %unified_info = ( "ssl/record/libssl-lib-rec_layer_s3.o" => [ "ssl/record/rec_layer_s3.c" ], - "ssl/record/libssl-lib-ssl3_buffer.o" => [ - "ssl/record/ssl3_buffer.c" + "ssl/record/methods/libcommon-lib-tls_pad.o" => [ + "ssl/record/methods/tls_pad.c" + ], + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libfips-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libssl-lib-dtls_meth.o" => [ + "ssl/record/methods/dtls_meth.c" + ], + "ssl/record/methods/libssl-lib-ssl3_meth.o" => [ + "ssl/record/methods/ssl3_meth.c" + ], + "ssl/record/methods/libssl-lib-tls13_meth.o" => [ + "ssl/record/methods/tls13_meth.c" + ], + "ssl/record/methods/libssl-lib-tls1_meth.o" => [ + "ssl/record/methods/tls1_meth.c" + ], + "ssl/record/methods/libssl-lib-tls_common.o" => [ + "ssl/record/methods/tls_common.c" ], - "ssl/record/libssl-lib-ssl3_record.o" => [ - "ssl/record/ssl3_record.c" + "ssl/record/methods/libssl-lib-tls_multib.o" => [ + "ssl/record/methods/tls_multib.c" ], - "ssl/record/libssl-lib-ssl3_record_tls13.o" => [ - "ssl/record/ssl3_record_tls13.c" + "ssl/record/methods/libssl-lib-tlsany_meth.o" => [ + "ssl/record/methods/tlsany_meth.c" + ], + "ssl/rio/libssl-lib-poll_builder.o" => [ + "ssl/rio/poll_builder.c" + ], + "ssl/rio/libssl-lib-poll_immediate.o" => [ + "ssl/rio/poll_immediate.c" + ], + "ssl/rio/libssl-lib-rio_notifier.o" => [ + "ssl/rio/rio_notifier.c" ], "ssl/statem/libssl-lib-extensions.o" => [ "ssl/statem/extensions.c" @@ -25854,6 +30321,8 @@ our %unified_info = ( "test/asn1_string_table_test.c" ], "test/asn1_time_test" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1_time_test-bin-ctype.o", "test/asn1_time_test-bin-asn1_time_test.o" ], "test/asn1_time_test-bin-asn1_time_test.o" => [ @@ -25884,6 +30353,18 @@ our %unified_info = ( "test/bftest-bin-bftest.o" => [ "test/bftest.c" ], + "test/bio_addr_test" => [ + "test/bio_addr_test-bin-bio_addr_test.o" + ], + "test/bio_addr_test-bin-bio_addr_test.o" => [ + "test/bio_addr_test.c" + ], + "test/bio_base64_test" => [ + "test/bio_base64_test-bin-bio_base64_test.o" + ], + "test/bio_base64_test-bin-bio_base64_test.o" => [ + "test/bio_base64_test.c" + ], "test/bio_callback_test" => [ "test/bio_callback_test-bin-bio_callback_test.o" ], @@ -25896,6 +30377,12 @@ our %unified_info = ( "test/bio_core_test-bin-bio_core_test.o" => [ "test/bio_core_test.c" ], + "test/bio_dgram_test" => [ + "test/bio_dgram_test-bin-bio_dgram_test.o" + ], + "test/bio_dgram_test-bin-bio_dgram_test.o" => [ + "test/bio_dgram_test.c" + ], "test/bio_enc_test" => [ "test/bio_enc_test-bin-bio_enc_test.o" ], @@ -25908,6 +30395,12 @@ our %unified_info = ( "test/bio_memleak_test-bin-bio_memleak_test.o" => [ "test/bio_memleak_test.c" ], + "test/bio_meth_test" => [ + "test/bio_meth_test-bin-bio_meth_test.o" + ], + "test/bio_meth_test-bin-bio_meth_test.o" => [ + "test/bio_meth_test.c" + ], "test/bio_prefix_text" => [ "test/bio_prefix_text-bin-bio_prefix_text.o" ], @@ -25926,6 +30419,12 @@ our %unified_info = ( "test/bio_readbuffer_test-bin-bio_readbuffer_test.o" => [ "test/bio_readbuffer_test.c" ], + "test/bio_tfo_test" => [ + "test/bio_tfo_test-bin-bio_tfo_test.o" + ], + "test/bio_tfo_test-bin-bio_tfo_test.o" => [ + "test/bio_tfo_test.c" + ], "test/bioprinttest" => [ "test/bioprinttest-bin-bioprinttest.o" ], @@ -25944,6 +30443,12 @@ our %unified_info = ( "test/bntest-bin-bntest.o" => [ "test/bntest.c" ], + "test/build_wincrypt_test" => [ + "test/build_wincrypt_test-bin-build_wincrypt_test.o" + ], + "test/build_wincrypt_test-bin-build_wincrypt_test.o" => [ + "test/build_wincrypt_test.c" + ], "test/buildtest_c_aes" => [ "test/buildtest_c_aes-bin-buildtest_aes.o" ], @@ -25974,6 +30479,12 @@ our %unified_info = ( "test/buildtest_c_buffer-bin-buildtest_buffer.o" => [ "test/buildtest_buffer.c" ], + "test/buildtest_c_byteorder" => [ + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" + ], + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" => [ + "test/buildtest_byteorder.c" + ], "test/buildtest_c_camellia" => [ "test/buildtest_c_camellia-bin-buildtest_camellia.o" ], @@ -26022,12 +30533,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch-bin-buildtest_core_dispatch.o" => [ "test/buildtest_core_dispatch.c" ], - "test/buildtest_c_core_names" => [ - "test/buildtest_c_core_names-bin-buildtest_core_names.o" - ], - "test/buildtest_c_core_names-bin-buildtest_core_names.o" => [ - "test/buildtest_core_names.c" - ], "test/buildtest_c_core_object" => [ "test/buildtest_c_core_object-bin-buildtest_core_object.o" ], @@ -26076,6 +30581,12 @@ our %unified_info = ( "test/buildtest_c_e_os2-bin-buildtest_e_os2.o" => [ "test/buildtest_e_os2.c" ], + "test/buildtest_c_e_ostime" => [ + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" + ], + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" => [ + "test/buildtest_e_ostime.c" + ], "test/buildtest_c_ebcdic" => [ "test/buildtest_c_ebcdic-bin-buildtest_ebcdic.o" ], @@ -26130,6 +30641,12 @@ our %unified_info = ( "test/buildtest_c_hmac-bin-buildtest_hmac.o" => [ "test/buildtest_hmac.c" ], + "test/buildtest_c_hpke" => [ + "test/buildtest_c_hpke-bin-buildtest_hpke.o" + ], + "test/buildtest_c_hpke-bin-buildtest_hpke.o" => [ + "test/buildtest_hpke.c" + ], "test/buildtest_c_http" => [ "test/buildtest_c_http-bin-buildtest_http.o" ], @@ -26142,6 +30659,12 @@ our %unified_info = ( "test/buildtest_c_idea-bin-buildtest_idea.o" => [ "test/buildtest_idea.c" ], + "test/buildtest_c_indicator" => [ + "test/buildtest_c_indicator-bin-buildtest_indicator.o" + ], + "test/buildtest_c_indicator-bin-buildtest_indicator.o" => [ + "test/buildtest_indicator.c" + ], "test/buildtest_c_kdf" => [ "test/buildtest_c_kdf-bin-buildtest_kdf.o" ], @@ -26172,6 +30695,12 @@ our %unified_info = ( "test/buildtest_c_mdc2-bin-buildtest_mdc2.o" => [ "test/buildtest_mdc2.c" ], + "test/buildtest_c_ml_kem" => [ + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" + ], + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" => [ + "test/buildtest_ml_kem.c" + ], "test/buildtest_c_modes" => [ "test/buildtest_c_modes-bin-buildtest_modes.o" ], @@ -26232,6 +30761,12 @@ our %unified_info = ( "test/buildtest_c_provider-bin-buildtest_provider.o" => [ "test/buildtest_provider.c" ], + "test/buildtest_c_quic" => [ + "test/buildtest_c_quic-bin-buildtest_quic.o" + ], + "test/buildtest_c_quic-bin-buildtest_quic.o" => [ + "test/buildtest_quic.c" + ], "test/buildtest_c_rand" => [ "test/buildtest_c_rand-bin-buildtest_rand.o" ], @@ -26316,6 +30851,12 @@ our %unified_info = ( "test/buildtest_c_symhacks-bin-buildtest_symhacks.o" => [ "test/buildtest_symhacks.c" ], + "test/buildtest_c_thread" => [ + "test/buildtest_c_thread-bin-buildtest_thread.o" + ], + "test/buildtest_c_thread-bin-buildtest_thread.o" => [ + "test/buildtest_thread.c" + ], "test/buildtest_c_tls1" => [ "test/buildtest_c_tls1-bin-buildtest_tls1.o" ], @@ -26346,6 +30887,29 @@ our %unified_info = ( "test/buildtest_c_whrlpool-bin-buildtest_whrlpool.o" => [ "test/buildtest_whrlpool.c" ], + "test/byteorder_test" => [ + "test/byteorder_test-bin-byteorder_test.o" + ], + "test/byteorder_test-bin-byteorder_test.o" => [ + "test/byteorder_test.c" + ], + "test/ca_internals_test" => [ + "apps/ca_internals_test-bin-ca.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", + "crypto/ca_internals_test-bin-ctype.o", + "test/ca_internals_test-bin-ca_internals_test.o" + ], + "test/ca_internals_test-bin-ca_internals_test.o" => [ + "test/ca_internals_test.c" + ], "test/casttest" => [ "test/casttest-bin-casttest.o" ], @@ -26524,6 +31088,12 @@ our %unified_info = ( "test/danetest-bin-danetest.o" => [ "test/danetest.c" ], + "test/decoder_propq_test" => [ + "test/decoder_propq_test-bin-decoder_propq_test.o" + ], + "test/decoder_propq_test-bin-decoder_propq_test.o" => [ + "test/decoder_propq_test.c" + ], "test/defltfips_test" => [ "test/defltfips_test-bin-defltfips_test.o" ], @@ -26605,6 +31175,7 @@ our %unified_info = ( "test/ectest.c" ], "test/endecode_test" => [ + "providers/endecode_test-bin-legacyprov.o", "test/endecode_test-bin-endecode_test.o", "test/helpers/endecode_test-bin-predefined_dhparams.o" ], @@ -26637,17 +31208,29 @@ our %unified_info = ( ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", - "test/evp_extra_test-bin-evp_extra_test.o" + "test/evp_extra_test-bin-evp_extra_test.o", + "test/evp_extra_test-bin-fake_pipelineprov.o", + "test/evp_extra_test-bin-fake_rsaprov.o" ], "test/evp_extra_test-bin-evp_extra_test.o" => [ "test/evp_extra_test.c" ], + "test/evp_extra_test-bin-fake_pipelineprov.o" => [ + "test/fake_pipelineprov.c" + ], + "test/evp_extra_test-bin-fake_rsaprov.o" => [ + "test/fake_rsaprov.c" + ], "test/evp_extra_test2" => [ - "test/evp_extra_test2-bin-evp_extra_test2.o" + "test/evp_extra_test2-bin-evp_extra_test2.o", + "test/evp_extra_test2-bin-tls-provider.o" ], "test/evp_extra_test2-bin-evp_extra_test2.o" => [ "test/evp_extra_test2.c" ], + "test/evp_extra_test2-bin-tls-provider.o" => [ + "test/tls-provider.c" + ], "test/evp_fetch_prov_test" => [ "test/evp_fetch_prov_test-bin-evp_fetch_prov_test.o" ], @@ -26672,6 +31255,12 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name-bin-evp_pkey_ctx_new_from_name.o" => [ "test/evp_pkey_ctx_new_from_name.c" ], + "test/evp_pkey_dhkem_test" => [ + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" + ], + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" => [ + "test/evp_pkey_dhkem_test.c" + ], "test/evp_pkey_dparams_test" => [ "test/evp_pkey_dparams_test-bin-evp_pkey_dparams_test.o" ], @@ -26684,12 +31273,28 @@ our %unified_info = ( "test/evp_pkey_provided_test-bin-evp_pkey_provided_test.o" => [ "test/evp_pkey_provided_test.c" ], + "test/evp_skey_test" => [ + "test/evp_skey_test-bin-evp_skey_test.o", + "test/evp_skey_test-bin-fake_cipherprov.o" + ], + "test/evp_skey_test-bin-evp_skey_test.o" => [ + "test/evp_skey_test.c" + ], + "test/evp_skey_test-bin-fake_cipherprov.o" => [ + "test/fake_cipherprov.c" + ], "test/evp_test" => [ "test/evp_test-bin-evp_test.o" ], "test/evp_test-bin-evp_test.o" => [ "test/evp_test.c" ], + "test/evp_xof_test" => [ + "test/evp_xof_test-bin-evp_xof_test.o" + ], + "test/evp_xof_test-bin-evp_xof_test.o" => [ + "test/evp_xof_test.c" + ], "test/exdatatest" => [ "test/exdatatest-bin-exdatatest.o" ], @@ -26775,15 +31380,108 @@ our %unified_info = ( "test/helpers/fatalerrtest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/json_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/json_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/json_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + "test/helpers/pkcs12.c" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ "test/helpers/pkcs12.c" ], + "test/helpers/quic_multistream_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_multistream_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_multistream_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_newcid_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_newcid_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_newcid_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_radix_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_radix_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_radix_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_srt_gen_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicapitest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicapitest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicapitest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicfaultstest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicfaultstest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicfaultstest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/ssl_old_test-bin-predefined_dhparams.o" => [ "test/helpers/predefined_dhparams.c" ], @@ -26811,6 +31509,9 @@ our %unified_info = ( "test/helpers/tls13ccstest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/hexstr_test" => [ "test/hexstr_test-bin-hexstr_test.o" ], @@ -26823,6 +31524,12 @@ our %unified_info = ( "test/hmactest-bin-hmactest.o" => [ "test/hmactest.c" ], + "test/hpke_test" => [ + "test/hpke_test-bin-hpke_test.o" + ], + "test/hpke_test-bin-hpke_test.o" => [ + "test/hpke_test.c" + ], "test/http_test" => [ "test/http_test-bin-http_test.o" ], @@ -26841,6 +31548,16 @@ our %unified_info = ( "test/igetest-bin-igetest.o" => [ "test/igetest.c" ], + "test/json_test" => [ + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/json_test-bin-json_test.o" + ], + "test/json_test-bin-json_test.o" => [ + "test/json_test.c" + ], "test/keymgmt_internal_test" => [ "test/keymgmt_internal_test-bin-keymgmt_internal_test.o" ], @@ -26861,6 +31578,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -26873,6 +31591,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-tests.o", "test/testutil/libtestutil-lib-testutil_init.o" ], + "test/list_test" => [ + "test/list_test-bin-list_test.o" + ], + "test/list_test-bin-list_test.o" => [ + "test/list_test.c" + ], "test/localetest" => [ "test/localetest-bin-localetest.o" ], @@ -26891,12 +31615,36 @@ our %unified_info = ( "test/mdc2test-bin-mdc2test.o" => [ "test/mdc2test.c" ], + "test/membio_test" => [ + "test/membio_test-bin-membio_test.o" + ], + "test/membio_test-bin-membio_test.o" => [ + "test/membio_test.c" + ], "test/memleaktest" => [ "test/memleaktest-bin-memleaktest.o" ], "test/memleaktest-bin-memleaktest.o" => [ "test/memleaktest.c" ], + "test/ml_dsa_test" => [ + "test/ml_dsa_test-bin-ml_dsa_test.o" + ], + "test/ml_dsa_test-bin-ml_dsa_test.o" => [ + "test/ml_dsa_test.c" + ], + "test/ml_kem_evp_extra_test" => [ + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" + ], + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" => [ + "test/ml_kem_evp_extra_test.c" + ], + "test/ml_kem_internal_test" => [ + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" + ], + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" => [ + "test/ml_kem_internal_test.c" + ], "test/modes_internal_test" => [ "test/modes_internal_test-bin-modes_internal_test.o" ], @@ -26940,11 +31688,18 @@ our %unified_info = ( "test/p_test.c" ], "test/packettest" => [ + "crypto/packettest-bin-quic_vlint.o", "test/packettest-bin-packettest.o" ], "test/packettest-bin-packettest.o" => [ "test/packettest.c" ], + "test/pairwise_fail_test" => [ + "test/pairwise_fail_test-bin-pairwise_fail_test.o" + ], + "test/pairwise_fail_test-bin-pairwise_fail_test.o" => [ + "test/pairwise_fail_test.c" + ], "test/param_build_test" => [ "test/param_build_test-bin-param_build_test.o" ], @@ -26993,6 +31748,13 @@ our %unified_info = ( "test/pemtest-bin-pemtest.o" => [ "test/pemtest.c" ], + "test/pkcs12_api_test" => [ + "test/helpers/pkcs12_api_test-bin-pkcs12.o", + "test/pkcs12_api_test-bin-pkcs12_api_test.o" + ], + "test/pkcs12_api_test-bin-pkcs12_api_test.o" => [ + "test/pkcs12_api_test.c" + ], "test/pkcs12_format_test" => [ "test/helpers/pkcs12_format_test-bin-pkcs12.o", "test/pkcs12_format_test-bin-pkcs12_format_test.o" @@ -27024,6 +31786,12 @@ our %unified_info = ( "test/poly1305_internal_test-bin-poly1305_internal_test.o" => [ "test/poly1305_internal_test.c" ], + "test/priority_queue_test" => [ + "test/priority_queue_test-bin-priority_queue_test.o" + ], + "test/priority_queue_test-bin-priority_queue_test.o" => [ + "test/priority_queue_test.c" + ], "test/property_test" => [ "test/property_test-bin-property_test.o" ], @@ -27042,6 +31810,12 @@ our %unified_info = ( "test/provfetchtest-bin-provfetchtest.o" => [ "test/provfetchtest.c" ], + "test/provider_default_search_path_test" => [ + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" + ], + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" => [ + "test/provider_default_search_path_test.c" + ], "test/provider_fallback_test" => [ "test/provider_fallback_test-bin-provider_fallback_test.o" ], @@ -27090,6 +31864,174 @@ our %unified_info = ( "test/punycode_test-bin-punycode_test.o" => [ "test/punycode_test.c" ], + "test/quic_ackm_test" => [ + "test/quic_ackm_test-bin-cc_dummy.o", + "test/quic_ackm_test-bin-quic_ackm_test.o" + ], + "test/quic_ackm_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_ackm_test-bin-quic_ackm_test.o" => [ + "test/quic_ackm_test.c" + ], + "test/quic_cc_test" => [ + "test/quic_cc_test-bin-quic_cc_test.o" + ], + "test/quic_cc_test-bin-quic_cc_test.o" => [ + "test/quic_cc_test.c" + ], + "test/quic_cfq_test" => [ + "test/quic_cfq_test-bin-quic_cfq_test.o" + ], + "test/quic_cfq_test-bin-quic_cfq_test.o" => [ + "test/quic_cfq_test.c" + ], + "test/quic_client_test" => [ + "test/quic_client_test-bin-quic_client_test.o" + ], + "test/quic_client_test-bin-quic_client_test.o" => [ + "test/quic_client_test.c" + ], + "test/quic_fc_test" => [ + "test/quic_fc_test-bin-quic_fc_test.o" + ], + "test/quic_fc_test-bin-quic_fc_test.o" => [ + "test/quic_fc_test.c" + ], + "test/quic_fifd_test" => [ + "test/quic_fifd_test-bin-cc_dummy.o", + "test/quic_fifd_test-bin-quic_fifd_test.o" + ], + "test/quic_fifd_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_fifd_test-bin-quic_fifd_test.o" => [ + "test/quic_fifd_test.c" + ], + "test/quic_lcidm_test" => [ + "test/quic_lcidm_test-bin-quic_lcidm_test.o" + ], + "test/quic_lcidm_test-bin-quic_lcidm_test.o" => [ + "test/quic_lcidm_test.c" + ], + "test/quic_multistream_test" => [ + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/quic_multistream_test-bin-quic_multistream_test.o" + ], + "test/quic_multistream_test-bin-quic_multistream_test.o" => [ + "test/quic_multistream_test.c" + ], + "test/quic_newcid_test" => [ + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/quic_newcid_test-bin-quic_newcid_test.o" + ], + "test/quic_newcid_test-bin-quic_newcid_test.o" => [ + "test/quic_newcid_test.c" + ], + "test/quic_qlog_test" => [ + "test/quic_qlog_test-bin-quic_qlog_test.o" + ], + "test/quic_qlog_test-bin-quic_qlog_test.o" => [ + "test/quic_qlog_test.c" + ], + "test/quic_radix_test" => [ + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "test/quic_rcidm_test" => [ + "test/quic_rcidm_test-bin-quic_rcidm_test.o" + ], + "test/quic_rcidm_test-bin-quic_rcidm_test.o" => [ + "test/quic_rcidm_test.c" + ], + "test/quic_record_test" => [ + "test/quic_record_test-bin-quic_record_test.o" + ], + "test/quic_record_test-bin-quic_record_test.o" => [ + "test/quic_record_test.c" + ], + "test/quic_srt_gen_test" => [ + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" + ], + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" => [ + "test/quic_srt_gen_test.c" + ], + "test/quic_srtm_test" => [ + "test/quic_srtm_test-bin-quic_srtm_test.o" + ], + "test/quic_srtm_test-bin-quic_srtm_test.o" => [ + "test/quic_srtm_test.c" + ], + "test/quic_stream_test" => [ + "test/quic_stream_test-bin-quic_stream_test.o" + ], + "test/quic_stream_test-bin-quic_stream_test.o" => [ + "test/quic_stream_test.c" + ], + "test/quic_tserver_test" => [ + "test/quic_tserver_test-bin-quic_tserver_test.o" + ], + "test/quic_tserver_test-bin-quic_tserver_test.o" => [ + "test/quic_tserver_test.c" + ], + "test/quic_txp_test" => [ + "test/quic_txp_test-bin-cc_dummy.o", + "test/quic_txp_test-bin-quic_txp_test.o" + ], + "test/quic_txp_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_txp_test-bin-quic_txp_test.o" => [ + "test/quic_txp_test.c" + ], + "test/quic_txpim_test" => [ + "test/quic_txpim_test-bin-quic_txpim_test.o" + ], + "test/quic_txpim_test-bin-quic_txpim_test.o" => [ + "test/quic_txpim_test.c" + ], + "test/quic_wire_test" => [ + "test/quic_wire_test-bin-quic_wire_test.o" + ], + "test/quic_wire_test-bin-quic_wire_test.o" => [ + "test/quic_wire_test.c" + ], + "test/quicapitest" => [ + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/quicapitest-bin-quicapitest.o" + ], + "test/quicapitest-bin-quicapitest.o" => [ + "test/quicapitest.c" + ], + "test/quicfaultstest" => [ + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", + "test/quicfaultstest-bin-quicfaultstest.o" + ], + "test/quicfaultstest-bin-quicfaultstest.o" => [ + "test/quicfaultstest.c" + ], + "test/radix/quic_radix_test-bin-quic_radix.o" => [ + "test/radix/quic_radix.c" + ], "test/rand_status_test" => [ "test/rand_status_test-bin-rand_status_test.o" ], @@ -27120,11 +32062,11 @@ our %unified_info = ( "test/rc5test-bin-rc5test.o" => [ "test/rc5test.c" ], - "test/rdrand_sanitytest" => [ - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" + "test/rdcpu_sanitytest" => [ + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" ], - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" => [ - "test/rdrand_sanitytest.c" + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" => [ + "test/rdcpu_sanitytest.c" ], "test/recordlentest" => [ "test/helpers/recordlentest-bin-ssltestlib.o", @@ -27133,6 +32075,13 @@ our %unified_info = ( "test/recordlentest-bin-recordlentest.o" => [ "test/recordlentest.c" ], + "test/rpktest" => [ + "test/helpers/rpktest-bin-ssltestlib.o", + "test/rpktest-bin-rpktest.o" + ], + "test/rpktest-bin-rpktest.o" => [ + "test/rpktest.c" + ], "test/rsa_complex" => [ "test/rsa_complex-bin-rsa_complex.o" ], @@ -27157,6 +32106,18 @@ our %unified_info = ( "test/rsa_test-bin-rsa_test.o" => [ "test/rsa_test.c" ], + "test/rsa_x931_test" => [ + "test/rsa_x931_test-bin-rsa_x931_test.o" + ], + "test/rsa_x931_test-bin-rsa_x931_test.o" => [ + "test/rsa_x931_test.c" + ], + "test/safe_math_test" => [ + "test/safe_math_test-bin-safe_math_test.o" + ], + "test/safe_math_test-bin-safe_math_test.o" => [ + "test/safe_math_test.c" + ], "test/sanitytest" => [ "test/sanitytest-bin-sanitytest.o" ], @@ -27188,6 +32149,12 @@ our %unified_info = ( "test/siphash_internal_test-bin-siphash_internal_test.o" => [ "test/siphash_internal_test.c" ], + "test/slh_dsa_test" => [ + "test/slh_dsa_test-bin-slh_dsa_test.o" + ], + "test/slh_dsa_test-bin-slh_dsa_test.o" => [ + "test/slh_dsa_test.c" + ], "test/sm2_internal_test" => [ "test/sm2_internal_test-bin-sm2_internal_test.o" ], @@ -27230,6 +32197,13 @@ our %unified_info = ( "test/ssl_ctx_test-bin-ssl_ctx_test.o" => [ "test/ssl_ctx_test.c" ], + "test/ssl_handshake_rtt_test" => [ + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" + ], + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" => [ + "test/ssl_handshake_rtt_test.c" + ], "test/ssl_old_test" => [ "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/ssl_old_test-bin-ssl_old_test.o" @@ -27288,6 +32262,12 @@ our %unified_info = ( "test/stack_test-bin-stack_test.o" => [ "test/stack_test.c" ], + "test/strtoultest" => [ + "test/strtoultest-bin-strtoultest.o" + ], + "test/strtoultest-bin-strtoultest.o" => [ + "test/strtoultest.c" + ], "test/sysdefaulttest" => [ "test/sysdefaulttest-bin-sysdefaulttest.o" ], @@ -27318,6 +32298,9 @@ our %unified_info = ( "test/testutil/libtestutil-lib-format_output.o" => [ "test/testutil/format_output.c" ], + "test/testutil/libtestutil-lib-helper.o" => [ + "test/testutil/helper.c" + ], "test/testutil/libtestutil-lib-load.o" => [ "test/testutil/load.c" ], @@ -27351,6 +32334,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-testutil_init.o" => [ "test/testutil/testutil_init.c" ], + "test/threadpool_test" => [ + "test/threadpool_test-bin-threadpool_test.o" + ], + "test/threadpool_test-bin-threadpool_test.o" => [ + "test/threadpool_test.c" + ], "test/threadstest" => [ "test/threadstest-bin-threadstest.o" ], @@ -27369,6 +32358,12 @@ our %unified_info = ( "test/time_offset_test-bin-time_offset_test.o" => [ "test/time_offset_test.c" ], + "test/time_test" => [ + "test/time_test-bin-time_test.o" + ], + "test/time_test-bin-time_test.o" => [ + "test/time_test.c" + ], "test/tls13ccstest" => [ "test/helpers/tls13ccstest-bin-ssltestlib.o", "test/tls13ccstest-bin-tls13ccstest.o" @@ -27382,6 +32377,13 @@ our %unified_info = ( "test/tls13encryptiontest-bin-tls13encryptiontest.o" => [ "test/tls13encryptiontest.c" ], + "test/tls13groupselection_test" => [ + "test/helpers/tls13groupselection_test-bin-ssltestlib.o", + "test/tls13groupselection_test-bin-tls13groupselection_test.o" + ], + "test/tls13groupselection_test-bin-tls13groupselection_test.o" => [ + "test/tls13groupselection_test.c" + ], "test/trace_api_test" => [ "test/trace_api_test-bin-trace_api_test.o" ], @@ -27437,6 +32439,12 @@ our %unified_info = ( "test/wpackettest-bin-wpackettest.o" => [ "test/wpackettest.c" ], + "test/x509_acert_test" => [ + "test/x509_acert_test-bin-x509_acert_test.o" + ], + "test/x509_acert_test-bin-x509_acert_test.o" => [ + "test/x509_acert_test.c" + ], "test/x509_check_cert_pkey_test" => [ "test/x509_check_cert_pkey_test-bin-x509_check_cert_pkey_test.o" ], @@ -27455,6 +32463,24 @@ our %unified_info = ( "test/x509_internal_test-bin-x509_internal_test.o" => [ "test/x509_internal_test.c" ], + "test/x509_load_cert_file_test" => [ + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" + ], + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" => [ + "test/x509_load_cert_file_test.c" + ], + "test/x509_req_test" => [ + "test/x509_req_test-bin-x509_req_test.o" + ], + "test/x509_req_test-bin-x509_req_test.o" => [ + "test/x509_req_test.c" + ], + "test/x509_test" => [ + "test/x509_test-bin-x509_test.o" + ], + "test/x509_test-bin-x509_test.o" => [ + "test/x509_test.c" + ], "test/x509_time_test" => [ "test/x509_time_test-bin-x509_time_test.o" ], @@ -27518,6 +32544,7 @@ my @makevars = ( "LDLIBS", "MT", "MTFLAGS", + "OBJCOPY", "PERL", "RANLIB", "RC", @@ -27531,6 +32558,12 @@ my %disabled_info = ( "asan" => { "macro" => "OPENSSL_NO_ASAN" }, + "brotli" => { + "macro" => "OPENSSL_NO_BROTLI" + }, + "brotli-dynamic" => { + "macro" => "OPENSSL_NO_BROTLI_DYNAMIC" + }, "comp" => { "macro" => "OPENSSL_NO_COMP", "skipped" => [ @@ -27543,6 +32576,9 @@ my %disabled_info = ( "crypto-mdebug-backtrace" => { "macro" => "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE" }, + "demos" => { + "macro" => "OPENSSL_NO_DEMOS" + }, "devcryptoeng" => { "macro" => "OPENSSL_NO_DEVCRYPTOENG" }, @@ -27555,12 +32591,24 @@ my %disabled_info = ( "external-tests" => { "macro" => "OPENSSL_NO_EXTERNAL_TESTS" }, + "fips-jitter" => { + "macro" => "OPENSSL_NO_FIPS_JITTER" + }, "fuzz-afl" => { "macro" => "OPENSSL_NO_FUZZ_AFL" }, "fuzz-libfuzzer" => { "macro" => "OPENSSL_NO_FUZZ_LIBFUZZER" }, + "h3demo" => { + "macro" => "OPENSSL_NO_H3DEMO" + }, + "hqinterop" => { + "macro" => "OPENSSL_NO_HQINTEROP" + }, + "jitter" => { + "macro" => "OPENSSL_NO_JITTER" + }, "ktls" => { "macro" => "OPENSSL_NO_KTLS" }, @@ -27576,6 +32624,9 @@ my %disabled_info = ( "msan" => { "macro" => "OPENSSL_NO_MSAN" }, + "pie" => { + "macro" => "OPENSSL_NO_PIE" + }, "rc5" => { "macro" => "OPENSSL_NO_RC5", "skipped" => [ @@ -27591,6 +32642,12 @@ my %disabled_info = ( "ssl3-method" => { "macro" => "OPENSSL_NO_SSL3_METHOD" }, + "sslkeylog" => { + "macro" => "OPENSSL_NO_SSLKEYLOG" + }, + "tfo" => { + "macro" => "OPENSSL_NO_TFO" + }, "trace" => { "macro" => "OPENSSL_NO_TRACE" }, @@ -27605,6 +32662,21 @@ my %disabled_info = ( }, "weak-ssl-ciphers" => { "macro" => "OPENSSL_NO_WEAK_SSL_CIPHERS" + }, + "winstore" => { + "macro" => "OPENSSL_NO_WINSTORE" + }, + "zlib" => { + "macro" => "OPENSSL_NO_ZLIB" + }, + "zlib-dynamic" => { + "macro" => "OPENSSL_NO_ZLIB_DYNAMIC" + }, + "zstd" => { + "macro" => "OPENSSL_NO_ZSTD" + }, + "zstd-dynamic" => { + "macro" => "OPENSSL_NO_ZSTD_DYNAMIC" } ); my @user_crossable = qw( AR AS CC CXX CPP LD MT RANLIB RC ); @@ -27618,15 +32690,15 @@ unless (caller) { use File::Copy; use Pod::Usage; - use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; - use OpenSSL::fallback '/home/runner/work/node/node/deps/openssl/openssl/external/perl/MODULES.txt'; + use lib '/node/deps/openssl/openssl/util/perl'; + use OpenSSL::fallback '/node/deps/openssl/openssl/external/perl/MODULES.txt'; my $here = dirname($0); if (scalar @ARGV == 0) { # With no arguments, re-create the build file # We do that in two steps, where the first step emits perl - # snipets. + # snippets. my $buildfile = $config{build_file}; my $buildfile_template = "$buildfile.in"; @@ -27646,7 +32718,7 @@ unless (caller) { ); use lib '.'; - use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; + use lib '/node/deps/openssl/openssl/Configurations'; use gentemplate; open my $buildfile_template_fh, ">$buildfile_template" @@ -27663,8 +32735,8 @@ unless (caller) { my $prepend = <<'_____'; use File::Spec::Functions; -use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; -use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; +use lib '/node/deps/openssl/openssl/util/perl'; +use lib '/node/deps/openssl/openssl/Configurations'; use lib '.'; use platform; _____ diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/aes/aes-586.S b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/aes/aes-586.S index f474c45fde8a8f..07586720827b91 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/aes/aes-586.S +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/aes/aes-586.S @@ -3264,4 +3264,4 @@ L056permute: L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P .long 0 -.comm _OPENSSL_ia32cap_P,16,2 +.comm _OPENSSL_ia32cap_P,40,2 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/aes/aesni-x86.S b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/aes/aesni-x86.S index 7a23ba9595c312..64d97c5d7cce0f 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/aes/aesni-x86.S +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/aes/aesni-x86.S @@ -3304,4 +3304,4 @@ Lkey_const: L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P .long 0 -.comm _OPENSSL_ia32cap_P,16,2 +.comm _OPENSSL_ia32cap_P,40,2 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/bn/bn-586.S b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/bn/bn-586.S index 066935dd3b41df..42cbe15c13118a 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/bn/bn-586.S +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/bn/bn-586.S @@ -1551,4 +1551,4 @@ L032pw_end: L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P .long 0 -.comm _OPENSSL_ia32cap_P,16,2 +.comm _OPENSSL_ia32cap_P,40,2 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/bn/x86-gf2m.S b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/bn/x86-gf2m.S index 92bdaeac9b1c0e..7dcfd799bec9ba 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/bn/x86-gf2m.S +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/bn/x86-gf2m.S @@ -355,4 +355,4 @@ L001ialu: L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P .long 0 -.comm _OPENSSL_ia32cap_P,16,2 +.comm _OPENSSL_ia32cap_P,40,2 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/bn/x86-mont.S b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/bn/x86-mont.S index 7bca500149ee8d..5c615bb79093e9 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/bn/x86-mont.S +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/bn/x86-mont.S @@ -479,4 +479,4 @@ L000just_leave: L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P .long 0 -.comm _OPENSSL_ia32cap_P,16,2 +.comm _OPENSSL_ia32cap_P,40,2 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h index efc6054598df82..7af617f4e454f9 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin-i386-cc" -#define DATE "built on: Sun Jul 20 00:47:41 2025 UTC" +#define DATE "built on: Tue Aug 5 17:12:58 2025 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/chacha/chacha-x86.S b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/chacha/chacha-x86.S index fcc5df1948bf90..6a82762d1caa19 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/chacha/chacha-x86.S +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/chacha/chacha-x86.S @@ -1455,4 +1455,4 @@ L019done: L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P .long 0 -.comm _OPENSSL_ia32cap_P,16,2 +.comm _OPENSSL_ia32cap_P,40,2 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/ec/ecp_nistz256-x86.S b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/ec/ecp_nistz256-x86.S index 821f4fc126e702..38df7d7448a80d 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/ec/ecp_nistz256-x86.S +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/ec/ecp_nistz256-x86.S @@ -5230,4 +5230,4 @@ L013pic: L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P .long 0 -.comm _OPENSSL_ia32cap_P,16,2 +.comm _OPENSSL_ia32cap_P,40,2 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/params_idx.c b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/params_idx.c new file mode 100644 index 00000000000000..9d76ffededc24c --- /dev/null +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/params_idx.c @@ -0,0 +1,3366 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from crypto/params_idx.c.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#include "internal/e_os.h" +#include "internal/param_names.h" +#include + +/* Machine generated TRIE -- generated by util/perl/OpenSSL/paramnames.pm */ +int ossl_param_find_pidx(const char *s) +{ + switch(s[0]) { + default: + break; + case 'a': + switch(s[1]) { + default: + break; + case 'c': + if (strcmp("vp-info", s + 2) == 0) + return PIDX_KDF_PARAM_X942_ACVPINFO; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'd': + if (strcmp("itional-random", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_ADD_RANDOM; + break; + case '\0': + return PIDX_KDF_PARAM_ARGON2_AD; + } + break; + case 'e': + if (strcmp("ad", s + 2) == 0) + return PIDX_CIPHER_PARAM_AEAD; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("id_param", s + 4) == 0) + return PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD; + break; + case 'i': + if (strcmp("d-absent", s + 4) == 0) + return PIDX_DIGEST_PARAM_ALGID_ABSENT; + break; + case 'o': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'h': + switch(s[8]) { + default: + break; + case 'm': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '-': + if (strcmp("params", s + 13) == 0) + return PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS; + break; + case '\0': + return PIDX_ALG_PARAM_ALGORITHM_ID; + } + } + } + } + } + } + } + } + } + } + break; + case 'i': + if (strcmp("as", s + 3) == 0) + return PIDX_STORE_PARAM_ALIAS; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_A; + } + break; + case 'b': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("sis-type", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_CHAR2_TYPE; + break; + case 'i': + if (strcmp("ts", s + 2) == 0) + return PIDX_PKEY_PARAM_BITS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("size", s + 6) == 0) + return PIDX_MAC_PARAM_BLOCK_SIZE; + break; + case '_': + if (strcmp("padding", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING; + break; + case 's': + if (strcmp("ize", s + 6) == 0) + return PIDX_DIGEST_PARAM_BLOCK_SIZE; + } + } + } + } + break; + case 'u': + if (strcmp("ildinfo", s + 2) == 0) + return PIDX_PROV_PARAM_BUILDINFO; + break; + case '\0': + return PIDX_PKEY_PARAM_EC_B; + } + break; + case 'c': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_C_ROUNDS; + break; + case 'e': + if (strcmp("kalg", s + 2) == 0) + return PIDX_KDF_PARAM_CEK_ALG; + break; + case 'i': + if (strcmp("pher", s + 2) == 0) + return PIDX_ALG_PARAM_CIPHER; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("actor", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_COFACTOR; + break; + case 'n': + switch(s[3]) { + default: + break; + case 's': + if (strcmp("tant", s + 4) == 0) + return PIDX_KDF_PARAM_CONSTANT; + break; + case 't': + if (strcmp("ext-string", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_CONTEXT_STRING; + } + } + break; + case 't': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("mode", s + 4) == 0) + return PIDX_CIPHER_PARAM_CTS_MODE; + break; + case '\0': + return PIDX_CIPHER_PARAM_CTS; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '-': + if (strcmp("iv", s + 7) == 0) + return PIDX_CIPHER_PARAM_CUSTOM_IV; + break; + case '\0': + return PIDX_MAC_PARAM_CUSTOM; + } + } + } + } + } + } + break; + case 'd': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_D_ROUNDS; + break; + case 'a': + switch(s[2]) { + default: + break; + case 't': + switch(s[3]) { + default: + break; + case 'a': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 's': + if (strcmp("tructure", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_STRUCTURE; + break; + case 't': + if (strcmp("ype", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_TYPE; + } + break; + case '\0': + return PIDX_OBJECT_PARAM_DATA; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + if (strcmp("ded-from-explicit", s + 4) == 0) + return PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS; + break; + case 'r': + if (strcmp("ypt-only", s + 4) == 0) + return PIDX_CIPHER_PARAM_DECRYPT_ONLY; + } + break; + case 'f': + if (strcmp("ault-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_DEFAULT_DIGEST; + break; + case 's': + if (strcmp("c", s + 3) == 0) + return PIDX_OBJECT_PARAM_DESC; + break; + case 't': + if (strcmp("erministic", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_DETERMINISTIC; + } + break; + case 'h': + if (strcmp("kem-ikm", s + 2) == 0) + return PIDX_PKEY_PARAM_DHKEM_IKM; + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("heck", s + 8) == 0) + return PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK; + break; + case 'n': + if (strcmp("oinit", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_NOINIT; + break; + case 'o': + if (strcmp("neshot", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_ONESHOT; + break; + case 'p': + if (strcmp("rops", s + 8) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS; + break; + case 's': + if (strcmp("ize", s + 8) == 0) + return PIDX_PKEY_PARAM_DIGEST_SIZE; + } + break; + case '\0': + return PIDX_STORE_PARAM_DIGEST; + } + } + } + } + break; + case 's': + if (strcmp("tid", s + 3) == 0) + return PIDX_PKEY_PARAM_DIST_ID; + } + break; + case 'r': + if (strcmp("bg-no-trunc-md", s + 2) == 0) + return PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST; + break; + case 's': + if (strcmp("a-sign-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_DSA_SIGN_DISABLED; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_D; + } + break; + case 'e': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("rly_clean", s + 2) == 0) + return PIDX_KDF_PARAM_EARLY_CLEAN; + break; + case 'c': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'h': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'a': + switch(s[9]) { + default: + break; + case 'c': + switch(s[10]) { + default: + break; + case 't': + switch(s[11]) { + default: + break; + case 'o': + switch(s[12]) { + default: + break; + case 'r': + switch(s[13]) { + default: + break; + case '-': + switch(s[14]) { + default: + break; + case 'c': + if (strcmp("heck", s + 15) == 0) + return PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK; + break; + case 'm': + if (strcmp("ode", s + 15) == 0) + return PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE; + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'm': + if (strcmp("s_check", s + 2) == 0) + return PIDX_KDF_PARAM_FIPS_EMS_CHECK; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("d-pub-key", s + 6) == 0) + return PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY; + break; + case 'i': + if (strcmp("ng", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_ENCODING; + } + } + break; + case 'r': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'c': + if (strcmp("heck", s + 9) == 0) + return PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK; + break; + case 'l': + if (strcmp("evel", s + 9) == 0) + return PIDX_ENCODER_PARAM_ENCRYPT_LEVEL; + } + } + } + } + } + } + break; + case 'g': + if (strcmp("ine", s + 3) == 0) + return PIDX_ALG_PARAM_ENGINE; + break; + case 't': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'y': + switch(s[7]) { + default: + break; + case '_': + if (strcmp("required", s + 8) == 0) + return PIDX_DRBG_PARAM_ENTROPY_REQUIRED; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_ENTROPY; + } + } + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_E; + break; + case 'x': + if (strcmp("pect", s + 2) == 0) + return PIDX_STORE_PARAM_EXPECT; + } + break; + case 'f': + switch(s[1]) { + default: + break; + case 'i': + switch(s[2]) { + default: + break; + case 'e': + if (strcmp("ld-type", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_FIELD_TYPE; + break; + case 'n': + if (strcmp("gerprint", s + 3) == 0) + return PIDX_STORE_PARAM_FINGERPRINT; + break; + case 'p': + if (strcmp("s-indicator", s + 3) == 0) + return PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR; + } + } + break; + case 'g': + switch(s[1]) { + default: + break; + case 'e': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_GENERATE; + } + break; + case 'o': + if (strcmp("r", s + 8) == 0) + return PIDX_PKEY_PARAM_EC_GENERATOR; + } + } + } + } + } + } + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_GINDEX; + break; + case 'r': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'u': + switch(s[4]) { + default: + break; + case 'p': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("check", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE; + break; + case '\0': + return PIDX_PKEY_PARAM_GROUP_NAME; + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_G; + } + break; + case 'h': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("s-randkey", s + 2) == 0) + return PIDX_CIPHER_PARAM_HAS_RAND_KEY; + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_H; + break; + case 'k': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'f': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_KEY_CHECK; + } + } + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_HMAC_KEY_CHECK; + break; + case 's': + if (strcmp("_padding", s + 2) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING; + } + break; + case 'i': + switch(s[1]) { + default: + break; + case 'd': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_PKCS12_ID; + } + break; + case 'k': + if (strcmp("me", s + 2) == 0) + return PIDX_KEM_PARAM_IKME; + break; + case 'm': + if (strcmp("plicit-rejection", s + 2) == 0) + return PIDX_PKEY_PARAM_IMPLICIT_REJECTION; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("lude-public", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC; + break; + case 'f': + if (strcmp("o", s + 3) == 0) + return PIDX_PASSPHRASE_PARAM_INFO; + break; + case 'p': + if (strcmp("ut-type", s + 3) == 0) + return PIDX_STORE_PARAM_INPUT_TYPE; + break; + case 's': + if (strcmp("tance", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_INSTANCE; + } + break; + case 't': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("tion", s + 5) == 0) + return PIDX_GEN_PARAM_ITERATION; + break; + case '\0': + return PIDX_KDF_PARAM_ITER; + } + } + } + break; + case 'v': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("generated", s + 3) == 0) + return PIDX_CIPHER_PARAM_AEAD_IV_GENERATED; + break; + case 'l': + if (strcmp("en", s + 3) == 0) + return PIDX_CIPHER_PARAM_IVLEN; + break; + case '\0': + return PIDX_MAC_PARAM_IV; + } + } + break; + case 'j': + switch(s[1]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_COFACTOR; + } + break; + case 'k': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K2; + } + break; + case '3': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K3; + } + break; + case 'a': + if (strcmp("t", s + 2) == 0) + return PIDX_SIGNATURE_PARAM_KAT; + break; + case 'b': + if (strcmp("kdf-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KBKDF_KEY_CHECK; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case 's': + switch(s[9]) { + default: + break; + case 't': + switch(s[10]) { + default: + break; + case '-': + if (strcmp("props", s + 11) == 0) + return PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_KDF_DIGEST; + } + } + } + } + } + } + break; + case 'o': + if (strcmp("utlen", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_OUTLEN; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_TYPE; + break; + case 'u': + if (strcmp("km", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_UKM; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'y': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("heck", s + 5) == 0) + return PIDX_PKEY_PARAM_FIPS_KEY_CHECK; + break; + case 'l': + if (strcmp("ength", s + 5) == 0) + return PIDX_SKEY_PARAM_KEY_LENGTH; + } + break; + case 'b': + if (strcmp("its", s + 4) == 0) + return PIDX_CIPHER_PARAM_RC2_KEYBITS; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_KEYLEN; + break; + case '\0': + return PIDX_MAC_PARAM_KEY; + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KMAC_KEY_CHECK; + } + break; + case 'l': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("el", s + 3) == 0) + return PIDX_KDF_PARAM_LABEL; + break; + case 'n': + if (strcmp("es", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_LANES; + } + } + break; + case 'm': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'k': + if (strcmp("ey", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_MAC_KEY; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_KDF_PARAM_MAC_SIZE; + break; + case '\0': + return PIDX_ALG_PARAM_MAC; + } + break; + case 'n': + if (strcmp("datory-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_MANDATORY_DIGEST; + break; + case 'x': + switch(s[3]) { + default: + break; + case '-': + if (strcmp("size", s + 4) == 0) + return PIDX_PKEY_PARAM_MAX_SIZE; + break; + case '_': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("dinlen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_ADINLEN; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("rly_data", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA; + break; + case 'n': + if (strcmp("tropylen", s + 6) == 0) + return PIDX_DRBG_PARAM_MAX_ENTROPYLEN; + } + break; + case 'f': + if (strcmp("rag_len", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_NONCELEN; + break; + case 'p': + if (strcmp("erslen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_PERSLEN; + break; + case 'r': + if (strcmp("equest", s + 5) == 0) + return PIDX_RAND_PARAM_MAX_REQUEST; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MAX_LENGTH; + break; + case 'm': + if (strcmp("em_bytes", s + 4) == 0) + return PIDX_KDF_PARAM_SCRYPT_MAXMEM; + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'm': + if (strcmp("cost", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_MEMCOST; + break; + case 's': + if (strcmp("sage-encoding", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING; + } + break; + case 'g': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_DIGEST; + break; + case 'p': + if (strcmp("roperties", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_PROPERTIES; + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_MASKGENFUNC; + } + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("alg", s + 3) == 0) + return PIDX_DIGEST_PARAM_MICALG; + break; + case 'n': + switch(s[3]) { + default: + break; + case '_': + switch(s[4]) { + default: + break; + case 'e': + if (strcmp("ntropylen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_ENTROPYLEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_NONCELEN; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MIN_LENGTH; + } + } + break; + case 'l': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + if (strcmp("nput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS; + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED; + } + } + } + } + break; + case 'k': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + switch(s[8]) { + default: + break; + case 'm': + if (strcmp("port_pct_type", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE; + break; + case 'n': + if (strcmp("put_formats", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS; + } + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED; + } + } + } + } + } + } + break; + case 'o': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case '\0': + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE; + } + break; + case 'u': + if (strcmp("le-filename", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_MODULE_FILENAME; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_SIGNATURE_PARAM_MU; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_M; + } + break; + case 'n': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("me", s + 2) == 0) + return PIDX_STORE_PARAM_ISSUER; + break; + case 'o': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("short-mac", s + 3) == 0) + return PIDX_PROV_PARAM_NO_SHORT_MAC; + break; + case 'n': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("type", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_NONCE_TYPE; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_NONCE; + } + } + } + } + break; + case 'u': + if (strcmp("m", s + 2) == 0) + return PIDX_CIPHER_PARAM_NUM; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_N; + } + break; + case 'o': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("ep-label", s + 2) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL; + break; + case 'p': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'n': + if (strcmp("ssl-version", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_VERSION; + break; + case 'r': + if (strcmp("ation", s + 4) == 0) + return PIDX_KEM_PARAM_OPERATION; + } + break; + case 't': + if (strcmp("ions", s + 3) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS; + } + break; + case 'r': + if (strcmp("der", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_ORDER; + } + break; + case 'p': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P2; + } + break; + case 'a': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'm': + if (strcmp("ode", s + 5) == 0) + return PIDX_PKEY_PARAM_PAD_MODE; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_DIGEST_PARAM_PAD_TYPE; + } + break; + case 'd': + if (strcmp("ing", s + 4) == 0) + return PIDX_CIPHER_PARAM_PADDING; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_PAD; + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'u': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYUINFO; + break; + case 'v': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYVINFO; + } + } + } + break; + case 's': + if (strcmp("s", s + 3) == 0) + return PIDX_KDF_PARAM_PASSWORD; + } + break; + case 'b': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("ts", s + 3) == 0) + return PIDX_PKEY_PARAM_FFC_PBITS; + break; + case 'k': + if (strcmp("df2-lower-bound-check", s + 3) == 0) + return PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK; + } + break; + case 'c': + if (strcmp("ounter", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_PCOUNTER; + break; + case 'i': + if (strcmp("peline-tag", s + 2) == 0) + return PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG; + break; + case 'k': + if (strcmp("cs5", s + 2) == 0) + return PIDX_KDF_PARAM_PKCS5; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("nt-format", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT; + break; + case 't': + if (strcmp("ential", s + 3) == 0) + return PIDX_GEN_PARAM_POTENTIAL; + } + break; + case 'r': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("iction_resistance", s + 4) == 0) + return PIDX_DRBG_PARAM_PREDICTION_RESISTANCE; + break; + case 'f': + if (strcmp("ix", s + 4) == 0) + return PIDX_KDF_PARAM_PREFIX; + } + break; + case 'i': + switch(s[3]) { + default: + break; + case 'm': + if (strcmp("es", s + 4) == 0) + return PIDX_PKEY_PARAM_RSA_PRIMES; + break; + case 'v': + switch(s[4]) { + default: + break; + case '_': + if (strcmp("len", s + 5) == 0) + return PIDX_PKEY_PARAM_DH_PRIV_LEN; + break; + case '\0': + return PIDX_PKEY_PARAM_PRIV_KEY; + } + } + break; + case 'o': + switch(s[3]) { + default: + break; + case 'p': + if (strcmp("erties", s + 4) == 0) + return PIDX_STORE_PARAM_PROPERTIES; + break; + case 'v': + if (strcmp("ider-name", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_PROV_NAME; + } + } + break; + case 'u': + if (strcmp("b", s + 2) == 0) + return PIDX_PKEY_PARAM_PUB_KEY; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_P; + } + break; + case 'q': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q2; + } + break; + case 'b': + if (strcmp("its", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_QBITS; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_Q; + break; + case 'x': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_X; + } + break; + case 'y': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_Y; + } + } + break; + case 'r': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'k': + if (strcmp("ey", s + 5) == 0) + return PIDX_CIPHER_PARAM_RANDOM_KEY; + break; + case 'o': + if (strcmp("m_data", s + 5) == 0) + return PIDX_DRBG_PARAM_RANDOM_DATA; + } + } + break; + case 'w': + if (strcmp("-bytes", s + 3) == 0) + return PIDX_SKEY_PARAM_RAW_BYTES; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case '_': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("head", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD; + break; + case 'b': + if (strcmp("uffer_len", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN; + } + } + } + break; + case 'f': + if (strcmp("erence", s + 3) == 0) + return PIDX_OBJECT_PARAM_REFERENCE; + break; + case 's': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case '_': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("ounter", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_COUNTER; + break; + case 'r': + if (strcmp("equests", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_REQUESTS; + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case 'm': + switch(s[10]) { + default: + break; + case 'e': + switch(s[11]) { + default: + break; + case '_': + if (strcmp("interval", s + 12) == 0) + return PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL; + break; + case '\0': + return PIDX_DRBG_PARAM_RESEED_TIME; + } + } + } + } + } + } + } + } + } + } + break; + case 'o': + if (strcmp("unds", s + 2) == 0) + return PIDX_CIPHER_PARAM_ROUNDS; + break; + case 's': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + switch(s[5]) { + default: + break; + case 'o': + switch(s[6]) { + default: + break; + case 'e': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case 'i': + switch(s[10]) { + default: + break; + case 'c': + switch(s[11]) { + default: + break; + case 'i': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'n': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case '1': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT1; + } + break; + case '2': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT2; + } + break; + case '3': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT3; + } + break; + case '4': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT4; + } + break; + case '5': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT5; + } + break; + case '6': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT6; + } + break; + case '7': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT7; + } + break; + case '8': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT8; + } + break; + case '9': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'd': + if (strcmp("erive-from-pq", s + 5) == 0) + return PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'x': + switch(s[6]) { + default: + break; + case 'p': + switch(s[7]) { + default: + break; + case 'o': + switch(s[8]) { + default: + break; + case 'n': + switch(s[9]) { + default: + break; + case 'e': + switch(s[10]) { + default: + break; + case 'n': + switch(s[11]) { + default: + break; + case 't': + switch(s[12]) { + default: + break; + case '1': + switch(s[13]) { + default: + break; + case '0': + switch(s[14]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT1; + } + break; + case '2': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT2; + } + break; + case '3': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT3; + } + break; + case '4': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT4; + } + break; + case '5': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT5; + } + break; + case '6': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT6; + } + break; + case '7': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT7; + } + break; + case '8': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT8; + } + break; + case '9': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT; + } + } + } + } + } + } + } + } + break; + case 'f': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'o': + switch(s[9]) { + default: + break; + case 'r': + switch(s[10]) { + default: + break; + case '1': + switch(s[11]) { + default: + break; + case '0': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR1; + } + break; + case '2': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR2; + } + break; + case '3': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR3; + } + break; + case '4': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR4; + } + break; + case '5': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR5; + } + break; + case '6': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR6; + } + break; + case '7': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR7; + } + break; + case '8': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR8; + } + break; + case '9': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR; + } + } + } + } + } + } + break; + case 'p': + switch(s[5]) { + default: + break; + case 'k': + if (strcmp("cs15-pad-disabled", s + 6) == 0) + return PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED; + break; + case 's': + if (strcmp("s-saltlen-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK; + } + break; + case 's': + if (strcmp("ign-x931-pad-disabled", s + 5) == 0) + return PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED; + } + } + } + break; + case '\0': + return PIDX_KDF_PARAM_SCRYPT_R; + } + break; + case 's': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("eprime-generator", s + 3) == 0) + return PIDX_PKEY_PARAM_DH_GENERATOR; + break; + case 'l': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'l': + if (strcmp("en", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_PSS_SALTLEN; + break; + case '\0': + return PIDX_MAC_PARAM_SALT; + } + } + break; + case 'v': + if (strcmp("e-parameters", s + 3) == 0) + return PIDX_ENCODER_PARAM_SAVE_PARAMETERS; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'r': + if (strcmp("et", s + 4) == 0) + return PIDX_KDF_PARAM_SECRET; + break; + case 'u': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'y': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'b': + if (strcmp("its", s + 10) == 0) + return PIDX_PKEY_PARAM_SECURITY_BITS; + break; + case 'c': + if (strcmp("hecks", s + 10) == 0) + return PIDX_PROV_PARAM_SECURITY_CHECKS; + } + } + } + } + } + } + } + break; + case 'e': + if (strcmp("d", s + 3) == 0) + return PIDX_PKEY_PARAM_SLH_DSA_SEED; + break; + case 'r': + if (strcmp("ial", s + 3) == 0) + return PIDX_STORE_PARAM_SERIAL; + break; + case 's': + if (strcmp("sion_id", s + 3) == 0) + return PIDX_KDF_PARAM_SSHKDF_SESSION_ID; + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'n': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + if (strcmp("heck", s + 6) == 0) + return PIDX_PKEY_PARAM_FIPS_SIGN_CHECK; + break; + case 'x': + if (strcmp("931-pad-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK; + } + break; + case 'a': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case 'u': + switch(s[7]) { + default: + break; + case 'r': + switch(s[8]) { + default: + break; + case 'e': + switch(s[9]) { + default: + break; + case '-': + if (strcmp("digest-check", s + 10) == 0) + return PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK; + break; + case '\0': + return PIDX_SIGNATURE_PARAM_SIGNATURE; + } + } + } + } + } + } + } + break; + case 'z': + if (strcmp("e", s + 3) == 0) + return PIDX_MAC_PARAM_SIZE; + } + break; + case 'p': + if (strcmp("eed", s + 2) == 0) + return PIDX_CIPHER_PARAM_SPEED; + break; + case 's': + switch(s[2]) { + default: + break; + case 'h': + switch(s[3]) { + default: + break; + case 'k': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'f': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_KEY_CHECK; + } + } + } + } + } + break; + case 'k': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'f': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_KEY_CHECK; + } + } + } + } + break; + case 'l': + if (strcmp("3-ms", s + 3) == 0) + return PIDX_DIGEST_PARAM_SSL3_MS; + } + break; + case 't': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("esc", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_DESC; + break; + case 'p': + if (strcmp("hase", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_PHASE; + break; + case 't': + if (strcmp("ype", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_TYPE; + } + break; + case 'a': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_STATE; + } + break; + case 'u': + if (strcmp("s", s + 5) == 0) + return PIDX_PROV_PARAM_STATUS; + } + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("m_mac", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC; + break; + case 'n': + if (strcmp("gth", s + 5) == 0) + return PIDX_RAND_PARAM_STRENGTH; + } + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("ject", s + 3) == 0) + return PIDX_STORE_PARAM_SUBJECT; + break; + case 'p': + switch(s[3]) { + default: + break; + case 'p': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + if (strcmp("ivinfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PRIVINFO; + break; + case 'u': + if (strcmp("binfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PUBINFO; + } + } + } + } + } + } + break; + case 't': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_TAGLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TAG; + } + } + break; + case 'd': + if (strcmp("es-encrypt-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED; + break; + case 'e': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case '-': + if (strcmp("entropy", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_TEST_ENTROPY; + break; + case '_': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("ntropy", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_ENTROPY; + break; + case 'n': + if (strcmp("once", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_NONCE; + } + } + } + } + break; + case 'h': + if (strcmp("reads", s + 2) == 0) + return PIDX_KDF_PARAM_THREADS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("lient-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION; + break; + case 'd': + if (strcmp("ata-size", s + 5) == 0) + return PIDX_MAC_PARAM_TLS_DATA_SIZE; + break; + case 'g': + switch(s[5]) { + default: + break; + case 'r': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'u': + switch(s[8]) { + default: + break; + case 'p': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'a': + if (strcmp("lg", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_ALG; + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_ID; + } + break; + case 's': + if (strcmp("-kem", s + 12) == 0) + return PIDX_CAPABILITY_TLS_GROUP_IS_KEM; + } + break; + case 'n': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'm': + switch(s[13]) { + default: + break; + case 'e': + switch(s[14]) { + default: + break; + case '-': + if (strcmp("internal", s + 15) == 0) + return PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL; + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_NAME; + } + } + } + } + break; + case 's': + if (strcmp("ec-bits", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case '-': + if (strcmp("size", s + 8) == 0) + return PIDX_CIPHER_PARAM_TLS_MAC_SIZE; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS_MAC; + } + break; + case 'x': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS; + } + } + } + break; + case 'i': + switch(s[6]) { + default: + break; + case 'n': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS; + } + } + } + break; + case 'u': + if (strcmp("lti", s + 6) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK; + } + break; + case 'n': + if (strcmp("egotiated-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION; + break; + case 's': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'a': + switch(s[8]) { + default: + break; + case 'l': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '-': + switch(s[11]) { + default: + break; + case 'c': + if (strcmp("ode-point", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT; + break; + case 'h': + switch(s[12]) { + default: + break; + case 'a': + switch(s[13]) { + default: + break; + case 's': + switch(s[14]) { + default: + break; + case 'h': + switch(s[15]) { + default: + break; + case '-': + switch(s[16]) { + default: + break; + case 'n': + if (strcmp("ame", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME; + break; + case 'o': + if (strcmp("id", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_OID; + } + } + } + } + } + break; + case 'i': + if (strcmp("ana-name", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME; + break; + case 'k': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'y': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case 'y': + switch(s[16]) { + default: + break; + case 'p': + switch(s[17]) { + default: + break; + case 'e': + switch(s[18]) { + default: + break; + case '-': + if (strcmp("oid", s + 19) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID; + break; + case '\0': + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE; + } + } + } + } + } + } + } + break; + case 'n': + if (strcmp("ame", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_NAME; + break; + case 'o': + if (strcmp("id", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_OID; + break; + case 's': + switch(s[12]) { + default: + break; + case 'e': + if (strcmp("c-bits", s + 13) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS; + break; + case 'i': + switch(s[13]) { + default: + break; + case 'g': + switch(s[14]) { + default: + break; + case '-': + switch(s[15]) { + default: + break; + case 'n': + if (strcmp("ame", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME; + break; + case 'o': + if (strcmp("id", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_OID; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'v': + if (strcmp("ersion", s + 5) == 0) + return PIDX_CIPHER_PARAM_TLS_VERSION; + } + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK; + break; + case 'e': + if (strcmp("ms-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK; + } + } + } + } + } + break; + case '3': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'k': + switch(s[7]) { + default: + break; + case 'd': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'u': + switch(s[6]) { + default: + break; + case 'l': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case '_': + switch(s[10]) { + default: + break; + case 'a': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'd': + switch(s[13]) { + default: + break; + case 'p': + if (strcmp("acklen", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD; + } + } + } + break; + case 'e': + switch(s[11]) { + default: + break; + case 'n': + switch(s[12]) { + default: + break; + case 'c': + switch(s[13]) { + default: + break; + case 'i': + if (strcmp("n", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN; + break; + case 'l': + if (strcmp("en", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC; + } + } + } + break; + case 'i': + if (strcmp("nterleave", s + 11) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE; + break; + case 'm': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'x': + switch(s[13]) { + default: + break; + case 'b': + if (strcmp("ufsz", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE; + break; + case 's': + if (strcmp("ndfrag", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT; + } + } + } + } + } + } + } + } + } + } + break; + case 'a': + switch(s[4]) { + default: + break; + case 'a': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'p': + if (strcmp("ad", s + 7) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD; + } + } + } + break; + case 'i': + switch(s[4]) { + default: + break; + case 'v': + switch(s[5]) { + default: + break; + case 'f': + if (strcmp("ixed", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED; + break; + case 'g': + if (strcmp("en", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN; + break; + case 'i': + if (strcmp("nv", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV; + } + } + break; + case 't': + if (strcmp("ree", s + 4) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS; + } + break; + case 'y': + if (strcmp("pe", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_TYPE; + } + break; + case 'u': + switch(s[1]) { + default: + break; + case 'k': + if (strcmp("m", s + 2) == 0) + return PIDX_KDF_PARAM_UKM; + break; + case 'p': + if (strcmp("dated-iv", s + 2) == 0) + return PIDX_CIPHER_PARAM_UPDATED_IV; + break; + case 's': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'b': + if (strcmp("its", s + 5) == 0) + return PIDX_CIPHER_PARAM_USE_BITS; + break; + case 'c': + if (strcmp("ofactor-flag", s + 5) == 0) + return PIDX_PKEY_PARAM_USE_COFACTOR_FLAG; + break; + case 'k': + if (strcmp("eybits", s + 5) == 0) + return PIDX_KDF_PARAM_X942_USE_KEYBITS; + break; + case 'l': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_KBKDF_USE_L; + } + break; + case 's': + if (strcmp("eparator", s + 5) == 0) + return PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR; + } + break; + case '_': + switch(s[4]) { + default: + break; + case 'd': + if (strcmp("erivation_function", s + 5) == 0) + return PIDX_DRBG_PARAM_USE_DF; + break; + case 'e': + if (strcmp("tm", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM; + } + } + } + } + break; + case 'v': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'l': + switch(s[3]) { + default: + break; + case 'i': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_VALIDATE_G; + } + break; + case 'l': + if (strcmp("egacy", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY; + break; + case 'p': + if (strcmp("q", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_PQ; + } + } + } + } + } + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'r': + switch(s[3]) { + default: + break; + case 'i': + if (strcmp("fy-message", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE; + break; + case 's': + if (strcmp("ion", s + 4) == 0) + return PIDX_PROV_PARAM_VERSION; + } + } + } + break; + case 'x': + switch(s[1]) { + default: + break; + case '9': + switch(s[2]) { + default: + break; + case '4': + if (strcmp("2kdf-key-check", s + 3) == 0) + return PIDX_PROV_PARAM_X942KDF_KEY_CHECK; + break; + case '6': + switch(s[3]) { + default: + break; + case '3': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'f': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_KEY_CHECK; + } + } + } + } + } + } + } + break; + case 'c': + if (strcmp("ghash", s + 2) == 0) + return PIDX_KDF_PARAM_SSHKDF_XCGHASH; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_DIGEST_PARAM_XOFLEN; + break; + case '\0': + return PIDX_MAC_PARAM_XOF; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP; + } + break; + case 'q': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ; + } + break; + case 't': + if (strcmp("s_standard", s + 2) == 0) + return PIDX_CIPHER_PARAM_XTS_STANDARD; + } + } + return -1; +} + +/* End of TRIE */ diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/poly1305/poly1305-x86.S b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/poly1305/poly1305-x86.S index 96cf0c9fe941f6..a14ec5068dfebe 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/poly1305/poly1305-x86.S +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/poly1305/poly1305-x86.S @@ -1935,4 +1935,4 @@ Lconst_sse2: L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P .long 0 -.comm _OPENSSL_ia32cap_P,16,2 +.comm _OPENSSL_ia32cap_P,40,2 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/rc4/rc4-586.S b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/rc4/rc4-586.S index 38098085523f56..b4d7da8aabb1c9 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/rc4/rc4-586.S +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/rc4/rc4-586.S @@ -390,4 +390,4 @@ L019opts: L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P .long 0 -.comm _OPENSSL_ia32cap_P,16,2 +.comm _OPENSSL_ia32cap_P,40,2 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/sha/sha1-586.S b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/sha/sha1-586.S index feb96c11a57097..04a3637d51ab5d 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/sha/sha1-586.S +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/sha/sha1-586.S @@ -3982,4 +3982,4 @@ LK_XX_XX: L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P .long 0 -.comm _OPENSSL_ia32cap_P,16,2 +.comm _OPENSSL_ia32cap_P,40,2 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/sha/sha256-586.S b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/sha/sha256-586.S index e1dfe28d26e5bb..f79a6b6ce4c94b 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/sha/sha256-586.S +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/sha/sha256-586.S @@ -6786,4 +6786,4 @@ L018avx_bmi_00_47: L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P .long 0 -.comm _OPENSSL_ia32cap_P,16,2 +.comm _OPENSSL_ia32cap_P,40,2 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/sha/sha512-586.S b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/sha/sha512-586.S index f9eb6e28565e9e..6df53118ecafc8 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/sha/sha512-586.S +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/sha/sha512-586.S @@ -2832,4 +2832,4 @@ L001K512: L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P .long 0 -.comm _OPENSSL_ia32cap_P,16,2 +.comm _OPENSSL_ia32cap_P,40,2 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/x86cpuid.S b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/x86cpuid.S index 8e0719f379c608..d92f53d82dd920 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/x86cpuid.S +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/x86cpuid.S @@ -121,6 +121,24 @@ L002generic: xorl %ecx,%ecx .byte 0x0f,0xa2 movl %ebx,8(%edi) + movl %ecx,12(%edi) + movl %edx,16(%edi) + cmpl $1,%eax + jb L005no_extended_info + movl $7,%eax + movl $1,%ecx + .byte 0x0f,0xa2 + movl %eax,20(%edi) + movl %edx,24(%edi) + movl %ebx,28(%edi) + movl %ecx,32(%edi) + andl $524288,%edx + cmpl $0,%edx + je L005no_extended_info + movl $36,%eax + movl $0,%ecx + .byte 0x0f,0xa2 + movl %ebx,36(%edi) L005no_extended_info: btl $27,%ebp jnc L006clear_avx @@ -136,6 +154,7 @@ L008clear_xmm: andl $4278190079,%esi L006clear_avx: andl $4026525695,%ebp + andl $4286578687,20(%edi) andl $4294967263,8(%edi) L007done: movl %esi,%eax @@ -570,7 +589,7 @@ L036done: L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P .long 0 -.comm _OPENSSL_ia32cap_P,16,2 +.comm _OPENSSL_ia32cap_P,40,2 .mod_init_func .align 2 .long _OPENSSL_cpuid_setup diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/internal/param_names.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/internal/param_names.h new file mode 100644 index 00000000000000..0a0404a57e82b9 --- /dev/null +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/internal/param_names.h @@ -0,0 +1,469 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/internal/param_names.h.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +int ossl_param_find_pidx(const char *s); + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +#define NUM_PIDX 346 + +#define PIDX_ALG_PARAM_ALGORITHM_ID 0 +#define PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS 1 +#define PIDX_ALG_PARAM_CIPHER 2 +#define PIDX_ALG_PARAM_DIGEST 3 +#define PIDX_ALG_PARAM_ENGINE 4 +#define PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR 5 +#define PIDX_ALG_PARAM_MAC 6 +#define PIDX_ALG_PARAM_PROPERTIES 7 +#define PIDX_ASYM_CIPHER_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_ENGINE PIDX_PKEY_PARAM_ENGINE +#define PIDX_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +#define PIDX_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS 9 +#define PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL 10 +#define PIDX_ASYM_CIPHER_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_ASYM_CIPHER_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION 11 +#define PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION 12 +#define PIDX_CAPABILITY_TLS_GROUP_ALG 13 +#define PIDX_CAPABILITY_TLS_GROUP_ID 14 +#define PIDX_CAPABILITY_TLS_GROUP_IS_KEM 15 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_GROUP_NAME 20 +#define PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL 21 +#define PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS 22 +#define PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT 23 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME 24 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_OID 25 +#define PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME 26 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE 27 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID 28 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_SIGALG_NAME 29 +#define PIDX_CAPABILITY_TLS_SIGALG_OID 30 +#define PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS 31 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME 32 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_OID 33 +#define PIDX_CIPHER_PARAM_AEAD 34 +#define PIDX_CIPHER_PARAM_AEAD_IVLEN PIDX_CIPHER_PARAM_IVLEN +#define PIDX_CIPHER_PARAM_AEAD_IV_GENERATED 35 +#define PIDX_CIPHER_PARAM_AEAD_MAC_KEY 36 +#define PIDX_CIPHER_PARAM_AEAD_TAG 37 +#define PIDX_CIPHER_PARAM_AEAD_TAGLEN 38 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD 39 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD 40 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN 41 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED 42 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV 43 +#define PIDX_CIPHER_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD 44 +#define PIDX_CIPHER_PARAM_BLOCK_SIZE 45 +#define PIDX_CIPHER_PARAM_CTS 46 +#define PIDX_CIPHER_PARAM_CTS_MODE 47 +#define PIDX_CIPHER_PARAM_CUSTOM_IV 48 +#define PIDX_CIPHER_PARAM_DECRYPT_ONLY 49 +#define PIDX_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK 50 +#define PIDX_CIPHER_PARAM_HAS_RAND_KEY 51 +#define PIDX_CIPHER_PARAM_IV 52 +#define PIDX_CIPHER_PARAM_IVLEN 53 +#define PIDX_CIPHER_PARAM_KEYLEN 54 +#define PIDX_CIPHER_PARAM_MODE 55 +#define PIDX_CIPHER_PARAM_NUM 56 +#define PIDX_CIPHER_PARAM_PADDING 57 +#define PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG 58 +#define PIDX_CIPHER_PARAM_RANDOM_KEY 59 +#define PIDX_CIPHER_PARAM_RC2_KEYBITS 60 +#define PIDX_CIPHER_PARAM_ROUNDS 61 +#define PIDX_CIPHER_PARAM_SPEED 62 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK 63 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD 64 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN 65 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC 66 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN 67 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN 68 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE 69 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE 70 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT 71 +#define PIDX_CIPHER_PARAM_TLS_MAC 72 +#define PIDX_CIPHER_PARAM_TLS_MAC_SIZE 73 +#define PIDX_CIPHER_PARAM_TLS_VERSION 74 +#define PIDX_CIPHER_PARAM_UPDATED_IV 75 +#define PIDX_CIPHER_PARAM_USE_BITS 76 +#define PIDX_CIPHER_PARAM_XTS_STANDARD 77 +#define PIDX_DECODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DIGEST_PARAM_ALGID_ABSENT 78 +#define PIDX_DIGEST_PARAM_BLOCK_SIZE 45 +#define PIDX_DIGEST_PARAM_MICALG 79 +#define PIDX_DIGEST_PARAM_PAD_TYPE 80 +#define PIDX_DIGEST_PARAM_SIZE 81 +#define PIDX_DIGEST_PARAM_SSL3_MS 82 +#define PIDX_DIGEST_PARAM_XOF 83 +#define PIDX_DIGEST_PARAM_XOFLEN 84 +#define PIDX_DRBG_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_DRBG_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_DRBG_PARAM_ENTROPY_REQUIRED 85 +#define PIDX_DRBG_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_DRBG_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_DRBG_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_DRBG_PARAM_MAX_ADINLEN 86 +#define PIDX_DRBG_PARAM_MAX_ENTROPYLEN 87 +#define PIDX_DRBG_PARAM_MAX_LENGTH 88 +#define PIDX_DRBG_PARAM_MAX_NONCELEN 89 +#define PIDX_DRBG_PARAM_MAX_PERSLEN 90 +#define PIDX_DRBG_PARAM_MIN_ENTROPYLEN 91 +#define PIDX_DRBG_PARAM_MIN_LENGTH 92 +#define PIDX_DRBG_PARAM_MIN_NONCELEN 93 +#define PIDX_DRBG_PARAM_PREDICTION_RESISTANCE 94 +#define PIDX_DRBG_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DRBG_PARAM_RANDOM_DATA 95 +#define PIDX_DRBG_PARAM_RESEED_COUNTER 96 +#define PIDX_DRBG_PARAM_RESEED_REQUESTS 97 +#define PIDX_DRBG_PARAM_RESEED_TIME 98 +#define PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL 99 +#define PIDX_DRBG_PARAM_SIZE 81 +#define PIDX_DRBG_PARAM_USE_DF 100 +#define PIDX_ENCODER_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_ENCODER_PARAM_ENCRYPT_LEVEL 101 +#define PIDX_ENCODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_ENCODER_PARAM_SAVE_PARAMETERS 102 +#define PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE 103 +#define PIDX_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_EXCHANGE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST 104 +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS 105 +#define PIDX_EXCHANGE_PARAM_KDF_OUTLEN 106 +#define PIDX_EXCHANGE_PARAM_KDF_TYPE 107 +#define PIDX_EXCHANGE_PARAM_KDF_UKM 108 +#define PIDX_EXCHANGE_PARAM_PAD 109 +#define PIDX_GEN_PARAM_ITERATION 110 +#define PIDX_GEN_PARAM_POTENTIAL 111 +#define PIDX_KDF_PARAM_ARGON2_AD 112 +#define PIDX_KDF_PARAM_ARGON2_LANES 113 +#define PIDX_KDF_PARAM_ARGON2_MEMCOST 114 +#define PIDX_KDF_PARAM_ARGON2_VERSION 115 +#define PIDX_KDF_PARAM_CEK_ALG 116 +#define PIDX_KDF_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_KDF_PARAM_CONSTANT 117 +#define PIDX_KDF_PARAM_DATA 118 +#define PIDX_KDF_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_KDF_PARAM_EARLY_CLEAN 119 +#define PIDX_KDF_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KDF_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_KDF_PARAM_FIPS_EMS_CHECK 120 +#define PIDX_KDF_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KDF_PARAM_HMACDRBG_ENTROPY 121 +#define PIDX_KDF_PARAM_HMACDRBG_NONCE 122 +#define PIDX_KDF_PARAM_INFO 123 +#define PIDX_KDF_PARAM_ITER 124 +#define PIDX_KDF_PARAM_KBKDF_R 125 +#define PIDX_KDF_PARAM_KBKDF_USE_L 126 +#define PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR 127 +#define PIDX_KDF_PARAM_KEY 128 +#define PIDX_KDF_PARAM_LABEL 129 +#define PIDX_KDF_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_KDF_PARAM_MAC_SIZE 130 +#define PIDX_KDF_PARAM_MODE 55 +#define PIDX_KDF_PARAM_PASSWORD 131 +#define PIDX_KDF_PARAM_PKCS12_ID 132 +#define PIDX_KDF_PARAM_PKCS5 133 +#define PIDX_KDF_PARAM_PREFIX 134 +#define PIDX_KDF_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_KDF_PARAM_SALT 135 +#define PIDX_KDF_PARAM_SCRYPT_MAXMEM 136 +#define PIDX_KDF_PARAM_SCRYPT_N 137 +#define PIDX_KDF_PARAM_SCRYPT_P 138 +#define PIDX_KDF_PARAM_SCRYPT_R 125 +#define PIDX_KDF_PARAM_SECRET 139 +#define PIDX_KDF_PARAM_SEED 140 +#define PIDX_KDF_PARAM_SIZE 81 +#define PIDX_KDF_PARAM_SSHKDF_SESSION_ID 141 +#define PIDX_KDF_PARAM_SSHKDF_TYPE 142 +#define PIDX_KDF_PARAM_SSHKDF_XCGHASH 143 +#define PIDX_KDF_PARAM_THREADS 144 +#define PIDX_KDF_PARAM_UKM 145 +#define PIDX_KDF_PARAM_X942_ACVPINFO 146 +#define PIDX_KDF_PARAM_X942_PARTYUINFO 147 +#define PIDX_KDF_PARAM_X942_PARTYVINFO 148 +#define PIDX_KDF_PARAM_X942_SUPP_PRIVINFO 149 +#define PIDX_KDF_PARAM_X942_SUPP_PUBINFO 150 +#define PIDX_KDF_PARAM_X942_USE_KEYBITS 151 +#define PIDX_KEM_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KEM_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KEM_PARAM_IKME 152 +#define PIDX_KEM_PARAM_OPERATION 153 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING 154 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING 155 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA 156 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN 157 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE 55 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS 158 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD 159 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC 160 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE 161 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM 162 +#define PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN 163 +#define PIDX_MAC_PARAM_BLOCK_SIZE 164 +#define PIDX_MAC_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_MAC_PARAM_CUSTOM 165 +#define PIDX_MAC_PARAM_C_ROUNDS 166 +#define PIDX_MAC_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_MAC_PARAM_DIGEST_NOINIT 167 +#define PIDX_MAC_PARAM_DIGEST_ONESHOT 168 +#define PIDX_MAC_PARAM_D_ROUNDS 169 +#define PIDX_MAC_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_MAC_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_MAC_PARAM_FIPS_NO_SHORT_MAC PIDX_PROV_PARAM_NO_SHORT_MAC +#define PIDX_MAC_PARAM_IV 52 +#define PIDX_MAC_PARAM_KEY 128 +#define PIDX_MAC_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_MAC_PARAM_SALT 135 +#define PIDX_MAC_PARAM_SIZE 81 +#define PIDX_MAC_PARAM_TLS_DATA_SIZE 170 +#define PIDX_MAC_PARAM_XOF 83 +#define PIDX_OBJECT_PARAM_DATA 118 +#define PIDX_OBJECT_PARAM_DATA_STRUCTURE 171 +#define PIDX_OBJECT_PARAM_DATA_TYPE 172 +#define PIDX_OBJECT_PARAM_DESC 173 +#define PIDX_OBJECT_PARAM_INPUT_TYPE 174 +#define PIDX_OBJECT_PARAM_REFERENCE 175 +#define PIDX_OBJECT_PARAM_TYPE 142 +#define PIDX_PASSPHRASE_PARAM_INFO 123 +#define PIDX_PKEY_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_PKEY_PARAM_BITS 176 +#define PIDX_PKEY_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_PKEY_PARAM_DEFAULT_DIGEST 177 +#define PIDX_PKEY_PARAM_DHKEM_IKM 178 +#define PIDX_PKEY_PARAM_DH_GENERATOR 179 +#define PIDX_PKEY_PARAM_DH_PRIV_LEN 180 +#define PIDX_PKEY_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_PKEY_PARAM_DIGEST_SIZE 181 +#define PIDX_PKEY_PARAM_DIST_ID 182 +#define PIDX_PKEY_PARAM_EC_A 183 +#define PIDX_PKEY_PARAM_EC_B 184 +#define PIDX_PKEY_PARAM_EC_CHAR2_M 185 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K1 186 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K2 187 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K3 188 +#define PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS 189 +#define PIDX_PKEY_PARAM_EC_CHAR2_TYPE 190 +#define PIDX_PKEY_PARAM_EC_COFACTOR 191 +#define PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS 192 +#define PIDX_PKEY_PARAM_EC_ENCODING 193 +#define PIDX_PKEY_PARAM_EC_FIELD_TYPE 194 +#define PIDX_PKEY_PARAM_EC_GENERATOR 195 +#define PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE 196 +#define PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC 197 +#define PIDX_PKEY_PARAM_EC_ORDER 198 +#define PIDX_PKEY_PARAM_EC_P 138 +#define PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT 199 +#define PIDX_PKEY_PARAM_EC_PUB_X 200 +#define PIDX_PKEY_PARAM_EC_PUB_Y 201 +#define PIDX_PKEY_PARAM_EC_SEED 140 +#define PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY 202 +#define PIDX_PKEY_PARAM_ENGINE PIDX_ALG_PARAM_ENGINE +#define PIDX_PKEY_PARAM_FFC_COFACTOR 203 +#define PIDX_PKEY_PARAM_FFC_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_FFC_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_FFC_G 204 +#define PIDX_PKEY_PARAM_FFC_GINDEX 205 +#define PIDX_PKEY_PARAM_FFC_H 206 +#define PIDX_PKEY_PARAM_FFC_P 138 +#define PIDX_PKEY_PARAM_FFC_PBITS 207 +#define PIDX_PKEY_PARAM_FFC_PCOUNTER 208 +#define PIDX_PKEY_PARAM_FFC_Q 209 +#define PIDX_PKEY_PARAM_FFC_QBITS 210 +#define PIDX_PKEY_PARAM_FFC_SEED 140 +#define PIDX_PKEY_PARAM_FFC_TYPE 142 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_G 211 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY 212 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_PQ 213 +#define PIDX_PKEY_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK 214 +#define PIDX_PKEY_PARAM_FIPS_KEY_CHECK 215 +#define PIDX_PKEY_PARAM_FIPS_SIGN_CHECK 216 +#define PIDX_PKEY_PARAM_GROUP_NAME 217 +#define PIDX_PKEY_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_PKEY_PARAM_MANDATORY_DIGEST 218 +#define PIDX_PKEY_PARAM_MASKGENFUNC 219 +#define PIDX_PKEY_PARAM_MAX_SIZE 220 +#define PIDX_PKEY_PARAM_MGF1_DIGEST 221 +#define PIDX_PKEY_PARAM_MGF1_PROPERTIES 222 +#define PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS 223 +#define PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS 224 +#define PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED 225 +#define PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED 226 +#define PIDX_PKEY_PARAM_ML_DSA_SEED 140 +#define PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE 227 +#define PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS 228 +#define PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS 229 +#define PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED 230 +#define PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED 231 +#define PIDX_PKEY_PARAM_ML_KEM_SEED 140 +#define PIDX_PKEY_PARAM_PAD_MODE 232 +#define PIDX_PKEY_PARAM_PRIV_KEY 233 +#define PIDX_PKEY_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_PUB_KEY 234 +#define PIDX_PKEY_PARAM_RSA_BITS PIDX_PKEY_PARAM_BITS +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT 235 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT1 236 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT2 237 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT3 238 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT4 239 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT5 240 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT6 241 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT7 242 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT8 243 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT9 244 +#define PIDX_PKEY_PARAM_RSA_D 245 +#define PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ 246 +#define PIDX_PKEY_PARAM_RSA_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_RSA_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_RSA_E 247 +#define PIDX_PKEY_PARAM_RSA_EXPONENT 248 +#define PIDX_PKEY_PARAM_RSA_EXPONENT1 249 +#define PIDX_PKEY_PARAM_RSA_EXPONENT10 250 +#define PIDX_PKEY_PARAM_RSA_EXPONENT2 251 +#define PIDX_PKEY_PARAM_RSA_EXPONENT3 252 +#define PIDX_PKEY_PARAM_RSA_EXPONENT4 253 +#define PIDX_PKEY_PARAM_RSA_EXPONENT5 254 +#define PIDX_PKEY_PARAM_RSA_EXPONENT6 255 +#define PIDX_PKEY_PARAM_RSA_EXPONENT7 256 +#define PIDX_PKEY_PARAM_RSA_EXPONENT8 257 +#define PIDX_PKEY_PARAM_RSA_EXPONENT9 258 +#define PIDX_PKEY_PARAM_RSA_FACTOR 259 +#define PIDX_PKEY_PARAM_RSA_FACTOR1 260 +#define PIDX_PKEY_PARAM_RSA_FACTOR10 261 +#define PIDX_PKEY_PARAM_RSA_FACTOR2 262 +#define PIDX_PKEY_PARAM_RSA_FACTOR3 263 +#define PIDX_PKEY_PARAM_RSA_FACTOR4 264 +#define PIDX_PKEY_PARAM_RSA_FACTOR5 265 +#define PIDX_PKEY_PARAM_RSA_FACTOR6 266 +#define PIDX_PKEY_PARAM_RSA_FACTOR7 267 +#define PIDX_PKEY_PARAM_RSA_FACTOR8 268 +#define PIDX_PKEY_PARAM_RSA_FACTOR9 269 +#define PIDX_PKEY_PARAM_RSA_MASKGENFUNC PIDX_PKEY_PARAM_MASKGENFUNC +#define PIDX_PKEY_PARAM_RSA_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_PKEY_PARAM_RSA_N 137 +#define PIDX_PKEY_PARAM_RSA_PRIMES 270 +#define PIDX_PKEY_PARAM_RSA_PSS_SALTLEN 271 +#define PIDX_PKEY_PARAM_RSA_TEST_P1 272 +#define PIDX_PKEY_PARAM_RSA_TEST_P2 273 +#define PIDX_PKEY_PARAM_RSA_TEST_Q1 274 +#define PIDX_PKEY_PARAM_RSA_TEST_Q2 275 +#define PIDX_PKEY_PARAM_RSA_TEST_XP 276 +#define PIDX_PKEY_PARAM_RSA_TEST_XP1 277 +#define PIDX_PKEY_PARAM_RSA_TEST_XP2 278 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ 279 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ1 280 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ2 281 +#define PIDX_PKEY_PARAM_SECURITY_BITS 282 +#define PIDX_PKEY_PARAM_SLH_DSA_SEED 140 +#define PIDX_PKEY_PARAM_USE_COFACTOR_ECDH PIDX_PKEY_PARAM_USE_COFACTOR_FLAG +#define PIDX_PKEY_PARAM_USE_COFACTOR_FLAG 283 +#define PIDX_PROV_PARAM_BUILDINFO 284 +#define PIDX_PROV_PARAM_CORE_MODULE_FILENAME 285 +#define PIDX_PROV_PARAM_CORE_PROV_NAME 286 +#define PIDX_PROV_PARAM_CORE_VERSION 287 +#define PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST 288 +#define PIDX_PROV_PARAM_DSA_SIGN_DISABLED 289 +#define PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK 290 +#define PIDX_PROV_PARAM_HKDF_DIGEST_CHECK 291 +#define PIDX_PROV_PARAM_HKDF_KEY_CHECK 292 +#define PIDX_PROV_PARAM_HMAC_KEY_CHECK 293 +#define PIDX_PROV_PARAM_KBKDF_KEY_CHECK 294 +#define PIDX_PROV_PARAM_KMAC_KEY_CHECK 295 +#define PIDX_PROV_PARAM_NAME 296 +#define PIDX_PROV_PARAM_NO_SHORT_MAC 297 +#define PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK 298 +#define PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED 299 +#define PIDX_PROV_PARAM_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED 301 +#define PIDX_PROV_PARAM_SECURITY_CHECKS 302 +#define PIDX_PROV_PARAM_SELF_TEST_DESC 303 +#define PIDX_PROV_PARAM_SELF_TEST_PHASE 304 +#define PIDX_PROV_PARAM_SELF_TEST_TYPE 305 +#define PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK 306 +#define PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK 307 +#define PIDX_PROV_PARAM_SSHKDF_KEY_CHECK 308 +#define PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK 309 +#define PIDX_PROV_PARAM_SSKDF_KEY_CHECK 310 +#define PIDX_PROV_PARAM_STATUS 311 +#define PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED 312 +#define PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK 313 +#define PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK 314 +#define PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK 315 +#define PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK 316 +#define PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK 317 +#define PIDX_PROV_PARAM_VERSION 115 +#define PIDX_PROV_PARAM_X942KDF_KEY_CHECK 318 +#define PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK 319 +#define PIDX_PROV_PARAM_X963KDF_KEY_CHECK 320 +#define PIDX_RAND_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_RAND_PARAM_GENERATE 321 +#define PIDX_RAND_PARAM_MAX_REQUEST 322 +#define PIDX_RAND_PARAM_STATE 323 +#define PIDX_RAND_PARAM_STRENGTH 324 +#define PIDX_RAND_PARAM_TEST_ENTROPY 325 +#define PIDX_RAND_PARAM_TEST_NONCE 326 +#define PIDX_SIGNATURE_PARAM_ADD_RANDOM 327 +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID PIDX_PKEY_PARAM_ALGORITHM_ID +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_SIGNATURE_PARAM_CONTEXT_STRING 328 +#define PIDX_SIGNATURE_PARAM_DETERMINISTIC 329 +#define PIDX_SIGNATURE_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_SIGNATURE_PARAM_DIGEST_SIZE PIDX_PKEY_PARAM_DIGEST_SIZE +#define PIDX_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_SIGNATURE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_CHECK PIDX_PKEY_PARAM_FIPS_SIGN_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK 330 +#define PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE 331 +#define PIDX_SIGNATURE_PARAM_INSTANCE 332 +#define PIDX_SIGNATURE_PARAM_KAT 333 +#define PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING 334 +#define PIDX_SIGNATURE_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_SIGNATURE_PARAM_MGF1_PROPERTIES PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_SIGNATURE_PARAM_MU 335 +#define PIDX_SIGNATURE_PARAM_NONCE_TYPE 336 +#define PIDX_SIGNATURE_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_SIGNATURE_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_SIGNATURE_PARAM_PSS_SALTLEN 271 +#define PIDX_SIGNATURE_PARAM_SIGNATURE 337 +#define PIDX_SIGNATURE_PARAM_TEST_ENTROPY 338 +#define PIDX_SKEY_PARAM_KEY_LENGTH 339 +#define PIDX_SKEY_PARAM_RAW_BYTES 340 +#define PIDX_STORE_PARAM_ALIAS 341 +#define PIDX_STORE_PARAM_DIGEST 3 +#define PIDX_STORE_PARAM_EXPECT 342 +#define PIDX_STORE_PARAM_FINGERPRINT 343 +#define PIDX_STORE_PARAM_INPUT_TYPE 174 +#define PIDX_STORE_PARAM_ISSUER 296 +#define PIDX_STORE_PARAM_PROPERTIES 7 +#define PIDX_STORE_PARAM_SERIAL 344 +#define PIDX_STORE_PARAM_SUBJECT 345 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/asn1.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/asn1.h index 21ff58e3d803d4..15e9e44674b0f3 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/asn1.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/asn1.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/asn1.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -21,6 +21,9 @@ # define HEADER_ASN1_H # endif +# ifndef OPENSSL_NO_STDIO +# include +# endif # include # include # include @@ -50,14 +53,14 @@ extern "C" { # define V_ASN1_PRIMITIVE_TAG 0x1f # define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG -# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ -# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ -# define V_ASN1_ANY -4/* used in ASN1 template code */ +# define V_ASN1_APP_CHOOSE -2 /* let the recipient choose */ +# define V_ASN1_OTHER -3 /* used in ASN1_TYPE */ +# define V_ASN1_ANY -4 /* used in ASN1 template code */ # define V_ASN1_UNDEF -1 /* ASN.1 tag values */ # define V_ASN1_EOC 0 -# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_BOOLEAN 1 # define V_ASN1_INTEGER 2 # define V_ASN1_BIT_STRING 3 # define V_ASN1_OCTET_STRING 4 @@ -70,19 +73,19 @@ extern "C" { # define V_ASN1_UTF8STRING 12 # define V_ASN1_SEQUENCE 16 # define V_ASN1_SET 17 -# define V_ASN1_NUMERICSTRING 18 /**/ +# define V_ASN1_NUMERICSTRING 18 # define V_ASN1_PRINTABLESTRING 19 # define V_ASN1_T61STRING 20 -# define V_ASN1_TELETEXSTRING 20/* alias */ -# define V_ASN1_VIDEOTEXSTRING 21 /**/ +# define V_ASN1_TELETEXSTRING 20 /* alias */ +# define V_ASN1_VIDEOTEXSTRING 21 # define V_ASN1_IA5STRING 22 # define V_ASN1_UTCTIME 23 -# define V_ASN1_GENERALIZEDTIME 24 /**/ -# define V_ASN1_GRAPHICSTRING 25 /**/ -# define V_ASN1_ISO64STRING 26 /**/ -# define V_ASN1_VISIBLESTRING 26/* alias */ -# define V_ASN1_GENERALSTRING 27 /**/ -# define V_ASN1_UNIVERSALSTRING 28 /**/ +# define V_ASN1_GENERALIZEDTIME 24 +# define V_ASN1_GRAPHICSTRING 25 +# define V_ASN1_ISO64STRING 26 +# define V_ASN1_VISIBLESTRING 26 /* alias */ +# define V_ASN1_GENERALSTRING 27 +# define V_ASN1_UNIVERSALSTRING 28 # define V_ASN1_BMPSTRING 30 /* @@ -155,7 +158,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) -# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +# define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */ /* * This indicates that the ASN1_STRING is not a real value but just a place * holder for the location where indefinite length constructed data should be @@ -275,7 +278,7 @@ typedef struct ASN1_TLC_st ASN1_TLC; /* This is just an opaque pointer */ typedef struct ASN1_VALUE_st ASN1_VALUE; -/* Declare ASN1 functions: the implement macro in in asn1t.h */ +/* Declare ASN1 functions: the implement macro is in asn1t.h */ /* * The mysterious 'extern' that's passed to some macros is innocuous, @@ -368,6 +371,7 @@ typedef struct ASN1_VALUE_st ASN1_VALUE; typedef void *d2i_of_void(void **, const unsigned char **, long); typedef int i2d_of_void(const void *, unsigned char **); +typedef int OSSL_i2d_of_void_ctx(const void *, unsigned char **, void *vctx); /*- * The following macros and typedefs allow an ASN1_ITEM @@ -996,6 +1000,8 @@ int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, unsigned char *data, int max_len); void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/bio.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/bio.h index f9aa74731c833c..e02f867beb0ec0 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/bio.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/bio.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/bio.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -67,8 +67,13 @@ extern "C" { # define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) # endif # define BIO_TYPE_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_PAIR (26|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_MEM (27|BIO_TYPE_SOURCE_SINK) +/* Custom type starting index returned by BIO_get_new_index() */ #define BIO_TYPE_START 128 +/* Custom type maximum index that can be returned by BIO_get_new_index() */ +#define BIO_TYPE_MASK 0xFF /* * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. @@ -171,6 +176,31 @@ extern "C" { # define BIO_CTRL_SET_INDENT 80 # define BIO_CTRL_GET_INDENT 81 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +# define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +# define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +# define BIO_CTRL_DGRAM_GET_CAPS 86 +# define BIO_CTRL_DGRAM_SET_CAPS 87 +# define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +# define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +# define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +# define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +# define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 +# define BIO_CTRL_DGRAM_SET0_LOCAL_ADDR 94 + +# define BIO_DGRAM_CAP_NONE 0U +# define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +# define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +# define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +# define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + # ifndef OPENSSL_NO_KTLS # define BIO_get_ktls_send(b) \ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) @@ -208,7 +238,7 @@ extern "C" { # define BIO_FLAGS_NONCLEAR_RST 0x400 # define BIO_FLAGS_IN_EOF 0x800 -/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */ +/* the BIO FLAGS values 0x1000 to 0x8000 are reserved for internal KTLS flags */ typedef union bio_addr_st BIO_ADDR; typedef struct bio_addrinfo_st BIO_ADDRINFO; @@ -256,12 +286,14 @@ void BIO_clear_flags(BIO *b, int flags); # define BIO_RR_ACCEPT 0x03 /* These are passed by the BIO callback */ -# define BIO_CB_FREE 0x01 -# define BIO_CB_READ 0x02 -# define BIO_CB_WRITE 0x03 -# define BIO_CB_PUTS 0x04 -# define BIO_CB_GETS 0x05 -# define BIO_CB_CTRL 0x06 +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 +# define BIO_CB_RECVMMSG 0x07 +# define BIO_CB_SENDMMSG 0x08 /* * The callback is called before and after the underling operation, The @@ -362,6 +394,36 @@ struct bio_dgram_sctp_prinfo { }; # endif +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_TYPE_SSL 2 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + SSL *ssl; + } value; +} BIO_POLL_DESCRIPTOR; + /* * #define BIO_CONN_get_param_hostname BIO_ctrl */ @@ -428,10 +490,17 @@ struct bio_dgram_sctp_prinfo { # define BIO_C_SET_CONNECT_MODE 155 +# define BIO_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +# define BIO_C_SET_SOCK_TYPE 157 +# define BIO_C_GET_SOCK_TYPE 158 +# define BIO_C_GET_DGRAM_BIO 159 + # define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) # define BIO_get_app_data(s) BIO_get_ex_data(s,0) -# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_tfo(b,n) BIO_ctrl(b,BIO_C_SET_TFO,(n),NULL) # ifndef OPENSSL_NO_SOCK /* IP families we support, for BIO_s_connect() and BIO_s_accept() */ @@ -452,7 +521,11 @@ struct bio_dgram_sctp_prinfo { # define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) # define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) # define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_get_conn_mode(b) BIO_ctrl(b,BIO_C_GET_CONNECT,4,NULL) # define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) +# define BIO_set_sock_type(b,t) BIO_ctrl(b,BIO_C_SET_SOCK_TYPE,(t),NULL) +# define BIO_get_sock_type(b) BIO_ctrl(b,BIO_C_GET_SOCK_TYPE,0,NULL) +# define BIO_get0_dgram_bio(b, p) BIO_ctrl(b,BIO_C_GET_DGRAM_BIO,0,(void *)(BIO **)(p)) /* BIO_s_accept() */ # define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ @@ -469,6 +542,7 @@ struct bio_dgram_sctp_prinfo { (char *)(bio)) # define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) # define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) +# define BIO_set_tfo_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,5,(n)?(void *)"a":NULL) /* Aliases kept for backward compatibility */ # define BIO_BIND_NORMAL 0 @@ -596,8 +670,32 @@ int BIO_ctrl_reset_read_request(BIO *b); (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) # define BIO_dgram_set_peer(b,peer) \ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_detect_peer_addr(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) # define BIO_dgram_get_mtu_overhead(b) \ (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +# define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +# define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +# define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +# define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +# define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +# define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +# define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +# define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +# define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +# define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) +# define BIO_dgram_set0_local_addr(b, addr) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET0_LOCAL_ADDR, 0, (addr)) /* ctrl macros for BIO_f_prefix */ # define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) @@ -640,10 +738,18 @@ void BIO_vfree(BIO *a); int BIO_up_ref(BIO *a); int BIO_read(BIO *b, void *data, int dlen); int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); int BIO_gets(BIO *bp, char *buf, int size); int BIO_get_line(BIO *bio, char *buf, int size); int BIO_write(BIO *b, const void *data, int dlen); int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); int BIO_puts(BIO *bp, const char *buf); int BIO_indent(BIO *b, int indent, int max); long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); @@ -667,6 +773,9 @@ int BIO_nwrite0(BIO *bio, char **buf); int BIO_nwrite(BIO *bio, char **buf, int num); const BIO_METHOD *BIO_s_mem(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +# endif const BIO_METHOD *BIO_s_secmem(void); BIO *BIO_new_mem_buf(const void *buf, int len); # ifndef OPENSSL_NO_SOCK @@ -686,6 +795,7 @@ const BIO_METHOD *BIO_f_nbio_test(void); const BIO_METHOD *BIO_f_prefix(void); const BIO_METHOD *BIO_s_core(void); # ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_pair(void); const BIO_METHOD *BIO_s_datagram(void); int BIO_dgram_non_fatal_error(int error); BIO *BIO_new_dgram(int fd, int close_flag); @@ -704,6 +814,7 @@ int BIO_dgram_sctp_msg_waiting(BIO *b); # ifndef OPENSSL_NO_SOCK int BIO_sock_should_retry(int i); int BIO_sock_non_fatal_error(int error); +int BIO_err_is_non_fatal(unsigned int errcode); int BIO_socket_wait(int fd, int for_read, time_t max_time); # endif int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); @@ -726,6 +837,8 @@ int BIO_hex_string(BIO *out, int indent, int width, const void *data, # ifndef OPENSSL_NO_SOCK BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, const void *where, size_t wherelen, unsigned short port); void BIO_ADDR_free(BIO_ADDR *); @@ -788,6 +901,7 @@ int BIO_sock_info(int sock, # define BIO_SOCK_KEEPALIVE 0x04 # define BIO_SOCK_NONBLOCK 0x08 # define BIO_SOCK_NODELAY 0x10 +# define BIO_SOCK_TFO 0x20 int BIO_socket(int domain, int socktype, int protocol, int options); int BIO_connect(int sock, const BIO_ADDR *addr, int options); @@ -805,6 +919,11 @@ BIO *BIO_new_fd(int fd, int close_flag); int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, BIO **bio2, size_t writebuf2); +# ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +# endif + /* * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default @@ -849,38 +968,54 @@ ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); BIO_METHOD *BIO_meth_new(int type, const char *name); void BIO_meth_free(BIO_METHOD *biom); -int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int); -int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t, - size_t *); int BIO_meth_set_write(BIO_METHOD *biom, int (*write) (BIO *, const char *, int)); int BIO_meth_set_write_ex(BIO_METHOD *biom, int (*bwrite) (BIO *, const char *, size_t, size_t *)); -int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); -int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); +int BIO_meth_set_sendmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_read(BIO_METHOD *biom, int (*read) (BIO *, char *, int)); int BIO_meth_set_read_ex(BIO_METHOD *biom, int (*bread) (BIO *, char *, size_t, size_t *)); -int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +int BIO_meth_set_recvmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_puts(BIO_METHOD *biom, int (*puts) (BIO *, const char *)); -int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); int BIO_meth_set_gets(BIO_METHOD *biom, int (*ossl_gets) (BIO *, char *, int)); -long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); int BIO_meth_set_ctrl(BIO_METHOD *biom, long (*ctrl) (BIO *, int, long, void *)); -int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); -int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); -long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) - (BIO *, int, BIO_info_cb *); int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, long (*callback_ctrl) (BIO *, int, BIO_info_cb *)); - +# ifndef OPENSSL_NO_DEPRECATED_3_5 +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, + int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, + long, void *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) (BIO *, int, + BIO_info_cb *); +# endif # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/cmp.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/cmp.h index 49825570d8c303..05aed3029d594c 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -35,7 +35,9 @@ extern "C" { # endif -# define OSSL_CMP_PVNO 2 +# define OSSL_CMP_PVNO_2 2 +# define OSSL_CMP_PVNO_3 3 +# define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ /*- * PKIFailureInfo ::= BIT STRING { @@ -137,7 +139,6 @@ extern "C" { # if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX # error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int # endif - typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) @@ -203,8 +204,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_PKISTATUS_revocationWarning 4 # define OSSL_CMP_PKISTATUS_revocationNotification 5 # define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 - typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; + DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) # define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 @@ -274,6 +275,46 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) #define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) #define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) + +typedef struct ossl_cmp_crlstatus_st OSSL_CMP_CRLSTATUS; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS) +#define sk_OSSL_CMP_CRLSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_value(sk, idx) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CRLSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CRLSTATUS_new_null() ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CRLSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CRLSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CRLSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_delete(sk, i) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CRLSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_pop(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_shift(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CRLSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CRLSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CRLSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CRLSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CRLSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) + + +typedef OSSL_CRMF_ATTRIBUTETYPEANDVALUE OSSL_CMP_ATAV; +# define OSSL_CMP_ATAV_free OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free +typedef STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) OSSL_CMP_ATAVS; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_ATAVS) +# define stack_st_OSSL_CMP_ATAV stack_st_OSSL_CRMF_ATTRIBUTETYPEANDVALUE +# define sk_OSSL_CMP_ATAV_num sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num +# define sk_OSSL_CMP_ATAV_value sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value +# define sk_OSSL_CMP_ATAV_push sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push +# define sk_OSSL_CMP_ATAV_pop_free sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free + typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT; typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI; DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI) @@ -375,21 +416,75 @@ void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type, ASN1_TYPE *value); ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav); ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); -int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p, +int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **sk_p, OSSL_CMP_ITAV *itav); void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new0_certProfile(STACK_OF(ASN1_UTF8STRING) + *certProfile); +int OSSL_CMP_ITAV_get0_certProfile(const OSSL_CMP_ITAV *itav, + STACK_OF(ASN1_UTF8STRING) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_create(const X509_CRL *crl, + const X509 *cert, int only_DN); +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_new1(const DIST_POINT_NAME *dpn, + const GENERAL_NAMES *issuer, + const ASN1_TIME *thisUpdate); +int OSSL_CMP_CRLSTATUS_get0(const OSSL_CMP_CRLSTATUS *crlstatus, + DIST_POINT_NAME **dpn, GENERAL_NAMES **issuer, + ASN1_TIME **thisUpdate); +void OSSL_CMP_CRLSTATUS_free(OSSL_CMP_CRLSTATUS *crlstatus); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_crlStatusList(STACK_OF(OSSL_CMP_CRLSTATUS) *crlStatusList); +int OSSL_CMP_ITAV_get0_crlStatusList(const OSSL_CMP_ITAV *itav, + STACK_OF(OSSL_CMP_CRLSTATUS) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_crls(const X509_CRL *crls); +int OSSL_CMP_ITAV_get0_crls(const OSSL_CMP_ITAV *it, STACK_OF(X509_CRL) **out); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_certReqTemplate(OSSL_CRMF_CERTTEMPLATE *certTemplate, + OSSL_CMP_ATAVS *keySpec); +int OSSL_CMP_ITAV_get1_certReqTemplate(const OSSL_CMP_ITAV *itav, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +OSSL_CMP_ATAV *OSSL_CMP_ATAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ATAV_set0(OSSL_CMP_ATAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ATAV_get0_type(const OSSL_CMP_ATAV *itav); +ASN1_TYPE *OSSL_CMP_ATAV_get0_value(const OSSL_CMP_ATAV *itav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_algId(const X509_ALGOR *alg); +X509_ALGOR *OSSL_CMP_ATAV_get0_algId(const OSSL_CMP_ATAV *atav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_rsaKeyLen(int len); +int OSSL_CMP_ATAV_get_rsaKeyLen(const OSSL_CMP_ATAV *atav); +int OSSL_CMP_ATAV_push1(OSSL_CMP_ATAVS **sk_p, const OSSL_CMP_ATAV *atav); + void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); /* from cmp_ctx.c */ OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const OSSL_CMP_CTX *ctx); /* CMP general options: */ # define OSSL_CMP_OPT_LOG_VERBOSITY 0 /* CMP transfer options: */ -# define OSSL_CMP_OPT_KEEP_ALIVE 10 -# define OSSL_CMP_OPT_MSG_TIMEOUT 11 +# define OSSL_CMP_OPT_KEEP_ALIVE 10 +# define OSSL_CMP_OPT_MSG_TIMEOUT 11 # define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 +# define OSSL_CMP_OPT_USE_TLS 13 /* CMP request options: */ # define OSSL_CMP_OPT_VALIDITY_DAYS 20 # define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 @@ -407,6 +502,7 @@ int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); # define OSSL_CMP_OPT_DIGEST_ALGNID 34 # define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35 # define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36 +# define OSSL_CMP_OPT_NO_CACHE_EXTRACERTS 37 int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val); int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt); /* CMP-specific callback for logging and outputting the error queue: */ @@ -420,9 +516,11 @@ int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); +# ifndef OPENSSL_NO_HTTP int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); +# endif typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); @@ -432,7 +530,9 @@ void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); +# define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +# define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); /* client authentication: */ @@ -448,12 +548,15 @@ int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx, int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); int OSSL_CMP_CTX_reset_geninfo_ITAVs(OSSL_CMP_CTX *ctx); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_CTX_get0_geninfo_ITAVs(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, STACK_OF(X509) *extraCertsOut); /* certificate template: */ int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set1_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, const GENERAL_NAME *name); @@ -477,6 +580,7 @@ int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); # define OSSL_CMP_PKISI_BUFLEN 1024 +X509 *OSSL_CMP_CTX_get0_validatedSrvCert(const OSSL_CMP_CTX *ctx); X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); @@ -498,10 +602,13 @@ OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const OSSL_CMP_PKIHEADER *hdr); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_HDR_get0_geninfo_ITAVs(const OSSL_CMP_PKIHEADER *hdr); /* from cmp_msg.c */ OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg); +X509_PUBKEY *OSSL_CMP_MSG_get0_certreq_publickey(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_recipNonce(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid); @@ -517,8 +624,10 @@ int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, X509_STORE *trusted_store, X509 *cert); /* from cmp_http.c */ +# ifndef OPENSSL_NO_HTTP OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); +# endif /* from cmp_server.c */ typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; @@ -561,6 +670,13 @@ int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx, OSSL_CMP_SRV_error_cb_t process_error, OSSL_CMP_SRV_certConf_cb_t process_certConf, OSSL_CMP_SRV_pollReq_cb_t process_pollReq); +typedef int (*OSSL_CMP_SRV_delayed_delivery_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +typedef int (*OSSL_CMP_SRV_clean_transaction_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_SRV_CTX_init_trans(OSSL_CMP_SRV_CTX *srv_ctx, + OSSL_CMP_SRV_delayed_delivery_cb_t delay, + OSSL_CMP_SRV_clean_transaction_cb_t clean); OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx, @@ -577,6 +693,8 @@ X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type, # define OSSL_CMP_CR 2 # define OSSL_CMP_P10CR 4 # define OSSL_CMP_KUR 7 +# define OSSL_CMP_GENM 21 +# define OSSL_CMP_ERROR 23 # define OSSL_CMP_exec_IR_ses(ctx) \ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL) # define OSSL_CMP_exec_CR_ses(ctx) \ @@ -590,6 +708,18 @@ int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); +int OSSL_CMP_get1_crlUpdate(OSSL_CMP_CTX *ctx, const X509 *crlcert, + const X509_CRL *last_crl, + X509_CRL **crl); +int OSSL_CMP_get1_certReqTemplate(OSSL_CMP_CTX *ctx, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/cms.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/cms.h index 3b453e6a2187a2..63afab563557b0 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/cms.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/cms.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cms.h.in * - * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2008-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -31,8 +31,10 @@ extern "C" { # endif +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; typedef struct CMS_ContentInfo_st CMS_ContentInfo; typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; typedef struct CMS_CertificateChoices CMS_CertificateChoices; typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; @@ -147,10 +149,14 @@ SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, #define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) +DECLARE_ASN1_DUP_FUNCTION(CMS_EnvelopedData) + CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq); # define CMS_SIGNERINFO_ISSUER_SERIAL 0 @@ -190,6 +196,7 @@ CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq) # define CMS_ASCIICRLF 0x80000 # define CMS_CADES 0x100000 # define CMS_USE_ORIGINATOR_KEYID 0x200000 +# define CMS_NO_SIGNING_TIME 0x400000 const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms); @@ -217,13 +224,16 @@ int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, unsigned int flags); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, BIO *dcont, + unsigned int flags); CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, unsigned int flags); CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, @@ -233,27 +243,26 @@ CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, unsigned int flags); CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, const unsigned char *key, size_t keylen, BIO *dcont, BIO *out, unsigned int flags); - CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags); CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, @@ -272,7 +281,7 @@ CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags); CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, BIO *dcont, BIO *out, unsigned int flags); @@ -291,12 +300,16 @@ int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo * -CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx, +CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags); @@ -385,6 +398,11 @@ ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); int CMS_SignerInfo_sign(CMS_SignerInfo *si); int CMS_SignerInfo_verify(CMS_SignerInfo *si); int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, @@ -441,7 +459,7 @@ CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( unsigned char *id, int idlen, int allorfirst, STACK_OF(GENERAL_NAMES) *receiptList, STACK_OF(GENERAL_NAMES) *receiptsTo, - OSSL_LIB_CTX *ctx); + OSSL_LIB_CTX *libctx); int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/comp.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/comp.h new file mode 100644 index 00000000000000..90e39511fe8d28 --- /dev/null +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/comp.h @@ -0,0 +1,98 @@ +/* + * Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_COMP_H +# define OPENSSL_COMP_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_COMP_H +# endif + +# include + +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + + +# ifndef OPENSSL_NO_COMP + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX* comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); + +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); + +COMP_METHOD *COMP_zlib(void); +COMP_METHOD *COMP_zlib_oneshot(void); +COMP_METHOD *COMP_brotli(void); +COMP_METHOD *COMP_brotli_oneshot(void); +COMP_METHOD *COMP_zstd(void); +COMP_METHOD *COMP_zstd_oneshot(void); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define COMP_zlib_cleanup() while(0) continue +# endif + +# ifdef OPENSSL_BIO_H +const BIO_METHOD *BIO_f_zlib(void); +const BIO_METHOD *BIO_f_brotli(void); +const BIO_METHOD *BIO_f_zstd(void); +# endif + +# endif + +typedef struct ssl_comp_st SSL_COMP; + +SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) +#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) +#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) +#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) +#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) +#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) +#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) +#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) +#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) +#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) +#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) +#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) + + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/conf.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/conf.h index 44989929f6c84a..38576290bf641b 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/conf.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/conf.h @@ -27,6 +27,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -65,7 +68,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) #define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) #define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); -#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp))) +#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp)), lh_CONF_VALUE_hash_thunk, lh_CONF_VALUE_comp_thunk, lh_CONF_VALUE_doall_thunk, lh_CONF_VALUE_doall_arg_thunk)) #define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/configuration.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/configuration.h index b659dd784afb0f..0f148d0a17243a 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/configuration.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/configuration.h @@ -30,7 +30,7 @@ extern "C" { # ifndef OPENSSL_SYS_MACOSX # define OPENSSL_SYS_MACOSX 1 # endif -# define OPENSSL_CONFIGURED_API 30000 +# define OPENSSL_CONFIGURED_API 30500 # ifndef OPENSSL_RAND_SEED_OS # define OPENSSL_RAND_SEED_OS # endif @@ -43,6 +43,12 @@ extern "C" { # ifndef OPENSSL_NO_ASAN # define OPENSSL_NO_ASAN # endif +# ifndef OPENSSL_NO_BROTLI +# define OPENSSL_NO_BROTLI +# endif +# ifndef OPENSSL_NO_BROTLI_DYNAMIC +# define OPENSSL_NO_BROTLI_DYNAMIC +# endif # ifndef OPENSSL_NO_COMP # define OPENSSL_NO_COMP # endif @@ -52,6 +58,9 @@ extern "C" { # ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # endif +# ifndef OPENSSL_NO_DEMOS +# define OPENSSL_NO_DEMOS +# endif # ifndef OPENSSL_NO_DEVCRYPTOENG # define OPENSSL_NO_DEVCRYPTOENG # endif @@ -64,12 +73,24 @@ extern "C" { # ifndef OPENSSL_NO_EXTERNAL_TESTS # define OPENSSL_NO_EXTERNAL_TESTS # endif +# ifndef OPENSSL_NO_FIPS_JITTER +# define OPENSSL_NO_FIPS_JITTER +# endif # ifndef OPENSSL_NO_FUZZ_AFL # define OPENSSL_NO_FUZZ_AFL # endif # ifndef OPENSSL_NO_FUZZ_LIBFUZZER # define OPENSSL_NO_FUZZ_LIBFUZZER # endif +# ifndef OPENSSL_NO_H3DEMO +# define OPENSSL_NO_H3DEMO +# endif +# ifndef OPENSSL_NO_HQINTEROP +# define OPENSSL_NO_HQINTEROP +# endif +# ifndef OPENSSL_NO_JITTER +# define OPENSSL_NO_JITTER +# endif # ifndef OPENSSL_NO_KTLS # define OPENSSL_NO_KTLS # endif @@ -82,6 +103,9 @@ extern "C" { # ifndef OPENSSL_NO_MSAN # define OPENSSL_NO_MSAN # endif +# ifndef OPENSSL_NO_PIE +# define OPENSSL_NO_PIE +# endif # ifndef OPENSSL_NO_RC5 # define OPENSSL_NO_RC5 # endif @@ -94,6 +118,12 @@ extern "C" { # ifndef OPENSSL_NO_SSL3_METHOD # define OPENSSL_NO_SSL3_METHOD # endif +# ifndef OPENSSL_NO_SSLKEYLOG +# define OPENSSL_NO_SSLKEYLOG +# endif +# ifndef OPENSSL_NO_TFO +# define OPENSSL_NO_TFO +# endif # ifndef OPENSSL_NO_TRACE # define OPENSSL_NO_TRACE # endif @@ -109,6 +139,21 @@ extern "C" { # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS # define OPENSSL_NO_WEAK_SSL_CIPHERS # endif +# ifndef OPENSSL_NO_WINSTORE +# define OPENSSL_NO_WINSTORE +# endif +# ifndef OPENSSL_NO_ZLIB +# define OPENSSL_NO_ZLIB +# endif +# ifndef OPENSSL_NO_ZLIB_DYNAMIC +# define OPENSSL_NO_ZLIB_DYNAMIC +# endif +# ifndef OPENSSL_NO_ZSTD +# define OPENSSL_NO_ZSTD +# endif +# ifndef OPENSSL_NO_ZSTD_DYNAMIC +# define OPENSSL_NO_ZSTD_DYNAMIC +# endif # ifndef OPENSSL_NO_DYNAMIC_ENGINE # define OPENSSL_NO_DYNAMIC_ENGINE # endif @@ -130,6 +175,12 @@ extern "C" { # define RC4_INT unsigned int +# if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +# define OPENSSL_NO_COMP_ALG +# else +# undef OPENSSL_NO_COMP_ALG +# endif + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/core_names.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/core_names.h new file mode 100644 index 00000000000000..e93e79a52bc910 --- /dev/null +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/core_names.h @@ -0,0 +1,575 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/core_names.h.in + * + * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#ifndef OPENSSL_CORE_NAMES_H +# define OPENSSL_CORE_NAMES_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +/* OSSL_CIPHER_PARAM_CTS_MODE Values */ +# define OSSL_CIPHER_CTS_MODE_CS1 "CS1" +# define OSSL_CIPHER_CTS_MODE_CS2 "CS2" +# define OSSL_CIPHER_CTS_MODE_CS3 "CS3" + +/* Known CIPHER names (not a complete list) */ +# define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" + +/* Known DIGEST names (not a complete list) */ +# define OSSL_DIGEST_NAME_MD5 "MD5" +# define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" +# define OSSL_DIGEST_NAME_SHA1 "SHA1" +# define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" +# define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" +# define OSSL_DIGEST_NAME_SHA2_256_192 "SHA2-256/192" +# define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" +# define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" +# define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" +# define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" +# define OSSL_DIGEST_NAME_MD2 "MD2" +# define OSSL_DIGEST_NAME_MD4 "MD4" +# define OSSL_DIGEST_NAME_MDC2 "MDC2" +# define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" +# define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" +# define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" +# define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" +# define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" +# define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" +# define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" +# define OSSL_DIGEST_NAME_SM3 "SM3" + +/* Known MAC names */ +# define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" +# define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" +# define OSSL_MAC_NAME_CMAC "CMAC" +# define OSSL_MAC_NAME_GMAC "GMAC" +# define OSSL_MAC_NAME_HMAC "HMAC" +# define OSSL_MAC_NAME_KMAC128 "KMAC128" +# define OSSL_MAC_NAME_KMAC256 "KMAC256" +# define OSSL_MAC_NAME_POLY1305 "POLY1305" +# define OSSL_MAC_NAME_SIPHASH "SIPHASH" + +/* Known KDF names */ +# define OSSL_KDF_NAME_HKDF "HKDF" +# define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" +# define OSSL_KDF_NAME_PBKDF1 "PBKDF1" +# define OSSL_KDF_NAME_PBKDF2 "PBKDF2" +# define OSSL_KDF_NAME_SCRYPT "SCRYPT" +# define OSSL_KDF_NAME_SSHKDF "SSHKDF" +# define OSSL_KDF_NAME_SSKDF "SSKDF" +# define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" +# define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" +# define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" +# define OSSL_KDF_NAME_X963KDF "X963KDF" +# define OSSL_KDF_NAME_KBKDF "KBKDF" +# define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" +# define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" + +/* RSA padding modes */ +# define OSSL_PKEY_RSA_PAD_MODE_NONE "none" +# define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" +# define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" +# define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" +# define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" + +/* RSA pss padding salt length */ +# define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" + +/* OSSL_PKEY_PARAM_EC_ENCODING values */ +# define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" +# define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" + +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" + +# define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" + +/* PROV_SKEY well known key types */ +# define OSSL_SKEY_TYPE_GENERIC "GENERIC-SECRET" +# define OSSL_SKEY_TYPE_AES "AES" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" + +/* Provider configuration variables */ +#define OSSL_PKEY_RETAIN_SEED "pkey_retain_seed" + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +# define OSSL_ALG_PARAM_ALGORITHM_ID "algorithm-id" +# define OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS "algorithm-id-params" +# define OSSL_ALG_PARAM_CIPHER "cipher" +# define OSSL_ALG_PARAM_DIGEST "digest" +# define OSSL_ALG_PARAM_ENGINE "engine" +# define OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR "fips-indicator" +# define OSSL_ALG_PARAM_MAC "mac" +# define OSSL_ALG_PARAM_PROPERTIES "properties" +# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +# define OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props" +# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" +# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name" +# define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal" +# define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name" +# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid" +# define OSSL_CIPHER_PARAM_AEAD "aead" +# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +# define OSSL_CIPHER_PARAM_AEAD_IV_GENERATED "iv-generated" +# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" +# define OSSL_CIPHER_PARAM_AEAD_TAG "tag" +# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" +# define OSSL_CIPHER_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD "alg_id_param" +# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_CIPHER_PARAM_CTS "cts" +# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" +# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" +# define OSSL_CIPHER_PARAM_DECRYPT_ONLY "decrypt-only" +# define OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK "encrypt-check" +# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" +# define OSSL_CIPHER_PARAM_IV "iv" +# define OSSL_CIPHER_PARAM_IVLEN "ivlen" +# define OSSL_CIPHER_PARAM_KEYLEN "keylen" +# define OSSL_CIPHER_PARAM_MODE "mode" +# define OSSL_CIPHER_PARAM_NUM "num" +# define OSSL_CIPHER_PARAM_PADDING "padding" +# define OSSL_CIPHER_PARAM_PIPELINE_AEAD_TAG "pipeline-tag" +# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" +# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" +# define OSSL_CIPHER_PARAM_ROUNDS "rounds" +# define OSSL_CIPHER_PARAM_SPEED "speed" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag" +# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" +# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" +# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" +# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" +# define OSSL_CIPHER_PARAM_USE_BITS "use-bits" +# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard" +# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" +# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_DIGEST_PARAM_MICALG "micalg" +# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" +# define OSSL_DIGEST_PARAM_SIZE "size" +# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" +# define OSSL_DIGEST_PARAM_XOF "xof" +# define OSSL_DIGEST_PARAM_XOFLEN "xoflen" +# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +# define OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +# define OSSL_DRBG_PARAM_SIZE "size" +# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" +# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" +# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" +# define OSSL_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_EXCHANGE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" +# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" +# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" +# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" +# define OSSL_EXCHANGE_PARAM_PAD "pad" +# define OSSL_GEN_PARAM_ITERATION "iteration" +# define OSSL_GEN_PARAM_POTENTIAL "potential" +# define OSSL_KDF_PARAM_ARGON2_AD "ad" +# define OSSL_KDF_PARAM_ARGON2_LANES "lanes" +# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost" +# define OSSL_KDF_PARAM_ARGON2_VERSION "version" +# define OSSL_KDF_PARAM_CEK_ALG "cekalg" +# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_KDF_PARAM_CONSTANT "constant" +# define OSSL_KDF_PARAM_DATA "data" +# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean" +# define OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KDF_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_KDF_PARAM_FIPS_EMS_CHECK "ems_check" +# define OSSL_KDF_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy" +# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce" +# define OSSL_KDF_PARAM_INFO "info" +# define OSSL_KDF_PARAM_ITER "iter" +# define OSSL_KDF_PARAM_KBKDF_R "r" +# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" +# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" +# define OSSL_KDF_PARAM_KEY "key" +# define OSSL_KDF_PARAM_LABEL "label" +# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_KDF_PARAM_MAC_SIZE "maclen" +# define OSSL_KDF_PARAM_MODE "mode" +# define OSSL_KDF_PARAM_PASSWORD "pass" +# define OSSL_KDF_PARAM_PKCS12_ID "id" +# define OSSL_KDF_PARAM_PKCS5 "pkcs5" +# define OSSL_KDF_PARAM_PREFIX "prefix" +# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_KDF_PARAM_SALT "salt" +# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" +# define OSSL_KDF_PARAM_SCRYPT_N "n" +# define OSSL_KDF_PARAM_SCRYPT_P "p" +# define OSSL_KDF_PARAM_SCRYPT_R "r" +# define OSSL_KDF_PARAM_SECRET "secret" +# define OSSL_KDF_PARAM_SEED "seed" +# define OSSL_KDF_PARAM_SIZE "size" +# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" +# define OSSL_KDF_PARAM_SSHKDF_TYPE "type" +# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" +# define OSSL_KDF_PARAM_THREADS "threads" +# define OSSL_KDF_PARAM_UKM "ukm" +# define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info" +# define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info" +# define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info" +# define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo" +# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_KEM_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KEM_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KEM_PARAM_IKME "ikme" +# define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING "hs_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm" +# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len" +# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" +# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_MAC_PARAM_CUSTOM "custom" +# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" +# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" +# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" +# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" +# define OSSL_MAC_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_MAC_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_MAC_PARAM_FIPS_NO_SHORT_MAC OSSL_PROV_PARAM_NO_SHORT_MAC +# define OSSL_MAC_PARAM_IV "iv" +# define OSSL_MAC_PARAM_KEY "key" +# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_MAC_PARAM_SALT "salt" +# define OSSL_MAC_PARAM_SIZE "size" +# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" +# define OSSL_MAC_PARAM_XOF "xof" +# define OSSL_OBJECT_PARAM_DATA "data" +# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" +# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" +# define OSSL_OBJECT_PARAM_DESC "desc" +# define OSSL_OBJECT_PARAM_INPUT_TYPE "input-type" +# define OSSL_OBJECT_PARAM_REFERENCE "reference" +# define OSSL_OBJECT_PARAM_TYPE "type" +# define OSSL_PASSPHRASE_PARAM_INFO "info" +# define OSSL_PKEY_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_PKEY_PARAM_BITS "bits" +# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" +# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm" +# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" +# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +# define OSSL_PKEY_PARAM_DIST_ID "distid" +# define OSSL_PKEY_PARAM_EC_A "a" +# define OSSL_PKEY_PARAM_EC_B "b" +# define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3" +# define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp" +# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" +# define OSSL_PKEY_PARAM_EC_ENCODING "encoding" +# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +# define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_PARAM_EC_ORDER "order" +# define OSSL_PKEY_PARAM_EC_P "p" +# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +# define OSSL_PKEY_PARAM_EC_PUB_X "qx" +# define OSSL_PKEY_PARAM_EC_PUB_Y "qy" +# define OSSL_PKEY_PARAM_EC_SEED "seed" +# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE +# define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +# define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_FFC_G "g" +# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +# define OSSL_PKEY_PARAM_FFC_H "hindex" +# define OSSL_PKEY_PARAM_FFC_P "p" +# define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +# define OSSL_PKEY_PARAM_FFC_Q "q" +# define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +# define OSSL_PKEY_PARAM_FFC_SEED "seed" +# define OSSL_PKEY_PARAM_FFC_TYPE "type" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +# define OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK "digest-check" +# define OSSL_PKEY_PARAM_FIPS_KEY_CHECK "key-check" +# define OSSL_PKEY_PARAM_FIPS_SIGN_CHECK "sign-check" +# define OSSL_PKEY_PARAM_GROUP_NAME "group" +# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" +# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +# define OSSL_PKEY_PARAM_MAX_SIZE "max-size" +# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +# define OSSL_PKEY_PARAM_ML_DSA_INPUT_FORMATS "ml-dsa.input_formats" +# define OSSL_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS "ml-dsa.output_formats" +# define OSSL_PKEY_PARAM_ML_DSA_PREFER_SEED "ml-dsa.prefer_seed" +# define OSSL_PKEY_PARAM_ML_DSA_RETAIN_SEED "ml-dsa.retain_seed" +# define OSSL_PKEY_PARAM_ML_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE "ml-kem.import_pct_type" +# define OSSL_PKEY_PARAM_ML_KEM_INPUT_FORMATS "ml-kem.input_formats" +# define OSSL_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS "ml-kem.output_formats" +# define OSSL_PKEY_PARAM_ML_KEM_PREFER_SEED "ml-kem.prefer_seed" +# define OSSL_PKEY_PARAM_ML_KEM_RETAIN_SEED "ml-kem.retain_seed" +# define OSSL_PKEY_PARAM_ML_KEM_SEED "seed" +# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +# define OSSL_PKEY_PARAM_PRIV_KEY "priv" +# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_PUB_KEY "pub" +# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9" +# define OSSL_PKEY_PARAM_RSA_D "d" +# define OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ "rsa-derive-from-pq" +# define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_RSA_E "e" +# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1" +# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10" +# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2" +# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3" +# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4" +# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5" +# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6" +# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7" +# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8" +# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9" +# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1" +# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10" +# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2" +# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3" +# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4" +# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5" +# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6" +# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7" +# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8" +# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9" +# define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC +# define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_PKEY_PARAM_RSA_N "n" +# define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" +# define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1" +# define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2" +# define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1" +# define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2" +# define OSSL_PKEY_PARAM_RSA_TEST_XP "xp" +# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" +# define OSSL_PKEY_PARAM_SLH_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG +# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +# define OSSL_PROV_PARAM_BUILDINFO "buildinfo" +# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" +# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" +# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" +# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" +# define OSSL_PROV_PARAM_DSA_SIGN_DISABLED "dsa-sign-disabled" +# define OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK "ecdh-cofactor-check" +# define OSSL_PROV_PARAM_HKDF_DIGEST_CHECK "hkdf-digest-check" +# define OSSL_PROV_PARAM_HKDF_KEY_CHECK "hkdf-key-check" +# define OSSL_PROV_PARAM_HMAC_KEY_CHECK "hmac-key-check" +# define OSSL_PROV_PARAM_KBKDF_KEY_CHECK "kbkdf-key-check" +# define OSSL_PROV_PARAM_KMAC_KEY_CHECK "kmac-key-check" +# define OSSL_PROV_PARAM_NAME "name" +# define OSSL_PROV_PARAM_NO_SHORT_MAC "no-short-mac" +# define OSSL_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK "pbkdf2-lower-bound-check" +# define OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED "rsa-pkcs15-pad-disabled" +# define OSSL_PROV_PARAM_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED "rsa-sign-x931-pad-disabled" +# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" +# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" +# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" +# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" +# define OSSL_PROV_PARAM_SIGNATURE_DIGEST_CHECK "signature-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_DIGEST_CHECK "sshkdf-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_KEY_CHECK "sshkdf-key-check" +# define OSSL_PROV_PARAM_SSKDF_DIGEST_CHECK "sskdf-digest-check" +# define OSSL_PROV_PARAM_SSKDF_KEY_CHECK "sskdf-key-check" +# define OSSL_PROV_PARAM_STATUS "status" +# define OSSL_PROV_PARAM_TDES_ENCRYPT_DISABLED "tdes-encrypt-disabled" +# define OSSL_PROV_PARAM_TLS13_KDF_DIGEST_CHECK "tls13-kdf-digest-check" +# define OSSL_PROV_PARAM_TLS13_KDF_KEY_CHECK "tls13-kdf-key-check" +# define OSSL_PROV_PARAM_TLS1_PRF_DIGEST_CHECK "tls1-prf-digest-check" +# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" +# define OSSL_PROV_PARAM_TLS1_PRF_KEY_CHECK "tls1-prf-key-check" +# define OSSL_PROV_PARAM_VERSION "version" +# define OSSL_PROV_PARAM_X942KDF_KEY_CHECK "x942kdf-key-check" +# define OSSL_PROV_PARAM_X963KDF_DIGEST_CHECK "x963kdf-digest-check" +# define OSSL_PROV_PARAM_X963KDF_KEY_CHECK "x963kdf-key-check" +# define OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_RAND_PARAM_GENERATE "generate" +# define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +# define OSSL_RAND_PARAM_STATE "state" +# define OSSL_RAND_PARAM_STRENGTH "strength" +# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" +# define OSSL_SIGNATURE_PARAM_ADD_RANDOM "additional-random" +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID OSSL_PKEY_PARAM_ALGORITHM_ID +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string" +# define OSSL_SIGNATURE_PARAM_DETERMINISTIC "deterministic" +# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE +# define OSSL_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_SIGNATURE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_CHECK OSSL_PKEY_PARAM_FIPS_SIGN_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK "sign-x931-pad-check" +# define OSSL_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE "verify-message" +# define OSSL_SIGNATURE_PARAM_INSTANCE "instance" +# define OSSL_SIGNATURE_PARAM_KAT "kat" +# define OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING "message-encoding" +# define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_SIGNATURE_PARAM_MU "mu" +# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type" +# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +# define OSSL_SIGNATURE_PARAM_SIGNATURE "signature" +# define OSSL_SIGNATURE_PARAM_TEST_ENTROPY "test-entropy" +# define OSSL_SKEY_PARAM_KEY_LENGTH "key-length" +# define OSSL_SKEY_PARAM_RAW_BYTES "raw-bytes" +# define OSSL_STORE_PARAM_ALIAS "alias" +# define OSSL_STORE_PARAM_DIGEST "digest" +# define OSSL_STORE_PARAM_EXPECT "expect" +# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" +# define OSSL_STORE_PARAM_INPUT_TYPE "input-type" +# define OSSL_STORE_PARAM_ISSUER "name" +# define OSSL_STORE_PARAM_PROPERTIES "properties" +# define OSSL_STORE_PARAM_SERIAL "serial" +# define OSSL_STORE_PARAM_SUBJECT "subject" + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/crmf.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/crmf.h index 71b747ed33d239..4bf550fd47daa9 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/crmf.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/crmf.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/crmf.h.in * - * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -26,6 +26,7 @@ # include # include # include /* for GENERAL_NAME etc. */ +# include /* explicit #includes not strictly needed since implied by the above: */ # include @@ -43,9 +44,12 @@ extern "C" { # define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 # define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 - typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) + +typedef struct ossl_crmf_encryptedkey_st OSSL_CRMF_ENCRYPTEDKEY; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDKEY) + typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) @@ -77,6 +81,36 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) #define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; +void OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(OSSL_CRMF_ATTRIBUTETYPEANDVALUE *v); +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value(sk, idx) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new(cmp) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_null() ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (n)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete(sk, i) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (i))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete_ptr(sk, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_shift(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk),ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), (idx)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set(sk, idx, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), pnum) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup(sk) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) + + typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER) typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY; @@ -118,6 +152,7 @@ typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO) typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTTEMPLATE) typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS) @@ -198,12 +233,14 @@ int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, int rid, int acceptRAVerified, OSSL_LIB_CTX *libctx, const char *propq); OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); -const ASN1_INTEGER -*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const ASN1_INTEGER +*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); X509_EXTENSIONS *OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME @@ -215,10 +252,24 @@ int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl, const X509_NAME *subject, const X509_NAME *issuer, const ASN1_INTEGER *serial); -X509 -*OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, - OSSL_LIB_CTX *libctx, const char *propq, - EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDKEY_get1_encCert(const OSSL_CRMF_ENCRYPTEDKEY *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, unsigned int flags); +unsigned char +*OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *enc, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, int *outlen); +EVP_PKEY *OSSL_CRMF_ENCRYPTEDKEY_get1_pkey(const OSSL_CRMF_ENCRYPTEDKEY *encryptedKey, + X509_STORE *ts, STACK_OF(X509) *extra, EVP_PKEY *pkey, + X509 *cert, ASN1_OCTET_STRING *secret, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSG_centralkeygen_requested(const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr); +# ifndef OPENSSL_NO_CMS +OSSL_CRMF_ENCRYPTEDKEY *OSSL_CRMF_ENCRYPTEDKEY_init_envdata(CMS_EnvelopedData *envdata); +# endif # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/crypto.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/crypto.h index 3f40be6d8c61d5..fd2cfd3e5a9ac4 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/crypto.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/crypto.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/crypto.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -85,9 +85,15 @@ int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock); void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock); int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_add64(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_and(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, CRYPTO_RWLOCK *lock); int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, CRYPTO_RWLOCK *lock); /* No longer needed, so this is a no-op */ #define OPENSSL_malloc_init() while(0) continue @@ -96,6 +102,9 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_zalloc(num) \ CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_aligned_alloc(num, alignment, freeptr) \ + CRYPTO_aligned_alloc(num, alignment, freeptr, \ + OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_realloc(addr, num) \ CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_clear_realloc(addr, old_num, num) \ @@ -124,6 +133,7 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); size_t OPENSSL_strnlen(const char *str, size_t maxlen); +int OPENSSL_strtoul(const char *str, char **endptr, int base, unsigned long *num); int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength, const unsigned char *buf, size_t buflen, const char sep); @@ -160,6 +170,7 @@ const char *OpenSSL_version(int type); # define OPENSSL_FULL_VERSION_STRING 7 # define OPENSSL_MODULES_DIR 8 # define OPENSSL_CPU_INFO 9 +# define OPENSSL_WINCTX 10 const char *OPENSSL_info(int type); /* @@ -174,6 +185,7 @@ const char *OPENSSL_info(int type); # define OPENSSL_INFO_LIST_SEPARATOR 1006 # define OPENSSL_INFO_SEED_SOURCE 1007 # define OPENSSL_INFO_CPU_SETTINGS 1008 +# define OPENSSL_INFO_WINDOWS_CONTEXT 1009 int OPENSSL_issetugid(void); @@ -341,11 +353,14 @@ void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn, CRYPTO_realloc_fn *realloc_fn, CRYPTO_free_fn *free_fn); -void *CRYPTO_malloc(size_t num, const char *file, int line); -void *CRYPTO_zalloc(size_t num, const char *file, int line); -void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); -char *CRYPTO_strdup(const char *str, const char *file, int line); -char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc(size_t num, size_t align, + void **freeptr, const char *file, + int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strdup(const char *str, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); void CRYPTO_free(void *ptr, const char *file, int line); void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line); void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); @@ -354,8 +369,8 @@ void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, int CRYPTO_secure_malloc_init(size_t sz, size_t minsize); int CRYPTO_secure_malloc_done(void); -void *CRYPTO_secure_malloc(size_t num, const char *file, int line); -void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); void CRYPTO_secure_free(void *ptr, const char *file, int line); void CRYPTO_secure_clear_free(void *ptr, size_t num, const char *file, int line); @@ -376,6 +391,9 @@ void OPENSSL_cleanse(void *ptr, size_t len); # define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */ # define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */ +/* max allowed length for value of OPENSSL_MALLOC_FAILURES env var. */ +# define CRYPTO_MEM_CHECK_MAX_FS 256 + void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); # ifndef OPENSSL_NO_DEPRECATED_3_0 # define OPENSSL_mem_debug_push(info) \ @@ -551,6 +569,13 @@ int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file); void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); +int OSSL_LIB_CTX_get_conf_diagnostics(OSSL_LIB_CTX *ctx); +void OSSL_LIB_CTX_set_conf_diagnostics(OSSL_LIB_CTX *ctx, int value); + +void OSSL_sleep(uint64_t millis); + + +void *OSSL_LIB_CTX_get_data(OSSL_LIB_CTX *ctx, int index); # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/ct.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/ct.h index b6dd8c3547710a..e6dd1192a4e0b3 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/ct.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/ct.h @@ -133,7 +133,7 @@ typedef enum { */ CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); - + /* * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library * context and property query string is used. diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/err.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/err.h index 2abf2483488181..daca18e7b757b0 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/err.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/err.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -372,7 +372,7 @@ typedef struct ERR_string_data_st { } ERR_STRING_DATA; DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); -#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp))) +#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp)), lh_ERR_STRING_DATA_hash_thunk, lh_ERR_STRING_DATA_comp_thunk, lh_ERR_STRING_DATA_doall_thunk, lh_ERR_STRING_DATA_doall_arg_thunk)) #define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) @@ -496,6 +496,14 @@ int ERR_get_next_error_library(void); int ERR_set_mark(void); int ERR_pop_to_mark(void); int ERR_clear_last_mark(void); +int ERR_count_to_mark(void); +int ERR_pop(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); #ifdef __cplusplus } diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/fipskey.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/fipskey.h index 42ba014b313ba8..929db18c678364 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/fipskey.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/fipskey.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/fipskey.h.in * - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -29,6 +29,11 @@ extern "C" { */ #define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" +/* + * The FIPS provider vendor name, as a string. + */ +#define FIPS_VENDOR "OpenSSL FIPS Provider" + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/lhash.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/lhash.h index 39dd6254acdeb6..62c55b20fd9716 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/lhash.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/lhash.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -24,6 +24,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -31,9 +34,13 @@ extern "C" { typedef struct lhash_node_st OPENSSL_LH_NODE; typedef int (*OPENSSL_LH_COMPFUNC) (const void *, const void *); +typedef int (*OPENSSL_LH_COMPFUNCTHUNK) (const void *, const void *, OPENSSL_LH_COMPFUNC cfn); typedef unsigned long (*OPENSSL_LH_HASHFUNC) (const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNCTHUNK) (const void *, OPENSSL_LH_HASHFUNC hfn); typedef void (*OPENSSL_LH_DOALL_FUNC) (void *); +typedef void (*OPENSSL_LH_DOALL_FUNC_THUNK) (void *, OPENSSL_LH_DOALL_FUNC doall); typedef void (*OPENSSL_LH_DOALL_FUNCARG) (void *, void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG_THUNK) (void *, void *, OPENSSL_LH_DOALL_FUNCARG doall); typedef struct lhash_st OPENSSL_LHASH; /* @@ -79,26 +86,40 @@ typedef struct lhash_st OPENSSL_LHASH; int OPENSSL_LH_error(OPENSSL_LHASH *lh); OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +OPENSSL_LHASH *OPENSSL_LH_set_thunks(OPENSSL_LHASH *lh, + OPENSSL_LH_HASHFUNCTHUNK hw, + OPENSSL_LH_COMPFUNCTHUNK cw, + OPENSSL_LH_DOALL_FUNC_THUNK daw, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw); void OPENSSL_LH_free(OPENSSL_LHASH *lh); void OPENSSL_LH_flush(OPENSSL_LHASH *lh); void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); -void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg_thunk(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw, + OPENSSL_LH_DOALL_FUNCARG fn, void *arg); + unsigned long OPENSSL_LH_strhash(const char *c); unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); # ifndef OPENSSL_NO_STDIO -void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# endif +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # endif -void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define _LHASH OPENSSL_LHASH @@ -129,110 +150,190 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); /* Helper macro for internal use */ # define DEFINE_LHASH_OF_INTERNAL(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ typedef void (*lh_##type##_doallfunc)(type *a); \ - static ossl_unused ossl_inline type *ossl_check_##type##_lh_plain_type(type *ptr) \ + static ossl_inline unsigned long lh_##type##_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static ossl_inline int lh_##type##_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_inline void lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_inline void lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline type *\ + ossl_check_##type##_lh_plain_type(type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const type *ossl_check_const_##type##_lh_plain_type(const type *ptr) \ + static ossl_unused ossl_inline const type * \ + ossl_check_const_##type##_lh_plain_type(const type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const OPENSSL_LHASH *ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline const OPENSSL_LHASH * \ + ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ { \ return (const OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LHASH *ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline OPENSSL_LHASH * \ + ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ { \ return (OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ + static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC \ + ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ { \ return (OPENSSL_LH_COMPFUNC)cmp; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ + static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC \ + ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ { \ return (OPENSSL_LH_HASHFUNC)hfn; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ + static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC \ + ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ { \ return (OPENSSL_LH_DOALL_FUNC)dfn; \ } \ LHASH_OF(type) -# define DEFINE_LHASH_OF(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ - static ossl_unused ossl_inline LHASH_OF(type) *lh_##type##_new(unsigned long (*hfn)(const type *), \ - int (*cfn)(const type *, const type *)) \ +# ifndef OPENSSL_NO_DEPRECATED_3_1 +# define DEFINE_LHASH_OF_DEPRECATED(type) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ - return (LHASH_OF(type) *) \ - OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ - static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } +# else +# define DEFINE_LHASH_OF_DEPRECATED(type) +# endif + +# define DEFINE_LHASH_OF_EX(type) \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ + static unsigned long \ + lh_##type##_hfn_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static int lh_##type##_cfn_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_free(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_flush(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_flush(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ { \ return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline int \ + lh_##type##_error(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_num_items(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_get_down_load(LHASH_OF(type) *lh) \ { \ - OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ { \ - OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ } \ - static ossl_unused ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ { \ - OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ { \ - return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ } \ - static ossl_unused ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall(LHASH_OF(type) *lh, void (*doall)(type *)) \ { \ - OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ - void (*doall)(type *)) \ + static ossl_unused ossl_inline LHASH_OF(type) * \ + lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ { \ - OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \ + lh_##type##_hfn_thunk, lh_##type##_cfn_thunk, \ + lh_##type##_doall_thunk, \ + lh_##type##_doall_arg_thunk); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall_arg(LHASH_OF(type) *lh, \ - void (*doallarg)(type *, void *), \ - void *arg) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg(LHASH_OF(type) *lh, \ + void (*doallarg)(type *, void *), void *arg) \ { \ OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ } \ LHASH_OF(type) +# define DEFINE_LHASH_OF(type) \ + DEFINE_LHASH_OF_EX(type); \ + DEFINE_LHASH_OF_DEPRECATED(type) \ + LHASH_OF(type) + #define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ int_implement_lhash_doall(type, argtype, const type) @@ -240,17 +341,26 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); int_implement_lhash_doall(type, argtype, type) #define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype##_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG fn) \ + { \ + void (*fn_conv)(cbargtype *, argtype *) = (void (*)(cbargtype *, argtype *))fn; \ + fn_conv((cbargtype *)node, (argtype *)arg); \ + } \ static ossl_unused ossl_inline void \ lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ void (*fn)(cbargtype *, argtype *), \ argtype *arg) \ { \ - OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNCARG)fn, (void *)arg); \ + OPENSSL_LH_doall_arg_thunk((OPENSSL_LHASH *)lh, \ + lh_##type##_doall_##argtype##_thunk, \ + (OPENSSL_LH_DOALL_FUNCARG)fn, \ + (void *)arg); \ } \ LHASH_OF(type) DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); -#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp)), lh_OPENSSL_STRING_hash_thunk, lh_OPENSSL_STRING_comp_thunk, lh_OPENSSL_STRING_doall_thunk, lh_OPENSSL_STRING_doall_arg_thunk)) #define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) @@ -265,7 +375,7 @@ DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); #define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) #define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); -#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp)), lh_OPENSSL_CSTRING_hash_thunk, lh_OPENSSL_CSTRING_comp_thunk, lh_OPENSSL_CSTRING_doall_thunk, lh_OPENSSL_CSTRING_doall_arg_thunk)) #define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/opensslv.h index 5fb5bc63056fe0..71a357701fd5e3 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/opensslv.h @@ -28,8 +28,8 @@ extern "C" { * These macros express version number MAJOR.MINOR.PATCH exactly */ # define OPENSSL_VERSION_MAJOR 3 -# define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 17 +# define OPENSSL_VERSION_MINOR 5 +# define OPENSSL_VERSION_PATCH 2 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.17" -# define OPENSSL_FULL_VERSION_STR "3.0.17" +# define OPENSSL_VERSION_STR "3.5.2" +# define OPENSSL_FULL_VERSION_STR "3.5.2" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "1 Jul 2025" +# define OPENSSL_RELEASE_DATE "5 Aug 2025" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.17 1 Jul 2025" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.2 5 Aug 2025" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/pkcs12.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/pkcs12.h index c5e0cab06491ec..0809645dad0bbf 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/pkcs12.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/pkcs12.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/pkcs12.h.in * - * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -41,6 +44,7 @@ extern "C" { # define PKCS12_MAC_KEY_LENGTH 20 +/* The macro is expected to be used only internally. Kept for backwards compatibility. */ # define PKCS12_SALT_LEN 8 /* It's not clear if these are actually needed... */ @@ -130,7 +134,9 @@ int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); const STACK_OF(PKCS12_SAFEBAG) * PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); @@ -218,6 +224,7 @@ ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); const STACK_OF(X509_ATTRIBUTE) * PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, const char *pass, int passlen, const unsigned char *in, int inlen, @@ -285,6 +292,9 @@ int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, unsigned char *salt, int saltlen, int iter, const EVP_MD *md_type); +int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type, const char *prf_md_name); int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, int saltlen, const EVP_MD *md_type); unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, @@ -305,6 +315,7 @@ DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) void PKCS12_PBE_add(void); int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype); @@ -312,6 +323,11 @@ PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype, OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/pkcs7.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/pkcs7.h index 0ce79bf4fa160e..fa68462aff973b 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/pkcs7.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/pkcs7.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/pkcs7.h.in * - * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -28,6 +28,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -131,8 +134,8 @@ SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INF typedef struct pkcs7_signed_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; struct pkcs7_st *contents; } PKCS7_SIGNED; @@ -158,8 +161,8 @@ typedef struct pkcs7_enveloped_st { typedef struct pkcs7_signedandenveloped_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; PKCS7_ENC_CONTENT *enc_data; STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; @@ -200,7 +203,7 @@ typedef struct pkcs7_st { /* NID_pkcs7_data */ ASN1_OCTET_STRING *data; /* NID_pkcs7_signed */ - PKCS7_SIGNED *sign; + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ /* NID_pkcs7_enveloped */ PKCS7_ENVELOPE *enveloped; /* NID_pkcs7_signedAndEnveloped */ @@ -341,13 +344,13 @@ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, const EVP_MD *dgst); int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); -int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); -int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); int PKCS7_content_new(PKCS7 *p7, int nid); int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, - X509 *x509); + X509 *signer); BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/ssl.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/ssl.h index 3df725c56d6c5e..7e3d89c7ef3dc9 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/ssl.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/ssl.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/ssl.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -24,6 +24,7 @@ # endif # include +# include # include # include # include @@ -42,6 +43,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -231,10 +235,8 @@ typedef struct ssl_cipher_st SSL_CIPHER; typedef struct ssl_session_st SSL_SESSION; typedef struct tls_sigalgs_st TLS_SIGALGS; typedef struct ssl_conf_ctx_st SSL_CONF_CTX; -typedef struct ssl_comp_st SSL_COMP; STACK_OF(SSL_CIPHER); -STACK_OF(SSL_COMP); /* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ typedef struct srtp_protection_profile_st { @@ -278,28 +280,31 @@ typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, /* Extension context codes */ /* This extension is only allowed in TLS */ -#define SSL_EXT_TLS_ONLY 0x0001 +#define SSL_EXT_TLS_ONLY 0x00001 /* This extension is only allowed in DTLS */ -#define SSL_EXT_DTLS_ONLY 0x0002 +#define SSL_EXT_DTLS_ONLY 0x00002 /* Some extensions may be allowed in DTLS but we don't implement them for it */ -#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 /* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ -#define SSL_EXT_SSL3_ALLOWED 0x0008 +#define SSL_EXT_SSL3_ALLOWED 0x00008 /* Extension is only defined for TLS1.2 and below */ -#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 /* Extension is only defined for TLS1.3 and above */ -#define SSL_EXT_TLS1_3_ONLY 0x0020 +#define SSL_EXT_TLS1_3_ONLY 0x00020 /* Ignore this extension during parsing if we are resuming */ -#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 -#define SSL_EXT_CLIENT_HELLO 0x0080 +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 /* Really means TLS1.2 or below */ -#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 -#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 -#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 -#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 -#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 -#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 -#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 /* Typedefs for handling custom extensions */ @@ -404,7 +409,7 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); */ # define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_BIT(22) /* - * If set, a server will allow a client to issue a SSLv3.0 version + * If set, a server will allow a client to issue an SSLv3.0 version * number as latest version supported in the premaster secret, even when * TLSv1.0 (version 3.1) was announced in the client hello. Normally * this is forbidden to prevent version rollback attacks. @@ -430,6 +435,19 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); * interoperability with CryptoPro CSP 3.x */ # define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +# define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +# define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) + /* Enable KTLS TX zerocopy on Linux */ +# define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) + +#define SSL_OP_PREFER_NO_DHE_KEX SSL_OP_BIT(35) /* * Option "collections." @@ -574,6 +592,8 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); # define CERT_PKEY_CERT_TYPE 0x400 /* Cert chain suitable to Suite B */ # define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +# define CERT_PKEY_RPK 0x1000 # define SSL_CONF_FLAG_CMDLINE 0x1 # define SSL_CONF_FLAG_FILE 0x2 @@ -965,6 +985,7 @@ uint32_t SSL_get_recv_max_early_data(const SSL *s); # include /* This is mostly sslv3 with a few tweaks */ # include /* Datagram TLS */ # include /* Support for the use_srtp extension */ +# include #ifdef __cplusplus extern "C" { @@ -1000,32 +1021,6 @@ SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) #define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) #define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) #define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) -SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) -#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) -#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) -#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) -#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) -#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) -#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) -#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) -#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) -#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) -#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) -#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) /* compatibility */ @@ -1066,6 +1061,7 @@ typedef enum { DTLS_ST_CR_HELLO_VERIFY_REQUEST, TLS_ST_CR_SRVR_HELLO, TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, TLS_ST_CR_CERT_STATUS, TLS_ST_CR_KEY_EXCH, TLS_ST_CR_CERT_REQ, @@ -1075,6 +1071,7 @@ typedef enum { TLS_ST_CR_FINISHED, TLS_ST_CW_CLNT_HELLO, TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, TLS_ST_CW_KEY_EXCH, TLS_ST_CW_CERT_VRFY, TLS_ST_CW_CHANGE, @@ -1085,10 +1082,12 @@ typedef enum { DTLS_ST_SW_HELLO_VERIFY_REQUEST, TLS_ST_SW_SRVR_HELLO, TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, TLS_ST_SW_KEY_EXCH, TLS_ST_SW_CERT_REQ, TLS_ST_SW_SRVR_DONE, TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, TLS_ST_SR_KEY_EXCH, TLS_ST_SR_CERT_VRFY, TLS_ST_SR_NEXT_PROTO, @@ -1380,9 +1379,13 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_CTRL_GET_SIGNATURE_NID 132 # define SSL_CTRL_GET_TMP_KEY 133 # define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +# define SSL_CTRL_GET_IANA_GROUPS 135 # define SSL_CTRL_SET_RETRY_VERIFY 136 # define SSL_CTRL_GET_VERIFY_CERT_STORE 137 # define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +# define SSL_CTRL_GET0_IMPLEMENTED_GROUPS 139 +# define SSL_CTRL_GET_SIGNATURE_NAME 140 +# define SSL_CTRL_GET_PEER_SIGNATURE_NAME 141 # define SSL_CERT_SET_FIRST 1 # define SSL_CERT_SET_NEXT 2 # define SSL_CERT_SET_SERVER 3 @@ -1485,10 +1488,15 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get1_groups(s, glist) \ SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_IANA_GROUPS,0,(uint16_t **)(plst)) # define SSL_CTX_set1_groups(ctx, glist, glistlen) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) # define SSL_CTX_set1_groups_list(ctx, s) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s)) +# define SSL_CTX_get0_implemented_groups(ctx, all, out) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET0_IMPLEMENTED_GROUPS, all, \ + (STACK_OF(OPENSSL_CSTRING) *)(out)) # define SSL_set1_groups(s, glist, glistlen) \ SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist)) # define SSL_set1_groups_list(s, str) \ @@ -1520,8 +1528,12 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) (char *)(clist)) # define SSL_set1_client_certificate_types(s, clist, clistlen) \ SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist)) +# define SSL_get0_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn) +# define SSL_get0_peer_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_peer_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) # define SSL_get_peer_tmp_key(s, pk) \ @@ -1549,6 +1561,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get_max_proto_version(s) \ SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +const char *SSL_get0_group_name(SSL *s); const char *SSL_group_to_name(SSL *s, int id); /* Backwards compatibility, original 1.1.0 names */ @@ -1613,7 +1626,11 @@ void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); __owur int SSL_want(const SSL *s); __owur int SSL_clear(SSL *s); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()") void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); +#endif +void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm); __owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); __owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); @@ -1725,13 +1742,21 @@ __owur const char *SSL_state_string(const SSL *s); __owur const char *SSL_rstate_string(const SSL *s); __owur const char *SSL_state_string_long(const SSL *s); __owur const char *SSL_rstate_string_long(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_get_time_ex()") __owur long SSL_SESSION_get_time(const SSL_SESSION *s); +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_set_time_ex()") __owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +#endif __owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); __owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); __owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); __owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); +__owur time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s); +__owur time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t); + __owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); __owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, @@ -1783,6 +1808,9 @@ __owur int SSL_has_matching_session_id(const SSL *s, unsigned int id_len); SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); # ifdef OPENSSL_X509_H __owur X509 *SSL_get0_peer_certificate(const SSL *s); @@ -1840,6 +1868,8 @@ __owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, SSL *SSL_new(SSL_CTX *ctx); int SSL_up_ref(SSL *s); int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); __owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, unsigned int sid_ctx_len); @@ -1848,8 +1878,8 @@ __owur int SSL_set_purpose(SSL *ssl, int purpose); __owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); __owur int SSL_set_trust(SSL *ssl, int trust); -__owur int SSL_set1_host(SSL *s, const char *hostname); -__owur int SSL_add1_host(SSL *s, const char *hostname); +__owur int SSL_set1_host(SSL *s, const char *host); +__owur int SSL_add1_host(SSL *s, const char *host); __owur const char *SSL_get0_peername(SSL *s); void SSL_set_hostflags(SSL *s, unsigned int flags); @@ -1924,6 +1954,11 @@ OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg); void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, void *arg); +typedef int (*SSL_new_pending_conn_cb_fn) (SSL_CTX *ctx, SSL *new_ssl, + void *arg); +void SSL_CTX_set_new_pending_conn_cb(SSL_CTX *c, SSL_new_pending_conn_cb_fn cb, + void *arg); + int SSL_client_hello_isv2(SSL *s); unsigned int SSL_client_hello_get0_legacy_version(SSL *s); size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); @@ -1932,6 +1967,8 @@ size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); size_t SSL_client_hello_get0_compression_methods(SSL *s, const unsigned char **out); int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); int SSL_client_hello_get0_ext(SSL *s, unsigned int type, const unsigned char **out, size_t *outlen); @@ -1978,6 +2015,12 @@ long SSL_callback_ctrl(SSL *, int, void (*)(void)); long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); +# define SSL_WRITE_FLAG_CONCLUDE (1U << 0) + +__owur int SSL_write_ex2(SSL *s, const void *buf, size_t num, + uint64_t flags, + size_t *written); + # define SSL_EARLY_DATA_NOT_SENT 0 # define SSL_EARLY_DATA_REJECTED 1 # define SSL_EARLY_DATA_ACCEPTED 2 @@ -1986,6 +2029,7 @@ __owur int SSL_get_early_data_status(const SSL *s); __owur int SSL_get_error(const SSL *s, int ret_code); __owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); /* This sets the 'default' SSL version that SSL_new() will create */ # ifndef OPENSSL_NO_DEPRECATED_3_0 @@ -2281,6 +2325,8 @@ void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); +int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size, + size_t hs_block_size); int SSL_set_record_padding_callback(SSL *ssl, size_t (*cb) (SSL *ssl, int type, @@ -2288,12 +2334,255 @@ int SSL_set_record_padding_callback(SSL *ssl, void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); void *SSL_get_record_padding_callback_arg(const SSL *ssl); int SSL_set_block_padding(SSL *ssl, size_t block_size); - +int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size, + size_t hs_block_size); int SSL_set_num_tickets(SSL *s, size_t num_tickets); size_t SSL_get_num_tickets(const SSL *s); int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +__owur int SSL_is_listener(SSL *ssl); +__owur SSL *SSL_get0_listener(SSL *s); +#define SSL_LISTENER_FLAG_NO_VALIDATE (1UL << 1) +__owur SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags); +__owur SSL *SSL_new_listener_from(SSL *ssl, uint64_t flags); +__owur SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags); +#define SSL_ACCEPT_CONNECTION_NO_BLOCK (1UL << 0) +__owur SSL *SSL_accept_connection(SSL *ssl, uint64_t flags); +__owur size_t SSL_get_accept_connection_queue_len(SSL *ssl); +__owur int SSL_listen(SSL *ssl); + +__owur int SSL_is_domain(SSL *s); +__owur SSL *SSL_get0_domain(SSL *s); +__owur SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags); + +#define SSL_DOMAIN_FLAG_SINGLE_THREAD (1U << 0) +#define SSL_DOMAIN_FLAG_MULTI_THREAD (1U << 1) +#define SSL_DOMAIN_FLAG_THREAD_ASSISTED (1U << 2) +#define SSL_DOMAIN_FLAG_BLOCKING (1U << 3) +#define SSL_DOMAIN_FLAG_LEGACY_BLOCKING (1U << 4) + +__owur int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t domain_flags); +__owur int SSL_CTX_get_domain_flags(const SSL_CTX *ctx, uint64_t *domain_flags); +__owur int SSL_get_domain_flags(const SSL *ssl, uint64_t *domain_flags); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +# ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +# endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + +# define SSL_VALUE_CLASS_GENERIC 0 +# define SSL_VALUE_CLASS_FEATURE_REQUEST 1 +# define SSL_VALUE_CLASS_FEATURE_PEER_REQUEST 2 +# define SSL_VALUE_CLASS_FEATURE_NEGOTIATED 3 + +# define SSL_VALUE_NONE 0 +# define SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL 1 +# define SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL 2 +# define SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL 3 +# define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL 4 +# define SSL_VALUE_QUIC_IDLE_TIMEOUT 5 +# define SSL_VALUE_EVENT_HANDLING_MODE 6 +# define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7 +# define SSL_VALUE_STREAM_WRITE_BUF_USED 8 +# define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9 + +# define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0 +# define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1 +# define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT 2 + +int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v); +int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v); + +# define SSL_get_generic_value_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_set_generic_value_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_get_feature_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_set_feature_request_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_get_feature_peer_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, (id), (v)) +# define SSL_get_feature_negotiated_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_NEGOTIATED, (id), (v)) + +# define SSL_get_quic_stream_bidi_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_bidi_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, \ + (value)) + +# define SSL_get_event_handling_mode(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) +# define SSL_set_event_handling_mode(ssl, value) \ + SSL_set_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) + +# define SSL_get_stream_write_buf_size(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_SIZE, \ + (value)) +# define SSL_get_stream_write_buf_used(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_USED, \ + (value)) +# define SSL_get_stream_write_buf_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_AVAIL, \ + (value)) + +# define SSL_POLL_EVENT_NONE 0 + +# define SSL_POLL_EVENT_F (1U << 0) /* F (Failure) */ +# define SSL_POLL_EVENT_EL (1U << 1) /* EL (Exception on Listener) */ +# define SSL_POLL_EVENT_EC (1U << 2) /* EC (Exception on Conn) */ +# define SSL_POLL_EVENT_ECD (1U << 3) /* ECD (Exception on Conn Drained) */ +# define SSL_POLL_EVENT_ER (1U << 4) /* ER (Exception on Read) */ +# define SSL_POLL_EVENT_EW (1U << 5) /* EW (Exception on Write) */ +# define SSL_POLL_EVENT_R (1U << 6) /* R (Readable) */ +# define SSL_POLL_EVENT_W (1U << 7) /* W (Writable) */ +# define SSL_POLL_EVENT_IC (1U << 8) /* IC (Incoming Connection) */ +# define SSL_POLL_EVENT_ISB (1U << 9) /* ISB (Incoming Stream: Bidi) */ +# define SSL_POLL_EVENT_ISU (1U << 10) /* ISU (Incoming Stream: Uni) */ +# define SSL_POLL_EVENT_OSB (1U << 11) /* OSB (Outgoing Stream: Bidi) */ +# define SSL_POLL_EVENT_OSU (1U << 12) /* OSU (Outgoing Stream: Uni) */ + +# define SSL_POLL_EVENT_RW (SSL_POLL_EVENT_R | SSL_POLL_EVENT_W) +# define SSL_POLL_EVENT_RE (SSL_POLL_EVENT_R | SSL_POLL_EVENT_ER) +# define SSL_POLL_EVENT_WE (SSL_POLL_EVENT_W | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_RWE (SSL_POLL_EVENT_RE | SSL_POLL_EVENT_WE) +# define SSL_POLL_EVENT_E (SSL_POLL_EVENT_EL | SSL_POLL_EVENT_EC \ + | SSL_POLL_EVENT_ER | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_IS (SSL_POLL_EVENT_ISB | SSL_POLL_EVENT_ISU) +# define SSL_POLL_EVENT_ISE (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_EC) +# define SSL_POLL_EVENT_I (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_IC) +# define SSL_POLL_EVENT_OS (SSL_POLL_EVENT_OSB | SSL_POLL_EVENT_OSU) +# define SSL_POLL_EVENT_OSE (SSL_POLL_EVENT_OS | SSL_POLL_EVENT_EC) + +typedef struct ssl_poll_item_st { + BIO_POLL_DESCRIPTOR desc; + uint64_t events, revents; +} SSL_POLL_ITEM; + +# define SSL_POLL_FLAG_NO_HANDLE_EVENTS (1U << 0) + +__owur int SSL_poll(SSL_POLL_ITEM *items, + size_t num_items, + size_t stride, + const struct timeval *timeout, + uint64_t flags, + size_t *result_count); + +static ossl_inline ossl_unused BIO_POLL_DESCRIPTOR +SSL_as_poll_descriptor(SSL *s) +{ + BIO_POLL_DESCRIPTOR d; + + d.type = BIO_POLL_DESCRIPTOR_TYPE_SSL; + d.value.ssl = s; + return d; +} + # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define SSL_cache_hit(s) SSL_session_reused(s) # endif @@ -2593,6 +2882,51 @@ void SSL_set_allow_early_data_cb(SSL *s, const char *OSSL_default_cipher_list(void); const char *OSSL_default_ciphersuites(void); +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + +/* + * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used. + */ +# define OSSL_RECORD_PROTECTION_LEVEL_NONE 0 +# define OSSL_RECORD_PROTECTION_LEVEL_EARLY 1 +# define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE 2 +# define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3 + +int SSL_set_quic_tls_cbs(SSL *s, const OSSL_DISPATCH *qtdis, void *arg); +int SSL_set_quic_tls_transport_params(SSL *s, + const unsigned char *params, + size_t params_len); + +int SSL_set_quic_tls_early_data_enabled(SSL *s, int enabled); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/x509.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/x509.h index 1f7755e5b69c75..d013458c226461 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/x509.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/x509.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -40,6 +40,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -162,16 +165,24 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) # define X509_FILETYPE_ASN1 2 # define X509_FILETYPE_DEFAULT 3 -# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 -# define X509v3_KU_NON_REPUDIATION 0x0040 -# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 -# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 -# define X509v3_KU_KEY_AGREEMENT 0x0008 -# define X509v3_KU_KEY_CERT_SIGN 0x0004 -# define X509v3_KU_CRL_SIGN 0x0002 -# define X509v3_KU_ENCIPHER_ONLY 0x0001 -# define X509v3_KU_DECIPHER_ONLY 0x8000 -# define X509v3_KU_UNDEF 0xffff +/*- + * : + * The KeyUsage BITSTRING is treated as a little-endian integer, hence bit `0` + * is 0x80, while bit `7` is 0x01 (the LSB of the integer value), bit `8` is + * then the MSB of the second octet, or 0x8000. + */ +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 /* (0) */ +# define X509v3_KU_NON_REPUDIATION 0x0040 /* (1) */ +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 /* (2) */ +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 /* (3) */ +# define X509v3_KU_KEY_AGREEMENT 0x0008 /* (4) */ +# define X509v3_KU_KEY_CERT_SIGN 0x0004 /* (5) */ +# define X509v3_KU_CRL_SIGN 0x0002 /* (6) */ +# define X509v3_KU_ENCIPHER_ONLY 0x0001 /* (7) */ +# define X509v3_KU_DECIPHER_ONLY 0x8000 /* (8) */ +# ifndef OPENSSL_NO_DEPRECATED_3_4 +# define X509v3_KU_UNDEF 0xffff /* vestigial, not used */ +# endif struct X509_algor_st { ASN1_OBJECT *algorithm; @@ -462,7 +473,12 @@ typedef struct PBKDF2PARAM_st { X509_ALGOR *prf; } PBKDF2PARAM; -#ifndef OPENSSL_NO_SCRYPT +typedef struct { + X509_ALGOR *keyDerivationFunc; + X509_ALGOR *messageAuthScheme; +} PBMAC1PARAM; + +# ifndef OPENSSL_NO_SCRYPT typedef struct SCRYPT_PARAMS_st { ASN1_OCTET_STRING *salt; ASN1_INTEGER *costParameter; @@ -470,7 +486,7 @@ typedef struct SCRYPT_PARAMS_st { ASN1_INTEGER *parallelizationParameter; ASN1_INTEGER *keyLength; } SCRYPT_PARAMS; -#endif +# endif #ifdef __cplusplus } @@ -603,6 +619,8 @@ EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); # endif @@ -651,6 +669,8 @@ EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); DECLARE_ASN1_DUP_FUNCTION(X509) @@ -884,12 +904,12 @@ int X509_REQ_get_signature_nid(const X509_REQ *req); int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); -EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); int X509_REQ_extension_nid(int nid); int *X509_REQ_get_extension_nids(void); void X509_REQ_set_extension_nids(int *nids); -STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(OSSL_FUTURE_CONST X509_REQ *req); int X509_REQ_add_extensions_nid(X509_REQ *req, const STACK_OF(X509_EXTENSION) *exts, int nid); int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); @@ -950,13 +970,14 @@ X509_REVOKED_get0_extensions(const X509_REVOKED *r); X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); -int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); -int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey); +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); int X509_chain_check_suiteb(int *perror_depth, X509 *x, STACK_OF(X509) *chain, unsigned long flags); int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); @@ -1077,6 +1098,8 @@ X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, X509_EXTENSION *ex, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_extensions(STACK_OF(X509_EXTENSION) **target, + const STACK_OF(X509_EXTENSION) *exts); int X509_get_ext_count(const X509 *x); int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); @@ -1198,9 +1221,10 @@ X509 *X509_find_by_subject(STACK_OF(X509) *sk, const X509_NAME *name); DECLARE_ASN1_FUNCTIONS(PBEPARAM) DECLARE_ASN1_FUNCTIONS(PBE2PARAM) DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) -#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(PBMAC1PARAM) +# ifndef OPENSSL_NO_SCRYPT DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) -#endif +# endif int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, const unsigned char *salt, int saltlen); @@ -1237,6 +1261,7 @@ X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, int prf_nid, int keylen, OSSL_LIB_CTX *libctx); +PBKDF2PARAM *PBMAC1_get1_pbkdf2_param(const X509_ALGOR *macalg); /* PKCS#8 utilities */ DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) @@ -1262,6 +1287,8 @@ int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len); +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, int ptype, void *pval, unsigned char *penc, int penclen); diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/x509_acert.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/x509_acert.h new file mode 100644 index 00000000000000..9dde625677f9a9 --- /dev/null +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/x509_acert.h @@ -0,0 +1,294 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/x509_acert.h.in + * + * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_X509_ACERT_H +# define OPENSSL_X509_ACERT_H +# pragma once + +# include +# include +# include + +typedef struct X509_acert_st X509_ACERT; +typedef struct X509_acert_info_st X509_ACERT_INFO; +typedef struct ossl_object_digest_info_st OSSL_OBJECT_DIGEST_INFO; +typedef struct ossl_issuer_serial_st OSSL_ISSUER_SERIAL; +typedef struct X509_acert_issuer_v2form_st X509_ACERT_ISSUER_V2FORM; + +DECLARE_ASN1_FUNCTIONS(X509_ACERT) +DECLARE_ASN1_DUP_FUNCTION(X509_ACERT) +DECLARE_ASN1_ITEM(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_OBJECT_DIGEST_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_ISSUER_SERIAL) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_ISSUER_V2FORM) + +# ifndef OPENSSL_NO_STDIO +X509_ACERT *d2i_X509_ACERT_fp(FILE *fp, X509_ACERT **acert); +int i2d_X509_ACERT_fp(FILE *fp, const X509_ACERT *acert); +# endif + +DECLARE_PEM_rw(X509_ACERT, X509_ACERT) + +X509_ACERT *d2i_X509_ACERT_bio(BIO *bp, X509_ACERT **acert); +int i2d_X509_ACERT_bio(BIO *bp, const X509_ACERT *acert); + +int X509_ACERT_sign(X509_ACERT *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_ACERT_sign_ctx(X509_ACERT *x, EVP_MD_CTX *ctx); +int X509_ACERT_verify(X509_ACERT *a, EVP_PKEY *r); + +# define X509_ACERT_VERSION_2 1 + +const GENERAL_NAMES *X509_ACERT_get0_holder_entityName(const X509_ACERT *x); +const OSSL_ISSUER_SERIAL *X509_ACERT_get0_holder_baseCertId(const X509_ACERT *x); +const OSSL_OBJECT_DIGEST_INFO * X509_ACERT_get0_holder_digest(const X509_ACERT *x); +const X509_NAME *X509_ACERT_get0_issuerName(const X509_ACERT *x); +long X509_ACERT_get_version(const X509_ACERT *x); +void X509_ACERT_get0_signature(const X509_ACERT *x, + const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_ACERT_get_signature_nid(const X509_ACERT *x); +const X509_ALGOR *X509_ACERT_get0_info_sigalg(const X509_ACERT *x); +const ASN1_INTEGER *X509_ACERT_get0_serialNumber(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notBefore(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notAfter(const X509_ACERT *x); +const ASN1_BIT_STRING *X509_ACERT_get0_issuerUID(const X509_ACERT *x); + +int X509_ACERT_print(BIO *bp, X509_ACERT *x); +int X509_ACERT_print_ex(BIO *bp, X509_ACERT *x, unsigned long nmflags, + unsigned long cflag); + +int X509_ACERT_get_attr_count(const X509_ACERT *x); +int X509_ACERT_get_attr_by_NID(const X509_ACERT *x, int nid, int lastpos); +int X509_ACERT_get_attr_by_OBJ(const X509_ACERT *x, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_ACERT_get_attr(const X509_ACERT *x, int loc); +X509_ATTRIBUTE *X509_ACERT_delete_attr(X509_ACERT *x, int loc); + +void *X509_ACERT_get_ext_d2i(const X509_ACERT *x, int nid, int *crit, int *idx); +int X509_ACERT_add1_ext_i2d(X509_ACERT *x, int nid, void *value, int crit, + unsigned long flags); +const STACK_OF(X509_EXTENSION) *X509_ACERT_get0_extensions(const X509_ACERT *x); + +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY 0 +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY_CERT 1 +# define OSSL_OBJECT_DIGEST_INFO_OTHER 2 /* must not be used in RFC 5755 profile */ +int X509_ACERT_set_version(X509_ACERT *x, long version); +void X509_ACERT_set0_holder_entityName(X509_ACERT *x, GENERAL_NAMES *name); +void X509_ACERT_set0_holder_baseCertId(X509_ACERT *x, OSSL_ISSUER_SERIAL *isss); +void X509_ACERT_set0_holder_digest(X509_ACERT *x, + OSSL_OBJECT_DIGEST_INFO *dinfo); + +int X509_ACERT_add1_attr(X509_ACERT *x, X509_ATTRIBUTE *attr); +int X509_ACERT_add1_attr_by_OBJ(X509_ACERT *x, const ASN1_OBJECT *obj, + int type, const void *bytes, int len); +int X509_ACERT_add1_attr_by_NID(X509_ACERT *x, int nid, int type, + const void *bytes, int len); +int X509_ACERT_add1_attr_by_txt(X509_ACERT *x, const char *attrname, int type, + const unsigned char *bytes, int len); +int X509_ACERT_add_attr_nconf(CONF *conf, const char *section, + X509_ACERT *acert); + +int X509_ACERT_set1_issuerName(X509_ACERT *x, const X509_NAME *name); +int X509_ACERT_set1_serialNumber(X509_ACERT *x, const ASN1_INTEGER *serial); +int X509_ACERT_set1_notBefore(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); +int X509_ACERT_set1_notAfter(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); + +void OSSL_OBJECT_DIGEST_INFO_get0_digest(const OSSL_OBJECT_DIGEST_INFO *o, + int *digestedObjectType, + const X509_ALGOR **digestAlgorithm, + const ASN1_BIT_STRING **digest); + +int OSSL_OBJECT_DIGEST_INFO_set1_digest(OSSL_OBJECT_DIGEST_INFO *o, + int digestedObjectType, + X509_ALGOR *digestAlgorithm, + ASN1_BIT_STRING *digest); + +const X509_NAME *OSSL_ISSUER_SERIAL_get0_issuer(const OSSL_ISSUER_SERIAL *isss); +const ASN1_INTEGER *OSSL_ISSUER_SERIAL_get0_serial(const OSSL_ISSUER_SERIAL *isss); +const ASN1_BIT_STRING *OSSL_ISSUER_SERIAL_get0_issuerUID(const OSSL_ISSUER_SERIAL *isss); + +int OSSL_ISSUER_SERIAL_set1_issuer(OSSL_ISSUER_SERIAL *isss, + const X509_NAME *issuer); +int OSSL_ISSUER_SERIAL_set1_serial(OSSL_ISSUER_SERIAL *isss, + const ASN1_INTEGER *serial); +int OSSL_ISSUER_SERIAL_set1_issuerUID(OSSL_ISSUER_SERIAL *isss, + const ASN1_BIT_STRING *uid); + +# define OSSL_IETFAS_OCTETS 0 +# define OSSL_IETFAS_OID 1 +# define OSSL_IETFAS_STRING 2 + +typedef struct OSSL_IETF_ATTR_SYNTAX_VALUE_st OSSL_IETF_ATTR_SYNTAX_VALUE; +typedef struct OSSL_IETF_ATTR_SYNTAX_st OSSL_IETF_ATTR_SYNTAX; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_value(sk, idx) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new(cmp) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_null() ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (n)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete(sk, i) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (i))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete_ptr(sk, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_pop(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_shift(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_shift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk),ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), (idx)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set(sk, idx, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_set(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), pnum) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_dup(sk) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_copyfunc_type(copyfunc), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set_cmp_func(sk, cmp) ((sk_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) + + +DECLARE_ASN1_ITEM(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX) + +const GENERAL_NAMES * +OSSL_IETF_ATTR_SYNTAX_get0_policyAuthority(const OSSL_IETF_ATTR_SYNTAX *a); +void OSSL_IETF_ATTR_SYNTAX_set0_policyAuthority(OSSL_IETF_ATTR_SYNTAX *a, + GENERAL_NAMES *names); + +int OSSL_IETF_ATTR_SYNTAX_get_value_num(const OSSL_IETF_ATTR_SYNTAX *a); +void *OSSL_IETF_ATTR_SYNTAX_get0_value(const OSSL_IETF_ATTR_SYNTAX *a, + int ind, int *type); +int OSSL_IETF_ATTR_SYNTAX_add1_value(OSSL_IETF_ATTR_SYNTAX *a, int type, + void *data); +int OSSL_IETF_ATTR_SYNTAX_print(BIO *bp, OSSL_IETF_ATTR_SYNTAX *a, int indent); + +struct TARGET_CERT_st { + OSSL_ISSUER_SERIAL *targetCertificate; + GENERAL_NAME *targetName; + OSSL_OBJECT_DIGEST_INFO *certDigestInfo; +}; + +typedef struct TARGET_CERT_st OSSL_TARGET_CERT; + +# define OSSL_TGT_TARGET_NAME 0 +# define OSSL_TGT_TARGET_GROUP 1 +# define OSSL_TGT_TARGET_CERT 2 + +typedef struct TARGET_st { + int type; + union { + GENERAL_NAME *targetName; + GENERAL_NAME *targetGroup; + OSSL_TARGET_CERT *targetCert; + } choice; +} OSSL_TARGET; + +typedef STACK_OF(OSSL_TARGET) OSSL_TARGETS; +typedef STACK_OF(OSSL_TARGETS) OSSL_TARGETING_INFORMATION; + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGET, OSSL_TARGET, OSSL_TARGET) +#define sk_OSSL_TARGET_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_value(sk, idx) ((OSSL_TARGET *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGET_sk_type(sk), (idx))) +#define sk_OSSL_TARGET_new(cmp) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new(ossl_check_OSSL_TARGET_compfunc_type(cmp))) +#define sk_OSSL_TARGET_new_null() ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGET_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGET_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGET_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGET_sk_type(sk), (n)) +#define sk_OSSL_TARGET_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_delete(sk, i) ((OSSL_TARGET *)OPENSSL_sk_delete(ossl_check_OSSL_TARGET_sk_type(sk), (i))) +#define sk_OSSL_TARGET_delete_ptr(sk, ptr) ((OSSL_TARGET *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_pop(sk) ((OSSL_TARGET *)OPENSSL_sk_pop(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_shift(sk) ((OSSL_TARGET *)OPENSSL_sk_shift(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGET_sk_type(sk),ossl_check_OSSL_TARGET_freefunc_type(freefunc)) +#define sk_OSSL_TARGET_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), (idx)) +#define sk_OSSL_TARGET_set(sk, idx, ptr) ((OSSL_TARGET *)OPENSSL_sk_set(ossl_check_OSSL_TARGET_sk_type(sk), (idx), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), pnum) +#define sk_OSSL_TARGET_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_dup(sk) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_copyfunc_type(copyfunc), ossl_check_OSSL_TARGET_freefunc_type(freefunc))) +#define sk_OSSL_TARGET_set_cmp_func(sk, cmp) ((sk_OSSL_TARGET_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGETS, OSSL_TARGETS, OSSL_TARGETS) +#define sk_OSSL_TARGETS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_value(sk, idx) ((OSSL_TARGETS *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGETS_sk_type(sk), (idx))) +#define sk_OSSL_TARGETS_new(cmp) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new(ossl_check_OSSL_TARGETS_compfunc_type(cmp))) +#define sk_OSSL_TARGETS_new_null() ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGETS_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGETS_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGETS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGETS_sk_type(sk), (n)) +#define sk_OSSL_TARGETS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_delete(sk, i) ((OSSL_TARGETS *)OPENSSL_sk_delete(ossl_check_OSSL_TARGETS_sk_type(sk), (i))) +#define sk_OSSL_TARGETS_delete_ptr(sk, ptr) ((OSSL_TARGETS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_pop(sk) ((OSSL_TARGETS *)OPENSSL_sk_pop(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_shift(sk) ((OSSL_TARGETS *)OPENSSL_sk_shift(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGETS_sk_type(sk),ossl_check_OSSL_TARGETS_freefunc_type(freefunc)) +#define sk_OSSL_TARGETS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), (idx)) +#define sk_OSSL_TARGETS_set(sk, idx, ptr) ((OSSL_TARGETS *)OPENSSL_sk_set(ossl_check_OSSL_TARGETS_sk_type(sk), (idx), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), pnum) +#define sk_OSSL_TARGETS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_dup(sk) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_copyfunc_type(copyfunc), ossl_check_OSSL_TARGETS_freefunc_type(freefunc))) +#define sk_OSSL_TARGETS_set_cmp_func(sk, cmp) ((sk_OSSL_TARGETS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_compfunc_type(cmp))) + + +DECLARE_ASN1_FUNCTIONS(OSSL_TARGET) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETS) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETING_INFORMATION) + +typedef STACK_OF(OSSL_ISSUER_SERIAL) OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL) +#define sk_OSSL_ISSUER_SERIAL_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_value(sk, idx) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_value(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), (idx))) +#define sk_OSSL_ISSUER_SERIAL_new(cmp) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) +#define sk_OSSL_ISSUER_SERIAL_new_null() ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ISSUER_SERIAL_new_reserve(cmp, n) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp), (n))) +#define sk_OSSL_ISSUER_SERIAL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (n)) +#define sk_OSSL_ISSUER_SERIAL_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_delete(sk, i) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (i))) +#define sk_OSSL_ISSUER_SERIAL_delete_ptr(sk, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_pop(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_pop(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_shift(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_shift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk),ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc)) +#define sk_OSSL_ISSUER_SERIAL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), (idx)) +#define sk_OSSL_ISSUER_SERIAL_set(sk, idx, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_set(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (idx), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), pnum) +#define sk_OSSL_ISSUER_SERIAL_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_dup(sk) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_copyfunc_type(copyfunc), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc))) +#define sk_OSSL_ISSUER_SERIAL_set_cmp_func(sk, cmp) ((sk_OSSL_ISSUER_SERIAL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) + + +#endif diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/x509_vfy.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/x509_vfy.h index 29b0e147adcab1..c9bdc3b39d685d 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/x509_vfy.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/x509_vfy.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509_vfy.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -411,6 +411,7 @@ X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ # define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 # define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 # define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +# define X509_V_ERR_RPK_UNTRUSTED 95 /* Certificate verify flags */ # ifndef OPENSSL_NO_DEPRECATED_1_1_0 @@ -491,71 +492,72 @@ int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); X509_STORE *X509_STORE_new(void); -void X509_STORE_free(X509_STORE *v); -int X509_STORE_lock(X509_STORE *ctx); -int X509_STORE_unlock(X509_STORE *ctx); -int X509_STORE_up_ref(X509_STORE *v); -STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *v); -STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *st); -STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get1_objects(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, const X509_NAME *nm); STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, const X509_NAME *nm); -int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); -int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); -int X509_STORE_set_trust(X509_STORE *ctx, int trust); -int X509_STORE_set1_param(X509_STORE *ctx, const X509_VERIFY_PARAM *pm); -X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *ctx); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); -void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); #define X509_STORE_set_verify_func(ctx, func) \ X509_STORE_set_verify((ctx),(func)) void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, X509_STORE_CTX_verify_fn verify); -X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *ctx); -void X509_STORE_set_verify_cb(X509_STORE *ctx, +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, X509_STORE_CTX_verify_cb verify_cb); # define X509_STORE_set_verify_cb_func(ctx,func) \ X509_STORE_set_verify_cb((ctx),(func)) -X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *ctx); -void X509_STORE_set_get_issuer(X509_STORE *ctx, +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, X509_STORE_CTX_get_issuer_fn get_issuer); -X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *ctx); -void X509_STORE_set_check_issued(X509_STORE *ctx, +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, X509_STORE_CTX_check_issued_fn check_issued); -X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *ctx); -void X509_STORE_set_check_revocation(X509_STORE *ctx, +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, X509_STORE_CTX_check_revocation_fn check_revocation); X509_STORE_CTX_check_revocation_fn - X509_STORE_get_check_revocation(const X509_STORE *ctx); -void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, X509_STORE_CTX_get_crl_fn get_crl); -X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *ctx); -void X509_STORE_set_check_crl(X509_STORE *ctx, +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, X509_STORE_CTX_check_crl_fn check_crl); -X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *ctx); -void X509_STORE_set_cert_crl(X509_STORE *ctx, +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, X509_STORE_CTX_cert_crl_fn cert_crl); -X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *ctx); -void X509_STORE_set_check_policy(X509_STORE *ctx, +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, X509_STORE_CTX_check_policy_fn check_policy); -X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *ctx); -void X509_STORE_set_lookup_certs(X509_STORE *ctx, +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, X509_STORE_CTX_lookup_certs_fn lookup_certs); -X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *ctx); -void X509_STORE_set_lookup_crls(X509_STORE *ctx, +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, X509_STORE_CTX_lookup_crls_fn lookup_crls); #define X509_STORE_set_lookup_crls_cb(ctx, func) \ X509_STORE_set_lookup_crls((ctx), (func)) -X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *ctx); -void X509_STORE_set_cleanup(X509_STORE *ctx, +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, X509_STORE_CTX_cleanup_fn cleanup); -X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); #define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) -int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); -void *X509_STORE_get_ex_data(const X509_STORE *ctx, int idx); +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); X509_STORE_CTX *X509_STORE_CTX_new(void); @@ -565,11 +567,14 @@ int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); void X509_STORE_CTX_free(X509_STORE_CTX *ctx); int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY* rpk); void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, @@ -579,6 +584,8 @@ X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); @@ -600,7 +607,7 @@ X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); # define X509_STORE_get1_crl X509_STORE_CTX_get1_crls #endif -X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); X509_LOOKUP_METHOD *X509_LOOKUP_file(void); X509_LOOKUP_METHOD *X509_LOOKUP_store(void); @@ -685,8 +692,8 @@ X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( const X509_LOOKUP_METHOD *method); -int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); -int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, @@ -730,23 +737,21 @@ void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); -int X509_STORE_load_file(X509_STORE *ctx, const char *file); -int X509_STORE_load_path(X509_STORE *ctx, const char *path); -int X509_STORE_load_store(X509_STORE *ctx, const char *store); -int X509_STORE_load_locations(X509_STORE *ctx, - const char *file, - const char *dir); -int X509_STORE_set_default_paths(X509_STORE *ctx); +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); -int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file, +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_store_ex(X509_STORE *ctx, const char *store, +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file, - const char *dir, OSSL_LIB_CTX *libctx, - const char *propq); -int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OSSL_LIB_CTX *libctx, - const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); #define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) @@ -764,6 +769,7 @@ X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); @@ -773,6 +779,8 @@ int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); @@ -804,6 +812,7 @@ int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, unsigned long flags); unsigned long X509_VERIFY_PARAM_get_flags(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_get_purpose(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/x509v3.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/x509v3.h index 20b67455f2061d..b8dabac35a4915 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/x509v3.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/x509v3.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509v3.h.in * - * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -146,6 +149,11 @@ typedef struct BASIC_CONSTRAINTS_st { ASN1_INTEGER *pathlen; } BASIC_CONSTRAINTS; +typedef struct OSSL_BASIC_ATTR_CONSTRAINTS_st { + int authority; + ASN1_INTEGER *pathlen; +} OSSL_BASIC_ATTR_CONSTRAINTS; + typedef struct PKEY_USAGE_PERIOD_st { ASN1_GENERALIZEDTIME *notBefore; ASN1_GENERALIZEDTIME *notAfter; @@ -198,6 +206,8 @@ typedef struct ACCESS_DESCRIPTION_st { GENERAL_NAME *location; } ACCESS_DESCRIPTION; +int GENERAL_NAME_set1_X509_NAME(GENERAL_NAME **tgt, const X509_NAME *src); + SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) #define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) #define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) @@ -294,6 +304,7 @@ typedef struct DIST_POINT_NAME_st { /* If relativename then this contains the full distribution point name */ X509_NAME *dpname; } DIST_POINT_NAME; +DECLARE_ASN1_DUP_FUNCTION(DIST_POINT_NAME) /* All existing reasons */ # define CRLDP_ALL_REASONS 0x807f @@ -659,15 +670,16 @@ struct ISSUING_DIST_POINT_st { # define EXFLAG_SAN_CRITICAL 0x80000 # define EXFLAG_NO_FINGERPRINT 0x100000 -# define KU_DIGITAL_SIGNATURE 0x0080 -# define KU_NON_REPUDIATION 0x0040 -# define KU_KEY_ENCIPHERMENT 0x0020 -# define KU_DATA_ENCIPHERMENT 0x0010 -# define KU_KEY_AGREEMENT 0x0008 -# define KU_KEY_CERT_SIGN 0x0004 -# define KU_CRL_SIGN 0x0002 -# define KU_ENCIPHER_ONLY 0x0001 -# define KU_DECIPHER_ONLY 0x8000 +/* https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3 */ +# define KU_DIGITAL_SIGNATURE X509v3_KU_DIGITAL_SIGNATURE +# define KU_NON_REPUDIATION X509v3_KU_NON_REPUDIATION +# define KU_KEY_ENCIPHERMENT X509v3_KU_KEY_ENCIPHERMENT +# define KU_DATA_ENCIPHERMENT X509v3_KU_DATA_ENCIPHERMENT +# define KU_KEY_AGREEMENT X509v3_KU_KEY_AGREEMENT +# define KU_KEY_CERT_SIGN X509v3_KU_KEY_CERT_SIGN +# define KU_CRL_SIGN X509v3_KU_CRL_SIGN +# define KU_ENCIPHER_ONLY X509v3_KU_ENCIPHER_ONLY +# define KU_DECIPHER_ONLY X509v3_KU_DECIPHER_ONLY # define NS_SSL_CLIENT 0x80 # define NS_SSL_SERVER 0x40 @@ -729,7 +741,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) #define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) - +# define X509_PURPOSE_DEFAULT_ANY 0 # define X509_PURPOSE_SSL_CLIENT 1 # define X509_PURPOSE_SSL_SERVER 2 # define X509_PURPOSE_NS_SSL_SERVER 3 @@ -739,9 +751,10 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509_PURPOSE_ANY 7 # define X509_PURPOSE_OCSP_HELPER 8 # define X509_PURPOSE_TIMESTAMP_SIGN 9 +# define X509_PURPOSE_CODE_SIGN 10 # define X509_PURPOSE_MIN 1 -# define X509_PURPOSE_MAX 9 +# define X509_PURPOSE_MAX 10 /* Flags for X509V3_EXT_print() */ @@ -767,6 +780,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509V3_ADD_SILENT 0x10 DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) +DECLARE_ASN1_FUNCTIONS(OSSL_BASIC_ATTR_CONSTRAINTS) DECLARE_ASN1_FUNCTIONS(SXNET) DECLARE_ASN1_FUNCTIONS(SXNETID) @@ -976,7 +990,6 @@ int X509V3_extensions_print(BIO *out, const char *title, int X509_check_ca(X509 *x); int X509_check_purpose(X509 *x, int id, int ca); int X509_supported_extension(X509_EXTENSION *ex); -int X509_PURPOSE_set(int *p, int purpose); int X509_check_issued(X509 *issuer, X509 *subject); int X509_check_akid(const X509 *issuer, const AUTHORITY_KEYID *akid); void X509_set_proxy_flag(X509 *x); @@ -992,22 +1005,26 @@ const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); int X509_PURPOSE_get_count(void); -X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_unused_id(OSSL_LIB_CTX *libctx); int X509_PURPOSE_get_by_sname(const char *sname); int X509_PURPOSE_get_by_id(int id); int X509_PURPOSE_add(int id, int trust, int flags, int (*ck) (const X509_PURPOSE *, const X509 *, int), const char *name, const char *sname, void *arg); +void X509_PURPOSE_cleanup(void); + +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_id(const X509_PURPOSE *); char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); -void X509_PURPOSE_cleanup(void); -int X509_PURPOSE_get_id(const X509_PURPOSE *); +int X509_PURPOSE_set(int *p, int purpose); STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); + /* Flags for X509_check_* functions */ /* @@ -1444,6 +1461,507 @@ const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( void PROFESSION_INFO_set0_registrationNumber( PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); +int OSSL_GENERAL_NAMES_print(BIO *out, GENERAL_NAMES *gens, int indent); + +typedef STACK_OF(X509_ATTRIBUTE) OSSL_ATTRIBUTES_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTES_SYNTAX) + +typedef STACK_OF(USERNOTICE) OSSL_USER_NOTICE_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_USER_NOTICE_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(USERNOTICE, USERNOTICE, USERNOTICE) +#define sk_USERNOTICE_num(sk) OPENSSL_sk_num(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_value(sk, idx) ((USERNOTICE *)OPENSSL_sk_value(ossl_check_const_USERNOTICE_sk_type(sk), (idx))) +#define sk_USERNOTICE_new(cmp) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new(ossl_check_USERNOTICE_compfunc_type(cmp))) +#define sk_USERNOTICE_new_null() ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_null()) +#define sk_USERNOTICE_new_reserve(cmp, n) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_reserve(ossl_check_USERNOTICE_compfunc_type(cmp), (n))) +#define sk_USERNOTICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_USERNOTICE_sk_type(sk), (n)) +#define sk_USERNOTICE_free(sk) OPENSSL_sk_free(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_zero(sk) OPENSSL_sk_zero(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_delete(sk, i) ((USERNOTICE *)OPENSSL_sk_delete(ossl_check_USERNOTICE_sk_type(sk), (i))) +#define sk_USERNOTICE_delete_ptr(sk, ptr) ((USERNOTICE *)OPENSSL_sk_delete_ptr(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_pop(sk) ((USERNOTICE *)OPENSSL_sk_pop(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_shift(sk) ((USERNOTICE *)OPENSSL_sk_shift(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_USERNOTICE_sk_type(sk),ossl_check_USERNOTICE_freefunc_type(freefunc)) +#define sk_USERNOTICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), (idx)) +#define sk_USERNOTICE_set(sk, idx, ptr) ((USERNOTICE *)OPENSSL_sk_set(ossl_check_USERNOTICE_sk_type(sk), (idx), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), pnum) +#define sk_USERNOTICE_sort(sk) OPENSSL_sk_sort(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_dup(sk) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_dup(ossl_check_const_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_deep_copy(ossl_check_const_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_copyfunc_type(copyfunc), ossl_check_USERNOTICE_freefunc_type(freefunc))) +#define sk_USERNOTICE_set_cmp_func(sk, cmp) ((sk_USERNOTICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_compfunc_type(cmp))) + + +typedef struct OSSL_ROLE_SPEC_CERT_ID_st { + GENERAL_NAME *roleName; + GENERAL_NAME *roleCertIssuer; + ASN1_INTEGER *roleCertSerialNumber; + GENERAL_NAMES *roleCertLocator; +} OSSL_ROLE_SPEC_CERT_ID; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID) +#define sk_OSSL_ROLE_SPEC_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_value(sk, idx) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_value(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new(cmp) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_null() ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_reserve(cmp, n) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp), (n))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (n)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete(sk, i) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (i))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete_ptr(sk, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_pop(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_shift(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_shift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk),ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), (idx)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set(sk, idx, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_set(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), pnum) +#define sk_OSSL_ROLE_SPEC_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_dup(sk) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_copyfunc_type(copyfunc), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set_cmp_func(sk, cmp) ((sk_OSSL_ROLE_SPEC_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) + + +typedef STACK_OF(OSSL_ROLE_SPEC_CERT_ID) OSSL_ROLE_SPEC_CERT_ID_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID_SYNTAX) +typedef struct OSSL_HASH_st { + X509_ALGOR *algorithmIdentifier; + ASN1_BIT_STRING *hashValue; +} OSSL_HASH; + +typedef struct OSSL_INFO_SYNTAX_POINTER_st { + GENERAL_NAMES *name; + OSSL_HASH *hash; +} OSSL_INFO_SYNTAX_POINTER; + +# define OSSL_INFO_SYNTAX_TYPE_CONTENT 0 +# define OSSL_INFO_SYNTAX_TYPE_POINTER 1 + +typedef struct OSSL_INFO_SYNTAX_st { + int type; + union { + ASN1_STRING *content; + OSSL_INFO_SYNTAX_POINTER *pointer; + } choice; +} OSSL_INFO_SYNTAX; + +typedef struct OSSL_PRIVILEGE_POLICY_ID_st { + ASN1_OBJECT *privilegePolicy; + OSSL_INFO_SYNTAX *privPolSyntax; +} OSSL_PRIVILEGE_POLICY_ID; + +typedef struct OSSL_ATTRIBUTE_DESCRIPTOR_st { + ASN1_OBJECT *identifier; + ASN1_STRING *attributeSyntax; + ASN1_UTF8STRING *name; + ASN1_UTF8STRING *description; + OSSL_PRIVILEGE_POLICY_ID *dominationRule; +} OSSL_ATTRIBUTE_DESCRIPTOR; + +DECLARE_ASN1_FUNCTIONS(OSSL_HASH) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX_POINTER) +DECLARE_ASN1_FUNCTIONS(OSSL_PRIVILEGE_POLICY_ID) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_DESCRIPTOR) + +typedef struct OSSL_TIME_SPEC_ABSOLUTE_st { + ASN1_GENERALIZEDTIME *startTime; + ASN1_GENERALIZEDTIME *endTime; +} OSSL_TIME_SPEC_ABSOLUTE; + +typedef struct OSSL_DAY_TIME_st { + ASN1_INTEGER *hour; + ASN1_INTEGER *minute; + ASN1_INTEGER *second; +} OSSL_DAY_TIME; + +typedef struct OSSL_DAY_TIME_BAND_st { + OSSL_DAY_TIME *startDayTime; + OSSL_DAY_TIME *endDayTime; +} OSSL_DAY_TIME_BAND; + +# define OSSL_NAMED_DAY_TYPE_INT 0 +# define OSSL_NAMED_DAY_TYPE_BIT 1 +# define OSSL_NAMED_DAY_INT_SUN 1 +# define OSSL_NAMED_DAY_INT_MON 2 +# define OSSL_NAMED_DAY_INT_TUE 3 +# define OSSL_NAMED_DAY_INT_WED 4 +# define OSSL_NAMED_DAY_INT_THU 5 +# define OSSL_NAMED_DAY_INT_FRI 6 +# define OSSL_NAMED_DAY_INT_SAT 7 +# define OSSL_NAMED_DAY_BIT_SUN 0 +# define OSSL_NAMED_DAY_BIT_MON 1 +# define OSSL_NAMED_DAY_BIT_TUE 2 +# define OSSL_NAMED_DAY_BIT_WED 3 +# define OSSL_NAMED_DAY_BIT_THU 4 +# define OSSL_NAMED_DAY_BIT_FRI 5 +# define OSSL_NAMED_DAY_BIT_SAT 6 + +typedef struct OSSL_NAMED_DAY_st { + int type; + union { + ASN1_INTEGER *intNamedDays; + ASN1_BIT_STRING *bitNamedDays; + } choice; +} OSSL_NAMED_DAY; + +# define OSSL_TIME_SPEC_X_DAY_OF_FIRST 0 +# define OSSL_TIME_SPEC_X_DAY_OF_SECOND 1 +# define OSSL_TIME_SPEC_X_DAY_OF_THIRD 2 +# define OSSL_TIME_SPEC_X_DAY_OF_FOURTH 3 +# define OSSL_TIME_SPEC_X_DAY_OF_FIFTH 4 + +typedef struct OSSL_TIME_SPEC_X_DAY_OF_st { + int type; + union { + OSSL_NAMED_DAY *first; + OSSL_NAMED_DAY *second; + OSSL_NAMED_DAY *third; + OSSL_NAMED_DAY *fourth; + OSSL_NAMED_DAY *fifth; + } choice; +} OSSL_TIME_SPEC_X_DAY_OF; + +# define OSSL_TIME_SPEC_DAY_TYPE_INT 0 +# define OSSL_TIME_SPEC_DAY_TYPE_BIT 1 +# define OSSL_TIME_SPEC_DAY_TYPE_DAY_OF 2 +# define OSSL_TIME_SPEC_DAY_BIT_SUN 0 +# define OSSL_TIME_SPEC_DAY_BIT_MON 1 +# define OSSL_TIME_SPEC_DAY_BIT_TUE 2 +# define OSSL_TIME_SPEC_DAY_BIT_WED 3 +# define OSSL_TIME_SPEC_DAY_BIT_THU 4 +# define OSSL_TIME_SPEC_DAY_BIT_FRI 5 +# define OSSL_TIME_SPEC_DAY_BIT_SAT 6 +# define OSSL_TIME_SPEC_DAY_INT_SUN 1 +# define OSSL_TIME_SPEC_DAY_INT_MON 2 +# define OSSL_TIME_SPEC_DAY_INT_TUE 3 +# define OSSL_TIME_SPEC_DAY_INT_WED 4 +# define OSSL_TIME_SPEC_DAY_INT_THU 5 +# define OSSL_TIME_SPEC_DAY_INT_FRI 6 +# define OSSL_TIME_SPEC_DAY_INT_SAT 7 + +typedef struct OSSL_TIME_SPEC_DAY_st { + int type; + union { + STACK_OF(ASN1_INTEGER) *intDay; + ASN1_BIT_STRING *bitDay; + OSSL_TIME_SPEC_X_DAY_OF *dayOf; + } choice; +} OSSL_TIME_SPEC_DAY; + +# define OSSL_TIME_SPEC_WEEKS_TYPE_ALL 0 +# define OSSL_TIME_SPEC_WEEKS_TYPE_INT 1 +# define OSSL_TIME_SPEC_WEEKS_TYPE_BIT 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_1 0 +# define OSSL_TIME_SPEC_BIT_WEEKS_2 1 +# define OSSL_TIME_SPEC_BIT_WEEKS_3 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_4 3 +# define OSSL_TIME_SPEC_BIT_WEEKS_5 4 + +typedef struct OSSL_TIME_SPEC_WEEKS_st { + int type; + union { + ASN1_NULL *allWeeks; + STACK_OF(ASN1_INTEGER) *intWeek; + ASN1_BIT_STRING *bitWeek; + } choice; +} OSSL_TIME_SPEC_WEEKS; + +# define OSSL_TIME_SPEC_MONTH_TYPE_ALL 0 +# define OSSL_TIME_SPEC_MONTH_TYPE_INT 1 +# define OSSL_TIME_SPEC_MONTH_TYPE_BIT 2 +# define OSSL_TIME_SPEC_INT_MONTH_JAN 1 +# define OSSL_TIME_SPEC_INT_MONTH_FEB 2 +# define OSSL_TIME_SPEC_INT_MONTH_MAR 3 +# define OSSL_TIME_SPEC_INT_MONTH_APR 4 +# define OSSL_TIME_SPEC_INT_MONTH_MAY 5 +# define OSSL_TIME_SPEC_INT_MONTH_JUN 6 +# define OSSL_TIME_SPEC_INT_MONTH_JUL 7 +# define OSSL_TIME_SPEC_INT_MONTH_AUG 8 +# define OSSL_TIME_SPEC_INT_MONTH_SEP 9 +# define OSSL_TIME_SPEC_INT_MONTH_OCT 10 +# define OSSL_TIME_SPEC_INT_MONTH_NOV 11 +# define OSSL_TIME_SPEC_INT_MONTH_DEC 12 +# define OSSL_TIME_SPEC_BIT_MONTH_JAN 0 +# define OSSL_TIME_SPEC_BIT_MONTH_FEB 1 +# define OSSL_TIME_SPEC_BIT_MONTH_MAR 2 +# define OSSL_TIME_SPEC_BIT_MONTH_APR 3 +# define OSSL_TIME_SPEC_BIT_MONTH_MAY 4 +# define OSSL_TIME_SPEC_BIT_MONTH_JUN 5 +# define OSSL_TIME_SPEC_BIT_MONTH_JUL 6 +# define OSSL_TIME_SPEC_BIT_MONTH_AUG 7 +# define OSSL_TIME_SPEC_BIT_MONTH_SEP 8 +# define OSSL_TIME_SPEC_BIT_MONTH_OCT 9 +# define OSSL_TIME_SPEC_BIT_MONTH_NOV 10 +# define OSSL_TIME_SPEC_BIT_MONTH_DEC 11 + +typedef struct OSSL_TIME_SPEC_MONTH_st { + int type; + union { + ASN1_NULL *allMonths; + STACK_OF(ASN1_INTEGER) *intMonth; + ASN1_BIT_STRING *bitMonth; + } choice; +} OSSL_TIME_SPEC_MONTH; + +typedef struct OSSL_TIME_PERIOD_st { + STACK_OF(OSSL_DAY_TIME_BAND) *timesOfDay; + OSSL_TIME_SPEC_DAY *days; + OSSL_TIME_SPEC_WEEKS *weeks; + OSSL_TIME_SPEC_MONTH *months; + STACK_OF(ASN1_INTEGER) *years; +} OSSL_TIME_PERIOD; + +# define OSSL_TIME_SPEC_TIME_TYPE_ABSOLUTE 0 +# define OSSL_TIME_SPEC_TIME_TYPE_PERIODIC 1 + +typedef struct OSSL_TIME_SPEC_TIME_st { + int type; + union { + OSSL_TIME_SPEC_ABSOLUTE *absolute; + STACK_OF(OSSL_TIME_PERIOD) *periodic; + } choice; +} OSSL_TIME_SPEC_TIME; + +typedef struct OSSL_TIME_SPEC_st { + OSSL_TIME_SPEC_TIME *time; + ASN1_BOOLEAN notThisTime; + ASN1_INTEGER *timeZone; +} OSSL_TIME_SPEC; + +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME_BAND) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_WEEKS) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_MONTH) +DECLARE_ASN1_FUNCTIONS(OSSL_NAMED_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_X_DAY_OF) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_ABSOLUTE) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_PERIOD) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TIME_PERIOD, OSSL_TIME_PERIOD, OSSL_TIME_PERIOD) +#define sk_OSSL_TIME_PERIOD_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_value(sk, idx) ((OSSL_TIME_PERIOD *)OPENSSL_sk_value(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), (idx))) +#define sk_OSSL_TIME_PERIOD_new(cmp) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) +#define sk_OSSL_TIME_PERIOD_new_null() ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TIME_PERIOD_new_reserve(cmp, n) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp), (n))) +#define sk_OSSL_TIME_PERIOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (n)) +#define sk_OSSL_TIME_PERIOD_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_delete(sk, i) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (i))) +#define sk_OSSL_TIME_PERIOD_delete_ptr(sk, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_pop(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_pop(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_shift(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_shift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk),ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc)) +#define sk_OSSL_TIME_PERIOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), (idx)) +#define sk_OSSL_TIME_PERIOD_set(sk, idx, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_set(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (idx), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), pnum) +#define sk_OSSL_TIME_PERIOD_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_dup(sk) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_copyfunc_type(copyfunc), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc))) +#define sk_OSSL_TIME_PERIOD_set_cmp_func(sk, cmp) ((sk_OSSL_TIME_PERIOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND) +#define sk_OSSL_DAY_TIME_BAND_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_value(sk, idx) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_value(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), (idx))) +#define sk_OSSL_DAY_TIME_BAND_new(cmp) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) +#define sk_OSSL_DAY_TIME_BAND_new_null() ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_null()) +#define sk_OSSL_DAY_TIME_BAND_new_reserve(cmp, n) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp), (n))) +#define sk_OSSL_DAY_TIME_BAND_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (n)) +#define sk_OSSL_DAY_TIME_BAND_free(sk) OPENSSL_sk_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_delete(sk, i) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (i))) +#define sk_OSSL_DAY_TIME_BAND_delete_ptr(sk, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_pop(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_pop(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_shift(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_shift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk),ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc)) +#define sk_OSSL_DAY_TIME_BAND_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), (idx)) +#define sk_OSSL_DAY_TIME_BAND_set(sk, idx, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_set(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (idx), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), pnum) +#define sk_OSSL_DAY_TIME_BAND_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_dup(sk) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_dup(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_copyfunc_type(copyfunc), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc))) +#define sk_OSSL_DAY_TIME_BAND_set_cmp_func(sk, cmp) ((sk_OSSL_DAY_TIME_BAND_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) + + +/* Attribute Type and Value */ +typedef struct atav_st { + ASN1_OBJECT *type; + ASN1_TYPE *value; +} OSSL_ATAV; + +typedef struct ATTRIBUTE_TYPE_MAPPING_st { + ASN1_OBJECT *local; + ASN1_OBJECT *remote; +} OSSL_ATTRIBUTE_TYPE_MAPPING; + +typedef struct ATTRIBUTE_VALUE_MAPPING_st { + OSSL_ATAV *local; + OSSL_ATAV *remote; +} OSSL_ATTRIBUTE_VALUE_MAPPING; + +# define OSSL_ATTR_MAP_TYPE 0 +# define OSSL_ATTR_MAP_VALUE 1 + +typedef struct ATTRIBUTE_MAPPING_st { + int type; + union { + OSSL_ATTRIBUTE_TYPE_MAPPING *typeMappings; + OSSL_ATTRIBUTE_VALUE_MAPPING *typeValueMappings; + } choice; +} OSSL_ATTRIBUTE_MAPPING; + +typedef STACK_OF(OSSL_ATTRIBUTE_MAPPING) OSSL_ATTRIBUTE_MAPPINGS; +DECLARE_ASN1_FUNCTIONS(OSSL_ATAV) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_TYPE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_VALUE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPINGS) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING) +#define sk_OSSL_ATTRIBUTE_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_value(sk, idx) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_value(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new(cmp) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_null() ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_reserve(cmp, n) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp), (n))) +#define sk_OSSL_ATTRIBUTE_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (n)) +#define sk_OSSL_ATTRIBUTE_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete(sk, i) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (i))) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete_ptr(sk, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_pop(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_shift(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_shift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk),ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc)) +#define sk_OSSL_ATTRIBUTE_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), (idx)) +#define sk_OSSL_ATTRIBUTE_MAPPING_set(sk, idx, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_set(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), pnum) +#define sk_OSSL_ATTRIBUTE_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_dup(sk) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_copyfunc_type(copyfunc), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc))) +#define sk_OSSL_ATTRIBUTE_MAPPING_set_cmp_func(sk, cmp) ((sk_OSSL_ATTRIBUTE_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) + + +# define OSSL_AAA_ATTRIBUTE_TYPE 0 +# define OSSL_AAA_ATTRIBUTE_VALUES 1 + +typedef struct ALLOWED_ATTRIBUTES_CHOICE_st { + int type; + union { + ASN1_OBJECT *attributeType; + X509_ATTRIBUTE *attributeTypeandValues; + } choice; +} OSSL_ALLOWED_ATTRIBUTES_CHOICE; + +typedef struct ALLOWED_ATTRIBUTES_ITEM_st { + STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *attributes; + GENERAL_NAME *holderDomain; +} OSSL_ALLOWED_ATTRIBUTES_ITEM; + +typedef STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) OSSL_ALLOWED_ATTRIBUTES_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_CHOICE) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_ITEM) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) + + +typedef struct AA_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + int dp_reasons; + ASN1_BOOLEAN indirectCRL; + ASN1_BOOLEAN containsUserAttributeCerts; + ASN1_BOOLEAN containsAACerts; + ASN1_BOOLEAN containsSOAPublicKeyCerts; +} OSSL_AA_DIST_POINT; + +DECLARE_ASN1_FUNCTIONS(OSSL_AA_DIST_POINT) + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/progs.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/progs.h index be55f61503d405..1b62ec37dec130 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/include/progs.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/progs.h @@ -56,6 +56,7 @@ extern int s_client_main(int argc, char *argv[]); extern int s_server_main(int argc, char *argv[]); extern int s_time_main(int argc, char *argv[]); extern int sess_id_main(int argc, char *argv[]); +extern int skeyutl_main(int argc, char *argv[]); extern int smime_main(int argc, char *argv[]); extern int speed_main(int argc, char *argv[]); extern int spkac_main(int argc, char *argv[]); @@ -110,6 +111,7 @@ extern const OPTIONS s_client_options[]; extern const OPTIONS s_server_options[]; extern const OPTIONS s_time_options[]; extern const OPTIONS sess_id_options[]; +extern const OPTIONS skeyutl_options[]; extern const OPTIONS smime_options[]; extern const OPTIONS speed_options[]; extern const OPTIONS spkac_options[]; diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/openssl-cl.gypi b/deps/openssl/config/archs/darwin-i386-cc/asm/openssl-cl.gypi index eeb54ba669b40a..8cecd066b0884d 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/openssl-cl.gypi +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/openssl-cl.gypi @@ -82,6 +82,7 @@ 'openssl/apps/s_server.c', 'openssl/apps/s_time.c', 'openssl/apps/sess_id.c', + 'openssl/apps/skeyutl.c', 'openssl/apps/smime.c', 'openssl/apps/speed.c', 'openssl/apps/spkac.c', @@ -97,12 +98,14 @@ 'openssl/apps/lib/app_rand.c', 'openssl/apps/lib/app_x509.c', 'openssl/apps/lib/apps.c', + 'openssl/apps/lib/apps_opt_printf.c', 'openssl/apps/lib/apps_ui.c', 'openssl/apps/lib/columns.c', 'openssl/apps/lib/engine.c', 'openssl/apps/lib/engine_loader.c', 'openssl/apps/lib/fmt.c', 'openssl/apps/lib/http_server.c', + 'openssl/apps/lib/log.c', 'openssl/apps/lib/names.c', 'openssl/apps/lib/opt.c', 'openssl/apps/lib/s_cb.c', diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/openssl-fips.gypi b/deps/openssl/config/archs/darwin-i386-cc/asm/openssl-fips.gypi index 808b7f9cbf4f61..a09c8de96c8ba4 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/openssl-fips.gypi +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/openssl-fips.gypi @@ -96,14 +96,15 @@ 'openssl/crypto/evp/kem.c', 'openssl/crypto/evp/keymgmt_lib.c', 'openssl/crypto/evp/keymgmt_meth.c', - 'openssl/crypto/evp/m_sigver.c', 'openssl/crypto/evp/mac_lib.c', 'openssl/crypto/evp/mac_meth.c', 'openssl/crypto/evp/p_lib.c', 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -111,6 +112,8 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', @@ -140,6 +143,16 @@ 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -148,6 +161,7 @@ 'openssl/crypto/modes/ofb128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/property/defn_cache.c', 'openssl/crypto/property/property.c', 'openssl/crypto/property/property_parse.c', @@ -176,7 +190,23 @@ 'openssl/crypto/sha/sha256.c', 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/stack/stack.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/providers/common/der/der_rsa_sig.c', 'openssl/providers/common/bio_prov.c', 'openssl/providers/common/capabilities.c', @@ -185,6 +215,7 @@ 'openssl/providers/common/provider_util.c', 'openssl/providers/common/securitycheck.c', 'openssl/providers/common/securitycheck_fips.c', + 'openssl/providers/fips/fipsindicator.c', 'openssl/providers/fips/fipsprov.c', 'openssl/providers/fips/self_test.c', 'openssl/providers/fips/self_test_kats.c', @@ -222,6 +253,8 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -229,29 +262,39 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/cmac_prov.c', 'openssl/providers/implementations/macs/gmac_prov.c', 'openssl/providers/implementations/macs/hmac_prov.c', 'openssl/providers/implementations/macs/kmac_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', + 'openssl/providers/implementations/rands/fips_crng_test.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/signature/dsa_sig.c', 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -262,7 +305,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/fips/fips_entry.c', ], @@ -280,6 +323,7 @@ './config/archs/darwin-i386-cc/asm/crypto/des/crypt586.S', './config/archs/darwin-i386-cc/asm/crypto/des/des-586.S', './config/archs/darwin-i386-cc/asm/crypto/ec/ecp_nistz256-x86.S', + './config/archs/darwin-i386-cc/asm/crypto/params_idx.c', './config/archs/darwin-i386-cc/asm/crypto/x86cpuid.S', './config/archs/darwin-i386-cc/asm/crypto/md5/md5-586.S', './config/archs/darwin-i386-cc/asm/crypto/modes/ghash-x86.S', @@ -296,7 +340,9 @@ './config/archs/darwin-i386-cc/asm/providers/common/der/der_dsa_gen.c', './config/archs/darwin-i386-cc/asm/providers/common/der/der_ec_gen.c', './config/archs/darwin-i386-cc/asm/providers/common/der/der_ecx_gen.c', + './config/archs/darwin-i386-cc/asm/providers/common/der/der_ml_dsa_gen.c', './config/archs/darwin-i386-cc/asm/providers/common/der/der_rsa_gen.c', + './config/archs/darwin-i386-cc/asm/providers/common/der/der_slh_dsa_gen.c', './config/archs/darwin-i386-cc/asm/providers/common/der/der_wrap_gen.c', ], diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/openssl.gypi b/deps/openssl/config/archs/darwin-i386-cc/asm/openssl.gypi index 49b8dd0ee2b6ab..494e7ffed49ed2 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/openssl.gypi +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/openssl.gypi @@ -7,14 +7,15 @@ 'openssl/ssl/d1_srtp.c', 'openssl/ssl/methods.c', 'openssl/ssl/pqueue.c', + 'openssl/ssl/priority_queue.c', 'openssl/ssl/s3_enc.c', 'openssl/ssl/s3_lib.c', 'openssl/ssl/s3_msg.c', 'openssl/ssl/ssl_asn1.c', 'openssl/ssl/ssl_cert.c', + 'openssl/ssl/ssl_cert_comp.c', 'openssl/ssl/ssl_ciph.c', 'openssl/ssl/ssl_conf.c', - 'openssl/ssl/ssl_err.c', 'openssl/ssl/ssl_err_legacy.c', 'openssl/ssl/ssl_init.c', 'openssl/ssl/ssl_lib.c', @@ -31,12 +32,60 @@ 'openssl/ssl/tls13_enc.c', 'openssl/ssl/tls_depr.c', 'openssl/ssl/tls_srp.c', - 'openssl/ssl/record/dtls1_bitmap.c', + 'openssl/ssl/quic/cc_newreno.c', + 'openssl/ssl/quic/json_enc.c', + 'openssl/ssl/quic/qlog.c', + 'openssl/ssl/quic/qlog_event_helpers.c', + 'openssl/ssl/quic/quic_ackm.c', + 'openssl/ssl/quic/quic_cfq.c', + 'openssl/ssl/quic/quic_channel.c', + 'openssl/ssl/quic/quic_demux.c', + 'openssl/ssl/quic/quic_engine.c', + 'openssl/ssl/quic/quic_fc.c', + 'openssl/ssl/quic/quic_fifd.c', + 'openssl/ssl/quic/quic_impl.c', + 'openssl/ssl/quic/quic_lcidm.c', + 'openssl/ssl/quic/quic_method.c', + 'openssl/ssl/quic/quic_obj.c', + 'openssl/ssl/quic/quic_port.c', + 'openssl/ssl/quic/quic_rcidm.c', + 'openssl/ssl/quic/quic_reactor.c', + 'openssl/ssl/quic/quic_reactor_wait_ctx.c', + 'openssl/ssl/quic/quic_record_rx.c', + 'openssl/ssl/quic/quic_record_shared.c', + 'openssl/ssl/quic/quic_record_tx.c', + 'openssl/ssl/quic/quic_record_util.c', + 'openssl/ssl/quic/quic_rstream.c', + 'openssl/ssl/quic/quic_rx_depack.c', + 'openssl/ssl/quic/quic_sf_list.c', + 'openssl/ssl/quic/quic_srt_gen.c', + 'openssl/ssl/quic/quic_srtm.c', + 'openssl/ssl/quic/quic_sstream.c', + 'openssl/ssl/quic/quic_statm.c', + 'openssl/ssl/quic/quic_stream_map.c', + 'openssl/ssl/quic/quic_thread_assist.c', + 'openssl/ssl/quic/quic_tls.c', + 'openssl/ssl/quic/quic_tls_api.c', + 'openssl/ssl/quic/quic_trace.c', + 'openssl/ssl/quic/quic_tserver.c', + 'openssl/ssl/quic/quic_txp.c', + 'openssl/ssl/quic/quic_txpim.c', + 'openssl/ssl/quic/quic_types.c', + 'openssl/ssl/quic/quic_wire.c', + 'openssl/ssl/quic/quic_wire_pkt.c', + 'openssl/ssl/quic/uint_set.c', 'openssl/ssl/record/rec_layer_d1.c', 'openssl/ssl/record/rec_layer_s3.c', - 'openssl/ssl/record/ssl3_buffer.c', - 'openssl/ssl/record/ssl3_record.c', - 'openssl/ssl/record/ssl3_record_tls13.c', + 'openssl/ssl/record/methods/dtls_meth.c', + 'openssl/ssl/record/methods/ssl3_meth.c', + 'openssl/ssl/record/methods/tls13_meth.c', + 'openssl/ssl/record/methods/tls1_meth.c', + 'openssl/ssl/record/methods/tls_common.c', + 'openssl/ssl/record/methods/tls_multib.c', + 'openssl/ssl/record/methods/tlsany_meth.c', + 'openssl/ssl/rio/poll_builder.c', + 'openssl/ssl/rio/poll_immediate.c', + 'openssl/ssl/rio/rio_notifier.c', 'openssl/ssl/statem/extensions.c', 'openssl/ssl/statem/extensions_clnt.c', 'openssl/ssl/statem/extensions_cust.c', @@ -147,6 +196,7 @@ 'openssl/crypto/bio/bss_conn.c', 'openssl/crypto/bio/bss_core.c', 'openssl/crypto/bio/bss_dgram.c', + 'openssl/crypto/bio/bss_dgram_pair.c', 'openssl/crypto/bio/bss_fd.c', 'openssl/crypto/bio/bss_file.c', 'openssl/crypto/bio/bss_log.c', @@ -202,6 +252,7 @@ 'openssl/crypto/cmp/cmp_client.c', 'openssl/crypto/cmp/cmp_ctx.c', 'openssl/crypto/cmp/cmp_err.c', + 'openssl/crypto/cmp/cmp_genm.c', 'openssl/crypto/cmp/cmp_hdr.c', 'openssl/crypto/cmp/cmp_http.c', 'openssl/crypto/cmp/cmp_msg.c', @@ -376,7 +427,9 @@ 'openssl/crypto/err/err_all.c', 'openssl/crypto/err/err_all_legacy.c', 'openssl/crypto/err/err_blocks.c', + 'openssl/crypto/err/err_mark.c', 'openssl/crypto/err/err_prn.c', + 'openssl/crypto/err/err_save.c', 'openssl/crypto/ess/ess_asn1.c', 'openssl/crypto/ess/ess_err.c', 'openssl/crypto/ess/ess_lib.c', @@ -459,7 +512,9 @@ 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -467,7 +522,11 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', + 'openssl/crypto/hpke/hpke.c', + 'openssl/crypto/hpke/hpke_util.c', 'openssl/crypto/http/http_client.c', 'openssl/crypto/http/http_err.c', 'openssl/crypto/http/http_lib.c', @@ -481,6 +540,7 @@ 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', 'openssl/crypto/bsearch.c', + 'openssl/crypto/comp_methods.c', 'openssl/crypto/context.c', 'openssl/crypto/core_algorithm.c', 'openssl/crypto/core_fetch.c', @@ -490,10 +550,13 @@ 'openssl/crypto/cryptlib.c', 'openssl/crypto/ctype.c', 'openssl/crypto/cversion.c', + 'openssl/crypto/defaults.c', 'openssl/crypto/der_writer.c', + 'openssl/crypto/deterministic_nonce.c', 'openssl/crypto/ebcdic.c', 'openssl/crypto/ex_data.c', 'openssl/crypto/getenv.c', + 'openssl/crypto/indicator_core.c', 'openssl/crypto/info.c', 'openssl/crypto/init.c', 'openssl/crypto/initthread.c', @@ -517,12 +580,16 @@ 'openssl/crypto/provider_core.c', 'openssl/crypto/provider_predefined.c', 'openssl/crypto/punycode.c', + 'openssl/crypto/quic_vlint.c', 'openssl/crypto/self_test_core.c', + 'openssl/crypto/sleep.c', 'openssl/crypto/sparse_array.c', + 'openssl/crypto/ssl_err.c', 'openssl/crypto/threads_lib.c', 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', 'openssl/crypto/trace.c', 'openssl/crypto/uid.c', 'openssl/crypto/md4/md4_dgst.c', @@ -532,6 +599,15 @@ 'openssl/crypto/md5/md5_sha1.c', 'openssl/crypto/mdc2/mdc2_one.c', 'openssl/crypto/mdc2/mdc2dgst.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -543,6 +619,7 @@ 'openssl/crypto/modes/siv128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/objects/o_names.c', 'openssl/crypto/objects/obj_dat.c', 'openssl/crypto/objects/obj_err.c', @@ -606,6 +683,7 @@ 'openssl/crypto/rand/rand_lib.c', 'openssl/crypto/rand/rand_meth.c', 'openssl/crypto/rand/rand_pool.c', + 'openssl/crypto/rand/rand_uniform.c', 'openssl/crypto/rand/randfile.c', 'openssl/crypto/rc2/rc2_cbc.c', 'openssl/crypto/rc2/rc2_ecb.c', @@ -652,6 +730,16 @@ 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', 'openssl/crypto/siphash/siphash.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/sm2/sm2_crypt.c', 'openssl/crypto/sm2/sm2_err.c', 'openssl/crypto/sm2/sm2_key.c', @@ -669,6 +757,12 @@ 'openssl/crypto/store/store_register.c', 'openssl/crypto/store/store_result.c', 'openssl/crypto/store/store_strings.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/crypto/ts/ts_asn1.c', 'openssl/crypto/ts/ts_conf.c', 'openssl/crypto/ts/ts_err.c', @@ -697,14 +791,22 @@ 'openssl/crypto/x509/pcy_map.c', 'openssl/crypto/x509/pcy_node.c', 'openssl/crypto/x509/pcy_tree.c', + 'openssl/crypto/x509/t_acert.c', 'openssl/crypto/x509/t_crl.c', 'openssl/crypto/x509/t_req.c', 'openssl/crypto/x509/t_x509.c', + 'openssl/crypto/x509/v3_aaa.c', + 'openssl/crypto/x509/v3_ac_tgt.c', 'openssl/crypto/x509/v3_addr.c', 'openssl/crypto/x509/v3_admis.c', 'openssl/crypto/x509/v3_akeya.c', 'openssl/crypto/x509/v3_akid.c', 'openssl/crypto/x509/v3_asid.c', + 'openssl/crypto/x509/v3_attrdesc.c', + 'openssl/crypto/x509/v3_attrmap.c', + 'openssl/crypto/x509/v3_audit_id.c', + 'openssl/crypto/x509/v3_authattid.c', + 'openssl/crypto/x509/v3_battcons.c', 'openssl/crypto/x509/v3_bcons.c', 'openssl/crypto/x509/v3_bitst.c', 'openssl/crypto/x509/v3_conf.c', @@ -713,12 +815,17 @@ 'openssl/crypto/x509/v3_enum.c', 'openssl/crypto/x509/v3_extku.c', 'openssl/crypto/x509/v3_genn.c', + 'openssl/crypto/x509/v3_group_ac.c', 'openssl/crypto/x509/v3_ia5.c', + 'openssl/crypto/x509/v3_ind_iss.c', 'openssl/crypto/x509/v3_info.c', 'openssl/crypto/x509/v3_int.c', + 'openssl/crypto/x509/v3_iobo.c', 'openssl/crypto/x509/v3_ist.c', 'openssl/crypto/x509/v3_lib.c', 'openssl/crypto/x509/v3_ncons.c', + 'openssl/crypto/x509/v3_no_ass.c', + 'openssl/crypto/x509/v3_no_rev_avail.c', 'openssl/crypto/x509/v3_pci.c', 'openssl/crypto/x509/v3_pcia.c', 'openssl/crypto/x509/v3_pcons.c', @@ -726,13 +833,20 @@ 'openssl/crypto/x509/v3_pmaps.c', 'openssl/crypto/x509/v3_prn.c', 'openssl/crypto/x509/v3_purp.c', + 'openssl/crypto/x509/v3_rolespec.c', 'openssl/crypto/x509/v3_san.c', + 'openssl/crypto/x509/v3_sda.c', + 'openssl/crypto/x509/v3_single_use.c', 'openssl/crypto/x509/v3_skid.c', + 'openssl/crypto/x509/v3_soa_id.c', 'openssl/crypto/x509/v3_sxnet.c', + 'openssl/crypto/x509/v3_timespec.c', 'openssl/crypto/x509/v3_tlsf.c', + 'openssl/crypto/x509/v3_usernotice.c', 'openssl/crypto/x509/v3_utf8.c', 'openssl/crypto/x509/v3_utl.c', 'openssl/crypto/x509/v3err.c', + 'openssl/crypto/x509/x509_acert.c', 'openssl/crypto/x509/x509_att.c', 'openssl/crypto/x509/x509_cmp.c', 'openssl/crypto/x509/x509_d2.c', @@ -750,6 +864,7 @@ 'openssl/crypto/x509/x509_v3.c', 'openssl/crypto/x509/x509_vfy.c', 'openssl/crypto/x509/x509_vpm.c', + 'openssl/crypto/x509/x509aset.c', 'openssl/crypto/x509/x509cset.c', 'openssl/crypto/x509/x509name.c', 'openssl/crypto/x509/x509rset.c', @@ -759,6 +874,7 @@ 'openssl/crypto/x509/x_attrib.c', 'openssl/crypto/x509/x_crl.c', 'openssl/crypto/x509/x_exten.c', + 'openssl/crypto/x509/x_ietfatt.c', 'openssl/crypto/x509/x_name.c', 'openssl/crypto/x509/x_pubkey.c', 'openssl/crypto/x509/x_req.c', @@ -790,6 +906,9 @@ 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c', 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', @@ -814,7 +933,13 @@ 'openssl/providers/implementations/ciphers/cipher_cts.c', 'openssl/providers/implementations/ciphers/cipher_null.c', 'openssl/providers/implementations/ciphers/cipher_sm4.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm_hw.c', 'openssl/providers/implementations/ciphers/cipher_sm4_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts_hw.c', 'openssl/providers/implementations/ciphers/cipher_tdes.c', 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', 'openssl/providers/implementations/ciphers/cipher_tdes_default.c', @@ -843,11 +968,16 @@ 'openssl/providers/implementations/encode_decode/encode_key2ms.c', 'openssl/providers/implementations/encode_decode/encode_key2text.c', 'openssl/providers/implementations/encode_decode/endecoder_common.c', + 'openssl/providers/implementations/encode_decode/ml_common_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_dsa_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_kem_codecs.c', 'openssl/providers/implementations/exchange/dh_exch.c', 'openssl/providers/implementations/exchange/ecdh_exch.c', 'openssl/providers/implementations/exchange/ecx_exch.c', 'openssl/providers/implementations/exchange/kdf_exch.c', + 'openssl/providers/implementations/kdfs/argon2.c', 'openssl/providers/implementations/kdfs/hkdf.c', + 'openssl/providers/implementations/kdfs/hmacdrbg_kdf.c', 'openssl/providers/implementations/kdfs/kbkdf.c', 'openssl/providers/implementations/kdfs/krb5kdf.c', 'openssl/providers/implementations/kdfs/pbkdf2.c', @@ -858,6 +988,11 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ec_kem.c', + 'openssl/providers/implementations/kem/ecx_kem.c', + 'openssl/providers/implementations/kem/kem_util.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -865,7 +1000,11 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/blake2b_mac.c', 'openssl/providers/implementations/macs/blake2s_mac.c', 'openssl/providers/implementations/macs/cmac_prov.c', @@ -874,12 +1013,12 @@ 'openssl/providers/implementations/macs/kmac_prov.c', 'openssl/providers/implementations/macs/poly1305_prov.c', 'openssl/providers/implementations/macs/siphash_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', 'openssl/providers/implementations/rands/seed_src.c', + 'openssl/providers/implementations/rands/seed_src_jitter.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/rands/seeding/rand_cpu_x86.c', 'openssl/providers/implementations/rands/seeding/rand_tsc.c', @@ -889,17 +1028,23 @@ 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', 'openssl/providers/implementations/signature/sm2_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', 'openssl/providers/implementations/storemgmt/file_store.c', 'openssl/providers/implementations/storemgmt/file_store_any2obj.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -910,7 +1055,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/implementations/ciphers/cipher_blowfish.c', 'openssl/providers/implementations/ciphers/cipher_blowfish_hw.c', 'openssl/providers/implementations/ciphers/cipher_cast5.c', @@ -935,6 +1080,7 @@ 'openssl/providers/implementations/digests/ripemd_prov.c', 'openssl/providers/implementations/digests/wp_prov.c', 'openssl/providers/implementations/kdfs/pbkdf1.c', + 'openssl/providers/implementations/kdfs/pvkkdf.c', 'openssl/providers/prov_running.c', 'openssl/providers/legacyprov.c', ], @@ -952,6 +1098,7 @@ './config/archs/darwin-i386-cc/asm/crypto/des/crypt586.S', './config/archs/darwin-i386-cc/asm/crypto/des/des-586.S', './config/archs/darwin-i386-cc/asm/crypto/ec/ecp_nistz256-x86.S', + './config/archs/darwin-i386-cc/asm/crypto/params_idx.c', './config/archs/darwin-i386-cc/asm/crypto/x86cpuid.S', './config/archs/darwin-i386-cc/asm/crypto/md5/md5-586.S', './config/archs/darwin-i386-cc/asm/crypto/modes/ghash-x86.S', @@ -968,7 +1115,9 @@ './config/archs/darwin-i386-cc/asm/providers/common/der/der_dsa_gen.c', './config/archs/darwin-i386-cc/asm/providers/common/der/der_ec_gen.c', './config/archs/darwin-i386-cc/asm/providers/common/der/der_ecx_gen.c', + './config/archs/darwin-i386-cc/asm/providers/common/der/der_ml_dsa_gen.c', './config/archs/darwin-i386-cc/asm/providers/common/der/der_rsa_gen.c', + './config/archs/darwin-i386-cc/asm/providers/common/der/der_slh_dsa_gen.c', './config/archs/darwin-i386-cc/asm/providers/common/der/der_wrap_gen.c', ], 'openssl_defines_darwin-i386-cc': [ diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/providers/common/der/der_ml_dsa_gen.c b/deps/openssl/config/archs/darwin-i386-cc/asm/providers/common/der/der_ml_dsa_gen.c new file mode 100644 index 00000000000000..4a8a113a268578 --- /dev/null +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/providers/common/der/der_ml_dsa_gen.c @@ -0,0 +1,37 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_ml_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44] = { + DER_OID_V_id_ml_dsa_44 +}; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65] = { + DER_OID_V_id_ml_dsa_65 +}; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87] = { + DER_OID_V_id_ml_dsa_87 +}; + diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/providers/common/der/der_slh_dsa_gen.c b/deps/openssl/config/archs/darwin-i386-cc/asm/providers/common/der/der_slh_dsa_gen.c new file mode 100644 index 00000000000000..1419a9515097dd --- /dev/null +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/providers/common/der/der_slh_dsa_gen.c @@ -0,0 +1,100 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_slh_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s] = { + DER_OID_V_id_slh_dsa_sha2_128s +}; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f] = { + DER_OID_V_id_slh_dsa_sha2_128f +}; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s] = { + DER_OID_V_id_slh_dsa_sha2_192s +}; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f] = { + DER_OID_V_id_slh_dsa_sha2_192f +}; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s] = { + DER_OID_V_id_slh_dsa_sha2_256s +}; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f] = { + DER_OID_V_id_slh_dsa_sha2_256f +}; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s] = { + DER_OID_V_id_slh_dsa_shake_128s +}; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f] = { + DER_OID_V_id_slh_dsa_shake_128f +}; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s] = { + DER_OID_V_id_slh_dsa_shake_192s +}; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f] = { + DER_OID_V_id_slh_dsa_shake_192f +}; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s] = { + DER_OID_V_id_slh_dsa_shake_256s +}; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f] = { + DER_OID_V_id_slh_dsa_shake_256f +}; + diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/providers/common/include/prov/der_ml_dsa.h b/deps/openssl/config/archs/darwin-i386-cc/asm/providers/common/include/prov/der_ml_dsa.h new file mode 100644 index 00000000000000..c55f780ab4527c --- /dev/null +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/providers/common/include/prov/der_ml_dsa.h @@ -0,0 +1,40 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_ml_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +#define DER_OID_V_id_ml_dsa_44 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x11 +#define DER_OID_SZ_id_ml_dsa_44 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44]; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +#define DER_OID_V_id_ml_dsa_65 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x12 +#define DER_OID_SZ_id_ml_dsa_65 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65]; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +#define DER_OID_V_id_ml_dsa_87 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x13 +#define DER_OID_SZ_id_ml_dsa_87 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87]; + + +int ossl_DER_w_algorithmIdentifier_ML_DSA(WPACKET *pkt, int tag, ML_DSA_KEY *key); diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/providers/common/include/prov/der_slh_dsa.h b/deps/openssl/config/archs/darwin-i386-cc/asm/providers/common/include/prov/der_slh_dsa.h new file mode 100644 index 00000000000000..760f8e7699be72 --- /dev/null +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/providers/common/include/prov/der_slh_dsa.h @@ -0,0 +1,103 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_slh_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x14 +#define DER_OID_SZ_id_slh_dsa_sha2_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s]; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x15 +#define DER_OID_SZ_id_slh_dsa_sha2_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f]; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x16 +#define DER_OID_SZ_id_slh_dsa_sha2_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s]; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x17 +#define DER_OID_SZ_id_slh_dsa_sha2_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f]; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x18 +#define DER_OID_SZ_id_slh_dsa_sha2_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s]; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x19 +#define DER_OID_SZ_id_slh_dsa_sha2_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f]; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +#define DER_OID_V_id_slh_dsa_shake_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1A +#define DER_OID_SZ_id_slh_dsa_shake_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s]; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +#define DER_OID_V_id_slh_dsa_shake_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1B +#define DER_OID_SZ_id_slh_dsa_shake_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f]; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +#define DER_OID_V_id_slh_dsa_shake_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1C +#define DER_OID_SZ_id_slh_dsa_shake_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s]; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +#define DER_OID_V_id_slh_dsa_shake_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1D +#define DER_OID_SZ_id_slh_dsa_shake_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f]; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +#define DER_OID_V_id_slh_dsa_shake_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1E +#define DER_OID_SZ_id_slh_dsa_shake_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s]; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +#define DER_OID_V_id_slh_dsa_shake_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1F +#define DER_OID_SZ_id_slh_dsa_shake_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f]; + + +int ossl_DER_w_algorithmIdentifier_SLH_DSA(WPACKET *pkt, int tag, SLH_DSA_KEY *key); diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/apps/progs.c b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/apps/progs.c index 43cef00799b86e..acc204a3e6e781 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/apps/progs.c +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/apps/progs.c @@ -89,6 +89,7 @@ FUNCTION functions[] = { {FT_general, "s_time", s_time_main, s_time_options, NULL, NULL}, #endif {FT_general, "sess_id", sess_id_main, sess_id_options, NULL, NULL}, + {FT_general, "skeyutl", skeyutl_main, skeyutl_options, NULL, NULL}, {FT_general, "smime", smime_main, smime_options, NULL, NULL}, {FT_general, "speed", speed_main, speed_options, NULL, NULL}, {FT_general, "spkac", spkac_main, spkac_options, NULL, NULL}, @@ -225,9 +226,15 @@ FUNCTION functions[] = { {FT_cipher, "camellia-256-ecb", enc_main, enc_options, NULL}, #endif {FT_cipher, "base64", enc_main, enc_options, NULL}, -#ifdef ZLIB +#ifndef OPENSSL_NO_ZLIB {FT_cipher, "zlib", enc_main, enc_options, NULL}, #endif +#ifndef OPENSSL_NO_BROTLI + {FT_cipher, "brotli", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ZSTD + {FT_cipher, "zstd", enc_main, enc_options, NULL}, +#endif #ifndef OPENSSL_NO_DES {FT_cipher, "des", enc_main, enc_options, NULL}, #endif diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm index ee6e183540fbfd..c26cadec23f1b6 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm @@ -18,6 +18,7 @@ our %config = ( "ARFLAGS" => [ "qc" ], + "ASFLAGS" => [], "CC" => "../config/fake_gcc.pl", "CFLAGS" => [ "-O3 -fomit-frame-pointer" @@ -27,14 +28,16 @@ our %config = ( "CPPINCLUDES" => [], "CXXFLAGS" => [], "FIPSKEY" => "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813", + "FIPS_VENDOR" => "OpenSSL FIPS Provider", "HASHBANGPERL" => "/usr/bin/env perl", "LDFLAGS" => [], "LDLIBS" => [], + "OBJCOPY" => "objcopy", "PERL" => "/usr/bin/perl", "RANLIB" => "ranlib -c", "RC" => "windres", "RCFLAGS" => [], - "api" => "30000", + "api" => "30500", "b32" => "1", "b64" => "0", "b64l" => "0", @@ -56,11 +59,13 @@ our %config = ( "doc/build.info", "test/build.info", "engines/build.info", + "exporters/build.info", "crypto/objects/build.info", "crypto/buffer/build.info", "crypto/bio/build.info", "crypto/stack/build.info", "crypto/lhash/build.info", + "crypto/hashtable/build.info", "crypto/rand/build.info", "crypto/evp/build.info", "crypto/asn1/build.info", @@ -78,6 +83,7 @@ our %config = ( "crypto/md5/build.info", "crypto/sha/build.info", "crypto/mdc2/build.info", + "crypto/ml_kem/build.info", "crypto/hmac/build.info", "crypto/ripemd/build.info", "crypto/whrlpool/build.info", @@ -119,11 +125,19 @@ our %config = ( "crypto/cmp/build.info", "crypto/encode_decode/build.info", "crypto/ffc/build.info", + "crypto/hpke/build.info", + "crypto/thread/build.info", + "crypto/ml_dsa/build.info", + "crypto/slh_dsa/build.info", + "ssl/record/build.info", + "ssl/rio/build.info", + "ssl/quic/build.info", "apps/lib/build.info", "providers/common/build.info", "providers/implementations/build.info", "providers/fips/build.info", "doc/man1/build.info", + "ssl/record/methods/build.info", "providers/common/der/build.info", "providers/implementations/digests/build.info", "providers/implementations/ciphers/build.info", @@ -137,6 +151,7 @@ our %config = ( "providers/implementations/encode_decode/build.info", "providers/implementations/storemgmt/build.info", "providers/implementations/kem/build.info", + "providers/implementations/skeymgmt/build.info", "providers/implementations/rands/seeding/build.info" ], "build_metadata" => "", @@ -156,7 +171,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.17", + "full_version" => "3.5.2", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -165,37 +180,52 @@ our %config = ( "libdir" => "", "major" => "3", "makedep_scheme" => "gcc", - "minor" => "0", + "minor" => "5", "openssl_api_defines" => [ - "OPENSSL_CONFIGURED_API=30000" + "OPENSSL_CONFIGURED_API=30500" ], "openssl_feature_defines" => [ "OPENSSL_RAND_SEED_OS", "OPENSSL_THREADS", "OPENSSL_NO_AFALGENG", "OPENSSL_NO_ASAN", + "OPENSSL_NO_BROTLI", + "OPENSSL_NO_BROTLI_DYNAMIC", "OPENSSL_NO_COMP", "OPENSSL_NO_CRYPTO_MDEBUG", "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE", + "OPENSSL_NO_DEMOS", "OPENSSL_NO_DEVCRYPTOENG", "OPENSSL_NO_EC_NISTP_64_GCC_128", "OPENSSL_NO_EGD", "OPENSSL_NO_EXTERNAL_TESTS", + "OPENSSL_NO_FIPS_JITTER", "OPENSSL_NO_FUZZ_AFL", "OPENSSL_NO_FUZZ_LIBFUZZER", + "OPENSSL_NO_H3DEMO", + "OPENSSL_NO_HQINTEROP", + "OPENSSL_NO_JITTER", "OPENSSL_NO_KTLS", "OPENSSL_NO_LOADERENG", "OPENSSL_NO_MD2", "OPENSSL_NO_MSAN", + "OPENSSL_NO_PIE", "OPENSSL_NO_RC5", "OPENSSL_NO_SCTP", "OPENSSL_NO_SSL3", "OPENSSL_NO_SSL3_METHOD", + "OPENSSL_NO_SSLKEYLOG", + "OPENSSL_NO_TFO", "OPENSSL_NO_TRACE", "OPENSSL_NO_UBSAN", "OPENSSL_NO_UNIT_TEST", "OPENSSL_NO_UPLINK", "OPENSSL_NO_WEAK_SSL_CIPHERS", + "OPENSSL_NO_WINSTORE", + "OPENSSL_NO_ZLIB", + "OPENSSL_NO_ZLIB_DYNAMIC", + "OPENSSL_NO_ZSTD", + "OPENSSL_NO_ZSTD_DYNAMIC", "OPENSSL_NO_DYNAMIC_ENGINE" ], "openssl_other_defines" => [ @@ -205,11 +235,11 @@ our %config = ( "OPENSSL_SYS_MACOSX" ], "openssldir" => "", - "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "17", + "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", + "patch" => "2", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", - "perl_version" => "5.38.2", + "perl_version" => "5.34.0", "perlargv" => [ "no-comp", "no-shared", @@ -239,6 +269,7 @@ our %config = ( "LDLIBS" => undef, "MT" => undef, "MTFLAGS" => undef, + "OBJCOPY" => undef, "OPENSSL_LOCAL_CONFIG_DIR" => undef, "PERL" => undef, "RANLIB" => undef, @@ -258,11 +289,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "1 Jul 2025", + "release_date" => "5 Aug 2025", "shlib_version" => "3", "sourcedir" => ".", "target" => "darwin-i386-cc", - "version" => "3.0.17" + "version" => "3.5.2" ); our %target = ( "AR" => "ar", @@ -270,6 +301,7 @@ our %target = ( "CC" => "cc", "CFLAGS" => "-O3 -fomit-frame-pointer", "HASHBANGPERL" => "/usr/bin/env perl", + "OBJCOPY" => "objcopy", "RANLIB" => "ranlib -c", "RC" => "windres", "_conf_fname_int" => [ @@ -281,6 +313,8 @@ our %target = ( "Configurations/shared-info.pl" ], "asm_arch" => "x86", + "bin_cflags" => "", + "bin_lflags" => "", "bn_ops" => "BN_LLONG RC4_INT", "build_file" => "Makefile", "build_scheme" => [ @@ -295,6 +329,7 @@ our %target = ( "disable" => [], "dso_scheme" => "dlfcn", "enable" => [], + "ex_libs" => "", "includes" => [], "lflags" => "-Wl,-search_paths_first", "lib_cflags" => "", @@ -321,6 +356,8 @@ our %target = ( our @disablables = ( "acvp-tests", "afalgeng", + "apps", + "argon2", "aria", "asan", "asm", @@ -331,11 +368,14 @@ our @disablables = ( "autoload-config", "bf", "blake2", + "brotli", + "brotli-dynamic", "buildtest-c++", "bulk", "cached-fetch", "camellia", "capieng", + "winstore", "cast", "chacha", "cmac", @@ -344,11 +384,16 @@ our @disablables = ( "comp", "crypto-mdebug", "ct", + "default-thread-pool", + "demos", + "h3demo", + "hqinterop", "deprecated", "des", "devcryptoeng", "dgram", "dh", + "docs", "dsa", "dso", "dtls", @@ -358,6 +403,7 @@ our @disablables = ( "ec_nistp_64_gcc_128", "ecdh", "ecdsa", + "ecx", "egd", "engine", "err", @@ -365,10 +411,15 @@ our @disablables = ( "filenames", "fips", "fips-securitychecks", + "fips-post", + "fips-jitter", "fuzz-afl", "fuzz-libfuzzer", "gost", + "http", "idea", + "integrity-only-ciphers", + "jitter", "ktls", "legacy", "loadereng", @@ -376,6 +427,8 @@ our @disablables = ( "md2", "md4", "mdc2", + "ml-dsa", + "ml-kem", "module", "msan", "multiblock", @@ -384,10 +437,13 @@ our @disablables = ( "ocsp", "padlockeng", "pic", + "pie", "pinshared", "poly1305", "posix-io", "psk", + "quic", + "unstable-qlog", "rc2", "rc4", "rc5", @@ -401,7 +457,9 @@ our @disablables = ( "shared", "siphash", "siv", + "slh-dsa", "sm2", + "sm2-precomp", "sm3", "sm4", "sock", @@ -412,9 +470,13 @@ our @disablables = ( "ssl-trace", "static-engine", "stdio", + "sslkeylog", "tests", + "tfo", + "thread-pool", "threads", "tls", + "tls-deprecated-ec", "trace", "ts", "ubsan", @@ -425,6 +487,8 @@ our @disablables = ( "whirlpool", "zlib", "zlib-dynamic", + "zstd", + "zstd-dynamic", "ssl3", "ssl3-method", "tls1", @@ -445,33 +509,46 @@ our @disablables_int = ( our %disabled = ( "afalgeng" => "option", "asan" => "default", + "brotli" => "default", + "brotli-dynamic" => "default", "buildtest-c++" => "default", "comp" => "option", "crypto-mdebug" => "default", "crypto-mdebug-backtrace" => "default", + "demos" => "default", "devcryptoeng" => "default", "dynamic-engine" => "cascade", "ec_nistp_64_gcc_128" => "default", "egd" => "default", "external-tests" => "default", + "fips-jitter" => "default", "fuzz-afl" => "default", "fuzz-libfuzzer" => "default", + "h3demo" => "default", + "hqinterop" => "default", + "jitter" => "default", "ktls" => "default", "loadereng" => "cascade", "md2" => "default", "msan" => "default", + "pie" => "default", "rc5" => "default", "sctp" => "default", "shared" => "option", "ssl3" => "default", "ssl3-method" => "default", + "sslkeylog" => "default", + "tfo" => "default", "trace" => "default", "ubsan" => "default", "unit-test" => "default", "uplink" => "no uplink_arch", "weak-ssl-ciphers" => "default", + "winstore" => "not-windows", "zlib" => "default", - "zlib-dynamic" => "default" + "zlib-dynamic" => "default", + "zstd" => "default", + "zstd-dynamic" => "default" ); our %withargs = (); our %unified_info = ( @@ -697,6 +774,11 @@ our %unified_info = ( "pod" => "1" } }, + "doc/man1/openssl-skeyutl.pod" => { + "doc/man1/openssl-skeyutl.pod.in" => { + "pod" => "1" + } + }, "doc/man1/openssl-smime.pod" => { "doc/man1/openssl-smime.pod.in" => { "pod" => "1" @@ -754,6 +836,21 @@ our %unified_info = ( } }, "generate" => { + "exporters/OpenSSLConfig.cmake" => { + "exporter" => "cmake" + }, + "exporters/OpenSSLConfigVersion.cmake" => { + "exporter" => "cmake" + }, + "exporters/libcrypto.pc" => { + "exporter" => "pkg-config" + }, + "exporters/libssl.pc" => { + "exporter" => "pkg-config" + }, + "exporters/openssl.pc" => { + "exporter" => "pkg-config" + }, "include/openssl/configuration.h" => { "skip" => "1" } @@ -774,6 +871,9 @@ our %unified_info = ( "providers/liblegacy.a" => { "noinst" => "1" }, + "providers/libtemplate.a" => { + "noinst" => "1" + }, "test/libtestutil.a" => { "has_main" => "1", "noinst" => "1" @@ -791,6 +891,9 @@ our %unified_info = ( } }, "programs" => { + "fuzz/acert-test" => { + "noinst" => "1" + }, "fuzz/asn1-test" => { "noinst" => "1" }, @@ -821,9 +924,60 @@ our %unified_info = ( "fuzz/ct-test" => { "noinst" => "1" }, + "fuzz/decoder-test" => { + "noinst" => "1" + }, + "fuzz/dtlsclient-test" => { + "noinst" => "1" + }, + "fuzz/dtlsserver-test" => { + "noinst" => "1" + }, + "fuzz/hashtable-test" => { + "noinst" => "1" + }, + "fuzz/ml-dsa-test" => { + "noinst" => "1" + }, + "fuzz/ml-kem-test" => { + "noinst" => "1" + }, + "fuzz/pem-test" => { + "noinst" => "1" + }, + "fuzz/provider-test" => { + "noinst" => "1" + }, + "fuzz/punycode-test" => { + "noinst" => "1" + }, + "fuzz/quic-client-test" => { + "noinst" => "1" + }, + "fuzz/quic-lcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-rcidm-test" => { + "noinst" => "1" + }, + "fuzz/quic-server-test" => { + "noinst" => "1" + }, + "fuzz/quic-srtm-test" => { + "noinst" => "1" + }, "fuzz/server-test" => { "noinst" => "1" }, + "fuzz/slh-dsa-test" => { + "noinst" => "1" + }, + "fuzz/smime-test" => { + "noinst" => "1" + }, + "fuzz/v3name-test" => { + "noinst" => "1" + }, "fuzz/x509-test" => { "noinst" => "1" }, @@ -875,18 +1029,30 @@ our %unified_info = ( "test/bftest" => { "noinst" => "1" }, + "test/bio_addr_test" => { + "noinst" => "1" + }, + "test/bio_base64_test" => { + "noinst" => "1" + }, "test/bio_callback_test" => { "noinst" => "1" }, "test/bio_core_test" => { "noinst" => "1" }, + "test/bio_dgram_test" => { + "noinst" => "1" + }, "test/bio_enc_test" => { "noinst" => "1" }, "test/bio_memleak_test" => { "noinst" => "1" }, + "test/bio_meth_test" => { + "noinst" => "1" + }, "test/bio_prefix_text" => { "noinst" => "1" }, @@ -896,6 +1062,9 @@ our %unified_info = ( "test/bio_readbuffer_test" => { "noinst" => "1" }, + "test/bio_tfo_test" => { + "noinst" => "1" + }, "test/bioprinttest" => { "noinst" => "1" }, @@ -905,6 +1074,9 @@ our %unified_info = ( "test/bntest" => { "noinst" => "1" }, + "test/build_wincrypt_test" => { + "noinst" => "1" + }, "test/buildtest_c_aes" => { "noinst" => "1" }, @@ -920,6 +1092,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => { "noinst" => "1" }, + "test/buildtest_c_byteorder" => { + "noinst" => "1" + }, "test/buildtest_c_camellia" => { "noinst" => "1" }, @@ -944,9 +1119,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => { "noinst" => "1" }, - "test/buildtest_c_core_names" => { - "noinst" => "1" - }, "test/buildtest_c_core_object" => { "noinst" => "1" }, @@ -971,6 +1143,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => { "noinst" => "1" }, + "test/buildtest_c_e_ostime" => { + "noinst" => "1" + }, "test/buildtest_c_ebcdic" => { "noinst" => "1" }, @@ -998,12 +1173,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => { "noinst" => "1" }, + "test/buildtest_c_hpke" => { + "noinst" => "1" + }, "test/buildtest_c_http" => { "noinst" => "1" }, "test/buildtest_c_idea" => { "noinst" => "1" }, + "test/buildtest_c_indicator" => { + "noinst" => "1" + }, "test/buildtest_c_kdf" => { "noinst" => "1" }, @@ -1019,6 +1200,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => { "noinst" => "1" }, + "test/buildtest_c_ml_kem" => { + "noinst" => "1" + }, "test/buildtest_c_modes" => { "noinst" => "1" }, @@ -1049,6 +1233,9 @@ our %unified_info = ( "test/buildtest_c_provider" => { "noinst" => "1" }, + "test/buildtest_c_quic" => { + "noinst" => "1" + }, "test/buildtest_c_rand" => { "noinst" => "1" }, @@ -1091,6 +1278,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => { "noinst" => "1" }, + "test/buildtest_c_thread" => { + "noinst" => "1" + }, "test/buildtest_c_tls1" => { "noinst" => "1" }, @@ -1106,6 +1296,12 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => { "noinst" => "1" }, + "test/byteorder_test" => { + "noinst" => "1" + }, + "test/ca_internals_test" => { + "noinst" => "1" + }, "test/casttest" => { "noinst" => "1" }, @@ -1190,6 +1386,9 @@ our %unified_info = ( "test/danetest" => { "noinst" => "1" }, + "test/decoder_propq_test" => { + "noinst" => "1" + }, "test/defltfips_test" => { "noinst" => "1" }, @@ -1262,15 +1461,24 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => { "noinst" => "1" }, + "test/evp_pkey_dhkem_test" => { + "noinst" => "1" + }, "test/evp_pkey_dparams_test" => { "noinst" => "1" }, "test/evp_pkey_provided_test" => { "noinst" => "1" }, + "test/evp_skey_test" => { + "noinst" => "1" + }, "test/evp_test" => { "noinst" => "1" }, + "test/evp_xof_test" => { + "noinst" => "1" + }, "test/exdatatest" => { "noinst" => "1" }, @@ -1298,6 +1506,9 @@ our %unified_info = ( "test/hmactest" => { "noinst" => "1" }, + "test/hpke_test" => { + "noinst" => "1" + }, "test/http_test" => { "noinst" => "1" }, @@ -1307,12 +1518,18 @@ our %unified_info = ( "test/igetest" => { "noinst" => "1" }, + "test/json_test" => { + "noinst" => "1" + }, "test/keymgmt_internal_test" => { "noinst" => "1" }, "test/lhash_test" => { "noinst" => "1" }, + "test/list_test" => { + "noinst" => "1" + }, "test/localetest" => { "noinst" => "1" }, @@ -1322,9 +1539,21 @@ our %unified_info = ( "test/mdc2test" => { "noinst" => "1" }, + "test/membio_test" => { + "noinst" => "1" + }, "test/memleaktest" => { "noinst" => "1" }, + "test/ml_dsa_test" => { + "noinst" => "1" + }, + "test/ml_kem_evp_extra_test" => { + "noinst" => "1" + }, + "test/ml_kem_internal_test" => { + "noinst" => "1" + }, "test/modes_internal_test" => { "noinst" => "1" }, @@ -1343,6 +1572,9 @@ our %unified_info = ( "test/packettest" => { "noinst" => "1" }, + "test/pairwise_fail_test" => { + "noinst" => "1" + }, "test/param_build_test" => { "noinst" => "1" }, @@ -1367,6 +1599,9 @@ our %unified_info = ( "test/pemtest" => { "noinst" => "1" }, + "test/pkcs12_api_test" => { + "noinst" => "1" + }, "test/pkcs12_format_test" => { "noinst" => "1" }, @@ -1382,6 +1617,9 @@ our %unified_info = ( "test/poly1305_internal_test" => { "noinst" => "1" }, + "test/priority_queue_test" => { + "noinst" => "1" + }, "test/property_test" => { "noinst" => "1" }, @@ -1391,6 +1629,9 @@ our %unified_info = ( "test/provfetchtest" => { "noinst" => "1" }, + "test/provider_default_search_path_test" => { + "noinst" => "1" + }, "test/provider_fallback_test" => { "noinst" => "1" }, @@ -1409,6 +1650,72 @@ our %unified_info = ( "test/punycode_test" => { "noinst" => "1" }, + "test/quic_ackm_test" => { + "noinst" => "1" + }, + "test/quic_cc_test" => { + "noinst" => "1" + }, + "test/quic_cfq_test" => { + "noinst" => "1" + }, + "test/quic_client_test" => { + "noinst" => "1" + }, + "test/quic_fc_test" => { + "noinst" => "1" + }, + "test/quic_fifd_test" => { + "noinst" => "1" + }, + "test/quic_lcidm_test" => { + "noinst" => "1" + }, + "test/quic_multistream_test" => { + "noinst" => "1" + }, + "test/quic_newcid_test" => { + "noinst" => "1" + }, + "test/quic_qlog_test" => { + "noinst" => "1" + }, + "test/quic_radix_test" => { + "noinst" => "1" + }, + "test/quic_rcidm_test" => { + "noinst" => "1" + }, + "test/quic_record_test" => { + "noinst" => "1" + }, + "test/quic_srt_gen_test" => { + "noinst" => "1" + }, + "test/quic_srtm_test" => { + "noinst" => "1" + }, + "test/quic_stream_test" => { + "noinst" => "1" + }, + "test/quic_tserver_test" => { + "noinst" => "1" + }, + "test/quic_txp_test" => { + "noinst" => "1" + }, + "test/quic_txpim_test" => { + "noinst" => "1" + }, + "test/quic_wire_test" => { + "noinst" => "1" + }, + "test/quicapitest" => { + "noinst" => "1" + }, + "test/quicfaultstest" => { + "noinst" => "1" + }, "test/rand_status_test" => { "noinst" => "1" }, @@ -1424,12 +1731,15 @@ our %unified_info = ( "test/rc5test" => { "noinst" => "1" }, - "test/rdrand_sanitytest" => { + "test/rdcpu_sanitytest" => { "noinst" => "1" }, "test/recordlentest" => { "noinst" => "1" }, + "test/rpktest" => { + "noinst" => "1" + }, "test/rsa_complex" => { "noinst" => "1" }, @@ -1442,6 +1752,12 @@ our %unified_info = ( "test/rsa_test" => { "noinst" => "1" }, + "test/rsa_x931_test" => { + "noinst" => "1" + }, + "test/safe_math_test" => { + "noinst" => "1" + }, "test/sanitytest" => { "noinst" => "1" }, @@ -1457,6 +1773,9 @@ our %unified_info = ( "test/siphash_internal_test" => { "noinst" => "1" }, + "test/slh_dsa_test" => { + "noinst" => "1" + }, "test/sm2_internal_test" => { "noinst" => "1" }, @@ -1478,6 +1797,9 @@ our %unified_info = ( "test/ssl_ctx_test" => { "noinst" => "1" }, + "test/ssl_handshake_rtt_test" => { + "noinst" => "1" + }, "test/ssl_old_test" => { "noinst" => "1" }, @@ -1499,12 +1821,18 @@ our %unified_info = ( "test/stack_test" => { "noinst" => "1" }, + "test/strtoultest" => { + "noinst" => "1" + }, "test/sysdefaulttest" => { "noinst" => "1" }, "test/test_test" => { "noinst" => "1" }, + "test/threadpool_test" => { + "noinst" => "1" + }, "test/threadstest" => { "noinst" => "1" }, @@ -1514,12 +1842,18 @@ our %unified_info = ( "test/time_offset_test" => { "noinst" => "1" }, + "test/time_test" => { + "noinst" => "1" + }, "test/tls13ccstest" => { "noinst" => "1" }, "test/tls13encryptiontest" => { "noinst" => "1" }, + "test/tls13groupselection_test" => { + "noinst" => "1" + }, "test/trace_api_test" => { "noinst" => "1" }, @@ -1547,6 +1881,9 @@ our %unified_info = ( "test/wpackettest" => { "noinst" => "1" }, + "test/x509_acert_test" => { + "noinst" => "1" + }, "test/x509_check_cert_pkey_test" => { "noinst" => "1" }, @@ -1556,6 +1893,15 @@ our %unified_info = ( "test/x509_internal_test" => { "noinst" => "1" }, + "test/x509_load_cert_file_test" => { + "noinst" => "1" + }, + "test/x509_req_test" => { + "noinst" => "1" + }, + "test/x509_test" => { + "noinst" => "1" + }, "test/x509_time_test" => { "noinst" => "1" }, @@ -1658,6 +2004,9 @@ our %unified_info = ( "MD5_ASM", "RC4_ASM" ], + "test/endecode_test" => [ + "STATIC_LEGACY" + ], "test/evp_extra_test" => [ "STATIC_LEGACY" ], @@ -1670,14 +2019,21 @@ our %unified_info = ( }, "depends" => { "" => [ + "OpenSSLConfigVersion.cmake", + "crypto/params_idx.c", + "exporters/OpenSSLConfigVersion.cmake", + "exporters/openssl.pc", "include/crypto/bn_conf.h", "include/crypto/dso_conf.h", + "include/internal/param_names.h", "include/openssl/asn1.h", "include/openssl/asn1t.h", "include/openssl/bio.h", "include/openssl/cmp.h", "include/openssl/cms.h", + "include/openssl/comp.h", "include/openssl/conf.h", + "include/openssl/core_names.h", "include/openssl/crmf.h", "include/openssl/crypto.h", "include/openssl/ct.h", @@ -1694,10 +2050,22 @@ our %unified_info = ( "include/openssl/ssl.h", "include/openssl/ui.h", "include/openssl/x509.h", + "include/openssl/x509_acert.h", "include/openssl/x509_vfy.h", "include/openssl/x509v3.h", + "openssl.pc", "test/provider_internal_test.cnf" ], + "OpenSSLConfig.cmake" => [ + "builddata.pm" + ], + "OpenSSLConfigVersion.cmake" => [ + "OpenSSLConfig.cmake", + "builddata.pm" + ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/progs.h" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/progs.h" ], @@ -1843,6 +2211,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/progs.h" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/progs.h" + ], "apps/openssl-bin-smime.o" => [ "apps/progs.h" ], @@ -1931,6 +2302,9 @@ our %unified_info = ( "crypto/libcrypto-lib-info.o" => [ "crypto/buildinf.h" ], + "crypto/params_idx.c" => [ + "util/perl|OpenSSL/paramnames.pm" + ], "crypto/rc4/rc4-586.S" => [ "crypto/perlasm/x86asm.pl" ], @@ -2096,6 +2470,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -2237,6 +2614,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -2273,6 +2653,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -2288,6 +2671,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -2360,6 +2746,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -2426,6 +2815,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -2525,6 +2917,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -2663,6 +3061,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -2780,6 +3181,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -2867,6 +3274,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -2939,9 +3349,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -2957,12 +3373,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -3032,9 +3454,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -3044,12 +3475,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -3065,9 +3508,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -3092,6 +3541,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -3107,6 +3559,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -3143,6 +3598,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -3416,6 +3874,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -3455,6 +3916,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -3476,6 +3940,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -3590,6 +4057,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -3617,9 +4087,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -3635,6 +4117,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -3644,12 +4129,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -3668,12 +4159,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -3683,9 +4186,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -3698,9 +4207,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -3716,24 +4237,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -3746,6 +4288,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -3755,8 +4303,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -3776,6 +4324,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -3824,6 +4387,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -3890,6 +4456,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -4013,9 +4582,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -4031,6 +4606,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -4055,9 +4633,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -4091,6 +4678,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -4148,15 +4738,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -4166,6 +4768,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -4187,9 +4792,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -4205,6 +4816,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -4217,9 +4831,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -4250,9 +4861,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -4268,12 +4876,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -4328,6 +4990,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -4337,9 +5002,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -4487,6 +5149,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -4628,6 +5293,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -4664,6 +5332,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -4679,6 +5350,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -4751,6 +5425,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -4817,6 +5494,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -4916,6 +5596,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -5054,6 +5740,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -5171,6 +5860,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -5258,6 +5953,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -5330,9 +6028,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -5348,12 +6052,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -5423,9 +6133,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -5435,12 +6154,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -5456,9 +6187,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -5483,6 +6220,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -5498,6 +6238,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -5534,6 +6277,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -5807,6 +6553,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -5846,6 +6595,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -5867,6 +6619,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -5981,6 +6736,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -6008,9 +6766,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -6026,6 +6796,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -6035,12 +6808,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -6059,12 +6838,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -6074,9 +6865,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -6089,9 +6886,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -6107,24 +6916,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -6137,6 +6967,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -6146,8 +6982,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -6167,6 +7003,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -6215,6 +7066,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -6281,6 +7135,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -6404,9 +7261,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -6422,6 +7285,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -6446,9 +7312,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -6482,6 +7357,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -6539,15 +7417,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -6557,6 +7447,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -6578,9 +7471,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -6596,6 +7495,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -6608,9 +7510,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -6641,9 +7540,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -6659,12 +7555,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -6719,6 +7669,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -6728,9 +7681,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -6910,6 +7860,10 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod.in", "doc/perlvars.pm" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in", + "doc/perlvars.pm" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in", "doc/perlvars.pm" @@ -6949,6 +7903,27 @@ our %unified_info = ( "doc/man7/openssl_user_macros.pod" => [ "doc/man7/openssl_user_macros.pod.in" ], + "exporters/OpenSSLConfig.cmake" => [ + "installdata.pm" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/OpenSSLConfig.cmake", + "installdata.pm" + ], + "exporters/libcrypto.pc" => [ + "installdata.pm" + ], + "exporters/libssl.pc" => [ + "installdata.pm" + ], + "exporters/openssl.pc" => [ + "exporters/libcrypto.pc", + "exporters/libssl.pc", + "installdata.pm" + ], + "fuzz/acert-test" => [ + "libcrypto" + ], "fuzz/asn1-test" => [ "libcrypto", "libssl" @@ -6981,16 +7956,92 @@ our %unified_info = ( "fuzz/ct-test" => [ "libcrypto" ], + "fuzz/decoder-test" => [ + "libcrypto" + ], + "fuzz/dtlsclient-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/dtlsserver-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/hashtable-test" => [ + "libcrypto.a" + ], + "fuzz/ml-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/ml-kem-test" => [ + "libcrypto.a" + ], + "fuzz/pem-test" => [ + "libcrypto.a" + ], + "fuzz/provider-test" => [ + "libcrypto" + ], + "fuzz/punycode-test" => [ + "libcrypto.a" + ], + "fuzz/quic-client-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-lcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-rcidm-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-server-test" => [ + "libcrypto.a", + "libssl.a" + ], + "fuzz/quic-srtm-test" => [ + "libcrypto.a", + "libssl.a" + ], "fuzz/server-test" => [ "libcrypto", "libssl" ], + "fuzz/slh-dsa-test" => [ + "libcrypto.a" + ], + "fuzz/smime-test" => [ + "libcrypto", + "libssl" + ], + "fuzz/v3name-test" => [ + "libcrypto.a" + ], "fuzz/x509-test" => [ "libcrypto" ], + "include/internal/param_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], + "include/openssl/core_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], + "libcrypto.pc" => [ + "builddata.pm" + ], "libssl" => [ "libcrypto" ], + "libssl.pc" => [ + "builddata.pm" + ], + "openssl.pc" => [ + "builddata.pm", + "libcrypto.pc", + "libssl.pc" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/DIGESTS.asn1", "providers/common/der/NIST.asn1", @@ -7008,11 +8059,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7052,6 +8111,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov/der_rsa.h" ], @@ -7059,6 +8124,12 @@ our %unified_info = ( "providers/common/include/prov/der_digests.h", "providers/common/include/prov/der_rsa.h" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov/der_wrap.h" ], @@ -7098,11 +8169,19 @@ our %unified_info = ( "providers/common/der/ECX.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der/NIST.asn1", "providers/common/der/RSA.asn1", "providers/common/der/oids_to_c.pm" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der/SM2.asn1", "providers/common/der/oids_to_c.pm" @@ -7135,9 +8214,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov/der_sm2.h" ], @@ -7150,9 +8235,15 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov/der_ecx.h" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov/der_rsa.h" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], "providers/legacy" => [ "libcrypto", "providers/liblegacy.a" @@ -7230,6 +8321,14 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_addr_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/bio_base64_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_callback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7238,6 +8337,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_dgram_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_enc_test" => [ "libcrypto", "test/libtestutil.a" @@ -7246,6 +8349,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_meth_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bio_prefix_text" => [ "libcrypto", "test/libtestutil.a" @@ -7258,6 +8365,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/bio_tfo_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/bioprinttest" => [ "libcrypto", "test/libtestutil.a" @@ -7270,6 +8381,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/build_wincrypt_test" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_aes" => [ "libcrypto", "libssl" @@ -7290,6 +8405,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_byteorder" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_camellia" => [ "libcrypto", "libssl" @@ -7322,10 +8441,6 @@ our %unified_info = ( "libcrypto", "libssl" ], - "test/buildtest_c_core_names" => [ - "libcrypto", - "libssl" - ], "test/buildtest_c_core_object" => [ "libcrypto", "libssl" @@ -7358,6 +8473,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_e_ostime" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_ebcdic" => [ "libcrypto", "libssl" @@ -7394,6 +8513,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_hpke" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_http" => [ "libcrypto", "libssl" @@ -7402,6 +8525,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_indicator" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_kdf" => [ "libcrypto", "libssl" @@ -7422,6 +8549,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_ml_kem" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_modes" => [ "libcrypto", "libssl" @@ -7462,6 +8593,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_quic" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_rand" => [ "libcrypto", "libssl" @@ -7518,6 +8653,10 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/buildtest_c_thread" => [ + "libcrypto", + "libssl" + ], "test/buildtest_c_tls1" => [ "libcrypto", "libssl" @@ -7538,10 +8677,23 @@ our %unified_info = ( "libcrypto", "libssl" ], + "test/byteorder_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ca_internals_test" => [ + "libssl", + "test/libtestutil.a" + ], "test/casttest" => [ "libcrypto", "test/libtestutil.a" ], + "test/cert_comp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/chacha_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7655,7 +8807,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], - "test/defltfips_test" => [ + "test/decoder_propq_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/defltfips_test" => [ "libcrypto", "test/libtestutil.a" ], @@ -7711,6 +8867,8 @@ our %unified_info = ( ], "test/endecode_test" => [ "libcrypto.a", + "providers/libcommon.a", + "providers/liblegacy.a", "test/libtestutil.a" ], "test/endecoder_legacy_test" => [ @@ -7754,6 +8912,10 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name" => [ "libcrypto" ], + "test/evp_pkey_dhkem_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/evp_pkey_dparams_test" => [ "libcrypto", "test/libtestutil.a" @@ -7762,10 +8924,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/evp_skey_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/evp_xof_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/exdatatest" => [ "libcrypto", "test/libtestutil.a" @@ -7804,6 +8974,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/hpke_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/http_test" => [ "libcrypto", "test/libtestutil.a" @@ -7816,17 +8990,25 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/json_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/keymgmt_internal_test" => [ "libcrypto.a", "test/libtestutil.a" ], "test/lhash_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/libtestutil.a" => [ "libcrypto" ], + "test/list_test" => [ + "test/libtestutil.a" + ], "test/localetest" => [ "libcrypto", "test/libtestutil.a" @@ -7839,10 +9021,26 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/membio_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/memleaktest" => [ "libcrypto", "test/libtestutil.a" ], + "test/ml_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_evp_extra_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/ml_kem_internal_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/modes_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7867,6 +9065,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pairwise_fail_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/param_build_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7899,6 +9101,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/pkcs12_api_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/pkcs12_format_test" => [ "libcrypto", "test/libtestutil.a" @@ -7919,6 +9125,11 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/priority_queue_test" => [ + "libcrypto", + "libssl.a", + "test/libtestutil.a" + ], "test/property_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7931,6 +9142,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/provider_default_search_path_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/provider_fallback_test" => [ "libcrypto", "test/libtestutil.a" @@ -7955,12 +9170,122 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/quic_ackm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_cfq_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_client_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fc_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_fifd_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_lcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_multistream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_newcid_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_qlog_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_radix_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_rcidm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_record_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srt_gen_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_srtm_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_stream_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_tserver_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txp_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_txpim_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quic_wire_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicapitest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], + "test/quicfaultstest" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/rand_status_test" => [ "libcrypto", "test/libtestutil.a" ], "test/rand_test" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/rc2test" => [ @@ -7975,7 +9300,7 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "libcrypto.a", "test/libtestutil.a" ], @@ -7984,6 +9309,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/rpktest" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/rsa_mp_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -7996,10 +9326,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], - "test/sanitytest" => [ + "test/rsa_x931_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], + "test/safe_math_test" => [ "libcrypto", "test/libtestutil.a" ], + "test/sanitytest" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/secmemtest" => [ "libcrypto", "test/libtestutil.a" @@ -8017,6 +9355,10 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/slh_dsa_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/sm2_internal_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8046,6 +9388,11 @@ our %unified_info = ( "libssl", "test/libtestutil.a" ], + "test/ssl_handshake_rtt_test" => [ + "libcrypto.a", + "libssl.a", + "test/libtestutil.a" + ], "test/ssl_old_test" => [ "libcrypto.a", "libssl.a", @@ -8062,8 +9409,8 @@ our %unified_info = ( "test/libtestutil.a" ], "test/sslapitest" => [ - "libcrypto", - "libssl", + "libcrypto.a", + "libssl.a", "test/libtestutil.a" ], "test/sslbuffertest" => [ @@ -8080,6 +9427,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/strtoultest" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/sysdefaulttest" => [ "libcrypto", "libssl", @@ -8089,8 +9440,12 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/threadpool_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/threadstest" => [ - "libcrypto", + "libcrypto.a", "test/libtestutil.a" ], "test/threadstest_fips" => [ @@ -8101,6 +9456,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/time_test" => [ + "libcrypto.a", + "test/libtestutil.a" + ], "test/tls13ccstest" => [ "libcrypto", "libssl", @@ -8111,6 +9470,11 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/tls13groupselection_test" => [ + "libcrypto", + "libssl", + "test/libtestutil.a" + ], "test/trace_api_test" => [ "libcrypto.a", "test/libtestutil.a" @@ -8148,6 +9512,10 @@ our %unified_info = ( "libssl.a", "test/libtestutil.a" ], + "test/x509_acert_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_check_cert_pkey_test" => [ "libcrypto", "test/libtestutil.a" @@ -8160,6 +9528,18 @@ our %unified_info = ( "libcrypto.a", "test/libtestutil.a" ], + "test/x509_load_cert_file_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_req_test" => [ + "libcrypto", + "test/libtestutil.a" + ], + "test/x509_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/x509_time_test" => [ "libcrypto", "test/libtestutil.a" @@ -8174,9 +9554,13 @@ our %unified_info = ( }, "dirinfo" => { "apps" => { + "deps" => [ + "apps/ca_internals_test-bin-ca.o" + ], "products" => { "bin" => [ - "apps/openssl" + "apps/openssl", + "test/ca_internals_test" ], "script" => [ "apps/CA.pl", @@ -8187,6 +9571,14 @@ our %unified_info = ( "apps/lib" => { "deps" => [ "apps/lib/openssl-bin-cmp_mock_srv.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", "apps/lib/cmp_client_test-bin-cmp_mock_srv.o", "apps/lib/uitest-bin-apps_ui.o", "apps/lib/libapps-lib-app_libctx.o", @@ -8195,12 +9587,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -8211,6 +9605,7 @@ our %unified_info = ( "products" => { "bin" => [ "apps/openssl", + "test/ca_internals_test", "test/cmp_client_test", "test/uitest" ], @@ -8222,8 +9617,12 @@ our %unified_info = ( }, "crypto" => { "deps" => [ + "crypto/asn1_time_test-bin-ctype.o", + "crypto/ca_internals_test-bin-ctype.o", + "crypto/packettest-bin-quic_vlint.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -8233,10 +9632,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -8253,6 +9655,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -8260,12 +9663,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libcrypto-lib-x86cpuid.o", @@ -8288,6 +9695,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -8296,9 +9704,15 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", "crypto/libfips-lib-x86cpuid.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test", + "test/packettest" + ], "lib" => [ "libcrypto", "providers/libfips.a" @@ -8341,6 +9755,8 @@ our %unified_info = ( }, "crypto/asn1" => { "deps" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", "crypto/asn1/libcrypto-lib-a_bitstr.o", "crypto/asn1/libcrypto-lib-a_d2i_fp.o", "crypto/asn1/libcrypto-lib-a_digest.o", @@ -8407,6 +9823,10 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" ], "products" => { + "bin" => [ + "test/asn1_time_test", + "test/ca_internals_test" + ], "lib" => [ "libcrypto" ] @@ -8472,6 +9892,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -8632,6 +10053,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -9003,7 +10425,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", - "crypto/err/libcrypto-lib-err_prn.o" + "crypto/err/libcrypto-lib-err_mark.o", + "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o" ], "products" => { "lib" => [ @@ -9104,7 +10528,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/evp/libfips-lib-asymcipher.o", "crypto/evp/libfips-lib-dh_support.o", "crypto/evp/libfips-lib-digest.o", @@ -9120,14 +10546,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", - "crypto/evp/libfips-lib-signature.o" + "crypto/evp/libfips-lib-s_lib.o", + "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o" ], "products" => { "lib" => [ @@ -9160,6 +10587,20 @@ our %unified_info = ( ] } }, + "crypto/hashtable" => { + "deps" => [ + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/hmac" => { "deps" => [ "crypto/hmac/libcrypto-lib-hmac.o", @@ -9172,6 +10613,17 @@ our %unified_info = ( ] } }, + "crypto/hpke" => { + "deps" => [ + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, "crypto/http" => { "deps" => [ "crypto/http/libcrypto-lib-http_client.o", @@ -9256,6 +10708,44 @@ our %unified_info = ( ] } }, + "crypto/ml_dsa" => { + "deps" => [ + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ml_kem" => { + "deps" => [ + "crypto/ml_kem/libcrypto-lib-ml_kem.o", + "crypto/ml_kem/libfips-lib-ml_kem.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/modes" => { "deps" => [ "crypto/modes/libcrypto-lib-cbc128.o", @@ -9270,6 +10760,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -9278,7 +10769,8 @@ our %unified_info = ( "crypto/modes/libfips-lib-ghash-x86.o", "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", - "crypto/modes/libfips-lib-xts128.o" + "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o" ], "products" => { "lib" => [ @@ -9422,6 +10914,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rand/libfips-lib-rand_lib.o" ], @@ -9572,6 +11065,36 @@ our %unified_info = ( ] } }, + "crypto/slh_dsa" => { + "deps" => [ + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/sm2" => { "deps" => [ "crypto/sm2/libcrypto-lib-sm2_crypt.o", @@ -9645,6 +11168,38 @@ our %unified_info = ( ] } }, + "crypto/thread" => { + "deps" => [ + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/thread/arch" => { + "deps" => [ + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, "crypto/ts" => { "deps" => [ "crypto/ts/libcrypto-lib-ts_asn1.o", @@ -9712,14 +11267,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -9728,12 +11291,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -9741,13 +11309,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -9765,6 +11340,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -9774,6 +11350,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -9801,6 +11378,7 @@ our %unified_info = ( "fuzz" => { "products" => { "bin" => [ + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -9811,13 +11389,31 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test" ] } }, "providers" => { "deps" => [ + "providers/endecode_test-bin-legacyprov.o", "providers/evp_extra_test-bin-legacyprov.o", "providers/libcrypto-lib-baseprov.o", "providers/libcrypto-lib-defltprov.o", @@ -9827,6 +11423,7 @@ our %unified_info = ( ], "products" => { "bin" => [ + "test/endecode_test", "test/evp_extra_test" ], "dso" => [ @@ -9877,8 +11474,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/der/libdefault-lib-der_rsa_sig.o", "providers/common/der/libdefault-lib-der_sm2_gen.o", @@ -9897,6 +11498,7 @@ our %unified_info = ( "providers/fips" => { "deps" => [ "providers/fips/fips-dso-fips_entry.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o" @@ -9940,6 +11542,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -9964,7 +11569,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -10061,7 +11672,10 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", - "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" + "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" ], "products" => { "lib" => [ @@ -10089,7 +11703,9 @@ our %unified_info = ( }, "providers/implementations/kdfs" => { "deps" => [ + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -10108,7 +11724,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", - "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" + "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" ], "products" => { "lib" => [ @@ -10120,13 +11737,22 @@ our %unified_info = ( }, "providers/implementations/kem" => { "deps" => [ + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", - "providers/implementations/kem/libfips-lib-rsa_kem.o" + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", + "providers/implementations/kem/libfips-lib-rsa_kem.o", + "providers/implementations/kem/libtemplate-lib-template_kem.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10138,19 +11764,29 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", - "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "products" => { "lib" => [ "providers/libdefault.a", - "providers/libfips.a" + "providers/libfips.a", + "providers/libtemplate.a" ] } }, @@ -10178,18 +11814,18 @@ our %unified_info = ( }, "providers/implementations/rands" => { "deps" => [ - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o" ], "products" => { @@ -10218,13 +11854,31 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", - "providers/implementations/signature/libfips-lib-rsa_sig.o" + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", + "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/skeymgmt" => { + "deps" => [ + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o" ], "products" => { "lib" => [ @@ -10252,14 +11906,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -10275,32 +11930,107 @@ our %unified_info = ( "ssl/libssl-lib-t1_trce.o", "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", - "ssl/libssl-lib-tls_srp.o", - "ssl/libdefault-lib-s3_cbc.o", - "ssl/libfips-lib-s3_cbc.o" + "ssl/libssl-lib-tls_srp.o" ], "products" => { "lib" => [ - "libssl", - "providers/libdefault.a", - "providers/libfips.a" + "libssl" + ] + } + }, + "ssl/quic" => { + "deps" => [ + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, "ssl/record" => { "deps" => [ - "ssl/record/libssl-lib-dtls1_bitmap.o", "ssl/record/libssl-lib-rec_layer_d1.o", - "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/libssl-lib-rec_layer_s3.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "ssl/record/methods" => { + "deps" => [ + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/record/methods/libcommon-lib-tls_pad.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o", + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "products" => { "lib" => [ "libssl", - "providers/libcommon.a" + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "ssl/rio" => { + "deps" => [ + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o" + ], + "products" => { + "lib" => [ + "libssl" ] } }, @@ -10338,9 +12068,40 @@ our %unified_info = ( "test/helpers/dtlstest-bin-ssltestlib.o", "test/helpers/endecode_test-bin-predefined_dhparams.o", "test/helpers/fatalerrtest-bin-ssltestlib.o", + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/helpers/pkcs12_api_test-bin-pkcs12.o", "test/helpers/pkcs12_format_test-bin-pkcs12.o", + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", "test/helpers/recordlentest-bin-ssltestlib.o", + "test/helpers/rpktest-bin-ssltestlib.o", "test/helpers/servername_test-bin-ssltestlib.o", + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/helpers/ssl_test-bin-handshake.o", "test/helpers/ssl_test-bin-handshake_srp.o", @@ -10349,7 +12110,8 @@ our %unified_info = ( "test/helpers/sslapitest-bin-ssltestlib.o", "test/helpers/sslbuffertest-bin-ssltestlib.o", "test/helpers/sslcorrupttest-bin-ssltestlib.o", - "test/helpers/tls13ccstest-bin-ssltestlib.o" + "test/helpers/tls13ccstest-bin-ssltestlib.o", + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" ], "products" => { "bin" => [ @@ -10367,16 +12129,37 @@ our %unified_info = ( "test/dtlstest", "test/endecode_test", "test/fatalerrtest", + "test/json_test", + "test/pkcs12_api_test", "test/pkcs12_format_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_radix_test", + "test/quic_srt_gen_test", + "test/quicapitest", + "test/quicfaultstest", "test/recordlentest", + "test/rpktest", "test/servername_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", "test/sslapitest", "test/sslbuffertest", "test/sslcorrupttest", - "test/tls13ccstest" + "test/tls13ccstest", + "test/tls13groupselection_test" + ] + } + }, + "test/radix" => { + "deps" => [ + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "products" => { + "bin" => [ + "test/quic_radix_test" ] } }, @@ -10388,6 +12171,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -10423,6 +12207,12 @@ our %unified_info = ( } }, "generate" => { + "OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], "apps/progs.c" => [ "apps/progs.pl", "\"-C\"", @@ -10433,6 +12223,19 @@ our %unified_info = ( "\"-H\"", "\$(APPS_OPENSSL)" ], + "builddata.pm" => [ + "util/mkinstallvars.pl", + "PREFIX=.", + "BINDIR=apps", + "APPLINKDIR=ms", + "LIBDIR=", + "INCLUDEDIR=include", + "\"INCLUDEDIR=\$(SRCDIR)/include\"", + "ENGINESDIR=engines", + "MODULESDIR=providers", + "\"VERSION=\$(VERSION)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"" + ], "crypto/aes/aes-586.S" => [ "crypto/aes/asm/aes-586.pl" ], @@ -10454,6 +12257,24 @@ our %unified_info = ( "crypto/aes/aes-ppc.s" => [ "crypto/aes/asm/aes-ppc.pl" ], + "crypto/aes/aes-riscv32-zkn.s" => [ + "crypto/aes/asm/aes-riscv32-zkn.pl" + ], + "crypto/aes/aes-riscv64-zkn.s" => [ + "crypto/aes/asm/aes-riscv64-zkn.pl" + ], + "crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvbb-zvkg-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkb-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkb-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkned.pl" + ], + "crypto/aes/aes-riscv64.s" => [ + "crypto/aes/asm/aes-riscv64.pl" + ], "crypto/aes/aes-s390x.S" => [ "crypto/aes/asm/aes-s390x.pl" ], @@ -10481,6 +12302,9 @@ our %unified_info = ( "crypto/aes/aesni-x86_64.s" => [ "crypto/aes/asm/aesni-x86_64.pl" ], + "crypto/aes/aesni-xts-avx512.s" => [ + "crypto/aes/asm/aesni-xts-avx512.pl" + ], "crypto/aes/aesp8-ppc.s" => [ "crypto/aes/asm/aesp8-ppc.pl" ], @@ -10493,12 +12317,18 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.S" => [ "crypto/aes/asm/bsaes-armv7.pl" ], + "crypto/aes/bsaes-armv8.S" => [ + "crypto/aes/asm/bsaes-armv8.pl" + ], "crypto/aes/bsaes-x86_64.s" => [ "crypto/aes/asm/bsaes-x86_64.pl" ], "crypto/aes/vpaes-armv8.S" => [ "crypto/aes/asm/vpaes-armv8.pl" ], + "crypto/aes/vpaes-loongarch64.S" => [ + "crypto/aes/asm/vpaes-loongarch64.pl" + ], "crypto/aes/vpaes-ppc.s" => [ "crypto/aes/asm/vpaes-ppc.pl" ], @@ -10559,15 +12389,33 @@ our %unified_info = ( "crypto/bn/ppc-mont.s" => [ "crypto/bn/asm/ppc-mont.pl" ], + "crypto/bn/ppc64-mont-fixed.s" => [ + "crypto/bn/asm/ppc64-mont-fixed.pl" + ], "crypto/bn/ppc64-mont.s" => [ "crypto/bn/asm/ppc64-mont.pl" ], + "crypto/bn/rsaz-2k-avx512.s" => [ + "crypto/bn/asm/rsaz-2k-avx512.pl" + ], + "crypto/bn/rsaz-2k-avxifma.s" => [ + "crypto/bn/asm/rsaz-2k-avxifma.pl" + ], + "crypto/bn/rsaz-3k-avx512.s" => [ + "crypto/bn/asm/rsaz-3k-avx512.pl" + ], + "crypto/bn/rsaz-3k-avxifma.s" => [ + "crypto/bn/asm/rsaz-3k-avxifma.pl" + ], + "crypto/bn/rsaz-4k-avx512.s" => [ + "crypto/bn/asm/rsaz-4k-avx512.pl" + ], + "crypto/bn/rsaz-4k-avxifma.s" => [ + "crypto/bn/asm/rsaz-4k-avxifma.pl" + ], "crypto/bn/rsaz-avx2.s" => [ "crypto/bn/asm/rsaz-avx2.pl" ], - "crypto/bn/rsaz-avx512.s" => [ - "crypto/bn/asm/rsaz-avx512.pl" - ], "crypto/bn/rsaz-x86_64.s" => [ "crypto/bn/asm/rsaz-x86_64.pl" ], @@ -10629,6 +12477,9 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.S" => [ "crypto/chacha/asm/chacha-armv4.pl" ], + "crypto/chacha/chacha-armv8-sve.S" => [ + "crypto/chacha/asm/chacha-armv8-sve.pl" + ], "crypto/chacha/chacha-armv8.S" => [ "crypto/chacha/asm/chacha-armv8.pl" ], @@ -10641,9 +12492,19 @@ our %unified_info = ( "crypto/chacha/chacha-ia64.s" => [ "crypto/chacha/chacha-ia64.S" ], + "crypto/chacha/chacha-loongarch64.S" => [ + "crypto/chacha/asm/chacha-loongarch64.pl" + ], "crypto/chacha/chacha-ppc.s" => [ "crypto/chacha/asm/chacha-ppc.pl" ], + "crypto/chacha/chacha-riscv64-v-zbb-zvkb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl", + "zvkb" + ], + "crypto/chacha/chacha-riscv64-v-zbb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl" + ], "crypto/chacha/chacha-s390x.S" => [ "crypto/chacha/asm/chacha-s390x.pl" ], @@ -10653,6 +12514,9 @@ our %unified_info = ( "crypto/chacha/chacha-x86_64.s" => [ "crypto/chacha/asm/chacha-x86_64.pl" ], + "crypto/chacha/chachap10-ppc.s" => [ + "crypto/chacha/asm/chachap10-ppc.pl" + ], "crypto/des/crypt586.S" => [ "crypto/des/asm/crypt586.pl" ], @@ -10665,6 +12529,9 @@ our %unified_info = ( "crypto/des/dest4-sparcv9.S" => [ "crypto/des/asm/dest4-sparcv9.pl" ], + "crypto/ec/ecp_nistp384-ppc64.s" => [ + "crypto/ec/asm/ecp_nistp384-ppc64.pl" + ], "crypto/ec/ecp_nistp521-ppc64.s" => [ "crypto/ec/asm/ecp_nistp521-ppc64.pl" ], @@ -10689,6 +12556,9 @@ our %unified_info = ( "crypto/ec/ecp_nistz256-x86_64.s" => [ "crypto/ec/asm/ecp_nistz256-x86_64.pl" ], + "crypto/ec/ecp_sm2p256-armv8.S" => [ + "crypto/ec/asm/ecp_sm2p256-armv8.pl" + ], "crypto/ec/x25519-ppc64.s" => [ "crypto/ec/asm/x25519-ppc64.pl" ], @@ -10698,18 +12568,39 @@ our %unified_info = ( "crypto/ia64cpuid.s" => [ "crypto/ia64cpuid.S" ], + "crypto/loongarch64cpuid.s" => [ + "crypto/loongarch64cpuid.pl" + ], "crypto/md5/md5-586.S" => [ "crypto/md5/asm/md5-586.pl" ], + "crypto/md5/md5-aarch64.S" => [ + "crypto/md5/asm/md5-aarch64.pl" + ], + "crypto/md5/md5-loongarch64.S" => [ + "crypto/md5/asm/md5-loongarch64.pl" + ], "crypto/md5/md5-sparcv9.S" => [ "crypto/md5/asm/md5-sparcv9.pl" ], "crypto/md5/md5-x86_64.s" => [ "crypto/md5/asm/md5-x86_64.pl" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.S" => [ + "crypto/modes/asm/aes-gcm-armv8-unroll8_64.pl" + ], "crypto/modes/aes-gcm-armv8_64.S" => [ "crypto/modes/asm/aes-gcm-armv8_64.pl" ], + "crypto/modes/aes-gcm-avx512.s" => [ + "crypto/modes/asm/aes-gcm-avx512.pl" + ], + "crypto/modes/aes-gcm-ppc.s" => [ + "crypto/modes/asm/aes-gcm-ppc.pl" + ], + "crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s" => [ + "crypto/modes/asm/aes-gcm-riscv64-zvkb-zvkg-zvkned.pl" + ], "crypto/modes/aesni-gcm-x86_64.s" => [ "crypto/modes/asm/aesni-gcm-x86_64.pl" ], @@ -10728,6 +12619,15 @@ our %unified_info = ( "crypto/modes/ghash-parisc.s" => [ "crypto/modes/asm/ghash-parisc.pl" ], + "crypto/modes/ghash-riscv64-zvkb-zvbc.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkb-zvbc.pl" + ], + "crypto/modes/ghash-riscv64-zvkg.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkg.pl" + ], + "crypto/modes/ghash-riscv64.s" => [ + "crypto/modes/asm/ghash-riscv64.pl" + ], "crypto/modes/ghash-s390x.S" => [ "crypto/modes/asm/ghash-s390x.pl" ], @@ -10746,6 +12646,9 @@ our %unified_info = ( "crypto/modes/ghashv8-armx.S" => [ "crypto/modes/asm/ghashv8-armx.pl" ], + "crypto/params_idx.c" => [ + "crypto/params_idx.c.in" + ], "crypto/pariscid.s" => [ "crypto/pariscid.pl" ], @@ -10806,6 +12709,12 @@ our %unified_info = ( "crypto/ripemd/rmd-586.S" => [ "crypto/ripemd/asm/rmd-586.pl" ], + "crypto/riscv32cpuid.s" => [ + "crypto/riscv32cpuid.pl" + ], + "crypto/riscv64cpuid.s" => [ + "crypto/riscv64cpuid.pl" + ], "crypto/s390xcpuid.S" => [ "crypto/s390xcpuid.pl" ], @@ -10914,6 +12823,9 @@ our %unified_info = ( "crypto/sha/sha256-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S" => [ + "crypto/sha/asm/sha256-riscv64-zvkb-zvknha_or_zvknhb.pl" + ], "crypto/sha/sha256-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -10950,6 +12862,9 @@ our %unified_info = ( "crypto/sha/sha512-ppc.s" => [ "crypto/sha/asm/sha512-ppc.pl" ], + "crypto/sha/sha512-riscv64-zvkb-zvknhb.S" => [ + "crypto/sha/asm/sha512-riscv64-zvkb-zvknhb.pl" + ], "crypto/sha/sha512-s390x.S" => [ "crypto/sha/asm/sha512-s390x.pl" ], @@ -10962,6 +12877,24 @@ our %unified_info = ( "crypto/sha/sha512p8-ppc.s" => [ "crypto/sha/asm/sha512p8-ppc.pl" ], + "crypto/sm3/sm3-armv8.S" => [ + "crypto/sm3/asm/sm3-armv8.pl" + ], + "crypto/sm3/sm3-riscv64-zvksh.S" => [ + "crypto/sm3/asm/sm3-riscv64-zvksh.pl" + ], + "crypto/sm4/sm4-armv8.S" => [ + "crypto/sm4/asm/sm4-armv8.pl" + ], + "crypto/sm4/sm4-riscv64-zvksed.s" => [ + "crypto/sm4/asm/sm4-riscv64-zvksed.pl" + ], + "crypto/sm4/vpsm4-armv8.S" => [ + "crypto/sm4/asm/vpsm4-armv8.pl" + ], + "crypto/sm4/vpsm4_ex-armv8.S" => [ + "crypto/sm4/asm/vpsm4_ex-armv8.pl" + ], "crypto/uplink-ia64.s" => [ "ms/uplink-ia64.pl" ], @@ -11127,6 +13060,9 @@ our %unified_info = ( "doc/html/man1/openssl-sess_id.html" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/html/man1/openssl-smime.html" => [ "doc/man1/openssl-smime.pod" ], @@ -11268,6 +13204,9 @@ our %unified_info = ( "doc/html/man3/BIO_get_ex_new_index.html" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/html/man3/BIO_meth_new.html" => [ "doc/man3/BIO_meth_new.pod" ], @@ -11304,6 +13243,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_datagram.html" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/html/man3/BIO_s_fd.html" => [ "doc/man3/BIO_s_fd.pod" ], @@ -11319,6 +13261,9 @@ our %unified_info = ( "doc/html/man3/BIO_s_socket.html" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/html/man3/BIO_set_callback.html" => [ "doc/man3/BIO_set_callback.pod" ], @@ -11391,6 +13336,9 @@ our %unified_info = ( "doc/html/man3/BUF_MEM_new.html" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -11457,6 +13405,9 @@ our %unified_info = ( "doc/html/man3/CMS_verify_receipt.html" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/html/man3/CONF_modules_free.html" => [ "doc/man3/CONF_modules_free.pod" ], @@ -11556,6 +13507,12 @@ our %unified_info = ( "doc/html/man3/DTLS_set_timer_cb.html" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/html/man3/DTLSv1_listen.html" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -11694,6 +13651,9 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/html/man3/EVP_PKEY_CTX_new.html" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -11811,6 +13771,12 @@ our %unified_info = ( "doc/html/man3/EVP_SIGNATURE.html" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/html/man3/EVP_SealInit.html" => [ "doc/man3/EVP_SealInit.pod" ], @@ -11898,6 +13864,9 @@ our %unified_info = ( "doc/html/man3/EVP_whirlpool.html" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/html/man3/HMAC.html" => [ "doc/man3/HMAC.pod" ], @@ -11970,9 +13939,15 @@ our %unified_info = ( "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/html/man3/OPENSSL_malloc.html" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/html/man3/OPENSSL_s390xcap.html" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -11988,12 +13963,18 @@ our %unified_info = ( "doc/html/man3/OSSL_CALLBACK.html" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/html/man3/OSSL_CMP_CTX_new.html" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -12063,9 +14044,18 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -12075,12 +14065,24 @@ our %unified_info = ( "doc/html/man3/OSSL_HTTP_transfer.html" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/html/man3/OSSL_ITEM.html" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/html/man3/OSSL_LIB_CTX.html" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/html/man3/OSSL_PARAM.html" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -12096,9 +14098,15 @@ our %unified_info = ( "doc/html/man3/OSSL_PARAM_int.html" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/html/man3/OSSL_PROVIDER.html" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/html/man3/OSSL_SELF_TEST_new.html" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -12123,6 +14131,9 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_open.html" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/html/man3/OSSL_trace_enabled.html" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -12138,6 +14149,9 @@ our %unified_info = ( "doc/html/man3/OpenSSL_version.html" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -12174,6 +14188,9 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -12447,6 +14464,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/html/man3/SSL_CTX_set1_curves.html" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -12486,6 +14506,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -12507,6 +14530,9 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -12621,6 +14647,9 @@ our %unified_info = ( "doc/html/man3/SSL_accept.html" => [ "doc/man3/SSL_accept.pod" ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/html/man3/SSL_alert_type_string.html" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -12648,9 +14677,21 @@ our %unified_info = ( "doc/html/man3/SSL_free.html" => [ "doc/man3/SSL_free.pod" ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/html/man3/SSL_get0_peer_scts.html" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/html/man3/SSL_get_SSL_CTX.html" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -12666,6 +14707,9 @@ our %unified_info = ( "doc/html/man3/SSL_get_client_random.html" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/html/man3/SSL_get_current_cipher.html" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -12675,12 +14719,18 @@ our %unified_info = ( "doc/html/man3/SSL_get_error.html" => [ "doc/man3/SSL_get_error.pod" ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/html/man3/SSL_get_extms_support.html" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/html/man3/SSL_get_fd.html" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/html/man3/SSL_get_peer_cert_chain.html" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -12699,12 +14749,24 @@ our %unified_info = ( "doc/html/man3/SSL_get_rbio.html" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/html/man3/SSL_get_session.html" => [ "doc/man3/SSL_get_session.pod" ], "doc/html/man3/SSL_get_shared_sigalgs.html" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/html/man3/SSL_get_verify_result.html" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -12714,9 +14776,15 @@ our %unified_info = ( "doc/html/man3/SSL_group_to_name.html" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/html/man3/SSL_in_init.html" => [ "doc/man3/SSL_in_init.pod" ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/html/man3/SSL_key_update.html" => [ "doc/man3/SSL_key_update.pod" ], @@ -12729,9 +14797,21 @@ our %unified_info = ( "doc/html/man3/SSL_new.html" => [ "doc/man3/SSL_new.pod" ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/html/man3/SSL_pending.html" => [ "doc/man3/SSL_pending.pod" ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], "doc/html/man3/SSL_read.html" => [ "doc/man3/SSL_read.pod" ], @@ -12747,24 +14827,45 @@ our %unified_info = ( "doc/html/man3/SSL_set1_host.html" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/html/man3/SSL_set_async_callback.html" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/html/man3/SSL_set_bio.html" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/html/man3/SSL_set_connect_state.html" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/html/man3/SSL_set_fd.html" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/html/man3/SSL_set_retry_verify.html" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/html/man3/SSL_set_session.html" => [ "doc/man3/SSL_set_session.pod" ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/html/man3/SSL_set_shutdown.html" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -12777,6 +14878,12 @@ our %unified_info = ( "doc/html/man3/SSL_state_string.html" => [ "doc/man3/SSL_state_string.pod" ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/html/man3/SSL_want.html" => [ "doc/man3/SSL_want.pod" ], @@ -12786,8 +14893,8 @@ our %unified_info = ( "doc/html/man3/TS_RESP_CTX_new.html" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/html/man3/UI_STRING.html" => [ "doc/man3/UI_STRING.pod" @@ -12807,6 +14914,21 @@ our %unified_info = ( "doc/html/man3/X509V3_set_ctx.html" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/html/man3/X509_ALGOR_dup.html" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -12855,6 +14977,9 @@ our %unified_info = ( "doc/html/man3/X509_SIG_get0.html" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/html/man3/X509_STORE_CTX_get_error.html" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -12921,6 +15046,9 @@ our %unified_info = ( "doc/html/man3/X509_get0_uids.html" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/html/man3/X509_get_extension_flags.html" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -13044,9 +15172,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-SM4.html" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/html/man7/EVP_KDF-HKDF.html" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/html/man7/EVP_KDF-KB.html" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -13062,6 +15196,9 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/html/man7/EVP_KDF-SCRYPT.html" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -13086,9 +15223,18 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X963.html" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/html/man7/EVP_KEM-RSA.html" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/html/man7/EVP_KEYEXCH-DH.html" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -13122,6 +15268,9 @@ our %unified_info = ( "doc/html/man7/EVP_MD-BLAKE2.html" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/html/man7/EVP_MD-MD2.html" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -13179,15 +15328,27 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-HMAC.html" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/html/man7/EVP_PKEY-RSA.html" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/html/man7/EVP_PKEY-SM2.html" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/html/man7/EVP_PKEY-X25519.html" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -13197,6 +15358,9 @@ our %unified_info = ( "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -13218,9 +15382,15 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -13236,6 +15406,9 @@ our %unified_info = ( "doc/html/man7/OSSL_PROVIDER-null.html" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/html/man7/RAND.html" => [ "doc/man7/RAND.pod" ], @@ -13248,9 +15421,6 @@ our %unified_info = ( "doc/html/man7/bio.html" => [ "doc/man7/bio.pod" ], - "doc/html/man7/crypto.html" => [ - "doc/man7/crypto.pod" - ], "doc/html/man7/ct.html" => [ "doc/man7/ct.pod" ], @@ -13281,9 +15451,6 @@ our %unified_info = ( "doc/html/man7/life_cycle-rand.html" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/html/man7/migration_guide.html" => [ - "doc/man7/migration_guide.pod" - ], "doc/html/man7/openssl-core.h.html" => [ "doc/man7/openssl-core.h.pod" ], @@ -13299,12 +15466,66 @@ our %unified_info = ( "doc/html/man7/openssl-glossary.html" => [ "doc/man7/openssl-glossary.pod" ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], "doc/html/man7/openssl-threads.html" => [ "doc/man7/openssl-threads.pod" ], "doc/html/man7/openssl_user_macros.html" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/html/man7/ossl_store-file.html" => [ "doc/man7/ossl_store-file.pod" ], @@ -13359,6 +15580,9 @@ our %unified_info = ( "doc/html/man7/provider-signature.html" => [ "doc/man7/provider-signature.pod" ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/html/man7/provider-storemgmt.html" => [ "doc/man7/provider-storemgmt.pod" ], @@ -13368,9 +15592,6 @@ our %unified_info = ( "doc/html/man7/proxy-certificates.html" => [ "doc/man7/proxy-certificates.pod" ], - "doc/html/man7/ssl.html" => [ - "doc/man7/ssl.pod" - ], "doc/html/man7/x509.html" => [ "doc/man7/x509.pod" ], @@ -13518,6 +15739,9 @@ our %unified_info = ( "doc/man/man1/openssl-sess_id.1" => [ "doc/man1/openssl-sess_id.pod" ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], "doc/man/man1/openssl-smime.1" => [ "doc/man1/openssl-smime.pod" ], @@ -13659,6 +15883,9 @@ our %unified_info = ( "doc/man/man3/BIO_get_ex_new_index.3" => [ "doc/man3/BIO_get_ex_new_index.pod" ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], "doc/man/man3/BIO_meth_new.3" => [ "doc/man3/BIO_meth_new.pod" ], @@ -13695,6 +15922,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_datagram.3" => [ "doc/man3/BIO_s_datagram.pod" ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], "doc/man/man3/BIO_s_fd.3" => [ "doc/man3/BIO_s_fd.pod" ], @@ -13710,6 +15940,9 @@ our %unified_info = ( "doc/man/man3/BIO_s_socket.3" => [ "doc/man3/BIO_s_socket.pod" ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], "doc/man/man3/BIO_set_callback.3" => [ "doc/man3/BIO_set_callback.pod" ], @@ -13782,6 +16015,9 @@ our %unified_info = ( "doc/man/man3/BUF_MEM_new.3" => [ "doc/man3/BUF_MEM_new.pod" ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ "doc/man3/CMS_EncryptedData_decrypt.pod" ], @@ -13848,6 +16084,9 @@ our %unified_info = ( "doc/man/man3/CMS_verify_receipt.3" => [ "doc/man3/CMS_verify_receipt.pod" ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], "doc/man/man3/CONF_modules_free.3" => [ "doc/man3/CONF_modules_free.pod" ], @@ -13947,6 +16186,12 @@ our %unified_info = ( "doc/man/man3/DTLS_set_timer_cb.3" => [ "doc/man3/DTLS_set_timer_cb.pod" ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], "doc/man/man3/DTLSv1_listen.3" => [ "doc/man3/DTLSv1_listen.pod" ], @@ -14085,6 +16330,9 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], "doc/man/man3/EVP_PKEY_CTX_new.3" => [ "doc/man3/EVP_PKEY_CTX_new.pod" ], @@ -14202,6 +16450,12 @@ our %unified_info = ( "doc/man/man3/EVP_SIGNATURE.3" => [ "doc/man3/EVP_SIGNATURE.pod" ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], "doc/man/man3/EVP_SealInit.3" => [ "doc/man3/EVP_SealInit.pod" ], @@ -14289,6 +16543,9 @@ our %unified_info = ( "doc/man/man3/EVP_whirlpool.3" => [ "doc/man3/EVP_whirlpool.pod" ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], "doc/man/man3/HMAC.3" => [ "doc/man3/HMAC.pod" ], @@ -14361,9 +16618,15 @@ our %unified_info = ( "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ "doc/man3/OPENSSL_load_builtin_modules.pod" ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], "doc/man/man3/OPENSSL_malloc.3" => [ "doc/man3/OPENSSL_malloc.pod" ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], "doc/man/man3/OPENSSL_s390xcap.3" => [ "doc/man3/OPENSSL_s390xcap.pod" ], @@ -14379,12 +16642,18 @@ our %unified_info = ( "doc/man/man3/OSSL_CALLBACK.3" => [ "doc/man3/OSSL_CALLBACK.pod" ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], "doc/man/man3/OSSL_CMP_CTX_new.3" => [ "doc/man3/OSSL_CMP_CTX_new.pod" ], "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ "doc/man3/OSSL_CMP_ITAV_set0.pod" ], @@ -14454,9 +16723,18 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ "doc/man3/OSSL_ENCODER_to_bio.pod" ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ "doc/man3/OSSL_ESS_check_signing_certs.pod" ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ], @@ -14466,12 +16744,24 @@ our %unified_info = ( "doc/man/man3/OSSL_HTTP_transfer.3" => [ "doc/man3/OSSL_HTTP_transfer.pod" ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], "doc/man/man3/OSSL_ITEM.3" => [ "doc/man3/OSSL_ITEM.pod" ], "doc/man/man3/OSSL_LIB_CTX.3" => [ "doc/man3/OSSL_LIB_CTX.pod" ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], "doc/man/man3/OSSL_PARAM.3" => [ "doc/man3/OSSL_PARAM.pod" ], @@ -14487,9 +16777,15 @@ our %unified_info = ( "doc/man/man3/OSSL_PARAM_int.3" => [ "doc/man3/OSSL_PARAM_int.pod" ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], "doc/man/man3/OSSL_PROVIDER.3" => [ "doc/man3/OSSL_PROVIDER.pod" ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], "doc/man/man3/OSSL_SELF_TEST_new.3" => [ "doc/man3/OSSL_SELF_TEST_new.pod" ], @@ -14514,6 +16810,9 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_open.3" => [ "doc/man3/OSSL_STORE_open.pod" ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], "doc/man/man3/OSSL_trace_enabled.3" => [ "doc/man3/OSSL_trace_enabled.pod" ], @@ -14529,6 +16828,9 @@ our %unified_info = ( "doc/man/man3/OpenSSL_version.3" => [ "doc/man3/OpenSSL_version.pod" ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ], @@ -14565,6 +16867,9 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ "doc/man3/PKCS12_add1_attr_by_NID.pod" ], @@ -14838,6 +17143,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ "doc/man3/SSL_CTX_set0_CA_list.pod" ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], "doc/man/man3/SSL_CTX_set1_curves.3" => [ "doc/man3/SSL_CTX_set1_curves.pod" ], @@ -14877,6 +17185,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ "doc/man3/SSL_CTX_set_generate_session_id.pod" ], @@ -14898,6 +17209,9 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ "doc/man3/SSL_CTX_set_msg_callback.pod" ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ "doc/man3/SSL_CTX_set_num_tickets.pod" ], @@ -15012,6 +17326,9 @@ our %unified_info = ( "doc/man/man3/SSL_accept.3" => [ "doc/man3/SSL_accept.pod" ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], "doc/man/man3/SSL_alert_type_string.3" => [ "doc/man3/SSL_alert_type_string.pod" ], @@ -15039,9 +17356,21 @@ our %unified_info = ( "doc/man/man3/SSL_free.3" => [ "doc/man3/SSL_free.pod" ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], "doc/man/man3/SSL_get0_peer_scts.3" => [ "doc/man3/SSL_get0_peer_scts.pod" ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], "doc/man/man3/SSL_get_SSL_CTX.3" => [ "doc/man3/SSL_get_SSL_CTX.pod" ], @@ -15057,6 +17386,9 @@ our %unified_info = ( "doc/man/man3/SSL_get_client_random.3" => [ "doc/man3/SSL_get_client_random.pod" ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], "doc/man/man3/SSL_get_current_cipher.3" => [ "doc/man3/SSL_get_current_cipher.pod" ], @@ -15066,12 +17398,18 @@ our %unified_info = ( "doc/man/man3/SSL_get_error.3" => [ "doc/man3/SSL_get_error.pod" ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], "doc/man/man3/SSL_get_extms_support.3" => [ "doc/man3/SSL_get_extms_support.pod" ], "doc/man/man3/SSL_get_fd.3" => [ "doc/man3/SSL_get_fd.pod" ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], "doc/man/man3/SSL_get_peer_cert_chain.3" => [ "doc/man3/SSL_get_peer_cert_chain.pod" ], @@ -15090,12 +17428,24 @@ our %unified_info = ( "doc/man/man3/SSL_get_rbio.3" => [ "doc/man3/SSL_get_rbio.pod" ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], "doc/man/man3/SSL_get_session.3" => [ "doc/man3/SSL_get_session.pod" ], "doc/man/man3/SSL_get_shared_sigalgs.3" => [ "doc/man3/SSL_get_shared_sigalgs.pod" ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], "doc/man/man3/SSL_get_verify_result.3" => [ "doc/man3/SSL_get_verify_result.pod" ], @@ -15105,9 +17455,15 @@ our %unified_info = ( "doc/man/man3/SSL_group_to_name.3" => [ "doc/man3/SSL_group_to_name.pod" ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], "doc/man/man3/SSL_in_init.3" => [ "doc/man3/SSL_in_init.pod" ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], "doc/man/man3/SSL_key_update.3" => [ "doc/man3/SSL_key_update.pod" ], @@ -15120,9 +17476,21 @@ our %unified_info = ( "doc/man/man3/SSL_new.3" => [ "doc/man3/SSL_new.pod" ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], "doc/man/man3/SSL_pending.3" => [ "doc/man3/SSL_pending.pod" ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], "doc/man/man3/SSL_read.3" => [ "doc/man3/SSL_read.pod" ], @@ -15138,24 +17506,45 @@ our %unified_info = ( "doc/man/man3/SSL_set1_host.3" => [ "doc/man3/SSL_set1_host.pod" ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], "doc/man/man3/SSL_set_async_callback.3" => [ "doc/man3/SSL_set_async_callback.pod" ], "doc/man/man3/SSL_set_bio.3" => [ "doc/man3/SSL_set_bio.pod" ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], "doc/man/man3/SSL_set_connect_state.3" => [ "doc/man3/SSL_set_connect_state.pod" ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], "doc/man/man3/SSL_set_fd.3" => [ "doc/man3/SSL_set_fd.pod" ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], "doc/man/man3/SSL_set_retry_verify.3" => [ "doc/man3/SSL_set_retry_verify.pod" ], "doc/man/man3/SSL_set_session.3" => [ "doc/man3/SSL_set_session.pod" ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], "doc/man/man3/SSL_set_shutdown.3" => [ "doc/man3/SSL_set_shutdown.pod" ], @@ -15168,6 +17557,12 @@ our %unified_info = ( "doc/man/man3/SSL_state_string.3" => [ "doc/man3/SSL_state_string.pod" ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], "doc/man/man3/SSL_want.3" => [ "doc/man3/SSL_want.pod" ], @@ -15177,8 +17572,8 @@ our %unified_info = ( "doc/man/man3/TS_RESP_CTX_new.3" => [ "doc/man3/TS_RESP_CTX_new.pod" ], - "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ - "doc/man3/TS_VERIFY_CTX_set_certs.pod" + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" ], "doc/man/man3/UI_STRING.3" => [ "doc/man3/UI_STRING.pod" @@ -15198,6 +17593,21 @@ our %unified_info = ( "doc/man/man3/X509V3_set_ctx.3" => [ "doc/man3/X509V3_set_ctx.pod" ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], "doc/man/man3/X509_ALGOR_dup.3" => [ "doc/man3/X509_ALGOR_dup.pod" ], @@ -15246,6 +17656,9 @@ our %unified_info = ( "doc/man/man3/X509_SIG_get0.3" => [ "doc/man3/X509_SIG_get0.pod" ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], "doc/man/man3/X509_STORE_CTX_get_error.3" => [ "doc/man3/X509_STORE_CTX_get_error.pod" ], @@ -15312,6 +17725,9 @@ our %unified_info = ( "doc/man/man3/X509_get0_uids.3" => [ "doc/man3/X509_get0_uids.pod" ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], "doc/man/man3/X509_get_extension_flags.3" => [ "doc/man3/X509_get_extension_flags.pod" ], @@ -15435,9 +17851,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-SM4.7" => [ "doc/man7/EVP_CIPHER-SM4.pod" ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], "doc/man/man7/EVP_KDF-HKDF.7" => [ "doc/man7/EVP_KDF-HKDF.pod" ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], "doc/man/man7/EVP_KDF-KB.7" => [ "doc/man7/EVP_KDF-KB.pod" ], @@ -15453,6 +17875,9 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ "doc/man7/EVP_KDF-PKCS12KDF.pod" ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], "doc/man/man7/EVP_KDF-SCRYPT.7" => [ "doc/man7/EVP_KDF-SCRYPT.pod" ], @@ -15477,9 +17902,18 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X963.7" => [ "doc/man7/EVP_KDF-X963.pod" ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], "doc/man/man7/EVP_KEM-RSA.7" => [ "doc/man7/EVP_KEM-RSA.pod" ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], "doc/man/man7/EVP_KEYEXCH-DH.7" => [ "doc/man7/EVP_KEYEXCH-DH.pod" ], @@ -15513,6 +17947,9 @@ our %unified_info = ( "doc/man/man7/EVP_MD-BLAKE2.7" => [ "doc/man7/EVP_MD-BLAKE2.pod" ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], "doc/man/man7/EVP_MD-MD2.7" => [ "doc/man7/EVP_MD-MD2.pod" ], @@ -15570,15 +18007,27 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-HMAC.7" => [ "doc/man7/EVP_PKEY-HMAC.pod" ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], "doc/man/man7/EVP_PKEY-RSA.7" => [ "doc/man7/EVP_PKEY-RSA.pod" ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], "doc/man/man7/EVP_PKEY-SM2.7" => [ "doc/man7/EVP_PKEY-SM2.pod" ], "doc/man/man7/EVP_PKEY-X25519.7" => [ "doc/man7/EVP_PKEY-X25519.pod" ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ "doc/man7/EVP_RAND-CTR-DRBG.pod" ], @@ -15588,6 +18037,9 @@ our %unified_info = ( "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ "doc/man7/EVP_RAND-SEED-SRC.pod" ], @@ -15609,9 +18061,15 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ "doc/man7/EVP_SIGNATURE-HMAC.pod" ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ "doc/man7/EVP_SIGNATURE-RSA.pod" ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ "doc/man7/OSSL_PROVIDER-FIPS.pod" ], @@ -15627,6 +18085,9 @@ our %unified_info = ( "doc/man/man7/OSSL_PROVIDER-null.7" => [ "doc/man7/OSSL_PROVIDER-null.pod" ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], "doc/man/man7/RAND.7" => [ "doc/man7/RAND.pod" ], @@ -15639,9 +18100,6 @@ our %unified_info = ( "doc/man/man7/bio.7" => [ "doc/man7/bio.pod" ], - "doc/man/man7/crypto.7" => [ - "doc/man7/crypto.pod" - ], "doc/man/man7/ct.7" => [ "doc/man7/ct.pod" ], @@ -15672,9 +18130,6 @@ our %unified_info = ( "doc/man/man7/life_cycle-rand.7" => [ "doc/man7/life_cycle-rand.pod" ], - "doc/man/man7/migration_guide.7" => [ - "doc/man7/migration_guide.pod" - ], "doc/man/man7/openssl-core.h.7" => [ "doc/man7/openssl-core.h.pod" ], @@ -15690,12 +18145,66 @@ our %unified_info = ( "doc/man/man7/openssl-glossary.7" => [ "doc/man7/openssl-glossary.pod" ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], "doc/man/man7/openssl-threads.7" => [ "doc/man7/openssl-threads.pod" ], "doc/man/man7/openssl_user_macros.7" => [ "doc/man7/openssl_user_macros.pod" ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], "doc/man/man7/ossl_store-file.7" => [ "doc/man7/ossl_store-file.pod" ], @@ -15750,6 +18259,9 @@ our %unified_info = ( "doc/man/man7/provider-signature.7" => [ "doc/man7/provider-signature.pod" ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], "doc/man/man7/provider-storemgmt.7" => [ "doc/man7/provider-storemgmt.pod" ], @@ -15759,9 +18271,6 @@ our %unified_info = ( "doc/man/man7/proxy-certificates.7" => [ "doc/man7/proxy-certificates.pod" ], - "doc/man/man7/ssl.7" => [ - "doc/man7/ssl.pod" - ], "doc/man/man7/x509.7" => [ "doc/man7/x509.pod" ], @@ -15897,6 +18406,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc/man1/openssl-sess_id.pod.in" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in" + ], "doc/man1/openssl-smime.pod" => [ "doc/man1/openssl-smime.pod.in" ], @@ -15933,12 +18445,30 @@ our %unified_info = ( "engines/e_padlock-x86_64.s" => [ "engines/asm/e_padlock-x86_64.pl" ], + "exporters/OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], + "exporters/libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], + "exporters/libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "exporters/openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "include/crypto/bn_conf.h" => [ "include/crypto/bn_conf.h.in" ], "include/crypto/dso_conf.h" => [ "include/crypto/dso_conf.h.in" ], + "include/internal/param_names.h" => [ + "include/internal/param_names.h.in" + ], "include/openssl/asn1.h" => [ "include/openssl/asn1.h.in" ], @@ -15954,12 +18484,18 @@ our %unified_info = ( "include/openssl/cms.h" => [ "include/openssl/cms.h.in" ], + "include/openssl/comp.h" => [ + "include/openssl/comp.h.in" + ], "include/openssl/conf.h" => [ "include/openssl/conf.h.in" ], "include/openssl/configuration.h" => [ "include/openssl/configuration.h.in" ], + "include/openssl/core_names.h" => [ + "include/openssl/core_names.h.in" + ], "include/openssl/crmf.h" => [ "include/openssl/crmf.h.in" ], @@ -16008,12 +18544,39 @@ our %unified_info = ( "include/openssl/x509.h" => [ "include/openssl/x509.h.in" ], + "include/openssl/x509_acert.h" => [ + "include/openssl/x509_acert.h.in" + ], "include/openssl/x509_vfy.h" => [ "include/openssl/x509_vfy.h.in" ], "include/openssl/x509v3.h" => [ "include/openssl/x509v3.h.in" ], + "installdata.pm" => [ + "util/mkinstallvars.pl", + "\"PREFIX=\$(INSTALLTOP)\"", + "BINDIR=bin", + "\"LIBDIR=\$(LIBDIR)\"", + "\"libdir=\$(libdir)\"", + "INCLUDEDIR=include", + "APPLINKDIR=include/openssl", + "\"ENGINESDIR=\$(ENGINESDIR)\"", + "\"MODULESDIR=\$(MODULESDIR)\"", + "\"PKGCONFIGDIR=\$(PKGCONFIGDIR)\"", + "\"CMAKECONFIGDIR=\$(CMAKECONFIGDIR)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"", + "\"VERSION=\$(VERSION)\"" + ], + "libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], + "libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der/der_digests_gen.c.in" ], @@ -16026,9 +18589,15 @@ our %unified_info = ( "providers/common/der/der_ecx_gen.c" => [ "providers/common/der/der_ecx_gen.c.in" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/der_ml_dsa_gen.c.in" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der/der_rsa_gen.c.in" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/der_slh_dsa_gen.c.in" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der/der_sm2_gen.c.in" ], @@ -16047,9 +18616,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/include/prov/der_ecx.h.in" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/include/prov/der_ml_dsa.h.in" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/include/prov/der_rsa.h.in" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/include/prov/der_slh_dsa.h.in" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/include/prov/der_sm2.h.in" ], @@ -16085,6 +18660,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "buffer" ], + "test/buildtest_byteorder.c" => [ + "test/generate_buildtest.pl", + "byteorder" + ], "test/buildtest_camellia.c" => [ "test/generate_buildtest.pl", "camellia" @@ -16117,10 +18696,6 @@ our %unified_info = ( "test/generate_buildtest.pl", "core_dispatch" ], - "test/buildtest_core_names.c" => [ - "test/generate_buildtest.pl", - "core_names" - ], "test/buildtest_core_object.c" => [ "test/generate_buildtest.pl", "core_object" @@ -16153,6 +18728,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "e_os2" ], + "test/buildtest_e_ostime.c" => [ + "test/generate_buildtest.pl", + "e_ostime" + ], "test/buildtest_ebcdic.c" => [ "test/generate_buildtest.pl", "ebcdic" @@ -16189,6 +18768,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "hmac" ], + "test/buildtest_hpke.c" => [ + "test/generate_buildtest.pl", + "hpke" + ], "test/buildtest_http.c" => [ "test/generate_buildtest.pl", "http" @@ -16197,6 +18780,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "idea" ], + "test/buildtest_indicator.c" => [ + "test/generate_buildtest.pl", + "indicator" + ], "test/buildtest_kdf.c" => [ "test/generate_buildtest.pl", "kdf" @@ -16217,6 +18804,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "mdc2" ], + "test/buildtest_ml_kem.c" => [ + "test/generate_buildtest.pl", + "ml_kem" + ], "test/buildtest_modes.c" => [ "test/generate_buildtest.pl", "modes" @@ -16257,6 +18848,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "provider" ], + "test/buildtest_quic.c" => [ + "test/generate_buildtest.pl", + "quic" + ], "test/buildtest_rand.c" => [ "test/generate_buildtest.pl", "rand" @@ -16313,6 +18908,10 @@ our %unified_info = ( "test/generate_buildtest.pl", "symhacks" ], + "test/buildtest_thread.c" => [ + "test/generate_buildtest.pl", + "thread" + ], "test/buildtest_tls1.c" => [ "test/generate_buildtest.pl", "tls1" @@ -16387,6 +18986,7 @@ our %unified_info = ( "doc/html/man1/openssl-s_server.html", "doc/html/man1/openssl-s_time.html", "doc/html/man1/openssl-sess_id.html", + "doc/html/man1/openssl-skeyutl.html", "doc/html/man1/openssl-smime.html", "doc/html/man1/openssl-speed.html", "doc/html/man1/openssl-spkac.html", @@ -16436,6 +19036,7 @@ our %unified_info = ( "doc/html/man3/BIO_find_type.html", "doc/html/man3/BIO_get_data.html", "doc/html/man3/BIO_get_ex_new_index.html", + "doc/html/man3/BIO_get_rpoll_descriptor.html", "doc/html/man3/BIO_meth_new.html", "doc/html/man3/BIO_new.html", "doc/html/man3/BIO_new_CMS.html", @@ -16448,11 +19049,13 @@ our %unified_info = ( "doc/html/man3/BIO_s_connect.html", "doc/html/man3/BIO_s_core.html", "doc/html/man3/BIO_s_datagram.html", + "doc/html/man3/BIO_s_dgram_pair.html", "doc/html/man3/BIO_s_fd.html", "doc/html/man3/BIO_s_file.html", "doc/html/man3/BIO_s_mem.html", "doc/html/man3/BIO_s_null.html", "doc/html/man3/BIO_s_socket.html", + "doc/html/man3/BIO_sendmmsg.html", "doc/html/man3/BIO_set_callback.html", "doc/html/man3/BIO_should_retry.html", "doc/html/man3/BIO_socket_wait.html", @@ -16477,6 +19080,7 @@ our %unified_info = ( "doc/html/man3/BN_swap.html", "doc/html/man3/BN_zero.html", "doc/html/man3/BUF_MEM_new.html", + "doc/html/man3/CMAC_CTX.html", "doc/html/man3/CMS_EncryptedData_decrypt.html", "doc/html/man3/CMS_EncryptedData_encrypt.html", "doc/html/man3/CMS_EnvelopedData_create.html", @@ -16499,6 +19103,7 @@ our %unified_info = ( "doc/html/man3/CMS_uncompress.html", "doc/html/man3/CMS_verify.html", "doc/html/man3/CMS_verify_receipt.html", + "doc/html/man3/COMP_CTX_new.html", "doc/html/man3/CONF_modules_free.html", "doc/html/man3/CONF_modules_load_file.html", "doc/html/man3/CRYPTO_THREAD_run_once.html", @@ -16532,6 +19137,8 @@ our %unified_info = ( "doc/html/man3/DSA_size.html", "doc/html/man3/DTLS_get_data_mtu.html", "doc/html/man3/DTLS_set_timer_cb.html", + "doc/html/man3/DTLSv1_get_timeout.html", + "doc/html/man3/DTLSv1_handle_timeout.html", "doc/html/man3/DTLSv1_listen.html", "doc/html/man3/ECDSA_SIG_new.html", "doc/html/man3/ECDSA_sign.html", @@ -16578,6 +19185,7 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_CTX_ctrl.html", "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html", "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html", + "doc/html/man3/EVP_PKEY_CTX_get_algor.html", "doc/html/man3/EVP_PKEY_CTX_new.html", "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html", "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html", @@ -16617,6 +19225,8 @@ our %unified_info = ( "doc/html/man3/EVP_PKEY_verify_recover.html", "doc/html/man3/EVP_RAND.html", "doc/html/man3/EVP_SIGNATURE.html", + "doc/html/man3/EVP_SKEY.html", + "doc/html/man3/EVP_SKEYMGMT.html", "doc/html/man3/EVP_SealInit.html", "doc/html/man3/EVP_SignInit.html", "doc/html/man3/EVP_VerifyInit.html", @@ -16646,6 +19256,7 @@ our %unified_info = ( "doc/html/man3/EVP_sm3.html", "doc/html/man3/EVP_sm4_cbc.html", "doc/html/man3/EVP_whirlpool.html", + "doc/html/man3/GENERAL_NAME.html", "doc/html/man3/HMAC.html", "doc/html/man3/MD5.html", "doc/html/man3/MDC2_Init.html", @@ -16670,14 +19281,18 @@ our %unified_info = ( "doc/html/man3/OPENSSL_init_ssl.html", "doc/html/man3/OPENSSL_instrument_bus.html", "doc/html/man3/OPENSSL_load_builtin_modules.html", + "doc/html/man3/OPENSSL_load_u16_le.html", "doc/html/man3/OPENSSL_malloc.html", + "doc/html/man3/OPENSSL_riscvcap.html", "doc/html/man3/OPENSSL_s390xcap.html", "doc/html/man3/OPENSSL_secure_malloc.html", "doc/html/man3/OPENSSL_strcasecmp.html", "doc/html/man3/OSSL_ALGORITHM.html", "doc/html/man3/OSSL_CALLBACK.html", + "doc/html/man3/OSSL_CMP_ATAV_set0.html", "doc/html/man3/OSSL_CMP_CTX_new.html", "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html", + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html", "doc/html/man3/OSSL_CMP_ITAV_set0.html", "doc/html/man3/OSSL_CMP_MSG_get0_header.html", "doc/html/man3/OSSL_CMP_MSG_http_perform.html", @@ -16701,18 +19316,27 @@ our %unified_info = ( "doc/html/man3/OSSL_ENCODER_CTX.html", "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html", "doc/html/man3/OSSL_ENCODER_to_bio.html", + "doc/html/man3/OSSL_ERR_STATE_save.html", "doc/html/man3/OSSL_ESS_check_signing_certs.html", + "doc/html/man3/OSSL_GENERAL_NAMES_print.html", + "doc/html/man3/OSSL_HPKE_CTX_new.html", "doc/html/man3/OSSL_HTTP_REQ_CTX.html", "doc/html/man3/OSSL_HTTP_parse_url.html", "doc/html/man3/OSSL_HTTP_transfer.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html", + "doc/html/man3/OSSL_INDICATOR_set_callback.html", "doc/html/man3/OSSL_ITEM.html", "doc/html/man3/OSSL_LIB_CTX.html", + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html", "doc/html/man3/OSSL_PARAM.html", "doc/html/man3/OSSL_PARAM_BLD.html", "doc/html/man3/OSSL_PARAM_allocate_from_text.html", "doc/html/man3/OSSL_PARAM_dup.html", "doc/html/man3/OSSL_PARAM_int.html", + "doc/html/man3/OSSL_PARAM_print_to_bio.html", "doc/html/man3/OSSL_PROVIDER.html", + "doc/html/man3/OSSL_QUIC_client_method.html", "doc/html/man3/OSSL_SELF_TEST_new.html", "doc/html/man3/OSSL_SELF_TEST_set_callback.html", "doc/html/man3/OSSL_STORE_INFO.html", @@ -16721,11 +19345,13 @@ our %unified_info = ( "doc/html/man3/OSSL_STORE_attach.html", "doc/html/man3/OSSL_STORE_expect.html", "doc/html/man3/OSSL_STORE_open.html", + "doc/html/man3/OSSL_sleep.html", "doc/html/man3/OSSL_trace_enabled.html", "doc/html/man3/OSSL_trace_get_category_num.html", "doc/html/man3/OSSL_trace_set_channel.html", "doc/html/man3/OpenSSL_add_all_algorithms.html", "doc/html/man3/OpenSSL_version.html", + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html", "doc/html/man3/PEM_X509_INFO_read_bio_ex.html", "doc/html/man3/PEM_bytes_read_bio.html", "doc/html/man3/PEM_read.html", @@ -16738,6 +19364,7 @@ our %unified_info = ( "doc/html/man3/PKCS12_SAFEBAG_create_cert.html", "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html", "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html", + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html", "doc/html/man3/PKCS12_add1_attr_by_NID.html", "doc/html/man3/PKCS12_add_CSPName_asc.html", "doc/html/man3/PKCS12_add_cert.html", @@ -16829,6 +19456,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_sess_set_get_cb.html", "doc/html/man3/SSL_CTX_sessions.html", "doc/html/man3/SSL_CTX_set0_CA_list.html", + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html", "doc/html/man3/SSL_CTX_set1_curves.html", "doc/html/man3/SSL_CTX_set1_sigalgs.html", "doc/html/man3/SSL_CTX_set1_verify_cert_store.html", @@ -16842,6 +19470,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_ct_validation_callback.html", "doc/html/man3/SSL_CTX_set_ctlog_list_file.html", "doc/html/man3/SSL_CTX_set_default_passwd_cb.html", + "doc/html/man3/SSL_CTX_set_domain_flags.html", "doc/html/man3/SSL_CTX_set_generate_session_id.html", "doc/html/man3/SSL_CTX_set_info_callback.html", "doc/html/man3/SSL_CTX_set_keylog_callback.html", @@ -16849,6 +19478,7 @@ our %unified_info = ( "doc/html/man3/SSL_CTX_set_min_proto_version.html", "doc/html/man3/SSL_CTX_set_mode.html", "doc/html/man3/SSL_CTX_set_msg_callback.html", + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html", "doc/html/man3/SSL_CTX_set_num_tickets.html", "doc/html/man3/SSL_CTX_set_options.html", "doc/html/man3/SSL_CTX_set_psk_client_callback.html", @@ -16887,6 +19517,7 @@ our %unified_info = ( "doc/html/man3/SSL_SESSION_print.html", "doc/html/man3/SSL_SESSION_set1_id.html", "doc/html/man3/SSL_accept.html", + "doc/html/man3/SSL_accept_stream.html", "doc/html/man3/SSL_alert_type_string.html", "doc/html/man3/SSL_alloc_buffers.html", "doc/html/man3/SSL_check_chain.html", @@ -16896,59 +19527,90 @@ our %unified_info = ( "doc/html/man3/SSL_export_keying_material.html", "doc/html/man3/SSL_extension_supported.html", "doc/html/man3/SSL_free.html", + "doc/html/man3/SSL_get0_connection.html", + "doc/html/man3/SSL_get0_group_name.html", + "doc/html/man3/SSL_get0_peer_rpk.html", "doc/html/man3/SSL_get0_peer_scts.html", + "doc/html/man3/SSL_get1_builtin_sigalgs.html", "doc/html/man3/SSL_get_SSL_CTX.html", "doc/html/man3/SSL_get_all_async_fds.html", "doc/html/man3/SSL_get_certificate.html", "doc/html/man3/SSL_get_ciphers.html", "doc/html/man3/SSL_get_client_random.html", + "doc/html/man3/SSL_get_conn_close_info.html", "doc/html/man3/SSL_get_current_cipher.html", "doc/html/man3/SSL_get_default_timeout.html", "doc/html/man3/SSL_get_error.html", + "doc/html/man3/SSL_get_event_timeout.html", "doc/html/man3/SSL_get_extms_support.html", "doc/html/man3/SSL_get_fd.html", + "doc/html/man3/SSL_get_handshake_rtt.html", "doc/html/man3/SSL_get_peer_cert_chain.html", "doc/html/man3/SSL_get_peer_certificate.html", "doc/html/man3/SSL_get_peer_signature_nid.html", "doc/html/man3/SSL_get_peer_tmp_key.html", "doc/html/man3/SSL_get_psk_identity.html", "doc/html/man3/SSL_get_rbio.html", + "doc/html/man3/SSL_get_rpoll_descriptor.html", "doc/html/man3/SSL_get_session.html", "doc/html/man3/SSL_get_shared_sigalgs.html", + "doc/html/man3/SSL_get_stream_id.html", + "doc/html/man3/SSL_get_stream_read_state.html", + "doc/html/man3/SSL_get_value_uint.html", "doc/html/man3/SSL_get_verify_result.html", "doc/html/man3/SSL_get_version.html", "doc/html/man3/SSL_group_to_name.html", + "doc/html/man3/SSL_handle_events.html", "doc/html/man3/SSL_in_init.html", + "doc/html/man3/SSL_inject_net_dgram.html", "doc/html/man3/SSL_key_update.html", "doc/html/man3/SSL_library_init.html", "doc/html/man3/SSL_load_client_CA_file.html", "doc/html/man3/SSL_new.html", + "doc/html/man3/SSL_new_domain.html", + "doc/html/man3/SSL_new_listener.html", + "doc/html/man3/SSL_new_stream.html", "doc/html/man3/SSL_pending.html", + "doc/html/man3/SSL_poll.html", "doc/html/man3/SSL_read.html", "doc/html/man3/SSL_read_early_data.html", "doc/html/man3/SSL_rstate_string.html", "doc/html/man3/SSL_session_reused.html", "doc/html/man3/SSL_set1_host.html", + "doc/html/man3/SSL_set1_initial_peer_addr.html", + "doc/html/man3/SSL_set1_server_cert_type.html", "doc/html/man3/SSL_set_async_callback.html", "doc/html/man3/SSL_set_bio.html", + "doc/html/man3/SSL_set_blocking_mode.html", "doc/html/man3/SSL_set_connect_state.html", + "doc/html/man3/SSL_set_default_stream_mode.html", "doc/html/man3/SSL_set_fd.html", + "doc/html/man3/SSL_set_incoming_stream_policy.html", + "doc/html/man3/SSL_set_quic_tls_cbs.html", "doc/html/man3/SSL_set_retry_verify.html", "doc/html/man3/SSL_set_session.html", + "doc/html/man3/SSL_set_session_secret_cb.html", "doc/html/man3/SSL_set_shutdown.html", "doc/html/man3/SSL_set_verify_result.html", "doc/html/man3/SSL_shutdown.html", "doc/html/man3/SSL_state_string.html", + "doc/html/man3/SSL_stream_conclude.html", + "doc/html/man3/SSL_stream_reset.html", "doc/html/man3/SSL_want.html", "doc/html/man3/SSL_write.html", "doc/html/man3/TS_RESP_CTX_new.html", - "doc/html/man3/TS_VERIFY_CTX_set_certs.html", + "doc/html/man3/TS_VERIFY_CTX.html", "doc/html/man3/UI_STRING.html", "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", + "doc/html/man3/X509_ACERT_add1_attr.html", + "doc/html/man3/X509_ACERT_add_attr_nconf.html", + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html", + "doc/html/man3/X509_ACERT_get_attr.html", + "doc/html/man3/X509_ACERT_print_ex.html", "doc/html/man3/X509_ALGOR_dup.html", "doc/html/man3/X509_ATTRIBUTE.html", "doc/html/man3/X509_CRL_get0_by_serial.html", @@ -16965,6 +19627,7 @@ our %unified_info = ( "doc/html/man3/X509_REQ_get_attr.html", "doc/html/man3/X509_REQ_get_extensions.html", "doc/html/man3/X509_SIG_get0.html", + "doc/html/man3/X509_STORE_CTX_get_by_subject.html", "doc/html/man3/X509_STORE_CTX_get_error.html", "doc/html/man3/X509_STORE_CTX_new.html", "doc/html/man3/X509_STORE_CTX_set_verify_cb.html", @@ -16987,6 +19650,7 @@ our %unified_info = ( "doc/html/man3/X509_get0_notBefore.html", "doc/html/man3/X509_get0_signature.html", "doc/html/man3/X509_get0_uids.html", + "doc/html/man3/X509_get_default_cert_file.html", "doc/html/man3/X509_get_extension_flags.html", "doc/html/man3/X509_get_pubkey.html", "doc/html/man3/X509_get_serialNumber.html", @@ -17032,12 +19696,15 @@ our %unified_info = ( "doc/html/man7/EVP_CIPHER-RC5.html", "doc/html/man7/EVP_CIPHER-SEED.html", "doc/html/man7/EVP_CIPHER-SM4.html", + "doc/html/man7/EVP_KDF-ARGON2.html", "doc/html/man7/EVP_KDF-HKDF.html", + "doc/html/man7/EVP_KDF-HMAC-DRBG.html", "doc/html/man7/EVP_KDF-KB.html", "doc/html/man7/EVP_KDF-KRB5KDF.html", "doc/html/man7/EVP_KDF-PBKDF1.html", "doc/html/man7/EVP_KDF-PBKDF2.html", "doc/html/man7/EVP_KDF-PKCS12KDF.html", + "doc/html/man7/EVP_KDF-PVKKDF.html", "doc/html/man7/EVP_KDF-SCRYPT.html", "doc/html/man7/EVP_KDF-SS.html", "doc/html/man7/EVP_KDF-SSHKDF.html", @@ -17046,7 +19713,10 @@ our %unified_info = ( "doc/html/man7/EVP_KDF-X942-ASN1.html", "doc/html/man7/EVP_KDF-X942-CONCAT.html", "doc/html/man7/EVP_KDF-X963.html", + "doc/html/man7/EVP_KEM-EC.html", + "doc/html/man7/EVP_KEM-ML-KEM.html", "doc/html/man7/EVP_KEM-RSA.html", + "doc/html/man7/EVP_KEM-X25519.html", "doc/html/man7/EVP_KEYEXCH-DH.html", "doc/html/man7/EVP_KEYEXCH-ECDH.html", "doc/html/man7/EVP_KEYEXCH-X25519.html", @@ -17058,6 +19728,7 @@ our %unified_info = ( "doc/html/man7/EVP_MAC-Poly1305.html", "doc/html/man7/EVP_MAC-Siphash.html", "doc/html/man7/EVP_MD-BLAKE2.html", + "doc/html/man7/EVP_MD-KECCAK.html", "doc/html/man7/EVP_MD-MD2.html", "doc/html/man7/EVP_MD-MD4.html", "doc/html/man7/EVP_MD-MD5-SHA1.html", @@ -17077,12 +19748,17 @@ our %unified_info = ( "doc/html/man7/EVP_PKEY-EC.html", "doc/html/man7/EVP_PKEY-FFC.html", "doc/html/man7/EVP_PKEY-HMAC.html", + "doc/html/man7/EVP_PKEY-ML-DSA.html", + "doc/html/man7/EVP_PKEY-ML-KEM.html", "doc/html/man7/EVP_PKEY-RSA.html", + "doc/html/man7/EVP_PKEY-SLH-DSA.html", "doc/html/man7/EVP_PKEY-SM2.html", "doc/html/man7/EVP_PKEY-X25519.html", + "doc/html/man7/EVP_RAND-CRNG-TEST.html", "doc/html/man7/EVP_RAND-CTR-DRBG.html", "doc/html/man7/EVP_RAND-HASH-DRBG.html", "doc/html/man7/EVP_RAND-HMAC-DRBG.html", + "doc/html/man7/EVP_RAND-JITTER.html", "doc/html/man7/EVP_RAND-SEED-SRC.html", "doc/html/man7/EVP_RAND-TEST-RAND.html", "doc/html/man7/EVP_RAND.html", @@ -17090,17 +19766,19 @@ our %unified_info = ( "doc/html/man7/EVP_SIGNATURE-ECDSA.html", "doc/html/man7/EVP_SIGNATURE-ED25519.html", "doc/html/man7/EVP_SIGNATURE-HMAC.html", + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html", "doc/html/man7/EVP_SIGNATURE-RSA.html", + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html", "doc/html/man7/OSSL_PROVIDER-FIPS.html", "doc/html/man7/OSSL_PROVIDER-base.html", "doc/html/man7/OSSL_PROVIDER-default.html", "doc/html/man7/OSSL_PROVIDER-legacy.html", "doc/html/man7/OSSL_PROVIDER-null.html", + "doc/html/man7/OSSL_STORE-winstore.html", "doc/html/man7/RAND.html", "doc/html/man7/RSA-PSS.html", "doc/html/man7/X25519.html", "doc/html/man7/bio.html", - "doc/html/man7/crypto.html", "doc/html/man7/ct.html", "doc/html/man7/des_modes.html", "doc/html/man7/evp.html", @@ -17111,14 +19789,31 @@ our %unified_info = ( "doc/html/man7/life_cycle-mac.html", "doc/html/man7/life_cycle-pkey.html", "doc/html/man7/life_cycle-rand.html", - "doc/html/man7/migration_guide.html", "doc/html/man7/openssl-core.h.html", "doc/html/man7/openssl-core_dispatch.h.html", "doc/html/man7/openssl-core_names.h.html", "doc/html/man7/openssl-env.html", "doc/html/man7/openssl-glossary.html", + "doc/html/man7/openssl-qlog.html", + "doc/html/man7/openssl-quic-concurrency.html", + "doc/html/man7/openssl-quic.html", "doc/html/man7/openssl-threads.html", "doc/html/man7/openssl_user_macros.html", + "doc/html/man7/ossl-guide-introduction.html", + "doc/html/man7/ossl-guide-libcrypto-introduction.html", + "doc/html/man7/ossl-guide-libraries-introduction.html", + "doc/html/man7/ossl-guide-libssl-introduction.html", + "doc/html/man7/ossl-guide-migration.html", + "doc/html/man7/ossl-guide-quic-client-block.html", + "doc/html/man7/ossl-guide-quic-client-non-block.html", + "doc/html/man7/ossl-guide-quic-introduction.html", + "doc/html/man7/ossl-guide-quic-multi-stream.html", + "doc/html/man7/ossl-guide-quic-server-block.html", + "doc/html/man7/ossl-guide-quic-server-non-block.html", + "doc/html/man7/ossl-guide-tls-client-block.html", + "doc/html/man7/ossl-guide-tls-client-non-block.html", + "doc/html/man7/ossl-guide-tls-introduction.html", + "doc/html/man7/ossl-guide-tls-server-block.html", "doc/html/man7/ossl_store-file.html", "doc/html/man7/ossl_store.html", "doc/html/man7/passphrase-encoding.html", @@ -17137,10 +19832,10 @@ our %unified_info = ( "doc/html/man7/provider-object.html", "doc/html/man7/provider-rand.html", "doc/html/man7/provider-signature.html", + "doc/html/man7/provider-skeymgmt.html", "doc/html/man7/provider-storemgmt.html", "doc/html/man7/provider.html", "doc/html/man7/proxy-certificates.html", - "doc/html/man7/ssl.html", "doc/html/man7/x509.html" ] }, @@ -17155,12 +19850,21 @@ our %unified_info = ( ] }, "includes" => { + "OpenSSLConfig.cmake" => [ + "." + ], + "OpenSSLConfigVersion.cmake" => [ + "." + ], "apps/asn1parse.o" => [ "apps" ], "apps/ca.o" => [ "apps" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps" + ], "apps/ciphers.o" => [ "apps" ], @@ -17387,6 +20091,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps" + ], "apps/openssl-bin-smime.o" => [ "apps" ], @@ -17474,6 +20181,9 @@ our %unified_info = ( "apps/sess_id.o" => [ "apps" ], + "apps/skeyutl.o" => [ + "apps" + ], "apps/smime.o" => [ "apps" ], @@ -17525,6 +20235,12 @@ our %unified_info = ( "crypto/aes/bsaes-armv7.o" => [ "crypto" ], + "crypto/aes/vpaes-armv8.o" => [ + "crypto" + ], + "crypto/aes/vpaes-loongarch64.o" => [ + "crypto" + ], "crypto/arm64cpuid.o" => [ "crypto" ], @@ -17576,9 +20292,15 @@ our %unified_info = ( "crypto/chacha/chacha-armv4.o" => [ "crypto" ], + "crypto/chacha/chacha-armv8-sve.o" => [ + "crypto" + ], "crypto/chacha/chacha-armv8.o" => [ "crypto" ], + "crypto/chacha/chacha-loongarch64.o" => [ + "crypto" + ], "crypto/chacha/chacha-s390x.o" => [ "crypto" ], @@ -17603,15 +20325,27 @@ our %unified_info = ( "crypto/ec/ecp_s390x_nistp.o" => [ "crypto" ], + "crypto/ec/ecp_sm2p256-armv8.o" => [ + "crypto" + ], + "crypto/ec/ecx_key.o" => [ + "crypto" + ], "crypto/ec/ecx_meth.o" => [ "crypto" ], "crypto/ec/ecx_s390x.o" => [ "crypto" ], + "crypto/ec/libcrypto-lib-ecx_key.o" => [ + "crypto" + ], "crypto/ec/libcrypto-lib-ecx_meth.o" => [ "crypto" ], + "crypto/ec/libfips-lib-ecx_key.o" => [ + "crypto" + ], "crypto/evp/e_aes.o" => [ "crypto", "crypto/modes" @@ -17683,9 +20417,18 @@ our %unified_info = ( "crypto/libfips-lib-cpuid.o" => [ "." ], + "crypto/md5/md5-aarch64.o" => [ + "crypto" + ], + "crypto/md5/md5-loongarch64.o" => [ + "crypto" + ], "crypto/md5/md5-sparcv9.o" => [ "crypto" ], + "crypto/modes/aes-gcm-armv8-unroll8_64.o" => [ + "crypto" + ], "crypto/modes/aes-gcm-armv8_64.o" => [ "crypto" ], @@ -17710,6 +20453,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-gcm128.o" => [ "crypto" ], + "crypto/params_idx.c" => [ + "util/perl" + ], "crypto/poly1305/poly1305-armv4.o" => [ "crypto" ], @@ -17731,6 +20477,9 @@ our %unified_info = ( "crypto/sha/keccak1600-armv4.o" => [ "crypto" ], + "crypto/sha/keccak1600-armv8.o" => [ + "crypto" + ], "crypto/sha/sha1-armv4-large.o" => [ "crypto" ], @@ -17776,6 +20525,18 @@ our %unified_info = ( "crypto/sha/sha512-sparcv9.o" => [ "crypto" ], + "crypto/sm3/sm3-armv8.o" => [ + "crypto" + ], + "crypto/sm4/sm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4_ex-armv8.o" => [ + "crypto" + ], "doc/man1/openssl-asn1parse.pod" => [ "doc" ], @@ -17908,6 +20669,9 @@ our %unified_info = ( "doc/man1/openssl-sess_id.pod" => [ "doc" ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc" + ], "doc/man1/openssl-smime.pod" => [ "doc" ], @@ -17935,6 +20699,24 @@ our %unified_info = ( "doc/man1/openssl-x509.pod" => [ "doc" ], + "exporters/OpenSSLConfig.cmake" => [ + "." + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "." + ], + "exporters/libcrypto.pc" => [ + "." + ], + "exporters/libssl.pc" => [ + "." + ], + "exporters/openssl.pc" => [ + "." + ], + "fuzz/acert-test" => [ + "include" + ], "fuzz/asn1-test" => [ "include" ], @@ -17965,22 +20747,88 @@ our %unified_info = ( "fuzz/ct-test" => [ "include" ], + "fuzz/decoder-test" => [ + "include" + ], + "fuzz/dtlsclient-test" => [ + "include" + ], + "fuzz/dtlsserver-test" => [ + "include" + ], + "fuzz/hashtable-test" => [ + "include" + ], + "fuzz/ml-dsa-test" => [ + "include" + ], + "fuzz/ml-kem-test" => [ + "include" + ], + "fuzz/pem-test" => [ + "include" + ], + "fuzz/provider-test" => [ + "include" + ], + "fuzz/punycode-test" => [ + "include" + ], + "fuzz/quic-client-test" => [ + "include" + ], + "fuzz/quic-lcidm-test" => [ + "include" + ], + "fuzz/quic-rcidm-test" => [ + "include" + ], + "fuzz/quic-server-test" => [ + "include" + ], + "fuzz/quic-srtm-test" => [ + "include" + ], "fuzz/server-test" => [ "include" ], + "fuzz/slh-dsa-test" => [ + "include" + ], + "fuzz/smime-test" => [ + "include" + ], + "fuzz/v3name-test" => [ + "include" + ], "fuzz/x509-test" => [ "include" ], + "include/internal/param_names.h" => [ + "util/perl" + ], + "include/openssl/core_names.h" => [ + "util/perl" + ], "libcrypto" => [ ".", "include", "providers/common/include", "providers/implementations/include" ], + "libcrypto.pc" => [ + "." + ], "libssl" => [ ".", "include" ], + "libssl.pc" => [ + "." + ], + "openssl.pc" => [ + "." + ], "providers/common/der/der_digests_gen.c" => [ "providers/common/der" ], @@ -18020,6 +20868,15 @@ our %unified_info = ( "providers/common/der/der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_rsa_gen.c" => [ "providers/common/der" ], @@ -18032,6 +20889,15 @@ our %unified_info = ( "providers/common/der/der_rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/der_sm2_gen.c" => [ "providers/common/der" ], @@ -18077,12 +20943,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/include/prov" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/include/prov" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/include/prov" ], @@ -18113,9 +20991,15 @@ our %unified_info = ( "providers/common/include/prov/der_ecx.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_rsa.h" => [ "providers/common/der" ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der" + ], "providers/common/include/prov/der_sm2.h" => [ "providers/common/der" ], @@ -18158,9 +21042,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18173,12 +21063,24 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/rsa_sig.o" => [ "providers/common/include/prov" ], + "providers/implementations/signature/slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], "providers/implementations/signature/sm2_sig.o" => [ "providers/common/include/prov" ], @@ -18191,28 +21093,39 @@ our %unified_info = ( "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libdefault.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/libfips.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "providers/liblegacy.a" => [ ".", "crypto", "include", "providers/implementations/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" + ], + "providers/libtemplate.a" => [ + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" ], "test/aborttest" => [ "include", @@ -18281,6 +21194,14 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_addr_test" => [ + "include", + "apps/include" + ], + "test/bio_base64_test" => [ + "include", + "apps/include" + ], "test/bio_callback_test" => [ "include", "apps/include" @@ -18289,11 +21210,20 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_dgram_test" => [ + "include", + "apps/include", + "." + ], "test/bio_enc_test" => [ "include", "apps/include" ], - "test/bio_memleak_test" => [ + "test/bio_memleak_test" => [ + "include", + "apps/include" + ], + "test/bio_meth_test" => [ "include", "apps/include" ], @@ -18310,6 +21240,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/bio_tfo_test" => [ + "include", + "apps/include", + "." + ], "test/bioprinttest" => [ "include", "apps/include" @@ -18324,6 +21259,9 @@ our %unified_info = ( "include", "apps/include" ], + "test/build_wincrypt_test" => [ + "include" + ], "test/buildtest_c_aes" => [ "include" ], @@ -18339,6 +21277,9 @@ our %unified_info = ( "test/buildtest_c_buffer" => [ "include" ], + "test/buildtest_c_byteorder" => [ + "include" + ], "test/buildtest_c_camellia" => [ "include" ], @@ -18363,9 +21304,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch" => [ "include" ], - "test/buildtest_c_core_names" => [ - "include" - ], "test/buildtest_c_core_object" => [ "include" ], @@ -18390,6 +21328,9 @@ our %unified_info = ( "test/buildtest_c_e_os2" => [ "include" ], + "test/buildtest_c_e_ostime" => [ + "include" + ], "test/buildtest_c_ebcdic" => [ "include" ], @@ -18417,12 +21358,18 @@ our %unified_info = ( "test/buildtest_c_hmac" => [ "include" ], + "test/buildtest_c_hpke" => [ + "include" + ], "test/buildtest_c_http" => [ "include" ], "test/buildtest_c_idea" => [ "include" ], + "test/buildtest_c_indicator" => [ + "include" + ], "test/buildtest_c_kdf" => [ "include" ], @@ -18438,6 +21385,9 @@ our %unified_info = ( "test/buildtest_c_mdc2" => [ "include" ], + "test/buildtest_c_ml_kem" => [ + "include" + ], "test/buildtest_c_modes" => [ "include" ], @@ -18468,6 +21418,9 @@ our %unified_info = ( "test/buildtest_c_provider" => [ "include" ], + "test/buildtest_c_quic" => [ + "include" + ], "test/buildtest_c_rand" => [ "include" ], @@ -18510,6 +21463,9 @@ our %unified_info = ( "test/buildtest_c_symhacks" => [ "include" ], + "test/buildtest_c_thread" => [ + "include" + ], "test/buildtest_c_tls1" => [ "include" ], @@ -18525,10 +21481,24 @@ our %unified_info = ( "test/buildtest_c_whrlpool" => [ "include" ], + "test/byteorder_test" => [ + "include", + "apps/include" + ], + "test/ca_internals_test" => [ + ".", + "include", + "apps/include" + ], "test/casttest" => [ "include", "apps/include" ], + "test/cert_comp_test" => [ + "include", + "apps/include", + "." + ], "test/chacha_internal_test" => [ ".", "include", @@ -18652,6 +21622,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/decoder_propq_test" => [ + ".", + "include", + "apps/include" + ], "test/defltfips_test" => [ "include", "apps/include" @@ -18667,7 +21642,8 @@ our %unified_info = ( "test/drbgtest" => [ "include", "apps/include", - "providers/common/include" + "providers/common/include", + "providers/fips/include" ], "test/dsa_no_digest_size_test" => [ "include", @@ -18710,7 +21686,9 @@ our %unified_info = ( "test/endecode_test" => [ ".", "include", - "apps/include" + "apps/include", + "providers/common/include", + "providers/implementations/include" ], "test/endecoder_legacy_test" => [ ".", @@ -18755,6 +21733,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_pkey_dhkem_test" => [ + "include", + "apps/include" + ], "test/evp_pkey_dparams_test" => [ "include", "apps/include" @@ -18763,10 +21745,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_skey_test" => [ + "include", + "apps/include" + ], "test/evp_test" => [ "include", "apps/include" ], + "test/evp_xof_test" => [ + "include", + "apps/include" + ], "test/exdatatest" => [ "include", "apps/include" @@ -18867,22 +21857,62 @@ our %unified_info = ( ".", "include" ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/pkcs12.o" => [ ".", "include" ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + ".", + "include" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ ".", "include" ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + ".", + "include" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ ".", "include" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/helpers/ssl_test-bin-handshake.o" => [ ".", "include" @@ -18916,6 +21946,10 @@ our %unified_info = ( ".", "include" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + ".", + "include" + ], "test/hexstr_test" => [ ".", "include", @@ -18925,6 +21959,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/hpke_test" => [ + "include", + "apps/include" + ], "test/http_test" => [ "include", "apps/include" @@ -18937,6 +21975,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/json_test" => [ + "include", + "apps/include" + ], "test/keymgmt_internal_test" => [ ".", "include", @@ -18951,6 +21993,10 @@ our %unified_info = ( "apps/include", "." ], + "test/list_test" => [ + "include", + "apps/include" + ], "test/localetest" => [ "include", "apps/include" @@ -18964,10 +22010,27 @@ our %unified_info = ( "include", "apps/include" ], + "test/membio_test" => [ + "include", + "apps/include", + "." + ], "test/memleaktest" => [ "include", "apps/include" ], + "test/ml_dsa_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_evp_extra_test" => [ + "include", + "apps/include" + ], + "test/ml_kem_internal_test" => [ + "include", + "apps/include" + ], "test/modes_internal_test" => [ ".", "include", @@ -19002,6 +22065,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pairwise_fail_test" => [ + "include", + "apps/include" + ], "test/param_build_test" => [ "include", "apps/include" @@ -19035,6 +22102,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/pkcs12_api_test" => [ + "include", + "apps/include" + ], "test/pkcs12_format_test" => [ "include", "apps/include" @@ -19056,6 +22127,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/priority_queue_test" => [ + "include", + "apps/include" + ], "test/property_test" => [ ".", "include", @@ -19069,6 +22144,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/provider_default_search_path_test" => [ + "include", + "apps/include" + ], "test/provider_fallback_test" => [ "include", "apps/include" @@ -19095,6 +22174,97 @@ our %unified_info = ( "include", "apps/include" ], + "test/quic_ackm_test" => [ + "include", + "apps/include" + ], + "test/quic_cc_test" => [ + "include", + "apps/include" + ], + "test/quic_cfq_test" => [ + "include", + "apps/include" + ], + "test/quic_client_test" => [ + "include", + "apps/include" + ], + "test/quic_fc_test" => [ + "include", + "apps/include" + ], + "test/quic_fifd_test" => [ + "include", + "apps/include" + ], + "test/quic_lcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_multistream_test" => [ + "include", + "apps/include" + ], + "test/quic_newcid_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_qlog_test" => [ + "include", + "apps/include" + ], + "test/quic_radix_test" => [ + "include", + "apps/include" + ], + "test/quic_rcidm_test" => [ + "include", + "apps/include" + ], + "test/quic_record_test" => [ + "include", + "apps/include" + ], + "test/quic_srt_gen_test" => [ + "include", + "apps/include", + "." + ], + "test/quic_srtm_test" => [ + "include", + "apps/include" + ], + "test/quic_stream_test" => [ + "include", + "apps/include" + ], + "test/quic_tserver_test" => [ + "include", + "apps/include" + ], + "test/quic_txp_test" => [ + "include", + "apps/include" + ], + "test/quic_txpim_test" => [ + "include", + "apps/include" + ], + "test/quic_wire_test" => [ + "include", + "apps/include" + ], + "test/quicapitest" => [ + "include", + "apps/include" + ], + "test/quicfaultstest" => [ + "include", + "apps/include", + "." + ], "test/rand_status_test" => [ "include", "apps/include" @@ -19115,14 +22285,20 @@ our %unified_info = ( "include", "apps/include" ], - "test/rdrand_sanitytest" => [ + "test/rdcpu_sanitytest" => [ "include", - "apps/include" + "apps/include", + "crypto" ], "test/recordlentest" => [ "include", "apps/include" ], + "test/rpktest" => [ + "include", + "apps/include", + "." + ], "test/rsa_complex" => [ "include", "apps/include" @@ -19141,6 +22317,15 @@ our %unified_info = ( "include", "apps/include" ], + "test/rsa_x931_test" => [ + ".", + "include", + "apps/include" + ], + "test/safe_math_test" => [ + "include", + "apps/include" + ], "test/sanitytest" => [ "include", "apps/include" @@ -19162,6 +22347,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/slh_dsa_test" => [ + "include", + "apps/include" + ], "test/sm2_internal_test" => [ "include", "apps/include" @@ -19192,6 +22381,11 @@ our %unified_info = ( "include", "apps/include" ], + "test/ssl_handshake_rtt_test" => [ + "include", + "apps/include", + "." + ], "test/ssl_old_test" => [ ".", "include", @@ -19208,6 +22402,7 @@ our %unified_info = ( "test/sslapitest" => [ "include", "apps/include", + "providers/common/include", "." ], "test/sslbuffertest" => [ @@ -19222,6 +22417,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/strtoultest" => [ + "include", + "apps/include" + ], "test/sysdefaulttest" => [ "include", "apps/include" @@ -19230,7 +22429,13 @@ our %unified_info = ( "include", "apps/include" ], + "test/threadpool_test" => [ + ".", + "include", + "apps/include" + ], "test/threadstest" => [ + ".", "include", "apps/include" ], @@ -19242,6 +22447,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/time_test" => [ + "include", + "apps/include" + ], "test/tls13ccstest" => [ "include", "apps/include" @@ -19251,6 +22460,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/tls13groupselection_test" => [ + "include", + "apps/include" + ], "test/trace_api_test" => [ ".", "include", @@ -19289,6 +22502,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_acert_test" => [ + "include", + "apps/include" + ], "test/x509_check_cert_pkey_test" => [ "include", "apps/include" @@ -19302,6 +22519,18 @@ our %unified_info = ( "include", "apps/include" ], + "test/x509_load_cert_file_test" => [ + "include", + "apps/include" + ], + "test/x509_req_test" => [ + "include", + "apps/include" + ], + "test/x509_test" => [ + "include", + "apps/include" + ], "test/x509_time_test" => [ "include", "apps/include" @@ -19323,6 +22552,7 @@ our %unified_info = ( "providers/libdefault.a", "providers/libfips.a", "providers/liblegacy.a", + "providers/libtemplate.a", "test/libtestutil.a" ], "mandocs" => { @@ -19375,6 +22605,7 @@ our %unified_info = ( "doc/man/man1/openssl-s_server.1", "doc/man/man1/openssl-s_time.1", "doc/man/man1/openssl-sess_id.1", + "doc/man/man1/openssl-skeyutl.1", "doc/man/man1/openssl-smime.1", "doc/man/man1/openssl-speed.1", "doc/man/man1/openssl-spkac.1", @@ -19424,6 +22655,7 @@ our %unified_info = ( "doc/man/man3/BIO_find_type.3", "doc/man/man3/BIO_get_data.3", "doc/man/man3/BIO_get_ex_new_index.3", + "doc/man/man3/BIO_get_rpoll_descriptor.3", "doc/man/man3/BIO_meth_new.3", "doc/man/man3/BIO_new.3", "doc/man/man3/BIO_new_CMS.3", @@ -19436,11 +22668,13 @@ our %unified_info = ( "doc/man/man3/BIO_s_connect.3", "doc/man/man3/BIO_s_core.3", "doc/man/man3/BIO_s_datagram.3", + "doc/man/man3/BIO_s_dgram_pair.3", "doc/man/man3/BIO_s_fd.3", "doc/man/man3/BIO_s_file.3", "doc/man/man3/BIO_s_mem.3", "doc/man/man3/BIO_s_null.3", "doc/man/man3/BIO_s_socket.3", + "doc/man/man3/BIO_sendmmsg.3", "doc/man/man3/BIO_set_callback.3", "doc/man/man3/BIO_should_retry.3", "doc/man/man3/BIO_socket_wait.3", @@ -19465,6 +22699,7 @@ our %unified_info = ( "doc/man/man3/BN_swap.3", "doc/man/man3/BN_zero.3", "doc/man/man3/BUF_MEM_new.3", + "doc/man/man3/CMAC_CTX.3", "doc/man/man3/CMS_EncryptedData_decrypt.3", "doc/man/man3/CMS_EncryptedData_encrypt.3", "doc/man/man3/CMS_EnvelopedData_create.3", @@ -19487,6 +22722,7 @@ our %unified_info = ( "doc/man/man3/CMS_uncompress.3", "doc/man/man3/CMS_verify.3", "doc/man/man3/CMS_verify_receipt.3", + "doc/man/man3/COMP_CTX_new.3", "doc/man/man3/CONF_modules_free.3", "doc/man/man3/CONF_modules_load_file.3", "doc/man/man3/CRYPTO_THREAD_run_once.3", @@ -19520,6 +22756,8 @@ our %unified_info = ( "doc/man/man3/DSA_size.3", "doc/man/man3/DTLS_get_data_mtu.3", "doc/man/man3/DTLS_set_timer_cb.3", + "doc/man/man3/DTLSv1_get_timeout.3", + "doc/man/man3/DTLSv1_handle_timeout.3", "doc/man/man3/DTLSv1_listen.3", "doc/man/man3/ECDSA_SIG_new.3", "doc/man/man3/ECDSA_sign.3", @@ -19566,6 +22804,7 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_CTX_ctrl.3", "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3", "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3", + "doc/man/man3/EVP_PKEY_CTX_get_algor.3", "doc/man/man3/EVP_PKEY_CTX_new.3", "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3", "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3", @@ -19605,6 +22844,8 @@ our %unified_info = ( "doc/man/man3/EVP_PKEY_verify_recover.3", "doc/man/man3/EVP_RAND.3", "doc/man/man3/EVP_SIGNATURE.3", + "doc/man/man3/EVP_SKEY.3", + "doc/man/man3/EVP_SKEYMGMT.3", "doc/man/man3/EVP_SealInit.3", "doc/man/man3/EVP_SignInit.3", "doc/man/man3/EVP_VerifyInit.3", @@ -19634,6 +22875,7 @@ our %unified_info = ( "doc/man/man3/EVP_sm3.3", "doc/man/man3/EVP_sm4_cbc.3", "doc/man/man3/EVP_whirlpool.3", + "doc/man/man3/GENERAL_NAME.3", "doc/man/man3/HMAC.3", "doc/man/man3/MD5.3", "doc/man/man3/MDC2_Init.3", @@ -19658,14 +22900,18 @@ our %unified_info = ( "doc/man/man3/OPENSSL_init_ssl.3", "doc/man/man3/OPENSSL_instrument_bus.3", "doc/man/man3/OPENSSL_load_builtin_modules.3", + "doc/man/man3/OPENSSL_load_u16_le.3", "doc/man/man3/OPENSSL_malloc.3", + "doc/man/man3/OPENSSL_riscvcap.3", "doc/man/man3/OPENSSL_s390xcap.3", "doc/man/man3/OPENSSL_secure_malloc.3", "doc/man/man3/OPENSSL_strcasecmp.3", "doc/man/man3/OSSL_ALGORITHM.3", "doc/man/man3/OSSL_CALLBACK.3", + "doc/man/man3/OSSL_CMP_ATAV_set0.3", "doc/man/man3/OSSL_CMP_CTX_new.3", "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3", + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3", "doc/man/man3/OSSL_CMP_ITAV_set0.3", "doc/man/man3/OSSL_CMP_MSG_get0_header.3", "doc/man/man3/OSSL_CMP_MSG_http_perform.3", @@ -19689,18 +22935,27 @@ our %unified_info = ( "doc/man/man3/OSSL_ENCODER_CTX.3", "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3", "doc/man/man3/OSSL_ENCODER_to_bio.3", + "doc/man/man3/OSSL_ERR_STATE_save.3", "doc/man/man3/OSSL_ESS_check_signing_certs.3", + "doc/man/man3/OSSL_GENERAL_NAMES_print.3", + "doc/man/man3/OSSL_HPKE_CTX_new.3", "doc/man/man3/OSSL_HTTP_REQ_CTX.3", "doc/man/man3/OSSL_HTTP_parse_url.3", "doc/man/man3/OSSL_HTTP_transfer.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3", + "doc/man/man3/OSSL_INDICATOR_set_callback.3", "doc/man/man3/OSSL_ITEM.3", "doc/man/man3/OSSL_LIB_CTX.3", + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3", "doc/man/man3/OSSL_PARAM.3", "doc/man/man3/OSSL_PARAM_BLD.3", "doc/man/man3/OSSL_PARAM_allocate_from_text.3", "doc/man/man3/OSSL_PARAM_dup.3", "doc/man/man3/OSSL_PARAM_int.3", + "doc/man/man3/OSSL_PARAM_print_to_bio.3", "doc/man/man3/OSSL_PROVIDER.3", + "doc/man/man3/OSSL_QUIC_client_method.3", "doc/man/man3/OSSL_SELF_TEST_new.3", "doc/man/man3/OSSL_SELF_TEST_set_callback.3", "doc/man/man3/OSSL_STORE_INFO.3", @@ -19709,11 +22964,13 @@ our %unified_info = ( "doc/man/man3/OSSL_STORE_attach.3", "doc/man/man3/OSSL_STORE_expect.3", "doc/man/man3/OSSL_STORE_open.3", + "doc/man/man3/OSSL_sleep.3", "doc/man/man3/OSSL_trace_enabled.3", "doc/man/man3/OSSL_trace_get_category_num.3", "doc/man/man3/OSSL_trace_set_channel.3", "doc/man/man3/OpenSSL_add_all_algorithms.3", "doc/man/man3/OpenSSL_version.3", + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3", "doc/man/man3/PEM_X509_INFO_read_bio_ex.3", "doc/man/man3/PEM_bytes_read_bio.3", "doc/man/man3/PEM_read.3", @@ -19726,6 +22983,7 @@ our %unified_info = ( "doc/man/man3/PKCS12_SAFEBAG_create_cert.3", "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3", "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3", + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3", "doc/man/man3/PKCS12_add1_attr_by_NID.3", "doc/man/man3/PKCS12_add_CSPName_asc.3", "doc/man/man3/PKCS12_add_cert.3", @@ -19817,6 +23075,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_sess_set_get_cb.3", "doc/man/man3/SSL_CTX_sessions.3", "doc/man/man3/SSL_CTX_set0_CA_list.3", + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3", "doc/man/man3/SSL_CTX_set1_curves.3", "doc/man/man3/SSL_CTX_set1_sigalgs.3", "doc/man/man3/SSL_CTX_set1_verify_cert_store.3", @@ -19830,6 +23089,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_ct_validation_callback.3", "doc/man/man3/SSL_CTX_set_ctlog_list_file.3", "doc/man/man3/SSL_CTX_set_default_passwd_cb.3", + "doc/man/man3/SSL_CTX_set_domain_flags.3", "doc/man/man3/SSL_CTX_set_generate_session_id.3", "doc/man/man3/SSL_CTX_set_info_callback.3", "doc/man/man3/SSL_CTX_set_keylog_callback.3", @@ -19837,6 +23097,7 @@ our %unified_info = ( "doc/man/man3/SSL_CTX_set_min_proto_version.3", "doc/man/man3/SSL_CTX_set_mode.3", "doc/man/man3/SSL_CTX_set_msg_callback.3", + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3", "doc/man/man3/SSL_CTX_set_num_tickets.3", "doc/man/man3/SSL_CTX_set_options.3", "doc/man/man3/SSL_CTX_set_psk_client_callback.3", @@ -19875,6 +23136,7 @@ our %unified_info = ( "doc/man/man3/SSL_SESSION_print.3", "doc/man/man3/SSL_SESSION_set1_id.3", "doc/man/man3/SSL_accept.3", + "doc/man/man3/SSL_accept_stream.3", "doc/man/man3/SSL_alert_type_string.3", "doc/man/man3/SSL_alloc_buffers.3", "doc/man/man3/SSL_check_chain.3", @@ -19884,59 +23146,90 @@ our %unified_info = ( "doc/man/man3/SSL_export_keying_material.3", "doc/man/man3/SSL_extension_supported.3", "doc/man/man3/SSL_free.3", + "doc/man/man3/SSL_get0_connection.3", + "doc/man/man3/SSL_get0_group_name.3", + "doc/man/man3/SSL_get0_peer_rpk.3", "doc/man/man3/SSL_get0_peer_scts.3", + "doc/man/man3/SSL_get1_builtin_sigalgs.3", "doc/man/man3/SSL_get_SSL_CTX.3", "doc/man/man3/SSL_get_all_async_fds.3", "doc/man/man3/SSL_get_certificate.3", "doc/man/man3/SSL_get_ciphers.3", "doc/man/man3/SSL_get_client_random.3", + "doc/man/man3/SSL_get_conn_close_info.3", "doc/man/man3/SSL_get_current_cipher.3", "doc/man/man3/SSL_get_default_timeout.3", "doc/man/man3/SSL_get_error.3", + "doc/man/man3/SSL_get_event_timeout.3", "doc/man/man3/SSL_get_extms_support.3", "doc/man/man3/SSL_get_fd.3", + "doc/man/man3/SSL_get_handshake_rtt.3", "doc/man/man3/SSL_get_peer_cert_chain.3", "doc/man/man3/SSL_get_peer_certificate.3", "doc/man/man3/SSL_get_peer_signature_nid.3", "doc/man/man3/SSL_get_peer_tmp_key.3", "doc/man/man3/SSL_get_psk_identity.3", "doc/man/man3/SSL_get_rbio.3", + "doc/man/man3/SSL_get_rpoll_descriptor.3", "doc/man/man3/SSL_get_session.3", "doc/man/man3/SSL_get_shared_sigalgs.3", + "doc/man/man3/SSL_get_stream_id.3", + "doc/man/man3/SSL_get_stream_read_state.3", + "doc/man/man3/SSL_get_value_uint.3", "doc/man/man3/SSL_get_verify_result.3", "doc/man/man3/SSL_get_version.3", "doc/man/man3/SSL_group_to_name.3", + "doc/man/man3/SSL_handle_events.3", "doc/man/man3/SSL_in_init.3", + "doc/man/man3/SSL_inject_net_dgram.3", "doc/man/man3/SSL_key_update.3", "doc/man/man3/SSL_library_init.3", "doc/man/man3/SSL_load_client_CA_file.3", "doc/man/man3/SSL_new.3", + "doc/man/man3/SSL_new_domain.3", + "doc/man/man3/SSL_new_listener.3", + "doc/man/man3/SSL_new_stream.3", "doc/man/man3/SSL_pending.3", + "doc/man/man3/SSL_poll.3", "doc/man/man3/SSL_read.3", "doc/man/man3/SSL_read_early_data.3", "doc/man/man3/SSL_rstate_string.3", "doc/man/man3/SSL_session_reused.3", "doc/man/man3/SSL_set1_host.3", + "doc/man/man3/SSL_set1_initial_peer_addr.3", + "doc/man/man3/SSL_set1_server_cert_type.3", "doc/man/man3/SSL_set_async_callback.3", "doc/man/man3/SSL_set_bio.3", + "doc/man/man3/SSL_set_blocking_mode.3", "doc/man/man3/SSL_set_connect_state.3", + "doc/man/man3/SSL_set_default_stream_mode.3", "doc/man/man3/SSL_set_fd.3", + "doc/man/man3/SSL_set_incoming_stream_policy.3", + "doc/man/man3/SSL_set_quic_tls_cbs.3", "doc/man/man3/SSL_set_retry_verify.3", "doc/man/man3/SSL_set_session.3", + "doc/man/man3/SSL_set_session_secret_cb.3", "doc/man/man3/SSL_set_shutdown.3", "doc/man/man3/SSL_set_verify_result.3", "doc/man/man3/SSL_shutdown.3", "doc/man/man3/SSL_state_string.3", + "doc/man/man3/SSL_stream_conclude.3", + "doc/man/man3/SSL_stream_reset.3", "doc/man/man3/SSL_want.3", "doc/man/man3/SSL_write.3", "doc/man/man3/TS_RESP_CTX_new.3", - "doc/man/man3/TS_VERIFY_CTX_set_certs.3", + "doc/man/man3/TS_VERIFY_CTX.3", "doc/man/man3/UI_STRING.3", "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", + "doc/man/man3/X509_ACERT_add1_attr.3", + "doc/man/man3/X509_ACERT_add_attr_nconf.3", + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3", + "doc/man/man3/X509_ACERT_get_attr.3", + "doc/man/man3/X509_ACERT_print_ex.3", "doc/man/man3/X509_ALGOR_dup.3", "doc/man/man3/X509_ATTRIBUTE.3", "doc/man/man3/X509_CRL_get0_by_serial.3", @@ -19953,6 +23246,7 @@ our %unified_info = ( "doc/man/man3/X509_REQ_get_attr.3", "doc/man/man3/X509_REQ_get_extensions.3", "doc/man/man3/X509_SIG_get0.3", + "doc/man/man3/X509_STORE_CTX_get_by_subject.3", "doc/man/man3/X509_STORE_CTX_get_error.3", "doc/man/man3/X509_STORE_CTX_new.3", "doc/man/man3/X509_STORE_CTX_set_verify_cb.3", @@ -19975,6 +23269,7 @@ our %unified_info = ( "doc/man/man3/X509_get0_notBefore.3", "doc/man/man3/X509_get0_signature.3", "doc/man/man3/X509_get0_uids.3", + "doc/man/man3/X509_get_default_cert_file.3", "doc/man/man3/X509_get_extension_flags.3", "doc/man/man3/X509_get_pubkey.3", "doc/man/man3/X509_get_serialNumber.3", @@ -20020,12 +23315,15 @@ our %unified_info = ( "doc/man/man7/EVP_CIPHER-RC5.7", "doc/man/man7/EVP_CIPHER-SEED.7", "doc/man/man7/EVP_CIPHER-SM4.7", + "doc/man/man7/EVP_KDF-ARGON2.7", "doc/man/man7/EVP_KDF-HKDF.7", + "doc/man/man7/EVP_KDF-HMAC-DRBG.7", "doc/man/man7/EVP_KDF-KB.7", "doc/man/man7/EVP_KDF-KRB5KDF.7", "doc/man/man7/EVP_KDF-PBKDF1.7", "doc/man/man7/EVP_KDF-PBKDF2.7", "doc/man/man7/EVP_KDF-PKCS12KDF.7", + "doc/man/man7/EVP_KDF-PVKKDF.7", "doc/man/man7/EVP_KDF-SCRYPT.7", "doc/man/man7/EVP_KDF-SS.7", "doc/man/man7/EVP_KDF-SSHKDF.7", @@ -20034,7 +23332,10 @@ our %unified_info = ( "doc/man/man7/EVP_KDF-X942-ASN1.7", "doc/man/man7/EVP_KDF-X942-CONCAT.7", "doc/man/man7/EVP_KDF-X963.7", + "doc/man/man7/EVP_KEM-EC.7", + "doc/man/man7/EVP_KEM-ML-KEM.7", "doc/man/man7/EVP_KEM-RSA.7", + "doc/man/man7/EVP_KEM-X25519.7", "doc/man/man7/EVP_KEYEXCH-DH.7", "doc/man/man7/EVP_KEYEXCH-ECDH.7", "doc/man/man7/EVP_KEYEXCH-X25519.7", @@ -20046,6 +23347,7 @@ our %unified_info = ( "doc/man/man7/EVP_MAC-Poly1305.7", "doc/man/man7/EVP_MAC-Siphash.7", "doc/man/man7/EVP_MD-BLAKE2.7", + "doc/man/man7/EVP_MD-KECCAK.7", "doc/man/man7/EVP_MD-MD2.7", "doc/man/man7/EVP_MD-MD4.7", "doc/man/man7/EVP_MD-MD5-SHA1.7", @@ -20065,12 +23367,17 @@ our %unified_info = ( "doc/man/man7/EVP_PKEY-EC.7", "doc/man/man7/EVP_PKEY-FFC.7", "doc/man/man7/EVP_PKEY-HMAC.7", + "doc/man/man7/EVP_PKEY-ML-DSA.7", + "doc/man/man7/EVP_PKEY-ML-KEM.7", "doc/man/man7/EVP_PKEY-RSA.7", + "doc/man/man7/EVP_PKEY-SLH-DSA.7", "doc/man/man7/EVP_PKEY-SM2.7", "doc/man/man7/EVP_PKEY-X25519.7", + "doc/man/man7/EVP_RAND-CRNG-TEST.7", "doc/man/man7/EVP_RAND-CTR-DRBG.7", "doc/man/man7/EVP_RAND-HASH-DRBG.7", "doc/man/man7/EVP_RAND-HMAC-DRBG.7", + "doc/man/man7/EVP_RAND-JITTER.7", "doc/man/man7/EVP_RAND-SEED-SRC.7", "doc/man/man7/EVP_RAND-TEST-RAND.7", "doc/man/man7/EVP_RAND.7", @@ -20078,17 +23385,19 @@ our %unified_info = ( "doc/man/man7/EVP_SIGNATURE-ECDSA.7", "doc/man/man7/EVP_SIGNATURE-ED25519.7", "doc/man/man7/EVP_SIGNATURE-HMAC.7", + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7", "doc/man/man7/EVP_SIGNATURE-RSA.7", + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7", "doc/man/man7/OSSL_PROVIDER-FIPS.7", "doc/man/man7/OSSL_PROVIDER-base.7", "doc/man/man7/OSSL_PROVIDER-default.7", "doc/man/man7/OSSL_PROVIDER-legacy.7", "doc/man/man7/OSSL_PROVIDER-null.7", + "doc/man/man7/OSSL_STORE-winstore.7", "doc/man/man7/RAND.7", "doc/man/man7/RSA-PSS.7", "doc/man/man7/X25519.7", "doc/man/man7/bio.7", - "doc/man/man7/crypto.7", "doc/man/man7/ct.7", "doc/man/man7/des_modes.7", "doc/man/man7/evp.7", @@ -20099,14 +23408,31 @@ our %unified_info = ( "doc/man/man7/life_cycle-mac.7", "doc/man/man7/life_cycle-pkey.7", "doc/man/man7/life_cycle-rand.7", - "doc/man/man7/migration_guide.7", "doc/man/man7/openssl-core.h.7", "doc/man/man7/openssl-core_dispatch.h.7", "doc/man/man7/openssl-core_names.h.7", "doc/man/man7/openssl-env.7", "doc/man/man7/openssl-glossary.7", + "doc/man/man7/openssl-qlog.7", + "doc/man/man7/openssl-quic-concurrency.7", + "doc/man/man7/openssl-quic.7", "doc/man/man7/openssl-threads.7", "doc/man/man7/openssl_user_macros.7", + "doc/man/man7/ossl-guide-introduction.7", + "doc/man/man7/ossl-guide-libcrypto-introduction.7", + "doc/man/man7/ossl-guide-libraries-introduction.7", + "doc/man/man7/ossl-guide-libssl-introduction.7", + "doc/man/man7/ossl-guide-migration.7", + "doc/man/man7/ossl-guide-quic-client-block.7", + "doc/man/man7/ossl-guide-quic-client-non-block.7", + "doc/man/man7/ossl-guide-quic-introduction.7", + "doc/man/man7/ossl-guide-quic-multi-stream.7", + "doc/man/man7/ossl-guide-quic-server-block.7", + "doc/man/man7/ossl-guide-quic-server-non-block.7", + "doc/man/man7/ossl-guide-tls-client-block.7", + "doc/man/man7/ossl-guide-tls-client-non-block.7", + "doc/man/man7/ossl-guide-tls-introduction.7", + "doc/man/man7/ossl-guide-tls-server-block.7", "doc/man/man7/ossl_store-file.7", "doc/man/man7/ossl_store.7", "doc/man/man7/passphrase-encoding.7", @@ -20125,10 +23451,10 @@ our %unified_info = ( "doc/man/man7/provider-object.7", "doc/man/man7/provider-rand.7", "doc/man/man7/provider-signature.7", + "doc/man/man7/provider-skeymgmt.7", "doc/man/man7/provider-storemgmt.7", "doc/man/man7/provider.7", "doc/man/man7/proxy-certificates.7", - "doc/man/man7/ssl.7", "doc/man/man7/x509.7" ] }, @@ -20140,6 +23466,7 @@ our %unified_info = ( ], "programs" => [ "apps/openssl", + "fuzz/acert-test", "fuzz/asn1-test", "fuzz/asn1parse-test", "fuzz/bignum-test", @@ -20150,7 +23477,24 @@ our %unified_info = ( "fuzz/conf-test", "fuzz/crl-test", "fuzz/ct-test", + "fuzz/decoder-test", + "fuzz/dtlsclient-test", + "fuzz/dtlsserver-test", + "fuzz/hashtable-test", + "fuzz/ml-dsa-test", + "fuzz/ml-kem-test", + "fuzz/pem-test", + "fuzz/provider-test", + "fuzz/punycode-test", + "fuzz/quic-client-test", + "fuzz/quic-lcidm-test", + "fuzz/quic-rcidm-test", + "fuzz/quic-server-test", + "fuzz/quic-srtm-test", "fuzz/server-test", + "fuzz/slh-dsa-test", + "fuzz/smime-test", + "fuzz/v3name-test", "fuzz/x509-test", "test/aborttest", "test/acvp_test", @@ -20168,21 +23512,28 @@ our %unified_info = ( "test/asynctest", "test/bad_dtls_test", "test/bftest", + "test/bio_addr_test", + "test/bio_base64_test", "test/bio_callback_test", "test/bio_core_test", + "test/bio_dgram_test", "test/bio_enc_test", "test/bio_memleak_test", + "test/bio_meth_test", "test/bio_prefix_text", "test/bio_pw_callback_test", "test/bio_readbuffer_test", + "test/bio_tfo_test", "test/bioprinttest", "test/bn_internal_test", "test/bntest", + "test/build_wincrypt_test", "test/buildtest_c_aes", "test/buildtest_c_async", "test/buildtest_c_blowfish", "test/buildtest_c_bn", "test/buildtest_c_buffer", + "test/buildtest_c_byteorder", "test/buildtest_c_camellia", "test/buildtest_c_cast", "test/buildtest_c_cmac", @@ -20191,7 +23542,6 @@ our %unified_info = ( "test/buildtest_c_conftypes", "test/buildtest_c_core", "test/buildtest_c_core_dispatch", - "test/buildtest_c_core_names", "test/buildtest_c_core_object", "test/buildtest_c_cryptoerr_legacy", "test/buildtest_c_decoder", @@ -20200,6 +23550,7 @@ our %unified_info = ( "test/buildtest_c_dsa", "test/buildtest_c_dtls1", "test/buildtest_c_e_os2", + "test/buildtest_c_e_ostime", "test/buildtest_c_ebcdic", "test/buildtest_c_ec", "test/buildtest_c_ecdh", @@ -20209,13 +23560,16 @@ our %unified_info = ( "test/buildtest_c_evp", "test/buildtest_c_fips_names", "test/buildtest_c_hmac", + "test/buildtest_c_hpke", "test/buildtest_c_http", "test/buildtest_c_idea", + "test/buildtest_c_indicator", "test/buildtest_c_kdf", "test/buildtest_c_macros", "test/buildtest_c_md4", "test/buildtest_c_md5", "test/buildtest_c_mdc2", + "test/buildtest_c_ml_kem", "test/buildtest_c_modes", "test/buildtest_c_obj_mac", "test/buildtest_c_objects", @@ -20226,6 +23580,7 @@ our %unified_info = ( "test/buildtest_c_pem2", "test/buildtest_c_prov_ssl", "test/buildtest_c_provider", + "test/buildtest_c_quic", "test/buildtest_c_rand", "test/buildtest_c_rc2", "test/buildtest_c_rc4", @@ -20240,11 +23595,14 @@ our %unified_info = ( "test/buildtest_c_stack", "test/buildtest_c_store", "test/buildtest_c_symhacks", + "test/buildtest_c_thread", "test/buildtest_c_tls1", "test/buildtest_c_ts", "test/buildtest_c_txt_db", "test/buildtest_c_types", "test/buildtest_c_whrlpool", + "test/byteorder_test", + "test/ca_internals_test", "test/casttest", "test/chacha_internal_test", "test/cipher_overhead_test", @@ -20273,6 +23631,7 @@ our %unified_info = ( "test/curve448_internal_test", "test/d2i_test", "test/danetest", + "test/decoder_propq_test", "test/defltfips_test", "test/destest", "test/dhtest", @@ -20297,9 +23656,12 @@ our %unified_info = ( "test/evp_kdf_test", "test/evp_libctx_test", "test/evp_pkey_ctx_new_from_name", + "test/evp_pkey_dhkem_test", "test/evp_pkey_dparams_test", "test/evp_pkey_provided_test", + "test/evp_skey_test", "test/evp_test", + "test/evp_xof_test", "test/exdatatest", "test/exptest", "test/ext_internal_test", @@ -20309,21 +23671,29 @@ our %unified_info = ( "test/gmdifftest", "test/hexstr_test", "test/hmactest", + "test/hpke_test", "test/http_test", "test/ideatest", "test/igetest", + "test/json_test", "test/keymgmt_internal_test", "test/lhash_test", + "test/list_test", "test/localetest", "test/mdc2_internal_test", "test/mdc2test", + "test/membio_test", "test/memleaktest", + "test/ml_dsa_test", + "test/ml_kem_evp_extra_test", + "test/ml_kem_internal_test", "test/modes_internal_test", "test/namemap_internal_test", "test/nodefltctxtest", "test/ocspapitest", "test/ossl_store_test", "test/packettest", + "test/pairwise_fail_test", "test/param_build_test", "test/params_api_test", "test/params_conversion_test", @@ -20332,36 +23702,65 @@ our %unified_info = ( "test/pbetest", "test/pem_read_depr_test", "test/pemtest", + "test/pkcs12_api_test", "test/pkcs12_format_test", "test/pkcs7_test", "test/pkey_meth_kdf_test", "test/pkey_meth_test", "test/poly1305_internal_test", + "test/priority_queue_test", "test/property_test", "test/prov_config_test", "test/provfetchtest", + "test/provider_default_search_path_test", "test/provider_fallback_test", "test/provider_internal_test", "test/provider_pkey_test", "test/provider_status_test", "test/provider_test", "test/punycode_test", + "test/quic_ackm_test", + "test/quic_cc_test", + "test/quic_cfq_test", + "test/quic_client_test", + "test/quic_fc_test", + "test/quic_fifd_test", + "test/quic_lcidm_test", + "test/quic_multistream_test", + "test/quic_newcid_test", + "test/quic_qlog_test", + "test/quic_radix_test", + "test/quic_rcidm_test", + "test/quic_record_test", + "test/quic_srt_gen_test", + "test/quic_srtm_test", + "test/quic_stream_test", + "test/quic_tserver_test", + "test/quic_txp_test", + "test/quic_txpim_test", + "test/quic_wire_test", + "test/quicapitest", + "test/quicfaultstest", "test/rand_status_test", "test/rand_test", "test/rc2test", "test/rc4test", "test/rc5test", - "test/rdrand_sanitytest", + "test/rdcpu_sanitytest", "test/recordlentest", + "test/rpktest", "test/rsa_complex", "test/rsa_mp_test", "test/rsa_sp800_56b_test", "test/rsa_test", + "test/rsa_x931_test", + "test/safe_math_test", "test/sanitytest", "test/secmemtest", "test/servername_test", "test/sha_test", "test/siphash_internal_test", + "test/slh_dsa_test", "test/sm2_internal_test", "test/sm3_internal_test", "test/sm4_internal_test", @@ -20369,6 +23768,7 @@ our %unified_info = ( "test/srptest", "test/ssl_cert_table_internal_test", "test/ssl_ctx_test", + "test/ssl_handshake_rtt_test", "test/ssl_old_test", "test/ssl_test", "test/ssl_test_ctx_test", @@ -20376,13 +23776,17 @@ our %unified_info = ( "test/sslbuffertest", "test/sslcorrupttest", "test/stack_test", + "test/strtoultest", "test/sysdefaulttest", "test/test_test", + "test/threadpool_test", "test/threadstest", "test/threadstest_fips", "test/time_offset_test", + "test/time_test", "test/tls13ccstest", "test/tls13encryptiontest", + "test/tls13groupselection_test", "test/trace_api_test", "test/uitest", "test/upcallstest", @@ -20392,9 +23796,13 @@ our %unified_info = ( "test/verify_extra_test", "test/versions", "test/wpackettest", + "test/x509_acert_test", "test/x509_check_cert_pkey_test", "test/x509_dup_cert_test", "test/x509_internal_test", + "test/x509_load_cert_file_test", + "test/x509_req_test", + "test/x509_test", "test/x509_time_test", "test/x509aux" ], @@ -20410,6 +23818,33 @@ our %unified_info = ( "apps/CA.pl" => [ "apps/CA.pl.in" ], + "apps/ca_internals_test-bin-ca.o" => [ + "apps/ca.c" + ], + "apps/lib/ca_internals_test-bin-app_libctx.o" => [ + "apps/lib/app_libctx.c" + ], + "apps/lib/ca_internals_test-bin-app_provider.o" => [ + "apps/lib/app_provider.c" + ], + "apps/lib/ca_internals_test-bin-app_rand.o" => [ + "apps/lib/app_rand.c" + ], + "apps/lib/ca_internals_test-bin-app_x509.o" => [ + "apps/lib/app_x509.c" + ], + "apps/lib/ca_internals_test-bin-apps.o" => [ + "apps/lib/apps.c" + ], + "apps/lib/ca_internals_test-bin-apps_ui.o" => [ + "apps/lib/apps_ui.c" + ], + "apps/lib/ca_internals_test-bin-engine.o" => [ + "apps/lib/engine.c" + ], + "apps/lib/ca_internals_test-bin-fmt.o" => [ + "apps/lib/fmt.c" + ], "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ "apps/lib/cmp_mock_srv.c" ], @@ -20431,6 +23866,9 @@ our %unified_info = ( "apps/lib/libapps-lib-apps.o" => [ "apps/lib/apps.c" ], + "apps/lib/libapps-lib-apps_opt_printf.o" => [ + "apps/lib/apps_opt_printf.c" + ], "apps/lib/libapps-lib-apps_ui.o" => [ "apps/lib/apps_ui.c" ], @@ -20449,6 +23887,9 @@ our %unified_info = ( "apps/lib/libapps-lib-http_server.o" => [ "apps/lib/http_server.c" ], + "apps/lib/libapps-lib-log.o" => [ + "apps/lib/log.c" + ], "apps/lib/libapps-lib-names.o" => [ "apps/lib/names.c" ], @@ -20480,12 +23921,14 @@ our %unified_info = ( "apps/lib/libapps-lib-app_rand.o", "apps/lib/libapps-lib-app_x509.o", "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", "apps/lib/libapps-lib-apps_ui.o", "apps/lib/libapps-lib-columns.o", "apps/lib/libapps-lib-engine.o", "apps/lib/libapps-lib-engine_loader.o", "apps/lib/libapps-lib-fmt.o", "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", "apps/lib/libapps-lib-names.o", "apps/lib/libapps-lib-opt.o", "apps/lib/libapps-lib-s_cb.o", @@ -20539,6 +23982,7 @@ our %unified_info = ( "apps/openssl-bin-s_server.o", "apps/openssl-bin-s_time.o", "apps/openssl-bin-sess_id.o", + "apps/openssl-bin-skeyutl.o", "apps/openssl-bin-smime.o", "apps/openssl-bin-speed.o", "apps/openssl-bin-spkac.o", @@ -20684,6 +24128,9 @@ our %unified_info = ( "apps/openssl-bin-sess_id.o" => [ "apps/sess_id.c" ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/skeyutl.c" + ], "apps/openssl-bin-smime.o" => [ "apps/smime.c" ], @@ -20759,6 +24206,12 @@ our %unified_info = ( "crypto/aria/libcrypto-lib-aria.o" => [ "crypto/aria/aria.c" ], + "crypto/asn1/asn1_time_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], + "crypto/asn1/ca_internals_test-bin-a_time.o" => [ + "crypto/asn1/a_time.c" + ], "crypto/asn1/libcrypto-lib-a_bitstr.o" => [ "crypto/asn1/a_bitstr.c" ], @@ -20951,6 +24404,9 @@ our %unified_info = ( "crypto/asn1/libcrypto-lib-x_val.o" => [ "crypto/asn1/x_val.c" ], + "crypto/asn1_time_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/async/arch/libcrypto-lib-async_null.o" => [ "crypto/async/arch/async_null.c" ], @@ -21044,6 +24500,9 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_dgram.o" => [ "crypto/bio/bss_dgram.c" ], + "crypto/bio/libcrypto-lib-bss_dgram_pair.o" => [ + "crypto/bio/bss_dgram_pair.c" + ], "crypto/bio/libcrypto-lib-bss_fd.o" => [ "crypto/bio/bss_fd.c" ], @@ -21275,6 +24734,9 @@ our %unified_info = ( "crypto/buffer/libfips-lib-buffer.o" => [ "crypto/buffer/buffer.c" ], + "crypto/ca_internals_test-bin-ctype.o" => [ + "crypto/ctype.c" + ], "crypto/camellia/libcrypto-lib-cmll-x86.o" => [ "crypto/camellia/cmll-x86.S" ], @@ -21326,6 +24788,9 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_err.o" => [ "crypto/cmp/cmp_err.c" ], + "crypto/cmp/libcrypto-lib-cmp_genm.o" => [ + "crypto/cmp/cmp_genm.c" + ], "crypto/cmp/libcrypto-lib-cmp_hdr.o" => [ "crypto/cmp/cmp_hdr.c" ], @@ -22013,9 +25478,15 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_blocks.o" => [ "crypto/err/err_blocks.c" ], + "crypto/err/libcrypto-lib-err_mark.o" => [ + "crypto/err/err_mark.c" + ], "crypto/err/libcrypto-lib-err_prn.o" => [ "crypto/err/err_prn.c" ], + "crypto/err/libcrypto-lib-err_save.o" => [ + "crypto/err/err_save.c" + ], "crypto/ess/libcrypto-lib-ess_asn1.o" => [ "crypto/ess/ess_asn1.c" ], @@ -22262,9 +25733,15 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libcrypto-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libcrypto-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libcrypto-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/evp/libfips-lib-asymcipher.o" => [ "crypto/evp/asymcipher.c" ], @@ -22310,9 +25787,6 @@ our %unified_info = ( "crypto/evp/libfips-lib-keymgmt_meth.o" => [ "crypto/evp/keymgmt_meth.c" ], - "crypto/evp/libfips-lib-m_sigver.o" => [ - "crypto/evp/m_sigver.c" - ], "crypto/evp/libfips-lib-mac_lib.o" => [ "crypto/evp/mac_lib.c" ], @@ -22331,9 +25805,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-pmeth_lib.o" => [ "crypto/evp/pmeth_lib.c" ], + "crypto/evp/libfips-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], "crypto/evp/libfips-lib-signature.o" => [ "crypto/evp/signature.c" ], + "crypto/evp/libfips-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], "crypto/ffc/libcrypto-lib-ffc_backend.o" => [ "crypto/ffc/ffc_backend.c" ], @@ -22376,12 +25856,30 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params_validate.o" => [ "crypto/ffc/ffc_params_validate.c" ], + "crypto/hashtable/libcrypto-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libcrypto-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], + "crypto/hashtable/libfips-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libfips-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], "crypto/hmac/libcrypto-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], "crypto/hmac/libfips-lib-hmac.o" => [ "crypto/hmac/hmac.c" ], + "crypto/hpke/libcrypto-lib-hpke.o" => [ + "crypto/hpke/hpke.c" + ], + "crypto/hpke/libcrypto-lib-hpke_util.o" => [ + "crypto/hpke/hpke_util.c" + ], "crypto/http/libcrypto-lib-http_client.o" => [ "crypto/http/http_client.c" ], @@ -22424,6 +25922,9 @@ our %unified_info = ( "crypto/libcrypto-lib-bsearch.o" => [ "crypto/bsearch.c" ], + "crypto/libcrypto-lib-comp_methods.o" => [ + "crypto/comp_methods.c" + ], "crypto/libcrypto-lib-context.o" => [ "crypto/context.c" ], @@ -22451,9 +25952,15 @@ our %unified_info = ( "crypto/libcrypto-lib-cversion.o" => [ "crypto/cversion.c" ], + "crypto/libcrypto-lib-defaults.o" => [ + "crypto/defaults.c" + ], "crypto/libcrypto-lib-der_writer.o" => [ "crypto/der_writer.c" ], + "crypto/libcrypto-lib-deterministic_nonce.o" => [ + "crypto/deterministic_nonce.c" + ], "crypto/libcrypto-lib-ebcdic.o" => [ "crypto/ebcdic.c" ], @@ -22463,6 +25970,9 @@ our %unified_info = ( "crypto/libcrypto-lib-getenv.o" => [ "crypto/getenv.c" ], + "crypto/libcrypto-lib-indicator_core.o" => [ + "crypto/indicator_core.c" + ], "crypto/libcrypto-lib-info.o" => [ "crypto/info.c" ], @@ -22511,6 +26021,9 @@ our %unified_info = ( "crypto/libcrypto-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libcrypto-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libcrypto-lib-passphrase.o" => [ "crypto/passphrase.c" ], @@ -22532,12 +26045,21 @@ our %unified_info = ( "crypto/libcrypto-lib-punycode.o" => [ "crypto/punycode.c" ], + "crypto/libcrypto-lib-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/libcrypto-lib-self_test_core.o" => [ "crypto/self_test_core.c" ], + "crypto/libcrypto-lib-sleep.o" => [ + "crypto/sleep.c" + ], "crypto/libcrypto-lib-sparse_array.o" => [ "crypto/sparse_array.c" ], + "crypto/libcrypto-lib-ssl_err.o" => [ + "crypto/ssl_err.c" + ], "crypto/libcrypto-lib-threads_lib.o" => [ "crypto/threads_lib.c" ], @@ -22550,6 +26072,9 @@ our %unified_info = ( "crypto/libcrypto-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libcrypto-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libcrypto-lib-trace.o" => [ "crypto/trace.c" ], @@ -22616,6 +26141,9 @@ our %unified_info = ( "crypto/libfips-lib-params_from_text.o" => [ "crypto/params_from_text.c" ], + "crypto/libfips-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], "crypto/libfips-lib-provider_core.o" => [ "crypto/provider_core.c" ], @@ -22640,6 +26168,9 @@ our %unified_info = ( "crypto/libfips-lib-threads_win.o" => [ "crypto/threads_win.c" ], + "crypto/libfips-lib-time.o" => [ + "crypto/time.c" + ], "crypto/libfips-lib-x86cpuid.o" => [ "crypto/x86cpuid.S" ], @@ -22667,6 +26198,60 @@ our %unified_info = ( "crypto/mdc2/libcrypto-lib-mdc2dgst.o" => [ "crypto/mdc2/mdc2dgst.c" ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_kem/libcrypto-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], + "crypto/ml_kem/libfips-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], "crypto/modes/libcrypto-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22703,6 +26288,9 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libcrypto-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/modes/libfips-lib-cbc128.o" => [ "crypto/modes/cbc128.c" ], @@ -22730,6 +26318,9 @@ our %unified_info = ( "crypto/modes/libfips-lib-xts128.o" => [ "crypto/modes/xts128.c" ], + "crypto/modes/libfips-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], "crypto/objects/libcrypto-lib-o_names.o" => [ "crypto/objects/o_names.c" ], @@ -22775,6 +26366,9 @@ our %unified_info = ( "crypto/ocsp/libcrypto-lib-v3_ocsp.o" => [ "crypto/ocsp/v3_ocsp.c" ], + "crypto/packettest-bin-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], "crypto/pem/libcrypto-lib-pem_all.o" => [ "crypto/pem/pem_all.c" ], @@ -22937,6 +26531,9 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_pool.o" => [ "crypto/rand/rand_pool.c" ], + "crypto/rand/libcrypto-lib-rand_uniform.o" => [ + "crypto/rand/rand_uniform.c" + ], "crypto/rand/libcrypto-lib-randfile.o" => [ "crypto/rand/randfile.c" ], @@ -23168,6 +26765,66 @@ our %unified_info = ( "crypto/siphash/libcrypto-lib-siphash.o" => [ "crypto/siphash/siphash.c" ], + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], + "crypto/slh_dsa/libfips-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libfips-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libfips-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libfips-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libfips-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], "crypto/sm2/libcrypto-lib-sm2_crypt.o" => [ "crypto/sm2/sm2_crypt.c" ], @@ -23222,6 +26879,42 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_strings.o" => [ "crypto/store/store_strings.c" ], + "crypto/thread/arch/libcrypto-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/arch/libfips-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libfips-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libfips-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/libcrypto-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libcrypto-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libcrypto-lib-internal.o" => [ + "crypto/thread/internal.c" + ], + "crypto/thread/libfips-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libfips-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libfips-lib-internal.o" => [ + "crypto/thread/internal.c" + ], "crypto/ts/libcrypto-lib-ts_asn1.o" => [ "crypto/ts/ts_asn1.c" ], @@ -23309,6 +27002,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_tree.o" => [ "crypto/x509/pcy_tree.c" ], + "crypto/x509/libcrypto-lib-t_acert.o" => [ + "crypto/x509/t_acert.c" + ], "crypto/x509/libcrypto-lib-t_crl.o" => [ "crypto/x509/t_crl.c" ], @@ -23318,6 +27014,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-t_x509.o" => [ "crypto/x509/t_x509.c" ], + "crypto/x509/libcrypto-lib-v3_aaa.o" => [ + "crypto/x509/v3_aaa.c" + ], + "crypto/x509/libcrypto-lib-v3_ac_tgt.o" => [ + "crypto/x509/v3_ac_tgt.c" + ], "crypto/x509/libcrypto-lib-v3_addr.o" => [ "crypto/x509/v3_addr.c" ], @@ -23333,6 +27035,21 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_asid.o" => [ "crypto/x509/v3_asid.c" ], + "crypto/x509/libcrypto-lib-v3_attrdesc.o" => [ + "crypto/x509/v3_attrdesc.c" + ], + "crypto/x509/libcrypto-lib-v3_attrmap.o" => [ + "crypto/x509/v3_attrmap.c" + ], + "crypto/x509/libcrypto-lib-v3_audit_id.o" => [ + "crypto/x509/v3_audit_id.c" + ], + "crypto/x509/libcrypto-lib-v3_authattid.o" => [ + "crypto/x509/v3_authattid.c" + ], + "crypto/x509/libcrypto-lib-v3_battcons.o" => [ + "crypto/x509/v3_battcons.c" + ], "crypto/x509/libcrypto-lib-v3_bcons.o" => [ "crypto/x509/v3_bcons.c" ], @@ -23357,15 +27074,24 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_genn.o" => [ "crypto/x509/v3_genn.c" ], + "crypto/x509/libcrypto-lib-v3_group_ac.o" => [ + "crypto/x509/v3_group_ac.c" + ], "crypto/x509/libcrypto-lib-v3_ia5.o" => [ "crypto/x509/v3_ia5.c" ], + "crypto/x509/libcrypto-lib-v3_ind_iss.o" => [ + "crypto/x509/v3_ind_iss.c" + ], "crypto/x509/libcrypto-lib-v3_info.o" => [ "crypto/x509/v3_info.c" ], "crypto/x509/libcrypto-lib-v3_int.o" => [ "crypto/x509/v3_int.c" ], + "crypto/x509/libcrypto-lib-v3_iobo.o" => [ + "crypto/x509/v3_iobo.c" + ], "crypto/x509/libcrypto-lib-v3_ist.o" => [ "crypto/x509/v3_ist.c" ], @@ -23375,6 +27101,12 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_ncons.o" => [ "crypto/x509/v3_ncons.c" ], + "crypto/x509/libcrypto-lib-v3_no_ass.o" => [ + "crypto/x509/v3_no_ass.c" + ], + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o" => [ + "crypto/x509/v3_no_rev_avail.c" + ], "crypto/x509/libcrypto-lib-v3_pci.o" => [ "crypto/x509/v3_pci.c" ], @@ -23396,18 +27128,36 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_purp.o" => [ "crypto/x509/v3_purp.c" ], + "crypto/x509/libcrypto-lib-v3_rolespec.o" => [ + "crypto/x509/v3_rolespec.c" + ], "crypto/x509/libcrypto-lib-v3_san.o" => [ "crypto/x509/v3_san.c" ], + "crypto/x509/libcrypto-lib-v3_sda.o" => [ + "crypto/x509/v3_sda.c" + ], + "crypto/x509/libcrypto-lib-v3_single_use.o" => [ + "crypto/x509/v3_single_use.c" + ], "crypto/x509/libcrypto-lib-v3_skid.o" => [ "crypto/x509/v3_skid.c" ], + "crypto/x509/libcrypto-lib-v3_soa_id.o" => [ + "crypto/x509/v3_soa_id.c" + ], "crypto/x509/libcrypto-lib-v3_sxnet.o" => [ "crypto/x509/v3_sxnet.c" ], + "crypto/x509/libcrypto-lib-v3_timespec.o" => [ + "crypto/x509/v3_timespec.c" + ], "crypto/x509/libcrypto-lib-v3_tlsf.o" => [ "crypto/x509/v3_tlsf.c" ], + "crypto/x509/libcrypto-lib-v3_usernotice.o" => [ + "crypto/x509/v3_usernotice.c" + ], "crypto/x509/libcrypto-lib-v3_utf8.o" => [ "crypto/x509/v3_utf8.c" ], @@ -23417,6 +27167,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3err.o" => [ "crypto/x509/v3err.c" ], + "crypto/x509/libcrypto-lib-x509_acert.o" => [ + "crypto/x509/x509_acert.c" + ], "crypto/x509/libcrypto-lib-x509_att.o" => [ "crypto/x509/x509_att.c" ], @@ -23468,6 +27221,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_vpm.o" => [ "crypto/x509/x509_vpm.c" ], + "crypto/x509/libcrypto-lib-x509aset.o" => [ + "crypto/x509/x509aset.c" + ], "crypto/x509/libcrypto-lib-x509cset.o" => [ "crypto/x509/x509cset.c" ], @@ -23495,6 +27251,9 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_exten.o" => [ "crypto/x509/x_exten.c" ], + "crypto/x509/libcrypto-lib-x_ietfatt.o" => [ + "crypto/x509/x_ietfatt.c" + ], "crypto/x509/libcrypto-lib-x_name.o" => [ "crypto/x509/x_name.c" ], @@ -23519,6 +27278,16 @@ our %unified_info = ( "engines/libcrypto-lib-e_padlock.o" => [ "engines/e_padlock.c" ], + "fuzz/acert-test" => [ + "fuzz/acert-test-bin-acert.o", + "fuzz/acert-test-bin-test-corpus.o" + ], + "fuzz/acert-test-bin-acert.o" => [ + "fuzz/acert.c" + ], + "fuzz/acert-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/asn1-test" => [ "fuzz/asn1-test-bin-asn1.o", "fuzz/asn1-test-bin-fuzz_rand.o", @@ -23631,6 +27400,190 @@ our %unified_info = ( "fuzz/ct-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/decoder-test" => [ + "fuzz/decoder-test-bin-decoder.o", + "fuzz/decoder-test-bin-fuzz_rand.o", + "fuzz/decoder-test-bin-test-corpus.o" + ], + "fuzz/decoder-test-bin-decoder.o" => [ + "fuzz/decoder.c" + ], + "fuzz/decoder-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/decoder-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsclient-test" => [ + "fuzz/dtlsclient-test-bin-dtlsclient.o", + "fuzz/dtlsclient-test-bin-fuzz_rand.o", + "fuzz/dtlsclient-test-bin-test-corpus.o" + ], + "fuzz/dtlsclient-test-bin-dtlsclient.o" => [ + "fuzz/dtlsclient.c" + ], + "fuzz/dtlsclient-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsclient-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/dtlsserver-test" => [ + "fuzz/dtlsserver-test-bin-dtlsserver.o", + "fuzz/dtlsserver-test-bin-fuzz_rand.o", + "fuzz/dtlsserver-test-bin-test-corpus.o" + ], + "fuzz/dtlsserver-test-bin-dtlsserver.o" => [ + "fuzz/dtlsserver.c" + ], + "fuzz/dtlsserver-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/dtlsserver-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/hashtable-test" => [ + "fuzz/hashtable-test-bin-fuzz_rand.o", + "fuzz/hashtable-test-bin-hashtable.o", + "fuzz/hashtable-test-bin-test-corpus.o" + ], + "fuzz/hashtable-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/hashtable-test-bin-hashtable.o" => [ + "fuzz/hashtable.c" + ], + "fuzz/hashtable-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-dsa-test" => [ + "fuzz/ml-dsa-test-bin-fuzz_rand.o", + "fuzz/ml-dsa-test-bin-ml-dsa.o", + "fuzz/ml-dsa-test-bin-test-corpus.o" + ], + "fuzz/ml-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-dsa-test-bin-ml-dsa.o" => [ + "fuzz/ml-dsa.c" + ], + "fuzz/ml-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/ml-kem-test" => [ + "fuzz/ml-kem-test-bin-fuzz_rand.o", + "fuzz/ml-kem-test-bin-ml-kem.o", + "fuzz/ml-kem-test-bin-test-corpus.o" + ], + "fuzz/ml-kem-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/ml-kem-test-bin-ml-kem.o" => [ + "fuzz/ml-kem.c" + ], + "fuzz/ml-kem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/pem-test" => [ + "fuzz/pem-test-bin-pem.o", + "fuzz/pem-test-bin-test-corpus.o" + ], + "fuzz/pem-test-bin-pem.o" => [ + "fuzz/pem.c" + ], + "fuzz/pem-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/provider-test" => [ + "fuzz/provider-test-bin-provider.o", + "fuzz/provider-test-bin-test-corpus.o" + ], + "fuzz/provider-test-bin-provider.o" => [ + "fuzz/provider.c" + ], + "fuzz/provider-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/punycode-test" => [ + "fuzz/punycode-test-bin-punycode.o", + "fuzz/punycode-test-bin-test-corpus.o" + ], + "fuzz/punycode-test-bin-punycode.o" => [ + "fuzz/punycode.c" + ], + "fuzz/punycode-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-client-test" => [ + "fuzz/quic-client-test-bin-fuzz_rand.o", + "fuzz/quic-client-test-bin-quic-client.o", + "fuzz/quic-client-test-bin-test-corpus.o" + ], + "fuzz/quic-client-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-client-test-bin-quic-client.o" => [ + "fuzz/quic-client.c" + ], + "fuzz/quic-client-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-lcidm-test" => [ + "fuzz/quic-lcidm-test-bin-fuzz_rand.o", + "fuzz/quic-lcidm-test-bin-quic-lcidm.o", + "fuzz/quic-lcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-lcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-lcidm-test-bin-quic-lcidm.o" => [ + "fuzz/quic-lcidm.c" + ], + "fuzz/quic-lcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-rcidm-test" => [ + "fuzz/quic-rcidm-test-bin-fuzz_rand.o", + "fuzz/quic-rcidm-test-bin-quic-rcidm.o", + "fuzz/quic-rcidm-test-bin-test-corpus.o" + ], + "fuzz/quic-rcidm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-rcidm-test-bin-quic-rcidm.o" => [ + "fuzz/quic-rcidm.c" + ], + "fuzz/quic-rcidm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-server-test" => [ + "fuzz/quic-server-test-bin-fuzz_rand.o", + "fuzz/quic-server-test-bin-quic-server.o", + "fuzz/quic-server-test-bin-test-corpus.o" + ], + "fuzz/quic-server-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-server-test-bin-quic-server.o" => [ + "fuzz/quic-server.c" + ], + "fuzz/quic-server-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/quic-srtm-test" => [ + "fuzz/quic-srtm-test-bin-fuzz_rand.o", + "fuzz/quic-srtm-test-bin-quic-srtm.o", + "fuzz/quic-srtm-test-bin-test-corpus.o" + ], + "fuzz/quic-srtm-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/quic-srtm-test-bin-quic-srtm.o" => [ + "fuzz/quic-srtm.c" + ], + "fuzz/quic-srtm-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], "fuzz/server-test" => [ "fuzz/server-test-bin-fuzz_rand.o", "fuzz/server-test-bin-server.o", @@ -23645,6 +27598,40 @@ our %unified_info = ( "fuzz/server-test-bin-test-corpus.o" => [ "fuzz/test-corpus.c" ], + "fuzz/slh-dsa-test" => [ + "fuzz/slh-dsa-test-bin-fuzz_rand.o", + "fuzz/slh-dsa-test-bin-slh-dsa.o", + "fuzz/slh-dsa-test-bin-test-corpus.o" + ], + "fuzz/slh-dsa-test-bin-fuzz_rand.o" => [ + "fuzz/fuzz_rand.c" + ], + "fuzz/slh-dsa-test-bin-slh-dsa.o" => [ + "fuzz/slh-dsa.c" + ], + "fuzz/slh-dsa-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/smime-test" => [ + "fuzz/smime-test-bin-smime.o", + "fuzz/smime-test-bin-test-corpus.o" + ], + "fuzz/smime-test-bin-smime.o" => [ + "fuzz/smime.c" + ], + "fuzz/smime-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test" => [ + "fuzz/v3name-test-bin-test-corpus.o", + "fuzz/v3name-test-bin-v3name.o" + ], + "fuzz/v3name-test-bin-test-corpus.o" => [ + "fuzz/test-corpus.c" + ], + "fuzz/v3name-test-bin-v3name.o" => [ + "fuzz/v3name.c" + ], "fuzz/x509-test" => [ "fuzz/x509-test-bin-fuzz_rand.o", "fuzz/x509-test-bin-test-corpus.o", @@ -23765,6 +27752,7 @@ our %unified_info = ( "crypto/bio/libcrypto-lib-bss_conn.o", "crypto/bio/libcrypto-lib-bss_core.o", "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", "crypto/bio/libcrypto-lib-bss_fd.o", "crypto/bio/libcrypto-lib-bss_file.o", "crypto/bio/libcrypto-lib-bss_log.o", @@ -23826,6 +27814,7 @@ our %unified_info = ( "crypto/cmp/libcrypto-lib-cmp_client.o", "crypto/cmp/libcrypto-lib-cmp_ctx.o", "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", "crypto/cmp/libcrypto-lib-cmp_hdr.o", "crypto/cmp/libcrypto-lib-cmp_http.o", "crypto/cmp/libcrypto-lib-cmp_msg.o", @@ -24003,7 +27992,9 @@ our %unified_info = ( "crypto/err/libcrypto-lib-err_all.o", "crypto/err/libcrypto-lib-err_all_legacy.o", "crypto/err/libcrypto-lib-err_blocks.o", + "crypto/err/libcrypto-lib-err_mark.o", "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o", "crypto/ess/libcrypto-lib-ess_asn1.o", "crypto/ess/libcrypto-lib-ess_err.o", "crypto/ess/libcrypto-lib-ess_lib.o", @@ -24086,7 +28077,9 @@ our %unified_info = ( "crypto/evp/libcrypto-lib-pmeth_check.o", "crypto/evp/libcrypto-lib-pmeth_gn.o", "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", "crypto/ffc/libcrypto-lib-ffc_backend.o", "crypto/ffc/libcrypto-lib-ffc_dh.o", "crypto/ffc/libcrypto-lib-ffc_key_generate.o", @@ -24094,7 +28087,11 @@ our %unified_info = ( "crypto/ffc/libcrypto-lib-ffc_params.o", "crypto/ffc/libcrypto-lib-ffc_params_generate.o", "crypto/ffc/libcrypto-lib-ffc_params_validate.o", + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", "crypto/hmac/libcrypto-lib-hmac.o", + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o", "crypto/http/libcrypto-lib-http_client.o", "crypto/http/libcrypto-lib-http_err.o", "crypto/http/libcrypto-lib-http_lib.o", @@ -24108,6 +28105,7 @@ our %unified_info = ( "crypto/lhash/libcrypto-lib-lhash.o", "crypto/libcrypto-lib-asn1_dsa.o", "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", "crypto/libcrypto-lib-context.o", "crypto/libcrypto-lib-core_algorithm.o", "crypto/libcrypto-lib-core_fetch.o", @@ -24117,10 +28115,13 @@ our %unified_info = ( "crypto/libcrypto-lib-cryptlib.o", "crypto/libcrypto-lib-ctype.o", "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", "crypto/libcrypto-lib-ebcdic.o", "crypto/libcrypto-lib-ex_data.o", "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", "crypto/libcrypto-lib-info.o", "crypto/libcrypto-lib-init.o", "crypto/libcrypto-lib-initthread.o", @@ -24137,6 +28138,7 @@ our %unified_info = ( "crypto/libcrypto-lib-params.o", "crypto/libcrypto-lib-params_dup.o", "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", "crypto/libcrypto-lib-passphrase.o", "crypto/libcrypto-lib-provider.o", "crypto/libcrypto-lib-provider_child.o", @@ -24144,12 +28146,16 @@ our %unified_info = ( "crypto/libcrypto-lib-provider_core.o", "crypto/libcrypto-lib-provider_predefined.o", "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", "crypto/libcrypto-lib-threads_lib.o", "crypto/libcrypto-lib-threads_none.o", "crypto/libcrypto-lib-threads_pthread.o", "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", "crypto/libcrypto-lib-trace.o", "crypto/libcrypto-lib-uid.o", "crypto/libcrypto-lib-x86cpuid.o", @@ -24161,6 +28167,15 @@ our %unified_info = ( "crypto/md5/libcrypto-lib-md5_sha1.o", "crypto/mdc2/libcrypto-lib-mdc2_one.o", "crypto/mdc2/libcrypto-lib-mdc2dgst.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_kem/libcrypto-lib-ml_kem.o", "crypto/modes/libcrypto-lib-cbc128.o", "crypto/modes/libcrypto-lib-ccm128.o", "crypto/modes/libcrypto-lib-cfb128.o", @@ -24173,6 +28188,7 @@ our %unified_info = ( "crypto/modes/libcrypto-lib-siv128.o", "crypto/modes/libcrypto-lib-wrap128.o", "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", "crypto/objects/libcrypto-lib-o_names.o", "crypto/objects/libcrypto-lib-obj_dat.o", "crypto/objects/libcrypto-lib-obj_err.o", @@ -24237,6 +28253,7 @@ our %unified_info = ( "crypto/rand/libcrypto-lib-rand_lib.o", "crypto/rand/libcrypto-lib-rand_meth.o", "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", "crypto/rand/libcrypto-lib-randfile.o", "crypto/rc2/libcrypto-lib-rc2_cbc.o", "crypto/rc2/libcrypto-lib-rc2_ecb.o", @@ -24288,6 +28305,16 @@ our %unified_info = ( "crypto/sha/libcrypto-lib-sha512-586.o", "crypto/sha/libcrypto-lib-sha512.o", "crypto/siphash/libcrypto-lib-siphash.o", + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", "crypto/sm2/libcrypto-lib-sm2_crypt.o", "crypto/sm2/libcrypto-lib-sm2_err.o", "crypto/sm2/libcrypto-lib-sm2_key.o", @@ -24305,6 +28332,12 @@ our %unified_info = ( "crypto/store/libcrypto-lib-store_register.o", "crypto/store/libcrypto-lib-store_result.o", "crypto/store/libcrypto-lib-store_strings.o", + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", "crypto/ts/libcrypto-lib-ts_asn1.o", "crypto/ts/libcrypto-lib-ts_conf.o", "crypto/ts/libcrypto-lib-ts_err.o", @@ -24334,14 +28367,22 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-pcy_map.o", "crypto/x509/libcrypto-lib-pcy_node.o", "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", "crypto/x509/libcrypto-lib-t_crl.o", "crypto/x509/libcrypto-lib-t_req.o", "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", "crypto/x509/libcrypto-lib-v3_addr.o", "crypto/x509/libcrypto-lib-v3_admis.o", "crypto/x509/libcrypto-lib-v3_akeya.o", "crypto/x509/libcrypto-lib-v3_akid.o", "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", "crypto/x509/libcrypto-lib-v3_bcons.o", "crypto/x509/libcrypto-lib-v3_bitst.o", "crypto/x509/libcrypto-lib-v3_conf.o", @@ -24350,12 +28391,17 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_enum.o", "crypto/x509/libcrypto-lib-v3_extku.o", "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", "crypto/x509/libcrypto-lib-v3_info.o", "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", "crypto/x509/libcrypto-lib-v3_ist.o", "crypto/x509/libcrypto-lib-v3_lib.o", "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", "crypto/x509/libcrypto-lib-v3_pci.o", "crypto/x509/libcrypto-lib-v3_pcia.o", "crypto/x509/libcrypto-lib-v3_pcons.o", @@ -24363,13 +28409,20 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-v3_pmaps.o", "crypto/x509/libcrypto-lib-v3_prn.o", "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", "crypto/x509/libcrypto-lib-v3_utf8.o", "crypto/x509/libcrypto-lib-v3_utl.o", "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", "crypto/x509/libcrypto-lib-x509_att.o", "crypto/x509/libcrypto-lib-x509_cmp.o", "crypto/x509/libcrypto-lib-x509_d2.o", @@ -24387,6 +28440,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x509_v3.o", "crypto/x509/libcrypto-lib-x509_vfy.o", "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", "crypto/x509/libcrypto-lib-x509cset.o", "crypto/x509/libcrypto-lib-x509name.o", "crypto/x509/libcrypto-lib-x509rset.o", @@ -24396,6 +28450,7 @@ our %unified_info = ( "crypto/x509/libcrypto-lib-x_attrib.o", "crypto/x509/libcrypto-lib-x_crl.o", "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", "crypto/x509/libcrypto-lib-x_name.o", "crypto/x509/libcrypto-lib-x_pubkey.o", "crypto/x509/libcrypto-lib-x_req.o", @@ -24417,14 +28472,15 @@ our %unified_info = ( "ssl/libssl-lib-d1_srtp.o", "ssl/libssl-lib-methods.o", "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", "ssl/libssl-lib-s3_enc.o", "ssl/libssl-lib-s3_lib.o", "ssl/libssl-lib-s3_msg.o", "ssl/libssl-lib-ssl_asn1.o", "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", "ssl/libssl-lib-ssl_ciph.o", "ssl/libssl-lib-ssl_conf.o", - "ssl/libssl-lib-ssl_err.o", "ssl/libssl-lib-ssl_err_legacy.o", "ssl/libssl-lib-ssl_init.o", "ssl/libssl-lib-ssl_lib.o", @@ -24441,12 +28497,60 @@ our %unified_info = ( "ssl/libssl-lib-tls13_enc.o", "ssl/libssl-lib-tls_depr.o", "ssl/libssl-lib-tls_srp.o", - "ssl/record/libssl-lib-dtls1_bitmap.o", + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o", "ssl/record/libssl-lib-rec_layer_d1.o", "ssl/record/libssl-lib-rec_layer_s3.o", - "ssl/record/libssl-lib-ssl3_buffer.o", - "ssl/record/libssl-lib-ssl3_record.o", - "ssl/record/libssl-lib-ssl3_record_tls13.o", + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o", "ssl/statem/libssl-lib-extensions.o", "ssl/statem/libssl-lib-extensions_clnt.o", "ssl/statem/libssl-lib-extensions_cust.o", @@ -24484,12 +28588,24 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ecx_key.o" => [ "providers/common/der/der_ecx_key.c" ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/der/der_ml_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/der/der_ml_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ "providers/common/der/der_rsa_gen.c" ], "providers/common/der/libcommon-lib-der_rsa_key.o" => [ "providers/common/der/der_rsa_key.c" ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/der/der_slh_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/der/der_slh_dsa_key.c" + ], "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ "providers/common/der/der_wrap_gen.c" ], @@ -24556,6 +28672,9 @@ our %unified_info = ( "providers/common/libfips-lib-securitycheck_fips.o" => [ "providers/common/securitycheck_fips.c" ], + "providers/endecode_test-bin-legacyprov.o" => [ + "providers/legacyprov.c" + ], "providers/evp_extra_test-bin-legacyprov.o" => [ "providers/legacyprov.c" ], @@ -24565,6 +28684,9 @@ our %unified_info = ( "providers/fips/fips-dso-fips_entry.o" => [ "providers/fips/fips_entry.c" ], + "providers/fips/libfips-lib-fipsindicator.o" => [ + "providers/fips/fipsindicator.c" + ], "providers/fips/libfips-lib-fipsprov.o" => [ "providers/fips/fipsprov.c" ], @@ -24628,6 +28750,15 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o" => [ "providers/implementations/ciphers/cipher_aes_gcm_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o" => [ "providers/implementations/ciphers/cipher_aes_hw.c" ], @@ -24700,9 +28831,27 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o" => [ "providers/implementations/ciphers/cipher_sm4.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o" => [ "providers/implementations/ciphers/cipher_sm4_hw.c" ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts_hw.c" + ], "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o" => [ "providers/implementations/ciphers/cipher_tdes.c" ], @@ -24922,6 +29071,15 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" => [ "providers/implementations/encode_decode/endecoder_common.c" ], + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o" => [ + "providers/implementations/encode_decode/ml_common_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o" => [ + "providers/implementations/encode_decode/ml_dsa_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" => [ + "providers/implementations/encode_decode/ml_kem_codecs.c" + ], "providers/implementations/exchange/libdefault-lib-dh_exch.o" => [ "providers/implementations/exchange/dh_exch.c" ], @@ -24946,9 +29104,15 @@ our %unified_info = ( "providers/implementations/exchange/libfips-lib-kdf_exch.o" => [ "providers/implementations/exchange/kdf_exch.c" ], + "providers/implementations/kdfs/libdefault-lib-argon2.o" => [ + "providers/implementations/kdfs/argon2.c" + ], "providers/implementations/kdfs/libdefault-lib-hkdf.o" => [ "providers/implementations/kdfs/hkdf.c" ], + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o" => [ + "providers/implementations/kdfs/hmacdrbg_kdf.c" + ], "providers/implementations/kdfs/libdefault-lib-kbkdf.o" => [ "providers/implementations/kdfs/kbkdf.c" ], @@ -25006,12 +29170,39 @@ our %unified_info = ( "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" => [ "providers/implementations/kdfs/pbkdf1.c" ], + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" => [ + "providers/implementations/kdfs/pvkkdf.c" + ], + "providers/implementations/kem/libdefault-lib-ec_kem.o" => [ + "providers/implementations/kem/ec_kem.c" + ], + "providers/implementations/kem/libdefault-lib-ecx_kem.o" => [ + "providers/implementations/kem/ecx_kem.c" + ], + "providers/implementations/kem/libdefault-lib-kem_util.o" => [ + "providers/implementations/kem/kem_util.c" + ], + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libdefault-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libdefault-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libfips-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libfips-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], "providers/implementations/kem/libfips-lib-rsa_kem.o" => [ "providers/implementations/kem/rsa_kem.c" ], + "providers/implementations/kem/libtemplate-lib-template_kem.o" => [ + "providers/implementations/kem/template_kem.c" + ], "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25030,9 +29221,21 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o" => [ "providers/implementations/keymgmt/dh_kmgmt.c" ], @@ -25051,9 +29254,24 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o" => [ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" => [ "providers/implementations/keymgmt/rsa_kmgmt.c" ], + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" => [ + "providers/implementations/keymgmt/template_kmgmt.c" + ], "providers/implementations/macs/libdefault-lib-blake2b_mac.o" => [ "providers/implementations/macs/blake2b_mac.c" ], @@ -25090,9 +29308,6 @@ our %unified_info = ( "providers/implementations/macs/libfips-lib-kmac_prov.o" => [ "providers/implementations/macs/kmac_prov.c" ], - "providers/implementations/rands/libdefault-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libdefault-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25108,12 +29323,12 @@ our %unified_info = ( "providers/implementations/rands/libdefault-lib-seed_src.o" => [ "providers/implementations/rands/seed_src.c" ], + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o" => [ + "providers/implementations/rands/seed_src_jitter.c" + ], "providers/implementations/rands/libdefault-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], - "providers/implementations/rands/libfips-lib-crngt.o" => [ - "providers/implementations/rands/crngt.c" - ], "providers/implementations/rands/libfips-lib-drbg.o" => [ "providers/implementations/rands/drbg.c" ], @@ -25126,6 +29341,9 @@ our %unified_info = ( "providers/implementations/rands/libfips-lib-drbg_hmac.o" => [ "providers/implementations/rands/drbg_hmac.c" ], + "providers/implementations/rands/libfips-lib-fips_crng_test.o" => [ + "providers/implementations/rands/fips_crng_test.c" + ], "providers/implementations/rands/libfips-lib-test_rng.o" => [ "providers/implementations/rands/test_rng.c" ], @@ -25153,9 +29371,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ "providers/implementations/signature/sm2_sig.c" ], @@ -25171,9 +29395,27 @@ our %unified_info = ( "providers/implementations/signature/libfips-lib-mac_legacy_sig.o" => [ "providers/implementations/signature/mac_legacy_sig.c" ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ "providers/implementations/signature/rsa_sig.c" ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libfips-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], "providers/implementations/storemgmt/libdefault-lib-file_store.o" => [ "providers/implementations/storemgmt/file_store.c" ], @@ -25196,8 +29438,12 @@ our %unified_info = ( "providers/common/der/libcommon-lib-der_ec_sig.o", "providers/common/der/libcommon-lib-der_ecx_gen.o", "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", "providers/common/der/libcommon-lib-der_rsa_gen.o", "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", "providers/common/der/libcommon-lib-der_wrap_gen.o", "providers/common/libcommon-lib-provider_ctx.o", "providers/common/libcommon-lib-provider_err.o", @@ -25209,7 +29455,7 @@ our %unified_info = ( "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", "providers/implementations/digests/libcommon-lib-digestcommon.o", - "ssl/record/libcommon-lib-tls_pad.o" + "ssl/record/methods/libcommon-lib-tls_pad.o" ], "providers/libcrypto-lib-baseprov.o" => [ "providers/baseprov.c" @@ -25245,6 +29491,9 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", @@ -25269,7 +29518,13 @@ our %unified_info = ( "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", "providers/implementations/ciphers/libdefault-lib-cipher_null.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", @@ -25298,11 +29553,16 @@ our %unified_info = ( "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o", "providers/implementations/exchange/libdefault-lib-dh_exch.o", "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", "providers/implementations/exchange/libdefault-lib-ecx_exch.o", "providers/implementations/exchange/libdefault-lib-kdf_exch.o", + "providers/implementations/kdfs/libdefault-lib-argon2.o", "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", "providers/implementations/kdfs/libdefault-lib-kbkdf.o", "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", @@ -25313,6 +29573,11 @@ our %unified_info = ( "providers/implementations/kdfs/libdefault-lib-sskdf.o", "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", "providers/implementations/kdfs/libdefault-lib-x942kdf.o", + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", "providers/implementations/kem/libdefault-lib-rsa_kem.o", "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", @@ -25320,7 +29585,11 @@ our %unified_info = ( "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libdefault-lib-blake2b_mac.o", "providers/implementations/macs/libdefault-lib-blake2s_mac.o", "providers/implementations/macs/libdefault-lib-cmac_prov.o", @@ -25329,12 +29598,12 @@ our %unified_info = ( "providers/implementations/macs/libdefault-lib-kmac_prov.o", "providers/implementations/macs/libdefault-lib-poly1305_prov.o", "providers/implementations/macs/libdefault-lib-siphash_prov.o", - "providers/implementations/rands/libdefault-lib-crngt.o", "providers/implementations/rands/libdefault-lib-drbg.o", "providers/implementations/rands/libdefault-lib-drbg_ctr.o", "providers/implementations/rands/libdefault-lib-drbg_hash.o", "providers/implementations/rands/libdefault-lib-drbg_hmac.o", "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", "providers/implementations/rands/libdefault-lib-test_rng.o", "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", @@ -25344,11 +29613,15 @@ our %unified_info = ( "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", "providers/implementations/signature/libdefault-lib-eddsa_sig.o", "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", "providers/implementations/signature/libdefault-lib-sm2_sig.o", + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", "providers/implementations/storemgmt/libdefault-lib-file_store.o", "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", - "ssl/libdefault-lib-s3_cbc.o" + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" ], "providers/libfips.a" => [ "crypto/aes/libfips-lib-aes-586.o", @@ -25456,14 +29729,15 @@ our %unified_info = ( "crypto/evp/libfips-lib-kem.o", "crypto/evp/libfips-lib-keymgmt_lib.o", "crypto/evp/libfips-lib-keymgmt_meth.o", - "crypto/evp/libfips-lib-m_sigver.o", "crypto/evp/libfips-lib-mac_lib.o", "crypto/evp/libfips-lib-mac_meth.o", "crypto/evp/libfips-lib-p_lib.o", "crypto/evp/libfips-lib-pmeth_check.o", "crypto/evp/libfips-lib-pmeth_gn.o", "crypto/evp/libfips-lib-pmeth_lib.o", + "crypto/evp/libfips-lib-s_lib.o", "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o", "crypto/ffc/libfips-lib-ffc_backend.o", "crypto/ffc/libfips-lib-ffc_dh.o", "crypto/ffc/libfips-lib-ffc_key_generate.o", @@ -25471,6 +29745,8 @@ our %unified_info = ( "crypto/ffc/libfips-lib-ffc_params.o", "crypto/ffc/libfips-lib-ffc_params_generate.o", "crypto/ffc/libfips-lib-ffc_params_validate.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o", "crypto/hmac/libfips-lib-hmac.o", "crypto/lhash/libfips-lib-lhash.o", "crypto/libfips-lib-asn1_dsa.o", @@ -25492,6 +29768,7 @@ our %unified_info = ( "crypto/libfips-lib-params.o", "crypto/libfips-lib-params_dup.o", "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", "crypto/libfips-lib-provider_core.o", "crypto/libfips-lib-provider_predefined.o", "crypto/libfips-lib-self_test_core.o", @@ -25500,7 +29777,17 @@ our %unified_info = ( "crypto/libfips-lib-threads_none.o", "crypto/libfips-lib-threads_pthread.o", "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", "crypto/libfips-lib-x86cpuid.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o", + "crypto/ml_kem/libfips-lib-ml_kem.o", "crypto/modes/libfips-lib-cbc128.o", "crypto/modes/libfips-lib-ccm128.o", "crypto/modes/libfips-lib-cfb128.o", @@ -25510,6 +29797,7 @@ our %unified_info = ( "crypto/modes/libfips-lib-ofb128.o", "crypto/modes/libfips-lib-wrap128.o", "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o", "crypto/property/libfips-lib-defn_cache.o", "crypto/property/libfips-lib-property.o", "crypto/property/libfips-lib-property_parse.o", @@ -25541,7 +29829,23 @@ our %unified_info = ( "crypto/sha/libfips-lib-sha3.o", "crypto/sha/libfips-lib-sha512-586.o", "crypto/sha/libfips-lib-sha512.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o", "crypto/stack/libfips-lib-stack.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o", "providers/common/der/libfips-lib-der_rsa_sig.o", "providers/common/libfips-lib-bio_prov.o", "providers/common/libfips-lib-capabilities.o", @@ -25550,6 +29854,7 @@ our %unified_info = ( "providers/common/libfips-lib-provider_util.o", "providers/common/libfips-lib-securitycheck.o", "providers/common/libfips-lib-securitycheck_fips.o", + "providers/fips/libfips-lib-fipsindicator.o", "providers/fips/libfips-lib-fipsprov.o", "providers/fips/libfips-lib-self_test.o", "providers/fips/libfips-lib-self_test_kats.o", @@ -25587,6 +29892,8 @@ our %unified_info = ( "providers/implementations/kdfs/libfips-lib-sskdf.o", "providers/implementations/kdfs/libfips-lib-tls1_prf.o", "providers/implementations/kdfs/libfips-lib-x942kdf.o", + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", "providers/implementations/kem/libfips-lib-rsa_kem.o", "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", @@ -25594,24 +29901,32 @@ our %unified_info = ( "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", "providers/implementations/macs/libfips-lib-cmac_prov.o", "providers/implementations/macs/libfips-lib-gmac_prov.o", "providers/implementations/macs/libfips-lib-hmac_prov.o", "providers/implementations/macs/libfips-lib-kmac_prov.o", - "providers/implementations/rands/libfips-lib-crngt.o", "providers/implementations/rands/libfips-lib-drbg.o", "providers/implementations/rands/libfips-lib-drbg_ctr.o", "providers/implementations/rands/libfips-lib-drbg_hash.o", "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", "providers/implementations/rands/libfips-lib-test_rng.o", "providers/implementations/signature/libfips-lib-dsa_sig.o", "providers/implementations/signature/libfips-lib-ecdsa_sig.o", "providers/implementations/signature/libfips-lib-eddsa_sig.o", "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o", "providers/libcommon.a", - "ssl/libfips-lib-s3_cbc.o" + "ssl/record/methods/libfips-lib-ssl3_cbc.o" ], "providers/liblegacy-lib-prov_running.o" => [ "providers/prov_running.c" @@ -25641,13 +29956,12 @@ our %unified_info = ( "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", "providers/implementations/digests/liblegacy-lib-wp_prov.o", "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o", "providers/liblegacy-lib-prov_running.o" ], - "ssl/libdefault-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" - ], - "ssl/libfips-lib-s3_cbc.o" => [ - "ssl/s3_cbc.c" + "providers/libtemplate.a" => [ + "providers/implementations/kem/libtemplate-lib-template_kem.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" ], "ssl/libssl-lib-bio_ssl.o" => [ "ssl/bio_ssl.c" @@ -25667,6 +29981,9 @@ our %unified_info = ( "ssl/libssl-lib-pqueue.o" => [ "ssl/pqueue.c" ], + "ssl/libssl-lib-priority_queue.o" => [ + "ssl/priority_queue.c" + ], "ssl/libssl-lib-s3_enc.o" => [ "ssl/s3_enc.c" ], @@ -25682,15 +29999,15 @@ our %unified_info = ( "ssl/libssl-lib-ssl_cert.o" => [ "ssl/ssl_cert.c" ], + "ssl/libssl-lib-ssl_cert_comp.o" => [ + "ssl/ssl_cert_comp.c" + ], "ssl/libssl-lib-ssl_ciph.o" => [ "ssl/ssl_ciph.c" ], "ssl/libssl-lib-ssl_conf.o" => [ "ssl/ssl_conf.c" ], - "ssl/libssl-lib-ssl_err.o" => [ - "ssl/ssl_err.c" - ], "ssl/libssl-lib-ssl_err_legacy.o" => [ "ssl/ssl_err_legacy.c" ], @@ -25739,11 +30056,131 @@ our %unified_info = ( "ssl/libssl-lib-tls_srp.o" => [ "ssl/tls_srp.c" ], - "ssl/record/libcommon-lib-tls_pad.o" => [ - "ssl/record/tls_pad.c" + "ssl/quic/libssl-lib-cc_newreno.o" => [ + "ssl/quic/cc_newreno.c" + ], + "ssl/quic/libssl-lib-json_enc.o" => [ + "ssl/quic/json_enc.c" + ], + "ssl/quic/libssl-lib-qlog.o" => [ + "ssl/quic/qlog.c" + ], + "ssl/quic/libssl-lib-qlog_event_helpers.o" => [ + "ssl/quic/qlog_event_helpers.c" + ], + "ssl/quic/libssl-lib-quic_ackm.o" => [ + "ssl/quic/quic_ackm.c" + ], + "ssl/quic/libssl-lib-quic_cfq.o" => [ + "ssl/quic/quic_cfq.c" + ], + "ssl/quic/libssl-lib-quic_channel.o" => [ + "ssl/quic/quic_channel.c" + ], + "ssl/quic/libssl-lib-quic_demux.o" => [ + "ssl/quic/quic_demux.c" + ], + "ssl/quic/libssl-lib-quic_engine.o" => [ + "ssl/quic/quic_engine.c" + ], + "ssl/quic/libssl-lib-quic_fc.o" => [ + "ssl/quic/quic_fc.c" + ], + "ssl/quic/libssl-lib-quic_fifd.o" => [ + "ssl/quic/quic_fifd.c" + ], + "ssl/quic/libssl-lib-quic_impl.o" => [ + "ssl/quic/quic_impl.c" + ], + "ssl/quic/libssl-lib-quic_lcidm.o" => [ + "ssl/quic/quic_lcidm.c" + ], + "ssl/quic/libssl-lib-quic_method.o" => [ + "ssl/quic/quic_method.c" + ], + "ssl/quic/libssl-lib-quic_obj.o" => [ + "ssl/quic/quic_obj.c" + ], + "ssl/quic/libssl-lib-quic_port.o" => [ + "ssl/quic/quic_port.c" + ], + "ssl/quic/libssl-lib-quic_rcidm.o" => [ + "ssl/quic/quic_rcidm.c" + ], + "ssl/quic/libssl-lib-quic_reactor.o" => [ + "ssl/quic/quic_reactor.c" + ], + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o" => [ + "ssl/quic/quic_reactor_wait_ctx.c" + ], + "ssl/quic/libssl-lib-quic_record_rx.o" => [ + "ssl/quic/quic_record_rx.c" + ], + "ssl/quic/libssl-lib-quic_record_shared.o" => [ + "ssl/quic/quic_record_shared.c" + ], + "ssl/quic/libssl-lib-quic_record_tx.o" => [ + "ssl/quic/quic_record_tx.c" + ], + "ssl/quic/libssl-lib-quic_record_util.o" => [ + "ssl/quic/quic_record_util.c" + ], + "ssl/quic/libssl-lib-quic_rstream.o" => [ + "ssl/quic/quic_rstream.c" ], - "ssl/record/libssl-lib-dtls1_bitmap.o" => [ - "ssl/record/dtls1_bitmap.c" + "ssl/quic/libssl-lib-quic_rx_depack.o" => [ + "ssl/quic/quic_rx_depack.c" + ], + "ssl/quic/libssl-lib-quic_sf_list.o" => [ + "ssl/quic/quic_sf_list.c" + ], + "ssl/quic/libssl-lib-quic_srt_gen.o" => [ + "ssl/quic/quic_srt_gen.c" + ], + "ssl/quic/libssl-lib-quic_srtm.o" => [ + "ssl/quic/quic_srtm.c" + ], + "ssl/quic/libssl-lib-quic_sstream.o" => [ + "ssl/quic/quic_sstream.c" + ], + "ssl/quic/libssl-lib-quic_statm.o" => [ + "ssl/quic/quic_statm.c" + ], + "ssl/quic/libssl-lib-quic_stream_map.o" => [ + "ssl/quic/quic_stream_map.c" + ], + "ssl/quic/libssl-lib-quic_thread_assist.o" => [ + "ssl/quic/quic_thread_assist.c" + ], + "ssl/quic/libssl-lib-quic_tls.o" => [ + "ssl/quic/quic_tls.c" + ], + "ssl/quic/libssl-lib-quic_tls_api.o" => [ + "ssl/quic/quic_tls_api.c" + ], + "ssl/quic/libssl-lib-quic_trace.o" => [ + "ssl/quic/quic_trace.c" + ], + "ssl/quic/libssl-lib-quic_tserver.o" => [ + "ssl/quic/quic_tserver.c" + ], + "ssl/quic/libssl-lib-quic_txp.o" => [ + "ssl/quic/quic_txp.c" + ], + "ssl/quic/libssl-lib-quic_txpim.o" => [ + "ssl/quic/quic_txpim.c" + ], + "ssl/quic/libssl-lib-quic_types.o" => [ + "ssl/quic/quic_types.c" + ], + "ssl/quic/libssl-lib-quic_wire.o" => [ + "ssl/quic/quic_wire.c" + ], + "ssl/quic/libssl-lib-quic_wire_pkt.o" => [ + "ssl/quic/quic_wire_pkt.c" + ], + "ssl/quic/libssl-lib-uint_set.o" => [ + "ssl/quic/uint_set.c" ], "ssl/record/libssl-lib-rec_layer_d1.o" => [ "ssl/record/rec_layer_d1.c" @@ -25751,14 +30188,44 @@ our %unified_info = ( "ssl/record/libssl-lib-rec_layer_s3.o" => [ "ssl/record/rec_layer_s3.c" ], - "ssl/record/libssl-lib-ssl3_buffer.o" => [ - "ssl/record/ssl3_buffer.c" + "ssl/record/methods/libcommon-lib-tls_pad.o" => [ + "ssl/record/methods/tls_pad.c" + ], + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libfips-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libssl-lib-dtls_meth.o" => [ + "ssl/record/methods/dtls_meth.c" + ], + "ssl/record/methods/libssl-lib-ssl3_meth.o" => [ + "ssl/record/methods/ssl3_meth.c" + ], + "ssl/record/methods/libssl-lib-tls13_meth.o" => [ + "ssl/record/methods/tls13_meth.c" + ], + "ssl/record/methods/libssl-lib-tls1_meth.o" => [ + "ssl/record/methods/tls1_meth.c" + ], + "ssl/record/methods/libssl-lib-tls_common.o" => [ + "ssl/record/methods/tls_common.c" ], - "ssl/record/libssl-lib-ssl3_record.o" => [ - "ssl/record/ssl3_record.c" + "ssl/record/methods/libssl-lib-tls_multib.o" => [ + "ssl/record/methods/tls_multib.c" ], - "ssl/record/libssl-lib-ssl3_record_tls13.o" => [ - "ssl/record/ssl3_record_tls13.c" + "ssl/record/methods/libssl-lib-tlsany_meth.o" => [ + "ssl/record/methods/tlsany_meth.c" + ], + "ssl/rio/libssl-lib-poll_builder.o" => [ + "ssl/rio/poll_builder.c" + ], + "ssl/rio/libssl-lib-poll_immediate.o" => [ + "ssl/rio/poll_immediate.c" + ], + "ssl/rio/libssl-lib-rio_notifier.o" => [ + "ssl/rio/rio_notifier.c" ], "ssl/statem/libssl-lib-extensions.o" => [ "ssl/statem/extensions.c" @@ -25854,6 +30321,8 @@ our %unified_info = ( "test/asn1_string_table_test.c" ], "test/asn1_time_test" => [ + "crypto/asn1/asn1_time_test-bin-a_time.o", + "crypto/asn1_time_test-bin-ctype.o", "test/asn1_time_test-bin-asn1_time_test.o" ], "test/asn1_time_test-bin-asn1_time_test.o" => [ @@ -25884,6 +30353,18 @@ our %unified_info = ( "test/bftest-bin-bftest.o" => [ "test/bftest.c" ], + "test/bio_addr_test" => [ + "test/bio_addr_test-bin-bio_addr_test.o" + ], + "test/bio_addr_test-bin-bio_addr_test.o" => [ + "test/bio_addr_test.c" + ], + "test/bio_base64_test" => [ + "test/bio_base64_test-bin-bio_base64_test.o" + ], + "test/bio_base64_test-bin-bio_base64_test.o" => [ + "test/bio_base64_test.c" + ], "test/bio_callback_test" => [ "test/bio_callback_test-bin-bio_callback_test.o" ], @@ -25896,6 +30377,12 @@ our %unified_info = ( "test/bio_core_test-bin-bio_core_test.o" => [ "test/bio_core_test.c" ], + "test/bio_dgram_test" => [ + "test/bio_dgram_test-bin-bio_dgram_test.o" + ], + "test/bio_dgram_test-bin-bio_dgram_test.o" => [ + "test/bio_dgram_test.c" + ], "test/bio_enc_test" => [ "test/bio_enc_test-bin-bio_enc_test.o" ], @@ -25908,6 +30395,12 @@ our %unified_info = ( "test/bio_memleak_test-bin-bio_memleak_test.o" => [ "test/bio_memleak_test.c" ], + "test/bio_meth_test" => [ + "test/bio_meth_test-bin-bio_meth_test.o" + ], + "test/bio_meth_test-bin-bio_meth_test.o" => [ + "test/bio_meth_test.c" + ], "test/bio_prefix_text" => [ "test/bio_prefix_text-bin-bio_prefix_text.o" ], @@ -25926,6 +30419,12 @@ our %unified_info = ( "test/bio_readbuffer_test-bin-bio_readbuffer_test.o" => [ "test/bio_readbuffer_test.c" ], + "test/bio_tfo_test" => [ + "test/bio_tfo_test-bin-bio_tfo_test.o" + ], + "test/bio_tfo_test-bin-bio_tfo_test.o" => [ + "test/bio_tfo_test.c" + ], "test/bioprinttest" => [ "test/bioprinttest-bin-bioprinttest.o" ], @@ -25944,6 +30443,12 @@ our %unified_info = ( "test/bntest-bin-bntest.o" => [ "test/bntest.c" ], + "test/build_wincrypt_test" => [ + "test/build_wincrypt_test-bin-build_wincrypt_test.o" + ], + "test/build_wincrypt_test-bin-build_wincrypt_test.o" => [ + "test/build_wincrypt_test.c" + ], "test/buildtest_c_aes" => [ "test/buildtest_c_aes-bin-buildtest_aes.o" ], @@ -25974,6 +30479,12 @@ our %unified_info = ( "test/buildtest_c_buffer-bin-buildtest_buffer.o" => [ "test/buildtest_buffer.c" ], + "test/buildtest_c_byteorder" => [ + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" + ], + "test/buildtest_c_byteorder-bin-buildtest_byteorder.o" => [ + "test/buildtest_byteorder.c" + ], "test/buildtest_c_camellia" => [ "test/buildtest_c_camellia-bin-buildtest_camellia.o" ], @@ -26022,12 +30533,6 @@ our %unified_info = ( "test/buildtest_c_core_dispatch-bin-buildtest_core_dispatch.o" => [ "test/buildtest_core_dispatch.c" ], - "test/buildtest_c_core_names" => [ - "test/buildtest_c_core_names-bin-buildtest_core_names.o" - ], - "test/buildtest_c_core_names-bin-buildtest_core_names.o" => [ - "test/buildtest_core_names.c" - ], "test/buildtest_c_core_object" => [ "test/buildtest_c_core_object-bin-buildtest_core_object.o" ], @@ -26076,6 +30581,12 @@ our %unified_info = ( "test/buildtest_c_e_os2-bin-buildtest_e_os2.o" => [ "test/buildtest_e_os2.c" ], + "test/buildtest_c_e_ostime" => [ + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" + ], + "test/buildtest_c_e_ostime-bin-buildtest_e_ostime.o" => [ + "test/buildtest_e_ostime.c" + ], "test/buildtest_c_ebcdic" => [ "test/buildtest_c_ebcdic-bin-buildtest_ebcdic.o" ], @@ -26130,6 +30641,12 @@ our %unified_info = ( "test/buildtest_c_hmac-bin-buildtest_hmac.o" => [ "test/buildtest_hmac.c" ], + "test/buildtest_c_hpke" => [ + "test/buildtest_c_hpke-bin-buildtest_hpke.o" + ], + "test/buildtest_c_hpke-bin-buildtest_hpke.o" => [ + "test/buildtest_hpke.c" + ], "test/buildtest_c_http" => [ "test/buildtest_c_http-bin-buildtest_http.o" ], @@ -26142,6 +30659,12 @@ our %unified_info = ( "test/buildtest_c_idea-bin-buildtest_idea.o" => [ "test/buildtest_idea.c" ], + "test/buildtest_c_indicator" => [ + "test/buildtest_c_indicator-bin-buildtest_indicator.o" + ], + "test/buildtest_c_indicator-bin-buildtest_indicator.o" => [ + "test/buildtest_indicator.c" + ], "test/buildtest_c_kdf" => [ "test/buildtest_c_kdf-bin-buildtest_kdf.o" ], @@ -26172,6 +30695,12 @@ our %unified_info = ( "test/buildtest_c_mdc2-bin-buildtest_mdc2.o" => [ "test/buildtest_mdc2.c" ], + "test/buildtest_c_ml_kem" => [ + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" + ], + "test/buildtest_c_ml_kem-bin-buildtest_ml_kem.o" => [ + "test/buildtest_ml_kem.c" + ], "test/buildtest_c_modes" => [ "test/buildtest_c_modes-bin-buildtest_modes.o" ], @@ -26232,6 +30761,12 @@ our %unified_info = ( "test/buildtest_c_provider-bin-buildtest_provider.o" => [ "test/buildtest_provider.c" ], + "test/buildtest_c_quic" => [ + "test/buildtest_c_quic-bin-buildtest_quic.o" + ], + "test/buildtest_c_quic-bin-buildtest_quic.o" => [ + "test/buildtest_quic.c" + ], "test/buildtest_c_rand" => [ "test/buildtest_c_rand-bin-buildtest_rand.o" ], @@ -26316,6 +30851,12 @@ our %unified_info = ( "test/buildtest_c_symhacks-bin-buildtest_symhacks.o" => [ "test/buildtest_symhacks.c" ], + "test/buildtest_c_thread" => [ + "test/buildtest_c_thread-bin-buildtest_thread.o" + ], + "test/buildtest_c_thread-bin-buildtest_thread.o" => [ + "test/buildtest_thread.c" + ], "test/buildtest_c_tls1" => [ "test/buildtest_c_tls1-bin-buildtest_tls1.o" ], @@ -26346,6 +30887,29 @@ our %unified_info = ( "test/buildtest_c_whrlpool-bin-buildtest_whrlpool.o" => [ "test/buildtest_whrlpool.c" ], + "test/byteorder_test" => [ + "test/byteorder_test-bin-byteorder_test.o" + ], + "test/byteorder_test-bin-byteorder_test.o" => [ + "test/byteorder_test.c" + ], + "test/ca_internals_test" => [ + "apps/ca_internals_test-bin-ca.o", + "apps/lib/ca_internals_test-bin-app_libctx.o", + "apps/lib/ca_internals_test-bin-app_provider.o", + "apps/lib/ca_internals_test-bin-app_rand.o", + "apps/lib/ca_internals_test-bin-app_x509.o", + "apps/lib/ca_internals_test-bin-apps.o", + "apps/lib/ca_internals_test-bin-apps_ui.o", + "apps/lib/ca_internals_test-bin-engine.o", + "apps/lib/ca_internals_test-bin-fmt.o", + "crypto/asn1/ca_internals_test-bin-a_time.o", + "crypto/ca_internals_test-bin-ctype.o", + "test/ca_internals_test-bin-ca_internals_test.o" + ], + "test/ca_internals_test-bin-ca_internals_test.o" => [ + "test/ca_internals_test.c" + ], "test/casttest" => [ "test/casttest-bin-casttest.o" ], @@ -26524,6 +31088,12 @@ our %unified_info = ( "test/danetest-bin-danetest.o" => [ "test/danetest.c" ], + "test/decoder_propq_test" => [ + "test/decoder_propq_test-bin-decoder_propq_test.o" + ], + "test/decoder_propq_test-bin-decoder_propq_test.o" => [ + "test/decoder_propq_test.c" + ], "test/defltfips_test" => [ "test/defltfips_test-bin-defltfips_test.o" ], @@ -26605,6 +31175,7 @@ our %unified_info = ( "test/ectest.c" ], "test/endecode_test" => [ + "providers/endecode_test-bin-legacyprov.o", "test/endecode_test-bin-endecode_test.o", "test/helpers/endecode_test-bin-predefined_dhparams.o" ], @@ -26637,17 +31208,29 @@ our %unified_info = ( ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", - "test/evp_extra_test-bin-evp_extra_test.o" + "test/evp_extra_test-bin-evp_extra_test.o", + "test/evp_extra_test-bin-fake_pipelineprov.o", + "test/evp_extra_test-bin-fake_rsaprov.o" ], "test/evp_extra_test-bin-evp_extra_test.o" => [ "test/evp_extra_test.c" ], + "test/evp_extra_test-bin-fake_pipelineprov.o" => [ + "test/fake_pipelineprov.c" + ], + "test/evp_extra_test-bin-fake_rsaprov.o" => [ + "test/fake_rsaprov.c" + ], "test/evp_extra_test2" => [ - "test/evp_extra_test2-bin-evp_extra_test2.o" + "test/evp_extra_test2-bin-evp_extra_test2.o", + "test/evp_extra_test2-bin-tls-provider.o" ], "test/evp_extra_test2-bin-evp_extra_test2.o" => [ "test/evp_extra_test2.c" ], + "test/evp_extra_test2-bin-tls-provider.o" => [ + "test/tls-provider.c" + ], "test/evp_fetch_prov_test" => [ "test/evp_fetch_prov_test-bin-evp_fetch_prov_test.o" ], @@ -26672,6 +31255,12 @@ our %unified_info = ( "test/evp_pkey_ctx_new_from_name-bin-evp_pkey_ctx_new_from_name.o" => [ "test/evp_pkey_ctx_new_from_name.c" ], + "test/evp_pkey_dhkem_test" => [ + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" + ], + "test/evp_pkey_dhkem_test-bin-evp_pkey_dhkem_test.o" => [ + "test/evp_pkey_dhkem_test.c" + ], "test/evp_pkey_dparams_test" => [ "test/evp_pkey_dparams_test-bin-evp_pkey_dparams_test.o" ], @@ -26684,12 +31273,28 @@ our %unified_info = ( "test/evp_pkey_provided_test-bin-evp_pkey_provided_test.o" => [ "test/evp_pkey_provided_test.c" ], + "test/evp_skey_test" => [ + "test/evp_skey_test-bin-evp_skey_test.o", + "test/evp_skey_test-bin-fake_cipherprov.o" + ], + "test/evp_skey_test-bin-evp_skey_test.o" => [ + "test/evp_skey_test.c" + ], + "test/evp_skey_test-bin-fake_cipherprov.o" => [ + "test/fake_cipherprov.c" + ], "test/evp_test" => [ "test/evp_test-bin-evp_test.o" ], "test/evp_test-bin-evp_test.o" => [ "test/evp_test.c" ], + "test/evp_xof_test" => [ + "test/evp_xof_test-bin-evp_xof_test.o" + ], + "test/evp_xof_test-bin-evp_xof_test.o" => [ + "test/evp_xof_test.c" + ], "test/exdatatest" => [ "test/exdatatest-bin-exdatatest.o" ], @@ -26775,15 +31380,108 @@ our %unified_info = ( "test/helpers/fatalerrtest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/json_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/json_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/json_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/json_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/pkcs12_api_test-bin-pkcs12.o" => [ + "test/helpers/pkcs12.c" + ], "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ "test/helpers/pkcs12.c" ], + "test/helpers/quic_multistream_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_multistream_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_multistream_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_multistream_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_newcid_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_newcid_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_newcid_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_newcid_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_radix_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_radix_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_radix_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_radix_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quic_srt_gen_test-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicapitest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicapitest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicapitest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicapitest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], + "test/helpers/quicfaultstest-bin-noisydgrambio.o" => [ + "test/helpers/noisydgrambio.c" + ], + "test/helpers/quicfaultstest-bin-pktsplitbio.o" => [ + "test/helpers/pktsplitbio.c" + ], + "test/helpers/quicfaultstest-bin-quictestlib.o" => [ + "test/helpers/quictestlib.c" + ], + "test/helpers/quicfaultstest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/recordlentest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/rpktest-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/servername_test-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/helpers/ssl_old_test-bin-predefined_dhparams.o" => [ "test/helpers/predefined_dhparams.c" ], @@ -26811,6 +31509,9 @@ our %unified_info = ( "test/helpers/tls13ccstest-bin-ssltestlib.o" => [ "test/helpers/ssltestlib.c" ], + "test/helpers/tls13groupselection_test-bin-ssltestlib.o" => [ + "test/helpers/ssltestlib.c" + ], "test/hexstr_test" => [ "test/hexstr_test-bin-hexstr_test.o" ], @@ -26823,6 +31524,12 @@ our %unified_info = ( "test/hmactest-bin-hmactest.o" => [ "test/hmactest.c" ], + "test/hpke_test" => [ + "test/hpke_test-bin-hpke_test.o" + ], + "test/hpke_test-bin-hpke_test.o" => [ + "test/hpke_test.c" + ], "test/http_test" => [ "test/http_test-bin-http_test.o" ], @@ -26841,6 +31548,16 @@ our %unified_info = ( "test/igetest-bin-igetest.o" => [ "test/igetest.c" ], + "test/json_test" => [ + "test/helpers/json_test-bin-noisydgrambio.o", + "test/helpers/json_test-bin-pktsplitbio.o", + "test/helpers/json_test-bin-quictestlib.o", + "test/helpers/json_test-bin-ssltestlib.o", + "test/json_test-bin-json_test.o" + ], + "test/json_test-bin-json_test.o" => [ + "test/json_test.c" + ], "test/keymgmt_internal_test" => [ "test/keymgmt_internal_test-bin-keymgmt_internal_test.o" ], @@ -26861,6 +31578,7 @@ our %unified_info = ( "test/testutil/libtestutil-lib-driver.o", "test/testutil/libtestutil-lib-fake_random.o", "test/testutil/libtestutil-lib-format_output.o", + "test/testutil/libtestutil-lib-helper.o", "test/testutil/libtestutil-lib-load.o", "test/testutil/libtestutil-lib-main.o", "test/testutil/libtestutil-lib-options.o", @@ -26873,6 +31591,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-tests.o", "test/testutil/libtestutil-lib-testutil_init.o" ], + "test/list_test" => [ + "test/list_test-bin-list_test.o" + ], + "test/list_test-bin-list_test.o" => [ + "test/list_test.c" + ], "test/localetest" => [ "test/localetest-bin-localetest.o" ], @@ -26891,12 +31615,36 @@ our %unified_info = ( "test/mdc2test-bin-mdc2test.o" => [ "test/mdc2test.c" ], + "test/membio_test" => [ + "test/membio_test-bin-membio_test.o" + ], + "test/membio_test-bin-membio_test.o" => [ + "test/membio_test.c" + ], "test/memleaktest" => [ "test/memleaktest-bin-memleaktest.o" ], "test/memleaktest-bin-memleaktest.o" => [ "test/memleaktest.c" ], + "test/ml_dsa_test" => [ + "test/ml_dsa_test-bin-ml_dsa_test.o" + ], + "test/ml_dsa_test-bin-ml_dsa_test.o" => [ + "test/ml_dsa_test.c" + ], + "test/ml_kem_evp_extra_test" => [ + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" + ], + "test/ml_kem_evp_extra_test-bin-ml_kem_evp_extra_test.o" => [ + "test/ml_kem_evp_extra_test.c" + ], + "test/ml_kem_internal_test" => [ + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" + ], + "test/ml_kem_internal_test-bin-ml_kem_internal_test.o" => [ + "test/ml_kem_internal_test.c" + ], "test/modes_internal_test" => [ "test/modes_internal_test-bin-modes_internal_test.o" ], @@ -26940,11 +31688,18 @@ our %unified_info = ( "test/p_test.c" ], "test/packettest" => [ + "crypto/packettest-bin-quic_vlint.o", "test/packettest-bin-packettest.o" ], "test/packettest-bin-packettest.o" => [ "test/packettest.c" ], + "test/pairwise_fail_test" => [ + "test/pairwise_fail_test-bin-pairwise_fail_test.o" + ], + "test/pairwise_fail_test-bin-pairwise_fail_test.o" => [ + "test/pairwise_fail_test.c" + ], "test/param_build_test" => [ "test/param_build_test-bin-param_build_test.o" ], @@ -26993,6 +31748,13 @@ our %unified_info = ( "test/pemtest-bin-pemtest.o" => [ "test/pemtest.c" ], + "test/pkcs12_api_test" => [ + "test/helpers/pkcs12_api_test-bin-pkcs12.o", + "test/pkcs12_api_test-bin-pkcs12_api_test.o" + ], + "test/pkcs12_api_test-bin-pkcs12_api_test.o" => [ + "test/pkcs12_api_test.c" + ], "test/pkcs12_format_test" => [ "test/helpers/pkcs12_format_test-bin-pkcs12.o", "test/pkcs12_format_test-bin-pkcs12_format_test.o" @@ -27024,6 +31786,12 @@ our %unified_info = ( "test/poly1305_internal_test-bin-poly1305_internal_test.o" => [ "test/poly1305_internal_test.c" ], + "test/priority_queue_test" => [ + "test/priority_queue_test-bin-priority_queue_test.o" + ], + "test/priority_queue_test-bin-priority_queue_test.o" => [ + "test/priority_queue_test.c" + ], "test/property_test" => [ "test/property_test-bin-property_test.o" ], @@ -27042,6 +31810,12 @@ our %unified_info = ( "test/provfetchtest-bin-provfetchtest.o" => [ "test/provfetchtest.c" ], + "test/provider_default_search_path_test" => [ + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" + ], + "test/provider_default_search_path_test-bin-provider_default_search_path_test.o" => [ + "test/provider_default_search_path_test.c" + ], "test/provider_fallback_test" => [ "test/provider_fallback_test-bin-provider_fallback_test.o" ], @@ -27090,6 +31864,174 @@ our %unified_info = ( "test/punycode_test-bin-punycode_test.o" => [ "test/punycode_test.c" ], + "test/quic_ackm_test" => [ + "test/quic_ackm_test-bin-cc_dummy.o", + "test/quic_ackm_test-bin-quic_ackm_test.o" + ], + "test/quic_ackm_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_ackm_test-bin-quic_ackm_test.o" => [ + "test/quic_ackm_test.c" + ], + "test/quic_cc_test" => [ + "test/quic_cc_test-bin-quic_cc_test.o" + ], + "test/quic_cc_test-bin-quic_cc_test.o" => [ + "test/quic_cc_test.c" + ], + "test/quic_cfq_test" => [ + "test/quic_cfq_test-bin-quic_cfq_test.o" + ], + "test/quic_cfq_test-bin-quic_cfq_test.o" => [ + "test/quic_cfq_test.c" + ], + "test/quic_client_test" => [ + "test/quic_client_test-bin-quic_client_test.o" + ], + "test/quic_client_test-bin-quic_client_test.o" => [ + "test/quic_client_test.c" + ], + "test/quic_fc_test" => [ + "test/quic_fc_test-bin-quic_fc_test.o" + ], + "test/quic_fc_test-bin-quic_fc_test.o" => [ + "test/quic_fc_test.c" + ], + "test/quic_fifd_test" => [ + "test/quic_fifd_test-bin-cc_dummy.o", + "test/quic_fifd_test-bin-quic_fifd_test.o" + ], + "test/quic_fifd_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_fifd_test-bin-quic_fifd_test.o" => [ + "test/quic_fifd_test.c" + ], + "test/quic_lcidm_test" => [ + "test/quic_lcidm_test-bin-quic_lcidm_test.o" + ], + "test/quic_lcidm_test-bin-quic_lcidm_test.o" => [ + "test/quic_lcidm_test.c" + ], + "test/quic_multistream_test" => [ + "test/helpers/quic_multistream_test-bin-noisydgrambio.o", + "test/helpers/quic_multistream_test-bin-pktsplitbio.o", + "test/helpers/quic_multistream_test-bin-quictestlib.o", + "test/helpers/quic_multistream_test-bin-ssltestlib.o", + "test/quic_multistream_test-bin-quic_multistream_test.o" + ], + "test/quic_multistream_test-bin-quic_multistream_test.o" => [ + "test/quic_multistream_test.c" + ], + "test/quic_newcid_test" => [ + "test/helpers/quic_newcid_test-bin-noisydgrambio.o", + "test/helpers/quic_newcid_test-bin-pktsplitbio.o", + "test/helpers/quic_newcid_test-bin-quictestlib.o", + "test/helpers/quic_newcid_test-bin-ssltestlib.o", + "test/quic_newcid_test-bin-quic_newcid_test.o" + ], + "test/quic_newcid_test-bin-quic_newcid_test.o" => [ + "test/quic_newcid_test.c" + ], + "test/quic_qlog_test" => [ + "test/quic_qlog_test-bin-quic_qlog_test.o" + ], + "test/quic_qlog_test-bin-quic_qlog_test.o" => [ + "test/quic_qlog_test.c" + ], + "test/quic_radix_test" => [ + "test/helpers/quic_radix_test-bin-noisydgrambio.o", + "test/helpers/quic_radix_test-bin-pktsplitbio.o", + "test/helpers/quic_radix_test-bin-quictestlib.o", + "test/helpers/quic_radix_test-bin-ssltestlib.o", + "test/radix/quic_radix_test-bin-quic_radix.o" + ], + "test/quic_rcidm_test" => [ + "test/quic_rcidm_test-bin-quic_rcidm_test.o" + ], + "test/quic_rcidm_test-bin-quic_rcidm_test.o" => [ + "test/quic_rcidm_test.c" + ], + "test/quic_record_test" => [ + "test/quic_record_test-bin-quic_record_test.o" + ], + "test/quic_record_test-bin-quic_record_test.o" => [ + "test/quic_record_test.c" + ], + "test/quic_srt_gen_test" => [ + "test/helpers/quic_srt_gen_test-bin-noisydgrambio.o", + "test/helpers/quic_srt_gen_test-bin-pktsplitbio.o", + "test/helpers/quic_srt_gen_test-bin-quictestlib.o", + "test/helpers/quic_srt_gen_test-bin-ssltestlib.o", + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" + ], + "test/quic_srt_gen_test-bin-quic_srt_gen_test.o" => [ + "test/quic_srt_gen_test.c" + ], + "test/quic_srtm_test" => [ + "test/quic_srtm_test-bin-quic_srtm_test.o" + ], + "test/quic_srtm_test-bin-quic_srtm_test.o" => [ + "test/quic_srtm_test.c" + ], + "test/quic_stream_test" => [ + "test/quic_stream_test-bin-quic_stream_test.o" + ], + "test/quic_stream_test-bin-quic_stream_test.o" => [ + "test/quic_stream_test.c" + ], + "test/quic_tserver_test" => [ + "test/quic_tserver_test-bin-quic_tserver_test.o" + ], + "test/quic_tserver_test-bin-quic_tserver_test.o" => [ + "test/quic_tserver_test.c" + ], + "test/quic_txp_test" => [ + "test/quic_txp_test-bin-cc_dummy.o", + "test/quic_txp_test-bin-quic_txp_test.o" + ], + "test/quic_txp_test-bin-cc_dummy.o" => [ + "test/cc_dummy.c" + ], + "test/quic_txp_test-bin-quic_txp_test.o" => [ + "test/quic_txp_test.c" + ], + "test/quic_txpim_test" => [ + "test/quic_txpim_test-bin-quic_txpim_test.o" + ], + "test/quic_txpim_test-bin-quic_txpim_test.o" => [ + "test/quic_txpim_test.c" + ], + "test/quic_wire_test" => [ + "test/quic_wire_test-bin-quic_wire_test.o" + ], + "test/quic_wire_test-bin-quic_wire_test.o" => [ + "test/quic_wire_test.c" + ], + "test/quicapitest" => [ + "test/helpers/quicapitest-bin-noisydgrambio.o", + "test/helpers/quicapitest-bin-pktsplitbio.o", + "test/helpers/quicapitest-bin-quictestlib.o", + "test/helpers/quicapitest-bin-ssltestlib.o", + "test/quicapitest-bin-quicapitest.o" + ], + "test/quicapitest-bin-quicapitest.o" => [ + "test/quicapitest.c" + ], + "test/quicfaultstest" => [ + "test/helpers/quicfaultstest-bin-noisydgrambio.o", + "test/helpers/quicfaultstest-bin-pktsplitbio.o", + "test/helpers/quicfaultstest-bin-quictestlib.o", + "test/helpers/quicfaultstest-bin-ssltestlib.o", + "test/quicfaultstest-bin-quicfaultstest.o" + ], + "test/quicfaultstest-bin-quicfaultstest.o" => [ + "test/quicfaultstest.c" + ], + "test/radix/quic_radix_test-bin-quic_radix.o" => [ + "test/radix/quic_radix.c" + ], "test/rand_status_test" => [ "test/rand_status_test-bin-rand_status_test.o" ], @@ -27120,11 +32062,11 @@ our %unified_info = ( "test/rc5test-bin-rc5test.o" => [ "test/rc5test.c" ], - "test/rdrand_sanitytest" => [ - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" + "test/rdcpu_sanitytest" => [ + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" ], - "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" => [ - "test/rdrand_sanitytest.c" + "test/rdcpu_sanitytest-bin-rdcpu_sanitytest.o" => [ + "test/rdcpu_sanitytest.c" ], "test/recordlentest" => [ "test/helpers/recordlentest-bin-ssltestlib.o", @@ -27133,6 +32075,13 @@ our %unified_info = ( "test/recordlentest-bin-recordlentest.o" => [ "test/recordlentest.c" ], + "test/rpktest" => [ + "test/helpers/rpktest-bin-ssltestlib.o", + "test/rpktest-bin-rpktest.o" + ], + "test/rpktest-bin-rpktest.o" => [ + "test/rpktest.c" + ], "test/rsa_complex" => [ "test/rsa_complex-bin-rsa_complex.o" ], @@ -27157,6 +32106,18 @@ our %unified_info = ( "test/rsa_test-bin-rsa_test.o" => [ "test/rsa_test.c" ], + "test/rsa_x931_test" => [ + "test/rsa_x931_test-bin-rsa_x931_test.o" + ], + "test/rsa_x931_test-bin-rsa_x931_test.o" => [ + "test/rsa_x931_test.c" + ], + "test/safe_math_test" => [ + "test/safe_math_test-bin-safe_math_test.o" + ], + "test/safe_math_test-bin-safe_math_test.o" => [ + "test/safe_math_test.c" + ], "test/sanitytest" => [ "test/sanitytest-bin-sanitytest.o" ], @@ -27188,6 +32149,12 @@ our %unified_info = ( "test/siphash_internal_test-bin-siphash_internal_test.o" => [ "test/siphash_internal_test.c" ], + "test/slh_dsa_test" => [ + "test/slh_dsa_test-bin-slh_dsa_test.o" + ], + "test/slh_dsa_test-bin-slh_dsa_test.o" => [ + "test/slh_dsa_test.c" + ], "test/sm2_internal_test" => [ "test/sm2_internal_test-bin-sm2_internal_test.o" ], @@ -27230,6 +32197,13 @@ our %unified_info = ( "test/ssl_ctx_test-bin-ssl_ctx_test.o" => [ "test/ssl_ctx_test.c" ], + "test/ssl_handshake_rtt_test" => [ + "test/helpers/ssl_handshake_rtt_test-bin-ssltestlib.o", + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" + ], + "test/ssl_handshake_rtt_test-bin-ssl_handshake_rtt_test.o" => [ + "test/ssl_handshake_rtt_test.c" + ], "test/ssl_old_test" => [ "test/helpers/ssl_old_test-bin-predefined_dhparams.o", "test/ssl_old_test-bin-ssl_old_test.o" @@ -27288,6 +32262,12 @@ our %unified_info = ( "test/stack_test-bin-stack_test.o" => [ "test/stack_test.c" ], + "test/strtoultest" => [ + "test/strtoultest-bin-strtoultest.o" + ], + "test/strtoultest-bin-strtoultest.o" => [ + "test/strtoultest.c" + ], "test/sysdefaulttest" => [ "test/sysdefaulttest-bin-sysdefaulttest.o" ], @@ -27318,6 +32298,9 @@ our %unified_info = ( "test/testutil/libtestutil-lib-format_output.o" => [ "test/testutil/format_output.c" ], + "test/testutil/libtestutil-lib-helper.o" => [ + "test/testutil/helper.c" + ], "test/testutil/libtestutil-lib-load.o" => [ "test/testutil/load.c" ], @@ -27351,6 +32334,12 @@ our %unified_info = ( "test/testutil/libtestutil-lib-testutil_init.o" => [ "test/testutil/testutil_init.c" ], + "test/threadpool_test" => [ + "test/threadpool_test-bin-threadpool_test.o" + ], + "test/threadpool_test-bin-threadpool_test.o" => [ + "test/threadpool_test.c" + ], "test/threadstest" => [ "test/threadstest-bin-threadstest.o" ], @@ -27369,6 +32358,12 @@ our %unified_info = ( "test/time_offset_test-bin-time_offset_test.o" => [ "test/time_offset_test.c" ], + "test/time_test" => [ + "test/time_test-bin-time_test.o" + ], + "test/time_test-bin-time_test.o" => [ + "test/time_test.c" + ], "test/tls13ccstest" => [ "test/helpers/tls13ccstest-bin-ssltestlib.o", "test/tls13ccstest-bin-tls13ccstest.o" @@ -27382,6 +32377,13 @@ our %unified_info = ( "test/tls13encryptiontest-bin-tls13encryptiontest.o" => [ "test/tls13encryptiontest.c" ], + "test/tls13groupselection_test" => [ + "test/helpers/tls13groupselection_test-bin-ssltestlib.o", + "test/tls13groupselection_test-bin-tls13groupselection_test.o" + ], + "test/tls13groupselection_test-bin-tls13groupselection_test.o" => [ + "test/tls13groupselection_test.c" + ], "test/trace_api_test" => [ "test/trace_api_test-bin-trace_api_test.o" ], @@ -27437,6 +32439,12 @@ our %unified_info = ( "test/wpackettest-bin-wpackettest.o" => [ "test/wpackettest.c" ], + "test/x509_acert_test" => [ + "test/x509_acert_test-bin-x509_acert_test.o" + ], + "test/x509_acert_test-bin-x509_acert_test.o" => [ + "test/x509_acert_test.c" + ], "test/x509_check_cert_pkey_test" => [ "test/x509_check_cert_pkey_test-bin-x509_check_cert_pkey_test.o" ], @@ -27455,6 +32463,24 @@ our %unified_info = ( "test/x509_internal_test-bin-x509_internal_test.o" => [ "test/x509_internal_test.c" ], + "test/x509_load_cert_file_test" => [ + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" + ], + "test/x509_load_cert_file_test-bin-x509_load_cert_file_test.o" => [ + "test/x509_load_cert_file_test.c" + ], + "test/x509_req_test" => [ + "test/x509_req_test-bin-x509_req_test.o" + ], + "test/x509_req_test-bin-x509_req_test.o" => [ + "test/x509_req_test.c" + ], + "test/x509_test" => [ + "test/x509_test-bin-x509_test.o" + ], + "test/x509_test-bin-x509_test.o" => [ + "test/x509_test.c" + ], "test/x509_time_test" => [ "test/x509_time_test-bin-x509_time_test.o" ], @@ -27518,6 +32544,7 @@ my @makevars = ( "LDLIBS", "MT", "MTFLAGS", + "OBJCOPY", "PERL", "RANLIB", "RC", @@ -27531,6 +32558,12 @@ my %disabled_info = ( "asan" => { "macro" => "OPENSSL_NO_ASAN" }, + "brotli" => { + "macro" => "OPENSSL_NO_BROTLI" + }, + "brotli-dynamic" => { + "macro" => "OPENSSL_NO_BROTLI_DYNAMIC" + }, "comp" => { "macro" => "OPENSSL_NO_COMP", "skipped" => [ @@ -27543,6 +32576,9 @@ my %disabled_info = ( "crypto-mdebug-backtrace" => { "macro" => "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE" }, + "demos" => { + "macro" => "OPENSSL_NO_DEMOS" + }, "devcryptoeng" => { "macro" => "OPENSSL_NO_DEVCRYPTOENG" }, @@ -27555,12 +32591,24 @@ my %disabled_info = ( "external-tests" => { "macro" => "OPENSSL_NO_EXTERNAL_TESTS" }, + "fips-jitter" => { + "macro" => "OPENSSL_NO_FIPS_JITTER" + }, "fuzz-afl" => { "macro" => "OPENSSL_NO_FUZZ_AFL" }, "fuzz-libfuzzer" => { "macro" => "OPENSSL_NO_FUZZ_LIBFUZZER" }, + "h3demo" => { + "macro" => "OPENSSL_NO_H3DEMO" + }, + "hqinterop" => { + "macro" => "OPENSSL_NO_HQINTEROP" + }, + "jitter" => { + "macro" => "OPENSSL_NO_JITTER" + }, "ktls" => { "macro" => "OPENSSL_NO_KTLS" }, @@ -27576,6 +32624,9 @@ my %disabled_info = ( "msan" => { "macro" => "OPENSSL_NO_MSAN" }, + "pie" => { + "macro" => "OPENSSL_NO_PIE" + }, "rc5" => { "macro" => "OPENSSL_NO_RC5", "skipped" => [ @@ -27591,6 +32642,12 @@ my %disabled_info = ( "ssl3-method" => { "macro" => "OPENSSL_NO_SSL3_METHOD" }, + "sslkeylog" => { + "macro" => "OPENSSL_NO_SSLKEYLOG" + }, + "tfo" => { + "macro" => "OPENSSL_NO_TFO" + }, "trace" => { "macro" => "OPENSSL_NO_TRACE" }, @@ -27605,6 +32662,21 @@ my %disabled_info = ( }, "weak-ssl-ciphers" => { "macro" => "OPENSSL_NO_WEAK_SSL_CIPHERS" + }, + "winstore" => { + "macro" => "OPENSSL_NO_WINSTORE" + }, + "zlib" => { + "macro" => "OPENSSL_NO_ZLIB" + }, + "zlib-dynamic" => { + "macro" => "OPENSSL_NO_ZLIB_DYNAMIC" + }, + "zstd" => { + "macro" => "OPENSSL_NO_ZSTD" + }, + "zstd-dynamic" => { + "macro" => "OPENSSL_NO_ZSTD_DYNAMIC" } ); my @user_crossable = qw( AR AS CC CXX CPP LD MT RANLIB RC ); @@ -27618,15 +32690,15 @@ unless (caller) { use File::Copy; use Pod::Usage; - use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; - use OpenSSL::fallback '/home/runner/work/node/node/deps/openssl/openssl/external/perl/MODULES.txt'; + use lib '/node/deps/openssl/openssl/util/perl'; + use OpenSSL::fallback '/node/deps/openssl/openssl/external/perl/MODULES.txt'; my $here = dirname($0); if (scalar @ARGV == 0) { # With no arguments, re-create the build file # We do that in two steps, where the first step emits perl - # snipets. + # snippets. my $buildfile = $config{build_file}; my $buildfile_template = "$buildfile.in"; @@ -27646,7 +32718,7 @@ unless (caller) { ); use lib '.'; - use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; + use lib '/node/deps/openssl/openssl/Configurations'; use gentemplate; open my $buildfile_template_fh, ">$buildfile_template" @@ -27663,8 +32735,8 @@ unless (caller) { my $prepend = <<'_____'; use File::Spec::Functions; -use lib '/home/runner/work/node/node/deps/openssl/openssl/util/perl'; -use lib '/home/runner/work/node/node/deps/openssl/openssl/Configurations'; +use lib '/node/deps/openssl/openssl/util/perl'; +use lib '/node/deps/openssl/openssl/Configurations'; use lib '.'; use platform; _____ diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/aes/aes-586.S b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/aes/aes-586.S index f474c45fde8a8f..07586720827b91 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/aes/aes-586.S +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/aes/aes-586.S @@ -3264,4 +3264,4 @@ L056permute: L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P .long 0 -.comm _OPENSSL_ia32cap_P,16,2 +.comm _OPENSSL_ia32cap_P,40,2 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/aes/aesni-x86.S b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/aes/aesni-x86.S index 7a23ba9595c312..64d97c5d7cce0f 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/aes/aesni-x86.S +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/aes/aesni-x86.S @@ -3304,4 +3304,4 @@ Lkey_const: L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P .long 0 -.comm _OPENSSL_ia32cap_P,16,2 +.comm _OPENSSL_ia32cap_P,40,2 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/bn/bn-586.S b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/bn/bn-586.S index 066935dd3b41df..42cbe15c13118a 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/bn/bn-586.S +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/bn/bn-586.S @@ -1551,4 +1551,4 @@ L032pw_end: L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P .long 0 -.comm _OPENSSL_ia32cap_P,16,2 +.comm _OPENSSL_ia32cap_P,40,2 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/bn/x86-gf2m.S b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/bn/x86-gf2m.S index 92bdaeac9b1c0e..7dcfd799bec9ba 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/bn/x86-gf2m.S +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/bn/x86-gf2m.S @@ -355,4 +355,4 @@ L001ialu: L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P .long 0 -.comm _OPENSSL_ia32cap_P,16,2 +.comm _OPENSSL_ia32cap_P,40,2 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/bn/x86-mont.S b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/bn/x86-mont.S index 7bca500149ee8d..5c615bb79093e9 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/bn/x86-mont.S +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/bn/x86-mont.S @@ -479,4 +479,4 @@ L000just_leave: L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P .long 0 -.comm _OPENSSL_ia32cap_P,16,2 +.comm _OPENSSL_ia32cap_P,40,2 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h index 07eee0541a9085..681ba7174ac494 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin-i386-cc" -#define DATE "built on: Sun Jul 20 00:47:54 2025 UTC" +#define DATE "built on: Tue Aug 5 17:13:14 2025 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/chacha/chacha-x86.S b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/chacha/chacha-x86.S index fcc5df1948bf90..6a82762d1caa19 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/chacha/chacha-x86.S +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/chacha/chacha-x86.S @@ -1455,4 +1455,4 @@ L019done: L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P .long 0 -.comm _OPENSSL_ia32cap_P,16,2 +.comm _OPENSSL_ia32cap_P,40,2 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/ec/ecp_nistz256-x86.S b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/ec/ecp_nistz256-x86.S index 821f4fc126e702..38df7d7448a80d 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/ec/ecp_nistz256-x86.S +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/ec/ecp_nistz256-x86.S @@ -5230,4 +5230,4 @@ L013pic: L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P .long 0 -.comm _OPENSSL_ia32cap_P,16,2 +.comm _OPENSSL_ia32cap_P,40,2 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/params_idx.c b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/params_idx.c new file mode 100644 index 00000000000000..9d76ffededc24c --- /dev/null +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/params_idx.c @@ -0,0 +1,3366 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from crypto/params_idx.c.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#include "internal/e_os.h" +#include "internal/param_names.h" +#include + +/* Machine generated TRIE -- generated by util/perl/OpenSSL/paramnames.pm */ +int ossl_param_find_pidx(const char *s) +{ + switch(s[0]) { + default: + break; + case 'a': + switch(s[1]) { + default: + break; + case 'c': + if (strcmp("vp-info", s + 2) == 0) + return PIDX_KDF_PARAM_X942_ACVPINFO; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'd': + if (strcmp("itional-random", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_ADD_RANDOM; + break; + case '\0': + return PIDX_KDF_PARAM_ARGON2_AD; + } + break; + case 'e': + if (strcmp("ad", s + 2) == 0) + return PIDX_CIPHER_PARAM_AEAD; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("id_param", s + 4) == 0) + return PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD; + break; + case 'i': + if (strcmp("d-absent", s + 4) == 0) + return PIDX_DIGEST_PARAM_ALGID_ABSENT; + break; + case 'o': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'h': + switch(s[8]) { + default: + break; + case 'm': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '-': + if (strcmp("params", s + 13) == 0) + return PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS; + break; + case '\0': + return PIDX_ALG_PARAM_ALGORITHM_ID; + } + } + } + } + } + } + } + } + } + } + break; + case 'i': + if (strcmp("as", s + 3) == 0) + return PIDX_STORE_PARAM_ALIAS; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_A; + } + break; + case 'b': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("sis-type", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_CHAR2_TYPE; + break; + case 'i': + if (strcmp("ts", s + 2) == 0) + return PIDX_PKEY_PARAM_BITS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("size", s + 6) == 0) + return PIDX_MAC_PARAM_BLOCK_SIZE; + break; + case '_': + if (strcmp("padding", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING; + break; + case 's': + if (strcmp("ize", s + 6) == 0) + return PIDX_DIGEST_PARAM_BLOCK_SIZE; + } + } + } + } + break; + case 'u': + if (strcmp("ildinfo", s + 2) == 0) + return PIDX_PROV_PARAM_BUILDINFO; + break; + case '\0': + return PIDX_PKEY_PARAM_EC_B; + } + break; + case 'c': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_C_ROUNDS; + break; + case 'e': + if (strcmp("kalg", s + 2) == 0) + return PIDX_KDF_PARAM_CEK_ALG; + break; + case 'i': + if (strcmp("pher", s + 2) == 0) + return PIDX_ALG_PARAM_CIPHER; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("actor", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_COFACTOR; + break; + case 'n': + switch(s[3]) { + default: + break; + case 's': + if (strcmp("tant", s + 4) == 0) + return PIDX_KDF_PARAM_CONSTANT; + break; + case 't': + if (strcmp("ext-string", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_CONTEXT_STRING; + } + } + break; + case 't': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("mode", s + 4) == 0) + return PIDX_CIPHER_PARAM_CTS_MODE; + break; + case '\0': + return PIDX_CIPHER_PARAM_CTS; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '-': + if (strcmp("iv", s + 7) == 0) + return PIDX_CIPHER_PARAM_CUSTOM_IV; + break; + case '\0': + return PIDX_MAC_PARAM_CUSTOM; + } + } + } + } + } + } + break; + case 'd': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_D_ROUNDS; + break; + case 'a': + switch(s[2]) { + default: + break; + case 't': + switch(s[3]) { + default: + break; + case 'a': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 's': + if (strcmp("tructure", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_STRUCTURE; + break; + case 't': + if (strcmp("ype", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_TYPE; + } + break; + case '\0': + return PIDX_OBJECT_PARAM_DATA; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + if (strcmp("ded-from-explicit", s + 4) == 0) + return PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS; + break; + case 'r': + if (strcmp("ypt-only", s + 4) == 0) + return PIDX_CIPHER_PARAM_DECRYPT_ONLY; + } + break; + case 'f': + if (strcmp("ault-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_DEFAULT_DIGEST; + break; + case 's': + if (strcmp("c", s + 3) == 0) + return PIDX_OBJECT_PARAM_DESC; + break; + case 't': + if (strcmp("erministic", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_DETERMINISTIC; + } + break; + case 'h': + if (strcmp("kem-ikm", s + 2) == 0) + return PIDX_PKEY_PARAM_DHKEM_IKM; + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("heck", s + 8) == 0) + return PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK; + break; + case 'n': + if (strcmp("oinit", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_NOINIT; + break; + case 'o': + if (strcmp("neshot", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_ONESHOT; + break; + case 'p': + if (strcmp("rops", s + 8) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS; + break; + case 's': + if (strcmp("ize", s + 8) == 0) + return PIDX_PKEY_PARAM_DIGEST_SIZE; + } + break; + case '\0': + return PIDX_STORE_PARAM_DIGEST; + } + } + } + } + break; + case 's': + if (strcmp("tid", s + 3) == 0) + return PIDX_PKEY_PARAM_DIST_ID; + } + break; + case 'r': + if (strcmp("bg-no-trunc-md", s + 2) == 0) + return PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST; + break; + case 's': + if (strcmp("a-sign-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_DSA_SIGN_DISABLED; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_D; + } + break; + case 'e': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("rly_clean", s + 2) == 0) + return PIDX_KDF_PARAM_EARLY_CLEAN; + break; + case 'c': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'h': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'a': + switch(s[9]) { + default: + break; + case 'c': + switch(s[10]) { + default: + break; + case 't': + switch(s[11]) { + default: + break; + case 'o': + switch(s[12]) { + default: + break; + case 'r': + switch(s[13]) { + default: + break; + case '-': + switch(s[14]) { + default: + break; + case 'c': + if (strcmp("heck", s + 15) == 0) + return PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK; + break; + case 'm': + if (strcmp("ode", s + 15) == 0) + return PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE; + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'm': + if (strcmp("s_check", s + 2) == 0) + return PIDX_KDF_PARAM_FIPS_EMS_CHECK; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("d-pub-key", s + 6) == 0) + return PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY; + break; + case 'i': + if (strcmp("ng", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_ENCODING; + } + } + break; + case 'r': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'c': + if (strcmp("heck", s + 9) == 0) + return PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK; + break; + case 'l': + if (strcmp("evel", s + 9) == 0) + return PIDX_ENCODER_PARAM_ENCRYPT_LEVEL; + } + } + } + } + } + } + break; + case 'g': + if (strcmp("ine", s + 3) == 0) + return PIDX_ALG_PARAM_ENGINE; + break; + case 't': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'y': + switch(s[7]) { + default: + break; + case '_': + if (strcmp("required", s + 8) == 0) + return PIDX_DRBG_PARAM_ENTROPY_REQUIRED; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_ENTROPY; + } + } + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_E; + break; + case 'x': + if (strcmp("pect", s + 2) == 0) + return PIDX_STORE_PARAM_EXPECT; + } + break; + case 'f': + switch(s[1]) { + default: + break; + case 'i': + switch(s[2]) { + default: + break; + case 'e': + if (strcmp("ld-type", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_FIELD_TYPE; + break; + case 'n': + if (strcmp("gerprint", s + 3) == 0) + return PIDX_STORE_PARAM_FINGERPRINT; + break; + case 'p': + if (strcmp("s-indicator", s + 3) == 0) + return PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR; + } + } + break; + case 'g': + switch(s[1]) { + default: + break; + case 'e': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_GENERATE; + } + break; + case 'o': + if (strcmp("r", s + 8) == 0) + return PIDX_PKEY_PARAM_EC_GENERATOR; + } + } + } + } + } + } + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_GINDEX; + break; + case 'r': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'u': + switch(s[4]) { + default: + break; + case 'p': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("check", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE; + break; + case '\0': + return PIDX_PKEY_PARAM_GROUP_NAME; + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_G; + } + break; + case 'h': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("s-randkey", s + 2) == 0) + return PIDX_CIPHER_PARAM_HAS_RAND_KEY; + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_H; + break; + case 'k': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'f': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_KEY_CHECK; + } + } + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_HMAC_KEY_CHECK; + break; + case 's': + if (strcmp("_padding", s + 2) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING; + } + break; + case 'i': + switch(s[1]) { + default: + break; + case 'd': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_PKCS12_ID; + } + break; + case 'k': + if (strcmp("me", s + 2) == 0) + return PIDX_KEM_PARAM_IKME; + break; + case 'm': + if (strcmp("plicit-rejection", s + 2) == 0) + return PIDX_PKEY_PARAM_IMPLICIT_REJECTION; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("lude-public", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC; + break; + case 'f': + if (strcmp("o", s + 3) == 0) + return PIDX_PASSPHRASE_PARAM_INFO; + break; + case 'p': + if (strcmp("ut-type", s + 3) == 0) + return PIDX_STORE_PARAM_INPUT_TYPE; + break; + case 's': + if (strcmp("tance", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_INSTANCE; + } + break; + case 't': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("tion", s + 5) == 0) + return PIDX_GEN_PARAM_ITERATION; + break; + case '\0': + return PIDX_KDF_PARAM_ITER; + } + } + } + break; + case 'v': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("generated", s + 3) == 0) + return PIDX_CIPHER_PARAM_AEAD_IV_GENERATED; + break; + case 'l': + if (strcmp("en", s + 3) == 0) + return PIDX_CIPHER_PARAM_IVLEN; + break; + case '\0': + return PIDX_MAC_PARAM_IV; + } + } + break; + case 'j': + switch(s[1]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_COFACTOR; + } + break; + case 'k': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K2; + } + break; + case '3': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K3; + } + break; + case 'a': + if (strcmp("t", s + 2) == 0) + return PIDX_SIGNATURE_PARAM_KAT; + break; + case 'b': + if (strcmp("kdf-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KBKDF_KEY_CHECK; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case 's': + switch(s[9]) { + default: + break; + case 't': + switch(s[10]) { + default: + break; + case '-': + if (strcmp("props", s + 11) == 0) + return PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_KDF_DIGEST; + } + } + } + } + } + } + break; + case 'o': + if (strcmp("utlen", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_OUTLEN; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_TYPE; + break; + case 'u': + if (strcmp("km", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_UKM; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'y': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("heck", s + 5) == 0) + return PIDX_PKEY_PARAM_FIPS_KEY_CHECK; + break; + case 'l': + if (strcmp("ength", s + 5) == 0) + return PIDX_SKEY_PARAM_KEY_LENGTH; + } + break; + case 'b': + if (strcmp("its", s + 4) == 0) + return PIDX_CIPHER_PARAM_RC2_KEYBITS; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_KEYLEN; + break; + case '\0': + return PIDX_MAC_PARAM_KEY; + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KMAC_KEY_CHECK; + } + break; + case 'l': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("el", s + 3) == 0) + return PIDX_KDF_PARAM_LABEL; + break; + case 'n': + if (strcmp("es", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_LANES; + } + } + break; + case 'm': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'k': + if (strcmp("ey", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_MAC_KEY; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_KDF_PARAM_MAC_SIZE; + break; + case '\0': + return PIDX_ALG_PARAM_MAC; + } + break; + case 'n': + if (strcmp("datory-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_MANDATORY_DIGEST; + break; + case 'x': + switch(s[3]) { + default: + break; + case '-': + if (strcmp("size", s + 4) == 0) + return PIDX_PKEY_PARAM_MAX_SIZE; + break; + case '_': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("dinlen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_ADINLEN; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("rly_data", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA; + break; + case 'n': + if (strcmp("tropylen", s + 6) == 0) + return PIDX_DRBG_PARAM_MAX_ENTROPYLEN; + } + break; + case 'f': + if (strcmp("rag_len", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_NONCELEN; + break; + case 'p': + if (strcmp("erslen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_PERSLEN; + break; + case 'r': + if (strcmp("equest", s + 5) == 0) + return PIDX_RAND_PARAM_MAX_REQUEST; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MAX_LENGTH; + break; + case 'm': + if (strcmp("em_bytes", s + 4) == 0) + return PIDX_KDF_PARAM_SCRYPT_MAXMEM; + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'm': + if (strcmp("cost", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_MEMCOST; + break; + case 's': + if (strcmp("sage-encoding", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING; + } + break; + case 'g': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_DIGEST; + break; + case 'p': + if (strcmp("roperties", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_PROPERTIES; + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_MASKGENFUNC; + } + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("alg", s + 3) == 0) + return PIDX_DIGEST_PARAM_MICALG; + break; + case 'n': + switch(s[3]) { + default: + break; + case '_': + switch(s[4]) { + default: + break; + case 'e': + if (strcmp("ntropylen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_ENTROPYLEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_NONCELEN; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MIN_LENGTH; + } + } + break; + case 'l': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + if (strcmp("nput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS; + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED; + } + } + } + } + break; + case 'k': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + switch(s[8]) { + default: + break; + case 'm': + if (strcmp("port_pct_type", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE; + break; + case 'n': + if (strcmp("put_formats", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS; + } + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED; + } + } + } + } + } + } + break; + case 'o': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case '\0': + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE; + } + break; + case 'u': + if (strcmp("le-filename", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_MODULE_FILENAME; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_SIGNATURE_PARAM_MU; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_M; + } + break; + case 'n': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("me", s + 2) == 0) + return PIDX_STORE_PARAM_ISSUER; + break; + case 'o': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("short-mac", s + 3) == 0) + return PIDX_PROV_PARAM_NO_SHORT_MAC; + break; + case 'n': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("type", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_NONCE_TYPE; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_NONCE; + } + } + } + } + break; + case 'u': + if (strcmp("m", s + 2) == 0) + return PIDX_CIPHER_PARAM_NUM; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_N; + } + break; + case 'o': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("ep-label", s + 2) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL; + break; + case 'p': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'n': + if (strcmp("ssl-version", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_VERSION; + break; + case 'r': + if (strcmp("ation", s + 4) == 0) + return PIDX_KEM_PARAM_OPERATION; + } + break; + case 't': + if (strcmp("ions", s + 3) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS; + } + break; + case 'r': + if (strcmp("der", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_ORDER; + } + break; + case 'p': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P2; + } + break; + case 'a': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'm': + if (strcmp("ode", s + 5) == 0) + return PIDX_PKEY_PARAM_PAD_MODE; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_DIGEST_PARAM_PAD_TYPE; + } + break; + case 'd': + if (strcmp("ing", s + 4) == 0) + return PIDX_CIPHER_PARAM_PADDING; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_PAD; + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'u': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYUINFO; + break; + case 'v': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYVINFO; + } + } + } + break; + case 's': + if (strcmp("s", s + 3) == 0) + return PIDX_KDF_PARAM_PASSWORD; + } + break; + case 'b': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("ts", s + 3) == 0) + return PIDX_PKEY_PARAM_FFC_PBITS; + break; + case 'k': + if (strcmp("df2-lower-bound-check", s + 3) == 0) + return PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK; + } + break; + case 'c': + if (strcmp("ounter", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_PCOUNTER; + break; + case 'i': + if (strcmp("peline-tag", s + 2) == 0) + return PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG; + break; + case 'k': + if (strcmp("cs5", s + 2) == 0) + return PIDX_KDF_PARAM_PKCS5; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("nt-format", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT; + break; + case 't': + if (strcmp("ential", s + 3) == 0) + return PIDX_GEN_PARAM_POTENTIAL; + } + break; + case 'r': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("iction_resistance", s + 4) == 0) + return PIDX_DRBG_PARAM_PREDICTION_RESISTANCE; + break; + case 'f': + if (strcmp("ix", s + 4) == 0) + return PIDX_KDF_PARAM_PREFIX; + } + break; + case 'i': + switch(s[3]) { + default: + break; + case 'm': + if (strcmp("es", s + 4) == 0) + return PIDX_PKEY_PARAM_RSA_PRIMES; + break; + case 'v': + switch(s[4]) { + default: + break; + case '_': + if (strcmp("len", s + 5) == 0) + return PIDX_PKEY_PARAM_DH_PRIV_LEN; + break; + case '\0': + return PIDX_PKEY_PARAM_PRIV_KEY; + } + } + break; + case 'o': + switch(s[3]) { + default: + break; + case 'p': + if (strcmp("erties", s + 4) == 0) + return PIDX_STORE_PARAM_PROPERTIES; + break; + case 'v': + if (strcmp("ider-name", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_PROV_NAME; + } + } + break; + case 'u': + if (strcmp("b", s + 2) == 0) + return PIDX_PKEY_PARAM_PUB_KEY; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_P; + } + break; + case 'q': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q2; + } + break; + case 'b': + if (strcmp("its", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_QBITS; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_Q; + break; + case 'x': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_X; + } + break; + case 'y': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_Y; + } + } + break; + case 'r': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'k': + if (strcmp("ey", s + 5) == 0) + return PIDX_CIPHER_PARAM_RANDOM_KEY; + break; + case 'o': + if (strcmp("m_data", s + 5) == 0) + return PIDX_DRBG_PARAM_RANDOM_DATA; + } + } + break; + case 'w': + if (strcmp("-bytes", s + 3) == 0) + return PIDX_SKEY_PARAM_RAW_BYTES; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case '_': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("head", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD; + break; + case 'b': + if (strcmp("uffer_len", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN; + } + } + } + break; + case 'f': + if (strcmp("erence", s + 3) == 0) + return PIDX_OBJECT_PARAM_REFERENCE; + break; + case 's': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case '_': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("ounter", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_COUNTER; + break; + case 'r': + if (strcmp("equests", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_REQUESTS; + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case 'm': + switch(s[10]) { + default: + break; + case 'e': + switch(s[11]) { + default: + break; + case '_': + if (strcmp("interval", s + 12) == 0) + return PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL; + break; + case '\0': + return PIDX_DRBG_PARAM_RESEED_TIME; + } + } + } + } + } + } + } + } + } + } + break; + case 'o': + if (strcmp("unds", s + 2) == 0) + return PIDX_CIPHER_PARAM_ROUNDS; + break; + case 's': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + switch(s[5]) { + default: + break; + case 'o': + switch(s[6]) { + default: + break; + case 'e': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case 'i': + switch(s[10]) { + default: + break; + case 'c': + switch(s[11]) { + default: + break; + case 'i': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'n': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case '1': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT1; + } + break; + case '2': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT2; + } + break; + case '3': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT3; + } + break; + case '4': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT4; + } + break; + case '5': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT5; + } + break; + case '6': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT6; + } + break; + case '7': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT7; + } + break; + case '8': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT8; + } + break; + case '9': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'd': + if (strcmp("erive-from-pq", s + 5) == 0) + return PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'x': + switch(s[6]) { + default: + break; + case 'p': + switch(s[7]) { + default: + break; + case 'o': + switch(s[8]) { + default: + break; + case 'n': + switch(s[9]) { + default: + break; + case 'e': + switch(s[10]) { + default: + break; + case 'n': + switch(s[11]) { + default: + break; + case 't': + switch(s[12]) { + default: + break; + case '1': + switch(s[13]) { + default: + break; + case '0': + switch(s[14]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT1; + } + break; + case '2': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT2; + } + break; + case '3': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT3; + } + break; + case '4': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT4; + } + break; + case '5': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT5; + } + break; + case '6': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT6; + } + break; + case '7': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT7; + } + break; + case '8': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT8; + } + break; + case '9': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT; + } + } + } + } + } + } + } + } + break; + case 'f': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'o': + switch(s[9]) { + default: + break; + case 'r': + switch(s[10]) { + default: + break; + case '1': + switch(s[11]) { + default: + break; + case '0': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR1; + } + break; + case '2': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR2; + } + break; + case '3': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR3; + } + break; + case '4': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR4; + } + break; + case '5': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR5; + } + break; + case '6': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR6; + } + break; + case '7': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR7; + } + break; + case '8': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR8; + } + break; + case '9': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR; + } + } + } + } + } + } + break; + case 'p': + switch(s[5]) { + default: + break; + case 'k': + if (strcmp("cs15-pad-disabled", s + 6) == 0) + return PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED; + break; + case 's': + if (strcmp("s-saltlen-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK; + } + break; + case 's': + if (strcmp("ign-x931-pad-disabled", s + 5) == 0) + return PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED; + } + } + } + break; + case '\0': + return PIDX_KDF_PARAM_SCRYPT_R; + } + break; + case 's': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("eprime-generator", s + 3) == 0) + return PIDX_PKEY_PARAM_DH_GENERATOR; + break; + case 'l': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'l': + if (strcmp("en", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_PSS_SALTLEN; + break; + case '\0': + return PIDX_MAC_PARAM_SALT; + } + } + break; + case 'v': + if (strcmp("e-parameters", s + 3) == 0) + return PIDX_ENCODER_PARAM_SAVE_PARAMETERS; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'r': + if (strcmp("et", s + 4) == 0) + return PIDX_KDF_PARAM_SECRET; + break; + case 'u': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'y': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'b': + if (strcmp("its", s + 10) == 0) + return PIDX_PKEY_PARAM_SECURITY_BITS; + break; + case 'c': + if (strcmp("hecks", s + 10) == 0) + return PIDX_PROV_PARAM_SECURITY_CHECKS; + } + } + } + } + } + } + } + break; + case 'e': + if (strcmp("d", s + 3) == 0) + return PIDX_PKEY_PARAM_SLH_DSA_SEED; + break; + case 'r': + if (strcmp("ial", s + 3) == 0) + return PIDX_STORE_PARAM_SERIAL; + break; + case 's': + if (strcmp("sion_id", s + 3) == 0) + return PIDX_KDF_PARAM_SSHKDF_SESSION_ID; + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'n': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + if (strcmp("heck", s + 6) == 0) + return PIDX_PKEY_PARAM_FIPS_SIGN_CHECK; + break; + case 'x': + if (strcmp("931-pad-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK; + } + break; + case 'a': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case 'u': + switch(s[7]) { + default: + break; + case 'r': + switch(s[8]) { + default: + break; + case 'e': + switch(s[9]) { + default: + break; + case '-': + if (strcmp("digest-check", s + 10) == 0) + return PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK; + break; + case '\0': + return PIDX_SIGNATURE_PARAM_SIGNATURE; + } + } + } + } + } + } + } + break; + case 'z': + if (strcmp("e", s + 3) == 0) + return PIDX_MAC_PARAM_SIZE; + } + break; + case 'p': + if (strcmp("eed", s + 2) == 0) + return PIDX_CIPHER_PARAM_SPEED; + break; + case 's': + switch(s[2]) { + default: + break; + case 'h': + switch(s[3]) { + default: + break; + case 'k': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'f': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_KEY_CHECK; + } + } + } + } + } + break; + case 'k': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'f': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_KEY_CHECK; + } + } + } + } + break; + case 'l': + if (strcmp("3-ms", s + 3) == 0) + return PIDX_DIGEST_PARAM_SSL3_MS; + } + break; + case 't': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("esc", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_DESC; + break; + case 'p': + if (strcmp("hase", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_PHASE; + break; + case 't': + if (strcmp("ype", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_TYPE; + } + break; + case 'a': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_STATE; + } + break; + case 'u': + if (strcmp("s", s + 5) == 0) + return PIDX_PROV_PARAM_STATUS; + } + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("m_mac", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC; + break; + case 'n': + if (strcmp("gth", s + 5) == 0) + return PIDX_RAND_PARAM_STRENGTH; + } + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("ject", s + 3) == 0) + return PIDX_STORE_PARAM_SUBJECT; + break; + case 'p': + switch(s[3]) { + default: + break; + case 'p': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + if (strcmp("ivinfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PRIVINFO; + break; + case 'u': + if (strcmp("binfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PUBINFO; + } + } + } + } + } + } + break; + case 't': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_TAGLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TAG; + } + } + break; + case 'd': + if (strcmp("es-encrypt-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED; + break; + case 'e': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case '-': + if (strcmp("entropy", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_TEST_ENTROPY; + break; + case '_': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("ntropy", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_ENTROPY; + break; + case 'n': + if (strcmp("once", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_NONCE; + } + } + } + } + break; + case 'h': + if (strcmp("reads", s + 2) == 0) + return PIDX_KDF_PARAM_THREADS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("lient-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION; + break; + case 'd': + if (strcmp("ata-size", s + 5) == 0) + return PIDX_MAC_PARAM_TLS_DATA_SIZE; + break; + case 'g': + switch(s[5]) { + default: + break; + case 'r': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'u': + switch(s[8]) { + default: + break; + case 'p': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'a': + if (strcmp("lg", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_ALG; + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_ID; + } + break; + case 's': + if (strcmp("-kem", s + 12) == 0) + return PIDX_CAPABILITY_TLS_GROUP_IS_KEM; + } + break; + case 'n': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'm': + switch(s[13]) { + default: + break; + case 'e': + switch(s[14]) { + default: + break; + case '-': + if (strcmp("internal", s + 15) == 0) + return PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL; + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_NAME; + } + } + } + } + break; + case 's': + if (strcmp("ec-bits", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case '-': + if (strcmp("size", s + 8) == 0) + return PIDX_CIPHER_PARAM_TLS_MAC_SIZE; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS_MAC; + } + break; + case 'x': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS; + } + } + } + break; + case 'i': + switch(s[6]) { + default: + break; + case 'n': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS; + } + } + } + break; + case 'u': + if (strcmp("lti", s + 6) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK; + } + break; + case 'n': + if (strcmp("egotiated-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION; + break; + case 's': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'a': + switch(s[8]) { + default: + break; + case 'l': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '-': + switch(s[11]) { + default: + break; + case 'c': + if (strcmp("ode-point", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT; + break; + case 'h': + switch(s[12]) { + default: + break; + case 'a': + switch(s[13]) { + default: + break; + case 's': + switch(s[14]) { + default: + break; + case 'h': + switch(s[15]) { + default: + break; + case '-': + switch(s[16]) { + default: + break; + case 'n': + if (strcmp("ame", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME; + break; + case 'o': + if (strcmp("id", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_OID; + } + } + } + } + } + break; + case 'i': + if (strcmp("ana-name", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME; + break; + case 'k': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'y': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case 'y': + switch(s[16]) { + default: + break; + case 'p': + switch(s[17]) { + default: + break; + case 'e': + switch(s[18]) { + default: + break; + case '-': + if (strcmp("oid", s + 19) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID; + break; + case '\0': + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE; + } + } + } + } + } + } + } + break; + case 'n': + if (strcmp("ame", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_NAME; + break; + case 'o': + if (strcmp("id", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_OID; + break; + case 's': + switch(s[12]) { + default: + break; + case 'e': + if (strcmp("c-bits", s + 13) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS; + break; + case 'i': + switch(s[13]) { + default: + break; + case 'g': + switch(s[14]) { + default: + break; + case '-': + switch(s[15]) { + default: + break; + case 'n': + if (strcmp("ame", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME; + break; + case 'o': + if (strcmp("id", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_OID; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'v': + if (strcmp("ersion", s + 5) == 0) + return PIDX_CIPHER_PARAM_TLS_VERSION; + } + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK; + break; + case 'e': + if (strcmp("ms-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK; + } + } + } + } + } + break; + case '3': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'k': + switch(s[7]) { + default: + break; + case 'd': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'u': + switch(s[6]) { + default: + break; + case 'l': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case '_': + switch(s[10]) { + default: + break; + case 'a': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'd': + switch(s[13]) { + default: + break; + case 'p': + if (strcmp("acklen", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD; + } + } + } + break; + case 'e': + switch(s[11]) { + default: + break; + case 'n': + switch(s[12]) { + default: + break; + case 'c': + switch(s[13]) { + default: + break; + case 'i': + if (strcmp("n", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN; + break; + case 'l': + if (strcmp("en", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC; + } + } + } + break; + case 'i': + if (strcmp("nterleave", s + 11) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE; + break; + case 'm': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'x': + switch(s[13]) { + default: + break; + case 'b': + if (strcmp("ufsz", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE; + break; + case 's': + if (strcmp("ndfrag", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT; + } + } + } + } + } + } + } + } + } + } + break; + case 'a': + switch(s[4]) { + default: + break; + case 'a': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'p': + if (strcmp("ad", s + 7) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD; + } + } + } + break; + case 'i': + switch(s[4]) { + default: + break; + case 'v': + switch(s[5]) { + default: + break; + case 'f': + if (strcmp("ixed", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED; + break; + case 'g': + if (strcmp("en", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN; + break; + case 'i': + if (strcmp("nv", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV; + } + } + break; + case 't': + if (strcmp("ree", s + 4) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS; + } + break; + case 'y': + if (strcmp("pe", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_TYPE; + } + break; + case 'u': + switch(s[1]) { + default: + break; + case 'k': + if (strcmp("m", s + 2) == 0) + return PIDX_KDF_PARAM_UKM; + break; + case 'p': + if (strcmp("dated-iv", s + 2) == 0) + return PIDX_CIPHER_PARAM_UPDATED_IV; + break; + case 's': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'b': + if (strcmp("its", s + 5) == 0) + return PIDX_CIPHER_PARAM_USE_BITS; + break; + case 'c': + if (strcmp("ofactor-flag", s + 5) == 0) + return PIDX_PKEY_PARAM_USE_COFACTOR_FLAG; + break; + case 'k': + if (strcmp("eybits", s + 5) == 0) + return PIDX_KDF_PARAM_X942_USE_KEYBITS; + break; + case 'l': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_KBKDF_USE_L; + } + break; + case 's': + if (strcmp("eparator", s + 5) == 0) + return PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR; + } + break; + case '_': + switch(s[4]) { + default: + break; + case 'd': + if (strcmp("erivation_function", s + 5) == 0) + return PIDX_DRBG_PARAM_USE_DF; + break; + case 'e': + if (strcmp("tm", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM; + } + } + } + } + break; + case 'v': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'l': + switch(s[3]) { + default: + break; + case 'i': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_VALIDATE_G; + } + break; + case 'l': + if (strcmp("egacy", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY; + break; + case 'p': + if (strcmp("q", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_PQ; + } + } + } + } + } + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'r': + switch(s[3]) { + default: + break; + case 'i': + if (strcmp("fy-message", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE; + break; + case 's': + if (strcmp("ion", s + 4) == 0) + return PIDX_PROV_PARAM_VERSION; + } + } + } + break; + case 'x': + switch(s[1]) { + default: + break; + case '9': + switch(s[2]) { + default: + break; + case '4': + if (strcmp("2kdf-key-check", s + 3) == 0) + return PIDX_PROV_PARAM_X942KDF_KEY_CHECK; + break; + case '6': + switch(s[3]) { + default: + break; + case '3': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'f': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_KEY_CHECK; + } + } + } + } + } + } + } + break; + case 'c': + if (strcmp("ghash", s + 2) == 0) + return PIDX_KDF_PARAM_SSHKDF_XCGHASH; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_DIGEST_PARAM_XOFLEN; + break; + case '\0': + return PIDX_MAC_PARAM_XOF; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP; + } + break; + case 'q': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ; + } + break; + case 't': + if (strcmp("s_standard", s + 2) == 0) + return PIDX_CIPHER_PARAM_XTS_STANDARD; + } + } + return -1; +} + +/* End of TRIE */ diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/poly1305/poly1305-x86.S b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/poly1305/poly1305-x86.S index 96cf0c9fe941f6..a14ec5068dfebe 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/poly1305/poly1305-x86.S +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/poly1305/poly1305-x86.S @@ -1935,4 +1935,4 @@ Lconst_sse2: L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P .long 0 -.comm _OPENSSL_ia32cap_P,16,2 +.comm _OPENSSL_ia32cap_P,40,2 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/rc4/rc4-586.S b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/rc4/rc4-586.S index 38098085523f56..b4d7da8aabb1c9 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/rc4/rc4-586.S +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/rc4/rc4-586.S @@ -390,4 +390,4 @@ L019opts: L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P .long 0 -.comm _OPENSSL_ia32cap_P,16,2 +.comm _OPENSSL_ia32cap_P,40,2 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/sha/sha1-586.S b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/sha/sha1-586.S index feb96c11a57097..04a3637d51ab5d 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/sha/sha1-586.S +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/sha/sha1-586.S @@ -3982,4 +3982,4 @@ LK_XX_XX: L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P .long 0 -.comm _OPENSSL_ia32cap_P,16,2 +.comm _OPENSSL_ia32cap_P,40,2 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/sha/sha256-586.S b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/sha/sha256-586.S index e1dfe28d26e5bb..f79a6b6ce4c94b 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/sha/sha256-586.S +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/sha/sha256-586.S @@ -6786,4 +6786,4 @@ L018avx_bmi_00_47: L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P .long 0 -.comm _OPENSSL_ia32cap_P,16,2 +.comm _OPENSSL_ia32cap_P,40,2 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/sha/sha512-586.S b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/sha/sha512-586.S index f9eb6e28565e9e..6df53118ecafc8 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/sha/sha512-586.S +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/sha/sha512-586.S @@ -2832,4 +2832,4 @@ L001K512: L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P .long 0 -.comm _OPENSSL_ia32cap_P,16,2 +.comm _OPENSSL_ia32cap_P,40,2 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/x86cpuid.S b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/x86cpuid.S index 8e0719f379c608..d92f53d82dd920 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/x86cpuid.S +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/x86cpuid.S @@ -121,6 +121,24 @@ L002generic: xorl %ecx,%ecx .byte 0x0f,0xa2 movl %ebx,8(%edi) + movl %ecx,12(%edi) + movl %edx,16(%edi) + cmpl $1,%eax + jb L005no_extended_info + movl $7,%eax + movl $1,%ecx + .byte 0x0f,0xa2 + movl %eax,20(%edi) + movl %edx,24(%edi) + movl %ebx,28(%edi) + movl %ecx,32(%edi) + andl $524288,%edx + cmpl $0,%edx + je L005no_extended_info + movl $36,%eax + movl $0,%ecx + .byte 0x0f,0xa2 + movl %ebx,36(%edi) L005no_extended_info: btl $27,%ebp jnc L006clear_avx @@ -136,6 +154,7 @@ L008clear_xmm: andl $4278190079,%esi L006clear_avx: andl $4026525695,%ebp + andl $4286578687,20(%edi) andl $4294967263,8(%edi) L007done: movl %esi,%eax @@ -570,7 +589,7 @@ L036done: L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P .long 0 -.comm _OPENSSL_ia32cap_P,16,2 +.comm _OPENSSL_ia32cap_P,40,2 .mod_init_func .align 2 .long _OPENSSL_cpuid_setup diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/internal/param_names.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/internal/param_names.h new file mode 100644 index 00000000000000..0a0404a57e82b9 --- /dev/null +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/internal/param_names.h @@ -0,0 +1,469 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/internal/param_names.h.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +int ossl_param_find_pidx(const char *s); + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +#define NUM_PIDX 346 + +#define PIDX_ALG_PARAM_ALGORITHM_ID 0 +#define PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS 1 +#define PIDX_ALG_PARAM_CIPHER 2 +#define PIDX_ALG_PARAM_DIGEST 3 +#define PIDX_ALG_PARAM_ENGINE 4 +#define PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR 5 +#define PIDX_ALG_PARAM_MAC 6 +#define PIDX_ALG_PARAM_PROPERTIES 7 +#define PIDX_ASYM_CIPHER_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_ENGINE PIDX_PKEY_PARAM_ENGINE +#define PIDX_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +#define PIDX_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS 9 +#define PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL 10 +#define PIDX_ASYM_CIPHER_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_ASYM_CIPHER_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION 11 +#define PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION 12 +#define PIDX_CAPABILITY_TLS_GROUP_ALG 13 +#define PIDX_CAPABILITY_TLS_GROUP_ID 14 +#define PIDX_CAPABILITY_TLS_GROUP_IS_KEM 15 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_GROUP_NAME 20 +#define PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL 21 +#define PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS 22 +#define PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT 23 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME 24 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_OID 25 +#define PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME 26 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE 27 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID 28 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_SIGALG_NAME 29 +#define PIDX_CAPABILITY_TLS_SIGALG_OID 30 +#define PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS 31 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME 32 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_OID 33 +#define PIDX_CIPHER_PARAM_AEAD 34 +#define PIDX_CIPHER_PARAM_AEAD_IVLEN PIDX_CIPHER_PARAM_IVLEN +#define PIDX_CIPHER_PARAM_AEAD_IV_GENERATED 35 +#define PIDX_CIPHER_PARAM_AEAD_MAC_KEY 36 +#define PIDX_CIPHER_PARAM_AEAD_TAG 37 +#define PIDX_CIPHER_PARAM_AEAD_TAGLEN 38 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD 39 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD 40 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN 41 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED 42 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV 43 +#define PIDX_CIPHER_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD 44 +#define PIDX_CIPHER_PARAM_BLOCK_SIZE 45 +#define PIDX_CIPHER_PARAM_CTS 46 +#define PIDX_CIPHER_PARAM_CTS_MODE 47 +#define PIDX_CIPHER_PARAM_CUSTOM_IV 48 +#define PIDX_CIPHER_PARAM_DECRYPT_ONLY 49 +#define PIDX_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK 50 +#define PIDX_CIPHER_PARAM_HAS_RAND_KEY 51 +#define PIDX_CIPHER_PARAM_IV 52 +#define PIDX_CIPHER_PARAM_IVLEN 53 +#define PIDX_CIPHER_PARAM_KEYLEN 54 +#define PIDX_CIPHER_PARAM_MODE 55 +#define PIDX_CIPHER_PARAM_NUM 56 +#define PIDX_CIPHER_PARAM_PADDING 57 +#define PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG 58 +#define PIDX_CIPHER_PARAM_RANDOM_KEY 59 +#define PIDX_CIPHER_PARAM_RC2_KEYBITS 60 +#define PIDX_CIPHER_PARAM_ROUNDS 61 +#define PIDX_CIPHER_PARAM_SPEED 62 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK 63 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD 64 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN 65 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC 66 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN 67 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN 68 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE 69 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE 70 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT 71 +#define PIDX_CIPHER_PARAM_TLS_MAC 72 +#define PIDX_CIPHER_PARAM_TLS_MAC_SIZE 73 +#define PIDX_CIPHER_PARAM_TLS_VERSION 74 +#define PIDX_CIPHER_PARAM_UPDATED_IV 75 +#define PIDX_CIPHER_PARAM_USE_BITS 76 +#define PIDX_CIPHER_PARAM_XTS_STANDARD 77 +#define PIDX_DECODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DIGEST_PARAM_ALGID_ABSENT 78 +#define PIDX_DIGEST_PARAM_BLOCK_SIZE 45 +#define PIDX_DIGEST_PARAM_MICALG 79 +#define PIDX_DIGEST_PARAM_PAD_TYPE 80 +#define PIDX_DIGEST_PARAM_SIZE 81 +#define PIDX_DIGEST_PARAM_SSL3_MS 82 +#define PIDX_DIGEST_PARAM_XOF 83 +#define PIDX_DIGEST_PARAM_XOFLEN 84 +#define PIDX_DRBG_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_DRBG_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_DRBG_PARAM_ENTROPY_REQUIRED 85 +#define PIDX_DRBG_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_DRBG_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_DRBG_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_DRBG_PARAM_MAX_ADINLEN 86 +#define PIDX_DRBG_PARAM_MAX_ENTROPYLEN 87 +#define PIDX_DRBG_PARAM_MAX_LENGTH 88 +#define PIDX_DRBG_PARAM_MAX_NONCELEN 89 +#define PIDX_DRBG_PARAM_MAX_PERSLEN 90 +#define PIDX_DRBG_PARAM_MIN_ENTROPYLEN 91 +#define PIDX_DRBG_PARAM_MIN_LENGTH 92 +#define PIDX_DRBG_PARAM_MIN_NONCELEN 93 +#define PIDX_DRBG_PARAM_PREDICTION_RESISTANCE 94 +#define PIDX_DRBG_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DRBG_PARAM_RANDOM_DATA 95 +#define PIDX_DRBG_PARAM_RESEED_COUNTER 96 +#define PIDX_DRBG_PARAM_RESEED_REQUESTS 97 +#define PIDX_DRBG_PARAM_RESEED_TIME 98 +#define PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL 99 +#define PIDX_DRBG_PARAM_SIZE 81 +#define PIDX_DRBG_PARAM_USE_DF 100 +#define PIDX_ENCODER_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_ENCODER_PARAM_ENCRYPT_LEVEL 101 +#define PIDX_ENCODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_ENCODER_PARAM_SAVE_PARAMETERS 102 +#define PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE 103 +#define PIDX_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_EXCHANGE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST 104 +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS 105 +#define PIDX_EXCHANGE_PARAM_KDF_OUTLEN 106 +#define PIDX_EXCHANGE_PARAM_KDF_TYPE 107 +#define PIDX_EXCHANGE_PARAM_KDF_UKM 108 +#define PIDX_EXCHANGE_PARAM_PAD 109 +#define PIDX_GEN_PARAM_ITERATION 110 +#define PIDX_GEN_PARAM_POTENTIAL 111 +#define PIDX_KDF_PARAM_ARGON2_AD 112 +#define PIDX_KDF_PARAM_ARGON2_LANES 113 +#define PIDX_KDF_PARAM_ARGON2_MEMCOST 114 +#define PIDX_KDF_PARAM_ARGON2_VERSION 115 +#define PIDX_KDF_PARAM_CEK_ALG 116 +#define PIDX_KDF_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_KDF_PARAM_CONSTANT 117 +#define PIDX_KDF_PARAM_DATA 118 +#define PIDX_KDF_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_KDF_PARAM_EARLY_CLEAN 119 +#define PIDX_KDF_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KDF_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_KDF_PARAM_FIPS_EMS_CHECK 120 +#define PIDX_KDF_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KDF_PARAM_HMACDRBG_ENTROPY 121 +#define PIDX_KDF_PARAM_HMACDRBG_NONCE 122 +#define PIDX_KDF_PARAM_INFO 123 +#define PIDX_KDF_PARAM_ITER 124 +#define PIDX_KDF_PARAM_KBKDF_R 125 +#define PIDX_KDF_PARAM_KBKDF_USE_L 126 +#define PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR 127 +#define PIDX_KDF_PARAM_KEY 128 +#define PIDX_KDF_PARAM_LABEL 129 +#define PIDX_KDF_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_KDF_PARAM_MAC_SIZE 130 +#define PIDX_KDF_PARAM_MODE 55 +#define PIDX_KDF_PARAM_PASSWORD 131 +#define PIDX_KDF_PARAM_PKCS12_ID 132 +#define PIDX_KDF_PARAM_PKCS5 133 +#define PIDX_KDF_PARAM_PREFIX 134 +#define PIDX_KDF_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_KDF_PARAM_SALT 135 +#define PIDX_KDF_PARAM_SCRYPT_MAXMEM 136 +#define PIDX_KDF_PARAM_SCRYPT_N 137 +#define PIDX_KDF_PARAM_SCRYPT_P 138 +#define PIDX_KDF_PARAM_SCRYPT_R 125 +#define PIDX_KDF_PARAM_SECRET 139 +#define PIDX_KDF_PARAM_SEED 140 +#define PIDX_KDF_PARAM_SIZE 81 +#define PIDX_KDF_PARAM_SSHKDF_SESSION_ID 141 +#define PIDX_KDF_PARAM_SSHKDF_TYPE 142 +#define PIDX_KDF_PARAM_SSHKDF_XCGHASH 143 +#define PIDX_KDF_PARAM_THREADS 144 +#define PIDX_KDF_PARAM_UKM 145 +#define PIDX_KDF_PARAM_X942_ACVPINFO 146 +#define PIDX_KDF_PARAM_X942_PARTYUINFO 147 +#define PIDX_KDF_PARAM_X942_PARTYVINFO 148 +#define PIDX_KDF_PARAM_X942_SUPP_PRIVINFO 149 +#define PIDX_KDF_PARAM_X942_SUPP_PUBINFO 150 +#define PIDX_KDF_PARAM_X942_USE_KEYBITS 151 +#define PIDX_KEM_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KEM_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KEM_PARAM_IKME 152 +#define PIDX_KEM_PARAM_OPERATION 153 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING 154 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING 155 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA 156 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN 157 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE 55 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS 158 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD 159 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC 160 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE 161 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM 162 +#define PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN 163 +#define PIDX_MAC_PARAM_BLOCK_SIZE 164 +#define PIDX_MAC_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_MAC_PARAM_CUSTOM 165 +#define PIDX_MAC_PARAM_C_ROUNDS 166 +#define PIDX_MAC_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_MAC_PARAM_DIGEST_NOINIT 167 +#define PIDX_MAC_PARAM_DIGEST_ONESHOT 168 +#define PIDX_MAC_PARAM_D_ROUNDS 169 +#define PIDX_MAC_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_MAC_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_MAC_PARAM_FIPS_NO_SHORT_MAC PIDX_PROV_PARAM_NO_SHORT_MAC +#define PIDX_MAC_PARAM_IV 52 +#define PIDX_MAC_PARAM_KEY 128 +#define PIDX_MAC_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_MAC_PARAM_SALT 135 +#define PIDX_MAC_PARAM_SIZE 81 +#define PIDX_MAC_PARAM_TLS_DATA_SIZE 170 +#define PIDX_MAC_PARAM_XOF 83 +#define PIDX_OBJECT_PARAM_DATA 118 +#define PIDX_OBJECT_PARAM_DATA_STRUCTURE 171 +#define PIDX_OBJECT_PARAM_DATA_TYPE 172 +#define PIDX_OBJECT_PARAM_DESC 173 +#define PIDX_OBJECT_PARAM_INPUT_TYPE 174 +#define PIDX_OBJECT_PARAM_REFERENCE 175 +#define PIDX_OBJECT_PARAM_TYPE 142 +#define PIDX_PASSPHRASE_PARAM_INFO 123 +#define PIDX_PKEY_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_PKEY_PARAM_BITS 176 +#define PIDX_PKEY_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_PKEY_PARAM_DEFAULT_DIGEST 177 +#define PIDX_PKEY_PARAM_DHKEM_IKM 178 +#define PIDX_PKEY_PARAM_DH_GENERATOR 179 +#define PIDX_PKEY_PARAM_DH_PRIV_LEN 180 +#define PIDX_PKEY_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_PKEY_PARAM_DIGEST_SIZE 181 +#define PIDX_PKEY_PARAM_DIST_ID 182 +#define PIDX_PKEY_PARAM_EC_A 183 +#define PIDX_PKEY_PARAM_EC_B 184 +#define PIDX_PKEY_PARAM_EC_CHAR2_M 185 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K1 186 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K2 187 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K3 188 +#define PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS 189 +#define PIDX_PKEY_PARAM_EC_CHAR2_TYPE 190 +#define PIDX_PKEY_PARAM_EC_COFACTOR 191 +#define PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS 192 +#define PIDX_PKEY_PARAM_EC_ENCODING 193 +#define PIDX_PKEY_PARAM_EC_FIELD_TYPE 194 +#define PIDX_PKEY_PARAM_EC_GENERATOR 195 +#define PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE 196 +#define PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC 197 +#define PIDX_PKEY_PARAM_EC_ORDER 198 +#define PIDX_PKEY_PARAM_EC_P 138 +#define PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT 199 +#define PIDX_PKEY_PARAM_EC_PUB_X 200 +#define PIDX_PKEY_PARAM_EC_PUB_Y 201 +#define PIDX_PKEY_PARAM_EC_SEED 140 +#define PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY 202 +#define PIDX_PKEY_PARAM_ENGINE PIDX_ALG_PARAM_ENGINE +#define PIDX_PKEY_PARAM_FFC_COFACTOR 203 +#define PIDX_PKEY_PARAM_FFC_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_FFC_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_FFC_G 204 +#define PIDX_PKEY_PARAM_FFC_GINDEX 205 +#define PIDX_PKEY_PARAM_FFC_H 206 +#define PIDX_PKEY_PARAM_FFC_P 138 +#define PIDX_PKEY_PARAM_FFC_PBITS 207 +#define PIDX_PKEY_PARAM_FFC_PCOUNTER 208 +#define PIDX_PKEY_PARAM_FFC_Q 209 +#define PIDX_PKEY_PARAM_FFC_QBITS 210 +#define PIDX_PKEY_PARAM_FFC_SEED 140 +#define PIDX_PKEY_PARAM_FFC_TYPE 142 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_G 211 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY 212 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_PQ 213 +#define PIDX_PKEY_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK 214 +#define PIDX_PKEY_PARAM_FIPS_KEY_CHECK 215 +#define PIDX_PKEY_PARAM_FIPS_SIGN_CHECK 216 +#define PIDX_PKEY_PARAM_GROUP_NAME 217 +#define PIDX_PKEY_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_PKEY_PARAM_MANDATORY_DIGEST 218 +#define PIDX_PKEY_PARAM_MASKGENFUNC 219 +#define PIDX_PKEY_PARAM_MAX_SIZE 220 +#define PIDX_PKEY_PARAM_MGF1_DIGEST 221 +#define PIDX_PKEY_PARAM_MGF1_PROPERTIES 222 +#define PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS 223 +#define PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS 224 +#define PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED 225 +#define PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED 226 +#define PIDX_PKEY_PARAM_ML_DSA_SEED 140 +#define PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE 227 +#define PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS 228 +#define PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS 229 +#define PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED 230 +#define PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED 231 +#define PIDX_PKEY_PARAM_ML_KEM_SEED 140 +#define PIDX_PKEY_PARAM_PAD_MODE 232 +#define PIDX_PKEY_PARAM_PRIV_KEY 233 +#define PIDX_PKEY_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_PUB_KEY 234 +#define PIDX_PKEY_PARAM_RSA_BITS PIDX_PKEY_PARAM_BITS +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT 235 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT1 236 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT2 237 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT3 238 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT4 239 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT5 240 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT6 241 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT7 242 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT8 243 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT9 244 +#define PIDX_PKEY_PARAM_RSA_D 245 +#define PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ 246 +#define PIDX_PKEY_PARAM_RSA_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_RSA_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_RSA_E 247 +#define PIDX_PKEY_PARAM_RSA_EXPONENT 248 +#define PIDX_PKEY_PARAM_RSA_EXPONENT1 249 +#define PIDX_PKEY_PARAM_RSA_EXPONENT10 250 +#define PIDX_PKEY_PARAM_RSA_EXPONENT2 251 +#define PIDX_PKEY_PARAM_RSA_EXPONENT3 252 +#define PIDX_PKEY_PARAM_RSA_EXPONENT4 253 +#define PIDX_PKEY_PARAM_RSA_EXPONENT5 254 +#define PIDX_PKEY_PARAM_RSA_EXPONENT6 255 +#define PIDX_PKEY_PARAM_RSA_EXPONENT7 256 +#define PIDX_PKEY_PARAM_RSA_EXPONENT8 257 +#define PIDX_PKEY_PARAM_RSA_EXPONENT9 258 +#define PIDX_PKEY_PARAM_RSA_FACTOR 259 +#define PIDX_PKEY_PARAM_RSA_FACTOR1 260 +#define PIDX_PKEY_PARAM_RSA_FACTOR10 261 +#define PIDX_PKEY_PARAM_RSA_FACTOR2 262 +#define PIDX_PKEY_PARAM_RSA_FACTOR3 263 +#define PIDX_PKEY_PARAM_RSA_FACTOR4 264 +#define PIDX_PKEY_PARAM_RSA_FACTOR5 265 +#define PIDX_PKEY_PARAM_RSA_FACTOR6 266 +#define PIDX_PKEY_PARAM_RSA_FACTOR7 267 +#define PIDX_PKEY_PARAM_RSA_FACTOR8 268 +#define PIDX_PKEY_PARAM_RSA_FACTOR9 269 +#define PIDX_PKEY_PARAM_RSA_MASKGENFUNC PIDX_PKEY_PARAM_MASKGENFUNC +#define PIDX_PKEY_PARAM_RSA_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_PKEY_PARAM_RSA_N 137 +#define PIDX_PKEY_PARAM_RSA_PRIMES 270 +#define PIDX_PKEY_PARAM_RSA_PSS_SALTLEN 271 +#define PIDX_PKEY_PARAM_RSA_TEST_P1 272 +#define PIDX_PKEY_PARAM_RSA_TEST_P2 273 +#define PIDX_PKEY_PARAM_RSA_TEST_Q1 274 +#define PIDX_PKEY_PARAM_RSA_TEST_Q2 275 +#define PIDX_PKEY_PARAM_RSA_TEST_XP 276 +#define PIDX_PKEY_PARAM_RSA_TEST_XP1 277 +#define PIDX_PKEY_PARAM_RSA_TEST_XP2 278 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ 279 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ1 280 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ2 281 +#define PIDX_PKEY_PARAM_SECURITY_BITS 282 +#define PIDX_PKEY_PARAM_SLH_DSA_SEED 140 +#define PIDX_PKEY_PARAM_USE_COFACTOR_ECDH PIDX_PKEY_PARAM_USE_COFACTOR_FLAG +#define PIDX_PKEY_PARAM_USE_COFACTOR_FLAG 283 +#define PIDX_PROV_PARAM_BUILDINFO 284 +#define PIDX_PROV_PARAM_CORE_MODULE_FILENAME 285 +#define PIDX_PROV_PARAM_CORE_PROV_NAME 286 +#define PIDX_PROV_PARAM_CORE_VERSION 287 +#define PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST 288 +#define PIDX_PROV_PARAM_DSA_SIGN_DISABLED 289 +#define PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK 290 +#define PIDX_PROV_PARAM_HKDF_DIGEST_CHECK 291 +#define PIDX_PROV_PARAM_HKDF_KEY_CHECK 292 +#define PIDX_PROV_PARAM_HMAC_KEY_CHECK 293 +#define PIDX_PROV_PARAM_KBKDF_KEY_CHECK 294 +#define PIDX_PROV_PARAM_KMAC_KEY_CHECK 295 +#define PIDX_PROV_PARAM_NAME 296 +#define PIDX_PROV_PARAM_NO_SHORT_MAC 297 +#define PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK 298 +#define PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED 299 +#define PIDX_PROV_PARAM_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED 301 +#define PIDX_PROV_PARAM_SECURITY_CHECKS 302 +#define PIDX_PROV_PARAM_SELF_TEST_DESC 303 +#define PIDX_PROV_PARAM_SELF_TEST_PHASE 304 +#define PIDX_PROV_PARAM_SELF_TEST_TYPE 305 +#define PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK 306 +#define PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK 307 +#define PIDX_PROV_PARAM_SSHKDF_KEY_CHECK 308 +#define PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK 309 +#define PIDX_PROV_PARAM_SSKDF_KEY_CHECK 310 +#define PIDX_PROV_PARAM_STATUS 311 +#define PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED 312 +#define PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK 313 +#define PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK 314 +#define PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK 315 +#define PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK 316 +#define PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK 317 +#define PIDX_PROV_PARAM_VERSION 115 +#define PIDX_PROV_PARAM_X942KDF_KEY_CHECK 318 +#define PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK 319 +#define PIDX_PROV_PARAM_X963KDF_KEY_CHECK 320 +#define PIDX_RAND_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_RAND_PARAM_GENERATE 321 +#define PIDX_RAND_PARAM_MAX_REQUEST 322 +#define PIDX_RAND_PARAM_STATE 323 +#define PIDX_RAND_PARAM_STRENGTH 324 +#define PIDX_RAND_PARAM_TEST_ENTROPY 325 +#define PIDX_RAND_PARAM_TEST_NONCE 326 +#define PIDX_SIGNATURE_PARAM_ADD_RANDOM 327 +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID PIDX_PKEY_PARAM_ALGORITHM_ID +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_SIGNATURE_PARAM_CONTEXT_STRING 328 +#define PIDX_SIGNATURE_PARAM_DETERMINISTIC 329 +#define PIDX_SIGNATURE_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_SIGNATURE_PARAM_DIGEST_SIZE PIDX_PKEY_PARAM_DIGEST_SIZE +#define PIDX_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_SIGNATURE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_CHECK PIDX_PKEY_PARAM_FIPS_SIGN_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK 330 +#define PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE 331 +#define PIDX_SIGNATURE_PARAM_INSTANCE 332 +#define PIDX_SIGNATURE_PARAM_KAT 333 +#define PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING 334 +#define PIDX_SIGNATURE_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_SIGNATURE_PARAM_MGF1_PROPERTIES PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_SIGNATURE_PARAM_MU 335 +#define PIDX_SIGNATURE_PARAM_NONCE_TYPE 336 +#define PIDX_SIGNATURE_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_SIGNATURE_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_SIGNATURE_PARAM_PSS_SALTLEN 271 +#define PIDX_SIGNATURE_PARAM_SIGNATURE 337 +#define PIDX_SIGNATURE_PARAM_TEST_ENTROPY 338 +#define PIDX_SKEY_PARAM_KEY_LENGTH 339 +#define PIDX_SKEY_PARAM_RAW_BYTES 340 +#define PIDX_STORE_PARAM_ALIAS 341 +#define PIDX_STORE_PARAM_DIGEST 3 +#define PIDX_STORE_PARAM_EXPECT 342 +#define PIDX_STORE_PARAM_FINGERPRINT 343 +#define PIDX_STORE_PARAM_INPUT_TYPE 174 +#define PIDX_STORE_PARAM_ISSUER 296 +#define PIDX_STORE_PARAM_PROPERTIES 7 +#define PIDX_STORE_PARAM_SERIAL 344 +#define PIDX_STORE_PARAM_SUBJECT 345 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/asn1.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/asn1.h index 21ff58e3d803d4..15e9e44674b0f3 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/asn1.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/asn1.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/asn1.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -21,6 +21,9 @@ # define HEADER_ASN1_H # endif +# ifndef OPENSSL_NO_STDIO +# include +# endif # include # include # include @@ -50,14 +53,14 @@ extern "C" { # define V_ASN1_PRIMITIVE_TAG 0x1f # define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG -# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ -# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ -# define V_ASN1_ANY -4/* used in ASN1 template code */ +# define V_ASN1_APP_CHOOSE -2 /* let the recipient choose */ +# define V_ASN1_OTHER -3 /* used in ASN1_TYPE */ +# define V_ASN1_ANY -4 /* used in ASN1 template code */ # define V_ASN1_UNDEF -1 /* ASN.1 tag values */ # define V_ASN1_EOC 0 -# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_BOOLEAN 1 # define V_ASN1_INTEGER 2 # define V_ASN1_BIT_STRING 3 # define V_ASN1_OCTET_STRING 4 @@ -70,19 +73,19 @@ extern "C" { # define V_ASN1_UTF8STRING 12 # define V_ASN1_SEQUENCE 16 # define V_ASN1_SET 17 -# define V_ASN1_NUMERICSTRING 18 /**/ +# define V_ASN1_NUMERICSTRING 18 # define V_ASN1_PRINTABLESTRING 19 # define V_ASN1_T61STRING 20 -# define V_ASN1_TELETEXSTRING 20/* alias */ -# define V_ASN1_VIDEOTEXSTRING 21 /**/ +# define V_ASN1_TELETEXSTRING 20 /* alias */ +# define V_ASN1_VIDEOTEXSTRING 21 # define V_ASN1_IA5STRING 22 # define V_ASN1_UTCTIME 23 -# define V_ASN1_GENERALIZEDTIME 24 /**/ -# define V_ASN1_GRAPHICSTRING 25 /**/ -# define V_ASN1_ISO64STRING 26 /**/ -# define V_ASN1_VISIBLESTRING 26/* alias */ -# define V_ASN1_GENERALSTRING 27 /**/ -# define V_ASN1_UNIVERSALSTRING 28 /**/ +# define V_ASN1_GENERALIZEDTIME 24 +# define V_ASN1_GRAPHICSTRING 25 +# define V_ASN1_ISO64STRING 26 +# define V_ASN1_VISIBLESTRING 26 /* alias */ +# define V_ASN1_GENERALSTRING 27 +# define V_ASN1_UNIVERSALSTRING 28 # define V_ASN1_BMPSTRING 30 /* @@ -155,7 +158,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) -# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +# define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */ /* * This indicates that the ASN1_STRING is not a real value but just a place * holder for the location where indefinite length constructed data should be @@ -275,7 +278,7 @@ typedef struct ASN1_TLC_st ASN1_TLC; /* This is just an opaque pointer */ typedef struct ASN1_VALUE_st ASN1_VALUE; -/* Declare ASN1 functions: the implement macro in in asn1t.h */ +/* Declare ASN1 functions: the implement macro is in asn1t.h */ /* * The mysterious 'extern' that's passed to some macros is innocuous, @@ -368,6 +371,7 @@ typedef struct ASN1_VALUE_st ASN1_VALUE; typedef void *d2i_of_void(void **, const unsigned char **, long); typedef int i2d_of_void(const void *, unsigned char **); +typedef int OSSL_i2d_of_void_ctx(const void *, unsigned char **, void *vctx); /*- * The following macros and typedefs allow an ASN1_ITEM @@ -996,6 +1000,8 @@ int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, unsigned char *data, int max_len); void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/bio.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/bio.h index f9aa74731c833c..e02f867beb0ec0 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/bio.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/bio.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/bio.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -67,8 +67,13 @@ extern "C" { # define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) # endif # define BIO_TYPE_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_PAIR (26|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_MEM (27|BIO_TYPE_SOURCE_SINK) +/* Custom type starting index returned by BIO_get_new_index() */ #define BIO_TYPE_START 128 +/* Custom type maximum index that can be returned by BIO_get_new_index() */ +#define BIO_TYPE_MASK 0xFF /* * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. @@ -171,6 +176,31 @@ extern "C" { # define BIO_CTRL_SET_INDENT 80 # define BIO_CTRL_GET_INDENT 81 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +# define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +# define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +# define BIO_CTRL_DGRAM_GET_CAPS 86 +# define BIO_CTRL_DGRAM_SET_CAPS 87 +# define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +# define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +# define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +# define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +# define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 +# define BIO_CTRL_DGRAM_SET0_LOCAL_ADDR 94 + +# define BIO_DGRAM_CAP_NONE 0U +# define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +# define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +# define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +# define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + # ifndef OPENSSL_NO_KTLS # define BIO_get_ktls_send(b) \ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) @@ -208,7 +238,7 @@ extern "C" { # define BIO_FLAGS_NONCLEAR_RST 0x400 # define BIO_FLAGS_IN_EOF 0x800 -/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */ +/* the BIO FLAGS values 0x1000 to 0x8000 are reserved for internal KTLS flags */ typedef union bio_addr_st BIO_ADDR; typedef struct bio_addrinfo_st BIO_ADDRINFO; @@ -256,12 +286,14 @@ void BIO_clear_flags(BIO *b, int flags); # define BIO_RR_ACCEPT 0x03 /* These are passed by the BIO callback */ -# define BIO_CB_FREE 0x01 -# define BIO_CB_READ 0x02 -# define BIO_CB_WRITE 0x03 -# define BIO_CB_PUTS 0x04 -# define BIO_CB_GETS 0x05 -# define BIO_CB_CTRL 0x06 +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 +# define BIO_CB_RECVMMSG 0x07 +# define BIO_CB_SENDMMSG 0x08 /* * The callback is called before and after the underling operation, The @@ -362,6 +394,36 @@ struct bio_dgram_sctp_prinfo { }; # endif +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_TYPE_SSL 2 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + SSL *ssl; + } value; +} BIO_POLL_DESCRIPTOR; + /* * #define BIO_CONN_get_param_hostname BIO_ctrl */ @@ -428,10 +490,17 @@ struct bio_dgram_sctp_prinfo { # define BIO_C_SET_CONNECT_MODE 155 +# define BIO_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +# define BIO_C_SET_SOCK_TYPE 157 +# define BIO_C_GET_SOCK_TYPE 158 +# define BIO_C_GET_DGRAM_BIO 159 + # define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) # define BIO_get_app_data(s) BIO_get_ex_data(s,0) -# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_tfo(b,n) BIO_ctrl(b,BIO_C_SET_TFO,(n),NULL) # ifndef OPENSSL_NO_SOCK /* IP families we support, for BIO_s_connect() and BIO_s_accept() */ @@ -452,7 +521,11 @@ struct bio_dgram_sctp_prinfo { # define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) # define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) # define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_get_conn_mode(b) BIO_ctrl(b,BIO_C_GET_CONNECT,4,NULL) # define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) +# define BIO_set_sock_type(b,t) BIO_ctrl(b,BIO_C_SET_SOCK_TYPE,(t),NULL) +# define BIO_get_sock_type(b) BIO_ctrl(b,BIO_C_GET_SOCK_TYPE,0,NULL) +# define BIO_get0_dgram_bio(b, p) BIO_ctrl(b,BIO_C_GET_DGRAM_BIO,0,(void *)(BIO **)(p)) /* BIO_s_accept() */ # define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ @@ -469,6 +542,7 @@ struct bio_dgram_sctp_prinfo { (char *)(bio)) # define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) # define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) +# define BIO_set_tfo_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,5,(n)?(void *)"a":NULL) /* Aliases kept for backward compatibility */ # define BIO_BIND_NORMAL 0 @@ -596,8 +670,32 @@ int BIO_ctrl_reset_read_request(BIO *b); (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) # define BIO_dgram_set_peer(b,peer) \ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_detect_peer_addr(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) # define BIO_dgram_get_mtu_overhead(b) \ (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +# define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +# define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +# define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +# define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +# define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +# define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +# define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +# define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +# define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +# define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) +# define BIO_dgram_set0_local_addr(b, addr) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET0_LOCAL_ADDR, 0, (addr)) /* ctrl macros for BIO_f_prefix */ # define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) @@ -640,10 +738,18 @@ void BIO_vfree(BIO *a); int BIO_up_ref(BIO *a); int BIO_read(BIO *b, void *data, int dlen); int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); int BIO_gets(BIO *bp, char *buf, int size); int BIO_get_line(BIO *bio, char *buf, int size); int BIO_write(BIO *b, const void *data, int dlen); int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); int BIO_puts(BIO *bp, const char *buf); int BIO_indent(BIO *b, int indent, int max); long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); @@ -667,6 +773,9 @@ int BIO_nwrite0(BIO *bio, char **buf); int BIO_nwrite(BIO *bio, char **buf, int num); const BIO_METHOD *BIO_s_mem(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +# endif const BIO_METHOD *BIO_s_secmem(void); BIO *BIO_new_mem_buf(const void *buf, int len); # ifndef OPENSSL_NO_SOCK @@ -686,6 +795,7 @@ const BIO_METHOD *BIO_f_nbio_test(void); const BIO_METHOD *BIO_f_prefix(void); const BIO_METHOD *BIO_s_core(void); # ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_pair(void); const BIO_METHOD *BIO_s_datagram(void); int BIO_dgram_non_fatal_error(int error); BIO *BIO_new_dgram(int fd, int close_flag); @@ -704,6 +814,7 @@ int BIO_dgram_sctp_msg_waiting(BIO *b); # ifndef OPENSSL_NO_SOCK int BIO_sock_should_retry(int i); int BIO_sock_non_fatal_error(int error); +int BIO_err_is_non_fatal(unsigned int errcode); int BIO_socket_wait(int fd, int for_read, time_t max_time); # endif int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); @@ -726,6 +837,8 @@ int BIO_hex_string(BIO *out, int indent, int width, const void *data, # ifndef OPENSSL_NO_SOCK BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, const void *where, size_t wherelen, unsigned short port); void BIO_ADDR_free(BIO_ADDR *); @@ -788,6 +901,7 @@ int BIO_sock_info(int sock, # define BIO_SOCK_KEEPALIVE 0x04 # define BIO_SOCK_NONBLOCK 0x08 # define BIO_SOCK_NODELAY 0x10 +# define BIO_SOCK_TFO 0x20 int BIO_socket(int domain, int socktype, int protocol, int options); int BIO_connect(int sock, const BIO_ADDR *addr, int options); @@ -805,6 +919,11 @@ BIO *BIO_new_fd(int fd, int close_flag); int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, BIO **bio2, size_t writebuf2); +# ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +# endif + /* * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default @@ -849,38 +968,54 @@ ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); BIO_METHOD *BIO_meth_new(int type, const char *name); void BIO_meth_free(BIO_METHOD *biom); -int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int); -int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t, - size_t *); int BIO_meth_set_write(BIO_METHOD *biom, int (*write) (BIO *, const char *, int)); int BIO_meth_set_write_ex(BIO_METHOD *biom, int (*bwrite) (BIO *, const char *, size_t, size_t *)); -int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); -int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); +int BIO_meth_set_sendmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_read(BIO_METHOD *biom, int (*read) (BIO *, char *, int)); int BIO_meth_set_read_ex(BIO_METHOD *biom, int (*bread) (BIO *, char *, size_t, size_t *)); -int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +int BIO_meth_set_recvmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); int BIO_meth_set_puts(BIO_METHOD *biom, int (*puts) (BIO *, const char *)); -int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); int BIO_meth_set_gets(BIO_METHOD *biom, int (*ossl_gets) (BIO *, char *, int)); -long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); int BIO_meth_set_ctrl(BIO_METHOD *biom, long (*ctrl) (BIO *, int, long, void *)); -int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); -int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); -long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) - (BIO *, int, BIO_info_cb *); int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, long (*callback_ctrl) (BIO *, int, BIO_info_cb *)); - +# ifndef OPENSSL_NO_DEPRECATED_3_5 +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, + int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, + long, void *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) (BIO *, int, + BIO_info_cb *); +# endif # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/cmp.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/cmp.h index 49825570d8c303..05aed3029d594c 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/cmp.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -35,7 +35,9 @@ extern "C" { # endif -# define OSSL_CMP_PVNO 2 +# define OSSL_CMP_PVNO_2 2 +# define OSSL_CMP_PVNO_3 3 +# define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ /*- * PKIFailureInfo ::= BIT STRING { @@ -137,7 +139,6 @@ extern "C" { # if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX # error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int # endif - typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) @@ -203,8 +204,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_PKISTATUS_revocationWarning 4 # define OSSL_CMP_PKISTATUS_revocationNotification 5 # define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 - typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; + DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) # define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 @@ -274,6 +275,46 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) #define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) #define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) + +typedef struct ossl_cmp_crlstatus_st OSSL_CMP_CRLSTATUS; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS) +#define sk_OSSL_CMP_CRLSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_value(sk, idx) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CRLSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CRLSTATUS_new_null() ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CRLSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CRLSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CRLSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_delete(sk, i) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CRLSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_pop(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_shift(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CRLSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CRLSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CRLSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CRLSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CRLSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) + + +typedef OSSL_CRMF_ATTRIBUTETYPEANDVALUE OSSL_CMP_ATAV; +# define OSSL_CMP_ATAV_free OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free +typedef STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) OSSL_CMP_ATAVS; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_ATAVS) +# define stack_st_OSSL_CMP_ATAV stack_st_OSSL_CRMF_ATTRIBUTETYPEANDVALUE +# define sk_OSSL_CMP_ATAV_num sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num +# define sk_OSSL_CMP_ATAV_value sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value +# define sk_OSSL_CMP_ATAV_push sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push +# define sk_OSSL_CMP_ATAV_pop_free sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free + typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT; typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI; DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI) @@ -375,21 +416,75 @@ void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type, ASN1_TYPE *value); ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav); ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); -int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p, +int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **sk_p, OSSL_CMP_ITAV *itav); void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new0_certProfile(STACK_OF(ASN1_UTF8STRING) + *certProfile); +int OSSL_CMP_ITAV_get0_certProfile(const OSSL_CMP_ITAV *itav, + STACK_OF(ASN1_UTF8STRING) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_create(const X509_CRL *crl, + const X509 *cert, int only_DN); +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_new1(const DIST_POINT_NAME *dpn, + const GENERAL_NAMES *issuer, + const ASN1_TIME *thisUpdate); +int OSSL_CMP_CRLSTATUS_get0(const OSSL_CMP_CRLSTATUS *crlstatus, + DIST_POINT_NAME **dpn, GENERAL_NAMES **issuer, + ASN1_TIME **thisUpdate); +void OSSL_CMP_CRLSTATUS_free(OSSL_CMP_CRLSTATUS *crlstatus); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_crlStatusList(STACK_OF(OSSL_CMP_CRLSTATUS) *crlStatusList); +int OSSL_CMP_ITAV_get0_crlStatusList(const OSSL_CMP_ITAV *itav, + STACK_OF(OSSL_CMP_CRLSTATUS) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_crls(const X509_CRL *crls); +int OSSL_CMP_ITAV_get0_crls(const OSSL_CMP_ITAV *it, STACK_OF(X509_CRL) **out); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_certReqTemplate(OSSL_CRMF_CERTTEMPLATE *certTemplate, + OSSL_CMP_ATAVS *keySpec); +int OSSL_CMP_ITAV_get1_certReqTemplate(const OSSL_CMP_ITAV *itav, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +OSSL_CMP_ATAV *OSSL_CMP_ATAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ATAV_set0(OSSL_CMP_ATAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ATAV_get0_type(const OSSL_CMP_ATAV *itav); +ASN1_TYPE *OSSL_CMP_ATAV_get0_value(const OSSL_CMP_ATAV *itav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_algId(const X509_ALGOR *alg); +X509_ALGOR *OSSL_CMP_ATAV_get0_algId(const OSSL_CMP_ATAV *atav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_rsaKeyLen(int len); +int OSSL_CMP_ATAV_get_rsaKeyLen(const OSSL_CMP_ATAV *atav); +int OSSL_CMP_ATAV_push1(OSSL_CMP_ATAVS **sk_p, const OSSL_CMP_ATAV *atav); + void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); /* from cmp_ctx.c */ OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const OSSL_CMP_CTX *ctx); /* CMP general options: */ # define OSSL_CMP_OPT_LOG_VERBOSITY 0 /* CMP transfer options: */ -# define OSSL_CMP_OPT_KEEP_ALIVE 10 -# define OSSL_CMP_OPT_MSG_TIMEOUT 11 +# define OSSL_CMP_OPT_KEEP_ALIVE 10 +# define OSSL_CMP_OPT_MSG_TIMEOUT 11 # define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 +# define OSSL_CMP_OPT_USE_TLS 13 /* CMP request options: */ # define OSSL_CMP_OPT_VALIDITY_DAYS 20 # define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 @@ -407,6 +502,7 @@ int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); # define OSSL_CMP_OPT_DIGEST_ALGNID 34 # define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35 # define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36 +# define OSSL_CMP_OPT_NO_CACHE_EXTRACERTS 37 int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val); int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt); /* CMP-specific callback for logging and outputting the error queue: */ @@ -420,9 +516,11 @@ int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); +# ifndef OPENSSL_NO_HTTP int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); +# endif typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); @@ -432,7 +530,9 @@ void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); +# define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +# define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); /* client authentication: */ @@ -448,12 +548,15 @@ int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx, int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); int OSSL_CMP_CTX_reset_geninfo_ITAVs(OSSL_CMP_CTX *ctx); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_CTX_get0_geninfo_ITAVs(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, STACK_OF(X509) *extraCertsOut); /* certificate template: */ int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set1_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, const GENERAL_NAME *name); @@ -477,6 +580,7 @@ int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); # define OSSL_CMP_PKISI_BUFLEN 1024 +X509 *OSSL_CMP_CTX_get0_validatedSrvCert(const OSSL_CMP_CTX *ctx); X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); @@ -498,10 +602,13 @@ OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const OSSL_CMP_PKIHEADER *hdr); ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr); +STACK_OF(OSSL_CMP_ITAV) + *OSSL_CMP_HDR_get0_geninfo_ITAVs(const OSSL_CMP_PKIHEADER *hdr); /* from cmp_msg.c */ OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg); +X509_PUBKEY *OSSL_CMP_MSG_get0_certreq_publickey(const OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); int OSSL_CMP_MSG_update_recipNonce(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid); @@ -517,8 +624,10 @@ int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, X509_STORE *trusted_store, X509 *cert); /* from cmp_http.c */ +# ifndef OPENSSL_NO_HTTP OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); +# endif /* from cmp_server.c */ typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; @@ -561,6 +670,13 @@ int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx, OSSL_CMP_SRV_error_cb_t process_error, OSSL_CMP_SRV_certConf_cb_t process_certConf, OSSL_CMP_SRV_pollReq_cb_t process_pollReq); +typedef int (*OSSL_CMP_SRV_delayed_delivery_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +typedef int (*OSSL_CMP_SRV_clean_transaction_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_SRV_CTX_init_trans(OSSL_CMP_SRV_CTX *srv_ctx, + OSSL_CMP_SRV_delayed_delivery_cb_t delay, + OSSL_CMP_SRV_clean_transaction_cb_t clean); OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx, @@ -577,6 +693,8 @@ X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type, # define OSSL_CMP_CR 2 # define OSSL_CMP_P10CR 4 # define OSSL_CMP_KUR 7 +# define OSSL_CMP_GENM 21 +# define OSSL_CMP_ERROR 23 # define OSSL_CMP_exec_IR_ses(ctx) \ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL) # define OSSL_CMP_exec_CR_ses(ctx) \ @@ -590,6 +708,18 @@ int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); +int OSSL_CMP_get1_crlUpdate(OSSL_CMP_CTX *ctx, const X509 *crlcert, + const X509_CRL *last_crl, + X509_CRL **crl); +int OSSL_CMP_get1_certReqTemplate(OSSL_CMP_CTX *ctx, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/cms.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/cms.h index 3b453e6a2187a2..63afab563557b0 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/cms.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/cms.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cms.h.in * - * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2008-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -31,8 +31,10 @@ extern "C" { # endif +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; typedef struct CMS_ContentInfo_st CMS_ContentInfo; typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; typedef struct CMS_CertificateChoices CMS_CertificateChoices; typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; @@ -147,10 +149,14 @@ SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, #define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) +DECLARE_ASN1_DUP_FUNCTION(CMS_EnvelopedData) + CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq); # define CMS_SIGNERINFO_ISSUER_SERIAL 0 @@ -190,6 +196,7 @@ CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq) # define CMS_ASCIICRLF 0x80000 # define CMS_CADES 0x100000 # define CMS_USE_ORIGINATOR_KEYID 0x200000 +# define CMS_NO_SIGNING_TIME 0x400000 const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms); @@ -217,13 +224,16 @@ int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, unsigned int flags); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, BIO *dcont, + unsigned int flags); CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, unsigned int flags); CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, @@ -233,27 +243,26 @@ CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, unsigned int flags); CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, const unsigned char *key, size_t keylen, BIO *dcont, BIO *out, unsigned int flags); - CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags); CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, @@ -272,7 +281,7 @@ CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags); CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, BIO *dcont, BIO *out, unsigned int flags); @@ -291,12 +300,16 @@ int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo * -CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx, +CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags); @@ -385,6 +398,11 @@ ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); int CMS_SignerInfo_sign(CMS_SignerInfo *si); int CMS_SignerInfo_verify(CMS_SignerInfo *si); int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, @@ -441,7 +459,7 @@ CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( unsigned char *id, int idlen, int allorfirst, STACK_OF(GENERAL_NAMES) *receiptList, STACK_OF(GENERAL_NAMES) *receiptsTo, - OSSL_LIB_CTX *ctx); + OSSL_LIB_CTX *libctx); int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/comp.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/comp.h new file mode 100644 index 00000000000000..90e39511fe8d28 --- /dev/null +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/comp.h @@ -0,0 +1,98 @@ +/* + * Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_COMP_H +# define OPENSSL_COMP_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_COMP_H +# endif + +# include + +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + + +# ifndef OPENSSL_NO_COMP + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX* comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); + +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); + +COMP_METHOD *COMP_zlib(void); +COMP_METHOD *COMP_zlib_oneshot(void); +COMP_METHOD *COMP_brotli(void); +COMP_METHOD *COMP_brotli_oneshot(void); +COMP_METHOD *COMP_zstd(void); +COMP_METHOD *COMP_zstd_oneshot(void); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define COMP_zlib_cleanup() while(0) continue +# endif + +# ifdef OPENSSL_BIO_H +const BIO_METHOD *BIO_f_zlib(void); +const BIO_METHOD *BIO_f_brotli(void); +const BIO_METHOD *BIO_f_zstd(void); +# endif + +# endif + +typedef struct ssl_comp_st SSL_COMP; + +SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) +#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) +#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) +#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) +#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) +#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) +#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) +#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) +#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) +#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) +#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) +#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) + + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/conf.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/conf.h index 44989929f6c84a..38576290bf641b 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/conf.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/conf.h @@ -27,6 +27,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -65,7 +68,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) #define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) #define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); -#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp))) +#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp)), lh_CONF_VALUE_hash_thunk, lh_CONF_VALUE_comp_thunk, lh_CONF_VALUE_doall_thunk, lh_CONF_VALUE_doall_arg_thunk)) #define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) #define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/configuration.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/configuration.h index b659dd784afb0f..0f148d0a17243a 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/configuration.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/configuration.h @@ -30,7 +30,7 @@ extern "C" { # ifndef OPENSSL_SYS_MACOSX # define OPENSSL_SYS_MACOSX 1 # endif -# define OPENSSL_CONFIGURED_API 30000 +# define OPENSSL_CONFIGURED_API 30500 # ifndef OPENSSL_RAND_SEED_OS # define OPENSSL_RAND_SEED_OS # endif @@ -43,6 +43,12 @@ extern "C" { # ifndef OPENSSL_NO_ASAN # define OPENSSL_NO_ASAN # endif +# ifndef OPENSSL_NO_BROTLI +# define OPENSSL_NO_BROTLI +# endif +# ifndef OPENSSL_NO_BROTLI_DYNAMIC +# define OPENSSL_NO_BROTLI_DYNAMIC +# endif # ifndef OPENSSL_NO_COMP # define OPENSSL_NO_COMP # endif @@ -52,6 +58,9 @@ extern "C" { # ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # endif +# ifndef OPENSSL_NO_DEMOS +# define OPENSSL_NO_DEMOS +# endif # ifndef OPENSSL_NO_DEVCRYPTOENG # define OPENSSL_NO_DEVCRYPTOENG # endif @@ -64,12 +73,24 @@ extern "C" { # ifndef OPENSSL_NO_EXTERNAL_TESTS # define OPENSSL_NO_EXTERNAL_TESTS # endif +# ifndef OPENSSL_NO_FIPS_JITTER +# define OPENSSL_NO_FIPS_JITTER +# endif # ifndef OPENSSL_NO_FUZZ_AFL # define OPENSSL_NO_FUZZ_AFL # endif # ifndef OPENSSL_NO_FUZZ_LIBFUZZER # define OPENSSL_NO_FUZZ_LIBFUZZER # endif +# ifndef OPENSSL_NO_H3DEMO +# define OPENSSL_NO_H3DEMO +# endif +# ifndef OPENSSL_NO_HQINTEROP +# define OPENSSL_NO_HQINTEROP +# endif +# ifndef OPENSSL_NO_JITTER +# define OPENSSL_NO_JITTER +# endif # ifndef OPENSSL_NO_KTLS # define OPENSSL_NO_KTLS # endif @@ -82,6 +103,9 @@ extern "C" { # ifndef OPENSSL_NO_MSAN # define OPENSSL_NO_MSAN # endif +# ifndef OPENSSL_NO_PIE +# define OPENSSL_NO_PIE +# endif # ifndef OPENSSL_NO_RC5 # define OPENSSL_NO_RC5 # endif @@ -94,6 +118,12 @@ extern "C" { # ifndef OPENSSL_NO_SSL3_METHOD # define OPENSSL_NO_SSL3_METHOD # endif +# ifndef OPENSSL_NO_SSLKEYLOG +# define OPENSSL_NO_SSLKEYLOG +# endif +# ifndef OPENSSL_NO_TFO +# define OPENSSL_NO_TFO +# endif # ifndef OPENSSL_NO_TRACE # define OPENSSL_NO_TRACE # endif @@ -109,6 +139,21 @@ extern "C" { # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS # define OPENSSL_NO_WEAK_SSL_CIPHERS # endif +# ifndef OPENSSL_NO_WINSTORE +# define OPENSSL_NO_WINSTORE +# endif +# ifndef OPENSSL_NO_ZLIB +# define OPENSSL_NO_ZLIB +# endif +# ifndef OPENSSL_NO_ZLIB_DYNAMIC +# define OPENSSL_NO_ZLIB_DYNAMIC +# endif +# ifndef OPENSSL_NO_ZSTD +# define OPENSSL_NO_ZSTD +# endif +# ifndef OPENSSL_NO_ZSTD_DYNAMIC +# define OPENSSL_NO_ZSTD_DYNAMIC +# endif # ifndef OPENSSL_NO_DYNAMIC_ENGINE # define OPENSSL_NO_DYNAMIC_ENGINE # endif @@ -130,6 +175,12 @@ extern "C" { # define RC4_INT unsigned int +# if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +# define OPENSSL_NO_COMP_ALG +# else +# undef OPENSSL_NO_COMP_ALG +# endif + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/core_names.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/core_names.h new file mode 100644 index 00000000000000..e93e79a52bc910 --- /dev/null +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/core_names.h @@ -0,0 +1,575 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/core_names.h.in + * + * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#ifndef OPENSSL_CORE_NAMES_H +# define OPENSSL_CORE_NAMES_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +/* OSSL_CIPHER_PARAM_CTS_MODE Values */ +# define OSSL_CIPHER_CTS_MODE_CS1 "CS1" +# define OSSL_CIPHER_CTS_MODE_CS2 "CS2" +# define OSSL_CIPHER_CTS_MODE_CS3 "CS3" + +/* Known CIPHER names (not a complete list) */ +# define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" + +/* Known DIGEST names (not a complete list) */ +# define OSSL_DIGEST_NAME_MD5 "MD5" +# define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" +# define OSSL_DIGEST_NAME_SHA1 "SHA1" +# define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" +# define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" +# define OSSL_DIGEST_NAME_SHA2_256_192 "SHA2-256/192" +# define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" +# define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" +# define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" +# define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" +# define OSSL_DIGEST_NAME_MD2 "MD2" +# define OSSL_DIGEST_NAME_MD4 "MD4" +# define OSSL_DIGEST_NAME_MDC2 "MDC2" +# define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" +# define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" +# define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" +# define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" +# define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" +# define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" +# define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" +# define OSSL_DIGEST_NAME_SM3 "SM3" + +/* Known MAC names */ +# define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" +# define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" +# define OSSL_MAC_NAME_CMAC "CMAC" +# define OSSL_MAC_NAME_GMAC "GMAC" +# define OSSL_MAC_NAME_HMAC "HMAC" +# define OSSL_MAC_NAME_KMAC128 "KMAC128" +# define OSSL_MAC_NAME_KMAC256 "KMAC256" +# define OSSL_MAC_NAME_POLY1305 "POLY1305" +# define OSSL_MAC_NAME_SIPHASH "SIPHASH" + +/* Known KDF names */ +# define OSSL_KDF_NAME_HKDF "HKDF" +# define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" +# define OSSL_KDF_NAME_PBKDF1 "PBKDF1" +# define OSSL_KDF_NAME_PBKDF2 "PBKDF2" +# define OSSL_KDF_NAME_SCRYPT "SCRYPT" +# define OSSL_KDF_NAME_SSHKDF "SSHKDF" +# define OSSL_KDF_NAME_SSKDF "SSKDF" +# define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" +# define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" +# define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" +# define OSSL_KDF_NAME_X963KDF "X963KDF" +# define OSSL_KDF_NAME_KBKDF "KBKDF" +# define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" +# define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" + +/* RSA padding modes */ +# define OSSL_PKEY_RSA_PAD_MODE_NONE "none" +# define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" +# define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" +# define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" +# define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" + +/* RSA pss padding salt length */ +# define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" + +/* OSSL_PKEY_PARAM_EC_ENCODING values */ +# define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" +# define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" + +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" + +# define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" + +/* PROV_SKEY well known key types */ +# define OSSL_SKEY_TYPE_GENERIC "GENERIC-SECRET" +# define OSSL_SKEY_TYPE_AES "AES" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" + +/* Provider configuration variables */ +#define OSSL_PKEY_RETAIN_SEED "pkey_retain_seed" + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +# define OSSL_ALG_PARAM_ALGORITHM_ID "algorithm-id" +# define OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS "algorithm-id-params" +# define OSSL_ALG_PARAM_CIPHER "cipher" +# define OSSL_ALG_PARAM_DIGEST "digest" +# define OSSL_ALG_PARAM_ENGINE "engine" +# define OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR "fips-indicator" +# define OSSL_ALG_PARAM_MAC "mac" +# define OSSL_ALG_PARAM_PROPERTIES "properties" +# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +# define OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props" +# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" +# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name" +# define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal" +# define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name" +# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid" +# define OSSL_CIPHER_PARAM_AEAD "aead" +# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +# define OSSL_CIPHER_PARAM_AEAD_IV_GENERATED "iv-generated" +# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" +# define OSSL_CIPHER_PARAM_AEAD_TAG "tag" +# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" +# define OSSL_CIPHER_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD "alg_id_param" +# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_CIPHER_PARAM_CTS "cts" +# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" +# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" +# define OSSL_CIPHER_PARAM_DECRYPT_ONLY "decrypt-only" +# define OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK "encrypt-check" +# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" +# define OSSL_CIPHER_PARAM_IV "iv" +# define OSSL_CIPHER_PARAM_IVLEN "ivlen" +# define OSSL_CIPHER_PARAM_KEYLEN "keylen" +# define OSSL_CIPHER_PARAM_MODE "mode" +# define OSSL_CIPHER_PARAM_NUM "num" +# define OSSL_CIPHER_PARAM_PADDING "padding" +# define OSSL_CIPHER_PARAM_PIPELINE_AEAD_TAG "pipeline-tag" +# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" +# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" +# define OSSL_CIPHER_PARAM_ROUNDS "rounds" +# define OSSL_CIPHER_PARAM_SPEED "speed" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag" +# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" +# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" +# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" +# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" +# define OSSL_CIPHER_PARAM_USE_BITS "use-bits" +# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard" +# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" +# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_DIGEST_PARAM_MICALG "micalg" +# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" +# define OSSL_DIGEST_PARAM_SIZE "size" +# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" +# define OSSL_DIGEST_PARAM_XOF "xof" +# define OSSL_DIGEST_PARAM_XOFLEN "xoflen" +# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +# define OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +# define OSSL_DRBG_PARAM_SIZE "size" +# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" +# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" +# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" +# define OSSL_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_EXCHANGE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" +# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" +# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" +# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" +# define OSSL_EXCHANGE_PARAM_PAD "pad" +# define OSSL_GEN_PARAM_ITERATION "iteration" +# define OSSL_GEN_PARAM_POTENTIAL "potential" +# define OSSL_KDF_PARAM_ARGON2_AD "ad" +# define OSSL_KDF_PARAM_ARGON2_LANES "lanes" +# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost" +# define OSSL_KDF_PARAM_ARGON2_VERSION "version" +# define OSSL_KDF_PARAM_CEK_ALG "cekalg" +# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_KDF_PARAM_CONSTANT "constant" +# define OSSL_KDF_PARAM_DATA "data" +# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean" +# define OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KDF_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_KDF_PARAM_FIPS_EMS_CHECK "ems_check" +# define OSSL_KDF_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy" +# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce" +# define OSSL_KDF_PARAM_INFO "info" +# define OSSL_KDF_PARAM_ITER "iter" +# define OSSL_KDF_PARAM_KBKDF_R "r" +# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" +# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" +# define OSSL_KDF_PARAM_KEY "key" +# define OSSL_KDF_PARAM_LABEL "label" +# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_KDF_PARAM_MAC_SIZE "maclen" +# define OSSL_KDF_PARAM_MODE "mode" +# define OSSL_KDF_PARAM_PASSWORD "pass" +# define OSSL_KDF_PARAM_PKCS12_ID "id" +# define OSSL_KDF_PARAM_PKCS5 "pkcs5" +# define OSSL_KDF_PARAM_PREFIX "prefix" +# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_KDF_PARAM_SALT "salt" +# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" +# define OSSL_KDF_PARAM_SCRYPT_N "n" +# define OSSL_KDF_PARAM_SCRYPT_P "p" +# define OSSL_KDF_PARAM_SCRYPT_R "r" +# define OSSL_KDF_PARAM_SECRET "secret" +# define OSSL_KDF_PARAM_SEED "seed" +# define OSSL_KDF_PARAM_SIZE "size" +# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" +# define OSSL_KDF_PARAM_SSHKDF_TYPE "type" +# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" +# define OSSL_KDF_PARAM_THREADS "threads" +# define OSSL_KDF_PARAM_UKM "ukm" +# define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info" +# define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info" +# define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info" +# define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo" +# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_KEM_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KEM_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KEM_PARAM_IKME "ikme" +# define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING "hs_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm" +# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len" +# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" +# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_MAC_PARAM_CUSTOM "custom" +# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" +# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" +# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" +# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" +# define OSSL_MAC_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_MAC_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_MAC_PARAM_FIPS_NO_SHORT_MAC OSSL_PROV_PARAM_NO_SHORT_MAC +# define OSSL_MAC_PARAM_IV "iv" +# define OSSL_MAC_PARAM_KEY "key" +# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_MAC_PARAM_SALT "salt" +# define OSSL_MAC_PARAM_SIZE "size" +# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" +# define OSSL_MAC_PARAM_XOF "xof" +# define OSSL_OBJECT_PARAM_DATA "data" +# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" +# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" +# define OSSL_OBJECT_PARAM_DESC "desc" +# define OSSL_OBJECT_PARAM_INPUT_TYPE "input-type" +# define OSSL_OBJECT_PARAM_REFERENCE "reference" +# define OSSL_OBJECT_PARAM_TYPE "type" +# define OSSL_PASSPHRASE_PARAM_INFO "info" +# define OSSL_PKEY_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_PKEY_PARAM_BITS "bits" +# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" +# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm" +# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" +# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +# define OSSL_PKEY_PARAM_DIST_ID "distid" +# define OSSL_PKEY_PARAM_EC_A "a" +# define OSSL_PKEY_PARAM_EC_B "b" +# define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3" +# define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp" +# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" +# define OSSL_PKEY_PARAM_EC_ENCODING "encoding" +# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +# define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_PARAM_EC_ORDER "order" +# define OSSL_PKEY_PARAM_EC_P "p" +# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +# define OSSL_PKEY_PARAM_EC_PUB_X "qx" +# define OSSL_PKEY_PARAM_EC_PUB_Y "qy" +# define OSSL_PKEY_PARAM_EC_SEED "seed" +# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE +# define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +# define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_FFC_G "g" +# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +# define OSSL_PKEY_PARAM_FFC_H "hindex" +# define OSSL_PKEY_PARAM_FFC_P "p" +# define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +# define OSSL_PKEY_PARAM_FFC_Q "q" +# define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +# define OSSL_PKEY_PARAM_FFC_SEED "seed" +# define OSSL_PKEY_PARAM_FFC_TYPE "type" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +# define OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK "digest-check" +# define OSSL_PKEY_PARAM_FIPS_KEY_CHECK "key-check" +# define OSSL_PKEY_PARAM_FIPS_SIGN_CHECK "sign-check" +# define OSSL_PKEY_PARAM_GROUP_NAME "group" +# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" +# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +# define OSSL_PKEY_PARAM_MAX_SIZE "max-size" +# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +# define OSSL_PKEY_PARAM_ML_DSA_INPUT_FORMATS "ml-dsa.input_formats" +# define OSSL_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS "ml-dsa.output_formats" +# define OSSL_PKEY_PARAM_ML_DSA_PREFER_SEED "ml-dsa.prefer_seed" +# define OSSL_PKEY_PARAM_ML_DSA_RETAIN_SEED "ml-dsa.retain_seed" +# define OSSL_PKEY_PARAM_ML_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE "ml-kem.import_pct_type" +# define OSSL_PKEY_PARAM_ML_KEM_INPUT_FORMATS "ml-kem.input_formats" +# define OSSL_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS "ml-kem.output_formats" +# define OSSL_PKEY_PARAM_ML_KEM_PREFER_SEED "ml-kem.prefer_seed" +# define OSSL_PKEY_PARAM_ML_KEM_RETAIN_SEED "ml-kem.retain_seed" +# define OSSL_PKEY_PARAM_ML_KEM_SEED "seed" +# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +# define OSSL_PKEY_PARAM_PRIV_KEY "priv" +# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_PUB_KEY "pub" +# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9" +# define OSSL_PKEY_PARAM_RSA_D "d" +# define OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ "rsa-derive-from-pq" +# define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_RSA_E "e" +# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1" +# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10" +# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2" +# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3" +# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4" +# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5" +# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6" +# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7" +# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8" +# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9" +# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1" +# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10" +# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2" +# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3" +# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4" +# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5" +# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6" +# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7" +# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8" +# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9" +# define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC +# define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_PKEY_PARAM_RSA_N "n" +# define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" +# define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1" +# define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2" +# define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1" +# define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2" +# define OSSL_PKEY_PARAM_RSA_TEST_XP "xp" +# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" +# define OSSL_PKEY_PARAM_SLH_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG +# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +# define OSSL_PROV_PARAM_BUILDINFO "buildinfo" +# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" +# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" +# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" +# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" +# define OSSL_PROV_PARAM_DSA_SIGN_DISABLED "dsa-sign-disabled" +# define OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK "ecdh-cofactor-check" +# define OSSL_PROV_PARAM_HKDF_DIGEST_CHECK "hkdf-digest-check" +# define OSSL_PROV_PARAM_HKDF_KEY_CHECK "hkdf-key-check" +# define OSSL_PROV_PARAM_HMAC_KEY_CHECK "hmac-key-check" +# define OSSL_PROV_PARAM_KBKDF_KEY_CHECK "kbkdf-key-check" +# define OSSL_PROV_PARAM_KMAC_KEY_CHECK "kmac-key-check" +# define OSSL_PROV_PARAM_NAME "name" +# define OSSL_PROV_PARAM_NO_SHORT_MAC "no-short-mac" +# define OSSL_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK "pbkdf2-lower-bound-check" +# define OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED "rsa-pkcs15-pad-disabled" +# define OSSL_PROV_PARAM_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED "rsa-sign-x931-pad-disabled" +# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" +# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" +# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" +# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" +# define OSSL_PROV_PARAM_SIGNATURE_DIGEST_CHECK "signature-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_DIGEST_CHECK "sshkdf-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_KEY_CHECK "sshkdf-key-check" +# define OSSL_PROV_PARAM_SSKDF_DIGEST_CHECK "sskdf-digest-check" +# define OSSL_PROV_PARAM_SSKDF_KEY_CHECK "sskdf-key-check" +# define OSSL_PROV_PARAM_STATUS "status" +# define OSSL_PROV_PARAM_TDES_ENCRYPT_DISABLED "tdes-encrypt-disabled" +# define OSSL_PROV_PARAM_TLS13_KDF_DIGEST_CHECK "tls13-kdf-digest-check" +# define OSSL_PROV_PARAM_TLS13_KDF_KEY_CHECK "tls13-kdf-key-check" +# define OSSL_PROV_PARAM_TLS1_PRF_DIGEST_CHECK "tls1-prf-digest-check" +# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" +# define OSSL_PROV_PARAM_TLS1_PRF_KEY_CHECK "tls1-prf-key-check" +# define OSSL_PROV_PARAM_VERSION "version" +# define OSSL_PROV_PARAM_X942KDF_KEY_CHECK "x942kdf-key-check" +# define OSSL_PROV_PARAM_X963KDF_DIGEST_CHECK "x963kdf-digest-check" +# define OSSL_PROV_PARAM_X963KDF_KEY_CHECK "x963kdf-key-check" +# define OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_RAND_PARAM_GENERATE "generate" +# define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +# define OSSL_RAND_PARAM_STATE "state" +# define OSSL_RAND_PARAM_STRENGTH "strength" +# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" +# define OSSL_SIGNATURE_PARAM_ADD_RANDOM "additional-random" +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID OSSL_PKEY_PARAM_ALGORITHM_ID +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string" +# define OSSL_SIGNATURE_PARAM_DETERMINISTIC "deterministic" +# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE +# define OSSL_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_SIGNATURE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_CHECK OSSL_PKEY_PARAM_FIPS_SIGN_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK "sign-x931-pad-check" +# define OSSL_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE "verify-message" +# define OSSL_SIGNATURE_PARAM_INSTANCE "instance" +# define OSSL_SIGNATURE_PARAM_KAT "kat" +# define OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING "message-encoding" +# define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_SIGNATURE_PARAM_MU "mu" +# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type" +# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +# define OSSL_SIGNATURE_PARAM_SIGNATURE "signature" +# define OSSL_SIGNATURE_PARAM_TEST_ENTROPY "test-entropy" +# define OSSL_SKEY_PARAM_KEY_LENGTH "key-length" +# define OSSL_SKEY_PARAM_RAW_BYTES "raw-bytes" +# define OSSL_STORE_PARAM_ALIAS "alias" +# define OSSL_STORE_PARAM_DIGEST "digest" +# define OSSL_STORE_PARAM_EXPECT "expect" +# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" +# define OSSL_STORE_PARAM_INPUT_TYPE "input-type" +# define OSSL_STORE_PARAM_ISSUER "name" +# define OSSL_STORE_PARAM_PROPERTIES "properties" +# define OSSL_STORE_PARAM_SERIAL "serial" +# define OSSL_STORE_PARAM_SUBJECT "subject" + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/crmf.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/crmf.h index 71b747ed33d239..4bf550fd47daa9 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/crmf.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/crmf.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/crmf.h.in * - * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -26,6 +26,7 @@ # include # include # include /* for GENERAL_NAME etc. */ +# include /* explicit #includes not strictly needed since implied by the above: */ # include @@ -43,9 +44,12 @@ extern "C" { # define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 # define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 - typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) + +typedef struct ossl_crmf_encryptedkey_st OSSL_CRMF_ENCRYPTEDKEY; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDKEY) + typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) @@ -77,6 +81,36 @@ SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) #define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; +void OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(OSSL_CRMF_ATTRIBUTETYPEANDVALUE *v); +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value(sk, idx) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new(cmp) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_null() ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (n)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete(sk, i) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (i))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete_ptr(sk, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_shift(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk),ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), (idx)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set(sk, idx, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), pnum) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup(sk) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) + + typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER) typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY; @@ -118,6 +152,7 @@ typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO) typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTTEMPLATE) typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS) @@ -198,12 +233,14 @@ int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, int rid, int acceptRAVerified, OSSL_LIB_CTX *libctx, const char *propq); OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); -const ASN1_INTEGER -*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const ASN1_INTEGER +*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); X509_EXTENSIONS *OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME @@ -215,10 +252,24 @@ int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl, const X509_NAME *subject, const X509_NAME *issuer, const ASN1_INTEGER *serial); -X509 -*OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, - OSSL_LIB_CTX *libctx, const char *propq, - EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDKEY_get1_encCert(const OSSL_CRMF_ENCRYPTEDKEY *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, unsigned int flags); +unsigned char +*OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *enc, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, int *outlen); +EVP_PKEY *OSSL_CRMF_ENCRYPTEDKEY_get1_pkey(const OSSL_CRMF_ENCRYPTEDKEY *encryptedKey, + X509_STORE *ts, STACK_OF(X509) *extra, EVP_PKEY *pkey, + X509 *cert, ASN1_OCTET_STRING *secret, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSG_centralkeygen_requested(const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr); +# ifndef OPENSSL_NO_CMS +OSSL_CRMF_ENCRYPTEDKEY *OSSL_CRMF_ENCRYPTEDKEY_init_envdata(CMS_EnvelopedData *envdata); +# endif # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/crypto.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/crypto.h index 3f40be6d8c61d5..fd2cfd3e5a9ac4 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/crypto.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/crypto.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/crypto.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -85,9 +85,15 @@ int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock); void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock); int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_add64(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_and(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, CRYPTO_RWLOCK *lock); int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, CRYPTO_RWLOCK *lock); /* No longer needed, so this is a no-op */ #define OPENSSL_malloc_init() while(0) continue @@ -96,6 +102,9 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_zalloc(num) \ CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_aligned_alloc(num, alignment, freeptr) \ + CRYPTO_aligned_alloc(num, alignment, freeptr, \ + OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_realloc(addr, num) \ CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) # define OPENSSL_clear_realloc(addr, old_num, num) \ @@ -124,6 +133,7 @@ int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); size_t OPENSSL_strnlen(const char *str, size_t maxlen); +int OPENSSL_strtoul(const char *str, char **endptr, int base, unsigned long *num); int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength, const unsigned char *buf, size_t buflen, const char sep); @@ -160,6 +170,7 @@ const char *OpenSSL_version(int type); # define OPENSSL_FULL_VERSION_STRING 7 # define OPENSSL_MODULES_DIR 8 # define OPENSSL_CPU_INFO 9 +# define OPENSSL_WINCTX 10 const char *OPENSSL_info(int type); /* @@ -174,6 +185,7 @@ const char *OPENSSL_info(int type); # define OPENSSL_INFO_LIST_SEPARATOR 1006 # define OPENSSL_INFO_SEED_SOURCE 1007 # define OPENSSL_INFO_CPU_SETTINGS 1008 +# define OPENSSL_INFO_WINDOWS_CONTEXT 1009 int OPENSSL_issetugid(void); @@ -341,11 +353,14 @@ void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn, CRYPTO_realloc_fn *realloc_fn, CRYPTO_free_fn *free_fn); -void *CRYPTO_malloc(size_t num, const char *file, int line); -void *CRYPTO_zalloc(size_t num, const char *file, int line); -void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); -char *CRYPTO_strdup(const char *str, const char *file, int line); -char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc(size_t num, size_t align, + void **freeptr, const char *file, + int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strdup(const char *str, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); void CRYPTO_free(void *ptr, const char *file, int line); void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line); void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); @@ -354,8 +369,8 @@ void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, int CRYPTO_secure_malloc_init(size_t sz, size_t minsize); int CRYPTO_secure_malloc_done(void); -void *CRYPTO_secure_malloc(size_t num, const char *file, int line); -void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); void CRYPTO_secure_free(void *ptr, const char *file, int line); void CRYPTO_secure_clear_free(void *ptr, size_t num, const char *file, int line); @@ -376,6 +391,9 @@ void OPENSSL_cleanse(void *ptr, size_t len); # define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */ # define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */ +/* max allowed length for value of OPENSSL_MALLOC_FAILURES env var. */ +# define CRYPTO_MEM_CHECK_MAX_FS 256 + void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); # ifndef OPENSSL_NO_DEPRECATED_3_0 # define OPENSSL_mem_debug_push(info) \ @@ -551,6 +569,13 @@ int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file); void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); +int OSSL_LIB_CTX_get_conf_diagnostics(OSSL_LIB_CTX *ctx); +void OSSL_LIB_CTX_set_conf_diagnostics(OSSL_LIB_CTX *ctx, int value); + +void OSSL_sleep(uint64_t millis); + + +void *OSSL_LIB_CTX_get_data(OSSL_LIB_CTX *ctx, int index); # ifdef __cplusplus } diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/ct.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/ct.h index b6dd8c3547710a..e6dd1192a4e0b3 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/ct.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/ct.h @@ -133,7 +133,7 @@ typedef enum { */ CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); - + /* * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library * context and property query string is used. diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/err.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/err.h index 2abf2483488181..daca18e7b757b0 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/err.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/err.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -372,7 +372,7 @@ typedef struct ERR_string_data_st { } ERR_STRING_DATA; DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); -#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp))) +#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp)), lh_ERR_STRING_DATA_hash_thunk, lh_ERR_STRING_DATA_comp_thunk, lh_ERR_STRING_DATA_doall_thunk, lh_ERR_STRING_DATA_doall_arg_thunk)) #define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) #define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) @@ -496,6 +496,14 @@ int ERR_get_next_error_library(void); int ERR_set_mark(void); int ERR_pop_to_mark(void); int ERR_clear_last_mark(void); +int ERR_count_to_mark(void); +int ERR_pop(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); #ifdef __cplusplus } diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/fipskey.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/fipskey.h index 42ba014b313ba8..929db18c678364 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/fipskey.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/fipskey.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/fipskey.h.in * - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -29,6 +29,11 @@ extern "C" { */ #define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" +/* + * The FIPS provider vendor name, as a string. + */ +#define FIPS_VENDOR "OpenSSL FIPS Provider" + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/lhash.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/lhash.h index 39dd6254acdeb6..62c55b20fd9716 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/lhash.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/lhash.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -24,6 +24,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -31,9 +34,13 @@ extern "C" { typedef struct lhash_node_st OPENSSL_LH_NODE; typedef int (*OPENSSL_LH_COMPFUNC) (const void *, const void *); +typedef int (*OPENSSL_LH_COMPFUNCTHUNK) (const void *, const void *, OPENSSL_LH_COMPFUNC cfn); typedef unsigned long (*OPENSSL_LH_HASHFUNC) (const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNCTHUNK) (const void *, OPENSSL_LH_HASHFUNC hfn); typedef void (*OPENSSL_LH_DOALL_FUNC) (void *); +typedef void (*OPENSSL_LH_DOALL_FUNC_THUNK) (void *, OPENSSL_LH_DOALL_FUNC doall); typedef void (*OPENSSL_LH_DOALL_FUNCARG) (void *, void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG_THUNK) (void *, void *, OPENSSL_LH_DOALL_FUNCARG doall); typedef struct lhash_st OPENSSL_LHASH; /* @@ -79,26 +86,40 @@ typedef struct lhash_st OPENSSL_LHASH; int OPENSSL_LH_error(OPENSSL_LHASH *lh); OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +OPENSSL_LHASH *OPENSSL_LH_set_thunks(OPENSSL_LHASH *lh, + OPENSSL_LH_HASHFUNCTHUNK hw, + OPENSSL_LH_COMPFUNCTHUNK cw, + OPENSSL_LH_DOALL_FUNC_THUNK daw, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw); void OPENSSL_LH_free(OPENSSL_LHASH *lh); void OPENSSL_LH_flush(OPENSSL_LHASH *lh); void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); -void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg_thunk(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw, + OPENSSL_LH_DOALL_FUNCARG fn, void *arg); + unsigned long OPENSSL_LH_strhash(const char *c); unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); # ifndef OPENSSL_NO_STDIO -void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); -void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# endif +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # endif -void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); -void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define _LHASH OPENSSL_LHASH @@ -129,110 +150,190 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); /* Helper macro for internal use */ # define DEFINE_LHASH_OF_INTERNAL(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ typedef void (*lh_##type##_doallfunc)(type *a); \ - static ossl_unused ossl_inline type *ossl_check_##type##_lh_plain_type(type *ptr) \ + static ossl_inline unsigned long lh_##type##_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static ossl_inline int lh_##type##_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_inline void lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_inline void lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline type *\ + ossl_check_##type##_lh_plain_type(type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const type *ossl_check_const_##type##_lh_plain_type(const type *ptr) \ + static ossl_unused ossl_inline const type * \ + ossl_check_const_##type##_lh_plain_type(const type *ptr) \ { \ return ptr; \ } \ - static ossl_unused ossl_inline const OPENSSL_LHASH *ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline const OPENSSL_LHASH * \ + ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ { \ return (const OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LHASH *ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline OPENSSL_LHASH * \ + ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ { \ return (OPENSSL_LHASH *)lh; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ + static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC \ + ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ { \ return (OPENSSL_LH_COMPFUNC)cmp; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ + static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC \ + ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ { \ return (OPENSSL_LH_HASHFUNC)hfn; \ } \ - static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ + static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC \ + ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ { \ return (OPENSSL_LH_DOALL_FUNC)dfn; \ } \ LHASH_OF(type) -# define DEFINE_LHASH_OF(type) \ - LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ - static ossl_unused ossl_inline LHASH_OF(type) *lh_##type##_new(unsigned long (*hfn)(const type *), \ - int (*cfn)(const type *, const type *)) \ +# ifndef OPENSSL_NO_DEPRECATED_3_1 +# define DEFINE_LHASH_OF_DEPRECATED(type) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ - return (LHASH_OF(type) *) \ - OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ - static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } +# else +# define DEFINE_LHASH_OF_DEPRECATED(type) +# endif + +# define DEFINE_LHASH_OF_EX(type) \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ + static unsigned long \ + lh_##type##_hfn_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static int lh_##type##_cfn_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_free(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_flush(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_flush(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ { \ return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type * \ + lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_unused ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline int \ + lh_##type##_error(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_num_items(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_get_down_load(LHASH_OF(type) *lh) \ { \ - OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ } \ - static ossl_unused ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ { \ - OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ } \ - static ossl_unused ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ { \ - OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ } \ - static ossl_unused ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ { \ - return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ } \ - static ossl_unused ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall(LHASH_OF(type) *lh, void (*doall)(type *)) \ { \ - OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ - void (*doall)(type *)) \ + static ossl_unused ossl_inline LHASH_OF(type) * \ + lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ { \ - OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \ + lh_##type##_hfn_thunk, lh_##type##_cfn_thunk, \ + lh_##type##_doall_thunk, \ + lh_##type##_doall_arg_thunk); \ } \ - static ossl_unused ossl_inline void lh_##type##_doall_arg(LHASH_OF(type) *lh, \ - void (*doallarg)(type *, void *), \ - void *arg) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg(LHASH_OF(type) *lh, \ + void (*doallarg)(type *, void *), void *arg) \ { \ OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ } \ LHASH_OF(type) +# define DEFINE_LHASH_OF(type) \ + DEFINE_LHASH_OF_EX(type); \ + DEFINE_LHASH_OF_DEPRECATED(type) \ + LHASH_OF(type) + #define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ int_implement_lhash_doall(type, argtype, const type) @@ -240,17 +341,26 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); int_implement_lhash_doall(type, argtype, type) #define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype##_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG fn) \ + { \ + void (*fn_conv)(cbargtype *, argtype *) = (void (*)(cbargtype *, argtype *))fn; \ + fn_conv((cbargtype *)node, (argtype *)arg); \ + } \ static ossl_unused ossl_inline void \ lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ void (*fn)(cbargtype *, argtype *), \ argtype *arg) \ { \ - OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNCARG)fn, (void *)arg); \ + OPENSSL_LH_doall_arg_thunk((OPENSSL_LHASH *)lh, \ + lh_##type##_doall_##argtype##_thunk, \ + (OPENSSL_LH_DOALL_FUNCARG)fn, \ + (void *)arg); \ } \ LHASH_OF(type) DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); -#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp)), lh_OPENSSL_STRING_hash_thunk, lh_OPENSSL_STRING_comp_thunk, lh_OPENSSL_STRING_doall_thunk, lh_OPENSSL_STRING_doall_arg_thunk)) #define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) #define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) @@ -265,7 +375,7 @@ DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); #define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) #define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); -#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp)), lh_OPENSSL_CSTRING_hash_thunk, lh_OPENSSL_CSTRING_comp_thunk, lh_OPENSSL_CSTRING_doall_thunk, lh_OPENSSL_CSTRING_doall_arg_thunk)) #define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) #define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/opensslv.h index 5fb5bc63056fe0..71a357701fd5e3 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/opensslv.h @@ -28,8 +28,8 @@ extern "C" { * These macros express version number MAJOR.MINOR.PATCH exactly */ # define OPENSSL_VERSION_MAJOR 3 -# define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 17 +# define OPENSSL_VERSION_MINOR 5 +# define OPENSSL_VERSION_PATCH 2 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.17" -# define OPENSSL_FULL_VERSION_STR "3.0.17" +# define OPENSSL_VERSION_STR "3.5.2" +# define OPENSSL_FULL_VERSION_STR "3.5.2" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "1 Jul 2025" +# define OPENSSL_RELEASE_DATE "5 Aug 2025" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.17 1 Jul 2025" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.2 5 Aug 2025" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/pkcs12.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/pkcs12.h index c5e0cab06491ec..0809645dad0bbf 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/pkcs12.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/pkcs12.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/pkcs12.h.in * - * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -41,6 +44,7 @@ extern "C" { # define PKCS12_MAC_KEY_LENGTH 20 +/* The macro is expected to be used only internally. Kept for backwards compatibility. */ # define PKCS12_SALT_LEN 8 /* It's not clear if these are actually needed... */ @@ -130,7 +134,9 @@ int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); const STACK_OF(PKCS12_SAFEBAG) * PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); @@ -218,6 +224,7 @@ ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); const STACK_OF(X509_ATTRIBUTE) * PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, const char *pass, int passlen, const unsigned char *in, int inlen, @@ -285,6 +292,9 @@ int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, unsigned char *salt, int saltlen, int iter, const EVP_MD *md_type); +int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type, const char *prf_md_name); int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, int saltlen, const EVP_MD *md_type); unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, @@ -305,6 +315,7 @@ DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) void PKCS12_PBE_add(void); int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype); @@ -312,6 +323,11 @@ PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype, OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/pkcs7.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/pkcs7.h index 0ce79bf4fa160e..fa68462aff973b 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/pkcs7.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/pkcs7.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/pkcs7.h.in * - * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -28,6 +28,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -131,8 +134,8 @@ SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INF typedef struct pkcs7_signed_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; struct pkcs7_st *contents; } PKCS7_SIGNED; @@ -158,8 +161,8 @@ typedef struct pkcs7_enveloped_st { typedef struct pkcs7_signedandenveloped_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; PKCS7_ENC_CONTENT *enc_data; STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; @@ -200,7 +203,7 @@ typedef struct pkcs7_st { /* NID_pkcs7_data */ ASN1_OCTET_STRING *data; /* NID_pkcs7_signed */ - PKCS7_SIGNED *sign; + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ /* NID_pkcs7_enveloped */ PKCS7_ENVELOPE *enveloped; /* NID_pkcs7_signedAndEnveloped */ @@ -341,13 +344,13 @@ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, const EVP_MD *dgst); int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); -int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); -int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); int PKCS7_content_new(PKCS7 *p7, int nid); int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, - X509 *x509); + X509 *signer); BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/ssl.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/ssl.h index 3df725c56d6c5e..7e3d89c7ef3dc9 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/ssl.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/ssl.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/ssl.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -24,6 +24,7 @@ # endif # include +# include # include # include # include @@ -42,6 +43,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -231,10 +235,8 @@ typedef struct ssl_cipher_st SSL_CIPHER; typedef struct ssl_session_st SSL_SESSION; typedef struct tls_sigalgs_st TLS_SIGALGS; typedef struct ssl_conf_ctx_st SSL_CONF_CTX; -typedef struct ssl_comp_st SSL_COMP; STACK_OF(SSL_CIPHER); -STACK_OF(SSL_COMP); /* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ typedef struct srtp_protection_profile_st { @@ -278,28 +280,31 @@ typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, /* Extension context codes */ /* This extension is only allowed in TLS */ -#define SSL_EXT_TLS_ONLY 0x0001 +#define SSL_EXT_TLS_ONLY 0x00001 /* This extension is only allowed in DTLS */ -#define SSL_EXT_DTLS_ONLY 0x0002 +#define SSL_EXT_DTLS_ONLY 0x00002 /* Some extensions may be allowed in DTLS but we don't implement them for it */ -#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 /* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ -#define SSL_EXT_SSL3_ALLOWED 0x0008 +#define SSL_EXT_SSL3_ALLOWED 0x00008 /* Extension is only defined for TLS1.2 and below */ -#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 /* Extension is only defined for TLS1.3 and above */ -#define SSL_EXT_TLS1_3_ONLY 0x0020 +#define SSL_EXT_TLS1_3_ONLY 0x00020 /* Ignore this extension during parsing if we are resuming */ -#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 -#define SSL_EXT_CLIENT_HELLO 0x0080 +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 /* Really means TLS1.2 or below */ -#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 -#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 -#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 -#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 -#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 -#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 -#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 /* Typedefs for handling custom extensions */ @@ -404,7 +409,7 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); */ # define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_BIT(22) /* - * If set, a server will allow a client to issue a SSLv3.0 version + * If set, a server will allow a client to issue an SSLv3.0 version * number as latest version supported in the premaster secret, even when * TLSv1.0 (version 3.1) was announced in the client hello. Normally * this is forbidden to prevent version rollback attacks. @@ -430,6 +435,19 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); * interoperability with CryptoPro CSP 3.x */ # define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +# define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +# define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) + /* Enable KTLS TX zerocopy on Linux */ +# define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) + +#define SSL_OP_PREFER_NO_DHE_KEX SSL_OP_BIT(35) /* * Option "collections." @@ -574,6 +592,8 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); # define CERT_PKEY_CERT_TYPE 0x400 /* Cert chain suitable to Suite B */ # define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +# define CERT_PKEY_RPK 0x1000 # define SSL_CONF_FLAG_CMDLINE 0x1 # define SSL_CONF_FLAG_FILE 0x2 @@ -965,6 +985,7 @@ uint32_t SSL_get_recv_max_early_data(const SSL *s); # include /* This is mostly sslv3 with a few tweaks */ # include /* Datagram TLS */ # include /* Support for the use_srtp extension */ +# include #ifdef __cplusplus extern "C" { @@ -1000,32 +1021,6 @@ SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) #define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) #define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) #define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) -SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) -#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) -#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) -#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) -#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) -#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) -#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) -#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) -#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) -#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) -#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) -#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) -#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) -#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) -#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) -#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) /* compatibility */ @@ -1066,6 +1061,7 @@ typedef enum { DTLS_ST_CR_HELLO_VERIFY_REQUEST, TLS_ST_CR_SRVR_HELLO, TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, TLS_ST_CR_CERT_STATUS, TLS_ST_CR_KEY_EXCH, TLS_ST_CR_CERT_REQ, @@ -1075,6 +1071,7 @@ typedef enum { TLS_ST_CR_FINISHED, TLS_ST_CW_CLNT_HELLO, TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, TLS_ST_CW_KEY_EXCH, TLS_ST_CW_CERT_VRFY, TLS_ST_CW_CHANGE, @@ -1085,10 +1082,12 @@ typedef enum { DTLS_ST_SW_HELLO_VERIFY_REQUEST, TLS_ST_SW_SRVR_HELLO, TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, TLS_ST_SW_KEY_EXCH, TLS_ST_SW_CERT_REQ, TLS_ST_SW_SRVR_DONE, TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, TLS_ST_SR_KEY_EXCH, TLS_ST_SR_CERT_VRFY, TLS_ST_SR_NEXT_PROTO, @@ -1380,9 +1379,13 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_CTRL_GET_SIGNATURE_NID 132 # define SSL_CTRL_GET_TMP_KEY 133 # define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +# define SSL_CTRL_GET_IANA_GROUPS 135 # define SSL_CTRL_SET_RETRY_VERIFY 136 # define SSL_CTRL_GET_VERIFY_CERT_STORE 137 # define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +# define SSL_CTRL_GET0_IMPLEMENTED_GROUPS 139 +# define SSL_CTRL_GET_SIGNATURE_NAME 140 +# define SSL_CTRL_GET_PEER_SIGNATURE_NAME 141 # define SSL_CERT_SET_FIRST 1 # define SSL_CERT_SET_NEXT 2 # define SSL_CERT_SET_SERVER 3 @@ -1485,10 +1488,15 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get1_groups(s, glist) \ SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_IANA_GROUPS,0,(uint16_t **)(plst)) # define SSL_CTX_set1_groups(ctx, glist, glistlen) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) # define SSL_CTX_set1_groups_list(ctx, s) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s)) +# define SSL_CTX_get0_implemented_groups(ctx, all, out) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET0_IMPLEMENTED_GROUPS, all, \ + (STACK_OF(OPENSSL_CSTRING) *)(out)) # define SSL_set1_groups(s, glist, glistlen) \ SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist)) # define SSL_set1_groups_list(s, str) \ @@ -1520,8 +1528,12 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) (char *)(clist)) # define SSL_set1_client_certificate_types(s, clist, clistlen) \ SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist)) +# define SSL_get0_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn) +# define SSL_get0_peer_signature_name(s, str) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NAME,0,(1?(str):(const char **)NULL)) # define SSL_get_peer_signature_nid(s, pn) \ SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) # define SSL_get_peer_tmp_key(s, pk) \ @@ -1549,6 +1561,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get_max_proto_version(s) \ SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +const char *SSL_get0_group_name(SSL *s); const char *SSL_group_to_name(SSL *s, int id); /* Backwards compatibility, original 1.1.0 names */ @@ -1613,7 +1626,11 @@ void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); __owur int SSL_want(const SSL *s); __owur int SSL_clear(SSL *s); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()") void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); +#endif +void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm); __owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); __owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); @@ -1725,13 +1742,21 @@ __owur const char *SSL_state_string(const SSL *s); __owur const char *SSL_rstate_string(const SSL *s); __owur const char *SSL_state_string_long(const SSL *s); __owur const char *SSL_rstate_string_long(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_get_time_ex()") __owur long SSL_SESSION_get_time(const SSL_SESSION *s); +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_set_time_ex()") __owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +#endif __owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); __owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); __owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); __owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); +__owur time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s); +__owur time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t); + __owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); __owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, @@ -1783,6 +1808,9 @@ __owur int SSL_has_matching_session_id(const SSL *s, unsigned int id_len); SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); # ifdef OPENSSL_X509_H __owur X509 *SSL_get0_peer_certificate(const SSL *s); @@ -1840,6 +1868,8 @@ __owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, SSL *SSL_new(SSL_CTX *ctx); int SSL_up_ref(SSL *s); int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); __owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, unsigned int sid_ctx_len); @@ -1848,8 +1878,8 @@ __owur int SSL_set_purpose(SSL *ssl, int purpose); __owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); __owur int SSL_set_trust(SSL *ssl, int trust); -__owur int SSL_set1_host(SSL *s, const char *hostname); -__owur int SSL_add1_host(SSL *s, const char *hostname); +__owur int SSL_set1_host(SSL *s, const char *host); +__owur int SSL_add1_host(SSL *s, const char *host); __owur const char *SSL_get0_peername(SSL *s); void SSL_set_hostflags(SSL *s, unsigned int flags); @@ -1924,6 +1954,11 @@ OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg); void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, void *arg); +typedef int (*SSL_new_pending_conn_cb_fn) (SSL_CTX *ctx, SSL *new_ssl, + void *arg); +void SSL_CTX_set_new_pending_conn_cb(SSL_CTX *c, SSL_new_pending_conn_cb_fn cb, + void *arg); + int SSL_client_hello_isv2(SSL *s); unsigned int SSL_client_hello_get0_legacy_version(SSL *s); size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); @@ -1932,6 +1967,8 @@ size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); size_t SSL_client_hello_get0_compression_methods(SSL *s, const unsigned char **out); int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); int SSL_client_hello_get0_ext(SSL *s, unsigned int type, const unsigned char **out, size_t *outlen); @@ -1978,6 +2015,12 @@ long SSL_callback_ctrl(SSL *, int, void (*)(void)); long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); +# define SSL_WRITE_FLAG_CONCLUDE (1U << 0) + +__owur int SSL_write_ex2(SSL *s, const void *buf, size_t num, + uint64_t flags, + size_t *written); + # define SSL_EARLY_DATA_NOT_SENT 0 # define SSL_EARLY_DATA_REJECTED 1 # define SSL_EARLY_DATA_ACCEPTED 2 @@ -1986,6 +2029,7 @@ __owur int SSL_get_early_data_status(const SSL *s); __owur int SSL_get_error(const SSL *s, int ret_code); __owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); /* This sets the 'default' SSL version that SSL_new() will create */ # ifndef OPENSSL_NO_DEPRECATED_3_0 @@ -2281,6 +2325,8 @@ void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); +int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size, + size_t hs_block_size); int SSL_set_record_padding_callback(SSL *ssl, size_t (*cb) (SSL *ssl, int type, @@ -2288,12 +2334,255 @@ int SSL_set_record_padding_callback(SSL *ssl, void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); void *SSL_get_record_padding_callback_arg(const SSL *ssl); int SSL_set_block_padding(SSL *ssl, size_t block_size); - +int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size, + size_t hs_block_size); int SSL_set_num_tickets(SSL *s, size_t num_tickets); size_t SSL_get_num_tickets(const SSL *s); int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +__owur int SSL_is_listener(SSL *ssl); +__owur SSL *SSL_get0_listener(SSL *s); +#define SSL_LISTENER_FLAG_NO_VALIDATE (1UL << 1) +__owur SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags); +__owur SSL *SSL_new_listener_from(SSL *ssl, uint64_t flags); +__owur SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags); +#define SSL_ACCEPT_CONNECTION_NO_BLOCK (1UL << 0) +__owur SSL *SSL_accept_connection(SSL *ssl, uint64_t flags); +__owur size_t SSL_get_accept_connection_queue_len(SSL *ssl); +__owur int SSL_listen(SSL *ssl); + +__owur int SSL_is_domain(SSL *s); +__owur SSL *SSL_get0_domain(SSL *s); +__owur SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags); + +#define SSL_DOMAIN_FLAG_SINGLE_THREAD (1U << 0) +#define SSL_DOMAIN_FLAG_MULTI_THREAD (1U << 1) +#define SSL_DOMAIN_FLAG_THREAD_ASSISTED (1U << 2) +#define SSL_DOMAIN_FLAG_BLOCKING (1U << 3) +#define SSL_DOMAIN_FLAG_LEGACY_BLOCKING (1U << 4) + +__owur int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t domain_flags); +__owur int SSL_CTX_get_domain_flags(const SSL_CTX *ctx, uint64_t *domain_flags); +__owur int SSL_get_domain_flags(const SSL *ssl, uint64_t *domain_flags); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +# ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +# endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + +# define SSL_VALUE_CLASS_GENERIC 0 +# define SSL_VALUE_CLASS_FEATURE_REQUEST 1 +# define SSL_VALUE_CLASS_FEATURE_PEER_REQUEST 2 +# define SSL_VALUE_CLASS_FEATURE_NEGOTIATED 3 + +# define SSL_VALUE_NONE 0 +# define SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL 1 +# define SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL 2 +# define SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL 3 +# define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL 4 +# define SSL_VALUE_QUIC_IDLE_TIMEOUT 5 +# define SSL_VALUE_EVENT_HANDLING_MODE 6 +# define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7 +# define SSL_VALUE_STREAM_WRITE_BUF_USED 8 +# define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9 + +# define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0 +# define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1 +# define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT 2 + +int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v); +int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v); + +# define SSL_get_generic_value_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_set_generic_value_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +# define SSL_get_feature_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_set_feature_request_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +# define SSL_get_feature_peer_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, (id), (v)) +# define SSL_get_feature_negotiated_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_NEGOTIATED, (id), (v)) + +# define SSL_get_quic_stream_bidi_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_bidi_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, \ + (value)) +# define SSL_get_quic_stream_uni_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, \ + (value)) + +# define SSL_get_event_handling_mode(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) +# define SSL_set_event_handling_mode(ssl, value) \ + SSL_set_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) + +# define SSL_get_stream_write_buf_size(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_SIZE, \ + (value)) +# define SSL_get_stream_write_buf_used(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_USED, \ + (value)) +# define SSL_get_stream_write_buf_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_AVAIL, \ + (value)) + +# define SSL_POLL_EVENT_NONE 0 + +# define SSL_POLL_EVENT_F (1U << 0) /* F (Failure) */ +# define SSL_POLL_EVENT_EL (1U << 1) /* EL (Exception on Listener) */ +# define SSL_POLL_EVENT_EC (1U << 2) /* EC (Exception on Conn) */ +# define SSL_POLL_EVENT_ECD (1U << 3) /* ECD (Exception on Conn Drained) */ +# define SSL_POLL_EVENT_ER (1U << 4) /* ER (Exception on Read) */ +# define SSL_POLL_EVENT_EW (1U << 5) /* EW (Exception on Write) */ +# define SSL_POLL_EVENT_R (1U << 6) /* R (Readable) */ +# define SSL_POLL_EVENT_W (1U << 7) /* W (Writable) */ +# define SSL_POLL_EVENT_IC (1U << 8) /* IC (Incoming Connection) */ +# define SSL_POLL_EVENT_ISB (1U << 9) /* ISB (Incoming Stream: Bidi) */ +# define SSL_POLL_EVENT_ISU (1U << 10) /* ISU (Incoming Stream: Uni) */ +# define SSL_POLL_EVENT_OSB (1U << 11) /* OSB (Outgoing Stream: Bidi) */ +# define SSL_POLL_EVENT_OSU (1U << 12) /* OSU (Outgoing Stream: Uni) */ + +# define SSL_POLL_EVENT_RW (SSL_POLL_EVENT_R | SSL_POLL_EVENT_W) +# define SSL_POLL_EVENT_RE (SSL_POLL_EVENT_R | SSL_POLL_EVENT_ER) +# define SSL_POLL_EVENT_WE (SSL_POLL_EVENT_W | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_RWE (SSL_POLL_EVENT_RE | SSL_POLL_EVENT_WE) +# define SSL_POLL_EVENT_E (SSL_POLL_EVENT_EL | SSL_POLL_EVENT_EC \ + | SSL_POLL_EVENT_ER | SSL_POLL_EVENT_EW) +# define SSL_POLL_EVENT_IS (SSL_POLL_EVENT_ISB | SSL_POLL_EVENT_ISU) +# define SSL_POLL_EVENT_ISE (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_EC) +# define SSL_POLL_EVENT_I (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_IC) +# define SSL_POLL_EVENT_OS (SSL_POLL_EVENT_OSB | SSL_POLL_EVENT_OSU) +# define SSL_POLL_EVENT_OSE (SSL_POLL_EVENT_OS | SSL_POLL_EVENT_EC) + +typedef struct ssl_poll_item_st { + BIO_POLL_DESCRIPTOR desc; + uint64_t events, revents; +} SSL_POLL_ITEM; + +# define SSL_POLL_FLAG_NO_HANDLE_EVENTS (1U << 0) + +__owur int SSL_poll(SSL_POLL_ITEM *items, + size_t num_items, + size_t stride, + const struct timeval *timeout, + uint64_t flags, + size_t *result_count); + +static ossl_inline ossl_unused BIO_POLL_DESCRIPTOR +SSL_as_poll_descriptor(SSL *s) +{ + BIO_POLL_DESCRIPTOR d; + + d.type = BIO_POLL_DESCRIPTOR_TYPE_SSL; + d.value.ssl = s; + return d; +} + # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define SSL_cache_hit(s) SSL_session_reused(s) # endif @@ -2593,6 +2882,51 @@ void SSL_set_allow_early_data_cb(SSL *s, const char *OSSL_default_cipher_list(void); const char *OSSL_default_ciphersuites(void); +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + +/* + * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used. + */ +# define OSSL_RECORD_PROTECTION_LEVEL_NONE 0 +# define OSSL_RECORD_PROTECTION_LEVEL_EARLY 1 +# define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE 2 +# define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3 + +int SSL_set_quic_tls_cbs(SSL *s, const OSSL_DISPATCH *qtdis, void *arg); +int SSL_set_quic_tls_transport_params(SSL *s, + const unsigned char *params, + size_t params_len); + +int SSL_set_quic_tls_early_data_enabled(SSL *s, int enabled); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/x509.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/x509.h index 1f7755e5b69c75..d013458c226461 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/x509.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/x509.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -40,6 +40,9 @@ # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -162,16 +165,24 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) # define X509_FILETYPE_ASN1 2 # define X509_FILETYPE_DEFAULT 3 -# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 -# define X509v3_KU_NON_REPUDIATION 0x0040 -# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 -# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 -# define X509v3_KU_KEY_AGREEMENT 0x0008 -# define X509v3_KU_KEY_CERT_SIGN 0x0004 -# define X509v3_KU_CRL_SIGN 0x0002 -# define X509v3_KU_ENCIPHER_ONLY 0x0001 -# define X509v3_KU_DECIPHER_ONLY 0x8000 -# define X509v3_KU_UNDEF 0xffff +/*- + * : + * The KeyUsage BITSTRING is treated as a little-endian integer, hence bit `0` + * is 0x80, while bit `7` is 0x01 (the LSB of the integer value), bit `8` is + * then the MSB of the second octet, or 0x8000. + */ +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 /* (0) */ +# define X509v3_KU_NON_REPUDIATION 0x0040 /* (1) */ +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 /* (2) */ +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 /* (3) */ +# define X509v3_KU_KEY_AGREEMENT 0x0008 /* (4) */ +# define X509v3_KU_KEY_CERT_SIGN 0x0004 /* (5) */ +# define X509v3_KU_CRL_SIGN 0x0002 /* (6) */ +# define X509v3_KU_ENCIPHER_ONLY 0x0001 /* (7) */ +# define X509v3_KU_DECIPHER_ONLY 0x8000 /* (8) */ +# ifndef OPENSSL_NO_DEPRECATED_3_4 +# define X509v3_KU_UNDEF 0xffff /* vestigial, not used */ +# endif struct X509_algor_st { ASN1_OBJECT *algorithm; @@ -462,7 +473,12 @@ typedef struct PBKDF2PARAM_st { X509_ALGOR *prf; } PBKDF2PARAM; -#ifndef OPENSSL_NO_SCRYPT +typedef struct { + X509_ALGOR *keyDerivationFunc; + X509_ALGOR *messageAuthScheme; +} PBMAC1PARAM; + +# ifndef OPENSSL_NO_SCRYPT typedef struct SCRYPT_PARAMS_st { ASN1_OCTET_STRING *salt; ASN1_INTEGER *costParameter; @@ -470,7 +486,7 @@ typedef struct SCRYPT_PARAMS_st { ASN1_INTEGER *parallelizationParameter; ASN1_INTEGER *keyLength; } SCRYPT_PARAMS; -#endif +# endif #ifdef __cplusplus } @@ -603,6 +619,8 @@ EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); # endif @@ -651,6 +669,8 @@ EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); DECLARE_ASN1_DUP_FUNCTION(X509) @@ -884,12 +904,12 @@ int X509_REQ_get_signature_nid(const X509_REQ *req); int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); -EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); int X509_REQ_extension_nid(int nid); int *X509_REQ_get_extension_nids(void); void X509_REQ_set_extension_nids(int *nids); -STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(OSSL_FUTURE_CONST X509_REQ *req); int X509_REQ_add_extensions_nid(X509_REQ *req, const STACK_OF(X509_EXTENSION) *exts, int nid); int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); @@ -950,13 +970,14 @@ X509_REVOKED_get0_extensions(const X509_REVOKED *r); X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); -int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); -int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey); +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); int X509_chain_check_suiteb(int *perror_depth, X509 *x, STACK_OF(X509) *chain, unsigned long flags); int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); @@ -1077,6 +1098,8 @@ X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, X509_EXTENSION *ex, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_extensions(STACK_OF(X509_EXTENSION) **target, + const STACK_OF(X509_EXTENSION) *exts); int X509_get_ext_count(const X509 *x); int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); @@ -1198,9 +1221,10 @@ X509 *X509_find_by_subject(STACK_OF(X509) *sk, const X509_NAME *name); DECLARE_ASN1_FUNCTIONS(PBEPARAM) DECLARE_ASN1_FUNCTIONS(PBE2PARAM) DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) -#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(PBMAC1PARAM) +# ifndef OPENSSL_NO_SCRYPT DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) -#endif +# endif int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, const unsigned char *salt, int saltlen); @@ -1237,6 +1261,7 @@ X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, int prf_nid, int keylen, OSSL_LIB_CTX *libctx); +PBKDF2PARAM *PBMAC1_get1_pbkdf2_param(const X509_ALGOR *macalg); /* PKCS#8 utilities */ DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) @@ -1262,6 +1287,8 @@ int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len); +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, int ptype, void *pval, unsigned char *penc, int penclen); diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/x509_acert.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/x509_acert.h new file mode 100644 index 00000000000000..9dde625677f9a9 --- /dev/null +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/x509_acert.h @@ -0,0 +1,294 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/x509_acert.h.in + * + * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_X509_ACERT_H +# define OPENSSL_X509_ACERT_H +# pragma once + +# include +# include +# include + +typedef struct X509_acert_st X509_ACERT; +typedef struct X509_acert_info_st X509_ACERT_INFO; +typedef struct ossl_object_digest_info_st OSSL_OBJECT_DIGEST_INFO; +typedef struct ossl_issuer_serial_st OSSL_ISSUER_SERIAL; +typedef struct X509_acert_issuer_v2form_st X509_ACERT_ISSUER_V2FORM; + +DECLARE_ASN1_FUNCTIONS(X509_ACERT) +DECLARE_ASN1_DUP_FUNCTION(X509_ACERT) +DECLARE_ASN1_ITEM(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_OBJECT_DIGEST_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_ISSUER_SERIAL) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_ISSUER_V2FORM) + +# ifndef OPENSSL_NO_STDIO +X509_ACERT *d2i_X509_ACERT_fp(FILE *fp, X509_ACERT **acert); +int i2d_X509_ACERT_fp(FILE *fp, const X509_ACERT *acert); +# endif + +DECLARE_PEM_rw(X509_ACERT, X509_ACERT) + +X509_ACERT *d2i_X509_ACERT_bio(BIO *bp, X509_ACERT **acert); +int i2d_X509_ACERT_bio(BIO *bp, const X509_ACERT *acert); + +int X509_ACERT_sign(X509_ACERT *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_ACERT_sign_ctx(X509_ACERT *x, EVP_MD_CTX *ctx); +int X509_ACERT_verify(X509_ACERT *a, EVP_PKEY *r); + +# define X509_ACERT_VERSION_2 1 + +const GENERAL_NAMES *X509_ACERT_get0_holder_entityName(const X509_ACERT *x); +const OSSL_ISSUER_SERIAL *X509_ACERT_get0_holder_baseCertId(const X509_ACERT *x); +const OSSL_OBJECT_DIGEST_INFO * X509_ACERT_get0_holder_digest(const X509_ACERT *x); +const X509_NAME *X509_ACERT_get0_issuerName(const X509_ACERT *x); +long X509_ACERT_get_version(const X509_ACERT *x); +void X509_ACERT_get0_signature(const X509_ACERT *x, + const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_ACERT_get_signature_nid(const X509_ACERT *x); +const X509_ALGOR *X509_ACERT_get0_info_sigalg(const X509_ACERT *x); +const ASN1_INTEGER *X509_ACERT_get0_serialNumber(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notBefore(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notAfter(const X509_ACERT *x); +const ASN1_BIT_STRING *X509_ACERT_get0_issuerUID(const X509_ACERT *x); + +int X509_ACERT_print(BIO *bp, X509_ACERT *x); +int X509_ACERT_print_ex(BIO *bp, X509_ACERT *x, unsigned long nmflags, + unsigned long cflag); + +int X509_ACERT_get_attr_count(const X509_ACERT *x); +int X509_ACERT_get_attr_by_NID(const X509_ACERT *x, int nid, int lastpos); +int X509_ACERT_get_attr_by_OBJ(const X509_ACERT *x, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_ACERT_get_attr(const X509_ACERT *x, int loc); +X509_ATTRIBUTE *X509_ACERT_delete_attr(X509_ACERT *x, int loc); + +void *X509_ACERT_get_ext_d2i(const X509_ACERT *x, int nid, int *crit, int *idx); +int X509_ACERT_add1_ext_i2d(X509_ACERT *x, int nid, void *value, int crit, + unsigned long flags); +const STACK_OF(X509_EXTENSION) *X509_ACERT_get0_extensions(const X509_ACERT *x); + +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY 0 +# define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY_CERT 1 +# define OSSL_OBJECT_DIGEST_INFO_OTHER 2 /* must not be used in RFC 5755 profile */ +int X509_ACERT_set_version(X509_ACERT *x, long version); +void X509_ACERT_set0_holder_entityName(X509_ACERT *x, GENERAL_NAMES *name); +void X509_ACERT_set0_holder_baseCertId(X509_ACERT *x, OSSL_ISSUER_SERIAL *isss); +void X509_ACERT_set0_holder_digest(X509_ACERT *x, + OSSL_OBJECT_DIGEST_INFO *dinfo); + +int X509_ACERT_add1_attr(X509_ACERT *x, X509_ATTRIBUTE *attr); +int X509_ACERT_add1_attr_by_OBJ(X509_ACERT *x, const ASN1_OBJECT *obj, + int type, const void *bytes, int len); +int X509_ACERT_add1_attr_by_NID(X509_ACERT *x, int nid, int type, + const void *bytes, int len); +int X509_ACERT_add1_attr_by_txt(X509_ACERT *x, const char *attrname, int type, + const unsigned char *bytes, int len); +int X509_ACERT_add_attr_nconf(CONF *conf, const char *section, + X509_ACERT *acert); + +int X509_ACERT_set1_issuerName(X509_ACERT *x, const X509_NAME *name); +int X509_ACERT_set1_serialNumber(X509_ACERT *x, const ASN1_INTEGER *serial); +int X509_ACERT_set1_notBefore(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); +int X509_ACERT_set1_notAfter(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); + +void OSSL_OBJECT_DIGEST_INFO_get0_digest(const OSSL_OBJECT_DIGEST_INFO *o, + int *digestedObjectType, + const X509_ALGOR **digestAlgorithm, + const ASN1_BIT_STRING **digest); + +int OSSL_OBJECT_DIGEST_INFO_set1_digest(OSSL_OBJECT_DIGEST_INFO *o, + int digestedObjectType, + X509_ALGOR *digestAlgorithm, + ASN1_BIT_STRING *digest); + +const X509_NAME *OSSL_ISSUER_SERIAL_get0_issuer(const OSSL_ISSUER_SERIAL *isss); +const ASN1_INTEGER *OSSL_ISSUER_SERIAL_get0_serial(const OSSL_ISSUER_SERIAL *isss); +const ASN1_BIT_STRING *OSSL_ISSUER_SERIAL_get0_issuerUID(const OSSL_ISSUER_SERIAL *isss); + +int OSSL_ISSUER_SERIAL_set1_issuer(OSSL_ISSUER_SERIAL *isss, + const X509_NAME *issuer); +int OSSL_ISSUER_SERIAL_set1_serial(OSSL_ISSUER_SERIAL *isss, + const ASN1_INTEGER *serial); +int OSSL_ISSUER_SERIAL_set1_issuerUID(OSSL_ISSUER_SERIAL *isss, + const ASN1_BIT_STRING *uid); + +# define OSSL_IETFAS_OCTETS 0 +# define OSSL_IETFAS_OID 1 +# define OSSL_IETFAS_STRING 2 + +typedef struct OSSL_IETF_ATTR_SYNTAX_VALUE_st OSSL_IETF_ATTR_SYNTAX_VALUE; +typedef struct OSSL_IETF_ATTR_SYNTAX_st OSSL_IETF_ATTR_SYNTAX; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_value(sk, idx) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new(cmp) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_null() ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (n)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete(sk, i) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (i))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete_ptr(sk, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_pop(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_shift(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_shift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk),ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), (idx)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set(sk, idx, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_set(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), pnum) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_dup(sk) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_copyfunc_type(copyfunc), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set_cmp_func(sk, cmp) ((sk_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) + + +DECLARE_ASN1_ITEM(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX) + +const GENERAL_NAMES * +OSSL_IETF_ATTR_SYNTAX_get0_policyAuthority(const OSSL_IETF_ATTR_SYNTAX *a); +void OSSL_IETF_ATTR_SYNTAX_set0_policyAuthority(OSSL_IETF_ATTR_SYNTAX *a, + GENERAL_NAMES *names); + +int OSSL_IETF_ATTR_SYNTAX_get_value_num(const OSSL_IETF_ATTR_SYNTAX *a); +void *OSSL_IETF_ATTR_SYNTAX_get0_value(const OSSL_IETF_ATTR_SYNTAX *a, + int ind, int *type); +int OSSL_IETF_ATTR_SYNTAX_add1_value(OSSL_IETF_ATTR_SYNTAX *a, int type, + void *data); +int OSSL_IETF_ATTR_SYNTAX_print(BIO *bp, OSSL_IETF_ATTR_SYNTAX *a, int indent); + +struct TARGET_CERT_st { + OSSL_ISSUER_SERIAL *targetCertificate; + GENERAL_NAME *targetName; + OSSL_OBJECT_DIGEST_INFO *certDigestInfo; +}; + +typedef struct TARGET_CERT_st OSSL_TARGET_CERT; + +# define OSSL_TGT_TARGET_NAME 0 +# define OSSL_TGT_TARGET_GROUP 1 +# define OSSL_TGT_TARGET_CERT 2 + +typedef struct TARGET_st { + int type; + union { + GENERAL_NAME *targetName; + GENERAL_NAME *targetGroup; + OSSL_TARGET_CERT *targetCert; + } choice; +} OSSL_TARGET; + +typedef STACK_OF(OSSL_TARGET) OSSL_TARGETS; +typedef STACK_OF(OSSL_TARGETS) OSSL_TARGETING_INFORMATION; + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGET, OSSL_TARGET, OSSL_TARGET) +#define sk_OSSL_TARGET_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_value(sk, idx) ((OSSL_TARGET *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGET_sk_type(sk), (idx))) +#define sk_OSSL_TARGET_new(cmp) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new(ossl_check_OSSL_TARGET_compfunc_type(cmp))) +#define sk_OSSL_TARGET_new_null() ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGET_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGET_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGET_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGET_sk_type(sk), (n)) +#define sk_OSSL_TARGET_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_delete(sk, i) ((OSSL_TARGET *)OPENSSL_sk_delete(ossl_check_OSSL_TARGET_sk_type(sk), (i))) +#define sk_OSSL_TARGET_delete_ptr(sk, ptr) ((OSSL_TARGET *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_pop(sk) ((OSSL_TARGET *)OPENSSL_sk_pop(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_shift(sk) ((OSSL_TARGET *)OPENSSL_sk_shift(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGET_sk_type(sk),ossl_check_OSSL_TARGET_freefunc_type(freefunc)) +#define sk_OSSL_TARGET_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), (idx)) +#define sk_OSSL_TARGET_set(sk, idx, ptr) ((OSSL_TARGET *)OPENSSL_sk_set(ossl_check_OSSL_TARGET_sk_type(sk), (idx), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), pnum) +#define sk_OSSL_TARGET_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_dup(sk) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_copyfunc_type(copyfunc), ossl_check_OSSL_TARGET_freefunc_type(freefunc))) +#define sk_OSSL_TARGET_set_cmp_func(sk, cmp) ((sk_OSSL_TARGET_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGETS, OSSL_TARGETS, OSSL_TARGETS) +#define sk_OSSL_TARGETS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_value(sk, idx) ((OSSL_TARGETS *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGETS_sk_type(sk), (idx))) +#define sk_OSSL_TARGETS_new(cmp) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new(ossl_check_OSSL_TARGETS_compfunc_type(cmp))) +#define sk_OSSL_TARGETS_new_null() ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGETS_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGETS_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGETS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGETS_sk_type(sk), (n)) +#define sk_OSSL_TARGETS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_delete(sk, i) ((OSSL_TARGETS *)OPENSSL_sk_delete(ossl_check_OSSL_TARGETS_sk_type(sk), (i))) +#define sk_OSSL_TARGETS_delete_ptr(sk, ptr) ((OSSL_TARGETS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_pop(sk) ((OSSL_TARGETS *)OPENSSL_sk_pop(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_shift(sk) ((OSSL_TARGETS *)OPENSSL_sk_shift(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGETS_sk_type(sk),ossl_check_OSSL_TARGETS_freefunc_type(freefunc)) +#define sk_OSSL_TARGETS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), (idx)) +#define sk_OSSL_TARGETS_set(sk, idx, ptr) ((OSSL_TARGETS *)OPENSSL_sk_set(ossl_check_OSSL_TARGETS_sk_type(sk), (idx), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), pnum) +#define sk_OSSL_TARGETS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_dup(sk) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_copyfunc_type(copyfunc), ossl_check_OSSL_TARGETS_freefunc_type(freefunc))) +#define sk_OSSL_TARGETS_set_cmp_func(sk, cmp) ((sk_OSSL_TARGETS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_compfunc_type(cmp))) + + +DECLARE_ASN1_FUNCTIONS(OSSL_TARGET) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETS) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETING_INFORMATION) + +typedef STACK_OF(OSSL_ISSUER_SERIAL) OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL) +#define sk_OSSL_ISSUER_SERIAL_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_value(sk, idx) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_value(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), (idx))) +#define sk_OSSL_ISSUER_SERIAL_new(cmp) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) +#define sk_OSSL_ISSUER_SERIAL_new_null() ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ISSUER_SERIAL_new_reserve(cmp, n) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp), (n))) +#define sk_OSSL_ISSUER_SERIAL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (n)) +#define sk_OSSL_ISSUER_SERIAL_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_delete(sk, i) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (i))) +#define sk_OSSL_ISSUER_SERIAL_delete_ptr(sk, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_pop(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_pop(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_shift(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_shift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk),ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc)) +#define sk_OSSL_ISSUER_SERIAL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), (idx)) +#define sk_OSSL_ISSUER_SERIAL_set(sk, idx, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_set(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (idx), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), pnum) +#define sk_OSSL_ISSUER_SERIAL_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_dup(sk) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_copyfunc_type(copyfunc), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc))) +#define sk_OSSL_ISSUER_SERIAL_set_cmp_func(sk, cmp) ((sk_OSSL_ISSUER_SERIAL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) + + +#endif diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/x509_vfy.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/x509_vfy.h index 29b0e147adcab1..c9bdc3b39d685d 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/x509_vfy.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/x509_vfy.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509_vfy.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -411,6 +411,7 @@ X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ # define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 # define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 # define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +# define X509_V_ERR_RPK_UNTRUSTED 95 /* Certificate verify flags */ # ifndef OPENSSL_NO_DEPRECATED_1_1_0 @@ -491,71 +492,72 @@ int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); X509_STORE *X509_STORE_new(void); -void X509_STORE_free(X509_STORE *v); -int X509_STORE_lock(X509_STORE *ctx); -int X509_STORE_unlock(X509_STORE *ctx); -int X509_STORE_up_ref(X509_STORE *v); -STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *v); -STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *st); -STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get1_objects(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, const X509_NAME *nm); STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, const X509_NAME *nm); -int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); -int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); -int X509_STORE_set_trust(X509_STORE *ctx, int trust); -int X509_STORE_set1_param(X509_STORE *ctx, const X509_VERIFY_PARAM *pm); -X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *ctx); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); -void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); #define X509_STORE_set_verify_func(ctx, func) \ X509_STORE_set_verify((ctx),(func)) void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, X509_STORE_CTX_verify_fn verify); -X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *ctx); -void X509_STORE_set_verify_cb(X509_STORE *ctx, +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, X509_STORE_CTX_verify_cb verify_cb); # define X509_STORE_set_verify_cb_func(ctx,func) \ X509_STORE_set_verify_cb((ctx),(func)) -X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *ctx); -void X509_STORE_set_get_issuer(X509_STORE *ctx, +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, X509_STORE_CTX_get_issuer_fn get_issuer); -X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *ctx); -void X509_STORE_set_check_issued(X509_STORE *ctx, +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, X509_STORE_CTX_check_issued_fn check_issued); -X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *ctx); -void X509_STORE_set_check_revocation(X509_STORE *ctx, +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, X509_STORE_CTX_check_revocation_fn check_revocation); X509_STORE_CTX_check_revocation_fn - X509_STORE_get_check_revocation(const X509_STORE *ctx); -void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, X509_STORE_CTX_get_crl_fn get_crl); -X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *ctx); -void X509_STORE_set_check_crl(X509_STORE *ctx, +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, X509_STORE_CTX_check_crl_fn check_crl); -X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *ctx); -void X509_STORE_set_cert_crl(X509_STORE *ctx, +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, X509_STORE_CTX_cert_crl_fn cert_crl); -X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *ctx); -void X509_STORE_set_check_policy(X509_STORE *ctx, +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, X509_STORE_CTX_check_policy_fn check_policy); -X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *ctx); -void X509_STORE_set_lookup_certs(X509_STORE *ctx, +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, X509_STORE_CTX_lookup_certs_fn lookup_certs); -X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *ctx); -void X509_STORE_set_lookup_crls(X509_STORE *ctx, +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, X509_STORE_CTX_lookup_crls_fn lookup_crls); #define X509_STORE_set_lookup_crls_cb(ctx, func) \ X509_STORE_set_lookup_crls((ctx), (func)) -X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *ctx); -void X509_STORE_set_cleanup(X509_STORE *ctx, +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, X509_STORE_CTX_cleanup_fn cleanup); -X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); #define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) -int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); -void *X509_STORE_get_ex_data(const X509_STORE *ctx, int idx); +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); X509_STORE_CTX *X509_STORE_CTX_new(void); @@ -565,11 +567,14 @@ int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); void X509_STORE_CTX_free(X509_STORE_CTX *ctx); int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY* rpk); void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, @@ -579,6 +584,8 @@ X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); @@ -600,7 +607,7 @@ X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); # define X509_STORE_get1_crl X509_STORE_CTX_get1_crls #endif -X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); X509_LOOKUP_METHOD *X509_LOOKUP_file(void); X509_LOOKUP_METHOD *X509_LOOKUP_store(void); @@ -685,8 +692,8 @@ X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( const X509_LOOKUP_METHOD *method); -int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); -int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, @@ -730,23 +737,21 @@ void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); -int X509_STORE_load_file(X509_STORE *ctx, const char *file); -int X509_STORE_load_path(X509_STORE *ctx, const char *path); -int X509_STORE_load_store(X509_STORE *ctx, const char *store); -int X509_STORE_load_locations(X509_STORE *ctx, - const char *file, - const char *dir); -int X509_STORE_set_default_paths(X509_STORE *ctx); +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); -int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file, +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_store_ex(X509_STORE *ctx, const char *store, +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file, - const char *dir, OSSL_LIB_CTX *libctx, - const char *propq); -int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OSSL_LIB_CTX *libctx, - const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); #define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) @@ -764,6 +769,7 @@ X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); @@ -773,6 +779,8 @@ int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); @@ -804,6 +812,7 @@ int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, unsigned long flags); unsigned long X509_VERIFY_PARAM_get_flags(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_get_purpose(const X509_VERIFY_PARAM *param); int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/x509v3.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/x509v3.h index 20b67455f2061d..b8dabac35a4915 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/x509v3.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/x509v3.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509v3.h.in * - * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,6 +25,9 @@ # include # include # include +# ifndef OPENSSL_NO_STDIO +# include +# endif #ifdef __cplusplus extern "C" { @@ -146,6 +149,11 @@ typedef struct BASIC_CONSTRAINTS_st { ASN1_INTEGER *pathlen; } BASIC_CONSTRAINTS; +typedef struct OSSL_BASIC_ATTR_CONSTRAINTS_st { + int authority; + ASN1_INTEGER *pathlen; +} OSSL_BASIC_ATTR_CONSTRAINTS; + typedef struct PKEY_USAGE_PERIOD_st { ASN1_GENERALIZEDTIME *notBefore; ASN1_GENERALIZEDTIME *notAfter; @@ -198,6 +206,8 @@ typedef struct ACCESS_DESCRIPTION_st { GENERAL_NAME *location; } ACCESS_DESCRIPTION; +int GENERAL_NAME_set1_X509_NAME(GENERAL_NAME **tgt, const X509_NAME *src); + SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) #define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) #define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) @@ -294,6 +304,7 @@ typedef struct DIST_POINT_NAME_st { /* If relativename then this contains the full distribution point name */ X509_NAME *dpname; } DIST_POINT_NAME; +DECLARE_ASN1_DUP_FUNCTION(DIST_POINT_NAME) /* All existing reasons */ # define CRLDP_ALL_REASONS 0x807f @@ -659,15 +670,16 @@ struct ISSUING_DIST_POINT_st { # define EXFLAG_SAN_CRITICAL 0x80000 # define EXFLAG_NO_FINGERPRINT 0x100000 -# define KU_DIGITAL_SIGNATURE 0x0080 -# define KU_NON_REPUDIATION 0x0040 -# define KU_KEY_ENCIPHERMENT 0x0020 -# define KU_DATA_ENCIPHERMENT 0x0010 -# define KU_KEY_AGREEMENT 0x0008 -# define KU_KEY_CERT_SIGN 0x0004 -# define KU_CRL_SIGN 0x0002 -# define KU_ENCIPHER_ONLY 0x0001 -# define KU_DECIPHER_ONLY 0x8000 +/* https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3 */ +# define KU_DIGITAL_SIGNATURE X509v3_KU_DIGITAL_SIGNATURE +# define KU_NON_REPUDIATION X509v3_KU_NON_REPUDIATION +# define KU_KEY_ENCIPHERMENT X509v3_KU_KEY_ENCIPHERMENT +# define KU_DATA_ENCIPHERMENT X509v3_KU_DATA_ENCIPHERMENT +# define KU_KEY_AGREEMENT X509v3_KU_KEY_AGREEMENT +# define KU_KEY_CERT_SIGN X509v3_KU_KEY_CERT_SIGN +# define KU_CRL_SIGN X509v3_KU_CRL_SIGN +# define KU_ENCIPHER_ONLY X509v3_KU_ENCIPHER_ONLY +# define KU_DECIPHER_ONLY X509v3_KU_DECIPHER_ONLY # define NS_SSL_CLIENT 0x80 # define NS_SSL_SERVER 0x40 @@ -729,7 +741,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) #define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) - +# define X509_PURPOSE_DEFAULT_ANY 0 # define X509_PURPOSE_SSL_CLIENT 1 # define X509_PURPOSE_SSL_SERVER 2 # define X509_PURPOSE_NS_SSL_SERVER 3 @@ -739,9 +751,10 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509_PURPOSE_ANY 7 # define X509_PURPOSE_OCSP_HELPER 8 # define X509_PURPOSE_TIMESTAMP_SIGN 9 +# define X509_PURPOSE_CODE_SIGN 10 # define X509_PURPOSE_MIN 1 -# define X509_PURPOSE_MAX 9 +# define X509_PURPOSE_MAX 10 /* Flags for X509V3_EXT_print() */ @@ -767,6 +780,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509V3_ADD_SILENT 0x10 DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) +DECLARE_ASN1_FUNCTIONS(OSSL_BASIC_ATTR_CONSTRAINTS) DECLARE_ASN1_FUNCTIONS(SXNET) DECLARE_ASN1_FUNCTIONS(SXNETID) @@ -976,7 +990,6 @@ int X509V3_extensions_print(BIO *out, const char *title, int X509_check_ca(X509 *x); int X509_check_purpose(X509 *x, int id, int ca); int X509_supported_extension(X509_EXTENSION *ex); -int X509_PURPOSE_set(int *p, int purpose); int X509_check_issued(X509 *issuer, X509 *subject); int X509_check_akid(const X509 *issuer, const AUTHORITY_KEYID *akid); void X509_set_proxy_flag(X509 *x); @@ -992,22 +1005,26 @@ const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); int X509_PURPOSE_get_count(void); -X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_unused_id(OSSL_LIB_CTX *libctx); int X509_PURPOSE_get_by_sname(const char *sname); int X509_PURPOSE_get_by_id(int id); int X509_PURPOSE_add(int id, int trust, int flags, int (*ck) (const X509_PURPOSE *, const X509 *, int), const char *name, const char *sname, void *arg); +void X509_PURPOSE_cleanup(void); + +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_id(const X509_PURPOSE *); char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); -void X509_PURPOSE_cleanup(void); -int X509_PURPOSE_get_id(const X509_PURPOSE *); +int X509_PURPOSE_set(int *p, int purpose); STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); + /* Flags for X509_check_* functions */ /* @@ -1444,6 +1461,507 @@ const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( void PROFESSION_INFO_set0_registrationNumber( PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); +int OSSL_GENERAL_NAMES_print(BIO *out, GENERAL_NAMES *gens, int indent); + +typedef STACK_OF(X509_ATTRIBUTE) OSSL_ATTRIBUTES_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTES_SYNTAX) + +typedef STACK_OF(USERNOTICE) OSSL_USER_NOTICE_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_USER_NOTICE_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(USERNOTICE, USERNOTICE, USERNOTICE) +#define sk_USERNOTICE_num(sk) OPENSSL_sk_num(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_value(sk, idx) ((USERNOTICE *)OPENSSL_sk_value(ossl_check_const_USERNOTICE_sk_type(sk), (idx))) +#define sk_USERNOTICE_new(cmp) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new(ossl_check_USERNOTICE_compfunc_type(cmp))) +#define sk_USERNOTICE_new_null() ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_null()) +#define sk_USERNOTICE_new_reserve(cmp, n) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_reserve(ossl_check_USERNOTICE_compfunc_type(cmp), (n))) +#define sk_USERNOTICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_USERNOTICE_sk_type(sk), (n)) +#define sk_USERNOTICE_free(sk) OPENSSL_sk_free(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_zero(sk) OPENSSL_sk_zero(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_delete(sk, i) ((USERNOTICE *)OPENSSL_sk_delete(ossl_check_USERNOTICE_sk_type(sk), (i))) +#define sk_USERNOTICE_delete_ptr(sk, ptr) ((USERNOTICE *)OPENSSL_sk_delete_ptr(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_pop(sk) ((USERNOTICE *)OPENSSL_sk_pop(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_shift(sk) ((USERNOTICE *)OPENSSL_sk_shift(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_USERNOTICE_sk_type(sk),ossl_check_USERNOTICE_freefunc_type(freefunc)) +#define sk_USERNOTICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), (idx)) +#define sk_USERNOTICE_set(sk, idx, ptr) ((USERNOTICE *)OPENSSL_sk_set(ossl_check_USERNOTICE_sk_type(sk), (idx), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), pnum) +#define sk_USERNOTICE_sort(sk) OPENSSL_sk_sort(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_dup(sk) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_dup(ossl_check_const_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_deep_copy(ossl_check_const_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_copyfunc_type(copyfunc), ossl_check_USERNOTICE_freefunc_type(freefunc))) +#define sk_USERNOTICE_set_cmp_func(sk, cmp) ((sk_USERNOTICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_compfunc_type(cmp))) + + +typedef struct OSSL_ROLE_SPEC_CERT_ID_st { + GENERAL_NAME *roleName; + GENERAL_NAME *roleCertIssuer; + ASN1_INTEGER *roleCertSerialNumber; + GENERAL_NAMES *roleCertLocator; +} OSSL_ROLE_SPEC_CERT_ID; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID) +#define sk_OSSL_ROLE_SPEC_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_value(sk, idx) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_value(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new(cmp) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_null() ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_reserve(cmp, n) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp), (n))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (n)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete(sk, i) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (i))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete_ptr(sk, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_pop(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_shift(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_shift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk),ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), (idx)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set(sk, idx, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_set(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), pnum) +#define sk_OSSL_ROLE_SPEC_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_dup(sk) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_copyfunc_type(copyfunc), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set_cmp_func(sk, cmp) ((sk_OSSL_ROLE_SPEC_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) + + +typedef STACK_OF(OSSL_ROLE_SPEC_CERT_ID) OSSL_ROLE_SPEC_CERT_ID_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID_SYNTAX) +typedef struct OSSL_HASH_st { + X509_ALGOR *algorithmIdentifier; + ASN1_BIT_STRING *hashValue; +} OSSL_HASH; + +typedef struct OSSL_INFO_SYNTAX_POINTER_st { + GENERAL_NAMES *name; + OSSL_HASH *hash; +} OSSL_INFO_SYNTAX_POINTER; + +# define OSSL_INFO_SYNTAX_TYPE_CONTENT 0 +# define OSSL_INFO_SYNTAX_TYPE_POINTER 1 + +typedef struct OSSL_INFO_SYNTAX_st { + int type; + union { + ASN1_STRING *content; + OSSL_INFO_SYNTAX_POINTER *pointer; + } choice; +} OSSL_INFO_SYNTAX; + +typedef struct OSSL_PRIVILEGE_POLICY_ID_st { + ASN1_OBJECT *privilegePolicy; + OSSL_INFO_SYNTAX *privPolSyntax; +} OSSL_PRIVILEGE_POLICY_ID; + +typedef struct OSSL_ATTRIBUTE_DESCRIPTOR_st { + ASN1_OBJECT *identifier; + ASN1_STRING *attributeSyntax; + ASN1_UTF8STRING *name; + ASN1_UTF8STRING *description; + OSSL_PRIVILEGE_POLICY_ID *dominationRule; +} OSSL_ATTRIBUTE_DESCRIPTOR; + +DECLARE_ASN1_FUNCTIONS(OSSL_HASH) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX_POINTER) +DECLARE_ASN1_FUNCTIONS(OSSL_PRIVILEGE_POLICY_ID) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_DESCRIPTOR) + +typedef struct OSSL_TIME_SPEC_ABSOLUTE_st { + ASN1_GENERALIZEDTIME *startTime; + ASN1_GENERALIZEDTIME *endTime; +} OSSL_TIME_SPEC_ABSOLUTE; + +typedef struct OSSL_DAY_TIME_st { + ASN1_INTEGER *hour; + ASN1_INTEGER *minute; + ASN1_INTEGER *second; +} OSSL_DAY_TIME; + +typedef struct OSSL_DAY_TIME_BAND_st { + OSSL_DAY_TIME *startDayTime; + OSSL_DAY_TIME *endDayTime; +} OSSL_DAY_TIME_BAND; + +# define OSSL_NAMED_DAY_TYPE_INT 0 +# define OSSL_NAMED_DAY_TYPE_BIT 1 +# define OSSL_NAMED_DAY_INT_SUN 1 +# define OSSL_NAMED_DAY_INT_MON 2 +# define OSSL_NAMED_DAY_INT_TUE 3 +# define OSSL_NAMED_DAY_INT_WED 4 +# define OSSL_NAMED_DAY_INT_THU 5 +# define OSSL_NAMED_DAY_INT_FRI 6 +# define OSSL_NAMED_DAY_INT_SAT 7 +# define OSSL_NAMED_DAY_BIT_SUN 0 +# define OSSL_NAMED_DAY_BIT_MON 1 +# define OSSL_NAMED_DAY_BIT_TUE 2 +# define OSSL_NAMED_DAY_BIT_WED 3 +# define OSSL_NAMED_DAY_BIT_THU 4 +# define OSSL_NAMED_DAY_BIT_FRI 5 +# define OSSL_NAMED_DAY_BIT_SAT 6 + +typedef struct OSSL_NAMED_DAY_st { + int type; + union { + ASN1_INTEGER *intNamedDays; + ASN1_BIT_STRING *bitNamedDays; + } choice; +} OSSL_NAMED_DAY; + +# define OSSL_TIME_SPEC_X_DAY_OF_FIRST 0 +# define OSSL_TIME_SPEC_X_DAY_OF_SECOND 1 +# define OSSL_TIME_SPEC_X_DAY_OF_THIRD 2 +# define OSSL_TIME_SPEC_X_DAY_OF_FOURTH 3 +# define OSSL_TIME_SPEC_X_DAY_OF_FIFTH 4 + +typedef struct OSSL_TIME_SPEC_X_DAY_OF_st { + int type; + union { + OSSL_NAMED_DAY *first; + OSSL_NAMED_DAY *second; + OSSL_NAMED_DAY *third; + OSSL_NAMED_DAY *fourth; + OSSL_NAMED_DAY *fifth; + } choice; +} OSSL_TIME_SPEC_X_DAY_OF; + +# define OSSL_TIME_SPEC_DAY_TYPE_INT 0 +# define OSSL_TIME_SPEC_DAY_TYPE_BIT 1 +# define OSSL_TIME_SPEC_DAY_TYPE_DAY_OF 2 +# define OSSL_TIME_SPEC_DAY_BIT_SUN 0 +# define OSSL_TIME_SPEC_DAY_BIT_MON 1 +# define OSSL_TIME_SPEC_DAY_BIT_TUE 2 +# define OSSL_TIME_SPEC_DAY_BIT_WED 3 +# define OSSL_TIME_SPEC_DAY_BIT_THU 4 +# define OSSL_TIME_SPEC_DAY_BIT_FRI 5 +# define OSSL_TIME_SPEC_DAY_BIT_SAT 6 +# define OSSL_TIME_SPEC_DAY_INT_SUN 1 +# define OSSL_TIME_SPEC_DAY_INT_MON 2 +# define OSSL_TIME_SPEC_DAY_INT_TUE 3 +# define OSSL_TIME_SPEC_DAY_INT_WED 4 +# define OSSL_TIME_SPEC_DAY_INT_THU 5 +# define OSSL_TIME_SPEC_DAY_INT_FRI 6 +# define OSSL_TIME_SPEC_DAY_INT_SAT 7 + +typedef struct OSSL_TIME_SPEC_DAY_st { + int type; + union { + STACK_OF(ASN1_INTEGER) *intDay; + ASN1_BIT_STRING *bitDay; + OSSL_TIME_SPEC_X_DAY_OF *dayOf; + } choice; +} OSSL_TIME_SPEC_DAY; + +# define OSSL_TIME_SPEC_WEEKS_TYPE_ALL 0 +# define OSSL_TIME_SPEC_WEEKS_TYPE_INT 1 +# define OSSL_TIME_SPEC_WEEKS_TYPE_BIT 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_1 0 +# define OSSL_TIME_SPEC_BIT_WEEKS_2 1 +# define OSSL_TIME_SPEC_BIT_WEEKS_3 2 +# define OSSL_TIME_SPEC_BIT_WEEKS_4 3 +# define OSSL_TIME_SPEC_BIT_WEEKS_5 4 + +typedef struct OSSL_TIME_SPEC_WEEKS_st { + int type; + union { + ASN1_NULL *allWeeks; + STACK_OF(ASN1_INTEGER) *intWeek; + ASN1_BIT_STRING *bitWeek; + } choice; +} OSSL_TIME_SPEC_WEEKS; + +# define OSSL_TIME_SPEC_MONTH_TYPE_ALL 0 +# define OSSL_TIME_SPEC_MONTH_TYPE_INT 1 +# define OSSL_TIME_SPEC_MONTH_TYPE_BIT 2 +# define OSSL_TIME_SPEC_INT_MONTH_JAN 1 +# define OSSL_TIME_SPEC_INT_MONTH_FEB 2 +# define OSSL_TIME_SPEC_INT_MONTH_MAR 3 +# define OSSL_TIME_SPEC_INT_MONTH_APR 4 +# define OSSL_TIME_SPEC_INT_MONTH_MAY 5 +# define OSSL_TIME_SPEC_INT_MONTH_JUN 6 +# define OSSL_TIME_SPEC_INT_MONTH_JUL 7 +# define OSSL_TIME_SPEC_INT_MONTH_AUG 8 +# define OSSL_TIME_SPEC_INT_MONTH_SEP 9 +# define OSSL_TIME_SPEC_INT_MONTH_OCT 10 +# define OSSL_TIME_SPEC_INT_MONTH_NOV 11 +# define OSSL_TIME_SPEC_INT_MONTH_DEC 12 +# define OSSL_TIME_SPEC_BIT_MONTH_JAN 0 +# define OSSL_TIME_SPEC_BIT_MONTH_FEB 1 +# define OSSL_TIME_SPEC_BIT_MONTH_MAR 2 +# define OSSL_TIME_SPEC_BIT_MONTH_APR 3 +# define OSSL_TIME_SPEC_BIT_MONTH_MAY 4 +# define OSSL_TIME_SPEC_BIT_MONTH_JUN 5 +# define OSSL_TIME_SPEC_BIT_MONTH_JUL 6 +# define OSSL_TIME_SPEC_BIT_MONTH_AUG 7 +# define OSSL_TIME_SPEC_BIT_MONTH_SEP 8 +# define OSSL_TIME_SPEC_BIT_MONTH_OCT 9 +# define OSSL_TIME_SPEC_BIT_MONTH_NOV 10 +# define OSSL_TIME_SPEC_BIT_MONTH_DEC 11 + +typedef struct OSSL_TIME_SPEC_MONTH_st { + int type; + union { + ASN1_NULL *allMonths; + STACK_OF(ASN1_INTEGER) *intMonth; + ASN1_BIT_STRING *bitMonth; + } choice; +} OSSL_TIME_SPEC_MONTH; + +typedef struct OSSL_TIME_PERIOD_st { + STACK_OF(OSSL_DAY_TIME_BAND) *timesOfDay; + OSSL_TIME_SPEC_DAY *days; + OSSL_TIME_SPEC_WEEKS *weeks; + OSSL_TIME_SPEC_MONTH *months; + STACK_OF(ASN1_INTEGER) *years; +} OSSL_TIME_PERIOD; + +# define OSSL_TIME_SPEC_TIME_TYPE_ABSOLUTE 0 +# define OSSL_TIME_SPEC_TIME_TYPE_PERIODIC 1 + +typedef struct OSSL_TIME_SPEC_TIME_st { + int type; + union { + OSSL_TIME_SPEC_ABSOLUTE *absolute; + STACK_OF(OSSL_TIME_PERIOD) *periodic; + } choice; +} OSSL_TIME_SPEC_TIME; + +typedef struct OSSL_TIME_SPEC_st { + OSSL_TIME_SPEC_TIME *time; + ASN1_BOOLEAN notThisTime; + ASN1_INTEGER *timeZone; +} OSSL_TIME_SPEC; + +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME_BAND) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_WEEKS) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_MONTH) +DECLARE_ASN1_FUNCTIONS(OSSL_NAMED_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_X_DAY_OF) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_ABSOLUTE) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_PERIOD) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TIME_PERIOD, OSSL_TIME_PERIOD, OSSL_TIME_PERIOD) +#define sk_OSSL_TIME_PERIOD_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_value(sk, idx) ((OSSL_TIME_PERIOD *)OPENSSL_sk_value(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), (idx))) +#define sk_OSSL_TIME_PERIOD_new(cmp) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) +#define sk_OSSL_TIME_PERIOD_new_null() ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TIME_PERIOD_new_reserve(cmp, n) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp), (n))) +#define sk_OSSL_TIME_PERIOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (n)) +#define sk_OSSL_TIME_PERIOD_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_delete(sk, i) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (i))) +#define sk_OSSL_TIME_PERIOD_delete_ptr(sk, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_pop(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_pop(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_shift(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_shift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk),ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc)) +#define sk_OSSL_TIME_PERIOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), (idx)) +#define sk_OSSL_TIME_PERIOD_set(sk, idx, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_set(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (idx), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), pnum) +#define sk_OSSL_TIME_PERIOD_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_dup(sk) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_copyfunc_type(copyfunc), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc))) +#define sk_OSSL_TIME_PERIOD_set_cmp_func(sk, cmp) ((sk_OSSL_TIME_PERIOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND) +#define sk_OSSL_DAY_TIME_BAND_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_value(sk, idx) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_value(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), (idx))) +#define sk_OSSL_DAY_TIME_BAND_new(cmp) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) +#define sk_OSSL_DAY_TIME_BAND_new_null() ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_null()) +#define sk_OSSL_DAY_TIME_BAND_new_reserve(cmp, n) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp), (n))) +#define sk_OSSL_DAY_TIME_BAND_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (n)) +#define sk_OSSL_DAY_TIME_BAND_free(sk) OPENSSL_sk_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_delete(sk, i) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (i))) +#define sk_OSSL_DAY_TIME_BAND_delete_ptr(sk, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_pop(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_pop(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_shift(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_shift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk),ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc)) +#define sk_OSSL_DAY_TIME_BAND_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), (idx)) +#define sk_OSSL_DAY_TIME_BAND_set(sk, idx, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_set(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (idx), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), pnum) +#define sk_OSSL_DAY_TIME_BAND_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_dup(sk) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_dup(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_copyfunc_type(copyfunc), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc))) +#define sk_OSSL_DAY_TIME_BAND_set_cmp_func(sk, cmp) ((sk_OSSL_DAY_TIME_BAND_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) + + +/* Attribute Type and Value */ +typedef struct atav_st { + ASN1_OBJECT *type; + ASN1_TYPE *value; +} OSSL_ATAV; + +typedef struct ATTRIBUTE_TYPE_MAPPING_st { + ASN1_OBJECT *local; + ASN1_OBJECT *remote; +} OSSL_ATTRIBUTE_TYPE_MAPPING; + +typedef struct ATTRIBUTE_VALUE_MAPPING_st { + OSSL_ATAV *local; + OSSL_ATAV *remote; +} OSSL_ATTRIBUTE_VALUE_MAPPING; + +# define OSSL_ATTR_MAP_TYPE 0 +# define OSSL_ATTR_MAP_VALUE 1 + +typedef struct ATTRIBUTE_MAPPING_st { + int type; + union { + OSSL_ATTRIBUTE_TYPE_MAPPING *typeMappings; + OSSL_ATTRIBUTE_VALUE_MAPPING *typeValueMappings; + } choice; +} OSSL_ATTRIBUTE_MAPPING; + +typedef STACK_OF(OSSL_ATTRIBUTE_MAPPING) OSSL_ATTRIBUTE_MAPPINGS; +DECLARE_ASN1_FUNCTIONS(OSSL_ATAV) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_TYPE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_VALUE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPINGS) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING) +#define sk_OSSL_ATTRIBUTE_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_value(sk, idx) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_value(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new(cmp) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_null() ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_reserve(cmp, n) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp), (n))) +#define sk_OSSL_ATTRIBUTE_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (n)) +#define sk_OSSL_ATTRIBUTE_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete(sk, i) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (i))) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete_ptr(sk, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_pop(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_shift(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_shift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk),ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc)) +#define sk_OSSL_ATTRIBUTE_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), (idx)) +#define sk_OSSL_ATTRIBUTE_MAPPING_set(sk, idx, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_set(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), pnum) +#define sk_OSSL_ATTRIBUTE_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_dup(sk) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_copyfunc_type(copyfunc), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc))) +#define sk_OSSL_ATTRIBUTE_MAPPING_set_cmp_func(sk, cmp) ((sk_OSSL_ATTRIBUTE_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) + + +# define OSSL_AAA_ATTRIBUTE_TYPE 0 +# define OSSL_AAA_ATTRIBUTE_VALUES 1 + +typedef struct ALLOWED_ATTRIBUTES_CHOICE_st { + int type; + union { + ASN1_OBJECT *attributeType; + X509_ATTRIBUTE *attributeTypeandValues; + } choice; +} OSSL_ALLOWED_ATTRIBUTES_CHOICE; + +typedef struct ALLOWED_ATTRIBUTES_ITEM_st { + STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *attributes; + GENERAL_NAME *holderDomain; +} OSSL_ALLOWED_ATTRIBUTES_ITEM; + +typedef STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) OSSL_ALLOWED_ATTRIBUTES_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_CHOICE) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_ITEM) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_SYNTAX) + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) + + +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) + + +typedef struct AA_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + int dp_reasons; + ASN1_BOOLEAN indirectCRL; + ASN1_BOOLEAN containsUserAttributeCerts; + ASN1_BOOLEAN containsAACerts; + ASN1_BOOLEAN containsSOAPublicKeyCerts; +} OSSL_AA_DIST_POINT; + +DECLARE_ASN1_FUNCTIONS(OSSL_AA_DIST_POINT) + # ifdef __cplusplus } # endif diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/progs.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/progs.h index be55f61503d405..1b62ec37dec130 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/progs.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/progs.h @@ -56,6 +56,7 @@ extern int s_client_main(int argc, char *argv[]); extern int s_server_main(int argc, char *argv[]); extern int s_time_main(int argc, char *argv[]); extern int sess_id_main(int argc, char *argv[]); +extern int skeyutl_main(int argc, char *argv[]); extern int smime_main(int argc, char *argv[]); extern int speed_main(int argc, char *argv[]); extern int spkac_main(int argc, char *argv[]); @@ -110,6 +111,7 @@ extern const OPTIONS s_client_options[]; extern const OPTIONS s_server_options[]; extern const OPTIONS s_time_options[]; extern const OPTIONS sess_id_options[]; +extern const OPTIONS skeyutl_options[]; extern const OPTIONS smime_options[]; extern const OPTIONS speed_options[]; extern const OPTIONS spkac_options[]; diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/openssl-cl.gypi b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/openssl-cl.gypi index 235d0cac01e4c0..0a31a94ea4d4f1 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/openssl-cl.gypi +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/openssl-cl.gypi @@ -82,6 +82,7 @@ 'openssl/apps/s_server.c', 'openssl/apps/s_time.c', 'openssl/apps/sess_id.c', + 'openssl/apps/skeyutl.c', 'openssl/apps/smime.c', 'openssl/apps/speed.c', 'openssl/apps/spkac.c', @@ -97,12 +98,14 @@ 'openssl/apps/lib/app_rand.c', 'openssl/apps/lib/app_x509.c', 'openssl/apps/lib/apps.c', + 'openssl/apps/lib/apps_opt_printf.c', 'openssl/apps/lib/apps_ui.c', 'openssl/apps/lib/columns.c', 'openssl/apps/lib/engine.c', 'openssl/apps/lib/engine_loader.c', 'openssl/apps/lib/fmt.c', 'openssl/apps/lib/http_server.c', + 'openssl/apps/lib/log.c', 'openssl/apps/lib/names.c', 'openssl/apps/lib/opt.c', 'openssl/apps/lib/s_cb.c', diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/openssl-fips.gypi b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/openssl-fips.gypi index d7a8a61595a09a..f8011a09b7bff6 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/openssl-fips.gypi +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/openssl-fips.gypi @@ -96,14 +96,15 @@ 'openssl/crypto/evp/kem.c', 'openssl/crypto/evp/keymgmt_lib.c', 'openssl/crypto/evp/keymgmt_meth.c', - 'openssl/crypto/evp/m_sigver.c', 'openssl/crypto/evp/mac_lib.c', 'openssl/crypto/evp/mac_meth.c', 'openssl/crypto/evp/p_lib.c', 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -111,6 +112,8 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', @@ -140,6 +143,16 @@ 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -148,6 +161,7 @@ 'openssl/crypto/modes/ofb128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/property/defn_cache.c', 'openssl/crypto/property/property.c', 'openssl/crypto/property/property_parse.c', @@ -176,7 +190,23 @@ 'openssl/crypto/sha/sha256.c', 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/stack/stack.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/providers/common/der/der_rsa_sig.c', 'openssl/providers/common/bio_prov.c', 'openssl/providers/common/capabilities.c', @@ -185,6 +215,7 @@ 'openssl/providers/common/provider_util.c', 'openssl/providers/common/securitycheck.c', 'openssl/providers/common/securitycheck_fips.c', + 'openssl/providers/fips/fipsindicator.c', 'openssl/providers/fips/fipsprov.c', 'openssl/providers/fips/self_test.c', 'openssl/providers/fips/self_test_kats.c', @@ -222,6 +253,8 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -229,29 +262,39 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/cmac_prov.c', 'openssl/providers/implementations/macs/gmac_prov.c', 'openssl/providers/implementations/macs/hmac_prov.c', 'openssl/providers/implementations/macs/kmac_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', + 'openssl/providers/implementations/rands/fips_crng_test.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/signature/dsa_sig.c', 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -262,7 +305,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/fips/fips_entry.c', ], @@ -280,6 +323,7 @@ './config/archs/darwin-i386-cc/asm_avx2/crypto/des/crypt586.S', './config/archs/darwin-i386-cc/asm_avx2/crypto/des/des-586.S', './config/archs/darwin-i386-cc/asm_avx2/crypto/ec/ecp_nistz256-x86.S', + './config/archs/darwin-i386-cc/asm_avx2/crypto/params_idx.c', './config/archs/darwin-i386-cc/asm_avx2/crypto/x86cpuid.S', './config/archs/darwin-i386-cc/asm_avx2/crypto/md5/md5-586.S', './config/archs/darwin-i386-cc/asm_avx2/crypto/modes/ghash-x86.S', @@ -296,7 +340,9 @@ './config/archs/darwin-i386-cc/asm_avx2/providers/common/der/der_dsa_gen.c', './config/archs/darwin-i386-cc/asm_avx2/providers/common/der/der_ec_gen.c', './config/archs/darwin-i386-cc/asm_avx2/providers/common/der/der_ecx_gen.c', + './config/archs/darwin-i386-cc/asm_avx2/providers/common/der/der_ml_dsa_gen.c', './config/archs/darwin-i386-cc/asm_avx2/providers/common/der/der_rsa_gen.c', + './config/archs/darwin-i386-cc/asm_avx2/providers/common/der/der_slh_dsa_gen.c', './config/archs/darwin-i386-cc/asm_avx2/providers/common/der/der_wrap_gen.c', ], diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/openssl.gypi b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/openssl.gypi index 1611dce927f3cc..a72215cf5cfc07 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/openssl.gypi +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/openssl.gypi @@ -7,14 +7,15 @@ 'openssl/ssl/d1_srtp.c', 'openssl/ssl/methods.c', 'openssl/ssl/pqueue.c', + 'openssl/ssl/priority_queue.c', 'openssl/ssl/s3_enc.c', 'openssl/ssl/s3_lib.c', 'openssl/ssl/s3_msg.c', 'openssl/ssl/ssl_asn1.c', 'openssl/ssl/ssl_cert.c', + 'openssl/ssl/ssl_cert_comp.c', 'openssl/ssl/ssl_ciph.c', 'openssl/ssl/ssl_conf.c', - 'openssl/ssl/ssl_err.c', 'openssl/ssl/ssl_err_legacy.c', 'openssl/ssl/ssl_init.c', 'openssl/ssl/ssl_lib.c', @@ -31,12 +32,60 @@ 'openssl/ssl/tls13_enc.c', 'openssl/ssl/tls_depr.c', 'openssl/ssl/tls_srp.c', - 'openssl/ssl/record/dtls1_bitmap.c', + 'openssl/ssl/quic/cc_newreno.c', + 'openssl/ssl/quic/json_enc.c', + 'openssl/ssl/quic/qlog.c', + 'openssl/ssl/quic/qlog_event_helpers.c', + 'openssl/ssl/quic/quic_ackm.c', + 'openssl/ssl/quic/quic_cfq.c', + 'openssl/ssl/quic/quic_channel.c', + 'openssl/ssl/quic/quic_demux.c', + 'openssl/ssl/quic/quic_engine.c', + 'openssl/ssl/quic/quic_fc.c', + 'openssl/ssl/quic/quic_fifd.c', + 'openssl/ssl/quic/quic_impl.c', + 'openssl/ssl/quic/quic_lcidm.c', + 'openssl/ssl/quic/quic_method.c', + 'openssl/ssl/quic/quic_obj.c', + 'openssl/ssl/quic/quic_port.c', + 'openssl/ssl/quic/quic_rcidm.c', + 'openssl/ssl/quic/quic_reactor.c', + 'openssl/ssl/quic/quic_reactor_wait_ctx.c', + 'openssl/ssl/quic/quic_record_rx.c', + 'openssl/ssl/quic/quic_record_shared.c', + 'openssl/ssl/quic/quic_record_tx.c', + 'openssl/ssl/quic/quic_record_util.c', + 'openssl/ssl/quic/quic_rstream.c', + 'openssl/ssl/quic/quic_rx_depack.c', + 'openssl/ssl/quic/quic_sf_list.c', + 'openssl/ssl/quic/quic_srt_gen.c', + 'openssl/ssl/quic/quic_srtm.c', + 'openssl/ssl/quic/quic_sstream.c', + 'openssl/ssl/quic/quic_statm.c', + 'openssl/ssl/quic/quic_stream_map.c', + 'openssl/ssl/quic/quic_thread_assist.c', + 'openssl/ssl/quic/quic_tls.c', + 'openssl/ssl/quic/quic_tls_api.c', + 'openssl/ssl/quic/quic_trace.c', + 'openssl/ssl/quic/quic_tserver.c', + 'openssl/ssl/quic/quic_txp.c', + 'openssl/ssl/quic/quic_txpim.c', + 'openssl/ssl/quic/quic_types.c', + 'openssl/ssl/quic/quic_wire.c', + 'openssl/ssl/quic/quic_wire_pkt.c', + 'openssl/ssl/quic/uint_set.c', 'openssl/ssl/record/rec_layer_d1.c', 'openssl/ssl/record/rec_layer_s3.c', - 'openssl/ssl/record/ssl3_buffer.c', - 'openssl/ssl/record/ssl3_record.c', - 'openssl/ssl/record/ssl3_record_tls13.c', + 'openssl/ssl/record/methods/dtls_meth.c', + 'openssl/ssl/record/methods/ssl3_meth.c', + 'openssl/ssl/record/methods/tls13_meth.c', + 'openssl/ssl/record/methods/tls1_meth.c', + 'openssl/ssl/record/methods/tls_common.c', + 'openssl/ssl/record/methods/tls_multib.c', + 'openssl/ssl/record/methods/tlsany_meth.c', + 'openssl/ssl/rio/poll_builder.c', + 'openssl/ssl/rio/poll_immediate.c', + 'openssl/ssl/rio/rio_notifier.c', 'openssl/ssl/statem/extensions.c', 'openssl/ssl/statem/extensions_clnt.c', 'openssl/ssl/statem/extensions_cust.c', @@ -147,6 +196,7 @@ 'openssl/crypto/bio/bss_conn.c', 'openssl/crypto/bio/bss_core.c', 'openssl/crypto/bio/bss_dgram.c', + 'openssl/crypto/bio/bss_dgram_pair.c', 'openssl/crypto/bio/bss_fd.c', 'openssl/crypto/bio/bss_file.c', 'openssl/crypto/bio/bss_log.c', @@ -202,6 +252,7 @@ 'openssl/crypto/cmp/cmp_client.c', 'openssl/crypto/cmp/cmp_ctx.c', 'openssl/crypto/cmp/cmp_err.c', + 'openssl/crypto/cmp/cmp_genm.c', 'openssl/crypto/cmp/cmp_hdr.c', 'openssl/crypto/cmp/cmp_http.c', 'openssl/crypto/cmp/cmp_msg.c', @@ -376,7 +427,9 @@ 'openssl/crypto/err/err_all.c', 'openssl/crypto/err/err_all_legacy.c', 'openssl/crypto/err/err_blocks.c', + 'openssl/crypto/err/err_mark.c', 'openssl/crypto/err/err_prn.c', + 'openssl/crypto/err/err_save.c', 'openssl/crypto/ess/ess_asn1.c', 'openssl/crypto/ess/ess_err.c', 'openssl/crypto/ess/ess_lib.c', @@ -459,7 +512,9 @@ 'openssl/crypto/evp/pmeth_check.c', 'openssl/crypto/evp/pmeth_gn.c', 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', 'openssl/crypto/ffc/ffc_backend.c', 'openssl/crypto/ffc/ffc_dh.c', 'openssl/crypto/ffc/ffc_key_generate.c', @@ -467,7 +522,11 @@ 'openssl/crypto/ffc/ffc_params.c', 'openssl/crypto/ffc/ffc_params_generate.c', 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', 'openssl/crypto/hmac/hmac.c', + 'openssl/crypto/hpke/hpke.c', + 'openssl/crypto/hpke/hpke_util.c', 'openssl/crypto/http/http_client.c', 'openssl/crypto/http/http_err.c', 'openssl/crypto/http/http_lib.c', @@ -481,6 +540,7 @@ 'openssl/crypto/lhash/lhash.c', 'openssl/crypto/asn1_dsa.c', 'openssl/crypto/bsearch.c', + 'openssl/crypto/comp_methods.c', 'openssl/crypto/context.c', 'openssl/crypto/core_algorithm.c', 'openssl/crypto/core_fetch.c', @@ -490,10 +550,13 @@ 'openssl/crypto/cryptlib.c', 'openssl/crypto/ctype.c', 'openssl/crypto/cversion.c', + 'openssl/crypto/defaults.c', 'openssl/crypto/der_writer.c', + 'openssl/crypto/deterministic_nonce.c', 'openssl/crypto/ebcdic.c', 'openssl/crypto/ex_data.c', 'openssl/crypto/getenv.c', + 'openssl/crypto/indicator_core.c', 'openssl/crypto/info.c', 'openssl/crypto/init.c', 'openssl/crypto/initthread.c', @@ -517,12 +580,16 @@ 'openssl/crypto/provider_core.c', 'openssl/crypto/provider_predefined.c', 'openssl/crypto/punycode.c', + 'openssl/crypto/quic_vlint.c', 'openssl/crypto/self_test_core.c', + 'openssl/crypto/sleep.c', 'openssl/crypto/sparse_array.c', + 'openssl/crypto/ssl_err.c', 'openssl/crypto/threads_lib.c', 'openssl/crypto/threads_none.c', 'openssl/crypto/threads_pthread.c', 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', 'openssl/crypto/trace.c', 'openssl/crypto/uid.c', 'openssl/crypto/md4/md4_dgst.c', @@ -532,6 +599,15 @@ 'openssl/crypto/md5/md5_sha1.c', 'openssl/crypto/mdc2/mdc2_one.c', 'openssl/crypto/mdc2/mdc2dgst.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', 'openssl/crypto/modes/cbc128.c', 'openssl/crypto/modes/ccm128.c', 'openssl/crypto/modes/cfb128.c', @@ -543,6 +619,7 @@ 'openssl/crypto/modes/siv128.c', 'openssl/crypto/modes/wrap128.c', 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', 'openssl/crypto/objects/o_names.c', 'openssl/crypto/objects/obj_dat.c', 'openssl/crypto/objects/obj_err.c', @@ -606,6 +683,7 @@ 'openssl/crypto/rand/rand_lib.c', 'openssl/crypto/rand/rand_meth.c', 'openssl/crypto/rand/rand_pool.c', + 'openssl/crypto/rand/rand_uniform.c', 'openssl/crypto/rand/randfile.c', 'openssl/crypto/rc2/rc2_cbc.c', 'openssl/crypto/rc2/rc2_ecb.c', @@ -652,6 +730,16 @@ 'openssl/crypto/sha/sha3.c', 'openssl/crypto/sha/sha512.c', 'openssl/crypto/siphash/siphash.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', 'openssl/crypto/sm2/sm2_crypt.c', 'openssl/crypto/sm2/sm2_err.c', 'openssl/crypto/sm2/sm2_key.c', @@ -669,6 +757,12 @@ 'openssl/crypto/store/store_register.c', 'openssl/crypto/store/store_result.c', 'openssl/crypto/store/store_strings.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', 'openssl/crypto/ts/ts_asn1.c', 'openssl/crypto/ts/ts_conf.c', 'openssl/crypto/ts/ts_err.c', @@ -697,14 +791,22 @@ 'openssl/crypto/x509/pcy_map.c', 'openssl/crypto/x509/pcy_node.c', 'openssl/crypto/x509/pcy_tree.c', + 'openssl/crypto/x509/t_acert.c', 'openssl/crypto/x509/t_crl.c', 'openssl/crypto/x509/t_req.c', 'openssl/crypto/x509/t_x509.c', + 'openssl/crypto/x509/v3_aaa.c', + 'openssl/crypto/x509/v3_ac_tgt.c', 'openssl/crypto/x509/v3_addr.c', 'openssl/crypto/x509/v3_admis.c', 'openssl/crypto/x509/v3_akeya.c', 'openssl/crypto/x509/v3_akid.c', 'openssl/crypto/x509/v3_asid.c', + 'openssl/crypto/x509/v3_attrdesc.c', + 'openssl/crypto/x509/v3_attrmap.c', + 'openssl/crypto/x509/v3_audit_id.c', + 'openssl/crypto/x509/v3_authattid.c', + 'openssl/crypto/x509/v3_battcons.c', 'openssl/crypto/x509/v3_bcons.c', 'openssl/crypto/x509/v3_bitst.c', 'openssl/crypto/x509/v3_conf.c', @@ -713,12 +815,17 @@ 'openssl/crypto/x509/v3_enum.c', 'openssl/crypto/x509/v3_extku.c', 'openssl/crypto/x509/v3_genn.c', + 'openssl/crypto/x509/v3_group_ac.c', 'openssl/crypto/x509/v3_ia5.c', + 'openssl/crypto/x509/v3_ind_iss.c', 'openssl/crypto/x509/v3_info.c', 'openssl/crypto/x509/v3_int.c', + 'openssl/crypto/x509/v3_iobo.c', 'openssl/crypto/x509/v3_ist.c', 'openssl/crypto/x509/v3_lib.c', 'openssl/crypto/x509/v3_ncons.c', + 'openssl/crypto/x509/v3_no_ass.c', + 'openssl/crypto/x509/v3_no_rev_avail.c', 'openssl/crypto/x509/v3_pci.c', 'openssl/crypto/x509/v3_pcia.c', 'openssl/crypto/x509/v3_pcons.c', @@ -726,13 +833,20 @@ 'openssl/crypto/x509/v3_pmaps.c', 'openssl/crypto/x509/v3_prn.c', 'openssl/crypto/x509/v3_purp.c', + 'openssl/crypto/x509/v3_rolespec.c', 'openssl/crypto/x509/v3_san.c', + 'openssl/crypto/x509/v3_sda.c', + 'openssl/crypto/x509/v3_single_use.c', 'openssl/crypto/x509/v3_skid.c', + 'openssl/crypto/x509/v3_soa_id.c', 'openssl/crypto/x509/v3_sxnet.c', + 'openssl/crypto/x509/v3_timespec.c', 'openssl/crypto/x509/v3_tlsf.c', + 'openssl/crypto/x509/v3_usernotice.c', 'openssl/crypto/x509/v3_utf8.c', 'openssl/crypto/x509/v3_utl.c', 'openssl/crypto/x509/v3err.c', + 'openssl/crypto/x509/x509_acert.c', 'openssl/crypto/x509/x509_att.c', 'openssl/crypto/x509/x509_cmp.c', 'openssl/crypto/x509/x509_d2.c', @@ -750,6 +864,7 @@ 'openssl/crypto/x509/x509_v3.c', 'openssl/crypto/x509/x509_vfy.c', 'openssl/crypto/x509/x509_vpm.c', + 'openssl/crypto/x509/x509aset.c', 'openssl/crypto/x509/x509cset.c', 'openssl/crypto/x509/x509name.c', 'openssl/crypto/x509/x509rset.c', @@ -759,6 +874,7 @@ 'openssl/crypto/x509/x_attrib.c', 'openssl/crypto/x509/x_crl.c', 'openssl/crypto/x509/x_exten.c', + 'openssl/crypto/x509/x_ietfatt.c', 'openssl/crypto/x509/x_name.c', 'openssl/crypto/x509/x_pubkey.c', 'openssl/crypto/x509/x_req.c', @@ -790,6 +906,9 @@ 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c', 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', @@ -814,7 +933,13 @@ 'openssl/providers/implementations/ciphers/cipher_cts.c', 'openssl/providers/implementations/ciphers/cipher_null.c', 'openssl/providers/implementations/ciphers/cipher_sm4.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm_hw.c', 'openssl/providers/implementations/ciphers/cipher_sm4_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts_hw.c', 'openssl/providers/implementations/ciphers/cipher_tdes.c', 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', 'openssl/providers/implementations/ciphers/cipher_tdes_default.c', @@ -843,11 +968,16 @@ 'openssl/providers/implementations/encode_decode/encode_key2ms.c', 'openssl/providers/implementations/encode_decode/encode_key2text.c', 'openssl/providers/implementations/encode_decode/endecoder_common.c', + 'openssl/providers/implementations/encode_decode/ml_common_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_dsa_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_kem_codecs.c', 'openssl/providers/implementations/exchange/dh_exch.c', 'openssl/providers/implementations/exchange/ecdh_exch.c', 'openssl/providers/implementations/exchange/ecx_exch.c', 'openssl/providers/implementations/exchange/kdf_exch.c', + 'openssl/providers/implementations/kdfs/argon2.c', 'openssl/providers/implementations/kdfs/hkdf.c', + 'openssl/providers/implementations/kdfs/hmacdrbg_kdf.c', 'openssl/providers/implementations/kdfs/kbkdf.c', 'openssl/providers/implementations/kdfs/krb5kdf.c', 'openssl/providers/implementations/kdfs/pbkdf2.c', @@ -858,6 +988,11 @@ 'openssl/providers/implementations/kdfs/sskdf.c', 'openssl/providers/implementations/kdfs/tls1_prf.c', 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ec_kem.c', + 'openssl/providers/implementations/kem/ecx_kem.c', + 'openssl/providers/implementations/kem/kem_util.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', 'openssl/providers/implementations/kem/rsa_kem.c', 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', @@ -865,7 +1000,11 @@ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', 'openssl/providers/implementations/macs/blake2b_mac.c', 'openssl/providers/implementations/macs/blake2s_mac.c', 'openssl/providers/implementations/macs/cmac_prov.c', @@ -874,12 +1013,12 @@ 'openssl/providers/implementations/macs/kmac_prov.c', 'openssl/providers/implementations/macs/poly1305_prov.c', 'openssl/providers/implementations/macs/siphash_prov.c', - 'openssl/providers/implementations/rands/crngt.c', 'openssl/providers/implementations/rands/drbg.c', 'openssl/providers/implementations/rands/drbg_ctr.c', 'openssl/providers/implementations/rands/drbg_hash.c', 'openssl/providers/implementations/rands/drbg_hmac.c', 'openssl/providers/implementations/rands/seed_src.c', + 'openssl/providers/implementations/rands/seed_src_jitter.c', 'openssl/providers/implementations/rands/test_rng.c', 'openssl/providers/implementations/rands/seeding/rand_cpu_x86.c', 'openssl/providers/implementations/rands/seeding/rand_tsc.c', @@ -889,17 +1028,23 @@ 'openssl/providers/implementations/signature/ecdsa_sig.c', 'openssl/providers/implementations/signature/eddsa_sig.c', 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', 'openssl/providers/implementations/signature/rsa_sig.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', 'openssl/providers/implementations/signature/sm2_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', 'openssl/providers/implementations/storemgmt/file_store.c', 'openssl/providers/implementations/storemgmt/file_store_any2obj.c', - 'openssl/ssl/s3_cbc.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', 'openssl/providers/common/der/der_dsa_key.c', 'openssl/providers/common/der/der_dsa_sig.c', 'openssl/providers/common/der/der_ec_key.c', 'openssl/providers/common/der/der_ec_sig.c', 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', 'openssl/providers/common/provider_ctx.c', 'openssl/providers/common/provider_err.c', 'openssl/providers/implementations/ciphers/ciphercommon.c', @@ -910,7 +1055,7 @@ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', 'openssl/providers/implementations/digests/digestcommon.c', - 'openssl/ssl/record/tls_pad.c', + 'openssl/ssl/record/methods/tls_pad.c', 'openssl/providers/implementations/ciphers/cipher_blowfish.c', 'openssl/providers/implementations/ciphers/cipher_blowfish_hw.c', 'openssl/providers/implementations/ciphers/cipher_cast5.c', @@ -935,6 +1080,7 @@ 'openssl/providers/implementations/digests/ripemd_prov.c', 'openssl/providers/implementations/digests/wp_prov.c', 'openssl/providers/implementations/kdfs/pbkdf1.c', + 'openssl/providers/implementations/kdfs/pvkkdf.c', 'openssl/providers/prov_running.c', 'openssl/providers/legacyprov.c', ], @@ -952,6 +1098,7 @@ './config/archs/darwin-i386-cc/asm_avx2/crypto/des/crypt586.S', './config/archs/darwin-i386-cc/asm_avx2/crypto/des/des-586.S', './config/archs/darwin-i386-cc/asm_avx2/crypto/ec/ecp_nistz256-x86.S', + './config/archs/darwin-i386-cc/asm_avx2/crypto/params_idx.c', './config/archs/darwin-i386-cc/asm_avx2/crypto/x86cpuid.S', './config/archs/darwin-i386-cc/asm_avx2/crypto/md5/md5-586.S', './config/archs/darwin-i386-cc/asm_avx2/crypto/modes/ghash-x86.S', @@ -968,7 +1115,9 @@ './config/archs/darwin-i386-cc/asm_avx2/providers/common/der/der_dsa_gen.c', './config/archs/darwin-i386-cc/asm_avx2/providers/common/der/der_ec_gen.c', './config/archs/darwin-i386-cc/asm_avx2/providers/common/der/der_ecx_gen.c', + './config/archs/darwin-i386-cc/asm_avx2/providers/common/der/der_ml_dsa_gen.c', './config/archs/darwin-i386-cc/asm_avx2/providers/common/der/der_rsa_gen.c', + './config/archs/darwin-i386-cc/asm_avx2/providers/common/der/der_slh_dsa_gen.c', './config/archs/darwin-i386-cc/asm_avx2/providers/common/der/der_wrap_gen.c', ], 'openssl_defines_darwin-i386-cc': [ diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/providers/common/der/der_ml_dsa_gen.c b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/providers/common/der/der_ml_dsa_gen.c new file mode 100644 index 00000000000000..4a8a113a268578 --- /dev/null +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/providers/common/der/der_ml_dsa_gen.c @@ -0,0 +1,37 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_ml_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44] = { + DER_OID_V_id_ml_dsa_44 +}; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65] = { + DER_OID_V_id_ml_dsa_65 +}; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87] = { + DER_OID_V_id_ml_dsa_87 +}; + diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/providers/common/der/der_slh_dsa_gen.c b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/providers/common/der/der_slh_dsa_gen.c new file mode 100644 index 00000000000000..1419a9515097dd --- /dev/null +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/providers/common/der/der_slh_dsa_gen.c @@ -0,0 +1,100 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_slh_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s] = { + DER_OID_V_id_slh_dsa_sha2_128s +}; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f] = { + DER_OID_V_id_slh_dsa_sha2_128f +}; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s] = { + DER_OID_V_id_slh_dsa_sha2_192s +}; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f] = { + DER_OID_V_id_slh_dsa_sha2_192f +}; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s] = { + DER_OID_V_id_slh_dsa_sha2_256s +}; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f] = { + DER_OID_V_id_slh_dsa_sha2_256f +}; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s] = { + DER_OID_V_id_slh_dsa_shake_128s +}; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f] = { + DER_OID_V_id_slh_dsa_shake_128f +}; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s] = { + DER_OID_V_id_slh_dsa_shake_192s +}; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f] = { + DER_OID_V_id_slh_dsa_shake_192f +}; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s] = { + DER_OID_V_id_slh_dsa_shake_256s +}; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f] = { + DER_OID_V_id_slh_dsa_shake_256f +}; + diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/providers/common/include/prov/der_ml_dsa.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/providers/common/include/prov/der_ml_dsa.h new file mode 100644 index 00000000000000..c55f780ab4527c --- /dev/null +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/providers/common/include/prov/der_ml_dsa.h @@ -0,0 +1,40 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_ml_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/ml_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +#define DER_OID_V_id_ml_dsa_44 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x11 +#define DER_OID_SZ_id_ml_dsa_44 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44]; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +#define DER_OID_V_id_ml_dsa_65 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x12 +#define DER_OID_SZ_id_ml_dsa_65 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65]; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +#define DER_OID_V_id_ml_dsa_87 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x13 +#define DER_OID_SZ_id_ml_dsa_87 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87]; + + +int ossl_DER_w_algorithmIdentifier_ML_DSA(WPACKET *pkt, int tag, ML_DSA_KEY *key); diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/providers/common/include/prov/der_slh_dsa.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/providers/common/include/prov/der_slh_dsa.h new file mode 100644 index 00000000000000..760f8e7699be72 --- /dev/null +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/providers/common/include/prov/der_slh_dsa.h @@ -0,0 +1,103 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_slh_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/slh_dsa.h" + +/* Well known OIDs precompiled */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x14 +#define DER_OID_SZ_id_slh_dsa_sha2_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s]; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x15 +#define DER_OID_SZ_id_slh_dsa_sha2_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f]; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x16 +#define DER_OID_SZ_id_slh_dsa_sha2_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s]; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x17 +#define DER_OID_SZ_id_slh_dsa_sha2_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f]; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x18 +#define DER_OID_SZ_id_slh_dsa_sha2_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s]; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x19 +#define DER_OID_SZ_id_slh_dsa_sha2_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f]; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +#define DER_OID_V_id_slh_dsa_shake_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1A +#define DER_OID_SZ_id_slh_dsa_shake_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s]; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +#define DER_OID_V_id_slh_dsa_shake_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1B +#define DER_OID_SZ_id_slh_dsa_shake_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f]; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +#define DER_OID_V_id_slh_dsa_shake_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1C +#define DER_OID_SZ_id_slh_dsa_shake_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s]; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +#define DER_OID_V_id_slh_dsa_shake_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1D +#define DER_OID_SZ_id_slh_dsa_shake_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f]; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +#define DER_OID_V_id_slh_dsa_shake_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1E +#define DER_OID_SZ_id_slh_dsa_shake_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s]; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +#define DER_OID_V_id_slh_dsa_shake_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1F +#define DER_OID_SZ_id_slh_dsa_shake_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f]; + + +int ossl_DER_w_algorithmIdentifier_SLH_DSA(WPACKET *pkt, int tag, SLH_DSA_KEY *key); diff --git a/deps/openssl/config/archs/darwin-i386-cc/no-asm/apps/progs.c b/deps/openssl/config/archs/darwin-i386-cc/no-asm/apps/progs.c index 43cef00799b86e..acc204a3e6e781 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/no-asm/apps/progs.c +++ b/deps/openssl/config/archs/darwin-i386-cc/no-asm/apps/progs.c @@ -89,6 +89,7 @@ FUNCTION functions[] = { {FT_general, "s_time", s_time_main, s_time_options, NULL, NULL}, #endif {FT_general, "sess_id", sess_id_main, sess_id_options, NULL, NULL}, + {FT_general, "skeyutl", skeyutl_main, skeyutl_options, NULL, NULL}, {FT_general, "smime", smime_main, smime_options, NULL, NULL}, {FT_general, "speed", speed_main, speed_options, NULL, NULL}, {FT_general, "spkac", spkac_main, spkac_options, NULL, NULL}, @@ -225,9 +226,15 @@ FUNCTION functions[] = { {{"code":"deadline_exceeded","msg":"operation timed out"}